From c2f4862866a7a500951a97b7b874721fa5e28f20 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 31 May 2015 10:45:17 +0200 Subject: [PATCH 001/768] When dumping an exception stack on windows, better check for redirection of stderr --- src/rt/dmain2.d | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 2dc09c9828..baf1c66a56 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -517,7 +517,10 @@ extern (C) void _d_print_throwable(Throwable t) // Show a message box instead. version (Windows) { - if (!GetConsoleWindow()) + // ensure the exception is shown at the beginning of the line, while also + // checking whether stderr is a valid file + int written = fprintf(stderr, "\n"); + if (written <= 0) { static struct WSink { From fda62efe0f526e8272dfcc47a4cc7c68f5419569 Mon Sep 17 00:00:00 2001 From: Dan Olson Date: Tue, 2 Jun 2015 17:30:16 -0700 Subject: [PATCH 002/768] Ignore real pad in core.internal.convert unittest Change unittest to ignore any pad bytes in a floating point type because those bits are undefined. Fixes test part of ldc issue #788. --- src/core/internal/convert.d | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/internal/convert.d b/src/core/internal/convert.d index 66d3016dd8..eeb5580c9b 100644 --- a/src/core/internal/convert.d +++ b/src/core/internal/convert.d @@ -325,7 +325,10 @@ version(unittest) enum ctbytes = toUbyte2(ctval); - assert(rtbytes[] == ctbytes); + // don't test pad bytes because can be anything + enum testsize = + (FloatTraits!TYPE.EXPONENT + FloatTraits!TYPE.MANTISSA + 1)/8; + assert(rtbytes[0..testsize] == ctbytes[0..testsize]); } private void testConvert() From a065244aed56693b5297241b87232f11571554a3 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 19 Jun 2015 16:07:49 +0200 Subject: [PATCH 003/768] workaround Issue 2396 - O(N^2) backend optimizations --- src/rt/util/typeinfo.d | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/rt/util/typeinfo.d b/src/rt/util/typeinfo.d index 3b253fbed6..8c41e0a13b 100644 --- a/src/rt/util/typeinfo.d +++ b/src/rt/util/typeinfo.d @@ -138,7 +138,7 @@ unittest // real types foreach (F; TypeTuple!(float, double, real)) - { + (){ // workaround #2396 alias S = SX!F; F f1 = +0.0, f2 = -0.0; @@ -182,11 +182,11 @@ unittest assert(sa1 !is sa2); ti = typeid(S[3]); assert(ti.getHash(&sa1) == ti.getHash(&sa2)); - } + }(); // imaginary types foreach (F; TypeTuple!(ifloat, idouble, ireal)) - { + (){ // workaround #2396 alias S = SX!F; F f1 = +0.0i, f2 = -0.0i; @@ -230,11 +230,11 @@ unittest assert(sa1 !is sa2); ti = typeid(S[3]); assert(ti.getHash(&sa1) == ti.getHash(&sa2)); - } + }(); // complex types foreach (F; TypeTuple!(cfloat, cdouble, creal)) - { + (){ // workaround #2396 alias S = SX!F; F[4] f = [+0.0 + 0.0i, +0.0 - 0.0i, @@ -285,5 +285,5 @@ unittest ti = typeid(S[3]); assert(ti.getHash(&sa1) == ti.getHash(&sa2)); } - } + }(); } From 94b996f59900742abb976628cb0b75e7908a3add Mon Sep 17 00:00:00 2001 From: Robert burner Schadek Date: Mon, 29 Jun 2015 22:52:00 +0200 Subject: [PATCH 004/768] checkedint functions force inline * thanks to dip56 we have forced inlining * for https://github.com/D-Programming-Language/phobos/pull/3389 dmd,ldc,gdc * failed to inline functions of checkedint this should fix it --- src/core/checkedint.d | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/core/checkedint.d b/src/core/checkedint.d index dfa27b7263..a797c89c76 100644 --- a/src/core/checkedint.d +++ b/src/core/checkedint.d @@ -46,6 +46,7 @@ pure: * the sum */ +pragma(inline, true) int adds(int x, int y, ref bool overflow) { long r = cast(long)x + cast(long)y; @@ -73,6 +74,7 @@ unittest } /// ditto +pragma(inline, true) long adds(long x, long y, ref bool overflow) { long r = cast(ulong)x + cast(ulong)y; @@ -114,6 +116,7 @@ unittest * the sum */ +pragma(inline, true) uint addu(uint x, uint y, ref bool overflow) { uint r = x + y; @@ -141,6 +144,7 @@ unittest } /// ditto +pragma(inline, true) ulong addu(ulong x, ulong y, ref bool overflow) { ulong r = x + y; @@ -181,6 +185,7 @@ unittest * the sum */ +pragma(inline, true) int subs(int x, int y, ref bool overflow) { long r = cast(long)x - cast(long)y; @@ -208,6 +213,7 @@ unittest } /// ditto +pragma(inline, true) long subs(long x, long y, ref bool overflow) { long r = cast(ulong)x - cast(ulong)y; @@ -249,6 +255,7 @@ unittest * the sum */ +pragma(inline, true) uint subu(uint x, uint y, ref bool overflow) { if (x < y) @@ -276,6 +283,7 @@ unittest /// ditto +pragma(inline, true) ulong subu(ulong x, ulong y, ref bool overflow) { if (x < y) @@ -312,6 +320,7 @@ unittest * the negation of x */ +pragma(inline, true) int negs(int x, ref bool overflow) { if (x == int.min) @@ -335,6 +344,7 @@ unittest } /// ditto +pragma(inline, true) long negs(long x, ref bool overflow) { if (x == long.min) @@ -371,6 +381,7 @@ unittest * the sum */ +pragma(inline, true) int muls(int x, int y, ref bool overflow) { long r = cast(long)x * cast(long)y; @@ -400,6 +411,7 @@ unittest } /// ditto +pragma(inline, true) long muls(long x, long y, ref bool overflow) { long r = cast(ulong)x * cast(ulong)y; @@ -442,6 +454,7 @@ unittest * the sum */ +pragma(inline, true) uint mulu(uint x, uint y, ref bool overflow) { ulong r = ulong(x) * ulong(y); @@ -471,6 +484,7 @@ unittest } /// ditto +pragma(inline, true) ulong mulu(ulong x, ulong y, ref bool overflow) { ulong r = x * y; From ab315c1c1c1a113455c15d91ce609c54f20c818d Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 29 Jun 2015 22:36:06 -0700 Subject: [PATCH 005/768] simplify rt.util.string --- mak/COPY | 1 + mak/MANIFEST | 2 +- mak/SRCS | 2 +- src/core/internal/string.d | 57 +++++++++++++++++++++++++++++ src/object.d | 16 ++++----- src/rt/arrayassign.d | 1 - src/rt/arraycat.d | 1 - src/rt/dmain2.d | 1 - src/rt/trace.d | 2 +- src/rt/typeinfo/ti_Ag.d | 2 +- src/rt/util/array.d | 14 ++++---- src/rt/util/string.d | 74 -------------------------------------- win32.mak | 3 ++ win64.mak | 3 ++ 14 files changed, 83 insertions(+), 96 deletions(-) create mode 100644 src/core/internal/string.d delete mode 100644 src/rt/util/string.d diff --git a/mak/COPY b/mak/COPY index c9d1afdd4e..3b5267b423 100644 --- a/mak/COPY +++ b/mak/COPY @@ -16,6 +16,7 @@ COPY=\ \ $(IMPDIR)\core\internal\convert.d \ $(IMPDIR)\core\internal\hash.d \ + $(IMPDIR)\core\internal\string.d \ $(IMPDIR)\core\internal\traits.d \ \ $(IMPDIR)\core\stdc\complex.d \ diff --git a/mak/MANIFEST b/mak/MANIFEST index e303f12c3a..bf1d5928a0 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -34,6 +34,7 @@ MANIFEST=\ \ src\core\internal\convert.d \ src\core\internal\hash.d \ + src\core\internal\string.d \ src\core\internal\traits.d \ \ src\core\stdc\complex.d \ @@ -245,7 +246,6 @@ MANIFEST=\ src\rt\util\array.d \ src\rt\util\hash.d \ src\rt\util\random.d \ - src\rt\util\string.d \ src\rt\util\typeinfo.d \ src\rt\util\utf.d \ src\rt\util\container\array.d \ diff --git a/mak/SRCS b/mak/SRCS index 7a2c8e82c1..3d8b72b547 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -17,6 +17,7 @@ SRCS=\ \ src\core\internal\convert.d \ src\core\internal\hash.d \ + src\core\internal\string.d \ src\core\internal\traits.d \ \ src\core\stdc\config.d \ @@ -130,7 +131,6 @@ SRCS=\ src\rt\util\array.d \ src\rt\util\hash.d \ src\rt\util\random.d \ - src\rt\util\string.d \ src\rt\util\typeinfo.d \ src\rt\util\utf.d \ src\rt\util\container\array.d \ diff --git a/src/core/internal/string.d b/src/core/internal/string.d new file mode 100644 index 0000000000..2b582d82f5 --- /dev/null +++ b/src/core/internal/string.d @@ -0,0 +1,57 @@ +/** + * String manipulation and comparison utilities. + * + * Copyright: Copyright Sean Kelly 2005 - 2009. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Sean Kelly, Walter Bright + * Source: $(DRUNTIMESRC src/rt/util/_string.d) + */ + +module core.internal.string; + +pure: +nothrow: +@nogc: + +alias UnsignedStringBuf = char[20]; + +char[] unsignedToTempString(ulong value, char[] buf, uint radix) @safe +{ + size_t i = buf.length; + do + { + ubyte x = cast(ubyte)(value % radix); + value = value / radix; + buf[--i] = cast(char)((x < 10) ? x + '0' : x - 10 + 'a'); + } while (value); + return buf[i .. $]; +} + +unittest +{ + UnsignedStringBuf buf; + assert(0.unsignedToTempString(buf, 10) == "0"); + assert(1.unsignedToTempString(buf, 10) == "1"); + assert(12.unsignedToTempString(buf, 10) == "12"); + assert(0x12ABCF .unsignedToTempString(buf, 16) == "12abcf"); + assert(long.sizeof.unsignedToTempString(buf, 10) == "8"); + assert(uint.max.unsignedToTempString(buf, 10) == "4294967295"); + assert(ulong.max.unsignedToTempString(buf, 10) == "18446744073709551615"); +} + + +int dstrcmp( in char[] s1, in char[] s2 ) @trusted +{ + import core.stdc.string : memcmp; + + int ret = 0; + auto len = s1.length; + if( s2.length < len ) + len = s2.length; + if( 0 != (ret = memcmp( s1.ptr, s2.ptr, len )) ) + return ret; + return s1.length > s2.length ? 1 : + s1.length == s2.length ? 0 : -1; +} + + diff --git a/src/object.d b/src/object.d index 0a141a490d..d3be07c1b1 100644 --- a/src/object.d +++ b/src/object.d @@ -232,8 +232,8 @@ class TypeInfo override int opCmp(Object o) { import core.internal.traits : externDFunc; - alias dstrcmp = externDFunc!("rt.util.string.dstrcmp", - int function(in char[] s1, in char[] s2) @trusted pure nothrow); + alias dstrcmp = externDFunc!("core.internal.string.dstrcmp", + int function(in char[] s1, in char[] s2) @trusted pure nothrow @nogc); if (this is o) return 0; @@ -500,11 +500,11 @@ class TypeInfo_StaticArray : TypeInfo override string toString() const { import core.internal.traits : externDFunc; - alias sizeToTempString = externDFunc!("rt.util.string.sizeToTempString", - char[] function(in size_t, char[]) @trusted pure nothrow); + alias sizeToTempString = externDFunc!("core.internal.string.unsignedToTempString", + char[] function(ulong, char[], uint) @safe pure nothrow @nogc); char[20] tmpBuff = void; - return value.toString() ~ "[" ~ sizeToTempString(len, tmpBuff) ~ "]"; + return value.toString() ~ "[" ~ sizeToTempString(len, tmpBuff, 10) ~ "]"; } override bool opEquals(Object o) @@ -1562,14 +1562,14 @@ class Throwable : Object void toString(scope void delegate(in char[]) sink) const { import core.internal.traits : externDFunc; - alias sizeToTempString = externDFunc!("rt.util.string.sizeToTempString", - char[] function(in size_t, char[]) @trusted pure nothrow); + alias sizeToTempString = externDFunc!("core.internal.string.unsignedToTempString", + char[] function(ulong, char[], uint) @safe pure nothrow @nogc); char[20] tmpBuff = void; sink(typeid(this).name); sink("@"); sink(file); - sink("("); sink(sizeToTempString(line, tmpBuff)); sink(")"); + sink("("); sink(sizeToTempString(line, tmpBuff, 10)); sink(")"); if (msg.length) { diff --git a/src/rt/arrayassign.d b/src/rt/arrayassign.d index 7ea72f141f..68305ef5f3 100644 --- a/src/rt/arrayassign.d +++ b/src/rt/arrayassign.d @@ -16,7 +16,6 @@ module rt.arrayassign; private { import rt.util.array; - import rt.util.string; import core.stdc.string; import core.stdc.stdlib; debug(PRINTF) import core.stdc.stdio; diff --git a/src/rt/arraycat.d b/src/rt/arraycat.d index 2faad37761..c5542f2232 100644 --- a/src/rt/arraycat.d +++ b/src/rt/arraycat.d @@ -17,7 +17,6 @@ private { import core.stdc.string; import rt.util.array; - import rt.util.string; debug(PRINTF) import core.stdc.stdio; } diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 2dc09c9828..1dda7dac11 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -15,7 +15,6 @@ private { import rt.memory; import rt.sections; - import rt.util.string; import core.atomic; import core.stdc.stddef; import core.stdc.stdlib; diff --git a/src/rt/trace.d b/src/rt/trace.d index 9f976cdf2b..6c1aeeb4a2 100644 --- a/src/rt/trace.d +++ b/src/rt/trace.d @@ -18,7 +18,7 @@ private import core.stdc.stdio; import core.stdc.stdlib; import core.stdc.string; - import rt.util.string; + import core.internal.string; version (CRuntime_Microsoft) alias core.stdc.stdlib._strtoui64 strtoull; diff --git a/src/rt/typeinfo/ti_Ag.d b/src/rt/typeinfo/ti_Ag.d index 313838fcef..851c04356e 100644 --- a/src/rt/typeinfo/ti_Ag.d +++ b/src/rt/typeinfo/ti_Ag.d @@ -15,7 +15,7 @@ module rt.typeinfo.ti_Ag; private import core.stdc.string; private import rt.util.hash; -private import rt.util.string; +private import core.internal.string; // byte[] diff --git a/src/rt/util/array.d b/src/rt/util/array.d index 25449b3549..f299052444 100644 --- a/src/rt/util/array.d +++ b/src/rt/util/array.d @@ -9,7 +9,7 @@ Source: $(DRUNTIMESRC src/rt/util/_array.d) module rt.util.array; -import rt.util.string; +import core.internal.string; @safe /* pure dmd @@@BUG11461@@@ */ nothrow: @@ -36,13 +36,13 @@ private void _enforceSameLength(in char[] action, if(length1 == length2) return; - SizeStringBuff tmpBuff = void; + UnsignedStringBuf tmpBuff = void; string msg = "Array lengths don't match for "; msg ~= action; msg ~= ": "; - msg ~= length1.sizeToTempString(tmpBuff); + msg ~= length1.unsignedToTempString(tmpBuff, 10); msg ~= " != "; - msg ~= length2.sizeToTempString(tmpBuff); + msg ~= length2.unsignedToTempString(tmpBuff, 10); throw new Error(msg); } @@ -54,12 +54,12 @@ private void _enforceNoOverlap(in char[] action, return; const overlappedBytes = bytes - d; - SizeStringBuff tmpBuff = void; + UnsignedStringBuf tmpBuff = void; string msg = "Overlapping arrays in "; msg ~= action; msg ~= ": "; - msg ~= overlappedBytes.sizeToTempString(tmpBuff); + msg ~= overlappedBytes.unsignedToTempString(tmpBuff, 10); msg ~= " byte(s) overlap of "; - msg ~= bytes.sizeToTempString(tmpBuff); + msg ~= bytes.unsignedToTempString(tmpBuff, 10); throw new Error(msg); } diff --git a/src/rt/util/string.d b/src/rt/util/string.d deleted file mode 100644 index 044d79229f..0000000000 --- a/src/rt/util/string.d +++ /dev/null @@ -1,74 +0,0 @@ -/** - * String manipulation and comparison utilities. - * - * Copyright: Copyright Sean Kelly 2005 - 2009. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). - * Authors: Sean Kelly - */ - -/* Copyright Sean Kelly 2005 - 2009. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -module rt.util.string; - -private import core.stdc.string; - -@trusted: -pure: -nothrow: - -alias UintStringBuff = char[10]; -alias UlongStringBuff = char[20]; - -version(D_LP64) - alias SizeStringBuff = UlongStringBuff; -else - alias SizeStringBuff = UintStringBuff; - -char[] uintToTempString(in uint val, char[] buff) -{ return val._unsignedToTempString(buff); } - -char[] ulongToTempString(in ulong val, char[] buff) -{ return val._unsignedToTempString(buff); } - -char[] sizeToTempString(in size_t val, char[] buff) -{ return val._unsignedToTempString(buff); } - -private char[] _unsignedToTempString(T)(in T val, char[] buff) -if(is(T == uint) || is(T == ulong)) -{ - assert(buff.length >= (is(T == uint) ? 10 : 20), "Buffer is too small for `" ~ T.stringof ~ "`."); - - char* p = buff.ptr + buff.length; - T k = val; - do - *--p = cast(char) (k % 10 + '0'); - while(k /= 10); - - return buff[p - buff.ptr .. $]; -} - -unittest -{ - UlongStringBuff buff; - assert(1.uintToTempString(buff) == "1"); - assert(12.ulongToTempString(buff) == "12"); - assert(long.sizeof.sizeToTempString(buff) == "8"); - assert(uint.max.uintToTempString(buff) == "4294967295"); - assert(ulong.max.ulongToTempString(buff) == "18446744073709551615"); -} - - -int dstrcmp( in char[] s1, in char[] s2 ) -{ - int ret = 0; - auto len = s1.length; - if( s2.length < len ) - len = s2.length; - if( 0 != (ret = memcmp( s1.ptr, s2.ptr, len )) ) - return ret; - return s1.length > s2.length ? 1 : - s1.length == s2.length ? 0 : -1; -} diff --git a/win32.mak b/win32.mak index 1cf453ff62..b19963395a 100644 --- a/win32.mak +++ b/win32.mak @@ -256,6 +256,9 @@ $(IMPDIR)\core\internal\convert.d : src\core\internal\convert.d $(IMPDIR)\core\internal\hash.d : src\core\internal\hash.d copy $** $@ +$(IMPDIR)\core\internal\string.d : src\core\internal\string.d + copy $** $@ + $(IMPDIR)\core\internal\traits.d : src\core\internal\traits.d copy $** $@ diff --git a/win64.mak b/win64.mak index b8f2cb8201..e324a16197 100644 --- a/win64.mak +++ b/win64.mak @@ -266,6 +266,9 @@ $(IMPDIR)\core\internal\convert.d : src\core\internal\convert.d $(IMPDIR)\core\internal\hash.d : src\core\internal\hash.d copy $** $@ +$(IMPDIR)\core\internal\string.d : src\core\internal\string.d + copy $** $@ + $(IMPDIR)\core\internal\traits.d : src\core\internal\traits.d copy $** $@ From e9af129c766c7b2d45aa5b0822f0ec5239e62993 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 30 Jun 2015 14:25:34 -0700 Subject: [PATCH 006/768] core.cpuid - make ssse3 immutable --- src/core/cpuid.d | 226 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 160 insertions(+), 66 deletions(-) diff --git a/src/core/cpuid.d b/src/core/cpuid.d index 65361805e9..10eecad71d 100644 --- a/src/core/cpuid.d +++ b/src/core/cpuid.d @@ -54,11 +54,6 @@ * Source: $(DRUNTIMESRC core/_cpuid.d) */ -/* Copyright Don Clugston 2007 - 2009. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module core.cpuid; @trusted: @@ -120,113 +115,101 @@ public: // Note: When we deprecate it, we simply make it private. __gshared CacheInfo[5] datacache; - @property { +@property pure +{ /// The data caches. If there are fewer than 5 physical caches levels, /// the remaining levels are set to size_t.max (== entire memory space) - const(CacheInfo)[5] dataCaches() { return datacache; } + const(CacheInfo)[5] dataCaches() { return _dataCaches; } /// Returns vendor string, for display purposes only. /// Do NOT use this to determine features! /// Note that some CPUs have programmable vendorIDs. - string vendor() {return cast(string)vendorID;} + string vendor() {return _vendor;} /// Returns processor string, for display purposes only - string processor() {return processorName;} + string processor() {return _processor;} /// Does it have an x87 FPU on-chip? - bool x87onChip() {return (features&FPU_BIT)!=0;} + bool x87onChip() {return _x87onChip;} /// Is MMX supported? - bool mmx() {return (features&MMX_BIT)!=0;} + bool mmx() {return _mmx;} /// Is SSE supported? - bool sse() {return (features&SSE_BIT)!=0;} + bool sse() {return _sse;} /// Is SSE2 supported? - bool sse2() {return (features&SSE2_BIT)!=0;} + bool sse2() {return _sse2;} /// Is SSE3 supported? - bool sse3() {return (miscfeatures&SSE3_BIT)!=0;} + bool sse3() {return _sse3;} /// Is SSSE3 supported? - bool ssse3() {return (miscfeatures&SSSE3_BIT)!=0;} + bool ssse3() {return _ssse3;} /// Is SSE4.1 supported? - bool sse41() {return (miscfeatures&SSE41_BIT)!=0;} + bool sse41() {return _sse41;} /// Is SSE4.2 supported? - bool sse42() {return (miscfeatures&SSE42_BIT)!=0;} + bool sse42() {return _sse42;} /// Is SSE4a supported? - bool sse4a() {return (amdmiscfeatures&SSE4A_BIT)!=0;} + bool sse4a() {return _sse4a;} /// Is AES supported - bool aes() {return (miscfeatures&AES_BIT)!=0;} + bool aes() {return _aes;} /// Is pclmulqdq supported - bool hasPclmulqdq() {return (miscfeatures&PCLMULQDQ_BIT)!=0;} + bool hasPclmulqdq() {return _hasPclmulqdq;} /// Is rdrand supported - bool hasRdrand() {return (miscfeatures&RDRAND_BIT)!=0;} + bool hasRdrand() {return _hasRdrand;} /// Is AVX supported - bool avx() - { - enum mask = XF_SSE_BIT|XF_YMM_BIT; - return (xfeatures & mask) == mask && (miscfeatures&AVX_BIT)!=0; - } + bool avx() {return _avx;} /// Is VEX-Encoded AES supported - bool vaes() {return avx && aes;} + bool vaes() {return _vaes;} /// Is vpclmulqdq supported - bool hasVpclmulqdq(){return avx && hasPclmulqdq; } + bool hasVpclmulqdq(){return _hasVpclmulqdq; } /// Is FMA supported - bool fma() {return avx && (miscfeatures&FMA_BIT)!=0;} + bool fma() {return _fma;} /// Is FP16C supported - bool fp16c() {return avx && (miscfeatures&FP16C_BIT)!=0;} + bool fp16c() {return _fp16c;} /// Is AVX2 supported - bool avx2() {return avx && (extfeatures & AVX2_BIT) != 0;} + bool avx2() {return _avx2;} /// Is HLE (hardware lock elision) supported - bool hle() {return (extfeatures & HLE_BIT) != 0;} + bool hle() {return _hle;} /// Is RTM (restricted transactional memory) supported - bool rtm() {return (extfeatures & RTM_BIT) != 0;} + bool rtm() {return _rtm;} /// Is rdseed supported - bool hasRdseed() {return (extfeatures&RDSEED_BIT)!=0;} + bool hasRdseed() {return _hasRdseed;} /// Is SHA supported - bool hasSha() {return (extfeatures&SHA_BIT)!=0;} + bool hasSha() {return _hasSha;} /// Is AMD 3DNOW supported? - bool amd3dnow() {return (amdfeatures&AMD_3DNOW_BIT)!=0;} + bool amd3dnow() {return _amd3dnow;} /// Is AMD 3DNOW Ext supported? - bool amd3dnowExt() {return (amdfeatures&AMD_3DNOW_EXT_BIT)!=0;} + bool amd3dnowExt() {return _amd3dnowExt;} /// Are AMD extensions to MMX supported? - bool amdMmx() {return (amdfeatures&AMD_MMX_BIT)!=0;} + bool amdMmx() {return amdMmx;} /// Is fxsave/fxrstor supported? - bool hasFxsr() {return (features&FXSR_BIT)!=0;} + bool hasFxsr() {return _hasFxsr;} /// Is cmov supported? - bool hasCmov() {return (features&CMOV_BIT)!=0;} + bool hasCmov() {return _hasCmov;} /// Is rdtsc supported? - bool hasRdtsc() {return (features&TIMESTAMP_BIT)!=0;} + bool hasRdtsc() {return _hasRdtsc;} /// Is cmpxchg8b supported? - bool hasCmpxchg8b() {return (features&CMPXCHG8B_BIT)!=0;} + bool hasCmpxchg8b() {return _hasCmpxchg8b;} /// Is cmpxchg8b supported? - bool hasCmpxchg16b() {return (miscfeatures&CMPXCHG16B_BIT)!=0;} + bool hasCmpxchg16b() {return _hasCmpxchg16b;} /// Is SYSENTER/SYSEXIT supported? - bool hasSysEnterSysExit() { - // The SYSENTER/SYSEXIT features were buggy on Pentium Pro and early PentiumII. - // (REF: www.geoffchappell.com). - if (probablyIntel && (family < 6 || (family==6 && (model< 3 || (model==3 && stepping<3))))) - return false; - return (features & SYSENTERSYSEXIT_BIT)!=0; - } - - + bool hasSysEnterSysExit() {return _hasSysEnterSysExit;} /// Is 3DNow prefetch supported? - bool has3dnowPrefetch() - {return (amdmiscfeatures&AMD_3DNOW_PREFETCH_BIT)!=0;} + bool has3dnowPrefetch() {return _has3dnowPrefetch;} /// Are LAHF and SAHF supported in 64-bit mode? - bool hasLahfSahf() {return (amdmiscfeatures&LAHFSAHF_BIT)!=0;} + bool hasLahfSahf() {return _hasLahfSahf;} /// Is POPCNT supported? - bool hasPopcnt() {return (miscfeatures&POPCNT_BIT)!=0;} + bool hasPopcnt() {return _hasPopcnt;} /// Is LZCNT supported? - bool hasLzcnt() {return (amdmiscfeatures&LZCNT_BIT)!=0;} + bool hasLzcnt() {return _hasLzcnt;} /// Is this an Intel64 or AMD 64? - bool isX86_64() {return (amdfeatures&AMD64_BIT)!=0;} + bool isX86_64() {return _isX86_64;} /// Is this an IA64 (Itanium) processor? - bool isItanium() { return (features&IA64_BIT)!=0; } + bool isItanium() { return _isItanium; } /// Is hyperthreading supported? - bool hyperThreading() { return maxThreads>maxCores; } + bool hyperThreading() { return _hyperThreading; } /// Returns number of threads per CPU - uint threadsPerCPU() {return maxThreads;} + uint threadsPerCPU() {return _threadsPerCPU;} /// Returns number of cores in CPU - uint coresPerCPU() {return maxCores;} + uint coresPerCPU() {return _coresPerCPU;} /// Optimisation hints for assembly code. /// @@ -254,12 +237,66 @@ public: /// instruction set improvements occur within each dynasty. /// Does this CPU perform better on AMD K7 code than PentiumPro..Core2 code? - bool preferAthlon() { return probablyAMD && family >=6; } + bool preferAthlon() { return _preferAthlon; } /// Does this CPU perform better on Pentium4 code than PentiumPro..Core2 code? - bool preferPentium4() { return probablyIntel && family == 0xF; } + bool preferPentium4() { return _preferPentium4; } /// Does this CPU perform better on Pentium I code than Pentium Pro code? - bool preferPentium1() { return family < 6 || (family==6 && model < 0xF && !probablyIntel); } - } + bool preferPentium1() { return _preferPentium1; } +} + +private immutable +{ + /* These exist as immutables so that the query property functions can + * be backwards compatible with code that called them with (). + * Also, immutables can only be set by the static this(). + */ + const(CacheInfo)[5] _dataCaches; + string _vendor; + string _processor; + bool _x87onChip; + bool _mmx; + bool _sse; + bool _sse2; + bool _sse3; + bool _ssse3; + bool _sse41; + bool _sse42; + bool _sse4a; + bool _aes; + bool _hasPclmulqdq; + bool _hasRdrand; + bool _avx; + bool _vaes; + bool _hasVpclmulqdq; + bool _fma; + bool _fp16c; + bool _avx2; + bool _hle; + bool _rtm; + bool _hasRdseed; + bool _hasSha; + bool _amd3dnow; + bool _amd3dnowExt; + bool _amdMmx; + bool _hasFxsr; + bool _hasCmov; + bool _hasRdtsc; + bool _hasCmpxchg8b; + bool _hasCmpxchg16b; + bool _hasSysEnterSysExit; + bool _has3dnowPrefetch; + bool _hasLahfSahf; + bool _hasPopcnt; + bool _hasLzcnt; + bool _isX86_64; + bool _isItanium; + bool _hyperThreading; + uint _threadsPerCPU; + uint _coresPerCPU; + bool _preferAthlon; + bool _preferPentium4; + bool _preferPentium1; +} __gshared: // All these values are set only once, and never subsequently modified. @@ -939,4 +976,61 @@ shared static this() else ++numCacheLevels; } + + // Set the immortals + + _dataCaches = datacache; + _vendor = cast(string)vendorID; + _processor = processorName; + _x87onChip = (features&FPU_BIT)!=0; + _mmx = (features&MMX_BIT)!=0; + _sse = (features&SSE_BIT)!=0; + _sse2 = (features&SSE2_BIT)!=0; + _sse3 = (miscfeatures&SSE3_BIT)!=0; + _ssse3 = (miscfeatures&SSSE3_BIT)!=0; + _sse41 = (miscfeatures&SSE41_BIT)!=0; + _sse42 = (miscfeatures&SSE42_BIT)!=0; + _sse4a = (amdmiscfeatures&SSE4A_BIT)!=0; + _aes = (miscfeatures&AES_BIT)!=0; + _hasPclmulqdq = (miscfeatures&PCLMULQDQ_BIT)!=0; + _hasRdrand = (miscfeatures&RDRAND_BIT)!=0; + + enum avx_mask = XF_SSE_BIT|XF_YMM_BIT; + _avx = (xfeatures & avx_mask) == avx_mask && (miscfeatures&AVX_BIT)!=0; + + _vaes = avx && aes; + _hasVpclmulqdq = avx && hasPclmulqdq; + _fma = avx && (miscfeatures&FMA_BIT)!=0; + _fp16c = avx && (miscfeatures&FP16C_BIT)!=0; + _avx2 = avx && (extfeatures & AVX2_BIT) != 0; + _hle = (extfeatures & HLE_BIT) != 0; + _rtm = (extfeatures & RTM_BIT) != 0; + _hasRdseed = (extfeatures&RDSEED_BIT)!=0; + _hasSha = (extfeatures&SHA_BIT)!=0; + _amd3dnow = (amdfeatures&AMD_3DNOW_BIT)!=0; + _amd3dnowExt = (amdfeatures&AMD_3DNOW_EXT_BIT)!=0; + _amdMmx = (amdfeatures&AMD_MMX_BIT)!=0; + _hasFxsr = (features&FXSR_BIT)!=0; + _hasCmov = (features&CMOV_BIT)!=0; + _hasRdtsc = (features&TIMESTAMP_BIT)!=0; + _hasCmpxchg8b = (features&CMPXCHG8B_BIT)!=0; + _hasCmpxchg16b = (miscfeatures&CMPXCHG16B_BIT)!=0; + _hasSysEnterSysExit = + // The SYSENTER/SYSEXIT features were buggy on Pentium Pro and early PentiumII. + // (REF: www.geoffchappell.com). + (probablyIntel && (family < 6 || (family==6 && (model< 3 || (model==3 && stepping<3))))) + ? false + : (features & SYSENTERSYSEXIT_BIT)!=0; + _has3dnowPrefetch = (amdmiscfeatures&AMD_3DNOW_PREFETCH_BIT)!=0; + _hasLahfSahf = (amdmiscfeatures&LAHFSAHF_BIT)!=0; + _hasPopcnt = (miscfeatures&POPCNT_BIT)!=0; + _hasLzcnt = (amdmiscfeatures&LZCNT_BIT)!=0; + _isX86_64 = (amdfeatures&AMD64_BIT)!=0; + _isItanium = (features&IA64_BIT)!=0; + _hyperThreading = maxThreads>maxCores; + _threadsPerCPU = maxThreads; + _coresPerCPU = maxCores; + _preferAthlon = probablyAMD && family >=6; + _preferPentium4 = probablyIntel && family == 0xF; + _preferPentium1 = family < 6 || (family==6 && model < 0xF && !probablyIntel); } From 4de316ff4d94811b81c042e1ee4254a9bd56d5b9 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 2 Jul 2015 15:01:24 -0700 Subject: [PATCH 007/768] improve diagnostics for circular static construction failure --- src/rt/minfo.d | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 286c2127ae..94aa32a806 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -151,11 +151,16 @@ struct ModuleGroup * because the import chain have contradicting ctor/dtor * constraints. */ - string msg = "Aborting: Cycle detected between modules with ctors/dtors:\n"; + string msg = "Aborting: Cycle detected between modules with "; + if (mask & (MIctor | MIdtor)) + msg ~= "shared "; + msg ~= "ctors/dtors:\n"; foreach (e; stack[start .. stackidx]) { msg ~= e.mod.name; - msg ~= " -> "; + if (e.mod.flags & mask) + msg ~= '*'; + msg ~= " ->\n"; } msg ~= stack[start].mod.name; free(); From 6d5b30eecf6271ade3d6547e99da3d249512cc0a Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 17 May 2015 22:01:26 +0200 Subject: [PATCH 008/768] detab, tolf, remove trailing whitespace --- src/core/atomic.d | 16 +++++----- src/core/stdc/math.d | 2 +- src/core/sys/linux/epoll.d | 26 +++++++-------- src/core/sys/linux/sys/xattr.d | 4 +-- src/core/sys/posix/sys/statvfs.d | 8 ++--- src/core/sys/posix/sys/types.d | 4 +-- src/core/sys/posix/syslog.d | 54 ++++++++++++++++---------------- src/core/sys/posix/unistd.d | 2 +- src/core/sys/windows/winsock2.d | 2 +- src/core/thread.d | 2 +- src/core/threadasm.S | 2 +- src/gc/gc.d | 36 ++++++++++----------- src/rt/util/container/treap.d | 6 ++-- src/rt/util/random.d | 6 ++-- 14 files changed, 85 insertions(+), 85 deletions(-) diff --git a/src/core/atomic.d b/src/core/atomic.d index ea41d0fa48..564ca3028f 100644 --- a/src/core/atomic.d +++ b/src/core/atomic.d @@ -170,10 +170,10 @@ else version( AsmX86_32 ) static if (T.sizeof == 1) asm pure nothrow @nogc { lock; xadd[EDX], AL; } else static if (T.sizeof == 2) asm pure nothrow @nogc { lock; xadd[EDX], AX; } else static if (T.sizeof == 4) asm pure nothrow @nogc { lock; xadd[EDX], EAX; } - - asm pure nothrow @nogc - { - mov tmp, EAX; + + asm pure nothrow @nogc + { + mov tmp, EAX; } return cast(T)tmp; @@ -688,10 +688,10 @@ else version( AsmX86_64 ) else static if (T.sizeof == 2) asm pure nothrow @nogc { lock; xadd[RDX], AX; } else static if (T.sizeof == 4) asm pure nothrow @nogc { lock; xadd[RDX], EAX; } else static if (T.sizeof == 8) asm pure nothrow @nogc { lock; xadd[RDX], RAX; } - - asm pure nothrow @nogc - { - mov tmp, RAX; + + asm pure nothrow @nogc + { + mov tmp, RAX; } return cast(T)tmp; diff --git a/src/core/stdc/math.d b/src/core/stdc/math.d index eca2cd63ce..9908749359 100644 --- a/src/core/stdc/math.d +++ b/src/core/stdc/math.d @@ -2410,7 +2410,7 @@ else /// float fabsf(float x); /// - real fabsl(real x); + real fabsl(real x); } /// diff --git a/src/core/sys/linux/epoll.d b/src/core/sys/linux/epoll.d index 3fb140f64e..e7a7040330 100644 --- a/src/core/sys/linux/epoll.d +++ b/src/core/sys/linux/epoll.d @@ -3,7 +3,7 @@ * Available since Linux 2.6 * * Copyright: Copyright Adil Baig 2012. - * License : $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * License : $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Authors : Adil Baig (github.com/adilbaig) */ module core.sys.linux.epoll; @@ -20,21 +20,21 @@ enum EPOLL_NONBLOCK = 0x800 } -enum +enum { - EPOLLIN = 0x001, - EPOLLPRI = 0x002, - EPOLLOUT = 0x004, + EPOLLIN = 0x001, + EPOLLPRI = 0x002, + EPOLLOUT = 0x004, EPOLLRDNORM = 0x040, EPOLLRDBAND = 0x080, EPOLLWRNORM = 0x100, EPOLLWRBAND = 0x200, - EPOLLMSG = 0x400, - EPOLLERR = 0x008, - EPOLLHUP = 0x010, - EPOLLRDHUP = 0x2000, // since Linux 2.6.17 + EPOLLMSG = 0x400, + EPOLLERR = 0x008, + EPOLLHUP = 0x010, + EPOLLRDHUP = 0x2000, // since Linux 2.6.17 EPOLLONESHOT = 1u << 30, - EPOLLET = 1u << 31 + EPOLLET = 1u << 31 } /* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */ @@ -45,21 +45,21 @@ enum EPOLL_CTL_MOD = 3, // Change file descriptor epoll_event structure. } -struct epoll_event +struct epoll_event { align(1): uint events; epoll_data_t data; }; -union epoll_data_t +union epoll_data_t { void *ptr; int fd; uint u32; ulong u64; }; - + int epoll_create (int size); int epoll_create1 (int flags); int epoll_ctl (int epfd, int op, int fd, epoll_event *event); diff --git a/src/core/sys/linux/sys/xattr.d b/src/core/sys/linux/sys/xattr.d index 9a36af3c4d..a14c6c6174 100644 --- a/src/core/sys/linux/sys/xattr.d +++ b/src/core/sys/linux/sys/xattr.d @@ -15,8 +15,8 @@ extern (C): nothrow: enum { - XATTR_CREATE = 1, /* set value, fail if attr already exists. */ - XATTR_REPLACE = 2 /* set value, fail if attr does not exist. */ + XATTR_CREATE = 1, /* set value, fail if attr already exists. */ + XATTR_REPLACE = 2 /* set value, fail if attr does not exist. */ } enum XATTR_OS2_PREFIX = "os2."; diff --git a/src/core/sys/posix/sys/statvfs.d b/src/core/sys/posix/sys/statvfs.d index a85f1afc0d..eb7435903c 100644 --- a/src/core/sys/posix/sys/statvfs.d +++ b/src/core/sys/posix/sys/statvfs.d @@ -16,7 +16,7 @@ version (Posix): extern (C) : version(CRuntime_Glibc) { - static if(__WORDSIZE == 32) + static if(__WORDSIZE == 32) { version=_STATVFSBUF_F_UNUSED; } @@ -31,7 +31,7 @@ version(CRuntime_Glibc) { fsfilcnt_t f_ffree; fsfilcnt_t f_favail; c_ulong f_fsid; - version(_STATVFSBUF_F_UNUSED) + version(_STATVFSBUF_F_UNUSED) { int __f_unused; } @@ -41,7 +41,7 @@ version(CRuntime_Glibc) { } /* Definitions for the flag in `f_flag'. These definitions should be kept in sync with the definitions in . */ - static if(__USE_GNU) + static if(__USE_GNU) { enum FFlag { @@ -60,7 +60,7 @@ version(CRuntime_Glibc) { } } /* Use GNU. */ - else + else { // Posix defined: enum FFlag { diff --git a/src/core/sys/posix/sys/types.d b/src/core/sys/posix/sys/types.d index 6e1adef62f..262487745c 100644 --- a/src/core/sys/posix/sys/types.d +++ b/src/core/sys/posix/sys/types.d @@ -695,7 +695,7 @@ else version (Solaris) ubyte __pthread_mutex_flag2; ubyte __pthread_mutex_ceiling; ushort __pthread_mutex_type; - ushort __pthread_mutex_magic; + ushort __pthread_mutex_magic; } ___pthread_mutex_flags __pthread_mutex_flags; @@ -821,7 +821,7 @@ else version (Solaris) ulong __pthread_barrier_cycle; ulong __pthread_barrier_reserved; pthread_mutex_t __pthread_barrier_lock; - pthread_cond_t __pthread_barrier_cond; + pthread_cond_t __pthread_barrier_cond; } struct pthread_barrierattr_t diff --git a/src/core/sys/posix/syslog.d b/src/core/sys/posix/syslog.d index 7c849f6e32..2d117b04e5 100644 --- a/src/core/sys/posix/syslog.d +++ b/src/core/sys/posix/syslog.d @@ -32,7 +32,7 @@ version(CRuntime_Glibc) LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; - + //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ @@ -42,7 +42,7 @@ version(CRuntime_Glibc) LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ LOG_PERROR = 0x20, /* log to stderr as well */ }; - + //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ @@ -57,7 +57,7 @@ version(CRuntime_Glibc) LOG_CRON = (9<<3), /* clock daemon */ LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ LOG_FTP = (11<<3), /* ftp daemon */ - + /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ @@ -67,13 +67,13 @@ version(CRuntime_Glibc) LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ - + LOG_NFACILITIES = 24, /* current number of facilities */ }; - + int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ - + void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); @@ -82,7 +82,7 @@ version(CRuntime_Glibc) else version( OSX ) { //http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/osfmk/sys/syslog.h - + //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ @@ -94,7 +94,7 @@ else version( OSX ) LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; - + //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ @@ -103,7 +103,7 @@ else version( OSX ) LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ }; - + //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ @@ -115,7 +115,7 @@ else version( OSX ) LOG_LPR = (6<<3), /* line printer subsystem */ LOG_NEWS = (7<<3), /* network news subsystem */ LOG_UUCP = (8<<3), /* UUCP subsystem */ - + /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ @@ -125,13 +125,13 @@ else version( OSX ) LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ - + LOG_NFACILITIES = 24, /* current number of facilities */ }; - + int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ - + void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); @@ -140,7 +140,7 @@ else version( OSX ) else version( FreeBSD ) { //http://fxr.watson.org/fxr/source/sys/syslog.h - + //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ @@ -152,7 +152,7 @@ else version( FreeBSD ) LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; - + //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ @@ -162,7 +162,7 @@ else version( FreeBSD ) LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ LOG_PERROR = 0x20, /* log to stderr as well */ }; - + //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ @@ -180,7 +180,7 @@ else version( FreeBSD ) LOG_NTP = (12<<3), /* NTP subsystem */ LOG_SECURITY = (13<<3), /* security subsystems (firewalling, etc.) */ LOG_CONSOLE = (14<<3), /* /dev/console output */ - + /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ @@ -190,13 +190,13 @@ else version( FreeBSD ) LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ - + LOG_NFACILITIES = 24, /* current number of facilities */ }; - + int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ - + void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); @@ -205,7 +205,7 @@ else version( FreeBSD ) else version( Solaris ) { //http://pubs.opengroup.org/onlinepubs/007904875/basedefs/syslog.h.html - + //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ @@ -217,7 +217,7 @@ else version( Solaris ) LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; - + //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ @@ -225,7 +225,7 @@ else version( Solaris ) LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ }; - + //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ @@ -240,7 +240,7 @@ else version( Solaris ) LOG_CRON = (9<<3), /* clock daemon */ LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ LOG_FTP = (11<<3), /* ftp daemon */ - + /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ @@ -250,13 +250,13 @@ else version( Solaris ) LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ - + LOG_NFACILITIES = 24, /* current number of facilities */ }; - + int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ - + void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); diff --git a/src/core/sys/posix/unistd.d b/src/core/sys/posix/unistd.d index 0b7f58566f..7d00da1bef 100644 --- a/src/core/sys/posix/unistd.d +++ b/src/core/sys/posix/unistd.d @@ -786,7 +786,7 @@ else version( FreeBSD ) _SC_XOPEN_XCU_VERSION = 117, _SC_CPUSET_SIZE = 122, _SC_PHYS_PAGES = 121, - } + } enum _SC_PAGE_SIZE = _SC_PAGESIZE; diff --git a/src/core/sys/windows/winsock2.d b/src/core/sys/windows/winsock2.d index 87dd27279f..ec5d4506f6 100644 --- a/src/core/sys/windows/winsock2.d +++ b/src/core/sys/windows/winsock2.d @@ -390,7 +390,7 @@ int FD_ISSET(SOCKET fd, const(fd_set)* set) pure @nogc // Adds. -void FD_SET(SOCKET fd, fd_set* set) pure @nogc +void FD_SET(SOCKET fd, fd_set* set) pure @nogc { uint c = set.fd_count; set.fd_array.ptr[c] = fd; diff --git a/src/core/thread.d b/src/core/thread.d index 2ab8f01100..f8904d2f3a 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -4017,7 +4017,7 @@ class Fiber * fibers that have terminated, as doing otherwise could result in * scope-dependent functionality that is not executed. * Stack-based classes, for example, may not be cleaned up - * properly if a fiber is reset before it has terminated. + * properly if a fiber is reset before it has terminated. * * In: * This fiber must be in state TERM or HOLD. diff --git a/src/core/threadasm.S b/src/core/threadasm.S index ce87c6e89a..61939ac00f 100644 --- a/src/core/threadasm.S +++ b/src/core/threadasm.S @@ -391,7 +391,7 @@ fiber_switchContext: * r13 =sp : stack pointer * r14 =lr : link register, it contains the return address (belonging to the function which called us) * r15 =pc : program counter - * + * * For floating point registers: * According to AAPCS (version 2.09, section 5.1.2) only the d8-d15 registers need to be preserved * across method calls. This applies to all ARM FPU variants, whether they have 16 or 32 double registers diff --git a/src/gc/gc.d b/src/gc/gc.d index 0319e02403..3655186f7b 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -3343,29 +3343,29 @@ else debug (MEMSTOMP) unittest { - import core.memory; - auto p = cast(uint*)GC.malloc(uint.sizeof*3); - assert(*p == 0xF0F0F0F0); - p[2] = 0; // First two will be used for free list - GC.free(p); - assert(p[2] == 0xF2F2F2F2); + import core.memory; + auto p = cast(uint*)GC.malloc(uint.sizeof*3); + assert(*p == 0xF0F0F0F0); + p[2] = 0; // First two will be used for free list + GC.free(p); + assert(p[2] == 0xF2F2F2F2); } debug (SENTINEL) unittest { - import core.memory; - auto p = cast(ubyte*)GC.malloc(1); - assert(p[-1] == 0xF4); - assert(p[ 1] == 0xF5); + import core.memory; + auto p = cast(ubyte*)GC.malloc(1); + assert(p[-1] == 0xF4); + assert(p[ 1] == 0xF5); /* - p[1] = 0; - bool thrown; - try - GC.free(p); - catch (Error e) - thrown = true; - p[1] = 0xF5; - assert(thrown); + p[1] = 0; + bool thrown; + try + GC.free(p); + catch (Error e) + thrown = true; + p[1] = 0xF5; + assert(thrown); */ } diff --git a/src/rt/util/container/treap.d b/src/rt/util/container/treap.d index 1840a11098..d252d36477 100644 --- a/src/rt/util/container/treap.d +++ b/src/rt/util/container/treap.d @@ -32,7 +32,7 @@ nothrow: rand48.defaultSeed(); } - void insert(E element) @nogc + void insert(E element) @nogc { root = insert(root, element); } @@ -110,7 +110,7 @@ private: Node* root; Rand48 rand48; - Node* allocNode(E element) @nogc + Node* allocNode(E element) @nogc { Node* node = cast(Node*)common.xmalloc(Node.sizeof); node.left = node.right = null; @@ -119,7 +119,7 @@ private: return node; } - Node* insert(Node* node, E element) @nogc + Node* insert(Node* node, E element) @nogc { if (!node) return allocNode(element); diff --git a/src/rt/util/random.d b/src/rt/util/random.d index 7f8b61e12d..bbe29ce000 100644 --- a/src/rt/util/random.d +++ b/src/rt/util/random.d @@ -24,19 +24,19 @@ nothrow: popFront(); } - auto opCall() @nogc + auto opCall() @nogc { auto result = front; popFront(); return result; } - @property uint front() @nogc + @property uint front() @nogc { return cast(uint)(rng_state >> 16); } - void popFront() @nogc + void popFront() @nogc { immutable ulong a = 25214903917; immutable ulong c = 11; From 39a16bcb8f2d57532d02591d1a7657e8fc0a2159 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 3 Jul 2015 17:34:50 +0200 Subject: [PATCH 009/768] try checkwhitespace as auto-tester target --- posix.mak | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/posix.mak b/posix.mak index 0cca8a08ef..09aeded84e 100644 --- a/posix.mak +++ b/posix.mak @@ -206,6 +206,14 @@ test/%/.run: test/%/Makefile $(QUIET)$(MAKE) -C test/$* MODEL=$(MODEL) OS=$(OS) DMD=$(abspath $(DMD)) \ DRUNTIME=$(abspath $(DRUNTIME)) DRUNTIMESO=$(abspath $(DRUNTIMESO)) QUIET=$(QUIET) LINKDL=$(LINKDL) +#################### test for undesired white spaces ########################## +MAKEFILES = $(filter mak/% %.mak,$(MANIFEST)) +NOT_MAKEFILES = $(filter-out $(MAKEFILES),$(MANIFEST)) + +checkwhitespace: + grep -n -e "[ \t]$$" -e "\r" $(MAKEFILES) ; test "$$?" -ne 0 + grep -n -e " $$" -e "\r|\t" $(NOT_MAKEFILES) ; test "$$?" -ne 0 + detab: detab $(MANIFEST) tolf $(MANIFEST) @@ -231,7 +239,7 @@ test/%/.clean: test/%/Makefile $(MAKE) -C test/$* clean .PHONY : auto-tester-build -auto-tester-build: target +auto-tester-build: target checkwhitespace .PHONY : auto-tester-test auto-tester-test: unittest From a8165438ab2a4f1634dfdfc9dbf11513391ae4ed Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 3 Jul 2015 17:43:38 +0200 Subject: [PATCH 010/768] checkwhitespace grep: add -U --- posix.mak | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/posix.mak b/posix.mak index 09aeded84e..f9c7b43700 100644 --- a/posix.mak +++ b/posix.mak @@ -211,8 +211,8 @@ MAKEFILES = $(filter mak/% %.mak,$(MANIFEST)) NOT_MAKEFILES = $(filter-out $(MAKEFILES),$(MANIFEST)) checkwhitespace: - grep -n -e "[ \t]$$" -e "\r" $(MAKEFILES) ; test "$$?" -ne 0 - grep -n -e " $$" -e "\r|\t" $(NOT_MAKEFILES) ; test "$$?" -ne 0 + grep -n -U -e "[ \t]$$" -e "\r" $(MAKEFILES) ; test "$$?" -ne 0 + grep -n -U -e " $$" -e "\r|\t" $(NOT_MAKEFILES) ; test "$$?" -ne 0 detab: detab $(MANIFEST) From fc0f8744b8ef3149cf330a22f8d28733576c6ecf Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 3 Jul 2015 17:48:46 +0200 Subject: [PATCH 011/768] checkwhitespace: escape $$ --- posix.mak | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/posix.mak b/posix.mak index f9c7b43700..c59e343cec 100644 --- a/posix.mak +++ b/posix.mak @@ -211,8 +211,8 @@ MAKEFILES = $(filter mak/% %.mak,$(MANIFEST)) NOT_MAKEFILES = $(filter-out $(MAKEFILES),$(MANIFEST)) checkwhitespace: - grep -n -U -e "[ \t]$$" -e "\r" $(MAKEFILES) ; test "$$?" -ne 0 - grep -n -U -e " $$" -e "\r|\t" $(NOT_MAKEFILES) ; test "$$?" -ne 0 + grep -n -U -e "[ \t]$$$$" -e "\r" $(MAKEFILES) ; test "$$?" -ne 0 + grep -n -U -e " $$$$" -e "\r|\t" $(NOT_MAKEFILES) ; test "$$?" -ne 0 detab: detab $(MANIFEST) From f8a26fa21478dbcf91776f5230eb6e84ed52f9ba Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 3 Jul 2015 17:53:03 +0200 Subject: [PATCH 012/768] checkwhitespace: grep with -P --- posix.mak | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/posix.mak b/posix.mak index c59e343cec..e8cc454a19 100644 --- a/posix.mak +++ b/posix.mak @@ -211,9 +211,9 @@ MAKEFILES = $(filter mak/% %.mak,$(MANIFEST)) NOT_MAKEFILES = $(filter-out $(MAKEFILES),$(MANIFEST)) checkwhitespace: - grep -n -U -e "[ \t]$$$$" -e "\r" $(MAKEFILES) ; test "$$?" -ne 0 - grep -n -U -e " $$$$" -e "\r|\t" $(NOT_MAKEFILES) ; test "$$?" -ne 0 - + grep -n -P "([ \t]$$|\r)" $(MAKEFILES) ; test "$$?" -ne 0 + grep -n -P "( $$|\r\t)" $(NOT_MAKEFILES) ; test "$$?" -ne 0 + detab: detab $(MANIFEST) tolf $(MANIFEST) From 8d83b90847a2b507df641b005c4a9bf8ac929de3 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 4 Jul 2015 10:35:40 +0200 Subject: [PATCH 013/768] checkwhitespace: do not abuse MAKEFILES, make grep overloadable, add -U --- posix.mak | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/posix.mak b/posix.mak index e8cc454a19..26b9932129 100644 --- a/posix.mak +++ b/posix.mak @@ -207,12 +207,13 @@ test/%/.run: test/%/Makefile DRUNTIME=$(abspath $(DRUNTIME)) DRUNTIMESO=$(abspath $(DRUNTIMESO)) QUIET=$(QUIET) LINKDL=$(LINKDL) #################### test for undesired white spaces ########################## -MAKEFILES = $(filter mak/% %.mak,$(MANIFEST)) -NOT_MAKEFILES = $(filter-out $(MAKEFILES),$(MANIFEST)) +CWS_MAKEFILES = $(filter mak/% %.mak,$(MANIFEST)) +NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES),$(MANIFEST)) +GREP = grep checkwhitespace: - grep -n -P "([ \t]$$|\r)" $(MAKEFILES) ; test "$$?" -ne 0 - grep -n -P "( $$|\r\t)" $(NOT_MAKEFILES) ; test "$$?" -ne 0 + $(GREP) -n -U -P "([ \t]$$|\r)" $(CWS_MAKEFILES) ; test "$$?" -ne 0 + $(GREP) -n -U -P "( $$|\r\t)" $(NOT_MAKEFILES) ; test "$$?" -ne 0 detab: detab $(MANIFEST) From 2b05042aa3596810b81a18d9fdf13ad84c603f5d Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 4 Jul 2015 14:14:01 +0200 Subject: [PATCH 014/768] fix bad grep pattern --- posix.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posix.mak b/posix.mak index 26b9932129..03b8e8a9d5 100644 --- a/posix.mak +++ b/posix.mak @@ -213,7 +213,7 @@ GREP = grep checkwhitespace: $(GREP) -n -U -P "([ \t]$$|\r)" $(CWS_MAKEFILES) ; test "$$?" -ne 0 - $(GREP) -n -U -P "( $$|\r\t)" $(NOT_MAKEFILES) ; test "$$?" -ne 0 + $(GREP) -n -U -P "( $$|\r|\t)" $(NOT_MAKEFILES) ; test "$$?" -ne 0 detab: detab $(MANIFEST) From fa0c105d25340b6883992e6c012304e524ebeaca Mon Sep 17 00:00:00 2001 From: Mike Date: Sun, 5 Jul 2015 20:09:32 +0900 Subject: [PATCH 015/768] Modify TypeInfo to match the spec --- src/object.d | 10 +++++++--- src/rt/typeinfo/ti_C.d | 5 +++++ src/rt/typeinfo/ti_byte.d | 5 +++++ src/rt/typeinfo/ti_cent.d | 5 +++++ src/rt/typeinfo/ti_char.d | 4 ++-- src/rt/typeinfo/ti_dchar.d | 4 ++-- src/rt/typeinfo/ti_delegate.d | 7 +++++++ src/rt/typeinfo/ti_int.d | 5 +++++ src/rt/typeinfo/ti_long.d | 5 +++++ src/rt/typeinfo/ti_ptr.d | 5 +++++ src/rt/typeinfo/ti_short.d | 5 +++++ src/rt/typeinfo/ti_ubyte.d | 5 +++++ src/rt/typeinfo/ti_ucent.d | 5 +++++ src/rt/typeinfo/ti_uint.d | 5 +++++ src/rt/typeinfo/ti_ulong.d | 5 +++++ src/rt/typeinfo/ti_ushort.d | 5 +++++ src/rt/typeinfo/ti_void.d | 5 +++++ src/rt/typeinfo/ti_wchar.d | 4 ++-- 18 files changed, 85 insertions(+), 9 deletions(-) diff --git a/src/object.d b/src/object.d index 0a141a490d..f73661ce74 100644 --- a/src/object.d +++ b/src/object.d @@ -285,8 +285,7 @@ class TypeInfo /// Return default initializer. If the type should be initialized to all zeros, /// an array with a null ptr and a length equal to the type size will be returned. - // TODO: make this a property, but may need to be renamed to diambiguate with T.init... - const(void)[] init() nothrow pure const @safe @nogc { return null; } + abstract const(void)[] init() nothrow pure const @safe @nogc; /// Get flags for type: 1 means GC should scan for pointers, /// 2 means arg of this type is passed in XMM register @@ -338,7 +337,7 @@ class TypeInfo_Typedef : TypeInfo override @property inout(TypeInfo) next() nothrow pure inout { return base.next; } override @property uint flags() nothrow pure const { return base.flags; } - override const(void)[] init() nothrow pure const @safe { return m_init.length ? m_init : base.init(); } + override const(void)[] init() const { return m_init.length ? m_init : base.init(); } override @property size_t talign() nothrow pure const { return base.talign; } @@ -466,6 +465,11 @@ class TypeInfo_Array : TypeInfo return (void[]).sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. (void[]).sizeof]; + } + override void swap(void* p1, void* p2) const { void[] tmp = *cast(void[]*)p1; diff --git a/src/rt/typeinfo/ti_C.d b/src/rt/typeinfo/ti_C.d index 4993d88c2b..0d3908ab0d 100644 --- a/src/rt/typeinfo/ti_C.d +++ b/src/rt/typeinfo/ti_C.d @@ -63,6 +63,11 @@ class TypeInfo_C : TypeInfo return Object.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. Object.sizeof]; + } + override @property uint flags() nothrow pure { return 1; diff --git a/src/rt/typeinfo/ti_byte.d b/src/rt/typeinfo/ti_byte.d index bd14eb9b2c..aaa1b3861d 100644 --- a/src/rt/typeinfo/ti_byte.d +++ b/src/rt/typeinfo/ti_byte.d @@ -44,6 +44,11 @@ class TypeInfo_g : TypeInfo return byte.sizeof; } + override const(void)[] init() @trusted + { + return (cast(void *)null)[0 .. byte.sizeof]; + } + override void swap(void *p1, void *p2) { byte t; diff --git a/src/rt/typeinfo/ti_cent.d b/src/rt/typeinfo/ti_cent.d index a103be5ded..a5311fd6fd 100644 --- a/src/rt/typeinfo/ti_cent.d +++ b/src/rt/typeinfo/ti_cent.d @@ -52,6 +52,11 @@ class TypeInfo_zi : TypeInfo return cent.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. cent.sizeof]; + } + override void swap(void *p1, void *p2) { cent t; diff --git a/src/rt/typeinfo/ti_char.d b/src/rt/typeinfo/ti_char.d index a2f2f2d716..46d31cfbb2 100644 --- a/src/rt/typeinfo/ti_char.d +++ b/src/rt/typeinfo/ti_char.d @@ -53,10 +53,10 @@ class TypeInfo_a : TypeInfo *cast(char *)p2 = t; } - override const(void)[] init() nothrow pure + override const(void)[] init() const @trusted { static immutable char c; - return (cast(char *)&c)[0 .. 1]; + return (&c)[0 .. 1]; } } diff --git a/src/rt/typeinfo/ti_dchar.d b/src/rt/typeinfo/ti_dchar.d index 13f410b988..b0236ea5f0 100644 --- a/src/rt/typeinfo/ti_dchar.d +++ b/src/rt/typeinfo/ti_dchar.d @@ -53,10 +53,10 @@ class TypeInfo_w : TypeInfo *cast(dchar *)p2 = t; } - override const(void)[] init() nothrow pure + override const(void)[] init() const @trusted { static immutable dchar c; - return (cast(dchar *)&c)[0 .. 1]; + return (&c)[0 .. 1]; } } diff --git a/src/rt/typeinfo/ti_delegate.d b/src/rt/typeinfo/ti_delegate.d index 0150e1058a..2bc3bf618f 100644 --- a/src/rt/typeinfo/ti_delegate.d +++ b/src/rt/typeinfo/ti_delegate.d @@ -50,6 +50,13 @@ class TypeInfo_D : TypeInfo *cast(dg *)p2 = t; } + override const(void)[] init() const @trusted + { + static immutable dg d; + + return (cast(void *)null)[0 .. dg.sizeof]; + } + override @property uint flags() nothrow pure { return 1; diff --git a/src/rt/typeinfo/ti_int.d b/src/rt/typeinfo/ti_int.d index 18a3f44ee6..23770f41d8 100644 --- a/src/rt/typeinfo/ti_int.d +++ b/src/rt/typeinfo/ti_int.d @@ -48,6 +48,11 @@ class TypeInfo_i : TypeInfo return int.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. int.sizeof]; + } + override void swap(void *p1, void *p2) { int t; diff --git a/src/rt/typeinfo/ti_long.d b/src/rt/typeinfo/ti_long.d index 90f2fbfd05..d383f479e3 100644 --- a/src/rt/typeinfo/ti_long.d +++ b/src/rt/typeinfo/ti_long.d @@ -50,6 +50,11 @@ class TypeInfo_l : TypeInfo return long.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. long.sizeof]; + } + override void swap(void *p1, void *p2) { long t; diff --git a/src/rt/typeinfo/ti_ptr.d b/src/rt/typeinfo/ti_ptr.d index 13abf07a91..c882095620 100644 --- a/src/rt/typeinfo/ti_ptr.d +++ b/src/rt/typeinfo/ti_ptr.d @@ -48,6 +48,11 @@ class TypeInfo_P : TypeInfo return (void*).sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. (void*).sizeof]; + } + override void swap(void *p1, void *p2) { void* tmp = *cast(void**)p1; diff --git a/src/rt/typeinfo/ti_short.d b/src/rt/typeinfo/ti_short.d index 23073265d1..247fbdc791 100644 --- a/src/rt/typeinfo/ti_short.d +++ b/src/rt/typeinfo/ti_short.d @@ -44,6 +44,11 @@ class TypeInfo_s : TypeInfo return short.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. short.sizeof]; + } + override void swap(void *p1, void *p2) { short t; diff --git a/src/rt/typeinfo/ti_ubyte.d b/src/rt/typeinfo/ti_ubyte.d index 9153b2a955..e24ecedd9d 100644 --- a/src/rt/typeinfo/ti_ubyte.d +++ b/src/rt/typeinfo/ti_ubyte.d @@ -44,6 +44,11 @@ class TypeInfo_h : TypeInfo return ubyte.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. ubyte.sizeof]; + } + override void swap(void *p1, void *p2) { ubyte t; diff --git a/src/rt/typeinfo/ti_ucent.d b/src/rt/typeinfo/ti_ucent.d index c4057d6f11..0e935175e7 100644 --- a/src/rt/typeinfo/ti_ucent.d +++ b/src/rt/typeinfo/ti_ucent.d @@ -52,6 +52,11 @@ class TypeInfo_zk : TypeInfo return ucent.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. ucent.sizeof]; + } + override void swap(void *p1, void *p2) { ucent t; diff --git a/src/rt/typeinfo/ti_uint.d b/src/rt/typeinfo/ti_uint.d index 588ea23fa3..bea3f3af95 100644 --- a/src/rt/typeinfo/ti_uint.d +++ b/src/rt/typeinfo/ti_uint.d @@ -48,6 +48,11 @@ class TypeInfo_k : TypeInfo return uint.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. uint.sizeof]; + } + override void swap(void *p1, void *p2) { int t; diff --git a/src/rt/typeinfo/ti_ulong.d b/src/rt/typeinfo/ti_ulong.d index 565b988f27..2f35c46ad8 100644 --- a/src/rt/typeinfo/ti_ulong.d +++ b/src/rt/typeinfo/ti_ulong.d @@ -50,6 +50,11 @@ class TypeInfo_m : TypeInfo return ulong.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. ulong.sizeof]; + } + override void swap(void *p1, void *p2) { ulong t; diff --git a/src/rt/typeinfo/ti_ushort.d b/src/rt/typeinfo/ti_ushort.d index e4cfc3ea57..2cac88dafe 100644 --- a/src/rt/typeinfo/ti_ushort.d +++ b/src/rt/typeinfo/ti_ushort.d @@ -44,6 +44,11 @@ class TypeInfo_t : TypeInfo return ushort.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. ushort.sizeof]; + } + override void swap(void *p1, void *p2) { ushort t; diff --git a/src/rt/typeinfo/ti_void.d b/src/rt/typeinfo/ti_void.d index e2766490a0..0023e330dc 100644 --- a/src/rt/typeinfo/ti_void.d +++ b/src/rt/typeinfo/ti_void.d @@ -44,6 +44,11 @@ class TypeInfo_v : TypeInfo return void.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. void.sizeof]; + } + override void swap(void *p1, void *p2) { byte t; diff --git a/src/rt/typeinfo/ti_wchar.d b/src/rt/typeinfo/ti_wchar.d index 066820a4a0..8a343397f5 100644 --- a/src/rt/typeinfo/ti_wchar.d +++ b/src/rt/typeinfo/ti_wchar.d @@ -53,10 +53,10 @@ class TypeInfo_u : TypeInfo *cast(wchar *)p2 = t; } - override const(void)[] init() + override const(void)[] init() const @trusted { static immutable wchar c; - return (cast(wchar *)&c)[0 .. 1]; + return (&c)[0 .. 1]; } } From 577955fbac222ca7d698f6a2302711166cbb557f Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Tue, 7 Jul 2015 00:26:27 +0200 Subject: [PATCH 016/768] restrict check to linux --- posix.mak | 3 +++ 1 file changed, 3 insertions(+) diff --git a/posix.mak b/posix.mak index 03b8e8a9d5..762aa3756d 100644 --- a/posix.mak +++ b/posix.mak @@ -212,8 +212,11 @@ NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES),$(MANIFEST)) GREP = grep checkwhitespace: +# restrict to linux, other platforms don't have a version of grep that supports -P +ifeq (linux,$(OS)) $(GREP) -n -U -P "([ \t]$$|\r)" $(CWS_MAKEFILES) ; test "$$?" -ne 0 $(GREP) -n -U -P "( $$|\r|\t)" $(NOT_MAKEFILES) ; test "$$?" -ne 0 +endif detab: detab $(MANIFEST) From 893cc056bb717bea58c77bf960c4a006a1af079b Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 14 May 2015 23:55:32 +0200 Subject: [PATCH 017/768] AA can't have empty key --- src/rt/aaA.d | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/rt/aaA.d b/src/rt/aaA.d index 72a0bafe4d..79561dc847 100644 --- a/src/rt/aaA.d +++ b/src/rt/aaA.d @@ -851,17 +851,22 @@ unittest assert(aa.byKey.empty); } +// test zero sized value (hashset) unittest { - alias E = void[0]; - auto aa = [E.init : E.init]; + alias V = void[0]; + auto aa = [0 : V.init]; assert(aa.length == 1); - assert(aa.byKey.front == E.init); - assert(aa.byValue.front == E.init); - aa[E.init] = E.init; - assert(aa.length == 1); - assert(aa.remove(E.init)); - assert(aa.length == 0); + assert(aa.byKey.front == 0); + assert(aa.byValue.front == V.init); + aa[1] = V.init; + assert(aa.length == 2); + aa[0] = V.init; + assert(aa.length == 2); + assert(aa.remove(0)); + aa[0] = V.init; + assert(aa.length == 2); + assert(aa == [0 : V.init, 1 : V.init]); } // test tombstone purging From d119481f0540cb9f367889bbacaefdac8852af5a Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 14 May 2015 23:56:13 +0200 Subject: [PATCH 018/768] array length of numToString is 1 too short - use a simpler popBack loop --- src/core/time.d | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index 17c11d99c2..27bea61e79 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -4832,13 +4832,9 @@ string numToString(double value) @safe pure nothrow result ~= '.'; result ~= numToString(cast(long)(_abs((value - cast(long)value) * 1000000))); - int i = cast(int)result.length - 1; - for (; i >= 0; --i) - { - if(result[i] != '0') - break; - } - return result[0 .. (i > 0 ? i - 1 : 0)]; + while (result[$-1] == '0') + result = result[0 .. $-1]; + return result; } unittest From 5c69814cb650f27621248dbd5eee2096b1be6dfa Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 7 Jul 2015 11:59:53 +0200 Subject: [PATCH 019/768] fix Issue 11414 - druntime should run debug unittest - change druntime's makefile structure to match phobos - define ROOT folder as generated/$(OS)/$(BUILD)/$(MODEL) - unittest rule recursively invokes debug/release unittest - factor out common.mak from test/*/Makefile and test debug/release --- posix.mak | 84 ++++++++++++++++++++++++++++++---------- test/common.mak | 28 ++++++++++++++ test/coverage/Makefile | 23 +++-------- test/exceptions/Makefile | 19 +-------- test/init_fini/Makefile | 19 +-------- test/shared/Makefile | 24 +++--------- 6 files changed, 105 insertions(+), 92 deletions(-) create mode 100644 test/common.mak diff --git a/posix.mak b/posix.mak index 762aa3756d..418c120a88 100644 --- a/posix.mak +++ b/posix.mak @@ -7,6 +7,20 @@ QUIET:=@ include osmodel.mak +# Default to a release built, override with BUILD=debug +ifeq (,$(BUILD)) +BUILD_WAS_SPECIFIED=0 +BUILD=release +else +BUILD_WAS_SPECIFIED=1 +endif + +ifneq ($(BUILD),release) + ifneq ($(BUILD),debug) + $(error Unrecognized BUILD=$(BUILD), must be 'debug' or 'release') + endif +endif + DMD=../dmd/src/dmd INSTALL_DIR=../install @@ -23,21 +37,40 @@ else DOTLIB:=.a endif -DFLAGS=$(MODEL_FLAG) -conf= -O -release -dip25 -inline -w -Isrc -Iimport $(PIC) -UDFLAGS=$(MODEL_FLAG) -conf= -O -release -dip25 -w -Isrc -Iimport $(PIC) DDOCFLAGS=-conf= -c -w -o- -Isrc -Iimport -version=CoreDdoc -CFLAGS=$(MODEL_FLAG) -O $(PIC) +# Set CFLAGS +CFLAGS= +ifneq (,$(filter cc% gcc% clang% icc% egcc%, $(CC))) + CFLAGS += $(MODEL_FLAG) -fPIC -DHAVE_UNISTD_H + ifeq ($(BUILD),debug) + CFLAGS += -g + else + CFLAGS += -O3 + endif +endif ifeq (solaris,$(OS)) CFLAGS+=-D_REENTRANT # for thread-safe errno endif -OBJDIR=obj/$(MODEL) +# Set DFLAGS +UDFLAGS=-conf= -Isrc -Iimport -w -dip25 $(MODEL_FLAG) $(PIC) +ifeq ($(BUILD),debug) + UDFLAGS += -g -debug + DFLAGS=$(UDFLAGS) +else + UDFLAGS += -O -release + DFLAGS=$(UDFLAGS) -inline # unittests don't compile with -inline +endif + +ROOT_OF_THEM_ALL = generated +ROOT = $(ROOT_OF_THEM_ALL)/$(OS)/$(BUILD)/$(MODEL) +OBJDIR=obj/$(OS)/$(BUILD)/$(MODEL) DRUNTIME_BASE=druntime-$(OS)$(MODEL) -DRUNTIME=lib/lib$(DRUNTIME_BASE).a -DRUNTIMESO=lib/lib$(DRUNTIME_BASE).so -DRUNTIMESOOBJ=lib/lib$(DRUNTIME_BASE)so.o -DRUNTIMESOLIB=lib/lib$(DRUNTIME_BASE)so.a +DRUNTIME=$(ROOT)/libdruntime.a +DRUNTIMESO=$(ROOT)/libdruntime.so +DRUNTIMESOOBJ=$(ROOT)/libdruntime.so.o +DRUNTIMESOLIB=$(ROOT)/libdruntime.so.a DOCFMT= @@ -61,13 +94,15 @@ SRCS:=$(subst \,/,$(SRCS)) # NOTE: a pre-compiled minit.obj has been provided in dmd for Win32 and # minit.asm is not used by dmd for Linux -OBJS= $(OBJDIR)/errno_c.o $(OBJDIR)/bss_section.o $(OBJDIR)/threadasm.o +OBJS= $(ROOT)/errno_c.o $(ROOT)/bss_section.o $(ROOT)/threadasm.o # build with shared library support SHARED=$(if $(findstring $(OS),linux freebsd),1,) LINKDL=$(if $(findstring $(OS),linux),-L-ldl,) +MAKEFILE = $(firstword $(MAKEFILE_LIST)) + ######################## All of'em ############################## ifneq (,$(SHARED)) @@ -119,15 +154,15 @@ $(IMPDIR)/%.d : src/%.d ################### C/ASM Targets ############################ -$(OBJDIR)/%.o : src/rt/%.c +$(ROOT)/%.o : src/rt/%.c @mkdir -p `dirname $@` $(CC) -c $(CFLAGS) $< -o$@ -$(OBJDIR)/errno_c.o : src/core/stdc/errno.c +$(ROOT)/errno_c.o : src/core/stdc/errno.c @mkdir -p `dirname $@` $(CC) -c $(CFLAGS) $< -o$@ -$(OBJDIR)/threadasm.o : src/core/threadasm.S +$(ROOT)/threadasm.o : src/core/threadasm.S @mkdir -p $(OBJDIR) $(CC) -c $(CFLAGS) $< -o$@ @@ -149,15 +184,22 @@ $(DRUNTIMESOLIB): $(OBJS) $(SRCS) $(DRUNTIME): $(OBJS) $(SRCS) $(DMD) -lib -of$(DRUNTIME) -Xfdruntime.json $(DFLAGS) $(SRCS) $(OBJS) -UT_MODULES:=$(patsubst src/%.d,$(OBJDIR)/%,$(SRCS)) +UT_MODULES:=$(patsubst src/%.d,$(ROOT)/unittest/%,$(SRCS)) HAS_ADDITIONAL_TESTS:=$(shell test -d test && echo 1) ifeq ($(HAS_ADDITIONAL_TESTS),1) ADDITIONAL_TESTS:=test/init_fini test/exceptions test/coverage ADDITIONAL_TESTS+=$(if $(SHARED),test/shared,) endif +.PHONY : unittest +ifeq (1,$(BUILD_WAS_SPECIFIED)) unittest : $(UT_MODULES) $(addsuffix /.run,$(ADDITIONAL_TESTS)) @echo done +else +unittest : unittest-debug unittest-release +unittest-%: + $(MAKE) -f $(MAKEFILE) unittest OS=$(OS) MODEL=$(MODEL) DMD=$(DMD) BUILD=$* +endif ifeq ($(OS),freebsd) DISABLED_TESTS = @@ -165,24 +207,24 @@ else DISABLED_TESTS = endif -$(addprefix $(OBJDIR)/,$(DISABLED_TESTS)) : +$(addprefix $(ROOT)/unittest/,$(DISABLED_TESTS)) : @echo $@ - disabled ifeq (,$(SHARED)) -$(OBJDIR)/test_runner: $(OBJS) $(SRCS) src/test_runner.d +$(ROOT)/unittest/test_runner: $(OBJS) $(SRCS) src/test_runner.d $(DMD) $(UDFLAGS) -unittest -of$@ src/test_runner.d $(SRCS) $(OBJS) -debuglib= -defaultlib= else -UT_DRUNTIME:=$(OBJDIR)/lib$(DRUNTIME_BASE)-ut$(DOTDLL) +UT_DRUNTIME:=$(ROOT)/unittest/libdruntime-ut$(DOTDLL) $(UT_DRUNTIME): override PIC:=-fPIC $(UT_DRUNTIME): UDFLAGS+=-version=Shared $(UT_DRUNTIME): $(OBJS) $(SRCS) $(DMD) $(UDFLAGS) -shared -unittest -of$@ $(SRCS) $(OBJS) $(LINKDL) -debuglib= -defaultlib= -$(OBJDIR)/test_runner: $(UT_DRUNTIME) src/test_runner.d +$(ROOT)/unittest/test_runner: $(UT_DRUNTIME) src/test_runner.d $(DMD) $(UDFLAGS) -of$@ src/test_runner.d -L$(UT_DRUNTIME) -debuglib= -defaultlib= endif @@ -190,12 +232,12 @@ endif # macro that returns the module name given the src path moduleName=$(subst rt.invariant,invariant,$(subst object_,object,$(subst /,.,$(1)))) -$(OBJDIR)/% : $(OBJDIR)/test_runner +$(ROOT)/unittest/% : $(ROOT)/unittest/test_runner @mkdir -p $(dir $@) # make the file very old so it builds and runs again if it fails @touch -t 197001230123 $@ # run unittest in its own directory - $(QUIET)$(RUN) $(OBJDIR)/test_runner $(call moduleName,$*) + $(QUIET)$(RUN) $< $(call moduleName,$*) # succeeded, render the file new again @touch $@ @@ -203,7 +245,7 @@ test/init_fini/.run test/exceptions/.run: $(DRUNTIME) test/shared/.run: $(DRUNTIMESO) test/%/.run: test/%/Makefile - $(QUIET)$(MAKE) -C test/$* MODEL=$(MODEL) OS=$(OS) DMD=$(abspath $(DMD)) \ + $(QUIET)$(MAKE) -C test/$* MODEL=$(MODEL) OS=$(OS) DMD=$(abspath $(DMD)) BUILD=$(BUILD) \ DRUNTIME=$(abspath $(DRUNTIME)) DRUNTIMESO=$(abspath $(DRUNTIMESO)) QUIET=$(QUIET) LINKDL=$(LINKDL) #################### test for undesired white spaces ########################## @@ -237,7 +279,7 @@ install: target cp LICENSE $(INSTALL_DIR)/druntime-LICENSE.txt clean: $(addsuffix /.clean,$(ADDITIONAL_TESTS)) - rm -rf obj lib $(IMPDIR) $(DOCDIR) druntime.zip + rm -rf $(ROOT_OF_THEM_ALL) $(IMPDIR) $(DOCDIR) druntime.zip test/%/.clean: test/%/Makefile $(MAKE) -C test/$* clean diff --git a/test/common.mak b/test/common.mak new file mode 100644 index 0000000000..4a9be5177b --- /dev/null +++ b/test/common.mak @@ -0,0 +1,28 @@ +# set from top makefile +OS:= +MODEL:= +BUILD:= +DMD:= +DRUNTIME:= +DRUNTIMESO:= +QUIET:= +LINKDL:= +LDL:=$(subst -L,,$(LINKDL)) # -ldl + +SRC:=src +ROOT:=./generated/$(OS)/$(BUILD)/$(MODEL) + +ifneq (default,$(MODEL)) + MODEL_FLAG:=-m$(MODEL) +endif +CFLAGS:=$(MODEL_FLAG) -Wall +DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -defaultlib= -debuglib= +# LINK_SHARED may be set by importing makefile +DFLAGS+=$(if $(LINK_SHARED),-L$(DRUNTIMESO),-L$(DRUNTIME)) +ifeq ($(BUILD),debug) + DFLAGS += -g -debug + CFLAGS += -g +else + DFLAGS += -O -release + CFLAGS += -O3 +endif diff --git a/test/coverage/Makefile b/test/coverage/Makefile index bbedacde71..6835e3c2fb 100644 --- a/test/coverage/Makefile +++ b/test/coverage/Makefile @@ -1,25 +1,12 @@ -# set from top makefile -OS:= -MODEL:= -DMD:= -DRUNTIME:= -DRUNTIMESO:= -QUIET:= -LINKDL:= - -SRC:=src -ROOT:=./obj/$(OS)/$(MODEL) +include ../common.mak + +DFLAGS+=-cov + NORMAL_TESTS:=$(addprefix $(ROOT)/,$(addsuffix .done,basic)) MERGE_TESTS:=$(addprefix $(ROOT)/,$(addsuffix .done,merge merge_true)) DIFF:=diff -ifneq (default,$(MODEL)) - MODEL_FLAG:=-m$(MODEL) -endif -CFLAGS:=$(MODEL_FLAG) -Wall -DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -L$(DRUNTIME) -defaultlib= -debuglib= -cov - .PHONY: all clean all: $(NORMAL_TESTS) $(MERGE_TESTS) @@ -42,4 +29,4 @@ $(ROOT)/%: $(SRC)/%.d $(QUIET)$(DMD) $(DFLAGS) -of$(ROOT)/$* $< clean: - rm -rf obj *.lst + rm -rf $(ROOT) *.lst diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index 2b4d95e8f6..a8b5c586ba 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -1,22 +1,7 @@ -# set from top makefile -OS:= -MODEL:= -DMD:= -DRUNTIME:= -DRUNTIMESO:= -QUIET:= -LINKDL:= +include ../common.mak -SRC:=src -ROOT:=./obj/$(OS)/$(MODEL) TESTS:=stderr_msg unittest_assert -ifneq (default,$(MODEL)) - MODEL_FLAG:=-m$(MODEL) -endif -CFLAGS:=$(MODEL_FLAG) -Wall -DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -L$(DRUNTIME) -defaultlib= -debuglib= - .PHONY: all clean all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) @@ -40,4 +25,4 @@ $(ROOT)/%: $(SRC)/%.d $(QUIET)$(DMD) $(DFLAGS) -of$@ $< clean: - rm -rf obj + rm -rf $(ROOT) diff --git a/test/init_fini/Makefile b/test/init_fini/Makefile index 06a227feb6..b987187fc6 100644 --- a/test/init_fini/Makefile +++ b/test/init_fini/Makefile @@ -1,22 +1,7 @@ -# set from top makefile -OS:= -MODEL:= -DMD:= -DRUNTIME:= -DRUNTIMESO:= -QUIET:= -LINKDL:= +include ../common.mak -SRC:=src -ROOT:=./obj/$(OS)/$(MODEL) TESTS:=thread_join runtime_args -ifneq (default,$(MODEL)) - MODEL_FLAG:=-m$(MODEL) -endif -CFLAGS:=$(MODEL_FLAG) -Wall -DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -L$(DRUNTIME) -defaultlib= -debuglib= - .PHONY: all clean all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) @@ -29,4 +14,4 @@ $(ROOT)/%: $(SRC)/%.d $(QUIET)$(DMD) $(DFLAGS) -of$@ $< clean: - rm -rf obj + rm -rf $(ROOT) diff --git a/test/shared/Makefile b/test/shared/Makefile index ea635f6805..f25dd809a7 100644 --- a/test/shared/Makefile +++ b/test/shared/Makefile @@ -1,24 +1,10 @@ -# set from top makefile -OS:= -MODEL:= -DMD:= -DRUNTIME:= -DRUNTIMESO:= -QUIET:= -LINKDL:= # -L-ldl -LDL:=$(subst -L,,$(LINKDL)) # -ldl - -SRC:=src -ROOT:=./obj/$(OS)/$(MODEL) +LINK_SHARED:=1 + +include ../common.mak + TESTS:=link load linkD linkDR loadDR host finalize TESTS+=link_linkdep load_linkdep link_loaddep load_loaddep load_13414 -ifneq (default,$(MODEL)) - MODEL_FLAG:=-m$(MODEL) -endif -CFLAGS:=$(MODEL_FLAG) -Wall -DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -L$(DRUNTIMESO) -defaultlib= -debuglib= - .PHONY: all clean all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) @@ -72,4 +58,4 @@ $(ROOT)/%.so: $(SRC)/%.d $(DRUNTIMESO) $(QUIET)$(DMD) -fPIC -shared $(DFLAGS) -of$@ $< $(LINKDL) clean: - rm -rf obj + rm -rf $(ROOT) From 8ad2d2866517ecc3af12a6127239d682bac0dcf1 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 7 Jul 2015 11:50:11 +0200 Subject: [PATCH 020/768] replace `dirname $@` with make's $(dir $@) - saves an external shell invocation --- posix.mak | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/posix.mak b/posix.mak index 418c120a88..328109d839 100644 --- a/posix.mak +++ b/posix.mak @@ -132,7 +132,7 @@ $(DOCDIR)/core_sync_%.html : src/core/sync/%.d import: $(IMPORTS) $(IMPDIR)/core/sync/%.di : src/core/sync/%.d - @mkdir -p `dirname $@` + @mkdir -p $(dir $@) $(DMD) -conf= -c -o- -Isrc -Iimport -Hf$@ $< ######################## Header .di file copy ############################## @@ -140,30 +140,30 @@ $(IMPDIR)/core/sync/%.di : src/core/sync/%.d copy: $(COPY) $(IMPDIR)/object.d : src/object.d - @mkdir -p `dirname $@` + @mkdir -p $(dir $@) @rm -f $(IMPDIR)/object.di cp $< $@ $(IMPDIR)/%.di : src/%.di - @mkdir -p `dirname $@` + @mkdir -p $(dir $@) cp $< $@ $(IMPDIR)/%.d : src/%.d - @mkdir -p `dirname $@` + @mkdir -p $(dir $@) cp $< $@ ################### C/ASM Targets ############################ $(ROOT)/%.o : src/rt/%.c - @mkdir -p `dirname $@` + @mkdir -p $(dir $@) $(CC) -c $(CFLAGS) $< -o$@ $(ROOT)/errno_c.o : src/core/stdc/errno.c - @mkdir -p `dirname $@` + @mkdir -p $(dir $@) $(CC) -c $(CFLAGS) $< -o$@ $(ROOT)/threadasm.o : src/core/threadasm.S - @mkdir -p $(OBJDIR) + @mkdir -p $(dir $@) $(CC) -c $(CFLAGS) $< -o$@ ######################## Create a shared library ############################## From 04bcc29bafdc836b05d15bf43dfea8300d803a07 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 7 Jul 2015 11:46:32 +0200 Subject: [PATCH 021/768] add missing additional tests for $(DRUNTIME) dependency --- posix.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posix.mak b/posix.mak index 328109d839..e2502d8e01 100644 --- a/posix.mak +++ b/posix.mak @@ -241,7 +241,7 @@ $(ROOT)/unittest/% : $(ROOT)/unittest/test_runner # succeeded, render the file new again @touch $@ -test/init_fini/.run test/exceptions/.run: $(DRUNTIME) +$(addsuffix /.run,$(filter-out test/shared,$(ADDITIONAL_TESTS))): $(DRUNTIME) test/shared/.run: $(DRUNTIMESO) test/%/.run: test/%/Makefile From 6e4ef29936874afa43557dbf8900e83934a4c1b0 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 7 Jul 2015 12:13:18 +0200 Subject: [PATCH 022/768] remove faulty install rule - druntime libraries get embedded into phobos and shouldn't be installed separately --- posix.mak | 3 --- 1 file changed, 3 deletions(-) diff --git a/posix.mak b/posix.mak index e2502d8e01..94c340b949 100644 --- a/posix.mak +++ b/posix.mak @@ -273,9 +273,6 @@ druntime.zip: $(MANIFEST) $(IMPORTS) install: target mkdir -p $(INSTALL_DIR)/src/druntime/import cp -r import/* $(INSTALL_DIR)/src/druntime/import/ - $(eval lib_dir=$(if $(filter $(OS),osx), lib, lib$(MODEL))) - mkdir -p $(INSTALL_DIR)/$(OS)/$(lib_dir) - cp -r lib/* $(INSTALL_DIR)/$(OS)/$(lib_dir)/ cp LICENSE $(INSTALL_DIR)/druntime-LICENSE.txt clean: $(addsuffix /.clean,$(ADDITIONAL_TESTS)) From dca19637bb38d95b899413f68beb66724f2b9aad Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 7 Jul 2015 16:11:15 -0700 Subject: [PATCH 023/768] core.memory add user notes --- src/core/memory.d | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/core/memory.d b/src/core/memory.d index 194fcb0069..73e0ca2d02 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -7,6 +7,34 @@ * Using this module is not necessary in typical D code. It is mostly * useful when doing low-level _memory management. * + * Notes_to_users: + * + $(OL + $(LI The GC is a conservative mark-and-sweep collector. It only runs a + collection cycle when an allocation is requested of it, never + otherwise. Hence, if the program is not doing allocations, + there will be no GC collection pauses. The pauses occur because + all threads the GC knows about are halted so the threads' stacks + and registers can be scanned for references to GC allocated data. + ) + $(LI If there are threads that the GC does not know about, i.e. the threads + were created by calling the operating system thread creation APIs + directly, or the C runtime thread creation APIs directly, and those + threads hold references to GC allocated data, then the GC will not detect + those references and may free the data. This will cause memory corruption. + There are several ways to resolve this issue: + $(OL + $(LI Do not hold references to GC allocated data in such threads.) + $(LI Register/unregister such data with calls to $(LREF addRoot)/$(LREF removeRoot) and + $(LREF addRange)/$(LREF removeRange).) + $(LI Maintain another reference to that same data in another thread that the + GC does know about.) + $(LI Disable GC collection cycles while that thread is active with $(LREF disable)/$(LREF enable).) + $(LI Register the thread with the GC using $(CXREF thread, thread_attachThis)/$(CXREF thread, thread_detachThis).) + ) + ) + ) + * * Notes_to_implementors: * $(UL * $(LI On POSIX systems, the signals SIGUSR1 and SIGUSR2 are reserved @@ -67,17 +95,12 @@ * happens and there is insufficient _memory available.) * ) * - * Copyright: Copyright Sean Kelly 2005 - 2009. + * Copyright: Copyright Sean Kelly 2005 - 2015. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Authors: Sean Kelly, Alex Rønne Petersen * Source: $(DRUNTIMESRC core/_memory.d) */ -/* Copyright Sean Kelly 2005 - 2009. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module core.memory; From da8e918f242eb4be7c2ccc5441baa713047b16cc Mon Sep 17 00:00:00 2001 From: Jacob Carlborg Date: Mon, 12 Jan 2015 21:22:12 +0100 Subject: [PATCH 024/768] Add UDA for specifying selector for Objective-C methods. --- mak/COPY | 1 + mak/DOCS | 1 + mak/MANIFEST | 1 + mak/SRCS | 1 + src/core/attribute.d | 57 ++++++++++++++++++++++++++++++++++++++++++++ src/object.d | 2 ++ win32.mak | 6 +++++ win64.mak | 6 +++++ 8 files changed, 75 insertions(+) create mode 100644 src/core/attribute.d diff --git a/mak/COPY b/mak/COPY index 3b5267b423..cb6341642c 100644 --- a/mak/COPY +++ b/mak/COPY @@ -1,6 +1,7 @@ COPY=\ $(IMPDIR)\object.d \ $(IMPDIR)\core\atomic.d \ + $(IMPDIR)\core\attribute.d \ $(IMPDIR)\core\bitop.d \ $(IMPDIR)\core\checkedint.d \ $(IMPDIR)\core\cpuid.d \ diff --git a/mak/DOCS b/mak/DOCS index 495a68e519..bb26c32b3b 100644 --- a/mak/DOCS +++ b/mak/DOCS @@ -1,6 +1,7 @@ DOCS=\ $(DOCDIR)\object.html \ $(DOCDIR)\core_atomic.html \ + $(DOCDIR)\core_attribute.html \ $(DOCDIR)\core_bitop.html \ $(DOCDIR)\core_checkedint.html \ $(DOCDIR)\core_cpuid.html \ diff --git a/mak/MANIFEST b/mak/MANIFEST index bf1d5928a0..6248612688 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -18,6 +18,7 @@ MANIFEST=\ src\test_runner.d \ \ src\core\atomic.d \ + src\core\attribute.d \ src\core\bitop.d \ src\core\checkedint.d \ src\core\cpuid.d \ diff --git a/mak/SRCS b/mak/SRCS index 3d8b72b547..834c094ec4 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -2,6 +2,7 @@ SRCS=\ src\object.d \ \ src\core\atomic.d \ + src\core\attribute.d \ src\core\bitop.d \ src\core\checkedint.d \ src\core\cpuid.d \ diff --git a/src/core/attribute.d b/src/core/attribute.d new file mode 100644 index 0000000000..9d350d8e10 --- /dev/null +++ b/src/core/attribute.d @@ -0,0 +1,57 @@ +/** + * This module contains UDA's (User Defined Attributes) either used in + * the runtime or special UDA's recognized by compiler. + * + * Copyright: Copyright Jacob Carlborg 2015. + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Authors: Jacob Carlborg + * Source: $(DRUNTIMESRC core/_attribute.d) + */ + +/* Copyright Jacob Carlborg 2015. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.attribute; + +/** + * Use this attribute to attach an Objective-C selector to a method. + * + * This is a special compiler recognized attribute, it has several + * requirements, which all will be enforced by the compiler: + * + * $(UL + * $(LI + * The attribute can only be attached to methods or constructors which + * have Objective-C linkage. That is, a method or a constructor in a + * class or interface declared as $(D_CODE extern(Objective-C)). + * ), + * + * $(LI It cannot be attached to a method or constructor that is a template), + * + * $(LI + * The number of colons in the string need to match the number of + * arguments the method accept. + * ), + * + * $(LI It can only be used once in a method declaration) + * ) + * + * Examples: + * --- + * extern (Objective-C) + * class NSObject + * { + * this() @selector("init"); + * static NSObject alloc() @selector("alloc"); + * NSObject initWithUTF8String(in char* str) @selector("initWithUTF8String:"); + * ObjcObject copyScriptingValue(ObjcObject value, NSString key, NSDictionary properties) + * @selector("copyScriptingValue:forKey:withProperties:"); + * } + * --- + */ +version (D_ObjectiveC) struct selector +{ + string selector; +} diff --git a/src/object.d b/src/object.d index 781ddaacb0..114e34c96b 100644 --- a/src/object.d +++ b/src/object.d @@ -49,6 +49,8 @@ alias immutable(char)[] string; alias immutable(wchar)[] wstring; alias immutable(dchar)[] dstring; +version (D_ObjectiveC) public import core.attribute : selector; + /** * All D class objects inherit from Object. */ diff --git a/win32.mak b/win32.mak index b19963395a..f3da287b04 100644 --- a/win32.mak +++ b/win32.mak @@ -47,6 +47,9 @@ $(DOCDIR)\object.html : src\object.d $(DOCDIR)\core_atomic.html : src\core\atomic.d $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** +$(DOCDIR)\core_attribute.html : src\core\attribute.d + $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** + $(DOCDIR)\core_bitop.html : src\core\bitop.d $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** @@ -214,6 +217,9 @@ $(IMPDIR)\object.d : src\object.d $(IMPDIR)\core\atomic.d : src\core\atomic.d copy $** $@ +$(IMPDIR)\core\attribute.d : src\core\attribute.d + copy $** $@ + $(IMPDIR)\core\bitop.d : src\core\bitop.d copy $** $@ diff --git a/win64.mak b/win64.mak index e324a16197..2cc3404aa3 100644 --- a/win64.mak +++ b/win64.mak @@ -56,6 +56,9 @@ $(DOCDIR)\object.html : src\object.d $(DOCDIR)\core_atomic.html : src\core\atomic.d $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** +$(DOCDIR)\core_attribute.html : src\core\attribute.d + $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** + $(DOCDIR)\core_bitop.html : src\core\bitop.d $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** @@ -224,6 +227,9 @@ $(IMPDIR)\object.d : src\object.d $(IMPDIR)\core\atomic.d : src\core\atomic.d copy $** $@ +$(IMPDIR)\core\attribute.d : src\core\attribute.d + copy $** $@ + $(IMPDIR)\core\bitop.d : src\core\bitop.d copy $** $@ From 81bdde2924ffcb036e0445b0a321cd9ed3b81f51 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Thu, 9 Jul 2015 17:51:14 -0700 Subject: [PATCH 025/768] Disable debug build of unit tests. The shared library unit tests are currently failing on FreeBSD when they're built in debug mode, so this disables the recently added debug unit test build so that the autotester passes again. The debug unit test build should be re-enabled once the problem with FreeBSD is fixed. --- posix.mak | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/posix.mak b/posix.mak index 94c340b949..aeeb557b15 100644 --- a/posix.mak +++ b/posix.mak @@ -196,7 +196,9 @@ ifeq (1,$(BUILD_WAS_SPECIFIED)) unittest : $(UT_MODULES) $(addsuffix /.run,$(ADDITIONAL_TESTS)) @echo done else -unittest : unittest-debug unittest-release +# The unit tests currently fail on FreeBSD in debug mode +#unittest : unittest-debug unittest-release +unittest : unittest-release unittest-%: $(MAKE) -f $(MAKEFILE) unittest OS=$(OS) MODEL=$(MODEL) DMD=$(DMD) BUILD=$* endif From e221846700c5191518dbbabb6956916522f96c72 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Thu, 9 Jul 2015 09:16:08 +0200 Subject: [PATCH 026/768] Make use of invalid MemoryOrder semantics a compile-time error --- src/core/atomic.d | 66 +++++++++++++++++------------------------------ 1 file changed, 23 insertions(+), 43 deletions(-) diff --git a/src/core/atomic.d b/src/core/atomic.d index 564ca3028f..6d4b42652b 100644 --- a/src/core/atomic.d +++ b/src/core/atomic.d @@ -105,7 +105,8 @@ version( CoreDdoc ) /** * Loads 'val' from memory and returns it. The memory barrier specified * by 'ms' is applied to the operation, which is fully sequenced by - * default. + * default. Valid memory orders are MemoryOrder.raw, MemoryOrder.acq, + * and MemoryOrder.seq. * * Params: * val = The target variable. @@ -122,6 +123,8 @@ version( CoreDdoc ) /** * Writes 'newval' into 'val'. The memory barrier specified by 'ms' is * applied to the operation, which is fully sequenced by default. + * Valid memory orders are MemoryOrder.raw, MemoryOrder.rel, and + * MemoryOrder.seq. * * Params: * val = The target variable. @@ -371,26 +374,11 @@ else version( AsmX86_32 ) private { - template isHoistOp(MemoryOrder ms) - { - enum bool isHoistOp = ms == MemoryOrder.acq || - ms == MemoryOrder.seq; - } - - - template isSinkOp(MemoryOrder ms) - { - enum bool isSinkOp = ms == MemoryOrder.rel || - ms == MemoryOrder.seq; - } - - // NOTE: x86 loads implicitly have acquire semantics so a memory // barrier is only necessary on releases. template needsLoadBarrier( MemoryOrder ms ) { - enum bool needsLoadBarrier = ms == MemoryOrder.seq || - isSinkOp!(ms); + enum bool needsLoadBarrier = ms == MemoryOrder.seq; } @@ -398,8 +386,7 @@ else version( AsmX86_32 ) // barrier is only necessary on acquires. template needsStoreBarrier( MemoryOrder ms ) { - enum bool needsStoreBarrier = ms == MemoryOrder.seq || - isHoistOp!(ms); + enum bool needsStoreBarrier = ms == MemoryOrder.seq; } } @@ -407,11 +394,10 @@ else version( AsmX86_32 ) HeadUnshared!(T) atomicLoad(MemoryOrder ms = MemoryOrder.seq, T)( ref const shared T val ) pure nothrow @nogc if(!__traits(isFloating, T)) { - static if (!__traits(isPOD, T)) - { - static assert( false, "argument to atomicLoad() must be POD" ); - } - else static if( T.sizeof == byte.sizeof ) + static assert( ms != MemoryOrder.rel, "invalid MemoryOrder for atomicLoad()" ); + static assert( __traits(isPOD, T), "argument to atomicLoad() must be POD" ); + + static if( T.sizeof == byte.sizeof ) { ////////////////////////////////////////////////////////////////// // 1 Byte Load @@ -519,6 +505,9 @@ else version( AsmX86_32 ) void atomicStore(MemoryOrder ms = MemoryOrder.seq, T, V1)( ref shared T val, V1 newval ) pure nothrow @nogc if( __traits( compiles, { val = newval; } ) ) { + static assert( ms != MemoryOrder.acq, "invalid MemoryOrder for atomicStore()" ); + static assert( __traits(isPOD, T), "argument to atomicStore() must be POD" ); + static if( T.sizeof == byte.sizeof ) { ////////////////////////////////////////////////////////////////// @@ -932,26 +921,11 @@ else version( AsmX86_64 ) private { - template isHoistOp(MemoryOrder ms) - { - enum bool isHoistOp = ms == MemoryOrder.acq || - ms == MemoryOrder.seq; - } - - - template isSinkOp(MemoryOrder ms) - { - enum bool isSinkOp = ms == MemoryOrder.rel || - ms == MemoryOrder.seq; - } - - // NOTE: x86 loads implicitly have acquire semantics so a memory // barrier is only necessary on releases. template needsLoadBarrier( MemoryOrder ms ) { - enum bool needsLoadBarrier = ms == MemoryOrder.seq || - isSinkOp!(ms); + enum bool needsLoadBarrier = ms == MemoryOrder.seq; } @@ -959,14 +933,17 @@ else version( AsmX86_64 ) // barrier is only necessary on acquires. template needsStoreBarrier( MemoryOrder ms ) { - enum bool needsStoreBarrier = ms == MemoryOrder.seq || - isHoistOp!(ms); + enum bool needsStoreBarrier = ms == MemoryOrder.seq; } } HeadUnshared!(T) atomicLoad(MemoryOrder ms = MemoryOrder.seq, T)( ref const shared T val ) pure nothrow @nogc - if(!__traits(isFloating, T)) { + if(!__traits(isFloating, T)) + { + static assert( ms != MemoryOrder.rel, "invalid MemoryOrder for atomicLoad()" ); + static assert( __traits(isPOD, T), "argument to atomicLoad() must be POD" ); + static if( T.sizeof == byte.sizeof ) { ////////////////////////////////////////////////////////////////// @@ -1123,6 +1100,9 @@ else version( AsmX86_64 ) void atomicStore(MemoryOrder ms = MemoryOrder.seq, T, V1)( ref shared T val, V1 newval ) pure nothrow @nogc if( __traits( compiles, { val = newval; } ) ) { + static assert( ms != MemoryOrder.acq, "invalid MemoryOrder for atomicStore()" ); + static assert( __traits(isPOD, T), "argument to atomicStore() must be POD" ); + static if( T.sizeof == byte.sizeof ) { ////////////////////////////////////////////////////////////////// From 28e3bb192f76de535ad8bc430667567584affc05 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 9 Jul 2015 18:03:40 -0700 Subject: [PATCH 027/768] fix Issue 14750 - druntime/test/coverage was added to druntime, but not to the MANIFEST - zip file broken again --- mak/MANIFEST | 35 ++++++++++++++++++++++++++++++++++- posix.mak | 8 ++++++-- win32.mak | 4 ++-- win64.mak | 2 +- 4 files changed, 43 insertions(+), 6 deletions(-) diff --git a/mak/MANIFEST b/mak/MANIFEST index bf1d5928a0..c59e31c38c 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -291,4 +291,37 @@ MANIFEST=\ src\rt\typeinfo\ti_void.d \ src\rt\typeinfo\ti_wchar.d \ \ - src\etc\linux\memoryerror.d + src\etc\linux\memoryerror.d \ + \ + test\coverage\Makefile \ + test\coverage\src-basic.lst.exp \ + test\coverage\src-merge.lst.exp \ + test\coverage\src-merge_true.lst.exp \ + test\coverage\src\basic.d \ + test\coverage\src\merge.d \ + test\coverage\src\merge_true.d \ + test\exceptions\Makefile \ + test\exceptions\src\stderr_msg.d \ + test\exceptions\src\unittest_assert.d \ + test\init_fini\Makefile \ + test\init_fini\src\runtime_args.d \ + test\init_fini\src\thread_join.d \ + test\shared\Makefile \ + test\shared\src\finalize.d \ + test\shared\src\host.c \ + test\shared\src\lib.d \ + test\shared\src\lib_13414.d \ + test\shared\src\liblinkdep.d \ + test\shared\src\libloaddep.d \ + test\shared\src\link.d \ + test\shared\src\linkD.c \ + test\shared\src\linkDR.c \ + test\shared\src\link_linkdep.d \ + test\shared\src\link_loaddep.d \ + test\shared\src\load.d \ + test\shared\src\loadDR.c \ + test\shared\src\load_13414.d \ + test\shared\src\load_linkdep.d \ + test\shared\src\load_loaddep.d \ + test\shared\src\plugin.d + diff --git a/posix.mak b/posix.mak index 762aa3756d..12da8e1104 100644 --- a/posix.mak +++ b/posix.mak @@ -207,7 +207,7 @@ test/%/.run: test/%/Makefile DRUNTIME=$(abspath $(DRUNTIME)) DRUNTIMESO=$(abspath $(DRUNTIMESO)) QUIET=$(QUIET) LINKDL=$(LINKDL) #################### test for undesired white spaces ########################## -CWS_MAKEFILES = $(filter mak/% %.mak,$(MANIFEST)) +CWS_MAKEFILES = $(filter mak/% %.mak %/Makefile,$(MANIFEST)) NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES),$(MANIFEST)) GREP = grep @@ -222,9 +222,13 @@ detab: detab $(MANIFEST) tolf $(MANIFEST) + +gitzip: + git archive --format=zip HEAD > druntime.zip + zip: druntime.zip -druntime.zip: $(MANIFEST) $(IMPORTS) +druntime.zip: $(MANIFEST) rm -rf $@ zip $@ $^ diff --git a/win32.mak b/win32.mak index b19963395a..7fa65e9282 100644 --- a/win32.mak +++ b/win32.mak @@ -655,9 +655,9 @@ unittest : $(SRCS) $(DRUNTIME) zip: druntime.zip -druntime.zip: import +druntime.zip: del druntime.zip - zip32 -T -ur druntime $(MANIFEST) $(IMPDIR) src\rt\minit.obj + zip32 -T -ur druntime $(MANIFEST) src\rt\minit.obj install: druntime.zip unzip -o druntime.zip -d \dmd2\src\druntime diff --git a/win64.mak b/win64.mak index e324a16197..2c951a2a99 100644 --- a/win64.mak +++ b/win64.mak @@ -681,7 +681,7 @@ zip: druntime.zip druntime.zip: import del druntime.zip - zip32 -T -ur druntime $(MANIFEST) $(IMPDIR) src\rt\minit.obj + zip32 -T -ur druntime $(MANIFEST) src\rt\minit.obj install: druntime.zip unzip -o druntime.zip -d \dmd2\src\druntime From 86cc2563e64fcb41d7e82fd5465272a9653130db Mon Sep 17 00:00:00 2001 From: Tomer Filiba Date: Tue, 16 Jun 2015 13:22:29 +0300 Subject: [PATCH 028/768] Fix epoll_event alignment (issue 14702) --- src/core/sys/linux/epoll.d | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/sys/linux/epoll.d b/src/core/sys/linux/epoll.d index e7a7040330..7b31c8dab9 100644 --- a/src/core/sys/linux/epoll.d +++ b/src/core/sys/linux/epoll.d @@ -45,12 +45,12 @@ enum EPOLL_CTL_MOD = 3, // Change file descriptor epoll_event structure. } -struct epoll_event +align(1) struct epoll_event { - align(1): - uint events; - epoll_data_t data; -}; +align(1): + uint events; + epoll_data_t data; +} union epoll_data_t { @@ -58,7 +58,7 @@ union epoll_data_t int fd; uint u32; ulong u64; -}; +} int epoll_create (int size); int epoll_create1 (int flags); From d2263a9f2ad6daf2887a83da4faeb72b4806b9e8 Mon Sep 17 00:00:00 2001 From: k-hara Date: Sat, 18 Jul 2015 14:06:05 +0900 Subject: [PATCH 029/768] clean code style --- src/rt/cast_.d | 47 ++++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/src/rt/cast_.d b/src/rt/cast_.d index 30ad1943be..4e38c29fa3 100644 --- a/src/rt/cast_.d +++ b/src/rt/cast_.d @@ -22,10 +22,9 @@ extern (C): * If it is null, return null. * Else, undefined crash */ - Object _d_toObject(void* p) { - if(!p) + if (!p) return null; Object o = cast(Object) p; @@ -36,7 +35,7 @@ Object _d_toObject(void* p) * so we rely on pointers never being less than 64K, * and Objects never being greater. */ - if(pi.offset < 0x10000) + if (pi.offset < 0x10000) { debug(cast_) printf("\tpi.offset = %d\n", pi.offset); return cast(Object)(p - pi.offset); @@ -44,16 +43,14 @@ Object _d_toObject(void* p) return o; } - /************************************* * Attempts to cast Object o to class c. * Returns o if successful, null if not. */ - void* _d_interface_cast(void* p, ClassInfo c) { debug(cast_) printf("_d_interface_cast(p = %p, c = '%.*s')\n", p, c.name); - if(!p) + if (!p) return null; Interface* pi = **cast(Interface***) p; @@ -68,7 +65,7 @@ void* _d_dynamic_cast(Object o, ClassInfo c) void* res = null; size_t offset = 0; - if(o && _d_isbaseof2(typeid(o), c, offset)) + if (o && _d_isbaseof2(typeid(o), c, offset)) { debug(cast_) printf("\toffset = %d\n", offset); res = cast(void*) o + offset; @@ -79,26 +76,26 @@ void* _d_dynamic_cast(Object o, ClassInfo c) int _d_isbaseof2(ClassInfo oc, ClassInfo c, ref size_t offset) { - if(oc is c) + if (oc is c) return true; do { - if(oc.base is c) + if (oc.base is c) return true; - foreach(iface; oc.interfaces) + foreach (iface; oc.interfaces) { - if(iface.classinfo is c) + if (iface.classinfo is c) { offset = iface.offset; return true; } } - foreach(iface; oc.interfaces) + foreach (iface; oc.interfaces) { - if(_d_isbaseof2(iface.classinfo, c, offset)) + if (_d_isbaseof2(iface.classinfo, c, offset)) { offset = iface.offset; return true; @@ -106,29 +103,29 @@ int _d_isbaseof2(ClassInfo oc, ClassInfo c, ref size_t offset) } oc = oc.base; - } - while(oc); + } while(oc); return false; } int _d_isbaseof(ClassInfo oc, ClassInfo c) { - if(oc is c) + if (oc is c) return true; do { - if(oc.base is c) + if (oc.base is c) return true; - foreach(iface; oc.interfaces) - if(iface.classinfo is c || _d_isbaseof(iface.classinfo, c)) + foreach (iface; oc.interfaces) + { + if (iface.classinfo is c || _d_isbaseof(iface.classinfo, c)) return true; + } oc = oc.base; - } - while(oc); + } while(oc); return false; } @@ -136,16 +133,16 @@ int _d_isbaseof(ClassInfo oc, ClassInfo c) /********************************* * Find the vtbl[] associated with Interface ic. */ - void* _d_interface_vtbl(ClassInfo ic, Object o) { debug(cast_) printf("__d_interface_vtbl(o = %p, ic = %p)\n", o, ic); assert(o); - foreach(iface; typeid(o).interfaces) - if(iface.classinfo is ic) + foreach (iface; typeid(o).interfaces) + { + if (iface.classinfo is ic) return cast(void*) iface.vtbl; - + } assert(0); } From c83a79c25dcf061ccbd4a86dfbbdf53c6e70c83c Mon Sep 17 00:00:00 2001 From: k-hara Date: Sat, 18 Jul 2015 14:25:21 +0900 Subject: [PATCH 030/768] Issue 2013 - interface to interface dynamic cast is incorrect in some cases This is a preparation fix. Until the ClassInfo.interfaces[] generation fixed, the changed code keeps existing behavior. After the compiler fix, it will return correct offset value. --- src/rt/cast_.d | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/rt/cast_.d b/src/rt/cast_.d index 4e38c29fa3..5cc1d9841f 100644 --- a/src/rt/cast_.d +++ b/src/rt/cast_.d @@ -84,11 +84,22 @@ int _d_isbaseof2(ClassInfo oc, ClassInfo c, ref size_t offset) if (oc.base is c) return true; + version(all) + { + // Bugzilla 2013: Until the ClassInfo.interfaces[] sturcture is fixed + // (it's generated by compiler), we should keep breadth-first search + // to avoid existing code breaking. + + // Before the compiler fix: + // When oc is a ClassInfo of interface type, iface.offset is always zero. + // So the offset addition has no operation. + // After the compiler fix: + // When oc is a ClassInfo of interface type, iface.offset may be nonzero. foreach (iface; oc.interfaces) { if (iface.classinfo is c) { - offset = iface.offset; + offset += iface.offset; return true; } } @@ -97,10 +108,24 @@ int _d_isbaseof2(ClassInfo oc, ClassInfo c, ref size_t offset) { if (_d_isbaseof2(iface.classinfo, c, offset)) { - offset = iface.offset; + offset += iface.offset; return true; } } + } + else + { + // Bugzilla 2013: After the compiler is actually fixed, we can simply use + // depth-first search to calculate class to base interface offset. + foreach (iface; oc.interfaces) + { + if (iface.classinfo is c || _d_isbaseof2(iface.classinfo, c, offset)) + { + offset += iface.offset; + return true; + } + } + } oc = oc.base; } while(oc); From ceffd63f0e0f59b5b249548dd1f25a90c5eebf4d Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 18 Jul 2015 15:11:20 +0200 Subject: [PATCH 031/768] implement init function for TypeInfo_Pointer, TypeInfo_AssociativeArray, TypeInfo_Function, TypeInfo_Delegate and TypeInfo_Interface --- src/object.d | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/object.d b/src/object.d index 114e34c96b..35065346da 100644 --- a/src/object.d +++ b/src/object.d @@ -398,6 +398,11 @@ class TypeInfo_Pointer : TypeInfo return (void*).sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. (void*).sizeof]; + } + override void swap(void* p1, void* p2) const { void* tmp = *cast(void**)p1; @@ -656,6 +661,11 @@ class TypeInfo_AssociativeArray : TypeInfo return (char[int]).sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. (char[int]).sizeof]; + } + override @property inout(TypeInfo) next() nothrow pure inout { return value; } override @property uint flags() nothrow pure const { return 1; } @@ -728,6 +738,11 @@ class TypeInfo_Function : TypeInfo return 0; // no size for functions } + override const(void)[] init() const @safe + { + return null; + } + TypeInfo next; string deco; } @@ -755,6 +770,11 @@ class TypeInfo_Delegate : TypeInfo return dg.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. (int delegate()).sizeof]; + } + override @property uint flags() nothrow pure const { return 1; } TypeInfo next; @@ -987,6 +1007,11 @@ class TypeInfo_Interface : TypeInfo return Object.sizeof; } + override const(void)[] init() const @trusted + { + return (cast(void *)null)[0 .. Object.sizeof]; + } + override @property uint flags() nothrow pure const { return 1; } TypeInfo_Class info; @@ -1197,6 +1222,11 @@ class TypeInfo_Tuple : TypeInfo assert(0); } + override const(void)[] init() const @trusted + { + assert(0); + } + override void swap(void* p1, void* p2) const { assert(0); From 42685fd75188a635b97e239eee7f8d3f9f898de0 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 19 Jul 2015 16:31:25 +0200 Subject: [PATCH 032/768] remove tabs and trailing white space add missing files to MANIFEST don't rely on MANIFEST for the white space test --- mak/MANIFEST | 2 + posix.mak | 5 +- src/core/sys/osx/sys/event.d | 24 +-- src/core/sys/posix/sys/msg.d | 378 +++++++++++++++++------------------ 4 files changed, 206 insertions(+), 203 deletions(-) diff --git a/mak/MANIFEST b/mak/MANIFEST index 3db9919e5b..012347fcf5 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -112,6 +112,7 @@ MANIFEST=\ src\core\sys\osx\mach\thread_act.d \ \ src\core\sys\osx\sys\cdefs.d \ + src\core\sys\osx\sys\event.d \ src\core\sys\osx\sys\mman.d \ \ src\core\sys\posix\config.d \ @@ -147,6 +148,7 @@ MANIFEST=\ src\core\sys\posix\sys\ioctl.d \ src\core\sys\posix\sys\ipc.d \ src\core\sys\posix\sys\mman.d \ + src\core\sys\posix\sys\msg.d \ src\core\sys\posix\sys\resource.d \ src\core\sys\posix\sys\select.d \ src\core\sys\posix\sys\shm.d \ diff --git a/posix.mak b/posix.mak index e7e2d35e6c..d83c2a71e5 100644 --- a/posix.mak +++ b/posix.mak @@ -251,8 +251,9 @@ test/%/.run: test/%/Makefile DRUNTIME=$(abspath $(DRUNTIME)) DRUNTIMESO=$(abspath $(DRUNTIMESO)) QUIET=$(QUIET) LINKDL=$(LINKDL) #################### test for undesired white spaces ########################## -CWS_MAKEFILES = $(filter mak/% %.mak %/Makefile,$(MANIFEST)) -NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES),$(MANIFEST)) +CWS_MANIFEST = $(shell git ls-tree --name-only -r HEAD) +CWS_MAKEFILES = $(filter mak/% %.mak %/Makefile,$(CWS_MANIFEST)) +NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES),$(CWS_MANIFEST)) GREP = grep checkwhitespace: diff --git a/src/core/sys/osx/sys/event.d b/src/core/sys/osx/sys/event.d index b8efaa2a65..cb20c4c35e 100644 --- a/src/core/sys/osx/sys/event.d +++ b/src/core/sys/osx/sys/event.d @@ -21,18 +21,18 @@ import core.sys.posix.time; // timespec enum : short { - EVFILT_READ = -1, - EVFILT_WRITE = -2, - EVFILT_AIO = -3, /* attached to aio requests */ - EVFILT_VNODE = -4, /* attached to vnodes */ - EVFILT_PROC = -5, /* attached to struct proc */ - EVFILT_SIGNAL = -6, /* attached to struct proc */ - EVFILT_TIMER = -7, /* timers */ - EVFILT_MACHPORT = -8, /* Mach portsets */ - EVFILT_FS = -9, /* filesystem events */ - EVFILT_USER = -10, /* User events */ - EVFILT_VM = -12, /* virtual memory events */ - EVFILT_SYSCOUNT = 11 + EVFILT_READ = -1, + EVFILT_WRITE = -2, + EVFILT_AIO = -3, /* attached to aio requests */ + EVFILT_VNODE = -4, /* attached to vnodes */ + EVFILT_PROC = -5, /* attached to struct proc */ + EVFILT_SIGNAL = -6, /* attached to struct proc */ + EVFILT_TIMER = -7, /* timers */ + EVFILT_MACHPORT = -8, /* Mach portsets */ + EVFILT_FS = -9, /* filesystem events */ + EVFILT_USER = -10, /* User events */ + EVFILT_VM = -12, /* virtual memory events */ + EVFILT_SYSCOUNT = 11 } extern(D) void EV_SET(kevent_t* kevp, typeof(kevent_t.tupleof) args) diff --git a/src/core/sys/posix/sys/msg.d b/src/core/sys/posix/sys/msg.d index f00303c062..c6948d4506 100644 --- a/src/core/sys/posix/sys/msg.d +++ b/src/core/sys/posix/sys/msg.d @@ -22,65 +22,65 @@ public enum MSG_EXCEPT = 2 << 12; // octal!20000 public enum MSG_COPY = 4 << 12; // octal!40000 struct msgbuf { - c_long mtype; - char mtext[1]; + c_long mtype; + char mtext[1]; }; struct msginfo { - int msgpool; - int msgmap; - int msgmax; - int msgmnb; - int msgmni; - int msgssz; - int msgtql; - ushort msgseg; + int msgpool; + int msgmap; + int msgmax; + int msgmnb; + int msgmni; + int msgssz; + int msgtql; + ushort msgseg; }; -version(Alpha) +version(Alpha) { - // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/alpha/bits/msq.h - alias c_ulong msgqnum_t; - alias c_ulong msglen_t; + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/alpha/bits/msq.h + alias c_ulong msgqnum_t; + alias c_ulong msglen_t; - struct msqid_ds - { - ipc_perm msg_perm; - time_t msg_stime; - time_t msg_rtime; - time_t msg_ctime; - c_ulong __msg_cbytes; - msgqnum_t msg_qnum; - msglen_t msg_qbytes; - pid_t msg_lspid; - pid_t msg_lrpid; - c_ulong __glibc_reserved1; - c_ulong __glibc_reserved2; - }; + struct msqid_ds + { + ipc_perm msg_perm; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; + c_ulong __msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + c_ulong __glibc_reserved1; + c_ulong __glibc_reserved2; + }; } -else version(HPPA) +else version(HPPA) { - // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/hppa/bits/msq.h - alias c_ulong msgqnum_t; - alias c_ulong msglen_t; + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/hppa/bits/msq.h + alias c_ulong msgqnum_t; + alias c_ulong msglen_t; - // Assuming word size is 32 - struct msqid_ds { - ipc_perm msg_perm; - c_ulong __pad1; - time_t msg_stime; - c_ulong __pad2; - time_t msg_rtime; - c_ulong __pad3; - time_t msg_ctime; - c_ulong __msg_cbytes; - msgqnum_t msg_qnum; - msglen_t msg_qbytes; - pid_t msg_lspid; - pid_t msg_lrpid; - c_ulong __glibc_reserved1; - c_ulong __glibc_reserved2; - }; + // Assuming word size is 32 + struct msqid_ds { + ipc_perm msg_perm; + c_ulong __pad1; + time_t msg_stime; + c_ulong __pad2; + time_t msg_rtime; + c_ulong __pad3; + time_t msg_ctime; + c_ulong __msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + c_ulong __glibc_reserved1; + c_ulong __glibc_reserved2; + }; } else version(MIPS) @@ -131,29 +131,29 @@ else version(MIPS64) c_ulong __glibc_reserved5; }; } -else version (PPC) +else version (PPC) { - // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/powerpc/bits/msq.h - alias c_ulong msgqnum_t; - alias c_ulong msglen_t; + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/powerpc/bits/msq.h + alias c_ulong msgqnum_t; + alias c_ulong msglen_t; - struct msqid_ds { - ipc_perm msg_perm; - c_ulong __glibc_reserved1; - time_t msg_stime; - c_ulong __glibc_reserved2; - time_t msg_rtime; - c_ulong __glibc_reserved3; - time_t msg_ctime; - c_ulong __msg_cbytes; - msgqnum_t msg_qnum; - msglen_t msg_qbytes; - pid_t msg_lspid; - pid_t msg_lrpid; - c_ulong __glibc_reserved4; - c_ulong __glibc_reserved5; - }; + struct msqid_ds { + ipc_perm msg_perm; + c_ulong __glibc_reserved1; + time_t msg_stime; + c_ulong __glibc_reserved2; + time_t msg_rtime; + c_ulong __glibc_reserved3; + time_t msg_ctime; + c_ulong __msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + c_ulong __glibc_reserved4; + c_ulong __glibc_reserved5; + }; } else version (PPC64) { @@ -175,142 +175,142 @@ else version (PPC64) c_ulong __glibc_reserved5; }; } -else version (S390) +else version (S390) { - // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/msq.h - alias c_ulong msgqnum_t; - alias c_ulong msglen_t; + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/msq.h + alias c_ulong msgqnum_t; + alias c_ulong msglen_t; - // Assuming wordsize != 64 - struct msqid_ds { - ipc_perm msg_perm; - c_ulong __glibc_reserved1; - time_t msg_stime; - c_ulong __glibc_reserved2; - time_t msg_rtime; - c_ulong __glibc_reserved3; - time_t msg_ctime; - c_ulong __msg_cbytes; - msgqnum_t msg_qnum; - msglen_t msg_qbytes; - pid_t msg_lspid; - pid_t msg_lrpid; - c_ulong __glibc_reserved4; - c_ulong __glibc_reserved5; - }; + // Assuming wordsize != 64 + struct msqid_ds { + ipc_perm msg_perm; + c_ulong __glibc_reserved1; + time_t msg_stime; + c_ulong __glibc_reserved2; + time_t msg_rtime; + c_ulong __glibc_reserved3; + time_t msg_ctime; + c_ulong __msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + c_ulong __glibc_reserved4; + c_ulong __glibc_reserved5; + }; } -else version (SPARC) +else version (SPARC) { - // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/msq.h - alias c_ulong msgqnum_t; - alias c_ulong msglen_t; + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/msq.h + alias c_ulong msgqnum_t; + alias c_ulong msglen_t; - // Assuming word size is 32 - struct msqid_ds { - ipc_perm msg_perm; - c_ulong __pad1; - time_t msg_stime; - c_ulong __pad2; - time_t msg_rtime; - c_ulong __pad3; - time_t msg_ctime; - c_ulong __msg_cbytes; - msgqnum_t msg_qnum; - msglen_t msg_qbytes; - pid_t msg_lspid; - pid_t msg_lrpid; - c_ulong __glibc_reserved1; - c_ulong __glibc_reserved2; - }; + // Assuming word size is 32 + struct msqid_ds { + ipc_perm msg_perm; + c_ulong __pad1; + time_t msg_stime; + c_ulong __pad2; + time_t msg_rtime; + c_ulong __pad3; + time_t msg_ctime; + c_ulong __msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + c_ulong __glibc_reserved1; + c_ulong __glibc_reserved2; + }; } -else version (X86) +else version (X86) { - // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86/bits/msq.h - alias c_ulong msgqnum_t; - alias c_ulong msglen_t; + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86/bits/msq.h + alias c_ulong msgqnum_t; + alias c_ulong msglen_t; - struct msqid_ds { - ipc_perm msg_perm; - time_t msg_stime; - time_t msg_rtime; - time_t msg_ctime; - c_ulong __msg_cbytes; - msgqnum_t msg_qnum; - msglen_t msg_qbytes; - pid_t msg_lspid; - pid_t msg_lrpid; - c_ulong __glibc_reserved4; - c_ulong __glibc_reserved5; - }; -} -else version (X86_64) + struct msqid_ds { + ipc_perm msg_perm; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; + c_ulong __msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + c_ulong __glibc_reserved4; + c_ulong __glibc_reserved5; + }; +} +else version (X86_64) { - // Can't find adequate bits.h in https://sourceware.org/git/?p=glibc.git;a=tree;f=sysdeps/unix/sysv/linux/x86_64/bits;h=cd03a84463c9393dd751d78fba19e59aad3e0bb3;hb=HEAD - // Using the same as in X86 version - alias c_ulong msgqnum_t; - alias c_ulong msglen_t; + // Can't find adequate bits.h in https://sourceware.org/git/?p=glibc.git;a=tree;f=sysdeps/unix/sysv/linux/x86_64/bits;h=cd03a84463c9393dd751d78fba19e59aad3e0bb3;hb=HEAD + // Using the same as in X86 version + alias c_ulong msgqnum_t; + alias c_ulong msglen_t; - struct msqid_ds { - ipc_perm msg_perm; - c_ulong __glibc_reserved1; - time_t msg_stime; - c_ulong __glibc_reserved2; - time_t msg_rtime; - c_ulong __glibc_reserved3; - time_t msg_ctime; - c_ulong __msg_cbytes; - msgqnum_t msg_qnum; - msglen_t msg_qbytes; - pid_t msg_lspid; - pid_t msg_lrpid; - c_ulong __glibc_reserved4; - c_ulong __glibc_reserved5; - }; -} + struct msqid_ds { + ipc_perm msg_perm; + c_ulong __glibc_reserved1; + time_t msg_stime; + c_ulong __glibc_reserved2; + time_t msg_rtime; + c_ulong __glibc_reserved3; + time_t msg_ctime; + c_ulong __msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + c_ulong __glibc_reserved4; + c_ulong __glibc_reserved5; + }; +} else version (AArch64) { - // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/generic/bits/msq.h - alias c_ulong msgqnum_t; - alias c_ulong msglen_t; + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/generic/bits/msq.h + alias c_ulong msgqnum_t; + alias c_ulong msglen_t; - struct msqid_ds { - ipc_perm msg_perm; - time_t msg_stime; - time_t msg_rtime; - time_t msg_ctime; - c_ulong __msg_cbytes; - msgqnum_t msg_qnum; - msglen_t msg_qbytes; - pid_t msg_lspid; - pid_t msg_lrpid; - c_ulong __glibc_reserved4; - c_ulong __glibc_reserved5; - }; + struct msqid_ds { + ipc_perm msg_perm; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; + c_ulong __msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + c_ulong __glibc_reserved4; + c_ulong __glibc_reserved5; + }; } -else version (ARM) +else version (ARM) { - // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/generic/bits/msq.h - alias c_ulong msgqnum_t; - alias c_ulong msglen_t; + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/generic/bits/msq.h + alias c_ulong msgqnum_t; + alias c_ulong msglen_t; - struct msqid_ds { - ipc_perm msg_perm; - c_ulong __glibc_reserved1; - time_t msg_stime; - c_ulong __glibc_reserved2; - time_t msg_rtime; - c_ulong __glibc_reserved3; - time_t msg_ctime; - c_ulong __msg_cbytes; - msgqnum_t msg_qnum; - msglen_t msg_qbytes; - pid_t msg_lspid; - pid_t msg_lrpid; - c_ulong __glibc_reserved4; - c_ulong __glibc_reserved5; - }; -} else - static assert(0, "unimplemented"); + struct msqid_ds { + ipc_perm msg_perm; + c_ulong __glibc_reserved1; + time_t msg_stime; + c_ulong __glibc_reserved2; + time_t msg_rtime; + c_ulong __glibc_reserved3; + time_t msg_ctime; + c_ulong __msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + c_ulong __glibc_reserved4; + c_ulong __glibc_reserved5; + }; +} else + static assert(0, "unimplemented"); public enum MSG_MEM_SCALE = 32; From 0853630040e51bd57f9213e03a8917fbf0bd7d05 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Mon, 20 Jul 2015 09:30:44 +0200 Subject: [PATCH 033/768] filter out minit.obj --- posix.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posix.mak b/posix.mak index d83c2a71e5..587eab0541 100644 --- a/posix.mak +++ b/posix.mak @@ -253,7 +253,7 @@ test/%/.run: test/%/Makefile #################### test for undesired white spaces ########################## CWS_MANIFEST = $(shell git ls-tree --name-only -r HEAD) CWS_MAKEFILES = $(filter mak/% %.mak %/Makefile,$(CWS_MANIFEST)) -NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES),$(CWS_MANIFEST)) +NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES) src/rt/minit.obj,$(CWS_MANIFEST)) GREP = grep checkwhitespace: From 60d05732370bb0d649824f3240e28d1fa9bfbe3c Mon Sep 17 00:00:00 2001 From: k-hara Date: Mon, 20 Jul 2015 23:28:01 +0900 Subject: [PATCH 034/768] Post-processing for Issue 2013 - Remove temporary branch till the compiler migration --- src/rt/cast_.d | 36 ++---------------------------------- 1 file changed, 2 insertions(+), 34 deletions(-) diff --git a/src/rt/cast_.d b/src/rt/cast_.d index 5cc1d9841f..158c045329 100644 --- a/src/rt/cast_.d +++ b/src/rt/cast_.d @@ -84,39 +84,8 @@ int _d_isbaseof2(ClassInfo oc, ClassInfo c, ref size_t offset) if (oc.base is c) return true; - version(all) - { - // Bugzilla 2013: Until the ClassInfo.interfaces[] sturcture is fixed - // (it's generated by compiler), we should keep breadth-first search - // to avoid existing code breaking. - - // Before the compiler fix: - // When oc is a ClassInfo of interface type, iface.offset is always zero. - // So the offset addition has no operation. - // After the compiler fix: - // When oc is a ClassInfo of interface type, iface.offset may be nonzero. - foreach (iface; oc.interfaces) - { - if (iface.classinfo is c) - { - offset += iface.offset; - return true; - } - } - - foreach (iface; oc.interfaces) - { - if (_d_isbaseof2(iface.classinfo, c, offset)) - { - offset += iface.offset; - return true; - } - } - } - else - { - // Bugzilla 2013: After the compiler is actually fixed, we can simply use - // depth-first search to calculate class to base interface offset. + // Bugzilla 2013: Use depth-first search to calculate offset + // from the derived (oc) to the base (c). foreach (iface; oc.interfaces) { if (iface.classinfo is c || _d_isbaseof2(iface.classinfo, c, offset)) @@ -125,7 +94,6 @@ int _d_isbaseof2(ClassInfo oc, ClassInfo c, ref size_t offset) return true; } } - } oc = oc.base; } while(oc); From 66affadf91ed6d85cf77d1a6a34795b0d83356ad Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 23 Jul 2015 14:12:46 +0200 Subject: [PATCH 035/768] reduce excessive unittests and template bloat - check const conversions once, instead of repeating this for every operation - using a const value guarantees that the method can be called for mutable and immutable values as well - 15% compile time and 10% binary size of unittest library --- src/core/time.d | 255 +++++++++++++++++------------------------------- 1 file changed, 92 insertions(+), 163 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index 27bea61e79..1cd944ffb8 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -2249,6 +2249,16 @@ struct MonoTimeImpl(ClockType clockType) else static assert(0, "Unsupported platform"); + // POD value, test mutable/const/immutable conversion + unittest + { + MonoTimeImpl m; + const MonoTimeImpl cm = m; + immutable MonoTimeImpl im = m; + m = cm; + m = im; + } + /++ The current time of the system's monotonic clock. This has no relation to the wall clock time, as the wall clock time can be adjusted (e.g. @@ -2348,42 +2358,23 @@ struct MonoTimeImpl(ClockType clockType) unittest { - foreach(T; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) - { - foreach(U; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) - { - T t = MonoTimeImpl.currTime; - U u = t; - assert(t == u); - assert(copy(t) == u); - assert(t == copy(u)); - } - } + const t = MonoTimeImpl.currTime; + assert(t == copy(t)); + } - foreach(T; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) - { - foreach(U; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) - { - T before = MonoTimeImpl.currTime; - auto after = U(before._ticks + 42); - assert(before < after); - assert(before <= before); - assert(after > before); - assert(after >= after); - - assert(copy(before) < after); - assert(copy(before) <= before); - assert(copy(after) > before); - assert(copy(after) >= after); - - assert(before < copy(after)); - assert(before <= copy(before)); - assert(after > copy(before)); - assert(after >= copy(after)); - } - } + unittest + { + const before = MonoTimeImpl.currTime; + auto after = MonoTimeImpl(before._ticks + 42); + assert(before < after); + assert(copy(before) <= before); + assert(copy(after) > before); + assert(after >= copy(after)); + } - immutable currTime = MonoTimeImpl.currTime; + unittest + { + const currTime = MonoTimeImpl.currTime; assert(MonoTimeImpl(long.max) > MonoTimeImpl(0)); assert(MonoTimeImpl(0) > MonoTimeImpl(long.min)); assert(MonoTimeImpl(long.max) > currTime); @@ -2437,46 +2428,28 @@ assert(before + timeElapsed == after). unittest { - foreach(T; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) - { - foreach(U; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) - { - T t = MonoTimeImpl.currTime; - U u = t; - assert(u - t == Duration.zero); - assert(copy(t) - u == Duration.zero); - assert(t - copy(u) == Duration.zero); - } - } + const t = MonoTimeImpl.currTime; + assert(t - copy(t) == Duration.zero); + static assert(!__traits(compiles, t + t)); + } - foreach(T; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) + unittest + { + static void test(in MonoTimeImpl before, in MonoTimeImpl after, in Duration min) { - foreach(U; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) - { - static void test()(T before, U after, Duration min, size_t line = __LINE__) @trusted - { - immutable diff = after - before; - scope(failure) - { - printf("%s %s %s\n", - numToStringz(before._ticks), - numToStringz(after._ticks), - (diff.toString() ~ "\0").ptr); - } - if(diff >= min) {} else throw new AssertError("unittest failure 1", __FILE__, line); - auto calcAfter = before + diff; - assertApprox(calcAfter, calcAfter - Duration(1), calcAfter + Duration(1)); - if(before - after == -diff) {} else throw new AssertError("unittest failure 2", __FILE__, line); - } + immutable diff = after - before; + assert(diff >= min); + auto calcAfter = before + diff; + assertApprox(calcAfter, calcAfter - Duration(1), calcAfter + Duration(1)); + assert(before - after == -diff); + } - T before = MonoTimeImpl.currTime; - test(before, MonoTimeImpl(before._ticks + 4202), Duration.zero); - test(before, MonoTimeImpl.currTime, Duration.zero); + const before = MonoTimeImpl.currTime; + test(before, MonoTimeImpl(before._ticks + 4202), Duration.zero); + test(before, MonoTimeImpl.currTime, Duration.zero); - auto durLargerUnits = dur!"minutes"(7) + dur!"seconds"(22); - test(before, before + durLargerUnits + dur!"msecs"(33) + dur!"hnsecs"(571), durLargerUnits); - } - } + const durLargerUnits = dur!"minutes"(7) + dur!"seconds"(22); + test(before, before + durLargerUnits + dur!"msecs"(33) + dur!"hnsecs"(571), durLargerUnits); } @@ -2493,39 +2466,25 @@ assert(before + timeElapsed == after). unittest { - foreach(T; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) - { - foreach(U; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) - { - foreach(V; _TypeTuple!(Duration, const Duration, immutable Duration)) - { - T t = MonoTimeImpl.currTime; - U u1 = t + V(0); - U u2 = t - V(0); - assert(t == u1); - assert(t == u2); - } - } - } + const t = MonoTimeImpl.currTime; + assert(t + Duration(0) == t); + assert(t - Duration(0) == t); + } - foreach(T; _TypeTuple!(MonoTimeImpl, const MonoTimeImpl, immutable MonoTimeImpl)) - { - foreach(U; _TypeTuple!(Duration, const Duration, immutable Duration)) - { - T t = MonoTimeImpl.currTime; - - // We reassign ticks in order to get the same rounding errors - // that we should be getting with Duration (e.g. MonoTimeImpl may be - // at a higher precision than hnsecs, meaning that 7333 would be - // truncated when converting to hnsecs). - long ticks = 7333; - auto hnsecs = convClockFreq(ticks, ticksPerSecond, hnsecsPer!"seconds"); - ticks = convClockFreq(hnsecs, hnsecsPer!"seconds", ticksPerSecond); - - assert(t - Duration(hnsecs) == MonoTimeImpl(t._ticks - ticks)); - assert(t + Duration(hnsecs) == MonoTimeImpl(t._ticks + ticks)); - } - } + unittest + { + const t = MonoTimeImpl.currTime; + + // We reassign ticks in order to get the same rounding errors + // that we should be getting with Duration (e.g. MonoTimeImpl may be + // at a higher precision than hnsecs, meaning that 7333 would be + // truncated when converting to hnsecs). + long ticks = 7333; + auto hnsecs = convClockFreq(ticks, ticksPerSecond, hnsecsPer!"seconds"); + ticks = convClockFreq(hnsecs, hnsecsPer!"seconds", ticksPerSecond); + + assert(t - Duration(hnsecs) == MonoTimeImpl(t._ticks - ticks)); + assert(t + Duration(hnsecs) == MonoTimeImpl(t._ticks + ticks)); } @@ -2540,36 +2499,26 @@ assert(before + timeElapsed == after). unittest { - foreach(T; _TypeTuple!(const MonoTimeImpl, immutable MonoTimeImpl)) - { - T t = MonoTimeImpl.currTime; - static assert(!is(typeof(t += Duration.zero))); - static assert(!is(typeof(t -= Duration.zero))); - } + auto mt = MonoTimeImpl.currTime; + const initial = mt; + mt += Duration(0); + assert(mt == initial); + mt -= Duration(0); + assert(mt == initial); - foreach(T; _TypeTuple!(Duration, const Duration, immutable Duration)) - { - auto mt = MonoTimeImpl.currTime; - auto initial = mt; - mt += T(0); - assert(mt == initial); - mt -= T(0); - assert(mt == initial); - - // We reassign ticks in order to get the same rounding errors - // that we should be getting with Duration (e.g. MonoTimeImpl may be - // at a higher precision than hnsecs, meaning that 7333 would be - // truncated when converting to hnsecs). - long ticks = 7333; - auto hnsecs = convClockFreq(ticks, ticksPerSecond, hnsecsPer!"seconds"); - ticks = convClockFreq(hnsecs, hnsecsPer!"seconds", ticksPerSecond); - auto before = MonoTimeImpl(initial._ticks - ticks); - - assert((mt -= Duration(hnsecs)) == before); - assert(mt == before); - assert((mt += Duration(hnsecs)) == initial); - assert(mt == initial); - } + // We reassign ticks in order to get the same rounding errors + // that we should be getting with Duration (e.g. MonoTimeImpl may be + // at a higher precision than hnsecs, meaning that 7333 would be + // truncated when converting to hnsecs). + long ticks = 7333; + auto hnsecs = convClockFreq(ticks, ticksPerSecond, hnsecsPer!"seconds"); + ticks = convClockFreq(hnsecs, hnsecsPer!"seconds", ticksPerSecond); + auto before = MonoTimeImpl(initial._ticks - ticks); + + assert((mt -= Duration(hnsecs)) == before); + assert(mt == before); + assert((mt += Duration(hnsecs)) == initial); + assert(mt == initial); } @@ -2591,7 +2540,7 @@ assert(before + timeElapsed == after). unittest { - auto mt = MonoTimeImpl.currTime; + const mt = MonoTimeImpl.currTime; assert(mt.ticks == mt._ticks); } @@ -2626,45 +2575,25 @@ assert(before + timeElapsed == after). unittest { - static size_t findSpace(string str, size_t line = __LINE__) + static min(T)(T a, T b) { return a < b ? a : b; } + + static void eat(ref string s, string exp) { - for(size_t i = 0; i != str.length; ++i) - { - if(str[i] == ' ') - return i; - } - throw new AssertError("unittest failure", __FILE__, line); + assert(s[0 .. min($, exp.length)] == exp, s~" != "~exp); + s = s[exp.length .. $]; } immutable mt = MonoTimeImpl.currTime; auto str = mt.toString(); static if(is(typeof(this) == MonoTime)) - { - assert(str[0 .. "MonoTime(".length] == "MonoTime("); - str = str["MonoTime(".length .. $]; - } + eat(str, "MonoTime("); else - { - enum len1 = "MonoTimeImpl!(ClockType.".length; - assert(str[0 .. len1] == "MonoTimeImpl!(ClockType."); - - auto len2 = len1 + _clockName.length; - assert(str[len1 .. len2] == _clockName); - assert(str[len2 .. len2 + 2] == ")("); - str = str[len2 + 2 .. $]; - } + eat(str, "MonoTimeImpl!(ClockType."~_clockName~")("); - immutable space1 = findSpace(str); - immutable ticksStr = str[0 .. space1]; - assert(ticksStr == numToString(mt._ticks)); - str = str[space1 + 1 .. $]; - assert(str[0 .. "ticks, ".length] == "ticks, "); - str = str["ticks, ".length .. $]; - immutable space2 = findSpace(str); - immutable ticksPerSecondStr = str[0 .. space2]; - assert(ticksPerSecondStr == numToString(MonoTimeImpl.ticksPerSecond)); - str = str[space2 + 1 .. $]; - assert(str == "ticks per second)"); + eat(str, numToString(mt._ticks)); + eat(str, " ticks, "); + eat(str, numToString(ticksPerSecond)); + eat(str, " ticks per second)"); } private: From fd32a21eb635aab110810eacbf30ed1069e81570 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 25 Jul 2015 03:39:36 +0200 Subject: [PATCH 036/768] reword core.memory notice to... mention the possibility to detach D threads which won't get interrupted by the GC. --- src/core/memory.d | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/core/memory.d b/src/core/memory.d index 73e0ca2d02..c222831ac8 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -17,11 +17,12 @@ all threads the GC knows about are halted so the threads' stacks and registers can be scanned for references to GC allocated data. ) - $(LI If there are threads that the GC does not know about, i.e. the threads - were created by calling the operating system thread creation APIs - directly, or the C runtime thread creation APIs directly, and those - threads hold references to GC allocated data, then the GC will not detect - those references and may free the data. This will cause memory corruption. + + $(LI The GC does not know about threads that were created by directly calling + the OS/C runtime thread creation APIs and D threads that were detached + from the D runtime after creation. + Such threads will not be paused for a GC collection, and the GC might not detect + references to GC allocated data held by them. This can cause memory corruption. There are several ways to resolve this issue: $(OL $(LI Do not hold references to GC allocated data in such threads.) From 0199c34b2d01a7ca66d5ba4323556f9abcc03330 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 24 Jul 2015 00:18:02 +0200 Subject: [PATCH 037/768] add test for module collision detection --- test/shared/Makefile | 15 ++++++++++++++- test/shared/src/lib.d | 2 ++ test/shared/src/link_mod_collision.d | 5 +++++ test/shared/src/load_mod_collision.d | 11 +++++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 test/shared/src/link_mod_collision.d create mode 100644 test/shared/src/load_mod_collision.d diff --git a/test/shared/Makefile b/test/shared/Makefile index f25dd809a7..7e16456d5e 100644 --- a/test/shared/Makefile +++ b/test/shared/Makefile @@ -4,15 +4,21 @@ include ../common.mak TESTS:=link load linkD linkDR loadDR host finalize TESTS+=link_linkdep load_linkdep link_loaddep load_loaddep load_13414 +TESTS+=link_mod_collision load_mod_collision .PHONY: all clean all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) $(ROOT)/loadDR.done: RUN_ARGS:=$(DRUNTIMESO) +$(ROOT)/%_mod_collision.done: $(ROOT)/%_mod_collision + @echo Testing $*_mod_collision + $(QUIET)($< $(RUN_ARGS) 2>&1 || true) | grep -qF 'already defined' + @touch $@ + $(ROOT)/%.done: $(ROOT)/% @echo Testing $* - $(QUIET)$(ROOT)/$* $(RUN_ARGS) + $(QUIET)$< $(RUN_ARGS) @touch $@ $(ROOT)/link: $(SRC)/link.d $(ROOT)/lib.so $(DRUNTIMESO) @@ -48,6 +54,13 @@ $(ROOT)/loadDR: $(SRC)/loadDR.c $(ROOT)/lib.so $(DRUNTIMESO) $(ROOT)/host: $(SRC)/host.c $(ROOT)/plugin1.so $(ROOT)/plugin2.so $(QUIET)$(CC) $(CFLAGS) -o $@ $< $(LDL) -pthread +$(ROOT)/link_mod_collision: $(ROOT)/%: $(SRC)/%.d $(ROOT)/lib.so $(DRUNTIMESO) + $(QUIET)$(DMD) $(DFLAGS) -of$@ $< -L$(ROOT)/lib.so + +$(ROOT)/load_mod_collision: $(ROOT)/%: $(SRC)/%.d $(ROOT)/lib.so $(DRUNTIMESO) +# use export dynamic so that Module in exe can interposes Module in lib.so + $(QUIET)$(DMD) $(DFLAGS) -of$@ $< $(LINKDL) -L--export-dynamic + $(ROOT)/liblinkdep.so: $(ROOT)/lib.so $(ROOT)/liblinkdep.so: DFLAGS+=-L$(ROOT)/lib.so diff --git a/test/shared/src/lib.d b/test/shared/src/lib.d index cd8cf6598c..a3de8c9f73 100644 --- a/test/shared/src/lib.d +++ b/test/shared/src/lib.d @@ -1,3 +1,5 @@ +module lib; + // test EH void throwException() { diff --git a/test/shared/src/link_mod_collision.d b/test/shared/src/link_mod_collision.d new file mode 100644 index 0000000000..9c3d1c7b23 --- /dev/null +++ b/test/shared/src/link_mod_collision.d @@ -0,0 +1,5 @@ +module lib; // module collides with lib.so + +void main() +{ +} diff --git a/test/shared/src/load_mod_collision.d b/test/shared/src/load_mod_collision.d new file mode 100644 index 0000000000..310d6e5d88 --- /dev/null +++ b/test/shared/src/load_mod_collision.d @@ -0,0 +1,11 @@ +module lib; // module collides with lib.so + +import core.runtime, core.stdc.stdio, core.sys.posix.dlfcn; + +void main(string[] args) +{ + auto name = args[0]; + assert(name[$-19 .. $] == "/load_mod_collision"); + name = name[0 .. $-18] ~ "lib.so"; + auto lib = Runtime.loadLibrary(name); +} From 6248d3915a7458140e257a4a8af30dec3990fac9 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 26 Jul 2015 07:32:30 +0200 Subject: [PATCH 038/768] add staticError helper to throw @nogc Errors --- src/core/exception.d | 47 +++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/core/exception.d b/src/core/exception.d index 162aafc6ba..fe3322a786 100644 --- a/src/core/exception.d +++ b/src/core/exception.d @@ -122,18 +122,18 @@ class FinalizeError : Error { TypeInfo info; - @safe pure nothrow this( TypeInfo ci, Throwable next, string file = __FILE__, size_t line = __LINE__ ) + this( TypeInfo ci, Throwable next, string file = __FILE__, size_t line = __LINE__ ) @safe pure nothrow @nogc { this(ci, file, line, next); } - @safe pure nothrow this( TypeInfo ci, string file = __FILE__, size_t line = __LINE__, Throwable next = null ) + this( TypeInfo ci, string file = __FILE__, size_t line = __LINE__, Throwable next = null ) @safe pure nothrow @nogc { super( "Finalization error", file, line, next ); info = ci; } - @safe override string toString() const + override string toString() const @safe { return "An exception was thrown while finalizing an instance of " ~ info.toString(); } @@ -212,12 +212,12 @@ deprecated unittest */ class OutOfMemoryError : Error { - @safe pure nothrow this(string file = __FILE__, size_t line = __LINE__, Throwable next = null ) + this(string file = __FILE__, size_t line = __LINE__, Throwable next = null ) @safe pure nothrow @nogc { super( "Memory allocation failed", file, line, next ); } - @trusted override string toString() const + override string toString() const @trusted { return msg.length ? (cast()super).toString() : "Memory allocation failed"; } @@ -253,12 +253,12 @@ unittest */ class InvalidMemoryOperationError : Error { - @safe pure nothrow this(string file = __FILE__, size_t line = __LINE__, Throwable next = null ) + this(string file = __FILE__, size_t line = __LINE__, Throwable next = null ) @safe pure nothrow @nogc { super( "Invalid memory operation", file, line, next ); } - @trusted override string toString() const + override string toString() const @trusted { return msg.length ? (cast()super).toString() : "Invalid memory operation"; } @@ -486,12 +486,7 @@ extern (C) void onFinalizeError( TypeInfo info, Throwable e, string file = __FIL { // This error is thrown during a garbage collection, so no allocation must occur while // generating this object. So we use a preallocated instance - __gshared FinalizeError err = new FinalizeError( null ); - err.info = info; - err.next = e; - err.file = file; - err.line = line; - throw err; + throw staticError!FinalizeError(info, e, file, line); } @@ -521,7 +516,7 @@ extern (C) void onOutOfMemoryError(void* pretend_sideffect = null) @trusted pure { // NOTE: Since an out of memory condition exists, no allocation must occur // while generating this object. - throw cast(OutOfMemoryError) cast(void*) typeid(OutOfMemoryError).init; + throw staticError!OutOfMemoryError(); } @@ -536,8 +531,7 @@ extern (C) void onInvalidMemoryOperationError(void* pretend_sideffect = null) @t { // The same restriction applies as for onOutOfMemoryError. The GC is in an // undefined state, thus no allocation must occur while generating this object. - throw cast(InvalidMemoryOperationError) - cast(void*) typeid(InvalidMemoryOperationError).init; + throw staticError!InvalidMemoryOperationError(); } @@ -649,3 +643,24 @@ extern (C) onSwitchError(m.name, line); } } + +// TLS storage shared for all errors, chaining might create circular reference +private void[128] _store; + +// only Errors for now as those are rarely chained +private T staticError(T, Args...)(auto ref Args args) + if (is(T : Error)) +{ + // pure hack, what we actually need is @noreturn and allow to call that in pure functions + static T get() + { + static assert(__traits(classInstanceSize, T) <= _store.length, + T.stringof ~ " is too large for staticError()"); + + _store[0 .. __traits(classInstanceSize, T)] = typeid(T).init[]; + return cast(T) _store.ptr; + } + auto res = (cast(T function() @trusted pure nothrow @nogc) &get)(); + res.__ctor(args); + return res; +} From 5f6c43131527749f6a3675ba4408bdfb90f2052b Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 23 Jul 2015 13:58:58 +0200 Subject: [PATCH 039/768] fix check for copy relocations when dynamically loading druntime - fixes Issue 14776 - shared library test - loadDR - segfaults on FreeBSD 10 - the executable might not define _end or __bss_start in which case they'll resolve to within the shared druntime library - skip copy relocation check when we can't determine the copy reloc section b/c druntime was dynamically loaded - copy relocations can't occur when dynamically loading a library anyhow - checkModuleCollisions only needed for version (Shared) druntime build --- src/rt/sections_elf_shared.d | 83 ++++++++++++++++++++++++++++-------- 1 file changed, 65 insertions(+), 18 deletions(-) diff --git a/src/rt/sections_elf_shared.d b/src/rt/sections_elf_shared.d index 9c546f8cc9..fe0ff9e78c 100644 --- a/src/rt/sections_elf_shared.d +++ b/src/rt/sections_elf_shared.d @@ -281,6 +281,12 @@ version (Shared) */ __gshared pthread_mutex_t _handleToDSOMutex; __gshared HashTab!(void*, DSO*) _handleToDSO; + + /* + * Section in executable that contains copy relocations. + * Might be null when druntime is dynamically loaded by a C host. + */ + __gshared const(void)[] _copyRelocSection; } else { @@ -331,7 +337,8 @@ extern(C) void _d_dso_registry(CompilerDSOData* data) // no backlink => register if (*data._slot is null) { - if (_loadedDSOs.empty) initLocks(); // first DSO + immutable firstDSO = _loadedDSOs.empty; + if (firstDSO) initLocks(); DSO* pdso = cast(DSO*).calloc(1, DSO.sizeof); assert(typeid(DSO).init().ptr is null); @@ -345,20 +352,21 @@ extern(C) void _d_dso_registry(CompilerDSOData* data) scanSegments(info, pdso); - checkModuleCollisions(info, pdso._moduleGroup.modules); - version (Shared) { - // the first loaded DSO is druntime itself - assert(!_loadedDSOs.empty || - /* We need a local symbol (rt_get_bss_start) or the function - * pointer might be a PLT address in the executable. - * data._slot is already local in the shared library - */ - handleForAddr(&rt_get_bss_start) == handleForAddr(data._slot)); + auto handle = handleForAddr(data._slot); + + if (firstDSO) + { + /// Assert that the first loaded DSO is druntime itself. Use a + /// local druntime symbol (rt_get_bss_start) to get the handle. + assert(handleForAddr(data._slot) == handleForAddr(&rt_get_bss_start)); + _copyRelocSection = getCopyRelocSection(); + } + checkModuleCollisions(info, pdso._moduleGroup.modules, _copyRelocSection); getDependencies(info, pdso._deps); - pdso._handle = handleForAddr(data._slot); + pdso._handle = handle; setDSOForHandle(pdso, pdso._handle); if (!_rtLoading) @@ -586,6 +594,14 @@ nothrow: return map; } + link_map* exeLinkMap(link_map* map) + { + assert(map); + while (map.l_prev !is null) + map = map.l_prev; + return map; + } + DSO* dsoForHandle(void* handle) { DSO* pdso; @@ -786,21 +802,52 @@ extern(C) void* rt_get_end() @nogc nothrow; } -nothrow -void checkModuleCollisions(in ref dl_phdr_info info, in immutable(ModuleInfo)*[] modules) +/// get the BSS section of the executable to check for copy relocations +const(void)[] getCopyRelocSection() nothrow +{ + auto bss_start = rt_get_bss_start(); + auto bss_end = rt_get_end(); + immutable bss_size = bss_end - bss_start; + + /** + Check whether __bss_start/_end both lie within the executable DSO.same DSO. + + When a C host program dynamically loads druntime, i.e. it isn't linked + against, __bss_start/_end might be defined in different DSOs, b/c the + linker creates those symbols only when they are used. + But as there are no copy relocations when dynamically loading a shared + library, we can simply return a null bss range in that case. + */ + if (bss_size <= 0) + return null; + + version (linux) + enum ElfW!"Addr" exeBaseAddr = 0; + else version (FreeBSD) + enum ElfW!"Addr" exeBaseAddr = 0; + + dl_phdr_info info = void; + findDSOInfoForAddr(bss_start, &info) || assert(0); + if (info.dlpi_addr != exeBaseAddr) + return null; + findDSOInfoForAddr(bss_end - 1, &info) || assert(0); + if (info.dlpi_addr != exeBaseAddr) + return null; + + return bss_start[0 .. bss_size]; +} + +void checkModuleCollisions(in ref dl_phdr_info info, in immutable(ModuleInfo)*[] modules, + in void[] copyRelocSection) nothrow in { assert(modules.length); } body { immutable(ModuleInfo)* conflicting; - auto bss_start = rt_get_bss_start(); - immutable bss_size = rt_get_end() - bss_start; - assert(bss_size >= 0); - foreach (m; modules) { auto addr = cast(const(void*))m; - if (cast(size_t)(addr - bss_start) < cast(size_t)bss_size) + if (cast(size_t)(addr - copyRelocSection.ptr) < copyRelocSection.length) { // Module is in .bss of the exe because it was copy relocated } From aa4376bcfa57c21c2be94d57bdb3b0930915da00 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 24 Jul 2015 14:17:27 +0200 Subject: [PATCH 040/768] add comment explaining module collision check --- src/rt/sections_elf_shared.d | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/rt/sections_elf_shared.d b/src/rt/sections_elf_shared.d index fe0ff9e78c..61110be3e4 100644 --- a/src/rt/sections_elf_shared.d +++ b/src/rt/sections_elf_shared.d @@ -837,6 +837,13 @@ const(void)[] getCopyRelocSection() nothrow return bss_start[0 .. bss_size]; } +/** + * Check for module collisions. A module in a shared library collides + * with an existing module if it's ModuleInfo is interposed (search + * symbol interposition) by another DSO. Therefor two modules with the + * same name do not collide if their DSOs are in separate symbol resolution + * chains. + */ void checkModuleCollisions(in ref dl_phdr_info info, in immutable(ModuleInfo)*[] modules, in void[] copyRelocSection) nothrow in { assert(modules.length); } From 4659f966f92b6475ec9a16bf10ce492040d34be9 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 25 Jul 2015 01:42:28 +0200 Subject: [PATCH 041/768] workaround Bugzilla 14824 - A bug in FBSD's rtld will lead to a crash when calling a function over an PLT entry that was previously resolved to a now unloaded dynamic library. --- test/shared/Makefile | 2 +- test/shared/src/host.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/test/shared/Makefile b/test/shared/Makefile index 7e16456d5e..4e846c6df9 100644 --- a/test/shared/Makefile +++ b/test/shared/Makefile @@ -9,7 +9,7 @@ TESTS+=link_mod_collision load_mod_collision .PHONY: all clean all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) -$(ROOT)/loadDR.done: RUN_ARGS:=$(DRUNTIMESO) +$(ROOT)/loadDR.done $(ROOT)/host.done: RUN_ARGS:=$(DRUNTIMESO) $(ROOT)/%_mod_collision.done: $(ROOT)/%_mod_collision @echo Testing $*_mod_collision diff --git a/test/shared/src/host.c b/test/shared/src/host.c index 5928d26be8..81e896aa3d 100644 --- a/test/shared/src/host.c +++ b/test/shared/src/host.c @@ -5,6 +5,12 @@ int main(int argc, char* argv[]) { +#if defined(__FreeBSD__) + // workaround for Bugzilla 14824 + void *druntime = dlopen(argv[1], RTLD_LAZY); // load druntime + assert(druntime); +#endif + const size_t pathlen = strrchr(argv[0], '/') - argv[0] + 1; char *name = malloc(pathlen + sizeof("plugin1.so")); memcpy(name, argv[0], pathlen); @@ -46,5 +52,9 @@ int main(int argc, char* argv[]) assert(dlclose(plugin1) == 0); free(name); + +#if defined(__FreeBSD__) + dlclose(druntime); +#endif return EXIT_SUCCESS; } From 8f41eb18b5ce4d8d825180fe00fb533931f8bd1f Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 24 Jul 2015 16:49:00 +0200 Subject: [PATCH 042/768] reenable druntime debug unittests --- posix.mak | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/posix.mak b/posix.mak index e7e2d35e6c..7a93a468da 100644 --- a/posix.mak +++ b/posix.mak @@ -196,9 +196,7 @@ ifeq (1,$(BUILD_WAS_SPECIFIED)) unittest : $(UT_MODULES) $(addsuffix /.run,$(ADDITIONAL_TESTS)) @echo done else -# The unit tests currently fail on FreeBSD in debug mode -#unittest : unittest-debug unittest-release -unittest : unittest-release +unittest : unittest-debug unittest-release unittest-%: $(MAKE) -f $(MAKEFILE) unittest OS=$(OS) MODEL=$(MODEL) DMD=$(DMD) BUILD=$* endif From 94d7132097df881199632624a4f4c5b8b7d42e88 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 25 Jul 2015 22:52:32 +0200 Subject: [PATCH 043/768] use _Exit(1) instead of assert(0) - to avoid a segfault/bus error --- src/rt/sections_elf_shared.d | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rt/sections_elf_shared.d b/src/rt/sections_elf_shared.d index 61110be3e4..041b7c1b01 100644 --- a/src/rt/sections_elf_shared.d +++ b/src/rt/sections_elf_shared.d @@ -878,7 +878,8 @@ body cast(int)loading.length, loading.ptr, cast(int)modname.length, modname.ptr, cast(int)existing.length, existing.ptr); - assert(0); + import core.stdc.stdlib : _Exit; + _Exit(1); } } From 5ea2b7bd80e799f64bd79d15346409728d706605 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 26 Jul 2015 16:20:18 +0200 Subject: [PATCH 044/768] need --no-as-needed for some linux distributions (Ubuntu) - enforces the linking of lib.so even though the lib isn't used --- test/shared/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/shared/Makefile b/test/shared/Makefile index 4e846c6df9..0b4a58b509 100644 --- a/test/shared/Makefile +++ b/test/shared/Makefile @@ -55,7 +55,8 @@ $(ROOT)/host: $(SRC)/host.c $(ROOT)/plugin1.so $(ROOT)/plugin2.so $(QUIET)$(CC) $(CFLAGS) -o $@ $< $(LDL) -pthread $(ROOT)/link_mod_collision: $(ROOT)/%: $(SRC)/%.d $(ROOT)/lib.so $(DRUNTIMESO) - $(QUIET)$(DMD) $(DFLAGS) -of$@ $< -L$(ROOT)/lib.so +# use no-as-needed to enforce linking of unused lib.so + $(QUIET)$(DMD) $(DFLAGS) -of$@ $< -L--no-as-needed -L$(ROOT)/lib.so $(ROOT)/load_mod_collision: $(ROOT)/%: $(SRC)/%.d $(ROOT)/lib.so $(DRUNTIMESO) # use export dynamic so that Module in exe can interposes Module in lib.so From 18f81c6d9a81ae818369caf8c59e5b8dc63671e3 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 6 Aug 2015 17:03:30 -0700 Subject: [PATCH 045/768] fix Issue 14882 - [REG] MANIFEST is missing test/common.mak --- mak/MANIFEST | 1 + 1 file changed, 1 insertion(+) diff --git a/mak/MANIFEST b/mak/MANIFEST index 012347fcf5..52780da187 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -296,6 +296,7 @@ MANIFEST=\ \ src\etc\linux\memoryerror.d \ \ + test\common.mak \ test\coverage\Makefile \ test\coverage\src-basic.lst.exp \ test\coverage\src-merge.lst.exp \ From c8f8ad0a465f89b77bbdfd7d62c393595356163d Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Wed, 5 Aug 2015 21:50:24 +0200 Subject: [PATCH 046/768] first support for VS2015 --- mak/SRCS | 1 + src/core/stdc/stdio.d | 61 +++------------- src/core/sys/windows/stdio_msvc12.d | 108 ++++++++++++++++++++++++++++ src/core/sys/windows/stdio_msvc14.d | 38 ++++++++++ src/rt/dmain2.d | 13 ++-- 5 files changed, 162 insertions(+), 59 deletions(-) create mode 100644 src/core/sys/windows/stdio_msvc12.d create mode 100644 src/core/sys/windows/stdio_msvc14.d diff --git a/mak/SRCS b/mak/SRCS index 834c094ec4..f7a1bc27c8 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -75,6 +75,7 @@ SRCS=\ src\core\sys\windows\threadaux.d \ src\core\sys\windows\windows.d \ src\core\sys\windows\winsock2.d \ + src\core\sys\windows\stdio_msvc12.d \ \ src\gc\bits.d \ src\gc\config.d \ diff --git a/src/core/stdc/stdio.d b/src/core/stdc/stdio.d index 8174878c34..ae2966a8a5 100644 --- a/src/core/stdc/stdio.d +++ b/src/core/stdc/stdio.d @@ -259,14 +259,7 @@ else version( CRuntime_Microsoft ) /// struct _iobuf { - char* _ptr; - int _cnt; - char* _base; - int _flag; - int _file; - int _charbuf; - int _bufsiz; - char* _tmpfname; + void* undefined; } /// @@ -572,10 +565,6 @@ else version( CRuntime_Microsoft ) extern shared void function() _fcloseallp; - private extern shared FILE[_NFILE] _iob; - - shared(FILE)* __iob_func(); - /// shared FILE* stdin; // = &__iob_func()[0]; /// @@ -939,18 +928,18 @@ else version( CRuntime_DigitalMars ) else version( CRuntime_Microsoft ) { // No unsafe pointer manipulation. - extern (D) @trusted + @trusted { /// - void rewind(FILE* stream) { fseek(stream,0L,SEEK_SET); stream._flag = stream._flag & ~_IOERR; } + void rewind(FILE* stream); /// - pure void clearerr(FILE* stream) { stream._flag = stream._flag & ~(_IOERR|_IOEOF); } + pure void clearerr(FILE* stream); /// - pure int feof(FILE* stream) { return stream._flag&_IOEOF; } + pure int feof(FILE* stream); /// - pure int ferror(FILE* stream) { return stream._flag&_IOERR; } + pure int ferror(FILE* stream); /// - pure int fileno(FILE* stream) { return stream._file; } + pure int fileno(FILE* stream); } /// int _snprintf(char* s, size_t n, in char* fmt, ...); @@ -963,42 +952,10 @@ else version( CRuntime_Microsoft ) alias _vsnprintf vsnprintf; /// - uint _set_output_format(uint format); - /// - enum _TWO_DIGIT_EXPONENT = 1; + int _fputc_nolock(int c, FILE *fp); /// - int _filbuf(FILE *fp); - /// - int _flsbuf(int c, FILE *fp); - - /// - int _fputc_nolock(int c, FILE *fp) - { - fp._cnt = fp._cnt - 1; - if (fp._cnt >= 0) - { - *fp._ptr = cast(char)c; - fp._ptr = fp._ptr + 1; - return cast(char)c; - } - else - return _flsbuf(c, fp); - } - - /// - int _fgetc_nolock(FILE *fp) - { - fp._cnt = fp._cnt - 1; - if (fp._cnt >= 0) - { - char c = *fp._ptr; - fp._ptr = fp._ptr + 1; - return c; - } - else - return _filbuf(fp); - } + int _fgetc_nolock(FILE *fp); /// int _lock_file(FILE *fp); diff --git a/src/core/sys/windows/stdio_msvc12.d b/src/core/sys/windows/stdio_msvc12.d new file mode 100644 index 0000000000..44e944fc2b --- /dev/null +++ b/src/core/sys/windows/stdio_msvc12.d @@ -0,0 +1,108 @@ +/** +* This module provides MS VC runtime helper function to be used +* with VS versions before VS 2015 +* +* Copyright: Copyright Digital Mars 2015. +* License: Distributed under the +* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). +* (See accompanying file LICENSE) +* Source: $(DRUNTIMESRC core/sys/windows/_stdio_msvc12.d) +* Authors: Rainer Schuetze +*/ + +module core.sys.windows.stdio_msvc12; + +version( CRuntime_Microsoft ): + +import core.stdc.stdio; + +extern (C): +@system: +nothrow: +@nogc: + +alias stdio_FILE = core.stdc.stdio.FILE; + +FILE* __iob_func(); + +uint _set_output_format(uint format); + +enum _TWO_DIGIT_EXPONENT = 1; + +void init_msvc() +{ + // stdin,stdout and stderr internally in a static array __iob[3] + auto fp = __iob_func(); + stdin = cast(stdio_FILE*) &fp[0]; + stdout = cast(stdio_FILE*) &fp[1]; + stderr = cast(stdio_FILE*) &fp[2]; + + // ensure that sprintf generates only 2 digit exponent when writing floating point values + _set_output_format(_TWO_DIGIT_EXPONENT); +} + +struct _iobuf +{ + char* _ptr; + int _cnt; // _cnt and _base exchanged for VS2015 + char* _base; + int _flag; + int _file; + int _charbuf; + int _bufsiz; + char* _tmpfname; +} + +alias shared(_iobuf) FILE; + +int _filbuf(FILE *fp); +int _flsbuf(int c, FILE *fp); + +int _fputc_nolock(int c, FILE *fp) +{ + fp._cnt = fp._cnt - 1; + if (fp._cnt >= 0) + { + *fp._ptr = cast(char)c; + fp._ptr = fp._ptr + 1; + return cast(char)c; + } + else + return _flsbuf(c, fp); +} + +int _fgetc_nolock(FILE *fp) +{ + fp._cnt = fp._cnt - 1; + if (fp._cnt >= 0) + { + char c = *fp._ptr; + fp._ptr = fp._ptr + 1; + return c; + } + else + return _filbuf(fp); +} + +shared(FILE)* __acrt_iob_func(uint id) +{ + return __iob_func() + id; +} + +@trusted +{ + /// + void rewind(FILE* stream) + { + fseek(cast(stdio_FILE*)stream,0L,SEEK_SET); + stream._flag = stream._flag & ~_IOERR; + } + /// + pure void clearerr(FILE* stream) { stream._flag = stream._flag & ~(_IOERR|_IOEOF); } + /// + pure int feof(FILE* stream) { return stream._flag&_IOEOF; } + /// + pure int ferror(FILE* stream) { return stream._flag&_IOERR; } + /// + pure int fileno(FILE* stream) { return stream._file; } +} diff --git a/src/core/sys/windows/stdio_msvc14.d b/src/core/sys/windows/stdio_msvc14.d new file mode 100644 index 0000000000..f434543b99 --- /dev/null +++ b/src/core/sys/windows/stdio_msvc14.d @@ -0,0 +1,38 @@ +/** +* This module provides MS VC runtime helper function to be used +* with VS versions VS 2015 or later +* +* Copyright: Copyright Digital Mars 2015. +* License: Distributed under the +* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). +* (See accompanying file LICENSE) +* Source: $(DRUNTIMESRC core/sys/windows/_stdio_msvc14.d) +* Authors: Rainer Schuetze +*/ + +module core.sys.windows.stdio_msvc14; + +version (CRuntime_Microsoft): + +import core.stdc.stdio; + +extern (C): +@system: +nothrow: +@nogc: + +shared(FILE)* __acrt_iob_func(uint); // VS2015+ + +void init_msvc() +{ + stdin = __acrt_iob_func(0); + stdout = __acrt_iob_func(1); + stderr = __acrt_iob_func(2); +} + +pragma(lib, "legacy_stdio_definitions.lib"); + +shared static this() +{ + // force linkage of ModuleInfo that includes the pragma(lib) above in its object file +} diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index d13b2536b1..4af1b13fa9 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -57,6 +57,11 @@ version (OSX) extern (C) __gshared void* __osx_stack_end = cast(void*)0xC0000000; } +version(CRuntime_Microsoft) +{ + extern(C) void init_msvc(); +} + /*********************************** * These are a temporary means of providing a GC hook for DLL use. They may be * replaced with some other similar functionality later. @@ -320,13 +325,7 @@ extern (C) int _d_run_main(int argc, char **argv, MainFunc mainFunc) } version (CRuntime_Microsoft) { - auto fp = __iob_func(); - stdin = &fp[0]; - stdout = &fp[1]; - stderr = &fp[2]; - - // ensure that sprintf generates only 2 digit exponent when writing floating point values - _set_output_format(_TWO_DIGIT_EXPONENT); + init_msvc(); // enable full precision for reals version(Win64) From 3f9c4a6f3daa4e296e3404fe9714d1f03d73dc50 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 4 Aug 2015 20:33:48 -0400 Subject: [PATCH 047/768] Fix issue 14870 - Add new "abort" internal module and function, which will always print a message to stderr, even in release mode. This can be used to replace assert(0, msg) which does not print the message. --- mak/COPY | 1 + mak/MANIFEST | 1 + mak/SRCS | 1 + src/core/internal/abort.d | 45 ++++++++ src/core/internal/string.d | 92 +++++++++++++++ src/core/stdc/stdlib.d | 2 +- src/core/time.d | 227 +++++++++++++++++-------------------- win32.mak | 3 + win64.mak | 3 + 9 files changed, 254 insertions(+), 121 deletions(-) create mode 100644 src/core/internal/abort.d diff --git a/mak/COPY b/mak/COPY index cb6341642c..4aaaab63c2 100644 --- a/mak/COPY +++ b/mak/COPY @@ -15,6 +15,7 @@ COPY=\ $(IMPDIR)\core\time.d \ $(IMPDIR)\core\vararg.d \ \ + $(IMPDIR)\core\internal\abort.d \ $(IMPDIR)\core\internal\convert.d \ $(IMPDIR)\core\internal\hash.d \ $(IMPDIR)\core\internal\string.d \ diff --git a/mak/MANIFEST b/mak/MANIFEST index 012347fcf5..52188f6640 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -33,6 +33,7 @@ MANIFEST=\ src\core\time.d \ src\core\vararg.d \ \ + src\core\internal\abort.d \ src\core\internal\convert.d \ src\core\internal\hash.d \ src\core\internal\string.d \ diff --git a/mak/SRCS b/mak/SRCS index 834c094ec4..3f331bf4c1 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -16,6 +16,7 @@ SRCS=\ src\core\time.d \ src\core\vararg.d \ \ + src\core\internal\abort.d \ src\core\internal\convert.d \ src\core\internal\hash.d \ src\core\internal\string.d \ diff --git a/src/core/internal/abort.d b/src/core/internal/abort.d new file mode 100644 index 0000000000..d2d0eb8724 --- /dev/null +++ b/src/core/internal/abort.d @@ -0,0 +1,45 @@ +module core.internal.abort; + +/* + * Use instead of assert(0, msg), since this does not print a message for -release compiled + * code, and druntime is -release compiled. + */ +void abort(string msg, string filename = __FILE__, size_t line = __LINE__) @nogc nothrow @safe +{ + import core.stdc.stdlib: c_abort = abort; + // use available OS system calls to print the message to stderr + version(Posix) + { + import core.sys.posix.unistd: write; + static void writeStr(const(char)[][] m...) @nogc nothrow @trusted + { + foreach(s; m) + write(2, s.ptr, s.length); + } + } + else version(Windows) + { + import core.sys.windows.windows: GetStdHandle, STD_ERROR_HANDLE, WriteFile, INVALID_HANDLE_VALUE; + auto h = (() @trusted => GetStdHandle(STD_ERROR_HANDLE))(); + if(h == INVALID_HANDLE_VALUE) + // attempt best we can to print the message + assert(0, msg); + void writeStr(const(char)[][] m...) @nogc nothrow @trusted + { + foreach(s; m) + { + assert(s.length <= uint.max); + WriteFile(h, s.ptr, cast(uint)s.length, null, null); + } + } + } + else + static assert(0, "Unsupported OS"); + + import core.internal.string; + UnsignedStringBuf strbuff; + + // write an appropriate message, then abort the program + writeStr("Aborting from ", filename, "(", line.unsignedToTempString(strbuff, 10), ") ", msg); + c_abort(); +} diff --git a/src/core/internal/string.d b/src/core/internal/string.d index 2b582d82f5..4faa145e12 100644 --- a/src/core/internal/string.d +++ b/src/core/internal/string.d @@ -27,6 +27,25 @@ char[] unsignedToTempString(ulong value, char[] buf, uint radix) @safe return buf[i .. $]; } +private struct TempStringNoAlloc +{ + // need to handle 65 bytes for radix of 2 with negative sign. + private char[65] _buf; + private ubyte _len; + auto get() return + { + return _buf[$-_len..$]; + } + alias get this; +} + +auto unsignedToTempString(ulong value, uint radix) @safe +{ + TempStringNoAlloc result; + result._len = unsignedToTempString(value, result._buf, radix).length & 0xff; + return result; +} + unittest { UnsignedStringBuf buf; @@ -37,8 +56,81 @@ unittest assert(long.sizeof.unsignedToTempString(buf, 10) == "8"); assert(uint.max.unsignedToTempString(buf, 10) == "4294967295"); assert(ulong.max.unsignedToTempString(buf, 10) == "18446744073709551615"); + + // use stack allocated struct version + assert(0.unsignedToTempString(10) == "0"); + assert(1.unsignedToTempString(10) == "1"); + assert(12.unsignedToTempString(10) == "12"); + assert(0x12ABCF .unsignedToTempString(16) == "12abcf"); + assert(long.sizeof.unsignedToTempString(10) == "8"); + assert(uint.max.unsignedToTempString(10) == "4294967295"); + assert(ulong.max.unsignedToTempString(10) == "18446744073709551615"); } +alias SignedStringBuf = char[20]; + +auto signedToTempString(long value, char[] buf, uint radix) @safe +{ + bool neg = value < 0; + if(neg) + value = cast(ulong)-value; + auto r = unsignedToTempString(value, buf, radix); + if(neg) + { + // about to do a slice without a bounds check + assert(r.ptr > buf.ptr); + r = (() @trusted => r.ptr[-1..r.length])(); + r[0] = '-'; + } + return r; +} + +auto signedToTempString(long value, uint radix) @safe +{ + bool neg = value < 0; + if(neg) + value = cast(ulong)-value; + auto r = unsignedToTempString(value, radix); + if(neg) + { + r._len++; + r.get()[0] = '-'; + } + return r; +} + +unittest +{ + SignedStringBuf buf; + assert(0.signedToTempString(buf, 10) == "0"); + assert(1.signedToTempString(buf, 10) == "1"); + assert((-1).signedToTempString(buf, 10) == "-1"); + assert(12.signedToTempString(buf, 10) == "12"); + assert((-12).signedToTempString(buf, 10) == "-12"); + assert(0x12ABCF .signedToTempString(buf, 16) == "12abcf"); + assert((-0x12ABCF) .signedToTempString(buf, 16) == "-12abcf"); + assert(long.sizeof.signedToTempString(buf, 10) == "8"); + assert(int.max.signedToTempString(buf, 10) == "2147483647"); + assert(int.min.signedToTempString(buf, 10) == "-2147483648"); + assert(long.max.signedToTempString(buf, 10) == "9223372036854775807"); + assert(long.min.signedToTempString(buf, 10) == "-9223372036854775808"); + + // use stack allocated struct version + assert(0.signedToTempString(10) == "0"); + assert(1.signedToTempString(10) == "1"); + assert((-1).signedToTempString(10) == "-1"); + assert(12.signedToTempString(10) == "12"); + assert((-12).signedToTempString(10) == "-12"); + assert(0x12ABCF .signedToTempString(16) == "12abcf"); + assert((-0x12ABCF) .signedToTempString(16) == "-12abcf"); + assert(long.sizeof.signedToTempString(10) == "8"); + assert(int.max.signedToTempString(10) == "2147483647"); + assert(int.min.signedToTempString(10) == "-2147483648"); + assert(long.max.signedToTempString(10) == "9223372036854775807"); + assert(long.min.signedToTempString(10) == "-9223372036854775808"); + assert(long.max.signedToTempString(2) == "111111111111111111111111111111111111111111111111111111111111111"); + assert(long.min.signedToTempString(2) == "-1000000000000000000000000000000000000000000000000000000000000000"); +} int dstrcmp( in char[] s1, in char[] s2 ) @trusted { diff --git a/src/core/stdc/stdlib.d b/src/core/stdc/stdlib.d index 17baf9f03d..d644d0bfe1 100644 --- a/src/core/stdc/stdlib.d +++ b/src/core/stdc/stdlib.d @@ -156,7 +156,7 @@ void* realloc(void* ptr, size_t size); void free(void* ptr); /// -void abort(); +void abort() @safe; /// void exit(int status); /// diff --git a/src/core/time.d b/src/core/time.d index 1cd944ffb8..34f204fb23 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -82,6 +82,7 @@ import core.exception; import core.stdc.time; import core.stdc.stdio; import core.internal.traits : _Unqual = Unqual; +import core.internal.string; version(Windows) { @@ -1861,7 +1862,9 @@ private: unit = "μs"; else unit = plural ? units : units[0 .. $-1]; - res ~= numToString(val) ~ " " ~ unit; + res ~= signedToTempString(val, 10); + res ~= " "; + res ~= unit; } if (_hnsecs == 0) return "0 hnsecs"; @@ -1982,6 +1985,14 @@ unittest auto t1 = TickDuration.from!U(t1v); auto t2 = TickDuration.from!U(t2v); + auto _str(F)(F val) + { + static if(is(F == int) || is(F == long)) + return signedToTempString(val, 10); + else + return unsignedToTempString(val, 10); + } + foreach (F; _TypeTuple!(int,uint,long,ulong,float,double,real)) { F t1f = to!(U,F)(t1); @@ -1991,23 +2002,24 @@ unittest F t3f = to!(U,F)(t12d); F t4f = to!(U,F)(t12m); + static if(is(F == float) || is(F == double) || is(F == real)) { assert((t1f - cast(F)t1v) <= 3.0, - F.stringof ~ " " ~ U ~ " " ~ numToString(t1f) ~ " " ~ - numToString(cast(F)t1v) + F.stringof ~ " " ~ U ~ " " ~ doubleToString(t1f) ~ " " ~ + doubleToString(cast(F)t1v) ); assert((t2f - cast(F)t2v) <= 3.0, - F.stringof ~ " " ~ U ~ " " ~ numToString(t2f) ~ " " ~ - numToString(cast(F)t2v) + F.stringof ~ " " ~ U ~ " " ~ doubleToString(t2f) ~ " " ~ + doubleToString(cast(F)t2v) ); assert(t3f - (cast(F)t1v) / (cast(F)t2v) <= 3.0, - F.stringof ~ " " ~ U ~ " " ~ numToString(t3f) ~ " " ~ - numToString((cast(F)t1v)/(cast(F)t2v)) + F.stringof ~ " " ~ U ~ " " ~ doubleToString(t3f) ~ " " ~ + doubleToString((cast(F)t1v)/(cast(F)t2v)) ); assert(t4f - (cast(F)(t1v - t2v)) <= 3.0, - F.stringof ~ " " ~ U ~ " " ~ numToString(t4f) ~ " " ~ - numToString(cast(F)(t1v - t2v)) + F.stringof ~ " " ~ U ~ " " ~ doubleToString(t4f) ~ " " ~ + doubleToString(cast(F)(t1v - t2v)) ); } else @@ -2015,20 +2027,20 @@ unittest // even though this should be exact math it is not as internal // in "to" floating point is used assert(_abs(t1f) - _abs(cast(F)t1v) <= 3, - F.stringof ~ " " ~ U ~ " " ~ numToString(t1f) ~ " " ~ - numToString(cast(F)t1v) + F.stringof ~ " " ~ U ~ " " ~ _str(t1f) ~ " " ~ + _str(cast(F)t1v) ); assert(_abs(t2f) - _abs(cast(F)t2v) <= 3, - F.stringof ~ " " ~ U ~ " " ~ numToString(t2f) ~ " " ~ - numToString(cast(F)t2v) + F.stringof ~ " " ~ U ~ " " ~ _str(t2f) ~ " " ~ + _str(cast(F)t2v) ); assert(_abs(t3f) - _abs((cast(F)t1v) / (cast(F)t2v)) <= 3, - F.stringof ~ " " ~ U ~ " " ~ numToString(t3f) ~ " " ~ - numToString((cast(F)t1v) / (cast(F)t2v)) + F.stringof ~ " " ~ U ~ " " ~ _str(t3f) ~ " " ~ + _str((cast(F)t1v) / (cast(F)t2v)) ); assert(_abs(t4f) - _abs((cast(F)t1v) - (cast(F)t2v)) <= 3, - F.stringof ~ " " ~ U ~ " " ~ numToString(t4f) ~ " " ~ - numToString((cast(F)t1v) - (cast(F)t2v)) + F.stringof ~ " " ~ U ~ " " ~ _str(t4f) ~ " " ~ + _str((cast(F)t1v) - (cast(F)t2v)) ); } } @@ -2280,7 +2292,8 @@ struct MonoTimeImpl(ClockType clockType) { if(ticksPerSecond == 0) { - assert(0, "MonoTimeImpl!(ClockType." ~ _clockName ~ + import core.internal.abort : abort; + abort("MonoTimeImpl!(ClockType." ~ _clockName ~ ") failed to get the frequency of the system's monotonic clock."); } @@ -2290,7 +2303,8 @@ struct MonoTimeImpl(ClockType clockType) if(QueryPerformanceCounter(&ticks) == 0) { // This probably cannot happen on Windows 95 or later - assert(0, "Call to QueryPerformanceCounter failed."); + import core.internal.abort : abort; + abort("Call to QueryPerformanceCounter failed."); } return MonoTimeImpl(ticks); } @@ -2300,7 +2314,10 @@ struct MonoTimeImpl(ClockType clockType) { timespec ts; if(clock_gettime(clockArg, &ts) != 0) - assert(0, "Call to clock_gettime failed."); + { + import core.internal.abort : abort; + abort("Call to clock_gettime failed."); + } return MonoTimeImpl(convClockFreq(ts.tv_sec * 1_000_000_000L + ts.tv_nsec, 1_000_000_000L, @@ -2567,17 +2584,17 @@ assert(before + timeElapsed == after). string toString() const pure nothrow { static if(clockType == ClockType.normal) - return "MonoTime(" ~ numToString(_ticks) ~ " ticks, " ~ numToString(ticksPerSecond) ~ " ticks per second)"; + return "MonoTime(" ~ signedToTempString(_ticks, 10) ~ " ticks, " ~ signedToTempString(ticksPerSecond, 10) ~ " ticks per second)"; else - return "MonoTimeImpl!(ClockType." ~ _clockName ~ ")(" ~ numToString(_ticks) ~ " ticks, " ~ - numToString(ticksPerSecond) ~ " ticks per second)"; + return "MonoTimeImpl!(ClockType." ~ _clockName ~ ")(" ~ signedToTempString(_ticks, 10) ~ " ticks, " ~ + signedToTempString(ticksPerSecond, 10) ~ " ticks per second)"; } unittest { static min(T)(T a, T b) { return a < b ? a : b; } - static void eat(ref string s, string exp) + static void eat(ref string s, const(char)[] exp) { assert(s[0 .. min($, exp.length)] == exp, s~" != "~exp); s = s[exp.length .. $]; @@ -2590,9 +2607,9 @@ assert(before + timeElapsed == after). else eat(str, "MonoTimeImpl!(ClockType."~_clockName~")("); - eat(str, numToString(mt._ticks)); + eat(str, signedToTempString(mt._ticks, 10)); eat(str, " ticks, "); - eat(str, numToString(ticksPerSecond)); + eat(str, signedToTempString(ticksPerSecond, 10)); eat(str, " ticks per second)"); } @@ -2647,7 +2664,8 @@ extern(C) void _d_initMonoTime() { // ensure we are only writing immutable data once if(tps[i] != 0) - assert(0, "_d_initMonoTime should only be called once!"); + // should only be called once + assert(0); tps[i] = ticksPerSecond; } } @@ -2664,7 +2682,8 @@ extern(C) void _d_initMonoTime() { // ensure we are only writing immutable data once if(tps[i] != 0) - assert(0, "_d_initMonoTime should only be called once!"); + // should only be called once + assert(0); tps[i] = ticksPerSecond; } } @@ -2683,7 +2702,8 @@ extern(C) void _d_initMonoTime() { // ensure we are only writing immutable data once if(tps[i] != 0) - assert(0, "_d_initMonoTime should only be called once!"); + // should only be called once + assert(0); // For some reason, on some systems, clock_getres returns // a resolution which is clearly wrong (it's a millisecond @@ -3516,11 +3536,12 @@ struct TickDuration +/ static @property TickDuration currSystemTick() @trusted nothrow @nogc { + import core.internal.abort : abort; version(Windows) { ulong ticks; if(QueryPerformanceCounter(cast(long*)&ticks) == 0) - assert(0, "Failed in QueryPerformanceCounter()."); + abort("Failed in QueryPerformanceCounter()."); return TickDuration(ticks); } @@ -3532,7 +3553,7 @@ struct TickDuration { timeval tv; if(gettimeofday(&tv, null) != 0) - assert(0, "Failed in gettimeofday()."); + abort("Failed in gettimeofday()."); return TickDuration(tv.tv_sec * TickDuration.ticksPerSec + tv.tv_usec * TickDuration.ticksPerSec / 1000 / 1000); @@ -3544,7 +3565,7 @@ struct TickDuration { timespec ts; if(clock_gettime(CLOCK_MONOTONIC, &ts) != 0) - assert(0, "Failed in clock_gettime()."); + abort("Failed in clock_gettime()."); return TickDuration(ts.tv_sec * TickDuration.ticksPerSec + ts.tv_nsec * TickDuration.ticksPerSec / 1000 / 1000 / 1000); @@ -3553,7 +3574,7 @@ struct TickDuration { timeval tv; if(gettimeofday(&tv, null) != 0) - assert(0, "Failed in gettimeofday()."); + abort("Failed in gettimeofday()."); return TickDuration(tv.tv_sec * TickDuration.ticksPerSec + tv.tv_usec * TickDuration.ticksPerSec / 1000 / 1000); @@ -4181,47 +4202,54 @@ private: +/ string _toStringImpl() const nothrow { - try - { - long hnsecs = _hnsecs; + long hnsecs = _hnsecs; - immutable milliseconds = splitUnitsFromHNSecs!"msecs"(hnsecs); - immutable microseconds = splitUnitsFromHNSecs!"usecs"(hnsecs); + immutable milliseconds = splitUnitsFromHNSecs!"msecs"(hnsecs); + immutable microseconds = splitUnitsFromHNSecs!"usecs"(hnsecs); - if(hnsecs == 0) + if(hnsecs == 0) + { + if(microseconds == 0) { - if(microseconds == 0) + if(milliseconds == 0) + return "0 hnsecs"; + else { - if(milliseconds == 0) - return "0 hnsecs"; + if(milliseconds == 1) + return "1 ms"; else { - if(milliseconds == 1) - return "1 ms"; - else - return numToString(milliseconds) ~ " ms"; + auto r = signedToTempString(milliseconds, 10).idup; + r ~= " ms"; + return r; } } + } + else + { + immutable fullMicroseconds = getUnitsFromHNSecs!"usecs"(_hnsecs); + + if(fullMicroseconds == 1) + return "1 μs"; else { - immutable fullMicroseconds = getUnitsFromHNSecs!"usecs"(_hnsecs); - - if(fullMicroseconds == 1) - return "1 μs"; - else - return numToString(fullMicroseconds) ~ " μs"; + auto r = signedToTempString(fullMicroseconds, 10).idup; + r ~= " μs"; + return r; } } + } + else + { + if(_hnsecs == 1) + return "1 hnsec"; else { - if(_hnsecs == 1) - return "1 hnsec"; - else - return numToString(_hnsecs) ~ " hnsecs"; + auto r = signedToTempString(_hnsecs, 10).idup; + r ~= " hnsecs"; + return r; } } - catch(Exception e) - assert(0, "Something threw when nothing can throw."); } unittest @@ -4308,7 +4336,7 @@ private: invariant() { if(!_valid(_hnsecs)) - throw new AssertError("Invaliant Failure: hnsecs [" ~ numToString(_hnsecs) ~ "]", __FILE__, __LINE__); + throw new AssertError("Invariant Failure: hnsecs [" ~ signedToTempString(_hnsecs, 10).idup ~ "]", __FILE__, __LINE__); } @@ -4708,58 +4736,16 @@ double _abs(double val) @safe pure nothrow @nogc } -/+ - Unfortunately, $(D snprintf) is not pure, so here's a way to convert - a number to a string which is. - +/ -string numToString(long value) @safe pure nothrow -{ - try - { - immutable negative = value < 0; - char[25] str; - size_t i = str.length; - - if(negative) - value = -value; - - while(1) - { - char digit = cast(char)('0' + value % 10); - value /= 10; - - str[--i] = digit; - assert(i > 0); - - if(value == 0) - break; - } - - if(negative) - return "-" ~ str[i .. $].idup; - else - return str[i .. $].idup; - } - catch(Exception e) - assert(0, "Something threw when nothing can throw."); -} - -unittest -{ - string a = numToString(1); - assert(a == "1"); - - a = numToString(-1); - assert(a == "-1"); -} - version(unittest) -string numToString(double value) @safe pure nothrow +string doubleToString(double value) @safe pure nothrow { - immutable negative = value < 0; - string result = (negative ? "-" : "") ~ numToString(cast(long)value); + string result; + if(value < 0 && cast(long)value == 0) + result = "-0"; + else + result = signedToTempString(cast(long)value, 10).idup; result ~= '.'; - result ~= numToString(cast(long)(_abs((value - cast(long)value) * 1000000))); + result ~= unsignedToTempString(cast(ulong)(_abs((value - cast(long)value) * 1_000_000) + .5), 10); while (result[$-1] == '0') result = result[0 .. $-1]; @@ -4769,21 +4755,21 @@ string numToString(double value) @safe pure nothrow unittest { auto a = 1.337; - auto aStr = numToString(a); - assert(aStr[0 .. 4] == "1.33", aStr); + auto aStr = doubleToString(a); + assert(aStr == "1.337", aStr); a = 0.337; - aStr = numToString(a); - assert(aStr[0 .. 4] == "0.33", aStr); + aStr = doubleToString(a); + assert(aStr == "0.337", aStr); a = -0.337; - aStr = numToString(a); - assert(aStr[0 .. 5] == "-0.33", aStr); + aStr = doubleToString(a); + assert(aStr == "-0.337", aStr); } version(unittest) const(char)* numToStringz()(long value) @safe pure nothrow { - return (numToString(value) ~ "\0").ptr; + return (signedToTempString(value, 10) ~ "\0").ptr; } @@ -4912,9 +4898,10 @@ version(unittest) void assertApprox(D, E)(D actual, { if(actual.length < lower.length || actual.length > upper.length) { - throw new AssertError(msg ~ ": [" ~ numToString(lower.length) ~ "] [" ~ - numToString(actual.length) ~ "] [" ~ - numToString(upper.length) ~ "]", __FILE__, line); + throw new AssertError(msg ~ (": [" ~ signedToTempString(lower.length, 10) ~ "] [" ~ + signedToTempString(actual.length, 10) ~ "] [" ~ + signedToTempString(upper.length, 10) ~ "]").idup, + __FILE__, line); } } @@ -4935,7 +4922,7 @@ version(unittest) void assertApprox()(long actual, size_t line = __LINE__) { if(actual < lower) - throw new AssertError(msg ~ ": lower: " ~ numToString(actual), __FILE__, line); + throw new AssertError(msg ~ ": lower: " ~ signedToTempString(actual, 10).idup, __FILE__, line); if(actual > upper) - throw new AssertError(msg ~ ": upper: " ~ numToString(actual), __FILE__, line); + throw new AssertError(msg ~ ": upper: " ~ signedToTempString(actual, 10).idup, __FILE__, line); } diff --git a/win32.mak b/win32.mak index 0557ef9aef..6aa403a0de 100644 --- a/win32.mak +++ b/win32.mak @@ -256,6 +256,9 @@ $(IMPDIR)\core\time.d : src\core\time.d $(IMPDIR)\core\vararg.d : src\core\vararg.d copy $** $@ +$(IMPDIR)\core\internal\abort.d : src\core\internal\abort.d + copy $** $@ + $(IMPDIR)\core\internal\convert.d : src\core\internal\convert.d copy $** $@ diff --git a/win64.mak b/win64.mak index bc7b1dedb7..81258ec598 100644 --- a/win64.mak +++ b/win64.mak @@ -266,6 +266,9 @@ $(IMPDIR)\core\time.d : src\core\time.d $(IMPDIR)\core\vararg.d : src\core\vararg.d copy $** $@ +$(IMPDIR)\core\internal\abort.d : src\core\internal\abort.d + copy $** $@ + $(IMPDIR)\core\internal\convert.d : src\core\internal\convert.d copy $** $@ From ea6213a51e63ba8a3dc035076fca5e08666e58a3 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 10 Aug 2015 21:50:14 -0700 Subject: [PATCH 048/768] add put(char) overload --- src/core/demangle.d | 78 ++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 76d563e227..258ad84c04 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -223,6 +223,12 @@ private struct Demangle } + char[] put(char c) + { + char[1] val = c; + return put(val[]); + } + char[] put( const(char)[] val ) { if( val.length ) @@ -705,21 +711,21 @@ private struct Demangle next(); put( "shared(" ); parseType(); - put( ")" ); + put( ')' ); pad( name ); return dst[beg .. len]; case 'x': // Const (x Type) next(); put( "const(" ); parseType(); - put( ")" ); + put( ')' ); pad( name ); return dst[beg .. len]; case 'y': // Immutable (y Type) next(); put( "immutable(" ); parseType(); - put( ")" ); + put( ')' ); pad( name ); return dst[beg .. len]; case 'N': @@ -731,13 +737,13 @@ private struct Demangle // TODO: Anything needed here? put( "inout(" ); parseType(); - put( ")" ); + put( ')' ); return dst[beg .. len]; case 'h': // TypeVector (Nh Type) next(); put( "__vector(" ); parseType(); - put( ")" ); + put( ')' ); return dst[beg .. len]; default: error(); @@ -753,9 +759,9 @@ private struct Demangle next(); auto num = sliceNumber(); parseType(); - put( "[" ); + put( '[' ); put( num ); - put( "]" ); + put( ']' ); pad( name ); return dst[beg .. len]; case 'H': // TypeAssocArray (H Type Type) @@ -763,15 +769,15 @@ private struct Demangle // skip t1 auto tx = parseType(); parseType(); - put( "[" ); + put( '[' ); put( tx ); - put( "]" ); + put( ']' ); pad( name ); return dst[beg .. len]; case 'P': // TypePointer (P Type) next(); parseType(); - put( "*" ); + put( '*' ); pad( name ); return dst[beg .. len]; case 'F': case 'U': case 'W': case 'V': case 'R': // TypeFunction @@ -1072,13 +1078,13 @@ private struct Demangle parseFuncAttr(); beg = len; - put( "(" ); + put( '(' ); scope(success) { - put( ")" ); + put( ')' ); auto t = len; parseType(); - put( " " ); + put( ' ' ); if( name.length ) { if( !contains( dst[0 .. len], name ) ) @@ -1166,7 +1172,7 @@ private struct Demangle return; case 'N': next(); - put( "-" ); + put( '-' ); parseIntegerValue( name, type ); return; case 'e': @@ -1176,17 +1182,17 @@ private struct Demangle case 'c': next(); parseReal(); - put( "+" ); + put( '+' ); match( 'c' ); parseReal(); - put( "i" ); + put( 'i' ); return; case 'a': case 'w': case 'd': char t = tok(); next(); auto n = decodeNumber(); match( '_' ); - put( "\"" ); + put( '"' ); foreach (i; 0..n) { auto a = ascii2hex( tok() ); next(); @@ -1202,7 +1208,7 @@ private struct Demangle put( buf[] ); } } - put( "\"" ); + put( '"' ); if( 'a' != t ) put( __ctfe ? [t] : (cast(char*) &t)[0 .. 1] ); return; @@ -1219,7 +1225,7 @@ private struct Demangle // A Number Value... // An array literal. Value is repeated Number times. next(); - put( "[" ); + put( '[' ); auto n = decodeNumber(); foreach( i; 0 .. n ) { @@ -1227,24 +1233,24 @@ private struct Demangle put( ", " ); parseValue(); } - put( "]" ); + put( ']' ); return; case 'H': LassocArray: // H Number Value... // An associative array literal. Value is repeated 2*Number times. next(); - put( "[" ); + put( '[' ); auto n = decodeNumber(); foreach( i; 0 .. n ) { if( i != 0 ) put( ", " ); parseValue(); - put(":"); + put(':'); parseValue(); } - put( "]" ); + put( ']' ); return; case 'S': // S Number Value... @@ -1252,7 +1258,7 @@ private struct Demangle next(); if( name.length ) put( name ); - put( "(" ); + put( '(' ); auto n = decodeNumber(); foreach( i; 0 .. n ) { @@ -1260,7 +1266,7 @@ private struct Demangle put( ", " ); parseValue(); } - put( ")" ); + put( ')' ); return; default: error(); @@ -1318,10 +1324,10 @@ private struct Demangle case 'a': if( num >= 0x20 && num < 0x7F ) { - put( "'" ); + put( '\'' ); char[1] tmp = cast(char)num; put( tmp[] ); - put( "'" ); + put( '\'' ); return; } put( "\\x" ); @@ -1330,12 +1336,12 @@ private struct Demangle case 'u': put( "'\\u" ); putAsHex( num, 4 ); - put( "'" ); + put( '\'' ); return; case 'w': put( "'\\U" ); putAsHex( num, 8 ); - put( "'" ); + put( '\'' ); return; default: assert( 0 ); @@ -1347,11 +1353,11 @@ private struct Demangle return; case 'h', 't', 'k': // ubyte, ushort, uint put( sliceNumber() ); - put( "u" ); + put( 'u' ); return; case 'l': // long put( sliceNumber() ); - put( "L" ); + put( 'L' ); return; case 'm': // ulong put( sliceNumber() ); @@ -1483,7 +1489,7 @@ private struct Demangle match( 'Z' ); if( pos - beg != n ) error( "Template name length mismatch" ); - put( ")" ); + put( ')' ); } @@ -1556,7 +1562,7 @@ private struct Demangle do { if( n++ ) - put( "." ); + put( '.' ); parseSymbolName(); if( isCallConvention( tok() ) ) @@ -1570,9 +1576,9 @@ private struct Demangle parseFuncAttr(); len = prevlen; - put( "(" ); + put( '(' ); parseFuncArguments(); - put( ")" ); + put( ')' ); if( !isDigit( tok() ) ) // voldemort types don't have a return type on the function { auto funclen = len; @@ -1618,7 +1624,7 @@ private struct Demangle parseType( name ); if( pos >= buf.length || (n != 0 && pos >= end) ) return; - put( "." ); + put( '.' ); } while( true ); } From 0bcf0fa3ecf2bf5009848a35f0d7f14761965669 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Tue, 11 Aug 2015 18:01:14 +0200 Subject: [PATCH 049/768] don't build stdio_msvc12.d into lib, create object files stdio_msvc12.obj and stdio_msvc14.obj instead --- mak/MANIFEST | 2 ++ mak/SRCS | 1 - src/core/sys/windows/stdio_msvc12.d | 5 ----- win64.mak | 14 +++++++++++++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/mak/MANIFEST b/mak/MANIFEST index 012347fcf5..e760921504 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -187,6 +187,8 @@ MANIFEST=\ src\core\sys\windows\threadaux.d \ src\core\sys\windows\windows.d \ src\core\sys\windows\winsock2.d \ + src\core\sys\windows\stdio_msvc12.d \ + src\core\sys\windows\stdio_msvc14.d \ \ src\gc\bits.d \ src\gc\config.d \ diff --git a/mak/SRCS b/mak/SRCS index f7a1bc27c8..834c094ec4 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -75,7 +75,6 @@ SRCS=\ src\core\sys\windows\threadaux.d \ src\core\sys\windows\windows.d \ src\core\sys\windows\winsock2.d \ - src\core\sys\windows\stdio_msvc12.d \ \ src\gc\bits.d \ src\gc\config.d \ diff --git a/src/core/sys/windows/stdio_msvc12.d b/src/core/sys/windows/stdio_msvc12.d index 44e944fc2b..e028a4048e 100644 --- a/src/core/sys/windows/stdio_msvc12.d +++ b/src/core/sys/windows/stdio_msvc12.d @@ -84,11 +84,6 @@ int _fgetc_nolock(FILE *fp) return _filbuf(fp); } -shared(FILE)* __acrt_iob_func(uint id) -{ - return __iob_func() + id; -} - @trusted { /// diff --git a/win64.mak b/win64.mak index bc7b1dedb7..21b1755dc3 100644 --- a/win64.mak +++ b/win64.mak @@ -27,10 +27,12 @@ CFLAGS=/Z7 /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include DRUNTIME_BASE=druntime$(MODEL) DRUNTIME=lib\$(DRUNTIME_BASE).lib GCSTUB=lib\gcstub$(MODEL).obj +STDIO_VS12=lib\stdio_msvc12_$(MODEL).obj +STDIO_VS14=lib\stdio_msvc14_$(MODEL).obj DOCFMT= -target : import copydir copy $(DRUNTIME) $(GCSTUB) +target : import copydir copy $(DRUNTIME) $(GCSTUB) stdio_vs $(mak\COPY) $(mak\DOCS) @@ -660,6 +662,16 @@ src\rt\minit.obj : src\rt\minit.asm $(GCSTUB) : src\gcstub\gc.d win64.mak $(DMD) -c -of$(GCSTUB) src\gcstub\gc.d $(DFLAGS) +################### VS 2015 init code ######################### + +stdio_vs: $(STDIO_VS14) $(STDIO_VS12) + +$(STDIO_VS12) : src\core\sys\windows\stdio_msvc12.d win64.mak + $(DMD) -c -of$(STDIO_VS12) src\core\sys\windows\stdio_msvc12.d $(DFLAGS) + +$(STDIO_VS14) : src\core\sys\windows\stdio_msvc14.d win64.mak + $(DMD) -c -of$(STDIO_VS14) src\core\sys\windows\stdio_msvc14.d $(DFLAGS) + ################### Library generation ######################### $(DRUNTIME): $(OBJS) $(SRCS) win64.mak From ceb8a77d9ef05f1e5febc03558c3102336263942 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 11 Aug 2015 18:12:55 -0700 Subject: [PATCH 050/768] remove another custom int to string converter --- src/core/demangle.d | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 258ad84c04..82655e3f14 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -139,16 +139,6 @@ private struct Demangle } - static char val2HexDigit( ubyte val ) - { - if (0x0 <= val && val <= 0x9) - return cast(char)(val + '0'); - if (0xa <= val && val <= 0xf) - return cast(ubyte)(val + 'a' - 0xa); - assert(0); - } - - ////////////////////////////////////////////////////////////////////////// // Data Output ////////////////////////////////////////////////////////////////////////// @@ -241,23 +231,20 @@ private struct Demangle } - char[] putAsHex( size_t val, int width = 0 ) + void putAsHex( size_t val, int width = 0 ) { - char[20] tmp; - int pos = tmp.length; + import core.internal.string; - while( val ) - { - int digit = val % 16; + UnsignedStringBuf buf; - tmp[--pos] = digit < 10 ? cast(char)(digit + '0') : - cast(char)((digit - 10) + 'a'); - val /= 16; - width--; + auto s = unsignedToTempString(val, buf, 16); + int slen = cast(int)s.length; + if (slen < width) + { + foreach(i; slen .. width) + put('0'); } - for( ; width > 0; width-- ) - tmp[--pos] = '0'; - return put( tmp[pos .. $] ); + put(s); } @@ -1204,8 +1191,8 @@ private struct Demangle } else { - char[4] buf = ['\\', 'x', val2HexDigit(v / 0x10), val2HexDigit(v % 0x10)]; - put( buf[] ); + put("\\x"); + putAsHex(v, 2); } } put( '"' ); From dd15906b6f3ec4469331f012b7d6dd3eb2f6eab6 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 15 Aug 2015 02:20:45 -0700 Subject: [PATCH 051/768] small refactor of demangle to reduce size --- src/core/demangle.d | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 82655e3f14..c696840a79 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -212,6 +212,12 @@ private struct Demangle return null; } + void putComma(size_t n) + { + pragma(inline, false); + if (n) + put(", "); + } char[] put(char c) { @@ -1010,10 +1016,7 @@ private struct Demangle default: break; } - if( n ) - { - put( ", " ); - } + putComma(n); if( 'M' == tok() ) { next(); @@ -1187,7 +1190,7 @@ private struct Demangle auto v = cast(char)((a << 4) | b); if (' ' <= v && v <= '~') // ASCII printable { - put( __ctfe ? [v] : (cast(char*) &v)[0 .. 1] ); + put(v); } else { @@ -1197,7 +1200,7 @@ private struct Demangle } put( '"' ); if( 'a' != t ) - put( __ctfe ? [t] : (cast(char*) &t)[0 .. 1] ); + put(t); return; case 'A': // NOTE: This is kind of a hack. An associative array literal @@ -1216,8 +1219,7 @@ private struct Demangle auto n = decodeNumber(); foreach( i; 0 .. n ) { - if( i != 0 ) - put( ", " ); + putComma(i); parseValue(); } put( ']' ); @@ -1231,8 +1233,7 @@ private struct Demangle auto n = decodeNumber(); foreach( i; 0 .. n ) { - if( i != 0 ) - put( ", " ); + putComma(i); parseValue(); put(':'); parseValue(); @@ -1249,8 +1250,7 @@ private struct Demangle auto n = decodeNumber(); foreach( i; 0 .. n ) { - if( i != 0 ) - put( ", " ); + putComma(i); parseValue(); } put( ')' ); @@ -1312,8 +1312,7 @@ private struct Demangle if( num >= 0x20 && num < 0x7F ) { put( '\'' ); - char[1] tmp = cast(char)num; - put( tmp[] ); + put( cast(char)num ); put( '\'' ); return; } @@ -1385,12 +1384,12 @@ private struct Demangle { case 'T': next(); - if( n ) put( ", " ); + putComma(n); parseType(); continue; case 'V': next(); - if( n ) put( ", " ); + putComma(n); // NOTE: In the few instances where the type is actually // desired in the output it should precede the value // generated by parseValue, so it is safe to simply @@ -1401,7 +1400,7 @@ private struct Demangle continue; case 'S': next(); - if( n ) put( ", " ); + putComma(n); if ( mayBeMangledNameArg() ) { From 3005e278f037eee57d70903fb516e43cf88e9065 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 15 Aug 2015 02:28:53 -0700 Subject: [PATCH 052/768] do overflow check correctly --- src/core/demangle.d | 11 +++++++---- src/rt/lifetime.d | 28 +++++++++++++++++----------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 82655e3f14..6355e9ca6a 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -361,12 +361,15 @@ private struct Demangle size_t val = 0; - foreach( i, e; num ) + foreach( c; num ) { - size_t n = e - '0'; - if( val > (val.max - n) / 10 ) + import core.checkedint : mulu, addu; + + bool overflow = false; + val = mulu(val, 10, overflow); + val = addu(val, c - '0', overflow); + if (overflow) error(); - val = val * 10 + n; } return val; } diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index b3b0293afb..7433dc9c65 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -749,9 +749,11 @@ body } else { - size_t reqsize = size * newcapacity; + import core.checkedint : mulu; - if (newcapacity == 0 || reqsize / newcapacity == size) + bool overflow = false; + size_t reqsize = mulu(size, newcapacity, overflow); + if (!overflow) goto Lcontinue; } Loverflow: @@ -908,12 +910,12 @@ extern (C) void[] _d_newarrayU(const TypeInfo ti, size_t length) pure nothrow } else { - auto newsize = size * length; - if (newsize / length == size) - { - size = newsize; + import core.checkedint : mulu; + + bool overflow = false; + size = mulu(size, length, overflow); + if (!overflow) goto Lcontinue; - } } Loverflow: onOutOfMemoryError(); @@ -1460,9 +1462,11 @@ body } else { - size_t newsize = sizeelem * newlength; + import core.checkedint : mulu; - if (newsize / newlength != sizeelem) + bool overflow = false; + size_t newsize = mulu(sizeelem, newlength, overflow); + if (overflow) goto Loverflow; } @@ -1643,9 +1647,11 @@ body } else { - size_t newsize = sizeelem * newlength; + import core.checkedint : mulu; - if (newsize / newlength != sizeelem) + bool overflow = false; + size_t newsize = mulu(sizeelem, newlength, overflow); + if (overflow) goto Loverflow; } debug(PRINTF) printf("newsize = %x, newlength = %x\n", newsize, newlength); From 411c01efca5ccd6a19b7130d6f8884b50224967f Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 15 Aug 2015 01:14:33 -0700 Subject: [PATCH 053/768] replace mangleC with Cprefix --- src/core/demangle.d | 39 +++++++++------------------------------ src/rt/config.d | 8 ++++---- 2 files changed, 13 insertions(+), 34 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 82655e3f14..cf9426d190 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -1890,36 +1890,15 @@ unittest static assert(!__traits(compiles, mangleFunc!(typeof(&fooCPP))(""))); } -/** -* Mangles a C function or variable. -* -* Params: -* sym = The C symbol to mangle. -* dst = An optional destination buffer. -* -* Returns: -* The mangled name for a C function or variable, i.e. -* an underscore is prepended or not, depending on the -* compiler/linker tool chain -*/ -char[] mangleC(const(char)[] sym, char[] dst = null) -{ - version(Win32) - enum string prefix = "_"; - else version(OSX) - enum string prefix = "_"; - else - enum string prefix = ""; - - auto len = sym.length + prefix.length; - if( dst.length < len ) - dst.length = len; - - dst[0 .. prefix.length] = prefix[]; - dst[prefix.length .. len] = sym[]; - return dst[0 .. len]; -} - +/*** + * C name mangling is done by adding a prefix on some platforms. + */ +version(Win32) + enum string cPrefix = "_"; +else version(OSX) + enum string cPrefix = "_"; +else + enum string cPrefix = ""; version(unittest) { diff --git a/src/rt/config.d b/src/rt/config.d index 9b3139d9ef..acffb5708a 100644 --- a/src/rt/config.d +++ b/src/rt/config.d @@ -36,20 +36,20 @@ module rt.config; // line arguments, i.e. if command line arguments are not disabled, they can override // options specified through the environment or embedded in the executable. -import core.demangle : mangleC; +import core.demangle : cPrefix; // put each variable in its own COMDAT by making them template instances template rt_envvars_enabled() { - pragma(mangle,mangleC("rt_envvars_enabled")) __gshared bool rt_envvars_enabled = false; + pragma(mangle, cPrefix ~ "rt_envvars_enabled") __gshared bool rt_envvars_enabled = false; } template rt_cmdline_enabled() { - pragma(mangle,mangleC("rt_cmdline_enabled")) __gshared bool rt_cmdline_enabled = true; + pragma(mangle, cPrefix ~ "rt_cmdline_enabled") __gshared bool rt_cmdline_enabled = true; } template rt_options() { - pragma(mangle,mangleC("rt_options")) __gshared string[] rt_options = []; + pragma(mangle, cPrefix ~ "rt_options") __gshared string[] rt_options = []; } import core.stdc.ctype : toupper; From 07d73a785731d26a877c2eba8ca03d78e9f2385c Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 15 Aug 2015 15:42:36 -0700 Subject: [PATCH 054/768] use range terminology --- src/core/demangle.d | 222 ++++++++++++++++++++++---------------------- 1 file changed, 113 insertions(+), 109 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index c696840a79..2f0205b0f4 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -276,8 +276,12 @@ private struct Demangle // Parsing Utility ////////////////////////////////////////////////////////////////////////// + @property bool empty() + { + return pos >= buf.length; + } - char tok() + @property char front() { if( pos < buf.length ) return buf[pos]; @@ -287,12 +291,12 @@ private struct Demangle void test( char val ) { - if( val != tok() ) + if( val != front ) error(); } - void next() + void popFront() { if( pos++ >= buf.length ) error(); @@ -302,7 +306,7 @@ private struct Demangle void match( char val ) { test( val ); - next(); + popFront(); } @@ -311,15 +315,15 @@ private struct Demangle foreach(char e; val ) { test( e ); - next(); + popFront(); } } void eat( char val ) { - if( val == tok() ) - next(); + if( val == front ) + popFront(); } @@ -342,9 +346,9 @@ private struct Demangle while( true ) { - auto t = tok(); + auto t = front; if (t >= '0' && t <= '9') - next(); + popFront(); else return buf[beg .. pos]; } @@ -387,22 +391,22 @@ private struct Demangle size_t tlen = 0; real val = void; - if( 'I' == tok() ) + if( 'I' == front ) { match( "INF" ); put( "real.infinity" ); return; } - if( 'N' == tok() ) + if( 'N' == front ) { - next(); - if( 'I' == tok() ) + popFront(); + if( 'I' == front ) { match( "INF" ); put( "-real.infinity" ); return; } - if( 'A' == tok() ) + if( 'A' == front ) { match( "AN" ); put( "real.nan" ); @@ -413,32 +417,32 @@ private struct Demangle tbuf[tlen++] = '0'; tbuf[tlen++] = 'X'; - if( !isHexDigit( tok() ) ) + if( !isHexDigit( front ) ) error( "Expected hex digit" ); - tbuf[tlen++] = tok(); + tbuf[tlen++] = front; tbuf[tlen++] = '.'; - next(); + popFront(); - while( isHexDigit( tok() ) ) + while( isHexDigit( front ) ) { - tbuf[tlen++] = tok(); - next(); + tbuf[tlen++] = front; + popFront(); } match( 'P' ); tbuf[tlen++] = 'p'; - if( 'N' == tok() ) + if( 'N' == front ) { tbuf[tlen++] = '-'; - next(); + popFront(); } else { tbuf[tlen++] = '+'; } - while( isDigit( tok() ) ) + while( isDigit( front ) ) { - tbuf[tlen++] = tok(); - next(); + tbuf[tlen++] = front; + popFront(); } tbuf[tlen] = 0; @@ -481,7 +485,7 @@ private struct Demangle if( !n || n > buf.length || n > buf.length - pos ) error( "LName must be at least 1 character" ); - if( '_' != tok() && !isAlpha( tok() ) ) + if( '_' != front && !isAlpha( front ) ) error( "Invalid character in LName" ); foreach(char e; buf[pos + 1 .. pos + n] ) { @@ -696,44 +700,44 @@ private struct Demangle debug(trace) printf( "parseType+\n" ); debug(trace) scope(success) printf( "parseType-\n" ); auto beg = len; - auto t = tok(); + auto t = front; switch( t ) { case 'O': // Shared (O Type) - next(); + popFront(); put( "shared(" ); parseType(); put( ')' ); pad( name ); return dst[beg .. len]; case 'x': // Const (x Type) - next(); + popFront(); put( "const(" ); parseType(); put( ')' ); pad( name ); return dst[beg .. len]; case 'y': // Immutable (y Type) - next(); + popFront(); put( "immutable(" ); parseType(); put( ')' ); pad( name ); return dst[beg .. len]; case 'N': - next(); - switch( tok() ) + popFront(); + switch( front ) { case 'g': // Wild (Ng Type) - next(); + popFront(); // TODO: Anything needed here? put( "inout(" ); parseType(); put( ')' ); return dst[beg .. len]; case 'h': // TypeVector (Nh Type) - next(); + popFront(); put( "__vector(" ); parseType(); put( ')' ); @@ -743,13 +747,13 @@ private struct Demangle assert( 0 ); } case 'A': // TypeArray (A Type) - next(); + popFront(); parseType(); put( "[]" ); pad( name ); return dst[beg .. len]; case 'G': // TypeStaticArray (G Number Type) - next(); + popFront(); auto num = sliceNumber(); parseType(); put( '[' ); @@ -758,7 +762,7 @@ private struct Demangle pad( name ); return dst[beg .. len]; case 'H': // TypeAssocArray (H Type Type) - next(); + popFront(); // skip t1 auto tx = parseType(); parseType(); @@ -768,7 +772,7 @@ private struct Demangle pad( name ); return dst[beg .. len]; case 'P': // TypePointer (P Type) - next(); + popFront(); parseType(); put( '*' ); pad( name ); @@ -780,20 +784,20 @@ private struct Demangle case 'S': // TypeStruct (S LName) case 'E': // TypeEnum (E LName) case 'T': // TypeTypedef (T LName) - next(); + popFront(); parseQualifiedName(); pad( name ); return dst[beg .. len]; case 'D': // TypeDelegate (D TypeFunction) - next(); + popFront(); parseTypeFunction( name, IsDelegate.yes ); return dst[beg .. len]; case 'n': // TypeNone (n) - next(); + popFront(); // TODO: Anything needed here? return dst[beg .. len]; case 'B': // TypeTuple (B Number Arguments) - next(); + popFront(); // TODO: Handle this. return dst[beg .. len]; case 'Z': // Internal symbol @@ -804,28 +808,28 @@ private struct Demangle // __Class // __Interface // __ModuleInfo - next(); + popFront(); return dst[beg .. len]; default: if (t >= 'a' && t <= 'w') { - next(); + popFront(); put( primitives[cast(size_t)(t - 'a')] ); pad( name ); return dst[beg .. len]; } else if (t == 'z') { - next(); - switch( tok() ) + popFront(); + switch( front ) { case 'i': - next(); + popFront(); put( "cent" ); pad( name ); return dst[beg .. len]; case 'k': - next(); + popFront(); put( "ucent" ); pad( name ); return dst[beg .. len]; @@ -910,25 +914,25 @@ private struct Demangle void parseCallConvention() { // CallConvention - switch( tok() ) + switch( front ) { case 'F': // D - next(); + popFront(); break; case 'U': // C - next(); + popFront(); put( "extern (C) " ); break; case 'W': // Windows - next(); + popFront(); put( "extern (Windows) " ); break; case 'V': // Pascal - next(); + popFront(); put( "extern (Pascal) " ); break; case 'R': // C++ - next(); + popFront(); put( "extern (C++) " ); break; default: @@ -940,33 +944,33 @@ private struct Demangle { // FuncAttrs breakFuncAttrs: - while( 'N' == tok() ) + while( 'N' == front ) { - next(); - switch( tok() ) + popFront(); + switch( front ) { case 'a': // FuncAttrPure - next(); + popFront(); put( "pure " ); continue; case 'b': // FuncAttrNoThrow - next(); + popFront(); put( "nothrow " ); continue; case 'c': // FuncAttrRef - next(); + popFront(); put( "ref " ); continue; case 'd': // FuncAttrProperty - next(); + popFront(); put( "@property " ); continue; case 'e': // FuncAttrTrusted - next(); + popFront(); put( "@trusted " ); continue; case 'f': // FuncAttrSafe - next(); + popFront(); put( "@safe " ); continue; case 'g': @@ -981,11 +985,11 @@ private struct Demangle pos--; break breakFuncAttrs; case 'i': // FuncAttrNogc - next(); + popFront(); put( "@nogc " ); continue; case 'j': // FuncAttrReturn - next(); + popFront(); put( "return " ); continue; default: @@ -999,54 +1003,54 @@ private struct Demangle // Arguments for( size_t n = 0; true; n++ ) { - debug(info) printf( "tok (%c)\n", tok() ); - switch( tok() ) + debug(info) printf( "tok (%c)\n", front ); + switch( front ) { case 'X': // ArgClose (variadic T t...) style) - next(); + popFront(); put( "..." ); return; case 'Y': // ArgClose (variadic T t,...) style) - next(); + popFront(); put( ", ..." ); return; case 'Z': // ArgClose (not variadic) - next(); + popFront(); return; default: break; } putComma(n); - if( 'M' == tok() ) + if( 'M' == front ) { - next(); + popFront(); put( "scope " ); } - if( 'N' == tok() ) + if( 'N' == front ) { - next(); - if( 'k' == tok() ) // Return (Nk Parameter2) + popFront(); + if( 'k' == front ) // Return (Nk Parameter2) { - next(); + popFront(); put( "return " ); } else pos--; } - switch( tok() ) + switch( front ) { case 'J': // out (J Type) - next(); + popFront(); put( "out " ); parseType(); continue; case 'K': // ref (K Type) - next(); + popFront(); put( "ref " ); parseType(); continue; case 'L': // lazy (L Type) - next(); + popFront(); put( "lazy " ); parseType(); continue; @@ -1145,32 +1149,32 @@ private struct Demangle debug(trace) printf( "parseValue+\n" ); debug(trace) scope(success) printf( "parseValue-\n" ); -// printf( "*** %c\n", tok() ); - switch( tok() ) +// printf( "*** %c\n", front ); + switch( front ) { case 'n': - next(); + popFront(); put( "null" ); return; case 'i': - next(); - if( '0' > tok() || '9' < tok() ) + popFront(); + if( '0' > front || '9' < front ) error( "Number expected" ); goto case; case '0': .. case '9': parseIntegerValue( name, type ); return; case 'N': - next(); + popFront(); put( '-' ); parseIntegerValue( name, type ); return; case 'e': - next(); + popFront(); parseReal(); return; case 'c': - next(); + popFront(); parseReal(); put( '+' ); match( 'c' ); @@ -1178,15 +1182,15 @@ private struct Demangle put( 'i' ); return; case 'a': case 'w': case 'd': - char t = tok(); - next(); + char t = front; + popFront(); auto n = decodeNumber(); match( '_' ); put( '"' ); foreach (i; 0..n) { - auto a = ascii2hex( tok() ); next(); - auto b = ascii2hex( tok() ); next(); + auto a = ascii2hex( front ); popFront(); + auto b = ascii2hex( front ); popFront(); auto v = cast(char)((a << 4) | b); if (' ' <= v && v <= '~') // ASCII printable { @@ -1214,7 +1218,7 @@ private struct Demangle goto LassocArray; // A Number Value... // An array literal. Value is repeated Number times. - next(); + popFront(); put( '[' ); auto n = decodeNumber(); foreach( i; 0 .. n ) @@ -1228,7 +1232,7 @@ private struct Demangle LassocArray: // H Number Value... // An associative array literal. Value is repeated 2*Number times. - next(); + popFront(); put( '[' ); auto n = decodeNumber(); foreach( i; 0 .. n ) @@ -1243,7 +1247,7 @@ private struct Demangle case 'S': // S Number Value... // A struct literal. Value is repeated Number times. - next(); + popFront(); if( name.length ) put( name ); put( '(' ); @@ -1377,29 +1381,29 @@ private struct Demangle for( size_t n = 0; true; n++ ) { - if( tok() == 'H' ) - next(); + if( front == 'H' ) + popFront(); - switch( tok() ) + switch( front ) { case 'T': - next(); + popFront(); putComma(n); parseType(); continue; case 'V': - next(); + popFront(); putComma(n); // NOTE: In the few instances where the type is actually // desired in the output it should precede the value // generated by parseValue, so it is safe to simply // decrement len and let put/append do its thing. - char t = tok(); // peek at type for parseValue + char t = front; // peek at type for parseValue char[] name; silent( name = parseType() ); parseValue( name, t ); continue; case 'S': - next(); + popFront(); putComma(n); if ( mayBeMangledNameArg() ) @@ -1506,7 +1510,7 @@ private struct Demangle // LName -> Number // TemplateInstanceName -> Number "__T" - switch( tok() ) + switch( front ) { case '0': .. case '9': if( mayBeTemplateInstanceName() ) @@ -1551,7 +1555,7 @@ private struct Demangle put( '.' ); parseSymbolName(); - if( isCallConvention( tok() ) ) + if( isCallConvention( front ) ) { // try to demangle a function, in case we are pointing to some function local auto prevpos = pos; @@ -1565,12 +1569,12 @@ private struct Demangle put( '(' ); parseFuncArguments(); put( ')' ); - if( !isDigit( tok() ) ) // voldemort types don't have a return type on the function + if( !isDigit( front ) ) // voldemort types don't have a return type on the function { auto funclen = len; parseType(); - if( !isDigit( tok() ) ) + if( !isDigit( front ) ) { // not part of a qualified name, so back up pos = prevpos; @@ -1580,7 +1584,7 @@ private struct Demangle len = funclen; // remove return type from qualified name } } - } while( isDigit( tok() ) ); + } while( isDigit( front ) ); return dst[beg .. len]; } @@ -1604,8 +1608,8 @@ private struct Demangle { name = parseQualifiedName(); debug(info) printf( "name (%.*s)\n", cast(int) name.length, name.ptr ); - if( 'M' == tok() ) - next(); // has 'this' pointer + if( 'M' == front ) + popFront(); // has 'this' pointer if( AddType.yes == addType ) parseType( name ); if( pos >= buf.length || (n != 0 && pos >= end) ) From c3a9ff68b46f15cfd0bf27130dfacb1d1fdf7870 Mon Sep 17 00:00:00 2001 From: rsw0x Date: Thu, 20 Aug 2015 16:00:35 -0400 Subject: [PATCH 055/768] Fix issue detecting AMD core count --- src/core/cpuid.d | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/core/cpuid.d b/src/core/cpuid.d index 10eecad71d..ebe8e5fb4b 100644 --- a/src/core/cpuid.d +++ b/src/core/cpuid.d @@ -735,15 +735,10 @@ void cpuidX86() cpuid; mov c, ECX; } - uint apicsize = (c>>12) & 0xF; - if (apicsize == 0) { - // use legacy method - if (hyperThreadingBit) maxCores = c & 0xFF; - else maxCores = 1; - } else { - // maxcores = 2^ apicsize - maxCores = 1; - while (apicsize) { maxCores<<=1; --apicsize; } + //http://support.amd.com/TechDocs/25481.pdf pg.36 + maxCores = 1; + if (hyperThreadingBit) { + maxCores += c & 0xFF; } } From d1d9128a848483ef318b3d9fc1e7479d5e8812cc Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 21 Aug 2015 03:15:17 +0200 Subject: [PATCH 056/768] output coverage reports to $(ROOT) to avoid test interference - release and debug tests might run in parallel --- test/coverage/Makefile | 14 +++++++------- test/coverage/src-basic.lst.exp | 6 ++++-- test/coverage/src-merge.lst.exp | 5 ++++- test/coverage/src-merge_true.lst.exp | 3 ++- test/coverage/src/basic.d | 6 ++++-- test/coverage/src/merge.d | 5 ++++- test/coverage/src/merge_true.d | 3 ++- 7 files changed, 27 insertions(+), 15 deletions(-) diff --git a/test/coverage/Makefile b/test/coverage/Makefile index 6835e3c2fb..08f094467c 100644 --- a/test/coverage/Makefile +++ b/test/coverage/Makefile @@ -12,17 +12,17 @@ all: $(NORMAL_TESTS) $(MERGE_TESTS) $(NORMAL_TESTS): $(ROOT)/%.done: $(ROOT)/% @echo Testing $* - @rm -f src-$*.lst - $(QUIET)$(ROOT)/$* $(RUN_ARGS) - $(QUIET)$(DIFF) src-$*.lst.exp src-$*.lst + @rm -f $(ROOT)/src-$*.lst + $(QUIET)$(ROOT)/$* $(ROOT) $(RUN_ARGS) + $(QUIET)$(DIFF) src-$*.lst.exp $(ROOT)/src-$*.lst @touch $@ $(MERGE_TESTS): $(ROOT)/%.done: $(ROOT)/% @echo Testing $* - @rm -f src-$*.lst - $(QUIET)$(ROOT)/$* $(RUN_ARGS) - $(QUIET)$(ROOT)/$* $(RUN_ARGS) - $(QUIET)$(DIFF) src-$*.lst.exp src-$*.lst + @rm -f $(ROOT)/src-$*.lst + $(QUIET)$(ROOT)/$* $(ROOT) $(RUN_ARGS) + $(QUIET)$(ROOT)/$* $(ROOT) $(RUN_ARGS) + $(QUIET)$(DIFF) src-$*.lst.exp $(ROOT)/src-$*.lst @touch $@ $(ROOT)/%: $(SRC)/%.d diff --git a/test/coverage/src-basic.lst.exp b/test/coverage/src-basic.lst.exp index 0721e80e0f..d6efe96395 100644 --- a/test/coverage/src-basic.lst.exp +++ b/test/coverage/src-basic.lst.exp @@ -1,5 +1,7 @@ - |int main() + |import core.runtime; + | + |void main(string[] args) |{ - 1| return 0; + 1| dmd_coverDestPath(args[1]); |} src/basic.d is 100% covered diff --git a/test/coverage/src-merge.lst.exp b/test/coverage/src-merge.lst.exp index 0c6e4fa7d3..ae02dfdb3d 100644 --- a/test/coverage/src-merge.lst.exp +++ b/test/coverage/src-merge.lst.exp @@ -1,5 +1,8 @@ - |int main() + |import core.runtime; + | + |int main(string[] args) |{ + 1| dmd_coverDestPath(args[1]); 1| return 0; |} src/merge.d is 100% covered diff --git a/test/coverage/src-merge_true.lst.exp b/test/coverage/src-merge_true.lst.exp index 0df4f6ca28..1d15f36d8c 100644 --- a/test/coverage/src-merge_true.lst.exp +++ b/test/coverage/src-merge_true.lst.exp @@ -1,7 +1,8 @@ |import core.runtime; | - |void main() + |void main(string[] args) |{ + 2| dmd_coverDestPath(args[1]); 2| dmd_coverSetMerge(true); |} src/merge_true.d is 100% covered diff --git a/test/coverage/src/basic.d b/test/coverage/src/basic.d index 905869dfa3..8569795296 100644 --- a/test/coverage/src/basic.d +++ b/test/coverage/src/basic.d @@ -1,4 +1,6 @@ -int main() +import core.runtime; + +void main(string[] args) { - return 0; + dmd_coverDestPath(args[1]); } diff --git a/test/coverage/src/merge.d b/test/coverage/src/merge.d index 905869dfa3..89938f7081 100644 --- a/test/coverage/src/merge.d +++ b/test/coverage/src/merge.d @@ -1,4 +1,7 @@ -int main() +import core.runtime; + +int main(string[] args) { + dmd_coverDestPath(args[1]); return 0; } diff --git a/test/coverage/src/merge_true.d b/test/coverage/src/merge_true.d index 3282e824e2..8a9a0481af 100644 --- a/test/coverage/src/merge_true.d +++ b/test/coverage/src/merge_true.d @@ -1,6 +1,7 @@ import core.runtime; -void main() +void main(string[] args) { + dmd_coverDestPath(args[1]); dmd_coverSetMerge(true); } From 5014d1330910bb00f7ee32e8435177114e8d9ba1 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 22 Aug 2015 16:07:40 +0200 Subject: [PATCH 057/768] ignore unsupported BOOTTIME in unittest --- src/core/time.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/time.d b/src/core/time.d index ce69579cf6..5319a12aee 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -2721,6 +2721,8 @@ unittest static if(typeStr != "second") { mixin("alias type = ClockType." ~ typeStr ~ ";"); + version (linux) if (typeStr == "bootTime" && !MonoTimeImpl!type.ticksPerSecond) + continue; auto v1 = MonoTimeImpl!type.currTime; auto v2 = MonoTimeImpl!type.currTime; scope(failure) @@ -2738,6 +2740,8 @@ unittest static if(otherStr != "second") { mixin("alias other = ClockType." ~ otherStr ~ ";"); + version (linux) if (typeStr == "bootTime" && !MonoTimeImpl!other.ticksPerSecond) + continue; static assert(is(typeof({auto o1 = MonTimeImpl!other.currTime; auto b = v1 <= o1;})) == is(type == other)); } From 95f054adf8c5507d3a01b8bcf5913825cb277487 Mon Sep 17 00:00:00 2001 From: Matt Kline Date: Thu, 13 Aug 2015 23:07:07 -0700 Subject: [PATCH 058/768] Import fallocate in sys/linux/fcntl.d This adds prototypes for posix_fallocate (which was present but commented out) and the linux-specific fallocate (http://man7.org/linux/man-pages/man2/fallocate.2.html). --- mak/COPY | 1 + src/core/sys/linux/fcntl.d | 24 ++++++++++++++++++++++++ src/core/sys/posix/fcntl.d | 4 +++- win32.mak | 3 +++ win64.mak | 3 +++ 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/core/sys/linux/fcntl.d diff --git a/mak/COPY b/mak/COPY index cb6341642c..73e20e0de3 100644 --- a/mak/COPY +++ b/mak/COPY @@ -61,6 +61,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\epoll.d \ $(IMPDIR)\core\sys\linux\errno.d \ $(IMPDIR)\core\sys\linux\execinfo.d \ + $(IMPDIR)\core\sys\linux\fcntl.d \ $(IMPDIR)\core\sys\linux\link.d \ $(IMPDIR)\core\sys\linux\termios.d \ $(IMPDIR)\core\sys\linux\time.d \ diff --git a/src/core/sys/linux/fcntl.d b/src/core/sys/linux/fcntl.d new file mode 100644 index 0000000000..fefe10a51a --- /dev/null +++ b/src/core/sys/linux/fcntl.d @@ -0,0 +1,24 @@ +module core.sys.linux.fcntl; + +public import core.sys.posix.fcntl; + +version (linux): +extern(C): +nothrow: + +// From Linux's unistd.h, stdio.h, and linux/fs.h +enum { + SEEK_DATA = 3, + SEEK_HOLE = 4 +} + +// From linux/falloc.h +enum { + FALLOC_FL_KEEP_SIZE = 0x01, + FALLOC_FL_PUNCH_HOLE = 0x02, + FALLOC_FL_NO_HIDE_STALE = 0x04 +} + +// Linux-specific fallocate +// (http://man7.org/linux/man-pages/man2/fallocate.2.html) +int fallocate(int fd, int mode, off_t offset, off_t len); diff --git a/src/core/sys/posix/fcntl.d b/src/core/sys/posix/fcntl.d index 73e91af3ba..f9b2ee37de 100644 --- a/src/core/sys/posix/fcntl.d +++ b/src/core/sys/posix/fcntl.d @@ -541,6 +541,9 @@ else int fcntl(int, int, ...); //int open(in char*, int, ...); +// Generic Posix fallocate +int posix_fallocate(int, off_t, off_t); + // // Advisory Information (ADV) // @@ -553,5 +556,4 @@ POSIX_FADV_DONTNEED POSIX_FADV_NOREUSE int posix_fadvise(int, off_t, off_t, int); -int posix_fallocate(int, off_t, off_t); */ diff --git a/win32.mak b/win32.mak index 0557ef9aef..954eac71ba 100644 --- a/win32.mak +++ b/win32.mak @@ -382,6 +382,9 @@ $(IMPDIR)\core\sys\linux\errno.d : src\core\sys\linux\errno.d $(IMPDIR)\core\sys\linux\execinfo.d : src\core\sys\linux\execinfo.d copy $** $@ +$(IMPDIR)\core\sys\linux\fcntl.d : src\core\sys\linux\fcntl.d + copy $** $@ + $(IMPDIR)\core\sys\linux\link.d : src\core\sys\linux\link.d copy $** $@ diff --git a/win64.mak b/win64.mak index bc7b1dedb7..e5001e2ece 100644 --- a/win64.mak +++ b/win64.mak @@ -392,6 +392,9 @@ $(IMPDIR)\core\sys\linux\errno.d : src\core\sys\linux\errno.d $(IMPDIR)\core\sys\linux\execinfo.d : src\core\sys\linux\execinfo.d copy $** $@ +$(IMPDIR)\core\sys\linux\fcntl.d : src\core\sys\linux\fcntl.d + copy $** $@ + $(IMPDIR)\core\sys\linux\link.d : src\core\sys\linux\link.d copy $** $@ From e018e201db0ac6d92dc36ea2bc58af5d597c3534 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Mon, 24 Aug 2015 20:23:58 +0200 Subject: [PATCH 059/768] temporarily add stdio_msvc12.d to the lib to allow successful build before updating dmd --- mak/SRCS | 1 + 1 file changed, 1 insertion(+) diff --git a/mak/SRCS b/mak/SRCS index 834c094ec4..f7a1bc27c8 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -75,6 +75,7 @@ SRCS=\ src\core\sys\windows\threadaux.d \ src\core\sys\windows\windows.d \ src\core\sys\windows\winsock2.d \ + src\core\sys\windows\stdio_msvc12.d \ \ src\gc\bits.d \ src\gc\config.d \ From 24e4079b664c6776caded219ee147378d591daf6 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 25 Aug 2015 08:40:26 +0200 Subject: [PATCH 060/768] properly fix failing test with missing CLOCK_BOOTTIME support - detect older kernel versions in makefile and skip ClockType.bootTime tests for those - turn DFLAGS and UDFLAGS into simply expanded variables (makes them settable individually and is easier to understand) https://www.gnu.org/software/make/manual/html_node/Flavors.html --- posix.mak | 21 +++++++++++++-------- src/core/time.d | 25 ++++++++++++++----------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/posix.mak b/posix.mak index 535feefac0..c022861168 100644 --- a/posix.mak +++ b/posix.mak @@ -27,7 +27,7 @@ INSTALL_DIR=../install DOCDIR=doc IMPDIR=import -override PIC:=$(if $(PIC),-fPIC,) +OPTIONAL_PIC:=$(if $(PIC),-fPIC,) ifeq (osx,$(OS)) DOTDLL:=.dylib @@ -54,13 +54,13 @@ ifeq (solaris,$(OS)) endif # Set DFLAGS -UDFLAGS=-conf= -Isrc -Iimport -w -dip25 $(MODEL_FLAG) $(PIC) +UDFLAGS:=-conf= -Isrc -Iimport -w -dip25 $(MODEL_FLAG) $(OPTIONAL_PIC) ifeq ($(BUILD),debug) UDFLAGS += -g -debug - DFLAGS=$(UDFLAGS) + DFLAGS:=$(UDFLAGS) else UDFLAGS += -O -release - DFLAGS=$(UDFLAGS) -inline # unittests don't compile with -inline + DFLAGS:=$(UDFLAGS) -inline # unittests don't compile with -inline endif ROOT_OF_THEM_ALL = generated @@ -168,8 +168,7 @@ $(ROOT)/threadasm.o : src/core/threadasm.S ######################## Create a shared library ############################## -$(DRUNTIMESO) $(DRUNTIMESOLIB) dll: override PIC:=-fPIC -$(DRUNTIMESO) $(DRUNTIMESOLIB) dll: DFLAGS+=-version=Shared +$(DRUNTIMESO) $(DRUNTIMESOLIB) dll: DFLAGS+=-version=Shared -fPIC dll: $(DRUNTIMESOLIB) $(DRUNTIMESO): $(OBJS) $(SRCS) @@ -201,6 +200,13 @@ unittest-%: $(MAKE) -f $(MAKEFILE) unittest OS=$(OS) MODEL=$(MODEL) DMD=$(DMD) BUILD=$* endif +ifeq ($(OS),linux) + old_kernel:=$(shell [ "$$(uname -r | cut -d'-' -f1)" \< "2.6.39" ] && echo 1) + ifeq ($(old_kernel),1) + UDFLAGS+=-version=Linux_Pre_2639 + endif +endif + ifeq ($(OS),freebsd) DISABLED_TESTS = else @@ -219,8 +225,7 @@ else UT_DRUNTIME:=$(ROOT)/unittest/libdruntime-ut$(DOTDLL) -$(UT_DRUNTIME): override PIC:=-fPIC -$(UT_DRUNTIME): UDFLAGS+=-version=Shared +$(UT_DRUNTIME): UDFLAGS+=-version=Shared -fPIC $(UT_DRUNTIME): $(OBJS) $(SRCS) $(DMD) $(UDFLAGS) -shared -unittest -of$@ $(SRCS) $(OBJS) $(LINKDL) -debuglib= -defaultlib= diff --git a/src/core/time.d b/src/core/time.d index 5319a12aee..67c0ef252a 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -157,7 +157,7 @@ version(CoreDdoc) enum ClockType /++ $(BLUE Linux-Only) - Uses $(D CLOCK_MONOTONIC_BOOTTIME). + Uses $(D CLOCK_BOOTTIME). +/ bootTime = 1, @@ -2714,15 +2714,20 @@ unittest auto norm2 = MonoTimeImpl!(ClockType.normal).currTime; assert(norm1 <= norm2); + static bool clockSupported(ClockType c) + { + version (Linux_Pre_2639) // skip CLOCK_BOOTTIME on older linux kernels + return c != ClockType.second && c != ClockType.bootTime; + else + return c != ClockType.second; // second doesn't work with MonoTimeImpl + + } + foreach(typeStr; __traits(allMembers, ClockType)) { - // ClockType.second is currently the only clock type that doesn't work - // with MonoTimeImpl. - static if(typeStr != "second") + mixin("alias type = ClockType." ~ typeStr ~ ";"); + static if (clockSupported(type)) { - mixin("alias type = ClockType." ~ typeStr ~ ";"); - version (linux) if (typeStr == "bootTime" && !MonoTimeImpl!type.ticksPerSecond) - continue; auto v1 = MonoTimeImpl!type.currTime; auto v2 = MonoTimeImpl!type.currTime; scope(failure) @@ -2737,11 +2742,9 @@ unittest foreach(otherStr; __traits(allMembers, ClockType)) { - static if(otherStr != "second") + mixin("alias other = ClockType." ~ otherStr ~ ";"); + static if (clockSupported(other)) { - mixin("alias other = ClockType." ~ otherStr ~ ";"); - version (linux) if (typeStr == "bootTime" && !MonoTimeImpl!other.ticksPerSecond) - continue; static assert(is(typeof({auto o1 = MonTimeImpl!other.currTime; auto b = v1 <= o1;})) == is(type == other)); } From 2c1112ca80484ee5011c52b561900e47f22592bd Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Thu, 27 Aug 2015 00:33:21 +0200 Subject: [PATCH 061/768] Use "weak" linkage to select code path depending on MS C runtime version --- mak/SRCS | 1 - src/core/sys/windows/stdio_msvc12.d | 103 ------------------- src/core/sys/windows/stdio_msvc14.d | 38 ------- src/rt/stdio_msvc.c | 154 ++++++++++++++++++++++++++++ win64.mak | 21 ++-- 5 files changed, 161 insertions(+), 156 deletions(-) delete mode 100644 src/core/sys/windows/stdio_msvc12.d delete mode 100644 src/core/sys/windows/stdio_msvc14.d create mode 100644 src/rt/stdio_msvc.c diff --git a/mak/SRCS b/mak/SRCS index f7a1bc27c8..834c094ec4 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -75,7 +75,6 @@ SRCS=\ src\core\sys\windows\threadaux.d \ src\core\sys\windows\windows.d \ src\core\sys\windows\winsock2.d \ - src\core\sys\windows\stdio_msvc12.d \ \ src\gc\bits.d \ src\gc\config.d \ diff --git a/src/core/sys/windows/stdio_msvc12.d b/src/core/sys/windows/stdio_msvc12.d deleted file mode 100644 index e028a4048e..0000000000 --- a/src/core/sys/windows/stdio_msvc12.d +++ /dev/null @@ -1,103 +0,0 @@ -/** -* This module provides MS VC runtime helper function to be used -* with VS versions before VS 2015 -* -* Copyright: Copyright Digital Mars 2015. -* License: Distributed under the -* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). -* (See accompanying file LICENSE) -* Source: $(DRUNTIMESRC core/sys/windows/_stdio_msvc12.d) -* Authors: Rainer Schuetze -*/ - -module core.sys.windows.stdio_msvc12; - -version( CRuntime_Microsoft ): - -import core.stdc.stdio; - -extern (C): -@system: -nothrow: -@nogc: - -alias stdio_FILE = core.stdc.stdio.FILE; - -FILE* __iob_func(); - -uint _set_output_format(uint format); - -enum _TWO_DIGIT_EXPONENT = 1; - -void init_msvc() -{ - // stdin,stdout and stderr internally in a static array __iob[3] - auto fp = __iob_func(); - stdin = cast(stdio_FILE*) &fp[0]; - stdout = cast(stdio_FILE*) &fp[1]; - stderr = cast(stdio_FILE*) &fp[2]; - - // ensure that sprintf generates only 2 digit exponent when writing floating point values - _set_output_format(_TWO_DIGIT_EXPONENT); -} - -struct _iobuf -{ - char* _ptr; - int _cnt; // _cnt and _base exchanged for VS2015 - char* _base; - int _flag; - int _file; - int _charbuf; - int _bufsiz; - char* _tmpfname; -} - -alias shared(_iobuf) FILE; - -int _filbuf(FILE *fp); -int _flsbuf(int c, FILE *fp); - -int _fputc_nolock(int c, FILE *fp) -{ - fp._cnt = fp._cnt - 1; - if (fp._cnt >= 0) - { - *fp._ptr = cast(char)c; - fp._ptr = fp._ptr + 1; - return cast(char)c; - } - else - return _flsbuf(c, fp); -} - -int _fgetc_nolock(FILE *fp) -{ - fp._cnt = fp._cnt - 1; - if (fp._cnt >= 0) - { - char c = *fp._ptr; - fp._ptr = fp._ptr + 1; - return c; - } - else - return _filbuf(fp); -} - -@trusted -{ - /// - void rewind(FILE* stream) - { - fseek(cast(stdio_FILE*)stream,0L,SEEK_SET); - stream._flag = stream._flag & ~_IOERR; - } - /// - pure void clearerr(FILE* stream) { stream._flag = stream._flag & ~(_IOERR|_IOEOF); } - /// - pure int feof(FILE* stream) { return stream._flag&_IOEOF; } - /// - pure int ferror(FILE* stream) { return stream._flag&_IOERR; } - /// - pure int fileno(FILE* stream) { return stream._file; } -} diff --git a/src/core/sys/windows/stdio_msvc14.d b/src/core/sys/windows/stdio_msvc14.d deleted file mode 100644 index f434543b99..0000000000 --- a/src/core/sys/windows/stdio_msvc14.d +++ /dev/null @@ -1,38 +0,0 @@ -/** -* This module provides MS VC runtime helper function to be used -* with VS versions VS 2015 or later -* -* Copyright: Copyright Digital Mars 2015. -* License: Distributed under the -* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). -* (See accompanying file LICENSE) -* Source: $(DRUNTIMESRC core/sys/windows/_stdio_msvc14.d) -* Authors: Rainer Schuetze -*/ - -module core.sys.windows.stdio_msvc14; - -version (CRuntime_Microsoft): - -import core.stdc.stdio; - -extern (C): -@system: -nothrow: -@nogc: - -shared(FILE)* __acrt_iob_func(uint); // VS2015+ - -void init_msvc() -{ - stdin = __acrt_iob_func(0); - stdout = __acrt_iob_func(1); - stderr = __acrt_iob_func(2); -} - -pragma(lib, "legacy_stdio_definitions.lib"); - -shared static this() -{ - // force linkage of ModuleInfo that includes the pragma(lib) above in its object file -} diff --git a/src/rt/stdio_msvc.c b/src/rt/stdio_msvc.c new file mode 100644 index 0000000000..92f0f9b7c6 --- /dev/null +++ b/src/rt/stdio_msvc.c @@ -0,0 +1,154 @@ +/** +* This module provides MS VC runtime helper function that +* wrap differences between different versions of the MS C runtime +* +* Copyright: Copyright Digital Mars 2015. +* License: Distributed under the +* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). +* (See accompanying file LICENSE) +* Source: $(DRUNTIMESRC rt/_stdio_msvc.d) +* Authors: Rainer Schuetze +*/ + +struct _iobuf +{ + char* _ptr; + int _cnt; // _cnt and _base exchanged for VS2015 + char* _base; + int _flag; + int _file; + int _charbuf; + int _bufsiz; + char* _tmpfname; + // additional members in VS2015 +}; + +typedef struct _iobuf FILE; +extern FILE* stdin; +extern FILE* stdout; +extern FILE* stderr; + +FILE* __acrt_iob_func(int hnd); // VS2015+ +FILE* __iob_func(); // VS2013- + +int _set_output_format(int format); // VS2013- + +//extern const char* __acrt_iob_func; +extern const char* _nullfunc = 0; + +#pragma comment(linker, "/alternatename:__acrt_iob_func=_nullfunc") +#pragma comment(linker, "/alternatename:__iob_func=_nullfunc") +#pragma comment(linker, "/alternatename:_set_output_format=_nullfunc") + +void init_msvc() +{ + if (&__acrt_iob_func != (void*) &_nullfunc) + { + stdin = __acrt_iob_func(0); + stdout = __acrt_iob_func(1); + stderr = __acrt_iob_func(2); + } + else if (&__iob_func != (void*) &_nullfunc) + { + FILE* fp = __iob_func(); + stdin = fp; + stdout = fp + 1; + stderr = fp + 1; + } + if (&_set_output_format != (void*) &_nullfunc) + _set_output_format(1); +} + +// VS2013- implements these functions as macros, VS2015+ provides symbols + +#pragma comment(linker, "/alternatename:_fputc_nolock=_msvc_fputc_nolock") +#pragma comment(linker, "/alternatename:_fgetc_nolock=_msvc_fgetc_nolock") +#pragma comment(linker, "/alternatename:rewind=_msvc_rewind") +#pragma comment(linker, "/alternatename:clearerr=_msvc_clearerr") +#pragma comment(linker, "/alternatename:feof=_msvc_feof") +#pragma comment(linker, "/alternatename:ferror=_msvc_ferror") +#pragma comment(linker, "/alternatename:fileno=_msvc_fileno") + +// VS2013- helper functions +int _filbuf(FILE *fp); +int _flsbuf(int c, FILE *fp); + +#pragma comment(linker, "/alternatename:_filbuf=_nullfunc") +#pragma comment(linker, "/alternatename:_flsbuf=_nullfunc") + +int _msvc_fputc_nolock(int c, FILE *fp) +{ + fp->_cnt = fp->_cnt - 1; + if (fp->_cnt >= 0) + { + *(fp->_ptr) = (char)c; + fp->_ptr = fp->_ptr + 1; + return (char)c; + } + else + return _flsbuf(c, fp); +} + +int _msvc_fgetc_nolock(FILE *fp) +{ + fp->_cnt = fp->_cnt - 1; + if (fp->_cnt >= 0) + { + char c = *(fp->_ptr); + fp->_ptr = fp->_ptr + 1; + return c; + } + else + return _filbuf(fp); +} + +enum +{ + _IOFBF = 0, + _IOLBF = 0x40, + _IONBF = 4, + _IOREAD = 1, // non-standard + _IOWRT = 2, // non-standard + _IOMYBUF = 8, // non-standard + _IOEOF = 0x10, // non-standard + _IOERR = 0x20, // non-standard + _IOSTRG = 0x40, // non-standard + _IORW = 0x80, // non-standard + _IOAPP = 0x200, // non-standard + _IOAPPEND = 0x200, // non-standard +}; + +enum +{ + SEEK_SET, + SEEK_CUR, + SEEK_END +}; + +int fseek(FILE *fp, long off, int whence); + +void _msvc_rewind(FILE* stream) +{ + fseek(stream, 0L, SEEK_SET); + stream->_flag = stream->_flag & ~_IOERR; +} +/// +void _msvc_clearerr(FILE* stream) +{ + stream->_flag = stream->_flag & ~(_IOERR|_IOEOF); +} + +int _msvc_feof(FILE* stream) +{ + return stream->_flag & _IOEOF; +} + +int _msvc_ferror(FILE* stream) +{ + return stream->_flag & _IOERR; +} + +int _msvc_fileno(FILE* stream) +{ + return stream->_file; +} diff --git a/win64.mak b/win64.mak index a34d423fec..30887bcd0e 100644 --- a/win64.mak +++ b/win64.mak @@ -27,12 +27,10 @@ CFLAGS=/Z7 /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include DRUNTIME_BASE=druntime$(MODEL) DRUNTIME=lib\$(DRUNTIME_BASE).lib GCSTUB=lib\gcstub$(MODEL).obj -STDIO_VS12=lib\stdio_msvc12_$(MODEL).obj -STDIO_VS14=lib\stdio_msvc14_$(MODEL).obj DOCFMT= -target : import copydir copy $(DRUNTIME) $(GCSTUB) stdio_vs +target : import copydir copy $(DRUNTIME) $(GCSTUB) $(mak\COPY) $(mak\DOCS) @@ -45,8 +43,8 @@ $(mak\SRCS) # NOTE: a pre-compiled minit.obj has been provided in dmd for Win32 and # minit.asm is not used by dmd for Linux -OBJS= errno_c.obj -OBJS_TO_DELETE= errno_c.obj +OBJS= errno_c.obj stdio_msvc_$(MODEL).obj +OBJS_TO_DELETE= errno_c.obj stdio_msvc_$(MODEL).obj ######################## Doc .html file generation ############################## @@ -657,6 +655,10 @@ $(IMPDIR)\etc\linux\memoryerror.d : src\etc\linux\memoryerror.d errno_c.obj : src\core\stdc\errno.c $(CC) -c $(CFLAGS) src\core\stdc\errno.c -Foerrno_c.obj +stdio_msvc_$(MODEL).obj : src\rt\stdio_msvc.c win64.mak + $(CC) -c -Fo$@ $(CFLAGS) src\rt\stdio_msvc.c + + src\rt\minit.obj : src\rt\minit.asm $(CC) -c $(CFLAGS) src\rt\minit.asm @@ -665,15 +667,6 @@ src\rt\minit.obj : src\rt\minit.asm $(GCSTUB) : src\gcstub\gc.d win64.mak $(DMD) -c -of$(GCSTUB) src\gcstub\gc.d $(DFLAGS) -################### VS 2015 init code ######################### - -stdio_vs: $(STDIO_VS14) $(STDIO_VS12) - -$(STDIO_VS12) : src\core\sys\windows\stdio_msvc12.d win64.mak - $(DMD) -c -of$(STDIO_VS12) src\core\sys\windows\stdio_msvc12.d $(DFLAGS) - -$(STDIO_VS14) : src\core\sys\windows\stdio_msvc14.d win64.mak - $(DMD) -c -of$(STDIO_VS14) src\core\sys\windows\stdio_msvc14.d $(DFLAGS) ################### Library generation ######################### From bc857db5d88d8dd9ac6620f20cc5da761be938ce Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 18 Aug 2015 02:11:26 -0700 Subject: [PATCH 062/768] cpuid: emit fewer fixups --- src/core/cpuid.d | 172 ++++++++++++++++++++++++++--------------------- 1 file changed, 97 insertions(+), 75 deletions(-) diff --git a/src/core/cpuid.d b/src/core/cpuid.d index ebe8e5fb4b..936d6e2484 100644 --- a/src/core/cpuid.d +++ b/src/core/cpuid.d @@ -311,6 +311,9 @@ public: /// The number of cache levels in the CPU. @property uint cacheLevels() { return numCacheLevels; } private: + +struct CpuFeatures +{ bool probablyIntel; // true = _probably_ an Intel processor, might be faking bool probablyAMD; // true = _probably_ an AMD processor string processorName; @@ -324,8 +327,23 @@ private: ulong xfeatures = 0; // XFEATURES_ENABLED_MASK uint maxCores = 1; uint maxThreads = 1; +} + +CpuFeatures cpuFeatures; + +/* Hide from the optimizer where cf (a register) is coming from, so that + * cf doesn't get "optimized away". The idea is to reference + * the global data through cf so not so many fixups are inserted + * into the executable image. + */ +CpuFeatures* getCpuFeatures() @nogc nothrow +{ + pragma(inline, false); + return &cpuFeatures; +} + // Note that this may indicate multi-core rather than hyperthreading. - @property bool hyperThreadingBit() { return (features&HTT_BIT)!=0;} + @property bool hyperThreadingBit() { return (cpuFeatures.features&HTT_BIT)!=0;} // feature flags CPUID1_EDX enum : uint @@ -527,7 +545,7 @@ void getcacheinfoCPUID4() if ((a&0x1F)==0) break; // no more caches uint numthreads = ((a>>14) & 0xFFF) + 1; uint numcores = ((a>>26) & 0x3F) + 1; - if (numcores > maxCores) maxCores = numcores; + if (numcores > cpuFeatures.maxCores) cpuFeatures.maxCores = numcores; if ((a&0x1F)!=1 && ((a&0x1F)!=3)) continue; // we only want data & unified caches ++number_of_sets; @@ -576,7 +594,7 @@ void getAMDcacheinfo() mov numcores, CL; } ++numcores; - if (numcores>maxCores) maxCores = numcores; + if (numcores>cpuFeatures.maxCores) cpuFeatures.maxCores = numcores; } asm pure nothrow @nogc { mov EAX, 0x8000_0006; // L2/L3 cache @@ -620,8 +638,8 @@ void getCpuInfo0B() if (level==0) threadsPerCore = b & 0xFFFF; else if (level==1) { - maxThreads = b & 0xFFFF; - maxCores = maxThreads / threadsPerCore; + cpuFeatures.maxThreads = b & 0xFFFF; + cpuFeatures.maxCores = cpuFeatures.maxThreads / threadsPerCore; } } @@ -632,7 +650,9 @@ void getCpuInfo0B() void cpuidX86() { - char * venptr = vendorID.ptr; + auto cf = getCpuFeatures(); + + char * venptr = cf.vendorID.ptr; uint a, b, c, d, a2; version(D_InlineAsm_X86) { @@ -667,8 +687,8 @@ void cpuidX86() max_extended_cpuid = a2; - probablyIntel = vendorID == "GenuineIntel"; - probablyAMD = vendorID == "AuthenticAMD"; + cf.probablyIntel = cf.vendorID == "GenuineIntel"; + cf.probablyAMD = cf.vendorID == "AuthenticAMD"; uint apic = 0; // brand index, apic id asm pure nothrow @nogc { mov EAX, 1; // model, stepping @@ -678,8 +698,8 @@ void cpuidX86() mov c, ECX; mov d, EDX; } - features = d; - miscfeatures = c; + cf.features = d; + cf.miscfeatures = c; if (max_cpuid >= 7) { @@ -693,10 +713,10 @@ void cpuidX86() mov ext, EBX; // HLE, AVX2, RTM, etc. } - extfeatures = ext; + cf.extfeatures = ext; } - if (miscfeatures & OSXSAVE_BIT) + if (cf.miscfeatures & OSXSAVE_BIT) { asm pure nothrow @nogc { mov ECX, 0; @@ -704,10 +724,10 @@ void cpuidX86() mov d, EDX; mov a, EAX; } - xfeatures = cast(ulong)d << 32 | a; + cf.xfeatures = cast(ulong)d << 32 | a; } - amdfeatures = 0; - amdmiscfeatures = 0; + cf.amdfeatures = 0; + cf.amdmiscfeatures = 0; if (max_extended_cpuid >= 0x8000_0001) { asm pure nothrow @nogc { mov EAX, 0x8000_0001; @@ -715,20 +735,20 @@ void cpuidX86() mov c, ECX; mov d, EDX; } - amdmiscfeatures = c; - amdfeatures = d; + cf.amdmiscfeatures = c; + cf.amdfeatures = d; } // Try to detect fraudulent vendorIDs - if (amd3dnow) probablyIntel = false; + if (amd3dnow) cf.probablyIntel = false; stepping = a & 0xF; uint fbase = (a >> 8) & 0xF; uint mbase = (a >> 4) & 0xF; family = ((fbase == 0xF) || (fbase == 0)) ? fbase + (a >> 20) & 0xFF : fbase; - model = ((fbase == 0xF) || (fbase == 6 && probablyIntel) ) ? + model = ((fbase == 0xF) || (fbase == 6 && cf.probablyIntel) ) ? mbase + ((a >> 12) & 0xF0) : mbase; - if (!probablyIntel && max_extended_cpuid >= 0x8000_0008) { + if (!cf.probablyIntel && max_extended_cpuid >= 0x8000_0008) { // determine max number of cores for AMD asm pure nothrow @nogc { mov EAX, 0x8000_0008; @@ -736,14 +756,14 @@ void cpuidX86() mov c, ECX; } //http://support.amd.com/TechDocs/25481.pdf pg.36 - maxCores = 1; + cf.maxCores = 1; if (hyperThreadingBit) { - maxCores += c & 0xFF; + cf.maxCores += c & 0xFF; } } if (max_extended_cpuid >= 0x8000_0004) { - char *procptr = processorNameBuffer.ptr; + char *procptr = cf.processorNameBuffer.ptr; version(D_InlineAsm_X86) { asm pure nothrow @nogc { @@ -799,11 +819,11 @@ void cpuidX86() // Intel P4 and PM pad at front with spaces. // Other CPUs pad at end with nulls. int start = 0, end = 0; - while (processorNameBuffer[start] == ' ') { ++start; } - while (processorNameBuffer[processorNameBuffer.length-end-1] == 0) { ++end; } - processorName = cast(string)(processorNameBuffer[start..$-end]); + while (cf.processorNameBuffer[start] == ' ') { ++start; } + while (cf.processorNameBuffer[cf.processorNameBuffer.length-end-1] == 0) { ++end; } + cf.processorName = cast(string)(cf.processorNameBuffer[start..$-end]); } else { - processorName = "Unknown CPU"; + cf.processorName = "Unknown CPU"; } // Determine cache sizes @@ -821,10 +841,10 @@ void cpuidX86() // Therefore, we try the AMD method unless it's an Intel chip. // If we still have no info, try the Intel methods. datacache[0].size = 0; - if (max_cpuid<2 || !probablyIntel) { + if (max_cpuid<2 || !cf.probablyIntel) { if (max_extended_cpuid >= 0x8000_0005) { getAMDcacheinfo(); - } else if (probablyAMD) { + } else if (cf.probablyAMD) { // According to AMDProcRecognitionAppNote, this means CPU // K5 model 0, or Am5x86 (model 4), or Am4x86DX4 (model 4) // Am5x86 has 16Kb 4-way unified data & code cache. @@ -864,8 +884,8 @@ void cpuidX86() // cores and hyperthreads. getCpuInfo0B(); } else { - if (hyperThreadingBit) maxThreads = (apic>>>16) & 0xFF; - else maxThreads = maxCores; + if (hyperThreadingBit) cf.maxThreads = (apic>>>16) & 0xFF; + else cf.maxThreads = cf.maxCores; } } @@ -947,6 +967,8 @@ void cpuidSparc() shared static this() { + auto cf = getCpuFeatures(); + if (hasCPUID()) { cpuidX86(); } else { @@ -975,57 +997,57 @@ shared static this() // Set the immortals _dataCaches = datacache; - _vendor = cast(string)vendorID; - _processor = processorName; - _x87onChip = (features&FPU_BIT)!=0; - _mmx = (features&MMX_BIT)!=0; - _sse = (features&SSE_BIT)!=0; - _sse2 = (features&SSE2_BIT)!=0; - _sse3 = (miscfeatures&SSE3_BIT)!=0; - _ssse3 = (miscfeatures&SSSE3_BIT)!=0; - _sse41 = (miscfeatures&SSE41_BIT)!=0; - _sse42 = (miscfeatures&SSE42_BIT)!=0; - _sse4a = (amdmiscfeatures&SSE4A_BIT)!=0; - _aes = (miscfeatures&AES_BIT)!=0; - _hasPclmulqdq = (miscfeatures&PCLMULQDQ_BIT)!=0; - _hasRdrand = (miscfeatures&RDRAND_BIT)!=0; + _vendor = cast(string)cf.vendorID; + _processor = cf.processorName; + _x87onChip = (cf.features&FPU_BIT)!=0; + _mmx = (cf.features&MMX_BIT)!=0; + _sse = (cf.features&SSE_BIT)!=0; + _sse2 = (cf.features&SSE2_BIT)!=0; + _sse3 = (cf.miscfeatures&SSE3_BIT)!=0; + _ssse3 = (cf.miscfeatures&SSSE3_BIT)!=0; + _sse41 = (cf.miscfeatures&SSE41_BIT)!=0; + _sse42 = (cf.miscfeatures&SSE42_BIT)!=0; + _sse4a = (cf.amdmiscfeatures&SSE4A_BIT)!=0; + _aes = (cf.miscfeatures&AES_BIT)!=0; + _hasPclmulqdq = (cf.miscfeatures&PCLMULQDQ_BIT)!=0; + _hasRdrand = (cf.miscfeatures&RDRAND_BIT)!=0; enum avx_mask = XF_SSE_BIT|XF_YMM_BIT; - _avx = (xfeatures & avx_mask) == avx_mask && (miscfeatures&AVX_BIT)!=0; + _avx = (cf.xfeatures & avx_mask) == avx_mask && (cf.miscfeatures&AVX_BIT)!=0; _vaes = avx && aes; _hasVpclmulqdq = avx && hasPclmulqdq; - _fma = avx && (miscfeatures&FMA_BIT)!=0; - _fp16c = avx && (miscfeatures&FP16C_BIT)!=0; - _avx2 = avx && (extfeatures & AVX2_BIT) != 0; - _hle = (extfeatures & HLE_BIT) != 0; - _rtm = (extfeatures & RTM_BIT) != 0; - _hasRdseed = (extfeatures&RDSEED_BIT)!=0; - _hasSha = (extfeatures&SHA_BIT)!=0; - _amd3dnow = (amdfeatures&AMD_3DNOW_BIT)!=0; - _amd3dnowExt = (amdfeatures&AMD_3DNOW_EXT_BIT)!=0; - _amdMmx = (amdfeatures&AMD_MMX_BIT)!=0; - _hasFxsr = (features&FXSR_BIT)!=0; - _hasCmov = (features&CMOV_BIT)!=0; - _hasRdtsc = (features&TIMESTAMP_BIT)!=0; - _hasCmpxchg8b = (features&CMPXCHG8B_BIT)!=0; - _hasCmpxchg16b = (miscfeatures&CMPXCHG16B_BIT)!=0; + _fma = avx && (cf.miscfeatures&FMA_BIT)!=0; + _fp16c = avx && (cf.miscfeatures&FP16C_BIT)!=0; + _avx2 = avx && (cf.extfeatures & AVX2_BIT) != 0; + _hle = (cf.extfeatures & HLE_BIT) != 0; + _rtm = (cf.extfeatures & RTM_BIT) != 0; + _hasRdseed = (cf.extfeatures&RDSEED_BIT)!=0; + _hasSha = (cf.extfeatures&SHA_BIT)!=0; + _amd3dnow = (cf.amdfeatures&AMD_3DNOW_BIT)!=0; + _amd3dnowExt = (cf.amdfeatures&AMD_3DNOW_EXT_BIT)!=0; + _amdMmx = (cf.amdfeatures&AMD_MMX_BIT)!=0; + _hasFxsr = (cf.features&FXSR_BIT)!=0; + _hasCmov = (cf.features&CMOV_BIT)!=0; + _hasRdtsc = (cf.features&TIMESTAMP_BIT)!=0; + _hasCmpxchg8b = (cf.features&CMPXCHG8B_BIT)!=0; + _hasCmpxchg16b = (cf.miscfeatures&CMPXCHG16B_BIT)!=0; _hasSysEnterSysExit = // The SYSENTER/SYSEXIT features were buggy on Pentium Pro and early PentiumII. // (REF: www.geoffchappell.com). - (probablyIntel && (family < 6 || (family==6 && (model< 3 || (model==3 && stepping<3))))) + (cf.probablyIntel && (family < 6 || (family==6 && (model< 3 || (model==3 && stepping<3))))) ? false - : (features & SYSENTERSYSEXIT_BIT)!=0; - _has3dnowPrefetch = (amdmiscfeatures&AMD_3DNOW_PREFETCH_BIT)!=0; - _hasLahfSahf = (amdmiscfeatures&LAHFSAHF_BIT)!=0; - _hasPopcnt = (miscfeatures&POPCNT_BIT)!=0; - _hasLzcnt = (amdmiscfeatures&LZCNT_BIT)!=0; - _isX86_64 = (amdfeatures&AMD64_BIT)!=0; - _isItanium = (features&IA64_BIT)!=0; - _hyperThreading = maxThreads>maxCores; - _threadsPerCPU = maxThreads; - _coresPerCPU = maxCores; - _preferAthlon = probablyAMD && family >=6; - _preferPentium4 = probablyIntel && family == 0xF; - _preferPentium1 = family < 6 || (family==6 && model < 0xF && !probablyIntel); + : (cf.features & SYSENTERSYSEXIT_BIT)!=0; + _has3dnowPrefetch = (cf.amdmiscfeatures&AMD_3DNOW_PREFETCH_BIT)!=0; + _hasLahfSahf = (cf.amdmiscfeatures&LAHFSAHF_BIT)!=0; + _hasPopcnt = (cf.miscfeatures&POPCNT_BIT)!=0; + _hasLzcnt = (cf.amdmiscfeatures&LZCNT_BIT)!=0; + _isX86_64 = (cf.amdfeatures&AMD64_BIT)!=0; + _isItanium = (cf.features&IA64_BIT)!=0; + _hyperThreading = cf.maxThreads>cf.maxCores; + _threadsPerCPU = cf.maxThreads; + _coresPerCPU = cf.maxCores; + _preferAthlon = cf.probablyAMD && family >=6; + _preferPentium4 = cf.probablyIntel && family == 0xF; + _preferPentium1 = family < 6 || (family==6 && model < 0xF && !cf.probablyIntel); } From 5ff263e65f0dade0458d23fb78dfea12c94eb2be Mon Sep 17 00:00:00 2001 From: Martin Date: Thu, 27 Aug 2015 21:51:30 +0200 Subject: [PATCH 063/768] Visual Studio 2015: exploit C99-conformant (v)snprintf in core.stdc.stdio --- src/core/stdc/stdio.d | 36 +++++++++++++++---------------- src/rt/stdio_msvc.c | 49 +++++++++++++++++++------------------------ 2 files changed, 39 insertions(+), 46 deletions(-) diff --git a/src/core/stdc/stdio.d b/src/core/stdc/stdio.d index ae2966a8a5..acdc57f83e 100644 --- a/src/core/stdc/stdio.d +++ b/src/core/stdc/stdio.d @@ -71,7 +71,7 @@ else version( CRuntime_Microsoft ) FOPEN_MAX = 20, /// FILENAME_MAX = 260, - /// + /// Actually int.max since Visual Studio 2015. TMP_MAX = 32767, /// _SYS_OPEN = 20, // non-standard @@ -79,11 +79,11 @@ else version( CRuntime_Microsoft ) /// enum int _NFILE = 512; // non-standard - /// + /// Removed since Visual Studio 2015. enum string _P_tmpdir = "\\"; // non-standard - /// + /// Removed since Visual Studio 2015. enum wstring _wP_tmpdir = "\\"; // non-standard - /// + /// Actually 260 since Visual Studio 2015. enum int L_tmpnam = _P_tmpdir.length + 12; } else version( CRuntime_Glibc ) @@ -543,23 +543,23 @@ else version( CRuntime_Microsoft ) _IOLBF = 0x40, /// _IONBF = 4, - /// + /// Removed since Visual Studio 2015. _IOREAD = 1, // non-standard - /// + /// Removed since Visual Studio 2015. _IOWRT = 2, // non-standard - /// + /// Removed since Visual Studio 2015. _IOMYBUF = 8, // non-standard - /// + /// Removed since Visual Studio 2015. _IOEOF = 0x10, // non-standard - /// + /// Removed since Visual Studio 2015. _IOERR = 0x20, // non-standard - /// + /// Removed since Visual Studio 2015. _IOSTRG = 0x40, // non-standard - /// + /// Removed since Visual Studio 2015. _IORW = 0x80, // non-standard - /// + /// Removed since Visual Studio 2015. _IOAPP = 0x200, // non-standard - /// + /// Removed since Visual Studio 2015. _IOAPPEND = 0x200, // non-standard } @@ -941,19 +941,19 @@ else version( CRuntime_Microsoft ) /// pure int fileno(FILE* stream); } + /// - int _snprintf(char* s, size_t n, in char* fmt, ...); + int _snprintf(char* s, size_t n, in char* format, ...); /// - alias _snprintf snprintf; + int snprintf(char* s, size_t n, in char* format, ...); /// - int _vsnprintf(char* s, size_t n, in char* format, va_list arg); + int _vsnprintf(char* s, size_t n, in char* format, va_list arg); /// - alias _vsnprintf vsnprintf; + int vsnprintf(char* s, size_t n, in char* format, va_list arg); /// int _fputc_nolock(int c, FILE *fp); - /// int _fgetc_nolock(FILE *fp); diff --git a/src/rt/stdio_msvc.c b/src/rt/stdio_msvc.c index 92f0f9b7c6..a81042643f 100644 --- a/src/rt/stdio_msvc.c +++ b/src/rt/stdio_msvc.c @@ -53,12 +53,21 @@ void init_msvc() FILE* fp = __iob_func(); stdin = fp; stdout = fp + 1; - stderr = fp + 1; + stderr = fp + 2; } if (&_set_output_format != (void*) &_nullfunc) - _set_output_format(1); + { + const int _TWO_DIGIT_EXPONENT = 1; + _set_output_format(_TWO_DIGIT_EXPONENT); + } } +// VS2015+ provides C99-conformant (v)snprintf functions, so weakly +// link to legacy _(v)snprintf (not C99-conformant!) for VS2013- only + +#pragma comment(linker, "/alternatename:snprintf=_snprintf") +#pragma comment(linker, "/alternatename:vsnprintf=_vsnprintf") + // VS2013- implements these functions as macros, VS2015+ provides symbols #pragma comment(linker, "/alternatename:_fputc_nolock=_msvc_fputc_nolock") @@ -70,13 +79,13 @@ void init_msvc() #pragma comment(linker, "/alternatename:fileno=_msvc_fileno") // VS2013- helper functions -int _filbuf(FILE *fp); -int _flsbuf(int c, FILE *fp); +int _filbuf(FILE* fp); +int _flsbuf(int c, FILE* fp); #pragma comment(linker, "/alternatename:_filbuf=_nullfunc") #pragma comment(linker, "/alternatename:_flsbuf=_nullfunc") -int _msvc_fputc_nolock(int c, FILE *fp) +int _msvc_fputc_nolock(int c, FILE* fp) { fp->_cnt = fp->_cnt - 1; if (fp->_cnt >= 0) @@ -89,7 +98,7 @@ int _msvc_fputc_nolock(int c, FILE *fp) return _flsbuf(c, fp); } -int _msvc_fgetc_nolock(FILE *fp) +int _msvc_fgetc_nolock(FILE* fp) { fp->_cnt = fp->_cnt - 1; if (fp->_cnt >= 0) @@ -104,38 +113,22 @@ int _msvc_fgetc_nolock(FILE *fp) enum { - _IOFBF = 0, - _IOLBF = 0x40, - _IONBF = 4, - _IOREAD = 1, // non-standard - _IOWRT = 2, // non-standard - _IOMYBUF = 8, // non-standard - _IOEOF = 0x10, // non-standard - _IOERR = 0x20, // non-standard - _IOSTRG = 0x40, // non-standard - _IORW = 0x80, // non-standard - _IOAPP = 0x200, // non-standard - _IOAPPEND = 0x200, // non-standard + SEEK_SET = 0, + _IOEOF = 0x10, + _IOERR = 0x20 }; -enum -{ - SEEK_SET, - SEEK_CUR, - SEEK_END -}; - -int fseek(FILE *fp, long off, int whence); +int fseek(FILE* fp, long off, int whence); void _msvc_rewind(FILE* stream) { fseek(stream, 0L, SEEK_SET); stream->_flag = stream->_flag & ~_IOERR; } -/// + void _msvc_clearerr(FILE* stream) { - stream->_flag = stream->_flag & ~(_IOERR|_IOEOF); + stream->_flag = stream->_flag & ~(_IOERR | _IOEOF); } int _msvc_feof(FILE* stream) From 146469cf3e0781e9199e4ddd5d3f11cf99f684b9 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 28 Aug 2015 16:29:50 -0700 Subject: [PATCH 064/768] fix Issue 14926 - Programs compiled using dmd 2.068 are generating dummy profilegc.log files --- src/rt/profilegc.d | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/rt/profilegc.d b/src/rt/profilegc.d index 165e9d9e3a..98217275de 100644 --- a/src/rt/profilegc.d +++ b/src/rt/profilegc.d @@ -130,21 +130,24 @@ shared static ~this() ++i; } - qsort(counts.ptr, counts.length, Result.sizeof, &Result.qsort_cmp); - - FILE* fp = logfilename.length == 0 ? stdout : fopen(logfilename.ptr, "w"); - if (fp) + if (counts.length) { - fprintf(fp, "bytes allocated, type, function, file:line\n"); - foreach (ref c; counts) + qsort(counts.ptr, counts.length, Result.sizeof, &Result.qsort_cmp); + + FILE* fp = logfilename.length == 0 ? stdout : fopen(logfilename.ptr, "w"); + if (fp) { - fprintf(fp, "%8llu\t%8.*s\n", cast(ulong)c.count, c.name.length, c.name.ptr); + fprintf(fp, "bytes allocated, type, function, file:line\n"); + foreach (ref c; counts) + { + fprintf(fp, "%8llu\t%8.*s\n", cast(ulong)c.count, c.name.length, c.name.ptr); + } + if (logfilename.length) + fclose(fp); } - if (logfilename.length) - fclose(fp); + else + fprintf(stderr, "cannot write profilegc log file '%.*s'", logfilename.length, logfilename.ptr); } - else - fprintf(stderr, "cannot write profilegc log file '%.*s'", logfilename.length, logfilename.ptr); } From 799a68968ee5c92452b863851fa32d762cba180f Mon Sep 17 00:00:00 2001 From: tsbockman Date: Sat, 29 Aug 2015 02:14:42 -0700 Subject: [PATCH 065/768] Fix Issue 14785 - Some corner cases are not handled properly by core.checkedint. --- src/core/checkedint.d | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/core/checkedint.d b/src/core/checkedint.d index a797c89c76..91f2a07191 100644 --- a/src/core/checkedint.d +++ b/src/core/checkedint.d @@ -218,8 +218,7 @@ long subs(long x, long y, ref bool overflow) { long r = cast(ulong)x - cast(ulong)y; if (x < 0 && y >= 0 && r >= 0 || - x >= 0 && y < 0 && r < 0 || - y == long.min) + x >= 0 && y < 0 && (r < 0 || y == long.min)) overflow = true; return r; } @@ -233,6 +232,8 @@ unittest assert(!overflow); assert(subs(long.min + 1, 1, overflow) == long.min); assert(!overflow); + assert(subs(-1L, long.min, overflow) == long.max); + assert(!overflow); assert(subs(long.max, -1, overflow) == long.min); assert(overflow); overflow = false; @@ -415,7 +416,8 @@ pragma(inline, true) long muls(long x, long y, ref bool overflow) { long r = cast(ulong)x * cast(ulong)y; - if (x && (r / x) != y) + enum not0or1 = ~1L; + if((x & not0or1) && ((r == y)? r : (r / x) != y)) overflow = true; return r; } @@ -434,6 +436,9 @@ unittest assert(muls(long.max, 2L, overflow) == (long.max * 2)); assert(overflow); overflow = false; + assert(muls(-1L, long.min, overflow) == long.min); + assert(overflow); + overflow = false; assert(muls(long.min, -1L, overflow) == long.min); assert(overflow); assert(muls(0L, 0L, overflow) == 0); From de0e1e10b4d88cc8e1657f326150f7565f4a9ef3 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 28 Aug 2015 11:16:43 +0200 Subject: [PATCH 066/768] ms32coff: add "_" to alternate symbol name declaration --- src/rt/stdio_msvc.c | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/rt/stdio_msvc.c b/src/rt/stdio_msvc.c index a81042643f..042dea85a2 100644 --- a/src/rt/stdio_msvc.c +++ b/src/rt/stdio_msvc.c @@ -36,9 +36,20 @@ int _set_output_format(int format); // VS2013- //extern const char* __acrt_iob_func; extern const char* _nullfunc = 0; -#pragma comment(linker, "/alternatename:__acrt_iob_func=_nullfunc") -#pragma comment(linker, "/alternatename:__iob_func=_nullfunc") -#pragma comment(linker, "/alternatename:_set_output_format=_nullfunc") +#if defined _M_IX86 + #define C_PREFIX "_" +#elif defined _M_X64 || defined _M_ARM || defined _M_ARM64 + #define C_PREFIX "" +#else + #error Unsupported architecture +#endif + +#define DECLARE_ALTERNATE_NAME(name, alternate_name) \ + __pragma(comment(linker, "/alternatename:" C_PREFIX #name "=" C_PREFIX #alternate_name)) + +DECLARE_ALTERNATE_NAME ("__acrt_iob_func", "_nullfunc"); +DECLARE_ALTERNATE_NAME ("__iob_func", "_nullfunc"); +DECLARE_ALTERNATE_NAME ("_set_output_format", "_nullfunc"); void init_msvc() { @@ -65,25 +76,25 @@ void init_msvc() // VS2015+ provides C99-conformant (v)snprintf functions, so weakly // link to legacy _(v)snprintf (not C99-conformant!) for VS2013- only -#pragma comment(linker, "/alternatename:snprintf=_snprintf") -#pragma comment(linker, "/alternatename:vsnprintf=_vsnprintf") +DECLARE_ALTERNATE_NAME ("snprintf", "_snprintf"); +DECLARE_ALTERNATE_NAME ("vsnprintf", "_vsnprintf"); // VS2013- implements these functions as macros, VS2015+ provides symbols -#pragma comment(linker, "/alternatename:_fputc_nolock=_msvc_fputc_nolock") -#pragma comment(linker, "/alternatename:_fgetc_nolock=_msvc_fgetc_nolock") -#pragma comment(linker, "/alternatename:rewind=_msvc_rewind") -#pragma comment(linker, "/alternatename:clearerr=_msvc_clearerr") -#pragma comment(linker, "/alternatename:feof=_msvc_feof") -#pragma comment(linker, "/alternatename:ferror=_msvc_ferror") -#pragma comment(linker, "/alternatename:fileno=_msvc_fileno") +DECLARE_ALTERNATE_NAME ("_fputc_nolock", "_msvc_fputc_nolock"); +DECLARE_ALTERNATE_NAME ("_fgetc_nolock", "_msvc_fgetc_nolock"); +DECLARE_ALTERNATE_NAME ("rewind", "_msvc_rewind"); +DECLARE_ALTERNATE_NAME ("clearerr", "_msvc_clearerr"); +DECLARE_ALTERNATE_NAME ("feof", "_msvc_feof"); +DECLARE_ALTERNATE_NAME ("ferror", "_msvc_ferror"); +DECLARE_ALTERNATE_NAME ("fileno", "_msvc_fileno"); // VS2013- helper functions int _filbuf(FILE* fp); int _flsbuf(int c, FILE* fp); -#pragma comment(linker, "/alternatename:_filbuf=_nullfunc") -#pragma comment(linker, "/alternatename:_flsbuf=_nullfunc") +DECLARE_ALTERNATE_NAME ("_filbuf", "_nullfunc"); +DECLARE_ALTERNATE_NAME ("_flsbuf", "_nullfunc"); int _msvc_fputc_nolock(int c, FILE* fp) { From da07b4fd187b2bac581e37a76eac37055d1f353c Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Sat, 29 Aug 2015 13:54:06 -0400 Subject: [PATCH 067/768] Ignore the generated folder Ignore the generated folder made from the make process --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 172f6929b7..d5ee640b12 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ doc/* lib/* obj/* import/* +generated/* druntime.json .DS_Store trace.def From b9a2777d4d78e5065e98b36e5fedf1b5e09313dc Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Sat, 29 Aug 2015 16:16:59 -0700 Subject: [PATCH 068/768] Move deprecations along in core.time. --- src/core/time.d | 78 +++++-------------------------------------------- 1 file changed, 7 insertions(+), 71 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index 67c0ef252a..411822db68 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -1393,18 +1393,7 @@ public: } - /++ - $(RED Deprecated. Please use $(LREF split) instead. Too frequently, - get or one of the individual unit getters is used when the - function that gave the desired behavior was $(LREF total). This - should make it more explicit and help prevent bugs. This function - will be removed in June 2015.) - - Returns the number of the given units in this $(D Duration) - (minus the larger units). - - $(D d.get!"minutes"()) is equivalent to $(D d.split().minutes). - +/ + // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ deprecated("Please use split instead. get was too frequently confused for total.") long get(string units)() const nothrow @nogc if(units == "weeks" || @@ -1451,16 +1440,7 @@ public: } - /++ - $(RED Deprecated. Please use $(LREF split) instead. Too frequently, - $(LREF get) or one of the individual unit getters is used when the - function that gave the desired behavior was $(LREF total). This - should make it more explicit and help prevent bugs. This function - will be removed in June 2015.) - - Returns the number of weeks in this $(D Duration) - (minus the larger units). - +/ + // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ deprecated(`Please use split instead. The functions which wrapped get were too frequently confused with total.`) @property long weeks() const nothrow @nogc { @@ -1484,16 +1464,7 @@ public: } - /++ - $(RED Deprecated. Please use $(LREF split) instead. Too frequently, - $(LREF get) or one of the individual unit getters is used when the - function that gave the desired behavior was $(LREF total). This - should make it more explicit and help prevent bugs. This function - will be removed in June 2015.) - - Returns the number of days in this $(D Duration) - (minus the larger units). - +/ + // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ deprecated(`Please use split instead. days was too frequently confused for total!"days".`) @property long days() const nothrow @nogc { @@ -1519,16 +1490,7 @@ public: } - /++ - $(RED Deprecated. Please use $(LREF split) instead. Too frequently, - $(LREF get) or one of the individual unit getters is used when the - function that gave the desired behavior was $(LREF total). This - should make it more explicit and help prevent bugs. This function - will be removed in June 2015.) - - Returns the number of hours in this $(D Duration) - (minus the larger units). - +/ + // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ deprecated(`Please use split instead. hours was too frequently confused for total!"hours".`) @property long hours() const nothrow @nogc { @@ -1554,16 +1516,7 @@ public: } - /++ - $(RED Deprecated. Please use $(LREF split) instead. Too frequently, - $(LREF get) or one of the individual unit getters is used when the - function that gave the desired behavior was $(LREF total). This - should make it more explicit and help prevent bugs. This function - will be removed in June 2015.) - - Returns the number of minutes in this $(D Duration) - (minus the larger units). - +/ + // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ deprecated(`Please use split instead. minutes was too frequently confused for total!"minutes".`) @property long minutes() const nothrow @nogc { @@ -1589,16 +1542,7 @@ public: } - /++ - $(RED Deprecated. Please use $(LREF split) instead. Too frequently, - $(LREF get) or one of the individual unit getters is used when the - function that gave the desired behavior was $(LREF total). This - should make it more explicit and help prevent bugs. This function - will be removed in June 2015.) - - Returns the number of seconds in this $(D Duration) - (minus the larger units). - +/ + // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ deprecated(`Please use split instead. seconds was too frequently confused for total!"seconds".`) @property long seconds() const nothrow @nogc { @@ -1624,15 +1568,7 @@ public: } - /++ - $(RED Deprecated. Please use $(LREF split) instead. Too frequently, - $(LREF get) or one of the individual unit getters is used when the - function that gave the desired behavior was $(LREF total). This - should make it more explicit and help prevent bugs. This function - will be removed in June 2015.) - - Returns the fractional seconds past the second in this $(D Duration). - +/ + // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ deprecated(`Please use split instead.`) @property FracSec fracSec() const nothrow { From 8912751b6a47a61eca23c7cdcd3e82b9382d6030 Mon Sep 17 00:00:00 2001 From: Matt Kline Date: Sun, 23 Aug 2015 20:42:24 -0700 Subject: [PATCH 069/768] Place SEEK_DATA, SEEK_HOLE in core.sys.linux.unistd Pull #1344 placed them with fallocate. While the three are often used in conjunction, SEEK_DATA and SEEK_HOLE are from Linux's unistd.h, to be used with lseek. See http://man7.org/linux/man-pages/man2/lseek.2.html --- mak/COPY | 1 + src/core/stdc/stdio.d | 6 +++--- src/core/sys/linux/fcntl.d | 6 ------ src/core/sys/linux/unistd.d | 17 +++++++++++++++++ win32.mak | 3 +++ win64.mak | 3 +++ 6 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 src/core/sys/linux/unistd.d diff --git a/mak/COPY b/mak/COPY index 73e20e0de3..1e46816774 100644 --- a/mak/COPY +++ b/mak/COPY @@ -66,6 +66,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\termios.d \ $(IMPDIR)\core\sys\linux\time.d \ $(IMPDIR)\core\sys\linux\tipc.d \ + $(IMPDIR)\core\sys\linux\unistd.d \ \ $(IMPDIR)\core\sys\linux\sys\inotify.d \ $(IMPDIR)\core\sys\linux\sys\mman.d \ diff --git a/src/core/stdc/stdio.d b/src/core/stdc/stdio.d index 8174878c34..c0d95dbdb7 100644 --- a/src/core/stdc/stdio.d +++ b/src/core/stdc/stdio.d @@ -222,11 +222,11 @@ else enum { - /// + /// Offset is relative to the beginning SEEK_SET, - /// + /// Offset is relative to the current position SEEK_CUR, - /// + /// Offset is relative to the end SEEK_END } diff --git a/src/core/sys/linux/fcntl.d b/src/core/sys/linux/fcntl.d index fefe10a51a..2d15aa118c 100644 --- a/src/core/sys/linux/fcntl.d +++ b/src/core/sys/linux/fcntl.d @@ -6,12 +6,6 @@ version (linux): extern(C): nothrow: -// From Linux's unistd.h, stdio.h, and linux/fs.h -enum { - SEEK_DATA = 3, - SEEK_HOLE = 4 -} - // From linux/falloc.h enum { FALLOC_FL_KEEP_SIZE = 0x01, diff --git a/src/core/sys/linux/unistd.d b/src/core/sys/linux/unistd.d new file mode 100644 index 0000000000..2f802e60b3 --- /dev/null +++ b/src/core/sys/linux/unistd.d @@ -0,0 +1,17 @@ +module core.sys.linux.unistd; + +public import core.sys.posix.unistd; + +version(linux): +extern(C): +nothrow: + +// Additional seek constants for sparse file handling +// from Linux's unistd.h, stdio.h, and linux/fs.h +// (see http://man7.org/linux/man-pages/man2/lseek.2.html) +enum { + /// Offset is relative to the next location containing data + SEEK_DATA = 3, + /// Offset is relative to the next hole (or EOF if file is not sparse) + SEEK_HOLE = 4 +} diff --git a/win32.mak b/win32.mak index 954eac71ba..c475e489ef 100644 --- a/win32.mak +++ b/win32.mak @@ -397,6 +397,9 @@ $(IMPDIR)\core\sys\linux\time.d : src\core\sys\linux\time.d $(IMPDIR)\core\sys\linux\tipc.d : src\core\sys\linux\tipc.d copy $** $@ +$(IMPDIR)\core\sys\linux\unistd.d : src\core\sys\linux\unistd.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\inotify.d : src\core\sys\linux\sys\inotify.d copy $** $@ diff --git a/win64.mak b/win64.mak index e5001e2ece..2a4286ea9c 100644 --- a/win64.mak +++ b/win64.mak @@ -407,6 +407,9 @@ $(IMPDIR)\core\sys\linux\time.d : src\core\sys\linux\time.d $(IMPDIR)\core\sys\linux\tipc.d : src\core\sys\linux\tipc.d copy $** $@ +$(IMPDIR)\core\sys\linux\unistd.d : src\core\sys\linux\unistd.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\inotify.d : src\core\sys\linux\sys\inotify.d copy $** $@ From 01293e38d6d733137cbf633d6c46bcdc9f07b2d4 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Mon, 31 Aug 2015 11:10:07 +0000 Subject: [PATCH 070/768] fix Issue 14755 - Could -profile=gc also give the number of allocations that led to X bytes being allocated? --- src/rt/profilegc.d | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/rt/profilegc.d b/src/rt/profilegc.d index 98217275de..858ae5e1f6 100644 --- a/src/rt/profilegc.d +++ b/src/rt/profilegc.d @@ -21,12 +21,14 @@ import core.stdc.string; import core.exception : onOutOfMemoryError; +struct Entry { size_t count, size; } + char[] buffer; -size_t[string] newCounts; +Entry[string] newCounts; __gshared { - size_t[string] globalNewCounts; + Entry[string] globalNewCounts; string logfilename = "profilegc.log"; } @@ -72,9 +74,12 @@ public void accumulate(string file, uint line, string funcname, string type, siz type.length + 1 + funcname.length + 1 + file.length + 1 + buflen] = buf[0 .. buflen]; if (auto pcount = cast(string)buffer[0 .. length] in newCounts) - *pcount += sz; // existing entry + { // existing entry + pcount.count++; + pcount.size += sz; + } else - newCounts[buffer[0..length].idup] = sz; // new entry + newCounts[buffer[0..length].idup] = Entry(1, sz); // new entry } // Merge thread local newCounts into globalNewCounts @@ -87,9 +92,10 @@ static ~this() if (globalNewCounts.length) { // Merge - foreach (name, count; newCounts) + foreach (name, entry; newCounts) { - globalNewCounts[name] += count; + globalNewCounts[name].count += entry.count; + globalNewCounts[name].size += entry.size; } } else @@ -108,14 +114,16 @@ shared static ~this() static struct Result { string name; - size_t count; + Entry entry; // qsort() comparator to sort by count field extern (C) static int qsort_cmp(const void *r1, const void *r2) { auto result1 = cast(Result*)r1; auto result2 = cast(Result*)r2; - ptrdiff_t cmp = result2.count - result1.count; + ptrdiff_t cmp = result2.entry.size - result1.entry.size; + if (cmp) return cmp < 0 ? -1 : 1; + cmp = result2.entry.count - result1.entry.count; return cmp < 0 ? -1 : (cmp > 0 ? 1 : 0); } } @@ -123,10 +131,10 @@ shared static ~this() Result[] counts = new Result[globalNewCounts.length]; size_t i; - foreach (name, count; globalNewCounts) + foreach (name, entry; globalNewCounts) { counts[i].name = name; - counts[i].count = count; + counts[i].entry = entry; ++i; } @@ -137,10 +145,12 @@ shared static ~this() FILE* fp = logfilename.length == 0 ? stdout : fopen(logfilename.ptr, "w"); if (fp) { - fprintf(fp, "bytes allocated, type, function, file:line\n"); + fprintf(fp, "bytes allocated, allocations, type, function, file:line\n"); foreach (ref c; counts) { - fprintf(fp, "%8llu\t%8.*s\n", cast(ulong)c.count, c.name.length, c.name.ptr); + fprintf(fp, "%15llu\t%15llu\t%8.*s\n", + cast(ulong)c.entry.size, cast(ulong)c.entry.count, + c.name.length, c.name.ptr); } if (logfilename.length) fclose(fp); From 8822115bc8d52fa61c15cef38fe77349f18747b9 Mon Sep 17 00:00:00 2001 From: Yazan Dabain Date: Fri, 21 Aug 2015 13:42:11 +0300 Subject: [PATCH 071/768] Adjust stacktrace to point at CALL instruction instead of return address --- src/core/runtime.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/runtime.d b/src/core/runtime.d index 986b17b870..5313dd6113 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -492,7 +492,9 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) stackPtr < stackBottom && numframes < MAXFRAMES; ) { - callstack[numframes++] = *(stackPtr + 1); + enum CALL_INSTRUCTION_SIZE = 1; // it may not be 1 but it is good enough to get + // in CALL instruction address range for backtrace + callstack[numframes++] = *(stackPtr + 1) - CALL_INSTRUCTION_SIZE; stackPtr = cast(void**) *stackPtr; } } From 9d3de5c4394e7029d8c48f3b8805c758ef07dac6 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 31 Aug 2015 18:53:49 -0700 Subject: [PATCH 072/768] fix Issue 14990 No rule to make target src/core/sys/stdio_msvc12.d --- mak/MANIFEST | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mak/MANIFEST b/mak/MANIFEST index 013aebd809..bc16229c63 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -88,6 +88,7 @@ MANIFEST=\ src\core\sys\linux\epoll.d \ src\core\sys\linux\errno.d \ src\core\sys\linux\execinfo.d \ + src\core\sys\linux\fcntl.d \ src\core\sys\linux\link.d \ src\core\sys\linux\stdio.d \ src\core\sys\linux\termios.d \ @@ -187,8 +188,6 @@ MANIFEST=\ src\core\sys\windows\threadaux.d \ src\core\sys\windows\windows.d \ src\core\sys\windows\winsock2.d \ - src\core\sys\windows\stdio_msvc12.d \ - src\core\sys\windows\stdio_msvc14.d \ \ src\gc\bits.d \ src\gc\config.d \ From 068be2edaa507d0e76f4e844c97e069e373951f6 Mon Sep 17 00:00:00 2001 From: Yazan Dabain Date: Fri, 21 Aug 2015 13:43:12 +0300 Subject: [PATCH 073/768] Add dwarf address to line resolver using .debug_line --- mak/SRCS | 3 + src/core/runtime.d | 59 ++-- src/rt/backtrace/dwarf.d | 483 +++++++++++++++++++++++++++++++ src/rt/backtrace/elf.d | 200 +++++++++++++ src/rt/util/container/common.d | 2 +- test/exceptions/Makefile | 13 + test/exceptions/line_trace.exp | 9 + test/exceptions/src/line_trace.d | 18 ++ 8 files changed, 769 insertions(+), 18 deletions(-) create mode 100644 src/rt/backtrace/dwarf.d create mode 100644 src/rt/backtrace/elf.d create mode 100644 test/exceptions/line_trace.exp create mode 100644 test/exceptions/src/line_trace.d diff --git a/mak/SRCS b/mak/SRCS index 834c094ec4..523b0bb674 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -129,6 +129,9 @@ SRCS=\ src\rt\trace.d \ src\rt\tracegc.d \ \ + src\rt\backtrace\dwarf.d \ + src\rt\backtrace\elf.d \ + \ src\rt\util\array.d \ src\rt\util\hash.d \ src\rt\util\random.d \ diff --git a/src/core/runtime.d b/src/core/runtime.d index 5313dd6113..0d1a4ab1f0 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -511,39 +511,64 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) override int opApply( scope int delegate(ref size_t, ref const(char[])) dg ) const { - version( Posix ) + version(Posix) { - // NOTE: The first 5 frames with the current implementation are + // NOTE: The first 4 frames with the current implementation are // inside core.runtime and the object code, so eliminate // these for readability. The alternative would be to // exclude the first N frames that are in a list of // mangled function names. - static enum FIRSTFRAME = 5; + enum FIRSTFRAME = 4; } - else version( Windows ) + else version(Windows) { // NOTE: On Windows, the number of frames to exclude is based on // whether the exception is user or system-generated, so // it may be necessary to exclude a list of function names // instead. - static enum FIRSTFRAME = 0; + enum FIRSTFRAME = 0; } - int ret = 0; - const framelist = backtrace_symbols( callstack.ptr, numframes ); - scope(exit) free(cast(void*) framelist); + version(linux) + { + import core.internal.traits : externDFunc; + + alias traceHandlerOpApplyImpl = externDFunc!( + "rt.backtrace.dwarf.traceHandlerOpApplyImpl", + int function(const void*[], scope int delegate(ref size_t, ref const(char[]))) + ); - for( int i = FIRSTFRAME; i < numframes; ++i ) + if (numframes >= FIRSTFRAME) + { + return traceHandlerOpApplyImpl( + callstack[FIRSTFRAME .. numframes], + dg + ); + } + else + { + return 0; + } + } + else { - char[4096] fixbuf; - auto buf = framelist[i][0 .. strlen(framelist[i])]; - auto pos = cast(size_t)(i - FIRSTFRAME); - buf = fixline( buf, fixbuf ); - ret = dg( pos, buf ); - if( ret ) - break; + const framelist = backtrace_symbols( callstack.ptr, numframes ); + scope(exit) free(cast(void*) framelist); + + int ret = 0; + for( int i = FIRSTFRAME; i < numframes; ++i ) + { + char[4096] fixbuf; + auto buf = framelist[i][0 .. strlen(framelist[i])]; + auto pos = cast(size_t)(i - FIRSTFRAME); + buf = fixline( buf, fixbuf ); + ret = dg( pos, buf ); + if( ret ) + break; + } + return ret; } - return ret; + } override string toString() const diff --git a/src/rt/backtrace/dwarf.d b/src/rt/backtrace/dwarf.d new file mode 100644 index 0000000000..4a4d6292e5 --- /dev/null +++ b/src/rt/backtrace/dwarf.d @@ -0,0 +1,483 @@ +/** + * This code handles backtrace generation using dwarf .debug_line section + * in ELF files for linux. + * + * Reference: http://www.dwarfstd.org/ + * + * Copyright: Copyright Digital Mars 2015 - 2015. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Yazan Dabain, Sean Kelly + * Source: $(DRUNTIMESRC src/rt/backtrace/dwarf.d) + */ + +module rt.backtrace.dwarf; + +version(linux): + +import rt.util.container.array; +import rt.backtrace.elf; + +import core.stdc.string : strlen, memchr; + +struct Location +{ + const(char)[] file = null; // file is missing directory, but DMD emits directory directly into file + int line = -1; + size_t address; +} + +int traceHandlerOpApplyImpl(const void*[] callstack, scope int delegate(ref size_t, ref const(char[])) dg) +{ + import core.stdc.stdio : snprintf; + import core.sys.linux.execinfo : backtrace_symbols; + import core.sys.posix.stdlib : free; + + const char** frameList = backtrace_symbols(callstack.ptr, cast(int) callstack.length); + scope(exit) free(cast(void*) frameList); + + // find address -> file, line mapping using dwarf debug_line + ElfFile file; + ElfSection dbgSection; + Array!Location locations; + if (ElfFile.openSelf(&file)) + { + auto stringSectionHeader = ElfSectionHeader(&file, file.ehdr.e_shstrndx); + auto stringSection = ElfSection(&file, &stringSectionHeader); + + auto dbgSectionIndex = findSectionByName(&file, &stringSection, ".debug_line"); + if (dbgSectionIndex != -1) + { + auto dbgSectionHeader = ElfSectionHeader(&file, dbgSectionIndex); + dbgSection = ElfSection(&file, &dbgSectionHeader); + // debug_line section found and loaded + + // resolve addresses + locations.length = callstack.length; + foreach(size_t i; 0 .. callstack.length) + locations[i].address = cast(size_t) callstack[i]; + + resolveAddresses(&dbgSection, locations[]); + } + } + + int ret = 0; + foreach (size_t i; 0 .. callstack.length) + { + char[1536] buffer = void; buffer[0] = 0; + char[256] addressBuffer = void; addressBuffer[0] = 0; + + if (locations.length > 0 && locations[i].line != -1) + snprintf(addressBuffer.ptr, addressBuffer.length, "%.*s:%d ", cast(int) locations[i].file.length, locations[i].file.ptr, locations[i].line); + else + addressBuffer[] = "??:? \0"; + + char[1024] symbolBuffer = void; + int bufferLength; + auto symbol = getDemangledSymbol(frameList[i][0 .. strlen(frameList[i])], symbolBuffer); + if (symbol.length > 0) + bufferLength = snprintf(buffer.ptr, buffer.length, "%s%.*s [0x%x]", addressBuffer.ptr, cast(int) symbol.length, symbol.ptr, callstack[i]); + else + bufferLength = snprintf(buffer.ptr, buffer.length, "%s[0x%x]", addressBuffer.ptr, callstack[i]); + + assert(bufferLength >= 0); + + auto output = buffer[0 .. bufferLength]; + auto pos = i; + ret = dg(pos, output); + if (ret) break; + } + return ret; +} + +private: + +// the lifetime of the Location data is the lifetime of the mmapped ElfSection +void resolveAddresses(ElfSection* debugLineSection, Location[] locations) @nogc nothrow +{ + size_t numberOfLocationsFound = 0; + + const(ubyte)[] dbg = debugLineSection.get(); + while (dbg.length > 0) + { + const(LPHeader)* lph = cast(const(LPHeader)*) dbg.ptr; + + if (lph.unitLength == 0xffff_ffff) // is 64-bit dwarf? + return; // unable to read 64-bit dwarf + + const(ubyte)[] program = dbg[ + lph.headerLength + LPHeader.minimumInstructionLength.offsetof .. + lph.unitLength + LPHeader.dwarfVersion.offsetof + ]; + + const(ubyte)[] standardOpcodeLengths = dbg[ + LPHeader.sizeof .. LPHeader.sizeof + lph.opcodeBase - 1 + ]; + + const(ubyte)[] pathData = dbg[ + LPHeader.sizeof + lph.opcodeBase - 1 .. $ + ]; + + Array!(const(char)[]) directories; + directories.length = (const(ubyte)[] bytes) { + // count number of directories + int count = 0; + foreach (i; 0 .. bytes.length - 1) + { + if (bytes[i] == 0) + { + count++; + if (bytes[i + 1] == 0) return count; + } + } + return count; + }(pathData); + + // fill directories array from dwarf section + int currentDirectoryIndex = 0; + while (pathData[0] != 0) + { + directories[currentDirectoryIndex] = cast(const(char)[]) pathData[0 .. strlen(cast(char*) (pathData.ptr))]; + pathData = pathData[directories[currentDirectoryIndex].length + 1 .. $]; + currentDirectoryIndex++; + } + + pathData = pathData[1 .. $]; + + Array!(const(char)[]) filenames; + filenames.length = (const(ubyte)[] bytes) + { + // count number of files + int count = 0; + while (bytes[0] != 0) + { + auto filename = cast(const(char)[]) bytes[0 .. strlen(cast(char*) (bytes.ptr))]; + bytes = bytes[filename.length + 1 .. $]; + bytes.readULEB128(); // dir index + bytes.readULEB128(); // last mod + bytes.readULEB128(); // file len + count++; + } + return count; + }(pathData); + + // fill filenames array from dwarf section + int currentFileIndex = 0; + while (pathData[0] != 0) + { + filenames[currentFileIndex] = cast(const(char)[]) pathData[0 .. strlen(cast(char*) (pathData.ptr))]; + pathData = pathData[filenames[currentFileIndex].length + 1 .. $]; + + auto dirIndex = pathData.readULEB128(); // unused + auto lastMod = pathData.readULEB128(); // unused + auto fileLen = pathData.readULEB128(); // unused + + currentFileIndex++; + } + + LocationInfo lastLoc = LocationInfo(-1, -1); + size_t lastAddress = 0x0; + + runStateMachine(lph, program, standardOpcodeLengths, + (size_t address, LocationInfo locInfo) + { + foreach (ref loc; locations) + { + if (loc.address == address) + { + loc.file = filenames[locInfo.file - 1]; + loc.line = locInfo.line; + numberOfLocationsFound++; + } + else if (loc.address < address && lastAddress < loc.address && lastAddress != 0) + { + loc.file = filenames[lastLoc.file - 1]; + loc.line = lastLoc.line; + numberOfLocationsFound++; + } + } + + lastAddress = address; + lastLoc = locInfo; + return numberOfLocationsFound < locations.length; + } + ); + + if (numberOfLocationsFound == locations.length) return; + dbg = dbg[lph.unitLength + LPHeader.dwarfVersion.offsetof .. $]; + } +} + +alias RunStateMachineCallback = bool delegate(size_t, LocationInfo) @nogc nothrow; +bool runStateMachine(const(LPHeader)* lpHeader, const(ubyte)[] program, const(ubyte)[] standardOpcodeLengths, scope RunStateMachineCallback callback) @nogc nothrow +{ + StateMachine machine; + machine.isStatement = lpHeader.defaultIsStatement; + + while (program.length > 0) + { + ubyte opcode = program.read!ubyte(); + if (opcode < lpHeader.opcodeBase) + { + switch (opcode) with (StandardOpcode) + { + case extendedOp: + size_t len = cast(size_t) program.readULEB128(); + ubyte eopcode = program.read!ubyte(); + + switch (eopcode) with (ExtendedOpcode) + { + case endSequence: + machine.isEndSequence = true; + // trace("endSequence ", "0x%x".format(m.address)); + if (!callback(machine.address, LocationInfo(machine.fileIndex, machine.line))) return true; + machine = StateMachine.init; + machine.isStatement = lpHeader.defaultIsStatement; + break; + + case setAddress: + size_t address = program.read!size_t(); + // trace("setAddress ", "0x%x".format(address)); + machine.address = address; + break; + + case defineFile: // TODO: add proper implementation + // trace("defineFile"); + program = program[len - 1 .. $]; + break; + + default: + // unknown opcode + // trace("unknown extended opcode ", eopcode); + program = program[len - 1 .. $]; + break; + } + + break; + + case copy: + // trace("copy"); + if (!callback(machine.address, LocationInfo(machine.fileIndex, machine.line))) return true; + machine.isBasicBlock = false; + machine.isPrologueEnd = false; + machine.isEpilogueBegin = false; + break; + + case advancePC: + ulong op = readULEB128(program); + // trace("advancePC ", op * lpHeader.minimumInstructionLength); + machine.address += op * lpHeader.minimumInstructionLength; + break; + + case advanceLine: + long ad = readSLEB128(program); + // trace("advanceLine ", ad); + machine.line += ad; + break; + + case setFile: + uint index = cast(uint) readULEB128(program); + // trace("setFile to ", index); + machine.fileIndex = index; + break; + + case setColumn: + uint col = cast(uint) readULEB128(program); + // trace("setColumn ", col); + machine.column = col; + break; + + case negateStatement: + // trace("negateStatement"); + machine.isStatement = !machine.isStatement; + break; + + case setBasicBlock: + // trace("setBasicBlock"); + machine.isBasicBlock = true; + break; + + case constAddPC: + machine.address += (255 - lpHeader.opcodeBase) / lpHeader.lineRange * lpHeader.minimumInstructionLength; + // trace("constAddPC ", "0x%x".format(machine.address)); + break; + + case fixedAdvancePC: + uint add = program.read!uint(); + // trace("fixedAdvancePC ", add); + machine.address += add; + break; + + case setPrologueEnd: + machine.isPrologueEnd = true; + // trace("setPrologueEnd"); + break; + + case setEpilogueBegin: + machine.isEpilogueBegin = true; + // trace("setEpilogueBegin"); + break; + + case setISA: + machine.isa = cast(uint) readULEB128(program); + // trace("setISA ", m.isa); + break; + + default: + // unimplemented/invalid opcode + return false; + } + } + else + { + opcode -= lpHeader.opcodeBase; + auto ainc = (opcode / lpHeader.lineRange) * lpHeader.minimumInstructionLength; + machine.address += ainc; + auto linc = lpHeader.lineBase + (opcode % lpHeader.lineRange); + machine.line += linc; + + // trace("special ", ainc, " ", linc); + if (!callback(machine.address, LocationInfo(machine.fileIndex, machine.line))) return true; + } + } + + return true; +} + +const(char)[] getDemangledSymbol(const(char)[] btSymbol, ref char[1024] buffer) +{ + // format is: module(_D6module4funcAFZv) [0x00000000] + // or: module(_D6module4funcAFZv+0x78) [0x00000000] + auto bptr = cast(char*) memchr(btSymbol.ptr, '(', btSymbol.length); + auto eptr = cast(char*) memchr(btSymbol.ptr, ')', btSymbol.length); + auto pptr = cast(char*) memchr(btSymbol.ptr, '+', btSymbol.length); + + if (pptr && pptr < eptr) + eptr = pptr; + + size_t symBeg, symEnd; + if (bptr++ && eptr) + { + symBeg = bptr - btSymbol.ptr; + symEnd = eptr - btSymbol.ptr; + } + + assert(symBeg <= symEnd); + assert(symEnd < btSymbol.length); + + import core.demangle; + return demangle(btSymbol[symBeg .. symEnd], buffer[]); +} + +T read(T)(ref const(ubyte)[] buffer) @nogc nothrow +{ + T result = *(cast(T*) buffer[0 .. T.sizeof].ptr); + buffer = buffer[T.sizeof .. $]; + return result; +} + +ulong readULEB128(ref const(ubyte)[] buffer) @nogc nothrow +{ + ulong val = 0; + uint shift = 0; + + while (true) + { + ubyte b = buffer.read!ubyte(); + + val |= (b & 0x7f) << shift; + if ((b & 0x80) == 0) break; + shift += 7; + } + + return val; +} + +unittest +{ + const(ubyte)[] data = [0xe5, 0x8e, 0x26, 0xDE, 0xAD, 0xBE, 0xEF]; + assert(readULEB128(data) == 624_485); + assert(data[] == [0xDE, 0xAD, 0xBE, 0xEF]); +} + +long readSLEB128(ref const(ubyte)[] buffer) @nogc nothrow +{ + long val = 0; + uint shift = 0; + int size = 8 << 3; + ubyte b; + + while (true) + { + b = buffer.read!ubyte(); + val |= (b & 0x7f) << shift; + shift += 7; + if ((b & 0x80) == 0) + break; + } + + if (shift < size && (b & 0x40) != 0) + val |= -(1 << shift); + + return val; +} + +enum StandardOpcode : ubyte +{ + extendedOp = 0, + copy = 1, + advancePC = 2, + advanceLine = 3, + setFile = 4, + setColumn = 5, + negateStatement = 6, + setBasicBlock = 7, + constAddPC = 8, + fixedAdvancePC = 9, + setPrologueEnd = 10, + setEpilogueBegin = 11, + setISA = 12, +} + +enum ExtendedOpcode : ubyte +{ + endSequence = 1, + setAddress = 2, + defineFile = 3, +} + +struct StateMachine +{ + size_t address = 0; + uint operationIndex = 0; + uint fileIndex = 1; + uint line = 1; + uint column = 0; + bool isStatement; + bool isBasicBlock = false; + bool isEndSequence = false; + bool isPrologueEnd = false; + bool isEpilogueBegin = false; + uint isa = 0; + uint discriminator = 0; +} + +struct LocationInfo +{ + int file; + int line; +} + +// 32-bit DWARF +align(1) +struct LPHeader +{ +align(1): + uint unitLength; + ushort dwarfVersion; + uint headerLength; + ubyte minimumInstructionLength; + bool defaultIsStatement; + byte lineBase; + ubyte lineRange; + ubyte opcodeBase; +} diff --git a/src/rt/backtrace/elf.d b/src/rt/backtrace/elf.d new file mode 100644 index 0000000000..62ecb7da68 --- /dev/null +++ b/src/rt/backtrace/elf.d @@ -0,0 +1,200 @@ +/** + * This code reads ELF files and sections using memory mapped IO. + * + * Reference: http://www.dwarfstd.org/ + * + * Copyright: Copyright Digital Mars 2015 - 2015. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Yazan Dabain + * Source: $(DRUNTIMESRC src/rt/backtrace/elf.d) + */ + +module rt.backtrace.elf; + +version(linux): + +import core.sys.posix.fcntl; +import core.sys.posix.unistd; + +public import core.sys.linux.elf; + +struct ElfFile +{ + static bool openSelf(ElfFile* file) @nogc nothrow + { + file.fd = open("/proc/self/exe", O_RDONLY); + if (file.fd >= 0) + { + // memory map header + file.ehdr = MMapRegion!Elf_Ehdr(file.fd, 0, Elf_Ehdr.sizeof); + if (file.ehdr.isValidElfHeader()) + return true; + else + return false; + } + else + return false; + } + + @disable this(this); + + ~this() @nogc nothrow + { + if (fd != -1) close(fd); + } + + int fd = -1; + MMapRegion!Elf_Ehdr ehdr; +} + +struct ElfSectionHeader +{ + this(const(ElfFile)* file, size_t index) @nogc nothrow + { + assert(Elf_Shdr.sizeof == file.ehdr.e_shentsize); + shdr = MMapRegion!Elf_Shdr( + file.fd, + file.ehdr.e_shoff + index * file.ehdr.e_shentsize, + file.ehdr.e_shentsize + ); + } + + @disable this(this); + + alias shdr this; + MMapRegion!Elf_Shdr shdr; +} + +struct ElfSection +{ + this(ElfFile* file, ElfSectionHeader* shdr) @nogc nothrow + { + data = MMapRegion!ubyte( + file.fd, + shdr.sh_offset, + shdr.sh_size, + ); + + length = shdr.sh_size; + } + + @disable this(this); + + const(ubyte)[] get() @nogc nothrow + { + return data.get()[0 .. length]; + } + + alias get this; + + MMapRegion!ubyte data; + size_t length; +} + +const(char)[] getSectionName(const(ElfFile)* file, ElfSection* stringSection, size_t nameIndex) @nogc nothrow +{ + const(ubyte)[] data = stringSection.get(); + + foreach (i; nameIndex .. data.length) + { + if (data[i] == 0) + return cast(const(char)[])data[nameIndex .. i]; + } + + return null; +} + +size_t findSectionByName(const(ElfFile)* file, ElfSection* stringSection, const(char)[] sectionName) @nogc nothrow +{ + foreach (s; 0 .. file.ehdr.e_shnum) + { + auto sectionHeader = ElfSectionHeader(file, s); + auto currentName = getSectionName(file, stringSection, sectionHeader.sh_name); + if (sectionName == currentName) + return s; // TODO: attempt to move ElfSectionHeader instead of returning index + } + + // not found + return -1; +} + +private: + +bool isValidElfHeader(const(Elf_Ehdr)* ehdr) @nogc nothrow +{ + if (ehdr.e_ident[EI_MAG0] != ELFMAG0) return false; + if (ehdr.e_ident[EI_MAG1] != ELFMAG1) return false; + if (ehdr.e_ident[EI_MAG2] != ELFMAG2) return false; + if (ehdr.e_ident[EI_MAG3] != ELFMAG3) return false; + + // elf class and data encoding should match target's config + if (ehdr.e_ident[EI_CLASS] != ELFCLASS) return false; + if (ehdr.e_ident[EI_DATA] != ELFDATA ) return false; + + return true; +} + +struct MMapRegion(T) +{ + import core.sys.posix.sys.mman; + import core.sys.posix.unistd; + + this(int fd, size_t offset, size_t length) @nogc nothrow + { + auto pagesize = sysconf(_SC_PAGESIZE); + + auto realOffset = (offset / pagesize) * pagesize; + offsetDiff = offset - realOffset; + realLength = length + offsetDiff; + + mptr = mmap(null, realLength, PROT_READ, MAP_PRIVATE, fd, realOffset); + } + + @disable this(this); + + ~this() @nogc nothrow + { + if (mptr) munmap(mptr, realLength); + } + + const(T)* get() const @nogc nothrow + { + return cast(T*)(mptr + offsetDiff); + } + + alias get this; + + size_t realLength; + size_t offsetDiff; + void* mptr; +} + +version(X86) +{ + alias Elf_Ehdr = Elf32_Ehdr; + alias Elf_Shdr = Elf32_Shdr; + enum ELFCLASS = ELFCLASS32; +} +else version(X86_64) +{ + alias Elf_Ehdr = Elf64_Ehdr; + alias Elf_Shdr = Elf64_Shdr; + enum ELFCLASS = ELFCLASS64; +} +else +{ + static assert(0, "unsupported architecture"); +} + +version(LittleEndian) +{ + alias ELFDATA = ELFDATA2LSB; +} +else version(BigEndian) +{ + alias ELFDATA = ELFDATA2MSB; +} +else +{ + static assert(0, "unsupported byte order"); +} diff --git a/src/rt/util/container/common.d b/src/rt/util/container/common.d index c9210bd3f7..dba90b87d4 100644 --- a/src/rt/util/container/common.d +++ b/src/rt/util/container/common.d @@ -12,7 +12,7 @@ public import core.stdc.stdlib : free; import core.internal.traits : dtorIsNothrow; nothrow: -void* xrealloc(void* ptr, size_t sz) +void* xrealloc(void* ptr, size_t sz) nothrow @nogc { import core.exception; diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index a8b5c586ba..87e15dd17e 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -1,6 +1,11 @@ include ../common.mak TESTS:=stderr_msg unittest_assert +ifeq ($(OS)-$(BUILD),linux-debug) + TESTS:=$(TESTS) line_trace + DIFF:=diff + SED:=sed +endif .PHONY: all clean all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) @@ -20,7 +25,15 @@ $(ROOT)/unittest_assert.done: $(ROOT)/unittest_assert $(QUIET)./$(ROOT)/unittest_assert $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF "unittest_assert msg" @touch $@ +$(ROOT)/line_trace.done: $(ROOT)/line_trace + @echo Testing line_trace + @rm -f line_trace.output + $(QUIET)./$(ROOT)/line_trace $(RUN_ARGS) >line_trace.output + $(QUIET)$(SED) "s/\[0x[0-9a-f]*\]/\[ADDR\]/g" line_trace.output | $(DIFF) line_trace.exp - + @touch $@ + $(ROOT)/unittest_assert: DFLAGS+=-unittest +$(ROOT)/line_trace: DFLAGS+=-L--export-dynamic $(ROOT)/%: $(SRC)/%.d $(QUIET)$(DMD) $(DFLAGS) -of$@ $< diff --git a/test/exceptions/line_trace.exp b/test/exceptions/line_trace.exp new file mode 100644 index 0000000000..8ddcb9f87c --- /dev/null +++ b/test/exceptions/line_trace.exp @@ -0,0 +1,9 @@ +object.Exception@src/line_trace.d(17): exception +---------------- +src/line_trace.d:17 void line_trace.f1() [ADDR] +src/line_trace.d:5 _Dmain [ADDR] +src/rt/dmain2.d:471 _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [ADDR] +src/rt/dmain2.d:446 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] +src/rt/dmain2.d:471 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [ADDR] +src/rt/dmain2.d:446 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] +src/rt/dmain2.d:479 _d_run_main [ADDR] diff --git a/test/exceptions/src/line_trace.d b/test/exceptions/src/line_trace.d new file mode 100644 index 0000000000..7bd583ae33 --- /dev/null +++ b/test/exceptions/src/line_trace.d @@ -0,0 +1,18 @@ +void main() +{ + try + { + f1(); + } + catch (Exception e) + { + import core.stdc.stdio; + auto str = e.toString(); + printf("%.*s\n", str.length, str.ptr); + } +} + +void f1() +{ + throw new Exception("exception"); +} From 2f5ff93f6883d53c44783accdb8970332e68ea74 Mon Sep 17 00:00:00 2001 From: Yazan Dabain Date: Thu, 3 Sep 2015 20:06:22 +0300 Subject: [PATCH 074/768] Reset lastAddress to 0 on sequence end + use first file:line found for address --- src/rt/backtrace/dwarf.d | 78 +++++++++++++++++++++++++++------------- 1 file changed, 53 insertions(+), 25 deletions(-) diff --git a/src/rt/backtrace/dwarf.d b/src/rt/backtrace/dwarf.d index 4a4d6292e5..cd45de1080 100644 --- a/src/rt/backtrace/dwarf.d +++ b/src/rt/backtrace/dwarf.d @@ -19,6 +19,8 @@ import rt.backtrace.elf; import core.stdc.string : strlen, memchr; +//debug = DwarfDebugMachine; + struct Location { const(char)[] file = null; // file is missing directory, but DMD emits directory directly into file @@ -94,11 +96,14 @@ private: // the lifetime of the Location data is the lifetime of the mmapped ElfSection void resolveAddresses(ElfSection* debugLineSection, Location[] locations) @nogc nothrow { + debug(DwarfDebugMachine) import core.stdc.stdio; + size_t numberOfLocationsFound = 0; const(ubyte)[] dbg = debugLineSection.get(); while (dbg.length > 0) { + debug(DwarfDebugMachine) printf("new debug program\n"); const(LPHeader)* lph = cast(const(LPHeader)*) dbg.ptr; if (lph.unitLength == 0xffff_ffff) // is 64-bit dwarf? @@ -137,6 +142,7 @@ void resolveAddresses(ElfSection* debugLineSection, Location[] locations) @nogc while (pathData[0] != 0) { directories[currentDirectoryIndex] = cast(const(char)[]) pathData[0 .. strlen(cast(char*) (pathData.ptr))]; + debug(DwarfDebugMachine) printf("dir: %s\n", pathData.ptr); pathData = pathData[directories[currentDirectoryIndex].length + 1 .. $]; currentDirectoryIndex++; } @@ -165,6 +171,7 @@ void resolveAddresses(ElfSection* debugLineSection, Location[] locations) @nogc while (pathData[0] != 0) { filenames[currentFileIndex] = cast(const(char)[]) pathData[0 .. strlen(cast(char*) (pathData.ptr))]; + debug(DwarfDebugMachine) printf("file: %s\n", pathData.ptr); pathData = pathData[filenames[currentFileIndex].length + 1 .. $]; auto dirIndex = pathData.readULEB128(); // unused @@ -177,27 +184,46 @@ void resolveAddresses(ElfSection* debugLineSection, Location[] locations) @nogc LocationInfo lastLoc = LocationInfo(-1, -1); size_t lastAddress = 0x0; + debug(DwarfDebugMachine) printf("program:\n"); runStateMachine(lph, program, standardOpcodeLengths, - (size_t address, LocationInfo locInfo) + (size_t address, LocationInfo locInfo, bool isEndSequence) { - foreach (ref loc; locations) + // If loc.line != -1, then it has been set previously. + // Some implementations (eg. dmd) write an address to + // the debug data multiple times, but so far I have found + // that the first occurrence to be the correct one. + foreach (ref loc; locations) if (loc.line == -1) { if (loc.address == address) { + debug(DwarfDebugMachine) printf("-- found for [0x%x]:\n", loc.address); + debug(DwarfDebugMachine) printf("-- file: %.*s\n", filenames[locInfo.file - 1].length, filenames[locInfo.file - 1].ptr); + debug(DwarfDebugMachine) printf("-- line: %d\n", locInfo.line); loc.file = filenames[locInfo.file - 1]; loc.line = locInfo.line; numberOfLocationsFound++; } else if (loc.address < address && lastAddress < loc.address && lastAddress != 0) { + debug(DwarfDebugMachine) printf("-- found for [0x%x]:\n", loc.address); + debug(DwarfDebugMachine) printf("-- file: %.*s\n", filenames[lastLoc.file - 1].length, filenames[lastLoc.file - 1].ptr); + debug(DwarfDebugMachine) printf("-- line: %d\n", lastLoc.line); loc.file = filenames[lastLoc.file - 1]; loc.line = lastLoc.line; numberOfLocationsFound++; } } - lastAddress = address; - lastLoc = locInfo; + if (isEndSequence) + { + lastAddress = 0; + } + else + { + lastAddress = address; + lastLoc = locInfo; + } + return numberOfLocationsFound < locations.length; } ); @@ -207,9 +233,11 @@ void resolveAddresses(ElfSection* debugLineSection, Location[] locations) @nogc } } -alias RunStateMachineCallback = bool delegate(size_t, LocationInfo) @nogc nothrow; +alias RunStateMachineCallback = bool delegate(size_t, LocationInfo, bool) @nogc nothrow; bool runStateMachine(const(LPHeader)* lpHeader, const(ubyte)[] program, const(ubyte)[] standardOpcodeLengths, scope RunStateMachineCallback callback) @nogc nothrow { + debug(DwarfDebugMachine) import core.stdc.stdio; + StateMachine machine; machine.isStatement = lpHeader.defaultIsStatement; @@ -228,26 +256,26 @@ bool runStateMachine(const(LPHeader)* lpHeader, const(ubyte)[] program, const(ub { case endSequence: machine.isEndSequence = true; - // trace("endSequence ", "0x%x".format(m.address)); - if (!callback(machine.address, LocationInfo(machine.fileIndex, machine.line))) return true; + debug(DwarfDebugMachine) printf("endSequence 0x%x\n", machine.address); + if (!callback(machine.address, LocationInfo(machine.fileIndex, machine.line), true)) return true; machine = StateMachine.init; machine.isStatement = lpHeader.defaultIsStatement; break; case setAddress: size_t address = program.read!size_t(); - // trace("setAddress ", "0x%x".format(address)); + debug(DwarfDebugMachine) printf("setAddress 0x%x\n", address); machine.address = address; break; case defineFile: // TODO: add proper implementation - // trace("defineFile"); + debug(DwarfDebugMachine) printf("defineFile\n"); program = program[len - 1 .. $]; break; default: // unknown opcode - // trace("unknown extended opcode ", eopcode); + debug(DwarfDebugMachine) printf("unknown extended opcode %d\n", cast(int) eopcode); program = program[len - 1 .. $]; break; } @@ -255,8 +283,8 @@ bool runStateMachine(const(LPHeader)* lpHeader, const(ubyte)[] program, const(ub break; case copy: - // trace("copy"); - if (!callback(machine.address, LocationInfo(machine.fileIndex, machine.line))) return true; + debug(DwarfDebugMachine) printf("copy 0x%x\n", machine.address); + if (!callback(machine.address, LocationInfo(machine.fileIndex, machine.line), false)) return true; machine.isBasicBlock = false; machine.isPrologueEnd = false; machine.isEpilogueBegin = false; @@ -264,62 +292,62 @@ bool runStateMachine(const(LPHeader)* lpHeader, const(ubyte)[] program, const(ub case advancePC: ulong op = readULEB128(program); - // trace("advancePC ", op * lpHeader.minimumInstructionLength); machine.address += op * lpHeader.minimumInstructionLength; + debug(DwarfDebugMachine) printf("advancePC %d to 0x%x\n", cast(int) (op * lpHeader.minimumInstructionLength), machine.address); break; case advanceLine: long ad = readSLEB128(program); - // trace("advanceLine ", ad); machine.line += ad; + debug(DwarfDebugMachine) printf("advanceLine %d to %d\n", cast(int) ad, cast(int) machine.line); break; case setFile: uint index = cast(uint) readULEB128(program); - // trace("setFile to ", index); + debug(DwarfDebugMachine) printf("setFile to %d\n", cast(int) index); machine.fileIndex = index; break; case setColumn: uint col = cast(uint) readULEB128(program); - // trace("setColumn ", col); + debug(DwarfDebugMachine) printf("setColumn %d\n", cast(int) col); machine.column = col; break; case negateStatement: - // trace("negateStatement"); + debug(DwarfDebugMachine) printf("negateStatement\n"); machine.isStatement = !machine.isStatement; break; case setBasicBlock: - // trace("setBasicBlock"); + debug(DwarfDebugMachine) printf("setBasicBlock\n"); machine.isBasicBlock = true; break; case constAddPC: machine.address += (255 - lpHeader.opcodeBase) / lpHeader.lineRange * lpHeader.minimumInstructionLength; - // trace("constAddPC ", "0x%x".format(machine.address)); + debug(DwarfDebugMachine) printf("constAddPC 0x%x\n", machine.address); break; case fixedAdvancePC: uint add = program.read!uint(); - // trace("fixedAdvancePC ", add); machine.address += add; + debug(DwarfDebugMachine) printf("fixedAdvancePC %d to 0x%x\n", cast(int) add, machine.address); break; case setPrologueEnd: machine.isPrologueEnd = true; - // trace("setPrologueEnd"); + debug(DwarfDebugMachine) printf("setPrologueEnd\n"); break; case setEpilogueBegin: machine.isEpilogueBegin = true; - // trace("setEpilogueBegin"); + debug(DwarfDebugMachine) printf("setEpilogueBegin\n"); break; case setISA: machine.isa = cast(uint) readULEB128(program); - // trace("setISA ", m.isa); + debug(DwarfDebugMachine) printf("setISA %d\n", cast(int) machine.isa); break; default: @@ -335,8 +363,8 @@ bool runStateMachine(const(LPHeader)* lpHeader, const(ubyte)[] program, const(ub auto linc = lpHeader.lineBase + (opcode % lpHeader.lineRange); machine.line += linc; - // trace("special ", ainc, " ", linc); - if (!callback(machine.address, LocationInfo(machine.fileIndex, machine.line))) return true; + debug(DwarfDebugMachine) printf("special %d %d to 0x%x line %d\n", cast(int) ainc, cast(int) linc, machine.address, cast(int) machine.line); + if (!callback(machine.address, LocationInfo(machine.fileIndex, machine.line), false)) return true; } } From 10821c643a47ed7ccf702a134b34669b4aef9e96 Mon Sep 17 00:00:00 2001 From: Mathias Lang Date: Thu, 3 Sep 2015 17:17:37 +0000 Subject: [PATCH 075/768] Add core.bitopt.bitswap(ulong) The original (D1) core.bitop module had both the 32 and 64 bits versions, but only the 32 bits version was added to druntime. This commit contains the original tango code of bitswap(ulong), only slightly modified using feedback from the 32 bits version. --- src/core/bitop.d | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/src/core/bitop.d b/src/core/bitop.d index ebfdda67a3..cf639463d0 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -414,3 +414,75 @@ unittest foreach(i; 0 .. 32) assert(bitswap(1 << i) == 1 << 32 - i - 1); } + +/** + * Reverses the order of bits in a 64-bit integer. + */ +ulong bitswap ( ulong x ) pure @trusted +{ + version (D_InlineAsm_X86_64) + { + asm pure nothrow @nogc { naked; } + + version (Win64) + asm pure nothrow @nogc { mov RAX, RCX; } + else + asm pure nothrow @nogc { mov RAX, RDI; } + + asm pure nothrow @nogc + { + // Author: Tiago Gasiba. + mov RDX, RAX; + shr RAX, 1; + mov RCX, 0x5555_5555_5555_5555L; + and RDX, RCX; + and RAX, RCX; + shl RDX, 1; + or RAX, RDX; + + mov RDX, RAX; + shr RAX, 2; + mov RCX, 0x3333_3333_3333_3333L; + and RDX, RCX; + and RAX, RCX; + shl RDX, 2; + or RAX, RDX; + + mov RDX, RAX; + shr RAX, 4; + mov RCX, 0x0f0f_0f0f_0f0f_0f0fL; + and RDX, RCX; + and RAX, RCX; + shl RDX, 4; + or RAX, RDX; + bswap RAX; + ret; + } + } + else + { + // swap odd and even bits + x = ((x >> 1) & 0x5555_5555_5555_5555L) | ((x & 0x5555_5555_5555_5555L) << 1); + // swap consecutive pairs + x = ((x >> 2) & 0x3333_3333_3333_3333L) | ((x & 0x3333_3333_3333_3333L) << 2); + // swap nibbles + x = ((x >> 4) & 0x0f0f_0f0f_0f0f_0f0fL) | ((x & 0x0f0f_0f0f_0f0f_0f0fL) << 4); + // swap bytes + x = ((x >> 8) & 0x00FF_00FF_00FF_00FFL) | ((x & 0x00FF_00FF_00FF_00FFL) << 8); + // swap shorts + x = ((x >> 16) & 0x0000_FFFF_0000_FFFFL) | ((x & 0x0000_FFFF_0000_FFFFL) << 16); + // swap ints + x = ( x >> 32 ) | ( x << 32); + return x; + } +} + +unittest +{ + assert (bitswap( 0b1000000000000000000000010000000000000000100000000000000000000001) + == 0b1000000000000000000000010000000000000000100000000000000000000001); + assert (bitswap( 0b1110000000000000000000010000000000000000100000000000000000000001) + == 0b1000000000000000000000010000000000000000100000000000000000000111); + foreach (i; 0 .. 64) + assert(bitswap(1UL << i) == 1UL << 64 - i - 1); +} From 5be4156ccba77b49c7232060bbecb8b2527a8287 Mon Sep 17 00:00:00 2001 From: k-hara Date: Fri, 4 Sep 2015 06:42:15 +0900 Subject: [PATCH 076/768] fix Issue 15009 - Object.destroy calls unnecessary postblits for destruction of static arrays object --- src/object.d | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index 42633d9ac3..ac3cbbe974 100644 --- a/src/object.d +++ b/src/object.d @@ -2727,7 +2727,8 @@ version(unittest) nothrow @safe @nogc unittest void destroy(T : U[n], U, size_t n)(ref T obj) if (!is(T == struct)) { - obj[] = U.init; + foreach_reverse (ref e; obj[]) + destroy(e); } version(unittest) unittest @@ -2750,6 +2751,42 @@ unittest destroy!vec2f(v); } +unittest +{ + // Bugzilla 15009 + static string op; + static struct S + { + int x; + this(int x) { op ~= "C" ~ cast(char)('0'+x); this.x = x; } + this(this) { op ~= "P" ~ cast(char)('0'+x); } + ~this() { op ~= "D" ~ cast(char)('0'+x); } + } + + { + S[2] a1 = [S(1), S(2)]; + op = ""; + } + assert(op == "D2D1"); // built-in scope destruction + { + S[2] a1 = [S(1), S(2)]; + op = ""; + destroy(a1); + assert(op == "D2D1"); // consistent with built-in behavior + } + + { + S[2][2] a2 = [[S(1), S(2)], [S(3), S(4)]]; + op = ""; + } + assert(op == "D4D3D2D1"); + { + S[2][2] a2 = [[S(1), S(2)], [S(3), S(4)]]; + op = ""; + destroy(a2); + assert(op == "D4D3D2D1", op); + } +} void destroy(T)(ref T obj) if (!is(T == struct) && !is(T == interface) && !is(T == class) && !_isStaticArray!T) From 40457fa58c18e5b970a5429d01a5ca622a64239f Mon Sep 17 00:00:00 2001 From: Denis Shelomovskij Date: Fri, 4 Sep 2015 12:07:30 +0300 Subject: [PATCH 077/768] Accept identifiers instead of strings in `DECLARE_ALTERNATE_NAME` macro. Stringizing operator ('#') adds extra quotes when used with string macro argument. Causing commit: de0e1e10b4d88cc8e1657f326150f7565f4a9ef3. --- src/rt/stdio_msvc.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/rt/stdio_msvc.c b/src/rt/stdio_msvc.c index 042dea85a2..d3e32a0c62 100644 --- a/src/rt/stdio_msvc.c +++ b/src/rt/stdio_msvc.c @@ -47,9 +47,9 @@ extern const char* _nullfunc = 0; #define DECLARE_ALTERNATE_NAME(name, alternate_name) \ __pragma(comment(linker, "/alternatename:" C_PREFIX #name "=" C_PREFIX #alternate_name)) -DECLARE_ALTERNATE_NAME ("__acrt_iob_func", "_nullfunc"); -DECLARE_ALTERNATE_NAME ("__iob_func", "_nullfunc"); -DECLARE_ALTERNATE_NAME ("_set_output_format", "_nullfunc"); +DECLARE_ALTERNATE_NAME (__acrt_iob_func, _nullfunc); +DECLARE_ALTERNATE_NAME (__iob_func, _nullfunc); +DECLARE_ALTERNATE_NAME (_set_output_format, _nullfunc); void init_msvc() { @@ -76,25 +76,25 @@ void init_msvc() // VS2015+ provides C99-conformant (v)snprintf functions, so weakly // link to legacy _(v)snprintf (not C99-conformant!) for VS2013- only -DECLARE_ALTERNATE_NAME ("snprintf", "_snprintf"); -DECLARE_ALTERNATE_NAME ("vsnprintf", "_vsnprintf"); +DECLARE_ALTERNATE_NAME (snprintf, _snprintf); +DECLARE_ALTERNATE_NAME (vsnprintf, _vsnprintf); // VS2013- implements these functions as macros, VS2015+ provides symbols -DECLARE_ALTERNATE_NAME ("_fputc_nolock", "_msvc_fputc_nolock"); -DECLARE_ALTERNATE_NAME ("_fgetc_nolock", "_msvc_fgetc_nolock"); -DECLARE_ALTERNATE_NAME ("rewind", "_msvc_rewind"); -DECLARE_ALTERNATE_NAME ("clearerr", "_msvc_clearerr"); -DECLARE_ALTERNATE_NAME ("feof", "_msvc_feof"); -DECLARE_ALTERNATE_NAME ("ferror", "_msvc_ferror"); -DECLARE_ALTERNATE_NAME ("fileno", "_msvc_fileno"); +DECLARE_ALTERNATE_NAME (_fputc_nolock, _msvc_fputc_nolock); +DECLARE_ALTERNATE_NAME (_fgetc_nolock, _msvc_fgetc_nolock); +DECLARE_ALTERNATE_NAME (rewind, _msvc_rewind); +DECLARE_ALTERNATE_NAME (clearerr, _msvc_clearerr); +DECLARE_ALTERNATE_NAME (feof, _msvc_feof); +DECLARE_ALTERNATE_NAME (ferror, _msvc_ferror); +DECLARE_ALTERNATE_NAME (fileno, _msvc_fileno); // VS2013- helper functions int _filbuf(FILE* fp); int _flsbuf(int c, FILE* fp); -DECLARE_ALTERNATE_NAME ("_filbuf", "_nullfunc"); -DECLARE_ALTERNATE_NAME ("_flsbuf", "_nullfunc"); +DECLARE_ALTERNATE_NAME (_filbuf, _nullfunc); +DECLARE_ALTERNATE_NAME (_flsbuf, _nullfunc); int _msvc_fputc_nolock(int c, FILE* fp) { From 7b1a6110f35fbd358235385b9bb0c56d91bcc084 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 6 Sep 2015 11:15:24 +0200 Subject: [PATCH 078/768] remove CC filter for CFLAGS - allows to use compiler wrappers - fixes make CC=/path/to/cc - fixes Issue 15012 - still can be overriden with make CFLAGS= --- posix.mak | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/posix.mak b/posix.mak index c022861168..a70300c7f6 100644 --- a/posix.mak +++ b/posix.mak @@ -40,17 +40,14 @@ endif DDOCFLAGS=-conf= -c -w -o- -Isrc -Iimport -version=CoreDdoc # Set CFLAGS -CFLAGS= -ifneq (,$(filter cc% gcc% clang% icc% egcc%, $(CC))) - CFLAGS += $(MODEL_FLAG) -fPIC -DHAVE_UNISTD_H - ifeq ($(BUILD),debug) - CFLAGS += -g - else - CFLAGS += -O3 - endif +CFLAGS=$(MODEL_FLAG) -fPIC -DHAVE_UNISTD_H +ifeq ($(BUILD),debug) + CFLAGS += -g +else + CFLAGS += -O3 endif ifeq (solaris,$(OS)) - CFLAGS+=-D_REENTRANT # for thread-safe errno + CFLAGS+=-D_REENTRANT # for thread-safe errno endif # Set DFLAGS From e91f59d2175c1056af5d2de59f4fd5dee7a1779d Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 6 Sep 2015 20:22:26 +0200 Subject: [PATCH 079/768] use linker generated section brackets --- src/rt/sections_android.d | 47 +++++++++------------------------------ src/rt/sections_solaris.d | 46 ++++++++------------------------------ 2 files changed, 19 insertions(+), 74 deletions(-) diff --git a/src/rt/sections_android.d b/src/rt/sections_android.d index 4fd4a440d0..2c76fe59cc 100644 --- a/src/rt/sections_android.d +++ b/src/rt/sections_android.d @@ -44,8 +44,8 @@ struct SectionGroup @property immutable(FuncTable)[] ehTables() const { - auto pbeg = cast(immutable(FuncTable)*)&_deh_beg; - auto pend = cast(immutable(FuncTable)*)&_deh_end; + auto pbeg = cast(immutable(FuncTable)*)&__start_deh; + auto pend = cast(immutable(FuncTable)*)&__stop_deh; return pbeg[0 .. pend - pbeg]; } @@ -62,7 +62,10 @@ private: void initSections() { pthread_key_create(&_tlsKey, null); - _sections.moduleGroup = ModuleGroup(getModuleInfos()); + + auto mbeg = cast(immutable ModuleInfo**)&__start_minfo; + auto mend = cast(immutable ModuleInfo**)&__stop_minfo; + _sections.moduleGroup = ModuleGroup(mbeg[0 .. mend - mbeg]); auto pbeg = cast(void*)&etext; auto pend = cast(void*)&_end; @@ -148,38 +151,6 @@ ref void[] getTLSBlockAlloc() __gshared SectionGroup _sections; -// This linked list is created by a compiler generated function inserted -// into the .ctor list by the compiler. -struct ModuleReference -{ - ModuleReference* next; - ModuleInfo* mod; -} - -extern (C) __gshared immutable(ModuleReference*) _Dmodule_ref; // start of linked list - -immutable(ModuleInfo*)[] getModuleInfos() -out (result) -{ - foreach(m; result) - assert(m !is null); -} -body -{ - size_t len; - immutable(ModuleReference)* mr; - - for (mr = _Dmodule_ref; mr; mr = mr.next) - len++; - auto result = (cast(immutable(ModuleInfo)**).malloc(len * size_t.sizeof))[0 .. len]; - len = 0; - for (mr = _Dmodule_ref; mr; mr = mr.next) - { result[len] = mr.mod; - len++; - } - return cast(immutable)result; -} - extern(C) { /* Symbols created by the compiler/linker and inserted into the @@ -187,8 +158,10 @@ extern(C) */ extern __gshared { - void* _deh_beg; - void* _deh_end; + void* __start_deh; + void* __stop_deh; + void* __start_minfo; + void* __stop_minfo; size_t etext; size_t _end; diff --git a/src/rt/sections_solaris.d b/src/rt/sections_solaris.d index d3e2b64220..31c05fd18f 100644 --- a/src/rt/sections_solaris.d +++ b/src/rt/sections_solaris.d @@ -41,8 +41,8 @@ struct SectionGroup @property immutable(FuncTable)[] ehTables() const { - auto pbeg = cast(immutable(FuncTable)*)&_deh_beg; - auto pend = cast(immutable(FuncTable)*)&_deh_end; + auto pbeg = cast(immutable(FuncTable)*)&__start_deh; + auto pend = cast(immutable(FuncTable)*)&__stop_deh; return pbeg[0 .. pend - pbeg]; } @@ -58,7 +58,9 @@ private: void initSections() { - _sections.moduleGroup = ModuleGroup(getModuleInfos()); + auto mbeg = cast(immutable ModuleInfo**)&__start_minfo; + auto mend = cast(immutable ModuleInfo**)&__stop_minfo; + _sections.moduleGroup = ModuleGroup(mbeg[0 .. mend - mbeg]); auto pbeg = cast(void*)&__dso_handle; auto pend = cast(void*)&_end; @@ -90,38 +92,6 @@ private: __gshared SectionGroup _sections; -// This linked list is created by a compiler generated function inserted -// into the .ctor list by the compiler. -struct ModuleReference -{ - ModuleReference* next; - ModuleInfo* mod; -} - -extern (C) __gshared immutable(ModuleReference*) _Dmodule_ref; // start of linked list - -immutable(ModuleInfo*)[] getModuleInfos() -out (result) -{ - foreach(m; result) - assert(m !is null); -} -body -{ - size_t len; - immutable(ModuleReference)* mr; - - for (mr = _Dmodule_ref; mr; mr = mr.next) - len++; - auto result = (cast(immutable(ModuleInfo)**).malloc(len * size_t.sizeof))[0 .. len]; - len = 0; - for (mr = _Dmodule_ref; mr; mr = mr.next) - { result[len] = mr.mod; - len++; - } - return cast(immutable)result; -} - extern(C) { /* Symbols created by the compiler/linker and inserted into the @@ -129,8 +99,10 @@ extern(C) */ extern __gshared { - void* _deh_beg; - void* _deh_end; + void* __start_deh; + void* __stop_deh; + void* __start_minfo; + void* __stop_minfo; int __dso_handle; int _end; } From 22523346f156d29c8a2cde1b0b57e19511d1f0e1 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Mon, 7 Sep 2015 14:39:52 +0200 Subject: [PATCH 080/768] ignore test/%.exp expectation files for whitespace check --- posix.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posix.mak b/posix.mak index 02db235866..7175f0f34f 100644 --- a/posix.mak +++ b/posix.mak @@ -256,7 +256,7 @@ test/%/.run: test/%/Makefile #################### test for undesired white spaces ########################## CWS_MANIFEST = $(shell git ls-tree --name-only -r HEAD) CWS_MAKEFILES = $(filter mak/% %.mak %/Makefile,$(CWS_MANIFEST)) -NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES) src/rt/minit.obj,$(CWS_MANIFEST)) +NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES) src/rt/minit.obj test/%.exp,$(CWS_MANIFEST)) GREP = grep checkwhitespace: From 51241aea7a9e23b7b6b4dd59a8e771ae6e78a3d7 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 8 Sep 2015 10:46:54 -0400 Subject: [PATCH 081/768] Change to avoid range error --- src/core/internal/string.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/internal/string.d b/src/core/internal/string.d index 4faa145e12..2474c683ce 100644 --- a/src/core/internal/string.d +++ b/src/core/internal/string.d @@ -79,7 +79,7 @@ auto signedToTempString(long value, char[] buf, uint radix) @safe { // about to do a slice without a bounds check assert(r.ptr > buf.ptr); - r = (() @trusted => r.ptr[-1..r.length])(); + r = (() @trusted => (r.ptr-1)[0..r.length+1])(); r[0] = '-'; } return r; From d4ef137ffd1a92e003b45d5a53958322d317271c Mon Sep 17 00:00:00 2001 From: "Adam D. Ruppe" Date: Thu, 10 Sep 2015 23:20:46 -0400 Subject: [PATCH 082/768] Header file for Linux-specific timerfd API --- src/core/sys/linux/timerfd.d | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/core/sys/linux/timerfd.d diff --git a/src/core/sys/linux/timerfd.d b/src/core/sys/linux/timerfd.d new file mode 100644 index 0000000000..047f257d98 --- /dev/null +++ b/src/core/sys/linux/timerfd.d @@ -0,0 +1,24 @@ +/** + * D header file to interface with the Linux timefd API + * Available since Linux 2.6 + * + * License : $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + */ +module core.sys.linux.timerfd; + +version (linux): + +public import core.sys.posix.time; + +extern (C): +@system: +@nogc: +nothrow: + +int timerfd_create(int clockid, int flags); +int timerfd_settime(int fd, int flags, const itimerspec* new_value, itimerspec* old_value); +int timerfd_gettime(int fd, itimerspec* curr_value); + +enum TFD_TIMER_ABSTIME = 1 << 0; +enum TFD_CLOEXEC = 0x80000; +enum TFD_NONBLOCK = 0x800; From 957d83f1c342e44229d148027a449c956a42c122 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 12 Sep 2015 18:55:35 +0000 Subject: [PATCH 083/768] fix Issue 15036 - SimpleDllMain assumes various symbols are available unqualified --- src/core/sys/windows/dll.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/sys/windows/dll.d b/src/core/sys/windows/dll.d index cd25424600..99ba4286e8 100644 --- a/src/core/sys/windows/dll.d +++ b/src/core/sys/windows/dll.d @@ -478,7 +478,9 @@ public: extern(Windows) bool DllMain(HINSTANCE hInstance, uint ulReason, void* reserved) { - import core.sys.windows.windows; + import core.sys.windows.dll : + dll_process_attach, dll_process_detach, + dll_thread_attach, dll_thread_detach; switch(ulReason) { default: assert(0); From ac26c29e5b5aeb5dab263a93749a07fc9c2c3815 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 16 Sep 2015 23:31:44 +0200 Subject: [PATCH 084/768] fixup #1354 - add changelog entry for backtraces --- changelog.dd | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/changelog.dd b/changelog.dd index 67642a8d05..c41ec19df0 100644 --- a/changelog.dd +++ b/changelog.dd @@ -4,9 +4,32 @@ $(COMMENT Pending changelog for 2.069.0. ) $(BUGSTITLE Library Changes, +$(LI $(RELATIVE_LINK2 backtraces-with-line-numbers, Backtraces now include file name and line number.)) ) $(BUGSTITLE Library Changes, +$(LI $(LNAME2 backtraces-with-line-numbers, Backtraces now include file name and line number.) + + $(P The default tracehandler on linux now parses DWARF debug info + to add file names and line numbers to backtraces. + ) + + $(PRE + std.conv.ConvException@DPL/dmd/src/../../phobos/std/conv.d(1720): Unexpected 'a' when converting from type string to type ulong + + DPL/dmd/src/../../phobos/std/conv.d:1720 pure @safe ulong std.conv.toImpl!(ulong, immutable(char)[]).toImpl(immutable(char)[]) [0x43b339] + DPL/dmd/src/../../phobos/std/conv.d:298 pure @safe ulong std.conv.to!(ulong).to!(immutable(char)[]).to(immutable(char)[]) [0x437717] + example.d:5 ulong example.foo(immutable(char)[]) [0x4376c7] + example.d:10 _Dmain [0x4376e5] + ??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [0x444576] + ??:? void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [0x4444cc] + ??:? void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [0x444532] + ??:? void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [0x4444cc] + ??:? _d_run_main [0x444429] + ??:? main [0x44039f] + ??:? __libc_start_main [0xc3ae96ff] + ) +) ) Macros: @@ -23,3 +46,4 @@ Macros: CXREF = $2 BOOKTABLE = $+
$1
+ PRE =
$0
From 615193b132aaca0168b1294aeaa69b81ed532183 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 17 Sep 2015 01:44:45 +0000 Subject: [PATCH 085/768] core.thread: Add Thread.id property, ThreadID type --- src/core/thread.d | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index f8904d2f3a..def5ce9d57 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -750,6 +750,25 @@ class Thread /////////////////////////////////////////////////////////////////////////// + /** + * Gets the OS identifier for this thread. + * + * Returns: + * If the thread hasn't been started yet, returns $(LREF ThreadID)$(D.init). + * Otherwise, returns the result of $(D GetCurrentThreadId) on Windows, + * and $(D pthread_self) on POSIX. + * + * The value is unique for the current process. + */ + final @property ThreadID id() + { + synchronized( this ) + { + return m_addr; + } + } + + /** * Gets the user-readable label for this thread. * @@ -1344,12 +1363,10 @@ private: version( Windows ) { alias uint TLSKey; - alias uint ThreadAddr; } else version( Posix ) { alias pthread_key_t TLSKey; - alias pthread_t ThreadAddr; } @@ -1397,7 +1414,7 @@ private: { mach_port_t m_tmach; } - ThreadAddr m_addr; + ThreadID m_addr; Call m_call; string m_name; union @@ -2067,14 +2084,14 @@ version( Windows ) // that only does the TLS lookup without the fancy fallback stuff. /// ditto - extern (C) Thread thread_attachByAddr( Thread.ThreadAddr addr ) + extern (C) Thread thread_attachByAddr( ThreadID addr ) { return thread_attachByAddrB( addr, getThreadStackBottom( addr ) ); } /// ditto - extern (C) Thread thread_attachByAddrB( Thread.ThreadAddr addr, void* bstack ) + extern (C) Thread thread_attachByAddrB( ThreadID addr, void* bstack ) { GC.disable(); scope(exit) GC.enable(); @@ -2145,7 +2162,7 @@ extern (C) void thread_detachThis() nothrow * * $(D extern(C) void rt_moduleTlsDtor();) */ -extern (C) void thread_detachByAddr( Thread.ThreadAddr addr ) +extern (C) void thread_detachByAddr( ThreadID addr ) { if( auto t = thread_findByAddr( addr ) ) Thread.remove( t ); @@ -2186,7 +2203,7 @@ unittest * Returns: * The thread object associated with the thread identifier, null if not found. */ -static Thread thread_findByAddr( Thread.ThreadAddr addr ) +static Thread thread_findByAddr( ThreadID addr ) { Thread.slock.lock_nothrow(); scope(exit) Thread.slock.unlock_nothrow(); @@ -5229,3 +5246,13 @@ unittest auto thr = new Thread(function{}, 4096 + 1).start(); thr.join(); } + +/** + * Represents the ID of a thread, as returned by $(D Thread.)$(LREF id). + * The exact type varies from platform to platform. + */ +version (Windows) + alias ThreadID = uint; +else +version (Posix) + alias ThreadID = pthread_t; From a6e3f93f762dd555b84e90dc881519cfe0ab8721 Mon Sep 17 00:00:00 2001 From: Tomer Filiba Date: Thu, 17 Sep 2015 09:15:59 +0300 Subject: [PATCH 086/768] Bug 15073: convert SIGRTMIN/SIGRTMAX to properties --- src/core/sys/posix/signal.d | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index f784508505..4aaa763b86 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -110,9 +110,6 @@ version( Solaris ) import core.sys.posix.unistd; private int _sigrtmin() { return cast(int) sysconf(_SC_SIGRT_MIN); } private int _sigrtmax() { return cast(int) sysconf(_SC_SIGRT_MAX); } - - alias _sigrtmin SIGRTMIN; - alias _sigrtmax SIGRTMAX; } else version( Posix ) { @@ -122,8 +119,24 @@ else version( Posix ) int __libc_current_sigrtmax(); } - alias __libc_current_sigrtmin SIGRTMIN; - alias __libc_current_sigrtmax SIGRTMAX; + alias __libc_current_sigrtmin _sigrtmin; + alias __libc_current_sigrtmax _sigrtmax; +} + +@property int SIGRTMIN() { + static int sig = -1; + if (sig == -1) { + sig = _sigrtmin(); + } + return sig; +} + +@property int SIGRTMAX() { + static int sig = -1; + if (sig == -1) { + sig = _sigrtmax(); + } + return sig; } version( linux ) From bc54d8080a5a41803c159c3b81ea84aa47c10fd4 Mon Sep 17 00:00:00 2001 From: Tomer Filiba Date: Thu, 17 Sep 2015 09:37:38 +0300 Subject: [PATCH 087/768] Bug 15073: only Solaris and Linux support realtime signals --- src/core/sys/posix/signal.d | 48 +++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index 4aaa763b86..fec04eeaa3 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -108,10 +108,24 @@ union sigval version( Solaris ) { import core.sys.posix.unistd; - private int _sigrtmin() { return cast(int) sysconf(_SC_SIGRT_MIN); } - private int _sigrtmax() { return cast(int) sysconf(_SC_SIGRT_MAX); } + + @property int SIGRTMIN() nothrow @nogc { + static int sig = -1; + if (sig == -1) { + sig = cast(int)sysconf(_SC_SIGRT_MIN); + } + return sig; + } + + @property int SIGRTMAX() nothrow @nogc { + static int sig = -1; + if (sig == -1) { + sig = cast(int)sysconf(_SC_SIGRT_MAX); + } + return sig; + } } -else version( Posix ) +else version( linux ) { private extern (C) nothrow @nogc { @@ -119,25 +133,23 @@ else version( Posix ) int __libc_current_sigrtmax(); } - alias __libc_current_sigrtmin _sigrtmin; - alias __libc_current_sigrtmax _sigrtmax; -} - -@property int SIGRTMIN() { - static int sig = -1; - if (sig == -1) { - sig = _sigrtmin(); + @property int SIGRTMIN() nothrow @nogc { + static int sig = -1; + if (sig == -1) { + sig = __libc_current_sigrtmin(); + } + return sig; } - return sig; -} -@property int SIGRTMAX() { - static int sig = -1; - if (sig == -1) { - sig = _sigrtmax(); + @property int SIGRTMAX() nothrow @nogc { + static int sig = -1; + if (sig == -1) { + sig = __libc_current_sigrtmax(); + } + return sig; } - return sig; } +// Note: it appears that FreeBSD/OSX do not support realtime signals version( linux ) { From 60bb700bb8d97e6c43411c532bc665e2ec801d66 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Fri, 18 Sep 2015 08:46:03 -0400 Subject: [PATCH 088/768] Remove race condition for profile druntime unit tests that run in parallel for debug and release --- test/profile/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/profile/Makefile b/test/profile/Makefile index 0b97fc8a08..0fa964c871 100644 --- a/test/profile/Makefile +++ b/test/profile/Makefile @@ -8,7 +8,7 @@ QUIET:= LINKDL:= SRC:=src -ROOT:=./obj/$(OS)/$(MODEL) +ROOT:=./obj/$(OS)/$(MODEL)/$(BUILD) TESTS:=$(addprefix $(ROOT)/,$(addsuffix .done,profile profilegc both)) DIFF:=diff From 00f8e4160c9b7e7b749ec62ffc6fc64ebca8af2f Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Fri, 18 Sep 2015 08:51:59 -0400 Subject: [PATCH 089/768] More fixes for races in the exceptions tester --- test/exceptions/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index 87e15dd17e..dd3fc80b1b 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -27,9 +27,9 @@ $(ROOT)/unittest_assert.done: $(ROOT)/unittest_assert $(ROOT)/line_trace.done: $(ROOT)/line_trace @echo Testing line_trace - @rm -f line_trace.output - $(QUIET)./$(ROOT)/line_trace $(RUN_ARGS) >line_trace.output - $(QUIET)$(SED) "s/\[0x[0-9a-f]*\]/\[ADDR\]/g" line_trace.output | $(DIFF) line_trace.exp - + @rm -f $(ROOT)/line_trace.output + $(QUIET)./$(ROOT)/line_trace $(RUN_ARGS) > $(ROOT)/line_trace.output + $(QUIET)$(SED) "s/\[0x[0-9a-f]*\]/\[ADDR\]/g" $(ROOT)/line_trace.output | $(DIFF) line_trace.exp - @touch $@ $(ROOT)/unittest_assert: DFLAGS+=-unittest From 7ae347dca4d229fdebf84faa5c76d8fbe91eab5c Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Fri, 18 Sep 2015 09:26:58 -0400 Subject: [PATCH 090/768] Use common.mak instead of local definitions --- test/profile/Makefile | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/test/profile/Makefile b/test/profile/Makefile index 0fa964c871..0a3b1998d7 100644 --- a/test/profile/Makefile +++ b/test/profile/Makefile @@ -1,27 +1,12 @@ -# set from top makefile -OS:= -MODEL:= -DMD:= -DRUNTIME:= -DRUNTIMESO:= -QUIET:= -LINKDL:= - -SRC:=src -ROOT:=./obj/$(OS)/$(MODEL)/$(BUILD) -TESTS:=$(addprefix $(ROOT)/,$(addsuffix .done,profile profilegc both)) +include ../common.mak + +TESTS:=profile profilegc both DIFF:=diff GREP:=grep -ifneq (default,$(MODEL)) - MODEL_FLAG:=-m$(MODEL) -endif -CFLAGS:=$(MODEL_FLAG) -Wall -DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -L$(DRUNTIME) -defaultlib= -debuglib= - .PHONY: all clean -all: $(TESTS) +all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) $(ROOT)/profile.done: DFLAGS+=-profile $(ROOT)/profile.done: $(ROOT)/%.done: $(ROOT)/% @@ -56,4 +41,4 @@ $(ROOT)/%: $(SRC)/%.d $(QUIET)$(DMD) $(DFLAGS) -of$(ROOT)/$* $< clean: - rm -rf obj *.log *.def + rm -rf $(ROOT) *.log *.def From 2f89ccb69580c08619c006d800cd426af34a73a7 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Fri, 18 Sep 2015 09:43:19 -0400 Subject: [PATCH 091/768] Oops, copy paste error for profile 'both' test --- test/profile/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/profile/Makefile b/test/profile/Makefile index 0a3b1998d7..9d379f9e32 100644 --- a/test/profile/Makefile +++ b/test/profile/Makefile @@ -31,7 +31,7 @@ $(ROOT)/both.done: $(ROOT)/%.done: $(ROOT)/% @echo Testing $* @rm -f $(ROOT)/both.log $(ROOT)/both.def $(ROOT)/bothgc.log $(QUIET)$(ROOT)/$* $(ROOT)/both.log $(ROOT)/both.def $(ROOT)/bothgc.log - $(QUIET)$(GREP) -q '1 .*_Dmain' $(ROOT)/mytrace.log + $(QUIET)$(GREP) -q '1 .*_Dmain' $(ROOT)/both.log $(QUIET)$(GREP) -q '1000 .*both.Num\* both.foo(uint)' $(ROOT)/both.log $(QUIET)$(DIFF) both.def.exp $(ROOT)/both.def $(QUIET)$(DIFF) bothgc.log.exp $(ROOT)/bothgc.log From 740ac88f820887710b795771d83062da6b3fa2b8 Mon Sep 17 00:00:00 2001 From: Guillaume Chatelet Date: Sat, 19 Sep 2015 14:31:22 +0200 Subject: [PATCH 092/768] Allow tests to be changed --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index d5ee640b12..ae4ef164bf 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,3 @@ trace.log Makefile /errno_c.obj make -test/* From 692fb946f7127de33e2e43b90454028cb6227673 Mon Sep 17 00:00:00 2001 From: Guillaume Chatelet Date: Sat, 19 Sep 2015 14:33:54 +0200 Subject: [PATCH 093/768] Remove test's artifacts. --- test/.gitignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 test/.gitignore diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000000..1da930b162 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1,4 @@ +**/generated/ +**/obj/ +**/*.log +**/*.output From 82c040a68e51b09361df433d164bbd908072b36c Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sat, 19 Sep 2015 20:20:44 +0200 Subject: [PATCH 094/768] Use new version identifier SystemZ instead of S390X. The 64-bit architecture is called System z since 2000. --- benchmark/gcbench/vdparser.extra/vdc/versions.d | 2 +- src/core/sys/linux/sys/mman.d | 2 +- src/core/sys/posix/sys/mman.d | 2 +- src/core/sys/posix/sys/types.d | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/benchmark/gcbench/vdparser.extra/vdc/versions.d b/benchmark/gcbench/vdparser.extra/vdc/versions.d index 0a4365a227..6a5b826502 100644 --- a/benchmark/gcbench/vdparser.extra/vdc/versions.d +++ b/benchmark/gcbench/vdparser.extra/vdc/versions.d @@ -80,7 +80,7 @@ static @property int[string] sPredefinedVersions() "SPARC_HardFloat" : -1, "SPARC64" : -1, "S390" : -1, - "S390X" : -1, + "SystemZ" : -1, "HPPA" : -1, "HPPA64" : -1, "SH" : -1, diff --git a/src/core/sys/linux/sys/mman.d b/src/core/sys/linux/sys/mman.d index 6072736ce5..109c085efe 100644 --- a/src/core/sys/linux/sys/mman.d +++ b/src/core/sys/linux/sys/mman.d @@ -80,7 +80,7 @@ else version (S390) } } // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/mman.h -else version (S390X) +else version (SystemZ) { static if (__USE_MISC) enum { diff --git a/src/core/sys/posix/sys/mman.d b/src/core/sys/posix/sys/mman.d index 2251a9abe1..783919da18 100644 --- a/src/core/sys/posix/sys/mman.d +++ b/src/core/sys/posix/sys/mman.d @@ -223,7 +223,7 @@ version( CRuntime_Glibc ) private enum DEFAULTS = true; else version (S390) private enum DEFAULTS = true; - else version (S390X) + else version (SystemZ) private enum DEFAULTS = true; else version (IA64) private enum DEFAULTS = true; diff --git a/src/core/sys/posix/sys/types.d b/src/core/sys/posix/sys/types.d index 262487745c..55e37b482d 100644 --- a/src/core/sys/posix/sys/types.d +++ b/src/core/sys/posix/sys/types.d @@ -462,7 +462,7 @@ version (CRuntime_Glibc) enum __SIZEOF_PTHREAD_BARRIER_T = 20; enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4; } - else version (S390X) + else version (SystemZ) { enum __SIZEOF_PTHREAD_ATTR_T = 56; enum __SIZEOF_PTHREAD_MUTEX_T = 40; From 877233f6149ee5387d1ffb630626ee4d20e800da Mon Sep 17 00:00:00 2001 From: Tomer Filiba Date: Sun, 20 Sep 2015 13:07:23 +0300 Subject: [PATCH 095/768] Bug 15073: make static variable __gshared --- src/core/sys/posix/signal.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index fec04eeaa3..0860c2eafa 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -110,7 +110,7 @@ version( Solaris ) import core.sys.posix.unistd; @property int SIGRTMIN() nothrow @nogc { - static int sig = -1; + __gshared static int sig = -1; if (sig == -1) { sig = cast(int)sysconf(_SC_SIGRT_MIN); } @@ -118,7 +118,7 @@ version( Solaris ) } @property int SIGRTMAX() nothrow @nogc { - static int sig = -1; + __gshared static int sig = -1; if (sig == -1) { sig = cast(int)sysconf(_SC_SIGRT_MAX); } @@ -134,7 +134,7 @@ else version( linux ) } @property int SIGRTMIN() nothrow @nogc { - static int sig = -1; + __gshared static int sig = -1; if (sig == -1) { sig = __libc_current_sigrtmin(); } @@ -142,7 +142,7 @@ else version( linux ) } @property int SIGRTMAX() nothrow @nogc { - static int sig = -1; + __gshared static int sig = -1; if (sig == -1) { sig = __libc_current_sigrtmax(); } From 93043bfde0abfaf1e3b98d345a6eba0c532bcfa7 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 22 Sep 2015 01:09:47 +0200 Subject: [PATCH 096/768] print filename in coverage reports for modules w/o code - needed to find source from coverage report --- src/rt/cover.d | 4 ++++ test/coverage/Makefile | 14 ++++++++++++-- test/coverage/src-no_code.lst.exp | 7 +++++++ test/coverage/src-no_code_imp.lst.exp | 2 ++ test/coverage/src/no_code.d | 6 ++++++ test/coverage/src/no_code_imp.d | 1 + 6 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 test/coverage/src-no_code.lst.exp create mode 100644 test/coverage/src-no_code_imp.lst.exp create mode 100644 test/coverage/src/no_code.d create mode 100644 test/coverage/src/no_code_imp.d diff --git a/src/rt/cover.d b/src/rt/cover.d index 9199d80a39..23baf15daf 100644 --- a/src/rt/cover.d +++ b/src/rt/cover.d @@ -232,6 +232,10 @@ shared static ~this() exit(EXIT_FAILURE); } } + else + { + fprintf(flst, "%.*s has no code\n", cast(int)c.filename.length, c.filename.ptr); + } version (Windows) SetEndOfFile(handle(fileno(flst))); diff --git a/test/coverage/Makefile b/test/coverage/Makefile index 08f094467c..c9a290444f 100644 --- a/test/coverage/Makefile +++ b/test/coverage/Makefile @@ -2,7 +2,7 @@ include ../common.mak DFLAGS+=-cov -NORMAL_TESTS:=$(addprefix $(ROOT)/,$(addsuffix .done,basic)) +NORMAL_TESTS:=$(addprefix $(ROOT)/,$(addsuffix .done,basic no_code)) MERGE_TESTS:=$(addprefix $(ROOT)/,$(addsuffix .done,merge merge_true)) DIFF:=diff @@ -25,8 +25,18 @@ $(MERGE_TESTS): $(ROOT)/%.done: $(ROOT)/% $(QUIET)$(DIFF) src-$*.lst.exp $(ROOT)/src-$*.lst @touch $@ +$(ROOT)/no_code.done: $(ROOT)/%.done: $(ROOT)/% + @echo Testing $* + @rm -f $(ROOT)/src-$*.lst + $(QUIET)$(ROOT)/$* $(ROOT) $(RUN_ARGS) + $(QUIET)$(ROOT)/$* $(ROOT) $(RUN_ARGS) + $(QUIET)$(DIFF) src-$*.lst.exp $(ROOT)/src-$*.lst + $(QUIET)$(DIFF) src-$*_imp.lst.exp $(ROOT)/src-$*_imp.lst + @touch $@ + +$(ROOT)/no_code: $(SRC)/no_code_imp.d $(ROOT)/%: $(SRC)/%.d - $(QUIET)$(DMD) $(DFLAGS) -of$(ROOT)/$* $< + $(QUIET)$(DMD) $(DFLAGS) -of$(ROOT)/$* $^ clean: rm -rf $(ROOT) *.lst diff --git a/test/coverage/src-no_code.lst.exp b/test/coverage/src-no_code.lst.exp new file mode 100644 index 0000000000..39bfb17139 --- /dev/null +++ b/test/coverage/src-no_code.lst.exp @@ -0,0 +1,7 @@ + |import core.runtime; + | + |void main(string[] args) + |{ + 1| dmd_coverDestPath(args[1]); + |} +src/no_code.d is 100% covered diff --git a/test/coverage/src-no_code_imp.lst.exp b/test/coverage/src-no_code_imp.lst.exp new file mode 100644 index 0000000000..9290b3eb07 --- /dev/null +++ b/test/coverage/src-no_code_imp.lst.exp @@ -0,0 +1,2 @@ + |enum NO_CODE_IMP = 0; +src/no_code_imp.d has no code diff --git a/test/coverage/src/no_code.d b/test/coverage/src/no_code.d new file mode 100644 index 0000000000..8569795296 --- /dev/null +++ b/test/coverage/src/no_code.d @@ -0,0 +1,6 @@ +import core.runtime; + +void main(string[] args) +{ + dmd_coverDestPath(args[1]); +} diff --git a/test/coverage/src/no_code_imp.d b/test/coverage/src/no_code_imp.d new file mode 100644 index 0000000000..f3c5fb2650 --- /dev/null +++ b/test/coverage/src/no_code_imp.d @@ -0,0 +1 @@ +enum NO_CODE_IMP = 0; From d66630d0eae86a35e60d3a753ca5ca97440f3978 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Tue, 22 Sep 2015 23:14:14 +0200 Subject: [PATCH 097/768] Add SystemZ declarations. This is the first set of declarations for SystemZ. --- src/core/sys/linux/dlfcn.d | 24 +++++++++++++++++++++++ src/core/sys/posix/dlfcn.d | 7 +++++++ src/core/sys/posix/signal.d | 34 +++++++++++++++++++++++++++++++++ src/core/sys/posix/sys/msg.d | 21 ++++++++++++++++++++ src/core/sys/posix/sys/socket.d | 34 +++++++++++++++++++++++++++++++++ 5 files changed, 120 insertions(+) diff --git a/src/core/sys/linux/dlfcn.d b/src/core/sys/linux/dlfcn.d index 4cb45293a7..a3293c3956 100644 --- a/src/core/sys/linux/dlfcn.d +++ b/src/core/sys/linux/dlfcn.d @@ -205,6 +205,30 @@ else version (AArch64) void _dl_mcount_wrapper_check(void* __selfpc); } } +else version (SystemZ) +{ + // http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/dlfcn.h + // enum RTLD_LAZY = 0x0001; // POSIX + // enum RTLD_NOW = 0x0002; // POSIX + enum RTLD_BINDING_MASK = 0x3; + enum RTLD_NOLOAD = 0x00004; + enum RTLD_DEEPBIND = 0x00008; + + // enum RTLD_GLOBAL = 0x00100; // POSIX + // enum RTLD_LOCAL = 0; // POSIX + enum RTLD_NODELETE = 0x01000; + + static if (__USE_GNU) + { + RT DL_CALL_FCT(RT, Args...)(RT function(Args) fctp, auto ref Args args) + { + _dl_mcount_wrapper_check(cast(void*)fctp); + return fctp(args); + } + + void _dl_mcount_wrapper_check(void* __selfpc); + } +} else static assert(0, "unimplemented"); diff --git a/src/core/sys/posix/dlfcn.d b/src/core/sys/posix/dlfcn.d index 9a1b328b1d..bd5b8eab70 100644 --- a/src/core/sys/posix/dlfcn.d +++ b/src/core/sys/posix/dlfcn.d @@ -94,6 +94,13 @@ version( CRuntime_Glibc ) enum RTLD_GLOBAL = 0x00100; enum RTLD_LOCAL = 0; } + else version (SystemZ) + { + enum RTLD_LAZY = 0x00001; + enum RTLD_NOW = 0x00002; + enum RTLD_GLOBAL = 0x00100; + enum RTLD_LOCAL = 0; + } else static assert(0, "unimplemented"); diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index f784508505..8417153f3d 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -320,6 +320,30 @@ version( linux ) enum SIGUSR2 = 12; enum SIGURG = 23; } + else version (SystemZ) + { + //SIGABRT (defined in core.stdc.signal) + enum SIGALRM = 14; + enum SIGBUS = 7; + enum SIGCHLD = 17; + enum SIGCONT = 18; + //SIGFPE (defined in core.stdc.signal) + enum SIGHUP = 1; + //SIGILL (defined in core.stdc.signal) + //SIGINT (defined in core.stdc.signal) + enum SIGKILL = 9; + enum SIGPIPE = 13; + enum SIGQUIT = 3; + //SIGSEGV (defined in core.stdc.signal) + enum SIGSTOP = 19; + //SIGTERM (defined in core.stdc.signal) + enum SIGTSTP = 20; + enum SIGTTIN = 21; + enum SIGTTOU = 22; + enum SIGUSR1 = 10; + enum SIGUSR2 = 12; + enum SIGURG = 23; + } else static assert(0, "unimplemented"); } @@ -1249,6 +1273,16 @@ version( CRuntime_Glibc ) enum SIGXCPU = 24; enum SIGXFSZ = 25; } + else version (SystemZ) + { + enum SIGPOLL = 29; + enum SIGPROF = 27; + enum SIGSYS = 31; + enum SIGTRAP = 5; + enum SIGVTALRM = 26; + enum SIGXCPU = 24; + enum SIGXFSZ = 25; + } else static assert(0, "unimplemented"); diff --git a/src/core/sys/posix/sys/msg.d b/src/core/sys/posix/sys/msg.d index c6948d4506..f0b4f75718 100644 --- a/src/core/sys/posix/sys/msg.d +++ b/src/core/sys/posix/sys/msg.d @@ -199,6 +199,27 @@ else version (S390) c_ulong __glibc_reserved5; }; } +else version (SystemZ) +{ + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/msq.h + alias c_ulong msgqnum_t; + alias c_ulong msglen_t; + + // Assuming wordsize == 64 + struct msqid_ds { + ipc_perm msg_perm; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; + c_ulong __msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + c_ulong __glibc_reserved4; + c_ulong __glibc_reserved5; + }; +} else version (SPARC) { // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/msq.h diff --git a/src/core/sys/posix/sys/socket.d b/src/core/sys/posix/sys/socket.d index c378150146..a9d978d6d1 100644 --- a/src/core/sys/posix/sys/socket.d +++ b/src/core/sys/posix/sys/socket.d @@ -503,6 +503,40 @@ version( CRuntime_Glibc ) SO_TYPE = 3 } } + else version (SystemZ) + { + enum + { + SOCK_DGRAM = 2, + SOCK_SEQPACKET = 5, + SOCK_STREAM = 1 + } + + enum + { + SOL_SOCKET = 1 + } + + enum + { + SO_ACCEPTCONN = 30, + SO_BROADCAST = 6, + SO_DEBUG = 1, + SO_DONTROUTE = 5, + SO_ERROR = 4, + SO_KEEPALIVE = 9, + SO_LINGER = 13, + SO_OOBINLINE = 10, + SO_RCVBUF = 8, + SO_RCVLOWAT = 18, + SO_RCVTIMEO = 20, + SO_REUSEADDR = 2, + SO_SNDBUF = 7, + SO_SNDLOWAT = 19, + SO_SNDTIMEO = 21, + SO_TYPE = 3 + } + } else static assert(0, "unimplemented"); From b099fd328855ba487cede5a43f7031e3f495db96 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Wed, 23 Sep 2015 22:27:30 +0200 Subject: [PATCH 098/768] Add more SystemZ declarations. This is the 2nd part. --- src/core/stdc/fenv.d | 11 +++++++ src/core/sys/linux/link.d | 8 ++++- src/core/sys/posix/fcntl.d | 13 ++++++++ src/core/sys/posix/sys/stat.d | 60 +++++++++++++++++++++++++++++++++++ 4 files changed, 91 insertions(+), 1 deletion(-) diff --git a/src/core/stdc/fenv.d b/src/core/stdc/fenv.d index 7e5e5f8685..a2780293c3 100644 --- a/src/core/stdc/fenv.d +++ b/src/core/stdc/fenv.d @@ -116,6 +116,17 @@ version( GNUFP ) alias fenv_t = double; alias fexcept_t = uint; } + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/s390/fpu/bits/fenv.h + else version (SystemZ) + { + struct fenv_t + { + fexcept_t __fpc; + void* __unused; + } + + alias fexcept_t = uint; + } else { static assert(0, "Unimplemented architecture"); diff --git a/src/core/sys/linux/link.d b/src/core/sys/linux/link.d index b5e1e4135c..34be70f6f1 100644 --- a/src/core/sys/linux/link.d +++ b/src/core/sys/linux/link.d @@ -9,7 +9,7 @@ version (linux): extern (C): nothrow: -import core.stdc.stdint : uintptr_t, uint32_t; +import core.stdc.stdint : uintptr_t, uint32_t, uint64_t; import core.sys.linux.config : __WORDSIZE; import core.sys.linux.dlfcn : Lmid_t; import core.sys.linux.elf; @@ -63,6 +63,12 @@ else version (AArch64) alias __WORDSIZE __ELF_NATIVE_CLASS; alias uint32_t Elf_Symndx; } +else version (SystemZ) +{ + // http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/elfclass.h + alias __WORDSIZE __ELF_NATIVE_CLASS; + alias uint64_t Elf_Symndx; +} else static assert(0, "unimplemented"); // diff --git a/src/core/sys/posix/fcntl.d b/src/core/sys/posix/fcntl.d index f9b2ee37de..f18ed0fa98 100644 --- a/src/core/sys/posix/fcntl.d +++ b/src/core/sys/posix/fcntl.d @@ -215,6 +215,19 @@ version( CRuntime_Glibc ) enum O_DSYNC = 0x1000; // octal 010000 enum O_RSYNC = O_SYNC; } + else version (SystemZ) + { + enum O_CREAT = 0x40; // octal 0100 + enum O_EXCL = 0x80; // octal 0200 + enum O_NOCTTY = 0x100; // octal 0400 + enum O_TRUNC = 0x200; // octal 01000 + + enum O_APPEND = 0x400; // octal 02000 + enum O_NONBLOCK = 0x800; // octal 04000 + enum O_SYNC = 0x101000; // octal 04010000 + enum O_DSYNC = 0x1000; // octal 010000 + enum O_RSYNC = O_SYNC; + } else static assert(0, "unimplemented"); diff --git a/src/core/sys/posix/sys/stat.d b/src/core/sys/posix/sys/stat.d index 86cf098fc9..b2cb663a26 100644 --- a/src/core/sys/posix/sys/stat.d +++ b/src/core/sys/posix/sys/stat.d @@ -525,6 +525,66 @@ version( CRuntime_Glibc ) else static assert(stat_t.sizeof == 128); } + else version (SystemZ) + { + private + { + alias __dev_t = ulong; + alias __ino_t = c_ulong; + alias __ino64_t = ulong; + alias __mode_t = uint; + alias __nlink_t = uint; + alias __uid_t = uint; + alias __gid_t = uint; + alias __off_t = c_long; + alias __off64_t = long; + alias __blksize_t = int; + alias __blkcnt_t = c_long; + alias __blkcnt64_t = long; + alias __timespec = timespec; + alias __time_t = time_t; + } + struct stat_t + { + __dev_t st_dev; + __ino_t st_ino; + __nlink_t st_nlink; + __mode_t st_mode; + __uid_t st_uid; + __gid_t st_gid; + int __glibc_reserved0; + __dev_t st_rdev; + __off_t st_size; + static if (__USE_XOPEN2K8) + { + __timespec st_atim; + __timespec st_mtim; + __timespec st_ctim; + extern(D) + { + @property ref time_t st_atime() { return st_atim.tv_sec; } + @property ref time_t st_mtime() { return st_mtim.tv_sec; } + @property ref time_t st_ctime() { return st_ctim.tv_sec; } + } + } + else + { + __time_t st_atime; + c_ulong st_atimensec; + __time_t st_mtime; + c_ulong st_mtimensec; + __time_t st_ctime; + c_ulong st_ctimensec; + } + __blksize_t st_blksize; + __blkcnt_t st_blocks; + c_long[3] __glibc_reserved; + } + static if(__USE_XOPEN2K8) + static assert(stat_t.sizeof == 144); + else + static assert(stat_t.sizeof == 144); + } else static assert(0, "unimplemented"); From f6633abb43ea1f2464d3a772b8f8fe78216ffd8e Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Thu, 24 Sep 2015 16:49:32 +0200 Subject: [PATCH 099/768] Fix Issue 15104 - Fiber context switch in finally blocks breaks EH --- src/core/thread.d | 56 ++++++++++++++++++++++++++++++++++++++++ src/rt/deh_win32.d | 13 +++++++++- src/rt/deh_win64_posix.d | 9 +++++++ 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/src/core/thread.d b/src/core/thread.d index f8904d2f3a..94434813b2 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -107,6 +107,17 @@ private // extern (C) void rt_moduleTlsCtor(); extern (C) void rt_moduleTlsDtor(); + + /** + * Hook for whatever EH implementation is used to save/restore some data + * per stack. + * + * Params: + * newContext = The return value of the prior call to this function + * where the stack was last swapped out, or null when a fiber stack + * is switched in for the first time. + */ + extern(C) void* _d_eh_swapContext(void* newContext) nothrow; } @@ -1458,6 +1469,7 @@ private: } body { + m_curr.ehContext = _d_eh_swapContext(c.ehContext); c.within = m_curr; m_curr = c; } @@ -1472,6 +1484,7 @@ private: { Context* c = m_curr; m_curr = c.within; + c.ehContext = _d_eh_swapContext(m_curr.ehContext); c.within = null; } @@ -1491,6 +1504,12 @@ private: { void* bstack, tstack; + + /// Slot for the EH implementation to keep some state for each stack + /// (will be necessary for exception chaining, etc.). Opaque as far as + /// we are concerned here. + void* ehContext; + Context* within; Context* next, prev; @@ -4994,6 +5013,43 @@ version (Win32) { } } +// Test exception chaining when switching contexts in finally blocks. +unittest +{ + static void throwAndYield(string msg) { + try { + throw new Exception(msg); + } finally { + Fiber.yield(); + } + } + + static void fiber(string name) { + try { + try { + throwAndYield(name ~ ".1"); + } finally { + throwAndYield(name ~ ".2"); + } + } catch (Exception e) { + assert(e.msg == name ~ ".1"); + assert(e.next); + assert(e.next.msg == name ~ ".2"); + assert(!e.next.next); + } + } + + auto first = new Fiber(() => fiber("first")); + auto second = new Fiber(() => fiber("second")); + first.call(); + second.call(); + first.call(); + second.call(); + first.call(); + second.call(); + assert(first.state == Fiber.State.TERM); + assert(second.state == Fiber.State.TERM); +} // Test Fiber resetting unittest diff --git a/src/rt/deh_win32.d b/src/rt/deh_win32.d index 8d5b5dacce..f603149ef6 100644 --- a/src/rt/deh_win32.d +++ b/src/rt/deh_win32.d @@ -373,11 +373,22 @@ enum int STATUS_DIGITAL_MARS_D_EXCEPTION = MAKE_EXCEPTION_CODE!(3,'D',1); * are shorter than D exceptions, for example. * (3) System exceptions don't have any space for a pointer to a D object. * So we cannot store the collision information in the exception record. - * (4) it's important that this list is thread-local. + * (4) it's important that this list is fiber-local. */ EXCEPTION_RECORD * inflightExceptionList = null; +/*********************************** + * Switch out inflightExceptionList on fiber context switches. + */ +extern(C) void* _d_eh_swapContext(void* newContext) nothrow +{ + auto old = inflightExceptionList; + inflightExceptionList = cast(EXCEPTION_RECORD*)newContext; + return old; +} + + /*********************************** * Find the first non-collateral exception in the list. If the last * entry in the list has the EXCEPTION_COLLATERAL bit set, it means diff --git a/src/rt/deh_win64_posix.d b/src/rt/deh_win64_posix.d index 2efe3b4109..5387075719 100644 --- a/src/rt/deh_win64_posix.d +++ b/src/rt/deh_win64_posix.d @@ -86,6 +86,15 @@ private } InFlight* __inflight = null; + + /// __inflight is per-stack, not per-thread, and as such needs to be + /// swapped out on fiber context switches. + extern(C) void* _d_eh_swapContext(void* newContext) nothrow + { + auto old = __inflight; + __inflight = cast(InFlight*)newContext; + return old; + } } void terminate() From fb7bd910c5418a1f1cdd11525c094ddabe538341 Mon Sep 17 00:00:00 2001 From: Yazan Dabain Date: Mon, 28 Sep 2015 05:17:43 +0000 Subject: [PATCH 100/768] Support file/line dwarf in FreeBSD --- src/core/runtime.d | 6 +++++- src/rt/backtrace/dwarf.d | 28 ++++++++++++++++++------- src/rt/backtrace/elf.d | 44 +++++++++++++++++++++++++++++++++++++--- test/exceptions/Makefile | 8 ++++++-- 4 files changed, 73 insertions(+), 13 deletions(-) diff --git a/src/core/runtime.d b/src/core/runtime.d index f0d1075f44..e008ff8082 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -568,7 +568,11 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) enum FIRSTFRAME = 0; } - version(linux) + version(linux) enum enableDwarf = true; + else version(FreeBSD) enum enableDwarf = true; + else enum enableDwarf = false; + + static if (enableDwarf) { import core.internal.traits : externDFunc; diff --git a/src/rt/backtrace/dwarf.d b/src/rt/backtrace/dwarf.d index cd45de1080..3bbbbb071c 100644 --- a/src/rt/backtrace/dwarf.d +++ b/src/rt/backtrace/dwarf.d @@ -12,7 +12,10 @@ module rt.backtrace.dwarf; -version(linux): +version(linux) version = linux_or_freebsd; +else version(FreeBSD) version = linux_or_freebsd; + +version(linux_or_freebsd): import rt.util.container.array; import rt.backtrace.elf; @@ -31,7 +34,8 @@ struct Location int traceHandlerOpApplyImpl(const void*[] callstack, scope int delegate(ref size_t, ref const(char[])) dg) { import core.stdc.stdio : snprintf; - import core.sys.linux.execinfo : backtrace_symbols; + version(linux) import core.sys.linux.execinfo : backtrace_symbols; + else version(FreeBSD) import core.sys.freebsd.execinfo : backtrace_symbols; import core.sys.posix.stdlib : free; const char** frameList = backtrace_symbols(callstack.ptr, cast(int) callstack.length); @@ -373,11 +377,21 @@ bool runStateMachine(const(LPHeader)* lpHeader, const(ubyte)[] program, const(ub const(char)[] getDemangledSymbol(const(char)[] btSymbol, ref char[1024] buffer) { - // format is: module(_D6module4funcAFZv) [0x00000000] - // or: module(_D6module4funcAFZv+0x78) [0x00000000] - auto bptr = cast(char*) memchr(btSymbol.ptr, '(', btSymbol.length); - auto eptr = cast(char*) memchr(btSymbol.ptr, ')', btSymbol.length); - auto pptr = cast(char*) memchr(btSymbol.ptr, '+', btSymbol.length); + version(linux) + { + // format is: module(_D6module4funcAFZv) [0x00000000] + // or: module(_D6module4funcAFZv+0x78) [0x00000000] + auto bptr = cast(char*) memchr(btSymbol.ptr, '(', btSymbol.length); + auto eptr = cast(char*) memchr(btSymbol.ptr, ')', btSymbol.length); + auto pptr = cast(char*) memchr(btSymbol.ptr, '+', btSymbol.length); + } + else version(FreeBSD) + { + // format is: 0x00000000 <_D6module4funcAFZv+0x78> at module + auto bptr = cast(char*) memchr(btSymbol.ptr, '<', btSymbol.length); + auto eptr = cast(char*) memchr(btSymbol.ptr, '>', btSymbol.length); + auto pptr = cast(char*) memchr(btSymbol.ptr, '+', btSymbol.length); + } if (pptr && pptr < eptr) eptr = pptr; diff --git a/src/rt/backtrace/elf.d b/src/rt/backtrace/elf.d index 62ecb7da68..2ece953bc4 100644 --- a/src/rt/backtrace/elf.d +++ b/src/rt/backtrace/elf.d @@ -11,18 +11,33 @@ module rt.backtrace.elf; -version(linux): +version(linux) version = linux_or_freebsd; +else version(FreeBSD) version = linux_or_freebsd; + +version(linux_or_freebsd): import core.sys.posix.fcntl; import core.sys.posix.unistd; -public import core.sys.linux.elf; +version(linux) public import core.sys.linux.elf; +version(FreeBSD) public import core.sys.freebsd.sys.elf; struct ElfFile { static bool openSelf(ElfFile* file) @nogc nothrow { - file.fd = open("/proc/self/exe", O_RDONLY); + version (linux) + { + auto selfPath = "/proc/self/exe".ptr; + } + else version (FreeBSD) + { + char[1024] selfPathBuffer = void; + auto selfPath = getFreeBSDExePath(selfPathBuffer[]); + if (selfPath is null) return false; + } + + file.fd = open(selfPath, O_RDONLY); if (file.fd >= 0) { // memory map header @@ -120,6 +135,29 @@ size_t findSectionByName(const(ElfFile)* file, ElfSection* stringSection, const( private: +version (FreeBSD) +{ + extern (C) int sysctl(const int* name, uint namelen, void* oldp, size_t* oldlenp, const void* newp, size_t newlen) @nogc nothrow; + const(char)* getFreeBSDExePath(char[] buffer) @nogc nothrow + { + enum + { + CTL_KERN = 1, + KERN_PROC = 14, + KERN_PROC_PATHNAME = 12 + } + + int[4] mib = [CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1]; + size_t len = buffer.length; + + auto result = sysctl(mib.ptr, mib.length, buffer.ptr, &len, null, 0); // get the length of the path + if (result != 0) return null; + if (len + 1 > buffer.length) return null; + buffer[len] = 0; + return buffer.ptr; + } +} + bool isValidElfHeader(const(Elf_Ehdr)* ehdr) @nogc nothrow { if (ehdr.e_ident[EI_MAG0] != ELFMAG0) return false; diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index dd3fc80b1b..b752f2587e 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -3,9 +3,13 @@ include ../common.mak TESTS:=stderr_msg unittest_assert ifeq ($(OS)-$(BUILD),linux-debug) TESTS:=$(TESTS) line_trace - DIFF:=diff - SED:=sed endif +ifeq ($(OS)-$(BUILD),freebsd-debug) + TESTS:=$(TESTS) line_trace +endif + +DIFF:=diff +SED:=sed .PHONY: all clean all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) From 512399df9f59ae167953f9eabc7e6175fb6ba12d Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Fri, 2 Oct 2015 15:40:03 +0000 Subject: [PATCH 101/768] core.time: Add some comments/documentation --- src/core/time.d | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/core/time.d b/src/core/time.d index 27bea61e79..a941d04ff5 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -753,7 +753,12 @@ public: } + // Note: opBinary!"*" and opBinary!"/" have to be implemented separately + // because opBinary!"/" may throw TimeException, and opBinary!"*" is nothrow + /++ + Multiplies the duration by an integer value. + The legal types of arithmetic for $(D Duration) using this operator overload are @@ -793,6 +798,9 @@ public: /++ + Multiplies the duration by an integer value as well as + assigning the result to this $(D Duration). + The legal types of arithmetic for $(D Duration) using this operator overload are @@ -845,6 +853,8 @@ public: /++ + Divides the duration by an integer value. + The legal types of arithmetic for $(D Duration) using this operator overload are @@ -896,6 +906,9 @@ public: /++ + Divides the duration by an integer value as well as + assigning the result to this $(D Duration). + The legal types of arithmetic for $(D Duration) using this operator overload are From 809b40a9b110b652ba4539679c292fbe068d5cab Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Fri, 2 Oct 2015 15:41:25 +0000 Subject: [PATCH 102/768] core.time: Implement Duration % Duration Fixes issue 15137 --- src/core/time.d | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index a941d04ff5..dde47cf54c 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -518,13 +518,14 @@ public: /++ - Adds or subtracts two durations. + Adds, subtracts or calculates the modulo of two durations. The legal types of arithmetic for $(D Duration) using this operator are $(TABLE $(TR $(TD Duration) $(TD +) $(TD Duration) $(TD -->) $(TD Duration)) $(TR $(TD Duration) $(TD -) $(TD Duration) $(TD -->) $(TD Duration)) + $(TR $(TD Duration) $(TD %) $(TD Duration) $(TD -->) $(TD Duration)) $(TR $(TD Duration) $(TD +) $(TD TickDuration) $(TD -->) $(TD Duration)) $(TR $(TD Duration) $(TD -) $(TD TickDuration) $(TD -->) $(TD Duration)) ) @@ -533,9 +534,8 @@ public: rhs = The duration to add to or subtract from this $(D Duration). +/ Duration opBinary(string op, D)(D rhs) const nothrow @nogc - if((op == "+" || op == "-") && - (is(_Unqual!D == Duration) || - is(_Unqual!D == TickDuration))) + if(((op == "+" || op == "-" || op == "%") && is(_Unqual!D == Duration)) || + ((op == "+" || op == "-") && is(_Unqual!D == TickDuration))) { static if(is(_Unqual!D == Duration)) return Duration(mixin("_hnsecs " ~ op ~ " rhs._hnsecs")); @@ -551,23 +551,31 @@ public: { assert((cast(D)Duration(5)) + (cast(E)Duration(7)) == Duration(12)); assert((cast(D)Duration(5)) - (cast(E)Duration(7)) == Duration(-2)); + assert((cast(D)Duration(5)) % (cast(E)Duration(7)) == Duration(5)); assert((cast(D)Duration(7)) + (cast(E)Duration(5)) == Duration(12)); assert((cast(D)Duration(7)) - (cast(E)Duration(5)) == Duration(2)); + assert((cast(D)Duration(7)) % (cast(E)Duration(5)) == Duration(2)); assert((cast(D)Duration(5)) + (cast(E)Duration(-7)) == Duration(-2)); assert((cast(D)Duration(5)) - (cast(E)Duration(-7)) == Duration(12)); + assert((cast(D)Duration(5)) % (cast(E)Duration(-7)) == Duration(5)); assert((cast(D)Duration(7)) + (cast(E)Duration(-5)) == Duration(2)); assert((cast(D)Duration(7)) - (cast(E)Duration(-5)) == Duration(12)); + assert((cast(D)Duration(7)) % (cast(E)Duration(-5)) == Duration(2)); assert((cast(D)Duration(-5)) + (cast(E)Duration(7)) == Duration(2)); assert((cast(D)Duration(-5)) - (cast(E)Duration(7)) == Duration(-12)); + assert((cast(D)Duration(-5)) % (cast(E)Duration(7)) == Duration(-5)); assert((cast(D)Duration(-7)) + (cast(E)Duration(5)) == Duration(-2)); assert((cast(D)Duration(-7)) - (cast(E)Duration(5)) == Duration(-12)); + assert((cast(D)Duration(-7)) % (cast(E)Duration(5)) == Duration(-2)); assert((cast(D)Duration(-5)) + (cast(E)Duration(-7)) == Duration(-12)); assert((cast(D)Duration(-5)) - (cast(E)Duration(-7)) == Duration(2)); + assert((cast(D)Duration(-5)) % (cast(E)Duration(7)) == Duration(-5)); assert((cast(D)Duration(-7)) + (cast(E)Duration(-5)) == Duration(-12)); assert((cast(D)Duration(-7)) - (cast(E)Duration(-5)) == Duration(-2)); + assert((cast(D)Duration(-7)) % (cast(E)Duration(5)) == Duration(-2)); } foreach(T; _TypeTuple!(TickDuration, const TickDuration, immutable TickDuration)) @@ -648,14 +656,15 @@ public: /++ - Adds or subtracts two durations as well as assigning the result to this - $(D Duration). + Adds, subtracts or calculates the modulo of two durations as well as + assigning the result to this $(D Duration). The legal types of arithmetic for $(D Duration) using this operator are $(TABLE $(TR $(TD Duration) $(TD +) $(TD Duration) $(TD -->) $(TD Duration)) $(TR $(TD Duration) $(TD -) $(TD Duration) $(TD -->) $(TD Duration)) + $(TR $(TD Duration) $(TD %) $(TD Duration) $(TD -->) $(TD Duration)) $(TR $(TD Duration) $(TD +) $(TD TickDuration) $(TD -->) $(TD Duration)) $(TR $(TD Duration) $(TD -) $(TD TickDuration) $(TD -->) $(TD Duration)) ) @@ -664,9 +673,8 @@ public: rhs = The duration to add to or subtract from this $(D Duration). +/ ref Duration opOpAssign(string op, D)(in D rhs) nothrow @nogc - if((op == "+" || op == "-") && - (is(_Unqual!D == Duration) || - is(_Unqual!D == TickDuration))) + if(((op == "+" || op == "-" || op == "%") && is(_Unqual!D == Duration)) || + ((op == "+" || op == "-") && is(_Unqual!D == TickDuration))) { static if(is(_Unqual!D == Duration)) mixin("_hnsecs " ~ op ~ "= rhs._hnsecs;"); @@ -698,23 +706,31 @@ public: { test1!"+="(Duration(5), (cast(E)Duration(7)), Duration(12)); test1!"-="(Duration(5), (cast(E)Duration(7)), Duration(-2)); + test1!"%="(Duration(5), (cast(E)Duration(7)), Duration(5)); test1!"+="(Duration(7), (cast(E)Duration(5)), Duration(12)); test1!"-="(Duration(7), (cast(E)Duration(5)), Duration(2)); + test1!"%="(Duration(7), (cast(E)Duration(5)), Duration(2)); test1!"+="(Duration(5), (cast(E)Duration(-7)), Duration(-2)); test1!"-="(Duration(5), (cast(E)Duration(-7)), Duration(12)); + test1!"%="(Duration(5), (cast(E)Duration(-7)), Duration(5)); test1!"+="(Duration(7), (cast(E)Duration(-5)), Duration(2)); test1!"-="(Duration(7), (cast(E)Duration(-5)), Duration(12)); + test1!"%="(Duration(7), (cast(E)Duration(-5)), Duration(2)); test1!"+="(Duration(-5), (cast(E)Duration(7)), Duration(2)); test1!"-="(Duration(-5), (cast(E)Duration(7)), Duration(-12)); + test1!"%="(Duration(-5), (cast(E)Duration(7)), Duration(-5)); test1!"+="(Duration(-7), (cast(E)Duration(5)), Duration(-2)); test1!"-="(Duration(-7), (cast(E)Duration(5)), Duration(-12)); + test1!"%="(Duration(-7), (cast(E)Duration(5)), Duration(-2)); test1!"+="(Duration(-5), (cast(E)Duration(-7)), Duration(-12)); test1!"-="(Duration(-5), (cast(E)Duration(-7)), Duration(2)); + test1!"%="(Duration(-5), (cast(E)Duration(-7)), Duration(-5)); test1!"+="(Duration(-7), (cast(E)Duration(-5)), Duration(-12)); test1!"-="(Duration(-7), (cast(E)Duration(-5)), Duration(-2)); + test1!"%="(Duration(-7), (cast(E)Duration(-5)), Duration(-2)); } foreach(T; _TypeTuple!(TickDuration, const TickDuration, immutable TickDuration)) From e02d47c8886bcf8bc969789c4dd1dbed4fdb90e8 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Fri, 2 Oct 2015 15:41:39 +0000 Subject: [PATCH 103/768] core.time: Implement Duration / Duration Fixes issue 15137 --- src/core/time.d | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/core/time.d b/src/core/time.d index dde47cf54c..8d1da77b89 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -982,6 +982,44 @@ public: } + /++ + Divides two durations. + + The legal types of arithmetic for $(D Duration) using this operator are + + $(TABLE + $(TR $(TD Duration) $(TD /) $(TD Duration) $(TD -->) $(TD long)) + ) + + Params: + rhs = The duration to divide this $(D Duration) by. + +/ + long opBinary(string op)(Duration rhs) const nothrow @nogc + if(op == "/") + { + return _hnsecs / rhs._hnsecs; + } + + unittest + { + assert(Duration(5) / Duration(7) == 0); + assert(Duration(7) / Duration(5) == 1); + assert(Duration(8) / Duration(4) == 2); + + assert(Duration(5) / Duration(-7) == 0); + assert(Duration(7) / Duration(-5) == -1); + assert(Duration(8) / Duration(-4) == -2); + + assert(Duration(-5) / Duration(7) == 0); + assert(Duration(-7) / Duration(5) == -1); + assert(Duration(-8) / Duration(4) == -2); + + assert(Duration(-5) / Duration(-7) == 0); + assert(Duration(-7) / Duration(-5) == 1); + assert(Duration(-8) / Duration(-4) == 2); + } + + /++ Multiplies an integral value and a $(D Duration). From 53d39551bf42a97b59c640f3345fed5345e297ab Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 3 Oct 2015 14:36:08 +0200 Subject: [PATCH 104/768] FreeBSD also supports backtraces with locations --- changelog.dd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.dd b/changelog.dd index c41ec19df0..8502c8c68a 100644 --- a/changelog.dd +++ b/changelog.dd @@ -10,8 +10,8 @@ $(LI $(RELATIVE_LINK2 backtraces-with-line-numbers, Backtraces now include file $(BUGSTITLE Library Changes, $(LI $(LNAME2 backtraces-with-line-numbers, Backtraces now include file name and line number.) - $(P The default tracehandler on linux now parses DWARF debug info - to add file names and line numbers to backtraces. + $(P The default tracehandler on linux and FreeBSD now parses DWARF + debug info to add file names and line numbers to backtraces. ) $(PRE From b8bf5c318b044ad578187f7388fdbdef0c304759 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 15:17:48 +0000 Subject: [PATCH 105/768] Add test generator helper script --- winhlp/testgen/gentests.d | 190 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 winhlp/testgen/gentests.d diff --git a/winhlp/testgen/gentests.d b/winhlp/testgen/gentests.d new file mode 100644 index 0000000000..271d740340 --- /dev/null +++ b/winhlp/testgen/gentests.d @@ -0,0 +1,190 @@ +import std.algorithm.searching; +import std.array; +import std.demangle; +import std.file; +import std.format; +import std.process; +import std.stdio; + +import ae.utils.array; +import ae.utils.json; +import ae.utils.text; + +int main() +{ + static struct Member + { + string file, name, kind; + uint line; + @JSONName("char") + uint char_; + + string protection; + string[] selective; + string[] storageClass; + string deco; + string originalType; + Member[] parameters; + string init; + Member[] members; + string type; + uint endline, endchar; + uint offset; + @JSONName("default") + string default_; + string defaultDeco; + string defaultValue; + string base; + string baseDeco; + string specValue; + string defaultAlias; + @JSONName("in") + Member* in_; + @JSONName("out") + Member* out_; + string[] overrides; + string[string] renamed; + string[] interfaces; + @JSONName("alias") + string alias_; + @JSONName("align") + uint align_; + string specAlias; + string value; + string constraint; + } + + File o = File("wintest.d", "wb"); + + auto modules = "druntime.json".readText.jsonParse!(Member[]); + foreach (m; modules) + { + if (m.name != "core.sys.windows.windows") + continue; + + o.writefln("struct test_%s", m.name.replace(".", "_")); + o.writeln("{"); + o.writefln("\tstatic import %s;", m.name); + + void handleMembers(string[] prefix, Member[] members) + { + foreach (d; members) + { + scope(failure) stderr.writefln("Error processing member %s:", d.name); + auto lname = (prefix ~ d.name).join(".").replace(".", "_"); + o.writefln("\talias %s = %s.%s;", lname, (m.name ~ prefix).join("."), d.name); // check existence + switch (d.kind) + { + case "function": + { + auto type = d.deco.demangleFunctionType().functionToFunctionPointerType(); + if (type.isValidDType()) + { + o.writefln("\talias typeof_%s = %s;", lname, type); + o.writefln("\tstatic assert(is(typeof(&%s) == typeof_%s));", lname, lname); + } + if (d.originalType) + { + o.writefln("\talias typeof_orig_%s = %s;", lname, d.originalType.functionToFunctionPointerType()); + o.writefln("\tstatic assert(is(typeof(&%s) == typeof_orig_%s));", lname, lname); + } + break; + } + case "enum member": + o.writefln("\tstatic assert(%s == (%s));", lname, d.value); + break; + case "variable": + o.writefln("\talias typeof_%s = %s;", lname, d.deco.demangleType()); + o.writefln("\tstatic assert(is(typeof(%s) == typeof_%s));", lname, lname); + if (d.originalType) + { + o.writefln("\talias typeof_orig_%s = %s;", lname, d.originalType); + o.writefln("\tstatic assert(is(typeof(%s) == typeof_orig_%s));", lname, lname); + } + break; + case "struct": + case "union": + case "alias": + case "enum": + break; + default: + stderr.writeln("Unknown kind: ", d.kind); + break; + } + + handleMembers(prefix ~ d.name, d.members); + } + } + + handleMembers([], m.members); + + o.writeln("}"); + o.writeln(""); + } + + o.close(); + + return spawnProcess(["dmd", "-m32", "-I../../src", "-o-", "wintest.d"]).wait(); +} + +/// nothrow @nogc extern (Windows) BOOL(LPCSTR lpPathName) +/// -- to -- +/// nothrow @nogc extern (Windows) BOOL function(LPCSTR lpPathName) +string functionToFunctionPointerType(string type) +{ + if (type.contains(" @trusted")) + type = type.replace(" @trusted", "") ~ " @trusted"; + + int parens; + foreach_reverse (i, char c; type) + if (c == ')') + parens++; + else + if (c == '(') + { + parens--; + if (!parens) + return type[0..i] ~ " function" ~ type[i..$]; + } + assert(false, "Not a function type: " ~ type); +} + +string demangleType(string mangledType) +{ + auto result = demangle("_D1x" ~ mangledType)[0..$-2]; + if (result.endsWith("*") && result.canFind(" function(")) + result = result[0..$-1]; // https://issues.dlang.org/show_bug.cgi?id=15143 + return result; +} + +string demangleFunctionType(string mangledType) +{ + auto placeholder = "dftPlaceholder"; + return "_D%s%s%s" + .format(placeholder.length, placeholder, mangledType) + .demangle() + .replace(" " ~ placeholder, "") + ; +} + +/// Filter types unrepresentable in D grammar +bool isValidDType(string type) +{ + if (type.contains("* function")) + return false; // function returning function pointer + + int parenLevel; + foreach (i, c; type) + { + if (c == '(') + parenLevel++; + else + if (c == ')') + parenLevel++; + else + if (parenLevel && type[i..$].startsWith("extern (")) + return false; + } + + return true; +} From 8fbcc2d819a84a5340cc6ac724320cae3561cb3b Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 14:46:21 +0000 Subject: [PATCH 106/768] Add win32 headers, verbatim Excluded files: - testall.d (helper test script) - usp10.d (no license information) - winsock.d (no license information) - winsock2.d (no license information) - DirectX headers (out of scope) --- src/core/sys/windows/accctrl.d | 420 +++ src/core/sys/windows/aclapi.d | 137 + src/core/sys/windows/aclui.d | 120 + src/core/sys/windows/basetsd.d | 159 + src/core/sys/windows/basetyps.d | 24 + src/core/sys/windows/cderr.d | 50 + src/core/sys/windows/cguid.d | 13 + src/core/sys/windows/comcat.d | 73 + src/core/sys/windows/commctrl.d | 6283 +++++++++++++++++++++++++++++++ src/core/sys/windows/commdlg.d | 717 ++++ src/core/sys/windows/core.d | 30 + src/core/sys/windows/cpl.d | 77 + src/core/sys/windows/cplext.d | 19 + src/core/sys/windows/custcntl.d | 122 + src/core/sys/windows/dbt.d | 189 + src/core/sys/windows/dde.d | 215 ++ src/core/sys/windows/ddeml.d | 377 ++ src/core/sys/windows/dhcpcsdk.d | 58 + src/core/sys/windows/dlgs.d | 191 + src/core/sys/windows/docobj.d | 133 + src/core/sys/windows/errorrep.d | 40 + src/core/sys/windows/exdisp.d | 127 + src/core/sys/windows/exdispid.d | 20 + src/core/sys/windows/httpext.d | 114 + src/core/sys/windows/idispids.d | 16 + src/core/sys/windows/imagehlp.d | 363 ++ src/core/sys/windows/imm.d | 482 +++ src/core/sys/windows/intshcut.d | 89 + src/core/sys/windows/ipexport.d | 108 + src/core/sys/windows/iphlpapi.d | 62 + src/core/sys/windows/ipifcons.d | 38 + src/core/sys/windows/iprtrmib.d | 267 ++ src/core/sys/windows/iptypes.d | 103 + src/core/sys/windows/isguids.d | 17 + src/core/sys/windows/lm.d | 47 + src/core/sys/windows/lmaccess.d | 759 ++++ src/core/sys/windows/lmalert.d | 77 + src/core/sys/windows/lmapibuf.d | 21 + src/core/sys/windows/lmat.d | 50 + src/core/sys/windows/lmaudit.d | 302 ++ src/core/sys/windows/lmbrowsr.d | 85 + src/core/sys/windows/lmchdev.d | 90 + src/core/sys/windows/lmconfig.d | 30 + src/core/sys/windows/lmcons.d | 86 + src/core/sys/windows/lmerr.d | 313 ++ src/core/sys/windows/lmerrlog.d | 222 ++ src/core/sys/windows/lmmsg.d | 43 + src/core/sys/windows/lmremutl.d | 60 + src/core/sys/windows/lmrepl.d | 134 + src/core/sys/windows/lmserver.d | 941 +++++ src/core/sys/windows/lmshare.d | 197 + src/core/sys/windows/lmsname.d | 65 + src/core/sys/windows/lmstats.d | 121 + src/core/sys/windows/lmsvc.d | 156 + src/core/sys/windows/lmuse.d | 80 + src/core/sys/windows/lmuseflg.d | 16 + src/core/sys/windows/lmwksta.d | 390 ++ src/core/sys/windows/lzexpand.d | 48 + src/core/sys/windows/mapi.d | 168 + src/core/sys/windows/mciavi.d | 40 + src/core/sys/windows/mcx.d | 99 + src/core/sys/windows/mgmtapi.d | 47 + src/core/sys/windows/mmsystem.d | 2269 +++++++++++ src/core/sys/windows/msacm.d | 173 + src/core/sys/windows/mshtml.d | 536 +++ src/core/sys/windows/mswsock.d | 197 + src/core/sys/windows/nb30.d | 237 ++ src/core/sys/windows/nddeapi.d | 162 + src/core/sys/windows/nspapi.d | 148 + src/core/sys/windows/ntdef.d | 80 + src/core/sys/windows/ntdll.d | 22 + src/core/sys/windows/ntldap.d | 58 + src/core/sys/windows/ntsecapi.d | 793 ++++ src/core/sys/windows/ntsecpkg.d | 446 +++ src/core/sys/windows/oaidl.d | 672 ++++ src/core/sys/windows/objbase.d | 207 + src/core/sys/windows/objfwd.d | 103 + src/core/sys/windows/objidl.d | 1307 +++++++ src/core/sys/windows/objsafe.d | 23 + src/core/sys/windows/ocidl.d | 471 +++ src/core/sys/windows/odbcinst.d | 166 + src/core/sys/windows/ole.d | 362 ++ src/core/sys/windows/ole2.d | 118 + src/core/sys/windows/ole2ver.d | 14 + src/core/sys/windows/oleacc.d | 214 ++ src/core/sys/windows/oleauto.d | 684 ++++ src/core/sys/windows/olectl.d | 398 ++ src/core/sys/windows/olectlid.d | 13 + src/core/sys/windows/oledlg.d | 990 +++++ src/core/sys/windows/oleidl.d | 270 ++ src/core/sys/windows/pbt.d | 30 + src/core/sys/windows/powrprof.d | 140 + src/core/sys/windows/prsht.d | 442 +++ src/core/sys/windows/psapi.d | 158 + src/core/sys/windows/rapi.d | 54 + src/core/sys/windows/ras.d | 1025 +++++ src/core/sys/windows/rasdlg.d | 159 + src/core/sys/windows/raserror.d | 215 ++ src/core/sys/windows/rassapi.d | 220 ++ src/core/sys/windows/reason.d | 63 + src/core/sys/windows/regstr.d | 816 ++++ src/core/sys/windows/richedit.d | 590 +++ src/core/sys/windows/richole.d | 101 + src/core/sys/windows/rpc.d | 31 + src/core/sys/windows/rpcdce.d | 411 ++ src/core/sys/windows/rpcdce2.d | 78 + src/core/sys/windows/rpcdcep.d | 151 + src/core/sys/windows/rpcndr.d | 573 +++ src/core/sys/windows/rpcnsi.d | 149 + src/core/sys/windows/rpcnsip.d | 29 + src/core/sys/windows/rpcnterr.d | 31 + src/core/sys/windows/schannel.d | 106 + src/core/sys/windows/secext.d | 52 + src/core/sys/windows/security.d | 46 + src/core/sys/windows/servprov.d | 16 + src/core/sys/windows/setupapi.d | 1979 ++++++++++ src/core/sys/windows/shellapi.d | 418 ++ src/core/sys/windows/shldisp.d | 27 + src/core/sys/windows/shlguid.d | 18 + src/core/sys/windows/shlobj.d | 1353 +++++++ src/core/sys/windows/shlwapi.d | 730 ++++ src/core/sys/windows/snmp.d | 269 ++ src/core/sys/windows/sql.d | 434 +++ src/core/sys/windows/sqlext.d | 1295 +++++++ src/core/sys/windows/sqltypes.d | 142 + src/core/sys/windows/sqlucode.d | 156 + src/core/sys/windows/sspi.d | 380 ++ src/core/sys/windows/subauth.d | 275 ++ src/core/sys/windows/tlhelp32.d | 169 + src/core/sys/windows/tmschema.d | 758 ++++ src/core/sys/windows/unknwn.d | 55 + src/core/sys/windows/uuid.d | 4069 ++++++++++++++++++++ src/core/sys/windows/vfw.d | 2395 ++++++++++++ src/core/sys/windows/w32api.d | 83 + src/core/sys/windows/winbase.d | 2799 ++++++++++++++ src/core/sys/windows/winber.d | 70 + src/core/sys/windows/wincon.d | 277 ++ src/core/sys/windows/wincrypt.d | 899 +++++ src/core/sys/windows/windef.d | 155 + src/core/sys/windows/windows.d | 4028 +------------------- src/core/sys/windows/winerror.d | 2310 ++++++++++++ src/core/sys/windows/wingdi.d | 4560 ++++++++++++++++++++++ src/core/sys/windows/wininet.d | 1246 ++++++ src/core/sys/windows/winioctl.d | 712 ++++ src/core/sys/windows/winldap.d | 854 +++++ src/core/sys/windows/winnetwk.d | 438 +++ src/core/sys/windows/winnls.d | 809 ++++ src/core/sys/windows/winnt.d | 4103 ++++++++++++++++++++ src/core/sys/windows/winperf.d | 152 + src/core/sys/windows/winreg.d | 251 ++ src/core/sys/windows/winspool.d | 961 +++++ src/core/sys/windows/winsvc.d | 425 +++ src/core/sys/windows/winuser.d | 4834 ++++++++++++++++++++++++ src/core/sys/windows/winver.d | 172 + src/core/sys/windows/ws2tcpip.d | 281 ++ src/core/sys/windows/wtsapi32.d | 429 +++ src/core/sys/windows/wtypes.d | 232 ++ 157 files changed, 74798 insertions(+), 3963 deletions(-) create mode 100644 src/core/sys/windows/accctrl.d create mode 100644 src/core/sys/windows/aclapi.d create mode 100644 src/core/sys/windows/aclui.d create mode 100644 src/core/sys/windows/basetsd.d create mode 100644 src/core/sys/windows/basetyps.d create mode 100644 src/core/sys/windows/cderr.d create mode 100644 src/core/sys/windows/cguid.d create mode 100644 src/core/sys/windows/comcat.d create mode 100644 src/core/sys/windows/commctrl.d create mode 100644 src/core/sys/windows/commdlg.d create mode 100644 src/core/sys/windows/core.d create mode 100644 src/core/sys/windows/cpl.d create mode 100644 src/core/sys/windows/cplext.d create mode 100644 src/core/sys/windows/custcntl.d create mode 100644 src/core/sys/windows/dbt.d create mode 100644 src/core/sys/windows/dde.d create mode 100644 src/core/sys/windows/ddeml.d create mode 100644 src/core/sys/windows/dhcpcsdk.d create mode 100644 src/core/sys/windows/dlgs.d create mode 100644 src/core/sys/windows/docobj.d create mode 100644 src/core/sys/windows/errorrep.d create mode 100644 src/core/sys/windows/exdisp.d create mode 100644 src/core/sys/windows/exdispid.d create mode 100644 src/core/sys/windows/httpext.d create mode 100644 src/core/sys/windows/idispids.d create mode 100644 src/core/sys/windows/imagehlp.d create mode 100644 src/core/sys/windows/imm.d create mode 100644 src/core/sys/windows/intshcut.d create mode 100644 src/core/sys/windows/ipexport.d create mode 100644 src/core/sys/windows/iphlpapi.d create mode 100644 src/core/sys/windows/ipifcons.d create mode 100644 src/core/sys/windows/iprtrmib.d create mode 100644 src/core/sys/windows/iptypes.d create mode 100644 src/core/sys/windows/isguids.d create mode 100644 src/core/sys/windows/lm.d create mode 100644 src/core/sys/windows/lmaccess.d create mode 100644 src/core/sys/windows/lmalert.d create mode 100644 src/core/sys/windows/lmapibuf.d create mode 100644 src/core/sys/windows/lmat.d create mode 100644 src/core/sys/windows/lmaudit.d create mode 100644 src/core/sys/windows/lmbrowsr.d create mode 100644 src/core/sys/windows/lmchdev.d create mode 100644 src/core/sys/windows/lmconfig.d create mode 100644 src/core/sys/windows/lmcons.d create mode 100644 src/core/sys/windows/lmerr.d create mode 100644 src/core/sys/windows/lmerrlog.d create mode 100644 src/core/sys/windows/lmmsg.d create mode 100644 src/core/sys/windows/lmremutl.d create mode 100644 src/core/sys/windows/lmrepl.d create mode 100644 src/core/sys/windows/lmserver.d create mode 100644 src/core/sys/windows/lmshare.d create mode 100644 src/core/sys/windows/lmsname.d create mode 100644 src/core/sys/windows/lmstats.d create mode 100644 src/core/sys/windows/lmsvc.d create mode 100644 src/core/sys/windows/lmuse.d create mode 100644 src/core/sys/windows/lmuseflg.d create mode 100644 src/core/sys/windows/lmwksta.d create mode 100644 src/core/sys/windows/lzexpand.d create mode 100644 src/core/sys/windows/mapi.d create mode 100644 src/core/sys/windows/mciavi.d create mode 100644 src/core/sys/windows/mcx.d create mode 100644 src/core/sys/windows/mgmtapi.d create mode 100644 src/core/sys/windows/mmsystem.d create mode 100644 src/core/sys/windows/msacm.d create mode 100644 src/core/sys/windows/mshtml.d create mode 100644 src/core/sys/windows/mswsock.d create mode 100644 src/core/sys/windows/nb30.d create mode 100644 src/core/sys/windows/nddeapi.d create mode 100644 src/core/sys/windows/nspapi.d create mode 100644 src/core/sys/windows/ntdef.d create mode 100644 src/core/sys/windows/ntdll.d create mode 100644 src/core/sys/windows/ntldap.d create mode 100644 src/core/sys/windows/ntsecapi.d create mode 100644 src/core/sys/windows/ntsecpkg.d create mode 100644 src/core/sys/windows/oaidl.d create mode 100644 src/core/sys/windows/objbase.d create mode 100644 src/core/sys/windows/objfwd.d create mode 100644 src/core/sys/windows/objidl.d create mode 100644 src/core/sys/windows/objsafe.d create mode 100644 src/core/sys/windows/ocidl.d create mode 100644 src/core/sys/windows/odbcinst.d create mode 100644 src/core/sys/windows/ole.d create mode 100644 src/core/sys/windows/ole2.d create mode 100644 src/core/sys/windows/ole2ver.d create mode 100644 src/core/sys/windows/oleacc.d create mode 100644 src/core/sys/windows/oleauto.d create mode 100644 src/core/sys/windows/olectl.d create mode 100644 src/core/sys/windows/olectlid.d create mode 100644 src/core/sys/windows/oledlg.d create mode 100644 src/core/sys/windows/oleidl.d create mode 100644 src/core/sys/windows/pbt.d create mode 100644 src/core/sys/windows/powrprof.d create mode 100644 src/core/sys/windows/prsht.d create mode 100644 src/core/sys/windows/psapi.d create mode 100644 src/core/sys/windows/rapi.d create mode 100644 src/core/sys/windows/ras.d create mode 100644 src/core/sys/windows/rasdlg.d create mode 100644 src/core/sys/windows/raserror.d create mode 100644 src/core/sys/windows/rassapi.d create mode 100644 src/core/sys/windows/reason.d create mode 100644 src/core/sys/windows/regstr.d create mode 100644 src/core/sys/windows/richedit.d create mode 100644 src/core/sys/windows/richole.d create mode 100644 src/core/sys/windows/rpc.d create mode 100644 src/core/sys/windows/rpcdce.d create mode 100644 src/core/sys/windows/rpcdce2.d create mode 100644 src/core/sys/windows/rpcdcep.d create mode 100644 src/core/sys/windows/rpcndr.d create mode 100644 src/core/sys/windows/rpcnsi.d create mode 100644 src/core/sys/windows/rpcnsip.d create mode 100644 src/core/sys/windows/rpcnterr.d create mode 100644 src/core/sys/windows/schannel.d create mode 100644 src/core/sys/windows/secext.d create mode 100644 src/core/sys/windows/security.d create mode 100644 src/core/sys/windows/servprov.d create mode 100644 src/core/sys/windows/setupapi.d create mode 100644 src/core/sys/windows/shellapi.d create mode 100644 src/core/sys/windows/shldisp.d create mode 100644 src/core/sys/windows/shlguid.d create mode 100644 src/core/sys/windows/shlobj.d create mode 100644 src/core/sys/windows/shlwapi.d create mode 100644 src/core/sys/windows/snmp.d create mode 100644 src/core/sys/windows/sql.d create mode 100644 src/core/sys/windows/sqlext.d create mode 100644 src/core/sys/windows/sqltypes.d create mode 100644 src/core/sys/windows/sqlucode.d create mode 100644 src/core/sys/windows/sspi.d create mode 100644 src/core/sys/windows/subauth.d create mode 100644 src/core/sys/windows/tlhelp32.d create mode 100644 src/core/sys/windows/tmschema.d create mode 100644 src/core/sys/windows/unknwn.d create mode 100644 src/core/sys/windows/uuid.d create mode 100644 src/core/sys/windows/vfw.d create mode 100644 src/core/sys/windows/w32api.d create mode 100644 src/core/sys/windows/winbase.d create mode 100644 src/core/sys/windows/winber.d create mode 100644 src/core/sys/windows/wincon.d create mode 100644 src/core/sys/windows/wincrypt.d create mode 100644 src/core/sys/windows/windef.d create mode 100644 src/core/sys/windows/winerror.d create mode 100644 src/core/sys/windows/wingdi.d create mode 100644 src/core/sys/windows/wininet.d create mode 100644 src/core/sys/windows/winioctl.d create mode 100644 src/core/sys/windows/winldap.d create mode 100644 src/core/sys/windows/winnetwk.d create mode 100644 src/core/sys/windows/winnls.d create mode 100644 src/core/sys/windows/winnt.d create mode 100644 src/core/sys/windows/winperf.d create mode 100644 src/core/sys/windows/winreg.d create mode 100644 src/core/sys/windows/winspool.d create mode 100644 src/core/sys/windows/winsvc.d create mode 100644 src/core/sys/windows/winuser.d create mode 100644 src/core/sys/windows/winver.d create mode 100644 src/core/sys/windows/ws2tcpip.d create mode 100644 src/core/sys/windows/wtsapi32.d create mode 100644 src/core/sys/windows/wtypes.d diff --git a/src/core/sys/windows/accctrl.d b/src/core/sys/windows/accctrl.d new file mode 100644 index 0000000000..1bc969b430 --- /dev/null +++ b/src/core/sys/windows/accctrl.d @@ -0,0 +1,420 @@ +/***********************************************************************\ +* accctrl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.accctrl; + +private import win32.basetyps, win32.w32api, win32.winbase, win32.windef; + +// FIXME: check types and grouping of constants +// FIXME: check Windows version support + +alias LocalFree AccFree; + +const uint + ACTRL_RESERVED = 0x00000000, + ACTRL_ACCESS_PROTECTED = 0x00000001, + ACTRL_ACCESS_ALLOWED = 0x00000001, + ACTRL_ACCESS_DENIED = 0x00000002, + ACTRL_AUDIT_SUCCESS = 0x00000004, + ACTRL_AUDIT_FAILURE = 0x00000008, + ACTRL_SYSTEM_ACCESS = 0x04000000, + ACTRL_DELETE = 0x08000000, + ACTRL_READ_CONTROL = 0x10000000, + ACTRL_CHANGE_ACCESS = 0x20000000, + ACTRL_CHANGE_OWNER = 0x40000000, + ACTRL_SYNCHRONIZE = 0x80000000, + ACTRL_STD_RIGHTS_ALL = 0xf8000000; + +const uint + ACTRL_FILE_READ = 0x00000001, + ACTRL_FILE_WRITE = 0x00000002, + ACTRL_FILE_APPEND = 0x00000004, + ACTRL_FILE_READ_PROP = 0x00000008, + ACTRL_FILE_WRITE_PROP = 0x00000010, + ACTRL_FILE_EXECUTE = 0x00000020, + ACTRL_FILE_READ_ATTRIB = 0x00000080, + ACTRL_FILE_WRITE_ATTRIB = 0x00000100, + ACTRL_FILE_CREATE_PIPE = 0x00000200; + +const uint + ACTRL_DIR_LIST = 0x00000001, + ACTRL_DIR_CREATE_OBJECT = 0x00000002, + ACTRL_DIR_CREATE_CHILD = 0x00000004, + ACTRL_DIR_DELETE_CHILD = 0x00000040, + ACTRL_DIR_TRAVERSE = 0x00000020; + +const uint + ACTRL_KERNEL_TERMINATE = 0x00000001, + ACTRL_KERNEL_THREAD = 0x00000002, + ACTRL_KERNEL_VM = 0x00000004, + ACTRL_KERNEL_VM_READ = 0x00000008, + ACTRL_KERNEL_VM_WRITE = 0x00000010, + ACTRL_KERNEL_DUP_HANDLE = 0x00000020, + ACTRL_KERNEL_PROCESS = 0x00000040, + ACTRL_KERNEL_SET_INFO = 0x00000080, + ACTRL_KERNEL_GET_INFO = 0x00000100, + ACTRL_KERNEL_CONTROL = 0x00000200, + ACTRL_KERNEL_ALERT = 0x00000400, + ACTRL_KERNEL_GET_CONTEXT = 0x00000800, + ACTRL_KERNEL_SET_CONTEXT = 0x00001000, + ACTRL_KERNEL_TOKEN = 0x00002000, + ACTRL_KERNEL_IMPERSONATE = 0x00004000, + ACTRL_KERNEL_DIMPERSONATE = 0x00008000; + +const uint + ACTRL_PRINT_SADMIN = 0x00000001, + ACTRL_PRINT_SLIST = 0x00000002, + ACTRL_PRINT_PADMIN = 0x00000004, + ACTRL_PRINT_PUSE = 0x00000008, + ACTRL_PRINT_JADMIN = 0x00000010; + +const uint + ACTRL_SVC_GET_INFO = 0x00000001, + ACTRL_SVC_SET_INFO = 0x00000002, + ACTRL_SVC_STATUS = 0x00000004, + ACTRL_SVC_LIST = 0x00000008, + ACTRL_SVC_START = 0x00000010, + ACTRL_SVC_STOP = 0x00000020, + ACTRL_SVC_PAUSE = 0x00000040, + ACTRL_SVC_INTERROGATE = 0x00000080, + ACTRL_SVC_UCONTROL = 0x00000100; + +const uint + ACTRL_REG_QUERY = 0x00000001, + ACTRL_REG_SET = 0x00000002, + ACTRL_REG_CREATE_CHILD = 0x00000004, + ACTRL_REG_LIST = 0x00000008, + ACTRL_REG_NOTIFY = 0x00000010, + ACTRL_REG_LINK = 0x00000020; + +const uint + ACTRL_WIN_CLIPBRD = 0x00000001, + ACTRL_WIN_GLOBAL_ATOMS = 0x00000002, + ACTRL_WIN_CREATE = 0x00000004, + ACTRL_WIN_LIST_DESK = 0x00000008, + ACTRL_WIN_LIST = 0x00000010, + ACTRL_WIN_READ_ATTRIBS = 0x00000020, + ACTRL_WIN_WRITE_ATTRIBS = 0x00000040, + ACTRL_WIN_SCREEN = 0x00000080, + ACTRL_WIN_EXIT = 0x00000100; + +enum : uint { + ACTRL_ACCESS_NO_OPTIONS = 0x00000000, + ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES = 0x00000001 +} + +const TCHAR[] ACCCTRL_DEFAULT_PROVIDER = "Windows NT Access Provider"; + +const uint + TRUSTEE_ACCESS_ALLOWED = 0x00000001, + TRUSTEE_ACCESS_READ = 0x00000002, + TRUSTEE_ACCESS_WRITE = 0x00000004, + TRUSTEE_ACCESS_EXPLICIT = 0x00000001, + TRUSTEE_ACCESS_READ_WRITE = 0x00000006, + TRUSTEE_ACCESS_ALL = 0xFFFFFFFF; + +const uint + NO_INHERITANCE = 0x0, + SUB_OBJECTS_ONLY_INHERIT = 0x1, + SUB_CONTAINERS_ONLY_INHERIT = 0x2, + SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3, + INHERIT_NO_PROPAGATE = 0x4, + INHERIT_ONLY = 0x8, + INHERITED_ACCESS_ENTRY = 0x10, + INHERITED_PARENT = 0x10000000, + INHERITED_GRANDPARENT = 0x20000000; + +alias ULONG INHERIT_FLAGS, ACCESS_RIGHTS; +alias ULONG* PINHERIT_FLAGS, PACCESS_RIGHTS; + +enum ACCESS_MODE { + NOT_USED_ACCESS, + GRANT_ACCESS, + SET_ACCESS, + DENY_ACCESS, + REVOKE_ACCESS, + SET_AUDIT_SUCCESS, + SET_AUDIT_FAILURE +} + +enum SE_OBJECT_TYPE { + SE_UNKNOWN_OBJECT_TYPE, + SE_FILE_OBJECT, + SE_SERVICE, + SE_PRINTER, + SE_REGISTRY_KEY, + SE_LMSHARE, + SE_KERNEL_OBJECT, + SE_WINDOW_OBJECT, + SE_DS_OBJECT, + SE_DS_OBJECT_ALL, + SE_PROVIDER_DEFINED_OBJECT, + SE_WMIGUID_OBJECT, + SE_REGISTRY_WOW64_32KEY +} + +enum TRUSTEE_TYPE { + TRUSTEE_IS_UNKNOWN, + TRUSTEE_IS_USER, + TRUSTEE_IS_GROUP, + TRUSTEE_IS_DOMAIN, + TRUSTEE_IS_ALIAS, + TRUSTEE_IS_WELL_KNOWN_GROUP, + TRUSTEE_IS_DELETED, + TRUSTEE_IS_INVALID, + TRUSTEE_IS_COMPUTER +} + +enum TRUSTEE_FORM { + TRUSTEE_IS_SID, + TRUSTEE_IS_NAME, + TRUSTEE_BAD_FORM, + TRUSTEE_IS_OBJECTS_AND_SID, + TRUSTEE_IS_OBJECTS_AND_NAME +} + +enum MULTIPLE_TRUSTEE_OPERATION { + NO_MULTIPLE_TRUSTEE, + TRUSTEE_IS_IMPERSONATE +} + +struct TRUSTEE_A { + TRUSTEE_A* pMultipleTrustee; + MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; + TRUSTEE_FORM TrusteeForm; + TRUSTEE_TYPE TrusteeType; + LPSTR ptstrName; +} +alias TRUSTEE_A TRUSTEEA; +alias TRUSTEE_A* PTRUSTEE_A, PTRUSTEEA; + +struct TRUSTEE_W { + TRUSTEE_W* pMultipleTrustee; + MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; + TRUSTEE_FORM TrusteeForm; + TRUSTEE_TYPE TrusteeType; + LPWSTR ptstrName; +} +alias TRUSTEE_W TRUSTEEW; +alias TRUSTEEW* PTRUSTEE_W, PTRUSTEEW; + +struct ACTRL_ACCESS_ENTRYA { + TRUSTEE_A Trustee; + ULONG fAccessFlags; + ACCESS_RIGHTS Access; + ACCESS_RIGHTS ProvSpecificAccess; + INHERIT_FLAGS Inheritance; + LPCSTR lpInheritProperty; +} +alias ACTRL_ACCESS_ENTRYA* PACTRL_ACCESS_ENTRYA; + +struct ACTRL_ACCESS_ENTRYW { + TRUSTEE_W Trustee; + ULONG fAccessFlags; + ACCESS_RIGHTS Access; + ACCESS_RIGHTS ProvSpecificAccess; + INHERIT_FLAGS Inheritance; + LPCWSTR lpInheritProperty; +} +alias ACTRL_ACCESS_ENTRYW* PACTRL_ACCESS_ENTRYW; + +struct ACTRL_ACCESS_ENTRY_LISTA { + ULONG cEntries; + ACTRL_ACCESS_ENTRYA* pAccessList; +} +alias ACTRL_ACCESS_ENTRY_LISTA* PACTRL_ACCESS_ENTRY_LISTA; + +struct ACTRL_ACCESS_ENTRY_LISTW { + ULONG cEntries; + ACTRL_ACCESS_ENTRYW* pAccessList; +} +alias ACTRL_ACCESS_ENTRY_LISTW* PACTRL_ACCESS_ENTRY_LISTW; + +struct ACTRL_PROPERTY_ENTRYA { + LPCSTR lpProperty; + PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; + ULONG fListFlags; +} +alias ACTRL_PROPERTY_ENTRYA* PACTRL_PROPERTY_ENTRYA; + +struct ACTRL_PROPERTY_ENTRYW { + LPCWSTR lpProperty; + PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; + ULONG fListFlags; +} +alias ACTRL_PROPERTY_ENTRYW* PACTRL_PROPERTY_ENTRYW; + +struct ACTRL_ACCESSA { + ULONG cEntries; + PACTRL_PROPERTY_ENTRYA pPropertyAccessList; +} +alias ACTRL_ACCESSA ACTRL_AUDITA; +alias ACTRL_ACCESSA* PACTRL_ACCESSA, PACTRL_AUDITA; + +struct ACTRL_ACCESSW { + ULONG cEntries; + PACTRL_PROPERTY_ENTRYW pPropertyAccessList; +} +alias ACTRL_ACCESSW ACTRL_AUDITW; +alias ACTRL_ACCESSW* PACTRL_ACCESSW, PACTRL_AUDITW; + +struct TRUSTEE_ACCESSA { + LPSTR lpProperty; + ACCESS_RIGHTS Access; + ULONG fAccessFlags; + ULONG fReturnedAccess; +} +alias TRUSTEE_ACCESSA* PTRUSTEE_ACCESSA; + +struct TRUSTEE_ACCESSW { + LPWSTR lpProperty; + ACCESS_RIGHTS Access; + ULONG fAccessFlags; + ULONG fReturnedAccess; +} +alias TRUSTEE_ACCESSW* PTRUSTEE_ACCESSW; + +struct ACTRL_OVERLAPPED { + union { + PVOID Provider; + ULONG Reserved1; + } + ULONG Reserved2; + HANDLE hEvent; +} +alias ACTRL_OVERLAPPED* PACTRL_OVERLAPPED; + +struct ACTRL_ACCESS_INFOA { + ULONG fAccessPermission; + LPSTR lpAccessPermissionName; +} +alias ACTRL_ACCESS_INFOA* PACTRL_ACCESS_INFOA; + +struct ACTRL_ACCESS_INFOW { + ULONG fAccessPermission; + LPWSTR lpAccessPermissionName; +} +alias ACTRL_ACCESS_INFOW* PACTRL_ACCESS_INFOW; + +struct ACTRL_CONTROL_INFOA { + LPSTR lpControlId; + LPSTR lpControlName; +} +alias ACTRL_CONTROL_INFOA* PACTRL_CONTROL_INFOA; + +struct ACTRL_CONTROL_INFOW { + LPWSTR lpControlId; + LPWSTR lpControlName; +} +alias ACTRL_CONTROL_INFOW* PACTRL_CONTROL_INFOW; + +struct EXPLICIT_ACCESS_A { + DWORD grfAccessPermissions; + ACCESS_MODE grfAccessMode; + DWORD grfInheritance; + TRUSTEE_A Trustee; +} +alias EXPLICIT_ACCESS_A EXPLICIT_ACCESSA; +alias EXPLICIT_ACCESS_A* PEXPLICIT_ACCESS_A, PEXPLICIT_ACCESSA; + +struct EXPLICIT_ACCESS_W { + DWORD grfAccessPermissions; + ACCESS_MODE grfAccessMode; + DWORD grfInheritance; + TRUSTEE_W Trustee; +} +alias EXPLICIT_ACCESS_W EXPLICIT_ACCESSW; +alias EXPLICIT_ACCESS_W* PEXPLICIT_ACCESS_W, PEXPLICIT_ACCESSW; + +struct OBJECTS_AND_SID { + DWORD ObjectsPresent; + GUID ObjectTypeGuid; + GUID InheritedObjectTypeGuid; + SID* pSid; +} +alias OBJECTS_AND_SID* POBJECTS_AND_SID; + +struct OBJECTS_AND_NAME_A { + DWORD ObjectsPresent; + SE_OBJECT_TYPE ObjectType; + LPSTR ObjectTypeName; + LPSTR InheritedObjectTypeName; + LPSTR ptstrName; +} +alias OBJECTS_AND_NAME_A* POBJECTS_AND_NAME_A; + +struct OBJECTS_AND_NAME_W { + DWORD ObjectsPresent; + SE_OBJECT_TYPE ObjectType; + LPWSTR ObjectTypeName; + LPWSTR InheritedObjectTypeName; + LPWSTR ptstrName; +} +alias OBJECTS_AND_NAME_W* POBJECTS_AND_NAME_W; + +static if (_WIN32_WINNT >= 0x501) { + struct INHERITED_FROMA { + LONG GenerationGap; + LPSTR AncestorName; + } + alias INHERITED_FROMA* PINHERITED_FROMA; + + struct INHERITED_FROMW { + LONG GenerationGap; + LPWSTR AncestorName; + } + alias INHERITED_FROMW* PINHERITED_FROMW; +} + +version (Unicode) { + alias TRUSTEEW TRUSTEE; + alias ACTRL_ACCESSW ACTRL_ACCESS; + alias ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST; + alias ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO; + alias ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY; + alias ACTRL_AUDITW ACTRL_AUDIT; + alias ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO; + alias EXPLICIT_ACCESSW EXPLICIT_ACCESS; + alias TRUSTEE_ACCESSW TRUSTEE_ACCESS; + alias OBJECTS_AND_NAME_W OBJECTS_AND_NAME_; + static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROMW INHERITED_FROM; + } +} else { + alias TRUSTEEA TRUSTEE; + alias ACTRL_ACCESSA ACTRL_ACCESS; + alias ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST; + alias ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO; + alias ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY; + alias ACTRL_AUDITA ACTRL_AUDIT; + alias ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO; + alias EXPLICIT_ACCESSA EXPLICIT_ACCESS; + alias TRUSTEE_ACCESSA TRUSTEE_ACCESS; + alias OBJECTS_AND_NAME_A OBJECTS_AND_NAME_; + static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROMA INHERITED_FROM; + } +} + +alias TRUSTEE TRUSTEE_; +alias TRUSTEE* PTRUSTEE, PTRUSTEE_; +alias ACTRL_ACCESS* PACTRL_ACCESS; +alias ACTRL_ACCESS_ENTRY_LIST* PACTRL_ACCESS_ENTRY_LIST; +alias ACTRL_ACCESS_INFO* PACTRL_ACCESS_INFO; +alias ACTRL_ACCESS_ENTRY* PACTRL_ACCESS_ENTRY; +alias ACTRL_AUDIT* PACTRL_AUDIT; +alias ACTRL_CONTROL_INFO* PACTRL_CONTROL_INFO; +alias EXPLICIT_ACCESS EXPLICIT_ACCESS_; +alias EXPLICIT_ACCESS* PEXPLICIT_ACCESS, PEXPLICIT_ACCESS_; +alias TRUSTEE_ACCESS* PTRUSTEE_ACCESS; +alias OBJECTS_AND_NAME_* POBJECTS_AND_NAME_; +static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROM* PINHERITED_FROM; +} diff --git a/src/core/sys/windows/aclapi.d b/src/core/sys/windows/aclapi.d new file mode 100644 index 0000000000..6d1ce9ab04 --- /dev/null +++ b/src/core/sys/windows/aclapi.d @@ -0,0 +1,137 @@ +/***********************************************************************\ +* aclapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.aclapi; +pragma(lib, "advapi32"); + +import win32.windows, win32.accctrl; + +extern (Windows) { + VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD, + ACCESS_MODE, DWORD); + VOID BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, DWORD, + ACCESS_MODE, DWORD); + DWORD BuildSecurityDescriptorA(PTRUSTEE_A, PTRUSTEE_A , ULONG, + PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR, + PULONG, PSECURITY_DESCRIPTOR*); + DWORD BuildSecurityDescriptorW(PTRUSTEE_W, PTRUSTEE_W , ULONG, + PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR, + PULONG, PSECURITY_DESCRIPTOR*); + VOID BuildTrusteeWithNameA(PTRUSTEE_A, LPSTR); + VOID BuildTrusteeWithNameW(PTRUSTEE_W, LPWSTR); + VOID BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A, POBJECTS_AND_NAME_A, + SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR); + VOID BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W, POBJECTS_AND_NAME_W, + SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR); + VOID BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A, POBJECTS_AND_SID, + GUID*, GUID*, PSID); + VOID BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W, POBJECTS_AND_SID, + GUID*, GUID*, PSID); + VOID BuildTrusteeWithSidA(PTRUSTEE_A, PSID); + VOID BuildTrusteeWithSidW(PTRUSTEE_W, PSID); + DWORD GetAuditedPermissionsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK, + PACCESS_MASK); + DWORD GetAuditedPermissionsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK, + PACCESS_MASK); + DWORD GetEffectiveRightsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK); + DWORD GetEffectiveRightsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK); + DWORD GetExplicitEntriesFromAclA(PACL, PULONG, PEXPLICIT_ACCESS_A*); + DWORD GetExplicitEntriesFromAclW(PACL, PULONG, PEXPLICIT_ACCESS_W*); + static if (_WIN32_WINNT >= 0x501) { + DWORD GetInheritanceSourceA(LPSTR, SE_OBJECT_TYPE, + SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, + PGENERIC_MAPPING, PINHERITED_FROMA); + DWORD GetInheritanceSourceW(LPWSTR, SE_OBJECT_TYPE, + SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, + PGENERIC_MAPPING, PINHERITED_FROMW); + } + DWORD GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + DWORD GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + DWORD GetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + TRUSTEE_FORM GetTrusteeFormA(PTRUSTEE_A); + TRUSTEE_FORM GetTrusteeFormW(PTRUSTEE_W); + LPSTR GetTrusteeNameA(PTRUSTEE_A); + LPWSTR GetTrusteeNameW(PTRUSTEE_W); + TRUSTEE_TYPE GetTrusteeTypeA(PTRUSTEE_A); + TRUSTEE_TYPE GetTrusteeTypeW(PTRUSTEE_W); + DWORD LookupSecurityDescriptorPartsA(PTRUSTEE_A*, PTRUSTEE_A*, PULONG, + PEXPLICIT_ACCESS_A*, PULONG, PEXPLICIT_ACCESS_A*, + PSECURITY_DESCRIPTOR); + DWORD LookupSecurityDescriptorPartsW(PTRUSTEE_W*, PTRUSTEE_W*, PULONG, + PEXPLICIT_ACCESS_W*, PULONG, PEXPLICIT_ACCESS_W*, + PSECURITY_DESCRIPTOR); + DWORD SetEntriesInAclA(ULONG, PEXPLICIT_ACCESS_A, PACL, PACL*); + DWORD SetEntriesInAclW(ULONG, PEXPLICIT_ACCESS_W, PACL, PACL*); + DWORD SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID, PSID, PACL, PACL); + DWORD SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID, PSID, PACL, PACL); + DWORD SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID, + PSID, PACL, PACL); + VOID BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, + PTRUSTEE_A, DWORD, ACCESS_MODE, DWORD); + VOID BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, + PTRUSTEE_W, DWORD, ACCESS_MODE, DWORD); + VOID BuildImpersonateTrusteeA(PTRUSTEE_A, PTRUSTEE_A); + VOID BuildImpersonateTrusteeW(PTRUSTEE_W, PTRUSTEE_W); + PTRUSTEE_A GetMultipleTrusteeA(PTRUSTEE_A); + PTRUSTEE_W GetMultipleTrusteeW(PTRUSTEE_W); + MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationA(PTRUSTEE_A); + MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationW(PTRUSTEE_W); +} + +version (Unicode) { + alias BuildExplicitAccessWithNameW BuildExplicitAccessWithName; + alias BuildSecurityDescriptorW BuildSecurityDescriptor; + alias BuildTrusteeWithNameW BuildTrusteeWithName; + alias BuildTrusteeWithObjectsAndNameW BuildTrusteeWithObjectsAndName; + alias BuildTrusteeWithObjectsAndSidW BuildTrusteeWithObjectsAndSid; + alias BuildTrusteeWithSidW BuildTrusteeWithSid; + alias GetAuditedPermissionsFromAclW GetAuditedPermissionsFromAcl; + alias GetEffectiveRightsFromAclW GetEffectiveRightsFromAcl; + alias GetExplicitEntriesFromAclW GetExplicitEntriesFromAcl; + alias GetNamedSecurityInfoW GetNamedSecurityInfo; + alias GetTrusteeFormW GetTrusteeForm; + alias GetTrusteeNameW GetTrusteeName; + alias GetTrusteeTypeW GetTrusteeType; + alias LookupSecurityDescriptorPartsW LookupSecurityDescriptorParts; + alias SetEntriesInAclW SetEntriesInAcl; + alias SetNamedSecurityInfoW SetNamedSecurityInfo; + alias BuildImpersonateExplicitAccessWithNameW + BuildImpersonateExplicitAccessWithName; + alias BuildImpersonateTrusteeW BuildImpersonateTrustee; + alias GetMultipleTrusteeW GetMultipleTrustee; + alias GetMultipleTrusteeOperationW GetMultipleTrusteeOperation; +} else { + alias BuildExplicitAccessWithNameA BuildExplicitAccessWithName; + alias BuildSecurityDescriptorA BuildSecurityDescriptor; + alias BuildTrusteeWithNameA BuildTrusteeWithName; + alias BuildTrusteeWithObjectsAndNameA BuildTrusteeWithObjectsAndName; + alias BuildTrusteeWithObjectsAndSidA BuildTrusteeWithObjectsAndSid; + alias BuildTrusteeWithSidA BuildTrusteeWithSid; + alias GetAuditedPermissionsFromAclA GetAuditedPermissionsFromAcl; + alias GetEffectiveRightsFromAclA GetEffectiveRightsFromAcl; + alias GetExplicitEntriesFromAclA GetExplicitEntriesFromAcl; + alias GetNamedSecurityInfoA GetNamedSecurityInfo; + alias GetTrusteeFormA GetTrusteeForm; + alias GetTrusteeNameA GetTrusteeName; + alias GetTrusteeTypeA GetTrusteeType; + alias LookupSecurityDescriptorPartsA LookupSecurityDescriptorParts; + alias SetEntriesInAclA SetEntriesInAcl; + alias SetNamedSecurityInfoA SetNamedSecurityInfo; + alias BuildImpersonateExplicitAccessWithNameA + BuildImpersonateExplicitAccessWithName; + alias BuildImpersonateTrusteeA BuildImpersonateTrustee; + alias GetMultipleTrusteeA GetMultipleTrustee; + alias GetMultipleTrusteeOperationA GetMultipleTrusteeOperation; +} diff --git a/src/core/sys/windows/aclui.d b/src/core/sys/windows/aclui.d new file mode 100644 index 0000000000..a8e367782f --- /dev/null +++ b/src/core/sys/windows/aclui.d @@ -0,0 +1,120 @@ +/***********************************************************************\ +* aclui.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.aclui; +pragma(lib, "aclui"); + +private import win32.w32api; + +static assert (_WIN32_WINNT >= 0x500, + "win32.aclui is available only if version Windows2000, WindowsXP, Windows2003 " + "or WindowsVista is set"); + +import win32.accctrl, win32.commctrl, win32.objbase; +private import win32.basetyps, win32.prsht, win32.unknwn, win32.windef, + win32.winuser; + + +struct SI_OBJECT_INFO { + DWORD dwFlags; + HINSTANCE hInstance; + LPWSTR pszServerName; + LPWSTR pszObjectName; + LPWSTR pszPageTitle; + GUID guidObjectType; +} +alias SI_OBJECT_INFO* PSI_OBJECT_INFO; + +// values for SI_OBJECT_INFO.dwFlags +const DWORD + SI_EDIT_PERMS = 0x00000000, + SI_EDIT_OWNER = 0x00000001, + SI_EDIT_AUDITS = 0x00000002, + SI_CONTAINER = 0x00000004, + SI_READONLY = 0x00000008, + SI_ADVANCED = 0x00000010, + SI_RESET = 0x00000020, + SI_OWNER_READONLY = 0x00000040, + SI_EDIT_PROPERTIES = 0x00000080, + SI_OWNER_RECURSE = 0x00000100, + SI_NO_ACL_PROTECT = 0x00000200, + SI_NO_TREE_APPLY = 0x00000400, + SI_PAGE_TITLE = 0x00000800, + SI_SERVER_IS_DC = 0x00001000, + SI_RESET_DACL_TREE = 0x00004000, + SI_RESET_SACL_TREE = 0x00008000, + SI_OBJECT_GUID = 0x00010000, + SI_EDIT_EFFECTIVE = 0x00020000, + SI_RESET_DACL = 0x00040000, + SI_RESET_SACL = 0x00080000, + SI_RESET_OWNER = 0x00100000, + SI_NO_ADDITIONAL_PERMISSION = 0x00200000, + SI_MAY_WRITE = 0x10000000, + SI_EDIT_ALL = SI_EDIT_PERMS | SI_EDIT_OWNER + | SI_EDIT_AUDITS; + +struct SI_ACCESS { + const(GUID)* pguid; + ACCESS_MASK mask; + LPCWSTR pszName; + DWORD dwFlags; +} +alias SI_ACCESS* PSI_ACCESS; + +// values for SI_ACCESS.dwFlags +const DWORD + SI_ACCESS_SPECIFIC = 0x00010000, + SI_ACCESS_GENERAL = 0x00020000, + SI_ACCESS_CONTAINER = 0x00040000, + SI_ACCESS_PROPERTY = 0x00080000; + + +struct SI_INHERIT_TYPE { + const(GUID)* pguid; + ULONG dwFlags; + LPCWSTR pszName; +} +alias SI_INHERIT_TYPE* PSI_INHERIT_TYPE; + +/* values for SI_INHERIT_TYPE.dwFlags + INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE + defined elsewhere */ + +enum SI_PAGE_TYPE { + SI_PAGE_PERM, + SI_PAGE_ADVPERM, + SI_PAGE_AUDIT, + SI_PAGE_OWNER +} + +const uint PSPCB_SI_INITDIALOG = WM_USER + 1; + +interface ISecurityInformation : IUnknown { + HRESULT GetObjectInformation(PSI_OBJECT_INFO); + HRESULT GetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR*, BOOL); + HRESULT SetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + HRESULT GetAccessRights(const(GUID)*, DWORD, PSI_ACCESS*, ULONG*, ULONG*); + HRESULT MapGeneric(const(GUID)*, UCHAR*, ACCESS_MASK*); + HRESULT GetInheritTypes(PSI_INHERIT_TYPE*, ULONG*); + HRESULT PropertySheetPageCallback(HWND, UINT, SI_PAGE_TYPE); +} +alias ISecurityInformation LPSECURITYINFO; + +/* Comment from MinGW + * TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo + */ + +// FIXME: linkage attribute? +extern (C) /+DECLSPEC_IMPORT+/ extern const IID IID_ISecurityInformation; + +extern (Windows) { + HPROPSHEETPAGE CreateSecurityPage(LPSECURITYINFO psi); + BOOL EditSecurity(HWND hwndOwner, LPSECURITYINFO psi); +} diff --git a/src/core/sys/windows/basetsd.d b/src/core/sys/windows/basetsd.d new file mode 100644 index 0000000000..baa6dc5d56 --- /dev/null +++ b/src/core/sys/windows/basetsd.d @@ -0,0 +1,159 @@ +/***********************************************************************\ +* basetsd.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.12 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.basetsd; + +/* This template is used in these modules to declare constant pointer types, + * in order to support both D 1.x and 2.x. + * Since removed - now supporting only D2 + */ +/*template CPtr(T) { + version (D_Version2) { + // must use mixin so that it doesn't cause a syntax error under D1 + mixin("alias const(T)* CPtr;"); + } else { + alias T* CPtr; + } +}*/ + +/* [CyberShadow VP 2011.12.22] typedef is now deprecated in D2. + */ +template TypeDef(T) { + version (D_Version2) { + alias T TypeDef; + } else { + // must use mixin so that it doesn't cause a deprecation error under D2 + mixin("typedef T TypeDef;"); + } +} + +// [SnakE 2009-02-23] Moved HANDLE definition here from winnt.d to avoid +// 'forwatd template reference' to CPtr from winnt.d caused by a circular +// import. + +alias TypeDef!(void*) HANDLE; +/+struct HANDLE { + const(void)* h; + alias h this; +}+/ + +package template DECLARE_HANDLE(string name, base = HANDLE) { + mixin ("alias " ~ base.stringof ~ " " ~ name ~ ";"); +} +alias HANDLE* PHANDLE, LPHANDLE; + +version (Win64) { + alias long __int3264; + const ulong ADDRESS_TAG_BIT = 0x40000000000; + + alias long INT_PTR, LONG_PTR; + alias long* PINT_PTR, PLONG_PTR; + alias ulong UINT_PTR, ULONG_PTR, HANDLE_PTR; + alias ulong* PUINT_PTR, PULONG_PTR; + alias int HALF_PTR; + alias int* PHALF_PTR; + alias uint UHALF_PTR; + alias uint* PUHALF_PTR; + + uint HandleToULong(void* h) { return(cast(uint) cast(ULONG_PTR) h); } + int HandleToLong(void* h) { return(cast(int) cast(LONG_PTR) h); } + void* ULongToHandle(uint h) { return(cast(void*) cast(UINT_PTR) h); } + void* LongToHandle(int h) { return(cast(void*) cast(INT_PTR) h); } + uint PtrToUlong(void* p) { return(cast(uint) cast(ULONG_PTR) p); } + uint PtrToUint(void* p) { return(cast(uint) cast(UINT_PTR) p); } + ushort PtrToUshort(void* p) { return(cast(ushort) cast(uint) cast(ULONG_PTR) p); } + int PtrToLong(void* p) { return(cast(int) cast(LONG_PTR) p); } + int PtrToInt(void* p) { return(cast(int) cast(INT_PTR) p); } + short PtrToShort(void* p) { return(cast(short) cast(int) cast(LONG_PTR) p); } + void* IntToPtr(int i) { return(cast(void*) cast(INT_PTR) i); } + void* UIntToPtr(uint ui) { return(cast(void*) cast(UINT_PTR) ui); } + void* LongToPtr(int l) { return(cast(void*) cast(LONG_PTR) l); } + void* ULongToPtr(uint ul) { return(cast(void*) cast(ULONG_PTR) ul); } + +} else { + alias int __int3264; + const uint ADDRESS_TAG_BIT = 0x80000000; + + alias int INT_PTR, LONG_PTR; + alias int* PINT_PTR, PLONG_PTR; + alias uint UINT_PTR, ULONG_PTR, HANDLE_PTR; + alias uint* PUINT_PTR, PULONG_PTR; + alias short HALF_PTR; + alias short* PHALF_PTR; + alias ushort UHALF_PTR; + alias ushort* PUHALF_PTR; + + uint HandleToUlong(HANDLE h) { return cast(uint) h; } + int HandleToLong(HANDLE h) { return cast(int) h; } + HANDLE LongToHandle(LONG_PTR h) { return cast(HANDLE)h; } + uint PtrToUlong(const(void)* p) { return cast(uint) p; } + uint PtrToUint(const(void)* p) { return cast(uint) p; } + int PtrToInt(const(void)* p) { return cast(int) p; } + ushort PtrToUshort(const(void)* p) { return cast(ushort) p; } + short PtrToShort(const(void)* p) { return cast(short) p; } + void* IntToPtr(int i) { return cast(void*) i; } + void* UIntToPtr(uint ui) { return cast(void*) ui; } + alias IntToPtr LongToPtr; + alias UIntToPtr ULongToPtr; +} + +alias UIntToPtr UintToPtr, UlongToPtr; + +enum : UINT_PTR { + MAXUINT_PTR = UINT_PTR.max +} + +enum : INT_PTR { + MAXINT_PTR = INT_PTR.max, + MININT_PTR = INT_PTR.min +} + +enum : ULONG_PTR { + MAXULONG_PTR = ULONG_PTR.max +} + +enum : LONG_PTR { + MAXLONG_PTR = LONG_PTR.max, + MINLONG_PTR = LONG_PTR.min +} + +enum : UHALF_PTR { + MAXUHALF_PTR = UHALF_PTR.max +} + +enum : HALF_PTR { + MAXHALF_PTR = HALF_PTR.max, + MINHALF_PTR = HALF_PTR.min +} + +alias byte INT8; +alias byte* PINT8; +alias ubyte UINT8; +alias ubyte* PUINT8; + +alias short INT16; +alias short* PINT16; +alias ushort UINT16; +alias ushort* PUINT16; + +alias int LONG32, INT32; +alias int* PLONG32, PINT32; +alias uint ULONG32, DWORD32, UINT32; +alias uint* PULONG32, PDWORD32, PUINT32; + +alias ULONG_PTR SIZE_T, DWORD_PTR; +alias ULONG_PTR* PSIZE_T, PDWORD_PTR; +alias LONG_PTR SSIZE_T; +alias LONG_PTR* PSSIZE_T; + +alias long LONG64, INT64; +alias long* PLONG64, PINT64; +alias ulong ULONG64, DWORD64, UINT64; +alias ulong* PULONG64, PDWORD64, PUINT64; diff --git a/src/core/sys/windows/basetyps.d b/src/core/sys/windows/basetyps.d new file mode 100644 index 0000000000..d6b318f835 --- /dev/null +++ b/src/core/sys/windows/basetyps.d @@ -0,0 +1,24 @@ +/***********************************************************************\ +* basetyps.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.basetyps; + +private import win32.windef, win32.basetsd; + +align(1) struct GUID { // size is 16 + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE[8] Data4; +} +alias GUID UUID, IID, CLSID, FMTID, uuid_t; +alias GUID* LPGUID, LPCLSID, LPIID; +alias const(GUID)* REFGUID, REFIID, REFCLSID, REFFMTID; + +alias uint error_status_t, PROPID; diff --git a/src/core/sys/windows/cderr.d b/src/core/sys/windows/cderr.d new file mode 100644 index 0000000000..9ac54206e7 --- /dev/null +++ b/src/core/sys/windows/cderr.d @@ -0,0 +1,50 @@ +/***********************************************************************\ +* cderr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.cderr; + +enum { + CDERR_DIALOGFAILURE = 0xFFFF, + CDERR_GENERALCODES = 0x0000, + CDERR_STRUCTSIZE, + CDERR_INITIALIZATION, + CDERR_NOTEMPLATE, + CDERR_NOHINSTANCE, + CDERR_LOADSTRFAILURE, + CDERR_FINDRESFAILURE, + CDERR_LOADRESFAILURE, + CDERR_LOCKRESFAILURE, + CDERR_MEMALLOCFAILURE, + CDERR_MEMLOCKFAILURE, + CDERR_NOHOOK, + CDERR_REGISTERMSGFAIL, + PDERR_PRINTERCODES = 0x1000, + PDERR_SETUPFAILURE, + PDERR_PARSEFAILURE, + PDERR_RETDEFFAILURE, + PDERR_LOADDRVFAILURE, + PDERR_GETDEVMODEFAIL, + PDERR_INITFAILURE, + PDERR_NODEVICES, + PDERR_NODEFAULTPRN, + PDERR_DNDMMISMATCH, + PDERR_CREATEICFAILURE, + PDERR_PRINTERNOTFOUND, + PDERR_DEFAULTDIFFERENT, + CFERR_CHOOSEFONTCODES = 0x2000, + CFERR_NOFONTS, + CFERR_MAXLESSTHANMIN, + FNERR_FILENAMECODES = 0x3000, + FNERR_SUBCLASSFAILURE, + FNERR_INVALIDFILENAME, + FNERR_BUFFERTOOSMALL, + FRERR_FINDREPLACECODES = 0x4000, + FRERR_BUFFERLENGTHZERO, + CCERR_CHOOSECOLORCODES = 0x5000 +} diff --git a/src/core/sys/windows/cguid.d b/src/core/sys/windows/cguid.d new file mode 100644 index 0000000000..1675cc6550 --- /dev/null +++ b/src/core/sys/windows/cguid.d @@ -0,0 +1,13 @@ +/***********************************************************************\ +* cguid.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.cguid; + +private import win32.basetyps; + diff --git a/src/core/sys/windows/comcat.d b/src/core/sys/windows/comcat.d new file mode 100644 index 0000000000..89639bdb0f --- /dev/null +++ b/src/core/sys/windows/comcat.d @@ -0,0 +1,73 @@ +/***********************************************************************\ +* comcat.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.comcat; + +import win32.windows, win32.ole2; +private import win32.basetyps, win32.cguid, win32.objbase, win32.unknwn, + win32.windef, win32.wtypes; + +alias IEnumGUID LPENUMGUID; + +interface IEnumGUID : IUnknown { + HRESULT Next(ULONG, GUID*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMGUID*); +} + +alias GUID CATID; +alias REFGUID REFCATID; +alias GUID_NULL CATID_NULL; +alias IsEqualGUID IsEqualCATID; + +struct CATEGORYINFO { + CATID catid; + LCID lcid; + OLECHAR[128] szDescription; +} +alias CATEGORYINFO* LPCATEGORYINFO; + +alias IEnumGUID IEnumCATID; +alias LPENUMGUID LPENUMCATID; +alias IID_IEnumGUID IID_IEnumCATID; + +alias IEnumGUID IEnumCLSID; +alias LPENUMGUID LPENUMCLSID; +alias IID_IEnumGUID IID_IEnumCLSID; + +interface ICatInformation : IUnknown { + HRESULT EnumCategories(LCID, LPENUMCATEGORYINFO*); + HRESULT GetCategoryDesc(REFCATID, LCID, PWCHAR*); + HRESULT EnumClassesOfCategories(ULONG, CATID*, ULONG, CATID*, + LPENUMCLSID*); + HRESULT IsClassOfCategories(REFCLSID, ULONG, CATID*, ULONG, CATID*); + HRESULT EnumImplCategoriesOfClass(REFCLSID, LPENUMCATID*); + HRESULT EnumReqCategoriesOfClass(REFCLSID, LPENUMCATID*); +} +alias ICatInformation LPCATINFORMATION; + +interface ICatRegister : IUnknown { + HRESULT RegisterCategories(ULONG, CATEGORYINFO*); + HRESULT UnRegisterCategories(ULONG, CATID*); + HRESULT RegisterClassImplCategories(REFCLSID, ULONG, CATID*); + HRESULT UnRegisterClassImplCategories(REFCLSID, ULONG, CATID*); + HRESULT RegisterClassReqCategories(REFCLSID, ULONG, CATID*); + HRESULT UnRegisterClassReqCategories(REFCLSID, ULONG, CATID*); +} +alias ICatRegister LPCATREGISTER; + +interface IEnumCATEGORYINFO : IUnknown { + HRESULT Next(ULONG, CATEGORYINFO*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCATEGORYINFO*); +} +alias IEnumCATEGORYINFO LPENUMCATEGORYINFO; diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d new file mode 100644 index 0000000000..53c1e4e02c --- /dev/null +++ b/src/core/sys/windows/commctrl.d @@ -0,0 +1,6283 @@ +/***********************************************************************\ +* commctrl.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.12 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.commctrl; +pragma(lib, "comctl32"); + +private import win32.w32api, win32.windef, win32.winuser; +private import win32.winbase; // for SYSTEMTIME +private import win32.objfwd; // for LPSTREAM + +import win32.prsht; + +const COMCTL32_VERSION = 6; + +const TCHAR[] + DRAGLISTMSGSTRING = "commctrl_DragListMsg", + HOTKEY_CLASS = "msctls_hotkey32", + PROGRESS_CLASS = "msctls_progress32", + STATUSCLASSNAME = "msctls_statusbar32", + TOOLBARCLASSNAME = "ToolbarWindow32", + TOOLTIPS_CLASS = "tooltips_class32", + TRACKBAR_CLASS = "msctls_trackbar32", + UPDOWN_CLASS = "msctls_updown32", + ANIMATE_CLASS = "SysAnimate32", + DATETIMEPICK_CLASS = "SysDateTimePick32", + MONTHCAL_CLASS = "SysMonthCal32", + REBARCLASSNAME = "ReBarWindow32", + WC_COMBOBOXEX = "ComboBoxEx32", + WC_IPADDRESS = "SysIPAddress32", + WC_LISTVIEW = "SysListView32", + WC_TABCONTROL = "SysTabControl32", + WC_TREEVIEW = "SysTreeView32", + WC_HEADER = "SysHeader32", + WC_PAGESCROLLER = "SysPager", + WC_NATIVEFONTCTL = "NativeFontCtl", + WC_BUTTON = "Button", + WC_STATIC = "Static", + WC_EDIT = "Edit", + WC_LISTBOX = "ListBox", + WC_COMBOBOX = "ComboBox", + WC_SCROLLBAR = "ScrollBar", + WC_LINKA = "SysLink"; + +enum { + LVM_FIRST = 0x1000, + TV_FIRST = 0x1100, + HDM_FIRST = 0x1200 +} + +enum { + ACM_OPENA = WM_USER + 100, + ACM_PLAY = WM_USER + 101, + ACM_STOP = WM_USER + 102, + ACM_OPENW = WM_USER + 103, + ACM_ISPLAYING = WM_USER + 104 +} + +enum { + ACN_START = 1, + ACN_STOP +} + +enum { + CBEIF_TEXT = 0x00000001, + CBEIF_IMAGE = 0x00000002, + CBEIF_SELECTEDIMAGE = 0x00000004, + CBEIF_OVERLAY = 0x00000008, + CBEIF_INDENT = 0x00000010, + CBEIF_LPARAM = 0x00000020, + CBEIF_DI_SETITEM = 0x10000000 +} + +enum { + RBN_FIRST = -831U, + RBN_LAST = -859U, + MCN_FIRST = -750U, + MCN_LAST = -759U, + DTN_FIRST = -760U, + DTN_LAST = -799U, + CBEN_FIRST = -800U, + CBEN_LAST = -830U +} + +enum { + CBEN_INSERTITEM = CBEN_FIRST - 1, + CBEN_DELETEITEM = CBEN_FIRST - 2, + CBEN_BEGINEDIT = CBEN_FIRST - 4, + CBEN_ENDEDITA = CBEN_FIRST - 5, + CBEN_ENDEDITW = CBEN_FIRST - 6 +} + +enum { + CBENF_KILLFOCUS = 1, + CBENF_RETURN, + CBENF_ESCAPE, + CBENF_DROPDOWN // = 4 +} + +const CBEMAXSTRLEN = 260; + +enum { + DL_BEGINDRAG = 1157, + DL_CANCELDRAG = 1160, + DL_DRAGGING = 1158, + DL_DROPPED = 1159, + DL_CURSORSET = 0, + DL_STOPCURSOR = 1, + DL_COPYCURSOR = 2, + DL_MOVECURSOR = 3 +} + +enum { + CCS_TOP = 1, + CCS_NOMOVEY = 2, + CCS_BOTTOM = 3, + CCS_NORESIZE = 4, + CCS_NOPARENTALIGN = 8, + CCS_ADJUSTABLE = 32, + CCS_NODIVIDER = 64 +} +static if (_WIN32_IE >= 0x300) { + enum { + CCS_VERT = 128, + CCS_LEFT = 129, + CCS_NOMOVEX = 130, + CCS_RIGHT = 131 + } +} + +enum { + ACS_CENTER = 0x0001, + ACS_TRANSPARENT = 0x0002, + ACS_AUTOPLAY = 0x0004, + ACS_TIMER = 0x0008 +} + +enum { + PGS_VERT = 0x00000000, + PGS_HORZ = 0x00000001, + PGS_AUTOSCROLL = 0x00000002, + PGS_DRAGNDROP = 0x00000004 +} + +const CMB_MASKED = 2; + +const MINSYSCOMMAND = SC_SIZE; + +enum { + SBT_OWNERDRAW = 0x1000, + SBT_NOBORDERS = 256, + SBT_POPOUT = 512, + SBT_RTLREADING = 1024 +} + +enum { + SB_SETTEXTA = WM_USER + 1, + SB_SETTEXTW = WM_USER + 11, + SB_GETTEXTA = WM_USER + 2, + SB_GETTEXTW = WM_USER + 13, + SB_GETTEXTLENGTHA = WM_USER + 3, + SB_GETTEXTLENGTHW = WM_USER + 12, + SB_SETPARTS = WM_USER + 4, + SB_GETPARTS = WM_USER + 6, + SB_GETBORDERS = WM_USER + 7, + SB_SETMINHEIGHT = WM_USER + 8, + SB_SIMPLE = WM_USER + 9, + SB_GETRECT = WM_USER + 10 +} + +enum { + MSGF_COMMCTRL_BEGINDRAG = 0x4200, + MSGF_COMMCTRL_SIZEHEADER = 0x4201, + MSGF_COMMCTRL_DRAGSELECT = 0x4202, + MSGF_COMMCTRL_TOOLBARCUST = 0x4203 +} + +enum { + ILC_COLOR = 0, + ILC_COLOR4 = 4, + ILC_COLOR8 = 8, + ILC_COLOR16 = 16, + ILC_COLOR24 = 24, + ILC_COLOR32 = 32, + ILC_COLORDDB = 254, + ILC_MASK = 1, + ILC_PALETTE = 2048 +} + +enum { + ILCF_MOVE, + ILCF_SWAP +} + +enum { + ILS_NORMAL = 0, + ILS_GLOW = 1, + ILS_SHADOW = 2, + ILS_SATURATE = 4, + ILS_ALPHA = 8, + ILD_BLEND25 = 2, + ILD_BLEND50 = 4, + ILD_SELECTED = 4, + ILD_BLEND = 4, + ILD_FOCUS = 2, + ILD_MASK = 16, + ILD_NORMAL = 0, + ILD_TRANSPARENT = 1, + ILD_IMAGE = 0x0020, + ILD_ROP = 0x0040, + ILD_OVERLAYMASK = 0x0F00, + ILD_PRESERVEALPHA = 0x1000, + ILD_SCALE = 0x2000, + ILD_DPISCALE = 0x4000 +} + +enum { + HDS_HORZ = 0, + HDS_BUTTONS = 2, + HDS_HIDDEN = 8 +} +static if (_WIN32_IE >= 0x400) { + enum { + HDS_HOTTRACK = 4, + HDS_DRAGDROP = 0x0040, + HDS_FULLDRAG = 0x0080 + } +} +static if (_WIN32_IE >= 0x500) { + enum { + HDS_FILTERBAR = 0x0100 + } +} + +enum { + NM_FIRST = 0, + NM_LAST = -99U, + LVN_FIRST = -100U, + LVN_LAST = -199U, + HDN_FIRST = -300U, + HDN_LAST = -399U, + TVN_FIRST = -400U, + TVN_LAST = -499U, + TTN_FIRST = -520U, + TTN_LAST = -549U, + TCN_FIRST = -550U, + TCN_LAST = -580U, + CDN_FIRST = -601U, /* also in commdlg.h */ + CDN_LAST = -699U, + TBN_FIRST = -700U, + TBN_LAST = -720U, + UDN_FIRST = -721U, + UDN_LAST = -740U +} +/*static if (_WIN32_IE >= 0x300) { + enum { + RBN_FIRST = -831U, + RBN_LAST = -859U, + MCN_FIRST = -750U, + MCN_LAST = -759U, + DTN_FIRST = -760U, + DTN_LAST = -799U, + CBEN_FIRST = -800U, + CBEN_LAST = -830U + } +}*/ +static if (_WIN32_IE >= 0x400) { + enum { + IPN_FIRST = -860U, + IPN_LAST = -879U, + IPN_FIELDCHANGED = IPN_FIRST, + SBN_FIRST = -880U, + SBN_LAST = -899U, + PGN_FIRST = -900U, + PGN_LAST = -950U, + PGN_SCROLL = PGN_FIRST-1, + PGN_CALCSIZE = PGN_FIRST-2 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + WMN_FIRST = -1000U, + WMN_LAST = -1200U, + } +} + +static if (_WIN32_WINNT >= 0x501) +{ + enum { + BCN_FIRST = -1250U, + BCN_LAST = -1350U, + } +} + +static if (_WIN32_WINNT >= 0x600) +{ + enum { + TRBN_FIRST = -1501U, + TRBN_LAST = -1519U, + } +} + +enum { + HDI_WIDTH = 1, + HDI_HEIGHT = 1, + HDI_TEXT = 2, + HDI_FORMAT = 4, + HDI_LPARAM = 8, + HDI_BITMAP = 16 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDI_IMAGE = 32, + HDI_DI_SETITEM = 64, + HDI_ORDER = 128 + } +} +static if (_WIN32_IE >= 0x500) { + enum { + HDI_FILTER = 256 + } +} + +enum { + CBES_EX_NOEDITIMAGE = 0x00000001, + CBES_EX_NOEDITIMAGEINDENT = 0x00000002, + CBES_EX_PATHWORDBREAKPROC = 0x00000004 +} +static if (_WIN32_IE >= 0x400) { + enum { + CBES_EX_NOSIZELIMIT = 0x00000008, + CBES_EX_CASESENSITIVE = 0x00000010, + CBEN_GETDISPINFOA = CBEN_FIRST - 0, + CBEN_GETDISPINFOW = CBEN_FIRST - 7, + CBEN_DRAGBEGINA = CBEN_FIRST - 8, + CBEN_DRAGBEGINW = CBEN_FIRST - 9 + } +} + +enum { + HDF_LEFT, + HDF_RIGHT, + HDF_CENTER, + HDF_JUSTIFYMASK, + HDF_RTLREADING, // = 4 + HDF_OWNERDRAW = 0x8000, + HDF_STRING = 0x4000, + HDF_BITMAP = 0x2000 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDF_BITMAP_ON_RIGHT = 0x1000, + HDF_IMAGE = 0x0800 + } +} + +enum { + CCM_FIRST = 0x2000, + CCM_LAST = CCM_FIRST + 0x200, + CCM_SETBKCOLOR = 8193, + CCM_SETCOLORSCHEME = 8194, + CCM_GETCOLORSCHEME = 8195, + CCM_GETDROPTARGET = 8196, + CCM_SETUNICODEFORMAT = 8197, + CCM_GETUNICODEFORMAT = 8198, + CCM_SETVERSION = 0x2007, + CCM_GETVERSION = 0x2008, + CCM_SETNOTIFYWINDOW = 0x2009 +} + +enum { + HDM_GETITEMCOUNT = HDM_FIRST, + HDM_INSERTITEMA = HDM_FIRST + 1, + HDM_INSERTITEMW = HDM_FIRST + 10, + HDM_DELETEITEM = HDM_FIRST + 2, + HDM_GETITEMA = HDM_FIRST + 3, + HDM_GETITEMW = HDM_FIRST + 11, + HDM_SETITEMA = HDM_FIRST + 4, + HDM_SETITEMW = HDM_FIRST + 12, + HDM_LAYOUT = HDM_FIRST + 5 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDM_GETITEMRECT = HDM_FIRST + 7, + HDM_SETIMAGELIST = HDM_FIRST + 8, + HDM_GETIMAGELIST = HDM_FIRST + 9, + HDM_ORDERTOINDEX = HDM_FIRST + 15, + HDM_CREATEDRAGIMAGE = HDM_FIRST + 16, + HDM_GETORDERARRAY = HDM_FIRST + 17, + HDM_SETORDERARRAY = HDM_FIRST + 18, + HDM_SETHOTDIVIDER = HDM_FIRST + 19 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT + } +} +static if (_WIN32_IE >= 0x500) { + enum { + HDM_SETBITMAPMARGIN = HDM_FIRST + 20, + HDM_GETBITMAPMARGIN = HDM_FIRST + 21, + HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST + 22, + HDM_EDITFILTER = HDM_FIRST + 23, + HDM_CLEARFILTER = HDM_FIRST + 24, + } +} +static if (_WIN32_IE >= 0x600) { + enum { + HDM_GETITEMDROPDOWNRECT = HDM_FIRST + 25, + HDM_GETOVERFLOWRECT = HDM_FIRST + 26, + HDM_GETFOCUSEDITEM = HDM_FIRST + 27, + HDM_SETFOCUSEDITEM = HDM_FIRST + 28, + } +} + +enum { + HHT_NOWHERE = 1, + HHT_ONHEADER = 2, + HHT_ONDIVIDER = 4, + HHT_ONDIVOPEN = 8, + HHT_ABOVE = 256, + HHT_BELOW = 512, + HHT_TORIGHT = 1024, + HHT_TOLEFT = 2048 +} + +enum { + HDM_HITTEST = HDM_FIRST + 6 +} + +enum { + HDN_ITEMCHANGINGA = HDN_FIRST -0, + HDN_ITEMCHANGINGW = HDN_FIRST -20, + HDN_ITEMCHANGEDA = HDN_FIRST -1, + HDN_ITEMCHANGEDW = HDN_FIRST -21, + HDN_ITEMCLICKA = HDN_FIRST -2, + HDN_ITEMCLICKW = HDN_FIRST -22, + HDN_ITEMDBLCLICKA = HDN_FIRST -3, + HDN_ITEMDBLCLICKW = HDN_FIRST -23, + HDN_DIVIDERDBLCLICKA = HDN_FIRST -5, + HDN_DIVIDERDBLCLICKW = HDN_FIRST -25, + HDN_BEGINTRACKA = HDN_FIRST -6, + HDN_BEGINTRACKW = HDN_FIRST -26, + HDN_ENDTRACKA = HDN_FIRST -7, + HDN_ENDTRACKW = HDN_FIRST -27, + HDN_TRACKA = HDN_FIRST -8, + HDN_TRACKW = HDN_FIRST -28 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDN_ENDDRAG = (HDN_FIRST-11), + HDN_BEGINDRAG = (HDN_FIRST-10), + HDN_GETDISPINFOA = (HDN_FIRST-9), + HDN_GETDISPINFOW = (HDN_FIRST-29) + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + HICF_OTHER = 0x00, + HICF_MOUSE = 0x01, + HICF_ARROWKEYS = 0x02, + HICF_ACCELERATOR = 0x04, + HICF_DUPACCEL = 0x08, + HICF_ENTERING = 0x10, + HICF_LEAVING = 0x20, + HICF_RESELECT = 0x40, + HICF_LMOUSE = 0x80, + HICF_TOGGLEDROPDOWN = 0x100 + } +} + +enum { + IPM_CLEARADDRESS = WM_USER + 100, + IPM_SETADDRESS = WM_USER + 101, + IPM_GETADDRESS = WM_USER + 102, + IPM_SETRANGE = WM_USER + 103, + IPM_SETFOCUS = WM_USER + 104, + IPM_ISBLANK = WM_USER + 105 +} + +static if (_WIN32_IE >= 0x500) { + enum { + I_INDENTCALLBACK = -1, + I_IMAGENONE = -2 + } +} + +enum { + TBSTATE_CHECKED = 1, + TBSTATE_PRESSED = 2, + TBSTATE_ENABLED = 4, + TBSTATE_HIDDEN = 8, + TBSTATE_INDETERMINATE = 16, + TBSTATE_WRAP = 32 +} +static if (_WIN32_IE >= 0x300) { + enum { + TBSTATE_ELLIPSES = 0x40 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBSTATE_MARKED = 0x0080 + } +} + +enum { + TBSTYLE_BUTTON = 0, + TBSTYLE_SEP = 1, + TBSTYLE_CHECK = 2, + TBSTYLE_GROUP = 4, + TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK +} +static if (_WIN32_IE >= 0x300) { + enum { + TBSTYLE_DROPDOWN = 8 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBSTYLE_AUTOSIZE = 16, + TBSTYLE_NOPREFIX = 32 + } +} +enum { + TBSTYLE_TOOLTIPS = 256, + TBSTYLE_WRAPABLE = 512, + TBSTYLE_ALTDRAG = 1024 +} +static if (_WIN32_IE >= 0x300) { + enum { + TBSTYLE_FLAT = 2048, + TBSTYLE_LIST = 4096, + TBSTYLE_CUSTOMERASE = 8192 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBSTYLE_REGISTERDROP = 0x4000, + TBSTYLE_TRANSPARENT = 0x8000, + TBSTYLE_EX_DRAWDDARROWS = 0x00000001 + } +} +static if (_WIN32_IE >= 0x501) { + enum { + TBSTYLE_EX_MIXEDBUTTONS = 8, + TBSTYLE_EX_HIDECLIPPEDBUTTONS = 16 + } +} +static if (_WIN32_WINNT >= 0x501) { + enum { + TBSTYLE_EX_DOUBLEBUFFER = 0x80 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + BTNS_BUTTON = TBSTYLE_BUTTON, + BTNS_SEP = TBSTYLE_SEP, + BTNS_CHECK = TBSTYLE_CHECK, + BTNS_GROUP = TBSTYLE_GROUP, + BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP, + BTNS_DROPDOWN = TBSTYLE_DROPDOWN, + BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE, + BTNS_NOPREFIX = TBSTYLE_NOPREFIX, + BTNS_WHOLEDROPDOWN = 0x0080 + } +} +static if (_WIN32_IE >= 0x501) { + enum { + BTNS_SHOWTEXT = 0x0040 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TBCDRF_NOEDGES = 0x10000, + TBCDRF_HILITEHOTTRACK = 0x20000, + TBCDRF_NOOFFSET = 0x40000, + TBCDRF_NOMARK = 0x80000, + TBCDRF_NOETCHEDEFFECT = 0x100000 + } +} + +const HINST_COMMCTRL = cast(HINSTANCE) (-1); + +enum { + IDB_STD_SMALL_COLOR, + IDB_STD_LARGE_COLOR, + IDB_VIEW_SMALL_COLOR = 4, + IDB_VIEW_LARGE_COLOR = 5 +} +static if (_WIN32_IE >= 0x300) { + enum { + IDB_HIST_SMALL_COLOR = 8, + IDB_HIST_LARGE_COLOR = 9 + } +} + +enum { + STD_CUT, + STD_COPY, + STD_PASTE, + STD_UNDO, + STD_REDOW, + STD_DELETE, + STD_FILENEW, + STD_FILEOPEN, + STD_FILESAVE, + STD_PRINTPRE, + STD_PROPERTIES, + STD_HELP, + STD_FIND, + STD_REPLACE, + STD_PRINT // = 14 +} + +enum { + VIEW_LARGEICONS, + VIEW_SMALLICONS, + VIEW_LIST, + VIEW_DETAILS, + VIEW_SORTNAME, + VIEW_SORTSIZE, + VIEW_SORTDATE, + VIEW_SORTTYPE, + VIEW_PARENTFOLDER, + VIEW_NETCONNECT, + VIEW_NETDISCONNECT, + VIEW_NEWFOLDER // = 11 +} + +enum { + TB_ENABLEBUTTON = WM_USER + 1, + TB_CHECKBUTTON, + TB_PRESSBUTTON, + TB_HIDEBUTTON, + TB_INDETERMINATE, // = WM_USER + 5, + TB_ISBUTTONENABLED = WM_USER + 9, + TB_ISBUTTONCHECKED, + TB_ISBUTTONPRESSED, + TB_ISBUTTONHIDDEN, + TB_ISBUTTONINDETERMINATE, // = WM_USER + 13, + TB_SETSTATE = WM_USER + 17, + TB_GETSTATE = WM_USER + 18, + TB_ADDBITMAP = WM_USER + 19, + TB_DELETEBUTTON = WM_USER + 22, + TB_GETBUTTON, + TB_BUTTONCOUNT, + TB_COMMANDTOINDEX, + TB_SAVERESTOREA, + TB_CUSTOMIZE, + TB_ADDSTRINGA, + TB_GETITEMRECT, + TB_BUTTONSTRUCTSIZE, + TB_SETBUTTONSIZE, + TB_SETBITMAPSIZE, + TB_AUTOSIZE, // = WM_USER + 33, + TB_GETTOOLTIPS = WM_USER + 35, + TB_SETTOOLTIPS = WM_USER + 36, + TB_SETPARENT = WM_USER + 37, + TB_SETROWS = WM_USER + 39, + TB_GETROWS, + TB_GETBITMAPFLAGS, + TB_SETCMDID, + TB_CHANGEBITMAP, + TB_GETBITMAP, + TB_GETBUTTONTEXTA, + TB_REPLACEBITMAP, // = WM_USER + 46, + TB_GETBUTTONSIZE = WM_USER + 58, + TB_SETBUTTONWIDTH = WM_USER + 59, + TB_GETBUTTONTEXTW = WM_USER + 75, + TB_SAVERESTOREW = WM_USER + 76, + TB_ADDSTRINGW = WM_USER + 77, +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_MARKBUTTON = WM_USER + 6 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_ISBUTTONHIGHLIGHTED = WM_USER + 14 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_ADDBUTTONSA = WM_USER + 20, + TB_INSERTBUTTONA = WM_USER + 21 + } +} else { + enum { + TB_ADDBUTTONS = WM_USER + 20, + TB_INSERTBUTTON = WM_USER + 21 + } +} +static if (_WIN32_IE >= 0x300) { + enum { + TB_SETINDENT = WM_USER + 47, + TB_SETIMAGELIST, + TB_GETIMAGELIST, + TB_LOADIMAGES, + TB_GETRECT, + TB_SETHOTIMAGELIST, + TB_GETHOTIMAGELIST, + TB_SETDISABLEDIMAGELIST, + TB_GETDISABLEDIMAGELIST, + TB_SETSTYLE, + TB_GETSTYLE, + //TB_GETBUTTONSIZE, + //TB_SETBUTTONWIDTH, + TB_SETMAXTEXTROWS, + TB_GETTEXTROWS // = WM_USER + 61 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_GETOBJECT = WM_USER + 62, + TB_GETBUTTONINFOW, + TB_SETBUTTONINFOW, + TB_GETBUTTONINFOA, + TB_SETBUTTONINFOA, + TB_INSERTBUTTONW, + TB_ADDBUTTONSW, + TB_HITTEST, // = WM_USER + 69 + TB_SETEXTENDEDSTYLE = WM_USER + 84, + TB_GETEXTENDEDSTYLE = WM_USER + 85, + TB_SETDRAWTEXTFLAGS = WM_USER + 70, + TB_GETHOTITEM, + TB_SETHOTITEM, + TB_SETANCHORHIGHLIGHT, + TB_GETANCHORHIGHLIGHT, // = WM_USER + 74 + TB_MAPACCELERATORA = WM_USER + 78, + TB_GETINSERTMARK, + TB_SETINSERTMARK, + TB_INSERTMARKHITTEST, + TB_MOVEBUTTON, + TB_GETMAXSIZE, + //TB_SETEXTENDEDSTYLE, + //TB_GETEXTENDEDSTYLE, + TB_GETPADDING, + TB_SETPADDING, + TB_SETINSERTMARKCOLOR, + TB_GETINSERTMARKCOLOR, + TB_MAPACCELERATORW, + TB_GETSTRINGW, + TB_GETSTRINGA, // = WM_USER + 92 + TB_SETHOTITEM2 = WM_USER + 94, + TB_SETLISTGAP = WM_USER + 96, + TB_GETIMAGELISTCOUNT = WM_USER + 98, + TB_GETIDEALSIZE = WM_USER + 99, + //TB_TRANSLATEACCELERATOR = CCM_TRANSLATEACCELERATOR, + TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, + TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME, + TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + TB_GETMETRICS = WM_USER + 101, + TB_SETMETRICS = WM_USER + 102, + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + TB_GETITEMDROPDOWNRECT = WM_USER + 103, + TB_SETPRESSEDIMAGELIST = WM_USER + 104, + TB_GETPRESSEDIMAGELIST = WM_USER + 105, + } +} + +const TBBF_LARGE = 1; + +enum { + TBN_GETBUTTONINFOA = TBN_FIRST -0, + TBN_BEGINDRAG = TBN_FIRST -1, + TBN_ENDDRAG = TBN_FIRST -2, + TBN_BEGINADJUST = TBN_FIRST -3, + TBN_ENDADJUST = TBN_FIRST -4, + TBN_RESET = TBN_FIRST -5, + TBN_QUERYINSERT = TBN_FIRST -6, + TBN_QUERYDELETE = TBN_FIRST -7, + TBN_TOOLBARCHANGE = TBN_FIRST -8, + TBN_CUSTHELP = TBN_FIRST -9 +} +static if (_WIN32_IE >= 0x300) { + enum { + TBN_DROPDOWN = TBN_FIRST - 10 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBN_HOTITEMCHANGE = TBN_FIRST - 13, + TBN_DRAGOUT = TBN_FIRST - 14, + TBN_DELETINGBUTTON = TBN_FIRST - 15, + TBN_GETDISPINFOA = TBN_FIRST - 16, + TBN_GETDISPINFOW = TBN_FIRST - 17, + TBN_GETINFOTIPA = TBN_FIRST - 18, + TBN_GETINFOTIPW = TBN_FIRST - 19, + TBN_GETBUTTONINFOW = TBN_FIRST - 20 + } +} +static if (_WIN32_IE >= 0x500) { + enum { + TBN_RESTORE = TBN_FIRST - 21, + TBN_SAVE = TBN_FIRST - 22, + TBN_INITCUSTOMIZE = TBN_FIRST - 23 + } + + enum { + TBNRF_HIDEHELP = 1, + TBNRF_ENDCUSTOMIZE + } + + enum { + TBNF_IMAGE = 1, + TBNF_TEXT = 2, + TBNF_DI_SETITEM = 0x10000000 + } +} + +enum { + TTS_ALWAYSTIP = 1, + TTS_NOPREFIX +} +static if(_WIN32_IE >= 0x500) { + enum { + TTS_NOANIMATE = 0x10, + TTS_NOFADE = 0x20, + TTS_BALLOON = 0x40, + TTS_CLOSE = 0x80 + } +} + +enum { + TTF_IDISHWND = 1, + TTF_CENTERTIP = 2, + TTF_RTLREADING = 4, + TTF_SUBCLASS = 16 +} +static if (_WIN32_IE >= 0x300) { + enum { + TTF_TRACK = 0x0020, + TTF_ABSOLUTE = 0x0080, + TTF_TRANSPARENT = 0x0100, + TTF_DI_SETITEM = 0x8000 + } + + static if (_WIN32_IE >= 0x501) { + enum { + TTF_PARSELINKS = 0x1000 + } + } + + enum { + TBCD_TICS = 1, + TBCD_THUMB, + TBCD_CHANNEL // = 3 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TBDDRET_DEFAULT, + TBDDRET_NODEFAULT, + TBDDRET_TREATPRESSED + } + + enum { + TBIMHT_AFTER = 1, + TBIMHT_BACKGROUND + } +} + +enum { + TTDT_AUTOMATIC, + TTDT_RESHOW, + TTDT_AUTOPOP, + TTDT_INITIAL +} + +enum { + TTM_ACTIVATE = WM_USER + 1, + TTM_SETDELAYTIME = WM_USER + 3, + TTM_ADDTOOLA, + TTM_DELTOOLA, + TTM_NEWTOOLRECTA, + TTM_RELAYEVENT, + TTM_GETTOOLINFOA, + TTM_SETTOOLINFOA, + TTM_HITTESTA, + TTM_GETTEXTA, + TTM_UPDATETIPTEXTA, + TTM_GETTOOLCOUNT, + TTM_ENUMTOOLSA, + TTM_GETCURRENTTOOLA, + TTM_WINDOWFROMPOINT, // = WM_USER + 16 + TTM_ADDTOOLW = WM_USER + 50, + TTM_DELTOOLW, + TTM_NEWTOOLRECTW, + TTM_GETTOOLINFOW, + TTM_SETTOOLINFOW, + TTM_HITTESTW, + TTM_GETTEXTW, + TTM_UPDATETIPTEXTW, + TTM_ENUMTOOLSW, + TTM_GETCURRENTTOOLW // = WM_USER + 59 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TTM_TRACKACTIVATE = WM_USER + 17, + TTM_TRACKPOSITION, + TTM_SETTIPBKCOLOR, + TTM_SETTIPTEXTCOLOR, + TTM_GETDELAYTIME, + TTM_GETTIPBKCOLOR, + TTM_GETTIPTEXTCOLOR, + TTM_SETMAXTIPWIDTH, + TTM_GETMAXTIPWIDTH, + TTM_SETMARGIN, + TTM_GETMARGIN, + TTM_POP // = WM_USER + 28 + } +} + +static if (_WIN32_IE >= 0x400) { // IE4.0 ??? + enum { + TTM_UPDATE = WM_USER + 29, + TTM_GETBUBBLESIZE, + TTM_ADJUSTRECT, + TTM_SETTITLEA, + TTM_SETTITLEW // = WM_USER + 33 + } + static if (_WIN32_IE >= 0x500) + { + alias TTM_SETTITLEW TTM_SETTITLE; + } + else + { + alias TTM_SETTITLEA TTM_SETTITLE; + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + TTM_POPUP = (WM_USER + 34), + TTM_GETTITLE = (WM_USER + 35), + } +} + +enum { + TTN_GETDISPINFOA = TTN_FIRST - 0, + TTN_GETDISPINFOW = TTN_FIRST - 10, + TTN_NEEDTEXTA = TTN_GETDISPINFOA, + TTN_NEEDTEXTW = TTN_GETDISPINFOW, + TTN_SHOW = TTN_FIRST-1, + TTN_POP = TTN_FIRST-2 +} + +const UD_MAXVAL = 0x7fff; +const UD_MINVAL = -UD_MAXVAL; + +enum { + UDN_DELTAPOS = UDN_FIRST-1, + UDS_WRAP = 1, + UDS_SETBUDDYINT = 2, + UDS_ALIGNRIGHT = 4, + UDS_ALIGNLEFT = 8, + UDS_AUTOBUDDY = 16, + UDS_ARROWKEYS = 32, + UDS_HORZ = 64, + UDS_NOTHOUSANDS = 128 +} + +static if (_WIN32_IE >= 0x300) { + enum { + UDS_HOTTRACK = 0x0100 + } +} + +enum { + UDM_SETRANGE = WM_USER + 101, + UDM_GETRANGE, + UDM_SETPOS, + UDM_GETPOS, + UDM_SETBUDDY, + UDM_GETBUDDY, + UDM_SETACCEL, + UDM_GETACCEL, + UDM_SETBASE, + UDM_GETBASE // = WM_USER + 110 +} + +static if (_WIN32_IE >= 0x400) { + enum { + UDM_SETRANGE32 = WM_USER + 111, + UDM_GETRANGE32, + UDM_SETPOS32, + UDM_GETPOS32 // = WM_USER + 114 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +/*enum { + SB_SETTEXTA = WM_USER + 1, + SB_GETTEXTA, + SB_GETTEXTLENGTHA, + SB_SETPARTS, // = WM_USER + 4 + SB_GETPARTS = WM_USER + 6, + SB_GETBORDERS, + SB_SETMINHEIGHT, + SB_SIMPLE, + SB_GETRECT, + SB_SETTEXTW, + SB_GETTEXTLENGTHW, + SB_GETTEXTW // = WM_USER + 13 +}*/ + +/*enum { + SBT_OWNERDRAW = 0x1000, + SBT_NOBORDERS = 256, + SBT_POPOUT = 512, + SBT_RTLREADING = 1024 +}*/ + +static if(_WIN32_IE >= 0x400) { + enum { + SBT_TOOLTIPS = 0x0800, + SBN_SIMPLEMODECHANGE = SBN_FIRST + } +} + +enum { + TBS_AUTOTICKS = 1, + TBS_VERT = 2, + TBS_HORZ = 0, + TBS_TOP = 4, + TBS_BOTTOM = 0, + TBS_LEFT = 4, + TBS_RIGHT = 0, + TBS_BOTH = 8, + TBS_NOTICKS = 16, + TBS_ENABLESELRANGE = 32, + TBS_FIXEDLENGTH = 64, + TBS_NOTHUMB = 128 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TBS_TOOLTIPS = 0x0100, + TBTS_TOP = 0, + TBTS_LEFT, + TBTS_BOTTOM, + TBTS_RIGHT // = 3 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + TBS_REVERSED = 0x0200 + } +} + +static if (_WIN32_IE >= 0x501) { + enum { + TBS_DOWNISLEFT = 0x0400 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TBIF_BYINDEX = 0x80000000, + TBIF_COMMAND = 32, + TBIF_IMAGE = 1, + TBIF_LPARAM = 16, + TBIF_SIZE = 64, + TBIF_STATE = 4, + TBIF_STYLE = 8, + TBIF_TEXT = 2 + } +} + +enum { + TBM_GETPOS = WM_USER, + TBM_GETRANGEMIN, + TBM_GETRANGEMAX, + TBM_GETTIC, + TBM_SETTIC, + TBM_SETPOS, + TBM_SETRANGE, + TBM_SETRANGEMIN, + TBM_SETRANGEMAX, + TBM_CLEARTICS, + TBM_SETSEL, + TBM_SETSELSTART, + TBM_SETSELEND, // = WM_USER+12, + TBM_GETPTICS = WM_USER+14, + TBM_GETTICPOS, + TBM_GETNUMTICS, + TBM_GETSELSTART, + TBM_GETSELEND, + TBM_CLEARSEL, + TBM_SETTICFREQ, + TBM_SETPAGESIZE, + TBM_GETPAGESIZE, + TBM_SETLINESIZE, + TBM_GETLINESIZE, + TBM_GETTHUMBRECT, + TBM_GETCHANNELRECT, + TBM_SETTHUMBLENGTH, + TBM_GETTHUMBLENGTH, + TBM_SETTOOLTIPS, + TBM_GETTOOLTIPS, + TBM_SETTIPSIDE, + TBM_SETBUDDY, + TBM_GETBUDDY, // = WM_USER+33, + TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT +} + +enum { + TB_LINEUP, + TB_LINEDOWN, + TB_PAGEUP, + TB_PAGEDOWN, + TB_THUMBPOSITION, + TB_THUMBTRACK, + TB_TOP, + TB_BOTTOM, + TB_ENDTRACK // = 8 +} + +enum { + HOTKEYF_SHIFT = 1, + HOTKEYF_CONTROL = 2, + HOTKEYF_ALT = 4, + HOTKEYF_EXT = 8 +} + +enum { + HKCOMB_NONE = 1, + HKCOMB_S = 2, + HKCOMB_C = 4, + HKCOMB_A = 8, + HKCOMB_SC = 16, + HKCOMB_SA = 32, + HKCOMB_CA = 64, + HKCOMB_SCA = 128 +} + +enum { + HKM_SETHOTKEY = WM_USER + 1, + HKM_GETHOTKEY = WM_USER + 2, + HKM_SETRULES = WM_USER + 3 +} + +enum { + PBM_SETRANGE = WM_USER + 1, + PBM_SETPOS, + PBM_DELTAPOS, + PBM_SETSTEP, + PBM_STEPIT, // = WM_USER + 5 + PBM_SETRANGE32 = 1030, + PBM_GETRANGE, + PBM_GETPOS, + PBM_SETBARCOLOR, // = 1033 + PBM_SETBKCOLOR = CCM_SETBKCOLOR +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + PBM_SETMARQUEE = WM_USER + 10, + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + PBM_GETSTEP = WM_USER + 13, + PBM_GETBKCOLOR, + PBM_GETBARCOLOR, + PBM_SETSTATE, + PBM_GETSTATE, + } +} + +enum { + PBS_SMOOTH = 1, + PBS_VERTICAL = 4 +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + PBS_MARQUEE = 8, + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + PBS_SMOOTHREVERSE = 16, + } +} + +enum { + LVS_ICON, + LVS_REPORT, + LVS_SMALLICON, + LVS_LIST, // = 3 + LVS_TYPEMASK = 3, + LVS_SINGLESEL = 4, + LVS_SHOWSELALWAYS = 8, + LVS_SORTASCENDING = 16, + LVS_SORTDESCENDING = 32, + LVS_SHAREIMAGELISTS = 64, + LVS_NOLABELWRAP = 128, + LVS_AUTOARRANGE = 256, + LVS_EDITLABELS = 512, + LVS_NOSCROLL = 0x2000, + LVS_TYPESTYLEMASK = 0xFC00, + LVS_ALIGNTOP = 0, + LVS_ALIGNLEFT = 0x800, + LVS_ALIGNMASK = 0xC00, + LVS_OWNERDRAWFIXED = 0x400, + LVS_NOCOLUMNHEADER = 0x4000, + LVS_NOSORTHEADER = 0x8000 +} + +static if (_WIN32_IE >= 0x300) { + enum { + CDIS_CHECKED = 8, + CDIS_DEFAULT = 32, + CDIS_DISABLED = 4, + CDIS_FOCUS = 16, + CDIS_GRAYED = 2, + CDIS_HOT = 64, + CDIS_SELECTED = 1, + CDIS_MARKED = 128, + CDIS_INDETERMINATE = 256 + } + + static if (_WIN32_WINNT >= 0x501) { + enum { + CDIS_SHOWKEYBOARDCUES = 512 + } + } + + enum { + CDDS_POSTERASE = 4, + CDDS_POSTPAINT = 2, + CDDS_PREERASE = 3, + CDDS_PREPAINT = 1, + CDDS_ITEM = 65536, + CDDS_ITEMPOSTERASE = 65540, + CDDS_ITEMPOSTPAINT = 65538, + CDDS_ITEMPREERASE = 65539, + CDDS_ITEMPREPAINT = 65537 + } + + static if (_WIN32_IE >= 0x400) { + enum { + CDDS_SUBITEM = 0x20000 + } + } + + enum { + CDRF_DODEFAULT = 0x00, + CDRF_NOTIFYITEMDRAW = 0x20, + CDRF_NOTIFYSUBITEMDRAW = 0x20, + CDRF_NOTIFYITEMERASE = 0x80, + CDRF_NOTIFYPOSTERASE = 0x40, + CDRF_NOTIFYPOSTPAINT = 0x10, + CDRF_NEWFONT = 0x02, + CDRF_SKIPDEFAULT = 0x04 + } + + static if (_WIN32_IE >= 0x400) { + enum { + LVBKIF_SOURCE_NONE = 0x00000000, + LVBKIF_SOURCE_HBITMAP = 0x00000001, + LVBKIF_SOURCE_URL = 0x00000002, + LVBKIF_SOURCE_MASK = 0x00000003, + LVBKIF_STYLE_NORMAL = 0x00000000, + LVBKIF_STYLE_TILE = 0x00000010, + LVBKIF_STYLE_MASK = 0x00000010 + } + } + + static if (_WIN32_WINNT >= 0x501) { + enum { + LVBKIF_FLAG_TILEOFFSET = 0x00000100, + LVBKIF_TYPE_WATERMARK = 0x10000000 + } + } + + enum { + LVS_OWNERDATA = 4096 + } + + enum { + LVS_EX_CHECKBOXES = 4, + LVS_EX_FULLROWSELECT = 32, + LVS_EX_GRIDLINES = 1, + LVS_EX_HEADERDRAGDROP = 16, + LVS_EX_ONECLICKACTIVATE = 64, + LVS_EX_SUBITEMIMAGES = 2, + LVS_EX_TRACKSELECT = 8, + LVS_EX_TWOCLICKACTIVATE = 128 + } + + enum { + LVSICF_NOINVALIDATEALL = 0x00000001, + LVSICF_NOSCROLL = 0x00000002 + } + + static if(_WIN32_IE >= 0x400) { + enum { + LVS_EX_FLATSB = 0x00000100, + LVS_EX_REGIONAL = 0x00000200, + LVS_EX_INFOTIP = 0x00000400, + LVS_EX_UNDERLINEHOT = 0x00000800, + LVS_EX_UNDERLINECOLD = 0x00001000, + LVS_EX_MULTIWORKAREAS = 0x00002000 + } + } + + static if(_WIN32_IE >= 0x500) { + enum { + LVS_EX_LABELTIP = 0x00004000, + LVS_EX_BORDERSELECT = 0x00008000 + } + } +} + +enum { + LVSIL_NORMAL, + LVSIL_SMALL, + LVSIL_STATE +} + +enum { + LVM_GETBKCOLOR = LVM_FIRST, + LVM_SETBKCOLOR, + LVM_GETIMAGELIST, + LVM_SETIMAGELIST, + LVM_GETITEMCOUNT, // = LVM_FIRST + 4 + LVM_SORTITEMSEX = LVM_FIRST + 81, + LVM_GETGROUPSTATE = LVM_FIRST + 92, + LVM_GETFOCUSEDGROUP, + LVM_GETGROUPRECT = LVM_FIRST + 98, + LVM_SETVIEW = LVM_FIRST + 142, + LVM_GETVIEW, // = LVM_FIRST + 143 + LVM_INSERTGROUP = LVM_FIRST + 145, + LVM_SETGROUPINFO = LVM_FIRST + 147, + LVM_GETGROUPINFO = LVM_FIRST + 149, + LVM_REMOVEGROUP, + LVM_MOVEGROUP, // = LVM_FIRST + 151 + LVM_GETGROUPCOUNT, + LVM_GETGROUPINFOBYINDEX, + LVM_MOVEITEMTOGROUP, + LVM_SETGROUPMETRICS = LVM_FIRST + 155, + LVM_GETGROUPMETRICS, + LVM_ENABLEGROUPVIEW, + LVM_SORTGROUPS, + LVM_INSERTGROUPSORTED, + LVM_REMOVEALLGROUPS, + LVM_HASGROUP, + LVM_SETTILEVIEWINFO, + LVM_GETTILEVIEWINFO, + LVM_SETTILEINFO, + LVM_GETTILEINFO, + LVM_SETINSERTMARK, + LVM_GETINSERTMARK, + LVM_INSERTMARKHITTEST, + LVM_GETINSERTMARKRECT, + LVM_SETINSERTMARKCOLOR, + LVM_GETINSERTMARKCOLOR, // = LVM_FIRST + 171 + LVM_SETINFOTIP = LVM_FIRST + 173, + LVM_GETSELECTEDCOLUMN, + LVM_ISGROUPVIEWENABLED, + LVM_GETOUTLINECOLOR, + LVM_SETOUTLINECOLOR, // = LVM_FIRST + 177 + LVM_CANCELEDITLABEL = LVM_FIRST + 179, + LVM_MAPINDEXTOID = LVM_FIRST + 180, + LVM_MAPIDTOINDEX = LVM_FIRST + 181, + LVM_ISITEMVISIBLE = LVM_FIRST + 182, +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140 + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + LVM_GETEMPTYTEXT = LVM_FIRST + 204, + LVM_GETFOOTERRECT = LVM_FIRST + 205, + LVM_GETFOOTERINFO = LVM_FIRST + 206, + LVM_GETFOOTERITEMRECT = LVM_FIRST + 207, + LVM_GETFOOTERITEM = (LVM_FIRST + 208), + LVM_GETITEMINDEXRECT = (LVM_FIRST + 209), + LVM_SETITEMINDEXSTATE = (LVM_FIRST + 210), + LVM_GETNEXTITEMINDEX = (LVM_FIRST + 211), + } +} + +enum { + LVIF_TEXT = 1, + LVIF_IMAGE = 2, + LVIF_PARAM = 4, + LVIF_STATE = 8 +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVIF_INDENT = 16, + LVIF_NORECOMPUTE = 2048 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + LVIF_GROUPID = 128, + LVIF_COLUMNS = 256 + } +} + +enum { + LVIS_FOCUSED = 1, + LVIS_SELECTED = 2, + LVIS_CUT = 4, + LVIS_DROPHILITED = 8, + LVIS_OVERLAYMASK = 0xF00, + LVIS_STATEIMAGEMASK = 0xF000 +} + +const LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR) -1; +const LPSTR LPSTR_TEXTCALLBACKA = cast(LPSTR) -1; + +const I_IMAGECALLBACK = -1; + +static if(_WIN32_IE >= 0x400) { + enum { + LVM_SETBKIMAGEA = LVM_FIRST + 68, + LVM_SETBKIMAGEW = LVM_FIRST + 138, + LVM_GETBKIMAGEA = LVM_FIRST + 69, + LVM_GETBKIMAGEW = LVM_FIRST + 139, + LV_MAX_WORKAREAS = 16, + LVM_SETWORKAREAS = LVM_FIRST + 65, + LVM_GETWORKAREAS = LVM_FIRST + 70, + LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73, + LVM_GETSELECTIONMARK = LVM_FIRST + 66, + LVM_SETSELECTIONMARK = LVM_FIRST + 67, + LVM_SETHOVERTIME = LVM_FIRST + 71, + LVM_GETHOVERTIME = LVM_FIRST + 72, + LVM_SETTOOLTIPS = LVM_FIRST + 74, + LVM_GETTOOLTIPS = LVM_FIRST + 78, + LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +enum { + LVNI_ALL, + LVNI_FOCUSED = 1, + LVNI_SELECTED = 2, + LVNI_CUT = 4, + LVNI_DROPHILITED = 8, + LVNI_ABOVE = 256, + LVNI_BELOW = 512, + LVNI_TOLEFT = 1024, + LVNI_TORIGHT = 2048 +} + +enum { + LVM_GETITEMA = LVM_FIRST + 5, + LVM_SETITEMA, + LVM_INSERTITEMA, + LVM_DELETEITEM, + LVM_DELETEALLITEMS, + LVM_GETCALLBACKMASK, + LVM_SETCALLBACKMASK, + LVM_GETNEXTITEM, + LVM_FINDITEMA, + LVM_GETITEMRECT, + LVM_SETITEMPOSITION, + LVM_GETITEMPOSITION, + LVM_GETSTRINGWIDTHA, + LVM_HITTEST, + LVM_ENSUREVISIBLE, + LVM_SCROLL, + LVM_REDRAWITEMS, + LVM_ARRANGE, + LVM_EDITLABELA, + LVM_GETEDITCONTROL, + LVM_GETCOLUMNA, + LVM_SETCOLUMNA, + LVM_INSERTCOLUMNA, + LVM_DELETECOLUMN, + LVM_GETCOLUMNWIDTH, + LVM_SETCOLUMNWIDTH, // = LVM_FIRST + 30, + LVM_CREATEDRAGIMAGE = LVM_FIRST + 33, + LVM_GETVIEWRECT, + LVM_GETTEXTCOLOR, + LVM_SETTEXTCOLOR, + LVM_GETTEXTBKCOLOR, + LVM_SETTEXTBKCOLOR, + LVM_GETTOPINDEX, + LVM_GETCOUNTPERPAGE, + LVM_GETORIGIN, + LVM_UPDATE, + LVM_SETITEMSTATE, + LVM_GETITEMSTATE, + LVM_GETITEMTEXTA, + LVM_SETITEMTEXTA, + LVM_SETITEMCOUNT, + LVM_SORTITEMS, + LVM_SETITEMPOSITION32, + LVM_GETSELECTEDCOUNT, + LVM_GETITEMSPACING, + LVM_GETISEARCHSTRINGA, // = LVM_FIRST + 52, + LVM_GETITEMW = LVM_FIRST + 75, + LVM_SETITEMW = LVM_FIRST + 76, + LVM_INSERTITEMW = LVM_FIRST + 77, + LVM_FINDITEMW = LVM_FIRST + 83, + LVM_GETSTRINGWIDTHW = LVM_FIRST + 87, + LVM_GETCOLUMNW = LVM_FIRST + 95, + LVM_SETCOLUMNW = LVM_FIRST + 96, + LVM_INSERTCOLUMNW = LVM_FIRST + 97, + LVM_GETITEMTEXTW = LVM_FIRST + 115, + LVM_SETITEMTEXTW, + LVM_GETISEARCHSTRINGW, + LVM_EDITLABELW // = LVM_FIRST + 118, +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVM_GETHEADER = LVM_FIRST + 31, + LVM_SETICONSPACING = LVM_FIRST + 53, + LVM_SETEXTENDEDLISTVIEWSTYLE, + LVM_GETEXTENDEDLISTVIEWSTYLE, + LVM_GETSUBITEMRECT, + LVM_SUBITEMHITTEST, + LVM_SETCOLUMNORDERARRAY, + LVM_GETCOLUMNORDERARRAY, + LVM_SETHOTITEM, + LVM_GETHOTITEM, + LVM_SETHOTCURSOR, + LVM_GETHOTCURSOR, + LVM_APPROXIMATEVIEWRECT // = LVM_FIRST + 64, + } +} + +enum { + LVFI_PARAM = 1, + LVFI_STRING = 2, + LVFI_PARTIAL = 8, + LVFI_WRAP = 32, + LVFI_NEARESTXY = 64 +} + +enum { + LVIF_DI_SETITEM = 0x1000 +} + +enum { + LVIR_BOUNDS, + LVIR_ICON, + LVIR_LABEL, + LVIR_SELECTBOUNDS // = 3 +} + +enum { + LVHT_NOWHERE = 1, + LVHT_ONITEMICON = 2, + LVHT_ONITEMLABEL = 4, + LVHT_ONITEMSTATEICON = 8, + LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL + | LVHT_ONITEMSTATEICON, + LVHT_ABOVE = 8, + LVHT_BELOW = 16, + LVHT_TORIGHT = 32, + LVHT_TOLEFT = 64 +} + +enum { + LVA_DEFAULT = 0, + LVA_ALIGNLEFT = 1, + LVA_ALIGNTOP = 2, + LVA_SNAPTOGRID = 5 +} + +enum { + LVCF_FMT = 1, + LVCF_WIDTH = 2, + LVCF_TEXT = 4, + LVCF_SUBITEM = 8 +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVCF_IMAGE = 16, + LVCF_ORDER = 32 + } +} + +enum { + LVCFMT_LEFT, + LVCFMT_RIGHT, + LVCFMT_CENTER, + LVCFMT_JUSTIFYMASK // = 3 +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVCFMT_IMAGE = 2048, + LVCFMT_BITMAP_ON_RIGHT = 4096, + LVCFMT_COL_HAS_IMAGES = 32768 + } +} + +enum { + LVSCW_AUTOSIZE = -1, + LVSCW_AUTOSIZE_USEHEADER = -2 +} + +enum { + LVN_ITEMCHANGING = LVN_FIRST, + LVN_ITEMCHANGED = LVN_FIRST - 1, + LVN_INSERTITEM = LVN_FIRST - 2, + LVN_DELETEITEM = LVN_FIRST - 3, + LVN_DELETEALLITEMS = LVN_FIRST - 4, + LVN_BEGINLABELEDITA = LVN_FIRST - 5, + LVN_ENDLABELEDITA = LVN_FIRST - 6, + LVN_COLUMNCLICK = LVN_FIRST - 8, + LVN_BEGINDRAG = LVN_FIRST - 9, + LVN_BEGINRDRAG = LVN_FIRST - 11, + LVN_GETDISPINFOA = LVN_FIRST - 50, + LVN_SETDISPINFOA = LVN_FIRST - 51, + LVN_KEYDOWN = LVN_FIRST - 55, + LVN_BEGINLABELEDITW = LVN_FIRST - 75, + LVN_ENDLABELEDITW = LVN_FIRST - 76, + LVN_GETDISPINFOW = LVN_FIRST - 77, + LVN_SETDISPINFOW = LVN_FIRST - 78 +} + +static if (_WIN32_IE >= 0x400) { + enum { + LVN_MARQUEEBEGIN = LVN_FIRST - 56, + LVN_GETINFOTIPA = LVN_FIRST - 57, + LVN_GETINFOTIPW = LVN_FIRST - 58, + LVKF_ALT = 1, + LVKF_CONTROL = 2, + LVKF_SHIFT = 4, + LVGIT_UNFOLDED = 1 + } +} + +enum { + TVS_HASBUTTONS = 1, + TVS_HASLINES = 2, + TVS_LINESATROOT = 4, + TVS_EDITLABELS = 8, + TVS_DISABLEDRAGDROP = 16, + TVS_SHOWSELALWAYS = 32 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TVS_RTLREADING = 64, + TVS_NOTOOLTIPS = 128, + TVS_CHECKBOXES = 256, + TVS_TRACKSELECT = 512 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVS_SINGLEEXPAND = 1024, + TVS_INFOTIP = 2048, + TVS_FULLROWSELECT = 4096, + TVS_NOSCROLL = 8192, + TVS_NONEVENHEIGHT = 16384 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + TVS_NOHSCROLL = 0x8000 + } +} + +enum { + TVIF_TEXT = 1, + TVIF_IMAGE = 2, + TVIF_PARAM = 4, + TVIF_STATE = 8, + TVIF_HANDLE = 16, + TVIF_SELECTEDIMAGE = 32, + TVIF_CHILDREN = 64 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVIF_INTEGRAL = 0x0080 + } +} + +enum { + TVIS_FOCUSED = 1, + TVIS_SELECTED = 2, + TVIS_CUT = 4, + TVIS_DROPHILITED = 8, + TVIS_BOLD = 16, + TVIS_EXPANDED = 32, + TVIS_EXPANDEDONCE = 64, + TVIS_OVERLAYMASK = 0xF00, + TVIS_STATEIMAGEMASK = 0xF000, + TVIS_USERMASK = 0xF000 +} + +enum { + I_CHILDRENCALLBACK = -1 +} + +mixin DECLARE_HANDLE!("HTREEITEM"); +mixin DECLARE_HANDLE!("HIMAGELIST"); + +version(Win64) +{ +const HTREEITEM + TVI_ROOT = cast(HTREEITEM) cast(ULONG_PTR)-0x10000, + TVI_FIRST = cast(HTREEITEM) cast(ULONG_PTR)-0xffff, + TVI_LAST = cast(HTREEITEM) cast(ULONG_PTR)-0xfffe, + TVI_SORT = cast(HTREEITEM) cast(ULONG_PTR)-0xfffd; +} else { +const HTREEITEM + TVI_ROOT = cast(HTREEITEM) 0xFFFF0000, + TVI_FIRST = cast(HTREEITEM) 0xFFFF0001, + TVI_LAST = cast(HTREEITEM) 0xFFFF0002, + TVI_SORT = cast(HTREEITEM) 0xFFFF0003; +} + +enum { + TVSIL_NORMAL = 0, + TVSIL_STATE = 2 +} + +enum { + TVM_INSERTITEMA = TV_FIRST, + TVM_DELETEITEM = TV_FIRST + 1, + TVM_EXPAND = TV_FIRST + 2, + TVM_GETITEMRECT = TV_FIRST + 4, + TVM_GETCOUNT, + TVM_GETINDENT, + TVM_SETINDENT, + TVM_GETIMAGELIST, + TVM_SETIMAGELIST, + TVM_GETNEXTITEM, + TVM_SELECTITEM, + TVM_GETITEMA, + TVM_SETITEMA, + TVM_EDITLABELA, + TVM_GETEDITCONTROL, + TVM_GETVISIBLECOUNT, + TVM_HITTEST, + TVM_CREATEDRAGIMAGE, + TVM_SORTCHILDREN, + TVM_ENSUREVISIBLE, + TVM_SORTCHILDRENCB, + TVM_ENDEDITLABELNOW, + TVM_GETISEARCHSTRINGA, // = TV_FIRST + 23 + TVM_INSERTITEMW = TV_FIRST + 50, + TVM_GETITEMW = TV_FIRST + 62, + TVM_SETITEMW = TV_FIRST + 63, + TVM_GETISEARCHSTRINGW = TV_FIRST + 64, + TVM_EDITLABELW = TV_FIRST + 65 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TVM_GETTOOLTIPS = TV_FIRST + 25, + TVM_SETTOOLTIPS = TV_FIRST + 24 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVM_SETINSERTMARK = TV_FIRST + 26, + TVM_SETITEMHEIGHT, + TVM_GETITEMHEIGHT, + TVM_SETBKCOLOR, + TVM_SETTEXTCOLOR, + TVM_GETBKCOLOR, + TVM_GETTEXTCOLOR, + TVM_SETSCROLLTIME, + TVM_GETSCROLLTIME, // = TV_FIRST + 34 + TVM_SETINSERTMARKCOLOR = TV_FIRST + 37, + TVM_GETINSERTMARKCOLOR = TV_FIRST + 38, + TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + TVM_GETITEMSTATE = TV_FIRST + 39, + TVM_SETLINECOLOR = TV_FIRST + 40, + TVM_GETLINECOLOR = TV_FIRST + 41 + } +} + +static if (_WIN32_IE >= 0x501) { + enum { + TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42, + TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43, + TVM_SETEXTENDEDSTYLE = TV_FIRST + 44, + TVM_GETEXTENDEDSTYLE = TV_FIRST + 45, + TVM_SETAUTOSCROLLINFO = TV_FIRST + 59 + } +} + +static if (_WIN32_IE >= 0x600) { + enum { + TVM_GETSELECTEDCOUNT = TV_FIRST + 70, + TVM_SHOWINFOTIP = TV_FIRST + 71, + TVM_GETITEMPARTRECT = TV_FIRST + 72, + } +} + +enum { + TVE_COLLAPSE = 1, + TVE_EXPAND = 2, + TVE_TOGGLE = 3, + TVE_COLLAPSERESET = 0x8000 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TVE_EXPANDPARTIAL = 0x4000 + } +} + +enum { + TVC_UNKNOWN, + TVC_BYMOUSE, + TVC_BYKEYBOARD // = 2 +} + +enum { + TVGN_ROOT, + TVGN_NEXT, + TVGN_PREVIOUS, + TVGN_PARENT, + TVGN_CHILD, + TVGN_FIRSTVISIBLE, + TVGN_NEXTVISIBLE, + TVGN_PREVIOUSVISIBLE, + TVGN_DROPHILITE, + TVGN_CARET // = 9 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVGN_LASTVISIBLE = 10 + } +} + +static if (_WIN32_IE >= 0x600) { + enum { + TVGN_NEXTSELECTED = 11 + } +} + +enum { + TVN_SELCHANGINGA = TVN_FIRST - 1, + TVN_SELCHANGEDA = TVN_FIRST - 2, + TVN_GETDISPINFOA = TVN_FIRST - 3, + TVN_SETDISPINFOA = TVN_FIRST - 4, + TVN_ITEMEXPANDINGA = TVN_FIRST - 5, + TVN_ITEMEXPANDEDA = TVN_FIRST - 6, + TVN_BEGINDRAGA = TVN_FIRST - 7, + TVN_BEGINRDRAGA = TVN_FIRST - 8, + TVN_DELETEITEMA = TVN_FIRST - 9, + TVN_BEGINLABELEDITA = TVN_FIRST - 10, + TVN_ENDLABELEDITA = TVN_FIRST - 11, + TVN_KEYDOWN = TVN_FIRST - 12, + TVN_SELCHANGINGW = TVN_FIRST - 50, + TVN_SELCHANGEDW = TVN_FIRST - 51, + TVN_GETDISPINFOW = TVN_FIRST - 52, + TVN_SETDISPINFOW = TVN_FIRST - 53, + TVN_ITEMEXPANDINGW = TVN_FIRST - 54, + TVN_ITEMEXPANDEDW = TVN_FIRST - 55, + TVN_BEGINDRAGW = TVN_FIRST - 56, + TVN_BEGINRDRAGW = TVN_FIRST - 57, + TVN_DELETEITEMW = TVN_FIRST - 58, + TVN_BEGINLABELEDITW = TVN_FIRST - 59, + TVN_ENDLABELEDITW = TVN_FIRST - 60 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVNRET_DEFAULT = 0, + TVNRET_SKIPOLD = 1, + TVNRET_SKIPNEW = 2, + TVN_GETINFOTIPA = TVN_FIRST - 13, + TVN_GETINFOTIPW = TVN_FIRST - 14, + TVN_SINGLEEXPAND = TVN_FIRST - 15 + } +} + +enum { + TVIF_DI_SETITEM = 0x1000 +} + +enum { + TVHT_NOWHERE = 1, + TVHT_ONITEMICON = 2, + TVHT_ONITEMLABEL = 4, + TVHT_ONITEMINDENT = 8, + TVHT_ONITEMBUTTON = 16, + TVHT_ONITEMRIGHT = 32, + TVHT_ONITEMSTATEICON = 64, + TVHT_ABOVE = 256, + TVHT_BELOW = 512, + TVHT_TORIGHT = 1024, + TVHT_TOLEFT = 2048, + TCHT_NOWHERE = 1, + TCHT_ONITEMICON = 2, + TCHT_ONITEMLABEL = 4, + TVHT_ONITEM = TVHT_ONITEMICON | TVHT_ONITEMLABEL + | TVHT_ONITEMSTATEICON, + TCHT_ONITEM = TCHT_ONITEMICON | TCHT_ONITEMLABEL +} + +enum { + TCS_TABS = 0, + TCS_RIGHTJUSTIFY = 0, + TCS_SINGLELINE = 0, + TCS_FORCEICONLEFT = 16, + TCS_FORCELABELLEFT = 32, + TCS_BUTTONS = 256, + TCS_MULTILINE = 512, + TCS_FIXEDWIDTH = 1024, + TCS_RAGGEDRIGHT = 2048, + TCS_FOCUSONBUTTONDOWN = 0x1000, + TCS_OWNERDRAWFIXED = 0x2000, + TCS_TOOLTIPS = 0x4000, + TCS_FOCUSNEVER = 0x8000 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TCS_BOTTOM = 2, + TCS_RIGHT = 2, + TCS_VERTICAL = 128, + TCS_SCROLLOPPOSITE = 0x0001, + TCS_HOTTRACK = 0x0040, + TCS_MULTISELECT = 0x0004 + } +} + +static if(_WIN32_IE >= 0x400) { + enum { + TCS_FLATBUTTONS = 0x0008, + TCS_EX_FLATSEPARATORS = 0x00000001, + TCS_EX_REGISTERDROP = 0x00000002 + } +} + +enum { + TCIF_TEXT = 1, + TCIF_IMAGE = 2, + TCIF_RTLREADING = 4, + TCIF_PARAM = 8 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TCIF_STATE = 16 + } +} + +enum { + TCIS_BUTTONPRESSED = 1 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TCIS_HIGHLIGHTED = 2 + } +} + +enum { + TCM_FIRST = 0x1300, + TCM_GETIMAGELIST = TCM_FIRST + 2, + TCM_SETIMAGELIST, + TCM_GETITEMCOUNT, + TCM_GETITEMA, + TCM_SETITEMA, + TCM_INSERTITEMA, + TCM_DELETEITEM, + TCM_DELETEALLITEMS, + TCM_GETITEMRECT, + TCM_GETCURSEL, + TCM_SETCURSEL, + TCM_HITTEST, + TCM_SETITEMEXTRA, // = TCM_FIRST + 14 + TCM_ADJUSTRECT = TCM_FIRST + 40, + TCM_SETITEMSIZE, + TCM_REMOVEIMAGE, + TCM_SETPADDING, + TCM_GETROWCOUNT, + TCM_GETTOOLTIPS, + TCM_SETTOOLTIPS, + TCM_GETCURFOCUS, + TCM_SETCURFOCUS, + TCM_SETMINTABWIDTH, + TCM_DESELECTALL, // = TCM_FIRST + 50 + TCM_GETITEMW = TCM_FIRST + 60, + TCM_SETITEMW = TCM_FIRST + 61, + TCM_INSERTITEMW = TCM_FIRST + 62 +} + +static if (_WIN32_IE >=0x0400) { + enum { + TCM_HIGHLIGHTITEM = TCM_FIRST + 51, + TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52, + TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53, + TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +enum { + TCN_KEYDOWN = TCN_FIRST, + TCN_SELCHANGE = TCN_FIRST - 1, + TCN_SELCHANGING = TCN_FIRST - 2 +} + +enum { + NM_OUTOFMEMORY = NM_FIRST - 1, + NM_CLICK = NM_FIRST - 2, + NM_DBLCLK = NM_FIRST - 3, + NM_RETURN = NM_FIRST - 4, + NM_RCLICK = NM_FIRST - 5, + NM_RDBLCLK = NM_FIRST - 6, + NM_SETFOCUS = NM_FIRST - 7, + NM_KILLFOCUS = NM_FIRST - 8, + NM_CUSTOMDRAW = NM_FIRST - 12, + NM_HOVER = NM_FIRST - 13, + NM_NCHITTEST = NM_FIRST - 14, + NM_KEYDOWN = NM_FIRST - 15, + NM_RELEASEDCAPTURE = NM_FIRST - 16, + NM_SETCURSOR = NM_FIRST - 17, + NM_CHAR = NM_FIRST - 18, + NM_TOOLTIPSCREATED = NM_FIRST - 19 +} + +enum { + SBARS_SIZEGRIP = 256 +} + +/*enum { + CCM_FIRST = 0x2000, + CCM_LAST = CCM_FIRST + 0x200, + CCM_SETBKCOLOR = 8193, + CCM_SETCOLORSCHEME = 8194, + CCM_GETCOLORSCHEME = 8195, + CCM_GETDROPTARGET = 8196, + CCM_SETUNICODEFORMAT = 8197, + CCM_GETUNICODEFORMAT = 8198, + CCM_SETVERSION = 0x2007, + CCM_GETVERSION = 0x2008, + CCM_SETNOTIFYWINDOW = 0x2009 +}*/ + +static if (_WIN32_WINNT >= 0x501) { + enum { + CCM_SETWINDOWTHEME = 0x200b, + CCM_DPISCALE = 0x200c, + + RB_GETBANDMARGINS = WM_USER + 40, + RB_SETWINDOWTHEME = CCM_SETWINDOWTHEME, + TB_SETWINDOWTHEME = CCM_SETWINDOWTHEME, + TTM_SETWINDOWTHEME = CCM_SETWINDOWTHEME, + } +} + +enum { + ICC_LISTVIEW_CLASSES = 1, + ICC_TREEVIEW_CLASSES = 2, + ICC_BAR_CLASSES = 4, + ICC_TAB_CLASSES = 8, + ICC_UPDOWN_CLASS = 16, + ICC_PROGRESS_CLASS = 32, + ICC_HOTKEY_CLASS = 64, + ICC_ANIMATE_CLASS = 128, + ICC_WIN95_CLASSES = 255, + ICC_DATE_CLASSES = 256, + ICC_USEREX_CLASSES = 512, + ICC_COOL_CLASSES = 1024 +} + +static if (_WIN32_IE >= 0x400) { + enum { + INFOTIPSIZE = 1024, + ICC_INTERNET_CLASSES = 2048, + ICC_PAGESCROLLER_CLASS = 4096, + ICC_NATIVEFNTCTL_CLASS = 8192 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + ICC_STANDARD_CLASSES = 0x00004000, + ICC_LINK_CLASS = 0x00008000 + } +} + +enum { + GDTR_MIN = 1, + GDTR_MAX = 2 +} + +enum { + GMR_VISIBLE, + GMR_DAYSTATE +} + +enum { + GDT_ERROR = -1, + GDT_VALID = 0, + GDT_NONE = 1 +} + +enum { + DTS_SHORTDATEFORMAT = 0, + DTS_UPDOWN = 1, + DTS_SHOWNONE = 2, + DTS_LONGDATEFORMAT = 4, + DTS_TIMEFORMAT = 9, + DTS_APPCANPARSE = 16, + DTS_RIGHTALIGN = 32 +} + +static if (_WIN32_IE >= 0x500) { + enum { + DTS_SHORTDATECENTURYFORMAT = 0x000C + } +} + +enum { + MCS_DAYSTATE = 1, + MCS_MULTISELECT = 2, + MCS_WEEKNUMBERS = 4 +} + +static if (_WIN32_IE >= 0x400) { + enum { + MCS_NOTODAYCIRCLE = 0x0008, + MCS_NOTODAY = 0x0010 + } +} else { + enum { + MCS_NOTODAY = 0x0008 + } +} + +enum { + DTM_FIRST = 0x10000, + DTM_GETSYSTEMTIME = 0x1001, + DTM_SETSYSTEMTIME = 0x1002, + DTM_GETRANGE = 0x1003, + DTM_SETRANGE = 0x1004, + DTM_SETFORMATA = 0x1005, + DTM_SETMCCOLOR = 0x1006, + DTM_GETMCCOLOR = 0x1007, + DTM_GETMONTHCAL = 0x1008, + DTM_SETMCFONT = 0x1009, + DTM_GETMCFONT = 0x100a, + DTM_SETFORMATW = 0x1050 +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + DTM_SETMCSTYLE = DTM_FIRST + 11, + DTM_GETMCSTYLE, + DTM_CLOSEMONTHCAL, + DTM_GETDATETIMEPICKERINFO, + DTM_GETIDEALSIZE, + } +} + +enum { + DTN_USERSTRINGA = -758U, + DTN_USERSTRINGW = -745U, + DTN_WMKEYDOWNA = -757U, + DTN_WMKEYDOWNW = -744U, + DTN_FORMATA = -756U, + DTN_FORMATW = -743U, + DTN_FORMATQUERYA = -755U, + DTN_FORMATQUERYW = -742U, + DTN_DROPDOWN = -754U, + DTN_CLOSEUP = -753U, + DTN_DATETIMECHANGE = -759U, +} + +enum { + MCM_FIRST = 0x1000, + MCM_GETCURSEL = 0x1001, + MCM_SETCURSEL = 0x1002, + MCM_GETMAXSELCOUNT = 0x1003, + MCM_SETMAXSELCOUNT = 0x1004, + MCM_GETSELRANGE = 0x1005, + MCM_SETSELRANGE = 0x1006, + MCM_GETMONTHRANGE = 0x1007, + MCM_SETDAYSTATE = 0x1008, + MCM_GETMINREQRECT = 0x1009, + MCM_SETCOLOR = 0x100a, + MCM_GETCOLOR = 0x100b, + MCM_SETTODAY = 0x100c, + MCM_GETTODAY = 0x100d, + MCM_HITTEST = 0x100e, + MCM_SETFIRSTDAYOFWEEK = 0x100f, + MCM_GETFIRSTDAYOFWEEK = 0x1010, + MCM_GETRANGE = 0x1011, + MCM_SETRANGE = 0x1012, + MCM_GETMONTHDELTA = 0x1013, + MCM_SETMONTHDELTA = 0x1014, + MCM_GETMAXTODAYWIDTH = 0x1015, + MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + MCM_GETCURRENTVIEW = MCM_FIRST + 22, + MCM_GETCALENDARCOUNT, + MCM_GETCALENDARGRIDINFO, + MCM_GETCALID = MCM_FIRST + 27, + MCM_SETCALID, + MCM_SIZERECTTOMIN, + MCM_SETCALENDARBORDER, + MCM_GETCALENDARBORDER, + MCM_SETCURRENTVIEW, + } +} + +enum { + MCN_SELCHANGE = -749U, + MCN_GETDAYSTATE = -747U, + MCN_SELECT = -746U +} + +enum { + ODT_HEADER = 100, + ODT_TAB, + ODT_LISTVIEW // = 102 +} + +enum { + SB_SETBKCOLOR = 0x2001 +} + +static if (_WIN32_IE >= 0x300) { + enum { + SB_ISSIMPLE = 1038 + } + + enum { + MCSC_BACKGROUND, + MCSC_TEXT, + MCSC_TITLEBK, + MCSC_TITLETEXT, + MCSC_MONTHBK, + MCSC_TRAILINGTEXT // = 5 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + MCHT_TITLE = 0x10000, + MCHT_CALENDAR = 0x20000, + MCHT_TODAYLINK = 0x30000, + MCHT_NEXT = 0x1000000, + MCHT_PREV = 0x2000000, + MCHT_NOWHERE = 0x00, + MCHT_TITLEBK = MCHT_TITLE, + MCHT_TITLEMONTH = MCHT_TITLE | 0x0001, + MCHT_TITLEYEAR = MCHT_TITLE | 0x0002, + MCHT_TITLEBTNNEXT = MCHT_TITLE | MCHT_NEXT | 0x0003, + MCHT_TITLEBTNPREV = MCHT_TITLE | MCHT_PREV | 0x0003, + MCHT_CALENDARBK = MCHT_CALENDAR, + MCHT_CALENDARDATE = MCHT_CALENDAR | 0x0001, + MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT, + MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV, + MCHT_CALENDARDAY = MCHT_CALENDAR | 0x0002, + MCHT_CALENDARWEEKNUM = MCHT_CALENDAR | 0x0003 + } +} + +enum { + RBS_TOOLTIPS = 256, + RBS_VARHEIGHT = 512, + RBS_BANDBORDERS = 1024, + RBS_FIXEDORDER = 2048 +} + +enum { + RBIM_IMAGELIST = 1 +} + +enum { + RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, + RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME +} + +enum { + RBBS_BREAK = 0x0001, + RBBS_FIXEDSIZE = 0x0002, + RBBS_CHILDEDGE = 0x0004, + RBBS_HIDDEN = 0x0008, + RBBS_NOVERT = 0x0010, + RBBS_FIXEDBMP = 0x0020, + RBBS_VARIABLEHEIGHT = 0x0040, + RBBS_GRIPPERALWAYS = 0x0080, + RBBS_NOGRIPPER = 0x0100 +} + +static if (_WIN32_IE >= 0x500) { + enum { + RBBS_USECHEVRON = 0x0200 + } +} + +static if (_WIN32_IE >= 0x501) { + enum { + RBBS_HIDETITLE = 0x0400, + RBBS_TOPALIGN = 0x0800 + } +} + +enum { + RBBIM_STYLE = 1, + RBBIM_COLORS = 2, + RBBIM_TEXT = 4, + RBBIM_IMAGE = 8, + RBBIM_CHILD = 16, + RBBIM_CHILDSIZE = 32, + RBBIM_SIZE = 64, + RBBIM_BACKGROUND = 128, + RBBIM_ID = 256 +} + +enum { + RB_INSERTBANDA = WM_USER + 1, + RB_DELETEBAND, + RB_GETBARINFO, + RB_SETBARINFO, // = WM_USER + 4 + RB_SETBANDINFOA = WM_USER + 6, + RB_SETPARENT = WM_USER + 7, + RB_INSERTBANDW = WM_USER + 10, + RB_SETBANDINFOW, + RB_GETBANDCOUNT, + RB_GETROWCOUNT, + RB_GETROWHEIGHT // = WM_USER + 14, +} + +enum { + RBN_HEIGHTCHANGE = RBN_FIRST +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVN_ODCACHEHINT = LVN_FIRST - 13, + LVN_ODFINDITEMA = LVN_FIRST - 52, + LVN_ODFINDITEMW = LVN_FIRST - 79, + LVN_ITEMACTIVATE = LVN_FIRST - 14, + LVN_ODSTATECHANGED = LVN_FIRST - 15 + } + + version (Unicode) { + enum { + LVN_ODFINDITEM = LVN_ODFINDITEMW + } + } else { + enum { + LVN_ODFINDITEM = LVN_ODFINDITEMA + } + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + SB_SETICON = 1039, + SB_SETTIPTEXTA, + SB_SETTIPTEXTW, + SB_GETTIPTEXTA, + SB_GETTIPTEXTW, + SB_GETICON, // = 1044 + SB_SETUNICODEFORMAT = 0x2005, + SB_GETUNICODEFORMAT = 0x2006 + } + + enum { + PGF_INVISIBLE = 0, + PGF_NORMAL = 1, + PGF_GRAYED = 2, + PGF_DEPRESSED = 4, + PGF_HOT = 8 + } + + enum { + PGB_TOPORLEFT, + PGB_BOTTOMORRIGHT + } + + enum { + PGF_SCROLLUP = 1, + PGF_SCROLLDOWN = 2, + PGF_SCROLLLEFT = 4, + PGF_SCROLLRIGHT = 8 + } + + enum { + PGK_SHIFT = 1, + PGK_CONTROL = 2, + PGK_MENU = 4 + } + + enum { + PGF_CALCWIDTH = 1, + PGF_CALCHEIGHT = 2 + } + + enum { + PGM_FIRST = 0x1400, + PGM_SETCHILD = PGM_FIRST + 1, + PGM_RECALCSIZE, + PGM_FORWARDMOUSE, + PGM_SETBKCOLOR, + PGM_GETBKCOLOR, + PGM_SETBORDER, + PGM_GETBORDER, + PGM_SETPOS, + PGM_GETPOS, + PGM_SETBUTTONSIZE, + PGM_GETBUTTONSIZE, + PGM_GETBUTTONSTATE, // = PGM_FIRST + 12 + PGM_GETDROPTARGET = CCM_GETDROPTARGET + } + + enum { + RBS_REGISTERDROP = 4096, + RBS_AUTOSIZE = 8192, + RBS_VERTICALGRIPPER = 16384, + RBS_DBLCLKTOGGLE = 32768 + } + + enum { + RBBIM_IDEALSIZE = 512, + RBBIM_LPARAM = 1024, + RBBIM_HEADERSIZE = 2048 + } + + enum { + RB_HITTEST = WM_USER + 8, + RB_GETRECT = WM_USER + 9, + RB_IDTOINDEX = WM_USER + 16, + RB_GETTOOLTIPS, + RB_SETTOOLTIPS, + RB_SETBKCOLOR, + RB_GETBKCOLOR, + RB_SETTEXTCOLOR, + RB_GETTEXTCOLOR, + RB_SIZETORECT, + RB_BEGINDRAG, + RB_ENDDRAG, + RB_DRAGMOVE, + RB_GETBARHEIGHT, + RB_GETBANDINFOW, + RB_GETBANDINFOA, + RB_MINIMIZEBAND, + RB_MAXIMIZEBAND, // = WM_USER + 31 + RB_GETDROPTARGET = CCM_GETDROPTARGET, + RB_GETBANDBORDERS = WM_USER + 34, + RB_SHOWBAND = WM_USER + 35, + RB_SETPALETTE = WM_USER + 37, + RB_GETPALETTE = WM_USER + 38, + RB_MOVEBAND = WM_USER + 39, + RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } + + enum { + RBN_GETOBJECT = RBN_FIRST - 1, + RBN_LAYOUTCHANGED = RBN_FIRST - 2, + RBN_AUTOSIZE = RBN_FIRST - 3, + RBN_BEGINDRAG = RBN_FIRST - 4, + RBN_ENDDRAG = RBN_FIRST - 5, + RBN_DELETINGBAND = RBN_FIRST - 6, + RBN_DELETEDBAND = RBN_FIRST - 7, + RBN_CHILDSIZE = RBN_FIRST - 8 + } + + enum { + RBNM_ID = 1, + RBNM_STYLE = 2, + RBNM_LPARAM = 4 + } + + enum { + RBHT_NOWHERE = 1, + RBHT_CAPTION, + RBHT_CLIENT, + RBHT_GRABBER + } + + version (Unicode) { + alias SB_SETTIPTEXTW SB_SETTIPTEXT; + alias SB_GETTIPTEXTW SB_GETTIPTEXT; + alias RB_GETBANDINFOW RB_GETBANDINFO; + } else { + alias SB_SETTIPTEXTA SB_SETTIPTEXT; + alias SB_GETTIPTEXTA SB_GETTIPTEXT; + alias RB_GETBANDINFOA RB_GETBANDINFO; + } +} else { + enum { + RB_GETBANDINFO = WM_USER + 5 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + RB_PUSHCHEVRON = WM_USER + 43, + } +} + +static if (_WIN32_IE >= 0x600) { + enum { + RB_SETEXTENDEDSTYLE = WM_USER + 41, + RB_GETEXTENDEDSTYLE = WM_USER + 42, + } +} + +static if (_WIN32_WINNT >= 0x500) { + enum { + RB_SETBANDWIDTH = WM_USER + 44, + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + ECM_FIRST = 0x1500, + BCM_FIRST = 0x1600, + + BCM_GETIDEALSIZE = BCM_FIRST + 0x0001, + BCM_SETIMAGELIST = BCM_FIRST + 0x0002, + BCM_GETIMAGELIST = BCM_FIRST + 0x0003, + BCM_SETTEXTMARGIN = BCM_FIRST + 0x0004, + BCM_GETTEXTMARGIN = BCM_FIRST + 0x0005, + + BCN_HOTITEMCHANGE = BCN_FIRST + 0x0001, + } + + struct NMBCHOTITEM { + NMHDR hdr; + DWORD dwFlags; + } + alias NMBCHOTITEM* LPNMBCHOTITEM; +} + +static if(_WIN32_WINNT >= 0x600) { + enum { + BST_DROPDOWNPUSHED = 0x0400, + + BS_SPLITBUTTON = 0x0000_000C, + BS_DEFSPLITBUTTON = 0x0000_000D, + BS_COMMANDLINK = 0x0000_000E, + BS_DEFCOMMANDLINK = 0x0000_000F, + + BCSIF_GLYPH = 0x0001, + BCSIF_IMAGE = 0x0002, + BCSIF_STYLE = 0x0004, + BCSIF_SIZE = 0x0008, + + BCSS_NOSPLIT = 0x0001, + BCSS_STRETCH = 0x0002, + BCSS_ALIGNLEFT = 0x0004, + BCSS_IMAGE = 0x0008, + + BCM_SETDROPDOWNSTATE = BCM_FIRST + 0x0006, + BCM_SETSPLITINFO = BCM_FIRST + 0x0007, + BCM_GETSPLITINFO = BCM_FIRST + 0x0008, + BCM_SETNOTE = BCM_FIRST + 0x0009, + BCM_GETNOTE = BCM_FIRST + 0x000A, + BCM_GETNOTELENGTH = BCM_FIRST + 0x000B, + BCM_SETSHIELD = BCM_FIRST + 0x000C, + + BCN_DROPDOWN = BCN_FIRST + 0x0002, + } + + const HIMAGELIST BCCL_NOGLYPH = cast(HIMAGELIST)-1; + + struct BUTTON_SPLITINFO + { + UINT mask; + HIMAGELIST himlGlyph; + UINT uSplitStyle; + SIZE size; + } + alias BUTTON_SPLITINFO* PBUTTON_SPLITINFO; +} + +enum { + CBEM_INSERTITEMA = WM_USER + 1, + CBEM_SETIMAGELIST, + CBEM_GETIMAGELIST, + CBEM_GETITEMA, + CBEM_SETITEMA, + CBEM_GETCOMBOCONTROL, + CBEM_GETEDITCONTROL, + CBEM_SETEXSTYLE, + CBEM_GETEXSTYLE, // = WM_USER + 9) + CBEM_DELETEITEM = CB_DELETESTRING +} + +static if (_WIN32_IE >= 0x400) { + enum { + CBEM_SETEXTENDEDSTYLE = WM_USER + 14, + CBEM_GETEXTENDEDSTYLE = WM_USER + 9, + CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +enum { + CBEM_HASEDITCHANGED = WM_USER + 10, + CBEM_INSERTITEMW = WM_USER + 11, + CBEM_SETITEMW = WM_USER + 12, + CBEM_GETITEMW = WM_USER + 13 +} + +static if (_WIN32_WINNT >= 0x501) +{ + enum { + CBEM_SETWINDOWTHEME = CCM_SETWINDOWTHEME + } +} + +enum { + DA_LAST = 0x7fffffff +} + +enum { + DPA_APPEND = 0x7fffffff, + DPA_ERR = -1 +} + +enum { + DSA_APPEND = 0x7fffffff, + DSA_ERR = -1 +} + +enum { + DPAS_SORTED = 1, + DPAS_INSERTBEFORE = 2, + DPAS_INSERTAFTER = 4 +} + +static if (_WIN32_IE >= 0x400) { + enum { + WSB_PROP_CYVSCROLL = 1, + WSB_PROP_CXHSCROLL = 2, + WSB_PROP_CYHSCROLL = 4, + WSB_PROP_CXVSCROLL = 8, + WSB_PROP_CXHTHUMB = 16, + WSB_PROP_CYVTHUMB = 32, + WSB_PROP_VBKGCOLOR = 64, + WSB_PROP_HBKGCOLOR = 128, + WSB_PROP_VSTYLE = 256, + WSB_PROP_HSTYLE = 512, + WSB_PROP_WINSTYLE = 1024, + WSB_PROP_PALETTE = 2048, + WSB_PROP_MASK = 0xfff, + FSB_FLAT_MODE = 2, + FSB_ENCARTA_MODE = 1, + FSB_REGULAR_MODE = 0 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + LIF_ITEMINDEX = 1, + LIF_STATE = 2, + LIF_ITEMID = 4, + LIF_URL = 8 + } + + enum { + LIS_FOCUSED = 1, + LIS_ENABLED = 2, + LIS_VISITED = 4 + } + + enum { + LM_HITTEST = WM_USER + 768, + LM_GETIDEALHEIGHT, + LM_SETITEM, + LM_GETITEM, // = WM_USER + 771 + LM_GETIDEALSIZE = LM_GETIDEALHEIGHT, + } + + const size_t MAX_LINKID_TEXT = 48; + const size_t L_MAX_URL_LENGTH = 2084; +} + + +struct TBMETRICS { + UINT cbSize = TBMETRICS.sizeof; + DWORD dwMask; + int cxPad; + int cyPad; + int cxBarPad; + int cyBarPad; + int cxButtonSpacing; + int cyButtonSpacing; +} +alias TBMETRICS* LPTBMETRICS; + +static if (_WIN32_WINNT >= 0x501) { + struct TTGETTITLE { + DWORD dwSize = TTGETTITLE.sizeof; + UINT uTitleBitmap; + UINT cch; + WCHAR* pszTitle; + } + alias TTGETTITLE* PTTGETTITLE; +} + +static if (_WIN32_WINNT >= 0x600) { + struct MCGRIDINFO { + UINT cbSize; + DWORD dwPart; + DWORD dwFlags; + int iCalendar; + int iRow; + int iCol; + BOOL bSelected; + SYSTEMTIME stStart; + SYSTEMTIME stEnd; + RECT rc; + PWSTR pszName; + size_t cchName; + } + alias MCGRIDINFO* PMCGRIDINFO; + + struct DATETIMEPICKERINFO + { + DWORD cbSize; + RECT rcCheck; + DWORD stateCheck; + RECT rcButton; + DWORD stateButton; + HWND hwndEdit; + HWND hwndUD; + HWND hwndDropDown; + } + alias DATETIMEPICKERINFO* LPDATETIMEPICKERINFO; +} + +struct COMBOBOXEXITEMA { + UINT mask; + INT_PTR iItem; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} +alias COMBOBOXEXITEMA* PCOMBOBOXEXITEMA; +alias const(COMBOBOXEXITEMA)* PCCOMBOEXITEMA; + +struct COMBOBOXEXITEMW { + UINT mask; + INT_PTR iItem; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} +alias COMBOBOXEXITEMW* PCOMBOBOXEXITEMW; +alias const(COMBOBOXEXITEMW)* PCCOMBOEXITEMW; + +static if (_WIN32_IE >= 0x400) { + struct NMCOMBOBOXEXA { + NMHDR hdr; + COMBOBOXEXITEMA ceItem; + } + alias NMCOMBOBOXEXA* PNMCOMBOBOXEXA; + + struct NMCOMBOBOXEXW { + NMHDR hdr; + COMBOBOXEXITEMW ceItem; + } + alias NMCOMBOBOXEXW* PNMCOMBOBOXEXW; + + struct NMCBEDRAGBEGINW { + NMHDR hdr; + int iItemid; + WCHAR[CBEMAXSTRLEN] szText; + } + alias NMCBEDRAGBEGINW* LPNMCBEDRAGBEGINW, PNMCBEDRAGBEGINW; + + struct NMCBEDRAGBEGINA { + NMHDR hdr; + int iItemid; + char[CBEMAXSTRLEN] szText; + } + alias NMCBEDRAGBEGINA* LPNMCBEDRAGBEGINA, PNMCBEDRAGBEGINA; + + struct NMIPADDRESS { + NMHDR hdr; + int iField; + int iValue; + } + alias NMIPADDRESS* LPNMIPADDRESS; + + struct NMLVKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; + } + alias NMLVKEYDOWN* LPNMLVKEYDOWN; + + struct NMPGCALCSIZE { + NMHDR hdr; + DWORD dwFlag; + int iWidth; + int iHeight; + } + alias NMPGCALCSIZE* LPNMPGCALCSIZE; + + struct NMPGSCROLL { + NMHDR hdr; + BOOL fwKeys; + RECT rcParent; + int iDir; + int iXpos; + int iYpos; + int iScroll; + } + alias NMPGSCROLL* LPNMPGSCROLL; + + struct NMSELCHANGE { + NMHDR nmhdr; + SYSTEMTIME stSelStart; + SYSTEMTIME stSelEnd; + } + alias NMSELCHANGE* LPNMSELCHANGE; + + struct NMTBHOTITEM { + NMHDR hdr; + int idOld; + int idNew; + DWORD dwFlags; + } + alias NMTBHOTITEM* LPNMTBHOTITEM; + + struct NMTBDISPINFOA { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPSTR pszText; + int cchText; + } + alias NMTBDISPINFOA* LPNMTBDISPINFOA; + + struct NMTBDISPINFOW { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPWSTR pszText; + int cchText; + } + alias NMTBDISPINFOW* LPNMTBDISPINFOW; + + struct NMTBGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; + } + alias NMTBGETINFOTIPA* LPNMTBGETINFOTIPA; + + struct NMTBGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; + } + alias NMTBGETINFOTIPW* LPNMTBGETINFOTIPW; + + struct NMMOUSE { + NMHDR hdr; + DWORD_PTR dwItemSpec; + DWORD_PTR dwItemData; + POINT pt; + LPARAM dwHitInfo; + } + alias NMMOUSE* LPNMMOUSE; +} + +static if (_WIN32_IE >= 0x401) { + struct NMTOOLTIPSCREATED { + NMHDR hdr; + HWND hwndToolTips; + } + alias NMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED; +} + +struct NMDATETIMECHANGE { + NMHDR nmhdr; + DWORD dwFlags; + SYSTEMTIME st; +} +alias NMDATETIMECHANGE* LPNMDATETIMECHANGE; + +struct NMCBEENDEDITW { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + WCHAR[CBEMAXSTRLEN] szText; + int iWhy; +} +alias NMCBEENDEDITW* LPNMCBEENDEDITW, PNMCBEENDEDITW; + +struct NMCBEENDEDITA { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + char[CBEMAXSTRLEN] szText; + int iWhy; +} +alias NMCBEENDEDITA* LPNMCBEENDEDITA, PNMCBEENDEDITA; + +struct COLORMAP { + COLORREF from; + COLORREF to; +} +alias COLORMAP* LPCOLORMAP; + +struct DRAGLISTINFO { + UINT uNotification; + HWND hWnd; + POINT ptCursor; +} +alias DRAGLISTINFO* LPDRAGLISTINFO; + +struct TBBUTTON { + int iBitmap; + int idCommand; + BYTE fsState; + BYTE fsStyle; + version(Win64){ + BYTE[6] bReserved; + } else { + BYTE[2] bReserved; + } + DWORD_PTR dwData; + INT_PTR iString; +} +alias TBBUTTON* PTBBUTTON, LPTBBUTTON; +alias const(TBBUTTON)* LPCTBBUTTON; + +static if (_WIN32_IE >= 0x400) { + struct TBBUTTONINFOA { + UINT cbSize = TBBUTTONINFOA.sizeof; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPSTR pszText; + int cchText; + } + alias TBBUTTONINFOA* LPTBBUTTONINFOA; + + struct TBBUTTONINFOW { + UINT cbSize = TBBUTTONINFOW.sizeof; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPWSTR pszText; + int cchText; + } + alias TBBUTTONINFOW* LPTBBUTTONINFOW; + + struct TBINSERTMARK { + int iButton; + DWORD dwFlags; + } + alias TBINSERTMARK* LPTBINSERTMARK; + + struct LVBKIMAGEA { + ULONG ulFlags; + HBITMAP hbm; + LPSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; + } + alias LVBKIMAGEA* LPLVBKIMAGEA; + + struct LVBKIMAGEW { + ULONG ulFlags; + HBITMAP hbm; + LPWSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; + } + alias LVBKIMAGEW* LPLVBKIMAGEW; +} + +/*struct TBNOTIFY { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPTSTR pszText; +} +alias TBNOTIFY* LPTBNOTIFY; +*/ + +/*struct TBSAVEPARAMS { + HKEY hkr; + LPCTSTR pszSubKey; + LPCTSTR pszValueName; +}*/ + +struct IMAGEINFO { + HBITMAP hbmImage; + HBITMAP hbmMask; + int Unused1; + int Unused2; + RECT rcImage; +} +alias IMAGEINFO* LPIMAGEINFO; + +static if (_WIN32_IE >= 0x500) { + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + UINT type; + LPVOID pvFilter; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + UINT type; + LPVOID pvFilter; + } +} else static if (_WIN32_IE >= 0x300) { + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + } +} else { + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + } +} +alias HDITEMA* LPHDITEMA; +alias HDITEMW* LPHDITEMW; + +deprecated { + alias HDITEMA HD_ITEMA; + alias HDITEMW HD_ITEMW; + //alias HDITEM HD_ITEM; fixme +} + +struct HD_LAYOUT { + RECT* prc; + WINDOWPOS* pwpos; +} +alias HD_LAYOUT* LPHDLAYOUT; +deprecated alias HD_LAYOUT HDLAYOUT; + +struct HD_HITTESTINFO { + POINT pt; + UINT flags; + int iItem; +} +alias HD_HITTESTINFO* LPHDHITTESTINFO; + +struct HD_NOTIFYA { + NMHDR hdr; + int iItem; + int iButton; + HDITEMA* pitem; +} + +struct HD_NOTIFYW { + NMHDR hdr; + int iItem; + int iButton; + HDITEMW* pitem; +} + +/* FIXME: NMHEADER structure (base for all events of the comctl controls) + is the same as HD_NOTIFY depending on the value of _WIN32_IE macro. + I'm defining both for now. */ +struct NMHEADERA { + NMHDR hdr; + int iItem; + int iButton; + HDITEMA* pitem; +} +alias NMHEADERA* LPNMHEADERA; + +struct NMHEADERW { + NMHDR hdr; + int iItem; + int iButton; + HDITEMW* pitem; +} +alias NMHEADERW* LPNMHEADERW; + +version (Unicode) { + alias NMHEADERW NMHEADER; + alias LPNMHEADERW LPNMHEADER; +} else { + alias NMHEADERA NMHEADER; + alias LPNMHEADERA LPNMHEADER; +} +// End FIXME + +struct NMHDDISPINFOA { + NMHDR hdr; + int iItem; + UINT mask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias NMHDDISPINFOA* LPNMHDDISPINFOA; + +struct NMHDDISPINFOW { + NMHDR hdr; + int iItem; + UINT mask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias NMHDDISPINFOW* LPNMHDDISPINFOW; + +struct NMCUSTOMDRAW { + NMHDR hdr; + DWORD dwDrawStage; + HDC hdc; + RECT rc; + DWORD dwItemSpec; + UINT uItemState; + LPARAM lItemlParam; +} +alias NMCUSTOMDRAW* LPNMCUSTOMDRAW; + +static if (_WIN32_IE >= 0x400) { + struct NMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + int iSubItem; + } +} else { + struct NMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + } +} +alias NMLVCUSTOMDRAW* LPNMLVCUSTOMDRAW; + +static if (_WIN32_IE >= 0x400) { + struct NMLVGETINFOTIPA { + NMHDR hdr; + DWORD dwFlags; + LPSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; + } + alias NMLVGETINFOTIPA* LPNMLVGETINFOTIPA; + + struct NMLVGETINFOTIPW { + NMHDR hdr; + DWORD dwFlags; + LPWSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; + } + alias NMLVGETINFOTIPW* LPNMLVGETINFOTIPW; +} + +static if (_WIN32_IE >= 0x400) { + struct NMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + int iLevel; + } +} else { + struct NMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + } +} +alias NMTVCUSTOMDRAW* LPNMTVCUSTOMDRAW; + +static if (_WIN32_IE >= 0x400) { + static if (_WIN32_WINNT >= 0x501) { + struct NMTBCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + HBRUSH hbrMonoDither; + HBRUSH hbrLines; + HPEN hpenLines; + COLORREF clrText; + COLORREF clrMark; + COLORREF clrTextHighlight; + COLORREF clrBtnFace; + COLORREF clrBtnHighlight; + COLORREF clrHighlightHotTrack; + RECT rcText; + int nStringBkMode; + int nHLStringBkMode; + int iListGap; + } + } else { + struct NMTBCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + HBRUSH hbrMonoDither; + HBRUSH hbrLines; + HPEN hpenLines; + COLORREF clrText; + COLORREF clrMark; + COLORREF clrTextHighlight; + COLORREF clrBtnFace; + COLORREF clrBtnHighlight; + COLORREF clrHighlightHotTrack; + RECT rcText; + int nStringBkMode; + int nHLStringBkMode; + } + } + alias NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW; + + struct NMITEMACTIVATE { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; + UINT uKeyFlags; + } + alias NMITEMACTIVATE* LPNMITEMACTIVATE; +} + +struct TBADDBITMAP { + HINSTANCE hInst; + UINT_PTR nID; +} +alias TBADDBITMAP* LPTBADDBITMAP; + +struct TBSAVEPARAMSA { + HKEY hkr; + LPCSTR pszSubKey; + LPCSTR pszValueName; +} + +struct TBSAVEPARAMSW { + HKEY hkr; + LPCWSTR pszSubKey; + LPCWSTR pszValueName; +} + +struct TBREPLACEBITMAP { + HINSTANCE hInstOld; + UINT_PTR nIDOld; + HINSTANCE hInstNew; + UINT_PTR nIDNew; + int nButtons; +} +alias TBREPLACEBITMAP* LPTBREPLACEBITMAP; + +static if (_WIN32_IE >= 0x500) { + struct NMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; + RECT rcButton; + } + + struct NMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; + RECT rcButton; + } +} else { + struct NMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; + } + + struct NMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; + } +} +alias NMTOOLBARA* LPNMTOOLBARA; +alias NMTOOLBARW* LPNMTOOLBARW; + +alias NMTOOLBARA TBNOTIFYA; +alias LPNMTOOLBARA LPTBNOTIFYA; + +alias NMTOOLBARW TBNOTIFYW; +alias LPNMTOOLBARW LPTBNOTIFYW; + +static if (_WIN32_WINNT >= 0x501) { + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + LPARAM lParam; + void* lpReserved; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + LPARAM lParam; + void* lpReserved; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, + TTTOOLINFOA_V2_SIZE = TOOLINFOA.lpReserved.offsetof, + TTTOOLINFOW_V2_SIZE = TOOLINFOW.lpReserved.offsetof, + TTTOOLINFOA_V3_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V3_SIZE = TOOLINFOW.sizeof; +} else static if (_WIN32_IE >= 0x300) { + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + LPARAM lParam; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + LPARAM lParam; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, + TTTOOLINFOA_V2_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V2_SIZE = TOOLINFOW.sizeof; +} else { + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.sizeof; +} +alias TOOLINFOA TTTOOLINFOA; +alias TOOLINFOW TTTOOLINFOW; +alias TTTOOLINFOA* LPTTTOOLINFOA, PTOOLINFOA, LPTOOLINFOA; +alias TTTOOLINFOW* LPTTTOOLINFOW, PTOOLINFOW, LPTOOLINFOW; + +struct TTHITTESTINFOA { + HWND hwnd; + POINT pt; + TOOLINFOA ti; +} +alias TTHITTESTINFOA* LPTTHITTESTINFOA, LPHITTESTINFOA; + +struct TTHITTESTINFOW { + HWND hwnd; + POINT pt; + TOOLINFOW ti; +} +alias TTHITTESTINFOW* LPTTHITTESTINFOW, LPHITTESTINFOW; + +static if (_WIN32_IE >= 0x300) { + struct NMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char[80] szText; + HINSTANCE hinst; + UINT uFlags; + LPARAM lParam; + } + + struct NMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR[80] szText; + HINSTANCE hinst; + UINT uFlags; + LPARAM lParam; + } +} else { + struct NMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char[80] szText; + HINSTANCE hinst; + UINT uFlags; + } + + struct NMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR[80] szText; + HINSTANCE hinst; + UINT uFlags; + } +} +alias NMTTDISPINFOA* LPNMTTDISPINFOA; +alias NMTTDISPINFOW* LPNMTTDISPINFOW; +alias NMTTDISPINFOA TOOLTIPTEXTA; +alias LPNMTTDISPINFOA LPTOOLTIPTEXTA; +alias NMTTDISPINFOW TOOLTIPTEXTW; +alias LPNMTTDISPINFOW LPTOOLTIPTEXTW; + +struct UDACCEL { + UINT nSec; + UINT nInc; +} +alias UDACCEL* LPUDACCEL; + +struct NMUPDOWN { + NMHDR hdr; + int iPos; + int iDelta; +} +alias NMUPDOWN* LPNMUPDOWN; + +deprecated { + alias NMUPDOWN NM_UPDOWN; + alias LPNMUPDOWN LPNM_UPDOWN; +} + +static if (_WIN32_WINNT >= 0x501) { + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + int iGroupId; + UINT cColumns; + PUINT puColumns; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + int iGroupId; + UINT cColumns; + PUINT puColumns; + } +} else static if (_WIN32_IE >= 0x300) { + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + } +} else { + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } +} +alias LVITEMA* LPLVITEMA; +alias LVITEMW* LPLVITEMW; +alias LVITEMA LV_ITEMA; +alias LVITEMW LV_ITEMW; + +struct LVFINDINFOA { + UINT flags; + LPCSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} + +struct LVFINDINFOW { + UINT flags; + LPCWSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} + +alias LVFINDINFOA* LPFINDINFOA; +alias LVFINDINFOA LV_FINDINFOA; +alias LVFINDINFOW* LPFINDINFOW; +alias LVFINDINFOW LV_FINDINFOW; + +struct NMLVFINDITEMA { + NMHDR hdr; + int iStart; + LVFINDINFOA lvfi; +} + +struct NMLVFINDITEMW { + NMHDR hdr; + int iStart; + LVFINDINFOW lvfi; +} + +alias NMLVFINDITEMA* PNMLVFINDITEMA, LPNMLVFINDITEMA; +alias NMLVFINDITEMW* PNMLVFINDITEMW, LPNMLVFINDITEMW; + +static if (_WIN32_IE >= 0x300) { + struct LVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; + int iSubItem; + } +} else { + struct LVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; + } +} +alias LVHITTESTINFO* LPLVHITTESTINFO; +alias LVHITTESTINFO LV_HITTESTINFO; + +static if (_WIN32_IE >= 0x300) { + struct LVCOLUMNA { + UINT mask; + int fmt; + int cx; + LPSTR pszText; + int cchTextMax; + int iSubItem; + int iImage; + int iOrder; + } + struct LVCOLUMNW { + UINT mask; + int fmt; + int cx; + LPWSTR pszText; + int cchTextMax; + int iSubItem; + int iImage; + int iOrder; + } +} else { + struct LVCOLUMNA { + UINT mask; + int fmt; + int cx; + LPSTR pszText; + int cchTextMax; + int iSubItem; + } + struct LVCOLUMNW { + UINT mask; + int fmt; + int cx; + LPWSTR pszText; + int cchTextMax; + int iSubItem; + } +} +alias LVCOLUMNA* LPLVCOLUMNA; +alias LVCOLUMNW* LPLVCOLUMNW; +alias LVCOLUMNA LV_COLUMNA; +alias LVCOLUMNW LV_COLUMNW; + +static if (_WIN32_WINNT >= 0x501) { + /* SG: The definitions in this static if block are from the MSDN docs. + * They are not in MinGW, but nonetheless required for macros that are. + */ + struct LVGROUP { + UINT cbSize = LVGROUP.sizeof; + UINT mask; + LPWSTR pszHeader; + int cchHeader; + LPWSTR pszFooter; + int cchFooter; + int iGroupId; + UINT stateMask; + UINT state; + UINT uAlign; + static if (_WIN32_WINNT >= 0x600) { + LPWSTR pszSubtitle; + UINT cchSubtitle; + LPWSTR pszTask; + UINT cchTask; + LPWSTR pszDescriptionTop; + UINT cchDescriptionTop; + LPWSTR pszDescriptionBottom; + UINT cchDescriptionBottom; + int iTitleImage; + int iExtendedImage; + int iFirstItem; // Read only + UINT cItems; // Read only + LPWSTR pszSubsetTitle; // NULL if group is not subset + UINT cchSubsetTitle; + } + } + alias LVGROUP* PLVGROUP; + + struct LVGROUPMETRICS { + UINT cbSize = LVGROUPMETRICS.sizeof; + UINT mask; + UINT Left; + UINT Top; + UINT Right; + UINT Bottom; + COLORREF crLeft; + COLORREF crTop; + COLORREF crRight; + COLORREF crBottom; + COLORREF crHeader; + COLORREF crFooter; + } + alias LVGROUPMETRICS* PLVGROUPMETRICS; + + struct LVINSERTMARK { + UINT cbSize = LVINSERTMARK.sizeof; + DWORD dwFlags; + int iItem; + DWORD dwReserved; + } + alias LVINSERTMARK* PLVINSERTMARK; + alias LVINSERTMARK* LPLVINSERTMARK; + + struct LVTILEINFO { + UINT cbSize = LVTILEINFO.sizeof; + int iItem; + UINT cColumns; + PUINT puColumns; + static if (_WIN32_WINNT >= 0x600) { + int* piColFmt; + } + } + alias LVTILEINFO* PLVTILEINFO; + + struct LVTILEVIEWINFO { + UINT cbSize = LVTILEVIEWINFO.sizeof; + DWORD dwMask; + DWORD dwFlags; + SIZE sizeTile; + int cLines; + RECT rcLabelMargin; + } + alias LVTILEVIEWINFO* PLVTILEVIEWINFO; + + struct LVINSERTGROUPSORTED { + PFNLVGROUPCOMPARE pfnGroupCompare; + LPVOID* pvData; + LVGROUP lvGroup; + } + alias LVINSERTGROUPSORTED* PLVINSERTGROUPSORTED; + + alias int function(INT, INT, VOID*) PFNLVGROUPCOMPARE; + + struct LVSETINFOTIP { + UINT cbSize = LVSETINFOTIP.sizeof; + DWORD dwFlags; + LPWSTR pszText; + int iItem; + int iSubItem; + HBITMAP hbmp; + } + alias LVSETINFOTIP* PLVSETINFOTIP; + + struct BUTTON_IMAGELIST { + HIMAGELIST himl; + RECT margin; + UINT uAlign; + } + alias BUTTON_IMAGELIST* PBUTTON_IMAGELIST; +} + +static if (_WIN32_WINNT >= 0x600) { + struct LVITEMINDEX + { + int iItem; + int iGroup; + }; + alias LVITEMINDEX* PLVITEMINDEX; + + struct LVFOOTERINFO + { + UINT mask; + LPWSTR pszText; + int cchTextMax; + UINT cItems; + } + alias LVFOOTERINFO* LPLVFOOTERINFO; + + struct LVFOOTERITEM + { + UINT mask; + int iItem; + LPWSTR pszText; + int cchTextMax; + UINT state; + UINT stateMask; + } + alias LVFOOTERITEM *LPLVFOOTERITEM; + + alias UINT TVITEMPART; + enum { + TVGIPR_BUTTON = 0x0001, + } +} + +alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE; + +struct NMLISTVIEW { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; +} +alias NMLISTVIEW* LPNMLISTVIEW; + +deprecated { + alias NMLISTVIEW NM_LISTVIEW; + alias LPNMLISTVIEW LPNM_LISTVIEW; +} + +struct NMLVDISPINFOA { + NMHDR hdr; + LV_ITEMA item; +} +alias NMLVDISPINFOA* LPNMLVDISPINFOA; +alias NMLVDISPINFOA LV_DISPINFOA; + +struct NMLVDISPINFOW { + NMHDR hdr; + LV_ITEMW item; +} +alias NMLVDISPINFOW* LPNMLVDISPINFOW; +alias NMLVDISPINFOW LV_DISPINFOW; + +struct LV_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} + +struct NMLVCACHEHINT { + NMHDR hdr; + int iFrom; + int iTo; +} +alias NMLVCACHEHINT* LPNMLVCACHEHINT, PNM_CACHEHINT, LPNM_CACHEHINT; +alias NMLVCACHEHINT NM_CACHEHINT; + +struct TVITEMA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} +alias TVITEMA* LPTVITEMA, LPTV_ITEMA; +alias TVITEMA TV_ITEMA; + +struct TVITEMW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} +alias TVITEMW* LPTVITEMW, LPTV_ITEMW; +alias TVITEMW TV_ITEMW; + +static if (_WIN32_IE >= 0x400) { + struct TVITEMEXA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; + } + alias TVITEMEXA* LPTVITEMEXA; + + struct TVITEMEXW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; + } + alias TVITEMEXW* LPTVITEMEXW; +} + +static if (_WIN32_IE >= 0x400) { + struct TVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + union { + TVITEMEXA itemex; + TV_ITEMA item; + } + } + + struct TVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + union { + TVITEMEXW itemex; + TV_ITEMW item; + } + } +} else { + struct TVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + TV_ITEMA item; + } + + struct TVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + TV_ITEMW item; + } +} +alias TVINSERTSTRUCTA* LPTVINSERTSTRUCTA, LPTV_INSERTSTRUCTA; +alias TVINSERTSTRUCTA TV_INSERTSTRUCTA; +alias TVINSERTSTRUCTW* LPTVINSERTSTRUCTW, LPTV_INSERTSTRUCTW; +alias TVINSERTSTRUCTW TV_INSERTSTRUCTW; + +struct TVHITTESTINFO { + POINT pt; + UINT flags; + HTREEITEM hItem; +} +alias TVHITTESTINFO* LPTVHITTESTINFO, LPTV_HITTESTINFO; +alias TVHITTESTINFO TV_HITTESTINFO; + +static if (_WIN32_WINNT >= 0x600) { + struct TVGETITEMPARTRECTINFO { + HTREEITEM hti; + RECT* prc; + TVITEMPART partID; + } +} + +alias int function(LPARAM, LPARAM, LPARAM) PFNTVCOMPARE; +struct TVSORTCB { + HTREEITEM hParent; + PFNTVCOMPARE lpfnCompare; + LPARAM lParam; +} +alias TVSORTCB* LPTVSORTCB, LPTV_SORTCB; +alias TVSORTCB TV_SORTCB; + +struct NMTREEVIEWA { + NMHDR hdr; + UINT action; + TV_ITEMA itemOld; + TV_ITEMA itemNew; + POINT ptDrag; +} +alias NMTREEVIEWA* LPNMTREEVIEWA, LPNM_TREEVIEWA; +alias NMTREEVIEWA NM_TREEVIEWA; + +struct NMTREEVIEWW { + NMHDR hdr; + UINT action; + TV_ITEMW itemOld; + TV_ITEMW itemNew; + POINT ptDrag; +} +alias NMTREEVIEWW* LPNMTREEVIEWW, LPNM_TREEVIEWW; +alias NMTREEVIEWW NM_TREEVIEWW; + +struct NMTVDISPINFOA { + NMHDR hdr; + TVITEMA item; +} +alias NMTVDISPINFOA* LPNMTVDISPINFOA; +alias NMTVDISPINFOA TV_DISPINFOA; + +struct NMTVDISPINFOW { + NMHDR hdr; + TVITEMW item; +} +alias NMTVDISPINFOW* LPNMTVDISPINFOW; +alias NMTVDISPINFOW TV_DISPINFOW; + +static if (_WIN32_IE >= 0x400) { + struct NMTVGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; + } + alias NMTVGETINFOTIPA* LPNMTVGETINFOTIPA; + + struct NMTVGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; + } + alias NMTVGETINFOTIPW* LPNMTVGETINFOTIPW; +} + +struct TV_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} + +struct TC_ITEMHEADERA { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; +} + +struct TC_ITEMHEADERW { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; +} + +static if (_WIN32_IE >= 0x300) { + struct TCITEMA { + UINT mask; + DWORD dwState; + DWORD dwStateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct TCITEMW { + UINT mask; + DWORD dwState; + DWORD dwStateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } +} else { + struct TCITEMA { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct TCITEMW { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } +} +alias TCITEMA* LPTCITEMA; +alias TCITEMA TC_ITEMA; +alias TCITEMW* LPTCITEMW; +alias TCITEMW TC_ITEMW; + +struct TCHITTESTINFO { + POINT pt; + UINT flags; +} +alias TCHITTESTINFO* LPTCHITTESTINFO, LPTC_HITTESTINFO; +alias TCHITTESTINFO TC_HITTESTINFO; + +struct TC_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} + +static if (_WIN32_IE >= 0x300) { + struct INITCOMMONCONTROLSEX { + DWORD dwSize = INITCOMMONCONTROLSEX.sizeof; + DWORD dwICC; + } + alias INITCOMMONCONTROLSEX* LPINITCOMMONCONTROLSEX; +} + +struct PBRANGE { + int iLow; + int iHigh; +} +alias PBRANGE* PPBRANGE; + +struct COLORSCHEME { + DWORD dwSize = COLORSCHEME.sizeof; + COLORREF clrBtnHighlight; + COLORREF clrBtnShadow; +} +alias COLORSCHEME* LPCOLORSCHEME; + +struct MCHITTESTINFO { + UINT cbSize = MCHITTESTINFO.sizeof; + POINT pt; + UINT uHit; + SYSTEMTIME st; +} +alias MCHITTESTINFO* PMCHITTESTINFO; + +alias DWORD MONTHDAYSTATE; +alias MONTHDAYSTATE* LPMONTHDAYSTATE; + +struct NMDAYSTATE { + NMHDR nmhdr; + SYSTEMTIME stStart; + int cDayState; + LPMONTHDAYSTATE prgDayState; +} +alias NMDAYSTATE* LPNMDAYSTATE; + +struct REBARINFO { + UINT cbSize = REBARINFO.sizeof; + UINT fMask; + HIMAGELIST himl; +} +alias REBARINFO* LPREBARINFO; + +static if (_WIN32_IE >= 0x400) { + struct REBARBANDINFOA { + UINT cbSize = REBARBANDINFOA.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; + } + + struct REBARBANDINFOW { + UINT cbSize = REBARBANDINFOW.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPWSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; + } + + enum : size_t { + REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.cyChild.offsetof, + REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.cyChild.offsetof + } +} else { + struct REBARBANDINFOA { + UINT cbSize = REBARBANDINFOA.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + } + + struct REBARBANDINFOW { + UINT cbSize = REBARBANDINFOW.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPWSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + } + + enum : size_t { + REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.sizeof, + REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.sizeof + } +} +alias REBARBANDINFOA* LPREBARBANDINFOA; +alias const(REBARBANDINFOA)* LPCREBARBANDINFOA; +alias REBARBANDINFOW* LPREBARBANDINFOW; +alias const(REBARBANDINFOW)* LPCREBARBANDINFOW; + +static if (_WIN32_IE >= 0x300) { + struct NMLVODSTATECHANGE { + NMHDR hdr; + int iFrom; + int iTo; + UINT uNewState; + UINT uOldState; + } + alias NMLVODSTATECHANGE* LPNMLVODSTATECHANGE; + + static if (_WIN32_WINNT >= 0x501) { + struct IMAGELISTDRAWPARAMS { + DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; + HIMAGELIST himl; + int i; + HDC hdcDst; + int x; + int y; + int cx; + int cy; + int xBitmap; + int yBitmap; + COLORREF rgbBk; + COLORREF rgbFg; + UINT fStyle; + DWORD dwRop; + DWORD fState; + DWORD Frame; + COLORREF crEffect; + } + } else { + struct IMAGELISTDRAWPARAMS { + DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; + HIMAGELIST himl; + int i; + HDC hdcDst; + int x; + int y; + int cx; + int cy; + int xBitmap; + int yBitmap; + COLORREF rgbBk; + COLORREF rgbFg; + UINT fStyle; + DWORD dwRop; + } + } + alias IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS; +} + +static if (_WIN32_IE >= 0x400) { + struct NMREBARCHILDSIZE { + NMHDR hdr; + UINT uBand; + UINT wID; + RECT rcChild; + RECT rcBand; + } + alias NMREBARCHILDSIZE* LPNMREBARCHILDSIZE; + + struct NMREBAR { + NMHDR hdr; + DWORD dwMask; + UINT uBand; + UINT fStyle; + UINT wID; + LPARAM lParam; + } + alias NMREBAR* LPNMREBAR; + + struct NMRBAUTOSIZE { + NMHDR hdr; + BOOL fChanged; + RECT rcTarget; + RECT rcActual; + } + alias NMRBAUTOSIZE* LPNMRBAUTOSIZE; + + static if (_WIN32_IE >= 0x500) { + struct NMREBARCHEVRON { + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + RECT rc; + LPARAM lParamNM; + } + alias NMREBARCHEVRON* LPNMREBARCHEVRON; + } + + struct RBHITTESTINFO { + POINT pt; + UINT flags; + int iBand; + } + alias RBHITTESTINFO* LPRBHITTESTINFO; +} + +mixin DECLARE_HANDLE!("HDSA"); +mixin DECLARE_HANDLE!("HDPA"); + +version (Unicode) { + alias HDITEMW HDITEM; + alias LPHDITEMW LPHDITEM; + alias TOOLINFOW TOOLINFO; + alias TOOLINFOW* PTOOLINFO, LPTOOLINFO; + alias TTHITTESTINFOW TTHITTESTINFO; + alias TTHITTESTINFOW* LPHITTESTINFO, LPTTHITTESTINFO; + alias TOOLTIPTEXTW TOOLTIPTEXT; + alias TOOLTIPTEXTW* LPTOOLTIPTEXT; + alias NMTTDISPINFOW NMTTDISPINFO; + alias NMTTDISPINFOW* LPNMTTDISPINFO; + alias TV_ITEMW TV_ITEM; + alias TV_ITEMW* LPTV_ITEM; + alias TVITEMW TVITEM; + alias TVITEMW* LPTVITEM; + + static if (_WIN32_IE >= 0x400) { + alias TVITEMEXW TVITEMEX; + alias TVITEMEXW* LPTVITEMEX; + } + + alias TV_INSERTSTRUCTW TV_INSERTSTRUCT; + alias TV_INSERTSTRUCTW* LPTV_INSERTSTRUCT; + alias TVINSERTSTRUCTW TVINSERTSTRUCT; + alias TVINSERTSTRUCTW* LPTVINSERTSTRUCT; + alias NM_TREEVIEWW NM_TREEVIEW; + alias NM_TREEVIEWW* LPNM_TREEVIEW; + alias NMTREEVIEWW NMTREEVIEW; + alias NMTREEVIEWW* LPNMTREEVIEW; + alias NMHDDISPINFOW NMHDDISPINFO; + alias NMHDDISPINFOW* LPNMHDDISPINFO; + + alias ACM_OPENW ACM_OPEN; + alias COMBOBOXEXITEMW COMBOBOXEXITEM; + alias PCOMBOBOXEXITEMW PCOMBOBOXEXITEM; + //alias PCCOMBOBOXEXITEMW PCCOMBOBOXEXITEM; fixme + alias CBEM_INSERTITEMW CBEM_INSERTITEM; + alias CBEM_SETITEMW CBEM_SETITEM; + alias CBEM_GETITEMW CBEM_GETITEM; + alias CBEN_ENDEDITW CBEN_ENDEDIT; + alias NMCBEENDEDITW NMCBEENDEDIT; + alias LPNMCBEENDEDITW LPNMCBEENDEDIT; + alias PNMCBEENDEDITW PNMCBEENDEDIT; + + static if (_WIN32_IE >= 0x400) { + alias NMCOMBOBOXEXW NMCOMBOBOXEX; + alias PNMCOMBOBOXEXW PNMCOMBOBOXEX; + alias CBEN_GETDISPINFOW CBEN_GETDISPINFO; + alias CBEN_DRAGBEGINW CBEN_DRAGBEGIN; + alias NMCBEDRAGBEGINW NMCBEDRAGBEGIN; + alias LPNMCBEDRAGBEGINW LPNMCBEDRAGBEGIN; + alias PNMCBEDRAGBEGINW PNMCBEDRAGBEGIN; + } + + alias SB_GETTEXTW SB_GETTEXT; + alias SB_SETTEXTW SB_SETTEXT; + alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; + alias HDM_INSERTITEMW HDM_INSERTITEM; + alias HDM_GETITEMW HDM_GETITEM; + alias HDM_SETITEMW HDM_SETITEM; + alias HDN_ITEMCHANGINGW HDN_ITEMCHANGING; + alias HDN_ITEMCHANGEDW HDN_ITEMCHANGED; + alias HDN_ITEMCLICKW HDN_ITEMCLICK; + alias HDN_ITEMDBLCLICKW HDN_ITEMDBLCLICK; + alias HDN_DIVIDERDBLCLICKW HDN_DIVIDERDBLCLICK; + alias HDN_BEGINTRACKW HDN_BEGINTRACK; + alias HDN_ENDTRACKW HDN_ENDTRACK; + alias HDN_TRACKW HDN_TRACK; + + static if (_WIN32_IE >= 0x300) { + alias HDN_GETDISPINFOW HDN_GETDISPINFO; + } + + alias HD_NOTIFYW HD_NOTIFY; + alias TBSAVEPARAMSW TBSAVEPARAMS; + alias TB_GETBUTTONTEXTW TB_GETBUTTONTEXT; + alias TB_SAVERESTOREW TB_SAVERESTORE; + alias TB_ADDSTRINGW TB_ADDSTRING; + + static if (_WIN32_IE >= 0x400) { + alias TBN_GETBUTTONINFOW TBN_GETBUTTONINFO; // fixme + alias TB_GETBUTTONINFOW TB_GETBUTTONINFO; + alias TB_SETBUTTONINFOW TB_SETBUTTONINFO; + alias TB_INSERTBUTTONW TB_INSERTBUTTON; + alias TB_ADDBUTTONSW TB_ADDBUTTONS; + alias TB_MAPACCELERATORW TB_MAPACCELERATOR; + alias TB_GETSTRINGW TB_GETSTRING; + alias TBBUTTONINFOW TBBUTTONINFO; + alias LPTBBUTTONINFOW LPTBBUTTONINFO; + alias TBN_GETDISPINFOW TBN_GETDISPINFO; + alias NMTBDISPINFOW NMTBDISPINFO; + alias LPNMTBDISPINFOW LPNMTBDISPINFO; + alias NMTBGETINFOTIPW NMTBGETINFOTIP; + alias LPNMTBGETINFOTIPW LPNMTBGETINFOTIP; + } + + alias TBNOTIFYW TBNOTIFY; + alias LPTBNOTIFYW LPTBNOTIFY; + alias NMTOOLBARW NMTOOLBAR; + alias LPNMTOOLBARW LPNMTOOLBAR; + alias TTM_ADDTOOLW TTM_ADDTOOL; + alias TTM_DELTOOLW TTM_DELTOOL; + alias TTM_NEWTOOLRECTW TTM_NEWTOOLRECT; + alias TTM_GETTOOLINFOW TTM_GETTOOLINFO; + alias TTM_SETTOOLINFOW TTM_SETTOOLINFO; + alias TTM_HITTESTW TTM_HITTEST; + alias TTM_GETTEXTW TTM_GETTEXT; + alias TTM_UPDATETIPTEXTW TTM_UPDATETIPTEXT; + alias TTM_ENUMTOOLSW TTM_ENUMTOOLS; + alias TTM_GETCURRENTTOOLW TTM_GETCURRENTTOOL; + alias TTN_NEEDTEXTW TTN_NEEDTEXT; + alias TTN_GETDISPINFOW TTN_GETDISPINFO; + //alias SB_GETTEXTW SB_GETTEXT; + //alias SB_SETTEXTW SB_SETTEXT; + //alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; + alias LV_ITEMW LV_ITEM; + alias LVITEMW LVITEM; + alias LVITEM* LPLVITEM; + alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK; + + static if (_WIN32_IE >= 0x400) { + alias LVBKIMAGEW LVBKIMAGE; + alias LPLVBKIMAGEW LPLVBKIMAGE; + alias LVM_SETBKIMAGEW LVM_SETBKIMAGE; + alias LVM_GETBKIMAGEW LVM_GETBKIMAGE; + } + + alias LVM_GETITEMW LVM_GETITEM; + alias LVM_SETITEMW LVM_SETITEM; + alias LVM_INSERTITEMW LVM_INSERTITEM; + alias LV_FINDINFOW LV_FINDINFO; + alias LVFINDINFOW LVFINDINFO; + alias LPFINDINFOW LPFINDINFO; + alias NMLVFINDITEMW NMLVFINDITEM; + alias PNMLVFINDITEMW PNMLVFINDITEM; + alias LPNMLVFINDITEMW LPNMLVFINDITEM; + alias LVM_FINDITEMW LVM_FINDITEM; + alias LVM_GETSTRINGWIDTHW LVM_GETSTRINGWIDTH; + alias LVM_EDITLABELW LVM_EDITLABEL; + alias LV_COLUMNW LV_COLUMN; + alias LVCOLUMNW LVCOLUMN; + alias LVCOLUMNW* LPLVCOLUMN; + alias LVM_GETCOLUMNW LVM_GETCOLUMN; + alias LVM_SETCOLUMNW LVM_SETCOLUMN; + alias LVM_INSERTCOLUMNW LVM_INSERTCOLUMN; + alias LVM_GETITEMTEXTW LVM_GETITEMTEXT; + alias LVM_SETITEMTEXTW LVM_SETITEMTEXT; + alias LVM_GETISEARCHSTRINGW LVM_GETISEARCHSTRING; + alias LVN_BEGINLABELEDITW LVN_BEGINLABELEDIT; + alias LVN_ENDLABELEDITW LVN_ENDLABELEDIT; + alias LVN_GETDISPINFOW LVN_GETDISPINFO; + alias LVN_SETDISPINFOW LVN_SETDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias LVN_GETINFOTIPW LVN_GETINFOTIP; + alias NMLVGETINFOTIPW NMLVGETINFOTIP; + alias LPNMLVGETINFOTIPW LPNMLVGETINFOTIP; + } + + alias LV_DISPINFOW LV_DISPINFO; + alias NMLVDISPINFOW NMLVDISPINFO; + alias LPNMLVDISPINFOW LPNMLVDISPINFO; + alias TVM_INSERTITEMW TVM_INSERTITEM; + alias TVM_GETITEMW TVM_GETITEM; + alias TVM_SETITEMW TVM_SETITEM; + alias TVM_EDITLABELW TVM_EDITLABEL; + alias TVM_GETISEARCHSTRINGW TVM_GETISEARCHSTRING; + alias NMTVDISPINFOW TV_DISPINFO; + alias NMTVDISPINFOW NMTVDISPINFO; + alias LPNMTVDISPINFOW LPNMTVDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias NMTVGETINFOTIPW NMTVGETINFOTIP; + alias LPNMTVGETINFOTIPW LPNMTVGETINFOTIP; + alias TVN_GETINFOTIPW TVN_GETINFOTIP; + } + + alias TVN_SELCHANGINGW TVN_SELCHANGING; + alias TVN_SELCHANGEDW TVN_SELCHANGED; + alias TVN_GETDISPINFOW TVN_GETDISPINFO; + alias TVN_SETDISPINFOW TVN_SETDISPINFO; + alias TVN_ITEMEXPANDINGW TVN_ITEMEXPANDING; + alias TVN_ITEMEXPANDEDW TVN_ITEMEXPANDED; + alias TVN_BEGINDRAGW TVN_BEGINDRAG; + alias TVN_BEGINRDRAGW TVN_BEGINRDRAG; + alias TVN_DELETEITEMW TVN_DELETEITEM; + alias TVN_BEGINLABELEDITW TVN_BEGINLABELEDIT; + alias TVN_ENDLABELEDITW TVN_ENDLABELEDIT; + alias TC_ITEMHEADERW TC_ITEMHEADER; + alias TC_ITEMW TC_ITEM; + alias TCITEMW TCITEM; + alias LPTCITEMW LPTCITEM; + alias TCM_GETITEMW TCM_GETITEM; + alias TCM_SETITEMW TCM_SETITEM; + alias TCM_INSERTITEMW TCM_INSERTITEM; + alias CreateStatusWindowW CreateStatusWindow; + alias DrawStatusTextW DrawStatusText; + alias ImageList_LoadImageW ImageList_LoadImage; + alias DTM_SETFORMATW DTM_SETFORMAT; + alias DTN_USERSTRINGW DTN_USERSTRING; + alias DTN_WMKEYDOWNW DTN_WMKEYDOWN; + alias DTN_FORMATW DTN_FORMAT; + alias DTN_FORMATQUERYW DTN_FORMATQUERY; + alias REBARBANDINFOW REBARBANDINFO; + alias REBARBANDINFO* LPREBARBANDINFO; + alias LPCREBARBANDINFOW LPCREBARBANDINFO; + alias REBARBANDINFOW_V3_SIZE REBARBANDINFO_V3_SIZE; + alias RB_INSERTBANDW RB_INSERTBAND; + alias RB_SETBANDINFOW RB_SETBANDINFO; +} else { + alias HDITEMA HDITEM; + alias LPHDITEMA LPHDITEM; + alias TOOLINFOA TOOLINFO; + alias TOOLINFOA* PTOOLINFO, LPTOOLINFO; + alias TTHITTESTINFOA TTHITTESTINFO; + alias TTHITTESTINFOA* LPHITTESTINFO, LPTTHITTESTINFO; + alias TOOLTIPTEXTA TOOLTIPTEXT; + alias TOOLTIPTEXTA* LPTOOLTIPTEXT; + alias NMTTDISPINFOA NMTTDISPINFO; + alias NMTTDISPINFOA* LPNMTTDISPINFO; + alias TV_ITEMA TV_ITEM; + alias TV_ITEMA* LPTV_ITEM; + alias TVITEMA TVITEM; + alias TVITEMA* LPTVITEM; + + static if (_WIN32_IE >= 0x400) { + alias TVITEMEXA TVITEMEX; + alias TVITEMEXA* LPTVITEMEX; + } + + alias TV_INSERTSTRUCTA TV_INSERTSTRUCT; + alias TV_INSERTSTRUCTA* LPTV_INSERTSTRUCT; + alias TVINSERTSTRUCTA TVINSERTSTRUCT; + alias TVINSERTSTRUCTA* LPTVINSERTSTRUCT; + alias NM_TREEVIEWA NM_TREEVIEW; + alias NM_TREEVIEWA* LPNM_TREEVIEW; + alias NMTREEVIEWA NMTREEVIEW; + alias NMTREEVIEWA* LPNMTREEVIEW; + alias NMHDDISPINFOW NMHDDISPINFO; + alias NMHDDISPINFOW* LPNMHDDISPINFO; + + alias ACM_OPENA ACM_OPEN; + alias COMBOBOXEXITEMA COMBOBOXEXITEM; + alias PCOMBOBOXEXITEMA PCOMBOBOXEXITEM; + //alias PCCOMBOBOXEXITEMA PCCOMBOBOXEXITEM; fixme + alias CBEM_INSERTITEMA CBEM_INSERTITEM; + alias CBEM_SETITEMA CBEM_SETITEM; + alias CBEM_GETITEMA CBEM_GETITEM; + alias CBEN_ENDEDITA CBEN_ENDEDIT; + alias NMCBEENDEDITA NMCBEENDEDIT; + alias LPNMCBEENDEDITA LPNMCBEENDEDIT; + alias PNMCBEENDEDITA PNMCBEENDEDIT; + + static if (_WIN32_IE >= 0x400) { + alias TB_GETBUTTONINFOA TB_GETBUTTONINFO; + alias TB_SETBUTTONINFOA TB_SETBUTTONINFO; + alias TB_INSERTBUTTONA TB_INSERTBUTTON; + alias TB_ADDBUTTONSA TB_ADDBUTTONS; + alias TB_MAPACCELERATORA TB_MAPACCELERATOR; + alias TB_GETSTRINGA TB_GETSTRING; + alias NMCOMBOBOXEXA NMCOMBOBOXEX; + alias PNMCOMBOBOXEXA PNMCOMBOBOXEX; + alias CBEN_DRAGBEGINA CBEN_DRAGBEGIN; + alias CBEN_GETDISPINFOA CBEN_GETDISPINFO; + alias NMCBEDRAGBEGINA NMCBEDRAGBEGIN; + alias LPNMCBEDRAGBEGINA LPNMCBEDRAGBEGIN; + alias PNMCBEDRAGBEGINA PNMCBEDRAGBEGIN; + alias TBN_GETDISPINFOA TBN_GETDISPINFO; + alias NMTBDISPINFOA NMTBDISPINFO; + alias LPNMTBDISPINFOA LPNMTBDISPINFO; + alias NMTBGETINFOTIPA NMTBGETINFOTIP; + alias LPNMTBGETINFOTIPA LPNMTBGETINFOTIP; + } + + alias SB_GETTEXTA SB_GETTEXT; + alias SB_SETTEXTA SB_SETTEXT; + alias SB_GETTEXTLENGTHA SB_GETTEXTLENGTH; + alias HDM_INSERTITEMA HDM_INSERTITEM; + alias HDM_GETITEMA HDM_GETITEM; + alias HDM_SETITEMA HDM_SETITEM; + alias HDN_ITEMCHANGINGA HDN_ITEMCHANGING; + alias HDN_ITEMCHANGEDA HDN_ITEMCHANGED; + alias HDN_ITEMCLICKA HDN_ITEMCLICK; + alias HDN_ITEMDBLCLICKA HDN_ITEMDBLCLICK; + alias HDN_DIVIDERDBLCLICKA HDN_DIVIDERDBLCLICK; + alias HDN_BEGINTRACKA HDN_BEGINTRACK; + alias HDN_ENDTRACKA HDN_ENDTRACK; + alias HDN_TRACKA HDN_TRACK; + + static if (_WIN32_IE >= 0x300) { + alias HDN_GETDISPINFOA HDN_GETDISPINFO; + } + + alias HD_NOTIFYA HD_NOTIFY; + alias TBSAVEPARAMSA TBSAVEPARAMS; + alias TB_GETBUTTONTEXTA TB_GETBUTTONTEXT; + alias TB_SAVERESTOREA TB_SAVERESTORE; + alias TB_ADDSTRINGA TB_ADDSTRING; + alias TBN_GETBUTTONINFOA TBN_GETBUTTONINFO; + + static if (_WIN32_IE >= 0x400) { + alias TBBUTTONINFOA TBBUTTONINFO; + alias LPTBBUTTONINFOA LPTBBUTTONINFO; + } + + alias TBNOTIFYA TBNOTIFY; + alias LPTBNOTIFYA LPTBNOTIFY; + alias NMTOOLBARA NMTOOLBAR; + alias LPNMTOOLBARA LPNMTOOLBAR; + alias TTM_ADDTOOLA TTM_ADDTOOL; + alias TTM_DELTOOLA TTM_DELTOOL; + alias TTM_NEWTOOLRECTA TTM_NEWTOOLRECT; + alias TTM_GETTOOLINFOA TTM_GETTOOLINFO; + alias TTM_SETTOOLINFOA TTM_SETTOOLINFO; + alias TTM_HITTESTA TTM_HITTEST; + alias TTM_GETTEXTA TTM_GETTEXT; + alias TTM_UPDATETIPTEXTA TTM_UPDATETIPTEXT; + alias TTM_ENUMTOOLSA TTM_ENUMTOOLS; + alias TTM_GETCURRENTTOOLA TTM_GETCURRENTTOOL; + alias TTN_NEEDTEXTA TTN_NEEDTEXT; + alias TTN_GETDISPINFOA TTN_GETDISPINFO; + alias LV_ITEMA LV_ITEM; + alias LVITEMA LVITEM; + alias LVITEM* LPLVITEM; + alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK; + + static if (_WIN32_IE >= 0x400) { + alias LVBKIMAGEA LVBKIMAGE; + alias LPLVBKIMAGEA LPLVBKIMAGE; + alias LVM_SETBKIMAGEA LVM_SETBKIMAGE; + alias LVM_GETBKIMAGEA LVM_GETBKIMAGE; + } + + alias LVM_GETITEMA LVM_GETITEM; + alias LVM_SETITEMA LVM_SETITEM; + alias LVM_INSERTITEMA LVM_INSERTITEM; + alias LV_FINDINFOA LV_FINDINFO; + alias LVFINDINFOA LVFINDINFO; + alias LPFINDINFOA LPFINDINFO; + alias NMLVFINDITEMA NMLVFINDITEM; + alias PNMLVFINDITEMA PNMLVFINDITEM; + alias LPNMLVFINDITEMA LPNMLVFINDITEM; + alias LVM_FINDITEMA LVM_FINDITEM; + alias LVM_GETSTRINGWIDTHA LVM_GETSTRINGWIDTH; + alias LVM_EDITLABELA LVM_EDITLABEL; + alias LV_COLUMNA LV_COLUMN; + alias LVCOLUMNA LVCOLUMN; + alias LVCOLUMNA* LPLVCOLUMN; + alias LVM_GETCOLUMNA LVM_GETCOLUMN; + alias LVM_SETCOLUMNA LVM_SETCOLUMN; + alias LVM_INSERTCOLUMNA LVM_INSERTCOLUMN; + alias LVM_GETITEMTEXTA LVM_GETITEMTEXT; + alias LVM_SETITEMTEXTA LVM_SETITEMTEXT; + alias LVM_GETISEARCHSTRINGA LVM_GETISEARCHSTRING; + alias LVN_BEGINLABELEDITA LVN_BEGINLABELEDIT; + alias LVN_ENDLABELEDITA LVN_ENDLABELEDIT; + alias LVN_GETDISPINFOA LVN_GETDISPINFO; + alias LVN_SETDISPINFOA LVN_SETDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias LVN_GETINFOTIPA LVN_GETINFOTIP; + alias NMLVGETINFOTIPA NMLVGETINFOTIP; + alias LPNMLVGETINFOTIPA LPNMLVGETINFOTIP; + } + + alias LV_DISPINFOA LV_DISPINFO; + alias NMLVDISPINFOA NMLVDISPINFO; + alias LPNMLVDISPINFOA LPNMLVDISPINFO; + alias TVM_INSERTITEMA TVM_INSERTITEM; + alias TVM_GETITEMA TVM_GETITEM; + alias TVM_SETITEMA TVM_SETITEM; + alias TVM_EDITLABELA TVM_EDITLABEL; + alias TVM_GETISEARCHSTRINGA TVM_GETISEARCHSTRING; + alias NMTVDISPINFOA TV_DISPINFO; + alias NMTVDISPINFOA NMTVDISPINFO; + alias LPNMTVDISPINFOA LPNMTVDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias NMTVGETINFOTIPA NMTVGETINFOTIP; + alias LPNMTVGETINFOTIPA LPNMTVGETINFOTIP; + alias TVN_GETINFOTIPA TVN_GETINFOTIP; + } + + alias TVN_SELCHANGINGA TVN_SELCHANGING; + alias TVN_SELCHANGEDA TVN_SELCHANGED; + alias TVN_GETDISPINFOA TVN_GETDISPINFO; + alias TVN_SETDISPINFOA TVN_SETDISPINFO; + alias TVN_ITEMEXPANDINGA TVN_ITEMEXPANDING; + alias TVN_ITEMEXPANDEDA TVN_ITEMEXPANDED; + alias TVN_BEGINDRAGA TVN_BEGINDRAG; + alias TVN_BEGINRDRAGA TVN_BEGINRDRAG; + alias TVN_DELETEITEMA TVN_DELETEITEM; + alias TVN_BEGINLABELEDITA TVN_BEGINLABELEDIT; + alias TVN_ENDLABELEDITA TVN_ENDLABELEDIT; + alias TC_ITEMHEADERA TC_ITEMHEADER; + alias TC_ITEMA TC_ITEM; + alias TCITEMA TCITEM; + alias LPTCITEMA LPTCITEM; + alias TCM_GETITEMA TCM_GETITEM; + alias TCM_SETITEMA TCM_SETITEM; + alias TCM_INSERTITEMA TCM_INSERTITEM; + alias CreateStatusWindowA CreateStatusWindow; + alias DrawStatusTextA DrawStatusText; + alias ImageList_LoadImageA ImageList_LoadImage; + alias DTM_SETFORMATA DTM_SETFORMAT; + alias DTN_USERSTRINGA DTN_USERSTRING; + alias DTN_WMKEYDOWNA DTN_WMKEYDOWN; + alias DTN_FORMATA DTN_FORMAT; + alias DTN_FORMATQUERYA DTN_FORMATQUERY; + alias REBARBANDINFOA REBARBANDINFO; + alias REBARBANDINFOA* LPREBARBANDINFO; + alias LPCREBARBANDINFOA LPCREBARBANDINFO; + alias REBARBANDINFOA_V3_SIZE REBARBANDINFO_V3_SIZE; + alias RB_INSERTBANDA RB_INSERTBAND; + alias RB_SETBANDINFOA RB_SETBANDINFO; +} + + +alias INT function(PVOID, PVOID) PFNDPAENUMCALLBACK; +alias INT function(PVOID, PVOID) PFNDSAENUMCALLBACK; +alias INT function(PVOID, PVOID, LPARAM) PFNDPACOMPARE; + +static if (_WIN32_WINNT >= 0x501) { + extern (Windows) + alias LRESULT function(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR) + SUBCLASSPROC; + + struct LITEM { + UINT mask; + int iLink; + UINT state; + UINT stateMask; + WCHAR[MAX_LINKID_TEXT] szID; + WCHAR[L_MAX_URL_LENGTH] szUrl; + } + alias LITEM* PLITEM; + + struct LHITTESTINFO { + POINT pt; + LITEM item; + } + alias LHITTESTINFO* PLHITTESTINFO; + + struct NMLINK { + NMHDR hdr; + LITEM item; + } + alias NMLINK* PNMLINK; +} + +uint INDEXTOOVERLAYMASK(uint i) { return i << 8; } +uint INDEXTOSTATEIMAGEMASK(uint i) { return i << 12; } + +template HANDLE_WM_NOTIFY(R) { + R HANDLE_WM_NOTIFY(HWND hwnd, WPARAM wParam, LPARAM lParam, + R function(HWND, int, NMHDR*) fn) { + return fn(hwnd, wParam, cast(NMHDR*) lParam); + } +} +int FORWARD_WM_NOTIFY(HWND hwnd, int idFrom, NMHDR* pnmhdr, + int function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) fn) { + return fn(hwnd, WM_NOTIFY, idFrom, cast(LPARAM) pnmhdr); +} + +//#define CCSIZEOF_STRUCT(s, m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m)) + +LPARAM MAKEIPADDRESS(ubyte b1, ubyte b2, ubyte b3, ubyte b4) { + return (cast(DWORD) b1 << 24) + | (cast(DWORD) b2 << 16) + | (cast(DWORD) b3 << 8) + | (cast(DWORD) b4); +} + +LPARAM MAKEIPRANGE(ubyte low, ubyte high) { + return (cast(int) high << 8) | low; +} + +ubyte FIRST_IPADDRESS(LPARAM x) { + return cast(ubyte) (x >> 24); +} + +ubyte SECOND_IPADDRESS(LPARAM x) { + return cast(ubyte) (x >> 16); +} + +ubyte THIRD_IPADDRESS(LPARAM x) { + return cast(ubyte) (x >> 8); +} + +ubyte FOURTH_IPADDRESS(LPARAM x) { + return cast(ubyte) x; +} + +HWND Animate_Create(HWND hwndP, UINT id, DWORD dwStyle, + HINSTANCE hInstance) { + return CreateWindow(cast(TCHAR*)ANIMATE_CLASS.ptr, null, dwStyle, 0, 0, 0, 0, hwndP, + cast(HMENU) id, hInstance, null); +} + +BOOL Animate_Open(HWND hwnd, LPTSTR szName) { + return cast(BOOL) SendMessage(hwnd, ACM_OPEN, 0, cast(LPARAM) szName); +} + +BOOL Animate_OpenEx(HWND hwnd, HINSTANCE hInst, LPTSTR szName) { + return cast(BOOL) SendMessage(hwnd, ACM_OPEN, cast(WPARAM) hInst, + cast(LPARAM) szName); +} + +BOOL Animate_Play(HWND hwnd, int from, int to, int rep) { + return cast(BOOL) SendMessage(hwnd, ACM_PLAY, rep, + MAKELONG(cast(ushort) from, cast(ushort) to)); +} + +BOOL Animate_Stop(HWND hwnd) { + return cast(BOOL) SendMessage(hwnd, ACM_STOP, 0, 0); +} + +BOOL Animate_Close(HWND hwnd) { + return Animate_Open(hwnd, null); +} + +BOOL Animate_Seek(HWND hwnd, int frame) { + return Animate_Play(hwnd, frame, frame, 1); +} + +extern (Windows) { + HBITMAP CreateMappedBitmap(HINSTANCE, INT_PTR, UINT, LPCOLORMAP, int); + HWND CreateStatusWindowA(LONG, LPCSTR, HWND, UINT); + HWND CreateStatusWindowW(LONG, LPCWSTR, HWND, UINT); + HWND CreateToolbarEx(HWND, DWORD, UINT, int, HINSTANCE, UINT_PTR, + LPCTBBUTTON, int, int, int, int, int, UINT); + HWND CreateUpDownControl(DWORD, int, int, int, int, HWND, int, HINSTANCE, + HWND, int, int, int); +} + +HWND DateTime_GetMonthCal(HWND hwnd) { + return cast(HWND) SendMessage(hwnd, DTM_GETMONTHCAL, 0, 0); +} + +COLORREF DateTime_GetMonthCalColor(HWND hwnd, int iColor) { + return cast(COLORREF) SendMessage(hwnd, DTM_GETMCCOLOR, iColor, 0); +} + +HFONT DateTime_GetMonthCalFont(HWND hwnd) { + return cast(HFONT) SendMessage(hwnd, DTM_GETMCFONT, 0, 0); +} + +DWORD DateTime_GetRange(HWND hwnd, LPSYSTEMTIME lpSysTimeArray) { + return cast(DWORD) SendMessage(hwnd, DTM_GETRANGE, 0, cast(LPARAM) lpSysTimeArray); +} + +DWORD DateTime_GetSystemtime(HWND hwnd, LPSYSTEMTIME lpSysTime) { + return cast(DWORD) SendMessage(hwnd, DTM_GETSYSTEMTIME, 0, cast(LPARAM) lpSysTime); +} + +BOOL DateTime_SetFormat(HWND hwnd, LPCTSTR lpszFormat) { + return cast(BOOL) SendMessage(hwnd, DTM_SETFORMAT, 0, + cast(LPARAM) lpszFormat); +} + +LRESULT DateTime_SetMonthCalColor(HWND hwnd, int iColor, COLORREF clr) { + return SendMessage(hwnd, DTM_SETMCCOLOR, cast(WPARAM) iColor, + cast(LPARAM) clr); +} + +void DateTime_SetMonthCalFont(HWND hwnd, HFONT hfont, BOOL fRedraw) { + SendMessage(hwnd, DTM_SETMCFONT, cast(WPARAM) hfont, fRedraw); +} + +BOOL DateTime_SetRange(HWND hwnd, WPARAM flags, LPSYSTEMTIME lpSysTimeArray) { + return cast(BOOL) SendMessage(hwnd, DTM_SETRANGE, flags, + cast(LPARAM) lpSysTimeArray); +} + +BOOL DateTime_SetSystemtime(HWND hwnd, WPARAM flag, LPSYSTEMTIME lpSysTime) { + return cast(BOOL) SendMessage(hwnd, DTM_SETSYSTEMTIME, flag, + cast(LPARAM) lpSysTime); +} + +extern (Windows) { + void DrawInsert(HWND, HWND, int); + void DrawStatusTextA(HDC, LPRECT, LPCSTR, UINT); + void DrawStatusTextW(HDC, LPRECT, LPCWSTR, UINT); + void GetEffectiveClientRect(HWND, LPRECT, LPINT); +} + +int Header_GetItemCount(HWND w) { + return cast(int) SendMessage(w, HDM_GETITEMCOUNT, 0, 0); +} + +int Header_InsertItem(HWND w, int i, const(HDITEM)* phdi) { + return cast(int) SendMessage(w, HDM_INSERTITEM, i, cast(LPARAM) phdi); +} + +BOOL Header_DeleteItem(HWND w, int i) { + return cast(BOOL) SendMessage(w, HDM_DELETEITEM, i, 0); +} + +BOOL Header_GetItem(HWND w, int i, LPHDITEM phdi) { + return cast(BOOL) SendMessage(w, HDM_GETITEM, i, cast(LPARAM) phdi); +} + +BOOL Header_SetItem(HWND w, int i, const(HDITEM)* phdi) { + return cast(BOOL) SendMessage(w, HDM_SETITEM, i, cast(LPARAM) phdi); +} + +BOOL Header_Layout(HWND w, LPHDLAYOUT playout) { + return cast(BOOL) SendMessage(w, HDM_LAYOUT, 0, cast(LPARAM) playout); +} + +static if (_WIN32_IE >= 0x300) { + int Header_OrderToIndex(HWND w, int i) { + return cast(int) SendMessage(w, HDM_ORDERTOINDEX, i, 0); + } + + BOOL Header_GetItemRect(HWND w, int i, RECT* r) { + return cast(BOOL) SendMessage(w, HDM_GETITEMRECT, i, cast(LPARAM) r); + } + + BOOL Header_GetOrderArray(HWND w, int iSize, LPINT lpiArray) { + return cast(BOOL) SendMessage(w, HDM_GETORDERARRAY, iSize, + cast(LPARAM) lpiArray); + } + + BOOL Header_SetOrderArray(HWND w, int iSize, LPINT lpiArray) { + return cast(BOOL) SendMessage(w, HDM_SETORDERARRAY, iSize, + cast(LPARAM) lpiArray); + } + + HIMAGELIST Header_CreateDragImage(HWND w, int i) { + return cast(HIMAGELIST) SendMessage(w, HDM_CREATEDRAGIMAGE, i, 0); + } + + HIMAGELIST Header_SetImageList(HWND w, HIMAGELIST himl) { + return cast(HIMAGELIST) SendMessage(w, HDM_SETIMAGELIST, 0, + cast(LPARAM) himl); + } + + HIMAGELIST Header_GetImageList(HWND w) { + return cast(HIMAGELIST) SendMessage(w, HDM_GETIMAGELIST, 0, 0); + } +} + +static if (_WIN32_IE >= 0x400) { + BOOL Header_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, HDM_GETUNICODEFORMAT, 0, 0); + } + + BOOL Header_SetUnicodeFormat(HWND w, BOOL fUnicode) { + return cast(BOOL) SendMessage(w, HDM_SETUNICODEFORMAT, fUnicode, 0); + } +} + +extern (Windows) { + HDSA DSA_Create(INT, INT); + BOOL DSA_Destroy(HDSA); + VOID DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, PVOID); + PVOID DSA_GetItemPtr(HDSA, INT); + INT DSA_InsertItem(HDSA, INT, PVOID); + HDPA DPA_Create(INT); + BOOL DPA_Destroy(HDPA); + PVOID DPA_DeletePtr(HDPA, INT); + BOOL DPA_DeleteAllPtrs(HDPA); + VOID DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); + VOID DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); + BOOL DPA_SetPtr(HDPA, INT, PVOID); + INT DPA_InsertPtr(HDPA, INT, PVOID); + PVOID DPA_GetPtr(HDPA, INT_PTR); + BOOL DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM); + INT DPA_Search(HDPA, PVOID, INT, PFNDPACOMPARE, LPARAM, UINT); + BOOL Str_SetPtrW(LPWSTR*, LPCWSTR); + + static if (_WIN32_IE >= 0x400) { + BOOL FlatSB_EnableScrollBar(HWND, INT, UINT); + BOOL FlatSB_ShowScrollBar(HWND, INT, BOOL); + BOOL FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT); + BOOL FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO); + INT FlatSB_GetScrollPos(HWND, INT); + BOOL FlatSB_GetScrollProp(HWND, INT, LPINT); + version (Win64) { + BOOL FlatSB_GetScrollPropPtr(HWND, INT, PINT_PTR); + } else { + alias FlatSB_GetScrollProp FlatSB_GetScrollPropPtr; + } + INT FlatSB_SetScrollPos(HWND, INT, INT, BOOL); + INT FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL); + INT FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL); + BOOL FlatSB_SetScrollProp(HWND, UINT, INT_PTR, BOOL); + alias FlatSB_SetScrollProp FlatSB_SetScrollPropPtr; + BOOL InitializeFlatSB(HWND); + HRESULT UninitializeFlatSB(HWND); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR); + BOOL GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*); + BOOL RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR); + LRESULT DefSubclassProc(HWND, UINT, WPARAM, LPARAM); + INT DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, + COLORREF, INT, INT); + } + + int ImageList_Add(HIMAGELIST, HBITMAP, HBITMAP); + int ImageList_AddMasked(HIMAGELIST, HBITMAP, COLORREF); + BOOL ImageList_BeginDrag(HIMAGELIST, int, int, int); + HIMAGELIST ImageList_Create(int, int, UINT, int, int); + BOOL ImageList_Destroy(HIMAGELIST); + BOOL ImageList_DragEnter(HWND, int, int); + BOOL ImageList_DragLeave(HWND); + BOOL ImageList_DragMove(int, int); + BOOL ImageList_DragShowNolock(BOOL); + BOOL ImageList_Draw(HIMAGELIST, int, HDC, int, int, UINT); + BOOL ImageList_DrawEx(HIMAGELIST, int, HDC, int, int, int, int, COLORREF, + COLORREF, UINT); + void ImageList_EndDrag(); + COLORREF ImageList_GetBkColor(HIMAGELIST); + HIMAGELIST ImageList_GetDragImage(LPPOINT, LPPOINT); + HICON ImageList_GetIcon(HIMAGELIST, int, UINT); + BOOL ImageList_GetIconSize(HIMAGELIST, int*, int*); + int ImageList_GetImageCount(HIMAGELIST); + BOOL ImageList_GetImageInfo(HIMAGELIST, int, IMAGEINFO*); + HIMAGELIST ImageList_LoadImageA(HINSTANCE, LPCSTR, int, int, COLORREF, + UINT, UINT); + HIMAGELIST ImageList_LoadImageW(HINSTANCE, LPCWSTR, int, int, COLORREF, + UINT, UINT); + HIMAGELIST ImageList_Merge(HIMAGELIST, int, HIMAGELIST, int, int, int); + BOOL ImageList_Remove(HIMAGELIST, int); + BOOL ImageList_Replace(HIMAGELIST, int, HBITMAP, HBITMAP); + int ImageList_ReplaceIcon(HIMAGELIST, int, HICON); + COLORREF ImageList_SetBkColor(HIMAGELIST, COLORREF); + BOOL ImageList_SetDragCursorImage(HIMAGELIST, int, int, int); + BOOL ImageList_SetIconSize(HIMAGELIST, int, int); + BOOL ImageList_SetOverlayImage(HIMAGELIST, int, int); + + //#ifdef _OBJIDL_H + HIMAGELIST ImageList_Read(LPSTREAM); + BOOL ImageList_Write(HIMAGELIST, LPSTREAM); + //#endif + + static if (_WIN32_IE >= 0x400) { + HIMAGELIST ImageList_Duplicate(HIMAGELIST himl); + } + + void InitCommonControls(); + + static if (_WIN32_IE >= 0x300) { + BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX); + } + + int LBItemFromPt(HWND, POINT, BOOL); +} + +int ImageList_AddIcon(HIMAGELIST himl, HICON hicon) { + return ImageList_ReplaceIcon(himl, -1, hicon); +} + +HICON ImageList_ExtractIcon(HINSTANCE hi, HIMAGELIST himl, int i) { + return ImageList_GetIcon(himl, i, 0); +} + +HIMAGELIST ImageList_LoadBitmap(HINSTANCE hi, LPCTSTR lpbmp, int cx, + int cGrow, COLORREF crMask) { + return ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0); +} + +BOOL ImageList_RemoveAll(HIMAGELIST himl) { + return ImageList_Remove(himl, -1); +} + +COLORREF ListView_GetBkColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETBKCOLOR, 0, 0); +} + +HIMAGELIST ListView_GetImageList(HWND w, int i) { + return cast(HIMAGELIST) SendMessage(w, LVM_GETIMAGELIST, i, 0); +} + +int ListView_GetItemCount(HWND w) { + return cast(int) SendMessage(w, LVM_GETITEMCOUNT, 0, 0); +} + +BOOL ListView_GetItem(HWND w, LPLVITEM pitem) { + return cast(BOOL) SendMessage(w, LVM_GETITEM, 0, cast(LPARAM) pitem); +} + +BOOL ListView_SetBkColor(HWND w, COLORREF c) { + return cast(BOOL) SendMessage(w, LVM_SETBKCOLOR, 0, cast(LPARAM) c); +} + +HIMAGELIST ListView_SetImageList(HWND w, HIMAGELIST h, int i) { + return cast(HIMAGELIST) SendMessage(w, LVM_SETIMAGELIST, i, + cast(LPARAM) h); +} + +BOOL ListView_SetItem(HWND w, const(LV_ITEM)* i) { + return cast(BOOL) SendMessage(w, LVM_SETITEM, 0, cast(LPARAM) i); +} + +int ListView_InsertItem(HWND w, const(LV_ITEM)* i) { + return cast(int) SendMessage(w, LVM_INSERTITEM, 0, cast(LPARAM) i); +} + +BOOL ListView_DeleteItem(HWND w, int i) { + return cast(BOOL) SendMessage(w, LVM_DELETEITEM, i, 0); +} + +BOOL ListView_DeleteAllItems(HWND w) { + return cast(BOOL) SendMessage(w, LVM_DELETEALLITEMS, 0, 0); +} + +UINT ListView_GetCallbackMask(HWND w) { + return cast(UINT) SendMessage(w, LVM_GETCALLBACKMASK, 0, 0); +} + +BOOL ListView_SetCallbackMask(HWND w, UINT m) { + return cast(BOOL) SendMessage(w, LVM_SETCALLBACKMASK, m, 0); +} + +int ListView_GetNextItem(HWND w, int i, UINT f) { + return cast(int) SendMessage(w, LVM_GETNEXTITEM, i, MAKELPARAM(cast(ushort)f, 0)); +} + +int ListView_FindItem(HWND w, int i, const(LV_FINDINFO)* p) { + return cast(int) SendMessage(w, LVM_FINDITEM, i, cast(LPARAM) p); +} + +BOOL ListView_GetItemRect(HWND w, int i, LPRECT p, int c) { + return cast(BOOL) SendMessage(w, LVM_GETITEMRECT, i, p ? + (p.left = c, cast(LPARAM) p) : 0); +} + +BOOL ListView_SetItemPosition(HWND w, int i, int x, int y) { + return cast(BOOL) SendMessage(w, LVM_SETITEMPOSITION, i, MAKELPARAM(cast(ushort)x, cast(ushort)y)); +} + +BOOL ListView_GetItemPosition(HWND w, int i, POINT* p) { + return cast(BOOL) SendMessage(w, LVM_GETITEMPOSITION, i, cast(LPARAM) p); +} + +DWORD ListView_GetItemSpacing(HWND w, BOOL f) { + return cast(DWORD) SendMessage(w, LVM_GETITEMSPACING, f, 0); +} + +int ListView_GetStringWidth(HWND w, LPCSTR s) { + return cast(int) SendMessage(w, LVM_GETSTRINGWIDTH, 0, cast(LPARAM) s); +} + +int ListView_HitTest(HWND w, LPLVHITTESTINFO p) { + return cast(int) SendMessage(w, LVM_HITTEST, 0, cast(LPARAM) p); +} + +BOOL ListView_EnsureVisible(HWND w, int i, BOOL f) { + return cast(BOOL) SendMessage(w, LVM_ENSUREVISIBLE, i, MAKELPARAM(cast(ushort)f, 0)); +} + +BOOL ListView_Scroll(HWND w, int dx, int dy) { + return cast(BOOL) SendMessage(w, LVM_SCROLL, dx, dy); +} + +BOOL ListView_RedrawItems(HWND w, int f, int l) { + return cast(BOOL) SendMessage(w, LVM_REDRAWITEMS, f, l); +} + +BOOL ListView_Arrange(HWND w, UINT c) { + return cast(BOOL) SendMessage(w, LVM_ARRANGE, c, 0); +} + +HWND ListView_EditLabel(HWND w, int i) { + return cast(HWND) SendMessage(w, LVM_EDITLABEL, i, 0); +} + +HWND ListView_GetEditControl(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETEDITCONTROL, 0, 0); +} + +BOOL ListView_GetColumn(HWND w, int i, LPLVCOLUMN p) { + return cast(BOOL) SendMessage(w, LVM_GETCOLUMN, i, cast(LPARAM) p); +} + +BOOL ListView_SetColumn(HWND w, int i, const(LV_COLUMN)* p) { + return cast(BOOL) SendMessage(w, LVM_SETCOLUMN, i, cast(LPARAM) p); +} + +int ListView_InsertColumn(HWND w, int i, const(LV_COLUMN)* p) { + return cast(int) SendMessage(w, LVM_INSERTCOLUMN, i, cast(LPARAM) p); +} + +BOOL ListView_DeleteColumn(HWND w, int i) { + return cast(BOOL) SendMessage(w, LVM_DELETECOLUMN, i, 0); +} + +int ListView_GetColumnWidth(HWND w, int i) { + return cast(int) SendMessage(w, LVM_GETCOLUMNWIDTH, i, 0); +} + +BOOL ListView_SetColumnWidth(HWND w, int i, int x) { + return cast(BOOL) SendMessage(w, LVM_SETCOLUMNWIDTH, i, MAKELPARAM(cast(ushort)x, 0)); +} + +HIMAGELIST ListView_CreateDragImage(HWND w, int i, LPPOINT p) { + return cast(HIMAGELIST) SendMessage(w, LVM_CREATEDRAGIMAGE, i, + cast(LPARAM) p); +} + +BOOL ListView_GetViewRect(HWND w, RECT* p) { + return cast(BOOL) SendMessage(w, LVM_GETVIEWRECT, 0, cast(LPARAM) p); +} + +COLORREF ListView_GetTextColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETTEXTCOLOR, 0, 0); +} + +BOOL ListView_SetTextColor(HWND w, COLORREF c) { + return cast(BOOL) SendMessage(w, LVM_SETTEXTCOLOR, 0, cast(LPARAM) c); +} + +COLORREF ListView_GetTextBkColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETTEXTBKCOLOR, 0, 0); +} + +BOOL ListView_SetTextBkColor(HWND w, COLORREF c) { + return cast(BOOL) SendMessage(w, LVM_SETTEXTBKCOLOR, 0, cast(LPARAM) c); +} + +int ListView_GetTopIndex(HWND w) { + return cast(int) SendMessage(w, LVM_GETTOPINDEX, 0, 0); +} + +int ListView_GetCountPerPage(HWND w) { + return cast(int) SendMessage(w, LVM_GETCOUNTPERPAGE, 0, 0); +} + +BOOL ListView_GetOrigin(HWND w, LPPOINT p) { + return cast(BOOL) SendMessage(w, LVM_GETORIGIN, 0, cast(LPARAM) p); +} + +BOOL ListView_Update(HWND w, WPARAM i) { + return cast(BOOL) SendMessage(w, LVM_UPDATE, i, 0); +} + +void ListView_SetItemState(HWND w, int i, UINT d, UINT m) { + LV_ITEM _lvi; + _lvi.stateMask = m; + _lvi.state = d; + SendMessage(w, LVM_SETITEMSTATE, i, cast(LPARAM) &_lvi); +} + +UINT ListView_GetItemState(HWND w, int i, UINT m) { + return cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, m); +} + +void ListView_GetItemText(HWND w, int i, int iS, LPTSTR s, int n) { + LV_ITEM _lvi; + _lvi.iSubItem = iS; + _lvi.cchTextMax = n; + _lvi.pszText = s; + SendMessage(w, LVM_GETITEMTEXT, i, cast(LPARAM) &_lvi); +} + +void ListView_SetItemText(HWND w, int i, int iS, LPTSTR s) { + LV_ITEM _lvi; + _lvi.iSubItem = iS; + _lvi.pszText = s; + SendMessage(w, LVM_SETITEMTEXT, i, cast(LPARAM) &_lvi); +} + +void ListView_SetItemCount(HWND w, int n) { + SendMessage(w, LVM_SETITEMCOUNT, n, 0); +} + +BOOL ListView_SortItems(HWND w, PFNLVCOMPARE f, LPARAM l) { + return cast(BOOL) SendMessage(w, LVM_SORTITEMS, l, cast(LPARAM) f); +} + +void ListView_SetItemPosition32(HWND w, int i, int x, int y) { + POINT p; + p.x = x; + p.y = y; + SendMessage(w, LVM_SETITEMPOSITION32, i, cast(LPARAM) &p); +} + +UINT ListView_GetSelectedCount(HWND w) { + return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOUNT, 0, 0); +} + +UINT ListView_GetCheckState(HWND w, UINT i) { + return ((cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK)) >> 12) - 1; +} + +void ListView_SetCheckState(HWND w, UINT i, BOOL f) { + ListView_SetItemState(w, i, INDEXTOSTATEIMAGEMASK(f ? 2 : 1), + LVIS_STATEIMAGEMASK); +} + +BOOL ListView_GetISearchString(HWND w, LPSTR lpsz) { + return cast(BOOL) SendMessage(w, LVM_GETISEARCHSTRING, 0, + cast(LPARAM) lpsz); +} + +void ListView_CancelEditLabel(HWND w) { + SendMessage(w, LVM_CANCELEDITLABEL, 0, 0); +} + +int ListView_EnableGroupView(HWND w, BOOL i) { + return cast(int) SendMessage(w, LVM_ENABLEGROUPVIEW, i, 0); +} + +static if (_WIN32_WINNT >= 0x500 || _WIN32_IE >= 0x500) { + BOOL ListView_SortItemsEx(HWND w, PFNLVCOMPARE c, LPARAM p) { + return cast(BOOL) SendMessage(w, LVM_SORTITEMSEX, cast(WPARAM) p, cast(LPARAM)c); + } +} + +static if (_WIN32_WINNT >= 0x501) { + int ListView_GetGroupInfo(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_GETGROUPINFO, i, cast(LPARAM) p); + } + + void ListView_GetGroupMetrics(HWND w, PLVGROUPMETRICS p) { + SendMessage(w, LVM_GETGROUPMETRICS, 0, cast(LPARAM) p); + } + + BOOL ListView_GetInsertMark(HWND w, PLVINSERTMARK p) { + return cast(BOOL) SendMessage(w, LVM_GETINSERTMARK, 0, cast(LPARAM) p); + } + + COLORREF ListView_GetInsertMarkColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETINSERTMARKCOLOR, 0, 0); + } + + int ListView_GetInsertMarkRect(HWND w, LPRECT p) { + return cast(int) SendMessage(w, LVM_GETINSERTMARKRECT, 0, cast(LPARAM) p); + } + + COLORREF ListView_GetOutlineColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETOUTLINECOLOR, 0, 0); + } + + UINT ListView_GetSelectedColumn(HWND w) { + return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOLUMN, 0, 0); + } + + void ListView_GetTileInfo(HWND w, PLVTILEINFO p) { + SendMessage(w, LVM_GETTILEINFO, 0, cast(LPARAM) p); + } + + void ListView_GetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { + SendMessage(w, LVM_GETTILEVIEWINFO, 0, cast(LPARAM) p); + } + + DWORD ListView_GetView(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETVIEW, 0, 0); + } + + BOOL ListView_HasGroup(HWND w, int i) { + return cast(BOOL) SendMessage(w, LVM_HASGROUP, i, 0); + } + + int ListView_InsertGroup(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_INSERTGROUP, i, cast(LPARAM) p); + } + + void ListView_InsertGroupSorted(HWND w, PLVINSERTGROUPSORTED p) { + SendMessage(w, LVM_INSERTGROUPSORTED, cast(WPARAM) p, 0); + } + + BOOL ListView_InsertMarkHitTest(HWND w, LPPOINT p, PLVINSERTMARK t) { + return cast(BOOL) SendMessage(w, LVM_INSERTMARKHITTEST, cast(WPARAM) p, cast(LPARAM) t); + } + + BOOL ListView_IsGroupViewEnabled(HWND w) { + return cast(BOOL) SendMessage(w, LVM_ISGROUPVIEWENABLED, 0, 0); + } + + UINT ListView_MapIDToIndex(HWND w, UINT i) { + return cast(UINT) SendMessage(w, LVM_MAPIDTOINDEX, i, 0); + } + + /* ??? MSDN documents this as "Not implemented", except in relation to + * Windows CE/Mobile. + */ + void ListView_MoveGroup(HWND w, int i, int t) { + SendMessage(w, LVM_MOVEGROUP, i, t); + } + + void ListView_RemoveAllGroups(HWND w) { + SendMessage(w, LVM_REMOVEALLGROUPS, 0, 0); + } + + int ListView_RemoveGroup(HWND w, int i) { + return cast(int) SendMessage(w, LVM_REMOVEGROUP, i, 0); + } + + int ListView_SetGroupInfo(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_SETGROUPINFO, i, cast(LPARAM) p); + } + + void ListView_SetGroupMetrics(HWND w, PLVGROUPMETRICS p) { + SendMessage(w, LVM_SETGROUPMETRICS, 0, cast(LPARAM) p); + } + + BOOL ListView_SetInfoTip(HWND w, PLVSETINFOTIP p) { + return cast(BOOL) SendMessage(w, LVM_SETINFOTIP, 0, cast(LPARAM) p); + } + + BOOL ListView_SetInsertMark(HWND w, PLVINSERTMARK p) { + return cast(BOOL) SendMessage(w, LVM_SETINSERTMARK, 0, cast(LPARAM) p); + } + + COLORREF ListView_SetInsertMarkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, LVM_SETINSERTMARKCOLOR, 0, c); + } + + COLORREF ListView_SetOutlineColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, LVM_SETOUTLINECOLOR, 0, c); + } + + void ListView_SetSelectedColumn(HWND w, int i) { + SendMessage(w, LVM_SETSELECTEDCOLUMN, i, 0); + } + + BOOL ListView_SetTileInfo(HWND w, PLVTILEINFO p) { + return cast(BOOL) SendMessage(w, LVM_SETTILEINFO, 0, cast(LPARAM) p); + } + + BOOL ListView_SetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { + return cast(BOOL) SendMessage(w, LVM_SETTILEVIEWINFO, 0, cast(LPARAM) p); + } + + int ListView_SetView(HWND w, DWORD i) { + return cast(int) SendMessage(w, LVM_SETVIEW, i, 0); + } + + int ListView_SortGroups(HWND w, PFNLVGROUPCOMPARE c, LPVOID p) { + return cast(int) SendMessage(w, LVM_SORTGROUPS, cast(WPARAM) c, cast(LPARAM) p); + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + CBM_FIRST = 0x1700, + CB_SETMINVISIBLE = CBM_FIRST + 1, + CB_GETMINVISIBLE = CBM_FIRST + 2, + CB_SETCUEBANNER = CBM_FIRST + 3, + CB_GETCUEBANNER = CBM_FIRST + 4, + } + + BOOL ComboBox_SetMinVisible(HWND w, INT i) { + return cast(BOOL) SendMessage(w, CB_SETMINVISIBLE, cast(WPARAM) i, 0); + } + + int ComboBox_GetMinVisible(HWND w) { + return cast(int) SendMessage(w, CB_GETMINVISIBLE, 0, 0); + } +} + +extern (Windows) BOOL MakeDragList(HWND); +extern (Windows) void MenuHelp(UINT, WPARAM, LPARAM, HMENU, HINSTANCE, HWND, + PUINT); + +COLORREF MonthCal_GetColor(HWND hwnd, INT icolor) { + return cast(COLORREF) SendMessage(hwnd, MCM_GETCOLOR, + cast(WPARAM) icolor, 0); +} + +BOOL MonthCal_GetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { + return cast(BOOL) SendMessage(hwnd, MCM_GETCURSEL, 0, + cast(LPARAM) lpsystime); +} + +DWORD MonthCal_GetFirstDayOfWeek(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, MCM_GETFIRSTDAYOFWEEK, 0, 0); +} + +DWORD MonthCal_GetMaxSelCount(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, MCM_GETMAXSELCOUNT, 0, 0); +} + +DWORD MonthCal_GetMaxTodayWidth(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, MCM_GETMAXTODAYWIDTH, 0, 0); +} + +BOOL MonthCal_GetMinReqRect(HWND hwnd, LPRECT lpRectInfo) { + return cast(BOOL) SendMessage(hwnd, MCM_GETMINREQRECT, 0, + cast(LPARAM) lpRectInfo); +} + +INT MonthCal_GetMonthDelta(HWND hwnd) { + return cast(INT) SendMessage(hwnd, MCM_GETMONTHDELTA, 0, 0); +} + +INT MonthCal_GetMonthRange(HWND hwnd, DWORD flag, LPSYSTEMTIME systimearray) { + return cast(INT) SendMessage(hwnd, MCM_GETMONTHRANGE, cast(WPARAM) flag, + cast(LPARAM) systimearray); +} + +DWORD MonthCal_GetRange(HWND hwnd, LPSYSTEMTIME systimearray) { + return cast(DWORD) SendMessage(hwnd, MCM_GETRANGE, 0, + cast(LPARAM) systimearray); +} + +BOOL MonthCal_GetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { + return cast(BOOL) SendMessage(hwnd, MCM_GETSELRANGE, 0, + cast(LPARAM) systimearray); +} + +BOOL MonthCal_GetToday(HWND hwnd, LPSYSTEMTIME systime) { + return cast(BOOL) SendMessage(hwnd, MCM_GETTODAY, 0, + cast(LPARAM) systime); +} + +BOOL MonthCal_GetUnicodeFormat(HWND hwnd) { + return cast(BOOL) SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0); +} + +DWORD MonthCal_HitTest(HWND hwnd, PMCHITTESTINFO pmchittest) { + return cast(DWORD) SendMessage(hwnd, MCM_HITTEST, 0, + cast(LPARAM) pmchittest); +} + +COLORREF MonthCal_SetColor(HWND hwnd, INT icolor, COLORREF clr) { + return cast(COLORREF) SendMessage(hwnd, MCM_SETCOLOR, cast(WPARAM) icolor, + cast(LPARAM) clr); +} + +BOOL MonthCal_SetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { + return cast(BOOL) SendMessage(hwnd, MCM_SETCURSEL, 0, + cast(LPARAM) lpsystime); +} + +BOOL MonthCal_SetDayState(HWND hwnd, INT imonths, LPMONTHDAYSTATE lpdatestatearray) { + return cast(BOOL) SendMessage(hwnd, MCM_SETDAYSTATE, cast(WPARAM) imonths, + cast(LPARAM) lpdatestatearray); +} + +DWORD MonthCal_SetFirstDayOfWeek(HWND hwnd, INT iday) { + return cast(DWORD) SendMessage(hwnd, MCM_SETFIRSTDAYOFWEEK, 0, + cast(LPARAM) iday); +} + +BOOL MonthCal_SetMaxSelCount(HWND hwnd, UINT imax) { + return cast(BOOL) SendMessage(hwnd, MCM_SETMAXSELCOUNT, + cast(WPARAM) imax, 0); +} + +INT MonthCal_SetMonthDelta(HWND hwnd, INT idelta) { + return cast(INT) SendMessage(hwnd, MCM_SETMONTHDELTA, cast(WPARAM) idelta, 0); +} + +BOOL MonthCal_SetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { + return cast(BOOL) SendMessage(hwnd, MCM_SETSELRANGE, 0, + cast(LPARAM) systimearray); +} + +void MonthCal_SetToday(HWND hwnd, LPSYSTEMTIME systime) { + SendMessage(hwnd, MCM_SETTODAY, 0, cast(LPARAM) systime); +} + +BOOL MonthCal_SetUnicodeFormat(HWND hwnd, BOOL unicode) { + return cast(BOOL) SendMessage(hwnd, MCM_SETUNICODEFORMAT, + cast(WPARAM) unicode, 0); +} + +BOOL MonthCal_SetRange(HWND w, DWORD f, LPSYSTEMTIME st) { + return cast(BOOL) SendMessage(w, MCM_SETRANGE, cast(WPARAM) f, + cast(LPARAM) st); +} + +extern (Windows) BOOL ShowHideMenuCtl(HWND, UINT_PTR, PINT); + +BOOL TabCtrl_GetItem(HWND w, int i, LPTCITEM p) { + return cast(BOOL) SendMessage(w, TCM_GETITEM, i, cast(LPARAM) p); +} + +BOOL TabCtrl_SetItem(HWND w, int i, LPTCITEM p) { + return cast(BOOL) SendMessage(w, TCM_SETITEM, i, cast(LPARAM) p); +} + +int TabCtrl_InsertItem(HWND w, int i, const(TC_ITEM)* p) { + return cast(int) SendMessage(w, TCM_INSERTITEM, i, cast(LPARAM) p); +} + +BOOL TabCtrl_DeleteItem(HWND w, int i) { + return cast(BOOL) SendMessage(w, TCM_DELETEITEM, i, 0); +} + +BOOL TabCtrl_DeleteAllItems(HWND w) { + return cast(BOOL) SendMessage(w, TCM_DELETEALLITEMS, 0, 0); +} + +BOOL TabCtrl_GetItemRect(HWND w, int i, LPRECT p) { + return cast(BOOL) SendMessage(w, TCM_GETITEMRECT, i, cast(LPARAM) p); +} + +int TabCtrl_GetCurSel(HWND w) { + return cast(int) SendMessage(w, TCM_GETCURSEL, 0, 0); +} + +int TabCtrl_SetCurSel(HWND w, int i) { + return cast(int) SendMessage(w, TCM_SETCURSEL, i, 0); +} + +int TabCtrl_HitTest(HWND w, LPTCHITTESTINFO p) { + return cast(int) SendMessage(w, TCM_HITTEST, 0, cast(LPARAM) p); +} + +BOOL TabCtrl_SetItemExtra(HWND w, int c) { + return cast(BOOL) SendMessage(w, TCM_SETITEMEXTRA, c, 0); +} + +int TabCtrl_AdjustRect(HWND w, BOOL b, LPRECT p) { + return cast(int) SendMessage(w, TCM_ADJUSTRECT, b, cast(LPARAM) p); +} + +DWORD TabCtrl_SetItemSize(HWND w, int x, int y) { + return cast(DWORD) SendMessage(w, TCM_SETITEMSIZE, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); +} + +void TabCtrl_RemoveImage(HWND w, int i) { + SendMessage(w, TCM_REMOVEIMAGE, i, 0); +} + +void TabCtrl_SetPadding(HWND w, int x, int y) { + SendMessage(w, TCM_SETPADDING, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); +} + +int TabCtrl_GetRowCount(HWND w) { + return cast(int) SendMessage(w, TCM_GETROWCOUNT, 0, 0); +} + +HWND TabCtrl_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, TCM_GETTOOLTIPS, 0, 0); +} + +void TabCtrl_SetToolTips(HWND w, HWND t) { + SendMessage(w, TCM_SETTOOLTIPS, cast(WPARAM) t, 0); +} + +int TabCtrl_GetCurFocus(HWND w) { + return cast(int) SendMessage(w, TCM_GETCURFOCUS, 0, 0); +} + +void TabCtrl_SetCurFocus(HWND w, int i) { + SendMessage(w, TCM_SETCURFOCUS, i, 0); +} + +HIMAGELIST TabCtrl_GetImageList(HWND w) { + return cast(HIMAGELIST) SendMessage(w, TCM_GETIMAGELIST, 0, 0); +} + +HIMAGELIST TabCtrl_SetImageList(HWND w, HIMAGELIST h) { + return cast(HIMAGELIST) SendMessage(w, TCM_SETIMAGELIST, 0, + cast(LPARAM) h); +} + +int TabCtrl_GetItemCount(HWND w) { + return cast(int) SendMessage(w, TCM_GETITEMCOUNT, 0, 0); +} + +extern (Windows) BOOL _TrackMouseEvent(LPTRACKMOUSEEVENT); + +HTREEITEM TreeView_InsertItem(HWND w, LPTVINSERTSTRUCT i) { + return cast(HTREEITEM) SendMessage(w, TVM_INSERTITEM, 0, cast(LPARAM) i); +} + +BOOL TreeView_DeleteItem(HWND w, HTREEITEM i) { + return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) i); +} + +BOOL TreeView_DeleteAllItems(HWND w) { + return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) TVI_ROOT); +} + +BOOL TreeView_Expand(HWND w, HTREEITEM i, UINT c) { + return cast(BOOL) SendMessage(w, TVM_EXPAND, c, cast(LPARAM) i); +} + +BOOL TreeView_GetItemRect(HWND w, HTREEITEM i, LPRECT p, BOOL c) { + *cast(HTREEITEM*) p = i; + return cast(BOOL) SendMessage(w, TVM_GETITEMRECT, c, cast(LPARAM) p); +} + +UINT TreeView_GetCount(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETCOUNT, 0, 0); +} + +UINT TreeView_GetIndent(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETINDENT, 0, 0); +} + +BOOL TreeView_SetIndent(HWND w, INT i) { + return cast(BOOL) SendMessage(w, TVM_SETINDENT, i, 0); +} + +HIMAGELIST TreeView_GetImageList(HWND w, INT i) { + return cast(HIMAGELIST) SendMessage(w, TVM_GETIMAGELIST, i, 0); +} + +HIMAGELIST TreeView_SetImageList(HWND w, HIMAGELIST h, INT i) { + return cast(HIMAGELIST) SendMessage(w, TVM_SETIMAGELIST, i, + cast(LPARAM) h); +} + +HTREEITEM TreeView_GetNextItem(HWND w, HTREEITEM i, UINT c) { + return cast(HTREEITEM) SendMessage(w, TVM_GETNEXTITEM, c, cast(LPARAM) i); +} + +HTREEITEM TreeView_GetChild(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_CHILD); +} + +HTREEITEM TreeView_GetNextSibling(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_NEXT); +} + +HTREEITEM TreeView_GetPrevSibling(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_PREVIOUS); +} + +HTREEITEM TreeView_GetParent(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_PARENT); +} + +HTREEITEM TreeView_GetFirstVisible(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_FIRSTVISIBLE); +} + +HTREEITEM TreeView_GetNextVisible(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_NEXTVISIBLE); +} + +HTREEITEM TreeView_GetPrevVisible(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_PREVIOUSVISIBLE); +} + +HTREEITEM TreeView_GetSelection(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_CARET); +} + +HTREEITEM TreeView_GetDropHilight(HTREEITEM w) { + return TreeView_GetNextItem(w, null, TVGN_DROPHILITE); +} + +HTREEITEM TreeView_GetRoot(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_ROOT); +} + +BOOL TreeView_Select(HWND w, HTREEITEM i, UINT c) { + return cast(BOOL) SendMessage(w, TVM_SELECTITEM, c, cast(LPARAM) i); +} + +BOOL TreeView_SelectItem(HWND w, HTREEITEM i) { + return TreeView_Select(w, i, TVGN_CARET); +} + +BOOL TreeView_SelectDropTarget(HWND w, HTREEITEM i) { + return TreeView_Select(w, i, TVGN_DROPHILITE); +} + +BOOL TreeView_SelectSetFirstVisible(HWND w, HTREEITEM i) { + return TreeView_Select(w, i, TVGN_FIRSTVISIBLE); +} + +BOOL TreeView_GetItem(HWND w, LPTVITEM i) { + return cast(BOOL) SendMessage(w, TVM_GETITEM, 0, cast(LPARAM) i); +} + +BOOL TreeView_SetItem(HWND w, const(TV_ITEM)* i) { + return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) i); +} + +HWND TreeView_EditLabel(HWND w, HTREEITEM i) { + return cast(HWND) SendMessage(w, TVM_EDITLABEL, 0, cast(LPARAM) i); +} + +HWND TreeView_GetEditControl(HWND w) { + return cast(HWND) SendMessage(w, TVM_GETEDITCONTROL, 0, 0); +} + +UINT TreeView_GetVisibleCount(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETVISIBLECOUNT, 0, 0); +} + +HTREEITEM TreeView_HitTest(HWND w, LPTVHITTESTINFO p) { + return cast(HTREEITEM) SendMessage(w, TVM_HITTEST, 0, cast(LPARAM) p); +} + +HIMAGELIST TreeView_CreateDragImage(HWND w, HTREEITEM i) { + return cast(HIMAGELIST) SendMessage(w, TVM_CREATEDRAGIMAGE, 0, + cast(LPARAM) i); +} + +BOOL TreeView_SortChildren(HWND w, HTREEITEM i, BOOL r) { + return cast(BOOL) SendMessage(w, TVM_SORTCHILDREN, r, cast(LPARAM) i); +} + +BOOL TreeView_EnsureVisible(HWND w, HTREEITEM i) { + return cast(BOOL) SendMessage(w, TVM_ENSUREVISIBLE, 0, cast(LPARAM) i); +} + +BOOL TreeView_SortChildrenCB(HWND w, LPTVSORTCB s, BOOL r) { + return cast(BOOL) SendMessage(w, TVM_SORTCHILDRENCB, r, cast(LPARAM) s); +} + +BOOL TreeView_EndEditLabelNow(HWND w, BOOL f) { + return cast(BOOL) SendMessage(w, TVM_ENDEDITLABELNOW, f, 0); +} + +BOOL TreeView_GetISearchString(HWND w, LPTSTR s) { + return cast(BOOL) SendMessage(w, TVM_GETISEARCHSTRING, 0, cast(LPARAM) s); +} + +static if (_WIN32_IE >= 0x300) { + DWORD ListView_ApproximateViewRect(HWND w, int iw, int ih, int i) { + return cast(DWORD) SendMessage(w, LVM_APPROXIMATEVIEWRECT, i, + MAKELPARAM(cast(ushort)iw, cast(ushort)ih)); + } + + DWORD ListView_SetExtendedListViewStyle(HWND w, DWORD s) { + return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, s); + } + + DWORD ListView_GetExtendedListViewStyle(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); + } + + BOOL ListView_SetColumnOrderArray(HWND w, int i, int* a) { + return cast(BOOL) SendMessage(w, LVM_SETCOLUMNORDERARRAY, + cast(WPARAM) i, cast(LPARAM) a); + } + + BOOL ListView_GetColumnOrderArray(HWND w, int i, int* a) { + return cast(BOOL) SendMessage(w, LVM_GETCOLUMNORDERARRAY, + cast(WPARAM) i, cast(LPARAM) a); + } + + HWND ListView_GetHeader(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETHEADER, 0, 0); + } + + HCURSOR ListView_GetHotCursor(HWND w) { + return cast(HCURSOR) SendMessage(w, LVM_GETHOTCURSOR, 0, 0); + } + + INT ListView_GetHotItem(HWND w) { + return cast(INT) SendMessage(w, LVM_GETHOTITEM, 0, 0); + } + + BOOL ListView_GetSubItemRect(HWND w, int i, int isi, int c, LPRECT p) { + return cast(BOOL) SendMessage(w, LVM_GETSUBITEMRECT, i, + p ? (p.left = c, p.top = isi, cast(LPARAM) p) : 0); + } + + HCURSOR ListView_SetHotCursor(HWND w, HCURSOR c) { + return cast(HCURSOR) SendMessage(w, LVM_SETHOTCURSOR, 0, + cast(LPARAM) c); + } + + INT ListView_SetHotItem(HWND w, INT i) { + return cast(INT) SendMessage(w, LVM_SETHOTITEM, cast(WPARAM) i, 0); + } + + DWORD ListView_SetIconSpacing(HWND w, int x, int y) { + return cast(DWORD) SendMessage(w, LVM_SETICONSPACING, 0, + MAKELONG(cast(ushort)x, cast(ushort)y)); + } + + INT ListView_SubItemHitTest(HWND w, LPLVHITTESTINFO p) { + return cast(INT) SendMessage(w, LVM_SUBITEMHITTEST, 0, cast(LPARAM) p); + } + + BOOL ListView_SetItemCountEx(HWND w, int i, DWORD f) { + return cast(BOOL) SendMessage(w, LVM_SETITEMCOUNT, i, cast(LPARAM) f); + } + + extern (Windows) { + WINBOOL ImageList_SetImageCount(HIMAGELIST, UINT); + WINBOOL ImageList_Copy(HIMAGELIST, int, HIMAGELIST, int, UINT); + WINBOOL ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*); + } + + int TabCtrl_SetMinTabWidth(HWND hwnd, int x) { + return cast(int) SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x); + } + + VOID TabCtrl_DeselectAll(HWND hwnd, UINT fExcludeFocus) { + SendMessage(hwnd, TCM_DESELECTALL, fExcludeFocus, 0); + } + + HWND TreeView_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, TVM_GETTOOLTIPS, 0, 0); + } + + HWND TreeView_SetToolTips(HWND w, HWND wt) { + return cast(HWND) SendMessage(w, TVM_SETTOOLTIPS, cast(WPARAM) wt, 0); + } +} + +static if (_WIN32_IE >= 0x400) { + BOOL ListView_GetBkImage(HWND h, LPLVBKIMAGE plvbki) { + return cast(BOOL) SendMessage(h, LVM_GETBKIMAGE, 0, + cast(LPARAM) plvbki); + } + + BOOL ListView_SetBkImage(HWND h, LPLVBKIMAGE plvbki) { + return cast(BOOL) SendMessage(h, LVM_SETBKIMAGE, 0, + cast(LPARAM) plvbki); + } + + DWORD ListView_SetExtendedListViewStyleEx(HWND w, DWORD m, DWORD s) { + return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, m, s); + } + + VOID ListView_SetWorkAreas(HWND w, INT n, LPRECT r) { + SendMessage(w, LVM_SETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); + } + + VOID ListView_GetWorkAreas(HWND w, INT n, LPRECT r) { + SendMessage(w, LVM_GETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); + } + + BOOL ListView_GetNumberOfWorkAreas(HWND w, LPUINT n) { + return cast(BOOL) SendMessage(w, LVM_GETNUMBEROFWORKAREAS, 0, + cast(LPARAM) n); + } + + DWORD ListView_SetHoverTime(HWND w, DWORD t) { + return cast(DWORD) SendMessage(w, LVM_SETHOVERTIME, 0, + cast(LPARAM) t); + } + + DWORD ListView_GetHoverTime(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETHOVERTIME, 0, 0); + } + + INT ListView_GetSelectionMark(HWND w) { + return cast(INT) SendMessage(w, LVM_GETSELECTIONMARK, 0, 0); + } + + INT ListView_SetSelectionMark(HWND w, INT i) { + return cast(INT) SendMessage(w, LVM_SETSELECTIONMARK, 0, cast(LPARAM) i); + } + + HWND ListView_SetToolTips(HWND w, HWND n) { + return cast(HWND) SendMessage(w, LVM_SETTOOLTIPS, cast(WPARAM) n, 0); + } + + HWND ListView_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETTOOLTIPS, 0, 0); + } + + BOOL ListView_SetUnicodeFormat(HWND w, BOOL f) { + return cast(BOOL) SendMessage(w, LVM_SETUNICODEFORMAT, + cast(WPARAM) f, 0); + } + + BOOL ListView_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, LVM_GETUNICODEFORMAT, 0, 0); + } + + BOOL TabCtrl_HighlightItem(HWND hwnd, INT i, WORD fHighlight) { + return cast(BOOL) SendMessage(hwnd, TCM_HIGHLIGHTITEM, + cast(WPARAM) i, cast(LPARAM) MAKELONG(fHighlight, 0)); + } + + DWORD TabCtrl_SetExtendedStyle(HWND hwnd, DWORD dw) { + return cast(DWORD) SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw); + } + + DWORD TabCtrl_GetExtendedStyle(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0); + } + + BOOL TabCtrl_SetUnicodeFormat(HWND hwnd, HWND fUnicode) { + return cast(BOOL) SendMessage(hwnd, TCM_SETUNICODEFORMAT, + cast(WPARAM) fUnicode, 0); + } + + BOOL TabCtrl_GetUnicodeFormat(HWND hwnd) { + return cast(BOOL) SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0); + } + + COLORREF TreeView_GetBkColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETBKCOLOR, 0, 0); + } + + COLORREF TreeView_GetInsertMarkColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETINSERTMARKCOLOR, 0, 0); + } + + int TreeView_GetItemHeight(HWND w) { + return cast(int) SendMessage(w, TVM_GETITEMHEIGHT, 0, 0); + } + + UINT TreeView_GetScrollTime(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETSCROLLTIME, 0, 0); + } + + COLORREF TreeView_GetTextColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETTEXTCOLOR, 0, 0); + } + + COLORREF TreeView_SetBkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETBKCOLOR, 0, + cast(LPARAM) c); + } + + COLORREF TreeView_SetInsertMarkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETINSERTMARKCOLOR, 0, + cast(LPARAM) c); + } + + int TreeView_SetItemHeight(HWND w, SHORT h) { + return cast(int) SendMessage(w, TVM_SETITEMHEIGHT, cast(WPARAM) h, 0); + } + + UINT TreeView_SetScrollTime(HWND w, UINT t) { + return cast(UINT) SendMessage(w, TVM_SETSCROLLTIME, cast(WPARAM) t, 0); + } + + COLORREF TreeView_SetTextColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETTEXTCOLOR, 0, + cast(LPARAM) c); + } + + BOOL TreeView_SetInsertMark(HWND w, HTREEITEM i, BOOL a) { + return cast(BOOL) SendMessage(w, TVM_SETINSERTMARK, cast(WPARAM) a, + cast(LPARAM) i); + } + + BOOL TreeView_SetUnicodeFormat(HWND w, BOOL u) { + return cast(BOOL) SendMessage(w, TVM_SETUNICODEFORMAT, + cast(WPARAM) u, 0); + } + + BOOL TreeView_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, TVM_GETUNICODEFORMAT, 0, 0); + } + + HTREEITEM TreeView_GetLastVisible(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_LASTVISIBLE); + } +} + +static if (_WIN32_IE >= 0x500) { + UINT TreeView_GetItemState(HWND w, HTREEITEM i, UINT m) { + return cast(UINT) SendMessage(w, TVM_GETITEMSTATE, cast(WPARAM) i, + cast(LPARAM) m); + } + + BOOL TreeView_SetItemState(HWND w, HTREEITEM i, UINT d, UINT m) { + TVITEM _tvi; + _tvi.mask = TVIF_STATE; + _tvi.hItem = i; + _tvi.stateMask = m; + _tvi.state = d; + return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) &_tvi); + } +} + + +//#ifdef _WIN32_WCE // these are PPC only +/+ +extern (Windows) { + HWND CommandBar_Create(HINSTANCE, HWND, int); + BOOL CommandBar_Show(HWND, BOOL); + int CommandBar_AddBitmap(HWND, HINSTANCE, int, int, int, int); + HWND CommandBar_InsertComboBox(HWND, HINSTANCE, int, UINT, WORD, WORD); + BOOL CommandBar_InsertMenubar(HWND, HINSTANCE, WORD, WORD ); + BOOL CommandBar_InsertMenubarEx(HWND, HINSTANCE, LPTSTR, WORD); + BOOL CommandBar_DrawMenuBar(HWND, WORD); + HMENU CommandBar_GetMenu(HWND, WORD); + BOOL CommandBar_AddAdornments(HWND, DWORD, DWORD); + int CommandBar_Height(HWND hwndCB); +} + +// MinGW: These two are not in the DLL +void CommandBar_InsertButton(HWND hwnd, int i, LPTBBUTTON lptbbutton) { + SendMessage(hwnd, TB_INSERTBUTTON, i, lptbbutton); +} +alias DestroyWindow CommandBar_Destroy; ++/ +//#endif // _WIN32_WCE + + +static if (_WIN32_WINNT >= 0x501) { + struct EDITBALLOONTIP + { + DWORD cbStruct; + LPCWSTR pszTitle; + LPCWSTR pszText; + INT ttiIcon; + } + alias EDITBALLOONTIP* PEDITBALLOONTIP; + + const EM_SETCUEBANNER = ECM_FIRST + 1; + const EM_GETCUEBANNER = ECM_FIRST + 2; + const EM_SHOWBALLOONTIP = ECM_FIRST + 3; + const EM_HIDEBALLOONTIP = ECM_FIRST + 4; +} + +static if (_WIN32_WINNT >= 0x600) { + const EM_SETHILITE = ECM_FIRST + 5; + const EM_GETHILITE = ECM_FIRST + 6; +} diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d new file mode 100644 index 0000000000..c57db79d6d --- /dev/null +++ b/src/core/sys/windows/commdlg.d @@ -0,0 +1,717 @@ +/***********************************************************************\ +* commdlg.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.12 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.commdlg; +pragma(lib, "comdlg32"); + +private import win32.w32api; +import win32.windef, win32.winuser; +import win32.wingdi; // for LPLOGFONTA + +const TCHAR[] + LBSELCHSTRING = "commdlg_LBSelChangedNotify", + SHAREVISTRING = "commdlg_ShareViolation", + FILEOKSTRING = "commdlg_FileNameOK", + COLOROKSTRING = "commdlg_ColorOK", + SETRGBSTRING = "commdlg_SetRGBColor", + HELPMSGSTRING = "commdlg_help", + FINDMSGSTRING = "commdlg_FindReplace"; + +enum : UINT { + CDN_FIRST = -601, // also in commctrl.h + CDN_LAST = -699, + CDN_INITDONE = CDN_FIRST, + CDN_SELCHANGE = CDN_FIRST - 1, + CDN_FOLDERCHANGE = CDN_FIRST - 2, + CDN_SHAREVIOLATION = CDN_FIRST - 3, + CDN_HELP = CDN_FIRST - 4, + CDN_FILEOK = CDN_FIRST - 5, + CDN_TYPECHANGE = CDN_FIRST - 6, +} + +static if(_WIN32_WINNT >= 0x500) +{ + enum : UINT { + CDN_INCLUDEITEM = CDN_FIRST - 7, + } +} + +enum : UINT { + CDM_FIRST = WM_USER + 100, + CDM_LAST = WM_USER + 200, + CDM_GETSPEC = CDM_FIRST, + CDM_GETFILEPATH, + CDM_GETFOLDERPATH, + CDM_GETFOLDERIDLIST, + CDM_SETCONTROLTEXT, + CDM_HIDECONTROL, + CDM_SETDEFEXT // = CDM_FIRST + 6 +} + +// flags for ChooseColor +enum : DWORD { + CC_RGBINIT = 0x0001, + CC_FULLOPEN = 0x0002, + CC_PREVENTFULLOPEN = 0x0004, + CC_SHOWHELP = 0x0008, + CC_ENABLEHOOK = 0x0010, + CC_ENABLETEMPLATE = 0x0020, + CC_ENABLETEMPLATEHANDLE = 0x0040, + CC_SOLIDCOLOR = 0x0080, + CC_ANYCOLOR = 0x0100 +} + +// flags for ChooseFont +enum : DWORD { + CF_SCREENFONTS = 0x00000001, + CF_PRINTERFONTS = 0x00000002, + CF_BOTH = 0x00000003, + CF_SHOWHELP = 0x00000004, + CF_ENABLEHOOK = 0x00000008, + CF_ENABLETEMPLATE = 0x00000010, + CF_ENABLETEMPLATEHANDLE = 0x00000020, + CF_INITTOLOGFONTSTRUCT = 0x00000040, + CF_USESTYLE = 0x00000080, + CF_EFFECTS = 0x00000100, + CF_APPLY = 0x00000200, + CF_ANSIONLY = 0x00000400, + CF_SCRIPTSONLY = CF_ANSIONLY, + CF_NOVECTORFONTS = 0x00000800, + CF_NOOEMFONTS = 0x00000800, + CF_NOSIMULATIONS = 0x00001000, + CF_LIMITSIZE = 0x00002000, + CF_FIXEDPITCHONLY = 0x00004000, + CF_WYSIWYG = 0x00008000, + CF_FORCEFONTEXIST = 0x00010000, + CF_SCALABLEONLY = 0x00020000, + CF_TTONLY = 0x00040000, + CF_NOFACESEL = 0x00080000, + CF_NOSTYLESEL = 0x00100000, + CF_NOSIZESEL = 0x00200000, + CF_SELECTSCRIPT = 0x00400000, + CF_NOSCRIPTSEL = 0x00800000, + CF_NOVERTFONTS = 0x01000000 +} + +// Font type for ChooseFont +enum : WORD { + BOLD_FONTTYPE = 0x0100, + ITALIC_FONTTYPE = 0x0200, + REGULAR_FONTTYPE = 0x0400, + SCREEN_FONTTYPE = 0x2000, + PRINTER_FONTTYPE = 0x4000, + SIMULATED_FONTTYPE = 0x8000 +} + +enum : UINT { + WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1, + WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101, + WM_CHOOSEFONT_SETFLAGS = WM_USER + 102 +} + +// flags for OpenFileName +enum : DWORD { + OFN_SHAREWARN = 0, + OFN_SHARENOWARN = 0x000001, + OFN_READONLY = 0x000001, + OFN_SHAREFALLTHROUGH = 0x000002, + OFN_OVERWRITEPROMPT = 0x000002, + OFN_HIDEREADONLY = 0x000004, + OFN_NOCHANGEDIR = 0x000008, + OFN_SHOWHELP = 0x000010, + OFN_ENABLEHOOK = 0x000020, + OFN_ENABLETEMPLATE = 0x000040, + OFN_ENABLETEMPLATEHANDLE = 0x000080, + OFN_NOVALIDATE = 0x000100, + OFN_ALLOWMULTISELECT = 0x000200, + OFN_EXTENSIONDIFFERENT = 0x000400, + OFN_PATHMUSTEXIST = 0x000800, + OFN_FILEMUSTEXIST = 0x001000, + OFN_CREATEPROMPT = 0x002000, + OFN_SHAREAWARE = 0x004000, + OFN_NOREADONLYRETURN = 0x008000, + OFN_NOTESTFILECREATE = 0x010000, + OFN_NONETWORKBUTTON = 0x020000, + OFN_NOLONGNAMES = 0x040000, + OFN_EXPLORER = 0x080000, + OFN_NODEREFERENCELINKS = 0x100000, + OFN_LONGNAMES = 0x200000, + OFN_ENABLESIZING = 0x800000 +} + +enum : DWORD { + FR_DOWN = 0x00000001, + FR_WHOLEWORD = 0x00000002, + FR_MATCHCASE = 0x00000004, + FR_FINDNEXT = 0x00000008, + FR_REPLACE = 0x00000010, + FR_REPLACEALL = 0x00000020, + FR_DIALOGTERM = 0x00000040, + FR_SHOWHELP = 0x00000080, + FR_ENABLEHOOK = 0x00000100, + FR_ENABLETEMPLATE = 0x00000200, + FR_NOUPDOWN = 0x00000400, + FR_NOMATCHCASE = 0x00000800, + FR_NOWHOLEWORD = 0x00001000, + FR_ENABLETEMPLATEHANDLE = 0x00002000, + FR_HIDEUPDOWN = 0x00004000, + FR_HIDEMATCHCASE = 0x00008000, + FR_HIDEWHOLEWORD = 0x00010000, + FR_MATCHDIAC = 0x20000000, + FR_MATCHKASHIDA = 0x40000000, + FR_MATCHALEFHAMZA = 0x80000000 +} + +enum : DWORD { + PD_ALLPAGES = 0, + PD_SELECTION = 0x000001, + PD_PAGENUMS = 0x000002, + PD_NOSELECTION = 0x000004, + PD_NOPAGENUMS = 0x000008, + PD_COLLATE = 0x000010, + PD_PRINTTOFILE = 0x000020, + PD_PRINTSETUP = 0x000040, + PD_NOWARNING = 0x000080, + PD_RETURNDC = 0x000100, + PD_RETURNIC = 0x000200, + PD_RETURNDEFAULT = 0x000400, + PD_SHOWHELP = 0x000800, + PD_ENABLEPRINTHOOK = 0x001000, + PD_ENABLESETUPHOOK = 0x002000, + PD_ENABLEPRINTTEMPLATE = 0x004000, + PD_ENABLESETUPTEMPLATE = 0x008000, + PD_ENABLEPRINTTEMPLATEHANDLE = 0x010000, + PD_ENABLESETUPTEMPLATEHANDLE = 0x020000, + PD_USEDEVMODECOPIES = 0x040000, + PD_USEDEVMODECOPIESANDCOLLATE = 0x040000, + PD_DISABLEPRINTTOFILE = 0x080000, + PD_HIDEPRINTTOFILE = 0x100000, + PD_NONETWORKBUTTON = 0x200000 +} + +static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + PD_CURRENTPAGE = 0x00400000, + PD_NOCURRENTPAGE = 0x00800000, + PD_EXCLUSIONFLAGS = 0x01000000, + PD_USELARGETEMPLATE = 0x10000000, + } + + enum : HRESULT { + PD_RESULT_CANCEL, + PD_RESULT_PRINT, + PD_RESULT_APPLY + } + + const DWORD START_PAGE_GENERAL = 0xFFFFFFFF; +} + +enum { + PSD_DEFAULTMINMARGINS = 0, + PSD_INWININIINTLMEASURE = 0, + PSD_MINMARGINS = 0x000001, + PSD_MARGINS = 0x000002, + PSD_INTHOUSANDTHSOFINCHES = 0x000004, + PSD_INHUNDREDTHSOFMILLIMETERS = 0x000008, + PSD_DISABLEMARGINS = 0x000010, + PSD_DISABLEPRINTER = 0x000020, + PSD_NOWARNING = 0x000080, + PSD_DISABLEORIENTATION = 0x000100, + PSD_DISABLEPAPER = 0x000200, + PSD_RETURNDEFAULT = 0x000400, + PSD_SHOWHELP = 0x000800, + PSD_ENABLEPAGESETUPHOOK = 0x002000, + PSD_ENABLEPAGESETUPTEMPLATE = 0x008000, + PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x020000, + PSD_ENABLEPAGEPAINTHOOK = 0x040000, + PSD_DISABLEPAGEPAINTING = 0x080000 +} + +enum : UINT { + WM_PSD_PAGESETUPDLG = WM_USER, + WM_PSD_FULLPAGERECT, + WM_PSD_MINMARGINRECT, + WM_PSD_MARGINRECT, + WM_PSD_GREEKTEXTRECT, + WM_PSD_ENVSTAMPRECT, + WM_PSD_YAFULLPAGERECT // = WM_USER + 6 +} + +enum : int { + CD_LBSELNOITEMS = -1, + CD_LBSELCHANGE, + CD_LBSELSUB, + CD_LBSELADD +} + +const WORD DN_DEFAULTPRN = 1; + +/+ +// Both MinGW and the windows docs indicate that there are macros for the send messages +// the controls. These seem to be totally unnecessary -- and at least one of MinGW or +// Windows Docs is buggy! + +int CommDlg_OpenSave_GetSpec(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETSPEC, wParam, lParam); +} + +int CommDlg_OpenSave_GetFilePath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETFILEPATH, wParam, lParam); +} + +int CommDlg_OpenSave_GetFolderPath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETFOLDERPATH, wParam, lParam); +} + +int CommDlg_OpenSave_GetFolderIDList(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETFOLDERIDLIST, wParam, lParam); +} + +void CommDlg_OpenSave_SetControlText(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_SETCONTROLTEXT, wParam, lParam); +} + +void CommDlg_OpenSave_HideControl(HWND hWndControl, WPARAM wParam) { + return SendMessage(hWndControl, CDM_HIDECONTROL, wParam, 0); +} + +void CommDlg_OpenSave_SetDefExt(HWND hWndControl, TCHAR* lparam) { + return SendMessage(hWndControl, CDM_SETCONTROLTEXT, 0, cast(LPARAM)lParam); +} + +// These aliases seem even more unnecessary +alias CommDlg_OpenSave_GetSpec + CommDlg_OpenSave_GetSpecA, CommDlg_OpenSave_GetSpecW; +alias CommDlg_OpenSave_GetFilePath + CommDlg_OpenSave_GetFilePathA, CommDlg_OpenSave_GetFilePathW; +alias CommDlg_OpenSave_GetFolderPath + CommDlg_OpenSave_GetFolderPathA, CommDlg_OpenSave_GetFolderPathW; ++/ + +// Callbacks. +extern(Windows) { +alias UINT_PTR function (HWND, UINT, WPARAM, LPARAM) + LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC, + LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; +} + +align (1): + +struct CHOOSECOLORA { + DWORD lStructSize = CHOOSECOLORA.sizeof; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF* lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias CHOOSECOLORA* LPCHOOSECOLORA; + +struct CHOOSECOLORW { + DWORD lStructSize = CHOOSECOLORW.sizeof; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF* lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias CHOOSECOLORW* LPCHOOSECOLORW; + +align (4) struct CHOOSEFONTA { + DWORD lStructSize = CHOOSEFONTA.sizeof; + HWND hwndOwner; + HDC hDC; + LPLOGFONTA lpLogFont; + INT iPointSize; + DWORD Flags; + DWORD rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + HINSTANCE hInstance; + LPSTR lpszStyle; + WORD nFontType; + //WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; +} +alias CHOOSEFONTA* LPCHOOSEFONTA; + +align (4) struct CHOOSEFONTW { + DWORD lStructSize = CHOOSEFONTW.sizeof; + HWND hwndOwner; + HDC hDC; + LPLOGFONTW lpLogFont; + INT iPointSize; + DWORD Flags; + DWORD rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + HINSTANCE hInstance; + LPWSTR lpszStyle; + WORD nFontType; + //WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; +} +alias CHOOSEFONTW* LPCHOOSEFONTW; + +struct DEVNAMES { + WORD wDriverOffset; + WORD wDeviceOffset; + WORD wOutputOffset; + WORD wDefault; +} +alias DEVNAMES* LPDEVNAMES; + +struct FINDREPLACEA { + DWORD lStructSize = FINDREPLACEA.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPSTR lpstrFindWhat; + LPSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias FINDREPLACEA* LPFINDREPLACEA; + +struct FINDREPLACEW { + DWORD lStructSize = FINDREPLACEW.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPWSTR lpstrFindWhat; + LPWSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias FINDREPLACEW* LPFINDREPLACEW; + +struct OPENFILENAMEA { + DWORD lStructSize = OPENFILENAMEA.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpstrFilter; + LPSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPSTR lpstrFile; + DWORD nMaxFile; + LPSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCSTR lpstrInitialDir; + LPCSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCSTR lpstrDefExt; + DWORD lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + + static if (_WIN32_WINNT >= 0x500) { + void *pvReserved; + DWORD dwReserved; + DWORD FlagsEx; + } +} +alias OPENFILENAMEA* LPOPENFILENAMEA; + +struct OPENFILENAMEW { + DWORD lStructSize = OPENFILENAMEW.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpstrFilter; + LPWSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPWSTR lpstrFile; + DWORD nMaxFile; + LPWSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCWSTR lpstrInitialDir; + LPCWSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCWSTR lpstrDefExt; + DWORD lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + + static if (_WIN32_WINNT >= 0x500) { + void *pvReserved; + DWORD dwReserved; + DWORD FlagsEx; + } +} +alias OPENFILENAMEW* LPOPENFILENAMEW; + +const size_t OPENFILENAME_SIZE_VERSION_400 = 76; + +struct OFNOTIFYA { + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPSTR pszFile; +} +alias OFNOTIFYA* LPOFNOTIFYA; + +struct OFNOTIFYW { + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPWSTR pszFile; +} +alias OFNOTIFYW* LPOFNOTIFYW; + +struct PAGESETUPDLGA { + DWORD lStructSize = PAGESETUPDLGA.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + DWORD Flags; + POINT ptPaperSize; + RECT rtMinMargin; + RECT rtMargin; + HINSTANCE hInstance; + LPARAM lCustData; + LPPAGESETUPHOOK lpfnPageSetupHook; + LPPAGEPAINTHOOK lpfnPagePaintHook; + LPCSTR lpPageSetupTemplateName; + HGLOBAL hPageSetupTemplate; +} +alias PAGESETUPDLGA* LPPAGESETUPDLGA; + +struct PAGESETUPDLGW { + DWORD lStructSize = PAGESETUPDLGW.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + DWORD Flags; + POINT ptPaperSize; + RECT rtMinMargin; + RECT rtMargin; + HINSTANCE hInstance; + LPARAM lCustData; + LPPAGESETUPHOOK lpfnPageSetupHook; + LPPAGEPAINTHOOK lpfnPagePaintHook; + LPCWSTR lpPageSetupTemplateName; + HGLOBAL hPageSetupTemplate; +} +alias PAGESETUPDLGW* LPPAGESETUPDLGW; + +struct PRINTDLGA { + DWORD lStructSize = PRINTDLGA.sizeof; + HWND hwndOwner; + HANDLE hDevMode; + HANDLE hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + DWORD lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCSTR lpPrintTemplateName; + LPCSTR lpSetupTemplateName; + HANDLE hPrintTemplate; + HANDLE hSetupTemplate; +} +alias PRINTDLGA* LPPRINTDLGA; + +struct PRINTDLGW { + DWORD lStructSize = PRINTDLGW.sizeof; + HWND hwndOwner; + HANDLE hDevMode; + HANDLE hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + DWORD lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCWSTR lpPrintTemplateName; + LPCWSTR lpSetupTemplateName; + HANDLE hPrintTemplate; + HANDLE hSetupTemplate; +} +alias PRINTDLGW* LPPRINTDLGW; + +static if (_WIN32_WINNT >= 0x500) { + import win32.unknwn; // for LPUNKNOWN + import win32.prsht; // for HPROPSHEETPAGE + + struct PRINTPAGERANGE { + DWORD nFromPage; + DWORD nToPage; + } + alias PRINTPAGERANGE* LPPRINTPAGERANGE; + + struct PRINTDLGEXA { + DWORD lStructSize = PRINTDLGEXA.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + DWORD Flags2; + DWORD ExclusionFlags; + DWORD nPageRanges; + DWORD nMaxPageRanges; + LPPRINTPAGERANGE lpPageRanges; + DWORD nMinPage; + DWORD nMaxPage; + DWORD nCopies; + HINSTANCE hInstance; + LPCSTR lpPrintTemplateName; + LPUNKNOWN lpCallback; + DWORD nPropertyPages; + HPROPSHEETPAGE* lphPropertyPages; + DWORD nStartPage; + DWORD dwResultAction; + } + alias PRINTDLGEXA* LPPRINTDLGEXA; + + struct PRINTDLGEXW { + DWORD lStructSize = PRINTDLGEXW.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + DWORD Flags2; + DWORD ExclusionFlags; + DWORD nPageRanges; + DWORD nMaxPageRanges; + LPPRINTPAGERANGE lpPageRanges; + DWORD nMinPage; + DWORD nMaxPage; + DWORD nCopies; + HINSTANCE hInstance; + LPCWSTR lpPrintTemplateName; + LPUNKNOWN lpCallback; + DWORD nPropertyPages; + HPROPSHEETPAGE* lphPropertyPages; + DWORD nStartPage; + DWORD dwResultAction; + } + alias PRINTDLGEXW* LPPRINTDLGEXW; + +} // _WIN32_WINNT >= 0x500 + +extern (Windows) { + BOOL ChooseColorA(LPCHOOSECOLORA); + BOOL ChooseColorW(LPCHOOSECOLORW); + BOOL ChooseFontA(LPCHOOSEFONTA); + BOOL ChooseFontW(LPCHOOSEFONTW); + DWORD CommDlgExtendedError(); + HWND FindTextA(LPFINDREPLACEA); + HWND FindTextW(LPFINDREPLACEW); + short GetFileTitleA(LPCSTR, LPSTR, WORD); + short GetFileTitleW(LPCWSTR, LPWSTR, WORD); + BOOL GetOpenFileNameA(LPOPENFILENAMEA); + BOOL GetOpenFileNameW(LPOPENFILENAMEW); + BOOL GetSaveFileNameA(LPOPENFILENAMEA); + BOOL GetSaveFileNameW(LPOPENFILENAMEW); + BOOL PageSetupDlgA(LPPAGESETUPDLGA); + BOOL PageSetupDlgW(LPPAGESETUPDLGW); + BOOL PrintDlgA(LPPRINTDLGA); + BOOL PrintDlgW(LPPRINTDLGW); + HWND ReplaceTextA(LPFINDREPLACEA); + HWND ReplaceTextW(LPFINDREPLACEW); + + static if (_WIN32_WINNT >= 0x500) { + HRESULT PrintDlgExA(LPPRINTDLGEXA); + HRESULT PrintDlgExW(LPPRINTDLGEXW); + } +} + +version (Unicode) { + alias CHOOSECOLORW CHOOSECOLOR; + alias CHOOSEFONTW CHOOSEFONT; + alias FINDREPLACEW FINDREPLACE; + alias OPENFILENAMEW OPENFILENAME; + alias OFNOTIFYW OFNOTIFY; + alias PAGESETUPDLGW PAGESETUPDLG; + alias PRINTDLGW PRINTDLG; + + alias ChooseColorW ChooseColor; + alias ChooseFontW ChooseFont; + alias FindTextW FindText; + alias GetFileTitleW GetFileTitle; + alias GetOpenFileNameW GetOpenFileName; + alias GetSaveFileNameW GetSaveFileName; + alias PageSetupDlgW PageSetupDlg; + alias PrintDlgW PrintDlg; + alias ReplaceTextW ReplaceText; + + static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEXW PRINTDLGEX; + alias PrintDlgExW PrintDlgEx; + } + +} else { // UNICODE + + alias CHOOSECOLORA CHOOSECOLOR; + alias CHOOSEFONTA CHOOSEFONT; + alias FINDREPLACEA FINDREPLACE; + alias OPENFILENAMEA OPENFILENAME; + alias OFNOTIFYA OFNOTIFY; + alias PAGESETUPDLGA PAGESETUPDLG; + alias PRINTDLGA PRINTDLG; + + alias ChooseColorA ChooseColor; + alias ChooseFontA ChooseFont; + alias FindTextA FindText; + alias GetFileTitleA GetFileTitle; + alias GetOpenFileNameA GetOpenFileName; + alias GetSaveFileNameA GetSaveFileName; + alias PageSetupDlgA PageSetupDlg; + alias PrintDlgA PrintDlg; + alias ReplaceTextA ReplaceText; + + static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEXA PRINTDLGEX; + alias PrintDlgExA PrintDlgEx; + } + +} // UNICODE + +alias CHOOSECOLOR* LPCHOOSECOLOR; +alias CHOOSEFONT* LPCHOOSEFONT; +alias FINDREPLACE* LPFINDREPLACE; +alias OPENFILENAME* LPOPENFILENAME; +alias OFNOTIFY* LPOFNOTIFY; +alias PAGESETUPDLG* LPPAGESETUPDLG; +alias PRINTDLG* LPPRINTDLG; +static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEX* LPPRINTDLGEX; +} diff --git a/src/core/sys/windows/core.d b/src/core/sys/windows/core.d new file mode 100644 index 0000000000..b540886ece --- /dev/null +++ b/src/core/sys/windows/core.d @@ -0,0 +1,30 @@ +/***********************************************************************\ +* core.d * +* * +* Helper module for the Windows API * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.core; + +/** + The core Windows API functions. + + Importing this file is equivalent to the C code: + --- + #define WIN32_LEAN_AND_MEAN + #include "windows.h" + --- + +*/ + +public import win32.windef; +public import win32.winnt; +public import win32.wincon; +public import win32.winbase; +public import win32.wingdi; +public import win32.winuser; +public import win32.winnls; +public import win32.winver; +public import win32.winnetwk; +public import win32.winsvc; diff --git a/src/core/sys/windows/cpl.d b/src/core/sys/windows/cpl.d new file mode 100644 index 0000000000..f444e48b82 --- /dev/null +++ b/src/core/sys/windows/cpl.d @@ -0,0 +1,77 @@ +/***********************************************************************\ +* cpl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.cpl; + +private import win32.windef, win32.winuser; + +enum : uint { + WM_CPL_LAUNCH = WM_USER + 1000, + WM_CPL_LAUNCHED +} + +enum : uint { + CPL_DYNAMIC_RES, + CPL_INIT, + CPL_GETCOUNT, + CPL_INQUIRE, + CPL_SELECT, + CPL_DBLCLK, + CPL_STOP, + CPL_EXIT, + CPL_NEWINQUIRE, + CPL_STARTWPARMSA, + CPL_STARTWPARMSW, // = 10 + CPL_SETUP = 200 +} + +extern (Windows) alias LONG function(HWND, UINT, LONG, LONG) APPLET_PROC; + +struct CPLINFO { + int idIcon; + int idName; + int idInfo; + LONG lData; +} +alias CPLINFO* LPCPLINFO; + +struct NEWCPLINFOA { + DWORD dwSize = NEWCPLINFOA.sizeof; + DWORD dwFlags; + DWORD dwHelpContext; + LONG lData; + HICON hIcon; + CHAR[32] szName; + CHAR[64] szInfo; + CHAR[128] szHelpFile; +} +alias NEWCPLINFOA* LPNEWCPLINFOA; + +struct NEWCPLINFOW { + DWORD dwSize = NEWCPLINFOW.sizeof; + DWORD dwFlags; + DWORD dwHelpContext; + LONG lData; + HICON hIcon; + WCHAR[32] szName; + WCHAR[64] szInfo; + WCHAR[128] szHelpFile; +} +alias NEWCPLINFOW* LPNEWCPLINFOW; + +version (Unicode) { + alias CPL_STARTWPARMSW CPL_STARTWPARMS; + alias NEWCPLINFOW NEWCPLINFO; +} else { + alias CPL_STARTWPARMSA CPL_STARTWPARMS; + alias NEWCPLINFOA NEWCPLINFO; +} + +alias NEWCPLINFO* LPNEWCPLINFO; diff --git a/src/core/sys/windows/cplext.d b/src/core/sys/windows/cplext.d new file mode 100644 index 0000000000..1b6bfcfbf2 --- /dev/null +++ b/src/core/sys/windows/cplext.d @@ -0,0 +1,19 @@ +/***********************************************************************\ +* cplext.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.cplext; + +enum : uint { + CPLPAGE_MOUSE_BUTTONS = 1, + CPLPAGE_MOUSE_PTRMOTION = 2, + CPLPAGE_MOUSE_WHEEL = 3, + CPLPAGE_KEYBOARD_SPEED = 1, + CPLPAGE_DISPLAY_BACKGROUND = 1 +} diff --git a/src/core/sys/windows/custcntl.d b/src/core/sys/windows/custcntl.d new file mode 100644 index 0000000000..1bbfed4878 --- /dev/null +++ b/src/core/sys/windows/custcntl.d @@ -0,0 +1,122 @@ +/***********************************************************************\ +* custcntl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.custcntl; + +private import win32.windef; + +// FIXME: check type +const CCF_NOTEXT = 1; + +const size_t + CCHCCCLASS = 32, + CCHCCDESC = 32, + CCHCCTEXT = 256; + +struct CCSTYLEA { + DWORD flStyle; + DWORD flExtStyle; + CHAR[CCHCCTEXT] szText; + LANGID lgid; + WORD wReserved1; +} +alias CCSTYLEA* LPCCSTYLEA; + +struct CCSTYLEW { + DWORD flStyle; + DWORD flExtStyle; + WCHAR[CCHCCTEXT] szText; + LANGID lgid; + WORD wReserved1; +} +alias CCSTYLEW* LPCCSTYLEW; + +struct CCSTYLEFLAGA { + DWORD flStyle; + DWORD flStyleMask; + LPSTR pszStyle; +} +alias CCSTYLEFLAGA* LPCCSTYLEFLAGA; + +struct CCSTYLEFLAGW { + DWORD flStyle; + DWORD flStyleMask; + LPWSTR pszStyle; +} +alias CCSTYLEFLAGW* LPCCSTYLEFLAGW; + +struct CCINFOA { + CHAR[CCHCCCLASS] szClass; + DWORD flOptions; + CHAR[CCHCCDESC] szDesc; + UINT cxDefault; + UINT cyDefault; + DWORD flStyleDefault; + DWORD flExtStyleDefault; + DWORD flCtrlTypeMask; + CHAR[CCHCCTEXT] szTextDefault; + INT cStyleFlags; + LPCCSTYLEFLAGA aStyleFlags; + LPFNCCSTYLEA lpfnStyle; + LPFNCCSIZETOTEXTA lpfnSizeToText; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias CCINFOA* LPCCINFOA; + +struct CCINFOW { + WCHAR[CCHCCCLASS] szClass; + DWORD flOptions; + WCHAR[CCHCCDESC] szDesc; + UINT cxDefault; + UINT cyDefault; + DWORD flStyleDefault; + DWORD flExtStyleDefault; + DWORD flCtrlTypeMask; + WCHAR[CCHCCTEXT] szTextDefault; + INT cStyleFlags; + LPCCSTYLEFLAGW aStyleFlags; + LPFNCCSTYLEW lpfnStyle; + LPFNCCSIZETOTEXTW lpfnSizeToText; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias CCINFOW* LPCCINFOW; + +extern (Windows) { + alias BOOL function(HWND, LPCCSTYLEA) LPFNCCSTYLEA; + alias BOOL function(HWND, LPCCSTYLEW) LPFNCCSTYLEW; + alias INT function(DWORD, DWORD, HFONT, LPSTR) LPFNCCSIZETOTEXTA; + alias INT function(DWORD, DWORD, HFONT, LPWSTR) LPFNCCSIZETOTEXTW; + alias UINT function(LPCCINFOA) LPFNCCINFOA; + alias UINT function(LPCCINFOW) LPFNCCINFOW; + UINT CustomControlInfoA(LPCCINFOA acci); + UINT CustomControlInfoW(LPCCINFOW acci); +} + +version (Unicode) { + alias CCSTYLEW CCSTYLE; + alias CCSTYLEFLAGW CCSTYLEFLAG; + alias CCINFOW CCINFO; + alias LPFNCCSTYLEW LPFNCCSTYLE; + alias LPFNCCSIZETOTEXTW LPFNCCSIZETOTEXT; + alias LPFNCCINFOW LPFNCCINFO; +} else { + alias CCSTYLEA CCSTYLE; + alias CCSTYLEFLAGA CCSTYLEFLAG; + alias CCINFOA CCINFO; + alias LPFNCCSTYLEA LPFNCCSTYLE; + alias LPFNCCSIZETOTEXTA LPFNCCSIZETOTEXT; + alias LPFNCCINFOA LPFNCCINFO; +} + +alias CCSTYLE* LPCCSTYLE; +alias CCSTYLEFLAG* LPCCSTYLEFLAG; +alias CCINFO* LPCCINFO; diff --git a/src/core/sys/windows/dbt.d b/src/core/sys/windows/dbt.d new file mode 100644 index 0000000000..9275d52e82 --- /dev/null +++ b/src/core/sys/windows/dbt.d @@ -0,0 +1,189 @@ +/***********************************************************************\ +* dbt.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Vladimir Vlasov * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.dbt; + +import win32.w32api, win32.windef; +import win32.basetyps; // for GUID + +// FIXME: clean up Windows version support + +enum : DWORD { + DBT_NO_DISK_SPACE = 0x47, + DBT_CONFIGMGPRIVATE = 0x7FFF, + DBT_DEVICEARRIVAL = 0x8000, + DBT_DEVICEQUERYREMOVE = 0x8001, + DBT_DEVICEQUERYREMOVEFAILED = 0x8002, + DBT_DEVICEREMOVEPENDING = 0x8003, + DBT_DEVICEREMOVECOMPLETE = 0x8004, + DBT_DEVICETYPESPECIFIC = 0x8005, + DBT_DEVTYP_OEM = 0, + DBT_DEVTYP_DEVNODE, + DBT_DEVTYP_VOLUME, + DBT_DEVTYP_PORT, + DBT_DEVTYP_NET, + DBT_DEVTYP_DEVICEINTERFACE, + DBT_DEVTYP_HANDLE // = 6 +} + +enum : DWORD { + DBT_APPYBEGIN, + DBT_APPYEND, + DBT_DEVNODES_CHANGED = 7, + DBT_QUERYCHANGECONFIG = 0x17, + DBT_CONFIGCHANGED = 0x18, + DBT_CONFIGCHANGECANCELED = 0x19, + DBT_MONITORCHANGE = 0x1B, + DBT_SHELLLOGGEDON = 32, + DBT_CONFIGMGAPI32 = 34, + DBT_VXDINITCOMPLETE = 35, + DBT_VOLLOCKQUERYLOCK = 0x8041, + DBT_VOLLOCKLOCKTAKEN = 0x8042, + DBT_VOLLOCKLOCKFAILED = 0x8043, + DBT_VOLLOCKQUERYUNLOCK = 0x8044, + DBT_VOLLOCKLOCKRELEASED = 0x8045, + DBT_VOLLOCKUNLOCKFAILED = 0x8046, + DBT_USERDEFINED = 0xFFFF +} + +enum : WORD { + DBTF_MEDIA = 1, + DBTF_NET = 2 +} + +enum : DWORD { + BSM_ALLCOMPONENTS = 0, + BSM_APPLICATIONS = 8, + BSM_ALLDESKTOPS = 16, + BSM_INSTALLABLEDRIVERS = 4, + BSM_NETDRIVER = 2, + BSM_VXDS = 1, + BSF_FLUSHDISK = 0x00000004, + BSF_FORCEIFHUNG = 0x00000020, + BSF_IGNORECURRENTTASK = 0x00000002, + BSF_NOHANG = 0x00000008, + BSF_NOTIMEOUTIFNOTHUNG = 0x00000040, + BSF_POSTMESSAGE = 0x00000010, + BSF_QUERY = 0x00000001, + BSF_MSGSRV32ISOK_BIT = 31, + BSF_MSGSRV32ISOK = 0x80000000 +} + +static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + BSF_ALLOWSFW = 0x00000080, + BSF_SENDNOTIFYMESSAGE = 0x00000100 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum : DWORD { + BSF_LUID = 0x00000400, + BSF_RETURNHDESK = 0x00000200 + } +} + +struct DEV_BROADCAST_HDR { + DWORD dbch_size = DEV_BROADCAST_HDR.sizeof; + DWORD dbch_devicetype; + DWORD dbch_reserved; +} +alias DEV_BROADCAST_HDR* PDEV_BROADCAST_HDR; + +struct DEV_BROADCAST_OEM { + DWORD dbco_size = DEV_BROADCAST_OEM.sizeof; + DWORD dbco_devicetype; + DWORD dbco_reserved; + DWORD dbco_identifier; + DWORD dbco_suppfunc; +} +alias DEV_BROADCAST_OEM* PDEV_BROADCAST_OEM; + +struct DEV_BROADCAST_PORT_A { + DWORD dbcp_size = DEV_BROADCAST_PORT_A.sizeof; + DWORD dbcp_devicetype; + DWORD dbcp_reserved; + char _dbcp_name; + char* dbcp_name() { return &_dbcp_name; } +} +alias DEV_BROADCAST_PORT_A* PDEV_BROADCAST_PORT_A; + +struct DEV_BROADCAST_PORT_W { + DWORD dbcp_size = DEV_BROADCAST_PORT_W.sizeof; + DWORD dbcp_devicetype; + DWORD dbcp_reserved; + WCHAR _dbcp_name; + WCHAR* dbcp_name() { return &_dbcp_name; } +} +alias DEV_BROADCAST_PORT_W* PDEV_BROADCAST_PORT_W; + +struct DEV_BROADCAST_USERDEFINED { + DEV_BROADCAST_HDR dbud_dbh; + char _dbud_szName; + char* dbud_szName() { return &_dbud_szName; } +} + +struct DEV_BROADCAST_VOLUME { + DWORD dbcv_size = DEV_BROADCAST_VOLUME.sizeof; + DWORD dbcv_devicetype; + DWORD dbcv_reserved; + DWORD dbcv_unitmask; + WORD dbcv_flags; +} +alias DEV_BROADCAST_VOLUME* PDEV_BROADCAST_VOLUME; + +version (Unicode) { + alias DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT; +} else { + alias DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT; +} +alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; + +static if (_WIN32_WINNT >= 0x500) { + struct DEV_BROADCAST_DEVICEINTERFACE_A { + DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_A.sizeof; + DWORD dbcc_devicetype; + DWORD dbcc_reserved; + GUID dbcc_classguid; + char _dbcc_name; + char* dbcc_name() { return &_dbcc_name; } + } + alias DEV_BROADCAST_DEVICEINTERFACE_A* PDEV_BROADCAST_DEVICEINTERFACE_A; + + struct DEV_BROADCAST_DEVICEINTERFACE_W { + DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_W.sizeof; + DWORD dbcc_devicetype; + DWORD dbcc_reserved; + GUID dbcc_classguid; + WCHAR _dbcc_name; + WCHAR* dbcc_name() { return &_dbcc_name; } + } + alias DEV_BROADCAST_DEVICEINTERFACE_W* PDEV_BROADCAST_DEVICEINTERFACE_W; + + version (Unicode) { + alias DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE; + } else { + alias DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE; + } + alias DEV_BROADCAST_DEVICEINTERFACE* PDEV_BROADCAST_DEVICEINTERFACE; + + struct DEV_BROADCAST_HANDLE { + DWORD dbch_size = DEV_BROADCAST_HANDLE.sizeof; + DWORD dbch_devicetype; + DWORD dbch_reserved; + HANDLE dbch_handle; + DWORD dbch_hdevnotify; + GUID dbch_eventguid; + LONG dbch_nameoffset; + BYTE _dbch_data; + BYTE* dbch_data() { return &_dbch_data; } + } + alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; +} diff --git a/src/core/sys/windows/dde.d b/src/core/sys/windows/dde.d new file mode 100644 index 0000000000..9217643213 --- /dev/null +++ b/src/core/sys/windows/dde.d @@ -0,0 +1,215 @@ +/***********************************************************************\ +* dde.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.dde; +pragma(lib, "user32"); + +private import win32.windef; + +enum : uint { + WM_DDE_FIRST = 0x03E0, + WM_DDE_INITIATE = WM_DDE_FIRST, + WM_DDE_TERMINATE, + WM_DDE_ADVISE, + WM_DDE_UNADVISE, + WM_DDE_ACK, + WM_DDE_DATA, + WM_DDE_REQUEST, + WM_DDE_POKE, + WM_DDE_EXECUTE, + WM_DDE_LAST = WM_DDE_EXECUTE +} + +struct DDEACK { + ubyte bAppReturnCode; + ubyte _bf; + + @property ubyte reserved() { return cast(ubyte) (_bf & 0x3F); } + @property bool fBusy() { return cast(bool) (_bf & 0x40); } + @property bool fAck() { return cast(bool) (_bf & 0x80); } + + @property ubyte reserved(ubyte r) { + _bf = cast(ubyte) ((_bf & ~0x3F) | (r & 0x3F)); + return cast(ubyte)(r & 0x3F); + } + + @property bool fBusy(bool f) { _bf = cast(ubyte) ((_bf & ~0x40) | (f << 6)); return f; } + @property bool fAck(bool f) { _bf = cast(ubyte) ((_bf & ~0x80) | (f << 7)); return f; } +} + +struct DDEADVISE { + ushort _bf; + short cfFormat; + + @property ushort reserved() { return cast(ushort) (_bf & 0x3FFF); } + @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property ushort reserved(ushort r) { + _bf = cast(ushort) ((_bf & ~0x3FFF) | (r & 0x3FFF)); + return cast(ushort)(r & 0x3FFF); + } + + @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +struct DDEDATA { + ushort _bf; + short cfFormat; + byte _Value; + + @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } + @property bool fResponse() { return cast(bool) (_bf & 0x1000); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool reserved() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property byte* Value() { return &_Value; } + + @property ushort unused(ushort r) { + _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); + return cast(ushort)(r & 0x0FFF); + } + + @property bool fResponse(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool reserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +struct DDEPOKE { + ushort _bf; + short cfFormat; + byte _Value; + + @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property ubyte fReserved() { return cast(ubyte) ((_bf & 0xC000) >>> 14); } + + @property byte* Value() { return &_Value; } + + @property ushort unused(ushort u) { + _bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF)); + return cast(ushort)(u & 0x1FFF); + } + + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property ubyte fReserved(ubyte r) { _bf = cast(ushort) ((_bf & ~0xC000) | (r << 14)); return r; } +} + +deprecated struct DDELN { + ushort _bf; + short cfFormat; + + @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property ushort unused(ushort u) { + _bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF)); + return cast(ushort)(u & 0x1FFF); + } + + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +deprecated struct DDEUP { + ushort _bf; + short cfFormat; + byte _rgb; + + @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } + @property bool fAck() { return cast(bool) (_bf & 0x1000); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool fReserved() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property byte* rgb() { return &_rgb; } + + @property ushort unused(ushort r) { + _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); + return cast(ushort)(r & 0x0FFF); + } + + @property bool fAck(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool fReserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +extern (Windows) { + BOOL DdeSetQualityOfService(HWND, const(SECURITY_QUALITY_OF_SERVICE)*, + PSECURITY_QUALITY_OF_SERVICE); + BOOL ImpersonateDdeClientWindow(HWND, HWND); + LPARAM PackDDElParam(UINT, UINT_PTR, UINT_PTR); + BOOL UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR); + BOOL FreeDDElParam(UINT, LPARAM); + LPARAM ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR); +} + +debug (WindowsUnitTest) { + unittest { + DDEACK ddeack; + + with (ddeack) { + reserved = 10; + assert (_bf == 0x0A); + fBusy = true; + assert (_bf == 0x4A); + fAck = true; + assert (_bf == 0xCA); + + assert (reserved == 10); + assert (fBusy == true); + assert (fAck == true); + + reserved = 43; + assert (_bf == 0xEB); + fBusy = false; + assert (_bf == 0xAB); + fAck = false; + assert (_bf == 0x2B); + + assert (reserved == 43); + assert (fBusy == false); + assert (fAck == false); + } + + DDEPOKE ddepoke; + + with (ddepoke) { + unused = 3456; + assert (_bf == 0x0D80); + fRelease = true; + assert (_bf == 0x2D80); + fReserved = 2; + assert (_bf == 0xAD80); + + assert (unused == 3456); + assert (fRelease == true); + assert (fReserved == 2); + + unused = 2109; + assert (_bf == 0xa83d); + fRelease = false; + assert (_bf == 0x883d); + fReserved = 1; + assert (_bf == 0x483d); + + assert (unused == 2109); + assert (fRelease == false); + assert (fReserved == 1); + } + } +} diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d new file mode 100644 index 0000000000..1dca9b1b5e --- /dev/null +++ b/src/core/sys/windows/ddeml.d @@ -0,0 +1,377 @@ +/***********************************************************************\ +* ddeml.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ddeml; +pragma(lib, "user32"); + +private import win32.basetsd, win32.windef, win32.winnt; + +enum : int { + CP_WINANSI = 1004, + CP_WINUNICODE = 1200 +} + +enum : UINT { + XTYPF_NOBLOCK = 2, + XTYPF_NODATA = 4, + XTYPF_ACKREQ = 8 +} + +enum : UINT { + XCLASS_MASK = 0xFC00, + XCLASS_BOOL = 0x1000, + XCLASS_DATA = 0x2000, + XCLASS_FLAGS = 0x4000, + XCLASS_NOTIFICATION = 0x8000 +} + +enum : UINT { + XST_NULL, + XST_INCOMPLETE, + XST_CONNECTED, + XST_INIT1, + XST_INIT2, + XST_REQSENT, + XST_DATARCVD, + XST_POKESENT, + XST_POKEACKRCVD, + XST_EXECSENT, + XST_EXECACKRCVD, + XST_ADVSENT, + XST_UNADVSENT, + XST_ADVACKRCVD, + XST_UNADVACKRCVD, + XST_ADVDATASENT, + XST_ADVDATAACKRCVD // = 16 +} + +enum : UINT { + XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS, + XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK, + XTYP_ADVSTART = 0x0030 | XCLASS_BOOL, + XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION, + XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS, + XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK, + XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION, + XTYP_POKE = 0x0090 | XCLASS_FLAGS, + XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_REQUEST = 0x00B0 | XCLASS_DATA, + XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK, + XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_MASK = 0x00F0, + XTYP_SHIFT = 4 +} + +/+ +#define TIMEOUT_ASYNC 0xFFFFFFFF +#define QID_SYNC 0xFFFFFFFF ++/ + +enum : UINT { + ST_CONNECTED = 1, + ST_ADVISE = 2, + ST_ISLOCAL = 4, + ST_BLOCKED = 8, + ST_CLIENT = 16, + ST_TERMINATED = 32, + ST_INLIST = 64, + ST_BLOCKNEXT = 128, + ST_ISSELF = 256 +} + +/+ +#define CADV_LATEACK 0xFFFF ++/ + +enum : UINT { + DMLERR_NO_ERROR = 0, + DMLERR_FIRST = 0x4000, + DMLERR_ADVACKTIMEOUT = DMLERR_FIRST, + DMLERR_BUSY, + DMLERR_DATAACKTIMEOUT, + DMLERR_DLL_NOT_INITIALIZED, + DMLERR_DLL_USAGE, + DMLERR_EXECACKTIMEOUT, + DMLERR_INVALIDPARAMETER, + DMLERR_LOW_MEMORY, + DMLERR_MEMORY_ERROR, + DMLERR_NOTPROCESSED, + DMLERR_NO_CONV_ESTABLISHED, + DMLERR_POKEACKTIMEOUT, + DMLERR_POSTMSG_FAILED, + DMLERR_REENTRANCY, + DMLERR_SERVER_DIED, + DMLERR_SYS_ERROR, + DMLERR_UNADVACKTIMEOUT, + DMLERR_UNFOUND_QUEUE_ID, // = 0x4011 + DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID +} + +/+ +#define DDE_FACK 0x8000 +#define DDE_FBUSY 0x4000 +#define DDE_FDEFERUPD 0x4000 +#define DDE_FACKREQ 0x8000 +#define DDE_FRELEASE 0x2000 +#define DDE_FREQUESTED 0x1000 +#define DDE_FAPPSTATUS 0x00ff +#define DDE_FNOTPROCESSED 0 +#define DDE_FACKRESERVED (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS)) +#define DDE_FADVRESERVED (~(DDE_FACKREQ|DDE_FDEFERUPD)) +#define DDE_FDATRESERVED (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED)) +#define DDE_FPOKRESERVED (~DDE_FRELEASE) +#define MSGF_DDEMGR 0x8001 +#define CBR_BLOCK ((HDDEDATA)0xffffffff) ++/ + +const DWORD + APPCLASS_STANDARD = 0, + APPCLASS_MONITOR = 0x00000001, + APPCLASS_MASK = 0x0000000F, + APPCMD_CLIENTONLY = 0x00000010, + APPCMD_FILTERINITS = 0x00000020, + APPCMD_MASK = 0x00000FF0, + CBF_FAIL_SELFCONNECTIONS = 0x00001000, + CBF_FAIL_CONNECTIONS = 0x00002000, + CBF_FAIL_ADVISES = 0x00004000, + CBF_FAIL_EXECUTES = 0x00008000, + CBF_FAIL_POKES = 0x00010000, + CBF_FAIL_REQUESTS = 0x00020000, + CBF_FAIL_ALLSVRXACTIONS = 0x0003f000, + CBF_SKIP_CONNECT_CONFIRMS = 0x00040000, + CBF_SKIP_REGISTRATIONS = 0x00080000, + CBF_SKIP_UNREGISTRATIONS = 0x00100000, + CBF_SKIP_DISCONNECTS = 0x00200000, + CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000, + MF_HSZ_INFO = 0x01000000, + MF_SENDMSGS = 0x02000000, + MF_POSTMSGS = 0x04000000, + MF_CALLBACKS = 0x08000000, + MF_ERRORS = 0x10000000, + MF_LINKS = 0x20000000, + MF_CONV = 0x40000000, + MF_MASK = 0xFF000000; + +enum : UINT { + EC_ENABLEALL = 0, + EC_ENABLEONE = ST_BLOCKNEXT, + EC_DISABLE = ST_BLOCKED, + EC_QUERYWAITING = 2 +} + +enum : UINT { + DNS_REGISTER = 1, + DNS_UNREGISTER = 2, + DNS_FILTERON = 4, + DNS_FILTEROFF = 8 +} + +/+ +#define HDATA_APPOWNED 1 +#define MAX_MONITORS 4 ++/ + +enum : int { + MH_CREATE = 1, + MH_KEEP = 2, + MH_DELETE = 3, + MH_CLEANUP = 4 +} + +mixin DECLARE_HANDLE!("HCONVLIST"); +mixin DECLARE_HANDLE!("HCONV"); +mixin DECLARE_HANDLE!("HSZ"); +mixin DECLARE_HANDLE!("HDDEDATA"); + +extern (Windows) alias HDDEDATA + function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD) PFNCALLBACK; + +struct HSZPAIR { + HSZ hszSvc; + HSZ hszTopic; +} +alias HSZPAIR* PHSZPAIR; + +struct CONVCONTEXT { + UINT cb = CONVCONTEXT.sizeof; + UINT wFlags; + UINT wCountryID; + int iCodePage; + DWORD dwLangID; + DWORD dwSecurity; + SECURITY_QUALITY_OF_SERVICE qos; +} +alias CONVCONTEXT* PCONVCONTEXT; + +struct CONVINFO { + DWORD cb = CONVINFO.sizeof; + DWORD hUser; + HCONV hConvPartner; + HSZ hszSvcPartner; + HSZ hszServiceReq; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + UINT wType; + UINT wStatus; + UINT wConvst; + UINT wLastError; + HCONVLIST hConvList; + CONVCONTEXT ConvCtxt; + HWND hwnd; + HWND hwndPartner; +} +alias CONVINFO* PCONVINFO; + +struct DDEML_MSG_HOOK_DATA { + UINT_PTR uiLo; + UINT_PTR uiHi; + DWORD cbData; + DWORD[8] Data; +} + +struct MONHSZSTRUCT { + UINT cb = MONHSZSTRUCT.sizeof; + int fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + TCHAR[1] _str; + + TCHAR* str() { return _str.ptr; } +} +alias MONHSZSTRUCT* PMONHSZSTRUCT; + +struct MONLINKSTRUCT { + UINT cb = MONLINKSTRUCT.sizeof; + DWORD dwTime; + HANDLE hTask; + BOOL fEstablished; + BOOL fNoData; + HSZ hszSvc; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + BOOL fServer; + HCONV hConvServer; + HCONV hConvClient; +} +alias MONLINKSTRUCT* PMONLINKSTRUCT; + +struct MONCONVSTRUCT { + UINT cb = MONCONVSTRUCT.sizeof; + BOOL fConnect; + DWORD dwTime; + HANDLE hTask; + HSZ hszSvc; + HSZ hszTopic; + HCONV hConvClient; + HCONV hConvServer; +} +alias MONCONVSTRUCT* PMONCONVSTRUCT; + +struct MONCBSTRUCT { + UINT cb = MONCBSTRUCT.sizeof; + DWORD dwTime; + HANDLE hTask; + DWORD dwRet; + UINT wType; + UINT wFmt; + HCONV hConv; + HSZ hsz1; + HSZ hsz2; + HDDEDATA hData; + ULONG_PTR dwData1; + ULONG_PTR dwData2; + CONVCONTEXT cc; + DWORD cbData; + DWORD[8] Data; +} +alias MONCBSTRUCT* PMONCBSTRUCT; + +struct MONERRSTRUCT { + UINT cb = MONERRSTRUCT.sizeof; + UINT wLastError; + DWORD dwTime; + HANDLE hTask; +} +alias MONERRSTRUCT* PMONERRSTRUCT; + +struct MONMSGSTRUCT { + UINT cb = MONMSGSTRUCT.sizeof; + HWND hwndTo; + DWORD dwTime; + HANDLE hTask; + UINT wMsg; + WPARAM wParam; + LPARAM lParam; + DDEML_MSG_HOOK_DATA dmhd; +} +alias MONMSGSTRUCT* PMONMSGSTRUCT; + +extern (Windows) { + BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD); + PBYTE DdeAccessData(HDDEDATA, PDWORD); + HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD); + HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT, + DWORD, PDWORD); + int DdeCmpStringHandles(HSZ, HSZ); + HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT); + HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT); + HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT, + UINT); + HSZ DdeCreateStringHandleA(DWORD, LPSTR, int); + HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int); + BOOL DdeDisconnect(HCONV); + BOOL DdeDisconnectList(HCONVLIST); + BOOL DdeEnableCallback(DWORD, HCONV, UINT); + BOOL DdeFreeDataHandle(HDDEDATA); + BOOL DdeFreeStringHandle(DWORD, HSZ); + DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD); + UINT DdeGetLastError(DWORD); + BOOL DdeImpersonateClient(HCONV); + UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD); + UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD); + BOOL DdeKeepStringHandle(DWORD, HSZ); + HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT); + BOOL DdePostAdvise(DWORD, HSZ, HSZ); + UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO); + HCONV DdeQueryNextServer(HCONVLIST, HCONV); + DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int); + DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int); + HCONV DdeReconnect(HCONV); + BOOL DdeSetUserHandle(HCONV, DWORD, DWORD); + BOOL DdeUnaccessData(HDDEDATA); + BOOL DdeUninitialize(DWORD); +} + +const TCHAR[] + SZDDESYS_TOPIC = "System", + SZDDESYS_ITEM_TOPICS = "Topics", + SZDDESYS_ITEM_SYSITEMS = "SysItems", + SZDDESYS_ITEM_RTNMSG = "ReturnMessage", + SZDDESYS_ITEM_STATUS = "Status", + SZDDESYS_ITEM_FORMATS = "Formats", + SZDDESYS_ITEM_HELP = "Help", + SZDDE_ITEM_ITEMLIST = "TopicItemList"; + +version (Unicode) { + alias DdeCreateStringHandleW DdeCreateStringHandle; + alias DdeInitializeW DdeInitialize; + alias DdeQueryStringW DdeQueryString; +} else { + alias DdeCreateStringHandleA DdeCreateStringHandle; + alias DdeInitializeA DdeInitialize; + alias DdeQueryStringA DdeQueryString; +} diff --git a/src/core/sys/windows/dhcpcsdk.d b/src/core/sys/windows/dhcpcsdk.d new file mode 100644 index 0000000000..c9d9e11816 --- /dev/null +++ b/src/core/sys/windows/dhcpcsdk.d @@ -0,0 +1,58 @@ +/***********************************************************************\ +* dhcpcsdk.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.dhcpcsdk; + +private import win32.w32api, win32.windef; + +static assert (_WIN32_WINNT >= 0x500, +"win32.dhcpcsdk is available only if version Windows2000, WindowsXP, Windows2003 +or WindowsVista is set"); + +//#if (_WIN32_WINNT >= 0x500) + +// FIXME: check type +const DHCPCAPI_REGISTER_HANDLE_EVENT = 1; +const DHCPCAPI_REQUEST_PERSISTENT = 1; +const DHCPCAPI_REQUEST_SYNCHRONOUS = 2; + +struct DHCPCAPI_CLASSID { + ULONG Flags; + LPBYTE Data; + ULONG nBytesData; +} +alias DHCPCAPI_CLASSID* PDHCPCAPI_CLASSID, LPDHCPCAPI_CLASSID; + +struct DHCPAPI_PARAMS { + ULONG Flags; + ULONG OptionId; + BOOL IsVendor; + LPBYTE Data; + DWORD nBytesData; +} +alias DHCPAPI_PARAMS* PDHCPAPI_PARAMS, LPDHCPAPI_PARAMS; + +struct DHCPCAPI_PARAMS_ARRAY { + ULONG nParams; + LPDHCPAPI_PARAMS Params; +} +alias DHCPCAPI_PARAMS_ARRAY* PDHCPCAPI_PARAMS_ARRAY, LPDHCPCAPI_PARAMS_ARRAY; + +extern (Windows) { + void DhcpCApiCleanup(); + DWORD DhcpCApiInitialize(LPDWORD); + DWORD DhcpDeRegisterParamChange(DWORD, LPVOID, LPVOID); + DWORD DhcpRegisterParamChange(DWORD, LPVOID, PWSTR, LPDHCPCAPI_CLASSID, + DHCPCAPI_PARAMS_ARRAY, LPVOID); + DWORD DhcpRemoveDNSRegistrations(); + DWORD DhcpUndoRequestParams(DWORD, LPVOID, LPWSTR, LPWSTR); +} + +//#endif // (_WIN32_WINNT >= 0x500) diff --git a/src/core/sys/windows/dlgs.d b/src/core/sys/windows/dlgs.d new file mode 100644 index 0000000000..efdb1904d3 --- /dev/null +++ b/src/core/sys/windows/dlgs.d @@ -0,0 +1,191 @@ +/***********************************************************************\ +* dlgs.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.dlgs; + +private import win32.windef; + +enum : ushort { + FILEOPENORD = 1536, + MULTIFILEOPENORD = 1537, + PRINTDLGORD = 1538, + PRNSETUPDLGORD = 1539, + FINDDLGORD = 1540, + REPLACEDLGORD = 1541, + FONTDLGORD = 1542, + FORMATDLGORD31 = 1543, + FORMATDLGORD30 = 1544, + PAGESETUPDLGORD = 1546 +} + +enum : int { + ctlFirst = 0x400, + ctlLast = 0x4ff, + chx1 = 0x410, + chx2 = 0x411, + chx3 = 0x412, + chx4 = 0x413, + chx5 = 0x414, + chx6 = 0x415, + chx7 = 0x416, + chx8 = 0x417, + chx9 = 0x418, + chx10 = 0x419, + chx11 = 0x41a, + chx12 = 0x41b, + chx13 = 0x41c, + chx14 = 0x41d, + chx15 = 0x41e, + chx16 = 0x41f, + cmb1 = 0x470, + cmb2 = 0x471, + cmb3 = 0x472, + cmb4 = 0x473, + cmb5 = 0x474, + cmb6 = 0x475, + cmb7 = 0x476, + cmb8 = 0x477, + cmb9 = 0x478, + cmb10 = 0x479, + cmb11 = 0x47a, + cmb12 = 0x47b, + cmb13 = 0x47c, + cmb14 = 0x47d, + cmb15 = 0x47e, + cmb16 = 0x47f, + edt1 = 0x480, + edt2 = 0x481, + edt3 = 0x482, + edt4 = 0x483, + edt5 = 0x484, + edt6 = 0x485, + edt7 = 0x486, + edt8 = 0x487, + edt9 = 0x488, + edt10 = 0x489, + edt11 = 0x48a, + edt12 = 0x48b, + edt13 = 0x48c, + edt14 = 0x48d, + edt15 = 0x48e, + edt16 = 0x48f, + frm1 = 0x434, + frm2 = 0x435, + frm3 = 0x436, + frm4 = 0x437, + grp1 = 0x430, + grp2 = 0x431, + grp3 = 0x432, + grp4 = 0x433, + ico1 = 0x43c, + ico2 = 0x43d, + ico3 = 0x43e, + ico4 = 0x43f, + lst1 = 0x460, + lst2 = 0x461, + lst3 = 0x462, + lst4 = 0x463, + lst5 = 0x464, + lst6 = 0x465, + lst7 = 0x466, + lst8 = 0x467, + lst9 = 0x468, + lst10 = 0x469, + lst11 = 0x46a, + lst12 = 0x46b, + lst13 = 0x46c, + lst14 = 0x46d, + lst15 = 0x46e, + lst16 = 0x46f, + psh1 = 0x400, + psh2 = 0x401, + psh3 = 0x402, + psh4 = 0x403, + psh5 = 0x404, + psh6 = 0x405, + psh7 = 0x406, + psh8 = 0x407, + psh9 = 0x408, + psh10 = 0x409, + psh11 = 0x40a, + psh12 = 0x40b, + psh13 = 0x40c, + psh14 = 0x40d, + psh15 = 0x40e, + pshHelp = 0x40e, + psh16 = 0x40f, + rad1 = 0x420, + rad2 = 0x421, + rad3 = 0x422, + rad4 = 0x423, + rad5 = 0x424, + rad6 = 0x425, + rad7 = 0x426, + rad8 = 0x427, + rad9 = 0x428, + rad10 = 0x429, + rad11 = 0x42a, + rad12 = 0x42b, + rad13 = 0x42c, + rad14 = 0x42d, + rad15 = 0x42e, + rad16 = 0x42f, + rct1 = 0x438, + rct2 = 0x439, + rct3 = 0x43a, + rct4 = 0x43b, + scr1 = 0x490, + scr2 = 0x491, + scr3 = 0x492, + scr4 = 0x493, + scr5 = 0x494, + scr6 = 0x495, + scr7 = 0x496, + scr8 = 0x497, + stc1 = 0x440, + stc2 = 0x441, + stc3 = 0x442, + stc4 = 0x443, + stc5 = 0x444, + stc6 = 0x445, + stc7 = 0x446, + stc8 = 0x447, + stc9 = 0x448, + stc10 = 0x449, + stc11 = 0x44a, + stc12 = 0x44b, + stc13 = 0x44c, + stc14 = 0x44d, + stc15 = 0x44e, + stc16 = 0x44f, + stc17 = 0x450, + stc18 = 0x451, + stc19 = 0x452, + stc20 = 0x453, + stc21 = 0x454, + stc22 = 0x455, + stc23 = 0x456, + stc24 = 0x457, + stc25 = 0x458, + stc26 = 0x459, + stc27 = 0x45a, + stc28 = 0x45b, + stc29 = 0x45c, + stc30 = 0x45d, + stc31 = 0x45e, + stc32 = 0x45f +} + +struct CRGB { + ubyte bRed; + ubyte bGreen; + ubyte bBlue; + ubyte bExtra; +} diff --git a/src/core/sys/windows/docobj.d b/src/core/sys/windows/docobj.d new file mode 100644 index 0000000000..3882b65ede --- /dev/null +++ b/src/core/sys/windows/docobj.d @@ -0,0 +1,133 @@ +/***********************************************************************\ +* docobj.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.docobj; + +private import win32.basetyps, win32.oaidl, win32.objidl, win32.oleidl, + win32.unknwn, win32.windef, win32.wtypes; + +// FIXME: remove inherited methods from interface definitions + +enum { + OLECMDERR_E_UNKNOWNGROUP = -2147221244, + OLECMDERR_E_CANCELED = -2147221245, + OLECMDERR_E_NOHELP = -2147221246, + OLECMDERR_E_DISABLED = -2147221247, + OLECMDERR_E_NOTSUPPORTED = -2147221248 +} + +enum OLECMDID { + OLECMDID_OPEN = 1, + OLECMDID_NEW = 2, + OLECMDID_SAVE = 3, + OLECMDID_SAVEAS = 4, + OLECMDID_SAVECOPYAS = 5, + OLECMDID_PRINT = 6, + OLECMDID_PRINTPREVIEW = 7, + OLECMDID_PAGESETUP = 8, + OLECMDID_SPELL = 9, + OLECMDID_PROPERTIES = 10, + OLECMDID_CUT = 11, + OLECMDID_COPY = 12, + OLECMDID_PASTE = 13, + OLECMDID_PASTESPECIAL = 14, + OLECMDID_UNDO = 15, + OLECMDID_REDO = 16, + OLECMDID_SELECTALL = 17, + OLECMDID_CLEARSELECTION = 18, + OLECMDID_ZOOM = 19, + OLECMDID_GETZOOMRANGE = 20, + OLECMDID_UPDATECOMMANDS = 21, + OLECMDID_REFRESH = 22, + OLECMDID_STOP = 23, + OLECMDID_HIDETOOLBARS = 24, + OLECMDID_SETPROGRESSMAX = 25, + OLECMDID_SETPROGRESSPOS = 26, + OLECMDID_SETPROGRESSTEXT = 27, + OLECMDID_SETTITLE = 28, + OLECMDID_SETDOWNLOADSTATE = 29, + OLECMDID_STOPDOWNLOAD = 30 +} + +enum OLECMDF { + OLECMDF_SUPPORTED = 1, + OLECMDF_ENABLED = 2, + OLECMDF_LATCHED = 4, + OLECMDF_NINCHED = 8 +} + +enum OLECMDEXECOPT { + OLECMDEXECOPT_DODEFAULT = 0, + OLECMDEXECOPT_PROMPTUSER = 1, + OLECMDEXECOPT_DONTPROMPTUSER = 2, + OLECMDEXECOPT_SHOWHELP = 3 +} + +struct OLECMDTEXT { + DWORD cmdtextf; + ULONG cwActual; + ULONG cwBuf; + wchar[1] rgwz; +} + +struct OLECMD { + ULONG cmdID; + DWORD cmdf; +} + +alias IOleInPlaceSite LPOLEINPLACESITE; +alias IEnumOleDocumentViews LPENUMOLEDOCUMENTVIEWS; + +extern (C) extern const IID + IID_IContinueCallback, + IID_IEnumOleDocumentViews, + IID_IPrint, + IID_IOleDocumentView, + IID_IOleDocument, + IID_IOleCommandTarget, + IID_IOleDocumentSite; + + +interface IOleDocumentView : IUnknown { + HRESULT SetInPlaceSite(LPOLEINPLACESITE); + HRESULT GetInPlaceSite(LPOLEINPLACESITE*); + HRESULT GetDocument(IUnknown*); + HRESULT SetRect(LPRECT); + HRESULT GetRect(LPRECT); + HRESULT SetRectComplex(LPRECT, LPRECT, LPRECT, LPRECT); + HRESULT Show(BOOL); + HRESULT UIActivate(BOOL); + HRESULT Open(); + HRESULT Close(DWORD); + HRESULT SaveViewState(IStream); + HRESULT ApplyViewState(IStream); + HRESULT Clone(LPOLEINPLACESITE, IOleDocumentView*); +} + +interface IEnumOleDocumentViews : IUnknown { + HRESULT Next(ULONG, IOleDocumentView, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOleDocumentViews*); +} + +interface IOleDocument : IUnknown { + HRESULT CreateView(LPOLEINPLACESITE, IStream, DWORD, IOleDocumentView*); + HRESULT GetDocMiscStatus(DWORD*); + HRESULT EnumViews(LPENUMOLEDOCUMENTVIEWS*, IOleDocumentView*); +} + +interface IOleCommandTarget : IUnknown { + HRESULT QueryStatus(const(GUID)*, ULONG, OLECMD*, OLECMDTEXT*); + HRESULT Exec(const(GUID)*, DWORD, DWORD, VARIANTARG*, VARIANTARG*); +} + +interface IOleDocumentSite : IUnknown { + HRESULT ActivateMe(IOleDocumentView); +} diff --git a/src/core/sys/windows/errorrep.d b/src/core/sys/windows/errorrep.d new file mode 100644 index 0000000000..0e758391f0 --- /dev/null +++ b/src/core/sys/windows/errorrep.d @@ -0,0 +1,40 @@ +/***********************************************************************\ +* errorrep.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.errorrep; + +private import win32.w32api, win32.windef; + +static assert (_WIN32_WINNT >= 0x501, + "win32.errorrep is available only if version WindowsXP, Windows2003 " + "or WindowsVista is set"); + +enum EFaultRepRetVal { + frrvOk, + frrvOkManifest, + frrvOkQueued, + frrvErr, + frrvErrNoDW, + frrvErrTimeout, + frrvLaunchDebugger, + frrvOkHeadless // = 7 +} + +extern (Windows) { + BOOL AddERExcludedApplicationA(LPCSTR); + BOOL AddERExcludedApplicationW(LPCWSTR); + EFaultRepRetVal ReportFault(LPEXCEPTION_POINTERS, DWORD); +} + +version (Unicode) { + alias AddERExcludedApplicationW AddERExcludedApplication; +} else { + alias AddERExcludedApplicationA AddERExcludedApplication; +} diff --git a/src/core/sys/windows/exdisp.d b/src/core/sys/windows/exdisp.d new file mode 100644 index 0000000000..2db8df8817 --- /dev/null +++ b/src/core/sys/windows/exdisp.d @@ -0,0 +1,127 @@ +/***********************************************************************\ +* exdisp.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.exdisp; + +import win32.docobj, win32.oaidl, win32.ocidl; +private import win32.basetyps, win32.windef, win32.wtypes; + + +enum BrowserNavConstants { + navOpenInNewWindow = 0x01, + navNoHistory = 0x02, + navNoReadFromCache = 0x04, + navNoWriteTocache = 0x08, + navAllowAutosearch = 0x10, + navBrowserBar = 0x20, + navHyperLink = 0x40 +} + +interface IWebBrowser : IDispatch { + HRESULT GoBack(); + HRESULT GoForward(); + HRESULT GoHome(); + HRESULT GoSearch(); + HRESULT Navigate(BSTR, VARIANT*, VARIANT*, VARIANT*, VARIANT*); + HRESULT Refresh(); + HRESULT Refresh2(VARIANT*); + HRESULT Stop(); + HRESULT get_Application(IDispatch* ppDisp); + HRESULT get_Parent(IDispatch* ppDisp); + HRESULT get_Container(IDispatch* ppDisp); + HRESULT get_Document(IDispatch* ppDisp); + HRESULT get_TopLevelContainer(VARIANT_BOOL*); + HRESULT get_Type(BSTR*); + HRESULT get_Left(LONG*); + HRESULT put_Left(LONG); + HRESULT get_Top(LONG*); + HRESULT put_Top(LONG); + HRESULT get_Width(LONG*); + HRESULT put_Width(LONG); + HRESULT get_Height(LONG*); + HRESULT put_Height(LONG); + HRESULT get_LocationName(BSTR*); + HRESULT get_LocationURL(BSTR*); + HRESULT get_Busy(VARIANT_BOOL*); +} + +interface IWebBrowserApp : IWebBrowser { + HRESULT Quit(); + HRESULT ClientToWindow(int*, int*); + HRESULT PutProperty(BSTR, VARIANT); + HRESULT GetProperty(BSTR, VARIANT*); + HRESULT get_Name(BSTR*); + HRESULT get_HWND(LONG*); + HRESULT get_FullName(BSTR*); + HRESULT get_Path(BSTR*); + HRESULT get_Visible(VARIANT_BOOL*); + HRESULT put_Visible(VARIANT_BOOL); + HRESULT get_StatusBar(VARIANT_BOOL*); + HRESULT put_StatusBar(VARIANT_BOOL); + HRESULT get_StatusText(BSTR*); + HRESULT put_StatusText(BSTR); + HRESULT get_ToolBar(int*); + HRESULT put_ToolBar(int); + HRESULT get_MenuBar(VARIANT_BOOL*); + HRESULT put_MenuBar(VARIANT_BOOL); + HRESULT get_FullScreen(VARIANT_BOOL*); + HRESULT put_FullScreen(VARIANT_BOOL); +} + +interface IWebBrowser2 : IWebBrowserApp { + HRESULT Navigate2(VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*); + HRESULT QueryStatusWB(OLECMDID, OLECMDF*); + HRESULT ExecWB(OLECMDID, OLECMDEXECOPT, VARIANT*, VARIANT*); + HRESULT ShowBrowserBar(VARIANT*, VARIANT*, VARIANT*); + HRESULT get_ReadyState(READYSTATE*); + HRESULT get_Offline(VARIANT_BOOL*); + HRESULT put_Offline(VARIANT_BOOL); + HRESULT get_Silent(VARIANT_BOOL*); + HRESULT put_Silent(VARIANT_BOOL); + HRESULT get_RegistaerAsBrowser(VARIANT_BOOL*); + HRESULT put_RegisterAsBrowser(VARIANT_BOOL); + HRESULT get_RegistaerAsDropTarget(VARIANT_BOOL*); + HRESULT put_RegisterAsDropTarget(VARIANT_BOOL); + HRESULT get_TheaterMode(VARIANT_BOOL*); + HRESULT put_TheaterMode(VARIANT_BOOL); + HRESULT get_AddressBar(VARIANT_BOOL*); + HRESULT put_AddressBar(VARIANT_BOOL); + HRESULT get_Resizable(VARIANT_BOOL*); + HRESULT put_Resizable(VARIANT_BOOL); +} + +interface DWebBrowserEvents2 : IDispatch { + void StatusTextChange(BSTR); + void ProgressChange(LONG, LONG); + void CommandStateChange(LONG, VARIANT_BOOL); + void DownloadBegin(); + void DownloadComplete(); + void TitleChange(BSTR); + void PropertyChange(BSTR); + void BeforeNavigate2(IDispatch pDisp, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT_BOOL*); + void NewWindow2(IDispatch* ppDisp, VARIANT_BOOL*); + void NavigateComplete(IDispatch pDisp, VARIANT*); + void DocumentComplete(IDispatch pDisp, VARIANT*); + void OnQuit(); + void OnVisible(VARIANT_BOOL); + void OnToolBar(VARIANT_BOOL); + void OnMenuBar(VARIANT_BOOL); + void OnStatusBar(VARIANT_BOOL); + void OnFullScreen(VARIANT_BOOL); + void OnTheaterMode(VARIANT_BOOL); + void WindowSetResizable(VARIANT_BOOL); + void WindowSetLeft(LONG); + void WindowSetTop(LONG); + void WindowSetWidth(LONG); + void WindowSetHeight(LONG); + void WindowClosing(VARIANT_BOOL, VARIANT_BOOL*); + void ClientToHostWindow(LONG*, LONG*); + void SetSecureLockIcon(LONG); + void FileDownload(VARIANT_BOOL*); +} diff --git a/src/core/sys/windows/exdispid.d b/src/core/sys/windows/exdispid.d new file mode 100644 index 0000000000..6d3b3296e6 --- /dev/null +++ b/src/core/sys/windows/exdispid.d @@ -0,0 +1,20 @@ +/***********************************************************************\ +* exdispid.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.exdispid; + +enum : int { + DISPID_STATUSTEXTCHANGE = 102, + DISPID_PROGRESSCHANGE = 108, + DISPID_TITLECHANGE = 113, + DISPID_BEFORENAVIGATE2 = 250, + DISPID_NEWWINDOW2 = 251, + DISPID_DOCUMENTCOMPLETE = 259 +} diff --git a/src/core/sys/windows/httpext.d b/src/core/sys/windows/httpext.d new file mode 100644 index 0000000000..cf03b42ad9 --- /dev/null +++ b/src/core/sys/windows/httpext.d @@ -0,0 +1,114 @@ +/***********************************************************************\ +* httpext.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.httpext; + +/* Comment from MinGW + httpext.h - Header for ISAPI extensions. + + This file is part of a free library for the Win32 API. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +*/ + +private import win32.windows; + +enum { + HSE_VERSION_MAJOR = 2, + HSE_VERSION_MINOR = 0, + HSE_LOG_BUFFER_LEN = 80, + HSE_MAX_EXT_DLL_NAME_LEN = 256, + HSE_STATUS_SUCCESS = 1, + HSE_STATUS_SUCCESS_AND_KEEP_CONN, + HSE_STATUS_PENDING, + HSE_STATUS_ERROR, + HSE_REQ_BASE = 0, + HSE_REQ_SEND_URL_REDIRECT_RESP, + HSE_REQ_SEND_URL, + HSE_REQ_SEND_RESPONSE_HEADER, + HSE_REQ_DONE_WITH_SESSION, + HSE_REQ_SEND_RESPONSE_HEADER_EX = 1016, + HSE_REQ_END_RESERVED = 1000, + HSE_TERM_ADVISORY_UNLOAD = 0x00000001, + HSE_TERM_MUST_UNLOAD, + HSE_IO_SYNC = 0x00000001, + HSE_IO_ASYNC, + HSE_IO_DISCONNECT_AFTER_SEND = 0x00000004, + HSE_IO_SEND_HEADERS = 0x00000008 +} + +mixin DECLARE_HANDLE!("HCONN"); + +struct HSE_VERSION_INFO { + DWORD dwExtensionVersion; + CHAR[HSE_MAX_EXT_DLL_NAME_LEN] lpszExtensionDesc; +} +alias HSE_VERSION_INFO* LPHSE_VERSION_INFO; + +struct EXTENSION_CONTROL_BLOCK { + DWORD cbSize = EXTENSION_CONTROL_BLOCK.sizeof; + DWORD dwVersion; + HCONN ConnID; + DWORD dwHttpStatusCode; + CHAR[HSE_LOG_BUFFER_LEN] lpszLogData; + LPSTR lpszMethod; + LPSTR lpszQueryString; + LPSTR lpszPathInfo; + LPSTR lpszPathTranslated; + DWORD cbTotalBytes; + DWORD cbAvailable; + LPBYTE lpbData; + LPSTR lpszContentType; + extern(Pascal) BOOL function(HCONN, LPSTR, LPVOID, LPDWORD) + GetServerVariable; + extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD, DWORD) WriteClient; + extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD) ReadClient; + extern(Pascal) BOOL function(HCONN, DWORD, LPVOID, LPDWORD, LPDWORD) + ServerSupportFunction; +} +alias EXTENSION_CONTROL_BLOCK* LPEXTENSION_CONTROL_BLOCK; + +extern (Pascal) { + alias BOOL function(HSE_VERSION_INFO*) PFN_GETEXTENSIONVERSION; + alias DWORD function(EXTENSION_CONTROL_BLOCK*) PFN_HTTPEXTENSIONPROC; + alias BOOL function(DWORD) PFN_TERMINATEEXTENSION; + alias VOID function(EXTENSION_CONTROL_BLOCK*, PVOID, DWORD, DWORD) PFN_HSE_IO_COMPLETION; +} + +struct HSE_TF_INFO { + PFN_HSE_IO_COMPLETION pfnHseIO; + PVOID pContext; + HANDLE hFile; + LPCSTR pszStatusCode; + DWORD BytesToWrite; + DWORD Offset; + PVOID pHead; + DWORD HeadLength; + PVOID pTail; + DWORD TailLength; + DWORD dwFlags; +} +alias HSE_TF_INFO* LPHSE_TF_INFO; + +struct HSE_SEND_HEADER_EX_INFO { + LPCSTR pszStatus; + LPCSTR pszHeader; + DWORD cchStatus; + DWORD cchHeader; + BOOL fKeepConn; +} +alias HSE_SEND_HEADER_EX_INFO* LPHSE_SEND_HEADER_EX_INF; + +extern (Pascal) { + BOOL GetExtensionVersion(HSE_VERSION_INFO*); + DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK*); + BOOL TerminateExtension(DWORD); +} diff --git a/src/core/sys/windows/idispids.d b/src/core/sys/windows/idispids.d new file mode 100644 index 0000000000..93064be7ef --- /dev/null +++ b/src/core/sys/windows/idispids.d @@ -0,0 +1,16 @@ +/***********************************************************************\ +* idispids.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.idispids; + +enum : int { + DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501, + DISPID_AMBIENT_SILENT = -5502 +} diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d new file mode 100644 index 0000000000..314f98f92b --- /dev/null +++ b/src/core/sys/windows/imagehlp.d @@ -0,0 +1,363 @@ +/***********************************************************************\ +* imagehlp.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.imagehlp; + +/* Comment from MinGW + NOTE: This strictly does not belong in the Win32 API since it's + really part of Platform SDK. However, GDB needs it and we might + as well provide it here. +*/ + +private import win32.winbase, win32.windef; + +// FIXME: check types of constants + +const API_VERSION_NUMBER = 7; + +const BIND_NO_BOUND_IMPORTS = 1; +const BIND_NO_UPDATE = 2; +const BIND_ALL_IMAGES = 4; +const BIND_CACHE_IMPORT_DLLS = 8; + +enum { + CBA_DEFERRED_SYMBOL_LOAD_START = 1, + CBA_DEFERRED_SYMBOL_LOAD_COMPLETE, + CBA_DEFERRED_SYMBOL_LOAD_FAILURE, + CBA_SYMBOLS_UNLOADED, + CBA_DUPLICATE_SYMBOL +} + +const CERT_PE_IMAGE_DIGEST_DEBUG_INFO = 1; +const CERT_PE_IMAGE_DIGEST_RESOURCES = 2; +const CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO = 4; +const CERT_PE_IMAGE_DIGEST_NON_PE_INFO = 8; + +const CERT_SECTION_TYPE_ANY = 255; + +enum { + CHECKSUM_SUCCESS = 0, + CHECKSUM_OPEN_FAILURE, + CHECKSUM_MAP_FAILURE, + CHECKSUM_MAPVIEW_FAILURE, + CHECKSUM_UNICODE_FAILURE +} + +const IMAGE_SEPARATION = 65536; + +const SPLITSYM_REMOVE_PRIVATE = 1; +const SPLITSYM_EXTRACT_ALL = 2; +const SPLITSYM_SYMBOLPATH_IS_SRC = 4; + +const SYMF_OMAP_GENERATED = 1; +const SYMF_OMAP_MODIFIED = 2; + +const SYMOPT_CASE_INSENSITIVE = 1; +const SYMOPT_UNDNAME = 2; +const SYMOPT_DEFERRED_LOADS = 4; +const SYMOPT_NO_CPP = 8; +const SYMOPT_LOAD_LINES = 16; +const SYMOPT_OMAP_FIND_NEAREST = 32; + +const UNDNAME_COMPLETE = 0; +const UNDNAME_NO_LEADING_UNDERSCORES = 1; +const UNDNAME_NO_MS_KEYWORDS = 2; +const UNDNAME_NO_FUNCTION_RETURNS = 4; +const UNDNAME_NO_ALLOCATION_MODEL = 8; +const UNDNAME_NO_ALLOCATION_LANGUAGE = 16; +const UNDNAME_NO_MS_THISTYPE = 32; +const UNDNAME_NO_CV_THISTYPE = 64; +const UNDNAME_NO_THISTYPE = 96; +const UNDNAME_NO_ACCESS_SPECIFIERS = 128; +const UNDNAME_NO_THROW_SIGNATURES = 256; +const UNDNAME_NO_MEMBER_TYPE = 512; +const UNDNAME_NO_RETURN_UDT_MODEL = 1024; +const UNDNAME_32_BIT_DECODE = 2048; +const UNDNAME_NAME_ONLY = 4096; +const UNDNAME_NO_ARGUMENTS = 8192; +const UNDNAME_NO_SPECIAL_SYMS = 16384; + +enum IMAGEHLP_STATUS_REASON { + BindOutOfMemory, + BindRvaToVaFailed, + BindNoRoomInImage, + BindImportModuleFailed, + BindImportProcedureFailed, + BindImportModule, + BindImportProcedure, + BindForwarder, + BindForwarderNOT, + BindImageModified, + BindExpandFileHeaders, + BindImageComplete, + BindMismatchedSymbols, + BindSymbolsNotUpdated +} + +struct LOADED_IMAGE { + LPSTR ModuleName; + HANDLE hFile; + PUCHAR MappedAddress; + PIMAGE_NT_HEADERS FileHeader; + PIMAGE_SECTION_HEADER LastRvaSection; + ULONG NumberOfSections; + PIMAGE_SECTION_HEADER Sections; + ULONG Characteristics; + BOOLEAN fSystemImage; + BOOLEAN fDOSImage; + LIST_ENTRY Links; + ULONG SizeOfImage; +} +alias LOADED_IMAGE* PLOADED_IMAGE; + +struct IMAGE_DEBUG_INFORMATION { + LIST_ENTRY List; + DWORD Size; + PVOID MappedBase; + USHORT Machine; + USHORT Characteristics; + DWORD CheckSum; + DWORD ImageBase; + DWORD SizeOfImage; + DWORD NumberOfSections; + PIMAGE_SECTION_HEADER Sections; + DWORD ExportedNamesSize; + LPSTR ExportedNames; + DWORD NumberOfFunctionTableEntries; + PIMAGE_FUNCTION_ENTRY FunctionTableEntries; + DWORD LowestFunctionStartingAddress; + DWORD HighestFunctionEndingAddress; + DWORD NumberOfFpoTableEntries; + PFPO_DATA FpoTableEntries; + DWORD SizeOfCoffSymbols; + PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; + DWORD SizeOfCodeViewSymbols; + PVOID CodeViewSymbols; + LPSTR ImageFilePath; + LPSTR ImageFileName; + LPSTR DebugFilePath; + DWORD TimeDateStamp; + BOOL RomImage; + PIMAGE_DEBUG_DIRECTORY DebugDirectory; + DWORD NumberOfDebugDirectories; + DWORD[3] Reserved; +} +alias IMAGE_DEBUG_INFORMATION* PIMAGE_DEBUG_INFORMATION; + +enum ADDRESS_MODE { + AddrMode1616, + AddrMode1632, + AddrModeReal, + AddrModeFlat +} + +struct ADDRESS { + DWORD Offset; + WORD Segment; + ADDRESS_MODE Mode; +} +alias ADDRESS* LPADDRESS; + +struct KDHELP { + DWORD Thread; + DWORD ThCallbackStack; + DWORD NextCallback; + DWORD FramePointer; + DWORD KiCallUserMode; + DWORD KeUserCallbackDispatcher; + DWORD SystemRangeStart; +} +alias KDHELP* PKDHELP; + +struct STACKFRAME { + ADDRESS AddrPC; + ADDRESS AddrReturn; + ADDRESS AddrFrame; + ADDRESS AddrStack; + LPVOID FuncTableEntry; + DWORD[4] Params; + BOOL Far; + BOOL Virtual; + DWORD[3] Reserved; + KDHELP KdHelp; +} +alias STACKFRAME* LPSTACKFRAME; + +struct API_VERSION { + USHORT MajorVersion; + USHORT MinorVersion; + USHORT Revision; + USHORT Reserved; +} +alias API_VERSION* LPAPI_VERSION; + +enum SYM_TYPE { + SymNone, + SymCoff, + SymCv, + SymPdb, + SymExport, + SymDeferred, + SymSym +} + +struct IMAGEHLP_SYMBOL { + DWORD SizeOfStruct; + DWORD Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + CHAR[1] Name; +} +alias IMAGEHLP_SYMBOL* PIMAGEHLP_SYMBOL; + +struct IMAGEHLP_MODULE { + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + CHAR[32] ModuleName; + CHAR[256] ImageName; + CHAR[256] LoadedImageName; +} +alias IMAGEHLP_MODULE* PIMAGEHLP_MODULE; + +struct IMAGEHLP_LINE { + DWORD SizeOfStruct; + DWORD Key; + DWORD LineNumber; + PCHAR FileName; + DWORD Address; +} +alias IMAGEHLP_LINE* PIMAGEHLP_LINE; + +struct IMAGEHLP_DEFERRED_SYMBOL_LOAD { + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD CheckSum; + DWORD TimeDateStamp; + CHAR[MAX_PATH] FileName; + BOOLEAN Reparse; +} +alias IMAGEHLP_DEFERRED_SYMBOL_LOAD* PIMAGEHLP_DEFERRED_SYMBOL_LOAD; + +struct IMAGEHLP_DUPLICATE_SYMBOL { + DWORD SizeOfStruct; + DWORD NumberOfDups; + PIMAGEHLP_SYMBOL Symbol; + ULONG SelectedSymbol; +} +alias IMAGEHLP_DUPLICATE_SYMBOL* PIMAGEHLP_DUPLICATE_SYMBOL; + +mixin DECLARE_HANDLE!("DIGEST_HANDLE"); + +extern (Windows) { + alias BOOL function(IMAGEHLP_STATUS_REASON, LPSTR, LPSTR, ULONG, ULONG) + PIMAGEHLP_STATUS_ROUTINE; + alias BOOL function(HANDLE , LPCVOID, LPVOID, DWORD, LPDWORD) + PREAD_PROCESS_MEMORY_ROUTINE; + alias LPVOID function(HANDLE, DWORD) PFUNCTION_TABLE_ACCESS_ROUTINE; + alias DWORD function(HANDLE, DWORD) PGET_MODULE_BASE_ROUTINE; + alias DWORD function(HANDLE, HANDLE, LPADDRESS) + PTRANSLATE_ADDRESS_ROUTINE; + alias BOOL function(LPSTR, ULONG, PVOID) PSYM_ENUMMODULES_CALLBACK; + alias BOOL function(LPSTR, ULONG, ULONG, PVOID) PSYM_ENUMSYMBOLS_CALLBACK; + alias BOOL function(LPSTR, ULONG, ULONG, PVOID) + PENUMLOADED_MODULES_CALLBACK; + alias BOOL function(HANDLE, ULONG, PVOID, PVOID) + PSYMBOL_REGISTERED_CALLBACK; + alias BOOL function(DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength) + DIGEST_FUNCTION; + + PIMAGE_NT_HEADERS CheckSumMappedFile(LPVOID, DWORD, LPDWORD, LPDWORD); + DWORD MapFileAndCheckSumA(LPSTR, LPDWORD, LPDWORD); + DWORD MapFileAndCheckSumW(PWSTR, LPDWORD, LPDWORD); + BOOL TouchFileTimes(HANDLE, LPSYSTEMTIME); + BOOL SplitSymbols(LPSTR, LPSTR, LPSTR, DWORD); + HANDLE FindDebugInfoFile(LPSTR, LPSTR, LPSTR); + HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); + BOOL UpdateDebugInfoFile(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS); + BOOL UpdateDebugInfoFileEx(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS, DWORD); + BOOL BindImage(LPSTR, LPSTR, LPSTR); + BOOL BindImageEx(DWORD, LPSTR, LPSTR, LPSTR, PIMAGEHLP_STATUS_ROUTINE); + BOOL ReBaseImage(LPSTR, LPSTR, BOOL, BOOL, BOOL, ULONG, ULONG*, ULONG*, + ULONG*, ULONG*, ULONG); + PLOADED_IMAGE ImageLoad(LPSTR, LPSTR); + BOOL ImageUnload(PLOADED_IMAGE); + PIMAGE_NT_HEADERS ImageNtHeader(PVOID); + PVOID ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG); + PIMAGE_SECTION_HEADER ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG); + PVOID ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, + PIMAGE_SECTION_HEADER*); + BOOL MapAndLoad(LPSTR, LPSTR, PLOADED_IMAGE, BOOL, BOOL); + BOOL GetImageConfigInformation(PLOADED_IMAGE, + PIMAGE_LOAD_CONFIG_DIRECTORY); + DWORD GetImageUnusedHeaderBytes(PLOADED_IMAGE, LPDWORD); + BOOL SetImageConfigInformation(PLOADED_IMAGE, + PIMAGE_LOAD_CONFIG_DIRECTORY); + BOOL UnMapAndLoad(PLOADED_IMAGE); + PIMAGE_DEBUG_INFORMATION MapDebugInformation(HANDLE, LPSTR, LPSTR, DWORD); + BOOL UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); + HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); + BOOL SearchTreeForFile(LPSTR, LPSTR, LPSTR); + BOOL MakeSureDirectoryPathExists(LPCSTR); + DWORD UnDecorateSymbolName(LPCSTR, LPSTR, DWORD, DWORD); + BOOL StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID, + PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, + PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE); + LPAPI_VERSION ImagehlpApiVersion(); + LPAPI_VERSION ImagehlpApiVersionEx(LPAPI_VERSION); + DWORD GetTimestampForLoadedLibrary(HMODULE); + BOOL RemovePrivateCvSymbolic(PCHAR, PCHAR*, ULONG*); + VOID RemoveRelocations(PCHAR); + DWORD SymSetOptions(DWORD); + DWORD SymGetOptions(); + BOOL SymCleanup(HANDLE); + BOOL SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); + BOOL SymEnumerateSymbols(HANDLE, DWORD, PSYM_ENUMSYMBOLS_CALLBACK, PVOID); + BOOL EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID); + LPVOID SymFunctionTableAccess(HANDLE, DWORD); + BOOL SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); + DWORD SymGetModuleBase(HANDLE, DWORD); + BOOL SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); + BOOL SymGetSymFromName(HANDLE, LPSTR, PIMAGEHLP_SYMBOL); + BOOL SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); + BOOL SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); + BOOL SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); + BOOL SymGetLineFromName(HANDLE, LPSTR, LPSTR, DWORD, PLONG, + PIMAGEHLP_LINE); + BOOL SymGetLineNext(HANDLE, PIMAGEHLP_LINE); + BOOL SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); + BOOL SymMatchFileName(LPSTR, LPSTR, LPSTR*, LPSTR*); + BOOL SymInitialize(HANDLE, LPSTR, BOOL); + BOOL SymGetSearchPath(HANDLE, LPSTR, DWORD); + BOOL SymSetSearchPath(HANDLE, LPSTR); + BOOL SymLoadModule(HANDLE, HANDLE, PSTR, PSTR, DWORD, DWORD); + BOOL SymUnloadModule(HANDLE, DWORD); + BOOL SymUnDName(PIMAGEHLP_SYMBOL, LPSTR, DWORD); + BOOL SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); + BOOL ImageGetDigestStream(HANDLE, DWORD, DIGEST_FUNCTION, DIGEST_HANDLE); + BOOL ImageAddCertificate(HANDLE, LPWIN_CERTIFICATE, PDWORD); + BOOL ImageRemoveCertificate(HANDLE, DWORD); + BOOL ImageEnumerateCertificates(HANDLE, WORD, PDWORD, PDWORD, DWORD); + BOOL ImageGetCertificateData(HANDLE, DWORD, LPWIN_CERTIFICATE, PDWORD); + BOOL ImageGetCertificateHeader(HANDLE, DWORD, LPWIN_CERTIFICATE); + BOOL CopyPdb(CHAR*, CHAR*, BOOL); + BOOL RemovePrivateCvSymbolicEx(PCHAR, ULONG, PCHAR*, ULONG*); +} + +version (Unicode) { + alias MapFileAndCheckSumW MapFileAndCheckSum; +} else { + alias MapFileAndCheckSumA MapFileAndCheckSum; +} diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d new file mode 100644 index 0000000000..c5e50be895 --- /dev/null +++ b/src/core/sys/windows/imm.d @@ -0,0 +1,482 @@ +/***********************************************************************\ +* imm.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.imm; +pragma(lib, "imm32"); + +import win32.windef, win32.wingdi; +import win32.winuser; // for the MFS_xxx enums. +private import win32.w32api; + +const WM_CONVERTREQUESTEX = 0x108; +const WM_IME_STARTCOMPOSITION = 0x10D; +const WM_IME_ENDCOMPOSITION = 0x10E; +const WM_IME_COMPOSITION = 0x10F; +const WM_IME_KEYLAST = 0x10F; +const WM_IME_SETCONTEXT = 0x281; +const WM_IME_NOTIFY = 0x282; +const WM_IME_CONTROL = 0x283; +const WM_IME_COMPOSITIONFULL = 0x284; +const WM_IME_SELECT = 0x285; +const WM_IME_CHAR = 0x286; +static if (_WIN32_WINNT >= 0x500) { + const WM_IME_REQUEST = 0x288; +} +const WM_IME_KEYDOWN = 0x290; +const WM_IME_KEYUP = 0x291; + + +const IMC_GETCANDIDATEPOS=7; +const IMC_SETCANDIDATEPOS=8; +const IMC_GETCOMPOSITIONFONT=9; +const IMC_SETCOMPOSITIONFONT=10; +const IMC_GETCOMPOSITIONWINDOW=11; +const IMC_SETCOMPOSITIONWINDOW=12; +const IMC_GETSTATUSWINDOWPOS=15; +const IMC_SETSTATUSWINDOWPOS=16; +const IMC_CLOSESTATUSWINDOW=0x21; +const IMC_OPENSTATUSWINDOW=0x22; +const IMN_CLOSESTATUSWINDOW=1; +const IMN_OPENSTATUSWINDOW=2; +const IMN_CHANGECANDIDATE=3; +const IMN_CLOSECANDIDATE=4; +const IMN_OPENCANDIDATE=5; +const IMN_SETCONVERSIONMODE=6; +const IMN_SETSENTENCEMODE=7; +const IMN_SETOPENSTATUS=8; +const IMN_SETCANDIDATEPOS=9; +const IMN_SETCOMPOSITIONFONT=10; +const IMN_SETCOMPOSITIONWINDOW=11; +const IMN_SETSTATUSWINDOWPOS=12; +const IMN_GUIDELINE=13; +const IMN_PRIVATE=14; + +const NI_OPENCANDIDATE=16; +const NI_CLOSECANDIDATE=17; +const NI_SELECTCANDIDATESTR=18; +const NI_CHANGECANDIDATELIST=19; +const NI_FINALIZECONVERSIONRESULT=20; +const NI_COMPOSITIONSTR=21; +const NI_SETCANDIDATE_PAGESTART=22; +const NI_SETCANDIDATE_PAGESIZE=23; +const NI_IMEMENUSELECTED=24; + +const ISC_SHOWUICANDIDATEWINDOW=1; +const ISC_SHOWUICOMPOSITIONWINDOW=0x80000000; +const ISC_SHOWUIGUIDELINE=0x40000000; +const ISC_SHOWUIALLCANDIDATEWINDOW=15; +const ISC_SHOWUIALL=0xC000000F; + +const CPS_COMPLETE=1; +const CPS_CONVERT=2; +const CPS_REVERT=3; +const CPS_CANCEL=4; + +const IME_CHOTKEY_IME_NONIME_TOGGLE=16; +const IME_CHOTKEY_SHAPE_TOGGLE=17; +const IME_CHOTKEY_SYMBOL_TOGGLE=18; +const IME_JHOTKEY_CLOSE_OPEN=0x30; +const IME_KHOTKEY_SHAPE_TOGGLE=0x50; +const IME_KHOTKEY_HANJACONVERT=0x51; +const IME_KHOTKEY_ENGLISH=0x52; +const IME_THOTKEY_IME_NONIME_TOGGLE=0x70; +const IME_THOTKEY_SHAPE_TOGGLE=0x71; +const IME_THOTKEY_SYMBOL_TOGGLE=0x72; +const IME_HOTKEY_DSWITCH_FIRST=256; +const IME_HOTKEY_DSWITCH_LAST=0x11F; +const IME_ITHOTKEY_RESEND_RESULTSTR=512; +const IME_ITHOTKEY_PREVIOUS_COMPOSITION=513; +const IME_ITHOTKEY_UISTYLE_TOGGLE=514; + +const GCS_COMPREADSTR=1; +const GCS_COMPREADATTR=2; +const GCS_COMPREADCLAUSE=4; +const GCS_COMPSTR=8; +const GCS_COMPATTR=16; +const GCS_COMPCLAUSE=32; +const GCS_CURSORPOS=128; +const GCS_DELTASTART=256; +const GCS_RESULTREADSTR=512; +const GCS_RESULTREADCLAUSE=1024; +const GCS_RESULTSTR=2048; +const GCS_RESULTCLAUSE=4096; + +const CS_INSERTCHAR=0x2000; +const CS_NOMOVECARET=0x4000; + +const IMEVER_0310=0x3000A; +const IMEVER_0400=0x40000; + +const IME_PROP_AT_CARET=0x10000; +const IME_PROP_SPECIAL_UI=0x20000; +const IME_PROP_CANDLIST_START_FROM_1=0x40000; +const IME_PROP_UNICODE=0x80000; + +const UI_CAP_2700=1; +const UI_CAP_ROT90=2; +const UI_CAP_ROTANY=4; + +const SCS_CAP_COMPSTR=1; +const SCS_CAP_MAKEREAD=2; +const SELECT_CAP_CONVERSION=1; +const SELECT_CAP_SENTENCE=2; +const GGL_LEVEL=1; +const GGL_INDEX=2; +const GGL_STRING=3; +const GGL_PRIVATE=4; +const GL_LEVEL_NOGUIDELINE=0; +const GL_LEVEL_FATAL=1; +const GL_LEVEL_ERROR=2; +const GL_LEVEL_WARNING=3; +const GL_LEVEL_INFORMATION=4; +const GL_ID_UNKNOWN=0; +const GL_ID_NOMODULE=1; +const GL_ID_NODICTIONARY=16; +const GL_ID_CANNOTSAVE=17; +const GL_ID_NOCONVERT=32; +const GL_ID_TYPINGERROR=33; +const GL_ID_TOOMANYSTROKE=34; +const GL_ID_READINGCONFLICT=35; +const GL_ID_INPUTREADING=36; +const GL_ID_INPUTRADICAL=37; +const GL_ID_INPUTCODE=38; +const GL_ID_INPUTSYMBOL=39; +const GL_ID_CHOOSECANDIDATE=40; +const GL_ID_REVERSECONVERSION=41; +const GL_ID_PRIVATE_FIRST=0x8000; +const GL_ID_PRIVATE_LAST=0xFFFF; + +const DWORD IGP_GETIMEVERSION = -4; +const IGP_PROPERTY=4; +const IGP_CONVERSION=8; +const IGP_SENTENCE=12; +const IGP_UI=16; +const IGP_SETCOMPSTR=0x14; +const IGP_SELECT=0x18; + +const SCS_SETSTR = GCS_COMPREADSTR|GCS_COMPSTR; +const SCS_CHANGEATTR = GCS_COMPREADATTR|GCS_COMPATTR; +const SCS_CHANGECLAUSE = GCS_COMPREADCLAUSE|GCS_COMPCLAUSE; + +const ATTR_INPUT=0; +const ATTR_TARGET_CONVERTED=1; +const ATTR_CONVERTED=2; +const ATTR_TARGET_NOTCONVERTED=3; +const ATTR_INPUT_ERROR=4; +const ATTR_FIXEDCONVERTED=5; +const CFS_DEFAULT=0; +const CFS_RECT=1; +const CFS_POINT=2; +const CFS_SCREEN=4; +const CFS_FORCE_POSITION=32; +const CFS_CANDIDATEPOS=64; +const CFS_EXCLUDE=128; +const GCL_CONVERSION=1; +const GCL_REVERSECONVERSION=2; +const GCL_REVERSE_LENGTH=3; + +const IME_CMODE_ALPHANUMERIC=0; +const IME_CMODE_NATIVE=1; +const IME_CMODE_CHINESE=IME_CMODE_NATIVE; +const IME_CMODE_HANGEUL=IME_CMODE_NATIVE; +const IME_CMODE_HANGUL=IME_CMODE_NATIVE; +const IME_CMODE_JAPANESE=IME_CMODE_NATIVE; +const IME_CMODE_KATAKANA=2; +const IME_CMODE_LANGUAGE=3; +const IME_CMODE_FULLSHAPE=8; +const IME_CMODE_ROMAN=16; +const IME_CMODE_CHARCODE=32; +const IME_CMODE_HANJACONVERT=64; +const IME_CMODE_SOFTKBD=128; +const IME_CMODE_NOCONVERSION=256; +const IME_CMODE_EUDC=512; +const IME_CMODE_SYMBOL=1024; +const IME_CMODE_FIXED=2048; +const IME_SMODE_NONE=0; +const IME_SMODE_PLAURALCLAUSE=1; +const IME_SMODE_SINGLECONVERT=2; +const IME_SMODE_AUTOMATIC=4; +const IME_SMODE_PHRASEPREDICT=8; +const IME_CAND_UNKNOWN=0; +const IME_CAND_READ=1; +const IME_CAND_CODE=2; +const IME_CAND_MEANING=3; +const IME_CAND_RADICAL=4; +const IME_CAND_STROKE=5; +const IMM_ERROR_NODATA=(-1); +const IMM_ERROR_GENERAL=(-2); +const IME_CONFIG_GENERAL=1; +const IME_CONFIG_REGISTERWORD=2; +const IME_CONFIG_SELECTDICTIONARY=3; +const IME_ESC_QUERY_SUPPORT=3; +const IME_ESC_RESERVED_FIRST=4; +const IME_ESC_RESERVED_LAST=0x7FF; +const IME_ESC_PRIVATE_FIRST=0x800; +const IME_ESC_PRIVATE_LAST=0xFFF; +const IME_ESC_SEQUENCE_TO_INTERNAL=0x1001; +const IME_ESC_GET_EUDC_DICTIONARY=0x1003; +const IME_ESC_SET_EUDC_DICTIONARY=0x1004; +const IME_ESC_MAX_KEY=0x1005; +const IME_ESC_IME_NAME=0x1006; +const IME_ESC_SYNC_HOTKEY=0x1007; +const IME_ESC_HANJA_MODE=0x1008; +const IME_ESC_AUTOMATA=0x1009; +const IME_REGWORD_STYLE_EUDC=1; +const IME_REGWORD_STYLE_USER_FIRST=0x80000000; +const IME_REGWORD_STYLE_USER_LAST=0xFFFFFFFF; + +const SOFTKEYBOARD_TYPE_T1=1; +const SOFTKEYBOARD_TYPE_C1=2; + +const IMEMENUITEM_STRING_SIZE=80; + +const MOD_ALT=1; +const MOD_CONTROL=2; +const MOD_SHIFT=4; +const MOD_WIN=8; +const MOD_IGNORE_ALL_MODIFIER=1024; +const MOD_ON_KEYUP=2048; +const MOD_RIGHT=16384; +const MOD_LEFT=32768; + +const IACE_CHILDREN=1; +const IACE_DEFAULT=16; +const IACE_IGNORENOCONTEXT=32; + +const IGIMIF_RIGHTMENU=1; + +const IGIMII_CMODE=1; +const IGIMII_SMODE=2; +const IGIMII_CONFIGURE=4; +const IGIMII_TOOLS=8; +const IGIMII_HELP=16; +const IGIMII_OTHER=32; +const IGIMII_INPUTTOOLS=64; + +const IMFT_RADIOCHECK=1; +const IMFT_SEPARATOR=2; +const IMFT_SUBMENU=4; + +const IMFS_GRAYED=MFS_GRAYED; +const IMFS_DISABLED=MFS_DISABLED; +const IMFS_CHECKED=MFS_CHECKED; +const IMFS_HILITE=MFS_HILITE; +const IMFS_ENABLED=MFS_ENABLED; +const IMFS_UNCHECKED=MFS_UNCHECKED; +const IMFS_UNHILITE=MFS_UNHILITE; +const IMFS_DEFAULT=MFS_DEFAULT; + +const STYLE_DESCRIPTION_SIZE=32; + +alias DWORD HIMC; +alias DWORD HIMCC; +alias HKL* LPHKL; + +struct COMPOSITIONFORM{ + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} +alias COMPOSITIONFORM* PCOMPOSITIONFORM, LPCOMPOSITIONFORM; + +struct CANDIDATEFORM{ + DWORD dwIndex; + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} +alias CANDIDATEFORM* PCANDIDATEFORM, LPCANDIDATEFORM; + +struct CANDIDATELIST{ + DWORD dwSize; + DWORD dwStyle; + DWORD dwCount; + DWORD dwSelection; + DWORD dwPageStart; + DWORD dwPageSize; + DWORD[1] dwOffset; +} +alias CANDIDATELIST* PCANDIDATELIST, LPCANDIDATELIST; + +struct REGISTERWORDA{ + LPSTR lpReading; + LPSTR lpWord; +} +alias REGISTERWORDA* PREGISTERWORDA, LPREGISTERWORDA; + +struct REGISTERWORDW{ + LPWSTR lpReading; + LPWSTR lpWord; +} +alias REGISTERWORDW* PREGISTERWORDW, LPREGISTERWORDW; + +struct STYLEBUFA{ + DWORD dwStyle; + CHAR[STYLE_DESCRIPTION_SIZE] szDescription; +} +alias STYLEBUFA* PSTYLEBUFA, LPSTYLEBUFA; + +struct STYLEBUFW{ + DWORD dwStyle; + WCHAR[STYLE_DESCRIPTION_SIZE] szDescription; +} +alias STYLEBUFW* PSTYLEBUFW, LPSTYLEBUFW; + +struct IMEMENUITEMINFOA{ + UINT cbSize = this.sizeof; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + CHAR[IMEMENUITEM_STRING_SIZE] szString; + HBITMAP hbmpItem; +} +alias IMEMENUITEMINFOA* PIMEMENUITEMINFOA, LPIMEMENUITEMINFOA; + +struct IMEMENUITEMINFOW{ + UINT cbSize = this.sizeof; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + WCHAR[IMEMENUITEM_STRING_SIZE] szString; + HBITMAP hbmpItem; +} +alias IMEMENUITEMINFOW* PIMEMENUITEMINFOW, LPIMEMENUITEMINFOW; + +alias int function (LPCSTR, DWORD, LPCSTR, LPVOID) REGISTERWORDENUMPROCA; +alias int function (LPCWSTR, DWORD, LPCWSTR, LPVOID) REGISTERWORDENUMPROCW; + +version(Unicode) { + alias REGISTERWORDENUMPROCW REGISTERWORDENUMPROC; + alias REGISTERWORDW REGISTERWORD; + alias IMEMENUITEMINFOW IMEMENUITEMINFO; + alias STYLEBUFW STYLEBUF; +} else { + alias REGISTERWORDENUMPROCA REGISTERWORDENUMPROC; + alias REGISTERWORDA REGISTERWORD; + alias IMEMENUITEMINFOA IMEMENUITEMINFO; + alias STYLEBUFA STYLEBUF; +} + +alias STYLEBUF* PSTYLEBUF, LPSTYLEBUF; +alias REGISTERWORD* PREGISTERWORD, LPREGISTERWORD; +alias IMEMENUITEMINFO* PIMEMENUITEMINFO, LPIMEMENUITEMINFO; + + +extern (Windows): +HKL ImmInstallIMEA(LPCSTR, LPCSTR); +HKL ImmInstallIMEW(LPCWSTR, LPCWSTR); +HWND ImmGetDefaultIMEWnd(HWND); +UINT ImmGetDescriptionA(HKL, LPSTR, UINT); +UINT ImmGetDescriptionW(HKL, LPWSTR, UINT); +UINT ImmGetIMEFileNameA(HKL, LPSTR, UINT); +UINT ImmGetIMEFileNameW(HKL, LPWSTR, UINT); +DWORD ImmGetProperty(HKL, DWORD); +BOOL ImmIsIME(HKL); +BOOL ImmSimulateHotKey(HWND, DWORD); +HIMC ImmCreateContext(); +BOOL ImmDestroyContext(HIMC); +HIMC ImmGetContext(HWND); +BOOL ImmReleaseContext(HWND, HIMC); +HIMC ImmAssociateContext(HWND, HIMC); +LONG ImmGetCompositionStringA(HIMC, DWORD, PVOID, DWORD); +LONG ImmGetCompositionStringW(HIMC, DWORD, PVOID, DWORD); +BOOL ImmSetCompositionStringA(HIMC, DWORD, PCVOID, DWORD, PCVOID, DWORD); +BOOL ImmSetCompositionStringW(HIMC, DWORD, PCVOID, DWORD, PCVOID, DWORD); +DWORD ImmGetCandidateListCountA(HIMC, PDWORD); +DWORD ImmGetCandidateListCountW(HIMC, PDWORD); +DWORD ImmGetCandidateListA(HIMC, DWORD, PCANDIDATELIST, DWORD); +DWORD ImmGetCandidateListW(HIMC, DWORD, PCANDIDATELIST, DWORD); +DWORD ImmGetGuideLineA(HIMC, DWORD, LPSTR, DWORD); +DWORD ImmGetGuideLineW(HIMC, DWORD, LPWSTR, DWORD); +BOOL ImmGetConversionStatus(HIMC, LPDWORD, PDWORD); +BOOL ImmSetConversionStatus(HIMC, DWORD, DWORD); +BOOL ImmGetOpenStatus(HIMC); +BOOL ImmSetOpenStatus(HIMC, BOOL); + +BOOL ImmGetCompositionFontA(HIMC, LPLOGFONTA); +BOOL ImmGetCompositionFontW(HIMC, LPLOGFONTW); +BOOL ImmSetCompositionFontA(HIMC, LPLOGFONTA); +BOOL ImmSetCompositionFontW(HIMC, LPLOGFONTW); + +BOOL ImmConfigureIMEA(HKL, HWND, DWORD, PVOID); +BOOL ImmConfigureIMEW(HKL, HWND, DWORD, PVOID); +LRESULT ImmEscapeA(HKL, HIMC, UINT, PVOID); +LRESULT ImmEscapeW(HKL, HIMC, UINT, PVOID); +DWORD ImmGetConversionListA(HKL, HIMC, LPCSTR, PCANDIDATELIST, DWORD, UINT); +DWORD ImmGetConversionListW(HKL, HIMC, LPCWSTR, PCANDIDATELIST, DWORD, UINT); +BOOL ImmNotifyIME(HIMC, DWORD, DWORD, DWORD); +BOOL ImmGetStatusWindowPos(HIMC, LPPOINT); +BOOL ImmSetStatusWindowPos(HIMC, LPPOINT); +BOOL ImmGetCompositionWindow(HIMC, PCOMPOSITIONFORM); +BOOL ImmSetCompositionWindow(HIMC, PCOMPOSITIONFORM); +BOOL ImmGetCandidateWindow(HIMC, DWORD, PCANDIDATEFORM); +BOOL ImmSetCandidateWindow(HIMC, PCANDIDATEFORM); +BOOL ImmIsUIMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM); +UINT ImmGetVirtualKey(HWND); +BOOL ImmRegisterWordA(HKL, LPCSTR, DWORD, LPCSTR); +BOOL ImmRegisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR); +BOOL ImmUnregisterWordA(HKL, LPCSTR, DWORD, LPCSTR); +BOOL ImmUnregisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR); +UINT ImmGetRegisterWordStyleA(HKL, UINT, PSTYLEBUFA); +UINT ImmGetRegisterWordStyleW(HKL, UINT, PSTYLEBUFW); +UINT ImmEnumRegisterWordA(HKL, REGISTERWORDENUMPROCA, LPCSTR, DWORD, LPCSTR, PVOID); +UINT ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, PVOID); +BOOL EnableEUDC(BOOL); +BOOL ImmDisableIME(DWORD); +DWORD ImmGetImeMenuItemsA(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMINFOA, DWORD); +DWORD ImmGetImeMenuItemsW(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); + +version(Unicode) { + alias ImmEnumRegisterWordW ImmEnumRegisterWord; + alias ImmGetRegisterWordStyleW ImmGetRegisterWordStyle; + alias ImmUnregisterWordW ImmUnregisterWord; + alias ImmRegisterWordW ImmRegisterWord; + alias ImmInstallIMEW ImmInstallIME; + alias ImmIsUIMessageW ImmIsUIMessage; + alias ImmGetConversionListW ImmGetConversionList; + alias ImmEscapeW ImmEscape; + alias ImmConfigureIMEW ImmConfigureIME; + alias ImmSetCompositionFontW ImmSetCompositionFont; + alias ImmGetCompositionFontW ImmGetCompositionFont; + alias ImmGetGuideLineW ImmGetGuideLine; + alias ImmGetCandidateListW ImmGetCandidateList; + alias ImmGetCandidateListCountW ImmGetCandidateListCount; + alias ImmSetCompositionStringW ImmSetCompositionString; + alias ImmGetCompositionStringW ImmGetCompositionString; + alias ImmGetDescriptionW ImmGetDescription; + alias ImmGetIMEFileNameW ImmGetIMEFileName; + alias ImmGetImeMenuItemsW ImmGetImeMenuItems; +} else { + alias ImmEnumRegisterWordA ImmEnumRegisterWord; + alias ImmGetRegisterWordStyleA ImmGetRegisterWordStyle; + alias ImmUnregisterWordA ImmUnregisterWord; + alias ImmRegisterWordA ImmRegisterWord; + alias ImmInstallIMEA ImmInstallIME; + alias ImmIsUIMessageA ImmIsUIMessage; + alias ImmGetConversionListA ImmGetConversionList; + alias ImmEscapeA ImmEscape; + alias ImmConfigureIMEA ImmConfigureIME; + alias ImmSetCompositionFontA ImmSetCompositionFont; + alias ImmGetCompositionFontA ImmGetCompositionFont; + alias ImmGetGuideLineA ImmGetGuideLine; + alias ImmGetCandidateListA ImmGetCandidateList; + alias ImmGetCandidateListCountA ImmGetCandidateListCount; + alias ImmSetCompositionStringA ImmSetCompositionString; + alias ImmGetCompositionStringA ImmGetCompositionString; + alias ImmGetDescriptionA ImmGetDescription; + alias ImmGetIMEFileNameA ImmGetIMEFileName; + alias ImmGetImeMenuItemsW ImmGetImeMenuItems; +} diff --git a/src/core/sys/windows/intshcut.d b/src/core/sys/windows/intshcut.d new file mode 100644 index 0000000000..dfc247c351 --- /dev/null +++ b/src/core/sys/windows/intshcut.d @@ -0,0 +1,89 @@ +/***********************************************************************\ +* intshcut.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.intshcut; + +private import win32.unknwn, win32.windef; + +enum : SCODE { + E_FLAGS = 0x80041000, + // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000) + URL_E_INVALID_SYNTAX = 0x80041001, + // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001) + URL_E_UNREGISTERED_PROTOCOL = 0x80041002, // etc. + IS_E_EXEC_FAILED = 0x80042002 +} + +enum IURL_SETURL_FLAGS { + IURL_SETURL_FL_GUESS_PROTOCOL = 1, + IURL_SETURL_FL_USE_DEFAULT_PROTOCOL, + ALL_IURL_SETURL_FLAGS +} + +enum IURL_INVOKECOMMAND_FLAGS { + IURL_INVOKECOMMAND_FL_ALLOW_UI = 1, + IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB, + ALL_IURL_INVOKECOMMAND_FLAGS +} + +enum TRANSLATEURL_IN_FLAGS { + TRANSLATEURL_FL_GUESS_PROTOCOL = 1, + TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL, + ALL_TRANSLATEURL_FLAGS +} + +enum URLASSOCIATIONDIALOG_IN_FLAGS { + URLASSOCDLG_FL_USE_DEFAULT_NAME = 1, + URLASSOCDLG_FL_REGISTER_ASSOC, + ALL_URLASSOCDLG_FLAGS +} + +enum MIMEASSOCIATIONDIALOG_IN_FLAGS { + MIMEASSOCDLG_FL_REGISTER_ASSOC = 1, + ALL_MIMEASSOCDLG_FLAGS = MIMEASSOCDLG_FL_REGISTER_ASSOC +} + +struct URLINVOKECOMMANDINFO { + DWORD dwcbSize = URLINVOKECOMMANDINFO.sizeof; + DWORD dwFlags; + HWND hwndParent; + PCSTR pcszVerb; +} +alias URLINVOKECOMMANDINFO CURLINVOKECOMMANDINFO; +alias URLINVOKECOMMANDINFO* PURLINVOKECOMMANDINFO, PCURLINVOKECOMMANDINFO; + +interface IUniformResourceLocator : IUnknown { + HRESULT SetURL(PCSTR, DWORD); + HRESULT GetURL(PSTR*); + HRESULT InvokeCommand(PURLINVOKECOMMANDINFO); +} +//alias typeof(*(IUniformResourceLocator.init)) CIUniformResourceLocator; // value-type of interface not representable in D +alias IUniformResourceLocator PIUniformResourceLocator, + PCIUniformResourceLocator; + +extern (Windows) { + BOOL InetIsOffline(DWORD); + HRESULT MIMEAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); + HRESULT MIMEAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); + HRESULT TranslateURLA(PCSTR, DWORD, PSTR*); + HRESULT TranslateURLW(PCWSTR, DWORD, PWSTR*); + HRESULT URLAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); + HRESULT URLAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); +} + +version (Unicode) { + alias TranslateURLW TranslateURL; + alias MIMEAssociationDialogW MIMEAssociationDialog; + alias URLAssociationDialogW URLAssociationDialog; +} else { + alias TranslateURLA TranslateURL; + alias MIMEAssociationDialogA MIMEAssociationDialog; + alias URLAssociationDialogA URLAssociationDialog; +} diff --git a/src/core/sys/windows/ipexport.d b/src/core/sys/windows/ipexport.d new file mode 100644 index 0000000000..754e918518 --- /dev/null +++ b/src/core/sys/windows/ipexport.d @@ -0,0 +1,108 @@ +/***********************************************************************\ +* ipexport.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ipexport; + +private import win32.windef; + +const size_t MAX_ADAPTER_NAME = 128; + +// IP STATUS flags +enum : IP_STATUS { + IP_SUCCESS = 0, + IP_STATUS_BASE = 11000, + IP_BUF_TOO_SMALL, + IP_DEST_NET_UNREACHABLE, + IP_DEST_HOST_UNREACHABLE, + IP_DEST_PROT_UNREACHABLE, + IP_DEST_PORT_UNREACHABLE, + IP_NO_RESOURCES, + IP_BAD_OPTION, + IP_HW_ERROR, + IP_PACKET_TOO_BIG, + IP_REQ_TIMED_OUT, + IP_BAD_REQ, + IP_BAD_ROUTE, + IP_TTL_EXPIRED_TRANSIT, + IP_TTL_EXPIRED_REASSEM, + IP_PARAM_PROBLEM, + IP_SOURCE_QUENCH, + IP_OPTION_TOO_BIG, + IP_BAD_DESTINATION, + IP_ADDR_DELETED, + IP_SPEC_MTU_CHANGE, + IP_MTU_CHANGE, + IP_UNLOAD, // = IP_STATUS_BASE + 22 + IP_GENERAL_FAILURE = IP_STATUS_BASE + 50, + MAX_IP_STATUS = IP_GENERAL_FAILURE, + IP_PENDING = IP_STATUS_BASE + 255 +} + +// IP header Flags values +const byte IP_FLAG_DF = 2; + +// IP Option types +enum : ubyte { + IP_OPT_EOL = 0, + IP_OPT_NOP = 0x01, + IP_OPT_RR = 0x07, + IP_OPT_SECURITY = 0x82, + IP_OPT_LSRR = 0x83, + IP_OPT_SSRR = 0x89, + IP_OPT_TS = 0x44, + IP_OPT_SID = 0x88, + IP_OPT_ROUTER_ALERT = 0x94 +} + +const ubyte MAX_OPT_SIZE = 40; + +alias uint IPAddr, IPMask, IP_STATUS; + +struct IP_OPTION_INFORMATION { + ubyte Ttl; + ubyte Tos; + ubyte Flags; + ubyte OptionsSize; + ubyte* OptionsData; +} +alias IP_OPTION_INFORMATION* PIP_OPTION_INFORMATION; + +struct ICMP_ECHO_REPLY { + IPAddr Address; + uint Status; + uint RoundTripTime; + ushort DataSize; + ushort Reserved; + void* Data; + IP_OPTION_INFORMATION Options; +} +alias ICMP_ECHO_REPLY* PICMP_ECHO_REPLY; + +struct IP_ADAPTER_INDEX_MAP { + ULONG Index; + WCHAR[MAX_ADAPTER_NAME] Name; +} +alias IP_ADAPTER_INDEX_MAP* PIP_ADAPTER_INDEX_MAP; + +struct IP_INTERFACE_INFO { + LONG NumAdapters; + IP_ADAPTER_INDEX_MAP[1] _Adapter; + + IP_ADAPTER_INDEX_MAP* Adapter() { return _Adapter.ptr; } +} +alias IP_INTERFACE_INFO* PIP_INTERFACE_INFO; + +struct IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { + ULONG NumAdapters; + IPAddr[1] _Address; + + IPAddr* Address() { return _Address.ptr; } +} +alias IP_UNIDIRECTIONAL_ADAPTER_ADDRESS* PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; diff --git a/src/core/sys/windows/iphlpapi.d b/src/core/sys/windows/iphlpapi.d new file mode 100644 index 0000000000..f722ef2a8c --- /dev/null +++ b/src/core/sys/windows/iphlpapi.d @@ -0,0 +1,62 @@ +/***********************************************************************\ +* iphlpapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.iphlpapi; + +import win32.ipexport, win32.iprtrmib, win32.iptypes; +private import win32.winbase, win32.windef; + +extern (Windows) { + DWORD AddIPAddress(IPAddr, IPMask, DWORD, PULONG, PULONG); + DWORD CreateIpForwardEntry(PMIB_IPFORWARDROW); + DWORD CreateIpNetEntry(PMIB_IPNETROW); + DWORD CreateProxyArpEntry(DWORD, DWORD, DWORD); + DWORD DeleteIPAddress(ULONG); + DWORD DeleteIpForwardEntry(PMIB_IPFORWARDROW); + DWORD DeleteIpNetEntry(PMIB_IPNETROW); + DWORD DeleteProxyArpEntry(DWORD, DWORD, DWORD); + DWORD EnableRouter(HANDLE*, OVERLAPPED*); + DWORD FlushIpNetTable(DWORD); + DWORD GetAdapterIndex(LPWSTR, PULONG); + DWORD GetAdaptersInfo(PIP_ADAPTER_INFO, PULONG); + DWORD GetBestInterface(IPAddr, PDWORD); + DWORD GetBestRoute(DWORD, DWORD, PMIB_IPFORWARDROW); + DWORD GetFriendlyIfIndex(DWORD); + DWORD GetIcmpStatistics(PMIB_ICMP); + DWORD GetIfEntry(PMIB_IFROW); + DWORD GetIfTable(PMIB_IFTABLE, PULONG, BOOL); + DWORD GetInterfaceInfo(PIP_INTERFACE_INFO, PULONG); + DWORD GetIpAddrTable(PMIB_IPADDRTABLE, PULONG, BOOL); + DWORD GetIpForwardTable(PMIB_IPFORWARDTABLE, PULONG, BOOL); + DWORD GetIpNetTable(PMIB_IPNETTABLE, PULONG, BOOL); + DWORD GetIpStatistics(PMIB_IPSTATS); + DWORD GetNetworkParams(PFIXED_INFO, PULONG); + DWORD GetNumberOfInterfaces(PDWORD); + DWORD GetPerAdapterInfo(ULONG, PIP_PER_ADAPTER_INFO, PULONG); + BOOL GetRTTAndHopCount(IPAddr, PULONG, ULONG, PULONG); + DWORD GetTcpStatistics(PMIB_TCPSTATS); + DWORD GetTcpTable(PMIB_TCPTABLE, PDWORD, BOOL); + DWORD GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS, + PULONG); + DWORD GetUdpStatistics(PMIB_UDPSTATS); + DWORD GetUdpTable(PMIB_UDPTABLE, PDWORD, BOOL); + DWORD IpReleaseAddress(PIP_ADAPTER_INDEX_MAP); + DWORD IpRenewAddress(PIP_ADAPTER_INDEX_MAP); + DWORD NotifyAddrChange(PHANDLE, LPOVERLAPPED); + DWORD NotifyRouteChange(PHANDLE, LPOVERLAPPED); + DWORD SendARP(IPAddr, IPAddr, PULONG, PULONG); + DWORD SetIfEntry(PMIB_IFROW); + DWORD SetIpForwardEntry(PMIB_IPFORWARDROW); + DWORD SetIpNetEntry(PMIB_IPNETROW); + DWORD SetIpStatistics(PMIB_IPSTATS); + DWORD SetIpTTL(UINT); + DWORD SetTcpEntry(PMIB_TCPROW); + DWORD UnenableRouter(OVERLAPPED*, LPDWORD); +} diff --git a/src/core/sys/windows/ipifcons.d b/src/core/sys/windows/ipifcons.d new file mode 100644 index 0000000000..f7bc787994 --- /dev/null +++ b/src/core/sys/windows/ipifcons.d @@ -0,0 +1,38 @@ +/***********************************************************************\ +* ipifcons.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ipifcons; + +// FIXME: check types of constants + +enum { + MIB_IF_ADMIN_STATUS_UP = 1, + MIB_IF_ADMIN_STATUS_DOWN, + MIB_IF_ADMIN_STATUS_TESTING, +} + +enum { + MIB_IF_OPER_STATUS_NON_OPERATIONAL, + MIB_IF_OPER_STATUS_UNREACHABLE, + MIB_IF_OPER_STATUS_DISCONNECTED, + MIB_IF_OPER_STATUS_CONNECTING, + MIB_IF_OPER_STATUS_CONNECTED, + MIB_IF_OPER_STATUS_OPERATIONAL // = 5 +} + +enum { + MIB_IF_TYPE_OTHER = 1, + MIB_IF_TYPE_ETHERNET = 6, + MIB_IF_TYPE_TOKENRING = 9, + MIB_IF_TYPE_FDDI = 15, + MIB_IF_TYPE_PPP = 23, + MIB_IF_TYPE_LOOPBACK = 24, + MIB_IF_TYPE_SLIP = 28 +} diff --git a/src/core/sys/windows/iprtrmib.d b/src/core/sys/windows/iprtrmib.d new file mode 100644 index 0000000000..0a3a1967c6 --- /dev/null +++ b/src/core/sys/windows/iprtrmib.d @@ -0,0 +1,267 @@ +/***********************************************************************\ +* iprtrmib.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.iprtrmib; + +import win32.ipifcons; +private import win32.windef; + +// FIXME: check types of constants + +const size_t + MAXLEN_PHYSADDR = 8, + MAXLEN_IFDESCR = 256, + MAX_INTERFACE_NAME_LEN = 256; + +enum { + MIB_IPNET_TYPE_OTHER = 1, + MIB_IPNET_TYPE_INVALID, + MIB_IPNET_TYPE_DYNAMIC, + MIB_IPNET_TYPE_STATIC +} + +enum { + MIB_TCP_RTO_OTHER = 1, + MIB_TCP_RTO_CONSTANT, + MIB_TCP_RTO_RSRE, + MIB_TCP_RTO_VANJ +} + +enum { + MIB_TCP_STATE_CLOSED = 1, + MIB_TCP_STATE_LISTEN, + MIB_TCP_STATE_SYN_SENT, + MIB_TCP_STATE_SYN_RCVD, + MIB_TCP_STATE_ESTAB, + MIB_TCP_STATE_FIN_WAIT1, + MIB_TCP_STATE_FIN_WAIT2, + MIB_TCP_STATE_CLOSE_WAIT, + MIB_TCP_STATE_CLOSING, + MIB_TCP_STATE_LAST_ACK, + MIB_TCP_STATE_TIME_WAIT, + MIB_TCP_STATE_DELETE_TCB // = 12 +} + +const DWORD + MIB_USE_CURRENT_TTL = -1, + MIB_USE_CURRENT_FORWARDING = -1, + MIB_TCP_MAXCONN_DYNAMIC = -1; + +struct MIB_IPADDRROW { + DWORD dwAddr; + DWORD dwIndex; + DWORD dwMask; + DWORD dwBCastAddr; + DWORD dwReasmSize; + ushort unused1; + ushort unused2; +} +alias MIB_IPADDRROW* PMIB_IPADDRROW; + +struct MIB_IPADDRTABLE { + DWORD dwNumEntries; + MIB_IPADDRROW[1] _table; + + MIB_IPADDRROW* table() { return _table.ptr; } +} +alias MIB_IPADDRTABLE* PMIB_IPADDRTABLE; + +struct MIB_IPFORWARDROW { + DWORD dwForwardDest; + DWORD dwForwardMask; + DWORD dwForwardPolicy; + DWORD dwForwardNextHop; + DWORD dwForwardIfIndex; + DWORD dwForwardType; + DWORD dwForwardProto; + DWORD dwForwardAge; + DWORD dwForwardNextHopAS; + DWORD dwForwardMetric1; + DWORD dwForwardMetric2; + DWORD dwForwardMetric3; + DWORD dwForwardMetric4; + DWORD dwForwardMetric5; +} +alias MIB_IPFORWARDROW* PMIB_IPFORWARDROW; + +struct MIB_IPFORWARDTABLE { + DWORD dwNumEntries; + MIB_IPFORWARDROW[1] _table; + + MIB_IPFORWARDROW* table() { return _table.ptr; } +} +alias MIB_IPFORWARDTABLE* PMIB_IPFORWARDTABLE; + +struct MIB_IPNETROW { + DWORD dwIndex; + DWORD dwPhysAddrLen; + BYTE[MAXLEN_PHYSADDR] bPhysAddr; + DWORD dwAddr; + DWORD dwType; +} +alias MIB_IPNETROW* PMIB_IPNETROW; + +struct MIB_IPNETTABLE { + DWORD dwNumEntries; + MIB_IPNETROW[1] _table; + + MIB_IPNETROW* table() { return _table.ptr; } +} +alias MIB_IPNETTABLE* PMIB_IPNETTABLE; + +struct MIBICMPSTATS { + DWORD dwMsgs; + DWORD dwErrors; + DWORD dwDestUnreachs; + DWORD dwTimeExcds; + DWORD dwParmProbs; + DWORD dwSrcQuenchs; + DWORD dwRedirects; + DWORD dwEchos; + DWORD dwEchoReps; + DWORD dwTimestamps; + DWORD dwTimestampReps; + DWORD dwAddrMasks; + DWORD dwAddrMaskReps; +} +alias MIBICMPSTATS* PMIBICMPSTATS; + +struct MIBICMPINFO { + MIBICMPSTATS icmpInStats; + MIBICMPSTATS icmpOutStats; +} +alias MIBICMPINFO* PMIBICMPINFO; + +struct MIB_ICMP { + MIBICMPINFO stats; +} +alias MIB_ICMP* PMIB_ICMP; + +struct MIB_IFROW { + WCHAR[MAX_INTERFACE_NAME_LEN] wszName; + DWORD dwIndex; + DWORD dwType; + DWORD dwMtu; + DWORD dwSpeed; + DWORD dwPhysAddrLen; + BYTE[MAXLEN_PHYSADDR] bPhysAddr; + DWORD dwAdminStatus; + DWORD dwOperStatus; + DWORD dwLastChange; + DWORD dwInOctets; + DWORD dwInUcastPkts; + DWORD dwInNUcastPkts; + DWORD dwInDiscards; + DWORD dwInErrors; + DWORD dwInUnknownProtos; + DWORD dwOutOctets; + DWORD dwOutUcastPkts; + DWORD dwOutNUcastPkts; + DWORD dwOutDiscards; + DWORD dwOutErrors; + DWORD dwOutQLen; + DWORD dwDescrLen; + BYTE[MAXLEN_IFDESCR] bDescr; +} +alias MIB_IFROW* PMIB_IFROW; + +struct MIB_IFTABLE { + DWORD dwNumEntries; + MIB_IFROW[1] _table; + + MIB_IFROW* table() { return _table.ptr; } +} +alias MIB_IFTABLE* PMIB_IFTABLE; + +struct MIB_IPSTATS { + DWORD dwForwarding; + DWORD dwDefaultTTL; + DWORD dwInReceives; + DWORD dwInHdrErrors; + DWORD dwInAddrErrors; + DWORD dwForwDatagrams; + DWORD dwInUnknownProtos; + DWORD dwInDiscards; + DWORD dwInDelivers; + DWORD dwOutRequests; + DWORD dwRoutingDiscards; + DWORD dwOutDiscards; + DWORD dwOutNoRoutes; + DWORD dwReasmTimeout; + DWORD dwReasmReqds; + DWORD dwReasmOks; + DWORD dwReasmFails; + DWORD dwFragOks; + DWORD dwFragFails; + DWORD dwFragCreates; + DWORD dwNumIf; + DWORD dwNumAddr; + DWORD dwNumRoutes; +} +alias MIB_IPSTATS* PMIB_IPSTATS; + +struct MIB_TCPSTATS { + DWORD dwRtoAlgorithm; + DWORD dwRtoMin; + DWORD dwRtoMax; + DWORD dwMaxConn; + DWORD dwActiveOpens; + DWORD dwPassiveOpens; + DWORD dwAttemptFails; + DWORD dwEstabResets; + DWORD dwCurrEstab; + DWORD dwInSegs; + DWORD dwOutSegs; + DWORD dwRetransSegs; + DWORD dwInErrs; + DWORD dwOutRsts; + DWORD dwNumConns; +} +alias MIB_TCPSTATS* PMIB_TCPSTATS; + +struct MIB_TCPROW { + DWORD dwState; + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwRemoteAddr; + DWORD dwRemotePort; +} +alias MIB_TCPROW* PMIB_TCPROW; + +struct MIB_TCPTABLE { + DWORD dwNumEntries; + MIB_TCPROW[1] _table; + + MIB_TCPROW* table() { return _table.ptr; } +} +alias MIB_TCPTABLE* PMIB_TCPTABLE; + +struct MIB_UDPSTATS { + DWORD dwInDatagrams; + DWORD dwNoPorts; + DWORD dwInErrors; + DWORD dwOutDatagrams; + DWORD dwNumAddrs; +} +alias MIB_UDPSTATS* PMIB_UDPSTATS; + +struct MIB_UDPROW { + DWORD dwLocalAddr; + DWORD dwLocalPort; +} +alias MIB_UDPROW* PMIB_UDPROW; + +struct MIB_UDPTABLE { + DWORD dwNumEntries; + MIB_UDPROW[1] _table; + + MIB_UDPROW* table() { return _table.ptr; } +} +alias MIB_UDPTABLE* PMIB_UDPTABLE; diff --git a/src/core/sys/windows/iptypes.d b/src/core/sys/windows/iptypes.d new file mode 100644 index 0000000000..bded5cdf2c --- /dev/null +++ b/src/core/sys/windows/iptypes.d @@ -0,0 +1,103 @@ +/***********************************************************************\ +* iptypes.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.iptypes; + +import win32.windef; +version(Tango){ + private import tango.stdc.time; +}else{ + version (D_Version2) + import core.stdc.time; + else + import std.c.time; +} +//#include + +const size_t + DEFAULT_MINIMUM_ENTITIES = 32, + MAX_ADAPTER_ADDRESS_LENGTH = 8, + MAX_ADAPTER_DESCRIPTION_LENGTH = 128, + MAX_ADAPTER_NAME_LENGTH = 256, + MAX_DOMAIN_NAME_LEN = 128, + MAX_HOSTNAME_LEN = 128, + MAX_SCOPE_ID_LEN = 256; + +const UINT + BROADCAST_NODETYPE = 1, + PEER_TO_PEER_NODETYPE = 2, + MIXED_NODETYPE = 4, + HYBRID_NODETYPE = 8; + +enum : UINT { + IF_OTHER_ADAPTERTYPE, + IF_ETHERNET_ADAPTERTYPE, + IF_TOKEN_RING_ADAPTERTYPE, + IF_FDDI_ADAPTERTYPE, + IF_PPP_ADAPTERTYPE, + IF_LOOPBACK_ADAPTERTYPE // = 5 +} + +struct IP_ADDRESS_STRING { + char[16] String; +} +alias IP_ADDRESS_STRING IP_MASK_STRING; +alias IP_ADDRESS_STRING* PIP_ADDRESS_STRING, PIP_MASK_STRING; + +struct IP_ADDR_STRING { + IP_ADDR_STRING* Next; + IP_ADDRESS_STRING IpAddress; + IP_MASK_STRING IpMask; + DWORD Context; +} +alias IP_ADDR_STRING* PIP_ADDR_STRING; + +struct IP_ADAPTER_INFO { + IP_ADAPTER_INFO* Next; + DWORD ComboIndex; + char[MAX_ADAPTER_NAME_LENGTH+4] AdapterName; + char[MAX_ADAPTER_DESCRIPTION_LENGTH+4] Description; + UINT AddressLength; + BYTE[MAX_ADAPTER_ADDRESS_LENGTH] Address; + DWORD Index; + UINT Type; + UINT DhcpEnabled; + PIP_ADDR_STRING CurrentIpAddress; + IP_ADDR_STRING IpAddressList; + IP_ADDR_STRING GatewayList; + IP_ADDR_STRING DhcpServer; + BOOL HaveWins; + IP_ADDR_STRING PrimaryWinsServer; + IP_ADDR_STRING SecondaryWinsServer; + time_t LeaseObtained; + time_t LeaseExpires; +} +alias IP_ADAPTER_INFO* PIP_ADAPTER_INFO; + +struct IP_PER_ADAPTER_INFO { + UINT AutoconfigEnabled; + UINT AutoconfigActive; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; +} +alias IP_PER_ADAPTER_INFO* PIP_PER_ADAPTER_INFO; + +struct FIXED_INFO { + char[MAX_HOSTNAME_LEN+4] HostName; + char[MAX_DOMAIN_NAME_LEN+4] DomainName; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; + UINT NodeType; + char[MAX_SCOPE_ID_LEN+4] ScopeId; + UINT EnableRouting; + UINT EnableProxy; + UINT EnableDns; +} +alias FIXED_INFO* PFIXED_INFO; diff --git a/src/core/sys/windows/isguids.d b/src/core/sys/windows/isguids.d new file mode 100644 index 0000000000..d9da4bfdb1 --- /dev/null +++ b/src/core/sys/windows/isguids.d @@ -0,0 +1,17 @@ +/***********************************************************************\ +* isguids.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.isguids; + +private import win32.basetyps; + +extern (C) extern const GUID + CLSID_InternetShortcut, + IID_IUniformResourceLocator; diff --git a/src/core/sys/windows/lm.d b/src/core/sys/windows/lm.d new file mode 100644 index 0000000000..ebbdbdc311 --- /dev/null +++ b/src/core/sys/windows/lm.d @@ -0,0 +1,47 @@ +/***********************************************************************\ +* lm.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lm; +/* removed - now supporting only Win2k up +version (WindowsVista) { + version = WIN32_WINNT_ONLY; +} else version (Windows2003) { + version = WIN32_WINNT_ONLY; +} else version (WindowsXP) { + version = WIN32_WINNT_ONLY; +} else version (WindowsNTonly) { + version = WIN32_WINNT_ONLY; +} +*/ +public import win32.lmcons; +public import win32.lmaccess; +public import win32.lmalert; +public import win32.lmat; +public import win32.lmerr; +public import win32.lmshare; +public import win32.lmapibuf; +public import win32.lmremutl; +public import win32.lmrepl; +public import win32.lmuse; +public import win32.lmstats; +public import win32.lmwksta; +public import win32.lmserver; + +version (Windows2000) { +} else { + public import win32.lmmsg; +} + +// FIXME: Everything in these next files seems to be deprecated! +import win32.lmaudit; +import win32.lmchdev; // can't find many docs for functions from this file. +import win32.lmconfig; +import win32.lmerrlog; +import win32.lmsvc; +import win32.lmsname; // in MinGW, this was publicly included by lm.lmsvc diff --git a/src/core/sys/windows/lmaccess.d b/src/core/sys/windows/lmaccess.d new file mode 100644 index 0000000000..1911fcfe7d --- /dev/null +++ b/src/core/sys/windows/lmaccess.d @@ -0,0 +1,759 @@ +/***********************************************************************\ +* lmaccess.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmaccess; +pragma(lib, "netapi32"); + +/** + Changes relative to MinGW: + USER_POSIX_ID_PARMNUM and GROUP_POSIX_ID_PARMNUM aren't in MinGW or in + the Platform SDK docs, so they have been dropped from this file. +*/ + +private import win32.lmcons, win32.windef; + +const wchar[] + GROUP_SPECIALGRP_USERS = "USERS", + GROUP_SPECIALGRP_ADMINS = "ADMINS", + GROUP_SPECIALGRP_GUESTS = "GUESTS", + GROUP_SPECIALGRP_LOCAL = "LOCAL"; + +const ACCESS_LETTERS = "RWCXDAP "; + +const NETLOGON_CONTROL_QUERY=1; +const NETLOGON_CONTROL_REPLICATE=2; +const NETLOGON_CONTROL_SYNCHRONIZE=3; +const NETLOGON_CONTROL_PDC_REPLICATE=4; +const NETLOGON_CONTROL_REDISCOVER=5; +const NETLOGON_CONTROL_TC_QUERY=6; +const NETLOGON_CONTROL_BACKUP_CHANGE_LOG=65532; +const NETLOGON_CONTROL_TRUNCATE_LOG=65533; +const NETLOGON_CONTROL_SET_DBFLAG=65534; +const NETLOGON_CONTROL_BREAKPOINT=65535; + +const UF_SCRIPT=1; +const UF_ACCOUNTDISABLE=2; +const UF_HOMEDIR_REQUIRED=8; +const UF_LOCKOUT=16; +const UF_PASSWD_NOTREQD=32; +const UF_PASSWD_CANT_CHANGE=64; +const UF_TEMP_DUPLICATE_ACCOUNT=256; +const UF_NORMAL_ACCOUNT=512; +const UF_INTERDOMAIN_TRUST_ACCOUNT=2048; +const UF_WORKSTATION_TRUST_ACCOUNT=4096; +const UF_SERVER_TRUST_ACCOUNT=8192; +const UF_MNS_LOGON_ACCOUNT=131072; +const UF_MACHINE_ACCOUNT_MASK=UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; +const UF_ACCOUNT_TYPE_MASK=UF_TEMP_DUPLICATE_ACCOUNT|UF_NORMAL_ACCOUNT|UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; +const UF_DONT_EXPIRE_PASSWD=65536; +const UF_SETTABLE_BITS=UF_SCRIPT|UF_ACCOUNTDISABLE|UF_LOCKOUT|UF_HOMEDIR_REQUIRED|UF_PASSWD_NOTREQD|UF_PASSWD_CANT_CHANGE|UF_ACCOUNT_TYPE_MASK|UF_DONT_EXPIRE_PASSWD; + +const FILTER_TEMP_DUPLICATE_ACCOUNT=1; +const FILTER_NORMAL_ACCOUNT=2; +const FILTER_INTERDOMAIN_TRUST_ACCOUNT=8; +const FILTER_WORKSTATION_TRUST_ACCOUNT=16; +const FILTER_SERVER_TRUST_ACCOUNT=32; + +const LG_INCLUDE_INDIRECT=1; + +const AF_OP_PRINT=1; +const AF_OP_COMM=2; +const AF_OP_SERVER=4; +const AF_OP_ACCOUNTS=8; +const AF_SETTABLE_BITS=(AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS); + +const UAS_ROLE_STANDALONE=0; +const UAS_ROLE_MEMBER=1; +const UAS_ROLE_BACKUP=2; +const UAS_ROLE_PRIMARY=3; + +const USER_NAME_PARMNUM=1; +const USER_PASSWORD_PARMNUM=3; +const USER_PASSWORD_AGE_PARMNUM=4; +const USER_PRIV_PARMNUM=5; +const USER_HOME_DIR_PARMNUM=6; +const USER_COMMENT_PARMNUM=7; +const USER_FLAGS_PARMNUM=8; +const USER_SCRIPT_PATH_PARMNUM=9; +const USER_AUTH_FLAGS_PARMNUM=10; +const USER_FULL_NAME_PARMNUM=11; +const USER_USR_COMMENT_PARMNUM=12; +const USER_PARMS_PARMNUM=13; +const USER_WORKSTATIONS_PARMNUM=14; +const USER_LAST_LOGON_PARMNUM=15; +const USER_LAST_LOGOFF_PARMNUM=16; +const USER_ACCT_EXPIRES_PARMNUM=17; +const USER_MAX_STORAGE_PARMNUM=18; +const USER_UNITS_PER_WEEK_PARMNUM=19; +const USER_LOGON_HOURS_PARMNUM=20; +const USER_PAD_PW_COUNT_PARMNUM=21; +const USER_NUM_LOGONS_PARMNUM=22; +const USER_LOGON_SERVER_PARMNUM=23; +const USER_COUNTRY_CODE_PARMNUM=24; +const USER_CODE_PAGE_PARMNUM=25; +const USER_PRIMARY_GROUP_PARMNUM=51; +const USER_PROFILE=52; +const USER_PROFILE_PARMNUM=52; +const USER_HOME_DIR_DRIVE_PARMNUM=53; + +const USER_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM; +const USER_PASSWORD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM; +const USER_PASSWORD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM; +const USER_PRIV_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM; +const USER_HOME_DIR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM; +const USER_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM; +const USER_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM; +const USER_SCRIPT_PATH_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM; +const USER_AUTH_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM; +const USER_FULL_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM; +const USER_USR_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM; +const USER_PARMS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM; +const USER_WORKSTATIONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM; +const USER_LAST_LOGON_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM; +const USER_LAST_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM; +const USER_ACCT_EXPIRES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM; +const USER_MAX_STORAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM; +const USER_UNITS_PER_WEEK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM; +const USER_LOGON_HOURS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM; +const USER_PAD_PW_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM; +const USER_NUM_LOGONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM; +const USER_LOGON_SERVER_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM; +const USER_COUNTRY_CODE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM; +const USER_CODE_PAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM; +const USER_PRIMARY_GROUP_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM; +// USER_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. +//const USER_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_POSIX_ID_PARMNUM; +const USER_HOME_DIR_DRIVE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM; + +const NULL_USERSETINFO_PASSWD=" "; +const ULONG TIMEQ_FOREVER=-1; +const ULONG USER_MAXSTORAGE_UNLIMITED=-1; +const ULONG USER_NO_LOGOFF=-1; +const UNITS_PER_DAY=24; +const UNITS_PER_WEEK=168; +const USER_PRIV_MASK=3; +const USER_PRIV_GUEST=0; +const USER_PRIV_USER=1; +const USER_PRIV_ADMIN=2; +const MAX_PASSWD_LEN=PWLEN; +const DEF_MIN_PWLEN=6; +const DEF_PWUNIQUENESS=5; +const DEF_MAX_PWHIST=8; +const DEF_MAX_PWAGE=TIMEQ_FOREVER; +const DEF_MIN_PWAGE=0; +const ULONG DEF_FORCE_LOGOFF=0xffffffff; +const DEF_MAX_BADPW=0; +const ONE_DAY=86400; +const VALIDATED_LOGON=0; +const PASSWORD_EXPIRED=2; +const NON_VALIDATED_LOGON=3; +const VALID_LOGOFF=1; + +const MODALS_MIN_PASSWD_LEN_PARMNUM=1; +const MODALS_MAX_PASSWD_AGE_PARMNUM=2; +const MODALS_MIN_PASSWD_AGE_PARMNUM=3; +const MODALS_FORCE_LOGOFF_PARMNUM=4; +const MODALS_PASSWD_HIST_LEN_PARMNUM=5; +const MODALS_ROLE_PARMNUM=6; +const MODALS_PRIMARY_PARMNUM=7; +const MODALS_DOMAIN_NAME_PARMNUM=8; +const MODALS_DOMAIN_ID_PARMNUM=9; +const MODALS_LOCKOUT_DURATION_PARMNUM=10; +const MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM=11; +const MODALS_LOCKOUT_THRESHOLD_PARMNUM=12; + +const MODALS_MIN_PASSWD_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM); +const MODALS_MAX_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM); +const MODALS_MIN_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM); +const MODALS_FORCE_LOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM); +const MODALS_PASSWD_HIST_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM); +const MODALS_ROLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM); +const MODALS_PRIMARY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM); +const MODALS_DOMAIN_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM); +const MODALS_DOMAIN_ID_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM); + +const GROUPIDMASK=0x8000; +const GROUP_ALL_PARMNUM=0; +const GROUP_NAME_PARMNUM=1; +const GROUP_COMMENT_PARMNUM=2; +const GROUP_ATTRIBUTES_PARMNUM=3; + +const GROUP_ALL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM; +const GROUP_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM; +const GROUP_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM; +const GROUP_ATTRIBUTES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM; +// GROUP_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. +//const GROUP_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_POSIX_ID_PARMNUM; + +const LOCALGROUP_NAME_PARMNUM=1; +const LOCALGROUP_COMMENT_PARMNUM=2; +const MAXPERMENTRIES=64; +const ACCESS_NONE=0; +const ACCESS_READ=1; +const ACCESS_WRITE=2; +const ACCESS_CREATE=4; +const ACCESS_EXEC=8; +const ACCESS_DELETE=16; +const ACCESS_ATRIB=32; +const ACCESS_PERM=64; +const ACCESS_ALL = ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM; +const ACCESS_GROUP=0x8000; +const ACCESS_AUDIT=1; +const ACCESS_SUCCESS_OPEN=16; +const ACCESS_SUCCESS_WRITE=32; +const ACCESS_SUCCESS_DELETE=64; +const ACCESS_SUCCESS_ACL=128; +const ACCESS_SUCCESS_MASK=240; +const ACCESS_FAIL_OPEN=256; +const ACCESS_FAIL_WRITE=512; +const ACCESS_FAIL_DELETE=1024; +const ACCESS_FAIL_ACL=2048; +const ACCESS_FAIL_MASK=3840; +const ACCESS_FAIL_SHIFT=4; +const ACCESS_RESOURCE_NAME_PARMNUM=1; +const ACCESS_ATTR_PARMNUM=2; +const ACCESS_COUNT_PARMNUM=3; +const ACCESS_ACCESS_LIST_PARMNUM=4; + +const ACCESS_RESOURCE_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM); +const ACCESS_ATTR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM); +const ACCESS_COUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM); +const ACCESS_ACCESS_LIST_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM); + +const NETLOGON_REPLICATION_NEEDED=1; +const NETLOGON_REPLICATION_IN_PROGRESS=2; +const NETLOGON_FULL_SYNC_REPLICATION=4; +const NETLOGON_REDO_NEEDED=8; + +struct USER_INFO_0 { + LPWSTR usri0_name; +} +alias USER_INFO_0* PUSER_INFO_0, LPUSER_INFO_0; + +struct USER_INFO_1{ + LPWSTR usri1_name; + LPWSTR usri1_password; + DWORD usri1_password_age; + DWORD usri1_priv; + LPWSTR usri1_home_dir; + LPWSTR usri1_comment; + DWORD usri1_flags; + LPWSTR usri1_script_path; +} +alias USER_INFO_1* PUSER_INFO_1, LPUSER_INFO_1; + +struct USER_INFO_2{ + LPWSTR usri2_name; + LPWSTR usri2_password; + DWORD usri2_password_age; + DWORD usri2_priv; + LPWSTR usri2_home_dir; + LPWSTR usri2_comment; + DWORD usri2_flags; + LPWSTR usri2_script_path; + DWORD usri2_auth_flags; + LPWSTR usri2_full_name; + LPWSTR usri2_usr_comment; + LPWSTR usri2_parms; + LPWSTR usri2_workstations; + DWORD usri2_last_logon; + DWORD usri2_last_logoff; + DWORD usri2_acct_expires; + DWORD usri2_max_storage; + DWORD usri2_units_per_week; + PBYTE usri2_logon_hours; + DWORD usri2_bad_pw_count; + DWORD usri2_num_logons; + LPWSTR usri2_logon_server; + DWORD usri2_country_code; + DWORD usri2_code_page; +} +alias USER_INFO_2* PUSER_INFO_2, LPUSER_INFO_2; + +struct USER_INFO_3{ + LPWSTR usri3_name; + LPWSTR usri3_password; + DWORD usri3_password_age; + DWORD usri3_priv; + LPWSTR usri3_home_dir; + LPWSTR usri3_comment; + DWORD usri3_flags; + LPWSTR usri3_script_path; + DWORD usri3_auth_flags; + LPWSTR usri3_full_name; + LPWSTR usri3_usr_comment; + LPWSTR usri3_parms; + LPWSTR usri3_workstations; + DWORD usri3_last_logon; + DWORD usri3_last_logoff; + DWORD usri3_acct_expires; + DWORD usri3_max_storage; + DWORD usri3_units_per_week; + PBYTE usri3_logon_hours; + DWORD usri3_bad_pw_count; + DWORD usri3_num_logons; + LPWSTR usri3_logon_server; + DWORD usri3_country_code; + DWORD usri3_code_page; + DWORD usri3_user_id; + DWORD usri3_primary_group_id; + LPWSTR usri3_profile; + LPWSTR usri3_home_dir_drive; + DWORD usri3_password_expired; +} +alias USER_INFO_3* PUSER_INFO_3, LPUSER_INFO_3; + +struct USER_INFO_10{ + LPWSTR usri10_name; + LPWSTR usri10_comment; + LPWSTR usri10_usr_comment; + LPWSTR usri10_full_name; +} +alias USER_INFO_10* PUSER_INFO_10, LPUSER_INFO_10; + +struct USER_INFO_11{ + LPWSTR usri11_name; + LPWSTR usri11_comment; + LPWSTR usri11_usr_comment; + LPWSTR usri11_full_name; + DWORD usri11_priv; + DWORD usri11_auth_flags; + DWORD usri11_password_age; + LPWSTR usri11_home_dir; + LPWSTR usri11_parms; + DWORD usri11_last_logon; + DWORD usri11_last_logoff; + DWORD usri11_bad_pw_count; + DWORD usri11_num_logons; + LPWSTR usri11_logon_server; + DWORD usri11_country_code; + LPWSTR usri11_workstations; + DWORD usri11_max_storage; + DWORD usri11_units_per_week; + PBYTE usri11_logon_hours; + DWORD usri11_code_page; +} +alias USER_INFO_11* PUSER_INFO_11, LPUSER_INFO_11; + +struct USER_INFO_20 { + LPWSTR usri20_name; + LPWSTR usri20_full_name; + LPWSTR usri20_comment; + DWORD usri20_flags; + DWORD usri20_user_id; +} +alias USER_INFO_20* PUSER_INFO_20, LPUSER_INFO_20; + +struct USER_INFO_21 { + BYTE[ENCRYPTED_PWLEN] usri21_password; +} +alias USER_INFO_21* PUSER_INFO_21, LPUSER_INFO_21; + +struct USER_INFO_22{ + LPWSTR usri22_name; + BYTE[ENCRYPTED_PWLEN] usri22_password; + DWORD usri22_password_age; + DWORD usri22_priv; + LPWSTR usri22_home_dir; + LPWSTR usri22_comment; + DWORD usri22_flags; + LPWSTR usri22_script_path; + DWORD usri22_auth_flags; + LPWSTR usri22_full_name; + LPWSTR usri22_usr_comment; + LPWSTR usri22_parms; + LPWSTR usri22_workstations; + DWORD usri22_last_logon; + DWORD usri22_last_logoff; + DWORD usri22_acct_expires; + DWORD usri22_max_storage; + DWORD usri22_units_per_week; + PBYTE usri22_logon_hours; + DWORD usri22_bad_pw_count; + DWORD usri22_num_logons; + LPWSTR usri22_logon_server; + DWORD usri22_country_code; + DWORD usri22_code_page; +} +alias USER_INFO_22* PUSER_INFO_22, LPUSER_INFO_22; + +struct USER_INFO_1003{ + LPWSTR usri1003_password; +} +alias USER_INFO_1003* PUSER_INFO_1003, LPUSER_INFO_1003; + +struct USER_INFO_1005{ + DWORD usri1005_priv; +} +alias USER_INFO_1005* PUSER_INFO_1005, LPUSER_INFO_1005; + +struct USER_INFO_1006{ + LPWSTR usri1006_home_dir; +} +alias USER_INFO_1006* PUSER_INFO_1006, LPUSER_INFO_1006; + +struct USER_INFO_1007{ + LPWSTR usri1007_comment; +} +alias USER_INFO_1007* PUSER_INFO_1007, LPUSER_INFO_1007; + +struct USER_INFO_1008{ + DWORD usri1008_flags; +} +alias USER_INFO_1008* PUSER_INFO_1008, LPUSER_INFO_1008; + +struct USER_INFO_1009{ + LPWSTR usri1009_script_path; +} +alias USER_INFO_1009* PUSER_INFO_1009, LPUSER_INFO_1009; + +struct USER_INFO_1010{ + DWORD usri1010_auth_flags; +} +alias USER_INFO_1010* PUSER_INFO_1010, LPUSER_INFO_1010; + +struct USER_INFO_1011{ + LPWSTR usri1011_full_name; +} +alias USER_INFO_1011* PUSER_INFO_1011, LPUSER_INFO_1011; + +struct USER_INFO_1012{ + LPWSTR usri1012_usr_comment; +} +alias USER_INFO_1012* PUSER_INFO_1012, LPUSER_INFO_1012; + +struct USER_INFO_1013{ + LPWSTR usri1013_parms; +} +alias USER_INFO_1013* PUSER_INFO_1013, LPUSER_INFO_1013; + +struct USER_INFO_1014{ + LPWSTR usri1014_workstations; +} +alias USER_INFO_1014* PUSER_INFO_1014, LPUSER_INFO_1014; + +struct USER_INFO_1017{ + DWORD usri1017_acct_expires; +} +alias USER_INFO_1017* PUSER_INFO_1017, LPUSER_INFO_1017; + +struct USER_INFO_1018{ + DWORD usri1018_max_storage; +} +alias USER_INFO_1018* PUSER_INFO_1018, LPUSER_INFO_1018; + +struct USER_INFO_1020{ + DWORD usri1020_units_per_week; + PBYTE usri1020_logon_hours; +} +alias USER_INFO_1020* PUSER_INFO_1020, LPUSER_INFO_1020; + +struct USER_INFO_1023{ + LPWSTR usri1023_logon_server; +} +alias USER_INFO_1023* PUSER_INFO_1023, LPUSER_INFO_1023; + +struct USER_INFO_1024{ + DWORD usri1024_country_code; +} +alias USER_INFO_1024* PUSER_INFO_1024, LPUSER_INFO_1024; + +struct USER_INFO_1025{ + DWORD usri1025_code_page; +} +alias USER_INFO_1025* PUSER_INFO_1025, LPUSER_INFO_1025; + +struct USER_INFO_1051{ + DWORD usri1051_primary_group_id; +} +alias USER_INFO_1051* PUSER_INFO_1051, LPUSER_INFO_1051; + +struct USER_INFO_1052{ + LPWSTR usri1052_profile; +} +alias USER_INFO_1052* PUSER_INFO_1052, LPUSER_INFO_1052; + +struct USER_INFO_1053{ + LPWSTR usri1053_home_dir_drive; +} +alias USER_INFO_1053* PUSER_INFO_1053, LPUSER_INFO_1053; + +struct USER_MODALS_INFO_0{ + DWORD usrmod0_min_passwd_len; + DWORD usrmod0_max_passwd_age; + DWORD usrmod0_min_passwd_age; + DWORD usrmod0_force_logoff; + DWORD usrmod0_password_hist_len; +} +alias USER_MODALS_INFO_0* PUSER_MODALS_INFO_0, LPUSER_MODALS_INFO_0; + +struct USER_MODALS_INFO_1{ + DWORD usrmod1_role; + LPWSTR usrmod1_primary; +} +alias USER_MODALS_INFO_1* PUSER_MODALS_INFO_1, LPUSER_MODALS_INFO_1; + +struct USER_MODALS_INFO_2{ + LPWSTR usrmod2_domain_name; + PSID usrmod2_domain_id; +} +alias USER_MODALS_INFO_2* PUSER_MODALS_INFO_2, LPUSER_MODALS_INFO_2; + +struct USER_MODALS_INFO_3{ + DWORD usrmod3_lockout_duration; + DWORD usrmod3_lockout_observation_window; + DWORD usrmod3_lockout_threshold; +} +alias USER_MODALS_INFO_3* PUSER_MODALS_INFO_3, LPUSER_MODALS_INFO_3; + +struct USER_MODALS_INFO_1001{ + DWORD usrmod1001_min_passwd_len; +} +alias USER_MODALS_INFO_1001* PUSER_MODALS_INFO_1001, LPUSER_MODALS_INFO_1001; + +struct USER_MODALS_INFO_1002{ + DWORD usrmod1002_max_passwd_age; +} +alias USER_MODALS_INFO_1002* PUSER_MODALS_INFO_1002, LPUSER_MODALS_INFO_1002; + +struct USER_MODALS_INFO_1003{ + DWORD usrmod1003_min_passwd_age; +} +alias USER_MODALS_INFO_1003* PUSER_MODALS_INFO_1003, LPUSER_MODALS_INFO_1003; + +struct USER_MODALS_INFO_1004{ + DWORD usrmod1004_force_logoff; +} +alias USER_MODALS_INFO_1004* PUSER_MODALS_INFO_1004, LPUSER_MODALS_INFO_1004; + +struct USER_MODALS_INFO_1005{ + DWORD usrmod1005_password_hist_len; +} +alias USER_MODALS_INFO_1005* PUSER_MODALS_INFO_1005, LPUSER_MODALS_INFO_1005; + +struct USER_MODALS_INFO_1006{ + DWORD usrmod1006_role; +} +alias USER_MODALS_INFO_1006* PUSER_MODALS_INFO_1006, LPUSER_MODALS_INFO_1006; + +struct USER_MODALS_INFO_1007{ + LPWSTR usrmod1007_primary; +} +alias USER_MODALS_INFO_1007* PUSER_MODALS_INFO_1007, LPUSER_MODALS_INFO_1007; + +struct GROUP_INFO_0{ + LPWSTR grpi0_name; +} +alias GROUP_INFO_0* PGROUP_INFO_0, LPGROUP_INFO_0; + +struct GROUP_INFO_1{ + LPWSTR grpi1_name; + LPWSTR grpi1_comment; +} +alias GROUP_INFO_1* PGROUP_INFO_1, LPGROUP_INFO_1; + +struct GROUP_INFO_2{ + LPWSTR grpi2_name; + LPWSTR grpi2_comment; + DWORD grpi2_group_id; + DWORD grpi2_attributes; +} +alias GROUP_INFO_2* PGROUP_INFO_2; + +struct GROUP_INFO_1002{ + LPWSTR grpi1002_comment; +} +alias GROUP_INFO_1002* PGROUP_INFO_1002, LPGROUP_INFO_1002; + +struct GROUP_INFO_1005{ + DWORD grpi1005_attributes; +} +alias GROUP_INFO_1005* PGROUP_INFO_1005, LPGROUP_INFO_1005; + +struct GROUP_USERS_INFO_0{ + LPWSTR grui0_name; +} +alias GROUP_USERS_INFO_0* PGROUP_USERS_INFO_0, LPGROUP_USERS_INFO_0; + +struct GROUP_USERS_INFO_1{ + LPWSTR grui1_name; + DWORD grui1_attributes; +} +alias GROUP_USERS_INFO_1* PGROUP_USERS_INFO_1, LPGROUP_USERS_INFO_1; + +struct LOCALGROUP_INFO_0{ + LPWSTR lgrpi0_name; +} +alias LOCALGROUP_INFO_0* PLOCALGROUP_INFO_0, LPLOCALGROUP_INFO_0; + +struct LOCALGROUP_INFO_1{ + LPWSTR lgrpi1_name; + LPWSTR lgrpi1_comment; +} +alias LOCALGROUP_INFO_1* PLOCALGROUP_INFO_1, LPLOCALGROUP_INFO_1; + +struct LOCALGROUP_INFO_1002{ + LPWSTR lgrpi1002_comment; +} +alias LOCALGROUP_INFO_1002* PLOCALGROUP_INFO_1002, LPLOCALGROUP_INFO_1002; + +struct LOCALGROUP_MEMBERS_INFO_0{ + PSID lgrmi0_sid; +} +alias LOCALGROUP_MEMBERS_INFO_0* PLOCALGROUP_MEMBERS_INFO_0, LPLOCALGROUP_MEMBERS_INFO_0; + +struct LOCALGROUP_MEMBERS_INFO_1{ + PSID lgrmi1_sid; + SID_NAME_USE lgrmi1_sidusage; + LPWSTR lgrmi1_name; +} +alias LOCALGROUP_MEMBERS_INFO_1* PLOCALGROUP_MEMBERS_INFO_1, LPLOCALGROUP_MEMBERS_INFO_1; + +struct LOCALGROUP_MEMBERS_INFO_2{ + PSID lgrmi2_sid; + SID_NAME_USE lgrmi2_sidusage; + LPWSTR lgrmi2_domainandname; +} +alias LOCALGROUP_MEMBERS_INFO_2* PLOCALGROUP_MEMBERS_INFO_2, LPLOCALGROUP_MEMBERS_INFO_2; + +struct LOCALGROUP_MEMBERS_INFO_3{ + LPWSTR lgrmi3_domainandname; +} +alias LOCALGROUP_MEMBERS_INFO_3* PLOCALGROUP_MEMBERS_INFO_3, LPLOCALGROUP_MEMBERS_INFO_3; + +struct LOCALGROUP_USERS_INFO_0{ + LPWSTR lgrui0_name; +} +alias LOCALGROUP_USERS_INFO_0* PLOCALGROUP_USERS_INFO_0, LPLOCALGROUP_USERS_INFO_0; + +struct NET_DISPLAY_USER{ + LPWSTR usri1_name; + LPWSTR usri1_comment; + DWORD usri1_flags; + LPWSTR usri1_full_name; + DWORD usri1_user_id; + DWORD usri1_next_index; +} +alias NET_DISPLAY_USER* PNET_DISPLAY_USER; + +struct NET_DISPLAY_MACHINE{ + LPWSTR usri2_name; + LPWSTR usri2_comment; + DWORD usri2_flags; + DWORD usri2_user_id; + DWORD usri2_next_index; +} +alias NET_DISPLAY_MACHINE* PNET_DISPLAY_MACHINE; + +struct NET_DISPLAY_GROUP{ + LPWSTR grpi3_name; + LPWSTR grpi3_comment; + DWORD grpi3_group_id; + DWORD grpi3_attributes; + DWORD grpi3_next_index; +} +alias NET_DISPLAY_GROUP* PNET_DISPLAY_GROUP; + +struct ACCESS_INFO_0{ + LPTSTR acc0_resource_name; +} +alias ACCESS_INFO_0* PACCESS_INFO_0, LPACCESS_INFO_0; + +struct ACCESS_INFO_1{ + LPTSTR acc1_resource_name; + DWORD acc1_attr; + DWORD acc1_count; +} +alias ACCESS_INFO_1* PACCESS_INFO_1, LPACCESS_INFO_1; + +struct ACCESS_INFO_1002{ + DWORD acc1002_attr; +} +alias ACCESS_INFO_1002* PACCESS_INFO_1002, LPACCESS_INFO_1002; + +struct ACCESS_LIST{ + LPTSTR acl_ugname; + DWORD acl_access; +} +alias ACCESS_LIST* PACCESS_LIST, LPACCESS_LIST; + +struct NETLOGON_INFO_1{ + DWORD netlog1_flags; + NET_API_STATUS netlog1_pdc_connection_status; +} +alias NETLOGON_INFO_1* PNETLOGON_INFO_1; + +struct NETLOGON_INFO_2{ + DWORD netlog2_flags; + NET_API_STATUS netlog2_pdc_connection_status; + LPWSTR netlog2_trusted_dc_name; + NET_API_STATUS netlog2_tc_connection_status; +} +alias NETLOGON_INFO_2* PNETLOGON_INFO_2; + +struct NETLOGON_INFO_3{ + DWORD netlog3_flags; + DWORD netlog3_logon_attempts; + DWORD netlog3_reserved1; + DWORD netlog3_reserved2; + DWORD netlog3_reserved3; + DWORD netlog3_reserved4; + DWORD netlog3_reserved5; +} +alias NETLOGON_INFO_3* PNETLOGON_INFO_3; + +extern (Windows) { +deprecated { + /* These are obsolete */ + NET_API_STATUS NetAccessAdd(LPCWSTR,DWORD,PBYTE,PDWORD); + NET_API_STATUS NetAccessEnum(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); + NET_API_STATUS NetAccessGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); + NET_API_STATUS NetAccessSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); + NET_API_STATUS NetAccessDel(LPCWSTR,LPCWSTR); + NET_API_STATUS NetAccessGetUserPerms(LPCWSTR,LPCWSTR,LPCWSTR,PDWORD); +} +NET_API_STATUS NetUserAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetUserEnum(LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetUserGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetUserSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetUserDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetUserGetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS NetUserSetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetUserGetLocalGroups(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS NetUserModalsGet(LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetUserModalsSet(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetUserChangePassword(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetGroupAddUser(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetGroupDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupDelUser(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupGetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetGroupSetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetLocalGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetLocalGroupAddMember(LPCWSTR,LPCWSTR,PSID); +NET_API_STATUS NetLocalGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetLocalGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetLocalGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetLocalGroupDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetLocalGroupDelMember(LPCWSTR,LPCWSTR,PSID); +NET_API_STATUS NetLocalGroupGetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD, +PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetLocalGroupSetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetLocalGroupAddMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetLocalGroupDelMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetQueryDisplayInformation(LPCWSTR,DWORD,DWORD,DWORD,DWORD,PDWORD,PVOID*); +NET_API_STATUS NetGetDisplayInformationIndex(LPCWSTR,DWORD,LPCWSTR,PDWORD); +NET_API_STATUS NetGetDCName(LPCWSTR,LPCWSTR,PBYTE*); +NET_API_STATUS NetGetAnyDCName(LPCWSTR,LPCWSTR,PBYTE*); +NET_API_STATUS I_NetLogonControl(LPCWSTR,DWORD,DWORD,PBYTE*); +NET_API_STATUS I_NetLogonControl2(LPCWSTR,DWORD,DWORD,PBYTE,PBYTE*); +} \ No newline at end of file diff --git a/src/core/sys/windows/lmalert.d b/src/core/sys/windows/lmalert.d new file mode 100644 index 0000000000..9b9f07cf41 --- /dev/null +++ b/src/core/sys/windows/lmalert.d @@ -0,0 +1,77 @@ +/***********************************************************************\ +* lmalert.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmalert; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef; + +const TCHAR[] + ALERTER_MAILSLOT = `\\.\MAILSLOT\Alerter`, + ALERT_PRINT_EVENT = "PRINTING", + ALERT_MESSAGE_EVENT = "MESSAGE", + ALERT_ERRORLOG_EVENT = "ERRORLOG", + ALERT_ADMIN_EVENT = "ADMIN", + ALERT_USER_EVENT = "USER"; +//MACRO #define ALERT_OTHER_INFO(x) ((PBYTE)(x)+sizeof(STD_ALERT)) + +//MACRO #define ALERT_VAR_DATA(p) ((PBYTE)(p)+sizeof(*p)) + +const PRJOB_QSTATUS = 3; +const PRJOB_DEVSTATUS = 508; +const PRJOB_COMPLETE = 4; +const PRJOB_INTERV = 8; +const PRJOB_ = 16; +const PRJOB_DESTOFFLINE = 32; +const PRJOB_DESTPAUSED = 64; +const PRJOB_NOTIFY = 128; +const PRJOB_DESTNOPAPER = 256; +const PRJOB_DELETED = 32768; +const PRJOB_QS_QUEUED = 0; +const PRJOB_QS_PAUSED = 1; +const PRJOB_QS_SPOOLING = 2; +const PRJOB_QS_PRINTING = 3; + +struct ADMIN_OTHER_INFO{ + DWORD alrtad_errcode; + DWORD alrtad_numstrings; +} +alias ADMIN_OTHER_INFO* PADMIN_OTHER_INFO, LPADMIN_OTHER_INFO; + +struct STD_ALERT{ + DWORD alrt_timestamp; + TCHAR[EVLEN+1] alrt_eventname; + TCHAR[SNLEN+1] alrt_servicename; +} +alias STD_ALERT* PSTD_ALERT, LPSTD_ALERT; + +struct ERRLOG_OTHER_INFO{ + DWORD alrter_errcode; + DWORD alrter_offset; +} +alias ERRLOG_OTHER_INFO* PERRLOG_OTHER_INFO, LPERRLOG_OTHER_INFO; + +struct PRINT_OTHER_INFO{ + DWORD alrtpr_jobid; + DWORD alrtpr_status; + DWORD alrtpr_submitted; + DWORD alrtpr_size; +} +alias PRINT_OTHER_INFO* PPRINT_OTHER_INFO, LPPRINT_OTHER_INFO; + +struct USER_OTHER_INFO{ + DWORD alrtus_errcode; + DWORD alrtus_numstrings; +} +alias USER_OTHER_INFO* PUSER_OTHER_INFO, LPUSER_OTHER_INFO; + +extern (Windows) { +NET_API_STATUS NetAlertRaise(LPCWSTR,PVOID,DWORD); +NET_API_STATUS NetAlertRaiseEx(LPCWSTR,PVOID,DWORD,LPCWSTR); +} diff --git a/src/core/sys/windows/lmapibuf.d b/src/core/sys/windows/lmapibuf.d new file mode 100644 index 0000000000..f02c71fd04 --- /dev/null +++ b/src/core/sys/windows/lmapibuf.d @@ -0,0 +1,21 @@ +/***********************************************************************\ +* lmapibuf.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmapibuf; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef; + +extern (Windows) { + NET_API_STATUS NetApiBufferAllocate(DWORD, PVOID*); + NET_API_STATUS NetApiBufferFree(PVOID); + NET_API_STATUS NetApiBufferReallocate(PVOID, DWORD, PVOID*); + NET_API_STATUS NetApiBufferSize(PVOID, PDWORD); + NET_API_STATUS NetapipBufferAllocate(DWORD, PVOID*); +} diff --git a/src/core/sys/windows/lmat.d b/src/core/sys/windows/lmat.d new file mode 100644 index 0000000000..760730e18c --- /dev/null +++ b/src/core/sys/windows/lmat.d @@ -0,0 +1,50 @@ +/***********************************************************************\ +* lmat.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmat; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef; + +const JOB_RUN_PERIODICALLY = 1; +const JOB_EXEC_ERROR = 2; +const JOB_RUNS_TODAY = 4; +const JOB_ADD_CURRENT_DATE = 8; +const JOB_NONINTERACTIVE = 16; +const JOB_INPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_ADD_CURRENT_DATE + | JOB_NONINTERACTIVE; +const JOB_OUTPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_EXEC_ERROR + | JOB_RUNS_TODAY | JOB_NONINTERACTIVE; + +struct AT_ENUM { + DWORD JobId; + DWORD JobTime; + DWORD DaysOfMonth; + UCHAR DaysOfWeek; + UCHAR Flags; + LPWSTR Command; +} +alias AT_ENUM* PAT_ENUM, LPAT_ENUM; + +struct AT_INFO { + DWORD JobTime; + DWORD DaysOfMonth; + UCHAR DaysOfWeek; + UCHAR Flags; + LPWSTR Command; +} +alias AT_INFO* PAT_INFO, LPAT_INFO; + +extern (Windows) { + NET_API_STATUS NetScheduleJobAdd(LPWSTR, PBYTE, LPDWORD); + NET_API_STATUS NetScheduleJobDel(LPWSTR, DWORD, DWORD); + NET_API_STATUS NetScheduleJobEnum(LPWSTR, PBYTE*, DWORD, PDWORD, PDWORD, + PDWORD); + NET_API_STATUS NetScheduleJobGetInfo(LPWSTR, DWORD, PBYTE*); +} diff --git a/src/core/sys/windows/lmaudit.d b/src/core/sys/windows/lmaudit.d new file mode 100644 index 0000000000..57fdfa99cc --- /dev/null +++ b/src/core/sys/windows/lmaudit.d @@ -0,0 +1,302 @@ +/***********************************************************************\ +* lmaudit.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +// COMMENT: This file may be deprecated. +module win32.lmaudit; + +private import win32.lmcons, win32.windef; + +const LOGFLAGS_FORWARD = 0; +const LOGFLAGS_BACKWARD = 1; +const LOGFLAGS_SEEK = 2; + +const ACTION_LOCKOUT = 0; +const ACTION_ADMINUNLOCK = 1; + +const AE_GUEST=0; +const AE_USER=1; +const AE_ADMIN=2; +const AE_NORMAL=0; +const AE_USERLIMIT=0; +const AE_GENERAL=0; +const AE_ERROR=1; +const AE_SESSDIS=1; +const AE_BADPW=1; +const AE_AUTODIS=2; +const AE_UNSHARE=2; +const AE_ADMINPRIVREQD=2; +const AE_ADMINDIS=3; +const AE_NOACCESSPERM=3; +const AE_ACCRESTRICT=4; +const AE_NORMAL_CLOSE=0; +const AE_SES_CLOSE=1; +const AE_ADMIN_CLOSE=2; +const AE_LIM_UNKNOWN=0; +const AE_LIM_LOGONHOURS=1; +const AE_LIM_EXPIRED=2; +const AE_LIM_INVAL_WKSTA=3; +const AE_LIM_DISABLED=4; +const AE_LIM_DELETED=5; +const AE_MOD=0; +const AE_DELETE=1; +const AE_ADD=2; + +const AE_UAS_USER = 0; +const AE_UAS_GROUP = 1; +const AE_UAS_MODALS = 2; + +const SVAUD_SERVICE = 1; +const SVAUD_GOODSESSLOGON = 6; +const SVAUD_BADSESSLOGON = 24; +const SVAUD_SESSLOGON = SVAUD_GOODSESSLOGON|SVAUD_BADSESSLOGON; +const SVAUD_GOODNETLOGON = 96; +const SVAUD_BADNETLOGON = 384; +const SVAUD_NETLOGON = SVAUD_GOODNETLOGON|SVAUD_BADNETLOGON; +const SVAUD_LOGON = SVAUD_NETLOGON|SVAUD_SESSLOGON; +const SVAUD_GOODUSE = 0x600; +const SVAUD_BADUSE = 0x1800; +const SVAUD_USE = SVAUD_GOODUSE|SVAUD_BADUSE; +const SVAUD_USERLIST = 8192; +const SVAUD_PERMISSIONS = 16384; +const SVAUD_RESOURCE = 32768; +const SVAUD_LOGONLIM = 65536; + +const AA_AUDIT_ALL=1; +const AA_A_OWNER=4; +const AA_CLOSE=8; +const AA_S_OPEN=16; +const AA_S_WRITE=32; +const AA_S_CREATE=32; +const AA_S_DELETE=64; +const AA_S_ACL=128; +const AA_S_ALL=253; +const AA_F_OPEN=256; +const AA_F_WRITE=512; +const AA_F_CREATE=512; +const AA_F_DELETE=1024; +const AA_F_ACL=2048; +const AA_F_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; +const AA_A_OPEN=2048; +const AA_A_WRITE=4096; +const AA_A_CREATE=8192; +const AA_A_DELETE=16384; +const AA_A_ACL=32768; +const AA_A_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; + +struct AUDIT_ENTRY{ + DWORD ae_len; + DWORD ae_reserved; + DWORD ae_time; + DWORD ae_type; + DWORD ae_data_offset; + DWORD ae_data_size; +} +alias AUDIT_ENTRY* PAUDIT_ENTRY, LPAUDIT_ENTRY; + +struct HLOG{ + DWORD time; + DWORD last_flags; + DWORD offset; + DWORD rec_offset; +} +alias HLOG* PHLOG, LPHLOG; + +struct AE_SRVSTATUS{ + DWORD ae_sv_status; +} +alias AE_SRVSTATUS* PAE_SRVSTATUS, LPAE_SRVSTATUS; + +struct AE_SESSLOGON{ + DWORD ae_so_compname; + DWORD ae_so_username; + DWORD ae_so_privilege; +} +alias AE_SESSLOGON* PAE_SESSLOGON, LPAE_SESSLOGON; + +struct AE_SESSLOGOFF{ + DWORD ae_sf_compname; + DWORD ae_sf_username; + DWORD ae_sf_reason; +} +alias AE_SESSLOGOFF* PAE_SESSLOGOFF, LPAE_SESSLOGOFF; + +struct AE_SESSPWERR{ + DWORD ae_sp_compname; + DWORD ae_sp_username; +} +alias AE_SESSPWERR* PAE_SESSPWERR, LPAE_SESSPWERR; + +struct AE_CONNSTART{ + DWORD ae_ct_compname; + DWORD ae_ct_username; + DWORD ae_ct_netname; + DWORD ae_ct_connid; +} +alias AE_CONNSTART* PAE_CONNSTART, LPAE_CONNSTART; + +struct AE_CONNSTOP{ + DWORD ae_cp_compname; + DWORD ae_cp_username; + DWORD ae_cp_netname; + DWORD ae_cp_connid; + DWORD ae_cp_reason; +} +alias AE_CONNSTOP* PAE_CONNSTOP, LPAE_CONNSTOP; + +struct AE_CONNREJ{ + DWORD ae_cr_compname; + DWORD ae_cr_username; + DWORD ae_cr_netname; + DWORD ae_cr_reason; +} +alias AE_CONNREJ* PAE_CONNREJ, LPAE_CONNREJ; + +struct AE_RESACCESS{ + DWORD ae_ra_compname; + DWORD ae_ra_username; + DWORD ae_ra_resname; + DWORD ae_ra_operation; + DWORD ae_ra_returncode; + DWORD ae_ra_restype; + DWORD ae_ra_fileid; +} +alias AE_RESACCESS* PAE_RESACCESS, LPAE_RESACCESS; + +struct AE_RESACCESSREJ{ + DWORD ae_rr_compname; + DWORD ae_rr_username; + DWORD ae_rr_resname; + DWORD ae_rr_operation; +} +alias AE_RESACCESSREJ* PAE_RESACCESSREJ, LPAE_RESACCESSREJ; + +struct AE_CLOSEFILE{ + DWORD ae_cf_compname; + DWORD ae_cf_username; + DWORD ae_cf_resname; + DWORD ae_cf_fileid; + DWORD ae_cf_duration; + DWORD ae_cf_reason; +} +alias AE_CLOSEFILE* PAE_CLOSEFILE, LPAE_CLOSEFILE; + +struct AE_SERVICESTAT{ + DWORD ae_ss_compname; + DWORD ae_ss_username; + DWORD ae_ss_svcname; + DWORD ae_ss_status; + DWORD ae_ss_code; + DWORD ae_ss_text; + DWORD ae_ss_returnval; +} +alias AE_SERVICESTAT* PAE_SERVICESTAT, LPAE_SERVICESTAT; + +struct AE_ACLMOD{ + DWORD ae_am_compname; + DWORD ae_am_username; + DWORD ae_am_resname; + DWORD ae_am_action; + DWORD ae_am_datalen; +} +alias AE_ACLMOD* PAE_ACLMOD, LPAE_ACLMOD; + +struct AE_UASMOD{ + DWORD ae_um_compname; + DWORD ae_um_username; + DWORD ae_um_resname; + DWORD ae_um_rectype; + DWORD ae_um_action; + DWORD ae_um_datalen; +} +alias AE_UASMOD* PAE_UASMOD, LPAE_UASMOD; + +struct AE_NETLOGON{ + DWORD ae_no_compname; + DWORD ae_no_username; + DWORD ae_no_privilege; + DWORD ae_no_authflags; +} +alias AE_NETLOGON* PAE_NETLOGON, LPAE_NETLOGON; + +struct AE_NETLOGOFF{ + DWORD ae_nf_compname; + DWORD ae_nf_username; + DWORD ae_nf_reserved1; + DWORD ae_nf_reserved2; +} +alias AE_NETLOGOFF* PAE_NETLOGOFF, LPAE_NETLOGOFF; + +struct AE_ACCLIM{ + DWORD ae_al_compname; + DWORD ae_al_username; + DWORD ae_al_resname; + DWORD ae_al_limit; +} +alias AE_ACCLIM* PAE_ACCLIM, LPAE_ACCLIM; + +struct AE_LOCKOUT{ + DWORD ae_lk_compname; + DWORD ae_lk_username; + DWORD ae_lk_action; + DWORD ae_lk_bad_pw_count; +} +alias AE_LOCKOUT* PAE_LOCKOUT, LPAE_LOCKOUT; + +struct AE_GENERIC{ + DWORD ae_ge_msgfile; + DWORD ae_ge_msgnum; + DWORD ae_ge_params; + DWORD ae_ge_param1; + DWORD ae_ge_param2; + DWORD ae_ge_param3; + DWORD ae_ge_param4; + DWORD ae_ge_param5; + DWORD ae_ge_param6; + DWORD ae_ge_param7; + DWORD ae_ge_param8; + DWORD ae_ge_param9; +} +alias AE_GENERIC* PAE_GENERIC, LPAE_GENERIC; + +extern (Windows) { +deprecated { +NET_API_STATUS NetAuditClear(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetAuditRead(LPTSTR,LPTSTR,LPHLOG,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS NetAuditWrite(DWORD,PBYTE,DWORD,LPTSTR,PBYTE); +} +} + +/+ +/* MinGW: These conflict with struct typedefs, why? */ +const AE_SRVSTATUS=0; +const AE_SESSLOGON=1; +const AE_SESSLOGOFF=2; +const AE_SESSPWERR=3; +const AE_CONNSTART=4; +const AE_CONNSTOP=5; +const AE_CONNREJ=6; +const AE_RESACCESS=7; +const AE_RESACCESSREJ=8; +const AE_CLOSEFILE=9; +const AE_SERVICESTAT=11; +const AE_ACLMOD=12; +const AE_UASMOD=13; +const AE_NETLOGON=14; +const AE_NETLOGOFF=15; +const AE_NETLOGDENIED=16; +const AE_ACCLIMITEXCD=17; +const AE_RESACCESS2=18; +const AE_ACLMODFAIL=19; +const AE_LOCKOUT=20; +const AE_GENERIC_TYPE=21; +const AE_SRVSTART=0; +const AE_SRVPAUSED=1; +const AE_SRVCONT=2; +const AE_SRVSTOP=3; ++/ \ No newline at end of file diff --git a/src/core/sys/windows/lmbrowsr.d b/src/core/sys/windows/lmbrowsr.d new file mode 100644 index 0000000000..d7f320f909 --- /dev/null +++ b/src/core/sys/windows/lmbrowsr.d @@ -0,0 +1,85 @@ +/***********************************************************************\ +* lmbrowsr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmbrowsr; + +private import win32.lmcons, win32.windef; + +const BROWSER_ROLE_PDC = 1; +const BROWSER_ROLE_BDC = 2; + +struct BROWSER_STATISTICS { + LARGE_INTEGER StatisticsStartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + ULONG NumberOfServerEnumerations; + ULONG NumberOfDomainEnumerations; + ULONG NumberOfOtherEnumerations; + ULONG NumberOfMissedServerAnnouncements; + ULONG NumberOfMissedMailslotDatagrams; + ULONG NumberOfMissedGetBrowserServerListRequests; + ULONG NumberOfFailedServerAnnounceAllocations; + ULONG NumberOfFailedMailslotAllocations; + ULONG NumberOfFailedMailslotReceives; + ULONG NumberOfFailedMailslotWrites; + ULONG NumberOfFailedMailslotOpens; + ULONG NumberOfDuplicateMasterAnnouncements; + LARGE_INTEGER NumberOfIllegalDatagrams; +} +alias BROWSER_STATISTICS* PBROWSER_STATISTICS, LPBROWSER_STATISTICS; + +struct BROWSER_STATISTICS_100 { + LARGE_INTEGER StartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + LARGE_INTEGER NumberOfIllegalDatagrams; +} +alias BROWSER_STATISTICS_100* PBROWSER_STATISTICS_100; + +struct BROWSER_STATISTICS_101 { + LARGE_INTEGER StartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + LARGE_INTEGER NumberOfIllegalDatagrams; + ULONG NumberOfMissedServerAnnouncements; + ULONG NumberOfMissedMailslotDatagrams; + ULONG NumberOfMissedGetBrowserServerListRequests; + ULONG NumberOfFailedServerAnnounceAllocations; + ULONG NumberOfFailedMailslotAllocations; + ULONG NumberOfFailedMailslotReceives; + ULONG NumberOfFailedMailslotWrites; + ULONG NumberOfFailedMailslotOpens; + ULONG NumberOfDuplicateMasterAnnouncements; +} +alias BROWSER_STATISTICS_101* PBROWSER_STATISTICS_101; + +extern (Windows) { + NET_API_STATUS I_BrowserServerEnum(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, + PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, PDWORD); + NET_API_STATUS I_BrowserServerEnumEx(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, + PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR); + NET_API_STATUS I_BrowserQueryEmulatedDomains(LPWSTR, PBYTE*, PDWORD); + NET_API_STATUS I_BrowserQueryOtherDomains(LPCWSTR, PBYTE*, PDWORD, PDWORD); + NET_API_STATUS I_BrowserResetNetlogonState(LPCWSTR); + NET_API_STATUS I_BrowserSetNetlogonState(LPWSTR, LPWSTR, LPWSTR, DWORD); + NET_API_STATUS I_BrowserQueryStatistics(LPCWSTR, LPBROWSER_STATISTICS*); + NET_API_STATUS I_BrowserResetStatistics(LPCWSTR); + WORD I_BrowserServerEnumForXactsrv(LPCWSTR, LPCWSTR, ULONG, USHORT, PVOID, + WORD, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR, PWORD); + NET_API_STATUS I_BrowserDebugTrace(PWCHAR, PCHAR); +} diff --git a/src/core/sys/windows/lmchdev.d b/src/core/sys/windows/lmchdev.d new file mode 100644 index 0000000000..684d411637 --- /dev/null +++ b/src/core/sys/windows/lmchdev.d @@ -0,0 +1,90 @@ +/***********************************************************************\ +* lmchdev.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmchdev; + +// COMMENT: This file might be deprecated. + +private import win32.lmcons, win32.windef; + +const CHARDEVQ_NO_REQUESTS = -1; +const CHARDEV_CLOSE = 0; +const CHARDEVQ_MAX_PRIORITY = 1; +const CHARDEVQ_DEV_PARMNUM = 1; + +const HANDLE_INFO_LEVEL_1 = 1; +const HANDLE_CHARTIME_PARMNUM = 1; +const HANDLE_CHARCOUNT_PARMNUM = 2; + +const CHARDEV_STAT_OPENED = 2; +const CHARDEVQ_PRIORITY_PARMNUM = 2; +const CHARDEVQ_DEVS_PARMNUM = 3; +const CHARDEV_STAT_ERROR = 4; +const CHARDEVQ_NUMUSERS_PARMNUM = 4; +const CHARDEVQ_NUMAHEAD_PARMNUM = 5; +const CHARDEVQ_DEF_PRIORITY = 5; +const CHARDEVQ_PRIORITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_PRIORITY_PARMNUM; +const CHARDEVQ_DEVS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_DEVS_PARMNUM; +const CHARDEVQ_MIN_PRIORITY = 9; + +struct CHARDEV_INFO_0 { + LPWSTR ch0_dev; +} +alias CHARDEV_INFO_0* PCHARDEV_INFO_0, LPCHARDEV_INFO_0; + +struct CHARDEV_INFO_1{ + LPWSTR ch1_dev; + DWORD ch1_status; + LPWSTR ch1_username; + DWORD ch1_time; +} +alias CHARDEV_INFO_1* PCHARDEV_INFO_1, LPCHARDEV_INFO_1; + +struct CHARDEVQ_INFO_0 { + LPWSTR cq0_dev; +} +alias CHARDEVQ_INFO_0* PCHARDEVQ_INFO_0, LPCHARDEVQ_INFO_0; + +struct CHARDEVQ_INFO_1{ + LPWSTR cq1_dev; + DWORD cq1_priority; + LPWSTR cq1_devs; + DWORD cq1_numusers; + DWORD cq1_numahead; +} +alias CHARDEVQ_INFO_1* PCHARDEVQ_INFO_1, LPCHARDEVQ_INFO_1; + +struct CHARDEVQ_INFO_1002 { + DWORD cq1002_priority; +} +alias CHARDEVQ_INFO_1002* PCHARDEVQ_INFO_1002, LPCHARDEVQ_INFO_1002; + +struct CHARDEVQ_INFO_1003 { + LPWSTR cq1003_devs; +} +alias CHARDEVQ_INFO_1003* PCHARDEVQ_INFO_1003, LPCHARDEVQ_INFO_1003; + +struct HANDLE_INFO_1{ + DWORD hdli1_chartime; + DWORD hdli1_charcount; +} +alias HANDLE_INFO_1* PHANDLE_INFO_1, LPHANDLE_INFO_1; + +extern (Windows) { + NET_API_STATUS NetCharDevEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); + NET_API_STATUS NetCharDevGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetCharDevControl(LPCWSTR, LPCWSTR, DWORD); + NET_API_STATUS NetCharDevQEnum(LPCWSTR, LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); + NET_API_STATUS NetCharDevQGetInfo(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetCharDevQSetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE, PDWORD); + NET_API_STATUS NetCharDevQPurge(LPCWSTR, LPCWSTR); + NET_API_STATUS NetCharDevQPurgeSelf(LPCWSTR, LPCWSTR, LPCWSTR); + NET_API_STATUS NetHandleGetInfo(HANDLE, DWORD, PBYTE*); + NET_API_STATUS NetHandleSetInfo(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +} diff --git a/src/core/sys/windows/lmconfig.d b/src/core/sys/windows/lmconfig.d new file mode 100644 index 0000000000..6733fa2741 --- /dev/null +++ b/src/core/sys/windows/lmconfig.d @@ -0,0 +1,30 @@ +/***********************************************************************\ +* lmconfig.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmconfig; + +// All functions in this file are deprecated! + +private import win32.lmcons, win32.windef; + +deprecated { + struct CONFIG_INFO_0 { + LPWSTR cfgi0_key; + LPWSTR cfgi0_data; + } + + alias CONFIG_INFO_0* PCONFIG_INFO_0, LPCONFIG_INFO_0; + + extern (Windows) { + NET_API_STATUS NetConfigGet(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE*); + NET_API_STATUS NetConfigGetAll(LPCWSTR, LPCWSTR, PBYTE*); + NET_API_STATUS NetConfigSet(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, + PBYTE, DWORD); + } +} diff --git a/src/core/sys/windows/lmcons.d b/src/core/sys/windows/lmcons.d new file mode 100644 index 0000000000..38f98944f6 --- /dev/null +++ b/src/core/sys/windows/lmcons.d @@ -0,0 +1,86 @@ +/***********************************************************************\ +* lmcons.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmcons; + +private import win32.windef; +private import win32.lmerr; // for NERR_BASE + +const TCHAR[] + MESSAGE_FILENAME = "NETMSG", + OS2MSG_FILENAME = "BASE", + HELP_MSG_FILENAME = "NETH"; + +alias DWORD NET_API_STATUS, API_RET_TYPE; + +const MIN_LANMAN_MESSAGE_ID = NERR_BASE; +const MAX_LANMAN_MESSAGE_ID = 5799; + +const CNLEN = 15; /* also in nddeapi.h */ +const UNCLEN = CNLEN + 2; + +const DNLEN = 15; +const LM20_CNLEN = 15; +const LM20_DNLEN = 15; +const LM20_SNLEN = 15; +const LM20_STXTLEN = 63; +const LM20_UNCLEN = LM20_CNLEN + 2; +const LM20_NNLEN = 12; +const LM20_RMLEN = LM20_UNCLEN + 1 + LM20_NNLEN; +const NNLEN = 80; +const RMLEN = UNCLEN + 1 + NNLEN; +const SNLEN = 80; +const STXTLEN = 256; +const PATHLEN = 256; +const LM20_PATHLEN = 256; +const DEVLEN = 80; +const LM20_DEVLEN = 8; +const EVLEN = 16; +const UNLEN = 256; +const LM20_UNLEN = 20; +const GNLEN = UNLEN; +const LM20_GNLEN = LM20_UNLEN; +const PWLEN = 256; +const LM20_PWLEN = 14; +const SHPWLEN = 8; +const CLTYPE_LEN = 12; +const QNLEN = NNLEN; +const LM20_QNLEN = LM20_NNLEN; + +const MAXCOMMENTSZ = 256; +const LM20_MAXCOMMENTSZ = 48; +const ALERTSZ = 128; +const MAXDEVENTRIES = 32;// (sizeof(int)*8); +const NETBIOS_NAME_LEN = 16; +const DWORD MAX_PREFERRED_LENGTH = -1; +const CRYPT_KEY_LEN = 7; +const CRYPT_TXT_LEN = 8; +const ENCRYPTED_PWLEN = 16; +const SESSION_PWLEN = 24; +const SESSION_CRYPT_KLEN = 21; + +const PARMNUM_ALL = 0; +const DWORD PARM_ERROR_UNKNOWN = -1; +const PARM_ERROR_NONE = 0; +const PARMNUM_BASE_INFOLEVEL = 1000; + +const PLATFORM_ID_DOS = 300; +const PLATFORM_ID_OS2 = 400; +const PLATFORM_ID_NT = 500; +const PLATFORM_ID_OSF = 600; +const PLATFORM_ID_VMS = 700; + +// this is a new typedef in W2K, but it should be harmless for earlier Windows versions. +version (Unicode) { + alias LPWSTR LMSTR; + alias LPCWSTR LMCSTR; +} else { + alias LPSTR LMSTR; + alias LPCSTR LMCSTR; +} diff --git a/src/core/sys/windows/lmerr.d b/src/core/sys/windows/lmerr.d new file mode 100644 index 0000000000..700220a1d3 --- /dev/null +++ b/src/core/sys/windows/lmerr.d @@ -0,0 +1,313 @@ +/***********************************************************************\ +* lmerr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmerr; + +import win32.winerror; + +enum { + NERR_Success = 0, + NERR_BASE = 2100, + NERR_NetNotStarted = NERR_BASE + 2, + NERR_UnknownServer, + NERR_ShareMem, + NERR_NoNetworkResource, + NERR_RemoteOnly, + NERR_DevNotRedirected, + NERR_ServerNotStarted = NERR_BASE + 14, + NERR_ItemNotFound, + NERR_UnknownDevDir, + NERR_RedirectedPath, + NERR_DuplicateShare, + NERR_NoRoom, + NERR_TooManyItems = NERR_BASE + 21, + NERR_InvalidMaxUsers, + NERR_BufTooSmall, + NERR_RemoteErr = NERR_BASE + 27, + NERR_LanmanIniError = NERR_BASE + 31, + NERR_NetworkError = NERR_BASE + 36, + NERR_WkstaInconsistentState, + NERR_WkstaNotStarted, + NERR_BrowserNotStarted, + NERR_InternalError, + NERR_BadTransactConfig, + NERR_InvalidAPI, + NERR_BadEventName, + NERR_DupNameReboot, + NERR_CfgCompNotFound = NERR_BASE + 46, + NERR_CfgParamNotFound, + NERR_LineTooLong = NERR_BASE + 49, + NERR_QNotFound, + NERR_JobNotFound, + NERR_DestNotFound, + NERR_DestExists, + NERR_QExists, + NERR_QNoRoom, + NERR_JobNoRoom, + NERR_DestNoRoom, + NERR_DestIdle, + NERR_DestInvalidOp, + NERR_ProcNoRespond, + NERR_SpoolerNotLoaded, + NERR_DestInvalidState, + NERR_QInvalidState, + NERR_JobInvalidState, + NERR_SpoolNoMemory, + NERR_DriverNotFound, + NERR_DataTypeInvalid, + NERR_ProcNotFound, + NERR_ServiceTableLocked = NERR_BASE + 80, + NERR_ServiceTableFull, + NERR_ServiceInstalled, + NERR_ServiceEntryLocked, + NERR_ServiceNotInstalled, + NERR_BadServiceName, + NERR_ServiceCtlTimeout, + NERR_ServiceCtlBusy, + NERR_BadServiceProgName, + NERR_ServiceNotCtrl, + NERR_ServiceKillProc, + NERR_ServiceCtlNotValid, + NERR_NotInDispatchTbl, + NERR_BadControlRecv, + NERR_ServiceNotStarting, + NERR_AlreadyLoggedOn = NERR_BASE + 100, + NERR_NotLoggedOn, + NERR_BadUsername, + NERR_BadPassword, + NERR_UnableToAddName_W, + NERR_UnableToAddName_F, + NERR_UnableToDelName_W, + NERR_UnableToDelName_F, + NERR_LogonsPaused = NERR_BASE + 109, + NERR_LogonServerConflict, + NERR_LogonNoUserPath, + NERR_LogonScriptError, + NERR_StandaloneLogon = NERR_BASE + 114, + NERR_LogonServerNotFound, + NERR_LogonDomainExists, + NERR_NonValidatedLogon, + NERR_ACFNotFound = NERR_BASE + 119, + NERR_GroupNotFound, + NERR_UserNotFound, + NERR_ResourceNotFound, + NERR_GroupExists, + NERR_UserExists, + NERR_ResourceExists, + NERR_NotPrimary, + NERR_ACFNotLoaded, + NERR_ACFNoRoom, + NERR_ACFFileIOFail, + NERR_ACFTooManyLists, + NERR_UserLogon, + NERR_ACFNoParent, + NERR_CanNotGrowSegment, + NERR_SpeGroupOp, + NERR_NotInCache, + NERR_UserInGroup, + NERR_UserNotInGroup, + NERR_AccountUndefined, + NERR_AccountExpired, + NERR_InvalidWorkstation, + NERR_InvalidLogonHours, + NERR_PasswordExpired, + NERR_PasswordCantChange, + NERR_PasswordHistConflict, + NERR_PasswordTooShort, + NERR_PasswordTooRecent, + NERR_InvalidDatabase, + NERR_DatabaseUpToDate, + NERR_SyncRequired, + NERR_UseNotFound, + NERR_BadAsgType, + NERR_DeviceIsShared, + NERR_NoComputerName = NERR_BASE + 170, + NERR_MsgAlreadyStarted, + NERR_MsgInitFailed, + NERR_NameNotFound, + NERR_AlreadyForwarded, + NERR_AddForwarded, + NERR_AlreadyExists, + NERR_TooManyNames, + NERR_DelComputerName, + NERR_LocalForward, + NERR_GrpMsgProcessor, + NERR_PausedRemote, + NERR_BadReceive, + NERR_NameInUse, + NERR_MsgNotStarted, + NERR_NotLocalName, + NERR_NoForwardName, + NERR_RemoteFull, + NERR_NameNotForwarded, + NERR_TruncatedBroadcast, + NERR_InvalidDevice = NERR_BASE + 194, + NERR_WriteFault, + NERR_DuplicateName = NERR_BASE + 197, + NERR_DeleteLater, + NERR_IncompleteDel, + NERR_MultipleNets, + NERR_NetNameNotFound = NERR_BASE + 210, + NERR_DeviceNotShared, + NERR_ClientNameNotFound, + NERR_FileIdNotFound = NERR_BASE + 214, + NERR_ExecFailure, + NERR_TmpFile, + NERR_TooMuchData, + NERR_DeviceShareConflict, + NERR_BrowserTableIncomplete, + NERR_NotLocalDomain, + NERR_DevInvalidOpCode = NERR_BASE + 231, + NERR_DevNotFound, + NERR_DevNotOpen, + NERR_BadQueueDevString, + NERR_BadQueuePriority, + NERR_NoCommDevs = NERR_BASE + 237, + NERR_QueueNotFound, + NERR_BadDevString = NERR_BASE + 240, + NERR_BadDev, + NERR_InUseBySpooler, + NERR_CommDevInUse, + NERR_InvalidComputer = NERR_BASE + 251, + NERR_MaxLenExceeded = NERR_BASE + 254, + NERR_BadComponent = NERR_BASE + 256, + NERR_CantType, + NERR_TooManyEntries = NERR_BASE + 262, + NERR_ProfileFileTooBig = NERR_BASE + 270, + NERR_ProfileOffset, + NERR_ProfileCleanup, + NERR_ProfileUnknownCmd, + NERR_ProfileLoadErr, + NERR_ProfileSaveErr, + NERR_LogOverflow = NERR_BASE + 277, + NERR_LogFileChanged, + NERR_LogFileCorrupt, + NERR_SourceIsDir, + NERR_BadSource, + NERR_BadDest, + NERR_DifferentServers, + NERR_RunSrvPaused = NERR_BASE + 285, + NERR_ErrCommRunSrv = NERR_BASE + 289, + NERR_ErrorExecingGhost = NERR_BASE + 291, + NERR_ShareNotFound, + NERR_InvalidLana = NERR_BASE + 300, + NERR_OpenFiles, + NERR_ActiveConns, + NERR_BadPasswordCore, + NERR_DevInUse, + NERR_LocalDrive, + NERR_AlertExists = NERR_BASE + 330, + NERR_TooManyAlerts, + NERR_NoSuchAlert, + NERR_BadRecipient, + NERR_AcctLimitExceeded, + NERR_InvalidLogSeek = NERR_BASE + 340, + NERR_BadUasConfig = NERR_BASE + 350, + NERR_InvalidUASOp, + NERR_LastAdmin, + NERR_DCNotFound, + NERR_LogonTrackingError, + NERR_NetlogonNotStarted, + NERR_CanNotGrowUASFile, + NERR_TimeDiffAtDC, + NERR_PasswordMismatch, + NERR_NoSuchServer = NERR_BASE + 360, + NERR_NoSuchSession, + NERR_NoSuchConnection, + NERR_TooManyServers, + NERR_TooManySessions, + NERR_TooManyConnections, + NERR_TooManyFiles, + NERR_NoAlternateServers, + NERR_TryDownLevel = NERR_BASE + 370, + NERR_UPSDriverNotStarted = NERR_BASE + 380, + NERR_UPSInvalidConfig, + NERR_UPSInvalidCommPort, + NERR_UPSSignalAsserted, + NERR_UPSShutdownFailed, + NERR_BadDosRetCode = NERR_BASE + 400, + NERR_ProgNeedsExtraMem, + NERR_BadDosFunction, + NERR_RemoteBootFailed, + NERR_BadFileCheckSum, + NERR_NoRplBootSystem, + NERR_RplLoadrNetBiosErr, + NERR_RplLoadrDiskErr, + NERR_ImageParamErr, + NERR_TooManyImageParams, + NERR_NonDosFloppyUsed, + NERR_RplBootRestart, + NERR_RplSrvrCallFailed, + NERR_CantConnectRplSrvr, + NERR_CantOpenImageFile, + NERR_CallingRplSrvr, + NERR_StartingRplBoot, + NERR_RplBootServiceTerm, + NERR_RplBootStartFailed, + NERR_RPL_CONNECTED, + NERR_BrowserConfiguredToNotRun = NERR_BASE + 450, + NERR_RplNoAdaptersStarted = NERR_BASE + 510, + NERR_RplBadRegistry, + NERR_RplBadDatabase, + NERR_RplRplfilesShare, + NERR_RplNotRplServer, + NERR_RplCannotEnum, + NERR_RplWkstaInfoCorrupted, + NERR_RplWkstaNotFound, + NERR_RplWkstaNameUnavailable, + NERR_RplProfileInfoCorrupted, + NERR_RplProfileNotFound, + NERR_RplProfileNameUnavailable, + NERR_RplProfileNotEmpty, + NERR_RplConfigInfoCorrupted, + NERR_RplConfigNotFound, + NERR_RplAdapterInfoCorrupted, + NERR_RplInternal, + NERR_RplVendorInfoCorrupted, + NERR_RplBootInfoCorrupted, + NERR_RplWkstaNeedsUserAcct, + NERR_RplNeedsRPLUSERAcct, + NERR_RplBootNotFound, + NERR_RplIncompatibleProfile, + NERR_RplAdapterNameUnavailable, + NERR_RplConfigNotEmpty, + NERR_RplBootInUse, + NERR_RplBackupDatabase, + NERR_RplAdapterNotFound, + NERR_RplVendorNotFound, + NERR_RplVendorNameUnavailable, + NERR_RplBootNameUnavailable, + NERR_RplConfigNameUnavailable, + NERR_DfsInternalCorruption = NERR_BASE + 560, + NERR_DfsVolumeDataCorrupt, + NERR_DfsNoSuchVolume, + NERR_DfsVolumeAlreadyExists, + NERR_DfsAlreadyShared, + NERR_DfsNoSuchShare, + NERR_DfsNotALeafVolume, + NERR_DfsLeafVolume, + NERR_DfsVolumeHasMultipleServers, + NERR_DfsCantCreateJunctionPoint, + NERR_DfsServerNotDfsAware, + NERR_DfsBadRenamePath, + NERR_DfsVolumeIsOffline, + NERR_DfsNoSuchServer, + NERR_DfsCyclicalName, + NERR_DfsNotSupportedInServerDfs, + NERR_DfsDuplicateService, + NERR_DfsCantRemoveLastServerShare, + NERR_DfsVolumeIsInterDfs, + NERR_DfsInconsistent, + NERR_DfsServerUpgraded, + NERR_DfsDataIsIdentical, + NERR_DfsCantRemoveDfsRoot, + NERR_DfsChildOrParentInDfs, + NERR_DfsInternalError = NERR_BASE + 590, + MAX_NERR = NERR_BASE + 899 +} diff --git a/src/core/sys/windows/lmerrlog.d b/src/core/sys/windows/lmerrlog.d new file mode 100644 index 0000000000..406b6ac8c7 --- /dev/null +++ b/src/core/sys/windows/lmerrlog.d @@ -0,0 +1,222 @@ +/***********************************************************************\ +* lmerrlog.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmerrlog; + +// COMMENT: This appears to be only for Win16. All functions are deprecated. + +private import win32.lmcons, win32.windef; +private import win32.lmaudit; // for LPHLOG + +const ERRLOG_BASE=3100; +const ERRLOG2_BASE=5700; +const LOGFLAGS_FORWARD=0; +const LOGFLAGS_BACKWARD=1; +const LOGFLAGS_SEEK=2; +const NELOG_Internal_Error=ERRLOG_BASE; +const NELOG_Resource_Shortage=(ERRLOG_BASE+1); +const NELOG_Unable_To_Lock_Segment=(ERRLOG_BASE+2); +const NELOG_Unable_To_Unlock_Segment=(ERRLOG_BASE+3); +const NELOG_Uninstall_Service=(ERRLOG_BASE+4); +const NELOG_Init_Exec_Fail=(ERRLOG_BASE+5); +const NELOG_Ncb_Error=(ERRLOG_BASE+6); +const NELOG_Net_Not_Started=(ERRLOG_BASE+7); +const NELOG_Ioctl_Error=(ERRLOG_BASE+8); +const NELOG_System_Semaphore=(ERRLOG_BASE+9); +const NELOG_Init_OpenCreate_Err=(ERRLOG_BASE+10); +const NELOG_NetBios=(ERRLOG_BASE+11); +const NELOG_SMB_Illegal=(ERRLOG_BASE+12); +const NELOG_Service_Fail=(ERRLOG_BASE+13); +const NELOG_Entries_Lost=(ERRLOG_BASE+14); +const NELOG_Init_Seg_Overflow=(ERRLOG_BASE+20); +const NELOG_Srv_No_Mem_Grow=(ERRLOG_BASE+21); +const NELOG_Access_File_Bad=(ERRLOG_BASE+22); +const NELOG_Srvnet_Not_Started=(ERRLOG_BASE+23); +const NELOG_Init_Chardev_Err=(ERRLOG_BASE+24); +const NELOG_Remote_API=(ERRLOG_BASE+25); +const NELOG_Ncb_TooManyErr=(ERRLOG_BASE+26); +const NELOG_Mailslot_err=(ERRLOG_BASE+27); +const NELOG_ReleaseMem_Alert=(ERRLOG_BASE+28); +const NELOG_AT_cannot_write=(ERRLOG_BASE+29); +const NELOG_Cant_Make_Msg_File=(ERRLOG_BASE+30); +const NELOG_Exec_Netservr_NoMem=(ERRLOG_BASE+31); +const NELOG_Server_Lock_Failure=(ERRLOG_BASE+32); +const NELOG_Msg_Shutdown=(ERRLOG_BASE+40); +const NELOG_Msg_Sem_Shutdown=(ERRLOG_BASE+41); +const NELOG_Msg_Log_Err=(ERRLOG_BASE+50); +const NELOG_VIO_POPUP_ERR=(ERRLOG_BASE+51); +const NELOG_Msg_Unexpected_SMB_Type=(ERRLOG_BASE+52); +const NELOG_Wksta_Infoseg=(ERRLOG_BASE+60); +const NELOG_Wksta_Compname=(ERRLOG_BASE+61); +const NELOG_Wksta_BiosThreadFailure=(ERRLOG_BASE+62); +const NELOG_Wksta_IniSeg=(ERRLOG_BASE+63); +const NELOG_Wksta_HostTab_Full=(ERRLOG_BASE+64); +const NELOG_Wksta_Bad_Mailslot_SMB=(ERRLOG_BASE+65); +const NELOG_Wksta_UASInit=(ERRLOG_BASE+66); +const NELOG_Wksta_SSIRelogon=(ERRLOG_BASE+67); +const NELOG_Build_Name=(ERRLOG_BASE+70); +const NELOG_Name_Expansion=(ERRLOG_BASE+71); +const NELOG_Message_Send=(ERRLOG_BASE+72); +const NELOG_Mail_Slt_Err=(ERRLOG_BASE+73); +const NELOG_AT_cannot_read=(ERRLOG_BASE+74); +const NELOG_AT_sched_err=(ERRLOG_BASE+75); +const NELOG_AT_schedule_file_created=(ERRLOG_BASE+76); +const NELOG_Srvnet_NB_Open=(ERRLOG_BASE+77); +const NELOG_AT_Exec_Err=(ERRLOG_BASE+78); +const NELOG_Lazy_Write_Err=(ERRLOG_BASE+80); +const NELOG_HotFix=(ERRLOG_BASE+81); +const NELOG_HardErr_From_Server=(ERRLOG_BASE+82); +const NELOG_LocalSecFail1=(ERRLOG_BASE+83); +const NELOG_LocalSecFail2=(ERRLOG_BASE+84); +const NELOG_LocalSecFail3=(ERRLOG_BASE+85); +const NELOG_LocalSecGeneralFail=(ERRLOG_BASE+86); +const NELOG_NetWkSta_Internal_Error=(ERRLOG_BASE+90); +const NELOG_NetWkSta_No_Resource=(ERRLOG_BASE+91); +const NELOG_NetWkSta_SMB_Err=(ERRLOG_BASE+92); +const NELOG_NetWkSta_VC_Err=(ERRLOG_BASE+93); +const NELOG_NetWkSta_Stuck_VC_Err=(ERRLOG_BASE+94); +const NELOG_NetWkSta_NCB_Err=(ERRLOG_BASE+95); +const NELOG_NetWkSta_Write_Behind_Err=(ERRLOG_BASE+96); +const NELOG_NetWkSta_Reset_Err=(ERRLOG_BASE+97); +const NELOG_NetWkSta_Too_Many=(ERRLOG_BASE+98); +const NELOG_Srv_Thread_Failure=(ERRLOG_BASE+104); +const NELOG_Srv_Close_Failure=(ERRLOG_BASE+105); +const NELOG_ReplUserCurDir=(ERRLOG_BASE+106); +const NELOG_ReplCannotMasterDir=(ERRLOG_BASE+107); +const NELOG_ReplUpdateError=(ERRLOG_BASE+108); +const NELOG_ReplLostMaster=(ERRLOG_BASE+109); +const NELOG_NetlogonAuthDCFail=(ERRLOG_BASE+110); +const NELOG_ReplLogonFailed=(ERRLOG_BASE+111); +const NELOG_ReplNetErr=(ERRLOG_BASE+112); +const NELOG_ReplMaxFiles=(ERRLOG_BASE+113); +const NELOG_ReplMaxTreeDepth=(ERRLOG_BASE+114); +const NELOG_ReplBadMsg=(ERRLOG_BASE+115); +const NELOG_ReplSysErr=(ERRLOG_BASE+116); +const NELOG_ReplUserLoged=(ERRLOG_BASE+117); +const NELOG_ReplBadImport=(ERRLOG_BASE+118); +const NELOG_ReplBadExport=(ERRLOG_BASE+119); +const NELOG_ReplSignalFileErr=(ERRLOG_BASE+120); +const NELOG_DiskFT=(ERRLOG_BASE+121); +const NELOG_ReplAccessDenied=(ERRLOG_BASE+122); +const NELOG_NetlogonFailedPrimary=(ERRLOG_BASE+123); +const NELOG_NetlogonPasswdSetFailed=(ERRLOG_BASE+124); +const NELOG_NetlogonTrackingError=(ERRLOG_BASE+125); +const NELOG_NetlogonSyncError=(ERRLOG_BASE+126); +const NELOG_UPS_PowerOut=(ERRLOG_BASE+130); +const NELOG_UPS_Shutdown=(ERRLOG_BASE+131); +const NELOG_UPS_CmdFileError=(ERRLOG_BASE+132); +const NELOG_UPS_CannotOpenDriver=(ERRLOG_BASE+133); +const NELOG_UPS_PowerBack=(ERRLOG_BASE+134); +const NELOG_UPS_CmdFileConfig=(ERRLOG_BASE+135); +const NELOG_UPS_CmdFileExec=(ERRLOG_BASE+136); +const NELOG_Missing_Parameter=(ERRLOG_BASE+150); +const NELOG_Invalid_Config_Line=(ERRLOG_BASE+151); +const NELOG_Invalid_Config_File=(ERRLOG_BASE+152); +const NELOG_File_Changed=(ERRLOG_BASE+153); +const NELOG_Files_Dont_Fit=(ERRLOG_BASE+154); +const NELOG_Wrong_DLL_Version=(ERRLOG_BASE+155); +const NELOG_Error_in_DLL=(ERRLOG_BASE+156); +const NELOG_System_Error=(ERRLOG_BASE+157); +const NELOG_FT_ErrLog_Too_Large=(ERRLOG_BASE+158); +const NELOG_FT_Update_In_Progress=(ERRLOG_BASE+159); +const NELOG_OEM_Code=(ERRLOG_BASE+199); +const NELOG_NetlogonSSIInitError=ERRLOG2_BASE; +const NELOG_NetlogonFailedToUpdateTrustList=(ERRLOG2_BASE+1); +const NELOG_NetlogonFailedToAddRpcInterface=(ERRLOG2_BASE+2); +const NELOG_NetlogonFailedToReadMailslot=(ERRLOG2_BASE+3); +const NELOG_NetlogonFailedToRegisterSC=(ERRLOG2_BASE+4); +const NELOG_NetlogonChangeLogCorrupt=(ERRLOG2_BASE+5); +const NELOG_NetlogonFailedToCreateShare=(ERRLOG2_BASE+6); +const NELOG_NetlogonDownLevelLogonFailed=(ERRLOG2_BASE+7); +const NELOG_NetlogonDownLevelLogoffFailed=(ERRLOG2_BASE+8); +const NELOG_NetlogonNTLogonFailed=(ERRLOG2_BASE+9); +const NELOG_NetlogonNTLogoffFailed=(ERRLOG2_BASE+10); +const NELOG_NetlogonPartialSyncCallSuccess=(ERRLOG2_BASE+11); +const NELOG_NetlogonPartialSyncCallFailed=(ERRLOG2_BASE+12); +const NELOG_NetlogonFullSyncCallSuccess=(ERRLOG2_BASE+13); +const NELOG_NetlogonFullSyncCallFailed=(ERRLOG2_BASE+14); +const NELOG_NetlogonPartialSyncSuccess=(ERRLOG2_BASE+15); +const NELOG_NetlogonPartialSyncFailed=(ERRLOG2_BASE+16); +const NELOG_NetlogonFullSyncSuccess=(ERRLOG2_BASE+17); +const NELOG_NetlogonFullSyncFailed=(ERRLOG2_BASE+18); +const NELOG_NetlogonAuthNoDomainController=(ERRLOG2_BASE+19); +const NELOG_NetlogonAuthNoTrustLsaSecret=(ERRLOG2_BASE+20); +const NELOG_NetlogonAuthNoTrustSamAccount=(ERRLOG2_BASE+21); +const NELOG_NetlogonServerAuthFailed=(ERRLOG2_BASE+22); +const NELOG_NetlogonServerAuthNoTrustSamAccount=(ERRLOG2_BASE+23); +const NELOG_FailedToRegisterSC=(ERRLOG2_BASE+24); +const NELOG_FailedToSetServiceStatus=(ERRLOG2_BASE+25); +const NELOG_FailedToGetComputerName=(ERRLOG2_BASE+26); +const NELOG_DriverNotLoaded=(ERRLOG2_BASE+27); +const NELOG_NoTranportLoaded=(ERRLOG2_BASE+28); +const NELOG_NetlogonFailedDomainDelta=(ERRLOG2_BASE+29); +const NELOG_NetlogonFailedGlobalGroupDelta=(ERRLOG2_BASE+30); +const NELOG_NetlogonFailedLocalGroupDelta=(ERRLOG2_BASE+31); +const NELOG_NetlogonFailedUserDelta=(ERRLOG2_BASE+32); +const NELOG_NetlogonFailedPolicyDelta=(ERRLOG2_BASE+33); +const NELOG_NetlogonFailedTrustedDomainDelta=(ERRLOG2_BASE+34); +const NELOG_NetlogonFailedAccountDelta=(ERRLOG2_BASE+35); +const NELOG_NetlogonFailedSecretDelta=(ERRLOG2_BASE+36); +const NELOG_NetlogonSystemError=(ERRLOG2_BASE+37); +const NELOG_NetlogonDuplicateMachineAccounts=(ERRLOG2_BASE+38); +const NELOG_NetlogonTooManyGlobalGroups=(ERRLOG2_BASE+39); +const NELOG_NetlogonBrowserDriver=(ERRLOG2_BASE+40); +const NELOG_NetlogonAddNameFailure=(ERRLOG2_BASE+41); +const NELOG_RplMessages=(ERRLOG2_BASE+42); +const NELOG_RplXnsBoot=(ERRLOG2_BASE+43); +const NELOG_RplSystem=(ERRLOG2_BASE+44); +const NELOG_RplWkstaTimeout=(ERRLOG2_BASE+45); +const NELOG_RplWkstaFileOpen=(ERRLOG2_BASE+46); +const NELOG_RplWkstaFileRead=(ERRLOG2_BASE+47); +const NELOG_RplWkstaMemory=(ERRLOG2_BASE+48); +const NELOG_RplWkstaFileChecksum=(ERRLOG2_BASE+49); +const NELOG_RplWkstaFileLineCount=(ERRLOG2_BASE+50); +const NELOG_RplWkstaBbcFile=(ERRLOG2_BASE+51); +const NELOG_RplWkstaFileSize=(ERRLOG2_BASE+52); +const NELOG_RplWkstaInternal=(ERRLOG2_BASE+53); +const NELOG_RplWkstaWrongVersion=(ERRLOG2_BASE+54); +const NELOG_RplWkstaNetwork=(ERRLOG2_BASE+55); +const NELOG_RplAdapterResource=(ERRLOG2_BASE+56); +const NELOG_RplFileCopy=(ERRLOG2_BASE+57); +const NELOG_RplFileDelete=(ERRLOG2_BASE+58); +const NELOG_RplFilePerms=(ERRLOG2_BASE+59); +const NELOG_RplCheckConfigs=(ERRLOG2_BASE+60); +const NELOG_RplCreateProfiles=(ERRLOG2_BASE+61); +const NELOG_RplRegistry=(ERRLOG2_BASE+62); +const NELOG_RplReplaceRPLDISK=(ERRLOG2_BASE+63); +const NELOG_RplCheckSecurity=(ERRLOG2_BASE+64); +const NELOG_RplBackupDatabase=(ERRLOG2_BASE+65); +const NELOG_RplInitDatabase=(ERRLOG2_BASE+66); +const NELOG_RplRestoreDatabaseFailure=(ERRLOG2_BASE+67); +const NELOG_RplRestoreDatabaseSuccess=(ERRLOG2_BASE+68); +const NELOG_RplInitRestoredDatabase=(ERRLOG2_BASE+69); +const NELOG_NetlogonSessionTypeWrong=(ERRLOG2_BASE+70); + +struct ERROR_LOG { + DWORD el_len; + DWORD el_reserved; + DWORD el_time; + DWORD el_error; + LPWSTR el_name; + LPWSTR el_text; + LPBYTE el_data; + DWORD el_data_size; + DWORD el_nstrings; +} +alias ERROR_LOG* PERROR_LOG, LPERROR_LOG; + +extern (Windows) { + deprecated { + NET_API_STATUS NetErrorLogClear(LPCWSTR, LPCWSTR, LPBYTE); + NET_API_STATUS NetErrorLogRead(LPCWSTR, LPWSTR, LPHLOG, DWORD, + LPDWORD, DWORD, DWORD, LPBYTE*, DWORD, LPDWORD, LPDWORD); + NET_API_STATUS NetErrorLogWrite(LPBYTE, DWORD, LPCWSTR, LPBYTE, + DWORD, LPBYTE, DWORD, LPBYTE); + } +} \ No newline at end of file diff --git a/src/core/sys/windows/lmmsg.d b/src/core/sys/windows/lmmsg.d new file mode 100644 index 0000000000..990f855e9d --- /dev/null +++ b/src/core/sys/windows/lmmsg.d @@ -0,0 +1,43 @@ +/***********************************************************************\ +* lmmsg.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmmsg; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef, win32.w32api; + +static assert (_WIN32_WINNT >= 0x501, + "win32.lmmsg is available only if version WindowsXP, Windows2003 " + "or WindowsVista is set"); + +const MSGNAME_NOT_FORWARDED = 0; +const MSGNAME_FORWARDED_TO = 4; +const MSGNAME_FORWARDED_FROM = 16; + +struct MSG_INFO_0 { + LPWSTR msgi0_name; +} +alias MSG_INFO_0* PMSG_INFO_0, LPMSG_INFO_0; + +struct MSG_INFO_1 { + LPWSTR msgi1_name; + DWORD msgi1_forward_flag; + LPWSTR msgi1_forward; +} +alias MSG_INFO_1* PMSG_INFO_1, LPMSG_INFO_1; + +extern (Windows) { + NET_API_STATUS NetMessageBufferSend(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE, + DWORD); + NET_API_STATUS NetMessageNameAdd(LPCWSTR, LPCWSTR); + NET_API_STATUS NetMessageNameDel(LPCWSTR, LPCWSTR); + NET_API_STATUS NetMessageNameEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, + PDWORD, PDWORD); + NET_API_STATUS NetMessageNameGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); +} diff --git a/src/core/sys/windows/lmremutl.d b/src/core/sys/windows/lmremutl.d new file mode 100644 index 0000000000..1a58e9789b --- /dev/null +++ b/src/core/sys/windows/lmremutl.d @@ -0,0 +1,60 @@ +/***********************************************************************\ +* lmremutl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmremutl; +pragma(lib, "netapi32"); + +// D Conversion Note: DESC_CHAR is defined as TCHAR. + +private import win32.lmcons, win32.windef; + +const SUPPORTS_REMOTE_ADMIN_PROTOCOL = 2; +const SUPPORTS_RPC = 4; +const SUPPORTS_SAM_PROTOCOL = 8; +const SUPPORTS_UNICODE = 16; +const SUPPORTS_LOCAL = 32; +const SUPPORTS_ANY = 0xFFFFFFFF; + +const NO_PERMISSION_REQUIRED = 1; +const ALLOCATE_RESPONSE = 2; +const USE_SPECIFIC_TRANSPORT = 0x80000000; + +//[Yes] #ifndef DESC_CHAR_UNICODE +//alias CHAR DESC_CHAR; +//} else { +//[No] #else +//[No] typedef WCHAR DESC_CHAR; +//[No] #endif +// FIXME (D): Is this OK? +alias TCHAR DESC_CHAR; + +alias DESC_CHAR* LPDESC; + +struct TIME_OF_DAY_INFO { + DWORD tod_elapsedt; + DWORD tod_msecs; + DWORD tod_hours; + DWORD tod_mins; + DWORD tod_secs; + DWORD tod_hunds; + LONG tod_timezone; + DWORD tod_tinterval; + DWORD tod_day; + DWORD tod_month; + DWORD tod_year; + DWORD tod_weekday; +} +alias TIME_OF_DAY_INFO* PTIME_OF_DAY_INFO, LPTIME_OF_DAY_INFO; + +extern (Windows) { + NET_API_STATUS NetRemoteTOD(LPCWSTR, PBYTE*); + NET_API_STATUS NetRemoteComputerSupports(LPCWSTR, DWORD, PDWORD); + NET_API_STATUS RxRemoteApi(DWORD, LPCWSTR, LPDESC, LPDESC, LPDESC, + LPDESC, LPDESC, LPDESC, LPDESC, DWORD, ...); +} diff --git a/src/core/sys/windows/lmrepl.d b/src/core/sys/windows/lmrepl.d new file mode 100644 index 0000000000..36c28251ac --- /dev/null +++ b/src/core/sys/windows/lmrepl.d @@ -0,0 +1,134 @@ +/***********************************************************************\ +* lmrepl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmrepl; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef; + +const REPL_ROLE_EXPORT=1; +const REPL_ROLE_IMPORT=2; +const REPL_ROLE_BOTH=3; + +const REPL_INTERVAL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; +const REPL_PULSE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; +const REPL_GUARDTIME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+2; +const REPL_RANDOM_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+3; + +const REPL_UNLOCK_NOFORCE=0; +const REPL_UNLOCK_FORCE=1; +const REPL_STATE_OK=0; +const REPL_STATE_NO_MASTER=1; +const REPL_STATE_NO_SYNC=2; +const REPL_STATE_NEVER_REPLICATED=3; +const REPL_INTEGRITY_FILE=1; +const REPL_INTEGRITY_TREE=2; +const REPL_EXTENT_FILE=1; +const REPL_EXTENT_TREE=2; + +const REPL_EXPORT_INTEGRITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; +const REPL_EXPORT_EXTENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; + +struct REPL_INFO_0 { + DWORD rp0_role; + LPWSTR rp0_exportpath; + LPWSTR rp0_exportlist; + LPWSTR rp0_importpath; + LPWSTR rp0_importlist; + LPWSTR rp0_logonusername; + DWORD rp0_interval; + DWORD rp0_pulse; + DWORD rp0_guardtime; + DWORD rp0_random; +} +alias REPL_INFO_0* PREPL_INFO_0, LPREPL_INFO_0; + +struct REPL_INFO_1000 { + DWORD rp1000_interval; +} +alias REPL_INFO_1000* PREPL_INFO_1000, LPREPL_INFO_1000; + +struct REPL_INFO_1001 { + DWORD rp1001_pulse; +} +alias REPL_INFO_1001* PREPL_INFO_1001, LPREPL_INFO_1001; + +struct REPL_INFO_1002 { + DWORD rp1002_guardtime; +} +alias REPL_INFO_1002* PREPL_INFO_1002, LPREPL_INFO_1002; + +struct REPL_INFO_1003 { + DWORD rp1003_random; +} +alias REPL_INFO_1003* PREPL_INFO_1003, LPREPL_INFO_1003; + +struct REPL_EDIR_INFO_0 { + LPWSTR rped0_dirname; +} +alias REPL_EDIR_INFO_0* PREPL_EDIR_INFO_0, LPREPL_EDIR_INFO_0; + +struct REPL_EDIR_INFO_1 { + LPWSTR rped1_dirname; + DWORD rped1_integrity; + DWORD rped1_extent; +} +alias REPL_EDIR_INFO_1* PREPL_EDIR_INFO_1, LPREPL_EDIR_INFO_1; + +struct REPL_EDIR_INFO_2 { + LPWSTR rped2_dirname; + DWORD rped2_integrity; + DWORD rped2_extent; + DWORD rped2_lockcount; + DWORD rped2_locktime; +} +alias REPL_EDIR_INFO_2* PREPL_EDIR_INFO_2, LPREPL_EDIR_INFO_2; + +struct REPL_EDIR_INFO_1000 { + DWORD rped1000_integrity; +} +alias REPL_EDIR_INFO_1000* PREPL_EDIR_INFO_1000, LPREPL_EDIR_INFO_1000; + +struct REPL_EDIR_INFO_1001 { + DWORD rped1001_extent; +} +alias REPL_EDIR_INFO_1001* PREPL_EDIR_INFO_1001, LPREPL_EDIR_INFO_1001; + +struct REPL_IDIR_INFO_0 { + LPWSTR rpid0_dirname; +} +alias REPL_IDIR_INFO_0* PREPL_IDIR_INFO_0, LPREPL_IDIR_INFO_0; + +struct REPL_IDIR_INFO_1 { + LPWSTR rpid1_dirname; + DWORD rpid1_state; + LPWSTR rpid1_mastername; + DWORD rpid1_last_update_time; + DWORD rpid1_lockcount; + DWORD rpid1_locktime; +} +alias REPL_IDIR_INFO_1* PREPL_IDIR_INFO_1, LPREPL_IDIR_INFO_1; + +extern (Windows) { +NET_API_STATUS NetReplGetInfo(LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetReplSetInfo(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplExportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplExportDirDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplExportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetReplExportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetReplExportDirSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplExportDirLock(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplExportDirUnlock(LPCWSTR,LPCWSTR,DWORD); +NET_API_STATUS NetReplImportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplImportDirDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplImportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetReplImportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetReplImportDirLock(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplImportDirUnlock(LPCWSTR,LPCWSTR,DWORD); +} \ No newline at end of file diff --git a/src/core/sys/windows/lmserver.d b/src/core/sys/windows/lmserver.d new file mode 100644 index 0000000000..e3b176c866 --- /dev/null +++ b/src/core/sys/windows/lmserver.d @@ -0,0 +1,941 @@ +/***********************************************************************\ +* lmserver.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmserver; + +import win32.winsvc; +private import win32.lmcons, win32.windef; + +struct SERVER_INFO_100 { + DWORD sv100_platform_id; + LPWSTR sv100_name; +} +alias SERVER_INFO_100* PSERVER_INFO_100, LPSERVER_INFO_100; + +struct SERVER_INFO_101 { + DWORD sv101_platform_id; + LPWSTR sv101_name; + DWORD sv101_version_major; + DWORD sv101_version_minor; + DWORD sv101_type; + LPWSTR sv101_comment; +} +alias SERVER_INFO_101* PSERVER_INFO_101, LPSERVER_INFO_101; + +struct SERVER_INFO_102 { + DWORD sv102_platform_id; + LPWSTR sv102_name; + DWORD sv102_version_major; + DWORD sv102_version_minor; + DWORD sv102_type; + LPWSTR sv102_comment; + DWORD sv102_users; + LONG sv102_disc; + BOOL sv102_hidden; + DWORD sv102_announce; + DWORD sv102_anndelta; + DWORD sv102_licenses; + LPWSTR sv102_userpath; +} +alias SERVER_INFO_102* PSERVER_INFO_102, LPSERVER_INFO_102; + +struct SERVER_INFO_402 { + DWORD sv402_ulist_mtime; + DWORD sv402_glist_mtime; + DWORD sv402_alist_mtime; + LPWSTR sv402_alerts; + DWORD sv402_security; + DWORD sv402_numadmin; + DWORD sv402_lanmask; + LPWSTR sv402_guestacct; + DWORD sv402_chdevs; + DWORD sv402_chdevq; + DWORD sv402_chdevjobs; + DWORD sv402_connections; + DWORD sv402_shares; + DWORD sv402_openfiles; + DWORD sv402_sessopens; + DWORD sv402_sessvcs; + DWORD sv402_sessreqs; + DWORD sv402_opensearch; + DWORD sv402_activelocks; + DWORD sv402_numreqbuf; + DWORD sv402_sizreqbuf; + DWORD sv402_numbigbuf; + DWORD sv402_numfiletasks; + DWORD sv402_alertsched; + DWORD sv402_erroralert; + DWORD sv402_logonalert; + DWORD sv402_accessalert; + DWORD sv402_diskalert; + DWORD sv402_netioalert; + DWORD sv402_maxauditsz; + LPWSTR sv402_srvheuristics; +} +alias SERVER_INFO_402* PSERVER_INFO_402, LPSERVER_INFO_402; + +struct SERVER_INFO_403 { + DWORD sv403_ulist_mtime; + DWORD sv403_glist_mtime; + DWORD sv403_alist_mtime; + LPWSTR sv403_alerts; + DWORD sv403_security; + DWORD sv403_numadmin; + DWORD sv403_lanmask; + LPWSTR sv403_guestacct; + DWORD sv403_chdevs; + DWORD sv403_chdevq; + DWORD sv403_chdevjobs; + DWORD sv403_connections; + DWORD sv403_shares; + DWORD sv403_openfiles; + DWORD sv403_sessopens; + DWORD sv403_sessvcs; + DWORD sv403_sessreqs; + DWORD sv403_opensearch; + DWORD sv403_activelocks; + DWORD sv403_numreqbuf; + DWORD sv403_sizreqbuf; + DWORD sv403_numbigbuf; + DWORD sv403_numfiletasks; + DWORD sv403_alertsched; + DWORD sv403_erroralert; + DWORD sv403_logonalert; + DWORD sv403_accessalert; + DWORD sv403_diskalert; + DWORD sv403_netioalert; + DWORD sv403_maxauditsz; + LPWSTR sv403_srvheuristics; + DWORD sv403_auditedevents; + DWORD sv403_autoprofile; + LPWSTR sv403_autopath; +} +alias SERVER_INFO_403* PSERVER_INFO_403, LPSERVER_INFO_403; + +struct SERVER_INFO_502 { + DWORD sv502_sessopens; + DWORD sv502_sessvcs; + DWORD sv502_opensearch; + DWORD sv502_sizreqbuf; + DWORD sv502_initworkitems; + DWORD sv502_maxworkitems; + DWORD sv502_rawworkitems; + DWORD sv502_irpstacksize; + DWORD sv502_maxrawbuflen; + DWORD sv502_sessusers; + DWORD sv502_sessconns; + DWORD sv502_maxpagedmemoryusage; + DWORD sv502_maxnonpagedmemoryusage; + BOOL sv502_enablesoftcompat; + BOOL sv502_enableforcedlogoff; + BOOL sv502_timesource; + BOOL sv502_acceptdownlevelapis; + BOOL sv502_lmannounce; +} +alias SERVER_INFO_502* PSERVER_INFO_502, LPSERVER_INFO_502; + +struct SERVER_INFO_503 { + DWORD sv503_sessopens; + DWORD sv503_sessvcs; + DWORD sv503_opensearch; + DWORD sv503_sizreqbuf; + DWORD sv503_initworkitems; + DWORD sv503_maxworkitems; + DWORD sv503_rawworkitems; + DWORD sv503_irpstacksize; + DWORD sv503_maxrawbuflen; + DWORD sv503_sessusers; + DWORD sv503_sessconns; + DWORD sv503_maxpagedmemoryusage; + DWORD sv503_maxnonpagedmemoryusage; + BOOL sv503_enablesoftcompat; + BOOL sv503_enableforcedlogoff; + BOOL sv503_timesource; + BOOL sv503_acceptdownlevelapis; + BOOL sv503_lmannounce; + LPWSTR sv503_domain; + DWORD sv503_maxcopyreadlen; + DWORD sv503_maxcopywritelen; + DWORD sv503_minkeepsearch; + DWORD sv503_maxkeepsearch; + DWORD sv503_minkeepcomplsearch; + DWORD sv503_maxkeepcomplsearch; + DWORD sv503_threadcountadd; + DWORD sv503_numblockthreads; + DWORD sv503_scavtimeout; + DWORD sv503_minrcvqueue; + DWORD sv503_minfreeworkitems; + DWORD sv503_xactmemsize; + DWORD sv503_threadpriority; + DWORD sv503_maxmpxct; + DWORD sv503_oplockbreakwait; + DWORD sv503_oplockbreakresponsewait; + BOOL sv503_enableoplocks; + BOOL sv503_enableoplockforceclose; + BOOL sv503_enablefcbopens; + BOOL sv503_enableraw; + BOOL sv503_enablesharednetdrives; + DWORD sv503_minfreeconnections; + DWORD sv503_maxfreeconnections; +} +alias SERVER_INFO_503* PSERVER_INFO_503, LPSERVER_INFO_503; + +struct SERVER_INFO_599 { + DWORD sv599_sessopens; + DWORD sv599_sessvcs; + DWORD sv599_opensearch; + DWORD sv599_sizreqbuf; + DWORD sv599_initworkitems; + DWORD sv599_maxworkitems; + DWORD sv599_rawworkitems; + DWORD sv599_irpstacksize; + DWORD sv599_maxrawbuflen; + DWORD sv599_sessusers; + DWORD sv599_sessconns; + DWORD sv599_maxpagedmemoryusage; + DWORD sv599_maxnonpagedmemoryusage; + BOOL sv599_enablesoftcompat; + BOOL sv599_enableforcedlogoff; + BOOL sv599_timesource; + BOOL sv599_acceptdownlevelapis; + BOOL sv599_lmannounce; + LPWSTR sv599_domain; + DWORD sv599_maxcopyreadlen; + DWORD sv599_maxcopywritelen; + DWORD sv599_minkeepsearch; + DWORD sv599_maxkeepsearch; + DWORD sv599_minkeepcomplsearch; + DWORD sv599_maxkeepcomplsearch; + DWORD sv599_threadcountadd; + DWORD sv599_numblockthreads; + DWORD sv599_scavtimeout; + DWORD sv599_minrcvqueue; + DWORD sv599_minfreeworkitems; + DWORD sv599_xactmemsize; + DWORD sv599_threadpriority; + DWORD sv599_maxmpxct; + DWORD sv599_oplockbreakwait; + DWORD sv599_oplockbreakresponsewait; + BOOL sv599_enableoplocks; + BOOL sv599_enableoplockforceclose; + BOOL sv599_enablefcbopens; + BOOL sv599_enableraw; + BOOL sv599_enablesharednetdrives; + DWORD sv599_minfreeconnections; + DWORD sv599_maxfreeconnections; + DWORD sv599_initsesstable; + DWORD sv599_initconntable; + DWORD sv599_initfiletable; + DWORD sv599_initsearchtable; + DWORD sv599_alertschedule; + DWORD sv599_errorthreshold; + DWORD sv599_networkerrorthreshold; + DWORD sv599_diskspacethreshold; + DWORD sv599_reserved; + DWORD sv599_maxlinkdelay; + DWORD sv599_minlinkthroughput; + DWORD sv599_linkinfovalidtime; + DWORD sv599_scavqosinfoupdatetime; + DWORD sv599_maxworkitemidletime; +} +alias SERVER_INFO_599* PSERVER_INFO_599, LPSERVER_INFO_599; + +struct SERVER_INFO_598 { + DWORD sv598_maxrawworkitems; + DWORD sv598_maxthreadsperqueue; + DWORD sv598_producttype; + DWORD sv598_serversize; + DWORD sv598_connectionlessautodisc; + DWORD sv598_sharingviolationretries; + DWORD sv598_sharingviolationdelay; + DWORD sv598_maxglobalopensearch; + DWORD sv598_removeduplicatesearches; + DWORD sv598_lockviolationoffset; + DWORD sv598_lockviolationdelay; + DWORD sv598_mdlreadswitchover; + DWORD sv598_cachedopenlimit; + DWORD sv598_otherqueueaffinity; + BOOL sv598_restrictnullsessaccess; + BOOL sv598_enablewfw311directipx; + DWORD sv598_queuesamplesecs; + DWORD sv598_balancecount; + DWORD sv598_preferredaffinity; + DWORD sv598_maxfreerfcbs; + DWORD sv598_maxfreemfcbs; + DWORD sv598_maxfreelfcbs; + DWORD sv598_maxfreepagedpoolchunks; + DWORD sv598_minpagedpoolchunksize; + DWORD sv598_maxpagedpoolchunksize; + BOOL sv598_sendsfrompreferredprocessor; +} +alias SERVER_INFO_598* PSERVER_INFO_598, LPSERVER_INFO_598; + +struct SERVER_INFO_1005 { + LPWSTR sv1005_comment; +} +alias SERVER_INFO_1005* PSERVER_INFO_1005, LPSERVER_INFO_1005; + +struct SERVER_INFO_1107 { + DWORD sv1107_users; +} +alias SERVER_INFO_1107* PSERVER_INFO_1107, LPSERVER_INFO_1107; + +struct SERVER_INFO_1010 { + LONG sv1010_disc; +} +alias SERVER_INFO_1010* PSERVER_INFO_1010, LPSERVER_INFO_1010; + +struct SERVER_INFO_1016 { + BOOL sv1016_hidden; +} +alias SERVER_INFO_1016* PSERVER_INFO_1016, LPSERVER_INFO_1016; + +struct SERVER_INFO_1017 { + DWORD sv1017_announce; +} +alias SERVER_INFO_1017* PSERVER_INFO_1017, LPSERVER_INFO_1017; + +struct SERVER_INFO_1018 { + DWORD sv1018_anndelta; +} +alias SERVER_INFO_1018* PSERVER_INFO_1018, LPSERVER_INFO_1018; + +struct SERVER_INFO_1501 { + DWORD sv1501_sessopens; +} +alias SERVER_INFO_1501* PSERVER_INFO_1501, LPSERVER_INFO_1501; + +struct SERVER_INFO_1502 { + DWORD sv1502_sessvcs; +} +alias SERVER_INFO_1502* PSERVER_INFO_1502, LPSERVER_INFO_1502; + +struct SERVER_INFO_1503 { + DWORD sv1503_opensearch; +} +alias SERVER_INFO_1503* PSERVER_INFO_1503, LPSERVER_INFO_1503; + +struct SERVER_INFO_1506 { + DWORD sv1506_maxworkitems; +} +alias SERVER_INFO_1506* PSERVER_INFO_1506, LPSERVER_INFO_1506; + +struct SERVER_INFO_1509 { + DWORD sv1509_maxrawbuflen; +} +alias SERVER_INFO_1509* PSERVER_INFO_1509, LPSERVER_INFO_1509; + +struct SERVER_INFO_1510 { + DWORD sv1510_sessusers; +} +alias SERVER_INFO_1510* PSERVER_INFO_1510, LPSERVER_INFO_1510; + +struct SERVER_INFO_1511 { + DWORD sv1511_sessconns; +} alias SERVER_INFO_1511* PSERVER_INFO_1511, LPSERVER_INFO_1511; + +struct SERVER_INFO_1512 { + DWORD sv1512_maxnonpagedmemoryusage; +} +alias SERVER_INFO_1512* PSERVER_INFO_1512, LPSERVER_INFO_1512; + +struct SERVER_INFO_1513 { + DWORD sv1513_maxpagedmemoryusage; +} +alias SERVER_INFO_1513* PSERVER_INFO_1513, LPSERVER_INFO_1513; + +struct SERVER_INFO_1514 { + BOOL sv1514_enablesoftcompat; +} +alias SERVER_INFO_1514* PSERVER_INFO_1514, LPSERVER_INFO_1514; + +struct SERVER_INFO_1515 { + BOOL sv1515_enableforcedlogoff; +} +alias SERVER_INFO_1515* PSERVER_INFO_1515, LPSERVER_INFO_1515; + +struct SERVER_INFO_1516 { + BOOL sv1516_timesource; +} +alias SERVER_INFO_1516* PSERVER_INFO_1516, LPSERVER_INFO_1516; + +struct SERVER_INFO_1518 { + BOOL sv1518_lmannounce; +} +alias SERVER_INFO_1518* PSERVER_INFO_1518, LPSERVER_INFO_1518; + +struct SERVER_INFO_1520 { + DWORD sv1520_maxcopyreadlen; +} +alias SERVER_INFO_1520* PSERVER_INFO_1520, LPSERVER_INFO_1520; + +struct SERVER_INFO_1521 { + DWORD sv1521_maxcopywritelen; +} +alias SERVER_INFO_1521* PSERVER_INFO_1521, LPSERVER_INFO_1521; + +struct SERVER_INFO_1522 { + DWORD sv1522_minkeepsearch; +} +alias SERVER_INFO_1522* PSERVER_INFO_1522, LPSERVER_INFO_1522; + +struct SERVER_INFO_1523 { + DWORD sv1523_maxkeepsearch; +} +alias SERVER_INFO_1523* PSERVER_INFO_1523, LPSERVER_INFO_1523; + +struct SERVER_INFO_1524 { + DWORD sv1524_minkeepcomplsearch; +} +alias SERVER_INFO_1524* PSERVER_INFO_1524, LPSERVER_INFO_1524; + +struct SERVER_INFO_1525 { + DWORD sv1525_maxkeepcomplsearch; +} +alias SERVER_INFO_1525* PSERVER_INFO_1525, LPSERVER_INFO_1525; + +struct SERVER_INFO_1528 { + DWORD sv1528_scavtimeout; +} +alias SERVER_INFO_1528* PSERVER_INFO_1528, LPSERVER_INFO_1528; + +struct SERVER_INFO_1529 { + DWORD sv1529_minrcvqueue; +} +alias SERVER_INFO_1529* PSERVER_INFO_1529, LPSERVER_INFO_1529; + +struct SERVER_INFO_1530 { + DWORD sv1530_minfreeworkitems; +} +alias SERVER_INFO_1530* PSERVER_INFO_1530, LPSERVER_INFO_1530; + +struct SERVER_INFO_1533 { + DWORD sv1533_maxmpxct; +} +alias SERVER_INFO_1533* PSERVER_INFO_1533, LPSERVER_INFO_1533; + +struct SERVER_INFO_1534 { + DWORD sv1534_oplockbreakwait; +} +alias SERVER_INFO_1534* PSERVER_INFO_1534, LPSERVER_INFO_1534; + +struct SERVER_INFO_1535 { + DWORD sv1535_oplockbreakresponsewait; +} +alias SERVER_INFO_1535* PSERVER_INFO_1535, LPSERVER_INFO_1535; + +struct SERVER_INFO_1536 { + BOOL sv1536_enableoplocks; +} +alias SERVER_INFO_1536* PSERVER_INFO_1536, LPSERVER_INFO_1536; + +struct SERVER_INFO_1537 { + BOOL sv1537_enableoplockforceclose; +} +alias SERVER_INFO_1537* PSERVER_INFO_1537, LPSERVER_INFO_1537; + +struct SERVER_INFO_1538 { + BOOL sv1538_enablefcbopens; +} +alias SERVER_INFO_1538* PSERVER_INFO_1538, LPSERVER_INFO_1538; + +struct SERVER_INFO_1539 { + BOOL sv1539_enableraw; +} +alias SERVER_INFO_1539* PSERVER_INFO_1539, LPSERVER_INFO_1539; + +struct SERVER_INFO_1540 { + BOOL sv1540_enablesharednetdrives; +} +alias SERVER_INFO_1540* PSERVER_INFO_1540, LPSERVER_INFO_1540; + +struct SERVER_INFO_1541 { + BOOL sv1541_minfreeconnections; +} +alias SERVER_INFO_1541* PSERVER_INFO_1541, LPSERVER_INFO_1541; + +struct SERVER_INFO_1542 { + BOOL sv1542_maxfreeconnections; +} +alias SERVER_INFO_1542* PSERVER_INFO_1542, LPSERVER_INFO_1542; + +struct SERVER_INFO_1543 { + DWORD sv1543_initsesstable; +} +alias SERVER_INFO_1543* PSERVER_INFO_1543, LPSERVER_INFO_1543; + +struct SERVER_INFO_1544 { + DWORD sv1544_initconntable; +} +alias SERVER_INFO_1544* PSERVER_INFO_1544, LPSERVER_INFO_1544; + +struct SERVER_INFO_1545 { + DWORD sv1545_initfiletable; +} +alias SERVER_INFO_1545* PSERVER_INFO_1545, LPSERVER_INFO_1545; + +struct SERVER_INFO_1546 { + DWORD sv1546_initsearchtable; +} +alias SERVER_INFO_1546* PSERVER_INFO_1546, LPSERVER_INFO_1546; + +struct SERVER_INFO_1547 { + DWORD sv1547_alertschedule; +} +alias SERVER_INFO_1547* PSERVER_INFO_1547, LPSERVER_INFO_1547; + +struct SERVER_INFO_1548 { + DWORD sv1548_errorthreshold; +} +alias SERVER_INFO_1548* PSERVER_INFO_1548, LPSERVER_INFO_1548; + +struct SERVER_INFO_1549 { + DWORD sv1549_networkerrorthreshold; +} +alias SERVER_INFO_1549* PSERVER_INFO_1549, LPSERVER_INFO_1549; + +struct SERVER_INFO_1550 { + DWORD sv1550_diskspacethreshold; +} +alias SERVER_INFO_1550* PSERVER_INFO_1550, LPSERVER_INFO_1550; + +struct SERVER_INFO_1552 { + DWORD sv1552_maxlinkdelay; +} +alias SERVER_INFO_1552* PSERVER_INFO_1552, LPSERVER_INFO_1552; + +struct SERVER_INFO_1553 { + DWORD sv1553_minlinkthroughput; +} +alias SERVER_INFO_1553* PSERVER_INFO_1553, LPSERVER_INFO_1553; + +struct SERVER_INFO_1554 { + DWORD sv1554_linkinfovalidtime; +} +alias SERVER_INFO_1554* PSERVER_INFO_1554, LPSERVER_INFO_1554; + +struct SERVER_INFO_1555 { + DWORD sv1555_scavqosinfoupdatetime; +} +alias SERVER_INFO_1555* PSERVER_INFO_1555, LPSERVER_INFO_1555; + +struct SERVER_INFO_1556 { + DWORD sv1556_maxworkitemidletime; +} +alias SERVER_INFO_1556* PSERVER_INFO_1556, LPSERVER_INFO_1556; + +struct SERVER_INFO_1557 { + DWORD sv1557_maxrawworkitems; +} +alias SERVER_INFO_1557* PSERVER_INFO_1557, LPSERVER_INFO_1557; + +struct SERVER_INFO_1560 { + DWORD sv1560_producttype; +} +alias SERVER_INFO_1560* PSERVER_INFO_1560, LPSERVER_INFO_1560; + +struct SERVER_INFO_1561 { + DWORD sv1561_serversize; +} +alias SERVER_INFO_1561* PSERVER_INFO_1561, LPSERVER_INFO_1561; + +struct SERVER_INFO_1562 { + DWORD sv1562_connectionlessautodisc; +} +alias SERVER_INFO_1562* PSERVER_INFO_1562, LPSERVER_INFO_1562; + +struct SERVER_INFO_1563 { + DWORD sv1563_sharingviolationretries; +} +alias SERVER_INFO_1563* PSERVER_INFO_1563, LPSERVER_INFO_1563; + +struct SERVER_INFO_1564 { + DWORD sv1564_sharingviolationdelay; +} +alias SERVER_INFO_1564* PSERVER_INFO_1564, LPSERVER_INFO_1564; + +struct SERVER_INFO_1565 { + DWORD sv1565_maxglobalopensearch; +} +alias SERVER_INFO_1565* PSERVER_INFO_1565, LPSERVER_INFO_1565; + +struct SERVER_INFO_1566 { + BOOL sv1566_removeduplicatesearches; +} +alias SERVER_INFO_1566* PSERVER_INFO_1566, LPSERVER_INFO_1566; + +struct SERVER_INFO_1567 { + DWORD sv1567_lockviolationretries; +} +alias SERVER_INFO_1567* PSERVER_INFO_1567, LPSERVER_INFO_1567; + +struct SERVER_INFO_1568 { + DWORD sv1568_lockviolationoffset; +} +alias SERVER_INFO_1568* PSERVER_INFO_1568, LPSERVER_INFO_1568; + +struct SERVER_INFO_1569 { + DWORD sv1569_lockviolationdelay; +} +alias SERVER_INFO_1569* PSERVER_INFO_1569, LPSERVER_INFO_1569; + +struct SERVER_INFO_1570 { + DWORD sv1570_mdlreadswitchover; +} +alias SERVER_INFO_1570* PSERVER_INFO_1570, LPSERVER_INFO_1570; + +struct SERVER_INFO_1571 { + DWORD sv1571_cachedopenlimit; +} +alias SERVER_INFO_1571* PSERVER_INFO_1571, LPSERVER_INFO_1571; + +struct SERVER_INFO_1572 { + DWORD sv1572_criticalthreads; +} +alias SERVER_INFO_1572* PSERVER_INFO_1572, LPSERVER_INFO_1572; + +struct SERVER_INFO_1573 { + DWORD sv1573_restrictnullsessaccess; +} +alias SERVER_INFO_1573* PSERVER_INFO_1573, LPSERVER_INFO_1573; + +struct SERVER_INFO_1574 { + DWORD sv1574_enablewfw311directipx; +} +alias SERVER_INFO_1574* PSERVER_INFO_1574, LPSERVER_INFO_1574; + +struct SERVER_INFO_1575 { + DWORD sv1575_otherqueueaffinity; +} +alias SERVER_INFO_1575* PSERVER_INFO_1575, LPSERVER_INFO_1575; + +struct SERVER_INFO_1576 { + DWORD sv1576_queuesamplesecs; +} +alias SERVER_INFO_1576* PSERVER_INFO_1576, LPSERVER_INFO_1576; + +struct SERVER_INFO_1577 { + DWORD sv1577_balancecount; +} +alias SERVER_INFO_1577* PSERVER_INFO_1577, LPSERVER_INFO_1577; + +struct SERVER_INFO_1578 { + DWORD sv1578_preferredaffinity; +} +alias SERVER_INFO_1578* PSERVER_INFO_1578, LPSERVER_INFO_1578; + +struct SERVER_INFO_1579 { + DWORD sv1579_maxfreerfcbs; +} +alias SERVER_INFO_1579* PSERVER_INFO_1579, LPSERVER_INFO_1579; + +struct SERVER_INFO_1580 { + DWORD sv1580_maxfreemfcbs; +} +alias SERVER_INFO_1580* PSERVER_INFO_1580, LPSERVER_INFO_1580; + +struct SERVER_INFO_1581 { + DWORD sv1581_maxfreemlcbs; +} +alias SERVER_INFO_1581* PSERVER_INFO_1581, LPSERVER_INFO_1581; + +struct SERVER_INFO_1582 { + DWORD sv1582_maxfreepagedpoolchunks; +} +alias SERVER_INFO_1582* PSERVER_INFO_1582, LPSERVER_INFO_1582; + +struct SERVER_INFO_1583 { + DWORD sv1583_minpagedpoolchunksize; +} +alias SERVER_INFO_1583* PSERVER_INFO_1583, LPSERVER_INFO_1583; + +struct SERVER_INFO_1584 { + DWORD sv1584_maxpagedpoolchunksize; +} +alias SERVER_INFO_1584* PSERVER_INFO_1584, LPSERVER_INFO_1584; + +struct SERVER_INFO_1585 { + BOOL sv1585_sendsfrompreferredprocessor; +} +alias SERVER_INFO_1585* PSERVER_INFO_1585, LPSERVER_INFO_1585; + +struct SERVER_INFO_1586 { + BOOL sv1586_maxthreadsperqueue; +} +alias SERVER_INFO_1586* PSERVER_INFO_1586, LPSERVER_INFO_1586; + +struct SERVER_TRANSPORT_INFO_0 { + DWORD svti0_numberofvcs; + LPWSTR svti0_transportname; + PBYTE svti0_transportaddress; + DWORD svti0_transportaddresslength; + LPWSTR svti0_networkaddress; +} +alias SERVER_TRANSPORT_INFO_0* PSERVER_TRANSPORT_INFO_0, + LPSERVER_TRANSPORT_INFO_0; + +extern (Windows): +NET_API_STATUS NetServerEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD); +NET_API_STATUS NetServerEnumEx(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR); +NET_API_STATUS NetServerGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetServerSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetServerSetInfoCommandLine(WORD,LPWSTR*); +NET_API_STATUS NetServerDiskEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetServerComputerNameAdd(LPWSTR,LPWSTR,LPWSTR); +NET_API_STATUS NetServerComputerNameDel(LPWSTR,LPWSTR); +NET_API_STATUS NetServerTransportAdd(LPWSTR,DWORD,PBYTE); +NET_API_STATUS NetServerTransportAddEx(LPWSTR,DWORD,PBYTE); +NET_API_STATUS NetServerTransportDel(LPWSTR,DWORD,PBYTE); +NET_API_STATUS NetServerTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +BOOL SetServiceBits(SERVICE_STATUS_HANDLE,DWORD,BOOL,BOOL); + +const SVI1_NUM_ELEMENTS=5; +const SVI2_NUM_ELEMENTS=40; +const SVI3_NUM_ELEMENTS=44; +const SV_MAX_CMD_LEN=PATHLEN; +const SW_AUTOPROF_LOAD_MASK=1; +const SW_AUTOPROF_SAVE_MASK=2; +const SV_MAX_SRV_HEUR_LEN=32; +const SV_USERS_PER_LICENSE=5; +const SV_PLATFORM_ID_OS2=400; +const SV_PLATFORM_ID_NT=500; +const MAJOR_VERSION_MASK=15; +const SV_TYPE_WORKSTATION=1; +const SV_TYPE_SERVER=2; +const SV_TYPE_SQLSERVER=4; +const SV_TYPE_DOMAIN_CTRL=8; +const SV_TYPE_DOMAIN_BAKCTRL=16; +const SV_TYPE_TIME_SOURCE=32; +const SV_TYPE_AFP=64; +const SV_TYPE_NOVELL=128; +const SV_TYPE_DOMAIN_MEMBER=256; +const SV_TYPE_PRINTQ_SERVER=512; +const SV_TYPE_DIALIN_SERVER=1024; +const SV_TYPE_XENIX_SERVER=2048; +const SV_TYPE_SERVER_UNIX=SV_TYPE_XENIX_SERVER; +const SV_TYPE_NT=4096; +const SV_TYPE_WFW=8192; +const SV_TYPE_SERVER_MFPN=16384; +const SV_TYPE_SERVER_NT=32768; +const SV_TYPE_POTENTIAL_BROWSER=65536; +const SV_TYPE_BACKUP_BROWSER=0x20000; +const SV_TYPE_MASTER_BROWSER=0x40000; +const SV_TYPE_DOMAIN_MASTER=0x80000; +const SV_TYPE_SERVER_OSF=0x100000; +const SV_TYPE_SERVER_VMS=0x200000; +const SV_TYPE_WINDOWS=0x400000; +const SV_TYPE_ALTERNATE_XPORT=0x20000000; +const SV_TYPE_LOCAL_LIST_ONLY=0x40000000; +const SV_TYPE_DOMAIN_ENUM=0x80000000; +const SV_TYPE_ALL=0xFFFFFFFF; +const SV_NODISC=(-1); +const SV_USERSECURITY=1; +const SV_SHARESECURITY=0; +const SV_HIDDEN=1; +const SV_VISIBLE=0; +const SV_PLATFORM_ID_PARMNUM=101; +const SV_NAME_PARMNUM=102; +const SV_VERSION_MAJOR_PARMNUM=103; +const SV_VERSION_MINOR_PARMNUM=104; +const SV_TYPE_PARMNUM=105; +const SV_COMMENT_PARMNUM=5; +const SV_USERS_PARMNUM=107; +const SV_DISC_PARMNUM=10; +const SV_HIDDEN_PARMNUM=16; +const SV_ANNOUNCE_PARMNUM=17; +const SV_ANNDELTA_PARMNUM=18; +const SV_USERPATH_PARMNUM=112; +const SV_ULIST_MTIME_PARMNUM=401; +const SV_GLIST_MTIME_PARMNUM=402; +const SV_ALIST_MTIME_PARMNUM=403; +const SV_ALERTS_PARMNUM=11; +const SV_SECURITY_PARMNUM=405; +const SV_NUMADMIN_PARMNUM=406; +const SV_LANMASK_PARMNUM=407; +const SV_GUESTACC_PARMNUM=408; +const SV_CHDEVQ_PARMNUM=410; +const SV_CHDEVJOBS_PARMNUM=411; +const SV_CONNECTIONS_PARMNUM=412; +const SV_SHARES_PARMNUM=413; +const SV_OPENFILES_PARMNUM=414; +const SV_SESSREQS_PARMNUM=417; +const SV_ACTIVELOCKS_PARMNUM=419; +const SV_NUMREQBUF_PARMNUM=420; +const SV_NUMBIGBUF_PARMNUM=422; +const SV_NUMFILETASKS_PARMNUM=423; +const SV_ALERTSCHED_PARMNUM=37; +const SV_ERRORALERT_PARMNUM=38; +const SV_LOGONALERT_PARMNUM=39; +const SV_ACCESSALERT_PARMNUM=40; +const SV_DISKALERT_PARMNUM=41; +const SV_NETIOALERT_PARMNUM=42; +const SV_MAXAUDITSZ_PARMNUM=43; +const SV_SRVHEURISTICS_PARMNUM=431; +const SV_SESSOPENS_PARMNUM=501; +const SV_SESSVCS_PARMNUM=502; +const SV_OPENSEARCH_PARMNUM=503; +const SV_SIZREQBUF_PARMNUM=504; +const SV_INITWORKITEMS_PARMNUM=505; +const SV_MAXWORKITEMS_PARMNUM=506; +const SV_RAWWORKITEMS_PARMNUM=507; +const SV_IRPSTACKSIZE_PARMNUM=508; +const SV_MAXRAWBUFLEN_PARMNUM=509; +const SV_SESSUSERS_PARMNUM=510; +const SV_SESSCONNS_PARMNUM=511; +const SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM=512; +const SV_MAXPAGEDMEMORYUSAGE_PARMNUM=513; +const SV_ENABLESOFTCOMPAT_PARMNUM=514; +const SV_ENABLEFORCEDLOGOFF_PARMNUM=515; +const SV_TIMESOURCE_PARMNUM=516; +const SV_ACCEPTDOWNLEVELAPIS_PARMNUM=517; +const SV_LMANNOUNCE_PARMNUM=518; +const SV_DOMAIN_PARMNUM=519; +const SV_MAXCOPYREADLEN_PARMNUM=520; +const SV_MAXCOPYWRITELEN_PARMNUM=521; +const SV_MINKEEPSEARCH_PARMNUM=522; +const SV_MAXKEEPSEARCH_PARMNUM=523; +const SV_MINKEEPCOMPLSEARCH_PARMNUM=524; +const SV_MAXKEEPCOMPLSEARCH_PARMNUM=525; +const SV_THREADCOUNTADD_PARMNUM=526; +const SV_NUMBLOCKTHREADS_PARMNUM=527; +const SV_SCAVTIMEOUT_PARMNUM=528; +const SV_MINRCVQUEUE_PARMNUM=529; +const SV_MINFREEWORKITEMS_PARMNUM=530; +const SV_XACTMEMSIZE_PARMNUM=531; +const SV_THREADPRIORITY_PARMNUM=532; +const SV_MAXMPXCT_PARMNUM=533; +const SV_OPLOCKBREAKWAIT_PARMNUM=534; +const SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM=535; +const SV_ENABLEOPLOCKS_PARMNUM=536; +const SV_ENABLEOPLOCKFORCECLOSE_PARMNUM=537; +const SV_ENABLEFCBOPENS_PARMNUM=538; +const SV_ENABLERAW_PARMNUM=539; +const SV_ENABLESHAREDNETDRIVES_PARMNUM=540; +const SV_MINFREECONNECTIONS_PARMNUM=541; +const SV_MAXFREECONNECTIONS_PARMNUM=542; +const SV_INITSESSTABLE_PARMNUM=543; +const SV_INITCONNTABLE_PARMNUM=544; +const SV_INITFILETABLE_PARMNUM=545; +const SV_INITSEARCHTABLE_PARMNUM=546; +const SV_ALERTSCHEDULE_PARMNUM=547; +const SV_ERRORTHRESHOLD_PARMNUM=548; +const SV_NETWORKERRORTHRESHOLD_PARMNUM=549; +const SV_DISKSPACETHRESHOLD_PARMNUM=550; +const SV_MAXLINKDELAY_PARMNUM=552; +const SV_MINLINKTHROUGHPUT_PARMNUM=553; +const SV_LINKINFOVALIDTIME_PARMNUM=554; +const SV_SCAVQOSINFOUPDATETIME_PARMNUM=555; +const SV_MAXWORKITEMIDLETIME_PARMNUM=556; +const SV_MAXRAWWORKITEMS_PARMNUM=557; +const SV_PRODUCTTYPE_PARMNUM=560; +const SV_SERVERSIZE_PARMNUM=561; +const SV_CONNECTIONLESSAUTODISC_PARMNUM=562; +const SV_SHARINGVIOLATIONRETRIES_PARMNUM=563; +const SV_SHARINGVIOLATIONDELAY_PARMNUM=564; +const SV_MAXGLOBALOPENSEARCH_PARMNUM=565; +const SV_REMOVEDUPLICATESEARCHES_PARMNUM=566; +const SV_LOCKVIOLATIONRETRIES_PARMNUM=567; +const SV_LOCKVIOLATIONOFFSET_PARMNUM=568; +const SV_LOCKVIOLATIONDELAY_PARMNUM=569; +const SV_MDLREADSWITCHOVER_PARMNUM=570; +const SV_CACHEDOPENLIMIT_PARMNUM=571; +const SV_CRITICALTHREADS_PARMNUM=572; +const SV_RESTRICTNULLSESSACCESS_PARMNUM=573; +const SV_ENABLEWFW311DIRECTIPX_PARMNUM=574; +const SV_OTHERQUEUEAFFINITY_PARMNUM=575; +const SV_QUEUESAMPLESECS_PARMNUM=576; +const SV_BALANCECOUNT_PARMNUM=577; +const SV_PREFERREDAFFINITY_PARMNUM=578; +const SV_MAXFREERFCBS_PARMNUM=579; +const SV_MAXFREEMFCBS_PARMNUM=580; +const SV_MAXFREELFCBS_PARMNUM=581; +const SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM=582; +const SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM=583; +const SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM=584; +const SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM=585; +const SV_MAXTHREADSPERQUEUE_PARMNUM=586; +const SV_COMMENT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM); +const SV_USERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM); +const SV_DISC_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM); +const SV_HIDDEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM); +const SV_ANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM); +const SV_ANNDELTA_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM); +const SV_SESSOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM); +const SV_SESSVCS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM); +const SV_OPENSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM); +const SV_MAXWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM); +const SV_MAXRAWBUFLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM); +const SV_SESSUSERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM); +const SV_SESSCONNS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM); +const SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM); +const SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM); +const SV_ENABLESOFTCOMPAT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM); +const SV_ENABLEFORCEDLOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM); +const SV_TIMESOURCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM); +const SV_LMANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM); +const SV_MAXCOPYREADLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM); +const SV_MAXCOPYWRITELEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM); +const SV_MINKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM); +const SV_MAXKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM); +const SV_MINKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM); +const SV_MAXKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM); +const SV_SCAVTIMEOUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM); +const SV_MINRCVQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM); +const SV_MINFREEWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM); +const SV_MAXMPXCT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM); +const SV_OPLOCKBREAKWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM); +const SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM); +const SV_ENABLEOPLOCKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM); +const SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM); +const SV_ENABLEFCBOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM); +const SV_ENABLERAW_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM); +const SV_ENABLESHAREDNETDRIVES_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM); +const SV_MINFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM); +const SV_MAXFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM); +const SV_INITSESSTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM); +const SV_INITCONNTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM); +const SV_INITFILETABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM); +const SV_INITSEARCHTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM); +const SV_ALERTSCHEDULE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM); +const SV_ERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM); +const SV_NETWORKERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM); +const SV_DISKSPACETHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM); +const SV_MAXLINKDELAY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM); +const SV_MINLINKTHROUGHPUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM); +const SV_LINKINFOVALIDTIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM); +const SV_SCAVQOSINFOUPDATETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM); +const SV_MAXWORKITEMIDLETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM); +const SV_MAXRAWWORKITEMS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM); +const SV_PRODUCTTYPE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM); +const SV_SERVERSIZE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM); +const SV_CONNECTIONLESSAUTODISC_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM); +const SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM); +const SV_SHARINGVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM); +const SV_MAXGLOBALOPENSEARCH_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM); +const SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM); +const SV_LOCKVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM); +const SV_LOCKVIOLATIONOFFSET_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM); +const SV_LOCKVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM); +const SV_MDLREADSWITCHOVER_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM); +const SV_CACHEDOPENLIMIT_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM); +const SV_CRITICALTHREADS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM); +const SV_RESTRICTNULLSESSACCESS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM); +const SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM); +const SV_OTHERQUEUEAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM); +const SV_QUEUESAMPLESECS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM); +const SV_BALANCECOUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM); +const SV_PREFERREDAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM); +const SV_MAXFREERFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM); +const SV_MAXFREEMFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM); +const SV_MAXFREELFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM); +const SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM); +const SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM); +const SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM); +const SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM); +const SV_MAXTHREADSPERQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM); diff --git a/src/core/sys/windows/lmshare.d b/src/core/sys/windows/lmshare.d new file mode 100644 index 0000000000..d70c65cfdd --- /dev/null +++ b/src/core/sys/windows/lmshare.d @@ -0,0 +1,197 @@ +/***********************************************************************\ +* lmshare.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmshare; +pragma(lib, "netapi"); + +import win32.lmcons; +private import win32.w32api, win32.windef; + + +const SHARE_NETNAME_PARMNUM = 1; +const SHARE_TYPE_PARMNUM = 3; +const SHARE_REMARK_PARMNUM = 4; +const SHARE_PERMISSIONS_PARMNUM = 5; +const SHARE_MAX_USES_PARMNUM = 6; +const SHARE_CURRENT_USES_PARMNUM = 7; +const SHARE_PATH_PARMNUM = 8; +const SHARE_PASSWD_PARMNUM = 9; +const SHARE_FILE_SD_PARMNUM = 501; +const SHARE_REMARK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM; +const SHARE_MAX_USES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM; +const SHARE_FILE_SD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM; + +const SHI1_NUM_ELEMENTS = 4; +const SHI2_NUM_ELEMENTS = 10; + +const STYPE_DISKTREE = 0; +const STYPE_PRINTQ = 1; +const STYPE_DEVICE = 2; +const STYPE_IPC = 3; +const STYPE_DFS = 100; +const STYPE_SPECIAL = 0x80000000; + +const DWORD SHI_USES_UNLIMITED = -1; + +const SESS_GUEST = 1; +const SESS_NOENCRYPTION = 2; +const SESI1_NUM_ELEMENTS = 8; +const SESI2_NUM_ELEMENTS = 9; + +const PERM_FILE_READ = 1; +const PERM_FILE_WRITE = 2; +const PERM_FILE_CREATE = 4; + +struct FILE_INFO_2 { + DWORD fi2_id; +} +alias FILE_INFO_2* PFILE_INFO_2, LPFILE_INFO_2; + +struct FILE_INFO_3 { + DWORD fi3_id; + DWORD fi3_permissions; + DWORD fi3_num_locks; + LPTSTR fi3_pathname; + LPTSTR fi3_username; +} +alias FILE_INFO_3* PFILE_INFO_3, LPFILE_INFO_3; + +struct SHARE_INFO_0 { + LPTSTR shi0_netname; +} +alias SHARE_INFO_0* PSHARE_INFO_0, LPSHARE_INFO_0; + +struct SHARE_INFO_1 { + LPTSTR shi1_netname; + DWORD shi1_type; + LPTSTR shi1_remark; +} +alias SHARE_INFO_1* PSHARE_INFO_1, LPSHARE_INFO_1; + +struct SHARE_INFO_2 { + LPTSTR shi2_netname; + DWORD shi2_type; + LPTSTR shi2_remark; + DWORD shi2_permissions; + DWORD shi2_max_uses; + DWORD shi2_current_uses; + LPTSTR shi2_path; + LPTSTR shi2_passwd; +} +alias SHARE_INFO_2* PSHARE_INFO_2, LPSHARE_INFO_2; + +struct SHARE_INFO_502 { + LPTSTR shi502_netname; + DWORD shi502_type; + LPTSTR shi502_remark; + DWORD shi502_permissions; + DWORD shi502_max_uses; + DWORD shi502_current_uses; + LPTSTR shi502_path; + LPTSTR shi502_passwd; + DWORD shi502_reserved; + PSECURITY_DESCRIPTOR shi502_security_descriptor; +} +alias SHARE_INFO_502* PSHARE_INFO_502, LPSHARE_INFO_502; + +struct SHARE_INFO_1004 { + LPTSTR shi1004_remark; +} +alias SHARE_INFO_1004* PSHARE_INFO_1004, LPSHARE_INFO_1004; + +struct SHARE_INFO_1006 { + DWORD shi1006_max_uses; +} +alias SHARE_INFO_1006* PSHARE_INFO_1006, LPSHARE_INFO_1006; + +struct SHARE_INFO_1501 { + DWORD shi1501_reserved; + PSECURITY_DESCRIPTOR shi1501_security_descriptor; +} +alias SHARE_INFO_1501* PSHARE_INFO_1501, LPSHARE_INFO_1501; + +struct SESSION_INFO_0 { + LPWSTR sesi0_cname; +} +alias SESSION_INFO_0* PSESSION_INFO_0, LPSESSION_INFO_0; + +struct SESSION_INFO_1 { + LPTSTR sesi1_cname; + LPTSTR sesi1_username; + DWORD sesi1_num_opens; + DWORD sesi1_time; + DWORD sesi1_idle_time; + DWORD sesi1_user_flags; +} +alias SESSION_INFO_1* PSESSION_INFO_1, LPSESSION_INFO_1; + +struct SESSION_INFO_2 { + LPTSTR sesi2_cname; + LPTSTR sesi2_username; + DWORD sesi2_num_opens; + DWORD sesi2_time; + DWORD sesi2_idle_time; + DWORD sesi2_user_flags; + LPWSTR sesi2_cltype_name; +} +alias SESSION_INFO_2* PSESSION_INFO_2, LPSESSION_INFO_2; + +struct SESSION_INFO_10 { + LPWSTR sesi10_cname; + LPWSTR sesi10_username; + DWORD sesi10_time; + DWORD sesi10_idle_time; +} +alias SESSION_INFO_10* PSESSION_INFO_10, LPSESSION_INFO_10; + +struct SESSION_INFO_502 { + LPWSTR sesi502_cname; + LPWSTR sesi502_username; + DWORD sesi502_num_opens; + DWORD sesi502_time; + DWORD sesi502_idle_time; + DWORD sesi502_user_flags; + LPWSTR sesi502_cltype_name; + LPWSTR sesi502_transport; +} +alias SESSION_INFO_502* PSESSION_INFO_502, LPSESSION_INFO_502; + +struct CONNECTION_INFO_0 { + DWORD coni0_id; +} +alias CONNECTION_INFO_0* PCONNECTION_INFO_0, LPCONNECTION_INFO_0; + +struct CONNECTION_INFO_1 { + DWORD coni1_id; + DWORD coni1_type; + DWORD coni1_num_opens; + DWORD coni1_num_users; + DWORD coni1_time; + LPWSTR coni1_username; + LPWSTR coni1_netname; +} +alias CONNECTION_INFO_1* PCONNECTION_INFO_1, LPCONNECTION_INFO_1; + +extern (Windows) { +NET_API_STATUS NetShareAdd(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetShareEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetShareEnumSticky(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD resume_handle); +NET_API_STATUS NetShareGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetShareSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetShareDel(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS NetShareDelSticky(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS NetShareCheck(LPWSTR,LPWSTR,PDWORD); +NET_API_STATUS NetSessionEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetSessionDel(LPWSTR,LPWSTR,LPWSTR); +NET_API_STATUS NetSessionGetInfo(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetConnectionEnum(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetFileClose(LPWSTR,DWORD); +NET_API_STATUS NetFileEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetFileGetInfo(LPWSTR,DWORD,DWORD,PBYTE*); +} \ No newline at end of file diff --git a/src/core/sys/windows/lmsname.d b/src/core/sys/windows/lmsname.d new file mode 100644 index 0000000000..9081ff2c9d --- /dev/null +++ b/src/core/sys/windows/lmsname.d @@ -0,0 +1,65 @@ +/***********************************************************************\ +* lmsname.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmsname; + +private import win32.windef; + +const TCHAR[] + SERVICE_WORKSTATION = "LanmanWorkstation", + SERVICE_LM20_WORKSTATION = "WORKSTATION", + WORKSTATION_DISPLAY_NAME = "Workstation", + SERVICE_SERVER = "LanmanServer", + SERVICE_LM20_SERVER = "SERVER", + SERVER_DISPLAY_NAME = "Server", + SERVICE_BROWSER = "BROWSER", + SERVICE_LM20_BROWSER = SERVICE_BROWSER, + SERVICE_MESSENGER = "MESSENGER", + SERVICE_LM20_MESSENGER = SERVICE_MESSENGER, + SERVICE_NETRUN = "NETRUN", + SERVICE_LM20_NETRUN = SERVICE_NETRUN, + SERVICE_SPOOLER = "SPOOLER", + SERVICE_LM20_SPOOLER = SERVICE_SPOOLER, + SERVICE_ALERTER = "ALERTER", + SERVICE_LM20_ALERTER = SERVICE_ALERTER, + SERVICE_NETLOGON = "NETLOGON", + SERVICE_LM20_NETLOGON = SERVICE_NETLOGON, + SERVICE_NETPOPUP = "NETPOPUP", + SERVICE_LM20_NETPOPUP = SERVICE_NETPOPUP, + SERVICE_SQLSERVER = "SQLSERVER", + SERVICE_LM20_SQLSERVER = SERVICE_SQLSERVER, + SERVICE_REPL = "REPLICATOR", + SERVICE_LM20_REPL = SERVICE_REPL, + SERVICE_RIPL = "REMOTEBOOT", + SERVICE_LM20_RIPL = SERVICE_RIPL, + SERVICE_TIMESOURCE = "TIMESOURCE", + SERVICE_LM20_TIMESOURCE = SERVICE_TIMESOURCE, + SERVICE_AFP = "AFP", + SERVICE_LM20_AFP = SERVICE_AFP, + SERVICE_UPS = "UPS", + SERVICE_LM20_UPS = SERVICE_UPS, + SERVICE_XACTSRV = "XACTSRV", + SERVICE_LM20_XACTSRV = SERVICE_XACTSRV, + SERVICE_TCPIP = "TCPIP", + SERVICE_LM20_TCPIP = SERVICE_TCPIP, + SERVICE_NBT = "NBT", + SERVICE_LM20_NBT = SERVICE_NBT, + SERVICE_LMHOSTS = "LMHOSTS", + SERVICE_LM20_LMHOSTS = SERVICE_LMHOSTS, + SERVICE_TELNET = "Telnet", + SERVICE_LM20_TELNET = SERVICE_TELNET, + SERVICE_SCHEDULE = "Schedule", + SERVICE_LM20_SCHEDULE = SERVICE_SCHEDULE, + SERVICE_NTLMSSP = "NtLmSsp", + SERVICE_DHCP = "DHCP", + SERVICE_LM20_DHCP = SERVICE_DHCP, + SERVICE_NWSAP = "NwSapAgent", + SERVICE_LM20_NWSAP = SERVICE_NWSAP, + NWSAP_DISPLAY_NAME = "NW Sap Agent", + SERVICE_NWCS = "NWCWorkstation"; diff --git a/src/core/sys/windows/lmstats.d b/src/core/sys/windows/lmstats.d new file mode 100644 index 0000000000..a2b0d1b31c --- /dev/null +++ b/src/core/sys/windows/lmstats.d @@ -0,0 +1,121 @@ +/***********************************************************************\ +* lmstats.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmstats; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef; + +const ULONG + STATSOPT_CLR = 1, + STATS_NO_VALUE = -1, + STATS_OVERFLOW = -2; + +struct STAT_SERVER_0{ + DWORD sts0_start; + DWORD sts0_fopens; + DWORD sts0_devopens; + DWORD sts0_jobsqueued; + DWORD sts0_sopens; + DWORD sts0_stimedout; + DWORD sts0_serrorout; + DWORD sts0_pwerrors; + DWORD sts0_permerrors; + DWORD sts0_syserrors; + DWORD sts0_bytessent_low; + DWORD sts0_bytessent_high; + DWORD sts0_bytesrcvd_low; + DWORD sts0_bytesrcvd_high; + DWORD sts0_avresponse; + DWORD sts0_reqbufneed; + DWORD sts0_bigbufneed; +} +alias STAT_SERVER_0* PSTAT_SERVER_0, LPSTAT_SERVER_0; + +// #ifdef LM20_WORKSTATION_STATISTICS +// typedef struct _STAT_WORKSTATION_0 { +// DWORD stw0_start; +// DWORD stw0_numNCB_r; +// DWORD stw0_numNCB_s; +// DWORD stw0_numNCB_a; +// DWORD stw0_fiNCB_r; +// DWORD stw0_fiNCB_s; +// DWORD stw0_fiNCB_a; +// DWORD stw0_fcNCB_r; +// DWORD stw0_fcNCB_s; +// DWORD stw0_fcNCB_a; +// DWORD stw0_sesstart; +// DWORD stw0_sessfailcon; +// DWORD stw0_sessbroke; +// DWORD stw0_uses; +// DWORD stw0_usefail; +// DWORD stw0_autorec; +// DWORD stw0_bytessent_r_lo; +// DWORD stw0_bytessent_r_hi; +// DWORD stw0_bytesrcvd_r_lo; +// DWORD stw0_bytesrcvd_r_hi; +// DWORD stw0_bytessent_s_lo; +// DWORD stw0_bytessent_s_hi; +// DWORD stw0_bytesrcvd_s_lo; +// DWORD stw0_bytesrcvd_s_hi; +// DWORD stw0_bytessent_a_lo; +// DWORD stw0_bytessent_a_hi; +// DWORD stw0_bytesrcvd_a_lo; +// DWORD stw0_bytesrcvd_a_hi; +// DWORD stw0_reqbufneed; +// DWORD stw0_bigbufneed; +// } STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0; +// #else + +struct STAT_WORKSTATION_0{ + LARGE_INTEGER StatisticsStartTime; + LARGE_INTEGER BytesReceived; + LARGE_INTEGER SmbsReceived; + LARGE_INTEGER PagingReadBytesRequested; + LARGE_INTEGER NonPagingReadBytesRequested; + LARGE_INTEGER CacheReadBytesRequested; + LARGE_INTEGER NetworkReadBytesRequested; + LARGE_INTEGER BytesTransmitted; + LARGE_INTEGER SmbsTransmitted; + LARGE_INTEGER PagingWriteBytesRequested; + LARGE_INTEGER NonPagingWriteBytesRequested; + LARGE_INTEGER CacheWriteBytesRequested; + LARGE_INTEGER NetworkWriteBytesRequested; + DWORD InitiallyFailedOperations; + DWORD FailedCompletionOperations; + DWORD ReadOperations; + DWORD RandomReadOperations; + DWORD ReadSmbs; + DWORD LargeReadSmbs; + DWORD SmallReadSmbs; + DWORD WriteOperations; + DWORD RandomWriteOperations; + DWORD WriteSmbs; + DWORD LargeWriteSmbs; + DWORD SmallWriteSmbs; + DWORD RawReadsDenied; + DWORD RawWritesDenied; + DWORD NetworkErrors; + DWORD Sessions; + DWORD FailedSessions; + DWORD Reconnects; + DWORD CoreConnects; + DWORD Lanman20Connects; + DWORD Lanman21Connects; + DWORD LanmanNtConnects; + DWORD ServerDisconnects; + DWORD HungSessions; + DWORD UseCount; + DWORD FailedUseCount; + DWORD CurrentCommands; +} +alias STAT_WORKSTATION_0* PSTAT_WORKSTATION_0, LPSTAT_WORKSTATION_0; + +extern (Windows): +NET_API_STATUS NetStatisticsGet(LPWSTR,LPWSTR,DWORD,DWORD,PBYTE*); diff --git a/src/core/sys/windows/lmsvc.d b/src/core/sys/windows/lmsvc.d new file mode 100644 index 0000000000..f282924e84 --- /dev/null +++ b/src/core/sys/windows/lmsvc.d @@ -0,0 +1,156 @@ +/***********************************************************************\ +* lmsvc.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmsvc; + +// FIXME: Is this file deprecated? All of the functions are only for Win16. +/** + Changes relative to MinGW: + lmsname is not imported publicly (instead, win32.lm imports it directly). +*/ +// TODO: 5 macros + +private import win32.lmcons, win32.lmsname, win32.windef; + +const TCHAR[] SERVICE_DOS_ENCRYPTION = "ENCRYPT"; + +const SERVICE_UNINSTALLED=0; +const SERVICE_INSTALL_PENDING=1; +const SERVICE_UNINSTALL_PENDING=2; +const SERVICE_INSTALLED=3; +const SERVICE_INSTALL_STATE=3; +const SERVICE_PAUSE_STATE=18; +const LM20_SERVICE_ACTIVE=0; +const LM20_SERVICE_CONTINUE_PENDING=4; +const LM20_SERVICE_PAUSE_PENDING=8; +const LM20_SERVICE_PAUSED=18; +const SERVICE_NOT_UNINSTALLABLE=0; +const SERVICE_UNINSTALLABLE=16; +const SERVICE_NOT_PAUSABLE=0; +const SERVICE_PAUSABLE=32; +const SERVICE_REDIR_PAUSED=0x700; +const SERVICE_REDIR_DISK_PAUSED=256; +const SERVICE_REDIR_PRINT_PAUSED=512; +const SERVICE_REDIR_COMM_PAUSED=1024; +const SERVICE_CTRL_INTERROGATE=0; +const SERVICE_CTRL_PAUSE=1; +const SERVICE_CTRL_CONTINUE=2; +const SERVICE_CTRL_UNINSTALL=3; +const SERVICE_CTRL_REDIR_DISK=1; +const SERVICE_CTRL_REDIR_PRINT=2; +const SERVICE_CTRL_REDIR_COMM=4; +const SERVICE_IP_NO_HINT=0; +const SERVICE_CCP_NO_HINT=0; +const SERVICE_IP_QUERY_HINT=0x10000; +const SERVICE_CCP_QUERY_HINT=0x10000; +const SERVICE_IP_CHKPT_NUM=255; +const SERVICE_CCP_CHKPT_NUM=255; +const SERVICE_IP_WAIT_TIME=0xFF00; +const SERVICE_CCP_WAIT_TIME=0xFF00; +const SERVICE_IP_WAITTIME_SHIFT=8; +const SERVICE_NTIP_WAITTIME_SHIFT=12; +const UPPER_HINT_MASK=0xFF00; +const LOWER_HINT_MASK=255; +const UPPER_GET_HINT_MASK=0xFF00000; +const LOWER_GET_HINT_MASK=0xFF00; +const SERVICE_NT_MAXTIME=0xFFFF; +const SERVICE_RESRV_MASK=0x1FFFF; +const SERVICE_MAXTIME=255; +const SERVICE_BASE=3050; +const SERVICE_UIC_NORMAL=0; + +const SERVICE_UIC_BADPARMVAL = SERVICE_BASE+1; +const SERVICE_UIC_MISSPARM = SERVICE_BASE+2; +const SERVICE_UIC_UNKPARM = SERVICE_BASE+3; +const SERVICE_UIC_RESOURCE = SERVICE_BASE+4; +const SERVICE_UIC_CONFIG = SERVICE_BASE+5; +const SERVICE_UIC_SYSTEM = SERVICE_BASE+6; +const SERVICE_UIC_INTERNAL = SERVICE_BASE+7; +const SERVICE_UIC_AMBIGPARM = SERVICE_BASE+8; +const SERVICE_UIC_DUPPARM = SERVICE_BASE+9; +const SERVICE_UIC_KILL = SERVICE_BASE+10; +const SERVICE_UIC_EXEC = SERVICE_BASE+11; +const SERVICE_UIC_SUBSERV = SERVICE_BASE+12; +const SERVICE_UIC_CONFLPARM = SERVICE_BASE+13; +const SERVICE_UIC_FILE = SERVICE_BASE+14; +const SERVICE_UIC_M_NULL=0; +const SERVICE_UIC_M_MEMORY = SERVICE_BASE+20; +const SERVICE_UIC_M_DISK = SERVICE_BASE+21; +const SERVICE_UIC_M_THREADS = SERVICE_BASE+22; +const SERVICE_UIC_M_PROCESSES = SERVICE_BASE+23; +const SERVICE_UIC_M_SECURITY = SERVICE_BASE+24; +const SERVICE_UIC_M_LANROOT = SERVICE_BASE+25; +const SERVICE_UIC_M_REDIR = SERVICE_BASE+26; +const SERVICE_UIC_M_SERVER = SERVICE_BASE+27; +const SERVICE_UIC_M_SEC_FILE_ERR = SERVICE_BASE+28; +const SERVICE_UIC_M_FILES = SERVICE_BASE+29; +const SERVICE_UIC_M_LOGS = SERVICE_BASE+30; +const SERVICE_UIC_M_LANGROUP = SERVICE_BASE+31; +const SERVICE_UIC_M_MSGNAME = SERVICE_BASE+32; +const SERVICE_UIC_M_ANNOUNCE = SERVICE_BASE+33; +const SERVICE_UIC_M_UAS = SERVICE_BASE+34; +const SERVICE_UIC_M_SERVER_SEC_ERR = SERVICE_BASE+35; +const SERVICE_UIC_M_WKSTA = SERVICE_BASE+37; +const SERVICE_UIC_M_ERRLOG = SERVICE_BASE+38; +const SERVICE_UIC_M_FILE_UW = SERVICE_BASE+39; +const SERVICE_UIC_M_ADDPAK = SERVICE_BASE+40; +const SERVICE_UIC_M_LAZY = SERVICE_BASE+41; +const SERVICE_UIC_M_UAS_MACHINE_ACCT = SERVICE_BASE+42; +const SERVICE_UIC_M_UAS_SERVERS_NMEMB = SERVICE_BASE+43; +const SERVICE_UIC_M_UAS_SERVERS_NOGRP = SERVICE_BASE+44; +const SERVICE_UIC_M_UAS_INVALID_ROLE = SERVICE_BASE+45; +const SERVICE_UIC_M_NETLOGON_NO_DC = SERVICE_BASE+46; +const SERVICE_UIC_M_NETLOGON_DC_CFLCT = SERVICE_BASE+47; +const SERVICE_UIC_M_NETLOGON_AUTH = SERVICE_BASE+48; +const SERVICE_UIC_M_UAS_PROLOG = SERVICE_BASE+49; +const SERVICE2_BASE=5600; +const SERVICE_UIC_M_NETLOGON_MPATH = SERVICE2_BASE+0; +const SERVICE_UIC_M_LSA_MACHINE_ACCT = SERVICE2_BASE+1; +const SERVICE_UIC_M_DATABASE_ERROR = SERVICE2_BASE+2; + +struct SERVICE_INFO_0 { + LPWSTR svci0_name; +} +alias SERVICE_INFO_0* PSERVICE_INFO_0, LPSERVICE_INFO_0; + +struct SERVICE_INFO_1 { + LPWSTR svci1_name; + DWORD svci1_status; + DWORD svci1_code; + DWORD svci1_pid; +} +alias SERVICE_INFO_1* PSERVICE_INFO_1, LPSERVICE_INFO_1; + +struct SERVICE_INFO_2 { + LPWSTR svci2_name; + DWORD svci2_status; + DWORD svci2_code; + DWORD svci2_pid; + LPWSTR svci2_text; + DWORD svci2_specific_error; + LPWSTR svci2_display_name; +} +alias SERVICE_INFO_2* PSERVICE_INFO_2, LPSERVICE_INFO_2; + +extern (Windows) { + deprecated { + NET_API_STATUS NetServiceControl(LPCWSTR, LPCWSTR, DWORD, DWORD, + PBYTE*); + NET_API_STATUS NetServiceEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, + PDWORD, PDWORD); + NET_API_STATUS NetServiceGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetServiceInstall(LPCWSTR, LPCWSTR, DWORD, LPCWSTR*, + PBYTE*); + } +} +//MACRO #define SERVICE_IP_CODE(t, n) ((long)SERVICE_IP_QUERY_HINT|(long)(n|(t<>SERVICE_NTIP_WAITTIME_SHIFT)|(((c)&LOWER_GET_HINT_MASK)>>SERVICE_IP_WAITTIME_SHIFT)) diff --git a/src/core/sys/windows/lmuse.d b/src/core/sys/windows/lmuse.d new file mode 100644 index 0000000000..4974e9b4ba --- /dev/null +++ b/src/core/sys/windows/lmuse.d @@ -0,0 +1,80 @@ +/***********************************************************************\ +* lmuse.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmuse; +pragma(lib, "netapi32"); + +import win32.lmuseflg; +private import win32.lmcons, win32.windef; + +enum { + USE_LOCAL_PARMNUM = 1, + USE_REMOTE_PARMNUM, + USE_PASSWORD_PARMNUM, + USE_ASGTYPE_PARMNUM, + USE_USERNAME_PARMNUM, + USE_DOMAINNAME_PARMNUM +} + +enum { + USE_OK, + USE_PAUSED, + USE_SESSLOST, + USE_DISCONN = USE_SESSLOST, + USE_NETERR, + USE_CONN, + USE_RECONN +} + +const DWORD USE_WILDCARD = -1; + +enum { + USE_DISKDEV, + USE_SPOOLDEV, + USE_CHARDEV, + USE_IPC +} + +struct USE_INFO_0 { + LPWSTR ui0_local; + LPWSTR ui0_remote; +} +alias USE_INFO_0* PUSE_INFO_0, LPUSE_INFO_0; + +struct USE_INFO_1 { + LPWSTR ui1_local; + LPWSTR ui1_remote; + LPWSTR ui1_password; + DWORD ui1_status; + DWORD ui1_asg_type; + DWORD ui1_refcount; + DWORD ui1_usecount; +} +alias USE_INFO_1* PUSE_INFO_1, LPUSE_INFO_1; + +struct USE_INFO_2 { + LPWSTR ui2_local; + LPWSTR ui2_remote; + LPWSTR ui2_password; + DWORD ui2_status; + DWORD ui2_asg_type; + DWORD ui2_refcount; + DWORD ui2_usecount; + LPWSTR ui2_username; + LPWSTR ui2_domainname; +} +alias USE_INFO_2* PUSE_INFO_2, LPUSE_INFO_2; + +extern (Windows) { + NET_API_STATUS NetUseAdd(LPWSTR, DWORD, PBYTE, PDWORD); + NET_API_STATUS NetUseDel(LPWSTR, LPWSTR, DWORD); + NET_API_STATUS NetUseEnum(LPWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, + PDWORD); + NET_API_STATUS NetUseGetInfo(LPWSTR, LPWSTR, DWORD, PBYTE*); +} diff --git a/src/core/sys/windows/lmuseflg.d b/src/core/sys/windows/lmuseflg.d new file mode 100644 index 0000000000..746dad98b0 --- /dev/null +++ b/src/core/sys/windows/lmuseflg.d @@ -0,0 +1,16 @@ +/***********************************************************************\ +* lmuseflg.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmuseflg; + +enum : uint { + USE_NOFORCE = 0, + USE_FORCE, + USE_LOTS_OF_FORCE // = 2 +} diff --git a/src/core/sys/windows/lmwksta.d b/src/core/sys/windows/lmwksta.d new file mode 100644 index 0000000000..6fb5a26939 --- /dev/null +++ b/src/core/sys/windows/lmwksta.d @@ -0,0 +1,390 @@ +/***********************************************************************\ +* lmwksta.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmwksta; +pragma(lib, "netapi32"); + +import win32.lmuseflg; +private import win32.lmcons, win32.windef; + +pragma(lib, "Netapi32"); + +enum { + WKSTA_COMPUTERNAME_PARMNUM = 1, + WKSTA_LANGROUP_PARMNUM, // = 2 + WKSTA_VER_MAJOR_PARMNUM = 4, + WKSTA_VER_MINOR_PARMNUM, + WKSTA_LOGGED_ON_USERS_PARMNUM, + WKSTA_LANROOT_PARMNUM, + WKSTA_LOGON_DOMAIN_PARMNUM, + WKSTA_LOGON_SERVER_PARMNUM, + WKSTA_CHARWAIT_PARMNUM, + WKSTA_CHARTIME_PARMNUM, + WKSTA_CHARCOUNT_PARMNUM, + WKSTA_KEEPCONN_PARMNUM, + WKSTA_KEEPSEARCH_PARMNUM, + WKSTA_MAXCMDS_PARMNUM, + WKSTA_NUMWORKBUF_PARMNUM, + WKSTA_MAXWRKCACHE_PARMNUM, + WKSTA_SESSTIMEOUT_PARMNUM, + WKSTA_SIZERROR_PARMNUM, + WKSTA_NUMALERTS_PARMNUM, + WKSTA_NUMSERVICES_PARMNUM, + WKSTA_NUMCHARBUF_PARMNUM, + WKSTA_SIZCHARBUF_PARMNUM, // = 23 + WKSTA_ERRLOGSZ_PARMNUM = 27, + WKSTA_PRINTBUFTIME_PARMNUM, + WKSTA_SIZWORKBUF_PARMNUM, + WKSTA_MAILSLOTS_PARMNUM, + WKSTA_NUMDGRAMBUF_PARMNUM, + WKSTA_WRKHEURISTICS_PARMNUM, + WKSTA_MAXTHREADS_PARMNUM, // = 33 + WKSTA_LOCKQUOTA_PARMNUM = 41, + WKSTA_LOCKINCREMENT_PARMNUM, + WKSTA_LOCKMAXIMUM_PARMNUM, + WKSTA_PIPEINCREMENT_PARMNUM, + WKSTA_PIPEMAXIMUM_PARMNUM, + WKSTA_DORMANTFILELIMIT_PARMNUM, + WKSTA_CACHEFILETIMEOUT_PARMNUM, + WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM, + WKSTA_USEUNLOCKBEHIND_PARMNUM, + WKSTA_USECLOSEBEHIND_PARMNUM, + WKSTA_BUFFERNAMEDPIPES_PARMNUM, + WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM, + WKSTA_UTILIZENTCACHING_PARMNUM, + WKSTA_USERAWREAD_PARMNUM, + WKSTA_USERAWWRITE_PARMNUM, + WKSTA_USEWRITERAWWITHDATA_PARMNUM, + WKSTA_USEENCRYPTION_PARMNUM, + WKSTA_BUFFILESWITHDENYWRITE_PARMNUM, + WKSTA_BUFFERREADONLYFILES_PARMNUM, + WKSTA_FORCECORECREATEMODE_PARMNUM, + WKSTA_USE512BYTESMAXTRANSFER_PARMNUM, + WKSTA_READAHEADTHRUPUT_PARMNUM, // = 62 + WKSTA_PLATFORM_ID_PARMNUM = 100, + WKSTA_OTH_DOMAINS_PARMNUM = 101, + TRANSPORT_QUALITYOFSERVICE_PARMNUM = 201, + TRANSPORT_NAME_PARMNUM = 202 +} + +struct WKSTA_INFO_100{ + DWORD wki100_platform_id; + LPWSTR wki100_computername; + LPWSTR wki100_langroup; + DWORD wki100_ver_major; + DWORD wki100_ver_minor; +} +alias WKSTA_INFO_100* PWKSTA_INFO_100, LPWKSTA_INFO_100; + +struct WKSTA_INFO_101{ + DWORD wki101_platform_id; + LPWSTR wki101_computername; + LPWSTR wki101_langroup; + DWORD wki101_ver_major; + DWORD wki101_ver_minor; + LPWSTR wki101_lanroot; +} +alias WKSTA_INFO_101* PWKSTA_INFO_101, LPWKSTA_INFO_101; + +struct WKSTA_INFO_102{ + DWORD wki102_platform_id; + LPWSTR wki102_computername; + LPWSTR wki102_langroup; + DWORD wki102_ver_major; + DWORD wki102_ver_minor; + LPWSTR wki102_lanroot; + DWORD wki102_logged_on_users; +} +alias WKSTA_INFO_102* PWKSTA_INFO_102, LPWKSTA_INFO_102; + +struct WKSTA_INFO_302{ + DWORD wki302_char_wait; + DWORD wki302_collection_time; + DWORD wki302_maximum_collection_count; + DWORD wki302_keep_conn; + DWORD wki302_keep_search; + DWORD wki302_max_cmds; + DWORD wki302_num_work_buf; + DWORD wki302_siz_work_buf; + DWORD wki302_max_wrk_cache; + DWORD wki302_sess_timeout; + DWORD wki302_siz_error; + DWORD wki302_num_alerts; + DWORD wki302_num_services; + DWORD wki302_errlog_sz; + DWORD wki302_print_buf_time; + DWORD wki302_num_char_buf; + DWORD wki302_siz_char_buf; + LPWSTR wki302_wrk_heuristics; + DWORD wki302_mailslots; + DWORD wki302_num_dgram_buf; +} +alias WKSTA_INFO_302* PWKSTA_INFO_302, LPWKSTA_INFO_302; + +struct WKSTA_INFO_402{ + DWORD wki402_char_wait; + DWORD wki402_collection_time; + DWORD wki402_maximum_collection_count; + DWORD wki402_keep_conn; + DWORD wki402_keep_search; + DWORD wki402_max_cmds; + DWORD wki402_num_work_buf; + DWORD wki402_siz_work_buf; + DWORD wki402_max_wrk_cache; + DWORD wki402_sess_timeout; + DWORD wki402_siz_error; + DWORD wki402_num_alerts; + DWORD wki402_num_services; + DWORD wki402_errlog_sz; + DWORD wki402_print_buf_time; + DWORD wki402_num_char_buf; + DWORD wki402_siz_char_buf; + LPWSTR wki402_wrk_heuristics; + DWORD wki402_mailslots; + DWORD wki402_num_dgram_buf; + DWORD wki402_max_threads; +} +alias WKSTA_INFO_402* PWKSTA_INFO_402, LPWKSTA_INFO_402; + +struct WKSTA_INFO_502{ + DWORD wki502_char_wait; + DWORD wki502_collection_time; + DWORD wki502_maximum_collection_count; + DWORD wki502_keep_conn; + DWORD wki502_max_cmds; + DWORD wki502_sess_timeout; + DWORD wki502_siz_char_buf; + DWORD wki502_max_threads; + DWORD wki502_lock_quota; + DWORD wki502_lock_increment; + DWORD wki502_lock_maximum; + DWORD wki502_pipe_increment; + DWORD wki502_pipe_maximum; + DWORD wki502_cache_file_timeout; + DWORD wki502_dormant_file_limit; + DWORD wki502_read_ahead_throughput; + DWORD wki502_num_mailslot_buffers; + DWORD wki502_num_srv_announce_buffers; + DWORD wki502_max_illegal_datagram_events; + DWORD wki502_illegal_datagram_event_reset_frequency; + BOOL wki502_log_election_packets; + BOOL wki502_use_opportunistic_locking; + BOOL wki502_use_unlock_behind; + BOOL wki502_use_close_behind; + BOOL wki502_buf_named_pipes; + BOOL wki502_use_lock_read_unlock; + BOOL wki502_utilize_nt_caching; + BOOL wki502_use_raw_read; + BOOL wki502_use_raw_write; + BOOL wki502_use_write_raw_data; + BOOL wki502_use_encryption; + BOOL wki502_buf_files_deny_write; + BOOL wki502_buf_read_only_files; + BOOL wki502_force_core_create_mode; + BOOL wki502_use_512_byte_max_transfer; +} +alias WKSTA_INFO_502* PWKSTA_INFO_502, LPWKSTA_INFO_502; + +struct WKSTA_INFO_1010 { + DWORD wki1010_char_wait; +} +alias WKSTA_INFO_1010* PWKSTA_INFO_1010, LPWKSTA_INFO_1010; + +struct WKSTA_INFO_1011 { + DWORD wki1011_collection_time; +} +alias WKSTA_INFO_1011* PWKSTA_INFO_1011, LPWKSTA_INFO_1011; + +struct WKSTA_INFO_1012 { + DWORD wki1012_maximum_collection_count; +} +alias WKSTA_INFO_1012* PWKSTA_INFO_1012, LPWKSTA_INFO_1012; + +struct WKSTA_INFO_1027 { + DWORD wki1027_errlog_sz; +} +alias WKSTA_INFO_1027* PWKSTA_INFO_1027, LPWKSTA_INFO_1027; + +struct WKSTA_INFO_1028 { + DWORD wki1028_print_buf_time; +} +alias WKSTA_INFO_1028* PWKSTA_INFO_1028, LPWKSTA_INFO_1028; + +struct WKSTA_INFO_1032 { + DWORD wki1032_wrk_heuristics; +} +alias WKSTA_INFO_1032* PWKSTA_INFO_1032, LPWKSTA_INFO_1032; + +struct WKSTA_INFO_1013 { + DWORD wki1013_keep_conn; +} +alias WKSTA_INFO_1013* PWKSTA_INFO_1013, LPWKSTA_INFO_1013; + +struct WKSTA_INFO_1018 { + DWORD wki1018_sess_timeout; +} +alias WKSTA_INFO_1018* PWKSTA_INFO_1018, LPWKSTA_INFO_1018; + +struct WKSTA_INFO_1023 { + DWORD wki1023_siz_char_buf; +} +alias WKSTA_INFO_1023* PWKSTA_INFO_1023, LPWKSTA_INFO_1023; + +struct WKSTA_INFO_1033 { + DWORD wki1033_max_threads; +} +alias WKSTA_INFO_1033* PWKSTA_INFO_1033, LPWKSTA_INFO_1033; + +struct WKSTA_INFO_1041 { + DWORD wki1041_lock_quota; +} +alias WKSTA_INFO_1041* PWKSTA_INFO_1041, LPWKSTA_INFO_1041; + +struct WKSTA_INFO_1042 { + DWORD wki1042_lock_increment; +} +alias WKSTA_INFO_1042* PWKSTA_INFO_1042, LPWKSTA_INFO_1042; + +struct WKSTA_INFO_1043 { + DWORD wki1043_lock_maximum; +} +alias WKSTA_INFO_1043* PWKSTA_INFO_1043, LPWKSTA_INFO_1043; + +struct WKSTA_INFO_1044 { + DWORD wki1044_pipe_increment; +} +alias WKSTA_INFO_1044* PWKSTA_INFO_1044, LPWKSTA_INFO_1044; + +struct WKSTA_INFO_1045 { + DWORD wki1045_pipe_maximum; +} +alias WKSTA_INFO_1045* PWKSTA_INFO_1045, LPWKSTA_INFO_1045; + +struct WKSTA_INFO_1046 { + DWORD wki1046_dormant_file_limit; +} +alias WKSTA_INFO_1046* PWKSTA_INFO_1046, LPWKSTA_INFO_1046; + +struct WKSTA_INFO_1047 { + DWORD wki1047_cache_file_timeout; +} +alias WKSTA_INFO_1047* PWKSTA_INFO_1047, LPWKSTA_INFO_1047; + +struct WKSTA_INFO_1048 { + BOOL wki1048_use_opportunistic_locking; +} +alias WKSTA_INFO_1048* PWKSTA_INFO_1048, LPWKSTA_INFO_1048; + +struct WKSTA_INFO_1049 { + BOOL wki1049_use_unlock_behind; +} +alias WKSTA_INFO_1049* PWKSTA_INFO_1049, LPWKSTA_INFO_1049; + +struct WKSTA_INFO_1050 { + BOOL wki1050_use_close_behind; +} +alias WKSTA_INFO_1050* PWKSTA_INFO_1050, LPWKSTA_INFO_1050; + +struct WKSTA_INFO_1051 { + BOOL wki1051_buf_named_pipes; +} +alias WKSTA_INFO_1051* PWKSTA_INFO_1051, LPWKSTA_INFO_1051; + +struct WKSTA_INFO_1052 { + BOOL wki1052_use_lock_read_unlock; +} +alias WKSTA_INFO_1052* PWKSTA_INFO_1052, LPWKSTA_INFO_1052; + +struct WKSTA_INFO_1053 { + BOOL wki1053_utilize_nt_caching; +} +alias WKSTA_INFO_1053* PWKSTA_INFO_1053, LPWKSTA_INFO_1053; + +struct WKSTA_INFO_1054 { + BOOL wki1054_use_raw_read; +} +alias WKSTA_INFO_1054* PWKSTA_INFO_1054, LPWKSTA_INFO_1054; + +struct WKSTA_INFO_1055 { + BOOL wki1055_use_raw_write; +} +alias WKSTA_INFO_1055* PWKSTA_INFO_1055, LPWKSTA_INFO_1055; + +struct WKSTA_INFO_1056 { + BOOL wki1056_use_write_raw_data; +} +alias WKSTA_INFO_1056* PWKSTA_INFO_1056, LPWKSTA_INFO_1056; + +struct WKSTA_INFO_1057 { + BOOL wki1057_use_encryption; +} +alias WKSTA_INFO_1057* PWKSTA_INFO_1057, LPWKSTA_INFO_1057; + +struct WKSTA_INFO_1058 { + BOOL wki1058_buf_files_deny_write; +} +alias WKSTA_INFO_1058* PWKSTA_INFO_1058, LPWKSTA_INFO_1058; + +struct WKSTA_INFO_1059 { + BOOL wki1059_buf_read_only_files; +} +alias WKSTA_INFO_1059* PWKSTA_INFO_1059, LPWKSTA_INFO_1059; + +struct WKSTA_INFO_1060 { + BOOL wki1060_force_core_create_mode; +} +alias WKSTA_INFO_1060* PWKSTA_INFO_1060, LPWKSTA_INFO_1060; + +struct WKSTA_INFO_1061 { + BOOL wki1061_use_512_byte_max_transfer; +} +alias WKSTA_INFO_1061* PWKSTA_INFO_1061, LPWKSTA_INFO_1061; + +struct WKSTA_INFO_1062 { + DWORD wki1062_read_ahead_throughput; +} +alias WKSTA_INFO_1062* PWKSTA_INFO_1062, LPWKSTA_INFO_1062; + +struct WKSTA_USER_INFO_0 { + LPWSTR wkui0_username; +} +alias WKSTA_USER_INFO_0* PWKSTA_USER_INFO_0, LPWKSTA_USER_INFO_0; + +struct WKSTA_USER_INFO_1{ + LPWSTR wkui1_username; + LPWSTR wkui1_logon_domain; + LPWSTR wkui1_oth_domains; + LPWSTR wkui1_logon_server; +} +alias WKSTA_USER_INFO_1* PWKSTA_USER_INFO_1, LPWKSTA_USER_INFO_1; + +struct WKSTA_USER_INFO_1101 { + LPWSTR wkui1101_oth_domains; +} +alias WKSTA_USER_INFO_1101* PWKSTA_USER_INFO_1101, LPWKSTA_USER_INFO_1101; + +struct WKSTA_TRANSPORT_INFO_0{ + DWORD wkti0_quality_of_service; + DWORD wkti0_number_of_vcs; + LPWSTR wkti0_transport_name; + LPWSTR wkti0_transport_address; + BOOL wkti0_wan_ish; +} +alias WKSTA_TRANSPORT_INFO_0* PWKSTA_TRANSPORT_INFO_0, LPWKSTA_TRANSPORT_INFO_0; + +extern (Windows) { +NET_API_STATUS NetWkstaGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetWkstaSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetWkstaUserGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetWkstaUserSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetWkstaUserEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetWkstaTransportAdd(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetWkstaTransportDel(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS NetWkstaTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +} diff --git a/src/core/sys/windows/lzexpand.d b/src/core/sys/windows/lzexpand.d new file mode 100644 index 0000000000..0050e8c1d5 --- /dev/null +++ b/src/core/sys/windows/lzexpand.d @@ -0,0 +1,48 @@ +/***********************************************************************\ +* lzexpand.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lzexpand; +pragma(lib, "lz32"); + +private import win32.winbase, win32.windef; + +enum : LONG { + LZERROR_BADINHANDLE = -1, + LZERROR_BADOUTHANDLE = -2, + LZERROR_READ = -3, + LZERROR_WRITE = -4, + LZERROR_GLOBALLOC = -5, + LZERROR_GLOBLOCK = -6, + LZERROR_BADVALUE = -7, + LZERROR_UNKNOWNALG = -8 +} + +extern (Windows): +deprecated { + LONG CopyLZFile(INT, INT); + void LZDone(); + INT LZStart(); +} +INT GetExpandedNameA(LPSTR, LPSTR); +INT GetExpandedNameW(LPWSTR, LPWSTR); +void LZClose(INT); +LONG LZCopy(INT, INT); +INT LZInit(INT); +INT LZOpenFileA(LPSTR, LPOFSTRUCT, WORD); +INT LZOpenFileW(LPWSTR, LPOFSTRUCT, WORD); +INT LZRead(INT, LPSTR, INT); +LONG LZSeek(INT, LONG, INT); + +version (Unicode) { + alias GetExpandedNameW GetExpandedName; + alias LZOpenFileW LZOpenFile; +} else { + alias GetExpandedNameA GetExpandedName; + alias LZOpenFileA LZOpenFile; +} diff --git a/src/core/sys/windows/mapi.d b/src/core/sys/windows/mapi.d new file mode 100644 index 0000000000..0bafe254b0 --- /dev/null +++ b/src/core/sys/windows/mapi.d @@ -0,0 +1,168 @@ +/***********************************************************************\ +* mapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mapi; + +private import win32.windef; + +// FIXME: check types and grouping of constants + +enum { + SUCCESS_SUCCESS, + MAPI_USER_ABORT, + MAPI_E_USER_ABORT = MAPI_USER_ABORT, + MAPI_E_FAILURE, + MAPI_E_LOGIN_FAILURE, + MAPI_E_LOGON_FAILURE = MAPI_E_LOGIN_FAILURE, + MAPI_E_DISK_FULL = 4, + MAPI_E_INSUFFICIENT_MEMORY, + MAPI_E_ACCESS_DENIED, + MAPI_E_BLK_TOO_SMALL = MAPI_E_ACCESS_DENIED, // = 6 + MAPI_E_TOO_MANY_SESSIONS = 8, + MAPI_E_TOO_MANY_FILES, + MAPI_E_TOO_MANY_RECIPIENTS, + MAPI_E_ATTACHMENT_NOT_FOUND, + MAPI_E_ATTACHMENT_OPEN_FAILURE, + MAPI_E_ATTACHMENT_WRITE_FAILURE, + MAPI_E_UNKNOWN_RECIPIENT, + MAPI_E_BAD_RECIPTYPE, + MAPI_E_NO_MESSAGES, + MAPI_E_INVALID_MESSAGE, + MAPI_E_TEXT_TOO_LARGE, + MAPI_E_INVALID_SESSION, + MAPI_E_TYPE_NOT_SUPPORTED, + MAPI_E_AMBIGUOUS_RECIPIENT, + MAPI_E_AMBIGUOUS_RECIP = MAPI_E_AMBIGUOUS_RECIPIENT, + MAPI_E_MESSAGE_IN_USE, + MAPI_E_NETWORK_FAILURE, + MAPI_E_INVALID_EDITFIELDS, + MAPI_E_INVALID_RECIPS, + MAPI_E_NOT_SUPPORTED // = 26 +} + +enum { + MAPI_ORIG, + MAPI_TO, + MAPI_CC, + MAPI_BCC +} + +const MAPI_LOGON_UI = 0x0001; +const MAPI_NEW_SESSION = 0x0002; +const MAPI_FORCE_DOWNLOAD = 0x1000; +const MAPI_LOGOFF_SHARED = 0x0001; +const MAPI_LOGOFF_UI = 0x0002; +const MAPI_DIALOG = 0x0008; +const MAPI_UNREAD_ONLY = 0x0020; +const MAPI_LONG_MSGID = 0x4000; +const MAPI_GUARANTEE_FIFO = 0x0100; +const MAPI_ENVELOPE_ONLY = 0x0040; +const MAPI_PEEK = 0x0080; +const MAPI_BODY_AS_FILE = 0x0200; +const MAPI_SUPPRESS_ATTACH = 0x0800; +const MAPI_AB_NOMODIFY = 0x0400; +const MAPI_OLE = 0x0001; +const MAPI_OLE_STATIC = 0x0002; +const MAPI_UNREAD = 0x0001; +const MAPI_RECEIPT_REQUESTED = 0x0002; +const MAPI_SENT = 0x0004; + +alias uint FLAGS, LHANDLE; +alias uint* LPLHANDLE, LPULONG; + +struct MapiRecipDesc { + ULONG ulReserved; + ULONG ulRecipClass; + LPSTR lpszName; + LPSTR lpszAddress; + ULONG ulEIDSize; + LPVOID lpEntryID; +} +alias MapiRecipDesc* lpMapiRecipDesc; + +struct MapiFileDesc { + ULONG ulReserved; + ULONG flFlags; + ULONG nPosition; + LPSTR lpszPathName; + LPSTR lpszFileName; + LPVOID lpFileType; +} +alias MapiFileDesc* lpMapiFileDesc; + +struct MapiFileTagExt { + ULONG ulReserved; + ULONG cbTag; + LPBYTE lpTag; + ULONG cbEncoding; + LPBYTE lpEncoding; +} +alias MapiFileTagExt* lpMapiFileTagExt; + +struct MapiMessage { + ULONG ulReserved; + LPSTR lpszSubject; + LPSTR lpszNoteText; + LPSTR lpszMessageType; + LPSTR lpszDateReceived; + LPSTR lpszConversationID; + FLAGS flFlags; + lpMapiRecipDesc lpOriginator; + ULONG nRecipCount; + lpMapiRecipDesc lpRecips; + ULONG nFileCount; + lpMapiFileDesc lpFiles; +} +alias MapiMessage* lpMapiMessage; + +extern (Pascal) { + ULONG MAPILogon(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE); + ULONG MAPISendMail(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG); + ULONG MAPISendDocuments(ULONG, LPSTR, LPSTR, LPSTR, ULONG); + ULONG MAPIReadMail(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*); + ULONG MAPIFindNext(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR); + ULONG MAPIResolveName(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, + lpMapiRecipDesc*); + ULONG MAPIAddress(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, + lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*); + ULONG MAPIFreeBuffer(LPVOID); + ULONG MAPIDetails(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG); + ULONG MAPISaveMail(LHANDLE, ULONG, lpMapiMessage lpszMessage, FLAGS, + ULONG, LPSTR); + ULONG MAPIDeleteMail(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG); + ULONG MAPILogoff(LHANDLE, ULONG, FLAGS, ULONG); + // Netscape extensions + ULONG MAPIGetNetscapeVersion(); + ULONG MAPI_NSCP_SynchronizeClient(LHANDLE, ULONG); + + // Handles for use with GetProcAddress + alias ULONG function(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE) + LPMAPILOGON; + alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG) + LPMAPISENDMAIL; + alias ULONG function(ULONG, LPSTR, LPSTR, LPSTR, ULONG) + LPMAPISENDDOCUMENTS; + alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*) + LPMAPIREADMAIL; + alias ULONG function(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR) + LPMAPIFINDNEXT; + alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, + lpMapiRecipDesc*) LPMAPIRESOLVENAME; + alias ULONG function(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, + lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*) LPMAPIADDRESS; + alias ULONG function(LPVOID lpv) LPMAPIFREEBUFFER; + alias ULONG function(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG) + LPMAPIDETAILS; + alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG, LPSTR) + LPMAPISAVEMAIL; + alias ULONG function(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG) + LPMAPIDELETEMAIL; + alias ULONG function(LHANDLE, ULONG, FLAGS, ULONG) LPMAPILOGOFF; +} diff --git a/src/core/sys/windows/mciavi.d b/src/core/sys/windows/mciavi.d new file mode 100644 index 0000000000..6259e35c68 --- /dev/null +++ b/src/core/sys/windows/mciavi.d @@ -0,0 +1,40 @@ +/***********************************************************************\ +* mciavi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mciavi; + +private import win32.mmsystem; + +// FIXME: check types and grouping of constants + +const MCI_MCIAVI_PLAY_WINDOW = 0x01000000; +const MCI_MCIAVI_PLAY_FULLSCREEN = 0x02000000; +const MCI_MCIAVI_PLAY_FULLBY2 = 0x04000000; + +enum { + MCI_AVI_STATUS_FRAMES_SKIPPED = 0x00008001, + MCI_AVI_STATUS_LAST_PLAY_SPEED = 0x00008002, + MCI_AVI_STATUS_AUDIO_BREAKS = 0x00008003, + MCI_AVI_SETVIDEO_DRAW_PROCEDURE = 0x00008000, + MCI_AVI_SETVIDEO_PALETTE_COLOR = 0x00008100, + MCI_AVI_SETVIDEO_PALETTE_HALFTONE = 0x0000FFFF +} + +enum { + MCIERR_AVI_OLDAVIFORMAT = MCIERR_CUSTOM_DRIVER_BASE + 100, + MCIERR_AVI_NOTINTERLEAVED, + MCIERR_AVI_NODISPDIB, + MCIERR_AVI_CANTPLAYFULLSCREEN, + MCIERR_AVI_TOOBIGFORVGA, + MCIERR_AVI_NOCOMPRESSOR, + MCIERR_AVI_DISPLAYERROR, + MCIERR_AVI_AUDIOERROR, + MCIERR_AVI_BADPALETTE // = MCIERR_CUSTOM_DRIVER_BASE + 108 +} diff --git a/src/core/sys/windows/mcx.d b/src/core/sys/windows/mcx.d new file mode 100644 index 0000000000..8b5c603ee0 --- /dev/null +++ b/src/core/sys/windows/mcx.d @@ -0,0 +1,99 @@ +/***********************************************************************\ +* mcx.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mcx; + +private import win32.windef; + +const DWORD + DIALOPTION_BILLING = 64, + DIALOPTION_QUIET = 128, + DIALOPTION_DIALTONE = 256; + +const DWORD + MDMVOLFLAG_LOW = 1, + MDMVOLFLAG_MEDIUM = 2, + MDMVOLFLAG_HIGH = 4; + +enum : DWORD { + MDMVOL_LOW = 0, + MDMVOL_MEDIUM = 1, + MDMVOL_HIGH = 2 +} + +const DWORD + MDMSPKRFLAG_OFF = 1, + MDMSPKRFLAG_DIAL = 2, + MDMSPKRFLAG_ON = 4, + MDMSPKRFLAG_CALLSETUP = 8; + +enum : DWORD { + MDMSPKR_OFF, + MDMSPKR_DIAL, + MDMSPKR_ON, + MDMSPKR_CALLSETUP +} + +const DWORD + MDM_COMPRESSION = 0x0001, + MDM_ERROR_CONTROL = 0x0002, + MDM_FORCED_EC = 0x0004, + MDM_CELLULAR = 0x0008, + MDM_FLOWCONTROL_HARD = 0x0010, + MDM_FLOWCONTROL_SOFT = 0x0020, + MDM_CCITT_OVERRIDE = 0x0040, + MDM_SPEED_ADJUST = 0x0080, + MDM_TONE_DIAL = 0x0100, + MDM_BLIND_DIAL = 0x0200, + MDM_V23_OVERRIDE = 0x0400; + +struct MODEMDEVCAPS { + DWORD dwActualSize; + DWORD dwRequiredSize; + DWORD dwDevSpecificOffset; + DWORD dwDevSpecificSize; + DWORD dwModemProviderVersion; + DWORD dwModemManufacturerOffset; + DWORD dwModemManufacturerSize; + DWORD dwModemModelOffset; + DWORD dwModemModelSize; + DWORD dwModemVersionOffset; + DWORD dwModemVersionSize; + DWORD dwDialOptions; + DWORD dwCallSetupFailTimer; + DWORD dwInactivityTimeout; + DWORD dwSpeakerVolume; + DWORD dwSpeakerMode; + DWORD dwModemOptions; + DWORD dwMaxDTERate; + DWORD dwMaxDCERate; + BYTE _abVariablePortion; + + BYTE* abVariablePortion() { return &_abVariablePortion; } +} +alias MODEMDEVCAPS* PMODEMDEVCAPS, LPMODEMDEVCAPS; + +struct MODEMSETTINGS { + DWORD dwActualSize; + DWORD dwRequiredSize; + DWORD dwDevSpecificOffset; + DWORD dwDevSpecificSize; + DWORD dwCallSetupFailTimer; + DWORD dwInactivityTimeout; + DWORD dwSpeakerVolume; + DWORD dwSpeakerMode; + DWORD dwPreferredModemOptions; + DWORD dwNegotiatedModemOptions; + DWORD dwNegotiatedDCERate; + BYTE _abVariablePortion; + + BYTE* abVariablePortion() { return &_abVariablePortion; } +} +alias MODEMSETTINGS* PMODEMSETTINGS, LPMODEMSETTINGS; diff --git a/src/core/sys/windows/mgmtapi.d b/src/core/sys/windows/mgmtapi.d new file mode 100644 index 0000000000..6867c0684a --- /dev/null +++ b/src/core/sys/windows/mgmtapi.d @@ -0,0 +1,47 @@ +/***********************************************************************\ +* mgmtapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mgmtapi; + +import win32.snmp; +private import win32.windef; + +enum { + SNMP_MGMTAPI_TIMEOUT = 40, + SNMP_MGMTAPI_SELECT_FDERRORS, + SNMP_MGMTAPI_TRAP_ERRORS, + SNMP_MGMTAPI_TRAP_DUPINIT, + SNMP_MGMTAPI_NOTRAPS, + SNMP_MGMTAPI_AGAIN, + SNMP_MGMTAPI_INVALID_CTL, + SNMP_MGMTAPI_INVALID_SESSION, + SNMP_MGMTAPI_INVALID_BUFFER // = 48 +} + +const MGMCTL_SETAGENTPORT = 1; + +alias PVOID LPSNMP_MGR_SESSION; + +extern (Windows) { + BOOL SnmpMgrClose(LPSNMP_MGR_SESSION); + BOOL SnmpMgrCtl(LPSNMP_MGR_SESSION, DWORD, LPVOID, DWORD, LPVOID, DWORD, + LPDWORD); + BOOL SnmpMgrGetTrap(AsnObjectIdentifier*, AsnNetworkAddress*, + AsnInteger*, AsnInteger*, AsnTimeticks*, SnmpVarBindList*); + BOOL SnmpMgrGetTrapEx(AsnObjectIdentifier*, AsnNetworkAddress*, + AsnNetworkAddress*, AsnInteger*, AsnInteger*, AsnOctetString*, + AsnTimeticks*, SnmpVarBindList*); + BOOL SnmpMgrOidToStr(AsnObjectIdentifier*, LPSTR*); + LPSNMP_MGR_SESSION SnmpMgrOpen(LPSTR, LPSTR, INT, INT); + INT SnmpMgrRequest(LPSNMP_MGR_SESSION, BYTE, SnmpVarBindList*, + AsnInteger*, AsnInteger*); + BOOL SnmpMgrStrToOid(LPSTR, AsnObjectIdentifier*); + BOOL SnmpMgrTrapListen(HANDLE*); +} diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d new file mode 100644 index 0000000000..e69ad292b8 --- /dev/null +++ b/src/core/sys/windows/mmsystem.d @@ -0,0 +1,2269 @@ +/***********************************************************************\ +* mmsystem.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mmsystem; +pragma(lib, "winmm"); + +/* The #defines MAKEFOURCC, mmioFOURCC, sndAlias are used to define + * compile-time constants, so they are implemented as templates. + */ + +private import win32.w32api, win32.windef, win32.winver; + +align(1): + +const MAXPNAMELEN = 32; +const MAXERRORLENGTH = 256; +const MAX_JOYSTICKOEMVXDNAME = 260; + +const TIME_MS = 1; +const TIME_SAMPLES = 2; +const TIME_BYTES = 4; +const TIME_SMPTE = 8; +const TIME_MIDI = 16; +const TIME_TICKS = 32; + +template MAKEFOURCC(char c0, char c1, char c2, char c3) +{ + const DWORD MAKEFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); +} + +template mmioFOURCC(char c0, char c1, char c2, char c3) +{ + const DWORD mmioFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); +} + +enum { + MM_JOY1MOVE = 0x3A0, + MM_JOY2MOVE, + MM_JOY1ZMOVE, + MM_JOY2ZMOVE, // = 0x3A3 + MM_JOY1BUTTONDOWN = 0x3B5, + MM_JOY2BUTTONDOWN, + MM_JOY1BUTTONUP, + MM_JOY2BUTTONUP, + MM_MCINOTIFY, // = 0x3B9 + MM_WOM_OPEN = 0x3BB, + MM_WOM_CLOSE, + MM_WOM_DONE, + MM_WIM_OPEN, + MM_WIM_CLOSE, + MM_WIM_DATA, + MM_MIM_OPEN, + MM_MIM_CLOSE, + MM_MIM_DATA, + MM_MIM_LONGDATA, + MM_MIM_ERROR, + MM_MIM_LONGERROR, + MM_MOM_OPEN, + MM_MOM_CLOSE, + MM_MOM_DONE, // = 0x3C9 + MM_DRVM_OPEN = 0x3D0, + MM_DRVM_CLOSE, + MM_DRVM_DATA, + MM_DRVM_ERROR, + MM_STREAM_OPEN, + MM_STREAM_CLOSE, + MM_STREAM_DONE, + MM_STREAM_ERROR, // = 0x3D7 + MM_MOM_POSITIONCB = 0x3CA, + MM_MCISIGNAL, + MM_MIM_MOREDATA, // = 0x3CC + MM_MIXM_LINE_CHANGE = 0x3D0, + MM_MIXM_CONTROL_CHANGE = 0x3D1 +} + +const MMSYSERR_BASE = 0; +const WAVERR_BASE = 32; +const MIDIERR_BASE = 64; +const TIMERR_BASE = 96; +const JOYERR_BASE = 160; +const MCIERR_BASE = 256; +const MIXERR_BASE = 1024; +const MCI_STRING_OFFSET = 512; +const MCI_VD_OFFSET = 1024; +const MCI_CD_OFFSET = 1088; +const MCI_WAVE_OFFSET = 1152; +const MCI_SEQ_OFFSET = 1216; + +enum { + MMSYSERR_NOERROR = 0, + MMSYSERR_ERROR = MMSYSERR_BASE+1, + MMSYSERR_BADDEVICEID, + MMSYSERR_NOTENABLED, + MMSYSERR_ALLOCATED, + MMSYSERR_INVALHANDLE, + MMSYSERR_NODRIVER, + MMSYSERR_NOMEM, + MMSYSERR_NOTSUPPORTED, + MMSYSERR_BADERRNUM, + MMSYSERR_INVALFLAG, + MMSYSERR_INVALPARAM, + MMSYSERR_HANDLEBUSY, + MMSYSERR_INVALIDALIAS, + MMSYSERR_BADDB, + MMSYSERR_KEYNOTFOUND, + MMSYSERR_READERROR, + MMSYSERR_WRITEERROR, + MMSYSERR_DELETEERROR, + MMSYSERR_VALNOTFOUND, + MMSYSERR_NODRIVERCB, // = MMSYSERR_BASE+20 + MMSYSERR_LASTERROR = MMSYSERR_NODRIVERCB +} + +enum { + DRV_LOAD = 1, + DRV_ENABLE, + DRV_OPEN, + DRV_CLOSE, + DRV_DISABLE, + DRV_FREE, + DRV_CONFIGURE, + DRV_QUERYCONFIGURE, + DRV_INSTALL, + DRV_REMOVE, + DRV_EXITSESSION, + DRV_POWER +} + +const DRV_RESERVED = 0x800; +const DRV_USER = 0x4000; + +const DRVCNF_CANCEL = 0; +const DRVCNF_OK = 1; +const DRVCNF_RESTART = 2; +const DRV_CANCEL = DRVCNF_CANCEL; +const DRV_OK = DRVCNF_OK; +const DRV_RESTART = DRVCNF_RESTART; +const DRV_MCI_FIRST = DRV_RESERVED; +const DRV_MCI_LAST = DRV_RESERVED + 0xFFF; + +const CALLBACK_TYPEMASK = 0x70000; +const CALLBACK_NULL = 0; +const CALLBACK_WINDOW = 0x10000; +const CALLBACK_TASK = 0x20000; +const CALLBACK_FUNCTION = 0x30000; +const CALLBACK_THREAD = CALLBACK_TASK; +const CALLBACK_EVENT = 0x50000; + +const SND_SYNC=0; +const SND_ASYNC=1; +const SND_NODEFAULT=2; +const SND_MEMORY=4; +const SND_LOOP=8; +const SND_NOSTOP=16; +const SND_NOWAIT=0x2000; +const SND_ALIAS=0x10000; +const SND_ALIAS_ID=0x110000; +const SND_FILENAME=0x20000; +const SND_RESOURCE=0x40004; +const SND_PURGE=0x40; +const SND_APPLICATION=0x80; +const SND_ALIAS_START=0; + +template sndAlias(char c0, char c1) +{ + const DWORD sndAlias = SND_ALIAS_START + c0 | (c1<<8); +} + +const SND_ALIAS_SYSTEMASTERISK = sndAlias!('S', '*'); +const SND_ALIAS_SYSTEMQUESTION = sndAlias!('S', '?'); +const SND_ALIAS_SYSTEMHAND = sndAlias!('S', 'H'); +const SND_ALIAS_SYSTEMEXIT = sndAlias!('S', 'E'); +const SND_ALIAS_SYSTEMSTART = sndAlias!('S', 'S'); +const SND_ALIAS_SYSTEMWELCOME = sndAlias!('S', 'W'); +const SND_ALIAS_SYSTEMEXCLAMATION = sndAlias!('S', '!'); +const SND_ALIAS_SYSTEMDEFAULT = sndAlias!('S', 'D'); + +enum { + WAVERR_BADFORMAT = (WAVERR_BASE + 0), + WAVERR_STILLPLAYING, + WAVERR_UNPREPARED, + WAVERR_SYNC, // = WAVERR_BASE + 3; + WAVERR_LASTERROR = WAVERR_SYNC +} + +const WOM_OPEN = MM_WOM_OPEN; +const WOM_CLOSE = MM_WOM_CLOSE; +const WOM_DONE = MM_WOM_DONE; +const WIM_OPEN = MM_WIM_OPEN; +const WIM_CLOSE = MM_WIM_CLOSE; +const WIM_DATA = MM_WIM_DATA; + +const UINT WAVE_MAPPER= -1; // FIXME: This doesn't make sense! +const WAVE_FORMAT_QUERY=1; +const WAVE_ALLOWSYNC=2; +const WAVE_MAPPED=4; +const WAVE_FORMAT_DIRECT=8; +const WAVE_FORMAT_DIRECT_QUERY=(WAVE_FORMAT_QUERY|WAVE_FORMAT_DIRECT); +const WHDR_DONE=1; +const WHDR_PREPARED=2; +const WHDR_BEGINLOOP=4; +const WHDR_ENDLOOP=8; +const WHDR_INQUEUE=16; + +const WAVECAPS_PITCH=1; +const WAVECAPS_PLAYBACKRATE=2; +const WAVECAPS_VOLUME=4; +const WAVECAPS_LRVOLUME=8; +const WAVECAPS_SYNC=16; +const WAVECAPS_SAMPLEACCURATE=32; +const WAVECAPS_DIRECTSOUND=64; + +const WAVE_INVALIDFORMAT=0; +const WAVE_FORMAT_1M08=1; +const WAVE_FORMAT_1S08=2; +const WAVE_FORMAT_1M16=4; +const WAVE_FORMAT_1S16=8; +const WAVE_FORMAT_2M08=16; +const WAVE_FORMAT_2S08=32; +const WAVE_FORMAT_2M16=64; +const WAVE_FORMAT_2S16=128; +const WAVE_FORMAT_4M08=256; +const WAVE_FORMAT_4S08=512; +const WAVE_FORMAT_4M16=1024; +const WAVE_FORMAT_4S16=2048; +const WAVE_FORMAT_PCM=1; + +enum { + MIDIERR_UNPREPARED = MIDIERR_BASE, + MIDIERR_STILLPLAYING, + MIDIERR_NOMAP, + MIDIERR_NOTREADY, + MIDIERR_NODEVICE, + MIDIERR_INVALIDSETUP, + MIDIERR_BADOPENMODE, + MIDIERR_DONT_CONTINUE, // = MIDIERR_BASE+7 + MIDIERR_LASTERROR = MIDIERR_DONT_CONTINUE +} + +const MIDIPATCHSIZE=128; + +const MIM_OPEN=MM_MIM_OPEN; +const MIM_CLOSE=MM_MIM_CLOSE; +const MIM_DATA=MM_MIM_DATA; +const MIM_LONGDATA=MM_MIM_LONGDATA; +const MIM_ERROR=MM_MIM_ERROR; +const MIM_LONGERROR=MM_MIM_LONGERROR; +const MOM_OPEN=MM_MOM_OPEN; +const MOM_CLOSE=MM_MOM_CLOSE; +const MOM_DONE=MM_MOM_DONE; +const MIM_MOREDATA=MM_MIM_MOREDATA; +const MOM_POSITIONCB=MM_MOM_POSITIONCB; + +const UINT MIDIMAPPER= -1; // FIXME: uint is nonsense for this! +const UINT MIDI_MAPPER= -1; // FIXME: uint is nonsense for this! +const MIDI_IO_STATUS=32; +const MIDI_CACHE_ALL=1; +const MIDI_CACHE_BESTFIT=2; +const MIDI_CACHE_QUERY=3; +const MIDI_UNCACHE=4; +const MOD_MIDIPORT=1; +const MOD_SYNTH=2; +const MOD_SQSYNTH=3; +const MOD_FMSYNTH=4; +const MOD_MAPPER=5; +const MIDICAPS_VOLUME=1; +const MIDICAPS_LRVOLUME=2; +const MIDICAPS_CACHE=4; +const MIDICAPS_STREAM=8; +const MHDR_DONE=1; +const MHDR_PREPARED=2; +const MHDR_INQUEUE=4; +const MHDR_ISSTRM=8; +const MEVT_F_SHORT=0; +const MEVT_F_LONG=0x80000000; +const MEVT_F_CALLBACK=0x40000000; + +BYTE MEVT_EVENTTYPE(DWORD x) { return cast(BYTE)((x>>24) &0xFF); } +DWORD MEVT_EVENTPARM(DWORD x) { return x & 0xFFFFFF; } + +const MEVT_SHORTMSG=0; +const MEVT_TEMPO=1; +const MEVT_NOP=2; + +const BYTE MEVT_LONGMSG = 0x80; +const BYTE MEVT_COMMENT = 0x82; +const BYTE MEVT_VERSION = 0x84; + +const MIDISTRM_ERROR = -2; + +const MIDIPROP_SET = 0x80000000; +const MIDIPROP_GET = 0x40000000; +const MIDIPROP_TIMEDIV = 1; +const MIDIPROP_TEMPO = 2; + +const UINT AUX_MAPPER = -1; + +const AUXCAPS_CDAUDIO=1; +const AUXCAPS_AUXIN=2; +const AUXCAPS_VOLUME=1; +const AUXCAPS_LRVOLUME=2; +const MIXER_SHORT_NAME_CHARS=16; +const MIXER_LONG_NAME_CHARS=64; +const MIXERR_INVALLINE=MIXERR_BASE; +const MIXERR_INVALCONTROL=(MIXERR_BASE+1); +const MIXERR_INVALVALUE=(MIXERR_BASE+2); +const MIXERR_LASTERROR=(MIXERR_BASE+2); + +const MIXER_OBJECTF_HANDLE=0x80000000; +const MIXER_OBJECTF_MIXER=0; +const MIXER_OBJECTF_HMIXER=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER); +const MIXER_OBJECTF_WAVEOUT=0x10000000; +const MIXER_OBJECTF_HWAVEOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT); +const MIXER_OBJECTF_WAVEIN=0x20000000; +const MIXER_OBJECTF_HWAVEIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN); +const MIXER_OBJECTF_MIDIOUT=0x30000000; +const MIXER_OBJECTF_HMIDIOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT); +const MIXER_OBJECTF_MIDIIN=0x40000000; +const MIXER_OBJECTF_HMIDIIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN); +const MIXER_OBJECTF_AUX=0x50000000; + +const MIXERLINE_LINEF_ACTIVE=1; +const MIXERLINE_LINEF_DISCONNECTED=0x8000; +const MIXERLINE_LINEF_SOURCE=0x80000000; + +const MIXERLINE_COMPONENTTYPE_DST_FIRST=0; +const MIXERLINE_COMPONENTTYPE_DST_UNDEFINED=MIXERLINE_COMPONENTTYPE_DST_FIRST; +const MIXERLINE_COMPONENTTYPE_DST_DIGITAL=(MIXERLINE_COMPONENTTYPE_DST_FIRST+1); +const MIXERLINE_COMPONENTTYPE_DST_LINE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+2); +const MIXERLINE_COMPONENTTYPE_DST_MONITOR=(MIXERLINE_COMPONENTTYPE_DST_FIRST+3); +const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS=(MIXERLINE_COMPONENTTYPE_DST_FIRST+4); +const MIXERLINE_COMPONENTTYPE_DST_HEADPHONES=(MIXERLINE_COMPONENTTYPE_DST_FIRST+5); +const MIXERLINE_COMPONENTTYPE_DST_TELEPHONE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+6); +const MIXERLINE_COMPONENTTYPE_DST_WAVEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+7); +const MIXERLINE_COMPONENTTYPE_DST_VOICEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); +const MIXERLINE_COMPONENTTYPE_DST_LAST=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); +const MIXERLINE_COMPONENTTYPE_SRC_FIRST=0x1000; +const MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED=MIXERLINE_COMPONENTTYPE_SRC_FIRST; +const MIXERLINE_COMPONENTTYPE_SRC_DIGITAL=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+1); +const MIXERLINE_COMPONENTTYPE_SRC_LINE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+2); +const MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+3); +const MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+4); +const MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+5); +const MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+6); +const MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+7); +const MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+8); +const MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+9); +const MIXERLINE_COMPONENTTYPE_SRC_ANALOG=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); +const MIXERLINE_COMPONENTTYPE_SRC_LAST=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); + +enum { + MIXERLINE_TARGETTYPE_UNDEFINED = 0, + MIXERLINE_TARGETTYPE_WAVEOUT, + MIXERLINE_TARGETTYPE_WAVEIN, + MIXERLINE_TARGETTYPE_MIDIOUT, + MIXERLINE_TARGETTYPE_MIDIIN, + MIXERLINE_TARGETTYPE_AUX // =5 +} + +const MIXER_GETLINEINFOF_DESTINATION=0; +const MIXER_GETLINEINFOF_SOURCE=1; +const MIXER_GETLINEINFOF_LINEID=2; +const MIXER_GETLINEINFOF_COMPONENTTYPE=3; +const MIXER_GETLINEINFOF_TARGETTYPE=4; +const MIXER_GETLINEINFOF_QUERYMASK=15; + +const MIXERCONTROL_CONTROLF_UNIFORM=1; +const MIXERCONTROL_CONTROLF_MULTIPLE=2; +const MIXERCONTROL_CONTROLF_DISABLED=0x80000000; +const MIXERCONTROL_CT_CLASS_MASK=0xF0000000; +const MIXERCONTROL_CT_CLASS_CUSTOM=0; +const MIXERCONTROL_CT_CLASS_METER=0x10000000; +const MIXERCONTROL_CT_CLASS_SWITCH=0x20000000; +const MIXERCONTROL_CT_CLASS_NUMBER=0x30000000; +const MIXERCONTROL_CT_CLASS_SLIDER=0x40000000; +const MIXERCONTROL_CT_CLASS_FADER=0x50000000; +const MIXERCONTROL_CT_CLASS_TIME=0x60000000; +const MIXERCONTROL_CT_CLASS_LIST=0x70000000; +const MIXERCONTROL_CT_SUBCLASS_MASK=0xF000000; +const MIXERCONTROL_CT_SC_SWITCH_BOOLEAN=0; +const MIXERCONTROL_CT_SC_SWITCH_BUTTON=0x1000000; +const MIXERCONTROL_CT_SC_METER_POLLED=0; +const MIXERCONTROL_CT_SC_TIME_MICROSECS=0; +const MIXERCONTROL_CT_SC_TIME_MILLISECS=0x1000000; +const MIXERCONTROL_CT_SC_LIST_SINGLE=0; +const MIXERCONTROL_CT_SC_LIST_MULTIPLE=0x1000000; +const MIXERCONTROL_CT_UNITS_MASK=0xFF0000; +const MIXERCONTROL_CT_UNITS_CUSTOM=0; +const MIXERCONTROL_CT_UNITS_BOOLEAN=0x10000; +const MIXERCONTROL_CT_UNITS_SIGNED=0x20000; +const MIXERCONTROL_CT_UNITS_UNSIGNED=0x30000; +const MIXERCONTROL_CT_UNITS_DECIBELS=0x40000; +const MIXERCONTROL_CT_UNITS_PERCENT=0x50000; + +const MIXERCONTROL_CONTROLTYPE_CUSTOM=(MIXERCONTROL_CT_CLASS_CUSTOM|MIXERCONTROL_CT_UNITS_CUSTOM); +const MIXERCONTROL_CONTROLTYPE_BOOLEANMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_SIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_SIGNED); +const MIXERCONTROL_CONTROLTYPE_PEAKMETER=(MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1); +const MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_BOOLEAN=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BOOLEAN|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_ONOFF=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+1); +const MIXERCONTROL_CONTROLTYPE_MUTE=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+2); +const MIXERCONTROL_CONTROLTYPE_MONO=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+3); +const MIXERCONTROL_CONTROLTYPE_LOUDNESS=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+4); +const MIXERCONTROL_CONTROLTYPE_STEREOENH=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+5); +const MIXERCONTROL_CONTROLTYPE_BUTTON=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BUTTON|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_DECIBELS=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_DECIBELS); +const MIXERCONTROL_CONTROLTYPE_SIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_SIGNED); +const MIXERCONTROL_CONTROLTYPE_UNSIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_PERCENT=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_PERCENT); +const MIXERCONTROL_CONTROLTYPE_SLIDER=(MIXERCONTROL_CT_CLASS_SLIDER|MIXERCONTROL_CT_UNITS_SIGNED); +const MIXERCONTROL_CONTROLTYPE_PAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+1); +const MIXERCONTROL_CONTROLTYPE_QSOUNDPAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+2); +const MIXERCONTROL_CONTROLTYPE_FADER=(MIXERCONTROL_CT_CLASS_FADER|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_VOLUME=(MIXERCONTROL_CONTROLTYPE_FADER+1); +const MIXERCONTROL_CONTROLTYPE_BASS=(MIXERCONTROL_CONTROLTYPE_FADER+2); +const MIXERCONTROL_CONTROLTYPE_TREBLE=(MIXERCONTROL_CONTROLTYPE_FADER+3); +const MIXERCONTROL_CONTROLTYPE_EQUALIZER=(MIXERCONTROL_CONTROLTYPE_FADER+4); +const MIXERCONTROL_CONTROLTYPE_SINGLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_SINGLE|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_MUX=(MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1); +const MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_MULTIPLE|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_MIXER=(MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1); +const MIXERCONTROL_CONTROLTYPE_MICROTIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MICROSECS|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_MILLITIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MILLISECS|MIXERCONTROL_CT_UNITS_UNSIGNED); + +const MIXER_GETLINECONTROLSF_ALL=0; +const MIXER_GETLINECONTROLSF_ONEBYID=1; +const MIXER_GETLINECONTROLSF_ONEBYTYPE=2; +const MIXER_GETLINECONTROLSF_QUERYMASK=15; +const MIXER_GETCONTROLDETAILSF_VALUE=0; +const MIXER_GETCONTROLDETAILSF_LISTTEXT=1; +const MIXER_GETCONTROLDETAILSF_QUERYMASK=15; +const MIXER_SETCONTROLDETAILSF_VALUE=0; +const MIXER_SETCONTROLDETAILSF_CUSTOM=1; +const MIXER_SETCONTROLDETAILSF_QUERYMASK=15; + +const TIMERR_NOERROR=0; +const TIMERR_NOCANDO=(TIMERR_BASE+1); +const TIMERR_STRUCT=(TIMERR_BASE+33); +const TIME_ONESHOT=0; +const TIME_PERIODIC=1; +const TIME_CALLBACK_FUNCTION=0; +const TIME_CALLBACK_EVENT_SET=16; +const TIME_CALLBACK_EVENT_PULSE=32; + +static if (_WIN32_WINNT >= 0x501) { + +const TIME_KILL_SYNCHRONOUS=0x0100; + +} + +const JOYERR_NOERROR = 0; +const JOYERR_PARMS=(JOYERR_BASE+5); +const JOYERR_NOCANDO=(JOYERR_BASE+6); +const JOYERR_UNPLUGGED=(JOYERR_BASE+7); + +const JOY_BUTTON1=1; +const JOY_BUTTON2=2; +const JOY_BUTTON3=4; +const JOY_BUTTON4=8; +const JOY_BUTTON1CHG=256; +const JOY_BUTTON2CHG=512; +const JOY_BUTTON3CHG=1024; +const JOY_BUTTON4CHG=2048; +const JOY_BUTTON5=257; +const JOY_BUTTON6=513; +const JOY_BUTTON7=1025; +const JOY_BUTTON8=2049; +const JOY_BUTTON9=256; +const JOY_BUTTON10=512; +const JOY_BUTTON11=1024; +const JOY_BUTTON12=2048; +const JOY_BUTTON13=4096; +const JOY_BUTTON14=8192; +const JOY_BUTTON15=16384; +const JOY_BUTTON16=32768; +const JOY_BUTTON17=65536; +const JOY_BUTTON18=0x20000; +const JOY_BUTTON19=0x40000; +const JOY_BUTTON20=0x80000; +const JOY_BUTTON21=0x100000; +const JOY_BUTTON22=0x200000; +const JOY_BUTTON23=0x400000; +const JOY_BUTTON24=0x800000; +const JOY_BUTTON25=0x1000000; +const JOY_BUTTON26=0x2000000; +const JOY_BUTTON27=0x4000000; +const JOY_BUTTON28=0x8000000; +const JOY_BUTTON29=0x10000000; +const JOY_BUTTON30=0x20000000; +const JOY_BUTTON31=0x40000000; +const JOY_BUTTON32=0x80000000; + +enum : DWORD { + JOY_POVCENTERED = -1, + JOY_POVFORWARD = 0, + JOY_POVBACKWARD = 18000, + JOY_POVLEFT = 27000, + JOY_POVRIGHT = 9000 +} + +const DWORD + JOY_RETURNX = 0x00000001, + JOY_RETURNY = 0x00000002, + JOY_RETURNZ = 0x00000004, + JOY_RETURNR = 0x00000008, + JOY_RETURNU = 0x00000010, + JOY_RETURNV = 0x00000020, + JOY_RETURNPOV = 0x00000040, + JOY_RETURNBUTTONS = 0x00000080, + JOY_RETURNRAWDATA = 0x00000100, + JOY_RETURNPOVCTS = 0x00000200, + JOY_RETURNCENTERED = 0x00000400, + JOY_USEDEADZONE = 0x00000800, + JOY_RETURNALL = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR + | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV + | JOY_RETURNBUTTONS, + JOY_CAL_READALWAYS = 0x00010000, + JOY_CAL_READXYONLY = 0x00020000, + JOY_CAL_READ3 = 0x00040000, + JOY_CAL_READ4 = 0x00080000, + JOY_CAL_READXONLY = 0x00100000, + JOY_CAL_READYONLY = 0x00200000, + JOY_CAL_READ5 = 0x00400000, + JOY_CAL_READ6 = 0x00800000, + JOY_CAL_READZONLY = 0x01000000, + JOY_CAL_READRONLY = 0x02000000, + JOY_CAL_READUONLY = 0x04000000, + JOY_CAL_READVONLY = 0x08000000; + +const JOYSTICKID1=0; +const JOYSTICKID2=1; + +const JOYCAPS_HASZ=1; +const JOYCAPS_HASR=2; +const JOYCAPS_HASU=4; +const JOYCAPS_HASV=8; +const JOYCAPS_HASPOV=16; +const JOYCAPS_POV4DIR=32; +const JOYCAPS_POVCTS=64; + +const MMIOERR_BASE=256; +const MMIOERR_FILENOTFOUND=(MMIOERR_BASE+1); +const MMIOERR_OUTOFMEMORY=(MMIOERR_BASE+2); +const MMIOERR_CANNOTOPEN=(MMIOERR_BASE+3); +const MMIOERR_CANNOTCLOSE=(MMIOERR_BASE+4); +const MMIOERR_CANNOTREAD=(MMIOERR_BASE+5); +const MMIOERR_CANNOTWRITE=(MMIOERR_BASE+6); +const MMIOERR_CANNOTSEEK=(MMIOERR_BASE+7); +const MMIOERR_CANNOTEXPAND=(MMIOERR_BASE+8); +const MMIOERR_CHUNKNOTFOUND=(MMIOERR_BASE+9); +const MMIOERR_UNBUFFERED=(MMIOERR_BASE+10); +const MMIOERR_PATHNOTFOUND=(MMIOERR_BASE+11); +const MMIOERR_ACCESSDENIED=(MMIOERR_BASE+12); +const MMIOERR_SHARINGVIOLATION=(MMIOERR_BASE+13); +const MMIOERR_NETWORKERROR=(MMIOERR_BASE+14); +const MMIOERR_TOOMANYOPENFILES=(MMIOERR_BASE+15); +const MMIOERR_INVALIDFILE=(MMIOERR_BASE+16); + +const CFSEPCHAR='+'; + +const MMIO_RWMODE=3; +const MMIO_SHAREMODE=0x70; +const MMIO_CREATE=0x1000; +const MMIO_PARSE=256; +const MMIO_DELETE=512; +const MMIO_EXIST=0x4000; +const MMIO_ALLOCBUF=0x10000; +const MMIO_GETTEMP=0x20000; +const MMIO_DIRTY=0x10000000; +const MMIO_READ=0; +const MMIO_WRITE=1; +const MMIO_READWRITE=2; +const MMIO_COMPAT=0; +const MMIO_EXCLUSIVE=16; +const MMIO_DENYWRITE=32; +const MMIO_DENYREAD=0x30; +const MMIO_DENYNONE=64; +const MMIO_FHOPEN=16; +const MMIO_EMPTYBUF=16; +const MMIO_TOUPPER=16; +const MMIO_INSTALLPROC=0x10000; +const MMIO_GLOBALPROC=0x10000000; +const MMIO_REMOVEPROC=0x20000; +const MMIO_UNICODEPROC=0x1000000; +const MMIO_FINDPROC=0x40000; +const MMIO_FINDCHUNK=16; +const MMIO_FINDRIFF=32; +const MMIO_FINDLIST=64; +const MMIO_CREATERIFF=32; +const MMIO_CREATELIST=64; +const MMIOM_READ=MMIO_READ; +const MMIOM_WRITE=MMIO_WRITE; +const MMIOM_SEEK=2; +const MMIOM_OPEN=3; +const MMIOM_CLOSE=4; +const MMIOM_WRITEFLUSH=5; +const MMIOM_RENAME=6; +const MMIOM_USER=0x8000; + +const FOURCC_RIFF = mmioFOURCC!('R', 'I', 'F', 'F'); +const FOURCC_LIST = mmioFOURCC!('L', 'I', 'S', 'T'); +const FOURCC_DOS = mmioFOURCC!('D', 'O', 'S', ' '); +const FOURCC_MEM = mmioFOURCC!('M', 'E', 'M', ' '); + +const MMIO_DEFAULTBUFFER=8192; + +enum { + MCIERR_INVALID_DEVICE_ID = MCIERR_BASE + 1, + MCIERR_UNRECOGNIZED_KEYWORD = MCIERR_BASE + 3, + MCIERR_UNRECOGNIZED_COMMAND = MCIERR_BASE + 5, + MCIERR_HARDWARE, + MCIERR_INVALID_DEVICE_NAME, + MCIERR_OUT_OF_MEMORY, + MCIERR_DEVICE_OPEN, + MCIERR_CANNOT_LOAD_DRIVER, + MCIERR_MISSING_COMMAND_STRING, + MCIERR_PARAM_OVERFLOW, + MCIERR_MISSING_STRING_ARGUMENT, + MCIERR_BAD_INTEGER, + MCIERR_PARSER_INTERNAL, + MCIERR_DRIVER_INTERNAL, + MCIERR_MISSING_PARAMETER, + MCIERR_UNSUPPORTED_FUNCTION, + MCIERR_FILE_NOT_FOUND, + MCIERR_DEVICE_NOT_READY, + MCIERR_INTERNAL, + MCIERR_DRIVER, + MCIERR_CANNOT_USE_ALL, + MCIERR_MULTIPLE, + MCIERR_EXTENSION_NOT_FOUND, + MCIERR_OUTOFRANGE, // = MCIERR_BASE+26 + MCIERR_FLAGS_NOT_COMPATIBLE = MCIERR_BASE + 28, + MCIERR_FILE_NOT_SAVED = MCIERR_BASE + 30, + MCIERR_DEVICE_TYPE_REQUIRED, + MCIERR_DEVICE_LOCKED, + MCIERR_DUPLICATE_ALIAS, + MCIERR_BAD_CONSTANT, + MCIERR_MUST_USE_SHAREABLE, + MCIERR_MISSING_DEVICE_NAME, + MCIERR_BAD_TIME_FORMAT, + MCIERR_NO_CLOSING_QUOTE, + MCIERR_DUPLICATE_FLAGS, + MCIERR_INVALID_FILE, + MCIERR_NULL_PARAMETER_BLOCK, + MCIERR_UNNAMED_RESOURCE, + MCIERR_NEW_REQUIRES_ALIAS, + MCIERR_NOTIFY_ON_AUTO_OPEN, + MCIERR_NO_ELEMENT_ALLOWED, + MCIERR_NONAPPLICABLE_FUNCTION, + MCIERR_ILLEGAL_FOR_AUTO_OPEN, + MCIERR_FILENAME_REQUIRED, + MCIERR_EXTRA_CHARACTERS, + MCIERR_DEVICE_NOT_INSTALLED, + MCIERR_GET_CD, + MCIERR_SET_CD, + MCIERR_SET_DRIVE, + MCIERR_DEVICE_LENGTH, + MCIERR_DEVICE_ORD_LENGTH, + MCIERR_NO_INTEGER, // = MCIERR_BASE + 56 + MCIERR_WAVE_OUTPUTSINUSE = MCIERR_BASE + 64, + MCIERR_WAVE_SETOUTPUTINUSE, + MCIERR_WAVE_INPUTSINUSE, + MCIERR_WAVE_SETINPUTINUSE, + MCIERR_WAVE_OUTPUTUNSPECIFIED, + MCIERR_WAVE_INPUTUNSPECIFIED, + MCIERR_WAVE_OUTPUTSUNSUITABLE, + MCIERR_WAVE_SETOUTPUTUNSUITABLE, + MCIERR_WAVE_INPUTSUNSUITABLE, + MCIERR_WAVE_SETINPUTUNSUITABLE, // = MCIERR_BASE + 73 + MCIERR_SEQ_DIV_INCOMPATIBLE = MCIERR_BASE + 80, + MCIERR_SEQ_PORT_INUSE, + MCIERR_SEQ_PORT_NONEXISTENT, + MCIERR_SEQ_PORT_MAPNODEVICE, + MCIERR_SEQ_PORT_MISCERROR, + MCIERR_SEQ_TIMER, + MCIERR_SEQ_PORTUNSPECIFIED, + MCIERR_SEQ_NOMIDIPRESENT, // = MCIERR_BASE + 87 + MCIERR_NO_WINDOW = MCIERR_BASE + 90, + MCIERR_CREATEWINDOW, + MCIERR_FILE_READ, + MCIERR_FILE_WRITE, + MCIERR_NO_IDENTITY // = MCIERR_BASE + 94 +} +const MCIERR_CUSTOM_DRIVER_BASE = MCIERR_BASE + 256; + +const MCI_FIRST=DRV_MCI_FIRST; +const MCI_OPEN=0x803; +const MCI_CLOSE=0x804; +const MCI_ESCAPE=0x805; +const MCI_PLAY=0x806; +const MCI_SEEK=0x807; +const MCI_STOP=0x808; +const MCI_PAUSE=0x809; +const MCI_INFO=0x80A; +const MCI_GETDEVCAPS=0x80B; +const MCI_SPIN=0x80C; +const MCI_SET=0x80D; +const MCI_STEP=0x80E; +const MCI_RECORD=0x80F; +const MCI_SYSINFO=0x810; +const MCI_BREAK=0x811; +const MCI_SAVE=0x813; +const MCI_STATUS=0x814; +const MCI_CUE=0x830; +const MCI_REALIZE=0x840; +const MCI_WINDOW=0x841; +const MCI_PUT=0x842; +const MCI_WHERE=0x843; +const MCI_FREEZE=0x844; +const MCI_UNFREEZE=0x845; +const MCI_LOAD=0x850; +const MCI_CUT=0x851; +const MCI_COPY=0x852; +const MCI_PASTE=0x853; +const MCI_UPDATE=0x854; +const MCI_RESUME=0x855; +const MCI_DELETE=0x856; +const MCI_USER_MESSAGES=(DRV_MCI_FIRST+0x400); +const MCI_LAST=0xFFF; + +const MCIDEVICEID MCI_ALL_DEVICE_ID = -1; + +const MCI_DEVTYPE_VCR=513; +const MCI_DEVTYPE_VIDEODISC=514; +const MCI_DEVTYPE_OVERLAY=515; +const MCI_DEVTYPE_CD_AUDIO=516; +const MCI_DEVTYPE_DAT=517; +const MCI_DEVTYPE_SCANNER=518; +const MCI_DEVTYPE_ANIMATION=519; +const MCI_DEVTYPE_DIGITAL_VIDEO=520; +const MCI_DEVTYPE_OTHER=521; +const MCI_DEVTYPE_WAVEFORM_AUDIO=522; +const MCI_DEVTYPE_SEQUENCER=523; +const MCI_DEVTYPE_FIRST=MCI_DEVTYPE_VCR; +const MCI_DEVTYPE_LAST=MCI_DEVTYPE_SEQUENCER; +const MCI_DEVTYPE_FIRST_USER=0x1000; +const MCI_MODE_NOT_READY=(MCI_STRING_OFFSET+12); +const MCI_MODE_STOP=(MCI_STRING_OFFSET+13); +const MCI_MODE_PLAY=(MCI_STRING_OFFSET+14); +const MCI_MODE_RECORD=(MCI_STRING_OFFSET+15); +const MCI_MODE_SEEK=(MCI_STRING_OFFSET+16); +const MCI_MODE_PAUSE=(MCI_STRING_OFFSET+17); +const MCI_MODE_OPEN=(MCI_STRING_OFFSET+18); +const MCI_FORMAT_MILLISECONDS=0; +const MCI_FORMAT_HMS=1; +const MCI_FORMAT_MSF=2; +const MCI_FORMAT_FRAMES=3; +const MCI_FORMAT_SMPTE_24=4; +const MCI_FORMAT_SMPTE_25=5; +const MCI_FORMAT_SMPTE_30=6; +const MCI_FORMAT_SMPTE_30DROP=7; +const MCI_FORMAT_BYTES=8; +const MCI_FORMAT_SAMPLES=9; +const MCI_FORMAT_TMSF=10; + + + + +// Macros +BYTE MCI_HMS_HOUR(DWORD t) { return cast(BYTE)(t); } +BYTE MCI_HMS_MINUTE(DWORD t) { return cast(BYTE)(t>>>8); } +BYTE MCI_HMS_SECOND(DWORD t) { return cast(BYTE)( t>>>16); } +DWORD MCI_MAKE_HMS(BYTE h, BYTE m, BYTE s) { return h |(m<<8)|(cast(DWORD)(s)<<16); } +DWORD MCI_MAKE_MSF(BYTE m, BYTE s, BYTE f) { return m |(s<<8)|(cast(DWORD)(f)<<16); } +DWORD MCI_MAKE_TMSF(BYTE t, BYTE m, BYTE s, BYTE f) { + return t |(m<<8)|(s<<16)|(cast(DWORD)(f)<< 24); } + +BYTE MCI_MSF_MINUTE(DWORD t) { return cast(BYTE)(t); } +BYTE MCI_MSF_SECOND(DWORD t) { return cast(BYTE)(t >>> 8); } +BYTE MCI_MSF_FRAME(DWORD t) { return cast(BYTE)(t >>> 16); } + +BYTE MCI_TMSF_TRACK(DWORD t) { return cast(BYTE)(t); } +BYTE MCI_TMSF_MINUTE(DWORD t) { return cast(BYTE)(t>>8); } +BYTE MCI_TMSF_SECOND(DWORD t) { return cast(BYTE)(t>>16); } +BYTE MCI_TMSF_FRAME(DWORD t) { return cast(BYTE)(t>>24); } + + +const MCI_NOTIFY_SUCCESSFUL=1; +const MCI_NOTIFY_SUPERSEDED=2; +const MCI_NOTIFY_ABORTED=4; +const MCI_NOTIFY_FAILURE=8; +const MCI_NOTIFY=1; +const MCI_WAIT=2; +const MCI_FROM=4; +const MCI_TO=8; +const MCI_TRACK=16; +const MCI_OPEN_SHAREABLE=256; +const MCI_OPEN_ELEMENT=512; +const MCI_OPEN_ALIAS=1024; +const MCI_OPEN_ELEMENT_ID=2048; +const MCI_OPEN_TYPE_ID=0x1000; +const MCI_OPEN_TYPE=0x2000; +const MCI_SEEK_TO_START=256; +const MCI_SEEK_TO_END=512; +const MCI_STATUS_ITEM=256; +const MCI_STATUS_START=512; +const MCI_STATUS_LENGTH=1; +const MCI_STATUS_POSITION=2; +const MCI_STATUS_NUMBER_OF_TRACKS=3; +const MCI_STATUS_MODE=4; +const MCI_STATUS_MEDIA_PRESENT=5; +const MCI_STATUS_TIME_FORMAT=6; +const MCI_STATUS_READY=7; +const MCI_STATUS_CURRENT_TRACK=8; +const MCI_INFO_PRODUCT=256; +const MCI_INFO_FILE=512; +const MCI_INFO_MEDIA_UPC=1024; +const MCI_INFO_MEDIA_IDENTITY=2048; +const MCI_INFO_NAME=0x1000; +const MCI_INFO_COPYRIGHT=0x2000; + +const MCI_GETDEVCAPS_ITEM=256; +const MCI_GETDEVCAPS_CAN_RECORD=1; +const MCI_GETDEVCAPS_HAS_AUDIO=2; +const MCI_GETDEVCAPS_HAS_VIDEO=3; +const MCI_GETDEVCAPS_DEVICE_TYPE=4; +const MCI_GETDEVCAPS_USES_FILES=5; +const MCI_GETDEVCAPS_COMPOUND_DEVICE=6; +const MCI_GETDEVCAPS_CAN_EJECT=7; +const MCI_GETDEVCAPS_CAN_PLAY=8; +const MCI_GETDEVCAPS_CAN_SAVE=9; + +const MCI_SYSINFO_QUANTITY=256; +const MCI_SYSINFO_OPEN=512; +const MCI_SYSINFO_NAME=1024; +const MCI_SYSINFO_INSTALLNAME=2048; +const MCI_SET_DOOR_OPEN=256; +const MCI_SET_DOOR_CLOSED=512; +const MCI_SET_TIME_FORMAT=1024; +const MCI_SET_AUDIO=2048; +const MCI_SET_VIDEO=0x1000; +const MCI_SET_ON=0x2000; +const MCI_SET_OFF=0x4000; + +const MCI_SET_AUDIO_ALL=0; +const MCI_SET_AUDIO_LEFT=1; +const MCI_SET_AUDIO_RIGHT=2; + +const MCI_BREAK_KEY=256; +const MCI_BREAK_HWND=512; +const MCI_BREAK_OFF=1024; + +const MCI_RECORD_INSERT=256; +const MCI_RECORD_OVERWRITE=512; +const MCI_SAVE_FILE=256; +const MCI_LOAD_FILE=256; + +const MCI_VD_MODE_PARK=(MCI_VD_OFFSET+1); +const MCI_VD_MEDIA_CLV=(MCI_VD_OFFSET+2); +const MCI_VD_MEDIA_CAV=(MCI_VD_OFFSET+3); +const MCI_VD_MEDIA_OTHER=(MCI_VD_OFFSET+4); + +const MCI_VD_FORMAT_TRACK=0x4001; +const MCI_VD_PLAY_REVERSE=0x10000; +const MCI_VD_PLAY_FAST=0x20000; +const MCI_VD_PLAY_SPEED=0x40000; +const MCI_VD_PLAY_SCAN=0x80000; +const MCI_VD_PLAY_SLOW=0x100000; +const MCI_VD_SEEK_REVERSE=0x10000; +const MCI_VD_STATUS_SPEED=0x4002; +const MCI_VD_STATUS_FORWARD=0x4003; +const MCI_VD_STATUS_MEDIA_TYPE=0x4004; +const MCI_VD_STATUS_SIDE=0x4005; +const MCI_VD_STATUS_DISC_SIZE=0x4006; +const MCI_VD_GETDEVCAPS_CLV=0x10000; +const MCI_VD_GETDEVCAPS_CAV=0x20000; +const MCI_VD_SPIN_UP=0x10000; +const MCI_VD_SPIN_DOWN=0x20000; +const MCI_VD_GETDEVCAPS_CAN_REVERSE=0x4002; +const MCI_VD_GETDEVCAPS_FAST_RATE=0x4003; +const MCI_VD_GETDEVCAPS_SLOW_RATE=0x4004; +const MCI_VD_GETDEVCAPS_NORMAL_RATE=0x4005; +const MCI_VD_STEP_FRAMES=0x10000; +const MCI_VD_STEP_REVERSE=0x20000; +const MCI_VD_ESCAPE_STRING=256; + +const MCI_CDA_STATUS_TYPE_TRACK=0x4001; +const MCI_CDA_TRACK_AUDIO=MCI_CD_OFFSET; +const MCI_CDA_TRACK_OTHER=(MCI_CD_OFFSET+1); + +const MCI_WAVE_PCM=MCI_WAVE_OFFSET; +const MCI_WAVE_MAPPER=(MCI_WAVE_OFFSET+1); +const MCI_WAVE_OPEN_BUFFER=0x10000; +const MCI_WAVE_SET_FORMATTAG=0x10000; +const MCI_WAVE_SET_CHANNELS=0x20000; +const MCI_WAVE_SET_SAMPLESPERSEC=0x40000; +const MCI_WAVE_SET_AVGBYTESPERSEC=0x80000; +const MCI_WAVE_SET_BLOCKALIGN=0x100000; +const MCI_WAVE_SET_BITSPERSAMPLE=0x200000; +const MCI_WAVE_INPUT=0x400000; +const MCI_WAVE_OUTPUT=0x800000; +const MCI_WAVE_STATUS_FORMATTAG=0x4001; +const MCI_WAVE_STATUS_CHANNELS=0x4002; +const MCI_WAVE_STATUS_SAMPLESPERSEC=0x4003; +const MCI_WAVE_STATUS_AVGBYTESPERSEC=0x4004; +const MCI_WAVE_STATUS_BLOCKALIGN=0x4005; +const MCI_WAVE_STATUS_BITSPERSAMPLE=0x4006; +const MCI_WAVE_STATUS_LEVEL=0x4007; +const MCI_WAVE_SET_ANYINPUT=0x4000000; +const MCI_WAVE_SET_ANYOUTPUT=0x8000000; +const MCI_WAVE_GETDEVCAPS_INPUTS=0x4001; +const MCI_WAVE_GETDEVCAPS_OUTPUTS=0x4002; + +const MCI_SEQ_DIV_PPQN=MCI_SEQ_OFFSET; +const MCI_SEQ_DIV_SMPTE_24=(MCI_SEQ_OFFSET+1); +const MCI_SEQ_DIV_SMPTE_25=(MCI_SEQ_OFFSET+2); +const MCI_SEQ_DIV_SMPTE_30DROP=(MCI_SEQ_OFFSET+3); +const MCI_SEQ_DIV_SMPTE_30=(MCI_SEQ_OFFSET+4); +const MCI_SEQ_FORMAT_SONGPTR=0x4001; +const MCI_SEQ_FILE=0x4002; +const MCI_SEQ_MIDI=0x4003; +const MCI_SEQ_SMPTE=0x4004; +const MCI_SEQ_NONE=65533; +const MCI_SEQ_MAPPER=65535; + +const MCI_SEQ_STATUS_TEMPO=0x4002; +const MCI_SEQ_STATUS_PORT=0x4003; +const MCI_SEQ_STATUS_SLAVE=0x4007; +const MCI_SEQ_STATUS_MASTER=0x4008; +const MCI_SEQ_STATUS_OFFSET=0x4009; +const MCI_SEQ_STATUS_DIVTYPE=0x400A; +const MCI_SEQ_STATUS_NAME=0x400B; +const MCI_SEQ_STATUS_COPYRIGHT=0x400C; + +const MCI_SEQ_SET_TEMPO=0x10000; +const MCI_SEQ_SET_PORT=0x20000; +const MCI_SEQ_SET_SLAVE=0x40000; +const MCI_SEQ_SET_MASTER=0x80000; +const MCI_SEQ_SET_OFFSET=0x1000000; + +const MCI_ANIM_OPEN_WS=0x10000; +const MCI_ANIM_OPEN_PARENT=0x20000; +const MCI_ANIM_OPEN_NOSTATIC=0x40000; +const MCI_ANIM_PLAY_SPEED=0x10000; +const MCI_ANIM_PLAY_REVERSE=0x20000; +const MCI_ANIM_PLAY_FAST=0x40000; +const MCI_ANIM_PLAY_SLOW=0x80000; +const MCI_ANIM_PLAY_SCAN=0x100000; +const MCI_ANIM_STEP_REVERSE=0x10000; +const MCI_ANIM_STEP_FRAMES=0x20000; +const MCI_ANIM_STATUS_SPEED=0x4001; +const MCI_ANIM_STATUS_FORWARD=0x4002; +const MCI_ANIM_STATUS_HWND=0x4003; +const MCI_ANIM_STATUS_HPAL=0x4004; +const MCI_ANIM_STATUS_STRETCH=0x4005; +const MCI_ANIM_INFO_TEXT=0x10000; + +const MCI_ANIM_GETDEVCAPS_CAN_REVERSE=0x4001; +const MCI_ANIM_GETDEVCAPS_FAST_RATE=0x4002; +const MCI_ANIM_GETDEVCAPS_SLOW_RATE=0x4003; +const MCI_ANIM_GETDEVCAPS_NORMAL_RATE=0x4004; +const MCI_ANIM_GETDEVCAPS_PALETTES=0x4006; +const MCI_ANIM_GETDEVCAPS_CAN_STRETCH=0x4007; +const MCI_ANIM_GETDEVCAPS_MAX_WINDOWS=0x4008; + +const MCI_ANIM_REALIZE_NORM=0x10000; +const MCI_ANIM_REALIZE_BKGD=0x20000; + +const MCI_ANIM_WINDOW_HWND=0x10000; +const MCI_ANIM_WINDOW_STATE=0x40000; +const MCI_ANIM_WINDOW_TEXT=0x80000; +const MCI_ANIM_WINDOW_ENABLE_STRETCH=0x100000; +const MCI_ANIM_WINDOW_DISABLE_STRETCH=0x200000; +const MCI_ANIM_WINDOW_DEFAULT=0x0; + +const MCI_ANIM_RECT=0x10000; +const MCI_ANIM_PUT_SOURCE=0x20000; +const MCI_ANIM_PUT_DESTINATION=0x40000; +const MCI_ANIM_WHERE_SOURCE=0x20000; +const MCI_ANIM_WHERE_DESTINATION=0x40000; +const MCI_ANIM_UPDATE_HDC=0x20000; + +const MCI_OVLY_OPEN_WS=0x10000; +const MCI_OVLY_OPEN_PARENT=0x20000; +const MCI_OVLY_STATUS_HWND=0x4001; +const MCI_OVLY_STATUS_STRETCH=0x4002; +const MCI_OVLY_INFO_TEXT=0x10000; +const MCI_OVLY_GETDEVCAPS_CAN_STRETCH=0x4001; +const MCI_OVLY_GETDEVCAPS_CAN_FREEZE=0x4002; +const MCI_OVLY_GETDEVCAPS_MAX_WINDOWS=0x4003; +const MCI_OVLY_WINDOW_HWND=0x10000; +const MCI_OVLY_WINDOW_STATE=0x40000; +const MCI_OVLY_WINDOW_TEXT=0x80000; +const MCI_OVLY_WINDOW_ENABLE_STRETCH=0x100000; +const MCI_OVLY_WINDOW_DISABLE_STRETCH=0x200000; +const MCI_OVLY_WINDOW_DEFAULT=0x0; +const MCI_OVLY_RECT=0x10000; +const MCI_OVLY_PUT_SOURCE=0x20000; +const MCI_OVLY_PUT_DESTINATION=0x40000; +const MCI_OVLY_PUT_FRAME=0x80000; +const MCI_OVLY_PUT_VIDEO=0x100000; +const MCI_OVLY_WHERE_SOURCE=0x20000; +const MCI_OVLY_WHERE_DESTINATION=0x40000; +const MCI_OVLY_WHERE_FRAME=0x80000; +const MCI_OVLY_WHERE_VIDEO=0x100000; + +const NEWTRANSPARENT=3; +const QUERYROPSUPPORT=40; +const SELECTDIB=41; + +LONG DIBINDEX(WORD n) { + return MAKELONG(n, 0x10FF); +} +const CAPS1=94; +const C1_TRANSPARENT=1; + +const SEEK_SET=0; +const SEEK_CUR=1; +const SEEK_END=2; + +alias DWORD MCIERROR; +alias UINT MCIDEVICEID; +alias UINT function (MCIDEVICEID, DWORD) YIELDPROC; +alias UINT MMVERSION; +alias UINT MMRESULT; + +struct MMTIME { + UINT wType; + union { + DWORD ms; + DWORD sample; + DWORD cb; + DWORD ticks; + struct smpte { + BYTE hour; + BYTE min; + BYTE sec; + BYTE frame; + BYTE fps; + BYTE dummy; + BYTE[2] pad; + }; + struct midi { + DWORD songptrpos; + } + } +} +alias MMTIME* PMMTIME, LPMMTIME; + +alias TypeDef!(HANDLE) HDRVR; + +struct DRVCONFIGINFO { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; +} +alias DRVCONFIGINFO * PDRVCONFIGINFO, LPDRVCONFIGINFO; + +struct DRVCONFIGINFOEX { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; + DWORD dnDevNode; +} +alias DRVCONFIGINFOEX* PDRVCONFIGINFOEX, LPDRVCONFIGINFOEX; + +extern(Windows): + +/+FIXME: I couldn't find these in MSDN. +alias void function (HDRVR, UINT, DWORD, DWORD, DWORD) DRVCALLBACK; +LRESULT DRIVERPROC (DWORD, HDRVR, UINT, LPARAM, LPARAM); +alias DRVCALLBACK* LPDRVCALLBACK, PDRVCALLBACK; + +alias DRVCALLBACK WAVECALLBACK; +alias WAVECALLBACK* LPWAVECALLBACK; + +alias DRVCALLBACK MIDICALLBACK; +alias MIDICALLBACK* LPMIDICALLBACK; + ++/ + +alias TypeDef!(HANDLE) HWAVE; +alias TypeDef!(HANDLE) HWAVEIN; +alias TypeDef!(HANDLE) HWAVEOUT; + +alias HWAVEIN* LPHWAVEIN; +alias HWAVEOUT* LPHWAVEOUT; + +struct WAVEHDR { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD dwUser; + DWORD dwFlags; + DWORD dwLoops; + WAVEHDR *lpNext; + DWORD reserved; +} +alias WAVEHDR* PWAVEHDR, LPWAVEHDR; + +struct WAVEOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} +alias WAVEOUTCAPSA* PWAVEOUTCAPSA, LPWAVEOUTCAPSA; + +struct WAVEOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} +alias WAVEOUTCAPSW* PWAVEOUTCAPSW, LPWAVEOUTCAPSW; + +struct WAVEINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} +alias WAVEINCAPSA* PWAVEINCAPSA, LPWAVEINCAPSA; + +struct WAVEINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} +alias WAVEINCAPSW* PWAVEINCAPSW, LPWAVEINCAPSW; + +struct WAVEFORMAT { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; +} +alias WAVEFORMAT* PWAVEFORMAT, LPWAVEFORMAT; + +struct PCMWAVEFORMAT { + WAVEFORMAT wf; + WORD wBitsPerSample; +} +alias PCMWAVEFORMAT* PPCMWAVEFORMAT, LPPCMWAVEFORMAT; + +struct WAVEFORMATEX { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wBitsPerSample; + WORD cbSize; +} +alias WAVEFORMATEX* PWAVEFORMATEX, LPWAVEFORMATEX; +alias const(WAVEFORMATEX)* LPCWAVEFORMATEX; + +alias TypeDef!(HANDLE) HMIDI; +alias TypeDef!(HANDLE) HMIDIIN; +alias TypeDef!(HANDLE) HMIDIOUT; +alias TypeDef!(HANDLE) HMIDISTRM; + +alias HMIDI* LPHMIDI; +alias HMIDIIN* LPHMIDIIN; +alias HMIDIOUT* LPHMIDIOUT; +alias HMIDISTRM* LPHMIDISTRM; + +alias WORD[MIDIPATCHSIZE] PATCHARRAY; +alias WORD* LPPATCHARRAY; +alias WORD[MIDIPATCHSIZE] KEYARRAY; +alias WORD* LPKEYARRAY; + +struct MIDIOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} +alias MIDIOUTCAPSA* PMIDIOUTCAPSA, LPMIDIOUTCAPSA; + +struct MIDIOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} +alias MIDIOUTCAPSW* PMIDIOUTCAPSW, LPMIDIOUTCAPSW; + +struct MIDIINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD dwSupport; +} +alias MIDIINCAPSA* PMIDIINCAPSA, LPMIDIINCAPSA; + +struct MIDIINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD dwSupport; +} +alias MIDIINCAPSW* PMIDIINCAPSW, LPMIDIINCAPSW; + +struct MIDIHDR { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD dwUser; + DWORD dwFlags; + MIDIHDR *lpNext; + DWORD reserved; + DWORD dwOffset; + DWORD[8] dwReserved; +} +alias MIDIHDR* PMIDIHDR, LPMIDIHDR; + +struct MIDIEVENT { + DWORD dwDeltaTime; + DWORD dwStreamID; + DWORD dwEvent; + DWORD[1] dwParms; +} + +struct MIDISTRMBUFFVER { + DWORD dwVersion; + DWORD dwMid; + DWORD dwOEMVersion; +} + +struct MIDIPROPTIMEDIV { + DWORD cbStruct; + DWORD dwTimeDiv; +} +alias MIDIPROPTIMEDIV* LPMIDIPROPTIMEDIV; + +struct MIDIPROPTEMPO { + DWORD cbStruct; + DWORD dwTempo; +} +alias MIDIPROPTEMPO* LPMIDIPROPTEMPO; + +struct AUXCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} +alias AUXCAPSA* PAUXCAPSA, LPAUXCAPSA; + +struct AUXCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} +alias AUXCAPSW* PAUXCAPSW, LPAUXCAPSW; + +alias TypeDef!(HANDLE) HMIXEROBJ; +alias HMIXEROBJ* LPHMIXEROBJ; + +alias TypeDef!(HANDLE) HMIXER; +alias HMIXER* LPHMIXER; + +struct MIXERCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD fdwSupport; + DWORD cDestinations; +} +alias MIXERCAPSA* PMIXERCAPSA, LPMIXERCAPSA; + +struct MIXERCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD fdwSupport; + DWORD cDestinations; +} +alias MIXERCAPSW* PMIXERCAPSW, LPMIXERCAPSW; + +struct MIXERLINEA { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + CHAR[MIXER_SHORT_NAME_CHARS] szShortName; + CHAR[MIXER_LONG_NAME_CHARS] szName; + struct Target { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + } +} +alias MIXERLINEA* PMIXERLINEA, LPMIXERLINEA; + +struct MIXERLINEW { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + WCHAR[MIXER_SHORT_NAME_CHARS] szShortName; + WCHAR[MIXER_LONG_NAME_CHARS] szName; + struct Target { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + } +} +alias MIXERLINEW* PMIXERLINEW, LPMIXERLINEW; + +struct MIXERCONTROLA { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + CHAR[MIXER_SHORT_NAME_CHARS] szShortName; + CHAR[MIXER_LONG_NAME_CHARS] szName; + union _Bounds { + struct { + LONG lMinimum; + LONG lMaximum; + } + struct { + DWORD dwMinimum; + DWORD dwMaximum; + } + DWORD[6] dwReserved; + } + _Bounds Bounds; + union _Metrics { + DWORD cSteps; + DWORD cbCustomData; + DWORD[6] dwReserved; + } + _Metrics Metrics; +} +alias MIXERCONTROLA* PMIXERCONTROLA, LPMIXERCONTROLA; + +struct MIXERCONTROLW { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + WCHAR[MIXER_SHORT_NAME_CHARS] szShortName; + WCHAR[MIXER_LONG_NAME_CHARS] szName; + union _Bounds { + struct { + LONG lMinimum; + LONG lMaximum; + } + struct { + DWORD dwMinimum; + DWORD dwMaximum; + } + DWORD[6] dwReserved; + } + _Bounds Bounds; + union _Metrics { + DWORD cSteps; + DWORD cbCustomData; + DWORD[6] dwReserved; + } + _Metrics Metrics; +} + +alias MIXERCONTROLW* PMIXERCONTROLW, LPMIXERCONTROLW; + +struct MIXERLINECONTROLSA { + DWORD cbStruct; + DWORD dwLineID; + union { + DWORD dwControlID; + DWORD dwControlType; + } + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLA pamxctrl; +} +alias MIXERLINECONTROLSA* PMIXERLINECONTROLSA, LPMIXERLINECONTROLSA; + +struct MIXERLINECONTROLSW { + DWORD cbStruct; + DWORD dwLineID; + union { + DWORD dwControlID; + DWORD dwControlType; + } + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLW pamxctrl; +} +alias MIXERLINECONTROLSW* PMIXERLINECONTROLSW, LPMIXERLINECONTROLSW; + +struct MIXERCONTROLDETAILS { + DWORD cbStruct; + DWORD dwControlID; + DWORD cChannels; + union { + HWND hwndOwner; + DWORD cMultipleItems; + } + DWORD cbDetails; + PVOID paDetails; +} +alias MIXERCONTROLDETAILS* PMIXERCONTROLDETAILS, LPMIXERCONTROLDETAILS; + +struct MIXERCONTROLDETAILS_LISTTEXTA { + DWORD dwParam1; + DWORD dwParam2; + CHAR[MIXER_LONG_NAME_CHARS] szName; +} +alias MIXERCONTROLDETAILS_LISTTEXTA* PMIXERCONTROLDETAILS_LISTTEXTA, LPMIXERCONTROLDETAILS_LISTTEXTA; + +struct MIXERCONTROLDETAILS_LISTTEXTW { + DWORD dwParam1; + DWORD dwParam2; + WCHAR[MIXER_LONG_NAME_CHARS] szName; +} +alias MIXERCONTROLDETAILS_LISTTEXTW* PMIXERCONTROLDETAILS_LISTTEXTW, LPMIXERCONTROLDETAILS_LISTTEXTW; + +struct MIXERCONTROLDETAILS_BOOLEAN { + LONG fValue; +} +alias MIXERCONTROLDETAILS_BOOLEAN* PMIXERCONTROLDETAILS_BOOLEAN, LPMIXERCONTROLDETAILS_BOOLEAN; + +struct MIXERCONTROLDETAILS_SIGNED { + LONG lValue; +} +alias MIXERCONTROLDETAILS_SIGNED* PMIXERCONTROLDETAILS_SIGNED, LPMIXERCONTROLDETAILS_SIGNED; + +struct MIXERCONTROLDETAILS_UNSIGNED { + DWORD dwValue; +} +alias MIXERCONTROLDETAILS_UNSIGNED* PMIXERCONTROLDETAILS_UNSIGNED, LPMIXERCONTROLDETAILS_UNSIGNED; + +alias void function (UINT, UINT, DWORD, DWORD, DWORD) LPTIMECALLBACK; + +struct TIMECAPS { + UINT wPeriodMin; + UINT wPeriodMax; +} +alias TIMECAPS* PTIMECAPS, LPTIMECAPS; + +struct JOYCAPSA { + WORD wMid; + WORD wPid; + CHAR[MAXPNAMELEN] szPname; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + CHAR[MAXPNAMELEN] szRegKey; + CHAR[MAX_JOYSTICKOEMVXDNAME] szOEMVxD; +} +alias JOYCAPSA* PJOYCAPSA, LPJOYCAPSA; + +struct JOYCAPSW { + WORD wMid; + WORD wPid; + WCHAR[MAXPNAMELEN] szPname; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + WCHAR[MAXPNAMELEN] szRegKey; + WCHAR[MAX_JOYSTICKOEMVXDNAME] szOEMVxD; +} +alias JOYCAPSW* PJOYCAPSW, LPJOYCAPSW; + +struct JOYINFO { + UINT wXpos; + UINT wYpos; + UINT wZpos; + UINT wButtons; +} +alias JOYINFO* PJOYINFO, LPJOYINFO; + +struct JOYINFOEX { + DWORD dwSize; + DWORD dwFlags; + DWORD dwXpos; + DWORD dwYpos; + DWORD dwZpos; + DWORD dwRpos; + DWORD dwUpos; + DWORD dwVpos; + DWORD dwButtons; + DWORD dwButtonNumber; + DWORD dwPOV; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias JOYINFOEX* PJOYINFOEX, LPJOYINFOEX; + +alias DWORD FOURCC; +alias char* HPSTR; + +alias TypeDef!(HANDLE) HMMIO; + +alias LRESULT function (LPSTR, UINT, LPARAM, LPARAM) LPMMIOPROC; + +struct MMIOINFO { + DWORD dwFlags; + FOURCC fccIOProc; + LPMMIOPROC pIOProc; + UINT wErrorRet; + HTASK htask; + LONG cchBuffer; + HPSTR pchBuffer; + HPSTR pchNext; + HPSTR pchEndRead; + HPSTR pchEndWrite; + LONG lBufOffset; + LONG lDiskOffset; + DWORD[3] adwInfo; + DWORD dwReserved1; + DWORD dwReserved2; + HMMIO hmmio; +} +alias MMIOINFO* PMMIOINFO, LPMMIOINFO; +alias const(MMIOINFO)* LPCMMIOINFO; + +struct MMCKINFO { + FOURCC ckid; + DWORD cksize; + FOURCC fccType; + DWORD dwDataOffset; + DWORD dwFlags; +} +alias MMCKINFO* PMMCKINFO, LPMMCKINFO; +alias const(MMCKINFO)* LPCMMCKINFO; + +struct MCI_GENERIC_PARMS { + DWORD dwCallback; +} +alias MCI_GENERIC_PARMS* PMCI_GENERIC_PARMS, LPMCI_GENERIC_PARMS; + +struct MCI_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; +} +alias MCI_OPEN_PARMSA* PMCI_OPEN_PARMSA, LPMCI_OPEN_PARMSA; + +struct MCI_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; +} +alias MCI_OPEN_PARMSW* PMCI_OPEN_PARMSW, LPMCI_OPEN_PARMSW; + +struct MCI_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias MCI_PLAY_PARMS* PMCI_PLAY_PARMS, LPMCI_PLAY_PARMS; + +struct MCI_SEEK_PARMS { + DWORD dwCallback; + DWORD dwTo; +} +alias MCI_SEEK_PARMS* PMCI_SEEK_PARMS, LPMCI_SEEK_PARMS; + +struct MCI_STATUS_PARMS { + DWORD dwCallback; + DWORD dwReturn; + DWORD dwItem; + DWORD dwTrack; +} +alias MCI_STATUS_PARMS* PMCI_STATUS_PARMS, LPMCI_STATUS_PARMS; + +struct MCI_INFO_PARMSA { + DWORD dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; +} +alias MCI_INFO_PARMSA* LPMCI_INFO_PARMSA; + +struct MCI_INFO_PARMSW { + DWORD dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; +} +alias MCI_INFO_PARMSW* LPMCI_INFO_PARMSW; + +struct MCI_GETDEVCAPS_PARMS { + DWORD dwCallback; + DWORD dwReturn; + DWORD dwItem; +} +alias MCI_GETDEVCAPS_PARMS* PMCI_GETDEVCAPS_PARMS, LPMCI_GETDEVCAPS_PARMS; + +struct MCI_SYSINFO_PARMSA { + DWORD dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} +alias MCI_SYSINFO_PARMSA* PMCI_SYSINFO_PARMSA, LPMCI_SYSINFO_PARMSA; + +struct MCI_SYSINFO_PARMSW { + DWORD dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} +alias MCI_SYSINFO_PARMSW* PMCI_SYSINFO_PARMSW, LPMCI_SYSINFO_PARMSW; + +struct MCI_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +} +alias MCI_SET_PARMS* PMCI_SET_PARMS, LPMCI_SET_PARMS; + +struct MCI_BREAK_PARMS { + DWORD dwCallback; + int nVirtKey; + HWND hwndBreak; +} +alias MCI_BREAK_PARMS* PMCI_BREAK_PARMS, LPMCI_BREAK_PARMS; + +struct MCI_SAVE_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; +} +alias MCI_SAVE_PARMSA* PMCI_SAVE_PARMSA, LPMCI_SAVE_PARMSA; + +struct MCI_SAVE_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; +} +alias MCI_SAVE_PARMSW* PMCI_SAVE_PARMSW, LPMCI_SAVE_PARMSW; + +struct MCI_LOAD_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; +} +alias MCI_LOAD_PARMSA* PMCI_LOAD_PARMSA, LPMCI_LOAD_PARMSA; + +struct MCI_LOAD_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; +} +alias MCI_LOAD_PARMSW* PMCI_LOAD_PARMSW, LPMCI_LOAD_PARMSW; + +struct MCI_RECORD_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias MCI_RECORD_PARMS* LPMCI_RECORD_PARMS; + +struct MCI_VD_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} +alias MCI_VD_PLAY_PARMS* PMCI_VD_PLAY_PARMS, LPMCI_VD_PLAY_PARMS; + +struct MCI_VD_STEP_PARMS { + DWORD dwCallback; + DWORD dwFrames; +} +alias MCI_VD_STEP_PARMS* PMCI_VD_STEP_PARMS, LPMCI_VD_STEP_PARMS; + +struct MCI_VD_ESCAPE_PARMSA { + DWORD dwCallback; + LPCSTR lpstrCommand; +} +alias MCI_VD_ESCAPE_PARMSA* PMCI_VD_ESCAPE_PARMSA, LPMCI_VD_ESCAPE_PARMSA; + +struct MCI_VD_ESCAPE_PARMSW { + DWORD dwCallback; + LPCWSTR lpstrCommand; +} +alias MCI_VD_ESCAPE_PARMSW* PMCI_VD_ESCAPE_PARMSW, LPMCI_VD_ESCAPE_PARMSW; + +struct MCI_WAVE_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwBufferSeconds; +} +alias MCI_WAVE_OPEN_PARMSA* PMCI_WAVE_OPEN_PARMSA, LPMCI_WAVE_OPEN_PARMSA; + +struct MCI_WAVE_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwBufferSeconds; +} +alias MCI_WAVE_OPEN_PARMSW* PMCI_WAVE_OPEN_PARMSW, LPMCI_WAVE_OPEN_PARMSW; + +struct MCI_WAVE_DELETE_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias MCI_WAVE_DELETE_PARMS* PMCI_WAVE_DELETE_PARMS, LPMCI_WAVE_DELETE_PARMS; + +struct MCI_WAVE_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + UINT wInput; + UINT wOutput; + WORD wFormatTag; + WORD wReserved2; + WORD nChannels; + WORD wReserved3; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wReserved4; + WORD wBitsPerSample; + WORD wReserved5; +} +alias MCI_WAVE_SET_PARMS* PMCI_WAVE_SET_PARMS, LPMCI_WAVE_SET_PARMS; + +extern (Windows): +LRESULT CloseDriver(HDRVR, LONG, LONG); +HDRVR OpenDriver(LPCWSTR, LPCWSTR, LONG); +LRESULT SendDriverMessage(HDRVR, UINT, LONG, LONG); +HMODULE DrvGetModuleHandle(HDRVR); +HMODULE GetDriverModuleHandle(HDRVR); +LRESULT DefDriverProc(DWORD, HDRVR, UINT, LPARAM, LPARAM); +UINT mmsystemGetVersion(); +// FIXME: I believe this next line is a mistake +//alias OutputDebugString OutputDebugStr; +BOOL sndPlaySoundA(LPCSTR, UINT); +BOOL sndPlaySoundW(LPCWSTR, UINT); +BOOL PlaySoundA(LPCSTR, HMODULE, DWORD); +BOOL PlaySoundW(LPCWSTR, HMODULE, DWORD); +UINT waveOutGetNumDevs(); +MMRESULT waveOutGetDevCapsA(UINT, LPWAVEOUTCAPSA, UINT); +MMRESULT waveOutGetDevCapsW(UINT, LPWAVEOUTCAPSW, UINT); +MMRESULT waveOutGetVolume(HWAVEOUT, PDWORD); +MMRESULT waveOutSetVolume(HWAVEOUT, DWORD); +MMRESULT waveOutGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT waveOutGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT waveOutOpen(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD); +MMRESULT waveOutClose(HWAVEOUT); +MMRESULT waveOutPrepareHeader(HWAVEOUT, LPWAVEHDR, UINT); +MMRESULT waveOutUnprepareHeader(HWAVEOUT, LPWAVEHDR, UINT); +MMRESULT waveOutWrite(HWAVEOUT, LPWAVEHDR, UINT); +MMRESULT waveOutPause(HWAVEOUT); +MMRESULT waveOutRestart(HWAVEOUT); +MMRESULT waveOutReset(HWAVEOUT); +MMRESULT waveOutBreakLoop(HWAVEOUT); +MMRESULT waveOutGetPosition(HWAVEOUT, LPMMTIME, UINT); +MMRESULT waveOutGetPitch(HWAVEOUT, PDWORD); +MMRESULT waveOutSetPitch(HWAVEOUT, DWORD); +MMRESULT waveOutGetPlaybackRate(HWAVEOUT, PDWORD); +MMRESULT waveOutSetPlaybackRate(HWAVEOUT, DWORD); +MMRESULT waveOutGetID(HWAVEOUT, LPUINT); +MMRESULT waveOutMessage(HWAVEOUT, UINT, DWORD, DWORD); +UINT waveInGetNumDevs(); +MMRESULT waveInGetDevCapsA(UINT, LPWAVEINCAPSA, UINT); +MMRESULT waveInGetDevCapsW(UINT, LPWAVEINCAPSW, UINT); +MMRESULT waveInGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT waveInGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT waveInOpen(LPHWAVEIN, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD); +MMRESULT waveInClose(HWAVEIN); +MMRESULT waveInPrepareHeader(HWAVEIN, LPWAVEHDR, UINT); +MMRESULT waveInUnprepareHeader(HWAVEIN, LPWAVEHDR, UINT); +MMRESULT waveInAddBuffer(HWAVEIN, LPWAVEHDR, UINT); +MMRESULT waveInStart(HWAVEIN); +MMRESULT waveInStop(HWAVEIN); +MMRESULT waveInReset(HWAVEIN); +MMRESULT waveInGetPosition(HWAVEIN, LPMMTIME, UINT); +MMRESULT waveInGetID(HWAVEIN, LPUINT); +MMRESULT waveInMessage(HWAVEIN, UINT, DWORD, DWORD); +UINT midiOutGetNumDevs(); +MMRESULT midiStreamOpen(LPHMIDISTRM, LPUINT, DWORD, DWORD, DWORD, DWORD); +MMRESULT midiStreamClose(HMIDISTRM); +MMRESULT midiStreamProperty(HMIDISTRM, LPBYTE, DWORD); +MMRESULT midiStreamPosition(HMIDISTRM, LPMMTIME, UINT); +MMRESULT midiStreamOut(HMIDISTRM, LPMIDIHDR, UINT); +MMRESULT midiStreamPause(HMIDISTRM); +MMRESULT midiStreamRestart(HMIDISTRM); +MMRESULT midiStreamStop(HMIDISTRM); +MMRESULT midiConnect(HMIDI, HMIDIOUT, PVOID); +MMRESULT midiDisconnect(HMIDI, HMIDIOUT, PVOID); +MMRESULT midiOutGetDevCapsA(UINT, LPMIDIOUTCAPSA, UINT); +MMRESULT midiOutGetDevCapsW(UINT, LPMIDIOUTCAPSW, UINT); +MMRESULT midiOutGetVolume(HMIDIOUT, PDWORD); +MMRESULT midiOutSetVolume(HMIDIOUT, DWORD); +MMRESULT midiOutGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT midiOutGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT midiOutOpen(LPHMIDIOUT, UINT, DWORD, DWORD, DWORD); +MMRESULT midiOutClose(HMIDIOUT); +MMRESULT midiOutPrepareHeader(HMIDIOUT, LPMIDIHDR, UINT); +MMRESULT midiOutUnprepareHeader(HMIDIOUT, LPMIDIHDR, UINT); +MMRESULT midiOutShortMsg(HMIDIOUT, DWORD); +MMRESULT midiOutLongMsg(HMIDIOUT, LPMIDIHDR, UINT); +MMRESULT midiOutReset(HMIDIOUT); +MMRESULT midiOutCachePatches(HMIDIOUT, UINT, LPWORD, UINT); +MMRESULT midiOutCacheDrumPatches(HMIDIOUT, UINT, LPWORD, UINT); +MMRESULT midiOutGetID(HMIDIOUT, LPUINT); +MMRESULT midiOutMessage(HMIDIOUT, UINT, DWORD, DWORD); +UINT midiInGetNumDevs(); +MMRESULT midiInGetDevCapsA(UINT, LPMIDIINCAPSA, UINT); +MMRESULT midiInGetDevCapsW(UINT, LPMIDIINCAPSW, UINT); +MMRESULT midiInGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT midiInGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT midiInOpen(LPHMIDIIN, UINT, DWORD, DWORD, DWORD); +MMRESULT midiInClose(HMIDIIN); +MMRESULT midiInPrepareHeader(HMIDIIN, LPMIDIHDR, UINT); +MMRESULT midiInUnprepareHeader(HMIDIIN, LPMIDIHDR, UINT); +MMRESULT midiInAddBuffer(HMIDIIN, LPMIDIHDR, UINT); +MMRESULT midiInStart(HMIDIIN); +MMRESULT midiInStop(HMIDIIN); +MMRESULT midiInReset(HMIDIIN); +MMRESULT midiInGetID(HMIDIIN, LPUINT); +MMRESULT midiInMessage(HMIDIIN, UINT, DWORD, DWORD); +UINT auxGetNumDevs(); +MMRESULT auxGetDevCapsA(UINT, LPAUXCAPSA, UINT); +MMRESULT auxGetDevCapsW(UINT, LPAUXCAPSW, UINT); +MMRESULT auxSetVolume(UINT, DWORD); +MMRESULT auxGetVolume(UINT, PDWORD); +MMRESULT auxOutMessage(UINT, UINT, DWORD, DWORD); +UINT mixerGetNumDevs(); +MMRESULT mixerGetDevCapsA(UINT, LPMIXERCAPSA, UINT); +MMRESULT mixerGetDevCapsW(UINT, LPMIXERCAPSW, UINT); +MMRESULT mixerOpen(LPHMIXER, UINT, DWORD, DWORD, DWORD); +MMRESULT mixerClose(HMIXER); +DWORD mixerMessage(HMIXER, UINT, DWORD, DWORD); +MMRESULT mixerGetLineInfoA(HMIXEROBJ, LPMIXERLINEA, DWORD); +MMRESULT mixerGetLineInfoW(HMIXEROBJ, LPMIXERLINEW, DWORD); +MMRESULT mixerGetID(HMIXEROBJ, PUINT, DWORD); +MMRESULT mixerGetLineControlsA(HMIXEROBJ, LPMIXERLINECONTROLSA, DWORD); +MMRESULT mixerGetLineControlsW(HMIXEROBJ, LPMIXERLINECONTROLSW, DWORD); +MMRESULT mixerGetControlDetailsA(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); +MMRESULT mixerGetControlDetailsW(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); +MMRESULT mixerSetControlDetails(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); +MMRESULT timeGetSystemTime(LPMMTIME, UINT); +DWORD timeGetTime(); +MMRESULT timeSetEvent(UINT, UINT, LPTIMECALLBACK, DWORD, UINT); +MMRESULT timeKillEvent(UINT); +MMRESULT timeGetDevCaps(LPTIMECAPS, UINT); +MMRESULT timeBeginPeriod(UINT); +MMRESULT timeEndPeriod(UINT); +UINT joyGetNumDevs(); +MMRESULT joyGetDevCapsA(UINT, LPJOYCAPSA, UINT); +MMRESULT joyGetDevCapsW(UINT, LPJOYCAPSW, UINT); +MMRESULT joyGetPos(UINT, LPJOYINFO); +MMRESULT joyGetPosEx(UINT, LPJOYINFOEX); +MMRESULT joyGetThreshold(UINT, LPUINT); +MMRESULT joyReleaseCapture(UINT); +MMRESULT joySetCapture(HWND, UINT, UINT, BOOL); +MMRESULT joySetThreshold(UINT, UINT); +FOURCC mmioStringToFOURCCA(LPCSTR, UINT); +FOURCC mmioStringToFOURCCW(LPCWSTR, UINT); +LPMMIOPROC mmioInstallIOProcA(FOURCC, LPMMIOPROC, DWORD); +LPMMIOPROC mmioInstallIOProcW(FOURCC, LPMMIOPROC, DWORD); +HMMIO mmioOpenA(LPSTR, LPMMIOINFO, DWORD); +HMMIO mmioOpenW(LPWSTR, LPMMIOINFO, DWORD); +MMRESULT mmioRenameA(LPCSTR, LPCSTR, LPCMMIOINFO, DWORD); +MMRESULT mmioRenameW(LPCWSTR, LPCWSTR, LPCMMIOINFO, DWORD); +MMRESULT mmioClose(HMMIO, UINT); +LONG mmioRead(HMMIO, HPSTR, LONG); +LONG mmioWrite(HMMIO, LPCSTR, LONG); +LONG mmioSeek(HMMIO, LONG, int); +MMRESULT mmioGetInfo(HMMIO, LPMMIOINFO, UINT); +MMRESULT mmioSetInfo(HMMIO, LPCMMIOINFO, UINT); +MMRESULT mmioSetBuffer(HMMIO, LPSTR, LONG, UINT); +MMRESULT mmioFlush(HMMIO, UINT); +MMRESULT mmioAdvance(HMMIO, LPMMIOINFO, UINT); +LRESULT mmioSendMessage(HMMIO, UINT, LPARAM, LPARAM); +MMRESULT mmioDescend(HMMIO, LPMMCKINFO, const(MMCKINFO)*, UINT); +MMRESULT mmioAscend(HMMIO, LPMMCKINFO, UINT); +MMRESULT mmioCreateChunk(HMMIO, LPMMCKINFO, UINT); +MCIERROR mciSendCommandA(MCIDEVICEID, UINT, DWORD, DWORD); +MCIERROR mciSendCommandW(MCIDEVICEID, UINT, DWORD, DWORD); +MCIERROR mciSendStringA(LPCSTR, LPSTR, UINT, HWND); +MCIERROR mciSendStringW(LPCWSTR, LPWSTR, UINT, HWND); +MCIDEVICEID mciGetDeviceIDA(LPCSTR); +MCIDEVICEID mciGetDeviceIDW(LPCWSTR); +MCIDEVICEID mciGetDeviceIDFromElementIDA(DWORD, LPCSTR); +MCIDEVICEID mciGetDeviceIDFromElementIDW(DWORD, LPCWSTR); +BOOL mciGetErrorStringA(MCIERROR, LPSTR, UINT); +BOOL mciGetErrorStringW(MCIERROR, LPWSTR, UINT); +BOOL mciSetYieldProc(MCIDEVICEID, YIELDPROC, DWORD); +HTASK mciGetCreatorTask(MCIDEVICEID); +YIELDPROC mciGetYieldProc(MCIDEVICEID, PDWORD); + +struct MCI_SEQ_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + DWORD dwTempo; + DWORD dwPort; + DWORD dwSlave; + DWORD dwMaster; + DWORD dwOffset; +} +alias MCI_SEQ_SET_PARMS* PMCI_SEQ_SET_PARMS, LPMCI_SEQ_SET_PARMS; + +struct MCI_ANIM_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_ANIM_OPEN_PARMSA* PMCI_ANIM_OPEN_PARMSA, LPMCI_ANIM_OPEN_PARMSA; + +struct MCI_ANIM_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_ANIM_OPEN_PARMSW* PMCI_ANIM_OPEN_PARMSW, LPMCI_ANIM_OPEN_PARMSW; + +struct MCI_ANIM_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} +alias MCI_ANIM_PLAY_PARMS* PMCI_ANIM_PLAY_PARMS, LPMCI_ANIM_PLAY_PARMS; + +struct MCI_ANIM_STEP_PARMS { + DWORD dwCallback; + DWORD dwFrames; +} +alias MCI_ANIM_STEP_PARMS* PMCI_ANIM_STEP_PARMS, LPMCI_ANIM_STEP_PARMS; + +struct MCI_ANIM_WINDOW_PARMSA { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} +alias MCI_ANIM_WINDOW_PARMSA* PMCI_ANIM_WINDOW_PARMSA, LPMCI_ANIM_WINDOW_PARMSA; + +struct MCI_ANIM_WINDOW_PARMSW { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} +alias MCI_ANIM_WINDOW_PARMSW* PMCI_ANIM_WINDOW_PARMSW, LPMCI_ANIM_WINDOW_PARMSW; + +struct MCI_ANIM_RECT_PARMS { + DWORD dwCallback; + //#ifdef MCI_USE_OFFEXT + // POINT ptOffset; + // POINT ptExtent; + //#else + RECT rc; + //#endif +} +alias MCI_ANIM_RECT_PARMS* PMCI_ANIM_RECT_PARMS, LPMCI_ANIM_RECT_PARMS; + +struct MCI_ANIM_UPDATE_PARMS { + DWORD dwCallback; + RECT rc; + HDC hDC; +} +alias MCI_ANIM_UPDATE_PARMS* PMCI_ANIM_UPDATE_PARMS, LPMCI_ANIM_UPDATE_PARMS; + +struct MCI_OVLY_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_OVLY_OPEN_PARMSA* PMCI_OVLY_OPEN_PARMSA, LPMCI_OVLY_OPEN_PARMSA; + +struct MCI_OVLY_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_OVLY_OPEN_PARMSW* PMCI_OVLY_OPEN_PARMSW, LPMCI_OVLY_OPEN_PARMSW; + +struct MCI_OVLY_WINDOW_PARMSA { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} +alias MCI_OVLY_WINDOW_PARMSA* PMCI_OVLY_WINDOW_PARMSA, LPMCI_OVLY_WINDOW_PARMSA; + +struct MCI_OVLY_WINDOW_PARMSW { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} +alias MCI_OVLY_WINDOW_PARMSW* PMCI_OVLY_WINDOW_PARMSW, LPMCI_OVLY_WINDOW_PARMSW; + +struct MCI_OVLY_RECT_PARMS { + DWORD dwCallback; + //#ifdef MCI_USE_OFFEXT + // POINT ptOffset; + // POINT ptExtent; + //#else + RECT rc; + //#endif +} +alias MCI_OVLY_RECT_PARMS* PMCI_OVLY_RECT_PARMS, LPMCI_OVLY_RECT_PARMS; + +struct MCI_OVLY_SAVE_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_SAVE_PARMSA* PMCI_OVLY_SAVE_PARMSA, LPMCI_OVLY_SAVE_PARMSA; + +struct MCI_OVLY_SAVE_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_SAVE_PARMSW* PMCI_OVLY_SAVE_PARMSW, LPMCI_OVLY_SAVE_PARMSW; + +struct MCI_OVLY_LOAD_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_LOAD_PARMSA* PMCI_OVLY_LOAD_PARMSA, LPMCI_OVLY_LOAD_PARMSA; + +struct MCI_OVLY_LOAD_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_LOAD_PARMSW* PMCI_OVLY_LOAD_PARMSW, LPMCI_OVLY_LOAD_PARMSW; + +version(Unicode) { + alias WAVEOUTCAPSW WAVEOUTCAPS; + alias WAVEINCAPSW WAVEINCAPS; + alias MIDIOUTCAPSW MIDIOUTCAPS; + alias MIDIINCAPSW MIDIINCAPS; + alias AUXCAPSW AUXCAPS; + alias MIXERCAPSW MIXERCAPS; + alias MIXERLINEW MIXERLINE; + alias MIXERCONTROLA MIXERCONTROL; + alias MIXERLINECONTROLSW MIXERLINECONTROLS; + alias MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT; + alias JOYCAPSW JOYCAPS; + alias MCI_OPEN_PARMSW MCI_OPEN_PARMS; + alias MCI_INFO_PARMSW MCI_INFO_PARMS; + alias MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS; + alias MCI_SAVE_PARMSW MCI_SAVE_PARMS; + alias MCI_LOAD_PARMSW MCI_LOAD_PARMS; + alias MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS; + alias MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS; + alias MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS; + alias MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS; + alias MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS; + alias MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS; + alias MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS; + + alias sndPlaySoundW sndPlaySound; + alias PlaySoundW PlaySound; + alias waveOutGetDevCapsW waveOutGetDevCaps; + alias waveOutGetErrorTextW waveOutGetErrorText; + alias waveInGetDevCapsW waveInGetDevCaps; + alias waveInGetErrorTextW waveInGetErrorText; + alias midiOutGetDevCapsW midiOutGetDevCaps; + alias midiOutGetErrorTextW midiOutGetErrorText; + alias midiInGetDevCapsW midiInGetDevCaps; + alias midiInGetErrorTextW midiInGetErrorText; + alias auxGetDevCapsW auxGetDevCaps; + alias mixerGetDevCapsW mixerGetDevCaps; + alias mixerGetLineInfoW mixerGetLineInfo; + alias mixerGetLineControlsW mixerGetLineControls; + alias mixerGetControlDetailsW mixerGetControlDetails; + alias joyGetDevCapsW joyGetDevCaps; + alias mmioInstallIOProcW mmioInstallIOProc; + alias mmioStringToFOURCCW mmioStringToFOURCC; + alias mmioOpenW mmioOpen; + alias mmioRenameW mmioRename; + alias mciSendCommandW mciSendCommand; + alias mciSendStringW mciSendString; + alias mciGetDeviceIDW mciGetDeviceID; + alias mciGetDeviceIDFromElementIDW mciGetDeviceIDFromElementID; + alias mciGetErrorStringW mciGetErrorString; + +} else { + alias WAVEOUTCAPSA WAVEOUTCAPS; + alias WAVEINCAPSA WAVEINCAPS; + alias MIDIOUTCAPSA MIDIOUTCAPS; + alias MIDIINCAPSA MIDIINCAPS; + alias AUXCAPSA AUXCAPS; + alias MIXERCAPSA MIXERCAPS; + alias MIXERLINEA MIXERLINE; + alias MIXERCONTROLA MIXERCONTROL; + alias MIXERLINECONTROLSA MIXERLINECONTROLS; + alias MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT; + alias JOYCAPSA JOYCAPS; + alias MCI_OPEN_PARMSA MCI_OPEN_PARMS; + alias MCI_INFO_PARMSA MCI_INFO_PARMS; + alias MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS; + alias MCI_SAVE_PARMSA MCI_SAVE_PARMS; + alias MCI_LOAD_PARMSA MCI_LOAD_PARMS; + alias MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS; + alias MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS; + alias MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS; + alias MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS; + alias MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS; + alias MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS; + alias MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS; + + alias sndPlaySoundA sndPlaySound; + alias PlaySoundA PlaySound; + alias waveOutGetDevCapsA waveOutGetDevCaps; + alias waveOutGetErrorTextA waveOutGetErrorText; + alias waveInGetDevCapsA waveInGetDevCaps; + alias waveInGetErrorTextA waveInGetErrorText; + alias midiOutGetDevCapsA midiOutGetDevCaps; + alias midiOutGetErrorTextA midiOutGetErrorText; + alias midiInGetDevCapsA midiInGetDevCaps; + alias midiInGetErrorTextA midiInGetErrorText; + alias auxGetDevCapsA auxGetDevCaps; + alias mixerGetDevCapsA mixerGetDevCaps; + alias mixerGetLineInfoA mixerGetLineInfo; + alias mixerGetLineControlsA mixerGetLineControls; + alias mixerGetControlDetailsA mixerGetControlDetails; + alias joyGetDevCapsA joyGetDevCaps; + alias mmioInstallIOProcA mmioInstallIOProc; + alias mmioStringToFOURCCA mmioStringToFOURCC; + alias mmioOpenA mmioOpen; + alias mmioRenameA mmioRename; + alias mciSendCommandA mciSendCommand; + alias mciSendStringA mciSendString; + alias mciGetDeviceIDA mciGetDeviceID; + alias mciGetDeviceIDFromElementIDA mciGetDeviceIDFromElementID; + alias mciGetErrorStringA mciGetErrorString; +} + +alias WAVEOUTCAPS* PWAVEOUTCAPS, LPWAVEOUTCAPS; +alias WAVEINCAPS* PWAVEINCAPS, LPWAVEINCAPS; +alias MIDIOUTCAPS* PMIDIOUTCAPS, LPMIDIOUTCAPS; +alias MIDIINCAPS* PMIDIINCAPS, LPMIDIINCAPS; +alias AUXCAPS* PAUXCAPS, LPAUXCAPS; +alias MIXERCAPS* PMIXERCAPS, LPMIXERCAPS; +alias MIXERLINE* PMIXERLINE, LPMIXERLINE; +alias MIXERCONTROL* PMIXERCONTROL, LPMIXERCONTROL; +alias MIXERLINECONTROLS* PMIXERLINECONTROLS, LPMIXERLINECONTROLS; +alias MIXERCONTROLDETAILS_LISTTEXT* PMIXERCONTROLDETAILS_LISTTEXT, LPMIXERCONTROLDETAILS_LISTTEXT; +alias JOYCAPS* PJOYCAPS, LPJOYCAPS; +alias MCI_OPEN_PARMS* PMCI_OPEN_PARMS, LPMCI_OPEN_PARMS; +alias MCI_INFO_PARMS* LPMCI_INFO_PARMS; +alias MCI_SYSINFO_PARMS* PMCI_SYSINFO_PARMS, LPMCI_SYSINFO_PARMS; +alias MCI_SAVE_PARMS* PMCI_SAVE_PARMS, LPMCI_SAVE_PARMS; +alias MCI_LOAD_PARMS* PMCI_LOAD_PARMS, LPMCI_LOAD_PARMS; +alias MCI_VD_ESCAPE_PARMS* PMCI_VD_ESCAPE_PARMS, LPMCI_VD_ESCAPE_PARMS; +alias MCI_WAVE_OPEN_PARMS* PMCI_WAVE_OPEN_PARMS, LPMCI_WAVE_OPEN_PARMS; +alias MCI_ANIM_OPEN_PARMS* PMCI_ANIM_OPEN_PARMS, LPMCI_ANIM_OPEN_PARMS; +alias MCI_ANIM_WINDOW_PARMS* PMCI_ANIM_WINDOW_PARMS, LPMCI_ANIM_WINDOW_PARMS; +alias MCI_OVLY_OPEN_PARMS* PMCI_OVLY_OPEN_PARMS, LPMCI_OVLY_OPEN_PARMS; +alias MCI_OVLY_WINDOW_PARMS* PMCI_OVLY_WINDOW_PARMS, LPMCI_OVLY_WINDOW_PARMS; +alias MCI_OVLY_SAVE_PARMS* PMCI_OVLY_SAVE_PARMS, LPMCI_OVLY_SAVE_PARMS; diff --git a/src/core/sys/windows/msacm.d b/src/core/sys/windows/msacm.d new file mode 100644 index 0000000000..7e0facc506 --- /dev/null +++ b/src/core/sys/windows/msacm.d @@ -0,0 +1,173 @@ +/***********************************************************************\ +* msacm.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.msacm; + +private import win32.basetsd, win32.mmsystem, win32.windef; + +mixin DECLARE_HANDLE!("HACMDRIVERID"); +mixin DECLARE_HANDLE!("HACMDRIVER"); +alias HACMDRIVER* LPHACMDRIVER; + +/* Comment from MinGW + found through experimentation + */ +const size_t + ACMDRIVERDETAILS_SHORTNAME_CHARS = 32, + ACMDRIVERDETAILS_LONGNAME_CHARS = 128, + ACMDRIVERDETAILS_COPYRIGHT_CHARS = 80, + ACMDRIVERDETAILS_LICENSING_CHARS = 128; + +/* Comment from MinGW + I don't know the right values for these macros + */ +const size_t + ACMFORMATDETAILS_FORMAT_CHARS = 256, + ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 256, + ACMDRIVERDETAILS_FEATURES_CHARS = 256; + +struct ACMFORMATDETAILSA { + DWORD cbStruct = ACMFORMATDETAILSA.sizeof; // are they? + DWORD dwFormatIndex; + DWORD dwFormatTag; + DWORD fdwSupport; + LPWAVEFORMATEX pwfx; + DWORD cbwfx; + char[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; +} +alias ACMFORMATDETAILSA* LPACMFORMATDETAILSA; + +struct ACMFORMATDETAILSW { + DWORD cbStruct = ACMFORMATDETAILSW.sizeof; + DWORD dwFormatIndex; + DWORD dwFormatTag; + DWORD fdwSupport; + LPWAVEFORMATEX pwfx; + DWORD cbwfx; + WCHAR[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; +} +alias ACMFORMATDETAILSW* LPACMFORMATDETAILSW; + +struct ACMFORMATTAGDETAILSA { + DWORD cbStruct = ACMFORMATTAGDETAILSA.sizeof; + DWORD dwFormatTagIndex; + DWORD dwFormatTag; + DWORD cbFormatSize; + DWORD fdwSupport; + DWORD cStandardFormats; + char[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; +} +alias ACMFORMATTAGDETAILSA* LPACMFORMATTAGDETAILSA; + +struct ACMFORMATTAGDETAILSW { + DWORD cbStruct = ACMFORMATTAGDETAILSW.sizeof; + DWORD dwFormatTagIndex; + DWORD dwFormatTag; + DWORD cbFormatSize; + DWORD fdwSupport; + DWORD cStandardFormats; + WCHAR[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; +} +alias ACMFORMATTAGDETAILSW* LPACMFORMATTAGDETAILSW; + +struct ACMDRIVERDETAILSA { + DWORD cbStruct = ACMDRIVERDETAILSA.sizeof; + FOURCC fccType; + FOURCC fccComp; + WORD wMid; + WORD wPid; + DWORD vdwACM; + DWORD vdwDriver; + DWORD fdwSupport; + DWORD cFormatTags; + DWORD cFilterTags; + HICON hicon; + char[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; + char[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; + char[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; + char[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; + char[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; +} +alias ACMDRIVERDETAILSA* LPACMDRIVERDETAILSA; + +struct ACMDRIVERDETAILSW { + DWORD cbStruct = ACMDRIVERDETAILSW.sizeof; + FOURCC fccType; + FOURCC fccComp; + WORD wMid; + WORD wPid; + DWORD vdwACM; + DWORD vdwDriver; + DWORD fdwSupport; + DWORD cFormatTags; + DWORD cFilterTags; + HICON hicon; + WCHAR[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; + WCHAR[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; + WCHAR[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; + WCHAR[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; + WCHAR[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; +} +alias ACMDRIVERDETAILSW* LPACMDRIVERDETAILSW; + +extern (Windows) { + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSA pafd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBA; + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSW pafd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBW; + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSA paftd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBA; + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSW paftd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBW; + alias BOOL function(HACMDRIVERID hadid, DWORD_PTR dwInstance, + DWORD fdwSupport) ACMDRIVERENUMCB; + + MMRESULT acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, + DWORD fdwOpen); + MMRESULT acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, + DWORD fdwEnum); + MMRESULT acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, + ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); + MMRESULT acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, + ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); + MMRESULT acmDriverClose(HACMDRIVER had, DWORD fdwClose); + MMRESULT acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, + DWORD fdwDetails); + MMRESULT acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, + DWORD fdwDetails); + MMRESULT acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, + ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); + MMRESULT acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, + ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); +} + +version (Unicode) { + alias ACMFORMATDETAILSW ACMFORMATDETAILS; + alias ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS; + alias ACMDRIVERDETAILSW ACMDRIVERDETAILS; + alias ACMFORMATENUMCBW ACMFORMATENUMCB; + alias ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB; + alias acmFormatEnumW acmFormatEnum; + alias acmDriverDetailsW acmDriverDetails; + alias acmFormatTagEnumW acmFormatTagEnum; +} else { + alias ACMFORMATDETAILSA ACMFORMATDETAILS; + alias ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS; + alias ACMDRIVERDETAILSA ACMDRIVERDETAILS; + alias ACMFORMATENUMCBA ACMFORMATENUMCB; + alias ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB; + alias acmFormatEnumA acmFormatEnum; + alias acmDriverDetailsA acmDriverDetails; + alias acmFormatTagEnumA acmFormatTagEnum; +} + +alias ACMFORMATDETAILS* LPACMFORMATDETAILS; +alias ACMFORMATTAGDETAILS* LPACMFORMATTAGDETAILS; +alias ACMDRIVERDETAILS* LPACMDRIVERDETAILS; diff --git a/src/core/sys/windows/mshtml.d b/src/core/sys/windows/mshtml.d new file mode 100644 index 0000000000..d3120367d2 --- /dev/null +++ b/src/core/sys/windows/mshtml.d @@ -0,0 +1,536 @@ +/***********************************************************************\ +* mshtml.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mshtml; + +private import win32.basetyps, win32.oaidl, win32.unknwn, + win32.windef, win32.wtypes; + +// These are used in this file, but not defined in MinGW. +interface IHTMLStyleSheet {}; +alias IHTMLStyle LPHTMLSTYLE; +alias IHTMLStyleSheet LPHTMLSTYLESHEET; +interface IHTMLLocation {}; +alias IHTMLLocation LPHTMLLOCATION; +interface IHTMLFramesCollection {}; +alias IHTMLFramesCollection LPHTMLFRAMESCOLLECTION; +interface IHTMLStyleSheetsCollection {}; +alias IHTMLStyleSheetsCollection LPHTMLSTYLESHEETSCOLLECTION; +interface IHTMLStyle {}; +interface IHTMLFiltersCollection {}; +alias IHTMLFiltersCollection LPHTMLFILTERSCOLLECTION; +interface IOmHistory : IDispatch { + HRESULT get_length(short* p); + HRESULT back(VARIANT*); + HRESULT forward(VARIANT*); + HRESULT go(VARIANT*); +}; +alias IOmHistory LPOMHISTORY; +interface IOmNavigator {}; +alias IOmNavigator LPOMNAVIGATOR; +interface IHTMLImageElementFactory {}; +alias IHTMLImageElementFactory LPHTMLIMAGEELEMENTFACTORY; +interface IHTMLEventObj {}; +alias IHTMLEventObj LPHTMLEVENTOBJ; +interface IHTMLScreen {}; +alias IHTMLScreen LPHTMLSCREEN; +interface IHTMLOptionElementFactory {}; +alias IHTMLOptionElementFactory LPHTMLOPTIONELEMENTFACTORY; + +interface IHTMLLinkElement : IDispatch { + HRESULT put_href(BSTR); + HRESULT get_href(BSTR*); + HRESULT put_rel(BSTR); + HRESULT get_rel(BSTR*); + HRESULT put_rev(BSTR); + HRESULT get_rev(BSTR*); + HRESULT put_type(BSTR); + HRESULT get_type(BSTR*); + HRESULT get_readyState(BSTR*); + HRESULT put_onreadystatechange(VARIANT); + HRESULT get_onreadystatechange(VARIANT*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onerror(VARIANT); + HRESULT get_onerror(VARIANT*); + HRESULT get_styleSheet(LPHTMLSTYLESHEET*); + HRESULT put_disabled(VARIANT_BOOL); + HRESULT get_disabled(VARIANT_BOOL*); + HRESULT put_media(BSTR); + HRESULT get_media(BSTR*); +} +alias IHTMLLinkElement LPHTMLLINKELEMENT; + +interface IHTMLImgElement : IDispatch { + HRESULT put_isMap(VARIANT_BOOL); + HRESULT get_isMap(VARIANT_BOOL*); + HRESULT put_useMap(BSTR); + HRESULT get_useMap(BSTR*); + HRESULT get_mimeType(BSTR*); + HRESULT get_fileSize(BSTR*); + HRESULT get_fileCreatedDate(BSTR*); + HRESULT get_fileModifiedDate(BSTR*); + HRESULT get_fileUpdatedDate(BSTR*); + HRESULT get_protocol(BSTR*); + HRESULT get_href(BSTR*); + HRESULT get_nameProp(BSTR*); + HRESULT put_border(VARIANT); + HRESULT get_border(VARIANT*); + HRESULT put_vspace(LONG); + HRESULT get_vspace(LONG*); + HRESULT put_hspace(LONG); + HRESULT get_hspace(LONG*); + HRESULT put_alt(BSTR); + HRESULT get_alt(BSTR*); + HRESULT put_src(BSTR); + HRESULT get_src(BSTR*); + HRESULT put_lowsrc(BSTR); + HRESULT get_lowsrc(BSTR*); + HRESULT put_vrml(BSTR); + HRESULT get_vrml(BSTR*); + HRESULT put_dynsrc(BSTR); + HRESULT get_dynsrc(BSTR*); + HRESULT get_readyState(BSTR*); + HRESULT get_complete(VARIANT_BOOL*); + HRESULT put_loop(VARIANT); + HRESULT get_loop(VARIANT*); + HRESULT put_align(BSTR); + HRESULT get_align(BSTR*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onerror(VARIANT); + HRESULT get_onerror(VARIANT*); + HRESULT put_onabort(VARIANT); + HRESULT get_onabort(VARIANT*); + HRESULT put_name(BSTR); + HRESULT get_name(BSTR*); + HRESULT put_width(LONG); + HRESULT get_width(LONG*); + HRESULT put_height(LONG); + HRESULT get_height(LONG*); + HRESULT put_start(BSTR); + HRESULT get_start(BSTR*); +} +alias IHTMLImgElement LPHTMLIMGELEMENT; + +interface IHTMLElementCollection : IDispatch { + HRESULT toString(BSTR*); + HRESULT put_length(LONG); + HRESULT get_length(LONG*); + HRESULT get__newEnum(IUnknown*); + HRESULT item(VARIANT,VARIANT,IDispatch* pDisp); + HRESULT tags(VARIANT,IDispatch* pdisp); +} +alias IHTMLElementCollection LPHTMLELEMENTCOLLECTION; + +interface IHTMLDocument : IDispatch { + HRESULT get_Script(IDispatch*); +} + +interface IHTMLDocument2 : IHTMLDocument { + HRESULT get_all(LPHTMLELEMENTCOLLECTION*); + HRESULT get_body(LPHTMLELEMENT*); + HRESULT get_activeElement(LPHTMLELEMENT*); + HRESULT get_images(LPHTMLELEMENTCOLLECTION*); + HRESULT get_applets(LPHTMLELEMENTCOLLECTION*); + HRESULT get_links(LPHTMLELEMENTCOLLECTION*); + HRESULT get_forms(LPHTMLELEMENTCOLLECTION*); + HRESULT get_anchors(LPHTMLELEMENTCOLLECTION*); + HRESULT put_title(BSTR); + HRESULT get_title(BSTR*); + HRESULT get_scripts(LPHTMLELEMENTCOLLECTION*); + HRESULT put_designMode(BSTR); + HRESULT get_designMode(BSTR*); + HRESULT get_selection(LPHTMLSELECTIONOBJECT*); + HRESULT get_readyState(BSTR*); + HRESULT get_frames(IHTMLFramesCollection2*); + HRESULT get_embeds(LPHTMLELEMENTCOLLECTION*); + HRESULT get_plugins(LPHTMLELEMENTCOLLECTION*); + HRESULT put_alinkColor(VARIANT); + HRESULT get_alinkColor(VARIANT*); + HRESULT put_bgColor(VARIANT); + HRESULT get_bgColor(VARIANT*); + HRESULT put_fgColor(VARIANT); + HRESULT get_fgColor(VARIANT*); + HRESULT put_linkColor(VARIANT); + HRESULT get_linkColor(VARIANT*); + HRESULT put_vlinkColor(VARIANT); + HRESULT get_vlinkColor(VARIANT*); + HRESULT get_referrer(BSTR*); + HRESULT get_location(LPHTMLLOCATION*); + HRESULT get_lastModified(BSTR*); + HRESULT put_url(BSTR); + HRESULT get_url(BSTR*); + HRESULT put_domain(BSTR); + HRESULT get_domain(BSTR*); + HRESULT put_cookie(BSTR); + HRESULT get_cookie(BSTR*); + HRESULT put_expands(VARIANT_BOOL); + HRESULT get_expands(VARIANT_BOOL*); + HRESULT put_charset(BSTR); + HRESULT get_charset(BSTR*); + HRESULT put_defaultCharset(BSTR); + HRESULT get_defaultCharset(BSTR*); + HRESULT get_mimeType(BSTR*); + HRESULT get_fileSize(BSTR*); + HRESULT get_fileCreatedDate(BSTR*); + HRESULT get_fileModifiedDate(BSTR*); + HRESULT get_fileUpdatedDate(BSTR*); + HRESULT get_security(BSTR*); + HRESULT get_protocol(BSTR*); + HRESULT get_nameProp(BSTR*); + HRESULT write(SAFEARRAY*); + HRESULT writeln(SAFEARRAY*); + HRESULT open(BSTR,VARIANT,VARIANT,VARIANT,IDispatch*); + HRESULT close(); + HRESULT clear(); + HRESULT queryCommandSupported(BSTR,VARIANT_BOOL*); + HRESULT queryCommandEnabled(BSTR,VARIANT_BOOL*); + HRESULT queryCommandState(BSTR,VARIANT_BOOL*); + HRESULT queryCommandIndeterm(BSTR,VARIANT_BOOL*); + HRESULT queryCommandText(BSTR,BSTR*); + HRESULT queryCommandValue(BSTR,VARIANT*); + HRESULT execCommand(BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*); + HRESULT execCommandShowHelp(BSTR,VARIANT_BOOL*); + HRESULT createElement(BSTR,LPHTMLELEMENT*); + HRESULT put_onhelp(VARIANT); + HRESULT get_onhelp(VARIANT*); + HRESULT put_onclick(VARIANT); + HRESULT get_onclick(VARIANT*); + HRESULT put_ondblclick(VARIANT); + HRESULT get_ondblclick(VARIANT*); + HRESULT put_onkeyup(VARIANT); + HRESULT get_onkeyup(VARIANT*); + HRESULT put_onkeydown(VARIANT); + HRESULT get_onkeydown(VARIANT*); + HRESULT put_onkeypress(VARIANT); + HRESULT get_onkeypress(VARIANT*); + HRESULT put_onmouseup(VARIANT); + HRESULT get_onmouseup(VARIANT*); + HRESULT put_onmousedown(VARIANT); + HRESULT get_onmousedown(VARIANT*); + HRESULT put_onmousemove(VARIANT); + HRESULT get_onmousemove(VARIANT*); + HRESULT put_onmouseout(VARIANT); + HRESULT get_onmouseout(VARIANT*); + HRESULT put_onmouseover(VARIANT); + HRESULT get_onmouseover(VARIANT*); + HRESULT put_onreadystatechange(VARIANT); + HRESULT get_onreadystatechange(VARIANT*); + HRESULT put_onafterupdate(VARIANT); + HRESULT get_onafterupdate(VARIANT*); + HRESULT put_onrowexit(VARIANT); + HRESULT get_onrowexit(VARIANT*); + HRESULT put_onrowenter(VARIANT); + HRESULT get_onrowenter(VARIANT*); + HRESULT put_ondragstart(VARIANT); + HRESULT get_ondragstart(VARIANT*); + HRESULT put_onselectstart(VARIANT); + HRESULT get_onselectstart(VARIANT*); + HRESULT elementFromPoint(LONG,LONG,LPHTMLELEMENT*); + HRESULT get_parentWindow(LPHTMLWINDOW2*); + HRESULT get_styleSheets(LPHTMLSTYLESHEETSCOLLECTION*); + HRESULT put_onbeforeupdate(VARIANT); + HRESULT get_onbeforeupdate(VARIANT*); + HRESULT put_onerrorupdate(VARIANT); + HRESULT get_onerrorupdate(VARIANT*); + HRESULT toString(BSTR*); + HRESULT createStyleSheet(BSTR,LONG,LPHTMLSTYLESHEET*); +} + +interface IHTMLSelectionObject : IDispatch { + HRESULT createRange(IDispatch*); + HRESULT empty(); + HRESULT clear(); + HRESULT get_type(BSTR*); +} +alias IHTMLSelectionObject LPHTMLSELECTIONOBJECT; + +interface IHTMLTxtRange : IDispatch { + HRESULT get_htmlText(BSTR*); + HRESULT put_text(BSTR); + HRESULT get_text(BSTR*); + HRESULT parentElement(LPHTMLELEMENT*); + HRESULT duplicate(IHTMLTxtRange*); + HRESULT inRange(IHTMLTxtRange,VARIANT_BOOL*); + HRESULT isEqual(IHTMLTxtRange,VARIANT_BOOL*); + HRESULT scrollIntoView(VARIANT_BOOL); + HRESULT collapse(VARIANT_BOOL); + HRESULT expand(BSTR,VARIANT_BOOL*); + HRESULT move(BSTR,LONG,LONG*); + HRESULT moveStart(BSTR,LONG,LONG*); + HRESULT moveEnd(BSTR,LONG,LONG*); + HRESULT select(); + HRESULT pasteHTML(BSTR); + HRESULT moveToElementText(LPHTMLELEMENT); + HRESULT setEndPoint(BSTR,IHTMLTxtRange); + HRESULT compareEndPoints(BSTR,IHTMLTxtRange,LONG*); + HRESULT findText(BSTR,LONG,LONG,VARIANT_BOOL*); + HRESULT moveToPoint(LONG,LONG); + HRESULT getBookmark(BSTR*); + HRESULT moveToBookbark(BSTR,VARIANT_BOOL*); + HRESULT queryCommandSupported(BSTR,VARIANT_BOOL*); + HRESULT queryCommandEnabled(BSTR,VARIANT_BOOL*); + HRESULT queryCommandState(BSTR,VARIANT_BOOL*); + HRESULT queryCommandIndeterm(BSTR,VARIANT_BOOL*); + HRESULT queryCommandText(BSTR,BSTR*); + HRESULT queryCommandValue(BSTR,VARIANT*); + HRESULT execCommand(BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*); + HRESULT execCommandShowHelp(BSTR,VARIANT_BOOL*); +} + +interface IHTMLElement : IDispatch { + HRESULT setAttribute(BSTR,VARIANT,LONG); + HRESULT getAttribute(BSTR,LONG,VARIANT*); + HRESULT removeAttribute(BSTR,LONG,VARIANT_BOOL*); + HRESULT put_className(BSTR); + HRESULT get_className(ref BSTR); + HRESULT put_id(BSTR); + HRESULT get_id(ref BSTR); + HRESULT get_tagName(ref BSTR); + HRESULT get_parentElement(LPHTMLELEMENT*); + HRESULT get_style(LPHTMLSTYLE*); + HRESULT put_onhelp(VARIANT); + HRESULT get_onhelp(VARIANT*); + HRESULT put_onclick(VARIANT); + HRESULT get_onclick(VARIANT*); + HRESULT put_ondblclick(VARIANT); + HRESULT get_ondblclick(VARIANT*); + HRESULT put_onkeydown(VARIANT); + HRESULT get_onkeydown(VARIANT*); + HRESULT put_onkeyup(VARIANT); + HRESULT get_onkeyup(VARIANT*); + HRESULT put_onkeypress(VARIANT); + HRESULT get_onkeypress(VARIANT*); + HRESULT put_onmouseout(VARIANT); + HRESULT get_onmouseout(VARIANT*); + HRESULT put_onmouseover(VARIANT); + HRESULT get_onmouseover(VARIANT*); + HRESULT put_onmousemove(VARIANT); + HRESULT get_onmousemove(VARIANT*); + HRESULT put_onmousedown(VARIANT); + HRESULT get_onmousedown(VARIANT*); + HRESULT put_onmouseup(VARIANT); + HRESULT get_onmouseup(VARIANT*); + HRESULT get_document(IDispatch*); + HRESULT put_title(BSTR); + HRESULT get_title(ref BSTR); + HRESULT put_language(BSTR); + HRESULT get_language(ref BSTR); + HRESULT put_onselectstart(VARIANT); + HRESULT get_onselectstart(VARIANT*); + HRESULT scrollIntoView(VARIANT); + HRESULT contains(LPHTMLELEMENT,VARIANT_BOOL*); + HRESULT get_source3Index(LONG*); + HRESULT get_recordNumber(VARIANT*); + HRESULT put_lang(BSTR); + HRESULT get_lang(ref BSTR); + HRESULT get_offsetLeft(LONG*); + HRESULT get_offsetTop(LONG*); + HRESULT get_offsetWidth(LONG*); + HRESULT get_offsetHeight(LONG*); + HRESULT get_offsetParent(LPHTMLELEMENT*); + HRESULT put_innerHTML(BSTR); + HRESULT get_innerHTML(ref BSTR); + HRESULT put_innerText(BSTR); + HRESULT get_innerText(ref BSTR); + HRESULT put_outerHTML(BSTR); + HRESULT get_outerHTML(ref BSTR); + HRESULT put_outerText(BSTR); + HRESULT get_outerText(ref BSTR); + HRESULT insertAdjacentHTML(BSTR,BSTR); + HRESULT insertAdjacentText(BSTR,BSTR); + HRESULT get_parentTextEdit(LPHTMLELEMENT*); + HRESULT isTextEdit(VARIANT_BOOL*); + HRESULT click(); + HRESULT get_filters(LPHTMLFILTERSCOLLECTION*); + HRESULT put_ondragstart(VARIANT); + HRESULT get_ondragstart(VARIANT*); + HRESULT toString(BSTR*); + HRESULT put_onbeforeupdate(VARIANT); + HRESULT get_onbeforeupdate(VARIANT*); + HRESULT put_onafterupdate(VARIANT); + HRESULT get_onafterupdate(VARIANT*); + HRESULT put_onerrorupdate(VARIANT); + HRESULT get_onerrorupdate(VARIANT*); + HRESULT put_onrowexit(VARIANT); + HRESULT get_onrowexit(VARIANT*); + HRESULT put_onrowenter(VARIANT); + HRESULT get_onrowenter(VARIANT*); + HRESULT put_ondatasetchanged(VARIANT); + HRESULT get_ondatasetchanged(VARIANT*); + HRESULT put_ondataavailable(VARIANT); + HRESULT get_ondataavailable(VARIANT*); + HRESULT put_ondatasetcomplete(VARIANT); + HRESULT get_ondatasetcomplete(VARIANT*); + HRESULT put_onfilterchange(VARIANT); + HRESULT get_onfilterchange(VARIANT*); + HRESULT get_children(IDispatch*); + HRESULT get_all(IDispatch*); +} +alias IHTMLElement LPHTMLELEMENT; + +interface IHTMLFramesCollection2 : IDispatch { + HRESULT item(VARIANT*,VARIANT*); + HRESULT get_length(LONG*); +} + +interface IHTMLWindow2 : IHTMLFramesCollection2 { + HRESULT get_frames(IHTMLFramesCollection2*); + HRESULT put_defaultStatus(BSTR); + HRESULT get_defaultStatus(BSTR*); + HRESULT put_status(BSTR); + HRESULT get_status(BSTR*); + HRESULT setTimeout(BSTR,LONG,VARIANT*,LONG*); + HRESULT clearTimeout(LONG); + HRESULT alert(BSTR); + HRESULT confirm(BSTR,VARIANT_BOOL*); + HRESULT prompt(BSTR,BSTR,VARIANT*); + HRESULT get_Image(LPHTMLIMAGEELEMENTFACTORY*); + HRESULT get_location(LPHTMLLOCATION*); + HRESULT get_history(LPOMHISTORY*); + HRESULT close(); + HRESULT put_opener(VARIANT); + HRESULT get_opener(VARIANT*); + HRESULT get_navigator(LPOMNAVIGATOR*); + HRESULT put_name(BSTR); + HRESULT get_name(BSTR*); + HRESULT get_parent(LPHTMLWINDOW2*); + HRESULT open(BSTR,BSTR,BSTR,VARIANT_BOOL,LPHTMLWINDOW2*); + HRESULT get_self(LPHTMLWINDOW2*); + HRESULT get_top(LPHTMLWINDOW2*); + HRESULT get_window(LPHTMLWINDOW2*); + HRESULT navigate(BSTR); + HRESULT put_onfocus(VARIANT); + HRESULT get_onfocus(VARIANT*); + HRESULT put_onblur(VARIANT); + HRESULT get_onblur(VARIANT*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onbeforeunload(VARIANT); + HRESULT get_onbeforeunload(VARIANT*); + HRESULT put_onunload(VARIANT); + HRESULT get_onunload(VARIANT*); + HRESULT put_onhelp(VARIANT); + HRESULT get_onhelp(VARIANT*); + HRESULT put_onerror(VARIANT); + HRESULT get_onerror(VARIANT*); + HRESULT put_onresize(VARIANT); + HRESULT get_onresize(VARIANT*); + HRESULT put_onscroll(VARIANT); + HRESULT get_onscroll(VARIANT*); + HRESULT get_document(IHTMLDocument2*); + HRESULT get_event(LPHTMLEVENTOBJ*); + HRESULT get__newEnum(IUnknown*); + HRESULT showModalDialog(BSTR,VARIANT*,VARIANT*,VARIANT*); + HRESULT showHelp(BSTR,VARIANT,BSTR); + HRESULT get_screen(LPHTMLSCREEN*); + HRESULT get_Option(LPHTMLOPTIONELEMENTFACTORY*); + HRESULT focus(); + HRESULT get_closed(VARIANT_BOOL*); + HRESULT blur(); + HRESULT scroll(long,long); + HRESULT get_clientInformation(LPOMNAVIGATOR*); + HRESULT setInterval(BSTR,long,VARIANT*,long*); + HRESULT clearInterval(long); + HRESULT put_offscreenBuffering(VARIANT); + HRESULT get_offscreenBuffering(VARIANT*); + HRESULT execScript(BSTR,BSTR,VARIANT*); + HRESULT toString(BSTR*); + HRESULT scrollBy(LONG,LONG); + HRESULT scrollTo(LONG,LONG); + HRESULT moveTo(LONG,LONG); + HRESULT moveBy(LONG,LONG); + HRESULT resizeTo(LONG,LONG); + HRESULT resizeBy(LONG,LONG); + HRESULT get_external(IDispatch*); +} +alias IHTMLWindow2 LPHTMLWINDOW2; + +interface IHTMLFrameBase : IDispatch { + HRESULT put_src(BSTR); + HRESULT get_src(BSTR*); + HRESULT put_name(BSTR); + HRESULT get_name(BSTR*); + HRESULT put_border(VARIANT); + HRESULT get_border(VARIANT*); + HRESULT put_frameBorder(BSTR); + HRESULT get_frameBorder(BSTR*); + HRESULT put_frameSpacing(VARIANT); + HRESULT get_frameSpacing(VARIANT*); + HRESULT put_marginWidth(VARIANT); + HRESULT get_marginWidth(VARIANT*); + HRESULT put_marginHeight(VARIANT); + HRESULT get_marginHeight(VARIANT*); + HRESULT put_noResize(VARIANT_BOOL); + HRESULT get_noResize(VARIANT_BOOL*); + HRESULT put_scrolling(BSTR); + HRESULT get_scrolling(BSTR*); +} + +interface IHTMLFrameBase2 : IDispatch { + HRESULT get_contentWindow(IHTMLWindow2*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onreadystatechange(VARIANT); + HRESULT get_onreadystatechange(VARIANT*); + HRESULT get_readyState(BSTR*); + HRESULT put_allowTransparency(VARIANT_BOOL); + HRESULT get_allowTransparency(VARIANT_BOOL*); +} + +interface IHTMLFrameBase3 : IDispatch { + HRESULT put_longDesc(BSTR); + HRESULT get_longDesc(BSTR*); +} + +interface IHTMLBodyElement : IDispatch { + HRESULT put_background(BSTR); + HRESULT get_background(BSTR*); + HRESULT put_bgProperties(BSTR); + HRESULT get_bgProperties(BSTR*); + HRESULT put_leftMargin(VARIANT); + HRESULT get_leftMargin(VARIANT*); + HRESULT put_topMargin(VARIANT); + HRESULT get_topMargin(VARIANT*); + HRESULT put_rightMargin(VARIANT); + HRESULT get_rightMargin(VARIANT*); + HRESULT put_bottomMargin(VARIANT); + HRESULT get_bottomMargin(VARIANT*); + HRESULT put_noWrap(VARIANT_BOOL); + HRESULT get_noWrap(VARIANT_BOOL*); + HRESULT put_bgColor(VARIANT); + HRESULT get_bgColor(VARIANT*); + HRESULT put_text(VARIANT); + HRESULT get_text(VARIANT*); + HRESULT put_link(VARIANT); + HRESULT get_link(VARIANT*); + HRESULT put_vLink(VARIANT); + HRESULT get_vLink(VARIANT*); + HRESULT put_aLink(VARIANT); + HRESULT get_aLink(VARIANT*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onunload(VARIANT); + HRESULT get_onunload(VARIANT*); + HRESULT put_scroll(BSTR); + HRESULT get_scroll(BSTR*); + HRESULT put_onselect(VARIANT); + HRESULT get_onselect(VARIANT*); + HRESULT put_onbeforeunload(VARIANT); + HRESULT get_onbeforeunload(VARIANT*); + HRESULT createTextRange(IHTMLTxtRange*); +} + +interface IHTMLBodyElement2 : IDispatch { + HRESULT put_onbeforeprint(VARIANT); + HRESULT get_onbeforeprint(VARIANT*); + HRESULT put_onafterprint(VARIANT); + HRESULT get_onafterprint(VARIANT*); +} diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d new file mode 100644 index 0000000000..cadb395a10 --- /dev/null +++ b/src/core/sys/windows/mswsock.d @@ -0,0 +1,197 @@ +/***********************************************************************\ +* mswsock.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Daniel Keep * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mswsock; + +import win32.winbase, win32.windef; +private import win32.basetyps, win32.w32api; + +// FIXME: clean up Windows version support + +version (Win32_Winsock2) pragma(msg, + "Version Win32_Winsock2 is deprecated; Winsock2 is now imported by default"); + +// Pull in Winsock1 if the user has put "Win32_Winsock1" on the compile +// line; otherwise, default to Winsock2. +version (Win32_Winsock1) { + import win32.winsock; +} else { + import win32.winsock2; +} + +static if (_WIN32_WINNT >= 0x500) { + enum { + /* WinNT5+: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_MAXDG = 0x7009, + SO_MAXPATHDG = 0x700A, + } +} + +enum { + /* WinNT4+: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options_for_windows_nt_4_0_2.htm */ + SO_CONNDATA = 0x7000, + SO_CONNOPT = 0x7001, + SO_DISCDATA = 0x7002, + SO_DISCOPT = 0x7003, + SO_CONNDATALEN = 0x7004, + SO_CONNOPTLEN = 0x7005, + SO_DISCDATALEN = 0x7006, + SO_DISCOPTLEN = 0x7007, + + /* WinNT4: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_UPDATE_ACCEPT_CONTENT = 0x700B, +} + +enum { + /* Win95+, WinNT4+ but apparently shouldn't used: mark as deprecated? + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_OPENTYPE = 0x7008, + + /* Win95+; these two are passed to the SO_OPENTYPE option as arguments, + so would they be deprecated as well? + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_SYNCHRONOUS_ALERT = 0x0010, + SO_SYNCHRONOUS_NONALERT = 0x0020, + + /* Win95: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_CONNECT_TIME = 0x700C, +} + + +enum { + TCP_BSDURGENT = 0x7000, +} + +/* These *appear* to be constants for passing to the TransmitFile / + TransmitPackets functions, which are available in WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ +enum { + TF_DISCONNECT = 1, + TF_REUSE_SOCKET = 2, + TF_WRITE_BEHIND = 4, + TF_USE_DEFAULT_WORKER = 0, + TF_USE_SYSTEM_THREAD = 16, + TF_USE_KERNEL_APC = 32 +} + +/* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_file_buffers_2.htm */ +struct TRANSMIT_FILE_BUFFERS { + PVOID Head; + DWORD HeadLength; + PVOID Tail; + DWORD TailLength; +} +alias TRANSMIT_FILE_BUFFERS* PTRANSMIT_FILE_BUFFERS, LPTRANSMIT_FILE_BUFFERS; + +extern(Windows) { + /* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvex_2.htm */ + int WSARecvEx(SOCKET, char*, int, int*); + + /* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/getacceptexSOCKADDRs_2.htm */ + VOID GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, SOCKADDR**, LPINT, SOCKADDR**, LPINT); + + /* WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ + BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD); + + /* WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */ + alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX; + const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; + + alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX; + const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; +} + +version(Win32_Winsock1) { +} else { + static if (_WIN32_WINNT > 0x501) { + /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT + * structure below, so I've given them the same minimum version + */ + enum { + TP_ELEMENT_FILE = 1, + TP_ELEMENT_MEMORY = 2, + TP_ELEMENT_EOP = 4 + } + + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm + */ + struct TRANSMIT_PACKETS_ELEMENT { + ULONG dwElFlags; + ULONG cLength; + union { + struct { + LARGE_INTEGER nFileOffset; + HANDLE hFile; + } + PVOID pBuffer; + } + } + + /* WinXP+, Server2003+: + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm + */ + struct WSAMSG { + LPSOCKADDR name; + INT namelen; + LPWSABUF lpBuffers; + DWORD dwBufferCount; + WSABUF Control; + DWORD dwFlags; + } + + alias WSAMSG* PWSAMSG, LPWSAMSG; + + /* According to MSDN docs, the WSAMSG.Control buffer starts with a + cmsghdr header of the following form. See also RFC 2292. */ + /* DK: Confirmed. So I suppose these should get the same version as + WSAMSG... */ + struct WSACMSGHDR { + UINT cmsg_len; + INT cmsg_level; + INT cmsg_type; + // followed by UCHAR cmsg_data[]; + } + + /* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */ + /* DK: MinGW doesn't define these, and neither does the MSDN docs. Might have + to actually look up RFC 2292... */ + /+ + #if 0 + #define WSA_CMSG_FIRSTHDR(mhdr) + #define WSA_CMSG_NXTHDR(mhdr, cmsg) + #define WSA_CMSG_SPACE(length) + #define WSA_CMSG_LEN(length) + #endif + +/ + + extern(Windows) + { + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm + */ + BOOL DisconnectEx(SOCKET, LPOVERLAPPED, DWORD, DWORD); + + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm + */ + int WSARecvMsg(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); + } + } +} diff --git a/src/core/sys/windows/nb30.d b/src/core/sys/windows/nb30.d new file mode 100644 index 0000000000..f470d8b15a --- /dev/null +++ b/src/core/sys/windows/nb30.d @@ -0,0 +1,237 @@ +/***********************************************************************\ +* nb30.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.nb30; + +private import win32.windef; + +const size_t + NCBNAMSZ = 16, + MAX_LANA = 254; + +// FIXME: are these really two sets of constants? +enum : UCHAR { + REGISTERING = 0, + REGISTERED = 4, + DEREGISTERED, + DUPLICATE, + DUPLICATE_DEREG, // = 7 + UNIQUE_NAME = 0, + GROUP_NAME = 0x80, + NAME_FLAGS_MASK = 0x87 +} + +enum : UCHAR { + LISTEN_OUTSTANDING = 1, + CALL_PENDING, + SESSION_ESTABLISHED, + HANGUP_PENDING, + HANGUP_COMPLETE, + SESSION_ABORTED // = 6 +} + +const char[4] + ALL_TRANSPORTS = "M\0\0\0", + MS_NBF = "MNBF"; + +enum : UCHAR { + NCBCALL = 0x10, + NCBLISTEN, + NCBHANGUP, // = 0x12 + NCBSEND = 0x14, + NCBRECV, + NCBRECVANY, + NCBCHAINSEND, // = 0x17 + NCBDGSEND = 0x20, + NCBDGRECV, + NCBDGSENDBC, + NCBDGRECVBC, // = 0x23, + NCBADDNAME = 0x30, + NCBDELNAME, + NCBRESET, + NCBASTAT, + NCBSSTAT, + NCBCANCEL, + NCBADDGRNAME, + NCBENUM, // = 0x37 + NCBUNLINK = 0x70, + NCBSENDNA, + NCBCHAINSENDNA, + NCBLANSTALERT, // = 0x73 + NCBACTION = 0x77, + NCBFINDNAME, + NCBTRACE // = 0x79 +} + +const UCHAR ASYNCH = 0x80; + +enum : UCHAR { + NRC_GOODRET = 0x00, + NRC_BUFLEN = 0x01, + NRC_ILLCMD = 0x03, + NRC_CMDTMO = 0x05, + NRC_INCOMP, + NRC_BADDR, + NRC_SNUMOUT, + NRC_NORES, + NRC_SCLOSED, + NRC_CMDCAN, // = 0x0b + NRC_DUPNAME = 0x0d, + NRC_NAMTFUL, + NRC_ACTSES, // = 0x0f, + NRC_LOCTFUL = 0x11, + NRC_REMTFUL, + NRC_ILLNN, + NRC_NOCALL, + NRC_NOWILD, + NRC_INUSE, + NRC_NAMERR, + NRC_SABORT, + NRC_NAMCONF, // = 0x19 + NRC_IFBUSY = 0x21, + NRC_TOOMANY, + NRC_BRIDGE, + NRC_CANOCCR, // = 0x24 + NRC_CANCEL = 0x26, + NRC_DUPENV = 0x30, + NRC_ENVNOTDEF = 0x34, + NRC_OSRESNOTAV, + NRC_MAXAPPS, + NRC_NOSAPS, + NRC_NORESOURCES, + NRC_INVADDRESS, // = 0x39 + NRC_INVDDID = 0x3B, + NRC_LOCKFAIL = 0x3C, + NRC_OPENERR = 0x3f, + NRC_SYSTEM = 0x40, + NRC_PENDING = 0xff +} + +struct ACTION_HEADER { + union { + /* transport_id is defined as a ULONG, but both the above constants + * and the documented description suggest it should be a char[4] + */ + ULONG transport_id; + char[4] c_transport_id; + } + USHORT action_code; + USHORT reserved; +} +alias ACTION_HEADER* PACTION_HEADER; + +struct ADAPTER_STATUS { + UCHAR[6] adapter_address; + UCHAR rev_major; + UCHAR reserved0; + UCHAR adapter_type; + UCHAR rev_minor; + WORD duration; + WORD frmr_recv; + WORD frmr_xmit; + WORD iframe_recv_err; + WORD xmit_aborts; + DWORD xmit_success; + DWORD recv_success; + WORD iframe_xmit_err; + WORD recv_buff_unavail; + WORD t1_timeouts; + WORD ti_timeouts; + DWORD reserved1; + WORD free_ncbs; + WORD max_cfg_ncbs; + WORD max_ncbs; + WORD xmit_buf_unavail; + WORD max_dgram_size; + WORD pending_sess; + WORD max_cfg_sess; + WORD max_sess; + WORD max_sess_pkt_size; + WORD name_count; +} +alias ADAPTER_STATUS* PADAPTER_STATUS; + +struct FIND_NAME_BUFFER { + /* From Win32 API docs + * + * length + * Specifies the length, in bytes, of the FIND_NAME_BUFFER + * structure. Although this structure always occupies 33 bytes, + * not all of the structure is necessarily valid. + * + * On this basis, should length be initialised? + */ + UCHAR length; + UCHAR access_control; + UCHAR frame_control; + UCHAR[6] destination_addr; + UCHAR[6] source_addr; + UCHAR[18] routing_info; +} +alias FIND_NAME_BUFFER* PFIND_NAME_BUFFER; + +struct FIND_NAME_HEADER { + WORD node_count; + UCHAR reserved; + UCHAR unique_group; +} +alias FIND_NAME_HEADER* PFIND_NAME_HEADER; + +struct LANA_ENUM { + UCHAR length; + UCHAR[MAX_LANA+1] lana; +} +alias LANA_ENUM* PLANA_ENUM; + +struct NAME_BUFFER { + UCHAR[NCBNAMSZ] name; + UCHAR name_num; + UCHAR name_flags; +} +alias NAME_BUFFER* PNAME_BUFFER; + +struct NCB { + UCHAR ncb_command; + UCHAR ncb_retcode; + UCHAR ncb_lsn; + UCHAR ncb_num; + PUCHAR ncb_buffer; + WORD ncb_length; + UCHAR[NCBNAMSZ] ncb_callname; + UCHAR[NCBNAMSZ] ncb_name; + UCHAR ncb_rto; + UCHAR ncb_sto; + extern (Windows) void function(NCB*) ncb_post; + UCHAR ncb_lana_num; + UCHAR ncb_cmd_cplt; + UCHAR[10] ncb_reserve; + HANDLE ncb_event; +} +alias NCB* PNCB; + +struct SESSION_BUFFER { + UCHAR lsn; + UCHAR state; + UCHAR[NCBNAMSZ] local_name; + UCHAR[NCBNAMSZ] remote_name; + UCHAR rcvs_outstanding; + UCHAR sends_outstanding; +} +alias SESSION_BUFFER* PSESSION_BUFFER; + +struct SESSION_HEADER { + UCHAR sess_name; + UCHAR num_sess; + UCHAR rcv_dg_outstanding; + UCHAR rcv_any_outstanding; +} +alias SESSION_HEADER* PSESSION_HEADER; + +extern (Windows) UCHAR Netbios(PNCB); diff --git a/src/core/sys/windows/nddeapi.d b/src/core/sys/windows/nddeapi.d new file mode 100644 index 0000000000..853325e93d --- /dev/null +++ b/src/core/sys/windows/nddeapi.d @@ -0,0 +1,162 @@ +/***********************************************************************\ +* nddeapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.nddeapi; + +private import win32.windef; + +// FIXME: check types and grouping of constants + +/+ +#ifndef CNLEN /* also in lmcons.h */ +#define CNLEN 15 +#define UNCLEN (CNLEN + 2) +#endif ++/ + +const char SEP_CHAR = ','; +const char[] BAR_CHAR = "|"; +const wchar SEP_WCHAR = ','; +const wchar[] BAR_WCHAR = "|"; + +enum { + NDDE_NO_ERROR, + NDDE_ACCESS_DENIED, + NDDE_BUF_TOO_SMALL, + NDDE_ERROR_MORE_DATA, + NDDE_INVALID_SERVER, + NDDE_INVALID_SHARE, + NDDE_INVALID_PARAMETER, + NDDE_INVALID_LEVEL, + NDDE_INVALID_PASSWORD, + NDDE_INVALID_ITEMNAME, + NDDE_INVALID_TOPIC, + NDDE_INTERNAL_ERROR, + NDDE_OUT_OF_MEMORY, + NDDE_INVALID_APPNAME, + NDDE_NOT_IMPLEMENTED, + NDDE_SHARE_ALREADY_EXIST, + NDDE_SHARE_NOT_EXIST, + NDDE_INVALID_FILENAME, + NDDE_NOT_RUNNING, + NDDE_INVALID_WINDOW, + NDDE_INVALID_SESSION, + NDDE_INVALID_ITEM_LIST, + NDDE_SHARE_DATA_CORRUPTED, + NDDE_REGISTRY_ERROR, + NDDE_CANT_ACCESS_SERVER, + NDDE_INVALID_SPECIAL_COMMAND, + NDDE_INVALID_SECURITY_DESC, + NDDE_TRUST_SHARE_FAIL +} + +const size_t + MAX_NDDESHARENAME = 256, + MAX_DOMAINNAME = 15, + MAX_USERNAME = 15, + MAX_APPNAME = 255, + MAX_TOPICNAME = 255, + MAX_ITEMNAME = 255; + +const NDDEF_NOPASSWORDPROMPT = 1; +const NDDEF_NOCACHELOOKUP = 2; +const NDDEF_STRIP_NDDE = 4; + +const SHARE_TYPE_OLD = 1; +const SHARE_TYPE_NEW = 2; +const SHARE_TYPE_STATIC = 4; + +const uint + NDDE_CMD_SHOW_MASK = 0x0000FFFF, + NDDE_TRUST_CMD_SHOW = 0x10000000, + NDDE_TRUST_SHARE_DEL = 0x20000000, + NDDE_TRUST_SHARE_INIT = 0x40000000, + NDDE_TRUST_SHARE_START = 0x80000000; + +struct NDdeShareInfo_tag { + LONG lRevision; + LPTSTR lpszShareName; + LONG lShareType; + LPTSTR lpszAppTopicList; + LONG fSharedFlag; + LONG fService; + LONG fStartAppFlag; + LONG nCmdShow; + LONG[2] qModifyId; + LONG cNumItems; + LPTSTR lpszItemList; +} +extern (C) { // huh? + NDdeShareInfo_tag NDDESHAREINFO; + NDdeShareInfo_tag* PNDDESHAREINFO; +} + +extern (Windows) { + UINT NDdeGetErrorStringA(UINT, LPSTR, DWORD); + UINT NDdeGetErrorStringW(UINT, LPWSTR, DWORD); + UINT NDdeGetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, PDWORD); + UINT NDdeGetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, PDWORD); + UINT NDdeGetTrustedShareA(LPSTR, LPSTR, PDWORD, PDWORD, PDWORD); + UINT NDdeGetTrustedShareW(LPWSTR, LPWSTR, PDWORD, PDWORD, PDWORD); + BOOL NDdeIsValidShareNameA(LPSTR); + BOOL NDdeIsValidShareNameW(LPWSTR); + BOOL NDdeIsValidAppTopicListA(LPSTR); + BOOL NDdeIsValidAppTopicListW(LPWSTR); + UINT NDdeSetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + UINT NDdeSetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + UINT NDdeSetTrustedShareA(LPSTR, LPSTR, DWORD); + UINT NDdeSetTrustedShareW(LPWSTR, LPWSTR, DWORD); + UINT NDdeShareAddA(LPSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); + UINT NDdeShareAddW(LPWSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); + UINT NDdeShareDelA(LPSTR, LPSTR, UINT); + UINT NDdeShareDelW(LPWSTR, LPWSTR, UINT); + UINT NDdeShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeShareGetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); + UINT NDdeShareGetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); + UINT NDdeShareSetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, WORD); + UINT NDdeShareSetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, WORD); + UINT NDdeTrustedShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeTrustedShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); +} + +version (Unicode) { + alias NDdeShareAddW NDdeShareAdd; + alias NDdeShareDelW NDdeShareDel; + alias NDdeSetShareSecurityW NDdeSetShareSecurity; + alias NDdeGetShareSecurityW NDdeGetShareSecurity; + alias NDdeShareEnumW NDdeShareEnum; + alias NDdeShareGetInfoW NDdeShareGetInfo; + alias NDdeShareSetInfoW NDdeShareSetInfo; + alias NDdeGetErrorStringW NDdeGetErrorString; + alias NDdeIsValidShareNameW NDdeIsValidShareName; + alias NDdeIsValidAppTopicListW NDdeIsValidAppTopicList; + alias NDdeSetTrustedShareW NDdeSetTrustedShare; + alias NDdeGetTrustedShareW NDdeGetTrustedShare; + alias NDdeTrustedShareEnumW NDdeTrustedShareEnum; +} else { + alias NDdeShareAddA NDdeShareAdd; + alias NDdeShareDelA NDdeShareDel; + alias NDdeSetShareSecurityA NDdeSetShareSecurity; + alias NDdeGetShareSecurityA NDdeGetShareSecurity; + alias NDdeShareEnumA NDdeShareEnum; + alias NDdeShareGetInfoA NDdeShareGetInfo; + alias NDdeShareSetInfoA NDdeShareSetInfo; + alias NDdeGetErrorStringA NDdeGetErrorString; + alias NDdeIsValidShareNameA NDdeIsValidShareName; + alias NDdeIsValidAppTopicListA NDdeIsValidAppTopicList; + alias NDdeSetTrustedShareA NDdeSetTrustedShare; + alias NDdeGetTrustedShareA NDdeGetTrustedShare; + alias NDdeTrustedShareEnumA NDdeTrustedShareEnum; +} diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d new file mode 100644 index 0000000000..ed588520a2 --- /dev/null +++ b/src/core/sys/windows/nspapi.d @@ -0,0 +1,148 @@ +/***********************************************************************\ +* nspapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.nspapi; + +private import win32.basetyps, win32.windef; + +// FIXME: check types of constants + +enum { + NS_ALL = 0, + + NS_SAP, + NS_NDS, + NS_PEER_BROWSE, + + NS_TCPIP_LOCAL = 10, + NS_TCPIP_HOSTS, + NS_DNS, + NS_NETBT, + NS_WINS, + + NS_NBP = 20, + + NS_MS = 30, + NS_STDA, + NS_NTDS, + + NS_X500 = 40, + NS_NIS, + NS_NISPLUS, + + NS_WRQ = 50 +} + +enum { + SERVICE_REGISTER = 1, + SERVICE_DEREGISTER = 2, + SERVICE_FLUSH = 3, + SERVICE_FLAG_HARD = 2 +} + +/* MinGW makes the next section conditional on winsock.h or winsock2.h + * being included. But that doesn't translate well into D. + */ +version (Win32_Winsock1) { + import win32.winsock; +} else { + import win32.winsock2; +} + +struct SOCKET_ADDRESS { + LPSOCKADDR lpSockaddr; + INT iSockaddrLength; +} +alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; + +struct CSADDR_INFO { + SOCKET_ADDRESS LocalAddr; + SOCKET_ADDRESS RemoteAddr; + INT iSocketType; + INT iProtocol; +} +alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; + +struct BLOB { + ULONG cbSize; + BYTE* pBlobData; +} +alias BLOB* PBLOB, LPBLOB; + +struct SERVICE_ADDRESS { + DWORD dwAddressType; + DWORD dwAddressFlags; + DWORD dwAddressLength; + DWORD dwPrincipalLength; + BYTE* lpAddress; + BYTE* lpPrincipal; +} + +struct SERVICE_ADDRESSES { + DWORD dwAddressCount; + SERVICE_ADDRESS _Addresses; + + SERVICE_ADDRESS* Addresses() { return &_Addresses; } +} +alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES; + +struct SERVICE_INFOA { + LPGUID lpServiceType; + LPSTR lpServiceName; + LPSTR lpComment; + LPSTR lpLocale; + DWORD dwDisplayHint; + DWORD dwVersion; + DWORD dwTime; + LPSTR lpMachineName; + LPSERVICE_ADDRESSES lpServiceAddress; + BLOB ServiceSpecificInfo; +} +alias SERVICE_INFOA* LPSERVICE_INFOA; + +struct SERVICE_INFOW { + LPGUID lpServiceType; + LPWSTR lpServiceName; + LPWSTR lpComment; + LPWSTR lpLocale; + DWORD dwDisplayHint; + DWORD dwVersion; + DWORD dwTime; + LPWSTR lpMachineName; + LPSERVICE_ADDRESSES lpServiceAddress; + BLOB ServiceSpecificInfo; +} +alias SERVICE_INFOW* LPSERVICE_INFOW; + +alias void* LPSERVICE_ASYNC_INFO; + +extern (Windows) { + INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA, + LPSERVICE_ASYNC_INFO, LPDWORD); + INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW, + LPSERVICE_ASYNC_INFO, LPDWORD); + INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD, + LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD); + INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD, + LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD); +} + +version (Unicode) { + alias SERVICE_INFOW SERVICE_INFO; + alias SetServiceW SetService; + alias GetAddressByNameW GetAddressByName; +} else { + alias SERVICE_INFOA SERVICE_INFO; + alias SetServiceA SetService; + alias GetAddressByNameA GetAddressByName; +} + +alias SERVICE_INFO _SERVICE_INFO; +alias SERVICE_INFO* LPSERVICE_INFO; diff --git a/src/core/sys/windows/ntdef.d b/src/core/sys/windows/ntdef.d new file mode 100644 index 0000000000..ca9a5a7f77 --- /dev/null +++ b/src/core/sys/windows/ntdef.d @@ -0,0 +1,80 @@ +/***********************************************************************\ +* ntdef.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ntdef; + +private import win32.basetsd, win32.subauth, win32.windef, win32.winnt; + +const uint + OBJ_INHERIT = 0x0002, + OBJ_PERMANENT = 0x0010, + OBJ_EXCLUSIVE = 0x0020, + OBJ_CASE_INSENSITIVE = 0x0040, + OBJ_OPENIF = 0x0080, + OBJ_OPENLINK = 0x0100, + OBJ_VALID_ATTRIBUTES = 0x01F2; + +void InitializeObjectAttributes(OBJECT_ATTRIBUTES* p, UNICODE_STRING* n, + uint a, HANDLE r, void* s) { + with (*p) { + Length = OBJECT_ATTRIBUTES.sizeof; + RootDirectory = r; + Attributes = a; + ObjectName = n; + SecurityDescriptor = s; + SecurityQualityOfService = null; + } +} + +bool NT_SUCCESS(int x) { return x >= 0; } + +/* In MinGW, NTSTATUS, UNICODE_STRING, STRING and their associated pointer + * type aliases are defined in ntdef.h, ntsecapi.h and subauth.h, each of + * which checks that none of the others is already included. + */ +alias int NTSTATUS; +alias int* PNTSTATUS; + +struct UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} +alias UNICODE_STRING* PUNICODE_STRING; +alias const(UNICODE_STRING)* PCUNICODE_STRING; + +struct STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} +alias STRING ANSI_STRING, OEM_STRING; +alias STRING* PSTRING, PANSI_STRING, POEM_STRING; + +alias LARGE_INTEGER PHYSICAL_ADDRESS; +alias LARGE_INTEGER* PPHYSICAL_ADDRESS; + +enum SECTION_INHERIT { + ViewShare = 1, + ViewUnmap +} + +/* In MinGW, this is defined in ntdef.h and ntsecapi.h, each of which checks + * that the other isn't already included. + */ +struct OBJECT_ATTRIBUTES { + ULONG Length = OBJECT_ATTRIBUTES.sizeof; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +} +alias OBJECT_ATTRIBUTES* POBJECT_ATTRIBUTES; diff --git a/src/core/sys/windows/ntdll.d b/src/core/sys/windows/ntdll.d new file mode 100644 index 0000000000..6accbe0225 --- /dev/null +++ b/src/core/sys/windows/ntdll.d @@ -0,0 +1,22 @@ +/***********************************************************************\ +* ntdll.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ntdll; + +private import win32.w32api; + + +enum SHUTDOWN_ACTION { + ShutdownNoReboot, + ShutdownReboot, + ShutdownPowerOff +} + +extern (Windows) uint NtShutdownSystem(SHUTDOWN_ACTION Action); diff --git a/src/core/sys/windows/ntldap.d b/src/core/sys/windows/ntldap.d new file mode 100644 index 0000000000..637e1bb7a2 --- /dev/null +++ b/src/core/sys/windows/ntldap.d @@ -0,0 +1,58 @@ +/***********************************************************************\ +* ntldap.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ntldap; + +/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned + * aliases. Should we merge them anyway? + */ + +const char[] + LDAP_SERVER_ASQ_OID = "1.2.840.113556.1.4.1504", + LDAP_SERVER_DIRSYNC_OID = "1.2.840.113556.1.4.841", + LDAP_SERVER_SD_FLAGS_OID = "1.2.840.113556.1.4.801", + LDAP_SERVER_FAST_BIND_OID = "1.2.840.113556.1.4.1781", + LDAP_MATCHING_RULE_BIT_OR = "1.2.840.113556.1.4.804", + LDAP_MATCHING_RULE_BIT_AND = "1.2.840.113556.1.4.803", + LDAP_SERVER_EXTENDED_DN_OID = "1.2.840.113556.1.4.529", + LDAP_SERVER_LAZY_COMMIT_OID = "1.2.840.113556.1.4.619", + LDAP_SERVER_TREE_DELETE_OID = "1.2.840.113556.1.4.805", + LDAP_SERVER_VERIFY_NAME_OID = "1.2.840.113556.1.4.1338", + LDAP_SERVER_SHOW_DELETED_OID = "1.2.840.113556.1.4.417", + LDAP_SERVER_NOTIFICATION_OID = "1.2.840.113556.1.4.528", + LDAP_SERVER_DOMAIN_SCOPE_OID = "1.2.840.113556.1.4.1339", + LDAP_CAP_ACTIVE_DIRECTORY_OID = "1.2.840.113556.1.4.800", + LDAP_SERVER_SEARCH_OPTIONS_OID = "1.2.840.113556.1.4.1340", + LDAP_CAP_ACTIVE_DIRECTORY_V51_OID = "1.2.840.113556.1.4.1670", + LDAP_SERVER_PERMISSIVE_MODIFY_OID = "1.2.840.113556.1.4.1413", + LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID = "1.2.840.113556.1.4.521"; + +const wchar[] + LDAP_SERVER_ASQ_OID_W = "1.2.840.113556.1.4.1504", + LDAP_SERVER_DIRSYNC_OID_W = "1.2.840.113556.1.4.841", + LDAP_SERVER_SD_FLAGS_OID_W = "1.2.840.113556.1.4.801", + LDAP_SERVER_FAST_BIND_OID_W = "1.2.840.113556.1.4.1781", + LDAP_MATCHING_RULE_BIT_OR_W = "1.2.840.113556.1.4.804", + LDAP_MATCHING_RULE_BIT_AND_W = "1.2.840.113556.1.4.803", + LDAP_SERVER_EXTENDED_DN_OID_W = "1.2.840.113556.1.4.529", + LDAP_SERVER_LAZY_COMMIT_OID_W = "1.2.840.113556.1.4.619", + LDAP_SERVER_TREE_DELETE_OID_W = "1.2.840.113556.1.4.805", + LDAP_SERVER_VERIFY_NAME_OID_W = "1.2.840.113556.1.4.1338", + LDAP_SERVER_SHOW_DELETED_OID_W = "1.2.840.113556.1.4.417", + LDAP_SERVER_NOTIFICATION_OID_W = "1.2.840.113556.1.4.528", + LDAP_SERVER_DOMAIN_SCOPE_OID_W = "1.2.840.113556.1.4.1339", + LDAP_CAP_ACTIVE_DIRECTORY_OID_W = "1.2.840.113556.1.4.800", + LDAP_SERVER_SEARCH_OPTIONS_OID_W = "1.2.840.113556.1.4.1340", + LDAP_CAP_ACTIVE_DIRECTORY_V51_OID_W = "1.2.840.113556.1.4.1670", + LDAP_SERVER_PERMISSIVE_MODIFY_OID_W = "1.2.840.113556.1.4.1413", + LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID_W = "1.2.840.113556.1.4.521"; + +const SERVER_SEARCH_FLAG_DOMAIN_SCOPE = 1; +const SERVER_SEARCH_FLAG_PHANTOM_ROOT = 2; diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d new file mode 100644 index 0000000000..f0930d59ef --- /dev/null +++ b/src/core/sys/windows/ntsecapi.d @@ -0,0 +1,793 @@ +/***********************************************************************\ +* ntsecapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ntsecapi; + +private import + win32.basetyps, win32.ntdef, win32.windef, win32.winnt, win32.w32api; + +// FIXME: check types and grouping of constants +// FIXME: check Windows version support + +const KERB_WRAP_NO_ENCRYPT = 0x80000001; + +const LOGON_GUEST = 0x00000001; +const LOGON_NOENCRYPTION = 0x00000002; +const LOGON_CACHED_ACCOUNT = 0x00000004; +const LOGON_USED_LM_PASSWORD = 0x00000008; +const LOGON_EXTRA_SIDS = 0x00000020; +const LOGON_SUBAUTH_SESSION_KEY = 0x00000040; +const LOGON_SERVER_TRUST_ACCOUNT = 0x00000080; +const LOGON_NTLMV2_ENABLED = 0x00000100; +const LOGON_RESOURCE_GROUPS = 0x00000200; +const LOGON_PROFILE_PATH_RETURNED = 0x00000400; +const LOGON_GRACE_LOGON = 0x01000000; + +enum { + LSA_MODE_PASSWORD_PROTECTED = 1, + LSA_MODE_INDIVIDUAL_ACCOUNTS, + LSA_MODE_MANDATORY_ACCESS, + LSA_MODE_LOG_FULL +} + +bool LSA_SUCCESS(int x) { return x >= 0; } + +/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned + * aliases. Should we merge them anyway? + */ +const char[] MICROSOFT_KERBEROS_NAME_A = "Kerberos"; +const wchar[] MICROSOFT_KERBEROS_NAME_W = "Kerberos"; +const char[] MSV1_0_PACKAGE_NAME = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; +const wchar[] MSV1_0_PACKAGE_NAMEW = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; + +const MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT = 32; +const MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT = 2048; +const MSV1_0_CLEARTEXT_PASSWORD_ALLOWED = 2; +const MSV1_0_CRED_LM_PRESENT = 1; +const MSV1_0_CRED_NT_PRESENT = 2; +const MSV1_0_CRED_VERSION = 0; +const MSV1_0_DONT_TRY_GUEST_ACCOUNT = 16; +const MSV1_0_MAX_NTLM3_LIFE = 1800; +const MSV1_0_MAX_AVL_SIZE = 64000; +const MSV1_0_MNS_LOGON = 16777216; + +const size_t + MSV1_0_CHALLENGE_LENGTH = 8, + MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8, + MSV1_0_NTLM3_RESPONSE_LENGTH = 16, + MSV1_0_NTLM3_OWF_LENGTH = 16, + MSV1_0_NTLM3_INPUT_LENGTH = MSV1_0_NTLM3_RESPONSE.sizeof + - MSV1_0_NTLM3_RESPONSE_LENGTH, + MSV1_0_OWF_PASSWORD_LENGTH = 16, + MSV1_0_PACKAGE_NAMEW_LENGTH = MSV1_0_PACKAGE_NAMEW.sizeof + - WCHAR.sizeof; + +const MSV1_0_RETURN_USER_PARAMETERS = 8; +const MSV1_0_RETURN_PASSWORD_EXPIRY = 64; +const MSV1_0_RETURN_PROFILE_PATH = 512; +const MSV1_0_SUBAUTHENTICATION_DLL_EX = 1048576; +const MSV1_0_SUBAUTHENTICATION_DLL = 0xff000000; +const MSV1_0_SUBAUTHENTICATION_DLL_SHIFT = 24; +const MSV1_0_SUBAUTHENTICATION_DLL_RAS = 2; +const MSV1_0_SUBAUTHENTICATION_DLL_IIS = 132; +const MSV1_0_SUBAUTHENTICATION_FLAGS = 0xff000000; +const MSV1_0_TRY_GUEST_ACCOUNT_ONLY = 256; +const MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY = 1024; +const MSV1_0_UPDATE_LOGON_STATISTICS = 4; +const MSV1_0_USE_CLIENT_CHALLENGE = 128; +const MSV1_0_USER_SESSION_KEY_LENGTH = 16; + +const char[] + MSV1_0_SUBAUTHENTICATION_KEY + = `System\CurrentControlSet\Control\Lsa\MSV1_0`, + MSV1_0_SUBAUTHENTICATION_VALUE = "Auth"; + +const ACCESS_MASK + POLICY_VIEW_LOCAL_INFORMATION = 0x0001, + POLICY_VIEW_AUDIT_INFORMATION = 0x0002, + POLICY_GET_PRIVATE_INFORMATION = 0x0004, + POLICY_TRUST_ADMIN = 0x0008, + POLICY_CREATE_ACCOUNT = 0x0010, + POLICY_CREATE_SECRET = 0x0020, + POLICY_CREATE_PRIVILEGE = 0x0040, + POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x0080, + POLICY_SET_AUDIT_REQUIREMENTS = 0x0100, + POLICY_AUDIT_LOG_ADMIN = 0x0200, + POLICY_SERVER_ADMIN = 0x0400, + POLICY_LOOKUP_NAMES = 0x0800, + + POLICY_READ = STANDARD_RIGHTS_READ | 0x0006, + POLICY_WRITE = STANDARD_RIGHTS_WRITE | 0x07F8, + POLICY_EXECUTE = STANDARD_RIGHTS_EXECUTE | 0x0801, + POLICY_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 0x0FFF; + +const POLICY_AUDIT_EVENT_UNCHANGED = 0; +const POLICY_AUDIT_EVENT_SUCCESS = 1; +const POLICY_AUDIT_EVENT_FAILURE = 2; +const POLICY_AUDIT_EVENT_NONE = 4; +const POLICY_AUDIT_EVENT_MASK = 7; + +enum { + POLICY_LOCATION_LOCAL = 1, + POLICY_LOCATION_DS +} + +enum : uint { + POLICY_MACHINE_POLICY_LOCAL = 0, + POLICY_MACHINE_POLICY_DEFAULTED, + POLICY_MACHINE_POLICY_EXPLICIT, + POLICY_MACHINE_POLICY_UNKNOWN = 0xFFFFFFFF +} + + +const POLICY_QOS_SCHANEL_REQUIRED = 0x0001; +const POLICY_QOS_OUTBOUND_INTEGRITY = 0x0002; +const POLICY_QOS_OUTBOUND_CONFIDENTIALITY = 0x0004; +const POLICY_QOS_INBOUND_INTEGREITY = 0x0008; +const POLICY_QOS_INBOUND_CONFIDENTIALITY = 0x0010; +const POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE = 0x0020; +const POLICY_QOS_RAS_SERVER_ALLOWED = 0x0040; +const POLICY_QOS_DHCP_SERVER_ALLOWD = 0x0080; + +const POLICY_KERBEROS_FORWARDABLE = 1; +const POLICY_KERBEROS_PROXYABLE = 2; +const POLICY_KERBEROS_RENEWABLE = 4; +const POLICY_KERBEROS_POSTDATEABLE = 8; + +const char[] + SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = "PasswordChangeNotify", + SAM_INIT_NOTIFICATION_ROUTINE = "InitializeChangeNotify", + SAM_PASSWORD_FILTER_ROUTINE = "PasswordFilter"; + +const TCHAR[] + SE_INTERACTIVE_LOGON_NAME = "SeInteractiveLogonRight", + SE_NETWORK_LOGON_NAME = "SeNetworkLogonRight", + SE_BATCH_LOGON_NAME = "SeBatchLogonRight", + SE_SERVICE_LOGON_NAME = "SeServiceLogonRight"; + +enum { + TRUST_ATTRIBUTE_NON_TRANSITIVE = 1, + TRUST_ATTRIBUTE_UPLEVEL_ONLY = 2, + TRUST_ATTRIBUTE_TREE_PARENT = 4194304, + TRUST_ATTRIBUTES_VALID = -16580609 +} + +enum { + TRUST_AUTH_TYPE_NONE, + TRUST_AUTH_TYPE_NT4OWF, + TRUST_AUTH_TYPE_CLEAR +} + +enum { + TRUST_DIRECTION_DISABLED, + TRUST_DIRECTION_INBOUND, + TRUST_DIRECTION_OUTBOUND, + TRUST_DIRECTION_BIDIRECTIONAL +} + +enum { + TRUST_TYPE_DOWNLEVEL = 1, + TRUST_TYPE_UPLEVEL, + TRUST_TYPE_MIT, + TRUST_TYPE_DCE +} + +alias UNICODE_STRING LSA_UNICODE_STRING; +alias UNICODE_STRING* PLSA_UNICODE_STRING; +alias STRING LSA_STRING; +alias STRING* PLSA_STRING; + +enum MSV1_0_LOGON_SUBMIT_TYPE { + MsV1_0InteractiveLogon = 2, + MsV1_0Lm20Logon, + MsV1_0NetworkLogon, + MsV1_0SubAuthLogon, + MsV1_0WorkstationUnlockLogon = 7 +} +alias MSV1_0_LOGON_SUBMIT_TYPE* PMSV1_0_LOGON_SUBMIT_TYPE; + +enum MSV1_0_PROFILE_BUFFER_TYPE { + MsV1_0InteractiveProfile = 2, + MsV1_0Lm20LogonProfile, + MsV1_0SmartCardProfile +} +alias MSV1_0_PROFILE_BUFFER_TYPE* PMSV1_0_PROFILE_BUFFER_TYPE; + + +enum MSV1_0_AVID { + MsvAvEOL, + MsvAvNbComputerName, + MsvAvNbDomainName, + MsvAvDnsComputerName, + MsvAvDnsDomainName +} + +enum MSV1_0_PROTOCOL_MESSAGE_TYPE { + MsV1_0Lm20ChallengeRequest = 0, + MsV1_0Lm20GetChallengeResponse, + MsV1_0EnumerateUsers, + MsV1_0GetUserInfo, + MsV1_0ReLogonUsers, + MsV1_0ChangePassword, + MsV1_0ChangeCachedPassword, + MsV1_0GenericPassthrough, + MsV1_0CacheLogon, + MsV1_0SubAuth, + MsV1_0DeriveCredential, + MsV1_0CacheLookup +} +alias MSV1_0_PROTOCOL_MESSAGE_TYPE* PMSV1_0_PROTOCOL_MESSAGE_TYPE; + +enum POLICY_LSA_SERVER_ROLE { + PolicyServerRoleBackup = 2, + PolicyServerRolePrimary +} +alias POLICY_LSA_SERVER_ROLE* PPOLICY_LSA_SERVER_ROLE; + +enum POLICY_SERVER_ENABLE_STATE { + PolicyServerEnabled = 2, + PolicyServerDisabled +} +alias POLICY_SERVER_ENABLE_STATE* PPOLICY_SERVER_ENABLE_STATE; + +enum POLICY_INFORMATION_CLASS { + PolicyAuditLogInformation = 1, + PolicyAuditEventsInformation, + PolicyPrimaryDomainInformation, + PolicyPdAccountInformation, + PolicyAccountDomainInformation, + PolicyLsaServerRoleInformation, + PolicyReplicaSourceInformation, + PolicyDefaultQuotaInformation, + PolicyModificationInformation, + PolicyAuditFullSetInformation, + PolicyAuditFullQueryInformation, + PolicyDnsDomainInformation, + PolicyEfsInformation +} +alias POLICY_INFORMATION_CLASS* PPOLICY_INFORMATION_CLASS; + +enum POLICY_AUDIT_EVENT_TYPE { + AuditCategorySystem, + AuditCategoryLogon, + AuditCategoryObjectAccess, + AuditCategoryPrivilegeUse, + AuditCategoryDetailedTracking, + AuditCategoryPolicyChange, + AuditCategoryAccountManagement, + AuditCategoryDirectoryServiceAccess, + AuditCategoryAccountLogon +} +alias POLICY_AUDIT_EVENT_TYPE* PPOLICY_AUDIT_EVENT_TYPE; + +enum POLICY_LOCAL_INFORMATION_CLASS { + PolicyLocalAuditEventsInformation = 1, + PolicyLocalPdAccountInformation, + PolicyLocalAccountDomainInformation, + PolicyLocalLsaServerRoleInformation, + PolicyLocalReplicaSourceInformation, + PolicyLocalModificationInformation, + PolicyLocalAuditFullSetInformation, + PolicyLocalAuditFullQueryInformation, + PolicyLocalDnsDomainInformation, + PolicyLocalIPSecReferenceInformation, + PolicyLocalMachinePasswordInformation, + PolicyLocalQualityOfServiceInformation, + PolicyLocalPolicyLocationInformation +} +alias POLICY_LOCAL_INFORMATION_CLASS* PPOLICY_LOCAL_INFORMATION_CLASS; + +enum POLICY_DOMAIN_INFORMATION_CLASS { + PolicyDomainIPSecReferenceInformation = 1, + PolicyDomainQualityOfServiceInformation, + PolicyDomainEfsInformation, + PolicyDomainPublicKeyInformation, + PolicyDomainPasswordPolicyInformation, + PolicyDomainLockoutInformation, + PolicyDomainKerberosTicketInformation +} +alias POLICY_DOMAIN_INFORMATION_CLASS* PPOLICY_DOMAIN_INFORMATION_CLASS; + +enum SECURITY_LOGON_TYPE { + Interactive = 2, + Network, + Batch, + Service, + Proxy, + Unlock +} +alias SECURITY_LOGON_TYPE* PSECURITY_LOGON_TYPE; + +enum TRUSTED_INFORMATION_CLASS { + TrustedDomainNameInformation = 1, + TrustedControllersInformation, + TrustedPosixOffsetInformation, + TrustedPasswordInformation, + TrustedDomainInformationBasic, + TrustedDomainInformationEx, + TrustedDomainAuthInformation, + TrustedDomainFullInformation +} +alias TRUSTED_INFORMATION_CLASS* PTRUSTED_INFORMATION_CLASS; + +struct DOMAIN_PASSWORD_INFORMATION { + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; +} +alias DOMAIN_PASSWORD_INFORMATION* PDOMAIN_PASSWORD_INFORMATION; + +struct LSA_ENUMERATION_INFORMATION { + PSID Sid; +} +alias LSA_ENUMERATION_INFORMATION* PLSA_ENUMERATION_INFORMATION; + +alias OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES; +alias OBJECT_ATTRIBUTES* PLSA_OBJECT_ATTRIBUTES; + +struct LSA_TRUST_INFORMATION { + LSA_UNICODE_STRING Name; + PSID Sid; +} +alias LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; +alias LSA_TRUST_INFORMATION* PLSA_TRUST_INFORMATION; +/* in MinGW (further down the code): + * typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; + * but it doesn't look right.... + */ +alias LSA_TRUST_INFORMATION** PTRUSTED_DOMAIN_INFORMATION_BASIC; + +struct LSA_REFERENCED_DOMAIN_LIST { + ULONG Entries; + PLSA_TRUST_INFORMATION Domains; +} +alias LSA_REFERENCED_DOMAIN_LIST* PLSA_REFERENCED_DOMAIN_LIST; + +struct LSA_TRANSLATED_SID { + SID_NAME_USE Use; + ULONG RelativeId; + LONG DomainIndex; +} +alias LSA_TRANSLATED_SID* PLSA_TRANSLATED_SID; + +struct LSA_TRANSLATED_NAME { + SID_NAME_USE Use; + LSA_UNICODE_STRING Name; + LONG DomainIndex; +} +alias LSA_TRANSLATED_NAME* PLSA_TRANSLATED_NAME; + +struct MSV1_0_INTERACTIVE_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Password; +} +alias MSV1_0_INTERACTIVE_LOGON* PMSV1_0_INTERACTIVE_LOGON; + +struct MSV1_0_INTERACTIVE_PROFILE { + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + USHORT LogonCount; + USHORT BadPasswordCount; + LARGE_INTEGER LogonTime; + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING LogonScript; + UNICODE_STRING HomeDirectory; + UNICODE_STRING FullName; + UNICODE_STRING ProfilePath; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING LogonServer; + ULONG UserFlags; +} +alias MSV1_0_INTERACTIVE_PROFILE* PMSV1_0_INTERACTIVE_PROFILE; + +struct MSV1_0_LM20_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; + STRING CaseSensitiveChallengeResponse; + STRING CaseInsensitiveChallengeResponse; + ULONG ParameterControl; +} +alias MSV1_0_LM20_LOGON* PMSV1_0_LM20_LOGON; + +static if (_WIN32_WINNT >= 0x500) { + struct MSV1_0_SUBAUTH_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; + STRING AuthenticationInfo1; + STRING AuthenticationInfo2; + ULONG ParameterControl; + ULONG SubAuthPackageId; + } + alias MSV1_0_SUBAUTH_LOGON* PMSV1_0_SUBAUTH_LOGON; +} + +struct MSV1_0_LM20_LOGON_PROFILE { + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER LogoffTime; + ULONG UserFlags; + UCHAR[MSV1_0_USER_SESSION_KEY_LENGTH] UserSessionKey; + UNICODE_STRING LogonDomainName; + UCHAR[MSV1_0_LANMAN_SESSION_KEY_LENGTH] LanmanSessionKey; + UNICODE_STRING LogonServer; + UNICODE_STRING UserParameters; +} +alias MSV1_0_LM20_LOGON_PROFILE* PMSV1_0_LM20_LOGON_PROFILE; + +struct MSV1_0_SUPPLEMENTAL_CREDENTIAL { + ULONG Version; + ULONG Flags; + UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] LmPassword; + UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] NtPassword; +} +alias MSV1_0_SUPPLEMENTAL_CREDENTIAL* PMSV1_0_SUPPLEMENTAL_CREDENTIAL; + +struct MSV1_0_NTLM3_RESPONSE { + UCHAR[MSV1_0_NTLM3_RESPONSE_LENGTH] Response; + UCHAR RespType; + UCHAR HiRespType; + USHORT Flags; + ULONG MsgWord; + ULONGLONG TimeStamp; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeFromClient; + ULONG AvPairsOff; + UCHAR _Buffer; + UCHAR* Buffer() { return &_Buffer; } +} +alias MSV1_0_NTLM3_RESPONSE* PMSV1_0_NTLM3_RESPONSE; + +struct MSV1_0_AV_PAIR { + USHORT AvId; + USHORT AvLen; +} +alias MSV1_0_AV_PAIR* PMSV1_0_AV_PAIR; + +struct MSV1_0_CHANGEPASSWORD_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + UNICODE_STRING DomainName; + UNICODE_STRING AccountName; + UNICODE_STRING OldPassword; + UNICODE_STRING NewPassword; + BOOLEAN Impersonating; +} +alias MSV1_0_CHANGEPASSWORD_REQUEST* PMSV1_0_CHANGEPASSWORD_REQUEST; + +struct MSV1_0_CHANGEPASSWORD_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + BOOLEAN PasswordInfoValid; + DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; +} +alias MSV1_0_CHANGEPASSWORD_RESPONSE* PMSV1_0_CHANGEPASSWORD_RESPONSE; + +struct MSV1_0_SUBAUTH_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthPackageId; + ULONG SubAuthInfoLength; + PUCHAR SubAuthSubmitBuffer; +} +alias MSV1_0_SUBAUTH_REQUEST* PMSV1_0_SUBAUTH_REQUEST; + +struct MSV1_0_SUBAUTH_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthInfoLength; + PUCHAR SubAuthReturnBuffer; +} +alias MSV1_0_SUBAUTH_RESPONSE* PMSV1_0_SUBAUTH_RESPONSE; + +const MSV1_0_DERIVECRED_TYPE_SHA1 = 0; + +struct MSV1_0_DERIVECRED_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + LUID LogonId; + ULONG DeriveCredType; + ULONG DeriveCredInfoLength; + UCHAR _DeriveCredSubmitBuffer; + UCHAR* DeriveCredSubmitBuffer() { return &_DeriveCredSubmitBuffer; } +} +alias MSV1_0_DERIVECRED_REQUEST* PMSV1_0_DERIVECRED_REQUEST; + +struct MSV1_0_DERIVECRED_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG DeriveCredInfoLength; + UCHAR _DeriveCredReturnBuffer; + UCHAR* DeriveCredReturnBuffer() { return &_DeriveCredReturnBuffer; } +} +alias MSV1_0_DERIVECRED_RESPONSE* PMSV1_0_DERIVECRED_RESPONSE; + +alias uint LSA_ENUMERATION_HANDLE, LSA_OPERATIONAL_MODE, + POLICY_AUDIT_EVENT_OPTIONS; +alias uint* PLSA_ENUMERATION_HANDLE, PLSA_OPERATIONAL_MODE, + PPOLICY_AUDIT_EVENT_OPTIONS; + +struct POLICY_PRIVILEGE_DEFINITION { + LSA_UNICODE_STRING Name; + LUID LocalValue; +} +alias POLICY_PRIVILEGE_DEFINITION* PPOLICY_PRIVILEGE_DEFINITION; + +struct POLICY_AUDIT_LOG_INFO { + ULONG AuditLogPercentFull; + ULONG MaximumLogSize; + LARGE_INTEGER AuditRetentionPeriod; + BOOLEAN AuditLogFullShutdownInProgress; + LARGE_INTEGER TimeToShutdown; + ULONG NextAuditRecordId; +} +alias POLICY_AUDIT_LOG_INFO* PPOLICY_AUDIT_LOG_INFO; + +struct POLICY_AUDIT_EVENTS_INFO { + BOOLEAN AuditingMode; + PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; + ULONG MaximumAuditEventCount; +} +alias POLICY_AUDIT_EVENTS_INFO* PPOLICY_AUDIT_EVENTS_INFO; + +struct POLICY_ACCOUNT_DOMAIN_INFO { + LSA_UNICODE_STRING DomainName; + PSID DomainSid; +} +alias POLICY_ACCOUNT_DOMAIN_INFO* PPOLICY_ACCOUNT_DOMAIN_INFO; + +struct POLICY_PRIMARY_DOMAIN_INFO { + LSA_UNICODE_STRING Name; + PSID Sid; +} +alias POLICY_PRIMARY_DOMAIN_INFO* PPOLICY_PRIMARY_DOMAIN_INFO; + +struct POLICY_DNS_DOMAIN_INFO { + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING DnsDomainName; + LSA_UNICODE_STRING DnsTreeName; + GUID DomainGuid; + PSID Sid; +} +alias POLICY_DNS_DOMAIN_INFO* PPOLICY_DNS_DOMAIN_INFO; + +struct POLICY_PD_ACCOUNT_INFO { + LSA_UNICODE_STRING Name; +} +alias POLICY_PD_ACCOUNT_INFO* PPOLICY_PD_ACCOUNT_INFO; + +struct POLICY_LSA_SERVER_ROLE_INFO { + POLICY_LSA_SERVER_ROLE LsaServerRole; +} +alias POLICY_LSA_SERVER_ROLE_INFO* PPOLICY_LSA_SERVER_ROLE_INFO; + +struct POLICY_REPLICA_SOURCE_INFO { + LSA_UNICODE_STRING ReplicaSource; + LSA_UNICODE_STRING ReplicaAccountName; +} +alias POLICY_REPLICA_SOURCE_INFO* PPOLICY_REPLICA_SOURCE_INFO; + +struct POLICY_DEFAULT_QUOTA_INFO { + QUOTA_LIMITS QuotaLimits; +} +alias POLICY_DEFAULT_QUOTA_INFO* PPOLICY_DEFAULT_QUOTA_INFO; + +struct POLICY_MODIFICATION_INFO { + LARGE_INTEGER ModifiedId; + LARGE_INTEGER DatabaseCreationTime; +} +alias POLICY_MODIFICATION_INFO* PPOLICY_MODIFICATION_INFO; + +struct POLICY_AUDIT_FULL_SET_INFO { + BOOLEAN ShutDownOnFull; +} +alias POLICY_AUDIT_FULL_SET_INFO* PPOLICY_AUDIT_FULL_SET_INFO; + +struct POLICY_AUDIT_FULL_QUERY_INFO { + BOOLEAN ShutDownOnFull; + BOOLEAN LogIsFull; +} +alias POLICY_AUDIT_FULL_QUERY_INFO* PPOLICY_AUDIT_FULL_QUERY_INFO; + +struct POLICY_EFS_INFO { + ULONG InfoLength; + PUCHAR EfsBlob; +} +alias POLICY_EFS_INFO* PPOLICY_EFS_INFO; + +struct POLICY_LOCAL_IPSEC_REFERENCE_INFO { + LSA_UNICODE_STRING ObjectPath; +} +alias POLICY_LOCAL_IPSEC_REFERENCE_INFO* PPOLICY_LOCAL_IPSEC_REFERENCE_INFO; + +struct POLICY_LOCAL_MACHINE_PASSWORD_INFO { + LARGE_INTEGER PasswordChangeInterval; +} +alias POLICY_LOCAL_MACHINE_PASSWORD_INFO* PPOLICY_LOCAL_MACHINE_PASSWORD_INFO; + +struct POLICY_LOCAL_POLICY_LOCATION_INFO { + ULONG PolicyLocation; +} +alias POLICY_LOCAL_POLICY_LOCATION_INFO* PPOLICY_LOCAL_POLICY_LOCATION_INFO; + +struct POLICY_LOCAL_QUALITY_OF_SERVICE_INFO{ + ULONG QualityOfService; +} +alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO + POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; +alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO* + PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO, + PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; + +struct POLICY_DOMAIN_PUBLIC_KEY_INFO { + ULONG InfoLength; + PUCHAR PublicKeyInfo; +} +alias POLICY_DOMAIN_PUBLIC_KEY_INFO* PPOLICY_DOMAIN_PUBLIC_KEY_INFO; + +struct POLICY_DOMAIN_LOCKOUT_INFO { + LARGE_INTEGER LockoutDuration; + LARGE_INTEGER LockoutObservationWindow; + USHORT LockoutThreshold; +} +alias POLICY_DOMAIN_LOCKOUT_INFO* PPOLICY_DOMAIN_LOCKOUT_INFO; + +struct POLICY_DOMAIN_PASSWORD_INFO { + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; +} +alias POLICY_DOMAIN_PASSWORD_INFO* PPOLICY_DOMAIN_PASSWORD_INFO; + +struct POLICY_DOMAIN_KERBEROS_TICKET_INFO { + ULONG AuthenticationOptions; + LARGE_INTEGER MinTicketAge; + LARGE_INTEGER MaxTicketAge; + LARGE_INTEGER MaxRenewAge; + LARGE_INTEGER ProxyLifetime; + LARGE_INTEGER ForceLogoff; +} +alias POLICY_DOMAIN_KERBEROS_TICKET_INFO* PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; + +mixin DECLARE_HANDLE!("LSA_HANDLE"); +alias LSA_HANDLE* PLSA_HANDLE; + +struct TRUSTED_DOMAIN_NAME_INFO { + LSA_UNICODE_STRING Name; +} +alias TRUSTED_DOMAIN_NAME_INFO* PTRUSTED_DOMAIN_NAME_INFO; + +struct TRUSTED_CONTROLLERS_INFO { + ULONG Entries; + PLSA_UNICODE_STRING Names; +} +alias TRUSTED_CONTROLLERS_INFO* PTRUSTED_CONTROLLERS_INFO; + +struct TRUSTED_POSIX_OFFSET_INFO { + ULONG Offset; +} +alias TRUSTED_POSIX_OFFSET_INFO* PTRUSTED_POSIX_OFFSET_INFO; + +struct TRUSTED_PASSWORD_INFO { + LSA_UNICODE_STRING Password; + LSA_UNICODE_STRING OldPassword; +} +alias TRUSTED_PASSWORD_INFO* PTRUSTED_PASSWORD_INFO; + +struct TRUSTED_DOMAIN_INFORMATION_EX { + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING FlatName; + PSID Sid; + ULONG TrustDirection; + ULONG TrustType; + ULONG TrustAttributes; +} +alias TRUSTED_DOMAIN_INFORMATION_EX* PTRUSTED_DOMAIN_INFORMATION_EX; + +struct LSA_AUTH_INFORMATION { + LARGE_INTEGER LastUpdateTime; + ULONG AuthType; + ULONG AuthInfoLength; + PUCHAR AuthInfo; +} +alias LSA_AUTH_INFORMATION* PLSA_AUTH_INFORMATION; + +struct TRUSTED_DOMAIN_AUTH_INFORMATION { + ULONG IncomingAuthInfos; + PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; + PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; + ULONG OutgoingAuthInfos; + PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; + PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; +} +alias TRUSTED_DOMAIN_AUTH_INFORMATION* PTRUSTED_DOMAIN_AUTH_INFORMATION; + +struct TRUSTED_DOMAIN_FULL_INFORMATION { + TRUSTED_DOMAIN_INFORMATION_EX Information; + TRUSTED_POSIX_OFFSET_INFO PosixOffset; + TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; +} +alias TRUSTED_DOMAIN_FULL_INFORMATION* PTRUSTED_DOMAIN_FULL_INFORMATION; + +extern (Windows) { + NTSTATUS LsaAddAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING, + ULONG); + NTSTATUS LsaCallAuthenticationPackage(HANDLE, ULONG, PVOID, ULONG, + PVOID*, PULONG, PNTSTATUS); + NTSTATUS LsaClose(LSA_HANDLE); + NTSTATUS LsaConnectUntrusted(PHANDLE); + NTSTATUS LsaCreateTrustedDomainEx(LSA_HANDLE, + PTRUSTED_DOMAIN_INFORMATION_EX, PTRUSTED_DOMAIN_AUTH_INFORMATION, + ACCESS_MASK, PLSA_HANDLE); + NTSTATUS LsaDeleteTrustedDomain(LSA_HANDLE, PSID); + NTSTATUS LsaDeregisterLogonProcess(HANDLE); + NTSTATUS LsaEnumerateAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING*, + PULONG); + NTSTATUS LsaEnumerateAccountsWithUserRight(LSA_HANDLE, + PLSA_UNICODE_STRING, PVOID*, PULONG); + NTSTATUS LsaEnumerateTrustedDomains(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, + PVOID*, ULONG, PULONG); + NTSTATUS LsaEnumerateTrustedDomainsEx(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, + TRUSTED_INFORMATION_CLASS, PVOID*, ULONG, PULONG); + NTSTATUS LsaFreeMemory(PVOID); + NTSTATUS LsaFreeReturnBuffer(PVOID); + NTSTATUS LsaLogonUser(HANDLE, PLSA_STRING, SECURITY_LOGON_TYPE, ULONG, + PVOID, ULONG, PTOKEN_GROUPS, PTOKEN_SOURCE, PVOID*, PULONG, PLUID, + PHANDLE, PQUOTA_LIMITS, PNTSTATUS); + NTSTATUS LsaLookupAuthenticationPackage(HANDLE, PLSA_STRING, PULONG); + NTSTATUS LsaLookupNames(LSA_HANDLE, ULONG, PLSA_UNICODE_STRING, + PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_SID*); + NTSTATUS LsaLookupSids(LSA_HANDLE, ULONG, PSID*, + PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_NAME*); + ULONG LsaNtStatusToWinError(NTSTATUS); + NTSTATUS LsaOpenPolicy(PLSA_UNICODE_STRING, PLSA_OBJECT_ATTRIBUTES, + ACCESS_MASK, PLSA_HANDLE); + NTSTATUS LsaQueryDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, + PVOID*); + NTSTATUS LsaQueryLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryTrustedDomainInfo(LSA_HANDLE, PSID, + TRUSTED_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaRegisterLogonProcess(PLSA_STRING, PHANDLE, + PLSA_OPERATIONAL_MODE); + NTSTATUS LsaRemoveAccountRights(LSA_HANDLE, PSID, BOOLEAN, + PLSA_UNICODE_STRING, ULONG); + NTSTATUS LsaRetrievePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING*); + NTSTATUS LsaSetDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, + PVOID); + NTSTATUS LsaSetLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetTrustedDomainInformation(LSA_HANDLE, PSID, + TRUSTED_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS, PVOID); + NTSTATUS LsaStorePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING); +} + +alias NTSTATUS function(PUNICODE_STRING, ULONG, PUNICODE_STRING) + PSAM_PASSWORD_NOTIFICATION_ROUTINE; +alias BOOLEAN function() PSAM_INIT_NOTIFICATION_ROUTINE; +alias BOOLEAN function(PUNICODE_STRING, PUNICODE_STRING, + PUNICODE_STRING, BOOLEAN) PSAM_PASSWORD_FILTER_ROUTINE; diff --git a/src/core/sys/windows/ntsecpkg.d b/src/core/sys/windows/ntsecpkg.d new file mode 100644 index 0000000000..17f88687d0 --- /dev/null +++ b/src/core/sys/windows/ntsecpkg.d @@ -0,0 +1,446 @@ +/***********************************************************************\ +* ntsecpkg.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Ellery Newcomer * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ntsecpkg; + +import win32.windef, win32.ntsecapi, win32.security, win32.ntdef, win32.sspi; +import win32.winnt: GUID; +import win32.winbase; + +extern(Windows): + +enum :ULONG{ + ISC_REQ_DELEGATE = 1, + ISC_REQ_MUTUAL_AUTH = 2, + ISC_REQ_REPLAY_DETECT = 4, + ISC_REQ_SEQUENCE_DETECT = 8, + ISC_REQ_CONFIDENTIALITY = 16, + ISC_REQ_USE_SESSION_KEY = 32, + ISC_REQ_PROMPT_FOR_CREDS = 64, + ISC_REQ_USE_SUPPLIED_CREDS = 128, + ISC_REQ_ALLOCATE_MEMORY = 256, + ISC_REQ_USE_DCE_STYLE = 512, + ISC_REQ_DATAGRAM = 1024, + ISC_REQ_CONNECTION = 2048, + ISC_REQ_EXTENDED_ERROR = 16384, + ISC_REQ_STREAM = 32768, + ISC_REQ_INTEGRITY = 65536, + ISC_REQ_MANUAL_CRED_VALIDATION = 524288, + ISC_REQ_HTTP = 268435456, +} + +enum ISC_RET_EXTENDED_ERROR = 16384; + +enum :ULONG{ + ASC_REQ_DELEGATE = 1, + ASC_REQ_MUTUAL_AUTH = 2, + ASC_REQ_REPLAY_DETECT = 4, + ASC_REQ_SEQUENCE_DETECT = 8, + ASC_REQ_CONFIDENTIALITY = 16, + ASC_REQ_USE_SESSION_KEY = 32, + ASC_REQ_ALLOCATE_MEMORY = 256, + ASC_REQ_USE_DCE_STYLE = 512, + ASC_REQ_DATAGRAM = 1024, + ASC_REQ_CONNECTION = 2048, + ASC_REQ_EXTENDED_ERROR = 32768, + ASC_REQ_STREAM = 65536, + ASC_REQ_INTEGRITY = 131072, +} + +enum SECURITY_NATIVE_DREP = 16; +enum SECURITY_NETWORK_DREP = 0; + +enum :ULONG{ + SECPKG_STATE_ENCRYPTION_PERMITTED = 0x01, + SECPKG_STATE_STRONG_ENCRYPTION_PERMITTED = 0x02, + SECPKG_STATE_DOMAIN_CONTROLLER = 0x04, + SECPKG_STATE_WORKSTATION = 0x08, + SECPKG_STATE_STANDALONE = 0x10, +} + +/* enum definitions for Secure Service Provider/Authentication Packages */ +enum LSA_TOKEN_INFORMATION_TYPE { + LsaTokenInformationNull, + LsaTokenInformationV1 +} +alias LSA_TOKEN_INFORMATION_TYPE* PLSA_TOKEN_INFORMATION_TYPE; +enum SECPKG_EXTENDED_INFORMATION_CLASS +{ + SecpkgGssInfo = 1, + SecpkgContextThunks, + SecpkgMutualAuthLevel, + SecpkgMaxInfo +} +enum SECPKG_NAME_TYPE { + SecNameSamCompatible, + SecNameAlternateId, + SecNameFlat, + SecNameDN +} + +/* struct definitions for SSP/AP */ +struct SECPKG_PRIMARY_CRED { + LUID LogonId; + UNICODE_STRING DownlevelName; + UNICODE_STRING DomainName; + UNICODE_STRING Password; + UNICODE_STRING OldPassword; + PSID UserSid; + ULONG Flags; + UNICODE_STRING DnsDomainName; + UNICODE_STRING Upn; + UNICODE_STRING LogonServer; + UNICODE_STRING Spare1; + UNICODE_STRING Spare2; + UNICODE_STRING Spare3; + UNICODE_STRING Spare4; +} +alias SECPKG_PRIMARY_CRED* PSECPKG_PRIMARY_CRED; +struct SECPKG_SUPPLEMENTAL_CRED { + UNICODE_STRING PackageName; + ULONG CredentialSize; + PUCHAR Credentials; +} +alias SECPKG_SUPPLEMENTAL_CRED* PSECPKG_SUPPLEMENTAL_CRED; +struct SECPKG_SUPPLEMENTAL_CRED_ARRAY { + ULONG CredentialCount; + SECPKG_SUPPLEMENTAL_CRED[1] Credentials; +} +alias SECPKG_SUPPLEMENTAL_CRED_ARRAY* PSECPKG_SUPPLEMENTAL_CRED_ARRAY; +struct SECPKG_PARAMETERS { + ULONG Version; + ULONG MachineState; + ULONG SetupMode; + PSID DomainSid; + UNICODE_STRING DomainName; + UNICODE_STRING DnsDomainName; + GUID DomainGuid; +} +alias SECPKG_PARAMETERS* PSECPKG_PARAMETERS,PSECPKG_EVENT_DOMAIN_CHANGE; +alias SECPKG_PARAMETERS SECPKG_EVENT_DOMAIN_CHANGE; +struct SECPKG_CLIENT_INFO { + LUID LogonId; + ULONG ProcessID; + ULONG ThreadID; + BOOLEAN HasTcbPrivilege; + BOOLEAN Impersonating; + BOOLEAN Restricted; +} +alias SECPKG_CLIENT_INFO* PSECPKG_CLIENT_INFO; +struct SECURITY_USER_DATA { + SECURITY_STRING UserName; + SECURITY_STRING LogonDomainName; + SECURITY_STRING LogonServer; + PSID pSid; +} +alias SECURITY_USER_DATA* PSECURITY_USER_DATA,PSecurityUserData; +alias SECURITY_USER_DATA SecurityUserData; +struct SECPKG_GSS_INFO { + ULONG EncodedIdLength; + UCHAR[4] EncodedId; +} +alias SECPKG_GSS_INFO* PSECPKG_GSS_INFO; +struct SECPKG_CONTEXT_THUNKS { + ULONG InfoLevelCount; + ULONG[1] Levels; +} +alias SECPKG_CONTEXT_THUNKS* PSECPKG_CONTEXT_THUNKS; +struct SECPKG_MUTUAL_AUTH_LEVEL { + ULONG MutualAuthLevel; +} +alias SECPKG_MUTUAL_AUTH_LEVEL* PSECPKG_MUTUAL_AUTH_LEVEL; +struct SECPKG_CALL_INFO { + ULONG ProcessId; + ULONG ThreadId; + ULONG Attributes; + ULONG CallCount; +} +alias SECPKG_CALL_INFO* PSECPKG_CALL_INFO; +struct SECPKG_EXTENDED_INFORMATION { + SECPKG_EXTENDED_INFORMATION_CLASS Class; + union _Info{ + SECPKG_GSS_INFO GssInfo; + SECPKG_CONTEXT_THUNKS ContextThunks; + SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel; + } + _Info Info; +} +alias SECPKG_EXTENDED_INFORMATION* PSECPKG_EXTENDED_INFORMATION; + +/* callbacks implemented by SSP/AP dlls and called by the LSA */ +alias void function(ULONG_PTR, ULONG_PTR, PSecBuffer, + PSecBuffer) PLSA_CALLBACK_FUNCTION; + +/* misc typedefs used in the below prototypes */ +alias PVOID* PLSA_CLIENT_REQUEST; +alias ULONG LSA_SEC_HANDLE; +alias ULONG* PLSA_SEC_HANDLE; +alias LPTHREAD_START_ROUTINE SEC_THREAD_START; +alias PSECURITY_ATTRIBUTES SEC_ATTRS; + +/* functions used by SSP/AP obtainable by dispatch tables */ +alias NTSTATUS function(ULONG, PLSA_CALLBACK_FUNCTION) PLSA_REGISTER_CALLBACK; +alias NTSTATUS function(PLUID) PLSA_CREATE_LOGON_SESSION; +alias NTSTATUS function(PLUID) PLSA_DELETE_LOGON_SESSION; +alias NTSTATUS function(PLUID, ULONG, PLSA_STRING, + PLSA_STRING) PLSA_ADD_CREDENTIAL; +alias NTSTATUS function(PLUID, ULONG, PULONG, BOOLEAN, + PLSA_STRING, PULONG, PLSA_STRING) PLSA_GET_CREDENTIALS; +alias NTSTATUS function(PLUID, ULONG, PLSA_STRING) PLSA_DELETE_CREDENTIAL; +alias PVOID function(ULONG) PLSA_ALLOCATE_LSA_HEAP; +alias void function(PVOID) PLSA_FREE_LSA_HEAP; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + ULONG, PVOID*) PLSA_ALLOCATE_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, PVOID) PLSA_FREE_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, ULONG, + PVOID, PVOID) PLSA_COPY_TO_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + ULONG, PVOID, PVOID) PLSA_COPY_FROM_CLIENT_BUFFER; +alias NTSTATUS function() PLSA_IMPERSONATE_CLIENT; +alias NTSTATUS function() PLSA_UNLOAD_PACKAGE; +alias NTSTATUS function(HANDLE, PHANDLE) PLSA_DUPLICATE_HANDLE; +alias NTSTATUS function(PLUID, ULONG, + PVOID, BOOLEAN) PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS; +alias HANDLE function(SEC_ATTRS, ULONG, SEC_THREAD_START, + PVOID, ULONG, PULONG) PLSA_CREATE_THREAD; +alias NTSTATUS function(PSECPKG_CLIENT_INFO) PLSA_GET_CLIENT_INFO; +alias HANDLE function(SEC_THREAD_START, PVOID, + ULONG, ULONG, ULONG, ULONG, HANDLE) PLSA_REGISTER_NOTIFICATION; +alias NTSTATUS function(HANDLE) PLSA_CANCEL_NOTIFICATION; +alias NTSTATUS function(PSecBuffer, PSecBuffer) PLSA_MAP_BUFFER; +alias NTSTATUS function(PLUID, PTOKEN_SOURCE, + SECURITY_LOGON_TYPE, SECURITY_IMPERSONATION_LEVEL, LSA_TOKEN_INFORMATION_TYPE, + PVOID, PTOKEN_GROUPS, PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, + PUNICODE_STRING, PHANDLE, PNTSTATUS) PLSA_CREATE_TOKEN; +alias void function(NTSTATUS, NTSTATUS, PUNICODE_STRING, + PUNICODE_STRING, PUNICODE_STRING, PSID, SECURITY_LOGON_TYPE, + PTOKEN_SOURCE, PLUID) PLSA_AUDIT_LOGON; +alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, + PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE; +alias BOOLEAN function(PSECPKG_CALL_INFO) PLSA_GET_CALL_INFO; +alias NTSTATUS function(PUNICODE_STRING, PVOID, PVOID, + ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGEEX; +alias PVOID function(ULONG, ULONG) PLSA_CREATE_SHARED_MEMORY; +alias PVOID function(PVOID, ULONG) PLSA_ALLOCATE_SHARED_MEMORY; +alias void function(PVOID, PVOID) PLSA_FREE_SHARED_MEMORY; +alias BOOLEAN function(PVOID) PLSA_DELETE_SHARED_MEMORY; +alias NTSTATUS function(PSECURITY_STRING, SECPKG_NAME_TYPE, + PSECURITY_STRING, BOOLEAN, ULONG, PVOID*) PLSA_OPEN_SAM_USER; +alias NTSTATUS function(PVOID, PVOID *, PULONG, + PVOID *, PULONG) PLSA_GET_USER_CREDENTIALS; +alias NTSTATUS function(PVOID, PUCHAR *, PULONG) PLSA_GET_USER_AUTH_DATA; +alias NTSTATUS function(PVOID) PLSA_CLOSE_SAM_USER; +alias NTSTATUS function(PVOID, ULONG, + SECURITY_IMPERSONATION_LEVEL, PTOKEN_SOURCE, SECURITY_LOGON_TYPE, + PUNICODE_STRING, PHANDLE, PLUID, PUNICODE_STRING, PNTSTATUS) PLSA_CONVERT_AUTH_DATA_TO_TOKEN; +alias NTSTATUS function(PCHAR, ULONG_PTR, ULONG_PTR, + PSecBuffer, PSecBuffer) PLSA_CLIENT_CALLBACK; +alias NTSTATUS function(PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY) PLSA_UPDATE_PRIMARY_CREDENTIALS; +alias NTSTATUS function(PSECURITY_STRING, + SECPKG_NAME_TYPE, PSECURITY_STRING, PUCHAR *, PULONG, PUNICODE_STRING) PLSA_GET_AUTH_DATA_FOR_USER; +alias NTSTATUS function(ULONG, BOOLEAN, + PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING, + PULONG) PLSA_CRACK_SINGLE_NAME; +alias NTSTATUS function(ULONG, BOOLEAN, + PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS) PLSA_AUDIT_ACCOUNT_LOGON; +alias NTSTATUS function(PUNICODE_STRING, PVOID, + PVOID, ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE_PASSTHROUGH; + +/* Dispatch tables of functions used by SSP/AP */ +struct SECPKG_DLL_FUNCTIONS { + PLSA_ALLOCATE_LSA_HEAP AllocateHeap; + PLSA_FREE_LSA_HEAP FreeHeap; + PLSA_REGISTER_CALLBACK RegisterCallback; +} +alias SECPKG_DLL_FUNCTIONS* PSECPKG_DLL_FUNCTIONS; +struct LSA_DISPATCH_TABLE { + PLSA_CREATE_LOGON_SESSION CreateLogonSession; + PLSA_DELETE_LOGON_SESSION DeleteLogonSession; + PLSA_ADD_CREDENTIAL AddCredential; + PLSA_GET_CREDENTIALS GetCredentials; + PLSA_DELETE_CREDENTIAL DeleteCredential; + PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; + PLSA_FREE_LSA_HEAP FreeLsaHeap; + PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; + PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; + PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; + PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; +} +alias LSA_DISPATCH_TABLE* PLSA_DISPATCH_TABLE; +struct LSA_SECPKG_FUNCTION_TABLE { + PLSA_CREATE_LOGON_SESSION CreateLogonSession; + PLSA_DELETE_LOGON_SESSION DeleteLogonSession; + PLSA_ADD_CREDENTIAL AddCredential; + PLSA_GET_CREDENTIALS GetCredentials; + PLSA_DELETE_CREDENTIAL DeleteCredential; + PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; + PLSA_FREE_LSA_HEAP FreeLsaHeap; + PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; + PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; + PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; + PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; + PLSA_IMPERSONATE_CLIENT ImpersonateClient; + PLSA_UNLOAD_PACKAGE UnloadPackage; + PLSA_DUPLICATE_HANDLE DuplicateHandle; + PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials; + PLSA_CREATE_THREAD CreateThread; + PLSA_GET_CLIENT_INFO GetClientInfo; + PLSA_REGISTER_NOTIFICATION RegisterNotification; + PLSA_CANCEL_NOTIFICATION CancelNotification; + PLSA_MAP_BUFFER MapBuffer; + PLSA_CREATE_TOKEN CreateToken; + PLSA_AUDIT_LOGON AuditLogon; + PLSA_CALL_PACKAGE CallPackage; + PLSA_FREE_LSA_HEAP FreeReturnBuffer; + PLSA_GET_CALL_INFO GetCallInfo; + PLSA_CALL_PACKAGEEX CallPackageEx; + PLSA_CREATE_SHARED_MEMORY CreateSharedMemory; + PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory; + PLSA_FREE_SHARED_MEMORY FreeSharedMemory; + PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory; + PLSA_OPEN_SAM_USER OpenSamUser; + PLSA_GET_USER_CREDENTIALS GetUserCredentials; + PLSA_GET_USER_AUTH_DATA GetUserAuthData; + PLSA_CLOSE_SAM_USER CloseSamUser; + PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken; + PLSA_CLIENT_CALLBACK ClientCallback; + PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials; + PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser; + PLSA_CRACK_SINGLE_NAME CrackSingleName; + PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; + PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; +} +alias LSA_SECPKG_FUNCTION_TABLE* PLSA_SECPKG_FUNCTION_TABLE; + +/* functions implemented by SSP/AP obtainable by dispatch tables */ +alias NTSTATUS function(ULONG, PLSA_DISPATCH_TABLE, + PLSA_STRING, PLSA_STRING, PLSA_STRING *) PLSA_AP_INITIALIZE_PACKAGE; +alias NTSTATUS function(LPWSTR, LPWSTR, LPWSTR, LPWSTR, + DWORD, DWORD, PHANDLE) PLSA_AP_LOGON_USER; +alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, + PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE; +alias void function(PLUID) PLSA_AP_LOGON_TERMINATED; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_UNTRUSTED; +alias NTSTATUS function(PUNICODE_STRING, + PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_PASSTHROUGH; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, + PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, + PUNICODE_STRING *) PLSA_AP_LOGON_USER_EX; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, + PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, + PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *) PLSA_AP_LOGON_USER_EX2; +alias NTSTATUS function(ULONG_PTR, PSECPKG_PARAMETERS, + PLSA_SECPKG_FUNCTION_TABLE) SpInitializeFn; +alias NTSTATUS function() SpShutDownFn; +alias NTSTATUS function(PSecPkgInfoW) SpGetInfoFn; +alias NTSTATUS function(SECURITY_LOGON_TYPE, + PUNICODE_STRING, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED) SpAcceptCredentialsFn; +alias NTSTATUS function(PUNICODE_STRING, ULONG, + PLUID, PVOID, PVOID, PVOID, PLSA_SEC_HANDLE, PTimeStamp) SpAcquireCredentialsHandleFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryCredentialsAttributesFn; +alias NTSTATUS function(LSA_SEC_HANDLE) SpFreeCredentialsHandleFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpSaveCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpGetCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpDeleteCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, LSA_SEC_HANDLE, + PUNICODE_STRING, ULONG, ULONG, PSecBufferDesc, PLSA_SEC_HANDLE, PSecBufferDesc, + PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpInitLsaModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, + LSA_SEC_HANDLE, PSecBufferDesc, ULONG, ULONG, PLSA_SEC_HANDLE, PSecBufferDesc, + PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpAcceptLsaModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE) SpDeleteContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpApplyControlTokenFn; +alias NTSTATUS function(PLUID, ULONG, PSecurityUserData *) SpGetUserInfoFn; +alias NTSTATUS function(SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION *) SpGetExtendedInformationFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryContextAttributesFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PUNICODE_STRING, + PUNICODE_STRING, ULONG, PVOID, PVOID, PVOID, PTimeStamp) SpAddCredentialsFn; +alias NTSTATUS function( + SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION) SpSetExtendedInformationFn; +alias NTSTATUS function(ULONG, PSECPKG_DLL_FUNCTIONS, + PVOID *) SpInstanceInitFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpInitUserModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, + PSecBufferDesc, ULONG) SpMakeSignatureFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, + ULONG, PULONG) SpVerifySignatureFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PSecBufferDesc, + ULONG) SpSealMessageFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, + ULONG, PULONG) SpUnsealMessageFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PHANDLE) SpGetContextTokenFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpCompleteAuthTokenFn; +alias NTSTATUS function(PSecBuffer, PSecBuffer) SpFormatCredentialsFn; +alias NTSTATUS function(ULONG, PUCHAR, PULONG, + PVOID *) SpMarshallSupplementalCredsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, + PSecBuffer, PHANDLE) SpExportSecurityContextFn; +alias NTSTATUS function(PSecBuffer, HANDLE, + PLSA_SEC_HANDLE) SpImportSecurityContextFn; + +/* Dispatch tables of functions implemented by SSP/AP */ +struct SECPKG_FUNCTION_TABLE { + PLSA_AP_INITIALIZE_PACKAGE InitializePackage; + PLSA_AP_LOGON_USER LogonUser; + PLSA_AP_CALL_PACKAGE CallPackage; + PLSA_AP_LOGON_TERMINATED LogonTerminated; + PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted; + PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; + PLSA_AP_LOGON_USER_EX LogonUserEx; + PLSA_AP_LOGON_USER_EX2 LogonUserEx2; + SpInitializeFn *Initialize; + SpShutDownFn *Shutdown; + SpGetInfoFn *GetInfo; + SpAcceptCredentialsFn *AcceptCredentials; + SpAcquireCredentialsHandleFn *AcquireCredentialsHandle; + SpQueryCredentialsAttributesFn *QueryCredentialsAttributes; + SpFreeCredentialsHandleFn *FreeCredentialsHandle; + SpSaveCredentialsFn *SaveCredentials; + SpGetCredentialsFn *GetCredentials; + SpDeleteCredentialsFn *DeleteCredentials; + SpInitLsaModeContextFn *InitLsaModeContext; + SpAcceptLsaModeContextFn *AcceptLsaModeContext; + SpDeleteContextFn *DeleteContext; + SpApplyControlTokenFn *ApplyControlToken; + SpGetUserInfoFn *GetUserInfo; + SpGetExtendedInformationFn *GetExtendedInformation; + SpQueryContextAttributesFn *QueryContextAttributes; + SpAddCredentialsFn *AddCredentials; + SpSetExtendedInformationFn *SetExtendedInformation; +} +alias SECPKG_FUNCTION_TABLE* PSECPKG_FUNCTION_TABLE; + +struct SECPKG_USER_FUNCTION_TABLE { + SpInstanceInitFn *InstanceInit; + SpInitUserModeContextFn *InitUserModeContext; + SpMakeSignatureFn *MakeSignature; + SpVerifySignatureFn *VerifySignature; + SpSealMessageFn *SealMessage; + SpUnsealMessageFn *UnsealMessage; + SpGetContextTokenFn *GetContextToken; + SpQueryContextAttributesFn *QueryContextAttributes; + SpCompleteAuthTokenFn *CompleteAuthToken; + SpDeleteContextFn *DeleteUserModeContext; + SpFormatCredentialsFn *FormatCredentials; + SpMarshallSupplementalCredsFn *MarshallSupplementalCreds; + SpExportSecurityContextFn *ExportContext; + SpImportSecurityContextFn *ImportContext; +} +alias SECPKG_USER_FUNCTION_TABLE* PSECPKG_USER_FUNCTION_TABLE; + +/* Entry points to SSP/AP */ +alias NTSTATUS function(ULONG, PULONG, + PSECPKG_FUNCTION_TABLE *, PULONG) SpLsaModeInitializeFn; +alias NTSTATUS function(ULONG, PULONG, + PSECPKG_USER_FUNCTION_TABLE *, PULONG) SpUserModeInitializeFn; + diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d new file mode 100644 index 0000000000..a12588d979 --- /dev/null +++ b/src/core/sys/windows/oaidl.d @@ -0,0 +1,672 @@ +/***********************************************************************\ +* oaidl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.oaidl; + +private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; + +const DISPID_UNKNOWN = -1; +const DISPID_VALUE = 0; +const DISPID_PROPERTYPUT = -3; +const DISPID_NEWENUM = -4; +const DISPID_EVALUATE = -5; +const DISPID_CONSTRUCTOR = -6; +const DISPID_DESTRUCTOR = -7; +const DISPID_COLLECT = -8; + +const FADF_AUTO = 1; +const FADF_STATIC = 2; +const FADF_EMBEDDED = 4; +const FADF_FIXEDSIZE = 16; +const FADF_RECORD = 32; +const FADF_HAVEIID = 64; +const FADF_HAVEVARTYPE = 128; +const FADF_BSTR = 256; +const FADF_UNKNOWN = 512; +const FADF_DISPATCH = 1024; +const FADF_VARIANT = 2048; +const FADF_RESERVED = 0xf0e8; +const FADF_DATADELETED = 0x1000; +const FADF_CREATEVECTOR = 0x2000; + +const PARAMFLAG_NONE = 0; +const PARAMFLAG_FIN = 1; +const PARAMFLAG_FOUT = 2; +const PARAMFLAG_FLCID = 4; +const PARAMFLAG_FRETVAL = 8; +const PARAMFLAG_FOPT = 16; +const PARAMFLAG_FHASDEFAULT = 32; + +const IDLFLAG_NONE = PARAMFLAG_NONE; +const IDLFLAG_FIN = PARAMFLAG_FIN; +const IDLFLAG_FOUT = PARAMFLAG_FOUT; +const IDLFLAG_FLCID = PARAMFLAG_FLCID; +const IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; + +const IMPLTYPEFLAG_FDEFAULT = 1; +const IMPLTYPEFLAG_FSOURCE = 2; +const IMPLTYPEFLAG_FRESTRICTED = 4; +const IMPLTYPEFLAG_FDEFAULTVTABLE = 8; + + +enum SYSKIND { + SYS_WIN16, + SYS_WIN32, + SYS_MAC +} + +enum LIBFLAGS { + LIBFLAG_FRESTRICTED = 1, + LIBFLAG_FCONTROL = 2, + LIBFLAG_FHIDDEN = 4, + LIBFLAG_FHASDISKIMAGE = 8 +} + +struct TLIBATTR { + GUID guid; + LCID lcid; + SYSKIND syskind; + WORD wMajorVerNum; + WORD wMinorVerNum; + WORD wLibFlags; +} +alias TLIBATTR* LPTLIBATTR; + +alias CY CURRENCY; + +struct SAFEARRAYBOUND { + ULONG cElements; + LONG lLbound; +} +alias SAFEARRAYBOUND* LPSAFEARRAYBOUND; + +struct SAFEARR_BSTR { + ULONG Size; + wireBSTR* aBstr; +} + +struct SAFEARR_UNKNOWN { + ULONG Size; + IUnknown* apUnknown; +} + +struct SAFEARR_DISPATCH { + ULONG Size; + LPDISPATCH* apDispatch; +} + +struct SAFEARR_VARIANT { + ULONG Size; + _wireVARIANT* aVariant; +} + +enum SF_TYPE { + SF_ERROR=VARENUM.VT_ERROR, + SF_I1=VARENUM.VT_I1, + SF_I2=VARENUM.VT_I2, + SF_I4=VARENUM.VT_I4, + SF_I8=VARENUM.VT_I8, + SF_BSTR=VARENUM.VT_BSTR, + SF_UNKNOWN=VARENUM.VT_UNKNOWN, + SF_DISPATCH=VARENUM.VT_DISPATCH, + SF_VARIANT=VARENUM.VT_VARIANT +} + +struct _wireBRECORD { + ULONG fFlags; + ULONG clSize; + LPRECORDINFO* pRecInfo; + byte* pRecord; +} +alias _wireBRECORD* wireBRECORD; + +struct SAFEARR_BRECORD { + ULONG Size; + wireBRECORD* aRecord; +} + +struct SAFEARR_HAVEIID { + ULONG Size; + IUnknown* apUnknown; + IID iid; +} + +struct SAFEARRAYUNION { + ULONG sfType; + union _u { + SAFEARR_BSTR BstrStr; + SAFEARR_UNKNOWN UnknownStr; + SAFEARR_DISPATCH DispatchStr; + SAFEARR_VARIANT VariantStr; + SAFEARR_BRECORD RecordStr; + SAFEARR_HAVEIID HaveIidStr; + BYTE_SIZEDARR ByteStr; + WORD_SIZEDARR WordStr; + DWORD_SIZEDARR LongStr; + HYPER_SIZEDARR HyperStr; + } + _u u; +} + +struct _wireSAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + SAFEARRAYUNION uArrayStructs; + SAFEARRAYBOUND[1] rgsabound; +} +alias _wireSAFEARRAY* wireSAFEARRAY; + +alias wireSAFEARRAY* wirePSAFEARRAY; + +struct SAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + PVOID pvData; + SAFEARRAYBOUND[1] rgsabound; +} +alias SAFEARRAY* LPSAFEARRAY; + +struct VARIANT { + union { + struct { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + union { + int lVal; + LONGLONG llVal; + ubyte bVal; + short iVal; + float fltVal; + double dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + BSTR bstrVal; + IUnknown punkVal; + IDispatch pdispVal; + SAFEARRAY* parray; + ubyte* pbVal; + short* piVal; + int* plVal; + float* pfltVal; + double* pdblVal; + VARIANT_BOOL* pboolVal; + _VARIANT_BOOL* pbool; + SCODE* pscode; + CY* pcyVal; + DATE* pdate; + BSTR* pbstrVal; + IUnknown* ppunkVal; + IDispatch* ppdispVal; + SAFEARRAY** pparray; + VARIANT* pvarVal; + void* byref; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + ULONGLONG ullVal; + INT intVal; + UINT uintVal; + DECIMAL* pdecVal; + CHAR* pcVal; + USHORT* puiVal; + ULONG* pulVal; + INT* pintVal; + UINT* puintVal; + struct { + PVOID pvRecord; + IRecordInfo pRecInfo; + } + } + } + DECIMAL decVal; + } +} +alias VARIANT* LPVARIANT; + +alias VARIANT VARIANTARG; +alias VARIANT* LPVARIANTARG; + +struct _wireVARIANT { + DWORD clSize; + DWORD rpcReserved; + USHORT vt; + USHORT wReserved1; + USHORT wReserved2; + USHORT wReserved3; + union { + LONG lVal; + LONGLONG llVal; + BYTE bVal; + SHORT iVal; + FLOAT fltVal; + DOUBLE dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + wireBSTR bstrVal; + IUnknown punkVal; + LPDISPATCH pdispVal; + wirePSAFEARRAY parray; + wireBRECORD brecVal; + BYTE* pbVal; + SHORT* piVal; + LONG* plVal; + FLOAT* pfltVal; + DOUBLE* pdblVal; + VARIANT_BOOL* pboolVal; + SCODE* pscode; + CY* pcyVal; + DATE* pdate; + wireBSTR* pbstrVal; + IUnknown* ppunkVal; + LPDISPATCH* ppdispVal; + wirePSAFEARRAY* pparray; + wireVARIANT* pvarVal; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + ULONGLONG ullVal; + INT intVal; + UINT uintVal; + DECIMAL decVal; + DECIMAL* pdecVal; + CHAR* pcVal; + USHORT* puiVal; + ULONG* pulVal; + INT* pintVal; + UINT* puintVal; + } +} +alias _wireVARIANT* wireVARIANT; + +alias LONG DISPID; +alias DISPID MEMBERID; +alias DWORD HREFTYPE; + +enum TYPEKIND { + TKIND_ENUM, TKIND_RECORD, TKIND_MODULE, TKIND_INTERFACE, TKIND_DISPATCH, + TKIND_COCLASS, TKIND_ALIAS, TKIND_UNION, TKIND_MAX +} + +struct TYPEDESC { + union { + TYPEDESC* lptdesc; + ARRAYDESC* lpadesc; + HREFTYPE hreftype; + } + VARTYPE vt; +} + +struct ARRAYDESC { + TYPEDESC tdescElem; + USHORT cDims; + SAFEARRAYBOUND[1] rgbounds; +} + +struct PARAMDESCEX { + ULONG cBytes; + VARIANTARG varDefaultValue; +} +alias PARAMDESCEX* LPPARAMDESCEX; + +struct PARAMDESC { + LPPARAMDESCEX pparamdescex; + USHORT wParamFlags; +} +alias PARAMDESC* LPPARAMDESC; + +struct IDLDESC { + ULONG dwReserved; + USHORT wIDLFlags; +} +alias IDLDESC* LPIDLDESC; + +struct ELEMDESC { + TYPEDESC tdesc; + union { + IDLDESC idldesc; + PARAMDESC paramdesc; + } +} +alias ELEMDESC* LPELEMDESC; + +struct TYPEATTR { + GUID guid; + LCID lcid; + DWORD dwReserved; + MEMBERID memidConstructor; + MEMBERID memidDestructor; + LPOLESTR lpstrSchema; + ULONG cbSizeInstance; + TYPEKIND typekind; + WORD cFuncs; + WORD cVars; + WORD cImplTypes; + WORD cbSizeVft; + WORD cbAlignment; + WORD wTypeFlags; + WORD wMajorVerNum; + WORD wMinorVerNum; + TYPEDESC tdescAlias; + IDLDESC idldescType; +} +alias TYPEATTR* LPTYPEATTR; + +struct DISPPARAMS { + VARIANTARG* rgvarg; + DISPID* rgdispidNamedArgs; + UINT cArgs; + UINT cNamedArgs; +} + +struct EXCEPINFO { + WORD wCode; + WORD wReserved; + BSTR bstrSource; + BSTR bstrDescription; + BSTR bstrHelpFile; + DWORD dwHelpContext; + PVOID pvReserved; + extern (Windows) { + HRESULT function (EXCEPINFO* ) pfnDeferredFillIn; + } + SCODE scode; +} +alias EXCEPINFO* LPEXCEPINFO; + +enum CALLCONV { + CC_FASTCALL, + CC_CDECL, + CC_MSCPASCAL, + CC_PASCAL=CC_MSCPASCAL, + CC_MACPASCAL, + CC_STDCALL, + CC_FPFASTCALL, + CC_SYSCALL, + CC_MPWCDECL, + CC_MPWPASCAL, + CC_MAX=CC_MPWPASCAL +} + +enum FUNCKIND { + FUNC_VIRTUAL, + FUNC_PUREVIRTUAL, + FUNC_NONVIRTUAL, + FUNC_STATIC, + FUNC_DISPATCH +} + +enum INVOKEKIND { + INVOKE_FUNC = 1, + INVOKE_PROPERTYGET = 2, + INVOKE_PROPERTYPUT = 4, + INVOKE_PROPERTYPUTREF = 8 +} + +struct FUNCDESC { + MEMBERID memid; + SCODE* lprgscode; + ELEMDESC* lprgelemdescParam; + FUNCKIND funckind; + INVOKEKIND invkind; + CALLCONV callconv; + SHORT cParams; + SHORT cParamsOpt; + SHORT oVft; + SHORT cScodes; + ELEMDESC elemdescFunc; + WORD wFuncFlags; +} +alias FUNCDESC* LPFUNCDESC; + +enum VARKIND { + VAR_PERINSTANCE, VAR_STATIC, VAR_CONST, VAR_DISPATCH +} + +struct VARDESC { + MEMBERID memid; + LPOLESTR lpstrSchema; + union { + ULONG oInst; + VARIANT* lpvarValue; + } + ELEMDESC elemdescVar; + WORD wVarFlags; + VARKIND varkind; +} +alias VARDESC* LPVARDESC; + +enum TYPEFLAGS { + TYPEFLAG_FAPPOBJECT = 1, + TYPEFLAG_FCANCREATE = 2, + TYPEFLAG_FLICENSED = 4, + TYPEFLAG_FPREDECLID = 8, + TYPEFLAG_FHIDDEN = 16, + TYPEFLAG_FCONTROL = 32, + TYPEFLAG_FDUAL = 64, + TYPEFLAG_FNONEXTENSIBLE = 128, + TYPEFLAG_FOLEAUTOMATION = 256, + TYPEFLAG_FRESTRICTED = 512, + TYPEFLAG_FAGGREGATABLE = 1024, + TYPEFLAG_FREPLACEABLE = 2048, + TYPEFLAG_FDISPATCHABLE = 4096, + TYPEFLAG_FREVERSEBIND = 8192 +} + +enum FUNCFLAGS { + FUNCFLAG_FRESTRICTED = 1, + FUNCFLAG_FSOURCE = 2, + FUNCFLAG_FBINDABLE = 4, + FUNCFLAG_FREQUESTEDIT = 8, + FUNCFLAG_FDISPLAYBIND = 16, + FUNCFLAG_FDEFAULTBIND = 32, + FUNCFLAG_FHIDDEN = 64, + FUNCFLAG_FUSESGETLASTERROR = 128, + FUNCFLAG_FDEFAULTCOLLELEM = 256, + FUNCFLAG_FUIDEFAULT = 512, + FUNCFLAG_FNONBROWSABLE = 1024, + FUNCFLAG_FREPLACEABLE = 2048, + FUNCFLAG_FIMMEDIATEBIND = 4096 +} + +enum VARFLAGS { + VARFLAG_FREADONLY = 1, + VARFLAG_FSOURCE = 2, + VARFLAG_FBINDABLE = 4, + VARFLAG_FREQUESTEDIT = 8, + VARFLAG_FDISPLAYBIND = 16, + VARFLAG_FDEFAULTBIND = 32, + VARFLAG_FHIDDEN = 64, + VARFLAG_FRESTRICTED = 128, + VARFLAG_FDEFAULTCOLLELEM = 256, + VARFLAG_FUIDEFAULT = 512, + VARFLAG_FNONBROWSABLE = 1024, + VARFLAG_FREPLACEABLE = 2048, + VARFLAG_FIMMEDIATEBIND = 4096 +} + +struct CLEANLOCALSTORAGE { + IUnknown pInterface; + PVOID pStorage; + DWORD flags; +} + +struct CUSTDATAITEM { + GUID guid; + VARIANTARG varValue; +} +alias CUSTDATAITEM* LPCUSTDATAITEM; + +struct CUSTDATA { + DWORD cCustData; + LPCUSTDATAITEM prgCustData; +} +alias CUSTDATA* LPCUSTDATA; + +enum DESCKIND { + DESCKIND_NONE = 0, + DESCKIND_FUNCDESC = DESCKIND_NONE+1, + DESCKIND_VARDESC = DESCKIND_FUNCDESC+1, + DESCKIND_TYPECOMP = DESCKIND_VARDESC+1, + DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP+1, + DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ+1 +} + +union BINDPTR { + LPFUNCDESC lpfuncdesc; + LPVARDESC lpvardesc; + LPTYPECOMP lptcomp; +} +alias BINDPTR* LPBINDPTR; + +interface IDispatch : IUnknown { + HRESULT GetTypeInfoCount(UINT*); + HRESULT GetTypeInfo(UINT, LCID, LPTYPEINFO*); + HRESULT GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*); + HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); +} +alias IDispatch LPDISPATCH; + +interface IEnumVARIANT : IUnknown { + HRESULT Next(ULONG, VARIANT*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumVARIANT*); +} +alias IEnumVARIANT LPENUMVARIANT; + +interface ITypeComp : IUnknown { + HRESULT Bind(LPOLESTR, ULONG, WORD, LPTYPEINFO*, DESCKIND*, LPBINDPTR); + HRESULT BindType(LPOLESTR, ULONG, LPTYPEINFO*, LPTYPECOMP*); +} +alias ITypeComp LPTYPECOMP; + +interface ITypeInfo : IUnknown { + HRESULT GetTypeAttr(LPTYPEATTR*); + HRESULT GetTypeComp(LPTYPECOMP*); + HRESULT GetFuncDesc(UINT, LPFUNCDESC*); + HRESULT GetVarDesc(UINT, LPVARDESC*); + HRESULT GetNames(MEMBERID, BSTR*, UINT, UINT*); + HRESULT GetRefTypeOfImplType(UINT, HREFTYPE*); + HRESULT GetImplTypeFlags(UINT, INT*); + HRESULT GetIDsOfNames(LPOLESTR*, UINT, MEMBERID*); + HRESULT Invoke(PVOID, MEMBERID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, + UINT*); + HRESULT GetDocumentation(MEMBERID, BSTR*, BSTR*, DWORD*, BSTR*); + HRESULT GetDllEntry(MEMBERID, INVOKEKIND, BSTR*, BSTR*, WORD*); + HRESULT GetRefTypeInfo(HREFTYPE, LPTYPEINFO*); + HRESULT AddressOfMember(MEMBERID, INVOKEKIND, PVOID*); + HRESULT CreateInstance(LPUNKNOWN, REFIID, PVOID*); + HRESULT GetMops(MEMBERID, BSTR*); + HRESULT GetContainingTypeLib(LPTYPELIB*, UINT*); + void ReleaseTypeAttr(LPTYPEATTR); + void ReleaseFuncDesc(LPFUNCDESC); + void ReleaseVarDesc(LPVARDESC); +} +alias ITypeInfo LPTYPEINFO; + +interface ITypeInfo2 : ITypeInfo { + HRESULT GetTypeKind(TYPEKIND*); + HRESULT GetTypeFlags(ULONG*); + HRESULT GetFuncIndexOfMemId(MEMBERID, INVOKEKIND, UINT*); + HRESULT GetVarIndexOfMemId(MEMBERID, UINT*); + HRESULT GetCustData(REFGUID, VARIANT*); + HRESULT GetFuncCustData(UINT, REFGUID, VARIANT*); + HRESULT GetParamCustData(UINT, UINT, REFGUID, VARIANT*); + HRESULT GetVarCustData(UINT, REFGUID, VARIANT*); + HRESULT GetImplTypeCustData(UINT, REFGUID, VARIANT*); + HRESULT GetDocumentation2(MEMBERID, LCID, BSTR*, DWORD*, BSTR*); + HRESULT GetAllCustData(CUSTDATA*); + HRESULT GetAllFuncCustData(UINT, CUSTDATA*); + HRESULT GetAllParamCustData(UINT, UINT, CUSTDATA*); + HRESULT GetAllVarCustData(UINT, CUSTDATA*); + HRESULT GetAllImplTypeCustData(UINT, CUSTDATA*); +} +alias ITypeInfo2 LPTYPEINFO2; + +interface ITypeLib : IUnknown { + UINT GetTypeInfoCount(); + HRESULT GetTypeInfo(UINT, ITypeInfo*); + HRESULT GetTypeInfoType(UINT, TYPEKIND*); + HRESULT GetTypeInfoOfGuid(REFGUID, ITypeInfo*); + HRESULT GetLibAttr(TLIBATTR**); + HRESULT GetTypeComp(ITypeComp); + HRESULT GetDocumentation(INT, BSTR*, BSTR*, DWORD*, BSTR*); + HRESULT IsName(LPOLESTR, ULONG, BOOL*); + HRESULT FindName(LPOLESTR, ULONG, ITypeInfo*, MEMBERID*, USHORT*); + void ReleaseTLibAttr(TLIBATTR*); +} +alias ITypeLib LPTYPELIB; + +interface ITypeLib2 : ITypeLib { + HRESULT GetCustData(REFGUID, VARIANT*); + HRESULT GetLibStatistics(ULONG*, ULONG*); + HRESULT GetDocumentation2(INT, LCID, BSTR*, DWORD*, BSTR*); + HRESULT GetAllCustData(CUSTDATA*); +} +alias ITypeLib2 LPTYPELIB2; + +interface IErrorInfo : IUnknown { + HRESULT GetGUID(GUID*); + HRESULT GetSource(BSTR*); + HRESULT GetDescription(BSTR*); + HRESULT GetHelpFile(BSTR*); + HRESULT GetHelpContext(DWORD*); +} +alias IErrorInfo LPERRORINFO; + +interface ICreateErrorInfo : IUnknown { + HRESULT SetGUID(REFGUID); + HRESULT SetSource(LPOLESTR); + HRESULT SetDescription(LPOLESTR); + HRESULT SetHelpFile(LPOLESTR); + HRESULT SetHelpContext(DWORD); +} +alias ICreateErrorInfo LPCREATEERRORINFO; + +interface ISupportErrorInfo : IUnknown { + HRESULT InterfaceSupportsErrorInfo(REFIID); +} +alias ISupportErrorInfo LPSUPPORTERRORINFO; + +interface IRecordInfo : IUnknown { + HRESULT RecordInit(PVOID); + HRESULT RecordClear(PVOID); + HRESULT RecordCopy(PVOID, PVOID); + HRESULT GetGuid(GUID*); + HRESULT GetName(BSTR*); + HRESULT GetSize(ULONG*); + HRESULT GetTypeInfo(ITypeInfo*); + HRESULT GetField(PVOID, LPCOLESTR, VARIANT*); + HRESULT GetFieldNoCopy(PVOID, LPCOLESTR, VARIANT*, PVOID*); + HRESULT PutField (ULONG, PVOID, LPCOLESTR, VARIANT*); + HRESULT PutFieldNoCopy(ULONG, PVOID, LPCOLESTR, VARIANT*); + HRESULT GetFieldNames(ULONG*, BSTR*); + BOOL IsMatchingType(); + PVOID RecordCreate(); + HRESULT RecordCreateCopy(PVOID, PVOID*); + HRESULT RecordDestroy (PVOID); +} +alias IRecordInfo LPRECORDINFO; + +interface ITypeMarshal : IUnknown { + HRESULT Size(PVOID, DWORD, PVOID, ULONG*); + HRESULT Marshal(PVOID, DWORD, PVOID, ULONG, BYTE*, ULONG*); + HRESULT Unmarshal(PVOID, DWORD, ULONG, BYTE*, ULONG*); + HRESULT Free(PVOID); +} diff --git a/src/core/sys/windows/objbase.d b/src/core/sys/windows/objbase.d new file mode 100644 index 0000000000..6f01b3f8fc --- /dev/null +++ b/src/core/sys/windows/objbase.d @@ -0,0 +1,207 @@ +/***********************************************************************\ +* objbase.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.objbase; +pragma(lib, "ole32"); + +import win32.cguid, win32.objidl, win32.unknwn, win32.wtypes; +private import win32.basetyps, win32.objfwd, win32.rpcdce, win32.winbase, + win32.windef; + +// DAC: Not needed for D? +//MACRO #define LISet32(li, v) ((li).HighPart=(v)<0?-1:0, (li).LowPart=(v)) +//MACRO #define ULISet32(li, v) ((li).HighPart=0, (li).LowPart=(v)) + +const CLSCTX_ALL = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER|CLSCTX.CLSCTX_LOCAL_SERVER; +const CLSCTX_INPROC = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER; +const CLSCTX_SERVER = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_LOCAL_SERVER|CLSCTX.CLSCTX_REMOTE_SERVER; +const MARSHALINTERFACE_MIN=500; +const CWCSTORAGENAME=32; + +const STGM_DIRECT = 0; +const STGM_TRANSACTED = 0x10000L; +const STGM_SIMPLE = 0x8000000L; +const STGM_READ = 0; +const STGM_WRITE = 1; +const STGM_READWRITE = 2; +const STGM_SHARE_DENY_NONE = 0x40; +const STGM_SHARE_DENY_READ = 0x30; +const STGM_SHARE_DENY_WRITE = 0x20; +const STGM_SHARE_EXCLUSIVE = 0x10; +const STGM_PRIORITY = 0x40000L; +const STGM_DELETEONRELEASE = 0x4000000; +const STGM_NOSCRATCH = 0x100000; +const STGM_CREATE = 0x1000; +const STGM_CONVERT = 0x20000; +const STGM_NOSNAPSHOT = 0x200000; +const STGM_FAILIFTHERE = 0; + +const ASYNC_MODE_COMPATIBILITY = 1; +const ASYNC_MODE_DEFAULT = 0; + +const STGTY_REPEAT = 256; +const STG_TOEND = 0xFFFFFFFF; +const STG_LAYOUT_SEQUENTIAL = 0; +const STG_LAYOUT_INTERLEAVED = 1; + +const COM_RIGHTS_EXECUTE = 1; +const COM_RIGHTS_SAFE_FOR_SCRIPTING = 2; + +const STGOPTIONS_VERSION = 2; + +enum STGFMT { + STGFMT_STORAGE = 0, + STGFMT_FILE = 3, + STGFMT_ANY = 4, + STGFMT_DOCFILE = 5 +} + +struct STGOPTIONS { + USHORT usVersion; + USHORT reserved; + ULONG ulSectorSize; + const(WCHAR)* pwcsTemplateFile; +} + +enum REGCLS { + REGCLS_SINGLEUSE = 0, + REGCLS_MULTIPLEUSE = 1, + REGCLS_MULTI_SEPARATE = 2 +} + +/* +BOOL IsEqualGUID(GUID rguid1, GUID rguid2) { + return rguid1 == rguid2; +} +*/ + +extern (Windows) BOOL IsEqualGUID( + REFGUID rguid1, + REFGUID rguid2 +); + +alias IsEqualGUID IsEqualIID; +alias IsEqualGUID IsEqualCLSID; + +enum COINIT { + COINIT_APARTMENTTHREADED = 2, + COINIT_MULTITHREADED = 0, + COINIT_DISABLE_OLE1DDE = 4, + COINIT_SPEED_OVER_MEMORY = 8 +} + +enum STDMSHLFLAGS { + SMEXF_SERVER = 1, + SMEXF_HANDLER +} + +extern(Windows) { + alias HRESULT function(REFCLSID, REFIID, PVOID*) LPFNGETCLASSOBJECT; + alias HRESULT function() LPFNCANUNLOADNOW; + + DWORD CoBuildVersion(); + HRESULT CoInitialize(PVOID); + HRESULT CoInitializeEx(LPVOID, DWORD); + void CoUninitialize(); + HRESULT CoGetMalloc(DWORD, LPMALLOC*); + DWORD CoGetCurrentProcess(); + HRESULT CoRegisterMallocSpy(LPMALLOCSPY); + HRESULT CoRevokeMallocSpy(); + HRESULT CoCreateStandardMalloc(DWORD, IMalloc*); + //#ifdef DBG + ULONG DebugCoGetRpcFault(); + void DebugCoSetRpcFault(ULONG); + //#endif + HRESULT CoGetClassObject(REFCLSID, DWORD, COSERVERINFO*, REFIID, PVOID*); + HRESULT CoRegisterClassObject(REFCLSID, LPUNKNOWN, DWORD, DWORD, PDWORD); + HRESULT CoRevokeClassObject(DWORD); + HRESULT CoGetMarshalSizeMax(ULONG*, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); + HRESULT CoMarshalInterface(LPSTREAM, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); + HRESULT CoUnmarshalInterface(LPSTREAM, REFIID, PVOID*); + HRESULT CoMarshalHresult(LPSTREAM, HRESULT); + HRESULT CoUnmarshalHresult(LPSTREAM, HRESULT*); + HRESULT CoReleaseMarshalData(LPSTREAM); + HRESULT CoDisconnectObject(LPUNKNOWN, DWORD); + HRESULT CoLockObjectExternal(LPUNKNOWN, BOOL, BOOL); + HRESULT CoGetStandardMarshal(REFIID, LPUNKNOWN, DWORD, PVOID, DWORD, LPMARSHAL*); + HRESULT CoGetStdMarshalEx(LPUNKNOWN, DWORD, LPUNKNOWN*); + BOOL CoIsHandlerConnected(LPUNKNOWN); + BOOL CoHasStrongExternalConnections(LPUNKNOWN); + HRESULT CoMarshalInterThreadInterfaceInStream(REFIID, LPUNKNOWN, LPSTREAM*); + HRESULT CoGetInterfaceAndReleaseStream(LPSTREAM, REFIID, PVOID*); + HRESULT CoCreateFreeThreadedMarshaler(LPUNKNOWN, LPUNKNOWN*); + HINSTANCE CoLoadLibrary(LPOLESTR, BOOL); + void CoFreeLibrary(HINSTANCE); + void CoFreeAllLibraries(); + void CoFreeUnusedLibraries(); + HRESULT CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, PVOID*); + HRESULT CoCreateInstanceEx(REFCLSID, IUnknown, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); + HRESULT StringFromCLSID(REFCLSID, LPOLESTR*); + HRESULT CLSIDFromString(LPOLESTR, LPCLSID); + HRESULT StringFromIID(REFIID, LPOLESTR*); + HRESULT IIDFromString(LPOLESTR, LPIID); + BOOL CoIsOle1Class(REFCLSID); + HRESULT ProgIDFromCLSID(REFCLSID, LPOLESTR*); + HRESULT CLSIDFromProgID(LPCOLESTR, LPCLSID); + int StringFromGUID2(REFGUID, LPOLESTR, int); + HRESULT CoCreateGuid(GUID*); + BOOL CoFileTimeToDosDateTime(FILETIME*, LPWORD, LPWORD); + BOOL CoDosDateTimeToFileTime(WORD, WORD, FILETIME*); + HRESULT CoFileTimeNow(FILETIME*); + HRESULT CoRegisterMessageFilter(LPMESSAGEFILTER, LPMESSAGEFILTER*); + HRESULT CoGetTreatAsClass(REFCLSID, LPCLSID); + HRESULT CoTreatAsClass(REFCLSID, REFCLSID); + HRESULT DllGetClassObject(REFCLSID, REFIID, PVOID*); + HRESULT DllCanUnloadNow(); + PVOID CoTaskMemAlloc(ULONG); + PVOID CoTaskMemRealloc(PVOID, ULONG); + void CoTaskMemFree(PVOID); + HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); + HRESULT CreateDataCache(LPUNKNOWN, REFCLSID, REFIID, PVOID*); + HRESULT StgCreateDocfile(const(OLECHAR)*, DWORD, DWORD, IStorage*); + HRESULT StgCreateDocfileOnILockBytes(ILockBytes, DWORD, DWORD, IStorage*); + HRESULT StgOpenStorage(const(OLECHAR)*, IStorage, DWORD, SNB, DWORD, IStorage*); + HRESULT StgOpenStorageOnILockBytes(ILockBytes, IStorage, DWORD, SNB, DWORD, IStorage*); + HRESULT StgIsStorageFile(const(OLECHAR)*); + HRESULT StgIsStorageILockBytes(ILockBytes); + HRESULT StgSetTimes(OLECHAR *, FILETIME *, FILETIME *, FILETIME *); + HRESULT StgCreateStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); + HRESULT StgOpenStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); + HRESULT BindMoniker(LPMONIKER, DWORD, REFIID, PVOID*); + HRESULT CoGetObject(LPCWSTR, BIND_OPTS*, REFIID, void**); + HRESULT MkParseDisplayName(LPBC, LPCOLESTR, ULONG*, LPMONIKER*); + HRESULT MonikerRelativePathTo(LPMONIKER, LPMONIKER, LPMONIKER*, BOOL); + HRESULT MonikerCommonPrefixWith(LPMONIKER, LPMONIKER, LPMONIKER*); + HRESULT CreateBindCtx(DWORD, LPBC*); + HRESULT CreateGenericComposite(LPMONIKER, LPMONIKER, LPMONIKER*); + HRESULT GetClassFile (LPCOLESTR, CLSID*); + HRESULT CreateFileMoniker(LPCOLESTR, LPMONIKER*); + HRESULT CreateItemMoniker(LPCOLESTR, LPCOLESTR, LPMONIKER*); + HRESULT CreateAntiMoniker(LPMONIKER*); + HRESULT CreatePointerMoniker(LPUNKNOWN, LPMONIKER*); + HRESULT GetRunningObjectTable(DWORD, LPRUNNINGOBJECTTABLE*); + HRESULT CoInitializeSecurity(PSECURITY_DESCRIPTOR, LONG, SOLE_AUTHENTICATION_SERVICE*, void*, DWORD, DWORD, void*, DWORD, void*); + HRESULT CoGetCallContext(REFIID, void**); + HRESULT CoQueryProxyBlanket(IUnknown*, DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTH_IDENTITY_HANDLE*, DWORD*); + HRESULT CoSetProxyBlanket(IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE, DWORD); + HRESULT CoCopyProxy(IUnknown*, IUnknown**); + HRESULT CoQueryClientBlanket(DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTHZ_HANDLE*, DWORD*); + HRESULT CoImpersonateClient(); + HRESULT CoRevertToSelf(); + HRESULT CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**); + HRESULT CoSwitchCallContext(IUnknown*, IUnknown**); + HRESULT CoGetInstanceFromFile(COSERVERINFO*, CLSID*, IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, MULTI_QI*); + HRESULT CoGetInstanceFromIStorage(COSERVERINFO*, CLSID*, IUnknown*, DWORD, IStorage*, DWORD, MULTI_QI*); + ULONG CoAddRefServerProcess(); + ULONG CoReleaseServerProcess(); + HRESULT CoResumeClassObjects(); + HRESULT CoSuspendClassObjects(); + HRESULT CoGetPSClsid(REFIID, CLSID*); + HRESULT CoRegisterPSClsid(REFIID, REFCLSID); +} diff --git a/src/core/sys/windows/objfwd.d b/src/core/sys/windows/objfwd.d new file mode 100644 index 0000000000..9903afdf1c --- /dev/null +++ b/src/core/sys/windows/objfwd.d @@ -0,0 +1,103 @@ +/***********************************************************************\ +* objfwd.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.objfwd; + +private import win32.objidl; + +/+ +// Forward declararions are not necessary in D. +extern(Windows) { + interface IMoniker; + interface IStream; + interface IMarshal; + interface IMalloc; + interface IMallocSpy; + interface IMessageFilter; + interface IPersist; + interface IPersistStream; + interface IRunningObjectTable; + interface IBindCtx; + interface IAdviseSink; + interface IAdviseSink2; + interface IDataObject; + interface IDataAdviseHolder; + + interface IEnumMoniker; + interface IEnumFORMATETC; + interface IEnumSTATDATA; + interface IEnumSTATSTG; + interface IEnumSTATPROPSTG; + interface IEnumString; + interface IEnumUnknown; + interface IStorage; + interface IPersistStorage; + interface ILockBytes; + interface IStdMarshalInfo; + interface IExternalConnection; + interface IRunnableObject; + interface IROTData; + interface IPersistFile; + interface IRootStorage; + interface IPropertyStorage; + interface IEnumSTATPROPSETSTG; + interface IPropertySetStorage; + interface IClientSecurity; + interface IServerSecurity; + interface IClassActivator; + interface IFillLockBytes; + interface IProgressNotify; + interface ILayoutStorage; + interface IRpcProxyBuffer; + interface IRpcChannelBuffer; + interface IRpcStubBuffer; +} ++/ +alias IMoniker LPMONIKER; +alias IStream LPSTREAM; +alias IMarshal LPMARSHAL; +alias IMalloc LPMALLOC; +alias IMallocSpy LPMALLOCSPY; +alias IMessageFilter LPMESSAGEFILTER; +alias IPersist LPPERSIST; +alias IPersistStream LPPERSISTSTREAM; +alias IRunningObjectTable LPRUNNINGOBJECTTABLE; +alias IBindCtx LPBINDCTX, LPBC; +alias IAdviseSink LPADVISESINK; +alias IAdviseSink2 LPADVISESINK2; +alias IDataObject LPDATAOBJECT; +alias IDataAdviseHolder LPDATAADVISEHOLDER; +alias IEnumMoniker LPENUMMONIKER; +alias IEnumFORMATETC LPENUMFORMATETC; +alias IEnumSTATDATA LPENUMSTATDATA; +alias IEnumSTATSTG LPENUMSTATSTG; +alias IEnumSTATPROPSTG LPENUMSTATPROPSTG; +alias IEnumString LPENUMSTRING; +alias IEnumUnknown LPENUMUNKNOWN; +alias IStorage LPSTORAGE; +alias IPersistStorage LPPERSISTSTORAGE; +alias ILockBytes LPLOCKBYTES; +alias IStdMarshalInfo LPSTDMARSHALINFO; +alias IExternalConnection LPEXTERNALCONNECTION; +alias IRunnableObject LPRUNNABLEOBJECT; +alias IROTData LPROTDATA; +alias IPersistFile LPPERSISTFILE; +alias IRootStorage LPROOTSTORAGE; +alias IRpcChannelBuffer LPRPCCHANNELBUFFER; +alias IRpcProxyBuffer LPRPCPROXYBUFFER; +alias IRpcStubBuffer LPRPCSTUBBUFFER; +alias IPropertyStorage LPPROPERTYSTORAGE; +alias IEnumSTATPROPSETSTG LPENUMSTATPROPSETSTG; +alias IPropertySetStorage LPPROPERTYSETSTORAGE; +alias IClientSecurity LPCLIENTSECURITY; +alias IServerSecurity LPSERVERSECURITY; +alias IClassActivator LPCLASSACTIVATOR; +alias IFillLockBytes LPFILLLOCKBYTES; +alias IProgressNotify LPPROGRESSNOTIFY; +alias ILayoutStorage LPLAYOUTSTORAGE; diff --git a/src/core/sys/windows/objidl.d b/src/core/sys/windows/objidl.d new file mode 100644 index 0000000000..d892924462 --- /dev/null +++ b/src/core/sys/windows/objidl.d @@ -0,0 +1,1307 @@ +/***********************************************************************\ +* objidl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +// TODO (Don): +// # why is "alias IPSFactoryBuffer* LPPSFACTORYBUFFER;" in this file, +// rather than in objfwd ? +// # do we need the proxies that are defined in this file? +module win32.objidl; + +import win32.unknwn; +import win32.objfwd; +private import win32.windef; +private import win32.basetyps; +private import win32.oleidl; +private import win32.wtypes; +private import win32.winbase; // for FILETIME +private import win32.rpcdce; + +struct STATSTG { + LPOLESTR pwcsName; + DWORD type; + ULARGE_INTEGER cbSize; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD grfMode; + DWORD grfLocksSupported; + CLSID clsid; + DWORD grfStateBits; + DWORD reserved; +} + +enum STGTY { + STGTY_STORAGE = 1, + STGTY_STREAM, + STGTY_LOCKBYTES, + STGTY_PROPERTY +} + +enum STREAM_SEEK { + STREAM_SEEK_SET, + STREAM_SEEK_CUR, + STREAM_SEEK_END +} + +struct INTERFACEINFO { + LPUNKNOWN pUnk; + IID iid; + WORD wMethod; +} +alias INTERFACEINFO* LPINTERFACEINFO; + +enum CALLTYPE { + CALLTYPE_TOPLEVEL = 1, + CALLTYPE_NESTED, + CALLTYPE_ASYNC, + CALLTYPE_TOPLEVEL_CALLPENDING, + CALLTYPE_ASYNC_CALLPENDING +} + +enum PENDINGTYPE { + PENDINGTYPE_TOPLEVEL = 1, + PENDINGTYPE_NESTED +} + +enum PENDINGMSG { + PENDINGMSG_CANCELCALL = 0, + PENDINGMSG_WAITNOPROCESS, + PENDINGMSG_WAITDEFPROCESS +} + +alias OLECHAR** SNB; + +enum DATADIR { + DATADIR_GET = 1, + DATADIR_SET +} +alias WORD CLIPFORMAT; +alias CLIPFORMAT* LPCLIPFORMAT; + +struct DVTARGETDEVICE { + DWORD tdSize; + WORD tdDriverNameOffset; + WORD tdDeviceNameOffset; + WORD tdPortNameOffset; + WORD tdExtDevmodeOffset; + BYTE[1] tdData; +} + +struct FORMATETC { + CLIPFORMAT cfFormat; + DVTARGETDEVICE* ptd; + DWORD dwAspect; + LONG lindex; + DWORD tymed; +} +alias FORMATETC* LPFORMATETC; + +struct RemSTGMEDIUM { + DWORD tymed; + DWORD dwHandleType; + ULONG pData; + uint pUnkForRelease; + uint cbData; + BYTE[1] data; +} + +struct HLITEM { + ULONG uHLID; + LPWSTR pwzFriendlyName; +} + +struct STATDATA { + FORMATETC formatetc; + DWORD grfAdvf; + IAdviseSink pAdvSink; + DWORD dwConnection; +} + +struct STATPROPSETSTG { + FMTID fmtid; + CLSID clsid; + DWORD grfFlags; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; +} + +enum EXTCONN { + EXTCONN_STRONG = 1, + EXTCONN_WEAK = 2, + EXTCONN_CALLABLE = 4 +} + +struct MULTI_QI { + const(IID)* pIID; + IUnknown pItf; + HRESULT hr; +} + +struct AUTH_IDENTITY { + USHORT* User; + ULONG UserLength; + USHORT* Domain; + ULONG DomainLength; + USHORT* Password; + ULONG PasswordLength; + ULONG Flags; +} + +struct COAUTHINFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + LPWSTR pwszServerPrincName; + DWORD dwAuthnLevel; + DWORD dwImpersonationLevel; + AUTH_IDENTITY* pAuthIdentityData; + DWORD dwCapabilities; +} + +struct COSERVERINFO { + DWORD dwReserved1; + LPWSTR pwszName; + COAUTHINFO* pAuthInfo; + DWORD dwReserved2; +} + +struct BIND_OPTS { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; +} +alias BIND_OPTS* LPBIND_OPTS; + +struct BIND_OPTS2 { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; + DWORD dwTrackFlags; + DWORD dwClassContext; + LCID locale; + COSERVERINFO* pServerInfo; +} +alias BIND_OPTS2* LPBIND_OPTS2; + +enum BIND_FLAGS { + BIND_MAYBOTHERUSER = 1, + BIND_JUSTTESTEXISTENCE +} + +struct STGMEDIUM { + DWORD tymed; + union { + HBITMAP hBitmap; + PVOID hMetaFilePict; + HENHMETAFILE hEnhMetaFile; + HGLOBAL hGlobal; + LPWSTR lpszFileName; + LPSTREAM pstm; + LPSTORAGE pstg; + } + LPUNKNOWN pUnkForRelease; +} +alias STGMEDIUM* LPSTGMEDIUM; + +enum LOCKTYPE { + LOCK_WRITE = 1, + LOCK_EXCLUSIVE = 2, + LOCK_ONLYONCE = 4 +} + +alias uint RPCOLEDATAREP; + +struct RPCOLEMESSAGE { + PVOID reserved1; + RPCOLEDATAREP dataRepresentation; + PVOID Buffer; + ULONG cbBuffer; + ULONG iMethod; + PVOID[5] reserved2; + ULONG rpcFlags; +} +alias RPCOLEMESSAGE* PRPCOLEMESSAGE; + +enum MKSYS { + MKSYS_NONE, + MKSYS_GENERICCOMPOSITE, + MKSYS_FILEMONIKER, + MKSYS_ANTIMONIKER, + MKSYS_ITEMMONIKER, + MKSYS_POINTERMONIKER +} + +enum MKREDUCE { + MKRREDUCE_ALL, + MKRREDUCE_ONE = 196608, + MKRREDUCE_TOUSER = 131072, + MKRREDUCE_THROUGHUSER = 65536 +} + +struct RemSNB { + uint ulCntStr; + uint ulCntChar; + OLECHAR[1] rgString; +} + +enum ADVF { + ADVF_NODATA = 1, + ADVF_PRIMEFIRST = 2, + ADVF_ONLYONCE = 4, + ADVFCACHE_NOHANDLER = 8, + ADVFCACHE_FORCEBUILTIN = 16, + ADVFCACHE_ONSAVE = 32, + ADVF_DATAONSTOP = 64 +} + +enum TYMED { + TYMED_HGLOBAL = 1, + TYMED_FILE = 2, + TYMED_ISTREAM = 4, + TYMED_ISTORAGE = 8, + TYMED_GDI = 16, + TYMED_MFPICT = 32, + TYMED_ENHMF = 64, + TYMED_NULL = 0 +} + +enum SERVERCALL { + SERVERCALL_ISHANDLED, + SERVERCALL_REJECTED, + SERVERCALL_RETRYLATER +} + +struct CAUB { + ULONG cElems; + ubyte* pElems; +} + +struct CAI { + ULONG cElems; + short* pElems; +} + +struct CAUI { + ULONG cElems; + USHORT* pElems; +} + +struct CAL { + ULONG cElems; + int* pElems; +} + +struct CAUL { + ULONG cElems; + ULONG* pElems; +} + +struct CAFLT { + ULONG cElems; + float* pElems; +} + +struct CADBL { + ULONG cElems; + double* pElems; +} + +struct CACY { + ULONG cElems; + CY* pElems; +} + +struct CADATE { + ULONG cElems; + DATE* pElems; +} + +struct CABSTR { + ULONG cElems; + BSTR* pElems; +} + +struct CABSTRBLOB { + ULONG cElems; + BSTRBLOB* pElems; +} + +struct CABOOL { + ULONG cElems; + VARIANT_BOOL* pElems; +} + +struct CASCODE { + ULONG cElems; + SCODE* pElems; +} + +struct CAH { + ULONG cElems; + LARGE_INTEGER* pElems; +} + +struct CAUH { + ULONG cElems; + ULARGE_INTEGER* pElems; +} + +struct CALPSTR { + ULONG cElems; + LPSTR* pElems; +} + +struct CALPWSTR { + ULONG cElems; + LPWSTR* pElems; +} + +struct CAFILETIME { + ULONG cElems; + FILETIME* pElems; +} + +struct CACLIPDATA { + ULONG cElems; + CLIPDATA* pElems; +} + +struct CACLSID { + ULONG cElems; + CLSID* pElems; +} +alias PROPVARIANT* LPPROPVARIANT; + +struct CAPROPVARIANT { + ULONG cElems; + LPPROPVARIANT pElems; +} + +struct PROPVARIANT { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + union { + CHAR cVal; + UCHAR bVal; + short iVal; + USHORT uiVal; + VARIANT_BOOL boolVal; + int lVal; + ULONG ulVal; + float fltVal; + SCODE scode; + LARGE_INTEGER hVal; + ULARGE_INTEGER uhVal; + double dblVal; + CY cyVal; + DATE date; + FILETIME filetime; + CLSID* puuid; + BLOB blob; + CLIPDATA* pclipdata; + LPSTREAM pStream; + LPSTORAGE pStorage; + BSTR bstrVal; + BSTRBLOB bstrblobVal; + LPSTR pszVal; + LPWSTR pwszVal; + CAUB caub; + CAI cai; + CAUI caui; + CABOOL cabool; + CAL cal; + CAUL caul; + CAFLT caflt; + CASCODE cascode; + CAH cah; + CAUH cauh; + CADBL cadbl; + CACY cacy; + CADATE cadate; + CAFILETIME cafiletime; + CACLSID cauuid; + CACLIPDATA caclipdata; + CABSTR cabstr; + CABSTRBLOB cabstrblob; + CALPSTR calpstr; + CALPWSTR calpwstr; + CAPROPVARIANT capropvar; + } +} + +struct PROPSPEC { + ULONG ulKind; + union { + PROPID propid; + LPOLESTR lpwstr; + } +} + +struct STATPROPSTG { + LPOLESTR lpwstrName; + PROPID propid; + VARTYPE vt; +} + +enum PROPSETFLAG { + PROPSETFLAG_DEFAULT, + PROPSETFLAG_NONSIMPLE, + PROPSETFLAG_ANSI, + PROPSETFLAG_UNBUFFERED = 4 +} + +struct STORAGELAYOUT { + DWORD LayoutType; + OLECHAR* pwcsElementName; + LARGE_INTEGER cOffset; + LARGE_INTEGER cBytes; +} + +struct SOLE_AUTHENTICATION_SERVICE { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + OLECHAR* pPrincipalName; + HRESULT hr; +} + +const OLECHAR* COLE_DEFAULT_PRINCIPAL = cast ( OLECHAR* )(-1); + +enum EOLE_AUTHENTICATION_CAPABILITIES { + EOAC_NONE = 0, + EOAC_MUTUAL_AUTH = 0x1, + EOAC_SECURE_REFS = 0x2, + EOAC_ACCESS_CONTROL = 0x4, + EOAC_APPID = 0x8, + EOAC_DYNAMIC = 0x10, + EOAC_STATIC_CLOAKING = 0x20, + EOAC_DYNAMIC_CLOAKING = 0x40, + EOAC_ANY_AUTHORITY = 0x80, + EOAC_MAKE_FULLSIC = 0x100, + EOAC_REQUIRE_FULLSIC = 0x200, + EOAC_AUTO_IMPERSONATE = 0x400, + EOAC_DEFAULT = 0x800, + EOAC_DISABLE_AAA = 0x1000, + EOAC_NO_CUSTOM_MARSHAL = 0x2000 +} + +struct SOLE_AUTHENTICATION_INFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + void* pAuthInfo; +} + +const void* COLE_DEFAULT_AUTHINFO = cast( void* )(-1 ); + +struct SOLE_AUTHENTICATION_LIST { + DWORD cAuthInfo; + SOLE_AUTHENTICATION_INFO* aAuthInfo; +} + +interface IEnumFORMATETC : IUnknown { + HRESULT Next(ULONG, FORMATETC*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumFORMATETC*); +} + +interface IEnumHLITEM : IUnknown { + HRESULT Next(ULONG, HLITEM*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumHLITEM*); +} + +interface IEnumSTATDATA : IUnknown { + HRESULT Next(ULONG, STATDATA*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATDATA*); +} + +interface IEnumSTATPROPSETSTG : IUnknown { + HRESULT Next(ULONG, STATPROPSETSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATPROPSETSTG*); +} + +interface IEnumSTATPROPSTG : IUnknown { + HRESULT Next(ULONG, STATPROPSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATPROPSTG*); +} + +interface IEnumSTATSTG : IUnknown { + HRESULT Next(ULONG, STATSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATSTG*); +} + +interface IEnumString : IUnknown { + HRESULT Next(ULONG, LPOLESTR*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumString*); +} + +interface IEnumMoniker : IUnknown { + HRESULT Next(ULONG, IMoniker*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumMoniker*); +} + + +interface IEnumUnknown : IUnknown { + HRESULT Next(ULONG, IUnknown*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumUnknown*); +} + +interface ISequentialStream : IUnknown { + HRESULT Read(void*, ULONG, ULONG*); + HRESULT Write(void* , ULONG, ULONG*); +} + +interface IStream : ISequentialStream { + HRESULT Seek(LARGE_INTEGER, DWORD, ULARGE_INTEGER*); + HRESULT SetSize(ULARGE_INTEGER); + HRESULT CopyTo(IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT Stat(STATSTG*, DWORD); + HRESULT Clone(LPSTREAM*); +} + +interface IMarshal : IUnknown { + HRESULT GetUnmarshalClass(REFIID, PVOID, DWORD, PVOID, DWORD, CLSID*); + HRESULT GetMarshalSizeMax(REFIID, PVOID, DWORD, PVOID, PDWORD, ULONG*); + HRESULT MarshalInterface(IStream, REFIID, PVOID, DWORD, PVOID, DWORD); + HRESULT UnmarshalInterface(IStream, REFIID, void**); + HRESULT ReleaseMarshalData(IStream); + HRESULT DisconnectObject(DWORD); +} + +interface IStdMarshalInfo : IUnknown { + HRESULT GetClassForHandler(DWORD, PVOID, CLSID*); +} + +interface IMalloc : IUnknown { + void* Alloc(ULONG); + void* Realloc(void*, ULONG); + void Free(void*); + ULONG GetSize(void*); + int DidAlloc(void*); + void HeapMinimize(); +} + +interface IMallocSpy : IUnknown { + ULONG PreAlloc(ULONG); + void* PostAlloc(void*); + void* PreFree(void*, BOOL); + void PostFree(BOOL); + ULONG PreRealloc(void*, ULONG, void**, BOOL); + void* PostRealloc(void*, BOOL); + void* PreGetSize(void*, BOOL); + ULONG PostGetSize(ULONG, BOOL); + void* PreDidAlloc(void*, BOOL); + int PostDidAlloc(void*, BOOL, int); + void PreHeapMinimize(); + void PostHeapMinimize(); +} + +interface IMessageFilter : IUnknown { + DWORD HandleInComingCall(DWORD, HTASK, DWORD, LPINTERFACEINFO); + DWORD RetryRejectedCall(HTASK, DWORD, DWORD); + DWORD MessagePending(HTASK, DWORD, DWORD); +} + + +interface IPersist : IUnknown { + HRESULT GetClassID(CLSID*); +} + +interface IPersistStream : IPersist { + HRESULT IsDirty(); + HRESULT Load(IStream); + HRESULT Save(IStream, BOOL); + HRESULT GetSizeMax(PULARGE_INTEGER); +} + +interface IRunningObjectTable : IUnknown { + HRESULT Register(DWORD, LPUNKNOWN, LPMONIKER, PDWORD); + HRESULT Revoke(DWORD); + HRESULT IsRunning(LPMONIKER); + HRESULT GetObject(LPMONIKER, LPUNKNOWN*); + HRESULT NoteChangeTime(DWORD, LPFILETIME); + HRESULT GetTimeOfLastChange(LPMONIKER, LPFILETIME); + HRESULT EnumRunning(IEnumMoniker*); +} + +interface IBindCtx : IUnknown { + HRESULT RegisterObjectBound(LPUNKNOWN); + HRESULT RevokeObjectBound(LPUNKNOWN); + HRESULT ReleaseBoundObjects(); + HRESULT SetBindOptions(LPBIND_OPTS); + HRESULT GetBindOptions(LPBIND_OPTS); + HRESULT GetRunningObjectTable(IRunningObjectTable*); + HRESULT RegisterObjectParam(LPOLESTR, IUnknown); + HRESULT GetObjectParam(LPOLESTR, IUnknown*); + HRESULT EnumObjectParam(IEnumString*); + HRESULT RevokeObjectParam(LPOLESTR); +} + +interface IMoniker: IPersistStream { + HRESULT BindToObject(IBindCtx, IMoniker, REFIID, PVOID*); + HRESULT BindToStorage(IBindCtx, IMoniker, REFIID, PVOID*); + HRESULT Reduce(IBindCtx, DWORD, IMoniker*, IMoniker*); + HRESULT ComposeWith(IMoniker, BOOL, IMoniker*); + HRESULT Enum(BOOL, IEnumMoniker*); + HRESULT IsEqual(IMoniker); + HRESULT Hash(PDWORD); + HRESULT IsRunning(IBindCtx, IMoniker, IMoniker); + HRESULT GetTimeOfLastChange(IBindCtx, IMoniker, LPFILETIME); + HRESULT Inverse(IMoniker*); + HRESULT CommonPrefixWith(IMoniker, IMoniker*); + HRESULT RelativePathTo(IMoniker, IMoniker*); + HRESULT GetDisplayName(IBindCtx, IMoniker, LPOLESTR*); + HRESULT ParseDisplayName(IBindCtx, IMoniker, LPOLESTR, ULONG*, IMoniker*); + HRESULT IsSystemMoniker(PDWORD); +} + +interface IPersistStorage : IPersist +{ + HRESULT IsDirty(); + HRESULT InitNew(LPSTORAGE); + HRESULT Load(LPSTORAGE); + HRESULT Save(LPSTORAGE, BOOL); + HRESULT SaveCompleted(LPSTORAGE); + HRESULT HandsOffStorage(); +} + +interface IPersistFile : IPersist +{ + HRESULT IsDirty(); + HRESULT Load(LPCOLESTR, DWORD); + HRESULT Save(LPCOLESTR, BOOL); + HRESULT SaveCompleted(LPCOLESTR); + HRESULT GetCurFile(LPOLESTR*); +} + +interface IAdviseSink : IUnknown { + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + void OnDataChange(FORMATETC*, STGMEDIUM*); + void OnViewChange(DWORD, LONG); + void OnRename(IMoniker); + void OnSave(); + void OnClose(); +} + +interface IAdviseSink2 : IAdviseSink +{ + void OnLinkSrcChange(IMoniker); +} + +interface IDataObject : IUnknown { + HRESULT GetData(FORMATETC*, STGMEDIUM*); + HRESULT GetDataHere(FORMATETC*, STGMEDIUM*); + HRESULT QueryGetData(FORMATETC*); + HRESULT GetCanonicalFormatEtc(FORMATETC*, FORMATETC*); + HRESULT SetData(FORMATETC*, STGMEDIUM*, BOOL); + HRESULT EnumFormatEtc(DWORD, IEnumFORMATETC*); + HRESULT DAdvise(FORMATETC*, DWORD, IAdviseSink, PDWORD); + HRESULT DUnadvise(DWORD); + HRESULT EnumDAdvise(IEnumSTATDATA*); +} + +interface IDataAdviseHolder : IUnknown { + HRESULT Advise(IDataObject, FORMATETC*, DWORD, IAdviseSink, PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(IEnumSTATDATA*); + HRESULT SendOnDataChange(IDataObject, DWORD, DWORD); +} + +interface IStorage : IUnknown { + HRESULT CreateStream(LPCWSTR, DWORD, DWORD, DWORD, IStream); + HRESULT OpenStream(LPCWSTR, PVOID, DWORD, DWORD, IStream); + HRESULT CreateStorage(LPCWSTR, DWORD, DWORD, DWORD, IStorage); + HRESULT OpenStorage(LPCWSTR, IStorage, DWORD, SNB, DWORD, IStorage); + HRESULT CopyTo(DWORD, IID* , SNB, IStorage); + HRESULT MoveElementTo(LPCWSTR, IStorage, LPCWSTR, DWORD); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT EnumElements(DWORD, PVOID, DWORD, IEnumSTATSTG); + HRESULT DestroyElement(LPCWSTR); + HRESULT RenameElement(LPCWSTR, LPCWSTR); + HRESULT SetElementTimes(LPCWSTR, FILETIME* , FILETIME* , FILETIME* ); + HRESULT SetClass(REFCLSID); + HRESULT SetStateBits(DWORD, DWORD); + HRESULT Stat(STATSTG*, DWORD); +} + +// FIXME: GetClassID from IPersist not there - what to do about it? +interface IRootStorage : IPersist { + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT SwitchToFile(LPOLESTR); +} + +interface IRpcChannelBuffer : IUnknown { + HRESULT GetBuffer(RPCOLEMESSAGE*, REFIID); + HRESULT SendReceive(RPCOLEMESSAGE*, PULONG); + HRESULT FreeBuffer(RPCOLEMESSAGE*); + HRESULT GetDestCtx(PDWORD, PVOID*); + HRESULT IsConnected(); +} + +interface IRpcProxyBuffer : IUnknown { + HRESULT Connect(IRpcChannelBuffer); + void Disconnect(); +} + +interface IRpcStubBuffer : IUnknown { + HRESULT Connect(LPUNKNOWN); + void Disconnect(); + HRESULT Invoke(RPCOLEMESSAGE*, LPRPCSTUBBUFFER); + LPRPCSTUBBUFFER IsIIDSupported(REFIID); + ULONG CountRefs(); + HRESULT DebugServerQueryInterface(PVOID*); + HRESULT DebugServerRelease(PVOID); +} + +interface IPSFactoryBuffer : IUnknown { + HRESULT CreateProxy(LPUNKNOWN, REFIID, LPRPCPROXYBUFFER*, PVOID*); + HRESULT CreateStub(REFIID, LPUNKNOWN, LPRPCSTUBBUFFER*); +} +alias IPSFactoryBuffer LPPSFACTORYBUFFER; + +interface ILockBytes : IUnknown { + HRESULT ReadAt(ULARGE_INTEGER, PVOID, ULONG, ULONG*); + HRESULT WriteAt(ULARGE_INTEGER, PCVOID, ULONG, ULONG*); + HRESULT Flush(); + HRESULT SetSize(ULARGE_INTEGER); + HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT Stat(STATSTG*, DWORD); +} + +interface IExternalConnection : IUnknown { + HRESULT AddConnection(DWORD, DWORD); + HRESULT ReleaseConnection(DWORD, DWORD, BOOL); +} + +interface IRunnableObject : IUnknown { + HRESULT GetRunningClass(LPCLSID); + HRESULT Run(LPBC); + BOOL IsRunning(); + HRESULT LockRunning(BOOL, BOOL); + HRESULT SetContainedObject(BOOL); +} + +interface IROTData : IUnknown { + HRESULT GetComparisonData(PVOID, ULONG, PULONG); +} + +interface IChannelHook : IUnknown { + void ClientGetSize(REFGUID, REFIID, PULONG); + void ClientFillBuffer(REFGUID, REFIID, PULONG, PVOID); + void ClientNotify(REFGUID, REFIID, ULONG, PVOID, DWORD, HRESULT); + void ServerNotify(REFGUID, REFIID, ULONG, PVOID, DWORD); + void ServerGetSize(REFGUID, REFIID, HRESULT, PULONG); + void ServerFillBuffer(REFGUID, REFIID, PULONG, PVOID, HRESULT); +} + +interface IPropertyStorage : IUnknown { + HRESULT ReadMultiple(ULONG, PROPSPEC* , PROPVARIANT*); + HRESULT WriteMultiple(ULONG, PROPSPEC* , PROPVARIANT*, PROPID); + HRESULT DeleteMultiple(ULONG, PROPSPEC* ); + HRESULT ReadPropertyNames(ULONG, PROPID* , LPWSTR*); + HRESULT WritePropertyNames(ULONG, PROPID* , LPWSTR* ); + HRESULT DeletePropertyNames(ULONG, PROPID* ); + HRESULT SetClass(REFCLSID); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT Enum(IEnumSTATPROPSTG*); + HRESULT Stat(STATPROPSTG*); + HRESULT SetTimes(FILETIME* , FILETIME* , FILETIME* ); +} + +interface IPropertySetStorage : IUnknown { + HRESULT Create(REFFMTID, CLSID*, DWORD, DWORD, LPPROPERTYSTORAGE*); + HRESULT Open(REFFMTID, DWORD, LPPROPERTYSTORAGE*); + HRESULT Delete(REFFMTID); + HRESULT Enum(IEnumSTATPROPSETSTG*); +} + +interface IClientSecurity : IUnknown { + HRESULT QueryBlanket(PVOID, PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTH_IDENTITY_HANDLE**, PDWORD*); + HRESULT SetBlanket(PVOID, DWORD, DWORD, LPWSTR, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE*, DWORD); + HRESULT CopyProxy(LPUNKNOWN, LPUNKNOWN*); +} + +interface IServerSecurity : IUnknown { + HRESULT QueryBlanket(PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTHZ_HANDLE*, PDWORD*); + HRESULT ImpersonateClient(); + HRESULT RevertToSelf(); + HRESULT IsImpersonating(); +} + +interface IClassActivator : IUnknown { + HRESULT GetClassObject(REFCLSID, DWORD, LCID, REFIID, PVOID*); +} + +interface IFillLockBytes : IUnknown { + HRESULT FillAppend(void* , ULONG, PULONG); + HRESULT FillAt(ULARGE_INTEGER, void* , ULONG, PULONG); + HRESULT SetFillSize(ULARGE_INTEGER); + HRESULT Terminate(BOOL); +} + +interface IProgressNotify : IUnknown { + HRESULT OnProgress(DWORD, DWORD, BOOL, BOOL); +} + +interface ILayoutStorage : IUnknown { + HRESULT LayoutScript(STORAGELAYOUT*, DWORD, DWORD); + HRESULT BeginMonitor(); + HRESULT EndMonitor(); + HRESULT ReLayoutDocfile(OLECHAR*); +} + +interface IGlobalInterfaceTable : IUnknown { + HRESULT RegisterInterfaceInGlobal(IUnknown, REFIID, DWORD*); + HRESULT RevokeInterfaceFromGlobal(DWORD); + HRESULT GetInterfaceFromGlobal(DWORD, REFIID, void**); +} + +/+ +// These are probably unnecessary for D. +extern (Windows) { +HRESULT IMarshal_GetUnmarshalClass_Proxy(IMarshal, REFIID, void*, DWORD, void*, DWORD, CLSID*); +void IMarshal_GetUnmarshalClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_GetMarshalSizeMax_Proxy(IMarshal, REFIID, void*, DWORD, void*, DWORD, DWORD*); +void IMarshal_GetMarshalSizeMax_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_MarshalInterface_Proxy(IMarshal, IStream, REFIID, void*, DWORD, void*, DWORD); +void IMarshal_MarshalInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_UnmarshalInterface_Proxy(IMarshal, IStream, REFIID, void**); +void IMarshal_UnmarshalInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_ReleaseMarshalData_Proxy(IMarshal, IStream); +void IMarshal_ReleaseMarshalData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_DisconnectObject_Proxy(IMarshal, DWORD); +void IMarshal_DisconnectObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMalloc_Alloc_Proxy(IMalloc, ULONG); +void IMalloc_Alloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMalloc_Realloc_Proxy(IMalloc, void*, ULONG); +void IMalloc_Realloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMalloc_Free_Proxy(IMalloc, void*); +void IMalloc_Free_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMalloc_GetSize_Proxy(IMalloc, void*); +void IMalloc_GetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +int IMalloc_DidAlloc_Proxy(IMalloc, void*); +void IMalloc_DidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMalloc_HeapMinimize_Proxy(IMalloc); +void IMalloc_HeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMallocSpy_PreAlloc_Proxy(IMallocSpy, ULONG cbRequest); +void IMallocSpy_PreAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PostAlloc_Proxy(IMallocSpy, void*); +void IMallocSpy_PostAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PreFree_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PreFree_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMallocSpy_PostFree_Proxy(IMallocSpy, BOOL); +void IMallocSpy_PostFree_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMallocSpy_PreRealloc_Proxy(IMallocSpy, void*, ULONG, void**, BOOL); +void IMallocSpy_PreRealloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PostRealloc_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PostRealloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PreGetSize_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PreGetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMallocSpy_PostGetSize_Proxy(IMallocSpy, ULONG, BOOL); +void IMallocSpy_PostGetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PreDidAlloc_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PreDidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +int IMallocSpy_PostDidAlloc_Proxy(IMallocSpy, void*, BOOL, int); +void IMallocSpy_PostDidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMallocSpy_PreHeapMinimize_Proxy(IMallocSpy ); +void IMallocSpy_PreHeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMallocSpy_PostHeapMinimize_Proxy(IMallocSpy); +void IMallocSpy_PostHeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStdMarshalInfo_GetClassForHandler_Proxy(IStdMarshalInfo, DWORD, void*, CLSID*); +void IStdMarshalInfo_GetClassForHandler_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IExternalConnection_AddConnection_Proxy(IExternalConnection, DWORD, DWORD); +void IExternalConnection_AddConnection_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IExternalConnection_ReleaseConnection_Proxy(IExternalConnection, DWORD, DWORD, BOOL); +void IExternalConnection_ReleaseConnection_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_RemoteNext_Proxy(IEnumUnknown, ULONG, IUnknown*, ULONG*); +void IEnumUnknown_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_Skip_Proxy(IEnumUnknown, ULONG); +void IEnumUnknown_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_Reset_Proxy(IEnumUnknown ); +void IEnumUnknown_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_Clone_Proxy(IEnumUnknown, IEnumUnknown*); +void IEnumUnknown_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RegisterObjectBound_Proxy(IBindCtx, IUnknownpunk); +void IBindCtx_RegisterObjectBound_Stub(IRpcStubBuffer, IRpcChannelBuffer_pRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RevokeObjectBound_Proxy(IBindCtx, IUnknownpunk); +void IBindCtx_RevokeObjectBound_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_ReleaseBoundObjects_Proxy(IBindCtx); +void IBindCtx_ReleaseBoundObjects_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_SetBindOptions_Proxy(IBindCtx, BIND_OPTS*); +void IBindCtx_SetBindOptions_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_GetBindOptions_Proxy(IBindCtx, BIND_OPTS*pbindopts); +void IBindCtx_GetBindOptions_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_GetRunningObjectTable_Proxy(IBindCtx, IRunningObjectTable*); +void IBindCtx_GetRunningObjectTable_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RegisterObjectParam_Proxy(IBindCtx, LPCSTR, IUnknown); +void IBindCtx_RegisterObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_GetObjectParam_Proxy(IBindCtx, LPCSTR, IUnknown*); +void IBindCtx_GetObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_EnumObjectParam_Proxy(IBindCtx, IEnumString*); +void IBindCtx_EnumObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RevokeObjectParam_Proxy(IBindCtx, LPCSTR); +void IBindCtx_RevokeObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_RemoteNext_Proxy(IEnumMoniker, ULONG, IMoniker*, ULONG*); +void IEnumMoniker_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_Skip_Proxy(IEnumMoniker, ULONG); +void IEnumMoniker_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_Reset_Proxy(IEnumMoniker); +void IEnumMoniker_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_Clone_Proxy(IEnumMoniker, IEnumMoniker*); +void IEnumMoniker_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_GetRunningClass_Proxy(IRunnableObject, LPCLSID); +void IRunnableObject_GetRunningClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_Run_Proxy(IRunnableObject, LPBINDCTX); +void IRunnableObject_Run_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +BOOL IRunnableObject_IsRunning_Proxy(IRunnableObject); +void IRunnableObject_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_LockRunning_Proxy(IRunnableObject, BOOL, BOOL); +void IRunnableObject_LockRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_SetContainedObject_Proxy(IRunnableObject, BOOL); +void IRunnableObject_SetContainedObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_Register_Proxy(IRunningObjectTable, DWORD, IUnknown, IMoniker, DWORD*); +void IRunningObjectTable_Register_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_Revoke_Proxy(IRunningObjectTable, DWORD); +void IRunningObjectTable_Revoke_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_IsRunning_Proxy(IRunningObjectTable, IMoniker); +void IRunningObjectTable_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_GetObject_Proxy(IRunningObjectTable, IMoniker, IUnknown*); +void IRunningObjectTable_GetObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_NoteChangeTime_Proxy(IRunningObjectTable, DWORD, FILETIME*); +void IRunningObjectTable_NoteChangeTime_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_GetTimeOfLastChange_Proxy(IRunningObjectTable, IMoniker, FILETIME*); +void IRunningObjectTable_GetTimeOfLastChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_EnumRunning_Proxy(IRunningObjectTable, IEnumMoniker*); +void IRunningObjectTable_EnumRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersist_GetClassID_Proxy(IPersist, CLSID*); +void IPersist_GetClassID_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_IsDirty_Proxy(IPersistStream); +void IPersistStream_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_Load_Proxy(IPersistStream, IStream); +void IPersistStream_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_Save_Proxy(IPersistStream, IStream, BOOL); +void IPersistStream_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_GetSizeMax_Proxy(IPersistStream, ULARGE_INTEGER*); +void IPersistStream_GetSizeMax_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_RemoteBindToObject_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +void IMoniker_RemoteBindToObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_RemoteBindToStorage_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +void IMoniker_RemoteBindToStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Reduce_Proxy(IMoniker, IBindCtx, DWORD, IMoniker*, IMoniker*); +void IMoniker_Reduce_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_ComposeWith_Proxy(IMoniker, IMoniker, BOOL, IMoniker*); +void IMoniker_ComposeWith_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Enum_Proxy(IMoniker, BOOL, IEnumMoniker*); +void IMoniker_Enum_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_IsEqual_Proxy(IMoniker, IMoniker); +void IMoniker_IsEqual_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Hash_Proxy(IMoniker, DWORD*); +void IMoniker_Hash_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_IsRunning_Proxy(IMoniker, IBindCtx, IMoniker, IMoniker); +void IMoniker_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_GetTimeOfLastChange_Proxy(IMoniker, IBindCtx, IMoniker, FILETIME*); +void IMoniker_GetTimeOfLastChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Inverse_Proxy(IMoniker, IMoniker*); +void IMoniker_Inverse_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_CommonPrefixWith_Proxy(IMoniker, IMoniker, IMoniker*); +void IMoniker_CommonPrefixWith_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_RelativePathTo_Proxy(IMoniker, IMoniker, IMoniker*); +void IMoniker_RelativePathTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_GetDisplayName_Proxy(IMoniker, IBindCtx, IMoniker, LPCSTR*); +void IMoniker_GetDisplayName_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_ParseDisplayName_Proxy(IMoniker, IBindCtx, IMoniker, LPCSTR, ULONG*, IMoniker*); +void IMoniker_ParseDisplayName_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_IsSystemMoniker_Proxy(IMoniker, DWORD*); +void IMoniker_IsSystemMoniker_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IROTData_GetComparisonData_Proxy(IROTData, BYTE*, ULONG cbMax, ULONG*); +void IROTData_GetComparisonData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_RemoteNext_Proxy(IEnumString, ULONG, LPCSTR*rgelt, ULONG*); +void IEnumString_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_Skip_Proxy(IEnumString, ULONG); +void IEnumString_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_Reset_Proxy(IEnumString); +void IEnumString_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_Clone_Proxy(IEnumString, IEnumString*); +void IEnumString_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteRead_Proxy(IStream, BYTE*, ULONG, ULONG*); +void IStream_RemoteRead_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteWrite_Proxy(IStream, BYTE*pv, ULONG, ULONG*); +void IStream_RemoteWrite_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteSeek_Proxy(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); +void IStream_RemoteSeek_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_SetSize_Proxy(IStream, ULARGE_INTEGER); +void IStream_SetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteCopyTo_Proxy(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); +void IStream_RemoteCopyTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Commit_Proxy(IStream, DWORD); +void IStream_Commit_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Revert_Proxy(IStream); +void IStream_Revert_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_LockRegion_Proxy(IStream, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void IStream_LockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_UnlockRegion_Proxy(IStream, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void IStream_UnlockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Stat_Proxy(IStream, STATSTG*, DWORD); +void IStream_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Clone_Proxy(IStream, IStream*); +void IStream_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_RemoteNext_Proxy(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); +void IEnumSTATSTG_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_Skip_Proxy(IEnumSTATSTG, ULONG celt); +void IEnumSTATSTG_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_Reset_Proxy(IEnumSTATSTG); +void IEnumSTATSTG_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_Clone_Proxy(IEnumSTATSTG, IEnumSTATSTG*); +void IEnumSTATSTG_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_CreateStream_Proxy(IStorage, OLECHAR*, DWORD, DWORD, DWORD, IStream*); +void IStorage_CreateStream_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_RemoteOpenStream_Proxy(IStorage, const(OLECHAR)*, uint, BYTE*, DWORD, DWORD, IStream*); +void IStorage_RemoteOpenStream_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_CreateStorage_Proxy(IStorage, OLECHAR*, DWORD, DWORD, DWORD, IStorage*); +void IStorage_CreateStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_OpenStorage_Proxy(IStorage, OLECHAR*, IStorage, DWORD, SNB, DWORD, IStorage*); +void IStorage_OpenStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_CopyTo_Proxy(IStorage, DWORD, const(IID)*, SNB, IStorage); +void IStorage_CopyTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_MoveElementTo_Proxy(IStorage, const(OLECHAR)*, IStorage, const(OLECHAR)*, DWORD); +void IStorage_MoveElementTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_Commit_Proxy(IStorage, DWORD); +void IStorage_Commit_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_Revert_Proxy(IStorage); +void IStorage_Revert_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_RemoteEnumElements_Proxy(IStorage, DWORD, uint, BYTE*, DWORD, IEnumSTATSTG*); +void IStorage_RemoteEnumElements_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_DestroyElement_Proxy(IStorage, OLECHAR*); +void IStorage_DestroyElement_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_RenameElement_Proxy(IStorage, const(OLECHAR)*, const(OLECHAR)*); +void IStorage_RenameElement_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_SetElementTimes_Proxy(IStorage, const(OLECHAR)*, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); +void IStorage_SetElementTimes_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_SetClass_Proxy(IStorage, REFCLSID); +void IStorage_SetClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_SetStateBits_Proxy(IStorage, DWORD, DWORD); +void IStorage_SetStateBits_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_Stat_Proxy(IStorage, STATSTG*, DWORD); +void IStorage_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_IsDirty_Proxy(IPersistFile); +void IPersistFile_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_Load_Proxy(IPersistFile, LPCOLESTR, DWORD); +void IPersistFile_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_Save_Proxy(IPersistFile, LPCOLESTR pszFileName, BOOL); +void IPersistFile_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_SaveCompleted_Proxy(IPersistFile, LPCOLESTR); +void IPersistFile_SaveCompleted_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_GetCurFile_Proxy(IPersistFile, LPCSTR*); +void IPersistFile_GetCurFile_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_IsDirty_Proxy(IPersistStorage); +void IPersistStorage_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_InitNew_Proxy(IPersistStorage, IStorage); +void IPersistStorage_InitNew_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_Load_Proxy(IPersistStorage, IStorage); +void IPersistStorage_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_Save_Proxy(IPersistStorage, IStorage, BOOL); +void IPersistStorage_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_SaveCompleted_Proxy(IPersistStorage, IStorage); +void IPersistStorage_SaveCompleted_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_HandsOffStorage_Proxy(IPersistStorage); +void IPersistStorage_HandsOffStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_RemoteReadAt_Proxy(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); +void ILockBytes_RemoteReadAt_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_RemoteWriteAt_Proxy(ILockBytes, ULARGE_INTEGER, BYTE*pv, ULONG, ULONG*); +void ILockBytes_RemoteWriteAt_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_Flush_Proxy(ILockBytes); +void ILockBytes_Flush_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_SetSize_Proxy(ILockBytes, ULARGE_INTEGER); +void ILockBytes_SetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_LockRegion_Proxy(ILockBytes, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void ILockBytes_LockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_UnlockRegion_Proxy(ILockBytes, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void ILockBytes_UnlockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_Stat_Proxy(ILockBytes, STATSTG*, DWORD); +void ILockBytes_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); +void IEnumFORMATETC_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Skip_Proxy(IEnumFORMATETC, ULONG); +void IEnumFORMATETC_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Reset_Proxy(IEnumFORMATETC); +void IEnumFORMATETC_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Clone_Proxy(IEnumFORMATETC, IEnumFORMATETC*); +void IEnumFORMATETC_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Next_Proxy(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); +HRESULT IEnumFORMATETC_Next_Stub(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); +HRESULT IEnumSTATDATA_RemoteNext_Proxy(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); +void IEnumSTATDATA_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Skip_Proxy(IEnumSTATDATA, ULONG); +void IEnumSTATDATA_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Reset_Proxy(IEnumSTATDATA); +void IEnumSTATDATA_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Clone_Proxy(IEnumSTATDATA, IEnumSTATDATA*); +void IEnumSTATDATA_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Next_Proxy(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); +HRESULT IEnumSTATDATA_Next_Stub(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); +HRESULT IRootStorage_SwitchToFile_Proxy(IRootStorage, LPCSTR); +void IRootStorage_SwitchToFile_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnDataChange_Proxy(IAdviseSink, FORMATETC*, RemSTGMEDIUM*); +void IAdviseSink_RemoteOnDataChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnViewChange_Proxy(IAdviseSink, DWORD, LONG); +void IAdviseSink_RemoteOnViewChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnRename_Proxy(IAdviseSink, IMoniker); +void IAdviseSink_RemoteOnRename_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnSave_Proxy(IAdviseSink); +void IAdviseSink_RemoteOnSave_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IAdviseSink_RemoteOnClose_Proxy(IAdviseSink); +void IAdviseSink_RemoteOnClose_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_OnDataChange_Proxy(IAdviseSink, FORMATETC*, STGMEDIUM*); +void IAdviseSink_OnDataChange_Stub(IAdviseSink, FORMATETC*, RemSTGMEDIUM*); +void IAdviseSink_OnViewChange_Proxy(IAdviseSink, DWORD, LONG); +void IAdviseSink_OnViewChange_Stub(IAdviseSink, DWORD, LONG); +void IAdviseSink_OnRename_Proxy(IAdviseSink, IMoniker); +void IAdviseSink_OnRename_Stub(IAdviseSink, IMoniker); +void IAdviseSink_OnSave_Proxy(IAdviseSink); +void IAdviseSink_OnSave_Stub(IAdviseSink); +void IAdviseSink_OnClose_Proxy(IAdviseSink); +HRESULT IAdviseSink_OnClose_Stub(IAdviseSink); +void IAdviseSink2_RemoteOnLinkSrcChange_Proxy(IAdviseSink2, IMoniker); +void IAdviseSink2_RemoteOnLinkSrcChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink2_OnLinkSrcChange_Proxy(IAdviseSink2, IMoniker); +void IAdviseSink2_OnLinkSrcChange_Stub(IAdviseSink2, IMoniker); +HRESULT IDataObject_RemoteGetData_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM**); +void IDataObject_RemoteGetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_RemoteGetDataHere_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM**); +void IDataObject_RemoteGetDataHere_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_QueryGetData_Proxy(IDataObject, FORMATETC*); +void IDataObject_QueryGetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_GetCanonicalFormatEtc_Proxy(IDataObject, FORMATETC*, FORMATETC*); +void IDataObject_GetCanonicalFormatEtc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_RemoteSetData_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM*, BOOL); +void IDataObject_RemoteSetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_EnumFormatEtc_Proxy(IDataObject, DWORD, IEnumFORMATETC*); +void IDataObject_EnumFormatEtc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_DAdvise_Proxy(IDataObject, FORMATETC*, DWORD, IAdviseSink, DWORD*); +void IDataObject_DAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_DUnadvise_Proxy(IDataObject, DWORD); +void IDataObject_DUnadvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_EnumDAdvise_Proxy(IDataObject, IEnumSTATDATA*); +void IDataObject_EnumDAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_GetData_Proxy(IDataObject, FORMATETC*, STGMEDIUM*); +HRESULT IDataObject_GetData_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM**); +HRESULT IDataObject_GetDataHere_Proxy(IDataObject, FORMATETC*, STGMEDIUM*); +HRESULT IDataObject_GetDataHere_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM**); +HRESULT IDataObject_SetData_Proxy(IDataObject, FORMATETC*, STGMEDIUM*, BOOL); +HRESULT IDataObject_SetData_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM*, BOOL); +HRESULT IDataAdviseHolder_Advise_Proxy(IDataAdviseHolder, IDataObject, FORMATETC*, DWORD, IAdviseSink, DWORD*); +void IDataAdviseHolder_Advise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataAdviseHolder_Unadvise_Proxy(IDataAdviseHolder, DWORD); +void IDataAdviseHolder_Unadvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataAdviseHolder_EnumAdvise_Proxy(IDataAdviseHolder, IEnumSTATDATA*); +void IDataAdviseHolder_EnumAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataAdviseHolder_SendOnDataChange_Proxy(IDataAdviseHolder, IDataObject, DWORD, DWORD); +void IDataAdviseHolder_SendOnDataChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IMessageFilter_HandleInComingCall_Proxy(IMessageFilter, DWORD, HTASK, DWORD, LPINTERFACEINFO); +void IMessageFilter_HandleInComingCall_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IMessageFilter_RetryRejectedCall_Proxy(IMessageFilter, HTASK, DWORD, DWORD); +void IMessageFilter_RetryRejectedCall_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IMessageFilter_MessagePending_Proxy(IMessageFilter, HTASK, DWORD, DWORD); +void IMessageFilter_MessagePending_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_GetBuffer_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*, REFIID); +void IRpcChannelBuffer_GetBuffer_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_SendReceive_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*, ULONG*); +void IRpcChannelBuffer_SendReceive_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_FreeBuffer_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*); +void IRpcChannelBuffer_FreeBuffer_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_GetDestCtx_Proxy(IRpcChannelBuffer, DWORD*, void**); +void IRpcChannelBuffer_GetDestCtx_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_IsConnected_Proxy(IRpcChannelBuffer); +void IRpcChannelBuffer_IsConnected_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcProxyBuffer_Connect_Proxy(IRpcProxyBuffer, IRpcChannelBufferpRpcChannelBuffer); +void IRpcProxyBuffer_Connect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IRpcProxyBuffer_Disconnect_Proxy(IRpcProxyBuffer); +void IRpcProxyBuffer_Disconnect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcStubBuffer_Connect_Proxy(IRpcStubBuffer, IUnknown); +void IRpcStubBuffer_Connect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IRpcStubBuffer_Disconnect_Proxy(IRpcStubBuffer); +void IRpcStubBuffer_Disconnect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcStubBuffer_Invoke_Proxy(IRpcStubBuffer, RPCOLEMESSAGE*, IRpcChannelBuffer); +void IRpcStubBuffer_Invoke_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +IRpcStubBufferIRpcStubBuffer_IsIIDSupported_Proxy(IRpcStubBuffer, REFIID); +void IRpcStubBuffer_IsIIDSupported_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IRpcStubBuffer_CountRefs_Proxy(IRpcStubBuffer); +void IRpcStubBuffer_CountRefs_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcStubBuffer_DebugServerQueryInterface_Proxy(IRpcStubBuffer, void**); +void IRpcStubBuffer_DebugServerQueryInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IRpcStubBuffer_DebugServerRelease_Proxy(IRpcStubBuffer, void*); +void IRpcStubBuffer_DebugServerRelease_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPSFactoryBuffer_CreateProxy_Proxy(IPSFactoryBuffer, IUnknown, REFIID, IRpcProxyBuffer*, void**); +void IPSFactoryBuffer_CreateProxy_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPSFactoryBuffer_CreateStub_Proxy(IPSFactoryBuffer, REFIID, IUnknown, IRpcStubBuffer*); +void IPSFactoryBuffer_CreateStub_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void SNB_to_xmit(SNB*, RemSNB**); +void SNB_from_xmit(RemSNB*, SNB*); +void SNB_free_inst(SNB*); +void SNB_free_xmit(RemSNB*); +HRESULT IEnumUnknown_Next_Proxy(IEnumUnknown, ULONG, IUnknown*, ULONG*); +HRESULT IEnumUnknown_Next_Stub(IEnumUnknown, ULONG, IUnknown*, ULONG*); +HRESULT IEnumMoniker_Next_Proxy(IEnumMoniker, ULONG, IMoniker*, ULONG*); +HRESULT IEnumMoniker_Next_Stub(IEnumMoniker, ULONG, IMoniker*, ULONG*); +HRESULT IMoniker_BindToObject_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, void**); +HRESULT IMoniker_BindToObject_Stub(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +HRESULT IMoniker_BindToStorage_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, void**); +HRESULT IMoniker_BindToStorage_Stub(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +HRESULT IEnumString_Next_Proxy(IEnumString, ULONG, LPCSTR*, ULONG*); +HRESULT IEnumString_Next_Stub(IEnumString, ULONG, LPCSTR*, ULONG*); +HRESULT IStream_Read_Proxy(IStream, void*, ULONG, ULONG*); +HRESULT IStream_Read_Stub(IStream, BYTE*, ULONG, ULONG*); +HRESULT IStream_Write_Proxy(IStream, void*, ULONG, ULONG*); +HRESULT IStream_Write_Stub(IStream, BYTE*, ULONG, ULONG*); +HRESULT IStream_Seek_Proxy(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); +HRESULT IStream_Seek_Stub(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); +HRESULT IStream_CopyTo_Proxy(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); +HRESULT IStream_CopyTo_Stub(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); +HRESULT IEnumSTATSTG_Next_Proxy(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); +HRESULT IEnumSTATSTG_Next_Stub(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); +HRESULT IStorage_OpenStream_Proxy(IStorage, OLECHAR*, void*, DWORD, DWORD, IStream*); +HRESULT IStorage_OpenStream_Stub(IStorage, OLECHAR*, uint, BYTE*, DWORD, DWORD, IStream* ); +HRESULT IStorage_EnumElements_Proxy(IStorage, DWORD, void*, DWORD, IEnumSTATSTG*); +HRESULT IStorage_EnumElements_Stub(IStorage, DWORD, uint, BYTE*, DWORD, IEnumSTATSTG*); +HRESULT ILockBytes_ReadAt_Proxy(ILockBytes, ULARGE_INTEGER, void*, ULONG, ULONG*); +HRESULT ILockBytes_ReadAt_Stub(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); +HRESULT ILockBytes_WriteAt_Proxy(ILockBytes, ULARGE_INTEGER, const(void)*, ULONG, ULONG*); +HRESULT ILockBytes_WriteAt_Stub(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); +} ++/ diff --git a/src/core/sys/windows/objsafe.d b/src/core/sys/windows/objsafe.d new file mode 100644 index 0000000000..131d85f1fe --- /dev/null +++ b/src/core/sys/windows/objsafe.d @@ -0,0 +1,23 @@ +/***********************************************************************\ +* objsafe.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.objsafe; + +private import win32.basetyps, win32.unknwn, win32.windef; + +enum { + INTERFACESAFE_FOR_UNTRUSTED_CALLER = 1, + INTERFACESAFE_FOR_UNTRUSTED_DATA +} + +interface IObjectSafety : IUnknown { + HRESULT GetInterfaceSafetyOptions(REFIID, DWORD*, DWORD*); + HRESULT SetInterfaceSafetyOptions(REFIID, DWORD, DWORD); +} diff --git a/src/core/sys/windows/ocidl.d b/src/core/sys/windows/ocidl.d new file mode 100644 index 0000000000..ba5b812456 --- /dev/null +++ b/src/core/sys/windows/ocidl.d @@ -0,0 +1,471 @@ +/***********************************************************************\ +* ocidl.d * +* * +* Windows API header module * +* Part of the Internet Development SDK * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ocidl; + +private import win32.ole2, win32.oleidl, win32.oaidl, win32.objfwd, + win32.windef, win32.wtypes; +private import win32.objidl; // for CLIPFORMAT +private import win32.wingdi; // for TEXTMETRICW +private import win32.winuser; // for LPMSG + +interface IBindHost : IUnknown {} + +interface IServiceProvider : IUnknown{ + HRESULT QueryService(REFGUID,REFIID,void**); +} + +/* +// TODO: +//private import win32.servprov; // for IServiceProvider +// private import win32.urlmon; // for IBindHost. This is not included in MinGW. + +// win32.urlmon should contain: +interface IBindHost : IUnknown +{ + HRESULT CreateMoniker(LPOLESTR szName, IBindCtx pBC, IMoniker* ppmk, DWORD); + HRESULT MonikerBindToObject(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); + HRESULT MonikerBindToStorage(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); +} +*/ + + + + +//[Yes] #ifndef OLE2ANSI +alias TEXTMETRICW TEXTMETRICOLE; +//} else { +//alias TEXTMETRIC TEXTMETRICOLE; +//} +alias TEXTMETRICOLE* LPTEXTMETRICOLE; + +alias DWORD OLE_COLOR; +alias UINT OLE_HANDLE; +alias int OLE_XPOS_HIMETRIC; +alias int OLE_YPOS_HIMETRIC; +alias int OLE_XSIZE_HIMETRIC; +alias int OLE_YSIZE_HIMETRIC; + +enum READYSTATE { + READYSTATE_UNINITIALIZED = 0, + READYSTATE_LOADING = 1, + READYSTATE_LOADED = 2, + READYSTATE_INTERACTIVE = 3, + READYSTATE_COMPLETE = 4 +} + +enum PROPBAG2_TYPE { + PROPBAG2_TYPE_UNDEFINED, + PROPBAG2_TYPE_DATA, + PROPBAG2_TYPE_URL, + PROPBAG2_TYPE_OBJECT, + PROPBAG2_TYPE_STREAM, + PROPBAG2_TYPE_STORAGE, + PROPBAG2_TYPE_MONIKER // = 6 +} + +struct PROPBAG2 { + DWORD dwType; + VARTYPE vt; + CLIPFORMAT cfType; + DWORD dwHint; + LPOLESTR pstrName; + CLSID clsid; +} + +enum QACONTAINERFLAGS { + QACONTAINER_SHOWHATCHING = 1, + QACONTAINER_SHOWGRABHANDLES = 2, + QACONTAINER_USERMODE = 4, + QACONTAINER_DISPLAYASDEFAULT = 8, + QACONTAINER_UIDEAD = 16, + QACONTAINER_AUTOCLIP = 32, + QACONTAINER_MESSAGEREFLECT = 64, + QACONTAINER_SUPPORTSMNEMONICS = 128 +} + +struct QACONTAINER { + ULONG cbSize = this.sizeof; + IOleClientSite pClientSite; + IAdviseSinkEx pAdviseSink; + IPropertyNotifySink pPropertyNotifySink; + IUnknown pUnkEventSink; + DWORD dwAmbientFlags; + OLE_COLOR colorFore; + OLE_COLOR colorBack; + IFont pFont; + IOleUndoManager pUndoMgr; + DWORD dwAppearance; + LONG lcid; + HPALETTE hpal; + IBindHost pBindHost; + IOleControlSite pOleControlSite; + IServiceProvider pServiceProvider; +} + +struct QACONTROL { + ULONG cbSize = this.sizeof; + DWORD dwMiscStatus; + DWORD dwViewStatus; + DWORD dwEventCookie; + DWORD dwPropNotifyCookie; + DWORD dwPointerActivationPolicy; +} + +struct POINTF { + float x; + float y; +} +alias POINTF* LPPOINTF; + +struct CONTROLINFO { + ULONG cb; + HACCEL hAccel; + USHORT cAccel; + DWORD dwFlags; +} +alias CONTROLINFO* LPCONTROLINFO; + +struct CONNECTDATA { + LPUNKNOWN pUnk; + DWORD dwCookie; +} +alias CONNECTDATA* LPCONNECTDATA; + +struct LICINFO { + int cbLicInfo; + BOOL fRuntimeKeyAvail; + BOOL fLicVerified; +} +alias LICINFO* LPLICINFO; + +struct CAUUID { + ULONG cElems; + GUID* pElems; +} +alias CAUUID* LPCAUUID; + +struct CALPOLESTR { + ULONG cElems; + LPOLESTR* pElems; +} +alias CALPOLESTR* LPCALPOLESTR; + +struct CADWORD { + ULONG cElems; + DWORD* pElems; +} +alias CADWORD* LPCADWORD; + +struct PROPPAGEINFO { + ULONG cb; + LPOLESTR pszTitle; + SIZE size; + LPOLESTR pszDocString; + LPOLESTR pszHelpFile; + DWORD dwHelpContext; +} +alias PROPPAGEINFO* LPPROPPAGEINFO; + +interface IOleControl : IUnknown { + HRESULT GetControlInfo(LPCONTROLINFO); + HRESULT OnMnemonic(LPMSG); + HRESULT OnAmbientPropertyChange(DISPID); + HRESULT FreezeEvents(BOOL); +} + +interface IOleControlSite : IUnknown { + HRESULT OnControlInfoChanged(); + HRESULT LockInPlaceActive(BOOL); + HRESULT GetExtendedControl(LPDISPATCH*); + HRESULT TransformCoords(POINTL*, POINTF*, DWORD); + HRESULT TranslateAccelerator(LPMSG, DWORD); + HRESULT OnFocus(BOOL); + HRESULT ShowPropertyFrame(); +} + +interface ISimpleFrameSite : IUnknown { + HRESULT PreMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, PDWORD); + HRESULT PostMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, DWORD); +} + +interface IErrorLog : IUnknown { + HRESULT AddError(LPCOLESTR, LPEXCEPINFO); +} +alias IErrorLog LPERRORLOG; + +interface IPropertyBag : IUnknown { + HRESULT Read(LPCOLESTR, LPVARIANT, LPERRORLOG); + HRESULT Write(LPCOLESTR, LPVARIANT); +} +alias IPropertyBag LPPROPERTYBAG; + +interface IPropertyBag2 : IUnknown { + HRESULT Read(ULONG, PROPBAG2*, LPERRORLOG, VARIANT*, HRESULT*); + HRESULT Write(ULONG, PROPBAG2*, VARIANT*); + HRESULT CountProperties(ULONG*); + HRESULT GetPropertyInfo(ULONG, ULONG, PROPBAG2*, ULONG*); + HRESULT LoadObject(LPCOLESTR, DWORD, IUnknown, LPERRORLOG); +} +alias IPropertyBag2 LPPROPERTYBAG2; + +interface IPersistPropertyBag : IPersist { + HRESULT InitNew(); + HRESULT Load(LPPROPERTYBAG, LPERRORLOG); + HRESULT Save(LPPROPERTYBAG, BOOL, BOOL); +} + +interface IPersistPropertyBag2 : IPersist { + HRESULT InitNew(); + HRESULT Load(LPPROPERTYBAG2, LPERRORLOG); + HRESULT Save(LPPROPERTYBAG2, BOOL, BOOL); + HRESULT IsDirty(); +} + +interface IPersistStreamInit : IPersist { + HRESULT IsDirty(); + HRESULT Load(LPSTREAM); + HRESULT Save(LPSTREAM, BOOL); + HRESULT GetSizeMax(PULARGE_INTEGER); + HRESULT InitNew(); +} + +interface IPersistMemory : IPersist { + HRESULT IsDirty(); + HRESULT Load(PVOID, ULONG); + HRESULT Save(PVOID, BOOL, ULONG); + HRESULT GetSizeMax(PULONG); + HRESULT InitNew(); +} + +interface IPropertyNotifySink : IUnknown { + HRESULT OnChanged(DISPID); + HRESULT OnRequestEdit(DISPID); +} + +interface IProvideClassInfo : IUnknown { + HRESULT GetClassInfo(LPTYPEINFO*); +} + +interface IProvideClassInfo2 : IProvideClassInfo { + HRESULT GetGUID(DWORD, GUID*); +} + +interface IConnectionPointContainer : IUnknown { + HRESULT EnumConnectionPoints(LPENUMCONNECTIONPOINTS*); + HRESULT FindConnectionPoint(REFIID, LPCONNECTIONPOINT*); +} + +interface IEnumConnectionPoints : IUnknown { + HRESULT Next(ULONG, LPCONNECTIONPOINT*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCONNECTIONPOINTS*); +} +alias IEnumConnectionPoints LPENUMCONNECTIONPOINTS; + +interface IConnectionPoint : IUnknown { + HRESULT GetConnectionInterface(IID*); + HRESULT GetConnectionPointContainer(IConnectionPointContainer*); + HRESULT Advise(LPUNKNOWN, PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumConnections(LPENUMCONNECTIONS*); +} +alias IConnectionPoint LPCONNECTIONPOINT; + +interface IEnumConnections : IUnknown { + HRESULT Next(ULONG, LPCONNECTDATA, PULONG); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCONNECTIONS*); +} +alias IEnumConnections LPENUMCONNECTIONS; + +interface IClassFactory2 : IClassFactory { + HRESULT GetLicInfo(LPLICINFO); + HRESULT RequestLicKey(DWORD, BSTR*); + HRESULT CreateInstanceLic(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR, PVOID*); +} + +interface ISpecifyPropertyPages : IUnknown { + HRESULT GetPages(CAUUID*); +} + +interface IPerPropertyBrowsing : IUnknown { + HRESULT GetDisplayString(DISPID, BSTR*); + HRESULT MapPropertyToPage(DISPID, LPCLSID); + HRESULT GetPredefinedStrings(DISPID, CALPOLESTR*, CADWORD*); + HRESULT GetPredefinedValue(DISPID, DWORD, VARIANT*); +} + +interface IPropertyPageSite : IUnknown { + HRESULT OnStatusChange(DWORD); + HRESULT GetLocaleID(LCID*); + HRESULT GetPageContainer(LPUNKNOWN*); + HRESULT TranslateAccelerator(LPMSG); +} +alias IPropertyPageSite LPPROPERTYPAGESITE; + +interface IPropertyPage : IUnknown { + HRESULT SetPageSite(LPPROPERTYPAGESITE); + HRESULT Activate(HWND, LPCRECT, BOOL); + HRESULT Deactivate(); + HRESULT GetPageInfo(LPPROPPAGEINFO); + HRESULT SetObjects(ULONG, LPUNKNOWN*); + HRESULT Show(UINT); + HRESULT Move(LPCRECT); + HRESULT IsPageDirty(); + HRESULT Apply(); + HRESULT Help(LPCOLESTR); + HRESULT TranslateAccelerator(LPMSG); +} + + +interface IPropertyPage2 : IPropertyPage +{ HRESULT EditProperty(DISPID); +} + +interface IFont : IUnknown { + HRESULT get_Name(BSTR*); + HRESULT put_Name(BSTR); + HRESULT get_Size(CY*); + HRESULT put_Size(CY); + HRESULT get_Bold(BOOL*); + HRESULT put_Bold(BOOL); + HRESULT get_Italic(BOOL*); + HRESULT put_Italic(BOOL); + HRESULT get_Underline(BOOL*); + HRESULT put_Underline(BOOL); + HRESULT get_Strikethrough(BOOL*); + HRESULT put_Strikethrough(BOOL); + HRESULT get_Weight(short*); + HRESULT put_Weight(short); + HRESULT get_Charset(short*); + HRESULT put_Charset(short); + HRESULT get_hFont(HFONT*); + HRESULT Clone(IFont*); + HRESULT IsEqual(IFont); + HRESULT SetRatio(int, int); + HRESULT QueryTextMetrics(LPTEXTMETRICOLE); + HRESULT AddRefHfont(HFONT); + HRESULT ReleaseHfont(HFONT); + HRESULT SetHdc(HDC); +} +alias IFont LPFONT; + +interface IFontDisp : IDispatch { +} +alias IFontDisp LPFONTDISP; + +interface IPicture : IUnknown { + HRESULT get_Handle(OLE_HANDLE*); + HRESULT get_hPal(OLE_HANDLE*); + HRESULT get_Type(short*); + HRESULT get_Width(OLE_XSIZE_HIMETRIC*); + HRESULT get_Height(OLE_YSIZE_HIMETRIC*); + HRESULT Render(HDC, int, int, int, int, OLE_XPOS_HIMETRIC, + OLE_YPOS_HIMETRIC, OLE_XSIZE_HIMETRIC, OLE_YSIZE_HIMETRIC, LPCRECT); + HRESULT set_hPal(OLE_HANDLE); + HRESULT get_CurDC(HDC*); + HRESULT SelectPicture(HDC, HDC*, OLE_HANDLE*); + HRESULT get_KeepOriginalFormat(BOOL*); + HRESULT put_KeepOriginalFormat(BOOL); + HRESULT PictureChanged(); + HRESULT SaveAsFile(LPSTREAM, BOOL, LONG*); + HRESULT get_Attributes(PDWORD); +} + +interface IPictureDisp : IDispatch { +} + +interface IOleInPlaceSiteEx : IOleInPlaceSite { + HRESULT OnInPlaceActivateEx(BOOL*, DWORD); + HRESULT OnInPlaceDeactivateEx(BOOL); + HRESULT RequestUIActivate(); +} + +interface IObjectWithSite : IUnknown { + HRESULT SetSite(IUnknown); + HRESULT GetSite(REFIID, void**); +} + +interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx { + HRESULT CanWindowlessActivate(); + HRESULT GetCapture(); + HRESULT SetCapture(BOOL); + HRESULT GetFocus(); + HRESULT SetFocus(BOOL); + HRESULT GetDC(LPCRECT, DWORD, HDC*); + HRESULT ReleaseDC(HDC); + HRESULT InvalidateRect(LPCRECT, BOOL); + HRESULT InvalidateRgn(HRGN, BOOL); + HRESULT ScrollRect(INT, INT, LPCRECT, LPCRECT); + HRESULT AdjustRect(LPCRECT); + HRESULT OnDefWindowMessage(UINT, WPARAM, LPARAM, LRESULT*); +} + +interface IAdviseSinkEx : IUnknown { + void OnDataChange(FORMATETC*, STGMEDIUM*); + void OnViewChange(DWORD, LONG); + void OnRename(IMoniker); + void OnSave(); + void OnClose(); + HRESULT OnViewStatusChange(DWORD); +} + +interface IPointerInactive : IUnknown { + HRESULT GetActivationPolicy(DWORD*); + HRESULT OnInactiveMouseMove(LPCRECT, LONG, LONG, DWORD); + HRESULT OnInactiveSetCursor(LPCRECT, LONG, LONG, DWORD, BOOL); +} + +interface IOleUndoUnit : IUnknown { + HRESULT Do(LPOLEUNDOMANAGER); + HRESULT GetDescription(BSTR*); + HRESULT GetUnitType(CLSID*, LONG*); + HRESULT OnNextAdd(); +} + +interface IOleParentUndoUnit : IOleUndoUnit { + HRESULT Open(IOleParentUndoUnit); + HRESULT Close(IOleParentUndoUnit, BOOL); + HRESULT Add(IOleUndoUnit); + HRESULT FindUnit(IOleUndoUnit); + HRESULT GetParentState(DWORD*); +} + +interface IEnumOleUndoUnits : IUnknown { + HRESULT Next(ULONG, IOleUndoUnit*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOleUndoUnits*); +} + +interface IOleUndoManager : IUnknown { + HRESULT Open(IOleParentUndoUnit); + HRESULT Close(IOleParentUndoUnit, BOOL); + HRESULT Add(IOleUndoUnit); + HRESULT GetOpenParentState(DWORD*); + HRESULT DiscardFrom(IOleUndoUnit); + HRESULT UndoTo(IOleUndoUnit); + HRESULT RedoTo(IOleUndoUnit); + HRESULT EnumUndoable(IEnumOleUndoUnits*); + HRESULT EnumRedoable(IEnumOleUndoUnits*); + HRESULT GetLastUndoDescription(BSTR*); + HRESULT GetLastRedoDescription(BSTR*); + HRESULT Enable(BOOL); +} +alias IOleUndoManager LPOLEUNDOMANAGER; + +interface IQuickActivate : IUnknown { + HRESULT QuickActivate(QACONTAINER*, QACONTROL*); + HRESULT SetContentExtent(LPSIZEL); + HRESULT GetContentExtent(LPSIZEL); +} diff --git a/src/core/sys/windows/odbcinst.d b/src/core/sys/windows/odbcinst.d new file mode 100644 index 0000000000..35a19f49d4 --- /dev/null +++ b/src/core/sys/windows/odbcinst.d @@ -0,0 +1,166 @@ +/***********************************************************************\ +* odbcinst.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.odbcinst; + +import win32.sql; +private import win32.windef; + +/* FIXME: The Unicode/Ansi functions situation is a mess. How do the xxxA + * versions of these functions fit into the scheme? + */ + +// SQLConfigDataSource() +enum : WORD { + ODBC_ADD_DSN = 1, + ODBC_CONFIG_DSN = 2, + ODBC_REMOVE_DSN = 3, + ODBC_ADD_SYS_DSN = 4, + ODBC_CONFIG_SYS_DSN = 5, + ODBC_REMOVE_SYS_DSN = 6, + ODBC_REMOVE_DEFAULT_DSN = 7 +} + +// ODBC 3.0+ +enum : WORD { + ODBC_INSTALL_INQUIRY = 1, + ODBC_INSTALL_COMPLETE = 2 +} + +// ODBC 2.5+ +enum : WORD { + ODBC_INSTALL_DRIVER = 1, + ODBC_REMOVE_DRIVER = 2, + ODBC_CONFIG_DRIVER = 3, + ODBC_CONFIG_DRIVER_MAX = 100 +} + +// ODBC 3.0+ +// SQLSetConfigMode() +enum : UWORD { + ODBC_BOTH_DSN = 0, + ODBC_USER_DSN = 1, + ODBC_SYSTEM_DSN = 2 +} + +enum : DWORD { + ODBC_ERROR_GENERAL_ERR = 1, + ODBC_ERROR_INVALID_BUFF_LEN = 2, + ODBC_ERROR_INVALID_HWND = 3, + ODBC_ERROR_INVALID_STR = 4, + ODBC_ERROR_INVALID_REQUEST_TYPE = 5, + ODBC_ERROR_COMPONENT_NOT_FOUND = 6, + ODBC_ERROR_INVALID_NAME = 7, + ODBC_ERROR_INVALID_KEYWORD_VALUE = 8, + ODBC_ERROR_INVALID_DSN = 9, + ODBC_ERROR_INVALID_INF = 10, + ODBC_ERROR_REQUEST_FAILED = 11, + ODBC_ERROR_INVALID_PATH = 12, + ODBC_ERROR_LOAD_LIB_FAILED = 13, + ODBC_ERROR_INVALID_PARAM_SEQUENCE = 14, + ODBC_ERROR_INVALID_LOG_FILE = 15, + ODBC_ERROR_USER_CANCELED = 16, + ODBC_ERROR_USAGE_UPDATE_FAILED = 17, + ODBC_ERROR_CREATE_DSN_FAILED = 18, + ODBC_ERROR_WRITING_SYSINFO_FAILED = 19, + ODBC_ERROR_REMOVE_DSN_FAILED = 20, + ODBC_ERROR_OUT_OF_MEM = 21, + ODBC_ERROR_OUTPUT_STRING_TRUNCATED = 22 +} + +extern (Windows): +BOOL ConfigDSN(HWND,WORD,LPCSTR,LPCSTR); +BOOL ConfigDSNW(HWND,WORD,LPCWSTR,LPCWSTR); +BOOL ConfigTranslator(HWND,DWORD*); +BOOL SQLConfigDataSource(HWND,WORD,LPCSTR,LPCSTR); +BOOL SQLConfigDataSourceW(HWND,WORD,LPCWSTR,LPCWSTR); +BOOL SQLCreateDataSource(HWND,LPCSTR); +BOOL SQLCreateDataSourceW(HWND,LPCWSTR); +BOOL SQLGetAvailableDrivers(LPCSTR,LPSTR,WORD,WORD*); +BOOL SQLGetAvailableDriversW(LPCWSTR,LPWSTR,WORD,WORD*); +BOOL SQLGetInstalledDrivers(LPSTR,WORD,WORD*); +BOOL SQLGetInstalledDriversW(LPWSTR,WORD,WORD*); +int SQLGetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,int,LPCSTR); +int SQLGetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,int,LPCWSTR); +BOOL SQLGetTranslator(HWND,LPSTR,WORD,WORD*,LPSTR,WORD,WORD*,DWORD*); +BOOL SQLGetTranslatorW(HWND,LPWSTR,WORD,WORD*,LPWSTR,WORD,WORD*,DWORD*); +BOOL SQLInstallDriver(LPCSTR,LPCSTR,LPSTR,WORD,WORD*); +BOOL SQLInstallDriverManager(LPSTR,WORD,WORD*); +BOOL SQLInstallDriverManagerW(LPWSTR,WORD,WORD*); +BOOL SQLInstallDriverW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); +BOOL SQLInstallODBC(HWND,LPCSTR,LPCSTR,LPCSTR); +BOOL SQLInstallODBCW(HWND,LPCWSTR,LPCWSTR,LPCWSTR); +BOOL SQLManageDataSources(HWND); +BOOL SQLRemoveDefaultDataSource(); +BOOL SQLRemoveDSNFromIni(LPCSTR); +BOOL SQLRemoveDSNFromIniW(LPCWSTR); +BOOL SQLValidDSN(LPCSTR); +BOOL SQLValidDSNW(LPCWSTR); +BOOL SQLWriteDSNToIni(LPCSTR,LPCSTR); +BOOL SQLWriteDSNToIniW(LPCWSTR,LPCWSTR); +BOOL SQLWritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR); +BOOL SQLWritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); + +static if (ODBCVER >= 0x0250) { + BOOL ConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL ConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + BOOL SQLConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL SQLConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + deprecated { + BOOL SQLInstallTranslator(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallTranslatorW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + } + BOOL SQLRemoveDriver(LPCSTR,BOOL,LPDWORD); + BOOL SQLRemoveDriverManager(LPDWORD); + BOOL SQLRemoveDriverW(LPCWSTR,BOOL,LPDWORD); + BOOL SQLRemoveTranslator(LPCSTR,LPDWORD); + BOOL SQLRemoveTranslatorW(LPCWSTR,LPDWORD); +} +static if (ODBCVER >= 0x0300) { + BOOL SQLGetConfigMode(UWORD*); + BOOL SQLInstallDriverEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallDriverExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + SQLRETURN SQLInstallerError(WORD,DWORD*,LPSTR,WORD,WORD*); + SQLRETURN SQLInstallerErrorW(WORD,DWORD*,LPWSTR,WORD,WORD*); + BOOL SQLInstallTranslatorEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallTranslatorExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + SQLRETURN SQLPostInstallerError(DWORD,LPCSTR); + SQLRETURN SQLPostInstallerErrorW(DWORD,LPCWSTR); + BOOL SQLReadFileDSN(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL SQLReadFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + BOOL SQLSetConfigMode(UWORD); + BOOL SQLWriteFileDSN(LPCSTR,LPCSTR,LPCSTR,LPCSTR); + BOOL SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +} + +version (Unicode) { + alias SQLConfigDataSourceW SQLConfigDataSource; + alias SQLConfigDriverW SQLConfigDriver; + alias SQLCreateDataSourceW SQLCreateDataSource; + alias SQLGetAvailableDriversW SQLGetAvailableDrivers; + alias SQLGetInstalledDriversW SQLGetInstalledDrivers; + alias SQLGetPrivateProfileStringW SQLGetPrivateProfileString; + alias SQLGetTranslatorW SQLGetTranslator; + alias SQLInstallDriverW SQLInstallDriver; + alias SQLInstallDriverExW SQLInstallDriverEx; + alias SQLInstallDriverManagerW SQLInstallDriverManager; + alias SQLInstallerErrorW SQLInstallerError; + alias SQLInstallODBCW SQLInstallODBC; + deprecated alias SQLInstallTranslatorW SQLInstallTranslator; + alias SQLInstallTranslatorExW SQLInstallTranslatorEx; + alias SQLPostInstallerErrorW SQLPostInstallerError; + alias SQLReadFileDSNW SQLReadFileDSN; + alias SQLRemoveDriverW SQLRemoveDriver; + alias SQLRemoveDSNFromIniW SQLRemoveDSNFromIni; + alias SQLRemoveTranslatorW SQLRemoveTranslator; + alias SQLValidDSNW SQLValidDSN; + alias SQLWriteDSNToIniW SQLWriteDSNToIni; + alias SQLWriteFileDSNW SQLWriteFileDSN; + alias SQLWritePrivateProfileStringW SQLWritePrivateProfileString; +} diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d new file mode 100644 index 0000000000..d4ec788e12 --- /dev/null +++ b/src/core/sys/windows/ole.d @@ -0,0 +1,362 @@ +/***********************************************************************\ +* ole.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ole; + +private import win32.windef, win32.wingdi, win32.uuid; + +alias LPCSTR OLE_LPCSTR; + +/+#define LRESULT LONG +#define HGLOBAL HANDLE+/ + +enum { + OT_LINK = 1, + OT_EMBEDDED, + OT_STATIC +} + +const OLEVERB_PRIMARY = 0; +const OF_SET = 1; +const OF_GET = 2; +const OF_HANDLER = 4; + +struct OLETARGETDEVICE { + USHORT otdDeviceNameOffset; + USHORT otdDriverNameOffset; + USHORT otdPortNameOffset; + USHORT otdExtDevmodeOffset; + USHORT otdExtDevmodeSize; + USHORT otdEnvironmentOffset; + USHORT otdEnvironmentSize; + BYTE _otdData; + BYTE* otdData() { return &_otdData; } +} +alias OLETARGETDEVICE* LPOLETARGETDEVICE; + +enum OLESTATUS { + OLE_OK, + OLE_WAIT_FOR_RELEASE, + OLE_BUSY, + OLE_ERROR_PROTECT_ONLY, + OLE_ERROR_MEMORY, + OLE_ERROR_STREAM, + OLE_ERROR_STATIC, + OLE_ERROR_BLANK, + OLE_ERROR_DRAW, + OLE_ERROR_METAFILE, + OLE_ERROR_ABORT, + OLE_ERROR_CLIPBOARD, + OLE_ERROR_FORMAT, + OLE_ERROR_OBJECT, + OLE_ERROR_OPTION, + OLE_ERROR_PROTOCOL, + OLE_ERROR_ADDRESS, + OLE_ERROR_NOT_EQUAL, + OLE_ERROR_HANDLE, + OLE_ERROR_GENERIC, + OLE_ERROR_CLASS, + OLE_ERROR_SYNTAX, + OLE_ERROR_DATATYPE, + OLE_ERROR_PALETTE, + OLE_ERROR_NOT_LINK, + OLE_ERROR_NOT_EMPTY, + OLE_ERROR_SIZE, + OLE_ERROR_DRIVE, + OLE_ERROR_NETWORK, + OLE_ERROR_NAME, + OLE_ERROR_TEMPLATE, + OLE_ERROR_NEW, + OLE_ERROR_EDIT, + OLE_ERROR_OPEN, + OLE_ERROR_NOT_OPEN, + OLE_ERROR_LAUNCH, + OLE_ERROR_COMM, + OLE_ERROR_TERMINATE, + OLE_ERROR_COMMAND, + OLE_ERROR_SHOW, + OLE_ERROR_DOVERB, + OLE_ERROR_ADVISE_NATIVE, + OLE_ERROR_ADVISE_PICT, + OLE_ERROR_ADVISE_RENAME, + OLE_ERROR_POKE_NATIVE, + OLE_ERROR_REQUEST_NATIVE, + OLE_ERROR_REQUEST_PICT, + OLE_ERROR_SERVER_BLOCKED, + OLE_ERROR_REGISTRATION, + OLE_ERROR_ALREADY_REGISTERED, + OLE_ERROR_TASK, + OLE_ERROR_OUTOFDATE, + OLE_ERROR_CANT_UPDATE_CLIENT, + OLE_ERROR_UPDATE, + OLE_ERROR_SETDATA_FORMAT, + OLE_ERROR_STATIC_FROM_OTHER_OS, + OLE_ERROR_FILE_VER, + OLE_WARN_DELETE_DATA = 1000 +} + +enum OLE_NOTIFICATION { + OLE_CHANGED, + OLE_SAVED, + OLE_CLOSED, + OLE_RENAMED, + OLE_QUERY_PAINT, + OLE_RELEASE, + OLE_QUERY_RETRY +} + +enum OLE_RELEASE_METHOD { + OLE_NONE, + OLE_DELETE, + OLE_LNKPASTE, + OLE_EMBPASTE, + OLE_SHOW, + OLE_RUN, + OLE_ACTIVATE, + OLE_UPDATE, + OLE_CLOSE, + OLE_RECONNECT, + OLE_SETUPDATEOPTIONS, + OLE_SERVERUNLAUNCH, + OLE_LOADFROMSTREAM, + OLE_SETDATA, + OLE_REQUESTDATA, + OLE_OTHER, + OLE_CREATE, + OLE_CREATEFROMTEMPLATE, + OLE_CREATELINKFROMFILE, + OLE_COPYFROMLNK, + OLE_CREATEFROMFILE, + OLE_CREATEINVISIBLE +} + +enum OLEOPT_RENDER { + olerender_none, + olerender_draw, + olerender_format +} + +alias WORD OLECLIPFORMAT; + +enum OLEOPT_UPDATE { + oleupdate_always, + oleupdate_onsave, + oleupdate_oncall, +// #ifdef OLE_INTERNAL + oleupdate_onclose +// #endif +} + +mixin DECLARE_HANDLE!("HOBJECT"); +alias LONG LHSERVER, LHCLIENTDOC, LHSERVERDOC; + +struct OLEOBJECTVTBL { + extern (Windows) { + void* function(LPOLEOBJECT, OLE_LPCSTR) QueryProtocol; + OLESTATUS function(LPOLEOBJECT) Release; + OLESTATUS function(LPOLEOBJECT, BOOL) Show; + OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL) DoVerb; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*) GetData; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE) SetData; + OLESTATUS function(LPOLEOBJECT, HGLOBAL) SetTargetDevice; + OLESTATUS function(LPOLEOBJECT, RECT*) SetBounds; + OLECLIPFORMAT function(LPOLEOBJECT, OLECLIPFORMAT) EnumFormats; + OLESTATUS function(LPOLEOBJECT, LOGPALETTE*) SetColorScheme; +//#ifndef SERVERONLY + OLESTATUS function(LPOLEOBJECT) Delete; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; + OLESTATUS function(LPOLEOBJECT, LPOLESTREAM) SaveToStream; + OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, + LPOLEOBJECT*) Clone; + OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, + LPOLEOBJECT*) CopyFromLink; + OLESTATUS function(LPOLEOBJECT, LPOLEOBJECT) Equal; + OLESTATUS function(LPOLEOBJECT) CopyToClipboard; + OLESTATUS function(LPOLEOBJECT, HDC, RECT*, RECT*, HDC) Draw; + OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, RECT*) + Activate; + OLESTATUS function(LPOLEOBJECT, HGLOBAL, UINT) Execute; + OLESTATUS function(LPOLEOBJECT) Close; + OLESTATUS function(LPOLEOBJECT) Update; + OLESTATUS function(LPOLEOBJECT) Reconnect; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, + OLE_LPCSTR, LPOLEOBJECT*) ObjectConvert; + OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE*) GetLinkUpdateOptions; + OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE) SetLinkUpdateOptions; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR) Rename; + OLESTATUS function(LPOLEOBJECT, LPSTR, UINT*) QueryName; + OLESTATUS function(LPOLEOBJECT, LONG*) QueryType; + OLESTATUS function(LPOLEOBJECT, RECT*) QueryBounds; + OLESTATUS function(LPOLEOBJECT, DWORD*) QuerySize; + OLESTATUS function(LPOLEOBJECT) QueryOpen; + OLESTATUS function(LPOLEOBJECT) QueryOutOfDate; + OLESTATUS function(LPOLEOBJECT) QueryReleaseStatus; + OLESTATUS function(LPOLEOBJECT) QueryReleaseError; + OLE_RELEASE_METHOD function(LPOLEOBJECT) QueryReleaseMethod; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT) RequestData; + OLESTATUS function(LPOLEOBJECT, UINT, LONG*) ObjectLong; + OLESTATUS function(LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL) ChangeData; +//#endif + } +} +alias OLEOBJECTVTBL* LPOLEOBJECTVTBL; + +//#ifndef OLE_INTERNAL +struct OLEOBJECT { + LPOLEOBJECTVTBL lpvtbl; +} +alias OLEOBJECT* LPOLEOBJECT; +//#endif + +struct OLECLIENTVTBL { + int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack; +} +alias OLECLIENTVTBL* LPOLECLIENTVTBL; + +struct OLECLIENT { + LPOLECLIENTVTBL lpvtbl; +} +alias OLECLIENT* LPOLECLIENT; + +struct OLESTREAMVTBL { + DWORD function(LPOLESTREAM, void*, DWORD) Get; + DWORD function(LPOLESTREAM, void*, DWORD) Put; +} +alias OLESTREAMVTBL* LPOLESTREAMVTBL; + +struct OLESTREAM { + LPOLESTREAMVTBL lpstbl; +} +alias OLESTREAM* LPOLESTREAM; + +enum OLE_SERVER_USE { + OLE_SERVER_MULTI, + OLE_SERVER_SINGLE +} + +struct OLESERVERVTBL { + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC*) + Open; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + LPOLESERVERDOC*) Create; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + OLE_LPCSTR, LPOLESERVERDOC*) CreateFromTemplate; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + LPOLESERVERDOC*) Edit; + OLESTATUS function(LPOLESERVER) Exit; + OLESTATUS function(LPOLESERVER) Release; + OLESTATUS function(LPOLESERVER, HGLOBAL) Execute; +} +alias TypeDef!(OLESERVERVTBL*) LPOLESERVERVTBL; + +struct OLESERVER { + LPOLESERVERVTBL lpvtbl; +} +alias OLESERVER* LPOLESERVER; + +struct OLESERVERDOCVTBL { + OLESTATUS function(LPOLESERVERDOC) Save; + OLESTATUS function(LPOLESERVERDOC) Close; + OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; + OLESTATUS function(LPOLESERVERDOC, RECT*) SetDocDimensions; + OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT*, LPOLECLIENT) + GetObject; + OLESTATUS function(LPOLESERVERDOC) Release; + OLESTATUS function(LPOLESERVERDOC, LOGPALETTE*) SetColorScheme; + OLESTATUS function(LPOLESERVERDOC, HGLOBAL) Execute; +} +alias OLESERVERDOCVTBL* LPOLESERVERDOCVTBL; + +struct OLESERVERDOC { + LPOLESERVERDOCVTBL lpvtbl; +} +alias OLESERVERDOC* LPOLESERVERDOC; + +extern (Windows) { + OLESTATUS OleDelete(LPOLEOBJECT); + OLESTATUS OleRelease(LPOLEOBJECT); + OLESTATUS OleSaveToStream(LPOLEOBJECT, LPOLESTREAM); + OLESTATUS OleEqual(LPOLEOBJECT, LPOLEOBJECT); + OLESTATUS OleCopyToClipboard(LPOLEOBJECT); + OLESTATUS OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR); + OLESTATUS OleSetTargetDevice(LPOLEOBJECT, HGLOBAL); + OLESTATUS OleSetBounds(LPOLEOBJECT, LPCRECT); + OLESTATUS OleSetColorScheme(LPOLEOBJECT, const(LOGPALETTE)*); + OLESTATUS OleQueryBounds(LPOLEOBJECT, RECT*); + OLESTATUS OleQuerySize(LPOLEOBJECT, DWORD*); + OLESTATUS OleDraw(LPOLEOBJECT, HDC, LPCRECT, LPCRECT, HDC); + OLESTATUS OleQueryOpen(LPOLEOBJECT); + OLESTATUS OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPCRECT); + OLESTATUS OleExecute(LPOLEOBJECT, HGLOBAL, UINT); + OLESTATUS OleClose(LPOLEOBJECT); + OLESTATUS OleUpdate(LPOLEOBJECT); + OLESTATUS OleReconnect(LPOLEOBJECT); + OLESTATUS OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE*); + OLESTATUS OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE); + void* OleQueryProtocol(LPOLEOBJECT, LPCSTR); + OLESTATUS OleQueryReleaseStatus(LPOLEOBJECT); + OLESTATUS OleQueryReleaseError(LPOLEOBJECT); + OLE_RELEASE_METHOD OleQueryReleaseMethod(LPOLEOBJECT); + OLESTATUS OleQueryType(LPOLEOBJECT, LONG*); + DWORD OleQueryClientVersion(); + DWORD OleQueryServerVersion(); + OLECLIPFORMAT OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT); + OLESTATUS OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*); + OLESTATUS OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE); + OLESTATUS OleQueryOutOfDate(LPOLEOBJECT); + OLESTATUS OleRequestData(LPOLEOBJECT, OLECLIPFORMAT); + OLESTATUS OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, + LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, + LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL); + OLESTATUS OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*); + OLESTATUS OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleRename(LPOLEOBJECT, LPCSTR); + OLESTATUS OleQueryName(LPOLEOBJECT, LPSTR, UINT*); + OLESTATUS OleRevokeObject(LPOLECLIENT); + BOOL OleIsDcMeta(HDC); + OLESTATUS OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC*); + OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); + OLESTATUS OleRenameClientDoc(LHCLIENTDOC, LPCSTR); + OLESTATUS OleRevertClientDoc(LHCLIENTDOC); + OLESTATUS OleSavedClientDoc(LHCLIENTDOC); + OLESTATUS OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT*); + OLESTATUS OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER*, HINSTANCE, + OLE_SERVER_USE); + OLESTATUS OleRevokeServer(LHSERVER); + OLESTATUS OleBlockServer(LHSERVER); + OLESTATUS OleUnblockServer(LHSERVER, BOOL*); + OLESTATUS OleLockServer(LPOLEOBJECT, LHSERVER*); + OLESTATUS OleUnlockServer(LHSERVER); + OLESTATUS OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC, + LHSERVERDOC*); + OLESTATUS OleRevokeServerDoc(LHSERVERDOC); + OLESTATUS OleRenameServerDoc(LHSERVERDOC, LPCSTR); + OLESTATUS OleRevertServerDoc(LHSERVERDOC); + OLESTATUS OleSavedServerDoc(LHSERVERDOC); +} diff --git a/src/core/sys/windows/ole2.d b/src/core/sys/windows/ole2.d new file mode 100644 index 0000000000..14197ef7c3 --- /dev/null +++ b/src/core/sys/windows/ole2.d @@ -0,0 +1,118 @@ +/***********************************************************************\ +* ole2.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ole2; +pragma(lib, "ole32"); + +public import win32.basetyps, win32.objbase, win32.oleauto, win32.olectlid, + win32.oleidl, win32.unknwn, win32.winerror, win32.uuid; +private import win32.objfwd, win32.objidl, win32.windef, win32.wtypes; +private import win32.winuser; // for LPMSG + +const E_DRAW = VIEW_E_DRAW; + +const DATA_E_FORMATETC = DV_E_FORMATETC; + +enum { + OLEIVERB_PRIMARY = 0, + OLEIVERB_SHOW = -1, + OLEIVERB_OPEN = -2, + OLEIVERB_HIDE = -3, + OLEIVERB_UIACTIVATE = -4, + OLEIVERB_INPLACEACTIVATE = -5, + OLEIVERB_DISCARDUNDOSTATE = -6 +} + +const EMBDHLP_INPROC_HANDLER = 0x0000L; +const EMBDHLP_INPROC_SERVER = 0x0001L; +const EMBDHLP_CREATENOW = 0x00000000L; +const EMBDHLP_DELAYCREATE = 0x00010000L; + +align(8): +struct OLESTREAM { + LPOLESTREAMVTBL lpstbl; +} +alias OLESTREAM* LPOLESTREAM; + +extern (Windows) { + struct OLESTREAMVTBL { + DWORD function (LPOLESTREAM, void*, DWORD) Get; + DWORD function (LPOLESTREAM, const(void)*, DWORD) Put; + } +} +alias OLESTREAMVTBL* LPOLESTREAMVTBL; + +extern (Windows) { + HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); + DWORD OleBuildVersion(); + HRESULT ReadClassStg(LPSTORAGE, CLSID*); + HRESULT WriteClassStg(LPSTORAGE, REFCLSID); + HRESULT ReadClassStm(LPSTREAM, CLSID*); + HRESULT WriteClassStm(LPSTREAM, REFCLSID); + HRESULT WriteFmtUserTypeStg(LPSTORAGE, CLIPFORMAT, LPOLESTR); + HRESULT ReadFmtUserTypeStg(LPSTORAGE, CLIPFORMAT*, LPOLESTR*); + HRESULT OleInitialize(PVOID); + void OleUninitialize(); + HRESULT OleQueryLinkFromData(LPDATAOBJECT); + HRESULT OleQueryCreateFromData(LPDATAOBJECT); + HRESULT OleCreate(REFCLSID, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLinkFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateStaticFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLink(LPMONIKER, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLinkToFile(LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateFromFile(REFCLSID, LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleLoad(LPSTORAGE, REFIID, LPOLECLIENTSITE, PVOID*); + HRESULT OleSave(LPPERSISTSTORAGE, LPSTORAGE, BOOL); + HRESULT OleLoadFromStream(LPSTREAM, REFIID, PVOID*); + HRESULT OleSaveToStream(LPPERSISTSTREAM, LPSTREAM); + HRESULT OleSetContainedObject(LPUNKNOWN, BOOL); + HRESULT OleNoteObjectVisible(LPUNKNOWN, BOOL); + HRESULT RegisterDragDrop(HWND, LPDROPTARGET); + HRESULT RevokeDragDrop(HWND); + HRESULT DoDragDrop(LPDATAOBJECT, LPDROPSOURCE, DWORD, PDWORD); + HRESULT OleSetClipboard(LPDATAOBJECT); + HRESULT OleGetClipboard(LPDATAOBJECT*); + HRESULT OleFlushClipboard(); + HRESULT OleIsCurrentClipboard(LPDATAOBJECT); + HOLEMENU OleCreateMenuDescriptor(HMENU, LPOLEMENUGROUPWIDTHS); + HRESULT OleSetMenuDescriptor(HOLEMENU, HWND, HWND, LPOLEINPLACEFRAME, LPOLEINPLACEACTIVEOBJECT); + HRESULT OleDestroyMenuDescriptor(HOLEMENU); + HRESULT OleTranslateAccelerator(LPOLEINPLACEFRAME, LPOLEINPLACEFRAMEINFO, LPMSG); + HANDLE OleDuplicateData(HANDLE, CLIPFORMAT, UINT); + HRESULT OleDraw(LPUNKNOWN, DWORD, HDC, LPCRECT); + HRESULT OleRun(LPUNKNOWN); + BOOL OleIsRunning(LPOLEOBJECT); + HRESULT OleLockRunning(LPUNKNOWN, BOOL, BOOL); + void ReleaseStgMedium(LPSTGMEDIUM); + HRESULT CreateOleAdviseHolder(LPOLEADVISEHOLDER*); + HRESULT OleCreateDefaultHandler(REFCLSID, LPUNKNOWN, REFIID, PVOID*); + HRESULT OleCreateEmbeddingHelper(REFCLSID, LPUNKNOWN, DWORD, LPCLASSFACTORY, REFIID, PVOID*); + BOOL IsAccelerator(HACCEL, int, LPMSG, WORD*); + HGLOBAL OleGetIconOfFile(LPOLESTR, BOOL); + HGLOBAL OleGetIconOfClass(REFCLSID, LPOLESTR, BOOL); + HGLOBAL OleMetafilePictFromIconAndLabel(HICON, LPOLESTR, LPOLESTR, UINT); + HRESULT OleRegGetUserType(REFCLSID, DWORD, LPOLESTR*); + HRESULT OleRegGetMiscStatus(REFCLSID, DWORD, DWORD*); + HRESULT OleRegEnumFormatEtc (REFCLSID, DWORD, LPENUMFORMATETC*); + HRESULT OleRegEnumVerbs (REFCLSID, LPENUMOLEVERB*); + HRESULT OleConvertOLESTREAMToIStorage(LPOLESTREAM, LPSTORAGE, const(DVTARGETDEVICE)*); + HRESULT OleConvertIStorageToOLESTREAM(LPSTORAGE, LPOLESTREAM); + HRESULT GetHGlobalFromILockBytes(LPLOCKBYTES, HGLOBAL*); + HRESULT CreateILockBytesOnHGlobal(HGLOBAL, BOOL, LPLOCKBYTES*); + HRESULT GetHGlobalFromStream(LPSTREAM, HGLOBAL*); + HRESULT CreateStreamOnHGlobal(HGLOBAL, BOOL, LPSTREAM*); + HRESULT OleDoAutoConvert(LPSTORAGE, LPCLSID); + HRESULT OleGetAutoConvert(REFCLSID, LPCLSID); + HRESULT OleSetAutoConvert(REFCLSID, REFCLSID); + HRESULT GetConvertStg(LPSTORAGE); + HRESULT SetConvertStg(LPSTORAGE, BOOL); + HRESULT OleConvertIStorageToOLESTREAMEx(LPSTORAGE, CLIPFORMAT, LONG, LONG, DWORD, LPSTGMEDIUM, LPOLESTREAM); + HRESULT OleConvertOLESTREAMToIStorageEx(LPOLESTREAM, LPSTORAGE, CLIPFORMAT*, LONG*, LONG*, DWORD*, LPSTGMEDIUM); +} diff --git a/src/core/sys/windows/ole2ver.d b/src/core/sys/windows/ole2ver.d new file mode 100644 index 0000000000..3d29a1d645 --- /dev/null +++ b/src/core/sys/windows/ole2ver.d @@ -0,0 +1,14 @@ +/***********************************************************************\ +* ole2ver.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ole2ver; + +// These are apparently not documented on the MSDN site +const rmm = 23; +const rup = 639; diff --git a/src/core/sys/windows/oleacc.d b/src/core/sys/windows/oleacc.d new file mode 100644 index 0000000000..e8262eccd4 --- /dev/null +++ b/src/core/sys/windows/oleacc.d @@ -0,0 +1,214 @@ +/***********************************************************************\ +* oleacc.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.oleacc; +pragma(lib, "oleacc"); + +private import win32.basetyps, win32.oaidl, win32.unknwn, win32.wtypes, + win32.windef; + +enum { + DISPID_ACC_PARENT = -5000, + DISPID_ACC_CHILDCOUNT = -5001, + DISPID_ACC_CHILD = -5002, + DISPID_ACC_NAME = -5003, + DISPID_ACC_VALUE = -5004, + DISPID_ACC_DESCRIPTION = -5005, + DISPID_ACC_ROLE = -5006, + DISPID_ACC_STATE = -5007, + DISPID_ACC_HELP = -5008, + DISPID_ACC_HELPTOPIC = -5009, + DISPID_ACC_KEYBOARDSHORTCUT = -5010, + DISPID_ACC_FOCUS = -5011, + DISPID_ACC_SELECTION = -5012, + DISPID_ACC_DEFAULTACTION = -5013, + DISPID_ACC_SELECT = -5014, + DISPID_ACC_LOCATION = -5015, + DISPID_ACC_NAVIGATE = -5016, + DISPID_ACC_HITTEST = -5017, + DISPID_ACC_DODEFAULTACTION = -5018 +} + +enum { + NAVDIR_UP = 1, + NAVDIR_DOWN, + NAVDIR_LEFT, + NAVDIR_RIGHT, + NAVDIR_NEXT, + NAVDIR_PREVIOUS, + NAVDIR_FIRSTCHILD, + NAVDIR_LASTCHILD // = 8 +} + +enum { + ROLE_SYSTEM_TITLEBAR = 1, + ROLE_SYSTEM_MENUBAR, + ROLE_SYSTEM_SCROLLBAR, + ROLE_SYSTEM_GRIP, + ROLE_SYSTEM_SOUND, + ROLE_SYSTEM_CURSOR, + ROLE_SYSTEM_CARET, + ROLE_SYSTEM_ALERT, + ROLE_SYSTEM_WINDOW, + ROLE_SYSTEM_CLIENT, + ROLE_SYSTEM_MENUPOPUP, + ROLE_SYSTEM_MENUITEM, + ROLE_SYSTEM_TOOLTIP, + ROLE_SYSTEM_APPLICATION, + ROLE_SYSTEM_DOCUMENT, + ROLE_SYSTEM_PANE, + ROLE_SYSTEM_CHART, + ROLE_SYSTEM_DIALOG, + ROLE_SYSTEM_BORDER, + ROLE_SYSTEM_GROUPING, + ROLE_SYSTEM_SEPARATOR, + ROLE_SYSTEM_TOOLBAR, + ROLE_SYSTEM_STATUSBAR, + ROLE_SYSTEM_TABLE, + ROLE_SYSTEM_COLUMNHEADER, + ROLE_SYSTEM_ROWHEADER, + ROLE_SYSTEM_COLUMN, + ROLE_SYSTEM_ROW, + ROLE_SYSTEM_CELL, + ROLE_SYSTEM_LINK, + ROLE_SYSTEM_HELPBALLOON, + ROLE_SYSTEM_CHARACTER, + ROLE_SYSTEM_LIST, + ROLE_SYSTEM_LISTITEM, + ROLE_SYSTEM_OUTLINE, + ROLE_SYSTEM_OUTLINEITEM, + ROLE_SYSTEM_PAGETAB, + ROLE_SYSTEM_PROPERTYPAGE, + ROLE_SYSTEM_INDICATOR, + ROLE_SYSTEM_GRAPHIC, + ROLE_SYSTEM_STATICTEXT, + ROLE_SYSTEM_TEXT, + ROLE_SYSTEM_PUSHBUTTON, + ROLE_SYSTEM_CHECKBUTTON, + ROLE_SYSTEM_RADIOBUTTON, + ROLE_SYSTEM_COMBOBOX, + ROLE_SYSTEM_DROPLIST, + ROLE_SYSTEM_PROGRESSBAR, + ROLE_SYSTEM_DIAL, + ROLE_SYSTEM_HOTKEYFIELD, + ROLE_SYSTEM_SLIDER, + ROLE_SYSTEM_SPINBUTTON, + ROLE_SYSTEM_DIAGRAM, + ROLE_SYSTEM_ANIMATION, + ROLE_SYSTEM_EQUATION, + ROLE_SYSTEM_BUTTONDROPDOWN, + ROLE_SYSTEM_BUTTONMENU, + ROLE_SYSTEM_BUTTONDROPDOWNGRID, + ROLE_SYSTEM_WHITESPACE, + ROLE_SYSTEM_PAGETABLIST, + ROLE_SYSTEM_CLOCK // = 61 +} + +enum { + STATE_SYSTEM_UNAVAILABLE = 0x00000001, + STATE_SYSTEM_SELECTED = 0x00000002, + STATE_SYSTEM_FOCUSED = 0x00000004, + STATE_SYSTEM_PRESSED = 0x00000008, + STATE_SYSTEM_CHECKED = 0x00000010, + STATE_SYSTEM_MIXED = 0x00000020, + STATE_SYSTEM_READONLY = 0x00000040, + STATE_SYSTEM_HOTTRACKED = 0x00000080, + STATE_SYSTEM_DEFAULT = 0x00000100, + STATE_SYSTEM_EXPANDED = 0x00000200, + STATE_SYSTEM_COLLAPSED = 0x00000400, + STATE_SYSTEM_BUSY = 0x00000800, + STATE_SYSTEM_FLOATING = 0x00001000, + STATE_SYSTEM_MARQUEED = 0x00002000, + STATE_SYSTEM_ANIMATED = 0x00004000, + STATE_SYSTEM_INVISIBLE = 0x00008000, + STATE_SYSTEM_OFFSCREEN = 0x00010000, + STATE_SYSTEM_SIZEABLE = 0x00020000, + STATE_SYSTEM_MOVEABLE = 0x00040000, + STATE_SYSTEM_SELFVOICING = 0x00080000, + STATE_SYSTEM_FOCUSABLE = 0x00100000, + STATE_SYSTEM_SELECTABLE = 0x00200000, + STATE_SYSTEM_LINKED = 0x00400000, + STATE_SYSTEM_TRAVERSED = 0x00800000, + STATE_SYSTEM_MULTISELECTABLE = 0x01000000, + STATE_SYSTEM_EXTSELECTABLE = 0x02000000, + STATE_SYSTEM_ALERT_LOW = 0x04000000, + STATE_SYSTEM_ALERT_MEDIUM = 0x08000000, + STATE_SYSTEM_ALERT_HIGH = 0x10000000, + STATE_SYSTEM_VALID = 0x1fffffff +} + +enum SELFLAG +{ + SELFLAG_NONE = 0, + SELFLAG_TAKEFOCUS = 1, + SELFLAG_TAKESELECTION = 2, + SELFLAG_EXTENDSELECTION = 4, + SELFLAG_ADDSELECTION = 8, + SELFLAG_REMOVESELECTION = 16 +} + +const SELFLAG_VALID = 0x0000001F; + + +interface IAccessible : IDispatch { + HRESULT get_accParent(IDispatch*); + HRESULT get_accChildCount(int*); + HRESULT get_accChild(VARIANT, IDispatch*); + HRESULT get_accName(VARIANT, BSTR*); + HRESULT get_accValue(VARIANT, BSTR*); + HRESULT get_accDescription(VARIANT, BSTR*); + HRESULT get_accRole(VARIANT, VARIANT*); + HRESULT get_accState(VARIANT, VARIANT*); + HRESULT get_accHelp(VARIANT, BSTR*); + HRESULT get_accHelpTopic(BSTR*, VARIANT, int*); + HRESULT get_accKeyboardShortcut(VARIANT, BSTR*); + HRESULT get_accFocus(VARIANT*); + HRESULT get_accSelection(VARIANT*); + HRESULT get_accDefaultAction(VARIANT, BSTR*); + + HRESULT accSelect(int, VARIANT); + HRESULT accLocation(int*, int*, int*, int*, VARIANT); + HRESULT accNavigate(int, VARIANT, VARIANT*); + HRESULT accHitTest(int, int, VARIANT*); + HRESULT accDoDefaultAction(VARIANT); + + HRESULT put_accName(VARIANT, BSTR); + HRESULT put_accValue(VARIANT, BSTR); +} + +alias IAccessible LPACCESSIBLE; + +extern (Windows) { + HRESULT AccessibleChildren(IAccessible, LONG, LONG, VARIANT*, LONG*); + HRESULT AccessibleObjectFromEvent(HWND, DWORD, DWORD, IAccessible, VARIANT*); + HRESULT AccessibleObjectFromPoint(POINT, IAccessible*, VARIANT*); + HRESULT AccessibleObjectFromWindow(HWND, DWORD, REFIID, void**); + HRESULT CreateStdAccessibleObject(HWND, LONG, REFIID, void**); + HRESULT CreateStdAccessibleProxyA(HWND, LPCSTR, LONG, REFIID, void**); + HRESULT CreateStdAccessibleProxyW(HWND, LPCWSTR, LONG, REFIID, void**); + + void GetOleaccVersionInfo(DWORD*, DWORD*); + UINT GetRoleTextA(DWORD, LPSTR, UINT); + UINT GetRoleTextW(DWORD, LPWSTR, UINT); + UINT GetStateTextA(DWORD, LPSTR, UINT); + UINT GetStateTextW(DWORD, LPWSTR, UINT); + LRESULT LresultFromObject(REFIID, WPARAM, LPUNKNOWN); + HRESULT ObjectFromLresult(LRESULT, REFIID, WPARAM, void**); + HRESULT WindowFromAccessibleObject(IAccessible, HWND*); +} + +version(Unicode) { + alias CreateStdAccessibleProxyW CreateStdAccessibleProxy; + alias GetRoleTextW GetRoleText; + alias GetStateTextW GetStateText; +} else { + alias CreateStdAccessibleProxyA CreateStdAccessibleProxy; + alias GetRoleTextA GetRoleText; + alias GetStateTextA GetStateText; +} diff --git a/src/core/sys/windows/oleauto.d b/src/core/sys/windows/oleauto.d new file mode 100644 index 0000000000..df81f1e067 --- /dev/null +++ b/src/core/sys/windows/oleauto.d @@ -0,0 +1,684 @@ +/***********************************************************************\ +* oleauto.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.oleauto; +pragma(lib, "oleaut32"); + +import win32.oaidl; +private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; +private import win32.winbase; // for SYSTEMTIME + +align(8): +const STDOLE_MAJORVERNUM = 1; +const STDOLE_MINORVERNUM = 0; +const STDOLE_LCID = 0; + +const VARIANT_NOVALUEPROP = 0x01; +const VARIANT_ALPHABOOL = 0x02; +const VARIANT_NOUSEOVERRIDE = 0x04; +const VARIANT_LOCALBOOL = 0x08; + +const VAR_TIMEVALUEONLY = 0x0001; +const VAR_DATEVALUEONLY = 0x0002; +const VAR_VALIDDATE = 0x0004; +const VAR_CALENDAR_HIJRI = 0x0008; +const VAR_LOCALBOOL = 0x0010; +const VAR_FORMAT_NOSUBSTITUTE = 0x0020; +const VAR_FOURDIGITYEARS = 0x0040; +const VAR_CALENDAR_THAI = 0x0080; +const VAR_CALENDAR_GREGORIAN = 0x0100; + +const MEMBERID_NIL = DISPID_UNKNOWN; +const ID_DEFAULTINST = -2; +const DISPATCH_METHOD = 1; +const DISPATCH_PROPERTYGET = 2; +const DISPATCH_PROPERTYPUT = 4; +const DISPATCH_PROPERTYPUTREF = 8; + +//ULONG LHashValOfName(LCID l, OLECHAR* n) { return LHashValOfNameSys(SYSKIND.SYS_WIN32, l, n); } + +// DAC: These aren't in the 2003 SDK. +//MACRO #define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h))) +//MACRO #define IsHashValCompatible(h1, h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2)))) + +enum { + ACTIVEOBJECT_STRONG = 0, + ACTIVEOBJECT_WEAK = 1 +} + +// DAC: These seem to be irrelevant for D. +//#define V_UNION(X, Y) ((X)->Y) +//#define V_VT(X) ((X)->vt) +//#define V_BOOL(X) V_UNION(X, boolVal) +//#define V_ISBYREF(X) (V_VT(X)&VT_BYREF) +//#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY) +//#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR) +//#define V_NONE(X) V_I2(X) +//#define V_UI1(X) V_UNION(X, bVal) +//#define V_UI1REF(X) V_UNION(X, pbVal) +//#define V_I2(X) V_UNION(X, iVal) +//#define V_UI2(X) V_UNION(X, uiVal) +//#define V_I2REF(X) V_UNION(X, piVal) +//#define V_I4(X) V_UNION(X, lVal) +//#define V_UI4(X) V_UNION(X, ulVal) +//#define V_I4REF(X) V_UNION(X, plVal) +//#define V_UI4REF(X) V_UNION(X, pulVal) +//#define V_I8(X) V_UNION(X, llVal) +//#define V_UI8(X) V_UNION(X, ullVal) +//#define V_I8REF(X) V_UNION(X, pllVal) +//#define V_UI8REF(X) V_UNION(X, pullVal) +//#define V_R4(X) V_UNION(X, fltVal) +//#define V_R4REF(X) V_UNION(X, pfltVal) +//#define V_R8(X) V_UNION(X, dblVal) +//#define V_R8REF(X) V_UNION(X, pdblVal) +//#define V_CY(X) V_UNION(X, cyVal) +//#define V_CYREF(X) V_UNION(X, pcyVal) +//#define V_DATE(X) V_UNION(X, date) +//#define V_DATEREF(X) V_UNION(X, pdate) +//#define V_BSTR(X) V_UNION(X, bstrVal) +//#define V_BSTRREF(X) V_UNION(X, pbstrVal) +//#define V_DISPATCH(X) V_UNION(X, pdispVal) +//#define V_DISPATCHREF(X) V_UNION(X, ppdispVal) +//#define V_ERROR(X) V_UNION(X, scode) +//#define V_ERRORREF(X) V_UNION(X, pscode) +//#define V_BOOLREF(X) V_UNION(X, pboolVal) +//#define V_UNKNOWN(X) V_UNION(X, punkVal) +//#define V_UNKNOWNREF(X) V_UNION(X, ppunkVal) +//#define V_VARIANTREF(X) V_UNION(X, pvarVal) +//#define V_LPSTR(X) V_UNION(X, pszVal) +//#define V_LPSTRREF(X) V_UNION(X, ppszVal) +//#define V_LPWSTR(X) V_UNION(X, pwszVal) +//#define V_LPWSTRREF(X) V_UNION(X, ppwszVal) +//#define V_FILETIME(X) V_UNION(X, filetime) +//#define V_FILETIMEREF(X) V_UNION(X, pfiletime) +//#define V_BLOB(X) V_UNION(X, blob) +//#define V_UUID(X) V_UNION(X, puuid) +//#define V_CLSID(X) V_UNION(X, puuid) +//#define V_ARRAY(X) V_UNION(X, parray) +//#define V_ARRAYREF(X) V_UNION(X, pparray) +//#define V_BYREF(X) V_UNION(X, byref) +//#define V_DECIMAL(X) ((X)->decVal) +//#define V_DECIMALREF(X) V_UNION(X, pdecVal) +//#define V_I1(X) V_UNION(X, cVal) + +//#ifdef _WIN64 +//#define V_INT_PTR(X) V_I8(X) +//#define V_UINT_PTR(X) V_UI8(X) +//#define V_INT_PTRREF(X) V_I8REF(X) +//#define V_UINT_PTRREF(X) V_UI8REF(X) +//#else +//#define V_INT_PTR(X) V_I4(X) +//#define V_UINT_PTR(X) V_UI4(X) +//#define V_INT_PTRREF(X) V_I4REF(X) +//#define V_UINT_PTRREF(X) V_UI4REF(X) +//#endif + +enum { + VARCMP_LT = 0, + VARCMP_EQ, + VARCMP_GT, + VARCMP_NULL // = 3 +} + +const LOCALE_USE_NLS = 0x10000000; + +const VARIANT_NOUSEROVERRIDE = 0x04; +const VARIANT_CALENDAR_HIJRI = 0x08; +const VARIANT_CALENDAR_THAI = 0x20; +const VARIANT_CALENDAR_GREGORIAN = 0x40; +const VARIANT_USE_NLS = 0x80; + +const NUMPRS_LEADING_WHITE = 0x00001; +const NUMPRS_TRAILING_WHITE = 0x00002; +const NUMPRS_LEADING_PLUS = 0x00004; +const NUMPRS_TRAILING_PLUS = 0x00008; +const NUMPRS_LEADING_MINUS = 0x00010; +const NUMPRS_TRAILING_MINUS = 0x00020; +const NUMPRS_HEX_OCT = 0x00040; +const NUMPRS_PARENS = 0x00080; +const NUMPRS_DECIMAL = 0x00100; +const NUMPRS_THOUSANDS = 0x00200; +const NUMPRS_CURRENCY = 0x00400; +const NUMPRS_EXPONENT = 0x00800; +const NUMPRS_USE_ALL = 0x01000; +const NUMPRS_STD = 0x01FFF; +const NUMPRS_NEG = 0x10000; +const NUMPRS_INEXACT = 0x20000; + +const VTBIT_I1 = 1 << VARENUM.VT_I1; +const VTBIT_UI1 = 1 << VARENUM.VT_UI1; +const VTBIT_I2 = 1 << VARENUM.VT_I2; +const VTBIT_UI2 = 1 << VARENUM.VT_UI2; +const VTBIT_I4 = 1 << VARENUM.VT_I4; +const VTBIT_UI4 = 1 << VARENUM.VT_UI4; +const VTBIT_I8 = 1 << VARENUM.VT_I8; +const VTBIT_UI8 = 1 << VARENUM.VT_UI8; +const VTBIT_R4 = 1 << VARENUM.VT_R4; +const VTBIT_R8 = 1 << VARENUM.VT_R8; +const VTBIT_CY = 1 << VARENUM.VT_CY; +const VTBIT_DECIMAL = 1 << VARENUM.VT_DECIMAL; + + +enum REGKIND{ + REGKIND_DEFAULT, + REGKIND_REGISTER, + REGKIND_NONE +} + +struct PARAMDATA{ + OLECHAR* szName; + VARTYPE vt; +} +alias PARAMDATA* LPPARAMDATA; + +struct METHODDATA{ + OLECHAR* szName; + PARAMDATA* ppdata; + DISPID dispid; + UINT iMeth; + CALLCONV cc; + UINT cArgs; + WORD wFlags; + VARTYPE vtReturn; +} +alias METHODDATA* LPMETHODDATA; + +struct INTERFACEDATA{ + METHODDATA* pmethdata; + UINT cMembers; +} +alias INTERFACEDATA* LPINTERFACEDATA; + +struct UDATE { + SYSTEMTIME st; + USHORT wDayOfYear; +} + +struct NUMPARSE { + int cDig; + uint dwInFlags; + uint dwOutFlags; + int cchUsed; + int nBaseShift; + int nPwr10; +} + + +// DAC: In MinGW, these were declared but not defined in oaidl. +// The SDK docs suggest they belong in this file instead. + +deprecated { // not actually deprecated, but they aren't converted yet. + // (will need to reinstate CreateTypeLib as well) + interface ICreateTypeInfo {}; + interface ICreateTypeInfo2 {}; + interface ICreateTypeLib {}; + interface ICreateTypeLib2 {}; + + alias ICreateTypeInfo LPCREATETYPEINFO; + alias ICreateTypeInfo2 LPCREATETYPEINFO2; + alias ICreateTypeLib LPCREATETYPELIB; + alias ICreateTypeLib2 LPCREATETYPELIB2; +} + +extern (Windows) { + BSTR SysAllocString(const(OLECHAR)*); + int SysReAllocString(BSTR*, const(OLECHAR)*); + BSTR SysAllocStringLen(const(OLECHAR)*, uint); + int SysReAllocStringLen(BSTR*, const(OLECHAR)*, uint); + void SysFreeString(BSTR); + uint SysStringLen(BSTR); + uint SysStringByteLen(BSTR); + BSTR SysAllocStringByteLen(const(char)*, uint); + int DosDateTimeToVariantTime(ushort, ushort, double*); + int VariantTimeToDosDateTime(double, ushort*, ushort*); + int VariantTimeToSystemTime(double, LPSYSTEMTIME); + int SystemTimeToVariantTime(LPSYSTEMTIME, double*); + HRESULT VarDateFromUdate(UDATE*, ULONG, DATE*); + HRESULT VarDateFromUdateEx(UDATE*, LCID, ULONG, DATE*); + HRESULT VarUdateFromDate(DATE, ULONG, UDATE*); + HRESULT SafeArrayAllocDescriptor(uint, SAFEARRAY**); + HRESULT SafeArrayAllocData(SAFEARRAY*); + SAFEARRAY* SafeArrayCreate(VARTYPE, uint, SAFEARRAYBOUND*); + HRESULT SafeArrayDestroyDescriptor(SAFEARRAY*); + HRESULT SafeArrayDestroyData(SAFEARRAY*); + HRESULT SafeArrayDestroy(SAFEARRAY*); + HRESULT SafeArrayRedim(SAFEARRAY*, SAFEARRAYBOUND*); + uint SafeArrayGetDim(SAFEARRAY*); + uint SafeArrayGetElemsize(SAFEARRAY*); + HRESULT SafeArrayGetUBound(SAFEARRAY*, uint, int*); + HRESULT SafeArrayGetLBound(SAFEARRAY*, uint, int*); + HRESULT SafeArrayLock(SAFEARRAY*); + HRESULT SafeArrayUnlock(SAFEARRAY*); + HRESULT SafeArrayAccessData(SAFEARRAY*, void**); + HRESULT SafeArrayUnaccessData(SAFEARRAY*); + HRESULT SafeArrayGetElement(SAFEARRAY*, int*, void*); + HRESULT SafeArrayPutElement(SAFEARRAY*, int*, void*); + HRESULT SafeArrayCopy(SAFEARRAY*, SAFEARRAY**); + HRESULT SafeArrayPtrOfIndex(SAFEARRAY*, int*, void**); + SAFEARRAY* SafeArrayCreateVector(VARTYPE, LONG, ULONG); + SAFEARRAY* SafeArrayCreateVectorEx(VARTYPE, LONG, ULONG, LPVOID); + HRESULT SafeArrayAllocDescriptorEx(VARTYPE, UINT, SAFEARRAY**); + HRESULT SafeArrayGetVartype(SAFEARRAY*, VARTYPE*); + HRESULT SafeArraySetRecordInfo(SAFEARRAY*, IRecordInfo); + HRESULT SafeArrayGetRecordInfo(SAFEARRAY*, IRecordInfo*); + HRESULT SafeArraySetIID(SAFEARRAY*, REFGUID); + HRESULT SafeArrayGetIID(SAFEARRAY*, GUID*); + void VariantInit(VARIANTARG*); + HRESULT VariantClear(VARIANTARG*); + HRESULT VariantCopy(VARIANTARG*, VARIANTARG*); + HRESULT VariantCopyInd(VARIANT*, VARIANTARG*); + HRESULT VariantChangeType(VARIANTARG*, VARIANTARG*, ushort, VARTYPE); + HRESULT VariantChangeTypeEx(VARIANTARG*, VARIANTARG*, LCID, ushort, VARTYPE); + HRESULT VarUI1FromI2(short, ubyte*); + HRESULT VarUI1FromI4(int, ubyte*); + HRESULT VarUI1FromR4(float, ubyte*); + HRESULT VarUI1FromR8(double, ubyte*); + HRESULT VarUI1FromCy(CY, ubyte*); + HRESULT VarUI1FromDate(DATE, ubyte*); + HRESULT VarUI1FromStr(OLECHAR*, LCID, uint, ubyte*); + HRESULT VarUI1FromDisp(LPDISPATCH, LCID, ubyte*); + HRESULT VarUI1FromBool(VARIANT_BOOL, ubyte*); + HRESULT VarI2FromUI1(ubyte, short*); + HRESULT VarI2FromI4(int, short*); + HRESULT VarI2FromR4(float, short*); + HRESULT VarI2FromR8(double, short*); + HRESULT VarI2FromCy(CY cyIn, short*); + HRESULT VarI2FromDate(DATE, short*); + HRESULT VarI2FromStr(OLECHAR*, LCID, uint, short*); + HRESULT VarI2FromDisp(LPDISPATCH, LCID, short*); + HRESULT VarI2FromBool(VARIANT_BOOL, short*); + HRESULT VarI4FromUI1(ubyte, int*); + HRESULT VarI4FromI2(short, int*); + HRESULT VarI4FromR4(float, int*); + HRESULT VarI4FromR8(double, int*); + HRESULT VarI4FromCy(CY, int*); + HRESULT VarI4FromDate(DATE, int*); + HRESULT VarI4FromStr(OLECHAR*, LCID, uint, int*); + HRESULT VarI4FromDisp(LPDISPATCH, LCID, int*); + HRESULT VarI4FromBool(VARIANT_BOOL, int*); + HRESULT VarR4FromUI1(ubyte, float*); + HRESULT VarR4FromI2(short, float*); + HRESULT VarR4FromI4(int, float*); + HRESULT VarR4FromR8(double, float*); + HRESULT VarR4FromCy(CY, float*); + HRESULT VarR4FromDate(DATE, float*); + HRESULT VarR4FromStr(OLECHAR*, LCID, uint, float*); + HRESULT VarR4FromDisp(LPDISPATCH, LCID, float*); + HRESULT VarR4FromBool(VARIANT_BOOL, float*); + HRESULT VarR8FromUI1(ubyte, double*); + HRESULT VarR8FromI2(short, double*); + HRESULT VarR8FromI4(int, double*); + HRESULT VarR8FromR4(float, double*); + HRESULT VarR8FromCy(CY, double*); + HRESULT VarR8FromDate(DATE, double*); + HRESULT VarR8FromStr(OLECHAR*, LCID, uint, double*); + HRESULT VarR8FromDisp(LPDISPATCH, LCID, double*); + HRESULT VarR8FromBool(VARIANT_BOOL, double*); + HRESULT VarR8FromDec(DECIMAL*, double*); + HRESULT VarDateFromUI1(ubyte, DATE*); + HRESULT VarDateFromI2(short, DATE*); + HRESULT VarDateFromI4(int, DATE*); + HRESULT VarDateFromR4(float, DATE*); + HRESULT VarDateFromR8(double, DATE*); + HRESULT VarDateFromCy(CY, DATE*); + HRESULT VarDateFromStr(OLECHAR*, LCID, uint, DATE*); + HRESULT VarDateFromDisp(LPDISPATCH, LCID, DATE*); + HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); + HRESULT VarCyFromUI1(ubyte, CY*); + HRESULT VarCyFromI2(short, CY*); + HRESULT VarCyFromI4(int, CY*); + HRESULT VarCyFromR4(float, CY*); + HRESULT VarCyFromR8(double, CY*); + HRESULT VarCyFromDate(DATE, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, uint, CY*); + HRESULT VarCyFromDisp(LPDISPATCH, LCID, CY*); + HRESULT VarCyFromBool(VARIANT_BOOL, CY*); + HRESULT VarBstrFromUI1(ubyte, LCID, uint, BSTR*); + HRESULT VarBstrFromI2(short, LCID, uint, BSTR*); + HRESULT VarBstrFromI4(int, LCID, uint, BSTR*); + HRESULT VarBstrFromR4(float, LCID, uint, BSTR*); + HRESULT VarBstrFromR8(double, LCID, uint, BSTR*); + HRESULT VarBstrFromCy(CY, LCID, uint, BSTR*); + HRESULT VarBstrFromDate(DATE, LCID, uint, BSTR*); + HRESULT VarBstrFromDisp(LPDISPATCH, LCID, uint, BSTR*); + HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, uint, BSTR*); + HRESULT VarBoolFromUI1(ubyte, VARIANT_BOOL*); + HRESULT VarBoolFromI2(short, VARIANT_BOOL*); + HRESULT VarBoolFromI4(int, VARIANT_BOOL*); + HRESULT VarBoolFromR4(float, VARIANT_BOOL*); + HRESULT VarBoolFromR8(double, VARIANT_BOOL*); + HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); + HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); + HRESULT VarBoolFromStr(OLECHAR*, LCID, uint, VARIANT_BOOL*); + HRESULT VarBoolFromDisp(LPDISPATCH, LCID, VARIANT_BOOL*); + HRESULT VarDecFromR8(double, DECIMAL*); + ULONG LHashValOfNameSysA(SYSKIND, LCID, const(char)*); + ULONG LHashValOfNameSys(SYSKIND, LCID, const(OLECHAR)*); + HRESULT LoadTypeLib(const(OLECHAR)*, LPTYPELIB*); + HRESULT LoadTypeLibEx(LPCOLESTR, REGKIND, LPTYPELIB*); + HRESULT LoadRegTypeLib(REFGUID, WORD, WORD, LCID, LPTYPELIB*); + HRESULT QueryPathOfRegTypeLib(REFGUID, ushort, ushort, LCID, LPBSTR); + HRESULT RegisterTypeLib(LPTYPELIB, OLECHAR*, OLECHAR*); + HRESULT UnRegisterTypeLib(REFGUID, WORD, WORD, LCID, SYSKIND); + // not actually deprecated, but depends on unconverted ICreateTypeLib + deprecated HRESULT CreateTypeLib(SYSKIND, const(OLECHAR)*, LPCREATETYPELIB*); + HRESULT DispGetParam(DISPPARAMS*, UINT, VARTYPE, VARIANT*, UINT*); + HRESULT DispGetIDsOfNames(LPTYPEINFO, OLECHAR**, UINT, DISPID*); + HRESULT DispInvoke(void*, LPTYPEINFO, DISPID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); + HRESULT CreateDispTypeInfo(INTERFACEDATA*, LCID, LPTYPEINFO*); + HRESULT CreateStdDispatch(IUnknown, void*, LPTYPEINFO, IUnknown*); + HRESULT RegisterActiveObject(IUnknown, REFCLSID, DWORD, DWORD*); + HRESULT RevokeActiveObject(DWORD, void*); + HRESULT GetActiveObject(REFCLSID, void*, IUnknown*); + HRESULT SetErrorInfo(uint, LPERRORINFO); + HRESULT GetErrorInfo(uint, LPERRORINFO*); + HRESULT CreateErrorInfo(LPCREATEERRORINFO*); + uint OaBuildVersion(); + HRESULT VectorFromBstr (BSTR, SAFEARRAY**); + HRESULT BstrFromVector (SAFEARRAY*, BSTR*); + HRESULT VarParseNumFromStr(OLECHAR*, LCID, ULONG, NUMPARSE*, BYTE*); + HRESULT VarNumFromParseNum(NUMPARSE*, BYTE*, ULONG, VARIANT*); + + HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); + + HRESULT VarUI1FromI2(SHORT, BYTE*); + HRESULT VarUI1FromI4(LONG, BYTE*); + HRESULT VarUI1FromI8(LONG64, BYTE*); + HRESULT VarUI1FromR4(FLOAT, BYTE*); + HRESULT VarUI1FromR8(DOUBLE, BYTE*); + HRESULT VarUI1FromDate(DATE, BYTE*); + HRESULT VarUI1FromBool(VARIANT_BOOL, BYTE*); + HRESULT VarUI1FromI1(byte, BYTE*); + HRESULT VarUI1FromUI2(USHORT, BYTE*); + HRESULT VarUI1FromUI4(ULONG, BYTE*); + HRESULT VarUI1FromUI8(ULONG64, BYTE*); + HRESULT VarUI1FromStr(OLECHAR*, LCID, ULONG, BYTE*); + HRESULT VarUI1FromCy(CY, BYTE*); + HRESULT VarUI1FromDec(DECIMAL*, BYTE*); + HRESULT VarUI1FromDisp(IDispatch, LCID, BYTE*); + + HRESULT VarI2FromUI1(BYTE, SHORT*); + HRESULT VarI2FromI4(LONG, SHORT*); + HRESULT VarI2FromI8(LONG64, SHORT*); + HRESULT VarI2FromR4(FLOAT, SHORT*); + HRESULT VarI2FromR8(DOUBLE, SHORT*); + HRESULT VarI2FromDate(DATE, SHORT*); + HRESULT VarI2FromBool(VARIANT_BOOL, SHORT*); + HRESULT VarI2FromI1(byte, SHORT*); + HRESULT VarI2FromUI2(USHORT, SHORT*); + HRESULT VarI2FromUI4(ULONG, SHORT*); + HRESULT VarI2FromUI8(ULONG64, SHORT*); + HRESULT VarI2FromStr(OLECHAR*, LCID, ULONG, SHORT*); + HRESULT VarI2FromCy(CY, SHORT*); + HRESULT VarI2FromDec(DECIMAL*, SHORT*); + HRESULT VarI2FromDisp(IDispatch, LCID, SHORT*); + + HRESULT VarI4FromUI1(BYTE, LONG*); + HRESULT VarI4FromI2(SHORT, LONG*); + HRESULT VarI4FromI8(LONG64, LONG*); + HRESULT VarI4FromR4(FLOAT, LONG*); + HRESULT VarI4FromR8(DOUBLE, LONG*); + HRESULT VarI4FromDate(DATE, LONG*); + HRESULT VarI4FromBool(VARIANT_BOOL, LONG*); + HRESULT VarI4FromI1(byte, LONG*); + HRESULT VarI4FromUI2(USHORT, LONG*); + HRESULT VarI4FromUI4(ULONG, LONG*); + HRESULT VarI4FromUI8(ULONG64, LONG*); + HRESULT VarI4FromStr(OLECHAR*, LCID, ULONG, LONG*); + HRESULT VarI4FromCy(CY, LONG*); + HRESULT VarI4FromDec(DECIMAL*, LONG*); + HRESULT VarI4FromDisp(IDispatch, LCID, LONG*); + + HRESULT VarI8FromUI1(BYTE, LONG64*); + HRESULT VarI8FromI2(SHORT, LONG64*); + HRESULT VarI8FromI4(LONG, LONG64*); + HRESULT VarI8FromR4(FLOAT, LONG64*); + HRESULT VarI8FromR8(DOUBLE, LONG64*); + HRESULT VarI8FromDate(DATE, LONG64*); + HRESULT VarI8FromStr(OLECHAR*, LCID, ULONG, LONG64*); + HRESULT VarI8FromBool(VARIANT_BOOL, LONG64*); + HRESULT VarI8FromI1(byte, LONG64*); + HRESULT VarI8FromUI2(USHORT, LONG64*); + HRESULT VarI8FromUI4(ULONG, LONG64*); + HRESULT VarI8FromUI8(ULONG64, LONG64*); + HRESULT VarI8FromDec(DECIMAL* pdecIn, LONG64*); + HRESULT VarI8FromInt(INT intIn, LONG64*); + HRESULT VarI8FromCy(CY, LONG64*); + HRESULT VarI8FromDisp(IDispatch, LCID, LONG64*); + + HRESULT VarR4FromUI1(BYTE, FLOAT*); + HRESULT VarR4FromI2(SHORT, FLOAT*); + HRESULT VarR4FromI4(LONG, FLOAT*); + HRESULT VarR4FromI8(LONG64, FLOAT*); + HRESULT VarR4FromR8(DOUBLE, FLOAT*); + HRESULT VarR4FromDate(DATE, FLOAT*); + HRESULT VarR4FromBool(VARIANT_BOOL, FLOAT*); + HRESULT VarR4FromI1(byte, FLOAT*); + HRESULT VarR4FromUI2(USHORT, FLOAT*); + HRESULT VarR4FromUI4(ULONG, FLOAT*); + HRESULT VarR4FromUI8(ULONG64, FLOAT*); + HRESULT VarR4FromStr(OLECHAR*, LCID, ULONG, FLOAT*); + HRESULT VarR4FromCy(CY, FLOAT*); + HRESULT VarR4FromDec(DECIMAL*, FLOAT*); + HRESULT VarR4FromDisp(IDispatch, LCID, FLOAT*); + + HRESULT VarR8FromUI1(BYTE, double*); + HRESULT VarR8FromI2(SHORT, double*); + HRESULT VarR8FromI4(LONG, double*); + HRESULT VarR8FromI8(LONG64, double*); + HRESULT VarR8FromR4(FLOAT, double*); + HRESULT VarR8FromDate(DATE, double*); + HRESULT VarR8FromBool(VARIANT_BOOL, double*); + HRESULT VarR8FromI1(byte, double*); + HRESULT VarR8FromUI2(USHORT, double*); + HRESULT VarR8FromUI4(ULONG, double*); + HRESULT VarR8FromUI8(ULONG64, double*); + HRESULT VarR8FromStr(OLECHAR*, LCID, ULONG, double*); + HRESULT VarR8FromCy(CY, double*); + HRESULT VarR8FromDec(DECIMAL*, double*); + HRESULT VarR8FromDisp(IDispatch, LCID, double*); + + HRESULT VarDateFromUI1(BYTE, DATE*); + HRESULT VarDateFromI2(SHORT, DATE*); + HRESULT VarDateFromI4(LONG, DATE*); + HRESULT VarDateFromI8(LONG64, DATE*); + HRESULT VarDateFromR4(FLOAT, DATE*); + HRESULT VarDateFromR8(DOUBLE, DATE*); + HRESULT VarDateFromStr(OLECHAR*, LCID, ULONG, DATE*); + HRESULT VarDateFromI1(byte, DATE*); + HRESULT VarDateFromUI2(USHORT, DATE*); + HRESULT VarDateFromUI4(ULONG, DATE*); + HRESULT VarDateFromUI8(ULONG64, DATE*); + HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); + HRESULT VarDateFromCy(CY, DATE*); + HRESULT VarDateFromDec(DECIMAL*, DATE*); + HRESULT VarDateFromDisp(IDispatch, LCID, DATE*); + + HRESULT VarCyFromUI1(BYTE, CY*); + HRESULT VarCyFromI2(SHORT sIn, CY*); + HRESULT VarCyFromI4(LONG, CY*); + HRESULT VarCyFromI8(LONG64, CY*); + HRESULT VarCyFromR4(FLOAT, CY*); + HRESULT VarCyFromR8(DOUBLE, CY*); + HRESULT VarCyFromDate(DATE, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); + HRESULT VarCyFromBool(VARIANT_BOOL, CY*); + HRESULT VarCyFromI1(byte, CY*); + HRESULT VarCyFromUI2(USHORT, CY*); + HRESULT VarCyFromUI4(ULONG, CY*); + HRESULT VarCyFromUI8(ULONG64, CY*); + HRESULT VarCyFromDec(DECIMAL*, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); + HRESULT VarCyFromDisp(IDispatch, LCID, CY*); + + HRESULT VarBstrFromUI1(BYTE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI2(SHORT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI4(LONG, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI8(LONG64, LCID, ULONG, BSTR*); + HRESULT VarBstrFromR4(FLOAT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromR8(DOUBLE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDate(DATE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI1(byte, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI2(USHORT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI8(ULONG64, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI4(ULONG, LCID, ULONG, BSTR*); + HRESULT VarBstrFromCy(CY, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDec(DECIMAL*, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDisp(IDispatch, LCID, ULONG, BSTR*); + + HRESULT VarBoolFromUI1(BYTE, VARIANT_BOOL*); + HRESULT VarBoolFromI2(SHORT, VARIANT_BOOL*); + HRESULT VarBoolFromI4(LONG, VARIANT_BOOL*); + HRESULT VarBoolFromI8(LONG64, VARIANT_BOOL*); + HRESULT VarBoolFromR4(FLOAT, VARIANT_BOOL*); + HRESULT VarBoolFromR8(DOUBLE, VARIANT_BOOL*); + HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); + HRESULT VarBoolFromStr(OLECHAR*, LCID, ULONG, VARIANT_BOOL*); + HRESULT VarBoolFromI1(byte, VARIANT_BOOL*); + HRESULT VarBoolFromUI2(USHORT, VARIANT_BOOL*); + HRESULT VarBoolFromUI4(ULONG, VARIANT_BOOL*); + HRESULT VarBoolFromUI8(ULONG64, VARIANT_BOOL*); + HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); + HRESULT VarBoolFromDec(DECIMAL*, VARIANT_BOOL*); + HRESULT VarBoolFromDisp(IDispatch, LCID, VARIANT_BOOL*); + + HRESULT VarI1FromUI1(BYTE, byte*); + HRESULT VarI1FromI2(SHORT, byte*); + HRESULT VarI1FromI4(LONG, byte*); + HRESULT VarI1FromI8(LONG64, byte*); + HRESULT VarI1FromR4(FLOAT, byte*); + HRESULT VarI1FromR8(DOUBLE, byte*); + HRESULT VarI1FromDate(DATE, byte*); + HRESULT VarI1FromStr(OLECHAR*, LCID, ULONG, byte*); + HRESULT VarI1FromBool(VARIANT_BOOL, byte*); + HRESULT VarI1FromUI2(USHORT, byte*); + HRESULT VarI1FromUI4(ULONG, byte*); + HRESULT VarI1FromUI8(ULONG64, byte*); + HRESULT VarI1FromCy(CY, byte*); + HRESULT VarI1FromDec(DECIMAL*, byte*); + HRESULT VarI1FromDisp(IDispatch, LCID, byte*); + + HRESULT VarUI2FromUI1(BYTE, USHORT*); + HRESULT VarUI2FromI2(SHORT, USHORT*); + HRESULT VarUI2FromI4(LONG, USHORT*); + HRESULT VarUI2FromI8(LONG64, USHORT*); + HRESULT VarUI2FromR4(FLOAT, USHORT*); + HRESULT VarUI2FromR8(DOUBLE, USHORT*); + HRESULT VarUI2FromDate(DATE, USHORT*); + HRESULT VarUI2FromStr(OLECHAR*, LCID, ULONG, USHORT*); + HRESULT VarUI2FromBool(VARIANT_BOOL, USHORT*); + HRESULT VarUI2FromI1(byte, USHORT*); + HRESULT VarUI2FromUI4(ULONG, USHORT*); + HRESULT VarUI2FromUI8(ULONG64, USHORT*); + HRESULT VarUI2FromCy(CY, USHORT*); + HRESULT VarUI2FromDec(DECIMAL*, USHORT*); + HRESULT VarUI2FromDisp(IDispatch, LCID, USHORT*); + + HRESULT VarUI4FromStr(OLECHAR*, LCID, ULONG, ULONG*); + HRESULT VarUI4FromUI1(BYTE, ULONG*); + HRESULT VarUI4FromI2(SHORT, ULONG*); + HRESULT VarUI4FromI4(LONG, ULONG*); + HRESULT VarUI4FromI8(LONG64, ULONG*); + HRESULT VarUI4FromR4(FLOAT, ULONG*); + HRESULT VarUI4FromR8(DOUBLE, ULONG*); + HRESULT VarUI4FromDate(DATE, ULONG*); + HRESULT VarUI4FromBool(VARIANT_BOOL, ULONG*); + HRESULT VarUI4FromI1(byte, ULONG*); + HRESULT VarUI4FromUI2(USHORT, ULONG*); + HRESULT VarUI4FromUI8(ULONG64, ULONG*); + HRESULT VarUI4FromCy(CY, ULONG*); + HRESULT VarUI4FromDec(DECIMAL*, ULONG*); + HRESULT VarUI4FromDisp(IDispatch, LCID, ULONG*); + + HRESULT VarUI8FromUI1(BYTE, ULONG64*); + HRESULT VarUI8FromI2(SHORT, ULONG64*); + HRESULT VarUI8FromI4(LONG, ULONG64*); + HRESULT VarUI8FromI8(LONG64, ULONG64*); + HRESULT VarUI8FromR4(FLOAT, ULONG64*); + HRESULT VarUI8FromR8(DOUBLE, ULONG64*); + HRESULT VarUI8FromDate(DATE, ULONG64*); + HRESULT VarUI8FromStr(OLECHAR*, LCID, ULONG, ULONG64*); + HRESULT VarUI8FromBool(VARIANT_BOOL, ULONG64*); + HRESULT VarUI8FromI1(byte, ULONG64*); + HRESULT VarUI8FromUI2(USHORT, ULONG64*); + HRESULT VarUI8FromUI4(ULONG, ULONG64*); + HRESULT VarUI8FromDec(DECIMAL*, ULONG64*); + HRESULT VarUI8FromInt(INT, ULONG64*); + HRESULT VarUI8FromCy(CY, ULONG64*); + HRESULT VarUI8FromDisp(IDispatch, LCID, ULONG64*); + + HRESULT VarDecFromUI1(BYTE, DECIMAL*); + HRESULT VarDecFromI2(SHORT, DECIMAL*); + HRESULT VarDecFromI4(LONG, DECIMAL*); + HRESULT VarDecFromI8(LONG64, DECIMAL*); + HRESULT VarDecFromR4(FLOAT, DECIMAL*); + HRESULT VarDecFromR8(DOUBLE, DECIMAL*); + HRESULT VarDecFromDate(DATE, DECIMAL*); + HRESULT VarDecFromStr(OLECHAR*, LCID, ULONG, DECIMAL*); + HRESULT VarDecFromBool(VARIANT_BOOL, DECIMAL*); + HRESULT VarDecFromI1(byte, DECIMAL*); + HRESULT VarDecFromUI2(USHORT, DECIMAL*); + HRESULT VarDecFromUI4(ULONG, DECIMAL*); + HRESULT VarDecFromUI8(ULONG64, DECIMAL*); + HRESULT VarDecFromCy(CY, DECIMAL*); + HRESULT VarDecFromDisp(IDispatch, LCID, DECIMAL*); + + HRESULT VarDecNeg(const(DECIMAL)*, DECIMAL*); + HRESULT VarR4CmpR8(float, double); + HRESULT VarR8Pow(double, double, double*); + HRESULT VarR8Round(double, int, double*); + HRESULT VarDecAbs(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecAdd(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecCmp(const(DECIMAL)*, const(DECIMAL)*); + HRESULT VarDecCmpR8(const(DECIMAL)*, DOUBLE); + HRESULT VarDecDiv(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecFix(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecInt(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecMul(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecRound(const(DECIMAL)*, int, DECIMAL*); + HRESULT VarDecSub(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarCyAbs(CY, CY*); + HRESULT VarCyAdd(CY, CY, CY*); + HRESULT VarCyCmp(CY, CY); + HRESULT VarCyCmpR8(CY, DOUBLE); + HRESULT VarCyFix(CY, CY*); + HRESULT VarCyInt(CY, CY*); + HRESULT VarCyMul(CY, CY, CY*); + HRESULT VarCyMulI4(CY, LONG, CY*); + HRESULT VarCyMulI8(CY, LONG64, CY*); + HRESULT VarCyNeg(CY, CY*); + HRESULT VarCyRound(CY, INT, CY*); + HRESULT VarCySub(CY, CY, CY*); + HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarAnd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarCat(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarEqv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarIdiv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarImp(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMod(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarOr(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarPow(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarXor(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarAbs(LPVARIANT, LPVARIANT); + HRESULT VarFix(LPVARIANT, LPVARIANT); + HRESULT VarInt(LPVARIANT, LPVARIANT); + HRESULT VarNeg(LPVARIANT, LPVARIANT); + HRESULT VarNot(LPVARIANT, LPVARIANT); + HRESULT VarRound(LPVARIANT, int, LPVARIANT); + HRESULT VarCmp(LPVARIANT, LPVARIANT, LCID, ULONG); + HRESULT VarBstrCmp(BSTR, BSTR, LCID, ULONG); + HRESULT VarBstrCat(BSTR, BSTR, BSTR*); +} diff --git a/src/core/sys/windows/olectl.d b/src/core/sys/windows/olectl.d new file mode 100644 index 0000000000..77d9006b80 --- /dev/null +++ b/src/core/sys/windows/olectl.d @@ -0,0 +1,398 @@ +/***********************************************************************\ +* olectl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.olectl; + +// In conversion from MinGW, the following was deleted: +//#define FONTSIZE(n) {n##0000, 0} + +import win32.ocidl, win32.olectlid; +private import win32.basetyps, win32.oaidl, win32.oleauto, win32.unknwn, + win32.windef, win32.wingdi, win32.winuser, win32.wtypes; +private import win32.ntdef; // for NTSTATUS +private import win32.objfwd; // for LPSTREAM +private import win32.winerror; // for SCODE + + +private { + // These replace C macros. + template ITF_ERROR_SCODE_FOR_D(int c) + { + const SCODE ITF_ERROR_SCODE_FOR_D + = (SEVERITY_ERROR << 31) | (FACILITY_ITF << 16) | c; + } + + template ITF_SUCCESS_SCODE_FOR_D(int c) + { + const SCODE ITF_SUCCESS_SCODE_FOR_D + = (SEVERITY_SUCCESS << 31) | (FACILITY_ITF << 16) | c; + } + + template STD_CTL_SCODE(int c) + { + const SCODE STD_CTL_SCODE + = (SEVERITY_ERROR << 31) | (FACILITY_CONTROL << 16) | c; + } +} + +enum : SCODE { + CTL_E_ILLEGALFUNCTIONCALL = STD_CTL_SCODE!(5), + CTL_E_OVERFLOW = STD_CTL_SCODE!(6), + CTL_E_OUTOFMEMORY = STD_CTL_SCODE!(7), + CTL_E_DIVISIONBYZERO = STD_CTL_SCODE!(11), + CTL_E_OUTOFSTRINGSPACE = STD_CTL_SCODE!(14), + CTL_E_OUTOFSTACKSPACE = STD_CTL_SCODE!(28), + CTL_E_BADFILENAMEORNUMBER = STD_CTL_SCODE!(52), + CTL_E_FILENOTFOUND = STD_CTL_SCODE!(53), + CTL_E_BADFILEMODE = STD_CTL_SCODE!(54), + CTL_E_FILEALREADYOPEN = STD_CTL_SCODE!(55), + CTL_E_DEVICEIOERROR = STD_CTL_SCODE!(57), + CTL_E_FILEALREADYEXISTS = STD_CTL_SCODE!(58), + CTL_E_BADRECORDLENGTH = STD_CTL_SCODE!(59), + CTL_E_DISKFULL = STD_CTL_SCODE!(61), + CTL_E_BADRECORDNUMBER = STD_CTL_SCODE!(63), + CTL_E_BADFILENAME = STD_CTL_SCODE!(64), + CTL_E_TOOMANYFILES = STD_CTL_SCODE!(67), + CTL_E_DEVICEUNAVAILABLE = STD_CTL_SCODE!(68), + CTL_E_PERMISSIONDENIED = STD_CTL_SCODE!(70), + CTL_E_DISKNOTREADY = STD_CTL_SCODE!(71), + CTL_E_PATHFILEACCESSERROR = STD_CTL_SCODE!(75), + CTL_E_PATHNOTFOUND = STD_CTL_SCODE!(76), + CTL_E_INVALIDPATTERNSTRING = STD_CTL_SCODE!(93), + CTL_E_INVALIDUSEOFNULL = STD_CTL_SCODE!(94), + CTL_E_INVALIDFILEFORMAT = STD_CTL_SCODE!(321), + CTL_E_INVALIDPROPERTYVALUE = STD_CTL_SCODE!(380), + CTL_E_INVALIDPROPERTYARRAYINDEX = STD_CTL_SCODE!(381), + CTL_E_SETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(382), + CTL_E_SETNOTSUPPORTED = STD_CTL_SCODE!(383), + CTL_E_NEEDPROPERTYARRAYINDEX = STD_CTL_SCODE!(385), + CTL_E_SETNOTPERMITTED = STD_CTL_SCODE!(387), + CTL_E_GETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(393), + CTL_E_GETNOTSUPPORTED = STD_CTL_SCODE!(394), + CTL_E_PROPERTYNOTFOUND = STD_CTL_SCODE!(422), + CTL_E_INVALIDCLIPBOARDFORMAT = STD_CTL_SCODE!(460), + CTL_E_INVALIDPICTURE = STD_CTL_SCODE!(481), + CTL_E_PRINTERERROR = STD_CTL_SCODE!(482), + CTL_E_CANTSAVEFILETOTEMP = STD_CTL_SCODE!(735), + CTL_E_SEARCHTEXTNOTFOUND = STD_CTL_SCODE!(744), + CTL_E_REPLACEMENTSTOOLONG = STD_CTL_SCODE!(746), + CTL_E_CUSTOM_FIRST = STD_CTL_SCODE!(600) +} + +const SCODE CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST+2; + +enum : SCODE { + CONNECT_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + CONNECT_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + CONNECT_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + CONNECT_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + CONNECT_E_NOCONNECTION = CONNECT_E_FIRST + 0, + CONNECT_E_ADVISELIMIT = CONNECT_E_FIRST + 1, + CONNECT_E_CANNOTCONNECT = CONNECT_E_FIRST + 2, + CONNECT_E_OVERRIDDEN = CONNECT_E_FIRST + 3, + + SELFREG_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + SELFREG_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + SELFREG_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + SELFREG_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + SELFREG_E_TYPELIB = SELFREG_E_FIRST + 0, + SELFREG_E_CLASS = SELFREG_E_FIRST + 1, + + PERPROP_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + PERPROP_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + PERPROP_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + PERPROP_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + PERPROP_E_NOPAGEAVAILABLE = PERPROP_E_FIRST +} + +enum { + OLEMISC_RECOMPOSEONRESIZE = 0x1, + OLEMISC_ONLYICONIC = 0x2, + OLEMISC_INSERTNOTREPLACE = 0x4, + OLEMISC_STATIC = 0x8, + OLEMISC_CANTLINKINSIDE = 0x10, + OLEMISC_CANLINKBYOLE1 = 0x20, + OLEMISC_ISLINKOBJECT = 0x40, + OLEMISC_INSIDEOUT = 0x80, + OLEMISC_ACTIVATEWHENVISIBLE = 0x100, + OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200, + OLEMISC_INVISIBLEATRUNTIME = 0x400, + OLEMISC_ALWAYSRUN = 0x800, + OLEMISC_ACTSLIKEBUTTON = 0x1000, + OLEMISC_ACTSLIKELABEL = 0x2000, + OLEMISC_NOUIACTIVATE = 0x4000, + OLEMISC_ALIGNABLE = 0x8000, + OLEMISC_SIMPLEFRAME = 0x10000, + OLEMISC_SETCLIENTSITEFIRST = 0x20000, + OLEMISC_IMEMODE = 0x40000, + OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000, + OLEMISC_WANTSTOMENUMERGE = 0x100000, + OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 +} +const OLEIVERB_PROPERTIES = -7; + +const VT_STREAMED_PROPSET = 73; +const VT_STORED_PROPSET = 74; +const VT_BLOB_PROPSET = 75; +const VT_VERBOSE_ENUM = 76; +const VT_COLOR = VARENUM.VT_I4; +const VT_XPOS_PIXELS = VARENUM.VT_I4; +const VT_YPOS_PIXELS = VARENUM.VT_I4; +const VT_XSIZE_PIXELS = VARENUM.VT_I4; +const VT_YSIZE_PIXELS = VARENUM.VT_I4; +const VT_XPOS_HIMETRIC = VARENUM.VT_I4; +const VT_YPOS_HIMETRIC = VARENUM.VT_I4; +const VT_XSIZE_HIMETRIC = VARENUM.VT_I4; +const VT_YSIZE_HIMETRIC = VARENUM.VT_I4; +const VT_TRISTATE = VARENUM.VT_I2; +const VT_OPTEXCLUSIVE = VARENUM.VT_BOOL; +const VT_FONT = VARENUM.VT_DISPATCH; +const VT_PICTURE = VARENUM.VT_DISPATCH; +const VT_HANDLE = VARENUM.VT_I4; + +enum { + OCM__BASE = WM_USER + 0x1c00, + OCM_COMMAND = OCM__BASE + WM_COMMAND, + OCM_CTLCOLORBTN = OCM__BASE + WM_CTLCOLORBTN, + OCM_CTLCOLOREDIT = OCM__BASE + WM_CTLCOLOREDIT, + OCM_CTLCOLORDLG = OCM__BASE + WM_CTLCOLORDLG, + OCM_CTLCOLORLISTBOX = OCM__BASE + WM_CTLCOLORLISTBOX, + OCM_CTLCOLORMSGBOX = OCM__BASE + WM_CTLCOLORMSGBOX, + OCM_CTLCOLORSCROLLBAR = OCM__BASE + WM_CTLCOLORSCROLLBAR, + OCM_CTLCOLORSTATIC = OCM__BASE + WM_CTLCOLORSTATIC, + OCM_DRAWITEM = OCM__BASE + WM_DRAWITEM, + OCM_MEASUREITEM = OCM__BASE + WM_MEASUREITEM, + OCM_DELETEITEM = OCM__BASE + WM_DELETEITEM, + OCM_VKEYTOITEM = OCM__BASE + WM_VKEYTOITEM, + OCM_CHARTOITEM = OCM__BASE + WM_CHARTOITEM, + OCM_COMPAREITEM = OCM__BASE + WM_COMPAREITEM, + OCM_HSCROLL = OCM__BASE + WM_HSCROLL, + OCM_VSCROLL = OCM__BASE + WM_VSCROLL, + OCM_PARENTNOTIFY = OCM__BASE + WM_PARENTNOTIFY, + OCM_NOTIFY = OCM__BASE + WM_NOTIFY +} + +enum { + CTRLINFO_EATS_RETURN = 1, + CTRLINFO_EATS_ESCAPE +} + +enum { + XFORMCOORDS_POSITION = 1, + XFORMCOORDS_SIZE = 2, + XFORMCOORDS_HIMETRICTOCONTAINER = 4, + XFORMCOORDS_CONTAINERTOHIMETRIC = 8 +} + +const GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1; + +enum { + PROPPAGESTATUS_DIRTY = 1, + PROPPAGESTATUS_VALIDATE = 2 +} + +enum { + PICTURE_SCALABLE = 1, + PICTURE_TRANSPARENT = 2 +} + +enum { + PICTYPE_UNINITIALIZED = -1, + PICTYPE_NONE, // = 0 + PICTYPE_BITMAP, + PICTYPE_METAFILE, + PICTYPE_ICON, + PICTYPE_ENHMETAFILE // = 4 +} + +enum { + DISPID_AUTOSIZE = -500, + DISPID_BACKCOLOR = -501, + DISPID_BACKSTYLE = -502, + DISPID_BORDERCOLOR = -503, + DISPID_BORDERSTYLE = -504, + DISPID_BORDERWIDTH = -505, + DISPID_DRAWMODE = -507, + DISPID_DRAWSTYLE = -508, + DISPID_DRAWWIDTH = -509, + DISPID_FILLCOLOR = -510, + DISPID_FILLSTYLE = -511, + DISPID_FONT = -512, + DISPID_FORECOLOR = -513, + DISPID_ENABLED = -514, + DISPID_HWND = -515, + DISPID_TABSTOP = -516, + DISPID_TEXT = -517, + DISPID_CAPTION = -518, + DISPID_BORDERVISIBLE = -519, + DISPID_APPEARANCE = -520, + DISPID_MOUSEPOINTER = -521, + DISPID_MOUSEICON = -522, + DISPID_PICTURE = -523, + DISPID_VALID = -524, + DISPID_REFRESH = -550, + DISPID_DOCLICK = -551, + DISPID_ABOUTBOX = -552, + DISPID_CLICK = -600, + DISPID_DBLCLICK = -601, + DISPID_KEYDOWN = -602, + DISPID_KEYPRESS = -603, + DISPID_KEYUP = -604, + DISPID_MOUSEDOWN = -605, + DISPID_MOUSEMOVE = -606, + DISPID_MOUSEUP = -607, + DISPID_ERROREVENT = -608, + DISPID_AMBIENT_BACKCOLOR = -701, + DISPID_AMBIENT_DISPLAYNAME = -702, + DISPID_AMBIENT_FONT = -703, + DISPID_AMBIENT_FORECOLOR = -704, + DISPID_AMBIENT_LOCALEID = -705, + DISPID_AMBIENT_MESSAGEREFLECT = -706, + DISPID_AMBIENT_SCALEUNITS = -707, + DISPID_AMBIENT_TEXTALIGN = -708, + DISPID_AMBIENT_USERMODE = -709, + DISPID_AMBIENT_UIDEAD = -710, + DISPID_AMBIENT_SHOWGRABHANDLES = -711, + DISPID_AMBIENT_SHOWHATCHING = -712, + DISPID_AMBIENT_DISPLAYASDEFAULT = -713, + DISPID_AMBIENT_SUPPORTSMNEMONICS = -714, + DISPID_AMBIENT_AUTOCLIP = -715, + DISPID_AMBIENT_APPEARANCE = -716, + DISPID_AMBIENT_CODEPAGE = -725, + DISPID_AMBIENT_PALETTE = -726, + DISPID_AMBIENT_CHARSET = -727, + DISPID_AMBIENT_RIGHTTOLEFT = -732, + DISPID_AMBIENT_TOPTOBOTTOM = -733 +} + +enum { + DISPID_FONT_NAME = 0, + DISPID_FONT_SIZE = 2, + DISPID_FONT_BOLD, + DISPID_FONT_ITALIC, + DISPID_FONT_UNDER, + DISPID_FONT_STRIKE, + DISPID_FONT_WEIGHT, + DISPID_FONT_CHARSET // = 8 +} + +enum { + DISPID_PICT_HANDLE = 0, + DISPID_PICT_HPAL = 2, + DISPID_PICT_TYPE, + DISPID_PICT_WIDTH, + DISPID_PICT_HEIGHT, + DISPID_PICT_RENDER // = 6 +} + +alias IOleControl LPOLECONTROL; +alias IOleControlSite LPOLECONTROLSITE; +alias ISimpleFrameSite LPSIMPLEFRAMESITE; +alias IPersistPropertyBag LPPERSISTPROPERTYBAG; +alias IPersistStreamInit LPPERSISTSTREAMINIT; +alias IPersistMemory LPPERSISTMEMORY; +alias IPropertyNotifySink LPPROPERTYNOTIFYSINK; +alias IProvideClassInfo LPPROVIDECLASSINFO; +alias IProvideClassInfo2 LPPROVIDECLASSINFO2; +alias IConnectionPointContainer LPCONNECTIONPOINTCONTAINER; +alias IClassFactory2 LPCLASSFACTORY2; +alias ISpecifyPropertyPages LPSPECIFYPROPERTYPAGES; +alias IPerPropertyBrowsing LPPERPROPERTYBROWSING; +alias IPropertyPage LPPROPERTYPAGE; +alias IPropertyPage2 LPPROPERTYPAGE2; + +alias IPicture LPPICTURE; +alias IPictureDisp LPPICTUREDISP; +alias int OLE_XPOS_PIXELS; +alias int OLE_YPOS_PIXELS; +alias int OLE_XSIZE_PIXELS; +alias int OLE_YSIZE_PIXELS; +alias float OLE_XPOS_CONTAINER; +alias float OLE_YPOS_CONTAINER; +alias float OLE_XSIZE_CONTAINER; + +alias VARIANT_BOOL OLE_OPTEXCLUSIVE; +alias VARIANT_BOOL OLE_CANCELBOOL; +alias VARIANT_BOOL OLE_ENABLEDEFAULTBOOL; + +align(8): + +enum OLE_TRISTATE { + triUnchecked, + triChecked1, + triGray +} + +struct OCPFIPARAMS { + ULONG cbStructSize; + HWND hWndOwner; + int x; + int y; + LPCOLESTR lpszCaption; + ULONG cObjects; + LPUNKNOWN *lplpUnk; + ULONG cPages; + CLSID *lpPages; + LCID lcid; + DISPID dispidInitialProperty; +} +alias OCPFIPARAMS* LPOCPFIPARAMS; + +struct FONTDESC { + UINT cbSizeofstruct; + LPOLESTR lpstrName; + CY cySize; + SHORT sWeight; + SHORT sCharset; + BOOL fItalic; + BOOL fUnderline; + BOOL fStrikethrough; +} +alias FONTDESC* LPFONTDESC; + +struct PICTDESC +{ + UINT cbSizeofstruct; + UINT picType; + union { + struct bmp { + HBITMAP hbitmap; + HPALETTE hpal; + } + struct wmf { + HMETAFILE hmeta; + int xExt; + int yExt; + } + struct icon { + HICON hicon; + } + struct emf { + HENHMETAFILE hemf; + } + } +} +alias PICTDESC* LPPICTDESC; + +extern(Windows) { + HRESULT DllRegisterServer(); + HRESULT DllUnregisterServer(); + HRESULT OleCreateFontIndirect(LPFONTDESC, REFIID, PVOID*); + HRESULT OleCreatePictureIndirect(LPPICTDESC, REFIID, BOOL, PVOID*); + HRESULT OleCreatePropertyFrame(HWND, UINT, UINT, LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, PVOID); + HRESULT OleCreatePropertyFrameIndirect(LPOCPFIPARAMS); + HCURSOR OleIconToCursor(HINSTANCE, HICON); + HRESULT OleLoadPicture(LPSTREAM, LONG, BOOL, REFIID, PVOID*); + HRESULT OleLoadPictureEx(LPSTREAM, LONG, BOOL, REFIID, DWORD, DWORD, DWORD, LPVOID*); + HRESULT OleLoadPicturePath(LPOLESTR, LPUNKNOWN, DWORD, OLE_COLOR, REFIID, LPVOID*); + HRESULT OleLoadPictureFile(VARIANT, LPDISPATCH*); + HRESULT OleLoadPictureFileEx(VARIANT, DWORD, DWORD, DWORD, LPDISPATCH*); + HRESULT OleSavePictureFile(LPDISPATCH, BSTR); + HRESULT OleTranslateColor(OLE_COLOR, HPALETTE, COLORREF*); +} diff --git a/src/core/sys/windows/olectlid.d b/src/core/sys/windows/olectlid.d new file mode 100644 index 0000000000..5e180ccd72 --- /dev/null +++ b/src/core/sys/windows/olectlid.d @@ -0,0 +1,13 @@ +/***********************************************************************\ +* olectlid.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.olectlid; + +private import win32.basetyps; + diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d new file mode 100644 index 0000000000..bdaf2b9232 --- /dev/null +++ b/src/core/sys/windows/oledlg.d @@ -0,0 +1,990 @@ +/***********************************************************************\ +* oledlg.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.oledlg; + +import win32.commdlg, win32.dlgs, win32.ole2, win32.prsht, win32.shellapi, + win32.windows; +private import win32.winbase, win32.objidl, win32.objfwd, win32.winnt; + +// FIXME: remove inherited methods from interface definitions + +const PS_MAXLINKTYPES=8; + +const TCHAR[] OLESTDDELIM = "\\"; +const TCHAR[] SZOLEUI_MSG_HELP = "OLEUI_MSG_HELP"; +const TCHAR[] SZOLEUI_MSG_ENDDIALOG = "OLEUI_MSG_ENDDIALOG"; +const TCHAR[] SZOLEUI_MSG_BROWSE = "OLEUI_MSG_BROWSE"; +const TCHAR[] SZOLEUI_MSG_CHANGEICON = "OLEUI_MSG_CHANGEICON"; +const TCHAR[] SZOLEUI_MSG_CLOSEBUSYDIALOG = "OLEUI_MSG_CLOSEBUSYDIALOG"; +const TCHAR[] SZOLEUI_MSG_CONVERT = "OLEUI_MSG_CONVERT"; +const TCHAR[] SZOLEUI_MSG_CHANGESOURCE = "OLEUI_MSG_CHANGESOURCE"; +const TCHAR[] SZOLEUI_MSG_ADDCONTROL = "OLEUI_MSG_ADDCONTROL"; +const TCHAR[] SZOLEUI_MSG_BROWSE_OFN = "OLEUI_MSG_BROWSE_OFN"; + +const TCHAR[] PROP_HWND_CHGICONDLG = "HWND_CIDLG"; + +const IDC_OLEUIHELP=99; + +enum { + IDC_IO_CREATENEW = 2100, + IDC_IO_CREATEFROMFILE, + IDC_IO_LINKFILE, + IDC_IO_OBJECTTYPELIST, + IDC_IO_DISPLAYASICON, + IDC_IO_CHANGEICON, + IDC_IO_FILE, + IDC_IO_FILEDISPLAY, + IDC_IO_RESULTIMAGE, + IDC_IO_RESULTTEXT, + IDC_IO_ICONDISPLAY, + IDC_IO_OBJECTTYPETEXT, + IDC_IO_FILETEXT, + IDC_IO_FILETYPE, + IDC_IO_INSERTCONTROL, + IDC_IO_ADDCONTROL, + IDC_IO_CONTROLTYPELIST // = 2116 +} + +const IDC_PS_PASTE=500; +const IDC_PS_PASTELINK=501; +const IDC_PS_SOURCETEXT=502; +const IDC_PS_PASTELIST=503; +const IDC_PS_PASTELINKLIST=504; +const IDC_PS_DISPLAYLIST=505; +const IDC_PS_DISPLAYASICON=506; +const IDC_PS_ICONDISPLAY=507; +const IDC_PS_CHANGEICON=508; +const IDC_PS_RESULTIMAGE=509; +const IDC_PS_RESULTTEXT=510; + +const IDC_CI_GROUP=120; +const IDC_CI_CURRENT=121; +const IDC_CI_CURRENTICON=122; +const IDC_CI_DEFAULT=123; +const IDC_CI_DEFAULTICON=124; +const IDC_CI_FROMFILE=125; +const IDC_CI_FROMFILEEDIT=126; +const IDC_CI_ICONLIST=127; +const IDC_CI_LABEL=128; +const IDC_CI_LABELEDIT=129; +const IDC_CI_BROWSE=130; +const IDC_CI_ICONDISPLAY=131; + +const IDC_CV_OBJECTTYPE=150; +const IDC_CV_DISPLAYASICON=152; +const IDC_CV_CHANGEICON=153; +const IDC_CV_ACTIVATELIST=154; +const IDC_CV_CONVERTTO=155; +const IDC_CV_ACTIVATEAS=156; +const IDC_CV_RESULTTEXT=157; +const IDC_CV_CONVERTLIST=158; +const IDC_CV_ICONDISPLAY=165; + +const IDC_EL_CHANGESOURCE=201; +const IDC_EL_AUTOMATIC=202; +const IDC_EL_CANCELLINK=209; +const IDC_EL_UPDATENOW=210; +const IDC_EL_OPENSOURCE=211; +const IDC_EL_MANUAL=212; +const IDC_EL_LINKSOURCE=216; +const IDC_EL_LINKTYPE=217; +const IDC_EL_LINKSLISTBOX=206; +const IDC_EL_COL1=220; +const IDC_EL_COL2=221; +const IDC_EL_COL3=222; + +const IDC_BZ_RETRY=600; +const IDC_BZ_ICON=601; +const IDC_BZ_MESSAGE1=602; +const IDC_BZ_SWITCHTO=604; + +const IDC_UL_METER=1029; +const IDC_UL_STOP=1030; +const IDC_UL_PERCENT=1031; +const IDC_UL_PROGRESS=1032; + +const IDC_PU_LINKS=900; +const IDC_PU_TEXT=901; +const IDC_PU_CONVERT=902; +const IDC_PU_ICON=908; + +const IDC_GP_OBJECTNAME=1009; +const IDC_GP_OBJECTTYPE=1010; +const IDC_GP_OBJECTSIZE=1011; +const IDC_GP_CONVERT=1013; +const IDC_GP_OBJECTICON=1014; +const IDC_GP_OBJECTLOCATION=1022; + +const IDC_VP_PERCENT=1000; +const IDC_VP_CHANGEICON=1001; +const IDC_VP_EDITABLE=1002; +const IDC_VP_ASICON=1003; +const IDC_VP_RELATIVE=1005; +const IDC_VP_SPIN=1006; +const IDC_VP_SCALETXT=1034; +const IDC_VP_ICONDISPLAY=1021; +const IDC_VP_RESULTIMAGE=1033; + +const IDC_LP_OPENSOURCE=1006; +const IDC_LP_UPDATENOW=1007; +const IDC_LP_BREAKLINK=1008; +const IDC_LP_LINKSOURCE=1012; +const IDC_LP_CHANGESOURCE=1015; +const IDC_LP_AUTOMATIC=1016; +const IDC_LP_MANUAL=1017; +const IDC_LP_DATE=1018; +const IDC_LP_TIME=1019; + +const IDD_INSERTOBJECT=1000; +const IDD_CHANGEICON=1001; +const IDD_CONVERT=1002; +const IDD_PASTESPECIAL=1003; +const IDD_EDITLINKS=1004; +const IDD_BUSY=1006; +const IDD_UPDATELINKS=1007; +const IDD_CHANGESOURCE=1009; +const IDD_INSERTFILEBROWSE=1010; +const IDD_CHANGEICONBROWSE=1011; +const IDD_CONVERTONLY=1012; +const IDD_CHANGESOURCE4=1013; +const IDD_GNRLPROPS=1100; +const IDD_VIEWPROPS=1101; +const IDD_LINKPROPS=1102; +const IDD_CANNOTUPDATELINK=1008; +const IDD_LINKSOURCEUNAVAILABLE=1020; +const IDD_SERVERNOTFOUND=1023; +const IDD_OUTOFMEMORY=1024; +const IDD_SERVERNOTREGW=1021; +const IDD_LINKTYPECHANGEDW=1022; +const IDD_SERVERNOTREGA=1025; +const IDD_LINKTYPECHANGEDA=1026; + +const ID_BROWSE_CHANGEICON=1; +const ID_BROWSE_INSERTFILE=2; +const ID_BROWSE_ADDCONTROL=3; +const ID_BROWSE_CHANGESOURCE=4; + +const OLEUI_FALSE=0; +const OLEUI_SUCCESS=1; +const OLEUI_OK=1; +const OLEUI_CANCEL=2; + +const OLEUI_ERR_STANDARDMIN=100; +const OLEUI_ERR_STRUCTURENULL=101; +const OLEUI_ERR_STRUCTUREINVALID=102; +const OLEUI_ERR_CBSTRUCTINCORRECT=103; +const OLEUI_ERR_HWNDOWNERINVALID=104; +const OLEUI_ERR_LPSZCAPTIONINVALID=105; +const OLEUI_ERR_LPFNHOOKINVALID=106; +const OLEUI_ERR_HINSTANCEINVALID=107; +const OLEUI_ERR_LPSZTEMPLATEINVALID=108; +const OLEUI_ERR_HRESOURCEINVALID=109; +const OLEUI_ERR_FINDTEMPLATEFAILURE=110; +const OLEUI_ERR_LOADTEMPLATEFAILURE=111; +const OLEUI_ERR_DIALOGFAILURE=112; +const OLEUI_ERR_LOCALMEMALLOC=113; +const OLEUI_ERR_GLOBALMEMALLOC=114; +const OLEUI_ERR_LOADSTRING=115; +const OLEUI_ERR_OLEMEMALLOC=116; +const OLEUI_ERR_STANDARDMAX=116; + +const OPF_OBJECTISLINK=1; +const OPF_NOFILLDEFAULT=2; +const OPF_SHOWHELP=4; +const OPF_DISABLECONVERT=8; + +const OLEUI_OPERR_SUBPROPNULL=OLEUI_ERR_STANDARDMAX; +const OLEUI_OPERR_SUBPROPINVALID=(OLEUI_ERR_STANDARDMAX+1); +const OLEUI_OPERR_PROPSHEETNULL=(OLEUI_ERR_STANDARDMAX+2); +const OLEUI_OPERR_PROPSHEETINVALID=(OLEUI_ERR_STANDARDMAX+3); +const OLEUI_OPERR_SUPPROP=(OLEUI_ERR_STANDARDMAX+4); +const OLEUI_OPERR_PROPSINVALID=(OLEUI_ERR_STANDARDMAX+5); +const OLEUI_OPERR_PAGESINCORRECT=(OLEUI_ERR_STANDARDMAX+6); +const OLEUI_OPERR_INVALIDPAGES=(OLEUI_ERR_STANDARDMAX+7); +const OLEUI_OPERR_NOTSUPPORTED=(OLEUI_ERR_STANDARDMAX+8); +const OLEUI_OPERR_DLGPROCNOTNULL=(OLEUI_ERR_STANDARDMAX+9); +const OLEUI_OPERR_LPARAMNOTZERO=(OLEUI_ERR_STANDARDMAX+10); +const OLEUI_GPERR_STRINGINVALID=(OLEUI_ERR_STANDARDMAX+11); +const OLEUI_GPERR_CLASSIDINVALID=(OLEUI_ERR_STANDARDMAX+12); +const OLEUI_GPERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+13); +const OLEUI_GPERR_CBFORMATINVALID=(OLEUI_ERR_STANDARDMAX+14); +const OLEUI_VPERR_METAPICTINVALID=(OLEUI_ERR_STANDARDMAX+15); +const OLEUI_VPERR_DVASPECTINVALID=(OLEUI_ERR_STANDARDMAX+16); +const OLEUI_LPERR_LINKCNTRNULL=(OLEUI_ERR_STANDARDMAX+17); +const OLEUI_LPERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+18); +const OLEUI_OPERR_PROPERTYSHEET=(OLEUI_ERR_STANDARDMAX+19); +const OLEUI_OPERR_OBJINFOINVALID=(OLEUI_ERR_STANDARDMAX+20); +const OLEUI_OPERR_LINKINFOINVALID=(OLEUI_ERR_STANDARDMAX+21); + +const OLEUI_QUERY_GETCLASSID=65280; +const OLEUI_QUERY_LINKBROKEN=65281; + +const IOF_SHOWHELP=1; +const IOF_SELECTCREATENEW=2; +const IOF_SELECTCREATEFROMFILE=4; +const IOF_CHECKLINK=8; +const IOF_CHECKDISPLAYASICON=16; +const IOF_CREATENEWOBJECT=32; +const IOF_CREATEFILEOBJECT=64; +const IOF_CREATELINKOBJECT=128; +const IOF_DISABLELINK=256; +const IOF_VERIFYSERVERSEXIST=512; +const IOF_DISABLEDISPLAYASICON=1024; +const IOF_HIDECHANGEICON=2048; +const IOF_SHOWINSERTCONTROL=4096; +const IOF_SELECTCREATECONTROL=8192; + +const OLEUI_IOERR_LPSZFILEINVALID=OLEUI_ERR_STANDARDMAX; +const OLEUI_IOERR_LPSZLABELINVALID=(OLEUI_ERR_STANDARDMAX+1); +const OLEUI_IOERR_HICONINVALID=(OLEUI_ERR_STANDARDMAX+2); +const OLEUI_IOERR_LPFORMATETCINVALID=(OLEUI_ERR_STANDARDMAX+3); +const OLEUI_IOERR_PPVOBJINVALID=(OLEUI_ERR_STANDARDMAX+4); +const OLEUI_IOERR_LPIOLECLIENTSITEINVALID=(OLEUI_ERR_STANDARDMAX+5); +const OLEUI_IOERR_LPISTORAGEINVALID=(OLEUI_ERR_STANDARDMAX+6); +const OLEUI_IOERR_SCODEHASERROR=(OLEUI_ERR_STANDARDMAX+7); +const OLEUI_IOERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+8); +const OLEUI_IOERR_CCHFILEINVALID=(OLEUI_ERR_STANDARDMAX+9); + +const PSF_SHOWHELP=1; +const PSF_SELECTPASTE=2; +const PSF_SELECTPASTELINK=4; +const PSF_CHECKDISPLAYASICON=8; +const PSF_DISABLEDISPLAYASICON=16; +const PSF_HIDECHANGEICON=32; +const PSF_STAYONCLIPBOARDCHANGE=64; +const PSF_NOREFRESHDATAOBJECT=128; + +const OLEUI_IOERR_SRCDATAOBJECTINVALID=OLEUI_ERR_STANDARDMAX; +const OLEUI_IOERR_ARRPASTEENTRIESINVALID=(OLEUI_ERR_STANDARDMAX+1); +const OLEUI_IOERR_ARRLINKTYPESINVALID=(OLEUI_ERR_STANDARDMAX+2); +const OLEUI_PSERR_CLIPBOARDCHANGED=(OLEUI_ERR_STANDARDMAX+3); +const OLEUI_PSERR_GETCLIPBOARDFAILED=(OLEUI_ERR_STANDARDMAX+4); +const OLEUI_ELERR_LINKCNTRNULL=OLEUI_ERR_STANDARDMAX; +const OLEUI_ELERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+1); + +const ELF_SHOWHELP=1; +const ELF_DISABLEUPDATENOW=2; +const ELF_DISABLEOPENSOURCE=4; +const ELF_DISABLECHANGESOURCE=8; +const ELF_DISABLECANCELLINK=16; + +const CIF_SHOWHELP=1; +const CIF_SELECTCURRENT=2; +const CIF_SELECTDEFAULT=4; +const CIF_SELECTFROMFILE=8; +const CIF_USEICONEXE=16; + +const OLEUI_CIERR_MUSTHAVECLSID=OLEUI_ERR_STANDARDMAX; +const OLEUI_CIERR_MUSTHAVECURRENTMETAFILE=OLEUI_ERR_STANDARDMAX+1; +const OLEUI_CIERR_SZICONEXEINVALID=OLEUI_ERR_STANDARDMAX+2; + +const CF_SHOWHELPBUTTON=1; +const CF_SETCONVERTDEFAULT=2; +const CF_SETACTIVATEDEFAULT=4; +const CF_SELECTCONVERTTO=8; +const CF_SELECTACTIVATEAS=16; +const CF_DISABLEDISPLAYASICON=32; +const CF_DISABLEACTIVATEAS=64; +const CF_HIDECHANGEICON=128; +const CF_CONVERTONLY=256; + +const OLEUI_CTERR_CLASSIDINVALID = OLEUI_ERR_STANDARDMAX+1; +const OLEUI_CTERR_DVASPECTINVALID = OLEUI_ERR_STANDARDMAX+2; +const OLEUI_CTERR_CBFORMATINVALID = OLEUI_ERR_STANDARDMAX+3; +const OLEUI_CTERR_HMETAPICTINVALID = OLEUI_ERR_STANDARDMAX+4; +const OLEUI_CTERR_STRINGINVALID = OLEUI_ERR_STANDARDMAX+5; + +const BZ_DISABLECANCELBUTTON = 1; +const BZ_DISABLESWITCHTOBUTTON = 2; +const BZ_DISABLERETRYBUTTON = 4; +const BZ_NOTRESPONDINGDIALOG = 8; + +const OLEUI_BZERR_HTASKINVALID = OLEUI_ERR_STANDARDMAX; +const OLEUI_BZ_SWITCHTOSELECTED = OLEUI_ERR_STANDARDMAX+1; +const OLEUI_BZ_RETRYSELECTED = OLEUI_ERR_STANDARDMAX+2; +const OLEUI_BZ_CALLUNBLOCKED = OLEUI_ERR_STANDARDMAX+3; + +const CSF_SHOWHELP = 1; +const CSF_VALIDSOURCE = 2; +const CSF_ONLYGETSOURCE = 4; +const CSF_EXPLORER = 8; + +const OLEUI_CSERR_LINKCNTRNULL = OLEUI_ERR_STANDARDMAX; +const OLEUI_CSERR_LINKCNTRINVALID = OLEUI_ERR_STANDARDMAX+1; +const OLEUI_CSERR_FROMNOTNULL = OLEUI_ERR_STANDARDMAX+2; +const OLEUI_CSERR_TONOTNULL = OLEUI_ERR_STANDARDMAX+3; +const OLEUI_CSERR_SOURCENULL = OLEUI_ERR_STANDARDMAX+4; +const OLEUI_CSERR_SOURCEINVALID = OLEUI_ERR_STANDARDMAX+5; +const OLEUI_CSERR_SOURCEPARSERROR = OLEUI_ERR_STANDARDMAX+6; +const OLEUI_CSERR_SOURCEPARSEERROR = OLEUI_ERR_STANDARDMAX+7; + +const VPF_SELECTRELATIVE=1; +const VPF_DISABLERELATIVE=2; +const VPF_DISABLESCALE=4; + +align(8): +extern (Windows) { + alias UINT function(HWND, UINT, WPARAM, LPARAM) LPFNOLEUIHOOK; +} + +struct OLEUIINSERTOBJECTW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + LPWSTR lpszFile; + UINT cchFile; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + IID iid; + DWORD oleRender; + LPFORMATETC lpFormatEtc; + LPOLECLIENTSITE lpIOleClientSite; + LPSTORAGE lpIStorage; + PVOID *ppvObj; + SCODE sc; + HGLOBAL hMetaPict; +} +alias OLEUIINSERTOBJECTW* POLEUIINSERTOBJECTW, LPOLEUIINSERTOBJECTW; + +struct OLEUIINSERTOBJECTA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + LPSTR lpszFile; + UINT cchFile; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + IID iid; + DWORD oleRender; + LPFORMATETC lpFormatEtc; + LPOLECLIENTSITE lpIOleClientSite; + LPSTORAGE lpIStorage; + PVOID *ppvObj; + SCODE sc; + HGLOBAL hMetaPict; +} +alias OLEUIINSERTOBJECTA* POLEUIINSERTOBJECTA, LPOLEUIINSERTOBJECTA; + +UINT OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); +UINT OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); + +enum OLEUIPASTEFLAG { + OLEUIPASTE_PASTEONLY, + OLEUIPASTE_LINKTYPE1, + OLEUIPASTE_LINKTYPE2, + OLEUIPASTE_LINKTYPE3 = 4, + OLEUIPASTE_LINKTYPE4 = 8, + OLEUIPASTE_LINKTYPE5 = 16, + OLEUIPASTE_LINKTYPE6 = 32, + OLEUIPASTE_LINKTYPE7 = 64, + OLEUIPASTE_LINKTYPE8 = 128, + OLEUIPASTE_PASTE = 512, + OLEUIPASTE_LINKANYTYPE = 1024, + OLEUIPASTE_ENABLEICON = 2048 +} + +struct OLEUIPASTEENTRYW { + FORMATETC fmtetc; + LPCWSTR lpstrFormatName; + LPCWSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; +} +alias OLEUIPASTEENTRYW* POLEUIPASTEENTRYW, LPOLEUIPASTEENTRYW; + +struct OLEUIPASTEENTRYA { + FORMATETC fmtetc; + LPCSTR lpstrFormatName; + LPCSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; +} +alias OLEUIPASTEENTRYA* POLEUIPASTEENTRYA, LPOLEUIPASTEENTRYA; + +struct OLEUIPASTESPECIALW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPDATAOBJECT lpSrcDataObj; + LPOLEUIPASTEENTRYW arrPasteEntries; + int cPasteEntries; + UINT *arrLinkTypes; + int cLinkTypes; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + int nSelectedIndex; + BOOL fLink; + HGLOBAL hMetaPict; + SIZEL sizel; +} +alias OLEUIPASTESPECIALW* POLEUIPASTESPECIALW, LPOLEUIPASTESPECIALW; + +struct OLEUIPASTESPECIALA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPDATAOBJECT lpSrcDataObj; + LPOLEUIPASTEENTRYA arrPasteEntries; + int cPasteEntries; + UINT* arrLinkTypes; + int cLinkTypes; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + int nSelectedIndex; + BOOL fLink; + HGLOBAL hMetaPict; + SIZEL sizel; +} +alias OLEUIPASTESPECIALA* POLEUIPASTESPECIALA, LPOLEUIPASTESPECIALA; + +interface IOleUILinkContainerW : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD dwLink); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, PDWORD); + HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); +} +alias IOleUILinkContainerW LPOLEUILINKCONTAINERW; + +interface IOleUILinkContainerA : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, PDWORD); + HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); +} +alias IOleUILinkContainerA LPOLEUILINKCONTAINERA; + +struct OLEUIEDITLINKSW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; +} +alias OLEUIEDITLINKSW* POLEUIEDITLINKSW, LPOLEUIEDITLINKSW; + +struct OLEUIEDITLINKSA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; +} +alias OLEUIEDITLINKSA* POLEUIEDITLINKSA, LPOLEUIEDITLINKSA; + +struct OLEUICHANGEICONW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + WCHAR[MAX_PATH] szIconExe; + int cchIconExe; +} +alias OLEUICHANGEICONW* POLEUICHANGEICONW, LPOLEUICHANGEICONW; + +struct OLEUICHANGEICONA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + CHAR[MAX_PATH] szIconExe; + int cchIconExe; +} +alias OLEUICHANGEICONA* POLEUICHANGEICONA, LPOLEUICHANGEICONA; + +struct OLEUICONVERTW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + CLSID clsidConvertDefault; + CLSID clsidActivateDefault; + CLSID clsidNew; + DWORD dvAspect; + WORD wFormat; + BOOL fIsLinkedObject; + HGLOBAL hMetaPict; + LPWSTR lpszUserType; + BOOL fObjectsIconChanged; + LPWSTR lpszDefLabel; + UINT cClsidExclude; + LPCLSID lpClsidExclude; +} +alias OLEUICONVERTW* POLEUICONVERTW, LPOLEUICONVERTW; + +struct OLEUICONVERTA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + CLSID clsidConvertDefault; + CLSID clsidActivateDefault; + CLSID clsidNew; + DWORD dvAspect; + WORD wFormat; + BOOL fIsLinkedObject; + HGLOBAL hMetaPict; + LPSTR lpszUserType; + BOOL fObjectsIconChanged; + LPSTR lpszDefLabel; + UINT cClsidExclude; + LPCLSID lpClsidExclude; +} +alias OLEUICONVERTA* POLEUICONVERTA, LPOLEUICONVERTA; + +struct OLEUIBUSYW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND *lphWndDialog; +} +alias OLEUIBUSYW* POLEUIBUSYW, LPOLEUIBUSYW; + +struct OLEUIBUSYA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND *lphWndDialog; +} +alias OLEUIBUSYA* POLEUIBUSYA, LPOLEUIBUSYA; + +struct OLEUICHANGESOURCEW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEW* lpOFN; + DWORD[4] dwReserved1; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; + DWORD dwLink; + LPWSTR lpszDisplayName; + ULONG nFileLength; + LPWSTR lpszFrom; + LPWSTR lpszTo; +} +alias OLEUICHANGESOURCEW* POLEUICHANGESOURCEW, LPOLEUICHANGESOURCEW; + +struct OLEUICHANGESOURCEA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEA *lpOFN; + DWORD[4] dwReserved1; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; + DWORD dwLink; + LPSTR lpszDisplayName; + ULONG nFileLength; + LPSTR lpszFrom; + LPSTR lpszTo; +} +alias OLEUICHANGESOURCEA* POLEUICHANGESOURCEA, LPOLEUICHANGESOURCEA; + +interface IOleUIObjInfoW : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT GetObjectInfo(DWORD, PDWORD, LPWSTR*, LPWSTR*, LPWSTR*, LPWSTR*); + HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); + HRESULT ConvertObject(DWORD, REFCLSID); + HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); + HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); +} +alias IOleUIObjInfoW LPOLEUIOBJINFOW; + +interface IOleUIObjInfoA : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT GetObjectInfo(DWORD, PDWORD, LPSTR*, LPSTR*, LPSTR*, LPSTR*); + HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); + HRESULT ConvertObject(DWORD, REFCLSID); + HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); + HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); +} +alias IOleUIObjInfoA LPOLEUIOBJINFOA; + +interface IOleUILinkInfoW : IOleUILinkContainerW +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, DWORD*); + HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); + HRESULT GetLastUpdate(DWORD, FILETIME*); +} +alias IOleUILinkInfoW LPOLEUILINKINFOW; + +interface IOleUILinkInfoA : IOleUILinkContainerA +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, DWORD*); + HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); + HRESULT GetLastUpdate(DWORD, FILETIME*); +} +alias IOleUILinkInfoA LPOLEUILINKINFOA; + +struct OLEUIGNRLPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW* lpOP; +} +alias OLEUIGNRLPROPSW* POLEUIGNRLPROPSW, LPOLEUIGNRLPROPSW; + +struct OLEUIGNRLPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA* lpOP; +} +alias OLEUIGNRLPROPSA* POLEUIGNRLPROPSA, LPOLEUIGNRLPROPSA; + +struct OLEUIVIEWPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW* lpOP; + int nScaleMin; + int nScaleMax; +} +alias OLEUIVIEWPROPSW* POLEUIVIEWPROPSW, LPOLEUIVIEWPROPSW; + +struct OLEUIVIEWPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA *lpOP; + int nScaleMin; + int nScaleMax; +} +alias OLEUIVIEWPROPSA* POLEUIVIEWPROPSA, LPOLEUIVIEWPROPSA; + +struct OLEUILINKPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW *lpOP; +} +alias OLEUILINKPROPSW* POLEUILINKPROPSW, LPOLEUILINKPROPSW; + +struct OLEUILINKPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA* lpOP; +} +alias OLEUILINKPROPSA* POLEUILINKPROPSA, LPOLEUILINKPROPSA; + +struct OLEUIOBJECTPROPSW { + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERW lpPS; + DWORD dwObject; + LPOLEUIOBJINFOW lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOW lpLinkInfo; + LPOLEUIGNRLPROPSW lpGP; + LPOLEUIVIEWPROPSW lpVP; + LPOLEUILINKPROPSW lpLP; +} +alias OLEUIOBJECTPROPSW* POLEUIOBJECTPROPSW, LPOLEUIOBJECTPROPSW; + +struct OLEUIOBJECTPROPSA { + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERA lpPS; + DWORD dwObject; + LPOLEUIOBJINFOA lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOA lpLinkInfo; + LPOLEUIGNRLPROPSA lpGP; + LPOLEUIVIEWPROPSA lpVP; + LPOLEUILINKPROPSA lpLP; +} +alias OLEUIOBJECTPROPSA* POLEUIOBJECTPROPSA, LPOLEUIOBJECTPROPSA; + +extern (Windows) { + BOOL OleUIAddVerbMenuW(LPOLEOBJECT, LPCWSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); + BOOL OleUIAddVerbMenuA(LPOLEOBJECT, LPCSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); + UINT OleUIBusyW(LPOLEUIBUSYW); + UINT OleUIBusyA(LPOLEUIBUSYA); + BOOL OleUICanConvertOrActivateAs(REFCLSID, BOOL, WORD); + UINT OleUIChangeIconW(LPOLEUICHANGEICONW); + UINT OleUIChangeIconA(LPOLEUICHANGEICONA); + UINT OleUIChangeSourceW(LPOLEUICHANGESOURCEW); + UINT OleUIChangeSourceA(LPOLEUICHANGESOURCEA); + UINT OleUIConvertW(LPOLEUICONVERTW); + UINT OleUIConvertA(LPOLEUICONVERTA); + UINT OleUIEditLinksW(LPOLEUIEDITLINKSW); + UINT OleUIEditLinksA(LPOLEUIEDITLINKSA); + UINT OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW); + UINT OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA); + UINT OleUIPasteSpecialW(LPOLEUIPASTESPECIALW); + UINT OleUIPasteSpecialA(LPOLEUIPASTESPECIALA); + BOOL OleUIUpdateLinksW(LPOLEUILINKCONTAINERW, HWND, LPWSTR, int); + BOOL OleUIUpdateLinksA(LPOLEUILINKCONTAINERA, HWND, LPSTR, int); +} + +extern (C) { + int OleUIPromptUserW(int, HWND, ...); + int OleUIPromptUserA(int, HWND, ...); +} + +version(Unicode) { + alias IDD_SERVERNOTREGW IDD_SERVERNOTREG; + alias IDD_LINKTYPECHANGEDW IDD_LINKTYPECHANGED; + alias OleUIUpdateLinksW OleUIUpdateLinks; + alias OleUIAddVerbMenuW OleUIAddVerbMenu; + alias OLEUIOBJECTPROPSW OLEUIOBJECTPROPS; + alias POLEUIOBJECTPROPSW POLEUIOBJECTPROPS; + alias LPOLEUIOBJECTPROPSW LPOLEUIOBJECTPROPS; + alias OleUIObjectPropertiesW OleUIObjectProperties; + alias OLEUIINSERTOBJECTW OLEUIINSERTOBJECT; + alias POLEUIINSERTOBJECTW POLEUIINSERTOBJECT; + alias LPOLEUIINSERTOBJECTW LPOLEUIINSERTOBJECT; + alias OleUIInsertObjectW OleUIInsertObject; + alias OleUIPromptUserW OleUIPromptUser; + alias OLEUIPASTEENTRYW OLEUIPASTEENTRY; + alias POLEUIPASTEENTRYW POLEUIPASTEENTRY; + alias LPOLEUIPASTEENTRYW LPOLEUIPASTEENTRY; + alias OLEUIPASTESPECIALW OLEUIPASTESPECIAL; + alias POLEUIPASTESPECIALW POLEUIPASTESPECIAL; + alias LPOLEUIPASTESPECIALW LPOLEUIPASTESPECIAL; + alias OleUIPasteSpecialW OleUIPasteSpecial; + alias IOleUILinkContainerW IOleUILinkContainer; + alias LPOLEUILINKCONTAINERW LPOLEUILINKCONTAINER; + alias OLEUIEDITLINKSW OLEUIEDITLINKS; + alias POLEUIEDITLINKSW POLEUIEDITLINKS; + alias LPOLEUIEDITLINKSW LPOLEUIEDITLINKS; + alias OleUIEditLinksW OleUIEditLinks; + alias OLEUICHANGEICONW OLEUICHANGEICON; + alias POLEUICHANGEICONW POLEUICHANGEICON; + alias LPOLEUICHANGEICONW LPOLEUICHANGEICON; + alias OleUIChangeIconW OleUIChangeIcon; + alias OLEUICONVERTW OLEUICONVERT; + alias POLEUICONVERTW POLEUICONVERT; + alias LPOLEUICONVERTW LPOLEUICONVERT; + alias OleUIConvertW OleUIConvert; + alias OLEUIBUSYW OLEUIBUSY; + alias POLEUIBUSYW POLEUIBUSY; + alias LPOLEUIBUSYW LPOLEUIBUSY; + alias OleUIBusyW OleUIBusy; + alias OLEUICHANGESOURCEW OLEUICHANGESOURCE; + alias POLEUICHANGESOURCEW POLEUICHANGESOURCE; + alias LPOLEUICHANGESOURCEW LPOLEUICHANGESOURCE; + alias OleUIChangeSourceW OleUIChangeSource; + alias IOleUIObjInfoW IOleUIObjInfo; + alias LPOLEUIOBJINFOW LPOLEUIOBJINFO; + alias IOleUILinkInfoW IOleUILinkInfo; + //alias IOleUILinkInfoWVtbl IOleUILinkInfoVtbl; + alias LPOLEUILINKINFOW LPOLEUILINKINFO; + alias OLEUIGNRLPROPSW OLEUIGNRLPROPS; + alias POLEUIGNRLPROPSW POLEUIGNRLPROPS; + alias LPOLEUIGNRLPROPSW LPOLEUIGNRLPROPS; + alias OLEUIVIEWPROPSW OLEUIVIEWPROPS; + alias POLEUIVIEWPROPSW POLEUIVIEWPROPS; + alias LPOLEUIVIEWPROPSW LPOLEUIVIEWPROPS; + alias OLEUILINKPROPSW OLEUILINKPROPS; + alias POLEUILINKPROPSW POLEUILINKPROPS; + alias LPOLEUILINKPROPSW LPOLEUILINKPROPS; +} else { + alias IDD_SERVERNOTREGA IDD_SERVERNOTREG; + alias IDD_LINKTYPECHANGEDA IDD_LINKTYPECHANGED; + alias OleUIUpdateLinksA OleUIUpdateLinks; + alias OleUIAddVerbMenuA OleUIAddVerbMenu; + alias OLEUIOBJECTPROPSA OLEUIOBJECTPROPS; + alias POLEUIOBJECTPROPSA POLEUIOBJECTPROPS; + alias LPOLEUIOBJECTPROPSA LPOLEUIOBJECTPROPS; + alias OleUIObjectPropertiesA OleUIObjectProperties; + alias OLEUIINSERTOBJECTA OLEUIINSERTOBJECT; + alias POLEUIINSERTOBJECTA POLEUIINSERTOBJECT; + alias LPOLEUIINSERTOBJECTA LPOLEUIINSERTOBJECT; + alias OleUIInsertObjectA OleUIInsertObject; + alias OleUIPromptUserA OleUIPromptUser; + alias OLEUIPASTEENTRYA OLEUIPASTEENTRY; + alias POLEUIPASTEENTRYA POLEUIPASTEENTRY; + alias LPOLEUIPASTEENTRYA LPOLEUIPASTEENTRY; + alias OLEUIPASTESPECIALA OLEUIPASTESPECIAL; + alias POLEUIPASTESPECIALA POLEUIPASTESPECIAL; + alias LPOLEUIPASTESPECIALA LPOLEUIPASTESPECIAL; + alias OleUIPasteSpecialA OleUIPasteSpecial; + alias IOleUILinkContainerA IOleUILinkContainer; + alias LPOLEUILINKCONTAINERA LPOLEUILINKCONTAINER; + alias OLEUIEDITLINKSA OLEUIEDITLINKS; + alias POLEUIEDITLINKSA POLEUIEDITLINKS; + alias LPOLEUIEDITLINKSA LPOLEUIEDITLINKS; + alias OleUIEditLinksA OleUIEditLinks; + alias OLEUICHANGEICONA OLEUICHANGEICON; + alias POLEUICHANGEICONA POLEUICHANGEICON; + alias LPOLEUICHANGEICONA LPOLEUICHANGEICON; + alias OleUIChangeIconA OleUIChangeIcon; + alias OLEUICONVERTA OLEUICONVERT; + alias POLEUICONVERTA POLEUICONVERT; + alias LPOLEUICONVERTA LPOLEUICONVERT; + alias OleUIConvertA OleUIConvert; + alias OLEUIBUSYA OLEUIBUSY; + alias POLEUIBUSYA POLEUIBUSY; + alias LPOLEUIBUSYA LPOLEUIBUSY; + alias OleUIBusyA OleUIBusy; + alias OLEUICHANGESOURCEA OLEUICHANGESOURCE; + alias POLEUICHANGESOURCEA POLEUICHANGESOURCE; + alias LPOLEUICHANGESOURCEA LPOLEUICHANGESOURCE; + alias OleUIChangeSourceA OleUIChangeSource; + alias IOleUIObjInfoA IOleUIObjInfo; + alias LPOLEUIOBJINFOA LPOLEUIOBJINFO; + alias IOleUILinkInfoA IOleUILinkInfo; + //alias IOleUILinkInfoAVtbl IOleUILinkInfoVtbl; + alias LPOLEUILINKINFOA LPOLEUILINKINFO; + alias OLEUIGNRLPROPSA OLEUIGNRLPROPS; + alias POLEUIGNRLPROPSA POLEUIGNRLPROPS; + alias LPOLEUIGNRLPROPSA LPOLEUIGNRLPROPS; + alias OLEUIVIEWPROPSA OLEUIVIEWPROPS; + alias POLEUIVIEWPROPSA POLEUIVIEWPROPS; + alias LPOLEUIVIEWPROPSA LPOLEUIVIEWPROPS; + alias OLEUILINKPROPSA OLEUILINKPROPS; + alias POLEUILINKPROPSA POLEUILINKPROPS; + alias LPOLEUILINKPROPSA LPOLEUILINKPROPS; +} diff --git a/src/core/sys/windows/oleidl.d b/src/core/sys/windows/oleidl.d new file mode 100644 index 0000000000..608966d3a4 --- /dev/null +++ b/src/core/sys/windows/oleidl.d @@ -0,0 +1,270 @@ +/***********************************************************************\ +* oleidl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.oleidl; + +// DAC: This is defined in ocidl !! +// what is it doing in here? +//alias IEnumOleUndoUnits LPENUMOLEUNDOUNITS; + +private import win32.basetyps, win32.objidl, win32.unknwn, win32.windef, + win32.winuser, win32.wtypes; +private import win32.objfwd; // for LPMONIKER +private import win32.wingdi; // for LPLOGPALETTE + +const MK_ALT = 32; + +enum BINDSPEED { + BINDSPEED_INDEFINITE = 1, + BINDSPEED_MODERATE, + BINDSPEED_IMMEDIATE +} + +enum OLEWHICHMK { + OLEWHICHMK_CONTAINER = 1, + OLEWHICHMK_OBJREL, + OLEWHICHMK_OBJFULL +} + +enum OLEGETMONIKER { + OLEGETMONIKER_ONLYIFTHERE = 1, + OLEGETMONIKER_FORCEASSIGN, + OLEGETMONIKER_UNASSIGN, + OLEGETMONIKER_TEMPFORUSER +} + +enum USERCLASSTYPE { + USERCLASSTYPE_FULL = 1, + USERCLASSTYPE_SHORT, + USERCLASSTYPE_APPNAME +} + +enum DROPEFFECT { + DROPEFFECT_NONE = 0, + DROPEFFECT_COPY = 1, + DROPEFFECT_MOVE = 2, + DROPEFFECT_LINK = 4, + DROPEFFECT_SCROLL = 0x80000000 +} + +struct OLEMENUGROUPWIDTHS { + LONG[6] width; +} +alias OLEMENUGROUPWIDTHS* LPOLEMENUGROUPWIDTHS; + +alias HGLOBAL HOLEMENU; + +enum OLECLOSE { + OLECLOSE_SAVEIFDIRTY, + OLECLOSE_NOSAVE, + OLECLOSE_PROMPTSAVE +} + +struct OLEVERB { + LONG lVerb; + LPWSTR lpszVerbName; + DWORD fuFlags; + DWORD grfAttribs; +} +alias OLEVERB* LPOLEVERB; + +alias RECT BORDERWIDTHS; +alias LPRECT LPBORDERWIDTHS; +alias LPCRECT LPCBORDERWIDTHS; + +struct OLEINPLACEFRAMEINFO { + UINT cb; + BOOL fMDIApp; + HWND hwndFrame; + HACCEL haccel; + UINT cAccelEntries; +} +alias OLEINPLACEFRAMEINFO* LPOLEINPLACEFRAMEINFO; + +interface IEnumOLEVERB : IUnknown +{ + HRESULT Next(ULONG,OLEVERB*,ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOLEVERB*); +} +//alias IEnumOLEVERB IEnumOleVerb; +alias IEnumOLEVERB LPENUMOLEVERB; + + +interface IParseDisplayName : IUnknown { + HRESULT ParseDisplayName(IBindCtx,LPOLESTR,ULONG*,IMoniker*); +} +alias IParseDisplayName LPPARSEDISPLAYNAME; + +interface IOleContainer : IParseDisplayName { + HRESULT EnumObjects(DWORD,IEnumUnknown*); + HRESULT LockContainer(BOOL); +} +alias IOleContainer LPOLECONTAINER; + +interface IOleItemContainer : IOleContainer { + HRESULT GetObject(LPOLESTR,DWORD,IBindCtx,REFIID,void**); + HRESULT GetObjectStorage(LPOLESTR,IBindCtx,REFIID,void**); + HRESULT IsRunning(LPOLESTR); +} + + +interface IOleClientSite : IUnknown { + HRESULT SaveObject(); + HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); + HRESULT GetContainer(LPOLECONTAINER*); + HRESULT ShowObject(); + HRESULT OnShowWindow(BOOL); + HRESULT RequestNewObjectLayout(); +} +alias IOleClientSite LPOLECLIENTSITE; + +interface IOleObject : IUnknown { + HRESULT SetClientSite(LPOLECLIENTSITE); + HRESULT GetClientSite(LPOLECLIENTSITE*); + HRESULT SetHostNames(LPCOLESTR,LPCOLESTR); + HRESULT Close(DWORD); + HRESULT SetMoniker(DWORD,LPMONIKER); + HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); + HRESULT InitFromData(LPDATAOBJECT,BOOL,DWORD); + HRESULT GetClipboardData(DWORD,LPDATAOBJECT*); + HRESULT DoVerb(LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT); + HRESULT EnumVerbs(LPENUMOLEVERB*); + HRESULT Update(); + HRESULT IsUpToDate(); + HRESULT GetUserClassID(LPCLSID); + HRESULT GetUserType(DWORD,LPOLESTR*); + HRESULT SetExtent(DWORD,SIZEL*); + HRESULT GetExtent(DWORD,SIZEL*); + HRESULT Advise(LPADVISESINK,PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(LPENUMSTATDATA*); + HRESULT GetMiscStatus(DWORD,PDWORD); + HRESULT SetColorScheme(LPLOGPALETTE); +} +alias IOleObject LPOLEOBJECT; + +interface IOleWindow : IUnknown { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); +} +alias IOleWindow LPOLEWINDOW; + +interface IOleInPlaceUIWindow : IOleWindow { + HRESULT GetBorder(LPRECT); + HRESULT RequestBorderSpace(LPCBORDERWIDTHS); + HRESULT SetBorderSpace(LPCBORDERWIDTHS); + HRESULT SetActiveObject(LPOLEINPLACEACTIVEOBJECT,LPCOLESTR); +} +alias IOleInPlaceUIWindow LPOLEINPLACEUIWINDOW; + +interface IOleInPlaceObject : IOleWindow { + HRESULT InPlaceDeactivate(); + HRESULT UIDeactivate(); + HRESULT SetObjectRects(LPCRECT,LPCRECT); + HRESULT ReactivateAndUndo(); +} + + +interface IOleInPlaceActiveObject : IOleWindow { + HRESULT TranslateAccelerator(LPMSG); + HRESULT OnFrameWindowActivate(BOOL); + HRESULT OnDocWindowActivate(BOOL); + HRESULT ResizeBorder(LPCRECT,LPOLEINPLACEUIWINDOW,BOOL); + HRESULT EnableModeless(BOOL); +} +alias IOleInPlaceActiveObject LPOLEINPLACEACTIVEOBJECT; + +interface IOleInPlaceFrame : IOleInPlaceUIWindow { + HRESULT InsertMenus(HMENU,LPOLEMENUGROUPWIDTHS); + HRESULT SetMenu(HMENU,HOLEMENU,HWND); + HRESULT RemoveMenus(HMENU); + HRESULT SetStatusText(LPCOLESTR); + HRESULT EnableModeless(BOOL); + HRESULT TranslateAccelerator(LPMSG,WORD); +} +alias IOleInPlaceFrame LPOLEINPLACEFRAME; + +interface IOleInPlaceSite : IOleWindow { + HRESULT CanInPlaceActivate(); + HRESULT OnInPlaceActivate(); + HRESULT OnUIActivate(); + HRESULT GetWindowContext(IOleInPlaceFrame,IOleInPlaceUIWindow,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO); + HRESULT Scroll(SIZE); + HRESULT OnUIDeactivate(BOOL); + HRESULT OnInPlaceDeactivate(); + HRESULT DiscardUndoState(); + HRESULT DeactivateAndUndo(); + HRESULT OnPosRectChange(LPCRECT); +} + +interface IOleAdviseHolder : IUnknown { + HRESULT Advise(LPADVISESINK,PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(LPENUMSTATDATA*); + HRESULT SendOnRename(LPMONIKER); + HRESULT SendOnSave(); + HRESULT SendOnClose(); +} +alias IOleAdviseHolder LPOLEADVISEHOLDER; + +interface IDropSource : IUnknown { + HRESULT QueryContinueDrag(BOOL,DWORD); + HRESULT GiveFeedback(DWORD); +} +alias IDropSource LPDROPSOURCE; + +interface IDropTarget : IUnknown { + HRESULT DragEnter(LPDATAOBJECT,DWORD,POINTL,PDWORD); + HRESULT DragOver(DWORD,POINTL,PDWORD); + HRESULT DragLeave(); + HRESULT Drop(LPDATAOBJECT,DWORD,POINTL,PDWORD); +} +alias IDropTarget LPDROPTARGET; + +extern (Windows) { + alias BOOL function(DWORD) __IView_pfncont; +} + +interface IViewObject : IUnknown { + HRESULT Draw(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD); + HRESULT GetColorSet(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*); + HRESULT Freeze(DWORD,LONG,PVOID,PDWORD); + HRESULT Unfreeze(DWORD); + HRESULT SetAdvise(DWORD,DWORD,IAdviseSink); + HRESULT GetAdvise(PDWORD,PDWORD,IAdviseSink*); +} +alias IViewObject LPVIEWOBJECT; + +interface IViewObject2 : IViewObject { + HRESULT GetExtent(DWORD,LONG,DVTARGETDEVICE*,LPSIZEL); +} +alias IViewObject2 LPVIEWOBJECT2; + +interface IOleCache : IUnknown { + HRESULT Cache(FORMATETC*,DWORD,DWORD*); + HRESULT Uncache(DWORD); + HRESULT EnumCache(IEnumSTATDATA*); + HRESULT InitCache(LPDATAOBJECT); + HRESULT SetData(FORMATETC*,STGMEDIUM*,BOOL); +} +alias IOleCache LPOLECACHE; + +interface IOleCache2 : IOleCache { + HRESULT UpdateCache(LPDATAOBJECT,DWORD,LPVOID); + HRESULT DiscardCache(DWORD); +} +alias IOleCache2 LPOLECACHE2; + +interface IOleCacheControl : IUnknown { + HRESULT OnRun(LPDATAOBJECT); + HRESULT OnStop(); +} +alias IOleCacheControl LPOLECACHECONTROL; diff --git a/src/core/sys/windows/pbt.d b/src/core/sys/windows/pbt.d new file mode 100644 index 0000000000..1668d08c5e --- /dev/null +++ b/src/core/sys/windows/pbt.d @@ -0,0 +1,30 @@ +/***********************************************************************\ +* pbt.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.pbt; + +private import win32.windef; + +enum : WPARAM { + PBT_APMQUERYSUSPEND, + PBT_APMQUERYSTANDBY, + PBT_APMQUERYSUSPENDFAILED, + PBT_APMQUERYSTANDBYFAILED, + PBT_APMSUSPEND, + PBT_APMSTANDBY, + PBT_APMRESUMECRITICAL, + PBT_APMRESUMESUSPEND, + PBT_APMRESUMESTANDBY, + PBT_APMBATTERYLOW, + PBT_APMPOWERSTATUSCHANGE, + PBT_APMOEMEVENT // = 11 +} + +const LPARAM PBTF_APMRESUMEFROMFAILURE = 1; diff --git a/src/core/sys/windows/powrprof.d b/src/core/sys/windows/powrprof.d new file mode 100644 index 0000000000..164bf932c2 --- /dev/null +++ b/src/core/sys/windows/powrprof.d @@ -0,0 +1,140 @@ +/***********************************************************************\ +* powrprof.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.powrprof; +pragma(lib, "powrprof"); + +private import win32.windef; +private import win32.ntdef; + +// FIXME: look up Windows version support + +const ULONG + EnableSysTrayBatteryMeter = 1, + EnableMultiBatteryDisplay = 2, + EnablePasswordLogon = 4, + EnableWakeOnRing = 8, + EnableVideoDimDisplay = 16; + +const UINT NEWSCHEME = -1; + +struct GLOBAL_MACHINE_POWER_POLICY { + ULONG Revision; + SYSTEM_POWER_STATE LidOpenWakeAc; + SYSTEM_POWER_STATE LidOpenWakeDc; + ULONG BroadcastCapacityResolution; +} +alias GLOBAL_MACHINE_POWER_POLICY* PGLOBAL_MACHINE_POWER_POLICY; + +struct GLOBAL_USER_POWER_POLICY { + ULONG Revision; + POWER_ACTION_POLICY PowerButtonAc; + POWER_ACTION_POLICY PowerButtonDc; + POWER_ACTION_POLICY SleepButtonAc; + POWER_ACTION_POLICY SleepButtonDc; + POWER_ACTION_POLICY LidCloseAc; + POWER_ACTION_POLICY LidCloseDc; + SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; + ULONG GlobalFlags; +} +alias GLOBAL_USER_POWER_POLICY* PGLOBAL_USER_POWER_POLICY; + +struct GLOBAL_POWER_POLICY { + GLOBAL_USER_POWER_POLICY user; + GLOBAL_MACHINE_POWER_POLICY mach; +} +alias GLOBAL_POWER_POLICY* PGLOBAL_POWER_POLICY; + +struct MACHINE_POWER_POLICY { + ULONG Revision; + SYSTEM_POWER_STATE MinSleepAc; + SYSTEM_POWER_STATE MinSleepDc; + SYSTEM_POWER_STATE ReducedLatencySleepAc; + SYSTEM_POWER_STATE ReducedLatencySleepDc; + ULONG DozeTimeoutAc; + ULONG DozeTimeoutDc; + ULONG DozeS4TimeoutAc; + ULONG DozeS4TimeoutDc; + UCHAR MinThrottleAc; + UCHAR MinThrottleDc; + UCHAR[2] pad1; + POWER_ACTION_POLICY OverThrottledAc; + POWER_ACTION_POLICY OverThrottledDc; +} +alias MACHINE_POWER_POLICY* PMACHINE_POWER_POLICY; + +struct MACHINE_PROCESSOR_POWER_POLICY { + ULONG Revision; + PROCESSOR_POWER_POLICY ProcessorPolicyAc; + PROCESSOR_POWER_POLICY ProcessorPolicyDc; +} +alias MACHINE_PROCESSOR_POWER_POLICY* PMACHINE_PROCESSOR_POWER_POLICY; + +struct USER_POWER_POLICY { + ULONG Revision; + POWER_ACTION_POLICY IdleAc; + POWER_ACTION_POLICY IdleDc; + ULONG IdleTimeoutAc; + ULONG IdleTimeoutDc; + UCHAR IdleSensitivityAc; + UCHAR IdleSensitivityDc; + UCHAR ThrottlePolicyAc; + UCHAR ThrottlePolicyDc; + SYSTEM_POWER_STATE MaxSleepAc; + SYSTEM_POWER_STATE MaxSleepDc; + ULONG[2] Reserved; + ULONG VideoTimeoutAc; + ULONG VideoTimeoutDc; + ULONG SpindownTimeoutAc; + ULONG SpindownTimeoutDc; + BOOLEAN OptimizeForPowerAc; + BOOLEAN OptimizeForPowerDc; + UCHAR FanThrottleToleranceAc; + UCHAR FanThrottleToleranceDc; + UCHAR ForcedThrottleAc; + UCHAR ForcedThrottleDc; +} +alias USER_POWER_POLICY* PUSER_POWER_POLICY; + +struct POWER_POLICY { + USER_POWER_POLICY user; + MACHINE_POWER_POLICY mach; +} +alias POWER_POLICY* PPOWER_POLICY; + +extern (Windows) { + alias BOOLEAN function(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, + LPARAM) PWRSCHEMESENUMPROC; + alias BOOLEAN function(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN) + PFNNTINITIATEPWRACTION; + + NTSTATUS CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, + PVOID, ULONG); + BOOLEAN CanUserWritePwrScheme(); + BOOLEAN DeletePwrScheme(UINT); + BOOLEAN EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM); + BOOLEAN GetActivePwrScheme(PUINT); + BOOLEAN GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES); + BOOLEAN GetPwrDiskSpindownRange(PUINT, PUINT); + BOOLEAN IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY); + BOOLEAN IsPwrHibernateAllowed(); + BOOLEAN IsPwrShutdownAllowed(); + BOOLEAN IsPwrSuspendAllowed(); + BOOLEAN ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY); + BOOLEAN ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); + BOOLEAN ReadPwrScheme(UINT, PPOWER_POLICY); + BOOLEAN SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN); + BOOLEAN WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY); + BOOLEAN WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); + BOOLEAN ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY); +} diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d new file mode 100644 index 0000000000..bd5ee1a91f --- /dev/null +++ b/src/core/sys/windows/prsht.d @@ -0,0 +1,442 @@ +/***********************************************************************\ +* prsht.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Vladimir Vlasov * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.prsht; +pragma(lib, "comctl32"); + +private import win32.w32api, win32.windef, win32.winuser; + +const MAXPROPPAGES = 100; + +enum { + PSP_DEFAULT = 0x00000000, + PSP_DLGINDIRECT = 0x00000001, + PSP_USEHICON = 0x00000002, + PSP_USEICONID = 0x00000004, + PSP_USETITLE = 0x00000008, + PSP_RTLREADING = 0x00000010, + PSP_HASHELP = 0x00000020, + PSP_USEREFPARENT = 0x00000040, + PSP_USECALLBACK = 0x00000080, + PSP_PREMATURE = 0x00000400 +} + +static if (_WIN32_IE >= 0x400) { + enum { + PSP_HIDEHEADER = 0x00000800, + PSP_USEHEADERTITLE = 0x00001000, + PSP_USEHEADERSUBTITLE = 0x00002000 + } +} + +enum { + PSPCB_RELEASE = 1, + PSPCB_CREATE +} + +enum { + PSH_DEFAULT = 0x00000000, + PSH_PROPTITLE = 0x00000001, + PSH_USEHICON = 0x00000002, + PSH_USEICONID = 0x00000004, + PSH_PROPSHEETPAGE = 0x00000008, + PSH_WIZARDHASFINISH = 0x00000010, + PSH_WIZARD = 0x00000020, + PSH_USEPSTARTPAGE = 0x00000040, + PSH_NOAPPLYNOW = 0x00000080, + PSH_USECALLBACK = 0x00000100, + PSH_HASHELP = 0x00000200, + PSH_MODELESS = 0x00000400, + PSH_RTLREADING = 0x00000800, + PSH_WIZARDCONTEXTHELP = 0x00001000 +} + +static if (_WIN32_IE >= 0x400) { + enum { + PSH_WATERMARK = 0x00008000, + PSH_USEHBMWATERMARK = 0x00010000, + PSH_USEHPLWATERMARK = 0x00020000, + PSH_STRETCHWATERMARK = 0x00040000, + PSH_HEADER = 0x00080000, + PSH_USEHBMHEADER = 0x00100000, + PSH_USEPAGELANG = 0x00200000 + } + static if (_WIN32_IE < 0x0500) { + enum { + PSH_WIZARD97 = 0x00002000 + } + } else { + enum { + PSH_WIZARD97 = 0x01000000 + } + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + PSH_WIZARD_LITE = 0x00400000, + PSH_NOCONTEXTHELP = 0x02000000 + } +} + +enum { + PSCB_INITIALIZED = 1, + PSCB_PRECREATE +} + +enum { + PSN_FIRST = (-200), + PSN_LAST = (-299), + PSN_SETACTIVE = (-200), + PSN_KILLACTIVE = (-201), + PSN_APPLY = (-202), + PSN_RESET = (-203), + PSN_HELP = (-205), + PSN_WIZBACK = (-206), + PSN_WIZNEXT = (-207), + PSN_WIZFINISH = (-208), + PSN_QUERYCANCEL = (-209) +} +static if (_WIN32_IE >= 0x400) { + enum { + PSN_GETOBJECT = (-210) + } +} +static if (_WIN32_IE >= 0x500) { + enum { + PSN_TRANSLATEACCELERATOR = (-212), + PSN_QUERYINITIALFOCUS = (-213) + } +} + +enum { + PSNRET_NOERROR, + PSNRET_INVALID, + PSNRET_INVALID_NOCHANGEPAGE, + PSNRET_MESSAGEHANDLED +} + +enum { + ID_PSRESTARTWINDOWS = 0x2, + ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 +} + +enum { + WIZ_CXDLG = 276, + WIZ_CYDLG = 140, + WIZ_CXBMP = 80, + WIZ_BODYX = 92, + WIZ_BODYCX = 184 +} + +enum { + PROP_SM_CXDLG = 212, + PROP_SM_CYDLG = 188, + PROP_MED_CXDLG = 227, + PROP_MED_CYDLG = 215, + PROP_LG_CXDLG = 252, + PROP_LG_CYDLG = 218 +} + +enum { + PSBTN_BACK, + PSBTN_NEXT, + PSBTN_FINISH, + PSBTN_OK, + PSBTN_APPLYNOW, + PSBTN_CANCEL, + PSBTN_HELP, + PSBTN_MAX = 6 +} + +enum { + PSWIZB_BACK = 1, + PSWIZB_NEXT = 2, + PSWIZB_FINISH = 4, + PSWIZB_DISABLEDFINISH = 8 +} + +enum { + PSM_SETCURSEL = WM_USER + 101, + PSM_REMOVEPAGE, + PSM_ADDPAGE, + PSM_CHANGED, + PSM_RESTARTWINDOWS, + PSM_REBOOTSYSTEM, + PSM_CANCELTOCLOSE, + PSM_QUERYSIBLINGS, + PSM_UNCHANGED, + PSM_APPLY, + PSM_SETTITLEA, + PSM_SETWIZBUTTONS, + PSM_PRESSBUTTON, + PSM_SETCURSELID, + PSM_SETFINISHTEXTA, + PSM_GETTABCONTROL, + PSM_ISDIALOGMESSAGE, + PSM_GETCURRENTPAGEHWND, + PSM_INSERTPAGE, + PSM_SETTITLEW, + PSM_SETFINISHTEXTW // = WM_USER + 121, +} + +alias UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA; +alias UINT function(HWND, UINT, LPPROPSHEETPAGEW) LPFNPSPCALLBACKW; +alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; + +align(4): + +struct PROPSHEETPAGEA { + DWORD dwSize = PROPSHEETPAGEA.sizeof; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCSTR pszTemplate; + LPCDLGTEMPLATE pResource; + } + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKA pfnCallback; + UINT* pcRefParent; + static if (_WIN32_IE >= 0x400) { + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; + } +} +alias PROPSHEETPAGEA* LPPROPSHEETPAGEA; +alias const(PROPSHEETPAGEA)* LPCPROPSHEETPAGEA; + +struct PROPSHEETPAGEW { + DWORD dwSize = PROPSHEETPAGEW.sizeof; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCWSTR pszTemplate; + LPCDLGTEMPLATE pResource; + } + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKW pfnCallback; + UINT* pcRefParent; + static if (_WIN32_IE >= 0x400) { + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; + } +} +alias PROPSHEETPAGEW* LPPROPSHEETPAGEW; +alias const(PROPSHEETPAGEW)* LPCPROPSHEETPAGEW; + +mixin DECLARE_HANDLE!("HPROPSHEETPAGE"); + +struct PROPSHEETHEADERA { + DWORD dwSize = PROPSHEETHEADERA.sizeof; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszCaption; + UINT nPages; + union { + UINT nStartPage; + LPCSTR pStartPage; + } + union { + LPCPROPSHEETPAGEA ppsp; + HPROPSHEETPAGE* phpage; + } + PFNPROPSHEETCALLBACK pfnCallback; + static if (_WIN32_IE >= 0x400) { + union { + HBITMAP hbmWatermark; + LPCSTR pszbmWatermark; + } + HPALETTE hplWatermark; + union { + HBITMAP hbmHeader; + LPCSTR pszbmHeader; + } + } +} +alias PROPSHEETHEADERA* LPPROPSHEETHEADERA; +alias const(PROPSHEETHEADERA)* LPCPROPSHEETHEADERA; + +struct PROPSHEETHEADERW { + DWORD dwSize = PROPSHEETHEADERW.sizeof; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszCaption; + UINT nPages; + union { + UINT nStartPage; + LPCWSTR pStartPage; + } + union { + LPCPROPSHEETPAGEW ppsp; + HPROPSHEETPAGE* phpage; + } + PFNPROPSHEETCALLBACK pfnCallback; + static if (_WIN32_IE >= 0x400) { + union { + HBITMAP hbmWatermark; + LPCWSTR pszbmWatermark; + } + HPALETTE hplWatermark; + union { + HBITMAP hbmHeader; + LPCWSTR pszbmHeader; + } + } +} +alias PROPSHEETHEADERW* LPPROPSHEETHEADERW; +alias const(PROPSHEETHEADERW)* LPCPROPSHEETHEADERW; + +alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE; +alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) + LPFNADDPROPSHEETPAGES; + +struct PSHNOTIFY { + NMHDR hdr; + LPARAM lParam; +} +alias PSHNOTIFY* LPPSHNOTIFY; + +extern (Windows) { + HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA); + HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW); + BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); + int PropertySheetA(LPCPROPSHEETHEADERA); + int PropertySheetW(LPCPROPSHEETHEADERW); +} + +version (Unicode) { + alias LPFNPSPCALLBACKW LPFNPSPCALLBACK; + alias PROPSHEETPAGEW PROPSHEETPAGE; + alias LPPROPSHEETPAGEW LPPROPSHEETPAGE; + alias LPCPROPSHEETPAGEW LPCPROPSHEETPAGE; + alias PROPSHEETHEADERW PROPSHEETHEADER; + alias LPPROPSHEETHEADERW LPPROPSHEETHEADER; + alias LPCPROPSHEETHEADERW LPCPROPSHEETHEADER; + alias PSM_SETTITLEW PSM_SETTITLE; + alias PSM_SETFINISHTEXTW PSM_SETFINISHTEXT; + alias CreatePropertySheetPageW CreatePropertySheetPage; + alias PropertySheetW PropertySheet; +} else { + alias LPFNPSPCALLBACKA LPFNPSPCALLBACK; + alias PROPSHEETPAGEA PROPSHEETPAGE; + alias LPPROPSHEETPAGEA LPPROPSHEETPAGE; + alias LPCPROPSHEETPAGEA LPCPROPSHEETPAGE; + alias PROPSHEETHEADERA PROPSHEETHEADER; + alias LPPROPSHEETHEADERA LPPROPSHEETHEADER; + alias LPCPROPSHEETHEADERA LPCPROPSHEETHEADER; + alias PSM_SETTITLEA PSM_SETTITLE; + alias PSM_SETFINISHTEXTA PSM_SETFINISHTEXT; + alias CreatePropertySheetPageA CreatePropertySheetPage; + alias PropertySheetA PropertySheet; +} + +BOOL PropSheet_SetCurSel(HWND hPropSheetDlg, HPROPSHEETPAGE hpage, + HPROPSHEETPAGE index) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSEL, + cast(WPARAM) index, cast(LPARAM) hpage); +} + +VOID PropSheet_RemovePage(HWND hPropSheetDlg, int index, HPROPSHEETPAGE hpage) { + SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, index, cast(LPARAM) hpage); +} + +BOOL PropSheet_AddPage(HWND hPropSheetDlg, HPROPSHEETPAGE hpage) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_ADDPAGE, + 0, cast(LPARAM) hpage); +} + +VOID PropSheet_Changed(HWND hPropSheetDlg, HWND hwndPage) { + SendMessage(hPropSheetDlg, PSM_CHANGED, cast(WPARAM) hwndPage, 0); +} + +VOID PropSheet_RestartWindows(HWND hPropSheetDlg) { + SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0); +} + +VOID PropSheet_RebootSystem(HWND hPropSheetDlg) { + SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0); +} + +VOID PropSheet_CancelToClose(HWND hPropSheetDlg) { + SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0); +} + +int PropSheet_QuerySiblings(HWND hPropSheetDlg, WPARAM param1, LPARAM param2) { + return cast(int) SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, param1, param2); +} + +VOID PropSheet_UnChanged(HWND hPropSheetDlg, HWND hwndPage) { + SendMessage(hPropSheetDlg, PSM_UNCHANGED, cast(WPARAM) hwndPage, 0); +} + +BOOL PropSheet_Apply(HWND hPropSheetDlg) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0); +} + +VOID PropSheet_SetTitle(HWND hPropSheetDlg, DWORD wStyle, LPTSTR lpszText) { + SendMessage(hPropSheetDlg, PSM_SETTITLE, wStyle, cast(LPARAM) lpszText); +} + +VOID PropSheet_SetWizButtons(HWND hPropSheetDlg, DWORD dwFlags) { + PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, cast(LPARAM) dwFlags); +} + +BOOL PropSheet_PressButton(HWND hPropSheetDlg, int iButton) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, iButton, 0); +} + +BOOL PropSheet_SetCurSelByID(HWND hPropSheetDlg, int id) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, id); +} + +VOID PropSheet_SetFinishText(HWND hPropSheetDlg, LPTSTR lpszText) { + SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast(LPARAM) lpszText); +} + +HWND PropSheet_GetTabControl(HWND hPropSheetDlg) { + return cast(HWND) SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0); +} + +BOOL PropSheet_IsDialogMessage(HWND hDlg, LPMSG pMsg) { + return cast(BOOL) SendMessage(hDlg, PSM_ISDIALOGMESSAGE, + 0, cast(LPARAM) pMsg); +} + +HWND PropSheet_GetCurrentPageHwnd(HWND hDlg) { + return cast(HWND) SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0); +} + +BOOL PropSheet_InsertPage(HWND hPropSheetDlg, WPARAM wInsertAfter, + HPROPSHEETPAGE hpage) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_INSERTPAGE, + wInsertAfter, cast(LPARAM) hpage); +} diff --git a/src/core/sys/windows/psapi.d b/src/core/sys/windows/psapi.d new file mode 100644 index 0000000000..d4feccd7f7 --- /dev/null +++ b/src/core/sys/windows/psapi.d @@ -0,0 +1,158 @@ +/***********************************************************************\ +* psapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +/* Comment from MinGW + * Process status API (PSAPI) + * http://windowssdk.msdn.microsoft.com/library/ms684884.aspx + */ + +module win32.psapi; + +private import win32.w32api; +private import win32.winbase; +private import win32.windef; + +struct MODULEINFO { + LPVOID lpBaseOfDll; + DWORD SizeOfImage; + LPVOID EntryPoint; +} +alias MODULEINFO* LPMODULEINFO; + +struct PSAPI_WS_WATCH_INFORMATION { + LPVOID FaultingPc; + LPVOID FaultingVa; +} +alias PSAPI_WS_WATCH_INFORMATION* PPSAPI_WS_WATCH_INFORMATION; + +struct PSAPI_WS_WATCH_INFORMATION_EX { + PSAPI_WS_WATCH_INFORMATION BasicInfo; + ULONG_PTR FaultingThreadId; + ULONG_PTR Flags; +} +alias PSAPI_WS_WATCH_INFORMATION_EX* PPSAPI_WS_WATCH_INFORMATION_EX; + +struct PROCESS_MEMORY_COUNTERS { + DWORD cb; + DWORD PageFaultCount; + DWORD PeakWorkingSetSize; + DWORD WorkingSetSize; + DWORD QuotaPeakPagedPoolUsage; + DWORD QuotaPagedPoolUsage; + DWORD QuotaPeakNonPagedPoolUsage; + DWORD QuotaNonPagedPoolUsage; + DWORD PagefileUsage; + DWORD PeakPagefileUsage; +} +alias PROCESS_MEMORY_COUNTERS* PPROCESS_MEMORY_COUNTERS; + +struct PERFORMANCE_INFORMATION { + DWORD cb; + SIZE_T CommitTotal; + SIZE_T CommitLimit; + SIZE_T CommitPeak; + SIZE_T PhysicalTotal; + SIZE_T PhysicalAvailable; + SIZE_T SystemCache; + SIZE_T KernelTotal; + SIZE_T KernelPaged; + SIZE_T KernelNonpaged; + SIZE_T PageSize; + DWORD HandleCount; + DWORD ProcessCount; + DWORD ThreadCount; +} +alias PERFORMANCE_INFORMATION* PPERFORMANCE_INFORMATION; + +struct ENUM_PAGE_FILE_INFORMATION { + DWORD cb; + DWORD Reserved; + SIZE_T TotalSize; + SIZE_T TotalInUse; + SIZE_T PeakUsage; +} +alias ENUM_PAGE_FILE_INFORMATION* PENUM_PAGE_FILE_INFORMATION; + +/* application-defined callback function used with the EnumPageFiles() + * http://windowssdk.msdn.microsoft.com/library/ms682627.aspx */ +version (Unicode) { + alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR) + PENUM_PAGE_FILE_CALLBACK; +} else { + alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR) + PENUM_PAGE_FILE_CALLBACK; +} + +// Grouped by application, not in alphabetical order. +extern (Windows) { + /* Process Information + * http://windowssdk.msdn.microsoft.com/library/ms684870.aspx */ + BOOL EnumProcesses(DWORD*, DWORD, DWORD*); /* NT/2000/XP/Server2003/Vista/Longhorn */ + DWORD GetProcessImageFileNameA(HANDLE, LPSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ + DWORD GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ + + /* Module Information + * http://windowssdk.msdn.microsoft.com/library/ms684232.aspx */ + BOOL EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD); + BOOL EnumProcessModulesEx(HANDLE, HMODULE*, DWORD, LPDWORD, DWORD); /* Vista/Longhorn */ + DWORD GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD); + DWORD GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD); + DWORD GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD); + DWORD GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD); + BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD); + + /* Device Driver Information + * http://windowssdk.msdn.microsoft.com/library/ms682578.aspx */ + BOOL EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD); + DWORD GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD); + DWORD GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD); + DWORD GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD); + DWORD GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD); + + /* Process Memory Usage Information + * http://windowssdk.msdn.microsoft.com/library/ms684879.aspx */ + BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD); + + /* Working Set Information + * http://windowssdk.msdn.microsoft.com/library/ms687398.aspx */ + BOOL EmptyWorkingSet(HANDLE); + BOOL GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD); + BOOL GetWsChangesEx(HANDLE, PPSAPI_WS_WATCH_INFORMATION_EX, DWORD); /* Vista/Longhorn */ + BOOL InitializeProcessForWsWatch(HANDLE); + BOOL QueryWorkingSet(HANDLE, PVOID, DWORD); + BOOL QueryWorkingSetEx(HANDLE, PVOID, DWORD); + + /* Memory-Mapped File Information + * http://windowssdk.msdn.microsoft.com/library/ms684212.aspx */ + DWORD GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD); + DWORD GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD); + + /* Resources Information */ + BOOL GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD); /* XP/Server2003/Vista/Longhorn */ + BOOL EnumPageFilesW(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ + BOOL EnumPageFilesA(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ +} + +version (Unicode) { + alias GetModuleBaseNameW GetModuleBaseName; + alias GetModuleFileNameExW GetModuleFileNameEx; + alias GetMappedFileNameW GetMappedFileName; + alias GetDeviceDriverBaseNameW GetDeviceDriverBaseName; + alias GetDeviceDriverFileNameW GetDeviceDriverFileName; + alias EnumPageFilesW EnumPageFiles; + alias GetProcessImageFileNameW GetProcessImageFileName; +} else { + alias GetModuleBaseNameA GetModuleBaseName; + alias GetModuleFileNameExA GetModuleFileNameEx; + alias GetMappedFileNameA GetMappedFileName; + alias GetDeviceDriverBaseNameA GetDeviceDriverBaseName; + alias GetDeviceDriverFileNameA GetDeviceDriverFileName; + alias EnumPageFilesA EnumPageFiles; + alias GetProcessImageFileNameA GetProcessImageFileName; +} diff --git a/src/core/sys/windows/rapi.d b/src/core/sys/windows/rapi.d new file mode 100644 index 0000000000..3b790c3119 --- /dev/null +++ b/src/core/sys/windows/rapi.d @@ -0,0 +1,54 @@ +/***********************************************************************\ +* rapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rapi; + +/* Comment from MinGW + NOTE: This strictly does not belong in the Win32 API since it's + really part of Platform SDK. + */ + +private import win32.winbase, win32.windef; + +extern (Windows): + +enum RAPISTREAMFLAG +{ + STREAM_TIMEOUT_READ +} + +interface IRAPIStream +{ + HRESULT SetRapiStat(RAPISTREAMFLAG, DWORD); + HRESULT GetRapiStat(RAPISTREAMFLAG, DWORD*); +} + +alias HRESULT function(DWORD, BYTE, DWORD, BYTE, IRAPIStream) RAPIEXT; + +struct RAPIINIT +{ + DWORD cbSize = this.sizeof; + HANDLE heRapiInit; + HRESULT hrRapiInit; +} + +HRESULT CeRapiInit(); +HRESULT CeRapiInitEx(RAPIINIT*); +BOOL CeCreateProcess(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES, + LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPWSTR, LPSTARTUPINFO, + LPPROCESS_INFORMATION); +HRESULT CeRapiUninit(); +BOOL CeWriteFile(HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED); +HANDLE CeCreateFile(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, + DWORD, HANDLE); +BOOL CeCreateDirectory(LPCWSTR, LPSECURITY_ATTRIBUTES); +DWORD CeGetLastError(); +BOOL CeGetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); +BOOL CeCloseHandle(HANDLE); diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d new file mode 100644 index 0000000000..883e5be9f5 --- /dev/null +++ b/src/core/sys/windows/ras.d @@ -0,0 +1,1025 @@ +/***********************************************************************\ +* ras.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ras; +pragma(lib, "rasapi32"); + +private import win32.basetyps, win32.lmcons, win32.w32api, win32.windef; + +align(4): + +const RAS_MaxDeviceType = 16; +const RAS_MaxPhoneNumber = 128; +const RAS_MaxIpAddress = 15; +const RAS_MaxIpxAddress = 21; +const RAS_MaxEntryName = 256; +const RAS_MaxDeviceName = 128; +const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber; +const RAS_MaxAreaCode = 10; +const RAS_MaxPadType = 32; +const RAS_MaxX25Address = 200; +const RAS_MaxFacilities = 200; +const RAS_MaxUserData = 200; +const RAS_MaxReplyMessage = 1024; + +const RDEOPT_UsePrefixSuffix = 0x00000001; +const RDEOPT_PausedStates = 0x00000002; +const RDEOPT_IgnoreModemSpeaker = 0x00000004; +const RDEOPT_SetModemSpeaker = 0x00000008; +const RDEOPT_IgnoreSoftwareCompression = 0x00000010; +const RDEOPT_SetSoftwareCompression = 0x00000020; +const RDEOPT_DisableConnectedUI = 0x00000040; +const RDEOPT_DisableReconnectUI = 0x00000080; +const RDEOPT_DisableReconnect = 0x00000100; +const RDEOPT_NoUser = 0x00000200; +const RDEOPT_PauseOnScript = 0x00000400; +const RDEOPT_Router = 0x00000800; + +const REN_User = 0x00000000; +const REN_AllUsers = 0x00000001; +const VS_Default = 0; +const VS_PptpOnly = 1; +const VS_PptpFirst = 2; +const VS_L2tpOnly = 3; +const VS_L2tpFirst = 4; + +const RASDIALEVENT = "RasDialEvent"; +const WM_RASDIALEVENT = 0xCCCD; + +const RASEO_UseCountryAndAreaCodes = 0x00000001; +const RASEO_SpecificIpAddr = 0x00000002; +const RASEO_SpecificNameServers = 0x00000004; +const RASEO_IpHeaderCompression = 0x00000008; +const RASEO_RemoteDefaultGateway = 0x00000010; +const RASEO_DisableLcpExtensions = 0x00000020; +const RASEO_TerminalBeforeDial = 0x00000040; +const RASEO_TerminalAfterDial = 0x00000080; +const RASEO_ModemLights = 0x00000100; +const RASEO_SwCompression = 0x00000200; +const RASEO_RequireEncryptedPw = 0x00000400; +const RASEO_RequireMsEncryptedPw = 0x00000800; +const RASEO_RequireDataEncryption = 0x00001000; +const RASEO_NetworkLogon = 0x00002000; +const RASEO_UseLogonCredentials = 0x00004000; +const RASEO_PromoteAlternates = 0x00008000; +const RASNP_NetBEUI = 0x00000001; +const RASNP_Ipx = 0x00000002; +const RASNP_Ip = 0x00000004; +const RASFP_Ppp = 0x00000001; +const RASFP_Slip = 0x00000002; +const RASFP_Ras = 0x00000004; + +const TCHAR[] + RASDT_Modem = "modem", + RASDT_Isdn = "isdn", + RASDT_X25 = "x25", + RASDT_Vpn = "vpn", + RASDT_Pad = "pad", + RASDT_Generic = "GENERIC", + RASDT_Serial = "SERIAL", + RASDT_FrameRelay = "FRAMERELAY", + RASDT_Atm = "ATM", + RASDT_Sonet = "SONET", + RASDT_SW56 = "SW56", + RASDT_Irda = "IRDA", + RASDT_Parallel = "PARALLEL"; + +const RASET_Phone = 1; +const RASET_Vpn = 2; +const RASET_Direct = 3; +const RASET_Internet = 4; + +static if (_WIN32_WINNT >= 0x401) { + const RASEO_SecureLocalFiles = 0x00010000; + const RASCN_Connection = 0x00000001; + const RASCN_Disconnection = 0x00000002; + const RASCN_BandwidthAdded = 0x00000004; + const RASCN_BandwidthRemoved = 0x00000008; + const RASEDM_DialAll = 1; + const RASEDM_DialAsNeeded = 2; + const RASIDS_Disabled = 0xffffffff; + const RASIDS_UseGlobalValue = 0; + const RASADFLG_PositionDlg = 0x00000001; + const RASCM_UserName = 0x00000001; + const RASCM_Password = 0x00000002; + const RASCM_Domain = 0x00000004; + const RASADP_DisableConnectionQuery = 0; + const RASADP_LoginSessionDisable = 1; + const RASADP_SavedAddressesLimit = 2; + const RASADP_FailedConnectionTimeout = 3; + const RASADP_ConnectionQueryTimeout = 4; +} +static if (_WIN32_WINNT >= 0x500) { + const RDEOPT_CustomDial = 0x00001000; + const RASLCPAP_PAP = 0xC023; + const RASLCPAP_SPAP = 0xC027; + const RASLCPAP_CHAP = 0xC223; + const RASLCPAP_EAP = 0xC227; + const RASLCPAD_CHAP_MD5 = 0x05; + const RASLCPAD_CHAP_MS = 0x80; + const RASLCPAD_CHAP_MSV2 = 0x81; + const RASLCPO_PFC = 0x00000001; + const RASLCPO_ACFC = 0x00000002; + const RASLCPO_SSHF = 0x00000004; + const RASLCPO_DES_56 = 0x00000008; + const RASLCPO_3_DES = 0x00000010; + + const RASCCPCA_MPPC = 0x00000006; + const RASCCPCA_STAC = 0x00000005; + + const RASCCPO_Compression = 0x00000001; + const RASCCPO_HistoryLess = 0x00000002; + const RASCCPO_Encryption56bit = 0x00000010; + const RASCCPO_Encryption40bit = 0x00000020; + const RASCCPO_Encryption128bit = 0x00000040; + + const RASEO_RequireEAP = 0x00020000; + const RASEO_RequirePAP = 0x00040000; + const RASEO_RequireSPAP = 0x00080000; + const RASEO_Custom = 0x00100000; + const RASEO_PreviewPhoneNumber = 0x00200000; + const RASEO_SharedPhoneNumbers = 0x00800000; + const RASEO_PreviewUserPw = 0x01000000; + const RASEO_PreviewDomain = 0x02000000; + const RASEO_ShowDialingProgress = 0x04000000; + const RASEO_RequireCHAP = 0x08000000; + const RASEO_RequireMsCHAP = 0x10000000; + const RASEO_RequireMsCHAP2 = 0x20000000; + const RASEO_RequireW95MSCHAP = 0x40000000; + const RASEO_CustomScript = 0x80000000; + + const RASIPO_VJ = 0x00000001; + const RCD_SingleUser = 0; + const RCD_AllUsers = 0x00000001; + const RCD_Eap = 0x00000002; + const RASEAPF_NonInteractive = 0x00000002; + const RASEAPF_Logon = 0x00000004; + const RASEAPF_Preview = 0x00000008; + const ET_40Bit = 1; + const ET_128Bit = 2; + const ET_None = 0; + const ET_Require = 1; + const ET_RequireMax = 2; + const ET_Optional = 3; +} + +const RASCS_PAUSED = 0x1000; +const RASCS_DONE = 0x2000; +enum RASCONNSTATE { + RASCS_OpenPort = 0, + RASCS_PortOpened, + RASCS_ConnectDevice, + RASCS_DeviceConnected, + RASCS_AllDevicesConnected, + RASCS_Authenticate, + RASCS_AuthNotify, + RASCS_AuthRetry, + RASCS_AuthCallback, + RASCS_AuthChangePassword, + RASCS_AuthProject, + RASCS_AuthLinkSpeed, + RASCS_AuthAck, + RASCS_ReAuthenticate, + RASCS_Authenticated, + RASCS_PrepareForCallback, + RASCS_WaitForModemReset, + RASCS_WaitForCallback, + RASCS_Projected, + RASCS_StartAuthentication, + RASCS_CallbackComplete, + RASCS_LogonNetwork, + RASCS_SubEntryConnected, + RASCS_SubEntryDisconnected, + RASCS_Interactive = RASCS_PAUSED, + RASCS_RetryAuthentication, + RASCS_CallbackSetByCaller, + RASCS_PasswordExpired, +// static if (_WIN32_WINNT >= 0x500) { + RASCS_InvokeEapUI, +// } + RASCS_Connected = RASCS_DONE, + RASCS_Disconnected +} +alias RASCONNSTATE* LPRASCONNSTATE; + +enum RASPROJECTION { + RASP_Amb = 0x10000, + RASP_PppNbf = 0x803F, + RASP_PppIpx = 0x802B, + RASP_PppIp = 0x8021, +// static if (_WIN32_WINNT >= 0x500) { + RASP_PppCcp = 0x80FD, +// } + RASP_PppLcp = 0xC021, + RASP_Slip = 0x20000 +} +alias RASPROJECTION* LPRASPROJECTION; + +alias TypeDef!(HANDLE) HRASCONN; +alias HRASCONN* LPHRASCONN; + +struct RASCONNW { + DWORD dwSize; + HRASCONN hrasconn; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + WCHAR[MAX_PATH] szPhonebook; + DWORD dwSubEntry; + } + static if (_WIN32_WINNT >= 0x500) { + GUID guidEntry; + } + static if (_WIN32_WINNT >= 0x501) { + DWORD dwFlags; + LUID luid; + } +} +alias RASCONNW* LPRASCONNW; + +struct RASCONNA { + DWORD dwSize; + HRASCONN hrasconn; + CHAR[RAS_MaxEntryName + 1] szEntryName; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + CHAR[MAX_PATH] szPhonebook; + DWORD dwSubEntry; + } + static if (_WIN32_WINNT >= 0x500) { + GUID guidEntry; + } + static if (_WIN32_WINNT >= 0x501) { + DWORD dwFlags; + LUID luid; + } +} +alias RASCONNA* LPRASCONNA; + +struct RASCONNSTATUSW { + DWORD dwSize; + RASCONNSTATE rasconnstate; + DWORD dwError; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + } +} +alias RASCONNSTATUSW* LPRASCONNSTATUSW; + +struct RASCONNSTATUSA { + DWORD dwSize; + RASCONNSTATE rasconnstate; + DWORD dwError; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + } +} +alias RASCONNSTATUSA* LPRASCONNSTATUSA; + +struct RASDIALPARAMSW { + DWORD dwSize; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + WCHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; + } +} +alias RASDIALPARAMSW* LPRASDIALPARAMSW; + +struct RASDIALPARAMSA{ + DWORD dwSize; + CHAR[RAS_MaxEntryName + 1] szEntryName; + CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + CHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; + } +} +alias RASDIALPARAMSA* LPRASDIALPARAMSA; + +static if (_WIN32_WINNT >= 0x500) { + struct RASEAPINFO { + DWORD dwSizeofEapInfo; + BYTE *pbEapInfo; + } +} + +struct RASDIALEXTENSIONS { + DWORD dwSize; + DWORD dwfOptions; + HWND hwndParent; + ULONG_PTR reserved; + static if (_WIN32_WINNT >= 0x500) { + ULONG_PTR reserved1; + RASEAPINFO RasEapInfo; + } +} +alias RASDIALEXTENSIONS* LPRASDIALEXTENSIONS; + +struct RASENTRYNAMEW { + DWORD dwSize; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + static if (_WIN32_WINNT >= 0x500) { + DWORD dwFlags; + WCHAR[MAX_PATH + 1] szPhonebookPath; + } +} +alias RASENTRYNAMEW* LPRASENTRYNAMEW; + +struct RASENTRYNAMEA{ + DWORD dwSize; + CHAR[RAS_MaxEntryName + 1] szEntryName; + static if (_WIN32_WINNT >= 0x500) { + DWORD dwFlags; + CHAR[MAX_PATH + 1] szPhonebookPath; + } +} +alias RASENTRYNAMEA* LPRASENTRYNAMEA; + +struct RASAMBW{ + DWORD dwSize; + DWORD dwError; + WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + BYTE bLana; +} +alias RASAMBW* LPRASAMBW; + +struct RASAMBA{ + DWORD dwSize; + DWORD dwError; + CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + BYTE bLana; +} +alias RASAMBA* LPRASAMBA; + +struct RASPPPNBFW{ + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + WCHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; + BYTE bLana; +} +alias RASPPPNBFW* LPRASPPPNBFW; + +struct RASPPPNBFA{ + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; + BYTE bLana; +} +alias RASPPPNBFA* LPRASPPPNBFA; + +struct RASPPPIPXW { + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpxAddress + 1] szIpxAddress; +} +alias RASPPPIPXW* LPRASPPPIPXW; + +struct RASPPPIPXA { + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpxAddress + 1] szIpxAddress; +} +alias RASPPPIPXA* LPRASPPPIPXA; + +struct RASPPPIPW{ + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpAddress + 1] szIpAddress; + //#ifndef WINNT35COMPATIBLE + WCHAR[RAS_MaxIpAddress + 1] szServerIpAddress; + //#endif + static if (_WIN32_WINNT >= 0x500) { + DWORD dwOptions; + DWORD dwServerOptions; + } +} +alias RASPPPIPW* LPRASPPPIPW; + +struct RASPPPIPA{ + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpAddress + 1] szIpAddress; + //#ifndef WINNT35COMPATIBLE + CHAR[RAS_MaxIpAddress + 1] szServerIpAddress; + //#endif + static if (_WIN32_WINNT >= 0x500) { + DWORD dwOptions; + DWORD dwServerOptions; + } +} +alias RASPPPIPA* LPRASPPPIPA; + +struct RASPPPLCPW{ + DWORD dwSize; + BOOL fBundled; + static if (_WIN32_WINNT >= 0x500) { + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + BOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + WCHAR[RAS_MaxReplyMessage] szReplyMessage; + DWORD dwOptions; + DWORD dwServerOptions; + } +} +alias RASPPPLCPW* LPRASPPPLCPW; + +struct RASPPPLCPA{ + DWORD dwSize; + BOOL fBundled; + static if (_WIN32_WINNT >= 0x500) { + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + BOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + CHAR[RAS_MaxReplyMessage] szReplyMessage; + DWORD dwOptions; + DWORD dwServerOptions; + } +} +alias RASPPPLCPA* LPRASPPPLCPA; + +struct RASSLIPW{ + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpAddress + 1] szIpAddress; +} +alias RASSLIPW* LPRASSLIPW; + +struct RASSLIPA{ + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpAddress + 1] szIpAddress; +} +alias RASSLIPA* LPRASSLIPA; + +struct RASDEVINFOW{ + DWORD dwSize; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; +} +alias RASDEVINFOW* LPRASDEVINFOW; + +struct RASDEVINFOA{ + DWORD dwSize; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; +} +alias RASDEVINFOA* LPRASDEVINFOA; + +struct RASCTRYINFO { + DWORD dwSize; + DWORD dwCountryID; + DWORD dwNextCountryID; + DWORD dwCountryCode; + DWORD dwCountryNameOffset; +} +alias RASCTRYINFO* LPRASCTRYINFO; +alias RASCTRYINFO RASCTRYINFOW, RASCTRYINFOA; +alias RASCTRYINFOW* LPRASCTRYINFOW; +alias RASCTRYINFOA* LPRASCTRYINFOA; + +struct RASIPADDR { + BYTE a; + BYTE b; + BYTE c; + BYTE d; +} + +struct RASENTRYW { + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + WCHAR[RAS_MaxAreaCode + 1] szAreaCode; + WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + WCHAR[MAX_PATH] szScript; + WCHAR[MAX_PATH] szAutodialDll; + WCHAR[MAX_PATH] szAutodialFunc; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + WCHAR[RAS_MaxPadType + 1] szX25PadType; + WCHAR[RAS_MaxX25Address + 1] szX25Address; + WCHAR[RAS_MaxFacilities + 1] szX25Facilities; + WCHAR[RAS_MaxUserData + 1] szX25UserData; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + } + static if (_WIN32_WINNT >= 0x500) { + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + WCHAR[MAX_PATH] szCustomDialDll; + DWORD dwVpnStrategy; + } +} +alias RASENTRYW* LPRASENTRYW; + +struct RASENTRYA { + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + CHAR[RAS_MaxAreaCode + 1] szAreaCode; + CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + CHAR[MAX_PATH] szScript; + CHAR[MAX_PATH] szAutodialDll; + CHAR[MAX_PATH] szAutodialFunc; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + CHAR[RAS_MaxPadType + 1] szX25PadType; + CHAR[RAS_MaxX25Address + 1] szX25Address; + CHAR[RAS_MaxFacilities + 1] szX25Facilities; + CHAR[RAS_MaxUserData + 1] szX25UserData; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + } + static if (_WIN32_WINNT >= 0x500) { + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + CHAR[MAX_PATH] szCustomDialDll; + DWORD dwVpnStrategy; + } +} +alias RASENTRYA* LPRASENTRYA; + + +static if (_WIN32_WINNT >= 0x401) { + struct RASADPARAMS { + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + } + alias RASADPARAMS* LPRASADPARAMS; + + struct RASSUBENTRYW{ + DWORD dwSize; + DWORD dwfFlags; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + } + alias RASSUBENTRYW* LPRASSUBENTRYW; + + struct RASSUBENTRYA{ + DWORD dwSize; + DWORD dwfFlags; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + } + alias RASSUBENTRYA* LPRASSUBENTRYA; + + struct RASCREDENTIALSW{ + DWORD dwSize; + DWORD dwMask; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; + } + alias RASCREDENTIALSW* LPRASCREDENTIALSW; + + struct RASCREDENTIALSA{ + DWORD dwSize; + DWORD dwMask; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; + } + alias RASCREDENTIALSA* LPRASCREDENTIALSA; + + struct RASAUTODIALENTRYW{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + WCHAR[RAS_MaxEntryName + 1] szEntry; + } + alias RASAUTODIALENTRYW* LPRASAUTODIALENTRYW; + + struct RASAUTODIALENTRYA{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + CHAR[RAS_MaxEntryName + 1] szEntry; + } + alias RASAUTODIALENTRYA* LPRASAUTODIALENTRYA; +} + +static if (_WIN32_WINNT >= 0x500) { + struct RASPPPCCP{ + DWORD dwSize; + DWORD dwError; + DWORD dwCompressionAlgorithm; + DWORD dwOptions; + DWORD dwServerCompressionAlgorithm; + DWORD dwServerOptions; + } + alias RASPPPCCP* LPRASPPPCCP; + + struct RASEAPUSERIDENTITYW{ + WCHAR[UNLEN + 1] szUserName; + DWORD dwSizeofEapInfo; + BYTE[1] pbEapInfo; + } + alias RASEAPUSERIDENTITYW* LPRASEAPUSERIDENTITYW; + + struct RASEAPUSERIDENTITYA{ + CHAR[UNLEN + 1] szUserName; + DWORD dwSizeofEapInfo; + BYTE[1] pbEapInfo; + } + alias RASEAPUSERIDENTITYA* LPRASEAPUSERIDENTITYA; + + struct RAS_STATS{ + DWORD dwSize; + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwCompressionRatioIn; + DWORD dwCompressionRatioOut; + DWORD dwBps; + DWORD dwConnectDuration; + } + alias RAS_STATS* PRAS_STATS; +} + + +/* UNICODE typedefs for structures*/ +version (Unicode) { + alias RASCONNW RASCONN; + alias RASENTRYW RASENTRY; + alias RASCONNSTATUSW RASCONNSTATUS; + alias RASDIALPARAMSW RASDIALPARAMS; + alias RASAMBW RASAMB; + alias RASPPPNBFW RASPPPNBF; + alias RASPPPIPXW RASPPPIPX; + alias RASPPPIPW RASPPPIP; + alias RASPPPLCPW RASPPPLCP; + alias RASSLIPW RASSLIP; + alias RASDEVINFOW RASDEVINFO; + alias RASENTRYNAMEW RASENTRYNAME; + + static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRYW RASSUBENTRY; + alias RASCREDENTIALSW RASCREDENTIALS; + alias RASAUTODIALENTRYW RASAUTODIALENTRY; + } + + static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITYW RASEAPUSERIDENTITY; + } + +} else { // ! defined UNICODE + + alias RASCONNA RASCONN; + alias RASENTRYA RASENTRY; + alias RASCONNSTATUSA RASCONNSTATUS; + alias RASDIALPARAMSA RASDIALPARAMS; + alias RASAMBA RASAMB; + alias RASPPPNBFA RASPPPNBF; + alias RASPPPIPXA RASPPPIPX; + alias RASPPPIPA RASPPPIP; + alias RASPPPLCPA RASPPPLCP; + alias RASSLIPA RASSLIP; + alias RASDEVINFOA RASDEVINFO; + alias RASENTRYNAMEA RASENTRYNAME; + + static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRYA RASSUBENTRY; + alias RASCREDENTIALSA RASCREDENTIALS; + alias RASAUTODIALENTRYA RASAUTODIALENTRY; + } + static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITYA RASEAPUSERIDENTITY; + } +}// ! UNICODE + + +alias RASCONN* LPRASCONN; +alias RASENTRY* LPRASENTRY; +alias RASCONNSTATUS* LPRASCONNSTATUS; +alias RASDIALPARAMS* LPRASDIALPARAMS; +alias RASAMB* LPRASAM; +alias RASPPPNBF* LPRASPPPNBF; +alias RASPPPIPX* LPRASPPPIPX; +alias RASPPPIP* LPRASPPPIP; +alias RASPPPLCP* LPRASPPPLCP; +alias RASSLIP* LPRASSLIP; +alias RASDEVINFO* LPRASDEVINFO; +alias RASENTRYNAME* LPRASENTRYNAME; + +static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRY* LPRASSUBENTRY; + alias RASCREDENTIALS* LPRASCREDENTIALS; + alias RASAUTODIALENTRY* LPRASAUTODIALENTRY; +} +static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITY* LPRASEAPUSERIDENTITY; +} + +/* Callback prototypes */ +deprecated { + alias BOOL function (HWND, LPSTR, DWORD, LPDWORD) ORASADFUNC; +} + +alias void function (UINT, RASCONNSTATE, DWORD) RASDIALFUNC; +alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD, +DWORD) RASDIALFUNC1; +alias DWORD function (ULONG_PTR, DWORD, HRASCONN, UINT, +RASCONNSTATE, DWORD, DWORD) RASDIALFUNC2; + +/* External functions */ +DWORD RasDialA (LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, +DWORD, LPVOID, LPHRASCONN); +DWORD RasDialW (LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, +DWORD, LPVOID, LPHRASCONN); +DWORD RasEnumConnectionsA (LPRASCONNA, LPDWORD, LPDWORD); +DWORD RasEnumConnectionsW (LPRASCONNW, LPDWORD, LPDWORD); +DWORD RasEnumEntriesA (LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, +LPDWORD); +DWORD RasEnumEntriesW (LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD, +LPDWORD); +DWORD RasGetConnectStatusA (HRASCONN, LPRASCONNSTATUSA); +DWORD RasGetConnectStatusW (HRASCONN, LPRASCONNSTATUSW); +DWORD RasGetErrorStringA (UINT, LPSTR, DWORD); +DWORD RasGetErrorStringW (UINT, LPWSTR, DWORD); +DWORD RasHangUpA (HRASCONN); +DWORD RasHangUpW (HRASCONN); +DWORD RasGetProjectionInfoA (HRASCONN, RASPROJECTION, LPVOID, +LPDWORD); +DWORD RasGetProjectionInfoW (HRASCONN, RASPROJECTION, LPVOID, +LPDWORD); +DWORD RasCreatePhonebookEntryA (HWND, LPCSTR); +DWORD RasCreatePhonebookEntryW (HWND, LPCWSTR); +DWORD RasEditPhonebookEntryA (HWND, LPCSTR, LPCSTR); +DWORD RasEditPhonebookEntryW (HWND, LPCWSTR, LPCWSTR); +DWORD RasSetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, BOOL); +DWORD RasSetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, BOOL); +DWORD RasGetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, LPBOOL); +DWORD RasGetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, LPBOOL); +DWORD RasEnumDevicesA (LPRASDEVINFOA, LPDWORD, LPDWORD); +DWORD RasEnumDevicesW (LPRASDEVINFOW, LPDWORD, LPDWORD); +DWORD RasGetCountryInfoA (LPRASCTRYINFOA, LPDWORD); +DWORD RasGetCountryInfoW (LPRASCTRYINFOW, LPDWORD); +DWORD RasGetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, +LPBYTE, LPDWORD); +DWORD RasGetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, +LPDWORD, LPBYTE, LPDWORD); +DWORD RasSetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, DWORD, +LPBYTE, DWORD); +DWORD RasSetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, +LPBYTE, DWORD); +DWORD RasRenameEntryA (LPCSTR, LPCSTR, LPCSTR); +DWORD RasRenameEntryW (LPCWSTR, LPCWSTR, LPCWSTR); +DWORD RasDeleteEntryA (LPCSTR, LPCSTR); +DWORD RasDeleteEntryW (LPCWSTR, LPCWSTR); +DWORD RasValidateEntryNameA (LPCSTR, LPCSTR); +DWORD RasValidateEntryNameW (LPCWSTR, LPCWSTR); + +static if (_WIN32_WINNT >= 0x401) { + alias BOOL function (LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; + alias BOOL function (LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; + + DWORD RasGetSubEntryHandleA (HRASCONN, DWORD, LPHRASCONN); + DWORD RasGetSubEntryHandleW (HRASCONN, DWORD, LPHRASCONN); + DWORD RasGetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA); + DWORD RasGetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW); + DWORD RasSetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL); + DWORD RasSetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL); + DWORD RasConnectionNotificationA (HRASCONN, HANDLE, DWORD); + DWORD RasConnectionNotificationW (HRASCONN, HANDLE, DWORD); + DWORD RasGetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD, + LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD); + DWORD RasGetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD, + LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD); + DWORD RasSetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD, + LPRASSUBENTRYA, DWORD, LPBYTE, DWORD); + DWORD RasSetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD, + LPRASSUBENTRYW, DWORD, LPBYTE, DWORD); + DWORD RasGetAutodialAddressA (LPCSTR, LPDWORD, LPRASAUTODIALENTRYA, + LPDWORD, LPDWORD); + DWORD RasGetAutodialAddressW (LPCWSTR, LPDWORD, + LPRASAUTODIALENTRYW, LPDWORD, LPDWORD); + DWORD RasSetAutodialAddressA (LPCSTR, DWORD, LPRASAUTODIALENTRYA, + DWORD, DWORD); + DWORD RasSetAutodialAddressW (LPCWSTR, DWORD, LPRASAUTODIALENTRYW, + DWORD, DWORD); + DWORD RasEnumAutodialAddressesA (LPSTR *, LPDWORD, LPDWORD); + DWORD RasEnumAutodialAddressesW (LPWSTR *, LPDWORD, LPDWORD); + DWORD RasGetAutodialEnableA (DWORD, LPBOOL); + DWORD RasGetAutodialEnableW (DWORD, LPBOOL); + DWORD RasSetAutodialEnableA (DWORD, BOOL); + DWORD RasSetAutodialEnableW (DWORD, BOOL); + DWORD RasGetAutodialParamA (DWORD, LPVOID, LPDWORD); + DWORD RasGetAutodialParamW (DWORD, LPVOID, LPDWORD); + DWORD RasSetAutodialParamA (DWORD, LPVOID, DWORD); + DWORD RasSetAutodialParamW (DWORD, LPVOID, DWORD); +} + +static if (_WIN32_WINNT >= 0x500) { + alias DWORD function (HRASCONN) RasCustomHangUpFn; + alias DWORD function (LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; + alias DWORD function (HINSTANCE, LPRASDIALEXTENSIONS, + LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN, DWORD) RasCustomDialFn; + + DWORD RasInvokeEapUI (HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); + DWORD RasGetLinkStatistics (HRASCONN, DWORD, RAS_STATS*); + DWORD RasGetConnectionStatistics (HRASCONN, RAS_STATS*); + DWORD RasClearLinkStatistics (HRASCONN, DWORD); + DWORD RasClearConnectionStatistics (HRASCONN); + DWORD RasGetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*); + DWORD RasGetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*); + DWORD RasSetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD); + DWORD RasSetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD); + DWORD RasGetCustomAuthDataA (LPCSTR, LPCSTR, BYTE*, DWORD*); + DWORD RasGetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD*); + DWORD RasSetCustomAuthDataA (LPCSTR, LPCSTR, BYTE*, DWORD); + DWORD RasSetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD); + DWORD RasGetEapUserIdentityW (LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*); + DWORD RasGetEapUserIdentityA (LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*); + void RasFreeEapUserIdentityW (LPRASEAPUSERIDENTITYW); + void RasFreeEapUserIdentityA (LPRASEAPUSERIDENTITYA); +} + + +/* UNICODE defines for functions */ +version(Unicode) { + alias RasDialW RasDial; + alias RasEnumConnectionsW RasEnumConnections; + alias RasEnumEntriesW RasEnumEntries; + alias RasGetConnectStatusW RasGetConnectStatus; + alias RasGetErrorStringW RasGetErrorString; + alias RasHangUpW RasHangUp; + alias RasGetProjectionInfoW RasGetProjectionInfo; + alias RasCreatePhonebookEntryW RasCreatePhonebookEntry; + alias RasEditPhonebookEntryW RasEditPhonebookEntry; + alias RasSetEntryDialParamsW RasSetEntryDialParams; + alias RasGetEntryDialParamsW RasGetEntryDialParams; + alias RasEnumDevicesW RasEnumDevices; + alias RasGetCountryInfoW RasGetCountryInfo; + alias RasGetEntryPropertiesW RasGetEntryProperties; + alias RasSetEntryPropertiesW RasSetEntryProperties; + alias RasRenameEntryW RasRenameEntry; + alias RasDeleteEntryW RasDeleteEntry; + alias RasValidateEntryNameW RasValidateEntryName; + + static if (_WIN32_WINNT >= 0x401) { + alias RASADFUNCW RASADFUNC; + alias RasGetSubEntryHandleW RasGetSubEntryHandle; + alias RasConnectionNotificationW RasConnectionNotification; + alias RasGetSubEntryPropertiesW RasGetSubEntryProperties; + alias RasSetSubEntryPropertiesW RasSetSubEntryProperties; + alias RasGetCredentialsW RasGetCredentials; + alias RasSetCredentialsW RasSetCredentials; + alias RasGetAutodialAddressW RasGetAutodialAddress; + alias RasSetAutodialAddressW RasSetAutodialAddress; + alias RasEnumAutodialAddressesW RasEnumAutodialAddresses; + alias RasGetAutodialEnableW RasGetAutodialEnable; + alias RasSetAutodialEnableW RasSetAutodialEnable; + alias RasGetAutodialParamW RasGetAutodialParam; + alias RasSetAutodialParamW RasSetAutodialParam; + } + + static if (_WIN32_WINNT >= 0x500) { + alias RasGetEapUserDataW RasGetEapUserData; + alias RasSetEapUserDataW RasSetEapUserData; + alias RasGetCustomAuthDataW RasGetCustomAuthData; + alias RasSetCustomAuthDataW RasSetCustomAuthData; + alias RasGetEapUserIdentityW RasGetEapUserIdentity; + alias RasFreeEapUserIdentityW RasFreeEapUserIdentity; + } + +} else { // !Unicode + alias RasDialA RasDial; + alias RasEnumConnectionsA RasEnumConnections; + alias RasEnumEntriesA RasEnumEntries; + alias RasGetConnectStatusA RasGetConnectStatus; + alias RasGetErrorStringA RasGetErrorString; + alias RasHangUpA RasHangUp; + alias RasGetProjectionInfoA RasGetProjectionInfo; + alias RasCreatePhonebookEntryA RasCreatePhonebookEntry; + alias RasEditPhonebookEntryA RasEditPhonebookEntry; + alias RasSetEntryDialParamsA RasSetEntryDialParams; + alias RasGetEntryDialParamsA RasGetEntryDialParams; + alias RasEnumDevicesA RasEnumDevices; + alias RasGetCountryInfoA RasGetCountryInfo; + alias RasGetEntryPropertiesA RasGetEntryProperties; + alias RasSetEntryPropertiesA RasSetEntryProperties; + alias RasRenameEntryA RasRenameEntry; + alias RasDeleteEntryA RasDeleteEntry; + alias RasValidateEntryNameA RasValidateEntryName; + + static if (_WIN32_WINNT >= 0x401) { + alias RASADFUNCA RASADFUNC; + alias RasGetSubEntryHandleA RasGetSubEntryHandle; + alias RasConnectionNotificationA RasConnectionNotification; + alias RasGetSubEntryPropertiesA RasGetSubEntryProperties; + alias RasSetSubEntryPropertiesA RasSetSubEntryProperties; + alias RasGetCredentialsA RasGetCredentials; + alias RasSetCredentialsA RasSetCredentials; + alias RasGetAutodialAddressA RasGetAutodialAddress; + alias RasSetAutodialAddressA RasSetAutodialAddress; + alias RasEnumAutodialAddressesA RasEnumAutodialAddresses; + alias RasGetAutodialEnableA RasGetAutodialEnable; + alias RasSetAutodialEnableA RasSetAutodialEnable; + alias RasGetAutodialParamA RasGetAutodialParam; + alias RasSetAutodialParamA RasSetAutodialParam; + } + + static if (_WIN32_WINNT >= 0x500) { + alias RasGetEapUserDataA RasGetEapUserData; + alias RasSetEapUserDataA RasSetEapUserData; + alias RasGetCustomAuthDataA RasGetCustomAuthData; + alias RasSetCustomAuthDataA RasSetCustomAuthData; + alias RasGetEapUserIdentityA RasGetEapUserIdentity; + alias RasFreeEapUserIdentityA RasFreeEapUserIdentity; + } +} //#endif // !Unicode diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d new file mode 100644 index 0000000000..8401560519 --- /dev/null +++ b/src/core/sys/windows/rasdlg.d @@ -0,0 +1,159 @@ +/***********************************************************************\ +* rasdlg.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rasdlg; + +import win32.ras; +private import win32.lmcons, win32.windef; + +enum { + RASPBDEVENT_AddEntry = 1, + RASPBDEVENT_EditEntry, + RASPBDEVENT_RemoveEntry, + RASPBDEVENT_DialEntry, + RASPBDEVENT_EditGlobals, + RASPBDEVENT_NoUser, + RASPBDEVENT_NoUserEdit +} + +const RASPBDFLAG_PositionDlg = 1; +const RASPBDFLAG_ForceCloseOnDial = 2; +const RASPBDFLAG_NoUser = 16; + +const RASEDFLAG_PositionDlg = 1; +const RASEDFLAG_NewEntry = 2; +const RASEDFLAG_CloneEntry = 4; + +const RASDDFLAG_PositionDlg = 1; + +align(4): + +struct RASENTRYDLGA { + DWORD dwSize = RASENTRYDLGA.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + CHAR[RAS_MaxEntryName + 1] szEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASENTRYDLGA* LPRASENTRYDLGA; + +struct RASENTRYDLGW { + DWORD dwSize = RASENTRYDLGW.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + WCHAR[RAS_MaxEntryName + 1] szEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASENTRYDLGW* LPRASENTRYDLGW; + +struct RASDIALDLG { + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + DWORD dwSubEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASDIALDLG* LPRASDIALDLG; + +// Application-defined callback functions +extern (Windows) { + alias VOID function(DWORD, DWORD, LPWSTR, LPVOID) RASPBDLGFUNCW; + alias VOID function(DWORD, DWORD, LPSTR, LPVOID) RASPBDLGFUNCA; +} + +struct RASPBDLGA { + DWORD dwSize = RASPBDLGA.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + ULONG_PTR dwCallbackId; + RASPBDLGFUNCA pCallback; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASPBDLGA* LPRASPBDLGA; + +struct RASPBDLGW { + DWORD dwSize = RASPBDLGW.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + ULONG_PTR dwCallbackId; + RASPBDLGFUNCW pCallback; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASPBDLGW* LPRASPBDLGW; + +struct RASNOUSERA +{ + DWORD dwSize = RASNOUSERA.sizeof; + DWORD dwFlags; + DWORD dwTimeoutMs; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; +} +alias RASNOUSERA* LPRASNOUSERA; + +struct RASNOUSERW { + DWORD dwSize = RASNOUSERW.sizeof; + DWORD dwFlags; + DWORD dwTimeoutMs; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; +} +alias RASNOUSERW* LPRASNOUSERW; + +extern (Windows) { + BOOL RasDialDlgA(LPSTR, LPSTR, LPSTR, LPRASDIALDLG); + BOOL RasDialDlgW(LPWSTR, LPWSTR, LPWSTR, LPRASDIALDLG); + BOOL RasEntryDlgA(LPSTR, LPSTR, LPRASENTRYDLGA); + BOOL RasEntryDlgW(LPWSTR, LPWSTR, LPRASENTRYDLGW); + BOOL RasPhonebookDlgA(LPSTR, LPSTR, LPRASPBDLGA); + BOOL RasPhonebookDlgW(LPWSTR, LPWSTR, LPRASPBDLGW); +} + +version (Unicode) { + alias RASENTRYDLGW RASENTRYDLG; + alias RASPBDLGW RASPBDLG; + alias RASNOUSERW RASNOUSER; + alias RasDialDlgW RasDialDlg; + alias RasEntryDlgW RasEntryDlg; + alias RasPhonebookDlgW RasPhonebookDlg; +} else { + alias RASENTRYDLGA RASENTRYDLG; + alias RASPBDLGA RASPBDLG; + alias RASNOUSERA RASNOUSER; + alias RasDialDlgA RasDialDlg; + alias RasEntryDlgA RasEntryDlg; + alias RasPhonebookDlgA RasPhonebookDlg; +} + +alias RASENTRYDLG* LPRASENTRYDLG; +alias RASPBDLG* LPRASPBDLG; +alias RASNOUSER* LPRASNOUSER; diff --git a/src/core/sys/windows/raserror.d b/src/core/sys/windows/raserror.d new file mode 100644 index 0000000000..fe1c5421a8 --- /dev/null +++ b/src/core/sys/windows/raserror.d @@ -0,0 +1,215 @@ +/***********************************************************************\ +* raserror.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.raserror; + +enum { + SUCCESS = 0, + RASBASE = 600, + PENDING = RASBASE, + ERROR_INVALID_PORT_HANDLE, + ERROR_PORT_ALREADY_OPEN, + ERROR_BUFFER_TOO_SMALL, + ERROR_WRONG_INFO_SPECIFIED, + ERROR_CANNOT_SET_PORT_INFO, + ERROR_PORT_NOT_CONNECTED, + ERROR_EVENT_INVALID, + ERROR_DEVICE_DOES_NOT_EXIST, + ERROR_DEVICETYPE_DOES_NOT_EXIST, + ERROR_BUFFER_INVALID, + ERROR_ROUTE_NOT_AVAILABLE, + ERROR_ROUTE_NOT_ALLOCATED, + ERROR_INVALID_COMPRESSION_SPECIFIED, + ERROR_OUT_OF_BUFFERS, + ERROR_PORT_NOT_FOUND, + ERROR_ASYNC_REQUEST_PENDING, + ERROR_ALREADY_DISCONNECTING, + ERROR_PORT_NOT_OPEN, + ERROR_PORT_DISCONNECTED, + ERROR_NO_ENDPOINTS, + ERROR_CANNOT_OPEN_PHONEBOOK, + ERROR_CANNOT_LOAD_PHONEBOOK, + ERROR_CANNOT_FIND_PHONEBOOK_ENTRY, + ERROR_CANNOT_WRITE_PHONEBOOK, + ERROR_CORRUPT_PHONEBOOK, + ERROR_CANNOT_LOAD_STRING, + ERROR_KEY_NOT_FOUND, + ERROR_DISCONNECTION, + ERROR_REMOTE_DISCONNECTION, + ERROR_HARDWARE_FAILURE, + ERROR_USER_DISCONNECTION, + ERROR_INVALID_SIZE, + ERROR_PORT_NOT_AVAILABLE, + ERROR_CANNOT_PROJECT_CLIENT, + ERROR_UNKNOWN, + ERROR_WRONG_DEVICE_ATTACHED, + ERROR_BAD_STRING, + ERROR_REQUEST_TIMEOUT, + ERROR_CANNOT_GET_LANA, + ERROR_NETBIOS_ERROR, + ERROR_SERVER_OUT_OF_RESOURCES, + ERROR_NAME_EXISTS_ON_NET, + ERROR_SERVER_GENERAL_NET_FAILURE, + WARNING_MSG_ALIAS_NOT_ADDED, + ERROR_AUTH_INTERNAL, + ERROR_RESTRICTED_LOGON_HOURS, + ERROR_ACCT_DISABLED, + ERROR_PASSWD_EXPIRED, + ERROR_NO_DIALIN_PERMISSION, + ERROR_SERVER_NOT_RESPONDING, + ERROR_FROM_DEVICE, + ERROR_UNRECOGNIZED_RESPONSE, + ERROR_MACRO_NOT_FOUND, + ERROR_MACRO_NOT_DEFINED, + ERROR_MESSAGE_MACRO_NOT_FOUND, + ERROR_DEFAULTOFF_MACRO_NOT_FOUND, + ERROR_FILE_COULD_NOT_BE_OPENED, + ERROR_DEVICENAME_TOO_LONG, + ERROR_DEVICENAME_NOT_FOUND, + ERROR_NO_RESPONSES, + ERROR_NO_COMMAND_FOUND, + ERROR_WRONG_KEY_SPECIFIED, + ERROR_UNKNOWN_DEVICE_TYPE, + ERROR_ALLOCATING_MEMORY, + ERROR_PORT_NOT_CONFIGURED, + ERROR_DEVICE_NOT_READY, + ERROR_READING_INI_FILE, + ERROR_NO_CONNECTION, + ERROR_BAD_USAGE_IN_INI_FILE, + ERROR_READING_SECTIONNAME, + ERROR_READING_DEVICETYPE, + ERROR_READING_DEVICENAME, + ERROR_READING_USAGE, + ERROR_READING_MAXCONNECTBPS, + ERROR_READING_MAXCARRIERBPS, + ERROR_LINE_BUSY, + ERROR_VOICE_ANSWER, + ERROR_NO_ANSWER, + ERROR_NO_CARRIER, + ERROR_NO_DIALTONE, + ERROR_IN_COMMAND, + ERROR_WRITING_SECTIONNAME, + ERROR_WRITING_DEVICETYPE, + ERROR_WRITING_DEVICENAME, + ERROR_WRITING_MAXCONNECTBPS, + ERROR_WRITING_MAXCARRIERBPS, + ERROR_WRITING_USAGE, + ERROR_WRITING_DEFAULTOFF, + ERROR_READING_DEFAULTOFF, + ERROR_EMPTY_INI_FILE, + ERROR_AUTHENTICATION_FAILURE, + ERROR_PORT_OR_DEVICE, + ERROR_NOT_BINARY_MACRO, + ERROR_DCB_NOT_FOUND, + ERROR_STATE_MACHINES_NOT_STARTED, + ERROR_STATE_MACHINES_ALREADY_STARTED, + ERROR_PARTIAL_RESPONSE_LOOPING, + ERROR_UNKNOWN_RESPONSE_KEY, + ERROR_RECV_BUF_FULL, + ERROR_CMD_TOO_LONG, + ERROR_UNSUPPORTED_BPS, + ERROR_UNEXPECTED_RESPONSE, + ERROR_INTERACTIVE_MODE, + ERROR_BAD_CALLBACK_NUMBER, + ERROR_INVALID_AUTH_STATE, + ERROR_WRITING_INITBPS, + ERROR_X25_DIAGNOSTIC, + ERROR_ACCT_EXPIRED, + ERROR_CHANGING_PASSWORD, + ERROR_OVERRUN, + ERROR_RASMAN_CANNOT_INITIALIZE, + ERROR_BIPLEX_PORT_NOT_AVAILABLE, + ERROR_NO_ACTIVE_ISDN_LINES, + ERROR_NO_ISDN_CHANNELS_AVAILABLE, + ERROR_TOO_MANY_LINE_ERRORS, + ERROR_IP_CONFIGURATION, + ERROR_NO_IP_ADDRESSES, + ERROR_PPP_TIMEOUT, + ERROR_PPP_REMOTE_TERMINATED, + ERROR_PPP_NO_PROTOCOLS_CONFIGURED, + ERROR_PPP_NO_RESPONSE, + ERROR_PPP_INVALID_PACKET, + ERROR_PHONE_NUMBER_TOO_LONG, + ERROR_IPXCP_NO_DIALOUT_CONFIGURED, + ERROR_IPXCP_NO_DIALIN_CONFIGURED, + ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE, + ERROR_ACCESSING_TCPCFGDLL, + ERROR_NO_IP_RAS_ADAPTER, + ERROR_SLIP_REQUIRES_IP, + ERROR_PROJECTION_NOT_COMPLETE, + ERROR_PROTOCOL_NOT_CONFIGURED, + ERROR_PPP_NOT_CONVERGING, + ERROR_PPP_CP_REJECTED, + ERROR_PPP_LCP_TERMINATED, + ERROR_PPP_REQUIRED_ADDRESS_REJECTED, + ERROR_PPP_NCP_TERMINATED, + ERROR_PPP_LOOPBACK_DETECTED, + ERROR_PPP_NO_ADDRESS_ASSIGNED, + ERROR_CANNOT_USE_LOGON_CREDENTIALS, + ERROR_TAPI_CONFIGURATION, + ERROR_NO_LOCAL_ENCRYPTION, + ERROR_NO_REMOTE_ENCRYPTION, + ERROR_REMOTE_REQUIRES_ENCRYPTION, + ERROR_IPXCP_NET_NUMBER_CONFLICT, + ERROR_INVALID_SMM, + ERROR_SMM_UNINITIALIZED, + ERROR_NO_MAC_FOR_PORT, + ERROR_SMM_TIMEOUT, + ERROR_BAD_PHONE_NUMBER, + ERROR_WRONG_MODULE, + ERROR_INVALID_CALLBACK_NUMBER, + ERROR_SCRIPT_SYNTAX, + ERROR_HANGUP_FAILED, + ERROR_BUNDLE_NOT_FOUND, + ERROR_CANNOT_DO_CUSTOMDIAL, + ERROR_DIAL_ALREADY_IN_PROGRESS, + ERROR_RASAUTO_CANNOT_INITIALIZE, + ERROR_CONNECTION_ALREADY_SHARED, + ERROR_SHARING_CHANGE_FAILED, + ERROR_SHARING_ROUTER_INSTALL, + ERROR_SHARE_CONNECTION_FAILED, + ERROR_SHARING_PRIVATE_INSTALL, + ERROR_CANNOT_SHARE_CONNECTION, + ERROR_NO_SMART_CARD_READER, + ERROR_SHARING_ADDRESS_EXISTS, + ERROR_NO_CERTIFICATE, + ERROR_SHARING_MULTIPLE_ADDRESSES, + ERROR_FAILED_TO_ENCRYPT, + ERROR_BAD_ADDRESS_SPECIFIED, + ERROR_CONNECTION_REJECT, + ERROR_CONGESTION, + ERROR_INCOMPATIBLE, + ERROR_NUMBERCHANGED, + ERROR_TEMPFAILURE, + ERROR_BLOCKED, + ERROR_DONOTDISTURB, + ERROR_OUTOFORDER, + ERROR_UNABLE_TO_AUTHENTICATE_SERVER, + ERROR_SMART_CARD_REQUIRED, + ERROR_INVALID_FUNCTION_FOR_ENTRY, + ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND, + ERROR_SHARING_RRAS_CONFLICT, + ERROR_SHARING_NO_PRIVATE_LAN, + ERROR_NO_DIFF_USER_AT_LOGON, + ERROR_NO_REG_CERT_AT_LOGON, + ERROR_OAKLEY_NO_CERT, + ERROR_OAKLEY_AUTH_FAIL, + ERROR_OAKLEY_ATTRIB_FAIL, + ERROR_OAKLEY_GENERAL_PROCESSING, + ERROR_OAKLEY_NO_PEER_CERT, + ERROR_OAKLEY_NO_POLICY, + ERROR_OAKLEY_TIMED_OUT, + ERROR_OAKLEY_ERROR, + ERROR_UNKNOWN_FRAMED_PROTOCOL, + ERROR_WRONG_TUNNEL_TYPE, + ERROR_UNKNOWN_SERVICE_TYPE, + ERROR_CONNECTING_DEVICE_NOT_FOUND, + ERROR_NO_EAPTLS_CERTIFICATE, // = RASBASE+198 + RASBASEEND = ERROR_NO_EAPTLS_CERTIFICATE +} diff --git a/src/core/sys/windows/rassapi.d b/src/core/sys/windows/rassapi.d new file mode 100644 index 0000000000..e6adf71467 --- /dev/null +++ b/src/core/sys/windows/rassapi.d @@ -0,0 +1,220 @@ +/***********************************************************************\ +* rassapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rassapi; + +private import win32.lmcons, win32.windef; + +// FIXME: check types of constants + +const size_t + RASSAPI_MAX_PHONENUMBER_SIZE = 128, + RASSAPI_MAX_MEDIA_NAME = 16, + RASSAPI_MAX_PORT_NAME = 16, + RASSAPI_MAX_DEVICE_NAME = 128, + RASSAPI_MAX_DEVICETYPE_NAME = 16, + RASSAPI_MAX_PARAM_KEY_SIZE = 32; + +const RASPRIV_NoCallback = 0x01; +const RASPRIV_AdminSetCallback = 0x02; +const RASPRIV_CallerSetCallback = 0x04; +const RASPRIV_DialinPrivilege = 0x08; +const RASPRIV_CallbackType = 0x07; + +enum { + RAS_MODEM_OPERATIONAL = 1, + RAS_MODEM_NOT_RESPONDING, + RAS_MODEM_HARDWARE_FAILURE, + RAS_MODEM_INCORRECT_RESPONSE, + RAS_MODEM_UNKNOWN // = 5 +} + +enum { + RAS_PORT_NON_OPERATIONAL = 1, + RAS_PORT_DISCONNECTED, + RAS_PORT_CALLING_BACK, + RAS_PORT_LISTENING, + RAS_PORT_AUTHENTICATING, + RAS_PORT_AUTHENTICATED, + RAS_PORT_INITIALIZING // = 7 +} + +enum { + MEDIA_UNKNOWN, + MEDIA_SERIAL, + MEDIA_RAS10_SERIAL, + MEDIA_X25, + MEDIA_ISDN +} + +const USER_AUTHENTICATED = 0x0001; +const MESSENGER_PRESENT = 0x0002; +const PPP_CLIENT = 0x0004; +const GATEWAY_ACTIVE = 0x0008; +const REMOTE_LISTEN = 0x0010; +const PORT_MULTILINKED = 0x0020; + +const size_t + RAS_IPADDRESSLEN = 15, + RAS_IPXADDRESSLEN = 22, + RAS_ATADDRESSLEN = 32; + +// FIXME: should these be grouped together? +enum { + RASDOWNLEVEL = 10, + RASADMIN_35 = 35, + RASADMIN_CURRENT = 40 +} + +alias ULONG IPADDR; + +enum RAS_PARAMS_FORMAT { + ParamNumber = 0, + ParamString +} + +union RAS_PARAMS_VALUE { + DWORD Number; + struct _String { + DWORD Length; + PCHAR Data; + } + _String String; +} + +struct RAS_PARAMETERS { + CHAR[RASSAPI_MAX_PARAM_KEY_SIZE] P_Key; + RAS_PARAMS_FORMAT P_Type; + BYTE P_Attributes; + RAS_PARAMS_VALUE P_Value; +} + +struct RAS_USER_0 { + BYTE bfPrivilege; + WCHAR[RASSAPI_MAX_PHONENUMBER_SIZE + 1] szPhoneNumber; +} +alias RAS_USER_0* PRAS_USER_0; + +struct RAS_PORT_0 { + WCHAR[RASSAPI_MAX_PORT_NAME] wszPortName; + WCHAR[RASSAPI_MAX_DEVICETYPE_NAME] wszDeviceType; + WCHAR[RASSAPI_MAX_DEVICE_NAME] wszDeviceName; + WCHAR[RASSAPI_MAX_MEDIA_NAME] wszMediaName; + DWORD reserved; + DWORD Flags; + WCHAR[UNLEN + 1] wszUserName; + WCHAR[NETBIOS_NAME_LEN] wszComputer; + DWORD dwStartSessionTime; // seconds from 1/1/1970 + WCHAR[DNLEN + 1] wszLogonDomain; + BOOL fAdvancedServer; +} +alias RAS_PORT_0* PRAS_PORT_0; + +struct RAS_PPP_NBFCP_RESULT { + DWORD dwError; + DWORD dwNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szName; + WCHAR[NETBIOS_NAME_LEN + 1] wszWksta; +} + +struct RAS_PPP_IPCP_RESULT { + DWORD dwError; + WCHAR[RAS_IPADDRESSLEN + 1] wszAddress; +} + +struct RAS_PPP_IPXCP_RESULT { + DWORD dwError; + WCHAR[RAS_IPXADDRESSLEN + 1] wszAddress; +} + +struct RAS_PPP_ATCP_RESULT { + DWORD dwError; + WCHAR[RAS_ATADDRESSLEN + 1] wszAddress; +} + +struct RAS_PPP_PROJECTION_RESULT { + RAS_PPP_NBFCP_RESULT nbf; + RAS_PPP_IPCP_RESULT ip; + RAS_PPP_IPXCP_RESULT ipx; + RAS_PPP_ATCP_RESULT at; +} + +struct RAS_PORT_1 { + RAS_PORT_0 rasport0; + DWORD LineCondition; + DWORD HardwareCondition; + DWORD LineSpeed; + WORD NumStatistics; + WORD NumMediaParms; + DWORD SizeMediaParms; + RAS_PPP_PROJECTION_RESULT ProjResult; +} +alias RAS_PORT_1* PRAS_PORT_1; + +struct RAS_PORT_STATISTICS { + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwBytesXmitedUncompressed; + DWORD dwBytesRcvedUncompressed; + DWORD dwBytesXmitedCompressed; + DWORD dwBytesRcvedCompressed; + DWORD dwPortBytesXmited; + DWORD dwPortBytesRcved; + DWORD dwPortFramesXmited; + DWORD dwPortFramesRcved; + DWORD dwPortCrcErr; + DWORD dwPortTimeoutErr; + DWORD dwPortAlignmentErr; + DWORD dwPortHardwareOverrunErr; + DWORD dwPortFramingErr; + DWORD dwPortBufferOverrunErr; + DWORD dwPortBytesXmitedUncompressed; + DWORD dwPortBytesRcvedUncompressed; + DWORD dwPortBytesXmitedCompressed; + DWORD dwPortBytesRcvedCompressed; +} +alias RAS_PORT_STATISTICS* PRAS_PORT_STATISTICS; + +struct RAS_SERVER_0 { + WORD TotalPorts; + WORD PortsInUse; + DWORD RasVersion; +} +alias RAS_SERVER_0* PRAS_SERVER_0; + +extern (Windows) { + DWORD RasAdminServerGetInfo(const(WCHAR)*, PRAS_SERVER_0); + DWORD RasAdminGetUserAccountServer(const(WCHAR)*, const(WCHAR)*, LPWSTR); + DWORD RasAdminUserGetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); + DWORD RasAdminUserSetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); + DWORD RasAdminPortEnum(WCHAR*, PRAS_PORT_0*, WORD*); + DWORD RasAdminPortGetInfo(const(WCHAR)*, const(WCHAR)*, RAS_PORT_1*, + RAS_PORT_STATISTICS*, RAS_PARAMETERS**); + DWORD RasAdminPortClearStatistics(const(WCHAR)*, const(WCHAR)*); + DWORD RasAdminPortDisconnect(const(WCHAR)*, const(WCHAR)*); + DWORD RasAdminFreeBuffer(PVOID); + DWORD RasAdminGetErrorString(UINT, WCHAR*, DWORD); + BOOL RasAdminAcceptNewConnection(RAS_PORT_1*, RAS_PORT_STATISTICS*, + RAS_PARAMETERS*); + VOID RasAdminConnectionHangupNotification(RAS_PORT_1*, + RAS_PORT_STATISTICS*, RAS_PARAMETERS*); + DWORD RasAdminGetIpAddressForUser (WCHAR*, WCHAR*, IPADDR*, BOOL*); + VOID RasAdminReleaseIpAddress (WCHAR*, WCHAR*,IPADDR*); + DWORD RasAdminGetUserParms(WCHAR*, PRAS_USER_0); + DWORD RasAdminSetUserParms(WCHAR*, DWORD, PRAS_USER_0); +} diff --git a/src/core/sys/windows/reason.d b/src/core/sys/windows/reason.d new file mode 100644 index 0000000000..c94f51b026 --- /dev/null +++ b/src/core/sys/windows/reason.d @@ -0,0 +1,63 @@ +/***********************************************************************\ +* reason.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.reason; + +private import win32.w32api, win32.windef; + +static assert (_WIN32_WINNT >= 0x501, + "win32.reason is only available on WindowsXP and later"); + + +enum : DWORD { + SHTDN_REASON_MAJOR_OTHER = 0x00000000, + SHTDN_REASON_MAJOR_HARDWARE = 0x00010000, + SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000, + SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000, + SHTDN_REASON_MAJOR_APPLICATION = 0x00040000, + SHTDN_REASON_MAJOR_SYSTEM = 0x00050000, + SHTDN_REASON_MAJOR_POWER = 0x00060000, + SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 +} + +enum : DWORD { + SHTDN_REASON_MINOR_OTHER, + SHTDN_REASON_MINOR_MAINTENANCE, + SHTDN_REASON_MINOR_INSTALLATION, + SHTDN_REASON_MINOR_UPGRADE, + SHTDN_REASON_MINOR_RECONFIG, + SHTDN_REASON_MINOR_HUNG, + SHTDN_REASON_MINOR_UNSTABLE, + SHTDN_REASON_MINOR_DISK, + SHTDN_REASON_MINOR_PROCESSOR, + SHTDN_REASON_MINOR_NETWORKCARD, + SHTDN_REASON_MINOR_POWER_SUPPLY, + SHTDN_REASON_MINOR_CORDUNPLUGGED, + SHTDN_REASON_MINOR_ENVIRONMENT, + SHTDN_REASON_MINOR_HARDWARE_DRIVER, + SHTDN_REASON_MINOR_OTHERDRIVER, + SHTDN_REASON_MINOR_BLUESCREEN, + SHTDN_REASON_MINOR_SERVICEPACK, + SHTDN_REASON_MINOR_HOTFIX, + SHTDN_REASON_MINOR_SECURITYFIX, + SHTDN_REASON_MINOR_SECURITY, + SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY, + SHTDN_REASON_MINOR_WMI, + SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL, + SHTDN_REASON_MINOR_HOTFIX_UNINSTALL, + SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL, + SHTDN_REASON_MINOR_MMC, // = 0x00000019 + SHTDN_REASON_MINOR_TERMSRV = 0x00000020 +} + +enum : DWORD { + SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000, + SHTDN_REASON_FLAG_PLANNED = 0x80000000 +} diff --git a/src/core/sys/windows/regstr.d b/src/core/sys/windows/regstr.d new file mode 100644 index 0000000000..242b645a00 --- /dev/null +++ b/src/core/sys/windows/regstr.d @@ -0,0 +1,816 @@ +/***********************************************************************\ +* regstr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.regstr; + +// TODO: fix possible conflict with shloj. Sort out NEC_98 issue. + +private import win32.windef; + +const REGSTR_MAX_VALUE_LENGTH = 256; + +enum { + IT_COMPACT = 0, + IT_TYPICAL, + IT_PORTABLE, + IT_CUSTOM // = 3 +} + +const DOSOPTGF_DEFCLEAN = 1; + +const DOSOPTF_DEFAULT = 0x01; +const DOSOPTF_SUPPORTED = 0x02; +const DOSOPTF_ALWAYSUSE = 0x04; +const DOSOPTF_USESPMODE = 0x08; +const DOSOPTF_PROVIDESUMB = 0x10; +const DOSOPTF_NEEDSETUP = 0x20; +const DOSOPTF_INDOSSTART = 0x40; +const DOSOPTF_MULTIPLE = 0x80; + +const SUF_FIRSTTIME = 0x0001; +const SUF_EXPRESS = 0x0002; +const SUF_BATCHINF = 0x0004; +const SUF_CLEAN = 0x0008; +const SUF_INSETUP = 0x0010; +const SUF_NETSETUP = 0x0020; +const SUF_NETHDBOOT = 0x0040; +const SUF_NETRPLBOOT = 0x0080; +const SUF_SBSCOPYOK = 0x0100; + +const VPDF_DISABLEPWRMGMT = 1; +const VPDF_FORCEAPM10MODE = 2; +const VPDF_SKIPINTELSLCHECK = 4; +const VPDF_DISABLEPWRSTATUSPOLL = 8; + +const PCMCIA_OPT_HAVE_SOCKET = 0x01; +const PCMCIA_OPT_AUTOMEM = 0x04; +const PCMCIA_OPT_NO_SOUND = 0x08; +const PCMCIA_OPT_NO_AUDIO = 0x10; +const PCMCIA_OPT_NO_APMREMOVE = 0x20; + +const PCMCIA_DEF_MEMBEGIN = 0x0C0000; +const PCMCIA_DEF_MEMEND = 0xFFFFFF; +const PCMCIA_DEF_MEMLEN = 0x001000; +const PCMCIA_DEF_MIN_REGION = 0x010000; + +enum { + PCI_OPTIONS_USE_BIOS = 1, + PCI_OPTIONS_USE_IRQ_STEERING = 2 +} + +const PCI_FLAG_NO_VIDEO_IRQ = 0x0001; +const PCI_FLAG_PCMCIA_WANT_IRQ = 0x0002; +const PCI_FLAG_DUAL_IDE = 0x0004; +const PCI_FLAG_NO_ENUM_AT_ALL = 0x0008; +const PCI_FLAG_ENUM_NO_RESOURCE = 0x0010; +const PCI_FLAG_NEED_DWORD_ACCESS = 0x0020; +const PCI_FLAG_SINGLE_FUNCTION = 0x0040; +const PCI_FLAG_ALWAYS_ENABLED = 0x0080; +const PCI_FLAG_IS_IDE = 0x0100; +const PCI_FLAG_IS_VIDEO = 0x0200; +const PCI_FLAG_FAIL_START = 0x0400; + +const size_t REGSTR_VAL_MAX_HCID_LEN = 1024; + +const REGDF_NOTDETIO = 0x00000001; +const REGDF_NOTDETMEM = 0x00000002; +const REGDF_NOTDETIRQ = 0x00000004; +const REGDF_NOTDETDMA = 0x00000008; +const REGDF_NOTDETALL = REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA; +const REGDF_NEEDFULLCONFIG = 0x00000010; +const REGDF_GENFORCEDCONFIG = 0x00000020; +const REGDF_NODETCONFIG = 0x00008000; +const REGDF_CONFLICTIO = 0x00010000; +const REGDF_CONFLICTMEM = 0x00020000; +const REGDF_CONFLICTIRQ = 0x00040000; +const REGDF_CONFLICTDMA = 0x00080000; +const REGDF_CONFLICTALL = REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA; +const REGDF_MAPIRQ2TO9 = 0x00100000; +const REGDF_NOTVERIFIED = 0x80000000; + +const CONFIGFLAG_DISABLED = 0x0001; +const CONFIGFLAG_REMOVED = 0x0002; +const CONFIGFLAG_MANUAL_INSTALL = 0x0004; +const CONFIGFLAG_IGNORE_BOOT_LC = 0x0008; +const CONFIGFLAG_NET_BOOT = 0x0010; +const CONFIGFLAG_REINSTALL = 0x0020; +const CONFIGFLAG_FAILEDINSTALL = 0x0040; +const CONFIGFLAG_CANTSTOPACHILD = 0x0080; +const CONFIGFLAG_OKREMOVEROM = 0x0100; +const CONFIGFLAG_NOREMOVEEXIT = 0x0200; + +const CSCONFIGFLAG_DISABLED = 1; +const CSCONFIGFLAG_DO_NOT_CREATE = 2; +const CSCONFIGFLAG_DO_NOT_START = 4; +const CSCONFIGFLAG_BITS = 7; + +const DMSTATEFLAG_APPLYTOALL = 1; + +const NUM_RESOURCE_MAP = 256; + +const MF_FLAGS_EVEN_IF_NO_RESOURCE = 1; +const MF_FLAGS_NO_CREATE_IF_NO_RESOURCE = 2; +const MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE = 4; +const MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED = 8; + +const EISAFLAG_NO_IO_MERGE = 1; +const EISAFLAG_SLOT_IO_FIRST = 2; + +const EISA_NO_MAX_FUNCTION = 0xFF; + +const NUM_EISA_RANGES = 4; + +const APMMENUSUSPEND_DISABLED = 0; +const APMMENUSUSPEND_ENABLED = 1; +const APMMENUSUSPEND_UNDOCKED = 2; +const APMMENUSUSPEND_NOCHANGE = 128; + +//#ifndef NEC_98 +const TCHAR[] + REGSTR_KEY_ISAENUM = "ISAPnP", + REGSTR_KEY_EISAENUM = "EISA", + REGSTR_VAL_EISA_RANGES = "EISARanges", + REGSTR_VAL_EISA_FUNCTIONS = "EISAFunctions", + REGSTR_VAL_EISA_FUNCTIONS_MASK = "EISAFunctionsMask", + REGSTR_VAL_EISA_FLAGS = "EISAFlags", + REGSTR_VAL_EISA_SIMULATE_INT15 = "EISASimulateInt15"; +// #else +// #define REGSTR_KEY_ISAENUM TEXT("C98PnP") +// #define REGSTR_KEY_EISAENUM TEXT("NESA") +// #define REGSTR_VAL_EISA_RANGES TEXT("NESARanges") +// #define REGSTR_VAL_EISA_FUNCTIONS TEXT("NESAFunctions") +// #define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("NESAFunctionsMask") +// #define REGSTR_VAL_EISA_FLAGS TEXT("NESAFlags") +// #define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("NESASimulateInt15") +// #endif + +const TCHAR[] + REGSTR_KEY_CLASS = `Class`, + REGSTR_KEY_CONFIG = `Config`, + REGSTR_KEY_ENUM = `Enum`, + REGSTR_KEY_ROOTENUM = `Root`, + REGSTR_KEY_BIOSENUM = `BIOS`, + REGSTR_KEY_PCMCIAENUM = `PCMCIA`, + REGSTR_KEY_PCIENUM = `PCI`, + REGSTR_KEY_LOGCONFIG = `LogConfig`, + REGSTR_KEY_SYSTEMBOARD = `*PNP0C01`, + REGSTR_KEY_APM = `*PNP0C05`, + REGSTR_KEY_INIUPDATE = `IniUpdate`, + REG_KEY_INSTDEV = `Installed`, + REGSTR_KEY_DOSOPTCDROM = `CD-ROM`, + REGSTR_KEY_DOSOPTMOUSE = `MOUSE`, + REGSTR_DEFAULT_INSTANCE = `0000`, + REGSTR_PATH_MOTHERBOARD = REGSTR_KEY_SYSTEMBOARD ~ `\` ~ REGSTR_DEFAULT_INSTANCE, + REGSTR_PATH_SETUP = `Software\Microsoft\Windows\CurrentVersion`, + REGSTR_PATH_PIFCONVERT = `Software\Microsoft\Windows\CurrentVersion\PIFConvert`, + REGSTR_PATH_MSDOSOPTS = `Software\Microsoft\Windows\CurrentVersion\MS-DOSOptions`, + REGSTR_PATH_MSDOSEMU = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation`, + REGSTR_PATH_NEWDOSBOX = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\AppCompat`, + REGSTR_PATH_RUNONCE = `Software\Microsoft\Windows\CurrentVersion\RunOnce`, + REGSTR_PATH_RUN = `Software\Microsoft\Windows\CurrentVersion\Run`, + REGSTR_PATH_RUNSERVICESONCE = `Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`, + REGSTR_PATH_RUNSERVICES = `Software\Microsoft\Windows\CurrentVersion\RunServices`, + +//#ifndef REGSTR_PATH_EXPLORER /* also in shlobj.h */ + REGSTR_PATH_EXPLORER = `Software\Microsoft\Windows\CurrentVersion\Explorer`, +//#endif + + REGSTR_PATH_DETECT = `Software\Microsoft\Windows\CurrentVersion\Detect`, + REGSTR_PATH_APPPATHS = `Software\Microsoft\Windows\CurrentVersion\App Paths`, + REGSTR_PATH_UNINSTALL = `Software\Microsoft\Windows\CurrentVersion\Uninstall`, + REGSTR_PATH_REALMODENET = `Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net`, + REGSTR_PATH_NETEQUIV = `Software\Microsoft\Windows\CurrentVersion\Network\Equivalent`, + REGSTR_PATH_CVNETWORK = `Software\Microsoft\Windows\CurrentVersion\Network`, + REGSTR_PATH_IDCONFIGDB = `System\CurrentControlSet\Control\IDConfigDB`, + REGSTR_PATH_CLASS = `System\CurrentControlSet\Services\Class`, + REGSTR_PATH_DISPLAYSETTINGS = `Display\Settings`, + REGSTR_PATH_FONTS = `Display\Fonts`, + REGSTR_PATH_ENUM = `Enum`, + REGSTR_PATH_ROOT = `Enum\Root`, + REGSTR_PATH_SERVICES = `System\CurrentControlSet\Services`, + REGSTR_PATH_VXD = `System\CurrentControlSet\Services\VxD`, + REGSTR_PATH_IOS = `System\CurrentControlSet\Services\VxD\IOS`, + REGSTR_PATH_VMM = `System\CurrentControlSet\Services\VxD\VMM`, + REGSTR_PATH_VPOWERD = `System\CurrentControlSet\Services\VxD\VPOWERD`, + REGSTR_PATH_VNETSUP = `System\CurrentControlSet\Services\VxD\VNETSUP`, + REGSTR_PATH_NWREDIR = `System\CurrentControlSet\Services\VxD\NWREDIR`, + REGSTR_PATH_NCPSERVER = `System\CurrentControlSet\Services\NcpServer\Parameters`, + REGSTR_PATH_IOARB = `System\CurrentControlSet\Services\Arbitrators\IOArb`, + REGSTR_PATH_ADDRARB = `System\CurrentControlSet\Services\Arbitrators\AddrArb`, + REGSTR_PATH_DMAARB = `System\CurrentControlSet\Services\Arbitrators\DMAArb`, + REGSTR_PATH_IRQARB = `System\CurrentControlSet\Services\Arbitrators\IRQArb`, + REGSTR_PATH_CODEPAGE = `System\CurrentControlSet\Control\Nls\Codepage`, + REGSTR_PATH_FILESYSTEM = `System\CurrentControlSet\Control\FileSystem`, + REGSTR_PATH_FILESYSTEM_NOVOLTRACK = `System\CurrentControlSet\Control\FileSystem\NoVolTrack`, + REGSTR_PATH_CDFS = `System\CurrentControlSet\Control\FileSystem\CDFS`, + REGSTR_PATH_WINBOOT = `System\CurrentControlSet\Control\WinBoot`, + REGSTR_PATH_INSTALLEDFILES = `System\CurrentControlSet\Control\InstalledFiles`, + REGSTR_PATH_VMM32FILES = `System\CurrentControlSet\Control\VMM32Files`, + + REGSTR_VAL_BITSPERPIXEL = `BitsPerPixel`, + REGSTR_VAL_RESOLUTION = `Resolution`, + REGSTR_VAL_DPILOGICALX = `DPILogicalX`, + REGSTR_VAL_DPILOGICALY = `DPILogicalY`, + REGSTR_VAL_DPIPHYSICALX = `DPIPhysicalX`, + REGSTR_VAL_DPIPHYSICALY = `DPIPhysicalY`, + REGSTR_VAL_REFRESHRATE = `RefreshRate`, + REGSTR_VAL_DISPLAYFLAGS = `DisplayFlags`, + REGSTR_PATH_CONTROLPANEL = `Control Panel`, + REGSTR_PATH_CONTROLSFOLDER = `Software\Microsoft\Windows\CurrentVersion\Controls Folder`, + REGSTR_VAL_DOSCP = `OEMCP`, + REGSTR_VAL_WINCP = `ACP`, + REGSTR_PATH_DYNA_ENUM = `Config Manager\Enum`, + REGSTR_VAL_HARDWARE_KEY = `HardWareKey`, + REGSTR_VAL_ALLOCATION = `Allocation`, + REGSTR_VAL_PROBLEM = `Problem`, + REGSTR_VAL_STATUS = `Status`, + REGSTR_VAL_DONTUSEMEM = `DontAllocLastMem`, + REGSTR_VAL_SYSTEMROOT = `SystemRoot`, + REGSTR_VAL_BOOTCOUNT = `BootCount`, + REGSTR_VAL_REALNETSTART = `RealNetStart`, + REGSTR_VAL_MEDIA = `MediaPath`, + REGSTR_VAL_CONFIG = `ConfigPath`, + REGSTR_VAL_DEVICEPATH = `DevicePath`, + REGSTR_VAL_SRCPATH = `SourcePath`, + REGSTR_VAL_OLDWINDIR = `OldWinDir`, + REGSTR_VAL_SETUPFLAGS = `SetupFlags`, + REGSTR_VAL_REGOWNER = `RegisteredOwner`, + REGSTR_VAL_REGORGANIZATION = `RegisteredOrganization`, + REGSTR_VAL_LICENSINGINFO = `LicensingInfo`, + REGSTR_VAL_OLDMSDOSVER = `OldMSDOSVer`, + REGSTR_VAL_FIRSTINSTALLDATETIME = `FirstInstallDateTime`, + REGSTR_VAL_INSTALLTYPE = `InstallType`, + REGSTR_VAL_WRAPPER = `Wrapper`, + + REGSTR_KEY_SETUP = `\Setup`, + REGSTR_VAL_BOOTDIR = `BootDir`, + REGSTR_VAL_WINBOOTDIR = `WinbootDir`, + REGSTR_VAL_WINDIR = `WinDir`, + REGSTR_VAL_APPINSTPATH = `AppInstallPath`, + REGSTR_PATH_EBD = REGSTR_PATH_SETUP ~ REGSTR_KEY_SETUP ~ `\EBD`, + REGSTR_KEY_EBDFILESLOCAL = `EBDFilesLocale`, + REGSTR_KEY_EBDFILESKEYBOARD = `EBDFilesKeyboard`, + REGSTR_KEY_EBDAUTOEXECBATLOCAL = `EBDAutoexecBatLocale`, + REGSTR_KEY_EBDAUTOEXECBATKEYBOARD = `EBDAutoexecBatKeyboard`, + REGSTR_KEY_EBDCONFIGSYSLOCAL = `EBDConfigSysLocale`, + REGSTR_KEY_EBDCONFIGSYSKEYBOARD = `EBDConfigSysKeyboard`, + REGSTR_VAL_MSDOSMODE = `MSDOSMode`, + REGSTR_VAL_MSDOSMODEDISCARD = `Discard`, + REGSTR_VAL_DOSOPTGLOBALFLAGS = `GlobalFlags`, + REGSTR_VAL_DOSOPTFLAGS = `Flags`, + REGSTR_VAL_OPTORDER = `Order`, + REGSTR_VAL_CONFIGSYS = `Config.Sys`, + REGSTR_VAL_AUTOEXEC = `Autoexec.Bat`, + REGSTR_VAL_STDDOSOPTION = `StdOption`, + REGSTR_VAL_DOSOPTTIP = `TipText`, + + REGSTR_VAL_DOSPAGER = `DOSPager`, + REGSTR_VAL_VXDGROUPS = `VXDGroups`, + REGSTR_VAL_VPOWERDFLAGS = `Flags`, + + REGSTR_VAL_WORKGROUP = `Workgroup`, + REGSTR_VAL_DIRECTHOST = `DirectHost`, + REGSTR_VAL_FILESHARING = `FileSharing`, + REGSTR_VAL_PRINTSHARING = `PrintSharing`, + REGSTR_VAL_FIRSTNETDRIVE = `FirstNetworkDrive`, + REGSTR_VAL_MAXCONNECTIONS = `MaxConnections`, + REGSTR_VAL_APISUPPORT = `APISupport`, + REGSTR_VAL_MAXRETRY = `MaxRetry`, + REGSTR_VAL_MINRETRY = `MinRetry`, + REGSTR_VAL_SUPPORTLFN = `SupportLFN`, + REGSTR_VAL_SUPPORTBURST = `SupportBurst`, + REGSTR_VAL_SUPPORTTUNNELLING = `SupportTunnelling`, + REGSTR_VAL_FULLTRACE = `FullTrace`, + REGSTR_VAL_READCACHING = `ReadCaching`, + REGSTR_VAL_SHOWDOTS = `ShowDots`, + REGSTR_VAL_GAPTIME = `GapTime`, + REGSTR_VAL_SEARCHMODE = `SearchMode`, + REGSTR_VAL_SHELLVERSION = `ShellVersion`, + REGSTR_VAL_MAXLIP = `MaxLIP`, + REGSTR_VAL_PRESERVECASE = `PreserveCase`, + REGSTR_VAL_OPTIMIZESFN = `OptimizeSFN`, + REGSTR_VAL_NCP_BROWSEMASTER = `BrowseMaster`, + REGSTR_VAL_NCP_USEPEERBROWSING = `Use_PeerBrowsing`, + REGSTR_VAL_NCP_USESAP = `Use_Sap`, + REGSTR_VAL_WIN31FILESYSTEM = `Win31FileSystem`, + REGSTR_VAL_PRESERVELONGNAMES = `PreserveLongNames`, + REGSTR_VAL_DRIVEWRITEBEHIND = `DriveWriteBehind`, + REGSTR_VAL_ASYNCFILECOMMIT = `AsyncFileCommit`, + REGSTR_VAL_PATHCACHECOUNT = `PathCache`, + REGSTR_VAL_NAMECACHECOUNT = `NameCache`, + REGSTR_VAL_CONTIGFILEALLOC = `ContigFileAllocSize`, + REGSTR_VAL_VOLIDLETIMEOUT = `VolumeIdleTimeout`, + REGSTR_VAL_BUFFIDLETIMEOUT = `BufferIdleTimeout`, + REGSTR_VAL_BUFFAGETIMEOUT = `BufferAgeTimeout`, + REGSTR_VAL_NAMENUMERICTAIL = `NameNumericTail`, + REGSTR_VAL_READAHEADTHRESHOLD = `ReadAheadThreshold`, + REGSTR_VAL_DOUBLEBUFFER = `DoubleBuffer`, + REGSTR_VAL_SOFTCOMPATMODE = `SoftCompatMode`, + REGSTR_VAL_DRIVESPINDOWN = `DriveSpinDown`, + REGSTR_VAL_FORCEPMIO = `ForcePMIO`, + REGSTR_VAL_FORCERMIO = `ForceRMIO`, + REGSTR_VAL_LASTBOOTPMDRVS = `LastBootPMDrvs`, + REGSTR_VAL_VIRTUALHDIRQ = `VirtualHDIRQ`, + REGSTR_VAL_SRVNAMECACHECOUNT = `ServerNameCacheMax`, + REGSTR_VAL_SRVNAMECACHE = `ServerNameCache`, + REGSTR_VAL_SRVNAMECACHENETPROV = `ServerNameCacheNumNets`, + REGSTR_VAL_AUTOMOUNT = `AutoMountDrives`, + REGSTR_VAL_COMPRESSIONMETHOD = `CompressionAlgorithm`, + REGSTR_VAL_COMPRESSIONTHRESHOLD = `CompressionThreshold`, + REGSTR_VAL_CDCACHESIZE = `CacheSize`, + REGSTR_VAL_CDPREFETCH = `Prefetch`, + REGSTR_VAL_CDPREFETCHTAIL = `PrefetchTail`, + REGSTR_VAL_CDRAWCACHE = `RawCache`, + REGSTR_VAL_CDEXTERRORS = `ExtendedErrors`, + REGSTR_VAL_CDSVDSENSE = `SVDSense`, + REGSTR_VAL_CDSHOWVERSIONS = `ShowVersions`, + REGSTR_VAL_CDCOMPATNAMES = `MSCDEXCompatNames`, + REGSTR_VAL_CDNOREADAHEAD = `NoReadAhead`, + REGSTR_VAL_SCSI = `SCSI\`, + REGSTR_VAL_ESDI = `ESDI\`, + REGSTR_VAL_FLOP = `FLOP\`, + REGSTR_VAL_DISK = `GenDisk`, + REGSTR_VAL_CDROM = `GenCD`, + REGSTR_VAL_TAPE = `TAPE`, + REGSTR_VAL_SCANNER = `SCANNER`, + REGSTR_VAL_FLOPPY = `FLOPPY`, + REGSTR_VAL_SCSITID = `SCSITargetID`, + REGSTR_VAL_SCSILUN = `SCSILUN`, + REGSTR_VAL_REVLEVEL = `RevisionLevel`, + REGSTR_VAL_PRODUCTID = `ProductId`, + REGSTR_VAL_PRODUCTTYPE = `ProductType`, + REGSTR_VAL_DEVTYPE = `DeviceType`, + REGSTR_VAL_REMOVABLE = `Removable`, + REGSTR_VAL_CURDRVLET = `CurrentDriveLetterAssignment`, + REGSTR_VAL_USRDRVLET = `UserDriveLetterAssignment`, + REGSTR_VAL_SYNCDATAXFER = `SyncDataXfer`, + REGSTR_VAL_AUTOINSNOTE = `AutoInsertNotification`, + REGSTR_VAL_DISCONNECT = `Disconnect`, + REGSTR_VAL_INT13 = `Int13`, + REGSTR_VAL_PMODE_INT13 = `PModeInt13`, + REGSTR_VAL_USERSETTINGS = `AdapterSettings`, + REGSTR_VAL_NOIDE = `NoIDE`, + REGSTR_VAL_DISKCLASSNAME = `DiskDrive`, + REGSTR_VAL_CDROMCLASSNAME = `CDROM`, + REGSTR_VAL_FORCELOAD = `ForceLoadPD`, + REGSTR_VAL_FORCEFIFO = `ForceFIFO`, + REGSTR_VAL_FORCECL = `ForceChangeLine`, + REGSTR_VAL_NOUSECLASS = `NoUseClass`, + REGSTR_VAL_NOINSTALLCLASS = `NoInstallClass`, + REGSTR_VAL_NODISPLAYCLASS = `NoDisplayClass`, + REGSTR_VAL_SILENTINSTALL = `SilentInstall`, + REGSTR_KEY_PCMCIA_CLASS = `PCMCIA`, + REGSTR_KEY_SCSI_CLASS = `SCSIAdapter`, + REGSTR_KEY_PORTS_CLASS = `ports`, + REGSTR_KEY_MEDIA_CLASS = `MEDIA`, + REGSTR_KEY_DISPLAY_CLASS = `Display`, + REGSTR_KEY_KEYBOARD_CLASS = `Keyboard`, + REGSTR_KEY_MOUSE_CLASS = `Mouse`, + REGSTR_KEY_MONITOR_CLASS = `Monitor`, + REGSTR_VAL_PCMCIA_OPT = `Options`, + REGSTR_VAL_PCMCIA_MEM = `Memory`, + REGSTR_VAL_PCMCIA_ALLOC = `AllocMemWin`, + REGSTR_VAL_PCMCIA_ATAD = `ATADelay`, + REGSTR_VAL_PCMCIA_SIZ = `MinRegionSize`, + REGSTR_VAL_P1284MDL = `Model`, + REGSTR_VAL_P1284MFG = `Manufacturer`, + REGSTR_VAL_ISAPNP = `ISAPNP`, + REGSTR_VAL_ISAPNP_RDP_OVERRIDE = `RDPOverRide`, + REGSTR_VAL_PCI = `PCI`, + REGSTR_PCI_OPTIONS = `Options`, + REGSTR_PCI_DUAL_IDE = `PCIDualIDE`, + + REGSTR_KEY_CRASHES = `Crashes`, + REGSTR_KEY_DANGERS = `Dangers`, + REGSTR_KEY_DETMODVARS = `DetModVars`, + REGSTR_KEY_NDISINFO = `NDISInfo`, + REGSTR_VAL_PROTINIPATH = `ProtIniPath`, + REGSTR_VAL_RESOURCES = `Resources`, + REGSTR_VAL_CRASHFUNCS = `CrashFuncs`, + REGSTR_VAL_CLASS = `Class`, + REGSTR_VAL_DEVDESC = `DeviceDesc`, + REGSTR_VAL_BOOTCONFIG = `BootConfig`, + REGSTR_VAL_DETFUNC = `DetFunc`, + REGSTR_VAL_DETFLAGS = `DetFlags`, + REGSTR_VAL_COMPATIBLEIDS = `CompatibleIDs`, + REGSTR_VAL_DETCONFIG = `DetConfig`, + REGSTR_VAL_VERIFYKEY = `VerifyKey`, + REGSTR_VAL_COMINFO = `ComInfo`, + REGSTR_VAL_INFNAME = `InfName`, + REGSTR_VAL_CARDSPECIFIC = `CardSpecific`, + REGSTR_VAL_NETOSTYPE = `NetOSType`, + REGSTR_DATA_NETOS_NDIS = `NDIS`, + REGSTR_DATA_NETOS_ODI = `ODI`, + REGSTR_DATA_NETOS_IPX = `IPX`, + REGSTR_VAL_MFG = `Mfg`, + REGSTR_VAL_SCAN_ONLY_FIRST = `ScanOnlyFirstDrive`, + REGSTR_VAL_SHARE_IRQ = `ForceIRQSharing`, + REGSTR_VAL_NONSTANDARD_ATAPI = `NonStandardATAPI`, + REGSTR_VAL_IDE_FORCE_SERIALIZE = `ForceSerialization`, + REGSTR_VAL_HWREV = `HWRevision`, + REGSTR_VAL_ENABLEINTS = `EnableInts`, + + REGSTR_VAL_APMBIOSVER = `APMBiosVer`, + REGSTR_VAL_APMFLAGS = `APMFlags`, + REGSTR_VAL_SLSUPPORT = `SLSupport`, + REGSTR_VAL_MACHINETYPE = `MachineType`, + REGSTR_VAL_SETUPMACHINETYPE = `SetupMachineType`, + REGSTR_MACHTYPE_UNKNOWN = `Unknown`, + REGSTR_MACHTYPE_IBMPC = `IBM PC`, + REGSTR_MACHTYPE_IBMPCJR = `IBM PCjr`, + REGSTR_MACHTYPE_IBMPCCONV = `IBM PC Convertible`, + REGSTR_MACHTYPE_IBMPCXT = `IBM PC/XT`, + REGSTR_MACHTYPE_IBMPCXT_286 = `IBM PC/XT 286`, + REGSTR_MACHTYPE_IBMPCAT = `IBM PC/AT`, + REGSTR_MACHTYPE_IBMPS2_25 = `IBM PS/2-25`, + REGSTR_MACHTYPE_IBMPS2_30_286 = `IBM PS/2-30 286`, + REGSTR_MACHTYPE_IBMPS2_30 = `IBM PS/2-30`, + REGSTR_MACHTYPE_IBMPS2_50 = `IBM PS/2-50`, + REGSTR_MACHTYPE_IBMPS2_50Z = `IBM PS/2-50Z`, + REGSTR_MACHTYPE_IBMPS2_55SX = `IBM PS/2-55SX`, + REGSTR_MACHTYPE_IBMPS2_60 = `IBM PS/2-60`, + REGSTR_MACHTYPE_IBMPS2_65SX = `IBM PS/2-65SX`, + REGSTR_MACHTYPE_IBMPS2_70 = `IBM PS/2-70`, + REGSTR_MACHTYPE_IBMPS2_P70 = `IBM PS/2-P70`, + REGSTR_MACHTYPE_IBMPS2_70_80 = `IBM PS/2-70/80`, + REGSTR_MACHTYPE_IBMPS2_80 = `IBM PS/2-80`, + REGSTR_MACHTYPE_IBMPS2_90 = `IBM PS/2-90`, + REGSTR_MACHTYPE_IBMPS1 = `IBM PS/1`, + REGSTR_MACHTYPE_PHOENIX_PCAT = `Phoenix PC/AT Compatible`, + REGSTR_MACHTYPE_HP_VECTRA = `HP Vectra`, + REGSTR_MACHTYPE_ATT_PC = `AT&T PC`, + REGSTR_MACHTYPE_ZENITH_PC = `Zenith PC`, + REGSTR_VAL_APMMENUSUSPEND = `APMMenuSuspend`, + + REGSTR_VAL_BUSTYPE = `BusType`, + REGSTR_VAL_CPU = `CPU`, + REGSTR_VAL_NDP = `NDP`, + REGSTR_VAL_PNPBIOSVER = `PnPBIOSVer`, + REGSTR_VAL_PNPSTRUCOFFSET = `PnPStrucOffset`, + REGSTR_VAL_PCIBIOSVER = `PCIBIOSVer`, + REGSTR_VAL_HWMECHANISM = `HWMechanism`, + REGSTR_VAL_LASTPCIBUSNUM = `LastPCIBusNum`, + REGSTR_VAL_CONVMEM = `ConvMem`, + REGSTR_VAL_EXTMEM = `ExtMem`, + REGSTR_VAL_COMPUTERNAME = `ComputerName`, + REGSTR_VAL_BIOSNAME = `BIOSName`, + REGSTR_VAL_BIOSVERSION = `BIOSVersion`, + REGSTR_VAL_BIOSDATE = `BIOSDate`, + REGSTR_VAL_MODEL = `Model`, + REGSTR_VAL_SUBMODEL = `Submodel`, + REGSTR_VAL_REVISION = `Revision`, + REGSTR_VAL_FIFODEPTH = `FIFODepth`, + REGSTR_VAL_RDINTTHRESHOLD = `RDIntThreshold`, + REGSTR_VAL_WRINTTHRESHOLD = `WRIntThreshold`, + REGSTR_VAL_PRIORITY = `Priority`, + REGSTR_VAL_DRIVER = `Driver`, + REGSTR_VAL_FUNCDESC = `FunctionDesc`, + REGSTR_VAL_FORCEDCONFIG = `ForcedConfig`, + REGSTR_VAL_CONFIGFLAGS = `ConfigFlags`, + REGSTR_VAL_CSCONFIGFLAGS = `CSConfigFlags`, + + REGSTR_VAL_ROOT_DEVNODE = `HTREE\ROOT\0`, + REGSTR_VAL_RESERVED_DEVNODE = `HTREE\RESERVED\0`, + REGSTR_PATH_READDATAPORT = REGSTR_KEY_ISAENUM ~ `\ReadDataPort\0`, + REGSTR_PATH_MULTI_FUNCTION = `MF`, + REGSTR_VAL_RESOURCE_MAP = `ResourceMap`, + REGSTR_PATH_CHILD_PREFIX = `Child`, + REGSTR_VAL_MF_FLAGS = `MFFlags`, + REGSTR_VAL_DRVDESC = `DriverDesc`, + REGSTR_VAL_DEVLOADER = `DevLoader`, + REGSTR_VAL_STATICVXD = `StaticVxD`, + REGSTR_VAL_PROPERTIES = `Properties`, + REGSTR_VAL_MANUFACTURER = `Manufacturer`, + REGSTR_VAL_EXISTS = `Exists`, + REGSTR_VAL_CMENUMFLAGS = `CMEnumFlags`, + REGSTR_VAL_CMDRIVFLAGS = `CMDrivFlags`, + REGSTR_VAL_ENUMERATOR = `Enumerator`, + REGSTR_VAL_DEVICEDRIVER = `DeviceDriver`, + REGSTR_VAL_PORTNAME = `PortName`, + REGSTR_VAL_INFPATH = `InfPath`, + REGSTR_VAL_INFSECTION = `InfSection`, + REGSTR_VAL_POLLING = `Polling`, + REGSTR_VAL_DONTLOADIFCONFLICT = `DontLoadIfConflict`, + REGSTR_VAL_PORTSUBCLASS = `PortSubClass`, + REGSTR_VAL_NETCLEAN = `NetClean`, + REGSTR_VAL_IDE_NO_SERIALIZE = `IDENoSerialize`, + REGSTR_VAL_NOCMOSORFDPT = `NoCMOSorFDPT`, + REGSTR_VAL_COMVERIFYBASE = `COMVerifyBase`, + REGSTR_KEY_OVERRIDE = `Override`, + REGSTR_VAL_CONFIGMG = `CONFIGMG`, + REGSTR_VAL_SYSDM = `SysDM`, + REGSTR_VAL_SYSDMFUNC = `SysDMFunc`, + REGSTR_VAL_PRIVATE = `Private`, + REGSTR_VAL_PRIVATEFUNC = `PrivateFunc`, + REGSTR_VAL_DETECT = `Detect`, + REGSTR_VAL_DETECTFUNC = `DetectFunc`, + REGSTR_VAL_ASKFORCONFIG = `AskForConfig`, + REGSTR_VAL_ASKFORCONFIGFUNC = `AskForConfigFunc`, + REGSTR_VAL_WAITFORUNDOCK = `WaitForUndock`, + REGSTR_VAL_WAITFORUNDOCKFUNC = `WaitForUndockFunc`, + REGSTR_VAL_REMOVEROMOKAY = `RemoveRomOkay`, + REGSTR_VAL_REMOVEROMOKAYFUNC = `RemoveRomOkayFunc`, + REGSTR_VAL_CURCONFIG = `CurrentConfig`, + REGSTR_VAL_FRIENDLYNAME = `FriendlyName`, + REGSTR_VAL_CURRENTCONFIG = `CurrentConfig`, + REGSTR_VAL_MAP = `Map`, + REGSTR_VAL_ID = `CurrentID`, + REGSTR_VAL_DOCKED = `CurrentDockedState`, + REGSTR_VAL_CHECKSUM = `CurrentChecksum`, + REGSTR_VAL_HWDETECT = `HardwareDetect`, + REGSTR_VAL_INHIBITRESULTS = `InhibitResults`, + REGSTR_VAL_PROFILEFLAGS = `ProfileFlags`, + REGSTR_KEY_PCMCIA = `PCMCIA\`, + REGSTR_KEY_PCUNKNOWN = `UNKNOWN_MANUFACTURER`, + REGSTR_VAL_PCSSDRIVER = `Driver`, + REGSTR_KEY_PCMTD = `MTD-`, + REGSTR_VAL_PCMTDRIVER = `MTD`, + REGSTR_VAL_HARDWAREID = `HardwareID`, + REGSTR_VAL_INSTALLER = `Installer`, + REGSTR_VAL_INSICON = `Icon`, + REGSTR_VAL_ENUMPROPPAGES = `EnumPropPages`, + REGSTR_VAL_BASICPROPERTIES = `BasicProperties`, + REGSTR_VAL_PRIVATEPROBLEM = `PrivateProblem`, + REGSTR_KEY_CURRENT = `Current`, + REGSTR_KEY_DEFAULT = `Default`, + REGSTR_KEY_MODES = `Modes`, + REGSTR_VAL_MODE = `Mode`, + REGSTR_VAL_BPP = `BPP`, + REGSTR_VAL_HRES = `HRes`, + REGSTR_VAL_VRES = `VRes`, + REGSTR_VAL_FONTSIZE = `FontSize`, + REGSTR_VAL_DRV = `drv`, + REGSTR_VAL_GRB = `grb`, + REGSTR_VAL_VDD = `vdd`, + REGSTR_VAL_VER = `Ver`, + REGSTR_VAL_MAXRES = `MaxResolution`, + REGSTR_VAL_DPMS = `DPMS`, + REGSTR_VAL_RESUMERESET = `ResumeReset`, + REGSTR_VAL_DESCRIPTION = `Description`, + REGSTR_KEY_SYSTEM = `System`, + REGSTR_KEY_USER = `User`, + REGSTR_VAL_DPI = `dpi`, + REGSTR_VAL_PCICOPTIONS = `PCICOptions`, + + REGSTR_VAL_PCICIRQMAP = `PCICIRQMap`, + REGSTR_PATH_APPEARANCE = `Control Panel\Appearance`, + REGSTR_PATH_LOOKSCHEMES = `Control Panel\Appearance\Schemes`, + REGSTR_VAL_CUSTOMCOLORS = `CustomColors`, + REGSTR_PATH_SCREENSAVE = `Control Panel\Desktop`, + REGSTR_VALUE_USESCRPASSWORD = `ScreenSaveUsePassword`, + REGSTR_VALUE_SCRPASSWORD = `ScreenSave_Data`, + REGSTR_VALUE_LOWPOWERTIMEOUT = `ScreenSaveLowPowerTimeout`, + REGSTR_VALUE_POWEROFFTIMEOUT = `ScreenSavePowerOffTimeout`, + REGSTR_VALUE_LOWPOWERACTIVE = `ScreenSaveLowPowerActive`, + REGSTR_VALUE_POWEROFFACTIVE = `ScreenSavePowerOffActive`, + REGSTR_PATH_WINDOWSAPPLETS = `Software\Microsoft\Windows\CurrentVersion\Applets`, + REGSTR_PATH_SYSTRAY = `Software\Microsoft\Windows\CurrentVersion\Applets\SysTray`, + REGSTR_VAL_SYSTRAYSVCS = `Services`, + REGSTR_VAL_SYSTRAYBATFLAGS = `PowerFlags`, + REGSTR_VAL_SYSTRAYPCCARDFLAGS = `PCMCIAFlags`, + REGSTR_PATH_NETWORK_USERSETTINGS = `Network`, + REGSTR_KEY_NETWORK_PERSISTENT = `\Persistent`, + REGSTR_KEY_NETWORK_RECENT = `\Recent`, + REGSTR_VAL_REMOTE_PATH = `RemotePath`, + REGSTR_VAL_USER_NAME = `UserName`, + REGSTR_VAL_PROVIDER_NAME = `ProviderName`, + REGSTR_VAL_CONNECTION_TYPE = `ConnectionType`, + REGSTR_VAL_UPGRADE = `Upgrade`, + REGSTR_KEY_LOGON = `\Logon`, + REGSTR_VAL_MUSTBEVALIDATED = `MustBeValidated`, + REGSTR_VAL_RUNLOGINSCRIPT = `ProcessLoginScript`, + REGSTR_KEY_NETWORKPROVIDER = `\NetworkProvider`, + REGSTR_PATH_NW32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\NWNP32` ~ REGSTR_KEY_NETWORKPROVIDER, + REGSTR_PATH_MS32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\MSNP32` ~ REGSTR_KEY_NETWORKPROVIDER, + REGSTR_VAL_AUTHENT_AGENT = `AuthenticatingAgent`, + REGSTR_VAL_PREFREDIR = `PreferredRedir`, + REGSTR_VAL_AUTOSTART = `AutoStart`, + REGSTR_VAL_AUTOLOGON = `AutoLogon`, + REGSTR_VAL_NETCARD = `Netcard`, + REGSTR_VAL_TRANSPORT = `Transport`, + REGSTR_VAL_DYNAMIC = `Dynamic`, + REGSTR_VAL_TRANSITION = `Transition`, + REGSTR_VAL_STATICDRIVE = `StaticDrive`, + REGSTR_VAL_LOADHI = `LoadHi`, + REGSTR_VAL_LOADRMDRIVERS = `LoadRMDrivers`, + REGSTR_VAL_SETUPN = `SetupN`, + REGSTR_VAL_SETUPNPATH = `SetupNPath`, + REGSTR_VAL_WRKGRP_FORCEMAPPING = `WrkgrpForceMapping`, + REGSTR_VAL_WRKGRP_REQUIRED = `WrkgrpRequired`, + REGSTR_PATH_CURRENT_CONTROL_SET = `System\CurrentControlSet\Control`, + REGSTR_VAL_CURRENT_USER = `Current User`, + REGSTR_PATH_PWDPROVIDER = `System\CurrentControlSet\Control\PwdProvider`, + REGSTR_VAL_PWDPROVIDER_PATH = `ProviderPath`, + REGSTR_VAL_PWDPROVIDER_DESC = `Description`, + REGSTR_VAL_PWDPROVIDER_CHANGEPWD = `ChangePassword`, + REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND = `ChangePasswordHwnd`, + REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS = `GetPasswordStatus`, + REGSTR_VAL_PWDPROVIDER_ISNP = `NetworkProvider`, + REGSTR_VAL_PWDPROVIDER_CHANGEORDER = `ChangeOrder`, + REGSTR_PATH_POLICIES = `Software\Microsoft\Windows\CurrentVersion\Policies`, + REGSTR_PATH_UPDATE = `System\CurrentControlSet\Control\Update`, + REGSTR_VALUE_ENABLE = `Enable`, + REGSTR_VALUE_VERBOSE = `Verbose`, + REGSTR_VALUE_NETPATH = `NetworkPath`, + REGSTR_VALUE_DEFAULTLOC = `UseDefaultNetLocation`, + REGSTR_KEY_NETWORK = `Network`, +// [Redefined] REGSTR_KEY_SYSTEM = `System`) + REGSTR_KEY_PRINTERS = `Printers`, + REGSTR_KEY_WINOLDAPP = `WinOldApp`, + REGSTR_VAL_NOFILESHARING = `NoFileSharing`, + REGSTR_VAL_NOPRINTSHARING = `NoPrintSharing`, + REGSTR_VAL_NOFILESHARINGCTRL = `NoFileSharingControl`, + REGSTR_VAL_NOPRINTSHARINGCTRL = `NoPrintSharingControl`, + REGSTR_VAL_HIDESHAREPWDS = `HideSharePwds`, + REGSTR_VAL_DISABLEPWDCACHING = `DisablePwdCaching`, + REGSTR_VAL_ALPHANUMPWDS = `AlphanumPwds`, + REGSTR_VAL_NETSETUP_DISABLE = `NoNetSetup`, + REGSTR_VAL_NETSETUP_NOCONFIGPAGE = `NoNetSetupConfigPage`, + REGSTR_VAL_NETSETUP_NOIDPAGE = `NoNetSetupIDPage`, + REGSTR_VAL_NETSETUP_NOSECURITYPAGE = `NoNetSetupSecurityPage`, + REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE = `NoVirtMemPage`, + REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE = `NoDevMgrPage`, + REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE = `NoConfigPage`, + REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE = `NoFileSysPage`, + REGSTR_VAL_DISPCPL_NODISPCPL = `NoDispCPL`, + REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE = `NoDispBackgroundPage`, + REGSTR_VAL_DISPCPL_NOSCRSAVPAGE = `NoDispScrSavPage`, + REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE = `NoDispAppearancePage`, + REGSTR_VAL_DISPCPL_NOSETTINGSPAGE = `NoDispSettingsPage`, + REGSTR_VAL_SECCPL_NOSECCPL = `NoSecCPL`, + REGSTR_VAL_SECCPL_NOPWDPAGE = `NoPwdPage`, + REGSTR_VAL_SECCPL_NOADMINPAGE = `NoAdminPage`, + REGSTR_VAL_SECCPL_NOPROFILEPAGE = `NoProfilePage`, + REGSTR_VAL_PRINTERS_HIDETABS = `NoPrinterTabs`, + REGSTR_VAL_PRINTERS_NODELETE = `NoDeletePrinter`, + REGSTR_VAL_PRINTERS_NOADD = `NoAddPrinter`, + REGSTR_VAL_WINOLDAPP_DISABLED = `Disabled`, + REGSTR_VAL_WINOLDAPP_NOREALMODE = `NoRealMode`, + REGSTR_VAL_NOENTIRENETWORK = `NoEntireNetwork`, + REGSTR_VAL_NOWORKGROUPCONTENTS = `NoWorkgroupContents`, + REGSTR_VAL_MINPWDLEN = `MinPwdLen`, + REGSTR_VAL_PWDEXPIRATION = `PwdExpiration`, + REGSTR_VAL_WIN31PROVIDER = `Win31Provider`, + REGSTR_VAL_DISABLEREGTOOLS = `DisableRegistryTools`, + REGSTR_PATH_WINLOGON = `Software\Microsoft\Windows\CurrentVersion\Winlogon`, + REGSTR_VAL_LEGALNOTICECAPTION = `LegalNoticeCaption`, + REGSTR_VAL_LEGALNOTICETEXT = `LegalNoticeText`, + REGSTR_VAL_RESTRICTRUN = `RestrictRun`, + REGSTR_KEY_POL_USERS = `Users`, + REGSTR_KEY_POL_COMPUTERS = `Computers`, + REGSTR_KEY_POL_USERGROUPS = `UserGroups`, + REGSTR_KEY_POL_DEFAULT = `.default`, + REGSTR_KEY_POL_USERGROUPDATA = `GroupData\UserGroups\Priority`, + REGSTR_PATH_TIMEZONE = `System\CurrentControlSet\Control\TimeZoneInformation`, + REGSTR_VAL_TZBIAS = `Bias`, + REGSTR_VAL_TZDLTBIAS = `DaylightBias`, + REGSTR_VAL_TZSTDBIAS = `StandardBias`, + REGSTR_VAL_TZACTBIAS = `ActiveTimeBias`, + REGSTR_VAL_TZDLTFLAG = `DaylightFlag`, + REGSTR_VAL_TZSTDSTART = `StandardStart`, + REGSTR_VAL_TZDLTSTART = `DaylightStart`, + REGSTR_VAL_TZDLTNAME = `DaylightName`, + REGSTR_VAL_TZSTDNAME = `StandardName`, + REGSTR_VAL_TZNOCHANGESTART = `NoChangeStart`, + REGSTR_VAL_TZNOCHANGEEND = `NoChangeEnd`, + REGSTR_VAL_TZNOAUTOTIME = `DisableAutoDaylightTimeSet`, + REGSTR_PATH_FLOATINGPOINTPROCESSOR = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor`, + REGSTR_PATH_FLOATINGPOINTPROCESSOR0 = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0`, + REGSTR_PATH_COMPUTRNAME = `System\CurrentControlSet\Control\ComputerName\ComputerName`, + REGSTR_VAL_COMPUTRNAME = `ComputerName`, + REGSTR_PATH_SHUTDOWN = `System\CurrentControlSet\Control\Shutdown`, + REGSTR_VAL_FORCEREBOOT = `ForceReboot`, + REGSTR_VAL_SETUPPROGRAMRAN = `SetupProgramRan`, + REGSTR_VAL_DOES_POLLING = `PollingSupportNeeded`, + REGSTR_PATH_KNOWNDLLS = `System\CurrentControlSet\Control\SessionManager\KnownDLLs`, + REGSTR_PATH_KNOWN16DLLS = `System\CurrentControlSet\Control\SessionManager\Known16DLLs`, + REGSTR_PATH_CHECKVERDLLS = `System\CurrentControlSet\Control\SessionManager\CheckVerDLLs`, + REGSTR_PATH_WARNVERDLLS = `System\CurrentControlSet\Control\SessionManager\WarnVerDLLs`, + REGSTR_PATH_HACKINIFILE = `System\CurrentControlSet\Control\SessionManager\HackIniFiles`, + REGSTR_PATH_CHECKBADAPPS = `System\CurrentControlSet\Control\SessionManager\CheckBadApps`, + REGSTR_PATH_APPPATCH = `System\CurrentControlSet\Control\SessionManager\AppPatches`, + REGSTR_PATH_KNOWNVXDS = `System\CurrentControlSet\Control\SessionManager\KnownVxDs`, + REGSTR_VAL_UNINSTALLER_DISPLAYNAME = `DisplayName`, + REGSTR_VAL_UNINSTALLER_COMMANDLINE = `UninstallString`, + REGSTR_PATH_DESKTOP = REGSTR_PATH_SCREENSAVE, + REGSTR_PATH_MOUSE = `Control Panel\Mouse`, + REGSTR_PATH_KEYBOARD = `Control Panel\Keyboard`, + REGSTR_PATH_COLORS = `Control Panel\Colors`, + REGSTR_PATH_SOUND = `Control Panel\Sound`, + REGSTR_PATH_METRICS = `Control Panel\Desktop\WindowMetrics`, + REGSTR_PATH_ICONS = `Control Panel\Icons`, + REGSTR_PATH_CURSORS = `Control Panel\Cursors`, + REGSTR_PATH_CHECKDISK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive`, + REGSTR_PATH_CHECKDISKSET = `Settings`, + REGSTR_PATH_CHECKDISKUDRVS = `NoUnknownDDErrDrvs`, + REGSTR_PATH_FAULT = `Software\Microsoft\Windows\CurrentVersion\Fault`, + REGSTR_VAL_FAULT_LOGFILE = `LogFile`, + REGSTR_PATH_AEDEBUG = `Software\Microsoft\Windows NT\CurrentVersion\AeDebug`, + REGSTR_VAL_AEDEBUG_DEBUGGER = `Debugger`, + REGSTR_VAL_AEDEBUG_AUTO = `Auto`, + REGSTR_PATH_GRPCONV = `Software\Microsoft\Windows\CurrentVersion\GrpConv`, + REGSTR_VAL_REGITEMDELETEMESSAGE = `Removal Message`, + REGSTR_PATH_LASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastCheck`, + REGSTR_PATH_LASTOPTIMIZE = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastOptimize`, + REGSTR_PATH_LASTBACKUP = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastBackup`, + REGSTR_PATH_CHKLASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastCheck`, + REGSTR_PATH_CHKLASTSURFAN = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastSurfaceAnalysis`, + REGSTR_KEY_SHARES = `Software\Microsoft\Windows\CurrentVersion\Network\LanMan`, + REGSTR_VAL_SHARES_FLAGS = `Flags`, + REGSTR_VAL_SHARES_TYPE = `Type`, + REGSTR_VAL_SHARES_PATH = `Path`, + REGSTR_VAL_SHARES_REMARK = `Remark`, + REGSTR_VAL_SHARES_RW_PASS = `Parm1`, + REGSTR_VAL_SHARES_RO_PASS = `Parm2`, + REGSTR_PATH_PRINT = `System\CurrentControlSet\Control\Print`, + REGSTR_PATH_PRINTERS = `System\CurrentControlSet\Control\Print\Printers`, + REGSTR_PATH_PROVIDERS = `System\CurrentControlSet\Control\Print\Providers`, + REGSTR_PATH_MONITORS = `System\CurrentControlSet\Control\Print\Monitors`, + REGSTR_PATH_ENVIRONMENTS = `System\CurrentControlSet\Control\Print\Environments`, + REGSTR_VAL_START_ON_BOOT = `StartOnBoot`, + REGSTR_VAL_PRINTERS_MASK = `PrintersMask`, + REGSTR_VAL_DOS_SPOOL_MASK = `DOSSpoolMask`, + REGSTR_KEY_CURRENT_ENV = `\Windows 4.0`, + REGSTR_KEY_DRIVERS = `\Drivers`, + REGSTR_KEY_PRINT_PROC = `\Print Processors`, + REGSTR_PATH_EVENTLABELS = `AppEvents\EventLabels`, + REGSTR_PATH_SCHEMES = `AppEvents\Schemes`, + REGSTR_PATH_APPS = REGSTR_PATH_SCHEMES ~ `\Apps`, + REGSTR_PATH_APPS_DEFAULT = REGSTR_PATH_SCHEMES ~ `\Apps\.Default`, + REGSTR_PATH_NAMES = REGSTR_PATH_SCHEMES ~ `\Names`, + REGSTR_PATH_MULTIMEDIA = REGSTR_PATH_SETUP ~ `\Multimedia`, + REGSTR_PATH_MULTIMEDIA_AUDIO = `Software\Microsoft\Multimedia\Audio`, + REGSTR_PATH_MEDIARESOURCES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaResources`, + REGSTR_PATH_MEDIAPROPERTIES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaProperties`, + REGSTR_PATH_PRIVATEPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PrivateProperties`, + REGSTR_PATH_PUBLICPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PublicProperties`, + REGSTR_PATH_JOYOEM = REGSTR_PATH_PRIVATEPROPERTIES ~ `\Joystick\OEM`, + REGSTR_PATH_JOYCONFIG = REGSTR_PATH_MEDIARESOURCES ~ `\Joystick`, + REGSTR_KEY_JOYCURR = `CurrentJoystickSettings`, + REGSTR_KEY_JOYSETTINGS = `JoystickSettings`, + REGSTR_VAL_JOYUSERVALUES = `JoystickUserValues`, + REGSTR_VAL_JOYCALLOUT = `JoystickCallout`, + REGSTR_VAL_JOYNCONFIG = `Joystick%dConfiguration`, + REGSTR_VAL_JOYNOEMNAME = `Joystick%dOEMName`, + REGSTR_VAL_JOYNOEMCALLOUT = `Joystick%dOEMCallout`, + REGSTR_VAL_JOYOEMCALLOUT = `OEMCallout`, + REGSTR_VAL_JOYOEMNAME = `OEMName`, + REGSTR_VAL_JOYOEMDATA = `OEMData`, + REGSTR_VAL_JOYOEMXYLABEL = `OEMXYLabel`, + REGSTR_VAL_JOYOEMZLABEL = `OEMZLabel`, + REGSTR_VAL_JOYOEMRLABEL = `OEMRLabel`, + REGSTR_VAL_JOYOEMPOVLABEL = `OEMPOVLabel`, + REGSTR_VAL_JOYOEMULABEL = `OEMULabel`, + REGSTR_VAL_JOYOEMVLABEL = `OEMVLabel`, + REGSTR_VAL_JOYOEMTESTMOVEDESC = `OEMTestMoveDesc`, + REGSTR_VAL_JOYOEMTESTBUTTONDESC = `OEMTestButtonDesc`, + REGSTR_VAL_JOYOEMTESTMOVECAP = `OEMTestMoveCap`, + REGSTR_VAL_JOYOEMTESTBUTTONCAP = `OEMTestButtonCap`, + REGSTR_VAL_JOYOEMTESTWINCAP = `OEMTestWinCap`, + REGSTR_VAL_JOYOEMCALCAP = `OEMCalCap`, + REGSTR_VAL_JOYOEMCALWINCAP = `OEMCalWinCap`, + REGSTR_VAL_JOYOEMCAL1 = `OEMCal1`, + REGSTR_VAL_JOYOEMCAL2 = `OEMCal2`, + REGSTR_VAL_JOYOEMCAL3 = `OEMCal3`, + REGSTR_VAL_JOYOEMCAL4 = `OEMCal4`, + REGSTR_VAL_JOYOEMCAL5 = `OEMCal5`, + REGSTR_VAL_JOYOEMCAL6 = `OEMCal6`, + REGSTR_VAL_JOYOEMCAL7 = `OEMCal7`, + REGSTR_VAL_JOYOEMCAL8 = `OEMCal8`, + REGSTR_VAL_JOYOEMCAL9 = `OEMCal9`, + REGSTR_VAL_JOYOEMCAL10 = `OEMCal10`, + REGSTR_VAL_JOYOEMCAL11 = `OEMCal11`, + REGSTR_VAL_JOYOEMCAL12 = `OEMCal12`; + +enum { + DTRESULTOK, + DTRESULTFIX, + DTRESULTPROB, + DTRESULTPART +} + +//#ifndef NEC_98 +const PCIC_DEFAULT_IRQMASK = 0x4EB8; +//#else +//#define PCIC_DEFAULT_IRQMASK 0x1468 +//#endif +const PCIC_DEFAULT_NUMSOCKETS = 0; + +struct DSKTLSYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; + WORD wResult; +} +alias DSKTLSYSTEMTIME* PDSKTLSYSTEMTIME, LPDSKTLSYSTEMTIME; diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d new file mode 100644 index 0000000000..cdbd58268b --- /dev/null +++ b/src/core/sys/windows/richedit.d @@ -0,0 +1,590 @@ +/***********************************************************************\ +* richedit.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.richedit; + +private import win32.windef, win32.winuser; +private import win32.wingdi; // for LF_FACESIZE + +align(4): + +version(Unicode) { + const wchar[] RICHEDIT_CLASS = "RichEdit20W"; +} else { + const char[] RICHEDIT_CLASS = "RichEdit20A"; +} + +const RICHEDIT_CLASS10A = "RICHEDIT"; + +const TCHAR[] + CF_RTF = "Rich Text Format", + CF_RTFNOOBJS = "Rich Text Format Without Objects", + CF_RETEXTOBJ = "RichEdit Text and Objects"; + +const DWORD + CFM_BOLD = 1, + CFM_ITALIC = 2, + CFM_UNDERLINE = 4, + CFM_STRIKEOUT = 8, + CFM_PROTECTED = 16, + CFM_LINK = 32, + CFM_SIZE = 0x80000000, + CFM_COLOR = 0x40000000, + CFM_FACE = 0x20000000, + CFM_OFFSET = 0x10000000, + CFM_CHARSET = 0x08000000, + CFM_SUBSCRIPT = 0x00030000, + CFM_SUPERSCRIPT = 0x00030000; + +const DWORD + CFE_BOLD = 1, + CFE_ITALIC = 2, + CFE_UNDERLINE = 4, + CFE_STRIKEOUT = 8, + CFE_PROTECTED = 16, + CFE_SUBSCRIPT = 0x00010000, + CFE_SUPERSCRIPT = 0x00020000, + CFE_AUTOCOLOR = 0x40000000; + +const CFM_EFFECTS = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR + | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK; + +// flags for EM_SETIMEOPTIONS +const LPARAM + IMF_FORCENONE = 1, + IMF_FORCEENABLE = 2, + IMF_FORCEDISABLE = 4, + IMF_CLOSESTATUSWINDOW = 8, + IMF_VERTICAL = 32, + IMF_FORCEACTIVE = 64, + IMF_FORCEINACTIVE = 128, + IMF_FORCEREMEMBER = 256; + +const SEL_EMPTY=0; +const SEL_TEXT=1; +const SEL_OBJECT=2; +const SEL_MULTICHAR=4; +const SEL_MULTIOBJECT=8; + +const MAX_TAB_STOPS=32; + +const PFM_ALIGNMENT=8; +const PFM_NUMBERING=32; +const PFM_OFFSET=4; +const PFM_OFFSETINDENT=0x80000000; +const PFM_RIGHTINDENT=2; +const PFM_STARTINDENT=1; +const PFM_TABSTOPS=16; +const PFM_BORDER=2048; +const PFM_LINESPACING=256; +const PFM_NUMBERINGSTART=32768; +const PFM_NUMBERINGSTYLE=8192; +const PFM_NUMBERINGTAB=16384; +const PFM_SHADING=4096; +const PFM_SPACEAFTER=128; +const PFM_SPACEBEFORE=64; +const PFM_STYLE=1024; +const PFM_DONOTHYPHEN=4194304; +const PFM_KEEP=131072; +const PFM_KEEPNEXT=262144; +const PFM_NOLINENUMBER=1048576; +const PFM_NOWIDOWCONTROL=2097152; +const PFM_PAGEBREAKBEFORE=524288; +const PFM_RTLPARA=65536; +const PFM_SIDEBYSIDE=8388608; +const PFM_TABLE=1073741824; +const PFN_BULLET=1; + +const PFE_DONOTHYPHEN=64; +const PFE_KEEP=2; +const PFE_KEEPNEXT=4; +const PFE_NOLINENUMBER=16; +const PFE_NOWIDOWCONTROL=32; +const PFE_PAGEBREAKBEFORE=8; +const PFE_RTLPARA=1; +const PFE_SIDEBYSIDE=128; +const PFE_TABLE=16384; +const PFA_LEFT=1; +const PFA_RIGHT=2; +const PFA_CENTER=3; +const PFA_JUSTIFY=4; +const PFA_FULL_INTERWORD=4; + +const SF_TEXT=1; +const SF_RTF=2; +const SF_RTFNOOBJS=3; +const SF_TEXTIZED=4; +const SF_UNICODE=16; +const SF_USECODEPAGE=32; +const SF_NCRFORNONASCII=64; +const SF_RTFVAL=0x0700; + +const SFF_PWD=0x0800; +const SFF_KEEPDOCINFO=0x1000; +const SFF_PERSISTVIEWSCALE=0x2000; +const SFF_PLAINRTF=0x4000; +const SFF_SELECTION=0x8000; + +const WB_CLASSIFY = 3; +const WB_MOVEWORDLEFT = 4; +const WB_MOVEWORDRIGHT = 5; +const WB_LEFTBREAK = 6; +const WB_RIGHTBREAK = 7; +const WB_MOVEWORDPREV = 4; +const WB_MOVEWORDNEXT = 5; +const WB_PREVBREAK = 6; +const WB_NEXTBREAK = 7; + +const WBF_WORDWRAP = 16; +const WBF_WORDBREAK = 32; +const WBF_OVERFLOW = 64; +const WBF_LEVEL1 = 128; +const WBF_LEVEL2 = 256; +const WBF_CUSTOM = 512; + +const ES_DISABLENOSCROLL = 8192; +const ES_SUNKEN = 16384; +const ES_SAVESEL = 32768; +const ES_EX_NOCALLOLEINIT = 16777216; +const ES_NOIME = 524288; +const ES_NOOLEDRAGDROP = 8; +const ES_SELECTIONBAR = 16777216; +const ES_SELFIME = 262144; +const ES_VERTICAL = 4194304; + +const EM_CANPASTE = WM_USER+50; +const EM_DISPLAYBAND = WM_USER+51; +const EM_EXGETSEL = WM_USER+52; +const EM_EXLIMITTEXT = WM_USER+53; +const EM_EXLINEFROMCHAR = WM_USER+54; +const EM_EXSETSEL = WM_USER+55; +const EM_FINDTEXT = WM_USER+56; +const EM_FORMATRANGE = WM_USER+57; +const EM_GETCHARFORMAT = WM_USER+58; +const EM_GETEVENTMASK = WM_USER+59; +const EM_GETOLEINTERFACE = WM_USER+60; +const EM_GETPARAFORMAT = WM_USER+61; +const EM_GETSELTEXT = WM_USER+62; +const EM_HIDESELECTION = WM_USER+63; +const EM_PASTESPECIAL = WM_USER+64; +const EM_REQUESTRESIZE = WM_USER+65; +const EM_SELECTIONTYPE = WM_USER+66; +const EM_SETBKGNDCOLOR = WM_USER+67; +const EM_SETCHARFORMAT = WM_USER+68; +const EM_SETEVENTMASK = WM_USER+69; +const EM_SETOLECALLBACK = WM_USER+70; +const EM_SETPARAFORMAT = WM_USER+71; +const EM_SETTARGETDEVICE = WM_USER+72; +const EM_STREAMIN = WM_USER+73; +const EM_STREAMOUT = WM_USER+74; +const EM_GETTEXTRANGE = WM_USER+75; +const EM_FINDWORDBREAK = WM_USER+76; +const EM_SETOPTIONS = WM_USER+77; +const EM_GETOPTIONS = WM_USER+78; +const EM_FINDTEXTEX = WM_USER+79; +const EM_GETWORDBREAKPROCEX = WM_USER+80; +const EM_SETWORDBREAKPROCEX = WM_USER+81; +/* RichEdit 2.0 messages */ +const EM_SETUNDOLIMIT = WM_USER+82; +const EM_REDO = WM_USER+84; +const EM_CANREDO = WM_USER+85; +const EM_GETUNDONAME = WM_USER+86; +const EM_GETREDONAME = WM_USER+87; +const EM_STOPGROUPTYPING = WM_USER+88; +const EM_SETTEXTMODE = WM_USER+89; +const EM_GETTEXTMODE = WM_USER+90; +const EM_AUTOURLDETECT = WM_USER+91; +const EM_GETAUTOURLDETECT = WM_USER + 92; +const EM_SETPALETTE = WM_USER + 93; +const EM_GETTEXTEX = WM_USER+94; +const EM_GETTEXTLENGTHEX = WM_USER+95; +const EM_SHOWSCROLLBAR = WM_USER+96; +const EM_SETTEXTEX = WM_USER + 97; +const EM_SETPUNCTUATION = WM_USER + 100; +const EM_GETPUNCTUATION = WM_USER + 101; +const EM_SETWORDWRAPMODE = WM_USER + 102; +const EM_GETWORDWRAPMODE = WM_USER + 103; +const EM_SETIMECOLOR = WM_USER + 104; +const EM_GETIMECOLOR = WM_USER + 105; +const EM_SETIMEOPTIONS = WM_USER + 106; +const EM_GETIMEOPTIONS = WM_USER + 107; +const EM_SETLANGOPTIONS = WM_USER+120; +const EM_GETLANGOPTIONS = WM_USER+121; +const EM_GETIMECOMPMODE = WM_USER+122; +const EM_FINDTEXTW = WM_USER + 123; +const EM_FINDTEXTEXW = WM_USER + 124; +const EM_RECONVERSION = WM_USER + 125; +const EM_SETBIDIOPTIONS = WM_USER + 200; +const EM_GETBIDIOPTIONS = WM_USER + 201; +const EM_SETTYPOGRAPHYOPTIONS = WM_USER+202; +const EM_GETTYPOGRAPHYOPTIONS = WM_USER+203; +const EM_SETEDITSTYLE = WM_USER + 204; +const EM_GETEDITSTYLE = WM_USER + 205; +const EM_GETSCROLLPOS = WM_USER+221; +const EM_SETSCROLLPOS = WM_USER+222; +const EM_SETFONTSIZE = WM_USER+223; +const EM_GETZOOM = WM_USER+224; +const EM_SETZOOM = WM_USER+225; + +const EN_MSGFILTER = 1792; +const EN_REQUESTRESIZE = 1793; +const EN_SELCHANGE = 1794; +const EN_DROPFILES = 1795; +const EN_PROTECTED = 1796; +const EN_CORRECTTEXT = 1797; +const EN_STOPNOUNDO = 1798; +const EN_IMECHANGE = 1799; +const EN_SAVECLIPBOARD = 1800; +const EN_OLEOPFAILED = 1801; +const EN_LINK = 1803; + +const ENM_NONE = 0; +const ENM_CHANGE = 1; +const ENM_UPDATE = 2; +const ENM_SCROLL = 4; +const ENM_SCROLLEVENTS = 8; +const ENM_DRAGDROPDONE = 16; +const ENM_KEYEVENTS = 65536; +const ENM_MOUSEEVENTS = 131072; +const ENM_REQUESTRESIZE = 262144; +const ENM_SELCHANGE = 524288; +const ENM_DROPFILES = 1048576; +const ENM_PROTECTED = 2097152; +const ENM_CORRECTTEXT = 4194304; +const ENM_IMECHANGE = 8388608; +const ENM_LANGCHANGE = 16777216; +const ENM_OBJECTPOSITIONS = 33554432; +const ENM_LINK = 67108864; + +const ECO_AUTOWORDSELECTION=1; +const ECO_AUTOVSCROLL=64; +const ECO_AUTOHSCROLL=128; +const ECO_NOHIDESEL=256; +const ECO_READONLY=2048; +const ECO_WANTRETURN=4096; +const ECO_SAVESEL=0x8000; +const ECO_SELECTIONBAR=0x1000000; +const ECO_VERTICAL=0x400000; + +enum { + ECOOP_SET = 1, + ECOOP_OR, + ECOOP_AND, + ECOOP_XOR +} + +const SCF_DEFAULT = 0; +const SCF_SELECTION = 1; +const SCF_WORD = 2; +const SCF_ALL = 4; +const SCF_USEUIRULES = 8; + +alias DWORD TEXTMODE; +const TM_PLAINTEXT=1; +const TM_RICHTEXT=2; +const TM_SINGLELEVELUNDO=4; +const TM_MULTILEVELUNDO=8; +const TM_SINGLECODEPAGE=16; +const TM_MULTICODEPAGE=32; + +const GT_DEFAULT=0; +const GT_USECRLF=1; + +const yHeightCharPtsMost=1638; +const lDefaultTab=720; + +alias DWORD UNDONAMEID; +const UID_UNKNOWN = 0; +const UID_TYPING = 1; +const UID_DELETE = 2; +const UID_DRAGDROP = 3; +const UID_CUT = 4; +const UID_PASTE = 5; + +struct CHARFORMATA { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char[LF_FACESIZE] szFaceName; +} +struct CHARFORMATW { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR[LF_FACESIZE] szFaceName; +} + +struct CHARFORMAT2A { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char[LF_FACESIZE] szFaceName; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; +} + +struct CHARFORMAT2W { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR[LF_FACESIZE] szFaceName; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; +} + +struct CHARRANGE { + LONG cpMin; + LONG cpMax; +} + +struct COMPCOLOR { + COLORREF crText; + COLORREF crBackground; + DWORD dwEffects; +} + +extern (Windows) { + alias DWORD function(DWORD,PBYTE,LONG,LONG*) EDITSTREAMCALLBACK; +} + +struct EDITSTREAM { + DWORD dwCookie; + DWORD dwError; + EDITSTREAMCALLBACK pfnCallback; +} + +struct ENCORRECTTEXT { + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; +} + +struct ENDROPFILES { + NMHDR nmhdr; + HANDLE hDrop; + LONG cp; + BOOL fProtected; +} + +struct ENLINK { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; +} + +struct ENOLEOPFAILED { + NMHDR nmhdr; + LONG iob; + LONG lOper; + HRESULT hr; +} + +struct ENPROTECTED { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; +} +alias ENPROTECTED* LPENPROTECTED; + +struct ENSAVECLIPBOARD { + NMHDR nmhdr; + LONG cObjectCount; + LONG cch; +} + +struct FINDTEXTA { + CHARRANGE chrg; + LPSTR lpstrText; +} + +struct FINDTEXTW { + CHARRANGE chrg; + LPWSTR lpstrText; +} + +struct FINDTEXTEXA { + CHARRANGE chrg; + LPSTR lpstrText; + CHARRANGE chrgText; +} + +struct FINDTEXTEXW { + CHARRANGE chrg; + LPWSTR lpstrText; + CHARRANGE chrgText; +} + +struct FORMATRANGE { + HDC hdc; + HDC hdcTarget; + RECT rc; + RECT rcPage; + CHARRANGE chrg; +} + +struct MSGFILTER { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; +} + +struct PARAFORMAT { + UINT cbSize = this.sizeof; + DWORD dwMask; + WORD wNumbering; + WORD wReserved; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG[MAX_TAB_STOPS] rgxTabs; +} + +struct PARAFORMAT2 { + UINT cbSize = this.sizeof; + DWORD dwMask; + WORD wNumbering; + WORD wEffects; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG[MAX_TAB_STOPS] rgxTabs; + LONG dySpaceBefore; + LONG dySpaceAfter; + LONG dyLineSpacing; + SHORT sStype; + BYTE bLineSpacingRule; + BYTE bOutlineLevel; + WORD wShadingWeight; + WORD wShadingStyle; + WORD wNumberingStart; + WORD wNumberingStyle; + WORD wNumberingTab; + WORD wBorderSpace; + WORD wBorderWidth; + WORD wBorders; +} + +struct SELCHANGE { + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; +} + +struct TEXTRANGEA { + CHARRANGE chrg; + LPSTR lpstrText; +} + +struct TEXTRANGEW { + CHARRANGE chrg; + LPWSTR lpstrText; +} + +struct REQRESIZE { + NMHDR nmhdr; + RECT rc; +} + +struct REPASTESPECIAL { + DWORD dwAspect; + DWORD dwParam; +} + +struct PUNCTUATION { + UINT iSize; + LPSTR szPunctuation; +} + +struct GETTEXTEX { + DWORD cb; + DWORD flags; + UINT codepage; + LPCSTR lpDefaultChar; + LPBOOL lpUsedDefChar; +} + +extern (Windows) { +alias LONG function(char*,LONG,BYTE,INT) EDITWORDBREAKPROCEX; +} + +/* Defines for EM_SETTYPOGRAPHYOPTIONS */ +const TO_ADVANCEDTYPOGRAPHY = 1; +const TO_SIMPLELINEBREAK = 2; + +/* Defines for GETTEXTLENGTHEX */ +const GTL_DEFAULT = 0; +const GTL_USECRLF = 1; +const GTL_PRECISE = 2; +const GTL_CLOSE = 4; +const GTL_NUMCHARS = 8; +const GTL_NUMBYTES = 16; + +struct GETTEXTLENGTHEX { + DWORD flags; + UINT codepage; +} + +version(Unicode) { + alias CHARFORMATW CHARFORMAT; + alias CHARFORMAT2W CHARFORMAT2; + alias FINDTEXTW FINDTEXT; + alias FINDTEXTEXW FINDTEXTEX; + alias TEXTRANGEW TEXTRANGE; +} else { + alias CHARFORMATA CHARFORMAT; + alias CHARFORMAT2A CHARFORMAT2; + alias FINDTEXTA FINDTEXT; + alias FINDTEXTEXA FINDTEXTEX; + alias TEXTRANGEA TEXTRANGE; +} diff --git a/src/core/sys/windows/richole.d b/src/core/sys/windows/richole.d new file mode 100644 index 0000000000..a497802f00 --- /dev/null +++ b/src/core/sys/windows/richole.d @@ -0,0 +1,101 @@ +/***********************************************************************\ +* richole.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.richole; + +private import win32.objfwd, win32.objidl, win32.ole2, win32.unknwn, + win32.windef; +private import win32.richedit; // for CHARRANGE + +align(4): + +const ULONG + REO_GETOBJ_NO_INTERFACES = 0, + REO_GETOBJ_POLEOBJ = 1, + REO_GETOBJ_PSTG = 2, + REO_GETOBJ_POLESITE = 4, + REO_GETOBJ_ALL_INTERFACES = 7, + REO_CP_SELECTION = -1, + REO_IOB_SELECTION = -1, + REO_IOB_USE_CP = -2, + REO_NULL = 0, + REO_READWRITEMASK = 0x3F, + REO_DONTNEEDPALETTE = 32, + REO_BLANK = 16, + REO_DYNAMICSIZE = 8, + REO_INVERTEDSELECT = 4, + REO_BELOWBASELINE = 2, + REO_RESIZABLE = 1, + REO_LINK = 0x80000000, + REO_STATIC = 0x40000000, + REO_SELECTED = 0x08000000, + REO_OPEN = 0x4000000, + REO_INPLACEACTIVE = 0x2000000, + REO_HILITED = 0x1000000, + REO_LINKAVAILABLE = 0x800000, + REO_GETMETAFILE = 0x400000; + +enum { + RECO_PASTE = 0, + RECO_DROP, + RECO_COPY, + RECO_CUT, + RECO_DRAG // = 4 +} + +extern (C) extern const GUID + IID_IRichEditOle, + IID_IRichEditOleCallback; + +struct REOBJECT { + DWORD cbStruct = REOBJECT.sizeof; + LONG cp; + CLSID clsid; + LPOLEOBJECT poleobj; + LPSTORAGE pstg; + LPOLECLIENTSITE polesite; + SIZEL sizel; + DWORD dvaspect; + DWORD dwFlags; + DWORD dwUser; +} + +interface IRichEditOle : IUnknown { + HRESULT GetClientSite(LPOLECLIENTSITE*); + LONG GetObjectCount(); + LONG GetLinkCount(); + HRESULT GetObject(LONG, REOBJECT*, DWORD); + HRESULT InsertObject(REOBJECT*); + HRESULT ConvertObject(LONG, REFCLSID, LPCSTR); + HRESULT ActivateAs(REFCLSID, REFCLSID); + HRESULT SetHostNames(LPCSTR, LPCSTR); + HRESULT SetLinkAvailable(LONG, BOOL); + HRESULT SetDvaspect(LONG, DWORD); + HRESULT HandsOffStorage(LONG); + HRESULT SaveCompleted(LONG, LPSTORAGE); + HRESULT InPlaceDeactivate(); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); + HRESULT ImportDataObject(LPDATAOBJECT, CLIPFORMAT, HGLOBAL); +}; +alias IRichEditOle LPRICHEDITOLE; + +interface IRichEditOleCallback : IUnknown { + HRESULT GetNewStorage(LPSTORAGE*); + HRESULT GetInPlaceContext(LPOLEINPLACEFRAME*, LPOLEINPLACEUIWINDOW*, LPOLEINPLACEFRAMEINFO); + HRESULT ShowContainerUI(BOOL); + HRESULT QueryInsertObject(LPCLSID, LPSTORAGE, LONG); + HRESULT DeleteObject(LPOLEOBJECT); + HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD, BOOL, HGLOBAL); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); + HRESULT GetDragDropEffect(BOOL, DWORD, PDWORD); + HRESULT GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE*, HMENU*); +}; +alias IRichEditOleCallback LPRICHEDITOLECALLBACK; diff --git a/src/core/sys/windows/rpc.d b/src/core/sys/windows/rpc.d new file mode 100644 index 0000000000..3ae552429b --- /dev/null +++ b/src/core/sys/windows/rpc.d @@ -0,0 +1,31 @@ +/***********************************************************************\ +* rpc.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpc; + +/* Moved to rpcdecp (duplicate definition). + typedef void *I_RPC_HANDLE; + alias long RPC_STATUS; + // Moved to rpcdce: + RpcImpersonateClient + RpcRevertToSelf +*/ + +public import win32.unknwn; +public import win32.rpcdce; // also pulls in rpcdcep +public import win32.rpcnsi; +public import win32.rpcnterr; +public import win32.winerror; + +alias MIDL_user_allocate midl_user_allocate; +alias MIDL_user_free midl_user_free; + +extern (Windows) { + int I_RpcMapWin32Status(RPC_STATUS); +} diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d new file mode 100644 index 0000000000..b994ae3296 --- /dev/null +++ b/src/core/sys/windows/rpcdce.d @@ -0,0 +1,411 @@ +/***********************************************************************\ +* rpcdce.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcdce; +pragma(lib, "Rpcrt4"); + +// TODO: I think MinGW got this wrong. RPC_UNICODE_SUPPORTED should be +// replaced aliases for version(Unicode) + +public import win32.rpcdcep; +private import win32.basetyps, win32.w32api, win32.windef; + +// FIXME: clean up Windows version support + +alias UUID uuid_t; +alias UUID_VECTOR uuid_vector_t; +alias void RPC_MGR_EPV; + +// for RpcMgmtSetComTimeout() +enum : uint { + RPC_C_BINDING_MIN_TIMEOUT = 0, + RPC_C_BINDING_DEFAULT_TIMEOUT = 5, + RPC_C_BINDING_MAX_TIMEOUT = 9, + RPC_C_BINDING_INFINITE_TIMEOUT = 10 +} + +const RPC_C_CANCEL_INFINITE_TIMEOUT= -1; +const RPC_C_LISTEN_MAX_CALLS_DEFAULT=1234; +const RPC_C_PROTSEQ_MAX_REQS_DEFAULT=10; +const RPC_C_BIND_TO_ALL_NICS=1; +const RPC_C_USE_INTERNET_PORT=1; +const RPC_C_USE_INTRANET_PORT=2; + +// for RPC_STATS_VECTOR, used by RpcMgmyInqStats +enum : uint { + RPC_C_STATS_CALLS_IN = 0, + RPC_C_STATS_CALLS_OUT, + RPC_C_STATS_PKTS_IN, + RPC_C_STATS_PKTS_OUT +} + +const RPC_IF_AUTOLISTEN=0x0001; +const RPC_IF_OLE=2; +const RPC_C_MGMT_INQ_IF_IDS=0; +const RPC_C_MGMT_INQ_PRINC_NAME=1; +const RPC_C_MGMT_INQ_STATS=2; +const RPC_C_MGMT_IS_SERVER_LISTEN=3; +const RPC_C_MGMT_STOP_SERVER_LISTEN=4; + +// Inquiry Type for RpcMgmtEpEltInqBegin() +enum : uint { + RPC_C_EP_ALL_ELTS = 0, + RPC_C_EP_MATCH_BY_IF, + RPC_C_EP_MATCH_BY_OBJ, + RPC_C_EP_MATCH_BY_BOTH +} + +// for RpcMgmtEpEltInqNext() +enum : uint { + RPC_C_VERS_ALL = 1, + RPC_C_VERS_COMPATIBLE, + RPC_C_VERS_EXACT, + RPC_C_VERS_MAJOR_ONLY, + RPC_C_VERS_UPTO +} + +const DCE_C_ERROR_STRING_LEN=256; +const RPC_C_PARM_MAX_PACKET_LENGTH=1; +const RPC_C_PARM_BUFFER_LENGTH=2; +const RPC_C_AUTHN_LEVEL_DEFAULT=0; +const RPC_C_AUTHN_LEVEL_NONE=1; +const RPC_C_AUTHN_LEVEL_CONNECT=2; +const RPC_C_AUTHN_LEVEL_CALL=3; +const RPC_C_AUTHN_LEVEL_PKT=4; +const RPC_C_AUTHN_LEVEL_PKT_INTEGRITY=5; +const RPC_C_AUTHN_LEVEL_PKT_PRIVACY=6; +const RPC_C_IMP_LEVEL_ANONYMOUS=1; +const RPC_C_IMP_LEVEL_IDENTIFY=2; +const RPC_C_IMP_LEVEL_IMPERSONATE=3; +const RPC_C_IMP_LEVEL_DELEGATE=4; +const RPC_C_QOS_IDENTITY_STATIC=0; +const RPC_C_QOS_IDENTITY_DYNAMIC=1; +const RPC_C_QOS_CAPABILITIES_DEFAULT=0; +const RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH=1; + +// These enums were buggy in MinGW ! +const RPC_C_PROTECT_LEVEL_DEFAULT = RPC_C_AUTHN_LEVEL_DEFAULT; +const RPC_C_PROTECT_LEVEL_NONE = RPC_C_AUTHN_LEVEL_NONE; +const RPC_C_PROTECT_LEVEL_CONNECT = RPC_C_AUTHN_LEVEL_CONNECT; +const RPC_C_PROTECT_LEVEL_CALL = RPC_C_AUTHN_LEVEL_CALL; +const RPC_C_PROTECT_LEVEL_PKT = RPC_C_AUTHN_LEVEL_PKT; +const RPC_C_PROTECT_LEVEL_PKT_INTEGRITY = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY; +const RPC_C_PROTECT_LEVEL_PKT_PRIVACY = RPC_C_AUTHN_LEVEL_PKT_PRIVACY; + +const RPC_C_AUTHN_NONE=0; +const RPC_C_AUTHN_DCE_PRIVATE=1; +const RPC_C_AUTHN_DCE_PUBLIC=2; +const RPC_C_AUTHN_DEC_PUBLIC=4; +const RPC_C_AUTHN_WINNT=10; +const RPC_C_AUTHN_DEFAULT=0xFFFFFFFF; +//const RPC_C_SECURITY_QOS_VERSION=L; // FIXME(MinGW): This is nonsense! +const SEC_WINNT_AUTH_IDENTITY_ANSI=0x1; +const SEC_WINNT_AUTH_IDENTITY_UNICODE=0x2; +const RPC_C_AUTHZ_NONE=0; +const RPC_C_AUTHZ_NAME=1; +const RPC_C_AUTHZ_DCE=2; +const RPC_C_AUTHZ_DEFAULT=0xFFFFFFFF; + +alias I_RPC_HANDLE RPC_BINDING_HANDLE; +alias RPC_BINDING_HANDLE handle_t; + +struct RPC_BINDING_VECTOR { + uint Count; + RPC_BINDING_HANDLE[1] BindingH; +} + +alias RPC_BINDING_HANDLE rpc_binding_handle_t; +alias RPC_BINDING_VECTOR rpc_binding_vector_t; + + +struct UUID_VECTOR { + uint Count; + UUID*[1] Uuid; +} + +alias void* RPC_IF_HANDLE; + +struct RPC_IF_ID { + UUID Uuid; + ushort VersMajor; + ushort VersMinor; +} + +struct RPC_POLICY { + uint Length; + uint EndpointFlags; + uint NICFlags; +} +alias RPC_POLICY* PRPC_POLICY; + +extern (Windows) { + alias void function(UUID*, UUID*, RPC_STATUS*) RPC_OBJECT_INQ_FN; + alias RPC_STATUS function(RPC_IF_HANDLE, void*) RPC_IF_CALLBACK_FN; +} + +struct RPC_STATS_VECTOR { + uint Count; + uint[1] Stats; +} + +struct RPC_IF_ID_VECTOR { + uint Count; + RPC_IF_ID*[1] IfId; +} +mixin DECLARE_HANDLE!("RPC_AUTH_IDENTITY_HANDLE"); +mixin DECLARE_HANDLE!("RPC_AUTHZ_HANDLE"); + +struct RPC_SECURITY_QOS { + uint Version; + uint Capabilities; + uint IdentityTracking; + uint ImpersonationType; +} +alias RPC_SECURITY_QOS* PRPC_SECURITY_QOS; + +struct SEC_WINNT_AUTH_IDENTITY_W { + ushort* User; + uint UserLength; + ushort* Domain; + uint DomainLength; + ushort* Password; + uint PasswordLength; + uint Flags; +} +alias SEC_WINNT_AUTH_IDENTITY_W* PSEC_WINNT_AUTH_IDENTITY_W; + +struct SEC_WINNT_AUTH_IDENTITY_A { + ubyte* User; + uint UserLength; + ubyte* Domain; + uint DomainLength; + ubyte* Password; + uint PasswordLength; + uint Flags; +} +alias SEC_WINNT_AUTH_IDENTITY_A* PSEC_WINNT_AUTH_IDENTITY_A; + +struct RPC_CLIENT_INFORMATION1 { + ubyte* UserName; + ubyte* ComputerName; + ushort Privilege; + uint AuthFlags; +} +alias RPC_CLIENT_INFORMATION1* PRPC_CLIENT_INFORMATION1; +alias I_RPC_HANDLE* RPC_EP_INQ_HANDLE; +extern (Windows) { + alias int function(RPC_BINDING_HANDLE, uint, RPC_STATUS*) RPC_MGMT_AUTHORIZATION_FN; +} + +struct RPC_PROTSEQ_VECTORA { + uint Count; + ubyte*[1] Protseq; +} + +struct RPC_PROTSEQ_VECTORW { + uint Count; + ushort*[1] Protseq; +} + +extern (Windows) { + RPC_STATUS RpcBindingFromStringBindingA(char*, RPC_BINDING_HANDLE*); + RPC_STATUS RpcBindingFromStringBindingW(wchar*, RPC_BINDING_HANDLE*); + RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE, char**); + RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE, wchar**); + RPC_STATUS RpcStringBindingComposeA(char*, char*, char*, char*, char*, char**); + RPC_STATUS RpcStringBindingComposeW(wchar*, wchar*, wchar*, wchar*, wchar*, wchar**); + RPC_STATUS RpcStringBindingParseA(char*, char**, char**, char**, char**, char**); + RPC_STATUS RpcStringBindingParseW(wchar*, wchar**, wchar**, wchar**, wchar**, wchar**); + RPC_STATUS RpcStringFreeA(char**); + RPC_STATUS RpcStringFreeW(wchar**); + RPC_STATUS RpcNetworkIsProtseqValidA(char*); + RPC_STATUS RpcNetworkIsProtseqValidW(wchar*); + RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**); + RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**); + RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**); + RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**); + RPC_STATUS RpcServerUseProtseqA(char*, uint, void*); + RPC_STATUS RpcServerUseProtseqW(wchar*, uint, void*); + RPC_STATUS RpcServerUseProtseqExA(char*, uint MaxCalls, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqExW(wchar*, uint, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqEpA(char*, uint, char*, void*); + RPC_STATUS RpcServerUseProtseqEpExA(char*, uint, char*, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqEpW(wchar*, uint, wchar*, void*); + RPC_STATUS RpcServerUseProtseqEpExW(wchar*, uint, wchar*, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqIfA(char*, uint, RPC_IF_HANDLE, void*); + RPC_STATUS RpcServerUseProtseqIfExA(char*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqIfW(wchar*, uint, RPC_IF_HANDLE, void*); + RPC_STATUS RpcServerUseProtseqIfExW(wchar*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); + RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE, uint, char**); + RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE, uint, wchar**); + RPC_STATUS RpcServerInqDefaultPrincNameA(uint, char**); + RPC_STATUS RpcServerInqDefaultPrincNameW(uint, wchar**); + RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE, uint, char**); + RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE, uint, wchar**); + RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, char**, uint*, uint*, uint*); + RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, wchar**, uint*, uint*, uint*); + RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); + RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); + RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); + RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); + RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); + alias void function(void*, wchar*, uint, void**, RPC_STATUS*) RPC_AUTH_KEY_RETRIEVAL_FN; + RPC_STATUS RpcServerRegisterAuthInfoA(char*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); + RPC_STATUS RpcServerRegisterAuthInfoW(wchar*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); + RPC_STATUS UuidToStringA(UUID*, char**); + RPC_STATUS UuidFromStringA(char*, UUID*); + RPC_STATUS UuidToStringW(UUID*, wchar**); + RPC_STATUS UuidFromStringW(wchar*, UUID*); + RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); + RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); + RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); + RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); + RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); + RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); + RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, char**); + RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, wchar**); + + // MinGW erroneously had these in rpc.h + RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE); + RPC_STATUS RpcRevertToSelf(); +} + +version (Unicode) { + alias RPC_PROTSEQ_VECTORW RPC_PROTSEQ_VECTOR; + alias SEC_WINNT_AUTH_IDENTITY_W SEC_WINNT_AUTH_IDENTITY; + alias PSEC_WINNT_AUTH_IDENTITY_W PSEC_WINNT_AUTH_IDENTITY; + alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; + alias RpcBindingFromStringBindingW RpcBindingFromStringBinding; + alias RpcBindingToStringBindingW RpcBindingToStringBinding; + alias RpcStringBindingComposeW RpcStringBindingCompose; + alias RpcStringBindingParseW RpcStringBindingParse; + alias RpcStringFreeW RpcStringFree; + alias RpcNetworkIsProtseqValidW RpcNetworkIsProtseqValid; + alias RpcNetworkInqProtseqsW RpcNetworkInqProtseqs; + alias RpcProtseqVectorFreeW RpcProtseqVectorFree; + alias RpcServerUseProtseqW RpcServerUseProtseq; + alias RpcServerUseProtseqExW RpcServerUseProtseqEx; + alias RpcServerUseProtseqEpW RpcServerUseProtseqEp; + alias RpcServerUseProtseqEpExW RpcServerUseProtseqEpEx; + alias RpcServerUseProtseqIfW RpcServerUseProtseqIf; + alias RpcServerUseProtseqIfExW RpcServerUseProtseqIfEx; + alias RpcMgmtInqServerPrincNameW RpcMgmtInqServerPrincName; + alias RpcServerInqDefaultPrincNameW RpcServerInqDefaultPrincName; + alias RpcNsBindingInqEntryNameW RpcNsBindingInqEntryName; + alias RpcBindingInqAuthClientW RpcBindingInqAuthClient; + alias RpcBindingInqAuthInfoW RpcBindingInqAuthInfo; + alias RpcBindingSetAuthInfoW RpcBindingSetAuthInfo; + alias RpcServerRegisterAuthInfoW RpcServerRegisterAuthInfo; + alias RpcBindingInqAuthInfoExW RpcBindingInqAuthInfoEx; + alias RpcBindingSetAuthInfoExW RpcBindingSetAuthInfoEx; + alias UuidFromStringW UuidFromString; + alias UuidToStringW UuidToString; + alias RpcEpRegisterNoReplaceW RpcEpRegisterNoReplace; + alias RpcEpRegisterW RpcEpRegister; + alias DceErrorInqTextW DceErrorInqText; +} else { // Ansi + alias RPC_PROTSEQ_VECTORA RPC_PROTSEQ_VECTOR; + alias SEC_WINNT_AUTH_IDENTITY_A SEC_WINNT_AUTH_IDENTITY; + alias PSEC_WINNT_AUTH_IDENTITY_A PSEC_WINNT_AUTH_IDENTITY; + alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; + alias RpcBindingFromStringBindingA RpcBindingFromStringBinding; + alias RpcBindingToStringBindingA RpcBindingToStringBinding; + alias RpcStringBindingComposeA RpcStringBindingCompose; + alias RpcStringBindingParseA RpcStringBindingParse; + alias RpcStringFreeA RpcStringFree; + alias RpcNetworkIsProtseqValidA RpcNetworkIsProtseqValid; + alias RpcNetworkInqProtseqsA RpcNetworkInqProtseqs; + alias RpcProtseqVectorFreeA RpcProtseqVectorFree; + alias RpcServerUseProtseqA RpcServerUseProtseq; + alias RpcServerUseProtseqExA RpcServerUseProtseqEx; + alias RpcServerUseProtseqEpA RpcServerUseProtseqEp; + alias RpcServerUseProtseqEpExA RpcServerUseProtseqEpEx; + alias RpcServerUseProtseqIfA RpcServerUseProtseqIf; + alias RpcServerUseProtseqIfExA RpcServerUseProtseqIfEx; + alias RpcMgmtInqServerPrincNameA RpcMgmtInqServerPrincName; + alias RpcServerInqDefaultPrincNameA RpcServerInqDefaultPrincName; + alias RpcNsBindingInqEntryNameA RpcNsBindingInqEntryName; + alias RpcBindingInqAuthClientA RpcBindingInqAuthClient; + alias RpcBindingInqAuthInfoA RpcBindingInqAuthInfo; + alias RpcBindingSetAuthInfoA RpcBindingSetAuthInfo; + alias RpcServerRegisterAuthInfoA RpcServerRegisterAuthInfo; + alias RpcBindingInqAuthInfoExA RpcBindingInqAuthInfoEx; + alias RpcBindingSetAuthInfoExA RpcBindingSetAuthInfoEx; + alias UuidFromStringA UuidFromString; + alias UuidToStringA UuidToString; + alias RpcEpRegisterNoReplaceA RpcEpRegisterNoReplace; + alias RpcEpRegisterA RpcEpRegister; + alias DceErrorInqTextA DceErrorInqText; +} //#endif // UNICODE + + +RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); +RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE*); +RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE, UUID*); +RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE); +RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE, UUID*); +RPC_STATUS RpcMgmtInqDefaultProtectLevel(uint, uint*); +RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR**); +RPC_STATUS RpcIfInqId(RPC_IF_HANDLE, RPC_IF_ID*); +RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE, uint*); +RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE, uint); +RPC_STATUS RpcMgmtSetCancelTimeout(int Timeout); +RPC_STATUS RpcObjectInqType(UUID*, UUID*); +RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN*); +RPC_STATUS RpcObjectSetType(UUID*, UUID*); +RPC_STATUS RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR**); +RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV**); +RPC_STATUS RpcServerListen(uint, uint, uint); +RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*); +RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, RPC_IF_CALLBACK_FN*); +RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, uint, RPC_IF_CALLBACK_FN*); +RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE, UUID*, uint); +RPC_STATUS RpcServerUseAllProtseqs(uint, void*); +RPC_STATUS RpcServerUseAllProtseqsEx(uint, void*, PRPC_POLICY); +RPC_STATUS RpcServerUseAllProtseqsIf(uint, RPC_IF_HANDLE, void*); +RPC_STATUS RpcServerUseAllProtseqsIfEx(uint, RPC_IF_HANDLE, void*, PRPC_POLICY); +RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**); +RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE, RPC_STATS_VECTOR**); +RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE); +RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE); +RPC_STATUS RpcMgmtWaitServerListen(); +RPC_STATUS RpcMgmtSetServerStackSize(uint); +void RpcSsDontSerializeContext(); +RPC_STATUS RpcMgmtEnableIdleCleanup(); +RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE, RPC_IF_ID_VECTOR**); +RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR**); +RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE, RPC_IF_HANDLE); +RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); + +// never returns +void RpcRaiseException(RPC_STATUS); +RPC_STATUS RpcTestCancel(); +RPC_STATUS RpcCancelThread(void*); +RPC_STATUS UuidCreate(UUID*); +int UuidCompare(UUID*, UUID*, RPC_STATUS*); +RPC_STATUS UuidCreateNil(UUID*); +int UuidEqual(UUID*, UUID*, RPC_STATUS*); +ushort UuidHash(UUID*, RPC_STATUS*); +int UuidIsNil(UUID*, RPC_STATUS*); +RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*); +RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, uint, UUID*, RPC_EP_INQ_HANDLE*); +RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); +RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE, UUID*); +RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); +RPC_STATUS RpcMgmtInqParameter(uint, uint*); +RPC_STATUS RpcMgmtSetParameter(uint, uint); +RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*); +RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint); + +static if (_WIN32_WINNT >= 0x500) { + RPC_STATUS UuidCreateSequential(UUID*); +} diff --git a/src/core/sys/windows/rpcdce2.d b/src/core/sys/windows/rpcdce2.d new file mode 100644 index 0000000000..c53fbfa694 --- /dev/null +++ b/src/core/sys/windows/rpcdce2.d @@ -0,0 +1,78 @@ +/***********************************************************************\ +* rpcdce2.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcdce2; + +import win32.rpcdce; +private import win32.basetyps; + +// FIXME: deal with RPC_UNICODE_SUPPORTED +// FIXME: check types of constants + +enum { + RPC_C_EP_ALL_ELTS, + RPC_C_EP_MATCH_BY_IF, + RPC_C_EP_MATCH_BY_OBJ, + RPC_C_EP_MATCH_BY_BOTH +} + +enum { + RPC_C_VERS_ALL = 1, + RPC_C_VERS_COMPATIBLE, + RPC_C_VERS_EXACT, + RPC_C_VERS_MAJOR_ONLY, + RPC_C_VERS_UPTO +} + +const size_t DCE_C_ERROR_STRING_LEN = 256; + +enum { + RPC_C_MGMT_INQ_IF_IDS, + RPC_C_MGMT_INQ_PRINC_NAME, + RPC_C_MGMT_INQ_STATS, + RPC_C_MGMT_IS_SERVER_LISTEN, + RPC_C_MGMT_STOP_SERVER_LISTEN +} + +extern (Windows) { + int UuidCompare(UUID*, UUID*, RPC_STATUS*); + RPC_STATUS UuidCreateNil(UUID*); + int UuidEqual(UUID*, UUID*, RPC_STATUS*); + ushort UuidHash(UUID*, RPC_STATUS*); + int UuidIsNil(UUID*, RPC_STATUS*); + + RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, + uint, UUID*, RPC_EP_INQ_HANDLE*); + RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); + RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE, UUID*); + RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); +} + + +//#ifdef RPC_UNICODE_SUPPORTED +RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); +RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); +RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE*, UUID*, char**); +RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE*, UUID*, wchar**); +version (Unicode) { + alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; + alias DceErrorInqTextW DceErrorInqText; +} else { + alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; + alias DceErrorInqTextA DceErrorInqText; +} +/+ +#else /* RPC_UNICODE_SUPPORTED */ + RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*); + RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**); +#endif ++/ diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d new file mode 100644 index 0000000000..7617175f45 --- /dev/null +++ b/src/core/sys/windows/rpcdcep.d @@ -0,0 +1,151 @@ +/***********************************************************************\ +* rpcdcep.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcdcep; + +private import win32.basetyps; +private import win32.w32api; +private import win32.windef; + +mixin DECLARE_HANDLE!("I_RPC_HANDLE"); +alias long RPC_STATUS; + +const RPC_NCA_FLAGS_DEFAULT=0; +const RPC_NCA_FLAGS_IDEMPOTENT=1; +const RPC_NCA_FLAGS_BROADCAST=2; +const RPC_NCA_FLAGS_MAYBE=4; +const RPCFLG_ASYNCHRONOUS=0x40000000; +const RPCFLG_INPUT_SYNCHRONOUS=0x20000000; +const RPC_FLAGS_VALID_BIT=0x8000; + +const TRANSPORT_TYPE_CN=1; +const TRANSPORT_TYPE_DG=2; +const TRANSPORT_TYPE_LPC=4; +const TRANSPORT_TYPE_WMSG=8; + +struct RPC_VERSION { + ushort MajorVersion; + ushort MinorVersion; +} +struct RPC_SYNTAX_IDENTIFIER { + GUID SyntaxGUID; + RPC_VERSION SyntaxVersion; +} +alias RPC_SYNTAX_IDENTIFIER* PRPC_SYNTAX_IDENTIFIER; + +struct RPC_MESSAGE { + HANDLE Handle; + uint DataRepresentation; + void* Buffer; + uint BufferLength; + uint ProcNum; + PRPC_SYNTAX_IDENTIFIER TransferSyntax; + void* RpcInterfaceInformation; + void* ReservedForRuntime; + void* ManagerEpv; + void* ImportContext; + uint RpcFlags; +} +alias RPC_MESSAGE* PRPC_MESSAGE; + +extern (Windows) { +alias void function (PRPC_MESSAGE Message) RPC_DISPATCH_FUNCTION; +} + +struct RPC_DISPATCH_TABLE { + uint DispatchTableCount; + RPC_DISPATCH_FUNCTION* DispatchTable; + int Reserved; +} +alias RPC_DISPATCH_TABLE* PRPC_DISPATCH_TABLE; + +struct RPC_PROTSEQ_ENDPOINT { + ubyte* RpcProtocolSequence; + ubyte* Endpoint; +} +alias RPC_PROTSEQ_ENDPOINT* PRPC_PROTSEQ_ENDPOINT; + +struct RPC_SERVER_INTERFACE { + uint Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + uint RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + void* DefaultManagerEpv; + const(void)* InterpreterInfo; +} +alias RPC_SERVER_INTERFACE* PRPC_SERVER_INTERFACE; + +struct RPC_CLIENT_INTERFACE { + uint Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + uint RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + uint Reserved; + const(void)* InterpreterInfo; +} +alias RPC_CLIENT_INTERFACE* PRPC_CLIENT_INTERFACE; + +alias TypeDef!(void*) I_RPC_MUTEX; + +struct RPC_TRANSFER_SYNTAX { + GUID Uuid; + ushort VersMajor; + ushort VersMinor; +} +alias RPC_STATUS function(void*, void*, void*) RPC_BLOCKING_FN; + +extern (Windows) { + alias void function(void*) PRPC_RUNDOWN; + + int I_RpcGetBuffer(RPC_MESSAGE*); + int I_RpcSendReceive(RPC_MESSAGE*); + int I_RpcSend(RPC_MESSAGE*); + int I_RpcFreeBuffer(RPC_MESSAGE*); + void I_RpcRequestMutex(I_RPC_MUTEX*); + void I_RpcClearMutex(I_RPC_MUTEX); + void I_RpcDeleteMutex(I_RPC_MUTEX); + void* I_RpcAllocate(uint); + void I_RpcFree(void*); + void I_RpcPauseExecution(uint); + int I_RpcMonitorAssociation(HANDLE, PRPC_RUNDOWN, void*); + int I_RpcStopMonitorAssociation(HANDLE); + HANDLE I_RpcGetCurrentCallHandle(); + int I_RpcGetAssociationContext(void**); + int I_RpcSetAssociationContext(void*); + int I_RpcNsBindingSetEntryName(HANDLE, uint, wchar*); + int I_RpcBindingInqDynamicEndpoint(HANDLE, wchar**); + int I_RpcBindingInqTransportType(HANDLE, uint*); + int I_RpcIfInqTransferSyntaxes(HANDLE, RPC_TRANSFER_SYNTAX*, uint, + uint*); + int I_UuidCreate(GUID*); + int I_RpcBindingCopy(HANDLE, HANDLE*); + int I_RpcBindingIsClientLocal(HANDLE, uint*); + void I_RpcSsDontSerializeContext(); + int I_RpcServerRegisterForwardFunction(int function (GUID*, + RPC_VERSION*, GUID*, ubyte*, void**)); + int I_RpcConnectionInqSockBuffSize(uint*, uint*); + int I_RpcConnectionSetSockBuffSize(uint, uint); + int I_RpcBindingSetAsync(HANDLE, RPC_BLOCKING_FN); + int I_RpcAsyncSendReceive(RPC_MESSAGE*, void*); + int I_RpcGetThreadWindowHandle(void**); + int I_RpcServerThreadPauseListening(); + int I_RpcServerThreadContinueListening(); + int I_RpcServerUnregisterEndpointA(ubyte*, ubyte*); + int I_RpcServerUnregisterEndpointW(ushort*, ushort*); +} + +version(Unicode) { + alias I_RpcServerUnregisterEndpointW I_RpcServerUnregisterEndpoint; +} else { + alias I_RpcServerUnregisterEndpointA I_RpcServerUnregisterEndpoint; +} diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d new file mode 100644 index 0000000000..930eb71e2c --- /dev/null +++ b/src/core/sys/windows/rpcndr.d @@ -0,0 +1,573 @@ +/***********************************************************************\ +* rpcndr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcndr; +pragma(lib, "rpcrt4"); + +/* Translation notes: + RPC_CLIENT_ALLOC*, RPC_CLIENT_FREE* were replaced with PRPC_CLIENT_ALLOC, PRPC_CLIENT_FREE +*/ + +// TODO: Bitfields in MIDL_STUB_MESSAGE. +// Macros need to be converted. +const __RPCNDR_H_VERSION__= 450; + +import win32.rpcnsip; +private import win32.rpc, win32.rpcdce, win32.unknwn, win32.windef; +private import win32.objidl; // for IRpcChannelBuffer, IRpcStubBuffer +private import win32.basetyps; + +extern (Windows): + +const uint NDR_CHAR_REP_MASK = 0xF, + NDR_INT_REP_MASK = 0xF0, + NDR_FLOAT_REP_MASK = 0xFF00, + NDR_LITTLE_ENDIAN = 0x10, + NDR_BIG_ENDIAN = 0, + NDR_IEEE_FLOAT = 0, + NDR_VAX_FLOAT = 0x100, + NDR_ASCII_CHAR = 0, + NDR_EBCDIC_CHAR = 1, + NDR_LOCAL_DATA_REPRESENTATION = 0x10, + NDR_LOCAL_ENDIAN = NDR_LITTLE_ENDIAN; + +alias MIDL_user_allocate midl_user_allocate; +alias MIDL_user_free midl_user_free; + +alias long hyper; +alias ulong MIDL_uhyper; +alias char small; + +const cbNDRContext=20; +//MACRO #define NDRSContextValue(hContext) (&(hContext)->userContext) +//MACRO #define byte_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } + +//MACRO #define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } + +//MACRO #define boolean_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } + +//MACRO #define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } + +//MACRO #define small_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } + +//MACRO #define small_from_ndr_temp(source, target, format) { *(target) = *(*(char**)(source))++; } + +//MACRO #define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } + +//MACRO #define MIDL_ascii_strlen(string) strlen(string) + +//MACRO #define MIDL_ascii_strcpy(target,source) strcpy(target,source) + +//MACRO #define MIDL_memset(s,c,n) memset(s,c,n) + +//MACRO #define _midl_ma1( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_ma2( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_ma4( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_ma8( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_unma1( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_unma2( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_unma3( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_unma4( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe)) +//MACRO #define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc)) +//MACRO #define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8)) +//MACRO #define _midl_addp( p, n ) (p += n) +//MACRO #define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p +//MACRO #define _midl_advmp( mp ) *(*(unsigned long **)&mp)++ +//MACRO #define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++) + +//MACRO #define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, _midl_ma4( p, unsigned long) = 0, _midl_ma4( p, unsigned long) = l) + +//MACRO #define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long), (_midl_addp(p,4)), (l=_midl_unma4(p,unsigned long)) + +//MACRO #define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20) +//MACRO #define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20) +//MACRO #define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep )) +//MACRO #define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd) + +//MACRO #define NdrFieldOffset(s,f) (long)(& (((s *)0)->f)) +//MACRO #define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t)) +//MACRO #define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8) +//MACRO #define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24) + +alias void * NDR_CCONTEXT; +struct tagNDR_SCONTEXT { + void*[2] pad; + void *userContext; +} +alias tagNDR_SCONTEXT * NDR_SCONTEXT; + +struct SCONTEXT_QUEUE { + uint NumberOfObjects; + NDR_SCONTEXT *ArrayOfObjects; +} +alias SCONTEXT_QUEUE * PSCONTEXT_QUEUE; + +struct _MIDL_STUB_MESSAGE; +struct _MIDL_STUB_DESC; +struct _FULL_PTR_XLAT_TABLES; + +alias ubyte *RPC_BUFPTR; +alias uint RPC_LENGTH; + +alias const(char)* PFORMAT_STRING; + +struct ARRAY_INFO { + int Dimension; + uint *BufferConformanceMark; + uint *BufferVarianceMark; + uint *MaxCountArray; + uint *OffsetArray; + uint *ActualCountArray; +} +alias ARRAY_INFO * PARRAY_INFO; + +RPC_BINDING_HANDLE NDRCContextBinding(NDR_CCONTEXT); +void NDRCContextMarshall(NDR_CCONTEXT,void*); +void NDRCContextUnmarshall(NDR_CCONTEXT*,RPC_BINDING_HANDLE,void*,uint); +void NDRSContextMarshall(NDR_SCONTEXT,void*,NDR_RUNDOWN); +NDR_SCONTEXT NDRSContextUnmarshall(void*pBuff,uint); +void RpcSsDestroyClientContext(void**); +void NDRcopy(void*,void*,uint); +uint MIDL_wchar_strlen(wchar *); +void MIDL_wchar_strcpy(void*,wchar *); +void char_from_ndr(PRPC_MESSAGE,ubyte*); +void char_array_from_ndr(PRPC_MESSAGE,uint,uint,ubyte*); +void short_from_ndr(PRPC_MESSAGE,ushort*); +void short_array_from_ndr(PRPC_MESSAGE,uint,uint,ushort*); +void short_from_ndr_temp(ubyte**,ushort*,uint); +void int_from_ndr(PRPC_MESSAGE,uint*); +void int_array_from_ndr(PRPC_MESSAGE,uint,uint,uint*); +void int_from_ndr_temp(ubyte**,uint*,uint); +void enum_from_ndr(PRPC_MESSAGE,uint*); +void float_from_ndr(PRPC_MESSAGE,void*); +void float_array_from_ndr(PRPC_MESSAGE,uint,uint,void*); +void double_from_ndr(PRPC_MESSAGE,void*); +void double_array_from_ndr(PRPC_MESSAGE,uint,uint,void*); +void hyper_from_ndr(PRPC_MESSAGE,hyper*); +void hyper_array_from_ndr(PRPC_MESSAGE,uint,uint,hyper*); +void hyper_from_ndr_temp(ubyte**,hyper*,uint); +void data_from_ndr(PRPC_MESSAGE,void*,char*,ubyte); +void data_into_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void tree_into_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void data_size_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void tree_size_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void tree_peek_ndr(PRPC_MESSAGE,ubyte**,char*,ubyte); +void * midl_allocate(int); + +align(4): +struct MIDL_STUB_MESSAGE { + PRPC_MESSAGE RpcMsg; + ubyte *Buffer; + ubyte *BufferStart; + ubyte *BufferEnd; + ubyte *BufferMark; + uint BufferLength; + uint MemorySize; + ubyte *Memory; + int IsClient; + int ReuseBuffer; + ubyte *AllocAllNodesMemory; + ubyte *AllocAllNodesMemoryEnd; + int IgnoreEmbeddedPointers; + ubyte *PointerBufferMark; + ubyte fBufferValid; + ubyte Unused; + uint MaxCount; + uint Offset; + uint ActualCount; + void* function (uint) pfnAllocate; + void function (void*) pfnFree; + ubyte * StackTop; + ubyte * pPresentedType; + ubyte * pTransmitType; + handle_t SavedHandle; + const(_MIDL_STUB_DESC)* StubDesc; + _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; + uint FullPtrRefId; + int fCheckBounds; + // FIXME: + byte bit_fields_for_D; // FIXME: Bitfields +// int fInDontFree :1; +// int fDontCallFreeInst :1; +// int fInOnlyParam :1; +// int fHasReturn :1; + uint dwDestContext; + void* pvDestContext; + NDR_SCONTEXT * SavedContextHandles; + int ParamNumber; + IRpcChannelBuffer pRpcChannelBuffer; + PARRAY_INFO pArrayInfo; + uint * SizePtrCountArray; + uint * SizePtrOffsetArray; + uint * SizePtrLengthArray; + void* pArgQueue; + uint dwStubPhase; + uint[5] w2kReserved; +} +alias MIDL_STUB_MESSAGE * PMIDL_STUB_MESSAGE; + +extern (Windows) { + alias void* function (void*) GENERIC_BINDING_ROUTINE; + alias void function (void*,ubyte*) GENERIC_UNBIND_ROUTINE; + alias uint function (uint *,uint,void *) USER_MARSHAL_SIZING_ROUTINE; + alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_MARSHALLING_ROUTINE; + alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_UNMARSHALLING_ROUTINE; + alias void function (uint *,void *) USER_MARSHAL_FREEING_ROUTINE; + alias void function () NDR_NOTIFY_ROUTINE; +} + +align: +struct GENERIC_BINDING_ROUTINE_PAIR { + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; +} +alias GENERIC_BINDING_ROUTINE_PAIR * PGENERIC_BINDING_ROUTINE_PAIR; + +struct GENERIC_BINDING_INFO { + void *pObj; + uint Size; + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; +} +alias GENERIC_BINDING_INFO * PGENERIC_BINDING_INFO; + + +struct XMIT_ROUTINE_QUINTUPLE { + XMIT_HELPER_ROUTINE pfnTranslateToXmit; + XMIT_HELPER_ROUTINE pfnTranslateFromXmit; + XMIT_HELPER_ROUTINE pfnFreeXmit; + XMIT_HELPER_ROUTINE pfnFreeInst; +} +alias XMIT_ROUTINE_QUINTUPLE * PXMIT_ROUTINE_QUINTUPLE; + +struct MALLOC_FREE_STRUCT { + void* function (uint) pfnAllocate; + void function (void*) pfnFree; +} + +struct COMM_FAULT_OFFSETS { + short CommOffset; + short FaultOffset; +} + +struct USER_MARSHAL_ROUTINE_QUADRUPLE { + USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; + USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; + USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; + USER_MARSHAL_FREEING_ROUTINE pfnFree; +} + +enum IDL_CS_CONVERT { + IDL_CS_NO_CONVERT, + IDL_CS_IN_PLACE_CONVERT, + IDL_CS_NEW_BUFFER_CONVERT +} + +struct NDR_CS_SIZE_CONVERT_ROUTINES { + CS_TYPE_NET_SIZE_ROUTINE pfnNetSize; + CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs; + CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize; + CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs; +} + +struct NDR_CS_ROUTINES { + NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines; + CS_TAG_GETTING_ROUTINE *pTagGettingRoutines; +} + +struct MIDL_STUB_DESC { + void* RpcInterfaceInformation; + void* function(uint) pfnAllocate; + void function (void*) pfnFree; + union _IMPLICIT_HANDLE_INFO { + handle_t *pAutoHandle; + handle_t *pPrimitiveHandle; + PGENERIC_BINDING_INFO pGenericBindingInfo; + } + _IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO; + const(NDR_RUNDOWN)* apfnNdrRundownRoutines; + const(GENERIC_BINDING_ROUTINE_PAIR)* aGenericBindingRoutinePairs; + const(EXPR_EVAL)* apfnExprEval; + const(XMIT_ROUTINE_QUINTUPLE)* aXmitQuintuple; + const(char)* *pFormatTypes; + int fCheckBounds; + uint Version; + MALLOC_FREE_STRUCT *pMallocFreeStruct; + int MIDLVersion; + const(COMM_FAULT_OFFSETS)* CommFaultOffsets; + const(USER_MARSHAL_ROUTINE_QUADRUPLE)* aUserMarshalQuadruple; + const(NDR_NOTIFY_ROUTINE)* NotifyRoutineTable; + ULONG_PTR mFlags; + const(NDR_CS_ROUTINES)* CsRoutineTables; + void *Reserved4; + ULONG_PTR Reserved5; +} +alias const(MIDL_STUB_DESC)* PMIDL_STUB_DESC; + +alias void * PMIDL_XMIT_TYPE; + +struct MIDL_FORMAT_STRING { + short Pad; + ubyte[1] Format; +} + +struct MIDL_SERVER_INFO { + PMIDL_STUB_DESC pStubDesc; + const(SERVER_ROUTINE)* DispatchTable; + PFORMAT_STRING ProcString; + const(ushort)* FmtStringOffset; + const(STUB_THUNK)* ThunkTable; +} +alias MIDL_SERVER_INFO * PMIDL_SERVER_INFO; + +struct MIDL_STUBLESS_PROXY_INFO { + PMIDL_STUB_DESC pStubDesc; + PFORMAT_STRING ProcFormatString; + const(ushort)* FormatStringOffset; +} +alias MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO; + +union CLIENT_CALL_RETURN { + void *Pointer; + int Simple; +} + +enum XLAT_SIDE { + XLAT_SERVER = 1, + XLAT_CLIENT +} +struct FULL_PTR_TO_REFID_ELEMENT { + FULL_PTR_TO_REFID_ELEMENT * Next; + void* Pointer; + uint RefId; + ubyte State; +} +alias FULL_PTR_TO_REFID_ELEMENT * PFULL_PTR_TO_REFID_ELEMENT; + +struct FULL_PTR_XLAT_TABLES { + struct RefIdToPointer { + void **XlatTable; + ubyte *StateTable; + uint NumberOfEntries; + } + struct PointerToRefId { + PFULL_PTR_TO_REFID_ELEMENT *XlatTable; + uint NumberOfBuckets; + uint HashMask; + } + uint NextRefId; + XLAT_SIDE XlatSide; +} +alias FULL_PTR_XLAT_TABLES * PFULL_PTR_XLAT_TABLES; + + +enum STUB_PHASE { + STUB_UNMARSHAL, + STUB_CALL_SERVER, + STUB_MARSHAL, + STUB_CALL_SERVER_NO_HRESULT +} + +enum PROXY_PHASE { + PROXY_CALCSIZE, + PROXY_GETBUFFER, + PROXY_MARSHAL, + PROXY_SENDRECEIVE, + PROXY_UNMARSHAL +} + +alias TypeDef!(void *) RPC_SS_THREAD_HANDLE; + +extern (Windows) { +alias void function (void*) NDR_RUNDOWN; +alias void function (_MIDL_STUB_MESSAGE*) EXPR_EVAL; +alias void function(PMIDL_STUB_MESSAGE) XMIT_HELPER_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_NET_SIZE_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_LOCAL_SIZE_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,void*,uint,byte*,uint*,error_status_t*) CS_TYPE_TO_NETCS_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,byte*,uint,uint,void*,uint*,error_status_t*) CS_TYPE_FROM_NETCS_ROUTINE; +alias void function (RPC_BINDING_HANDLE,int,uint*,uint*,uint*,error_status_t*) CS_TAG_GETTING_ROUTINE; + +//alias void* RPC_CLIENT_ALLOC(uint); +//alias void RPC_CLIENT_FREE(void*); +alias void* function(uint) PRPC_CLIENT_ALLOC; +alias void function(void*) PRPC_CLIENT_FREE; + + alias void function (PMIDL_STUB_MESSAGE) STUB_THUNK; + alias int function() SERVER_ROUTINE; +} + +void NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); +ubyte * NdrPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING pFormat); +ubyte * NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrHardStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrComplexStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrClientContextMarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT,int); +void NdrServerContextMarshall(PMIDL_STUB_MESSAGE,NDR_SCONTEXT,NDR_RUNDOWN); +void NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); +ubyte * NdrPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrHardStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +void NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT*,RPC_BINDING_HANDLE); +NDR_SCONTEXT NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE); +void NdrPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrHardStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrContextHandleSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +uint NdrPointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrHardStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void NdrPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrSimpleStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrHardStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrFixedArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrByteCountPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrInterfacePointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConvert(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void NdrClientInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint); +ubyte * NdrServerInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); +void NdrClientInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint); +ubyte * NdrServerInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); +ubyte * NdrServerInitializeUnmarshall(PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PRPC_MESSAGE); +void NdrServerInitializeMarshall(PRPC_MESSAGE,PMIDL_STUB_MESSAGE); +ubyte * NdrGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE); +ubyte * NdrNsGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE); +ubyte * NdrSendReceive(PMIDL_STUB_MESSAGE,ubyte*); +ubyte * NdrNsSendReceive(PMIDL_STUB_MESSAGE,ubyte*,RPC_BINDING_HANDLE*); +void NdrFreeBuffer(PMIDL_STUB_MESSAGE); + +CLIENT_CALL_RETURN NdrClientCall(PMIDL_STUB_DESC,PFORMAT_STRING,...); + +int NdrStubCall(IRpcStubBuffer, IRpcChannelBuffer,PRPC_MESSAGE,uint*); +void NdrServerCall(PRPC_MESSAGE); +int NdrServerUnmarshall(IRpcChannelBuffer, PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PFORMAT_STRING,void*); +void NdrServerMarshall(IRpcStubBuffer, IRpcChannelBuffer,PMIDL_STUB_MESSAGE,PFORMAT_STRING); +RPC_STATUS NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE,uint*,uint*,RPC_STATUS); +int NdrSH_UPDecision(PMIDL_STUB_MESSAGE,ubyte**,RPC_BUFPTR); +int NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE,ubyte**); +int NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE,ubyte**); +int NdrSH_IfAlloc(PMIDL_STUB_MESSAGE,ubyte**,uint); +int NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE,ubyte**,uint); +int NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE,ubyte**,uint); +RPC_BUFPTR NdrSH_IfCopy(PMIDL_STUB_MESSAGE,ubyte**,uint); +RPC_BUFPTR NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE,ubyte**,uint); +uint NdrSH_Copy(ubyte*,ubyte*,uint); +void NdrSH_IfFree(PMIDL_STUB_MESSAGE,ubyte*); +RPC_BUFPTR NdrSH_StringMarshall(PMIDL_STUB_MESSAGE,ubyte*,uint,int); +RPC_BUFPTR NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE,ubyte**,int); +void* RpcSsAllocate(uint); +void RpcSsDisableAllocate(); +void RpcSsEnableAllocate(); +void RpcSsFree(void*); +RPC_SS_THREAD_HANDLE RpcSsGetThreadHandle(); +void RpcSsSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE); +void RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE); +void RpcSsSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*); +void* RpcSmAllocate(uint,RPC_STATUS*); +RPC_STATUS RpcSmClientFree(void*); +RPC_STATUS RpcSmDestroyClientContext(void**); +RPC_STATUS RpcSmDisableAllocate(); +RPC_STATUS RpcSmEnableAllocate(); +RPC_STATUS RpcSmFree(void*); +RPC_SS_THREAD_HANDLE RpcSmGetThreadHandle(RPC_STATUS*); +RPC_STATUS RpcSmSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE); +RPC_STATUS RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE); +RPC_STATUS RpcSmSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*); +void NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE); +void NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE); +void NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE); +void* NdrRpcSmClientAllocate(uint); +void NdrRpcSmClientFree(void*); +void* NdrRpcSsDefaultAllocate(uint); +void NdrRpcSsDefaultFree(void*); +PFULL_PTR_XLAT_TABLES NdrFullPointerXlatInit(uint,XLAT_SIDE); +void NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES); +int NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES,void*,ubyte,uint*); +int NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES,uint,ubyte,void**); +void NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES,uint,void*); +int NdrFullPointerFree(PFULL_PTR_XLAT_TABLES,void*); +void* NdrAllocate(PMIDL_STUB_MESSAGE,uint); +void NdrClearOutParameters(PMIDL_STUB_MESSAGE,PFORMAT_STRING,void*); +void* NdrOleAllocate(uint); +void NdrOleFree(void*); +ubyte* NdrUserMarshalMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte* NdrUserMarshalUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +void NdrUserMarshalBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +uint NdrUserMarshalMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void NdrUserMarshalFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d new file mode 100644 index 0000000000..f6412f2819 --- /dev/null +++ b/src/core/sys/windows/rpcnsi.d @@ -0,0 +1,149 @@ +/***********************************************************************\ +* rpcnsi.d * +* * +* Windows API header module * +* RPC Name Service (RpcNs APIs) * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcnsi; +pragma(lib, "rpcns4"); + +private import win32.basetyps, win32.rpcdcep, win32.rpcnsi, win32.rpcdce, + win32.w32api; +private import win32.windef; // for HANDLE + +mixin DECLARE_HANDLE!("RPC_NS_HANDLE"); + +const RPC_C_NS_SYNTAX_DEFAULT=0; +const RPC_C_NS_SYNTAX_DCE=3; +const RPC_C_PROFILE_DEFAULT_ELT=0; +const RPC_C_PROFILE_ALL_ELT=1; +const RPC_C_PROFILE_MATCH_BY_IF=2; +const RPC_C_PROFILE_MATCH_BY_MBR=3; +const RPC_C_PROFILE_MATCH_BY_BOTH=4; +const RPC_C_NS_DEFAULT_EXP_AGE=-1; + +extern (Windows) { + RPC_STATUS RpcNsBindingExportA(uint, ubyte*, RPC_IF_HANDLE, + RPC_BINDING_VECTOR*, UUID_VECTOR*); + RPC_STATUS RpcNsBindingUnexportA(uint, ubyte*, RPC_IF_HANDLE, + UUID_VECTOR*); + RPC_STATUS RpcNsBindingLookupBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, + uint, RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingLookupNext(RPC_NS_HANDLE, RPC_BINDING_VECTOR**); + RPC_STATUS RpcNsBindingLookupDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsGroupDeleteA(uint, ubyte*); + RPC_STATUS RpcNsGroupMbrAddA(uint, ubyte*, uint, ubyte*); + RPC_STATUS RpcNsGroupMbrRemoveA(uint, ubyte*, uint, ubyte*); + RPC_STATUS RpcNsGroupMbrInqBeginA(uint, ubyte*, uint, RPC_NS_HANDLE*); + RPC_STATUS RpcNsGroupMbrInqNextA(RPC_NS_HANDLE, ubyte**); + RPC_STATUS RpcNsGroupMbrInqDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsProfileDeleteA(uint, ubyte*); + RPC_STATUS RpcNsProfileEltAddA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*, + uint, ubyte*); + RPC_STATUS RpcNsProfileEltRemoveA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*); + RPC_STATUS RpcNsProfileEltInqBeginA(uint, ubyte*, uint, RPC_IF_ID*, uint, + uint, ubyte*, RPC_NS_HANDLE*); + RPC_STATUS RpcNsProfileEltInqNextA(RPC_NS_HANDLE, RPC_IF_ID*, ubyte**, + uint*, ubyte**); + RPC_STATUS RpcNsProfileEltInqDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryObjectInqNext(in RPC_NS_HANDLE, out UUID*); + RPC_STATUS RpcNsEntryObjectInqDone(ref RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryExpandNameA(uint, ubyte*, ubyte**); + RPC_STATUS RpcNsMgmtBindingUnexportA(uint, ubyte*, RPC_IF_ID*, uint, + UUID_VECTOR*); + RPC_STATUS RpcNsMgmtEntryCreateA(uint, ubyte*); + RPC_STATUS RpcNsMgmtEntryDeleteA(uint, ubyte*); + RPC_STATUS RpcNsMgmtEntryInqIfIdsA(uint, ubyte*, RPC_IF_ID_VECTOR**); + RPC_STATUS RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE, uint); + RPC_STATUS RpcNsMgmtInqExpAge(uint*); + RPC_STATUS RpcNsMgmtSetExpAge(uint); + RPC_STATUS RpcNsBindingImportNext(RPC_NS_HANDLE, RPC_BINDING_HANDLE*); + RPC_STATUS RpcNsBindingImportDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingSelect(RPC_BINDING_VECTOR*, RPC_BINDING_HANDLE*); +} + + +version (Unicode) { +} else { + RPC_STATUS RpcNsEntryObjectInqBeginA(uint, ubyte*, RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingImportBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, + RPC_NS_HANDLE*); +} + +RPC_STATUS RpcNsBindingExportW(uint, ushort*, RPC_IF_HANDLE, + RPC_BINDING_VECTOR*, UUID_VECTOR*); +RPC_STATUS RpcNsBindingUnexportW(uint, ushort*, RPC_IF_HANDLE, + UUID_VECTOR*); +RPC_STATUS RpcNsBindingLookupBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, + uint, RPC_NS_HANDLE*); +RPC_STATUS RpcNsGroupDeleteW(uint, ushort*); +RPC_STATUS RpcNsGroupMbrAddW(uint, ushort*, uint, ushort*); +RPC_STATUS RpcNsGroupMbrRemoveW(uint, ushort*, uint, ushort*); +RPC_STATUS RpcNsGroupMbrInqBeginW(uint, ushort*, uint, RPC_NS_HANDLE*); +RPC_STATUS RpcNsGroupMbrInqNextW(RPC_NS_HANDLE, ushort**); +RPC_STATUS RpcNsProfileDeleteW(uint, ushort*); +RPC_STATUS RpcNsProfileEltAddW(uint, ushort*, RPC_IF_ID*, uint, ushort*, + uint, ushort*); +RPC_STATUS RpcNsProfileEltRemoveW(uint, ushort*, RPC_IF_ID*, uint, + ushort*); +RPC_STATUS RpcNsProfileEltInqBeginW(uint, ushort*, uint, RPC_IF_ID*, + uint, uint, ushort*, RPC_NS_HANDLE*); +RPC_STATUS RpcNsProfileEltInqNextW(RPC_NS_HANDLE, RPC_IF_ID*, ushort**, + uint*, ushort**); +RPC_STATUS RpcNsEntryObjectInqBeginW(uint, ushort*, RPC_NS_HANDLE*); +RPC_STATUS RpcNsEntryExpandNameW(uint, ushort*, ushort**); +RPC_STATUS RpcNsMgmtBindingUnexportW(uint, ushort*, RPC_IF_ID*, uint, + UUID_VECTOR*); +RPC_STATUS RpcNsMgmtEntryCreateW(uint, ushort*); +RPC_STATUS RpcNsMgmtEntryDeleteW(uint, ushort*); +RPC_STATUS RpcNsMgmtEntryInqIfIdsW(uint, ushort , RPC_IF_ID_VECTOR**); +RPC_STATUS RpcNsBindingImportBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, + RPC_NS_HANDLE*); + +version (Unicode) { + alias RpcNsBindingLookupBeginW RpcNsBindingLookupBegin; + alias RpcNsBindingImportBeginW RpcNsBindingImportBegin; + alias RpcNsBindingExportW RpcNsBindingExport; + alias RpcNsBindingUnexportW RpcNsBindingUnexport; + alias RpcNsGroupDeleteW RpcNsGroupDelete; + alias RpcNsGroupMbrAddW RpcNsGroupMbrAdd; + alias RpcNsGroupMbrRemoveW RpcNsGroupMbrRemove; + alias RpcNsGroupMbrInqBeginW RpcNsGroupMbrInqBegin; + alias RpcNsGroupMbrInqNextW RpcNsGroupMbrInqNext; + alias RpcNsEntryExpandNameW RpcNsEntryExpandName; + alias RpcNsEntryObjectInqBeginW RpcNsEntryObjectInqBegin; + alias RpcNsMgmtBindingUnexportW RpcNsMgmtBindingUnexport; + alias RpcNsMgmtEntryCreateW RpcNsMgmtEntryCreate; + alias RpcNsMgmtEntryDeleteW RpcNsMgmtEntryDelete; + alias RpcNsMgmtEntryInqIfIdsW RpcNsMgmtEntryInqIfIds; + alias RpcNsProfileDeleteW RpcNsProfileDelete; + alias RpcNsProfileEltAddW RpcNsProfileEltAdd; + alias RpcNsProfileEltRemoveW RpcNsProfileEltRemove; + alias RpcNsProfileEltInqBeginW RpcNsProfileEltInqBegin; + alias RpcNsProfileEltInqNextW RpcNsProfileEltInqNext; +} else { + alias RpcNsBindingLookupBeginA RpcNsBindingLookupBegin; + alias RpcNsBindingImportBeginA RpcNsBindingImportBegin; + alias RpcNsBindingExportA RpcNsBindingExport; + alias RpcNsBindingUnexportA RpcNsBindingUnexport; + alias RpcNsGroupDeleteA RpcNsGroupDelete; + alias RpcNsGroupMbrAddA RpcNsGroupMbrAdd; + alias RpcNsGroupMbrRemoveA RpcNsGroupMbrRemove; + alias RpcNsGroupMbrInqBeginA RpcNsGroupMbrInqBegin; + alias RpcNsGroupMbrInqNextA RpcNsGroupMbrInqNext; + alias RpcNsEntryExpandNameA RpcNsEntryExpandName; + alias RpcNsEntryObjectInqBeginA RpcNsEntryObjectInqBegin; + alias RpcNsMgmtBindingUnexportA RpcNsMgmtBindingUnexport; + alias RpcNsMgmtEntryCreateA RpcNsMgmtEntryCreate; + alias RpcNsMgmtEntryDeleteA RpcNsMgmtEntryDelete; + alias RpcNsMgmtEntryInqIfIdsA RpcNsMgmtEntryInqIfIds; + alias RpcNsProfileDeleteA RpcNsProfileDelete; + alias RpcNsProfileEltAddA RpcNsProfileEltAdd; + alias RpcNsProfileEltRemoveA RpcNsProfileEltRemove; + alias RpcNsProfileEltInqBeginA RpcNsProfileEltInqBegin; + alias RpcNsProfileEltInqNextA RpcNsProfileEltInqNext; +} diff --git a/src/core/sys/windows/rpcnsip.d b/src/core/sys/windows/rpcnsip.d new file mode 100644 index 0000000000..c018bb0b9d --- /dev/null +++ b/src/core/sys/windows/rpcnsip.d @@ -0,0 +1,29 @@ +/***********************************************************************\ +* rpcnsip.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcnsip; + +private import win32.rpcdce, win32.rpcdcep, win32.rpcnsi; + +struct RPC_IMPORT_CONTEXT_P { + RPC_NS_HANDLE LookupContext; + RPC_BINDING_HANDLE ProposedHandle; + RPC_BINDING_VECTOR* Bindings; +} +alias RPC_IMPORT_CONTEXT_P* PRPC_IMPORT_CONTEXT_P; + +extern(Windows) { + RPC_STATUS I_RpcNsGetBuffer(PRPC_MESSAGE); + RPC_STATUS I_RpcNsSendReceive(PRPC_MESSAGE, RPC_BINDING_HANDLE*); + void I_RpcNsRaiseException(PRPC_MESSAGE, RPC_STATUS); + RPC_STATUS I_RpcReBindBuffer(PRPC_MESSAGE); + RPC_STATUS I_NsServerBindSearch(); + RPC_STATUS I_NsClientBindSearch(); + void I_NsClientBindDone(); +} diff --git a/src/core/sys/windows/rpcnterr.d b/src/core/sys/windows/rpcnterr.d new file mode 100644 index 0000000000..3bb346f294 --- /dev/null +++ b/src/core/sys/windows/rpcnterr.d @@ -0,0 +1,31 @@ +/***********************************************************************\ +* rpcnterr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcnterr; + +import win32.winerror; + +enum : uint { + RPC_S_OK = ERROR_SUCCESS, + RPC_S_INVALID_ARG = ERROR_INVALID_PARAMETER, + RPC_S_OUT_OF_MEMORY = ERROR_OUTOFMEMORY, + RPC_S_OUT_OF_THREADS = ERROR_MAX_THRDS_REACHED, + RPC_S_INVALID_LEVEL = ERROR_INVALID_PARAMETER, + RPC_S_BUFFER_TOO_SMALL = ERROR_INSUFFICIENT_BUFFER, + RPC_S_INVALID_SECURITY_DESC = ERROR_INVALID_SECURITY_DESCR, + RPC_S_ACCESS_DENIED = ERROR_ACCESS_DENIED, + RPC_S_SERVER_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_SERVER_MEMORY, + RPC_X_NO_MEMORY = RPC_S_OUT_OF_MEMORY, + RPC_X_INVALID_BOUND = RPC_S_INVALID_BOUND, + RPC_X_INVALID_TAG = RPC_S_INVALID_TAG, + RPC_X_ENUM_VALUE_TOO_LARGE = RPC_X_ENUM_VALUE_OUT_OF_RANGE, + RPC_X_SS_CONTEXT_MISMATCH = ERROR_INVALID_HANDLE, + RPC_X_INVALID_BUFFER = ERROR_INVALID_USER_BUFFER, + RPC_X_INVALID_PIPE_OPERATION = RPC_X_WRONG_PIPE_ORDER +} diff --git a/src/core/sys/windows/schannel.d b/src/core/sys/windows/schannel.d new file mode 100644 index 0000000000..b41a77f308 --- /dev/null +++ b/src/core/sys/windows/schannel.d @@ -0,0 +1,106 @@ +/***********************************************************************\ +* schannel.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.schannel; + +import win32.wincrypt; +private import win32.windef; + +const DWORD SCHANNEL_CRED_VERSION = 4; +const SCHANNEL_SHUTDOWN = 1; +/* Comment from MinGW + ? Do these belong here or in wincrypt.h + */ +enum : DWORD { + AUTHTYPE_CLIENT = 1, + AUTHTYPE_SERVER = 2 +} + +const DWORD + SP_PROT_PCT1_SERVER = 0x01, + SP_PROT_PCT1_CLIENT = 0x02, + SP_PROT_SSL2_SERVER = 0x04, + SP_PROT_SSL2_CLIENT = 0x08, + SP_PROT_SSL3_SERVER = 0x10, + SP_PROT_SSL3_CLIENT = 0x20, + SP_PROT_TLS1_SERVER = 0x40, + SP_PROT_TLS1_CLIENT = 0x80, + SP_PROT_PCT1 = SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER, + SP_PROT_TLS1 = SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER, + SP_PROT_SSL2 = SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER, + SP_PROT_SSL3 = SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER; + +const DWORD + SCH_CRED_NO_SYSTEM_MAPPER = 0x0002, + SCH_CRED_NO_SERVERNAME_CHECK = 0x0004, + SCH_CRED_MANUAL_CRED_VALIDATION = 0x0008, + SCH_CRED_NO_DEFAULT_CREDS = 0x0010, + SCH_CRED_AUTO_CRED_VALIDATION = 0x0020, + SCH_CRED_USE_DEFAULT_CREDS = 0x0040, + SCH_CRED_REVOCATION_CHECK_END_CERT = 0x0100, + SCH_CRED_REVOCATION_CHECK_CHAIN = 0x0200, + SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x0400, + SCH_CRED_IGNORE_NO_REVOCATION_CHECK = 0x0800, + SCH_CRED_IGNORE_REVOCATION_OFFLINE = 0x1000; + +// No definition - presumably an opaque structure +struct _HMAPPER; + +struct SCHANNEL_CRED { + DWORD dwVersion = SCHANNEL_CRED_VERSION; + DWORD cCreds; + PCCERT_CONTEXT* paCred; + HCERTSTORE hRootStore; + DWORD cMappers; + _HMAPPER** aphMappers; + DWORD cSupportedAlgs; + ALG_ID* palgSupportedAlgs; + DWORD grbitEnabledProtocols; + DWORD dwMinimumCypherStrength; + DWORD dwMaximumCypherStrength; + DWORD dwSessionLifespan; + DWORD dwFlags; + DWORD reserved; +} +alias SCHANNEL_CRED* PSCHANNEL_CRED; + +struct SecPkgCred_SupportedAlgs { + DWORD cSupportedAlgs; + ALG_ID* palgSupportedAlgs; +} +alias SecPkgCred_SupportedAlgs* PSecPkgCred_SupportedAlgs; + +struct SecPkgCred_CypherStrengths { + DWORD dwMinimumCypherStrength; + DWORD dwMaximumCypherStrength; +} +alias SecPkgCred_CypherStrengths* PSecPkgCred_CypherStrengths; + +struct SecPkgCred_SupportedProtocols { + DWORD grbitProtocol; +} +alias SecPkgCred_SupportedProtocols* PSecPkgCred_SupportedProtocols; + +struct SecPkgContext_IssuerListInfoEx { + PCERT_NAME_BLOB aIssuers; + DWORD cIssuers; +} +alias SecPkgContext_IssuerListInfoEx* PSecPkgContext_IssuerListInfoEx; + +struct SecPkgContext_ConnectionInfo { + DWORD dwProtocol; + ALG_ID aiCipher; + DWORD dwCipherStrength; + ALG_ID aiHash; + DWORD dwHashStrength; + ALG_ID aiExch; + DWORD dwExchStrength; +} +alias SecPkgContext_ConnectionInfo* PSecPkgContext_ConnectionInfo; diff --git a/src/core/sys/windows/secext.d b/src/core/sys/windows/secext.d new file mode 100644 index 0000000000..f5ec71f36d --- /dev/null +++ b/src/core/sys/windows/secext.d @@ -0,0 +1,52 @@ +/***********************************************************************\ +* secext.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +// Don't include this file directly, use win32.security instead. +module win32.secext; +pragma(lib, "secur32"); + +private import win32.w32api, win32.windef; + +static assert (_WIN32_WINNT >= 0x501, + "SecExt is only available on WindowsXP and later"); + +enum EXTENDED_NAME_FORMAT { + NameUnknown, + NameFullyQualifiedDN, + NameSamCompatible, + NameDisplay, // = 3 + NameUniqueId = 6, + NameCanonical, + NameUserPrincipal, + NameCanonicalEx, + NameServicePrincipal, // = 10 + NameDnsDomain = 12 +} +alias EXTENDED_NAME_FORMAT* PEXTENDED_NAME_FORMAT; + +extern (Windows) { + BOOLEAN GetComputerObjectNameA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN GetComputerObjectNameW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); + BOOLEAN GetUserNameExA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN GetUserNameExW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); + BOOLEAN TranslateNameA(LPCSTR, EXTENDED_NAME_FORMAT, + EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN TranslateNameW(LPCWSTR, EXTENDED_NAME_FORMAT, + EXTENDED_NAME_FORMAT, LPWSTR, PULONG); +} + +version (Unicode) { + alias GetComputerObjectNameW GetComputerObjectName; + alias GetUserNameExW GetUserNameEx; + alias TranslateNameW TranslateName; +} else { + alias GetComputerObjectNameA GetComputerObjectName; + alias GetUserNameExA GetUserNameEx; + alias TranslateNameA TranslateName; +} diff --git a/src/core/sys/windows/security.d b/src/core/sys/windows/security.d new file mode 100644 index 0000000000..1aea9bd97b --- /dev/null +++ b/src/core/sys/windows/security.d @@ -0,0 +1,46 @@ +/***********************************************************************\ +* security.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Ellery Newcomer * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.security; + +enum :SECURITY_STATUS{ + SEC_E_OK = 0, + SEC_E_CERT_EXPIRED = (-2146893016), + SEC_E_INCOMPLETE_MESSAGE = (-2146893032), + SEC_E_INSUFFICIENT_MEMORY = (-2146893056), + SEC_E_INTERNAL_ERROR = (-2146893052), + SEC_E_INVALID_HANDLE = (-2146893055), + SEC_E_INVALID_TOKEN = (-2146893048), + SEC_E_LOGON_DENIED = (-2146893044), + SEC_E_NO_AUTHENTICATING_AUTHORITY = (-2146893039), + SEC_E_NO_CREDENTIALS = (-2146893042), + SEC_E_TARGET_UNKNOWN = (-2146893053), + SEC_E_UNSUPPORTED_FUNCTION = (-2146893054), + SEC_E_UNTRUSTED_ROOT = (-2146893019), + SEC_E_WRONG_PRINCIPAL = (-2146893022), + SEC_E_SECPKG_NOT_FOUND = (-2146893051), + SEC_E_QOP_NOT_SUPPORTED = (-2146893046), + SEC_E_UNKNOWN_CREDENTIALS = (-2146893043), + SEC_E_NOT_OWNER = (-2146893050), +} +enum :SECURITY_STATUS { + SEC_I_RENEGOTIATE = 590625, + SEC_I_COMPLETE_AND_CONTINUE = 590612, + SEC_I_COMPLETE_NEEDED = 590611, + SEC_I_CONTINUE_NEEDED = 590610, + SEC_I_INCOMPLETE_CREDENTIALS = 590624, +} + +/* always a char */ +alias char SEC_CHAR; +alias wchar SEC_WCHAR; + +alias int SECURITY_STATUS; + diff --git a/src/core/sys/windows/servprov.d b/src/core/sys/windows/servprov.d new file mode 100644 index 0000000000..fa8b9e9385 --- /dev/null +++ b/src/core/sys/windows/servprov.d @@ -0,0 +1,16 @@ +/***********************************************************************\ +* servprov.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.servprov; + +private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; + +interface IServiceProvider : IUnknown { + HRESULT QueryService(REFGUID, REFIID, void**); +} diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d new file mode 100644 index 0000000000..9df27bc8c8 --- /dev/null +++ b/src/core/sys/windows/setupapi.d @@ -0,0 +1,1979 @@ +/***********************************************************************\ +* setupapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Vladimir Vlasov * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.setupapi; +pragma(lib, "setupapi"); + +private import win32.basetyps, win32.commctrl, win32.prsht, win32.w32api, + win32.winreg, win32.windef; +private import win32.winbase; // for SYSTEMTIME + +/*static if(_WIN32_WINNT < _WIN32_WINDOWS) { + const UINT _SETUPAPI_VER = _WIN32_WINNT; // SetupAPI version follows Windows NT version +} else static if(_WIN32_WINDOWS) { + static if(_WIN32_WINDOWS >= 0x0490) { + const UINT _SETUPAPI_VER = 0x0500; // WinME uses same version of SetupAPI as Win2k + } else static if(_WIN32_WINDOWS >= 0x0410) { + const UINT _SETUPAPI_VER = 0x0410; // Indicates version of SetupAPI shipped with Win98 + } else { + const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version + } +} else { + const UINT _SETUPAPI_VER = 0x0501; +} + +version (WindowsNTonly) { + static if (_WIN32_WINNT >= 0x500) { + const UINT USE_SP_DRVINFO_DATA_V1 = 0; + } else { + const UINT USE_SP_DRVINFO_DATA_V1 = 1; + } +} else { + const UINT USE_SP_DRVINFO_DATA_V1 = 1; +}*/ +/+ +const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version +const UINT USE_SP_DRVINFO_DATA_V1 = 1; ++/ +const UINT _SETUPAPI_VER = _WIN32_WINNT; +const bool USE_SP_DRVINFO_DATA_V1 = _WIN32_WINNT < 0x500; + +enum : uint { + LINE_LEN = 256, + MAX_INF_STRING_LENGTH = 4096, + MAX_TITLE_LEN = 60, + MAX_INSTRUCTION_LEN = 256, + MAX_LABEL_LEN = 30, + MAX_SERVICE_NAME_LEN = 256, + MAX_SUBTITLE_LEN = 256, + SP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3 +} + +enum : DWORD { + COPYFLG_WARN_IF_SKIP = 0x00000001, + COPYFLG_NOSKIP = 0x00000002, + COPYFLG_NOVERSIONCHECK = 0x00000004, + COPYFLG_FORCE_FILE_IN_USE = 0x00000008, + COPYFLG_NO_OVERWRITE = 0x00000010, + COPYFLG_NO_VERSION_DIALOG = 0x00000020, + COPYFLG_OVERWRITE_OLDER_ONLY = 0x00000040, + COPYFLG_REPLACEONLY = 0x00000400, + COPYFLG_NODECOMP = 0x00000800, + COPYFLG_REPLACE_BOOT_FILE = 0x00001000, + COPYFLG_NOPRUNE = 0x00002000 +} + +enum : DWORD { + DELFLG_IN_USE = 0x00000001, + DELFLG_IN_USE1 = 0x00010000 +} + +enum : DWORD { + DI_REMOVEDEVICE_GLOBAL = 0x00000001, + DI_REMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, + DI_UNREMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, + DI_SHOWOEM = 0x00000001, + DI_SHOWCOMPAT = 0x00000002, + DI_SHOWCLASS = 0x00000004, + DI_SHOWALL = 0x00000007, + DI_NOVCP = 0x00000008, + DI_DIDCOMPAT = 0x00000010, + DI_DIDCLASS = 0x00000020, + DI_AUTOASSIGNRES = 0x00000040, + DI_NEEDRESTART = 0x00000080, + DI_NEEDREBOOT = 0x00000100, + DI_NOBROWSE = 0x00000200, + DI_MULTMFGS = 0x00000400, + DI_DISABLED = 0x00000800, + DI_GENERALPAGE_ADDED = 0x00001000, + DI_RESOURCEPAGE_ADDED = 0x00002000, + DI_PROPERTIES_CHANGE = 0x00004000, + DI_INF_IS_SORTED = 0x00008000, + DI_ENUMSINGLEINF = 0x00010000, + DI_DONOTCALLCONFIGMG = 0x00020000, + DI_INSTALLDISABLED = 0x00040000, + DI_COMPAT_FROM_CLASS = 0x00080000, + DI_CLASSINSTALLPARAMS = 0x00100000, + DI_NODI_DEFAULTACTION = 0x00200000, + DI_QUIETINSTALL = 0x00800000, + DI_NOFILECOPY = 0x01000000, + DI_FORCECOPY = 0x02000000, + DI_DRIVERPAGE_ADDED = 0x04000000, + DI_USECI_SELECTSTRINGS = 0x08000000, + DI_OVERRIDE_INFFLAGS = 0x10000000, + DI_PROPS_NOCHANGEUSAGE = 0x20000000, + DI_NOSELECTICONS = 0x40000000, + DI_NOWRITE_IDS = 0x80000000, + DI_FLAGSEX_USEOLDINFSEARCH = 0x00000001, + DI_FLAGSEX_AUTOSELECTRANK0 = 0x00000002, + DI_FLAGSEX_CI_FAILED = 0x00000004, + DI_FLAGSEX_DIDINFOLIST = 0x00000010, + DI_FLAGSEX_DIDCOMPATINFO = 0x00000020, + DI_FLAGSEX_FILTERCLASSES = 0x00000040, + DI_FLAGSEX_SETFAILEDINSTALL = 0x00000080, + DI_FLAGSEX_DEVICECHANGE = 0x00000100, + DI_FLAGSEX_ALWAYSWRITEIDS = 0x00000200, + DI_FLAGSEX_PROPCHANGE_PENDING = 0x00000400, + DI_FLAGSEX_ALLOWEXCLUDEDDRVS = 0x00000800, + DI_FLAGSEX_NOUIONQUERYREMOVE = 0x00001000, + DI_FLAGSEX_USECLASSFORCOMPAT = 0x00002000, + DI_FLAGSEX_OLDINF_IN_CLASSLIST = 0x00004000, + DI_FLAGSEX_NO_DRVREG_MODIFY = 0x00008000, + DI_FLAGSEX_IN_SYSTEM_SETUP = 0x00010000, + DI_FLAGSEX_INET_DRIVER = 0x00020000, + DI_FLAGSEX_APPENDDRIVERLIST = 0x00040000, + DI_FLAGSEX_PREINSTALLBACKUP = 0x00080000, + DI_FLAGSEX_BACKUPONREPLACE = 0x00100000, + DI_FLAGSEX_DRIVERLIST_FROM_URL = 0x00200000, + DI_FLAGSEX_RESERVED1 = 0x00400000, + DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS = 0x00800000, + DI_FLAGSEX_POWERPAGE_ADDED = 0x01000000 +} + +enum : DWORD { + DIBCI_NOINSTALLCLASS = 0x00000001, + DIBCI_NODISPLAYCLASS = 0x00000002 +} + +enum : DWORD { + DICD_GENERATE_ID = 0x00000001, + DICD_INHERIT_CLASSDRVS = 0x00000002 +} + +enum : DWORD { + DICS_ENABLE = 1, + DICS_DISABLE, + DICS_PROPCHANGE, + DICS_START, + DICS_STOP // = 5 +} + +enum : DWORD { + DICS_FLAG_GLOBAL = 1, + DICS_FLAG_CONFIGSPECIFIC = 2, + DICS_FLAG_CONFIGGENERAL = 4 +} + +alias UINT DI_FUNCTION; + +enum : DI_FUNCTION { + DIF_SELECTDEVICE = 1, + DIF_INSTALLDEVICE, + DIF_ASSIGNRESOURCES, + DIF_PROPERTIES, + DIF_REMOVE, + DIF_FIRSTTIMESETUP, + DIF_FOUNDDEVICE, + DIF_SELECTCLASSDRIVERS, + DIF_VALIDATECLASSDRIVERS, + DIF_INSTALLCLASSDRIVERS, + DIF_CALCDISKSPACE, + DIF_DESTROYPRIVATEDATA, + DIF_VALIDATEDRIVER, + DIF_MOVEDEVICE, + DIF_DETECT, + DIF_INSTALLWIZARD, + DIF_DESTROYWIZARDDATA, + DIF_PROPERTYCHANGE, + DIF_ENABLECLASS, + DIF_DETECTVERIFY, + DIF_INSTALLDEVICEFILES, + DIF_UNREMOVE, + DIF_SELECTBESTCOMPATDRV, + DIF_ALLOW_INSTALL, + DIF_REGISTERDEVICE, + DIF_NEWDEVICEWIZARD_PRESELECT, + DIF_NEWDEVICEWIZARD_SELECT, + DIF_NEWDEVICEWIZARD_PREANALYZE, + DIF_NEWDEVICEWIZARD_POSTANALYZE, + DIF_NEWDEVICEWIZARD_FINISHINSTALL, + DIF_UNUSED1, + DIF_INSTALLINTERFACES, + DIF_DETECTCANCEL, + DIF_REGISTER_COINSTALLERS, + DIF_ADDPROPERTYPAGE_ADVANCED, + DIF_ADDPROPERTYPAGE_BASIC, + DIF_RESERVED1, + DIF_TROUBLESHOOTER, + DIF_POWERMESSAGEWAKE // = 39 +} + +enum : DWORD { + DIGCF_DEFAULT = 0x00000001, + DIGCF_PRESENT = 0x00000002, + DIGCF_ALLCLASSES = 0x00000004, + DIGCF_PROFILE = 0x00000008, + DIGCF_DEVICEINTERFACE = 0x00000010 +} + +deprecated enum : DWORD { + DIGCF_INTERFACEDEVICE = DIGCF_DEVICEINTERFACE +} + +enum : DWORD { + DIGCDP_FLAG_BASIC = 0x00000001, + DIGCDP_FLAG_ADVANCED = 0x00000002 +} + +enum : DWORD { + DIOCR_INSTALLER = 0x00000001, + DIOCR_INTERFACE = 0x00000002 +} + +enum : DWORD { + DIODI_NO_ADD = 0x00000001 +} + +enum : DWORD { + DIOD_INHERIT_CLASSDRVS = 0x00000002, + DIOD_CANCEL_REMOVE = 0x00000004 +} + +enum : DWORD { + DIREG_DEV = 0x00000001, + DIREG_DRV = 0x00000002, + DIREG_BOTH = 0x00000004 +} + +enum : int { + DIRID_ABSOLUTE = -1, + DIRID_NULL = 0, + DIRID_SRCPATH = 1, + DIRID_WINDOWS = 10, + DIRID_SYSTEM = 11, + DIRID_DRIVERS = 12, + DIRID_IOSUBSYS = DIRID_DRIVERS, + DIRID_INF = 17, + DIRID_HELP = 18, + DIRID_FONTS = 20, + DIRID_VIEWERS = 21, + DIRID_COLOR = 23, + DIRID_APPS = 24, + DIRID_SHARED = 25, + DIRID_BOOT = 30, + DIRID_SYSTEM16 = 50, + DIRID_SPOOL = 51, + DIRID_SPOOLDRIVERS = 52, + DIRID_USERPROFILE = 53, + DIRID_LOADER = 54, + DIRID_PRINTPROCESSOR = 55, + DIRID_DEFAULT = DIRID_SYSTEM +} + +enum : int { + DIRID_COMMON_STARTMENU = 16406, + DIRID_COMMON_PROGRAMS = 16407, + DIRID_COMMON_STARTUP = 16408, + DIRID_COMMON_DESKTOPDIRECTORY = 16409, + DIRID_COMMON_FAVORITES = 16415, + DIRID_COMMON_APPDATA = 16419, + DIRID_PROGRAM_FILES = 16422, + DIRID_SYSTEM_X86 = 16425, + DIRID_PROGRAM_FILES_X86 = 16426, + DIRID_PROGRAM_FILES_COMMON = 16427, + DIRID_PROGRAM_FILES_COMMONX86 = 16428, + DIRID_COMMON_TEMPLATES = 16429, + DIRID_COMMON_DOCUMENTS = 16430, + DIRID_USER = 0x8000, + DIRID_ABSOLUTE_16BIT = 0xffff +} + +enum : DWORD { + DMI_MASK = 0x00000001, + DMI_BKCOLOR = 0x00000002, + DMI_USERECT = 0x00000004 +} + +enum : DWORD { + DNF_DUPDESC = 0x00000001, + DNF_OLDDRIVER = 0x00000002, + DNF_EXCLUDEFROMLIST = 0x00000004, + DNF_NODRIVER = 0x00000008, + DNF_LEGACYINF = 0x00000010, + DNF_CLASS_DRIVER = 0x00000020, + DNF_COMPATIBLE_DRIVER = 0x00000040, + DNF_INET_DRIVER = 0x00000080, + DNF_UNUSED1 = 0x00000100, + DNF_INDEXED_DRIVER = 0x00000200, + DNF_OLD_INET_DRIVER = 0x00000400, + DNF_BAD_DRIVER = 0x00000800, + DNF_DUPPROVIDER = 0x00001000 +} + +enum : UINT { + DPROMPT_SUCCESS, + DPROMPT_CANCEL, + DPROMPT_SKIPFILE, + DPROMPT_BUFFERTOOSMALL, + DPROMPT_OUTOFMEMORY // = 4 +} + +enum : DWORD { + DRIVER_HARDWAREID_RANK = 0x00000FFF, + DRIVER_COMPATID_RANK = 0x00003FFF, + DRIVER_UNTRUSTED_RANK = 0x00008000, + DRIVER_UNTRUSTED_HARDWAREID_RANK = 0x00008FFF, + DRIVER_UNTRUSTED_COMPATID_RANK = 0x0000BFFF, + DRIVER_W9X_SUSPECT_RANK = 0x0000C000, + DRIVER_W9X_SUSPECT_HARDWAREID_RANK = 0x0000CFFF, + DRIVER_W9X_SUSPECT_COMPATID_RANK = 0x0000FFFF +} + +enum : DWORD { + DYNAWIZ_FLAG_PAGESADDED = 0x00000001, + DYNAWIZ_FLAG_INSTALLDET_NEXT = 0x00000002, + DYNAWIZ_FLAG_INSTALLDET_PREV = 0x00000004, + DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT = 0x00000008 +} + +enum : WORD { + ENABLECLASS_QUERY, + ENABLECLASS_SUCCESS, + ENABLECLASS_FAILURE // = 2 +} + +enum : DWORD { + ERROR_EXPECTED_SECTION_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0, + ERROR_BAD_SECTION_NAME_LINE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 1, + ERROR_SECTION_NAME_TOO_LONG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 2, + ERROR_GENERAL_SYNTAX = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 3, + ERROR_WRONG_INF_STYLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x100, + ERROR_NOT_INSTALLED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x1000, + ERROR_SECTION_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x101, + ERROR_LINE_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x102, + ERROR_NO_BACKUP = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x103, + ERROR_NO_ASSOCIATED_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x200, + ERROR_CLASS_MISMATCH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x201, + ERROR_DUPLICATE_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x202, + ERROR_NO_DRIVER_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x203, + ERROR_KEY_DOES_NOT_EXIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x204, + ERROR_INVALID_DEVINST_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x205, + ERROR_INVALID_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x206, + ERROR_DEVINST_ALREADY_EXISTS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x207, + ERROR_DEVINFO_NOT_REGISTERED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x208, + ERROR_INVALID_REG_PROPERTY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x209, + ERROR_NO_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20A, + ERROR_NO_SUCH_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20B, + ERROR_CANT_LOAD_CLASS_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20C, + ERROR_INVALID_CLASS_INSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20D, + ERROR_DI_DO_DEFAULT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20E, + ERROR_DI_NOFILECOPY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20F, + ERROR_INVALID_HWPROFILE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x210, + ERROR_NO_DEVICE_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x211, + ERROR_DEVINFO_LIST_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x212, + ERROR_DEVINFO_DATA_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x213, + ERROR_DI_BAD_PATH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x214, + ERROR_NO_CLASSINSTALL_PARAMS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x215, + ERROR_FILEQUEUE_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x216, + ERROR_BAD_SERVICE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x217, + ERROR_NO_CLASS_DRIVER_LIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x218, + ERROR_NO_ASSOCIATED_SERVICE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x219, + ERROR_NO_DEFAULT_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21A, + ERROR_DEVICE_INTERFACE_ACTIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21B, + ERROR_DEVICE_INTERFACE_REMOVED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21C, + ERROR_BAD_INTERFACE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21D, + ERROR_NO_SUCH_INTERFACE_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21E, + ERROR_INVALID_REFERENCE_STRING = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21F, + ERROR_INVALID_MACHINENAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x220, + ERROR_REMOTE_COMM_FAILURE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x221, + ERROR_MACHINE_UNAVAILABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x222, + ERROR_NO_CONFIGMGR_SERVICES = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x223, + ERROR_INVALID_PROPPAGE_PROVIDER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x224, + ERROR_NO_SUCH_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x225, + ERROR_DI_POSTPROCESSING_REQUIRED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x226, + ERROR_INVALID_COINSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x227, + ERROR_NO_COMPAT_DRIVERS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x228, + ERROR_NO_DEVICE_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x229, + ERROR_INVALID_INF_LOGCONFIG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22A, + ERROR_DI_DONT_INSTALL = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22B, + ERROR_INVALID_FILTER_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22C, + ERROR_NON_WINDOWS_NT_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22D, + ERROR_NON_WINDOWS_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22E, + ERROR_NO_CATALOG_FOR_OEM_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22F, + ERROR_DEVINSTALL_QUEUE_NONNATIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x230, + ERROR_NOT_DISABLEABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x231, + ERROR_CANT_REMOVE_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x232 +} + +deprecated enum : DWORD { + ERROR_NO_DEFAULT_INTERFACE_DEVICE = ERROR_NO_DEFAULT_DEVICE_INTERFACE, + ERROR_INTERFACE_DEVICE_ACTIVE = ERROR_DEVICE_INTERFACE_ACTIVE, + ERROR_INTERFACE_DEVICE_REMOVED = ERROR_DEVICE_INTERFACE_REMOVED, + ERROR_NO_SUCH_INTERFACE_DEVICE = ERROR_NO_SUCH_DEVICE_INTERFACE, +} + +enum : UINT { + FILEOP_COPY, + FILEOP_RENAME, + FILEOP_DELETE, + FILEOP_BACKUP, + FILEOP_NEWPATH, // = 4 + FILEOP_ABORT = 0, + FILEOP_DOIT, + FILEOP_SKIP, // = 2 + FILEOP_RETRY = FILEOP_DOIT +} + +enum : UINT { + FILE_COMPRESSION_NONE, + FILE_COMPRESSION_WINLZA, + FILE_COMPRESSION_MSZIP, + FILE_COMPRESSION_NTCAB // = 3 +} + +enum : DWORD { + FLG_ADDREG_TYPE_SZ = 0x00000000, + FLG_ADDREG_BINVALUETYPE = 0x00000001, + FLG_ADDREG_NOCLOBBER = 0x00000002, + FLG_ADDREG_DELVAL = 0x00000004, + FLG_ADDREG_APPEND = 0x00000008, + FLG_ADDREG_KEYONLY = 0x00000010, + FLG_ADDREG_OVERWRITEONLY = 0x00000020, + FLG_ADDREG_TYPE_MULTI_SZ = 0x00010000, + FLG_ADDREG_TYPE_EXPAND_SZ = 0x00020000, + FLG_ADDREG_TYPE_BINARY = 0x00000000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_DWORD = 0x00010000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_NONE = 0x00020000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_MASK = 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + FLG_ADDREG_64BITKEY = 0x00001000, + FLG_ADDREG_KEYONLY_COMMON = 0x00002000, + FLG_ADDREG_32BITKEY = 0x00004000, + FLG_ADDREG_DELREG_BIT = 0x00008000 + } +} + +enum : DWORD { + FLG_DELREG_VALUE = 0x00000000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + FLG_DELREG_TYPE_MASK = FLG_ADDREG_TYPE_MASK, + FLG_DELREG_TYPE_SZ = FLG_ADDREG_TYPE_SZ, + FLG_DELREG_TYPE_MULTI_SZ = FLG_ADDREG_TYPE_MULTI_SZ, + FLG_DELREG_TYPE_EXPAND_SZ = FLG_ADDREG_TYPE_EXPAND_SZ, + FLG_DELREG_TYPE_BINARY = FLG_ADDREG_TYPE_BINARY, + FLG_DELREG_TYPE_DWORD = FLG_ADDREG_TYPE_DWORD, + FLG_DELREG_TYPE_NONE = FLG_ADDREG_TYPE_NONE, + FLG_DELREG_64BITKEY = FLG_ADDREG_64BITKEY, + FLG_DELREG_KEYONLY_COMMON = FLG_ADDREG_KEYONLY_COMMON, + FLG_DELREG_32BITKEY = FLG_ADDREG_32BITKEY, + FLG_DELREG_OPERATION_MASK = 0x000000FE, + FLG_DELREG_MULTI_SZ_DELSTRING = 0x00000002 | FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT + } +} + +enum : DWORD { + FLG_BITREG_CLEARBITS = 0x00000000, + FLG_BITREG_SETBITS = 0x00000001 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + FLG_BITREG_64BITKEY = 0x00001000, + FLG_BITREG_32BITKEY = 0x00004000 + } +} + +enum : DWORD { + FLG_PROFITEM_CURRENTUSER = 0x00000001, + FLG_PROFITEM_DELETE = 0x00000002, + FLG_PROFITEM_GROUP = 0x00000004, + FLG_PROFITEM_CSIDL = 0x00000008 +} + +enum : DWORD { + FLG_REGSVR_DLLREGISTER = 0x00000001, + FLG_REGSVR_DLLINSTALL = 0x00000002 +} + +enum { + IDD_DYNAWIZ_FIRSTPAGE = 10000, + IDD_DYNAWIZ_SELECT_PREVPAGE, + IDD_DYNAWIZ_SELECT_NEXTPAGE, + IDD_DYNAWIZ_ANALYZE_PREVPAGE, + IDD_DYNAWIZ_ANALYZE_NEXTPAGE, // = 1004 + IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE = 10006, + IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE, + IDD_DYNAWIZ_INSTALLDETECTED_NODEVS, + IDD_DYNAWIZ_SELECTDEV_PAGE, + IDD_DYNAWIZ_ANALYZEDEV_PAGE, + IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE, + IDD_DYNAWIZ_SELECTCLASS_PAGE, // = 10012 + MIN_IDD_DYNAWIZ_RESOURCE_ID = 10000, + MAX_IDD_DYNAWIZ_RESOURCE_ID = 11000 +} + +enum : DWORD { + IDF_NOBROWSE = 0x00000001, + IDF_NOSKIP = 0x00000002, + IDF_NODETAILS = 0x00000004, + IDF_NOCOMPRESSED = 0x00000008, + IDF_CHECKFIRST = 0x00000100, + IDF_NOBEEP = 0x00000200, + IDF_NOFOREGROUND = 0x00000400, + IDF_WARNIFSKIP = 0x00000800 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + IDF_NOREMOVABLEMEDIAPROMPT = 0x00001000, + IDF_USEDISKNAMEASPROMPT = 0x00002000, + IDF_OEMDISK = 0x80000000 + } +} + +enum { + IDI_RESOURCEFIRST = 159, + IDI_RESOURCE = 159, + IDI_RESOURCELAST = 161, + IDI_RESOURCEOVERLAYFIRST = 161, + IDI_RESOURCEOVERLAYLAST = 161, + IDI_CONFLICT = 161, + IDI_PROBLEM_OVL = 500, + IDI_DISABLED_OVL = 501, + IDI_FORCED_OVL = 502, + IDI_CLASSICON_OVERLAYFIRST = 500, + IDI_CLASSICON_OVERLAYLAST = 502 +} + +enum : DWORD { + INF_STYLE_NONE = 0x00000000, + INF_STYLE_OLDNT = 0x00000001, + INF_STYLE_WIN4 = 0x00000002, + INF_STYLE_CACHE_ENABLE = 0x00000010, + INF_STYLE_CACHE_DISABLE = 0x00000020 +} + +enum : DWORD { + INFINFO_INF_SPEC_IS_HINF = 1, + INFINFO_INF_NAME_IS_ABSOLUTE, + INFINFO_DEFAULT_SEARCH, + INFINFO_REVERSE_DEFAULT_SEARCH, + INFINFO_INF_PATH_LIST_SEARCH // = 5 +} + +alias DWORD LogSeverity; +enum : LogSeverity { + LogSevInformation, + LogSevWarning, + LogSevError, + LogSevFatalError, + LogSevMaximum // = 4 +} + +const MAX_INSTALLWIZARD_DYNAPAGES = 20; + +enum : DWORD { + NDW_INSTALLFLAG_DIDFACTDEFS = 0x00000001, + NDW_INSTALLFLAG_HARDWAREALLREADYIN = 0x00000002, + NDW_INSTALLFLAG_NEEDSHUTDOWN = 0x00000200, + NDW_INSTALLFLAG_EXPRESSINTRO = 0x00000400, + NDW_INSTALLFLAG_SKIPISDEVINSTALLED = 0x00000800, + NDW_INSTALLFLAG_NODETECTEDDEVS = 0x00001000, + NDW_INSTALLFLAG_INSTALLSPECIFIC = 0x00002000, + NDW_INSTALLFLAG_SKIPCLASSLIST = 0x00004000, + NDW_INSTALLFLAG_CI_PICKED_OEM = 0x00008000, + NDW_INSTALLFLAG_PCMCIAMODE = 0x00010000, + NDW_INSTALLFLAG_PCMCIADEVICE = 0x00020000, + NDW_INSTALLFLAG_USERCANCEL = 0x00040000, + NDW_INSTALLFLAG_KNOWNCLASS = 0x00080000, + NDW_INSTALLFLAG_NEEDRESTART = 0x00000080, + NDW_INSTALLFLAG_NEEDREBOOT = 0x00000100 +} + +enum : DWORD { + SETDIRID_NOT_FULL_PATH = 0x00000001 +} + +enum : DWORD { + SP_COPY_DELETESOURCE = 0x0000001, + SP_COPY_REPLACEONLY = 0x0000002, + SP_COPY_NEWER = 0x0000004, + SP_COPY_NEWER_OR_SAME = 0x0000004, + SP_COPY_NOOVERWRITE = 0x0000008, + SP_COPY_NODECOMP = 0x0000010, + SP_COPY_LANGUAGEAWARE = 0x0000020, + SP_COPY_SOURCE_ABSOLUTE = 0x0000040, + SP_COPY_SOURCEPATH_ABSOLUTE = 0x0000080, + SP_COPY_IN_USE_NEEDS_REBOOT = 0x0000100, + SP_COPY_FORCE_IN_USE = 0x0000200, + SP_COPY_NOSKIP = 0x0000400, + SP_FLAG_CABINETCONTINUATION = 0x0000800, + SP_COPY_FORCE_NOOVERWRITE = 0x0001000, + SP_COPY_FORCE_NEWER = 0x0002000, + SP_COPY_WARNIFSKIP = 0x0004000, + SP_COPY_NOBROWSE = 0x0008000, + SP_COPY_NEWER_ONLY = 0x0010000, + SP_COPY_SOURCE_SIS_MASTER = 0x0020000, + SP_COPY_OEMINF_CATALOG_ONLY = 0x0040000, + SP_COPY_REPLACE_BOOT_FILE = 0x0080000, + SP_COPY_NOPRUNE = 0x0100000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + SP_COPY_OEM_F6_INF = 0x0200000 + } +} + +enum : DWORD { + SPCRP_SECURITY = 23, + SPCRP_SECURITY_SDS, + SPCRP_DEVTYPE, + SPCRP_EXCLUSIVE, + SPCRP_CHARACTERISTICS, + SPCRP_MAXIMUM_PROPERTY // = 28 +} + +enum : DWORD { + SPDIT_NODRIVER, + SPDIT_CLASSDRIVER, + SPDIT_COMPATDRIVER // = 2 +} + +enum : DWORD { + SPDRP_DEVICEDESC, + SPDRP_HARDWAREID, + SPDRP_COMPATIBLEIDS, + SPDRP_UNUSED0, + SPDRP_SERVICE, + SPDRP_UNUSED1, + SPDRP_UNUSED2, + SPDRP_CLASS, + SPDRP_CLASSGUID, + SPDRP_DRIVER, + SPDRP_CONFIGFLAGS, + SPDRP_MFG, + SPDRP_FRIENDLYNAME, + SPDRP_LOCATION_INFORMATION, + SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, + SPDRP_CAPABILITIES, + SPDRP_UI_NUMBER, + SPDRP_UPPERFILTERS, + SPDRP_LOWERFILTERS, + SPDRP_BUSTYPEGUID, + SPDRP_LEGACYBUSTYPE, + SPDRP_BUSNUMBER, + SPDRP_ENUMERATOR_NAME, + SPDRP_SECURITY, + SPDRP_SECURITY_SDS, + SPDRP_DEVTYPE, + SPDRP_EXCLUSIVE, + SPDRP_CHARACTERISTICS, + SPDRP_ADDRESS, // = 28 + SPDRP_UI_NUMBER_DESC_FORMAT = 30, + SPDRP_MAXIMUM_PROPERTY = 31 +} + +enum : UINT { + SPDSL_IGNORE_DISK = 1, + SPDSL_DISALLOW_NEGATIVE_ADJUST +} + +enum : UINT { + SPFILENOTIFY_STARTQUEUE = 1, + SPFILENOTIFY_ENDQUEUE, + SPFILENOTIFY_STARTSUBQUEUE, + SPFILENOTIFY_ENDSUBQUEUE, + SPFILENOTIFY_STARTDELETE, + SPFILENOTIFY_ENDDELETE, + SPFILENOTIFY_DELETEERROR, + SPFILENOTIFY_STARTRENAME, + SPFILENOTIFY_ENDRENAME, + SPFILENOTIFY_RENAMEERROR, + SPFILENOTIFY_STARTCOPY, + SPFILENOTIFY_ENDCOPY, + SPFILENOTIFY_COPYERROR, + SPFILENOTIFY_NEEDMEDIA, + SPFILENOTIFY_QUEUESCAN, + SPFILENOTIFY_CABINETINFO, + SPFILENOTIFY_FILEINCABINET, + SPFILENOTIFY_NEEDNEWCABINET, + SPFILENOTIFY_FILEEXTRACTED, + SPFILENOTIFY_FILEOPDELAYED, + SPFILENOTIFY_STARTBACKUP, + SPFILENOTIFY_BACKUPERROR, + SPFILENOTIFY_ENDBACKUP, + SPFILENOTIFY_QUEUESCAN_EX, + SPFILENOTIFY_STARTREGISTRATION, // = 25 + SPFILENOTIFY_ENDREGISTRATION = 32, + SPFILENOTIFY_LANGMISMATCH = 0x00010000, + SPFILENOTIFY_TARGETEXISTS = 0x00020000, + SPFILENOTIFY_TARGETNEWER = 0x00040000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : UINT { + SPFILENOTIFY_QUEUESCAN_SIGNERINFO = 0x00000040 + } +} + +enum : DWORD { + SPFILELOG_SYSTEMLOG = 0x00000001, + SPFILELOG_OEMFILE = 0x00000001, + SPFILELOG_FORCENEW = 0x00000002, + SPFILELOG_QUERYONLY = 0x00000004 +} + +enum : INT { + SPFILEQ_FILE_IN_USE = 0x00000001, + SPFILEQ_REBOOT_RECOMMENDED = 0x00000002, + SPFILEQ_REBOOT_IN_PROGRESS = 0x00000004 +} + +enum : DWORD { + SPINT_ACTIVE = 0x00000001, + SPINT_DEFAULT = 0x00000002, + SPINT_REMOVED = 0x00000004 +} + +deprecated enum : DWORD { + SPID_ACTIVE = SPINT_ACTIVE, + SPID_DEFAULT = SPINT_DEFAULT, + SPID_REMOVED = SPINT_REMOVED +} + +enum : UINT { + SPINST_LOGCONFIG = 0x00000001, + SPINST_INIFILES = 0x00000002, + SPINST_REGISTRY = 0x00000004, + SPINST_INI2REG = 0x00000008, + SPINST_FILES = 0x00000010, + SPINST_BITREG = 0x00000020, + SPINST_REGSVR = 0x00000040, + SPINST_UNREGSVR = 0x00000080, + SPINST_PROFILEITEMS = 0x00000100, + SPINST_SINGLESECTION = 0x00010000, + SPINST_LOGCONFIG_IS_FORCED = 0x00020000, + SPINST_LOGCONFIGS_ARE_OVERRIDES = 0x00040000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : UINT { + SPINST_COPYINF = 0x00000200, + SPINST_ALL = 0x000003ff, + SPINST_REGISTERCALLBACKAWARE = 0x00080000 + } +} else { + enum : UINT { + SPINST_ALL = 0x000001ff + } +} + +enum : DWORD { + SPOST_NONE, + SPOST_PATH, + SPOST_URL, + SPOST_MAX // = 3 +} + +enum : DWORD { + SPPSR_SELECT_DEVICE_RESOURCES = 1, + SPPSR_ENUM_BASIC_DEVICE_PROPERTIES, + SPPSR_ENUM_ADV_DEVICE_PROPERTIES +} + +enum : DWORD { + SPQ_SCAN_FILE_PRESENCE = 0x00000001, + SPQ_SCAN_FILE_VALIDITY = 0x00000002, + SPQ_SCAN_USE_CALLBACK = 0x00000004, + SPQ_SCAN_USE_CALLBACKEX = 0x00000008, + SPQ_SCAN_INFORM_USER = 0x00000010, + SPQ_SCAN_PRUNE_COPY_QUEUE = 0x00000020 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + SPQ_SCAN_USE_CALLBACK_SIGNERINFO = 0x00000040, + SPQ_SCAN_PRUNE_DELREN = 0x00000080 + } +} + +enum : UINT_PTR { + SPQ_DELAYED_COPY = 0x00000001 +} + +enum : DWORD { + SPRDI_FIND_DUPS = 0x00000001, +} + +enum : DWORD { + SPSVCINST_TAGTOFRONT = 0x00000001, + SPSVCINST_ASSOCSERVICE = 0x00000002, + SPSVCINST_DELETEEVENTLOGENTRY = 0x00000004, + SPSVCINST_NOCLOBBER_DISPLAYNAME = 0x00000008, + SPSVCINST_NOCLOBBER_STARTTYPE = 0x00000010, + SPSVCINST_NOCLOBBER_ERRORCONTROL = 0x00000020, + SPSVCINST_NOCLOBBER_LOADORDERGROUP = 0x00000040, + SPSVCINST_NOCLOBBER_DEPENDENCIES = 0x00000080, + SPSVCINST_NOCLOBBER_DESCRIPTION = 0x00000100, + SPSVCINST_STOPSERVICE = 0x00000200 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + SPSVCINST_CLOBBER_SECURITY = 0x00000400 + } +} + +enum : DWORD { + SPWPT_SELECTDEVICE = 0x00000001 +} + +enum : DWORD { + SPWP_USE_DEVINFO_DATA = 0x00000001 +} + +enum : UINT { + SRCINFO_PATH = 1, + SRCINFO_TAGFILE, + SRCINFO_DESCRIPTION, + SRCINFO_FLAGS // = 4 +} + +enum : DWORD { + SRCLIST_TEMPORARY = 0x00000001, + SRCLIST_NOBROWSE = 0x00000002, + SRCLIST_SYSTEM = 0x00000010, + SRCLIST_USER = 0x00000020, + SRCLIST_SYSIFADMIN = 0x00000040, + SRCLIST_SUBDIRS = 0x00000100, + SRCLIST_APPEND = 0x00000200, + SRCLIST_NOSTRIPPLATFORM = 0x00000400 +} + +alias PVOID HINF; +alias PVOID HDSKSPC; +mixin DECLARE_HANDLE!("HDEVINFO"); +alias PVOID HSPFILEQ; +alias PVOID HSPFILELOG; + +enum SetupFileLogInfo { + SetupFileLogSourceFilename, + SetupFileLogChecksum, + SetupFileLogDiskTagfile, + SetupFileLogDiskDescription, + SetupFileLogOtherInfo, + SetupFileLogMax +} + +align(1): + +struct INFCONTEXT { + PVOID Inf; + PVOID CurrentInf; + UINT Section; + UINT Line; +} +alias INFCONTEXT* PINFCONTEXT; + +struct SP_INF_INFORMATION { + DWORD InfStyle; + DWORD InfCount; + BYTE[1] _VersionData; + BYTE* VersionData() { return _VersionData.ptr; } +} +alias SP_INF_INFORMATION* PSP_INF_INFORMATION; + +struct SP_ALTPLATFORM_INFO { + DWORD cbSize = SP_ALTPLATFORM_INFO.sizeof; + DWORD Platform; + DWORD MajorVersion; + DWORD MinorVersion; + WORD ProcessorArchitecture; + WORD Reserved; +} +alias SP_ALTPLATFORM_INFO* PSP_ALTPLATFORM_INFO; + +struct SP_ORIGINAL_FILE_INFO_A { + DWORD cbSize = SP_ORIGINAL_FILE_INFO_A.sizeof; + CHAR[MAX_PATH] OriginalInfName; + CHAR[MAX_PATH] OriginalCatalogName; +} +alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO_A; + +struct SP_ORIGINAL_FILE_INFO_W { + DWORD cbSize = SP_ORIGINAL_FILE_INFO_W.sizeof; + WCHAR[MAX_PATH] OriginalInfName; + WCHAR[MAX_PATH] OriginalCatalogName; +} +alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO_W; + +struct FILEPATHS_A { + PCSTR Target; + PCSTR Source; + UINT Win32Error; + DWORD Flags; +} +alias FILEPATHS_A* PFILEPATHS_A; + +struct FILEPATHS_W { + PCWSTR Target; + PCWSTR Source; + UINT Win32Error; + DWORD Flags; +} +alias FILEPATHS_W* PFILEPATHS_W; + +struct SOURCE_MEDIA_A { + PCSTR Reserved; + PCSTR Tagfile; + PCSTR Description; + PCSTR SourcePath; + PCSTR SourceFile; + DWORD Flags; +} +alias SOURCE_MEDIA_A* PSOURCE_MEDIA_A; + +struct SOURCE_MEDIA_W { + PCWSTR Reserved; + PCWSTR Tagfile; + PCWSTR Description; + PCWSTR SourcePath; + PCWSTR SourceFile; + DWORD Flags; +} +alias SOURCE_MEDIA_W* PSOURCE_MEDIA_W; + +struct CABINET_INFO_A { + PCSTR CabinetPath; + PCSTR CabinetFile; + PCSTR DiskName; + USHORT SetId; + USHORT CabinetNumber; +} +alias CABINET_INFO_A* PCABINET_INFO_A; + +struct CABINET_INFO_W { + PCWSTR CabinetPath; + PCWSTR CabinetFile; + PCWSTR DiskName; + USHORT SetId; + USHORT CabinetNumber; +} +alias CABINET_INFO_W* PCABINET_INFO_W; + +struct FILE_IN_CABINET_INFO_A { + PCSTR NameInCabinet; + DWORD FileSize; + DWORD Win32Error; + WORD DosDate; + WORD DosTime; + WORD DosAttribs; + CHAR[MAX_PATH] FullTargetName; +} +alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO_A; + +struct FILE_IN_CABINET_INFO_W { + PCWSTR NameInCabinet; + DWORD FileSize; + DWORD Win32Error; + WORD DosDate; + WORD DosTime; + WORD DosAttribs; + WCHAR[MAX_PATH] FullTargetName; +} +alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO_W; + +struct SP_FILE_COPY_PARAMS_A { + DWORD cbSize = SP_FILE_COPY_PARAMS_A.sizeof; + HSPFILEQ QueueHandle; + PCSTR SourceRootPath; + PCSTR SourcePath; + PCSTR SourceFilename; + PCSTR SourceDescription; + PCSTR SourceTagfile; + PCSTR TargetDirectory; + PCSTR TargetFilename; + DWORD CopyStyle; + HINF LayoutInf; + PCSTR SecurityDescriptor; +} +alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS_A; + +struct SP_FILE_COPY_PARAMS_W { + DWORD cbSize = SP_FILE_COPY_PARAMS_W.sizeof; + HSPFILEQ QueueHandle; + PCWSTR SourceRootPath; + PCWSTR SourcePath; + PCWSTR SourceFilename; + PCWSTR SourceDescription; + PCWSTR SourceTagfile; + PCWSTR TargetDirectory; + PCWSTR TargetFilename; + DWORD CopyStyle; + HINF LayoutInf; + PCWSTR SecurityDescriptor; +} +alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS_W; + +struct SP_DEVINFO_DATA { + DWORD cbSize = SP_DEVINFO_DATA.sizeof; + GUID ClassGuid; + DWORD DevInst; + ULONG_PTR Reserved; +} +alias SP_DEVINFO_DATA* PSP_DEVINFO_DATA; + +struct SP_DEVICE_INTERFACE_DATA { + DWORD cbSize = SP_DEVICE_INTERFACE_DATA.sizeof; + GUID InterfaceClassGuid; + DWORD Flags; + ULONG_PTR Reserved; +} +alias SP_DEVICE_INTERFACE_DATA* PSP_DEVICE_INTERFACE_DATA; +deprecated alias SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA; +deprecated alias SP_DEVICE_INTERFACE_DATA* PSP_INTERFACE_DEVICE_DATA; + +struct SP_DEVICE_INTERFACE_DETAIL_DATA_A { + DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_A.sizeof; + CHAR[1] _DevicePath; + CHAR* DevicePath() { return _DevicePath.ptr; } +} +alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA_A; + +struct SP_DEVICE_INTERFACE_DETAIL_DATA_W { + DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_W.sizeof; + WCHAR[1] _DevicePath; + WCHAR* DevicePath() { return _DevicePath.ptr; } +} +alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA_W; + +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A; +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA_A; +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W; +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA_W; + +struct SP_DEVINFO_LIST_DETAIL_DATA_A { + DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_A.sizeof; + GUID ClassGuid; + HANDLE RemoteMachineHandle; + CHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; +} +alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA_A; + +struct SP_DEVINFO_LIST_DETAIL_DATA_W { + DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_W.sizeof; + GUID ClassGuid; + HANDLE RemoteMachineHandle; + WCHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; +} +alias SP_DEVINFO_LIST_DETAIL_DATA_W* PSP_DEVINFO_LIST_DETAIL_DATA_W; + +extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_A; +extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_W; + +struct SP_DEVINSTALL_PARAMS_A { + DWORD cbSize = SP_DEVINSTALL_PARAMS_A.sizeof; + DWORD Flags; + DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK_A InstallMsgHandler; + PVOID InstallMsgHandlerContext; + HSPFILEQ FileQueue; + ULONG_PTR ClassInstallReserved; + DWORD Reserved; + CHAR[MAX_PATH] DriverPath; +} +alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS_A; + +struct SP_DEVINSTALL_PARAMS_W { + DWORD cbSize = SP_DEVINSTALL_PARAMS_W.sizeof; + DWORD Flags; + DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK_W InstallMsgHandler; + PVOID InstallMsgHandlerContext; + HSPFILEQ FileQueue; + ULONG_PTR ClassInstallReserved; + DWORD Reserved; + WCHAR[MAX_PATH] DriverPath; +} +alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS_W; + +struct SP_CLASSINSTALL_HEADER { + DWORD cbSize = SP_CLASSINSTALL_HEADER.sizeof; + DI_FUNCTION InstallFunction; +} +alias SP_CLASSINSTALL_HEADER* PSP_CLASSINSTALL_HEADER; + +struct SP_ENABLECLASS_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + GUID ClassGuid; + DWORD EnableMessage; +} +alias SP_ENABLECLASS_PARAMS* PSP_ENABLECLASS_PARAMS; + +struct SP_MOVEDEV_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + SP_DEVINFO_DATA SourceDeviceInfoData; +} +alias SP_MOVEDEV_PARAMS* PSP_MOVEDEV_PARAMS; + +struct SP_PROPCHANGE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD StateChange; + DWORD Scope; + DWORD HwProfile; +} +alias SP_PROPCHANGE_PARAMS* PSP_PROPCHANGE_PARAMS; + +struct SP_REMOVEDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Scope; + DWORD HwProfile; +} +alias SP_REMOVEDEVICE_PARAMS* PSP_REMOVEDEVICE_PARAMS; + +struct SP_UNREMOVEDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Scope; + DWORD HwProfile; +} +alias SP_UNREMOVEDEVICE_PARAMS* PSP_UNREMOVEDEVICE_PARAMS; + +struct SP_SELECTDEVICE_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[MAX_TITLE_LEN] Title; + CHAR[MAX_INSTRUCTION_LEN] Instructions; + CHAR[MAX_LABEL_LEN] ListLabel; + CHAR[MAX_SUBTITLE_LEN] SubTitle; + BYTE[2] Reserved; +} +alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS_A; + +struct SP_SELECTDEVICE_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[MAX_TITLE_LEN] Title; + WCHAR[MAX_INSTRUCTION_LEN] Instructions; + WCHAR[MAX_LABEL_LEN] ListLabel; + WCHAR[MAX_SUBTITLE_LEN] SubTitle; +} +alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS_W; + +extern(Windows) alias BOOL function(PVOID, DWORD) PDETECT_PROGRESS_NOTIFY; + +struct SP_DETECTDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + PDETECT_PROGRESS_NOTIFY DetectProgressNotify; + PVOID ProgressNotifyParam; +} +alias SP_DETECTDEVICE_PARAMS* PSP_DETECTDEVICE_PARAMS; + +struct SP_INSTALLWIZARD_DATA { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Flags; + HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; + DWORD NumDynamicPages; + DWORD DynamicPageFlags; + DWORD PrivateFlags; + LPARAM PrivateData; + HWND hwndWizardDlg; +} +alias SP_INSTALLWIZARD_DATA* PSP_INSTALLWIZARD_DATA; + +struct SP_NEWDEVICEWIZARD_DATA { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Flags; + HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; + DWORD NumDynamicPages; + HWND hwndWizardDlg; +} +alias SP_NEWDEVICEWIZARD_DATA* PSP_NEWDEVICEWIZARD_DATA; +alias SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA; +alias SP_NEWDEVICEWIZARD_DATA* PSP_ADDPROPERTYPAGE_DATA; + +struct SP_TROUBLESHOOTER_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[MAX_PATH] ChmFile; + CHAR[MAX_PATH] HtmlTroubleShooter; +} +alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS_A; + +struct SP_TROUBLESHOOTER_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[MAX_PATH] ChmFile; + WCHAR[MAX_PATH] HtmlTroubleShooter; +} +alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS_W; + +struct SP_POWERMESSAGEWAKE_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[LINE_LEN*2] PowerMessageWake; +} +alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS_A; + +struct SP_POWERMESSAGEWAKE_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[LINE_LEN*2] PowerMessageWake; +} +alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS_W; + +struct SP_DRVINFO_DATA_V2_A { + DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + CHAR[LINE_LEN] Description; + CHAR[LINE_LEN] MfgName; + CHAR[LINE_LEN] ProviderName; + FILETIME DriverDate; + DWORDLONG DriverVersion; +} +alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_V2_A; + +struct SP_DRVINFO_DATA_V2_W { + DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] Description; + WCHAR[LINE_LEN] MfgName; + WCHAR[LINE_LEN] ProviderName; + FILETIME DriverDate; + DWORDLONG DriverVersion; +} +alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_V2_W; + +struct SP_DRVINFO_DATA_V1_A { + DWORD cbSize = SP_DRVINFO_DATA_V1_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + CHAR[LINE_LEN] Description; + CHAR[LINE_LEN] MfgName; + CHAR[LINE_LEN] ProviderName; +} +alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_V1_A; + +struct SP_DRVINFO_DATA_V1_W { + DWORD cbSize = SP_DRVINFO_DATA_V1_W.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] Description; + WCHAR[LINE_LEN] MfgName; + WCHAR[LINE_LEN] ProviderName; +} +alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_V1_W; + +version (Unicode) { + alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1; + alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2; +} else { + alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1; + alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2; +} +alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA_V1; +alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA_V2; + +static if(USE_SP_DRVINFO_DATA_V1) { + alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA; + alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA; +} else { + alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA; + alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA; +} + +extern(Windows) alias DWORD function(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINFO_DATA, PVOID) PSP_DETSIG_CMPPROC; + +struct SP_DRVINFO_DETAIL_DATA_A { + DWORD cbSize = SP_DRVINFO_DETAIL_DATA_A.sizeof; + FILETIME InfDate; + DWORD CompatIDsOffset; + DWORD CompatIDsLength; + ULONG_PTR Reserved; + CHAR[LINE_LEN] SectionName; + CHAR[MAX_PATH] InfFileName; + CHAR[LINE_LEN] DrvDescription; + CHAR[1] _HardwareID; + CHAR* HardwareID() { return _HardwareID.ptr; } +} +alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA_A; + +struct SP_DRVINFO_DETAIL_DATA_W { + DWORD cbSize = SP_DRVINFO_DETAIL_DATA_W.sizeof; + FILETIME InfDate; + DWORD CompatIDsOffset; + DWORD CompatIDsLength; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] SectionName; + WCHAR[MAX_PATH] InfFileName; + WCHAR[LINE_LEN] DrvDescription; + WCHAR[1] _HardwareID; + WCHAR* HardwareID() { return _HardwareID.ptr; } +} +alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA_W; + +struct SP_DRVINSTALL_PARAMS { + DWORD cbSize = SP_DRVINSTALL_PARAMS.sizeof; + DWORD Rank; + DWORD Flags; + DWORD_PTR PrivateData; + DWORD Reserved; +} +alias SP_DRVINSTALL_PARAMS* PSP_DRVINSTALL_PARAMS; + +struct COINSTALLER_CONTEXT_DATA { + BOOL PostProcessing; + DWORD InstallResult; + PVOID PrivateData; +} +alias COINSTALLER_CONTEXT_DATA* PCOINSTALLER_CONTEXT_DATA; + +struct SP_CLASSIMAGELIST_DATA { + DWORD cbSize = SP_CLASSIMAGELIST_DATA.sizeof; + HIMAGELIST ImageList; + ULONG_PTR Reserved; +} +alias SP_CLASSIMAGELIST_DATA* PSP_CLASSIMAGELIST_DATA; + +struct SP_PROPSHEETPAGE_REQUEST { + DWORD cbSize = SP_PROPSHEETPAGE_REQUEST.sizeof; + DWORD PageRequested; + HDEVINFO DeviceInfoSet; + PSP_DEVINFO_DATA DeviceInfoData; +} +alias SP_PROPSHEETPAGE_REQUEST* PSP_PROPSHEETPAGE_REQUEST; + +struct SP_BACKUP_QUEUE_PARAMS_A { + DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_A.sizeof; + CHAR[MAX_PATH] FullInfPath; + INT FilenameOffset; +} +alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS_A; + +struct SP_BACKUP_QUEUE_PARAMS_W { + DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_W.sizeof; + WCHAR[MAX_PATH] FullInfPath; + INT FilenameOffset; +} +alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS_W; + +version (Unicode) { + alias SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO; + alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO; + alias FILEPATHS_W FILEPATHS; + alias FILEPATHS_W* PFILEPATHS; + alias SOURCE_MEDIA_W SOURCE_MEDIA; + alias SOURCE_MEDIA_W* PSOURCE_MEDIA; + alias CABINET_INFO_W CABINET_INFO; + alias CABINET_INFO_W* PCABINET_INFO; + alias FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO; + alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO; + alias SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS; + alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA; + deprecated { + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA; + } + alias SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINFO_LIST_DETAIL_DATA_W *PSP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS; + alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS; + alias SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS; + alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS; + alias SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA; + alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA; + alias SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS; + alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS; +} else { + alias SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO; + alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO; + alias FILEPATHS_A FILEPATHS; + alias FILEPATHS_A* PFILEPATHS; + alias SOURCE_MEDIA_A SOURCE_MEDIA; + alias SOURCE_MEDIA_A* PSOURCE_MEDIA; + alias CABINET_INFO_A CABINET_INFO; + alias CABINET_INFO_A* PCABINET_INFO; + alias FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO; + alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO; + alias SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS; + alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA; + deprecated { + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA; + } + alias SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS; + alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS; + alias SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS; + alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS; + alias SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA; + alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA; + alias SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS; + alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS; +} + +extern (Windows) { + BOOL SetupAddInstallSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); + BOOL SetupAddInstallSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); + BOOL SetupAddSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); + BOOL SetupAddSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); + BOOL SetupAddToDiskSpaceListA(HDSKSPC, PCSTR, LONGLONG, UINT, PVOID, UINT); + BOOL SetupAddToDiskSpaceListW(HDSKSPC, PCWSTR, LONGLONG, UINT, PVOID, UINT); + BOOL SetupAddToSourceListA(DWORD, PCSTR); + BOOL SetupAddToSourceListW(DWORD, PCWSTR); + BOOL SetupQuerySourceListA(DWORD, PCSTR**List, PUINT); + BOOL SetupQuerySourceListW(DWORD, PCWSTR**List, PUINT); + BOOL SetupFreeSourceListA(PCSTR**List, UINT); + BOOL SetupFreeSourceListW(PCWSTR**List, UINT); + BOOL SetupAdjustDiskSpaceListA(HDSKSPC, LPCSTR, LONGLONG, PVOID, UINT); + BOOL SetupAdjustDiskSpaceListW(HDSKSPC, LPCWSTR, LONGLONG, PVOID, UINT); + UINT SetupBackupErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); + UINT SetupBackupErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupCancelTemporary(); + BOOL SetupCloseFileQueue(HSPFILEQ); + VOID SetupCloseInfFile(HINF); + VOID SetupCloseLog(); + BOOL SetupCommitFileQueueA(HWND, HSPFILEQ, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupCommitFileQueueW(HWND, HSPFILEQ, PSP_FILE_CALLBACK_W, PVOID); + UINT SetupCopyErrorA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, UINT, DWORD, PSTR, DWORD, PDWORD); + UINT SetupCopyErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupCopyOEMInfA(PCSTR, PCSTR, DWORD, DWORD, PSTR, DWORD, PDWORD, PSTR*); + BOOL SetupCopyOEMInfW(PCWSTR, PCWSTR, DWORD, DWORD, PWSTR, DWORD, PDWORD, PWSTR*); + HDSKSPC SetupCreateDiskSpaceListA(PVOID, DWORD, UINT); + HDSKSPC SetupCreateDiskSpaceListW(PVOID, DWORD, UINT); + DWORD SetupDecompressOrCopyFileA(PCSTR, PCSTR, PUINT); + DWORD SetupDecompressOrCopyFileW(PCWSTR, PCWSTR, PUINT); + UINT SetupDefaultQueueCallbackA(PVOID, UINT, UINT_PTR, UINT_PTR); + UINT SetupDefaultQueueCallbackW(PVOID, UINT, UINT_PTR, UINT_PTR); + UINT SetupDeleteErrorA(HWND, PCSTR, PCSTR, UINT, DWORD); + UINT SetupDeleteErrorW(HWND, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupDestroyDiskSpaceList(HDSKSPC); + BOOL SetupDiAskForOEMDisk(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiBuildClassInfoList(DWORD, LPGUID, DWORD, PDWORD); + BOOL SetupDiBuildClassInfoListExA(DWORD, LPGUID, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiBuildClassInfoListExW(DWORD, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiBuildDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); + BOOL SetupDiCallClassInstaller(DI_FUNCTION, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiCancelDriverInfoSearch(HDEVINFO); + BOOL SetupDiChangeState(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiClassGuidsFromNameA(PCSTR, LPGUID, DWORD, PDWORD); + BOOL SetupDiClassGuidsFromNameW(PCWSTR, LPGUID, DWORD, PDWORD); + BOOL SetupDiClassGuidsFromNameExA(PCSTR, LPGUID, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiClassGuidsFromNameExW(PCWSTR, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiClassNameFromGuidA(const(GUID)*, PSTR, DWORD, PDWORD); + BOOL SetupDiClassNameFromGuidW(const(GUID)*, PWSTR, DWORD, PDWORD); + BOOL SetupDiClassNameFromGuidExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiClassNameFromGuidExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiCreateDeviceInfoA(HDEVINFO, PCSTR, const(GUID)*, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiCreateDeviceInfoW(HDEVINFO, PCWSTR, const(GUID)*, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); + HDEVINFO SetupDiCreateDeviceInfoList(const(GUID)*, HWND); + HDEVINFO SetupDiCreateDeviceInfoListExA(const(GUID)*, HWND, PCSTR, PVOID); + HDEVINFO SetupDiCreateDeviceInfoListExW(const(GUID)*, HWND, PCWSTR, PVOID); + BOOL SetupDiCreateDeviceInterfaceA(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiCreateDeviceInterfaceW(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + HKEY SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCSTR); + HKEY SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCWSTR); + HKEY SetupDiCreateDevRegKeyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCSTR); + HKEY SetupDiCreateDevRegKeyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCWSTR); + BOOL SetupDiDeleteDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiDeleteDeviceInterfaceData(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD); + BOOL SetupDiDeleteDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD); + BOOL SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA); + BOOL SetupDiDestroyDeviceInfoList(HDEVINFO); + BOOL SetupDiDestroyDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); + INT SetupDiDrawMiniIcon(HDC, RECT, INT, DWORD); + BOOL SetupDiEnumDeviceInfo(HDEVINFO, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiEnumDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiEnumDriverInfoA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_A); + BOOL SetupDiEnumDriverInfoW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_W); + BOOL SetupDiGetActualSectionToInstallA(HINF, PCSTR, PSTR, DWORD, PDWORD, PSTR*); + BOOL SetupDiGetActualSectionToInstallW(HINF, PCWSTR, PWSTR, DWORD, PDWORD, PWSTR*); + BOOL SetupDiGetClassBitmapIndex(const(GUID)*, PINT); + BOOL SetupDiGetClassDescriptionA(const(GUID)*, PSTR, DWORD, PDWORD); + BOOL SetupDiGetClassDescriptionW(const(GUID)*, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetClassDescriptionExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetClassDescriptionExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetClassDevPropertySheetsA(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERA, DWORD, PDWORD, DWORD); + BOOL SetupDiGetClassDevPropertySheetsW(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERW, DWORD, PDWORD, DWORD); + HDEVINFO SetupDiGetClassDevsA(const(GUID)*, PCSTR, HWND, DWORD); + HDEVINFO SetupDiGetClassDevsW(const(GUID)*, PCWSTR, HWND, DWORD); + HDEVINFO SetupDiGetClassDevsExA(const(GUID)*, PCSTR, HWND, DWORD, HDEVINFO, PCSTR, PVOID); + HDEVINFO SetupDiGetClassDevsExW(const(GUID)*, PCWSTR, HWND, DWORD, HDEVINFO, PCWSTR, PVOID); + BOOL SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA, const(GUID)*, PINT); + BOOL SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA); + BOOL SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA, PCSTR, PVOID); + BOOL SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA, PCWSTR, PVOID); + BOOL SetupDiGetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); + BOOL SetupDiGetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); + BOOL SetupDiGetClassRegistryPropertyA(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetClassRegistryPropertyW(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetDeviceInfoListClass(HDEVINFO, LPGUID); + BOOL SetupDiGetDeviceInfoListDetailA(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_A); + BOOL SetupDiGetDeviceInfoListDetailW(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_W); + BOOL SetupDiGetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); + BOOL SetupDiGetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); + BOOL SetupDiGetDeviceInstanceIdA(HDEVINFO, PSP_DEVINFO_DATA, PSTR, DWORD, PDWORD); + BOOL SetupDiGetDeviceInstanceIdW(HDEVINFO, PSP_DEVINFO_DATA, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetDeviceInterfaceAlias(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, const(GUID)*, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiGetDeviceInterfaceDetailA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DWORD, PDWORD, PSP_DEVINFO_DATA); + BOOL SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DWORD, PDWORD, PSP_DEVINFO_DATA); + BOOL SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); + BOOL SetupDiGetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); + BOOL SetupDiGetDriverInfoDetailA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINFO_DETAIL_DATA_A, DWORD, PDWORD); + BOOL SetupDiGetDriverInfoDetailW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINFO_DETAIL_DATA_W, DWORD, PDWORD); + BOOL SetupDiGetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiGetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiGetHwProfileFriendlyNameA(DWORD, PSTR, DWORD, PDWORD); + BOOL SetupDiGetHwProfileFriendlyNameExA(DWORD, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetHwProfileFriendlyNameExW(DWORD, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetHwProfileFriendlyNameW(DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetHwProfileList(PDWORD, DWORD, PDWORD, PDWORD); + BOOL SetupDiGetHwProfileListExA(PDWORD, DWORD, PDWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetHwProfileListExW(PDWORD, DWORD, PDWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetINFClassA(PCSTR, LPGUID, PSTR, DWORD, PDWORD); + BOOL SetupDiGetINFClassW(PCWSTR, LPGUID, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiGetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); + BOOL SetupDiGetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); + HPROPSHEETPAGE SetupDiGetWizardage(HDEVINFO, PSP_DEVINFO_DATA, PSP_INSTALLWIZARD_DATA, DWORD, DWORD); + BOOL SetupDiInstallClassA(HWND, PCSTR, DWORD, HSPFILEQ); + BOOL SetupDiInstallClassW(HWND, PCWSTR, DWORD, HSPFILEQ); + BOOL SetupDiInstallClassExA(HWND, PCSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); + BOOL SetupDiInstallClassExW(HWND, PCWSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); + BOOL SetupDiInstallDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiInstallDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiInstallDriverFiles(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiLoadClassIcon(const(GUID)*, HICON*, PINT); + BOOL SetupDiMoveDuplicateDevice(HDEVINFO, PSP_DEVINFO_DATA); + HKEY SetupDiOpenClassRegKey(const(GUID)*, REGSAM); + HKEY SetupDiOpenClassRegKeyExA(const(GUID)*, REGSAM, DWORD, PCSTR, PVOID); + HKEY SetupDiOpenClassRegKeyExW(const(GUID)*, REGSAM, DWORD, PCWSTR, PVOID); + BOOL SetupDiOpenDeviceInfoA(HDEVINFO, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiOpenDeviceInfoW(HDEVINFO, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiOpenDeviceInterfaceA(HDEVINFO, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiOpenDeviceInterfaceW(HDEVINFO, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + HKEY SetupDiOpenDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM); + HKEY SetupDiOpenDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM); + BOOL SetupDiRegisterCoDeviceInstallers(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiRegisterDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PSP_DETSIG_CMPPROC, PVOID, PSP_DEVINFO_DATA); + BOOL SetupDiRemoveDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiRemoveDeviceInterface(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiSelectBestCompatDrv(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSelectDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSelectOEMDrv(HWND, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); + BOOL SetupDiSetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); + BOOL SetupDiSetClassRegistryPropertyA(LPGUID, DWORD, const(BYTE)*, DWORD, PCSTR, PVOID); + BOOL SetupDiSetClassRegistryPropertyW(LPGUID, DWORD, const(BYTE)*, DWORD, PCWSTR, PVOID); + BOOL SetupDiSetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); + BOOL SetupDiSetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); + BOOL SetupDiSetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); + BOOL SetupDiSetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); + BOOL SetupDiSetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiSetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiSetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); + BOOL SetupDiSetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); + BOOL SetupDiUnremoveDevice(HDEVINFO, PSP_DEVINFO_DATA); + HDSKSPC SetupDuplicateDiskSpaceListA(HDSKSPC, PVOID, DWORD, UINT); + HDSKSPC SetupDuplicateDiskSpaceListW(HDSKSPC, PVOID, DWORD, UINT); + BOOL SetupFindFirstLineA(HINF, PCSTR, PCSTR, PINFCONTEXT); + BOOL SetupFindFirstLineW(HINF, PCWSTR, PCWSTR, PINFCONTEXT); + BOOL SetupFindNextLine(PINFCONTEXT, PINFCONTEXT); + BOOL SetupFindNextMatchLineA(PINFCONTEXT, PCSTR, PINFCONTEXT); + BOOL SetupFindNextMatchLineW(PINFCONTEXT, PCWSTR, PINFCONTEXT); + BOOL SetupFreeA(PCSTR**, UINT); + BOOL SetupFreeW(PCWSTR**, UINT); + BOOL SetupGetBackupInformationA(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_A); + BOOL SetupGetBackupInformationW(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_W); + BOOL SetupGetBinaryField(PINFCONTEXT, DWORD, PBYTE, DWORD, LPDWORD); + DWORD SetupGetFieldCount(PINFCONTEXT); + DWORD SetupGetFileCompressionInfoA(PCSTR, PSTR*, PDWORD, PDWORD, PUINT); + DWORD SetupGetFileCompressionInfoW(PCWSTR, PWSTR*, PDWORD, PDWORD, PUINT); + BOOL SetupGetInfFileListA(PCSTR, DWORD, PSTR, DWORD, PDWORD); + BOOL SetupGetInfFileListW(PCWSTR, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupGetInfInformationA(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); + BOOL SetupGetInfInformationW(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); + BOOL SetupGetIntField(PINFCONTEXT, DWORD, PINT); + BOOL SetupGetLineByIndexA(HINF, PCSTR, DWORD, PINFCONTEXT); + BOOL SetupGetLineByIndexW(HINF, PCWSTR, DWORD, PINFCONTEXT); + LONG SetupGetLineCountA(HINF, PCSTR); + LONG SetupGetLineCountW(HINF, PCWSTR); + BOOL SetupGetLineTextA(PINFCONTEXT, HINF, PCSTR, PCSTR, PSTR, DWORD, PDWORD); + BOOL SetupGetLineTextW(PINFCONTEXT, HINF, PCWSTR, PCWSTR, PWSTR, DWORD, PDWORD); + BOOL SetupGetMultiSzFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, LPDWORD); + BOOL SetupGetMultiSzFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, LPDWORD); + BOOL SetupGetSourceFileLocationA(HINF, PINFCONTEXT, PCSTR, PUINT, PSTR, DWORD, PDWORD); + BOOL SetupGetSourceFileLocationW(HINF, PINFCONTEXT, PCWSTR, PUINT, PWSTR, DWORD, PDWORD); + BOOL SetupGetSourceFileSizeA(HINF, PINFCONTEXT, PCSTR, PCSTR, PDWORD, UINT); + BOOL SetupGetSourceFileSizeW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PDWORD, UINT); + BOOL SetupGetSourceInfoA(HINF, UINT, UINT, PSTR, DWORD, PDWORD); + BOOL SetupGetSourceInfoW(HINF, UINT, UINT, PWSTR, DWORD, PDWORD); + BOOL SetupGetStringFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, PDWORD); + BOOL SetupGetStringFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupGetTargetPathA(HINF, PINFCONTEXT, PCSTR, PSTR, DWORD, PDWORD); + BOOL SetupGetTargetPathW(HINF, PINFCONTEXT, PCWSTR, PWSTR, DWORD, PDWORD); + PVOID SetupInitDefaultQueueCallback(HWND); + PVOID SetupInitDefaultQueueCallbackEx(HWND, HWND, UINT, DWORD, PVOID); + HSPFILELOG SetupInitializeFileLogA(PCSTR, DWORD); + HSPFILELOG SetupInitializeFileLogW(PCWSTR, DWORD); + BOOL SetupInstallFileA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupInstallFileW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); + BOOL SetupInstallFileExA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID, PBOOL); + BOOL SetupInstallFileExW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID, PBOOL); + BOOL SetupInstallFilesFromInfSectionA(HINF, HINF, HSPFILEQ, PCSTR, PCSTR, UINT); + BOOL SetupInstallFilesFromInfSectionW(HINF, HINF, HSPFILEQ, PCWSTR, PCWSTR, UINT); + BOOL SetupInstallFromInfSectionA(HWND, HINF, PCSTR, UINT, HKEY, PCSTR, UINT, PSP_FILE_CALLBACK_A, PVOID, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupInstallFromInfSectionW(HWND, HINF, PCWSTR, UINT, HKEY, PCWSTR, UINT, PSP_FILE_CALLBACK_W, PVOID, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupInstallServicesFromInfSectionA(HINF, PCSTR, DWORD); + BOOL SetupInstallServicesFromInfSectionW(HINF, PCWSTR, DWORD); + BOOL SetupInstallServicesFromInfSectionExA(HINF, PCSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); + BOOL SetupInstallServicesFromInfSectionExW(HINF, PCWSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); + BOOL SetupIterateCabinetA(PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupIterateCabinetW(PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); + BOOL SetupLogErrorA(LPCSTR, LogSeverity); + BOOL SetupLogErrorW(LPCWSTR, LogSeverity); + BOOL SetupLogFileA(HSPFILELOG, PCSTR, PCSTR, PCSTR, DWORD, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupLogFileW(HSPFILELOG, PCWSTR, PCWSTR, PCWSTR, DWORD, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupOpenAppendInfFileA(PCSTR, HINF, PUINT); + BOOL SetupOpenAppendInfFileW(PCWSTR, HINF, PUINT); + HSPFILEQ SetupOpenFileQueue(); + HINF SetupOpenInfFileA(PCSTR, PCSTR, DWORD, PUINT); + HINF SetupOpenInfFileW(PCWSTR, PCWSTR, DWORD, PUINT); + BOOL SetupOpenLog(BOOL); + HINF SetupOpenMasterInf(); + UINT SetupPromptForDiskA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD, PSTR, DWORD, PDWORD); + UINT SetupPromptForDiskW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD, PWSTR, DWORD, PDWORD); + INT SetupPromptReboot(HSPFILEQ, HWND, BOOL); + BOOL SetupQueryA(DWORD, PCSTR**, PUINT); + BOOL SetupQueryW(DWORD, PCWSTR**, PUINT); + BOOL SetupQueryDrivesInDiskSpaceListA(HDSKSPC, PSTR, DWORD, PDWORD); + BOOL SetupQueryDrivesInDiskSpaceListW(HDSKSPC, PWSTR, DWORD, PDWORD); + BOOL SetupQueryFileLogA(HSPFILELOG, PCSTR, PCSTR, SetupFileLogInfo, PSTR, DWORD, PDWORD); + BOOL SetupQueryFileLogW(HSPFILELOG, PCWSTR, PCWSTR, SetupFileLogInfo, PWSTR, DWORD, PDWORD); + BOOL SetupQueryInfFileInformationA(PSP_INF_INFORMATION, UINT, PSTR, DWORD, PDWORD); + BOOL SetupQueryInfFileInformationW(PSP_INF_INFORMATION, UINT, PWSTR, DWORD, PDWORD); + BOOL SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_A); + BOOL SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_W); + BOOL SetupQueryInfVersionInformationA(PSP_INF_INFORMATION, UINT, PSTR, PSTR, DWORD, PDWORD); + BOOL SetupQueryInfVersionInformationW(PSP_INF_INFORMATION, UINT, PCWSTR, PWSTR, DWORD, PDWORD); + BOOL SetupQuerySpaceRequiredOnDriveA(HDSKSPC, PCSTR, LONGLONG*, PVOID, UINT); + BOOL SetupQuerySpaceRequiredOnDriveW(HDSKSPC, PCWSTR, LONGLONG*, PVOID, UINT); + BOOL SetupQueueCopyA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupQueueCopyW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A); + BOOL SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W); + BOOL SetupQueueCopySectionA(HSPFILEQ, PCSTR, HINF, HINF, PCSTR, DWORD); + BOOL SetupQueueCopySectionW(HSPFILEQ, PCWSTR, HINF, HINF, PCWSTR, DWORD); + BOOL SetupQueueDefaultCopyA(HSPFILEQ, HINF, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupQueueDefaultCopyW(HSPFILEQ, HINF, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupQueueDeleteA(HSPFILEQ, PCSTR, PCSTR); + BOOL SetupQueueDeleteW(HSPFILEQ, PCWSTR, PCWSTR); + BOOL SetupQueueDeleteSectionA(HSPFILEQ, HINF, HINF, PCSTR); + BOOL SetupQueueDeleteSectionW(HSPFILEQ, HINF, HINF, PCWSTR); + BOOL SetupQueueRenameA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR); + BOOL SetupQueueRenameW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR); + BOOL SetupQueueRenameSectionA(HSPFILEQ, HINF, HINF, PCSTR); + BOOL SetupQueueRenameSectionW(HSPFILEQ, HINF, HINF, PCWSTR); + BOOL SetupRemoveFileLogEntryA(HSPFILELOG, PCSTR, PCSTR); + BOOL SetupRemoveFileLogEntryW(HSPFILELOG, PCWSTR, PCWSTR); + BOOL SetupRemoveFromDiskSpaceListA(HDSKSPC, PCSTR, UINT, PVOID, UINT); + BOOL SetupRemoveFromDiskSpaceListW(HDSKSPC, PCWSTR, UINT, PVOID, UINT); + BOOL SetupRemoveFromSourceListA(DWORD, PCSTR); + BOOL SetupRemoveFromSourceListW(DWORD, PCWSTR); + BOOL SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); + BOOL SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); + BOOL SetupRemoveSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); + BOOL SetupRemoveSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); + UINT SetupRenameErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); + UINT SetupRenameErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupScanFileQueueA(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_A, PVOID, PDWORD); + BOOL SetupScanFileQueueW(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_W, PVOID, PDWORD); + BOOL SetupSetDirectoryIdA(HINF, DWORD, PCSTR); + BOOL SetupSetDirectoryIdW(HINF, DWORD, PCWSTR); + BOOL SetupSetDirectoryIdExA(HINF, DWORD, PCSTR, DWORD, DWORD, PVOID); + BOOL SetupSetDirectoryIdExW(HINF, DWORD, PCWSTR, DWORD, DWORD, PVOID); + BOOL SetupSetFileQueueAlternatePlatformA(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCSTR); + BOOL SetupSetFileQueueAlternatePlatformW(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCWSTR); + BOOL SetupSetPlatformPathOverrideA(PCSTR); + BOOL SetupSetPlatformPathOverrideW(PCWSTR); + BOOL SetupSetSourceListA(DWORD, PCSTR*, UINT); + BOOL SetupSetSourceListW(DWORD, PCWSTR*, UINT); + VOID SetupTermDefaultQueueCallback(PVOID); + BOOL SetupTerminateFileLog(HSPFILELOG); +} + +deprecated { + alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDeviceW; + alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKeyW; + alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDeviceW; + alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetailW; + alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDeviceA; + alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKeyA; + alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDeviceA; + alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetailA; +} + +version (Unicode) { + alias PSP_FILE_CALLBACK_W PSP_FILE_CALLBACK; + alias SetupAddInstallSectionToDiskSpaceListW SetupAddInstallSectionToDiskSpaceList; + alias SetupAddSectionToDiskSpaceListW SetupAddSectionToDiskSpaceList; + alias SetupAddToDiskSpaceListW SetupAddToDiskSpaceList; + alias SetupAddToSourceListW SetupAddToSourceList; + alias SetupAdjustDiskSpaceListW SetupAdjustDiskSpaceList; + alias SetupBackupErrorW SetupBackupError; + alias SetupCommitFileQueueW SetupCommitFileQueue; + alias SetupCopyErrorW SetupCopyError; + alias SetupCopyOEMInfW SetupCopyOEMInf; + alias SetupCreateDiskSpaceListW SetupCreateDiskSpaceList; + alias SetupDecompressOrCopyFileW SetupDecompressOrCopyFile; + alias SetupDefaultQueueCallbackW SetupDefaultQueueCallback; + alias SetupDeleteErrorW SetupDeleteError; + alias SetupDiBuildClassInfoListExW SetupDiBuildClassInfoListEx; + alias SetupDiClassGuidsFromNameExW SetupDiClassGuidsFromNameEx; + alias SetupDiClassGuidsFromNameW SetupDiClassGuidsFromName; + alias SetupDiClassNameFromGuidExW SetupDiClassNameFromGuidEx; + alias SetupDiClassNameFromGuidW SetupDiClassNameFromGuid; + alias SetupDiCreateDeviceInfoListExW SetupDiCreateDeviceInfoListEx; + alias SetupDiCreateDeviceInfoW SetupDiCreateDeviceInfo; + alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateDeviceInterfaceRegKey; + deprecated alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKey; + alias SetupDiCreateDeviceInterfaceW SetupDiCreateDeviceInterface; + deprecated alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDevice; + alias SetupDiCreateDevRegKeyW SetupDiCreateDevRegKey; + alias SetupDiEnumDriverInfoW SetupDiEnumDriverInfo; + alias SetupDiGetActualSectionToInstallW SetupDiGetActualSectionToInstall; + alias SetupDiGetClassDescriptionExW SetupDiGetClassDescriptionEx; + alias SetupDiGetClassDescriptionW SetupDiGetClassDescription; + alias SetupDiGetClassDevPropertySheetsW SetupDiGetClassDevPropertySheets; + alias SetupDiGetClassDevsExW SetupDiGetClassDevsEx; + alias SetupDiGetClassDevsW SetupDiGetClassDevs; + alias SetupDiGetClassImageListExW SetupDiGetClassImageListEx; + alias SetupDiGetClassInstallParamsW SetupDiGetClassInstallParams; + alias SetupDiGetClassRegistryPropertyW SetupDiGetClassRegistryProperty; + alias SetupDiGetDeviceInfoListDetailW SetupDiGetDeviceInfoListDetail; + alias SetupDiGetDeviceInstallParamsW SetupDiGetDeviceInstallParams; + alias SetupDiGetDeviceInstanceIdW SetupDiGetDeviceInstanceId; + alias SetupDiGetDeviceInterfaceDetailW SetupDiGetDeviceInterfaceDetail; + deprecated alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetail; + alias SetupDiGetDeviceRegistryPropertyW SetupDiGetDeviceRegistryProperty; + alias SetupDiGetDriverInfoDetailW SetupDiGetDriverInfoDetail; + alias SetupDiGetDriverInstallParamsW SetupDiGetDriverInstallParams; + alias SetupDiGetHwProfileFriendlyNameExW SetupDiGetHwProfileFriendlyNameEx; + alias SetupDiGetHwProfileFriendlyNameW SetupDiGetHwProfileFriendlyName; + alias SetupDiGetHwProfileListExW SetupDiGetHwProfileListEx; + alias SetupDiGetINFClassW SetupDiGetINFClass; + alias SetupDiGetSelectedDriverW SetupDiGetSelectedDriver; + alias SetupDiInstallClassExW SetupDiInstallClassEx; + alias SetupDiInstallClassW SetupDiInstallClass; + alias SetupDiOpenClassRegKeyExW SetupDiOpenClassRegKeyEx; + alias SetupDiOpenDeviceInfoW SetupDiOpenDeviceInfo; + alias SetupDiOpenDeviceInterfaceW SetupDiOpenDeviceInterface; + deprecated alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDevice; + alias SetupDiSetClassInstallParamsW SetupDiSetClassInstallParams; + alias SetupDiSetClassRegistryPropertyW SetupDiSetClassRegistryProperty; + alias SetupDiSetDeviceInstallParamsW SetupDiSetDeviceInstallParams; + alias SetupDiSetDeviceRegistryPropertyW SetupDiSetDeviceRegistryProperty; + alias SetupDiSetDriverInstallParamsW SetupDiSetDriverInstallParams; + alias SetupDiSetSelectedDriverW SetupDiSetSelectedDriver; + alias SetupDuplicateDiskSpaceListW SetupDuplicateDiskSpaceList; + alias SetupFindFirstLineW SetupFindFirstLine; + alias SetupFindNextMatchLineW SetupFindNextMatchLine; + alias SetupFreeSourceListW SetupFreeSourceList; + alias SetupGetBackupInformationW SetupGetBackupInformation; + alias SetupGetFileCompressionInfoW SetupGetFileCompressionInfo; + alias SetupGetInfFileListW SetupGetInfFileList; + alias SetupGetInfInformationW SetupGetInfInformation; + alias SetupGetLineByIndexW SetupGetLineByIndex; + alias SetupGetLineCountW SetupGetLineCount; + alias SetupGetLineTextW SetupGetLineText; + alias SetupGetMultiSzFieldW SetupGetMultiSzField; + alias SetupGetSourceFileLocationW SetupGetSourceFileLocation; + alias SetupGetSourceFileSizeW SetupGetSourceFileSize; + alias SetupGetSourceInfoW SetupGetSourceInfo; + alias SetupGetStringFieldW SetupGetStringField; + alias SetupGetTargetPathW SetupGetTargetPath; + alias SetupInitializeFileLogW SetupInitializeFileLog; + alias SetupInstallFileExW SetupInstallFileEx; + alias SetupInstallFilesFromInfSectionW SetupInstallFilesFromInfSection; + alias SetupInstallFileW SetupInstallFile; + alias SetupInstallFromInfSectionW SetupInstallFromInfSection; + alias SetupInstallServicesFromInfSectionExW SetupInstallServicesFromInfSectionEx; + alias SetupInstallServicesFromInfSectionW SetupInstallServicesFromInfSection; + alias SetupIterateCabinetW SetupIterateCabinet; + alias SetupLogErrorW SetupLogError; + alias SetupLogFileW SetupLogFile; + alias SetupOpenAppendInfFileW SetupOpenAppendInfFile; + alias SetupOpenInfFileW SetupOpenInfFile; + alias SetupPromptForDiskW SetupPromptForDisk; + alias SetupQueryDrivesInDiskSpaceListW SetupQueryDrivesInDiskSpaceList; + alias SetupQueryFileLogW SetupQueryFileLog; + alias SetupQueryInfFileInformationW SetupQueryInfFileInformation; + alias SetupQueryInfOriginalFileInformationW SetupQueryInfOriginalFileInformation; + alias SetupQueryInfVersionInformationW SetupQueryInfVersionInformation; + alias SetupQuerySourceListW SetupQuerySourceList; + alias SetupQuerySpaceRequiredOnDriveW SetupQuerySpaceRequiredOnDrive; + alias SetupQueueCopyIndirectW SetupQueueCopyIndirect; + alias SetupQueueCopySectionW SetupQueueCopySection; + alias SetupQueueCopyW SetupQueueCopy; + alias SetupQueueDefaultCopyW SetupQueueDefaultCopy; + alias SetupQueueDeleteSectionW SetupQueueDeleteSection; + alias SetupQueueDeleteW SetupQueueDelete; + alias SetupQueueRenameSectionW SetupQueueRenameSection; + alias SetupQueueRenameW SetupQueueRename; + alias SetupRemoveFileLogEntryW SetupRemoveFileLogEntry; + alias SetupRemoveFromDiskSpaceListW SetupRemoveFromDiskSpaceList; + alias SetupRemoveFromSourceListW SetupRemoveFromSourceList; + alias SetupRemoveInstallSectionFromDiskSpaceListW SetupRemoveInstallSectionFromDiskSpaceList; + alias SetupRemoveSectionFromDiskSpaceListW SetupRemoveSectionFromDiskSpaceList; + alias SetupRenameErrorW SetupRenameError; + alias SetupScanFileQueueW SetupScanFileQueue; + alias SetupSetDirectoryIdExW SetupSetDirectoryIdEx; + alias SetupSetDirectoryIdW SetupSetDirectoryId; + alias SetupSetFileQueueAlternatePlatformW SetupSetFileQueueAlternatePlatform; + alias SetupSetPlatformPathOverrideW SetupSetPlatformPathOverride; + alias SetupSetSourceListW SetupSetSourceList; +} else { + alias PSP_FILE_CALLBACK_A PSP_FILE_CALLBACK; + alias SetupAddInstallSectionToDiskSpaceListA SetupAddInstallSectionToDiskSpaceList; + alias SetupAddSectionToDiskSpaceListA SetupAddSectionToDiskSpaceList; + alias SetupAddToDiskSpaceListA SetupAddToDiskSpaceList; + alias SetupAddToSourceListA SetupAddToSourceList; + alias SetupAdjustDiskSpaceListA SetupAdjustDiskSpaceList; + alias SetupBackupErrorA SetupBackupError; + alias SetupCommitFileQueueA SetupCommitFileQueue; + alias SetupCopyErrorA SetupCopyError; + alias SetupCopyOEMInfA SetupCopyOEMInf; + alias SetupCreateDiskSpaceListA SetupCreateDiskSpaceList; + alias SetupDecompressOrCopyFileA SetupDecompressOrCopyFile; + alias SetupDefaultQueueCallbackA SetupDefaultQueueCallback; + alias SetupDeleteErrorA SetupDeleteError; + alias SetupDiBuildClassInfoListExA SetupDiBuildClassInfoListEx; + alias SetupDiClassGuidsFromNameA SetupDiClassGuidsFromName; + alias SetupDiClassGuidsFromNameExA SetupDiClassGuidsFromNameEx; + alias SetupDiClassNameFromGuidA SetupDiClassNameFromGuid; + alias SetupDiClassNameFromGuidExA SetupDiClassNameFromGuidEx; + alias SetupDiCreateDeviceInfoA SetupDiCreateDeviceInfo; + alias SetupDiCreateDeviceInfoListExA SetupDiCreateDeviceInfoListEx; + alias SetupDiCreateDeviceInterfaceA SetupDiCreateDeviceInterface; + deprecated alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDevice; + alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateDeviceInterfaceRegKey; + deprecated alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKey; + alias SetupDiCreateDevRegKeyA SetupDiCreateDevRegKey; + alias SetupDiDeleteDeviceInterfaceData SetupDiDeleteInterfaceDeviceData; + alias SetupDiEnumDriverInfoA SetupDiEnumDriverInfo; + alias SetupDiGetActualSectionToInstallA SetupDiGetActualSectionToInstall; + alias SetupDiGetClassDescriptionA SetupDiGetClassDescription; + alias SetupDiGetClassDescriptionExA SetupDiGetClassDescriptionEx; + alias SetupDiGetClassDevPropertySheetsA SetupDiGetClassDevPropertySheets; + alias SetupDiGetClassDevsA SetupDiGetClassDevs; + alias SetupDiGetClassDevsExA SetupDiGetClassDevsEx; + alias SetupDiGetClassImageListExA SetupDiGetClassImageListEx; + alias SetupDiGetClassInstallParamsA SetupDiGetClassInstallParams; + alias SetupDiGetClassRegistryPropertyA SetupDiGetClassRegistryProperty; + alias SetupDiGetDeviceInfoListDetailA SetupDiGetDeviceInfoListDetail; + alias SetupDiGetDeviceInstallParamsA SetupDiGetDeviceInstallParams; + alias SetupDiGetDeviceInstanceIdA SetupDiGetDeviceInstanceId; + alias SetupDiGetDeviceInterfaceDetailA SetupDiGetDeviceInterfaceDetail; + deprecated alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetail; + alias SetupDiGetDeviceRegistryPropertyA SetupDiGetDeviceRegistryProperty; + alias SetupDiGetDriverInfoDetailA SetupDiGetDriverInfoDetail; + alias SetupDiGetDriverInstallParamsA SetupDiGetDriverInstallParams; + alias SetupDiGetHwProfileFriendlyNameA SetupDiGetHwProfileFriendlyName; + alias SetupDiGetHwProfileFriendlyNameExA SetupDiGetHwProfileFriendlyNameEx; + alias SetupDiGetHwProfileListExA SetupDiGetHwProfileListEx; + alias SetupDiGetINFClassA SetupDiGetINFClass; + alias SetupDiGetSelectedDriverA SetupDiGetSelectedDriver; + alias SetupDiInstallClassA SetupDiInstallClass; + alias SetupDiInstallClassExA SetupDiInstallClassEx; + alias SetupDiOpenClassRegKeyExA SetupDiOpenClassRegKeyEx; + alias SetupDiOpenDeviceInfoA SetupDiOpenDeviceInfo; + alias SetupDiOpenDeviceInterfaceA SetupDiOpenDeviceInterface; + deprecated alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDevice; + alias SetupDiSetClassInstallParamsA SetupDiSetClassInstallParams; + alias SetupDiSetClassRegistryPropertyA SetupDiSetClassRegistryProperty; + alias SetupDiSetDeviceInstallParamsA SetupDiSetDeviceInstallParams; + alias SetupDiSetDeviceRegistryPropertyA SetupDiSetDeviceRegistryProperty; + alias SetupDiSetDriverInstallParamsA SetupDiSetDriverInstallParams; + alias SetupDiSetSelectedDriverA SetupDiSetSelectedDriver; + alias SetupDuplicateDiskSpaceListA SetupDuplicateDiskSpaceList; + alias SetupFindFirstLineA SetupFindFirstLine; + alias SetupFindNextMatchLineA SetupFindNextMatchLine; + alias SetupFreeSourceListA SetupFreeSourceList; + alias SetupGetBackupInformationA SetupGetBackupInformation; + alias SetupGetFileCompressionInfoA SetupGetFileCompressionInfo; + alias SetupGetInfFileListA SetupGetInfFileList; + alias SetupGetInfInformationA SetupGetInfInformation; + alias SetupGetLineByIndexA SetupGetLineByIndex; + alias SetupGetLineCountA SetupGetLineCount; + alias SetupGetLineTextA SetupGetLineText; + alias SetupGetMultiSzFieldA SetupGetMultiSzField; + alias SetupGetSourceFileLocationA SetupGetSourceFileLocation; + alias SetupGetSourceFileSizeA SetupGetSourceFileSize; + alias SetupGetSourceInfoA SetupGetSourceInfo; + alias SetupGetStringFieldA SetupGetStringField; + alias SetupGetTargetPathA SetupGetTargetPath; + alias SetupInitializeFileLogA SetupInitializeFileLog; + alias SetupInstallFileA SetupInstallFile; + alias SetupInstallFileExA SetupInstallFileEx; + alias SetupInstallFilesFromInfSectionA SetupInstallFilesFromInfSection; + alias SetupInstallFromInfSectionA SetupInstallFromInfSection; + alias SetupInstallServicesFromInfSectionA SetupInstallServicesFromInfSection; + alias SetupInstallServicesFromInfSectionExA SetupInstallServicesFromInfSectionEx; + alias SetupIterateCabinetA SetupIterateCabinet; + alias SetupLogErrorA SetupLogError; + alias SetupLogFileA SetupLogFile; + alias SetupOpenAppendInfFileA SetupOpenAppendInfFile; + alias SetupOpenInfFileA SetupOpenInfFile; + alias SetupPromptForDiskA SetupPromptForDisk; + alias SetupQueryDrivesInDiskSpaceListA SetupQueryDrivesInDiskSpaceList; + alias SetupQueryFileLogA SetupQueryFileLog; + alias SetupQueryInfFileInformationA SetupQueryInfFileInformation; + alias SetupQueryInfOriginalFileInformationA SetupQueryInfOriginalFileInformation; + alias SetupQueryInfVersionInformationA SetupQueryInfVersionInformation; + alias SetupQuerySourceListA SetupQuerySourceList; + alias SetupQuerySpaceRequiredOnDriveA SetupQuerySpaceRequiredOnDrive; + alias SetupQueueCopyA SetupQueueCopy; + alias SetupQueueCopyIndirectA SetupQueueCopyIndirect; + alias SetupQueueCopySectionA SetupQueueCopySection; + alias SetupQueueDefaultCopyA SetupQueueDefaultCopy; + alias SetupQueueDeleteA SetupQueueDelete; + alias SetupQueueDeleteSectionA SetupQueueDeleteSection; + alias SetupQueueRenameA SetupQueueRename; + alias SetupQueueRenameSectionA SetupQueueRenameSection; + alias SetupRemoveFileLogEntryA SetupRemoveFileLogEntry; + alias SetupRemoveFromDiskSpaceListA SetupRemoveFromDiskSpaceList; + alias SetupRemoveFromSourceListA SetupRemoveFromSourceList; + alias SetupRemoveInstallSectionFromDiskSpaceListA SetupRemoveInstallSectionFromDiskSpaceList; + alias SetupRemoveSectionFromDiskSpaceListA SetupRemoveSectionFromDiskSpaceList; + alias SetupRenameErrorA SetupRenameError; + alias SetupScanFileQueueA SetupScanFileQueue; + alias SetupSetDirectoryIdA SetupSetDirectoryId; + alias SetupSetDirectoryIdExA SetupSetDirectoryIdEx; + alias SetupSetFileQueueAlternatePlatformA SetupSetFileQueueAlternatePlatform; + alias SetupSetPlatformPathOverrideA SetupSetPlatformPathOverride; + alias SetupSetSourceListA SetupSetSourceList; +} diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d new file mode 100644 index 0000000000..65a4eefdae --- /dev/null +++ b/src/core/sys/windows/shellapi.d @@ -0,0 +1,418 @@ +/***********************************************************************\ +* shellapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.shellapi; +pragma(lib, "shell32"); + +private import win32.w32api, win32.windef, win32.basetyps; + +enum : UINT { + ABE_LEFT, + ABE_TOP, + ABE_RIGHT, + ABE_BOTTOM // = 3 +} + +enum : UINT { + ABS_AUTOHIDE = 1, + ABS_ALWAYSONTOP +} + +const ULONG + SEE_MASK_CLASSNAME = 1, + SEE_MASK_CLASSKEY = 3, + SEE_MASK_IDLIST = 4, + SEE_MASK_INVOKEIDLIST = 12, + SEE_MASK_ICON = 0x000010, + SEE_MASK_HOTKEY = 0x000020, + SEE_MASK_NOCLOSEPROCESS = 0x000040, + SEE_MASK_CONNECTNETDRV = 0x000080, + SEE_MASK_FLAG_DDEWAIT = 0x000100, + SEE_MASK_DOENVSUBST = 0x000200, + SEE_MASK_FLAG_NO_UI = 0x000400, + SEE_MASK_NO_CONSOLE = 0x008000, + SEE_MASK_UNICODE = 0x010000, + SEE_MASK_ASYNCOK = 0x100000, + SEE_MASK_HMONITOR = 0x200000; + +enum : DWORD { + ABM_NEW, + ABM_REMOVE, + ABM_QUERYPOS, + ABM_SETPOS, + ABM_GETSTATE, + ABM_GETTASKBARPOS, + ABM_ACTIVATE, + ABM_GETAUTOHIDEBAR, + ABM_SETAUTOHIDEBAR, + ABM_WINDOWPOSCHANGED // = 9 +} + +static if (_WIN32_WINNT >= 0x501) { + const DWORD ABM_SETSTATE = 10; +} + +enum : UINT { + ABN_STATECHANGE, + ABN_POSCHANGED, + ABN_FULLSCREENAPP, + ABN_WINDOWARRANGE +} + +enum : DWORD { + NIM_ADD, + NIM_MODIFY, + NIM_DELETE +} + +static if (_WIN32_IE >= 0x500) { + const NOTIFYICON_VERSION = 3; + + enum : DWORD { + NIM_SETFOCUS = 3, + NIM_SETVERSION + } +} + +const UINT + NIF_MESSAGE = 1, + NIF_ICON = 2, + NIF_TIP = 4, + NIF_STATE = 8; + +static if (_WIN32_IE >= 0x500) { + const UINT NIF_INFO = 0x00000010; +} + +static if (_WIN32_IE >= 0x600) { + const UINT NIF_GUID = 0x00000020; +} + +static if (_WIN32_IE >= 0x500) { + enum : DWORD { + NIIF_NONE, + NIIF_INFO, + NIIF_WARNING, + NIIF_ERROR + } +} + +static if (_WIN32_IE >= 0x600) { + enum : DWORD { + NIIF_ICON_MASK = 15, + NIIF_NOSOUND + } +} + +const DWORD + NIS_HIDDEN = 1, + NIS_SHAREDICON = 2; + +const HINSTANCE + SE_ERR_FNF = cast(HINSTANCE) 2, + SE_ERR_PNF = cast(HINSTANCE) 3, + SE_ERR_ACCESSDENIED = cast(HINSTANCE) 5, + SE_ERR_OOM = cast(HINSTANCE) 8, + SE_ERR_DLLNOTFOUND = cast(HINSTANCE) 32, + SE_ERR_SHARE = cast(HINSTANCE) 26, + SE_ERR_ASSOCINCOMPLETE = cast(HINSTANCE) 27, + SE_ERR_DDETIMEOUT = cast(HINSTANCE) 28, + SE_ERR_DDEFAIL = cast(HINSTANCE) 29, + SE_ERR_DDEBUSY = cast(HINSTANCE) 30, + SE_ERR_NOASSOC = cast(HINSTANCE) 31; + +enum : UINT { + FO_MOVE = 1, + FO_COPY, + FO_DELETE, + FO_RENAME +} + +const FILEOP_FLAGS + FOF_MULTIDESTFILES = 0x0001, + FOF_CONFIRMMOUSE = 0x0002, + FOF_SILENT = 0x0004, + FOF_RENAMEONCOLLISION = 0x0008, + FOF_NOCONFIRMATION = 0x0010, + FOF_WANTMAPPINGHANDLE = 0x0020, + FOF_ALLOWUNDO = 0x0040, + FOF_FILESONLY = 0x0080, + FOF_SIMPLEPROGRESS = 0x0100, + FOF_NOCONFIRMMKDIR = 0x0200, + FOF_NOERRORUI = 0x0400, + FOF_NOCOPYSECURITYATTRIBS = 0x0800; + +// these are not documented on the MSDN site +enum { + PO_DELETE = 19, + PO_RENAME = 20, + PO_PORTCHANGE = 32, + PO_REN_PORT = 52 +} + +const UINT + SHGFI_LARGEICON = 0x000000, + SHGFI_SMALLICON = 0x000001, + SHGFI_OPENICON = 0x000002, + SHGFI_SHELLICONSIZE = 0x000004, + SHGFI_PIDL = 0x000008, + SHGFI_USEFILEATTRIBUTES = 0x000010, + SHGFI_ICON = 0x000100, + SHGFI_DISPLAYNAME = 0x000200, + SHGFI_TYPENAME = 0x000400, + SHGFI_ATTRIBUTES = 0x000800, + SHGFI_ICONLOCATION = 0x001000, + SHGFI_EXETYPE = 0x002000, + SHGFI_SYSICONINDEX = 0x004000, + SHGFI_LINKOVERLAY = 0x008000, + SHGFI_SELECTED = 0x010000, + SHGFI_ATTR_SPECIFIED = 0x020000; + +static if (_WIN32_IE >= 0x500) { + const uint + SHGFI_ADDOVERLAYS = 0x000020, + SHGFI_OVERLAYINDEX = 0x000040; +} + +const SHERB_NOCONFIRMATION = 1; +const SHERB_NOPROGRESSUI = 2; +const SHERB_NOSOUND = 4; + +alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS; +mixin DECLARE_HANDLE!("HDROP"); + +align(2): + +struct APPBARDATA { + DWORD cbSize = APPBARDATA.sizeof; + HWND hWnd; + UINT uCallbackMessage; + UINT uEdge; + RECT rc; + LPARAM lParam; +} +alias APPBARDATA* PAPPBARDATA; + +struct NOTIFYICONDATAA { + DWORD cbSize = NOTIFYICONDATAA.sizeof; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + static if (_WIN32_IE >= 0x500) { + CHAR[128] szTip; + DWORD dwState; + DWORD dwStateMask; + CHAR[256] szInfo; + union { + UINT uTimeout; + UINT uVersion; + } + CHAR[64] szInfoTitle; + DWORD dwInfoFlags; + } else { + CHAR[64] szTip; + } + static if (_WIN32_IE >= 0x600) { + GUID guidItem; + } +} +alias NOTIFYICONDATAA* PNOTIFYICONDATAA; + +struct NOTIFYICONDATAW { + DWORD cbSize = NOTIFYICONDATAW.sizeof; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + static if (_WIN32_IE >= 0x500) { + WCHAR[128] szTip; + DWORD dwState; + DWORD dwStateMask; + WCHAR[256] szInfo; + union { + UINT uTimeout; + UINT uVersion; + } + WCHAR[64] szInfoTitle; + DWORD dwInfoFlags; + } else { + WCHAR[64] szTip; + } + static if (_WIN32_IE >= 0x600) { + GUID guidItem; + } +} +alias NOTIFYICONDATAW* PNOTIFYICONDATAW; + +struct SHELLEXECUTEINFOA { + DWORD cbSize = SHELLEXECUTEINFOA.sizeof; + ULONG fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpFile; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + PVOID lpIDList; + LPCSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; + HANDLE hIcon; + HANDLE hProcess; +} +alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA; + +struct SHELLEXECUTEINFOW { + DWORD cbSize = SHELLEXECUTEINFOW.sizeof; + ULONG fMask; + HWND hwnd; + LPCWSTR lpVerb; + LPCWSTR lpFile; + LPCWSTR lpParameters; + LPCWSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + PVOID lpIDList; + LPCWSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; + HANDLE hIcon; + HANDLE hProcess; +} +alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; + +struct SHFILEOPSTRUCTA { + HWND hwnd; + UINT wFunc; + LPCSTR pFrom; + LPCSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + PVOID hNameMappings; + LPCSTR lpszProgressTitle; +} +alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; + +struct SHFILEOPSTRUCTW { + HWND hwnd; + UINT wFunc; + LPCWSTR pFrom; + LPCWSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + PVOID hNameMappings; + LPCWSTR lpszProgressTitle; +} +alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; + +struct SHFILEINFOA { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + CHAR[MAX_PATH] szDisplayName; + CHAR[80] szTypeName; +} + +struct SHFILEINFOW { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + WCHAR[MAX_PATH] szDisplayName; + WCHAR[80] szTypeName; +} + +align(1) struct SHQUERYRBINFO { + DWORD cbSize = SHQUERYRBINFO.sizeof; + long i64Size; + long i64NumItems; +} +alias SHQUERYRBINFO* LPSHQUERYRBINFO; + +extern (Windows) { + LPWSTR* CommandLineToArgvW(LPCWSTR, int*); + void DragAcceptFiles(HWND, BOOL); + void DragFinish(HDROP); + UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT); + UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT); + BOOL DragQueryPoint(HDROP, LPPOINT); + HICON DuplicateIcon(HINSTANCE, HICON); + HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD); + HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD); + HICON ExtractIconA(HINSTANCE, LPCSTR, UINT); + HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT); + UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT); + UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT); + HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR); + HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR); + UINT SHAppBarMessage(DWORD, PAPPBARDATA); + BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA); + BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW); + int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON); + int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON); + HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT); + HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT); + BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA); + BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW); + int SHFileOperationA(LPSHFILEOPSTRUCTA); + int SHFileOperationW(LPSHFILEOPSTRUCTW); + void SHFreeNameMappings(HANDLE); + DWORD SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); + DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); + HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); + HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); + HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD); + HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD); +} + +version (Unicode) { + alias NOTIFYICONDATAW NOTIFYICONDATA; + alias SHELLEXECUTEINFOW SHELLEXECUTEINFO; + alias SHFILEOPSTRUCTW SHFILEOPSTRUCT; + alias SHFILEINFOW SHFILEINFO; + alias DragQueryFileW DragQueryFile; + alias ExtractAssociatedIconW ExtractAssociatedIcon; + alias ExtractIconW ExtractIcon; + alias ExtractIconExW ExtractIconEx; + alias FindExecutableW FindExecutable; + alias Shell_NotifyIconW Shell_NotifyIcon; + alias ShellAboutW ShellAbout; + alias ShellExecuteW ShellExecute; + alias ShellExecuteExW ShellExecuteEx; + alias SHFileOperationW SHFileOperation; + alias SHGetFileInfoW SHGetFileInfo; + alias SHQueryRecycleBinW SHQueryRecycleBin; + alias SHEmptyRecycleBinW SHEmptyRecycleBin; +} else { + alias NOTIFYICONDATAA NOTIFYICONDATA; + alias SHELLEXECUTEINFOA SHELLEXECUTEINFO; + alias SHFILEOPSTRUCTA SHFILEOPSTRUCT; + alias SHFILEINFOA SHFILEINFO; + alias DragQueryFileA DragQueryFile; + alias ExtractAssociatedIconA ExtractAssociatedIcon; + alias ExtractIconA ExtractIcon; + alias ExtractIconExA ExtractIconEx; + alias FindExecutableA FindExecutable; + alias Shell_NotifyIconA Shell_NotifyIcon; + alias ShellAboutA ShellAbout; + alias ShellExecuteA ShellExecute; + alias ShellExecuteExA ShellExecuteEx; + alias SHFileOperationA SHFileOperation; + alias SHGetFileInfoA SHGetFileInfo; + alias SHQueryRecycleBinA SHQueryRecycleBin; + alias SHEmptyRecycleBinA SHEmptyRecycleBin; +} + +alias NOTIFYICONDATA* PNOTIFYICONDATA; +alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO; +alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT; diff --git a/src/core/sys/windows/shldisp.d b/src/core/sys/windows/shldisp.d new file mode 100644 index 0000000000..ffef2b3a4c --- /dev/null +++ b/src/core/sys/windows/shldisp.d @@ -0,0 +1,27 @@ +/***********************************************************************\ +* shldisp.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.shldisp; + +private import win32.unknwn, win32.windef, win32.wtypes; + +// options for IAutoComplete2 +const DWORD ACO_AUTOSUGGEST = 0x01; + +interface IAutoComplete : IUnknown { + HRESULT Init(HWND, IUnknown, LPCOLESTR, LPCOLESTR); + HRESULT Enable(BOOL); +} +alias IAutoComplete LPAUTOCOMPLETE; + +interface IAutoComplete2 : IAutoComplete { + HRESULT SetOptions(DWORD); + HRESULT GetOptions(DWORD*); +} +alias IAutoComplete2 LPAUTOCOMPLETE2; diff --git a/src/core/sys/windows/shlguid.d b/src/core/sys/windows/shlguid.d new file mode 100644 index 0000000000..45bab70843 --- /dev/null +++ b/src/core/sys/windows/shlguid.d @@ -0,0 +1,18 @@ +/***********************************************************************\ +* shlguid.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.shlguid; + +private import win32.basetyps, win32.w32api; + +// FIXME: clean up Windows version support + +// I think this is just a helper macro for other win32 headers? +//MACRO #define DEFINE_SHLGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) + diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d new file mode 100644 index 0000000000..5671041785 --- /dev/null +++ b/src/core/sys/windows/shlobj.d @@ -0,0 +1,1353 @@ +/***********************************************************************\ +* shlobj.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 4.0 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.shlobj; +pragma(lib, "shell32"); + +// TODO: fix bitfields +// TODO: CMIC_VALID_SEE_FLAGS +// SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K + +import win32.commctrl, win32.ole2, win32.shlguid, win32.shellapi; +private import win32.prsht, win32.unknwn, win32.w32api, win32.winbase, + win32.winnt, win32.winuser, win32.wtypes, win32.objfwd, win32.objidl; +private import win32.winnetwk; // for NETRESOURCE +private import win32.oaidl : VARIANT; + + +// FIXME: clean up Windows version support + +align(1): + +const BIF_RETURNONLYFSDIRS = 1; +const BIF_DONTGOBELOWDOMAIN = 2; +const BIF_STATUSTEXT = 4; +const BIF_RETURNFSANCESTORS = 8; +const BIF_EDITBOX = 16; +const BIF_VALIDATE = 32; +const BIF_NEWDIALOGSTYLE = 64; +const BIF_BROWSEINCLUDEURLS = 128; +const BIF_USENEWUI = BIF_EDITBOX | BIF_NEWDIALOGSTYLE; +const BIF_BROWSEFORCOMPUTER = 0x1000; +const BIF_BROWSEFORPRINTER = 0x2000; +const BIF_BROWSEINCLUDEFILES = 0x4000; +const BIF_SHAREABLE = 0x8000; +const BFFM_INITIALIZED = 1; +const BFFM_SELCHANGED = 2; +const BFFM_VALIDATEFAILEDA = 3; +const BFFM_VALIDATEFAILEDW = 4; +const BFFM_SETSTATUSTEXTA = WM_USER + 100; +const BFFM_ENABLEOK = WM_USER + 101; +const BFFM_SETSELECTIONA = WM_USER + 102; +const BFFM_SETSELECTIONW = WM_USER + 103; +const BFFM_SETSTATUSTEXTW = WM_USER + 104; +const BFFM_SETOKTEXT = WM_USER + 105; +const BFFM_SETEXPANDED = WM_USER + 106; + +version(Unicode) { + alias BFFM_SETSTATUSTEXTW BFFM_SETSTATUSTEXT; + alias BFFM_SETSELECTIONW BFFM_SETSELECTION; + alias BFFM_VALIDATEFAILEDW BFFM_VALIDATEFAILED; +} else { + alias BFFM_SETSTATUSTEXTA BFFM_SETSTATUSTEXT; + alias BFFM_SETSELECTIONA BFFM_SETSELECTION; + alias BFFM_VALIDATEFAILEDA BFFM_VALIDATEFAILED; +} + +const DVASPECT_SHORTNAME = 2; + +enum SHARD { + SHARD_PIDL = 1, + SHARD_PATHA, + SHARD_PATHW, + SHARD_APPIDINFO, + SHARD_APPIDINFOIDLIST, + SHARD_LINK, + SHARD_APPIDINFOLINK, + SHARD_SHELLITEM, // = 8 + SHARD_PATH = (_WIN32_UNICODE ? SHARD_PATHW : SHARD_PATHA) +} + +const SHCNE_RENAMEITEM = 1; +const SHCNE_CREATE = 2; +const SHCNE_DELETE = 4; +const SHCNE_MKDIR = 8; +const SHCNE_RMDIR = 16; +const SHCNE_MEDIAINSERTED = 32; +const SHCNE_MEDIAREMOVED = 64; +const SHCNE_DRIVEREMOVED = 128; +const SHCNE_DRIVEADD = 256; +const SHCNE_NETSHARE = 512; +const SHCNE_NETUNSHARE = 1024; +const SHCNE_ATTRIBUTES = 2048; +const SHCNE_UPDATEDIR = 4096; +const SHCNE_UPDATEITEM = 8192; +const SHCNE_SERVERDISCONNECT = 16384; +const SHCNE_UPDATEIMAGE = 32768; +const SHCNE_DRIVEADDGUI = 65536; +const SHCNE_RENAMEFOLDER = 0x20000; +const SHCNE_FREESPACE = 0x40000; +const SHCNE_ASSOCCHANGED = 0x8000000; +const SHCNE_DISKEVENTS = 0x2381F; +const SHCNE_GLOBALEVENTS = 0xC0581E0; +const SHCNE_ALLEVENTS = 0x7FFFFFFF; +const SHCNE_INTERRUPT = 0x80000000; + +const SHCNF_IDLIST = 0; +const SHCNF_PATHA = 1; +const SHCNF_PRINTERA = 2; +const SHCNF_DWORD = 3; +const SHCNF_PATHW = 5; +const SHCNF_PRINTERW = 6; +const SHCNF_TYPE = 0xFF; +const SHCNF_FLUSH = 0x1000; +const SHCNF_FLUSHNOWAIT = 0x2000; + +version(Unicode) { + alias SHCNF_PATHW SHCNF_PATH; + alias SHCNF_PRINTERW SHCNF_PRINTER; +} else { + alias SHCNF_PATHA SHCNF_PATH; + alias SHCNF_PRINTERA SHCNF_PRINTER; +} + +enum SFGAOF : DWORD { + SFGAO_CANCOPY = DROPEFFECT.DROPEFFECT_COPY, + SFGAO_CANMOVE = DROPEFFECT.DROPEFFECT_MOVE, + SFGAO_CANLINK = DROPEFFECT.DROPEFFECT_LINK, + SFGAO_CANRENAME = 0x00000010L, + SFGAO_CANDELETE = 0x00000020L, + SFGAO_HASPROPSHEET = 0x00000040L, + SFGAO_DROPTARGET = 0x00000100L, + SFGAO_CAPABILITYMASK = 0x00000177L, + SFGAO_ISSLOW = 0x00004000L, + SFGAO_GHOSTED = 0x00008000L, + SFGAO_LINK = 0x00010000L, + SFGAO_SHARE = 0x00020000L, + SFGAO_READONLY = 0x00040000L, + SFGAO_HIDDEN = 0x00080000L, + SFGAO_DISPLAYATTRMASK = (SFGAO_ISSLOW | SFGAO_GHOSTED | SFGAO_LINK + | SFGAO_SHARE | SFGAO_READONLY | SFGAO_HIDDEN), + SFGAO_FILESYSANCESTOR = 0x10000000L, + SFGAO_FOLDER = 0x20000000L, + SFGAO_FILESYSTEM = 0x40000000L, + SFGAO_HASSUBFOLDER = 0x80000000L, + SFGAO_CONTENTSMASK = 0x80000000L, + SFGAO_VALIDATE = 0x01000000L, + SFGAO_REMOVABLE = 0x02000000L, + SFGAO_COMPRESSED = 0x04000000L +} +const STRRET_WSTR = 0; +const STRRET_OFFSET = 1; +const STRRET_CSTR = 2; + +enum { + SHGDFIL_FINDDATA = 1, + SHGDFIL_NETRESOURCE, + SHGDFIL_DESCRIPTIONID +} + +enum { + SHDID_ROOT_REGITEM = 1, + SHDID_FS_FILE, + SHDID_FS_DIRECTORY, + SHDID_FS_OTHER, + SHDID_COMPUTER_DRIVE35, + SHDID_COMPUTER_DRIVE525, + SHDID_COMPUTER_REMOVABLE, + SHDID_COMPUTER_FIXED, + SHDID_COMPUTER_NETDRIVE, + SHDID_COMPUTER_CDROM, + SHDID_COMPUTER_RAMDISK, + SHDID_COMPUTER_OTHER, + SHDID_NET_DOMAIN, + SHDID_NET_SERVER, + SHDID_NET_SHARE, + SHDID_NET_RESTOFNET, + SHDID_NET_OTHER +} + +const TCHAR[] REGSTR_PATH_EXPLORER = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"; +const TCHAR[] REGSTR_PATH_SPECIAL_FOLDERS=REGSTR_PATH_EXPLORER ~ "\\Shell Folders"; + +enum { + CSIDL_DESKTOP = 0, + CSIDL_INTERNET, + CSIDL_PROGRAMS, + CSIDL_CONTROLS, + CSIDL_PRINTERS, + CSIDL_PERSONAL, + CSIDL_FAVORITES, + CSIDL_STARTUP, + CSIDL_RECENT, + CSIDL_SENDTO, + CSIDL_BITBUCKET, + CSIDL_STARTMENU, // = 11 + CSIDL_MYMUSIC = 13, + CSIDL_MYVIDEO, // = 14 + CSIDL_DESKTOPDIRECTORY = 16, + CSIDL_DRIVES, + CSIDL_NETWORK, + CSIDL_NETHOOD, + CSIDL_FONTS, + CSIDL_TEMPLATES, + CSIDL_COMMON_STARTMENU, + CSIDL_COMMON_PROGRAMS, + CSIDL_COMMON_STARTUP, + CSIDL_COMMON_DESKTOPDIRECTORY, + CSIDL_APPDATA, + CSIDL_PRINTHOOD, + CSIDL_LOCAL_APPDATA, + CSIDL_ALTSTARTUP, + CSIDL_COMMON_ALTSTARTUP, + CSIDL_COMMON_FAVORITES, + CSIDL_INTERNET_CACHE, + CSIDL_COOKIES, + CSIDL_HISTORY, + CSIDL_COMMON_APPDATA, + CSIDL_WINDOWS, + CSIDL_SYSTEM, + CSIDL_PROGRAM_FILES, + CSIDL_MYPICTURES, + CSIDL_PROFILE, + CSIDL_SYSTEMX86, + CSIDL_PROGRAM_FILESX86, + CSIDL_PROGRAM_FILES_COMMON, + CSIDL_PROGRAM_FILES_COMMONX86, + CSIDL_COMMON_TEMPLATES, + CSIDL_COMMON_DOCUMENTS, + CSIDL_COMMON_ADMINTOOLS, + CSIDL_ADMINTOOLS, + CSIDL_CONNECTIONS, // = 49 + CSIDL_COMMON_MUSIC = 53, + CSIDL_COMMON_PICTURES, + CSIDL_COMMON_VIDEO, + CSIDL_RESOURCES, + CSIDL_RESOURCES_LOCALIZED, + CSIDL_COMMON_OEM_LINKS, + CSIDL_CDBURN_AREA, // = 59 + CSIDL_COMPUTERSNEARME = 61, + CSIDL_FLAG_DONT_VERIFY = 0x4000, + CSIDL_FLAG_CREATE = 0x8000, + CSIDL_FLAG_MASK = 0xFF00 +} + +const TCHAR[] + CFSTR_SHELLIDLIST = "Shell IDList Array", + CFSTR_SHELLIDLISTOFFSET = "Shell Object Offsets", + CFSTR_NETRESOURCES = "Net Resource", + CFSTR_FILECONTENTS = "FileContents", + CFSTR_FILENAMEA = "FileName", + CFSTR_FILENAMEMAPA = "FileNameMap", + CFSTR_FILEDESCRIPTORA = "FileGroupDescriptor", + CFSTR_INETURLA = "UniformResourceLocator", + CFSTR_SHELLURL = CFSTR_INETURLA, + CFSTR_FILENAMEW = "FileNameW", + CFSTR_FILENAMEMAPW = "FileNameMapW", + CFSTR_FILEDESCRIPTORW = "FileGroupDescriptorW", + CFSTR_INETURLW = "UniformResourceLocatorW"; + +version(Unicode) { + alias CFSTR_FILENAMEW CFSTR_FILENAME; + alias CFSTR_FILENAMEMAPW CFSTR_FILENAMEMAP; + alias CFSTR_FILEDESCRIPTORW CFSTR_FILEDESCRIPTOR; + alias CFSTR_INETURLW CFSTR_INETURL; +} else { + alias CFSTR_FILENAMEA CFSTR_FILENAME; + alias CFSTR_FILENAMEMAPA CFSTR_FILENAMEMAP; + alias CFSTR_FILEDESCRIPTORA CFSTR_FILEDESCRIPTOR; + alias CFSTR_INETURLA CFSTR_INETURL; +} +const TCHAR[] + CFSTR_PRINTERGROUP = "PrinterFriendlyName", + CFSTR_INDRAGLOOP = "InShellDragLoop", + CFSTR_PASTESUCCEEDED = "Paste Succeeded", + CFSTR_PERFORMEDDROPEFFECT = "Performed DropEffect", + CFSTR_PREFERREDDROPEFFECT = "Preferred DropEffect"; + +const CMF_NORMAL=0; +const CMF_DEFAULTONLY=1; +const CMF_VERBSONLY=2; +const CMF_EXPLORE=4; +const CMF_NOVERBS=8; +const CMF_CANRENAME=16; +const CMF_NODEFAULT=32; +const CMF_INCLUDESTATIC=64; +const CMF_RESERVED=0xffff0000; +const GCS_VERBA=0; +const GCS_HELPTEXTA=1; +const GCS_VALIDATEA=2; +const GCS_VERBW=4; +const GCS_HELPTEXTW=5; +const GCS_VALIDATEW=6; +const GCS_UNICODE=4; + +version(Unicode) { + alias GCS_VERBW GCS_VERB; + alias GCS_HELPTEXTW GCS_HELPTEXT; + alias GCS_VALIDATEW GCS_VALIDATE; +} else { + alias GCS_VERBA GCS_VERB; + alias GCS_HELPTEXTA GCS_HELPTEXT; + alias GCS_VALIDATEA GCS_VALIDATE; +} + +const TCHAR[] + CMDSTR_NEWFOLDER = "NewFolder", + CMDSTR_VIEWLIST = "ViewList", + CMDSTR_VIEWDETAILS = "ViewDetails"; + +const CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY; +const CMIC_MASK_ICON = SEE_MASK_ICON; +const CMIC_MASK_FLAG_NO_UI = SEE_MASK_FLAG_NO_UI; +const CMIC_MASK_MODAL = 0x80000000; +// TODO: This isn't defined anywhere in MinGW. +//const CMIC_VALID_SEE_FLAGS=SEE_VALID_CMIC_FLAGS; + +const GIL_OPENICON = 1; +const GIL_FORSHELL = 2; +const GIL_SIMULATEDOC = 1; +const GIL_PERINSTANCE = 2; +const GIL_PERCLASS = 4; +const GIL_NOTFILENAME = 8; +const GIL_DONTCACHE = 16; + +const FVSIF_RECT = 1; +const FVSIF_PINNED = 2; +const FVSIF_NEWFAILED = 0x8000000; +const FVSIF_NEWFILE = 0x80000000; +const FVSIF_CANVIEWIT = 0x40000000; + +const CDBOSC_SETFOCUS = 0; +const CDBOSC_KILLFOCUS = 1; +const CDBOSC_SELCHANGE = 2; +const CDBOSC_RENAME = 3; + +const FCIDM_SHVIEWFIRST = 0; +const FCIDM_SHVIEWLAST = 0x7fff; +const FCIDM_BROWSERFIRST = 0xa000; +const FCIDM_BROWSERLAST = 0xbf00; +const FCIDM_GLOBALFIRST = 0x8000; +const FCIDM_GLOBALLAST = 0x9fff; +const FCIDM_MENU_FILE = FCIDM_GLOBALFIRST; +const FCIDM_MENU_EDIT = FCIDM_GLOBALFIRST+0x0040; +const FCIDM_MENU_VIEW = FCIDM_GLOBALFIRST+0x0080; +const FCIDM_MENU_VIEW_SEP_OPTIONS = FCIDM_GLOBALFIRST+0x0081; +const FCIDM_MENU_TOOLS = FCIDM_GLOBALFIRST+0x00c0; +const FCIDM_MENU_TOOLS_SEP_GOTO = FCIDM_GLOBALFIRST+0x00c1; +const FCIDM_MENU_HELP = FCIDM_GLOBALFIRST+0x0100; +const FCIDM_MENU_FIND = FCIDM_GLOBALFIRST+0x0140; +const FCIDM_MENU_EXPLORE = FCIDM_GLOBALFIRST+0x0150; +const FCIDM_MENU_FAVORITES = FCIDM_GLOBALFIRST+0x0170; +const FCIDM_TOOLBAR = FCIDM_BROWSERFIRST; +const FCIDM_STATUS = FCIDM_BROWSERFIRST+1; + +const SBSP_DEFBROWSER = 0; +const SBSP_SAMEBROWSER = 1; +const SBSP_NEWBROWSER = 2; +const SBSP_DEFMODE = 0; +const SBSP_OPENMODE = 16; +const SBSP_EXPLOREMODE = 32; +const SBSP_ABSOLUTE = 0; +const SBSP_RELATIVE = 0x1000; +const SBSP_PARENT = 0x2000; +const SBSP_INITIATEDBYHLINKFRAME = 0x80000000; +const SBSP_REDIRECT = 0x40000000; + +enum { + FCW_STATUS=1, + FCW_TOOLBAR, + FCW_TREE +} + +const FCT_MERGE=1; +const FCT_CONFIGABLE=2; +const FCT_ADDTOEND=4; + +const SVSI_DESELECT=0; +const SVSI_SELECT=1; +const SVSI_EDIT=3; +const SVSI_DESELECTOTHERS=4; +const SVSI_ENSUREVISIBLE=8; +const SVSI_FOCUSED=16; + +const SVGIO_BACKGROUND=0; +const SVGIO_SELECTION=1; +const SVGIO_ALLVIEW=2; + +const UINT SV2GV_CURRENTVIEW=-1; +const UINT SV2GV_DEFAULTVIEW=-2; + +alias DWORD SHGDNF; + +struct CIDA { + UINT cidl; + UINT[1] aoffset; +} +alias CIDA* LPIDA; + +struct SHITEMID { + USHORT cb; + BYTE[1] abID; +} +alias SHITEMID* LPSHITEMID; +alias const(SHITEMID)* LPCSHITEMID; + +struct ITEMIDLIST { + SHITEMID mkid; +} +alias ITEMIDLIST* LPITEMIDLIST; +alias const(ITEMIDLIST)* LPCITEMIDLIST; + +alias int function(HWND, UINT, LPARAM, LPARAM) BFFCALLBACK; + +struct BROWSEINFOA { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPSTR pszDisplayName; + LPCSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; +} +alias BROWSEINFOA* PBROWSEINFOA, LPBROWSEINFOA; + +struct BROWSEINFOW { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPWSTR pszDisplayName; + LPCWSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; +} +alias BROWSEINFOW* PBROWSEINFOW, LPBROWSEINFOW; + +struct CMINVOKECOMMANDINFO { + DWORD cbSize = this.sizeof; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + DWORD dwHotKey; + HANDLE hIcon; +} +alias CMINVOKECOMMANDINFO* LPCMINVOKECOMMANDINFO; + +struct DROPFILES { + DWORD pFiles; + POINT pt; + BOOL fNC; + BOOL fWide; +} +alias DROPFILES* LPDROPFILES; + +enum SHGNO { + SHGDN_NORMAL = 0, + SHGDN_INFOLDER, + SHGDN_FOREDITING = 0x1000, + SHGDN_INCLUDE_NONFILESYS = 0x2000, + SHGDN_FORADDRESSBAR = 0x4000, + SHGDN_FORPARSING = 0x8000 +} + +enum SHCONTF { + SHCONTF_FOLDERS = 32, + SHCONTF_NONFOLDERS = 64, + SHCONTF_INCLUDEHIDDEN = 128, + SHCONTF_INIT_ON_FIRST_NEXT = 256, + SHCONTF_NETPRINTERSRCH = 512, + SHCONTF_SHAREABLE = 1024, + SHCONTF_STORAGE = 2048 +} + +struct STRRET { + UINT uType; + union { + LPWSTR pOleStr; + UINT uOffset; + char[MAX_PATH] cStr; + } +} +alias STRRET* LPSTRRET; + +enum FD_FLAGS { + FD_CLSID = 1, + FD_SIZEPOINT = 2, + FD_ATTRIBUTES = 4, + FD_CREATETIME = 8, + FD_ACCESSTIME = 16, + FD_WRITESTIME = 32, + FD_FILESIZE = 64, + FD_LINKUI = 0x8000 +} + +struct FILEDESCRIPTORA { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + CHAR[MAX_PATH] cFileName; +} +alias FILEDESCRIPTORA* LPFILEDESCRIPTORA; + +struct FILEDESCRIPTORW { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + WCHAR[MAX_PATH] cFileName; +} +alias FILEDESCRIPTORW* LPFILEDESCRIPTORW; + +struct FILEGROUPDESCRIPTORA { + UINT cItems; + FILEDESCRIPTORA[1] fgd; +} +alias FILEGROUPDESCRIPTORA* LPFILEGROUPDESCRIPTORA; + +struct FILEGROUPDESCRIPTORW { + UINT cItems; + FILEDESCRIPTORW[1] fgd; +} +alias FILEGROUPDESCRIPTORW* LPFILEGROUPDESCRIPTORW; + +enum SLR_FLAGS { + SLR_NO_UI = 1, + SLR_ANY_MATCH = 2, + SLR_UPDATE = 4, + SLR_NOUPDATE = 8, + SLR_NOSEARCH = 16, + SLR_NOTRACK = 32, + SLR_NOLINKINFO = 64, + SLR_INVOKE_MSI = 128 +} + +enum SLGP_FLAGS { + SLGP_SHORTPATH=1, + SLGP_UNCPRIORITY=2, + SLGP_RAWPATH=4 +} + +alias PBYTE LPVIEWSETTINGS; + +enum FOLDERFLAGS { + FWF_AUTOARRANGE = 1, + FWF_ABBREVIATEDNAMES = 2, + FWF_SNAPTOGRID = 4, + FWF_OWNERDATA = 8, + FWF_BESTFITWINDOW = 16, + FWF_DESKTOP = 32, + FWF_SINGLESEL = 64, + FWF_NOSUBFOLDERS = 128, + FWF_TRANSPARENT = 256, + FWF_NOCLIENTEDGE = 512, + FWF_NOSCROLL = 0x400, + FWF_ALIGNLEFT = 0x800, + FWF_SINGLECLICKACTIVATE = 0x8000 +} + +enum FOLDERVIEWMODE { + FVM_ICON = 1, + FVM_SMALLICON, + FVM_LIST, + FVM_DETAILS +} + +struct FOLDERSETTINGS { + UINT ViewMode; + UINT fFlags; +} +alias FOLDERSETTINGS* LPFOLDERSETTINGS; +alias const(FOLDERSETTINGS)* LPCFOLDERSETTINGS; + +struct FVSHOWINFO { + DWORD cbSize = this.sizeof; + HWND hwndOwner; + int iShow; + DWORD dwFlags; + RECT rect; + LPUNKNOWN punkRel; + OLECHAR[MAX_PATH] strNewFile; +} +alias FVSHOWINFO* LPFVSHOWINFO; + +struct NRESARRAY { + UINT cItems; + NETRESOURCE[1] nr; +} +alias NRESARRAY* LPNRESARRAY; + +enum { + SBSC_HIDE, + SBSC_SHOW, + SBSC_TOGGLE, + SBSC_QUERY +} + +enum { + SBCMDID_ENABLESHOWTREE, + SBCMDID_SHOWCONTROL, + SBCMDID_CANCELNAVIGATION, + SBCMDID_MAYSAVECHANGES, + SBCMDID_SETHLINKFRAME, + SBCMDID_ENABLESTOP, + SBCMDID_OPTIONS +} +enum SVUIA_STATUS { + SVUIA_DEACTIVATE, + SVUIA_ACTIVATE_NOFOCUS, + SVUIA_ACTIVATE_FOCUS, + SVUIA_INPLACEACTIVATE +} + +static if (_WIN32_IE >= 0x500) { + + struct EXTRASEARCH + { + GUID guidSearch; + WCHAR[80] wszFriendlyName; + WCHAR[2084] wszUrl; + } + alias EXTRASEARCH* LPEXTRASEARCH; + + alias DWORD SHCOLSTATEF; + + struct SHCOLUMNID { + GUID fmtid; + DWORD pid; + } + alias SHCOLUMNID* LPSHCOLUMNID; + alias const(SHCOLUMNID)* LPCSHCOLUMNID; + + struct SHELLDETAILS { + int fmt; + int cxChar; + STRRET str; + } + alias SHELLDETAILS* LPSHELLDETAILS; + + struct PERSIST_FOLDER_TARGET_INFO + { + LPITEMIDLIST pidlTargetFolder; + WCHAR[MAX_PATH] szTargetParsingName; + WCHAR[MAX_PATH] szNetworkProvider; + DWORD dwAttributes; + int csidl; + } + + enum SHGFP_TYPE { + SHGFP_TYPE_CURRENT = 0, + SHGFP_TYPE_DEFAULT = 1, + } + +} + +interface IEnumIDList : IUnknown { + HRESULT Next(ULONG, LPITEMIDLIST*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumIDList*); +} +alias IEnumIDList LPENUMIDLIST; + +interface IObjMgr : IUnknown { + HRESULT Append(IUnknown); + HRESULT Remove(IUnknown); +} + +interface IContextMenu : IUnknown { + HRESULT QueryContextMenu(HMENU, UINT, UINT, UINT, UINT); + HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); + HRESULT GetCommandString(UINT, UINT, PUINT, LPSTR, UINT); +} +alias IContextMenu LPCONTEXTMENU; + +interface IContextMenu2 : IContextMenu { + HRESULT HandleMenuMsg(UINT, WPARAM, LPARAM); +}; +alias IContextMenu2 LPCONTEXTMENU2; + +static if (_WIN32_IE >= 0x500) { + align(8) { + struct SHCOLUMNINIT { + ULONG dwFlags; + ULONG dwReserved; + WCHAR[MAX_PATH] wszFolder; + } + alias SHCOLUMNINIT* LPSHCOLUMNINIT; + alias const(SHCOLUMNINIT)* LPCSHCOLUMNINIT; + + struct SHCOLUMNDATA { + ULONG dwFlags; + DWORD dwFileAttributes; + ULONG dwReserved; + WCHAR *pwszExt; + WCHAR[MAX_PATH] wszFile; + } + alias SHCOLUMNDATA* LPSHCOLUMNDATA; + alias const(SHCOLUMNDATA)* LPCSHCOLUMNDATA; + } + + const MAX_COLUMN_NAME_LEN = 80; + const MAX_COLUMN_DESC_LEN = 128; + + align(1) struct SHCOLUMNINFO { + SHCOLUMNID scid; + VARTYPE vt; + DWORD fmt; + UINT cChars; + DWORD csFlags; + WCHAR[MAX_COLUMN_NAME_LEN] wszTitle; + WCHAR[MAX_COLUMN_DESC_LEN] wszDescription; + } + alias SHCOLUMNINFO* LPSHCOLUMNINFO; + alias const(SHCOLUMNINFO)* LPCSHCOLUMNINFO; + + enum SHCOLSTATE { + SHCOLSTATE_TYPE_STR = 0x00000001, + SHCOLSTATE_TYPE_INT = 0x00000002, + SHCOLSTATE_TYPE_DATE = 0x00000003, + SHCOLSTATE_TYPEMASK = 0x0000000f, + SHCOLSTATE_ONBYDEFAULT = 0x00000010, + SHCOLSTATE_SLOW = 0x00000020, + SHCOLSTATE_EXTENDED = 0x00000040, + SHCOLSTATE_SECONDARYUI = 0x00000080, + SHCOLSTATE_HIDDEN = 0x00000100, + SHCOLSTATE_PREFER_VARCMP = 0x00000200 + } + + interface IColumnProvider : IUnknown { + HRESULT Initialize(LPCSHCOLUMNINIT); + HRESULT GetColumnInfo(DWORD, SHCOLUMNINFO*); + HRESULT GetItemData(LPCSHCOLUMNID, LPCSHCOLUMNDATA, VARIANT*); + } +}/* _WIN32_IE >= 0x500 */ + +interface IQueryInfo : IUnknown { + HRESULT GetInfoTip(DWORD, WCHAR**); + HRESULT GetInfoFlags(DWORD*); +} + +interface IShellExtInit : IUnknown { + HRESULT Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY); +} +alias IShellExtInit LPSHELLEXTINIT; + +interface IShellPropSheetExt : IUnknown { + HRESULT AddPages(LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM); +} +alias IShellPropSheetExt LPSHELLPROPSHEETEXT; + +interface IExtractIconA : IUnknown { + HRESULT GetIconLocation(UINT, LPSTR, UINT, int*, PUINT); + HRESULT Extract(LPCSTR, UINT, HICON*, HICON*, UINT); +}; +alias IExtractIconA LPEXTRACTICONA; + +interface IExtractIconW : IUnknown { + HRESULT GetIconLocation(UINT, LPWSTR, UINT, int*, PUINT); + HRESULT Extract(LPCWSTR, UINT, HICON*, HICON*, UINT); +} +alias IExtractIconW LPEXTRACTICONW; + +version(Unicode) { + alias IExtractIconW IExtractIcon; + alias LPEXTRACTICONW LPEXTRACTICON; +} else { + alias IExtractIconA IExtractIcon; + alias LPEXTRACTICONA LPEXTRACTICON; +} + +interface IShellLinkA : IUnknown { + HRESULT GetPath(LPSTR, int, WIN32_FIND_DATAA*, DWORD); + HRESULT GetIDList(LPITEMIDLIST*); + HRESULT SetIDList(LPCITEMIDLIST); + HRESULT GetDescription(LPSTR, int); + HRESULT SetDescription(LPCSTR); + HRESULT GetWorkingDirectory(LPSTR, int); + HRESULT SetWorkingDirectory(LPCSTR); + HRESULT GetArguments(LPSTR, int); + HRESULT SetArguments(LPCSTR); + HRESULT GetHotkey(PWORD); + HRESULT SetHotkey(WORD); + HRESULT GetShowCmd(int*); + HRESULT SetShowCmd(int); + HRESULT GetIconLocation(LPSTR, int, int*); + HRESULT SetIconLocation(LPCSTR, int); + HRESULT SetRelativePath(LPCSTR , DWORD); + HRESULT Resolve(HWND, DWORD); + HRESULT SetPath(LPCSTR); +} + +interface IShellLinkW : IUnknown { + HRESULT GetPath(LPWSTR, int, WIN32_FIND_DATAW*, DWORD); + HRESULT GetIDList(LPITEMIDLIST*); + HRESULT SetIDList(LPCITEMIDLIST); + HRESULT GetDescription(LPWSTR, int); + HRESULT SetDescription(LPCWSTR); + HRESULT GetWorkingDirectory(LPWSTR, int); + HRESULT SetWorkingDirectory(LPCWSTR); + HRESULT GetArguments(LPWSTR, int); + HRESULT SetArguments(LPCWSTR); + HRESULT GetHotkey(PWORD); + HRESULT SetHotkey(WORD); + HRESULT GetShowCmd(int*); + HRESULT SetShowCmd(int); + HRESULT GetIconLocation(LPWSTR, int, int*); + HRESULT SetIconLocation(LPCWSTR, int); + HRESULT SetRelativePath(LPCWSTR , DWORD); + HRESULT Resolve(HWND, DWORD); + HRESULT SetPath(LPCWSTR); +} + + +interface IShellFolder : IUnknown { + HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); + HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); + HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); + HRESULT CreateViewObject(HWND, REFIID, PVOID*); + HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); + HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); + HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); + HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); +} +alias IShellFolder LPSHELLFOLDER; + +static if (_WIN32_IE >= 0x500) { + +interface IEnumExtraSearch: IUnknown { + HRESULT Next(ULONG, LPEXTRASEARCH*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumExtraSearch*); +} +alias IEnumExtraSearch LPENUMEXTRASEARCH; + +interface IShellFolder2 : IShellFolder { + HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); + HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); + HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); + HRESULT CreateViewObject(HWND, REFIID, PVOID*); + HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); + HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); + HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); + HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); + HRESULT GetDefaultSearchGUID(GUID*); + HRESULT EnumSearches(IEnumExtraSearch*); + HRESULT GetDefaultColumn(DWORD, ULONG*, ULONG*); + HRESULT GetDefaultColumnState(UINT, SHCOLSTATEF*); + HRESULT GetDetailsEx(LPCITEMIDLIST, const(SHCOLUMNID)*, VARIANT*); + HRESULT GetDetailsOf(LPCITEMIDLIST, UINT, SHELLDETAILS*); + HRESULT MapColumnToSCID(UINT, SHCOLUMNID*); +} +alias IShellFolder2 LPSHELLFOLDER2; + +} /* _WIN32_IE >= 0x500 */ + +interface ICopyHook : IUnknown { + UINT CopyCallback(HWND, UINT, UINT, LPCSTR, DWORD, LPCSTR, DWORD); +} +alias ICopyHook LPCOPYHOOK; + +interface IFileViewerSite : IUnknown { + HRESULT SetPinnedWindow(HWND); + HRESULT GetPinnedWindow(HWND*); +} +alias IFileViewerSite LPFILEVIEWERSITE; + +interface IFileViewer : IUnknown { + HRESULT ShowInitialize(LPFILEVIEWERSITE); + HRESULT Show(LPFVSHOWINFO); + HRESULT PrintTo(LPSTR, BOOL); +} +alias IFileViewer LPFILEVIEWER; + +interface IFileSystemBindData : IUnknown { + HRESULT SetFindData(const(WIN32_FIND_DATAW)*); + HRESULT GetFindData(WIN32_FIND_DATAW*); +} + +interface IPersistFolder : IPersist { + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); +} +alias IPersistFolder LPPERSISTFOLDER; + +static if (_WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500) { + +interface IPersistFolder2 : IPersistFolder { + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); + HRESULT GetCurFolder(LPITEMIDLIST*); +} +alias IPersistFolder2 LPPERSISTFOLDER2; + +}/* _WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500 */ + +static if (_WIN32_IE >= 0x500) { + +interface IPersistFolder3 : IPersistFolder2 { + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); + HRESULT GetCurFolder(LPITEMIDLIST*); + HRESULT InitializeEx(IBindCtx, LPCITEMIDLIST, const(PERSIST_FOLDER_TARGET_INFO)*); + HRESULT GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO*); +} +alias IPersistFolder3 LPPERSISTFOLDER3; + +} /* _WIN32_IE >= 0x500 */ + +alias IShellBrowser LPSHELLBROWSER; +alias IShellView LPSHELLVIEW; + +interface IShellBrowser : IOleWindow { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT InsertMenusSB(HMENU, LPOLEMENUGROUPWIDTHS); + HRESULT SetMenuSB(HMENU, HOLEMENU, HWND); + HRESULT RemoveMenusSB(HMENU); + HRESULT SetStatusTextSB(LPCOLESTR); + HRESULT EnableModelessSB(BOOL); + HRESULT TranslateAcceleratorSB(LPMSG, WORD); + HRESULT BrowseObject(LPCITEMIDLIST, UINT); + HRESULT GetViewStateStream(DWORD, LPSTREAM*); + HRESULT GetControlWindow(UINT, HWND*); + HRESULT SendControlMsg(UINT, UINT, WPARAM, LPARAM, LRESULT*); + HRESULT QueryActiveShellView(LPSHELLVIEW*); + HRESULT OnViewWindowActive(LPSHELLVIEW); + HRESULT SetToolbarItems(LPTBBUTTON, UINT, UINT); +} + +interface IShellView : IOleWindow { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT TranslateAccelerator(LPMSG); +//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT +//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +//[Yes] #else + HRESULT EnableModeless(BOOL); +//[Yes] #endif + HRESULT UIActivate(UINT); + HRESULT Refresh(); + HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); + HRESULT DestroyViewWindow(); + HRESULT GetCurrentInfo(LPFOLDERSETTINGS); + HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT SaveViewState(); + HRESULT SelectItem(LPCITEMIDLIST, UINT); + HRESULT GetItemObject(UINT, REFIID, PVOID*); +} + +interface ICommDlgBrowser : IUnknown { + HRESULT OnDefaultCommand(IShellView); + HRESULT OnStateChange(IShellView, ULONG); + HRESULT IncludeObject(IShellView, LPCITEMIDLIST); +} +alias ICommDlgBrowser LPCOMMDLGBROWSER; + +alias GUID SHELLVIEWID; + +struct SV2CVW2_PARAMS { + DWORD cbSize = this.sizeof; + IShellView psvPrev; + FOLDERSETTINGS *pfs; + IShellBrowser psbOwner; + RECT *prcView; + const(SHELLVIEWID)* pvid; + HWND hwndView; +} +alias SV2CVW2_PARAMS* LPSV2CVW2_PARAMS; + +interface IShellView2 : IShellView { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT TranslateAccelerator(LPMSG); +//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT +//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +//[Yes] #else + HRESULT EnableModeless(BOOL); +//[Yes] #endif + HRESULT UIActivate(UINT); + HRESULT Refresh(); + HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); + HRESULT DestroyViewWindow(); + HRESULT GetCurrentInfo(LPFOLDERSETTINGS); + HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT SaveViewState(); + HRESULT SelectItem(LPCITEMIDLIST, UINT); + HRESULT GetItemObject(UINT, REFIID, PVOID*); + HRESULT GetView(SHELLVIEWID*, ULONG); + HRESULT CreateViewWindow2(LPSV2CVW2_PARAMS); +} + +interface IShellExecuteHookA : IUnknown { + HRESULT Execute(LPSHELLEXECUTEINFOA); +} + +interface IShellExecuteHookW : IUnknown { + HRESULT Execute(LPSHELLEXECUTEINFOW); +} + +interface IShellIcon : IUnknown { + HRESULT GetIconOf(LPCITEMIDLIST, UINT, PINT); +} +alias IShellIcon LPSHELLICON; + +struct SHELLFLAGSTATE { + short _bf; +/* + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + UINT fRestFlags : 3; +*/ + @property bool fShowAllObjects() { return cast(bool) (_bf & 0x0001); } + @property bool fShowExtensions() { return cast(bool) (_bf & 0x0002); } + @property bool fNoConfirmRecycle() { return cast(bool) (_bf & 0x0004); } + @property bool fShowSysFiles() { return cast(bool) (_bf & 0x0008); } + @property bool fShowCompColor() { return cast(bool) (_bf & 0x0010); } + @property bool fDoubleClickInWebView() { return cast(bool) (_bf & 0x0020); } + @property bool fDesktopHTML() { return cast(bool) (_bf & 0x0040); } + @property bool fWin95Classic() { return cast(bool) (_bf & 0x0080); } + @property bool fDontPrettyPath() { return cast(bool) (_bf & 0x0100); } + @property bool fShowAttribCol() { return cast(bool) (_bf & 0x0200); } + @property bool fMapNetDrvBtn() { return cast(bool) (_bf & 0x0400); } + @property bool fShowInfoTip() { return cast(bool) (_bf & 0x0800); } + @property bool fHideIcons() { return cast(bool) (_bf & 0x1000); } + @property ubyte fRestFlags() { return cast(ubyte) (_bf >> 13); } + + @property bool fShowAllObjects(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFE) | f); return f; } + @property bool fShowExtensions(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFD) | (f << 1)); return f; } + @property bool fNoConfirmRecycle(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFB) | (f << 2)); return f; } + @property bool fShowSysFiles(bool f) { _bf = cast(ushort) ((_bf & ~0xFFF8) | (f << 3)); return f; } + @property bool fShowCompColor(bool f) { _bf = cast(ushort) ((_bf & ~0xFFEF) | (f << 4)); return f; } + @property bool fDoubleClickInWebView(bool f) { _bf = cast(ushort) ((_bf & ~0xFFDF) | (f << 5)); return f; } + @property bool fDesktopHTML(bool f) { _bf = cast(ushort) ((_bf & ~0xFFBF) | (f << 6)); return f; } + @property bool fWin95Classic(bool f) { _bf = cast(ushort) ((_bf & ~0xFF8F) | (f << 7)); return f; } + @property bool fDontPrettyPath(bool f) { _bf = cast(ushort) ((_bf & ~0xFEFF) | (f << 8)); return f; } + @property bool fShowAttribCol(bool f) { _bf = cast(ushort) ((_bf & ~0xFDFF) | (f << 9)); return f; } + @property bool fMapNetDrvBtn(bool f) { _bf = cast(ushort) ((_bf & ~0xFBFF) | (f << 10)); return f; } + @property bool fShowInfoTip(bool f) { _bf = cast(ushort) ((_bf & ~0xF8FF) | (f << 11)); return f; } + @property bool fHideIcons(bool f) { _bf = cast(ushort) ((_bf & ~0xEFFF) | (f << 12)); return f; } + @property ubyte fRestFlags(ubyte f) { _bf = cast(ushort) ((_bf & ~0x1FFF) | (f << 13)); return cast(ubyte) (f & 7); } +} +alias SHELLFLAGSTATE* LPSHELLFLAGSTATE; + +const SSF_SHOWALLOBJECTS = 0x1; +const SSF_SHOWEXTENSIONS = 0x2; +const SSF_SHOWCOMPCOLOR = 0x8; +const SSF_SHOWSYSFILES = 0x20; +const SSF_DOUBLECLICKINWEBVIEW = 0x80; +const SSF_SHOWATTRIBCOL = 0x100; +const SSF_DESKTOPHTML = 0x200; +const SSF_WIN95CLASSIC = 0x400; +const SSF_DONTPRETTYPATH = 0x800; +const SSF_MAPNETDRVBUTTON = 0x1000; +const SSF_SHOWINFOTIP = 0x2000; +const SSF_HIDEICONS = 0x4000; +const SSF_NOCONFIRMRECYCLE = 0x8000; + +interface IShellIconOverlayIdentifier : IUnknown { + HRESULT IsMemberOf(LPCWSTR, DWORD); + HRESULT GetOverlayInfo(LPWSTR, int, int*, DWORD*); + HRESULT GetPriority(int*); +} + +const ISIOI_ICONFILE = 0x00000001; +const ISIOI_ICONINDEX = 0x00000002; + +static if (_WIN32_WINNT >= 0x500) { + struct SHELLSTATE { + uint _bf1; + DWORD dwWin95Unused; + UINT uWin95Unused; + LONG lParamSort; + int iSortDirection; + UINT _version; + UINT uNotUsed; + uint _bf2; + /* + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + BOOL fWebView : 1; + BOOL fFilter : 1; + BOOL fShowSuperHidden : 1; + BOOL fNoNetCrawling : 1; + */ + @property bool fShowAllObjects() { return cast(bool) (_bf1 & 0x00000001); } + @property bool fShowExtensions() { return cast(bool) (_bf1 & 0x00000002); } + @property bool fNoConfirmRecycle() { return cast(bool) (_bf1 & 0x00000004); } + @property bool fShowSysFiles() { return cast(bool) (_bf1 & 0x00000008); } + @property bool fShowCompColor() { return cast(bool) (_bf1 & 0x00000010); } + @property bool fDoubleClickInWebView() { return cast(bool) (_bf1 & 0x00000020); } + @property bool fDesktopHTML() { return cast(bool) (_bf1 & 0x00000040); } + @property bool fWin95Classic() { return cast(bool) (_bf1 & 0x00000080); } + @property bool fDontPrettyPath() { return cast(bool) (_bf1 & 0x00000100); } + @property bool fShowAttribCol() { return cast(bool) (_bf1 & 0x00000200); } + @property bool fMapNetDrvBtn() { return cast(bool) (_bf1 & 0x00000400); } + @property bool fShowInfoTip() { return cast(bool) (_bf1 & 0x00000800); } + @property bool fHideIcons() { return cast(bool) (_bf1 & 0x00001000); } + @property bool fWebView() { return cast(bool) (_bf1 & 0x00002000); } + @property bool fFilter() { return cast(bool) (_bf1 & 0x00004000); } + @property bool fShowSuperHidden() { return cast(bool) (_bf1 & 0x00008000); } + @property bool fNoNetCrawling() { return cast(bool) (_bf1 & 0x00010000); } + + @property bool fShowAllObjects(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFE) | f); return f; } + @property bool fShowExtensions(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFD) | (f << 1)); return f; } + @property bool fNoConfirmRecycle(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFB) | (f << 2)); return f; } + @property bool fShowSysFiles(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFF8) | (f << 3)); return f; } + @property bool fShowCompColor(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFEF) | (f << 4)); return f; } + @property bool fDoubleClickInWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFDF) | (f << 5)); return f; } + @property bool fDesktopHTML(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFBF) | (f << 6)); return f; } + @property bool fWin95Classic(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFF8F) | (f << 7)); return f; } + @property bool fDontPrettyPath(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFEFF) | (f << 8)); return f; } + @property bool fShowAttribCol(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFDFF) | (f << 9)); return f; } + @property bool fMapNetDrvBtn(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFBFF) | (f << 10)); return f; } + @property bool fShowInfoTip(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFF8FF) | (f << 11)); return f; } + @property bool fHideIcons(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFEFFF) | (f << 12)); return f; } + @property bool fWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFDFFF) | (f << 13)); return f; } + @property bool fFilter(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFBFFF) | (f << 14)); return f; } + @property bool fShowSuperHidden(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFF8FFF) | (f << 15)); return f; } + @property bool fNoNetCrawling(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFEFFFF) | (f << 16)); return f; } + /* + BOOL fSepProcess : 1; + BOOL fStartPanelOn : 1; + BOOL fShowStartPage : 1; + UINT fSpareFlags : 13; + */ + @property bool fSepProcess() { return cast(bool) (_bf2 & 0x00000001); } + @property bool fStartPanelOn() { return cast(bool) (_bf2 & 0x00000002); } + @property bool fShowStartPage() { return cast(bool) (_bf2 & 0x00000004); } + @property ushort fSpareFlags() { return cast(ushort) ((_bf2 & 0x0000FFF8) >> 3); } + + @property bool fSepProcess(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFE) | f); return f; } + @property bool fStartPanelOn(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFD) | (f << 1)); return f; } + @property bool fShowStartPage(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFB) | (f << 2)); return f; } + @property ushort fSpareFlags(ushort f) { + _bf2 = cast(ushort) ((_bf2 & ~0xFFFF0007) | ((f & 0x1FFF) << 3)); + return cast(ushort) (f & 0x1FFF); + } + } + alias SHELLSTATE* LPSHELLSTATE; +} + +static if (_WIN32_IE >= 0x500) { + align(8) { + struct SHDRAGIMAGE { + SIZE sizeDragImage; + POINT ptOffset; + HBITMAP hbmpDragImage; + COLORREF crColorKey; + } + alias SHDRAGIMAGE* LPSHDRAGIMAGE; + } + + interface IDragSourceHelper : IUnknown { + HRESULT InitializeFromBitmap(LPSHDRAGIMAGE pshdi, IDataObject pDataObject); + HRESULT InitializeFromWindow(HWND hwnd, POINT* ppt, IDataObject pDataObject); + } + + interface IDropTargetHelper : IUnknown { + HRESULT DragEnter(HWND hwndTarget, IDataObject pDataObject, POINT* ppt, DWORD dwEffect); + HRESULT DragLeave(); + HRESULT DragOver(POINT* ppt, DWORD dwEffect); + HRESULT Drop(IDataObject pDataObject, POINT* ppt, DWORD dwEffect); + HRESULT Show(BOOL fShow); + } +} + +extern (Windows): +void SHAddToRecentDocs(UINT, PCVOID); +LPITEMIDLIST SHBrowseForFolderA(PBROWSEINFOA); +LPITEMIDLIST SHBrowseForFolderW(PBROWSEINFOW); +void SHChangeNotify(LONG, UINT, PCVOID, PCVOID); +HRESULT SHGetDataFromIDListA(LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int); +HRESULT SHGetDataFromIDListW(LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int); +HRESULT SHGetDesktopFolder(LPSHELLFOLDER*); +HRESULT SHGetInstanceExplorer(IUnknown*); +HRESULT SHGetMalloc(LPMALLOC*); +BOOL SHGetPathFromIDListA(LPCITEMIDLIST, LPSTR); +BOOL SHGetPathFromIDListW(LPCITEMIDLIST, LPWSTR); +HRESULT SHGetSpecialFolderLocation(HWND, int, LPITEMIDLIST*); +HRESULT SHLoadInProc(REFCLSID); + +static if (_WIN32_IE >= 0x400) { + BOOL SHGetSpecialFolderPathA(HWND, LPSTR, int, BOOL); + BOOL SHGetSpecialFolderPathW(HWND, LPWSTR, int, BOOL); +} + +/* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */ +HRESULT SHGetFolderPathA(HWND, int, HANDLE, DWORD, LPSTR); +HRESULT SHGetFolderPathW(HWND, int, HANDLE, DWORD, LPWSTR); + +static if (_WIN32_WINNT >= 0x500) { + INT SHGetIconOverlayIndexW(LPCWSTR pszIconPath, int iIconIndex); + INT SHGetIconOverlayIndexA(LPCSTR pszIconPath, int iIconIndex); + HRESULT SHGetFolderLocation(HWND, int, HANDLE, DWORD, LPITEMIDLIST*); + INT SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES); + INT SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES); + HRESULT SHBindToParent(LPCITEMIDLIST, REFIID, VOID**, LPCITEMIDLIST*); +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + PRF_VERIFYEXISTS = 0x0001, + PRF_TRYPROGRAMEXTENSIONS = (0x0002 | PRF_VERIFYEXISTS), + PRF_FIRSTDIRDEF = 0x0004, + PRF_DONTFINDLNK = 0x0008, + IDO_SHGIOI_SHARE = 0x0FFFFFFF, + IDO_SHGIOI_LINK = 0x0FFFFFFE, + IDO_SHGIOI_SLOWFILE = 0x0FFFFFFD, + IDO_SHGIOI_DEFAULT = 0x0FFFFFFC + } + + struct SHDESCRIPTIONID { + DWORD dwDescriptionId; + CLSID clsid; + } + alias SHDESCRIPTIONID* LPSHDESCRIPTIONID; + + BOOL PathResolve(LPWSTR, LPCWSTR*, UINT); + HRESULT SHGetFolderPathAndSubDirA(HWND, int, HANDLE, DWORD, LPCSTR, LPSTR); + HRESULT SHGetFolderPathAndSubDirW(HWND, int, HANDLE, DWORD, LPCWSTR, LPWSTR); + HRESULT SHParseDisplayName(LPCWSTR, IBindCtx, LPITEMIDLIST, SFGAOF, SFGAOF*); +} + +void SHGetSettings(LPSHELLFLAGSTATE, DWORD); + +static if (_WIN32_WINNT >= 0x500) { + void SHGetSetSettings(LPSHELLSTATE, DWORD, BOOL); + BOOL ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); + BOOL ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); + BOOL ILRemoveLastID(LPITEMIDLIST); + HRESULT ILLoadFromStream(IStream, LPITEMIDLIST*); + HRESULT ILSaveToStream(IStream, LPCITEMIDLIST); + LPITEMIDLIST ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); + LPITEMIDLIST ILClone(LPCITEMIDLIST); + LPITEMIDLIST ILCloneFirst(LPCITEMIDLIST); + LPITEMIDLIST ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); + LPITEMIDLIST ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); + LPITEMIDLIST ILFindLastID(LPCITEMIDLIST); + LPITEMIDLIST ILGetNext(LPCITEMIDLIST); + UINT ILGetSize(LPCITEMIDLIST); + void ILFree(LPITEMIDLIST); + + HRESULT SHCoCreateInstance(LPCWSTR, REFCLSID, IUnknown, REFIID, void**); +} + +version(Unicode) { + alias IShellExecuteHookW IShellExecuteHook; + alias IShellLinkW IShellLink; + alias BROWSEINFOW BROWSEINFO; + alias SHBrowseForFolderW SHBrowseForFolder; + alias SHGetDataFromIDListW SHGetDataFromIDList; + alias SHGetPathFromIDListW SHGetPathFromIDList; + static if (_WIN32_IE >= 0x400) { + alias SHGetSpecialFolderPathW SHGetSpecialFolderPath; + } + alias SHGetFolderPathW SHGetFolderPath; + static if (_WIN32_WINNT >= 0x500) { + alias SHGetIconOverlayIndexW SHGetIconOverlayIndex; + alias SHCreateDirectoryExW SHCreateDirectoryEx; + } + static if (_WIN32_WINNT >= 0x501) { + alias SHGetFolderPathAndSubDirW SHGetFolderPathAndSubDir; + } + alias FILEDESCRIPTORW FILEDESCRIPTOR; + alias LPFILEDESCRIPTORW LPFILEDESCRIPTOR; + alias FILEGROUPDESCRIPTORW FILEGROUPDESCRIPTOR; + alias LPFILEGROUPDESCRIPTORW LPFILEGROUPDESCRIPTOR; + +} else { + alias IShellExecuteHookA IShellExecuteHook; + alias IShellLinkA IShellLink; + alias BROWSEINFOA BROWSEINFO; + alias SHBrowseForFolderA SHBrowseForFolder; + alias SHGetDataFromIDListA SHGetDataFromIDList; + alias SHGetPathFromIDListA SHGetPathFromIDList; + static if (_WIN32_IE >= 0x400) { + alias SHGetSpecialFolderPathA SHGetSpecialFolderPath; + } + alias SHGetFolderPathA SHGetFolderPath; + static if (_WIN32_WINNT >= 0x500) { + alias SHGetIconOverlayIndexA SHGetIconOverlayIndex; + alias SHCreateDirectoryExA SHCreateDirectoryEx; + } + static if (_WIN32_WINNT >= 0x501) { + alias SHGetFolderPathAndSubDirA SHGetFolderPathAndSubDir; + } + alias FILEDESCRIPTORA FILEDESCRIPTOR; + alias LPFILEDESCRIPTORA LPFILEDESCRIPTOR; + alias FILEGROUPDESCRIPTORA FILEGROUPDESCRIPTOR; + alias LPFILEGROUPDESCRIPTORA LPFILEGROUPDESCRIPTOR; +} +alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO; + +static if (_WIN32_WINNT >= 0x501) { + interface IFolderView : IUnknown { + HRESULT GetAutoArrange(); + HRESULT GetCurrentViewMode(UINT); + HRESULT GetDefaultSpacing(POINT*); + HRESULT GetFocusedItem(int*); + HRESULT GetFolder(REFIID, PVOID*); + HRESULT GetItemPosition(LPCITEMIDLIST, POINT*); + HRESULT GetSelectionMarkedItem(int*); + HRESULT GetSpacing(POINT*); + HRESULT Item(int, LPITEMIDLIST*); + HRESULT ItemCount(UINT, int*); + HRESULT Items(UINT, REFIID, PVOID*); + HRESULT SelectAndPositionItems(UINT, LPCITEMIDLIST*, POINT*, DWORD); + HRESULT SelectItem(int, DWORD); + HRESULT SetCurrentViewMode(UINT); + } + alias IFolderView LPFOLDERVIEW; +} diff --git a/src/core/sys/windows/shlwapi.d b/src/core/sys/windows/shlwapi.d new file mode 100644 index 0000000000..a72c7971d3 --- /dev/null +++ b/src/core/sys/windows/shlwapi.d @@ -0,0 +1,730 @@ +/***********************************************************************\ +* shlwapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.shlwapi; +pragma(lib, "shlwapi"); + +/* Changes compared to MinGW: +wnsprintf functions are not included. +// Macros unneeded for D +#define StrCmpIA lstrcmpiA; +#define StrCmpA lstrcmpA; +#define StrCpyA lstrcpyA; +#define StrCpyNA lstrcpynA; +#define MAKEDLLVERULL(major, minor, build, qfe) \ + (((ULONGLONG)(major) << 48) | \ + ((ULONGLONG)(minor) << 32) | \ + ((ULONGLONG)(build) << 16) | \ + ((ULONGLONG)( qfe) << 0)) +*/ + +import win32.objbase, win32.shlobj; +private import win32.basetyps, win32.objidl, win32.unknwn, win32.windef, + win32.winbase, win32.winreg; + +const DLLVER_PLATFORM_WINDOWS = 0x00000001; +const DLLVER_PLATFORM_NT = 0x00000002; + +const URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000; +const URL_DONT_SIMPLIFY = 0x08000000; +const URL_ESCAPE_PERCENT = 0x00001000; +const URL_ESCAPE_SEGMENT_ONLY = 0x00002000; +const URL_ESCAPE_SPACES_ONLY = 0x04000000; +const URL_ESCAPE_UNSAFE = 0x20000000; +const URL_INTERNAL_PATH = 0x00800000; +const URL_PARTFLAG_KEEPSCHEME = 0x00000001; +const URL_PLUGGABLE_PROTOCOL = 0x40000000; +const URL_UNESCAPE = 0x10000000; +const URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000; +const URL_UNESCAPE_INPLACE = 0x00100000; + +align(1): +struct DLLVERSIONINFO +{ + DWORD cbSize = this.sizeof; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformID; +} + +struct DLLVERSIONINFO2 +{ + DLLVERSIONINFO info1; + DWORD dwFlags; + ULONGLONG ullVersion; +} + +enum ASSOCSTR { + ASSOCSTR_COMMAND, + ASSOCSTR_EXECUTABLE, + ASSOCSTR_FRIENDLYDOCNAME, + ASSOCSTR_FRIENDLYAPPNAME, + ASSOCSTR_NOOPEN, + ASSOCSTR_SHELLNEWVALUE, + ASSOCSTR_DDECOMMAND, + ASSOCSTR_DDEIFEXEC, + ASSOCSTR_DDEAPPLICATION, + ASSOCSTR_DDETOPIC +} + +enum ASSOCKEY +{ + ASSOCKEY_SHELLEXECCLASS = 1, + ASSOCKEY_APP, + ASSOCKEY_CLASS, + ASSOCKEY_BASECLASS +} + +enum ASSOCDATA +{ + ASSOCDATA_MSIDESCRIPTOR = 1, + ASSOCDATA_NOACTIVATEHANDLER, + ASSOCDATA_QUERYCLASSSTORE +} + +alias DWORD ASSOCF; + +enum SHREGDEL_FLAGS +{ + SHREGDEL_DEFAULT = 0x00000000, + SHREGDEL_HKCU = 0x00000001, + SHREGDEL_HKLM = 0x00000010, + SHREGDEL_BOTH = 0x00000011 +} + +enum SHREGENUM_FLAGS +{ + SHREGENUM_DEFAULT = 0x00000000, + SHREGENUM_HKCU = 0x00000001, + SHREGENUM_HKLM = 0x00000010, + SHREGENUM_BOTH = 0x00000011 +} + +enum URLIS +{ + URLIS_URL, + URLIS_OPAQUE, + URLIS_NOHISTORY, + URLIS_FILEURL, + URLIS_APPLIABLE, + URLIS_DIRECTORY, + URLIS_HASQUERY +} + +mixin DECLARE_HANDLE!("HUSKEY"); +alias HUSKEY* PHUSKEY; + +extern (Windows) +{ + alias HRESULT function (DLLVERSIONINFO *) DLLGETVERSIONPROC; +} + + +BOOL IntlStrEqNA(LPCSTR pStr1, LPCSTR pStr2, int nChar) +{ + return IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar); +} + +BOOL IntlStrEqNW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) +{ + return IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar); +} + +BOOL IntlStrEqNIA(LPCSTR pStr1, LPCSTR pStr2, int nChar) +{ + return IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar); +} + +BOOL IntlStrEqNIW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) +{ + return IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar); +} + +BOOL UrlIsFileUrlA(LPCSTR pszURL) +{ + return UrlIsA(pszURL, URLIS.URLIS_FILEURL); +} + +BOOL UrlIsFileUrlW(LPCWSTR pszURL) +{ + return UrlIsW(pszURL, URLIS.URLIS_FILEURL); +} + +HRESULT UrlUnescapeInPlaceA(LPSTR pszUrl, DWORD dwFlags) +{ + return UrlUnescapeA(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); +} +HRESULT UrlUnescapeInPlaceW(LPWSTR pszUrl, DWORD dwFlags) +{ + return UrlUnescapeW(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); +} + +extern (Windows): +BOOL ChrCmpIA(WORD, WORD); +BOOL ChrCmpIW(WCHAR, WCHAR); +BOOL IntlStrEqWorkerA(BOOL, LPCSTR, LPCSTR, int); +BOOL IntlStrEqWorkerW(BOOL, LPCWSTR, LPCWSTR, int); +HRESULT SHStrDupA(LPCSTR, LPWSTR*); +HRESULT SHStrDupW(LPCWSTR, LPWSTR*); +LPSTR StrCatA(LPSTR, LPCSTR); +LPWSTR StrCatW(LPWSTR, LPCWSTR); +LPSTR StrCatBuffA(LPSTR, LPCSTR, int); +LPWSTR StrCatBuffW(LPWSTR, LPCWSTR, int); +DWORD StrCatChainW(LPWSTR, DWORD, DWORD, LPCWSTR); +LPSTR StrChrA(LPCSTR, WORD); +LPWSTR StrChrW(LPCWSTR, WCHAR); +LPSTR StrChrIA(LPCSTR, WORD); +LPWSTR StrChrIW(LPCWSTR, WCHAR); +int StrCmpIW(LPCWSTR, LPCWSTR); +int StrCmpW(LPCWSTR, LPCWSTR); +LPWSTR StrCpyW(LPWSTR, LPCWSTR); +LPWSTR StrCpyNW(LPWSTR, LPCWSTR, int); +int StrCmpNA(LPCSTR, LPCSTR, int); +int StrCmpNW(LPCWSTR, LPCWSTR, int); +int StrCmpNIA(LPCSTR, LPCSTR, int); +int StrCmpNIW(LPCWSTR, LPCWSTR, int); +int StrCSpnA(LPCSTR, LPCSTR); +int StrCSpnW(LPCWSTR, LPCWSTR); +int StrCSpnIA(LPCSTR, LPCSTR); +int StrCSpnIW(LPCWSTR, LPCWSTR); +LPSTR StrDupA(LPCSTR); +LPWSTR StrDupW(LPCWSTR); +LPSTR StrFormatByteSize64A(LONGLONG, LPSTR, UINT); +LPSTR StrFormatByteSizeA(DWORD, LPSTR, UINT); +LPWSTR StrFormatByteSizeW(LONGLONG, LPWSTR, UINT); +LPSTR StrFormatKBSizeA(LONGLONG, LPSTR, UINT); +LPWSTR StrFormatKBSizeW(LONGLONG, LPWSTR, UINT); +int StrFromTimeIntervalA(LPSTR, UINT, DWORD, int); +int StrFromTimeIntervalW(LPWSTR, UINT, DWORD, int); +BOOL StrIsIntlEqualA(BOOL, LPCSTR, LPCSTR, int); +BOOL StrIsIntlEqualW(BOOL, LPCWSTR, LPCWSTR, int); +LPSTR StrNCatA(LPSTR, LPCSTR, int); +LPWSTR StrNCatW(LPWSTR, LPCWSTR, int); +LPSTR StrPBrkA(LPCSTR, LPCSTR); +LPWSTR StrPBrkW(LPCWSTR, LPCWSTR); +LPSTR StrRChrA(LPCSTR, LPCSTR, WORD); +LPWSTR StrRChrW(LPCWSTR, LPCWSTR, WCHAR); +LPSTR StrRChrIA(LPCSTR, LPCSTR, WORD); +LPWSTR StrRChrIW(LPCWSTR, LPCWSTR, WCHAR); +LPSTR StrRStrIA(LPCSTR, LPCSTR, LPCSTR); +LPWSTR StrRStrIW(LPCWSTR, LPCWSTR, LPCWSTR); +int StrSpnA(LPCSTR, LPCSTR); +int StrSpnW(LPCWSTR, LPCWSTR); +LPSTR StrStrA(LPCSTR, LPCSTR); +LPSTR StrStrIA(LPCSTR, LPCSTR); +LPWSTR StrStrIW(LPCWSTR, LPCWSTR); +LPWSTR StrStrW(LPCWSTR, LPCWSTR); +int StrToIntA(LPCSTR); +int StrToIntW(LPCWSTR); +BOOL StrToIntExA(LPCSTR, DWORD, int*); +BOOL StrToIntExW(LPCWSTR, DWORD, int*); +BOOL StrTrimA(LPSTR, LPCSTR); +BOOL StrTrimW(LPWSTR, LPCWSTR); +LPSTR PathAddBackslashA(LPSTR); +LPWSTR PathAddBackslashW(LPWSTR); +BOOL PathAddExtensionA(LPSTR, LPCSTR); +BOOL PathAddExtensionW(LPWSTR, LPCWSTR); +BOOL PathAppendA(LPSTR, LPCSTR); +BOOL PathAppendW(LPWSTR, LPCWSTR); +LPSTR PathBuildRootA(LPSTR, int); +LPWSTR PathBuildRootW(LPWSTR, int); +BOOL PathCanonicalizeA(LPSTR, LPCSTR); +BOOL PathCanonicalizeW(LPWSTR, LPCWSTR); +LPSTR PathCombineA(LPSTR, LPCSTR, LPCSTR); +LPWSTR PathCombineW(LPWSTR, LPCWSTR, LPCWSTR); +int PathCommonPrefixA(LPCSTR, LPCSTR, LPSTR); +int PathCommonPrefixW(LPCWSTR, LPCWSTR, LPWSTR); +BOOL PathCompactPathA(HDC, LPSTR, UINT); +BOOL PathCompactPathW(HDC, LPWSTR, UINT); +BOOL PathCompactPathExA(LPSTR, LPCSTR, UINT, DWORD); +BOOL PathCompactPathExW(LPWSTR, LPCWSTR, UINT, DWORD); +HRESULT PathCreateFromUrlA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT PathCreateFromUrlW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +BOOL PathFileExistsA(LPCSTR); +BOOL PathFileExistsW(LPCWSTR); +LPSTR PathFindExtensionA(LPCSTR); +LPWSTR PathFindExtensionW(LPCWSTR); +LPSTR PathFindFileNameA(LPCSTR); +LPWSTR PathFindFileNameW(LPCWSTR); +LPSTR PathFindNextComponentA(LPCSTR); +LPWSTR PathFindNextComponentW(LPCWSTR); +BOOL PathFindOnPathA(LPSTR, LPCSTR*); +BOOL PathFindOnPathW(LPWSTR, LPCWSTR*); +LPCSTR PathFindSuffixArrayA(LPCSTR, LPCSTR*, int); +LPCWSTR PathFindSuffixArrayW(LPCWSTR, LPCWSTR*, int); +LPSTR PathGetArgsA(LPCSTR); +LPWSTR PathGetArgsW(LPCWSTR); +UINT PathGetCharTypeA(UCHAR); +UINT PathGetCharTypeW(WCHAR); +int PathGetDriveNumberA(LPCSTR); +int PathGetDriveNumberW(LPCWSTR); +BOOL PathIsContentTypeA(LPCSTR, LPCSTR); +BOOL PathIsContentTypeW(LPCWSTR, LPCWSTR); +BOOL PathIsDirectoryA(LPCSTR); +BOOL PathIsDirectoryEmptyA(LPCSTR); +BOOL PathIsDirectoryEmptyW(LPCWSTR); +BOOL PathIsDirectoryW(LPCWSTR); +BOOL PathIsFileSpecA(LPCSTR); +BOOL PathIsFileSpecW(LPCWSTR); +BOOL PathIsLFNFileSpecA(LPCSTR); +BOOL PathIsLFNFileSpecW(LPCWSTR); +BOOL PathIsNetworkPathA(LPCSTR); +BOOL PathIsNetworkPathW(LPCWSTR); +BOOL PathIsPrefixA(LPCSTR, LPCSTR); +BOOL PathIsPrefixW(LPCWSTR, LPCWSTR); +BOOL PathIsRelativeA(LPCSTR); +BOOL PathIsRelativeW(LPCWSTR); +BOOL PathIsRootA(LPCSTR); +BOOL PathIsRootW(LPCWSTR); +BOOL PathIsSameRootA(LPCSTR, LPCSTR); +BOOL PathIsSameRootW(LPCWSTR, LPCWSTR); +BOOL PathIsSystemFolderA(LPCSTR, DWORD); +BOOL PathIsSystemFolderW(LPCWSTR, DWORD); +BOOL PathIsUNCA(LPCSTR); +BOOL PathIsUNCServerA(LPCSTR); +BOOL PathIsUNCServerShareA(LPCSTR); +BOOL PathIsUNCServerShareW(LPCWSTR); +BOOL PathIsUNCServerW(LPCWSTR); +BOOL PathIsUNCW(LPCWSTR); +BOOL PathIsURLA(LPCSTR); +BOOL PathIsURLW(LPCWSTR); +BOOL PathMakePrettyA(LPSTR); +BOOL PathMakePrettyW(LPWSTR); +BOOL PathMakeSystemFolderA(LPSTR); +BOOL PathMakeSystemFolderW(LPWSTR); +BOOL PathMatchSpecA(LPCSTR, LPCSTR); +BOOL PathMatchSpecW(LPCWSTR, LPCWSTR); +int PathParseIconLocationA(LPSTR); +int PathParseIconLocationW(LPWSTR); +void PathQuoteSpacesA(LPSTR); +void PathQuoteSpacesW(LPWSTR); +BOOL PathRelativePathToA(LPSTR, LPCSTR, DWORD, LPCSTR, DWORD); +BOOL PathRelativePathToW(LPWSTR, LPCWSTR, DWORD, LPCWSTR, DWORD); +void PathRemoveArgsA(LPSTR); +void PathRemoveArgsW(LPWSTR); +LPSTR PathRemoveBackslashA(LPSTR); +LPWSTR PathRemoveBackslashW(LPWSTR); +void PathRemoveBlanksA(LPSTR); +void PathRemoveBlanksW(LPWSTR); +void PathRemoveExtensionA(LPSTR); +void PathRemoveExtensionW(LPWSTR); +BOOL PathRemoveFileSpecA(LPSTR); +BOOL PathRemoveFileSpecW(LPWSTR); +BOOL PathRenameExtensionA(LPSTR, LPCSTR); +BOOL PathRenameExtensionW(LPWSTR, LPCWSTR); +BOOL PathSearchAndQualifyA(LPCSTR, LPSTR, UINT); +BOOL PathSearchAndQualifyW(LPCWSTR, LPWSTR, UINT); +void PathSetDlgItemPathA(HWND, int, LPCSTR); +void PathSetDlgItemPathW(HWND, int, LPCWSTR); +LPSTR PathSkipRootA(LPCSTR); +LPWSTR PathSkipRootW(LPCWSTR); +void PathStripPathA(LPSTR); +void PathStripPathW(LPWSTR); +BOOL PathStripToRootA(LPSTR); +BOOL PathStripToRootW(LPWSTR); +void PathUndecorateA(LPSTR); +void PathUndecorateW(LPWSTR); +BOOL PathUnExpandEnvStringsA(LPCSTR, LPSTR, UINT); +BOOL PathUnExpandEnvStringsW(LPCWSTR, LPWSTR, UINT); +BOOL PathUnmakeSystemFolderA(LPSTR); +BOOL PathUnmakeSystemFolderW(LPWSTR); +void PathUnquoteSpacesA(LPSTR); +void PathUnquoteSpacesW(LPWSTR); +HRESULT SHAutoComplete(HWND, DWORD); +BOOL SHCreateThread(LPTHREAD_START_ROUTINE, void*, DWORD, LPTHREAD_START_ROUTINE); +DWORD SHCopyKeyA(HKEY, LPCSTR, HKEY, DWORD); +DWORD SHCopyKeyW(HKEY, LPCWSTR, HKEY, DWORD); +DWORD SHDeleteEmptyKeyA(HKEY, LPCSTR); +DWORD SHDeleteEmptyKeyW(HKEY, LPCWSTR); +DWORD SHDeleteKeyA(HKEY, LPCSTR); +DWORD SHDeleteKeyW(HKEY, LPCWSTR); +DWORD SHEnumKeyExA(HKEY, DWORD, LPSTR, LPDWORD); +DWORD SHEnumKeyExW(HKEY, DWORD, LPWSTR, LPDWORD); +DWORD SHQueryInfoKeyA(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD); +DWORD SHQueryInfoKeyW(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD); +DWORD SHQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +DWORD SHQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +HRESULT SHGetThreadRef(IUnknown*); +HRESULT SHSetThreadRef(IUnknown); +BOOL SHSkipJunction(IBindCtx, const(CLSID)*); +DWORD SHEnumValueA(HKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +DWORD SHEnumValueW(HKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +DWORD SHGetValueA(HKEY, LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD); +DWORD SHGetValueW(HKEY, LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD); +DWORD SHSetValueA(HKEY, LPCSTR, LPCSTR, DWORD, LPCVOID, DWORD); +DWORD SHSetValueW(HKEY, LPCWSTR, LPCWSTR, DWORD, LPCVOID, DWORD); +DWORD SHDeleteValueA(HKEY, LPCSTR, LPCSTR); +DWORD SHDeleteValueW(HKEY, LPCWSTR, LPCWSTR); +HRESULT AssocCreate(CLSID, const(IID)* , const(LPVOID)*); +HRESULT AssocQueryKeyA(ASSOCF, ASSOCKEY, LPCSTR, LPCSTR, HKEY*); +HRESULT AssocQueryKeyW(ASSOCF, ASSOCKEY, LPCWSTR, LPCWSTR, HKEY*); +HRESULT AssocQueryStringA(ASSOCF, ASSOCSTR, LPCSTR, LPCSTR, LPSTR, DWORD*); +HRESULT AssocQueryStringByKeyA(ASSOCF, ASSOCSTR, HKEY, LPCSTR, LPSTR, DWORD*); +HRESULT AssocQueryStringByKeyW(ASSOCF, ASSOCSTR, HKEY, LPCWSTR, LPWSTR, DWORD*); +HRESULT AssocQueryStringW(ASSOCF, ASSOCSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD*); +HRESULT UrlApplySchemeA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlApplySchemeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +HRESULT UrlCanonicalizeA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlCanonicalizeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +HRESULT UrlCombineA(LPCSTR, LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlCombineW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD, DWORD); +int UrlCompareA(LPCSTR, LPCSTR, BOOL); +int UrlCompareW(LPCWSTR, LPCWSTR, BOOL); +HRESULT UrlCreateFromPathA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlCreateFromPathW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +HRESULT UrlEscapeA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlEscapeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +LPCSTR UrlGetLocationA(LPCSTR); +LPCWSTR UrlGetLocationW(LPCWSTR); +HRESULT UrlGetPartA(LPCSTR, LPSTR, LPDWORD, DWORD, DWORD); +HRESULT UrlGetPartW(LPCWSTR, LPWSTR, LPDWORD, DWORD, DWORD); +HRESULT UrlHashA(LPCSTR, LPBYTE, DWORD); +HRESULT UrlHashW(LPCWSTR, LPBYTE, DWORD); +BOOL UrlIsA(LPCSTR, URLIS); +BOOL UrlIsW(LPCWSTR, URLIS); +BOOL UrlIsNoHistoryA(LPCSTR); +BOOL UrlIsNoHistoryW(LPCWSTR); +BOOL UrlIsOpaqueA(LPCSTR); +BOOL UrlIsOpaqueW(LPCWSTR); +HRESULT UrlUnescapeA(LPSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlUnescapeW(LPWSTR, LPWSTR, LPDWORD, DWORD); +DWORD SHRegCloseUSKey(HUSKEY); +LONG SHRegCreateUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, DWORD); +LONG SHRegCreateUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, DWORD); +LONG SHRegDeleteEmptyUSKeyA(HUSKEY, LPCSTR, SHREGDEL_FLAGS); +LONG SHRegDeleteEmptyUSKeyW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS); +LONG SHRegDeleteUSValueA(HUSKEY, LPCSTR, SHREGDEL_FLAGS); +LONG SHRegDeleteUSValueW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS); +HKEY SHRegDuplicateHKey(HKEY); +DWORD SHRegEnumUSKeyA(HUSKEY, DWORD, LPSTR, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegEnumUSKeyW(HUSKEY, DWORD, LPWSTR, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegEnumUSValueA(HUSKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegEnumUSValueW(HUSKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS); +BOOL SHRegGetBoolUSValueA(LPCSTR, LPCSTR, BOOL, BOOL); +BOOL SHRegGetBoolUSValueW(LPCWSTR, LPCWSTR, BOOL, BOOL); +DWORD SHRegGetPathA(HKEY, LPCSTR, LPCSTR, LPSTR, DWORD); +DWORD SHRegGetPathW(HKEY, LPCWSTR, LPCWSTR, LPWSTR, DWORD); +LONG SHRegGetUSValueA(LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +LONG SHRegGetUSValueW(LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +LONG SHRegOpenUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, BOOL); +LONG SHRegOpenUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, BOOL); +DWORD SHRegQueryInfoUSKeyA(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegQueryInfoUSKeyW(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS); +LONG SHRegQueryUSValueA(HUSKEY, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +LONG SHRegQueryUSValueW(HUSKEY, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +DWORD SHRegSetPathA(HKEY, LPCSTR, LPCSTR, LPCSTR, DWORD); +DWORD SHRegSetPathW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR, DWORD); +LONG SHRegSetUSValueA(LPCSTR, LPCSTR, DWORD, LPVOID, DWORD, DWORD); +LONG SHRegSetUSValueW(LPCWSTR, LPCWSTR, DWORD, LPVOID, DWORD, DWORD); +LONG SHRegWriteUSValueA(HUSKEY, LPCSTR, DWORD, LPVOID, DWORD, DWORD); +LONG SHRegWriteUSValueW(HUSKEY, LPCWSTR, DWORD, LPVOID, DWORD, DWORD); +HRESULT HashData(LPBYTE, DWORD, LPBYTE, DWORD); +HPALETTE SHCreateShellPalette(HDC); +COLORREF ColorHLSToRGB(WORD, WORD, WORD); +COLORREF ColorAdjustLuma(COLORREF, int, BOOL); +void ColorRGBToHLS(COLORREF, WORD*, WORD*, WORD*); +/** Should not be necessary for D? +extern (C): +int wnsprintfA(LPSTR, int, LPCSTR, ...); +int wnsprintfW(LPWSTR, int, LPCWSTR, ...); +extern (Windows): +int wvnsprintfA(LPSTR, int, LPCSTR, va_list); +int wvnsprintfW(LPWSTR, int, LPCWSTR, va_list); +*/ + +HINSTANCE MLLoadLibraryA(LPCSTR, HANDLE, DWORD, LPCSTR, BOOL); +HINSTANCE MLLoadLibraryW(LPCWSTR, HANDLE, DWORD, LPCWSTR, BOOL); + +HRESULT DllInstall(BOOL, LPCWSTR); + +HRESULT StrRetToBufA(LPSTRRET, LPCITEMIDLIST, LPSTR, UINT); +HRESULT StrRetToBufW(LPSTRRET, LPCITEMIDLIST, LPWSTR, UINT); +HRESULT StrRetToStrA(LPSTRRET, LPCITEMIDLIST, LPSTR*); +HRESULT StrRetToStrW(LPSTRRET, LPCITEMIDLIST, LPWSTR*); +HRESULT SHCreateStreamOnFileA(LPCSTR, DWORD, IStream*); +HRESULT SHCreateStreamOnFileW(LPCWSTR, DWORD, IStream*); +IStream SHOpenRegStream2A(HKEY, LPCSTR, LPCSTR, DWORD); +IStream SHOpenRegStream2W(HKEY, LPCWSTR, LPCWSTR, DWORD); +IStream SHOpenRegStreamA(HKEY, LPCSTR, LPCSTR, DWORD); +IStream SHOpenRegStreamW(HKEY, LPCWSTR, LPCWSTR, DWORD); + +version(Unicode) { +alias ChrCmpIW ChrCmpI; +alias IntlStrEqNW IntlStrEqN; +alias IntlStrEqNIW IntlStrEqNI; +alias IntlStrEqWorkerW IntlStrEqWorker; +alias SHStrDupW SHStrDup; +alias StrCatW StrCat; +alias StrCatBuffW StrCatBuff; +alias StrChrW StrChr; +alias StrChrIW StrChrI; +alias StrCmpW StrCmp; +alias StrCmpIW StrCmpI; +alias StrCmpNIW StrCmpNI; +alias StrCmpNW StrCmpN; +alias StrCpyNW StrCpyN; +alias StrCpyW StrCpy; +alias StrCSpnIW StrCSpnI; +alias StrCSpnW StrCSpn; +alias StrDupW StrDup; +alias StrFormatByteSizeW StrFormatByteSize; +alias StrFormatKBSizeW StrFormatKBSize; +alias StrFromTimeIntervalW StrFromTimeInterval; +alias StrIsIntlEqualW StrIsIntlEqual; +alias StrNCatW StrNCat; +alias StrPBrkW StrPBrk; +alias StrRChrW StrRChr; +alias StrRChrIW StrRChrI; +alias StrRetToBufW StrRetToBuf; +alias StrRetToStrW StrRetToStr; +alias StrRStrIW StrRStrI; +alias StrSpnW StrSpn; +alias StrStrIW StrStrI; +alias StrStrW StrStr; +alias StrToIntW StrToInt; +alias StrToIntExW StrToIntEx; +alias StrTrimW StrTrim; +alias PathAddBackslashW PathAddBackslash; +alias PathAddExtensionW PathAddExtension; +alias PathAppendW PathAppend; +alias PathBuildRootW PathBuildRoot; +alias PathCanonicalizeW PathCanonicalize; +alias PathCombineW PathCombine; +alias PathCommonPrefixW PathCommonPrefix; +alias PathCompactPathW PathCompactPath; +alias PathCompactPathExW PathCompactPathEx; +alias PathCreateFromUrlW PathCreateFromUrl; +alias PathFileExistsW PathFileExists; +alias PathFindExtensionW PathFindExtension; +alias PathFindFileNameW PathFindFileName; +alias PathFindNextComponentW PathFindNextComponent; +alias PathFindOnPathW PathFindOnPath; +alias PathFindSuffixArrayW PathFindSuffixArray; +alias PathGetArgsW PathGetArgs; +alias PathGetCharTypeW PathGetCharType; +alias PathGetDriveNumberW PathGetDriveNumber; +alias PathIsContentTypeW PathIsContentType; +alias PathIsDirectoryEmptyW PathIsDirectoryEmpty; +alias PathIsDirectoryW PathIsDirectory; +alias PathIsFileSpecW PathIsFileSpec; +alias PathIsLFNFileSpecW PathIsLFNFileSpec; +alias PathIsNetworkPathW PathIsNetworkPath; +alias PathIsPrefixW PathIsPrefix; +alias PathIsRelativeW PathIsRelative; +alias PathIsRootW PathIsRoot; +alias PathIsSameRootW PathIsSameRoot; +alias PathIsSystemFolderW PathIsSystemFolder; +alias PathIsUNCServerShareW PathIsUNCServerShare; +alias PathIsUNCServerW PathIsUNCServer; +alias PathIsUNCW PathIsUNC; +alias PathIsURLW PathIsURL; +alias PathMakePrettyW PathMakePretty; +alias PathMakeSystemFolderW PathMakeSystemFolder; +alias PathMatchSpecW PathMatchSpec; +alias PathParseIconLocationW PathParseIconLocation; +alias PathQuoteSpacesW PathQuoteSpaces; +alias PathRelativePathToW PathRelativePathTo; +alias PathRemoveArgsW PathRemoveArgs; +alias PathRemoveBackslashW PathRemoveBackslash; +alias PathRemoveBlanksW PathRemoveBlanks; +alias PathRemoveExtensionW PathRemoveExtension; +alias PathRemoveFileSpecW PathRemoveFileSpec; +alias PathRenameExtensionW PathRenameExtension; +alias PathSearchAndQualifyW PathSearchAndQualify; +alias PathSetDlgItemPathW PathSetDlgItemPath; +alias PathSkipRootW PathSkipRoot; +alias PathStripPathW PathStripPath; +alias PathStripToRootW PathStripToRoot; +alias PathUndecorateW PathUndecorate; +alias PathUnExpandEnvStringsW PathUnExpandEnvStrings; +alias PathUnmakeSystemFolderW PathUnmakeSystemFolder; +alias PathUnquoteSpacesW PathUnquoteSpaces; +alias SHCreateStreamOnFileW SHCreateStreamOnFile; +alias SHOpenRegStreamW SHOpenRegStream; +alias SHOpenRegStream2W SHOpenRegStream2; +alias SHCopyKeyW SHCopyKey; +alias SHDeleteEmptyKeyW SHDeleteEmptyKey; +alias SHDeleteKeyW SHDeleteKey; +alias SHEnumKeyExW SHEnumKeyEx; +alias SHQueryInfoKeyW SHQueryInfoKey; +alias SHQueryValueExW SHQueryValueEx; +alias SHEnumValueW SHEnumValue; +alias SHGetValueW SHGetValue; +alias SHSetValueW SHSetValue; +alias SHDeleteValueW SHDeleteValue; +alias AssocQueryKeyW AssocQueryKey; +alias AssocQueryStringByKeyW AssocQueryStringByKey; +alias AssocQueryStringW AssocQueryString; +alias UrlApplySchemeW UrlApplyScheme; +alias UrlCanonicalizeW UrlCanonicalize; +alias UrlCombineW UrlCombine; +alias UrlCompareW UrlCompare; +alias UrlCreateFromPathW UrlCreateFromPath; +alias UrlEscapeW UrlEscape; +alias UrlGetLocationW UrlGetLocation; +alias UrlGetPartW UrlGetPart; +alias UrlHashW UrlHash; +alias UrlIsW UrlIs; +alias UrlIsFileUrlW UrlIsFileUrl; +alias UrlIsNoHistoryW UrlIsNoHistory; +alias UrlIsOpaqueW UrlIsOpaque; +alias UrlUnescapeW UrlUnescape; +alias UrlUnescapeInPlaceW UrlUnescapeInPlace; +alias SHRegCreateUSKeyW SHRegCreateUSKey; +alias SHRegDeleteEmptyUSKeyW SHRegDeleteEmptyUSKey; +alias SHRegDeleteUSValueW SHRegDeleteUSValue; +alias SHRegEnumUSKeyW SHRegEnumUSKey; +alias SHRegEnumUSValueW SHRegEnumUSValue; +alias SHRegGetBoolUSValueW SHRegGetBoolUSValue; +alias SHRegGetPathW SHRegGetPath; +alias SHRegGetUSValueW SHRegGetUSValue; +alias SHRegOpenUSKeyW SHRegOpenUSKey; +alias SHRegQueryInfoUSKeyW SHRegQueryInfoUSKey; +alias SHRegQueryUSValueW SHRegQueryUSValue; +alias SHRegSetPathW SHRegSetPath; +alias SHRegSetUSValueW SHRegSetUSValue; +alias SHRegWriteUSValueW SHRegWriteUSValue; +//alias wnsprintfW wnsprintf; +//alias wvnsprintfW wvnsprintf; +} else { +alias ChrCmpIA ChrCmpI; +alias IntlStrEqNA IntlStrEqN; +alias IntlStrEqNIA IntlStrEqNI; +alias IntlStrEqWorkerA IntlStrEqWorker; +alias SHStrDupA SHStrDup; +alias StrCatBuffA StrCatBuff; +alias StrChrA StrChr; +alias StrChrIA StrChrI; +alias StrCmpNIA StrCmpNI; +alias StrCmpNA StrCmpN; +alias StrCSpnIA StrCSpnI; +alias StrCSpnA StrCSpn; +alias StrDupA StrDup; +alias StrFormatByteSizeA StrFormatByteSize; +alias StrFormatKBSizeA StrFormatKBSize; +alias StrFromTimeIntervalA StrFromTimeInterval; +alias StrIsIntlEqualA StrIsIntlEqual; +alias StrNCatA StrNCat; +alias StrPBrkA StrPBrk; +alias StrRChrA StrRChr; +alias StrRChrIA StrRChrI; +alias StrRetToBufA StrRetToBuf; +alias StrRetToStrA StrRetToStr; +alias StrRStrIA StrRStrI; +alias StrSpnA StrSpn; +alias StrStrIA StrStrI; +alias StrStrA StrStr; +alias StrToIntA StrToInt; +alias StrToIntExA StrToIntEx; +alias StrTrimA StrTrim; +alias PathAddBackslashA PathAddBackslash; +alias PathAddExtensionA PathAddExtension; +alias PathAppendA PathAppend; +alias PathBuildRootA PathBuildRoot; +alias PathCanonicalizeA PathCanonicalize; +alias PathCombineA PathCombine; +alias PathCommonPrefixA PathCommonPrefix; +alias PathCompactPathA PathCompactPath; +alias PathCompactPathExA PathCompactPathEx; +alias PathCreateFromUrlA PathCreateFromUrl; +alias PathFileExistsA PathFileExists; +alias PathFindExtensionA PathFindExtension; +alias PathFindFileNameA PathFindFileName; +alias PathFindNextComponentA PathFindNextComponent; +alias PathFindOnPathA PathFindOnPath; +alias PathFindSuffixArrayA PathFindSuffixArray; +alias PathGetArgsA PathGetArgs; +alias PathGetCharTypeA PathGetCharType; +alias PathGetDriveNumberA PathGetDriveNumber; +alias PathIsContentTypeA PathIsContentType; +alias PathIsDirectoryEmptyA PathIsDirectoryEmpty; +alias PathIsDirectoryA PathIsDirectory; +alias PathIsFileSpecA PathIsFileSpec; +alias PathIsLFNFileSpecA PathIsLFNFileSpec; +alias PathIsNetworkPathA PathIsNetworkPath; +alias PathIsPrefixA PathIsPrefix; +alias PathIsRelativeA PathIsRelative; +alias PathIsRootA PathIsRoot; +alias PathIsSameRootA PathIsSameRoot; +alias PathIsSystemFolderA PathIsSystemFolder; +alias PathIsUNCServerShareA PathIsUNCServerShare; +alias PathIsUNCServerA PathIsUNCServer; +alias PathIsUNCA PathIsUNC; +alias PathIsURLA PathIsURL; +alias PathMakePrettyA PathMakePretty; +alias PathMakeSystemFolderA PathMakeSystemFolder; +alias PathMatchSpecA PathMatchSpec; +alias PathParseIconLocationA PathParseIconLocation; +alias PathQuoteSpacesA PathQuoteSpaces; +alias PathRelativePathToA PathRelativePathTo; +alias PathRemoveArgsA PathRemoveArgs; +alias PathRemoveBackslashA PathRemoveBackslash; +alias PathRemoveBlanksA PathRemoveBlanks; +alias PathRemoveExtensionA PathRemoveExtension; +alias PathRemoveFileSpecA PathRemoveFileSpec; +alias PathRenameExtensionA PathRenameExtension; +alias PathSearchAndQualifyA PathSearchAndQualify; +alias PathSetDlgItemPathA PathSetDlgItemPath; +alias PathSkipRootA PathSkipRoot; +alias PathStripPathA PathStripPath; +alias PathStripToRootA PathStripToRoot; +alias PathUndecorateA PathUndecorate; +alias PathUnExpandEnvStringsA PathUnExpandEnvStrings; +alias PathUnmakeSystemFolderA PathUnmakeSystemFolder; +alias PathUnquoteSpacesA PathUnquoteSpaces; +alias SHCreateStreamOnFileA SHCreateStreamOnFile; +alias SHOpenRegStreamA SHOpenRegStream; +alias SHOpenRegStream2A SHOpenRegStream2; +alias SHCopyKeyA SHCopyKey; +alias SHDeleteEmptyKeyA SHDeleteEmptyKey; +alias SHDeleteKeyA SHDeleteKey; +alias SHEnumKeyExA SHEnumKeyEx; +alias SHQueryInfoKeyA SHQueryInfoKey; +alias SHQueryValueExA SHQueryValueEx; +alias SHEnumValueA SHEnumValue; +alias SHGetValueA SHGetValue; +alias SHSetValueA SHSetValue; +alias SHDeleteValueA SHDeleteValue; +alias AssocQueryKeyA AssocQueryKey; +alias AssocQueryStringByKeyA AssocQueryStringByKey; +alias AssocQueryStringA AssocQueryString; +alias UrlApplySchemeA UrlApplyScheme; +alias UrlCanonicalizeA UrlCanonicalize; +alias UrlCombineA UrlCombine; +alias UrlCompareA UrlCompare; +alias UrlCreateFromPathA UrlCreateFromPath; +alias UrlEscapeA UrlEscape; +alias UrlGetLocationA UrlGetLocation; +alias UrlGetPartA UrlGetPart; +alias UrlHashA UrlHash; +alias UrlIsA UrlIs; +alias UrlIsNoHistoryA UrlIsNoHistory; +alias UrlIsOpaqueA UrlIsOpaque; +alias UrlUnescapeA UrlUnescape; +alias UrlUnescapeInPlaceA UrlUnescapeInPlace; +alias SHRegCreateUSKeyA SHRegCreateUSKey; +alias SHRegDeleteEmptyUSKeyA SHRegDeleteEmptyUSKey; +alias SHRegDeleteUSValueA SHRegDeleteUSValue; +alias SHRegEnumUSKeyA SHRegEnumUSKey; +alias SHRegEnumUSValueA SHRegEnumUSValue; +alias SHRegGetBoolUSValueA SHRegGetBoolUSValue; +alias SHRegGetPathA SHRegGetPath; +alias SHRegGetUSValueA SHRegGetUSValue; +alias SHRegOpenUSKeyA SHRegOpenUSKey; +alias SHRegQueryInfoUSKeyA SHRegQueryInfoUSKey; +alias SHRegQueryUSValueA SHRegQueryUSValue; +alias SHRegSetPathA SHRegSetPath; +alias SHRegSetUSValueA SHRegSetUSValue; +alias SHRegWriteUSValueA SHRegWriteUSValue; +//alias wnsprintfA wnsprintf; +//alias wvnsprintfA wvnsprintf; +} + +alias StrToInt StrToLong; diff --git a/src/core/sys/windows/snmp.d b/src/core/sys/windows/snmp.d new file mode 100644 index 0000000000..9fb15bd1aa --- /dev/null +++ b/src/core/sys/windows/snmp.d @@ -0,0 +1,269 @@ +/***********************************************************************\ +* snmp.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.snmp; + +private import win32.windows; + +// These are not documented on MSDN +enum { + DEFAULT_SNMP_PORT_UDP = 161, + DEFAULT_SNMP_PORT_IPX = 36879, + DEFAULT_SNMPTRAP_PORT_UDP = 162, + DEFAULT_SNMPTRAP_PORT_IPX = 36880 +} + +enum : BYTE { + ASN_UNIVERSAL = 0x00, + ASN_PRIMITIVE = 0x00, + ASN_CONSTRUCTOR = 0x20, + ASN_APPLICATION = 0x40, + ASN_CONTEXT = 0x80, + ASN_PRIVATE = 0xC0, + + SNMP_PDU_GET = ASN_CONTEXT | ASN_CONSTRUCTOR, + SNMP_PDU_GETNEXT, + SNMP_PDU_RESPONSE, + SNMP_PDU_SET, + SNMP_PDU_GETBULK, // = ASN_CONTEXT | ASN_CONSTRUCTOR | 4 + SNMP_PDU_V1TRAP = ASN_CONTEXT | ASN_CONSTRUCTOR | 4, + SNMP_PDU_INFORM = ASN_CONTEXT | ASN_CONSTRUCTOR | 6, + SNMP_PDU_TRAP, + SNMP_PDU_REPORT, + ASN_INTEGER = ASN_UNIVERSAL | ASN_PRIMITIVE | 2, + ASN_BITS, + ASN_OCTETSTRING, + ASN_NULL, + ASN_OBJECTIDENTIFIER, // = ASN_UNIVERSAL | ASN_PRIMITIVE | 6 + ASN_INTEGER32 = ASN_INTEGER, + ASN_SEQUENCE = ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10, + ASN_SEQUENCEOF = ASN_SEQUENCE, + ASN_IPADDRESS = ASN_APPLICATION | ASN_PRIMITIVE, + ASN_COUNTER32, + ASN_GAUGE32, + ASN_TIMETICKS, + ASN_OPAQUE, // = ASN_APPLICATION | ASN_PRIMITIVE | 4 + ASN_COUNTER64 = ASN_APPLICATION | ASN_PRIMITIVE | 6, + ASN_UNSIGNED32, // = ASN_APPLICATION | ASN_PRIMITIVE | 7 + SNMP_EXCEPTION_NOSUCHOBJECT = ASN_CONTEXT | ASN_PRIMITIVE, + SNMP_EXCEPTION_NOSUCHINSTANCE, + SNMP_EXCEPTION_ENDOFMIBVIEW, + SNMP_EXTENSION_GET = SNMP_PDU_GET, + SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT, + SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK, + SNMP_EXTENSION_SET_TEST = ASN_PRIVATE | ASN_CONSTRUCTOR, + SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET, + SNMP_EXTENSION_SET_UNDO = ASN_PRIVATE | ASN_CONSTRUCTOR | 1, + SNMP_EXTENSION_SET_CLEANUP +} + + +enum : AsnInteger { + SNMP_ERRORSTATUS_NOERROR, + SNMP_ERRORSTATUS_TOOBIG, + SNMP_ERRORSTATUS_NOSUCHNAME, + SNMP_ERRORSTATUS_BADVALUE, + SNMP_ERRORSTATUS_READONLY, + SNMP_ERRORSTATUS_GENERR, + SNMP_ERRORSTATUS_NOACCESS, + SNMP_ERRORSTATUS_WRONGTYPE, + SNMP_ERRORSTATUS_WRONGLENGTH, + SNMP_ERRORSTATUS_WRONGENCODING, + SNMP_ERRORSTATUS_WRONGVALUE, + SNMP_ERRORSTATUS_NOCREATION, + SNMP_ERRORSTATUS_INCONSISTENTVALUE, + SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE, + SNMP_ERRORSTATUS_COMMITFAILED, + SNMP_ERRORSTATUS_UNDOFAILED, + SNMP_ERRORSTATUS_AUTHORIZATIONERROR, + SNMP_ERRORSTATUS_NOTWRITABLE, + SNMP_ERRORSTATUS_INCONSISTENTNAME +} + +enum : AsnInteger { + SNMP_GENERICTRAP_COLDSTART, + SNMP_GENERICTRAP_WARMSTART, + SNMP_GENERICTRAP_LINKDOWN, + SNMP_GENERICTRAP_LINKUP, + SNMP_GENERICTRAP_AUTHFAILURE, + SNMP_GENERICTRAP_EGPNEIGHLOSS, + SNMP_GENERICTRAP_ENTERSPECIFIC +} + +// These are not documented on MSDN +enum { + SNMP_ACCESS_NONE, + SNMP_ACCESS_NOTIFY, + SNMP_ACCESS_READ_ONLY, + SNMP_ACCESS_READ_WRITE, + SNMP_ACCESS_READ_CREATE +} + +enum : BOOL { + SNMPAPI_ERROR = false, + SNMPAPI_NOERROR = true +} + +enum : INT { + SNMP_LOG_SILENT, + SNMP_LOG_FATAL, + SNMP_LOG_ERROR, + SNMP_LOG_WARNING, + SNMP_LOG_TRACE, + SNMP_LOG_VERBOSE +} + +const INT + SNMP_OUTPUT_TO_CONSOLE = 1, + SNMP_OUTPUT_TO_LOGFILE = 2, + SNMP_OUTPUT_TO_EVENTLOG = 4, + SNMP_OUTPUT_TO_DEBUGGER = 8; + +const size_t SNMP_MAX_OID_LEN = 128; + +enum : DWORD { + SNMP_MEM_ALLOC_ERROR = 1, + SNMP_BERAPI_INVALID_LENGTH = 10, + SNMP_BERAPI_INVALID_TAG, + SNMP_BERAPI_OVERFLOW, + SNMP_BERAPI_SHORT_BUFFER, + SNMP_BERAPI_INVALID_OBJELEM, + SNMP_PDUAPI_UNRECOGNIZED_PDU = 20, + SNMP_PDUAPI_INVALID_ES, + SNMP_PDUAPI_INVALID_GT, + SNMP_AUTHAPI_INVALID_VERSION = 30, + SNMP_AUTHAPI_INVALID_MSG_TYPE, + SNMP_AUTHAPI_TRIV_AUTH_FAILED, +} + +alias INT SNMPAPI; +alias LONG AsnInteger32; +alias ULONG AsnUnsigned32, AsnCounter32, AsnGauge32, AsnTimeticks; +alias ULARGE_INTEGER AsnCounter64; + +align (4): + +struct AsnOctetString { + BYTE* stream; + UINT length; + BOOL dynamic; +} +alias AsnOctetString AsnBits, AsnSequence, AsnImplicitSequence, + AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; + +struct AsnObjectIdentifier { + UINT idLength; + UINT* ids; +} +alias AsnObjectIdentifier AsnObjectName; + +struct AsnAny { + BYTE asnType; + union _asnValue { + AsnInteger32 number; + AsnUnsigned32 unsigned32; + AsnCounter64 counter64; + AsnOctetString string; + AsnBits bits; + AsnObjectIdentifier object; + AsnSequence sequence; + AsnIPAddress address; + AsnCounter32 counter; + AsnGauge32 gauge; + AsnTimeticks ticks; + AsnOpaque arbitrary; + } + _asnValue asnValue; +} +alias AsnAny AsnObjectSyntax; + +struct SnmpVarBind { + AsnObjectName name; + AsnObjectSyntax value; +} + +struct SnmpVarBindList { + SnmpVarBind* list; + UINT len; +} + +extern (Windows) { + VOID SnmpExtensionClose(); + BOOL SnmpExtensionInit(DWORD, HANDLE*, AsnObjectIdentifier*); + BOOL SnmpExtensionInitEx(AsnObjectIdentifier*); + BOOL SnmpExtensionMonitor(LPVOID); + BOOL SnmpExtensionQuery(BYTE, SnmpVarBindList*, AsnInteger32*, + AsnInteger32*); + BOOL SnmpExtensionQueryEx(DWORD, DWORD, SnmpVarBindList*, AsnOctetString*, + AsnInteger32*, AsnInteger32*); + BOOL SnmpExtensionTrap(AsnObjectIdentifier*, AsnInteger32*, AsnInteger32*, + AsnTimeticks*, SnmpVarBindList*); + DWORD SnmpSvcGetUptime(); + VOID SnmpSvcSetLogLevel(INT); + VOID SnmpSvcSetLogType(INT); + SNMPAPI SnmpUtilAsnAnyCpy(AsnAny*, AsnAny*); + VOID SnmpUtilAsnAnyFree(AsnAny*); + VOID SnmpUtilDbgPrint(INT, LPSTR, ...); + LPSTR SnmpUtilIdsToA(UINT*, UINT); + LPVOID SnmpUtilMemAlloc(UINT); + VOID SnmpUtilMemFree(LPVOID); + LPVOID SnmpUtilMemReAlloc(LPVOID, UINT); + SNMPAPI SnmpUtilOctetsCmp(AsnOctetString*, AsnOctetString*); + SNMPAPI SnmpUtilOctetsCpy(AsnOctetString*, AsnOctetString*); + VOID SnmpUtilOctetsFree(AsnOctetString*); + SNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*, AsnOctetString*, UINT); + SNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*, AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*, AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*, AsnObjectIdentifier*); + VOID SnmpUtilOidFree(AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*, AsnObjectIdentifier*, UINT); + LPSTR SnmpUtilOidToA(AsnObjectIdentifier*); + VOID SnmpUtilPrintAsnAny(AsnAny*); + VOID SnmpUtilPrintOid(AsnObjectIdentifier*); + SNMPAPI SnmpUtilVarBindCpy(SnmpVarBind*, SnmpVarBind*); + SNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*, SnmpVarBindList*); + VOID SnmpUtilVarBindFree(SnmpVarBind*); + VOID SnmpUtilVarBindListFree(SnmpVarBindList*); +} + +alias SnmpUtilMemAlloc SNMP_malloc; +alias SnmpUtilMemFree SNMP_free; +alias SnmpUtilMemReAlloc SNMP_realloc; +alias SnmpUtilMemAlloc SNMP_DBG_malloc; +alias SnmpUtilMemFree SNMP_DBG_free; +alias SnmpUtilMemReAlloc SNMP_DBG_realloc; +alias SnmpUtilOidAppend SNMP_oidappend; +alias SnmpUtilOidCmp SNMP_oidcmp; +alias SnmpUtilOidCpy SNMP_oidcpy; +alias SnmpUtilOidFree SNMP_oidfree; +alias SnmpUtilOidNCmp SNMP_oidncmp; +alias SnmpUtilPrintAsnAny SNMP_printany; +alias SnmpUtilVarBindCpy SNMP_CopyVarBind; +alias SnmpUtilVarBindListCpy SNMP_CopyVarBindList; +alias SnmpUtilVarBindFree SNMP_FreeVarBind; +alias SnmpUtilVarBindListFree SNMP_FreeVarBindList; +alias ASN_IPADDRESS ASN_RFC1155_IPADDRESS; +alias ASN_COUNTER32 ASN_RFC1155_COUNTER; +alias ASN_GAUGE32 ASN_RFC1155_GAUGE; +alias ASN_TIMETICKS ASN_RFC1155_TIMETICKS; +alias ASN_OPAQUE ASN_RFC1155_OPAQUE; +alias ASN_OCTETSTRING ASN_RFC1213_DISPSTRING; +alias SNMP_PDU_GET ASN_RFC1157_GETREQUEST; +alias SNMP_PDU_GETNEXT ASN_RFC1157_GETNEXTREQUEST; +alias SNMP_PDU_RESPONSE ASN_RFC1157_GETRESPONSE; +alias SNMP_PDU_SET ASN_RFC1157_SETREQUEST; +alias SNMP_PDU_V1TRAP ASN_RFC1157_TRAP; +alias ASN_CONTEXT ASN_CONTEXTSPECIFIC; +alias ASN_PRIMITIVE ASN_PRIMATIVE; +alias SnmpVarBindList RFC1157VarBindList; +alias SnmpVarBind RFC1157VarBind; +alias AsnInteger32 AsnInteger; +alias AsnCounter32 AsnCounter; +alias AsnGauge32 AsnGauge; diff --git a/src/core/sys/windows/sql.d b/src/core/sys/windows/sql.d new file mode 100644 index 0000000000..acc3499ced --- /dev/null +++ b/src/core/sys/windows/sql.d @@ -0,0 +1,434 @@ +/***********************************************************************\ +* sql.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.sql; + +public import win32.sqltypes; +private import win32.windef; + +const ODBCVER = 0x0351; + +const SQL_ACCESSIBLE_PROCEDURES=20; +const SQL_ACCESSIBLE_TABLES=19; +const SQL_ALL_TYPES=0; +const SQL_ALTER_TABLE=86; +const SQL_API_SQLALLOCCONNECT=1; +const SQL_API_SQLALLOCENV=2; +const SQL_API_SQLALLOCSTMT=3; +const SQL_API_SQLBINDCOL=4; +const SQL_API_SQLCANCEL=5; +const SQL_API_SQLCOLUMNS=40; +const SQL_API_SQLCONNECT=7; +const SQL_API_SQLDATASOURCES=57; +const SQL_API_SQLDESCRIBECOL=8; +const SQL_API_SQLDISCONNECT=9; +const SQL_API_SQLERROR=10; +const SQL_API_SQLEXECDIRECT=11; +const SQL_API_SQLEXECUTE=12; +const SQL_API_SQLFETCH=13; +const SQL_API_SQLFREECONNECT=14; +const SQL_API_SQLFREEENV=15; +const SQL_API_SQLFREESTMT=16; +const SQL_API_SQLGETCONNECTOPTION=42; +const SQL_API_SQLGETCURSORNAME=17; +const SQL_API_SQLGETDATA=43; +const SQL_API_SQLGETFUNCTIONS=44; +const SQL_API_SQLGETINFO=45; +const SQL_API_SQLGETSTMTOPTION=46; +const SQL_API_SQLGETTYPEINFO=47; +const SQL_API_SQLNUMRESULTCOLS=18; +const SQL_API_SQLPARAMDATA=48; +const SQL_API_SQLPREPARE=19; +const SQL_API_SQLPUTDATA=49; +const SQL_API_SQLROWCOUNT=20; +const SQL_API_SQLSETCONNECTOPTION=50; +const SQL_API_SQLSETCURSORNAME=21; +const SQL_API_SQLSETPARAM=22; +const SQL_API_SQLSETSTMTOPTION=51; +const SQL_API_SQLSPECIALCOLUMNS=52; +const SQL_API_SQLSTATISTICS=53; +const SQL_API_SQLTABLES=54; +const SQL_API_SQLTRANSACT=23; + +const SQL_CB_DELETE=0; +const SQL_CB_CLOSE=1; +const SQL_CB_PRESERVE=2; + +const SQL_CHAR=1; +const SQL_CLOSE=0; +const SQL_COMMIT=0; +const SQL_CURSOR_COMMIT_BEHAVIOR=23; +const SQL_DATA_AT_EXEC=-2; +const SQL_DATA_SOURCE_NAME=2; +const SQL_DATA_SOURCE_READ_ONLY=25; +const SQL_DBMS_NAME=17; +const SQL_DBMS_VER=18; +const SQL_DECIMAL=3; +const SQL_DEFAULT_TXN_ISOLATION=26; +const SQL_DOUBLE=8; +const SQL_DROP=1; +const SQL_ERROR=-1; + +const SQL_FD_FETCH_NEXT=1; +const SQL_FD_FETCH_FIRST=2; +const SQL_FD_FETCH_LAST=4; +const SQL_FD_FETCH_PRIOR=8; +const SQL_FD_FETCH_ABSOLUTE=16; +const SQL_FD_FETCH_RELATIVE=32; + +const SQL_FETCH_ABSOLUTE=5; +const SQL_FETCH_DIRECTION=8; +const SQL_FETCH_FIRST=2; +const SQL_FETCH_LAST=3; +const SQL_FETCH_NEXT=1; +const SQL_FETCH_PRIOR=4; +const SQL_FETCH_RELATIVE=6; +const SQL_FLOAT=6; +const SQL_GD_ANY_COLUMN=1; +const SQL_GD_ANY_ORDER=2; +const SQL_GETDATA_EXTENSIONS=81; +const SQL_IC_LOWER=2; +const SQL_IC_MIXED=4; +const SQL_IC_SENSITIVE=3; +const SQL_IC_UPPER=1; +const SQL_IDENTIFIER_CASE=28; +const SQL_IDENTIFIER_QUOTE_CHAR=29; + +const SQL_INDEX_ALL=1; +const SQL_INDEX_CLUSTERED=1; +const SQL_INDEX_HASHED=2; +const SQL_INDEX_OTHER=3; +const SQL_INDEX_UNIQUE=0; + +const SQL_INTEGER=4; +const SQL_INTEGRITY=73; +const SQL_INVALID_HANDLE=-2; + +const SQL_MAX_CATALOG_NAME_LEN=34; +const SQL_MAX_COLUMN_NAME_LEN=30; +const SQL_MAX_COLUMNS_IN_GROUP_BY=97; +const SQL_MAX_COLUMNS_IN_INDEX=98; +const SQL_MAX_COLUMNS_IN_ORDER_BY=99; +const SQL_MAX_COLUMNS_IN_SELECT=100; +const SQL_MAX_COLUMNS_IN_TABLE=101; +const SQL_MAX_CURSOR_NAME_LEN=31; +const SQL_MAX_INDEX_SIZE=102; +const SQL_MAX_MESSAGE_LENGTH=512; +const SQL_MAX_ROW_SIZE=104; +const SQL_MAX_SCHEMA_NAME_LEN=32; +const SQL_MAX_STATEMENT_LEN=105; +const SQL_MAX_TABLE_NAME_LEN=35; +const SQL_MAX_TABLES_IN_SELECT=106; +const SQL_MAX_USER_NAME_LEN=107; + +const SQL_MAXIMUM_CATALOG_NAME_LENGTH=SQL_MAX_CATALOG_NAME_LEN; +const SQL_MAXIMUM_COLUMN_NAME_LENGTH=SQL_MAX_COLUMN_NAME_LEN; +const SQL_MAXIMUM_COLUMNS_IN_GROUP_BY=SQL_MAX_COLUMNS_IN_GROUP_BY; +const SQL_MAXIMUM_COLUMNS_IN_INDEX=SQL_MAX_COLUMNS_IN_INDEX; +const SQL_MAXIMUM_COLUMNS_IN_ORDER_BY=SQL_MAX_COLUMNS_IN_ORDER_BY; +const SQL_MAXIMUM_COLUMNS_IN_SELECT=SQL_MAX_COLUMNS_IN_SELECT; +const SQL_MAXIMUM_CURSOR_NAME_LENGTH=SQL_MAX_CURSOR_NAME_LEN; +const SQL_MAXIMUM_INDEX_SIZE=SQL_MAX_INDEX_SIZE; +const SQL_MAXIMUM_ROW_SIZE=SQL_MAX_ROW_SIZE; +const SQL_MAXIMUM_SCHEMA_NAME_LENGTH=SQL_MAX_SCHEMA_NAME_LEN; +const SQL_MAXIMUM_STATEMENT_LENGTH=SQL_MAX_STATEMENT_LEN; +const SQL_MAXIMUM_TABLES_IN_SELECT=SQL_MAX_TABLES_IN_SELECT; +const SQL_MAXIMUM_USER_NAME_LENGTH=SQL_MAX_USER_NAME_LEN; + +const SQL_NC_HIGH=0; +const SQL_NC_LOW=1; +const SQL_NEED_DATA=99; +const SQL_NO_NULLS=0; +const SQL_NTS=-3; +const LONG SQL_NTSL=-3; +const SQL_NULL_COLLATION=85; +const SQL_NULL_DATA=-1; +const SQL_NULL_HDBC=0; +const SQL_NULL_HENV=0; +const SQL_NULL_HSTMT=0; +const SQL_NULLABLE=1; +const SQL_NULLABLE_UNKNOWN=2; +const SQL_NUMERIC=2; +const SQL_ORDER_BY_COLUMNS_IN_SELECT=90; +const SQL_PC_PSEUDO=2; +const SQL_PC_UNKNOWN=0; +const SQL_REAL=7; +const SQL_RESET_PARAMS=3; +const SQL_ROLLBACK=1; +const SQL_SCCO_LOCK=2; +const SQL_SCCO_OPT_ROWVER=4; +const SQL_SCCO_OPT_VALUES=8; +const SQL_SCCO_READ_ONLY=1; +const SQL_SCOPE_CURROW=0; +const SQL_SCOPE_SESSION=2; +const SQL_SCOPE_TRANSACTION=1; +const SQL_SCROLL_CONCURRENCY=43; +const SQL_SEARCH_PATTERN_ESCAPE=14; +const SQL_SERVER_NAME=13; +const SQL_SMALLINT=5; +const SQL_SPECIAL_CHARACTERS=94; +const SQL_STILL_EXECUTING=2; +//MACRO #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) + +const SQL_SUCCESS=0; +const SQL_SUCCESS_WITH_INFO=1; + +const SQL_TC_ALL=2; +const SQL_TC_DDL_COMMIT=3; +const SQL_TC_DDL_IGNORE=4; +const SQL_TC_DML=1; +const SQL_TC_NONE=0; + + +const SQL_TXN_CAPABLE=46; +const SQL_TXN_ISOLATION_OPTION=72; +const SQL_TXN_READ_COMMITTED=2; +const SQL_TXN_READ_UNCOMMITTED=1; +const SQL_TXN_REPEATABLE_READ=4; +const SQL_TXN_SERIALIZABLE=8; + +const SQL_TRANSACTION_CAPABLE=SQL_TXN_CAPABLE; +const SQL_TRANSACTION_ISOLATION_OPTION=SQL_TXN_ISOLATION_OPTION; +const SQL_TRANSACTION_READ_COMMITTED=SQL_TXN_READ_COMMITTED; +const SQL_TRANSACTION_READ_UNCOMMITTED=SQL_TXN_READ_UNCOMMITTED; +const SQL_TRANSACTION_REPEATABLE_READ=SQL_TXN_REPEATABLE_READ; +const SQL_TRANSACTION_SERIALIZABLE=SQL_TXN_SERIALIZABLE; + +const SQL_UNBIND=2; +const SQL_UNKNOWN_TYPE=0; +const SQL_USER_NAME=47; +const SQL_VARCHAR=12; + +static if (ODBCVER >= 0x0200) { + const SQL_AT_ADD_COLUMN = 1; + const SQL_AT_DROP_COLUMN = 2; +} + +static if (ODBCVER >= 0x0201) { + const SQL_OJ_LEFT = 1; + const SQL_OJ_RIGHT = 2; + const SQL_OJ_FULL = 4; + const SQL_OJ_NESTED = 8; + const SQL_OJ_NOT_ORDERED = 16; + const SQL_OJ_INNER = 32; + const SQL_OJ_ALL_COMPARISON_OPS = 64; +} + +static if (ODBCVER >= 0x0300) { + const SQL_AM_CONNECTION=1; + const SQL_AM_NONE=0; + const SQL_AM_STATEMENT=2; + const SQL_API_SQLALLOCHANDLE=1001; + const SQL_API_SQLBINDPARAM=1002; + const SQL_API_SQLCLOSECURSOR=1003; + const SQL_API_SQLCOLATTRIBUTE=6; + const SQL_API_SQLCOPYDESC=1004; + const SQL_API_SQLENDTRAN=1005; + const SQL_API_SQLFETCHSCROLL=1021; + const SQL_API_SQLFREEHANDLE=1006; + const SQL_API_SQLGETCONNECTATTR=1007; + const SQL_API_SQLGETDESCFIELD=1008; + const SQL_API_SQLGETDESCREC=1009; + const SQL_API_SQLGETDIAGFIELD=1010; + const SQL_API_SQLGETDIAGREC=1011; + const SQL_API_SQLGETENVATTR=1012; + const SQL_API_SQLGETSTMTATTR=1014; + const SQL_API_SQLSETCONNECTATTR=1016; + const SQL_API_SQLSETDESCFIELD=1017; + const SQL_API_SQLSETDESCREC=1018; + const SQL_API_SQLSETENVATTR=1019; + const SQL_API_SQLSETSTMTATTR=1020; + const SQL_ARD_TYPE=-99; + const SQL_AT_ADD_CONSTRAINT=8; + const SQL_ATTR_APP_PARAM_DESC=10011; + const SQL_ATTR_APP_ROW_DESC=10010; + const SQL_ATTR_AUTO_IPD=10001; + const SQL_ATTR_CURSOR_SCROLLABLE=-1; + const SQL_ATTR_CURSOR_SENSITIVITY=-2; + const SQL_ATTR_IMP_PARAM_DESC=10013; + const SQL_ATTR_IMP_ROW_DESC=10012; + const SQL_ATTR_METADATA_ID=10014; + const SQL_ATTR_OUTPUT_NTS=10001; + const SQL_CATALOG_NAME=10003; + const SQL_CODE_DATE=1; + const SQL_CODE_TIME=2; + const SQL_CODE_TIMESTAMP=3; + const SQL_COLLATION_SEQ=10004; + const SQL_CURSOR_SENSITIVITY=10001; + const SQL_DATE_LEN=10; + const SQL_DATETIME=9; + const SQL_DEFAULT=99; + + const SQL_DESC_ALLOC_AUTO=1; + const SQL_DESC_ALLOC_USER=2; + const SQL_DESC_ALLOC_TYPE=1099; + const SQL_DESC_COUNT=1001; + const SQL_DESC_TYPE=1002; + const SQL_DESC_LENGTH=1003; + const SQL_DESC_OCTET_LENGTH_PTR=1004; + const SQL_DESC_PRECISION=1005; + const SQL_DESC_SCALE=1006; + const SQL_DESC_DATETIME_INTERVAL_CODE=1007; + const SQL_DESC_NULLABLE=1008; + const SQL_DESC_INDICATOR_PTR=1009; + const SQL_DESC_DATA_PTR=1010; + const SQL_DESC_NAME=1011; + const SQL_DESC_UNNAMED=1012; + const SQL_DESC_OCTET_LENGTH=1013; + + const SQL_DESCRIBE_PARAMETER=10002; + + const SQL_DIAG_ALTER_DOMAIN=3; + const SQL_DIAG_ALTER_TABLE=4; + const SQL_DIAG_CALL=7; + const SQL_DIAG_CLASS_ORIGIN=8; + const SQL_DIAG_CONNECTION_NAME=10; + const SQL_DIAG_CREATE_ASSERTION=6; + const SQL_DIAG_CREATE_CHARACTER_SET=8; + const SQL_DIAG_CREATE_COLLATION=10; + const SQL_DIAG_CREATE_DOMAIN=23; + const SQL_DIAG_CREATE_INDEX=-1; + const SQL_DIAG_CREATE_SCHEMA=64; + const SQL_DIAG_CREATE_TABLE=77; + const SQL_DIAG_CREATE_TRANSLATION=79; + const SQL_DIAG_CREATE_VIEW=84; + const SQL_DIAG_DELETE_WHERE=19; + const SQL_DIAG_DROP_ASSERTION=24; + const SQL_DIAG_DROP_CHARACTER_SET=25; + const SQL_DIAG_DROP_COLLATION=26; + const SQL_DIAG_DROP_DOMAIN=27; + const SQL_DIAG_DROP_INDEX=(-2); + const SQL_DIAG_DROP_SCHEMA=31; + const SQL_DIAG_DROP_TABLE=32; + const SQL_DIAG_DROP_TRANSLATION=33; + const SQL_DIAG_DROP_VIEW=36; + const SQL_DIAG_DYNAMIC_DELETE_CURSOR=38; + const SQL_DIAG_DYNAMIC_FUNCTION=7; + const SQL_DIAG_DYNAMIC_FUNCTION_CODE=12; + const SQL_DIAG_DYNAMIC_UPDATE_CURSOR=81; + const SQL_DIAG_GRANT=48; + const SQL_DIAG_INSERT=50; + const SQL_DIAG_MESSAGE_TEXT=6; + const SQL_DIAG_NATIVE=5; + const SQL_DIAG_NUMBER=2; + const SQL_DIAG_RETURNCODE=1; + const SQL_DIAG_REVOKE=59; + const SQL_DIAG_ROW_COUNT=3; + const SQL_DIAG_SELECT_CURSOR=85; + const SQL_DIAG_SERVER_NAME=11; + const SQL_DIAG_SQLSTATE=4; + const SQL_DIAG_SUBCLASS_ORIGIN=9; + const SQL_DIAG_UNKNOWN_STATEMENT=0; + const SQL_DIAG_UPDATE_WHERE=82; + + const SQL_FALSE=0; + const SQL_HANDLE_DBC=2; + const SQL_HANDLE_DESC=4; + const SQL_HANDLE_ENV=1; + const SQL_HANDLE_STMT=3; + const SQL_INSENSITIVE=1; + const SQL_MAX_CONCURRENT_ACTIVITIES=1; + const SQL_MAX_DRIVER_CONNECTIONS=0; + const SQL_MAX_IDENTIFIER_LEN=10005; + const SQL_MAXIMUM_CONCURRENT_ACTIVITIES=SQL_MAX_CONCURRENT_ACTIVITIES; + const SQL_MAXIMUM_DRIVER_CONNECTIONS=SQL_MAX_DRIVER_CONNECTIONS; + const SQL_MAXIMUM_IDENTIFIER_LENGTH=SQL_MAX_IDENTIFIER_LEN; + const SQL_NAMED=0; + const SQL_NO_DATA=100; + const SQL_NONSCROLLABLE=0; + const SQL_NULL_HANDLE=0L; + const SQL_NULL_HDESC=0; + const SQL_OJ_CAPABILITIES=115; + const SQL_OUTER_JOIN_CAPABILITIES=SQL_OJ_CAPABILITIES; + const SQL_PC_NON_PSEUDO=1; + + const SQL_PRED_NONE=0; + const SQL_PRED_CHAR=1; + const SQL_PRED_BASIC=2; + + const SQL_ROW_IDENTIFIER=1; + const SQL_SCROLLABLE=1; + const SQL_SENSITIVE=2; + const SQL_TIME_LEN=8; + const SQL_TIMESTAMP_LEN=19; + const SQL_TRUE=1; + const SQL_TYPE_DATE=91; + const SQL_TYPE_TIME=92; + const SQL_TYPE_TIMESTAMP=93; + const SQL_UNNAMED=1; + const SQL_UNSPECIFIED=0; + const SQL_XOPEN_CLI_YEAR=10000; +}//#endif /* ODBCVER >= 0x0300 */ + +extern (Windows) { + deprecated { + SQLRETURN SQLAllocConnect(SQLHENV, SQLHDBC*); + SQLRETURN SQLAllocEnv(SQLHENV*); + SQLRETURN SQLAllocStmt(SQLHDBC, SQLHSTMT*); + SQLRETURN SQLError(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLFreeConnect(SQLHDBC); + SQLRETURN SQLFreeEnv(SQLHENV); + SQLRETURN SQLSetParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); + SQLRETURN SQLGetConnectOption(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLSetConnectOption(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLROWCOUNT); + } + SQLRETURN SQLBindCol(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLCancel(SQLHSTMT); + SQLRETURN SQLConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDescribeCol(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDisconnect(SQLHDBC); + SQLRETURN SQLExecDirect(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLExecute(SQLHSTMT); + SQLRETURN SQLFetch(SQLHSTMT); + SQLRETURN SQLFreeStmt(SQLHSTMT, SQLUSMALLINT); + SQLRETURN SQLGetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLNumResultCols(SQLHSTMT, SQLSMALLINT*); + SQLRETURN SQLPrepare(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLRowCount(SQLHSTMT, SQLLEN*); + SQLRETURN SQLSetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTransact(SQLHENV, SQLHDBC, SQLUSMALLINT); + SQLRETURN SQLColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLGetData(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLGetFunctions(SQLHDBC, SQLUSMALLINT, SQLUSMALLINT*); + SQLRETURN SQLGetInfo(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetTypeInfo(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLParamData(SQLHSTMT, SQLPOINTER*); + SQLRETURN SQLPutData(SQLHSTMT, SQLPOINTER, SQLLEN); + SQLRETURN SQLSpecialColumns(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatistics(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTables(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDataSources(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + + static if (ODBCVER >= 0x0300) { + SQLRETURN SQLAllocHandle(SQLSMALLINT, SQLHANDLE, SQLHANDLE*); + SQLRETURN SQLBindParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); + SQLRETURN SQLCloseCursor(SQLHSTMT); + SQLRETURN SQLColAttribute(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLCopyDesc(SQLHDESC, SQLHDESC); + SQLRETURN SQLEndTran(SQLSMALLINT, SQLHANDLE, SQLSMALLINT); + SQLRETURN SQLFetchScroll(SQLHSTMT, SQLSMALLINT, SQLROWOFFSET); + SQLRETURN SQLFreeHandle(SQLSMALLINT, SQLHANDLE); + SQLRETURN SQLGetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescRec(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, + SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDiagField(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRec(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescRec(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLLEN, SQLSMALLINT, + SQLSMALLINT, SQLPOINTER, SQLLEN*, SQLLEN*); + SQLRETURN SQLSetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + }/* (ODBCVER >= 0x0300) */ +} \ No newline at end of file diff --git a/src/core/sys/windows/sqlext.d b/src/core/sys/windows/sqlext.d new file mode 100644 index 0000000000..2f19bc2997 --- /dev/null +++ b/src/core/sys/windows/sqlext.d @@ -0,0 +1,1295 @@ +/***********************************************************************\ +* sqlext.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.sqlext; + +/* Conversion notes: + The MinGW file was a horrible mess. All of the #defines were sorted alphabetically, + which is crazy. This file needs a lot of work. + In MinGW, sqlext #includes sqlucode, but sqlucode #includes sqlext, + creating a circular dependency! +*/ + +public import win32.sql; +private import win32.windef; + +const SQL_SPEC_MAJOR = 3; +const SQL_SPEC_MINOR = 51; +const char[] SQL_SPEC_STRING = "03.51"; +const SQL_ACCESS_MODE = 101; +const SQL_ACTIVE_CONNECTIONS = 0; +const SQL_ACTIVE_STATEMENTS = 1; + +const SQL_DATE = 9; +const SQL_TIME = 10; +const SQL_SIGNED_OFFSET = -20; +const SQL_TINYINT = -6; +const SQL_TIMESTAMP = 11; +const SQL_UNSIGNED_OFFSET = -22; + +const SQL_ADD = 4; +const SQL_ALL_EXCEPT_LIKE = 2; + +const SQL_API_ALL_FUNCTIONS = 0; +const SQL_API_SQLCOLATTRIBUTES = 6; +const SQL_API_SQLDRIVERCONNECT = 41; +const SQL_API_SQLBROWSECONNECT = 55; +const SQL_API_SQLCOLUMNPRIVILEGES = 56; +const SQL_API_SQLDESCRIBEPARAM = 58; +const SQL_API_SQLEXTENDEDFETCH = 59; +const SQL_API_SQLFOREIGNKEYS = 60; +const SQL_API_SQLMORERESULTS = 61; +const SQL_API_SQLNATIVESQL = 62; +const SQL_API_SQLNUMPARAMS = 63; +const SQL_API_SQLPARAMOPTIONS = 64; +const SQL_API_SQLPRIMARYKEYS = 65; +const SQL_API_SQLPROCEDURECOLUMNS = 66; +const SQL_API_SQLPROCEDURES = 67; +const SQL_API_SQLSETPOS = 68; +const SQL_API_SQLSETSCROLLOPTIONS = 69; +const SQL_API_SQLTABLEPRIVILEGES = 70; +const SQL_API_SQLDRIVERS = 71; +const SQL_API_SQLBINDPARAMETER = 72; +const SQL_API_LOADBYORDINAL = 199; + +const SQL_ASYNC_ENABLE = 4; +const SQL_ASYNC_ENABLE_OFF = 0UL; +const SQL_ASYNC_ENABLE_ON = 1UL; +const SQL_ASYNC_ENABLE_DEFAULT = SQL_ASYNC_ENABLE_OFF; + +const SQL_ATTR_CONNECTION_DEAD = 1209; +const SQL_ATTR_READONLY = 0; +const SQL_ATTR_READWRITE_UNKNOWN = 2; +const SQL_ATTR_WRITE = 1; + +const SQL_AUTOCOMMIT = 102; +const SQL_AUTOCOMMIT_OFF = 0UL; +const SQL_AUTOCOMMIT_ON = 1UL; +const SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON; +const SQL_BEST_ROWID = 1; +const SQL_BIGINT = -5; +const SQL_BINARY = -2; +const SQL_BIND_BY_COLUMN = 0UL; +const SQL_BIND_TYPE = 5; +const SQL_BIND_TYPE_DEFAULT = SQL_BIND_BY_COLUMN; +const SQL_BIT = -7; + +const SQL_BOOKMARK_PERSISTENCE = 82; + +// for BOOKMARK_PERSISTENCE +const SQL_BP_CLOSE = 1; +const SQL_BP_DELETE = 2; +const SQL_BP_DROP = 4; +const SQL_BP_TRANSACTION = 8; +const SQL_BP_UPDATE = 16; +const SQL_BP_OTHER_HSTMT = 32; +const SQL_BP_SCROLL = 64; + +const SQL_C_BINARY = SQL_BINARY; +const SQL_C_BIT = SQL_BIT; +const SQL_C_CHAR = SQL_CHAR; +const SQL_C_DATE = SQL_DATE; +const SQL_C_DOUBLE = SQL_DOUBLE; +const SQL_C_FLOAT = SQL_REAL; +const SQL_C_LONG = SQL_INTEGER; +const SQL_C_SHORT = SQL_SMALLINT; +const SQL_C_SLONG = SQL_C_LONG+SQL_SIGNED_OFFSET; +const SQL_C_SSHORT = SQL_C_SHORT+SQL_SIGNED_OFFSET; +const SQL_C_STINYINT = SQL_TINYINT+SQL_SIGNED_OFFSET; +const SQL_C_TIME = SQL_TIME; +const SQL_C_TIMESTAMP = SQL_TIMESTAMP; +const SQL_C_TINYINT = SQL_TINYINT; +const SQL_C_ULONG = SQL_C_LONG+SQL_UNSIGNED_OFFSET; +const SQL_C_USHORT = SQL_C_SHORT+SQL_UNSIGNED_OFFSET; +const SQL_C_UTINYINT = SQL_TINYINT+SQL_UNSIGNED_OFFSET; +const SQL_C_BOOKMARK = SQL_C_ULONG; +const SQL_C_DEFAULT = 99; + +const SQL_CASCADE = 0; +const SQL_CB_NON_NULL = 1; +const SQL_CB_NULL = 0; +deprecated { +const SQL_CC_CLOSE = SQL_CB_CLOSE;/* deprecated */ +const SQL_CC_DELETE = SQL_CB_DELETE;/* deprecated */ +const SQL_CC_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ +} +const SQL_CD_FALSE = 0L; +const SQL_CD_TRUE = 1L; + +const SQL_CN_ANY = 2; +const SQL_CN_DIFFERENT = 1; +const SQL_CN_NONE = 0; + +const SQL_COLUMN_ALIAS = 87; + +const SQL_COLUMN_COUNT = 0; +const SQL_COLUMN_NAME = 1; +const SQL_COLUMN_DISPLAY_SIZE = 6; +const SQL_COLUMN_LABEL = 18; +const SQL_COLUMN_LENGTH = 3; +const SQL_COLUMN_MONEY = 9; +const SQL_COLUMN_NULLABLE = 7; +const SQL_COLUMN_OWNER_NAME = 16; +const SQL_COLUMN_PRECISION = 4; +const SQL_COLUMN_QUALIFIER_NAME = 17; +const SQL_COLUMN_SCALE = 5; +const SQL_COLUMN_UNSIGNED = 8; +const SQL_COLUMN_UPDATABLE = 10; +const SQL_COLUMN_AUTO_INCREMENT = 11; +const SQL_COLUMN_CASE_SENSITIVE = 12; +const SQL_COLUMN_SEARCHABLE = 13; +const SQL_COLUMN_TYPE = 2; +const SQL_COLUMN_TYPE_NAME = 14; +const SQL_COLUMN_TABLE_NAME = 15; + +const SQL_CONCAT_NULL_BEHAVIOR = 22; + +const SQL_CONCUR_READ_ONLY = 1; +const SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; +const SQL_CONCUR_LOCK = 2; +const SQL_CONCUR_ROWVER = 3; +const SQL_CONCUR_TIMESTAMP = SQL_CONCUR_ROWVER;/* deprecated */ +const SQL_CONCUR_VALUES = 4; + +const SQL_CONCURRENCY = 7; +const SQL_CONVERT_BIGINT = 53; +const SQL_CONVERT_BINARY = 54; +const SQL_CONVERT_BIT = 55; +const SQL_CONVERT_CHAR = 56; +const SQL_CONVERT_DATE = 57; +const SQL_CONVERT_DECIMAL = 58; +const SQL_CONVERT_DOUBLE = 59; +const SQL_CONVERT_FLOAT = 60; +const SQL_CONVERT_FUNCTIONS = 48; +const SQL_CONVERT_INTEGER = 61; +const SQL_CONVERT_LONGVARBINARY = 71; +const SQL_CONVERT_LONGVARCHAR = 62; +const SQL_CONVERT_NUMERIC = 63; +const SQL_CONVERT_REAL = 64; +const SQL_CONVERT_SMALLINT = 65; +const SQL_CONVERT_TIME = 66; +const SQL_CONVERT_TIMESTAMP = 67; +const SQL_CONVERT_TINYINT = 68; +const SQL_CONVERT_VARBINARY = 69; +const SQL_CONVERT_VARCHAR = 70; +const SQL_CORRELATION_NAME = 74; +const SQL_CR_CLOSE = SQL_CB_CLOSE;/* deprecated */ +const SQL_CR_DELETE = SQL_CB_DELETE;/* deprecated */ +const SQL_CR_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ + +enum : ULONG { + SQL_CUR_USE_IF_NEEDED = 0, + SQL_CUR_USE_ODBC, + SQL_CUR_USE_DRIVER, + SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER +} + +const SQL_CURRENT_QUALIFIER = 109; +const SQL_CURSOR_DYNAMIC = 2UL; +const SQL_CURSOR_FORWARD_ONLY = 0UL; +const SQL_CURSOR_KEYSET_DRIVEN = 1UL; +const SQL_CURSOR_ROLLBACK_BEHAVIOR = 24; +const SQL_CURSOR_STATIC = 3UL; +const SQL_CURSOR_TYPE = 6; +const SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY; + +const SQL_CV_CASCADED = 0x00000004L; +const SQL_CV_CHECK_OPTION = 0x00000002L; +const SQL_CV_CREATE_VIEW = 0x00000001L; +const SQL_CV_LOCAL = 0x00000008L; +const SQL_CVT_BIGINT = 0x00004000L; +const SQL_CVT_BINARY = 0x00000400L; +const SQL_CVT_BIT = 0x00001000L; +const SQL_CVT_CHAR = 0x00000001L; +const SQL_CVT_DATE = 0x00008000L; +const SQL_CVT_DECIMAL = 0x00000004L; +const SQL_CVT_DOUBLE = 0x00000080L; +const SQL_CVT_FLOAT = 0x00000020L; +const SQL_CVT_INTEGER = 0x00000008L; +const SQL_CVT_LONGVARBINARY = 0x00040000L; +const SQL_CVT_LONGVARCHAR = 0x00000200L; +const SQL_CVT_NUMERIC = 0x00000002L; +const SQL_CVT_REAL = 0x00000040L; +const SQL_CVT_SMALLINT = 0x00000010L; +const SQL_CVT_TIME = 0x00010000L; +const SQL_CVT_TIMESTAMP = 0x00020000L; +const SQL_CVT_TINYINT = 0x00002000L; +const SQL_CVT_VARBINARY = 0x00000800L; +const SQL_CVT_VARCHAR = 0x00000100L; +const SQL_DATABASE_NAME = 16;/* deprecated */ + +const SQL_DEFAULT_PARAM = -5; +const SQL_DELETE = 3; + +const SQL_DRIVER_COMPLETE = 1; +const SQL_DRIVER_COMPLETE_REQUIRED = 3; +const SQL_DRIVER_HDBC = 3; +const SQL_DRIVER_HENV = 4; +const SQL_DRIVER_HLIB = 76; +const SQL_DRIVER_HSTMT = 5; +const SQL_DRIVER_NAME = 6; +const SQL_DRIVER_NOPROMPT = 0; +const SQL_DRIVER_ODBC_VER = 77; +const SQL_DRIVER_PROMPT = 2; +const SQL_DRIVER_VER = 7; + +const SQL_DTC_ENLIST_EXPENSIVE = 1; +const SQL_DTC_UNENLIST_EXPENSIVE = 2; +const SQL_DTC_TRANSITION_COST = 1750; +const SQL_ENSURE = 1; +const SQL_ENTIRE_ROWSET = 0; +const SQL_EXPRESSIONS_IN_ORDERBY = 27; +const SQL_FD_FETCH_BOOKMARK = 128; +const SQL_FD_FETCH_PREV = SQL_FD_FETCH_PRIOR;/* deprecated */ +const SQL_FD_FETCH_RESUME = 64; +const SQL_FETCH_BOOKMARK = 8; +const SQL_FETCH_PREV = SQL_FETCH_PRIOR;/* deprecated */ +const SQL_FETCH_RESUME = 7;/* deprecated */ + +const SQL_FILE_NOT_SUPPORTED = 0x0000; +const SQL_FILE_TABLE = 0x0001; +const SQL_FILE_QUALIFIER = 0x0002; +const SQL_FILE_CATALOG = SQL_FILE_QUALIFIER; +const SQL_FILE_USAGE = 84; + +const SQL_FN_CVT_CONVERT = 0x00000001L; +const SQL_FN_NUM_ABS = 0x00000001L; +const SQL_FN_NUM_ACOS = 0x00000002L; +const SQL_FN_NUM_ASIN = 0x00000004L; +const SQL_FN_NUM_ATAN = 0x00000008L; +const SQL_FN_NUM_ATAN2 = 0x00000010L; +const SQL_FN_NUM_CEILING = 0x00000020L; +const SQL_FN_NUM_COS = 0x00000040L; +const SQL_FN_NUM_COT = 0x00000080L; +const SQL_FN_NUM_DEGREES = 0x00040000L; +const SQL_FN_NUM_EXP = 0x00000100L; +const SQL_FN_NUM_FLOOR = 0x00000200L; +const SQL_FN_NUM_LOG = 0x00000400L; +const SQL_FN_NUM_LOG10 = 0x00080000L; +const SQL_FN_NUM_MOD = 0x00000800L; +const SQL_FN_NUM_PI = 0x00010000L; +const SQL_FN_NUM_POWER = 0x00100000L; +const SQL_FN_NUM_RADIANS = 0x00200000L; +const SQL_FN_NUM_RAND = 0x00020000L; +const SQL_FN_NUM_ROUND = 0x00400000L; +const SQL_FN_NUM_SIGN = 0x00001000L; +const SQL_FN_NUM_SIN = 0x00002000L; +const SQL_FN_NUM_SQRT = 0x00004000L; +const SQL_FN_NUM_TAN = 0x00008000L; +const SQL_FN_NUM_TRUNCATE = 0x00800000L; +const SQL_FN_STR_ASCII = 0x00002000L; +const SQL_FN_STR_CHAR = 0x00004000L; +const SQL_FN_STR_CONCAT = 0x00000001L; +const SQL_FN_STR_DIFFERENCE = 0x00008000L; +const SQL_FN_STR_INSERT = 0x00000002L; +const SQL_FN_STR_LCASE = 0x00000040L; +const SQL_FN_STR_LEFT = 0x00000004L; +const SQL_FN_STR_LENGTH = 0x00000010L; +const SQL_FN_STR_LOCATE = 0x00000020L; +const SQL_FN_STR_LOCATE_2 = 0x00010000L; +const SQL_FN_STR_LTRIM = 0x00000008L; +const SQL_FN_STR_REPEAT = 0x00000080L; +const SQL_FN_STR_REPLACE = 0x00000100L; +const SQL_FN_STR_RIGHT = 0x00000200L; +const SQL_FN_STR_RTRIM = 0x00000400L; +const SQL_FN_STR_SOUNDEX = 0x00020000L; +const SQL_FN_STR_SPACE = 0x00040000L; +const SQL_FN_STR_SUBSTRING = 0x00000800L; +const SQL_FN_STR_UCASE = 0x00001000L; +const SQL_FN_SYS_DBNAME = 0x00000002L; +const SQL_FN_SYS_IFNULL = 0x00000004L; +const SQL_FN_SYS_USERNAME = 0x00000001L; +const SQL_FN_TD_CURDATE = 0x00000002L; +const SQL_FN_TD_CURTIME = 0x00000200L; +const SQL_FN_TD_DAYNAME = 0x00008000L; +const SQL_FN_TD_DAYOFMONTH = 0x00000004L; +const SQL_FN_TD_DAYOFWEEK = 0x00000008L; +const SQL_FN_TD_DAYOFYEAR = 0x00000010L; +const SQL_FN_TD_HOUR = 0x00000400L; +const SQL_FN_TD_MINUTE = 0x00000800L; +const SQL_FN_TD_MONTH = 0x00000020L; +const SQL_FN_TD_MONTHNAME = 0x00010000L; +const SQL_FN_TD_NOW = 0x00000001L; +const SQL_FN_TD_QUARTER = 0x00000040L; +const SQL_FN_TD_SECOND = 0x00001000L; +const SQL_FN_TD_TIMESTAMPADD = 0x00002000L; +const SQL_FN_TD_TIMESTAMPDIFF = 0x00004000L; +const SQL_FN_TD_WEEK = 0x00000080L; +const SQL_FN_TD_YEAR = 0x00000100L; +const SQL_FN_TSI_DAY = 0x00000010L; +const SQL_FN_TSI_FRAC_SECOND = 0x00000001L; +const SQL_FN_TSI_HOUR = 0x00000008L; +const SQL_FN_TSI_MINUTE = 0x00000004L; +const SQL_FN_TSI_MONTH = 0x00000040L; +const SQL_FN_TSI_QUARTER = 0x00000080L; +const SQL_FN_TSI_SECOND = 0x00000002L; +const SQL_FN_TSI_WEEK = 0x00000020L; +const SQL_FN_TSI_YEAR = 0x00000100L; +const SQL_GB_GROUP_BY_CONTAINS_SELECT = 2; +const SQL_GB_GROUP_BY_EQUALS_SELECT = 1; +const SQL_GB_NO_RELATION = 3; +const SQL_GB_NOT_SUPPORTED = 0; +const SQL_GD_BLOCK = 4; +const SQL_GD_BOUND = 8; +const SQL_GET_BOOKMARK = 13; +const SQL_GROUP_BY = 88; +const SQL_IGNORE = -6; +const SQL_INFO_FIRST = 0; +const SQL_KEYSET_SIZE = 8; +const SQL_KEYSET_SIZE_DEFAULT = 0UL; +const SQL_KEYWORDS = 89; +const SQL_LCK_EXCLUSIVE = 2; +const SQL_LCK_NO_CHANGE = 1; +const SQL_LCK_UNLOCK = 4; + +const SQL_LEN_BINARY_ATTR_OFFSET = -100; +const SQL_LEN_DATA_AT_EXEC_OFFSET = -100; +//MACRO #define SQL_LEN_BINARY_ATTR(length) (-(length)+SQL_LEN_BINARY_ATTR_OFFSET) +//MACRO #define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) + +const SQL_LIKE_ESCAPE_CLAUSE = 113; +const SQL_LIKE_ONLY = 1; +const SQL_LOCK_EXCLUSIVE = 1; +const SQL_LOCK_NO_CHANGE = 0; +const SQL_LOCK_TYPES = 78; +const SQL_LOCK_UNLOCK = 2; +const SQL_LOGIN_TIMEOUT = 103; +const SQL_LOGIN_TIMEOUT_DEFAULT = 15UL; +const SQL_LONGVARBINARY = -4; +const SQL_LONGVARCHAR = -1; +const SQL_MAX_BINARY_LITERAL_LEN = 112; +const SQL_MAX_CHAR_LITERAL_LEN = 108; +const SQL_MAX_DSN_LENGTH = 32; +const SQL_MAX_LENGTH = 3; +const SQL_MAX_LENGTH_DEFAULT = 0UL; +const SQL_MAX_OPTION_STRING_LENGTH = 256; +const SQL_MAX_OWNER_NAME_LEN = 32; +const SQL_MAX_PROCEDURE_NAME_LEN = 33; +const SQL_MAX_QUALIFIER_NAME_LEN = 34; +const SQL_MAX_ROW_SIZE_INCLUDES_LONG = 103; +const SQL_MAX_ROWS = 1; +const SQL_MAX_ROWS_DEFAULT = 0UL; + +const SQL_MODE_READ_WRITE = 0UL; +const SQL_MODE_READ_ONLY = 1UL; +const SQL_MODE_DEFAULT = SQL_MODE_READ_WRITE; + +const SQL_MULT_RESULT_SETS = 36; +const SQL_MULTIPLE_ACTIVE_TXN = 37; +const SQL_NC_END = 0x0004; +const SQL_NC_START = 0x0002; +const SQL_NEED_LONG_DATA_LEN = 111; +const SQL_NNC_NON_NULL = 0x0001; +const SQL_NNC_NULL = 0x0000; +const SQL_NO_TOTAL = -4; +const SQL_NON_NULLABLE_COLUMNS = 75; + +const SQL_NOSCAN_OFF = 0UL; +const SQL_NOSCAN_ON = 1UL; +const SQL_NOSCAN = 2; +const SQL_NOSCAN_DEFAULT = SQL_NOSCAN_OFF; + +const SQL_NUMERIC_FUNCTIONS = 49; +const SQL_OAC_LEVEL1 = 0x0001; +const SQL_OAC_LEVEL2 = 0x0002; +const SQL_OAC_NONE = 0x0000; +const SQL_ODBC_API_CONFORMANCE = 9; +const SQL_ODBC_CURSORS = 110; +const SQL_ODBC_SAG_CLI_CONFORMANCE = 12; +const SQL_ODBC_SQL_CONFORMANCE = 15; +const SQL_ODBC_SQL_OPT_IEF = 73; +const SQL_ODBC_VER = 10; +const SQL_OPT_TRACE = 104; + +const SQL_OPT_TRACE_FILE_DEFAULT = "\\SQL.LOG"; +const SQL_OPT_TRACE_OFF = 0UL; +const SQL_OPT_TRACE_DEFAULT = SQL_OPT_TRACE_OFF; +const SQL_OPT_TRACE_ON = 1UL; + +const SQL_OPT_TRACEFILE = 105; +const SQL_OSC_CORE = 1; +const SQL_OSC_EXTENDED = 2; +const SQL_OSC_MINIMUM = 0; +const SQL_OSCC_COMPLIANT = 1; +const SQL_OSCC_NOT_COMPLIANT = 0; +const SQL_OU_DML_STATEMENTS = 1; +const SQL_OU_INDEX_DEFINITION = 8; +const SQL_OU_PRIVILEGE_DEFINITION = 16; +const SQL_OU_PROCEDURE_INVOCATION = 2; +const SQL_OU_TABLE_DEFINITION = 4; +const SQL_OUTER_JOINS = 38; +const SQL_OWNER_TERM = 39; +const SQL_OWNER_USAGE = 91; +const SQL_PACKET_SIZE = 112; +const SQL_PARAM_INPUT = 1; +const SQL_PARAM_INPUT_OUTPUT = 2; +const SQL_PARAM_OUTPUT = 4; +const SQL_PARAM_TYPE_DEFAULT = SQL_PARAM_INPUT_OUTPUT; +const SQL_PARAM_TYPE_UNKNOWN = 0; +const SQL_PC_NOT_PSEUDO = 1; +const SQL_POS_ADD = 16; +const SQL_POS_DELETE = 8; +const SQL_POS_OPERATIONS = 79; +const SQL_POS_POSITION = 1; +const SQL_POS_REFRESH = 2; +const SQL_POS_UPDATE = 4; +const SQL_POSITION = 0; +const SQL_POSITIONED_STATEMENTS = 80; +const SQL_PROCEDURE_TERM = 40; +const SQL_PROCEDURES = 21; +const SQL_PS_POSITIONED_DELETE = 1; +const SQL_PS_POSITIONED_UPDATE = 2; +const SQL_PS_SELECT_FOR_UPDATE = 4; +const SQL_PT_FUNCTION = 2; +const SQL_PT_PROCEDURE = 1; +const SQL_PT_UNKNOWN = 0; +const SQL_QL_END = 0x0002; +const SQL_QL_START = 0x0001; +const SQL_QU_DML_STATEMENTS = 1; +const SQL_QU_INDEX_DEFINITION = 8; +const SQL_QU_PRIVILEGE_DEFINITION = 16; +const SQL_QU_PROCEDURE_INVOCATION = 2; +const SQL_QU_TABLE_DEFINITION = 4; +const SQL_QUALIFIER_LOCATION = 114; +const SQL_QUALIFIER_NAME_SEPARATOR = 41; +const SQL_QUALIFIER_TERM = 42; +const SQL_QUALIFIER_USAGE = 92; +const SQL_QUERY_TIMEOUT = 0; +const SQL_QUERY_TIMEOUT_DEFAULT = 0UL; +const SQL_QUICK = 0; +const SQL_QUIET_MODE = 111; +const SQL_QUOTED_IDENTIFIER_CASE = 93; + +const SQL_RD_OFF = 0UL; +const SQL_RD_ON = 1UL; +const SQL_RD_DEFAULT = SQL_RD_ON; + +const SQL_REFRESH = 1; +const SQL_RESTRICT = 1; +const SQL_RESULT_COL = 3; +const SQL_RETRIEVE_DATA = 11; +const SQL_RETURN_VALUE = 5; +const SQL_ROW_ADDED = 4; +const SQL_ROW_DELETED = 1; +const SQL_ROW_ERROR = 5; +const SQL_ROW_NOROW = 3; +const SQL_ROW_NUMBER = 14; +const SQL_ROW_SUCCESS = 0; +const SQL_ROW_UPDATED = 2; +const SQL_ROW_UPDATES = 11; +const SQL_ROWSET_SIZE = 9; +const SQL_ROWSET_SIZE_DEFAULT = 1UL; +const SQL_ROWVER = 2; +const SQL_SC_NON_UNIQUE = 0UL; +const SQL_SC_TRY_UNIQUE = 1UL; +const SQL_SC_UNIQUE = 2UL; +const SQL_SCCO_OPT_TIMESTAMP = SQL_SCCO_OPT_ROWVER;/* deprecated */ +const SQL_SCROLL_DYNAMIC = -2L;/* deprecated */ +const SQL_SCROLL_FORWARD_ONLY = 0L;/* deprecated */ +const SQL_SCROLL_KEYSET_DRIVEN = -1L;/* deprecated */ +const SQL_SCROLL_OPTIONS = 44; +const SQL_SCROLL_STATIC = -3L;/* deprecated */ +const SQL_SEARCHABLE = 3; +const SQL_SET_NULL = 2; +const SQL_SETPARAM_VALUE_MAX = -1L; +const SQL_SETPOS_MAX_LOCK_VALUE = SQL_LOCK_UNLOCK; +const SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD; +const SQL_SIMULATE_CURSOR = 10; +const SQL_SO_DYNAMIC = 4; +const SQL_SO_FORWARD_ONLY = 1; +const SQL_SO_KEYSET_DRIVEN = 2; +const SQL_SO_MIXED = 8; +const SQL_SO_STATIC = 16; +const SQL_SQ_COMPARISON = 1; +const SQL_SQ_CORRELATED_SUBQUERIES = 16; +const SQL_SQ_EXISTS = 2; +const SQL_SQ_IN = 4; +const SQL_SQ_QUANTIFIED = 8; +const SQL_SQLSTATE_SIZE = 5; +const SQL_SS_ADDITIONS = 1; +const SQL_SS_DELETIONS = 2; +const SQL_SS_UPDATES = 4; +const SQL_STATIC_SENSITIVITY = 83; +const SQL_STRING_FUNCTIONS = 50; +const SQL_SUBQUERIES = 95; +const SQL_SYSTEM_FUNCTIONS = 51; +const SQL_TABLE_STAT = 0; +const SQL_TABLE_TERM = 45; +const SQL_TIMEDATE_ADD_INTERVALS = 109; +const SQL_TIMEDATE_DIFF_INTERVALS = 110; +const SQL_TIMEDATE_FUNCTIONS = 52; +const SQL_TRANSLATE_DLL = 106; +const SQL_TRANSLATE_OPTION = 107; +const SQL_TXN_ISOLATION = 108; +const SQL_TXN_VERSIONING = 16; +const SQL_TYPE_NULL = 0; +const SQL_U_UNION = 1; +const SQL_U_UNION_ALL = 2; + +const SQL_UB_OFF = 0UL; +const SQL_UB_DEFAULT = SQL_UB_OFF; +const SQL_UB_ON = 01UL; + +const SQL_UNION = 96; +const SQL_UNSEARCHABLE = 0; +const SQL_UPDATE = 2; +const SQL_USE_BOOKMARKS = 12; +const SQL_VARBINARY = -3; + +const SQL_COLATT_OPT_MAX = SQL_COLUMN_LABEL; +const SQL_COLATT_OPT_MIN = SQL_COLUMN_COUNT; +const SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; + +//MACRO #define SQL_POSITION_TO(s, r) SQLSetPos(s, r, SQL_POSITION, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_LOCK_RECORD(s, r, l) SQLSetPos(s, r, SQL_POSITION, l) + +//MACRO #define SQL_REFRESH_RECORD(s, r, l) SQLSetPos(s, r, SQL_REFRESH, l) + +//MACRO #define SQL_UPDATE_RECORD(s, r) SQLSetPos(s, r, SQL_UPDATE, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_DELETE_RECORD(s, r) SQLSetPos(s, r, SQL_DELETE, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_ADD_RECORD(s, r) SQLSetPos(s, r, SQL_ADD, SQL_LOCK_NO_CHANGE) + + +static if (ODBCVER < 0x0300) { + const SQL_CONNECT_OPT_DRVR_START = 1000; + const SQL_CONN_OPT_MAX = SQL_PACKET_SIZE; + const SQL_CONN_OPT_MIN = SQL_ACCESS_MODE; + const SQL_STMT_OPT_MAX = SQL_ROW_NUMBER; + const SQL_STMT_OPT_MIN = SQL_QUERY_TIMEOUT; + const SQL_TYPE_DRIVER_START = SQL_INTERVAL_YEAR; + const SQL_TYPE_DRIVER_END = SQL_UNICODE_LONGVARCHAR; + const SQL_TYPE_MIN = SQL_BIT; + const SQL_TYPE_MAX = SQL_VARCHAR; +} + +static if (ODBCVER < 0x0300) { + const SQL_NO_DATA_FOUND = 100; + const SQL_INTERVAL_YEAR = -80; + const SQL_INTERVAL_MONTH = -81; + const SQL_INTERVAL_YEAR_TO_MONTH = -82; + const SQL_INTERVAL_DAY = -83; + const SQL_INTERVAL_HOUR = -84; + const SQL_INTERVAL_MINUTE = -85; + const SQL_INTERVAL_SECOND = -86; + const SQL_INTERVAL_DAY_TO_HOUR = -87; + const SQL_INTERVAL_DAY_TO_MINUTE = -88; + const SQL_INTERVAL_DAY_TO_SECOND = -89; + const SQL_INTERVAL_HOUR_TO_MINUTE = -90; + const SQL_INTERVAL_HOUR_TO_SECOND = -91; + const SQL_INTERVAL_MINUTE_TO_SECOND = -92; +} else { + const SQL_NO_DATA_FOUND = SQL_NO_DATA; + const SQL_CODE_YEAR = 1; + const SQL_CODE_MONTH = 2; + const SQL_CODE_DAY = 3; + const SQL_CODE_HOUR = 4; + const SQL_CODE_MINUTE = 5; + const SQL_CODE_SECOND = 6; + const SQL_CODE_YEAR_TO_MONTH = 7; + const SQL_CODE_DAY_TO_HOUR = 8; + const SQL_CODE_DAY_TO_MINUTE = 9; + const SQL_CODE_DAY_TO_SECOND = 10; + const SQL_CODE_HOUR_TO_MINUTE = 11; + const SQL_CODE_HOUR_TO_SECOND = 12; + const SQL_CODE_MINUTE_TO_SECOND = 13; + const SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR; + const SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH; + const SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY; + const SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR; + const SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE; + const SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND; + const SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH; + const SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR; + const SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE; + const SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND; + const SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE; + const SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND; + const SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND; +}//[Yes] #endif + + +static if ((ODBCVER >= 0x0201) && (ODBCVER < 0x0300)) { + const SQL_OJ_CAPABILITIES = 65003; +} + +static if (ODBCVER >= 0x0250) { + const SQL_NO_ACTION = 3; + const SQL_SET_DEFAULT = 4; +} + +static if (ODBCVER >= 0x0300) { + const SQL_ACTIVE_ENVIRONMENTS = 116; + const SQL_AD_ADD_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_AD_ADD_DOMAIN_CONSTRAINT = 0x00000002L; + const SQL_AD_ADD_DOMAIN_DEFAULT = 0x00000008L; + const SQL_AD_CONSTRAINT_NAME_DEFINITION = 0x00000001L; + const SQL_AD_DROP_DOMAIN_CONSTRAINT = 0x00000004L; + const SQL_AD_DROP_DOMAIN_DEFAULT = 0x00000010L; + const SQL_AF_ALL = 0x00000040L; + const SQL_AF_AVG = 0x00000001L; + const SQL_AF_COUNT = 0x00000002L; + const SQL_AF_DISTINCT = 0x00000020L; + const SQL_AF_MAX = 0x00000004L; + const SQL_AF_MIN = 0x00000008L; + const SQL_AF_SUM = 0x00000010L; + const SQL_AGGREGATE_FUNCTIONS = 169; + const SQL_ALL_CATALOGS = "%"; + const SQL_ALL_SCHEMAS = "%"; + const SQL_ALL_TABLE_TYPES = "%"; + const SQL_ALTER_DOMAIN = 117; + const SQL_AM_CONNECTION = 1; + const SQL_AM_NONE = 0; + const SQL_AM_STATEMENT = 2; + const SQL_API_ODBC3_ALL_FUNCTIONS = 999; + const SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; + const SQL_API_SQLALLOCHANDLESTD = 73; + const SQL_API_SQLBULKOPERATIONS = 24; + const SQL_ASYNC_MODE = 10021; + const SQL_AT_ADD_COLUMN_COLLATION = 0x00000080L; + const SQL_AT_ADD_COLUMN_DEFAULT = 0x00000040L; + const SQL_AT_ADD_COLUMN_SINGLE = 0x00000020L; + const SQL_AT_ADD_TABLE_CONSTRAINT = 0x00001000L; + const SQL_AT_CONSTRAINT_DEFERRABLE = 0x00040000L; + const SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = 0x00010000L; + const SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00020000L; + const SQL_AT_CONSTRAINT_NAME_DEFINITION = 0x00008000L; + const SQL_AT_CONSTRAINT_NON_DEFERRABLE = 0x00080000L; + const SQL_AT_DROP_COLUMN_CASCADE = 0x00000400L; + const SQL_AT_DROP_COLUMN_DEFAULT = 0x00000200L; + const SQL_AT_DROP_COLUMN_RESTRICT = 0x00000800L; + const SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = 0x00002000L; + const SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = 0x00004000L; + const SQL_AT_SET_COLUMN_DEFAULT = 0x00000100L; + const SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; + const SQL_ATTR_ASYNC_ENABLE = 4; + const SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; + const SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; + const SQL_ATTR_CONNECTION_POOLING = 201; + const SQL_ATTR_CONNECTION_TIMEOUT = 113; + const SQL_ATTR_CP_MATCH = 202; + const SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; + const SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; + const SQL_ATTR_DISCONNECT_BEHAVIOR = 114; + const SQL_ATTR_ENABLE_AUTO_IPD = 15; + const SQL_ATTR_ENLIST_IN_DTC = 1207; + const SQL_ATTR_ENLIST_IN_XA = 1208; + const SQL_ATTR_FETCH_BOOKMARK_PTR = 16; + const SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; + const SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; + const SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; + const SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; + const SQL_ATTR_NOSCAN = SQL_NOSCAN; + const SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; + const SQL_ATTR_ODBC_VERSION = 200; + const SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; + const SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; + const SQL_ATTR_PARAM_BIND_TYPE = 18; + const SQL_ATTR_PARAM_OPERATION_PTR = 19; + const SQL_ATTR_PARAM_STATUS_PTR = 20; + const SQL_ATTR_PARAMS_PROCESSED_PTR = 21; + const SQL_ATTR_PARAMSET_SIZE = 22; + const SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; + const SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; + const SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; + const SQL_ATTR_ROW_ARRAY_SIZE = 27; + const SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; + const SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; + const SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; + const SQL_ATTR_ROW_OPERATION_PTR = 24; + const SQL_ATTR_ROW_STATUS_PTR = 25; + const SQL_ATTR_ROWS_FETCHED_PTR = 26; + const SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; + const SQL_ATTR_TRACE = SQL_OPT_TRACE; + const SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; + const SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; + const SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; + const SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; + const SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; + const SQL_BATCH_ROW_COUNT = 120; + const SQL_BATCH_SUPPORT = 121; + const SQL_BRC_EXPLICIT = 0x0000002; + const SQL_BRC_PROCEDURES = 0x0000001; + const SQL_BRC_ROLLED_UP = 0x0000004; + const SQL_BS_ROW_COUNT_EXPLICIT = 0x00000002L; + const SQL_BS_ROW_COUNT_PROC = 0x00000008L; + const SQL_BS_SELECT_EXPLICIT = 0x00000001L; + const SQL_BS_SELECT_PROC = 0x00000004L; + const SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; + const SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; + const SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; + const SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; + const SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; + const SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; + const SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; + const SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; + const SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; + const SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; + const SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; + const SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; + const SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; + const SQL_C_NUMERIC = SQL_NUMERIC; + const SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; + const SQL_C_TYPE_DATE = SQL_TYPE_DATE; + const SQL_C_TYPE_TIME = SQL_TYPE_TIME; + const SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; + const SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; + const SQL_C_VARBOOKMARK = SQL_C_BINARY; + const SQL_CA_CONSTRAINT_DEFERRABLE = 0x00000040L; + const SQL_CA_CONSTRAINT_INITIALLY_DEFERRED = 0x00000010L; + const SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000020L; + const SQL_CA_CONSTRAINT_NON_DEFERRABLE = 0x00000080L; + const SQL_CA_CREATE_ASSERTION = 0x00000001L; + const SQL_CA1_ABSOLUTE = 0x00000002L; + const SQL_CA1_BOOKMARK = 0x00000008L; + const SQL_CA1_BULK_ADD = 0x00010000L; + const SQL_CA1_BULK_DELETE_BY_BOOKMARK = 0x00040000L; + const SQL_CA1_BULK_FETCH_BY_BOOKMARK = 0x00080000L; + const SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 0x00020000L; + const SQL_CA1_LOCK_EXCLUSIVE = 0x00000080L; + const SQL_CA1_LOCK_NO_CHANGE = 0x00000040L; + const SQL_CA1_LOCK_UNLOCK = 0x00000100L; + const SQL_CA1_NEXT = 0x00000001L; + const SQL_CA1_POS_DELETE = 0x00000800L; + const SQL_CA1_POS_POSITION = 0x00000200L; + const SQL_CA1_POS_REFRESH = 0x00001000L; + const SQL_CA1_POS_UPDATE = 0x00000400L; + const SQL_CA1_POSITIONED_DELETE = 0x00004000L; + const SQL_CA1_POSITIONED_UPDATE = 0x00002000L; + const SQL_CA1_RELATIVE = 0x00000004L; + const SQL_CA1_SELECT_FOR_UPDATE = 0x00008000L; + const SQL_CA2_CRC_APPROXIMATE = 0x00002000L; + const SQL_CA2_CRC_EXACT = 0x00001000L; + const SQL_CA2_LOCK_CONCURRENCY = 0x00000002L; + + const SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L; + const SQL_CA2_MAX_ROWS_DELETE = 0x00000200L; + const SQL_CA2_MAX_ROWS_INSERT = 0x00000100L; + const SQL_CA2_MAX_ROWS_SELECT = 0x00000080L; + const SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L; + const SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | + SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG; + + const SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L; + const SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L; + const SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L; + const SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L; + const SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L; + const SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L; + const SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L; + const SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L; + const SQL_CA2_SIMULATE_UNIQUE = 0x00010000L; + const SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; + const SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; + const SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; + const SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; + const SQL_CCOL_CREATE_COLLATION = 0x00000001L; + const SQL_CCS_COLLATE_CLAUSE = 0x00000002L; + const SQL_CCS_CREATE_CHARACTER_SET = 0x00000001L; + const SQL_CCS_LIMITED_COLLATION = 0x00000004L; + const SQL_CDO_COLLATION = 0x00000008L; + const SQL_CDO_CONSTRAINT = 0x00000004L; + const SQL_CDO_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_CDO_CONSTRAINT_NAME_DEFINITION = 0x00000010L; + const SQL_CDO_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_CDO_CREATE_DOMAIN = 0x00000001L; + const SQL_CDO_DEFAULT = 0x00000002L; + const SQL_CL_END = SQL_QL_END; + const SQL_CL_START = SQL_QL_START; + const SQL_COL_PRED_BASIC = SQL_ALL_EXCEPT_LIKE; + const SQL_COL_PRED_CHAR = SQL_LIKE_ONLY; + const SQL_COLUMN_DRIVER_START = 1000; + const SQL_COLUMN_IGNORE = SQL_IGNORE; + const SQL_COLUMN_NUMBER_UNKNOWN = -2; + const SQL_CONVERT_GUID = 173; + + const SQL_CONVERT_WCHAR = 122; + const SQL_CONVERT_INTERVAL_DAY_TIME = 123; + const SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; + const SQL_CONVERT_WLONGVARCHAR = 125; + const SQL_CONVERT_WVARCHAR = 126; + + const SQL_CREATE_ASSERTION = 127; + const SQL_CREATE_CHARACTER_SET = 128; + const SQL_CREATE_COLLATION = 129; + const SQL_CREATE_DOMAIN = 130; + const SQL_CREATE_SCHEMA = 131; + const SQL_CREATE_TABLE = 132; + const SQL_CREATE_TRANSLATION = 133; + const SQL_CREATE_VIEW = 134; + + + const SQL_CP_OFF = 0UL; + const SQL_CP_DEFAULT = SQL_CP_OFF; + const SQL_CP_ONE_PER_DRIVER = 1UL; + const SQL_CP_ONE_PER_HENV = 2UL; + + const SQL_CP_STRICT_MATCH = 0UL; + const SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; + const SQL_CP_RELAXED_MATCH = 1UL; + + const SQL_CS_CREATE_SCHEMA = 0x00000001L; + const SQL_CS_AUTHORIZATION = 0x00000002L; + const SQL_CS_DEFAULT_CHARACTER_SET = 0x00000004L; + + const SQL_CT_COLUMN_COLLATION = 0x00000800L; + const SQL_CT_COLUMN_CONSTRAINT = 0x00000200L; + const SQL_CT_COLUMN_DEFAULT = 0x00000400L; + const SQL_CT_COMMIT_DELETE = 0x00000004L; + const SQL_CT_COMMIT_PRESERVE = 0x00000002L; + const SQL_CT_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_CT_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_CT_CONSTRAINT_NAME_DEFINITION = 0x00002000L; + const SQL_CT_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_CT_CREATE_TABLE = 0x00000001L; + const SQL_CT_GLOBAL_TEMPORARY = 0x00000008L; + const SQL_CT_LOCAL_TEMPORARY = 0x00000010L; + const SQL_CT_TABLE_CONSTRAINT = 0x00001000L; + + const SQL_CTR_CREATE_TRANSLATION = 0x00000001L; + + const SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; + const SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; + const SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; + const SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; + const SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; + + const SQL_CVT_INTERVAL_YEAR_MONTH = 0x00080000L; + const SQL_CVT_INTERVAL_DAY_TIME = 0x00100000L; + const SQL_CVT_WCHAR = 0x00200000L; + const SQL_CVT_WLONGVARCHAR = 0x00400000L; + const SQL_CVT_WVARCHAR = 0x00800000L; + const SQL_CVT_GUID = 0x01000000L; + + const SQL_DA_DROP_ASSERTION = 0x00000001L; + const SQL_DATETIME_LITERALS = 119; + + const SQL_DB_DISCONNECT = 1UL; + const SQL_DB_RETURN_TO_POOL = 0UL; + const SQL_DB_DEFAULT = SQL_DB_RETURN_TO_POOL; + + const SQL_DC_DROP_COLLATION = 0x00000001L; + const SQL_DCS_DROP_CHARACTER_SET = 0x00000001L; + const SQL_DD_CASCADE = 0x00000004L; + const SQL_DD_DROP_DOMAIN = 0x00000001L; + const SQL_DD_RESTRICT = 0x00000002L; + const SQL_DDL_INDEX = 170; + const SQL_DELETE_BY_BOOKMARK = 6; + const SQL_DESC_ARRAY_SIZE = 20; + const SQL_DESC_ARRAY_STATUS_PTR = 21; + const SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; + const SQL_DESC_BASE_COLUMN_NAME = 22; + const SQL_DESC_BASE_TABLE_NAME = 23; + const SQL_DESC_BIND_OFFSET_PTR = 24; + const SQL_DESC_BIND_TYPE = 25; + const SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; + const SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; + const SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; + const SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; + const SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; + const SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; + const SQL_DESC_LABEL = SQL_COLUMN_LABEL; + const SQL_DESC_LITERAL_PREFIX = 27; + const SQL_DESC_LITERAL_SUFFIX = 28; + const SQL_DESC_LOCAL_TYPE_NAME = 29; + const SQL_DESC_MAXIMUM_SCALE = 30; + const SQL_DESC_MINIMUM_SCALE = 31; + const SQL_DESC_NUM_PREC_RADIX = 32; + const SQL_DESC_PARAMETER_TYPE = 33; + const SQL_DESC_ROWS_PROCESSED_PTR = 34; + const SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; + const SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; + const SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; + const SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; + const SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; + const SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; + const SQL_DI_CREATE_INDEX = 0x00000001L; + const SQL_DI_DROP_INDEX = 0x00000002L; + + const SQL_DIAG_COLUMN_NUMBER = -1247; + const SQL_DIAG_ROW_NUMBER = -1248; + const SQL_DIAG_CURSOR_ROW_COUNT = -1249; + + const SQL_DL_SQL92_DATE = 0x00000001L; + const SQL_DL_SQL92_INTERVAL_DAY = 0x00000020L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000L; + const SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040L; + const SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000L; + const SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000L; + const SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080L; + const SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000L; + const SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010L; + const SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100L; + const SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008L; + const SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200L; + const SQL_DL_SQL92_TIME = 0x00000002L; + const SQL_DL_SQL92_TIMESTAMP = 0x00000004L; + const SQL_DM_VER = 171; + const SQL_DRIVER_HDESC = 135; + const SQL_DROP_ASSERTION = 136; + const SQL_DROP_CHARACTER_SET = 137; + const SQL_DROP_COLLATION = 138; + const SQL_DROP_DOMAIN = 139; + const SQL_DROP_SCHEMA = 140; + const SQL_DROP_TABLE = 141; + const SQL_DROP_TRANSLATION = 142; + const SQL_DROP_VIEW = 143; + const SQL_DS_CASCADE = 0x00000004L; + const SQL_DS_DROP_SCHEMA = 0x00000001L; + const SQL_DS_RESTRICT = 0x00000002L; + const SQL_DT_CASCADE = 0x00000004L; + const SQL_DT_DROP_TABLE = 0x00000001L; + const SQL_DT_RESTRICT = 0x00000002L; + const SQL_DTC_DONE = 0L; + const SQL_DTR_DROP_TRANSLATION = 0x00000001L; + const SQL_DV_CASCADE = 0x00000004L; + const SQL_DV_DROP_VIEW = 0x00000001L; + const SQL_DV_RESTRICT = 0x00000002L; + const SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; + const SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; + const SQL_EXT_API_LAST = SQL_API_SQLBINDPARAMETER; + const SQL_EXT_API_START = 40; + const SQL_FETCH_BY_BOOKMARK = 7; + const SQL_FETCH_FIRST_SYSTEM = 32; + const SQL_FETCH_FIRST_USER = 31; + const SQL_FN_CVT_CAST = 0x00000002L; + const SQL_FN_STR_BIT_LENGTH = 0x00080000L; + const SQL_FN_STR_CHAR_LENGTH = 0x00100000L; + const SQL_FN_STR_CHARACTER_LENGTH = 0x00200000L; + const SQL_FN_STR_OCTET_LENGTH = 0x00400000L; + const SQL_FN_STR_POSITION = 0x00800000L; + const SQL_FN_TD_CURRENT_DATE = 0x00020000L; + const SQL_FN_TD_CURRENT_TIME = 0x00040000L; + const SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000L; + const SQL_FN_TD_EXTRACT = 0x00100000L; + const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; + const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; + /* #define SQL_FUNC_EXISTS(exists, api) + ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? + SQL_TRUE : SQL_FALSE ) + */ + const SQL_GB_COLLATE = 0x0004; + const SQL_HANDLE_SENV = 5; + + const SQL_IK_NONE = 0; + const SQL_IK_ASC = 1; + const SQL_IK_DESC = 2; + const SQL_IK_ALL = SQL_IK_ASC | SQL_IK_DESC; + + const SQL_INDEX_KEYWORDS = 148; + const SQL_INFO_DRIVER_START = 1000; + const SQL_INFO_LAST = SQL_QUALIFIER_LOCATION; + const SQL_INFO_SCHEMA_VIEWS = 149; + const SQL_INITIALLY_DEFERRED = 5; + const SQL_INITIALLY_IMMEDIATE = 6; + const SQL_INSERT_STATEMENT = 172; + const SQL_INTERVAL = 10; + const SQL_IS_INSERT_LITERALS = 0x00000001L; + const SQL_IS_INSERT_SEARCHED = 0x00000002L; + const SQL_IS_INTEGER = -6; + const SQL_IS_POINTER = -4; + const SQL_IS_SELECT_INTO = 0x00000004L; + const SQL_IS_SMALLINT = -8; + const SQL_IS_UINTEGER = -5; + const SQL_IS_USMALLINT = -7; + const SQL_ISV_ASSERTIONS = 0x00000001L; + const SQL_ISV_CHARACTER_SETS = 0x00000002L; + const SQL_ISV_CHECK_CONSTRAINTS = 0x00000004L; + const SQL_ISV_COLLATIONS = 0x00000008L; + const SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010L; + const SQL_ISV_COLUMN_PRIVILEGES = 0x00000020L; + const SQL_ISV_COLUMNS = 0x00000040L; + const SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080L; + const SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100L; + const SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200L; + const SQL_ISV_DOMAINS = 0x00000400L; + const SQL_ISV_KEY_COLUMN_USAGE = 0x00000800L; + const SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000L; + const SQL_ISV_SCHEMATA = 0x00002000L; + const SQL_ISV_SQL_LANGUAGES = 0x00004000L; + const SQL_ISV_TABLE_CONSTRAINTS = 0x00008000L; + const SQL_ISV_TABLE_PRIVILEGES = 0x00010000L; + const SQL_ISV_TABLES = 0x00020000L; + const SQL_ISV_TRANSLATIONS = 0x00040000L; + const SQL_ISV_USAGE_PRIVILEGES = 0x00080000L; + const SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000L; + const SQL_ISV_VIEW_TABLE_USAGE = 0x00200000L; + const SQL_ISV_VIEWS = 0x00400000L; + const SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; + const SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; + const SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; + const SQL_NO_COLUMN_NUMBER = -1; + const SQL_NO_ROW_NUMBER = -1; + const SQL_NOT_DEFERRABLE = 7; + const SQL_NUM_EXTENSIONS = SQL_EXT_API_LAST-SQL_EXT_API_START+1; + const SQL_NUM_FUNCTIONS = 23; + const SQL_ODBC_INTERFACE_CONFORMANCE = 152; + + enum : ULONG { + SQL_OIC_CORE = 1, + SQL_OIC_LEVEL1, + SQL_OIC_LEVEL2 + } + enum : ULONG { + SQL_OV_ODBC2 = 2, + SQL_OV_ODBC3 = 3 + } + + const ULONG + SQL_PARAM_BIND_BY_COLUMN = 0, + SQL_PARAM_BIND_TYPE_DEFAULT = SQL_PARAM_BIND_BY_COLUMN; + + const SQL_PARAM_ARRAY_ROW_COUNTS = 153; + const SQL_PARAM_ARRAY_SELECTS = 154; + const SQL_PARAM_DIAG_UNAVAILABLE = 1; + const SQL_PARAM_ERROR = 5; + const SQL_PARAM_IGNORE = 1; + const SQL_PARAM_PROCEED = 0; + const SQL_PARAM_SUCCESS = 0; + const SQL_PARAM_SUCCESS_WITH_INFO = 6; + const SQL_PARAM_UNUSED = 7; + + const SQL_PARC_BATCH = 1; + const SQL_PARC_NO_BATCH = 2; + const SQL_PAS_BATCH = 1; + const SQL_PAS_NO_BATCH = 2; + const SQL_PAS_NO_SELECT = 3; + + const SQL_ROW_IGNORE = 1; + const SQL_ROW_NUMBER_UNKNOWN = -2; + const SQL_ROW_PROCEED = 0; + const SQL_ROW_SUCCESS_WITH_INFO = 6; + + const SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002L; + const SQL_SC_SQL92_ENTRY = 0x00000001L; + const SQL_SC_SQL92_FULL = 0x00000008L; + const SQL_SC_SQL92_INTERMEDIATE = 0x00000004L; + + const SQL_SCC_ISO92_CLI = 0x00000002L; + const SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001L; + + const SQL_SCHEMA_TERM = SQL_OWNER_TERM; + const SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; + const SQL_SDF_CURRENT_DATE = 0x00000001L; + const SQL_SDF_CURRENT_TIME = 0x00000002L; + const SQL_SDF_CURRENT_TIMESTAMP = 0x00000004L; + const SQL_SFKD_CASCADE = 0x00000001L; + const SQL_SFKD_NO_ACTION = 0x00000002L; + const SQL_SFKD_SET_DEFAULT = 0x00000004L; + const SQL_SFKD_SET_NULL = 0x00000008L; + const SQL_SFKU_CASCADE = 0x00000001L; + const SQL_SFKU_NO_ACTION = 0x00000002L; + const SQL_SFKU_SET_DEFAULT = 0x00000004L; + const SQL_SFKU_SET_NULL = 0x00000008L; + const SQL_SG_DELETE_TABLE = 0x00000020L; + const SQL_SG_INSERT_COLUMN = 0x00000080L; + const SQL_SG_INSERT_TABLE = 0x00000040L; + const SQL_SG_REFERENCES_COLUMN = 0x00000200L; + const SQL_SG_REFERENCES_TABLE = 0x00000100L; + const SQL_SG_SELECT_TABLE = 0x00000400L; + const SQL_SG_UPDATE_COLUMN = 0x00001000L; + const SQL_SG_UPDATE_TABLE = 0x00000800L; + const SQL_SG_USAGE_ON_CHARACTER_SET = 0x00000002L; + const SQL_SG_USAGE_ON_COLLATION = 0x00000004L; + const SQL_SG_USAGE_ON_DOMAIN = 0x00000001L; + const SQL_SG_USAGE_ON_TRANSLATION = 0x00000008L; + const SQL_SG_WITH_GRANT_OPTION = 0x00000010L; + const SQL_SNVF_BIT_LENGTH = 0x00000001L; + const SQL_SNVF_CHAR_LENGTH = 0x00000002L; + const SQL_SNVF_CHARACTER_LENGTH = 0x00000004L; + const SQL_SNVF_EXTRACT = 0x00000008L; + const SQL_SNVF_OCTET_LENGTH = 0x00000010L; + const SQL_SNVF_POSITION = 0x00000020L; + const SQL_SP_BETWEEN = 0x00000800L; + const SQL_SP_COMPARISON = 0x00001000L; + const SQL_SP_EXISTS = 0x00000001L; + const SQL_SP_IN = 0x00000400L; + const SQL_SP_ISNOTNULL = 0x00000002L; + const SQL_SP_ISNULL = 0x00000004L; + const SQL_SP_LIKE = 0x00000200L; + const SQL_SP_MATCH_FULL = 0x00000008L; + const SQL_SP_MATCH_PARTIAL = 0x00000010L; + const SQL_SP_MATCH_UNIQUE_FULL = 0x00000020L; + const SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040L; + const SQL_SP_OVERLAPS = 0x00000080L; + const SQL_SP_QUANTIFIED_COMPARISON = 0x00002000L; + const SQL_SP_UNIQUE = 0x00000100L; + const SQL_SQL_CONFORMANCE = 118; + const SQL_SQL92_DATETIME_FUNCTIONS = 155; + const SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; + const SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; + const SQL_SQL92_GRANT = 158; + const SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; + const SQL_SQL92_PREDICATES = 160; + const SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; + const SQL_SQL92_REVOKE = 162; + const SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; + const SQL_SQL92_STRING_FUNCTIONS = 164; + const SQL_SQL92_VALUE_EXPRESSIONS = 165; + const SQL_SR_CASCADE = 0x00000020L; + const SQL_SR_DELETE_TABLE = 0x00000080L; + const SQL_SR_GRANT_OPTION_FOR = 0x00000010L; + const SQL_SR_INSERT_COLUMN = 0x00000200L; + const SQL_SR_INSERT_TABLE = 0x00000100L; + const SQL_SR_REFERENCES_COLUMN = 0x00000800L; + const SQL_SR_REFERENCES_TABLE = 0x00000400L; + const SQL_SR_RESTRICT = 0x00000040L; + const SQL_SR_SELECT_TABLE = 0x00001000L; + const SQL_SR_UPDATE_COLUMN = 0x00004000L; + const SQL_SR_UPDATE_TABLE = 0x00002000L; + const SQL_SR_USAGE_ON_CHARACTER_SET = 0x00000002L; + const SQL_SR_USAGE_ON_COLLATION = 0x00000004L; + const SQL_SR_USAGE_ON_DOMAIN = 0x00000001L; + const SQL_SR_USAGE_ON_TRANSLATION = 0x00000008L; + const SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001L; + const SQL_SRJO_CROSS_JOIN = 0x00000002L; + const SQL_SRJO_EXCEPT_JOIN = 0x00000004L; + const SQL_SRJO_FULL_OUTER_JOIN = 0x00000008L; + const SQL_SRJO_INNER_JOIN = 0x00000010L; + const SQL_SRJO_INTERSECT_JOIN = 0x00000020L; + const SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040L; + const SQL_SRJO_NATURAL_JOIN = 0x00000080L; + const SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100L; + const SQL_SRJO_UNION_JOIN = 0x00000200L; + const SQL_SRVC_DEFAULT = 0x00000004L; + const SQL_SRVC_NULL = 0x00000002L; + const SQL_SRVC_ROW_SUBQUERY = 0x00000008L; + const SQL_SRVC_VALUE_EXPRESSION = 0x00000001L; + const SQL_SSF_CONVERT = 0x00000001L; + const SQL_SSF_LOWER = 0x00000002L; + const SQL_SSF_SUBSTRING = 0x00000008L; + const SQL_SSF_TRANSLATE = 0x00000010L; + const SQL_SSF_TRIM_BOTH = 0x00000020L; + const SQL_SSF_TRIM_LEADING = 0x00000040L; + const SQL_SSF_TRIM_TRAILING = 0x00000080L; + const SQL_SSF_UPPER = 0x00000004L; + const SQL_STANDARD_CLI_CONFORMANCE = 166; + const SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; + const SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; + const SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; + const SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; + const SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; + const SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; + const SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; + const SQL_SVE_CASE = 0x00000001L; + const SQL_SVE_CAST = 0x00000002L; + const SQL_SVE_COALESCE = 0x00000004L; + const SQL_SVE_NULLIF = 0x00000008L; + const SQL_UB_FIXED = SQL_UB_ON; + const SQL_UB_VARIABLE = 2UL; + const SQL_UNION_STATEMENT = SQL_UNION; + const SQL_UPDATE_BY_BOOKMARK = 5; + const SQL_US_UNION = SQL_U_UNION; + const SQL_US_UNION_ALL = SQL_U_UNION_ALL; +}//[Yes] #endif /* ODBCVER >= 0x300 */ +static if (ODBCVER >= 0x0350) { + const SQL_DESC_ROWVER = 35; + const SQL_GUID = -11; + const SQL_C_GUID = SQL_GUID; + //#ifdef ODBC_STD + //#define SQLAllocHandle SQLAllocHandleStd + //#define SQLAllocEnv(p) SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, p) + //#define SQL_YEAR SQL_CODE_YEAR + //#define SQL_MONTH SQL_CODE_MONTH + //#define SQL_DAY SQL_CODE_DAY + //#define SQL_HOUR SQL_CODE_HOUR + //#define SQL_MINUTE SQL_CODE_MINUTE + //#define SQL_SECOND SQL_CODE_SECOND + //#define SQL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH + //#define SQL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR + //#define SQL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE + //#define SQL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND + //#define SQL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE + //#define SQL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND + //#define SQL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND + //#endif /* ODBC_STD */ +}//#endif /* ODBCVER >= 0x0350 */ + +//static if (ODBCVER >= 0x0351) { +const SQL_ATTR_ANSI_APP=115; +const SQL_AA_TRUE=1L; +const SQL_AA_FALSE=0L; +//}//[Yes] #endif + +const TRACE_VERSION=1000; +const TRACE_ON=1; + +const char [] SQL_ODBC_KEYWORDS = + "ABSOLUTE, ACTION, ADA, ADD, ALL, ALLOCATE, ALTER, AND, ANY, ARE, AS, " + ~ "ASC, ASSERTION, AT, AUTHORIZATION, AVG, " + ~ "BEGIN, BETWEEN, BIT, BIT_LENGTH, BOTH, BY, CASCADE, CASCADED, CASE, CAST, CATALOG, " + ~ "CHAR, CHAR_LENGTH, CHARACTER, CHARACTER_LENGTH, CHECK, CLOSE, COALESCE, " + ~ "COLLATE, COLLATION, COLUMN, COMMIT, CONNECT, CONNECTION, CONSTRAINT, " + ~ "CONSTRAINTS, CONTINUE, CONVERT, CORRESPONDING, COUNT, CREATE, CROSS, CURRENT, " + ~ "CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, " + ~ "DATE, DAY, DEALLOCATE, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, " + ~ "DEFERRED, DELETE, DESC, DESCRIBE, DESCRIPTOR, DIAGNOSTICS, DISCONNECT, " + ~ "DISTINCT, DOMAIN, DOUBLE, DROP, " + ~ "ELSE, END, END-EXEC, ESCAPE, EXCEPT, EXCEPTION, EXEC, EXECUTE, " + ~ "EXISTS, EXTERNAL, EXTRACT, " + ~ "FALSE, FETCH, FIRST, FLOAT, FOR, FOREIGN, FORTRAN, FOUND, FROM, FULL, " + ~ "GET, GLOBAL, GO, GOTO, GRANT, GROUP, HAVING, HOUR, " + ~ "IDENTITY, IMMEDIATE, IN, INCLUDE, INDEX, INDICATOR, INITIALLY, INNER, " + ~ "INPUT, INSENSITIVE, INSERT, INT, INTEGER, INTERSECT, INTERVAL, INTO, IS, ISOLATION, " + ~ "JOIN, KEY, LANGUAGE, LAST, LEADING, LEFT, LEVEL, LIKE, LOCAL, LOWER, " + ~ "MATCH, MAX, MIN, MINUTE, MODULE, MONTH, " + ~ "NAMES, NATIONAL, NATURAL, NCHAR, NEXT, NO, NONE, NOT, NULL, NULLIF, NUMERIC, " + ~ "OCTET_LENGTH, OF, ON, ONLY, OPEN, OPTION, OR, ORDER, OUTER, OUTPUT, OVERLAPS, " + ~ "PAD, PARTIAL, PASCAL, PLI, POSITION, PRECISION, PREPARE, PRESERVE, " + ~ "PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC, " + ~ "READ, REAL, REFERENCES, RELATIVE, RESTRICT, REVOKE, RIGHT, ROLLBACK, ROWS" + ~ "SCHEMA, SCROLL, SECOND, SECTION, SELECT, SESSION, SESSION_USER, SET, SIZE, " + ~ "SMALLINT, SOME, SPACE, SQL, SQLCA, SQLCODE, SQLERROR, SQLSTATE, SQLWARNING, " + ~ "SUBSTRING, SUM, SYSTEM_USER, " + ~ "TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, " + ~ "TO, TRAILING, TRANSACTION, TRANSLATE, TRANSLATION, TRIM, TRUE, " + ~ "UNION, UNIQUE, UNKNOWN, UPDATE, UPPER, USAGE, USER, USING, " + ~ "VALUE, VALUES, VARCHAR, VARYING, VIEW, WHEN, WHENEVER, WHERE, WITH, WORK, WRITE, " + ~ "YEAR, ZONE"; +extern (Windows) { + SQLRETURN SQLDriverConnect(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLBrowseConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLColumnPrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLColAttributes(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLDescribeParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLExtendedFetch(SQLHSTMT, SQLUSMALLINT, SQLINTEGER, SQLUINTEGER*, SQLUSMALLINT*); + SQLRETURN SQLForeignKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLMoreResults(SQLHSTMT); + SQLRETURN SQLNativeSql(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLNumParams(SQLHSTMT, SQLSMALLINT*); + SQLRETURN SQLParamOptions(SQLHSTMT, SQLUINTEGER, SQLUINTEGER*); + SQLRETURN SQLPrimaryKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedures(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLSetPos(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTablePrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDrivers(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLBindParameter(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLSetScrollOptions(SQLHSTMT, SQLUSMALLINT, SQLLEN, SQLUSMALLINT);/* deprecated */ + DWORD ODBCGetTryWaitValue(); + BOOL ODBCSetTryWaitValue(DWORD); + RETCODE TraceOpenLogFile(LPWSTR, LPWSTR, DWORD); + RETCODE TraceCloseLogFile(); + VOID TraceReturn(RETCODE, RETCODE); + DWORD TraceVersion(); + //static if (ODBCVER >= 0x0300) { + SQLRETURN SQLBulkOperations(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLAllocHandleStd( SQLSMALLINT, SQLHANDLE, SQLHANDLE*); + //} +} diff --git a/src/core/sys/windows/sqltypes.d b/src/core/sys/windows/sqltypes.d new file mode 100644 index 0000000000..4d3285c90e --- /dev/null +++ b/src/core/sys/windows/sqltypes.d @@ -0,0 +1,142 @@ +/***********************************************************************\ +* sqltypes.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.sqltypes; + +/* Conversion notes: + It's assumed that ODBC >= 0x0300. +*/ + +private import win32.windef; +private import win32.basetyps; // for GUID + +alias byte SCHAR, SQLSCHAR; +alias int SDWORD, SLONG, SQLINTEGER; +alias short SWORD, SSHORT, RETCODE, SQLSMALLINT; +alias ULONG UDWORD; +alias USHORT UWORD, SQLUSMALLINT; +alias double SDOUBLE, LDOUBLE; +alias float SFLOAT; +alias PVOID PTR, HENV, HDBC, HSTMT, SQLPOINTER; +alias UCHAR SQLCHAR; +// #ifndef _WIN64 +alias UDWORD SQLUINTEGER; +// #endif + +//static if (ODBCVER >= 0x0300) { +alias TypeDef!(HANDLE) SQLHANDLE; +alias SQLHANDLE SQLHENV, SQLHDBC, SQLHSTMT, SQLHDESC; +/* +} else { +alias void* SQLHENV; +alias void* SQLHDBC; +alias void* SQLHSTMT; +} +*/ +alias SQLSMALLINT SQLRETURN; +alias HWND SQLHWND; +alias ULONG BOOKMARK; + +alias SQLINTEGER SQLLEN, SQLROWOFFSET; +alias SQLUINTEGER SQLROWCOUNT, SQLULEN; +alias DWORD SQLTRANSID; +alias SQLUSMALLINT SQLSETPOSIROW; +alias wchar SQLWCHAR; + +version(Unicode) { + alias SQLWCHAR SQLTCHAR; +} else { + alias SQLCHAR SQLTCHAR; +} +//static if (ODBCVER >= 0x0300) { +alias ubyte SQLDATE, SQLDECIMAL; +alias double SQLDOUBLE, SQLFLOAT; +alias ubyte SQLNUMERIC; +alias float SQLREAL; +alias ubyte SQLTIME, SQLTIMESTAMP, SQLVARCHAR; +alias long ODBCINT64, SQLBIGINT; +alias ulong SQLUBIGINT; +//} + +struct DATE_STRUCT { + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; +} + +struct TIME_STRUCT { + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; +} + +struct TIMESTAMP_STRUCT { + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; + SQLUINTEGER fraction; +} + +//static if (ODBCVER >= 0x0300) { +alias DATE_STRUCT SQL_DATE_STRUCT; +alias TIME_STRUCT SQL_TIME_STRUCT; +alias TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT; + +enum SQLINTERVAL { + SQL_IS_YEAR = 1, + SQL_IS_MONTH, + SQL_IS_DAY, + SQL_IS_HOUR, + SQL_IS_MINUTE, + SQL_IS_SECOND, + SQL_IS_YEAR_TO_MONTH, + SQL_IS_DAY_TO_HOUR, + SQL_IS_DAY_TO_MINUTE, + SQL_IS_DAY_TO_SECOND, + SQL_IS_HOUR_TO_MINUTE, + SQL_IS_HOUR_TO_SECOND, + SQL_IS_MINUTE_TO_SECOND +} + +struct SQL_YEAR_MONTH_STRUCT { + SQLUINTEGER year; + SQLUINTEGER month; +} + +struct SQL_DAY_SECOND_STRUCT { + SQLUINTEGER day; + SQLUINTEGER hour; + SQLUINTEGER minute; + SQLUINTEGER second; + SQLUINTEGER fraction; +} + +struct SQL_INTERVAL_STRUCT { + SQLINTERVAL interval_type; + SQLSMALLINT interval_sign; + union _intval { + SQL_YEAR_MONTH_STRUCT year_month; + SQL_DAY_SECOND_STRUCT day_second; + } + _intval intval; +} + +const SQL_MAX_NUMERIC_LEN = 16; + +struct SQL_NUMERIC_STRUCT { + SQLCHAR precision; + SQLSCHAR scale; + SQLCHAR sign; + SQLCHAR[SQL_MAX_NUMERIC_LEN] val; +} +// } ODBCVER >= 0x0300 +alias GUID SQLGUID; diff --git a/src/core/sys/windows/sqlucode.d b/src/core/sys/windows/sqlucode.d new file mode 100644 index 0000000000..74dba183fc --- /dev/null +++ b/src/core/sys/windows/sqlucode.d @@ -0,0 +1,156 @@ +/***********************************************************************\ +* sqlucode.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.sqlucode; + +private import win32.sqlext; + +const SQL_WCHAR = -8; +const SQL_WVARCHAR = -9; +const SQL_WLONGVARCHAR = -10; +const SQL_C_WCHAR = SQL_WCHAR; + +const SQL_SQLSTATE_SIZEW = 10; +version(Unicode) { + const SQL_C_TCHAR = SQL_C_WCHAR; +} else { + const SQL_C_TCHAR = SQL_C_CHAR; +} + +// Moved from sqlext +static if (ODBCVER <= 0x0300) { + const SQL_UNICODE = -95; + const SQL_UNICODE_VARCHAR = -96; + const SQL_UNICODE_LONGVARCHAR = -97; + const SQL_UNICODE_CHAR = SQL_UNICODE; +} else { + const SQL_UNICODE = SQL_WCHAR; + const SQL_UNICODE_VARCHAR = SQL_WVARCHAR; + const SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR; + const SQL_UNICODE_CHAR = SQL_WCHAR; +} + +extern (Windows) { + SQLRETURN SQLBrowseConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLBrowseConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLColAttributeA(SQLHSTMT, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLColAttributeW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLColAttributesA(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLColAttributesW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLColumnPrivilegesA( SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnPrivilegesW( SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLDataSourcesA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDataSourcesW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDescribeColA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDescribeColW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDriverConnectA(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLDriverConnectW(SQLHDBC, SQLHWND, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLDriversA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDriversW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLErrorA(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLErrorW(SQLHENV, SQLHDBC, SQLHSTMT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLExecDirectA(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLExecDirectW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); + SQLRETURN SQLForeignKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLForeignKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLGetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetInfoA(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetInfoW(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetTypeInfoA(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLGetTypeInfoW(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLNativeSqlA(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLNativeSqlW(SQLHDBC, SQLWCHAR*, SQLINTEGER, SQLWCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLPrepareA(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLPrepareW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); + SQLRETURN SQLPrimaryKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLPrimaryKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLProceduresA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProceduresW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLSetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLSetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLSpecialColumnsA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLSpecialColumnsW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatisticsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatisticsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTablePrivilegesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTablePrivilegesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLTablesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTablesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + static if (ODBCVER >= 0x0300) { + SQLRETURN SQLGetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLGetDescRecA(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDescRecW(SQLHDESC, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDiagFieldA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagFieldW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRecA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRecW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + } // #endif /* (ODBCVER >= 0x0300) */ +} + +version (Unicode) { + alias SQLBrowseConnectW SQLBrowseConnect; + alias SQLColAttributeW SQLColAttribute; + alias SQLColAttributesW SQLColAttributes; + alias SQLColumnPrivilegesW SQLColumnPrivileges; + alias SQLColumnsW SQLColumns; + alias SQLConnectW SQLConnect; + alias SQLDataSourcesW SQLDataSources; + alias SQLDescribeColW SQLDescribeCol; + alias SQLDriverConnectW SQLDriverConnect; + alias SQLDriversW SQLDrivers; + alias SQLErrorW SQLError; + alias SQLExecDirectW SQLExecDirect; + alias SQLForeignKeysW SQLForeignKeys; + alias SQLGetConnectAttrW SQLGetConnectAttr; + alias SQLGetConnectOptionW SQLGetConnectOption; + alias SQLGetCursorNameW SQLGetCursorName; + alias SQLGetDescFieldW SQLGetDescField; + alias SQLGetDescRecW SQLGetDescRec; + alias SQLGetDiagFieldW SQLGetDiagField; + alias SQLGetDiagRecW SQLGetDiagRec; + alias SQLGetInfoW SQLGetInfo; + alias SQLGetStmtAttrW SQLGetStmtAttr; + alias SQLGetTypeInfoW SQLGetTypeInfo; + alias SQLNativeSqlW SQLNativeSql; + alias SQLPrepareW SQLPrepare; + alias SQLPrimaryKeysW SQLPrimaryKeys; + alias SQLProcedureColumnsW SQLProcedureColumns; + alias SQLProceduresW SQLProcedures; + alias SQLSetConnectAttrW SQLSetConnectAttr; + alias SQLSetConnectOptionW SQLSetConnectOption; + alias SQLSetCursorNameW SQLSetCursorName; + alias SQLSetDescFieldW SQLSetDescField; + alias SQLSetStmtAttrW SQLSetStmtAttr; + alias SQLSpecialColumnsW SQLSpecialColumns; + alias SQLStatisticsW SQLStatistics; + alias SQLTablePrivilegesW SQLTablePrivileges; + alias SQLTablesW SQLTables; +} diff --git a/src/core/sys/windows/sspi.d b/src/core/sys/windows/sspi.d new file mode 100644 index 0000000000..0859c13a7d --- /dev/null +++ b/src/core/sys/windows/sspi.d @@ -0,0 +1,380 @@ +/***********************************************************************\ +* sspi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Ellery Newcomer * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.sspi; + +import win32.windef; +import win32.ntdef; +import win32.w32api; +import win32.security; +import win32.ntsecapi; +import win32.subauth; + +enum :ULONG{ + SECPKG_CRED_INBOUND = 1, + SECPKG_CRED_OUTBOUND = 2, + SECPKG_CRED_BOTH = (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND), + SECPKG_CRED_ATTR_NAMES = 1, +} + +enum :ULONG{ + SECPKG_FLAG_INTEGRITY = 1, + SECPKG_FLAG_PRIVACY = 2, + SECPKG_FLAG_TOKEN_ONLY = 4, + SECPKG_FLAG_DATAGRAM = 8, + SECPKG_FLAG_CONNECTION = 16, + SECPKG_FLAG_MULTI_REQUIRED = 32, + SECPKG_FLAG_CLIENT_ONLY = 64, + SECPKG_FLAG_EXTENDED_ERROR = 128, + SECPKG_FLAG_IMPERSONATION = 256, + SECPKG_FLAG_ACCEPT_WIN32_NAME = 512, + SECPKG_FLAG_STREAM = 1024, +} + +enum :ULONG{ + SECPKG_ATTR_AUTHORITY = 6, + SECPKG_ATTR_CONNECTION_INFO = 90, + SECPKG_ATTR_ISSUER_LIST = 80, + SECPKG_ATTR_ISSUER_LIST_EX = 89, + SECPKG_ATTR_KEY_INFO = 5, + SECPKG_ATTR_LIFESPAN = 2, + SECPKG_ATTR_LOCAL_CERT_CONTEXT = 84, + SECPKG_ATTR_LOCAL_CRED = 82, + SECPKG_ATTR_NAMES = 1, + SECPKG_ATTR_PROTO_INFO = 7, + SECPKG_ATTR_REMOTE_CERT_CONTEXT = 83, + SECPKG_ATTR_REMOTE_CRED = 81, + SECPKG_ATTR_SIZES = 0, + SECPKG_ATTR_STREAM_SIZES = 4, +} + +enum :ULONG{ + SECBUFFER_EMPTY = 0, + SECBUFFER_DATA = 1, + SECBUFFER_TOKEN = 2, + SECBUFFER_PKG_PARAMS = 3, + SECBUFFER_MISSING = 4, + SECBUFFER_EXTRA = 5, + SECBUFFER_STREAM_TRAILER = 6, + SECBUFFER_STREAM_HEADER = 7, + SECBUFFER_PADDING = 9, + SECBUFFER_STREAM = 10, + SECBUFFER_READONLY = 0x80000000, + SECBUFFER_ATTRMASK = 0xf0000000, +} + +enum UNISP_NAME_A = "Microsoft Unified Security Protocol Provider"; +enum UNISP_NAME_W = "Microsoft Unified Security Protocol Provider"w; +enum SECBUFFER_VERSION = 0; + +alias UNICODE_STRING SECURITY_STRING; +alias UNICODE_STRING* PSECURITY_STRING; + +extern(Windows): + +struct SecHandle { + ULONG_PTR dwLower; + ULONG_PTR dwUpper; +} +alias SecHandle* PSecHandle; +struct SecBuffer { + ULONG cbBuffer; + ULONG BufferType; + PVOID pvBuffer; +} +alias SecBuffer* PSecBuffer; +alias SecHandle CredHandle; +alias PSecHandle PCredHandle; +alias SecHandle CtxtHandle; +alias PSecHandle PCtxtHandle; +struct SECURITY_INTEGER { + uint LowPart; + int HighPart; +} +alias SECURITY_INTEGER TimeStamp; +alias SECURITY_INTEGER* PTimeStamp; +struct SecBufferDesc { + ULONG ulVersion; + ULONG cBuffers; + PSecBuffer pBuffers; +} +alias SecBufferDesc* PSecBufferDesc; +struct SecPkgContext_StreamSizes { + ULONG cbHeader; + ULONG cbTrailer; + ULONG cbMaximumMessage; + ULONG cBuffers; + ULONG cbBlockSize; +} +alias SecPkgContext_StreamSizes* PSecPkgContext_StreamSizes; +struct SecPkgContext_Sizes { + ULONG cbMaxToken; + ULONG cbMaxSignature; + ULONG cbBlockSize; + ULONG cbSecurityTrailer; +} +alias SecPkgContext_Sizes* PSecPkgContext_Sizes; +struct SecPkgContext_AuthorityW { + SEC_WCHAR* sAuthorityName; +} +alias SecPkgContext_AuthorityW* PSecPkgContext_AuthorityW; +struct SecPkgContext_AuthorityA { + SEC_CHAR* sAuthorityName; +} +alias SecPkgContext_AuthorityA* PSecPkgContext_AuthorityA; +struct SecPkgContext_KeyInfoW { + SEC_WCHAR* sSignatureAlgorithmName; + SEC_WCHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; +} +alias SecPkgContext_KeyInfoW* PSecPkgContext_KeyInfoW; +struct SecPkgContext_KeyInfoA { + SEC_CHAR* sSignatureAlgorithmName; + SEC_CHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; +} +alias SecPkgContext_KeyInfoA* PSecPkgContext_KeyInfoA; +struct SecPkgContext_LifeSpan { + TimeStamp tsStart; + TimeStamp tsExpiry; +} +alias SecPkgContext_LifeSpan* PSecPkgContext_LifeSpan; +struct SecPkgContext_NamesW { + SEC_WCHAR* sUserName; +} +alias SecPkgContext_NamesW* PSecPkgContext_NamesW; +struct SecPkgContext_NamesA { + SEC_CHAR* sUserName; +} +alias SecPkgContext_NamesA* PSecPkgContext_NamesA; +struct SecPkgInfoW { + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_WCHAR* Name; + SEC_WCHAR* Comment; +} +alias SecPkgInfoW* PSecPkgInfoW; +struct SecPkgInfoA { + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_CHAR* Name; + SEC_CHAR* Comment; +} +alias SecPkgInfoA* PSecPkgInfoA; +/* supported only in win2k+, so it should be a PSecPkgInfoW */ +/* PSDK does not say it has ANSI/Unicode versions */ +struct SecPkgContext_PackageInfo { + PSecPkgInfoW PackageInfo; +} +alias SecPkgContext_PackageInfo* PSecPkgContext_PackageInfo; +struct SecPkgCredentials_NamesW { + SEC_WCHAR* sUserName; +} +alias SecPkgCredentials_NamesW* PSecPkgCredentials_NamesW; +struct SecPkgCredentials_NamesA { + SEC_CHAR* sUserName; +} +alias SecPkgCredentials_NamesA* PSecPkgCredentials_NamesA; + +/* TODO: missing type in SDK */ +alias void function() SEC_GET_KEY_FN; + +alias SECURITY_STATUS function(PULONG,PSecPkgInfoW*) ENUMERATE_SECURITY_PACKAGES_FN_W; +alias SECURITY_STATUS function(PULONG,PSecPkgInfoA*) ENUMERATE_SECURITY_PACKAGES_FN_A; +alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_W; +alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_A; +alias SECURITY_STATUS function(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_W; +alias SECURITY_STATUS function(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_A; +alias SECURITY_STATUS function(PCredHandle) FREE_CREDENTIALS_HANDLE_FN; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_W; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_A; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) ACCEPT_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) COMPLETE_AUTH_TOKEN_FN; +alias SECURITY_STATUS function(PCtxtHandle) DELETE_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_W; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_W; +alias SECURITY_STATUS function(PCtxtHandle) IMPERSONATE_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle) REVERT_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) MAKE_SIGNATURE_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) VERIFY_SIGNATURE_FN; +alias SECURITY_STATUS function(PVOID) FREE_CONTEXT_BUFFER_FN; +alias SECURITY_STATUS function(SEC_CHAR*,PSecPkgInfoA*) QUERY_SECURITY_PACKAGE_INFO_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,HANDLE*) QUERY_SECURITY_CONTEXT_TOKEN_FN; +alias SECURITY_STATUS function(SEC_WCHAR*,PSecPkgInfoW*) QUERY_SECURITY_PACKAGE_INFO_FN_W; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) ENCRYPT_MESSAGE_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) DECRYPT_MESSAGE_FN; + +/* No, it really is FreeCredentialsHandle, see the thread beginning + * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a + * discovery discussion. */ +struct SecurityFunctionTableW{ + uint dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; + QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; + ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW; + QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; + void* Reserved3; + void* Reserved4; + void* Reserved5; + void* Reserved6; + void* Reserved7; + void* Reserved8; + QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} +alias SecurityFunctionTableW* PSecurityFunctionTableW; +struct SecurityFunctionTableA{ + uint dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; + QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; + ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA; + QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; + void* Reserved3; + void* Reserved4; + void* Unknown1; + void* Unknown2; + void* Unknown3; + void* Unknown4; + void* Unknown5; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} +alias SecurityFunctionTableA* PSecurityFunctionTableA; +alias PSecurityFunctionTableA function() INIT_SECURITY_INTERFACE_A; +alias PSecurityFunctionTableW function() INIT_SECURITY_INTERFACE_W; + +SECURITY_STATUS FreeCredentialsHandle(PCredHandle); +SECURITY_STATUS EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*); +SECURITY_STATUS EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*); +SECURITY_STATUS AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +SECURITY_STATUS AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +SECURITY_STATUS AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS FreeContextBuffer(PVOID); +SECURITY_STATUS QueryContextAttributesA(PCtxtHandle,ULONG,PVOID); +SECURITY_STATUS QueryContextAttributesW(PCtxtHandle,ULONG,PVOID); +SECURITY_STATUS QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID); +SECURITY_STATUS QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID); +static if(_WIN32_WINNT >= 0x500){ + SECURITY_STATUS QuerySecurityContextToken(PCtxtHandle,HANDLE*); +} +SECURITY_STATUS DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +SECURITY_STATUS EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +SECURITY_STATUS DeleteSecurityContext(PCtxtHandle); +SECURITY_STATUS CompleteAuthToken(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ApplyControlTokenA(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ApplyControlTokenW(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ImpersonateSecurityContext(PCtxtHandle); +SECURITY_STATUS RevertSecurityContext(PCtxtHandle); +SECURITY_STATUS MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +SECURITY_STATUS VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +SECURITY_STATUS QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*); +SECURITY_STATUS QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*); +PSecurityFunctionTableA InitSecurityInterfaceA(); +PSecurityFunctionTableW InitSecurityInterfaceW(); + +version(Unicode) { + alias UNISP_NAME_W UNISP_NAME; + alias SecPkgInfoW SecPkgInfo; + alias PSecPkgInfoW PSecPkgInfo; + alias SecPkgCredentials_NamesW SecPkgCredentials_Names; + alias PSecPkgCredentials_NamesW PSecPkgCredentials_Names; + alias SecPkgContext_AuthorityW SecPkgContext_Authority; + alias PSecPkgContext_AuthorityW PSecPkgContext_Authority; + alias SecPkgContext_KeyInfoW SecPkgContext_KeyInfo; + alias PSecPkgContext_KeyInfoW PSecPkgContext_KeyInfo; + alias SecPkgContext_NamesW SecPkgContext_Names; + alias PSecPkgContext_NamesW PSecPkgContext_Names; + alias SecurityFunctionTableW SecurityFunctionTable; + alias PSecurityFunctionTableW PSecurityFunctionTable; + alias AcquireCredentialsHandleW AcquireCredentialsHandle; + alias EnumerateSecurityPackagesW EnumerateSecurityPackages; + alias InitializeSecurityContextW InitializeSecurityContext; + alias QueryContextAttributesW QueryContextAttributes; + alias QueryCredentialsAttributesW QueryCredentialsAttributes; + alias QuerySecurityPackageInfoW QuerySecurityPackageInfo; + alias ApplyControlTokenW ApplyControlToken; + alias ENUMERATE_SECURITY_PACKAGES_FN_W ENUMERATE_SECURITY_PACKAGES_FN; + alias QUERY_CREDENTIALS_ATTRIBUTES_FN_W QUERY_CREDENTIALS_ATTRIBUTES_FN; + alias ACQUIRE_CREDENTIALS_HANDLE_FN_W ACQUIRE_CREDENTIALS_HANDLE_FN; + alias INITIALIZE_SECURITY_CONTEXT_FN_W INITIALIZE_SECURITY_CONTEXT_FN; + alias APPLY_CONTROL_TOKEN_FN_W APPLY_CONTROL_TOKEN_FN; + alias QUERY_CONTEXT_ATTRIBUTES_FN_W QUERY_CONTEXT_ATTRIBUTES_FN; + alias QUERY_SECURITY_PACKAGE_INFO_FN_W QUERY_SECURITY_PACKAGE_INFO_FN; + alias INIT_SECURITY_INTERFACE_W INIT_SECURITY_INTERFACE; +}else{ + alias UNISP_NAME_A UNISP_NAME; + alias SecPkgInfoA SecPkgInfo; + alias PSecPkgInfoA PSecPkgInfo; + alias SecPkgCredentials_NamesA SecPkgCredentials_Names; + alias PSecPkgCredentials_NamesA PSecPkgCredentials_Names; + alias SecPkgContext_AuthorityA SecPkgContext_Authority; + alias PSecPkgContext_AuthorityA PSecPkgContext_Authority; + alias SecPkgContext_KeyInfoA SecPkgContext_KeyInfo; + alias PSecPkgContext_KeyInfoA PSecPkgContext_KeyInfo; + alias SecPkgContext_NamesA SecPkgContext_Names; + alias PSecPkgContext_NamesA PSecPkgContext_Names; + alias SecurityFunctionTableA SecurityFunctionTable; + alias PSecurityFunctionTableA PSecurityFunctionTable; + alias AcquireCredentialsHandleA AcquireCredentialsHandle; + alias EnumerateSecurityPackagesA EnumerateSecurityPackages; + alias InitializeSecurityContextA InitializeSecurityContext; + alias QueryContextAttributesA QueryContextAttributes; + alias QueryCredentialsAttributesA QueryCredentialsAttributes; + alias QuerySecurityPackageInfoA QuerySecurityPackageInfo; + alias ApplyControlTokenA ApplyControlToken; + alias ENUMERATE_SECURITY_PACKAGES_FN_A ENUMERATE_SECURITY_PACKAGES_FN; + alias QUERY_CREDENTIALS_ATTRIBUTES_FN_A QUERY_CREDENTIALS_ATTRIBUTES_FN; + alias ACQUIRE_CREDENTIALS_HANDLE_FN_A ACQUIRE_CREDENTIALS_HANDLE_FN; + alias INITIALIZE_SECURITY_CONTEXT_FN_A INITIALIZE_SECURITY_CONTEXT_FN; + alias APPLY_CONTROL_TOKEN_FN_A APPLY_CONTROL_TOKEN_FN; + alias QUERY_CONTEXT_ATTRIBUTES_FN_A QUERY_CONTEXT_ATTRIBUTES_FN; + alias QUERY_SECURITY_PACKAGE_INFO_FN_A QUERY_SECURITY_PACKAGE_INFO_FN; + alias INIT_SECURITY_INTERFACE_A INIT_SECURITY_INTERFACE; +} + diff --git a/src/core/sys/windows/subauth.d b/src/core/sys/windows/subauth.d new file mode 100644 index 0000000000..689e89fba3 --- /dev/null +++ b/src/core/sys/windows/subauth.d @@ -0,0 +1,275 @@ +/***********************************************************************\ +* subauth.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.subauth; + +private import win32.ntdef, win32.windef; + +/+ +alias LONG NTSTATUS; +alias NTSTATUS* PNTSTATUS; ++/ + +enum : ULONG { + MSV1_0_PASSTHRU = 1, + MSV1_0_GUEST_LOGON = 2 +} + +// USER_ALL_INFORMATION.WhichFields (Undocumented) +const ULONG + MSV1_0_VALIDATION_LOGOFF_TIME = 1, + MSV1_0_VALIDATION_KICKOFF_TIME = 2, + MSV1_0_VALIDATION_LOGON_SERVER = 4, + MSV1_0_VALIDATION_LOGON_DOMAIN = 8, + MSV1_0_VALIDATION_SESSION_KEY = 16, + MSV1_0_VALIDATION_USER_FLAGS = 32, + MSV1_0_VALIDATION_USER_ID = 64; + +// ?ActionsPerformed? (Undocumented) +const MSV1_0_SUBAUTH_ACCOUNT_DISABLED = 1; +const MSV1_0_SUBAUTH_PASSWORD = 2; +const MSV1_0_SUBAUTH_WORKSTATIONS = 4; +const MSV1_0_SUBAUTH_LOGON_HOURS = 8; +const MSV1_0_SUBAUTH_ACCOUNT_EXPIRY = 16; +const MSV1_0_SUBAUTH_PASSWORD_EXPIRY = 32; +const MSV1_0_SUBAUTH_ACCOUNT_TYPE = 64; +const MSV1_0_SUBAUTH_LOCKOUT = 128; + +const NEXT_FREE_ACCOUNT_CONTROL_BIT = 131072; + +const SAM_DAYS_PER_WEEK = 7; +const SAM_HOURS_PER_WEEK = 168; +const SAM_MINUTES_PER_WEEK = 10080; + +enum : NTSTATUS { + STATUS_SUCCESS = 0, + STATUS_INVALID_INFO_CLASS = 0xC0000003, + STATUS_NO_SUCH_USER = 0xC0000064, + STATUS_WRONG_PASSWORD = 0xC000006A, + STATUS_PASSWORD_RESTRICTION = 0xC000006C, + STATUS_LOGON_FAILURE = 0xC000006D, + STATUS_ACCOUNT_RESTRICTION = 0xC000006E, + STATUS_INVALID_LOGON_HOURS = 0xC000006F, + STATUS_INVALID_WORKSTATION = 0xC0000070, + STATUS_PASSWORD_EXPIRED = 0xC0000071, + STATUS_ACCOUNT_DISABLED = 0xC0000072, + STATUS_INSUFFICIENT_RESOURCES = 0xC000009A, + STATUS_ACCOUNT_EXPIRED = 0xC0000193, + STATUS_PASSWORD_MUST_CHANGE = 0xC0000224, + STATUS_ACCOUNT_LOCKED_OUT = 0xC0000234 +} + +// Note: undocumented in MSDN +// USER_ALL_INFORMATION.UserAccountControl +const ULONG + USER_ACCOUNT_DISABLED = 1, + USER_HOME_DIRECTORY_REQUIRED = 2, + USER_PASSWORD_NOT_REQUIRED = 4, + USER_TEMP_DUPLICATE_ACCOUNT = 8, + USER_NORMAL_ACCOUNT = 16, + USER_MNS_LOGON_ACCOUNT = 32, + USER_INTERDOMAIN_TRUST_ACCOUNT = 64, + USER_WORKSTATION_TRUST_ACCOUNT = 128, + USER_SERVER_TRUST_ACCOUNT = 256, + USER_DONT_EXPIRE_PASSWORD = 512, + USER_ACCOUNT_AUTO_LOCKED = 1024, + USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 2048, + USER_SMARTCARD_REQUIRED = 4096, + USER_TRUSTED_FOR_DELEGATION = 8192, + USER_NOT_DELEGATED = 16384, + USER_USE_DES_KEY_ONLY = 32768, + USER_DONT_REQUIRE_PREAUTH = 65536, + + USER_MACHINE_ACCOUNT_MASK = 448, + USER_ACCOUNT_TYPE_MASK = 472, + USER_ALL_PARAMETERS = 2097152; + +/+ +struct UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} +alias UNICODE_STRING* PUNICODE_STRING; + +struct STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} +alias STRING* PSTRING; ++/ + +mixin DECLARE_HANDLE!("SAM_HANDLE"); +alias SAM_HANDLE* PSAM_HANDLE; + +struct OLD_LARGE_INTEGER { + ULONG LowPart; + LONG HighPart; +} +alias OLD_LARGE_INTEGER* POLD_LARGE_INTEGER; + +enum NETLOGON_LOGON_INFO_CLASS { + NetlogonInteractiveInformation = 1, + NetlogonNetworkInformation, + NetlogonServiceInformation, + NetlogonGenericInformation, + NetlogonInteractiveTransitiveInformation, + NetlogonNetworkTransitiveInformation, + NetlogonServiceTransitiveInformation +} + + +const CYPHER_BLOCK_LENGTH = 8; +const USER_SESSION_KEY_LENGTH = CYPHER_BLOCK_LENGTH * 2; +const CLEAR_BLOCK_LENGTH = 8; + +struct CYPHER_BLOCK { + CHAR[CYPHER_BLOCK_LENGTH] data; +} +alias CYPHER_BLOCK* PCYPHER_BLOCK; + +struct CLEAR_BLOCK { + CHAR[CLEAR_BLOCK_LENGTH] data; +} +alias CLEAR_BLOCK* PCLEAR_BLOCK; + +struct LM_OWF_PASSWORD { + CYPHER_BLOCK[2] data; +} +alias LM_OWF_PASSWORD* PLM_OWF_PASSWORD; + +struct USER_SESSION_KEY { + CYPHER_BLOCK[2] data; +} +alias USER_SESSION_KEY* PUSER_SESSION_KEY; + +alias CLEAR_BLOCK LM_CHALLENGE; +alias LM_CHALLENGE* PLM_CHALLENGE; + +alias LM_OWF_PASSWORD NT_OWF_PASSWORD; +alias NT_OWF_PASSWORD* PNT_OWF_PASSWORD; +alias LM_CHALLENGE NT_CHALLENGE; +alias NT_CHALLENGE* PNT_CHALLENGE; + +struct LOGON_HOURS { + USHORT UnitsPerWeek; + PUCHAR LogonHours; +} +alias LOGON_HOURS* PLOGON_HOURS; + +struct SR_SECURITY_DESCRIPTOR { + ULONG Length; + PUCHAR SecurityDescriptor; +} +alias SR_SECURITY_DESCRIPTOR* PSR_SECURITY_DESCRIPTOR; + +align(4): +struct USER_ALL_INFORMATION { + LARGE_INTEGER LastLogon; + LARGE_INTEGER LastLogoff; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER AccountExpires; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING UserName; + UNICODE_STRING FullName; + UNICODE_STRING HomeDirectory; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING ScriptPath; + UNICODE_STRING ProfilePath; + UNICODE_STRING AdminComment; + UNICODE_STRING WorkStations; + UNICODE_STRING UserComment; + UNICODE_STRING Parameters; + UNICODE_STRING LmPassword; + UNICODE_STRING NtPassword; + UNICODE_STRING PrivateData; + SR_SECURITY_DESCRIPTOR SecurityDescriptor; + ULONG UserId; + ULONG PrimaryGroupId; + ULONG UserAccountControl; + ULONG WhichFields; + LOGON_HOURS LogonHours; + USHORT BadPasswordCount; + USHORT LogonCount; + USHORT CountryCode; + USHORT CodePage; + BOOLEAN LmPasswordPresent; + BOOLEAN NtPasswordPresent; + BOOLEAN PasswordExpired; + BOOLEAN PrivateDataSensitive; +} +alias USER_ALL_INFORMATION* PUSER_ALL_INFORMATION; +align: + +struct MSV1_0_VALIDATION_INFO { + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickoffTime; + UNICODE_STRING LogonServer; + UNICODE_STRING LogonDomainName; + USER_SESSION_KEY SessionKey; + BOOLEAN Authoritative; + ULONG UserFlags; + ULONG WhichFields; + ULONG UserId; +} +alias MSV1_0_VALIDATION_INFO* PMSV1_0_VALIDATION_INFO; + +struct NETLOGON_LOGON_IDENTITY_INFO { + UNICODE_STRING LogonDomainName; + ULONG ParameterControl; + OLD_LARGE_INTEGER LogonId; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; +} +alias NETLOGON_LOGON_IDENTITY_INFO* PNETLOGON_LOGON_IDENTITY_INFO; + +struct NETLOGON_INTERACTIVE_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; +} +alias NETLOGON_INTERACTIVE_INFO* PNETLOGON_INTERACTIVE_INFO; + +struct NETLOGON_GENERIC_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + UNICODE_STRING PackageName; + ULONG DataLength; + PUCHAR LogonData; +} +alias NETLOGON_GENERIC_INFO* PNETLOGON_GENERIC_INFO; + +struct NETLOGON_NETWORK_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_CHALLENGE LmChallenge; + STRING NtChallengeResponse; + STRING LmChallengeResponse; +} +alias NETLOGON_NETWORK_INFO* PNETLOGON_NETWORK_INFO; + +struct NETLOGON_SERVICE_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; +} +alias NETLOGON_SERVICE_INFO* PNETLOGON_SERVICE_INFO; + +extern (Windows) { +NTSTATUS Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); +NTSTATUS Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); +NTSTATUS Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*); +NTSTATUS Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, + PMSV1_0_VALIDATION_INFO,PULONG); +} \ No newline at end of file diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d new file mode 100644 index 0000000000..f063470771 --- /dev/null +++ b/src/core/sys/windows/tlhelp32.d @@ -0,0 +1,169 @@ +/***********************************************************************\ +* tlhelp32.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.tlhelp32; + +private import win32.windef; + +enum : uint { + HF32_DEFAULT = 1, + HF32_SHARED +} + +enum : uint { + LF32_FIXED = 0x1, + LF32_FREE = 0x2, + LF32_MOVEABLE = 0x4 +} + +const MAX_MODULE_NAME32 = 255; + +enum : uint { + TH32CS_SNAPHEAPLIST = 0x1, + TH32CS_SNAPPROCESS = 0x2, + TH32CS_SNAPTHREAD = 0x4, + TH32CS_SNAPMODULE = 0x8, + TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE), + TH32CS_INHERIT = 0x80000000 +} + +struct HEAPLIST32 { + SIZE_T dwSize; + DWORD th32ProcessID; + ULONG_PTR th32HeapID; + DWORD dwFlags; +} +alias HEAPLIST32* PHEAPLIST32; +alias HEAPLIST32* LPHEAPLIST32; + +struct HEAPENTRY32 { + SIZE_T dwSize; + HANDLE hHandle; + ULONG_PTR dwAddress; + SIZE_T dwBlockSize; + DWORD dwFlags; + DWORD dwLockCount; + DWORD dwResvd; + DWORD th32ProcessID; + ULONG_PTR th32HeapID; +} +alias HEAPENTRY32* PHEAPENTRY32; +alias HEAPENTRY32* LPHEAPENTRY32; + +struct PROCESSENTRY32W { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ProcessID; + ULONG_PTR th32DefaultHeapID; + DWORD th32ModuleID; + DWORD cntThreads; + DWORD th32ParentProcessID; + LONG pcPriClassBase; + DWORD dwFlags; + WCHAR[MAX_PATH] szExeFile; +} +alias PROCESSENTRY32W* PPROCESSENTRY32W; +alias PROCESSENTRY32W* LPPROCESSENTRY32W; + +struct THREADENTRY32 { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ThreadID; + DWORD th32OwnerProcessID; + LONG tpBasePri; + LONG tpDeltaPri; + DWORD dwFlags; +} +alias THREADENTRY32* PTHREADENTRY32; +alias THREADENTRY32* LPTHREADENTRY32; + +struct MODULEENTRY32W { + DWORD dwSize; + DWORD th32ModuleID; + DWORD th32ProcessID; + DWORD GlblcntUsage; + DWORD ProccntUsage; + BYTE *modBaseAddr; + DWORD modBaseSize; + HMODULE hModule; + WCHAR[MAX_MODULE_NAME32 + 1] szModule; + WCHAR[MAX_PATH] szExePath; +} +alias MODULEENTRY32W* PMODULEENTRY32W; +alias MODULEENTRY32W* LPMODULEENTRY32W; + +version(Unicode) { + alias PROCESSENTRY32W PROCESSENTRY32; + alias PPROCESSENTRY32W PPROCESSENTRY32; + alias LPPROCESSENTRY32W LPPROCESSENTRY32; + + alias MODULEENTRY32W MODULEENTRY32; + alias PMODULEENTRY32W PMODULEENTRY32; + alias LPMODULEENTRY32W LPMODULEENTRY32; +} else { + struct PROCESSENTRY32 { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ProcessID; + ULONG_PTR th32DefaultHeapID; + DWORD th32ModuleID; + DWORD cntThreads; + DWORD th32ParentProcessID; + LONG pcPriClassBase; + DWORD dwFlags; + CHAR[MAX_PATH] szExeFile; + } + alias PROCESSENTRY32* PPROCESSENTRY32; + alias PROCESSENTRY32* LPPROCESSENTRY32; + + struct MODULEENTRY32 { + DWORD dwSize; + DWORD th32ModuleID; + DWORD th32ProcessID; + DWORD GlblcntUsage; + DWORD ProccntUsage; + BYTE *modBaseAddr; + DWORD modBaseSize; + HMODULE hModule; + char[MAX_MODULE_NAME32 + 1] szModule; + char[MAX_PATH] szExePath; + } + alias MODULEENTRY32* PMODULEENTRY32; + alias MODULEENTRY32* LPMODULEENTRY32; +} + + +extern(Windows) { + BOOL Heap32First(LPHEAPENTRY32,DWORD,DWORD); + BOOL Heap32ListFirst(HANDLE,LPHEAPLIST32); + BOOL Heap32ListNext(HANDLE,LPHEAPLIST32); + BOOL Heap32Next(LPHEAPENTRY32); + BOOL Thread32First(HANDLE,LPTHREADENTRY32); + BOOL Thread32Next(HANDLE,LPTHREADENTRY32); + BOOL Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD); + HANDLE CreateToolhelp32Snapshot(DWORD,DWORD); + BOOL Module32FirstW(HANDLE,LPMODULEENTRY32W); + BOOL Module32NextW(HANDLE,LPMODULEENTRY32W); + BOOL Process32FirstW(HANDLE,LPPROCESSENTRY32W); + BOOL Process32NextW(HANDLE,LPPROCESSENTRY32W); +} + +version(Unicode) { + alias Module32FirstW Module32First; + alias Module32NextW Module32Next; + alias Process32FirstW Process32First; + alias Process32NextW Process32Next; +} else { + extern(Windows) { + BOOL Module32First(HANDLE,LPMODULEENTRY32); + BOOL Module32Next(HANDLE,LPMODULEENTRY32); + BOOL Process32First(HANDLE,LPPROCESSENTRY32); + BOOL Process32Next(HANDLE,LPPROCESSENTRY32); + } +} diff --git a/src/core/sys/windows/tmschema.d b/src/core/sys/windows/tmschema.d new file mode 100644 index 0000000000..c61d3716ed --- /dev/null +++ b/src/core/sys/windows/tmschema.d @@ -0,0 +1,758 @@ +/***********************************************************************\ +* tmschema.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.tmschema; + +/* BUTTON parts */ +enum { + BP_PUSHBUTTON = 1, + BP_RADIOBUTTON = 2, + BP_CHECKBOX = 3, + BP_GROUPBOX = 4, + BP_USERBUTTON = 5 +} + +enum { + CBS_UNCHECKEDNORMAL = 1, + CBS_UNCHECKEDHOT = 2, + CBS_UNCHECKEDPRESSED = 3, + CBS_UNCHECKEDDISABLED = 4, + CBS_CHECKEDNORMAL = 5, + CBS_CHECKEDHOT = 6, + CBS_CHECKEDPRESSED = 7, + CBS_CHECKEDDISABLED = 8, + CBS_MIXEDNORMAL = 9, + CBS_MIXEDHOT = 10, + CBS_MIXEDPRESSED = 11, + CBS_MIXEDDISABLED = 12 +} + +enum { + GBS_NORMAL = 1, + GBS_DISABLED = 2 +} + +enum { + PBS_NORMAL = 1, + PBS_HOT = 2, + PBS_PRESSED = 3, + PBS_DISABLED = 4, + PBS_DEFAULTED = 5 +} + +enum { + RBS_UNCHECKEDNORMAL = 1, + RBS_UNCHECKEDHOT = 2, + RBS_UNCHECKEDPRESSED = 3, + RBS_UNCHECKEDDISABLED = 4, + RBS_CHECKEDNORMAL = 5, + RBS_CHECKEDHOT = 6, + RBS_CHECKEDPRESSED = 7, + RBS_CHECKEDDISABLED = 8 +} + +/* CLOCK parts */ +enum { + CLP_TIME = 1 +} + +enum { + CLS_NORMAL = 1 +} + +/* COMBOBOX parts */ +enum { + CP_DROPDOWNBUTTON = 1 +} + +enum { + CBXS_NORMAL = 1, + CBXS_HOT = 2, + CBXS_PRESSED = 3, + CBXS_DISABLED = 4 +} + +/* EDIT parts */ +enum { + EP_EDITTEXT = 1, + EP_CARET = 2 +} + +enum { + ETS_NORMAL = 1, + ETS_HOT = 2, + ETS_SELECTED = 3, + ETS_DISABLED = 4, + ETS_FOCUSED = 5, + ETS_READONLY = 6, + ETS_ASSIST = 7 +} +/* EXPLORERBAR parts */ +enum { + EBP_HEADERBACKGROUND = 1, + EBP_HEADERCLOSE = 2, + EBP_HEADERPIN = 3, + EBP_IEBARMENU = 4, + EBP_NORMALGROUPBACKGROUND = 5, + EBP_NORMALGROUPCOLLAPSE = 6, + EBP_NORMALGROUPEXPAND = 7, + EBP_NORMALGROUPHEAD = 8, + EBP_SPECIALGROUPBACKGROUND = 9, + EBP_SPECIALGROUPCOLLAPSE = 10, + EBP_SPECIALGROUPEXPAND = 11, + EBP_SPECIALGROUPHEAD = 12 +} + +enum { + EBHC_NORMAL = 1, + EBHC_HOT = 2, + EBHC_PRESSED = 3 +} + +enum { + EBHP_NORMAL = 1, + EBHP_HOT = 2, + EBHP_PRESSED = 3, + EBHP_SELECTEDNORMAL = 4, + EBHP_SELECTEDHOT = 5, + EBHP_SELECTEDPRESSED = 6 +} + +enum { + EBM_NORMAL = 1, + EBM_HOT = 2, + EBM_PRESSED = 3 +} + +enum { + EBNGC_NORMAL = 1, + EBNGC_HOT = 2, + EBNGC_PRESSED = 3 +} + +enum { + EBNGE_NORMAL = 1, + EBNGE_HOT = 2, + EBNGE_PRESSED = 3 +} + +enum { + EBSGC_NORMAL = 1, + EBSGC_HOT = 2, + EBSGC_PRESSED = 3 +} + +enum { + EBSGE_NORMAL = 1, + EBSGE_HOT = 2, + EBSGE_PRESSED = 3 +} + +/* HEADER parts */ +enum { + HP_HEADERITEM = 1, + HP_HEADERITEMLEFT = 2, + HP_HEADERITEMRIGHT = 3, + HP_HEADERSORTARROW = 4 +} + +enum { + HIS_NORMAL = 1, + HIS_HOT = 2, + HIS_PRESSED = 3 +} + +enum { + HILS_NORMAL = 1, + HILS_HOT = 2, + HILS_PRESSED = 3 +} + +enum { + HIRS_NORMAL = 1, + HIRS_HOT = 2, + HIRS_PRESSED = 3 +} + +enum { + HSAS_SORTEDUP = 1, + HSAS_SORTEDDOWN = 2 +} + +/* LISTVIEW parts */ +enum { + LVP_LISTITEM = 1, + LVP_LISTGROUP = 2, + LVP_LISTDETAIL = 3, + LVP_LISTSORTEDDETAIL = 4, + LVP_EMPTYTEXT = 5 +} + +enum { + LIS_NORMAL = 1, + LIS_HOT = 2, + LIS_SELECTED = 3, + LIS_DISABLED = 4, + LIS_SELECTEDNOTFOCUS = 5 +} + +/* MENU parts */ +enum { + MP_MENUITEM = 1, + MP_MENUDROPDOWN = 2, + MP_MENUBARITEM = 3, + MP_MENUBARDROPDOWN = 4, + MP_CHEVRON = 5, + MP_SEPARATOR = 6 +} + +enum { + MS_NORMAL = 1, + MS_SELECTED = 2, + MS_DEMOTED = 3 +} +/* MENUBAND parts */ +enum { + MDP_NEWAPPBUTTON = 1, + MDP_SEPERATOR = 2 +} + +enum { + MDS_NORMAL = 1, + MDS_HOT = 2, + MDS_PRESSED = 3, + MDS_DISABLED = 4, + MDS_CHECKED = 5, + MDS_HOTCHECKED = 6 +} + +/* PAGE parts */ +enum { + PGRP_UP = 1, + PGRP_DOWN = 2, + PGRP_UPHORZ = 3, + PGRP_DOWNHORZ = 4 +} + +enum { + DNS_NORMAL = 1, + DNS_HOT = 2, + DNS_PRESSED = 3, + DNS_DISABLED = 4 +} + +enum { + DNHZS_NORMAL = 1, + DNHZS_HOT = 2, + DNHZS_PRESSED = 3, + DNHZS_DISABLED = 4 +} + +enum { + UPS_NORMAL = 1, + UPS_HOT = 2, + UPS_PRESSED = 3, + UPS_DISABLED = 4 +} + +enum { + UPHZS_NORMAL = 1, + UPHZS_HOT = 2, + UPHZS_PRESSED = 3, + UPHZS_DISABLED = 4 +} + +/* PROGRESS parts */ +enum { + PP_BAR = 1, + PP_BARVERT = 2, + PP_CHUNK = 3, + PP_CHUNKVERT = 4 +} + +/* REBAR parts */ +enum { + RP_GRIPPER = 1, + RP_GRIPPERVERT = 2, + RP_BAND = 3, + RP_CHEVRON = 4, + RP_CHEVRONVERT = 5 +} + +enum { + CHEVS_NORMAL = 1, + CHEVS_HOT = 2, + CHEVS_PRESSED = 3 +} + +/* SCROLLBAR parts */ +enum { + SBP_ARROWBTN = 1, + SBP_THUMBBTNHORZ = 2, + SBP_THUMBBTNVERT = 3, + SBP_LOWERTRACKHORZ = 4, + SBP_UPPERTRACKHORZ = 5, + SBP_LOWERTRACKVERT = 6, + SBP_UPPERTRACKVERT = 7, + SBP_GRIPPERHORZ = 8, + SBP_GRIPPERVERT = 9, + SBP_SIZEBOX = 10 +} + +enum { + ABS_UPNORMAL = 1, + ABS_UPHOT = 2, + ABS_UPPRESSED = 3, + ABS_UPDISABLED = 4, + ABS_DOWNNORMAL = 5, + ABS_DOWNHOT = 6, + ABS_DOWNPRESSED = 7, + ABS_DOWNDISABLED = 8, + ABS_LEFTNORMAL = 9, + ABS_LEFTHOT = 10, + ABS_LEFTPRESSED = 11, + ABS_LEFTDISABLED = 12, + ABS_RIGHTNORMAL = 13, + ABS_RIGHTHOT = 14, + ABS_RIGHTPRESSED = 15, + ABS_RIGHTDISABLED = 16 +} + +enum { + SCRBS_NORMAL = 1, + SCRBS_HOT = 2, + SCRBS_PRESSED = 3, + SCRBS_DISABLED = 4 +} + +enum { + SZB_RIGHTALIGN = 1, + SZB_LEFTALIGN = 2 +} + +/* SPIN parts */ +enum { + SPNP_UP = 1, + SPNP_DOWN = 2, + SPNP_UPHORZ = 3, + SPNP_DOWNHORZ = 4 +} + +/* STARTPANEL parts */ +enum { + SPP_USERPANE = 1, + SPP_MOREPROGRAMS = 2, + SPP_MOREPROGRAMSARROW = 3, + SPP_PROGLIST = 4, + SPP_PROGLISTSEPARATOR = 5, + SPP_PLACESLIST = 6, + SPP_PLACESLISTSEPARATOR = 7, + SPP_LOGOFF = 8, + SPP_LOGOFFBUTTONS = 9, + SPP_USERPICTURE = 10, + SPP_PREVIEW = 11 +} + +enum { + SPLS_NORMAL = 1, + SPLS_HOT = 2, + SPLS_PRESSED = 3 +} + +enum { + SPS_NORMAL = 1, + SPS_HOT = 2, + SPS_PRESSED = 3 +} + +/* STATUS parts */ +enum { + SP_PANE = 1, + SP_GRIPPERPANE = 2, + SP_GRIPPER = 3 +} + +/* TAB parts */ +enum { + TABP_TABITEM = 1, + TABP_TABITEMLEFTEDGE = 2, + TABP_TABITEMRIGHTEDGE = 3, + TABP_TABITEMBOTHEDGE = 4, + TABP_TOPTABITEM = 5, + TABP_TOPTABITEMLEFTEDGE = 6, + TABP_TOPTABITEMRIGHTEDGE = 7, + TABP_TOPTABITEMBOTHEDGE = 8, + TABP_PANE = 9, + TABP_BODY = 10 +} + +enum { + TIS_NORMAL = 1, + TIS_HOT = 2, + TIS_SELECTED = 3, + TIS_DISABLED = 4, + TIS_FOCUSED = 5 +} + +enum { + TIBES_NORMAL = 1, + TIBES_HOT = 2, + TIBES_SELECTED = 3, + TIBES_DISABLED = 4, + TIBES_FOCUSED = 5 +} + +enum { + TILES_NORMAL = 1, + TILES_HOT = 2, + TILES_SELECTED = 3, + TILES_DISABLED = 4, + TILES_FOCUSED = 5 +} + +enum { + TIRES_NORMAL = 1, + TIRES_HOT = 2, + TIRES_SELECTED = 3, + TIRES_DISABLED = 4, + TIRES_FOCUSED = 5 +} + +enum { + TTIS_NORMAL = 1, + TTIS_HOT = 2, + TTIS_SELECTED = 3, + TTIS_DISABLED = 4, + TTIS_FOCUSED = 5 +} + +enum { + TTIBES_NORMAL = 1, + TTIBES_HOT = 2, + TTIBES_SELECTED = 3, + TTIBES_DISABLED = 4, + TTIBES_FOCUSED = 5 +} + +enum { + TTILES_NORMAL = 1, + TTILES_HOT = 2, + TTILES_SELECTED = 3, + TTILES_DISABLED = 4, + TTILES_FOCUSED = 5 +} + +enum { + TTIRES_NORMAL = 1, + TTIRES_HOT = 2, + TTIRES_SELECTED = 3, + TTIRES_DISABLED = 4, + TTIRES_FOCUSED = 5 +} + +/* TASKBAND parts */ +enum { + TDP_GROUPCOUNT = 1, + TDP_FLASHBUTTON = 2, + TDP_FLASHBUTTONGROUPMENU = 3 +} + +/* TASKBAR parts */ +enum { + TBP_BACKGROUNDBOTTOM = 1, + TBP_BACKGROUNDRIGHT = 2, + TBP_BACKGROUNDTOP = 3, + TBP_BACKGROUNDLEFT = 4, + TBP_SIZINGBARBOTTOM = 5, + TBP_SIZINGBARRIGHT = 6, + TBP_SIZINGBARTOP = 7, + TBP_SIZINGBARLEFT = 8 +} + +/* TOOLBAR parts */ +enum { + TP_BUTTON = 1, + TP_DROPDOWNBUTTON = 2, + TP_SPLITBUTTON = 3, + TP_SPLITBUTTONDROPDOWN = 4, + TP_SEPARATOR = 5, + TP_SEPARATORVERT = 6 +} + +enum { + TS_NORMAL = 1, + TS_HOT = 2, + TS_PRESSED = 3, + TS_DISABLED = 4, + TS_CHECKED = 5, + TS_HOTCHECKED = 6 +} + +/* TOOLTIP parts */ +enum { + TTP_STANDARD = 1, + TTP_STANDARDTITLE = 2, + TTP_BALLOON = 3, + TTP_BALLOONTITLE = 4, + TTP_CLOSE = 5 +} + +enum { + TTBS_NORMAL = 1, + TTBS_LINK = 2 +} + +enum { + TTCS_NORMAL = 1, + TTCS_HOT = 2, + TTCS_PRESSED = 3 +} + +enum { + TTSS_NORMAL = 1, + TTSS_LINK = 2 +} + +/* TRACKBAR parts */ +enum { + TKP_TRACK = 1, + TKP_TRACKVERT = 2, + TKP_THUMB = 3, + TKP_THUMBBOTTOM = 4, + TKP_THUMBTOP = 5, + TKP_THUMBVERT = 6, + TKP_THUMBLEFT = 7, + TKP_THUMBRIGHT = 8, + TKP_TICS = 9, + TKP_TICSVERT = 10 +} + +enum { + TUS_NORMAL = 1, + TUS_HOT = 2, + TUS_PRESSED = 3, + TUS_FOCUSED = 4, + TUS_DISABLED = 5 +} + +enum { + TUBS_NORMAL = 1, + TUBS_HOT = 2, + TUBS_PRESSED = 3, + TUBS_FOCUSED = 4, + TUBS_DISABLED = 5 +} + +enum { + TUVLS_NORMAL = 1, + TUVLS_HOT = 2, + TUVLS_PRESSED = 3, + TUVLS_FOCUSED = 4, + TUVLS_DISABLED = 5 +} + +enum { + TUVRS_NORMAL = 1, + TUVRS_HOT = 2, + TUVRS_PRESSED = 3, + TUVRS_FOCUSED = 4, + TUVRS_DISABLED = 5 +} + +enum { + TUTS_NORMAL = 1, + TUTS_HOT = 2, + TUTS_PRESSED = 3, + TUTS_FOCUSED = 4, + TUTS_DISABLED = 5 +} + +enum { + TUVS_NORMAL = 1, + TUVS_HOT = 2, + TUVS_PRESSED = 3, + TUVS_FOCUSED = 4, + TUVS_DISABLED = 5 +} + +enum { + TSS_NORMAL = 1 +} + +enum { + TSVS_NORMAL = 1 +} + +enum { + TRS_NORMAL = 1 +} + +enum { + TRVS_NORMAL = 1 +} + +/* TRAYNOTIFY parts */ +enum { + TNP_BACKGROUND = 1, + TNP_ANIMBACKGROUND = 2 +} + +/* TREEVIEW parts */ +enum { + TVP_TREEITEM = 1, + TVP_GLYPH = 2, + TVP_BRANCH = 3 +} + +enum { + GLPS_CLOSED = 1, + GLPS_OPENED = 2 +} + +enum { + TREIS_NORMAL = 1, + TREIS_HOT = 2, + TREIS_SELECTED = 3, + TREIS_DISABLED = 4, + TREIS_SELECTEDNOTFOCUS = 5 +} + +/* WINDOW parts */ +enum { + WP_CAPTION = 1, + WP_SMALLCAPTION = 2, + WP_MINCAPTION = 3, + WP_SMALLMINCAPTION = 4, + WP_MAXCAPTION = 5, + WP_SMALLMAXCAPTION = 6, + WP_FRAMELEFT = 7, + WP_FRAMERIGHT = 8, + WP_FRAMEBOTTOM = 9, + WP_SMALLFRAMELEFT = 10, + WP_SMALLFRAMERIGHT = 11, + WP_SMALLFRAMEBOTTOM = 12, + WP_SYSBUTTON = 13, + WP_MDISYSBUTTON = 14, + WP_MINBUTTON = 15, + WP_MDIMINBUTTON = 16, + WP_MAXBUTTON = 17, + WP_CLOSEBUTTON = 18, + WP_SMALLCLOSEBUTTON = 19, + WP_MDICLOSEBUTTON = 20, + WP_RESTOREBUTTON = 21, + WP_MDIRESTOREBUTTON = 22, + WP_HELPBUTTON = 23, + WP_MDIHELPBUTTON = 24, + WP_HORZSCROLL = 25, + WP_HORZTHUMB = 26, + WP_VERTSCROLL = 27, + WP_VERTTHUMB = 28, + WP_DIALOG = 29, + WP_CAPTIONSIZINGTEMPLATE = 30, + WP_SMALLCAPTIONSIZINGTEMPLATE = 31, + WP_FRAMELEFTSIZINGTEMPLATE = 32, + WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33, + WP_FRAMERIGHTSIZINGTEMPLATE = 34, + WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35, + WP_FRAMEBOTTOMSIZINGTEMPLATE = 36, + WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37 +} + +enum { + CS_ACTIVE = 1, + CS_INACTIVE = 2, + CS_DISABLED = 3 +} + +enum { + CBS_NORMAL = 1, + CBS_HOT = 2, + CBS_PUSHED = 3, + CBS_DISABLED = 4 +} + +enum { + FS_ACTIVE = 1, + FS_INACTIVE = 2 +} + +enum { + HBS_NORMAL = 1, + HBS_HOT = 2, + HBS_PUSHED = 3, + HBS_DISABLED = 4 +} + +enum { + HSS_NORMAL = 1, + HSS_HOT = 2, + HSS_PUSHED = 3, + HSS_DISABLED = 4 +} + +enum { + HTS_NORMAL = 1, + HTS_HOT = 2, + HTS_PUSHED = 3, + HTS_DISABLED = 4 +} + +enum { + MAXBS_NORMAL = 1, + MAXBS_HOT = 2, + MAXBS_PUSHED = 3, + MAXBS_DISABLED = 4 +} + +enum { + MXCS_ACTIVE = 1, + MXCS_INACTIVE = 2, + MXCS_DISABLED = 3 +} + +enum { + MINBS_NORMAL = 1, + MINBS_HOT = 2, + MINBS_PUSHED = 3, + MINBS_DISABLED = 4 +} + +enum { + RBS_NORMAL = 1, + RBS_HOT = 2, + RBS_PUSHED = 3, + RBS_DISABLED = 4 +} + +enum { + SBS_NORMAL = 1, + SBS_HOT = 2, + SBS_PUSHED = 3, + SBS_DISABLED = 4 +} + +enum { + MNCS_ACTIVE = 1, + MNCS_INACTIVE = 2, + MNCS_DISABLED = 3 +} + +enum { + VSS_NORMAL = 1, + VSS_HOT = 2, + VSS_PUSHED = 3, + VSS_DISABLED = 4 +} + +enum { + VTS_NORMAL = 1, + VTS_HOT = 2, + VTS_PUSHED = 3, + VTS_DISABLED = 4 +} diff --git a/src/core/sys/windows/unknwn.d b/src/core/sys/windows/unknwn.d new file mode 100644 index 0000000000..de6278b3c6 --- /dev/null +++ b/src/core/sys/windows/unknwn.d @@ -0,0 +1,55 @@ +/***********************************************************************\ +* unknwn.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.unknwn; + +import win32.objfwd, win32.windef, win32.wtypes; +private import win32.basetyps; + +extern (Windows) { + void* MIDL_user_allocate(size_t); + void MIDL_user_free(void*); +} + + +extern (Windows) { + + interface IUnknown { + HRESULT QueryInterface(IID* riid, void** pvObject); + ULONG AddRef(); + ULONG Release(); + } + + alias IUnknown LPUNKNOWN; + + interface IClassFactory : IUnknown { + HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject); + HRESULT LockServer(BOOL fLock); + } + alias IClassFactory LPCLASSFACTORY; + + /+ + // These do not seem to be necessary (or desirable) for D. + HRESULT IUnknown_QueryInterface_Proxy(IUnknown,REFIID,void**); + ULONG IUnknown_AddRef_Proxy(IUnknown); + ULONG IUnknown_Release_Proxy(IUnknown); + HRESULT IClassFactory_RemoteCreateInstance_Proxy(IClassFactory,REFIID,IUnknown*); + HRESULT IClassFactory_RemoteLockServer_Proxy(IClassFactory,BOOL); + HRESULT IClassFactory_CreateInstance_Proxy(IClassFactory,IUnknown,REFIID,void**); + HRESULT IClassFactory_CreateInstance_Stub(IClassFactory,REFIID,IUnknown*); + HRESULT IClassFactory_LockServer_Proxy(IClassFactory,BOOL); + HRESULT IClassFactory_LockServer_Stub(IClassFactory,BOOL); + + void IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + +/ +} diff --git a/src/core/sys/windows/uuid.d b/src/core/sys/windows/uuid.d new file mode 100644 index 0000000000..670550d956 --- /dev/null +++ b/src/core/sys/windows/uuid.d @@ -0,0 +1,4069 @@ +module win32.uuid; + +import win32.basetyps; + +export +extern(C) { + const IID _DBBMKGUID = {0xF6304BB0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; + const IID _DBCIDGUID = {0xFE284700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; + const IID _GUID_NAMEONLY = {0xE8BF1170, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; + const IID ARRAYID_PathProperties = {0x7ECBBA04, 0x2D97, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID BFID_GRAY_16 = {0xF9D6BC00, 0x449C, 0x11D0, [0x91, 0x8C, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; + const IID BFID_GRAY_8 = {0xD93DE910, 0x449C, 0x11D0, [0x91, 0x8C, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; + const IID BFID_MONOCHROME = {0xE436EB78, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; + const IID BFID_RGB_24 = {0xE436EB7D, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; + const IID BFID_RGB_32 = {0xE436EB7E, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; + const IID BFID_RGB_4 = {0xE436EB79, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; + const IID BFID_RGB_555 = {0xE436EB7C, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; + const IID BFID_RGB_565 = {0xE436EB7B, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; + const IID BFID_RGB_8 = {0xE436EB7A, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; + const IID BFID_RGBA_32 = {0x773C9AC0, 0x3274, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; + const IID BHID_LinkTargetItem = {0x3981E228, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; + const IID BHID_SFObject = {0x3981E224, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; + const IID BHID_SFUIObject = {0x3981E225, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; + const IID BHID_SFViewObject = {0x3981E226, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; + const IID BHID_Storage = {0x3981E227, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; + const IID BHID_StorageEnum = {0x4621A4E3, 0xF0D6, 0x4773, [0x8A, 0x9C, 0x46, 0xE7, 0x7B, 0x17, 0x48, 0x40]}; + const IID BHID_Stream = {0x1CEBB3AB, 0x7C10, 0x499A, [0xA4, 0x17, 0x92, 0xCA, 0x16, 0xC4, 0xCB, 0x83]}; + const IID CATID_BrowsableShellExt = {0x00021490, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CATID_BrowseInPlace = {0x00021491, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CATID_ClusCfgCapabilities = {0x4653EEC4, 0x2788, 0x4EBD, [0xA8, 0x31, 0x7E, 0x0D, 0x9F, 0x82, 0xD6, 0xE7]}; + const IID CATID_ClusCfgMemberSetChangeListener = {0x8A43EAD4, 0x10F1, 0x440D, [0x8D, 0xAA, 0x1F, 0xE3, 0x8D, 0x16, 0x98, 0xCD]}; + const IID CATID_ClusCfgResourceTypes = {0x7C4CAE52, 0xCAC9, 0x499D, [0x82, 0xC6, 0xBC, 0x6A, 0x21, 0x77, 0xE5, 0x56]}; + const IID CATID_ClusCfgStartupListeners = {0xDF406DB4, 0x7872, 0x4A99, [0xBB, 0x3C, 0x14, 0xA9, 0xC3, 0x39, 0x33, 0xD1]}; + const IID CATID_CommBand = {0x00021494, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CATID_Control = {0x40FC6ED4, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; + const IID CATID_DesignTimeUIActivatableControl = {0xF2BB56D1, 0xDB07, 0x11D1, [0xAA, 0x6B, 0x00, 0x60, 0x97, 0xDB, 0x95, 0x39]}; + const IID CATID_DeskBand = {0x00021492, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CATID_DocObject = {0x40FC6ED8, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; + const IID CATID_EnumClusCfgManagedResources = {0x02A34F88, 0xD31A, 0x4688, [0xBD, 0xDD, 0x38, 0xA7, 0x39, 0xE4, 0xF8, 0x9B]}; + const IID CATID_InfoBand = {0x00021493, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CATID_Insertable = {0x40FC6ED3, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; + const IID CATID_InternetAware = {0x0DE86A58, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID CATID_IsShortcut = {0x40FC6ED6, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; + const IID CATID_MARSHALER = {0x00000003, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CATID_NeverShowExt = {0x40FC6ED7, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; + const IID CATID_PersistsToFile = {0x0DE86A56, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID CATID_PersistsToMemory = {0x0DE86A55, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID CATID_PersistsToMoniker = {0x0DE86A51, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID CATID_PersistsToPropertyBag = {0x0DE86A57, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID CATID_PersistsToStorage = {0x0DE86A52, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID CATID_PersistsToStream = {0x0DE86A54, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID CATID_PersistsToStreamInit = {0x0DE86A53, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID CATID_Printable = {0x40FC6ED9, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; + const IID CATID_Programmable = {0x40FC6ED5, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; + const IID CATID_RequiresDataPathHost = {0x0DE86A50, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID CATID_SafeForInitializing = {0x7DD95802, 0x9882, 0x11CF, [0x9F, 0xA9, 0x00, 0xAA, 0x00, 0x6C, 0x42, 0xC4]}; + const IID CATID_SafeForScripting = {0x7DD95801, 0x9882, 0x11CF, [0x9F, 0xA9, 0x00, 0xAA, 0x00, 0x6C, 0x42, 0xC4]}; + const IID CGID_DocHostCommandHandler = {0xF38BC242, 0xB950, 0x11D1, [0x89, 0x18, 0x00, 0xC0, 0x4F, 0xC2, 0xC8, 0x36]}; + const IID CGID_DownloadHost = {0xE0608728, 0xAE4C, 0x11D1, [0xBA, 0x40, 0x00, 0xC0, 0x4F, 0xB9, 0x2D, 0x79]}; + const IID CGID_Explorer = {0x000214D0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CGID_ExplorerBarDoc = {0x000214D3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CGID_InternetExplorer = {0xEB7EED00, 0xF74D, 0x11D2, [0xBB, 0x7F, 0x00, 0x10, 0x4B, 0x35, 0xE7, 0xF9]}; + const IID CGID_MSHTML = {0xDE4BA900, 0x59CA, 0x11CF, [0x95, 0x92, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID CGID_ShellDocView = {0x000214D1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CGID_ShellServiceObject = {0x000214D2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CGID_ShortCut = {0x93A68750, 0x951A, 0x11D1, [0x94, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; + const IID CLSID_1 = {0xD34F1813, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_2 = {0xD34F1814, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_3 = {0xD34F1815, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_4 = {0xD34F1816, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_5 = {0xD34F1817, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_6 = {0xD34F1818, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_7 = {0xD34F1819, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_8 = {0xD34F181A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_9 = {0xD34F181B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_a = {0xD34F181C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_AboutProtocol = {0x3050F406, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_AccessControlEntry = {0xB75AC000, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID CLSID_AccessControlList = {0xB85EA052, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID CLSID_AccountDiscovery = {0x3DAB30ED, 0x8132, 0x40BF, [0xA8, 0xBA, 0x7B, 0x50, 0x57, 0xF0, 0xCD, 0x10]}; + const IID CLSID_ACLCustomMRU = {0x6935DB93, 0x21E8, 0x4CCC, [0xBE, 0xB9, 0x9F, 0xE3, 0xC7, 0x7A, 0x29, 0x7A]}; + const IID CLSID_ACLHistory = {0x00BB2764, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; + const IID CLSID_ACListISF = {0x03C036F1, 0xA186, 0x11D0, [0x82, 0x4A, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83]}; + const IID CLSID_ACLMRU = {0x6756A641, 0xDE71, 0x11D0, [0x83, 0x1B, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83]}; + const IID CLSID_ACLMulti = {0x00BB2765, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; + const IID CLSID_ActiveDesktop = {0x75048700, 0xEF1F, 0x11D0, [0x98, 0x88, 0x00, 0x60, 0x97, 0xDE, 0xAC, 0xF9]}; + const IID CLSID_AdapterInfo = {0x6F9942C9, 0xC1B1, 0x4AB5, [0x93, 0xDA, 0x60, 0x58, 0x99, 0x1D, 0xC8, 0xF3]}; + const IID CLSID_AddrControl = {0x00000348, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_AddressBarParser = {0xE0E11A09, 0x5CB8, 0x4B6C, [0x83, 0x32, 0xE0, 0x07, 0x20, 0xA1, 0x68, 0xF2]}; + const IID CLSID_ADsDSOObject = {0x549365D0, 0xEC26, 0x11CF, [0x83, 0x10, 0x00, 0xAA, 0x00, 0xB5, 0x05, 0xDB]}; + const IID CLSID_ADsSecurityUtility = {0xF270C64A, 0xFFB8, 0x4AE4, [0x85, 0xFE, 0x3A, 0x75, 0xE5, 0x34, 0x79, 0x66]}; + const IID CLSID_ADSystemInfo = {0x50B6327F, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; + const IID CLSID_AlgSetup = {0x27D0BCCC, 0x344D, 0x4287, [0xAF, 0x37, 0x0C, 0x72, 0xC1, 0x61, 0xC1, 0x4C]}; + const IID CLSID_AllClasses = {0x00000330, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_AlphabeticalCategorizer = {0x3C2654C6, 0x7372, 0x4F6B, [0xB3, 0x10, 0x55, 0xD6, 0x12, 0x8F, 0x49, 0xD2]}; + const IID CLSID_AnchorClick = {0x13D5413C, 0x33B9, 0x11D2, [0x95, 0xA7, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; + const IID CLSID_AnimationComposerFactory = {0x332B2A56, 0xF86C, 0x47E7, [0x86, 0x02, 0xFC, 0x42, 0xAC, 0x8B, 0x99, 0x20]}; + const IID CLSID_AnimationComposerSiteFactory = {0x16911A65, 0xD41D, 0x4431, [0x87, 0xF7, 0xE7, 0x57, 0xF4, 0xD0, 0x3B, 0xD8]}; + const IID CLSID_ApplicationGatewayServices = {0xF8ADE1D3, 0x49DF, 0x4B75, [0x90, 0x05, 0xEF, 0x95, 0x08, 0xE6, 0xA3, 0x37]}; + const IID CLSID_AutoComplete = {0x00BB2763, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; + const IID CLSID_AutoDiscoveryProvider = {0xC4F3D5BF, 0x4809, 0x44E3, [0x84, 0xA4, 0x36, 0x8B, 0x6B, 0x33, 0xB0, 0xB4]}; + const IID CLSID_AutoplayForSlideShow = {0x00E7B358, 0xF65B, 0x4DCF, [0x83, 0xDF, 0xCD, 0x02, 0x6B, 0x94, 0xBF, 0xD4]}; + const IID CLSID_b = {0xD34F181D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_BackgroundCopyManager = {0x4991D34B, 0x80A1, 0x4291, [0x83, 0xB6, 0x33, 0x28, 0x36, 0x6B, 0x90, 0x97]}; + const IID CLSID_BackgroundCopyManager1_5 = {0xF087771F, 0xD74F, 0x4C1A, [0xBB, 0x8A, 0xE1, 0x6A, 0xCA, 0x91, 0x24, 0xEA]}; + const IID CLSID_BackgroundCopyQMgr = {0x69AD4AEE, 0x51BE, 0x439B, [0xA9, 0x2C, 0x86, 0xAE, 0x49, 0x0E, 0x8B, 0x30]}; + const IID CLSID_BackLink = {0xFCBF906F, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_BasicImageEffects = {0x16B280C8, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID CLSID_BasicImageEffectsPP = {0x16B280C9, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID CLSID_BlockFormats = {0x3050F831, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_BridgeTerminal = {0x8EBAE7A3, 0x8943, 0x11D1, [0x96, 0xB8, 0x00, 0xC0, 0x4F, 0xB6, 0xE8, 0x66]}; + const IID CLSID_c = {0xD34F181E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_CAccPropServices = {0xB5F8350B, 0x0548, 0x48B1, [0xA6, 0xEE, 0x88, 0xBD, 0x00, 0xB4, 0xA5, 0xE7]}; + const IID CLSID_CActiveIMM = {0x4955DD33, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; + const IID CLSID_CAnchorBrowsePropertyPage = {0x3050F3BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CaseIgnoreList = {0x15F88A55, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_CCheckBox = {0x3050F686, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CColorPropPage = {0x0BE35201, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; + const IID CLSID_CCombobox = {0x3050F678, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CDBurn = {0xFBEB8A05, 0xBEEE, 0x4442, [0x80, 0x4E, 0x40, 0x9D, 0x6C, 0x45, 0x15, 0xE9]}; + const IID CLSID_CDebugDocumentHelper = {0x83B8BCA6, 0x687C, 0x11D0, [0xA4, 0x05, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; + const IID CLSID_CDeviceRect = {0x3050F6D4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CDirect3DRM = {0x4516EC41, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID CLSID_CDirect3DRMAnimation = {0x4FA35698, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMAnimationSet = {0x4FA35699, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMClippedVisual = {0x5434E72D, 0x6D66, 0x11D1, [0xBB, 0x0B, 0x00, 0x00, 0xF8, 0x75, 0x86, 0x5A]}; + const IID CLSID_CDirect3DRMDevice = {0x4FA3568E, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMFace = {0x4FA35693, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMFrame = {0x4FA35690, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMFrameInterpolator = {0x0DE9EAA2, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID CLSID_CDirect3DRMLight = {0x4FA35694, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMLightInterpolator = {0x0DE9EAA6, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID CLSID_CDirect3DRMMaterial = {0x4FA35697, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMMaterialInterpolato = {0x0DE9EAA7, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID CLSID_CDirect3DRMMesh = {0x4FA35691, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMMeshBuilder = {0x4FA35692, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMMeshInterpolator = {0x0DE9EAA3, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID CLSID_CDirect3DRMProgressiveMesh = {0x4516EC40, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID CLSID_CDirect3DRMShadow = {0x4FA3569B, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMTexture = {0x4FA35695, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMTextureInterpolator = {0x0DE9EAA8, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID CLSID_CDirect3DRMUserVisual = {0x4FA3569A, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMViewport = {0x4FA3568F, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirect3DRMViewportInterpolato = {0x0DE9EAA1, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID CLSID_CDirect3DRMWrap = {0x4FA35696, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID CLSID_CDirectXFile = {0x4516EC43, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID CLSID_CDLAgent = {0x7D559C10, 0x9FE9, 0x11D0, [0x93, 0xF7, 0x00, 0xAA, 0x00, 0x59, 0xCE, 0x02]}; + const IID CLSID_CdlProtocol = {0x3DD53D40, 0x7B8B, 0x11D0, [0xB0, 0x13, 0x00, 0xAA, 0x00, 0x59, 0xCE, 0x02]}; + const IID CLSID_CDocBrowsePropertyPage = {0x3050F3B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CDownloadBehavior = {0x3050F5BE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CEnroll = {0x43F8F289, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; + const IID CLSID_CEventObj = {0x3050F48A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CFontPropPage = {0x0BE35200, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; + const IID CLSID_CFSIconOverlayManager = {0x63B51F81, 0xC868, 0x11D0, [0x99, 0x9C, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; + const IID CLSID_ChannelAgent = {0xE3A8BDE6, 0xABCE, 0x11D0, [0xBC, 0x4B, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; + const IID CLSID_ChannelMgr = {0xB3CDAE90, 0xD170, 0x11D0, [0x80, 0x2B, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; + const IID CLSID_CHeaderFooter = {0x3050F6CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CHtmlArea = {0x3050F64F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CIEOptionElement = {0x3050F698, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CIESelectElement = {0x3050F688, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CImageBrowsePropertyPage = {0x3050F3B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_ClassInstallFilter = {0x32B533BB, 0xEDAE, 0x11D0, [0xBD, 0x5A, 0x00, 0xAA, 0x00, 0xB9, 0x2A, 0xF1]}; + const IID CLSID_CLayoutRect = {0x3050F664, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_ClientCaps = {0x7E8BC44E, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; + const IID CLSID_ClusAppWiz = {0x24F97150, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; + const IID CLSID_ClusCfgAsyncEvictCleanup = {0x08F35A72, 0xD7C4, 0x42F4, [0xBC, 0x81, 0x51, 0x88, 0xE1, 0x9D, 0xFA, 0x39]}; + const IID CLSID_ClusCfgEvictCleanup = {0x32152BE9, 0xDE8C, 0x4D0F, [0x81, 0xB0, 0xBC, 0xE5, 0xD1, 0x1E, 0xCB, 0x00]}; + const IID CLSID_ClusCfgResTypeGenScript = {0xD513C4F4, 0x1D34, 0x44A3, [0x83, 0xD4, 0x81, 0x26, 0x51, 0xDB, 0x89, 0x18]}; + const IID CLSID_ClusCfgResTypeMajorityNodeSet = {0xB6870B44, 0x0BDF, 0x4B46, [0xAC, 0x1F, 0x6C, 0x69, 0x1B, 0x62, 0x2E, 0xDF]}; + const IID CLSID_ClusCfgResTypeServices = {0x6A370489, 0xBB52, 0x4727, [0xB7, 0x40, 0x08, 0xF4, 0x94, 0x16, 0x34, 0x78]}; + const IID CLSID_ClusCfgStartupNotify = {0x105EEEB6, 0x32FD, 0x4EA9, [0x89, 0x12, 0x84, 0x3A, 0x7F, 0xF3, 0xCA, 0x2D]}; + const IID CLSID_ClusCfgWizard = {0x1919C4FE, 0x6F46, 0x4027, [0x97, 0x7D, 0x0E, 0xF1, 0xC8, 0xF2, 0x63, 0x72]}; + const IID CLSID_ClusterConfigurationType = {0xBF3768C2, 0xE0E5, 0x448F, [0x95, 0x2B, 0x25, 0xD4, 0x33, 0x2D, 0xEF, 0xA3]}; + const IID CLSID_CMimeTypes = {0x3050F3FE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CMLangConvertCharset = {0xD66D6F99, 0xCDAA, 0x11D0, [0xB8, 0x22, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; + const IID CLSID_CMLangString = {0xC04D65CF, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; + const IID CLSID_CMultiLanguage = {0x275C23E2, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; + const IID CLSID_CNetCfg = {0x5B035261, 0x40F9, 0x11D1, [0xAA, 0xEC, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID CLSID_CoDitherToRGB8 = {0xA860CE50, 0x3910, 0x11D0, [0x86, 0xFC, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; + const IID CLSID_CoMapMIMEToCLSID = {0x30C3B080, 0x30FB, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; + const IID CLSID_ComBinding = {0x00000328, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_CommonQuery = {0x83BC5EC0, 0x6F2A, 0x11D0, [0xA1, 0xC4, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; + const IID CLSID_CompositePP = {0x25B33660, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; + const IID CLSID_ConnectionCommonUi = {0x7007ACD1, 0x3202, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID CLSID_ConnectionManager = {0xBA126AD1, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID CLSID_ConnectionManager2 = {0xBA126AE5, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID CLSID_ControlPanel = {0x21EC2020, 0x3AEA, 0x1069, [0xA2, 0xDD, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; + const IID CLSID_ConvertVBX = {0xFB8F0822, 0x0164, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; + const IID CLSID_ConvolvePP = {0x25B33661, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; + const IID CLSID_COpsProfile = {0x3050F402, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CoSniffStream = {0x6A01FDA0, 0x30DF, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; + const IID CLSID_CPersistDataPeer = {0x3050F487, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CPersistHistory = {0x3050F4C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CPersistShortcut = {0x3050F4C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CPersistSnapshot = {0x3050F4C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CPersistUserData = {0x3050F48E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CPicturePropPage = {0x0BE35202, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; + const IID CLSID_CPlugins = {0x3050F3FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CRadioButton = {0x3050F69C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CrBarn = {0xC3BDF740, 0x0B58, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrBarnPP = {0xFCAD7436, 0xF151, 0x4110, [0xB9, 0x7E, 0x32, 0xBD, 0x60, 0x7F, 0xBD, 0xB8]}; + const IID CLSID_CrBlindPP = {0x213052C1, 0x100D, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; + const IID CLSID_CrBlinds = {0x00C429C0, 0x0BA9, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrBlur = {0x7312498D, 0xE87A, 0x11D1, [0x81, 0xE0, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID CLSID_CrBlurPP = {0x623E287E, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; + const IID CLSID_CrEmboss = {0xF515306D, 0x0156, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID CLSID_CrEngrave = {0xF515306E, 0x0156, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID CLSID_CrInset = {0x93073C40, 0x0BA5, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrIris = {0x3F69F351, 0x0379, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrIrisPP = {0x80DE22C4, 0x0F44, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; + const IID CLSID_CrRadialWipe = {0x424B71AF, 0x0695, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrRadialWipePP = {0x33D932E0, 0x0F48, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; + const IID CLSID_CrSlide = {0x810E402F, 0x056B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrSlidePP = {0xCC8CEDE1, 0x1003, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; + const IID CLSID_CrSpiral = {0xACA97E00, 0x0C7D, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrSpiralPP = {0xC6A4FE81, 0x1022, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; + const IID CLSID_CrStretch = {0x7658F2A2, 0x0A83, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrStretchPP = {0x15FB95E0, 0x0F77, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; + const IID CLSID_CrWheel = {0x5AE1DAE0, 0x1461, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrWheelPP = {0xFA9F6180, 0x1464, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrZigzag = {0xE6E73D20, 0x0C8A, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_CrZigzagPP = {0x1559A3C1, 0x102B, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; + const IID CLSID_CScriptErrorList = {0xEFD01300, 0x160F, 0x11D2, [0xBB, 0x2E, 0x00, 0x80, 0x5F, 0xF7, 0xEF, 0xCA]}; + const IID CLSID_CScrollBar = {0x3050F68A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CSliderBar = {0x3050F68E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CSpinButton = {0x3050F68C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CTemplatePrinter = {0x3050F6B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_CUrlHistory = {0x3C374A40, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; + const IID CLSID_CURLSearchHook = {0xCFBFAE00, 0x17A6, 0x11D0, [0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97]}; + const IID CLSID_CurrentUserClasses = {0x00000332, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_CUtilityButton = {0x3050F6B0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_d = {0xD34F181F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_DAArray = {0x9CDE7340, 0x3C20, 0x11D0, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; + const IID CLSID_DABbox2 = {0x50B4791E, 0x4731, 0x11D0, [0x89, 0x12, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; + const IID CLSID_DABbox3 = {0x4A933703, 0xE36F, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID CLSID_DABehavior = {0xC46C1BF2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DABoolean = {0x25B0F91D, 0xD23D, 0x11D0, [0x9B, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID CLSID_DACamera = {0xC46C1BD9, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAColor = {0xC46C1BC9, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DADashStyle = {0x9CADDC0C, 0xAD56, 0x11D1, [0x9F, 0xF8, 0x00, 0xC0, 0x4F, 0xA3, 0x21, 0x95]}; + const IID CLSID_DAEndStyle = {0xFC54BEAB, 0x5B12, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; + const IID CLSID_DAEvent = {0x3E2487C4, 0x8709, 0x11D0, [0xB1, 0x77, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; + const IID CLSID_DAFontStyle = {0x3F3DA01A, 0x4705, 0x11D0, [0x87, 0x10, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; + const IID CLSID_DAGeometry = {0xC46C1BDB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAImage = {0xC46C1BCB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAImportationResult = {0x283807B3, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; + const IID CLSID_DAJoinStyle = {0xFC54BEAA, 0x5B12, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; + const IID CLSID_DALineStyle = {0x283807B8, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; + const IID CLSID_DAMatte = {0xC46C1BC3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAMicrophone = {0xC46C1BE3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAMontage = {0xC46C1BD7, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DANumber = {0xC46C1BC7, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAPair = {0xBC0BFD34, 0xD21D, 0x11D0, [0x93, 0x85, 0x00, 0xC0, 0x4F, 0xB6, 0xBD, 0x36]}; + const IID CLSID_DAPath2 = {0xC46C1BCF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAPickableResult = {0x34F681D0, 0x3640, 0x11CF, [0x92, 0x94, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; + const IID CLSID_DAPoint2 = {0xC46C1BD5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAPoint3 = {0xC46C1BE5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DarwinAppPublisher = {0xCFCCC7A0, 0xA282, 0x11D1, [0x90, 0x82, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; + const IID CLSID_DASound = {0xC46C1BD1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAStatics = {0xC46C1BF3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAString = {0xC46C1BD3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DataChannel = {0xBBB36F15, 0x408D, 0x4056, [0x8C, 0x27, 0x92, 0x08, 0x43, 0xD4, 0x0B, 0xE5]}; + const IID CLSID_DATransform2 = {0xC46C1BDF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DATransform3 = {0xC46C1BC5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DATuple = {0x283807B7, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; + const IID CLSID_DAUserData = {0x283807B4, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; + const IID CLSID_DAVector2 = {0xC46C1BE1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAVector3 = {0xC46C1BC0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAView = {0x960D8EFF, 0xE494, 0x11D1, [0xAB, 0x75, 0x00, 0xC0, 0x4F, 0xD9, 0x2B, 0x6B]}; + const IID CLSID_DAViewerControl = {0xC46C1BEB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DAViewerControlWindowed = {0xC46C1BF1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID CLSID_DCOMAccessControl = {0x0000031D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_DebugHelper = {0x0BFCC060, 0x8C1D, 0x11D0, [0xAC, 0xCD, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; + const IID CLSID_DeCompMimeFilter = {0x8F6B0360, 0xB80D, 0x11D0, [0xA9, 0xB3, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; + const IID CLSID_DefaultDebugSessionProvider = {0x834128A2, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID CLSID_DirectDraw = {0xD7B70EE0, 0x4340, 0x11CF, [0xB0, 0x63, 0x00, 0x20, 0xAF, 0xC2, 0xCD, 0x35]}; + const IID CLSID_DirectDrawClipper = {0x593817A0, 0x7DB3, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; + const IID CLSID_DirectDrawFactory2 = {0xB9DC4790, 0x4AF1, 0x11D1, [0x8C, 0x4C, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; + const IID CLSID_DirectInput = {0x25E609E0, 0xB259, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID CLSID_DirectInputDevice = {0x25E609E1, 0xB259, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID CLSID_DirectMusic = {0x636B9F10, 0x0C7D, 0x11D1, [0x95, 0xB2, 0x00, 0x20, 0xAF, 0xDC, 0x74, 0x21]}; + const IID CLSID_DirectMusicBand = {0x79BA9E00, 0xB6EE, 0x11D1, [0x86, 0xBE, 0x00, 0xC0, 0x4F, 0xBF, 0x8F, 0xEF]}; + const IID CLSID_DirectMusicBandTrack = {0xD2AC2894, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicChordMap = {0xD2AC288F, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicChordMapTrack = {0xD2AC2896, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicChordTrack = {0xD2AC288B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicCollection = {0x480FF4B0, 0x28B2, 0x11D1, [0xBE, 0xF7, 0x00, 0xC0, 0x4F, 0xBF, 0x8F, 0xEF]}; + const IID CLSID_DirectMusicCommandTrack = {0xD2AC288C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicComposer = {0xD2AC2890, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicGraph = {0xD2AC2884, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicLoader = {0xD2AC2892, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicMotifTrack = {0xD2AC288E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicMuteTrack = {0xD2AC2898, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicPerformance = {0xD2AC2881, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicSegment = {0xD2AC2882, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicSegmentState = {0xD2AC2883, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicSeqTrack = {0xD2AC2886, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicSignPostTrack = {0xF17E8672, 0xC3B4, 0x11D1, [0x87, 0x0B, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicStyle = {0xD2AC288A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicStyleTrack = {0xD2AC288D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicSynth = {0x58C2B4D0, 0x46E7, 0x11D1, [0x89, 0xAC, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; + const IID CLSID_DirectMusicSysExTrack = {0xD2AC2887, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicTempoTrack = {0xD2AC2885, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectMusicTimeSigTrack = {0xD2AC2888, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID CLSID_DirectPlay = {0xD1EB6D20, 0x8923, 0x11D0, [0x9D, 0x97, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; + const IID CLSID_DirectPlayLobby = {0x2FE8F810, 0xB2A5, 0x11D0, [0xA7, 0x87, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; + const IID CLSID_DirectSound = {0x47D4D946, 0x62E8, 0x11CF, [0x93, 0xBC, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID CLSID_DirectSoundCapture = {0xB0210780, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; + const IID CLSID_DispatchMapper = {0xE9225296, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID CLSID_DNWithBinary = {0x7E99C0A3, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; + const IID CLSID_DNWithString = {0x334857CC, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; + const IID CLSID_DocFileColumnProvider = {0x24F14F01, 0x7B1C, 0x11D1, [0x83, 0x8F, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; + const IID CLSID_DocHostUIHandler = {0x7057E952, 0xBD1B, 0x11D1, [0x89, 0x19, 0x00, 0xC0, 0x4F, 0xC2, 0xC8, 0x36]}; + const IID CLSID_DOMChildrenCollection = {0x3050F5AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_DOMDocument = {0x2933BF90, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID CLSID_DOMFreeThreadedDocument = {0x2933BF91, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID CLSID_DragDropHelper = {0x4657278A, 0x411B, 0x11D2, [0x83, 0x9A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; + const IID CLSID_DriveSizeCategorizer = {0x94357B53, 0xCA29, 0x4B78, [0x83, 0xAE, 0xE8, 0xFE, 0x74, 0x09, 0x13, 0x4F]}; + const IID CLSID_DriveTypeCategorizer = {0xB0A8F3CF, 0x4333, 0x4BAB, [0x88, 0x73, 0x1C, 0xCB, 0x1C, 0xAD, 0xA4, 0x8B]}; + const IID CLSID_DsDisplaySpecifier = {0x1AB4A8C0, 0x6A0B, 0x11D2, [0xAD, 0x49, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; + const IID CLSID_DsDomainTreeBrowser = {0x1698790A, 0xE2B4, 0x11D0, [0xB0, 0xB1, 0x00, 0xC0, 0x4F, 0xD8, 0xDC, 0xA6]}; + const IID CLSID_DsFindAdvanced = {0x83EE3FE3, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; + const IID CLSID_DsFindComputer = {0x16006700, 0x87AD, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; + const IID CLSID_DsFindContainer = {0xC1B3CBF2, 0x886A, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; + const IID CLSID_DsFindDomainController = {0x538C7B7E, 0xD25E, 0x11D0, [0x97, 0x42, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; + const IID CLSID_DsFindFrsMembers = {0x94CE4B18, 0xB3D3, 0x11D1, [0xB9, 0xB4, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xB0]}; + const IID CLSID_DsFindObjects = {0x83EE3FE1, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; + const IID CLSID_DsFindPeople = {0x83EE3FE2, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; + const IID CLSID_DsFindPrinter = {0xB577F070, 0x7EE2, 0x11D0, [0x91, 0x3F, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; + const IID CLSID_DsFindVolume = {0xC1B3CBF1, 0x886A, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; + const IID CLSID_DsFolderProperties = {0x9E51E0D0, 0x6E0F, 0x11D2, [0x96, 0x01, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; + const IID CLSID_DsPropertyPages = {0x0D45D530, 0x764B, 0x11D0, [0xA1, 0xCA, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; + const IID CLSID_DsQuery = {0x8A23E65E, 0x31C2, 0x11D0, [0x89, 0x1C, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; + const IID CLSID_DWbemClassObject = {0x64AB3751, 0x12BC, 0x11D1, [0x9E, 0x61, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID CLSID_DWbemContext = {0x752FF212, 0xF7B7, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID CLSID_DWbemLocator = {0xCB7CA032, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID CLSID_DX2D = {0x473AA80B, 0x4577, 0x11D1, [0x81, 0xA8, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID CLSID_DXFade = {0x16B280C5, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID CLSID_DXGradient = {0xC6365470, 0xF667, 0x11D1, [0x90, 0x67, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID CLSID_DXLUTBuilder = {0x1E54333B, 0x2A00, 0x11D1, [0x81, 0x98, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID CLSID_DXRasterizer = {0x8652CE55, 0x9E80, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID CLSID_DXSurface = {0x0E890F83, 0x5F79, 0x11D1, [0x90, 0x43, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID CLSID_DXSurfaceModifier = {0x3E669F1D, 0x9C23, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID CLSID_DXTAlpha = {0xADC6CB82, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID CLSID_DXTAlphaImageLoader = {0x0C7EFBDE, 0x0303, 0x4C6F, [0xA4, 0xF7, 0x31, 0xFA, 0x2B, 0xE5, 0xE3, 0x97]}; + const IID CLSID_DXTAlphaImageLoaderPP = {0x8C80CE2D, 0x850D, 0x47DA, [0x8E, 0xCD, 0x55, 0x02, 0x35, 0x62, 0xD1, 0x67]}; + const IID CLSID_DXTAlphaPP = {0xD687A7E0, 0x4BA4, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; + const IID CLSID_DXTaskManager = {0x4CB26C03, 0xFF93, 0x11D0, [0x81, 0x7E, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID CLSID_DXTBarn = {0xEC9BA17D, 0x60B5, 0x462B, [0xA6, 0xD8, 0x14, 0xB8, 0x90, 0x57, 0xE2, 0x2A]}; + const IID CLSID_DXTBlinds = {0x9A4A4A51, 0xFB3A, 0x4F4B, [0x9B, 0x57, 0xA2, 0x91, 0x2A, 0x28, 0x97, 0x69]}; + const IID CLSID_DXTCheckerBoard = {0xB3EE7802, 0x8224, 0x4787, [0xA1, 0xEA, 0xF0, 0xDE, 0x16, 0xDE, 0xAB, 0xD3]}; + const IID CLSID_DXTCheckerBoardPP = {0xCBF47525, 0x98D2, 0x45EA, [0xB8, 0x43, 0xFD, 0x21, 0x3D, 0x93, 0x2B, 0x10]}; + const IID CLSID_DXTChroma = {0x421516C1, 0x3CF8, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID CLSID_DXTChromaPP = {0xEC7E0760, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; + const IID CLSID_DXTComposite = {0x9A43A844, 0x0831, 0x11D1, [0x81, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID CLSID_DXTConvolution = {0x2BC0EF29, 0xE6BA, 0x11D1, [0x81, 0xDD, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID CLSID_DXTDropShadow = {0xADC6CB86, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID CLSID_DXTDropShadowPP = {0xEC7E0761, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; + const IID CLSID_DXTFilter = {0x385A91BC, 0x1E8A, 0x4E4A, [0xA7, 0xA6, 0xF4, 0xFC, 0x1E, 0x6C, 0xA1, 0xBD]}; + const IID CLSID_DXTFilterBehavior = {0x649EEC1E, 0xB579, 0x4E8C, [0xBB, 0x3B, 0x49, 0x97, 0xF8, 0x42, 0x65, 0x36]}; + const IID CLSID_DXTFilterCollection = {0xA7EE7F34, 0x3BD1, 0x427F, [0x92, 0x31, 0xF9, 0x41, 0xE9, 0xB7, 0xE1, 0xFE]}; + const IID CLSID_DXTFilterFactory = {0x81397204, 0xF51A, 0x4571, [0x8D, 0x7B, 0xDC, 0x03, 0x05, 0x21, 0xAA, 0xBD]}; + const IID CLSID_DXTGlow = {0x9F8E6421, 0x3D9B, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID CLSID_DXTGlowPP = {0xEC7E0764, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; + const IID CLSID_DXTGradientD = {0x623E2882, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; + const IID CLSID_DXTGradientWipe = {0xB96F67A2, 0x30C2, 0x47E8, [0xBD, 0x85, 0x70, 0xA2, 0xC9, 0x48, 0xB5, 0x0F]}; + const IID CLSID_DXTICMFilter = {0xA1BFB370, 0x5A9F, 0x4429, [0xBB, 0x72, 0xB1, 0x3E, 0x2F, 0xEA, 0xED, 0xEF]}; + const IID CLSID_DXTICMFilterPP = {0x1958FB12, 0x31E6, 0x47E5, [0xAA, 0x49, 0xB2, 0x3D, 0x12, 0xC8, 0x53, 0xE6]}; + const IID CLSID_DXTInset = {0x76F363F2, 0x7E9F, 0x4ED7, [0xA6, 0xA7, 0xEE, 0x30, 0x35, 0x1B, 0x66, 0x28]}; + const IID CLSID_DXTIris = {0x049F2CE6, 0xD996, 0x4721, [0x89, 0x7A, 0xDB, 0x15, 0xCE, 0x9E, 0xB7, 0x3D]}; + const IID CLSID_DXTLabel = {0x54702535, 0x2606, 0x11D1, [0x99, 0x9C, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; + const IID CLSID_DXTLight = {0xF9EFBEC2, 0x4302, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID CLSID_DXTLightPP = {0x694AF25F, 0x124D, 0x11D3, [0x91, 0xD5, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID CLSID_DXTMaskFilter = {0x3A04D93B, 0x1EDD, 0x4F3F, [0xA3, 0x75, 0xA0, 0x3E, 0xC1, 0x95, 0x72, 0xC4]}; + const IID CLSID_DXTMatrix = {0x4ABF5A06, 0x5568, 0x4834, [0xBE, 0xE3, 0x32, 0x7A, 0x6D, 0x95, 0xA6, 0x85]}; + const IID CLSID_DXTMatrixPP = {0xC591103A, 0xB3A8, 0x4D47, [0xA3, 0xF7, 0x2A, 0xEE, 0xE4, 0xB8, 0x01, 0x3F]}; + const IID CLSID_DXTMetaBurnFilm = {0x107045D1, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaCenterPeel = {0xAA0D4D0C, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID CLSID_DXTMetaColorFade = {0x2A54C908, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaFlowMotion = {0x2A54C90B, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaGriddler = {0x2A54C911, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaGriddler2 = {0x2A54C913, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaJaws = {0x2A54C904, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaLightWipe = {0x107045C8, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaLiquid = {0xAA0D4D0A, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID CLSID_DXTMetaPageTurn = {0xAA0D4D08, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID CLSID_DXTMetaPeelPiece = {0xAA0D4D10, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID CLSID_DXTMetaPeelSmall = {0xAA0D4D0E, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID CLSID_DXTMetaPeelSplit = {0xAA0D4D12, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID CLSID_DXTMetaRadialScaleWipe = {0x107045CA, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaRipple = {0xAA0D4D03, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID CLSID_DXTMetaRoll = {0x9C61F46E, 0x0530, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID CLSID_DXTMetaThreshold = {0x2A54C915, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaTwister = {0x107045CF, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaVacuum = {0x2A54C90D, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaWater = {0x107045C5, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaWhiteOut = {0x107045CC, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID CLSID_DXTMetaWormHole = {0x0E6AE022, 0x0C83, 0x11D2, [0x8C, 0xD4, 0x00, 0x10, 0x4B, 0xC7, 0x5D, 0x9A]}; + const IID CLSID_DXTMotionBlur = {0xDD13DE77, 0xD3BA, 0x42D4, [0xB5, 0xC6, 0x77, 0x45, 0xFA, 0x4E, 0x2D, 0x4B]}; + const IID CLSID_DXTMotionBlurPP = {0x926433E1, 0x7F8F, 0x4BC6, [0xBE, 0xC4, 0x8C, 0x12, 0x6C, 0x6B, 0x7D, 0xC4]}; + const IID CLSID_DXTRadialWipe = {0x164484A9, 0x35D9, 0x4FB7, [0x9F, 0xAB, 0x48, 0x27, 0x3B, 0x96, 0xAA, 0x1D]}; + const IID CLSID_DXTRandomBars = {0x2E7700B7, 0x27C4, 0x437F, [0x9F, 0xBF, 0x1E, 0x8B, 0xE2, 0x81, 0x75, 0x66]}; + const IID CLSID_DXTRandomBarsPP = {0xE3E6AE11, 0x7FDC, 0x40C4, [0xAF, 0xBF, 0x1D, 0xCE, 0xA8, 0x28, 0x62, 0xCC]}; + const IID CLSID_DXTRandomDissolve = {0xF7F4A1B6, 0x8E87, 0x452F, [0xA2, 0xD7, 0x30, 0x77, 0xF5, 0x08, 0xDB, 0xC0]}; + const IID CLSID_DXTransformFactory = {0xD1FE6762, 0xFC48, 0x11D0, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; + const IID CLSID_DXTRedirect = {0x42B07B28, 0x2280, 0x4937, [0xB0, 0x35, 0x02, 0x93, 0xFB, 0x81, 0x27, 0x81]}; + const IID CLSID_DXTRevealTrans = {0xE31E87C4, 0x86EA, 0x4940, [0x9B, 0x8A, 0x5B, 0xD5, 0xD1, 0x79, 0xA7, 0x37]}; + const IID CLSID_DXTScale = {0x555278E2, 0x05DB, 0x11D1, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; + const IID CLSID_DXTShadow = {0xE71B4063, 0x3E59, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID CLSID_DXTShadowPP = {0xEC7E0765, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; + const IID CLSID_DXTSlide = {0xD1C5A1E7, 0xCC47, 0x4E32, [0xBD, 0xD2, 0x4B, 0x3C, 0x5F, 0xC5, 0x0A, 0xF5]}; + const IID CLSID_DXTSpiral = {0x4A03DCB9, 0x6E17, 0x4A39, [0x88, 0x45, 0x4E, 0xE7, 0xDC, 0x53, 0x31, 0xA5]}; + const IID CLSID_DXTStretch = {0xF088DE73, 0xBDD0, 0x4E3C, [0x81, 0xF8, 0x6D, 0x32, 0xF4, 0xFE, 0x9D, 0x28]}; + const IID CLSID_DXTStrips = {0x63A4B1FC, 0x259A, 0x4A5B, [0x81, 0x29, 0xA8, 0x3B, 0x8C, 0x9E, 0x6F, 0x4F]}; + const IID CLSID_DXTStripsPP = {0xFEC0B7EE, 0x7AEC, 0x4067, [0x9E, 0xE1, 0xFA, 0xCF, 0xB7, 0xCE, 0x9A, 0xF9]}; + const IID CLSID_DXTWave = {0xADC6CB88, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID CLSID_DXTWavePP = {0xF12456C0, 0x4C9E, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; + const IID CLSID_DXTWipe = {0xAF279B30, 0x86EB, 0x11D1, [0x81, 0xBF, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID CLSID_DXTWipePP = {0x7FFE4D08, 0xFBFD, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; + const IID CLSID_DXTZigzag = {0x23E26328, 0x3928, 0x40F2, [0x95, 0xE5, 0x93, 0xCA, 0xD6, 0x90, 0x16, 0xEB]}; + const IID CLSID_EAPOLManager = {0xBA126AE4, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID CLSID_Email = {0x8F92A857, 0x478E, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_EnumAdapterInfo = {0x6F9942CA, 0xC1B1, 0x4AB5, [0x93, 0xDA, 0x60, 0x58, 0x99, 0x1D, 0xC8, 0xF3]}; + const IID CLSID_EVENTQUEUE = {0x6E0FF466, 0x339E, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; + const IID CLSID_EXTENDEDERRORINFO = {0xC8B522CF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID CLSID_FadePP = {0x16B280C6, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID CLSID_FaxNumber = {0xA5062215, 0x4681, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_FilePlaybackTerminal = {0x0CB9914C, 0x79CD, 0x47DC, [0xAD, 0xB0, 0x32, 0x7F, 0x47, 0xCE, 0xFB, 0x20]}; + const IID CLSID_FileProtocol = {0x79EAC9E7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_FileRecordingTerminal = {0x521F3D06, 0xC3D0, 0x4511, [0x86, 0x17, 0x86, 0xB9, 0xA7, 0x83, 0xDA, 0x77]}; + const IID CLSID_FileRecordingTrack = {0xBF14A2E4, 0xE88B, 0x4EF5, [0x97, 0x40, 0x5A, 0xC5, 0xD0, 0x22, 0xF8, 0xC9]}; + const IID CLSID_FileSearchBand = {0xC4EE31F3, 0x4768, 0x11D2, [0xBE, 0x5C, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; + const IID CLSID_FileSysColumnProvider = {0x0D2E74C4, 0x3C34, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; + const IID CLSID_FileTerminal = {0xAAF578F1, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID CLSID_FolderShortcut = {0x0AFACED1, 0xE828, 0x11D1, [0x91, 0x87, 0xB5, 0x32, 0xF1, 0xE9, 0x57, 0x5D]}; + const IID CLSID_FolderViewHost = {0x20B1CB23, 0x6968, 0x4EB9, [0xB7, 0xD4, 0xA6, 0x6D, 0x00, 0xD0, 0x7C, 0xEE]}; + const IID CLSID_FontNames = {0x3050F83A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_FramesCollection = {0x3050F7F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_FreeSpaceCategorizer = {0xB5607793, 0x24AC, 0x44C7, [0x82, 0xE2, 0x83, 0x17, 0x26, 0xAA, 0x6C, 0xB7]}; + const IID CLSID_FtpProtocol = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_GblComponentCategoriesMgr = {0x0002E006, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_GLOBAL_BROADCAST = {0xD34F1810, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_GopherProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_GradientPP = {0x623E2880, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; + const IID CLSID_HandsetTerminal = {0xAAF578EB, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID CLSID_HeadsetTerminal = {0xAAF578ED, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID CLSID_HNetCfgMgr = {0x46C166AA, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID CLSID_Hold = {0xB3AD3E13, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_HomeNetAutoConfigService = {0x9A8EA3B5, 0x572E, 0x4CB3, [0x9E, 0xB9, 0xEC, 0x68, 0x9A, 0xC5, 0x75, 0xAE]}; + const IID CLSID_HomePage = {0x766BF2AE, 0xD650, 0x11D1, [0x98, 0x11, 0x00, 0xC0, 0x4F, 0xC3, 0x1D, 0x2E]}; + const IID CLSID_HostDialogHelper = {0x429AF92C, 0xA51F, 0x11D2, [0x86, 0x1E, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; + const IID CLSID_HTADocument = {0x3050F5C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTCAttachBehavior = {0x3050F5F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTCDefaultDispatch = {0x3050F4FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTCDescBehavior = {0x3050F5DD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTCEventBehavior = {0x3050F4FE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTCMethodBehavior = {0x3050F630, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTCPropertyBehavior = {0x3050F5DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLAnchorElement = {0x3050F248, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLAppBehavior = {0x3050F5CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLApplication = {0x3050F4D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLAreaElement = {0x3050F283, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLAreasCollection = {0x3050F4CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLAttributeCollection = {0x3050F4CC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLBaseElement = {0x3050F276, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLBaseFontElement = {0x3050F282, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLBGsound = {0x3050F370, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLBlockElement = {0x3050F281, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLBody = {0x3050F24A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLBRElement = {0x3050F280, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLButtonElement = {0x3050F2C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLCommentElement = {0x3050F317, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLCurrentStyle = {0x3050F3DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLDDElement = {0x3050F27F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLDefaults = {0x3050F6C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLDialog = {0x3050F28A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLDivElement = {0x3050F27E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLDivPosition = {0x3050F249, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HtmlDlgSafeHelper = {0x3050F819, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLDListElement = {0x3050F27D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLDocument = {0x25336920, 0x03F9, 0x11CF, [0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13]}; + const IID CLSID_HTMLDOMAttribute = {0x3050F4B2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLDOMImplementation = {0x3050F80E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLDOMTextNode = {0x3050F4BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLDTElement = {0x3050F27C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLElementCollection = {0x3050F4CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLEmbed = {0x3050F25D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLFieldSetElement = {0x3050F3E8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLFontElement = {0x3050F27B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLFormElement = {0x3050F251, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLFrameBase = {0x3050F312, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLFrameElement = {0x3050F314, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLFrameSetSite = {0x3050F31A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLGenericElement = {0x3050F4B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLHeadElement = {0x3050F493, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLHeaderElement = {0x3050F27A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLHistory = {0xFECEAAA3, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; + const IID CLSID_HTMLHRElement = {0x3050F252, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLHtmlElement = {0x3050F491, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLIFrame = {0x3050F316, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLImageElementFactory = {0x3050F38F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLImg = {0x3050F241, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLInputButtonElement = {0x3050F2B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLInputElement = {0x3050F5D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLInputFileElement = {0x3050F2AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLInputImage = {0x3050F2C4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLInputTextElement = {0x3050F2AB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLIsIndexElement = {0x3050F278, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLLabelElement = {0x3050F32B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLLegendElement = {0x3050F3E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLLIElement = {0x3050F273, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLLinkElement = {0x3050F277, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLListElement = {0x3050F272, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLLoadOptions = {0x18845040, 0x0FA5, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; + const IID CLSID_HTMLLocation = {0x163BB1E1, 0x6E00, 0x11CF, [0x83, 0x7A, 0x48, 0xDC, 0x04, 0xC1, 0x00, 0x00]}; + const IID CLSID_HTMLMapElement = {0x3050F271, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLMarqueeElement = {0x3050F2B9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLMetaElement = {0x3050F275, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLNamespace = {0x3050F6BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLNamespaceCollection = {0x3050F6B9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLNavigator = {0xFECEAAA6, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; + const IID CLSID_HTMLNextIdElement = {0x3050F279, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLNoShowElement = {0x3050F38B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLObjectElement = {0x3050F24E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLOListElement = {0x3050F270, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLOptionButtonElement = {0x3050F2BE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLOptionElement = {0x3050F24D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLOptionElementFactory = {0x3050F38D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLParaElement = {0x3050F26F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLParamElement = {0x3050F83E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLPhraseElement = {0x3050F26E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLPluginDocument = {0x25336921, 0x03F9, 0x11CF, [0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13]}; + const IID CLSID_HTMLPopup = {0x3050F667, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLRenderStyle = {0x3050F6AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLRichtextElement = {0x3050F2DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLRuleStyle = {0x3050F3D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLScreen = {0x3050F35D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLScriptElement = {0x3050F28C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLSelectElement = {0x3050F245, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLSpanElement = {0x3050F3F5, 0x98B4, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLSpanFlow = {0x3050F3E6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLStyle = {0x3050F285, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLStyleElement = {0x3050F37D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLStyleFontFace = {0x3050F3D4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLStyleSheet = {0x3050F2E4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLStyleSheetPage = {0x3050F7EF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLStyleSheetPagesCollection = {0x3050F7F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLStyleSheetRule = {0x3050F3CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLStyleSheetRulesCollection = {0x3050F3CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLStyleSheetsCollection = {0x3050F37F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLTable = {0x3050F26B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLTableCaption = {0x3050F2EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLTableCell = {0x3050F246, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLTableCol = {0x3050F26C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLTableRow = {0x3050F26D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLTableSection = {0x3050F2E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLTextAreaElement = {0x3050F2AC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLTextElement = {0x3050F26A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLTitleElement = {0x3050F284, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLUListElement = {0x3050F269, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLUnknownElement = {0x3050F268, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLUrnCollection = {0x3050F580, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HTMLWindow2 = {0xD48A6EC6, 0x6A4A, 0x11CF, [0x94, 0xA7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID CLSID_HTMLWindowProxy = {0x3050F391, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_HttpProtocol = {0x79EAC9E2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_HttpSProtocol = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_HWShellExecute = {0xFFB8655F, 0x81B9, 0x4FCE, [0xB8, 0x9C, 0x9A, 0x6B, 0xA7, 0x6D, 0x13, 0xE7]}; + const IID CLSID_IActiveXSafetyProvider = {0xAAF8C6CE, 0xF972, 0x11D0, [0x97, 0xEB, 0x00, 0xAA, 0x00, 0x61, 0x53, 0x33]}; + const IID CLSID_IImageDecodeFilter = {0x607FD4E8, 0x0A03, 0x11D1, [0xAB, 0x1D, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; + const IID CLSID_IImgCtx = {0x3050F3D6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_ImageList = {0x7C476BA2, 0x02B1, 0x48F4, [0x80, 0x48, 0xB2, 0x46, 0x19, 0xDD, 0xC0, 0x58]}; + const IID CLSID_ImageProperties = {0x7AB770C7, 0x0E23, 0x4D7A, [0x8A, 0xA2, 0x19, 0xBF, 0xAD, 0x47, 0x98, 0x29]}; + const IID CLSID_InProcFreeMarshaler = {0x0000033A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_IntDitherer = {0x05F6FE1A, 0xECEF, 0x11D0, [0xAA, 0xE7, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; + const IID CLSID_IntelliForms = {0x613AB92E, 0x16BF, 0x11D2, [0xBC, 0xA5, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; + const IID CLSID_Internet = {0x871C5380, 0x42A0, 0x1069, [0xA2, 0xEA, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; + const IID CLSID_InternetButtons = {0x1E796980, 0x9CC5, 0x11D1, [0xA8, 0x3F, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0x61]}; + const IID CLSID_InternetConnectionBeaconServic = {0x04DF613A, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; + const IID CLSID_InternetExplorer = {0x0002DF01, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_InternetPrintOrdering = {0xADD36AA8, 0x751A, 0x4579, [0xA2, 0x66, 0xD6, 0x6F, 0x52, 0x02, 0xCC, 0xBB]}; + const IID CLSID_InternetSecurityManager = {0x7B8A2D94, 0x0AC9, 0x11D1, [0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; + const IID CLSID_InternetShortcut = {0xFBF23B40, 0xE3F0, 0x101B, [0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8]}; + const IID CLSID_InternetZoneManager = {0x7B8A2D95, 0x0AC9, 0x11D1, [0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; + const IID CLSID_LanConnectionManager = {0xBA126AD3, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID CLSID_LargeInteger = {0x927971F5, 0x0939, 0x11D1, [0x8B, 0xE1, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID CLSID_LDAPConnectionObject = {0x7DA2A9C4, 0x0C46, 0x43BD, [0xB0, 0x4E, 0xD9, 0x2B, 0x1B, 0xE2, 0x7C, 0x45]}; + const IID CLSID_LDAPObject = {0x05709878, 0x5195, 0x466C, [0x9E, 0x64, 0x48, 0x7C, 0xE3, 0xCA, 0x20, 0xBF]}; + const IID CLSID_LinkColumnProvider = {0x24F14F02, 0x7B1C, 0x11D1, [0x83, 0x8F, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; + const IID CLSID_LocalMachineClasses = {0x00000331, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_LogManager = {0x8FDA8FA4, 0x8763, 0x479F, [0xB9, 0xB1, 0x22, 0x02, 0xB2, 0x80, 0xD2, 0x93]}; + const IID CLSID_LUTBuilderPP = {0x25B33662, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; + const IID CLSID_MachineDebugManager = {0x0C0A3666, 0x30C9, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID CLSID_MailAutoDiscovery = {0x008FD5DD, 0x6DBB, 0x48E3, [0x99, 0x1B, 0x2D, 0x3E, 0xD6, 0x58, 0x51, 0x6A]}; + const IID CLSID_MailProtocolADEntry = {0x61A5D6F3, 0xC131, 0x4C35, [0xBF, 0x40, 0x90, 0xA5, 0x0F, 0x21, 0x41, 0x22]}; + const IID CLSID_ManualResetEvent = {0x0000032C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_McastAddressAllocation = {0xDF0DAEF2, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; + const IID CLSID_MediaStreamTerminal = {0xE2F7AEF7, 0x4971, 0x11D1, [0xA6, 0x71, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xE8]}; + const IID CLSID_MergedCategorizer = {0x8E827C11, 0x33E7, 0x4BC1, [0xB2, 0x42, 0x8C, 0xD9, 0xA1, 0xC2, 0xB3, 0x04]}; + const IID CLSID_MHTMLDocument = {0x3050F3D9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_MicrophoneTerminal = {0xAAF578EF, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID CLSID_MicrosoftDS = {0xFE1290F0, 0xCFBD, 0x11CF, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; + const IID CLSID_MigrationWizardAuto = {0x67331D85, 0xBE17, 0x42F6, [0x8D, 0x3F, 0x47, 0xB8, 0xE8, 0xB2, 0x66, 0x37]}; + const IID CLSID_MkProtocol = {0x79EAC9E6, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_MofCompiler = {0x6DAF9757, 0x2E37, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID CLSID_MountedVolume = {0x12518493, 0x00B2, 0x11D2, [0x9F, 0xA5, 0x9E, 0x34, 0x20, 0x52, 0x41, 0x53]}; + const IID CLSID_MSBurnEngineObj = {0x520CCA67, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID CLSID_MSDATT = {0xC8B522CE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID CLSID_MSDAVTM = {0x0C733A8E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID CLSID_MSDiscMasterObj = {0x520CCA63, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID CLSID_MSDiscRecorderObj = {0x520CCA61, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID CLSID_MSDiscStashObj = {0x520CCA65, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID CLSID_MSEnumDiscRecordersObj = {0x8A03567A, 0x63CB, 0x4BA8, [0xBA, 0xF6, 0x52, 0x11, 0x98, 0x16, 0xD1, 0xEF]}; + const IID CLSID_MSOButtons = {0x178F34B8, 0xA282, 0x11D2, [0x86, 0xC5, 0x00, 0xC0, 0x4F, 0x8E, 0xEA, 0x99]}; + const IID CLSID_MyComputer = {0x20D04FE0, 0x3AEA, 0x1069, [0xA2, 0xD8, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; + const IID CLSID_MyDocuments = {0x450D8FBA, 0xAD25, 0x11D0, [0x98, 0xA8, 0x08, 0x00, 0x36, 0x1B, 0x11, 0x03]}; + const IID CLSID_NameTranslate = {0x274FAE1F, 0x3626, 0x11D1, [0xA3, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_NetAddress = {0xB0B71247, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_NetConnectionHNetUtil = {0xBA126AE3, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID CLSID_NetConnectionUiUtilities = {0x7007ACD3, 0x3202, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID CLSID_NetCrawler = {0x601AC3DC, 0x786A, 0x4EB0, [0xBF, 0x40, 0xEE, 0x35, 0x21, 0xE7, 0x0B, 0xFB]}; + const IID CLSID_NetSharingManager = {0x5C63C1AD, 0x3956, 0x4FF8, [0x84, 0x86, 0x40, 0x03, 0x47, 0x58, 0x31, 0x5B]}; + const IID CLSID_NetworkDomain = {0x46E06680, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; + const IID CLSID_NetworkPlaces = {0x208D2C60, 0x3AEA, 0x1069, [0xA2, 0xD7, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; + const IID CLSID_NetworkServer = {0xC0542A90, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; + const IID CLSID_NetworkShare = {0x54A754C0, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; + const IID CLSID_NetworkType = {0xD4F3D51B, 0x1755, 0x4953, [0x9C, 0x8B, 0x24, 0x95, 0xAB, 0xE5, 0xE0, 0x7E]}; + const IID CLSID_NodeType = {0x1AAA3D11, 0x4792, 0x44E4, [0x9D, 0x49, 0x78, 0xFE, 0xD3, 0x69, 0x1A, 0x14]}; + const IID CLSID_NotificaitonTest1 = {0xC733E501, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_NotificaitonTest2 = {0xC733E502, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_NotificaitonTest3 = {0xC733E503, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_NotificaitonTest4 = {0xC733E504, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_NotificationManager = {0xE1813DD0, 0xAADA, 0x4738, [0xB5, 0xFF, 0x96, 0xB4, 0x18, 0x9C, 0x50, 0x19]}; + const IID CLSID_ObjectManager = {0x955661BD, 0xCCA2, 0x4EAC, [0x91, 0xD0, 0xA0, 0x39, 0x6A, 0x28, 0xAE, 0xFD]}; + const IID CLSID_OctetList = {0x1241400F, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_OldHTMLDocument = {0xD48A6EC9, 0x6A4A, 0x11CF, [0x94, 0xA7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID CLSID_OldHTMLFormElement = {0x0D04D285, 0x6BEC, 0x11CF, [0x8B, 0x97, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; + const IID CLSID_OLEDB_CONVERSIONLIBRARY = {0xC8B522D1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID CLSID_OLEDB_ENUMERATOR = {0xC8B522D0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID CLSID_OLEDB_ROWPOSITIONLIBRARY = {0x2048EEE6, 0x7FA2, 0x11D0, [0x9E, 0x6A, 0x00, 0xA0, 0xC9, 0x13, 0x8C, 0x29]}; + const IID CLSID_PassportClientServices = {0x2D2307C8, 0x7DB4, 0x40D6, [0x91, 0x00, 0xD5, 0x2A, 0xF4, 0xF9, 0x7A, 0x5B]}; + const IID CLSID_Path = {0xB2538919, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_Pathname = {0x080D0D78, 0xF421, 0x11D0, [0xA3, 0x6E, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_PeerFactory = {0x3050F4CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_PendingProxyConnection = {0xD8A68E5E, 0x2B37, 0x426C, [0xA3, 0x29, 0xC1, 0x17, 0xC1, 0x4C, 0x42, 0x9E]}; + const IID CLSID_PersistentDataChannel = {0xBC9B54AB, 0x7883, 0x4C13, [0x90, 0x9F, 0x03, 0x3D, 0x03, 0x26, 0x79, 0x90]}; + const IID CLSID_PersistPropset = {0xFB8F0821, 0x0164, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; + const IID CLSID_Picture_Dib = {0x00000316, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_Picture_EnhMetafile = {0x00000319, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_Picture_Metafile = {0x00000315, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_Pixelate = {0x4CCEA634, 0xFBE0, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID CLSID_PixelatePP = {0x4CCEA635, 0xFBE0, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID CLSID_PluggableSuperclassRegistratio = {0xBB918E32, 0x2A5C, 0x4986, [0xAB, 0x40, 0x16, 0x86, 0xA0, 0x34, 0x39, 0x0A]}; + const IID CLSID_PluggableTerminalRegistration = {0x45234E3E, 0x61CC, 0x4311, [0xA3, 0xAB, 0x24, 0x80, 0x82, 0x55, 0x44, 0x82]}; + const IID CLSID_PostAgent = {0xD8BD2030, 0x6FC9, 0x11D0, [0x86, 0x4F, 0x00, 0xAA, 0x00, 0x68, 0x09, 0xD9]}; + const IID CLSID_PostalAddress = {0x0A75AFCD, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_PrimaryControlChannel = {0x3CEB5509, 0xC1CD, 0x432F, [0x9D, 0x8F, 0x65, 0xD1, 0xE2, 0x86, 0xAA, 0x80]}; + const IID CLSID_Printers = {0x2227A280, 0x3AEA, 0x1069, [0xA2, 0xDE, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; + const IID CLSID_PROCESS_BROADCAST = {0xD34F1811, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_ProcessDebugManager = {0x78A51822, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID CLSID_ProgressDialog = {0xF8383852, 0xFCD3, 0x11D1, [0xA6, 0xB9, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; + const IID CLSID_PropertiesUI = {0xD912F8CF, 0x0396, 0x4915, [0x88, 0x4E, 0xFB, 0x42, 0x5D, 0x32, 0x94, 0x3B]}; + const IID CLSID_PropertyEntry = {0x72D3EDC2, 0xA4C4, 0x11D0, [0x85, 0x33, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID CLSID_PropertyValue = {0x7B9E38B0, 0xA97C, 0x11D0, [0x85, 0x34, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID CLSID_PSBindCtx = {0x00000312, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_PSClassObject = {0x0000030E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_PSClientSite = {0x0000030D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_PSDragDrop = {0x00000311, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_PSEnumerators = {0x00000313, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_PseudoSink = {0xE002E4F0, 0xE6EA, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; + const IID CLSID_PSGenObject = {0x0000030C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_PSInPlaceActive = {0x0000030F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_PSInPlaceFrame = {0x00000310, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_PSUrlMonProxy = {0x79EAC9F1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_PublishDropTarget = {0xCC6EEFFB, 0x43F6, 0x46C5, [0x96, 0x19, 0x51, 0xD5, 0x71, 0x96, 0x7F, 0x7D]}; + const IID CLSID_PublishingWizard = {0x6B33163C, 0x76A5, 0x4B6C, [0xBF, 0x21, 0x45, 0xDE, 0x9C, 0xD5, 0x03, 0xA1]}; + const IID CLSID_QueryAssociations = {0xA07034FD, 0x6CAA, 0x4954, [0xAC, 0x3F, 0x97, 0xA2, 0x72, 0x16, 0xF9, 0x8A]}; + const IID CLSID_QueryCancelAutoPlay = {0x331F1768, 0x05A9, 0x4DDD, [0xB8, 0x6E, 0xDA, 0xE3, 0x4D, 0xDC, 0x99, 0x8A]}; + const IID CLSID_RecycleBin = {0x645FF040, 0x5081, 0x101B, [0x9F, 0x08, 0x00, 0xAA, 0x00, 0x2F, 0x95, 0x4E]}; + const IID CLSID_RemoteUnknownPSFactory = {0x00000340, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_Rendezvous = {0xF1029E5B, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID CLSID_ReplicaPointer = {0xF5D1BADF, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_Request = {0x6BC096B1, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; + const IID CLSID_RequestMakeCall = {0xAC48FFE0, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID CLSID_ResProtocol = {0x3050F3BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_RTCClient = {0x7A42EA29, 0xA2B7, 0x40C4, [0xB0, 0x91, 0xF6, 0xF0, 0x24, 0xAA, 0x89, 0xBE]}; + const IID CLSID_Scriptlet = {0xAE24FDAE, 0x03C6, 0x11D1, [0x8B, 0x76, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; + const IID CLSID_SdoMachine = {0xE9218AE7, 0x9E91, 0x11D1, [0xBF, 0x60, 0x00, 0x80, 0xC7, 0x84, 0x6B, 0xC0]}; + const IID CLSID_SdpConferenceBlob = {0x9B2719DD, 0xB696, 0x11D0, [0xA4, 0x89, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID CLSID_SearchAssistantOC = {0xB45FF030, 0x4447, 0x11D2, [0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; + const IID CLSID_SearchCommand = {0xB005E690, 0x678D, 0x11D1, [0xB7, 0x58, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; + const IID CLSID_SecondaryControlChannel = {0x7B3181A0, 0xC92F, 0x4567, [0xB0, 0xFA, 0xCD, 0x9A, 0x10, 0xEC, 0xD7, 0xD1]}; + const IID CLSID_SecurityDescriptor = {0xB958F73C, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID CLSID_SENS = {0xD597CAFE, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; + const IID CLSID_ServiceManager = {0xABD0388A, 0xDEC1, 0x44F3, [0x98, 0xE1, 0x8D, 0x5C, 0xC8, 0x0B, 0x97, 0xEB]}; + const IID CLSID_SharingApplicationDefinition = {0x46C166B0, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID CLSID_SharingConfiguration = {0x46C166B1, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID CLSID_SharingManagerEnumApplicationDe = {0x46C166AE, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID CLSID_SharingManagerEnumPortMapping = {0x46C166AF, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID CLSID_SharingManagerEnumPrivateConnec = {0x46C166AD, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID CLSID_SharingManagerEnumPublicConnect = {0x46C166AC, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID CLSID_Shell = {0x13709620, 0xC279, 0x11CE, [0xA4, 0x9E, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID CLSID_ShellBrowserWindow = {0xC08AFD90, 0xF2A1, 0x11D1, [0x84, 0x55, 0x00, 0xA0, 0xC9, 0x1F, 0x38, 0x80]}; + const IID CLSID_ShellDesktop = {0x00021400, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_ShellDispatchInproc = {0x0A89A860, 0xD7B1, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID CLSID_ShellFolderItem = {0x2FE352EA, 0xFD1F, 0x11D2, [0xB1, 0xF4, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; + const IID CLSID_ShellFolderView = {0x62112AA1, 0xEBE4, 0x11CF, [0xA5, 0xFB, 0x00, 0x20, 0xAF, 0xE7, 0x29, 0x2D]}; + const IID CLSID_ShellFolderViewOC = {0x9BA05971, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; + const IID CLSID_ShellFSFolder = {0xF3364BA0, 0x65B9, 0x11CE, [0xA9, 0xBA, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37]}; + const IID CLSID_ShellImageDataFactory = {0x66E4E4FB, 0xF385, 0x4DD0, [0x8D, 0x74, 0xA2, 0xEF, 0xD1, 0xBC, 0x61, 0x78]}; + const IID CLSID_ShellLink = {0x00021401, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_ShellLinkObject = {0x11219420, 0x1768, 0x11D1, [0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; + const IID CLSID_ShellLocalMachine = {0x60664CAF, 0xAF0D, 0x0005, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; + const IID CLSID_ShellLogonEnumUsers = {0x60664CAF, 0xAF0D, 0x0004, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; + const IID CLSID_ShellLogonStatusHost = {0x60664CAF, 0xAF0D, 0x0007, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; + const IID CLSID_ShellLogonUser = {0x60664CAF, 0xAF0D, 0x0003, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; + const IID CLSID_ShellNameSpace = {0x55136805, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; + const IID CLSID_ShellUIHelper = {0x64AB4BB7, 0x111E, 0x11D1, [0x8F, 0x79, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; + const IID CLSID_ShellWindows = {0x9BA05972, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; + const IID CLSID_SizeCategorizer = {0x55D7B852, 0xF6D1, 0x42F2, [0xAA, 0x75, 0x87, 0x28, 0xA1, 0xB2, 0xD2, 0x64]}; + const IID CLSID_SoftDistExt = {0xB15B8DC0, 0xC7E1, 0x11D0, [0x86, 0x80, 0x00, 0xAA, 0x00, 0xBD, 0xCB, 0x71]}; + const IID CLSID_SpeakerphoneTerminal = {0xAAF578EE, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID CLSID_SpeakersTerminal = {0xAAF578F0, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID CLSID_SpeechUIServer = {0x1443904B, 0x34E4, 0x40F6, [0xB3, 0x0F, 0x6B, 0xEB, 0x81, 0x26, 0x7B, 0x80]}; + const IID CLSID_StaticDib = {0x00000316, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_StaticMetafile = {0x00000315, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_StdAsyncActManager = {0x00000329, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_StdComponentCategoriesMgr = {0x0002E005, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_StdEncodingFilterFac = {0x54C37CD0, 0xD944, 0x11D0, [0xA9, 0xF4, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; + const IID CLSID_StdEvent = {0x0000032B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_StdFont = {0x0BE35203, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; + const IID CLSID_StdGlobalInterfaceTable = {0x00000323, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_StdHlink = {0x79EAC9D0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_StdHlinkBrowseContext = {0x79EAC9D1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_StdMarshal = {0x00000017, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_StdNotificationMgr = {0xC733E4AF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_StdPicture = {0x0BE35204, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; + const IID CLSID_StdURLMoniker = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_StdURLProtocol = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_StgFolder = {0xE773F1AF, 0x3A65, 0x4866, [0x85, 0x7D, 0x84, 0x6F, 0xC9, 0xC4, 0x59, 0x8A]}; + const IID CLSID_StockColorPage = {0x7EBDAAE1, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; + const IID CLSID_StockFontPage = {0x7EBDAAE0, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; + const IID CLSID_StockPicturePage = {0x7EBDAAE2, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; + const IID CLSID_SubscriptionMgr = {0xABBE31D0, 0x6DAE, 0x11D0, [0xBE, 0xCA, 0x00, 0xC0, 0x4F, 0xD9, 0x40, 0xBE]}; + const IID CLSID_SubscriptionThrottler = {0x1E9B00E5, 0x9846, 0x11D1, [0xA1, 0xEE, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; + const IID CLSID_SWbemDateTime = {0x47DFBE54, 0xCF76, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; + const IID CLSID_SWbemEventSource = {0x04B83D58, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemLastError = {0xC2FEEEAC, 0xCFCD, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemLocator = {0x76A64158, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemMethod = {0x04B83D5B, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemMethodSet = {0x04B83D5A, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemNamedValue = {0x04B83D60, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemNamedValueSet = {0x9AED384E, 0xCE8B, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemObject = {0x04B83D62, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemObjectEx = {0xD6BDAFB2, 0x9435, 0x491F, [0xBB, 0x87, 0x6A, 0xA0, 0xF0, 0xBC, 0x31, 0xA2]}; + const IID CLSID_SWbemObjectPath = {0x5791BC26, 0xCE9C, 0x11D1, [0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C]}; + const IID CLSID_SWbemObjectSet = {0x04B83D61, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemPrivilege = {0x26EE67BC, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemPrivilegeSet = {0x26EE67BE, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemProperty = {0x04B83D5D, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemPropertySet = {0x04B83D5C, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemQualifier = {0x04B83D5F, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemQualifierSet = {0x04B83D5E, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemRefreshableItem = {0x8C6854BC, 0xDE4B, 0x11D3, [0xB3, 0x90, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; + const IID CLSID_SWbemRefresher = {0xD269BF5C, 0xD9C1, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; + const IID CLSID_SWbemSecurity = {0xB54D66E9, 0x2287, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemServices = {0x04B83D63, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID CLSID_SWbemServicesEx = {0x62E522DC, 0x8CF3, 0x40A8, [0x8B, 0x2E, 0x37, 0xD5, 0x95, 0x65, 0x1E, 0x40]}; + const IID CLSID_SWbemSink = {0x75718C9A, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; + const IID CLSID_SynchronizeContainer = {0x0000032D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID CLSID_SyncMgr = {0x6295DF27, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; + const IID CLSID_TAPI = {0x21D6D48E, 0xA88B, 0x11D0, [0x83, 0xDD, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID CLSID_TaskbarList = {0x56FDF344, 0xFD6D, 0x11D0, [0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90]}; + const IID CLSID_TaskManager = {0xC0F615A7, 0xF874, 0x4521, [0x87, 0x91, 0xED, 0x3B, 0x84, 0x01, 0x7E, 0xF7]}; + const IID CLSID_TerminalManager = {0x7170F2E0, 0x9BE3, 0x11D0, [0xA0, 0x09, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; + const IID CLSID_THREAD_BROADCAST = {0xD34F1812, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_ThreadDialogProcParam = {0x3050F5EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID CLSID_ThumbnailFCNHandler = {0xCEFC65D8, 0x66D8, 0x11D1, [0x8D, 0x8C, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; + const IID CLSID_ThumbnailUpdater = {0xA3C63918, 0x889D, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; + const IID CLSID_TIME = {0xE32EF57B, 0x7FDE, 0x4765, [0x9B, 0xC5, 0xA1, 0xBA, 0x97, 0x05, 0xC4, 0x4E]}; + const IID CLSID_TIMEAnimation = {0xF99D135A, 0xC07C, 0x449E, [0x96, 0x5C, 0x7D, 0xBB, 0x7C, 0x55, 0x4A, 0x51]}; + const IID CLSID_TimeCategorizer = {0x3BB4118F, 0xDDFD, 0x4D30, [0xA3, 0x48, 0x9F, 0xB5, 0xD6, 0xBF, 0x1A, 0xFE]}; + const IID CLSID_TIMEColorAnimation = {0x62F75052, 0xF3EC, 0x4A64, [0x84, 0xFB, 0xAB, 0x18, 0xE0, 0x74, 0x6E, 0xD8]}; + const IID CLSID_TIMEFactory = {0x17237A20, 0x3ADB, 0x48EC, [0xB1, 0x82, 0x35, 0x29, 0x1F, 0x11, 0x57, 0x90]}; + const IID CLSID_TIMEFilterAnimation = {0xC54515D0, 0xF2E5, 0x4BDD, [0xAA, 0x86, 0x1E, 0x4F, 0x23, 0xE4, 0x80, 0xE7]}; + const IID CLSID_TIMEMotionAnimation = {0x0019A09D, 0x1A81, 0x41C5, [0x89, 0xEC, 0xD9, 0xE7, 0x37, 0x81, 0x13, 0x03]}; + const IID CLSID_TIMESetAnimation = {0xBA91CE53, 0xBAEB, 0x4F05, [0x86, 0x1C, 0x0A, 0x2A, 0x09, 0x34, 0xF8, 0x2E]}; + const IID CLSID_Timestamp = {0xB2BED2EB, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_ToolbarExtButtons = {0x2CE4B5D8, 0xA28F, 0x11D2, [0x86, 0xC5, 0x00, 0xC0, 0x4F, 0x8E, 0xEA, 0x99]}; + const IID CLSID_TrackFile = {0x8790C947, 0xA30B, 0x11D0, [0x8C, 0xAB, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; + const IID CLSID_TrkForceOwnership = {0xA2531F45, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; + const IID CLSID_TrkRestoreNotify = {0xD0056F6C, 0xE2A0, 0x11D0, [0xB1, 0xC2, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; + const IID CLSID_TrkRestoreParser = {0x755939E4, 0xE381, 0x11D0, [0xB1, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; + const IID CLSID_TypedName = {0xB33143CB, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID CLSID_UmiLDAPQueryObject = {0xCD5D4D76, 0xA818, 0x4F95, [0xB9, 0x58, 0x79, 0x70, 0xFD, 0x94, 0x12, 0xCA]}; + const IID CLSID_UnsecuredApartment = {0x49BD2028, 0x1523, 0x11D1, [0xAD, 0x79, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID CLSID_UPnPDescriptionDocument = {0x1D8A9B47, 0x3A28, 0x4CE2, [0x8A, 0x4B, 0xBD, 0x34, 0xE4, 0x5B, 0xCE, 0xEB]}; + const IID CLSID_UPnPDevice = {0xA32552C5, 0xBA61, 0x457A, [0xB5, 0x9A, 0xA2, 0x56, 0x1E, 0x12, 0x5E, 0x33]}; + const IID CLSID_UPnPDeviceFinder = {0xE2085F28, 0xFEB7, 0x404A, [0xB8, 0xE7, 0xE6, 0x59, 0xBD, 0xEA, 0xAA, 0x02]}; + const IID CLSID_UPnPDeviceHostICSSupport = {0x797A9BB1, 0x9E49, 0x4E63, [0xAF, 0xE1, 0x1B, 0x45, 0xB9, 0xDC, 0x81, 0x62]}; + const IID CLSID_UPnPDeviceHostSetup = {0xB4609411, 0xC81C, 0x4CCE, [0x8C, 0x76, 0xC6, 0xB5, 0x0C, 0x94, 0x02, 0xC6]}; + const IID CLSID_UPnPDevices = {0xB9E84FFD, 0xAD3C, 0x40A4, [0xB8, 0x35, 0x08, 0x82, 0xEB, 0xCB, 0xAA, 0xA8]}; + const IID CLSID_UPnPNAT = {0xAE1E00AA, 0x3FD5, 0x403C, [0x8A, 0x27, 0x2B, 0xBD, 0xC3, 0x0C, 0xD0, 0xE1]}; + const IID CLSID_UPnPRegistrar = {0x204810B9, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; + const IID CLSID_UPnPService = {0xC624BA95, 0xFBCB, 0x4409, [0x8C, 0x03, 0x8C, 0xCE, 0xEC, 0x53, 0x3E, 0xF1]}; + const IID CLSID_UPnPServices = {0xC0BC4B4A, 0xA406, 0x4EFC, [0x93, 0x2F, 0xB8, 0x54, 0x6B, 0x81, 0x00, 0xCC]}; + const IID CLSID_UrlMkBindCtx = {0x79EAC9F2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID CLSID_UserEventTimer = {0x864A1288, 0x354C, 0x4D19, [0x9D, 0x68, 0xC2, 0x74, 0x2B, 0xB1, 0x49, 0x97]}; + const IID CLSID_UserEventTimerCallback = {0x15FFFD13, 0x5140, 0x41B8, [0xB8, 0x9A, 0xC8, 0xD5, 0x75, 0x9C, 0xD2, 0xB2]}; + const IID CLSID_UserNotification = {0x0010890E, 0x8789, 0x413C, [0xAD, 0xBC, 0x48, 0xF5, 0xB5, 0x11, 0xB3, 0xAF]}; + const IID CLSID_VideoInputTerminal = {0xAAF578EC, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID CLSID_VideoWindowTerm = {0xF7438990, 0xD6EB, 0x11D0, [0x82, 0xA6, 0x00, 0xAA, 0x00, 0xB5, 0xCA, 0x1B]}; + const IID CLSID_VirusScan = {0xE88E5DE0, 0xBD3E, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; + const IID CLSID_WbemAdministrativeLocator = {0xCB8555CC, 0x9128, 0x11D1, [0xAD, 0x9B, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID CLSID_WbemAuthenticatedLocator = {0xCD184336, 0x9128, 0x11D1, [0xAD, 0x9B, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID CLSID_WbemBackupRestore = {0xC49E32C6, 0xBC8B, 0x11D2, [0x85, 0xD4, 0x00, 0x10, 0x5A, 0x1F, 0x83, 0x04]}; + const IID CLSID_WbemClassObject = {0x9A653086, 0x174F, 0x11D2, [0xB5, 0xF9, 0x00, 0x10, 0x4B, 0x70, 0x3E, 0xFD]}; + const IID CLSID_WbemContext = {0x674B6698, 0xEE92, 0x11D0, [0xAD, 0x71, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID CLSID_WbemDCOMTransport = {0xF7CE2E13, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID CLSID_WbemDecoupledBasicEventProvide = {0xF5F75737, 0x2843, 0x4F22, [0x93, 0x3D, 0xC7, 0x6A, 0x97, 0xCD, 0xA6, 0x2F]}; + const IID CLSID_WbemDecoupledRegistrar = {0x4CFC7932, 0x0F9D, 0x4BEF, [0x9C, 0x32, 0x8E, 0xA2, 0xA6, 0xB5, 0x6F, 0xCB]}; + const IID CLSID_WbemDefPath = {0xCF4CC405, 0xE2C5, 0x4DDD, [0xB3, 0xCE, 0x5E, 0x75, 0x82, 0xD8, 0xC9, 0xFA]}; + const IID CLSID_WbemLevel1Login = {0x8BC3F05E, 0xD86B, 0x11D0, [0xA0, 0x75, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID CLSID_WbemLocalAddrRes = {0xA1044801, 0x8F7E, 0x11D1, [0x9E, 0x7C, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID CLSID_WbemLocator = {0x4590F811, 0x1D3A, 0x11D0, [0x89, 0x1F, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; + const IID CLSID_WbemObjectTextSrc = {0x8D1C559D, 0x84F0, 0x4BB3, [0xA7, 0xD5, 0x56, 0xA7, 0x43, 0x5A, 0x9B, 0xA6]}; + const IID CLSID_WbemQuery = {0xEAC8A024, 0x21E2, 0x4523, [0xAD, 0x73, 0xA7, 0x1A, 0x0A, 0xA2, 0xF5, 0x6A]}; + const IID CLSID_WbemRefresher = {0xC71566F2, 0x561E, 0x11D1, [0xAD, 0x87, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID CLSID_WbemStatusCodeText = {0xEB87E1BD, 0x3233, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID CLSID_WbemUnauthenticatedLocator = {0x443E7B79, 0xDE31, 0x11D2, [0xB3, 0x40, 0x00, 0x10, 0x4B, 0xCC, 0x4B, 0x4A]}; + const IID CLSID_WbemUninitializedClassObject = {0x7A0227F6, 0x7108, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID CLSID_WebBrowser = {0x8856F961, 0x340A, 0x11D0, [0xA9, 0x6B, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; + const IID CLSID_WebBrowser_V1 = {0xEAB22AC3, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; + const IID CLSID_WebCheck = {0xE6FB5E20, 0xDE35, 0x11CF, [0x9C, 0x87, 0x00, 0xAA, 0x00, 0x51, 0x27, 0xED]}; + const IID CLSID_WebCheckDefaultProcess = {0xC733E4B0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID CLSID_WebCheckOfflineSync = {0x7FC0B86E, 0x5FA7, 0x11D1, [0xBC, 0x7C, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; + const IID CLSID_WebCrawlerAgent = {0x08165EA0, 0xE946, 0x11CF, [0x9C, 0x87, 0x00, 0xAA, 0x00, 0x51, 0x27, 0xED]}; + const IID CLSID_WebViewFolderContents = {0x1820FED0, 0x473E, 0x11D0, [0xA9, 0x6C, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; + const IID CLSID_WebWizardHost = {0xC827F149, 0x55C1, 0x4D28, [0x93, 0x5E, 0x57, 0xE4, 0x7C, 0xAE, 0xD9, 0x73]}; + const IID CLSID_wfolders = {0xBAE31F9A, 0x1B81, 0x11D2, [0xA9, 0x7A, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; + const IID CLSID_WinNTConnectionObject = {0x7992C6EB, 0xD142, 0x4332, [0x83, 0x1E, 0x31, 0x54, 0xC5, 0x0A, 0x83, 0x16]}; + const IID CLSID_WinNTObject = {0xB8324185, 0x4050, 0x4220, [0x98, 0x0A, 0xAB, 0x14, 0x62, 0x3E, 0x06, 0x3A]}; + const IID CLSID_WinNTSystemInfo = {0x66182EC4, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; + const IID CLSID_WMIExtension = {0xF0975AFE, 0x5C7F, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; + const IID CLSID_XMLDocument = {0xCFC399AF, 0xD876, 0x11D0, [0x9C, 0x10, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; + const IID CLSID_XMLDSOControl = {0x550DDA30, 0x0541, 0x11D2, [0x9C, 0xA9, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; + const IID CLSID_XMLHTTPRequest = {0xED8C108E, 0x4349, 0x11D2, [0x91, 0xA4, 0x00, 0xC0, 0x4F, 0x79, 0x69, 0xE8]}; + const IID CLSID_XMLParser = {0xD2423620, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; + const IID DB_PROPERTY_AUTOMATICUPDATE = {0xC8B52209, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_BTREE = {0xC8B52201, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_CHECK_OPTION = {0xC8B5220B, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_CLUSTERED = {0xC8B521FF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_CONSTRAINT_CHECK_DEFERRE = {0xC8B521F0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_DISALLOWNULL = {0xC8B52205, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_DROP_CASCADE = {0xC8B521F3, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_EXPLICITUPDATE = {0xC8B5220A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_FILLFACTOR = {0xC8B52203, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_HASH = {0xC8B52202, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_IGNOREANYNULL = {0xC8B52207, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_IGNORENULL = {0xC8B52206, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_INITIALSIZE = {0xC8B52204, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_NONCLUSTERED = {0xC8B52200, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_ON_COMMIT_PRESERVE_ROWS = {0xC8B52230, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_PRIMARY = {0xC8B521FC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_SORTBOOKMARKS = {0xC8B52208, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DB_PROPERTY_UNIQUE = {0xC8B521F5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBCOL_SELFCOLUMNS = {0xC8B52231, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBCOL_SPECIALCOL = {0xC8B52232, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_COMMAND = {0xC8B522F8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_CONTAINEROBJECT = {0xC8B522FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_DBSQL = {0xC8B521FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_DEFAULT = {0xC8B521FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_DSO = {0xC8B522F4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_HISTOGRAM_ROWSET = {0xC8B52300, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_LDAPDialect = {0xEFF65380, 0x9C98, 0x11CF, [0xB9, 0x63, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_LIKE_DOS = {0xC8B521F7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_LIKE_MAPI = {0xC8B521F9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_LIKE_OFS = {0xC8B521F8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_LIKE_SQL = {0xC8B521F6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_MDX = {0xA07CCCD0, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; + const IID DBGUID_ROW = {0xC8B522F7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_ROWSET = {0xC8B522F6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_SESSION = {0xC8B522F5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_SQL = {0xC8B522D7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBGUID_STREAM = {0xC8B522F9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_CHARACTERSET = {0xC8B522ED, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_COLLATION = {0xC8B522EA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_COLUMN = {0xC8B522E4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_DATABASE = {0xC8B522E5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_DOMAIN = {0xC8B522E9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_PROCEDURE = {0xC8B522E6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_SCHEMA = {0xC8B522E8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_SCHEMAROWSET = {0xC8B522EC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_TABLE = {0xC8B522E2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_TRANSLATION = {0xC8B522EE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_TRUSTEE = {0xC8B522EB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBOBJECT_VIEW = {0xC8B522E7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_ADSIBIND = {0x6DA66DC8, 0xB7E8, 0x11D2, [0x9D, 0x60, 0x00, 0xC0, 0x4F, 0x68, 0x93, 0x45]}; + const IID DBPROPSET_ADSISEARCH = {0xCFCFC928, 0x9AA2, 0x11D0, [0xA7, 0x9A, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; + const IID DBPROPSET_COLUMN = {0xC8B522B9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_COLUMNALL = {0xC8B522F0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_CONSTRAINTALL = {0xC8B522FA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_DATASOURCE = {0xC8B522BA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_DATASOURCEALL = {0xC8B522C0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_DATASOURCEINFO = {0xC8B522BB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_DATASOURCEINFOALL = {0xC8B522C1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_DBINIT = {0xC8B522BC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_DBINITALL = {0xC8B522CA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_INDEX = {0xC8B522BD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_INDEXALL = {0xC8B522F1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_PROPERTIESINERROR = {0xC8B522D4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_ROWSET = {0xC8B522BE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_ROWSETALL = {0xC8B522C2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_SESSION = {0xC8B522C6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_SESSIONALL = {0xC8B522C7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_STREAM = {0xC8B522FD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_STREAMALL = {0xC8B522FE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_TABLE = {0xC8B522BF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_TABLEALL = {0xC8B522F2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_TRUSTEE = {0xC8B522E1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_TRUSTEEALL = {0xC8B522F3, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_VIEW = {0xC8B522DF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBPROPSET_VIEWALL = {0xC8B522FC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_ASSERTIONS = {0xC8B52210, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_CATALOGS = {0xC8B52211, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_CHARACTER_SETS = {0xC8B52212, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_CHECK_CONSTRAINTS = {0xC8B52215, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE = {0xC8B52301, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_COLLATIONS = {0xC8B52213, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_COLUMN_DOMAIN_USAGE = {0xC8B5221B, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_COLUMN_PRIVILEGES = {0xC8B52221, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_COLUMNS = {0xC8B52214, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_CONSTRAINT_COLUMN_USAGE = {0xC8B52216, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_CONSTRAINT_TABLE_USAGE = {0xC8B52217, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_FOREIGN_KEYS = {0xC8B522C4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_INDEXES = {0xC8B5221E, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_KEY_COLUMN_USAGE = {0xC8B52218, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_PRIMARY_KEYS = {0xC8B522C5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_PROCEDURE_COLUMNS = {0xC8B522C9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_PROCEDURE_PARAMETERS = {0xC8B522B8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_PROCEDURES = {0xC8B52224, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_PROVIDER_TYPES = {0xC8B5222C, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_REFERENTIAL_CONSTRAINTS = {0xC8B52219, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_SCHEMATA = {0xC8B52225, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_SQL_LANGUAGES = {0xC8B52226, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_STATISTICS = {0xC8B52227, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_TABLE_CONSTRAINTS = {0xC8B5221A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_TABLE_PRIVILEGES = {0xC8B52222, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_TABLE_STATISTICS = {0xC8B522FF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_TABLES = {0xC8B52229, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_TABLES_INFO = {0xC8B522E0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_TRANSLATIONS = {0xC8B5222A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_TRUSTEE = {0xC8B522EF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_USAGE_PRIVILEGES = {0xC8B52223, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_VIEW_COLUMN_USAGE = {0xC8B5222E, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_VIEW_TABLE_USAGE = {0xC8B5222F, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DBSCHEMA_VIEWS = {0xC8B5222D, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID DDVPTYPE_BROOKTREE = {0x1352A560, 0xDA61, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; + const IID DDVPTYPE_CCIR656 = {0xFCA326A0, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; + const IID DDVPTYPE_E_HREFH_VREFL = {0x92783220, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; + const IID DDVPTYPE_E_HREFL_VREFL = {0xE09C77E0, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; + const IID DDVPTYPE_PHILIPS = {0x332CF160, 0xDA61, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; + const IID DIID__SearchAssistantEvents = {0x1611FDDA, 0x445B, 0x11D2, [0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; + const IID DIID_DispCEventObj = {0x3050F558, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispDOMChildrenCollection = {0x3050F577, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTCAttachBehavior = {0x3050F583, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTCDefaultDispatch = {0x3050F573, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTCDescBehavior = {0x3050F57E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTCEventBehavior = {0x3050F574, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTCMethodBehavior = {0x3050F587, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTCPropertyBehavior = {0x3050F57F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLAnchorElement = {0x3050F502, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLAppBehavior = {0x3050F57C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLAreaElement = {0x3050F503, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLAreasCollection = {0x3050F56A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLAttributeCollection = {0x3050F56C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLBaseElement = {0x3050F518, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLBaseFontElement = {0x3050F504, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLBGsound = {0x3050F53C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLBlockElement = {0x3050F506, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLBody = {0x3050F507, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLBRElement = {0x3050F53A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLButtonElement = {0x3050F51F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLCommentElement = {0x3050F50A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLCurrentStyle = {0x3050F557, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLDDElement = {0x3050F50B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLDefaults = {0x3050F58C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLDivElement = {0x3050F50C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLDivPosition = {0x3050F50F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLDListElement = {0x3050F53B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLDocument = {0x3050F55F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLDOMAttribute = {0x3050F564, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLDOMImplementation = {0x3050F58F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLDOMTextNode = {0x3050F565, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLDTElement = {0x3050F50D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLElementCollection = {0x3050F56B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLEmbed = {0x3050F52E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLFieldSetElement = {0x3050F545, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLFontElement = {0x3050F512, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLFormElement = {0x3050F510, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLFrameBase = {0x3050F541, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLFrameElement = {0x3050F513, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLFrameSetSite = {0x3050F514, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLGenericElement = {0x3050F563, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLHeadElement = {0x3050F561, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLHeaderElement = {0x3050F515, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLHRElement = {0x3050F53D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLHtmlElement = {0x3050F560, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLIFrame = {0x3050F51B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLImg = {0x3050F51C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLInputElement = {0x3050F57D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLIsIndexElement = {0x3050F519, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLLabelElement = {0x3050F522, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLLegendElement = {0x3050F546, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLLIElement = {0x3050F523, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLLinkElement = {0x3050F524, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLListElement = {0x3050F525, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLMapElement = {0x3050F526, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLMarqueeElement = {0x3050F527, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLMetaElement = {0x3050F517, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLNextIdElement = {0x3050F51A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLNoShowElement = {0x3050F528, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLObjectElement = {0x3050F529, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLOListElement = {0x3050F52A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLOptionElement = {0x3050F52B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLParaElement = {0x3050F52C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLParamElement = {0x3050F590, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLPhraseElement = {0x3050F52D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLPopup = {0x3050F589, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLRenderStyle = {0x3050F58B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLRichtextElement = {0x3050F54D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLRuleStyle = {0x3050F55C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLScreen = {0x3050F591, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLScriptElement = {0x3050F530, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLSelectElement = {0x3050F531, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLSpanElement = {0x3050F548, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLSpanFlow = {0x3050F544, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLStyle = {0x3050F55A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLStyleElement = {0x3050F511, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLStyleSheet = {0x3050F58D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLTable = {0x3050F532, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLTableCaption = {0x3050F508, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLTableCell = {0x3050F536, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLTableCol = {0x3050F533, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLTableRow = {0x3050F535, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLTableSection = {0x3050F534, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLTextAreaElement = {0x3050F521, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLTextElement = {0x3050F537, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLTitleElement = {0x3050F516, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLUListElement = {0x3050F538, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLUnknownElement = {0x3050F539, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLWindow2 = {0x3050F55D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispHTMLWindowProxy = {0x3050F55E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispIHTMLInputButtonElement = {0x3050F51E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispIHTMLInputFileElement = {0x3050F542, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispIHTMLInputImage = {0x3050F51D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispIHTMLInputTextElement = {0x3050F520, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DispIHTMLOptionButtonElement = {0x3050F509, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_DMigrationWizardAutoEvents = {0xD2AC137D, 0xA6D8, 0x43B6, [0x98, 0x79, 0xEA, 0x34, 0xB6, 0x7E, 0x18, 0x80]}; + const IID DIID_DSearchCommandEvents = {0x60890160, 0x69F0, 0x11D1, [0xB7, 0x58, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; + const IID DIID_DShellFolderViewEvents = {0x62112AA2, 0xEBE4, 0x11CF, [0xA5, 0xFB, 0x00, 0x20, 0xAF, 0xE7, 0x29, 0x2D]}; + const IID DIID_DShellNameSpaceEvents = {0x55136806, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; + const IID DIID_DShellWindowsEvents = {0xFE4106E0, 0x399A, 0x11D0, [0xA4, 0x8C, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; + const IID DIID_DWebBridgeEvents = {0xA6D897FF, 0x0A95, 0x11D1, [0xB0, 0xBA, 0x00, 0x60, 0x08, 0x16, 0x6E, 0x11]}; + const IID DIID_DWebBrowserEvents = {0xEAB22AC2, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; + const IID DIID_DWebBrowserEvents2 = {0x34A715A0, 0x6587, 0x11D0, [0x92, 0x4A, 0x00, 0x20, 0xAF, 0xC7, 0xAC, 0x4D]}; + const IID DIID_HTMLAnchorEvents = {0x3050F29D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLAnchorEvents2 = {0x3050F610, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLAreaEvents = {0x3050F366, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLAreaEvents2 = {0x3050F611, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLButtonElementEvents = {0x3050F2B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLButtonElementEvents2 = {0x3050F617, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLControlElementEvents = {0x3050F4EA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLControlElementEvents2 = {0x3050F612, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLDocumentEvents = {0x3050F260, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLDocumentEvents2 = {0x3050F613, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLElementEvents = {0x3050F33C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLElementEvents2 = {0x3050F60F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLFormElementEvents = {0x3050F364, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLFormElementEvents2 = {0x3050F614, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLFrameSiteEvents = {0x3050F800, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLFrameSiteEvents2 = {0x3050F7FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLImgEvents = {0x3050F25B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLImgEvents2 = {0x3050F616, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLInputFileElementEvents = {0x3050F2AF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLInputFileElementEvents2 = {0x3050F61A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLInputImageEvents = {0x3050F2C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLInputImageEvents2 = {0x3050F61B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLInputTextElementEvents = {0x3050F2A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLInputTextElementEvents2 = {0x3050F618, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLLabelEvents = {0x3050F329, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLLabelEvents2 = {0x3050F61C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLLinkElementEvents = {0x3050F3CC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLLinkElementEvents2 = {0x3050F61D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLMapEvents = {0x3050F3BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLMapEvents2 = {0x3050F61E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLMarqueeElementEvents = {0x3050F2B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLMarqueeElementEvents2 = {0x3050F61F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLNamespaceEvents = {0x3050F6BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLObjectElementEvents = {0x3050F3C4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLObjectElementEvents2 = {0x3050F620, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLOptionButtonElementEvents = {0x3050F2BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLOptionButtonElementEvents2 = {0x3050F619, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLPersistEvents = {0x3050F4C7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLScriptEvents = {0x3050F3E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLScriptEvents2 = {0x3050F621, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLSelectElementEvents = {0x3050F302, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLSelectElementEvents2 = {0x3050F622, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLStyleElementEvents = {0x3050F3CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLStyleElementEvents2 = {0x3050F615, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLTableEvents = {0x3050F407, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLTableEvents2 = {0x3050F623, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLTextContainerEvents = {0x1FF6AA72, 0x5842, 0x11CF, [0xA7, 0x07, 0x00, 0xAA, 0x00, 0xC0, 0x09, 0x8D]}; + const IID DIID_HTMLTextContainerEvents2 = {0x3050F624, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_HTMLWindowEvents = {0x96A0A4E0, 0xD062, 0x11CF, [0x94, 0xB6, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; + const IID DIID_HTMLWindowEvents2 = {0x3050F625, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_IRTCDispatchEventNotification = {0x176DDFBE, 0xFEC0, 0x4D55, [0xBC, 0x87, 0x84, 0xCF, 0xF1, 0xEF, 0x7F, 0x91]}; + const IID DIID_ISWbemSinkEvents = {0x75718CA0, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; + const IID DIID_ITTAPIDispatchEventNotification = {0x9F34325B, 0x7E62, 0x11D2, [0x94, 0x57, 0x00, 0xC0, 0x4F, 0x8E, 0xC8, 0x88]}; + const IID DIID_LayoutRectEvents = {0x3050F674, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID DIID_XMLDOMDocumentEvents = {0x3EFAA427, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; + const IID DPAID_ComPort = {0xF2F0CE00, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID DPAID_INet = {0xC4A54DA0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID DPAID_INetPort = {0xE4524541, 0x8EA5, 0x11D1, [0x8A, 0x96, 0x00, 0x60, 0x97, 0xB0, 0x14, 0x11]}; + const IID DPAID_INetW = {0xE63232A0, 0x9DBF, 0x11D0, [0x9C, 0xC1, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID DPAID_LobbyProvider = {0x59B95640, 0x9667, 0x11D0, [0xA7, 0x7D, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; + const IID DPAID_Modem = {0xF6DCC200, 0xA2FE, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID DPAID_ModemW = {0x01FD92E0, 0xA2FF, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID DPAID_Phone = {0x78EC89A0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID DPAID_PhoneW = {0xBA5A7A70, 0x9DBF, 0x11D0, [0x9C, 0xC1, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID DPAID_ServiceProvider = {0x07D916C0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID DPAID_TotalSize = {0x1318F560, 0x912C, 0x11D0, [0x9D, 0xAA, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; + const IID DPLPROPERTY_LobbyGuid = {0xF56920A0, 0xD218, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; + const IID DPLPROPERTY_MessagesSupported = {0x762CCDA1, 0xD916, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; + const IID DPLPROPERTY_PlayerGuid = {0xB4319322, 0xD20D, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; + const IID DPLPROPERTY_PlayerScore = {0x48784000, 0xD219, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; + const IID DPSPGUID_IPX = {0x685BC400, 0x9D2C, 0x11CF, [0xA9, 0xCD, 0x00, 0xAA, 0x00, 0x68, 0x86, 0xE3]}; + const IID DPSPGUID_MODEM = {0x44EAA760, 0xCB68, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID DPSPGUID_SERIAL = {0x0F1D6860, 0x88D9, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID DPSPGUID_TCPIP = {0x36E95EE0, 0x8577, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0x53, 0x4E, 0x82]}; + const IID DS3DALG_HRTF_FULL = {0xC2413340, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; + const IID DS3DALG_HRTF_LIGHT = {0xC2413342, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; + const IID DS3DALG_NO_VIRTUALIZATION = {0xC241333F, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; + const IID FLAGID_Internet = {0x96300DA0, 0x2BAB, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID FMTID_AudioSummaryInformation = {0x64440490, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; + const IID FMTID_Briefcase = {0x328D8B21, 0x7729, 0x4BFC, [0x95, 0x4C, 0x90, 0x2B, 0x32, 0x9D, 0x56, 0xB0]}; + const IID FMTID_DiscardableInformation = {0xD725EBB0, 0xC9B8, 0x11D1, [0x89, 0xBC, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; + const IID FMTID_Displaced = {0x9B174B33, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; + const IID FMTID_DocSummaryInformation = {0xD5CDD502, 0x2E9C, 0x101B, [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE]}; + const IID FMTID_DRM = {0xAEAC19E4, 0x89AE, 0x4508, [0xB9, 0xB7, 0xBB, 0x86, 0x7A, 0xBE, 0xE2, 0xED]}; + const IID FMTID_ImageProperties = {0x14B81DA1, 0x0135, 0x4D31, [0x96, 0xD9, 0x6C, 0xBF, 0xC9, 0x67, 0x1A, 0x99]}; + const IID FMTID_ImageSummaryInformation = {0x6444048F, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; + const IID FMTID_InternetSite = {0x000214A1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID FMTID_Intshcut = {0x000214A0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID FMTID_MediaFileSummaryInformation = {0x64440492, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; + const IID FMTID_Misc = {0x9B174B34, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; + const IID FMTID_MUSIC = {0x56A3372E, 0xCE9C, 0x11D2, [0x9F, 0x0E, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6]}; + const IID FMTID_PropertyBag = {0x20001801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; + const IID FMTID_Query = {0x49691C90, 0x7E17, 0x101A, [0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9]}; + const IID FMTID_ShellDetails = {0x28636AA6, 0x953D, 0x11D2, [0xB5, 0xD6, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; + const IID FMTID_Storage = {0xB725F130, 0x47EF, 0x101A, [0xA5, 0xF1, 0x02, 0x60, 0x8C, 0x9E, 0xEB, 0xAC]}; + const IID FMTID_SummaryInformation = {0xF29F85E0, 0x4FF9, 0x1068, [0xAB, 0x91, 0x08, 0x00, 0x2B, 0x27, 0xB3, 0xD9]}; + const IID FMTID_UserDefinedProperties = {0xD5CDD505, 0x2E9C, 0x101B, [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE]}; + const IID FMTID_VideoSummaryInformation = {0x64440491, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; + const IID FMTID_Volume = {0x9B174B35, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; + const IID FMTID_WebView = {0xF2275480, 0xF782, 0x4291, [0xBD, 0x94, 0xF1, 0x36, 0x93, 0x51, 0x3A, 0xEC]}; + const IID GUID_ACPI_CMOS_INTERFACE_STANDARD = {0x3A8D0384, 0x6505, 0x40CA, [0xBC, 0x39, 0x56, 0xC1, 0x5F, 0x8C, 0x5F, 0xED]}; + const IID GUID_ACPI_INTERFACE_STANDARD = {0xB091A08A, 0xBA97, 0x11D0, [0xBD, 0x14, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; + const IID GUID_ACPI_PORT_RANGES_INTERFACE_STAND = {0xF14F609B, 0xCBBD, 0x4957, [0xA6, 0x74, 0xBC, 0x00, 0x21, 0x3F, 0x1C, 0x97]}; + const IID GUID_ACPI_REGS_INTERFACE_STANDARD = {0x06141966, 0x7245, 0x6369, [0x46, 0x2E, 0x4E, 0x65, 0x6C, 0x73, 0x6F, 0x6E]}; + const IID GUID_ARBITER_INTERFACE_STANDARD = {0xE644F185, 0x8C0E, 0x11D0, [0xBE, 0xCF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; + const IID GUID_BUS_INTERFACE_STANDARD = {0x496B8280, 0x6F25, 0x11D0, [0xBE, 0xAF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; + const IID GUID_BUS_TYPE_1394 = {0xF74E73EB, 0x9AC5, 0x45EB, [0xBE, 0x4D, 0x77, 0x2C, 0xC7, 0x1D, 0xDF, 0xB3]}; + const IID GUID_BUS_TYPE_AVC = {0xC06FF265, 0xAE09, 0x48F0, [0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83]}; + const IID GUID_BUS_TYPE_DOT4PRT = {0x441EE001, 0x4342, 0x11D5, [0xA1, 0x84, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; + const IID GUID_BUS_TYPE_EISA = {0xDDC35509, 0xF3FC, 0x11D0, [0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1]}; + const IID GUID_BUS_TYPE_HID = {0xEEAF37D0, 0x1963, 0x47C4, [0xAA, 0x48, 0x72, 0x47, 0x6D, 0xB7, 0xCF, 0x49]}; + const IID GUID_BUS_TYPE_INTERNAL = {0x1530EA73, 0x086B, 0x11D1, [0xA0, 0x9F, 0x00, 0xC0, 0x4F, 0xC3, 0x40, 0xB1]}; + const IID GUID_BUS_TYPE_IRDA = {0x7AE17DC1, 0xC944, 0x44D6, [0x88, 0x1F, 0x4C, 0x2E, 0x61, 0x05, 0x3B, 0xC1]}; + const IID GUID_BUS_TYPE_ISAPNP = {0xE676F854, 0xD87D, 0x11D0, [0x92, 0xB2, 0x00, 0xA0, 0xC9, 0x05, 0x5F, 0xC5]}; + const IID GUID_BUS_TYPE_LPTENUM = {0xC4CA1000, 0x2DDC, 0x11D5, [0xA1, 0x7A, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; + const IID GUID_BUS_TYPE_MCA = {0x1C75997A, 0xDC33, 0x11D0, [0x92, 0xB2, 0x00, 0xA0, 0xC9, 0x05, 0x5F, 0xC5]}; + const IID GUID_BUS_TYPE_PCI = {0xC8EBDFB0, 0xB510, 0x11D0, [0x80, 0xE5, 0x00, 0xA0, 0xC9, 0x25, 0x42, 0xE3]}; + const IID GUID_BUS_TYPE_PCMCIA = {0x09343630, 0xAF9F, 0x11D0, [0x92, 0xE9, 0x00, 0x00, 0xF8, 0x1E, 0x1B, 0x30]}; + const IID GUID_BUS_TYPE_SERENUM = {0x77114A87, 0x8944, 0x11D1, [0xBD, 0x90, 0x00, 0xA0, 0xC9, 0x06, 0xBE, 0x2D]}; + const IID GUID_BUS_TYPE_USB = {0x9D7DEBBC, 0xC85D, 0x11D1, [0x9E, 0xB4, 0x00, 0x60, 0x08, 0xC3, 0xA1, 0x9A]}; + const IID GUID_BUS_TYPE_USBPRINT = {0x441EE000, 0x4342, 0x11D5, [0xA1, 0x84, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; + const IID GUID_Button = {0xA36D02F0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_CHECKVALUEEXCLUSIVE = {0x6650430C, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_ChordParam = {0xD2AC289E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_Clear_All_Bands = {0xD2AC28AB, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_COLOR = {0x66504301, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_ColorControlCallbacks = {0xEFD60CC2, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; + const IID GUID_CommandParam = {0xD2AC289D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_CommandParam2 = {0x28F97EF7, 0x9538, 0x11D2, [0x97, 0xA9, 0x00, 0xC0, 0x4F, 0xA3, 0x6E, 0x58]}; + const IID GUID_ConnectToDLSCollection = {0x1DB1AE6B, 0xE92E, 0x11D1, [0xA8, 0xC5, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0x6E]}; + const IID GUID_ConstantForce = {0x13541C20, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_CustomForce = {0x13541C2B, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_D3DCallbacks2 = {0x0BA584E1, 0x70B6, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; + const IID GUID_D3DCallbacks3 = {0xDDF41230, 0xEC0A, 0x11D0, [0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E]}; + const IID GUID_D3DExtendedCaps = {0x7DE41F80, 0x9D93, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; + const IID GUID_D3DParseUnknownCommandCallback = {0x2E04FFA0, 0x98E4, 0x11D1, [0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID GUID_Damper = {0x13541C28, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_DDMoreCaps = {0x880BAF30, 0xB030, 0x11D0, [0x8E, 0xA7, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; + const IID GUID_DDMoreSurfaceCaps = {0x3B8A0466, 0xF269, 0x11D1, [0x88, 0x0B, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; + const IID GUID_DDStereoMode = {0xF828169C, 0xA8E8, 0x11D2, [0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6]}; + const IID GUID_DefaultGMCollection = {0xF17E8673, 0xC3B4, 0x11D1, [0x87, 0x0B, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_DEVCLASS_1394 = {0x6BDD1FC1, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; + const IID GUID_DEVCLASS_1394DEBUG = {0x66F250D6, 0x7801, 0x4A64, [0xB1, 0x39, 0xEE, 0xA8, 0x0A, 0x45, 0x0B, 0x24]}; + const IID GUID_DEVCLASS_61883 = {0x7EBEFBC0, 0x3200, 0x11D2, [0xB4, 0xC2, 0x00, 0xA0, 0xC9, 0x69, 0x7D, 0x07]}; + const IID GUID_DEVCLASS_ADAPTER = {0x4D36E964, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_APMSUPPORT = {0xD45B1C18, 0xC8FA, 0x11D1, [0x9F, 0x77, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; + const IID GUID_DEVCLASS_AVC = {0xC06FF265, 0xAE09, 0x48F0, [0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83]}; + const IID GUID_DEVCLASS_BATTERY = {0x72631E54, 0x78A4, 0x11D0, [0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; + const IID GUID_DEVCLASS_BLUETOOTH = {0xE0CBF06C, 0xCD8B, 0x4647, [0xBB, 0x8A, 0x26, 0x3B, 0x43, 0xF0, 0xF9, 0x74]}; + const IID GUID_DEVCLASS_CDROM = {0x4D36E965, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_COMPUTER = {0x4D36E966, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_DECODER = {0x6BDD1FC2, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; + const IID GUID_DEVCLASS_DISKDRIVE = {0x4D36E967, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_DISPLAY = {0x4D36E968, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_DOT4 = {0x48721B56, 0x6795, 0x11D2, [0xB1, 0xA8, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2]}; + const IID GUID_DEVCLASS_DOT4PRINT = {0x49CE6AC8, 0x6F86, 0x11D2, [0xB1, 0xE5, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2]}; + const IID GUID_DEVCLASS_ENUM1394 = {0xC459DF55, 0xDB08, 0x11D1, [0xB0, 0x09, 0x00, 0xA0, 0xC9, 0x08, 0x1F, 0xF6]}; + const IID GUID_DEVCLASS_FDC = {0x4D36E969, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_FLOPPYDISK = {0x4D36E980, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_FSFILTER_ACTIVITYMONIT = {0xB86DFF51, 0xA31E, 0x4BAC, [0xB3, 0xCF, 0xE8, 0xCF, 0xE7, 0x5C, 0x9F, 0xC2]}; + const IID GUID_DEVCLASS_FSFILTER_ANTIVIRUS = {0xB1D1A169, 0xC54F, 0x4379, [0x81, 0xDB, 0xBE, 0xE7, 0xD8, 0x8D, 0x74, 0x54]}; + const IID GUID_DEVCLASS_FSFILTER_CFSMETADATASER = {0xCDCF0939, 0xB75B, 0x4630, [0xBF, 0x76, 0x80, 0xF7, 0xBA, 0x65, 0x58, 0x84]}; + const IID GUID_DEVCLASS_FSFILTER_COMPRESSION = {0xF3586BAF, 0xB5AA, 0x49B5, [0x8D, 0x6C, 0x05, 0x69, 0x28, 0x4C, 0x63, 0x9F]}; + const IID GUID_DEVCLASS_FSFILTER_CONTENTSCREEN = {0x3E3F0674, 0xC83C, 0x4558, [0xBB, 0x26, 0x98, 0x20, 0xE1, 0xEB, 0xA5, 0xC5]}; + const IID GUID_DEVCLASS_FSFILTER_CONTINUOUSBACK = {0x71AA14F8, 0x6FAD, 0x4622, [0xAD, 0x77, 0x92, 0xBB, 0x9D, 0x7E, 0x69, 0x47]}; + const IID GUID_DEVCLASS_FSFILTER_COPYPROTECTIO = {0x89786FF1, 0x9C12, 0x402F, [0x9C, 0x9E, 0x17, 0x75, 0x3C, 0x7F, 0x43, 0x75]}; + const IID GUID_DEVCLASS_FSFILTER_ENCRYPTION = {0xA0A701C0, 0xA511, 0x42FF, [0xAA, 0x6C, 0x06, 0xDC, 0x03, 0x95, 0x57, 0x6F]}; + const IID GUID_DEVCLASS_FSFILTER_HSM = {0xD546500A, 0x2AEB, 0x45F6, [0x94, 0x82, 0xF4, 0xB1, 0x79, 0x9C, 0x31, 0x77]}; + const IID GUID_DEVCLASS_FSFILTER_INFRASTRUCTUR = {0xE55FA6F9, 0x128C, 0x4D04, [0xAB, 0xAB, 0x63, 0x0C, 0x74, 0xB1, 0x45, 0x3A]}; + const IID GUID_DEVCLASS_FSFILTER_OPENFILEBACKU = {0xF8ECAFA6, 0x66D1, 0x41A5, [0x89, 0x9B, 0x66, 0x58, 0x5D, 0x72, 0x16, 0xB7]}; + const IID GUID_DEVCLASS_FSFILTER_PHYSICALQUOTAM = {0x6A0A8E78, 0xBBA6, 0x4FC4, [0xA7, 0x09, 0x1E, 0x33, 0xCD, 0x09, 0xD6, 0x7E]}; + const IID GUID_DEVCLASS_FSFILTER_QUOTAMANAGEME = {0x8503C911, 0xA6C7, 0x4919, [0x8F, 0x79, 0x50, 0x28, 0xF5, 0x86, 0x6B, 0x0C]}; + const IID GUID_DEVCLASS_FSFILTER_REPLICATION = {0x48D3EBC4, 0x4CF8, 0x48FF, [0xB8, 0x69, 0x9C, 0x68, 0xAD, 0x42, 0xEB, 0x9F]}; + const IID GUID_DEVCLASS_FSFILTER_SECURITYENHANC = {0xD02BC3DA, 0x0C8E, 0x4945, [0x9B, 0xD5, 0xF1, 0x88, 0x3C, 0x22, 0x6C, 0x8C]}; + const IID GUID_DEVCLASS_FSFILTER_SYSTEM = {0x5D1B9AAA, 0x01E2, 0x46AF, [0x84, 0x9F, 0x27, 0x2B, 0x3F, 0x32, 0x4C, 0x46]}; + const IID GUID_DEVCLASS_FSFILTER_SYSTEMRECOVER = {0x2DB15374, 0x706E, 0x4131, [0xA0, 0xC7, 0xD7, 0xC7, 0x8E, 0xB0, 0x28, 0x9A]}; + const IID GUID_DEVCLASS_FSFILTER_UNDELETE = {0xFE8F1572, 0xC67A, 0x48C0, [0xBB, 0xAC, 0x0B, 0x5C, 0x6D, 0x66, 0xCA, 0xFB]}; + const IID GUID_DEVCLASS_GPS = {0x6BDD1FC3, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; + const IID GUID_DEVCLASS_HDC = {0x4D36E96A, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_HIDCLASS = {0x745A17A0, 0x74D3, 0x11D0, [0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA]}; + const IID GUID_DEVCLASS_IMAGE = {0x6BDD1FC6, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; + const IID GUID_DEVCLASS_INFRARED = {0x6BDD1FC5, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; + const IID GUID_DEVCLASS_KEYBOARD = {0x4D36E96B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_LEGACYDRIVER = {0x8ECC055D, 0x047F, 0x11D1, [0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1]}; + const IID GUID_DEVCLASS_MEDIA = {0x4D36E96C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_MEDIUM_CHANGER = {0xCE5939AE, 0xEBDE, 0x11D0, [0xB1, 0x81, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xC4]}; + const IID GUID_DEVCLASS_MODEM = {0x4D36E96D, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_MONITOR = {0x4D36E96E, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_MOUSE = {0x4D36E96F, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_MTD = {0x4D36E970, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_MULTIFUNCTION = {0x4D36E971, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_MULTIPORTSERIAL = {0x50906CB8, 0xBA12, 0x11D1, [0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; + const IID GUID_DEVCLASS_NET = {0x4D36E972, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_NETCLIENT = {0x4D36E973, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_NETSERVICE = {0x4D36E974, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_NETTRANS = {0x4D36E975, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_NODRIVER = {0x4D36E976, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_PCMCIA = {0x4D36E977, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_PNPPRINTERS = {0x4658EE7E, 0xF050, 0x11D1, [0xB6, 0xBD, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7]}; + const IID GUID_DEVCLASS_PORTS = {0x4D36E978, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_PRINTER = {0x4D36E979, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_PRINTERUPGRADE = {0x4D36E97A, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_PROCESSOR = {0x50127DC3, 0x0F36, 0x415E, [0xA6, 0xCC, 0x4C, 0xB3, 0xBE, 0x91, 0x0B, 0x65]}; + const IID GUID_DEVCLASS_SBP2 = {0xD48179BE, 0xEC20, 0x11D1, [0xB6, 0xB8, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7]}; + const IID GUID_DEVCLASS_SCSIADAPTER = {0x4D36E97B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_SMARTCARDREADER = {0x50DD5230, 0xBA8A, 0x11D1, [0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; + const IID GUID_DEVCLASS_SOUND = {0x4D36E97C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_SYSTEM = {0x4D36E97D, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_TAPEDRIVE = {0x6D807884, 0x7D21, 0x11CF, [0x80, 0x1C, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_UNKNOWN = {0x4D36E97E, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVCLASS_USB = {0x36FC9E60, 0xC465, 0x11CF, [0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_DEVCLASS_VOLUME = {0x71A27CDD, 0x812A, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; + const IID GUID_DEVCLASS_VOLUMESNAPSHOT = {0x533C5B84, 0xEC70, 0x11D2, [0x95, 0x05, 0x00, 0xC0, 0x4F, 0x79, 0xDE, 0xAF]}; + const IID GUID_DEVCLASS_WCEUSBS = {0x25DBCE51, 0x6C8F, 0x4A72, [0x8A, 0x6D, 0xB5, 0x4C, 0x2B, 0x4F, 0xC8, 0x35]}; + const IID GUID_DEVICE_INTERFACE_ARRIVAL = {0xCB3A4004, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; + const IID GUID_DEVICE_INTERFACE_REMOVAL = {0xCB3A4005, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; + const IID GUID_DEVINTERFACE_CDCHANGER = {0x53F56312, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; + const IID GUID_DEVINTERFACE_CDROM = {0x53F56308, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; + const IID GUID_DEVINTERFACE_COMPORT = {0x86E0D1E0, 0x8089, 0x11D0, [0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73]}; + const IID GUID_DEVINTERFACE_DISK = {0x53F56307, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; + const IID GUID_DEVINTERFACE_FLOPPY = {0x53F56311, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; + const IID GUID_DEVINTERFACE_MEDIUMCHANGER = {0x53F56310, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; + const IID GUID_DEVINTERFACE_PARTITION = {0x53F5630A, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; + const IID GUID_DEVINTERFACE_SERENUM_BUS_ENUMERA = {0x4D36E978, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_DEVINTERFACE_STORAGEPORT = {0x2ACCFE60, 0xC130, 0x11D2, [0xB0, 0x82, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; + const IID GUID_DEVINTERFACE_TAPE = {0x53F5630B, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; + const IID GUID_DEVINTERFACE_VOLUME = {0x53F5630D, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; + const IID GUID_DEVINTERFACE_WRITEONCEDISK = {0x53F5630C, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; + const IID GUID_DirectDrawPaletteStream = {0x730C7FFC, 0x5347, 0x11D1, [0x8C, 0x4D, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; + const IID GUID_DirectDrawSurfaceStream = {0xE043BC46, 0x5317, 0x11D1, [0x8C, 0x4D, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; + const IID GUID_DirectMusicAllTypes = {0xD2AC2893, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_Disable_Auto_Download = {0xD2AC28AA, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_DisableTempo = {0x45FC707D, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; + const IID GUID_DisableTimeSig = {0x45FC707B, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; + const IID GUID_DMUS_PROP_DLS1 = {0x178F2F27, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID GUID_DMUS_PROP_DLS2 = {0xF14599E5, 0x4689, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; + const IID GUID_DMUS_PROP_Effects = {0xCDA8D611, 0x684A, 0x11D2, [0x87, 0x1E, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_DMUS_PROP_GM_Hardware = {0x178F2F24, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID GUID_DMUS_PROP_GS_Capable = {0x6496ABA2, 0x61B0, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; + const IID GUID_DMUS_PROP_GS_Hardware = {0x178F2F25, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID GUID_DMUS_PROP_INSTRUMENT2 = {0x865FD372, 0x9F67, 0x11D2, [0x87, 0x2A, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_DMUS_PROP_LegacyCaps = {0xCFA7CDC2, 0x00A1, 0x11D2, [0xAA, 0xD5, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID GUID_DMUS_PROP_MemorySize = {0x178F2F28, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID GUID_DMUS_PROP_SampleMemorySize = {0x178F2F28, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID GUID_DMUS_PROP_SamplePlaybackRate = {0x2A91F713, 0xA4BF, 0x11D2, [0xBB, 0xDF, 0x00, 0x60, 0x08, 0x33, 0xDB, 0xD8]}; + const IID GUID_DMUS_PROP_SynthSink_DSOUND = {0x0AA97844, 0xC877, 0x11D1, [0x87, 0x0C, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_DMUS_PROP_SynthSink_WAVE = {0x0AA97845, 0xC877, 0x11D1, [0x87, 0x0C, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_DMUS_PROP_Volume = {0xFEDFAE25, 0xE46E, 0x11D1, [0xAA, 0xCE, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID GUID_DMUS_PROP_WavesReverb = {0x04CB5622, 0x32E5, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; + const IID GUID_DMUS_PROP_WriteLatency = {0x268A0FA0, 0x60F2, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; + const IID GUID_DMUS_PROP_WritePeriod = {0x268A0FA1, 0x60F2, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; + const IID GUID_DMUS_PROP_XG_Capable = {0x6496ABA1, 0x61B0, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; + const IID GUID_DMUS_PROP_XG_Hardware = {0x178F2F26, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID GUID_Download = {0xD2AC28A7, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_Enable_Auto_Download = {0xD2AC28A9, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_EnableTempo = {0x45FC707E, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; + const IID GUID_EnableTimeSig = {0x45FC707C, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; + const IID GUID_FONTBOLD = {0x6650430F, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_FONTITALIC = {0x66504310, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_FONTNAME = {0x6650430D, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_FONTSIZE = {0x6650430E, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_FONTSTRIKETHROUGH = {0x66504312, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_FONTUNDERSCORE = {0x66504311, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_Friction = {0x13541C2A, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_HANDLE = {0x66504313, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_HasPathProperties = {0x0002DE81, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID GUID_HIDClass = {0x745A17A0, 0x74D3, 0x11D0, [0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA]}; + const IID GUID_HIMETRIC = {0x66504300, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_HWPROFILE_CHANGE_CANCELLED = {0xCB3A4002, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; + const IID GUID_HWPROFILE_CHANGE_COMPLETE = {0xCB3A4003, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; + const IID GUID_HWPROFILE_QUERY_CHANGE = {0xCB3A4001, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; + const IID GUID_IDirectMusicBand = {0xD2AC28AC, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_IDirectMusicChordMap = {0xD2AC28AD, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_IDirectMusicStyle = {0xD2AC28A1, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_Inertia = {0x13541C29, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_INT_ROUTE_INTERFACE_STANDARD = {0x70941BF4, 0x0073, 0x11D1, [0xA0, 0x9E, 0x00, 0xC0, 0x4F, 0xC3, 0x40, 0xB1]}; + const IID GUID_Joystick = {0x6F1D2B70, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_KernelCallbacks = {0x80863800, 0x6B06, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; + const IID GUID_KernelCaps = {0xFFAA7540, 0x7AA8, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; + const IID GUID_Key = {0x55728220, 0xD33C, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_KeyboardClass = {0x4D36E96B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_LEGACY_DEVICE_DETECTION_STANDAR = {0x50FEB0DE, 0x596A, 0x11D2, [0xA5, 0xB8, 0x00, 0x00, 0xF8, 0x1A, 0x46, 0x19]}; + const IID GUID_MediaClass = {0x4D36E96C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_MF_ENUMERATION_INTERFACE = {0xAEB895F0, 0x5586, 0x11D1, [0x8D, 0x84, 0x00, 0xA0, 0xC9, 0x06, 0xB2, 0x44]}; + const IID GUID_Miscellaneous2Callbacks = {0x406B2F00, 0x3E5A, 0x11D1, [0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A]}; + const IID GUID_MiscellaneousCallbacks = {0xEFD60CC0, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; + const IID GUID_MotionCompCallbacks = {0xB1122B40, 0x5DA5, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; + const IID GUID_MouseClass = {0x4D36E96F, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; + const IID GUID_MuteParam = {0xD2AC28AF, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_NDIS_802_11_ADD_WEP = {0x4307BFF0, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_AUTHENTICATION_MODE = {0x43920A24, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_BASIC_RATES = {0x4A198516, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_BSSID = {0x2504B6C2, 0x1FA5, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_BSSID_LIST = {0x69526F9A, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_BSSID_LIST_SCAN = {0x0D9E01E1, 0xBA70, 0x11D4, [0xB6, 0x75, 0x00, 0x20, 0x48, 0x57, 0x03, 0x37]}; + const IID GUID_NDIS_802_11_CONFIGURATION = {0x4A4DF982, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_DESIRED_RATES = {0x452EE08E, 0x2536, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_DISASSOCIATE = {0x43671F40, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_FRAGMENTATION_THRESH = {0x69AAA7C4, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_INFRASTRUCTURE_MODE = {0x697D5A7E, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_NETWORK_TYPE_IN_USE = {0x857E2326, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_NETWORK_TYPES_SUPPOR = {0x8531D6E6, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_NUMBER_OF_ANTENNAS = {0x01779336, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_POWER_MODE = {0x85BE837C, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_PRIVACY_FILTER = {0x6733C4E9, 0x4792, 0x11D4, [0x97, 0xF1, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_REMOVE_WEP = {0x433C345C, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_RSSI = {0x1507DB16, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_RSSI_TRIGGER = {0x155689B8, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_RTS_THRESHOLD = {0x0134D07E, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_RX_ANTENNA_SELECTED = {0x01AC07A2, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_SSID = {0x7D2A90EA, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_STATISTICS = {0x42BB73B0, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_SUPPORTED_RATES = {0x49DB8722, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_TX_ANTENNA_SELECTED = {0x01DBB74A, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_TX_POWER_LEVEL = {0x11E6BA76, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; + const IID GUID_NDIS_802_11_WEP_STATUS = {0xB027A21F, 0x3CFA, 0x4125, [0x80, 0x0B, 0x3F, 0x7A, 0x18, 0xFD, 0xDC, 0xDC]}; + const IID GUID_NDIS_802_3_CURRENT_ADDRESS = {0x44795700, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_3_MAC_OPTIONS = {0x44795703, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_3_MAXIMUM_LIST_SIZE = {0x44795702, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_3_MULTICAST_LIST = {0x44795701, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_3_PERMANENT_ADDRESS = {0x447956FF, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_3_RCV_ERROR_ALIGNMENT = {0x44795704, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_3_XMIT_MORE_COLLISIONS = {0x44795706, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_3_XMIT_ONE_COLLISION = {0x44795705, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_5_CURRENT_ADDRESS = {0x44795708, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_5_CURRENT_FUNCTIONAL = {0x44795709, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_5_CURRENT_GROUP = {0x4479570A, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_5_CURRENT_RING_STATE = {0xACF14032, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_5_CURRENT_RING_STATUS = {0x890A36EC, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_5_LAST_OPEN_STATUS = {0x4479570B, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_5_LINE_ERRORS = {0xACF14033, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_5_LOST_FRAMES = {0xACF14034, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_802_5_PERMANENT_ADDRESS = {0x44795707, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_HW_CURRENT_ADDRESS = {0x791AD1A1, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_MAX_AAL0_PACKET_SIZE = {0x791AD1A5, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_MAX_AAL1_PACKET_SIZE = {0x791AD1A6, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_MAX_AAL34_PACKET_SIZE = {0x791AD1A7, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_MAX_AAL5_PACKET_SIZE = {0x791AD191, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_MAX_ACTIVE_VCI_BITS = {0x791AD1A3, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_MAX_ACTIVE_VCS = {0x791AD1A2, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_MAX_ACTIVE_VPI_BITS = {0x791AD1A4, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_RCV_CELLS_DROPPED = {0x0A21480C, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_RCV_CELLS_OK = {0x0A21480A, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_SUPPORTED_AAL_TYPES = {0x791AD1A0, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_SUPPORTED_SERVICE_CATEG = {0x791AD19F, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_SUPPORTED_VC_RATES = {0x791AD19E, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ATM_XMIT_CELLS_OK = {0x0A21480B, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ENUMERATE_ADAPTER = {0x981F2D7F, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_ENUMERATE_VC = {0x981F2D82, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_ATTACHMENT_TYPE = {0xACF1403D, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_DOWNSTREAM_NODE_LONG = {0xACF1403F, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_FRAME_ERRORS = {0xACF14040, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_FRAMES_LOST = {0xACF14041, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_LCONNECTION_STATE = {0xACF14045, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_LCT_FAILURES = {0xACF14043, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_LEM_REJECTS = {0xACF14044, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_LONG_CURRENT_ADDR = {0xACF14036, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_LONG_MAX_LIST_SIZE = {0xACF14038, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_LONG_MULTICAST_LIST = {0xACF14037, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_LONG_PERMANENT_ADDR = {0xACF14035, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_RING_MGT_STATE = {0xACF14042, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_SHORT_CURRENT_ADDR = {0xACF1403A, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_SHORT_MAX_LIST_SIZE = {0xACF1403C, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_SHORT_MULTICAST_LIST = {0xACF1403B, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_SHORT_PERMANENT_ADDR = {0xACF14039, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_FDDI_UPSTREAM_NODE_LONG = {0xACF1403E, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_DRIVER_VERSION = {0x791AD198, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_HARDWARE_STATUS = {0x791AD192, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_LINK_SPEED = {0x791AD195, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_MAC_OPTIONS = {0x791AD19A, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_MEDIA_CONNECT_STATU = {0x791AD19B, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_MEDIA_IN_USE = {0x791AD194, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_MEDIA_SUPPORTED = {0x791AD193, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_MINIMUM_LINK_SPEED = {0x791AD19D, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_RCV_PDUS_ERROR = {0x0A214808, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_RCV_PDUS_NO_BUFFER = {0x0A214809, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_RCV_PDUS_OK = {0x0A214806, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_VENDOR_DESCRIPTION = {0x791AD197, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_VENDOR_DRIVER_VERSI = {0x791AD19C, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_VENDOR_ID = {0x791AD196, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_XMIT_PDUS_ERROR = {0x0A214807, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CO_XMIT_PDUS_OK = {0x0A214805, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CURRENT_LOOKAHEAD = {0x5EC10361, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_CURRENT_PACKET_FILTER = {0x5EC10360, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_DRIVER_VERSION = {0x5EC10362, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_HARDWARE_STATUS = {0x5EC10354, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_LINK_SPEED = {0x5EC10359, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_MAC_OPTIONS = {0x5EC10365, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_MAXIMUM_FRAME_SIZE = {0x5EC10358, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_MAXIMUM_LOOKAHEAD = {0x5EC10357, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_MAXIMUM_SEND_PACKETS = {0x5EC10367, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_MAXIMUM_TOTAL_SIZE = {0x5EC10363, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_MEDIA_CONNECT_STATUS = {0x5EC10366, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_MEDIA_IN_USE = {0x5EC10356, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_MEDIA_SUPPORTED = {0x5EC10355, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_PHYSICAL_MEDIUM = {0x418CA16D, 0x3937, 0x4208, [0x94, 0x0A, 0xEC, 0x61, 0x96, 0x27, 0x80, 0x85]}; + const IID GUID_NDIS_GEN_RCV_ERROR = {0x447956FD, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_RCV_NO_BUFFER = {0x447956FE, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_RCV_OK = {0x447956FB, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_RECEIVE_BLOCK_SIZE = {0x5EC1035D, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_RECEIVE_BUFFER_SPACE = {0x5EC1035B, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_TRANSMIT_BLOCK_SIZE = {0x5EC1035C, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_TRANSMIT_BUFFER_SPACE = {0x5EC1035A, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_VENDOR_DESCRIPTION = {0x5EC1035F, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_VENDOR_DRIVER_VERSION = {0x447956F9, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_VENDOR_ID = {0x5EC1035E, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_VLAN_ID = {0x765DC702, 0xC5E8, 0x4B67, [0x84, 0x3B, 0x3F, 0x5A, 0x4F, 0xF2, 0x64, 0x8B]}; + const IID GUID_NDIS_GEN_XMIT_ERROR = {0x447956FC, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_GEN_XMIT_OK = {0x447956FA, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_LAN_CLASS = {0xAD498944, 0x762F, 0x11D0, [0x8D, 0xCB, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_NOTIFY_ADAPTER_ARRIVAL = {0x981F2D81, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_NOTIFY_ADAPTER_REMOVAL = {0x981F2D80, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_NOTIFY_BIND = {0x5413531C, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_NOTIFY_UNBIND = {0x6E3CE1EC, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_NOTIFY_VC_ARRIVAL = {0x182F9E0C, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_NOTIFY_VC_REMOVAL = {0x981F2D79, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_STATUS_LINK_SPEED_CHANGE = {0x981F2D85, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_STATUS_MEDIA_CONNECT = {0x981F2D7D, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_STATUS_MEDIA_DISCONNECT = {0x981F2D7E, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_STATUS_MEDIA_SPECIFIC_INDIC = {0x981F2D84, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_STATUS_RESET_END = {0x981F2D77, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_STATUS_RESET_START = {0x981F2D76, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; + const IID GUID_NDIS_WAKE_ON_MAGIC_PACKET_ONLY = {0xA14F1C97, 0x8839, 0x4F8A, [0x99, 0x96, 0xA2, 0x89, 0x96, 0xEB, 0xBF, 0x1D]}; + const IID GUID_NETSHELL_PROPS = {0x2D15A9A1, 0xA556, 0x4189, [0x91, 0xAD, 0x02, 0x74, 0x58, 0xF1, 0x1A, 0x07]}; + const IID GUID_NonLocalVidMemCaps = {0x86C4FA80, 0x8D84, 0x11D0, [0x94, 0xE8, 0x00, 0xC0, 0x4F, 0xC3, 0x41, 0x37]}; + const IID GUID_NOTIFICATION_CHORD = {0xD2AC289B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_NOTIFICATION_COMMAND = {0xD2AC289C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_NOTIFICATION_MEASUREANDBEAT = {0xD2AC289A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_NOTIFICATION_PERFORMANCE = {0x81F75BC5, 0x4E5D, 0x11D2, [0xBC, 0xC7, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; + const IID GUID_NOTIFICATION_SEGMENT = {0xD2AC2899, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_NULL = {0x00000000, 0x0000, 0x0000, [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; + const IID GUID_OPTIONVALUEEXCLUSIVE = {0x6650430B, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_OptSurfaceKmodeInfo = {0xE05C8472, 0x51D4, 0x11D1, [0x8C, 0xCE, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID GUID_OptSurfaceUmodeInfo = {0x9D792804, 0x5FA8, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID GUID_PathProperty = {0x0002DE80, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID GUID_PCI_BUS_INTERFACE_STANDARD = {0x496B8281, 0x6F25, 0x11D0, [0xBE, 0xAF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; + const IID GUID_PCI_DEVICE_PRESENT_INTERFACE = {0xD1B82C26, 0xBF49, 0x45EF, [0xB2, 0x16, 0x71, 0xCB, 0xD7, 0x88, 0x9B, 0x57]}; + const IID GUID_PCMCIA_BUS_INTERFACE_STANDARD = {0x76173AF0, 0xC504, 0x11D1, [0x94, 0x7F, 0x00, 0xC0, 0x4F, 0xB9, 0x60, 0xEE]}; + const IID GUID_PerfAutoDownload = {0xFB09565B, 0x3631, 0x11D2, [0xBC, 0xB8, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; + const IID GUID_PerfMasterGrooveLevel = {0xD2AC28B2, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_PerfMasterTempo = {0xD2AC28B0, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_PerfMasterVolume = {0xD2AC28B1, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_PNP_CUSTOM_NOTIFICATION = {0xACA73F8E, 0x8D23, 0x11D1, [0xAC, 0x7D, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xD0]}; + const IID GUID_PNP_POWER_NOTIFICATION = {0xC2CF0660, 0xEB7A, 0x11D1, [0xBD, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xD0]}; + const IID GUID_POV = {0xA36D02F2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_POWER_DEVICE_ENABLE = {0x827C0A6F, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; + const IID GUID_POWER_DEVICE_TIMEOUTS = {0xA45DA735, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; + const IID GUID_POWER_DEVICE_WAKE_ENABLE = {0xA9546A82, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; + const IID GUID_QOS_BESTEFFORT_BANDWIDTH = {0xED885290, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; + const IID GUID_QOS_ENABLE_AVG_STATS = {0xBAFB6D11, 0x27C4, 0x4801, [0xA4, 0x6F, 0xEF, 0x80, 0x80, 0xC1, 0x88, 0xC8]}; + const IID GUID_QOS_ENABLE_WINDOW_ADJUSTMENT = {0xAA966725, 0xD3E9, 0x4C55, [0xB3, 0x35, 0x2A, 0x00, 0x27, 0x9A, 0x1E, 0x64]}; + const IID GUID_QOS_FLOW_8021P_CONFORMING = {0x08C1E013, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; + const IID GUID_QOS_FLOW_8021P_NONCONFORMING = {0x09023F91, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; + const IID GUID_QOS_FLOW_COUNT = {0x1147F880, 0x40ED, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; + const IID GUID_QOS_FLOW_IP_CONFORMING = {0x07F99A8B, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; + const IID GUID_QOS_FLOW_IP_NONCONFORMING = {0x087A5987, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; + const IID GUID_QOS_FLOW_MODE = {0x5C82290A, 0x515A, 0x11D2, [0x8E, 0x58, 0x00, 0xC0, 0x4F, 0xC9, 0xBF, 0xCB]}; + const IID GUID_QOS_ISSLOW_FLOW = {0xABF273A4, 0xEE07, 0x11D2, [0xBE, 0x1B, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; + const IID GUID_QOS_LATENCY = {0xFC408EF0, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; + const IID GUID_QOS_MAX_OUTSTANDING_SENDS = {0x161FFA86, 0x6120, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; + const IID GUID_QOS_NON_BESTEFFORT_LIMIT = {0x185C44E0, 0x40ED, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; + const IID GUID_QOS_REMAINING_BANDWIDTH = {0xC4C51720, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; + const IID GUID_QOS_STATISTICS_BUFFER = {0xBB2C0980, 0xE900, 0x11D1, [0xB0, 0x7E, 0x00, 0x80, 0xC7, 0x13, 0x82, 0xBF]}; + const IID GUID_QOS_TIMER_RESOLUTION = {0xBA10CC88, 0xF13E, 0x11D2, [0xBE, 0x1B, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; + const IID GUID_RampForce = {0x13541C21, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_RhythmParam = {0xD2AC289F, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_RxAxis = {0xA36D02F4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_RyAxis = {0xA36D02F5, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_RzAxis = {0xA36D02E3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_SawtoothDown = {0x13541C26, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_SawtoothUp = {0x13541C25, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_SeedVariations = {0x65B76FA5, 0xFF37, 0x11D2, [0x81, 0x4E, 0x00, 0xC0, 0x4F, 0xA3, 0x6E, 0x58]}; + const IID GUID_Sine = {0x13541C23, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_Slider = {0xA36D02E4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_Spring = {0x13541C27, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_Square = {0x13541C22, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_StandardMIDIFile = {0x06621075, 0xE92E, 0x11D1, [0xA8, 0xC5, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0x6E]}; + const IID GUID_SysKeyboard = {0x6F1D2B61, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_SysKeyboardEm = {0x6F1D2B82, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_SysKeyboardEm2 = {0x6F1D2B83, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_SysMouse = {0x6F1D2B60, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_SysMouseEm = {0x6F1D2B80, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_SysMouseEm2 = {0x6F1D2B81, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_TARGET_DEVICE_QUERY_REMOVE = {0xCB3A4006, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; + const IID GUID_TARGET_DEVICE_REMOVE_CANCELLED = {0xCB3A4007, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; + const IID GUID_TARGET_DEVICE_REMOVE_COMPLETE = {0xCB3A4008, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; + const IID GUID_TempoParam = {0xD2AC28A5, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_TimeSignature = {0xD2AC28A4, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_TRANSLATOR_INTERFACE_STANDARD = {0x6C154A92, 0xAACF, 0x11D0, [0x8D, 0x2A, 0x00, 0xA0, 0xC9, 0x06, 0xB2, 0x44]}; + const IID GUID_Triangle = {0x13541C24, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID GUID_TRISTATE = {0x6650430A, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_Unknown = {0xA36D02F3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_Unload = {0xD2AC28A8, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID GUID_UserModeDriverInfo = {0xF0B0E8E2, 0x5F97, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID GUID_UserModeDriverPassword = {0x97F861B6, 0x60A1, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID GUID_VideoPortCallbacks = {0xEFD60CC1, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; + const IID GUID_VideoPortCaps = {0xEFD60CC3, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; + const IID GUID_XAxis = {0xA36D02E0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_XPOS = {0x66504306, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_XPOSPIXEL = {0x66504302, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_XSIZE = {0x66504308, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_XSIZEPIXEL = {0x66504304, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_YAxis = {0xA36D02E1, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_YPOS = {0x66504307, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_YPOSPIXEL = {0x66504303, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_YSIZE = {0x66504309, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_YSIZEPIXEL = {0x66504305, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID GUID_ZAxis = {0xA36D02E2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID GUID_ZPixelFormats = {0x93869880, 0x36CF, 0x11D1, [0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE]}; + const IID IID_AsyncIAdviseSink = {0x00000150, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_AsyncIAdviseSink2 = {0x00000151, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_AsyncIBackgroundCopyCallback = {0xCA29D251, 0xB4BB, 0x4679, [0xA3, 0xD9, 0xAE, 0x80, 0x06, 0x11, 0x9D, 0x54]}; + const IID IID_AsyncIClusCfgBaseCluster = {0xA8A5C614, 0x2518, 0x47F5, [0x96, 0xCA, 0xCA, 0xFA, 0x7F, 0xFB, 0xAF, 0x68]}; + const IID IID_AsyncIClusCfgCallback = {0xEBCE8945, 0xAC69, 0x4B3A, [0x86, 0x5D, 0xE2, 0xD4, 0xEB, 0x33, 0xE4, 0x1B]}; + const IID IID_AsyncIClusCfgClusterInfo = {0x8BDBA247, 0x04F5, 0x4114, [0x83, 0x7E, 0xB2, 0x63, 0x41, 0x2A, 0x4B, 0x64]}; + const IID IID_AsyncIClusCfgCredentials = {0x54AA9406, 0xA409, 0x4B49, [0xB3, 0x14, 0x5F, 0x0A, 0x0C, 0xE4, 0xC8, 0x8F]}; + const IID IID_AsyncIClusCfgEvictCleanup = {0x6FE3E362, 0xD373, 0x4C5F, [0xA0, 0xAF, 0x1D, 0xFE, 0x84, 0x93, 0xC6, 0x55]}; + const IID IID_AsyncIClusCfgInitialize = {0x2A0EB82E, 0xF878, 0x492A, [0x95, 0x1E, 0xAE, 0x00, 0x09, 0x18, 0xC4, 0xA6]}; + const IID IID_AsyncIClusCfgIPAddressInfo = {0xAAEAF0A5, 0xE310, 0x4604, [0xA5, 0x5E, 0x2F, 0x9D, 0xDC, 0x41, 0x57, 0xA9]}; + const IID IID_AsyncIClusCfgManagedResourceInfo = {0x73616028, 0x1243, 0x4749, [0xAD, 0x84, 0x0B, 0x5E, 0xB3, 0x58, 0xFF, 0xA0]}; + const IID IID_AsyncIClusCfgMemberSetChangeListe = {0x2B645350, 0x2643, 0x4ABC, [0xA4, 0xE5, 0x82, 0x4D, 0x88, 0x1B, 0x75, 0x82]}; + const IID IID_AsyncIClusCfgNetworkInfo = {0xED71FD2D, 0xAD02, 0x4DFC, [0xB3, 0x76, 0x5F, 0xFA, 0x5F, 0x5A, 0x7C, 0x2C]}; + const IID IID_AsyncIClusCfgNodeInfo = {0x4F3BB40B, 0xDF27, 0x40A0, [0xB3, 0x1A, 0xBA, 0x18, 0x32, 0x4C, 0xEB, 0x9D]}; + const IID IID_AsyncIClusCfgPartitionInfo = {0xEC1EBD9F, 0x5866, 0x4846, [0x89, 0x52, 0xEC, 0x36, 0xC3, 0x96, 0x1E, 0xEF]}; + const IID IID_AsyncIClusCfgResourceTypeCreate = {0x3AFCE3B9, 0x5F3E, 0x4DDF, [0xA8, 0xF4, 0x4B, 0x4F, 0xCB, 0xF2, 0x8F, 0x8F]}; + const IID IID_AsyncIClusCfgResourceTypeInfo = {0xC649A282, 0xC847, 0x4F5C, [0x98, 0x41, 0xD2, 0xF7, 0x3B, 0x5A, 0xA7, 0x1D]}; + const IID IID_AsyncIClusCfgServer = {0x2A1640AA, 0x4561, 0x4A08, [0xB5, 0xD9, 0x0A, 0xA3, 0x8C, 0x6B, 0xE6, 0x28]}; + const IID IID_AsyncIClusCfgStartupListener = {0xD282CAF0, 0x2EDE, 0x4AB9, [0xA5, 0xD5, 0xF7, 0xBD, 0xE3, 0xD2, 0x3F, 0x10]}; + const IID IID_AsyncIClusCfgStartupNotify = {0xC2B0D06A, 0x6353, 0x4EE1, [0xB2, 0x53, 0x6B, 0x0D, 0x75, 0xDB, 0x2C, 0xD3]}; + const IID IID_AsyncIEnumClusCfgIPAddresses = {0xBD5F35BA, 0x0BC0, 0x455F, [0x92, 0x6D, 0xC3, 0xD3, 0x56, 0x41, 0x94, 0x87]}; + const IID IID_AsyncIEnumClusCfgManagedResource = {0xB138483F, 0x9695, 0x4FA6, [0xA9, 0x8F, 0x0D, 0xE2, 0xFB, 0x35, 0x54, 0x49]}; + const IID IID_AsyncIEnumClusCfgNetworks = {0xF56B9B0D, 0xE7B8, 0x49EC, [0xA8, 0x43, 0x54, 0x75, 0x07, 0x6B, 0x94, 0x7D]}; + const IID IID_AsyncIEnumClusCfgPartitions = {0x4440BB6A, 0xB0AC, 0x479D, [0xB5, 0x34, 0x72, 0x65, 0xA3, 0x1D, 0x6C, 0x56]}; + const IID IID_AsyncIMultiQI = {0x000E0020, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_AsyncIPipeByte = {0xDB2F3ACB, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; + const IID IID_AsyncIPipeDouble = {0xDB2F3ACF, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; + const IID IID_AsyncIPipeLong = {0xDB2F3ACD, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; + const IID IID_AsyncIUnknown = {0x000E0000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_DFConstraint = {0x4A3DF050, 0x23BD, 0x11D2, [0x93, 0x9F, 0x00, 0xA0, 0xC9, 0x1E, 0xED, 0xBA]}; + const IID IID_DIEnumWbemClassObject = {0xCB7CA037, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID IID_DIWbemCallResult = {0xCB7CA039, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID IID_DIWbemClassObject = {0xCB7CA033, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID IID_DIWbemContext = {0xCB7CA038, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID IID_DIWbemLocator = {0xCB7CA035, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID IID_DIWbemObjectSink = {0xCB7CA036, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID IID_DIWbemQualifierSet = {0xCB7CA034, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID IID_DIWbemServices = {0xCB7CA03A, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID IID_Folder = {0xBBCBDE60, 0xC3FF, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_Folder2 = {0xF0D2D8EF, 0x3890, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; + const IID IID_Folder3 = {0xA7AE5F64, 0xC4D7, 0x4D7F, [0x93, 0x07, 0x4D, 0x24, 0xEE, 0x54, 0xB8, 0x41]}; + const IID IID_FolderItem = {0xFAC32C80, 0xCBE4, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_FolderItem2 = {0xEDC817AA, 0x92B8, 0x11D1, [0xB0, 0x75, 0x00, 0xC0, 0x4F, 0xC3, 0x3A, 0xA5]}; + const IID IID_FolderItems = {0x744129E0, 0xCBE5, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_FolderItems2 = {0xC94F0AD0, 0xF363, 0x11D2, [0xA3, 0x27, 0x00, 0xC0, 0x4F, 0x8E, 0xEC, 0x7F]}; + const IID IID_FolderItems3 = {0xEAA7C309, 0xBBEC, 0x49D5, [0x82, 0x1D, 0x64, 0xD9, 0x66, 0xCB, 0x66, 0x7F]}; + const IID IID_FolderItemVerb = {0x08EC3E00, 0x50B0, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; + const IID IID_FolderItemVerbs = {0x1F8352C0, 0x50B0, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; + const IID IID_IAccessControl = {0xEEDD23E0, 0x8410, 0x11CE, [0xA1, 0xC3, 0x08, 0x00, 0x2B, 0x2B, 0x8D, 0x8F]}; + const IID IID_IAccessible = {0x618736E0, 0x3C3D, 0x11CF, [0x81, 0x0C, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71]}; + const IID IID_IAccessibleHandler = {0x03022430, 0xABC4, 0x11D0, [0xBD, 0xE2, 0x00, 0xAA, 0x00, 0x1A, 0x19, 0x53]}; + const IID IID_IAccessor = {0x0C733A8C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IAccIdentity = {0x7852B78D, 0x1CFD, 0x41C1, [0xA6, 0x15, 0x9C, 0x0C, 0x85, 0x96, 0x0B, 0x5F]}; + const IID IID_IAccountDiscovery = {0xFA202BBC, 0x6ABE, 0x4C17, [0xB1, 0x84, 0x57, 0x0B, 0x6C, 0xF2, 0x56, 0xA6]}; + const IID IID_IAccPropServer = {0x76C0DBBB, 0x15E0, 0x4E7B, [0xB6, 0x1B, 0x20, 0xEE, 0xEA, 0x20, 0x01, 0xE0]}; + const IID IID_IAccPropServices = {0x6E26E776, 0x04F0, 0x495D, [0x80, 0xE4, 0x33, 0x30, 0x35, 0x2E, 0x31, 0x69]}; + const IID IID_IACList = {0x77A130B0, 0x94FD, 0x11D0, [0xA5, 0x44, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; + const IID IID_IACList2 = {0x470141A0, 0x5186, 0x11D2, [0xBB, 0xB6, 0x00, 0x60, 0x97, 0x7B, 0x46, 0x4C]}; + const IID IID_IActionProgress = {0x49FF1173, 0xEADC, 0x446D, [0x92, 0x85, 0x15, 0x64, 0x53, 0xA6, 0x43, 0x1C]}; + const IID IID_IActionProgressDialog = {0x49FF1172, 0xEADC, 0x446D, [0x92, 0x85, 0x15, 0x64, 0x53, 0xA6, 0x43, 0x1C]}; + const IID IID_IActiveDesktop = {0xF490EB00, 0x1240, 0x11D1, [0x98, 0x88, 0x00, 0x60, 0x97, 0xDE, 0xAC, 0xF9]}; + const IID IID_IActiveIME = {0x6FE20962, 0xD077, 0x11D0, [0x8F, 0xE7, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; + const IID IID_IActiveIME2 = {0xE1C4BF0E, 0x2D53, 0x11D2, [0x93, 0xE1, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; + const IID IID_IActiveIMMApp = {0x08C0E040, 0x62D1, 0x11D1, [0x93, 0x26, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; + const IID IID_IActiveIMMIME = {0x08C03411, 0xF96B, 0x11D0, [0xA4, 0x75, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; + const IID IID_IActiveIMMMessagePumpOwner = {0xB5CF2CFA, 0x8AEB, 0x11D1, [0x93, 0x64, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; + const IID IID_IActiveIMMRegistrar = {0xB3458082, 0xBD00, 0x11D1, [0x93, 0x9B, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; + const IID IID_IActiveScript = {0xBB1A2AE1, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID IID_IActiveScriptAuthor = {0x9C109DA0, 0x7006, 0x11D1, [0xB3, 0x6C, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xB2]}; + const IID IID_IActiveScriptAuthorProcedure = {0x7E2D4B70, 0xBD9A, 0x11D0, [0x93, 0x36, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; + const IID IID_IActiveScriptDebug = {0x51973C10, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IActiveScriptDebug32 = {0x51973C10, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IActiveScriptDebug64 = {0xBC437E23, 0xF5B8, 0x47F4, [0xBB, 0x79, 0x7D, 0x1C, 0xE5, 0x48, 0x3B, 0x86]}; + const IID IID_IActiveScriptEncode = {0xBB1A2AE3, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID IID_IActiveScriptError = {0xEAE1BA61, 0xA4ED, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID IID_IActiveScriptError64 = {0xB21FB2A1, 0x5B8F, 0x4963, [0x8C, 0x21, 0x21, 0x45, 0x0F, 0x84, 0xED, 0x7F]}; + const IID IID_IActiveScriptErrorDebug = {0x51973C12, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IActiveScriptGarbageCollector = {0x6AA2C4A0, 0x2B53, 0x11D4, [0xA2, 0xA0, 0x00, 0x10, 0x4B, 0xD3, 0x50, 0x90]}; + const IID IID_IActiveScriptHostEncode = {0xBEE9B76E, 0xCFE3, 0x11D1, [0xB7, 0x47, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; + const IID IID_IActiveScriptParse = {0xBB1A2AE2, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID IID_IActiveScriptParse32 = {0xBB1A2AE2, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID IID_IActiveScriptParse64 = {0xC7EF7658, 0xE1EE, 0x480E, [0x97, 0xEA, 0xD5, 0x2C, 0xB4, 0xD7, 0x6D, 0x17]}; + const IID IID_IActiveScriptParseProcedure = {0xAA5B6A80, 0xB834, 0x11D0, [0x93, 0x2F, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; + const IID IID_IActiveScriptParseProcedure2_32 = {0x71EE5B20, 0xFB04, 0x11D1, [0xB3, 0xA8, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xB2]}; + const IID IID_IActiveScriptParseProcedure2_64 = {0xFE7C4271, 0x210C, 0x448D, [0x9F, 0x54, 0x76, 0xDA, 0xB7, 0x04, 0x7B, 0x28]}; + const IID IID_IActiveScriptParseProcedure32 = {0xAA5B6A80, 0xB834, 0x11D0, [0x93, 0x2F, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; + const IID IID_IActiveScriptParseProcedure64 = {0xC64713B6, 0xE029, 0x4CC5, [0x92, 0x00, 0x43, 0x8B, 0x72, 0x89, 0x0B, 0x6A]}; + const IID IID_IActiveScriptParseProcedureOld = {0x1CFF0050, 0x6FDD, 0x11D0, [0x93, 0x28, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; + const IID IID_IActiveScriptParseProcedureOld32 = {0x1CFF0050, 0x6FDD, 0x11D0, [0x93, 0x28, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; + const IID IID_IActiveScriptParseProcedureOld64 = {0x21F57128, 0x08C9, 0x4638, [0xBA, 0x12, 0x22, 0xD1, 0x5D, 0x88, 0xDC, 0x5C]}; + const IID IID_IActiveScriptProperty = {0x4954E0D0, 0xFBC7, 0x11D1, [0x84, 0x10, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; + const IID IID_IActiveScriptSIPInfo = {0x764651D0, 0x38DE, 0x11D4, [0xA2, 0xA3, 0x00, 0x10, 0x4B, 0xD3, 0x50, 0x90]}; + const IID IID_IActiveScriptSite = {0xDB01A1E3, 0xA42B, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID IID_IActiveScriptSiteDebug32 = {0x51973C11, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IActiveScriptSiteDebug64 = {0xD6B96B0A, 0x7463, 0x402C, [0x92, 0xAC, 0x89, 0x98, 0x42, 0x26, 0x94, 0x2F]}; + const IID IID_IActiveScriptSiteInterruptPoll = {0x539698A0, 0xCDCA, 0x11CF, [0xA5, 0xEB, 0x00, 0xAA, 0x00, 0x47, 0xA0, 0x63]}; + const IID IID_IActiveScriptSiteWindow = {0xD10F6761, 0x83E9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID IID_IActiveScriptStats = {0xB8DA6310, 0xE19B, 0x11D0, [0x93, 0x3C, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; + const IID IID_IActiveXSafetyProvider = {0x69FF5101, 0xFC63, 0x11D0, [0x97, 0xEB, 0x00, 0xAA, 0x00, 0x61, 0x53, 0x33]}; + const IID IID_IAdapterInfo = {0x480BF94A, 0x09FD, 0x4F8A, [0xA3, 0xE0, 0xB0, 0x70, 0x02, 0x82, 0xD8, 0x4D]}; + const IID IID_IAdapterNotificationSink = {0x44AB2DC3, 0x23B2, 0x47DE, [0x82, 0x28, 0x2E, 0x1C, 0xCE, 0xEB, 0x99, 0x11]}; + const IID IID_IAddEvents = {0xD710A6AE, 0x3371, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; + const IID IID_IAddressBarParser = {0xC9D81948, 0x443A, 0x40C7, [0x94, 0x5C, 0x5E, 0x17, 0x1B, 0x8C, 0x66, 0xB4]}; + const IID IID_IAddrExclusionControl = {0x00000148, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IAddrTrackingControl = {0x00000147, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IADs = {0xFD8256D0, 0xFD15, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; + const IID IID_IADsAccessControlEntry = {0xB4F3A14C, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsAccessControlList = {0xB7EE91CC, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsAcePrivate = {0xFD145DF2, 0xFD96, 0x4135, [0x9B, 0x22, 0x68, 0xFF, 0x0F, 0x6B, 0xF5, 0xBB]}; + const IID IID_IADsAcl = {0x8452D3AB, 0x0869, 0x11D1, [0xA3, 0x77, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsADSystemInfo = {0x5BB11929, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; + const IID IID_IADsBackLink = {0xFD1302BD, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsCaseIgnoreList = {0x7B66B533, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsClass = {0xC8F93DD0, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; + const IID IID_IADsCollection = {0x72B945E0, 0x253B, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsComputer = {0xEFE3CC70, 0x1D9F, 0x11CF, [0xB1, 0xF3, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; + const IID IID_IADsComputerOperations = {0xEF497680, 0x1D9F, 0x11CF, [0xB1, 0xF3, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; + const IID IID_IADsContainer = {0x001677D0, 0xFD16, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; + const IID IID_IADsDeleteOps = {0xB2BD0902, 0x8878, 0x11D1, [0x8C, 0x21, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsDNWithBinary = {0x7E99C0A2, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; + const IID IID_IADsDNWithString = {0x370DF02E, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; + const IID IID_IADsDomain = {0x00E4C220, 0xFD16, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; + const IID IID_IADsEmail = {0x97AF011A, 0x478E, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsExtension = {0x3D35553C, 0xD2B0, 0x11D1, [0xB1, 0x7B, 0x00, 0x00, 0xF8, 0x75, 0x93, 0xA0]}; + const IID IID_IADsFaxNumber = {0xA910DEA9, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsFileService = {0xA89D1900, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsFileServiceOperations = {0xA02DED10, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsFileShare = {0xEB6DCAF0, 0x4B83, 0x11CF, [0xA9, 0x95, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsGroup = {0x27636B00, 0x410F, 0x11CF, [0xB1, 0xFF, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; + const IID IID_IADsHold = {0xB3EB3B37, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsLargeInteger = {0x9068270B, 0x0939, 0x11D1, [0x8B, 0xE1, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsLocality = {0xA05E03A2, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsMembers = {0x451A0030, 0x72EC, 0x11CF, [0xB0, 0x3B, 0x00, 0xAA, 0x00, 0x6E, 0x09, 0x75]}; + const IID IID_IADsNamespaces = {0x28B96BA0, 0xB330, 0x11CF, [0xA9, 0xAD, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsNameTranslate = {0xB1B272A3, 0x3625, 0x11D1, [0xA3, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsNetAddress = {0xB21A50A9, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsO = {0xA1CD2DC6, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsObjectOptions = {0x46F14FDA, 0x232B, 0x11D1, [0xA8, 0x08, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; + const IID IID_IADsObjOptPrivate = {0x81CBB829, 0x1867, 0x11D2, [0x92, 0x20, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; + const IID IID_IADsOctetList = {0x7B28B80F, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsOpenDSObject = {0xDDF2891E, 0x0F9C, 0x11D0, [0x8A, 0xD4, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsOU = {0xA2F733B8, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsPath = {0xB287FCD5, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsPathname = {0xD592AED4, 0xF420, 0x11D0, [0xA3, 0x6E, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsPathnameProvider = {0xAACD1D30, 0x8BD0, 0x11D2, [0x92, 0xA9, 0x00, 0xC0, 0x4F, 0x79, 0xF8, 0x34]}; + const IID IID_IADsPostalAddress = {0x7ADECF29, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsPrintJob = {0x32FB6780, 0x1ED0, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsPrintJobOperations = {0x9A52DB30, 0x1ECF, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsPrintQueue = {0xB15160D0, 0x1226, 0x11CF, [0xA9, 0x85, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsPrintQueueOperations = {0x124BE5C0, 0x156E, 0x11CF, [0xA9, 0x86, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsProperty = {0xC8F93DD3, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; + const IID IID_IADsPropertyEntry = {0x05792C8E, 0x941F, 0x11D0, [0x85, 0x29, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsPropertyList = {0xC6F602B6, 0x8F69, 0x11D0, [0x85, 0x28, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsPropertyValue = {0x79FA9AD0, 0xA97C, 0x11D0, [0x85, 0x34, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsPropertyValue2 = {0x306E831C, 0x5BC7, 0x11D1, [0xA3, 0xB8, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsReplicaPointer = {0xF60FB803, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsResource = {0x34A05B20, 0x4AAB, 0x11CF, [0xAE, 0x2C, 0x00, 0xAA, 0x00, 0x6E, 0xBF, 0xB9]}; + const IID IID_IADsSearch = {0xC69F7780, 0x4008, 0x11D0, [0xB9, 0x4C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; + const IID IID_IADsSecurityDescriptor = {0xB8C787CA, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsSecurityUtility = {0xA63251B2, 0x5F21, 0x474B, [0xAB, 0x52, 0x4A, 0x8E, 0xFA, 0xD1, 0x08, 0x95]}; + const IID IID_IADsService = {0x68AF66E0, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsServiceOperations = {0x5D7B33F0, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; + const IID IID_IADsSession = {0x398B7DA0, 0x4AAB, 0x11CF, [0xAE, 0x2C, 0x00, 0xAA, 0x00, 0x6E, 0xBF, 0xB9]}; + const IID IID_IADsSyntax = {0xC8F93DD2, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; + const IID IID_IADsTimestamp = {0xB2F5A901, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsTypedName = {0xB371A349, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; + const IID IID_IADsUmiHelperPrivate = {0x4FE243F0, 0xAD89, 0x4CBC, [0x9B, 0x14, 0x48, 0x61, 0x26, 0x44, 0x6A, 0xE0]}; + const IID IID_IADsUser = {0x3E37E320, 0x17E2, 0x11CF, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; + const IID IID_IADsValue = {0x1E3EF0AA, 0xAEF5, 0x11D0, [0x85, 0x37, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IADsWinNTSystemInfo = {0x6C6D65DC, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; + const IID IID_IAdviseSink = {0x0000010F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IAdviseSink2 = {0x00000125, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IAdviseSinkEx = {0x3AF24290, 0x0C96, 0x11CE, [0xA0, 0xCF, 0x00, 0xAA, 0x00, 0x60, 0x0A, 0xB8]}; + const IID IID_IAlertReport = {0x4E81DFE8, 0x4CA0, 0x101A, [0x82, 0x06, 0x08, 0x00, 0x2B, 0x2F, 0xC0, 0x9B]}; + const IID IID_IAlertTarget = {0x589B61C0, 0x54E6, 0x11CE, [0x94, 0xDD, 0x00, 0xAA, 0x00, 0x51, 0xE4, 0x0F]}; + const IID IID_IAlgSetup = {0xA779AF1A, 0x009A, 0x4C44, [0xB9, 0xF0, 0x8F, 0x0F, 0x4C, 0xF2, 0xAE, 0x49]}; + const IID IID_IAlterIndex = {0x0C733AA6, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IAlterTable = {0x0C733AA5, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IAnchorClick = {0x13D5413B, 0x33B9, 0x11D2, [0x95, 0xA7, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; + const IID IID_IAnimationComposer = {0x5459C83D, 0x322B, 0x44B3, [0x8D, 0xAA, 0x24, 0xC9, 0x47, 0xE7, 0xB2, 0x75]}; + const IID IID_IAnimationComposer2 = {0x1A4F0E79, 0x09CD, 0x47F3, [0xAF, 0xF1, 0x48, 0x3B, 0xF3, 0xA2, 0x22, 0xDC]}; + const IID IID_IAnimationComposerFactory = {0xBEEB3233, 0xF71F, 0x4683, [0x8B, 0x05, 0x9A, 0x53, 0x14, 0xC9, 0x7D, 0xBC]}; + const IID IID_IAnimationComposerSite = {0x488FCB56, 0x8FD6, 0x4CDA, [0xA0, 0x6A, 0x5B, 0xB2, 0x32, 0x93, 0x0E, 0xCA]}; + const IID IID_IAnimationComposerSiteFactory = {0xB4EA5681, 0xED72, 0x4EFE, [0xBB, 0xD7, 0x7C, 0x47, 0xD1, 0x32, 0x56, 0x96]}; + const IID IID_IAnimationComposerSiteSink = {0x8EF76C64, 0x71CD, 0x480F, [0x96, 0xFC, 0xBA, 0x26, 0x96, 0xE6, 0x59, 0xBE]}; + const IID IID_IAnimationFragment = {0x319DFD88, 0x0AC6, 0x4AB1, [0xA1, 0x9F, 0x90, 0x22, 0x3B, 0xA2, 0xDA, 0x16]}; + const IID IID_IAnimationRoot = {0x29DF6387, 0x30B4, 0x4A62, [0x89, 0x1B, 0xA9, 0xC5, 0xBE, 0x37, 0xBE, 0x88]}; + const IID IID_IApplicationDebugger = {0x51973C2A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IApplicationDebuggerUI = {0x51973C2B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IApplicationGateway = {0x5134842B, 0xFDCE, 0x485D, [0x93, 0xCD, 0xDE, 0x16, 0x40, 0x64, 0x3B, 0xBE]}; + const IID IID_IApplicationGatewayServices = {0x5134842A, 0xFDCE, 0x485D, [0x93, 0xCD, 0xDE, 0x16, 0x40, 0x64, 0x3B, 0xBE]}; + const IID IID_IAppPublisher = {0x07250A10, 0x9CF9, 0x11D1, [0x90, 0x76, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; + const IID IID_IAsyncBindCtx = {0x79EAC9D4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IAsyncManager = {0x0000002A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IAsyncMoniker = {0x79EAC9D3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IAsyncOperation = {0x3D8B0590, 0xF691, 0x11D2, [0x8E, 0xA9, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; + const IID IID_IAsyncRpcChannelBuffer = {0xA5029FB6, 0x3C34, 0x11D1, [0x9C, 0x99, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0xAA]}; + const IID IID_IAttributesRaw = {0x6BC096A8, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; + const IID IID_IAuditControl = {0x1DA6292F, 0xBC66, 0x11CE, [0xAA, 0xE3, 0x00, 0xAA, 0x00, 0x4C, 0x27, 0x37]}; + const IID IID_IAuthenticate = {0x79EAC9D0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IAutoComplete = {0x00BB2762, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; + const IID IID_IAutoComplete2 = {0xEAC04BC0, 0x3791, 0x11D2, [0xBB, 0x95, 0x00, 0x60, 0x97, 0x7B, 0x46, 0x4C]}; + const IID IID_IAutoCompleteDropDown = {0x3CD141F4, 0x3C6A, 0x11D2, [0xBC, 0xAA, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; + const IID IID_IAutoCompList = {0x00BB2760, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; + const IID IID_IAutoDiscoveryProvider = {0x9DCF4A37, 0x01DE, 0x4549, [0xA9, 0xCB, 0x3A, 0xC3, 0x1E, 0xC2, 0x3C, 0x4F]}; + const IID IID_IBackgroundCopyCallback = {0x97EA99C7, 0x0186, 0x4AD4, [0x8D, 0xF9, 0xC5, 0xB4, 0xE0, 0xED, 0x6B, 0x22]}; + const IID IID_IBackgroundCopyCallback1 = {0x084F6593, 0x3800, 0x4E08, [0x9B, 0x59, 0x99, 0xFA, 0x59, 0xAD, 0xDF, 0x82]}; + const IID IID_IBackgroundCopyError = {0x19C613A0, 0xFCB8, 0x4F28, [0x81, 0xAE, 0x89, 0x7C, 0x3D, 0x07, 0x8F, 0x81]}; + const IID IID_IBackgroundCopyFile = {0x01B7BD23, 0xFB88, 0x4A77, [0x84, 0x90, 0x58, 0x91, 0xD3, 0xE4, 0x65, 0x3A]}; + const IID IID_IBackgroundCopyGroup = {0x1DED80A7, 0x53EA, 0x424F, [0x8A, 0x04, 0x17, 0xFE, 0xA9, 0xAD, 0xC4, 0xF5]}; + const IID IID_IBackgroundCopyJob = {0x37668D37, 0x507E, 0x4160, [0x93, 0x16, 0x26, 0x30, 0x6D, 0x15, 0x0B, 0x12]}; + const IID IID_IBackgroundCopyJob1 = {0x59F5553C, 0x2031, 0x4629, [0xBB, 0x18, 0x26, 0x45, 0xA6, 0x97, 0x09, 0x47]}; + const IID IID_IBackgroundCopyJob2 = {0x54B50739, 0x686F, 0x45EB, [0x9D, 0xFF, 0xD6, 0xA9, 0xA0, 0xFA, 0xA9, 0xAF]}; + const IID IID_IBackgroundCopyManager = {0x5CE34C0D, 0x0DC9, 0x4C1F, [0x89, 0x7C, 0xDA, 0xA1, 0xB7, 0x8C, 0xEE, 0x7C]}; + const IID IID_IBackgroundCopyQMgr = {0x16F41C69, 0x09F5, 0x41D2, [0x8C, 0xD8, 0x3C, 0x08, 0xC4, 0x7B, 0xC8, 0xA8]}; + const IID IID_IBidiRequestSpl = {0x9C007000, 0xFFA8, 0x44FF, [0xB2, 0xB3, 0xAE, 0x91, 0x02, 0xC7, 0x4D, 0x4C]}; + const IID IID_IBindCtx = {0x0000000E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IBindEventHandler = {0x63CDBCB0, 0xC1B1, 0x11D0, [0x93, 0x36, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; + const IID IID_IBindHost = {0xFC4801A1, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID IID_IBinding = {0x79EAC9C0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IBindProtocol = {0x79EAC9CD, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IBindResource = {0x0C733AB1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IBindStatusCallback = {0x79EAC9C1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IBindStatusCallbackHolder = {0x79EAC9CC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IBindStatusCallbackMsg = {0x79EAC9D5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IBitsTest1 = {0x51A183DB, 0x67E0, 0x4472, [0x86, 0x02, 0x3D, 0xBC, 0x73, 0x0B, 0x7E, 0xF5]}; + const IID IID_IBlockFormats = {0x3050F830, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IBlockingLock = {0x30F3D47A, 0x6447, 0x11D1, [0x8E, 0x3C, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; + const IID IID_IBoundObject = {0x9BFBBC00, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IBoundObjectSite = {0x9BFBBC01, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IBriefcaseStg = {0x8BCE1FA1, 0x0921, 0x101B, [0xB1, 0xFF, 0x00, 0xDD, 0x01, 0x0C, 0xCC, 0x48]}; + const IID IID_IBurnEngine = {0x520CCA66, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID IID_ICallFactory = {0x1C733A30, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICallFrame = {0xD573B4B0, 0x894E, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; + const IID IID_ICallFrameEvents = {0xFD5E0843, 0xFC91, 0x11D0, [0x97, 0xD7, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; + const IID IID_ICallFrameWalker = {0x08B23919, 0x392D, 0x11D2, [0xB8, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; + const IID IID_ICallIndirect = {0xD573B4B1, 0x894E, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; + const IID IID_ICallInterceptor = {0x60C7CA75, 0x896D, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; + const IID IID_ICallUnmarshal = {0x5333B003, 0x2E42, 0x11D2, [0xB8, 0x9D, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; + const IID IID_ICancelMethodCalls = {0x00000029, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ICatalogFileInfo = {0x711C7600, 0x6B48, 0x11D1, [0xB4, 0x03, 0x00, 0xAA, 0x00, 0xB9, 0x2A, 0xF1]}; + const IID IID_ICategorizer = {0xA3B14589, 0x9174, 0x49A8, [0x89, 0xA3, 0x06, 0xA1, 0xAE, 0x2B, 0x9B, 0xA7]}; + const IID IID_ICategoryProvider = {0x9AF64809, 0x5864, 0x4C26, [0xA7, 0x20, 0xC1, 0xF7, 0x8C, 0x08, 0x6E, 0xE3]}; + const IID IID_ICatInformation = {0x0002E013, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ICatRegister = {0x0002E012, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ICDBurn = {0x3D73A659, 0xE5D0, 0x4D42, [0xAF, 0xC0, 0x51, 0x21, 0xBA, 0x42, 0x5C, 0x8D]}; + const IID IID_ICEnroll = {0x43F8F288, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; + const IID IID_ICEnroll2 = {0x704CA730, 0xC90B, 0x11D1, [0x9B, 0xEC, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; + const IID IID_ICEnroll3 = {0xC28C2D95, 0xB7DE, 0x11D2, [0xA4, 0x21, 0x00, 0xC0, 0x4F, 0x79, 0xFE, 0x8E]}; + const IID IID_ICEnroll4 = {0xC1F1188A, 0x2EB5, 0x4A80, [0x84, 0x1B, 0x7E, 0x72, 0x9A, 0x35, 0x6D, 0x90]}; + const IID IID_IChannelHook = {0x1008C4A0, 0x7613, 0x11CF, [0x9A, 0xF1, 0x00, 0x20, 0xAF, 0x6E, 0x72, 0xF4]}; + const IID IID_IChannelMgr = {0x85BD8E82, 0x0FBA, 0x11D1, [0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68]}; + const IID IID_IChapteredRowset = {0x0C733A93, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICheckBox = {0x3050F685, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ICiAdmin = {0xAE67C7D8, 0x85D3, 0x11D0, [0x8C, 0x45, 0x00, 0xC0, 0x4F, 0xC2, 0xDB, 0x8D]}; + const IID IID_ICiAdminParams = {0xA82D48C6, 0x3F0F, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCAdviseStatus = {0xCA05734A, 0x1218, 0x11D3, [0xAE, 0x7A, 0x00, 0xC0, 0x4F, 0x72, 0xF8, 0x31]}; + const IID IID_ICiCDeferredPropRetriever = {0xC273AF70, 0x6D72, 0x11D0, [0x8D, 0x64, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; + const IID IID_ICiCDocName = {0x76615076, 0x3C2B, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCDocNameToWorkidTranslator = {0x25FC3F54, 0x3CB4, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCDocNameToWorkidTranslatorEx = {0x7BBA76E6, 0xA0E3, 0x11D2, [0xBC, 0x5D, 0x00, 0xC0, 0x4F, 0xA3, 0x54, 0xBA]}; + const IID IID_ICiCDocStore = {0x46625468, 0x3C32, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCDocStoreEx = {0xF98282A7, 0xFA72, 0x11D1, [0x97, 0x98, 0x00, 0xC0, 0x4F, 0xC2, 0xF4, 0x10]}; + const IID IID_ICiCDocStoreLocator = {0x97EE7C06, 0x5908, 0x11D0, [0x8C, 0x9B, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCEventLogItem = {0x44CC886A, 0x4314, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCFilterClient = {0xA1E0BCB6, 0x3C24, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCFilterStatus = {0xBC5F3D60, 0x8BBC, 0x11D1, [0x8F, 0x73, 0x00, 0xA0, 0xC9, 0x19, 0x17, 0xF5]}; + const IID IID_ICiCIndexNotificationStatus = {0x5FFF3840, 0x8E76, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; + const IID IID_ICiCLangRes = {0x914C2E6C, 0x43FE, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiControl = {0x63DEB7F4, 0x3CCB, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCOpenedDoc = {0x151EDFBE, 0x3C2F, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCPropertyStorage = {0x4C46225A, 0x3CB5, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCPropRetriever = {0x77D9B2DA, 0x4401, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCQueryNotification = {0x0A9E9F6C, 0x3CE2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCQuerySession = {0xAE461FD6, 0x4E1D, 0x11D0, [0x8C, 0x94, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCResourceMonitor = {0xF700FF8E, 0x20EE, 0x11D2, [0x80, 0xF7, 0x00, 0xC0, 0x4F, 0xA3, 0x54, 0xBA]}; + const IID IID_ICiCScope = {0x1021C882, 0x3CC0, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCScopeChecker = {0x7D820C9C, 0x3CBC, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCScopeEnumerator = {0xCF8505EA, 0x3CCA, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCSecurityChecker = {0xCA130CF4, 0x3CC2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiCUserSecurity = {0x5D01D9CE, 0x3CC2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiDocChangeNotifySink = {0x8BFA1386, 0x3CE5, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiEnumWorkids = {0x77900150, 0xA09C, 0x11D0, [0xA8, 0x0D, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; + const IID IID_ICiFrameworkQuery = {0xAE67C7D9, 0x85D3, 0x11D0, [0x8C, 0x45, 0x00, 0xC0, 0x4F, 0xC2, 0xDB, 0x8D]}; + const IID IID_ICiIndexNotification = {0x4F2CD6E0, 0x8E74, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; + const IID IID_ICiIndexNotificationEntry = {0x210769D0, 0x8E75, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; + const IID IID_ICiISearchCreator = {0x7DC07FA0, 0x902E, 0x11D0, [0xA8, 0x0C, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; + const IID IID_ICiManager = {0xCF0FCF56, 0x3CCE, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiPersistIncrFile = {0x31B311E2, 0x4498, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_ICiQueryPropertyMapper = {0xD2333EB0, 0x756B, 0x11D0, [0x8D, 0x66, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; + const IID IID_ICiStartup = {0x68232CB8, 0x3CCC, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_IClassActivator = {0x00000140, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IClassFactory = {0x00000001, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IClassFactory2 = {0xB196B28F, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IClassFactoryEx = {0x342D1EA0, 0xAE25, 0x11D1, [0x89, 0xC5, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; + const IID IID_IClientCaps = {0x7E8BC44D, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; + const IID IID_IClientSecurity = {0x0000013D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IClusCfgAsyncEvictCleanup = {0x52C80B95, 0xC1AD, 0x4240, [0x8D, 0x89, 0x72, 0xE9, 0xFA, 0x84, 0x02, 0x5E]}; + const IID IID_IClusCfgBaseCluster = {0xA8A5C613, 0x2518, 0x47F5, [0x96, 0xCA, 0xCA, 0xFA, 0x7F, 0xFB, 0xAF, 0x68]}; + const IID IID_IClusCfgCallback = {0x238DCA63, 0xE2EF, 0x4F32, [0xA2, 0x4D, 0xAC, 0xBF, 0x97, 0x5B, 0xE8, 0x42]}; + const IID IID_IClusCfgCapabilities = {0xD94AB253, 0x36C7, 0x41C1, [0xB5, 0x2E, 0x26, 0xB4, 0x51, 0x97, 0x5C, 0x8D]}; + const IID IID_IClusCfgClusterConnection = {0xCE6EF90C, 0x3602, 0x41E7, [0x95, 0xBD, 0xAA, 0xFD, 0x37, 0xA6, 0x76, 0xDF]}; + const IID IID_IClusCfgClusterInfo = {0x85B4BBC0, 0xDDC4, 0x4AE7, [0x82, 0x68, 0xF4, 0x85, 0x0B, 0xB2, 0xA6, 0xEE]}; + const IID IID_IClusCfgCredentials = {0x54AA9406, 0xA409, 0x4B49, [0xB3, 0x14, 0x5F, 0x0A, 0x0C, 0xE4, 0xC8, 0x8E]}; + const IID IID_IClusCfgEvictCleanup = {0x6FE3E361, 0xD373, 0x4C5F, [0xA0, 0xAF, 0x1D, 0xFE, 0x84, 0x93, 0xC6, 0x55]}; + const IID IID_IClusCfgGroupCfg = {0xDCB6D3D2, 0xA55F, 0x49E5, [0xA6, 0x4A, 0x0C, 0xCF, 0xEB, 0x01, 0xED, 0x3A]}; + const IID IID_IClusCfgInitialize = {0x2A0EB82D, 0xF878, 0x492A, [0x95, 0x1E, 0xAE, 0x00, 0x09, 0x18, 0xC4, 0xA6]}; + const IID IID_IClusCfgIPAddressInfo = {0xAAEAF0A5, 0xE310, 0x4604, [0xA5, 0x5E, 0x2F, 0x9D, 0xDC, 0x41, 0x57, 0xA8]}; + const IID IID_IClusCfgManagedResourceCfg = {0x60300A0F, 0x77E1, 0x440C, [0xBD, 0x94, 0x6B, 0xFB, 0x0D, 0xBF, 0xDB, 0x3A]}; + const IID IID_IClusCfgManagedResourceInfo = {0xE0324847, 0x1520, 0x41B0, [0xB9, 0x60, 0x54, 0x19, 0x8D, 0xA5, 0xF8, 0xAF]}; + const IID IID_IClusCfgMemberSetChangeListener = {0x2B64534F, 0x2643, 0x4ABC, [0xA4, 0xE5, 0x82, 0x4D, 0x88, 0x1B, 0x75, 0x82]}; + const IID IID_IClusCfgNetworkInfo = {0x19FC7580, 0x950A, 0x44A6, [0x96, 0x6E, 0x74, 0xB1, 0x4B, 0x20, 0x91, 0x8F]}; + const IID IID_IClusCfgNodeInfo = {0xE4B5FA15, 0xDD07, 0x439E, [0xA6, 0x23, 0x88, 0x23, 0x52, 0x4E, 0x3D, 0x19]}; + const IID IID_IClusCfgPartitionInfo = {0xEC1EBD9F, 0x5866, 0x4846, [0x89, 0x52, 0xEC, 0x36, 0xC3, 0x96, 0x1E, 0xEE]}; + const IID IID_IClusCfgPollingCallback = {0xC72DB1FD, 0x51A2, 0x43E6, [0xB7, 0x08, 0xD9, 0xDB, 0x7D, 0xA7, 0x96, 0x30]}; + const IID IID_IClusCfgPollingCallbackInfo = {0x2AF55DA7, 0xCB6F, 0x40DE, [0xBB, 0x11, 0x66, 0x73, 0x46, 0x4B, 0x2C, 0x54]}; + const IID IID_IClusCfgResourceCreate = {0x0647B41A, 0xC777, 0x443C, [0x94, 0x32, 0x02, 0xCC, 0xCF, 0x4F, 0xF4, 0x43]}; + const IID IID_IClusCfgResourcePostCreate = {0x72A9BF54, 0x13B6, 0x451F, [0x91, 0x0D, 0x69, 0x13, 0xEB, 0xF0, 0x25, 0xAB]}; + const IID IID_IClusCfgResourcePreCreate = {0x4240F6A1, 0x9D49, 0x427E, [0x8F, 0x3D, 0x09, 0x38, 0x4E, 0x1F, 0x59, 0xE4]}; + const IID IID_IClusCfgResourceTypeCreate = {0x3AFCE3B8, 0x5F3E, 0x4DDF, [0xA8, 0xF4, 0x4B, 0x4F, 0xCB, 0xF2, 0x8F, 0x8F]}; + const IID IID_IClusCfgResourceTypeInfo = {0xC649A281, 0xC847, 0x4F5C, [0x98, 0x41, 0xD2, 0xF7, 0x3B, 0x5A, 0xA7, 0x1D]}; + const IID IID_IClusCfgResTypeServicesInitializ = {0x6E109698, 0xDFC4, 0x4471, [0xAC, 0xE1, 0x04, 0x14, 0x93, 0x1B, 0x3B, 0xB3]}; + const IID IID_IClusCfgServer = {0x4C06EAE6, 0x990E, 0x4051, [0x8A, 0xA1, 0xAD, 0x4B, 0x4E, 0xAE, 0x9C, 0xAF]}; + const IID IID_IClusCfgSetCredentials = {0x58E6E5B9, 0x4788, 0x4D9A, [0x82, 0x55, 0x1E, 0x27, 0x4E, 0x5D, 0xCC, 0xB0]}; + const IID IID_IClusCfgStartupListener = {0xD282CAEF, 0x2EDE, 0x4AB9, [0xA5, 0xD5, 0xF7, 0xBD, 0xE3, 0xD2, 0x3F, 0x0F]}; + const IID IID_IClusCfgStartupNotify = {0xC2B0D069, 0x6353, 0x4EE1, [0xB2, 0x53, 0x6B, 0x0D, 0x75, 0xDB, 0x2C, 0xD3]}; + const IID IID_IClusCfgVerify = {0xD47BBEEC, 0x2286, 0x4514, [0xAA, 0x90, 0x7E, 0x88, 0xBD, 0x0F, 0xE5, 0x43]}; + const IID IID_IClusCfgWizard = {0x2EB57A3B, 0xDA8D, 0x4B56, [0x97, 0xCF, 0xA3, 0x19, 0x1B, 0xF8, 0xFD, 0x5B]}; + const IID IID_IClusterApplicationWizard = {0x24F97151, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; + const IID IID_ICodeInstall = {0x79EAC9D1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IColumnMapper = {0x0B63E37A, 0x9CCC, 0x11D0, [0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04]}; + const IID IID_IColumnMapperCreator = {0x0B63E37B, 0x9CCC, 0x11D0, [0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04]}; + const IID IID_IColumnProvider = {0xE8025004, 0x1C42, 0x11D2, [0xBE, 0x2C, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; + const IID IID_IColumnsInfo = {0x0C733A11, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IColumnsInfo2 = {0x0C733AB8, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IColumnsRowset = {0x0C733A10, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICombobox = {0x3050F677, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ICommand = {0x0C733A63, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICommandCost = {0x0C733A4E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICommandPersist = {0x0C733AA7, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICommandPrepare = {0x0C733A26, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICommandProperties = {0x0C733A79, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICommandStream = {0x0C733ABF, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICommandText = {0x0C733A27, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICommandTree = {0x0C733A87, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICommandValidate = {0x0C733A18, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICommandWithParameters = {0x0C733A64, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICommDlgBrowser = {0x000214F1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ICommDlgBrowser2 = {0x10339516, 0x2894, 0x11D2, [0x90, 0x39, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; + const IID IID_ICommonQuery = {0xAB50DEC0, 0x6F1D, 0x11D0, [0xA1, 0xC4, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; + const IID IID_IComThreadingInfo = {0x000001CE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IConfigurationConnection = {0xDDAD8191, 0x66C5, 0x4A30, [0xA4, 0xDF, 0xCB, 0x6C, 0x21, 0x67, 0x04, 0xCA]}; + const IID IID_IConnectionInfo = {0x15182CE3, 0x82D7, 0x473F, [0x92, 0xDE, 0x70, 0x6E, 0x2B, 0xCE, 0xA9, 0x02]}; + const IID IID_IConnectionManager = {0xC0017768, 0x1BF3, 0x4352, [0x8D, 0x6C, 0x3A, 0x8C, 0x1D, 0x0F, 0xB4, 0x77]}; + const IID IID_IConnectionPoint = {0xB196B286, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IConnectionPointContainer = {0xB196B284, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IContextCallback = {0x000001DA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IContextMenu = {0x000214E4, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IContextMenu2 = {0x000214F4, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IContextMenu3 = {0xBCFCE0A0, 0xEC17, 0x11D0, [0x8D, 0x10, 0x00, 0xA0, 0xC9, 0x0F, 0x27, 0x19]}; + const IID IID_IContinue = {0x0000012A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IContinueCallback = {0xB722BCCA, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; + const IID IID_IConvertType = {0x0C733A88, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICrBarn = {0x276A2EE0, 0x0B5D, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID IID_ICrBarn2 = {0xB66A7A1B, 0x8FC6, 0x448C, [0xA2, 0xEB, 0x3C, 0x55, 0x95, 0x74, 0x78, 0xA1]}; + const IID IID_ICrBlinds = {0x5AF5C340, 0x0BA9, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID IID_ICrBlinds2 = {0x7059D403, 0x599A, 0x4264, [0x81, 0x40, 0x64, 0x1E, 0xB8, 0xAE, 0x1F, 0x64]}; + const IID IID_ICrBlur = {0x9F7C7827, 0xE87A, 0x11D1, [0x81, 0xE0, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_ICreateErrorInfo = {0x22F03340, 0x547D, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; + const IID IID_ICreateRow = {0x0C733AB2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ICreateTypeInfo = {0x00020405, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ICreateTypeInfo2 = {0x0002040E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ICreateTypeLib = {0x00020406, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ICreateTypeLib2 = {0x0002040F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ICrEmboss = {0xE4ACFB80, 0x053E, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_ICrEngrave = {0xE4ACFB7F, 0x053E, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_ICrInset = {0x05C5EE20, 0x0BA6, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID IID_ICrIris = {0x3F69F350, 0x0379, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID IID_ICrIris2 = {0xF7B06961, 0xBA8C, 0x4970, [0x91, 0x8B, 0x1C, 0x60, 0xCB, 0x9F, 0xF1, 0x80]}; + const IID IID_ICrRadialWipe = {0x424B71AE, 0x0695, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID IID_ICrSlide = {0x810E402E, 0x056B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID IID_ICrSpiral = {0x0DE527A0, 0x0C7E, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID IID_ICrStretch = {0x6684AF00, 0x0A87, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID IID_ICrWheel = {0x3943DE80, 0x1464, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID IID_ICrZigzag = {0x4E5A64A0, 0x0C8B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; + const IID IID_ICSSFilter = {0x3050F3EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ICSSFilterDispatch = {0x9519152B, 0x9484, 0x4A6C, [0xB6, 0xA7, 0x4F, 0x25, 0xE9, 0x2D, 0x6C, 0x6B]}; + const IID IID_ICSSFilterSite = {0x3050F3ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ICurrentWorkingDirectory = {0x91956D21, 0x9276, 0x11D1, [0x92, 0x1A, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; + const IID IID_ICursor = {0x9F6AA700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; + const IID IID_ICursorFind = {0xE01D7850, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; + const IID IID_ICursorMove = {0xACFF0690, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; + const IID IID_ICursorScroll = {0xBB87E420, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; + const IID IID_ICursorUpdateARow = {0xD14216A0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; + const IID IID_ICustomDoc = {0x3050F3F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ICustomRatingHelper = {0xD0D9842D, 0xE211, 0x4B2C, [0x88, 0xDC, 0xBC, 0x72, 0x93, 0x42, 0xDF, 0xCB]}; + const IID IID_IDA2Array = {0x2A8F0B06, 0xBE2B, 0x11D1, [0xB2, 0x19, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; + const IID IID_IDA2Behavior = {0xC46C1BF0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDA2Event = {0x69B5BC70, 0x9B19, 0x11D0, [0x9B, 0x60, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID IID_IDA2FontStyle = {0x283807B5, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; + const IID IID_IDA2Geometry = {0x4A933702, 0xE36F, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID IID_IDA2Image = {0x45393DF0, 0x54B9, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; + const IID IID_IDA2LineStyle = {0x2AE71568, 0x4B34, 0x11D1, [0xB1, 0xE3, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; + const IID IID_IDA2Statics = {0xD17506C2, 0x6B26, 0x11D0, [0x89, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; + const IID IID_IDA2View = {0x5F00F545, 0xDF18, 0x11D1, [0xAB, 0x6F, 0x00, 0xC0, 0x4F, 0xD9, 0x2B, 0x6B]}; + const IID IID_IDA2ViewerControl = {0xC46C1BEF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDA2ViewerControlWindowed = {0xC46C1BED, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAArray = {0xFA261CF0, 0xC44E, 0x11D1, [0x9B, 0xE4, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID IID_IDABbox2 = {0xBA8B033E, 0x1E91, 0x11D1, [0x88, 0x09, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; + const IID IID_IDABbox3 = {0x0E41257B, 0x812D, 0x11D0, [0x9B, 0x4A, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID IID_IDABehavior = {0x5DFB2651, 0x9668, 0x11D0, [0xB1, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; + const IID IID_IDABoolean = {0xC46C1BDA, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDABvrHook = {0x50B4791F, 0x4731, 0x11D0, [0x89, 0x12, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; + const IID IID_IDACamera = {0xC46C1BCA, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAColor = {0xC46C1BDC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDADashStyle = {0xF3E1B522, 0xD8A6, 0x11D1, [0x9B, 0xE5, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID IID_IDADrawingSurface = {0xC46C1BF4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDADXTransformResult = {0xAF868305, 0xAB0B, 0x11D0, [0x87, 0x6A, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; + const IID IID_IDAEndStyle = {0xB6FFC24C, 0x7E13, 0x11D0, [0x9B, 0x47, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID IID_IDAEvent = {0xC46C1BCE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAFontStyle = {0xC46C1BC1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAGeometry = {0xC46C1BCC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAImage = {0xC46C1BC4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAImport = {0xC46C1BEE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAImportationResult = {0xB90E5258, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; + const IID IID_IDAJoinStyle = {0xA3034056, 0xEC1C, 0x11D1, [0x9B, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID IID_IDALineStyle = {0x69AD90EF, 0x1C20, 0x11D1, [0x88, 0x01, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; + const IID IID_IDAMatte = {0xC46C1BE4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAMicrophone = {0xC46C1BD8, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAModifiableBehavior = {0xC46C1BEC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAMontage = {0xC46C1BC8, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDANumber = {0xD17506C3, 0x6B26, 0x11D0, [0x89, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; + const IID IID_IDAPair = {0x542FB453, 0x5003, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; + const IID IID_IDAPath2 = {0xC46C1BD0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAPickableResult = {0xC46C1BDE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAPoint2 = {0x9CDE7341, 0x3C20, 0x11D0, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; + const IID IID_IDAPoint3 = {0xC46C1BD6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAPreferences = {0xB90E525A, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; + const IID IID_IDASite = {0xB90E5259, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; + const IID IID_IDASound = {0xC46C1BE6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAStatics = {0x5DFB2650, 0x9668, 0x11D0, [0xB1, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; + const IID IID_IDAString = {0xC46C1BD2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDataAdviseHolder = {0x00000110, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDataChannel = {0xAD42D12A, 0x4AD0, 0x4856, [0x91, 0x9E, 0xE8, 0x54, 0xC9, 0x1D, 0x18, 0x56]}; + const IID IID_IDataConvert = {0x0C733A8D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDataFilter = {0x69D14C80, 0xC18E, 0x11D0, [0xA9, 0xCE, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; + const IID IID_IDataObject = {0x0000010E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDATransform2 = {0xC46C1BD4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDATransform3 = {0xC46C1BE0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDATuple = {0x542FB452, 0x5003, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; + const IID IID_IDAUntilNotifier = {0x25B0F91C, 0xD23D, 0x11D0, [0x9B, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID IID_IDAUserData = {0xBACD4D86, 0x4A4F, 0x11D1, [0x9B, 0xC8, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID IID_IDAVector2 = {0xC46C1BC6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAVector3 = {0xC46C1BE2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAView = {0xAF868304, 0xAB0B, 0x11D0, [0x87, 0x6A, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; + const IID IID_IDAViewerControl = {0xC46C1BDD, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAViewerControlWindowed = {0xC46C1BCD, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; + const IID IID_IDAViewSite = {0xBCBB1F75, 0xE384, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID IID_IDBAsynchNotify = {0x0C733A96, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDBAsynchStatus = {0x0C733A95, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDBBinderProperties = {0x0C733AB3, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDBCreateCommand = {0x0C733A1D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDBCreateSession = {0x0C733A5D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDBDataSourceAdmin = {0x0C733A7A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDBInfo = {0x0C733A89, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDBInitialize = {0x0C733A8B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDBProperties = {0x0C733A8A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDBSchemaCommand = {0x0C733A50, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDBSchemaRowset = {0x0C733A7B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDCInfo = {0x0C733A9C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IDDVideoAcceleratorContainer = {0xACA12120, 0x3356, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; + const IID IID_IDDVideoPortContainer = {0x6C142760, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; + const IID IID_IDebug = {0x00000123, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDebugApplication = {0x51973C32, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugApplication32 = {0x51973C32, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugApplication64 = {0x4DEDC754, 0x04C7, 0x4F10, [0x9E, 0x60, 0x16, 0xA3, 0x90, 0xFE, 0x6E, 0x62]}; + const IID IID_IDebugApplicationEx = {0x51973C00, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugApplicationNode = {0x51973C34, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugApplicationNodeEvents = {0x51973C35, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugApplicationThread = {0x51973C38, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugApplicationThread64 = {0x9DAC5886, 0xDBAD, 0x456D, [0x9D, 0xEE, 0x5D, 0xEC, 0x39, 0xAB, 0x3D, 0xDA]}; + const IID IID_IDebugAsyncOperation = {0x51973C1B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugAsyncOperationCallBack = {0x51973C1C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugCodeContext = {0x51973C13, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugCookie = {0x51973C39, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocument = {0x51973C21, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocumentContext = {0x51973C28, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocumentHelper32 = {0x51973C26, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocumentHelper64 = {0xC4C7363C, 0x20FD, 0x47F9, [0xBD, 0x82, 0x48, 0x55, 0xE0, 0x15, 0x08, 0x71]}; + const IID IID_IDebugDocumentHelperEx = {0x51973C02, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocumentHost = {0x51973C27, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocumentInfo = {0x51973C1F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocumentProvider = {0x51973C20, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocumentText = {0x51973C22, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocumentTextAuthor = {0x51973C24, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocumentTextEvents = {0x51973C23, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugDocumentTextExternalAuthor = {0x51973C25, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugExpression = {0x51973C14, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugExpressionCallBack = {0x51973C16, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugExpressionContext = {0x51973C15, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugExtendedProperty = {0x51973C52, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugFormatter = {0x51973C05, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugHelper = {0x51973C3F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugHelperEx = {0x51973C08, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugOut = {0xC733E4F1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_IDebugProperty = {0x51973C50, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugPropertyEnumType_All = {0x51973C55, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugPropertyEnumType_Arguments = {0x51973C57, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugPropertyEnumType_Locals = {0x51973C56, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugPropertyEnumType_LocalsPlus = {0x51973C58, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugPropertyEnumType_Registers = {0x51973C59, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugRegister = {0xC733E4F0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_IDebugSessionProvider = {0x51973C29, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugSessionProviderEx = {0x51973C09, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugSetValueCallback = {0x51973C06, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugStackFrame = {0x51973C17, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugStackFrameSniffer = {0x51973C18, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugStackFrameSnifferEx = {0x51973C19, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugStackFrameSnifferEx32 = {0x51973C19, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugStackFrameSnifferEx64 = {0x8CD12AF4, 0x49C1, 0x4D52, [0x8D, 0x8A, 0xC1, 0x46, 0xF4, 0x75, 0x81, 0xAA]}; + const IID IID_IDebugStream = {0x00000124, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDebugSyncOperation = {0x51973C1A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugThreadCall = {0x51973C36, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugThreadCall32 = {0x51973C36, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IDebugThreadCall64 = {0xCB3FA335, 0xE979, 0x42FD, [0x9F, 0xCF, 0xA7, 0x54, 0x6A, 0x0F, 0x39, 0x05]}; + const IID IID_IDelaydC = {0xBFF9C030, 0xB58F, 0x11CE, [0xB5, 0xB0, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; + const IID IID_IDelayedRelease = {0x000214ED, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDelegateFolder = {0xADD8BA80, 0x002B, 0x11D0, [0x8F, 0x0F, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; + const IID IID_IDeskBand = {0xEB0FE172, 0x1A3A, 0x11D0, [0x89, 0xB3, 0x00, 0xA0, 0xC9, 0x0A, 0x90, 0xAC]}; + const IID IID_IDeviceRect = {0x3050F6D5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IDfReserved1 = {0x00000013, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDfReserved2 = {0x00000014, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDfReserved3 = {0x00000015, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDialBranding = {0x8AECAFA9, 0x4306, 0x43CC, [0x8C, 0x5A, 0x76, 0x5F, 0x29, 0x79, 0xCC, 0x16]}; + const IID IID_IDialEngine = {0x39FD782B, 0x7905, 0x40D5, [0x91, 0x48, 0x3C, 0x9B, 0x19, 0x04, 0x23, 0xD5]}; + const IID IID_IDialEventSink = {0x2D86F4FF, 0x6E2D, 0x4488, [0xB2, 0xE9, 0x69, 0x34, 0xAF, 0xD4, 0x1B, 0xEA]}; + const IID IID_IDifferencing = {0x994F0AF0, 0x2977, 0x11CE, [0xBB, 0x80, 0x08, 0x00, 0x2B, 0x36, 0xB2, 0xB0]}; + const IID IID_IDirect3D = {0x3BBA0080, 0x2421, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; + const IID IID_IDirect3D2 = {0x6AAE1EC1, 0x662A, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; + const IID IID_IDirect3D3 = {0xBB223240, 0xE72B, 0x11D0, [0xA9, 0xB4, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E]}; + const IID IID_IDirect3D7 = {0xF5049E77, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID IID_IDirect3DDevice = {0x64108800, 0x957D, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; + const IID IID_IDirect3DDevice2 = {0x93281501, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; + const IID IID_IDirect3DDevice3 = {0xB0AB3B60, 0x33D7, 0x11D1, [0xA9, 0x81, 0x00, 0xC0, 0x4F, 0xD7, 0xB1, 0x74]}; + const IID IID_IDirect3DDevice7 = {0xF5049E79, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID IID_IDirect3DExecuteBuffer = {0x4417C145, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; + const IID IID_IDirect3DHALDevice = {0x84E63DE0, 0x46AA, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; + const IID IID_IDirect3DLight = {0x4417C142, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; + const IID IID_IDirect3DMaterial = {0x4417C144, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; + const IID IID_IDirect3DMaterial2 = {0x93281503, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; + const IID IID_IDirect3DMaterial3 = {0xCA9C46F4, 0xD3C5, 0x11D1, [0xB7, 0x5A, 0x00, 0x60, 0x08, 0x52, 0xB3, 0x12]}; + const IID IID_IDirect3DMMXDevice = {0x881949A1, 0xD6F3, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; + const IID IID_IDirect3DNullDevice = {0x8767DF22, 0xBACC, 0x11D1, [0x89, 0x69, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID IID_IDirect3DRampDevice = {0xF2086B20, 0x259F, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; + const IID IID_IDirect3DRefDevice = {0x50936643, 0x13E9, 0x11D1, [0x89, 0xAA, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; + const IID IID_IDirect3DRGBDevice = {0xA4665C60, 0x2673, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; + const IID IID_IDirect3DRM = {0x2BC49361, 0x8327, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRM2 = {0x4516ECC8, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRM3 = {0x4516EC83, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRMAnimation = {0xEB16CB0D, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMAnimation2 = {0xFF6B7F77, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; + const IID IID_IDirect3DRMAnimationArray = {0xD5F1CAE0, 0x4BD7, 0x11D1, [0xB9, 0x74, 0x00, 0x60, 0x08, 0x3E, 0x45, 0xF3]}; + const IID IID_IDirect3DRMAnimationSet = {0xEB16CB0E, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMAnimationSet2 = {0xFF6B7F79, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; + const IID IID_IDirect3DRMClippedVisual = {0x5434E733, 0x6D66, 0x11D1, [0xBB, 0x0B, 0x00, 0x00, 0xF8, 0x75, 0x86, 0x5A]}; + const IID IID_IDirect3DRMDevice = {0xE9E19280, 0x6E05, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMDevice2 = {0x4516EC78, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRMDevice3 = {0x549F498B, 0xBFEB, 0x11D1, [0x8E, 0xD8, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x82]}; + const IID IID_IDirect3DRMDeviceArray = {0xEB16CB10, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMFace = {0xEB16CB07, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMFace2 = {0x4516EC81, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRMFaceArray = {0xEB16CB17, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMFrame = {0xEB16CB03, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMFrame2 = {0xC3DFBD60, 0x3988, 0x11D0, [0x9E, 0xC2, 0x00, 0x00, 0xC0, 0x29, 0x1A, 0xC3]}; + const IID IID_IDirect3DRMFrame3 = {0xFF6B7F70, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; + const IID IID_IDirect3DRMFrameArray = {0xEB16CB12, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMInterpolator = {0x242F6BC1, 0x3849, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRMLight = {0xEB16CB08, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMLightArray = {0xEB16CB14, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMMaterial = {0xEB16CB0B, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMMaterial2 = {0xFF6B7F75, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; + const IID IID_IDirect3DRMMesh = {0xA3A80D01, 0x6E12, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMMeshBuilder = {0xA3A80D02, 0x6E12, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMMeshBuilder2 = {0x4516EC77, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRMMeshBuilder3 = {0x4516EC82, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRMObject = {0xEB16CB00, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMObject2 = {0x4516EC7C, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRMObjectArray = {0x242F6BC2, 0x3849, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRMPicked2Array = {0x4516EC7B, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRMPickedArray = {0xEB16CB16, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMProgressiveMesh = {0x4516EC79, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; + const IID IID_IDirect3DRMShadow = {0xAF359780, 0x6BA3, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMShadow2 = {0x86B44E25, 0x9C82, 0x11D1, [0xBB, 0x0B, 0x00, 0xA0, 0xC9, 0x81, 0xA0, 0xA6]}; + const IID IID_IDirect3DRMTexture = {0xEB16CB09, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMTexture2 = {0x120F30C0, 0x1629, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; + const IID IID_IDirect3DRMTexture3 = {0xFF6B7F73, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; + const IID IID_IDirect3DRMUserVisual = {0x59163DE0, 0x6D43, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMViewport = {0xEB16CB02, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMViewport2 = {0x4A1B1BE6, 0xBFED, 0x11D1, [0x8E, 0xD8, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x82]}; + const IID IID_IDirect3DRMViewportArray = {0xEB16CB11, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMVisual = {0xEB16CB04, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMVisualArray = {0xEB16CB13, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMWinDevice = {0xC5016CC0, 0xD273, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DRMWrap = {0xEB16CB0A, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; + const IID IID_IDirect3DTexture = {0x2CDCD9E0, 0x25A0, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; + const IID IID_IDirect3DTexture2 = {0x93281502, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; + const IID IID_IDirect3DTnLHalDevice = {0xF5049E78, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID IID_IDirect3DVertexBuffer = {0x7A503555, 0x4A83, 0x11D1, [0xA5, 0xDB, 0x00, 0xA0, 0xC9, 0x03, 0x67, 0xF8]}; + const IID IID_IDirect3DVertexBuffer7 = {0xF5049E7D, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID IID_IDirect3DViewport = {0x4417C146, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; + const IID IID_IDirect3DViewport2 = {0x93281500, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; + const IID IID_IDirect3DViewport3 = {0xB0AB3B61, 0x33D7, 0x11D1, [0xA9, 0x81, 0x00, 0xC0, 0x4F, 0xD7, 0xB1, 0x74]}; + const IID IID_IDirectDraw = {0x6C14DB80, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; + const IID IID_IDirectDraw2 = {0xB3A6F3E0, 0x2B43, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; + const IID IID_IDirectDraw4 = {0x9C59509A, 0x39BD, 0x11D1, [0x8C, 0x4A, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; + const IID IID_IDirectDraw7 = {0x15E65EC0, 0x3B9C, 0x11D2, [0xB9, 0x2F, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; + const IID IID_IDirectDrawClipper = {0x6C14DB85, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; + const IID IID_IDirectDrawColorControl = {0x4B9F0EE0, 0x0D7E, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; + const IID IID_IDirectDrawFactory2 = {0x89B2C488, 0x4AF4, 0x11D1, [0x8C, 0x4C, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; + const IID IID_IDirectDrawGammaControl = {0x69C11C3E, 0xB46B, 0x11D1, [0xAD, 0x7A, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; + const IID IID_IDirectDrawKernel = {0x8D56C120, 0x6A08, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; + const IID IID_IDirectDrawOptSurface = {0x51191F1E, 0x4F2B, 0x11D1, [0x8C, 0xC3, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; + const IID IID_IDirectDrawPalette = {0x6C14DB84, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; + const IID IID_IDirectDrawPalette2 = {0xC03C477E, 0x6519, 0x11D1, [0x8C, 0x52, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; + const IID IID_IDirectDrawSurface = {0x6C14DB81, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; + const IID IID_IDirectDrawSurface2 = {0x57805885, 0x6EEC, 0x11CF, [0x94, 0x41, 0xA8, 0x23, 0x03, 0xC1, 0x0E, 0x27]}; + const IID IID_IDirectDrawSurface3 = {0xDA044E00, 0x69B2, 0x11D0, [0xA1, 0xD5, 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xBB]}; + const IID IID_IDirectDrawSurface4 = {0x0B2B8630, 0xAD35, 0x11D0, [0x8E, 0xA6, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; + const IID IID_IDirectDrawSurface7 = {0x06675A80, 0x3B9B, 0x11D2, [0xB9, 0x2F, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; + const IID IID_IDirectDrawSurfaceKernel = {0x60755DA0, 0x6A40, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; + const IID IID_IDirectDrawVideoAccelerator = {0xC9B2D740, 0x3356, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; + const IID IID_IDirectDrawVideoPort = {0xB36D93E0, 0x2B43, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; + const IID IID_IDirectInput2A = {0x5944E662, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IDirectInput2W = {0x5944E663, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IDirectInput7A = {0x9A4CB684, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; + const IID IID_IDirectInput7W = {0x9A4CB685, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; + const IID IID_IDirectInputA = {0x89521360, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IDirectInputDevice2A = {0x5944E682, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IDirectInputDevice2W = {0x5944E683, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IDirectInputDevice7A = {0x57D7C6BC, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; + const IID IID_IDirectInputDevice7W = {0x57D7C6BD, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; + const IID IID_IDirectInputDeviceA = {0x5944E680, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IDirectInputDeviceW = {0x5944E681, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IDirectInputEffect = {0xE7E1F7C0, 0x88D2, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID IID_IDirectInputEffectDriver = {0x02538130, 0x898F, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; + const IID IID_IDirectInputJoyConfig = {0x1DE12AB1, 0xC9F5, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IDirectInputPIDDriver = {0xEEC6993A, 0xB3FD, 0x11D2, [0xA9, 0x16, 0x00, 0xC0, 0x4F, 0xB9, 0x86, 0x38]}; + const IID IID_IDirectInputW = {0x89521361, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IDirectMusic = {0x6536115A, 0x7B2D, 0x11D2, [0xBA, 0x18, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID IID_IDirectMusic2 = {0x6FC2CAE1, 0xBC78, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; + const IID IID_IDirectMusicBand = {0xD2AC28C0, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicBuffer = {0xD2AC2878, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicChordMap = {0xD2AC28BE, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicCollection = {0xD2AC287C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicComposer = {0xD2AC28BF, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicDownload = {0xD2AC287B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicDownloadedInstrument = {0xD2AC287E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicGetLoader = {0x68A04844, 0xD13D, 0x11D1, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; + const IID IID_IDirectMusicGraph = {0x2BEFC277, 0x5497, 0x11D2, [0xBC, 0xCB, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; + const IID IID_IDirectMusicInstrument = {0xD2AC287D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicLoader = {0x2FFAACA2, 0x5DCA, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; + const IID IID_IDirectMusicObject = {0xD2AC28B5, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicPerformance = {0x07D43D03, 0x6523, 0x11D2, [0x87, 0x1D, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicPerformance2 = {0x6FC2CAE0, 0xBC78, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; + const IID IID_IDirectMusicPort = {0x08F2D8C9, 0x37C2, 0x11D2, [0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID IID_IDirectMusicPortDownload = {0xD2AC287A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicSegment = {0xF96029A2, 0x4282, 0x11D2, [0x87, 0x17, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicSegment2 = {0xD38894D1, 0xC052, 0x11D2, [0x87, 0x2F, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicSegmentState = {0xA3AFDCC7, 0xD3EE, 0x11D1, [0xBC, 0x8D, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; + const IID IID_IDirectMusicStyle = {0xD2AC28BD, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicThru = {0xCED153E7, 0x3606, 0x11D2, [0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; + const IID IID_IDirectMusicTool = {0xD2AC28BA, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectMusicTrack = {0xF96029A1, 0x4282, 0x11D2, [0x87, 0x17, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; + const IID IID_IDirectoryObject = {0xE798DE2C, 0x22E4, 0x11D0, [0x84, 0xFE, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IDirectorySchemaMgmt = {0x75DB3B9C, 0xA4D8, 0x11D0, [0xA7, 0x9C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; + const IID IID_IDirectorySearch = {0x109BA8EC, 0x92F0, 0x11D0, [0xA7, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; + const IID IID_IDirectPlay = {0x5454E9A0, 0xDB65, 0x11CE, [0x92, 0x1C, 0x00, 0xAA, 0x00, 0x6C, 0x49, 0x72]}; + const IID IID_IDirectPlay2 = {0x2B74F7C0, 0x9154, 0x11CF, [0xA9, 0xCD, 0x00, 0xAA, 0x00, 0x68, 0x86, 0xE3]}; + const IID IID_IDirectPlay2A = {0x9D460580, 0xA822, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0x53, 0x4E, 0x82]}; + const IID IID_IDirectPlay3 = {0x133EFE40, 0x32DC, 0x11D0, [0x9C, 0xFB, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; + const IID IID_IDirectPlay3A = {0x133EFE41, 0x32DC, 0x11D0, [0x9C, 0xFB, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; + const IID IID_IDirectPlay4 = {0x0AB1C530, 0x4745, 0x11D1, [0xA7, 0xA1, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; + const IID IID_IDirectPlay4A = {0x0AB1C531, 0x4745, 0x11D1, [0xA7, 0xA1, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; + const IID IID_IDirectPlayLobby = {0xAF465C71, 0x9588, 0x11CF, [0xA0, 0x20, 0x00, 0xAA, 0x00, 0x61, 0x57, 0xAC]}; + const IID IID_IDirectPlayLobby2 = {0x0194C220, 0xA303, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID IID_IDirectPlayLobby2A = {0x1BB4AF80, 0xA303, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; + const IID IID_IDirectPlayLobby3 = {0x2DB72490, 0x652C, 0x11D1, [0xA7, 0xA8, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; + const IID IID_IDirectPlayLobby3A = {0x2DB72491, 0x652C, 0x11D1, [0xA7, 0xA8, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; + const IID IID_IDirectPlayLobbyA = {0x26C66A70, 0xB367, 0x11CF, [0xA0, 0x24, 0x00, 0xAA, 0x00, 0x61, 0x57, 0xAC]}; + const IID IID_IDirectSound = {0x279AFA83, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; + const IID IID_IDirectSound3DBuffer = {0x279AFA86, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; + const IID IID_IDirectSound3DListener = {0x279AFA84, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; + const IID IID_IDirectSoundBuffer = {0x279AFA85, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; + const IID IID_IDirectSoundCapture = {0xB0210781, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; + const IID IID_IDirectSoundCaptureBuffer = {0xB0210782, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; + const IID IID_IDirectSoundNotify = {0xB0210783, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; + const IID IID_IDirectWriterLock = {0x0E6D4D92, 0x6738, 0x11CF, [0x96, 0x08, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; + const IID IID_IDirectXFile = {0x3D82AB40, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID IID_IDirectXFileBinary = {0x3D82AB46, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID IID_IDirectXFileData = {0x3D82AB44, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID IID_IDirectXFileDataReference = {0x3D82AB45, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID IID_IDirectXFileEnumObject = {0x3D82AB41, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID IID_IDirectXFileObject = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID IID_IDirectXFileSaveObject = {0x3D82AB42, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID IID_IDiscardableBrowserProperty = {0x49C3DE7C, 0xD329, 0x11D0, [0xAB, 0x73, 0x00, 0xC0, 0x4F, 0xC3, 0x3E, 0x80]}; + const IID IID_IDiscMaster = {0x520CCA62, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID IID_IDiscMasterProgressEvents = {0xEC9E51C1, 0x4E5D, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID IID_IDiscRecorder = {0x85AC9776, 0xCA88, 0x4CF2, [0x89, 0x4E, 0x09, 0x59, 0x8C, 0x07, 0x8A, 0x41]}; + const IID IID_IDiscStash = {0x520CCA64, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID IID_IDispatch = {0x00020400, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDispatchEx = {0xA6EF9860, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; + const IID IID_IDispError = {0xA6EF9861, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; + const IID IID_IDisplayPointer = {0x3050F69E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IDisplayServices = {0x3050F69D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IDithererImpl = {0x7C48E840, 0x3910, 0x11D0, [0x86, 0xFC, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; + const IID IID_IDocHostShowUI = {0xC4D244B0, 0xD43E, 0x11CF, [0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A]}; + const IID IID_IDocHostUIHandler = {0xBD3F23C0, 0xD43E, 0x11CF, [0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A]}; + const IID IID_IDocHostUIHandler2 = {0x3050F6D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IDockingWindow = {0x012DD920, 0x7B26, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; + const IID IID_IDockingWindowFrame = {0x47D2657A, 0x7B27, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; + const IID IID_IDockingWindowSite = {0x2A342FC2, 0x7B26, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; + const IID IID_IDoTask = {0x0230C9F8, 0xEE7F, 0x4307, [0x98, 0xDB, 0x72, 0x6E, 0xBC, 0xAE, 0x55, 0xD6]}; + const IID IID_IDownloadBehavior = {0x3050F5BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IDownloadManager = {0x988934A4, 0x064B, 0x11D3, [0xBB, 0x80, 0x00, 0x10, 0x4B, 0x35, 0xE7, 0xF9]}; + const IID IID_IDownloadNotify = {0xCAEB5D28, 0xAE4C, 0x11D1, [0xBA, 0x40, 0x00, 0xC0, 0x4F, 0xB9, 0x2D, 0x79]}; + const IID IID_IDragSourceHelper = {0xDE5BF786, 0x477A, 0x11D2, [0x83, 0x9D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; + const IID IID_IDropSource = {0x00000121, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDropTarget = {0x00000122, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IDropTargetHelper = {0x4657278B, 0x411B, 0x11D2, [0x83, 0x9A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; + const IID IID_IDsBrowseDomainTree = {0x7CABCF1E, 0x78F5, 0x11D2, [0x96, 0x0C, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; + const IID IID_IDsQueryColumnHandler = {0xC072999E, 0xFA49, 0x11D1, [0xA0, 0xAF, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; + const IID IID_IDummy = {0x0D7CA54A, 0xD252, 0x4FCB, [0x91, 0x04, 0xF6, 0xDD, 0xD3, 0x10, 0xB3, 0xF9]}; + const IID IID_IDummyHICONIncluder = {0x947990DE, 0xCC28, 0x11D2, [0xA0, 0xF7, 0x00, 0x80, 0x5F, 0x85, 0x8F, 0xB1]}; + const IID IID_IDX2D = {0x9EFD02A9, 0xA996, 0x11D1, [0x81, 0xC9, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_IDX2DDebug = {0x03BB2457, 0xA279, 0x11D1, [0x81, 0xC6, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_IDXARGBReadPtr = {0xEAAAC2D6, 0xC290, 0x11D1, [0x90, 0x5D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXARGBReadWritePtr = {0xEAAAC2D7, 0xC290, 0x11D1, [0x90, 0x5D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXARGBSurfaceInit = {0x9EA3B63A, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXBaseObject = {0x17B59B2B, 0x9CC8, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXBasicImage = {0x16B280C7, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXDCLock = {0x0F619456, 0xCF39, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXDLUTBuilder = {0x73068231, 0x35EE, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_IDXDMapper = {0x7FD9088B, 0x35ED, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_IDXEffect = {0xE31FB81B, 0x1335, 0x11D1, [0x81, 0x89, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_IDXGradient = {0xB2024B51, 0xEE77, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXGradient2 = {0xD0EF2A80, 0x61DC, 0x11D2, [0xB2, 0xEB, 0x00, 0xA0, 0xC9, 0x36, 0xB2, 0x12]}; + const IID IID_IDXLookupTable = {0x01BAFC7F, 0x9E63, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXLUTBuilder = {0xF4370FC1, 0xCADB, 0x11D0, [0xB5, 0x2C, 0x00, 0xA0, 0xC9, 0x05, 0x43, 0x73]}; + const IID IID_IDXMapper = {0x555278E5, 0x05DB, 0x11D1, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; + const IID IID_IDXPixelate = {0xD33E180F, 0xFBE9, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXRasterizer = {0x9EA3B635, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXRawSurface = {0x09756C8A, 0xD96A, 0x11D1, [0x90, 0x62, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXSurface = {0xB39FD73F, 0xE139, 0x11D1, [0x90, 0x65, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXSurfaceFactory = {0x144946F5, 0xC4D4, 0x11D1, [0x81, 0xD1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_IDXSurfaceInit = {0x9EA3B639, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXSurfaceModifier = {0x9EA3B637, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXSurfacePick = {0x30A5FB79, 0xE11F, 0x11D1, [0x90, 0x64, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXTAlpha = {0x1D4637E0, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID IID_IDXTAlphaImageLoader = {0xA5F2D3E8, 0x7A7E, 0x48E5, [0xBC, 0x75, 0x40, 0x79, 0x0B, 0xE4, 0xA9, 0x41]}; + const IID IID_IDXTaskManager = {0x254DBBC1, 0xF922, 0x11D0, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; + const IID IID_IDXTBindHost = {0xD26BCE55, 0xE9DC, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXTCheckerBoard = {0xAD3C2576, 0x117C, 0x4510, [0x84, 0xDD, 0xB6, 0x68, 0x97, 0x1D, 0xCF, 0xD1]}; + const IID IID_IDXTChroma = {0x1D4637E2, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID IID_IDXTClipOrigin = {0xEE1663D8, 0x0988, 0x4C48, [0x9F, 0xD6, 0xDB, 0x44, 0x50, 0x88, 0x56, 0x68]}; + const IID IID_IDXTComposite = {0x9A43A843, 0x0831, 0x11D1, [0x81, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_IDXTConvolution = {0x7BA7F8AF, 0xE5EA, 0x11D1, [0x81, 0xDD, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_IDXTDropShadow = {0x1D4637E3, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID IID_IDXTFade = {0x16B280C4, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXTFilter = {0x6187E5A2, 0xA445, 0x4608, [0x8F, 0xC0, 0xBE, 0x7A, 0x6C, 0x8D, 0xB3, 0x86]}; + const IID IID_IDXTFilterBehavior = {0x14D7DDDD, 0xACA2, 0x4E45, [0x95, 0x04, 0x38, 0x08, 0xAB, 0xEB, 0x4F, 0x92]}; + const IID IID_IDXTFilterBehaviorSite = {0x909B23C2, 0x9018, 0x499F, [0xA8, 0x6D, 0x4E, 0x7D, 0xA9, 0x37, 0xE9, 0x31]}; + const IID IID_IDXTFilterCollection = {0x22B07B33, 0x8BFB, 0x49D4, [0x9B, 0x90, 0x09, 0x38, 0x37, 0x0C, 0x90, 0x19]}; + const IID IID_IDXTFilterController = {0x5CF315F2, 0x273D, 0x47B6, [0xB9, 0xED, 0xF7, 0x5D, 0xC3, 0xB0, 0x15, 0x0B]}; + const IID IID_IDXTGlow = {0x1D4637E4, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID IID_IDXTGradientD = {0x623E2881, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; + const IID IID_IDXTGridSize = {0xD6BBE91E, 0xFF60, 0x11D2, [0x8F, 0x6E, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x74]}; + const IID IID_IDXTICMFilter = {0x734321ED, 0x1E7B, 0x4E1C, [0xBB, 0xFA, 0x89, 0xC8, 0x19, 0x80, 0x0E, 0x2F]}; + const IID IID_IDXTLabel = {0xC0C17F0E, 0xAE41, 0x11D1, [0x9A, 0x3B, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; + const IID IID_IDXTLight = {0xF9EFBEC1, 0x4302, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID IID_IDXTMask = {0xA1067146, 0xB063, 0x47D7, [0xA5, 0x4A, 0x2C, 0x23, 0x09, 0xE9, 0x88, 0x9D]}; + const IID IID_IDXTMatrix = {0xAC66A493, 0x0F0C, 0x4C76, [0x82, 0x5C, 0x9D, 0x68, 0xBE, 0xDE, 0x91, 0x88]}; + const IID IID_IDXTMetaBurnFilm = {0x107045D0, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaCenterPeel = {0xAA0D4D0B, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID IID_IDXTMetaColorFade = {0x2A54C907, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaFlowMotion = {0x2A54C90A, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaGriddler = {0x2A54C910, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaGriddler2 = {0x2A54C912, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaJaws = {0x2A54C903, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaLightWipe = {0x107045C7, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaLiquid = {0xAA0D4D09, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID IID_IDXTMetaPageTurn = {0xAA0D4D07, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID IID_IDXTMetaPeelPiece = {0xAA0D4D0F, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID IID_IDXTMetaPeelSmall = {0xAA0D4D0D, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID IID_IDXTMetaPeelSplit = {0xAA0D4D11, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID IID_IDXTMetaRadialScaleWipe = {0x107045C9, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaRipple = {0xAA0D4D02, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID IID_IDXTMetaRoll = {0x9C61F46D, 0x0530, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; + const IID IID_IDXTMetaThreshold = {0x2A54C914, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaTwister = {0x107045CE, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaVacuum = {0x2A54C90C, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaWater = {0x107045C4, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaWhiteOut = {0x107045CB, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; + const IID IID_IDXTMetaWormHole = {0x0E6AE021, 0x0C83, 0x11D2, [0x8C, 0xD4, 0x00, 0x10, 0x4B, 0xC7, 0x5D, 0x9A]}; + const IID IID_IDXTMotionBlur = {0x089057BE, 0xD3F5, 0x4A2C, [0xB1, 0x0A, 0xA5, 0x13, 0x01, 0x84, 0xA0, 0xF7]}; + const IID IID_IDXTRandomBars = {0x8A6D2022, 0x4A8F, 0x4EB9, [0xBB, 0x25, 0xAA, 0x05, 0x20, 0x1F, 0x9C, 0x84]}; + const IID IID_IDXTransform = {0x30A5FB78, 0xE11F, 0x11D1, [0x90, 0x64, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXTransformFactory = {0x6A950B2B, 0xA971, 0x11D1, [0x81, 0xC8, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_IDXTRedirect = {0x02F5140B, 0x626F, 0x4019, [0x9C, 0x9E, 0x2D, 0xAA, 0x1E, 0x93, 0xE8, 0xFC]}; + const IID IID_IDXTRedirectFilterInit = {0xD1A57094, 0x21F7, 0x4E6C, [0x93, 0xE5, 0xF5, 0xF7, 0x7F, 0x74, 0x82, 0x93]}; + const IID IID_IDXTRevealTrans = {0xB8095006, 0xA128, 0x464B, [0x8B, 0x2D, 0x90, 0x58, 0x0A, 0xEE, 0x2B, 0x05]}; + const IID IID_IDXTScale = {0xB39FD742, 0xE139, 0x11D1, [0x90, 0x65, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXTScaleOutput = {0xB2024B50, 0xEE77, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; + const IID IID_IDXTShadow = {0x1D4637E6, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID IID_IDXTStrips = {0xA83C9B5C, 0xFB11, 0x4AF5, [0x8F, 0x65, 0xD0, 0x3F, 0x15, 0x1D, 0x3E, 0xD5]}; + const IID IID_IDXTWave = {0x1D4637E7, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; + const IID IID_IDXTWipe = {0xAF279B2F, 0x86EB, 0x11D1, [0x81, 0xBF, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID IID_IDXTWipe2 = {0xE1FF8091, 0x442B, 0x4801, [0x88, 0xB6, 0x2B, 0x47, 0xB1, 0x61, 0x1F, 0xD2]}; + const IID IID_IDynamicPortMapping = {0x4FC80282, 0x23B6, 0x4378, [0x9A, 0x27, 0xCD, 0x8F, 0x17, 0xC9, 0x40, 0x0C]}; + const IID IID_IDynamicPortMappingCollection = {0xB60DE00F, 0x156E, 0x4E8D, [0x9E, 0xC1, 0x3A, 0x23, 0x42, 0xC1, 0x08, 0x99]}; + const IID IID_IEditDebugServices = {0x3050F60B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementAdorner = {0x3050F607, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehavior = {0x3050F425, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorCategory = {0x3050F4ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorFactory = {0x3050F429, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorFocus = {0x3050F6B6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorLayout = {0x3050F6BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorLayout2 = {0x3050F846, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorRender = {0x3050F4AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorSite = {0x3050F427, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorSiteCategory = {0x3050F4EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorSiteLayout = {0x3050F6B7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorSiteLayout2 = {0x3050F847, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorSiteOM = {0x3050F489, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorSiteOM2 = {0x3050F659, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorSiteRender = {0x3050F4A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorSubmit = {0x3050F646, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementBehaviorUI = {0x3050F4BF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementNamespace = {0x3050F671, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementNamespaceFactory = {0x3050F672, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementNamespaceFactory2 = {0x3050F805, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementNamespaceFactoryCallback = {0x3050F7FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementNamespacePrivate = {0x3050F7FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementNamespaceTable = {0x3050F670, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IElementSegment = {0x3050F68F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IEmptyVolumeCache = {0x8FCE5227, 0x04DA, 0x11D1, [0xA0, 0x04, 0x00, 0x80, 0x5F, 0x8A, 0xBE, 0x06]}; + const IID IID_IEmptyVolumeCache2 = {0x02B7E3BA, 0x4DB3, 0x11D2, [0xB2, 0xD9, 0x00, 0xC0, 0x4F, 0x8E, 0xEC, 0x8C]}; + const IID IID_IEmptyVolumeCacheCallBack = {0x6E793361, 0x73C6, 0x11D0, [0x84, 0x69, 0x00, 0xAA, 0x00, 0x44, 0x29, 0x01]}; + const IID IID_IEncodingFilterFactory = {0x70BDDE00, 0xC18E, 0x11D0, [0xA9, 0xCE, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; + const IID IID_IEnroll = {0xACAA7838, 0x4585, 0x11D1, [0xAB, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; + const IID IID_IEnroll2 = {0xC080E199, 0xB7DF, 0x11D2, [0xA4, 0x21, 0x00, 0xC0, 0x4F, 0x79, 0xFE, 0x8E]}; + const IID IID_IEnroll4 = {0xF8053FE5, 0x78F4, 0x448F, [0xA0, 0xDB, 0x41, 0xD6, 0x1B, 0x73, 0x44, 0x6B]}; + const IID IID_IEntryID = {0xE4D19810, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; + const IID IID_IEnumACDGroup = {0x5AFC3157, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_IEnumACString = {0x8E74C210, 0xCF9D, 0x4EAF, [0xA4, 0x03, 0x73, 0x56, 0x42, 0x8F, 0x0A, 0x5A]}; + const IID IID_IEnumAdapterInfo = {0xA23F9D11, 0x714C, 0x41FE, [0x84, 0x71, 0xFF, 0xB1, 0x9B, 0xC2, 0x84, 0x54]}; + const IID IID_IEnumAddress = {0x1666FCA1, 0x9363, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_IEnumAgent = {0x5AFC314D, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_IEnumAgentHandler = {0x587E8C28, 0x9802, 0x11D1, [0xA0, 0xA4, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_IEnumAgentSession = {0x5AFC314E, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_IEnumBackgroundCopyFiles = {0xCA51E165, 0xC365, 0x424C, [0x8D, 0x41, 0x24, 0xAA, 0xA4, 0xFF, 0x3C, 0x40]}; + const IID IID_IEnumBackgroundCopyGroups = {0xD993E603, 0x4AA4, 0x47C5, [0x86, 0x65, 0xC2, 0x0D, 0x39, 0xC2, 0xBA, 0x4F]}; + const IID IID_IEnumBackgroundCopyJobs = {0x1AF4F612, 0x3B71, 0x466F, [0x8F, 0x58, 0x7B, 0x6F, 0x73, 0xAC, 0x57, 0xAD]}; + const IID IID_IEnumBackgroundCopyJobs1 = {0x8BAEBA9D, 0x8F1C, 0x42C4, [0xB8, 0x2C, 0x09, 0xAE, 0x79, 0x98, 0x0D, 0x25]}; + const IID IID_IEnumBstr = {0x35372049, 0x0BC6, 0x11D2, [0xA0, 0x33, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_IEnumCall = {0xAE269CF6, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_IEnumCallback = {0x00000108, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumCallHub = {0xA3C15450, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_IEnumCallingCard = {0x0C4D8F02, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_IEnumCATEGORYINFO = {0x0002E011, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumChannels = {0xA4C65425, 0x0F82, 0x11D1, [0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68]}; + const IID IID_IEnumClusCfgIPAddresses = {0xBD5F35BA, 0x0BC0, 0x455F, [0x92, 0x6D, 0xC3, 0xD3, 0x56, 0x41, 0x94, 0x86]}; + const IID IID_IEnumClusCfgManagedResources = {0x7DBE11EB, 0xA5DF, 0x4534, [0xAB, 0xF6, 0x8B, 0xAC, 0x7B, 0x53, 0xFC, 0x95]}; + const IID IID_IEnumClusCfgNetworks = {0xCF3FAED8, 0x1322, 0x4BCB, [0x99, 0x23, 0xB5, 0xB7, 0x45, 0xA6, 0x9E, 0x36]}; + const IID IID_IEnumClusCfgPartitions = {0x4440BB6A, 0xB0AC, 0x479D, [0xB5, 0x34, 0x72, 0x65, 0xA3, 0x1D, 0x6C, 0x55]}; + const IID IID_IEnumCodePage = {0x275C23E3, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; + const IID IID_IEnumConnectionPoints = {0xB196B285, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IEnumConnections = {0xB196B287, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IEnumCookies = {0x5E3E482E, 0x3C22, 0x482C, [0xB6, 0x64, 0x69, 0x30, 0x51, 0xAD, 0x0A, 0x5D]}; + const IID IID_IEnumDebugApplicationNodes = {0x51973C3A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IEnumDebugCodeContexts = {0x51973C1D, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IEnumDebugExpressionContexts = {0x51973C40, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IEnumDebugExtendedPropertyInfo = {0x51973C53, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IEnumDebugPropertyInfo = {0x51973C51, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IEnumDebugStackFrames = {0x51973C1E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IEnumDebugStackFrames64 = {0x0DC38853, 0xC1B0, 0x4176, [0xA9, 0x84, 0xB2, 0x98, 0x36, 0x10, 0x27, 0xAF]}; + const IID IID_IEnumDialableAddrs = {0x34621D70, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; + const IID IID_IEnumDirectory = {0x34621D6D, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; + const IID IID_IEnumDirectoryObject = {0x06C9B64A, 0x306D, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_IEnumDiscMasterFormats = {0xDDF445E1, 0x54BA, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID IID_IEnumDiscRecorders = {0x9B1921E1, 0x54AC, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID IID_IEnumExtraSearch = {0x0E700BE1, 0x9DB6, 0x11D1, [0xA1, 0xCE, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; + const IID IID_IEnumFORMATETC = {0x00000103, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumGeneric = {0x00000106, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumGUID = {0x0002E000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumHLITEM = {0x79EAC9C6, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IEnumHNetApplicationProtocols = {0x85D18B7B, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IEnumHNetBridgedConnections = {0x85D18B7D, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IEnumHNetBridges = {0x85D18B77, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IEnumHNetFirewalledConnections = {0x85D18B78, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IEnumHNetIcsPrivateConnections = {0x85D18B7A, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IEnumHNetIcsPublicConnections = {0x85D18B79, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IEnumHNetPortMappingBindings = {0x85D18B81, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IEnumHNetPortMappingProtocols = {0x85D18B7C, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IEnumHolder = {0x00000107, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumIDList = {0x000214F2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumInputContext = {0x09B5EAB0, 0xF997, 0x11D1, [0x93, 0xD4, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; + const IID IID_IEnumItemProperties = {0xF72C8D96, 0x6DBD, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; + const IID IID_IEnumLocation = {0x0C4D8F01, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_IEnumMcastScope = {0xDF0DAF09, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; + const IID IID_IEnumMedia = {0xCA8397BE, 0x2FA4, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_IEnumMoniker = {0x00000102, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumNetCfgBindingInterface = {0xC0E8AE90, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IEnumNetCfgBindingPath = {0xC0E8AE91, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IEnumNetCfgComponent = {0xC0E8AE92, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IEnumNetConnection = {0xC08956A0, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IEnumNetSharingEveryConnection = {0xC08956B8, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IEnumNetSharingPortMapping = {0xC08956B0, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IEnumNetSharingPrivateConnection = {0xC08956B5, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IEnumNetSharingPublicConnection = {0xC08956B4, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IEnumNodes = {0xC477E363, 0xAF0A, 0x4203, [0xA6, 0x04, 0x45, 0xCD, 0x60, 0x7D, 0xD7, 0x10]}; + const IID IID_IEnumNotification = {0xC733E4A8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_IEnumNotificationSinkItem = {0xC733E4AA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_IEnumOleDocumentViews = {0xB722BCC8, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; + const IID IID_IEnumOleUndoUnits = {0xB3E7C340, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; + const IID IID_IEnumOLEVERB = {0x00000104, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumParticipant = {0x0A91B56C, 0x5A35, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; + const IID IID_IEnumPhone = {0xF15B7669, 0x4780, 0x4595, [0x8C, 0x89, 0xFB, 0x36, 0x9C, 0x8C, 0xF7, 0xAA]}; + const IID IID_IEnumPluggableSuperclassInfo = {0xE9586A80, 0x89E6, 0x4CFF, [0x93, 0x1D, 0x47, 0x8D, 0x57, 0x51, 0xF4, 0xC0]}; + const IID IID_IEnumPluggableTerminalClassInfo = {0x4567450C, 0xDBEE, 0x4E3F, [0xAA, 0xF5, 0x37, 0xBF, 0x9E, 0xBF, 0x5E, 0x29]}; + const IID IID_IEnumPrivacyRecords = {0x3050F844, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IEnumPropertyMap = {0xC733E4A1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_IEnumPublishedApps = {0x0B124F8C, 0x91F0, 0x11D1, [0xB8, 0xB5, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; + const IID IID_IEnumQueue = {0x5AFC3158, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_IEnumRegisterWordA = {0x08C03412, 0xF96B, 0x11D0, [0xA4, 0x75, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; + const IID IID_IEnumRegisterWordW = {0x4955DD31, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; + const IID IID_IEnumRemoteDebugApplications = {0x51973C3B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IEnumRemoteDebugApplicationThrea = {0x51973C3C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IEnumRfc1766 = {0x3DC39D1D, 0xC030, 0x11D0, [0xB8, 0x1B, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; + const IID IID_IEnumScheduleGroup = {0xC733E4A9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_IEnumScript = {0xAE5F1430, 0x388B, 0x11D2, [0x83, 0x80, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0xA1]}; + const IID IID_IEnumSTATDATA = {0x00000105, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumSTATPROPBAG = {0x20021801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; + const IID IID_IEnumSTATPROPSETSTG = {0x0000013B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumSTATPROPSTG = {0x00000139, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumSTATSTG = {0x0000000D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumSTATURL = {0x3C374A42, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; + const IID IID_IEnumStream = {0xEE3BD606, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_IEnumString = {0x00000101, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumSubscription = {0xF72C8D97, 0x6DBD, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; + const IID IID_IEnumSubStream = {0xEE3BD609, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_IEnumSyncItems = {0xF0E1589A, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; + const IID IID_IEnumSyncSchedules = {0xF0E15898, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; + const IID IID_IEnumTerminal = {0xAE269CF4, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_IEnumTerminalClass = {0xAE269CF5, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_IEnumTime = {0x9055322E, 0x2FA8, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_IEnumTravelLogEntry = {0x7EBFDD85, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; + const IID IID_IEnumUnknown = {0x00000100, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumVARIANT = {0x00020404, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IEnumWbemClassObject = {0x027947E1, 0xD731, 0x11CE, [0xA3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]}; + const IID IID_IErrorInfo = {0x1CF2B120, 0x547D, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; + const IID IID_IErrorLog = {0x3127CA40, 0x446E, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; + const IID IID_IErrorLookup = {0x0C733A66, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IErrorRecords = {0x0C733A67, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IESP = {0xE99A04AA, 0xAB95, 0x11D0, [0xBE, 0x96, 0x00, 0xA0, 0xC9, 0x49, 0x89, 0xDE]}; + const IID IID_IExtendObjectManager = {0xCA7BB0B9, 0x700C, 0x4DC5, [0x99, 0x1E, 0x75, 0xF9, 0xE6, 0x5E, 0xE9, 0x75]}; + const IID IID_IExtensionServices = {0x79EAC9CB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IExternalConnection = {0x00000019, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IExtractIconA = {0x000214EB, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IExtractIconW = {0x000214FA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IExtractImage = {0xBB2E617C, 0x0920, 0x11D1, [0x9A, 0x0B, 0x00, 0xC0, 0x4F, 0xC2, 0xD6, 0xC1]}; + const IID IID_IExtractImage2 = {0x953BB1EE, 0x93B4, 0x11D1, [0x98, 0xA3, 0x00, 0xC0, 0x4F, 0xB6, 0x87, 0xDA]}; + const IID IID_IFileSearchBand = {0x2D91EEA1, 0x9932, 0x11D2, [0xBE, 0x86, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; + const IID IID_IFileSystemBindData = {0x01E18D10, 0x4D8B, 0x11D2, [0x85, 0x5D, 0x00, 0x60, 0x08, 0x05, 0x93, 0x67]}; + const IID IID_IFileViewerA = {0x000214F0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IFileViewerSite = {0x000214F3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IFileViewerW = {0x000214F8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IFillLockBytes = {0x99CAF010, 0x415E, 0x11CF, [0x88, 0x14, 0x00, 0xAA, 0x00, 0xB5, 0x69, 0xF5]}; + const IID IID_IFilter = {0x89BCB740, 0x6119, 0x101A, [0xBC, 0xB7, 0x00, 0xDD, 0x01, 0x06, 0x55, 0xAF]}; + const IID IID_IFilterAnimationInfo = {0x02E29300, 0xC758, 0x49B4, [0x9E, 0x11, 0xC5, 0x8B, 0xFE, 0x90, 0x55, 0x8B]}; + const IID IID_IFilterStatus = {0xF4EB8260, 0x8DDA, 0x11D1, [0xB3, 0xAA, 0x00, 0xA0, 0xC9, 0x06, 0x37, 0x96]}; + const IID IID_IFolderFilter = {0x9CC22886, 0xDC8E, 0x11D2, [0xB1, 0xD0, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; + const IID IID_IFolderFilterSite = {0xC0A651F5, 0xB48B, 0x11D2, [0xB5, 0xED, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6]}; + const IID IID_IFolderView = {0xCDE725B0, 0xCCC9, 0x4519, [0x91, 0x7E, 0x32, 0x5D, 0x72, 0xFA, 0xB4, 0xCE]}; + const IID IID_IFolderViewHost = {0x1EA58F02, 0xD55A, 0x411D, [0xB0, 0x9E, 0x9E, 0x65, 0xAC, 0x21, 0x60, 0x5B]}; + const IID IID_IFolderViewOC = {0x9BA05970, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; + const IID IID_IFont = {0xBEF6E002, 0xA874, 0x101A, [0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID IID_IFontDisp = {0xBEF6E003, 0xA874, 0x101A, [0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID IID_IFontEventsDisp = {0x4EF6100A, 0xAF88, 0x11D0, [0x98, 0x46, 0x00, 0xC0, 0x4F, 0xC2, 0x99, 0x93]}; + const IID IID_IFontNames = {0x3050F839, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IForegroundTransfer = {0x00000145, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IFsCiAdmin = {0x75398C30, 0x7A26, 0x11D0, [0xA8, 0x0A, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; + const IID IID_IGatherData = {0x65318F4A, 0xB63C, 0x4E21, [0xAD, 0xDC, 0xBD, 0xCF, 0xB9, 0x69, 0xE1, 0x81]}; + const IID IID_IGetClusterDataInfo = {0x97DEDE51, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IGetClusterGroupInfo = {0x97DEDE54, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IGetClusterNetInterfaceInfo = {0x97DEDE57, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IGetClusterNetworkInfo = {0x97DEDE56, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IGetClusterNodeInfo = {0x97DEDE53, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IGetClusterObjectInfo = {0x97DEDE52, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IGetClusterResourceInfo = {0x97DEDE55, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IGetClusterUIInfo = {0x97DEDE50, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IGetDataSource = {0x0C733A75, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IGetRow = {0x0C733AAF, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IGetSession = {0x0C733ABA, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IGetSourceRow = {0x0C733ABB, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IGlobalInterfaceTable = {0x00000146, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IH26XEncodeOptions = {0x65698D40, 0x282D, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IH26XEncoderControl = {0xF9B78AA1, 0xEA12, 0x11CF, [0x9F, 0xEC, 0x00, 0xAA, 0x00, 0xA5, 0x9F, 0x69]}; + const IID IID_IH26XRTPControl = {0x1FC3F2C0, 0x2BFD, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IH26XSnapshot = {0x3CB194A0, 0x10AA, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IH26XVideoEffects = {0x21555140, 0x9C2B, 0x11CF, [0x90, 0xFA, 0x00, 0xAA, 0x00, 0xA7, 0x29, 0xEA]}; + const IID IID_IH323LineEx = {0x44CF6A9D, 0xCB40, 0x4BBC, [0xB2, 0xD3, 0xB6, 0xAA, 0x93, 0x32, 0x2C, 0x71]}; + const IID IID_IHeaderFooter = {0x3050F6CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHighlightRenderingServices = {0x3050F606, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHighlightSegment = {0x3050F690, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHlink = {0x79EAC9C3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IHlinkBrowseContext = {0x79EAC9C7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IHlinkFrame = {0x79EAC9C5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IHlinkSite = {0x79EAC9C2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IHlinkTarget = {0x79EAC9C4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IHNetApplicationProtocol = {0x85D18B7F, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetBridge = {0x85D18B75, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetBridgedConnection = {0x85D18B76, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetBridgeSettings = {0x85D18B6D, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetCfgMgr = {0x85D18B6C, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetConnection = {0x85D18B71, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetFirewalledConnection = {0x85D18B72, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetFirewallSettings = {0x85D18B6E, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetIcsPrivateConnection = {0x85D18B74, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetIcsPublicConnection = {0x85D18B73, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetIcsSettings = {0x85D18B6F, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetPortMappingBinding = {0x85D18B80, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetPortMappingProtocol = {0x85D18B7E, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHNetProtocolSettings = {0x85D18B70, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; + const IID IID_IHomePage = {0x766BF2AF, 0xD650, 0x11D1, [0x98, 0x11, 0x00, 0xC0, 0x4F, 0xC3, 0x1D, 0x2E]}; + const IID IID_IHostBehaviorInit = {0x3050F842, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHostDialogHelper = {0x53DEC138, 0xA51E, 0x11D2, [0x86, 0x1E, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; + const IID IID_IHTCAttachBehavior = {0x3050F5F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTCAttachBehavior2 = {0x3050F7EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTCDefaultDispatch = {0x3050F4FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTCDescBehavior = {0x3050F5DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTCEventBehavior = {0x3050F4FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTCMethodBehavior = {0x3050F631, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTCPropertyBehavior = {0x3050F5DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAnchorElement = {0x3050F1DA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAnchorElement2 = {0x3050F825, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAppBehavior = {0x3050F5CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAppBehavior2 = {0x3050F5C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAppBehavior3 = {0x3050F5CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHtmlArea = {0x3050F64E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAreaElement = {0x3050F265, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAreasCollection = {0x3050F383, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAreasCollection2 = {0x3050F5EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAreasCollection3 = {0x3050F837, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAttributeCollection = {0x3050F4C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLAttributeCollection2 = {0x3050F80A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLBaseElement = {0x3050F204, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLBaseFontElement = {0x3050F202, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLBGsound = {0x3050F369, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLBlockElement = {0x3050F208, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLBlockElement2 = {0x3050F823, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLBodyElement = {0x3050F1D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLBodyElement2 = {0x3050F5C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLBookmarkCollection = {0x3050F4CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLBRElement = {0x3050F1F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLButtonElement = {0x3050F2BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLCaret = {0x3050F604, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLChangeLog = {0x3050F649, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLChangePlayback = {0x3050F6E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLChangeSink = {0x3050F64A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLCommentElement = {0x3050F20C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLCommentElement2 = {0x3050F813, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLComputedStyle = {0x3050F6C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLControlElement = {0x3050F4E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLControlRange = {0x3050F29C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLControlRange2 = {0x3050F65E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLCurrentStyle = {0x3050F3DB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLCurrentStyle2 = {0x3050F658, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLCurrentStyle3 = {0x3050F818, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDatabinding = {0x3050F3F2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDataTransfer = {0x3050F4B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDDElement = {0x3050F1F2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDialog = {0x3050F216, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDialog2 = {0x3050F5E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDialog3 = {0x3050F388, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDivElement = {0x3050F200, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDivPosition = {0x3050F212, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHtmlDlgSafeHelper = {0x3050F81A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDListElement = {0x3050F1F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDocument = {0x626FC520, 0xA41E, 0x11CF, [0xA7, 0x31, 0x00, 0xA0, 0xC9, 0x08, 0x26, 0x37]}; + const IID IID_IHTMLDocument2 = {0x332C4425, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; + const IID IID_IHTMLDocument3 = {0x3050F485, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDocument4 = {0x3050F69A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDocument5 = {0x3050F80C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDOMAttribute = {0x3050F4B0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDOMAttribute2 = {0x3050F810, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDOMChildrenCollection = {0x3050F5AB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDOMImplementation = {0x3050F80D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDOMNode = {0x3050F5DA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDOMNode2 = {0x3050F80B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDOMTextNode = {0x3050F4B1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDOMTextNode2 = {0x3050F809, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDTElement = {0x3050F1F3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLDXTransform = {0x30E2AB7D, 0x4FDD, 0x4159, [0xB7, 0xEA, 0xDC, 0x72, 0x2B, 0xF4, 0xAD, 0xE5]}; + const IID IID_IHTMLEditDesigner = {0x3050F662, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLEditHost = {0x3050F6A0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLEditHost2 = {0x3050F848, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0D]}; + const IID IID_IHTMLEditingServices = {0x3050F7FB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLEditor = {0x3050F7FA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLEditServices = {0x3050F663, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLEditServices2 = {0x3050F812, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLElement = {0x3050F1FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLElement2 = {0x3050F434, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLElement3 = {0x3050F673, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLElement4 = {0x3050F80F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLElementCollection = {0x3050F21F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLElementCollection2 = {0x3050F5EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLElementCollection3 = {0x3050F835, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLElementDefaults = {0x3050F6C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLElementRender = {0x3050F669, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLEmbedElement = {0x3050F25F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLEventObj = {0x3050F32D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLEventObj2 = {0x3050F48B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLEventObj3 = {0x3050F680, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLEventObj4 = {0x3050F814, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFieldSetElement = {0x3050F3E7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFieldSetElement2 = {0x3050F833, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFilterPainter = {0x3050F6DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFilterPaintSite = {0x3050F6D3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFiltersCollection = {0x3050F3EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFontElement = {0x3050F1D9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFontNamesCollection = {0x3050F376, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFontSizesCollection = {0x3050F377, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFormElement = {0x3050F1F7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFormElement2 = {0x3050F4F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFormElement3 = {0x3050F836, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFrameBase = {0x3050F311, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFrameBase2 = {0x3050F6DB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFrameBase3 = {0x3050F82E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFrameElement = {0x3050F313, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFrameElement2 = {0x3050F7F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFramesCollection2 = {0x332C4426, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; + const IID IID_IHTMLFrameSetElement = {0x3050F319, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLFrameSetElement2 = {0x3050F5C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLGenericElement = {0x3050F4B7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLHeadElement = {0x3050F81D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLHeaderElement = {0x3050F1F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLHRElement = {0x3050F1F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLHtmlElement = {0x3050F81C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLIFrameElement = {0x3050F315, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLIFrameElement2 = {0x3050F4E6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLImageElementFactory = {0x3050F38E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLImgElement = {0x3050F240, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLImgElement2 = {0x3050F826, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLInputButtonElement = {0x3050F2B2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLInputElement = {0x3050F5D2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLInputElement2 = {0x3050F821, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLInputFileElement = {0x3050F2AD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLInputHiddenElement = {0x3050F2A4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLInputImage = {0x3050F2C2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLInputTextElement = {0x3050F2A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLIPrintCollection = {0x3050F6B5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLIsIndexElement = {0x3050F206, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLIsIndexElement2 = {0x3050F82F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLLabelElement = {0x3050F32A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLLabelElement2 = {0x3050F832, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLLegendElement = {0x3050F3EA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLLegendElement2 = {0x3050F834, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLLIElement = {0x3050F1E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLLinkElement = {0x3050F205, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLLinkElement2 = {0x3050F4E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLLinkElement3 = {0x3050F81E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLListElement = {0x3050F20E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLListElement2 = {0x3050F822, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHtmlLoadOptions = {0xA71A0808, 0x0F88, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; + const IID IID_IHTMLLocation = {0x163BB1E0, 0x6E00, 0x11CF, [0x83, 0x7A, 0x48, 0xDC, 0x04, 0xC1, 0x00, 0x00]}; + const IID IID_IHTMLMapElement = {0x3050F266, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLMarqueeElement = {0x3050F2B5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLMetaElement = {0x3050F203, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLMetaElement2 = {0x3050F81F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLMimeTypesCollection = {0x3050F3FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLModelessInit = {0x3050F5E4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLNamespace = {0x3050F6BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLNamespaceCollection = {0x3050F6B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLNextIdElement = {0x3050F207, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLNoShowElement = {0x3050F38A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLObjectElement = {0x3050F24F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLObjectElement2 = {0x3050F4CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLObjectElement3 = {0x3050F827, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLOListElement = {0x3050F1DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLOMWindowServices = {0x3050F5FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLOpsProfile = {0x3050F401, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLOptionButtonElement = {0x3050F2BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLOptionElement = {0x3050F211, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLOptionElement2 = {0x3050F697, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLOptionElement3 = {0x3050F820, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLOptionElementFactory = {0x3050F38C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLOptionsHolder = {0x3050F378, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPainter = {0x3050F6A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPainterEventInfo = {0x3050F6DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPainterOverlay = {0x3050F7E3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPaintSite = {0x3050F6A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLParaElement = {0x3050F1F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLParamElement = {0x3050F83D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPersistData = {0x3050F4C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPersistDataOM = {0x3050F4C0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPhraseElement = {0x3050F20A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPhraseElement2 = {0x3050F824, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPluginsCollection = {0x3050F3FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPopup = {0x3050F666, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPrivateWindow = {0x3050F6DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPrivateWindow2 = {0x3050F7E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLPrivateWindow3 = {0x3050F840, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLRect = {0x3050F4A3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLRectCollection = {0x3050F4A4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLRenderStyle = {0x3050F6AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLRuleStyle = {0x3050F3CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLRuleStyle2 = {0x3050F4AC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLRuleStyle3 = {0x3050F657, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLRuleStyle4 = {0x3050F817, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLScreen = {0x3050F35C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLScreen2 = {0x3050F84A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLScriptElement = {0x3050F28B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLScriptElement2 = {0x3050F828, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLSelectElement = {0x3050F244, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLSelectElement2 = {0x3050F5ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLSelectElement3 = {0x3050F687, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLSelectElement4 = {0x3050F838, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLSelectionObject = {0x3050F25A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLSelectionObject2 = {0x3050F7EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLSpanElement = {0x3050F3F3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLSpanFlow = {0x3050F3E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyle = {0x3050F25E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyle2 = {0x3050F4A2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyle3 = {0x3050F656, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyle4 = {0x3050F816, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyleElement = {0x3050F375, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyleFontFace = {0x3050F3D5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyleSheet = {0x3050F2E3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyleSheet2 = {0x3050F3D1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyleSheetPage = {0x3050F7EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyleSheetPagesCollection = {0x3050F7F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyleSheetRule = {0x3050F357, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyleSheetRulesCollection = {0x3050F2E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLStyleSheetsCollection = {0x3050F37E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLSubmitData = {0x3050F645, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTable = {0x3050F21E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTable2 = {0x3050F4AD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTable3 = {0x3050F829, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableCaption = {0x3050F2EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableCell = {0x3050F23D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableCell2 = {0x3050F82D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableCol = {0x3050F23A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableCol2 = {0x3050F82A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableRow = {0x3050F23C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableRow2 = {0x3050F4A1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableRow3 = {0x3050F82C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableRowMetrics = {0x3050F413, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableSection = {0x3050F23B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableSection2 = {0x3050F5C7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTableSection3 = {0x3050F82B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTextAreaElement = {0x3050F2AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTextContainer = {0x3050F230, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTextElement = {0x3050F218, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTextRangeMetrics = {0x3050F40B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTextRangeMetrics2 = {0x3050F4A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTitleElement = {0x3050F322, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTxtRange = {0x3050F220, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLTxtRangeCollection = {0x3050F7ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLUListElement = {0x3050F1DD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLUniqueName = {0x3050F4D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLUnknownElement = {0x3050F209, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLUrnCollection = {0x3050F5E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLUserDataOM = {0x3050F48F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLViewFilter = {0x3050F2F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLViewFilterSite = {0x3050F2F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLWindow2 = {0x332C4427, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; + const IID IID_IHTMLWindow3 = {0x3050F4AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHTMLWindow4 = {0x3050F6CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IHttpNegotiate = {0x79EAC9D2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IHttpNegotiate2 = {0x4F9F9FCB, 0xE0F4, 0x48EB, [0xB7, 0xAB, 0xFA, 0x2E, 0xA9, 0x36, 0x5C, 0xB4]}; + const IID IID_IHttpSecurity = {0x79EAC9D7, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IHWEventHandler = {0xC1FB73D0, 0xEC3A, 0x4BA2, [0xB5, 0x12, 0x8C, 0xDB, 0x91, 0x87, 0xB6, 0xD1]}; + const IID IID_IImageDecodeEventSink = {0xBAA342A0, 0x2DED, 0x11D0, [0x86, 0xF4, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; + const IID IID_IImageDecodeFilter = {0xA3CCEDF3, 0x2DE2, 0x11D0, [0x86, 0xF4, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; + const IID IID_IImageList = {0x46EB5926, 0x582E, 0x4017, [0x9F, 0xDF, 0xE8, 0x99, 0x8D, 0xAA, 0x09, 0x50]}; + const IID IID_IIMEServices = {0x3050F6CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IImgCtx = {0x3050F3D7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IIndexDefinition = {0x0C733A68, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IInputObject = {0x68284FAA, 0x6A48, 0x11D0, [0x8C, 0x78, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xB4]}; + const IID IID_IInputObjectSite = {0xF1DB8392, 0x7331, 0x11D0, [0x8C, 0x99, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; + const IID IID_IIntDitherer = {0x06670CA0, 0xECEF, 0x11D0, [0xAA, 0xE7, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; + const IID IID_IIntelliForms = {0x9B9F68E6, 0x1AAA, 0x11D2, [0xBC, 0xA5, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; + const IID IID_IInterfaceRelated = {0xD1FB5A79, 0x7706, 0x11D1, [0xAD, 0xBA, 0x00, 0xC0, 0x4F, 0xC2, 0xAD, 0xC0]}; + const IID IID_IInternalMoniker = {0x00000011, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IInternalUnknown = {0x00000021, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IInternet = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetBindInfo = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetConnectionDevice = {0x04DF6137, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; + const IID IID_IInternetConnectionDeviceClient = {0x04DF6139, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; + const IID IID_IInternetConnectionDeviceSharedCo = {0x04DF6138, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; + const IID IID_IInternetHostSecurityManager = {0x3AF280B6, 0xCB3F, 0x11D0, [0x89, 0x1E, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; + const IID IID_IInternetPriority = {0x79EAC9EB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetProtocolInfo = {0x79EAC9EC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetProtocolRoot = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetProtocolSink = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetProtocolSinkStackable = {0x79EAC9F0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetSecurityManager = {0x79EAC9EE, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetSecurityMgrSite = {0x79EAC9ED, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetSession = {0x79EAC9E7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetThreadSwitch = {0x79EAC9E8, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IInternetZoneManager = {0x79EAC9EF, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IIpxAdapterInfo = {0x98133270, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IItemNameLimits = {0x1DF0D7F1, 0xB267, 0x4D28, [0x8B, 0x10, 0x12, 0xE2, 0x32, 0x02, 0xA5, 0xC4]}; + const IID IID_IJolietDiscMaster = {0xE3BC42CE, 0x4E5C, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID IID_IKeyFrameControl = {0xC3341386, 0xAF91, 0x4EF9, [0x83, 0xB6, 0xBE, 0x37, 0x62, 0xE4, 0x2E, 0xCB]}; + const IID IID_IKsControl = {0x28F54685, 0x06FD, 0x11D2, [0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96]}; + const IID IID_IKsPropertySet = {0x31EFAC30, 0x515C, 0x11D0, [0xA9, 0xAA, 0x00, 0xAA, 0x00, 0x61, 0xBE, 0x93]}; + const IID IID_ILayoutRect = {0x3050F665, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ILayoutStorage = {0x0E6D4D90, 0x6738, 0x11CF, [0x96, 0x08, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; + const IID IID_ILineInfo = {0x3050F7E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ILocalMachine = {0x60664CAF, 0xAF0D, 0x1005, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; + const IID IID_ILockBytes = {0x0000000A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ILogger = {0xD9598418, 0x304E, 0x4F94, [0xB6, 0xA1, 0xE6, 0x42, 0xFE, 0x95, 0xED, 0x57]}; + const IID IID_ILogManager = {0x4759DC11, 0x8DA0, 0x4261, [0xBB, 0xFB, 0xEC, 0x32, 0x19, 0x11, 0xD1, 0xC9]}; + const IID IID_ILogonEnumUsers = {0x60664CAF, 0xAF0D, 0x1004, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; + const IID IID_ILogonStatusHost = {0x60664CAF, 0xAF0D, 0x1007, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; + const IID IID_ILogonUser = {0x60664CAF, 0xAF0D, 0x1003, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; + const IID IID_IMachineDebugManager = {0x51973C2C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IMachineDebugManagerCookie = {0x51973C2D, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IMachineDebugManagerEvents = {0x51973C2E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IMailAutoDiscovery = {0x80402DEE, 0xB114, 0x4D32, [0xB4, 0x4E, 0x82, 0xFD, 0x82, 0x34, 0xC9, 0x2A]}; + const IID IID_IMailProtocolADEntry = {0x40EF8C68, 0xD554, 0x47ED, [0xAA, 0x37, 0xE5, 0xFB, 0x6B, 0xC9, 0x10, 0x75]}; + const IID IID_IMalloc = {0x00000002, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IMallocSpy = {0x0000001D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IMapMIMEToCLSID = {0xD9E89500, 0x30FA, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; + const IID IID_IMarkupContainer = {0x3050F5F9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IMarkupContainer2 = {0x3050F648, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IMarkupPointer = {0x3050F49F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IMarkupPointer2 = {0x3050F675, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IMarkupServices = {0x3050F4A0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IMarkupServices2 = {0x3050F682, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IMarkupTextFrags = {0x3050F5FA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IMarshal = {0x00000003, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IMarshal2 = {0x000001CF, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IMcastAddressAllocation = {0xDF0DAEF1, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; + const IID IID_IMcastLeaseInfo = {0xDF0DAEFD, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; + const IID IID_IMcastScope = {0xDF0DAEF4, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; + const IID IID_IMDDataset = {0xA07CCCD1, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; + const IID IID_IMDFind = {0xA07CCCD2, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; + const IID IID_IMDRangeRowset = {0x0C733AA0, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IMessageFilter = {0x00000016, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IMigrationWizardAuto = {0xCE20DAB9, 0xB353, 0x469B, [0x8B, 0x4D, 0x6D, 0xBB, 0x3A, 0x7B, 0xA0, 0x16]}; + const IID IID_IMimeInfo = {0xF77459A0, 0xBF9A, 0x11CF, [0xBA, 0x4E, 0x00, 0xC0, 0x4F, 0xD7, 0x08, 0x16]}; + const IID IID_IMLangCodePages = {0x359F3443, 0xBD4A, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; + const IID IID_IMLangConvertCharset = {0xD66D6F98, 0xCDAA, 0x11D0, [0xB8, 0x22, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; + const IID IID_IMLangFontLink = {0x359F3441, 0xBD4A, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; + const IID IID_IMLangFontLink2 = {0xDCCFC162, 0x2B38, 0x11D2, [0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A]}; + const IID IID_IMLangLineBreakConsole = {0xF5BE2EE1, 0xBFD7, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; + const IID IID_IMLangString = {0xC04D65CE, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; + const IID IID_IMLangStringAStr = {0xC04D65D2, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; + const IID IID_IMLangStringBufA = {0xD24ACD23, 0xBA72, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; + const IID IID_IMLangStringBufW = {0xD24ACD21, 0xBA72, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; + const IID IID_IMLangStringWStr = {0xC04D65D0, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; + const IID IID_IMofCompiler = {0x6DAF974E, 0x2E37, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IMoniker = {0x0000000F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IMonikerProp = {0xA5CA5F7F, 0x1847, 0x4D87, [0x9C, 0x5B, 0x91, 0x85, 0x09, 0xF7, 0x51, 0x1D]}; + const IID IID_IMountedVolume = {0x12518492, 0x00B2, 0x11D2, [0x9F, 0xA5, 0x9E, 0x34, 0x20, 0x52, 0x41, 0x53]}; + const IID IID_IMulticastControl = {0x410FA507, 0x4DC6, 0x415A, [0x90, 0x14, 0x63, 0x38, 0x75, 0xD5, 0x40, 0x6E]}; + const IID IID_IMultiLanguage = {0x275C23E1, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; + const IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11D2, [0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A]}; + const IID IID_IMultiLanguage3 = {0x4E5868AB, 0xB157, 0x4623, [0x9A, 0xCC, 0x6A, 0x1D, 0x9C, 0xAE, 0xBE, 0x04]}; + const IID IID_IMultiplePropertyAccess = {0xEC81FEDE, 0xD432, 0x11CE, [0x92, 0x44, 0x00, 0x20, 0xAF, 0x6E, 0x72, 0xDB]}; + const IID IID_IMultipleResults = {0x0C733A90, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IMultiQI = {0x00000020, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_INamedPropertyBag = {0xFB700430, 0x952C, 0x11D1, [0x94, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; + const IID IID_INATEventManager = {0x624BD588, 0x9060, 0x4109, [0xB0, 0xB0, 0x1A, 0xDB, 0xBC, 0xAC, 0x32, 0xDF]}; + const IID IID_INATExternalIPAddressCallback = {0x9C416740, 0xA34E, 0x446F, [0xBA, 0x06, 0xAB, 0xD0, 0x4C, 0x31, 0x49, 0xAE]}; + const IID IID_INATNumberOfEntriesCallback = {0xC83A0A74, 0x91EE, 0x41B6, [0xB6, 0x7A, 0x67, 0xE0, 0xF0, 0x0B, 0xBD, 0x78]}; + const IID IID_INetCfg = {0xC0E8AE93, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgBindingInterface = {0xC0E8AE94, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgBindingPath = {0xC0E8AE96, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgClass = {0xC0E8AE97, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgClassSetup = {0xC0E8AE9D, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgComponent = {0xC0E8AE99, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgComponentBindings = {0xC0E8AE9E, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgComponentControl = {0x932238DF, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; + const IID IID_INetCfgComponentNotifyBinding = {0x932238E1, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; + const IID IID_INetCfgComponentNotifyGlobal = {0x932238E2, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; + const IID IID_INetCfgComponentPrivate = {0x98133273, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgComponentPropertyUi = {0x932238E0, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; + const IID IID_INetCfgComponentSetup = {0x932238E3, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; + const IID IID_INetCfgComponentSysPrep = {0xC0E8AE9A, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgComponentUpperEdge = {0x932238E4, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; + const IID IID_INetCfgInternalSetup = {0x98133276, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgLock = {0xC0E8AE9F, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgPnpReconfigCallback = {0x8D84BD35, 0xE227, 0x11D2, [0xB7, 0x00, 0x00, 0xA0, 0xC9, 0x8A, 0x6A, 0x85]}; + const IID IID_INetCfgSpecialCase = {0xC0E8AE95, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCfgSysPrep = {0xC0E8AE98, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnection = {0xC08956A1, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnection2 = {0xFAEDCF6A, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionBrandingInfo = {0xFAEDCF5B, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionCMUtil = {0xFAEDCF60, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionCommonUi = {0xC08956A5, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionConnectUi = {0xC08956A3, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionHNetUtil = {0xFAEDCF64, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionManager = {0xC08956A2, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionManager2 = {0xFAEDCF69, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionManagerDebug = {0xFAEDCF5D, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionManagerEvents = {0xC08956BA, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionNotifySink = {0xFAEDCF5C, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionPropertyUi = {0xC08956A4, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionPropertyUi2 = {0xC08956B9, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionProps = {0xF4277C95, 0xCE5B, 0x463D, [0x81, 0x67, 0x56, 0x62, 0xD9, 0xBC, 0xAA, 0x72]}; + const IID IID_INetConnectionRefresh = {0xFAEDCF5F, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionSysTray = {0xFAEDCF65, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionUiLock = {0xFAEDCF50, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionUiUtilities = {0xFAEDCF5E, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionWizardUi = {0xFAEDCF51, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetConnectionWizardUiContext = {0xFAEDCF52, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetCrawler = {0x49C929EE, 0xA1B7, 0x4C58, [0xB5, 0x39, 0xE6, 0x3B, 0xE3, 0x92, 0xB6, 0xF3]}; + const IID IID_INetDefaultConnection = {0xFAEDCF66, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetInboundConnection = {0xFAEDCF53, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetInstallQueue = {0x98133274, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetLanConnection = {0xFAEDCF54, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetLanConnectionUiInfo = {0xC08956A6, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetLanConnectionWizardUi = {0xFAEDCF56, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetMachinePolicies = {0xFAEDCF68, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetRasConnection = {0xFAEDCF57, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetRasConnectionIpUiInfo = {0xFAEDCF58, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetSharedAccessConnection = {0xFAEDCF55, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetSharingConfiguration = {0xC08956B6, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetSharingEveryConnectionCollect = {0x33C4643C, 0x7811, 0x46FA, [0xA8, 0x9A, 0x76, 0x85, 0x97, 0xBD, 0x72, 0x23]}; + const IID IID_INetSharingManager = {0xC08956B7, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetSharingPortMapping = {0xC08956B1, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_INetSharingPortMappingCollection = {0x02E4A2DE, 0xDA20, 0x4E34, [0x89, 0xC8, 0xAC, 0x22, 0x27, 0x5A, 0x01, 0x0B]}; + const IID IID_INetSharingPortMappingProps = {0x24B7E9B5, 0xE38F, 0x4685, [0x85, 0x1B, 0x00, 0x89, 0x2C, 0xF5, 0xF9, 0x40]}; + const IID IID_INetSharingPrivateConnectionColle = {0x38AE69E0, 0x4409, 0x402A, [0xA2, 0xCB, 0xE9, 0x65, 0xC7, 0x27, 0xF8, 0x40]}; + const IID IID_INetSharingPublicConnectionCollec = {0x7D7A6355, 0xF372, 0x4971, [0xA1, 0x49, 0xBF, 0xC9, 0x27, 0xBE, 0x76, 0x2A]}; + const IID IID_INewShortcutHookA = {0x000214E1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_INewShortcutHookW = {0x000214F7, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_INewWDEvents = {0x0751C551, 0x7568, 0x41C9, [0x8E, 0x5B, 0xE2, 0x2E, 0x38, 0x91, 0x92, 0x36]}; + const IID IID_INotification = {0xC733E4A3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_INotificationHelper = {0xC733E4AB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_INotificationManager = {0x95531501, 0x8782, 0x4845, [0x90, 0x1D, 0x31, 0x2F, 0x36, 0xBA, 0x6C, 0x6E]}; + const IID IID_INotificationMgr = {0xC733E4A4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_INotificationPing = {0xC733E4AC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_INotificationProcessMgr0 = {0xC733E4AE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_INotificationReport = {0xC733E4A7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_INotificationRunning = {0xC733E4AD, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_INotificationSink = {0xC733E4A5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_INotifyDBEvents = {0xDB526CC0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; + const IID IID_INotifyReplica = {0x99180163, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_INotifyUI = {0xE5E8D401, 0x1A37, 0x4FBF, [0x88, 0x0C, 0x82, 0x6C, 0xC8, 0x95, 0x16, 0xFD]}; + const IID IID_IObjectAccessControl = {0x0C733AA3, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IObjectIdentity = {0xCA04B7E6, 0x0D21, 0x11D1, [0x8C, 0xC5, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; + const IID IID_IObjectManager = {0xD51351DF, 0x6394, 0x4236, [0x97, 0x83, 0x65, 0xED, 0x05, 0x63, 0x10, 0x68]}; + const IID IID_IObjectSafety = {0xCB5BDC81, 0x93C1, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID IID_IObjectWithSite = {0xFC4801A3, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID IID_IObjMgr = {0x00BB2761, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; + const IID IID_IOInet = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOInetBindClient = {0x79EAC9E2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOInetBindInfo = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOInetCache = {0x79EAC9EA, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOInetPriority = {0x79EAC9EB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOInetProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOInetProtocolInfo = {0x79EAC9EC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOInetProtocolRoot = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOInetProtocolSink = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOInetSession = {0x79EAC967, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOInetThreadSwitch = {0x79EAC968, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IOldSyncMgrRegister = {0x894D8C55, 0xBDDF, 0x11D1, [0xB8, 0x5D, 0x00, 0xC0, 0x4F, 0xB9, 0x39, 0x81]}; + const IID IID_IOldSyncMgrSynchronize = {0x6295DF28, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; + const IID IID_IOldSyncMgrSynchronizeCallback = {0x6295DF29, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; + const IID IID_IOleAdviseHolder = {0x00000111, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleCache = {0x0000011E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleCache2 = {0x00000128, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleCacheControl = {0x00000129, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleClientSite = {0x00000118, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleCommandTarget = {0xB722BCCB, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; + const IID IID_IOleContainer = {0x0000011B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleControl = {0xB196B288, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IOleControlSite = {0xB196B289, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IOleDocument = {0xB722BCC5, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; + const IID IID_IOleDocumentSite = {0xB722BCC7, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; + const IID IID_IOleDocumentView = {0xB722BCC6, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; + const IID IID_IOleInPlaceActiveObject = {0x00000117, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleInPlaceFrame = {0x00000116, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleInPlaceObject = {0x00000113, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleInPlaceObjectWindowless = {0x1C2056CC, 0x5EF4, 0x101B, [0x8B, 0xC8, 0x00, 0xAA, 0x00, 0x3E, 0x3B, 0x29]}; + const IID IID_IOleInPlaceSite = {0x00000119, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleInPlaceSiteEx = {0x9C2CAD80, 0x3424, 0x11CF, [0xB6, 0x70, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; + const IID IID_IOleInPlaceSiteWindowless = {0x922EADA0, 0x3424, 0x11CF, [0xB6, 0x70, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; + const IID IID_IOleInPlaceUIWindow = {0x00000115, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleItemContainer = {0x0000011C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleLink = {0x0000011D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleManager = {0x0000011F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleObject = {0x00000112, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleParentUndoUnit = {0xA1FAF330, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; + const IID IID_IOlePresObj = {0x00000120, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOleUndoManager = {0xD001F200, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; + const IID IID_IOleUndoUnit = {0x894AD3B0, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; + const IID IID_IOleWindow = {0x00000114, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOmHistory = {0xFECEAAA2, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; + const IID IID_IOmNavigator = {0xFECEAAA5, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; + const IID IID_IOpaqueDataInfo = {0x000001A9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IOpenRowset = {0x0C733A69, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IOplockStorage = {0x8D19C834, 0x8879, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; + const IID IID_IOpsProfileSimple = {0x7DD1362C, 0x28B6, 0x11D2, [0xBC, 0xA7, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; + const IID IID_IOptionArray = {0x22B6D492, 0x0F88, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; + const IID IID_IOverlappedCompletion = {0x521A28F0, 0xE40B, 0x11CE, [0xB2, 0xC9, 0x00, 0xAA, 0x00, 0x68, 0x09, 0x37]}; + const IID IID_IOverlappedStream = {0x49384070, 0xE40A, 0x11CE, [0xB2, 0xC9, 0x00, 0xAA, 0x00, 0x68, 0x09, 0x37]}; + const IID IID_IParentRowset = {0x0C733AAA, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IParseDisplayName = {0x0000011A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IParser = {0x186442B0, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; + const IID IID_IParserSession = {0x186442B1, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; + const IID IID_IParserTreeProperties = {0x186442B2, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; + const IID IID_IParserVerify = {0x186442B3, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; + const IID IID_IPassportClientServices = {0xB30F7305, 0x5967, 0x45D1, [0xB7, 0xBC, 0xD6, 0xEB, 0x71, 0x63, 0xD7, 0x70]}; + const IID IID_IPeerFactory = {0x6663F9D3, 0xB482, 0x11D1, [0x89, 0xC6, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; + const IID IID_IPendingProxyConnection = {0xB68E5043, 0x3E3D, 0x4CC2, [0xB9, 0xC1, 0x5F, 0x8F, 0x88, 0xFE, 0xE8, 0x1C]}; + const IID IID_IPerPropertyBrowsing = {0x376BD3AA, 0x3845, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; + const IID IID_IPerPropertyBrowsing2 = {0x51973C54, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IPersist = {0x0000010C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IPersistentDataChannel = {0xA180E934, 0xD92A, 0x415D, [0x91, 0x44, 0x75, 0x9F, 0x80, 0x54, 0xE8, 0xF6]}; + const IID IID_IPersistFile = {0x0000010B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IPersistFolder = {0x000214EA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IPersistFolder2 = {0x1AC3D9F0, 0x175C, 0x11D1, [0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; + const IID IID_IPersistFolder3 = {0xCEF04FDF, 0xFE72, 0x11D2, [0x87, 0xA5, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xCF]}; + const IID IID_IPersistHistory = {0x91A565C1, 0xE38F, 0x11D0, [0x94, 0xBF, 0x00, 0xA0, 0xC9, 0x05, 0x5C, 0xBF]}; + const IID IID_IPersistIDList = {0x1079ACFC, 0x29BD, 0x11D3, [0x8E, 0x0D, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; + const IID IID_IPersistMemory = {0xBD1AE5E0, 0xA6AE, 0x11CE, [0xBD, 0x37, 0x50, 0x42, 0x00, 0xC1, 0x00, 0x00]}; + const IID IID_IPersistMoniker = {0x79EAC9C9, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IPersistNetConnection = {0xFAEDCF59, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IPersistPropertyBag = {0x37D84F60, 0x42CB, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; + const IID IID_IPersistPropertyBag2 = {0x22F55881, 0x280B, 0x11D0, [0xA8, 0xA9, 0x00, 0xA0, 0xC9, 0x0C, 0x20, 0x04]}; + const IID IID_IPersistQuery = {0x1A3114B8, 0xA62E, 0x11D0, [0xA6, 0xC5, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; + const IID IID_IPersistStorage = {0x0000010A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IPersistStream = {0x00000109, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IPersistStreamInit = {0x7FD52380, 0x4E07, 0x101B, [0xAE, 0x2D, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; + const IID IID_IPhraseSink = {0xCC906FF0, 0xC058, 0x101A, [0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; + const IID IID_IPicture = {0x7BF80980, 0xBF32, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID IID_IPictureDisp = {0x7BF80981, 0xBF32, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID IID_IPipeByte = {0xDB2F3ACA, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; + const IID IID_IPipeDouble = {0xDB2F3ACE, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; + const IID IID_IPipeLong = {0xDB2F3ACC, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; + const IID IID_IPointerInactive = {0x55980BA0, 0x35AA, 0x11CF, [0xB6, 0x71, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; + const IID IID_IPrimaryControlChannel = {0x1A2E8B62, 0x9012, 0x4BE6, [0x84, 0xAE, 0x32, 0xBD, 0x66, 0xBA, 0x65, 0x7A]}; + const IID IID_IPrint = {0xB722BCC9, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; + const IID IID_IPrintDialogCallback = {0x5852A2C3, 0x6530, 0x11D1, [0xB6, 0xA3, 0x00, 0x00, 0xF8, 0x75, 0x7B, 0xF9]}; + const IID IID_IPrintDialogServices = {0x509AAEDA, 0x5639, 0x11D1, [0xB6, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x7B, 0xF9]}; + const IID IID_IPrivacyServices = {0x3050F84B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IPrivateDispatch = {0x86AB4BBE, 0x65F6, 0x11D1, [0x8C, 0x13, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IPrivateUnknown = {0x89126BAB, 0x6EAD, 0x11D1, [0x8C, 0x18, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; + const IID IID_IPrivSyncMgrSynchronizeInvoke = {0x6295DF2E, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; + const IID IID_IProcessDebugManager = {0x51973C2F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IProcessDebugManager32 = {0x51973C2F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IProcessDebugManager64 = {0x56B9FC1C, 0x63A9, 0x4CC1, [0xAC, 0x21, 0x08, 0x7D, 0x69, 0xA1, 0x7F, 0xAB]}; + const IID IID_IProcessInitControl = {0x72380D55, 0x8D2B, 0x43A3, [0x85, 0x13, 0x2B, 0x6E, 0xF3, 0x14, 0x34, 0xE9]}; + const IID IID_IProfferService = {0xCB728B20, 0xF786, 0x11CE, [0x92, 0xAD, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xD0]}; + const IID IID_IProgressDialog = {0xEBBC7C04, 0x315E, 0x11D2, [0xB6, 0x2F, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; + const IID IID_IProgressNotify = {0xA9D758A0, 0x4617, 0x11CF, [0x95, 0xFC, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; + const IID IID_IProgSink = {0x3050F371, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IPropertyBag = {0x55272A00, 0x42CB, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; + const IID IID_IPropertyBag2 = {0x22F55882, 0x280B, 0x11D0, [0xA8, 0xA9, 0x00, 0xA0, 0xC9, 0x0C, 0x20, 0x04]}; + const IID IID_IPropertyBagEx = {0x20011801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; + const IID IID_IPropertyFrame = {0xB196B28A, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IPropertyMap = {0xC733E4A2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_IPropertyMapper = {0xB324B226, 0x41A0, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; + const IID IID_IPropertyNotifySink = {0x9BFBBC02, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IPropertyPage = {0xB196B28D, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IPropertyPage2 = {0x01E44665, 0x24AC, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; + const IID IID_IPropertyPageSite = {0xB196B28C, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IPropertySetContainer = {0xB4FFAE60, 0xA7CA, 0x11CD, [0xB5, 0x8B, 0x00, 0x00, 0x6B, 0x82, 0x91, 0x56]}; + const IID IID_IPropertySetStorage = {0x0000013A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IPropertyStorage = {0x00000138, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IPropertyUI = {0x757A7D9F, 0x919A, 0x4118, [0x99, 0xD7, 0xDB, 0xB2, 0x08, 0xC8, 0xCC, 0x66]}; + const IID IID_IPropSheetPage = {0x000214F6, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IProvideClassInfo = {0xB196B283, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_IProvideClassInfo2 = {0xA6BC3AC0, 0xDBAA, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; + const IID IID_IProvideExpressionContexts = {0x51973C41, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IProvideMoniker = {0x0C733A4D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IProvideMultipleClassInfo = {0xA7ABA9C1, 0x8983, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID IID_IProxy = {0x00000027, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IProxyManager = {0x00000008, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IPSFactory = {0x00000009, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IPSFactoryBuffer = {0xD5F569D0, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; + const IID IID_IPublishedApp = {0x1BC752E0, 0x9046, 0x11D1, [0xB8, 0xB3, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; + const IID IID_IPublishingWizard = {0xAA9198BB, 0xCCEC, 0x472D, [0xBE, 0xED, 0x19, 0xA4, 0xF6, 0x73, 0x3F, 0x7A]}; + const IID IID_IQualityControl = {0x6BC096AB, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; + const IID IID_IQuery = {0x0C733A51, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IQueryAssociations = {0xC46CA590, 0x3C3F, 0x11D2, [0xBE, 0xE6, 0x00, 0x00, 0xF8, 0x05, 0xCA, 0x57]}; + const IID IID_IQueryCancelAutoPlay = {0xDDEFE873, 0x6997, 0x4E68, [0xBE, 0x26, 0x39, 0xB6, 0x33, 0xAD, 0xBE, 0x12]}; + const IID IID_IQueryContinue = {0x7307055C, 0xB24A, 0x486B, [0x9F, 0x25, 0x16, 0x3E, 0x59, 0x7A, 0x28, 0xA9]}; + const IID IID_IQueryForm = {0x8CFCEE30, 0x39BD, 0x11D0, [0xB8, 0xD1, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; + const IID IID_IQueryFrame = {0x7E8C7C20, 0x7C9D, 0x11D0, [0x91, 0x3F, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; + const IID IID_IQueryHandler = {0xA60CC73F, 0xE0FC, 0x11D0, [0x97, 0x50, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; + const IID IID_IQueryInfo = {0x00021500, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IQuickActivate = {0xCF51ED10, 0x62FE, 0x11CF, [0xBF, 0x86, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0x36]}; + const IID IID_IRadioButton = {0x3050F69B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IRatingNotification = {0x639447BD, 0xB2D3, 0x44B9, [0x9F, 0xB0, 0x51, 0x0F, 0x23, 0xCB, 0x45, 0xE4]}; + const IID IID_IReadData = {0x0C733A6A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IReadEvents = {0xF64AEFDE, 0x3376, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; + const IID IID_IRecalcEngine = {0x3050F496, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IRecalcHost = {0x3050F497, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IRecalcHostDebug = {0x3050F5F7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IRecalcProperty = {0x3050F5D6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IReconcilableObject = {0x99180162, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IReconcileInitiator = {0x99180161, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IRecordInfo = {0x0000002F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IRedbookDiscMaster = {0xE3BC42CD, 0x4E5C, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID IID_IReferenceClock = {0x56A86897, 0x0AD4, 0x11CE, [0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; + const IID IID_IRegisterProvider = {0x0C733AB9, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRegisterVirusScanEngine = {0x0825E060, 0xB961, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; + const IID IID_IReleaseMarshalBuffers = {0xEB0CB9E8, 0x7996, 0x11D2, [0x87, 0x2E, 0x00, 0x00, 0xF8, 0x08, 0x08, 0x59]}; + const IID IID_IRemoteCallBack = {0x8947C648, 0x3833, 0x11D1, [0x86, 0x82, 0x00, 0xC0, 0x4F, 0xBF, 0xE1, 0x71]}; + const IID IID_IRemoteComputer = {0x000214FE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IRemoteDebugApplication = {0x51973C30, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IRemoteDebugApplicationEvents = {0x51973C33, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IRemoteDebugApplicationEx = {0x51973C01, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IRemoteDebugApplicationThread = {0x51973C37, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_IRemoteDebugApplicationThreadEx = {0xB9B32B0C, 0x9147, 0x11D1, [0x94, 0xEA, 0x00, 0xC0, 0x4F, 0xA3, 0x02, 0xA1]}; + const IID IID_IRemoteDelaydC = {0x394540A0, 0x6FCF, 0x11D0, [0xAC, 0xE0, 0x00, 0x00, 0xF8, 0x01, 0x14, 0xD3]}; + const IID IID_IRemoteESP = {0xE99A04AB, 0xAB95, 0x11D0, [0xBE, 0x96, 0x00, 0xA0, 0xC9, 0x49, 0x89, 0xDE]}; + const IID IID_IRemoteFinder = {0x944AD532, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; + const IID IID_IRemoteStats = {0x944AD531, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; + const IID IID_IRequest = {0x6BC096A7, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; + const IID IID_IRequestHandler = {0x6BC096AA, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; + const IID IID_IRequestSource = {0x6BC096A9, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; + const IID IID_IRequestState = {0x6BC096BA, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; + const IID IID_IResolveShellLink = {0x5CD52983, 0x9449, 0x11D2, [0x96, 0x3A, 0x00, 0xC0, 0x4F, 0x79, 0xAD, 0xF0]}; + const IID IID_IRichEditOle = {0x00020D00, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IRichEditOleCallback = {0x00020D03, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IRootStorage = {0x00000012, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IROTData = {0xF29F6BC0, 0x5021, 0x11CE, [0xAA, 0x15, 0x00, 0x00, 0x69, 0x01, 0x29, 0x3F]}; + const IID IID_IRow = {0x0C733AB4, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowChange = {0x0C733AB5, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowInfo = {0x0C733AC1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowPosition = {0x0C733A94, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowPositionChange = {0x0997A571, 0x126E, 0x11D0, [0x9F, 0x8A, 0x00, 0xA0, 0xC9, 0xA0, 0x63, 0x1E]}; + const IID IID_IRowSchemaChange = {0x0C733AAE, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowset = {0x0C733A7C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetAsynch = {0x0C733A0F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetBookmark = {0x0C733AC2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetChange = {0x0C733A05, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetChapterMember = {0x0C733AA8, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetCopyRows = {0x0C733A6B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetCurrentIndex = {0x0C733ABD, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetExactScroll = {0x0C733A7F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetFind = {0x0C733A9D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetIdentity = {0x0C733A09, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetIndex = {0x0C733A82, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetInfo = {0x0C733A55, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetKeys = {0x0C733A12, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetLocate = {0x0C733A7D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetNewRowAfter = {0x0C733A71, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetNextRowset = {0x0C733A72, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetNotify = {0x0C733A83, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetQueryStatus = {0xA7AC77ED, 0xF8D7, 0x11CE, [0xA7, 0x98, 0x00, 0x20, 0xF8, 0x00, 0x80, 0x24]}; + const IID IID_IRowsetRefresh = {0x0C733AA9, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetResynch = {0x0C733A84, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetScroll = {0x0C733A7E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetUpdate = {0x0C733A6D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetView = {0x0C733A99, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetWatchAll = {0x0C733A73, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetWatchNotify = {0x0C733A44, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetWatchRegion = {0x0C733A45, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRowsetWithParameters = {0x0C733A6E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IRpcChannel = {0x00000004, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IRpcChannelBuffer = {0xD5F56B60, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; + const IID IID_IRpcChannelBuffer2 = {0x594F31D0, 0x7F19, 0x11D0, [0xB1, 0x94, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0xBF]}; + const IID IID_IRpcChannelBuffer3 = {0x25B15600, 0x0115, 0x11D0, [0xBF, 0x0D, 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xD2]}; + const IID IID_IRpcHelper = {0x00000149, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IRpcOptions = {0x00000144, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IRpcProxy = {0x00000007, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IRpcProxyBuffer = {0xD5F56A34, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; + const IID IID_IRpcStub = {0x00000005, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IRpcStubBuffer = {0xD5F56AFC, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; + const IID IID_IRpcSyntaxNegotiate = {0x58A08519, 0x24C8, 0x4935, [0xB4, 0x82, 0x3F, 0xD8, 0x23, 0x33, 0x3A, 0x4F]}; + const IID IID_IRTC = {0x4811EA40, 0xB582, 0x11CE, [0xB5, 0xAF, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; + const IID IID_IRTCBuddy = {0xFCB136C8, 0x7B90, 0x4E0C, [0xBE, 0xFE, 0x56, 0xED, 0xF0, 0xBA, 0x6F, 0x1C]}; + const IID IID_IRTCBuddyEvent = {0xF36D755D, 0x17E6, 0x404E, [0x95, 0x4F, 0x0F, 0xC0, 0x75, 0x74, 0xC7, 0x8D]}; + const IID IID_IRTCClient = {0x07829E45, 0x9A34, 0x408E, [0xA0, 0x11, 0xBD, 0xDF, 0x13, 0x48, 0x7C, 0xD1]}; + const IID IID_IRTCClientEvent = {0x2B493B7A, 0x3CBA, 0x4170, [0x9C, 0x8B, 0x76, 0xA9, 0xDA, 0xCD, 0xD6, 0x44]}; + const IID IID_IRTCClientPresence = {0x11C3CBCC, 0x0744, 0x42D1, [0x96, 0x8A, 0x51, 0xAA, 0x1B, 0xB2, 0x74, 0xC6]}; + const IID IID_IRTCClientProvisioning = {0xB9F5CF06, 0x65B9, 0x4A80, [0xA0, 0xE6, 0x73, 0xCA, 0xE3, 0xEF, 0x38, 0x22]}; + const IID IID_IRTCCollection = {0xEC7C8096, 0xB918, 0x4044, [0x94, 0xF1, 0xE4, 0xFB, 0xA0, 0x36, 0x1D, 0x5C]}; + const IID IID_IRTCEnumBuddies = {0xF7296917, 0x5569, 0x4B3B, [0xB3, 0xAF, 0x98, 0xD1, 0x14, 0x4B, 0x2B, 0x87]}; + const IID IID_IRTCEnumParticipants = {0xFCD56F29, 0x4A4F, 0x41B2, [0xBA, 0x5C, 0xF5, 0xBC, 0xCC, 0x06, 0x0B, 0xF6]}; + const IID IID_IRTCEnumProfiles = {0x29B7C41C, 0xED82, 0x4BCA, [0x84, 0xAD, 0x39, 0xD5, 0x10, 0x1B, 0x58, 0xE3]}; + const IID IID_IRTCEnumWatchers = {0xA87D55D7, 0xDB74, 0x4ED1, [0x9C, 0xA4, 0x77, 0xA0, 0xE4, 0x1B, 0x41, 0x3E]}; + const IID IID_IRTCEventNotification = {0x13FA24C7, 0x5748, 0x4B21, [0x91, 0xF5, 0x73, 0x97, 0x60, 0x9C, 0xE7, 0x47]}; + const IID IID_IRTCIntensityEvent = {0x4C23BF51, 0x390C, 0x4992, [0xA4, 0x1D, 0x41, 0xEE, 0xC0, 0x5B, 0x2A, 0x4B]}; + const IID IID_IRTCMediaEvent = {0x099944FB, 0xBCDA, 0x453E, [0x8C, 0x41, 0xE1, 0x3D, 0xA2, 0xAD, 0xF7, 0xF3]}; + const IID IID_IRTCMessagingEvent = {0xD3609541, 0x1B29, 0x4DE5, [0xA4, 0xAD, 0x5A, 0xEB, 0xAF, 0x31, 0x95, 0x12]}; + const IID IID_IRTCParticipant = {0xAE86ADD5, 0x26B1, 0x4414, [0xAF, 0x1D, 0xB9, 0x4C, 0xD9, 0x38, 0xD7, 0x39]}; + const IID IID_IRTCParticipantStateChangeEvent = {0x09BCB597, 0xF0FA, 0x48F9, [0xB4, 0x20, 0x46, 0x8C, 0xEA, 0x7F, 0xDE, 0x04]}; + const IID IID_IRTCPresenceContact = {0x8B22F92C, 0xCD90, 0x42DB, [0xA7, 0x33, 0x21, 0x22, 0x05, 0xC3, 0xE3, 0xDF]}; + const IID IID_IRTCProfile = {0xD07ECA9E, 0x4062, 0x4DD4, [0x9E, 0x7D, 0x72, 0x2A, 0x49, 0xBA, 0x73, 0x03]}; + const IID IID_IRTCProfileEvent = {0xD6D5AB3B, 0x770E, 0x43E8, [0x80, 0x0A, 0x79, 0xB0, 0x62, 0x39, 0x5F, 0xCA]}; + const IID IID_IRTCRegistrationStateChangeEvent = {0x62D0991B, 0x50AB, 0x4F02, [0xB9, 0x48, 0xCA, 0x94, 0xF2, 0x6F, 0x8F, 0x95]}; + const IID IID_IRTCSession = {0x387C8086, 0x99BE, 0x42FB, [0x99, 0x73, 0x7C, 0x0F, 0xC0, 0xCA, 0x9F, 0xA8]}; + const IID IID_IRTCSessionOperationCompleteEven = {0xA6BFF4C0, 0xF7C8, 0x4D3C, [0x9A, 0x41, 0x35, 0x50, 0xF7, 0x8A, 0x95, 0xB0]}; + const IID IID_IRTCSessionStateChangeEvent = {0xB5BAD703, 0x5952, 0x48B3, [0x93, 0x21, 0x7F, 0x45, 0x00, 0x52, 0x15, 0x06]}; + const IID IID_IRTCWatcher = {0xC7CEDAD8, 0x346B, 0x4D1B, [0xAC, 0x02, 0xA2, 0x08, 0x8D, 0xF9, 0xBE, 0x4F]}; + const IID IID_IRTCWatcherEvent = {0xF30D7261, 0x587A, 0x424F, [0x82, 0x2C, 0x31, 0x27, 0x88, 0xF4, 0x35, 0x48]}; + const IID IID_IRunnableObject = {0x00000126, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IRunnableTask = {0x85788D00, 0x6807, 0x11D0, [0xB8, 0x10, 0x00, 0xC0, 0x4F, 0xD7, 0x06, 0xEC]}; + const IID IID_IRunningObjectTable = {0x00000010, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IScheduleGroup = {0xC733E4A6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID IID_IScopedOperations = {0x0C733AB0, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IScriptEntry = {0x0AEE2A95, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; + const IID IID_IScriptErrorList = {0xF3470F24, 0x15FD, 0x11D2, [0xBB, 0x2E, 0x00, 0x80, 0x5F, 0xF7, 0xEF, 0xCA]}; + const IID IID_IScriptNode = {0x0AEE2A94, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; + const IID IID_IScriptScriptlet = {0x0AEE2A96, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; + const IID IID_IScrollBar = {0x3050F689, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISdo = {0x56BC53DE, 0x96DB, 0x11D1, [0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; + const IID IID_ISdoCollection = {0x56BC53E2, 0x96DB, 0x11D1, [0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; + const IID IID_ISdoDictionaryOld = {0xD432E5F4, 0x53D8, 0x11D2, [0x9A, 0x3A, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0xAC]}; + const IID IID_ISdoMachine = {0x479F6E75, 0x49A2, 0x11D2, [0x8E, 0xCA, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x19]}; + const IID IID_ISdoServiceControl = {0x479F6E74, 0x49A2, 0x11D2, [0x8E, 0xCA, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x19]}; + const IID IID_ISearch = {0xBA9239A4, 0x3DD5, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; + const IID IID_ISearchAssistantOC = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; + const IID IID_ISearchAssistantOC2 = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA2]}; + const IID IID_ISearchAssistantOC3 = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA3]}; + const IID IID_ISearchCommandExt = {0x1D2EFD50, 0x75CE, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; + const IID IID_ISearchContext = {0x09F656A2, 0x41AF, 0x480C, [0x88, 0xF7, 0x16, 0xCC, 0x0D, 0x16, 0x46, 0x15]}; + const IID IID_ISearches = {0x47C922A2, 0x3DD5, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; + const IID IID_ISearchQueryHits = {0xED8CE7E0, 0x106C, 0x11CE, [0x84, 0xE2, 0x00, 0xAA, 0x00, 0x4B, 0x99, 0x86]}; + const IID IID_ISecondaryControlChannel = {0xA23F9D10, 0x714C, 0x41FE, [0x84, 0x71, 0xFF, 0xB1, 0x9B, 0xC2, 0x84, 0x54]}; + const IID IID_ISecureUrlHost = {0xC81984C4, 0x74C8, 0x11D2, [0xBA, 0xA9, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; + const IID IID_ISecurityInfo = {0x0C733AA4, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ISegment = {0x3050F683, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISegmentList = {0x3050F605, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISegmentListIterator = {0x3050F692, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISelectionObject2 = {0x3050F7FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISelectionServices = {0x3050F684, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISelectionServicesListener = {0x3050F699, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISensLogon = {0xD597BAB3, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; + const IID IID_ISensLogon2 = {0xD597BAB4, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; + const IID IID_ISensNetwork = {0xD597BAB1, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; + const IID IID_ISensOnNow = {0xD597BAB2, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; + const IID IID_ISequenceNumber = {0x3050F6C1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISequentialStream = {0x0C733A30, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IServerSecurity = {0x0000013E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IServiceProvider = {0x6D5140C1, 0x7436, 0x11CE, [0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA]}; + const IID IID_ISessionProperties = {0x0C733A85, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ISetNextStatement = {0x51973C03, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_ISharedAccessBeacon = {0xFAEDCF6B, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_ISharedAccessBeaconFinder = {0xFAEDCF67, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_IShellApp = {0xA3E14960, 0x935F, 0x11D1, [0xB8, 0xB8, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; + const IID IID_IShellBrowser = {0x000214E2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellChangeNotify = {0xD82BE2B1, 0x5764, 0x11D0, [0xA9, 0x6E, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; + const IID IID_IShellCopyHookA = {0x000214EF, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellCopyHookW = {0x000214FC, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellDetails = {0x000214EC, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellDetails3 = {0xD2A105C0, 0x87D5, 0x11D1, [0x83, 0x91, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; + const IID IID_IShellDispatch = {0xD8F015C0, 0xC278, 0x11CE, [0xA4, 0x9E, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IShellDispatch2 = {0xA4C6892C, 0x3BA9, 0x11D2, [0x9D, 0xEA, 0x00, 0xC0, 0x4F, 0xB1, 0x61, 0x62]}; + const IID IID_IShellDispatch3 = {0x177160CA, 0xBB5A, 0x411C, [0x84, 0x1D, 0xBD, 0x38, 0xFA, 0xCD, 0xEA, 0xA0]}; + const IID IID_IShellDispatch4 = {0xEFD84B2D, 0x4BCF, 0x4298, [0xBE, 0x25, 0xEB, 0x54, 0x2A, 0x59, 0xFB, 0xDA]}; + const IID IID_IShellExecuteHookA = {0x000214F5, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellExecuteHookW = {0x000214FB, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellExtInit = {0x000214E8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellFavoritesNameSpace = {0x55136804, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; + const IID IID_IShellFolder = {0x000214E6, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellFolder2 = {0x93F2F68C, 0x1D1B, 0x11D3, [0xA3, 0x0E, 0x00, 0xC0, 0x4F, 0x79, 0xAB, 0xD1]}; + const IID IID_IShellFolderViewCB = {0x2047E320, 0xF2A9, 0x11CE, [0xAE, 0x65, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62]}; + const IID IID_IShellFolderViewDual = {0xE7A1AF80, 0x4D96, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; + const IID IID_IShellFolderViewDual2 = {0x31C147B6, 0x0ADE, 0x4A3C, [0xB5, 0x14, 0xDD, 0xF9, 0x32, 0xEF, 0x6D, 0x17]}; + const IID IID_IShellIcon = {0x000214E5, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellIconOverlay = {0x7D688A70, 0xC613, 0x11D0, [0x99, 0x9B, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; + const IID IID_IShellIconOverlayIdentifier = {0x0C6C4200, 0xC589, 0x11D0, [0x99, 0x9A, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; + const IID IID_IShellImageData = {0xBFDEEC12, 0x8040, 0x4403, [0xA5, 0xEA, 0x9E, 0x07, 0xDA, 0xFC, 0xF5, 0x30]}; + const IID IID_IShellImageDataAbort = {0x53FB8E58, 0x50C0, 0x4003, [0xB4, 0xAA, 0x0C, 0x8D, 0xF2, 0x8E, 0x7F, 0x3A]}; + const IID IID_IShellImageDataFactory = {0x9BE8ED5C, 0xEDAB, 0x4D75, [0x90, 0xF3, 0xBD, 0x5B, 0xDB, 0xB2, 0x1C, 0x82]}; + const IID IID_IShellLinkA = {0x000214EE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellLinkDataList = {0x45E2B4AE, 0xB1C3, 0x11D0, [0xB9, 0x2F, 0x00, 0xA0, 0xC9, 0x03, 0x12, 0xE1]}; + const IID IID_IShellLinkDual = {0x88A05C00, 0xF000, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + const IID IID_IShellLinkDual2 = {0x317EE249, 0xF12E, 0x11D2, [0xB1, 0xE4, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; + const IID IID_IShellLinkW = {0x000214F9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellNameSpace = {0xE572D3C9, 0x37BE, 0x4AE2, [0x82, 0x5D, 0xD5, 0x21, 0x76, 0x3E, 0x31, 0x08]}; + const IID IID_IShellPropSheetExt = {0x000214E9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellUIHelper = {0x729FE2F8, 0x1EA8, 0x11D1, [0x8F, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; + const IID IID_IShellView = {0x000214E3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IShellView2 = {0x88E39E80, 0x3578, 0x11CF, [0xAE, 0x69, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62]}; + const IID IID_IShellWindows = {0x85CB6900, 0x4D95, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; + const IID IID_ISimpleCommandCreator = {0x5E341AB7, 0x02D0, 0x11D1, [0x90, 0x0C, 0x00, 0xA0, 0xC9, 0x06, 0x37, 0x96]}; + const IID IID_ISimpleConnectionPoint = {0x51973C3E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; + const IID IID_ISimpleFrameSite = {0x742B0E01, 0x14E6, 0x101B, [0x91, 0x4E, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; + const IID IID_ISliderBar = {0x3050F68D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISniffStream = {0x4EF17940, 0x30E0, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; + const IID IID_ISOAPRequest = {0xAD194525, 0x6E01, 0x4BCA, [0x92, 0x9C, 0x23, 0xC7, 0x38, 0x33, 0x36, 0xAF]}; + const IID IID_ISoftDistExt = {0xB15B8DC1, 0xC7E1, 0x11D0, [0x86, 0x80, 0x00, 0xAA, 0x00, 0xBD, 0xCB, 0x71]}; + const IID IID_ISourcesRowset = {0x0C733A1E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ISpecialSystemProperties = {0x000001B9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ISpecifyPropertyPages = {0xB196B28B, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; + const IID IID_ISpinButton = {0x3050F68B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISQLErrorInfo = {0x0C733A74, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IStandardActivator = {0x000001B8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IStandardInfo = {0xF1D9C1A5, 0x9589, 0x40DD, [0xB6, 0x3D, 0x9B, 0xB0, 0xB3, 0x8A, 0x10, 0x22]}; + const IID IID_IStaticPortMapping = {0x6F10711F, 0x729B, 0x41E5, [0x93, 0xB8, 0xF2, 0x1D, 0x0F, 0x81, 0x8D, 0xF1]}; + const IID IID_IStaticPortMappingCollection = {0xCD1F3E77, 0x66D6, 0x4664, [0x82, 0xC7, 0x36, 0xDB, 0xB6, 0x41, 0xD0, 0xF1]}; + const IID IID_IStats = {0x944AD530, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; + const IID IID_IStdMarshalInfo = {0x00000018, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IStemmer = {0xEFBAF140, 0x7F42, 0x11CE, [0xBE, 0x57, 0x00, 0xAA, 0x00, 0x51, 0xFE, 0x20]}; + const IID IID_IStemSink = {0xFE77C330, 0x7F42, 0x11CE, [0xBE, 0x57, 0x00, 0xAA, 0x00, 0x51, 0xFE, 0x20]}; + const IID IID_IStorage = {0x0000000B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IStream = {0x0000000C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IStub = {0x00000026, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IStubManager = {0x00000006, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ISubDivisionProvider = {0x3050F4D2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ISubscriptionAgentControl = {0xA89E8FF0, 0x70F4, 0x11D1, [0xBC, 0x7F, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; + const IID IID_ISubscriptionAgentEvents = {0xA89E8FF1, 0x70F4, 0x11D1, [0xBC, 0x7F, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; + const IID IID_ISubscriptionAgentShellExt = {0x81B184BA, 0xB302, 0x11D1, [0x85, 0x52, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; + const IID IID_ISubscriptionItem = {0xA97559F8, 0x6C4A, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; + const IID IID_ISubscriptionMgr = {0x085FB2C0, 0x0DF8, 0x11D1, [0x8F, 0x4B, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x3F]}; + const IID IID_ISubscriptionMgr2 = {0x614BC270, 0xAEDF, 0x11D1, [0xA1, 0xF9, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; + const IID IID_ISubscriptionMgrPriv = {0xD66B399E, 0xAF1D, 0x11D1, [0xA1, 0xF9, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; + const IID IID_ISubscriptionThrottler = {0x1E9B00E4, 0x9846, 0x11D1, [0xA1, 0xEE, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; + const IID IID_ISupportErrorInfo = {0xDF0B3D60, 0x548F, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; + const IID IID_ISurrogate = {0x00000022, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ISWbemDateTime = {0x5E97458A, 0xCF77, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; + const IID IID_ISWbemEventSource = {0x27D54D92, 0x0EBE, 0x11D2, [0x8B, 0x22, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemLastError = {0xD962DB84, 0xD4BB, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemLocator = {0x76A6415B, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemMethod = {0x422E8E90, 0xD955, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemMethodSet = {0xC93BA292, 0xD955, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemNamedValue = {0x76A64164, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemNamedValueSet = {0xCF2376EA, 0xCE8C, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemObject = {0x76A6415A, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemObjectEx = {0x269AD56A, 0x8A67, 0x4129, [0xBC, 0x8C, 0x05, 0x06, 0xDC, 0xFE, 0x98, 0x80]}; + const IID IID_ISWbemObjectPath = {0x5791BC27, 0xCE9C, 0x11D1, [0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C]}; + const IID IID_ISWbemObjectSet = {0x76A6415F, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemPrivilege = {0x26EE67BD, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemPrivilegeSet = {0x26EE67BF, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemProperty = {0x1A388F98, 0xD4BA, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemPropertySet = {0xDEA0A7B2, 0xD4BA, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemQualifier = {0x79B05932, 0xD3B7, 0x11D1, [0x8B, 0x06, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemQualifierSet = {0x9B16ED16, 0xD3DF, 0x11D1, [0x8B, 0x08, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemRefreshableItem = {0x5AD4BF92, 0xDAAB, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; + const IID IID_ISWbemRefresher = {0x14D8250E, 0xD9C2, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; + const IID IID_ISWbemSecurity = {0xB54D66E6, 0x2287, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemServices = {0x76A6415C, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID IID_ISWbemServicesEx = {0xD2F68443, 0x85DC, 0x427E, [0x91, 0xD8, 0x36, 0x65, 0x54, 0xCC, 0x75, 0x4C]}; + const IID IID_ISWbemSink = {0x75718C9F, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; + const IID IID_ISynchronize = {0x00000030, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ISynchronizeContainer = {0x00000033, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ISynchronizedCallBack = {0x74C26041, 0x70D1, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; + const IID IID_ISynchronizeEvent = {0x00000032, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ISynchronizeHandle = {0x00000031, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ISynchronizeMutex = {0x00000025, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ISyncMgrEnumItems = {0x6295DF2A, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; + const IID IID_ISyncMgrRegisterCSC = {0x47681A61, 0xBC74, 0x11D2, [0xB5, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x39, 0x81]}; + const IID IID_ISyncMgrSynchronizeInvoke = {0x6295DF2C, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; + const IID IID_ISyncSchedule = {0xF0E15899, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; + const IID IID_ISyncScheduleMgr = {0xF0E15897, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; + const IID IID_ISyncSchedulep = {0xF0E1589B, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; + const IID IID_ITableCreation = {0x0C733ABC, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ITableDefinition = {0x0C733A86, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ITableDefinitionWithConstraints = {0x0C733AAB, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ITableRename = {0x0C733A77, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ITACDGroup = {0x5AFC3148, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITACDGroupEvent = {0x297F3032, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITAddress = {0xB1EFC386, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_ITAddress2 = {0xB0AE5D9B, 0xBE51, 0x46C9, [0xB0, 0xF7, 0xDF, 0xA8, 0xA2, 0x2A, 0x8B, 0xC4]}; + const IID IID_ITAddressCapabilities = {0x8DF232F5, 0x821B, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITAddressDeviceSpecificEvent = {0x3ACB216B, 0x40BD, 0x487A, [0x86, 0x72, 0x5C, 0xE7, 0x7B, 0xD7, 0xE3, 0xA3]}; + const IID IID_ITAddressEvent = {0x831CE2D1, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITAddressTranslation = {0x0C4D8F03, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITAddressTranslationInfo = {0xAFC15945, 0x8D40, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITAgent = {0x5770ECE5, 0x4B27, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITAgentEvent = {0x5AFC314A, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITAgentHandler = {0x587E8C22, 0x9802, 0x11D1, [0xA0, 0xA4, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITAgentHandlerEvent = {0x297F3034, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITAgentSession = {0x5AFC3147, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITAgentSessionEvent = {0x5AFC314B, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITAllocatorProperties = {0xC1BC3C90, 0xBCFE, 0x11D1, [0x97, 0x45, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_ITAMMediaFormat = {0x0364EB00, 0x4A77, 0x11D1, [0xA6, 0x71, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xE8]}; + const IID IID_ITargetContainer = {0x7847EC01, 0x2BEC, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; + const IID IID_ITargetEmbedding = {0x548793C0, 0x9E74, 0x11CF, [0x96, 0x55, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0x23]}; + const IID IID_ITargetFrame = {0xD5F78C80, 0x5252, 0x11CF, [0x90, 0xFA, 0x00, 0xAA, 0x00, 0x42, 0x10, 0x6E]}; + const IID IID_ITargetFrame2 = {0x86D52E11, 0x94A8, 0x11D0, [0x82, 0xAF, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; + const IID IID_ITargetFramePriv = {0x9216E421, 0x2BF5, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; + const IID IID_ITargetNotify = {0x863A99A0, 0x21BC, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; + const IID IID_ITargetNotify2 = {0x3050F6B1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ITaskAnalyzeCluster = {0x795737A1, 0xE13A, 0x45EB, [0x8D, 0xFD, 0x81, 0x85, 0xC4, 0xB7, 0xAD, 0x4E]}; + const IID IID_ITaskbarList = {0x56FDF342, 0xFD6D, 0x11D0, [0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90]}; + const IID IID_ITaskbarList2 = {0x602D4995, 0xB13A, 0x429B, [0xA6, 0x6E, 0x19, 0x35, 0xE4, 0x4F, 0x43, 0x17]}; + const IID IID_ITaskCommitClusterChanges = {0x1BF12DDE, 0xF8B0, 0x49B1, [0xA4, 0x58, 0x67, 0x47, 0xDB, 0x78, 0x8A, 0x47]}; + const IID IID_ITaskCompareAndPushInformation = {0xD4F1C2AF, 0xB370, 0x49DE, [0x87, 0x68, 0x40, 0x10, 0xB5, 0x68, 0x63, 0x6C]}; + const IID IID_ITaskGatherClusterInfo = {0xE167965C, 0xC5D6, 0x493C, [0xA3, 0x43, 0x4C, 0x10, 0x5C, 0x01, 0xDD, 0xE7]}; + const IID IID_ITaskGatherInformation = {0xB9AAF3F8, 0x238E, 0x4993, [0xBA, 0x31, 0x14, 0x85, 0x98, 0x04, 0xF9, 0x2C]}; + const IID IID_ITaskGatherNodeInfo = {0xF19A2E01, 0x2CB3, 0x47B4, [0x8F, 0x5D, 0xB9, 0x77, 0x17, 0x6B, 0x45, 0xC8]}; + const IID IID_ITaskGetDomains = {0xDFCB4ACD, 0xC4DB, 0x4DB4, [0x8E, 0xBB, 0x1D, 0xD0, 0x7A, 0x9D, 0x5B, 0x82]}; + const IID IID_ITaskGetDomainsCallback = {0x85402E44, 0x6834, 0x41DF, [0x85, 0x90, 0x01, 0x82, 0x7D, 0x12, 0x4E, 0x1B]}; + const IID IID_ITaskLoginDomain = {0x76AD8E51, 0x53C3, 0x4347, [0x89, 0x5D, 0x6C, 0x30, 0xF4, 0x13, 0x93, 0x74]}; + const IID IID_ITaskLoginDomainCallback = {0xEFAF3C43, 0x7A8F, 0x469B, [0xB8, 0xBB, 0xC8, 0x0C, 0x57, 0x47, 0xCE, 0x05]}; + const IID IID_ITaskManager = {0x16116694, 0xDFC5, 0x470B, [0xAC, 0x12, 0x46, 0xFB, 0xB0, 0x1C, 0xEF, 0x10]}; + const IID IID_ITaskPollingCallback = {0x49E92395, 0x66AF, 0x4ADD, [0xA4, 0x1E, 0x43, 0x51, 0x2C, 0xB5, 0x19, 0xB3]}; + const IID IID_ITaskVerifyIPAddress = {0x0C95E1B1, 0x0CFF, 0x4740, [0x8A, 0xBD, 0x69, 0x91, 0x2D, 0x10, 0x5B, 0xD1]}; + const IID IID_ITASRTerminalEvent = {0xEE016A02, 0x4FA9, 0x467C, [0x93, 0x3F, 0x5A, 0x15, 0xB1, 0x23, 0x77, 0xD7]}; + const IID IID_ITAttributeList = {0x5037FB82, 0xCAE9, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_ITAudioDeviceControl = {0x6C0AB6C5, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; + const IID IID_ITAudioSettings = {0x6C0AB6C6, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; + const IID IID_ITAutomatedPhoneControl = {0x1EE1AF0E, 0x6159, 0x4A61, [0xB7, 0x9B, 0x6A, 0x4B, 0xA3, 0xFC, 0x9D, 0xFC]}; + const IID IID_ITBasicAudioTerminal = {0xB1EFC38D, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_ITBasicCallControl = {0xB1EFC389, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_ITBasicCallControl2 = {0x161A4A56, 0x1E99, 0x4B3F, [0xA4, 0x6A, 0x16, 0x8F, 0x38, 0xA5, 0xEE, 0x4C]}; + const IID IID_ITCallHub = {0xA3C1544E, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITCallHubEvent = {0xA3C15451, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITCallInfo = {0x350F85D1, 0x1227, 0x11D3, [0x83, 0xD4, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITCallInfo2 = {0x94D70CA6, 0x7AB0, 0x4DAA, [0x81, 0xCA, 0xB8, 0xF8, 0x64, 0x3F, 0xAE, 0xC1]}; + const IID IID_ITCallInfoChangeEvent = {0x5D4B65F9, 0xE51C, 0x11D1, [0xA0, 0x2F, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITCallingCard = {0x0C4D8F00, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITCallMediaEvent = {0xFF36B87F, 0xEC3A, 0x11D0, [0x8E, 0xE4, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITCallNotificationEvent = {0x895801DF, 0x3DD6, 0x11D1, [0x8F, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITCallQualityControl = {0xFE1D8AE0, 0xEDC4, 0x49B5, [0x8F, 0x8C, 0x4D, 0xE4, 0x0F, 0x9C, 0xDF, 0xAF]}; + const IID IID_ITCallStateEvent = {0x62F47097, 0x95C9, 0x11D0, [0x83, 0x5D, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_ITCollection = {0x5EC5ACF2, 0x9C02, 0x11D0, [0x83, 0x62, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_ITCollection2 = {0xE6DDDDA5, 0xA6D3, 0x48FF, [0x87, 0x37, 0xD3, 0x2F, 0xC4, 0xD9, 0x54, 0x77]}; + const IID IID_ITConferenceBlob = {0xC259D7AA, 0xC8AB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_ITConnection = {0x8FA381D4, 0xC8C2, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_ITcpipProperties = {0x98133271, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; + const IID IID_ITCustomTone = {0x357AD764, 0xB3C6, 0x4B2A, [0x8F, 0xA5, 0x07, 0x22, 0x82, 0x7A, 0x92, 0x54]}; + const IID IID_ITDetectTone = {0x961F79BD, 0x3097, 0x49DF, [0xA1, 0xD6, 0x90, 0x9B, 0x77, 0xE8, 0x9C, 0xA0]}; + const IID IID_ITDigitDetectionEvent = {0x80D3BFAC, 0x57D9, 0x11D2, [0xA0, 0x4A, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITDigitGenerationEvent = {0x80D3BFAD, 0x57D9, 0x11D2, [0xA0, 0x4A, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITDigitsGatheredEvent = {0xE52EC4C1, 0xCBA3, 0x441A, [0x9E, 0x6A, 0x93, 0xCB, 0x90, 0x9E, 0x97, 0x24]}; + const IID IID_ITDirectory = {0x34621D6C, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; + const IID IID_ITDirectoryObject = {0x34621D6E, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; + const IID IID_ITDirectoryObjectConference = {0xF1029E5D, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_ITDirectoryObjectUser = {0x34621D6F, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; + const IID IID_ITDispatchMapper = {0xE9225295, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITemplatePrinter = {0x3050F6B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ITemplatePrinter2 = {0x3050F83F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ITFileTerminalEvent = {0xE4A7FBAC, 0x8C17, 0x4427, [0x9F, 0x55, 0x9F, 0x58, 0x9A, 0xC8, 0xAF, 0x00]}; + const IID IID_ITFileTrack = {0x31CA6EA9, 0xC08A, 0x4BEA, [0x88, 0x11, 0x8E, 0x9C, 0x1B, 0xA3, 0xEA, 0x3A]}; + const IID IID_ITfLangBarAddIn = {0xC9ADDAC3, 0x15CB, 0x4957, [0xB9, 0x3C, 0xDB, 0x08, 0x73, 0xFF, 0x98, 0xBB]}; + const IID IID_ITFormatControl = {0x6C0AB6C1, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; + const IID IID_ITForwardInformation = {0x449F659E, 0x88A3, 0x11D1, [0xBB, 0x5D, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITForwardInformation2 = {0x5229B4ED, 0xB260, 0x4382, [0x8E, 0x1A, 0x5D, 0xF3, 0xA8, 0xA4, 0xCC, 0xC0]}; + const IID IID_ITfSpeechUIServer = {0x90E9A944, 0x9244, 0x489F, [0xA7, 0x8F, 0xDE, 0x67, 0xAF, 0xC0, 0x13, 0xA7]}; + const IID IID_IThumbnailCapture = {0x4EA39266, 0x7211, 0x409F, [0xB6, 0x22, 0xF6, 0x3D, 0xBD, 0x16, 0xC5, 0x33]}; + const IID IID_IThumbnailExtractor = {0x969DC708, 0x5C76, 0x11D1, [0x8D, 0x86, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; + const IID IID_ITILSConfig = {0x34621D72, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; + const IID IID_ITIMEActiveElementCollection = {0x403E2540, 0x4520, 0x11D3, [0x93, 0xAB, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x38]}; + const IID IID_ITimeAndNoticeControl = {0xBC0BF6AE, 0x8878, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; + const IID IID_ITIMEAnimationElement = {0xA74F14B1, 0xB6A2, 0x430A, [0xA5, 0xE8, 0x1F, 0x4E, 0x53, 0xF7, 0x10, 0xFE]}; + const IID IID_ITIMEAnimationElement2 = {0x29CE8661, 0xBD43, 0x421A, [0xB6, 0x16, 0xE9, 0xB3, 0x1F, 0x33, 0xA5, 0x72]}; + const IID IID_ITIMEBodyElement = {0x8C90E348, 0xEC0A, 0x4229, [0x90, 0xB0, 0xE5, 0x7D, 0x2C, 0xA4, 0x5C, 0xCB]}; + const IID IID_ITIMEDMusicPlayerObject = {0x407954F5, 0x2BAB, 0x4CFA, [0x95, 0x4D, 0x24, 0x9F, 0x9F, 0xCE, 0x43, 0xA1]}; + const IID IID_ITIMEDVDPlayerObject = {0x3AF7AB68, 0x4F29, 0x462C, [0xAA, 0x6E, 0x58, 0x72, 0x44, 0x88, 0x99, 0xE3]}; + const IID IID_ITIMEElement = {0x1C2EF64E, 0xF07D, 0x4338, [0x97, 0x71, 0x91, 0x54, 0x49, 0x1C, 0xD8, 0xB9]}; + const IID IID_ITIMEElementCollection = {0x50ABC224, 0x6D53, 0x4F83, [0x91, 0x35, 0x24, 0x40, 0xA4, 0x1B, 0x7B, 0xC8]}; + const IID IID_ITIMEFactory = {0xCD51E446, 0x3006, 0x434F, [0x90, 0xE2, 0xE3, 0x7E, 0x8F, 0xB8, 0xCA, 0x8F]}; + const IID IID_ITIMEMediaElement = {0x47A6972F, 0xAE65, 0x4A6B, [0xAE, 0x63, 0xD0, 0xC1, 0xD5, 0x30, 0x7B, 0x58]}; + const IID IID_ITIMEMediaElement2 = {0x9EE29400, 0x7EE6, 0x453A, [0x85, 0xB3, 0x4E, 0xC2, 0x8E, 0x03, 0x05, 0xB4]}; + const IID IID_ITIMEMediaPlayer = {0xEA4A95BE, 0xACC9, 0x4BF0, [0x85, 0xA4, 0x1B, 0xF3, 0xC5, 0x1E, 0x43, 0x1C]}; + const IID IID_ITIMEMediaPlayerAudio = {0xFFAACFDA, 0xB374, 0x4F22, [0xAC, 0x9A, 0xC5, 0xBB, 0x94, 0x37, 0xCB, 0x56]}; + const IID IID_ITIMEMediaPlayerControl = {0x897A99E7, 0xF386, 0x45C8, [0xB5, 0x1B, 0x3A, 0x25, 0xBB, 0xCB, 0xBA, 0x69]}; + const IID IID_ITIMEMediaPlayerNetwork = {0xB9987FCA, 0x7FBB, 0x4015, [0xBD, 0x3D, 0x74, 0x18, 0x60, 0x55, 0x14, 0xDA]}; + const IID IID_ITIMEMediaPlayerSite = {0xBF0571ED, 0x344F, 0x4F58, [0x82, 0xC7, 0x74, 0x31, 0xED, 0x0F, 0xD8, 0x34]}; + const IID IID_ITIMEPlayItem = {0x2A6096D9, 0x2CE0, 0x47DC, [0xA8, 0x13, 0x90, 0x99, 0xA2, 0x46, 0x63, 0x09]}; + const IID IID_ITIMEPlayItem2 = {0x4262CD38, 0x6BDC, 0x40A4, [0xBC, 0x50, 0x4C, 0xC5, 0x03, 0x66, 0xE7, 0x02]}; + const IID IID_ITIMEPlayList = {0xE9B75B62, 0xDD97, 0x4B19, [0x8F, 0xD9, 0x96, 0x46, 0x29, 0x29, 0x52, 0xE0]}; + const IID IID_ITimer = {0x3050F360, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ITimerService = {0x3050F35F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ITimerSink = {0x3050F361, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ITIMEState = {0xDD5EC62A, 0x9D77, 0x4573, [0x80, 0xA8, 0x75, 0x85, 0x94, 0xE6, 0x9C, 0xEA]}; + const IID IID_ITIMETransitionElement = {0xF383D66F, 0x5E68, 0x4FC2, [0xB6, 0x41, 0x03, 0x67, 0x2B, 0x54, 0x3A, 0x49]}; + const IID IID_ITLegacyAddressMediaControl = {0xAB493640, 0x4C0B, 0x11D2, [0xA0, 0x46, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITLegacyAddressMediaControl2 = {0xB0EE512B, 0xA531, 0x409E, [0x9D, 0xD9, 0x40, 0x99, 0xFE, 0x86, 0xC7, 0x38]}; + const IID IID_ITLegacyCallMediaControl = {0xD624582F, 0xCC23, 0x4436, [0xB8, 0xA5, 0x47, 0xC6, 0x25, 0xC8, 0x04, 0x5D]}; + const IID IID_ITLegacyCallMediaControl2 = {0x57CA332D, 0x7BC2, 0x44F1, [0xA6, 0x0C, 0x93, 0x6F, 0xE8, 0xD7, 0xCE, 0x73]}; + const IID IID_ITLegacyWaveSupport = {0x207823EA, 0xE252, 0x11D2, [0xB7, 0x7E, 0x00, 0x80, 0xC7, 0x13, 0x53, 0x81]}; + const IID IID_ITLocalParticipant = {0x39CBF055, 0xF77A, 0x11D2, [0xA8, 0x24, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; + const IID IID_ITLocationInfo = {0x0C4D8EFF, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITMedia = {0x0CC1F053, 0xCAEB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_ITMediaCollection = {0x6A8E16A2, 0x0ABC, 0x11D1, [0x97, 0x6D, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_ITMediaControl = {0xC445DDE8, 0x5199, 0x4BC7, [0x98, 0x07, 0x5F, 0xFB, 0x92, 0xE4, 0x2E, 0x09]}; + const IID IID_ITMediaPlayback = {0x627E8AE6, 0xAE4C, 0x4A69, [0xBB, 0x63, 0x2A, 0xD6, 0x25, 0x40, 0x4B, 0x77]}; + const IID IID_ITMediaRecord = {0xF5DD4592, 0x5476, 0x4CC1, [0x9D, 0x4D, 0xFA, 0xD3, 0xEE, 0xFE, 0x7D, 0xB2]}; + const IID IID_ITMediaSupport = {0xB1EFC384, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_ITMSPAddress = {0xEE3BD600, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITMultiTrackTerminal = {0xFE040091, 0xADE8, 0x4072, [0x95, 0xC9, 0xBF, 0x7D, 0xE8, 0xC5, 0x4B, 0x44]}; + const IID IID_ITParticipant = {0x5899B820, 0x5A34, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; + const IID IID_ITParticipantControl = {0xD2EE6684, 0x5A34, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; + const IID IID_ITParticipantEvent = {0x8BB35070, 0x2DAD, 0x11D3, [0xA5, 0x80, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; + const IID IID_ITParticipantSubStreamControl = {0x2C679108, 0x5A35, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; + const IID IID_ITPhone = {0x09D48DB4, 0x10CC, 0x4388, [0x9D, 0xE7, 0xA8, 0x46, 0x56, 0x18, 0x97, 0x5A]}; + const IID IID_ITPhoneDeviceSpecificEvent = {0x63FFB2A6, 0x872B, 0x4CD3, [0xA5, 0x01, 0x32, 0x6E, 0x8F, 0xB4, 0x0A, 0xF7]}; + const IID IID_ITPhoneEvent = {0x8F942DD8, 0x64ED, 0x4AAF, [0xA7, 0x7D, 0xB2, 0x3D, 0xB0, 0x83, 0x7E, 0xAD]}; + const IID IID_ITPluggableTerminalClassInfo = {0x41757F4A, 0xCF09, 0x4B34, [0xBC, 0x96, 0x0A, 0x79, 0xD2, 0x39, 0x00, 0x76]}; + const IID IID_ITPluggableTerminalClassRegistrat = {0x924A3723, 0xA00B, 0x4F5F, [0x9F, 0xEE, 0x8E, 0x9A, 0xEB, 0x9E, 0x82, 0xAA]}; + const IID IID_ITPluggableTerminalEventSink = {0x6E0887BE, 0xBA1A, 0x492E, [0xBD, 0x10, 0x40, 0x20, 0xEC, 0x5E, 0x33, 0xE0]}; + const IID IID_ITPluggableTerminalEventSinkRegis = {0xF7115709, 0xA216, 0x4957, [0xA7, 0x59, 0x06, 0x0A, 0xB3, 0x2A, 0x90, 0xD1]}; + const IID IID_ITPluggableTerminalInitializatio = {0xAED6483C, 0x3304, 0x11D2, [0x86, 0xF1, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; + const IID IID_ITPluggableTerminalSuperclassInf = {0x6D54E42C, 0x4625, 0x4359, [0xA6, 0xF7, 0x63, 0x19, 0x99, 0x10, 0x7E, 0x05]}; + const IID IID_ITPluggableTerminalSuperclassRegi = {0x60D3C08A, 0xC13E, 0x4195, [0x9A, 0xB0, 0x8D, 0xE7, 0x68, 0x09, 0x0F, 0x25]}; + const IID IID_ITPrivateEvent = {0x0E269CD0, 0x10D4, 0x4121, [0x9C, 0x22, 0x9C, 0x85, 0xD6, 0x25, 0x65, 0x0D]}; + const IID IID_ITQOSApplicationID = {0xE8C89D27, 0xA3BD, 0x47D5, [0xA6, 0xFC, 0xD2, 0xAE, 0x40, 0xCD, 0xBC, 0x6E]}; + const IID IID_ITQOSEvent = {0xCFA3357C, 0xAD77, 0x11D1, [0xBB, 0x68, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITQueue = {0x5AFC3149, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITQueueEvent = {0x297F3033, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITrackFile = {0x8790C948, 0xA30B, 0x11D0, [0x8C, 0xAB, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; + const IID IID_ITransaction = {0x0FB15084, 0xAF41, 0x11CE, [0xBD, 0x2B, 0x20, 0x4C, 0x4F, 0x4F, 0x50, 0x20]}; + const IID IID_ITransaction2 = {0x34021548, 0x0065, 0x11D3, [0xBA, 0xC1, 0x00, 0xC0, 0x4F, 0x79, 0x7B, 0xE2]}; + const IID IID_ITransactionCloner = {0x02656950, 0x2152, 0x11D0, [0x94, 0x4C, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x6E]}; + const IID IID_ITransactionDispenser = {0x3A6AD9E1, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; + const IID IID_ITransactionJoin = {0x0C733A5E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ITransactionLocal = {0x0C733A5F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ITransactionObject = {0x0C733A60, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ITransactionOptions = {0x3A6AD9E0, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; + const IID IID_ITransactionOutcomeEvents = {0x3A6AD9E2, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; + const IID IID_ITransmt = {0xB3C9F150, 0xB593, 0x11CE, [0xB5, 0xB0, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; + const IID IID_ITravelEntry = {0xF46EDB3B, 0xBC2F, 0x11D0, [0x94, 0x12, 0x00, 0xAA, 0x00, 0xA3, 0xEB, 0xD3]}; + const IID IID_ITravelLog = {0x66A9CB08, 0x4802, 0x11D2, [0xA5, 0x61, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; + const IID IID_ITravelLogClient = {0x3050F67A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ITravelLogClient2 = {0x0AD364CE, 0xADCB, 0x11D3, [0x82, 0x69, 0x00, 0x80, 0x5F, 0xC7, 0x32, 0xC0]}; + const IID IID_ITravelLogEntry = {0x7EBFDD87, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; + const IID IID_ITravelLogEx = {0x3050F679, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_ITravelLogStg = {0x7EBFDD80, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; + const IID IID_ITRendezvous = {0x34621D6B, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; + const IID IID_ITRequest = {0xAC48FFDF, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITRequestEvent = {0xAC48FFDE, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITridentEventSink = {0x1DC9CA50, 0x06EF, 0x11D2, [0x84, 0x15, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; + const IID IID_ITrkForceOwnership = {0xA2531F44, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; + const IID IID_ITrkRestoreNotify = {0xD0056F6B, 0xE2A0, 0x11D0, [0xB1, 0xC2, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; + const IID IID_ITrkRestoreParser = {0x755939E3, 0xE381, 0x11D0, [0xB1, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; + const IID IID_ITrusteeAdmin = {0x0C733AA1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ITrusteeGroupAdmin = {0x0C733AA2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_ITScriptableAudioFormat = {0xB87658BD, 0x3C59, 0x4F64, [0xBE, 0x74, 0xAE, 0xDE, 0x3E, 0x86, 0xA8, 0x1E]}; + const IID IID_ITSdp = {0x9B2719D8, 0xB696, 0x11D0, [0xA4, 0x89, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_ITStaticAudioTerminal = {0xA86B7871, 0xD14C, 0x48E6, [0x92, 0x2E, 0xA8, 0xD1, 0x5F, 0x98, 0x48, 0x00]}; + const IID IID_ITStream = {0xEE3BD605, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITStreamControl = {0xEE3BD604, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITStreamQualityControl = {0x6C0AB6C2, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; + const IID IID_ITSubStream = {0xEE3BD608, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITSubStreamControl = {0xEE3BD607, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITTAPI = {0xB1EFC382, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_ITTAPI2 = {0x54FBDC8C, 0xD90F, 0x4DAD, [0x96, 0x95, 0xB3, 0x73, 0x09, 0x7F, 0x09, 0x4B]}; + const IID IID_ITTAPICallCenter = {0x5AFC3154, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; + const IID IID_ITTAPIEventNotification = {0xEDDB9426, 0x3B91, 0x11D1, [0x8F, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITTAPIObjectEvent = {0xF4854D48, 0x937A, 0x11D1, [0xBB, 0x58, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID IID_ITTAPIObjectEvent2 = {0x359DDA6E, 0x68CE, 0x4383, [0xBF, 0x0B, 0x16, 0x91, 0x33, 0xC4, 0x1B, 0x46]}; + const IID IID_ITTerminal = {0xB1EFC38A, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_ITTerminalControl = {0xAED6483B, 0x3304, 0x11D2, [0x86, 0xF1, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; + const IID IID_ITTerminalManager = {0x7170F2DE, 0x9BE3, 0x11D0, [0xA0, 0x09, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; + const IID IID_ITTerminalManager2 = {0xBB33DEC6, 0xB2C7, 0x46E6, [0x9E, 0xD1, 0x49, 0x8B, 0x91, 0xFA, 0x85, 0xAC]}; + const IID IID_ITTerminalSupport = {0xB1EFC385, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID IID_ITTerminalSupport2 = {0xF3EB39BC, 0x1B1F, 0x4E99, [0xA0, 0xC0, 0x56, 0x30, 0x5C, 0x4D, 0xD5, 0x91]}; + const IID IID_ITTime = {0x2652BB78, 0x1516, 0x11D1, [0x97, 0x71, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_ITTimeCollection = {0x0CC1F04F, 0xCAEB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID IID_ITToneDetectionEvent = {0x407E0FAF, 0xD047, 0x4753, [0xB0, 0xC6, 0x8E, 0x06, 0x03, 0x73, 0xFE, 0xCD]}; + const IID IID_ITToneTerminalEvent = {0xE6F56009, 0x611F, 0x4945, [0xBB, 0xD2, 0x2D, 0x0C, 0xE5, 0x61, 0x20, 0x56]}; + const IID IID_ITTTSTerminalEvent = {0xD964788F, 0x95A5, 0x461D, [0xAB, 0x0C, 0xB9, 0x90, 0x0A, 0x6C, 0x27, 0x13]}; + const IID IID_ITypeChangeEvents = {0x00020410, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ITypeComp = {0x00020403, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ITypeFactory = {0x0000002E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ITypeInfo = {0x00020401, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ITypeInfo2 = {0x00020412, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ITypeLib = {0x00020402, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ITypeLib2 = {0x00020411, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_ITypeMarshal = {0x0000002D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IUmiADSIPrivate = {0xCFCECB01, 0x3123, 0x4926, [0xB5, 0xE3, 0x62, 0x78, 0x08, 0x27, 0x26, 0x43]}; + const IID IID_IUniformResourceLocatorA = {0xFBF23B80, 0xE3F0, 0x101B, [0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8]}; + const IID IID_IUniformResourceLocatorW = {0xCABB0DA0, 0xDA57, 0x11CF, [0x99, 0x74, 0x00, 0x20, 0xAF, 0xD7, 0x97, 0x62]}; + const IID IID_IUnknown = {0x00000000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IUnsecuredApartment = {0x1CFABA8C, 0x1523, 0x11D1, [0xAD, 0x79, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID IID_IUPnPDescriptionDocument = {0x11D1C1B2, 0x7DAA, 0x4C9E, [0x95, 0x95, 0x7F, 0x82, 0xED, 0x20, 0x6D, 0x1E]}; + const IID IID_IUPnPDescriptionDocumentCallback = {0x77394C69, 0x5486, 0x40D6, [0x9B, 0xC3, 0x49, 0x91, 0x98, 0x3E, 0x02, 0xDA]}; + const IID IID_IUPnPDevice = {0x3D44D0D1, 0x98C9, 0x4889, [0xAC, 0xD1, 0xF9, 0xD6, 0x74, 0xBF, 0x22, 0x21]}; + const IID IID_IUPnPDeviceControl = {0x204810BA, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; + const IID IID_IUPnPDeviceDocumentAccess = {0xE7772804, 0x3287, 0x418E, [0x90, 0x72, 0xCF, 0x2B, 0x47, 0x23, 0x89, 0x81]}; + const IID IID_IUPnPDeviceFinder = {0xADDA3D55, 0x6F72, 0x4319, [0xBF, 0xF9, 0x18, 0x60, 0x0A, 0x53, 0x9B, 0x10]}; + const IID IID_IUPnPDeviceFinderAddCallbackWithI = {0x983DFC0B, 0x1796, 0x44DF, [0x89, 0x75, 0xCA, 0x54, 0x5B, 0x62, 0x0E, 0xE5]}; + const IID IID_IUPnPDeviceFinderCallback = {0x415A984A, 0x88B3, 0x49F3, [0x92, 0xAF, 0x05, 0x08, 0xBE, 0xDF, 0x0D, 0x6C]}; + const IID IID_IUPnPDeviceHostICSSupport = {0x3FFC5AE5, 0xA66B, 0x499C, [0xA1, 0x80, 0xC7, 0x39, 0x3D, 0xB6, 0xBA, 0x8D]}; + const IID IID_IUPnPDeviceHostSetup = {0x6BD34909, 0x54E7, 0x4FBF, [0x85, 0x62, 0x7B, 0x89, 0x70, 0x9A, 0x58, 0x9A]}; + const IID IID_IUPnPDeviceProvider = {0x204810B8, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; + const IID IID_IUPnPDevices = {0xFDBC0C73, 0xBDA3, 0x4C66, [0xAC, 0x4F, 0xF2, 0xD9, 0x6F, 0xDA, 0xD6, 0x8C]}; + const IID IID_IUPnPEventSink = {0x204810B4, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; + const IID IID_IUPnPEventSource = {0x204810B5, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; + const IID IID_IUPnPNAT = {0xB171C812, 0xCC76, 0x485A, [0x94, 0xD8, 0xB6, 0xB3, 0xA2, 0x79, 0x4E, 0x99]}; + const IID IID_IUPnPPrivateCallbackHelper = {0x8DCC8327, 0xDBE9, 0x48E6, [0x84, 0x6C, 0x33, 0x72, 0x58, 0x65, 0xD5, 0x0C]}; + const IID IID_IUPnPPrivateDocumentCallbackHelp = {0x19432A8E, 0x4A32, 0x4860, [0xB8, 0xFB, 0x95, 0xB1, 0x11, 0x7C, 0xD4, 0xE5]}; + const IID IID_IUPnPPrivateServiceHelper2 = {0x340F4076, 0x6856, 0x48F9, [0xB3, 0xC4, 0x97, 0xB9, 0x1B, 0x68, 0xD7, 0x7E]}; + const IID IID_IUPnPRegistrar = {0x204810B6, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; + const IID IID_IUPnPReregistrar = {0x204810B7, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; + const IID IID_IUPnPService = {0xA295019C, 0xDC65, 0x47DD, [0x90, 0xDC, 0x7F, 0xE9, 0x18, 0xA1, 0xAB, 0x44]}; + const IID IID_IUPnPServiceCallback = {0x31FADCA9, 0xAB73, 0x464B, [0xB6, 0x7D, 0x5C, 0x1D, 0x0F, 0x83, 0xC8, 0xB8]}; + const IID IID_IUPnPServiceCallbackPrivate = {0x24EA2515, 0xF612, 0x4528, [0xBA, 0x82, 0x7B, 0xD3, 0xDB, 0xBA, 0xD3, 0x03]}; + const IID IID_IUPnPServices = {0x3F8C8E9E, 0x9A7A, 0x4DC8, [0xBC, 0x41, 0xFF, 0x31, 0xFA, 0x37, 0x49, 0x56]}; + const IID IID_IUrlHistoryNotify = {0xBC40BEC1, 0xC493, 0x11D0, [0x83, 0x1B, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; + const IID IID_IUrlHistoryStg = {0x3C374A41, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; + const IID IID_IUrlHistoryStg2 = {0xAFA0DC11, 0xC313, 0x11D0, [0x83, 0x1A, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; + const IID IID_IUrlMon = {0x00000026, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IURLSearchHook = {0xAC60F6A0, 0x0FD9, 0x11D0, [0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97]}; + const IID IID_IURLSearchHook2 = {0x5EE44DA4, 0x6D32, 0x46E3, [0x86, 0xBC, 0x07, 0x54, 0x0D, 0xED, 0xD0, 0xE0]}; + const IID IID_IUrlTrackingStg = {0xF2F8CBB3, 0xB040, 0x11D0, [0xBB, 0x16, 0x00, 0xC0, 0x4F, 0xB6, 0x6F, 0x63]}; + const IID IID_IUserEventTimer = {0x0F504B94, 0x6E42, 0x42E6, [0x99, 0xE0, 0xE2, 0x0F, 0xAF, 0xE5, 0x2A, 0xB4]}; + const IID IID_IUserEventTimerCallback = {0xE9EAD8E6, 0x2A25, 0x410E, [0x9B, 0x58, 0xA9, 0xFB, 0xEF, 0x1D, 0xD1, 0xA2]}; + const IID IID_IUserNotification = {0xBA9711BA, 0x5893, 0x4787, [0xA7, 0xE1, 0x41, 0x27, 0x71, 0x51, 0x55, 0x0B]}; + const IID IID_IUtilityButton = {0x3050F6AF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID IID_IVariantChangeType = {0xA6EF9862, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; + const IID IID_IVersionHost = {0x667115AC, 0xDC02, 0x11D1, [0xBA, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; + const IID IID_IVersionVector = {0x4EB01410, 0xDB1A, 0x11D1, [0xBA, 0x53, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; + const IID IID_IViewChapter = {0x0C733A98, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IViewFilter = {0x0C733A9B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IViewObject = {0x0000010D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IViewObject2 = {0x00000127, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IViewObjectEx = {0x3AF24292, 0x0C96, 0x11CE, [0xA0, 0xCF, 0x00, 0xAA, 0x00, 0x60, 0x0A, 0xB8]}; + const IID IID_IViewRowset = {0x0C733A97, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IViewSort = {0x0C733A9A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID IID_IVirusScanEngine = {0x083DB180, 0xB4A8, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; + const IID IID_IVirusScanner = {0x4589BEE0, 0xB4B1, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; + const IID IID_IWaitMultiple = {0x0000002B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IWbemAddressResolution = {0xF7CE2E12, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID IID_IWbemBackupRestore = {0xC49E32C7, 0xBC8B, 0x11D2, [0x85, 0xD4, 0x00, 0x10, 0x5A, 0x1F, 0x83, 0x04]}; + const IID IID_IWbemBackupRestoreEx = {0xA359DEC5, 0xE813, 0x4834, [0x8A, 0x2A, 0xBA, 0x7F, 0x1D, 0x77, 0x7D, 0x76]}; + const IID IID_IWbemCallResult = {0x44ACA675, 0xE8FC, 0x11D0, [0xA0, 0x7C, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IWbemCallStatus = {0x4212DC47, 0x142E, 0x4C6C, [0xBC, 0x49, 0x6C, 0xA2, 0x32, 0xDD, 0x09, 0x59]}; + const IID IID_IWbemClassObject = {0xDC12A681, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; + const IID IID_IWbemClientConnectionTransport = {0xA889C72A, 0xFCC1, 0x4A9E, [0xAF, 0x61, 0xED, 0x07, 0x13, 0x33, 0xFB, 0x5B]}; + const IID IID_IWbemClientTransport = {0xF7CE2E11, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID IID_IWbemConfigure = {0x9A368276, 0x26CF, 0x11D0, [0xAD, 0x3C, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID IID_IWbemConfigureRefresher = {0x49353C92, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IWbemConnectorLogin = {0xD8EC9CB1, 0xB135, 0x4F10, [0x8B, 0x1B, 0xC7, 0x18, 0x8B, 0xB0, 0xD1, 0x86]}; + const IID IID_IWbemConstructClassObject = {0x9EF76194, 0x70D5, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID IID_IWbemContext = {0x44ACA674, 0xE8FC, 0x11D0, [0xA0, 0x7C, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IWbemDecoupledBasicEventProvider = {0x86336D20, 0xCA11, 0x4786, [0x9E, 0xF1, 0xBC, 0x8A, 0x94, 0x6B, 0x42, 0xFC]}; + const IID IID_IWbemDecoupledEventSink = {0xCD94EBF2, 0xE622, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; + const IID IID_IWbemDecoupledRegistrar = {0x1005CBCF, 0xE64F, 0x4646, [0xBC, 0xD3, 0x3A, 0x08, 0x9D, 0x8A, 0x84, 0xB4]}; + const IID IID_IWbemEventConsumerProvider = {0xE246107A, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID IID_IWbemEventConsumerProviderEx = {0x17CF534A, 0xD8A3, 0x4AD0, [0xAC, 0x92, 0x5E, 0x3D, 0x01, 0x71, 0x71, 0x51]}; + const IID IID_IWbemEventProvider = {0xE245105B, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID IID_IWbemEventProviderQuerySink = {0x580ACAF8, 0xFA1C, 0x11D0, [0xAD, 0x72, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID IID_IWbemEventProviderSecurity = {0x631F7D96, 0xD993, 0x11D2, [0xB3, 0x39, 0x00, 0x10, 0x5A, 0x1F, 0x4A, 0xAF]}; + const IID IID_IWbemEventSink = {0x3AE0080A, 0x7E3A, 0x4366, [0xBF, 0x89, 0x0F, 0xEE, 0xDC, 0x93, 0x16, 0x59]}; + const IID IID_IWbemHiPerfEnum = {0x2705C288, 0x79AE, 0x11D2, [0xB3, 0x48, 0x00, 0x10, 0x5A, 0x1F, 0x81, 0x77]}; + const IID IID_IWbemHiPerfProvider = {0x49353C93, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IWbemLevel1Login = {0xF309AD18, 0xD86A, 0x11D0, [0xA0, 0x75, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IWbemLocator = {0xDC12A687, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; + const IID IID_IWbemObjectAccess = {0x49353C9A, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IWbemObjectSink = {0x7C857801, 0x7381, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; + const IID IID_IWbemObjectTextSrc = {0xBFBF883A, 0xCAD7, 0x11D3, [0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; + const IID IID_IWbemPath = {0x3BC15AF2, 0x736C, 0x477E, [0x9E, 0x51, 0x23, 0x8A, 0xF8, 0x66, 0x7D, 0xCC]}; + const IID IID_IWbemPathKeyList = {0x9AE62877, 0x7544, 0x4BB0, [0xAA, 0x26, 0xA1, 0x38, 0x24, 0x65, 0x9E, 0xD6]}; + const IID IID_IWbemPropertyProvider = {0xCE61E841, 0x65BC, 0x11D0, [0xB6, 0xBD, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; + const IID IID_IWbemProviderIdentity = {0x631F7D97, 0xD993, 0x11D2, [0xB3, 0x39, 0x00, 0x10, 0x5A, 0x1F, 0x4A, 0xAF]}; + const IID IID_IWbemProviderInit = {0x1BE41572, 0x91DD, 0x11D1, [0xAE, 0xB2, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IWbemProviderInitSink = {0x1BE41571, 0x91DD, 0x11D1, [0xAE, 0xB2, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IWbemQualifierSet = {0xDC12A680, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; + const IID IID_IWbemQuery = {0x81166F58, 0xDD98, 0x11D3, [0xA1, 0x20, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; + const IID IID_IWbemRawSdAccessor = {0xC1E2D759, 0xCABD, 0x11D3, [0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; + const IID IID_IWbemRefresher = {0x49353C99, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IWbemServices = {0x9556DC99, 0x828C, 0x11CF, [0xA3, 0x7E, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; + const IID IID_IWbemShutdown = {0xB7B31DF9, 0xD515, 0x11D3, [0xA1, 0x1C, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; + const IID IID_IWbemStatusCodeText = {0xEB87E1BC, 0x3233, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; + const IID IID_IWbemTransport = {0x553FE584, 0x2156, 0x11D0, [0xB6, 0xAE, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; + const IID IID_IWbemUnboundObjectSink = {0xE246107B, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID IID_IWBScriptControl = {0xA5170870, 0x0CF8, 0x11D1, [0x8B, 0x91, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; + const IID IID_IWCContextMenuCallback = {0x97DEDE64, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IWCPropertySheetCallback = {0x97DEDE60, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IWCWizard97Callback = {0x97DEDE67, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IWCWizardCallback = {0x97DEDE62, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IWebBridge = {0xAE24FDAD, 0x03C6, 0x11D1, [0x8B, 0x76, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; + const IID IID_IWebBrowser = {0xEAB22AC1, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; + const IID IID_IWebBrowser2 = {0xD30C1661, 0xCDAF, 0x11D0, [0x8A, 0x3E, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0x6E]}; + const IID IID_IWebBrowserApp = {0x0002DF05, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID IID_IWebWizardExtension = {0x0E6B3F66, 0x98D1, 0x48C0, [0xA2, 0x22, 0xFB, 0xDE, 0x74, 0xE2, 0xFB, 0xC5]}; + const IID IID_IWebWizardHost = {0x18BCC359, 0x4990, 0x4BFB, [0xB9, 0x51, 0x3C, 0x83, 0x70, 0x2B, 0xE5, 0xF9]}; + const IID IID_IWEExtendContextMenu = {0x97DEDE65, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IWEExtendPropertySheet = {0x97DEDE61, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IWEExtendWizard = {0x97DEDE63, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IWEExtendWizard97 = {0x97DEDE68, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_IWEInvokeCommand = {0x97DEDE66, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; + const IID IID_Iwfolders = {0xBAE31F98, 0x1B81, 0x11D2, [0xA9, 0x7A, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; + const IID IID_IWindowForBindingUI = {0x79EAC9D5, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IWinInetHttpInfo = {0x79EAC9D8, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IWinInetInfo = {0x79EAC9D6, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; + const IID IID_IWizardExtension = {0xC02EA696, 0x86CC, 0x491E, [0x9B, 0x23, 0x74, 0x39, 0x4A, 0x04, 0x44, 0xA8]}; + const IID IID_IWizardSite = {0x88960F5B, 0x422F, 0x4E7B, [0x80, 0x13, 0x73, 0x41, 0x53, 0x81, 0xC3, 0xC3]}; + const IID IID_IWMIExtension = {0xADC1F06E, 0x5C7E, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; + const IID IID_IWordBreaker = {0xD53552C8, 0x77E3, 0x101A, [0xB5, 0x52, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; + const IID IID_IWordSink = {0xCC907054, 0xC058, 0x101A, [0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; + const IID IID_IWrappedProtocol = {0x53C84785, 0x8425, 0x4DC5, [0x97, 0x1B, 0xE5, 0x8D, 0x9C, 0x19, 0xF9, 0xB6]}; + const IID IID_IXMLAttribute = {0xD4D4A0FC, 0x3B73, 0x11D1, [0xB2, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0x96]}; + const IID IID_IXMLDocument = {0xF52E2B61, 0x18A1, 0x11D1, [0xB1, 0x05, 0x00, 0x80, 0x5F, 0x49, 0x91, 0x6B]}; + const IID IID_IXMLDocument2 = {0x2B8DE2FE, 0x8D2D, 0x11D1, [0xB2, 0xFC, 0x00, 0xC0, 0x4F, 0xD9, 0x15, 0xA9]}; + const IID IID_IXMLDOMAttribute = {0x2933BF85, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMCDATASection = {0x2933BF8A, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMCharacterData = {0x2933BF84, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMComment = {0x2933BF88, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMDocument = {0x2933BF81, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMDocumentFragment = {0x3EFAA413, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; + const IID IID_IXMLDOMDocumentType = {0x2933BF8B, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMElement = {0x2933BF86, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMEntity = {0x2933BF8D, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMEntityReference = {0x2933BF8E, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMImplementation = {0x2933BF8F, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMNamedNodeMap = {0x2933BF83, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMNode = {0x2933BF80, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMNodeList = {0x2933BF82, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMNotation = {0x2933BF8C, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMParseError = {0x3EFAA426, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; + const IID IID_IXMLDOMProcessingInstruction = {0x2933BF89, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDOMText = {0x2933BF87, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; + const IID IID_IXMLDSOControl = {0x310AFA62, 0x0575, 0x11D2, [0x9C, 0xA9, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; + const IID IID_IXMLElement = {0x3F7F31AC, 0xE15F, 0x11D0, [0x9C, 0x25, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; + const IID IID_IXMLElement2 = {0x2B8DE2FF, 0x8D2D, 0x11D1, [0xB2, 0xFC, 0x00, 0xC0, 0x4F, 0xD9, 0x15, 0xA9]}; + const IID IID_IXMLElementCollection = {0x65725580, 0x9B5D, 0x11D0, [0x9B, 0xFE, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; + const IID IID_IXMLError = {0x948C5AD3, 0xC58D, 0x11D0, [0x9C, 0x0B, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; + const IID IID_IXMLGenericParse = {0xE4E23071, 0x4D07, 0x11D2, [0xAE, 0x76, 0x00, 0x80, 0xC7, 0x3B, 0xC1, 0x99]}; + const IID IID_IXMLHttpRequest = {0xED8C108D, 0x4349, 0x11D2, [0x91, 0xA4, 0x00, 0xC0, 0x4F, 0x79, 0x69, 0xE8]}; + const IID IID_IXMLNodeFactory = {0xD242361F, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; + const IID IID_IXMLNodeSource = {0xD242361D, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; + const IID IID_IXMLParser = {0xD242361E, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; + const IID IID_IXTLRuntime = {0x3EFAA425, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; + const IID IID_StdOle = {0x00020430, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID KSDATAFORMAT_SUBTYPE_DIRECTMUSIC = {0x1A82F8BC, 0x3F8B, 0x11D2, [0xB7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1]}; + const IID KSDATAFORMAT_SUBTYPE_MIDI = {0x1D262760, 0xE957, 0x11CF, [0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00]}; + const IID LIBID_Accessibility = {0x1EA4DBF0, 0x3C3B, 0x11CF, [0x81, 0x0C, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71]}; + const IID LIBID_ActiveIMM = {0x4955DD30, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; + const IID LIBID_ADs = {0x97D25DB0, 0x0363, 0x11CF, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; + const IID LIBID_ALGLib = {0xB6D1D098, 0xE235, 0x4B99, [0xBA, 0x98, 0x7C, 0x62, 0x4F, 0xD8, 0x75, 0xDB]}; + const IID LIBID_AutoDiscovery = {0x4EAFB888, 0x81CB, 0x4EBA, [0xBA, 0xC9, 0xDA, 0x25, 0x4E, 0x57, 0x21, 0xF1]}; + const IID LIBID_BackgroundCopyManager = {0x1DEEB74F, 0x7915, 0x4560, [0xB5, 0x58, 0x91, 0x8C, 0x83, 0xF1, 0x76, 0xA6]}; + const IID LIBID_BackgroundCopyManager1_5 = {0xEA9319EA, 0xC628, 0x480F, [0x83, 0x31, 0x76, 0x8F, 0xAC, 0x39, 0x7E, 0x4E]}; + const IID LIBID_BackgroundCopyQMgr = {0xF5B26DCB, 0xB37E, 0x4D7C, [0xAE, 0x7A, 0x1C, 0xB3, 0xFB, 0xEB, 0x18, 0x3E]}; + const IID LIBID_CHANNELMGR = {0x4804F2E0, 0xD16E, 0x11D0, [0x80, 0x2B, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; + const IID LIBID_CLADMWIZLib = {0x24F97140, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; + const IID LIBID_ClusCfgWizard = {0x6D01FEDC, 0x8D34, 0x4728, [0xAD, 0x0B, 0xB3, 0xA2, 0x1A, 0x10, 0x3B, 0x42]}; + const IID LIBID_CommonControlObjects = {0xBCADA15B, 0xB428, 0x420C, [0x8D, 0x28, 0x02, 0x35, 0x90, 0x92, 0x4C, 0x9F]}; + const IID LIBID_DirectAnimation = {0xBCBB1F74, 0xE384, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; + const IID LIBID_DWbemServices_v3 = {0xCB7CA031, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; + const IID LIBID_DXTMSFTLib = {0x5E77EB03, 0x937C, 0x11D1, [0xB0, 0x47, 0x00, 0xAA, 0x00, 0x3B, 0x60, 0x61]}; + const IID LIBID_DXTRANSLib = {0x54314D1D, 0x35FE, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; + const IID LIBID_DXTRANSPLib = {0x527A4DA4, 0x7F2C, 0x11D2, [0xB1, 0x2D, 0x00, 0x00, 0xF8, 0x1F, 0x59, 0x95]}; + const IID LIBID_EventQLib = {0xA70080F2, 0x403B, 0x11D1, [0x88, 0x36, 0x00, 0xA0, 0xC9, 0x49, 0xAC, 0x67]}; + const IID LIBID_IASPolicyLib = {0x6BC096A5, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; + const IID LIBID_IEXTagLib = {0x7E8BC440, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; + const IID LIBID_IMAPILib = {0xC49F2184, 0x50A7, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; + const IID LIBID_ImgUtilLib = {0xCF790840, 0x2DC4, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; + const IID LIBID_ITRKADMNLib = {0xA2531F35, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; + const IID LIBID_McastLib = {0x64217CC0, 0xA285, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; + const IID LIBID_MSHTML = {0x3050F1C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID LIBID_MSHTMLINTERNAL = {0x3050F7E1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID LIBID_MSTIME = {0x87C96271, 0xADDB, 0x4745, [0xB2, 0xE8, 0xDF, 0x88, 0xA8, 0x47, 0x2F, 0xD1]}; + const IID LIBID_MSXML = {0xD63E0CE2, 0xA0A2, 0x11D0, [0x9C, 0x02, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; + const IID LIBID_MultiLanguage = {0x275C23E0, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; + const IID LIBID_NATUPNPLib = {0x1C565858, 0xF302, 0x471E, [0xB4, 0x09, 0xF1, 0x80, 0xAA, 0x4A, 0xBE, 0xC6]}; + const IID LIBID_NETCONLib = {0x43E734CA, 0x043D, 0x4A70, [0x9A, 0x2C, 0xA8, 0xF2, 0x54, 0x06, 0x3D, 0x91]}; + const IID LIBID_PassiveSink = {0xE002EEEF, 0xE6EA, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; + const IID LIBID_ProcessDebugManagerLib = {0x78A51821, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; + const IID LIBID_RENDLib = {0xF1029E4D, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID LIBID_RTCCORELib = {0xCD260094, 0xDE10, 0x4AEE, [0xAC, 0x73, 0xEF, 0x87, 0xF6, 0xE1, 0x26, 0x83]}; + const IID LIBID_SDOIASLib = {0x81DDF732, 0x4AA8, 0x4A35, [0xBD, 0xFF, 0x8B, 0x42, 0xEF, 0xE7, 0xC6, 0x24]}; + const IID LIBID_SDPBLBLib = {0xC259D79A, 0xC8AB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; + const IID LIBID_SensEvents = {0xD597DEED, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; + const IID LIBID_SHDocVw = {0xEAB22AC0, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; + const IID LIBID_Shell32 = {0x50A7E9B0, 0x70EF, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; + const IID LIBID_ShellImageData = {0x0B8AFF06, 0x8DF0, 0x4F13, [0x8E, 0x25, 0x25, 0xB2, 0x31, 0x9C, 0x43, 0x6A]}; + const IID LIBID_ShellObjects = {0x50A7E9B1, 0x70EF, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; + const IID LIBID_SHGINALib = {0x0A055C02, 0xBABE, 0x4480, [0xBB, 0x7B, 0xA8, 0xEC, 0x72, 0x3C, 0xE9, 0xC0]}; + const IID LIBID_SubscriptionMgr = {0xC54FD88A, 0xFFA1, 0x11D0, [0xBC, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; + const IID LIBID_TAPI3Lib = {0x21D6D480, 0xA88B, 0x11D0, [0x83, 0xDD, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; + const IID LIBID_TERMMGRLib = {0x28DCD85B, 0xACA4, 0x11D0, [0xA0, 0x28, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; + const IID LIBID_UPnPHostLib = {0x204810B3, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; + const IID LIBID_UPNPLib = {0xDB3442A7, 0xA2E9, 0x4A59, [0x9C, 0xB5, 0xF5, 0xC1, 0xA5, 0xD9, 0x01, 0xE5]}; + const IID LIBID_VIRUSSCAN = {0x5F47DB70, 0xD9FE, 0x11D0, [0x95, 0x64, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; + const IID LIBID_WbemClient_v1 = {0x7EC196FE, 0x7005, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID LIBID_WbemProviders_v1 = {0x092DF710, 0x7010, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; + const IID LIBID_WbemScripting = {0x565783C6, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; + const IID LIBID_WbemTransports_v1 = {0x027947F3, 0xD731, 0x11CE, [0xA3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]}; + const IID LIBID_WbemUtilities_v1 = {0x226C9290, 0xDD96, 0x11D3, [0xA1, 0x20, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; + const IID LIBID_WebCheck = {0x10BD2E25, 0xF235, 0x11CF, [0xB5, 0xDD, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xEC]}; + const IID LIBID_WMIEXTENSIONLib = {0xE503D000, 0x5C7F, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; + const IID LIBID_XENROLLLib = {0x43F8F27B, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; + const IID LIBID_XMLPSR = {0xD242361C, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; + const IID MDGUID_MDX = {0xA07CCCD0, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; + const IID MDSCHEMA_ACTIONS = {0xA07CCD08, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; + const IID MDSCHEMA_COMMANDS = {0xA07CCD09, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; + const IID MDSCHEMA_CUBES = {0xC8B522D8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID MDSCHEMA_DIMENSIONS = {0xC8B522D9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID MDSCHEMA_FUNCTIONS = {0xA07CCD07, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; + const IID MDSCHEMA_HIERARCHIES = {0xC8B522DA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID MDSCHEMA_LEVELS = {0xC8B522DB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID MDSCHEMA_MEASURES = {0xC8B522DC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID MDSCHEMA_MEMBERS = {0xC8B522DE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID MDSCHEMA_PROPERTIES = {0xC8B522DD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; + const IID MDSCHEMA_SETS = {0xA07CCD0B, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; + const IID NAMEDTIMER_DRAW = {0x3050F362, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID NOTFCOOKIE_SCHEDULE_GROUP_DAILY = {0xD34F18B0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTFCOOKIE_SCHEDULE_GROUP_MANUAL = {0xD34F18B3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTFCOOKIE_SCHEDULE_GROUP_MONTHLY = {0xD34F18B2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTFCOOKIE_SCHEDULE_GROUP_WEEKLY = {0xD34F18B1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_11 = {0xD34F17FB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_12 = {0xD34F17FC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_13 = {0xD34F17FD, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_14 = {0xD34F17FE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_15 = {0xD34F17FF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_AGENT_INIT = {0x1E4A7390, 0xC70B, 0x11D0, [0x95, 0xF8, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xEC]}; + const IID NOTIFICATIONTYPE_AGENT_START = {0xD34F17EC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_ALERT = {0xD34F17E3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_ANOUNCMENT = {0xD34F17E1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_BEGIN_REPORT = {0xD34F17EE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_CONFIG_CHANGED = {0xD34F17F2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_CONNECT_TO_INTERNET = {0xD34F17F0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_d = {0xD34F17F8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_DISCONNECT_FROM_INTE = {0xD34F17F1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_e = {0xD34F17F9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_END_REPORT = {0xD34F17EF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_f = {0xD34F17FA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_GROUP_DONE = {0xD34F1885, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_GROUP_RESTART = {0xD34F1884, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_GROUP_START = {0xD34F1883, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_i6 = {0xD34F1886, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_i7 = {0xD34F1887, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_i8 = {0xD34F1888, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_i9 = {0xD34F1889, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_iA = {0xD34F188A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_iB = {0xD34F188B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_iC = {0xD34F188C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_iD = {0xD34F188D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_iE = {0xD34F188E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_iF = {0xD34F188F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_INET_IDLE = {0xD34F17E4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_INET_OFFLINE = {0xD34F17E5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_INET_ONLINE = {0xD34F17E6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_ITEM_DONE = {0xD34F1882, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_ITEM_RESTART = {0xD34F1881, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_ITEM_START = {0xD34F1880, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_NULL = {0xD34F17E0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_PROGRESS_REPORT = {0xD34F17F3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_0 = {0xD34F1800, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_1 = {0xD34F1801, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_2 = {0xD34F1802, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_3 = {0xD34F1803, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_4 = {0xD34F1804, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_5 = {0xD34F1805, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_6 = {0xD34F1806, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_7 = {0xD34F1807, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_8 = {0xD34F1808, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_9 = {0xD34F1809, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_A = {0xD34F180A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_B = {0xD34F180B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_C = {0xD34F180C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_D = {0xD34F180D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_E = {0xD34F180E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_START_F = {0xD34F180F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_TASK = {0xD34F17E2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_TASKS_ABORT = {0xD34F17E9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_TASKS_COMPLETED = {0xD34F17EA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_TASKS_ERROR = {0xD34F17F7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_TASKS_PROGRESS = {0xD34F17EB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_TASKS_RESUME = {0xD34F17E8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_TASKS_STARTED = {0xD34F17F6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_TASKS_SUSPEND = {0xD34F17E7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_USER_IDLE_BEGIN = {0xD34F17F4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID NOTIFICATIONTYPE_USER_IDLE_END = {0xD34F17F5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; + const IID OLE_DATAPATH_ALLIMAGE = {0x0002DE0E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_ALLMM = {0x0002DE18, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_ALLTEXT = {0x0002DE1E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_ANSITEXT = {0x0002DE19, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_AVI = {0x0002DE0F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_BASICAUDIO = {0x0002DE12, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_BIFF = {0x0002DE21, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_BMP = {0x0002DE01, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_CGM = {0x0002DE0B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_COMMONIMAGE = {0x0002DE0D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_DIB = {0x0002DE02, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_DIF = {0x0002DE1F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_ENHMF = {0x0002DE04, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_EPS = {0x0002DE0C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_GIF = {0x0002DE05, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_HTML = {0x0002DE1C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_JPEG = {0x0002DE06, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_MIDI = {0x0002DE13, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_MPEG = {0x0002DE10, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_PALETTE = {0x0002DE22, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_PCX = {0x0002DE09, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_PENDATA = {0x0002DE23, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_PICT = {0x0002DE0A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_POSTSCRIPT = {0x0002DE1D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_QUICKTIME = {0x0002DE11, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_RIFF = {0x0002DE15, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_RTF = {0x0002DE1B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_SOUND = {0x0002DE16, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_SYLK = {0x0002DE20, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_TIFF = {0x0002DE07, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_UNICODE = {0x0002DE1A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_VIDEO = {0x0002DE17, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_WAV = {0x0002DE14, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_WMF = {0x0002DE03, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLE_DATAPATH_XBM = {0x0002DE08, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; + const IID OLEDB_SVC_DSLPropertyPages = {0x51740C02, 0x7E8E, 0x11D2, [0xA0, 0x2D, 0x00, 0xC0, 0x4F, 0xA3, 0x73, 0x48]}; + const IID PSGUID_QUERY = {0x49691C90, 0x7E17, 0x101A, [0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9]}; + const IID RESCLASSTYPE_IPAddress = {0x57A80E0F, 0x6F18, 0x458B, [0xA7, 0x2A, 0xD1, 0x17, 0x0C, 0x47, 0x93, 0x90]}; + const IID RESCLASSTYPE_NetworkName = {0xBBA69EB9, 0xF5D0, 0x487B, [0x92, 0xAE, 0x1B, 0xA1, 0x0F, 0x39, 0x21, 0x58]}; + const IID RESCLASSTYPE_StorageDevice = {0x12453A47, 0x8C5E, 0x4837, [0xBA, 0xC6, 0xB2, 0x54, 0xB8, 0xF2, 0x64, 0xCC]}; + const IID RESTYPE_ClusterIPAddress = {0xE50DF832, 0x477C, 0x440C, [0xB7, 0xA3, 0x38, 0x23, 0xA6, 0xEF, 0x6C, 0xCB]}; + const IID RESTYPE_ClusterNetName = {0xB2897CCF, 0x8D2C, 0x4BC1, [0xB4, 0x96, 0x6E, 0x2B, 0xC7, 0xA0, 0xBB, 0x38]}; + const IID RESTYPE_ClusterQuorumDisk = {0xD9DDFB80, 0x0BDC, 0x40D4, [0xB3, 0x96, 0x1A, 0xFD, 0x77, 0xDD, 0xD1, 0x9C]}; + const IID RESTYPE_GenericScript = {0xF372184D, 0xDFDB, 0x4370, [0xA0, 0x05, 0xE1, 0xEF, 0x30, 0x1B, 0x23, 0xA4]}; + const IID RESTYPE_IPAddress = {0xE61ADE71, 0xC79A, 0x4FDA, [0xB1, 0xDB, 0xA9, 0xB8, 0xD2, 0x0C, 0x8B, 0x14]}; + const IID RESTYPE_LocalQuorum = {0xF004656D, 0x5B48, 0x4580, [0xA1, 0xF4, 0xC3, 0xEC, 0x14, 0x98, 0x3D, 0x1E]}; + const IID RESTYPE_MajorityNodeSet = {0x56BFAE11, 0xD2F7, 0x4F4F, [0x99, 0x52, 0x55, 0xAF, 0x19, 0xBA, 0xC3, 0xE9]}; + const IID RESTYPE_NetworkName = {0xC1D2FE1E, 0xD332, 0x445F, [0x8D, 0xA1, 0x12, 0xE5, 0xE2, 0xD3, 0x7C, 0xBF]}; + const IID RESTYPE_PhysicalDisk = {0xCC558763, 0x3386, 0x42EF, [0xB1, 0x50, 0xBE, 0x79, 0x33, 0x44, 0xD4, 0x5F]}; + const IID SID_CtxQueryAssociations = {0xFAADFC40, 0xB777, 0x4B69, [0xAA, 0x81, 0x77, 0x03, 0x5E, 0xF0, 0xE6, 0xE8]}; + const IID SID_SContainerDispatch = {0xB722BE00, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; + const IID SID_SDataPathBrowser = {0xFC4801A5, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; + const IID SID_SGetViewFromViewDual = {0x889A935D, 0x971E, 0x4B12, [0xB9, 0x0C, 0x24, 0xDF, 0xC9, 0xE1, 0xE5, 0xE8]}; + const IID SID_SHTMLEditServices = {0x3050F7F9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; + const IID SID_STopLevelBrowser = {0x4C96BE40, 0x915C, 0x11CF, [0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37]}; + const IID SID_STopWindow = {0x49E1B500, 0x4636, 0x11D3, [0x97, 0xF7, 0x00, 0xC0, 0x4F, 0x45, 0xD0, 0xB3]}; + const IID SID_SVersionHost = {0x371EA634, 0xDC5C, 0x11D1, [0xBA, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; + const IID TAPIMEDIATYPE_Audio = {0x028ED8C2, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID TAPIMEDIATYPE_DataModem = {0x028ED8C6, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID TAPIMEDIATYPE_G3Fax = {0x028ED8C7, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID TAPIMEDIATYPE_Video = {0x028ED8C4, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID TAPIPROTOCOL_H323 = {0x831CE2D7, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID TAPIPROTOCOL_Multicast = {0x831CE2D8, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID TAPIPROTOCOL_PSTN = {0x831CE2D6, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; + const IID TASK_AnalyzeCluster = {0x3140B5A6, 0x9AFA, 0x4588, [0x8C, 0xA0, 0x9B, 0xE8, 0xF8, 0xB6, 0x15, 0x06]}; + const IID TASK_CommitClusterChanges = {0x2D03030B, 0xF084, 0x4807, [0xBB, 0xAC, 0x94, 0x26, 0x9E, 0x50, 0xB5, 0x6F]}; + const IID TASKID_Major_Check_Cluster_Feasibili = {0xEBC8AEFF, 0x10C3, 0x4D5B, [0xAC, 0x17, 0xFC, 0x0F, 0x4C, 0x38, 0x71, 0xB7]}; + const IID TASKID_Major_Check_Node_Feasibility = {0xCC5E57B1, 0x4520, 0x4672, [0xB4, 0xBA, 0xA2, 0x88, 0xEC, 0x42, 0x94, 0x6E]}; + const IID TASKID_Major_Checking_For_Existing_Cl = {0xB8453B8F, 0x92FD, 0x4350, [0xA6, 0xD9, 0x55, 0x1F, 0xD0, 0x18, 0xB7, 0x91]}; + const IID TASKID_Major_Client_And_Server_Log = {0xCD36919C, 0x9F31, 0x46B4, [0xA2, 0x9D, 0xAC, 0x87, 0xF4, 0xE6, 0xCC, 0x93]}; + const IID TASKID_Major_Client_Log = {0x64ECA0EA, 0x9CB6, 0x4324, [0x97, 0x02, 0xDF, 0x15, 0xC6, 0x96, 0xC3, 0x0A]}; + const IID TASKID_Major_Configure_Cluster_Servic = {0x7C5F0774, 0x1611, 0x42B5, [0xAF, 0x3C, 0x6E, 0x12, 0x4A, 0xC4, 0xD3, 0x6B]}; + const IID TASKID_Major_Configure_Resource_Type = {0x6D47AF1F, 0x7F17, 0x4B80, [0x8F, 0xAB, 0x3A, 0x2D, 0x19, 0xB1, 0x23, 0x3D]}; + const IID TASKID_Major_Configure_Resources = {0x411BCDEC, 0x69D3, 0x4485, [0x8D, 0x5D, 0xE1, 0x9E, 0xE7, 0x7A, 0x6D, 0xD4]}; + const IID TASKID_Major_Establish_Connection = {0x93C32F99, 0x39CA, 0x4D38, [0x9D, 0x7F, 0x27, 0x07, 0xCA, 0x0E, 0xAF, 0x46]}; + const IID TASKID_Major_Find_Devices = {0x036BF567, 0x2377, 0x4BB3, [0x8A, 0xE1, 0xE4, 0x10, 0x4E, 0x2E, 0xB3, 0xC5]}; + const IID TASKID_Major_Reanalyze = {0xE25968DA, 0x9C7B, 0x42DB, [0xAD, 0xA9, 0xBC, 0x4E, 0x34, 0xF1, 0x7E, 0x6E]}; + const IID TASKID_Major_Server_Log = {0x05AA0768, 0x5F49, 0x49CD, [0xAF, 0xDC, 0x96, 0xF9, 0xD5, 0x18, 0x02, 0xD4]}; + const IID TASKID_Minor_Update_Progress = {0x2362D3DA, 0xA6A4, 0x4551, [0xB8, 0x46, 0x7B, 0xB3, 0xA1, 0x36, 0x5F, 0x56]}; + const IID TID_D3DRMAnimation = {0x3D82AB4F, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMAnimationKey = {0x10DD46A8, 0x775B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMAnimationOptions = {0xE2BF56C0, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMAnimationSet = {0x3D82AB50, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMAppData = {0xE5745280, 0xB24F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; + const IID TID_D3DRMBoolean = {0x537DA6A0, 0xCA37, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; + const IID TID_D3DRMBoolean2d = {0x4885AE63, 0x78E8, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMCamera = {0x3D82AB51, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMColorRGB = {0xD3E16E81, 0x7835, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMColorRGBA = {0x35FF44E0, 0x6C7C, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMCoords2d = {0xF6F23F44, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMExternalVisual = {0x98116AA0, 0xBDBA, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; + const IID TID_D3DRMFloatKeys = {0x10DD46A9, 0x775B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMFrame = {0x3D82AB46, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMFramePosition = {0xE2BF56C1, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMFrameRotation = {0xE2BF56C3, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMFrameTransformMatrix = {0xF6F23F41, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMFrameVelocity = {0xE2BF56C2, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMGuid = {0xA42790E0, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMIndexedColor = {0x1630B820, 0x7842, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMInfo = {0x2B957100, 0x9E9A, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMInlineData = {0x3A23EEA0, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMLight = {0x3D82AB4A, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMLightAttenuation = {0xA8A98BA0, 0xC5E5, 0x11CF, [0xB9, 0x41, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; + const IID TID_D3DRMLightPenumbra = {0xAED22741, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; + const IID TID_D3DRMLightRange = {0xAED22742, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; + const IID TID_D3DRMLightUmbra = {0xAED22740, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; + const IID TID_D3DRMMaterial = {0x3D82AB4D, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMMaterialAmbientColor = {0x01411840, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMaterialArray = {0x35FF44E1, 0x6C7C, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMaterialDiffuseColor = {0x01411841, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMaterialEmissiveColor = {0xD3E16E80, 0x7835, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMaterialPower = {0x01411843, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMaterialSpecularColor = {0x01411842, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMaterialWrap = {0x4885AE60, 0x78E8, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMatrix4x4 = {0xF6F23F45, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMesh = {0x3D82AB44, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMMeshFace = {0x3D82AB5F, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMMeshFaceWraps = {0xED1EC5C0, 0xC0A8, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; + const IID TID_D3DRMMeshMaterialList = {0xF6F23F42, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMeshNormals = {0xF6F23F43, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMeshTextureCoords = {0xF6F23F40, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMMeshVertexColors = {0x1630B821, 0x7842, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMProgressiveMesh = {0x8A63C360, 0x997D, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; + const IID TID_D3DRMPropertyBag = {0x7F0F21E1, 0xBFE1, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; + const IID TID_D3DRMRightHanded = {0x7F5D5EA0, 0xD53A, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; + const IID TID_D3DRMStringProperty = {0x7F0F21E0, 0xBFE1, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; + const IID TID_D3DRMTextureFilename = {0xA42790E1, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMTextureReference = {0xA42790E2, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMTimedFloatKeys = {0xF406B180, 0x7B3B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; + const IID TID_D3DRMUrl = {0x3A23EEA1, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_D3DRMVector = {0x3D82AB5E, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; + const IID TID_DXFILEHeader = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +} diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d new file mode 100644 index 0000000000..019c93ce57 --- /dev/null +++ b/src/core/sys/windows/vfw.d @@ -0,0 +1,2395 @@ +/***********************************************************************\ +* vfw.d * +* * +* Windows API header module * +* written in the D programming language * +* * +* Placed into public domain * +\***********************************************************************/ + +module win32.vfw; +pragma(lib, "vfw32"); + +private import + win32.commdlg, + win32.wingdi, + win32.mmsystem, + win32.unknwn, + win32.w32api, + win32.windef, + win32.winuser; + +extern(Windows) { + DWORD VideoForWindowsVersion(); + LONG InitVFW(); + LONG TermVFW(); +} + +DWORD MKFOURCC(char ch0, char ch1, char ch2, char ch3) { + return (cast(DWORD)ch0) | ((cast(DWORD)ch1) << 8) | ((cast(DWORD)ch2) << 16) | ((cast(DWORD)ch3) << 24); +} + +/** + * COMPMAN - Installable Compression Manager. + */ + +const ICVERSION = 0x0104; + +alias TypeDef!(HANDLE) HIC; + +const BI_1632 = 0x32333631; + +template aviTWOCC(char c0, char c1) { + const WORD aviTWOCC = c0 | (c1 << 8); +} + +const ICTYPE_VIDEO = mmioFOURCC!('v', 'i', 'd', 'c'); +const ICTYPE_AUDIO = mmioFOURCC!('a', 'u', 'd', 'c'); + +enum { + ICERR_OK = 0, + ICERR_DONTDRAW = 1, + ICERR_NEWPALETTE = 2, + ICERR_GOTOKEYFRAME = 3, + ICERR_STOPDRAWING = 4, +} + +const ICERR_UNSUPPORTED = -1; +const ICERR_BADFORMAT = -2; +const ICERR_MEMORY = -3; +const ICERR_INTERNAL = -4; +const ICERR_BADFLAGS = -5; +const ICERR_BADPARAM = -6; +const ICERR_BADSIZE = -7; +const ICERR_BADHANDLE = -8; +const ICERR_CANTUPDATE = -9; +const ICERR_ABORT = -10; +const ICERR_ERROR = -100; +const ICERR_BADBITDEPTH = -200; +const ICERR_BADIMAGESIZE = -201; + +const ICERR_CUSTOM = -400; + +enum { + ICMODE_COMPRESS = 1, + ICMODE_DECOMPRESS, + ICMODE_FASTDECOMPRESS, + ICMODE_QUERY, + ICMODE_FASTCOMPRESS, + ICMODE_DRAW = 8, +} + +const ICMODE_INTERNALF_FUNCTION32 = 0x8000; +const ICMODE_INTERNALF_MASK = 0x8000; + +enum { + AVIIF_LIST = 0x00000001, + AVIIF_TWOCC = 0x00000002, + AVIIF_KEYFRAME = 0x00000010, +} + +const ICQUALITY_LOW = 0; +const ICQUALITY_HIGH = 10000; +const ICQUALITY_DEFAULT = -1; + +enum { + ICM_USER = DRV_USER + 0x0000, + ICM_RESERVED_LOW = DRV_USER + 0x1000, + ICM_RESERVED_HIGH = DRV_USER + 0x2000, + ICM_RESERVED = ICM_RESERVED_LOW, +} + +// messages + +enum { + ICM_GETSTATE = ICM_RESERVED + 0, + ICM_SETSTATE = ICM_RESERVED + 1, + ICM_GETINFO = ICM_RESERVED + 2, + ICM_CONFIGURE = ICM_RESERVED + 10, + ICM_ABOUT = ICM_RESERVED + 11, + ICM_GETERRORTEXT = ICM_RESERVED + 12, + ICM_GETFORMATNAME = ICM_RESERVED + 20, + ICM_ENUMFORMATS = ICM_RESERVED + 21, + ICM_GETDEFAULTQUALITY = ICM_RESERVED + 30, + ICM_GETQUALITY = ICM_RESERVED + 31, + ICM_SETQUALITY = ICM_RESERVED + 32, + ICM_SET = ICM_RESERVED + 40, + ICM_GET = ICM_RESERVED + 41, +} + +const ICM_FRAMERATE = mmioFOURCC!('F','r','m','R'); +const ICM_KEYFRAMERATE = mmioFOURCC!('K','e','y','R'); + +// ICM specific messages. + +enum { + ICM_COMPRESS_GET_FORMAT = ICM_USER + 4, + ICM_COMPRESS_GET_SIZE = ICM_USER + 5, + ICM_COMPRESS_QUERY = ICM_USER + 6, + ICM_COMPRESS_BEGIN = ICM_USER + 7, + ICM_COMPRESS = ICM_USER + 8, + ICM_COMPRESS_END = ICM_USER + 9, + ICM_DECOMPRESS_GET_FORMAT = ICM_USER + 10, + ICM_DECOMPRESS_QUERY = ICM_USER + 11, + ICM_DECOMPRESS_BEGIN = ICM_USER + 12, + ICM_DECOMPRESS = ICM_USER + 13, + ICM_DECOMPRESS_END = ICM_USER + 14, + ICM_DECOMPRESS_SET_PALETTE = ICM_USER + 29, + ICM_DECOMPRESS_GET_PALETTE = ICM_USER + 30, + ICM_DRAW_QUERY = ICM_USER + 31, + ICM_DRAW_BEGIN = ICM_USER + 15, + ICM_DRAW_GET_PALETTE = ICM_USER + 16, + ICM_DRAW_UPDATE = ICM_USER + 17, + ICM_DRAW_START = ICM_USER + 18, + ICM_DRAW_STOP = ICM_USER + 19, + ICM_DRAW_BITS = ICM_USER + 20, + ICM_DRAW_END = ICM_USER + 21, + ICM_DRAW_GETTIME = ICM_USER + 32, + ICM_DRAW = ICM_USER + 33, + ICM_DRAW_WINDOW = ICM_USER + 34, + ICM_DRAW_SETTIME = ICM_USER + 35, + ICM_DRAW_REALIZE = ICM_USER + 36, + ICM_DRAW_FLUSH = ICM_USER + 37, + ICM_DRAW_RENDERBUFFER = ICM_USER + 38, + ICM_DRAW_START_PLAY = ICM_USER + 39, + ICM_DRAW_STOP_PLAY = ICM_USER + 40, + ICM_DRAW_SUGGESTFORMAT = ICM_USER + 50, + ICM_DRAW_CHANGEPALETTE = ICM_USER + 51, + ICM_DRAW_IDLE = ICM_USER + 52, + ICM_GETBUFFERSWANTED = ICM_USER + 41, + ICM_GETDEFAULTKEYFRAMERATE = ICM_USER + 42, + ICM_DECOMPRESSEX_BEGIN = ICM_USER + 60, + ICM_DECOMPRESSEX_QUERY = ICM_USER + 61, + ICM_DECOMPRESSEX = ICM_USER + 62, + ICM_DECOMPRESSEX_END = ICM_USER + 63, + ICM_COMPRESS_FRAMES_INFO = ICM_USER + 70, + ICM_COMPRESS_FRAMES = ICM_USER + 71, + ICM_SET_STATUS_PROC = ICM_USER + 72, +} + +struct ICOPEN { + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwVersion; + DWORD dwFlags; + LRESULT dwError; + LPVOID pV1Reserved; + LPVOID pV2Reserved; + DWORD dnDevNode; +} + +struct ICINFO { + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwVersion; + DWORD dwVersionICM; + WCHAR[16] szName; + WCHAR[128] szDescription; + WCHAR[128] szDriver; +} + +enum { + VIDCF_QUALITY = 0x0001, + VIDCF_CRUNCH = 0x0002, + VIDCF_TEMPORAL = 0x0004, + VIDCF_COMPRESSFRAMES = 0x0008, + VIDCF_DRAW = 0x0010, + VIDCF_FASTTEMPORALC = 0x0020, + VIDCF_FASTTEMPORALD = 0x0080, +} + +const ICCOMPRESS_KEYFRAME = 0x00000001L; + +struct ICCOMPRESS { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPDWORD lpckid; + LPDWORD lpdwFlags; + LONG lFrameNum; + DWORD dwFrameSize; + DWORD dwQuality; + LPBITMAPINFOHEADER lpbiPrev; + LPVOID lpPrev; +} + +const ICCOMPRESSFRAMES_PADDING = 0x00000001; + +struct ICCOMPRESSFRAMES { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPARAM lOutput; + LPBITMAPINFOHEADER lpbiInput; + LPARAM lInput; + LONG lStartFrame; + LONG lFrameCount; + LONG lQuality; + LONG lDataRate; + LONG lKeyRate; + DWORD dwRate; + DWORD dwScale; DWORD dwOverheadPerFrame; + DWORD dwReserved2; + + LONG function(LPARAM lInput, LONG lFrame, LPVOID lpBits, LONG len) GetData; + LONG function(LPARAM lOutput, LONG lFrame, LPVOID lpBits, LONG len) PutData; +} + +enum { + ICSTATUS_START = 0, + ICSTATUS_STATUS = 1, + ICSTATUS_END = 2, + ICSTATUS_ERROR = 3, + ICSTATUS_YIELD = 4, +} + +struct ICSETSTATUSPROC { + DWORD dwFlags; + LPARAM lParam; + LONG function(LPARAM lParam, UINT message, LONG l) Status; +} + +enum { + ICDECOMPRESS_NOTKEYFRAME = 0x08000000, + ICDECOMPRESS_NULLFRAME = 0x10000000, + ICDECOMPRESS_PREROLL = 0x20000000, + ICDECOMPRESS_UPDATE = 0x40000000, + ICDECOMPRESS_HURRYUP = 0x80000000, +} + +struct ICDECOMPRESS { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + DWORD ckid; +} + +struct ICDECOMPRESSEX { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiSrc; + LPVOID lpSrc; + LPBITMAPINFOHEADER lpbiDst; + LPVOID lpDst; + int xDst; + int yDst; + int dxDst; + int dyDst; + int xSrc; + int ySrc; + int dxSrc; + int dySrc; +} + +enum { + ICDRAW_QUERY = 0x00000001, + ICDRAW_FULLSCREEN = 0x00000002, + ICDRAW_HDC = 0x00000004, + ICDRAW_ANIMATE = 0x00000008, + ICDRAW_CONTINUE = 0x00000010, + ICDRAW_MEMORYDC = 0x00000020, + ICDRAW_UPDATING = 0x00000040, + ICDRAW_RENDER = 0x00000080, + ICDRAW_BUFFER = 0x00000100, +} + +struct ICDRAWBEGIN { + DWORD dwFlags; + HPALETTE hpal; + HWND hwnd; + HDC hdc; + int xDst; + int yDst; + int dxDst; + int dyDst; + LPBITMAPINFOHEADER lpbi; + int xSrc; + int ySrc; + int dxSrc; + int dySrc; + DWORD dwRate; + DWORD dwScale; +} + +enum { + ICDRAW_NOTKEYFRAME = 0x08000000, + ICDRAW_NULLFRAME = 0x10000000, + ICDRAW_PREROLL = 0x20000000, + ICDRAW_UPDATE = 0x40000000, + ICDRAW_HURRYUP = 0x80000000, +} + +struct ICDRAW { + DWORD dwFlags; + LPVOID lpFormat; + LPVOID lpData; + DWORD cbData; + LONG lTime; +} + +struct ICDRAWSUGGEST { + LPBITMAPINFOHEADER lpbiIn; + LPBITMAPINFOHEADER lpbiSuggest; + int dxSrc; + int dySrc; + int dxDst; + int dyDst; + HIC hicDecompressor; +} + +struct ICPALETTE { + DWORD dwFlags; + int iStart; + int iLen; + LPPALETTEENTRY lppe; +} + + +/** + * ICM function declarations + */ + +extern (Windows) { + BOOL ICInfo(DWORD fccType, DWORD fccHandler, ICINFO *lpicinfo); + BOOL ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags); + BOOL ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags); + LRESULT ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb); + HIC ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode); + HIC ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler); + LRESULT ICClose(HIC hic); + LRESULT ICSendMessage(HIC hic, UINT msg, DWORD_PTR dw1, DWORD_PTR dw2); +} + +enum { + ICINSTALL_FUNCTION = 0x0001, + ICINSTALL_DRIVER = 0x0002, + ICINSTALL_HDRV = 0x0004, + ICINSTALL_UNICODE = 0x8000, + ICINSTALL_DRIVERW = 0x8002, +} + +// query macros + +const ICMF_CONFIGURE_QUERY = 0x00000001; +const ICMF_ABOUT_QUERY = 0x00000001; + +DWORD ICQueryAbout(HIC hic) { + return ICSendMessage(hic, ICM_ABOUT, -1, ICMF_ABOUT_QUERY) == ICERR_OK; +} + +DWORD ICAbout(HIC hic, HWND hwnd) { + return cast(DWORD) ICSendMessage(hic, ICM_ABOUT, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); +} + +DWORD ICQueryConfigure(HIC hic) { + return (ICSendMessage(hic, ICM_CONFIGURE, -1, ICMF_CONFIGURE_QUERY) == ICERR_OK); +} + +DWORD ICConfigure(HIC hic, HWND hwnd) { + return cast(DWORD) ICSendMessage(hic, ICM_CONFIGURE, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); +} + +DWORD ICGetState(HIC hic, LPVOID pv, DWORD_PTR cb) { + return cast(DWORD) ICSendMessage(hic, ICM_GETSTATE, cast(DWORD_PTR) pv, cb); +} + +DWORD ICSetState(HIC hic, LPVOID pv, DWORD_PTR cb) { + return cast(DWORD) ICSendMessage(hic, ICM_SETSTATE, cast(DWORD_PTR) pv, cb); +} + +DWORD ICGetStateSize(HIC hic) { + return ICGetState(hic, null, 0); +} + +DWORD dwICValue; + +DWORD ICGetDefaultQuality(HIC hic) { + ICSendMessage(hic, ICM_GETDEFAULTQUALITY, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); + return dwICValue; +} + +DWORD ICGetDefaultKeyFrameRate(HIC hic) { + ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); + return dwICValue; +} + +DWORD ICDrawWindow(HIC hic, LPVOID prc) { + return cast(DWORD) ICSendMessage(hic, ICM_DRAW_WINDOW, cast(DWORD_PTR) prc, RECT.sizeof); +} + +extern (Windows) { + DWORD ICCompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiOutput, LPVOID lpData, + LPBITMAPINFOHEADER lpbiInput, LPVOID lpBits, LPDWORD lpckid, LPDWORD lpdwFlags, + LONG lFrameNum, DWORD dwFrameSize, DWORD dwQuality, LPBITMAPINFOHEADER lpbiPrev, LPVOID lpPrev); +} + +LRESULT ICCompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_COMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICCompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_COMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICCompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +DWORD ICCompressGetFormatSize(HIC hic, LPVOID lpbi) { + return cast(DWORD)ICCompressGetFormat(hic, lpbi, null); +} +DWORD ICCompressGetSize(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return cast(DWORD)ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICCompressEnd(HIC hic) { + return ICSendMessage(hic, ICM_COMPRESS_END, 0, 0); +} + +extern (Windows) { + DWORD ICDecompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiFormat, LPVOID lpData, LPBITMAPINFOHEADER lpbi, LPVOID lpBits); +} + +LRESULT ICDecompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICDecompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_DECOMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LONG ICDecompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return cast(LONG)ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LONG ICDecompressGetFormatSize(HIC hic, LPVOID lpbi) { + return ICDecompressGetFormat(hic, lpbi, null); +} +LRESULT ICDecompressGetPalette(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICDecompressSetPalette(HIC hic, LPVOID lpbiPalette) { + return ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, cast(DWORD_PTR)lpbiPalette, 0); +} +LRESULT ICDecompressEnd(HIC hic) { + return ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0); +} + +LRESULT ICDecompressEx(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDecompressExBegin(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDecompressExQuery(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDecompressExEnd(HIC hic) { + return ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0); +} + +extern (Windows) { + DWORD ICDrawBegin(HIC hic, DWORD dwFlags, HPALETTE hpal, HWND hwnd, HDC hdc, + int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, + int xSrc, int ySrc, int dxSrc, int dySrc, DWORD dwRate, DWORD dwScale); +} + +extern (Windows) { + DWORD ICDraw(HIC hic, DWORD dwFlags, LPVOID lpFormat, LPVOID lpData, DWORD cbData, LONG lTime); +} + +LRESULT ICDrawSuggestFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, + int dxSrc, int dySrc, int dxDst, int dyDst, HIC hicDecomp) { + ICDRAWSUGGEST ic; + + ic.lpbiIn = lpbiIn; + ic.lpbiSuggest = lpbiOut; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + ic.hicDecompressor = hicDecomp; + + return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDrawQuery(HIC hic, LPVOID lpbiInput) { + return ICSendMessage(hic, ICM_DRAW_QUERY, cast(DWORD_PTR)lpbiInput, 0L); +} +LRESULT ICDrawChangePalette(HIC hic, LPVOID lpbiInput) { + return ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, cast(DWORD_PTR)lpbiInput, 0L); +} +LRESULT ICGetBuffersWanted(HIC hic, LPVOID lpdwBuffers) { + return ICSendMessage(hic, ICM_GETBUFFERSWANTED, cast(DWORD_PTR)lpdwBuffers, 0); +} +LRESULT ICDrawEnd(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_END, 0, 0); +} +LRESULT ICDrawStart(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_START, 0, 0); +} +LRESULT ICDrawStartPlay(HIC hic, DWORD lFrom, DWORD lTo) { + return ICSendMessage(hic, ICM_DRAW_START_PLAY, cast(DWORD_PTR)lFrom, cast(DWORD_PTR)lTo); +} +LRESULT ICDrawStop(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_STOP, 0, 0); +} +LRESULT ICDrawStopPlay(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0); +} +LRESULT ICDrawGetTime(HIC hic, LPVOID lplTime) { + return ICSendMessage(hic, ICM_DRAW_GETTIME, cast(DWORD_PTR)lplTime, 0); +} +LRESULT ICDrawSetTime(HIC hic, DWORD lTime) { + return ICSendMessage(hic, ICM_DRAW_SETTIME, cast(DWORD_PTR)lTime, 0); +} +LRESULT ICDrawRealize(HIC hic, HDC hdc, BOOL fBackground) { + return ICSendMessage(hic, ICM_DRAW_REALIZE, cast(DWORD_PTR)hdc, cast(DWORD_PTR)fBackground); +} +LRESULT ICDrawFlush(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0); +} +LRESULT ICDrawRenderBuffer(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0); +} + +LRESULT ICSetStatusProc(HIC hic, DWORD dwFlags, LRESULT lParam, LONG function(LPARAM, UINT, LONG) fpfnStatus) { + ICSETSTATUSPROC ic; + + ic.dwFlags = dwFlags; + ic.lParam = lParam; + ic.Status = fpfnStatus; + + return ICSendMessage(hic, ICM_SET_STATUS_PROC, cast(DWORD_PTR)&ic, ic.sizeof); +} + +HIC ICDecompressOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut) { + return ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS); +} + +HIC ICDrawOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn) { + return ICLocate(fccType, fccHandler, lpbiIn, null, ICMODE_DRAW); +} + +extern (Windows) { + HIC ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags); + HIC ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy); + HANDLE ICImageCompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut, LONG lQuality, LONG* plSize); + HANDLE ICImageDecompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut); +} + +struct COMPVARS { + LONG cbSize = this.sizeof; + DWORD dwFlags; + HIC hic; + DWORD fccType; + DWORD fccHandler; + LPBITMAPINFO lpbiIn; + LPBITMAPINFO lpbiOut; + LPVOID lpBitsOut; + LPVOID lpBitsPrev; + LONG lFrame; + LONG lKey; + LONG lDataRate; + LONG lQ; + LONG lKeyCount; + LPVOID lpState; + LONG cbState; +} +alias COMPVARS* PCOMPVARS; + +const ICMF_COMPVARS_VALID = 0x00000001; + +extern (Windows) { + BOOL ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData, PCOMPVARS pc, LPSTR lpszTitle); +} + +enum { + ICMF_CHOOSE_KEYFRAME = 0x0001, + ICMF_CHOOSE_DATARATE = 0x0002, + ICMF_CHOOSE_PREVIEW = 0x0004, + ICMF_CHOOSE_ALLCOMPRESSORS = 0x0008, +} + +extern (Windows) { + BOOL ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn); + void ICSeqCompressFrameEnd(PCOMPVARS pc); + LPVOID ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits, BOOL* pfKey, LONG* plSize); + void ICCompressorFree(PCOMPVARS pc); +} + +mixin DECLARE_HANDLE!("HDRAWDIB"); + +enum { + DDF_0001 = 0x0001, + DDF_UPDATE = 0x0002, + DDF_SAME_HDC = 0x0004, + DDF_SAME_DRAW = 0x0008, + DDF_DONTDRAW = 0x0010, + DDF_ANIMATE = 0x0020, + DDF_BUFFER = 0x0040, + DDF_JUSTDRAWIT = 0x0080, + DDF_FULLSCREEN = 0x0100, + DDF_BACKGROUNDPAL = 0x0200, + DDF_NOTKEYFRAME = 0x0400, + DDF_HURRYUP = 0x0800, + DDF_HALFTONE = 0x1000, + DDF_2000 = 0x2000, + DDF_PREROLL = DDF_DONTDRAW, + DDF_SAME_DIB = DDF_SAME_DRAW, + DDF_SAME_SIZE = DDF_SAME_DRAW, +} + +extern (Windows) { + BOOL DrawDibInit(); + HDRAWDIB DrawDibOpen(); + BOOL DrawDibClose(HDRAWDIB hdd); + LPVOID DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags); + UINT DrawDibError(HDRAWDIB hdd); + HPALETTE DrawDibGetPalette(HDRAWDIB hdd); + BOOL DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal); + BOOL DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe); + UINT DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground); + BOOL DrawDibStart(HDRAWDIB hdd, DWORD rate); + BOOL DrawDibStop(HDRAWDIB hdd); + BOOL DrawDibBegin(HDRAWDIB hdd, HDC hdc, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, int dxSrc, int dySrc, UINT wFlags); + BOOL DrawDibDraw(HDRAWDIB hdd, HDC hdc, int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, + LPVOID lpBits, int xSrc, int ySrc, int dxSrc, int dySrc, UINT wFlags); +} + +BOOL DrawDibUpdate(HDRAWDIB hdd, HDC hdc, int x, int y) { + return DrawDibDraw(hdd, hdc, x, y, 0, 0, null, null, 0, 0, 0, 0, DDF_UPDATE); +} + +extern (Windows) { + BOOL DrawDibEnd(HDRAWDIB hdd); +} + +struct DRAWDIBTIME { + LONG timeCount; + LONG timeDraw; + LONG timeDecompress; + LONG timeDither; + LONG timeStretch; + LONG timeBlt; + LONG timeSetDIBits; +} +alias DRAWDIBTIME* LPDRAWDIBTIME; + +extern (Windows) { + BOOL DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime); +} + +enum { + PD_CAN_DRAW_DIB = 0x0001, + PD_CAN_STRETCHDIB = 0x0002, + PD_STRETCHDIB_1_1_OK = 0x0004, + PD_STRETCHDIB_1_2_OK = 0x0008, + PD_STRETCHDIB_1_N_OK = 0x0010, +} + +extern (Windows) { + LRESULT DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi); + void StretchDIB(LPBITMAPINFOHEADER biDst, LPVOID lpDst, int DstX, int DstY, + int DstXE, int DstYE, LPBITMAPINFOHEADER biSrc, LPVOID lpSrc, + int SrcX, int SrcY, int SrcXE, int SrcYE); +} + +alias DWORD FOURCC; + +alias WORD TWOCC; + +const formtypeAVI = mmioFOURCC!('A', 'V', 'I', ' '); +const listtypeAVIHEADER = mmioFOURCC!('h', 'd', 'r', 'l'); +const ckidAVIMAINHDR = mmioFOURCC!('a', 'v', 'i', 'h'); +const listtypeSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'l'); +const ckidSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'h'); +const ckidSTREAMFORMAT = mmioFOURCC!('s', 't', 'r', 'f'); +const ckidSTREAMHANDLERDATA = mmioFOURCC!('s', 't', 'r', 'd'); +const ckidSTREAMNAME = mmioFOURCC!('s', 't', 'r', 'n'); +const listtypeAVIMOVIE = mmioFOURCC!('m', 'o', 'v', 'i'); +const listtypeAVIRECORD = mmioFOURCC!('r', 'e', 'c', ' '); +const ckidAVINEWINDEX = mmioFOURCC!('i', 'd', 'x', '1'); +const streamtypeVIDEO = mmioFOURCC!('v', 'i', 'd', 's'); +const streamtypeAUDIO = mmioFOURCC!('a', 'u', 'd', 's'); +const streamtypeMIDI = mmioFOURCC!('m', 'i', 'd', 's'); +const streamtypeTEXT = mmioFOURCC!('t', 'x', 't', 's'); + +const cktypeDIBbits = aviTWOCC!('d', 'b'); +const cktypeDIBcompressed = aviTWOCC!('d', 'c'); +const cktypePALchange = aviTWOCC!('p', 'c'); +const cktypeWAVEbytes = aviTWOCC!('w', 'b'); + +const ckidAVIPADDING = mmioFOURCC!('J', 'U', 'N', 'K'); + +DWORD FromHex(char n) { + return (n >= 'A') ? n + 10 - 'A' : n - '0'; +} + +WORD StreamFromFOURCC(DWORD fcc) { + return cast(WORD)((FromHex(LOBYTE(LOWORD(fcc))) << 4) + (FromHex(HIBYTE(LOWORD(fcc))))); +} + +WORD TWOCCFromFOURCC(DWORD fcc) { + return HIWORD(fcc); +} + +BYTE ToHex(DWORD n) { + return cast(BYTE)((n > 9) ? n - 10 + 'A' : n + '0'); +} + +DWORD MAKEAVICKID(WORD tcc, WORD stream) { + return MAKELONG(cast(WORD)((ToHex(stream & 0x0f) << 8) | (ToHex((stream & 0xf0) >> 4))), tcc); +} + +enum { + AVIF_HASINDEX = 0x00000010, + AVIF_MUSTUSEINDEX = 0x00000020, + AVIF_ISINTERLEAVED = 0x00000100, + AVIF_WASCAPTUREFILE = 0x00010000, + AVIF_COPYRIGHTED = 0x00020000, +} + +const AVI_HEADERSIZE = 2048; + +struct MainAVIHeader { + DWORD dwMicroSecPerFrame; + DWORD dwMaxBytesPerSec; + DWORD dwPaddingGranularity; + DWORD dwFlags; + DWORD dwTotalFrames; + DWORD dwInitialFrames; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD[4] dwReserved; +} + +const AVISF_DISABLED = 0x00000001; + +const AVISF_VIDEO_PALCHANGES = 0x00010000; + +struct AVIStreamHeader { + FOURCC fccType; + FOURCC fccHandler; + DWORD dwFlags; + WORD wPriority; + WORD wLanguage; + DWORD dwInitialFrames; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; +} + +enum { + AVIIF_FIRSTPART = 0x00000020L, + AVIIF_LASTPART = 0x00000040L, + AVIIF_MIDPART = (AVIIF_LASTPART|AVIIF_FIRSTPART), + AVIIF_NOTIME = 0x00000100L, + AVIIF_COMPUSE = 0x0FFF0000L, +} + +struct AVIINDEXENTRY { + DWORD ckid; + DWORD dwFlags; + DWORD dwChunkOffset; + DWORD dwChunkLength; +} + +struct AVIPALCHANGE { + BYTE bFirstEntry; + BYTE bNumEntries; + WORD wFlags; + PALETTEENTRY[1] _peNew; + PALETTEENTRY* peNew() { return _peNew.ptr; } +} + +const AVIGETFRAMEF_BESTDISPLAYFMT = 1; + +struct AVISTREAMINFOW { + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + WCHAR[64] szName; +} +alias AVISTREAMINFOW* LPAVISTREAMINFOW; + +struct AVISTREAMINFOA { + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + char[64] szName; +} +alias AVISTREAMINFOA* LPAVISTREAMINFOA; + +version(Unicode) { + alias AVISTREAMINFOW AVISTREAMINFO; + alias LPAVISTREAMINFOW LPAVISTREAMINFO; +} else { // Unicode + alias AVISTREAMINFOA AVISTREAMINFO; + alias LPAVISTREAMINFOA LPAVISTREAMINFO; +} + +const AVISTREAMINFO_DISABLED = 0x00000001; +const AVISTREAMINFO_FORMATCHANGES = 0x00010000; + +struct AVIFILEINFOW { + DWORD dwMaxBytesPerSec; + DWORD dwFlags; + DWORD dwCaps; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwScale; + DWORD dwRate; + DWORD dwLength; + DWORD dwEditCount; + WCHAR[64] szFileType; +} +alias AVIFILEINFOW* LPAVIFILEINFOW; + +struct AVIFILEINFOA { + DWORD dwMaxBytesPerSec; + DWORD dwFlags; + DWORD dwCaps; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwScale; + DWORD dwRate; + DWORD dwLength; + DWORD dwEditCount; + char[64] szFileType; +} +alias AVIFILEINFOA* LPAVIFILEINFOA; + +version(Unicode) { + alias AVIFILEINFOW AVIFILEINFO; + alias LPAVIFILEINFOW LPAVIFILEINFO; +} else { // Unicode + alias AVIFILEINFOA AVIFILEINFO; + alias LPAVIFILEINFOA LPAVIFILEINFO; +} + +enum { + AVIFILEINFO_HASINDEX = 0x00000010, + AVIFILEINFO_MUSTUSEINDEX = 0x00000020, + AVIFILEINFO_ISINTERLEAVED = 0x00000100, + AVIFILEINFO_WASCAPTUREFILE = 0x00010000, + AVIFILEINFO_COPYRIGHTED = 0x00020000, +} + +enum { + AVIFILECAPS_CANREAD = 0x00000001, + AVIFILECAPS_CANWRITE = 0x00000002, + AVIFILECAPS_ALLKEYFRAMES = 0x00000010, + AVIFILECAPS_NOCOMPRESSION = 0x00000020, +} + +extern (Windows) { + alias BOOL function(int) AVISAVECALLBACK; +} + +struct AVICOMPRESSOPTIONS { + DWORD fccType; + DWORD fccHandler; + DWORD dwKeyFrameEvery; + DWORD dwQuality; + DWORD dwBytesPerSecond; + DWORD dwFlags; + LPVOID lpFormat; + DWORD cbFormat; + LPVOID lpParms; + DWORD cbParms; + DWORD dwInterleaveEvery; +} +alias AVICOMPRESSOPTIONS* LPAVICOMPRESSOPTIONS; + +enum { + AVICOMPRESSF_INTERLEAVE = 0x00000001, + AVICOMPRESSF_DATARATE = 0x00000002, + AVICOMPRESSF_KEYFRAMES = 0x00000004, + AVICOMPRESSF_VALID = 0x00000008, +} + +/+ TODO: +DECLARE_INTERFACE_(IAVIStream, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Create) (THIS_ LPARAM lParam1, LPARAM lParam2) PURE ; + STDMETHOD(Info) (THIS_ AVISTREAMINFOW FAR * psi, LONG lSize) PURE ; + STDMETHOD_(LONG, FindSample)(THIS_ LONG lPos, LONG lFlags) PURE ; + STDMETHOD(ReadFormat) (THIS_ LONG lPos, + LPVOID lpFormat, LONG FAR *lpcbFormat) PURE ; + STDMETHOD(SetFormat) (THIS_ LONG lPos, + LPVOID lpFormat, LONG cbFormat) PURE ; + STDMETHOD(Read) (THIS_ LONG lStart, LONG lSamples, + LPVOID lpBuffer, LONG cbBuffer, + LONG FAR * plBytes, LONG FAR * plSamples) PURE ; + STDMETHOD(Write) (THIS_ LONG lStart, LONG lSamples, + LPVOID lpBuffer, LONG cbBuffer, + DWORD dwFlags, + LONG FAR *plSampWritten, + LONG FAR *plBytesWritten) PURE ; + STDMETHOD(Delete) (THIS_ LONG lStart, LONG lSamples) PURE; + STDMETHOD(ReadData) (THIS_ DWORD fcc, LPVOID lp, LONG FAR *lpcb) PURE ; + STDMETHOD(WriteData) (THIS_ DWORD fcc, LPVOID lp, LONG cb) PURE ; +#ifdef _WIN32 + STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, + LONG cbInfo) PURE; +#else + STDMETHOD(Reserved1) (THIS) PURE; + STDMETHOD(Reserved2) (THIS) PURE; + STDMETHOD(Reserved3) (THIS) PURE; + STDMETHOD(Reserved4) (THIS) PURE; + STDMETHOD(Reserved5) (THIS) PURE; +#endif +}; + +alias TypeDef!(IAVIStream FAR*) PAVISTREAM; + +#undef INTERFACE +#define INTERFACE IAVIStreaming + +DECLARE_INTERFACE_(IAVIStreaming, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Begin) (THIS_ + LONG lStart, + LONG lEnd, + LONG lRate) PURE; + STDMETHOD(End) (THIS) PURE; +}; + +alias TypeDef!(IAVIStreaming FAR*) PAVISTREAMING; + + +#undef INTERFACE +#define INTERFACE IAVIEditStream + +DECLARE_INTERFACE_(IAVIEditStream, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Cut) (THIS_ LONG FAR *plStart, + LONG FAR *plLength, + PAVISTREAM FAR * ppResult) PURE; + STDMETHOD(Copy) (THIS_ LONG FAR *plStart, + LONG FAR *plLength, + PAVISTREAM FAR * ppResult) PURE; + STDMETHOD(Paste) (THIS_ LONG FAR *plPos, + LONG FAR *plLength, + PAVISTREAM pstream, + LONG lStart, + LONG lEnd) PURE; + STDMETHOD(Clone) (THIS_ PAVISTREAM FAR *ppResult) PURE; + STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, + LONG cbInfo) PURE; +}; + +alias TypeDef!(IAVIEditStream FAR*) PAVIEDITSTREAM; + +#undef INTERFACE +#define INTERFACE IAVIPersistFile + +DECLARE_INTERFACE_(IAVIPersistFile, IPersistFile) +{ + STDMETHOD(Reserved1)(THIS) PURE; +}; + +alias TypeDef!(IAVIPersistFile FAR*) PAVIPERSISTFILE; + +#undef INTERFACE +#define INTERFACE IAVIFile +#define PAVIFILE IAVIFile FAR* + +DECLARE_INTERFACE_(IAVIFile, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Info) (THIS_ + AVIFILEINFOW FAR * pfi, + LONG lSize) PURE; + STDMETHOD(GetStream) (THIS_ + PAVISTREAM FAR * ppStream, + DWORD fccType, + LONG lParam) PURE; + STDMETHOD(CreateStream) (THIS_ + PAVISTREAM FAR * ppStream, + AVISTREAMINFOW FAR * psi) PURE; + STDMETHOD(WriteData) (THIS_ + DWORD ckid, + LPVOID lpData, + LONG cbData) PURE; + STDMETHOD(ReadData) (THIS_ + DWORD ckid, + LPVOID lpData, + LONG FAR *lpcbData) PURE; + STDMETHOD(EndRecord) (THIS) PURE; + STDMETHOD(DeleteStream) (THIS_ + DWORD fccType, + LONG lParam) PURE; +}; + +#undef PAVIFILE +alias TypeDef!(IAVIFile FAR*) PAVIFILE; + +#undef INTERFACE +#define INTERFACE IGetFrame +#define PGETFRAME IGetFrame FAR* + +DECLARE_INTERFACE_(IGetFrame, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD_(LPVOID,GetFrame) (THIS_ LONG lPos) PURE; + + STDMETHOD(Begin) (THIS_ LONG lStart, LONG lEnd, LONG lRate) PURE; + STDMETHOD(End) (THIS) PURE; + + STDMETHOD(SetFormat) (THIS_ LPBITMAPINFOHEADER lpbi, LPVOID lpBits, int x, int y, int dx, int dy) PURE; +}; + +#undef PGETFRAME +alias TypeDef!(IGetFrame FAR*) PGETFRAME; + +#define DEFINE_AVIGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46) + +DEFINE_AVIGUID(IID_IAVIFile, 0x00020020, 0, 0); +DEFINE_AVIGUID(IID_IAVIStream, 0x00020021, 0, 0); +DEFINE_AVIGUID(IID_IAVIStreaming, 0x00020022, 0, 0); +DEFINE_AVIGUID(IID_IGetFrame, 0x00020023, 0, 0); +DEFINE_AVIGUID(IID_IAVIEditStream, 0x00020024, 0, 0); +DEFINE_AVIGUID(IID_IAVIPersistFile, 0x00020025, 0, 0); +#ifndef UNICODE +DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal, 0x00020009, 0, 0); +#endif + +DEFINE_AVIGUID(CLSID_AVIFile, 0x00020000, 0, 0); + +#define AVIFILEHANDLER_CANREAD 0x0001 +#define AVIFILEHANDLER_CANWRITE 0x0002 +#define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004 + +STDAPI_(void) AVIFileInit(void); +STDAPI_(void) AVIFileExit(void); + +STDAPI_(ULONG) AVIFileAddRef (PAVIFILE pfile); +STDAPI_(ULONG) AVIFileRelease (PAVIFILE pfile); + +#ifdef _WIN32 +STDAPI AVIFileOpenA (PAVIFILE FAR * ppfile, LPCSTR szFile, + UINT uMode, LPCLSID lpHandler); +STDAPI AVIFileOpenW (PAVIFILE FAR * ppfile, LPCWSTR szFile, + UINT uMode, LPCLSID lpHandler); +#ifdef UNICODE +#define AVIFileOpen AVIFileOpenW +#else +#define AVIFileOpen AVIFileOpenA +#endif +#else +STDAPI AVIFileOpen (PAVIFILE FAR * ppfile, LPCSTR szFile, + UINT uMode, LPCLSID lpHandler); +#define AVIFileOpenW AVIFileOpen +#endif + +#ifdef _WIN32 +STDAPI AVIFileInfoW (PAVIFILE pfile, LPAVIFILEINFOW pfi, LONG lSize); +STDAPI AVIFileInfoA (PAVIFILE pfile, LPAVIFILEINFOA pfi, LONG lSize); +#ifdef UNICODE +#define AVIFileInfo AVIFileInfoW +#else +#define AVIFileInfo AVIFileInfoA +#endif +#else +STDAPI AVIFileInfo (PAVIFILE pfile, LPAVIFILEINFO pfi, LONG lSize); +#define AVIFileInfoW AVIFileInfo +#endif + + +STDAPI AVIFileGetStream (PAVIFILE pfile, PAVISTREAM FAR * ppavi, DWORD fccType, LONG lParam); + + +#ifdef _WIN32 +STDAPI AVIFileCreateStreamW (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOW FAR * psi); +STDAPI AVIFileCreateStreamA (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOA FAR * psi); +#ifdef UNICODE +#define AVIFileCreateStream AVIFileCreateStreamW +#else +#define AVIFileCreateStream AVIFileCreateStreamA +#endif +#else +STDAPI AVIFileCreateStream(PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFO FAR * psi); +#define AVIFileCreateStreamW AVIFileCreateStream +#endif + +STDAPI AVIFileWriteData (PAVIFILE pfile, + DWORD ckid, + LPVOID lpData, + LONG cbData); +STDAPI AVIFileReadData (PAVIFILE pfile, + DWORD ckid, + LPVOID lpData, + LONG FAR *lpcbData); +STDAPI AVIFileEndRecord (PAVIFILE pfile); + +STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi); +STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi); + +STDAPI AVIStreamInfoW (PAVISTREAM pavi, LPAVISTREAMINFOW psi, LONG lSize); +STDAPI AVIStreamInfoA (PAVISTREAM pavi, LPAVISTREAMINFOA psi, LONG lSize); +#ifdef UNICODE +#define AVIStreamInfo AVIStreamInfoW +#else +#define AVIStreamInfo AVIStreamInfoA +#endif + +STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi, LONG lPos, LONG lFlags); +STDAPI AVIStreamReadFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG FAR *lpcbFormat); +STDAPI AVIStreamSetFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG cbFormat); +STDAPI AVIStreamReadData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG FAR *lpcb); +STDAPI AVIStreamWriteData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG cb); + +STDAPI AVIStreamRead (PAVISTREAM pavi, + LONG lStart, + LONG lSamples, + LPVOID lpBuffer, + LONG cbBuffer, + LONG FAR * plBytes, + LONG FAR * plSamples); +#define AVISTREAMREAD_CONVENIENT (-1L) + +STDAPI AVIStreamWrite (PAVISTREAM pavi, + LONG lStart, LONG lSamples, + LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags, + LONG FAR *plSampWritten, + LONG FAR *plBytesWritten); + +STDAPI_(LONG) AVIStreamStart (PAVISTREAM pavi); +STDAPI_(LONG) AVIStreamLength (PAVISTREAM pavi); +STDAPI_(LONG) AVIStreamTimeToSample (PAVISTREAM pavi, LONG lTime); +STDAPI_(LONG) AVIStreamSampleToTime (PAVISTREAM pavi, LONG lSample); + + +STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart, LONG lEnd, LONG lRate); +STDAPI AVIStreamEndStreaming(PAVISTREAM pavi); + +STDAPI_(PGETFRAME) AVIStreamGetFrameOpen(PAVISTREAM pavi, + LPBITMAPINFOHEADER lpbiWanted); +STDAPI_(LPVOID) AVIStreamGetFrame(PGETFRAME pg, LONG lPos); +STDAPI AVIStreamGetFrameClose(PGETFRAME pg); + +STDAPI AVIStreamOpenFromFileA(PAVISTREAM FAR *ppavi, LPCSTR szFile, + DWORD fccType, LONG lParam, + UINT mode, CLSID FAR *pclsidHandler); +STDAPI AVIStreamOpenFromFileW(PAVISTREAM FAR *ppavi, LPCWSTR szFile, + DWORD fccType, LONG lParam, + UINT mode, CLSID FAR *pclsidHandler); +#ifdef UNICODE +#define AVIStreamOpenFromFile AVIStreamOpenFromFileW +#else +#define AVIStreamOpenFromFile AVIStreamOpenFromFileA +#endif + +STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, + CLSID FAR *pclsidHandler); + + + +#define FIND_DIR 0x0000000FL +#define FIND_NEXT 0x00000001L +#define FIND_PREV 0x00000004L +#define FIND_FROM_START 0x00000008L + +#define FIND_TYPE 0x000000F0L +#define FIND_KEY 0x00000010L +#define FIND_ANY 0x00000020L +#define FIND_FORMAT 0x00000040L + +#define FIND_RET 0x0000F000L +#define FIND_POS 0x00000000L +#define FIND_LENGTH 0x00001000L +#define FIND_OFFSET 0x00002000L +#define FIND_SIZE 0x00003000L +#define FIND_INDEX 0x00004000L + +#define AVIStreamFindKeyFrame AVIStreamFindSample +#define FindKeyFrame FindSample + +#define AVIStreamClose AVIStreamRelease +#define AVIFileClose AVIFileRelease +#define AVIStreamInit AVIFileInit +#define AVIStreamExit AVIFileExit + +#define SEARCH_NEAREST FIND_PREV +#define SEARCH_BACKWARD FIND_PREV +#define SEARCH_FORWARD FIND_NEXT +#define SEARCH_KEY FIND_KEY +#define SEARCH_ANY FIND_ANY + +#define AVIStreamSampleToSample(pavi1, pavi2, l) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2, l)) + +#define AVIStreamNextSample(pavi, l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_ANY) + +#define AVIStreamPrevSample(pavi, l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_ANY) + +#define AVIStreamNearestSample(pavi, l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_ANY) + +#define AVIStreamNextKeyFrame(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_KEY) + +#define AVIStreamPrevKeyFrame(pavi, l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_KEY) + +#define AVIStreamNearestKeyFrame(pavi, l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_KEY) + +#define AVIStreamIsKeyFrame(pavi, l) (AVIStreamNearestKeyFrame(pavi,l) == l) + +#define AVIStreamPrevSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamPrevSample(pavi,AVIStreamTimeToSample(pavi,t))) + +#define AVIStreamNextSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNextSample(pavi,AVIStreamTimeToSample(pavi,t))) + +#define AVIStreamNearestSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNearestSample(pavi,AVIStreamTimeToSample(pavi,t))) + +#define AVIStreamNextKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNextKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) + +#define AVIStreamPrevKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamPrevKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) + +#define AVIStreamNearestKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNearestKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) + +#define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamStart(pavi)) + +#define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamLength(pavi)) + +#define AVIStreamEnd(pavi) (AVIStreamStart(pavi) + AVIStreamLength(pavi)) + +#define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi)) + +#define AVIStreamSampleSize(pavi, lPos, plSize) AVIStreamRead(pavi,lPos,1,NULL,0,plSize,NULL) + +#define AVIStreamFormatSize(pavi, lPos, plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize) + +#define AVIStreamDataSize(pavi, fcc, plSize) AVIStreamReadData(pavi,fcc,NULL,plSize) + +#ifndef comptypeDIB +#define comptypeDIB mmioFOURCC('D', 'I', 'B', ' ') +#endif + +STDAPI AVIMakeCompressedStream( + PAVISTREAM FAR * ppsCompressed, + PAVISTREAM ppsSource, + AVICOMPRESSOPTIONS FAR * lpOptions, + CLSID FAR *pclsidHandler); + +EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM pfile, + LPAVICOMPRESSOPTIONS lpOptions, + ...); + +STDAPI AVISaveVA(LPCSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM FAR * ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); +EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM pfile, + LPAVICOMPRESSOPTIONS lpOptions, + ...); + +STDAPI AVISaveVW(LPCWSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM FAR * ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); +#ifdef UNICODE +#define AVISave AVISaveW +#define AVISaveV AVISaveVW +#else +#define AVISave AVISaveA +#define AVISaveV AVISaveVA +#endif + + + +STDAPI_(INT_PTR) AVISaveOptions(HWND hwnd, + UINT uiFlags, + int nStreams, + PAVISTREAM FAR *ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); + +STDAPI AVISaveOptionsFree(int nStreams, + LPAVICOMPRESSOPTIONS FAR *plpOptions); + +STDAPI AVIBuildFilterW(LPWSTR lpszFilter, LONG cbFilter, BOOL fSaving); +STDAPI AVIBuildFilterA(LPSTR lpszFilter, LONG cbFilter, BOOL fSaving); +#ifdef UNICODE +#define AVIBuildFilter AVIBuildFilterW +#else +#define AVIBuildFilter AVIBuildFilterA +#endif +STDAPI AVIMakeFileFromStreams(PAVIFILE FAR * ppfile, + int nStreams, + PAVISTREAM FAR * papStreams); + +STDAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal, PAVISTREAM FAR *ppstream); + +STDAPI AVIPutFileOnClipboard(PAVIFILE pf); + +STDAPI AVIGetFromClipboard(PAVIFILE FAR * lppf); + +STDAPI AVIClearClipboard(void); + +STDAPI CreateEditableStream( + PAVISTREAM FAR * ppsEditable, + PAVISTREAM psSource); + +STDAPI EditStreamCut(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); + +STDAPI EditStreamCopy(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); + +STDAPI EditStreamPaste(PAVISTREAM pavi, LONG FAR *plPos, LONG FAR *plLength, PAVISTREAM pstream, LONG lStart, LONG lEnd); + +STDAPI EditStreamClone(PAVISTREAM pavi, PAVISTREAM FAR *ppResult); + + +STDAPI EditStreamSetNameA(PAVISTREAM pavi, LPCSTR lpszName); +STDAPI EditStreamSetNameW(PAVISTREAM pavi, LPCWSTR lpszName); +STDAPI EditStreamSetInfoW(PAVISTREAM pavi, LPAVISTREAMINFOW lpInfo, LONG cbInfo); +STDAPI EditStreamSetInfoA(PAVISTREAM pavi, LPAVISTREAMINFOA lpInfo, LONG cbInfo); +#ifdef UNICODE +#define EditStreamSetInfo EditStreamSetInfoW +#define EditStreamSetName EditStreamSetNameW +#else +#define EditStreamSetInfo EditStreamSetInfoA +#define EditStreamSetName EditStreamSetNameA +#endif ++/ +const AVIERR_OK = 0L; + +SCODE MAKE_AVIERR(DWORD error) { + return MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x4000 + error); +} + +const AVIERR_UNSUPPORTED = MAKE_AVIERR(101); +const AVIERR_BADFORMAT = MAKE_AVIERR(102); +const AVIERR_MEMORY = MAKE_AVIERR(103); +const AVIERR_INTERNAL = MAKE_AVIERR(104); +const AVIERR_BADFLAGS = MAKE_AVIERR(105); +const AVIERR_BADPARAM = MAKE_AVIERR(106); +const AVIERR_BADSIZE = MAKE_AVIERR(107); +const AVIERR_BADHANDLE = MAKE_AVIERR(108); +const AVIERR_FILEREAD = MAKE_AVIERR(109); +const AVIERR_FILEWRITE = MAKE_AVIERR(110); +const AVIERR_FILEOPEN = MAKE_AVIERR(111); +const AVIERR_COMPRESSOR = MAKE_AVIERR(112); +const AVIERR_NOCOMPRESSOR = MAKE_AVIERR(113); +const AVIERR_READONLY = MAKE_AVIERR(114); +const AVIERR_NODATA = MAKE_AVIERR(115); +const AVIERR_BUFFERTOOSMALL = MAKE_AVIERR(116); +const AVIERR_CANTCOMPRESS = MAKE_AVIERR(117); +const AVIERR_USERABORT = MAKE_AVIERR(198); +const AVIERR_ERROR = MAKE_AVIERR(199); + +const TCHAR[] MCIWND_WINDOW_CLASS = "MCIWndClass"; + +extern (Windows) { + HWND MCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCSTR szFile); + HWND MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCWSTR szFile); +} + +version(Unicode) { + alias MCIWndCreateW MCIWndCreate; +} else { // Unicode + alias MCIWndCreateA MCIWndCreate; +} + +extern(Windows) { + BOOL MCIWndRegisterClass(); +} + +enum { + MCIWNDOPENF_NEW = 0x0001, + MCIWNDF_NOAUTOSIZEWINDOW = 0x0001, + MCIWNDF_NOPLAYBAR = 0x0002, + MCIWNDF_NOAUTOSIZEMOVIE = 0x0004, + MCIWNDF_NOMENU = 0x0008, + MCIWNDF_SHOWNAME = 0x0010, + MCIWNDF_SHOWPOS = 0x0020, + MCIWNDF_SHOWMODE = 0x0040, + MCIWNDF_SHOWALL = 0x0070, + MCIWNDF_NOTIFYMODE = 0x0100, + MCIWNDF_NOTIFYPOS = 0x0200, + MCIWNDF_NOTIFYSIZE = 0x0400, + MCIWNDF_NOTIFYERROR = 0x1000, + MCIWNDF_NOTIFYALL = 0x1F00, + MCIWNDF_NOTIFYANSI = 0x0080, + MCIWNDF_NOTIFYMEDIAA = 0x0880, + MCIWNDF_NOTIFYMEDIAW = 0x0800, +} + +version(Unicode) { + alias MCIWNDF_NOTIFYMEDIAW MCIWNDF_NOTIFYMEDIA; +} else { // Unicode + alias MCIWNDF_NOTIFYMEDIAA MCIWNDF_NOTIFYMEDIA; +} + +enum { + MCIWNDF_RECORD = 0x2000, + MCIWNDF_NOERRORDLG = 0x4000, + MCIWNDF_NOOPEN = 0x8000, +} + +// can macros + +BOOL MCIWndCanPlay(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_PLAY, 0, 0); } +BOOL MCIWndCanRecord(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_RECORD, 0, 0); } +BOOL MCIWndCanSave(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_SAVE, 0, 0); } +BOOL MCIWndCanWindow(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_WINDOW, 0, 0); } +BOOL MCIWndCanEject(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_EJECT, 0, 0); } +BOOL MCIWndCanConfig(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_CONFIG, 0, 0); } +BOOL MCIWndPaletteKick(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_PALETTEKICK, 0, 0); } +LONG MCIWndSave(HWND hwnd, LPVOID szFile) + { return cast(LONG)SendMessage(hwnd, MCI_SAVE, 0, cast(LPARAM)szFile); } +LONG MCIWndSaveDialog(HWND hwnd) + { return MCIWndSave(hwnd, cast(LPVOID)-1); } +LONG MCIWndNew(HWND hwnd, LPVOID lp) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_NEW, 0, cast(LPARAM)lp); } +LONG MCIWndRecord(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_RECORD, 0, 0); } +LONG MCIWndOpen(HWND hwnd, LPVOID sz, UINT f) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_OPEN, cast(WPARAM)f, cast(LPARAM)sz); } +LONG MCIWndOpenDialog(HWND hwnd) + { return MCIWndOpen(hwnd, cast(LPVOID)-1, 0); } +LONG MCIWndClose(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_CLOSE, 0, 0); } +LONG MCIWndPlay(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_PLAY, 0, 0); } +LONG MCIWndStop(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_STOP, 0, 0); } +LONG MCIWndPause(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_PAUSE, 0, 0); } +LONG MCIWndResume(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_RESUME, 0, 0); } +LONG MCIWndSeek(HWND hwnd, LONG lPos) + { return cast(LONG)SendMessage(hwnd, MCI_SEEK, 0, cast(LPARAM)lPos); } +LONG MCIWndHome(HWND hwnd) + { return MCIWndSeek(hwnd, MCIWND_START); } +LONG MCIWndEnd(HWND hwnd) + { return MCIWndSeek(hwnd, MCIWND_END); } +LONG MCIWndEject(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_EJECT, 0, 0); } +LONG MCIWndGetSource(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_SOURCE, 0, cast(LPARAM)prc); } +LONG MCIWndPutSource(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_SOURCE, 0, cast(LPARAM)prc); } +LONG MCIWndGetDest(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_DEST, 0, cast(LPARAM)prc); } +LONG MCIWndPutDest(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_DEST, 0, cast(LPARAM)prc); } +LONG MCIWndPlayReverse(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYREVERSE, 0, 0); } +LONG MCIWndPlayFrom(HWND hwnd, LONG lPos) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, cast(LPARAM)lPos); } +LONG MCIWndPlayTo(HWND hwnd, LONG lPos) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYTO, 0, cast(LPARAM)lPos); } +LONG MCIWndPlayFromTo(HWND hwnd, LONG lStart, LONG lEnd) + { MCIWndSeek(hwnd, lStart); return MCIWndPlayTo(hwnd, lEnd); } +UINT MCIWndGetDeviceID(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0); } +UINT MCIWndGetAlias(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETALIAS, 0, 0); } +LONG MCIWndGetMode(HWND hwnd, LPTSTR lp, UINT len) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETMODE, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetPosition(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0); } +LONG MCIWndGetPositionString(HWND hwnd, LPTSTR lp, UINT len) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetStart(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0); } +LONG MCIWndGetLength(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0); } +LONG MCIWndGetEnd(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETEND, 0, 0); } +LONG MCIWndStep(HWND hwnd, LONG n) + { return cast(LONG)SendMessage(hwnd, MCI_STEP, 0, cast(LPARAM)n); } +void MCIWndDestroy(HWND hwnd) + { SendMessage(hwnd, WM_CLOSE, 0, 0); } +void MCIWndSetZoom(HWND hwnd, UINT iZoom) + { SendMessage(hwnd, MCIWNDM_SETZOOM, 0, cast(LPARAM)iZoom); } +UINT MCIWndGetZoom(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETZOOM, 0, 0); } +LONG MCIWndSetVolume(HWND hwnd, UINT iVol) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, cast(LPARAM)iVol); } +LONG MCIWndGetVolume(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0); } +LONG MCIWndSetSpeed(HWND hwnd, UINT iSpeed) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETSPEED, 0, cast(LPARAM)iSpeed); } +LONG MCIWndGetSpeed(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0); } +LONG MCIWndSetTimeFormat(HWND hwnd, LPTSTR lp) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, cast(LPARAM)lp); } +LONG MCIWndUseFrames(HWND hwnd) + { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"frames").ptr); } +LONG MCIWndUseTime(HWND hwnd) + { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"ms").ptr); } +LONG MCIWndGetTimeFormat(HWND hwnd, LPTSTR lp, UINT len) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETTIMEFORMAT, cast(WPARAM)len, cast(LPARAM)lp); } +void MCIWndValidateMedia(HWND hwnd) + { SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0); } +void MCIWndSetRepeat(HWND hwnd, BOOL f) + { SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, cast(LPARAM)f); } +BOOL MCIWndGetRepeat(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0); } +void MCIWndSetActiveTimer(HWND hwnd, UINT active) + { SendMessage(hwnd, MCIWNDM_SETACTIVETIMER, cast(WPARAM)active, 0); } +void MCIWndSetInactiveTimer(HWND hwnd, UINT inactive) + { SendMessage(hwnd, MCIWNDM_SETINACTIVETIMER, cast(WPARAM)inactive, 0); } +void MCIWndSetTimers(HWND hwnd, UINT active, UINT inactive) + { SendMessage(hwnd, MCIWNDM_SETTIMERS, cast(WPARAM)active, cast(LPARAM)inactive); } +UINT MCIWndGetActiveTimer(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0); } +UINT MCIWndGetInactiveTimer(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0); } +LONG MCIWndRealize(HWND hwnd, BOOL fBkgnd) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_REALIZE, cast(WPARAM)fBkgnd, 0); } +LONG MCIWndSendString(HWND hwnd, LPTSTR sz) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, cast(LPARAM)sz); } +LONG MCIWndReturnString(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_RETURNSTRING, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetError(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETERROR, cast(WPARAM)len, cast(LPARAM)lp); } +HPALETTE MCIWndGetPalette(HWND hwnd) + { return cast(HPALETTE)SendMessage(hwnd, MCIWNDM_GETPALETTE, 0, 0); } +LONG MCIWndSetPalette(HWND hwnd, HPALETTE hpal) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETPALETTE, cast(WPARAM)hpal, 0); } +LONG MCIWndGetFileName(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETFILENAME, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetDevice(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETDEVICE, cast(WPARAM)len, cast(LPARAM)lp); } +UINT MCIWndGetStyles(HWND hwnd) + { return cast(UINT) SendMessage(hwnd, MCIWNDM_GETSTYLES, 0, 0); } +LONG MCIWndChangeStyles(HWND hwnd, UINT mask, LONG value) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_CHANGESTYLES, cast(WPARAM)mask, cast(LPARAM)value); } +LONG MCIWndOpenInterface(HWND hwnd, LPUNKNOWN pUnk) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_OPENINTERFACE, 0, cast(LPARAM)cast(void*)pUnk); } +LONG MCIWndSetOwner(HWND hwnd, HWND hwndP) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETOWNER, cast(WPARAM)hwndP, 0); } + +enum { + MCIWNDM_GETDEVICEID = WM_USER + 100, + MCIWNDM_SENDSTRINGA = WM_USER + 101, + MCIWNDM_GETPOSITIONA = WM_USER + 102, + MCIWNDM_GETSTART = WM_USER + 103, + MCIWNDM_GETLENGTH = WM_USER + 104, + MCIWNDM_GETEND = WM_USER + 105, + MCIWNDM_GETMODEA = WM_USER + 106, + MCIWNDM_EJECT = WM_USER + 107, + MCIWNDM_SETZOOM = WM_USER + 108, + MCIWNDM_GETZOOM = WM_USER + 109, + MCIWNDM_SETVOLUME = WM_USER + 110, + MCIWNDM_GETVOLUME = WM_USER + 111, + MCIWNDM_SETSPEED = WM_USER + 112, + MCIWNDM_GETSPEED = WM_USER + 113, + MCIWNDM_SETREPEAT = WM_USER + 114, + MCIWNDM_GETREPEAT = WM_USER + 115, + MCIWNDM_REALIZE = WM_USER + 118, + MCIWNDM_SETTIMEFORMATA = WM_USER + 119, + MCIWNDM_GETTIMEFORMATA = WM_USER + 120, + MCIWNDM_VALIDATEMEDIA = WM_USER + 121, + MCIWNDM_PLAYFROM = WM_USER + 122, + MCIWNDM_PLAYTO = WM_USER + 123, + MCIWNDM_GETFILENAMEA = WM_USER + 124, + MCIWNDM_GETDEVICEA = WM_USER + 125, + MCIWNDM_GETPALETTE = WM_USER + 126, + MCIWNDM_SETPALETTE = WM_USER + 127, + MCIWNDM_GETERRORA = WM_USER + 128, + MCIWNDM_SETTIMERS = WM_USER + 129, + MCIWNDM_SETACTIVETIMER = WM_USER + 130, + MCIWNDM_SETINACTIVETIMER = WM_USER + 131, + MCIWNDM_GETACTIVETIMER = WM_USER + 132, + MCIWNDM_GETINACTIVETIMER = WM_USER + 133, + MCIWNDM_NEWA = WM_USER + 134, + MCIWNDM_CHANGESTYLES = WM_USER + 135, + MCIWNDM_GETSTYLES = WM_USER + 136, + MCIWNDM_GETALIAS = WM_USER + 137, + MCIWNDM_RETURNSTRINGA = WM_USER + 138, + MCIWNDM_PLAYREVERSE = WM_USER + 139, + MCIWNDM_GET_SOURCE = WM_USER + 140, + MCIWNDM_PUT_SOURCE = WM_USER + 141, + MCIWNDM_GET_DEST = WM_USER + 142, + MCIWNDM_PUT_DEST = WM_USER + 143, + MCIWNDM_CAN_PLAY = WM_USER + 144, + MCIWNDM_CAN_WINDOW = WM_USER + 145, + MCIWNDM_CAN_RECORD = WM_USER + 146, + MCIWNDM_CAN_SAVE = WM_USER + 147, + MCIWNDM_CAN_EJECT = WM_USER + 148, + MCIWNDM_CAN_CONFIG = WM_USER + 149, + MCIWNDM_PALETTEKICK = WM_USER + 150, + MCIWNDM_OPENINTERFACE = WM_USER + 151, + MCIWNDM_SETOWNER = WM_USER + 152, + MCIWNDM_OPENA = WM_USER + 153, + MCIWNDM_SENDSTRINGW = WM_USER + 201, + MCIWNDM_GETPOSITIONW = WM_USER + 202, + MCIWNDM_GETMODEW = WM_USER + 206, + MCIWNDM_SETTIMEFORMATW = WM_USER + 219, + MCIWNDM_GETTIMEFORMATW = WM_USER + 220, + MCIWNDM_GETFILENAMEW = WM_USER + 224, + MCIWNDM_GETDEVICEW = WM_USER + 225, + MCIWNDM_GETERRORW = WM_USER + 228, + MCIWNDM_NEWW = WM_USER + 234, + MCIWNDM_RETURNSTRINGW = WM_USER + 238, + MCIWNDM_OPENW = WM_USER + 252, +} + +version(Unicode) { + alias MCIWNDM_SENDSTRINGW MCIWNDM_SENDSTRING; + alias MCIWNDM_GETPOSITIONW MCIWNDM_GETPOSITION; + alias MCIWNDM_GETMODEW MCIWNDM_GETMODE; + alias MCIWNDM_SETTIMEFORMATW MCIWNDM_SETTIMEFORMAT; + alias MCIWNDM_GETTIMEFORMATW MCIWNDM_GETTIMEFORMAT; + alias MCIWNDM_GETFILENAMEW MCIWNDM_GETFILENAME; + alias MCIWNDM_GETDEVICEW MCIWNDM_GETDEVICE; + alias MCIWNDM_GETERRORW MCIWNDM_GETERROR; + alias MCIWNDM_NEWW MCIWNDM_NEW; + alias MCIWNDM_RETURNSTRINGW MCIWNDM_RETURNSTRING; + alias MCIWNDM_OPENW MCIWNDM_OPEN; +} else { // Unicode + alias MCIWNDM_SENDSTRINGA MCIWNDM_SENDSTRING; + alias MCIWNDM_GETPOSITIONA MCIWNDM_GETPOSITION; + alias MCIWNDM_GETMODEA MCIWNDM_GETMODE; + alias MCIWNDM_SETTIMEFORMATA MCIWNDM_SETTIMEFORMAT; + alias MCIWNDM_GETTIMEFORMATA MCIWNDM_GETTIMEFORMAT; + alias MCIWNDM_GETFILENAMEA MCIWNDM_GETFILENAME; + alias MCIWNDM_GETDEVICEA MCIWNDM_GETDEVICE; + alias MCIWNDM_GETERRORA MCIWNDM_GETERROR; + alias MCIWNDM_NEWA MCIWNDM_NEW; + alias MCIWNDM_RETURNSTRINGA MCIWNDM_RETURNSTRING; + alias MCIWNDM_OPENA MCIWNDM_OPEN; +} + +enum { + MCIWNDM_NOTIFYMODE = WM_USER + 200, + MCIWNDM_NOTIFYPOS = WM_USER + 201, + MCIWNDM_NOTIFYSIZE = WM_USER + 202, + MCIWNDM_NOTIFYMEDIA = WM_USER + 203, + MCIWNDM_NOTIFYERROR = WM_USER + 205, +} + +const MCIWND_START = -1; +const MCIWND_END = -2; + +enum { + MCI_CLOSE = 0x0804, + MCI_PLAY = 0x0806, + MCI_SEEK = 0x0807, + MCI_STOP = 0x0808, + MCI_PAUSE = 0x0809, + MCI_STEP = 0x080E, + MCI_RECORD = 0x080F, + MCI_SAVE = 0x0813, + MCI_CUT = 0x0851, + MCI_COPY = 0x0852, + MCI_PASTE = 0x0853, + MCI_RESUME = 0x0855, + MCI_DELETE = 0x0856, +} + +enum { + MCI_MODE_NOT_READY = 524, + MCI_MODE_STOP, + MCI_MODE_PLAY, + MCI_MODE_RECORD, + MCI_MODE_SEEK, + MCI_MODE_PAUSE, + MCI_MODE_OPEN, +} + +alias TypeDef!(HANDLE) HVIDEO; +alias HVIDEO* LPHVIDEO; + +// Error Return Values + +enum { + DV_ERR_OK = 0, + DV_ERR_BASE = 1, + DV_ERR_NONSPECIFIC = DV_ERR_BASE, + DV_ERR_BADFORMAT = DV_ERR_BASE + 1, + DV_ERR_STILLPLAYING = DV_ERR_BASE + 2, + DV_ERR_UNPREPARED = DV_ERR_BASE + 3, + DV_ERR_SYNC = DV_ERR_BASE + 4, + DV_ERR_TOOMANYCHANNELS = DV_ERR_BASE + 5, + DV_ERR_NOTDETECTED = DV_ERR_BASE + 6, + DV_ERR_BADINSTALL = DV_ERR_BASE + 7, + DV_ERR_CREATEPALETTE = DV_ERR_BASE + 8, + DV_ERR_SIZEFIELD = DV_ERR_BASE + 9, + DV_ERR_PARAM1 = DV_ERR_BASE + 10, + DV_ERR_PARAM2 = DV_ERR_BASE + 11, + DV_ERR_CONFIG1 = DV_ERR_BASE + 12, + DV_ERR_CONFIG2 = DV_ERR_BASE + 13, + DV_ERR_FLAGS = DV_ERR_BASE + 14, + DV_ERR_13 = DV_ERR_BASE + 15, + DV_ERR_NOTSUPPORTED = DV_ERR_BASE + 16, + DV_ERR_NOMEM = DV_ERR_BASE + 17, + DV_ERR_ALLOCATED = DV_ERR_BASE + 18, + DV_ERR_BADDEVICEID = DV_ERR_BASE + 19, + DV_ERR_INVALHANDLE = DV_ERR_BASE + 20, + DV_ERR_BADERRNUM = DV_ERR_BASE + 21, + DV_ERR_NO_BUFFERS = DV_ERR_BASE + 22, + DV_ERR_MEM_CONFLICT = DV_ERR_BASE + 23, + DV_ERR_IO_CONFLICT = DV_ERR_BASE + 24, + DV_ERR_DMA_CONFLICT = DV_ERR_BASE + 25, + DV_ERR_INT_CONFLICT = DV_ERR_BASE + 26, + DV_ERR_PROTECT_ONLY = DV_ERR_BASE + 27, + DV_ERR_LASTERROR = DV_ERR_BASE + 27, + DV_ERR_USER_MSG = DV_ERR_BASE + 1000, +} + +// Callback Messages + +enum { + MM_DRVM_OPEN = 0x3D0, + MM_DRVM_CLOSE, + MM_DRVM_DATA, + MM_DRVM_ERROR, +} + +enum { + DV_VM_OPEN = MM_DRVM_OPEN, + DV_VM_CLOSE = MM_DRVM_CLOSE, + DV_VM_DATA = MM_DRVM_DATA, + DV_VM_ERROR = MM_DRVM_ERROR, +} + +/** + * Structures + */ + +struct VIDEOHDR { + LPBYTE lpData; + DWORD dwBufferLength; + DWORD dwBytesUsed; + DWORD dwTimeCaptured; + DWORD_PTR dwUser; + DWORD dwFlags; + DWORD_PTR[4]dwReserved; +} +alias VIDEOHDR* PVIDEOHDR, LPVIDEOHDR; + +enum { + VHDR_DONE = 0x00000001, + VHDR_PREPARED = 0x00000002, + VHDR_INQUEUE = 0x00000004, + VHDR_KEYFRAME = 0x00000008, + VHDR_VALID = 0x0000000F, +} + +struct CHANNEL_CAPS { + DWORD dwFlags; + DWORD dwSrcRectXMod; + DWORD dwSrcRectYMod; + DWORD dwSrcRectWidthMod; + DWORD dwSrcRectHeightMod; + DWORD dwDstRectXMod; + DWORD dwDstRectYMod; + DWORD dwDstRectWidthMod; + DWORD dwDstRectHeightMod; +} +alias CHANNEL_CAPS* PCHANNEL_CAPS, LPCHANNEL_CAPS; + +enum { + VCAPS_OVERLAY = 0x00000001, + VCAPS_SRC_CAN_CLIP = 0x00000002, + VCAPS_DST_CAN_CLIP = 0x00000004, + VCAPS_CAN_SCALE = 0x00000008, +} + +/** + * API Flags + */ + +enum { + VIDEO_EXTERNALIN = 0x0001, + VIDEO_EXTERNALOUT = 0x0002, + VIDEO_IN = 0x0004, + VIDEO_OUT = 0x0008, + VIDEO_DLG_QUERY = 0x0010, +} + +enum { + VIDEO_CONFIGURE_QUERYSIZE = 0x0001, + VIDEO_CONFIGURE_CURRENT = 0x0010, + VIDEO_CONFIGURE_NOMINAL = 0x0020, + VIDEO_CONFIGURE_MIN = 0x0040, + VIDEO_CONFIGURE_MAX = 0x0080, + VIDEO_CONFIGURE_SET = 0x1000, + VIDEO_CONFIGURE_GET = 0x2000, + VIDEO_CONFIGURE_QUERY = 0x8000, +} + +/** + * CONFIGURE MESSAGES + */ + +enum { + DVM_USER = 0x4000, + DVM_CONFIGURE_START = 0x1000, + DVM_CONFIGURE_END = 0x1FFF, + DVM_PALETTE = DVM_CONFIGURE_START + 1, + DVM_FORMAT = DVM_CONFIGURE_START + 2, + DVM_PALETTERGB555 = DVM_CONFIGURE_START + 3, + DVM_SRC_RECT = DVM_CONFIGURE_START + 4, + DVM_DST_RECT = DVM_CONFIGURE_START + 5, +} + +/** + * AVICap window class + */ + +LRESULT AVICapSM(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { + if (IsWindow(hWnd)) { + return SendMessage(hWnd, msg, wParam, lParam); + } + return 0; +} + +enum { + WM_CAP_START = WM_USER, + WM_CAP_UNICODE_START = WM_USER + 100, + + WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1, + WM_CAP_SET_CALLBACK_ERRORA = WM_CAP_START + 2, + WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3, + + WM_CAP_SET_CALLBACK_ERRORW = WM_CAP_UNICODE_START + 2, + WM_CAP_SET_CALLBACK_STATUSW = WM_CAP_UNICODE_START + 3, +} + +version(Unicode) { + alias WM_CAP_SET_CALLBACK_ERRORW WM_CAP_SET_CALLBACK_ERROR; + alias WM_CAP_SET_CALLBACK_STATUSW WM_CAP_SET_CALLBACK_STATUS; +} else { // Unicode + alias WM_CAP_SET_CALLBACK_ERRORA WM_CAP_SET_CALLBACK_ERROR; + alias WM_CAP_SET_CALLBACK_STATUSA WM_CAP_SET_CALLBACK_STATUS; +} + +enum { + WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4, + WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5, + WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6, + WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7, + WM_CAP_GET_USER_DATA = WM_CAP_START + 8, + WM_CAP_SET_USER_DATA = WM_CAP_START + 9, + WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10, + WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11, + WM_CAP_DRIVER_GET_NAMEA = WM_CAP_START + 12, + WM_CAP_DRIVER_GET_VERSIONA = WM_CAP_START + 13, + + WM_CAP_DRIVER_GET_NAMEW = WM_CAP_UNICODE_START + 12, + WM_CAP_DRIVER_GET_VERSIONW = WM_CAP_UNICODE_START + 13, +} + +version(Unicode) { + alias WM_CAP_DRIVER_GET_NAMEW WM_CAP_DRIVER_GET_NAME; + alias WM_CAP_DRIVER_GET_VERSIONW WM_CAP_DRIVER_GET_VERSION; +} else { // Unicode + alias WM_CAP_DRIVER_GET_NAMEA WM_CAP_DRIVER_GET_NAME; + alias WM_CAP_DRIVER_GET_VERSIONA WM_CAP_DRIVER_GET_VERSION; +} + +enum { + WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14, + WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20, + WM_CAP_FILE_GET_CAPTURE_FILEA = WM_CAP_START + 21, + WM_CAP_FILE_SAVEASA = WM_CAP_START + 23, + WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25, + + WM_CAP_FILE_SET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 20, + WM_CAP_FILE_GET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 21, + WM_CAP_FILE_SAVEASW = WM_CAP_UNICODE_START + 23, + WM_CAP_FILE_SAVEDIBW = WM_CAP_UNICODE_START + 25, +} + +version(Unicode) { + alias WM_CAP_FILE_SET_CAPTURE_FILEW WM_CAP_FILE_SET_CAPTURE_FILE; + alias WM_CAP_FILE_GET_CAPTURE_FILEW WM_CAP_FILE_GET_CAPTURE_FILE; + alias WM_CAP_FILE_SAVEASW WM_CAP_FILE_SAVEAS; + alias WM_CAP_FILE_SAVEDIBW WM_CAP_FILE_SAVEDIB; +} else { // Unicode + alias WM_CAP_FILE_SET_CAPTURE_FILEA WM_CAP_FILE_SET_CAPTURE_FILE; + alias WM_CAP_FILE_GET_CAPTURE_FILEA WM_CAP_FILE_GET_CAPTURE_FILE; + alias WM_CAP_FILE_SAVEASA WM_CAP_FILE_SAVEAS; + alias WM_CAP_FILE_SAVEDIBA WM_CAP_FILE_SAVEDIB; +} + +enum { + WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22, + WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24, + WM_CAP_EDIT_COPY = WM_CAP_START + 30, + WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35, + WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36, + WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41, + WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42, + WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43, + WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44, + WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45, + WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46, + WM_CAP_SET_PREVIEW = WM_CAP_START + 50, + WM_CAP_SET_OVERLAY = WM_CAP_START + 51, + WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52, + WM_CAP_SET_SCALE = WM_CAP_START + 53, + WM_CAP_GET_STATUS = WM_CAP_START + 54, + WM_CAP_SET_SCROLL = WM_CAP_START + 55, + WM_CAP_GRAB_FRAME = WM_CAP_START + 60, + WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61, + WM_CAP_SEQUENCE = WM_CAP_START + 62, + WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63, + WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64, + WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65, + WM_CAP_SET_MCI_DEVICEA = WM_CAP_START + 66, + WM_CAP_GET_MCI_DEVICEA = WM_CAP_START + 67, + + WM_CAP_SET_MCI_DEVICEW = WM_CAP_UNICODE_START + 66, + WM_CAP_GET_MCI_DEVICEW = WM_CAP_UNICODE_START + 67, +} + +version(Unicode) { + alias WM_CAP_SET_MCI_DEVICEW WM_CAP_SET_MCI_DEVICE; + alias WM_CAP_GET_MCI_DEVICEW WM_CAP_GET_MCI_DEVICE; +} else { // Unicode + alias WM_CAP_SET_MCI_DEVICEA WM_CAP_SET_MCI_DEVICE; + alias WM_CAP_GET_MCI_DEVICEA WM_CAP_GET_MCI_DEVICE; +} + +enum { + WM_CAP_STOP = WM_CAP_START + 68, + WM_CAP_ABORT = WM_CAP_START + 69, + WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70, + WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71, + WM_CAP_SINGLE_FRAME = WM_CAP_START + 72, + WM_CAP_PAL_OPENA = WM_CAP_START + 80, + WM_CAP_PAL_SAVEA = WM_CAP_START + 81, + + WM_CAP_PAL_OPENW = WM_CAP_UNICODE_START + 80, + WM_CAP_PAL_SAVEW = WM_CAP_UNICODE_START + 81, +} + +version(Unicode) { + alias WM_CAP_PAL_OPENW WM_CAP_PAL_OPEN; + alias WM_CAP_PAL_SAVEW WM_CAP_PAL_SAVE; +} else { // Unicode + alias WM_CAP_PAL_OPENA WM_CAP_PAL_OPEN; + alias WM_CAP_PAL_SAVEA WM_CAP_PAL_SAVE; +} + +enum { + WM_CAP_PAL_PASTE = WM_CAP_START + 82, + WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83, + WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84, + WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85, + WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW, + WM_CAP_END = WM_CAP_UNICODE_END, +} + +/** + * message wrapper + */ + +BOOL capSetCallbackOnError(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_ERROR, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnStatus(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_STATUS, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnYield(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_YIELD, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnFrame(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_FRAME, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnVideoStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnWaveStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnCapControl(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, cast(LPARAM)fpProc); } + +BOOL capSetUserData(HWND hWnd, LPARAM lUser) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_USER_DATA, 0, lUser); } +BOOL capGetUserData(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_USER_DATA, 0, 0); } + +BOOL capDriverConnect(HWND hWnd, WPARAM i) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_CONNECT, i, 0); } +BOOL capDriverDisconnect(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_DISCONNECT, 0, 0); } +BOOL capDriverGetName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_NAME, wSize, cast(LPARAM)szName); } +BOOL capDriverGetVersion(HWND hWnd, LPTSTR szVer, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_VERSION, wSize, cast(LPARAM)szVer); } +BOOL capDriverGetCaps(HWND hWnd, LPCAPDRIVERCAPS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_CAPS, wSize, cast(LPARAM)s); } + +BOOL capFileSetCaptureFile(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, cast(LPARAM)szName); } +BOOL capFileGetCaptureFile(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_GET_CAPTURE_FILE, wSize, cast(LPARAM)szName); } +BOOL capFileAlloc(HWND hWnd, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_ALLOCATE, wSize, 0); } +BOOL capFileSaveAs(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEAS, 0, cast(LPARAM)szName); } +BOOL capFileSetInfoChunk(HWND hWnd, LPCAPINFOCHUNK lpInfoChunk) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_INFOCHUNK, 0, cast(LPARAM)lpInfoChunk); } +BOOL capFileSaveDIB(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEDIB, 0, cast(LPARAM)szName); } + +BOOL capEditCopy(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_EDIT_COPY, 0, 0); } + +BOOL capSetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_AUDIOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetAudioFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, 0, 0); } + +BOOL capDlgVideoFormat(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0); } +BOOL capDlgVideoSource(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0); } +BOOL capDlgVideoDisplay(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0); } +BOOL capDlgVideoCompression(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0); } + +DWORD capGetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetVideoFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, 0, 0); } +BOOL capSetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_VIDEOFORMAT, wSize, cast(LPARAM)s); } + +BOOL capPreview(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEW, cast(WPARAM)f, 0); } +BOOL capPreviewRate(HWND hWnd, WPARAM wMS) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEWRATE, wMS, 0); } +BOOL capOverlay(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_OVERLAY, cast(WPARAM)f, 0); } +BOOL capPreviewScale(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCALE, cast(WPARAM)f, 0); } +BOOL capGetStatus(HWND hWnd, LPCAPSTATUS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_STATUS, wSize, cast(LPARAM)s); } +BOOL capSetScrollPos(HWND hWnd, LPPOINT lpP) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCROLL, 0, cast(LPARAM)lpP); } + +BOOL capGrabFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME, 0, 0); } +BOOL capGrabFrameNoStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0); } + +BOOL capCaptureSequence(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE, 0, 0); } +BOOL capCaptureSequenceNoFile(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE_NOFILE, 0, 0); } +BOOL capCaptureStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_STOP, 0, 0); } +BOOL capCaptureAbort(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_ABORT, 0, 0); } + +BOOL capCaptureSingleFrameOpen(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0); } +BOOL capCaptureSingleFrameClose(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0); } +BOOL capCaptureSingleFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME, 0, 0); } + +BOOL capCaptureGetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } +BOOL capCaptureSetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } + +BOOL capSetMCIDeviceName(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_MCI_DEVICE, 0, cast(LPARAM)szName); } +BOOL capGetMCIDeviceName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_MCI_DEVICE, wSize, cast(LPARAM)szName); } + +BOOL capPaletteOpen(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_OPEN, 0, cast(LPARAM)szName); } +BOOL capPaletteSave(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_SAVE, 0, cast(LPARAM)szName); } +BOOL capPalettePaste(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_PASTE, 0, 0); } +BOOL capPaletteAuto(HWND hWnd, WPARAM iFrames, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors); } +BOOL capPaletteManual(HWND hWnd, WPARAM fGrab, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors); } + +/** + * structs + */ + +struct CAPDRIVERCAPS { + UINT wDeviceIndex; + BOOL fHasOverlay; + BOOL fHasDlgVideoSource; + BOOL fHasDlgVideoFormat; + BOOL fHasDlgVideoDisplay; + BOOL fCaptureInitialized; + BOOL fDriverSuppliesPalettes; + HANDLE hVideoIn; + HANDLE hVideoOut; + HANDLE hVideoExtIn; + HANDLE hVideoExtOut; +} +alias CAPDRIVERCAPS* PCAPDRIVERCAPS, LPCAPDRIVERCAPS; + +struct CAPSTATUS { + UINT uiImageWidth; + UINT uiImageHeight; + BOOL fLiveWindow; + BOOL fOverlayWindow; + BOOL fScale; + POINT ptScroll; + BOOL fUsingDefaultPalette; + BOOL fAudioHardware; + BOOL fCapFileExists; + DWORD dwCurrentVideoFrame; + DWORD dwCurrentVideoFramesDropped; + DWORD dwCurrentWaveSamples; + DWORD dwCurrentTimeElapsedMS; + HPALETTE hPalCurrent; + BOOL fCapturingNow; + DWORD dwReturn; + UINT wNumVideoAllocated; + UINT wNumAudioAllocated; +} +alias CAPSTATUS* PCAPSTATUS, LPCAPSTATUS; + +struct CAPTUREPARMS { + DWORD dwRequestMicroSecPerFrame; + BOOL fMakeUserHitOKToCapture; + UINT wPercentDropForError; + BOOL fYield; + DWORD dwIndexSize; + UINT wChunkGranularity; + BOOL fUsingDOSMemory; + UINT wNumVideoRequested; + BOOL fCaptureAudio; + UINT wNumAudioRequested; + UINT vKeyAbort; + BOOL fAbortLeftMouse; + BOOL fAbortRightMouse; + BOOL fLimitEnabled; + UINT wTimeLimit; + BOOL fMCIControl; + BOOL fStepMCIDevice; + DWORD dwMCIStartTime; + DWORD dwMCIStopTime; + BOOL fStepCaptureAt2x; + UINT wStepCaptureAverageFrames; + DWORD dwAudioBufferSize; + BOOL fDisableWriteCache; + UINT AVStreamMaster; +} +alias CAPTUREPARMS* PCAPTUREPARMS, LPCAPTUREPARMS; + +const AVSTREAMMASTER_AUDIO = 0; +const AVSTREAMMASTER_NONE = 1; + +struct CAPINFOCHUNK { + FOURCC fccInfoID; + LPVOID lpData; + LONG cbData; +} +alias CAPINFOCHUNK* PCAPINFOCHUNK, LPCAPINFOCHUNK; + +// Callback Definitions + +extern (Windows) { + alias LRESULT function(HWND hWnd) CAPYIELDCALLBACK; + alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPSTATUSCALLBACKW; + alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPERRORCALLBACKW; + alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPSTATUSCALLBACKA; + alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPERRORCALLBACKA; +} + +version(Unicode) { + alias CAPSTATUSCALLBACKW CAPSTATUSCALLBACK; + alias CAPERRORCALLBACKW CAPERRORCALLBACK; +} else { // Unicode + alias CAPSTATUSCALLBACKA CAPSTATUSCALLBACK; + alias CAPERRORCALLBACKA CAPERRORCALLBACK; +} + +extern (Windows) { + alias LRESULT function(HWND hWnd, LPVIDEOHDR lpVHdr) CAPVIDEOCALLBACK; + alias LRESULT function(HWND hWnd, LPWAVEHDR lpWHdr) CAPWAVECALLBACK; + alias LRESULT function(HWND hWnd, int nState) CAPCONTROLCALLBACK; +} + +// CapControlCallback states +const CONTROLCALLBACK_PREROLL = 1; +const CONTROLCALLBACK_CAPTURING = 2; + +extern (Windows) { + HWND capCreateCaptureWindowA(LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); + BOOL capGetDriverDescriptionA(UINT wDriverIndex, LPSTR lpszName, int cbName, LPSTR lpszVer, int cbVer); + HWND capCreateCaptureWindowW(LPCWSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); + BOOL capGetDriverDescriptionW(UINT wDriverIndex, LPWSTR lpszName, int cbName, LPWSTR lpszVer, int cbVer); +} + +version(Unicode) { + alias capCreateCaptureWindowW capCreateCaptureWindow; + alias capGetDriverDescriptionW capGetDriverDescription; +} else { // Unicode + alias capCreateCaptureWindowA capCreateCaptureWindow; + alias capGetDriverDescriptionA capGetDriverDescription; +} + +// New Information chunk IDs +const infotypeDIGITIZATION_TIME = mmioFOURCC!('I', 'D', 'I', 'T'); +const infotypeSMPTE_TIME = mmioFOURCC!('I', 'S', 'M', 'P'); + +// status and error callbacks +enum { + IDS_CAP_BEGIN = 300, + IDS_CAP_END = 301, + + IDS_CAP_INFO = 401, + IDS_CAP_OUTOFMEM = 402, + IDS_CAP_FILEEXISTS = 403, + IDS_CAP_ERRORPALOPEN = 404, + IDS_CAP_ERRORPALSAVE = 405, + IDS_CAP_ERRORDIBSAVE = 406, + IDS_CAP_DEFAVIEXT = 407, + IDS_CAP_DEFPALEXT = 408, + IDS_CAP_CANTOPEN = 409, + IDS_CAP_SEQ_MSGSTART = 410, + IDS_CAP_SEQ_MSGSTOP = 411, + + IDS_CAP_VIDEDITERR = 412, + IDS_CAP_READONLYFILE = 413, + IDS_CAP_WRITEERROR = 414, + IDS_CAP_NODISKSPACE = 415, + IDS_CAP_SETFILESIZE = 416, + IDS_CAP_SAVEASPERCENT = 417, + + IDS_CAP_DRIVER_ERROR = 418, + + IDS_CAP_WAVE_OPEN_ERROR = 419, + IDS_CAP_WAVE_ALLOC_ERROR = 420, + IDS_CAP_WAVE_PREPARE_ERROR = 421, + IDS_CAP_WAVE_ADD_ERROR = 422, + IDS_CAP_WAVE_SIZE_ERROR = 423, + + IDS_CAP_VIDEO_OPEN_ERROR = 424, + IDS_CAP_VIDEO_ALLOC_ERROR = 425, + IDS_CAP_VIDEO_PREPARE_ERROR = 426, + IDS_CAP_VIDEO_ADD_ERROR = 427, + IDS_CAP_VIDEO_SIZE_ERROR = 428, + + IDS_CAP_FILE_OPEN_ERROR = 429, + IDS_CAP_FILE_WRITE_ERROR = 430, + IDS_CAP_RECORDING_ERROR = 431, + IDS_CAP_RECORDING_ERROR2 = 432, + IDS_CAP_AVI_INIT_ERROR = 433, + IDS_CAP_NO_FRAME_CAP_ERROR = 434, + IDS_CAP_NO_PALETTE_WARN = 435, + IDS_CAP_MCI_CONTROL_ERROR = 436, + IDS_CAP_MCI_CANT_STEP_ERROR = 437, + IDS_CAP_NO_AUDIO_CAP_ERROR = 438, + IDS_CAP_AVI_DRAWDIB_ERROR = 439, + IDS_CAP_COMPRESSOR_ERROR = 440, + IDS_CAP_AUDIO_DROP_ERROR = 441, + IDS_CAP_AUDIO_DROP_COMPERROR = 442, + + IDS_CAP_STAT_LIVE_MODE = 500, + IDS_CAP_STAT_OVERLAY_MODE = 501, + IDS_CAP_STAT_CAP_INIT = 502, + IDS_CAP_STAT_CAP_FINI = 503, + IDS_CAP_STAT_PALETTE_BUILD = 504, + IDS_CAP_STAT_OPTPAL_BUILD = 505, + IDS_CAP_STAT_I_FRAMES = 506, + IDS_CAP_STAT_L_FRAMES = 507, + IDS_CAP_STAT_CAP_L_FRAMES = 508, + IDS_CAP_STAT_CAP_AUDIO = 509, + IDS_CAP_STAT_VIDEOCURRENT = 510, + IDS_CAP_STAT_VIDEOAUDIO = 511, + IDS_CAP_STAT_VIDEOONLY = 512, + IDS_CAP_STAT_FRAMESDROPPED = 513, +} + +/** + * FilePreview dialog. + */ + +extern (Windows) { + BOOL GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn); + BOOL GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn); + BOOL GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn); + BOOL GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn); +} + +version(Unicode) { + alias GetOpenFileNamePreviewW GetOpenFileNamePreview; + alias GetSaveFileNamePreviewW GetSaveFileNamePreview; +} else { // Unicode + alias GetOpenFileNamePreviewA GetOpenFileNamePreview; + alias GetSaveFileNamePreviewA GetSaveFileNamePreview; +} \ No newline at end of file diff --git a/src/core/sys/windows/w32api.d b/src/core/sys/windows/w32api.d new file mode 100644 index 0000000000..914b568edc --- /dev/null +++ b/src/core/sys/windows/w32api.d @@ -0,0 +1,83 @@ +/***********************************************************************\ +* w32api.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 4.0 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.w32api; + +enum __W32API_VERSION = 3.17; +enum __W32API_MAJOR_VERSION = 3; +enum __W32API_MINOR_VERSION = 17; + +/* These version identifiers are used to specify the minimum version of Windows that an + * application will support. + * + * Previously the minimum Windows 9x and Windows NT versions could be specified. However, since + * Windows 9x is no longer supported, either by Microsoft or by DMD, this distinction has been + * removed in order to simplify the bindings. + */ +version (Windows7) { + enum uint _WIN32_WINNT = 0x601; +} else version (WindowsVista) { + enum uint _WIN32_WINNT = 0x600; +} else version (Windows2003) { + enum uint _WIN32_WINNT = 0x502; +} else version (WindowsXP) { + enum uint _WIN32_WINNT = 0x501; +} else version (Windows2000) { + enum uint _WIN32_WINNT = 0x500; +} else { + enum uint _WIN32_WINNT = 0x501; +} + +version (IE8) { + enum uint _WIN32_IE = 0x800; +} version (IE7) { + enum uint _WIN32_IE = 0x700; +} else version (IE602) { + enum uint _WIN32_IE = 0x603; +} else version (IE601) { + enum uint _WIN32_IE = 0x601; +} else version (IE6) { + enum uint _WIN32_IE = 0x600; +} else version (IE56) { + enum uint _WIN32_IE = 0x560; +} else version (IE501) { + enum uint _WIN32_IE = 0x501; +} else version (IE5) { + enum uint _WIN32_IE = 0x500; +} else version (IE401) { + enum uint _WIN32_IE = 0x401; +} else version (IE4) { + enum uint _WIN32_IE = 0x400; +} else version (IE3) { + enum uint _WIN32_IE = 0x300; +} else static if (_WIN32_WINNT >= 0x410) { + enum uint _WIN32_IE = 0x400; +} else { + enum uint _WIN32_IE = 0; +} + +debug (WindowsUnitTest) { + unittest { + printf("Windows NT version: %03x\n", _WIN32_WINNT); + printf("IE version: %03x\n", _WIN32_IE); + } +} + +version (Unicode) { + enum bool _WIN32_UNICODE = true; + package template DECLARE_AW(string name) { + mixin("alias " ~ name ~ "W " ~ name ~ ";"); + } +} else { + enum bool _WIN32_UNICODE = false; + package template DECLARE_AW(string name) { + mixin("alias " ~ name ~ "A " ~ name ~ ";"); + } +} diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d new file mode 100644 index 0000000000..782aa4971f --- /dev/null +++ b/src/core/sys/windows/winbase.d @@ -0,0 +1,2799 @@ +/***********************************************************************\ +* winbase.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winbase; +pragma(lib, "kernel32"); + +/** +Translation Notes: +The following macros are obsolete, and have no effect. + +LockSegment(w), MakeProcInstance(p, i), UnlockResource(h), UnlockSegment(w) +FreeModule(m), FreeProcInstance(p), GetFreeSpace(w), DefineHandleTable(w) +SetSwapAreaSize(w), LimitEmsPages(n), Yield() + +// The following Win16 functions are obselete in Win32. + + int _hread(HFILE, LPVOID, int); + int _hwrite(HFILE, LPCSTR, int); + HFILE _lclose(HFILE); + HFILE _lcreat(LPCSTR, int); + LONG _llseek(HFILE, LONG, int); + HFILE _lopen(LPCSTR, int); + UINT _lread(HFILE, LPVOID, UINT); + UINT _lwrite(HFILE, LPCSTR, UINT); + SIZE_T GlobalCompact(DWORD); + VOID GlobalFix(HGLOBAL); +* MSDN contradicts itself on GlobalFlags: +* "This function is provided only for compatibility with 16-bit versions of Windows." +* but also requires Windows 2000 or above + UINT GlobalFlags(HGLOBAL); + VOID GlobalUnfix(HGLOBAL); + BOOL GlobalUnWire(HGLOBAL); + PVOID GlobalWire(HGLOBAL); + SIZE_T LocalCompact(UINT); + UINT LocalFlags(HLOCAL); + SIZE_T LocalShrink(HLOCAL, UINT); + +// These are not required for DMD. + +//FIXME: +// #ifndef UNDER_CE + int WinMain(HINSTANCE, HINSTANCE, LPSTR, int); +#else + int WinMain(HINSTANCE, HINSTANCE, LPWSTR, int); +#endif +int wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); + +*/ + +import win32.windef, win32.winver; +private import win32.basetyps, win32.w32api, win32.winnt; + +// FIXME: +alias void va_list; + + +/+ +//-------------------------------------- +// These functions are problematic + +version(UseNtoSKernel) {}else { + /* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h + as __fastcall functions, but are exported from kernel32.dll as __stdcall */ + static if (_WIN32_WINNT >= 0x501) { + VOID InitializeSListHead(PSLIST_HEADER); + } + LONG InterlockedCompareExchange(LPLONG, LONG, LONG); + // PVOID WINAPI InterlockedCompareExchangePointer(PVOID*, PVOID, PVOID); + (PVOID)InterlockedCompareExchange((LPLONG)(d) (PVOID)InterlockedCompareExchange((LPLONG)(d), (LONG)(e), (LONG)(c)) + LONG InterlockedDecrement(LPLONG); + LONG InterlockedExchange(LPLONG, LONG); + // PVOID WINAPI InterlockedExchangePointer(PVOID*, PVOID); + (PVOID)InterlockedExchange((LPLONG)((PVOID)InterlockedExchange((LPLONG)(t), (LONG)(v)) + LONG InterlockedExchangeAdd(LPLONG, LONG); + + static if (_WIN32_WINNT >= 0x501) { + PSLIST_ENTRY InterlockedFlushSList(PSLIST_HEADER); + } + LONG InterlockedIncrement(LPLONG); + static if (_WIN32_WINNT >= 0x501) { + PSLIST_ENTRY InterlockedPopEntrySList(PSLIST_HEADER); + PSLIST_ENTRY InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); + } +} // #endif // __USE_NTOSKRNL__ +//-------------------------------------- ++/ + +// COMMPROP structure, used by GetCommProperties() +// ----------------------------------------------- + +// Communications provider type +enum : DWORD { + PST_UNSPECIFIED, + PST_RS232, + PST_PARALLELPORT, + PST_RS422, + PST_RS423, + PST_RS449, + PST_MODEM, // = 6 + PST_FAX = 0x0021, + PST_SCANNER = 0x0022, + PST_NETWORK_BRIDGE = 0x0100, + PST_LAT = 0x0101, + PST_TCPIP_TELNET = 0x0102, + PST_X25 = 0x0103 +} + +// Max baud rate +enum : DWORD { + BAUD_075 = 0x00000001, + BAUD_110 = 0x00000002, + BAUD_134_5 = 0x00000004, + BAUD_150 = 0x00000008, + BAUD_300 = 0x00000010, + BAUD_600 = 0x00000020, + BAUD_1200 = 0x00000040, + BAUD_1800 = 0x00000080, + BAUD_2400 = 0x00000100, + BAUD_4800 = 0x00000200, + BAUD_7200 = 0x00000400, + BAUD_9600 = 0x00000800, + BAUD_14400 = 0x00001000, + BAUD_19200 = 0x00002000, + BAUD_38400 = 0x00004000, + BAUD_56K = 0x00008000, + BAUD_128K = 0x00010000, + BAUD_115200 = 0x00020000, + BAUD_57600 = 0x00040000, + BAUD_USER = 0x10000000 +} + +// Comm capabilities +enum : DWORD { + PCF_DTRDSR = 0x0001, + PCF_RTSCTS = 0x0002, + PCF_RLSD = 0x0004, + PCF_PARITY_CHECK = 0x0008, + PCF_XONXOFF = 0x0010, + PCF_SETXCHAR = 0x0020, + PCF_TOTALTIMEOUTS = 0x0040, + PCF_INTTIMEOUTS = 0x0080, + PCF_SPECIALCHARS = 0x0100, + PCF_16BITMODE = 0x0200 +} + +enum : DWORD { + SP_PARITY = 1, + SP_BAUD = 2, + SP_DATABITS = 4, + SP_STOPBITS = 8, + SP_HANDSHAKING = 16, + SP_PARITY_CHECK = 32, + SP_RLSD = 64 +} + +enum : DWORD { + DATABITS_5 = 1, + DATABITS_6 = 2, + DATABITS_7 = 4, + DATABITS_8 = 8, + DATABITS_16 = 16, + DATABITS_16X = 32 +} + +enum : WORD { + STOPBITS_10 = 0x0001, + STOPBITS_15 = 0x0002, + STOPBITS_20 = 0x0004, + PARITY_NONE = 0x0100, + PARITY_ODD = 0x0200, + PARITY_EVEN = 0x0400, + PARITY_MARK = 0x0800, + PARITY_SPACE = 0x1000 +} + +// used by dwServiceMask +enum SP_SERIALCOMM = 1; + +struct COMMPROP { + WORD wPacketLength; + WORD wPacketVersion; + DWORD dwServiceMask; + DWORD dwReserved1; + DWORD dwMaxTxQueue; + DWORD dwMaxRxQueue; + DWORD dwMaxBaud; + DWORD dwProvSubType; + DWORD dwProvCapabilities; + DWORD dwSettableParams; + DWORD dwSettableBaud; + WORD wSettableData; + WORD wSettableStopParity; + DWORD dwCurrentTxQueue; + DWORD dwCurrentRxQueue; + DWORD dwProvSpec1; + DWORD dwProvSpec2; + WCHAR _wcProvChar; + + WCHAR* wcProvChar() { return &_wcProvChar; } +} +alias COMMPROP* LPCOMMPROP; + +// ---------- + +// for DEBUG_EVENT +enum : DWORD { + EXCEPTION_DEBUG_EVENT = 1, + CREATE_THREAD_DEBUG_EVENT, + CREATE_PROCESS_DEBUG_EVENT, + EXIT_THREAD_DEBUG_EVENT, + EXIT_PROCESS_DEBUG_EVENT, + LOAD_DLL_DEBUG_EVENT, + UNLOAD_DLL_DEBUG_EVENT, + OUTPUT_DEBUG_STRING_EVENT, + RIP_EVENT +} + +const HFILE HFILE_ERROR = cast(HFILE) (-1); + +// for SetFilePointer() +enum : DWORD { + FILE_BEGIN = 0, + FILE_CURRENT = 1, + FILE_END = 2 +} +const DWORD INVALID_SET_FILE_POINTER = -1; + + +// for OpenFile() +deprecated enum : UINT { + OF_READ = 0, + OF_WRITE = 0x0001, + OF_READWRITE = 0x0002, + OF_SHARE_COMPAT = 0, + OF_SHARE_EXCLUSIVE = 0x0010, + OF_SHARE_DENY_WRITE = 0x0020, + OF_SHARE_DENY_READ = 0x0030, + OF_SHARE_DENY_NONE = 0x0040, + OF_PARSE = 0x0100, + OF_DELETE = 0x0200, + OF_VERIFY = 0x0400, + OF_CANCEL = 0x0800, + OF_CREATE = 0x1000, + OF_PROMPT = 0x2000, + OF_EXIST = 0x4000, + OF_REOPEN = 0x8000 +} + +enum : DWORD { + NMPWAIT_NOWAIT = 1, + NMPWAIT_WAIT_FOREVER = -1, + NMPWAIT_USE_DEFAULT_WAIT = 0 +} + +// for ClearCommError() +const DWORD + CE_RXOVER = 0x0001, + CE_OVERRUN = 0x0002, + CE_RXPARITY = 0x0004, + CE_FRAME = 0x0008, + CE_BREAK = 0x0010, + CE_TXFULL = 0x0100, + CE_PTO = 0x0200, + CE_IOE = 0x0400, + CE_DNS = 0x0800, + CE_OOP = 0x1000, + CE_MODE = 0x8000; + +// for CopyProgressRoutine callback. +enum : DWORD { + PROGRESS_CONTINUE = 0, + PROGRESS_CANCEL = 1, + PROGRESS_STOP = 2, + PROGRESS_QUIET = 3 +} + +enum : DWORD { + CALLBACK_CHUNK_FINISHED = 0, + CALLBACK_STREAM_SWITCH = 1 +} + +// CopyFileEx() +enum : DWORD { + COPY_FILE_FAIL_IF_EXISTS = 1, + COPY_FILE_RESTARTABLE = 2 +} + +enum : DWORD { + FILE_MAP_COPY = 1, + FILE_MAP_WRITE = 2, + FILE_MAP_READ = 4, + FILE_MAP_ALL_ACCESS = 0x000F001F +} + +enum : DWORD { + MUTEX_ALL_ACCESS = 0x001f0001, + MUTEX_MODIFY_STATE = 0x00000001, + SEMAPHORE_ALL_ACCESS = 0x001f0003, + SEMAPHORE_MODIFY_STATE = 0x00000002, + EVENT_ALL_ACCESS = 0x001f0003, + EVENT_MODIFY_STATE = 0x00000002 +} + +// CreateNamedPipe() +enum : DWORD { + PIPE_ACCESS_INBOUND = 1, + PIPE_ACCESS_OUTBOUND = 2, + PIPE_ACCESS_DUPLEX = 3 +} + +const DWORD + PIPE_TYPE_BYTE = 0, + PIPE_TYPE_MESSAGE = 4, + PIPE_READMODE_BYTE = 0, + PIPE_READMODE_MESSAGE = 2, + PIPE_WAIT = 0, + PIPE_NOWAIT = 1; + +// GetNamedPipeInfo() +const DWORD + PIPE_CLIENT_END = 0, + PIPE_SERVER_END = 1; + +const DWORD PIPE_UNLIMITED_INSTANCES = 255; + +// dwCreationFlags for CreateProcess() and CreateProcessAsUser() +enum : DWORD { + DEBUG_PROCESS = 0x00000001, + DEBUG_ONLY_THIS_PROCESS = 0x00000002, + CREATE_SUSPENDED = 0x00000004, + DETACHED_PROCESS = 0x00000008, + CREATE_NEW_CONSOLE = 0x00000010, + NORMAL_PRIORITY_CLASS = 0x00000020, + IDLE_PRIORITY_CLASS = 0x00000040, + HIGH_PRIORITY_CLASS = 0x00000080, + REALTIME_PRIORITY_CLASS = 0x00000100, + CREATE_NEW_PROCESS_GROUP = 0x00000200, + CREATE_UNICODE_ENVIRONMENT = 0x00000400, + CREATE_SEPARATE_WOW_VDM = 0x00000800, + CREATE_SHARED_WOW_VDM = 0x00001000, + CREATE_FORCEDOS = 0x00002000, + BELOW_NORMAL_PRIORITY_CLASS = 0x00004000, + ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000, + CREATE_BREAKAWAY_FROM_JOB = 0x01000000, + CREATE_WITH_USERPROFILE = 0x02000000, + CREATE_DEFAULT_ERROR_MODE = 0x04000000, + CREATE_NO_WINDOW = 0x08000000, + PROFILE_USER = 0x10000000, + PROFILE_KERNEL = 0x20000000, + PROFILE_SERVER = 0x40000000 +} + +const DWORD CONSOLE_TEXTMODE_BUFFER = 1; + +// CreateFile() +enum : DWORD { + CREATE_NEW = 1, + CREATE_ALWAYS, + OPEN_EXISTING, + OPEN_ALWAYS, + TRUNCATE_EXISTING +} + +// CreateFile() +const DWORD + FILE_FLAG_WRITE_THROUGH = 0x80000000, + FILE_FLAG_OVERLAPPED = 0x40000000, + FILE_FLAG_NO_BUFFERING = 0x20000000, + FILE_FLAG_RANDOM_ACCESS = 0x10000000, + FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000, + FILE_FLAG_DELETE_ON_CLOSE = 0x04000000, + FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, + FILE_FLAG_POSIX_SEMANTICS = 0x01000000, + FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000, + FILE_FLAG_OPEN_NO_RECALL = 0x00100000; + +static if (_WIN32_WINNT >= 0x500) { + const DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; +} + +// for CreateFile() +const DWORD + SECURITY_ANONYMOUS = SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16, + SECURITY_IDENTIFICATION = SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16, + SECURITY_IMPERSONATION = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16, + SECURITY_DELEGATION = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation<<16, + SECURITY_CONTEXT_TRACKING = 0x00040000, + SECURITY_EFFECTIVE_ONLY = 0x00080000, + SECURITY_SQOS_PRESENT = 0x00100000, + SECURITY_VALID_SQOS_FLAGS = 0x001F0000; + + +// Thread exit code +const DWORD STILL_ACTIVE = 0x103; + +/* ??? The only documentation of this seems to be about Windows CE and to + * state what _doesn't_ support it. + */ +const DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; + +// GetBinaryType() +enum : DWORD { + SCS_32BIT_BINARY = 0, + SCS_DOS_BINARY, + SCS_WOW_BINARY, + SCS_PIF_BINARY, + SCS_POSIX_BINARY, + SCS_OS216_BINARY +} + +const size_t + MAX_COMPUTERNAME_LENGTH = 15, + HW_PROFILE_GUIDLEN = 39, + MAX_PROFILE_LEN = 80; + +// HW_PROFILE_INFO +const DWORD + DOCKINFO_UNDOCKED = 1, + DOCKINFO_DOCKED = 2, + DOCKINFO_USER_SUPPLIED = 4, + DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED, + DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED; + +// DriveType(), RealDriveType() +enum : int { + DRIVE_UNKNOWN = 0, + DRIVE_NO_ROOT_DIR, + DRIVE_REMOVABLE, + DRIVE_FIXED, + DRIVE_REMOTE, + DRIVE_CDROM, + DRIVE_RAMDISK +} + +// GetFileType() +enum : DWORD { + FILE_TYPE_UNKNOWN = 0, + FILE_TYPE_DISK, + FILE_TYPE_CHAR, + FILE_TYPE_PIPE, + FILE_TYPE_REMOTE = 0x8000 +} + +// Get/SetHandleInformation() +const DWORD + HANDLE_FLAG_INHERIT = 0x01, + HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x02; + +enum : DWORD { + STD_INPUT_HANDLE = 0xFFFFFFF6, + STD_OUTPUT_HANDLE = 0xFFFFFFF5, + STD_ERROR_HANDLE = 0xFFFFFFF4 +} + +enum HANDLE INVALID_HANDLE_VALUE = cast(HANDLE) (-1); + +enum : DWORD { + GET_TAPE_MEDIA_INFORMATION = 0, + GET_TAPE_DRIVE_INFORMATION = 1 +} + +enum : DWORD { + SET_TAPE_MEDIA_INFORMATION = 0, + SET_TAPE_DRIVE_INFORMATION = 1 +} + +// SetThreadPriority()/GetThreadPriority() +enum : int { + THREAD_PRIORITY_IDLE = -15, + THREAD_PRIORITY_LOWEST = -2, + THREAD_PRIORITY_BELOW_NORMAL = -1, + THREAD_PRIORITY_NORMAL = 0, + THREAD_PRIORITY_ABOVE_NORMAL = 1, + THREAD_PRIORITY_HIGHEST = 2, + THREAD_PRIORITY_TIME_CRITICAL = 15, + THREAD_PRIORITY_ERROR_RETURN = 2147483647 +} + +enum : DWORD { + TIME_ZONE_ID_UNKNOWN, + TIME_ZONE_ID_STANDARD, + TIME_ZONE_ID_DAYLIGHT, + TIME_ZONE_ID_INVALID = 0xFFFFFFFF +} + +const DWORD + FS_CASE_SENSITIVE = 1, + FS_CASE_IS_PRESERVED = 2, + FS_UNICODE_STORED_ON_DISK = 4, + FS_PERSISTENT_ACLS = 8, + FS_FILE_COMPRESSION = 16, + FS_VOL_IS_COMPRESSED = 32768; + +// Flags for GlobalAlloc +const UINT + GMEM_FIXED = 0, + GMEM_MOVEABLE = 0x0002, + GMEM_ZEROINIT = 0x0040, + GPTR = 0x0040, + GHND = 0x0042, + GMEM_MODIFY = 0x0080, // used only for GlobalRealloc + GMEM_VALID_FLAGS = 0x7F72; + +/+ // Obselete flags (Win16 only) + GMEM_NOCOMPACT=16; + GMEM_NODISCARD=32; + GMEM_DISCARDABLE=256; + GMEM_NOT_BANKED=4096; + GMEM_LOWER=4096; + GMEM_SHARE=8192; + GMEM_DDESHARE=8192; + + GMEM_LOCKCOUNT=255; + +// for GlobalFlags() + GMEM_DISCARDED = 16384; + GMEM_INVALID_HANDLE = 32768; + + GMEM_NOTIFY = 16384; ++/ + +const UINT + LMEM_FIXED = 0, + LMEM_MOVEABLE = 0x0002, + LMEM_NONZEROLPTR = 0, + NONZEROLPTR = 0, + LMEM_NONZEROLHND = 0x0002, + NONZEROLHND = 0x0002, + LMEM_DISCARDABLE = 0x0F00, + LMEM_NOCOMPACT = 0x0010, + LMEM_NODISCARD = 0x0020, + LMEM_ZEROINIT = 0x0040, + LPTR = 0x0040, + LHND = 0x0042, + LMEM_MODIFY = 0x0080, + LMEM_LOCKCOUNT = 0x00FF, + LMEM_DISCARDED = 0x4000, + LMEM_INVALID_HANDLE = 0x8000; + + + +// used in EXCEPTION_RECORD +enum : DWORD { + STATUS_WAIT_0 = 0, + STATUS_ABANDONED_WAIT_0 = 0x00000080, + STATUS_USER_APC = 0x000000C0, + STATUS_TIMEOUT = 0x00000102, + STATUS_PENDING = 0x00000103, + + STATUS_SEGMENT_NOTIFICATION = 0x40000005, + STATUS_GUARD_PAGE_VIOLATION = 0x80000001, + STATUS_DATATYPE_MISALIGNMENT = 0x80000002, + STATUS_BREAKPOINT = 0x80000003, + STATUS_SINGLE_STEP = 0x80000004, + + STATUS_ACCESS_VIOLATION = 0xC0000005, + STATUS_IN_PAGE_ERROR = 0xC0000006, + STATUS_INVALID_HANDLE = 0xC0000008, + + STATUS_NO_MEMORY = 0xC0000017, + STATUS_ILLEGAL_INSTRUCTION = 0xC000001D, + STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025, + STATUS_INVALID_DISPOSITION = 0xC0000026, + STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C, + STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D, + STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E, + STATUS_FLOAT_INEXACT_RESULT = 0xC000008F, + STATUS_FLOAT_INVALID_OPERATION = 0xC0000090, + STATUS_FLOAT_OVERFLOW = 0xC0000091, + STATUS_FLOAT_STACK_CHECK = 0xC0000092, + STATUS_FLOAT_UNDERFLOW = 0xC0000093, + STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094, + STATUS_INTEGER_OVERFLOW = 0xC0000095, + STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096, + STATUS_STACK_OVERFLOW = 0xC00000FD, + STATUS_CONTROL_C_EXIT = 0xC000013A, + STATUS_DLL_INIT_FAILED = 0xC0000142, + STATUS_DLL_INIT_FAILED_LOGOFF = 0xC000026B, + + CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT, + + EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION, + EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT, + EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT, + EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP, + EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED, + EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND, + EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO, + EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT, + EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION, + EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW, + EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK, + EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW, + EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO, + EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW, + EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION, + EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR, + EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION, + EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION, + EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW, + EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION, + EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION, + EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE +} + +// for PROCESS_HEAP_ENTRY +const WORD + PROCESS_HEAP_REGION = 1, + PROCESS_HEAP_UNCOMMITTED_RANGE = 2, + PROCESS_HEAP_ENTRY_BUSY = 4, + PROCESS_HEAP_ENTRY_MOVEABLE = 16, + PROCESS_HEAP_ENTRY_DDESHARE = 32; + +// for LoadLibraryEx() +const DWORD + DONT_RESOLVE_DLL_REFERENCES = 0x01, // not for WinME and earlier + LOAD_LIBRARY_AS_DATAFILE = 0x02, + LOAD_WITH_ALTERED_SEARCH_PATH = 0x08, + LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10; // only for XP and later + +// for LockFile() +const DWORD + LOCKFILE_FAIL_IMMEDIATELY = 1, + LOCKFILE_EXCLUSIVE_LOCK = 2; + +const MAXIMUM_WAIT_OBJECTS = 64; +const MAXIMUM_SUSPEND_COUNT = 0x7F; + +const WAIT_OBJECT_0 = 0; +const WAIT_ABANDONED_0 = 128; + +//const WAIT_TIMEOUT=258; // also in winerror.h + +enum : DWORD { + WAIT_IO_COMPLETION = 0x000000C0, + WAIT_ABANDONED = 0x00000080, + WAIT_FAILED = 0xFFFFFFFF +} + +// PurgeComm() +const DWORD + PURGE_TXABORT = 1, + PURGE_RXABORT = 2, + PURGE_TXCLEAR = 4, + PURGE_RXCLEAR = 8; + +// ReadEventLog() +const DWORD + EVENTLOG_SEQUENTIAL_READ = 1, + EVENTLOG_SEEK_READ = 2, + EVENTLOG_FORWARDS_READ = 4, + EVENTLOG_BACKWARDS_READ = 8; + +// ReportEvent() +enum : WORD { + EVENTLOG_SUCCESS = 0, + EVENTLOG_ERROR_TYPE = 1, + EVENTLOG_WARNING_TYPE = 2, + EVENTLOG_INFORMATION_TYPE = 4, + EVENTLOG_AUDIT_SUCCESS = 8, + EVENTLOG_AUDIT_FAILURE = 16 +} + +// FormatMessage() +const DWORD + FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100, + FORMAT_MESSAGE_IGNORE_INSERTS = 0x0200, + FORMAT_MESSAGE_FROM_STRING = 0x0400, + FORMAT_MESSAGE_FROM_HMODULE = 0x0800, + FORMAT_MESSAGE_FROM_SYSTEM = 0x1000, + FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x2000; + +const DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; + +// also in ddk/ntapi.h +// To restore default error mode, call SetErrorMode(0) +enum { + SEM_FAILCRITICALERRORS = 0x0001, + SEM_NOGPFAULTERRORBOX = 0x0002, + SEM_NOALIGNMENTFAULTEXCEPT = 0x0004, + SEM_NOOPENFILEERRORBOX = 0x8000 +} +// end ntapi.h + +enum { + SLE_ERROR = 1, + SLE_MINORERROR, + SLE_WARNING +} + +const SHUTDOWN_NORETRY = 1; + +// Return type for exception filters. +enum : LONG { + EXCEPTION_EXECUTE_HANDLER = 1, + EXCEPTION_CONTINUE_EXECUTION = -1, + EXCEPTION_CONTINUE_SEARCH = 0 +} + +enum : ATOM { + MAXINTATOM = 0xC000, + INVALID_ATOM = 0 +} + +const IGNORE = 0; +const INFINITE = 0xFFFFFFFF; + +// EscapeCommFunction() +enum { + SETXOFF = 1, + SETXON, + SETRTS, + CLRRTS, + SETDTR, + CLRDTR, // = 6 + SETBREAK = 8, + CLRBREAK = 9 +} + + +// for SetCommMask() +const DWORD + EV_RXCHAR = 0x0001, + EV_RXFLAG = 0x0002, + EV_TXEMPTY = 0x0004, + EV_CTS = 0x0008, + EV_DSR = 0x0010, + EV_RLSD = 0x0020, + EV_BREAK = 0x0040, + EV_ERR = 0x0080, + EV_RING = 0x0100, + EV_PERR = 0x0200, + EV_RX80FULL = 0x0400, + EV_EVENT1 = 0x0800, + EV_EVENT2 = 0x1000; + +// GetCommModemStatus() +const DWORD + MS_CTS_ON = 0x0010, + MS_DSR_ON = 0x0020, + MS_RING_ON = 0x0040, + MS_RLSD_ON = 0x0080; + + +// DCB +enum : BYTE { + NOPARITY = 0, + ODDPARITY, + EVENPARITY, + MARKPARITY, + SPACEPARITY +} +// DCB +enum : BYTE { + ONESTOPBIT = 0, + ONE5STOPBITS, + TWOSTOPBITS +} +// DCB +enum : DWORD { + CBR_110 = 110, + CBR_300 = 300, + CBR_600 = 600, + CBR_1200 = 1200, + CBR_2400 = 2400, + CBR_4800 = 4800, + CBR_9600 = 9600, + CBR_14400 = 14400, + CBR_19200 = 19200, + CBR_38400 = 38400, + CBR_56000 = 56000, + CBR_57600 = 57600, + CBR_115200 = 115200, + CBR_128000 = 128000, + CBR_256000 = 256000 +} +// DCB, 2-bit bitfield +enum { + DTR_CONTROL_DISABLE = 0, + DTR_CONTROL_ENABLE, + DTR_CONTROL_HANDSHAKE +} + +// DCB, 2-bit bitfield +enum { + RTS_CONTROL_DISABLE = 0, + RTS_CONTROL_ENABLE, + RTS_CONTROL_HANDSHAKE, + RTS_CONTROL_TOGGLE, +} + +// WIN32_STREAM_ID +enum : DWORD { + BACKUP_INVALID = 0, + BACKUP_DATA, + BACKUP_EA_DATA, + BACKUP_SECURITY_DATA, + BACKUP_ALTERNATE_DATA, + BACKUP_LINK, + BACKUP_PROPERTY_DATA, + BACKUP_OBJECT_ID, + BACKUP_REPARSE_DATA, + BACKUP_SPARSE_BLOCK +} + +// WIN32_STREAM_ID +enum : DWORD { + STREAM_NORMAL_ATTRIBUTE = 0, + STREAM_MODIFIED_WHEN_READ = 1, + STREAM_CONTAINS_SECURITY = 2, + STREAM_CONTAINS_PROPERTIES = 4 +} + +// STARTUPINFO +const DWORD + STARTF_USESHOWWINDOW = 0x0001, + STARTF_USESIZE = 0x0002, + STARTF_USEPOSITION = 0x0004, + STARTF_USECOUNTCHARS = 0x0008, + STARTF_USEFILLATTRIBUTE = 0x0010, + STARTF_RUNFULLSCREEN = 0x0020, + STARTF_FORCEONFEEDBACK = 0x0040, + STARTF_FORCEOFFFEEDBACK = 0x0080, + STARTF_USESTDHANDLES = 0x0100, + STARTF_USEHOTKEY = 0x0200; + +// ??? +enum { + TC_NORMAL = 0, + TC_HARDERR = 1, + TC_GP_TRAP = 2, + TC_SIGNAL = 3 +} + +/+ These seem to be Windows CE-specific +enum { + AC_LINE_OFFLINE = 0, + AC_LINE_ONLINE = 1, + AC_LINE_BACKUP_POWER = 2, + AC_LINE_UNKNOWN = 255 +} + +enum { + BATTERY_FLAG_HIGH = 1, + BATTERY_FLAG_LOW = 2, + BATTERY_FLAG_CRITICAL = 4, + BATTERY_FLAG_CHARGING = 8, + BATTERY_FLAG_NO_BATTERY = 128, + BATTERY_FLAG_UNKNOWN = 255, + BATTERY_PERCENTAGE_UNKNOWN = 255, + BATTERY_LIFE_UNKNOWN = 0xFFFFFFFF +} ++/ + +// ??? +const HINSTANCE_ERROR = 32; + +// returned from GetFileSize() +const DWORD INVALID_FILE_SIZE = 0xFFFFFFFF; + +const DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; + +// GetWriteWatch() +const DWORD WRITE_WATCH_FLAG_RESET = 1; + +// for LogonUser() +enum : DWORD { + LOGON32_LOGON_INTERACTIVE = 2, + LOGON32_LOGON_NETWORK = 3, + LOGON32_LOGON_BATCH = 4, + LOGON32_LOGON_SERVICE = 5, + LOGON32_LOGON_UNLOCK = 7 +} + +// for LogonUser() +enum : DWORD { + LOGON32_PROVIDER_DEFAULT, + LOGON32_PROVIDER_WINNT35, + LOGON32_PROVIDER_WINNT40, + LOGON32_PROVIDER_WINNT50 +} + +// for MoveFileEx() +const DWORD + MOVEFILE_REPLACE_EXISTING = 1, + MOVEFILE_COPY_ALLOWED = 2, + MOVEFILE_DELAY_UNTIL_REBOOT = 4, + MOVEFILE_WRITE_THROUGH = 8; + +// DefineDosDevice() +const DWORD + DDD_RAW_TARGET_PATH = 1, + DDD_REMOVE_DEFINITION = 2, + DDD_EXACT_MATCH_ON_REMOVE = 4; + +static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + LOGON32_LOGON_NETWORK_CLEARTEXT = 8, + LOGON32_LOGON_NEW_CREDENTIALS = 9 + } + + // ReplaceFile() + const DWORD + REPLACEFILE_WRITE_THROUGH = 1, + REPLACEFILE_IGNORE_MERGE_ERRORS = 2; +} + +static if (_WIN32_WINNT >= 0x501) { + const DWORD + GET_MODULE_HANDLE_EX_FLAG_PIN = 1, + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, + GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4; + + // for ACTCTX + const DWORD + ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x01, + ACTCTX_FLAG_LANGID_VALID = 0x02, + ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x04, + ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x08, + ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x10, + ACTCTX_FLAG_APPLICATION_NAME_VALID = 0x20, + ACTCTX_FLAG_HMODULE_VALID = 0x80; + + // DeactivateActCtx() + const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; + // FindActCtxSectionString() + const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 1; + // QueryActCtxW() + const DWORD + QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x04, + QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x08, + QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x10; + + enum { + LOGON_WITH_PROFILE = 1, + LOGON_NETCREDENTIALS_ONLY + } +} + +// ---- + +struct FILETIME { + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} +alias FILETIME* PFILETIME, LPFILETIME; + +struct BY_HANDLE_FILE_INFORMATION { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD dwVolumeSerialNumber; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD nNumberOfLinks; + DWORD nFileIndexHigh; + DWORD nFileIndexLow; +} +alias BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION; + +struct DCB { + DWORD DCBlength = DCB.sizeof; + DWORD BaudRate; +/+ + DWORD fBinary:1; // Binary Mode (skip EOF check) + DWORD fParity:1; // Enable parity checking + DWORD fOutxCtsFlow:1; // CTS handshaking on output + DWORD fOutxDsrFlow:1; // DSR handshaking on output + DWORD fDtrControl:2; // DTR Flow control + DWORD fDsrSensitivity:1; // DSR Sensitivity + DWORD fTXContinueOnXoff:1; // Continue TX when Xoff sent + DWORD fOutX:1; // Enable output X-ON/X-OFF + DWORD fInX:1; // Enable input X-ON/X-OFF + DWORD fErrorChar:1; // Enable Err Replacement + DWORD fNull:1; // Enable Null stripping + DWORD fRtsControl:2; // Rts Flow control + DWORD fAbortOnError:1; // Abort all reads and writes on Error + DWORD fDummy2:17; // Reserved ++/ + uint _bf; + bool fBinary(bool f) { _bf = (_bf & ~0x0001) | f; return f; } + bool fParity(bool f) { _bf = (_bf & ~0x0002) | (f<<1); return f; } + bool fOutxCtsFlow(bool f) { _bf = (_bf & ~0x0004) | (f<<2); return f; } + bool fOutxDsrFlow(bool f) { _bf = (_bf & ~0x0008) | (f<<3); return f; } + byte fDtrControl(byte x) { _bf = (_bf & ~0x0030) | (x<<4); return cast(byte)(x & 3); } + bool fDsrSensitivity(bool f) { _bf = (_bf & ~0x0040) | (f<<6); return f; } + bool fTXContinueOnXoff(bool f) { _bf = (_bf & ~0x0080) | (f<<7); return f; } + bool fOutX(bool f) { _bf = (_bf & ~0x0100) | (f<<8); return f; } + bool fInX(bool f) { _bf = (_bf & ~0x0200) | (f<<9); return f; } + bool fErrorChar(bool f) { _bf = (_bf & ~0x0400) | (f<<10); return f; } + bool fNull(bool f) { _bf = (_bf & ~0x0800) | (f<<11); return f; } + byte fRtsControl(byte x) { _bf = (_bf & ~0x3000) | (x<<12); return cast(byte)(x & 3); } + bool fAbortOnError(bool f) { _bf = (_bf & ~0x4000) | (f<<14); return f; } + + bool fBinary() { return cast(bool) (_bf & 1); } + bool fParity() { return cast(bool) (_bf & 2); } + bool fOutxCtsFlow() { return cast(bool) (_bf & 4); } + bool fOutxDsrFlow() { return cast(bool) (_bf & 8); } + byte fDtrControl() { return cast(byte) ((_bf & (32+16))>>4); } + bool fDsrSensitivity() { return cast(bool) (_bf & 64); } + bool fTXContinueOnXoff() { return cast(bool) (_bf & 128); } + bool fOutX() { return cast(bool) (_bf & 256); } + bool fInX() { return cast(bool) (_bf & 512); } + bool fErrorChar() { return cast(bool) (_bf & 1024); } + bool fNull() { return cast(bool) (_bf & 2048); } + byte fRtsControl() { return cast(byte) ((_bf & (4096+8192))>>12); } + bool fAbortOnError() { return cast(bool) (_bf & 16384); } + + WORD wReserved; + WORD XonLim; + WORD XoffLim; + BYTE ByteSize; + BYTE Parity; + BYTE StopBits; + char XonChar; + char XoffChar; + char ErrorChar; + char EofChar; + char EvtChar; + WORD wReserved1; +} +alias DCB* LPDCB; + +struct COMMCONFIG { + DWORD dwSize = COMMCONFIG.sizeof; + WORD wVersion; + WORD wReserved; + DCB dcb; + DWORD dwProviderSubType; + DWORD dwProviderOffset; + DWORD dwProviderSize; + WCHAR _wcProviderData; + + WCHAR* wcProviderData() { return &_wcProviderData; } +} +alias COMMCONFIG* LPCOMMCONFIG; + +struct COMMTIMEOUTS { + DWORD ReadIntervalTimeout; + DWORD ReadTotalTimeoutMultiplier; + DWORD ReadTotalTimeoutConstant; + DWORD WriteTotalTimeoutMultiplier; + DWORD WriteTotalTimeoutConstant; +} +alias COMMTIMEOUTS* LPCOMMTIMEOUTS; + +struct COMSTAT { +/+ + DWORD fCtsHold:1; + DWORD fDsrHold:1; + DWORD fRlsdHold:1; + DWORD fXoffHold:1; + DWORD fXoffSent:1; + DWORD fEof:1; + DWORD fTxim:1; + DWORD fReserved:25; ++/ + DWORD _bf; + bool fCtsHold(bool f) { _bf = (_bf & ~1) | f; return f; } + bool fDsrHold(bool f) { _bf = (_bf & ~2) | (f<<1); return f; } + bool fRlsdHold(bool f) { _bf = (_bf & ~4) | (f<<2); return f; } + bool fXoffHold(bool f) { _bf = (_bf & ~8) | (f<<3); return f; } + bool fXoffSent(bool f) { _bf = (_bf & ~16) | (f<<4); return f; } + bool fEof(bool f) { _bf = (_bf & ~32) | (f<<5); return f; } + bool fTxim(bool f) { _bf = (_bf & ~64) | (f<<6); return f; } + + bool fCtsHold() { return cast(bool) (_bf & 1); } + bool fDsrHold() { return cast(bool) (_bf & 2); } + bool fRlsdHold() { return cast(bool) (_bf & 4); } + bool fXoffHold() { return cast(bool) (_bf & 8); } + bool fXoffSent() { return cast(bool) (_bf & 16); } + bool fEof() { return cast(bool) (_bf & 32); } + bool fTxim() { return cast(bool) (_bf & 64); } + + DWORD cbInQue; + DWORD cbOutQue; +} +alias COMSTAT* LPCOMSTAT; + +struct CREATE_PROCESS_DEBUG_INFO { + HANDLE hFile; + HANDLE hProcess; + HANDLE hThread; + LPVOID lpBaseOfImage; + DWORD dwDebugInfoFileOffset; + DWORD nDebugInfoSize; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; + LPVOID lpImageName; + WORD fUnicode; +} +alias CREATE_PROCESS_DEBUG_INFO* LPCREATE_PROCESS_DEBUG_INFO; + +struct CREATE_THREAD_DEBUG_INFO { + HANDLE hThread; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; +} +alias CREATE_THREAD_DEBUG_INFO* LPCREATE_THREAD_DEBUG_INFO; + +struct EXCEPTION_DEBUG_INFO { + EXCEPTION_RECORD ExceptionRecord; + DWORD dwFirstChance; +} +alias EXCEPTION_DEBUG_INFO* LPEXCEPTION_DEBUG_INFO; + +struct EXIT_THREAD_DEBUG_INFO { + DWORD dwExitCode; +} +alias EXIT_THREAD_DEBUG_INFO* LPEXIT_THREAD_DEBUG_INFO; + +struct EXIT_PROCESS_DEBUG_INFO { + DWORD dwExitCode; +} +alias EXIT_PROCESS_DEBUG_INFO* LPEXIT_PROCESS_DEBUG_INFO; + +struct LOAD_DLL_DEBUG_INFO { + HANDLE hFile; + LPVOID lpBaseOfDll; + DWORD dwDebugInfoFileOffset; + DWORD nDebugInfoSize; + LPVOID lpImageName; + WORD fUnicode; +} +alias LOAD_DLL_DEBUG_INFO* LPLOAD_DLL_DEBUG_INFO; + +struct UNLOAD_DLL_DEBUG_INFO { + LPVOID lpBaseOfDll; +} +alias UNLOAD_DLL_DEBUG_INFO* LPUNLOAD_DLL_DEBUG_INFO; + +struct OUTPUT_DEBUG_STRING_INFO { + LPSTR lpDebugStringData; + WORD fUnicode; + WORD nDebugStringLength; +} +alias OUTPUT_DEBUG_STRING_INFO* LPOUTPUT_DEBUG_STRING_INFO; + +struct RIP_INFO { + DWORD dwError; + DWORD dwType; +} +alias RIP_INFO* LPRIP_INFO; + +struct DEBUG_EVENT { + DWORD dwDebugEventCode; + DWORD dwProcessId; + DWORD dwThreadId; + union { + EXCEPTION_DEBUG_INFO Exception; + CREATE_THREAD_DEBUG_INFO CreateThread; + CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; + EXIT_THREAD_DEBUG_INFO ExitThread; + EXIT_PROCESS_DEBUG_INFO ExitProcess; + LOAD_DLL_DEBUG_INFO LoadDll; + UNLOAD_DLL_DEBUG_INFO UnloadDll; + OUTPUT_DEBUG_STRING_INFO DebugString; + RIP_INFO RipInfo; + } +} +alias DEBUG_EVENT* LPDEBUG_EVENT; + +struct OVERLAPPED { + ULONG_PTR Internal; + ULONG_PTR InternalHigh; + union { + struct { + DWORD Offset; + DWORD OffsetHigh; + } + PVOID Pointer; + } + HANDLE hEvent; +} +alias OVERLAPPED* POVERLAPPED, LPOVERLAPPED; + +struct STARTUPINFOA { + DWORD cb = STARTUPINFOA.sizeof; + LPSTR lpReserved; + LPSTR lpDesktop; + LPSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + PBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} +alias STARTUPINFOA* LPSTARTUPINFOA; + +struct STARTUPINFOW { + DWORD cb = STARTUPINFOW.sizeof; + LPWSTR lpReserved; + LPWSTR lpDesktop; + LPWSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + PBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} +alias STARTUPINFOW* LPSTARTUPINFOW; + +struct PROCESS_INFORMATION { + HANDLE hProcess; + HANDLE hThread; + DWORD dwProcessId; + DWORD dwThreadId; +} +alias PROCESS_INFORMATION* PPROCESS_INFORMATION, LPPROCESS_INFORMATION; + +struct CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + CRITICAL_SECTION* CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD[2] Spare; +} +alias CRITICAL_SECTION_DEBUG* PCRITICAL_SECTION_DEBUG; + +struct CRITICAL_SECTION { + PCRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + DWORD SpinCount; +} +alias CRITICAL_SECTION* PCRITICAL_SECTION, LPCRITICAL_SECTION; + +struct SYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; +} +alias SYSTEMTIME* LPSYSTEMTIME; + +struct WIN32_FILE_ATTRIBUTE_DATA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +} +alias WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; + +struct WIN32_FIND_DATAA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +// #ifdef _WIN32_WCE +// DWORD dwOID; +// #else + DWORD dwReserved0; + DWORD dwReserved1; +// #endif + CHAR[MAX_PATH] cFileName; +// #ifndef _WIN32_WCE + CHAR[14] cAlternateFileName; +// #endif +} +alias WIN32_FIND_DATAA* PWIN32_FIND_DATAA, LPWIN32_FIND_DATAA; + +struct WIN32_FIND_DATAW { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +// #ifdef _WIN32_WCE +// DWORD dwOID; +// #else + DWORD dwReserved0; + DWORD dwReserved1; +// #endif + WCHAR[MAX_PATH] cFileName; +// #ifndef _WIN32_WCE + WCHAR[14] cAlternateFileName; +// #endif +} +alias WIN32_FIND_DATAW* PWIN32_FIND_DATAW, LPWIN32_FIND_DATAW; + +struct WIN32_STREAM_ID { + DWORD dwStreamId; + DWORD dwStreamAttributes; + LARGE_INTEGER Size; + DWORD dwStreamNameSize; + WCHAR _cStreamName; + + WCHAR* cStreamName() { return &_cStreamName; } +} +alias WIN32_STREAM_ID* LPWIN32_STREAM_ID; + +enum FINDEX_INFO_LEVELS { + FindExInfoStandard, + FindExInfoMaxInfoLevel +} + +enum FINDEX_SEARCH_OPS { + FindExSearchNameMatch, + FindExSearchLimitToDirectories, + FindExSearchLimitToDevices, + FindExSearchMaxSearchOp +} + +enum ACL_INFORMATION_CLASS { + AclRevisionInformation = 1, + AclSizeInformation +} + +struct HW_PROFILE_INFOA { + DWORD dwDockInfo; + CHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; + CHAR[MAX_PROFILE_LEN] szHwProfileName; +} +alias HW_PROFILE_INFOA* LPHW_PROFILE_INFOA; + +struct HW_PROFILE_INFOW { + DWORD dwDockInfo; + WCHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; + WCHAR[MAX_PROFILE_LEN] szHwProfileName; +} +alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; + +/* ??? MSDN documents this only for Windows CE/Mobile, but it's used by + * GetFileAttributesEx, which is in desktop Windows. + */ +enum GET_FILEEX_INFO_LEVELS { + GetFileExInfoStandard, + GetFileExMaxInfoLevel +} + +struct SYSTEM_INFO { + union { + DWORD dwOemId; + struct { + WORD wProcessorArchitecture; + WORD wReserved; + } + } + DWORD dwPageSize; + PVOID lpMinimumApplicationAddress; + PVOID lpMaximumApplicationAddress; + DWORD_PTR dwActiveProcessorMask; + DWORD dwNumberOfProcessors; + DWORD dwProcessorType; + DWORD dwAllocationGranularity; + WORD wProcessorLevel; + WORD wProcessorRevision; +} +alias SYSTEM_INFO* LPSYSTEM_INFO; + +static if (_WIN32_WINNT >= 0x500) { + struct SYSTEM_POWER_STATUS { + BYTE ACLineStatus; + BYTE BatteryFlag; + BYTE BatteryLifePercent; + BYTE Reserved1; + DWORD BatteryLifeTime; + DWORD BatteryFullLifeTime; + } + alias SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; +} + +struct TIME_ZONE_INFORMATION { + LONG Bias; + WCHAR[32] StandardName; + SYSTEMTIME StandardDate; + LONG StandardBias; + WCHAR[32] DaylightName; + SYSTEMTIME DaylightDate; + LONG DaylightBias; +} +alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; + +// MSDN documents this, possibly erroneously, as Win2000+. +struct MEMORYSTATUS { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORD dwTotalPhys; + DWORD dwAvailPhys; + DWORD dwTotalPageFile; + DWORD dwAvailPageFile; + DWORD dwTotalVirtual; + DWORD dwAvailVirtual; +} +alias MEMORYSTATUS* LPMEMORYSTATUS; + +static if (_WIN32_WINNT >= 0x500) { + struct MEMORYSTATUSEX { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORDLONG ullTotalPhys; + DWORDLONG ullAvailPhys; + DWORDLONG ullTotalPageFile; + DWORDLONG ullAvailPageFile; + DWORDLONG ullTotalVirtual; + DWORDLONG ullAvailVirtual; + DWORDLONG ullAvailExtendedVirtual; + } + alias MEMORYSTATUSEX* LPMEMORYSTATUSEX; +} + +struct LDT_ENTRY { + WORD LimitLow; + WORD BaseLow; + struct { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + + byte Type(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0xE0) | f); return cast(byte)(f & 0x1F); } + byte Dpl(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0x9F) | (f<<5)); return cast(byte)(f & 3); } + bool Pres(bool f) { Flags1 = cast(BYTE) ((Flags1 & 0x7F) | (f<<7)); return f; } + + byte LimitHi(byte f) { Flags2 = cast(BYTE) ((Flags2 & 0xF0) | (f&0x0F)); return cast(byte)(f & 0x0F); } + bool Sys(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xEF) | (f<<4)); return f; } + // Next bit is reserved + bool Default_Big(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xBF) | (f<<6)); return f; } + bool Granularity(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0x7F) | (f<<7)); return f; } + + byte Type() { return cast(byte) (Flags1 & 0x1F); } + byte Dpl() { return cast(byte) ((Flags1 & 0x60)>>5); } + bool Pres() { return cast(bool) (Flags1 & 0x80); } + + byte LimitHi() { return cast(byte) (Flags2 & 0x0F); } + bool Sys() { return cast(bool) (Flags2 & 0x10); } + bool Default_Big() { return cast(bool) (Flags2 & 0x40); } + bool Granularity() { return cast(bool) (Flags2 & 0x80); } + } +/+ + union HighWord { + struct Bytes { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + } + struct Bits { + DWORD BaseMid:8; + DWORD Type:5; + DWORD Dpl:2; + DWORD Pres:1; + DWORD LimitHi:4; + DWORD Sys:1; + DWORD Reserved_0:1; + DWORD Default_Big:1; + DWORD Granularity:1; + DWORD BaseHi:8; + } + } ++/ +} +alias LDT_ENTRY* PLDT_ENTRY, LPLDT_ENTRY; + +/* As with the other memory management functions and structures, MSDN's + * Windows version info shall be taken with a cup of salt. + */ +struct PROCESS_HEAP_ENTRY { + PVOID lpData; + DWORD cbData; + BYTE cbOverhead; + BYTE iRegionIndex; + WORD wFlags; + union { + struct Block { + HANDLE hMem; + DWORD[3] dwReserved; + } + struct Region { + DWORD dwCommittedSize; + DWORD dwUnCommittedSize; + LPVOID lpFirstBlock; + LPVOID lpLastBlock; + } + } +} +alias PROCESS_HEAP_ENTRY* LPPROCESS_HEAP_ENTRY; + +struct OFSTRUCT { + BYTE cBytes = OFSTRUCT.sizeof; + BYTE fFixedDisk; + WORD nErrCode; + WORD Reserved1; + WORD Reserved2; + CHAR[128] szPathName; // const OFS_MAXPATHNAME = 128; +} +alias OFSTRUCT* LPOFSTRUCT, POFSTRUCT; + +/* ??? MSDN documents this only for Windows CE, but it's used by + * ImageGetCertificateData, which is in desktop Windows. + */ +struct WIN_CERTIFICATE { + DWORD dwLength; + WORD wRevision; + WORD wCertificateType; + BYTE _bCertificate; + + BYTE* bCertificate() { return &_bCertificate; } +} +alias WIN_CERTIFICATE* LPWIN_CERTIFICATE; + +static if (_WIN32_WINNT >= 0x500) { + enum COMPUTER_NAME_FORMAT { + ComputerNameNetBIOS, + ComputerNameDnsHostname, + ComputerNameDnsDomain, + ComputerNameDnsFullyQualified, + ComputerNamePhysicalNetBIOS, + ComputerNamePhysicalDnsHostname, + ComputerNamePhysicalDnsDomain, + ComputerNamePhysicalDnsFullyQualified, + ComputerNameMax + } +} + +static if (_WIN32_WINNT >= 0x501) { + struct ACTCTXA { + ULONG cbSize = this.sizeof; + DWORD dwFlags; + LPCSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCSTR lpAssemblyDirectory; + LPCSTR lpResourceName; + LPCSTR lpApplicationName; + HMODULE hModule; + } + alias ACTCTXA* PACTCTXA; + alias const(ACTCTXA)* PCACTCTXA; + + struct ACTCTXW { + ULONG cbSize = this.sizeof; + DWORD dwFlags; + LPCWSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCWSTR lpAssemblyDirectory; + LPCWSTR lpResourceName; + LPCWSTR lpApplicationName; + HMODULE hModule; + } + alias ACTCTXW* PACTCTXW; + alias const(ACTCTXW)* PCACTCTXW; + + struct ACTCTX_SECTION_KEYED_DATA { + ULONG cbSize = this.sizeof; + ULONG ulDataFormatVersion; + PVOID lpData; + ULONG ulLength; + PVOID lpSectionGlobalData; + ULONG ulSectionGlobalDataLength; + PVOID lpSectionBase; + ULONG ulSectionTotalLength; + HANDLE hActCtx; + HANDLE ulAssemblyRosterIndex; + } + alias ACTCTX_SECTION_KEYED_DATA* PACTCTX_SECTION_KEYED_DATA; + alias const(ACTCTX_SECTION_KEYED_DATA)* PCACTCTX_SECTION_KEYED_DATA; + + enum MEMORY_RESOURCE_NOTIFICATION_TYPE { + LowMemoryResourceNotification, + HighMemoryResourceNotification + } + +} // (_WIN32_WINNT >= 0x501) + +static if (_WIN32_WINNT >= 0x410) { + /* apparently used only by SetThreadExecutionState (Win2000+) + * and DDK functions (version compatibility not established) + */ + alias DWORD EXECUTION_STATE; +} + +// Callbacks +extern (Windows) { + alias DWORD function(LPVOID) LPTHREAD_START_ROUTINE; + alias DWORD function(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, + DWORD, DWORD, HANDLE, HANDLE, LPVOID) LPPROGRESS_ROUTINE; + alias void function(PVOID) LPFIBER_START_ROUTINE; + + alias BOOL function(HMODULE, LPCSTR, LPCSTR, WORD, LONG) ENUMRESLANGPROCA; + alias BOOL function(HMODULE, LPCWSTR, LPCWSTR, WORD, LONG) ENUMRESLANGPROCW; + alias BOOL function(HMODULE, LPCSTR, LPSTR, LONG) ENUMRESNAMEPROCA; + alias BOOL function(HMODULE, LPCWSTR, LPWSTR, LONG) ENUMRESNAMEPROCW; + alias BOOL function(HMODULE, LPSTR, LONG) ENUMRESTYPEPROCA; + alias BOOL function(HMODULE, LPWSTR, LONG) ENUMRESTYPEPROCW; + alias void function(DWORD, DWORD, LPOVERLAPPED) LPOVERLAPPED_COMPLETION_ROUTINE; + alias LONG function(LPEXCEPTION_POINTERS) PTOP_LEVEL_EXCEPTION_FILTER; + alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; + + alias void function(ULONG_PTR) PAPCFUNC; + alias void function(PVOID, DWORD, DWORD) PTIMERAPCROUTINE; + + static if (_WIN32_WINNT >= 0x500) { + alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACK; + } +} + +LPTSTR MAKEINTATOM()(ushort i) { + return cast(LPTSTR) cast(size_t) i; +} + +extern (Windows) { + ATOM AddAtomA(LPCSTR); + ATOM AddAtomW(LPCWSTR); + BOOL AreFileApisANSI(); + BOOL Beep(DWORD, DWORD); + HANDLE BeginUpdateResourceA(LPCSTR, BOOL); + HANDLE BeginUpdateResourceW(LPCWSTR, BOOL); + BOOL BuildCommDCBA(LPCSTR, LPDCB); + BOOL BuildCommDCBW(LPCWSTR, LPDCB); + BOOL BuildCommDCBAndTimeoutsA(LPCSTR, LPDCB, LPCOMMTIMEOUTS); + BOOL BuildCommDCBAndTimeoutsW(LPCWSTR, LPDCB, LPCOMMTIMEOUTS); + BOOL CallNamedPipeA(LPCSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); + BOOL CallNamedPipeW(LPCWSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); + BOOL CancelDeviceWakeupRequest(HANDLE); + BOOL CheckTokenMembership(HANDLE, PSID, PBOOL); + BOOL ClearCommBreak(HANDLE); + BOOL ClearCommError(HANDLE, PDWORD, LPCOMSTAT); + BOOL CloseHandle(HANDLE); + BOOL CommConfigDialogA(LPCSTR, HWND, LPCOMMCONFIG); + BOOL CommConfigDialogW(LPCWSTR, HWND, LPCOMMCONFIG); + LONG CompareFileTime(const(FILETIME)*, const(FILETIME)*); + BOOL ContinueDebugEvent(DWORD, DWORD, DWORD); + BOOL CopyFileA(LPCSTR, LPCSTR, BOOL); + BOOL CopyFileW(LPCWSTR, LPCWSTR, BOOL); + BOOL CopyFileExA(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); + BOOL CopyFileExW(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); + + /+ FIXME + alias memmove RtlMoveMemory; + alias memcpy RtlCopyMemory; + + void RtlFillMemory(PVOID dest, SIZE_T len, BYTE fill) { + memset(dest, fill, len); + } + + void RtlZeroMemory(PVOID dest, SIZE_T len) { + RtlFillMemory(dest, len, 0); + } + + alias RtlMoveMemory MoveMemory; + alias RtlCopyMemory CopyMemory; + alias RtlFillMemory FillMemory; + alias RtlZeroMemory ZeroMemory; + +/ + BOOL CreateDirectoryA(LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryW(LPCWSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryExA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryExW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); + HANDLE CreateEventA(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR); + HANDLE CreateEventW(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR); + HANDLE CreateFileA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); + HANDLE CreateFileW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); + HANDLE CreateIoCompletionPort(HANDLE, HANDLE, ULONG_PTR, DWORD); + HANDLE CreateMailslotA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateMailslotW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); + HANDLE CreateMutexW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); + BOOL CreatePipe(PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD); + BOOL CreateProcessA(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); + BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR); + HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR); + HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); + BOOL DebugActiveProcess(DWORD); + void DebugBreak(); + ATOM DeleteAtom(ATOM); + void DeleteCriticalSection(PCRITICAL_SECTION); + BOOL DeleteFileA(LPCSTR); + BOOL DeleteFileW(LPCWSTR); + BOOL DisableThreadLibraryCalls(HMODULE); + BOOL DosDateTimeToFileTime(WORD, WORD, LPFILETIME); + BOOL DuplicateHandle(HANDLE, HANDLE, HANDLE, PHANDLE, DWORD, BOOL, DWORD); + BOOL EndUpdateResourceA(HANDLE, BOOL); + BOOL EndUpdateResourceW(HANDLE, BOOL); + void EnterCriticalSection(LPCRITICAL_SECTION); + BOOL EnumResourceLanguagesA(HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROC, LONG_PTR); + BOOL EnumResourceLanguagesW(HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROC, LONG_PTR); + BOOL EnumResourceNamesA(HMODULE, LPCSTR, ENUMRESNAMEPROC, LONG_PTR); + BOOL EnumResourceNamesW(HMODULE, LPCWSTR, ENUMRESNAMEPROC, LONG_PTR); + BOOL EnumResourceTypesA(HMODULE, ENUMRESTYPEPROC, LONG_PTR); + BOOL EnumResourceTypesW(HMODULE, ENUMRESTYPEPROC, LONG_PTR); + BOOL EscapeCommFunction(HANDLE, DWORD); + void ExitProcess(UINT); // Never returns + void ExitThread(DWORD); // Never returns + DWORD ExpandEnvironmentStringsA(LPCSTR, LPSTR, DWORD); + DWORD ExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD); + void FatalAppExitA(UINT, LPCSTR); + void FatalAppExitW(UINT, LPCWSTR); + void FatalExit(int); + BOOL FileTimeToDosDateTime(const(FILETIME)*, LPWORD, LPWORD); + BOOL FileTimeToLocalFileTime(const(FILETIME)*, LPFILETIME); + BOOL FileTimeToSystemTime(const(FILETIME)*, LPSYSTEMTIME); + ATOM FindAtomA(LPCSTR); + ATOM FindAtomW(LPCWSTR); + BOOL FindClose(HANDLE); + BOOL FindCloseChangeNotification(HANDLE); + HANDLE FindFirstChangeNotificationA(LPCSTR, BOOL, DWORD); + HANDLE FindFirstChangeNotificationW(LPCWSTR, BOOL, DWORD); + HANDLE FindFirstFileA(LPCSTR, LPWIN32_FIND_DATAA); + HANDLE FindFirstFileW(LPCWSTR, LPWIN32_FIND_DATAW); + BOOL FindNextChangeNotification(HANDLE); + BOOL FindNextFileA(HANDLE, LPWIN32_FIND_DATAA); + BOOL FindNextFileW(HANDLE, LPWIN32_FIND_DATAW); + HRSRC FindResourceA(HMODULE, LPCSTR, LPCSTR); + HRSRC FindResourceW(HINSTANCE, LPCWSTR, LPCWSTR); + HRSRC FindResourceExA(HINSTANCE, LPCSTR, LPCSTR, WORD); + HRSRC FindResourceExW(HINSTANCE, LPCWSTR, LPCWSTR, WORD); + BOOL FlushFileBuffers(HANDLE); + BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD); + DWORD FormatMessageA(DWORD, PCVOID, DWORD, DWORD, LPSTR, DWORD, va_list*); + DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); + BOOL FreeEnvironmentStringsA(LPSTR); + BOOL FreeEnvironmentStringsW(LPWSTR); + BOOL FreeLibrary(HMODULE); + void FreeLibraryAndExitThread(HMODULE, DWORD); // never returns + BOOL FreeResource(HGLOBAL); + UINT GetAtomNameA(ATOM, LPSTR, int); + UINT GetAtomNameW(ATOM, LPWSTR, int); + LPSTR GetCommandLineA(); + LPWSTR GetCommandLineW(); + BOOL GetCommConfig(HANDLE, LPCOMMCONFIG, PDWORD); + BOOL GetCommMask(HANDLE, PDWORD); + BOOL GetCommModemStatus(HANDLE, PDWORD); + BOOL GetCommProperties(HANDLE, LPCOMMPROP); + BOOL GetCommState(HANDLE, LPDCB); + BOOL GetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); + BOOL GetComputerNameA(LPSTR, PDWORD); + BOOL GetComputerNameW(LPWSTR, PDWORD); + DWORD GetCurrentDirectoryA(DWORD, LPSTR); + DWORD GetCurrentDirectoryW(DWORD, LPWSTR); + HANDLE GetCurrentProcess(); + DWORD GetCurrentProcessId(); + HANDLE GetCurrentThread(); +/* In MinGW: +#ifdef _WIN32_WCE +extern DWORD GetCurrentThreadId(void); +#else +WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); +#endif +*/ + DWORD GetCurrentThreadId(); + + alias GetTickCount GetCurrentTime; + + BOOL GetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, PDWORD); + BOOL GetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, PDWORD); + BOOL GetDiskFreeSpaceA(LPCSTR, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetDiskFreeSpaceW(LPCWSTR, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetDiskFreeSpaceExA(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); + BOOL GetDiskFreeSpaceExW(LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); + UINT GetDriveTypeA(LPCSTR); + UINT GetDriveTypeW(LPCWSTR); + LPSTR GetEnvironmentStrings(); // ??? + LPSTR GetEnvironmentStringsA(); + LPWSTR GetEnvironmentStringsW(); + DWORD GetEnvironmentVariableA(LPCSTR, LPSTR, DWORD); + DWORD GetEnvironmentVariableW(LPCWSTR, LPWSTR, DWORD); + BOOL GetExitCodeProcess(HANDLE, PDWORD); + BOOL GetExitCodeThread(HANDLE, PDWORD); + DWORD GetFileAttributesA(LPCSTR); + DWORD GetFileAttributesW(LPCWSTR); + BOOL GetFileInformationByHandle(HANDLE, LPBY_HANDLE_FILE_INFORMATION); + DWORD GetFileSize(HANDLE, PDWORD); + BOOL GetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); + DWORD GetFileType(HANDLE); + DWORD GetFullPathNameA(LPCSTR, DWORD, LPSTR, LPSTR*); + DWORD GetFullPathNameW(LPCWSTR, DWORD, LPWSTR, LPWSTR*); + DWORD GetLastError(); + void GetLocalTime(LPSYSTEMTIME); + DWORD GetLogicalDrives(); + DWORD GetLogicalDriveStringsA(DWORD, LPSTR); + DWORD GetLogicalDriveStringsW(DWORD, LPWSTR); + BOOL GetMailslotInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); + DWORD GetModuleFileNameA(HINSTANCE, LPSTR, DWORD); + DWORD GetModuleFileNameW(HINSTANCE, LPWSTR, DWORD); + HMODULE GetModuleHandleA(LPCSTR); + HMODULE GetModuleHandleW(LPCWSTR); + BOOL GetNamedPipeHandleStateA(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); + BOOL GetNamedPipeHandleStateW(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); + BOOL GetNamedPipeInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetOverlappedResult(HANDLE, LPOVERLAPPED, PDWORD, BOOL); + DWORD GetPriorityClass(HANDLE); + UINT GetPrivateProfileIntA(LPCSTR, LPCSTR, INT, LPCSTR); + UINT GetPrivateProfileIntW(LPCWSTR, LPCWSTR, INT, LPCWSTR); + DWORD GetPrivateProfileSectionA(LPCSTR, LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileSectionW(LPCWSTR, LPWSTR, DWORD, LPCWSTR); + DWORD GetPrivateProfileSectionNamesA(LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileSectionNamesW(LPWSTR, DWORD, LPCWSTR); + DWORD GetPrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPCWSTR); + BOOL GetPrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); + BOOL GetPrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); + FARPROC GetProcAddress(HINSTANCE, LPCSTR); + BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); + DWORD GetProcessVersion(DWORD); + UINT GetProfileIntA(LPCSTR, LPCSTR, INT); + UINT GetProfileIntW(LPCWSTR, LPCWSTR, INT); + DWORD GetProfileSectionA(LPCSTR, LPSTR, DWORD); + DWORD GetProfileSectionW(LPCWSTR, LPWSTR, DWORD); + DWORD GetProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD); + DWORD GetProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD); + DWORD GetShortPathNameA(LPCSTR, LPSTR, DWORD); + DWORD GetShortPathNameW(LPCWSTR, LPWSTR, DWORD); + VOID GetStartupInfoA(LPSTARTUPINFOA); + VOID GetStartupInfoW(LPSTARTUPINFOW); + HANDLE GetStdHandle(DWORD); + UINT GetSystemDirectoryA(LPSTR, UINT); + UINT GetSystemDirectoryW(LPWSTR, UINT); + VOID GetSystemInfo(LPSYSTEM_INFO); + VOID GetSystemTime(LPSYSTEMTIME); + BOOL GetSystemTimeAdjustment(PDWORD, PDWORD, PBOOL); + void GetSystemTimeAsFileTime(LPFILETIME); + UINT GetTempFileNameA(LPCSTR, LPCSTR, UINT, LPSTR); + UINT GetTempFileNameW(LPCWSTR, LPCWSTR, UINT, LPWSTR); + DWORD GetTempPathA(DWORD, LPSTR); + DWORD GetTempPathW(DWORD, LPWSTR); + BOOL GetThreadContext(HANDLE, LPCONTEXT); + int GetThreadPriority(HANDLE); + BOOL GetThreadSelectorEntry(HANDLE, DWORD, LPLDT_ENTRY); + DWORD GetTickCount(); + DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION); + BOOL GetUserNameA (LPSTR, PDWORD); + BOOL GetUserNameW(LPWSTR, PDWORD); + DWORD GetVersion(); + BOOL GetVersionExA(LPOSVERSIONINFOA); + BOOL GetVersionExW(LPOSVERSIONINFOW); + BOOL GetVolumeInformationA(LPCSTR, LPSTR, DWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); + BOOL GetVolumeInformationW(LPCWSTR, LPWSTR, DWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); + UINT GetWindowsDirectoryA(LPSTR, UINT); + UINT GetWindowsDirectoryW(LPWSTR, UINT); + DWORD GetWindowThreadProcessId(HWND, PDWORD); + ATOM GlobalAddAtomA(LPCSTR); + ATOM GlobalAddAtomW(LPCWSTR); + ATOM GlobalDeleteAtom(ATOM); + ATOM GlobalFindAtomA(LPCSTR); + ATOM GlobalFindAtomW(LPCWSTR); + UINT GlobalGetAtomNameA(ATOM, LPSTR, int); + UINT GlobalGetAtomNameW(ATOM, LPWSTR, int); + + bool HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped) { + return lpOverlapped.Internal != STATUS_PENDING; + } + + BOOL InitAtomTable(DWORD); + VOID InitializeCriticalSection(LPCRITICAL_SECTION); + /* ??? The next two are allegedly obsolete and "supported only for + * backward compatibility with the 16-bit Windows API". Yet the + * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ + * only. Where's the mistake? + */ + BOOL IsBadHugeReadPtr(PCVOID, UINT_PTR); + BOOL IsBadHugeWritePtr(PVOID, UINT_PTR); + BOOL IsBadReadPtr(PCVOID, UINT_PTR); + BOOL IsBadStringPtrA(LPCSTR, UINT_PTR); + BOOL IsBadStringPtrW(LPCWSTR, UINT_PTR); + BOOL IsBadWritePtr(PVOID, UINT_PTR); + void LeaveCriticalSection(LPCRITICAL_SECTION); + HINSTANCE LoadLibraryA(LPCSTR); + HINSTANCE LoadLibraryW(LPCWSTR); + HINSTANCE LoadLibraryExA(LPCSTR, HANDLE, DWORD); + HINSTANCE LoadLibraryExW(LPCWSTR, HANDLE, DWORD); + DWORD LoadModule(LPCSTR, PVOID); + HGLOBAL LoadResource(HINSTANCE, HRSRC); + BOOL LocalFileTimeToFileTime(const(FILETIME)*, LPFILETIME); + BOOL LockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + PVOID LockResource(HGLOBAL); + + LPSTR lstrcatA(LPSTR, LPCSTR); + LPWSTR lstrcatW(LPWSTR, LPCWSTR); + int lstrcmpA(LPCSTR, LPCSTR); + int lstrcmpiA(LPCSTR, LPCSTR); + int lstrcmpiW(LPCWSTR, LPCWSTR); + int lstrcmpW(LPCWSTR, LPCWSTR); + LPSTR lstrcpyA(LPSTR, LPCSTR); + LPSTR lstrcpynA(LPSTR, LPCSTR, int); + LPWSTR lstrcpynW(LPWSTR, LPCWSTR, int); + LPWSTR lstrcpyW(LPWSTR, LPCWSTR); + int lstrlenA(LPCSTR); + int lstrlenW(LPCWSTR); + + BOOL MoveFileA(LPCSTR, LPCSTR); + BOOL MoveFileW(LPCWSTR, LPCWSTR); + int MulDiv(int, int, int); + HANDLE OpenEventA(DWORD, BOOL, LPCSTR); + HANDLE OpenEventW(DWORD, BOOL, LPCWSTR); + deprecated HFILE OpenFile(LPCSTR, LPOFSTRUCT, UINT); + HANDLE OpenMutexA(DWORD, BOOL, LPCSTR); + HANDLE OpenMutexW(DWORD, BOOL, LPCWSTR); + HANDLE OpenProcess(DWORD, BOOL, DWORD); + HANDLE OpenSemaphoreA(DWORD, BOOL, LPCSTR); + HANDLE OpenSemaphoreW(DWORD, BOOL, LPCWSTR); + void OutputDebugStringA(LPCSTR); + void OutputDebugStringW(LPCWSTR); + BOOL PeekNamedPipe(HANDLE, PVOID, DWORD, PDWORD, PDWORD, PDWORD); + BOOL PulseEvent(HANDLE); + BOOL PurgeComm(HANDLE, DWORD); + BOOL QueryPerformanceCounter(PLARGE_INTEGER); + BOOL QueryPerformanceFrequency(PLARGE_INTEGER); + DWORD QueueUserAPC(PAPCFUNC, HANDLE, ULONG_PTR); + void RaiseException(DWORD, DWORD, DWORD, const(DWORD)*); + BOOL ReadFile(HANDLE, PVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL ReadFileEx(HANDLE, PVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL ReadProcessMemory(HANDLE, PCVOID, PVOID, SIZE_T, SIZE_T*); + BOOL ReleaseMutex(HANDLE); + BOOL ReleaseSemaphore(HANDLE, LONG, LPLONG); + BOOL RemoveDirectoryA(LPCSTR); + BOOL RemoveDirectoryW(LPCWSTR); +/* In MinGW: +#ifdef _WIN32_WCE +extern BOOL ResetEvent(HANDLE); +#else +WINBASEAPI BOOL WINAPI ResetEvent(HANDLE); +#endif +*/ + BOOL ResetEvent(HANDLE); + DWORD ResumeThread(HANDLE); + DWORD SearchPathA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR*); + DWORD SearchPathW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR*); + BOOL SetCommBreak(HANDLE); + BOOL SetCommConfig(HANDLE, LPCOMMCONFIG, DWORD); + BOOL SetCommMask(HANDLE, DWORD); + BOOL SetCommState(HANDLE, LPDCB); + BOOL SetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); + BOOL SetComputerNameA(LPCSTR); + BOOL SetComputerNameW(LPCWSTR); + BOOL SetCurrentDirectoryA(LPCSTR); + BOOL SetCurrentDirectoryW(LPCWSTR); + BOOL SetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, DWORD); + BOOL SetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, DWORD); + BOOL SetEndOfFile(HANDLE); + BOOL SetEnvironmentVariableA(LPCSTR, LPCSTR); + BOOL SetEnvironmentVariableW(LPCWSTR, LPCWSTR); + UINT SetErrorMode(UINT); +/* In MinGW: +#ifdef _WIN32_WCE +extern BOOL SetEvent(HANDLE); +#else +WINBASEAPI BOOL WINAPI SetEvent(HANDLE); +#endif +*/ + BOOL SetEvent(HANDLE); + VOID SetFileApisToANSI(); + VOID SetFileApisToOEM(); + BOOL SetFileAttributesA(LPCSTR, DWORD); + BOOL SetFileAttributesW(LPCWSTR, DWORD); + DWORD SetFilePointer(HANDLE, LONG, PLONG, DWORD); + BOOL SetFileTime(HANDLE, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); + deprecated UINT SetHandleCount(UINT); + void SetLastError(DWORD); + void SetLastErrorEx(DWORD, DWORD); + BOOL SetLocalTime(const(SYSTEMTIME)*); + BOOL SetMailslotInfo(HANDLE, DWORD); + BOOL SetNamedPipeHandleState(HANDLE, PDWORD, PDWORD, PDWORD); + BOOL SetPriorityClass(HANDLE, DWORD); + BOOL SetStdHandle(DWORD, HANDLE); + BOOL SetSystemTime(const(SYSTEMTIME)*); + DWORD SetThreadAffinityMask(HANDLE, DWORD); + BOOL SetThreadContext(HANDLE, const(CONTEXT)*); + BOOL SetThreadPriority(HANDLE, int); + BOOL SetTimeZoneInformation(const(TIME_ZONE_INFORMATION)*); + LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER); + BOOL SetupComm(HANDLE, DWORD, DWORD); + BOOL SetVolumeLabelA(LPCSTR, LPCSTR); + BOOL SetVolumeLabelW(LPCWSTR, LPCWSTR); + + DWORD SizeofResource(HINSTANCE, HRSRC); + void Sleep(DWORD); + DWORD SleepEx(DWORD, BOOL); + DWORD SuspendThread(HANDLE); + BOOL SystemTimeToFileTime(const(SYSTEMTIME)*, LPFILETIME); + BOOL TerminateProcess(HANDLE, UINT); + BOOL TerminateThread(HANDLE, DWORD); + DWORD TlsAlloc(); + BOOL TlsFree(DWORD); + PVOID TlsGetValue(DWORD); + BOOL TlsSetValue(DWORD, PVOID); + BOOL TransactNamedPipe(HANDLE, PVOID, DWORD, PVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL TransmitCommChar(HANDLE, char); + LONG UnhandledExceptionFilter(LPEXCEPTION_POINTERS); + BOOL UnlockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + BOOL WaitCommEvent(HANDLE, PDWORD, LPOVERLAPPED); + BOOL WaitForDebugEvent(LPDEBUG_EVENT, DWORD); + DWORD WaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD); + DWORD WaitForMultipleObjectsEx(DWORD, const(HANDLE)*, BOOL, DWORD, BOOL); + DWORD WaitForSingleObject(HANDLE, DWORD); + DWORD WaitForSingleObjectEx(HANDLE, DWORD, BOOL); + BOOL WaitNamedPipeA(LPCSTR, DWORD); + BOOL WaitNamedPipeW(LPCWSTR, DWORD); + // undocumented on MSDN + BOOL WinLoadTrustProvider(GUID*); + BOOL WriteFile(HANDLE, PCVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL WriteFileEx(HANDLE, PCVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL WritePrivateProfileSectionA(LPCSTR, LPCSTR, LPCSTR); + BOOL WritePrivateProfileSectionW(LPCWSTR, LPCWSTR, LPCWSTR); + BOOL WritePrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPCSTR); + BOOL WritePrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL WritePrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); + BOOL WritePrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); + BOOL WriteProcessMemory(HANDLE, LPVOID, LPCVOID, SIZE_T, SIZE_T*); + BOOL WriteProfileSectionA(LPCSTR, LPCSTR); + BOOL WriteProfileSectionW(LPCWSTR, LPCWSTR); + BOOL WriteProfileStringA(LPCSTR, LPCSTR, LPCSTR); + BOOL WriteProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR); + + /* Memory allocation functions. + * MSDN documents these erroneously as Win2000+; thus it is uncertain what + * version compatibility they really have. + */ + HGLOBAL GlobalAlloc(UINT, DWORD); + HGLOBAL GlobalDiscard(HGLOBAL); + HGLOBAL GlobalFree(HGLOBAL); + HGLOBAL GlobalHandle(PCVOID); + LPVOID GlobalLock(HGLOBAL); + VOID GlobalMemoryStatus(LPMEMORYSTATUS); + HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); + DWORD GlobalSize(HGLOBAL); + BOOL GlobalUnlock(HGLOBAL); + PVOID HeapAlloc(HANDLE, DWORD, DWORD); + SIZE_T HeapCompact(HANDLE, DWORD); + HANDLE HeapCreate(DWORD, DWORD, DWORD); + BOOL HeapDestroy(HANDLE); + BOOL HeapFree(HANDLE, DWORD, PVOID); + BOOL HeapLock(HANDLE); + PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); + DWORD HeapSize(HANDLE, DWORD, PCVOID); + BOOL HeapUnlock(HANDLE); + BOOL HeapValidate(HANDLE, DWORD, PCVOID); + BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); + HLOCAL LocalAlloc(UINT, SIZE_T); + HLOCAL LocalDiscard(HLOCAL); + HLOCAL LocalFree(HLOCAL); + HLOCAL LocalHandle(LPCVOID); + PVOID LocalLock(HLOCAL); + HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); + UINT LocalSize(HLOCAL); + BOOL LocalUnlock(HLOCAL); + PVOID VirtualAlloc(PVOID, DWORD, DWORD, DWORD); + PVOID VirtualAllocEx(HANDLE, PVOID, DWORD, DWORD, DWORD); + BOOL VirtualFree(PVOID, DWORD, DWORD); + BOOL VirtualFreeEx(HANDLE, PVOID, DWORD, DWORD); + BOOL VirtualLock(PVOID, DWORD); + BOOL VirtualProtect(PVOID, DWORD, DWORD, PDWORD); + BOOL VirtualProtectEx(HANDLE, PVOID, DWORD, DWORD, PDWORD); + DWORD VirtualQuery(LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); + DWORD VirtualQueryEx(HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); + BOOL VirtualUnlock(PVOID, DWORD); +// not in MinGW 4.0 - ??? + static if (_WIN32_WINNT >= 0x600) { + BOOL CancelIoEx(HANDLE, LPOVERLAPPED); + } + + BOOL CancelIo(HANDLE); + BOOL CancelWaitableTimer(HANDLE); + PVOID ConvertThreadToFiber(PVOID); + LPVOID CreateFiber(SIZE_T, LPFIBER_START_ROUTINE, LPVOID); + HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); + HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); + void DeleteFiber(PVOID); + BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); + BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); + DWORD GetLongPathNameA(LPCSTR, LPSTR, DWORD); + DWORD GetLongPathNameW(LPCWSTR, LPWSTR, DWORD); + BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION, DWORD); + BOOL IsDebuggerPresent(); + HANDLE OpenWaitableTimerA(DWORD, BOOL, LPCSTR); + HANDLE OpenWaitableTimerW(DWORD, BOOL, LPCWSTR); + DWORD QueryDosDeviceA(LPCSTR, LPSTR, DWORD); + DWORD QueryDosDeviceW(LPCWSTR, LPWSTR, DWORD); + BOOL SetWaitableTimer(HANDLE, const(LARGE_INTEGER)*, LONG, PTIMERAPCROUTINE, PVOID, BOOL); + void SwitchToFiber(PVOID); + + static if (_WIN32_WINNT >= 0x500) { + HANDLE OpenThread(DWORD, BOOL, DWORD); + } + + BOOL AccessCheck(PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, PDWORD, PDWORD, PBOOL); + BOOL AccessCheckAndAuditAlarmA(LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); + BOOL AccessCheckAndAuditAlarmW(LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); + BOOL AddAccessAllowedAce(PACL, DWORD, DWORD, PSID); + BOOL AddAccessDeniedAce(PACL, DWORD, DWORD, PSID); + BOOL AddAce(PACL, DWORD, DWORD, PVOID, DWORD); + BOOL AddAuditAccessAce(PACL, DWORD, DWORD, PSID, BOOL, BOOL); + BOOL AdjustTokenGroups(HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD); + BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); + BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); + BOOL AllocateLocallyUniqueId(PLUID); + BOOL AreAllAccessesGranted(DWORD, DWORD); + BOOL AreAnyAccessesGranted(DWORD, DWORD); + BOOL BackupEventLogA(HANDLE, LPCSTR); + BOOL BackupEventLogW(HANDLE, LPCWSTR); + BOOL BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); + BOOL BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID*); + BOOL BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); + BOOL ClearEventLogA(HANDLE, LPCSTR); + BOOL ClearEventLogW(HANDLE, LPCWSTR); + BOOL CloseEventLog(HANDLE); + BOOL ConnectNamedPipe(HANDLE, LPOVERLAPPED); + BOOL CopySid(DWORD, PSID, PSID); + HANDLE CreateNamedPipeA(LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateNamedPipeW(LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); + BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); + BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); + DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); + BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); + BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); + BOOL DeleteAce(PACL, DWORD); + BOOL DeregisterEventSource(HANDLE); + BOOL DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); + BOOL DeviceIoControl(HANDLE, DWORD, PVOID, DWORD, PVOID, DWORD, PDWORD, POVERLAPPED); + BOOL DisconnectNamedPipe(HANDLE); + BOOL DuplicateToken(HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE); + BOOL DuplicateTokenEx(HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE); + BOOL EqualPrefixSid(PSID, PSID); + BOOL EqualSid(PSID, PSID); + DWORD EraseTape(HANDLE, DWORD, BOOL); + HANDLE FindFirstFileExA(LPCSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); + HANDLE FindFirstFileExW(LPCWSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); + BOOL FindFirstFreeAce(PACL, PVOID*); + PVOID FreeSid(PSID); + BOOL GetAce(PACL, DWORD, LPVOID*); + BOOL GetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); + BOOL GetBinaryTypeA(LPCSTR, PDWORD); + BOOL GetBinaryTypeW(LPCWSTR, PDWORD); + DWORD GetCompressedFileSizeA(LPCSTR, PDWORD); + DWORD GetCompressedFileSizeW(LPCWSTR, PDWORD); + BOOL GetCurrentHwProfileA(LPHW_PROFILE_INFOA); + BOOL GetCurrentHwProfileW(LPHW_PROFILE_INFOW); + BOOL GetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetHandleInformation(HANDLE, PDWORD); + BOOL GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + DWORD GetLengthSid(PSID); + BOOL GetNumberOfEventLogRecords(HANDLE, PDWORD); + BOOL GetOldestEventLogRecord(HANDLE, PDWORD); + BOOL GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetProcessPriorityBoost(HANDLE, PBOOL); + BOOL GetProcessShutdownParameters(PDWORD, PDWORD); + BOOL GetProcessTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); + HWINSTA GetProcessWindowStation(); + BOOL GetProcessWorkingSetSize(HANDLE, PSIZE_T, PSIZE_T); + BOOL GetQueuedCompletionStatus(HANDLE, PDWORD, PULONG_PTR, LPOVERLAPPED*, DWORD); + BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, PDWORD); + BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); + BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); + DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); + BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); + BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); + PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority(PSID); + DWORD GetSidLengthRequired(UCHAR); + PDWORD GetSidSubAuthority(PSID, DWORD); + PUCHAR GetSidSubAuthorityCount(PSID); + DWORD GetTapeParameters(HANDLE, DWORD, PDWORD, PVOID); + DWORD GetTapePosition(HANDLE, DWORD, PDWORD, PDWORD, PDWORD); + DWORD GetTapeStatus(HANDLE); + BOOL GetThreadPriorityBoost(HANDLE, PBOOL); + BOOL GetThreadTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); + BOOL GetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD, PDWORD); + BOOL ImpersonateLoggedOnUser(HANDLE); + BOOL ImpersonateNamedPipeClient(HANDLE); + BOOL ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); + BOOL InitializeAcl(PACL, DWORD, DWORD); + DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION, DWORD); + BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR, DWORD); + BOOL InitializeSid(PSID, PSID_IDENTIFIER_AUTHORITY, BYTE); + BOOL IsProcessorFeaturePresent(DWORD); + BOOL IsTextUnicode(PCVOID, int, LPINT); + BOOL IsValidAcl(PACL); + BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); + BOOL IsValidSid(PSID); + BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED); + BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE); + BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); + BOOL LookupAccountNameA(LPCSTR, LPCSTR, PSID, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountNameW(LPCWSTR, LPCWSTR, PSID, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountSidA(LPCSTR, PSID, LPSTR, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountSidW(LPCWSTR, PSID, LPWSTR, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); + BOOL LookupPrivilegeDisplayNameA(LPCSTR, LPCSTR, LPSTR, PDWORD, PDWORD); + BOOL LookupPrivilegeDisplayNameW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, PDWORD); + BOOL LookupPrivilegeNameA(LPCSTR, PLUID, LPSTR, PDWORD); + BOOL LookupPrivilegeNameW(LPCWSTR, PLUID, LPWSTR, PDWORD); + BOOL LookupPrivilegeValueA(LPCSTR, LPCSTR, PLUID); + BOOL LookupPrivilegeValueW(LPCWSTR, LPCWSTR, PLUID); + BOOL MakeAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD); + BOOL MakeSelfRelativeSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD); + VOID MapGenericMask(PDWORD, PGENERIC_MAPPING); + BOOL MoveFileExA(LPCSTR, LPCSTR, DWORD); + BOOL MoveFileExW(LPCWSTR, LPCWSTR, DWORD); + BOOL NotifyChangeEventLog(HANDLE, HANDLE); + BOOL ObjectCloseAuditAlarmA(LPCSTR, PVOID, BOOL); + BOOL ObjectCloseAuditAlarmW(LPCWSTR, PVOID, BOOL); + BOOL ObjectDeleteAuditAlarmA(LPCSTR, PVOID, BOOL); + BOOL ObjectDeleteAuditAlarmW(LPCWSTR, PVOID, BOOL); + BOOL ObjectOpenAuditAlarmA(LPCSTR, PVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); + BOOL ObjectOpenAuditAlarmW(LPCWSTR, PVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); + BOOL ObjectPrivilegeAuditAlarmA(LPCSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); + BOOL ObjectPrivilegeAuditAlarmW(LPCWSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); + HANDLE OpenBackupEventLogA(LPCSTR, LPCSTR); + HANDLE OpenBackupEventLogW(LPCWSTR, LPCWSTR); + HANDLE OpenEventLogA(LPCSTR, LPCSTR); + HANDLE OpenEventLogW(LPCWSTR, LPCWSTR); + BOOL OpenProcessToken(HANDLE, DWORD, PHANDLE); + BOOL OpenThreadToken(HANDLE, DWORD, BOOL, PHANDLE); + BOOL PostQueuedCompletionStatus(HANDLE, DWORD, ULONG_PTR, LPOVERLAPPED); + DWORD PrepareTape(HANDLE, DWORD, BOOL); + BOOL PrivilegeCheck(HANDLE, PPRIVILEGE_SET, PBOOL); + BOOL PrivilegedServiceAuditAlarmA(LPCSTR, LPCSTR, HANDLE, PPRIVILEGE_SET, BOOL); + BOOL PrivilegedServiceAuditAlarmW(LPCWSTR, LPCWSTR, HANDLE, PPRIVILEGE_SET, BOOL); + BOOL ReadDirectoryChangesW(HANDLE, PVOID, DWORD, BOOL, DWORD, PDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL ReadEventLogA(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); + BOOL ReadEventLogW(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); + BOOL ReadFileScatter(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); + HANDLE RegisterEventSourceA (LPCSTR, LPCSTR); + HANDLE RegisterEventSourceW(LPCWSTR, LPCWSTR); + BOOL ReportEventA(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCSTR*, PVOID); + BOOL ReportEventW(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR*, PVOID); + BOOL RevertToSelf(); + BOOL SetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); + BOOL SetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetHandleInformation(HANDLE, DWORD, DWORD); + BOOL SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetPrivateObjectSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, PGENERIC_MAPPING, HANDLE); + BOOL SetProcessAffinityMask(HANDLE, DWORD); + BOOL SetProcessPriorityBoost(HANDLE, BOOL); + BOOL SetProcessShutdownParameters(DWORD, DWORD); + BOOL SetProcessWorkingSetSize(HANDLE, SIZE_T, SIZE_T); + BOOL SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); + BOOL SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID, BOOL); + BOOL SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID, BOOL); + BOOL SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); + BOOL SetSystemTimeAdjustment(DWORD, BOOL); + DWORD SetTapeParameters(HANDLE, DWORD, PVOID); + DWORD SetTapePosition(HANDLE, DWORD, DWORD, DWORD, DWORD, BOOL); + BOOL SetThreadPriorityBoost(HANDLE, BOOL); + BOOL SetThreadToken(PHANDLE, HANDLE); + BOOL SetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD); + DWORD SignalObjectAndWait(HANDLE, HANDLE, DWORD, BOOL); + BOOL SwitchToThread(); + BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); + BOOL TryEnterCriticalSection(LPCRITICAL_SECTION); + BOOL UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED); + BOOL UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, PVOID, DWORD); + BOOL UpdateResourceW(HANDLE, LPCWSTR, LPCWSTR, WORD, PVOID, DWORD); + BOOL WriteFileGather(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); + DWORD WriteTapemark(HANDLE, DWORD, DWORD, BOOL); + + static if (_WIN32_WINNT >= 0x500) { + BOOL AddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID); + BOOL AddAccessDeniedAceEx(PACL, DWORD, DWORD, DWORD, PSID); + PVOID AddVectoredExceptionHandler(ULONG, PVECTORED_EXCEPTION_HANDLER); + BOOL AllocateUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); + BOOL AssignProcessToJobObject(HANDLE, HANDLE); + BOOL ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG); + LPVOID CreateFiberEx(SIZE_T, SIZE_T, DWORD, LPFIBER_START_ROUTINE, LPVOID); + HANDLE CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR); + HANDLE CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR); + BOOL CreateHardLinkA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateHardLinkW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); + HANDLE CreateJobObjectA(LPSECURITY_ATTRIBUTES, LPCSTR); + HANDLE CreateJobObjectW(LPSECURITY_ATTRIBUTES, LPCWSTR); + BOOL CreateProcessWithLogonW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateTimerQueue(); + BOOL CreateTimerQueueTimer(PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, DWORD, DWORD, ULONG); + BOOL DeleteTimerQueue(HANDLE); + BOOL DeleteTimerQueueEx(HANDLE, HANDLE); + BOOL DeleteTimerQueueTimer(HANDLE, HANDLE, HANDLE); + BOOL DeleteVolumeMountPointA(LPCSTR); + BOOL DeleteVolumeMountPointW(LPCWSTR); + BOOL DnsHostnameToComputerNameA(LPCSTR, LPSTR, LPDWORD); + BOOL DnsHostnameToComputerNameW(LPCWSTR, LPWSTR, LPDWORD); + BOOL EncryptFileA(LPCSTR); + BOOL EncryptFileW(LPCWSTR); + BOOL FileEncryptionStatusA(LPCSTR, LPDWORD); + BOOL FileEncryptionStatusW(LPCWSTR, LPDWORD); + HANDLE FindFirstVolumeA(LPCSTR, DWORD); + HANDLE FindFirstVolumeMountPointA(LPSTR, LPSTR, DWORD); + HANDLE FindFirstVolumeMountPointW(LPWSTR, LPWSTR, DWORD); + HANDLE FindFirstVolumeW(LPCWSTR, DWORD); + BOOL FindNextVolumeA(HANDLE, LPCSTR, DWORD); + BOOL FindNextVolumeW(HANDLE, LPWSTR, DWORD); + BOOL FindNextVolumeMountPointA(HANDLE, LPSTR, DWORD); + BOOL FindNextVolumeMountPointW(HANDLE, LPWSTR, DWORD); + BOOL FindVolumeClose(HANDLE); + BOOL FindVolumeMountPointClose(HANDLE); + BOOL FlushViewOfFile(PCVOID, DWORD); + BOOL FreeUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); + BOOL GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD); + BOOL GetComputerNameExW(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD); + BOOL GetFileSizeEx(HANDLE, PLARGE_INTEGER); + BOOL GetModuleHandleExA(DWORD, LPCSTR, HMODULE*); + BOOL GetModuleHandleExW(DWORD, LPCWSTR, HMODULE*); + HANDLE GetProcessHeap(); + DWORD GetProcessHeaps(DWORD, PHANDLE); + BOOL GetProcessIoCounters(HANDLE, PIO_COUNTERS); + BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); + UINT GetSystemWindowsDirectoryA(LPSTR, UINT); + UINT GetSystemWindowsDirectoryW(LPWSTR, UINT); + BOOL GetVolumeNameForVolumeMountPointA(LPCSTR, LPSTR, DWORD); + BOOL GetVolumeNameForVolumeMountPointW(LPCWSTR, LPWSTR, DWORD); + BOOL GetVolumePathNameA(LPCSTR, LPSTR, DWORD); + BOOL GetVolumePathNameW(LPCWSTR, LPWSTR, DWORD); + BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX); + BOOL IsBadCodePtr(FARPROC); + BOOL IsSystemResumeAutomatic(); + BOOL MapUserPhysicalPages(PVOID, ULONG_PTR, PULONG_PTR); + BOOL MapUserPhysicalPagesScatter(PVOID*, ULONG_PTR, PULONG_PTR); + PVOID MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + PVOID MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, PVOID); + HANDLE OpenFileMappingA(DWORD, BOOL, LPCSTR); + HANDLE OpenFileMappingW(DWORD, BOOL, LPCWSTR); + BOOL ProcessIdToSessionId(DWORD, DWORD*); + BOOL QueryInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD); + ULONG RemoveVectoredExceptionHandler(PVOID); + BOOL ReplaceFileA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID); + BOOL ReplaceFileW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPVOID, LPVOID); + BOOL SetComputerNameExA(COMPUTER_NAME_FORMAT, LPCSTR); + BOOL SetComputerNameExW(COMPUTER_NAME_FORMAT, LPCWSTR); + BOOL SetFilePointerEx(HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD); + BOOL SetInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD); + BOOL SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, SECURITY_DESCRIPTOR_CONTROL); + BOOL SetSystemPowerState(BOOL, BOOL); + EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE); + DWORD SetThreadIdealProcessor(HANDLE, DWORD); + BOOL SetVolumeMountPointA(LPCSTR, LPCSTR); + BOOL SetVolumeMountPointW(LPCWSTR, LPCWSTR); + BOOL TerminateJobObject(HANDLE, UINT); + BOOL UnmapViewOfFile(PVOID); + BOOL UnregisterWait(HANDLE); + BOOL UnregisterWaitEx(HANDLE, HANDLE); + BOOL VerifyVersionInfoA(LPOSVERSIONINFOEXA, DWORD, DWORDLONG); + BOOL VerifyVersionInfoW(LPOSVERSIONINFOEXW, DWORD, DWORDLONG); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL ActivateActCtx(HANDLE, ULONG_PTR*); + void AddRefActCtx(HANDLE); + BOOL CheckNameLegalDOS8Dot3A(LPCSTR, LPSTR, DWORD, PBOOL, PBOOL); + BOOL CheckNameLegalDOS8Dot3W(LPCWSTR, LPSTR, DWORD, PBOOL, PBOOL); + BOOL CheckRemoteDebuggerPresent(HANDLE, PBOOL); + BOOL ConvertFiberToThread(); + HANDLE CreateActCtxA(PCACTCTXA); + HANDLE CreateActCtxW(PCACTCTXW); + HANDLE CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE); + BOOL DeactivateActCtx(DWORD, ULONG_PTR); + BOOL DebugActiveProcessStop(DWORD); + BOOL DebugBreakProcess(HANDLE); + BOOL DebugSetProcessKillOnExit(BOOL); + BOOL FindActCtxSectionGuid(DWORD, const(GUID)*, ULONG, const(GUID)*, + PACTCTX_SECTION_KEYED_DATA); + BOOL FindActCtxSectionStringA(DWORD, const(GUID)*, ULONG, LPCSTR, + PACTCTX_SECTION_KEYED_DATA); + BOOL FindActCtxSectionStringW(DWORD, const(GUID)*, ULONG, LPCWSTR, + PACTCTX_SECTION_KEYED_DATA); + BOOL GetCurrentActCtx(HANDLE*); + VOID GetNativeSystemInfo(LPSYSTEM_INFO); + BOOL GetProcessHandleCount(HANDLE, PDWORD); + BOOL GetSystemRegistryQuota(PDWORD, PDWORD); + BOOL GetSystemTimes(LPFILETIME, LPFILETIME, LPFILETIME); + UINT GetSystemWow64DirectoryA(LPSTR, UINT); + UINT GetSystemWow64DirectoryW(LPWSTR, UINT); + BOOL GetThreadIOPendingFlag(HANDLE, PBOOL); + BOOL GetVolumePathNamesForVolumeNameA(LPCSTR, LPSTR, DWORD, PDWORD); + BOOL GetVolumePathNamesForVolumeNameW(LPCWSTR, LPWSTR, DWORD, PDWORD); + UINT GetWriteWatch(DWORD, PVOID, SIZE_T, PVOID*, PULONG_PTR, PULONG); + BOOL HeapQueryInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T); + BOOL HeapSetInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T); + BOOL IsProcessInJob(HANDLE, HANDLE, PBOOL); + BOOL IsWow64Process(HANDLE, PBOOL); + BOOL QueryActCtxW(DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T*); + BOOL QueryMemoryResourceNotification(HANDLE, PBOOL); + void ReleaseActCtx(HANDLE); + UINT ResetWriteWatch(LPVOID, SIZE_T); + BOOL SetFileShortNameA(HANDLE, LPCSTR); + BOOL SetFileShortNameW(HANDLE, LPCWSTR); + BOOL SetFileValidData(HANDLE, LONGLONG); + BOOL ZombifyActCtx(HANDLE); + } + + static if (_WIN32_WINNT >= 0x502) { + DWORD GetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); + DWORD GetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); + DWORD GetDllDirectoryA(DWORD, LPSTR); + DWORD GetDllDirectoryW(DWORD, LPWSTR); + DWORD GetThreadId(HANDLE); + DWORD GetProcessId(HANDLE); + HANDLE ReOpenFile(HANDLE, DWORD, DWORD, DWORD); + BOOL SetDllDirectoryA(LPCSTR); + BOOL SetDllDirectoryW(LPCWSTR); + BOOL SetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); + BOOL SetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); + } + + // ??? + static if (_WIN32_WINNT >= 0x510) { + VOID RestoreLastError(DWORD); + } +} + +mixin DECLARE_AW!("STARTUPINFO"); +version (Unicode) { + //alias STARTUPINFOW STARTUPINFO; + alias WIN32_FIND_DATAW WIN32_FIND_DATA; + alias ENUMRESLANGPROCW ENUMRESLANGPROC; + alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; + alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; + alias AddAtomW AddAtom; + alias BeginUpdateResourceW BeginUpdateResource; + alias BuildCommDCBW BuildCommDCB; + alias BuildCommDCBAndTimeoutsW BuildCommDCBAndTimeouts; + alias CallNamedPipeW CallNamedPipe; + alias CommConfigDialogW CommConfigDialog; + alias CopyFileW CopyFile; + alias CopyFileExW CopyFileEx; + alias CreateDirectoryW CreateDirectory; + alias CreateDirectoryExW CreateDirectoryEx; + alias CreateEventW CreateEvent; + alias CreateFileW CreateFile; + alias CreateMailslotW CreateMailslot; + alias CreateMutexW CreateMutex; + alias CreateProcessW CreateProcess; + alias CreateSemaphoreW CreateSemaphore; + alias DeleteFileW DeleteFile; + alias EndUpdateResourceW EndUpdateResource; + alias EnumResourceLanguagesW EnumResourceLanguages; + alias EnumResourceNamesW EnumResourceNames; + alias EnumResourceTypesW EnumResourceTypes; + alias ExpandEnvironmentStringsW ExpandEnvironmentStrings; + alias FatalAppExitW FatalAppExit; + alias FindAtomW FindAtom; + alias FindFirstChangeNotificationW FindFirstChangeNotification; + alias FindFirstFileW FindFirstFile; + alias FindNextFileW FindNextFile; + alias FindResourceW FindResource; + alias FindResourceExW FindResourceEx; + alias FormatMessageW FormatMessage; + alias FreeEnvironmentStringsW FreeEnvironmentStrings; + alias GetAtomNameW GetAtomName; + alias GetCommandLineW GetCommandLine; + alias GetComputerNameW GetComputerName; + alias GetCurrentDirectoryW GetCurrentDirectory; + alias GetDefaultCommConfigW GetDefaultCommConfig; + alias GetDiskFreeSpaceW GetDiskFreeSpace; + alias GetDiskFreeSpaceExW GetDiskFreeSpaceEx; + alias GetDriveTypeW GetDriveType; + alias GetEnvironmentStringsW GetEnvironmentStrings; + alias GetEnvironmentVariableW GetEnvironmentVariable; + alias GetFileAttributesW GetFileAttributes; + alias GetFullPathNameW GetFullPathName; + alias GetLogicalDriveStringsW GetLogicalDriveStrings; + alias GetModuleFileNameW GetModuleFileName; + alias GetModuleHandleW GetModuleHandle; + alias GetNamedPipeHandleStateW GetNamedPipeHandleState; + alias GetPrivateProfileIntW GetPrivateProfileInt; + alias GetPrivateProfileSectionW GetPrivateProfileSection; + alias GetPrivateProfileSectionNamesW GetPrivateProfileSectionNames; + alias GetPrivateProfileStringW GetPrivateProfileString; + alias GetPrivateProfileStructW GetPrivateProfileStruct; + alias GetProfileIntW GetProfileInt; + alias GetProfileSectionW GetProfileSection; + alias GetProfileStringW GetProfileString; + alias GetShortPathNameW GetShortPathName; + alias GetStartupInfoW GetStartupInfo; + alias GetSystemDirectoryW GetSystemDirectory; + alias GetTempFileNameW GetTempFileName; + alias GetTempPathW GetTempPath; + alias GetUserNameW GetUserName; + alias GetVersionExW GetVersionEx; + alias GetVolumeInformationW GetVolumeInformation; + alias GetWindowsDirectoryW GetWindowsDirectory; + alias GlobalAddAtomW GlobalAddAtom; + alias GlobalFindAtomW GlobalFindAtom; + alias GlobalGetAtomNameW GlobalGetAtomName; + alias IsBadStringPtrW IsBadStringPtr; + alias LoadLibraryW LoadLibrary; + alias LoadLibraryExW LoadLibraryEx; + alias lstrcatW lstrcat; + alias lstrcmpW lstrcmp; + alias lstrcmpiW lstrcmpi; + alias lstrcpyW lstrcpy; + alias lstrcpynW lstrcpyn; + alias lstrlenW lstrlen; + alias MoveFileW MoveFile; + alias OpenEventW OpenEvent; + alias OpenMutexW OpenMutex; + alias OpenSemaphoreW OpenSemaphore; + alias OutputDebugStringW OutputDebugString; + alias RemoveDirectoryW RemoveDirectory; + alias SearchPathW SearchPath; + alias SetComputerNameW SetComputerName; + alias SetCurrentDirectoryW SetCurrentDirectory; + alias SetDefaultCommConfigW SetDefaultCommConfig; + alias SetEnvironmentVariableW SetEnvironmentVariable; + alias SetFileAttributesW SetFileAttributes; + alias SetVolumeLabelW SetVolumeLabel; + alias WaitNamedPipeW WaitNamedPipe; + alias WritePrivateProfileSectionW WritePrivateProfileSection; + alias WritePrivateProfileStringW WritePrivateProfileString; + alias WritePrivateProfileStructW WritePrivateProfileStruct; + alias WriteProfileSectionW WriteProfileSection; + alias WriteProfileStringW WriteProfileString; + alias CreateWaitableTimerW CreateWaitableTimer; + alias GetFileAttributesExW GetFileAttributesEx; + alias GetLongPathNameW GetLongPathName; + alias QueryDosDeviceW QueryDosDevice; + + alias HW_PROFILE_INFOW HW_PROFILE_INFO; + alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; + alias BackupEventLogW BackupEventLog; + alias ClearEventLogW ClearEventLog; + alias CreateNamedPipeW CreateNamedPipe; + alias CreateProcessAsUserW CreateProcessAsUser; + alias DefineDosDeviceW DefineDosDevice; + alias FindFirstFileExW FindFirstFileEx; + alias GetBinaryTypeW GetBinaryType; + alias GetCompressedFileSizeW GetCompressedFileSize; + alias GetFileSecurityW GetFileSecurity; + alias LogonUserW LogonUser; + alias LookupAccountNameW LookupAccountName; + alias LookupAccountSidW LookupAccountSid; + alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; + alias LookupPrivilegeNameW LookupPrivilegeName; + alias LookupPrivilegeValueW LookupPrivilegeValue; + alias MoveFileExW MoveFileEx; + alias ObjectCloseAuditAlarmW ObjectCloseAuditAlarm; + alias ObjectDeleteAuditAlarmW ObjectDeleteAuditAlarm; + alias ObjectOpenAuditAlarmW ObjectOpenAuditAlarm; + alias ObjectPrivilegeAuditAlarmW ObjectPrivilegeAuditAlarm; + alias OpenBackupEventLogW OpenBackupEventLog; + alias OpenEventLogW OpenEventLog; + alias PrivilegedServiceAuditAlarmW PrivilegedServiceAuditAlarm; + alias ReadEventLogW ReadEventLog; + alias RegisterEventSourceW RegisterEventSource; + alias ReportEventW ReportEvent; + alias SetFileSecurityW SetFileSecurity; + alias UpdateResourceW UpdateResource; + + static if (_WIN32_WINNT >= 0x500) { + alias CreateFileMappingW CreateFileMapping; + alias CreateHardLinkW CreateHardLink; + alias CreateJobObjectW CreateJobObject; + alias DeleteVolumeMountPointW DeleteVolumeMountPoint; + alias DnsHostnameToComputerNameW DnsHostnameToComputerName; + alias EncryptFileW EncryptFile; + alias FileEncryptionStatusW FileEncryptionStatus; + alias FindFirstVolumeW FindFirstVolume; + alias FindFirstVolumeMountPointW FindFirstVolumeMountPoint; + alias FindNextVolumeW FindNextVolume; + alias FindNextVolumeMountPointW FindNextVolumeMountPoint; + alias GetModuleHandleExW GetModuleHandleEx; + alias GetSystemWindowsDirectoryW GetSystemWindowsDirectory; + alias GetVolumeNameForVolumeMountPointW GetVolumeNameForVolumeMountPoint; + alias GetVolumePathNameW GetVolumePathName; + alias OpenFileMappingW OpenFileMapping; + alias ReplaceFileW ReplaceFile; + alias SetVolumeMountPointW SetVolumeMountPoint; + alias VerifyVersionInfoW VerifyVersionInfo; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ACTCTXW ACTCTX; + alias CheckNameLegalDOS8Dot3W CheckNameLegalDOS8Dot3; + alias CreateActCtxW CreateActCtx; + alias FindActCtxSectionStringW FindActCtxSectionString; + alias GetSystemWow64DirectoryW GetSystemWow64Directory; + alias GetVolumePathNamesForVolumeNameW GetVolumePathNamesForVolumeName; + alias SetFileShortNameW SetFileShortName; + } + + static if (_WIN32_WINNT >= 0x502) { + alias SetFirmwareEnvironmentVariableW SetFirmwareEnvironmentVariable; + alias SetDllDirectoryW SetDllDirectory; + alias GetDllDirectoryW GetDllDirectory; + } + +} else { + //alias STARTUPINFOA STARTUPINFO; + alias WIN32_FIND_DATAA WIN32_FIND_DATA; + alias ENUMRESLANGPROCW ENUMRESLANGPROC; + alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; + alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; + alias AddAtomA AddAtom; + alias BeginUpdateResourceA BeginUpdateResource; + alias BuildCommDCBA BuildCommDCB; + alias BuildCommDCBAndTimeoutsA BuildCommDCBAndTimeouts; + alias CallNamedPipeA CallNamedPipe; + alias CommConfigDialogA CommConfigDialog; + alias CopyFileA CopyFile; + alias CopyFileExA CopyFileEx; + alias CreateDirectoryA CreateDirectory; + alias CreateDirectoryExA CreateDirectoryEx; + alias CreateEventA CreateEvent; + alias CreateFileA CreateFile; + alias CreateMailslotA CreateMailslot; + alias CreateMutexA CreateMutex; + alias CreateProcessA CreateProcess; + alias CreateSemaphoreA CreateSemaphore; + alias DeleteFileA DeleteFile; + alias EndUpdateResourceA EndUpdateResource; + alias EnumResourceLanguagesA EnumResourceLanguages; + alias EnumResourceNamesA EnumResourceNames; + alias EnumResourceTypesA EnumResourceTypes; + alias ExpandEnvironmentStringsA ExpandEnvironmentStrings; + alias FatalAppExitA FatalAppExit; + alias FindAtomA FindAtom; + alias FindFirstChangeNotificationA FindFirstChangeNotification; + alias FindFirstFileA FindFirstFile; + alias FindNextFileA FindNextFile; + alias FindResourceA FindResource; + alias FindResourceExA FindResourceEx; + alias FormatMessageA FormatMessage; + alias FreeEnvironmentStringsA FreeEnvironmentStrings; + alias GetAtomNameA GetAtomName; + alias GetCommandLineA GetCommandLine; + alias GetComputerNameA GetComputerName; + alias GetCurrentDirectoryA GetCurrentDirectory; + alias GetDefaultCommConfigA GetDefaultCommConfig; + alias GetDiskFreeSpaceA GetDiskFreeSpace; + alias GetDiskFreeSpaceExA GetDiskFreeSpaceEx; + alias GetDriveTypeA GetDriveType; + alias GetEnvironmentVariableA GetEnvironmentVariable; + alias GetFileAttributesA GetFileAttributes; + alias GetFullPathNameA GetFullPathName; + alias GetLogicalDriveStringsA GetLogicalDriveStrings; + alias GetNamedPipeHandleStateA GetNamedPipeHandleState; + alias GetModuleHandleA GetModuleHandle; + alias GetModuleFileNameA GetModuleFileName; + alias GetPrivateProfileIntA GetPrivateProfileInt; + alias GetPrivateProfileSectionA GetPrivateProfileSection; + alias GetPrivateProfileSectionNamesA GetPrivateProfileSectionNames; + alias GetPrivateProfileStringA GetPrivateProfileString; + alias GetPrivateProfileStructA GetPrivateProfileStruct; + alias GetProfileIntA GetProfileInt; + alias GetProfileSectionA GetProfileSection; + alias GetProfileStringA GetProfileString; + alias GetShortPathNameA GetShortPathName; + alias GetStartupInfoA GetStartupInfo; + alias GetSystemDirectoryA GetSystemDirectory; + alias GetTempFileNameA GetTempFileName; + alias GetTempPathA GetTempPath; + alias GetUserNameA GetUserName; + alias GetVersionExA GetVersionEx; + alias GetVolumeInformationA GetVolumeInformation; + alias GetWindowsDirectoryA GetWindowsDirectory; + alias GlobalAddAtomA GlobalAddAtom; + alias GlobalFindAtomA GlobalFindAtom; + alias GlobalGetAtomNameA GlobalGetAtomName; + alias IsBadStringPtrA IsBadStringPtr; + alias LoadLibraryA LoadLibrary; + alias LoadLibraryExA LoadLibraryEx; + alias lstrcatA lstrcat; + alias lstrcmpA lstrcmp; + alias lstrcmpiA lstrcmpi; + alias lstrcpyA lstrcpy; + alias lstrcpynA lstrcpyn; + alias lstrlenA lstrlen; + alias MoveFileA MoveFile; + alias OpenEventA OpenEvent; + alias OpenMutexA OpenMutex; + alias OpenSemaphoreA OpenSemaphore; + alias OutputDebugStringA OutputDebugString; + alias RemoveDirectoryA RemoveDirectory; + alias SearchPathA SearchPath; + alias SetComputerNameA SetComputerName; + alias SetCurrentDirectoryA SetCurrentDirectory; + alias SetDefaultCommConfigA SetDefaultCommConfig; + alias SetEnvironmentVariableA SetEnvironmentVariable; + alias SetFileAttributesA SetFileAttributes; + alias SetVolumeLabelA SetVolumeLabel; + alias WaitNamedPipeA WaitNamedPipe; + alias WritePrivateProfileSectionA WritePrivateProfileSection; + alias WritePrivateProfileStringA WritePrivateProfileString; + alias WritePrivateProfileStructA WritePrivateProfileStruct; + alias WriteProfileSectionA WriteProfileSection; + alias WriteProfileStringA WriteProfileString; + alias CreateWaitableTimerA CreateWaitableTimer; + alias GetFileAttributesExA GetFileAttributesEx; + alias GetLongPathNameA GetLongPathName; + alias QueryDosDeviceA QueryDosDevice; + + alias HW_PROFILE_INFOA HW_PROFILE_INFO; + alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; + alias BackupEventLogA BackupEventLog; + alias ClearEventLogA ClearEventLog; + alias CreateNamedPipeA CreateNamedPipe; + alias CreateProcessAsUserA CreateProcessAsUser; + alias DefineDosDeviceA DefineDosDevice; + alias FindFirstFileExA FindFirstFileEx; + alias GetBinaryTypeA GetBinaryType; + alias GetCompressedFileSizeA GetCompressedFileSize; + alias GetFileSecurityA GetFileSecurity; + alias LogonUserA LogonUser; + alias LookupAccountNameA LookupAccountName; + alias LookupAccountSidA LookupAccountSid; + alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; + alias LookupPrivilegeNameA LookupPrivilegeName; + alias LookupPrivilegeValueA LookupPrivilegeValue; + alias MoveFileExA MoveFileEx; + alias ObjectCloseAuditAlarmA ObjectCloseAuditAlarm; + alias ObjectDeleteAuditAlarmA ObjectDeleteAuditAlarm; + alias ObjectOpenAuditAlarmA ObjectOpenAuditAlarm; + alias ObjectPrivilegeAuditAlarmA ObjectPrivilegeAuditAlarm; + alias OpenBackupEventLogA OpenBackupEventLog; + alias OpenEventLogA OpenEventLog; + alias PrivilegedServiceAuditAlarmA PrivilegedServiceAuditAlarm; + alias ReadEventLogA ReadEventLog; + alias RegisterEventSourceA RegisterEventSource; + alias ReportEventA ReportEvent; + alias SetFileSecurityA SetFileSecurity; + alias UpdateResourceA UpdateResource; + + static if (_WIN32_WINNT >= 0x500) { + alias CreateFileMappingA CreateFileMapping; + alias CreateHardLinkA CreateHardLink; + alias CreateJobObjectA CreateJobObject; + alias DeleteVolumeMountPointA DeleteVolumeMountPoint; + alias DnsHostnameToComputerNameA DnsHostnameToComputerName; + alias EncryptFileA EncryptFile; + alias FileEncryptionStatusA FileEncryptionStatus; + alias FindFirstVolumeA FindFirstVolume; + alias FindFirstVolumeMountPointA FindFirstVolumeMountPoint; + alias FindNextVolumeA FindNextVolume; + alias FindNextVolumeMountPointA FindNextVolumeMountPoint; + alias GetModuleHandleExA GetModuleHandleEx; + alias GetSystemWindowsDirectoryA GetSystemWindowsDirectory; + alias GetVolumeNameForVolumeMountPointA GetVolumeNameForVolumeMountPoint; + alias GetVolumePathNameA GetVolumePathName; + alias OpenFileMappingA OpenFileMapping; + alias ReplaceFileA ReplaceFile; + alias SetVolumeMountPointA SetVolumeMountPoint; + alias VerifyVersionInfoA VerifyVersionInfo; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ACTCTXA ACTCTX; + alias CheckNameLegalDOS8Dot3A CheckNameLegalDOS8Dot3; + alias CreateActCtxA CreateActCtx; + alias FindActCtxSectionStringA FindActCtxSectionString; + alias GetSystemWow64DirectoryA GetSystemWow64Directory; + alias GetVolumePathNamesForVolumeNameA GetVolumePathNamesForVolumeName; + alias SetFileShortNameA SetFileShortName; + } + + static if (_WIN32_WINNT >= 0x502) { + alias GetDllDirectoryA GetDllDirectory; + alias SetDllDirectoryA SetDllDirectory; + alias SetFirmwareEnvironmentVariableA SetFirmwareEnvironmentVariable; + } +} + +alias STARTUPINFO* LPSTARTUPINFO; +alias WIN32_FIND_DATA* LPWIN32_FIND_DATA; + +alias HW_PROFILE_INFO* LPHW_PROFILE_INFO; + +static if (_WIN32_WINNT >= 0x501) { + alias ACTCTX* PACTCTX, PCACTCTX; +} diff --git a/src/core/sys/windows/winber.d b/src/core/sys/windows/winber.d new file mode 100644 index 0000000000..3e0e426dd1 --- /dev/null +++ b/src/core/sys/windows/winber.d @@ -0,0 +1,70 @@ +/***********************************************************************\ +* winber.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winber; + +/* Comment from MinGW + winber.h - Header file for the Windows LDAP Basic Encoding Rules API + + Written by Filip Navara + + References: + The C LDAP Application Program Interface + http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt + + Lightweight Directory Access Protocol Reference + http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ + + import win32.basetsd; + +/* Opaque structure + * http://msdn.microsoft.com/library/en-us/ldap/ldap/berelement.asp + */ +struct BerElement; + +alias int ber_int_t, ber_slen_t; +alias uint ber_uint_t, ber_len_t, ber_tag_t; + +align(4): +struct BerValue { + ber_len_t bv_len; + char* bv_val; +} +alias BerValue LDAP_BERVAL, BERVAL; +alias BerValue* PLDAP_BERVAL, PBERVAL; + +const ber_tag_t + LBER_ERROR = -1, + LBER_DEFAULT = -1, + LBER_USE_DER = 1; + +/* FIXME: In MinGW, these are WINBERAPI == DECLSPEC_IMPORT. Linkage + * attribute? + */ +extern (C) { + BerElement* ber_init(const(BerValue)*); + int ber_printf(BerElement*, const(char)*, ...); + int ber_flatten(BerElement*, BerValue**); + ber_tag_t ber_scanf(BerElement*, const(char)*, ...); + ber_tag_t ber_peek_tag(BerElement*, ber_len_t*); + ber_tag_t ber_skip_tag(BerElement*, ber_len_t*); + ber_tag_t ber_first_element(BerElement*, ber_len_t*, char**); + ber_tag_t ber_next_element(BerElement*, ber_len_t*, char*); + void ber_bvfree(BerValue*); + void ber_bvecfree(BerValue**); + void ber_free(BerElement*, int); + BerValue* ber_bvdup(BerValue*); + BerElement* ber_alloc_t(int); +} diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d new file mode 100644 index 0000000000..f2fdbc5a08 --- /dev/null +++ b/src/core/sys/windows/wincon.d @@ -0,0 +1,277 @@ +/***********************************************************************\ +* wincon.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wincon; +pragma(lib, "kernel32"); + +private import win32.w32api, win32.windef; + +// FIXME: clean up Windows version support + +enum { + FOREGROUND_BLUE = 1, + FOREGROUND_GREEN = 2, + FOREGROUND_RED = 4, + FOREGROUND_INTENSITY = 8, + BACKGROUND_BLUE = 16, + BACKGROUND_GREEN = 32, + BACKGROUND_RED = 64, + BACKGROUND_INTENSITY = 128 +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + CONSOLE_FULLSCREEN_MODE = 1, + CONSOLE_WINDOWED_MODE = 0 + } +} + +enum { + CTRL_C_EVENT = 0, + CTRL_BREAK_EVENT = 1, + CTRL_CLOSE_EVENT = 2, + CTRL_LOGOFF_EVENT = 5, + CTRL_SHUTDOWN_EVENT = 6 +} + +enum { + ENABLE_PROCESSED_INPUT = 1, + ENABLE_LINE_INPUT = 2, + ENABLE_ECHO_INPUT = 4, + ENABLE_WINDOW_INPUT = 8, + ENABLE_MOUSE_INPUT = 16 +} + +enum { + ENABLE_PROCESSED_OUTPUT = 1, + ENABLE_WRAP_AT_EOL_OUTPUT = 2 +} + +enum { + KEY_EVENT = 1, + MOUSE_EVENT = 2, + WINDOW_BUFFER_SIZE_EVENT = 4, + MENU_EVENT = 8, + FOCUS_EVENT = 16 +} +enum { + RIGHT_ALT_PRESSED = 1, + LEFT_ALT_PRESSED = 2, + RIGHT_CTRL_PRESSED = 4, + LEFT_CTRL_PRESSED = 8, + SHIFT_PRESSED = 16, + NUMLOCK_ON = 32, + SCROLLLOCK_ON = 64, + CAPSLOCK_ON = 128, + ENHANCED_KEY = 256 +} +enum { + FROM_LEFT_1ST_BUTTON_PRESSED = 1, + RIGHTMOST_BUTTON_PRESSED = 2, + FROM_LEFT_2ND_BUTTON_PRESSED = 4, + FROM_LEFT_3RD_BUTTON_PRESSED = 8, + FROM_LEFT_4TH_BUTTON_PRESSED = 16 +} + +enum { + MOUSE_MOVED = 1, + DOUBLE_CLICK = 2, + MOUSE_WHEELED = 4 +} + +struct CHAR_INFO { + union _Char { + WCHAR UnicodeChar; + CHAR AsciiChar; + } + _Char Char; + WORD Attributes; +} +alias CHAR_INFO* PCHAR_INFO; + +struct SMALL_RECT { + SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; +} +alias SMALL_RECT* PSMALL_RECT; + +struct CONSOLE_CURSOR_INFO { + DWORD dwSize; + BOOL bVisible; +} +alias CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO; + +struct COORD { + SHORT X; + SHORT Y; +} +alias COORD* PCOORD; + +struct CONSOLE_FONT_INFO { + DWORD nFont; + COORD dwFontSize; +} +alias CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO; + +struct CONSOLE_SCREEN_BUFFER_INFO { + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; +} +alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO; + +alias BOOL function(DWORD) PHANDLER_ROUTINE; + +struct KEY_EVENT_RECORD { + BOOL bKeyDown; + WORD wRepeatCount; + WORD wVirtualKeyCode; + WORD wVirtualScanCode; + union _uChar { + WCHAR UnicodeChar; + CHAR AsciiChar; + } + _uChar uChar; + DWORD dwControlKeyState; +} + +struct MOUSE_EVENT_RECORD { + COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; +} + +struct WINDOW_BUFFER_SIZE_RECORD { + COORD dwSize; +} + +struct MENU_EVENT_RECORD { + UINT dwCommandId; +} +alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD; + +struct FOCUS_EVENT_RECORD { + BOOL bSetFocus; +} + +struct INPUT_RECORD { + WORD EventType; + union _Event { + KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; + } + _Event Event; +} +alias INPUT_RECORD* PINPUT_RECORD; + +extern (Windows): + +BOOL AllocConsole(); +HANDLE CreateConsoleScreenBuffer(DWORD, DWORD, SECURITY_ATTRIBUTES*, DWORD, LPVOID); +BOOL FillConsoleOutputAttribute(HANDLE, WORD, DWORD, COORD, PDWORD); +BOOL FillConsoleOutputCharacterA(HANDLE, CHAR, DWORD, COORD, PDWORD); +BOOL FillConsoleOutputCharacterW(HANDLE, WCHAR, DWORD, COORD, PDWORD); +BOOL FlushConsoleInputBuffer(HANDLE); +BOOL FreeConsole(); +BOOL GenerateConsoleCtrlEvent(DWORD, DWORD); +UINT GetConsoleCP(); +BOOL GetConsoleCursorInfo(HANDLE, PCONSOLE_CURSOR_INFO); +BOOL GetConsoleMode(HANDLE,PDWORD); +UINT GetConsoleOutputCP(); +BOOL GetConsoleScreenBufferInfo(HANDLE, PCONSOLE_SCREEN_BUFFER_INFO); +DWORD GetConsoleTitleA(LPSTR, DWORD); +DWORD GetConsoleTitleW(LPWSTR, DWORD); +COORD GetLargestConsoleWindowSize(HANDLE); +BOOL GetNumberOfConsoleInputEvents(HANDLE, PDWORD); +BOOL GetNumberOfConsoleMouseButtons(PDWORD); +BOOL PeekConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL PeekConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL ReadConsoleA(HANDLE, PVOID, DWORD, PDWORD, PVOID); +BOOL ReadConsoleW(HANDLE, PVOID, DWORD, PDWORD, PVOID); +BOOL ReadConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL ReadConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL ReadConsoleOutputAttribute(HANDLE, LPWORD, DWORD, COORD, LPDWORD); +BOOL ReadConsoleOutputCharacterA(HANDLE, LPSTR, DWORD, COORD, PDWORD); +BOOL ReadConsoleOutputCharacterW(HANDLE, LPWSTR, DWORD, COORD, PDWORD); +BOOL ReadConsoleOutputA(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); +BOOL ReadConsoleOutputW(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); +BOOL ScrollConsoleScreenBufferA(HANDLE, const(SMALL_RECT)*, const(SMALL_RECT)*, COORD, const(CHAR_INFO)*); +BOOL ScrollConsoleScreenBufferW(HANDLE, const(SMALL_RECT)*, const(SMALL_RECT)*, COORD, const(CHAR_INFO)*); +BOOL SetConsoleActiveScreenBuffer(HANDLE); +BOOL SetConsoleCP(UINT); +BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE, BOOL); +BOOL SetConsoleCursorInfo(HANDLE, const(CONSOLE_CURSOR_INFO)*); +BOOL SetConsoleCursorPosition(HANDLE, COORD); + + +static if (_WIN32_WINNT >= 0x500) { +BOOL GetConsoleDisplayMode(LPDWORD); +HWND GetConsoleWindow(); +} + +static if (_WIN32_WINNT >= 0x501) { +BOOL AttachConsole(DWORD); +BOOL SetConsoleDisplayMode(HANDLE, DWORD, PCOORD); +const DWORD ATTACH_PARENT_PROCESS = cast(DWORD)-1; +} + +BOOL SetConsoleMode(HANDLE, DWORD); +BOOL SetConsoleOutputCP(UINT); +BOOL SetConsoleScreenBufferSize(HANDLE, COORD); +BOOL SetConsoleTextAttribute(HANDLE, WORD); +BOOL SetConsoleTitleA(LPCSTR); +BOOL SetConsoleTitleW(LPCWSTR); +BOOL SetConsoleWindowInfo(HANDLE, BOOL, const(SMALL_RECT)*); +BOOL WriteConsoleA(HANDLE, PCVOID, DWORD, PDWORD, PVOID); +BOOL WriteConsoleW(HANDLE, PCVOID, DWORD, PDWORD, PVOID); +BOOL WriteConsoleInputA(HANDLE, const(INPUT_RECORD)*, DWORD, PDWORD); +BOOL WriteConsoleInputW(HANDLE, const(INPUT_RECORD)*, DWORD, PDWORD); +BOOL WriteConsoleOutputA(HANDLE, const(CHAR_INFO)*, COORD, COORD, PSMALL_RECT); +BOOL WriteConsoleOutputW(HANDLE, const(CHAR_INFO)*, COORD, COORD, PSMALL_RECT); +BOOL WriteConsoleOutputAttribute(HANDLE, const(WORD)*, DWORD, COORD, PDWORD); +BOOL WriteConsoleOutputCharacterA(HANDLE, LPCSTR, DWORD, COORD, PDWORD); +BOOL WriteConsoleOutputCharacterW(HANDLE, LPCWSTR, DWORD, COORD, PDWORD); + +version (Unicode) { + alias FillConsoleOutputCharacterW FillConsoleOutputCharacter; + alias GetConsoleTitleW GetConsoleTitle; + alias PeekConsoleInputW PeekConsoleInput; + alias ReadConsoleW ReadConsole; + alias ReadConsoleInputW ReadConsoleInput; + alias ReadConsoleOutputW ReadConsoleOutput; + alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter; + alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer; + alias SetConsoleTitleW SetConsoleTitle; + alias WriteConsoleW WriteConsole; + alias WriteConsoleInputW WriteConsoleInput; + alias WriteConsoleOutputW WriteConsoleOutput; + alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter; +} else { + alias FillConsoleOutputCharacterA FillConsoleOutputCharacter; + alias GetConsoleTitleA GetConsoleTitle; + alias PeekConsoleInputA PeekConsoleInput; + alias ReadConsoleA ReadConsole; + alias ReadConsoleInputA ReadConsoleInput; + alias ReadConsoleOutputA ReadConsoleOutput; + alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter; + alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer; + alias SetConsoleTitleA SetConsoleTitle; + alias WriteConsoleA WriteConsole; + alias WriteConsoleInputA WriteConsoleInput; + alias WriteConsoleOutputA WriteConsoleOutput; + alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter; +} diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d new file mode 100644 index 0000000000..6a2472bd64 --- /dev/null +++ b/src/core/sys/windows/wincrypt.d @@ -0,0 +1,899 @@ +/***********************************************************************\ +* wincrypt.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wincrypt; + +private import win32.w32api, win32.winbase, win32.windef; + +/* FIXME: + * Types of some constants + * Types of macros + * Inits of various "size" and "version" members + * Why are some #ifdefs commented out? + */ + +const TCHAR[] + MS_DEF_PROV = "Microsoft Base Cryptographic Provider v1.0", + MS_ENHANCED_PROV = "Microsoft Enhanced Cryptographic Provider v1.0", + MS_STRONG_PROV = "Microsoft Strong Cryptographic Provider", + MS_DEF_RSA_SIG_PROV = "Microsoft RSA Signature Cryptographic Provider", + MS_DEF_RSA_SCHANNEL_PROV = "Microsoft RSA SChannel Cryptographic Provider", + MS_DEF_DSS_PROV = "Microsoft Base DSS Cryptographic Provider", + MS_DEF_DSS_DH_PROV + = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider", + MS_ENH_DSS_DH_PROV + = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider", + MS_DEF_DH_SCHANNEL_PROV = "Microsoft DH SChannel Cryptographic Provider", + MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider"; + +static if (_WIN32_WINNT > 0x501) { + const TCHAR[] MS_ENH_RSA_AES_PROV + = "Microsoft Enhanced RSA and AES Cryptographic Provider"; +} else static if (_WIN32_WINNT == 0x501) { + const TCHAR[] MS_ENH_RSA_AES_PROV + = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; +} + +ALG_ID GET_ALG_CLASS(ALG_ID x) { return x & 0xE000; } +ALG_ID GET_ALG_TYPE (ALG_ID x) { return x & 0x1E00; } +ALG_ID GET_ALG_SID (ALG_ID x) { return x & 0x01FF; } + +enum : ALG_ID { + ALG_CLASS_ANY = 0, + ALG_CLASS_SIGNATURE = 0x2000, + ALG_CLASS_MSG_ENCRYPT = 0x4000, + ALG_CLASS_DATA_ENCRYPT = 0x6000, + ALG_CLASS_HASH = 0x8000, + ALG_CLASS_KEY_EXCHANGE = 0xA000, + ALG_CLASS_ALL = 0xE000 +} + +enum : ALG_ID { + ALG_TYPE_ANY = 0, + ALG_TYPE_DSS = 0x0200, + ALG_TYPE_RSA = 0x0400, + ALG_TYPE_BLOCK = 0x0600, + ALG_TYPE_STREAM = 0x0800, + ALG_TYPE_DH = 0x0A00, + ALG_TYPE_SECURECHANNEL = 0x0C00 +} + +enum : ALG_ID { + ALG_SID_ANY = 0, + ALG_SID_RSA_ANY = 0, + ALG_SID_RSA_PKCS, + ALG_SID_RSA_MSATWORK, + ALG_SID_RSA_ENTRUST, + ALG_SID_RSA_PGP, // = 4 + ALG_SID_DSS_ANY = 0, + ALG_SID_DSS_PKCS, + ALG_SID_DSS_DMS, // = 2 + ALG_SID_DES = 1, + ALG_SID_3DES = 3, + ALG_SID_DESX, + ALG_SID_IDEA, + ALG_SID_CAST, + ALG_SID_SAFERSK64, + ALG_SID_SAFERSK128, + ALG_SID_3DES_112, + ALG_SID_SKIPJACK, + ALG_SID_TEK, + ALG_SID_CYLINK_MEK, + ALG_SID_RC5, // = 13 + ALG_SID_RC2 = 2, + ALG_SID_RC4 = 1, + ALG_SID_SEAL = 2, + ALG_SID_MD2 = 1, + ALG_SID_MD4, + ALG_SID_MD5, + ALG_SID_SHA, + ALG_SID_MAC, + ALG_SID_RIPEMD, + ALG_SID_RIPEMD160, + ALG_SID_SSL3SHAMD5, + ALG_SID_HMAC, + ALG_SID_TLS1PRF, // = 10 + ALG_SID_AES_128 = 14, + ALG_SID_AES_192, + ALG_SID_AES_256, + ALG_SID_AES, // = 17 + ALG_SID_EXAMPLE = 80 +} + +enum : ALG_ID { + CALG_MD2 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2, + CALG_MD4 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4, + CALG_MD5 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5, + CALG_SHA = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA, + CALG_SHA1 = CALG_SHA, + CALG_MAC = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC, + CALG_3DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 3, + CALG_CYLINK_MEK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 12, + CALG_SKIPJACK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 10, + CALG_KEA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS | 4, + CALG_RSA_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, + CALG_DSS_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY, + CALG_RSA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, + CALG_DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES, + CALG_RC2 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2, + CALG_RC4 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4, + CALG_SEAL = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL, + CALG_DH_EPHEM = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS + | ALG_SID_DSS_DMS, + CALG_DESX = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX, +// is undefined ALG_CLASS_DHASH in MinGW - presuming typo + CALG_TLS1PRF = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF, + CALG_AES_128 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128, + CALG_AES_192 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192, + CALG_AES_256 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256, + CALG_AES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES, +} + +enum { + CRYPT_VERIFYCONTEXT = 0xF0000000, +} + +enum { + CRYPT_NEWKEYSET = 8, + CRYPT_DELETEKEYSET = 16, + CRYPT_MACHINE_KEYSET = 32, + CRYPT_SILENT = 64, +} + +enum { + CRYPT_EXPORTABLE = 1, + CRYPT_USER_PROTECTED = 2, + CRYPT_CREATE_SALT = 4, + CRYPT_UPDATE_KEY = 8, +} + +enum { + SIMPLEBLOB = 1, + PUBLICKEYBLOB = 6, + PRIVATEKEYBLOB = 7, + PLAINTEXTKEYBLOB = 8, + OPAQUEKEYBLOB = 9, + PUBLICKEYBLOBEX = 10, + SYMMETRICWRAPKEYBLOB = 11, +} + +enum { + AT_KEYEXCHANGE = 1, + AT_SIGNATURE = 2, +} + +enum { + CRYPT_USERDATA = 1, +} + +enum { + PKCS5_PADDING = 1, +} + +enum { + CRYPT_MODE_CBC = 1, + CRYPT_MODE_ECB = 2, + CRYPT_MODE_OFB = 3, + CRYPT_MODE_CFB = 4, + CRYPT_MODE_CTS = 5, + CRYPT_MODE_CBCI = 6, + CRYPT_MODE_CFBP = 7, + CRYPT_MODE_OFBP = 8, + CRYPT_MODE_CBCOFM = 9, + CRYPT_MODE_CBCOFMI = 10, +} + +enum { + CRYPT_ENCRYPT = 1, + CRYPT_DECRYPT = 2, + CRYPT_EXPORT = 4, + CRYPT_READ = 8, + CRYPT_WRITE = 16, + CRYPT_MAC = 32, +} + +enum { + HP_ALGID = 1, + HP_HASHVAL = 2, + HP_HASHSIZE = 4, + HP_HMAC_INFO = 5, +} + +enum { + CRYPT_FAILED = FALSE, + CRYPT_SUCCEED = TRUE, +} + +bool RCRYPT_SUCCEEDED(BOOL r) { return r==CRYPT_SUCCEED; } +bool RCRYPT_FAILED(BOOL r) { return r==CRYPT_FAILED; } + +enum { + PP_ENUMALGS = 1, + PP_ENUMCONTAINERS = 2, + PP_IMPTYPE = 3, + PP_NAME = 4, + PP_VERSION = 5, + PP_CONTAINER = 6, + PP_CHANGE_PASSWORD = 7, + PP_KEYSET_SEC_DESCR = 8, + PP_CERTCHAIN = 9, + PP_KEY_TYPE_SUBTYPE = 10, + PP_PROVTYPE = 16, + PP_KEYSTORAGE = 17, + PP_APPLI_CERT = 18, + PP_SYM_KEYSIZE = 19, + PP_SESSION_KEYSIZE = 20, + PP_UI_PROMPT = 21, + PP_ENUMALGS_EX = 22, + PP_ENUMMANDROOTS = 25, + PP_ENUMELECTROOTS = 26, + PP_KEYSET_TYPE = 27, + PP_ADMIN_PIN = 31, + PP_KEYEXCHANGE_PIN = 32, + PP_SIGNATURE_PIN = 33, + PP_SIG_KEYSIZE_INC = 34, + PP_KEYX_KEYSIZE_INC = 35, + PP_UNIQUE_CONTAINER = 36, + PP_SGC_INFO = 37, + PP_USE_HARDWARE_RNG = 38, + PP_KEYSPEC = 39, + PP_ENUMEX_SIGNING_PROT = 40, +} + +enum { + CRYPT_FIRST = 1, + CRYPT_NEXT = 2, +} + +enum { + CRYPT_IMPL_HARDWARE = 1, + CRYPT_IMPL_SOFTWARE = 2, + CRYPT_IMPL_MIXED = 3, + CRYPT_IMPL_UNKNOWN = 4, +} + +enum { + PROV_RSA_FULL = 1, + PROV_RSA_SIG = 2, + PROV_DSS = 3, + PROV_FORTEZZA = 4, + PROV_MS_MAIL = 5, + PROV_SSL = 6, + PROV_STT_MER = 7, + PROV_STT_ACQ = 8, + PROV_STT_BRND = 9, + PROV_STT_ROOT = 10, + PROV_STT_ISS = 11, + PROV_RSA_SCHANNEL = 12, + PROV_DSS_DH = 13, + PROV_EC_ECDSA_SIG = 14, + PROV_EC_ECNRA_SIG = 15, + PROV_EC_ECDSA_FULL = 16, + PROV_EC_ECNRA_FULL = 17, + PROV_DH_SCHANNEL = 18, + PROV_SPYRUS_LYNKS = 20, + PROV_RNG = 21, + PROV_INTEL_SEC = 22, + PROV_RSA_AES = 24, + MAXUIDLEN = 64, +} + +enum { + CUR_BLOB_VERSION = 2, +} + +enum { + X509_ASN_ENCODING = 1, + PKCS_7_ASN_ENCODING = 65536, +} + +enum { + CERT_V1 = 0, + CERT_V2 = 1, + CERT_V3 = 2, +} + +enum { + CERT_E_CHAINING = (-2146762486), + CERT_E_CN_NO_MATCH = (-2146762481), + CERT_E_EXPIRED = (-2146762495), + CERT_E_PURPOSE = (-2146762490), + CERT_E_REVOCATION_FAILURE = (-2146762482), + CERT_E_REVOKED = (-2146762484), + CERT_E_ROLE = (-2146762493), + CERT_E_UNTRUSTEDROOT = (-2146762487), + CERT_E_UNTRUSTEDTESTROOT = (-2146762483), + CERT_E_VALIDITYPERIODNESTING = (-2146762494), + CERT_E_WRONG_USAGE = (-2146762480), + CERT_E_PATHLENCONST = (-2146762492), + CERT_E_CRITICAL = (-2146762491), + CERT_E_ISSUERCHAINING = (-2146762489), + CERT_E_MALFORMED = (-2146762488), + CRYPT_E_REVOCATION_OFFLINE = (-2146885613), + CRYPT_E_REVOKED = (-2146885616), + TRUST_E_BASIC_CONSTRAINTS = (-2146869223), + TRUST_E_CERT_SIGNATURE = (-2146869244), + TRUST_E_FAIL = (-2146762485), +} + +enum { + CERT_TRUST_NO_ERROR = 0, + CERT_TRUST_IS_NOT_TIME_VALID = 1, + CERT_TRUST_IS_NOT_TIME_NESTED = 2, + CERT_TRUST_IS_REVOKED = 4, + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 8, + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 16, + CERT_TRUST_IS_UNTRUSTED_ROOT = 32, + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 64, + CERT_TRUST_IS_CYCLIC = 128, + CERT_TRUST_IS_PARTIAL_CHAIN = 65536, + CERT_TRUST_CTL_IS_NOT_TIME_VALID = 131072, + CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144, + CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288, +} + +enum { + CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 1, + CERT_TRUST_HAS_KEY_MATCH_ISSUER = 2, + CERT_TRUST_HAS_NAME_MATCH_ISSUER = 4, + CERT_TRUST_IS_SELF_SIGNED = 8, + CERT_TRUST_IS_COMPLEX_CHAIN = 65536, +} + +enum { + CERT_CHAIN_POLICY_BASE = cast(LPCSTR) 1, + CERT_CHAIN_POLICY_AUTHENTICODE = cast(LPCSTR) 2, + CERT_CHAIN_POLICY_AUTHENTICODE_TS = cast(LPCSTR) 3, + CERT_CHAIN_POLICY_SSL = cast(LPCSTR) 4, + CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = cast(LPCSTR) 5, + CERT_CHAIN_POLICY_NT_AUTH = cast(LPCSTR) 6, +} + +enum { + USAGE_MATCH_TYPE_AND = 0, + USAGE_MATCH_TYPE_OR = 1, +} + +enum { + CERT_SIMPLE_NAME_STR = 1, + CERT_OID_NAME_STR = 2, + CERT_X500_NAME_STR = 3, +} +enum { + CERT_NAME_STR_SEMICOLON_FLAG = 1073741824, + CERT_NAME_STR_CRLF_FLAG = 134217728, + CERT_NAME_STR_NO_PLUS_FLAG = 536870912, + CERT_NAME_STR_NO_QUOTING_FLAG = 268435456, + CERT_NAME_STR_REVERSE_FLAG = 33554432, + CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG = 131072, +} + +enum { + CERT_FIND_ANY = 0, + CERT_FIND_CERT_ID = 1048576, + CERT_FIND_CTL_USAGE = 655360, + CERT_FIND_ENHKEY_USAGE = 655360, + CERT_FIND_EXISTING = 851968, + CERT_FIND_HASH = 65536, + CERT_FIND_ISSUER_ATTR = 196612, + CERT_FIND_ISSUER_NAME = 131076, + CERT_FIND_ISSUER_OF = 786432, + CERT_FIND_KEY_IDENTIFIER = 983040, + CERT_FIND_KEY_SPEC = 589824, + CERT_FIND_MD5_HASH = 262144, + CERT_FIND_PROPERTY = 327680, + CERT_FIND_PUBLIC_KEY = 393216, + CERT_FIND_SHA1_HASH = 65536, + CERT_FIND_SIGNATURE_HASH = 917504, + CERT_FIND_SUBJECT_ATTR = 196615, + CERT_FIND_SUBJECT_CERT = 720896, + CERT_FIND_SUBJECT_NAME = 131079, + CERT_FIND_SUBJECT_STR_A = 458759, + CERT_FIND_SUBJECT_STR_W = 524295, + CERT_FIND_ISSUER_STR_A = 458756, + CERT_FIND_ISSUER_STR_W = 524292, +} + +enum { + CERT_FIND_OR_ENHKEY_USAGE_FLAG = 16, + CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = 1, + CERT_FIND_NO_ENHKEY_USAGE_FLAG = 8, + CERT_FIND_VALID_ENHKEY_USAGE_FLAG = 32, + CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = 2, +} + +enum { + CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG = 2, + CERT_UNICODE_IS_RDN_ATTRS_FLAG = 1, + CERT_CHAIN_FIND_BY_ISSUER = 1, +} + +enum { + CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG = 1, + CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG = 2, + CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 4, + CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG = 8, + CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG = 16384, + CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG = 32768, +} + +enum { + CERT_STORE_PROV_SYSTEM = 10, + CERT_SYSTEM_STORE_LOCAL_MACHINE = 131072, +} + +enum { + szOID_PKIX_KP_SERVER_AUTH = "4235600", + szOID_SERVER_GATED_CRYPTO = "4235658", + szOID_SGC_NETSCAPE = "2.16.840.1.113730.4.1", + szOID_PKIX_KP_CLIENT_AUTH = "1.3.6.1.5.5.7.3.2", +} + +enum { + CRYPT_NOHASHOID = 0x00000001, + CRYPT_NO_SALT = 0x10, + CRYPT_PREGEN = 0x40, +} + +enum { + CRYPT_RECIPIENT = 0x10, + CRYPT_INITIATOR = 0x40, + CRYPT_ONLINE = 0x80, + CRYPT_SF = 0x100, + CRYPT_CREATE_IV = 0x200, + CRYPT_KEK = 0x400, + CRYPT_DATA_KEY = 0x800, + CRYPT_VOLATILE = 0x1000, + CRYPT_SGCKEY = 0x2000, +} + +enum { + KP_IV = 0x00000001, + KP_SALT = 0x00000002, + KP_PADDING = 0x00000003, + KP_MODE = 0x00000004, + KP_MODE_BITS = 0x00000005, + KP_PERMISSIONS = 0x00000006, + KP_ALGID = 0x00000007, + KP_BLOCKLEN = 0x00000008, + KP_KEYLEN = 0x00000009, + KP_SALT_EX = 0x0000000a, + KP_P = 0x0000000b, + KP_G = 0x0000000c, + KP_Q = 0x0000000d, + KP_X = 0x0000000e, + KP_Y = 0x0000000f, + KP_RA = 0x00000010, + KP_RB = 0x00000011, + KP_INFO = 0x00000012, + KP_EFFECTIVE_KEYLEN = 0x00000013, + KP_SCHANNEL_ALG = 0x00000014, + KP_PUB_PARAMS = 0x00000027, +} + +enum { + CRYPT_FLAG_PCT1 = 0x0001, + CRYPT_FLAG_SSL2 = 0x0002, + CRYPT_FLAG_SSL3 = 0x0004, + CRYPT_FLAG_TLS1 = 0x0008, + CRYPT_FLAG_IPSEC = 0x0010, + CRYPT_FLAG_SIGNING = 0x0020, +} + +enum { + SCHANNEL_MAC_KEY = 0x00000000, + SCHANNEL_ENC_KEY = 0x00000001, +} + +enum { + INTERNATIONAL_USAGE = 0x00000001, +} + + +alias UINT ALG_ID; +alias ULONG HCRYPTPROV, HCRYPTKEY, HCRYPTHASH; +alias PVOID HCERTSTORE, HCRYPTMSG, HCERTCHAINENGINE; + +struct VTableProvStruc { + FARPROC FuncVerifyImage; +} +alias VTableProvStruc* PVTableProvStruc; + +struct _CRYPTOAPI_BLOB { + DWORD cbData; + BYTE* pbData; +} +alias _CRYPTOAPI_BLOB CRYPT_INTEGER_BLOB, CRYPT_UINT_BLOB, + CRYPT_OBJID_BLOB, CERT_NAME_BLOB, CERT_RDN_VALUE_BLOB, CERT_BLOB, + CRL_BLOB, DATA_BLOB, CRYPT_DATA_BLOB, CRYPT_HASH_BLOB, + CRYPT_DIGEST_BLOB, CRYPT_DER_BLOB, CRYPT_ATTR_BLOB; +alias _CRYPTOAPI_BLOB* PCRYPT_INTEGER_BLOB, PCRYPT_UINT_BLOB, + PCRYPT_OBJID_BLOB, PCERT_NAME_BLOB, PCERT_RDN_VALUE_BLOB, PCERT_BLOB, + PCRL_BLOB, PDATA_BLOB, PCRYPT_DATA_BLOB, PCRYPT_HASH_BLOB, + PCRYPT_DIGEST_BLOB, PCRYPT_DER_BLOB, PCRYPT_ATTR_BLOB; + +// not described in SDK; has the same layout as HTTPSPolicyCallbackData +struct SSL_EXTRA_CERT_CHAIN_POLICY_PARA { + DWORD cbStruct; + DWORD dwAuthType; + DWORD fdwChecks; + LPWSTR pwszServerName; +} +alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA HTTPSPolicyCallbackData; +alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA* PSSL_EXTRA_CERT_CHAIN_POLICY_PARA, + PHTTPSPolicyCallbackData; + +/* #if (_WIN32_WINNT>=0x500) */ +struct CERT_CHAIN_POLICY_PARA { + DWORD cbSize = CERT_CHAIN_POLICY_PARA.sizeof; + DWORD dwFlags; + void* pvExtraPolicyPara; +} +alias CERT_CHAIN_POLICY_PARA* PCERT_CHAIN_POLICY_PARA; + +struct CERT_CHAIN_POLICY_STATUS { + DWORD cbSize = CERT_CHAIN_POLICY_STATUS.sizeof; + DWORD dwError; + LONG lChainIndex; + LONG lElementIndex; + void* pvExtraPolicyStatus; +} +alias CERT_CHAIN_POLICY_STATUS* PCERT_CHAIN_POLICY_STATUS; +/* #endif */ + +struct CRYPT_ALGORITHM_IDENTIFIER { + LPSTR pszObjId; + CRYPT_OBJID_BLOB Parameters; +} +alias CRYPT_ALGORITHM_IDENTIFIER* PCRYPT_ALGORITHM_IDENTIFIER; + +struct CRYPT_BIT_BLOB { + DWORD cbData; + BYTE* pbData; + DWORD cUnusedBits; +} +alias CRYPT_BIT_BLOB* PCRYPT_BIT_BLOB; + +struct CERT_PUBLIC_KEY_INFO { + CRYPT_ALGORITHM_IDENTIFIER Algorithm; + CRYPT_BIT_BLOB PublicKey; +} +alias CERT_PUBLIC_KEY_INFO* PCERT_PUBLIC_KEY_INFO; + +struct CERT_EXTENSION { + LPSTR pszObjId; + BOOL fCritical; + CRYPT_OBJID_BLOB Value; +} +alias CERT_EXTENSION* PCERT_EXTENSION; + +struct CERT_INFO { + DWORD dwVersion; + CRYPT_INTEGER_BLOB SerialNumber; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CERT_NAME_BLOB Issuer; + FILETIME NotBefore; + FILETIME NotAfter; + CERT_NAME_BLOB Subject; + CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; + CRYPT_BIT_BLOB IssuerUniqueId; + CRYPT_BIT_BLOB SubjectUniqueId; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CERT_INFO* PCERT_INFO; + +struct CERT_CONTEXT { + DWORD dwCertEncodingType; + BYTE* pbCertEncoded; + DWORD cbCertEncoded; + PCERT_INFO pCertInfo; + HCERTSTORE hCertStore; +} +alias CERT_CONTEXT* PCERT_CONTEXT; +alias const(CERT_CONTEXT)* PCCERT_CONTEXT; + +struct CTL_USAGE { + DWORD cUsageIdentifier; + LPSTR* rgpszUsageIdentifier; +} +alias CTL_USAGE CERT_ENHKEY_USAGE; +alias CTL_USAGE* PCTRL_USAGE, PCERT_ENHKEY_USAGE; + +struct CERT_USAGE_MATCH { + DWORD dwType; + CERT_ENHKEY_USAGE Usage; +} +alias CERT_USAGE_MATCH* PCERT_USAGE_MATCH; +/* #if (_WIN32_WINNT>=0x500) */ + +struct CERT_CHAIN_PARA { + DWORD cbSize = CERT_CHAIN_PARA.sizeof; + CERT_USAGE_MATCH RequestedUsage; +//#if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS + CERT_USAGE_MATCH RequestedIssuancePolicy; + DWORD dwUrlRetrievalTimeout; + BOOL fCheckRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +//#endif +} +alias CERT_CHAIN_PARA* PCERT_CHAIN_PARA; + +extern (Windows) alias BOOL function(PCCERT_CONTEXT, void*) + PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK; + +struct CERT_CHAIN_FIND_BY_ISSUER_PARA { + DWORD cbSize = CERT_CHAIN_FIND_BY_ISSUER_PARA.sizeof; + LPCSTR pszUsageIdentifier; + DWORD dwKeySpec; + DWORD dwAcquirePrivateKeyFlags; + DWORD cIssuer; + CERT_NAME_BLOB* rgIssuer; + PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback; + void* pvFindArg; + DWORD* pdwIssuerChainIndex; + DWORD* pdwIssuerElementIndex; +} +alias CERT_CHAIN_FIND_BY_ISSUER_PARA* PCERT_CHAIN_FIND_BY_ISSUER_PARA; +/* #endif */ + +struct CERT_TRUST_STATUS { + DWORD dwErrorStatus; + DWORD dwInfoStatus; +} +alias CERT_TRUST_STATUS* PCERT_TRUST_STATUS; + +struct CRL_ENTRY { + CRYPT_INTEGER_BLOB SerialNumber; + FILETIME RevocationDate; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CRL_ENTRY* PCRL_ENTRY; + +struct CRL_INFO { + DWORD dwVersion; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CERT_NAME_BLOB Issuer; + FILETIME ThisUpdate; + FILETIME NextUpdate; + DWORD cCRLEntry; + PCRL_ENTRY rgCRLEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CRL_INFO* PCRL_INFO; + +struct CRL_CONTEXT { + DWORD dwCertEncodingType; + BYTE* pbCrlEncoded; + DWORD cbCrlEncoded; + PCRL_INFO pCrlInfo; + HCERTSTORE hCertStore; +} +alias CRL_CONTEXT* PCRL_CONTEXT; +alias const(CRL_CONTEXT)* PCCRL_CONTEXT; + +struct CERT_REVOCATION_CRL_INFO { + DWORD cbSize = CERT_REVOCATION_CRL_INFO.sizeof; + PCCRL_CONTEXT pBaseCRLContext; + PCCRL_CONTEXT pDeltaCRLContext; + PCRL_ENTRY pCrlEntry; + BOOL fDeltaCrlEntry; +} +alias CERT_REVOCATION_CRL_INFO* PCERT_REVOCATION_CRL_INFO; + +struct CERT_REVOCATION_INFO { + DWORD cbSize = CERT_REVOCATION_INFO.sizeof; + DWORD dwRevocationResult; + LPCSTR pszRevocationOid; + LPVOID pvOidSpecificInfo; + BOOL fHasFreshnessTime; + DWORD dwFreshnessTime; + PCERT_REVOCATION_CRL_INFO pCrlInfo; +} +alias CERT_REVOCATION_INFO* PCERT_REVOCATION_INFO; + +/* #if (_WIN32_WINNT>=0x500) */ +struct CERT_CHAIN_ELEMENT { + DWORD cbSize = CERT_CHAIN_ELEMENT.sizeof; + PCCERT_CONTEXT pCertContext; + CERT_TRUST_STATUS TrustStatus; + PCERT_REVOCATION_INFO pRevocationInfo; + PCERT_ENHKEY_USAGE pIssuanceUsage; + PCERT_ENHKEY_USAGE pApplicationUsage; +} +alias CERT_CHAIN_ELEMENT* PCERT_CHAIN_ELEMENT; +/* #endif */ + +struct CRYPT_ATTRIBUTE { + LPSTR pszObjId; + DWORD cValue; + PCRYPT_ATTR_BLOB rgValue; +} +alias CRYPT_ATTRIBUTE* PCRYPT_ATTRIBUTE; + +struct CTL_ENTRY { + CRYPT_DATA_BLOB SubjectIdentifier; + DWORD cAttribute; + PCRYPT_ATTRIBUTE rgAttribute; +} +alias CTL_ENTRY* PCTL_ENTRY; + +struct CTL_INFO { + DWORD dwVersion; + CTL_USAGE SubjectUsage; + CRYPT_DATA_BLOB ListIdentifier; + CRYPT_INTEGER_BLOB SequenceNumber; + FILETIME ThisUpdate; + FILETIME NextUpdate; + CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; + DWORD cCTLEntry; + PCTL_ENTRY rgCTLEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CTL_INFO* PCTL_INFO; + +struct CTL_CONTEXT { + DWORD dwMsgAndCertEncodingType; + BYTE* pbCtlEncoded; + DWORD cbCtlEncoded; + PCTL_INFO pCtlInfo; + HCERTSTORE hCertStore; + HCRYPTMSG hCryptMsg; + BYTE* pbCtlContent; + DWORD cbCtlContent; +} +alias CTL_CONTEXT* PCTL_CONTEXT; +alias const(CTL_CONTEXT)* PCCTL_CONTEXT; + +struct CERT_TRUST_LIST_INFO { + DWORD cbSize = CERT_TRUST_LIST_INFO.sizeof; + PCTL_ENTRY pCtlEntry; + PCCTL_CONTEXT pCtlContext; +} +alias CERT_TRUST_LIST_INFO* PCERT_TRUST_LIST_INFO; + +struct CERT_SIMPLE_CHAIN { + DWORD cbSize = CERT_SIMPLE_CHAIN.sizeof; + CERT_TRUST_STATUS TrustStatus; + DWORD cElement; + PCERT_CHAIN_ELEMENT* rgpElement; + PCERT_TRUST_LIST_INFO pTrustListInfo; + BOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +} +alias CERT_SIMPLE_CHAIN* PCERT_SIMPLE_CHAIN; + +/* #if (_WIN32_WINNT>=0x500) */ +alias const(CERT_CHAIN_CONTEXT)* PCCERT_CHAIN_CONTEXT; +struct CERT_CHAIN_CONTEXT { + DWORD cbSize = CERT_CHAIN_CONTEXT.sizeof; + CERT_TRUST_STATUS TrustStatus; + DWORD cChain; + PCERT_SIMPLE_CHAIN* rgpChain; + DWORD cLowerQualityChainContext; + PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; + BOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +} +alias CERT_CHAIN_CONTEXT* PCERT_CHAIN_CONTEXT; +/* #endif */ + +struct PROV_ENUMALGS { + ALG_ID aiAlgid; + DWORD dwBitLen; + DWORD dwNameLen; + CHAR[20] szName; +} + +struct PUBLICKEYSTRUC { + BYTE bType; + BYTE bVersion; + WORD reserved; + ALG_ID aiKeyAlg; +} +alias PUBLICKEYSTRUC BLOBHEADER; + +struct RSAPUBKEY { + DWORD magic; + DWORD bitlen; + DWORD pubexp; +} + +struct HMAC_INFO { + ALG_ID HashAlgid; + BYTE* pbInnerString; + DWORD cbInnerString; + BYTE* pbOuterString; + DWORD cbOuterString; +} +alias HMAC_INFO* PHMAC_INFO; + +extern (Windows) { + BOOL CertCloseStore(HCERTSTORE, DWORD); + BOOL CertGetCertificateChain(HCERTCHAINENGINE, PCCERT_CONTEXT, LPFILETIME, + HCERTSTORE, PCERT_CHAIN_PARA, DWORD, LPVOID, PCCERT_CHAIN_CONTEXT*); + BOOL CertVerifyCertificateChainPolicy(LPCSTR, PCCERT_CHAIN_CONTEXT, + PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS); + void CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT); + DWORD CertNameToStrA(DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD); + DWORD CertNameToStrW(DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD); + HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV, LPCSTR); + HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR); + HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, const(void)*); + PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWORD, + const(void)*, PCCERT_CONTEXT); + BOOL CertFreeCertificateContext(PCCERT_CONTEXT); + PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE, + PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*); + PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWORD, + const(void)*, PCCERT_CHAIN_CONTEXT); + + BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); + BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD); + BOOL CryptReleaseContext(HCRYPTPROV, DWORD); + BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*); + BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*); + BOOL CryptDestroyKey(HCRYPTKEY); + static if (_WIN32_WINNT >= 0x500) { + BOOL CryptDuplicateHash(HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*); + BOOL CryptDuplicateKey(HCRYPTKEY, DWORD*, DWORD, HCRYPTKEY*); + } + BOOL CryptSetKeyParam(HCRYPTKEY, DWORD, PBYTE, DWORD); + BOOL CryptGetKeyParam(HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptSetHashParam(HCRYPTHASH, DWORD, PBYTE, DWORD); + BOOL CryptGetHashParam(HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptSetProvParam(HCRYPTPROV, DWORD, PBYTE, DWORD); + BOOL CryptGetProvParam(HCRYPTPROV, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptGenRandom(HCRYPTPROV, DWORD, PBYTE); + BOOL CryptGetUserKey(HCRYPTPROV, DWORD, HCRYPTKEY*); + BOOL CryptExportKey(HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, PBYTE, PDWORD); + BOOL CryptImportKey(HCRYPTPROV, PBYTE, DWORD, HCRYPTKEY, DWORD, + HCRYPTKEY*); + BOOL CryptEncrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD, + DWORD); + BOOL CryptDecrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD); + BOOL CryptCreateHash(HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH*); + BOOL CryptHashData(HCRYPTHASH, PBYTE, DWORD, DWORD); + BOOL CryptHashSessionKey(HCRYPTHASH, HCRYPTKEY, DWORD); + BOOL CryptGetHashValue(HCRYPTHASH, DWORD, PBYTE, PDWORD); + BOOL CryptDestroyHash(HCRYPTHASH); + BOOL CryptSignHashA(HCRYPTHASH, DWORD, LPCSTR, DWORD, PBYTE, PDWORD); + BOOL CryptSignHashW(HCRYPTHASH, DWORD, LPCWSTR, DWORD, PBYTE, PDWORD); + BOOL CryptVerifySignatureA(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCSTR, + DWORD); + BOOL CryptVerifySignatureW(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCWSTR, + DWORD); + BOOL CryptSetProviderA(LPCSTR, DWORD); + BOOL CryptSetProviderW(LPCWSTR, DWORD); +} + +version (Unicode) { + alias CertNameToStrW CertNameToStr; + alias CryptAcquireContextW CryptAcquireContext; + alias CryptSignHashW CryptSignHash; + alias CryptVerifySignatureW CryptVerifySignature; + alias CryptSetProviderW CryptSetProvider; + alias CertOpenSystemStoreW CertOpenSystemStore; + /+alias CERT_FIND_SUBJECT_STR_W CERT_FIND_SUBJECT_STR; + alias CERT_FIND_ISSUER_STR_W CERT_FIND_ISSUER_STR;+/ +} else { + alias CertNameToStrA CertNameToStr; + alias CryptAcquireContextA CryptAcquireContext; + alias CryptSignHashA CryptSignHash; + alias CryptVerifySignatureA CryptVerifySignature; + alias CryptSetProviderA CryptSetProvider; + alias CertOpenSystemStoreA CertOpenSystemStore; + /+alias CERT_FIND_SUBJECT_STR_A CERT_FIND_SUBJECT_STR; + alias CERT_FIND_ISSUER_STR_A CERT_FIND_ISSUER_STR;+/ +} diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d new file mode 100644 index 0000000000..78930d2268 --- /dev/null +++ b/src/core/sys/windows/windef.d @@ -0,0 +1,155 @@ +/***********************************************************************\ +* windef.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.windef; + +public import win32.winnt; +private import win32.w32api; + +const size_t MAX_PATH = 260; + +ushort MAKEWORD(ubyte a, ubyte b) { + return cast(ushort) ((b << 8) | a); +} + +ushort MAKEWORD(ushort a, ushort b) { + assert((a & 0xFF00) == 0); + assert((b & 0xFF00) == 0); + return MAKEWORD(cast(ubyte)a, cast(ubyte)b); +} + +uint MAKELONG(ushort a, ushort b) { + return cast(uint) ((b << 16) | a); +} + +uint MAKELONG(uint a, uint b) { + assert((a & 0xFFFF0000) == 0); + assert((b & 0xFFFF0000) == 0); + return MAKELONG(cast(ushort)a, cast(ushort)b); +} + +ushort LOWORD(ulong l) { + return cast(ushort) l; +} + +ushort HIWORD(ulong l) { + return cast(ushort) (l >>> 16); +} + +ubyte LOBYTE(ushort w) { + return cast(ubyte) w; +} + +ubyte HIBYTE(ushort w) { + return cast(ubyte) (w >>> 8); +} + +template max(T) { + T max(T a, T b) { + return a > b ? a : b; + } +} + +template min(T) { + T min(T a, T b) { + return a < b ? a : b; + } +} + +enum void* NULL = null; +alias ubyte BYTE; +alias ubyte* PBYTE, LPBYTE; +alias ushort USHORT, WORD, ATOM; +alias ushort* PUSHORT, PWORD, LPWORD; +alias uint ULONG, DWORD, UINT, COLORREF; +alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT; +alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT; +alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG; +alias float FLOAT; +alias float* PFLOAT; +alias const(void)* PCVOID, LPCVOID; + +alias UINT_PTR WPARAM; +alias LONG_PTR LPARAM, LRESULT; + +mixin DECLARE_HANDLE!("HGLOBAL"); +mixin DECLARE_HANDLE!("HLOCAL"); +mixin DECLARE_HANDLE!("GLOBALHANDLE"); +mixin DECLARE_HANDLE!("LOCALHANDLE"); +mixin DECLARE_HANDLE!("HGDIOBJ"); +mixin DECLARE_HANDLE!("HACCEL"); +mixin DECLARE_HANDLE!("HBITMAP", HGDIOBJ); +mixin DECLARE_HANDLE!("HBRUSH", HGDIOBJ); +mixin DECLARE_HANDLE!("HCOLORSPACE"); +mixin DECLARE_HANDLE!("HDC"); +mixin DECLARE_HANDLE!("HGLRC"); +mixin DECLARE_HANDLE!("HDESK"); +mixin DECLARE_HANDLE!("HENHMETAFILE"); +mixin DECLARE_HANDLE!("HFONT", HGDIOBJ); +mixin DECLARE_HANDLE!("HICON"); +mixin DECLARE_HANDLE!("HINSTANCE"); +mixin DECLARE_HANDLE!("HKEY"); +mixin DECLARE_HANDLE!("HMENU"); +mixin DECLARE_HANDLE!("HMETAFILE"); +mixin DECLARE_HANDLE!("HMODULE"); +mixin DECLARE_HANDLE!("HMONITOR"); +mixin DECLARE_HANDLE!("HPALETTE"); +mixin DECLARE_HANDLE!("HPEN", HGDIOBJ); +mixin DECLARE_HANDLE!("HRGN", HGDIOBJ); +mixin DECLARE_HANDLE!("HRSRC"); +mixin DECLARE_HANDLE!("HSTR"); +mixin DECLARE_HANDLE!("HTASK"); +mixin DECLARE_HANDLE!("HWND"); +mixin DECLARE_HANDLE!("HWINSTA"); +mixin DECLARE_HANDLE!("HKL"); +mixin DECLARE_HANDLE!("HCURSOR"); +alias HKEY* PHKEY; + +static if (_WIN32_WINNT >= 0x500) { + mixin DECLARE_HANDLE!("HTERMINAL"); + mixin DECLARE_HANDLE!("HWINEVENTHOOK"); +} + +alias extern (Windows) INT_PTR function() FARPROC, NEARPROC, PROC; + +struct RECT { + LONG left; + LONG top; + LONG right; + LONG bottom; +} +alias RECT RECTL; +alias RECT* PRECT, LPRECT, PRECTL, LPRECTL; +alias const(RECT)* LPCRECT, LPCRECTL; + +struct POINT { + LONG x; + LONG y; +} +alias POINT POINTL; +alias POINT* PPOINT, LPPOINT, PPOINTL, LPPOINTL; + +struct SIZE { + LONG cx; + LONG cy; +} +alias SIZE SIZEL; +alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL; + +struct POINTS { + SHORT x; + SHORT y; +} +alias POINTS* PPOINTS, LPPOINTS; + +enum : BOOL { + FALSE = 0, + TRUE = 1 +} diff --git a/src/core/sys/windows/windows.d b/src/core/sys/windows/windows.d index 6793439e2a..46508ea0cf 100644 --- a/src/core/sys/windows/windows.d +++ b/src/core/sys/windows/windows.d @@ -1,3963 +1,65 @@ -/** - * Windows is a registered trademark of Microsoft Corporation in the United - * States and other countries. - * - * Copyright: Copyright Digital Mars 2000 - 2009. - * License: Distributed under the - * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). - * (See accompanying file LICENSE) - * Authors: Walter Bright, Sean Kelly, Alex Rønne Petersen - * Source: $(DRUNTIMESRC core/sys/windows/_windows.d) - */ - -module core.sys.windows.windows; - -version (Windows): -extern (Windows): -nothrow: -//@nogc: - - alias uint ULONG; - alias ULONG *PULONG; - alias ushort USHORT; - alias USHORT *PUSHORT; - alias ubyte UCHAR; - alias UCHAR *PUCHAR; - alias char *PSZ; - - alias void VOID; - alias char CHAR; - alias short SHORT; - alias int LONG; - - alias long LONGLONG; - alias ulong ULONGLONG; - - alias CHAR* LPCH, LPSTR, PCH, PSTR; - alias const(CHAR)* LPCCH, LPCSTR, PCCH, PCSTR; - - alias wchar WCHAR; - alias WCHAR* LPWCH, LPWSTR, PWCH, PWSTR; - alias const(WCHAR)* LPCWCH, LPCWSTR, PCWCH, PCWSTR; - - alias CHAR* LPTCH, LPTSTR, PTCH, PTSTR; - alias const(CHAR)* LPCTCH, LPCTSTR, PCTCH, PCTSTR; - - alias uint DWORD; - alias ulong DWORD64; - alias int BOOL; - alias ubyte BYTE; - alias ushort WORD; - alias float FLOAT; - alias FLOAT* PFLOAT; - alias BOOL* LPBOOL, PBOOL; - alias BYTE* LPBYTE, PBYTE; - alias int* LPINT, PINT; - alias WORD* LPWORD, PWORD; - alias int* LPLONG; - alias DWORD* LPDWORD, PDWORD; - alias void* LPVOID; - alias const(void)* LPCVOID; - - alias int INT; - alias uint UINT; - alias uint* PUINT; - - alias size_t SIZE_T; - -// ULONG_PTR must be able to store a pointer as an integral type -version (Win64) -{ - alias long INT_PTR; - alias ulong UINT_PTR; - alias long LONG_PTR; - alias ulong ULONG_PTR; - alias long * PINT_PTR; - alias ulong * PUINT_PTR; - alias long * PLONG_PTR; - alias ulong * PULONG_PTR; -} -else version (Win32) -{ - alias int INT_PTR; - alias uint UINT_PTR; - alias int LONG_PTR; - alias uint ULONG_PTR; - alias int * PINT_PTR; - alias uint * PUINT_PTR; - alias int * PLONG_PTR; - alias uint * PULONG_PTR; -} - - alias ULONG_PTR DWORD_PTR; - - alias void *HANDLE; - alias void *PVOID; - alias HANDLE HGLOBAL; - alias HANDLE HLOCAL; - alias LONG HRESULT; - alias LONG SCODE; - alias HANDLE HINSTANCE; - alias HINSTANCE HMODULE; - alias HANDLE HWND; - alias HANDLE* PHANDLE; - - alias HANDLE HGDIOBJ; - alias HANDLE HACCEL; - alias HANDLE HBITMAP; - alias HANDLE HBRUSH; - alias HANDLE HCOLORSPACE; - alias HANDLE HDC; - alias HANDLE HGLRC; - alias HANDLE HDESK; - alias HANDLE HENHMETAFILE; - alias HANDLE HFONT; - alias HANDLE HICON; - alias HANDLE HMENU; - alias HANDLE HMETAFILE; - alias HANDLE HPALETTE; - alias HANDLE HPEN; - alias HANDLE HRGN; - alias HANDLE HRSRC; - alias HANDLE HSTR; - alias HANDLE HTASK; - alias HANDLE HWINSTA; - alias HANDLE HKL; - alias HICON HCURSOR; - - alias HANDLE HKEY; - alias HKEY *PHKEY; - alias DWORD ACCESS_MASK; - alias ACCESS_MASK *PACCESS_MASK; - alias ACCESS_MASK REGSAM; - - version (Win64) - alias INT_PTR function() FARPROC; - else version (Win32) - alias int function() FARPROC; - - alias UINT_PTR WPARAM; - alias LONG_PTR LPARAM; - alias LONG_PTR LRESULT; - - alias DWORD COLORREF; - alias DWORD *LPCOLORREF; - alias WORD ATOM; - -version (all) -{ - // Properly prototyped versions - alias INT_PTR function(HWND, UINT, WPARAM, LPARAM) DLGPROC; - alias VOID function(HWND, UINT, UINT_PTR, DWORD) TIMERPROC; - alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC; - alias BOOL function(HWND, LPARAM) WNDENUMPROC; - alias LRESULT function(int code, WPARAM wParam, LPARAM lParam) HOOKPROC; - alias VOID function(HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; - alias BOOL function(HWND, LPCSTR, HANDLE) PROPENUMPROCA; - alias BOOL function(HWND, LPCWSTR, HANDLE) PROPENUMPROCW; - alias BOOL function(HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; - alias BOOL function(HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; - alias int function(LPSTR lpch, int ichCurrent, int cch, int code) - EDITWORDBREAKPROCA; - alias int function(LPWSTR lpch, int ichCurrent, int cch, int code) - EDITWORDBREAKPROCW; - alias BOOL function(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy) - DRAWSTATEPROC; -} -else -{ - alias FARPROC DLGPROC; - alias FARPROC TIMERPROC; - alias FARPROC GRAYSTRINGPROC; - alias FARPROC WNDENUMPROC; - alias FARPROC HOOKPROC; - alias FARPROC SENDASYNCPROC; - alias FARPROC EDITWORDBREAKPROCA; - alias FARPROC EDITWORDBREAKPROCW; - alias FARPROC PROPENUMPROCA; - alias FARPROC PROPENUMPROCW; - alias FARPROC PROPENUMPROCEXA; - alias FARPROC PROPENUMPROCEXW; - alias FARPROC DRAWSTATEPROC; -} - -extern (D) pure @nogc -{ -WORD HIWORD(long x) { return cast(WORD)((x >> 16) & 0xFFFF); } -WORD LOWORD(long x) { return cast(WORD)x; } -bool FAILED(int status) { return status < 0; } -bool SUCCEEDED(int Status) { return Status >= 0; } -} - -enum : int -{ - FALSE = 0, - TRUE = 1, -} - -enum : uint -{ - MAX_PATH = 260, - HINSTANCE_ERROR = 32, -} - -enum -{ - ERROR_SUCCESS = 0, - ERROR_INVALID_FUNCTION = 1, - ERROR_FILE_NOT_FOUND = 2, - ERROR_PATH_NOT_FOUND = 3, - ERROR_TOO_MANY_OPEN_FILES = 4, - ERROR_ACCESS_DENIED = 5, - ERROR_INVALID_HANDLE = 6, - ERROR_NO_MORE_FILES = 18, - ERROR_LOCK_VIOLATION = 33, - ERROR_INSUFFICIENT_BUFFER = 122, - ERROR_ALREADY_EXISTS = 183, - ERROR_MORE_DATA = 234, - ERROR_NO_MORE_ITEMS = 259, - ERROR_IO_PENDING = 997, -} - -enum -{ - DLL_PROCESS_ATTACH = 1, - DLL_THREAD_ATTACH = 2, - DLL_THREAD_DETACH = 3, - DLL_PROCESS_DETACH = 0, -} - -enum -{ - FILE_BEGIN = 0, - FILE_CURRENT = 1, - FILE_END = 2, -} - -enum : uint -{ - DELETE = 0x00010000, - READ_CONTROL = 0x00020000, - WRITE_DAC = 0x00040000, - WRITE_OWNER = 0x00080000, - SYNCHRONIZE = 0x00100000, - - STANDARD_RIGHTS_REQUIRED = 0x000F0000, - STANDARD_RIGHTS_READ = READ_CONTROL, - STANDARD_RIGHTS_WRITE = READ_CONTROL, - STANDARD_RIGHTS_EXECUTE = READ_CONTROL, - STANDARD_RIGHTS_ALL = 0x001F0000, - SPECIFIC_RIGHTS_ALL = 0x0000FFFF, - ACCESS_SYSTEM_SECURITY = 0x01000000, - MAXIMUM_ALLOWED = 0x02000000, - - GENERIC_READ = 0x80000000, - GENERIC_WRITE = 0x40000000, - GENERIC_EXECUTE = 0x20000000, - GENERIC_ALL = 0x10000000, -} - -enum -{ - FILE_SHARE_READ = 0x00000001, - FILE_SHARE_WRITE = 0x00000002, - FILE_SHARE_DELETE = 0x00000004, - FILE_ATTRIBUTE_READONLY = 0x00000001, - FILE_ATTRIBUTE_HIDDEN = 0x00000002, - FILE_ATTRIBUTE_SYSTEM = 0x00000004, - FILE_ATTRIBUTE_DIRECTORY = 0x00000010, - FILE_ATTRIBUTE_ARCHIVE = 0x00000020, - FILE_ATTRIBUTE_NORMAL = 0x00000080, - FILE_ATTRIBUTE_TEMPORARY = 0x00000100, - FILE_ATTRIBUTE_COMPRESSED = 0x00000800, - FILE_ATTRIBUTE_OFFLINE = 0x00001000, - FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, - FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, - FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004, - FILE_NOTIFY_CHANGE_SIZE = 0x00000008, - FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010, - FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020, - FILE_NOTIFY_CHANGE_CREATION = 0x00000040, - FILE_NOTIFY_CHANGE_SECURITY = 0x00000100, - FILE_ACTION_ADDED = 0x00000001, - FILE_ACTION_REMOVED = 0x00000002, - FILE_ACTION_MODIFIED = 0x00000003, - FILE_ACTION_RENAMED_OLD_NAME = 0x00000004, - FILE_ACTION_RENAMED_NEW_NAME = 0x00000005, - FILE_CASE_SENSITIVE_SEARCH = 0x00000001, - FILE_CASE_PRESERVED_NAMES = 0x00000002, - FILE_UNICODE_ON_DISK = 0x00000004, - FILE_PERSISTENT_ACLS = 0x00000008, - FILE_FILE_COMPRESSION = 0x00000010, - FILE_VOLUME_IS_COMPRESSED = 0x00008000, -} - -enum : DWORD -{ - INVALID_FILE_ATTRIBUTES = cast(DWORD)-1, -} - -enum : DWORD -{ - MAILSLOT_NO_MESSAGE = cast(DWORD)-1, - MAILSLOT_WAIT_FOREVER = cast(DWORD)-1, -} - -enum : uint -{ - FILE_FLAG_WRITE_THROUGH = 0x80000000, - FILE_FLAG_OVERLAPPED = 0x40000000, - FILE_FLAG_NO_BUFFERING = 0x20000000, - FILE_FLAG_RANDOM_ACCESS = 0x10000000, - FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000, - FILE_FLAG_DELETE_ON_CLOSE = 0x04000000, - FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, - FILE_FLAG_POSIX_SEMANTICS = 0x01000000, -} - -enum -{ - CREATE_NEW = 1, - CREATE_ALWAYS = 2, - OPEN_EXISTING = 3, - OPEN_ALWAYS = 4, - TRUNCATE_EXISTING = 5, -} - - -enum -{ - HANDLE INVALID_HANDLE_VALUE = cast(HANDLE)-1, - DWORD INVALID_SET_FILE_POINTER = cast(DWORD)-1, - DWORD INVALID_FILE_SIZE = cast(DWORD)0xFFFFFFFF, -} - -union LARGE_INTEGER -{ - struct - { - uint LowPart; - int HighPart; - } - long QuadPart; -} -alias LARGE_INTEGER* PLARGE_INTEGER; - -union ULARGE_INTEGER -{ - struct - { - uint LowPart; - uint HighPart; - } - ulong QuadPart; -} -alias ULARGE_INTEGER* PULARGE_INTEGER; - -struct OVERLAPPED { - ULONG_PTR Internal; - ULONG_PTR InternalHigh; - union { - struct { - DWORD Offset; - DWORD OffsetHigh; - } - void* Pointer; - } - HANDLE hEvent; -} -alias OVERLAPPED* LPOVERLAPPED; - -struct SECURITY_ATTRIBUTES { - DWORD nLength; - void *lpSecurityDescriptor; - BOOL bInheritHandle; -} - -alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; - -struct FILETIME { - DWORD dwLowDateTime; - DWORD dwHighDateTime; -} -alias FILETIME* PFILETIME, LPFILETIME; - -struct WIN32_FIND_DATA { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - DWORD dwReserved0; - DWORD dwReserved1; - char[MAX_PATH] cFileName; - char[14] cAlternateFileName; -} - -struct WIN32_FIND_DATAW { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - DWORD dwReserved0; - DWORD dwReserved1; - wchar[260] cFileName; - wchar[14] cAlternateFileName; -} - -// Critical Section - -struct _LIST_ENTRY -{ - _LIST_ENTRY *Flink; - _LIST_ENTRY *Blink; -} -alias _LIST_ENTRY LIST_ENTRY; - -struct _RTL_CRITICAL_SECTION_DEBUG -{ - WORD Type; - WORD CreatorBackTraceIndex; - _RTL_CRITICAL_SECTION *CriticalSection; - LIST_ENTRY ProcessLocksList; - DWORD EntryCount; - DWORD ContentionCount; - DWORD[2] Spare; -} -alias _RTL_CRITICAL_SECTION_DEBUG RTL_CRITICAL_SECTION_DEBUG; - -struct _RTL_CRITICAL_SECTION -{ - RTL_CRITICAL_SECTION_DEBUG * DebugInfo; - - // - // The following three fields control entering and exiting the critical - // section for the resource - // - - LONG LockCount; - LONG RecursionCount; - HANDLE OwningThread; // from the thread's ClientId->UniqueThread - HANDLE LockSemaphore; - ULONG_PTR SpinCount; // force size on 64-bit systems when packed -} -alias _RTL_CRITICAL_SECTION CRITICAL_SECTION; - - -enum -{ - STD_INPUT_HANDLE = cast(DWORD)-10, - STD_OUTPUT_HANDLE = cast(DWORD)-11, - STD_ERROR_HANDLE = cast(DWORD)-12, -} - -enum GET_FILEEX_INFO_LEVELS -{ - GetFileExInfoStandard, - GetFileExMaxInfoLevel -} - -struct WIN32_FILE_ATTRIBUTE_DATA -{ - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; -} -alias WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; - -export @nogc -{ -BOOL SetCurrentDirectoryA(LPCSTR lpPathName); -BOOL SetCurrentDirectoryW(LPCWSTR lpPathName); -UINT GetSystemDirectoryA(LPSTR lpBuffer, UINT uSize); -UINT GetSystemDirectoryW(LPWSTR lpBuffer, UINT uSize); -DWORD GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer); -DWORD GetCurrentDirectoryW(DWORD nBufferLength, LPWSTR lpBuffer); -BOOL CreateDirectoryA(LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); -BOOL CreateDirectoryW(LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); -BOOL CreateDirectoryExA(LPCSTR lpTemplateDirectory, LPCSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes); -BOOL CreateDirectoryExW(LPCWSTR lpTemplateDirectory, LPCWSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes); -BOOL RemoveDirectoryA(LPCSTR lpPathName); -BOOL RemoveDirectoryW(LPCWSTR lpPathName); - -BOOL CloseHandle(HANDLE hObject) @trusted; - -HANDLE CreateFileA(in char* lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, - SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwCreationDisposition, - DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); -HANDLE CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, - SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwCreationDisposition, - DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); - -BOOL DeleteFileA(in char *lpFileName); -BOOL DeleteFileW(LPCWSTR lpFileName); - -BOOL FindClose(HANDLE hFindFile); -HANDLE FindFirstFileA(in char *lpFileName, WIN32_FIND_DATA* lpFindFileData); -HANDLE FindFirstFileW(in LPCWSTR lpFileName, WIN32_FIND_DATAW* lpFindFileData); -BOOL FindNextFileA(HANDLE hFindFile, WIN32_FIND_DATA* lpFindFileData); -BOOL FindNextFileW(HANDLE hFindFile, WIN32_FIND_DATAW* lpFindFileData); -BOOL GetExitCodeThread(HANDLE hThread, DWORD *lpExitCode); -BOOL GetExitCodeProcess(HANDLE hProcess, DWORD *lpExitCode); -DWORD GetLastError() @trusted; -DWORD GetFileAttributesA(in char *lpFileName); -DWORD GetFileAttributesW(in wchar *lpFileName); -BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); -BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); -DWORD GetFileSize(HANDLE hFile, DWORD *lpFileSizeHigh); -BOOL CopyFileA(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, BOOL bFailIfExists); -BOOL CopyFileW(LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, BOOL bFailIfExists); -BOOL MoveFileA(in char *from, in char *to); -BOOL MoveFileW(LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName); -BOOL ReadFile(HANDLE hFile, void *lpBuffer, DWORD nNumberOfBytesToRead, - DWORD *lpNumberOfBytesRead, OVERLAPPED *lpOverlapped); -BOOL SetEndOfFile(in HANDLE file); -BOOL SetFileAttributesA(in LPCSTR lpFileName, DWORD dwFileAttributes); -BOOL SetFileAttributesW(in LPCWSTR lpFileName, DWORD dwFileAttributes); -DWORD SetFilePointer(HANDLE hFile, LONG lDistanceToMove, - LONG *lpDistanceToMoveHigh, DWORD dwMoveMethod); -BOOL WriteFile(HANDLE hFile, in void *lpBuffer, DWORD nNumberOfBytesToWrite, - DWORD *lpNumberOfBytesWritten, OVERLAPPED *lpOverlapped); -DWORD GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize); -DWORD GetModuleFileNameW(HMODULE hModule, LPWSTR lpFilename, DWORD nSize); -HANDLE GetStdHandle(DWORD nStdHandle); -BOOL SetStdHandle(DWORD nStdHandle, HANDLE hHandle); -HWND GetConsoleWindow(); -} - -struct MEMORYSTATUS { - DWORD dwLength; - DWORD dwMemoryLoad; - DWORD dwTotalPhys; - DWORD dwAvailPhys; - DWORD dwTotalPageFile; - DWORD dwAvailPageFile; - DWORD dwTotalVirtual; - DWORD dwAvailVirtual; -}; -alias MEMORYSTATUS *LPMEMORYSTATUS; - -@nogc -{ -HMODULE LoadLibraryA(LPCSTR lpLibFileName); -HMODULE LoadLibraryW(LPCWSTR lpLibFileName); -FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName); -DWORD GetVersion(); -BOOL FreeLibrary(HMODULE hLibModule); -void FreeLibraryAndExitThread(HMODULE hLibModule, DWORD dwExitCode); -BOOL DisableThreadLibraryCalls(HMODULE hLibModule); -} - -// -// Registry Specific Access Rights. -// - -enum -{ - KEY_QUERY_VALUE = 0x0001, - KEY_SET_VALUE = 0x0002, - KEY_CREATE_SUB_KEY = 0x0004, - KEY_ENUMERATE_SUB_KEYS = 0x0008, - KEY_NOTIFY = 0x0010, - KEY_CREATE_LINK = 0x0020, - - KEY_READ = cast(int)((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & ~SYNCHRONIZE), - KEY_WRITE = cast(int)((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & ~SYNCHRONIZE), - KEY_EXECUTE = cast(int)(KEY_READ & ~SYNCHRONIZE), - KEY_ALL_ACCESS = cast(int)((STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & ~SYNCHRONIZE), -} - -// -// Key creation/open disposition -// - -enum : int -{ - REG_CREATED_NEW_KEY = 0x00000001, // New Registry Key created - REG_OPENED_EXISTING_KEY = 0x00000002, // Existing Key opened -} - -// -// -// Predefined Value Types. -// -enum -{ - REG_NONE = 0, // No value type - REG_SZ = 1, // Unicode nul terminated string - REG_EXPAND_SZ = 2, // Unicode nul terminated string - // (with environment variable references) - REG_BINARY = 3, // Free form binary - REG_DWORD = 4, // 32-bit number - REG_DWORD_LITTLE_ENDIAN = 4, // 32-bit number (same as REG_DWORD) - REG_DWORD_BIG_ENDIAN = 5, // 32-bit number - REG_LINK = 6, // Symbolic Link (unicode) - REG_MULTI_SZ = 7, // Multiple Unicode strings - REG_RESOURCE_LIST = 8, // Resource list in the resource map - REG_FULL_RESOURCE_DESCRIPTOR = 9, // Resource list in the hardware description - REG_RESOURCE_REQUIREMENTS_LIST = 10, - REG_QWORD = 11, - REG_QWORD_LITTLE_ENDIAN = 11, -} - -/* - * MessageBox() Flags - */ -enum -{ - MB_OK = 0x00000000, - MB_OKCANCEL = 0x00000001, - MB_ABORTRETRYIGNORE = 0x00000002, - MB_YESNOCANCEL = 0x00000003, - MB_YESNO = 0x00000004, - MB_RETRYCANCEL = 0x00000005, - - - MB_ICONHAND = 0x00000010, - MB_ICONQUESTION = 0x00000020, - MB_ICONEXCLAMATION = 0x00000030, - MB_ICONASTERISK = 0x00000040, - - - MB_USERICON = 0x00000080, - MB_ICONWARNING = MB_ICONEXCLAMATION, - MB_ICONERROR = MB_ICONHAND, - - - MB_ICONINFORMATION = MB_ICONASTERISK, - MB_ICONSTOP = MB_ICONHAND, - - MB_DEFBUTTON1 = 0x00000000, - MB_DEFBUTTON2 = 0x00000100, - MB_DEFBUTTON3 = 0x00000200, - - MB_DEFBUTTON4 = 0x00000300, - - - MB_APPLMODAL = 0x00000000, - MB_SYSTEMMODAL = 0x00001000, - MB_TASKMODAL = 0x00002000, - - MB_HELP = 0x00004000, // Help Button - - - MB_NOFOCUS = 0x00008000, - MB_SETFOREGROUND = 0x00010000, - MB_DEFAULT_DESKTOP_ONLY = 0x00020000, - - - MB_TOPMOST = 0x00040000, - MB_RIGHT = 0x00080000, - MB_RTLREADING = 0x00100000, - - - MB_TYPEMASK = 0x0000000F, - MB_ICONMASK = 0x000000F0, - MB_DEFMASK = 0x00000F00, - MB_MODEMASK = 0x00003000, - MB_MISCMASK = 0x0000C000, -} - -@nogc -{ -int MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType); -int MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType); -int MessageBoxExA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType, WORD wLanguageId); -int MessageBoxExW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType, WORD wLanguageId); -} - -enum : HKEY -{ - HKEY_CLASSES_ROOT = cast(HKEY)(0x80000000), - HKEY_CURRENT_USER = cast(HKEY)(0x80000001), - HKEY_LOCAL_MACHINE = cast(HKEY)(0x80000002), - HKEY_USERS = cast(HKEY)(0x80000003), - HKEY_PERFORMANCE_DATA = cast(HKEY)(0x80000004), - HKEY_PERFORMANCE_TEXT = cast(HKEY)(0x80000050), - HKEY_PERFORMANCE_NLSTEXT = cast(HKEY)(0x80000060), - HKEY_CURRENT_CONFIG = cast(HKEY)(0x80000005), - HKEY_DYN_DATA = cast(HKEY)(0x80000006), -} - - -enum -{ - REG_OPTION_RESERVED = (0x00000000), // Parameter is reserved - - REG_OPTION_NON_VOLATILE = (0x00000000), // Key is preserved - // when system is rebooted - - REG_OPTION_VOLATILE = (0x00000001), // Key is not preserved - // when system is rebooted - - REG_OPTION_CREATE_LINK = (0x00000002), // Created key is a - // symbolic link - - REG_OPTION_BACKUP_RESTORE = (0x00000004), // open for backup or restore - // special access rules - // privilege required - - REG_OPTION_OPEN_LINK = (0x00000008), // Open symbolic link - - REG_LEGAL_OPTION = (REG_OPTION_RESERVED | REG_OPTION_NON_VOLATILE | REG_OPTION_VOLATILE | REG_OPTION_CREATE_LINK | REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK), -} - -@nogc -{ -export LONG RegDeleteKeyA(in HKEY hKey, LPCSTR lpSubKey); -export LONG RegDeleteKeyW(in HKEY hKey, LPCWSTR lpSubKey); -export LONG RegDeleteValueA(in HKEY hKey, LPCSTR lpValueName); -export LONG RegDeleteValueW(in HKEY hKey, LPCWSTR lpValueName); - -export LONG RegEnumKeyExA(in HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName, LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass, FILETIME* lpftLastWriteTime); -export LONG RegEnumKeyExW(in HKEY hKey, DWORD dwIndex, LPWSTR lpName, LPDWORD lpcbName, LPDWORD lpReserved, LPWSTR lpClass, LPDWORD lpcbClass, FILETIME* lpftLastWriteTime); -export LONG RegEnumValueA(in HKEY hKey, DWORD dwIndex, LPSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, - LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData); -export LONG RegEnumValueW(in HKEY hKey, DWORD dwIndex, LPWSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, - LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData); - -export LONG RegCloseKey(in HKEY hKey); -export LONG RegFlushKey(in HKEY hKey); - -export LONG RegOpenKeyA(in HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult); -export LONG RegOpenKeyW(in HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult); -export LONG RegOpenKeyExA(in HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult); -export LONG RegOpenKeyExW(in HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult); - -export LONG RegQueryInfoKeyA(in HKEY hKey, LPSTR lpClass, LPDWORD lpcbClass, - LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcbMaxSubKeyLen, LPDWORD lpcbMaxClassLen, - LPDWORD lpcValues, LPDWORD lpcbMaxValueNameLen, LPDWORD lpcbMaxValueLen, LPDWORD lpcbSecurityDescriptor, - PFILETIME lpftLastWriteTime); -export LONG RegQueryInfoKeyW(in HKEY hKey, LPWSTR lpClass, LPDWORD lpcbClass, - LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcbMaxSubKeyLen, LPDWORD lpcbMaxClassLen, - LPDWORD lpcValues, LPDWORD lpcbMaxValueNameLen, LPDWORD lpcbMaxValueLen, LPDWORD lpcbSecurityDescriptor, - PFILETIME lpftLastWriteTime); - -export LONG RegQueryValueA(in HKEY hKey, LPCSTR lpSubKey, LPSTR lpValue, LPLONG lpcbValue); -export LONG RegQueryValueW(in HKEY hKey, LPCWSTR lpSubKey, LPWSTR lpValue, LPLONG lpcbValue); -export LONG RegQueryValueExA(in HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPVOID lpData, LPDWORD lpcbData); -export LONG RegQueryValueExW(in HKEY hKey, LPCWSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPVOID lpData, LPDWORD lpcbData); - -export LONG RegCreateKeyExA(in HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, - DWORD dwOptions, REGSAM samDesired, SECURITY_ATTRIBUTES* lpSecurityAttributes, - PHKEY phkResult, LPDWORD lpdwDisposition); -export LONG RegCreateKeyExW(in HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, - DWORD dwOptions, REGSAM samDesired, SECURITY_ATTRIBUTES* lpSecurityAttributes, - PHKEY phkResult, LPDWORD lpdwDisposition); - -export LONG RegSetValueExA(in HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, BYTE* lpData, DWORD cbData); -export LONG RegSetValueExW(in HKEY hKey, LPCWSTR lpValueName, DWORD Reserved, DWORD dwType, BYTE* lpData, DWORD cbData); - -export LONG RegOpenCurrentUser(REGSAM samDesired, PHKEY phkResult); - -export LONG RegConnectRegistryA(LPCSTR lpMachineName, HKEY hKey, PHKEY phkResult); -export LONG RegConnectRegistryW(LPCWSTR lpMachineName, HKEY hKey, PHKEY phkResult); -} - -struct MEMORY_BASIC_INFORMATION { - PVOID BaseAddress; - PVOID AllocationBase; - DWORD AllocationProtect; - DWORD RegionSize; - DWORD State; - DWORD Protect; - DWORD Type; -} -alias MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION; - -enum -{ - SECTION_QUERY = 0x0001, - SECTION_MAP_WRITE = 0x0002, - SECTION_MAP_READ = 0x0004, - SECTION_MAP_EXECUTE = 0x0008, - SECTION_EXTEND_SIZE = 0x0010, - - SECTION_ALL_ACCESS = cast(int)(STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE), - PAGE_NOACCESS = 0x01, - PAGE_READONLY = 0x02, - PAGE_READWRITE = 0x04, - PAGE_WRITECOPY = 0x08, - PAGE_EXECUTE = 0x10, - PAGE_EXECUTE_READ = 0x20, - PAGE_EXECUTE_READWRITE = 0x40, - PAGE_EXECUTE_WRITECOPY = 0x80, - PAGE_GUARD = 0x100, - PAGE_NOCACHE = 0x200, - MEM_COMMIT = 0x1000, - MEM_RESERVE = 0x2000, - MEM_DECOMMIT = 0x4000, - MEM_RELEASE = 0x8000, - MEM_FREE = 0x10000, - MEM_PRIVATE = 0x20000, - MEM_MAPPED = 0x40000, - MEM_RESET = 0x80000, - MEM_TOP_DOWN = 0x100000, - SEC_FILE = 0x800000, - SEC_IMAGE = 0x1000000, - SEC_RESERVE = 0x4000000, - SEC_COMMIT = 0x8000000, - SEC_NOCACHE = 0x10000000, - MEM_IMAGE = SEC_IMAGE, -} - -enum -{ - FILE_MAP_COPY = SECTION_QUERY, - FILE_MAP_WRITE = SECTION_MAP_WRITE, - FILE_MAP_READ = SECTION_MAP_READ, - FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS, -} - - -// -// Define access rights to files and directories -// - -// -// The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in -// devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these -// constants *MUST* always be in sync. -// The values are redefined in devioctl.h because they must be available to -// both DOS and NT. -// - -enum -{ - FILE_READ_DATA = ( 0x0001 ), // file & pipe - FILE_LIST_DIRECTORY = ( 0x0001 ), // directory - - FILE_WRITE_DATA = ( 0x0002 ), // file & pipe - FILE_ADD_FILE = ( 0x0002 ), // directory - - FILE_APPEND_DATA = ( 0x0004 ), // file - FILE_ADD_SUBDIRECTORY = ( 0x0004 ), // directory - FILE_CREATE_PIPE_INSTANCE = ( 0x0004 ), // named pipe - - FILE_READ_EA = ( 0x0008 ), // file & directory - - FILE_WRITE_EA = ( 0x0010 ), // file & directory - - FILE_EXECUTE = ( 0x0020 ), // file - FILE_TRAVERSE = ( 0x0020 ), // directory - - FILE_DELETE_CHILD = ( 0x0040 ), // directory - - FILE_READ_ATTRIBUTES = ( 0x0080 ), // all - - FILE_WRITE_ATTRIBUTES = ( 0x0100 ), // all - - FILE_ALL_ACCESS = cast(int)(STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF), - - FILE_GENERIC_READ = cast(int)(STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE), - - FILE_GENERIC_WRITE = cast(int)(STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE), - - FILE_GENERIC_EXECUTE = cast(int)(STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE), -} - -export @nogc -{ - BOOL FreeResource(HGLOBAL hResData); - LPVOID LockResource(HGLOBAL hResData); - BOOL GlobalUnlock(HGLOBAL hMem); - HGLOBAL GlobalFree(HGLOBAL hMem); - UINT GlobalCompact(DWORD dwMinFree); - void GlobalFix(HGLOBAL hMem); - void GlobalUnfix(HGLOBAL hMem); - LPVOID GlobalWire(HGLOBAL hMem); - BOOL GlobalUnWire(HGLOBAL hMem); - void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer); - HLOCAL LocalAlloc(UINT uFlags, UINT uBytes); - HLOCAL LocalReAlloc(HLOCAL hMem, UINT uBytes, UINT uFlags); - LPVOID LocalLock(HLOCAL hMem); - HLOCAL LocalHandle(LPCVOID pMem); - BOOL LocalUnlock(HLOCAL hMem); - UINT LocalSize(HLOCAL hMem); - UINT LocalFlags(HLOCAL hMem); - HLOCAL LocalFree(HLOCAL hMem); - UINT LocalShrink(HLOCAL hMem, UINT cbNewSize); - UINT LocalCompact(UINT uMinFree); - BOOL FlushInstructionCache(HANDLE hProcess, LPCVOID lpBaseAddress, DWORD dwSize); - LPVOID VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); - BOOL VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType); - BOOL VirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); - SIZE_T VirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); - LPVOID VirtualAllocEx(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); - BOOL VirtualFreeEx(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType); - BOOL VirtualProtectEx(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); - SIZE_T VirtualQueryEx(HANDLE hProcess, LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); -} - -struct SYSTEMTIME -{ - WORD wYear; - WORD wMonth; - WORD wDayOfWeek; - WORD wDay; - WORD wHour; - WORD wMinute; - WORD wSecond; - WORD wMilliseconds; -} - -struct TIME_ZONE_INFORMATION { - LONG Bias; - WCHAR[32] StandardName; - SYSTEMTIME StandardDate; - LONG StandardBias; - WCHAR[32] DaylightName; - SYSTEMTIME DaylightDate; - LONG DaylightBias; -} - -struct REG_TZI_FORMAT -{ - LONG Bias; - LONG StandardBias; - LONG DaylightBias; - SYSTEMTIME StandardDate; - SYSTEMTIME DaylightDate; -} - -enum -{ - TIME_ZONE_ID_UNKNOWN = 0, - TIME_ZONE_ID_STANDARD = 1, - TIME_ZONE_ID_DAYLIGHT = 2, -} - -@nogc -{ -export void GetSystemTime(SYSTEMTIME* lpSystemTime); -export BOOL GetFileTime(HANDLE hFile, FILETIME *lpCreationTime, FILETIME *lpLastAccessTime, FILETIME *lpLastWriteTime); -export void GetSystemTimeAsFileTime(FILETIME* lpSystemTimeAsFileTime); -export BOOL SetSystemTime(SYSTEMTIME* lpSystemTime); -export BOOL SetFileTime(HANDLE hFile, in FILETIME *lpCreationTime, in FILETIME *lpLastAccessTime, in FILETIME *lpLastWriteTime); -export void GetLocalTime(SYSTEMTIME* lpSystemTime); -export BOOL SetLocalTime(SYSTEMTIME* lpSystemTime); -export BOOL SystemTimeToTzSpecificLocalTime(TIME_ZONE_INFORMATION* lpTimeZoneInformation, SYSTEMTIME* lpUniversalTime, SYSTEMTIME* lpLocalTime); -export BOOL TzSpecificLocalTimeToSystemTime(TIME_ZONE_INFORMATION* lpTimeZoneInformation, SYSTEMTIME* lpLocalTime, SYSTEMTIME* lpUniversalTime); -export DWORD GetTimeZoneInformation(TIME_ZONE_INFORMATION* lpTimeZoneInformation); -export BOOL SetTimeZoneInformation(TIME_ZONE_INFORMATION* lpTimeZoneInformation); - -export BOOL SystemTimeToFileTime(in SYSTEMTIME *lpSystemTime, FILETIME* lpFileTime); -export BOOL FileTimeToLocalFileTime(in FILETIME *lpFileTime, FILETIME* lpLocalFileTime); -export BOOL LocalFileTimeToFileTime(in FILETIME *lpLocalFileTime, FILETIME* lpFileTime); -export BOOL FileTimeToSystemTime(in FILETIME *lpFileTime, SYSTEMTIME* lpSystemTime); -export LONG CompareFileTime(in FILETIME *lpFileTime1, in FILETIME *lpFileTime2); -export BOOL FileTimeToDosDateTime(in FILETIME *lpFileTime, WORD* lpFatDate, WORD* lpFatTime); -export BOOL DosDateTimeToFileTime(WORD wFatDate, WORD wFatTime, FILETIME* lpFileTime); -export DWORD GetTickCount(); -export BOOL SetSystemTimeAdjustment(DWORD dwTimeAdjustment, BOOL bTimeAdjustmentDisabled); -export BOOL GetSystemTimeAdjustment(DWORD* lpTimeAdjustment, DWORD* lpTimeIncrement, BOOL* lpTimeAdjustmentDisabled); -export DWORD FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, void* *Arguments); -export DWORD FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, void* *Arguments); -} - -enum -{ - FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100, - FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200, - FORMAT_MESSAGE_FROM_STRING = 0x00000400, - FORMAT_MESSAGE_FROM_HMODULE = 0x00000800, - FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000, - FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000, - FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF, -}; - - -// -// Language IDs. -// -// The following two combinations of primary language ID and -// sublanguage ID have special semantics: -// -// Primary Language ID Sublanguage ID Result -// ------------------- --------------- ------------------------ -// LANG_NEUTRAL SUBLANG_NEUTRAL Language neutral -// LANG_NEUTRAL SUBLANG_DEFAULT User default language -// LANG_NEUTRAL SUBLANG_SYS_DEFAULT System default language -// - -// -// Primary language IDs. -// - -enum -{ - LANG_NEUTRAL = 0x00, - - LANG_AFRIKAANS = 0x36, - LANG_ALBANIAN = 0x1c, - LANG_ARABIC = 0x01, - LANG_BASQUE = 0x2d, - LANG_BELARUSIAN = 0x23, - LANG_BULGARIAN = 0x02, - LANG_CATALAN = 0x03, - LANG_CHINESE = 0x04, - LANG_CROATIAN = 0x1a, - LANG_CZECH = 0x05, - LANG_DANISH = 0x06, - LANG_DUTCH = 0x13, - LANG_ENGLISH = 0x09, - LANG_ESTONIAN = 0x25, - LANG_FAEROESE = 0x38, - LANG_FARSI = 0x29, - LANG_FINNISH = 0x0b, - LANG_FRENCH = 0x0c, - LANG_GERMAN = 0x07, - LANG_GREEK = 0x08, - LANG_HEBREW = 0x0d, - LANG_HUNGARIAN = 0x0e, - LANG_ICELANDIC = 0x0f, - LANG_INDONESIAN = 0x21, - LANG_ITALIAN = 0x10, - LANG_JAPANESE = 0x11, - LANG_KOREAN = 0x12, - LANG_LATVIAN = 0x26, - LANG_LITHUANIAN = 0x27, - LANG_NORWEGIAN = 0x14, - LANG_POLISH = 0x15, - LANG_PORTUGUESE = 0x16, - LANG_ROMANIAN = 0x18, - LANG_RUSSIAN = 0x19, - LANG_SERBIAN = 0x1a, - LANG_SLOVAK = 0x1b, - LANG_SLOVENIAN = 0x24, - LANG_SPANISH = 0x0a, - LANG_SWEDISH = 0x1d, - LANG_THAI = 0x1e, - LANG_TURKISH = 0x1f, - LANG_UKRAINIAN = 0x22, - LANG_VIETNAMESE = 0x2a, -} -// -// Sublanguage IDs. -// -// The name immediately following SUBLANG_ dictates which primary -// language ID that sublanguage ID can be combined with to form a -// valid language ID. -// -enum -{ - SUBLANG_NEUTRAL = 0x00, // language neutral - SUBLANG_DEFAULT = 0x01, // user default - SUBLANG_SYS_DEFAULT = 0x02, // system default - - SUBLANG_ARABIC_SAUDI_ARABIA = 0x01, // Arabic (Saudi Arabia) - SUBLANG_ARABIC_IRAQ = 0x02, // Arabic (Iraq) - SUBLANG_ARABIC_EGYPT = 0x03, // Arabic (Egypt) - SUBLANG_ARABIC_LIBYA = 0x04, // Arabic (Libya) - SUBLANG_ARABIC_ALGERIA = 0x05, // Arabic (Algeria) - SUBLANG_ARABIC_MOROCCO = 0x06, // Arabic (Morocco) - SUBLANG_ARABIC_TUNISIA = 0x07, // Arabic (Tunisia) - SUBLANG_ARABIC_OMAN = 0x08, // Arabic (Oman) - SUBLANG_ARABIC_YEMEN = 0x09, // Arabic (Yemen) - SUBLANG_ARABIC_SYRIA = 0x0a, // Arabic (Syria) - SUBLANG_ARABIC_JORDAN = 0x0b, // Arabic (Jordan) - SUBLANG_ARABIC_LEBANON = 0x0c, // Arabic (Lebanon) - SUBLANG_ARABIC_KUWAIT = 0x0d, // Arabic (Kuwait) - SUBLANG_ARABIC_UAE = 0x0e, // Arabic (U.A.E) - SUBLANG_ARABIC_BAHRAIN = 0x0f, // Arabic (Bahrain) - SUBLANG_ARABIC_QATAR = 0x10, // Arabic (Qatar) - SUBLANG_CHINESE_TRADITIONAL = 0x01, // Chinese (Taiwan) - SUBLANG_CHINESE_SIMPLIFIED = 0x02, // Chinese (PR China) - SUBLANG_CHINESE_HONGKONG = 0x03, // Chinese (Hong Kong) - SUBLANG_CHINESE_SINGAPORE = 0x04, // Chinese (Singapore) - SUBLANG_DUTCH = 0x01, // Dutch - SUBLANG_DUTCH_BELGIAN = 0x02, // Dutch (Belgian) - SUBLANG_ENGLISH_US = 0x01, // English (USA) - SUBLANG_ENGLISH_UK = 0x02, // English (UK) - SUBLANG_ENGLISH_AUS = 0x03, // English (Australian) - SUBLANG_ENGLISH_CAN = 0x04, // English (Canadian) - SUBLANG_ENGLISH_NZ = 0x05, // English (New Zealand) - SUBLANG_ENGLISH_EIRE = 0x06, // English (Irish) - SUBLANG_ENGLISH_SOUTH_AFRICA = 0x07, // English (South Africa) - SUBLANG_ENGLISH_JAMAICA = 0x08, // English (Jamaica) - SUBLANG_ENGLISH_CARIBBEAN = 0x09, // English (Caribbean) - SUBLANG_ENGLISH_BELIZE = 0x0a, // English (Belize) - SUBLANG_ENGLISH_TRINIDAD = 0x0b, // English (Trinidad) - SUBLANG_FRENCH = 0x01, // French - SUBLANG_FRENCH_BELGIAN = 0x02, // French (Belgian) - SUBLANG_FRENCH_CANADIAN = 0x03, // French (Canadian) - SUBLANG_FRENCH_SWISS = 0x04, // French (Swiss) - SUBLANG_FRENCH_LUXEMBOURG = 0x05, // French (Luxembourg) - SUBLANG_GERMAN = 0x01, // German - SUBLANG_GERMAN_SWISS = 0x02, // German (Swiss) - SUBLANG_GERMAN_AUSTRIAN = 0x03, // German (Austrian) - SUBLANG_GERMAN_LUXEMBOURG = 0x04, // German (Luxembourg) - SUBLANG_GERMAN_LIECHTENSTEIN = 0x05, // German (Liechtenstein) - SUBLANG_ITALIAN = 0x01, // Italian - SUBLANG_ITALIAN_SWISS = 0x02, // Italian (Swiss) - SUBLANG_KOREAN = 0x01, // Korean (Extended Wansung) - SUBLANG_KOREAN_JOHAB = 0x02, // Korean (Johab) - SUBLANG_NORWEGIAN_BOKMAL = 0x01, // Norwegian (Bokmal) - SUBLANG_NORWEGIAN_NYNORSK = 0x02, // Norwegian (Nynorsk) - SUBLANG_PORTUGUESE = 0x02, // Portuguese - SUBLANG_PORTUGUESE_BRAZILIAN = 0x01, // Portuguese (Brazilian) - SUBLANG_SERBIAN_LATIN = 0x02, // Serbian (Latin) - SUBLANG_SERBIAN_CYRILLIC = 0x03, // Serbian (Cyrillic) - SUBLANG_SPANISH = 0x01, // Spanish (Castilian) - SUBLANG_SPANISH_MEXICAN = 0x02, // Spanish (Mexican) - SUBLANG_SPANISH_MODERN = 0x03, // Spanish (Modern) - SUBLANG_SPANISH_GUATEMALA = 0x04, // Spanish (Guatemala) - SUBLANG_SPANISH_COSTA_RICA = 0x05, // Spanish (Costa Rica) - SUBLANG_SPANISH_PANAMA = 0x06, // Spanish (Panama) - SUBLANG_SPANISH_DOMINICAN_REPUBLIC = 0x07, // Spanish (Dominican Republic) - SUBLANG_SPANISH_VENEZUELA = 0x08, // Spanish (Venezuela) - SUBLANG_SPANISH_COLOMBIA = 0x09, // Spanish (Colombia) - SUBLANG_SPANISH_PERU = 0x0a, // Spanish (Peru) - SUBLANG_SPANISH_ARGENTINA = 0x0b, // Spanish (Argentina) - SUBLANG_SPANISH_ECUADOR = 0x0c, // Spanish (Ecuador) - SUBLANG_SPANISH_CHILE = 0x0d, // Spanish (Chile) - SUBLANG_SPANISH_URUGUAY = 0x0e, // Spanish (Uruguay) - SUBLANG_SPANISH_PARAGUAY = 0x0f, // Spanish (Paraguay) - SUBLANG_SPANISH_BOLIVIA = 0x10, // Spanish (Bolivia) - SUBLANG_SPANISH_EL_SALVADOR = 0x11, // Spanish (El Salvador) - SUBLANG_SPANISH_HONDURAS = 0x12, // Spanish (Honduras) - SUBLANG_SPANISH_NICARAGUA = 0x13, // Spanish (Nicaragua) - SUBLANG_SPANISH_PUERTO_RICO = 0x14, // Spanish (Puerto Rico) - SUBLANG_SWEDISH = 0x01, // Swedish - SUBLANG_SWEDISH_FINLAND = 0x02, // Swedish (Finland) -} -// -// Sorting IDs. -// - -enum -{ - SORT_DEFAULT = 0x0, // sorting default - - SORT_JAPANESE_XJIS = 0x0, // Japanese XJIS order - SORT_JAPANESE_UNICODE = 0x1, // Japanese Unicode order - - SORT_CHINESE_BIG5 = 0x0, // Chinese BIG5 order - SORT_CHINESE_PRCP = 0x0, // PRC Chinese Phonetic order - SORT_CHINESE_UNICODE = 0x1, // Chinese Unicode order - SORT_CHINESE_PRC = 0x2, // PRC Chinese Stroke Count order - - SORT_KOREAN_KSC = 0x0, // Korean KSC order - SORT_KOREAN_UNICODE = 0x1, // Korean Unicode order - - SORT_GERMAN_PHONE_BOOK = 0x1, // German Phone Book order -} - -// end_r_winnt - -// -// A language ID is a 16 bit value which is the combination of a -// primary language ID and a secondary language ID. The bits are -// allocated as follows: -// -// +-----------------------+-------------------------+ -// | Sublanguage ID | Primary Language ID | -// +-----------------------+-------------------------+ -// 15 10 9 0 bit -// -// -// Language ID creation/extraction macros: -// -// MAKELANGID - construct language id from a primary language id and -// a sublanguage id. -// PRIMARYLANGID - extract primary language id from a language id. -// SUBLANGID - extract sublanguage id from a language id. -// - -pure @nogc -{ -int MAKELANGID(int p, int s) { return ((cast(WORD)s) << 10) | cast(WORD)p; } -WORD PRIMARYLANGID(int lgid) { return cast(WORD)(lgid & 0x3ff); } -WORD SUBLANGID(int lgid) { return cast(WORD)(lgid >> 10); } -} - -version (Win64) -{ - enum - { - CONTEXT_AMD64 = 0x100000, - - - CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L), - CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L), - CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L), - CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L), - CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L), - - CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT), - - CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS), - - CONTEXT_EXCEPTION_ACTIVE = 0x8000000, - CONTEXT_SERVICE_ACTIVE = 0x10000000, - CONTEXT_EXCEPTION_REQUEST = 0x40000000, - CONTEXT_EXCEPTION_REPORTING = 0x80000000, - - - // Define initial MxCsr and FpCsr control. - - INITIAL_MXCSR = 0x1f80, // initial MXCSR value - INITIAL_FPCSR = 0x027f, // initial FPCSR value - } - - - // Copied from Public Domain w64 mingw-runtime package's winnt.h. - - align(16) struct M128A - { - ULONGLONG Low; - LONGLONG High; - } - alias M128A* PM128A; - - struct XMM_SAVE_AREA32 - { - WORD ControlWord; - WORD StatusWord; - BYTE TagWord; - BYTE Reserved1; - WORD ErrorOpcode; - DWORD ErrorOffset; - WORD ErrorSelector; - WORD Reserved2; - DWORD DataOffset; - WORD DataSelector; - WORD Reserved3; - DWORD MxCsr; - DWORD MxCsr_Mask; - M128A[8] FloatRegisters; - M128A[16] XmmRegisters; - BYTE[96] Reserved4; - } - alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32; - - align(16) struct CONTEXT // sizeof(1232) - { - DWORD64 P1Home; - DWORD64 P2Home; - DWORD64 P3Home; - DWORD64 P4Home; - DWORD64 P5Home; - DWORD64 P6Home; - DWORD ContextFlags; - DWORD MxCsr; - WORD SegCs; - WORD SegDs; - WORD SegEs; - WORD SegFs; - WORD SegGs; - WORD SegSs; - DWORD EFlags; - DWORD64 Dr0; - DWORD64 Dr1; - DWORD64 Dr2; - DWORD64 Dr3; - DWORD64 Dr6; - DWORD64 Dr7; - DWORD64 Rax; - DWORD64 Rcx; - DWORD64 Rdx; - DWORD64 Rbx; - DWORD64 Rsp; - DWORD64 Rbp; - DWORD64 Rsi; - DWORD64 Rdi; - DWORD64 R8; - DWORD64 R9; - DWORD64 R10; - DWORD64 R11; - DWORD64 R12; - DWORD64 R13; - DWORD64 R14; - DWORD64 R15; - DWORD64 Rip; - union - { - XMM_SAVE_AREA32 FltSave; - XMM_SAVE_AREA32 FloatSave; - struct - { - M128A[2] Header; - M128A[8] Legacy; - M128A Xmm0; - M128A Xmm1; - M128A Xmm2; - M128A Xmm3; - M128A Xmm4; - M128A Xmm5; - M128A Xmm6; - M128A Xmm7; - M128A Xmm8; - M128A Xmm9; - M128A Xmm10; - M128A Xmm11; - M128A Xmm12; - M128A Xmm13; - M128A Xmm14; - M128A Xmm15; - }; - }; - M128A[26] VectorRegister; - DWORD64 VectorControl; - DWORD64 DebugControl; - DWORD64 LastBranchToRip; - DWORD64 LastBranchFromRip; - DWORD64 LastExceptionToRip; - DWORD64 LastExceptionFromRip; - } -} -else version (Win32) -{ - enum - { - SIZE_OF_80387_REGISTERS = 80, - // - // The following flags control the contents of the CONTEXT structure. - // - CONTEXT_i386 = 0x00010000, // this assumes that i386 and - CONTEXT_i486 = 0x00010000, // i486 have identical context records - - CONTEXT_CONTROL = (CONTEXT_i386 | 0x00000001), // SS:SP, CS:IP, FLAGS, BP - CONTEXT_INTEGER = (CONTEXT_i386 | 0x00000002), // AX, BX, CX, DX, SI, DI - CONTEXT_SEGMENTS = (CONTEXT_i386 | 0x00000004), // DS, ES, FS, GS - CONTEXT_FLOATING_POINT = (CONTEXT_i386 | 0x00000008), // 387 state - CONTEXT_DEBUG_REGISTERS = (CONTEXT_i386 | 0x00000010), // DB 0-3,6,7 - CONTEXT_EXTENDED_REGISTERS = (CONTEXT_i386 | 0x00000020L), // cpu specific extensions - - CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS), - - CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | - CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | - CONTEXT_EXTENDED_REGISTERS), - - MAXIMUM_SUPPORTED_EXTENSION = 512 - } - - struct FLOATING_SAVE_AREA { - DWORD ControlWord; - DWORD StatusWord; - DWORD TagWord; - DWORD ErrorOffset; - DWORD ErrorSelector; - DWORD DataOffset; - DWORD DataSelector; - BYTE[SIZE_OF_80387_REGISTERS] RegisterArea; - DWORD Cr0NpxState; - } - - struct CONTEXT - { - // - // The flags values within this flag control the contents of - // a CONTEXT record. - // - // If the context record is used as an input parameter, then - // for each portion of the context record controlled by a flag - // whose value is set, it is assumed that that portion of the - // context record contains valid context. If the context record - // is being used to modify a threads context, then only that - // portion of the threads context will be modified. - // - // If the context record is used as an IN OUT parameter to capture - // the context of a thread, then only those portions of the thread's - // context corresponding to set flags will be returned. - // - // The context record is never used as an OUT only parameter. - // - - DWORD ContextFlags; - - // - // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is - // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT - // included in CONTEXT_FULL. - // - - DWORD Dr0; - DWORD Dr1; - DWORD Dr2; - DWORD Dr3; - DWORD Dr6; - DWORD Dr7; - - // - // This section is specified/returned if the - // ContextFlags word contians the flag CONTEXT_FLOATING_POINT. - // - - FLOATING_SAVE_AREA FloatSave; - - // - // This section is specified/returned if the - // ContextFlags word contians the flag CONTEXT_SEGMENTS. - // - - DWORD SegGs; - DWORD SegFs; - DWORD SegEs; - DWORD SegDs; - - // - // This section is specified/returned if the - // ContextFlags word contians the flag CONTEXT_INTEGER. - // - - DWORD Edi; - DWORD Esi; - DWORD Ebx; - DWORD Edx; - DWORD Ecx; - DWORD Eax; - - // - // This section is specified/returned if the - // ContextFlags word contians the flag CONTEXT_CONTROL. - // - - DWORD Ebp; - DWORD Eip; - DWORD SegCs; // MUST BE SANITIZED - DWORD EFlags; // MUST BE SANITIZED - DWORD Esp; - DWORD SegSs; - - // - // This section is specified/returned if the ContextFlags word - // contains the flag CONTEXT_EXTENDED_REGISTERS. - // The format and contexts are processor specific - // - - BYTE[MAXIMUM_SUPPORTED_EXTENSION] ExtendedRegisters; - } -} - -enum ADDRESS_MODE -{ - AddrMode1616, - AddrMode1632, - AddrModeReal, - AddrModeFlat -} - -struct ADDRESS -{ - DWORD Offset; - WORD Segment; - ADDRESS_MODE Mode; -} - -struct ADDRESS64 -{ - DWORD64 Offset; - WORD Segment; - ADDRESS_MODE Mode; -} - -struct KDHELP -{ - DWORD Thread; - DWORD ThCallbackStack; - DWORD NextCallback; - DWORD FramePointer; - DWORD KiCallUserMode; - DWORD KeUserCallbackDispatcher; - DWORD SystemRangeStart; - DWORD ThCallbackBStore; - DWORD KiUserExceptionDispatcher; - DWORD StackBase; - DWORD StackLimit; - DWORD[5] Reserved; -} - -struct KDHELP64 -{ - DWORD64 Thread; - DWORD ThCallbackStack; - DWORD ThCallbackBStore; - DWORD NextCallback; - DWORD FramePointer; - DWORD64 KiCallUserMode; - DWORD64 KeUserCallbackDispatcher; - DWORD64 SystemRangeStart; - DWORD64 KiUserExceptionDispatcher; - DWORD64 StackBase; - DWORD64 StackLimit; - DWORD64[5] Reserved; -} - -struct STACKFRAME -{ - ADDRESS AddrPC; - ADDRESS AddrReturn; - ADDRESS AddrFrame; - ADDRESS AddrStack; - PVOID FuncTableEntry; - DWORD[4] Params; - BOOL Far; - BOOL Virtual; - DWORD[3] Reserved; - KDHELP KdHelp; - ADDRESS AddrBStore; -} - -struct STACKFRAME64 -{ - ADDRESS64 AddrPC; - ADDRESS64 AddrReturn; - ADDRESS64 AddrFrame; - ADDRESS64 AddrStack; - ADDRESS64 AddrBStore; - PVOID FuncTableEntry; - DWORD64[4] Params; - BOOL Far; - BOOL Virtual; - DWORD64[3] Reserved; - KDHELP64 KdHelp; -} - -enum -{ - THREAD_BASE_PRIORITY_LOWRT = 15, // value that gets a thread to LowRealtime-1 - THREAD_BASE_PRIORITY_MAX = 2, // maximum thread base priority boost - THREAD_BASE_PRIORITY_MIN = -2, // minimum thread base priority boost - THREAD_BASE_PRIORITY_IDLE = -15, // value that gets a thread to idle - - THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN, - THREAD_PRIORITY_BELOW_NORMAL = (THREAD_PRIORITY_LOWEST+1), - THREAD_PRIORITY_NORMAL = 0, - THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX, - THREAD_PRIORITY_ABOVE_NORMAL = (THREAD_PRIORITY_HIGHEST-1), - THREAD_PRIORITY_ERROR_RETURN = int.max, - - THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT, - THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE, -} - -struct SYSTEM_INFO -{ - union - { - DWORD dwOemId; - - struct - { - WORD wProcessorArchitecture; - WORD wReserved; - } - } - - DWORD dwPageSize; - LPVOID lpMinimumApplicationAddress; - LPVOID lpMaximumApplicationAddress; - DWORD_PTR dwActiveProcessorMask; - DWORD dwNumberOfProcessors; - DWORD dwProcessorType; - DWORD dwAllocationGranularity; - WORD wProcessorLevel; - WORD wProcessorRevision; -} - -alias SYSTEM_INFO* LPSYSTEM_INFO; - -@nogc -{ -export void GetSystemInfo(LPSYSTEM_INFO lpSystemInfo); -export void GetNativeSystemInfo(LPSYSTEM_INFO lpSystemInfo); -} - -enum : DWORD -{ - MAX_COMPUTERNAME_LENGTH = 15, -} - -@nogc -{ -export BOOL GetComputerNameA(LPSTR lpBuffer, LPDWORD nSize); -export BOOL GetComputerNameW(LPWSTR lpBuffer, LPDWORD nSize); -export BOOL SetComputerNameA(LPCSTR lpComputerName); -export BOOL SetComputerNameW(LPCWSTR lpComputerName); -export BOOL GetUserNameA(LPSTR lpBuffer, LPDWORD lpnSize); -export BOOL GetUserNameW(LPWSTR lpBuffer, LPDWORD lpnSize); -export HANDLE GetCurrentThread(); -export BOOL GetProcessTimes(HANDLE hProcess, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime); -export HANDLE GetCurrentProcess(); -export DWORD GetCurrentProcessId(); -export BOOL DuplicateHandle (HANDLE sourceProcess, HANDLE sourceThread, - HANDLE targetProcessHandle, HANDLE *targetHandle, DWORD access, - BOOL inheritHandle, DWORD options); -export DWORD GetCurrentThreadId(); -export BOOL SetThreadPriority(HANDLE hThread, int nPriority); -export BOOL SetThreadPriorityBoost(HANDLE hThread, BOOL bDisablePriorityBoost); -export BOOL GetThreadPriorityBoost(HANDLE hThread, PBOOL pDisablePriorityBoost); -export BOOL GetThreadTimes(HANDLE hThread, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime); -export int GetThreadPriority(HANDLE hThread); -export BOOL GetThreadContext(HANDLE hThread, CONTEXT* lpContext); -export BOOL SetThreadContext(HANDLE hThread, CONTEXT* lpContext); -export DWORD SuspendThread(HANDLE hThread); -export DWORD ResumeThread(HANDLE hThread); -export DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); -export DWORD WaitForMultipleObjects(DWORD nCount, HANDLE *lpHandles, BOOL bWaitAll, DWORD dwMilliseconds); -export void Sleep(DWORD dwMilliseconds); -export BOOL SwitchToThread(); -} - -// Synchronization - -export @nogc -{ -LONG InterlockedIncrement(LPLONG lpAddend); -LONG InterlockedDecrement(LPLONG lpAddend); -LONG InterlockedExchange(LPLONG Target, LONG Value); -LONG InterlockedExchangeAdd(LPLONG Addend, LONG Value); -LONG InterlockedCompareExchange(LONG *Destination, LONG Exchange, LONG Comperand); - -void InitializeCriticalSection(CRITICAL_SECTION * lpCriticalSection) @trusted; -void EnterCriticalSection(CRITICAL_SECTION * lpCriticalSection) @nogc; -BOOL TryEnterCriticalSection(CRITICAL_SECTION * lpCriticalSection); -void LeaveCriticalSection(CRITICAL_SECTION * lpCriticalSection) @nogc; -void DeleteCriticalSection(CRITICAL_SECTION * lpCriticalSection); -} - - - -@nogc -{ -export BOOL QueryPerformanceCounter(long* lpPerformanceCount); -export BOOL QueryPerformanceFrequency(long* lpFrequency); -} - -enum -{ - WM_NOTIFY = 0x004E, - WM_INPUTLANGCHANGEREQUEST = 0x0050, - WM_INPUTLANGCHANGE = 0x0051, - WM_TCARD = 0x0052, - WM_HELP = 0x0053, - WM_USERCHANGED = 0x0054, - WM_NOTIFYFORMAT = 0x0055, - - NFR_ANSI = 1, - NFR_UNICODE = 2, - NF_QUERY = 3, - NF_REQUERY = 4, - - WM_CONTEXTMENU = 0x007B, - WM_STYLECHANGING = 0x007C, - WM_STYLECHANGED = 0x007D, - WM_DISPLAYCHANGE = 0x007E, - WM_GETICON = 0x007F, - WM_SETICON = 0x0080, - - - - WM_NCCREATE = 0x0081, - WM_NCDESTROY = 0x0082, - WM_NCCALCSIZE = 0x0083, - WM_NCHITTEST = 0x0084, - WM_NCPAINT = 0x0085, - WM_NCACTIVATE = 0x0086, - WM_GETDLGCODE = 0x0087, - - WM_NCMOUSEMOVE = 0x00A0, - WM_NCLBUTTONDOWN = 0x00A1, - WM_NCLBUTTONUP = 0x00A2, - WM_NCLBUTTONDBLCLK = 0x00A3, - WM_NCRBUTTONDOWN = 0x00A4, - WM_NCRBUTTONUP = 0x00A5, - WM_NCRBUTTONDBLCLK = 0x00A6, - WM_NCMBUTTONDOWN = 0x00A7, - WM_NCMBUTTONUP = 0x00A8, - WM_NCMBUTTONDBLCLK = 0x00A9, - - WM_KEYFIRST = 0x0100, - WM_KEYDOWN = 0x0100, - WM_KEYUP = 0x0101, - WM_CHAR = 0x0102, - WM_DEADCHAR = 0x0103, - WM_SYSKEYDOWN = 0x0104, - WM_SYSKEYUP = 0x0105, - WM_SYSCHAR = 0x0106, - WM_SYSDEADCHAR = 0x0107, - WM_KEYLAST = 0x0108, - - - WM_IME_STARTCOMPOSITION = 0x010D, - WM_IME_ENDCOMPOSITION = 0x010E, - WM_IME_COMPOSITION = 0x010F, - WM_IME_KEYLAST = 0x010F, - - - WM_INITDIALOG = 0x0110, - WM_COMMAND = 0x0111, - WM_SYSCOMMAND = 0x0112, - WM_TIMER = 0x0113, - WM_HSCROLL = 0x0114, - WM_VSCROLL = 0x0115, - WM_INITMENU = 0x0116, - WM_INITMENUPOPUP = 0x0117, - WM_MENUSELECT = 0x011F, - WM_MENUCHAR = 0x0120, - WM_ENTERIDLE = 0x0121, - - WM_CTLCOLORMSGBOX = 0x0132, - WM_CTLCOLOREDIT = 0x0133, - WM_CTLCOLORLISTBOX = 0x0134, - WM_CTLCOLORBTN = 0x0135, - WM_CTLCOLORDLG = 0x0136, - WM_CTLCOLORSCROLLBAR = 0x0137, - WM_CTLCOLORSTATIC = 0x0138, - - - - WM_MOUSEFIRST = 0x0200, - WM_MOUSEMOVE = 0x0200, - WM_LBUTTONDOWN = 0x0201, - WM_LBUTTONUP = 0x0202, - WM_LBUTTONDBLCLK = 0x0203, - WM_RBUTTONDOWN = 0x0204, - WM_RBUTTONUP = 0x0205, - WM_RBUTTONDBLCLK = 0x0206, - WM_MBUTTONDOWN = 0x0207, - WM_MBUTTONUP = 0x0208, - WM_MBUTTONDBLCLK = 0x0209, - - - - WM_MOUSELAST = 0x0209, - - - - - - - - - WM_PARENTNOTIFY = 0x0210, - MENULOOP_WINDOW = 0, - MENULOOP_POPUP = 1, - WM_ENTERMENULOOP = 0x0211, - WM_EXITMENULOOP = 0x0212, - - - WM_NEXTMENU = 0x0213, -} - -enum -{ -/* - * Dialog Box Command IDs - */ - IDOK = 1, - IDCANCEL = 2, - IDABORT = 3, - IDRETRY = 4, - IDIGNORE = 5, - IDYES = 6, - IDNO = 7, - - IDCLOSE = 8, - IDHELP = 9, - - -// end_r_winuser - - - -/* - * Control Manager Structures and Definitions - */ - - - -// begin_r_winuser - -/* - * Edit Control Styles - */ - ES_LEFT = 0x0000, - ES_CENTER = 0x0001, - ES_RIGHT = 0x0002, - ES_MULTILINE = 0x0004, - ES_UPPERCASE = 0x0008, - ES_LOWERCASE = 0x0010, - ES_PASSWORD = 0x0020, - ES_AUTOVSCROLL = 0x0040, - ES_AUTOHSCROLL = 0x0080, - ES_NOHIDESEL = 0x0100, - ES_OEMCONVERT = 0x0400, - ES_READONLY = 0x0800, - ES_WANTRETURN = 0x1000, - - ES_NUMBER = 0x2000, - - -// end_r_winuser - - - -/* - * Edit Control Notification Codes - */ - EN_SETFOCUS = 0x0100, - EN_KILLFOCUS = 0x0200, - EN_CHANGE = 0x0300, - EN_UPDATE = 0x0400, - EN_ERRSPACE = 0x0500, - EN_MAXTEXT = 0x0501, - EN_HSCROLL = 0x0601, - EN_VSCROLL = 0x0602, - - -/* Edit control EM_SETMARGIN parameters */ - EC_LEFTMARGIN = 0x0001, - EC_RIGHTMARGIN = 0x0002, - EC_USEFONTINFO = 0xffff, - - - - -// begin_r_winuser - -/* - * Edit Control Messages - */ - EM_GETSEL = 0x00B0, - EM_SETSEL = 0x00B1, - EM_GETRECT = 0x00B2, - EM_SETRECT = 0x00B3, - EM_SETRECTNP = 0x00B4, - EM_SCROLL = 0x00B5, - EM_LINESCROLL = 0x00B6, - EM_SCROLLCARET = 0x00B7, - EM_GETMODIFY = 0x00B8, - EM_SETMODIFY = 0x00B9, - EM_GETLINECOUNT = 0x00BA, - EM_LINEINDEX = 0x00BB, - EM_SETHANDLE = 0x00BC, - EM_GETHANDLE = 0x00BD, - EM_GETTHUMB = 0x00BE, - EM_LINELENGTH = 0x00C1, - EM_REPLACESEL = 0x00C2, - EM_GETLINE = 0x00C4, - EM_LIMITTEXT = 0x00C5, - EM_CANUNDO = 0x00C6, - EM_UNDO = 0x00C7, - EM_FMTLINES = 0x00C8, - EM_LINEFROMCHAR = 0x00C9, - EM_SETTABSTOPS = 0x00CB, - EM_SETPASSWORDCHAR = 0x00CC, - EM_EMPTYUNDOBUFFER = 0x00CD, - EM_GETFIRSTVISIBLELINE = 0x00CE, - EM_SETREADONLY = 0x00CF, - EM_SETWORDBREAKPROC = 0x00D0, - EM_GETWORDBREAKPROC = 0x00D1, - EM_GETPASSWORDCHAR = 0x00D2, - - EM_SETMARGINS = 0x00D3, - EM_GETMARGINS = 0x00D4, - EM_SETLIMITTEXT = EM_LIMITTEXT, /* ;win40 Name change */ - EM_GETLIMITTEXT = 0x00D5, - EM_POSFROMCHAR = 0x00D6, - EM_CHARFROMPOS = 0x00D7, - - - -// end_r_winuser - - -/* - * EDITWORDBREAKPROC code values - */ - WB_LEFT = 0, - WB_RIGHT = 1, - WB_ISDELIMITER = 2, - -// begin_r_winuser - -/* - * Button Control Styles - */ - BS_PUSHBUTTON = 0x00000000, - BS_DEFPUSHBUTTON = 0x00000001, - BS_CHECKBOX = 0x00000002, - BS_AUTOCHECKBOX = 0x00000003, - BS_RADIOBUTTON = 0x00000004, - BS_3STATE = 0x00000005, - BS_AUTO3STATE = 0x00000006, - BS_GROUPBOX = 0x00000007, - BS_USERBUTTON = 0x00000008, - BS_AUTORADIOBUTTON = 0x00000009, - BS_OWNERDRAW = 0x0000000B, - BS_LEFTTEXT = 0x00000020, - - BS_TEXT = 0x00000000, - BS_ICON = 0x00000040, - BS_BITMAP = 0x00000080, - BS_LEFT = 0x00000100, - BS_RIGHT = 0x00000200, - BS_CENTER = 0x00000300, - BS_TOP = 0x00000400, - BS_BOTTOM = 0x00000800, - BS_VCENTER = 0x00000C00, - BS_PUSHLIKE = 0x00001000, - BS_MULTILINE = 0x00002000, - BS_NOTIFY = 0x00004000, - BS_FLAT = 0x00008000, - BS_RIGHTBUTTON = BS_LEFTTEXT, - - - -/* - * User Button Notification Codes - */ - BN_CLICKED = 0, - BN_PAINT = 1, - BN_HILITE = 2, - BN_UNHILITE = 3, - BN_DISABLE = 4, - BN_DOUBLECLICKED = 5, - - BN_PUSHED = BN_HILITE, - BN_UNPUSHED = BN_UNHILITE, - BN_DBLCLK = BN_DOUBLECLICKED, - BN_SETFOCUS = 6, - BN_KILLFOCUS = 7, - -/* - * Button Control Messages - */ - BM_GETCHECK = 0x00F0, - BM_SETCHECK = 0x00F1, - BM_GETSTATE = 0x00F2, - BM_SETSTATE = 0x00F3, - BM_SETSTYLE = 0x00F4, - - BM_CLICK = 0x00F5, - BM_GETIMAGE = 0x00F6, - BM_SETIMAGE = 0x00F7, - - BST_UNCHECKED = 0x0000, - BST_CHECKED = 0x0001, - BST_INDETERMINATE = 0x0002, - BST_PUSHED = 0x0004, - BST_FOCUS = 0x0008, - - -/* - * Static Control Constants - */ - SS_LEFT = 0x00000000, - SS_CENTER = 0x00000001, - SS_RIGHT = 0x00000002, - SS_ICON = 0x00000003, - SS_BLACKRECT = 0x00000004, - SS_GRAYRECT = 0x00000005, - SS_WHITERECT = 0x00000006, - SS_BLACKFRAME = 0x00000007, - SS_GRAYFRAME = 0x00000008, - SS_WHITEFRAME = 0x00000009, - SS_USERITEM = 0x0000000A, - SS_SIMPLE = 0x0000000B, - SS_LEFTNOWORDWRAP = 0x0000000C, - - SS_OWNERDRAW = 0x0000000D, - SS_BITMAP = 0x0000000E, - SS_ENHMETAFILE = 0x0000000F, - SS_ETCHEDHORZ = 0x00000010, - SS_ETCHEDVERT = 0x00000011, - SS_ETCHEDFRAME = 0x00000012, - SS_TYPEMASK = 0x0000001F, - - SS_NOPREFIX = 0x00000080, /* Don't do "&" character translation */ - - SS_NOTIFY = 0x00000100, - SS_CENTERIMAGE = 0x00000200, - SS_RIGHTJUST = 0x00000400, - SS_REALSIZEIMAGE = 0x00000800, - SS_SUNKEN = 0x00001000, - SS_ENDELLIPSIS = 0x00004000, - SS_PATHELLIPSIS = 0x00008000, - SS_WORDELLIPSIS = 0x0000C000, - SS_ELLIPSISMASK = 0x0000C000, - - -// end_r_winuser - - -/* - * Static Control Mesages - */ - STM_SETICON = 0x0170, - STM_GETICON = 0x0171, - - STM_SETIMAGE = 0x0172, - STM_GETIMAGE = 0x0173, - STN_CLICKED = 0, - STN_DBLCLK = 1, - STN_ENABLE = 2, - STN_DISABLE = 3, - - STM_MSGMAX = 0x0174, -} - - -enum -{ -/* - * Window Messages - */ - - WM_NULL = 0x0000, - WM_CREATE = 0x0001, - WM_DESTROY = 0x0002, - WM_MOVE = 0x0003, - WM_SIZE = 0x0005, - - WM_ACTIVATE = 0x0006, -/* - * WM_ACTIVATE state values - */ - WA_INACTIVE = 0, - WA_ACTIVE = 1, - WA_CLICKACTIVE = 2, - - WM_SETFOCUS = 0x0007, - WM_KILLFOCUS = 0x0008, - WM_ENABLE = 0x000A, - WM_SETREDRAW = 0x000B, - WM_SETTEXT = 0x000C, - WM_GETTEXT = 0x000D, - WM_GETTEXTLENGTH = 0x000E, - WM_PAINT = 0x000F, - WM_CLOSE = 0x0010, - WM_QUERYENDSESSION = 0x0011, - WM_QUIT = 0x0012, - WM_QUERYOPEN = 0x0013, - WM_ERASEBKGND = 0x0014, - WM_SYSCOLORCHANGE = 0x0015, - WM_ENDSESSION = 0x0016, - WM_SHOWWINDOW = 0x0018, - WM_WININICHANGE = 0x001A, - - WM_SETTINGCHANGE = WM_WININICHANGE, - - - - WM_DEVMODECHANGE = 0x001B, - WM_ACTIVATEAPP = 0x001C, - WM_FONTCHANGE = 0x001D, - WM_TIMECHANGE = 0x001E, - WM_CANCELMODE = 0x001F, - WM_SETCURSOR = 0x0020, - WM_MOUSEACTIVATE = 0x0021, - WM_CHILDACTIVATE = 0x0022, - WM_QUEUESYNC = 0x0023, - - WM_GETMINMAXINFO = 0x0024, -} - -struct RECT -{ - LONG left; - LONG top; - LONG right; - LONG bottom; -} -alias RECT* PRECT, NPRECT, LPRECT; - -struct PAINTSTRUCT { - HDC hdc; - BOOL fErase; - RECT rcPaint; - BOOL fRestore; - BOOL fIncUpdate; - BYTE[32] rgbReserved; -} -alias PAINTSTRUCT* PPAINTSTRUCT, NPPAINTSTRUCT, LPPAINTSTRUCT; - -// flags for GetDCEx() - -enum -{ - DCX_WINDOW = 0x00000001, - DCX_CACHE = 0x00000002, - DCX_NORESETATTRS = 0x00000004, - DCX_CLIPCHILDREN = 0x00000008, - DCX_CLIPSIBLINGS = 0x00000010, - DCX_PARENTCLIP = 0x00000020, - DCX_EXCLUDERGN = 0x00000040, - DCX_INTERSECTRGN = 0x00000080, - DCX_EXCLUDEUPDATE = 0x00000100, - DCX_INTERSECTUPDATE = 0x00000200, - DCX_LOCKWINDOWUPDATE = 0x00000400, - DCX_VALIDATE = 0x00200000, -} - -export @nogc -{ - BOOL UpdateWindow(HWND hWnd); - HWND SetActiveWindow(HWND hWnd); - HWND GetForegroundWindow(); - BOOL PaintDesktop(HDC hdc); - BOOL SetForegroundWindow(HWND hWnd); - HWND WindowFromDC(HDC hDC); - HDC GetDC(HWND hWnd); - HDC GetDCEx(HWND hWnd, HRGN hrgnClip, DWORD flags); - HDC GetWindowDC(HWND hWnd); - int ReleaseDC(HWND hWnd, HDC hDC); - HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint); - BOOL EndPaint(HWND hWnd, PAINTSTRUCT *lpPaint); - BOOL GetUpdateRect(HWND hWnd, LPRECT lpRect, BOOL bErase); - int GetUpdateRgn(HWND hWnd, HRGN hRgn, BOOL bErase); - int SetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw); - int GetWindowRgn(HWND hWnd, HRGN hRgn); - int ExcludeUpdateRgn(HDC hDC, HWND hWnd); - BOOL InvalidateRect(HWND hWnd, RECT *lpRect, BOOL bErase); - BOOL ValidateRect(HWND hWnd, RECT *lpRect); - BOOL InvalidateRgn(HWND hWnd, HRGN hRgn, BOOL bErase); - BOOL ValidateRgn(HWND hWnd, HRGN hRgn); - BOOL RedrawWindow(HWND hWnd, RECT *lprcUpdate, HRGN hrgnUpdate, UINT flags); -} - -// flags for RedrawWindow() -enum -{ - RDW_INVALIDATE = 0x0001, - RDW_INTERNALPAINT = 0x0002, - RDW_ERASE = 0x0004, - RDW_VALIDATE = 0x0008, - RDW_NOINTERNALPAINT = 0x0010, - RDW_NOERASE = 0x0020, - RDW_NOCHILDREN = 0x0040, - RDW_ALLCHILDREN = 0x0080, - RDW_UPDATENOW = 0x0100, - RDW_ERASENOW = 0x0200, - RDW_FRAME = 0x0400, - RDW_NOFRAME = 0x0800, -} - -export @nogc -{ - BOOL GetClientRect(HWND hWnd, LPRECT lpRect); - BOOL GetWindowRect(HWND hWnd, LPRECT lpRect); - BOOL AdjustWindowRect(LPRECT lpRect, DWORD dwStyle, BOOL bMenu); - BOOL AdjustWindowRectEx(LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle); - HFONT CreateFontA(int, int, int, int, int, DWORD, - DWORD, DWORD, DWORD, DWORD, DWORD, - DWORD, DWORD, LPCSTR); - HFONT CreateFontW(int, int, int, int, int, DWORD, - DWORD, DWORD, DWORD, DWORD, DWORD, - DWORD, DWORD, LPCWSTR); -} - -enum -{ - OUT_DEFAULT_PRECIS = 0, - OUT_STRING_PRECIS = 1, - OUT_CHARACTER_PRECIS = 2, - OUT_STROKE_PRECIS = 3, - OUT_TT_PRECIS = 4, - OUT_DEVICE_PRECIS = 5, - OUT_RASTER_PRECIS = 6, - OUT_TT_ONLY_PRECIS = 7, - OUT_OUTLINE_PRECIS = 8, - OUT_SCREEN_OUTLINE_PRECIS = 9, - - CLIP_DEFAULT_PRECIS = 0, - CLIP_CHARACTER_PRECIS = 1, - CLIP_STROKE_PRECIS = 2, - CLIP_MASK = 0xf, - CLIP_LH_ANGLES = (1<<4), - CLIP_TT_ALWAYS = (2<<4), - CLIP_EMBEDDED = (8<<4), - - DEFAULT_QUALITY = 0, - DRAFT_QUALITY = 1, - PROOF_QUALITY = 2, - - NONANTIALIASED_QUALITY = 3, - ANTIALIASED_QUALITY = 4, - - - DEFAULT_PITCH = 0, - FIXED_PITCH = 1, - VARIABLE_PITCH = 2, - - MONO_FONT = 8, - - - ANSI_CHARSET = 0, - DEFAULT_CHARSET = 1, - SYMBOL_CHARSET = 2, - SHIFTJIS_CHARSET = 128, - HANGEUL_CHARSET = 129, - GB2312_CHARSET = 134, - CHINESEBIG5_CHARSET = 136, - OEM_CHARSET = 255, - - JOHAB_CHARSET = 130, - HEBREW_CHARSET = 177, - ARABIC_CHARSET = 178, - GREEK_CHARSET = 161, - TURKISH_CHARSET = 162, - VIETNAMESE_CHARSET = 163, - THAI_CHARSET = 222, - EASTEUROPE_CHARSET = 238, - RUSSIAN_CHARSET = 204, - - MAC_CHARSET = 77, - BALTIC_CHARSET = 186, - - FS_LATIN1 = 0x00000001L, - FS_LATIN2 = 0x00000002L, - FS_CYRILLIC = 0x00000004L, - FS_GREEK = 0x00000008L, - FS_TURKISH = 0x00000010L, - FS_HEBREW = 0x00000020L, - FS_ARABIC = 0x00000040L, - FS_BALTIC = 0x00000080L, - FS_VIETNAMESE = 0x00000100L, - FS_THAI = 0x00010000L, - FS_JISJAPAN = 0x00020000L, - FS_CHINESESIMP = 0x00040000L, - FS_WANSUNG = 0x00080000L, - FS_CHINESETRAD = 0x00100000L, - FS_JOHAB = 0x00200000L, - FS_SYMBOL = cast(int)0x80000000L, - - -/* Font Families */ - FF_DONTCARE = (0<<4), /* Don't care or don't know. */ - FF_ROMAN = (1<<4), /* Variable stroke width, serifed. */ - /* Times Roman, Century Schoolbook, etc. */ - FF_SWISS = (2<<4), /* Variable stroke width, sans-serifed. */ - /* Helvetica, Swiss, etc. */ - FF_MODERN = (3<<4), /* Constant stroke width, serifed or sans-serifed. */ - /* Pica, Elite, Courier, etc. */ - FF_SCRIPT = (4<<4), /* Cursive, etc. */ - FF_DECORATIVE = (5<<4), /* Old English, etc. */ - -/* Font Weights */ - FW_DONTCARE = 0, - FW_THIN = 100, - FW_EXTRALIGHT = 200, - FW_LIGHT = 300, - FW_NORMAL = 400, - FW_MEDIUM = 500, - FW_SEMIBOLD = 600, - FW_BOLD = 700, - FW_EXTRABOLD = 800, - FW_HEAVY = 900, - - FW_ULTRALIGHT = FW_EXTRALIGHT, - FW_REGULAR = FW_NORMAL, - FW_DEMIBOLD = FW_SEMIBOLD, - FW_ULTRABOLD = FW_EXTRABOLD, - FW_BLACK = FW_HEAVY, - - PANOSE_COUNT = 10, - PAN_FAMILYTYPE_INDEX = 0, - PAN_SERIFSTYLE_INDEX = 1, - PAN_WEIGHT_INDEX = 2, - PAN_PROPORTION_INDEX = 3, - PAN_CONTRAST_INDEX = 4, - PAN_STROKEVARIATION_INDEX = 5, - PAN_ARMSTYLE_INDEX = 6, - PAN_LETTERFORM_INDEX = 7, - PAN_MIDLINE_INDEX = 8, - PAN_XHEIGHT_INDEX = 9, - - PAN_CULTURE_LATIN = 0, -} - -struct RGBQUAD { - BYTE rgbBlue; - BYTE rgbGreen; - BYTE rgbRed; - BYTE rgbReserved; -} -alias RGBQUAD* LPRGBQUAD; - -struct BITMAPINFOHEADER -{ - DWORD biSize; - LONG biWidth; - LONG biHeight; - WORD biPlanes; - WORD biBitCount; - DWORD biCompression; - DWORD biSizeImage; - LONG biXPelsPerMeter; - LONG biYPelsPerMeter; - DWORD biClrUsed; - DWORD biClrImportant; -} -alias BITMAPINFOHEADER* LPBITMAPINFOHEADER, PBITMAPINFOHEADER; - -struct BITMAPINFO { - BITMAPINFOHEADER bmiHeader; - RGBQUAD[1] bmiColors; -} -alias BITMAPINFO* LPBITMAPINFO, PBITMAPINFO; - -struct PALETTEENTRY { - BYTE peRed; - BYTE peGreen; - BYTE peBlue; - BYTE peFlags; -} -alias PALETTEENTRY* PPALETTEENTRY, LPPALETTEENTRY; - -struct LOGPALETTE { - WORD palVersion; - WORD palNumEntries; - PALETTEENTRY[1] palPalEntry; -} -alias LOGPALETTE* PLOGPALETTE, NPLOGPALETTE, LPLOGPALETTE; - -/* Pixel format descriptor flags */ -enum : DWORD -{ - /* pixel types */ - PFD_TYPE_RGBA = 0, - PFD_TYPE_COLORINDEX = 1, - - /* layer types */ - PFD_MAIN_PLANE = 0, - PFD_OVERLAY_PLANE = 1, - PFD_UNDERLAY_PLANE = -1, - - /* PIXELFORMATDESCRIPTOR flags */ - PFD_DOUBLEBUFFER = 0x00000001, - PFD_STEREO = 0x00000002, - PFD_DRAW_TO_WINDOW = 0x00000004, - PFD_DRAW_TO_BITMAP = 0x00000008, - PFD_SUPPORT_GDI = 0x00000010, - PFD_SUPPORT_OPENGL = 0x00000020, - PFD_GENERIC_FORMAT = 0x00000040, - PFD_NEED_PALETTE = 0x00000080, - PFD_NEED_SYSTEM_PALETTE = 0x00000100, - PFD_SWAP_EXCHANGE = 0x00000200, - PFD_SWAP_COPY = 0x00000400, - PFD_SWAP_LAYER_BUFFERS = 0x00000800, - PFD_GENERIC_ACCELERATED = 0x00001000, - PFD_SUPPORT_DIRECTDRAW = 0x00002000, - PFD_DIRECT3D_ACCELERATED = 0x00004000, - PFD_SUPPORT_COMPOSITION = 0x00008000, - - /* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ - PFD_DEPTH_DONTCARE = 0x20000000, - PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, - PFD_STEREO_DONTCARE = 0x80000000 -} - -/* Pixel format descriptor */ -struct PIXELFORMATDESCRIPTOR -{ - WORD nSize; - WORD nVersion; - DWORD dwFlags; - BYTE iPixelType; - BYTE cColorBits; - BYTE cRedBits; - BYTE cRedShift; - BYTE cGreenBits; - BYTE cGreenShift; - BYTE cBlueBits; - BYTE cBlueShift; - BYTE cAlphaBits; - BYTE cAlphaShift; - BYTE cAccumBits; - BYTE cAccumRedBits; - BYTE cAccumGreenBits; - BYTE cAccumBlueBits; - BYTE cAccumAlphaBits; - BYTE cDepthBits; - BYTE cStencilBits; - BYTE cAuxBuffers; - BYTE iLayerType; - BYTE bReserved; - DWORD dwLayerMask; - DWORD dwVisibleMask; - DWORD dwDamageMask; -} -alias PIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR, LPPIXELFORMATDESCRIPTOR; - -export @nogc -{ - BOOL RoundRect(HDC, int, int, int, int, int, int); - BOOL ResizePalette(HPALETTE, UINT); - int SaveDC(HDC); - int SelectClipRgn(HDC, HRGN); - int ExtSelectClipRgn(HDC, HRGN, int); - int SetMetaRgn(HDC); - HGDIOBJ SelectObject(HDC, HGDIOBJ); - HPALETTE SelectPalette(HDC, HPALETTE, BOOL); - COLORREF SetBkColor(HDC, COLORREF); - int SetBkMode(HDC, int); - LONG SetBitmapBits(HBITMAP, DWORD, void *); - UINT SetBoundsRect(HDC, RECT *, UINT); - int SetDIBits(HDC, HBITMAP, UINT, UINT, void *, BITMAPINFO *, UINT); - int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, - int, UINT, UINT, void *, BITMAPINFO *, UINT); - DWORD SetMapperFlags(HDC, DWORD); - int SetGraphicsMode(HDC hdc, int iMode); - int SetMapMode(HDC, int); - HMETAFILE SetMetaFileBitsEx(UINT, BYTE *); - UINT SetPaletteEntries(HPALETTE, UINT, UINT, PALETTEENTRY *); - COLORREF SetPixel(HDC, int, int, COLORREF); - BOOL SetPixelV(HDC, int, int, COLORREF); - BOOL SetPixelFormat(HDC, int, PIXELFORMATDESCRIPTOR *); - int ChoosePixelFormat(HDC, PIXELFORMATDESCRIPTOR *); - BOOL SwapBuffers(HDC); - int SetPolyFillMode(HDC, int); - BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); - BOOL SetRectRgn(HRGN, int, int, int, int); - int StretchDIBits(HDC, int, int, int, int, int, int, int, int, - void *, BITMAPINFO *, UINT, DWORD); - int SetROP2(HDC, int); - int SetStretchBltMode(HDC, int); - UINT SetSystemPaletteUse(HDC, UINT); - int SetTextCharacterExtra(HDC, int); - COLORREF SetTextColor(HDC, COLORREF); - UINT SetTextAlign(HDC, UINT); - BOOL SetTextJustification(HDC, int, int); - BOOL UpdateColors(HDC); -} - -/* Text Alignment Options */ -enum -{ - TA_NOUPDATECP = 0, - TA_UPDATECP = 1, - - TA_LEFT = 0, - TA_RIGHT = 2, - TA_CENTER = 6, - - TA_TOP = 0, - TA_BOTTOM = 8, - TA_BASELINE = 24, - - TA_RTLREADING = 256, - TA_MASK = (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING), -} - -struct POINT -{ - LONG x; - LONG y; -} -alias POINT* PPOINT, NPPOINT, LPPOINT; - - -export @nogc -{ - BOOL MoveToEx(HDC, int, int, LPPOINT); - BOOL TextOutA(HDC, int, int, LPCSTR, int); - BOOL TextOutW(HDC, int, int, LPCWSTR, int); -} - -@nogc -{ -export void PostQuitMessage(int nExitCode); -export LRESULT DefWindowProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); -export LRESULT DefWindowProcW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); -export HMODULE GetModuleHandleA(LPCSTR lpModuleName); -export HMODULE GetModuleHandleW(LPCWSTR lpModuleName); -} - -alias LRESULT function (HWND, UINT, WPARAM, LPARAM) WNDPROC; - -struct WNDCLASSEXA { - UINT cbSize; - /* Win 3.x */ - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCSTR lpszMenuName; - LPCSTR lpszClassName; - /* Win 4.0 */ - HICON hIconSm; -} -alias WNDCLASSEXA* PWNDCLASSEXA, NPWNDCLASSEXA, LPWNDCLASSEXA; - - -struct WNDCLASSA { - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCSTR lpszMenuName; - LPCSTR lpszClassName; -} -alias WNDCLASSA* PWNDCLASSA, NPWNDCLASSA, LPWNDCLASSA; -alias WNDCLASSA WNDCLASS; - - -struct WNDCLASSEXW { - UINT cbSize; - /* Win 3.x */ - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCWSTR lpszMenuName; - LPCWSTR lpszClassName; - /* Win 4.0 */ - HICON hIconSm; -} - - -struct WNDCLASSW { - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCWSTR lpszMenuName; - LPCWSTR lpszClassName; -} -alias WNDCLASSW* PWNDCLASSW, NPWNDCLASSW, LPWNDCLASSW; - - -/* - * Window Styles - */ -enum : uint -{ - WS_OVERLAPPED = 0x00000000, - WS_POPUP = 0x80000000, - WS_CHILD = 0x40000000, - WS_MINIMIZE = 0x20000000, - WS_VISIBLE = 0x10000000, - WS_DISABLED = 0x08000000, - WS_CLIPSIBLINGS = 0x04000000, - WS_CLIPCHILDREN = 0x02000000, - WS_MAXIMIZE = 0x01000000, - WS_CAPTION = 0x00C00000, /* WS_BORDER | WS_DLGFRAME */ - WS_BORDER = 0x00800000, - WS_DLGFRAME = 0x00400000, - WS_VSCROLL = 0x00200000, - WS_HSCROLL = 0x00100000, - WS_SYSMENU = 0x00080000, - WS_THICKFRAME = 0x00040000, - WS_GROUP = 0x00020000, - WS_TABSTOP = 0x00010000, - - WS_MINIMIZEBOX = 0x00020000, - WS_MAXIMIZEBOX = 0x00010000, - - WS_TILED = WS_OVERLAPPED, - WS_ICONIC = WS_MINIMIZE, - WS_SIZEBOX = WS_THICKFRAME, - -/* - * Common Window Styles - */ - WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX), - WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, - WS_POPUPWINDOW = (WS_POPUP | WS_BORDER | WS_SYSMENU), - WS_CHILDWINDOW = (WS_CHILD), -} - -enum : uint -{ - WS_EX_ACCEPTFILES = 0x00000010, - WS_EX_APPWINDOW = 0x00040000, - WS_EX_CLIENTEDGE = 0x00000200, - WS_EX_COMPOSITED = 0x02000000, - WS_EX_CONTEXTHELP = 0x00000400, - WS_EX_CONTROLPARENT = 0x00010000, - WS_EX_DLGMODALFRAME = 0x00000001, - WS_EX_LAYERED = 0x00080000, - WS_EX_LAYOUTRTL = 0x00400000, - WS_EX_LEFT = 0x00000000, - WS_EX_LEFTSCROLLBAR = 0x00004000, - WS_EX_LTRREADING = 0x00000000, - WS_EX_MDICHILD = 0x00000040, - WS_EX_NOACTIVATE = 0x08000000, - WS_EX_NOINHERITLAYOUT = 0x00100000, - WS_EX_NOPARENTNOTIFY = 0x00000004, - WS_EX_RIGHT = 0x00001000, - WS_EX_RIGHTSCROLLBAR = 0x00000000, - WS_EX_RTLREADING = 0x00002000, - WS_EX_STATICEDGE = 0x00020000, - WS_EX_TOOLWINDOW = 0x00000080, - WS_EX_TOPMOST = 0x00000008, - WS_EX_TRANSPARENT = 0x00000020, - WS_EX_WINDOWEDGE = 0x00000100, - WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE), - WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST), -} - -/* - * Class styles - */ -enum -{ - CS_VREDRAW = 0x0001, - CS_HREDRAW = 0x0002, - CS_KEYCVTWINDOW = 0x0004, - CS_DBLCLKS = 0x0008, - CS_OWNDC = 0x0020, - CS_CLASSDC = 0x0040, - CS_PARENTDC = 0x0080, - CS_NOKEYCVT = 0x0100, - CS_NOCLOSE = 0x0200, - CS_SAVEBITS = 0x0800, - CS_BYTEALIGNCLIENT = 0x1000, - CS_BYTEALIGNWINDOW = 0x2000, - CS_GLOBALCLASS = 0x4000, - - - CS_IME = 0x00010000, -} - -export @nogc -{ - HICON LoadIconA(HINSTANCE hInstance, LPCSTR lpIconName); - HICON LoadIconW(HINSTANCE hInstance, LPCWSTR lpIconName); - HCURSOR LoadCursorA(HINSTANCE hInstance, LPCSTR lpCursorName); - HCURSOR LoadCursorW(HINSTANCE hInstance, LPCWSTR lpCursorName); -} - - -enum : LPSTR -{ - IDI_APPLICATION = cast(LPSTR)(32512), - - IDC_ARROW = cast(LPSTR)(32512), - IDC_CROSS = cast(LPSTR)(32515), -} - - -/* - * Color Types - */ -enum -{ - CTLCOLOR_MSGBOX = 0, - CTLCOLOR_EDIT = 1, - CTLCOLOR_LISTBOX = 2, - CTLCOLOR_BTN = 3, - CTLCOLOR_DLG = 4, - CTLCOLOR_SCROLLBAR = 5, - CTLCOLOR_STATIC = 6, - CTLCOLOR_MAX = 7, - - COLOR_SCROLLBAR = 0, - COLOR_BACKGROUND = 1, - COLOR_ACTIVECAPTION = 2, - COLOR_INACTIVECAPTION = 3, - COLOR_MENU = 4, - COLOR_WINDOW = 5, - COLOR_WINDOWFRAME = 6, - COLOR_MENUTEXT = 7, - COLOR_WINDOWTEXT = 8, - COLOR_CAPTIONTEXT = 9, - COLOR_ACTIVEBORDER = 10, - COLOR_INACTIVEBORDER = 11, - COLOR_APPWORKSPACE = 12, - COLOR_HIGHLIGHT = 13, - COLOR_HIGHLIGHTTEXT = 14, - COLOR_BTNFACE = 15, - COLOR_BTNSHADOW = 16, - COLOR_GRAYTEXT = 17, - COLOR_BTNTEXT = 18, - COLOR_INACTIVECAPTIONTEXT = 19, - COLOR_BTNHIGHLIGHT = 20, - - - COLOR_3DDKSHADOW = 21, - COLOR_3DLIGHT = 22, - COLOR_INFOTEXT = 23, - COLOR_INFOBK = 24, - - COLOR_DESKTOP = COLOR_BACKGROUND, - COLOR_3DFACE = COLOR_BTNFACE, - COLOR_3DSHADOW = COLOR_BTNSHADOW, - COLOR_3DHIGHLIGHT = COLOR_BTNHIGHLIGHT, - COLOR_3DHILIGHT = COLOR_BTNHIGHLIGHT, - COLOR_BTNHILIGHT = COLOR_BTNHIGHLIGHT, -} - -enum : int -{ - CW_USEDEFAULT = cast(int)0x80000000 -} - -/* - * Special value for CreateWindow, et al. - */ -enum : HWND -{ - HWND_DESKTOP = cast(HWND)0, -} - -@nogc -{ -export ATOM RegisterClassA(in WNDCLASSA *lpWndClass); -export ATOM RegisterClassExA(in WNDCLASSEXA *lpWndClass); -export ATOM RegisterClassW(in WNDCLASSW *lpWndClass); -export ATOM RegisterClassExW(in WNDCLASSEXW *lpWndClass); - -export HWND CreateWindowExA( - DWORD dwExStyle, - LPCSTR lpClassName, - LPCSTR lpWindowName, - DWORD dwStyle, - int X, - int Y, - int nWidth, - int nHeight, - HWND hWndParent , - HMENU hMenu, - HINSTANCE hInstance, - LPVOID lpParam); - - -HWND CreateWindowA( - LPCSTR lpClassName, - LPCSTR lpWindowName, - DWORD dwStyle, - int X, - int Y, - int nWidth, - int nHeight, - HWND hWndParent , - HMENU hMenu, - HINSTANCE hInstance, - LPVOID lpParam) -{ - return CreateWindowExA(0, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); -} - - -export HWND CreateWindowExW( - DWORD dwExStyle, - LPCWSTR lpClassName, - LPCWSTR lpWindowName, - DWORD dwStyle, - int X, - int Y, - int nWidth, - int nHeight, - HWND hWndParent, - HMENU hMenu, - HINSTANCE hInstance, - LPVOID lpParam); - - -HWND CreateWindowW( - LPCWSTR lpClassName, - LPCWSTR lpWindowName, - DWORD dwStyle, - int X, - int Y, - int nWidth, - int nHeight, - HWND hWndParent , - HMENU hMenu, - HINSTANCE hInstance, - LPVOID lpParam) -{ - return CreateWindowExW(0, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); -} - -export BOOL DestroyWindow(HWND hWnd); -export BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags); -} - -enum : uint -{ - SWP_ASYNCWINDOWPOS = 0x4000, - SWP_DEFERERASE = 0x2000, - SWP_DRAWFRAME = 0x0020, - SWP_FRAMECHANGED = 0x0020, - SWP_HIDEWINDOW = 0x0080, - SWP_NOACTIVATE = 0x0010, - SWP_NOCOPYBITS = 0x0100, - SWP_NOMOVE = 0x0002, - SWP_NOOWNERZORDER = 0x0200, - SWP_NOREDRAW = 0x0008, - SWP_NOREPOSITION = 0x0200, - SWP_NOSENDCHANGING = 0x0400, - SWP_NOSIZE = 0x0001, - SWP_NOZORDER = 0x0004, - SWP_SHOWWINDOW = 0x0040, -} - -/* - * Message structure - */ -struct MSG { - HWND hwnd; - UINT message; - WPARAM wParam; - LPARAM lParam; - DWORD time; - POINT pt; -} -alias MSG* PMSG, NPMSG, LPMSG; - -export @nogc -{ - BOOL GetMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax); - BOOL GetMessageW(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax); - BOOL TranslateMessage(MSG *lpMsg); - LONG DispatchMessageA(in MSG *lpMsg); - LONG DispatchMessageW(in MSG *lpMsg); - BOOL PeekMessageA(MSG *lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg); - BOOL PeekMessageW(MSG *lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg); - HWND GetFocus(); -} - -/* http://msdn.microsoft.com/en-us/library/windows/desktop/ms683187(v=vs.85).aspx -According to MSDN about a value returned by GetEnvironmentString: -"Treat this memory as read-only; do not modify it directly.". -So return type of GetEnvironmentStrings is changed from LPWCH (as in *.h file) -to LPCWCH. FreeEnvironmentStrings's argument type is changed correspondingly. -*/ -@nogc -{ -export LPCWCH GetEnvironmentStringsW(); -export BOOL FreeEnvironmentStringsW(LPCWCH lpszEnvironmentBlock); -export DWORD GetEnvironmentVariableW(LPCWSTR lpName, LPWSTR lpBuffer, DWORD nSize); -export BOOL SetEnvironmentVariableW(LPCWSTR lpName, LPCWSTR lpValue); -export DWORD ExpandEnvironmentStringsA(LPCSTR lpSrc, LPSTR lpDst, DWORD nSize); -export DWORD ExpandEnvironmentStringsW(LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize); -} - -export @nogc -{ - BOOL IsValidCodePage(UINT CodePage); - UINT GetACP(); - UINT GetOEMCP(); - //BOOL GetCPInfo(UINT CodePage, LPCPINFO lpCPInfo); - BOOL IsDBCSLeadByte(BYTE TestChar); - BOOL IsDBCSLeadByteEx(UINT CodePage, BYTE TestChar); - int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cchMultiByte, LPWSTR lpWideCharStr, int cchWideChar); - int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cchMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar); -} - -// Code pages -enum : UINT -{ - CP_UTF8 = 65001 -} - -@nogc -{ -export HANDLE CreateFileMappingA(HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName); -export HANDLE CreateFileMappingW(HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCWSTR lpName); - -export BOOL GetMailslotInfo(HANDLE hMailslot, LPDWORD lpMaxMessageSize, LPDWORD lpNextSize, LPDWORD lpMessageCount, LPDWORD lpReadTimeout); -export BOOL SetMailslotInfo(HANDLE hMailslot, DWORD lReadTimeout); -export LPVOID MapViewOfFile(HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap); -export LPVOID MapViewOfFileEx(HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap, LPVOID lpBaseAddress); -export BOOL FlushViewOfFile(LPCVOID lpBaseAddress, SIZE_T dwNumberOfBytesToFlush); -export BOOL UnmapViewOfFile(LPCVOID lpBaseAddress); - -export HGDIOBJ GetStockObject(int); -export BOOL ShowWindow(HWND hWnd, int nCmdShow); -} - -/* Stock Logical Objects */ -enum -{ - WHITE_BRUSH = 0, - LTGRAY_BRUSH = 1, - GRAY_BRUSH = 2, - DKGRAY_BRUSH = 3, - BLACK_BRUSH = 4, - NULL_BRUSH = 5, - HOLLOW_BRUSH = NULL_BRUSH, - WHITE_PEN = 6, - BLACK_PEN = 7, - NULL_PEN = 8, - OEM_FIXED_FONT = 10, - ANSI_FIXED_FONT = 11, - ANSI_VAR_FONT = 12, - SYSTEM_FONT = 13, - DEVICE_DEFAULT_FONT = 14, - DEFAULT_PALETTE = 15, - SYSTEM_FIXED_FONT = 16, - DEFAULT_GUI_FONT = 17, - STOCK_LAST = 17, -} - -/* - * ShowWindow() Commands - */ -enum -{ - SW_HIDE = 0, - SW_SHOWNORMAL = 1, - SW_NORMAL = 1, - SW_SHOWMINIMIZED = 2, - SW_SHOWMAXIMIZED = 3, - SW_MAXIMIZE = 3, - SW_SHOWNOACTIVATE = 4, - SW_SHOW = 5, - SW_MINIMIZE = 6, - SW_SHOWMINNOACTIVE = 7, - SW_SHOWNA = 8, - SW_RESTORE = 9, - SW_SHOWDEFAULT = 10, - SW_MAX = 10, -} - -struct TEXTMETRICA -{ - LONG tmHeight; - LONG tmAscent; - LONG tmDescent; - LONG tmInternalLeading; - LONG tmExternalLeading; - LONG tmAveCharWidth; - LONG tmMaxCharWidth; - LONG tmWeight; - LONG tmOverhang; - LONG tmDigitizedAspectX; - LONG tmDigitizedAspectY; - BYTE tmFirstChar; - BYTE tmLastChar; - BYTE tmDefaultChar; - BYTE tmBreakChar; - BYTE tmItalic; - BYTE tmUnderlined; - BYTE tmStruckOut; - BYTE tmPitchAndFamily; - BYTE tmCharSet; -} - -export @nogc BOOL GetTextMetricsA(HDC, TEXTMETRICA*); - -/* - * Scroll Bar Constants - */ -enum -{ - SB_HORZ = 0, - SB_VERT = 1, - SB_CTL = 2, - SB_BOTH = 3, -} - -/* - * Scroll Bar Commands - */ -enum -{ - SB_LINEUP = 0, - SB_LINELEFT = 0, - SB_LINEDOWN = 1, - SB_LINERIGHT = 1, - SB_PAGEUP = 2, - SB_PAGELEFT = 2, - SB_PAGEDOWN = 3, - SB_PAGERIGHT = 3, - SB_THUMBPOSITION = 4, - SB_THUMBTRACK = 5, - SB_TOP = 6, - SB_LEFT = 6, - SB_BOTTOM = 7, - SB_RIGHT = 7, - SB_ENDSCROLL = 8, -} - -@nogc -{ -export int SetScrollPos(HWND hWnd, int nBar, int nPos, BOOL bRedraw); -export int GetScrollPos(HWND hWnd, int nBar); -export BOOL SetScrollRange(HWND hWnd, int nBar, int nMinPos, int nMaxPos, BOOL bRedraw); -export BOOL GetScrollRange(HWND hWnd, int nBar, LPINT lpMinPos, LPINT lpMaxPos); -export BOOL ShowScrollBar(HWND hWnd, int wBar, BOOL bShow); -export BOOL EnableScrollBar(HWND hWnd, UINT wSBflags, UINT wArrows); -} - -/* - * LockWindowUpdate API - */ - -@nogc -{ -export BOOL LockWindowUpdate(HWND hWndLock); -export BOOL ScrollWindow(HWND hWnd, int XAmount, int YAmount, RECT* lpRect, RECT* lpClipRect); -export BOOL ScrollDC(HDC hDC, int dx, int dy, RECT* lprcScroll, RECT* lprcClip, HRGN hrgnUpdate, LPRECT lprcUpdate); -export int ScrollWindowEx(HWND hWnd, int dx, int dy, RECT* prcScroll, RECT* prcClip, HRGN hrgnUpdate, LPRECT prcUpdate, UINT flags); -} - -/* - * Key State API - */ - -@nogc -{ -export SHORT GetKeyState(int vKey); -export SHORT GetAsyncKeyState(int vKey); -export BOOL GetKeyboardState(PBYTE lpKeyState); -export BOOL SetKeyboardState(LPBYTE lpKeyState); -export UINT MapVirtualKey(UINT uCode, UINT uMapType); -} - -/* - * Virtual Keys, Standard Set - */ -enum -{ - VK_LBUTTON = 0x01, - VK_RBUTTON = 0x02, - VK_CANCEL = 0x03, - VK_MBUTTON = 0x04, /* NOT contiguous with L & RBUTTON */ - - VK_BACK = 0x08, - VK_TAB = 0x09, - - VK_CLEAR = 0x0C, - VK_RETURN = 0x0D, - - VK_SHIFT = 0x10, - VK_CONTROL = 0x11, - VK_MENU = 0x12, - VK_PAUSE = 0x13, - VK_CAPITAL = 0x14, - - - VK_ESCAPE = 0x1B, - - VK_SPACE = 0x20, - VK_PRIOR = 0x21, - VK_NEXT = 0x22, - VK_END = 0x23, - VK_HOME = 0x24, - VK_LEFT = 0x25, - VK_UP = 0x26, - VK_RIGHT = 0x27, - VK_DOWN = 0x28, - VK_SELECT = 0x29, - VK_PRINT = 0x2A, - VK_EXECUTE = 0x2B, - VK_SNAPSHOT = 0x2C, - VK_INSERT = 0x2D, - VK_DELETE = 0x2E, - VK_HELP = 0x2F, - -/* VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */ -/* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */ - - VK_LWIN = 0x5B, - VK_RWIN = 0x5C, - VK_APPS = 0x5D, - - VK_NUMPAD0 = 0x60, - VK_NUMPAD1 = 0x61, - VK_NUMPAD2 = 0x62, - VK_NUMPAD3 = 0x63, - VK_NUMPAD4 = 0x64, - VK_NUMPAD5 = 0x65, - VK_NUMPAD6 = 0x66, - VK_NUMPAD7 = 0x67, - VK_NUMPAD8 = 0x68, - VK_NUMPAD9 = 0x69, - VK_MULTIPLY = 0x6A, - VK_ADD = 0x6B, - VK_SEPARATOR = 0x6C, - VK_SUBTRACT = 0x6D, - VK_DECIMAL = 0x6E, - VK_DIVIDE = 0x6F, - VK_F1 = 0x70, - VK_F2 = 0x71, - VK_F3 = 0x72, - VK_F4 = 0x73, - VK_F5 = 0x74, - VK_F6 = 0x75, - VK_F7 = 0x76, - VK_F8 = 0x77, - VK_F9 = 0x78, - VK_F10 = 0x79, - VK_F11 = 0x7A, - VK_F12 = 0x7B, - VK_F13 = 0x7C, - VK_F14 = 0x7D, - VK_F15 = 0x7E, - VK_F16 = 0x7F, - VK_F17 = 0x80, - VK_F18 = 0x81, - VK_F19 = 0x82, - VK_F20 = 0x83, - VK_F21 = 0x84, - VK_F22 = 0x85, - VK_F23 = 0x86, - VK_F24 = 0x87, - - VK_NUMLOCK = 0x90, - VK_SCROLL = 0x91, - -/* - * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys. - * Used only as parameters to GetAsyncKeyState() and GetKeyState(). - * No other API or message will distinguish left and right keys in this way. - */ - VK_LSHIFT = 0xA0, - VK_RSHIFT = 0xA1, - VK_LCONTROL = 0xA2, - VK_RCONTROL = 0xA3, - VK_LMENU = 0xA4, - VK_RMENU = 0xA5, - - - VK_PROCESSKEY = 0xE5, - - - VK_ATTN = 0xF6, - VK_CRSEL = 0xF7, - VK_EXSEL = 0xF8, - VK_EREOF = 0xF9, - VK_PLAY = 0xFA, - VK_ZOOM = 0xFB, - VK_NONAME = 0xFC, - VK_PA1 = 0xFD, - VK_OEM_CLEAR = 0xFE, -} - -export @nogc LRESULT SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); - -alias UINT function (HWND, UINT, WPARAM, LPARAM) LPOFNHOOKPROC; - -struct OPENFILENAMEA { - DWORD lStructSize; - HWND hwndOwner; - HINSTANCE hInstance; - LPCSTR lpstrFilter; - LPSTR lpstrCustomFilter; - DWORD nMaxCustFilter; - DWORD nFilterIndex; - LPSTR lpstrFile; - DWORD nMaxFile; - LPSTR lpstrFileTitle; - DWORD nMaxFileTitle; - LPCSTR lpstrInitialDir; - LPCSTR lpstrTitle; - DWORD Flags; - WORD nFileOffset; - WORD nFileExtension; - LPCSTR lpstrDefExt; - LPARAM lCustData; - LPOFNHOOKPROC lpfnHook; - LPCSTR lpTemplateName; -} -alias OPENFILENAMEA *LPOPENFILENAMEA; - -struct OPENFILENAMEW { - DWORD lStructSize; - HWND hwndOwner; - HINSTANCE hInstance; - LPCWSTR lpstrFilter; - LPWSTR lpstrCustomFilter; - DWORD nMaxCustFilter; - DWORD nFilterIndex; - LPWSTR lpstrFile; - DWORD nMaxFile; - LPWSTR lpstrFileTitle; - DWORD nMaxFileTitle; - LPCWSTR lpstrInitialDir; - LPCWSTR lpstrTitle; - DWORD Flags; - WORD nFileOffset; - WORD nFileExtension; - LPCWSTR lpstrDefExt; - LPARAM lCustData; - LPOFNHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; -} -alias OPENFILENAMEW *LPOPENFILENAMEW; - -@nogc -{ -BOOL GetOpenFileNameA(LPOPENFILENAMEA); -BOOL GetOpenFileNameW(LPOPENFILENAMEW); - -BOOL GetSaveFileNameA(LPOPENFILENAMEA); -BOOL GetSaveFileNameW(LPOPENFILENAMEW); - -short GetFileTitleA(LPCSTR, LPSTR, WORD); -short GetFileTitleW(LPCWSTR, LPWSTR, WORD); -} - -enum -{ - PM_NOREMOVE = 0x0000, - PM_REMOVE = 0x0001, - PM_NOYIELD = 0x0002, -} - -/* Bitmap Header Definition */ -struct BITMAP -{ - LONG bmType; - LONG bmWidth; - LONG bmHeight; - LONG bmWidthBytes; - WORD bmPlanes; - WORD bmBitsPixel; - LPVOID bmBits; -} -alias BITMAP* PBITMAP, NPBITMAP, LPBITMAP; - -@nogc -{ -export HDC CreateCompatibleDC(HDC); - -export int GetObjectA(HGDIOBJ, int, LPVOID); -export int GetObjectW(HGDIOBJ, int, LPVOID); -export BOOL DeleteDC(HDC); -} - -struct LOGFONTA -{ - LONG lfHeight; - LONG lfWidth; - LONG lfEscapement; - LONG lfOrientation; - LONG lfWeight; - BYTE lfItalic; - BYTE lfUnderline; - BYTE lfStrikeOut; - BYTE lfCharSet; - BYTE lfOutPrecision; - BYTE lfClipPrecision; - BYTE lfQuality; - BYTE lfPitchAndFamily; - CHAR[32] lfFaceName; -} -alias LOGFONTA* PLOGFONTA, NPLOGFONTA, LPLOGFONTA; - -@nogc -{ -export HMENU LoadMenuA(HINSTANCE hInstance, LPCSTR lpMenuName); -export HMENU LoadMenuW(HINSTANCE hInstance, LPCWSTR lpMenuName); - -export HMENU GetSubMenu(HMENU hMenu, int nPos); - -export HBITMAP LoadBitmapA(HINSTANCE hInstance, LPCSTR lpBitmapName); -export HBITMAP LoadBitmapW(HINSTANCE hInstance, LPCWSTR lpBitmapName); - -LPSTR MAKEINTRESOURCEA(int i) { return cast(LPSTR)(cast(DWORD)(cast(WORD)(i))); } - -export HFONT CreateFontIndirectA(LOGFONTA *); - -export BOOL MessageBeep(UINT uType); -export int ShowCursor(BOOL bShow); -export BOOL SetCursorPos(int X, int Y); -export HCURSOR SetCursor(HCURSOR hCursor); -export BOOL GetCursorPos(LPPOINT lpPoint); -export BOOL ClipCursor( RECT *lpRect); -export BOOL GetClipCursor(LPRECT lpRect); -export HCURSOR GetCursor(); -export BOOL CreateCaret(HWND hWnd, HBITMAP hBitmap , int nWidth, int nHeight); -export UINT GetCaretBlinkTime(); -export BOOL SetCaretBlinkTime(UINT uMSeconds); -export BOOL DestroyCaret(); -export BOOL HideCaret(HWND hWnd); -export BOOL ShowCaret(HWND hWnd); -export BOOL SetCaretPos(int X, int Y); -export BOOL GetCaretPos(LPPOINT lpPoint); -export BOOL ClientToScreen(HWND hWnd, LPPOINT lpPoint); -export BOOL ScreenToClient(HWND hWnd, LPPOINT lpPoint); -export int MapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints); -export HWND WindowFromPoint(POINT Point); -export HWND ChildWindowFromPoint(HWND hWndParent, POINT Point); - - -export BOOL TrackPopupMenu(HMENU hMenu, UINT uFlags, int x, int y, - int nReserved, HWND hWnd, RECT *prcRect); -} - -align (2) struct DLGTEMPLATE { - DWORD style; - DWORD dwExtendedStyle; - WORD cdit; - short x; - short y; - short cx; - short cy; -} -alias DLGTEMPLATE *LPDLGTEMPLATEA; -alias DLGTEMPLATE *LPDLGTEMPLATEW; - - -alias LPDLGTEMPLATEA LPDLGTEMPLATE; - -alias DLGTEMPLATE *LPCDLGTEMPLATEA; -alias DLGTEMPLATE *LPCDLGTEMPLATEW; - - -alias LPCDLGTEMPLATEA LPCDLGTEMPLATE; - - -export @nogc int DialogBoxParamA(HINSTANCE hInstance, LPCSTR lpTemplateName, - HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam); -export @nogc int DialogBoxIndirectParamA(HINSTANCE hInstance, - LPCDLGTEMPLATEA hDialogTemplate, HWND hWndParent, DLGPROC lpDialogFunc, - LPARAM dwInitParam); - -enum : DWORD -{ - SRCCOPY = cast(DWORD)0x00CC0020, /* dest = source */ - SRCPAINT = cast(DWORD)0x00EE0086, /* dest = source OR dest */ - SRCAND = cast(DWORD)0x008800C6, /* dest = source AND dest */ - SRCINVERT = cast(DWORD)0x00660046, /* dest = source XOR dest */ - SRCERASE = cast(DWORD)0x00440328, /* dest = source AND (NOT dest) */ - NOTSRCCOPY = cast(DWORD)0x00330008, /* dest = (NOT source) */ - NOTSRCERASE = cast(DWORD)0x001100A6, /* dest = (NOT src) AND (NOT dest) */ - MERGECOPY = cast(DWORD)0x00C000CA, /* dest = (source AND pattern) */ - MERGEPAINT = cast(DWORD)0x00BB0226, /* dest = (NOT source) OR dest */ - PATCOPY = cast(DWORD)0x00F00021, /* dest = pattern */ - PATPAINT = cast(DWORD)0x00FB0A09, /* dest = DPSnoo */ - PATINVERT = cast(DWORD)0x005A0049, /* dest = pattern XOR dest */ - DSTINVERT = cast(DWORD)0x00550009, /* dest = (NOT dest) */ - BLACKNESS = cast(DWORD)0x00000042, /* dest = BLACK */ - WHITENESS = cast(DWORD)0x00FF0062, /* dest = WHITE */ -} - -enum -{ - SND_SYNC = 0x0000, /* play synchronously (default) */ - SND_ASYNC = 0x0001, /* play asynchronously */ - SND_NODEFAULT = 0x0002, /* silence (!default) if sound not found */ - SND_MEMORY = 0x0004, /* pszSound points to a memory file */ - SND_LOOP = 0x0008, /* loop the sound until next sndPlaySound */ - SND_NOSTOP = 0x0010, /* don't stop any currently playing sound */ - - SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy */ - SND_ALIAS = 0x00010000, /* name is a registry alias */ - SND_ALIAS_ID = 0x00110000, /* alias is a predefined ID */ - SND_FILENAME = 0x00020000, /* name is file name */ - SND_RESOURCE = 0x00040004, /* name is resource name or atom */ - - SND_PURGE = 0x0040, /* purge non-static events for task */ - SND_APPLICATION = 0x0080, /* look for application specific association */ - - - SND_ALIAS_START = 0, /* alias base */ -} - -@nogc -{ -export BOOL PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound); -export BOOL PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound); - -export int GetClipBox(HDC, LPRECT); -export int GetClipRgn(HDC, HRGN); -export int GetMetaRgn(HDC, HRGN); -export HGDIOBJ GetCurrentObject(HDC, UINT); -export BOOL GetCurrentPositionEx(HDC, LPPOINT); -export int GetDeviceCaps(HDC, int); -} - -struct LOGPEN -{ - UINT lopnStyle; - POINT lopnWidth; - COLORREF lopnColor; -} -alias LOGPEN* PLOGPEN, NPLOGPEN, LPLOGPEN; - -enum -{ - PS_SOLID = 0, - PS_DASH = 1, /* ------- */ - PS_DOT = 2, /* ....... */ - PS_DASHDOT = 3, /* _._._._ */ - PS_DASHDOTDOT = 4, /* _.._.._ */ - PS_NULL = 5, - PS_INSIDEFRAME = 6, - PS_USERSTYLE = 7, - PS_ALTERNATE = 8, - PS_STYLE_MASK = 0x0000000F, - - PS_ENDCAP_ROUND = 0x00000000, - PS_ENDCAP_SQUARE = 0x00000100, - PS_ENDCAP_FLAT = 0x00000200, - PS_ENDCAP_MASK = 0x00000F00, - - PS_JOIN_ROUND = 0x00000000, - PS_JOIN_BEVEL = 0x00001000, - PS_JOIN_MITER = 0x00002000, - PS_JOIN_MASK = 0x0000F000, - - PS_COSMETIC = 0x00000000, - PS_GEOMETRIC = 0x00010000, - PS_TYPE_MASK = 0x000F0000, -} - -@nogc -{ -export HPALETTE CreatePalette(LOGPALETTE *); -export HPEN CreatePen(int, int, COLORREF); -export HPEN CreatePenIndirect(LOGPEN *); -export HRGN CreatePolyPolygonRgn(POINT *, INT *, int, int); -export HBRUSH CreatePatternBrush(HBITMAP); -export HRGN CreateRectRgn(int, int, int, int); -export HRGN CreateRectRgnIndirect(RECT *); -export HRGN CreateRoundRectRgn(int, int, int, int, int, int); -export BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); -export BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); - -COLORREF RGB(int r, int g, int b) -{ - return cast(COLORREF) - ((cast(BYTE)r|(cast(WORD)(cast(BYTE)g)<<8))|((cast(DWORD)cast(BYTE)b)<<16)); -} - -export BOOL LineTo(HDC, int, int); -export BOOL DeleteObject(HGDIOBJ); -export int FillRect(HDC hDC, RECT *lprc, HBRUSH hbr); - - -export BOOL EndDialog(HWND hDlg, int nResult); -export HWND GetDlgItem(HWND hDlg, int nIDDlgItem); - -export BOOL SetDlgItemInt(HWND hDlg, int nIDDlgItem, UINT uValue, BOOL bSigned); -export UINT GetDlgItemInt(HWND hDlg, int nIDDlgItem, BOOL *lpTranslated, - BOOL bSigned); - -export BOOL SetDlgItemTextA(HWND hDlg, int nIDDlgItem, LPCSTR lpString); -export BOOL SetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPCWSTR lpString); - -export UINT GetDlgItemTextA(HWND hDlg, int nIDDlgItem, LPSTR lpString, int nMaxCount); -export UINT GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount); - -export BOOL CheckDlgButton(HWND hDlg, int nIDButton, UINT uCheck); -export BOOL CheckRadioButton(HWND hDlg, int nIDFirstButton, int nIDLastButton, - int nIDCheckButton); - -export UINT IsDlgButtonChecked(HWND hDlg, int nIDButton); - -export HWND SetFocus(HWND hWnd); -} - -extern (C) @nogc -{ - export int wsprintfA(LPSTR, LPCSTR, ...); - export int wsprintfW(LPWSTR, LPCWSTR, ...); -} - -enum : uint -{ - INFINITE = uint.max, - WAIT_OBJECT_0 = 0, - WAIT_ABANDONED_0 = 0x80, - WAIT_TIMEOUT = 0x102, - WAIT_IO_COMPLETION = 0xc0, - WAIT_ABANDONED = 0x80, - WAIT_FAILED = uint.max, -} - -@nogc -{ -export HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCTSTR lpName) @trusted; -export HANDLE OpenSemaphoreA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCTSTR lpName); -export BOOL ReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount); -} - -struct COORD { - SHORT X; - SHORT Y; -} -alias COORD *PCOORD; - -struct SMALL_RECT { - SHORT Left; - SHORT Top; - SHORT Right; - SHORT Bottom; -} -alias SMALL_RECT *PSMALL_RECT; - -struct KEY_EVENT_RECORD { - BOOL bKeyDown; - WORD wRepeatCount; - WORD wVirtualKeyCode; - WORD wVirtualScanCode; - union { - WCHAR UnicodeChar; - CHAR AsciiChar; - } - DWORD dwControlKeyState; -} -alias KEY_EVENT_RECORD *PKEY_EVENT_RECORD; - -// -// ControlKeyState flags -// - -enum -{ - RIGHT_ALT_PRESSED = 0x0001, // the right alt key is pressed. - LEFT_ALT_PRESSED = 0x0002, // the left alt key is pressed. - RIGHT_CTRL_PRESSED = 0x0004, // the right ctrl key is pressed. - LEFT_CTRL_PRESSED = 0x0008, // the left ctrl key is pressed. - SHIFT_PRESSED = 0x0010, // the shift key is pressed. - NUMLOCK_ON = 0x0020, // the numlock light is on. - SCROLLLOCK_ON = 0x0040, // the scrolllock light is on. - CAPSLOCK_ON = 0x0080, // the capslock light is on. - ENHANCED_KEY = 0x0100, // the key is enhanced. -} - -struct MOUSE_EVENT_RECORD { - COORD dwMousePosition; - DWORD dwButtonState; - DWORD dwControlKeyState; - DWORD dwEventFlags; -} -alias MOUSE_EVENT_RECORD *PMOUSE_EVENT_RECORD; - -// -// ButtonState flags -// -enum -{ - FROM_LEFT_1ST_BUTTON_PRESSED = 0x0001, - RIGHTMOST_BUTTON_PRESSED = 0x0002, - FROM_LEFT_2ND_BUTTON_PRESSED = 0x0004, - FROM_LEFT_3RD_BUTTON_PRESSED = 0x0008, - FROM_LEFT_4TH_BUTTON_PRESSED = 0x0010, -} - -// -// EventFlags -// - -enum -{ - MOUSE_MOVED = 0x0001, - DOUBLE_CLICK = 0x0002, -} - -struct WINDOW_BUFFER_SIZE_RECORD { - COORD dwSize; -} -alias WINDOW_BUFFER_SIZE_RECORD *PWINDOW_BUFFER_SIZE_RECORD; - -struct MENU_EVENT_RECORD { - UINT dwCommandId; -} -alias MENU_EVENT_RECORD *PMENU_EVENT_RECORD; - -struct FOCUS_EVENT_RECORD { - BOOL bSetFocus; -} -alias FOCUS_EVENT_RECORD *PFOCUS_EVENT_RECORD; - -struct INPUT_RECORD { - WORD EventType; - union { - KEY_EVENT_RECORD KeyEvent; - MOUSE_EVENT_RECORD MouseEvent; - WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; - MENU_EVENT_RECORD MenuEvent; - FOCUS_EVENT_RECORD FocusEvent; - } -} -alias INPUT_RECORD *PINPUT_RECORD; - -// -// EventType flags: -// - -enum -{ - KEY_EVENT = 0x0001, // Event contains key event record - MOUSE_EVENT = 0x0002, // Event contains mouse event record - WINDOW_BUFFER_SIZE_EVENT = 0x0004, // Event contains window change event record - MENU_EVENT = 0x0008, // Event contains menu event record - FOCUS_EVENT = 0x0010, // event contains focus change -} - -struct CHAR_INFO { - union { - WCHAR UnicodeChar; - CHAR AsciiChar; - } - WORD Attributes; -} -alias CHAR_INFO *PCHAR_INFO; - -// -// Attributes flags: -// - -enum -{ - FOREGROUND_BLUE = 0x0001, // text color contains blue. - FOREGROUND_GREEN = 0x0002, // text color contains green. - FOREGROUND_RED = 0x0004, // text color contains red. - FOREGROUND_INTENSITY = 0x0008, // text color is intensified. - BACKGROUND_BLUE = 0x0010, // background color contains blue. - BACKGROUND_GREEN = 0x0020, // background color contains green. - BACKGROUND_RED = 0x0040, // background color contains red. - BACKGROUND_INTENSITY = 0x0080, // background color is intensified. -} - -struct CONSOLE_SCREEN_BUFFER_INFO { - COORD dwSize; - COORD dwCursorPosition; - WORD wAttributes; - SMALL_RECT srWindow; - COORD dwMaximumWindowSize; -} -alias CONSOLE_SCREEN_BUFFER_INFO *PCONSOLE_SCREEN_BUFFER_INFO; - -struct CONSOLE_CURSOR_INFO { - DWORD dwSize; - BOOL bVisible; -} -alias CONSOLE_CURSOR_INFO *PCONSOLE_CURSOR_INFO; - -enum -{ - ENABLE_PROCESSED_INPUT = 0x0001, - ENABLE_LINE_INPUT = 0x0002, - ENABLE_ECHO_INPUT = 0x0004, - ENABLE_WINDOW_INPUT = 0x0008, - ENABLE_MOUSE_INPUT = 0x0010, -} - -enum -{ - ENABLE_PROCESSED_OUTPUT = 0x0001, - ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002, -} - -@nogc -{ -BOOL PeekConsoleInputA(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead); -BOOL PeekConsoleInputW(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead); -BOOL ReadConsoleInputA(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead); -BOOL ReadConsoleInputW(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead); -BOOL WriteConsoleInputA(HANDLE hConsoleInput, in INPUT_RECORD *lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsWritten); -BOOL WriteConsoleInputW(HANDLE hConsoleInput, in INPUT_RECORD *lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsWritten); -BOOL ReadConsoleOutputA(HANDLE hConsoleOutput, PCHAR_INFO lpBuffer, COORD dwBufferSize, COORD dwBufferCoord, PSMALL_RECT lpReadRegion); -BOOL ReadConsoleOutputW(HANDLE hConsoleOutput, PCHAR_INFO lpBuffer, COORD dwBufferSize, COORD dwBufferCoord, PSMALL_RECT lpReadRegion); -BOOL WriteConsoleOutputA(HANDLE hConsoleOutput, in CHAR_INFO *lpBuffer, COORD dwBufferSize, COORD dwBufferCoord, PSMALL_RECT lpWriteRegion); -BOOL WriteConsoleOutputW(HANDLE hConsoleOutput, in CHAR_INFO *lpBuffer, COORD dwBufferSize, COORD dwBufferCoord, PSMALL_RECT lpWriteRegion); -BOOL ReadConsoleOutputCharacterA(HANDLE hConsoleOutput, LPSTR lpCharacter, DWORD nLength, COORD dwReadCoord, LPDWORD lpNumberOfCharsRead); -BOOL ReadConsoleOutputCharacterW(HANDLE hConsoleOutput, LPWSTR lpCharacter, DWORD nLength, COORD dwReadCoord, LPDWORD lpNumberOfCharsRead); -BOOL ReadConsoleOutputAttribute(HANDLE hConsoleOutput, LPWORD lpAttribute, DWORD nLength, COORD dwReadCoord, LPDWORD lpNumberOfAttrsRead); -BOOL WriteConsoleOutputCharacterA(HANDLE hConsoleOutput, LPCSTR lpCharacter, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten); -BOOL WriteConsoleOutputCharacterW(HANDLE hConsoleOutput, LPCWSTR lpCharacter, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten); -BOOL WriteConsoleOutputAttribute(HANDLE hConsoleOutput, in WORD *lpAttribute, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfAttrsWritten); -BOOL FillConsoleOutputCharacterA(HANDLE hConsoleOutput, CHAR cCharacter, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten); -BOOL FillConsoleOutputCharacterW(HANDLE hConsoleOutput, WCHAR cCharacter, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten); -BOOL FillConsoleOutputAttribute(HANDLE hConsoleOutput, WORD wAttribute, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfAttrsWritten); -BOOL GetConsoleMode(HANDLE hConsoleHandle, LPDWORD lpMode); -BOOL GetNumberOfConsoleInputEvents(HANDLE hConsoleInput, LPDWORD lpNumberOfEvents); -BOOL GetConsoleScreenBufferInfo(HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo); -COORD GetLargestConsoleWindowSize( HANDLE hConsoleOutput); -BOOL GetConsoleCursorInfo(HANDLE hConsoleOutput, PCONSOLE_CURSOR_INFO lpConsoleCursorInfo); -BOOL GetNumberOfConsoleMouseButtons( LPDWORD lpNumberOfMouseButtons); -BOOL SetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode); -BOOL SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput); -BOOL FlushConsoleInputBuffer(HANDLE hConsoleInput); -BOOL SetConsoleScreenBufferSize(HANDLE hConsoleOutput, COORD dwSize); -BOOL SetConsoleCursorPosition(HANDLE hConsoleOutput, COORD dwCursorPosition); -BOOL SetConsoleCursorInfo(HANDLE hConsoleOutput, in CONSOLE_CURSOR_INFO *lpConsoleCursorInfo); -BOOL ScrollConsoleScreenBufferA(HANDLE hConsoleOutput, in SMALL_RECT *lpScrollRectangle, in SMALL_RECT *lpClipRectangle, COORD dwDestinationOrigin, in CHAR_INFO *lpFill); -BOOL ScrollConsoleScreenBufferW(HANDLE hConsoleOutput, in SMALL_RECT *lpScrollRectangle, in SMALL_RECT *lpClipRectangle, COORD dwDestinationOrigin, in CHAR_INFO *lpFill); -BOOL SetConsoleWindowInfo(HANDLE hConsoleOutput, BOOL bAbsolute, in SMALL_RECT *lpConsoleWindow); -BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes); -BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine, BOOL Add); -BOOL GenerateConsoleCtrlEvent( DWORD dwCtrlEvent, DWORD dwProcessGroupId); -BOOL AllocConsole(); -BOOL FreeConsole(); -DWORD GetConsoleTitleA(LPSTR lpConsoleTitle, DWORD nSize); -DWORD GetConsoleTitleW(LPWSTR lpConsoleTitle, DWORD nSize); -BOOL SetConsoleTitleA(LPCSTR lpConsoleTitle); -BOOL SetConsoleTitleW(LPCWSTR lpConsoleTitle); -BOOL ReadConsoleA(HANDLE hConsoleInput, LPVOID lpBuffer, DWORD nNumberOfCharsToRead, LPDWORD lpNumberOfCharsRead, LPVOID lpReserved); -BOOL ReadConsoleW(HANDLE hConsoleInput, LPVOID lpBuffer, DWORD nNumberOfCharsToRead, LPDWORD lpNumberOfCharsRead, LPVOID lpReserved); -BOOL WriteConsoleA(HANDLE hConsoleOutput, in void *lpBuffer, DWORD nNumberOfCharsToWrite, LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved); -BOOL WriteConsoleW(HANDLE hConsoleOutput, in void *lpBuffer, DWORD nNumberOfCharsToWrite, LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved); -HANDLE CreateConsoleScreenBuffer(DWORD dwDesiredAccess, DWORD dwShareMode, in SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwFlags, LPVOID lpScreenBufferData); -UINT GetConsoleCP(); -BOOL SetConsoleCP( UINT wCodePageID); -UINT GetConsoleOutputCP(); -BOOL SetConsoleOutputCP(UINT wCodePageID); -} - -alias BOOL function(DWORD CtrlType) PHANDLER_ROUTINE; - -enum -{ - CONSOLE_TEXTMODE_BUFFER = 1, -} - -enum -{ - SM_CXSCREEN = 0, - SM_CYSCREEN = 1, - SM_CXVSCROLL = 2, - SM_CYHSCROLL = 3, - SM_CYCAPTION = 4, - SM_CXBORDER = 5, - SM_CYBORDER = 6, - SM_CXDLGFRAME = 7, - SM_CYDLGFRAME = 8, - SM_CYVTHUMB = 9, - SM_CXHTHUMB = 10, - SM_CXICON = 11, - SM_CYICON = 12, - SM_CXCURSOR = 13, - SM_CYCURSOR = 14, - SM_CYMENU = 15, - SM_CXFULLSCREEN = 16, - SM_CYFULLSCREEN = 17, - SM_CYKANJIWINDOW = 18, - SM_MOUSEPRESENT = 19, - SM_CYVSCROLL = 20, - SM_CXHSCROLL = 21, - SM_DEBUG = 22, - SM_SWAPBUTTON = 23, - SM_RESERVED1 = 24, - SM_RESERVED2 = 25, - SM_RESERVED3 = 26, - SM_RESERVED4 = 27, - SM_CXMIN = 28, - SM_CYMIN = 29, - SM_CXSIZE = 30, - SM_CYSIZE = 31, - SM_CXFRAME = 32, - SM_CYFRAME = 33, - SM_CXMINTRACK = 34, - SM_CYMINTRACK = 35, - SM_CXDOUBLECLK = 36, - SM_CYDOUBLECLK = 37, - SM_CXICONSPACING = 38, - SM_CYICONSPACING = 39, - SM_MENUDROPALIGNMENT = 40, - SM_PENWINDOWS = 41, - SM_DBCSENABLED = 42, - SM_CMOUSEBUTTONS = 43, - - - SM_CXFIXEDFRAME = SM_CXDLGFRAME, - SM_CYFIXEDFRAME = SM_CYDLGFRAME, - SM_CXSIZEFRAME = SM_CXFRAME, - SM_CYSIZEFRAME = SM_CYFRAME, - - SM_SECURE = 44, - SM_CXEDGE = 45, - SM_CYEDGE = 46, - SM_CXMINSPACING = 47, - SM_CYMINSPACING = 48, - SM_CXSMICON = 49, - SM_CYSMICON = 50, - SM_CYSMCAPTION = 51, - SM_CXSMSIZE = 52, - SM_CYSMSIZE = 53, - SM_CXMENUSIZE = 54, - SM_CYMENUSIZE = 55, - SM_ARRANGE = 56, - SM_CXMINIMIZED = 57, - SM_CYMINIMIZED = 58, - SM_CXMAXTRACK = 59, - SM_CYMAXTRACK = 60, - SM_CXMAXIMIZED = 61, - SM_CYMAXIMIZED = 62, - SM_NETWORK = 63, - SM_CLEANBOOT = 67, - SM_CXDRAG = 68, - SM_CYDRAG = 69, - SM_SHOWSOUNDS = 70, - SM_CXMENUCHECK = 71, - SM_CYMENUCHECK = 72, - SM_SLOWMACHINE = 73, - SM_MIDEASTENABLED = 74, - SM_CMETRICS = 75, -} - -@nogc -int GetSystemMetrics(int nIndex); - -enum : DWORD -{ - STILL_ACTIVE = (0x103), -} - -@nogc -{ -DWORD TlsAlloc(); -LPVOID TlsGetValue(DWORD); -BOOL TlsSetValue(DWORD, LPVOID); -BOOL TlsFree(DWORD); -} - -struct STARTUPINFO -{ - DWORD cb = STARTUPINFO.sizeof; - LPSTR lpReserved; - LPSTR lpDesktop; - LPSTR lpTitle; - DWORD dwX; - DWORD dwY; - DWORD dwXSize; - DWORD dwYSize; - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; - DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - LPBYTE lpReserved2; - HANDLE hStdInput; - HANDLE hStdOutput; - HANDLE hStdError; -} - -struct STARTUPINFO_W -{ - DWORD cb = STARTUPINFO_W.sizeof; - LPWSTR lpReserved; - LPWSTR lpDesktop; - LPWSTR lpTitle; - DWORD dwX; - DWORD dwY; - DWORD dwXSize; - DWORD dwYSize; - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; - DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - LPBYTE lpReserved2; - HANDLE hStdInput; - HANDLE hStdOutput; - HANDLE hStdError; -} - -alias STARTUPINFO *LPSTARTUPINFO; -alias STARTUPINFO_W *LPSTARTUPINFO_W; - -struct PROCESS_INFORMATION -{ - HANDLE hProcess; - HANDLE hThread; - DWORD dwProcessId; - DWORD dwThreadId; -} - -alias PROCESS_INFORMATION *LPPROCESS_INFORMATION; - -export @nogc -{ - BOOL CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, - LPSECURITY_ATTRIBUTES lpProcessAttributes, - LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, - DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, - LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); - - BOOL CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, - LPSECURITY_ATTRIBUTES lpProcessAttributes, - LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, - DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, - LPSTARTUPINFO_W lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); - - BOOL CreatePipe(PHANDLE hReadPipe, PHANDLE hWritePipe, - LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize); -} - -enum -{ - STARTF_USESTDHANDLES = 0x00000100 -} - -enum -{ - CREATE_NO_WINDOW = 0x08000000 -} - -// shellapi.h - -@nogc -{ -HINSTANCE ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd); -HINSTANCE ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd); - -UINT_PTR SetTimer(HWND hwnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc); -BOOL KillTimer(HWND hwnd, UINT_PTR nIDEvent); - -BOOL GetHandleInformation(HANDLE hObject, LPDWORD lpdwFlags); -BOOL SetHandleInformation(HANDLE hObject, DWORD dwMask, DWORD dwFlags); -BOOL TerminateProcess(HANDLE hProcess, UINT uExitCode); -LPWSTR* CommandLineToArgvW(LPCWSTR lpCmdLine, int* pNumArgs); -LPWSTR GetCommandLineW(); -} - -enum -{ - HANDLE_FLAG_INHERIT = 0x1, - HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x2, -} - -enum CREATE_UNICODE_ENVIRONMENT = 0x400; - -@nogc -{ -BOOL LockFile(HANDLE hFile, DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh); -BOOL UnlockFile(HANDLE hFile, DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToUnlockLow, DWORD nNumberOfBytesToUnlockHigh); -BOOL LockFileEx(HANDLE hFile, DWORD dwFlags, DWORD dwReserved, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh, LPOVERLAPPED lpOverlapped); -BOOL UnlockFileEx(HANDLE hFile, DWORD dwReserved, DWORD nNumberOfBytesToUnlockLow, DWORD nNumberOfBytesToUnlockHigh, LPOVERLAPPED lpOverlapped); -BOOL FlushFileBuffers(HANDLE hFile); -} - -enum LOCKFILE_FAIL_IMMEDIATELY = 1; -enum LOCKFILE_EXCLUSIVE_LOCK = 2; - -@nogc -{ -BOOL IsDebuggerPresent(); - -LPSTR lstrcatA(LPSTR lpString1, LPCSTR lpString2); -LPWSTR lstrcatW(LPWSTR lpString1, LPCWSTR lpString2); - -int lstrcmpA(LPCSTR lpString1, LPCSTR lpString2); -int lstrcmpW(LPCWSTR lpString1,LPCWSTR lpString2); - -int lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2); -int lstrcmpiW(LPCWSTR lpString1,LPCWSTR lpString2); - -LPSTR lstrcpyA(LPSTR lpString1, LPCSTR lpString2); -LPWSTR lstrcpyW(LPWSTR lpString1, LPCWSTR lpString2); - -LPSTR lstrcpynA(LPSTR lpString1, LPCSTR lpString2, int iMaxLength); -LPWSTR lstrcpynW(LPWSTR lpString1, LPCWSTR lpString2, int iMaxLength); - -int lstrlenA(LPCSTR lpString); -int lstrlenW(LPCWSTR lpString); -} +/***********************************************************************\ +* windows.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 4.0 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.windows; + +/* + windows.h - main header file for the Win32 API + + Written by Anders Norlander + + This file is part of a free library for the Win32 API. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +*/ + +public import win32.w32api; +public import win32.core; + +public import win32.cderr; +public import win32.dde; +public import win32.ddeml; +public import win32.dlgs; +public import win32.imm; +public import win32.lzexpand; +public import win32.mmsystem; +public import win32.nb30; +public import win32.winsvc; + +public import win32.rpc; +public import win32.shellapi; +public import win32.winperf; +public import win32.commdlg; +public import win32.winspool; +public import win32.ole2; + +// Select correct version of winsock. Importing the incorrect +// module will cause a static assert to prevent problems later on. +version (Win32_Winsock1) { + public import win32.winsock; +} else { + public import win32.winsock2; + public import win32.ws2tcpip; +} + +/+ +#if (_WIN32_WINNT >= 0x400) +#include +/* + * MS likes to include mswsock.h here as well, + * but that can cause undefined symbols if + * winsock2.h is included before windows.h + */ +#else +#include +#endif /* (_WIN32_WINNT >= 0x400) */ ++/ diff --git a/src/core/sys/windows/winerror.d b/src/core/sys/windows/winerror.d new file mode 100644 index 0000000000..ce2cc01e37 --- /dev/null +++ b/src/core/sys/windows/winerror.d @@ -0,0 +1,2310 @@ +/***********************************************************************\ +* winerror.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winerror; + +/* Comments from the Mingw header: + * WAIT_TIMEOUT is also defined in winbase.h + */ + +private import win32.windef; + +alias int SCODE; // was in win32.wtypes. + +enum : uint { + ERROR_SUCCESS = 0, + NO_ERROR = 0, + ERROR_INVALID_FUNCTION, + ERROR_FILE_NOT_FOUND, + ERROR_PATH_NOT_FOUND, + ERROR_TOO_MANY_OPEN_FILES, + ERROR_ACCESS_DENIED, + ERROR_INVALID_HANDLE, + ERROR_ARENA_TRASHED, + ERROR_NOT_ENOUGH_MEMORY, + ERROR_INVALID_BLOCK, + ERROR_BAD_ENVIRONMENT, + ERROR_BAD_FORMAT, + ERROR_INVALID_ACCESS, + ERROR_INVALID_DATA, + ERROR_OUTOFMEMORY, + ERROR_INVALID_DRIVE, + ERROR_CURRENT_DIRECTORY, + ERROR_NOT_SAME_DEVICE, + ERROR_NO_MORE_FILES, + ERROR_WRITE_PROTECT, + ERROR_BAD_UNIT, + ERROR_NOT_READY, + ERROR_BAD_COMMAND, + ERROR_CRC, + ERROR_BAD_LENGTH, + ERROR_SEEK, + ERROR_NOT_DOS_DISK, + ERROR_SECTOR_NOT_FOUND, + ERROR_OUT_OF_PAPER, + ERROR_WRITE_FAULT, + ERROR_READ_FAULT, + ERROR_GEN_FAILURE, + ERROR_SHARING_VIOLATION, + ERROR_LOCK_VIOLATION, + ERROR_WRONG_DISK, // = 34 + ERROR_SHARING_BUFFER_EXCEEDED = 36, + ERROR_HANDLE_EOF = 38, + ERROR_HANDLE_DISK_FULL, // = 39 + ERROR_NOT_SUPPORTED = 50, + ERROR_REM_NOT_LIST, + ERROR_DUP_NAME, + ERROR_BAD_NETPATH, + ERROR_NETWORK_BUSY, + ERROR_DEV_NOT_EXIST, + ERROR_TOO_MANY_CMDS, + ERROR_ADAP_HDW_ERR, + ERROR_BAD_NET_RESP, + ERROR_UNEXP_NET_ERR, + ERROR_BAD_REM_ADAP, + ERROR_PRINTQ_FULL, + ERROR_NO_SPOOL_SPACE, + ERROR_PRINT_CANCELLED, + ERROR_NETNAME_DELETED, + ERROR_NETWORK_ACCESS_DENIED, + ERROR_BAD_DEV_TYPE, + ERROR_BAD_NET_NAME, + ERROR_TOO_MANY_NAMES, + ERROR_TOO_MANY_SESS, + ERROR_SHARING_PAUSED, + ERROR_REQ_NOT_ACCEP, + ERROR_REDIR_PAUSED, // = 72 + ERROR_FILE_EXISTS = 80, + ERROR_CANNOT_MAKE = 82, + ERROR_FAIL_I24, + ERROR_OUT_OF_STRUCTURES, + ERROR_ALREADY_ASSIGNED, + ERROR_INVALID_PASSWORD, + ERROR_INVALID_PARAMETER, + ERROR_NET_WRITE_FAULT, + ERROR_NO_PROC_SLOTS, // = 89 + ERROR_TOO_MANY_SEMAPHORES = 100, + ERROR_EXCL_SEM_ALREADY_OWNED, + ERROR_SEM_IS_SET, + ERROR_TOO_MANY_SEM_REQUESTS, + ERROR_INVALID_AT_INTERRUPT_TIME, + ERROR_SEM_OWNER_DIED, + ERROR_SEM_USER_LIMIT, + ERROR_DISK_CHANGE, + ERROR_DRIVE_LOCKED, + ERROR_BROKEN_PIPE, + ERROR_OPEN_FAILED, + ERROR_BUFFER_OVERFLOW, + ERROR_DISK_FULL, + ERROR_NO_MORE_SEARCH_HANDLES, + ERROR_INVALID_TARGET_HANDLE, // = 114 + ERROR_INVALID_CATEGORY = 117, + ERROR_INVALID_VERIFY_SWITCH, + ERROR_BAD_DRIVER_LEVEL, + ERROR_CALL_NOT_IMPLEMENTED, + ERROR_SEM_TIMEOUT, + ERROR_INSUFFICIENT_BUFFER, + ERROR_INVALID_NAME, + ERROR_INVALID_LEVEL, + ERROR_NO_VOLUME_LABEL, + ERROR_MOD_NOT_FOUND, + ERROR_PROC_NOT_FOUND, + ERROR_WAIT_NO_CHILDREN, + ERROR_CHILD_NOT_COMPLETE, + ERROR_DIRECT_ACCESS_HANDLE, + ERROR_NEGATIVE_SEEK, + ERROR_SEEK_ON_DEVICE, + ERROR_IS_JOIN_TARGET, + ERROR_IS_JOINED, + ERROR_IS_SUBSTED, + ERROR_NOT_JOINED, + ERROR_NOT_SUBSTED, + ERROR_JOIN_TO_JOIN, + ERROR_SUBST_TO_SUBST, + ERROR_JOIN_TO_SUBST, + ERROR_SUBST_TO_JOIN, + ERROR_BUSY_DRIVE, + ERROR_SAME_DRIVE, + ERROR_DIR_NOT_ROOT, + ERROR_DIR_NOT_EMPTY, + ERROR_IS_SUBST_PATH, + ERROR_IS_JOIN_PATH, + ERROR_PATH_BUSY, + ERROR_IS_SUBST_TARGET, + ERROR_SYSTEM_TRACE, + ERROR_INVALID_EVENT_COUNT, + ERROR_TOO_MANY_MUXWAITERS, + ERROR_INVALID_LIST_FORMAT, + ERROR_LABEL_TOO_LONG, + ERROR_TOO_MANY_TCBS, + ERROR_SIGNAL_REFUSED, + ERROR_DISCARDED, + ERROR_NOT_LOCKED, + ERROR_BAD_THREADID_ADDR, + ERROR_BAD_ARGUMENTS, + ERROR_BAD_PATHNAME, + ERROR_SIGNAL_PENDING, // = 162 + ERROR_MAX_THRDS_REACHED = 164, + ERROR_LOCK_FAILED = 167, + ERROR_BUSY = 170, + ERROR_CANCEL_VIOLATION = 173, + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED, // = 174 + ERROR_INVALID_SEGMENT_NUMBER = 180, + ERROR_INVALID_ORDINAL = 182, + ERROR_ALREADY_EXISTS, // = 183 + ERROR_INVALID_FLAG_NUMBER = 186, + ERROR_SEM_NOT_FOUND, + ERROR_INVALID_STARTING_CODESEG, + ERROR_INVALID_STACKSEG, + ERROR_INVALID_MODULETYPE, + ERROR_INVALID_EXE_SIGNATURE, + ERROR_EXE_MARKED_INVALID, + ERROR_BAD_EXE_FORMAT, + ERROR_ITERATED_DATA_EXCEEDS_64k, + ERROR_INVALID_MINALLOCSIZE, + ERROR_DYNLINK_FROM_INVALID_RING, + ERROR_IOPL_NOT_ENABLED, + ERROR_INVALID_SEGDPL, + ERROR_AUTODATASEG_EXCEEDS_64k, + ERROR_RING2SEG_MUST_BE_MOVABLE, + ERROR_RELOC_CHAIN_XEEDS_SEGLIM, + ERROR_INFLOOP_IN_RELOC_CHAIN, + ERROR_ENVVAR_NOT_FOUND, // = 203 + ERROR_NO_SIGNAL_SENT = 205, + ERROR_FILENAME_EXCED_RANGE, + ERROR_RING2_STACK_IN_USE, + ERROR_META_EXPANSION_TOO_LONG, + ERROR_INVALID_SIGNAL_NUMBER, + ERROR_THREAD_1_INACTIVE, // = 210 + ERROR_LOCKED = 212, + ERROR_TOO_MANY_MODULES = 214, + ERROR_NESTING_NOT_ALLOWED, + ERROR_EXE_MACHINE_TYPE_MISMATCH, + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY, + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY, // = 218 + ERROR_BAD_PIPE = 230, + ERROR_PIPE_BUSY, + ERROR_NO_DATA, + ERROR_PIPE_NOT_CONNECTED, + ERROR_MORE_DATA, // = 234 + ERROR_VC_DISCONNECTED = 240, + ERROR_INVALID_EA_NAME = 254, + ERROR_EA_LIST_INCONSISTENT, // = 255 + WAIT_TIMEOUT = 258, + ERROR_NO_MORE_ITEMS, // = 259 + ERROR_CANNOT_COPY = 266, + ERROR_DIRECTORY, // = 267 + ERROR_EAS_DIDNT_FIT = 275, + ERROR_EA_FILE_CORRUPT, + ERROR_EA_TABLE_FULL, + ERROR_INVALID_EA_HANDLE, // = 278 + ERROR_EAS_NOT_SUPPORTED = 282, + ERROR_NOT_OWNER = 288, + ERROR_TOO_MANY_POSTS = 298, + ERROR_PARTIAL_COPY, + ERROR_OPLOCK_NOT_GRANTED, + ERROR_INVALID_OPLOCK_PROTOCOL, + ERROR_DISK_TOO_FRAGMENTED, + ERROR_DELETE_PENDING, // = 303 + ERROR_MR_MID_NOT_FOUND = 317, + ERROR_SCOPE_NOT_FOUND, // = 318 + ERROR_INVALID_ADDRESS = 487, + ERROR_ARITHMETIC_OVERFLOW = 534, + ERROR_PIPE_CONNECTED, + ERROR_PIPE_LISTENING, // = 536 + ERROR_EA_ACCESS_DENIED = 994, + ERROR_OPERATION_ABORTED, + ERROR_IO_INCOMPLETE, + ERROR_IO_PENDING, + ERROR_NOACCESS, + ERROR_SWAPERROR, // = 999 + ERROR_STACK_OVERFLOW = 1001, + ERROR_INVALID_MESSAGE, + ERROR_CAN_NOT_COMPLETE, + ERROR_INVALID_FLAGS, + ERROR_UNRECOGNIZED_VOLUME, + ERROR_FILE_INVALID, + ERROR_FULLSCREEN_MODE, + ERROR_NO_TOKEN, + ERROR_BADDB, + ERROR_BADKEY, + ERROR_CANTOPEN, + ERROR_CANTREAD, + ERROR_CANTWRITE, + ERROR_REGISTRY_RECOVERED, + ERROR_REGISTRY_CORRUPT, + ERROR_REGISTRY_IO_FAILED, + ERROR_NOT_REGISTRY_FILE, + ERROR_KEY_DELETED, + ERROR_NO_LOG_SPACE, + ERROR_KEY_HAS_CHILDREN, + ERROR_CHILD_MUST_BE_VOLATILE, + ERROR_NOTIFY_ENUM_DIR, // = 1022 + ERROR_DEPENDENT_SERVICES_RUNNING = 1051, + ERROR_INVALID_SERVICE_CONTROL, + ERROR_SERVICE_REQUEST_TIMEOUT, + ERROR_SERVICE_NO_THREAD, + ERROR_SERVICE_DATABASE_LOCKED, + ERROR_SERVICE_ALREADY_RUNNING, + ERROR_INVALID_SERVICE_ACCOUNT, + ERROR_SERVICE_DISABLED, + ERROR_CIRCULAR_DEPENDENCY, + ERROR_SERVICE_DOES_NOT_EXIST, + ERROR_SERVICE_CANNOT_ACCEPT_CTRL, + ERROR_SERVICE_NOT_ACTIVE, + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT, + ERROR_EXCEPTION_IN_SERVICE, + ERROR_DATABASE_DOES_NOT_EXIST, + ERROR_SERVICE_SPECIFIC_ERROR, + ERROR_PROCESS_ABORTED, + ERROR_SERVICE_DEPENDENCY_FAIL, + ERROR_SERVICE_LOGON_FAILED, + ERROR_SERVICE_START_HANG, + ERROR_INVALID_SERVICE_LOCK, + ERROR_SERVICE_MARKED_FOR_DELETE, + ERROR_SERVICE_EXISTS, + ERROR_ALREADY_RUNNING_LKG, + ERROR_SERVICE_DEPENDENCY_DELETED, + ERROR_BOOT_ALREADY_ACCEPTED, + ERROR_SERVICE_NEVER_STARTED, + ERROR_DUPLICATE_SERVICE_NAME, + ERROR_DIFFERENT_SERVICE_ACCOUNT, + ERROR_CANNOT_DETECT_DRIVER_FAILURE, + ERROR_CANNOT_DETECT_PROCESS_ABORT, + ERROR_NO_RECOVERY_PROGRAM, + ERROR_SERVICE_NOT_IN_EXE, + ERROR_NOT_SAFEBOOT_SERVICE, // = 1084 + ERROR_END_OF_MEDIA = 1100, + ERROR_FILEMARK_DETECTED, + ERROR_BEGINNING_OF_MEDIA, + ERROR_SETMARK_DETECTED, + ERROR_NO_DATA_DETECTED, + ERROR_PARTITION_FAILURE, + ERROR_INVALID_BLOCK_LENGTH, + ERROR_DEVICE_NOT_PARTITIONED, + ERROR_UNABLE_TO_LOCK_MEDIA, + ERROR_UNABLE_TO_UNLOAD_MEDIA, + ERROR_MEDIA_CHANGED, + ERROR_BUS_RESET, + ERROR_NO_MEDIA_IN_DRIVE, + ERROR_NO_UNICODE_TRANSLATION, + ERROR_DLL_INIT_FAILED, + ERROR_SHUTDOWN_IN_PROGRESS, + ERROR_NO_SHUTDOWN_IN_PROGRESS, + ERROR_IO_DEVICE, + ERROR_SERIAL_NO_DEVICE, + ERROR_IRQ_BUSY, + ERROR_MORE_WRITES, + ERROR_COUNTER_TIMEOUT, + ERROR_FLOPPY_ID_MARK_NOT_FOUND, + ERROR_FLOPPY_WRONG_CYLINDER, + ERROR_FLOPPY_UNKNOWN_ERROR, + ERROR_FLOPPY_BAD_REGISTERS, + ERROR_DISK_RECALIBRATE_FAILED, + ERROR_DISK_OPERATION_FAILED, + ERROR_DISK_RESET_FAILED, + ERROR_EOM_OVERFLOW, + ERROR_NOT_ENOUGH_SERVER_MEMORY, + ERROR_POSSIBLE_DEADLOCK, + ERROR_MAPPED_ALIGNMENT, // = 1132 + ERROR_SET_POWER_STATE_VETOED = 1140, + ERROR_SET_POWER_STATE_FAILED, + ERROR_TOO_MANY_LINKS, // = 1142 + ERROR_OLD_WIN_VERSION = 1150, + ERROR_APP_WRONG_OS, + ERROR_SINGLE_INSTANCE_APP, + ERROR_RMODE_APP, + ERROR_INVALID_DLL, + ERROR_NO_ASSOCIATION, + ERROR_DDE_FAIL, + ERROR_DLL_NOT_FOUND, + ERROR_NO_MORE_USER_HANDLES, + ERROR_MESSAGE_SYNC_ONLY, + ERROR_SOURCE_ELEMENT_EMPTY, + ERROR_DESTINATION_ELEMENT_FULL, + ERROR_ILLEGAL_ELEMENT_ADDRESS, + ERROR_MAGAZINE_NOT_PRESENT, + ERROR_DEVICE_REINITIALIZATION_NEEDED, + ERROR_DEVICE_REQUIRES_CLEANING, + ERROR_DEVICE_DOOR_OPEN, + ERROR_DEVICE_NOT_CONNECTED, + ERROR_NOT_FOUND, + ERROR_NO_MATCH, + ERROR_SET_NOT_FOUND, + ERROR_POINT_NOT_FOUND, + ERROR_NO_TRACKING_SERVICE, + ERROR_NO_VOLUME_ID, // = 1173 + ERROR_UNABLE_TO_REMOVE_REPLACED = 1175, + ERROR_UNABLE_TO_MOVE_REPLACEMENT, + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2, + ERROR_JOURNAL_DELETE_IN_PROGRESS, + ERROR_JOURNAL_NOT_ACTIVE, + ERROR_POTENTIAL_FILE_FOUND, + ERROR_JOURNAL_ENTRY_DELETED, // = 1181 + ERROR_BAD_DEVICE = 1200, + ERROR_CONNECTION_UNAVAIL, + ERROR_DEVICE_ALREADY_REMEMBERED, + ERROR_NO_NET_OR_BAD_PATH, + ERROR_BAD_PROVIDER, + ERROR_CANNOT_OPEN_PROFILE, + ERROR_BAD_PROFILE, + ERROR_NOT_CONTAINER, + ERROR_EXTENDED_ERROR, + ERROR_INVALID_GROUPNAME, + ERROR_INVALID_COMPUTERNAME, + ERROR_INVALID_EVENTNAME, + ERROR_INVALID_DOMAINNAME, + ERROR_INVALID_SERVICENAME, + ERROR_INVALID_NETNAME, + ERROR_INVALID_SHARENAME, + ERROR_INVALID_PASSWORDNAME, + ERROR_INVALID_MESSAGENAME, + ERROR_INVALID_MESSAGEDEST, + ERROR_SESSION_CREDENTIAL_CONFLICT, + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED, + ERROR_DUP_DOMAINNAME, + ERROR_NO_NETWORK, + ERROR_CANCELLED, + ERROR_USER_MAPPED_FILE, + ERROR_CONNECTION_REFUSED, + ERROR_GRACEFUL_DISCONNECT, + ERROR_ADDRESS_ALREADY_ASSOCIATED, + ERROR_ADDRESS_NOT_ASSOCIATED, + ERROR_CONNECTION_INVALID, + ERROR_CONNECTION_ACTIVE, + ERROR_NETWORK_UNREACHABLE, + ERROR_HOST_UNREACHABLE, + ERROR_PROTOCOL_UNREACHABLE, + ERROR_PORT_UNREACHABLE, + ERROR_REQUEST_ABORTED, + ERROR_CONNECTION_ABORTED, + ERROR_RETRY, + ERROR_CONNECTION_COUNT_LIMIT, + ERROR_LOGIN_TIME_RESTRICTION, + ERROR_LOGIN_WKSTA_RESTRICTION, + ERROR_INCORRECT_ADDRESS, + ERROR_ALREADY_REGISTERED, + ERROR_SERVICE_NOT_FOUND, + ERROR_NOT_AUTHENTICATED, + ERROR_NOT_LOGGED_ON, + ERROR_CONTINUE, + ERROR_ALREADY_INITIALIZED, + ERROR_NO_MORE_DEVICES, + ERROR_NO_SUCH_SITE, + ERROR_DOMAIN_CONTROLLER_EXISTS, + ERROR_ONLY_IF_CONNECTED, + ERROR_OVERRIDE_NOCHANGES, + ERROR_BAD_USER_PROFILE, + ERROR_NOT_SUPPORTED_ON_SBS, + ERROR_SERVER_SHUTDOWN_IN_PROGRESS, + ERROR_HOST_DOWN, + ERROR_NON_ACCOUNT_SID, + ERROR_NON_DOMAIN_SID, + ERROR_APPHELP_BLOCK, + ERROR_ACCESS_DISABLED_BY_POLICY, + ERROR_REG_NAT_CONSUMPTION, + ERROR_CSCSHARE_OFFLINE, + ERROR_PKINIT_FAILURE, + ERROR_SMARTCARD_SUBSYSTEM_FAILURE, + ERROR_DOWNGRADE_DETECTED, + SEC_E_SMARTCARD_CERT_REVOKED, + SEC_E_ISSUING_CA_UNTRUSTED, + SEC_E_REVOCATION_OFFLINE_C, + SEC_E_PKINIT_CLIENT_FAILUR, + SEC_E_SMARTCARD_CERT_EXPIRED, + ERROR_MACHINE_LOCKED, // = 1271 + ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273, + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED, + ERROR_DRIVER_BLOCKED, + ERROR_INVALID_IMPORT_OF_NON_DLL, + ERROR_ACCESS_DISABLED_WEBBLADE, + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER, + ERROR_RECOVERY_FAILURE, + ERROR_ALREADY_FIBER, + ERROR_ALREADY_THREAD, + ERROR_STACK_BUFFER_OVERRUN, + ERROR_PARAMETER_QUOTA_EXCEEDED, + ERROR_DEBUGGER_INACTIVE, // = 1284 + ERROR_NOT_ALL_ASSIGNED = 1300, + ERROR_SOME_NOT_MAPPED, + ERROR_NO_QUOTAS_FOR_ACCOUNT, + ERROR_LOCAL_USER_SESSION_KEY, + ERROR_NULL_LM_PASSWORD, + ERROR_UNKNOWN_REVISION, + ERROR_REVISION_MISMATCH, + ERROR_INVALID_OWNER, + ERROR_INVALID_PRIMARY_GROUP, + ERROR_NO_IMPERSONATION_TOKEN, + ERROR_CANT_DISABLE_MANDATORY, + ERROR_NO_LOGON_SERVERS, + ERROR_NO_SUCH_LOGON_SESSION, + ERROR_NO_SUCH_PRIVILEGE, + ERROR_PRIVILEGE_NOT_HELD, + ERROR_INVALID_ACCOUNT_NAME, + ERROR_USER_EXISTS, + ERROR_NO_SUCH_USER, + ERROR_GROUP_EXISTS, + ERROR_NO_SUCH_GROUP, + ERROR_MEMBER_IN_GROUP, + ERROR_MEMBER_NOT_IN_GROUP, + ERROR_LAST_ADMIN, + ERROR_WRONG_PASSWORD, + ERROR_ILL_FORMED_PASSWORD, + ERROR_PASSWORD_RESTRICTION, + ERROR_LOGON_FAILURE, + ERROR_ACCOUNT_RESTRICTION, + ERROR_INVALID_LOGON_HOURS, + ERROR_INVALID_WORKSTATION, + ERROR_PASSWORD_EXPIRED, + ERROR_ACCOUNT_DISABLED, + ERROR_NONE_MAPPED, + ERROR_TOO_MANY_LUIDS_REQUESTED, + ERROR_LUIDS_EXHAUSTED, + ERROR_INVALID_SUB_AUTHORITY, + ERROR_INVALID_ACL, + ERROR_INVALID_SID, + ERROR_INVALID_SECURITY_DESCR, // = 1338 + ERROR_BAD_INHERITANCE_ACL = 1340, + ERROR_SERVER_DISABLED, + ERROR_SERVER_NOT_DISABLED, + ERROR_INVALID_ID_AUTHORITY, + ERROR_ALLOTTED_SPACE_EXCEEDED, + ERROR_INVALID_GROUP_ATTRIBUTES, + ERROR_BAD_IMPERSONATION_LEVEL, + ERROR_CANT_OPEN_ANONYMOUS, + ERROR_BAD_VALIDATION_CLASS, + ERROR_BAD_TOKEN_TYPE, + ERROR_NO_SECURITY_ON_OBJECT, + ERROR_CANT_ACCESS_DOMAIN_INFO, + ERROR_INVALID_SERVER_STATE, + ERROR_INVALID_DOMAIN_STATE, + ERROR_INVALID_DOMAIN_ROLE, + ERROR_NO_SUCH_DOMAIN, + ERROR_DOMAIN_EXISTS, + ERROR_DOMAIN_LIMIT_EXCEEDED, + ERROR_INTERNAL_DB_CORRUPTION, + ERROR_INTERNAL_ERROR, + ERROR_GENERIC_NOT_MAPPED, + ERROR_BAD_DESCRIPTOR_FORMAT, + ERROR_NOT_LOGON_PROCESS, + ERROR_LOGON_SESSION_EXISTS, + ERROR_NO_SUCH_PACKAGE, + ERROR_BAD_LOGON_SESSION_STATE, + ERROR_LOGON_SESSION_COLLISION, + ERROR_INVALID_LOGON_TYPE, + ERROR_CANNOT_IMPERSONATE, + ERROR_RXACT_INVALID_STATE, + ERROR_RXACT_COMMIT_FAILURE, + ERROR_SPECIAL_ACCOUNT, + ERROR_SPECIAL_GROUP, + ERROR_SPECIAL_USER, + ERROR_MEMBERS_PRIMARY_GROUP, + ERROR_TOKEN_ALREADY_IN_USE, + ERROR_NO_SUCH_ALIAS, + ERROR_MEMBER_NOT_IN_ALIAS, + ERROR_MEMBER_IN_ALIAS, + ERROR_ALIAS_EXISTS, + ERROR_LOGON_NOT_GRANTED, + ERROR_TOO_MANY_SECRETS, + ERROR_SECRET_TOO_LONG, + ERROR_INTERNAL_DB_ERROR, + ERROR_TOO_MANY_CONTEXT_IDS, + ERROR_LOGON_TYPE_NOT_GRANTED, + ERROR_NT_CROSS_ENCRYPTION_REQUIRED, + ERROR_NO_SUCH_MEMBER, + ERROR_INVALID_MEMBER, + ERROR_TOO_MANY_SIDS, + ERROR_LM_CROSS_ENCRYPTION_REQUIRED, + ERROR_NO_INHERITANCE, + ERROR_FILE_CORRUPT, + ERROR_DISK_CORRUPT, + ERROR_NO_USER_SESSION_KEY, + ERROR_LICENSE_QUOTA_EXCEEDED, + ERROR_WRONG_TARGET_NAME, + ERROR_MUTUAL_AUTH_FAILED, + ERROR_TIME_SKEW, + ERROR_CURRENT_DOMAIN_NOT_ALLOWED, + ERROR_INVALID_WINDOW_HANDLE, + ERROR_INVALID_MENU_HANDLE, + ERROR_INVALID_CURSOR_HANDLE, + ERROR_INVALID_ACCEL_HANDLE, + ERROR_INVALID_HOOK_HANDLE, + ERROR_INVALID_DWP_HANDLE, + ERROR_TLW_WITH_WSCHILD, + ERROR_CANNOT_FIND_WND_CLASS, + ERROR_WINDOW_OF_OTHER_THREAD, + ERROR_HOTKEY_ALREADY_REGISTERED, + ERROR_CLASS_ALREADY_EXISTS, + ERROR_CLASS_DOES_NOT_EXIST, + ERROR_CLASS_HAS_WINDOWS, + ERROR_INVALID_INDEX, + ERROR_INVALID_ICON_HANDLE, + ERROR_PRIVATE_DIALOG_INDEX, + ERROR_LISTBOX_ID_NOT_FOUND, + ERROR_NO_WILDCARD_CHARACTERS, + ERROR_CLIPBOARD_NOT_OPEN, + ERROR_HOTKEY_NOT_REGISTERED, + ERROR_WINDOW_NOT_DIALOG, + ERROR_CONTROL_ID_NOT_FOUND, + ERROR_INVALID_COMBOBOX_MESSAGE, + ERROR_WINDOW_NOT_COMBOBOX, + ERROR_INVALID_EDIT_HEIGHT, + ERROR_DC_NOT_FOUND, + ERROR_INVALID_HOOK_FILTER, + ERROR_INVALID_FILTER_PROC, + ERROR_HOOK_NEEDS_HMOD, + ERROR_GLOBAL_ONLY_HOOK, + ERROR_JOURNAL_HOOK_SET, + ERROR_HOOK_NOT_INSTALLED, + ERROR_INVALID_LB_MESSAGE, + ERROR_SETCOUNT_ON_BAD_LB, + ERROR_LB_WITHOUT_TABSTOPS, + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD, + ERROR_CHILD_WINDOW_MENU, + ERROR_NO_SYSTEM_MENU, + ERROR_INVALID_MSGBOX_STYLE, + ERROR_INVALID_SPI_VALUE, + ERROR_SCREEN_ALREADY_LOCKED, + ERROR_HWNDS_HAVE_DIFF_PARENT, + ERROR_NOT_CHILD_WINDOW, + ERROR_INVALID_GW_COMMAND, + ERROR_INVALID_THREAD_ID, + ERROR_NON_MDICHILD_WINDOW, + ERROR_POPUP_ALREADY_ACTIVE, + ERROR_NO_SCROLLBARS, + ERROR_INVALID_SCROLLBAR_RANGE, + ERROR_INVALID_SHOWWIN_COMMAND, + ERROR_NO_SYSTEM_RESOURCES, + ERROR_NONPAGED_SYSTEM_RESOURCES, + ERROR_PAGED_SYSTEM_RESOURCES, + ERROR_WORKING_SET_QUOTA, + ERROR_PAGEFILE_QUOTA, + ERROR_COMMITMENT_LIMIT, + ERROR_MENU_ITEM_NOT_FOUND, + ERROR_INVALID_KEYBOARD_HANDLE, + ERROR_HOOK_TYPE_NOT_ALLOWED, + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION, + ERROR_TIMEOUT, + ERROR_INVALID_MONITOR_HANDLE, // = 1461 + ERROR_EVENTLOG_FILE_CORRUPT = 1500, + ERROR_EVENTLOG_CANT_START, + ERROR_LOG_FILE_FULL, + ERROR_EVENTLOG_FILE_CHANGED, // = 1503 + ERROR_INSTALL_SERVICE_FAILURE = 1601, + ERROR_INSTALL_USEREXIT, + ERROR_INSTALL_FAILURE, + ERROR_INSTALL_SUSPEND, + ERROR_UNKNOWN_PRODUCT, + ERROR_UNKNOWN_FEATURE, + ERROR_UNKNOWN_COMPONENT, + ERROR_UNKNOWN_PROPERTY, + ERROR_INVALID_HANDLE_STATE, + ERROR_BAD_CONFIGURATION, + ERROR_INDEX_ABSENT, + ERROR_INSTALL_SOURCE_ABSENT, + ERROR_INSTALL_PACKAGE_VERSION, + ERROR_PRODUCT_UNINSTALLED, + ERROR_BAD_QUERY_SYNTAX, + ERROR_INVALID_FIELD, + ERROR_DEVICE_REMOVED, + ERROR_INSTALL_ALREADY_RUNNING, + ERROR_INSTALL_PACKAGE_OPEN_FAILED, + ERROR_INSTALL_PACKAGE_INVALID, + ERROR_INSTALL_UI_FAILURE, + ERROR_INSTALL_LOG_FAILURE, + ERROR_INSTALL_LANGUAGE_UNSUPPORTED, + ERROR_INSTALL_TRANSFORM_FAILURE, + ERROR_INSTALL_PACKAGE_REJECTED, + ERROR_FUNCTION_NOT_CALLED, + ERROR_FUNCTION_FAILED, + ERROR_INVALID_TABLE, + ERROR_DATATYPE_MISMATCH, + ERROR_UNSUPPORTED_TYPE, + ERROR_CREATE_FAILED, + ERROR_INSTALL_TEMP_UNWRITABLE, + ERROR_INSTALL_PLATFORM_UNSUPPORTED, + ERROR_INSTALL_NOTUSED, + ERROR_PATCH_PACKAGE_OPEN_FAILED, + ERROR_PATCH_PACKAGE_INVALID, + ERROR_PATCH_PACKAGE_UNSUPPORTED, + ERROR_PRODUCT_VERSION, + ERROR_INVALID_COMMAND_LINE, + ERROR_INSTALL_REMOTE_DISALLOWED, + ERROR_SUCCESS_REBOOT_INITIATED, + ERROR_PATCH_TARGET_NOT_FOUND, + ERROR_PATCH_PACKAGE_REJECTED, + ERROR_INSTALL_TRANSFORM_REJECTED, + ERROR_INSTALL_REMOTE_PROHIBITED, // = 1645 + RPC_S_INVALID_STRING_BINDING = 1700, + RPC_S_WRONG_KIND_OF_BINDING, + RPC_S_INVALID_BINDING, + RPC_S_PROTSEQ_NOT_SUPPORTED, + RPC_S_INVALID_RPC_PROTSEQ, + RPC_S_INVALID_STRING_UUID, + RPC_S_INVALID_ENDPOINT_FORMAT, + RPC_S_INVALID_NET_ADDR, + RPC_S_NO_ENDPOINT_FOUND, + RPC_S_INVALID_TIMEOUT, + RPC_S_OBJECT_NOT_FOUND, + RPC_S_ALREADY_REGISTERED, + RPC_S_TYPE_ALREADY_REGISTERED, + RPC_S_ALREADY_LISTENING, + RPC_S_NO_PROTSEQS_REGISTERED, + RPC_S_NOT_LISTENING, + RPC_S_UNKNOWN_MGR_TYPE, + RPC_S_UNKNOWN_IF, + RPC_S_NO_BINDINGS, + RPC_S_NO_PROTSEQS, + RPC_S_CANT_CREATE_ENDPOINT, + RPC_S_OUT_OF_RESOURCES, + RPC_S_SERVER_UNAVAILABLE, + RPC_S_SERVER_TOO_BUSY, + RPC_S_INVALID_NETWORK_OPTIONS, + RPC_S_NO_CALL_ACTIVE, + RPC_S_CALL_FAILED, + RPC_S_CALL_FAILED_DNE, + RPC_S_PROTOCOL_ERROR, // = 1728 + RPC_S_UNSUPPORTED_TRANS_SYN = 1730, + RPC_S_UNSUPPORTED_TYPE = 1732, + RPC_S_INVALID_TAG, + RPC_S_INVALID_BOUND, + RPC_S_NO_ENTRY_NAME, + RPC_S_INVALID_NAME_SYNTAX, + RPC_S_UNSUPPORTED_NAME_SYNTAX, // = 1737 + RPC_S_UUID_NO_ADDRESS = 1739, + RPC_S_DUPLICATE_ENDPOINT, + RPC_S_UNKNOWN_AUTHN_TYPE, + RPC_S_MAX_CALLS_TOO_SMALL, + RPC_S_STRING_TOO_LONG, + RPC_S_PROTSEQ_NOT_FOUND, + RPC_S_PROCNUM_OUT_OF_RANGE, + RPC_S_BINDING_HAS_NO_AUTH, + RPC_S_UNKNOWN_AUTHN_SERVICE, + RPC_S_UNKNOWN_AUTHN_LEVEL, + RPC_S_INVALID_AUTH_IDENTITY, + RPC_S_UNKNOWN_AUTHZ_SERVICE, + EPT_S_INVALID_ENTRY, + EPT_S_CANT_PERFORM_OP, + EPT_S_NOT_REGISTERED, + RPC_S_NOTHING_TO_EXPORT, + RPC_S_INCOMPLETE_NAME, + RPC_S_INVALID_VERS_OPTION, + RPC_S_NO_MORE_MEMBERS, + RPC_S_NOT_ALL_OBJS_UNEXPORTED, + RPC_S_INTERFACE_NOT_FOUND, + RPC_S_ENTRY_ALREADY_EXISTS, + RPC_S_ENTRY_NOT_FOUND, + RPC_S_NAME_SERVICE_UNAVAILABLE, + RPC_S_INVALID_NAF_ID, + RPC_S_CANNOT_SUPPORT, + RPC_S_NO_CONTEXT_AVAILABLE, + RPC_S_INTERNAL_ERROR, + RPC_S_ZERO_DIVIDE, + RPC_S_ADDRESS_ERROR, + RPC_S_FP_DIV_ZERO, + RPC_S_FP_UNDERFLOW, + RPC_S_FP_OVERFLOW, + RPC_X_NO_MORE_ENTRIES, + RPC_X_SS_CHAR_TRANS_OPEN_FAIL, + RPC_X_SS_CHAR_TRANS_SHORT_FILE, + RPC_X_SS_IN_NULL_CONTEXT, // = 1775 + RPC_X_SS_CONTEXT_DAMAGED = 1777, + RPC_X_SS_HANDLES_MISMATCH, + RPC_X_SS_CANNOT_GET_CALL_HANDLE, + RPC_X_NULL_REF_POINTER, + RPC_X_ENUM_VALUE_OUT_OF_RANGE, + RPC_X_BYTE_COUNT_TOO_SMALL, + RPC_X_BAD_STUB_DATA, + ERROR_INVALID_USER_BUFFER, + ERROR_UNRECOGNIZED_MEDIA, + ERROR_NO_TRUST_LSA_SECRET, + ERROR_NO_TRUST_SAM_ACCOUNT, + ERROR_TRUSTED_DOMAIN_FAILURE, + ERROR_TRUSTED_RELATIONSHIP_FAILURE, + ERROR_TRUST_FAILURE, + RPC_S_CALL_IN_PROGRESS, + ERROR_NETLOGON_NOT_STARTED, + ERROR_ACCOUNT_EXPIRED, + ERROR_REDIRECTOR_HAS_OPEN_HANDLES, + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED, + ERROR_UNKNOWN_PORT, + ERROR_UNKNOWN_PRINTER_DRIVER, + ERROR_UNKNOWN_PRINTPROCESSOR, + ERROR_INVALID_SEPARATOR_FILE, + ERROR_INVALID_PRIORITY, + ERROR_INVALID_PRINTER_NAME, + ERROR_PRINTER_ALREADY_EXISTS, + ERROR_INVALID_PRINTER_COMMAND, + ERROR_INVALID_DATATYPE, + ERROR_INVALID_ENVIRONMENT, + RPC_S_NO_MORE_BINDINGS, + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT, + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT, + ERROR_DOMAIN_TRUST_INCONSISTENT, + ERROR_SERVER_HAS_OPEN_HANDLES, + ERROR_RESOURCE_DATA_NOT_FOUND, + ERROR_RESOURCE_TYPE_NOT_FOUND, + ERROR_RESOURCE_NAME_NOT_FOUND, + ERROR_RESOURCE_LANG_NOT_FOUND, + ERROR_NOT_ENOUGH_QUOTA, + RPC_S_NO_INTERFACES, + RPC_S_CALL_CANCELLED, + RPC_S_BINDING_INCOMPLETE, + RPC_S_COMM_FAILURE, + RPC_S_UNSUPPORTED_AUTHN_LEVEL, + RPC_S_NO_PRINC_NAME, + RPC_S_NOT_RPC_ERROR, + RPC_S_UUID_LOCAL_ONLY, + RPC_S_SEC_PKG_ERROR, + RPC_S_NOT_CANCELLED, + RPC_X_INVALID_ES_ACTION, + RPC_X_WRONG_ES_VERSION, + RPC_X_WRONG_STUB_VERSION, + RPC_X_INVALID_PIPE_OBJECT, + RPC_X_WRONG_PIPE_ORDER, + RPC_X_WRONG_PIPE_VERSION, // = 1832 + RPC_S_GROUP_MEMBER_NOT_FOUND = 1898, + EPT_S_CANT_CREATE, + RPC_S_INVALID_OBJECT, + ERROR_INVALID_TIME, + ERROR_INVALID_FORM_NAME, + ERROR_INVALID_FORM_SIZE, + ERROR_ALREADY_WAITING, + ERROR_PRINTER_DELETED, + ERROR_INVALID_PRINTER_STATE, + ERROR_PASSWORD_MUST_CHANGE, + ERROR_DOMAIN_CONTROLLER_NOT_FOUND, + ERROR_ACCOUNT_LOCKED_OUT, + OR_INVALID_OXID, + OR_INVALID_OID, + OR_INVALID_SET, + RPC_S_SEND_INCOMPLETE, + RPC_S_INVALID_ASYNC_HANDLE, + RPC_S_INVALID_ASYNC_CALL, + RPC_X_PIPE_CLOSED, + RPC_X_PIPE_DISCIPLINE_ERROR, + RPC_X_PIPE_EMPTY, + ERROR_NO_SITENAME, + ERROR_CANT_ACCESS_FILE, + ERROR_CANT_RESOLVE_FILENAME, + RPC_S_ENTRY_TYPE_MISMATCH, + RPC_S_NOT_ALL_OBJS_EXPORTED, + RPC_S_INTERFACE_NOT_EXPORTED, + RPC_S_PROFILE_NOT_ADDED, + RPC_S_PRF_ELT_NOT_ADDED, + RPC_S_PRF_ELT_NOT_REMOVED, + RPC_S_GRP_ELT_NOT_ADDED, + RPC_S_GRP_ELT_NOT_REMOVED, + ERROR_KM_DRIVER_BLOCKED, + ERROR_CONTEXT_EXPIRED, + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED, + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED, + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED, // = 1934 + ERROR_INVALID_PIXEL_FORMAT = 2000, + ERROR_BAD_DRIVER, + ERROR_INVALID_WINDOW_STYLE, + ERROR_METAFILE_NOT_SUPPORTED, + ERROR_TRANSFORM_NOT_SUPPORTED, + ERROR_CLIPPING_NOT_SUPPORTED, // = 2005 + ERROR_INVALID_CMM = 2010, + ERROR_INVALID_PROFILE, + ERROR_TAG_NOT_FOUND, + ERROR_TAG_NOT_PRESENT, + ERROR_DUPLICATE_TAG, + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE, + ERROR_PROFILE_NOT_FOUND, + ERROR_INVALID_COLORSPACE, + ERROR_ICM_NOT_ENABLED, + ERROR_DELETING_ICM_XFORM, + ERROR_INVALID_TRANSFORM, + ERROR_COLORSPACE_MISMATCH, + ERROR_INVALID_COLORINDEX, // = 2022 + ERROR_CONNECTED_OTHER_PASSWORD = 2108, + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT, // = 2109 + ERROR_BAD_USERNAME = 2202, + ERROR_NOT_CONNECTED = 2250, + ERROR_OPEN_FILES = 2401, + ERROR_ACTIVE_CONNECTIONS, // = 2402 + ERROR_DEVICE_IN_USE = 2404, + ERROR_UNKNOWN_PRINT_MONITOR = 3000, + ERROR_PRINTER_DRIVER_IN_USE, + ERROR_SPOOL_FILE_NOT_FOUND, + ERROR_SPL_NO_STARTDOC, + ERROR_SPL_NO_ADDJOB, + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED, + ERROR_PRINT_MONITOR_ALREADY_INSTALLED, + ERROR_INVALID_PRINT_MONITOR, + ERROR_PRINT_MONITOR_IN_USE, + ERROR_PRINTER_HAS_JOBS_QUEUED, + ERROR_SUCCESS_REBOOT_REQUIRED, + ERROR_SUCCESS_RESTART_REQUIRED, + ERROR_PRINTER_NOT_FOUND, + ERROR_PRINTER_DRIVER_WARNED, + ERROR_PRINTER_DRIVER_BLOCKED, // = 3014 + ERROR_WINS_INTERNAL = 4000, + ERROR_CAN_NOT_DEL_LOCAL_WINS, + ERROR_STATIC_INIT, + ERROR_INC_BACKUP, + ERROR_FULL_BACKUP, + ERROR_REC_NON_EXISTENT, + ERROR_RPL_NOT_ALLOWED, // = 4006 + ERROR_DHCP_ADDRESS_CONFLICT = 4100, + ERROR_WMI_GUID_NOT_FOUND = 4200, + ERROR_WMI_INSTANCE_NOT_FOUND, + ERROR_WMI_ITEMID_NOT_FOUND, + ERROR_WMI_TRY_AGAIN, + ERROR_WMI_DP_NOT_FOUND, + ERROR_WMI_UNRESOLVED_INSTANCE_REF, + ERROR_WMI_ALREADY_ENABLED, + ERROR_WMI_GUID_DISCONNECTED, + ERROR_WMI_SERVER_UNAVAILABLE, + ERROR_WMI_DP_FAILED, + ERROR_WMI_INVALID_MOF, + ERROR_WMI_INVALID_REGINFO, + ERROR_WMI_ALREADY_DISABLED, + ERROR_WMI_READ_ONLY, + ERROR_WMI_SET_FAILURE, // = 4214 + ERROR_INVALID_MEDIA = 4300, + ERROR_INVALID_LIBRARY, + ERROR_INVALID_MEDIA_POOL, + ERROR_DRIVE_MEDIA_MISMATCH, + ERROR_MEDIA_OFFLINE, + ERROR_LIBRARY_OFFLINE, + ERROR_EMPTY, + ERROR_NOT_EMPTY, + ERROR_MEDIA_UNAVAILABLE, + ERROR_RESOURCE_DISABLED, + ERROR_INVALID_CLEANER, + ERROR_UNABLE_TO_CLEAN, + ERROR_OBJECT_NOT_FOUND, + ERROR_DATABASE_FAILURE, + ERROR_DATABASE_FULL, + ERROR_MEDIA_INCOMPATIBLE, + ERROR_RESOURCE_NOT_PRESENT, + ERROR_INVALID_OPERATION, + ERROR_MEDIA_NOT_AVAILABLE, + ERROR_DEVICE_NOT_AVAILABLE, + ERROR_REQUEST_REFUSED, + ERROR_INVALID_DRIVE_OBJECT, + ERROR_LIBRARY_FULL, + ERROR_MEDIUM_NOT_ACCESSIBLE, + ERROR_UNABLE_TO_LOAD_MEDIUM, + ERROR_UNABLE_TO_INVENTORY_DRIVE, + ERROR_UNABLE_TO_INVENTORY_SLOT, + ERROR_UNABLE_TO_INVENTORY_TRANSPORT, + ERROR_TRANSPORT_FULL, + ERROR_CONTROLLING_IEPORT, + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA, + ERROR_CLEANER_SLOT_SET, + ERROR_CLEANER_SLOT_NOT_SET, + ERROR_CLEANER_CARTRIDGE_SPENT, + ERROR_UNEXPECTED_OMID, + ERROR_CANT_DELETE_LAST_ITEM, + ERROR_MESSAGE_EXCEEDS_MAX_SIZE, + ERROR_VOLUME_CONTAINS_SYS_FILES, + ERROR_INDIGENOUS_TYPE, + ERROR_NO_SUPPORTING_DRIVES, + ERROR_CLEANER_CARTRIDGE_INSTALLED, // = 4340 + ERROR_FILE_OFFLINE = 4350, + ERROR_REMOTE_STORAGE_NOT_ACTIVE, + ERROR_REMOTE_STORAGE_MEDIA_ERROR, // = 4352 + ERROR_NOT_A_REPARSE_POINT = 4390, + ERROR_REPARSE_ATTRIBUTE_CONFLICT, + ERROR_INVALID_REPARSE_DATA, + ERROR_REPARSE_TAG_INVALID, + ERROR_REPARSE_TAG_MISMATCH, // = 4394 + ERROR_VOLUME_NOT_SIS_ENABLED = 4500, + ERROR_DEPENDENT_RESOURCE_EXISTS = 5001, + ERROR_DEPENDENCY_NOT_FOUND, + ERROR_DEPENDENCY_ALREADY_EXISTS, + ERROR_RESOURCE_NOT_ONLINE, + ERROR_HOST_NODE_NOT_AVAILABLE, + ERROR_RESOURCE_NOT_AVAILABLE, + ERROR_RESOURCE_NOT_FOUND, + ERROR_SHUTDOWN_CLUSTER, + ERROR_CANT_EVICT_ACTIVE_NODE, + ERROR_OBJECT_ALREADY_EXISTS, + ERROR_OBJECT_IN_LIST, + ERROR_GROUP_NOT_AVAILABLE, + ERROR_GROUP_NOT_FOUND, + ERROR_GROUP_NOT_ONLINE, + ERROR_HOST_NODE_NOT_RESOURCE_OWNER, + ERROR_HOST_NODE_NOT_GROUP_OWNER, + ERROR_RESMON_CREATE_FAILED, + ERROR_RESMON_ONLINE_FAILED, + ERROR_RESOURCE_ONLINE, + ERROR_QUORUM_RESOURCE, + ERROR_NOT_QUORUM_CAPABLE, + ERROR_CLUSTER_SHUTTING_DOWN, + ERROR_INVALID_STATE, + ERROR_RESOURCE_PROPERTIES_STORED, + ERROR_NOT_QUORUM_CLASS, + ERROR_CORE_RESOURCE, + ERROR_QUORUM_RESOURCE_ONLINE_FAILED, + ERROR_QUORUMLOG_OPEN_FAILED, + ERROR_CLUSTERLOG_CORRUPT, + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE, + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE, + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND, + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE, + ERROR_QUORUM_OWNER_ALIVE, + ERROR_NETWORK_NOT_AVAILABLE, + ERROR_NODE_NOT_AVAILABLE, + ERROR_ALL_NODES_NOT_AVAILABLE, + ERROR_RESOURCE_FAILED, + ERROR_CLUSTER_INVALID_NODE, + ERROR_CLUSTER_NODE_EXISTS, + ERROR_CLUSTER_JOIN_IN_PROGRESS, + ERROR_CLUSTER_NODE_NOT_FOUND, + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND, + ERROR_CLUSTER_NETWORK_EXISTS, + ERROR_CLUSTER_NETWORK_NOT_FOUND, + ERROR_CLUSTER_NETINTERFACE_EXISTS, + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND, + ERROR_CLUSTER_INVALID_REQUEST, + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER, + ERROR_CLUSTER_NODE_DOWN, + ERROR_CLUSTER_NODE_UNREACHABLE, + ERROR_CLUSTER_NODE_NOT_MEMBER, + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS, + ERROR_CLUSTER_INVALID_NETWORK, // = 5054 + ERROR_CLUSTER_NODE_UP = 5056, + ERROR_CLUSTER_IPADDR_IN_USE, + ERROR_CLUSTER_NODE_NOT_PAUSED, + ERROR_CLUSTER_NO_SECURITY_CONTEXT, + ERROR_CLUSTER_NETWORK_NOT_INTERNAL, + ERROR_CLUSTER_NODE_ALREADY_UP, + ERROR_CLUSTER_NODE_ALREADY_DOWN, + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE, + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE, + ERROR_CLUSTER_NODE_ALREADY_MEMBER, + ERROR_CLUSTER_LAST_INTERNAL_NETWORK, + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS, + ERROR_INVALID_OPERATION_ON_QUORUM, + ERROR_DEPENDENCY_NOT_ALLOWED, + ERROR_CLUSTER_NODE_PAUSED, + ERROR_NODE_CANT_HOST_RESOURCE, + ERROR_CLUSTER_NODE_NOT_READY, + ERROR_CLUSTER_NODE_SHUTTING_DOWN, + ERROR_CLUSTER_JOIN_ABORTED, + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS, + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED, + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED, + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND, + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED, + ERROR_CLUSTER_RESNAME_NOT_FOUND, + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED, + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST, + ERROR_CLUSTER_DATABASE_SEQMISMATCH, + ERROR_RESMON_INVALID_STATE, + ERROR_CLUSTER_GUM_NOT_LOCKER, + ERROR_QUORUM_DISK_NOT_FOUND, + ERROR_DATABASE_BACKUP_CORRUPT, + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT, + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE, // = 5089 + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890, + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND, + ERROR_CLUSTER_MEMBERSHIP_HALT, + ERROR_CLUSTER_INSTANCE_ID_MISMATCH, + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP, + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH, + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP, + ERROR_CLUSTER_PARAMETER_MISMATCH, + ERROR_NODE_CANNOT_BE_CLUSTERED, + ERROR_CLUSTER_WRONG_OS_VERSION, + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME, + ERROR_CLUSCFG_ALREADY_COMMITTED, + ERROR_CLUSCFG_ROLLBACK_FAILED, + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT, + ERROR_CLUSTER_OLD_VERSION, + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME, // = 5905 + ERROR_ENCRYPTION_FAILED = 6000, + ERROR_DECRYPTION_FAILED, + ERROR_FILE_ENCRYPTED, + ERROR_NO_RECOVERY_POLICY, + ERROR_NO_EFS, + ERROR_WRONG_EFS, + ERROR_NO_USER_KEYS, + ERROR_FILE_NOT_ENCRYPTED, + ERROR_NOT_EXPORT_FORMAT, + ERROR_FILE_READ_ONLY, + ERROR_DIR_EFS_DISALLOWED, + ERROR_EFS_SERVER_NOT_TRUSTED, + ERROR_BAD_RECOVERY_POLICY, + ERROR_EFS_ALG_BLOB_TOO_BIG, + ERROR_VOLUME_NOT_SUPPORT_EFS, + ERROR_EFS_DISABLED, + ERROR_EFS_VERSION_NOT_SUPPORT, // = 6016 + ERROR_NO_BROWSER_SERVERS_FOUND = 6118, + SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200, + + ERROR_CTX_WINSTATION_NAME_INVALID = 7001, + ERROR_CTX_INVALID_PD, + ERROR_CTX_PD_NOT_FOUND, + ERROR_CTX_WD_NOT_FOUND, + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY, + ERROR_CTX_SERVICE_NAME_COLLISION, + ERROR_CTX_CLOSE_PENDING, + ERROR_CTX_NO_OUTBUF, + ERROR_CTX_MODEM_INF_NOT_FOUND, + ERROR_CTX_INVALID_MODEMNAME, + ERROR_CTX_MODEM_RESPONSE_ERROR, + ERROR_CTX_MODEM_RESPONSE_TIMEOUT, + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER, + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE, + ERROR_CTX_MODEM_RESPONSE_BUSY, + ERROR_CTX_MODEM_RESPONSE_VOICE, + ERROR_CTX_TD_ERROR, // = 7017 + ERROR_CTX_WINSTATION_NOT_FOUND = 7022, + ERROR_CTX_WINSTATION_ALREADY_EXISTS, + ERROR_CTX_WINSTATION_BUSY, + ERROR_CTX_BAD_VIDEO_MODE, // = 7025 + ERROR_CTX_GRAPHICS_INVALID = 7035, + ERROR_CTX_LOGON_DISABLED = 7037, + ERROR_CTX_NOT_CONSOLE, // = 7038 + ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040, + ERROR_CTX_CONSOLE_DISCONNECT, + ERROR_CTX_CONSOLE_CONNECT, // = 7042 + ERROR_CTX_SHADOW_DENIED = 7044, + ERROR_CTX_WINSTATION_ACCESS_DENIED, // = 7045 + ERROR_CTX_INVALID_WD = 7049, + ERROR_CTX_SHADOW_INVALID, + ERROR_CTX_SHADOW_DISABLED, + ERROR_CTX_CLIENT_LICENSE_IN_USE, + ERROR_CTX_CLIENT_LICENSE_NOT_SET, + ERROR_CTX_LICENSE_NOT_AVAILABLE, + ERROR_CTX_LICENSE_CLIENT_INVALID, + ERROR_CTX_LICENSE_EXPIRED, + ERROR_CTX_SHADOW_NOT_RUNNING, + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE, + ERROR_ACTIVATION_COUNT_EXCEEDED, // = 7059 + + FRS_ERR_INVALID_API_SEQUENCE = 8001, + FRS_ERR_STARTING_SERVICE, + FRS_ERR_STOPPING_SERVICE, + FRS_ERR_INTERNAL_API, + FRS_ERR_INTERNAL, + FRS_ERR_SERVICE_COMM, + FRS_ERR_INSUFFICIENT_PRIV, + FRS_ERR_AUTHENTICATION, + FRS_ERR_PARENT_INSUFFICIENT_PRIV, + FRS_ERR_PARENT_AUTHENTICATION, + FRS_ERR_CHILD_TO_PARENT_COMM, + FRS_ERR_PARENT_TO_CHILD_COMM, + FRS_ERR_SYSVOL_POPULATE, + FRS_ERR_SYSVOL_POPULATE_TIMEOUT, + FRS_ERR_SYSVOL_IS_BUSY, + FRS_ERR_SYSVOL_DEMOTE, + FRS_ERR_INVALID_SERVICE_PARAMETER, // = 8017 + ERROR_DS_NOT_INSTALLED = 8200, + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY, + ERROR_DS_NO_ATTRIBUTE_OR_VALUE, + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX, + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED, + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS, + ERROR_DS_BUSY, + ERROR_DS_UNAVAILABLE, + ERROR_DS_NO_RIDS_ALLOCATED, + ERROR_DS_NO_MORE_RIDS, + ERROR_DS_INCORRECT_ROLE_OWNER, + ERROR_DS_RIDMGR_INIT_ERROR, + ERROR_DS_OBJ_CLASS_VIOLATION, + ERROR_DS_CANT_ON_NON_LEAF, + ERROR_DS_CANT_ON_RDN, + ERROR_DS_CANT_MOD_OBJ_CLASS, + ERROR_DS_CROSS_DOM_MOVE_ERROR, + ERROR_DS_GC_NOT_AVAILABLE, + ERROR_SHARED_POLICY, + ERROR_POLICY_OBJECT_NOT_FOUND, + ERROR_POLICY_ONLY_IN_DS, + ERROR_PROMOTION_ACTIVE, + ERROR_NO_PROMOTION_ACTIVE, // = 8222 + ERROR_DS_OPERATIONS_ERROR = 8224, + ERROR_DS_PROTOCOL_ERROR, + ERROR_DS_TIMELIMIT_EXCEEDED, + ERROR_DS_SIZELIMIT_EXCEEDED, + ERROR_DS_ADMIN_LIMIT_EXCEEDED, + ERROR_DS_COMPARE_FALSE, + ERROR_DS_COMPARE_TRUE, + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED, + ERROR_DS_STRONG_AUTH_REQUIRED, + ERROR_DS_INAPPROPRIATE_AUTH, + ERROR_DS_AUTH_UNKNOWN, + ERROR_DS_REFERRAL, + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION, + ERROR_DS_CONFIDENTIALITY_REQUIRED, + ERROR_DS_INAPPROPRIATE_MATCHING, + ERROR_DS_CONSTRAINT_VIOLATION, + ERROR_DS_NO_SUCH_OBJECT, + ERROR_DS_ALIAS_PROBLEM, + ERROR_DS_INVALID_DN_SYNTAX, + ERROR_DS_IS_LEAF, + ERROR_DS_ALIAS_DEREF_PROBLEM, + ERROR_DS_UNWILLING_TO_PERFORM, + ERROR_DS_LOOP_DETECT, + ERROR_DS_NAMING_VIOLATION, + ERROR_DS_OBJECT_RESULTS_TOO_LARGE, + ERROR_DS_AFFECTS_MULTIPLE_DSAS, + ERROR_DS_SERVER_DOWN, + ERROR_DS_LOCAL_ERROR, + ERROR_DS_ENCODING_ERROR, + ERROR_DS_DECODING_ERROR, + ERROR_DS_FILTER_UNKNOWN, + ERROR_DS_PARAM_ERROR, + ERROR_DS_NOT_SUPPORTED, + ERROR_DS_NO_RESULTS_RETURNED, + ERROR_DS_CONTROL_NOT_FOUND, + ERROR_DS_CLIENT_LOOP, + ERROR_DS_REFERRAL_LIMIT_EXCEEDED, + ERROR_DS_SORT_CONTROL_MISSING, + ERROR_DS_OFFSET_RANGE_ERROR, // = 8262 + ERROR_DS_ROOT_MUST_BE_NC = 8301, + ERROR_DS_ADD_REPLICA_INHIBITED, + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA, + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED, + ERROR_DS_OBJ_STRING_NAME_EXISTS, + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA, + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA, + ERROR_DS_NO_REQUESTED_ATTS_FOUND, + ERROR_DS_USER_BUFFER_TO_SMALL, + ERROR_DS_ATT_IS_NOT_ON_OBJ, + ERROR_DS_ILLEGAL_MOD_OPERATION, + ERROR_DS_OBJ_TOO_LARGE, + ERROR_DS_BAD_INSTANCE_TYPE, + ERROR_DS_MASTERDSA_REQUIRED, + ERROR_DS_OBJECT_CLASS_REQUIRED, + ERROR_DS_MISSING_REQUIRED_ATT, + ERROR_DS_ATT_NOT_DEF_FOR_CLASS, + ERROR_DS_ATT_ALREADY_EXISTS, // = 8318 + ERROR_DS_CANT_ADD_ATT_VALUES = 8320, + ERROR_DS_SINGLE_VALUE_CONSTRAINT, + ERROR_DS_RANGE_CONSTRAINT, + ERROR_DS_ATT_VAL_ALREADY_EXISTS, + ERROR_DS_CANT_REM_MISSING_ATT, + ERROR_DS_CANT_REM_MISSING_ATT_VAL, + ERROR_DS_ROOT_CANT_BE_SUBREF, + ERROR_DS_NO_CHAINING, + ERROR_DS_NO_CHAINED_EVAL, + ERROR_DS_NO_PARENT_OBJECT, + ERROR_DS_PARENT_IS_AN_ALIAS, + ERROR_DS_CANT_MIX_MASTER_AND_REPS, + ERROR_DS_CHILDREN_EXIST, + ERROR_DS_OBJ_NOT_FOUND, + ERROR_DS_ALIASED_OBJ_MISSING, + ERROR_DS_BAD_NAME_SYNTAX, + ERROR_DS_ALIAS_POINTS_TO_ALIAS, + ERROR_DS_CANT_DEREF_ALIAS, + ERROR_DS_OUT_OF_SCOPE, + ERROR_DS_OBJECT_BEING_REMOVED, + ERROR_DS_CANT_DELETE_DSA_OBJ, + ERROR_DS_GENERIC_ERROR, + ERROR_DS_DSA_MUST_BE_INT_MASTER, + ERROR_DS_CLASS_NOT_DSA, + ERROR_DS_INSUFF_ACCESS_RIGHTS, + ERROR_DS_ILLEGAL_SUPERIOR, + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM, + ERROR_DS_NAME_TOO_MANY_PARTS, + ERROR_DS_NAME_TOO_LONG, + ERROR_DS_NAME_VALUE_TOO_LONG, + ERROR_DS_NAME_UNPARSEABLE, + ERROR_DS_NAME_TYPE_UNKNOWN, + ERROR_DS_NOT_AN_OBJECT, + ERROR_DS_SEC_DESC_TOO_SHORT, + ERROR_DS_SEC_DESC_INVALID, + ERROR_DS_NO_DELETED_NAME, + ERROR_DS_SUBREF_MUST_HAVE_PARENT, + ERROR_DS_NCNAME_MUST_BE_NC, + ERROR_DS_CANT_ADD_SYSTEM_ONLY, + ERROR_DS_CLASS_MUST_BE_CONCRETE, + ERROR_DS_INVALID_DMD, + ERROR_DS_OBJ_GUID_EXISTS, + ERROR_DS_NOT_ON_BACKLINK, + ERROR_DS_NO_CROSSREF_FOR_NC, + ERROR_DS_SHUTTING_DOWN, + ERROR_DS_UNKNOWN_OPERATION, + ERROR_DS_INVALID_ROLE_OWNER, + ERROR_DS_COULDNT_CONTACT_FSMO, + ERROR_DS_CROSS_NC_DN_RENAME, + ERROR_DS_CANT_MOD_SYSTEM_ONLY, + ERROR_DS_REPLICATOR_ONLY, + ERROR_DS_OBJ_CLASS_NOT_DEFINED, + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS, + ERROR_DS_NAME_REFERENCE_INVALID, + ERROR_DS_CROSS_REF_EXISTS, + ERROR_DS_CANT_DEL_MASTER_CROSSREF, + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD, + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX, + ERROR_DS_DUP_RDN, + ERROR_DS_DUP_OID, + ERROR_DS_DUP_MAPI_ID, + ERROR_DS_DUP_SCHEMA_ID_GUID, + ERROR_DS_DUP_LDAP_DISPLAY_NAME, + ERROR_DS_SEMANTIC_ATT_TEST, + ERROR_DS_SYNTAX_MISMATCH, + ERROR_DS_EXISTS_IN_MUST_HAVE, + ERROR_DS_EXISTS_IN_MAY_HAVE, + ERROR_DS_NONEXISTENT_MAY_HAVE, + ERROR_DS_NONEXISTENT_MUST_HAVE, + ERROR_DS_AUX_CLS_TEST_FAIL, + ERROR_DS_NONEXISTENT_POSS_SUP, + ERROR_DS_SUB_CLS_TEST_FAIL, + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX, + ERROR_DS_EXISTS_IN_AUX_CLS, + ERROR_DS_EXISTS_IN_SUB_CLS, + ERROR_DS_EXISTS_IN_POSS_SUP, + ERROR_DS_RECALCSCHEMA_FAILED, + ERROR_DS_TREE_DELETE_NOT_FINISHED, + ERROR_DS_CANT_DELETE, + ERROR_DS_ATT_SCHEMA_REQ_ID, + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX, + ERROR_DS_CANT_CACHE_ATT, + ERROR_DS_CANT_CACHE_CLASS, + ERROR_DS_CANT_REMOVE_ATT_CACHE, + ERROR_DS_CANT_REMOVE_CLASS_CACHE, + ERROR_DS_CANT_RETRIEVE_DN, + ERROR_DS_MISSING_SUPREF, + ERROR_DS_CANT_RETRIEVE_INSTANCE, + ERROR_DS_CODE_INCONSISTENCY, + ERROR_DS_DATABASE_ERROR, + ERROR_DS_GOVERNSID_MISSING, + ERROR_DS_MISSING_EXPECTED_ATT, + ERROR_DS_NCNAME_MISSING_CR_REF, + ERROR_DS_SECURITY_CHECKING_ERROR, + ERROR_DS_SCHEMA_NOT_LOADED, + ERROR_DS_SCHEMA_ALLOC_FAILED, + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX, + ERROR_DS_GCVERIFY_ERROR, + ERROR_DS_DRA_SCHEMA_MISMATCH, + ERROR_DS_CANT_FIND_DSA_OBJ, + ERROR_DS_CANT_FIND_EXPECTED_NC, + ERROR_DS_CANT_FIND_NC_IN_CACHE, + ERROR_DS_CANT_RETRIEVE_CHILD, + ERROR_DS_SECURITY_ILLEGAL_MODIFY, + ERROR_DS_CANT_REPLACE_HIDDEN_REC, + ERROR_DS_BAD_HIERARCHY_FILE, + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED, + ERROR_DS_CONFIG_PARAM_MISSING, + ERROR_DS_COUNTING_AB_INDICES_FAILED, + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED, + ERROR_DS_INTERNAL_FAILURE, + ERROR_DS_UNKNOWN_ERROR, + ERROR_DS_ROOT_REQUIRES_CLASS_TOP, + ERROR_DS_REFUSING_FSMO_ROLES, + ERROR_DS_MISSING_FSMO_SETTINGS, + ERROR_DS_UNABLE_TO_SURRENDER_ROLES, + ERROR_DS_DRA_GENERIC, + ERROR_DS_DRA_INVALID_PARAMETER, + ERROR_DS_DRA_BUSY, + ERROR_DS_DRA_BAD_DN, + ERROR_DS_DRA_BAD_NC, + ERROR_DS_DRA_DN_EXISTS, + ERROR_DS_DRA_INTERNAL_ERROR, + ERROR_DS_DRA_INCONSISTENT_DIT, + ERROR_DS_DRA_CONNECTION_FAILED, + ERROR_DS_DRA_BAD_INSTANCE_TYPE, + ERROR_DS_DRA_OUT_OF_MEM, + ERROR_DS_DRA_MAIL_PROBLEM, + ERROR_DS_DRA_REF_ALREADY_EXISTS, + ERROR_DS_DRA_REF_NOT_FOUND, + ERROR_DS_DRA_OBJ_IS_REP_SOURCE, + ERROR_DS_DRA_DB_ERROR, + ERROR_DS_DRA_NO_REPLICA, + ERROR_DS_DRA_ACCESS_DENIED, + ERROR_DS_DRA_NOT_SUPPORTED, + ERROR_DS_DRA_RPC_CANCELLED, + ERROR_DS_DRA_SOURCE_DISABLED, + ERROR_DS_DRA_SINK_DISABLED, + ERROR_DS_DRA_NAME_COLLISION, + ERROR_DS_DRA_SOURCE_REINSTALLED, + ERROR_DS_DRA_MISSING_PARENT, + ERROR_DS_DRA_PREEMPTED, + ERROR_DS_DRA_ABANDON_SYNC, + ERROR_DS_DRA_SHUTDOWN, + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET, + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA, + ERROR_DS_DRA_EXTN_CONNECTION_FAILED, + ERROR_DS_INSTALL_SCHEMA_MISMATCH, + ERROR_DS_DUP_LINK_ID, + ERROR_DS_NAME_ERROR_RESOLVING, + ERROR_DS_NAME_ERROR_NOT_FOUND, + ERROR_DS_NAME_ERROR_NOT_UNIQUE, + ERROR_DS_NAME_ERROR_NO_MAPPING, + ERROR_DS_NAME_ERROR_DOMAIN_ONLY, + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING, + ERROR_DS_CONSTRUCTED_ATT_MOD, + ERROR_DS_WRONG_OM_OBJ_CLASS, + ERROR_DS_DRA_REPL_PENDING, + ERROR_DS_DS_REQUIRED, + ERROR_DS_INVALID_LDAP_DISPLAY_NAME, + ERROR_DS_NON_BASE_SEARCH, + ERROR_DS_CANT_RETRIEVE_ATTS, + ERROR_DS_BACKLINK_WITHOUT_LINK, + ERROR_DS_EPOCH_MISMATCH, + ERROR_DS_SRC_NAME_MISMATCH, + ERROR_DS_SRC_AND_DST_NC_IDENTICAL, + ERROR_DS_DST_NC_MISMATCH, + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC, + ERROR_DS_SRC_GUID_MISMATCH, + ERROR_DS_CANT_MOVE_DELETED_OBJECT, + ERROR_DS_PDC_OPERATION_IN_PROGRESS, + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD, + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION, + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS, + ERROR_DS_NC_MUST_HAVE_NC_PARENT, + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE, + ERROR_DS_DST_DOMAIN_NOT_NATIVE, + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER, + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP, + ERROR_DS_CANT_MOVE_RESOURCE_GROUP, + ERROR_DS_INVALID_SEARCH_FLAG, + ERROR_DS_NO_TREE_DELETE_ABOVE_NC, + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE, + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE, + ERROR_DS_SAM_INIT_FAILURE, + ERROR_DS_SENSITIVE_GROUP_VIOLATION, + ERROR_DS_CANT_MOD_PRIMARYGROUPID, + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD, + ERROR_DS_NONSAFE_SCHEMA_CHANGE, + ERROR_DS_SCHEMA_UPDATE_DISALLOWED, + ERROR_DS_CANT_CREATE_UNDER_SCHEMA, + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION, + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE, + ERROR_DS_INVALID_GROUP_TYPE, + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN, + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN, + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER, + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER, + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER, + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER, + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER, + ERROR_DS_HAVE_PRIMARY_MEMBERS, + ERROR_DS_STRING_SD_CONVERSION_FAILED, + ERROR_DS_NAMING_MASTER_GC, + ERROR_DS_LOOKUP_FAILURE, + ERROR_DS_COULDNT_UPDATE_SPNS, + ERROR_DS_CANT_RETRIEVE_SD, + ERROR_DS_KEY_NOT_UNIQUE, + ERROR_DS_WRONG_LINKED_ATT_SYNTAX, + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD, + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY, + ERROR_DS_CANT_START, + ERROR_DS_INIT_FAILURE, + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION, + ERROR_DS_SOURCE_DOMAIN_IN_FOREST, + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST, + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED, + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN, + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER, + ERROR_DS_SRC_SID_EXISTS_IN_FOREST, + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH, + ERROR_SAM_INIT_FAILURE, + ERROR_DS_DRA_SCHEMA_INFO_SHIP, + ERROR_DS_DRA_SCHEMA_CONFLICT, + ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT, + ERROR_DS_DRA_OBJ_NC_MISMATCH, + ERROR_DS_NC_STILL_HAS_DSAS, + ERROR_DS_GC_REQUIRED, + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY, + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS, + ERROR_DS_CANT_ADD_TO_GC, + ERROR_DS_NO_CHECKPOINT_WITH_PDC, + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED, + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC, + ERROR_DS_INVALID_NAME_FOR_SPN, + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS, + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES, + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED, + ERROR_DS_MUST_BE_RUN_ON_DST_DC, + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER, + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ, + ERROR_DS_INIT_FAILURE_CONSOLE, + ERROR_DS_SAM_INIT_FAILURE_CONSOLE, + ERROR_DS_FOREST_VERSION_TOO_HIGH, + ERROR_DS_DOMAIN_VERSION_TOO_HIGH, + ERROR_DS_FOREST_VERSION_TOO_LOW, + ERROR_DS_DOMAIN_VERSION_TOO_LOW, + ERROR_DS_INCOMPATIBLE_VERSION, + ERROR_DS_LOW_DSA_VERSION, + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN, + ERROR_DS_NOT_SUPPORTED_SORT_ORDER, + ERROR_DS_NAME_NOT_UNIQUE, + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4, + ERROR_DS_OUT_OF_VERSION_STORE, + ERROR_DS_INCOMPATIBLE_CONTROLS_USED, + ERROR_DS_NO_REF_DOMAIN, + ERROR_DS_RESERVED_LINK_ID, + ERROR_DS_LINK_ID_NOT_AVAILABLE, + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER, + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE, + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC, + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG, + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT, + ERROR_DS_NAME_ERROR_TRUST_REFERRAL, + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER, + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD, + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2, + ERROR_DS_THREAD_LIMIT_EXCEEDED, + ERROR_DS_NOT_CLOSEST, + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF, + ERROR_DS_SINGLE_USER_MODE_FAILED, + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR, + ERROR_DS_NTDSCRIPT_PROCESS_ERROR, + ERROR_DS_DIFFERENT_REPL_EPOCHS, + ERROR_DS_DRS_EXTENSIONS_CHANGED, + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR, + ERROR_DS_NO_MSDS_INTID, + ERROR_DS_DUP_MSDS_INTID, + ERROR_DS_EXISTS_IN_RDNATTID, + ERROR_DS_AUTHORIZATION_FAILED, + ERROR_DS_INVALID_SCRIPT, + ERROR_DS_REMOTE_CROSSREF_OP_FAILED, + ERROR_DS_CROSS_REF_BUSY, + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN, + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC, + ERROR_DS_DUPLICATE_ID_FOUND, + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT, + ERROR_DS_GROUP_CONVERSION_ERROR, + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP, + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP, + ERROR_DS_ROLE_NOT_VERIFIED, + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL, + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS, + ERROR_DS_EXISTING_AD_CHILD_NC, // = 8613 + DNS_ERROR_RCODE_FORMAT_ERROR = 9001, + DNS_ERROR_RCODE_SERVER_FAILURE, + DNS_ERROR_RCODE_NAME_ERROR, + DNS_ERROR_RCODE_NOT_IMPLEMENTED, + DNS_ERROR_RCODE_REFUSED, + DNS_ERROR_RCODE_YXDOMAIN, + DNS_ERROR_RCODE_YXRRSET, + DNS_ERROR_RCODE_NXRRSET, + DNS_ERROR_RCODE_NOTAUTH, + DNS_ERROR_RCODE_NOTZONE, // = 9010 + DNS_ERROR_RCODE_BADSIG = 9016, + DNS_ERROR_RCODE_BADKEY, + DNS_ERROR_RCODE_BADTIME, // = 9018 + DNS_INFO_NO_RECORDS = 9501, + DNS_ERROR_BAD_PACKET, + DNS_ERROR_NO_PACKET, + DNS_ERROR_RCODE, + DNS_ERROR_UNSECURE_PACKET, // = 9505 + DNS_ERROR_INVALID_TYPE = 9551, + DNS_ERROR_INVALID_IP_ADDRESS, + DNS_ERROR_INVALID_PROPERTY, + DNS_ERROR_TRY_AGAIN_LATER, + DNS_ERROR_NOT_UNIQUE, + DNS_ERROR_NON_RFC_NAME, + DNS_STATUS_FQDN, + DNS_STATUS_DOTTED_NAME, + DNS_STATUS_SINGLE_PART_NAME, + DNS_ERROR_INVALID_NAME_CHAR, + DNS_ERROR_NUMERIC_NAME, + DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER, + DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION, + DNS_ERROR_CANNOT_FIND_ROOT_HINTS, + DNS_ERROR_INCONSISTENT_ROOT_HINTS, // = 9565 + DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601, + DNS_ERROR_NO_ZONE_INFO, + DNS_ERROR_INVALID_ZONE_OPERATION, + DNS_ERROR_ZONE_CONFIGURATION_ERROR, + DNS_ERROR_ZONE_HAS_NO_SOA_RECORD, + DNS_ERROR_ZONE_HAS_NO_NS_RECORDS, + DNS_ERROR_ZONE_LOCKED, + DNS_ERROR_ZONE_CREATION_FAILED, + DNS_ERROR_ZONE_ALREADY_EXISTS, + DNS_ERROR_AUTOZONE_ALREADY_EXISTS, + DNS_ERROR_INVALID_ZONE_TYPE, + DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP, + DNS_ERROR_ZONE_NOT_SECONDARY, + DNS_ERROR_NEED_SECONDARY_ADDRESSES, + DNS_ERROR_WINS_INIT_FAILED, + DNS_ERROR_NEED_WINS_SERVERS, + DNS_ERROR_NBSTAT_INIT_FAILED, + DNS_ERROR_SOA_DELETE_INVALID, + DNS_ERROR_FORWARDER_ALREADY_EXISTS, + DNS_ERROR_ZONE_REQUIRES_MASTER_IP, + DNS_ERROR_ZONE_IS_SHUTDOWN, // = 9621 + DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651, + DNS_ERROR_INVALID_DATAFILE_NAME, + DNS_ERROR_DATAFILE_OPEN_FAILURE, + DNS_ERROR_FILE_WRITEBACK_FAILED, + DNS_ERROR_DATAFILE_PARSING, // = 9655 + DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701, + DNS_ERROR_RECORD_FORMAT, + DNS_ERROR_NODE_CREATION_FAILED, + DNS_ERROR_UNKNOWN_RECORD_TYPE, + DNS_ERROR_RECORD_TIMED_OUT, + DNS_ERROR_NAME_NOT_IN_ZONE, + DNS_ERROR_CNAME_LOOP, + DNS_ERROR_NODE_IS_CNAME, + DNS_ERROR_CNAME_COLLISION, + DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT, + DNS_ERROR_RECORD_ALREADY_EXISTS, + DNS_ERROR_SECONDARY_DATA, + DNS_ERROR_NO_CREATE_CACHE_DATA, + DNS_ERROR_NAME_DOES_NOT_EXIST, + DNS_WARNING_PTR_CREATE_FAILED, + DNS_WARNING_DOMAIN_UNDELETED, + DNS_ERROR_DS_UNAVAILABLE, + DNS_ERROR_DS_ZONE_ALREADY_EXISTS, + DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE, // = 9719 + DNS_INFO_AXFR_COMPLETE = 9751, + DNS_ERROR_AXFR, + DNS_INFO_ADDED_LOCAL_WINS, // = 9753 + DNS_STATUS_CONTINUE_NEEDED = 9801, + DNS_ERROR_NO_TCPIP = 9851, + DNS_ERROR_NO_DNS_SERVERS, // = 9852 + DNS_ERROR_DP_DOES_NOT_EXIST = 9901, + DNS_ERROR_DP_ALREADY_EXISTS, + DNS_ERROR_DP_NOT_ENLISTED, + DNS_ERROR_DP_ALREADY_ENLISTED, + DNS_ERROR_DP_NOT_AVAILABLE, // = 9905 + +/+ already in winsock2.d defined! + + WSABASEERR = 10000, + WSAEINTR = 10004, + WSAEBADF = 10009, + WSAEACCES = 10013, + WSAEFAULT, // = 10014 + WSAEINVAL = 10022, + WSAEMFILE = 10024, + WSAEWOULDBLOCK = 10035, + WSAEINPROGRESS, + WSAEALREADY, + WSAENOTSOCK, + WSAEDESTADDRREQ, + WSAEMSGSIZE, + WSAEPROTOTYPE, + WSAENOPROTOOPT, + WSAEPROTONOSUPPORT, + WSAESOCKTNOSUPPORT, + WSAEOPNOTSUPP, + WSAEPFNOSUPPORT, + WSAEAFNOSUPPORT, + WSAEADDRINUSE, + WSAEADDRNOTAVAIL, + WSAENETDOWN, + WSAENETUNREACH, + WSAENETRESET, + WSAECONNABORTED, + WSAECONNRESET, + WSAENOBUFS, + WSAEISCONN, + WSAENOTCONN, + WSAESHUTDOWN, + WSAETOOMANYREFS, + WSAETIMEDOUT, + WSAECONNREFUSED, + WSAELOOP, + WSAENAMETOOLONG, + WSAEHOSTDOWN, + WSAEHOSTUNREACH, + WSAENOTEMPTY, + WSAEPROCLIM, + WSAEUSERS, + WSAEDQUOT, + WSAESTALE, + WSAEREMOTE, // = 10071 + WSASYSNOTREADY = 10091, + WSAVERNOTSUPPORTED, + WSANOTINITIALISED, // = 10093 + WSAEDISCON = 10101, + WSAENOMORE, + WSAECANCELLED, + WSAEINVALIDPROCTABLE, + WSAEINVALIDPROVIDER, + WSAEPROVIDERFAILEDINIT, + WSASYSCALLFAILURE, + WSASERVICE_NOT_FOUND, + WSATYPE_NOT_FOUND, + WSA_E_NO_MORE, + WSA_E_CANCELLED, + WSAEREFUSED, // = 10112 + WSAHOST_NOT_FOUND = 11001, + WSATRY_AGAIN, + WSANO_RECOVERY, + WSANO_DATA, + WSA_QOS_RECEIVERS, + WSA_QOS_SENDERS, + WSA_QOS_NO_SENDERS, + WSA_QOS_NO_RECEIVERS, + WSA_QOS_REQUEST_CONFIRMED, + WSA_QOS_ADMISSION_FAILURE, + WSA_QOS_POLICY_FAILURE, + WSA_QOS_BAD_STYLE, + WSA_QOS_BAD_OBJECT, + WSA_QOS_TRAFFIC_CTRL_ERROR, + WSA_QOS_GENERIC_ERROR, + WSA_QOS_ESERVICETYPE, + WSA_QOS_EFLOWSPEC, + WSA_QOS_EPROVSPECBUF, + WSA_QOS_EFILTERSTYLE, + WSA_QOS_EFILTERTYPE, + WSA_QOS_EFILTERCOUNT, + WSA_QOS_EOBJLENGTH, + WSA_QOS_EFLOWCOUNT, + WSA_QOS_EUNKNOWNPSOBJ, + WSA_QOS_EPOLICYOBJ, + WSA_QOS_EFLOWDESC, + WSA_QOS_EPSFLOWSPEC, + WSA_QOS_EPSFILTERSPEC, + WSA_QOS_ESDMODEOBJ, + WSA_QOS_ESHAPERATEOBJ, + WSA_QOS_RESERVED_PETYPE, // = 11031 + ++/ + + ERROR_IPSEC_QM_POLICY_EXISTS = 13000, + ERROR_IPSEC_QM_POLICY_NOT_FOUND, + ERROR_IPSEC_QM_POLICY_IN_USE, + ERROR_IPSEC_MM_POLICY_EXISTS, + ERROR_IPSEC_MM_POLICY_NOT_FOUND, + ERROR_IPSEC_MM_POLICY_IN_USE, + ERROR_IPSEC_MM_FILTER_EXISTS, + ERROR_IPSEC_MM_FILTER_NOT_FOUND, + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS, + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND, + ERROR_IPSEC_MM_AUTH_EXISTS, + ERROR_IPSEC_MM_AUTH_NOT_FOUND, + ERROR_IPSEC_MM_AUTH_IN_USE, + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND, + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND, + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND, + ERROR_IPSEC_TUNNEL_FILTER_EXISTS, + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND, + ERROR_IPSEC_MM_FILTER_PENDING_DELETION, + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION, + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION, + ERROR_IPSEC_MM_POLICY_PENDING_DELETION, + ERROR_IPSEC_MM_AUTH_PENDING_DELETION, + ERROR_IPSEC_QM_POLICY_PENDING_DELETION, + WARNING_IPSEC_MM_POLICY_PRUNED, + WARNING_IPSEC_QM_POLICY_PRUNED, // = 13025 + ERROR_IPSEC_IKE_AUTH_FAIL = 13801, + ERROR_IPSEC_IKE_ATTRIB_FAIL, + ERROR_IPSEC_IKE_NEGOTIATION_PENDING, + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR, + ERROR_IPSEC_IKE_TIMED_OUT, + ERROR_IPSEC_IKE_NO_CERT, + ERROR_IPSEC_IKE_SA_DELETED, + ERROR_IPSEC_IKE_SA_REAPED, + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP, + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP, + ERROR_IPSEC_IKE_QUEUE_DROP_MM, + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM, + ERROR_IPSEC_IKE_DROP_NO_RESPONSE, + ERROR_IPSEC_IKE_MM_DELAY_DROP, + ERROR_IPSEC_IKE_QM_DELAY_DROP, + ERROR_IPSEC_IKE_ERROR, + ERROR_IPSEC_IKE_CRL_FAILED, + ERROR_IPSEC_IKE_INVALID_KEY_USAGE, + ERROR_IPSEC_IKE_INVALID_CERT_TYPE, + ERROR_IPSEC_IKE_NO_PRIVATE_KEY, // = 13820 + ERROR_IPSEC_IKE_DH_FAIL = 13822, + ERROR_IPSEC_IKE_INVALID_HEADER = 13824, + ERROR_IPSEC_IKE_NO_POLICY, + ERROR_IPSEC_IKE_INVALID_SIGNATURE, + ERROR_IPSEC_IKE_KERBEROS_ERROR, + ERROR_IPSEC_IKE_NO_PUBLIC_KEY, + ERROR_IPSEC_IKE_PROCESS_ERR, + ERROR_IPSEC_IKE_PROCESS_ERR_SA, + ERROR_IPSEC_IKE_PROCESS_ERR_PROP, + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS, + ERROR_IPSEC_IKE_PROCESS_ERR_KE, + ERROR_IPSEC_IKE_PROCESS_ERR_ID, + ERROR_IPSEC_IKE_PROCESS_ERR_CERT, + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ, + ERROR_IPSEC_IKE_PROCESS_ERR_HASH, + ERROR_IPSEC_IKE_PROCESS_ERR_SIG, + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE, + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY, + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE, + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR, + ERROR_IPSEC_IKE_INVALID_PAYLOAD, + ERROR_IPSEC_IKE_LOAD_SOFT_SA, + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN, + ERROR_IPSEC_IKE_INVALID_COOKIE, + ERROR_IPSEC_IKE_NO_PEER_CERT, + ERROR_IPSEC_IKE_PEER_CRL_FAILED, + ERROR_IPSEC_IKE_POLICY_CHANGE, + ERROR_IPSEC_IKE_NO_MM_POLICY, + ERROR_IPSEC_IKE_NOTCBPRIV, + ERROR_IPSEC_IKE_SECLOADFAIL, + ERROR_IPSEC_IKE_FAILSSPINIT, + ERROR_IPSEC_IKE_FAILQUERYSSP, + ERROR_IPSEC_IKE_SRVACQFAIL, + ERROR_IPSEC_IKE_SRVQUERYCRED, + ERROR_IPSEC_IKE_GETSPIFAIL, + ERROR_IPSEC_IKE_INVALID_FILTER, + ERROR_IPSEC_IKE_OUT_OF_MEMORY, + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED, + ERROR_IPSEC_IKE_INVALID_POLICY, + ERROR_IPSEC_IKE_UNKNOWN_DOI, + ERROR_IPSEC_IKE_INVALID_SITUATION, + ERROR_IPSEC_IKE_DH_FAILURE, + ERROR_IPSEC_IKE_INVALID_GROUP, + ERROR_IPSEC_IKE_ENCRYPT, + ERROR_IPSEC_IKE_DECRYPT, + ERROR_IPSEC_IKE_POLICY_MATCH, + ERROR_IPSEC_IKE_UNSUPPORTED_ID, + ERROR_IPSEC_IKE_INVALID_HASH, + ERROR_IPSEC_IKE_INVALID_HASH_ALG, + ERROR_IPSEC_IKE_INVALID_HASH_SIZE, + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG, + ERROR_IPSEC_IKE_INVALID_AUTH_ALG, + ERROR_IPSEC_IKE_INVALID_SIG, + ERROR_IPSEC_IKE_LOAD_FAILED, + ERROR_IPSEC_IKE_RPC_DELETE, + ERROR_IPSEC_IKE_BENIGN_REINIT, + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY, // = 13879 + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881, + ERROR_IPSEC_IKE_MM_LIMIT, + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED, + ERROR_IPSEC_IKE_NEG_STATUS_END, + ERROR_SXS_SECTION_NOT_FOUND, + ERROR_SXS_CANT_GEN_ACTCTX, + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT, + ERROR_SXS_ASSEMBLY_NOT_FOUND, + ERROR_SXS_MANIFEST_FORMAT_ERROR, + ERROR_SXS_MANIFEST_PARSE_ERROR, + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED, + ERROR_SXS_KEY_NOT_FOUND, + ERROR_SXS_VERSION_CONFLICT, + ERROR_SXS_WRONG_SECTION_TYPE, + ERROR_SXS_THREAD_QUERIES_DISABLED, + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET, + ERROR_SXS_UNKNOWN_ENCODING_GROUP, + ERROR_SXS_UNKNOWN_ENCODING, + ERROR_SXS_INVALID_XML_NAMESPACE_URI, + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED, + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED, + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE, + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE, + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE, + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT, + ERROR_SXS_DUPLICATE_DLL_NAME, + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME, + ERROR_SXS_DUPLICATE_CLSID, + ERROR_SXS_DUPLICATE_IID, + ERROR_SXS_DUPLICATE_TLBID, + ERROR_SXS_DUPLICATE_PROGID, + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME, + ERROR_SXS_FILE_HASH_MISMATCH, + ERROR_SXS_POLICY_PARSE_ERROR, + ERROR_SXS_XML_E_MISSINGQUOTE, + ERROR_SXS_XML_E_COMMENTSYNTAX, + ERROR_SXS_XML_E_BADSTARTNAMECHAR, + ERROR_SXS_XML_E_BADNAMECHAR, + ERROR_SXS_XML_E_BADCHARINSTRING, + ERROR_SXS_XML_E_XMLDECLSYNTAX, + ERROR_SXS_XML_E_BADCHARDATA, + ERROR_SXS_XML_E_MISSINGWHITESPACE, + ERROR_SXS_XML_E_EXPECTINGTAGEND, + ERROR_SXS_XML_E_MISSINGSEMICOLON, + ERROR_SXS_XML_E_UNBALANCEDPAREN, + ERROR_SXS_XML_E_INTERNALERROR, + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE, + ERROR_SXS_XML_E_INCOMPLETE_ENCODING, + ERROR_SXS_XML_E_MISSING_PAREN, + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE, + ERROR_SXS_XML_E_MULTIPLE_COLONS, + ERROR_SXS_XML_E_INVALID_DECIMAL, + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL, + ERROR_SXS_XML_E_INVALID_UNICODE, + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK, + ERROR_SXS_XML_E_UNEXPECTEDENDTAG, + ERROR_SXS_XML_E_UNCLOSEDTAG, + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE, + ERROR_SXS_XML_E_MULTIPLEROOTS, + ERROR_SXS_XML_E_INVALIDATROOTLEVEL, + ERROR_SXS_XML_E_BADXMLDECL, + ERROR_SXS_XML_E_MISSINGROOT, + ERROR_SXS_XML_E_UNEXPECTEDEOF, + ERROR_SXS_XML_E_BADPEREFINSUBSET, + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG, + ERROR_SXS_XML_E_UNCLOSEDENDTAG, + ERROR_SXS_XML_E_UNCLOSEDSTRING, + ERROR_SXS_XML_E_UNCLOSEDCOMMENT, + ERROR_SXS_XML_E_UNCLOSEDDECL, + ERROR_SXS_XML_E_UNCLOSEDCDATA, + ERROR_SXS_XML_E_RESERVEDNAMESPACE, + ERROR_SXS_XML_E_INVALIDENCODING, + ERROR_SXS_XML_E_INVALIDSWITCH, + ERROR_SXS_XML_E_BADXMLCASE, + ERROR_SXS_XML_E_INVALID_STANDALONE, + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE, + ERROR_SXS_XML_E_INVALID_VERSION, + ERROR_SXS_XML_E_MISSINGEQUALS, + ERROR_SXS_PROTECTION_RECOVERY_FAILED, + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT, + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID, + ERROR_SXS_UNTRANSLATABLE_HRESULT, + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING, + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE, + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME // = 14080 +} + +enum : HRESULT { + S_OK = 0x00000000, + S_FALSE = 0x00000001, + + NOERROR = 0x00000000, + + E_PENDING = 0x8000000A, + E_NOTIMPL = 0x80004001, + E_NOINTERFACE = 0x80004002, + E_POINTER = 0x80004003, + E_ABORT = 0x80004004, + E_FAIL = 0x80004005, + E_ACCESSDENIED = 0x80070005, + E_HANDLE = 0x80070006, + E_OUTOFMEMORY = 0x8007000E, + E_INVALIDARG = 0x80070057, + E_UNEXPECTED = 0x8000FFFF, + + CO_E_INIT_TLS = 0x80004006, + CO_E_INIT_SHARED_ALLOCATOR = 0x80004007, + CO_E_INIT_MEMORY_ALLOCATOR = 0x80004008, + CO_E_INIT_CLASS_CACHE = 0x80004009, + CO_E_INIT_RPC_CHANNEL = 0x8000400A, + CO_E_INIT_TLS_SET_CHANNEL_CONTROL = 0x8000400B, + CO_E_INIT_TLS_CHANNEL_CONTROL = 0x8000400C, + CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = 0x8000400D, + CO_E_INIT_SCM_MUTEX_EXISTS = 0x8000400E, + CO_E_INIT_SCM_FILE_MAPPING_EXISTS = 0x8000400F, + CO_E_INIT_SCM_MAP_VIEW_OF_FILE = 0x80004010, + CO_E_INIT_SCM_EXEC_FAILURE = 0x80004011, + CO_E_INIT_ONLY_SINGLE_THREADED = 0x80004012, + + RPC_E_CALL_REJECTED = 0x80010001, + RPC_E_CALL_CANCELED = 0x80010002, + RPC_E_CANTPOST_INSENDCALL = 0x80010003, + RPC_E_CANTCALLOUT_INASYNCCALL = 0x80010004, + RPC_E_CANTCALLOUT_INEXTERNALCALL = 0x80010005, + RPC_E_CONNECTION_TERMINATED = 0x80010006, + RPC_E_SERVER_DIED = 0x80010007, + RPC_E_CLIENT_DIED = 0x80010008, + RPC_E_INVALID_DATAPACKET = 0x80010009, + RPC_E_CANTTRANSMIT_CALL = 0x8001000A, + RPC_E_CLIENT_CANTMARSHAL_DATA = 0x8001000B, + RPC_E_CLIENT_CANTUNMARSHAL_DATA = 0x8001000C, + RPC_E_SERVER_CANTMARSHAL_DATA = 0x8001000D, + RPC_E_SERVER_CANTUNMARSHAL_DATA = 0x8001000E, + RPC_E_INVALID_DATA = 0x8001000F, + RPC_E_INVALID_PARAMETER = 0x80010010, + RPC_E_CANTCALLOUT_AGAIN = 0x80010011, + RPC_E_SERVER_DIED_DNE = 0x80010012, + RPC_E_SYS_CALL_FAILED = 0x80010100, + RPC_E_OUT_OF_RESOURCES = 0x80010101, + RPC_E_ATTEMPTED_MULTITHREAD = 0x80010102, + RPC_E_NOT_REGISTERED = 0x80010103, + RPC_E_FAULT = 0x80010104, + RPC_E_SERVERFAULT = 0x80010105, + RPC_E_CHANGED_MODE = 0x80010106, + RPC_E_INVALIDMETHOD = 0x80010107, + RPC_E_DISCONNECTED = 0x80010108, + RPC_E_RETRY = 0x80010109, + RPC_E_SERVERCALL_RETRYLATER = 0x8001010A, + RPC_E_SERVERCALL_REJECTED = 0x8001010B, + RPC_E_INVALID_CALLDATA = 0x8001010C, + RPC_E_CANTCALLOUT_ININPUTSYNCCALL = 0x8001010D, + RPC_E_WRONG_THREAD = 0x8001010E, + RPC_E_THREAD_NOT_INIT = 0x8001010F, + RPC_E_UNEXPECTED = 0x8001FFFF, + + DISP_E_UNKNOWNINTERFACE = 0x80020001, + DISP_E_MEMBERNOTFOUND = 0x80020003, + DISP_E_PARAMNOTFOUND = 0x80020004, + DISP_E_TYPEMISMATCH = 0x80020005, + DISP_E_UNKNOWNNAME = 0x80020006, + DISP_E_NONAMEDARGS = 0x80020007, + DISP_E_BADVARTYPE = 0x80020008, + DISP_E_EXCEPTION = 0x80020009, + DISP_E_OVERFLOW = 0x8002000A, + DISP_E_BADINDEX = 0x8002000B, + DISP_E_UNKNOWNLCID = 0x8002000C, + DISP_E_ARRAYISLOCKED = 0x8002000D, + DISP_E_BADPARAMCOUNT = 0x8002000E, + DISP_E_PARAMNOTOPTIONAL = 0x8002000F, + DISP_E_BADCALLEE = 0x80020010, + DISP_E_NOTACOLLECTION = 0x80020011, + DISP_E_DIVBYZERO = 0x80020012, + + TYPE_E_BUFFERTOOSMALL = 0x80028016, + TYPE_E_INVDATAREAD = 0x80028018, + TYPE_E_UNSUPFORMAT = 0x80028019, + TYPE_E_REGISTRYACCESS = 0x8002801C, + TYPE_E_LIBNOTREGISTERED = 0x8002801D, + TYPE_E_UNDEFINEDTYPE = 0x80028027, + TYPE_E_QUALIFIEDNAMEDISALLOWED = 0x80028028, + TYPE_E_INVALIDSTATE = 0x80028029, + TYPE_E_WRONGTYPEKIND = 0x8002802A, + TYPE_E_ELEMENTNOTFOUND = 0x8002802B, + TYPE_E_AMBIGUOUSNAME = 0x8002802C, + TYPE_E_NAMECONFLICT = 0x8002802D, + TYPE_E_UNKNOWNLCID = 0x8002802E, + TYPE_E_DLLFUNCTIONNOTFOUND = 0x8002802F, + TYPE_E_BADMODULEKIND = 0x800288BD, + TYPE_E_SIZETOOBIG = 0x800288C5, + TYPE_E_DUPLICATEID = 0x800288C6, + TYPE_E_INVALIDID = 0x800288CF, + TYPE_E_TYPEMISMATCH = 0x80028CA0, + TYPE_E_OUTOFBOUNDS = 0x80028CA1, + TYPE_E_IOERROR = 0x80028CA2, + TYPE_E_CANTCREATETMPFILE = 0x80028CA3, + TYPE_E_CANTLOADLIBRARY = 0x80029C4A, + TYPE_E_INCONSISTENTPROPFUNCS = 0x80029C83, + TYPE_E_CIRCULARTYPE = 0x80029C84, + + STG_E_INVALIDFUNCTION = 0x80030001, + STG_E_FILENOTFOUND = 0x80030002, + STG_E_PATHNOTFOUND = 0x80030003, + STG_E_TOOMANYOPENFILES = 0x80030004, + STG_E_ACCESSDENIED = 0x80030005, + STG_E_INVALIDHANDLE = 0x80030006, + STG_E_INSUFFICIENTMEMORY = 0x80030008, + STG_E_INVALIDPOINTER = 0x80030009, + STG_E_NOMOREFILES = 0x80030012, + STG_E_DISKISWRITEPROTECTED = 0x80030013, + STG_E_SEEKERROR = 0x80030019, + STG_E_WRITEFAULT = 0x8003001D, + STG_E_READFAULT = 0x8003001E, + STG_E_SHAREVIOLATION = 0x80030020, + STG_E_LOCKVIOLATION = 0x80030021, + STG_E_FILEALREADYEXISTS = 0x80030050, + STG_E_INVALIDPARAMETER = 0x80030057, + STG_E_MEDIUMFULL = 0x80030070, + STG_E_ABNORMALAPIEXIT = 0x800300FA, + STG_E_INVALIDHEADER = 0x800300FB, + STG_E_INVALIDNAME = 0x800300FC, + STG_E_UNKNOWN = 0x800300FD, + STG_E_UNIMPLEMENTEDFUNCTION = 0x800300FE, + STG_E_INVALIDFLAG = 0x800300FF, + STG_E_INUSE = 0x80030100, + STG_E_NOTCURRENT = 0x80030101, + STG_E_REVERTED = 0x80030102, + STG_E_CANTSAVE = 0x80030103, + STG_E_OLDFORMAT = 0x80030104, + STG_E_OLDDLL = 0x80030105, + STG_E_SHAREREQUIRED = 0x80030106, + STG_E_NOTFILEBASEDSTORAGE = 0x80030107, + STG_E_EXTANTMARSHALLINGS = 0x80030108, + STG_S_CONVERTED = 0x00030200, + + OLE_E_FIRST = 0x80040000, + OLE_S_FIRST = 0x00040000, + OLE_E_OLEVERB = 0x80040000, + OLE_S_USEREG = 0x00040000, + OLE_E_ADVF = 0x80040001, + OLE_S_STATIC = 0x00040001, + OLE_E_ENUM_NOMORE = 0x80040002, + OLE_S_MAC_CLIPFORMAT = 0x00040002, + OLE_E_ADVISENOTSUPPORTED = 0x80040003, + OLE_E_NOCONNECTION = 0x80040004, + OLE_E_NOTRUNNING = 0x80040005, + OLE_E_NOCACHE = 0x80040006, + OLE_E_BLANK = 0x80040007, + OLE_E_CLASSDIFF = 0x80040008, + OLE_E_CANT_GETMONIKER = 0x80040009, + OLE_E_CANT_BINDTOSOURCE = 0x8004000A, + OLE_E_STATIC = 0x8004000B, + OLE_E_PROMPTSAVECANCELLED = 0x8004000C, + OLE_E_INVALIDRECT = 0x8004000D, + OLE_E_WRONGCOMPOBJ = 0x8004000E, + OLE_E_INVALIDHWND = 0x8004000F, + OLE_E_NOT_INPLACEACTIVE = 0x80040010, + OLE_E_CANTCONVERT = 0x80040011, + OLE_E_NOSTORAGE = 0x80040012, + + DV_E_FORMATETC = 0x80040064, + DV_E_DVTARGETDEVICE = 0x80040065, + DV_E_STGMEDIUM = 0x80040066, + DV_E_STATDATA = 0x80040067, + DV_E_LINDEX = 0x80040068, + DV_E_TYMED = 0x80040069, + DV_E_CLIPFORMAT = 0x8004006A, + DV_E_DVASPECT = 0x8004006B, + DV_E_DVTARGETDEVICE_SIZE = 0x8004006C, + DV_E_NOIVIEWOBJECT = 0x8004006D, + + OLE_E_LAST = 0x800400FF, + OLE_S_LAST = 0x000400FF, + DRAGDROP_E_FIRST = 0x80040100, + DRAGDROP_S_FIRST = 0x00040100, + DRAGDROP_E_NOTREGISTERED = 0x80040100, + DRAGDROP_S_DROP = 0x00040100, + DRAGDROP_E_ALREADYREGISTERED = 0x80040101, + DRAGDROP_S_CANCEL = 0x00040101, + DRAGDROP_E_INVALIDHWND = 0x80040102, + DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102, + DRAGDROP_E_LAST = 0x8004010F, + DRAGDROP_S_LAST = 0x0004010F, + CLASSFACTORY_E_FIRST = 0x80040110, + CLASSFACTORY_S_FIRST = 0x00040110, + CLASS_E_NOAGGREGATION = 0x80040110, + CLASS_E_CLASSNOTAVAILABLE = 0x80040111, + CLASSFACTORY_E_LAST = 0x8004011F, + CLASSFACTORY_S_LAST = 0x0004011F, + MARSHAL_E_FIRST = 0x80040120, + MARSHAL_S_FIRST = 0x00040120, + MARSHAL_E_LAST = 0x8004012F, + MARSHAL_S_LAST = 0x0004012F, + DATA_E_FIRST = 0x80040130, + DATA_S_FIRST = 0x00040130, + DATA_S_SAMEFORMATETC = 0x00040130, + DATA_E_LAST = 0x8004013F, + DATA_S_LAST = 0x0004013F, + VIEW_E_FIRST = 0x80040140, + VIEW_S_FIRST = 0x00040140, + VIEW_E_DRAW = 0x80040140, + VIEW_S_ALREADY_FROZEN = 0x00040140, + VIEW_E_LAST = 0x8004014F, + VIEW_S_LAST = 0x0004014F, + REGDB_E_FIRST = 0x80040150, + REGDB_S_FIRST = 0x00040150, + REGDB_E_READREGDB = 0x80040150, + REGDB_E_WRITEREGDB = 0x80040151, + REGDB_E_KEYMISSING = 0x80040152, + REGDB_E_INVALIDVALUE = 0x80040153, + REGDB_E_CLASSNOTREG = 0x80040154, + REGDB_E_IIDNOTREG = 0x80040155, + REGDB_E_LAST = 0x8004015F, + REGDB_S_LAST = 0x0004015F, + CACHE_E_FIRST = 0x80040170, + CACHE_S_FIRST = 0x00040170, + CACHE_E_NOCACHE_UPDATED = 0x80040170, + CACHE_S_FORMATETC_NOTSUPPORTED = 0x00040170, + CACHE_S_SAMECACHE = 0x00040171, + CACHE_S_SOMECACHES_NOTUPDATED = 0x00040172, + CACHE_E_LAST = 0x8004017F, + CACHE_S_LAST = 0x0004017F, + OLEOBJ_E_FIRST = 0x80040180, + OLEOBJ_S_FIRST = 0x00040180, + OLEOBJ_E_NOVERBS = 0x80040180, + OLEOBJ_S_INVALIDVERB = 0x00040180, + OLEOBJ_E_INVALIDVERB = 0x80040181, + OLEOBJ_S_CANNOT_DOVERB_NOW = 0x00040181, + OLEOBJ_S_INVALIDHWND = 0x00040182, + OLEOBJ_E_LAST = 0x8004018F, + OLEOBJ_S_LAST = 0x0004018F, + CLIENTSITE_E_FIRST = 0x80040190, + CLIENTSITE_S_FIRST = 0x00040190, + CLIENTSITE_E_LAST = 0x8004019F, + CLIENTSITE_S_LAST = 0x0004019F, + INPLACE_E_NOTUNDOABLE = 0x800401A0, + INPLACE_E_FIRST = 0x800401A0, + INPLACE_S_FIRST = 0x000401A0, + INPLACE_S_TRUNCATED = 0x000401A0, + INPLACE_E_NOTOOLSPACE = 0x800401A1, + INPLACE_E_LAST = 0x800401AF, + INPLACE_S_LAST = 0x000401AF, + ENUM_E_FIRST = 0x800401B0, + ENUM_S_FIRST = 0x000401B0, + ENUM_E_LAST = 0x800401BF, + ENUM_S_LAST = 0x000401BF, + CONVERT10_E_FIRST = 0x800401C0, + CONVERT10_S_FIRST = 0x000401C0, + CONVERT10_E_OLESTREAM_GET = 0x800401C0, + CONVERT10_S_NO_PRESENTATION = 0x000401C0, + CONVERT10_E_OLESTREAM_PUT = 0x800401C1, + CONVERT10_E_OLESTREAM_FMT = 0x800401C2, + CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = 0x800401C3, + CONVERT10_E_STG_FMT = 0x800401C4, + CONVERT10_E_STG_NO_STD_STREAM = 0x800401C5, + CONVERT10_E_STG_DIB_TO_BITMAP = 0x800401C6, + CONVERT10_E_LAST = 0x800401CF, + CONVERT10_S_LAST = 0x000401CF, + CLIPBRD_E_FIRST = 0x800401D0, + CLIPBRD_S_FIRST = 0x000401D0, + CLIPBRD_E_CANT_OPEN = 0x800401D0, + CLIPBRD_E_CANT_EMPTY = 0x800401D1, + CLIPBRD_E_CANT_SET = 0x800401D2, + CLIPBRD_E_BAD_DATA = 0x800401D3, + CLIPBRD_E_CANT_CLOSE = 0x800401D4, + CLIPBRD_E_LAST = 0x800401DF, + CLIPBRD_S_LAST = 0x000401DF, + MK_E_FIRST = 0x800401E0, + MK_S_FIRST = 0x000401E0, + MK_E_CONNECTMANUALLY = 0x800401E0, + MK_E_EXCEEDEDDEADLINE = 0x800401E1, + MK_E_NEEDGENERIC = 0x800401E2, + MK_S_REDUCED_TO_SELF = 0x000401E2, + MK_E_UNAVAILABLE = 0x800401E3, + MK_E_SYNTAX = 0x800401E4, + MK_S_ME = 0x000401E4, + MK_E_NOOBJECT = 0x800401E5, + MK_S_HIM = 0x000401E5, + MK_E_INVALIDEXTENSION = 0x800401E6, + MK_S_US = 0x000401E6, + MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = 0x800401E7, + MK_S_MONIKERALREADYREGISTERED = 0x000401E7, + MK_E_NOTBINDABLE = 0x800401E8, + MK_E_NOTBOUND = 0x800401E9, + MK_E_CANTOPENFILE = 0x800401EA, + MK_E_MUSTBOTHERUSER = 0x800401EB, + MK_E_NOINVERSE = 0x800401EC, + MK_E_NOSTORAGE = 0x800401ED, + MK_E_NOPREFIX = 0x800401EE, + MK_E_LAST = 0x800401EF, + MK_S_LAST = 0x000401EF, + MK_E_ENUMERATION_FAILED = 0x800401EF, + CO_E_FIRST = 0x800401F0, + CO_S_FIRST = 0x000401F0, + CO_E_NOTINITIALIZED = 0x800401F0, + CO_E_ALREADYINITIALIZED = 0x800401F1, + CO_E_CANTDETERMINECLASS = 0x800401F2, + CO_E_CLASSSTRING = 0x800401F3, + CO_E_IIDSTRING = 0x800401F4, + CO_E_APPNOTFOUND = 0x800401F5, + CO_E_APPSINGLEUSE = 0x800401F6, + CO_E_ERRORINAPP = 0x800401F7, + CO_E_DLLNOTFOUND = 0x800401F8, + CO_E_ERRORINDLL = 0x800401F9, + CO_E_WRONGOSFORAPP = 0x800401FA, + CO_E_OBJNOTREG = 0x800401FB, + CO_E_OBJISREG = 0x800401FC, + CO_E_OBJNOTCONNECTED = 0x800401FD, + CO_E_APPDIDNTREG = 0x800401FE, + CO_E_LAST = 0x800401FF, + CO_S_LAST = 0x000401FF, + CO_E_RELEASED = 0x800401FF, + + CO_E_CLASS_CREATE_FAILED = 0x80080001, + CO_E_SCM_ERROR = 0x80080002, + CO_E_SCM_RPC_FAILURE = 0x80080003, + CO_E_BAD_PATH = 0x80080004, + CO_E_SERVER_EXEC_FAILURE = 0x80080005, + CO_E_OBJSRV_RPC_FAILURE = 0x80080006, + MK_E_NO_NORMALIZED = 0x80080007, + CO_E_SERVER_STOPPING = 0x80080008, + MEM_E_INVALID_ROOT = 0x80080009, + MEM_E_INVALID_LINK = 0x80080010, + MEM_E_INVALID_SIZE = 0x80080011, + CO_S_NOTALLINTERFACES = 0x00080012, + + NTE_BAD_UID = 0x80090001, + NTE_BAD_HASH = 0x80090002, + NTE_BAD_KEY = 0x80090003, + NTE_BAD_LEN = 0x80090004, + NTE_BAD_DATA = 0x80090005, + NTE_BAD_SIGNATURE = 0x80090006, + NTE_BAD_VER = 0x80090007, + NTE_BAD_ALGID = 0x80090008, + NTE_BAD_FLAGS = 0x80090009, + NTE_BAD_TYPE = 0x8009000A, + NTE_BAD_KEY_STATE = 0x8009000B, + NTE_BAD_HASH_STATE = 0x8009000C, + NTE_NO_KEY = 0x8009000D, + NTE_NO_MEMORY = 0x8009000E, + NTE_EXISTS = 0x8009000F, + NTE_PERM = 0x80090010, + NTE_NOT_FOUND = 0x80090011, + NTE_DOUBLE_ENCRYPT = 0x80090012, + NTE_BAD_PROVIDER = 0x80090013, + NTE_BAD_PROV_TYPE = 0x80090014, + NTE_BAD_PUBLIC_KEY = 0x80090015, + NTE_BAD_KEYSET = 0x80090016, + NTE_PROV_TYPE_NOT_DEF = 0x80090017, + NTE_PROV_TYPE_ENTRY_BAD = 0x80090018, + NTE_KEYSET_NOT_DEF = 0x80090019, + NTE_KEYSET_ENTRY_BAD = 0x8009001A, + NTE_PROV_TYPE_NO_MATCH = 0x8009001B, + NTE_SIGNATURE_FILE_BAD = 0x8009001C, + NTE_PROVIDER_DLL_FAIL = 0x8009001D, + NTE_PROV_DLL_NOT_FOUND = 0x8009001E, + NTE_BAD_KEYSET_PARAM = 0x8009001F, + NTE_FAIL = 0x80090020, + NTE_SYS_ERR = 0x80090021 +} + + +enum : bool { + SEVERITY_SUCCESS = 0, + SEVERITY_ERROR = 1 +} + +enum : uint { + FACILITY_NULL = 0, + FACILITY_RPC, + FACILITY_DISPATCH, + FACILITY_STORAGE, + FACILITY_ITF, // = 4 + FACILITY_WIN32 = 7, + FACILITY_WINDOWS = 8, + FACILITY_CONTROL = 10, + FACILITY_NT_BIT = 0x10000000 +} + +// C Macros + +bool SUCCEEDED(HRESULT Status) { + return Status >= 0; +} + +bool FAILED(HRESULT Status) { + return Status < 0; +} + +bool IS_ERROR(HRESULT Status) { + return (Status >>> 31) == SEVERITY_ERROR; +} + +ushort HRESULT_CODE(HRESULT r) { + return cast(ushort) (r & 0xFFFF); +} + +ushort SCODE_CODE(SCODE r) { + return cast(ushort) (r & 0xFFFF); +} + +ushort HRESULT_FACILITY(HRESULT r) { + return cast(ushort) ((r>>16) & 0x1fff); +} + +ushort SCODE_FACILITY(SCODE r) { + return cast(ushort) ((r>>16) & 0x1fff); +} + +ushort HRESULT_SEVERITY(HRESULT r) { + return cast(ushort) ((r>>31) & 0x1); +} + +ushort SCODE_SEVERITY(SCODE r) { + return cast(ushort) ((r>>31) & 0x1); +} + +HRESULT MAKE_HRESULT(bool s, uint f, uint c) { + return (s << 31) | (f << 16) | c; +} + +SCODE MAKE_SCODE(bool s, uint f, uint c) { + return (s << 31) | (f << 16) | c; +} + +SCODE GetScode(HRESULT hr) { + return hr; +} + +HRESULT ResultFromScode(SCODE c) { + return c; +} + +HRESULT HRESULT_FROM_NT(HRESULT x) { + return x | FACILITY_NT_BIT; +} + +HRESULT HRESULT_FROM_WIN32(HRESULT x) { + return x ? (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000 : 0; +} + +HRESULT PropagateResult(HRESULT hrPrevious, SCODE scBase) { + return scBase; +} diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d new file mode 100644 index 0000000000..bd136f6c0c --- /dev/null +++ b/src/core/sys/windows/wingdi.d @@ -0,0 +1,4560 @@ +/***********************************************************************\ +* wingdi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wingdi; +pragma(lib, "gdi32"); + +// FIXME: clean up Windows version support + +private import win32.w32api, win32.windef, win32.winver; + +// BITMAPINFOHEADER.biCompression +enum : DWORD { + BI_RGB = 0, + BI_RLE8, + BI_RLE4, + BI_BITFIELDS, + BI_JPEG, + BI_PNG +} + +// --- +// COLORADJUSTMENT -- only for NT 3.1+, Win2000+ +const WORD + CA_NEGATIVE = 1, + CA_LOG_FILTER = 2; + +// COLORADJUSTMENT +enum : WORD { + ILLUMINANT_DEVICE_DEFAULT = 0, + ILLUMINANT_A, + ILLUMINANT_B, + ILLUMINANT_C, + ILLUMINANT_D50, + ILLUMINANT_D55, + ILLUMINANT_D65, + ILLUMINANT_D75, + ILLUMINANT_F2, + ILLUMINANT_MAX_INDEX = ILLUMINANT_F2, + ILLUMINANT_TUNGSTEN = ILLUMINANT_A, + ILLUMINANT_DAYLIGHT = ILLUMINANT_C, + ILLUMINANT_FLUORESCENT = ILLUMINANT_F2, + ILLUMINANT_NTSC = ILLUMINANT_C +} + +enum { + RGB_GAMMA_MIN = 2500, + RGB_GAMMA_MAX = 65000, + REFERENCE_WHITE_MIN = 6000, + REFERENCE_WHITE_MAX = 10000, + REFERENCE_BLACK_MIN = 0, + REFERENCE_BLACK_MAX = 4000, + COLOR_ADJ_MIN = -100, + COLOR_ADJ_MAX = 100, +} +//--- + +/* FIXME: move to win32.winuser ? */ +// DrawIconEx() +enum : UINT { + DI_MASK = 1, + DI_IMAGE = 2, + DI_NORMAL = 3, + DI_COMPAT = 4, + DI_DEFAULTSIZE = 8 +} + +// DOCINFO +enum : DWORD { + DI_APPBANDING = 1, + DI_ROPS_READ_DESTINATION = 2, +} + +// ENHMETAHEADER +enum : DWORD { + EMR_HEADER = 1, + EMR_POLYBEZIER, + EMR_POLYGON, + EMR_POLYLINE, + EMR_POLYBEZIERTO, + EMR_POLYLINETO, + EMR_POLYPOLYLINE, + EMR_POLYPOLYGON, + EMR_SETWINDOWEXTEX, + EMR_SETWINDOWORGEX, + EMR_SETVIEWPORTEXTEX, + EMR_SETVIEWPORTORGEX, + EMR_SETBRUSHORGEX, + EMR_EOF, + EMR_SETPIXELV, + EMR_SETMAPPERFLAGS, + EMR_SETMAPMODE, + EMR_SETBKMODE, + EMR_SETPOLYFILLMODE, + EMR_SETROP2, + EMR_SETSTRETCHBLTMODE, + EMR_SETTEXTALIGN, + EMR_SETCOLORADJUSTMENT, + EMR_SETTEXTCOLOR, + EMR_SETBKCOLOR, + EMR_OFFSETCLIPRGN, + EMR_MOVETOEX, + EMR_SETMETARGN, + EMR_EXCLUDECLIPRECT, + EMR_INTERSECTCLIPRECT, + EMR_SCALEVIEWPORTEXTEX, + EMR_SCALEWINDOWEXTEX, + EMR_SAVEDC, + EMR_RESTOREDC, + EMR_SETWORLDTRANSFORM, + EMR_MODIFYWORLDTRANSFORM, + EMR_SELECTOBJECT, + EMR_CREATEPEN, + EMR_CREATEBRUSHINDIRECT, + EMR_DELETEOBJECT, + EMR_ANGLEARC, + EMR_ELLIPSE, + EMR_RECTANGLE, + EMR_ROUNDRECT, + EMR_ARC, + EMR_CHORD, + EMR_PIE, + EMR_SELECTPALETTE, + EMR_CREATEPALETTE, + EMR_SETPALETTEENTRIES, + EMR_RESIZEPALETTE, + EMR_REALIZEPALETTE, + EMR_EXTFLOODFILL, + EMR_LINETO, + EMR_ARCTO, + EMR_POLYDRAW, + EMR_SETARCDIRECTION, + EMR_SETMITERLIMIT, + EMR_BEGINPATH, + EMR_ENDPATH, + EMR_CLOSEFIGURE, + EMR_FILLPATH, + EMR_STROKEANDFILLPATH, + EMR_STROKEPATH, + EMR_FLATTENPATH, + EMR_WIDENPATH, + EMR_SELECTCLIPPATH, + EMR_ABORTPATH, // 68 + // reserved 69 + EMR_GDICOMMENT = 70, + EMR_FILLRGN, + EMR_FRAMERGN, + EMR_INVERTRGN, + EMR_PAINTRGN, + EMR_EXTSELECTCLIPRGN, + EMR_BITBLT, + EMR_STRETCHBLT, + EMR_MASKBLT, + EMR_PLGBLT, + EMR_SETDIBITSTODEVICE, + EMR_STRETCHDIBITS, + EMR_EXTCREATEFONTINDIRECTW, + EMR_EXTTEXTOUTA, + EMR_EXTTEXTOUTW, + EMR_POLYBEZIER16, + EMR_POLYGON16, + EMR_POLYLINE16, + EMR_POLYBEZIERTO16, + EMR_POLYLINETO16, + EMR_POLYPOLYLINE16, + EMR_POLYPOLYGON16, + EMR_POLYDRAW16, + EMR_CREATEMONOBRUSH, + EMR_CREATEDIBPATTERNBRUSHPT, + EMR_EXTCREATEPEN, + EMR_POLYTEXTOUTA, + EMR_POLYTEXTOUTW, // 97 + EMR_SETICMMODE, + EMR_CREATECOLORSPACE, + EMR_SETCOLORSPACE, + EMR_DELETECOLORSPACE, + EMR_GLSRECORD, + EMR_GLSBOUNDEDRECORD, + EMR_PIXELFORMAT, // = 104 + // reserved 105 - 110 + EMR_COLORCORRECTPALETTE = 111, + EMR_SETICMPROFILEA, + EMR_SETICMPROFILEW, + EMR_ALPHABLEND, + EMR_SETLAYOUT, + EMR_TRANSPARENTBLT, // 116 + // reserved 117 + EMR_GRADIENTFILL = 118, + // reserved 119, 120 + EMR_COLORMATCHTOTARGETW = 121, + EMR_CREATECOLORSPACEW // 122 +} + +const EMR_MIN = EMR_HEADER; + +static if (_WIN32_WINNT >= 0x500) { + const EMR_MAX = EMR_CREATECOLORSPACEW; +} else { + const EMR_MAX = EMR_PIXELFORMAT; +} + +// ENHMETAHEADER.dSignature, ENHMETAHEADER3.dSignature, +// EMRFORMAT.dSignature +enum : DWORD { + ENHMETA_SIGNATURE = 1179469088, + EPS_SIGNATURE = 0x46535045 +} + +static if (_WIN32_WINNT >= 0x500) { + // AddFontResourceEx() + enum : DWORD { + FR_PRIVATE = 0x10, + FR_NOT_ENUM = 0x20 + } +} + +enum { + META_SAVEDC = 0x1E, + META_REALIZEPALETTE = 0x35, + META_SETPALENTRIES = 0x37, + META_CREATEPALETTE = 0xf7, + META_SETBKMODE = 0x102, + META_SETMAPMODE = 0x103, + META_SETROP2 = 0x104, + META_SETRELABS = 0x105, + META_SETPOLYFILLMODE = 0x106, + META_SETSTRETCHBLTMODE = 0x107, + META_SETTEXTCHAREXTRA = 0x108, + META_RESTOREDC = 0x127, + META_INVERTREGION = 0x12A, + META_PAINTREGION = 0x12B, + META_SELECTCLIPREGION = 0x12C, + META_SELECTOBJECT = 0x12D, + META_SETTEXTALIGN = 0x12E, + META_RESIZEPALETTE = 0x139, + META_DIBCREATEPATTERNBRUSH = 0x142, + META_SETLAYOUT = 0x149, + META_DELETEOBJECT = 0x1F0, + META_CREATEPATTERNBRUSH = 0x1F9, + META_SETBKCOLOR = 0x201, + META_SETTEXTCOLOR = 0x209, + META_SETTEXTJUSTIFICATION = 0x20A, + META_SETWINDOWORG = 0x20B, + META_SETWINDOWEXT = 0x20C, + META_SETVIEWPORTORG = 0x20D, + META_SETVIEWPORTEXT = 0x20E, + META_OFFSETWINDOWORG = 0x20F, + META_OFFSETVIEWPORTORG = 0x211, + META_LINETO = 0x213, + META_MOVETO = 0x214, + META_OFFSETCLIPRGN = 0x220, + META_FILLREGION = 0x228, + META_SETMAPPERFLAGS = 0x231, + META_SELECTPALETTE = 0x234, + META_CREATEPENINDIRECT = 0x2FA, + META_CREATEFONTINDIRECT = 0x2FB, + META_CREATEBRUSHINDIRECT = 0x2FC, + META_POLYGON = 0x324, + META_POLYLINE = 0x325, + META_SCALEWINDOWEXT = 0x410, + META_SCALEVIEWPORTEXT = 0x412, + META_EXCLUDECLIPRECT = 0x415, + META_INTERSECTCLIPRECT = 0x416, + META_ELLIPSE = 0x418, + META_FLOODFILL = 0x419, + META_RECTANGLE = 0x41B, + META_SETPIXEL = 0x41F, + META_FRAMEREGION = 0x429, + META_ANIMATEPALETTE = 0x436, + META_TEXTOUT = 0x521, + META_POLYPOLYGON = 0x538, + META_EXTFLOODFILL = 0x548, + META_ROUNDRECT = 0x61C, + META_PATBLT = 0x61D, + META_ESCAPE = 0x626, + META_CREATEREGION = 0x6FF, + META_ARC = 0x817, + META_PIE = 0x81A, + META_CHORD = 0x830, + META_BITBLT = 0x922, + META_DIBBITBLT = 0x940, + META_EXTTEXTOUT = 0xA32, + META_STRETCHBLT = 0xB23, + META_DIBSTRETCHBLT = 0xB41, + META_SETDIBTODEV = 0xD33, + META_STRETCHDIB = 0xF43 +} + +// EMRPOLYDRAW +enum : BYTE { + PT_CLOSEFIGURE = 1, + PT_LINETO = 2, + PT_BEZIERTO = 4, + PT_MOVETO = 6 +} + +// ---- +// PIXELFORMATDESCRIPTOR.iPixelType +enum : BYTE { + PFD_TYPE_RGBA = 0, + PFD_TYPE_COLORINDEX = 1 +} + +deprecated { +// PIXELFORMATDESCRIPTOR. +const byte + PFD_MAIN_PLANE = 0, + PFD_OVERLAY_PLANE = 1, + PFD_UNDERLAY_PLANE = -1; +} +// PIXELFORMATDESCRIPTOR.dwFlags +const DWORD + PFD_DOUBLEBUFFER = 0x00000001, + PFD_STEREO = 0x00000002, + PFD_DRAW_TO_WINDOW = 0x00000004, + PFD_DRAW_TO_BITMAP = 0x00000008, + PFD_SUPPORT_GDI = 0x00000010, + PFD_SUPPORT_OPENGL = 0x00000020, + PFD_GENERIC_FORMAT = 0x00000040, + PFD_NEED_PALETTE = 0x00000080, + PFD_NEED_SYSTEM_PALETTE = 0x00000100, + PFD_SWAP_EXCHANGE = 0x00000200, + PFD_SWAP_COPY = 0x00000400, + PFD_SWAP_LAYER_BUFFERS = 0x00000800, + PFD_GENERIC_ACCELERATED = 0x00001000, + PFD_SUPPORT_DIRECTDRAW = 0x00002000, + /* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ + PFD_DEPTH_DONTCARE = 0x20000000, + PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, + PFD_STEREO_DONTCARE = 0x80000000; + +// ---- + +const DWORD + BLACKNESS = 0x000042, + NOTSRCERASE = 0x1100A6, + NOTSRCCOPY = 0x330008, + SRCERASE = 0x440328, + DSTINVERT = 0x550009, + PATINVERT = 0x5A0049, + SRCINVERT = 0x660046, + SRCAND = 0x8800C6, + MERGEPAINT = 0xBB0226, + MERGECOPY = 0xC000CA, + SRCCOPY = 0xCC0020, + SRCPAINT = 0xEE0086, + PATCOPY = 0xF00021, + PATPAINT = 0xFB0A09, + WHITENESS = 0xFF0062; +static if (_WIN32_WINNT >= 0x500) { + const DWORD + NOMIRRORBITMAP = 0x80000000, + CAPTUREBLT = 0x40000000; +} + +// GetROP2(), SetROP2() +enum : int { + R2_BLACK = 1, + R2_NOTMERGEPEN = 2, + R2_MASKNOTPEN = 3, + R2_NOTCOPYPEN = 4, + R2_MASKPENNOT = 5, + R2_NOT = 6, + R2_XORPEN = 7, + R2_NOTMASKPEN = 8, + R2_MASKPEN = 9, + R2_NOTXORPEN = 10, + R2_NOP = 11, + R2_MERGENOTPEN = 12, + R2_COPYPEN = 13, + R2_MERGEPENNOT = 14, + R2_MERGEPEN = 15, + R2_WHITE = 16 +} + +const R2_LAST = R2_WHITE; + +// CheckColorsInGamut() +const ubyte + CM_IN_GAMUT = 0, + CM_OUT_OF_GAMUT = 255; + +/* UpdateICMRegKey Constants */ +const int + ICM_ADDPROFILE = 1, + ICM_DELETEPROFILE = 2, + ICM_QUERYPROFILE = 3, + ICM_SETDEFAULTPROFILE = 4, + ICM_REGISTERICMATCHER = 5, + ICM_UNREGISTERICMATCHER = 6, + ICM_QUERYMATCH = 7; + +enum : int { + RGN_AND = 1, + RGN_OR = 2, + RGN_XOR = 3, + RGN_DIFF = 4, + RGN_COPY = 5 +} + +const RGN_MIN = RGN_AND; +const RGN_MAX = RGN_COPY; + +// Return values for CombineRgn() +enum { + NULLREGION = 1, + SIMPLEREGION = 2, + COMPLEXREGION = 3 +} + +const ERROR = 0; +alias ERROR RGN_ERROR; + +// CreateDIBitmap() +const DWORD CBM_INIT = 4; + +// CreateDIBitmap() +enum : UINT { + DIB_RGB_COLORS = 0, + DIB_PAL_COLORS = 1 +} + +// --- +// Values for LOGFONT and CreateFont() + +// FIXME: For D, replace with lfFaceName.length() +const LF_FACESIZE = 32; +const LF_FULLFACESIZE = 64; + +// FIXME: Not needed for D, only EXTLOGFONT +const ELF_VENDOR_SIZE = 4; + +// ??? +const ELF_VERSION = 0; +const ELF_CULTURE_LATIN = 0; + +// LOGFONT.lfWeight +const LONG + FW_DONTCARE = 0, + FW_THIN = 100, + FW_EXTRALIGHT = 200, + FW_ULTRALIGHT = FW_EXTRALIGHT, + FW_LIGHT = 300, + FW_NORMAL = 400, + FW_REGULAR = FW_NORMAL, + FW_MEDIUM = 500, + FW_SEMIBOLD = 600, + FW_DEMIBOLD = FW_SEMIBOLD, + FW_BOLD = 700, + FW_EXTRABOLD = 800, + FW_ULTRABOLD = FW_EXTRABOLD, + FW_HEAVY = 900, + FW_BLACK = FW_HEAVY; + +// LOGFONT.lfCharSet +enum : DWORD { + ANSI_CHARSET = 0, + DEFAULT_CHARSET = 1, + SYMBOL_CHARSET = 2, + MAC_CHARSET = 77, + SHIFTJIS_CHARSET = 128, + HANGEUL_CHARSET = 129, + HANGUL_CHARSET = 129, + JOHAB_CHARSET = 130, + GB2312_CHARSET = 134, + CHINESEBIG5_CHARSET = 136, + GREEK_CHARSET = 161, + TURKISH_CHARSET = 162, + VIETNAMESE_CHARSET = 163, + HEBREW_CHARSET = 177, + ARABIC_CHARSET = 178, + BALTIC_CHARSET = 186, + RUSSIAN_CHARSET = 204, + THAI_CHARSET = 222, + EASTEUROPE_CHARSET = 238, + OEM_CHARSET = 255 +} + +// LOGFONT.lfOutPrecision +enum : BYTE { + OUT_DEFAULT_PRECIS = 0, + OUT_STRING_PRECIS, + OUT_CHARACTER_PRECIS, + OUT_STROKE_PRECIS, + OUT_TT_PRECIS, + OUT_DEVICE_PRECIS, + OUT_RASTER_PRECIS, + OUT_TT_ONLY_PRECIS, + OUT_OUTLINE_PRECIS, + OUT_SCREEN_OUTLINE_PRECIS, + OUT_PS_ONLY_PRECIS, // 10 +} + +// LOGFONT.lfClipPrecision +enum : BYTE { + CLIP_DEFAULT_PRECIS = 0, + CLIP_CHARACTER_PRECIS = 1, + CLIP_STROKE_PRECIS = 2, + CLIP_MASK = 15, + CLIP_LH_ANGLES = 16, + CLIP_TT_ALWAYS = 32, + CLIP_DFA_DISABLE = 64, + CLIP_EMBEDDED = 128 +} + +// LOGFONT.lfQuality +enum : BYTE { + DEFAULT_QUALITY = 0, + DRAFT_QUALITY, + PROOF_QUALITY, + NONANTIALIASED_QUALITY, + ANTIALIASED_QUALITY +} + +// LOGFONT.lfPitchAndFamily + +const BYTE + DEFAULT_PITCH = 0, + FIXED_PITCH = 1, + VARIABLE_PITCH = 2, + MONO_FONT = 8, + FF_DONTCARE = 0, + FF_ROMAN = 16, + FF_SWISS = 32, + FF_SCRIPT = 64, + FF_MODERN = 48, + FF_DECORATIVE = 80; + +// ---- +// Enums for the PANOSE struct + +const PANOSE_COUNT=10; + +enum { + PAN_FAMILYTYPE_INDEX = 0, + PAN_SERIFSTYLE_INDEX, + PAN_WEIGHT_INDEX, + PAN_PROPORTION_INDEX, + PAN_CONTRAST_INDEX, + PAN_STROKEVARIATION_INDEX, + PAN_ARMSTYLE_INDEX, + PAN_LETTERFORM_INDEX, + PAN_MIDLINE_INDEX, + PAN_XHEIGHT_INDEX +} + +const PAN_CULTURE_LATIN=0; + +// NOTE: the first two values (PAN_ANY and PAN_NO_FIT) apply to all these enums! +enum : BYTE { + PAN_ANY = 0, + PAN_NO_FIT = 1, +} + +enum : BYTE { + PAN_FAMILY_TEXT_DISPLAY = 2, + PAN_FAMILY_SCRIPT, + PAN_FAMILY_DECORATIVE, + PAN_FAMILY_PICTORIAL +} +enum : BYTE { + PAN_SERIF_COVE = 2, + PAN_SERIF_OBTUSE_COVE, + PAN_SERIF_SQUARE_COVE, + PAN_SERIF_OBTUSE_SQUARE_COVE, + PAN_SERIF_SQUARE, + PAN_SERIF_THIN, + PAN_SERIF_BONE, + PAN_SERIF_EXAGGERATED, + PAN_SERIF_TRIANGLE, + PAN_SERIF_NORMAL_SANS, + PAN_SERIF_OBTUSE_SANS, + PAN_SERIF_PERP_SANS, + PAN_SERIF_FLARED, + PAN_SERIF_ROUNDED +} + +enum : BYTE { + PAN_WEIGHT_VERY_LIGHT = 2, + PAN_WEIGHT_LIGHT, + PAN_WEIGHT_THIN, + PAN_WEIGHT_BOOK, + PAN_WEIGHT_MEDIUM, + PAN_WEIGHT_DEMI, + PAN_WEIGHT_BOLD, + PAN_WEIGHT_HEAVY, + PAN_WEIGHT_BLACK, + PAN_WEIGHT_NORD +} + +enum : BYTE { + PAN_PROP_OLD_STYLE = 2, + PAN_PROP_MODERN, + PAN_PROP_EVEN_WIDTH, + PAN_PROP_EXPANDED, + PAN_PROP_CONDENSED, + PAN_PROP_VERY_EXPANDED, + PAN_PROP_VERY_CONDENSED, + PAN_PROP_MONOSPACED +} + +enum : BYTE { + PAN_CONTRAST_NONE = 2, + PAN_CONTRAST_VERY_LOW, + PAN_CONTRAST_LOW, + PAN_CONTRAST_MEDIUM_LOW, + PAN_CONTRAST_MEDIUM, + PAN_CONTRAST_MEDIUM_HIGH, + PAN_CONTRAST_HIGH, + PAN_CONTRAST_VERY_HIGH +} + +// PANOSE.bStrokeVariation +enum : BYTE { + PAN_STROKE_GRADUAL_DIAG = 2, + PAN_STROKE_GRADUAL_TRAN, + PAN_STROKE_GRADUAL_VERT, + PAN_STROKE_GRADUAL_HORZ, + PAN_STROKE_RAPID_VERT, + PAN_STROKE_RAPID_HORZ, + PAN_STROKE_INSTANT_VERT +} + +// PANOSE.bArmStyle +enum : BYTE { + PAN_STRAIGHT_ARMS_HORZ = 2, + PAN_STRAIGHT_ARMS_WEDGE, + PAN_STRAIGHT_ARMS_VERT, + PAN_STRAIGHT_ARMS_SINGLE_SERIF, + PAN_STRAIGHT_ARMS_DOUBLE_SERIF, + PAN_BENT_ARMS_HORZ, + PAN_BENT_ARMS_WEDGE, + PAN_BENT_ARMS_VERT, + PAN_BENT_ARMS_SINGLE_SERIF, + PAN_BENT_ARMS_DOUBLE_SERIF +} + +// PANOSE.bLetterForm +enum : BYTE { + PAN_LETT_NORMAL_CONTACT = 2, + PAN_LETT_NORMAL_WEIGHTED, + PAN_LETT_NORMAL_BOXED, + PAN_LETT_NORMAL_FLATTENED, + PAN_LETT_NORMAL_ROUNDED, + PAN_LETT_NORMAL_OFF_CENTER, + PAN_LETT_NORMAL_SQUARE, + PAN_LETT_OBLIQUE_CONTACT, + PAN_LETT_OBLIQUE_WEIGHTED, + PAN_LETT_OBLIQUE_BOXED, + PAN_LETT_OBLIQUE_FLATTENED, + PAN_LETT_OBLIQUE_ROUNDED, + PAN_LETT_OBLIQUE_OFF_CENTER, + PAN_LETT_OBLIQUE_SQUARE +} + +// PANOSE.bMidLine +enum : BYTE { + PAN_MIDLINE_STANDARD_TRIMMED = 2, + PAN_MIDLINE_STANDARD_POINTED, + PAN_MIDLINE_STANDARD_SERIFED, + PAN_MIDLINE_HIGH_TRIMMED, + PAN_MIDLINE_HIGH_POINTED, + PAN_MIDLINE_HIGH_SERIFED, + PAN_MIDLINE_CONSTANT_TRIMMED, + PAN_MIDLINE_CONSTANT_POINTED, + PAN_MIDLINE_CONSTANT_SERIFED, + PAN_MIDLINE_LOW_TRIMMED, + PAN_MIDLINE_LOW_POINTED, + PAN_MIDLINE_LOW_SERIFED +} + +// PANOSE.bXHeight +enum : BYTE { + PAN_XHEIGHT_CONSTANT_SMALL = 2, + PAN_XHEIGHT_CONSTANT_STD, + PAN_XHEIGHT_CONSTANT_LARGE, + PAN_XHEIGHT_DUCKING_SMALL, + PAN_XHEIGHT_DUCKING_STD, + PAN_XHEIGHT_DUCKING_LARGE +} + +// ---- +// ??? +const FS_LATIN1 = 0x00000001; +const FS_LATIN2 = 0x00000002; +const FS_CYRILLIC = 0x00000004; +const FS_GREEK = 0x00000008; +const FS_TURKISH = 0x00000010; +const FS_HEBREW = 0x00000020; +const FS_ARABIC = 0x00000040; +const FS_BALTIC = 0x00000080; +const FS_VIETNAMESE = 0x00000100; +const FS_THAI = 0x00010000; +const FS_JISJAPAN = 0x00020000; +const FS_CHINESESIMP = 0x00040000; +const FS_WANSUNG = 0x00080000; +const FS_CHINESETRAD = 0x00100000; +const FS_JOHAB = 0x00200000; +const FS_SYMBOL = 0x80000000; + +// ---- +// Poly Fill Mode +enum : int { + ALTERNATE = 1, + WINDING = 2 +} +const int POLYFILL_LAST = WINDING; + +//--- +// LOGBRUSH +enum : LONG { + HS_HORIZONTAL = 0, + HS_VERTICAL, + HS_FDIAGONAL, + HS_BDIAGONAL, + HS_CROSS, + HS_DIAGCROSS +} + +//LOGBRUSH.lbStyle +enum : UINT { + BS_SOLID = 0, + BS_NULL = 1, + BS_HOLLOW = BS_NULL, + BS_HATCHED, + BS_PATTERN, + BS_INDEXED, + BS_DIBPATTERN, + BS_DIBPATTERNPT, + BS_PATTERN8X8, + BS_DIBPATTERN8X8, + BS_MONOPATTERN, +} +//----- +// EXTLOGPEN, ExtCreatePen() + +// EXTLOGPEN.elpPenStyle +enum : DWORD { + PS_SOLID = 0, + PS_DASH = 1, + PS_DOT = 2, + PS_DASHDOT = 3, + PS_DASHDOTDOT = 4, + PS_NULL = 5, + PS_INSIDEFRAME = 6, + PS_USERSTYLE = 7, + PS_ALTERNATE = 8, + PS_STYLE_MASK = 15, +} + +enum : DWORD { + PS_COSMETIC = 0x00000000, + PS_GEOMETRIC = 0x00010000, + PS_TYPE_MASK = 0x000F0000, +} +enum : DWORD { + PS_ENDCAP_ROUND = 0x00000000, + PS_ENDCAP_SQUARE = 0x00000100, + PS_ENDCAP_FLAT = 0x00000200, + PS_ENDCAP_MASK = 0x00000F00, +} +enum : DWORD { + PS_JOIN_ROUND = 0x00000000, + PS_JOIN_BEVEL = 0x00001000, + PS_JOIN_MITER = 0x00002000, + PS_JOIN_MASK = 0x0000F000, +} + +// --- +// DeviceCapabilities() + +enum : WORD { + DC_FIELDS = 1, + DC_PAPERS, + DC_PAPERSIZE, + DC_MINEXTENT, + DC_MAXEXTENT, + DC_BINS, + DC_DUPLEX, + DC_SIZE, + DC_EXTRA, + DC_VERSION, + DC_DRIVER, + DC_BINNAMES, + DC_ENUMRESOLUTIONS, + DC_FILEDEPENDENCIES, + DC_TRUETYPE, + DC_PAPERNAMES, + DC_ORIENTATION, + DC_COPIES, + DC_BINADJUST, + DC_EMF_COMPLIANT, + DC_DATATYPE_PRODUCED, + DC_COLLATE, + DC_MANUFACTURER, + DC_MODEL, +} + +static if (_WIN32_WINNT >= 0x500) { + enum { + DC_PERSONALITY = 25, + DC_PRINTRATE = 26, + DC_PRINTRATEUNIT = 27, + DC_PRINTERMEM = 28, + DC_MEDIAREADY = 29, + DC_STAPLE = 30, + DC_PRINTRATEPPM = 31, + DC_COLORDEVICE = 32, + DC_NUP = 33, + DC_MEDIATYPENAMES = 34, + DC_MEDIATYPES = 35, + } + enum { + PRINTRATEUNIT_PPM = 1, + PRINTRATEUNIT_CPS = 2, + PRINTRATEUNIT_LPM = 3, + PRINTRATEUNIT_IPM = 4, + } +} + + +// return from DC_TRUETYPE +const DWORD + DCTT_BITMAP = 1, + DCTT_DOWNLOAD = 2, + DCTT_SUBDEV = 4, + DCTT_DOWNLOAD_OUTLINE = 8; + +// return from DC_BINADJUST +enum : DWORD { + DCBA_FACEUPNONE = 0x0000, + DCBA_FACEUPCENTER = 0x0001, + DCBA_FACEUPLEFT = 0x0002, + DCBA_FACEUPRIGHT = 0x0003, + DCBA_FACEDOWNNONE = 0x0100, + DCBA_FACEDOWNCENTER = 0x0101, + DCBA_FACEDOWNLEFT = 0x0102, + DCBA_FACEDOWNRIGHT = 0x0103, +} +//--- + +const FLOODFILLBORDER = 0; +const FLOODFILLSURFACE = 1; + +// ExtTextOut() +const UINT + ETO_OPAQUE = 0x0002, + ETO_CLIPPED = 0x0004, + ETO_GLYPH_INDEX = 0x0010, + ETO_RTLREADING = 0x0080, + ETO_NUMERICSLOCAL = 0x0400, + ETO_NUMERICSLATIN = 0x0800, + ETO_IGNORELANGUAGE = 0x1000; +static if (_WIN32_WINNT >= 0x500) { + const UINT + ETO_PDY = 0x2000; +} + +// GdiComment() +enum { + GDICOMMENT_BEGINGROUP = 0x00000002, + GDICOMMENT_ENDGROUP = 0x00000003, + GDICOMMENT_UNICODE_STRING = 0x00000040, + GDICOMMENT_UNICODE_END = 0x00000080, + GDICOMMENT_MULTIFORMATS = 0x40000004, + GDICOMMENT_IDENTIFIER = 0x43494447, + GDICOMMENT_WINDOWS_METAFILE = 0x80000001, +} + +// Get/SetArcDirection() +enum : int { + AD_COUNTERCLOCKWISE = 1, + AD_CLOCKWISE = 2 +} + +const RDH_RECTANGLES = 1; + +// GCPRESULTS.lpClass +enum { + GCPCLASS_LATIN = 1, + GCPCLASS_HEBREW = 2, + GCPCLASS_ARABIC = 2, + GCPCLASS_NEUTRAL, + GCPCLASS_LOCALNUMBER, + GCPCLASS_LATINNUMBER, + GCPCLASS_LATINNUMERICTERMINATOR, + GCPCLASS_LATINNUMERICSEPARATOR, + GCPCLASS_NUMERICSEPARATOR, // = 8, + GCPCLASS_POSTBOUNDRTL = 16, + GCPCLASS_POSTBOUNDLTR = 32, + GCPCLASS_PREBOUNDRTL = 64, + GCPCLASS_PREBOUNDLTR = 128, + GCPGLYPH_LINKAFTER = 0x4000, + GCPGLYPH_LINKBEFORE = 0x8000 +} + +// GetBoundsRect(), SetBoundsRect() +const UINT + DCB_RESET = 1, + DCB_ACCUMULATE = 2, + DCB_SET = DCB_RESET | DCB_ACCUMULATE, + DCB_ENABLE = 4, + DCB_DISABLE = 8, + DCB_DIRTY = DCB_ACCUMULATE; + +//--- +// GetObjectType() +enum : DWORD { + OBJ_PEN = 1, + OBJ_BRUSH, + OBJ_DC, + OBJ_METADC, + OBJ_PAL, + OBJ_FONT, + OBJ_BITMAP, + OBJ_REGION, + OBJ_METAFILE, + OBJ_MEMDC, + OBJ_EXTPEN, + OBJ_ENHMETADC, + OBJ_ENHMETAFILE, + OBJ_COLORSPACE, +} + +//--------------------- +// Capabilities for GetDeviceCaps(dc, xxx) + +enum : int { + DRIVERVERSION = 0, + TECHNOLOGY = 2, + HORZSIZE = 4, + VERTSIZE = 6, + HORZRES = 8, + VERTRES = 10, + BITSPIXEL = 12, + PLANES = 14, + NUMBRUSHES = 16, + NUMPENS = 18, + NUMMARKERS = 20, + NUMFONTS = 22, + NUMCOLORS = 24, + PDEVICESIZE = 26, + CURVECAPS = 28, + LINECAPS = 30, + POLYGONALCAPS = 32, + TEXTCAPS = 34, + CLIPCAPS = 36, + RASTERCAPS = 38, + ASPECTX = 40, + ASPECTY = 42, + ASPECTXY = 44, + LOGPIXELSX = 88, + LOGPIXELSY = 90, + SIZEPALETTE = 104, + NUMRESERVED = 106, + COLORRES = 108, + PHYSICALWIDTH = 110, + PHYSICALHEIGHT = 111, + PHYSICALOFFSETX = 112, + PHYSICALOFFSETY = 113, + SCALINGFACTORX = 114, + SCALINGFACTORY = 115, + VREFRESH = 116, + DESKTOPVERTRES = 117, + DESKTOPHORZRES = 118, + BLTALIGNMENT = 119 +} +static if (_WIN32_WINNT >= 0x500) { +enum : int { + SHADEBLENDCAPS = 120, + COLORMGMTCAPS = 121, +} +} + +// Return values for GetDeviceCaps(dc, TECHNOLOGY) +enum : int { + DT_PLOTTER = 0, + DT_RASDISPLAY, + DT_RASPRINTER, + DT_RASCAMERA, + DT_CHARSTREAM, + DT_METAFILE, + DT_DISPFILE // = 6 +} + +// Return values for GetDeviceCaps(dc, RASTERCAPS) +const int + RC_NONE = 0, + RC_BITBLT = 1, + RC_BANDING = 2, + RC_SCALING = 4, + RC_BITMAP64 = 8, + RC_GDI20_OUTPUT = 16, + RC_GDI20_STATE = 32, + RC_SAVEBITMAP = 64, + RC_DI_BITMAP = 128, + RC_PALETTE = 256, + RC_DIBTODEV = 512, + RC_BIGFONT = 1024, + RC_STRETCHBLT = 2048, + RC_FLOODFILL = 4096, + RC_STRETCHDIB = 8192, + RC_OP_DX_OUTPUT = 0x4000, + RC_DEVBITS = 0x8000; + +static if (_WIN32_WINNT >= 0x500) { + /* Shading and blending caps */ + const SB_NONE = 0x00000000; + const SB_CONST_ALPHA = 0x00000001; + const SB_PIXEL_ALPHA = 0x00000002; + const SB_PREMULT_ALPHA = 0x00000004; + const SB_GRAD_RECT = 0x00000010; + const SB_GRAD_TRI = 0x00000020; + /* Color Management caps */ + const CM_NONE = 0x00000000; + const CM_DEVICE_ICM = 0x00000001; + const CM_GAMMA_RAMP = 0x00000002; + const CM_CMYK_COLOR = 0x00000004; +} + +// Return values for GetDeviceCaps(dc, CURVECAPS) +const int + CC_NONE = 0, + CC_CIRCLES = 1, + CC_PIE = 2, + CC_CHORD = 4, + CC_ELLIPSES = 8, + CC_WIDE = 16, + CC_STYLED = 32, + CC_WIDESTYLED = 64, + CC_INTERIORS = 128, + CC_ROUNDRECT = 256; + +// Return values for GetDeviceCaps(dc, LINECAPS) + +const int + LC_NONE = 0, + LC_POLYLINE = 2, + LC_MARKER = 4, + LC_POLYMARKER = 8, + LC_WIDE = 16, + LC_STYLED = 32, + LC_WIDESTYLED = 64, + LC_INTERIORS = 128; + +// Return values for GetDeviceCaps(dc, POLYGONALCAPS) + +const int + PC_NONE = 0, + PC_POLYGON = 1, + PC_RECTANGLE = 2, + PC_WINDPOLYGON = 4, + PC_TRAPEZOID = 4, + PC_SCANLINE = 8, + PC_WIDE = 16, + PC_STYLED = 32, + PC_WIDESTYLED = 64, + PC_INTERIORS = 128, + PC_POLYPOLYGON = 256, + PC_PATHS = 512; + +/* Clipping Capabilities */ +const int CP_NONE = 0, + CP_RECTANGLE = 1, + CP_REGION = 2; + +// Return values for GetDeviceCaps(dc, TEXTCAPS) + +const int + TC_OP_CHARACTER = 1, + TC_OP_STROKE = 2, + TC_CP_STROKE = 4, + TC_CR_90 = 8, + TC_CR_ANY = 16, + TC_SF_X_YINDEP = 32, + TC_SA_DOUBLE = 64, + TC_SA_INTEGER = 128, + TC_SA_CONTIN = 256, + TC_EA_DOUBLE = 512, + TC_IA_ABLE = 1024, + TC_UA_ABLE = 2048, + TC_SO_ABLE = 4096, + TC_RA_ABLE = 8192, + TC_VA_ABLE = 16384, + TC_RESERVED = 32768, + TC_SCROLLBLT = 65536; + +// End GetDeviceCaps +//--------------------- +// GetCharacterPlacement(), and GetFontLanguageInfo() +const DWORD + GCP_DBCS = 1, + GCP_REORDER = 2, + GCP_USEKERNING = 8, + GCP_GLYPHSHAPE = 16, + GCP_LIGATE = 32, + GCP_DIACRITIC = 256, + GCP_KASHIDA = 1024, + GCP_ERROR = 0x8000, + GCP_JUSTIFY = 0x10000, + GCP_CLASSIN = 0x80000, + GCP_MAXEXTENT = 0x100000, + GCP_JUSTIFYIN = 0x200000, + GCP_DISPLAYZWG = 0x400000, + GCP_SYMSWAPOFF = 0x800000, + GCP_NUMERICOVERRIDE = 0x1000000, + GCP_NEUTRALOVERRIDE = 0x2000000, + GCP_NUMERICSLATIN = 0x4000000, + GCP_NUMERICSLOCAL = 0x8000000, + // Only for GetFontLanguageInfo() + FLI_GLYPHS = 0x40000, + FLI_MASK = 0x103b; + +// GetGlyphOutline() +enum : UINT { + GGO_METRICS = 0, + GGO_BITMAP = 1, + GGO_NATIVE = 2, + GGO_BEZIER = 3, + GGO_GRAY2_BITMAP = 4, + GGO_GRAY4_BITMAP = 5, + GGO_GRAY8_BITMAP = 6, + GGO_GLYPH_INDEX = 128, + GGO_UNHINTED = 256 +} + +enum : int { + GM_COMPATIBLE = 1, + GM_ADVANCED +} +const GM_LAST = GM_ADVANCED; + +enum : int { + MM_TEXT = 1, + MM_LOMETRIC, + MM_HIMETRIC, + MM_LOENGLISH, + MM_HIENGLISH, + MM_TWIPS, + MM_ISOTROPIC, + MM_ANISOTROPIC, +} + +const int + MM_MIN = MM_TEXT, + MM_MAX = MM_ANISOTROPIC, + MM_MAX_FIXEDSCALE = MM_TWIPS; + +const ABSOLUTE = 1; +const RELATIVE = 2; + +enum : BYTE { + PC_RESERVED = 1, + PC_EXPLICIT = 2, + PC_NOCOLLAPSE = 4 +} + +/* FIXME: move to win32.commctrl ? */ +// ImageList +const COLORREF + CLR_NONE = 0xffffffff, + CLR_INVALID = CLR_NONE, + CLR_DEFAULT = 0xff000000; + +// RASTERIZER_STATUS.wFlags +const short + TT_AVAILABLE = 1, + TT_ENABLED = 2; + +// GetStockObject() +enum : int { + WHITE_BRUSH = 0, + LTGRAY_BRUSH, + GRAY_BRUSH, + DKGRAY_BRUSH, + BLACK_BRUSH, + HOLLOW_BRUSH, // = 5 + NULL_BRUSH = HOLLOW_BRUSH, + WHITE_PEN = 6, + BLACK_PEN, + NULL_PEN, // = 8 + OEM_FIXED_FONT = 10, + ANSI_FIXED_FONT, + ANSI_VAR_FONT, + SYSTEM_FONT, + DEVICE_DEFAULT_FONT, + DEFAULT_PALETTE, + SYSTEM_FIXED_FONT, + DEFAULT_GUI_FONT = SYSTEM_FIXED_FONT + 1, +} +static if (_WIN32_WINNT >= 0x500) { + enum : int { + DC_BRUSH = DEFAULT_GUI_FONT + 1, + DC_PEN, + } +} + +static if (_WIN32_WINNT >= 0x500) { + const STOCK_LAST = DC_PEN; +} else { + const STOCK_LAST = DEFAULT_GUI_FONT; +} + +// Get/SetSystemPaletteUse() +enum : UINT { + SYSPAL_ERROR = 0, + SYSPAL_STATIC = 1, + SYSPAL_NOSTATIC = 2, + SYSPAL_NOSTATIC256 = 3, +} + +// SetTextAlign() +const UINT + TA_TOP = 0, + TA_CENTER = 6, + TA_BOTTOM = 8, + TA_BASELINE = 24, + TA_LEFT = 0, + TA_RIGHT = 2, + TA_RTLREADING = 256, + TA_NOUPDATECP = 0, + TA_UPDATECP = 1, + TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING, + VTA_BASELINE = TA_BASELINE, + VTA_CENTER = TA_CENTER, + VTA_LEFT = TA_BOTTOM, + VTA_RIGHT = TA_TOP, + VTA_BOTTOM = TA_RIGHT, + VTA_TOP = TA_LEFT; + +// EMRMODIFYWORLDTRANSFORM.iMode +enum : DWORD { + MWT_IDENTITY = 1, + MWT_LEFTMULTIPLY, + MWT_RIGHTMULTIPLY +} + +const DWORD + MWT_MIN = MWT_IDENTITY, + MWT_MAX = MWT_RIGHTMULTIPLY; + +enum { + TRANSPARENT = 1, + OPAQUE = 2 +} + +// Get/SetStretchMode() +enum : int { + BLACKONWHITE = 1, + WHITEONBLACK = 2, + COLORONCOLOR = 3, + HALFTONE = 4, + + STRETCH_ANDSCANS = 1, + STRETCH_ORSCANS = 2, + STRETCH_DELETESCANS = 3, + STRETCH_HALFTONE = 4, + + MAXSTRETCHBLTMODE = 4 +} + +// TranslateCharsetInfo() +enum : DWORD { + TCI_SRCCHARSET = 1, + TCI_SRCCODEPAGE = 2, + TCI_SRCFONTSIG = 3, + TCI_SRCLOCALE = 0x1000, +} + +// SetICMMode() +enum : int { + ICM_OFF = 1, + ICM_ON = 2, + ICM_QUERY = 3, + ICM_DONE_OUTSIDEDC = 4, +} + +// ---- +// Escape() Spooler Error Codes +enum : int { + SP_NOTREPORTED = 0x4000, + SP_ERROR = -1, + SP_APPABORT = -2, + SP_USERABORT = -3, + SP_OUTOFDISK = -4, + SP_OUTOFMEMORY = -5 +} + +// Escape(), ExtEscape() +// Most of the following are deprecated (Win16 only) +enum : int { + NEWFRAME = 1, + ABORTDOC = 2, + NEXTBAND = 3, + SETCOLORTABLE = 4, + GETCOLORTABLE = 5, + FLUSHOUTPUT = 6, + DRAFTMODE = 7, + QUERYESCSUPPORT = 8, + SETABORTPROC = 9, + STARTDOC = 10, + ENDDOC = 11, + GETPHYSPAGESIZE = 12, + GETPRINTINGOFFSET = 13, + GETSCALINGFACTOR = 14, + MFCOMMENT = 15, + GETPENWIDTH = 16, + SETCOPYCOUNT = 17, + SELECTPAPERSOURCE = 18, + DEVICEDATA = 19, + PASSTHROUGH = 19, + GETTECHNOLOGY = 20, + SETLINECAP = 21, + SETLINEJOIN = 22, + SETMITERLIMIT = 23, + BANDINFO = 24, + DRAWPATTERNRECT = 25, + GETVECTORPENSIZE = 26, + GETVECTORBRUSHSIZE = 27, + ENABLEDUPLEX = 28, + GETSETPAPERBINS = 29, + GETSETPRINTORIENT = 30, + ENUMPAPERBINS = 31, + SETDIBSCALING = 32, + EPSPRINTING = 33, + ENUMPAPERMETRICS = 34, + GETSETPAPERMETRICS = 35, + POSTSCRIPT_DATA = 37, + POSTSCRIPT_IGNORE = 38, + MOUSETRAILS = 39, + GETDEVICEUNITS = 42, + GETEXTENDEDTEXTMETRICS = 256, + GETEXTENTTABLE = 257, + GETPAIRKERNTABLE = 258, + GETTRACKKERNTABLE = 259, + EXTTEXTOUT = 512, + GETFACENAME = 513, + DOWNLOADFACE = 514, + ENABLERELATIVEWIDTHS = 768, + ENABLEPAIRKERNING = 769, + SETKERNTRACK = 770, + SETALLJUSTVALUES = 771, + SETCHARSET = 772, + STRETCHBLT = 2048, + METAFILE_DRIVER = 2049, + GETSETSCREENPARAMS = 3072, + QUERYDIBSUPPORT = 3073, + BEGIN_PATH = 4096, + CLIP_TO_PATH = 4097, + END_PATH = 4098, + EXT_DEVICE_CAPS = 4099, + RESTORE_CTM = 4100, + SAVE_CTM = 4101, + SET_ARC_DIRECTION = 4102, + SET_BACKGROUND_COLOR = 4103, + SET_POLY_MODE = 4104, + SET_SCREEN_ANGLE = 4105, + SET_SPREAD = 4106, + TRANSFORM_CTM = 4107, + SET_CLIP_BOX = 4108, + SET_BOUNDS = 4109, + SET_MIRROR_MODE = 4110, + OPENCHANNEL = 4110, + DOWNLOADHEADER = 4111, + CLOSECHANNEL = 4112, + POSTSCRIPT_PASSTHROUGH = 4115, + ENCAPSULATED_POSTSCRIPT = 4116, + POSTSCRIPT_IDENTIFY = 4117, + POSTSCRIPT_INJECTION = 4118, + CHECKJPEGFORMAT = 4119, + CHECKPNGFORMAT = 4120, + GET_PS_FEATURESETTING = 4121, + SPCLPASSTHROUGH2 = 4568, +} + +enum : int { + PSIDENT_GDICENTRIC = 0, + PSIDENT_PSCENTRIC = 1, +} + +/* + * Header structure for the input buffer to POSTSCRIPT_INJECTION escape + */ +struct PSINJECTDATA { + DWORD DataBytes; + WORD InjectionPoint; + WORD PageNumber; +} +alias PSINJECTDATA* PPSINJECTDATA; + +/* Constants for PSINJECTDATA.InjectionPoint field */ +enum { + PSINJECT_BEGINSTREAM = 1, + PSINJECT_PSADOBE = 2, + PSINJECT_PAGESATEND = 3, + PSINJECT_PAGES = 4, + PSINJECT_DOCNEEDEDRES = 5, + PSINJECT_DOCSUPPLIEDRES = 6, + PSINJECT_PAGEORDER = 7, + PSINJECT_ORIENTATION = 8, + PSINJECT_BOUNDINGBOX = 9, + PSINJECT_DOCUMENTPROCESSCOLORS = 10, + PSINJECT_COMMENTS = 11, + PSINJECT_BEGINDEFAULTS = 12, + PSINJECT_ENDDEFAULTS = 13, + PSINJECT_BEGINPROLOG = 14, + PSINJECT_ENDPROLOG = 15, + PSINJECT_BEGINSETUP = 16, + PSINJECT_ENDSETUP = 17, + PSINJECT_TRAILER = 18, + PSINJECT_EOF = 19, + PSINJECT_ENDSTREAM = 20, + PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21, + + PSINJECT_PAGENUMBER = 100, + PSINJECT_BEGINPAGESETUP = 101, + PSINJECT_ENDPAGESETUP = 102, + PSINJECT_PAGETRAILER = 103, + PSINJECT_PLATECOLOR = 104, + PSINJECT_SHOWPAGE = 105, + PSINJECT_PAGEBBOX = 106, + PSINJECT_ENDPAGECOMMENTS = 107, + + PSINJECT_VMSAVE = 200, + PSINJECT_VMRESTORE = 201, +} + +/* Parameter for GET_PS_FEATURESETTING escape */ +enum { + FEATURESETTING_NUP = 0, + FEATURESETTING_OUTPUT = 1, + FEATURESETTING_PSLEVEL = 2, + FEATURESETTING_CUSTPAPER = 3, + FEATURESETTING_MIRROR = 4, + FEATURESETTING_NEGATIVE = 5, + FEATURESETTING_PROTOCOL = 6, +} + +enum { + FEATURESETTING_PRIVATE_BEGIN = 0x1000, + FEATURESETTING_PRIVATE_END = 0x1FFF, +} + +/* Value returned for FEATURESETTING_PROTOCOL */ +const PSPROTOCOL_ASCII = 0; +const PSPROTOCOL_BCP = 1; +const PSPROTOCOL_TBCP = 2; +const PSPROTOCOL_BINARY = 3; + +// ---- + +const WPARAM PR_JOBSTATUS = 0; + +// ??? +const QDI_SETDIBITS = 1; +const QDI_GETDIBITS = 2; +const QDI_DIBTOSCREEN = 4; +const QDI_STRETCHDIB = 8; + +const ASPECT_FILTERING = 1; + +// LOGCOLORSPACE.lcsCSType +enum : LCSCSTYPE { + LCS_CALIBRATED_RGB = 0, + LCS_DEVICE_RGB, + LCS_DEVICE_CMYK +} /* What this for? */ + +// LOGCOLORSPACE.lcsIntent +enum : LCSGAMUTMATCH { + LCS_GM_BUSINESS = 1, + LCS_GM_GRAPHICS = 2, + LCS_GM_IMAGES = 4, + LCS_GM_ABS_COLORIMETRIC = 8, +} + +const DWORD + RASTER_FONTTYPE = 1, + DEVICE_FONTTYPE = 2, + TRUETYPE_FONTTYPE = 4; + +// --- +// DEVMODE struct + +// FIXME: Not needed for D (use .length instead) +const CCHDEVICENAME = 32; +const CCHFORMNAME = 32; + +// DEVMODE.dmSpecVersion +// current version of specification +const WORD DM_SPECVERSION = 0x0401; + +// DEVMODE.dmOrientation +enum : short { + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2 +} + +// DEVMODE.dmPaperSize +enum : short { + DMPAPER_LETTER = 1, + DMPAPER_LETTERSMALL, + DMPAPER_TABLOID, + DMPAPER_LEDGER, + DMPAPER_LEGAL, + DMPAPER_STATEMENT, + DMPAPER_EXECUTIVE, + DMPAPER_A3, + DMPAPER_A4, + DMPAPER_A4SMALL, + DMPAPER_A5, + DMPAPER_B4, + DMPAPER_B5, + DMPAPER_FOLIO, + DMPAPER_QUARTO, + DMPAPER_10X14, + DMPAPER_11X17, + DMPAPER_NOTE, + DMPAPER_ENV_9, + DMPAPER_ENV_10, + DMPAPER_ENV_11, + DMPAPER_ENV_12, + DMPAPER_ENV_14, + DMPAPER_CSHEET, + DMPAPER_DSHEET, + DMPAPER_ESHEET, + DMPAPER_ENV_DL, + DMPAPER_ENV_C5, + DMPAPER_ENV_C3, + DMPAPER_ENV_C4, + DMPAPER_ENV_C6, + DMPAPER_ENV_C65, + DMPAPER_ENV_B4, + DMPAPER_ENV_B5, + DMPAPER_ENV_B6, + DMPAPER_ENV_ITALY, + DMPAPER_ENV_MONARCH, + DMPAPER_ENV_PERSONAL, + DMPAPER_FANFOLD_US, + DMPAPER_FANFOLD_STD_GERMAN, + DMPAPER_FANFOLD_LGL_GERMAN, + DMPAPER_ISO_B4, + DMPAPER_JAPANESE_POSTCARD, + DMPAPER_9X11, + DMPAPER_10X11, + DMPAPER_15X11, + DMPAPER_ENV_INVITE, + DMPAPER_RESERVED_48, + DMPAPER_RESERVED_49, + DMPAPER_LETTER_EXTRA, + DMPAPER_LEGAL_EXTRA, + DMPAPER_TABLOID_EXTRA, + DMPAPER_A4_EXTRA, + DMPAPER_LETTER_TRANSVERSE, + DMPAPER_A4_TRANSVERSE, + DMPAPER_LETTER_EXTRA_TRANSVERSE, + DMPAPER_A_PLUS, + DMPAPER_B_PLUS, + DMPAPER_LETTER_PLUS, + DMPAPER_A4_PLUS, + DMPAPER_A5_TRANSVERSE, + DMPAPER_B5_TRANSVERSE, + DMPAPER_A3_EXTRA, + DMPAPER_A5_EXTRA, + DMPAPER_B5_EXTRA, + DMPAPER_A2, + DMPAPER_A3_TRANSVERSE, + DMPAPER_A3_EXTRA_TRANSVERSE // = 68 +} +static if (_WIN32_WINNT >= 0x500) { + enum : short { + DMPAPER_DBL_JAPANESE_POSTCARD = 69, + DMPAPER_A6, + DMPAPER_JENV_KAKU2, + DMPAPER_JENV_KAKU3, + DMPAPER_JENV_CHOU3, + DMPAPER_JENV_CHOU4, + DMPAPER_LETTER_ROTATED, + DMPAPER_A3_ROTATED, + DMPAPER_A4_ROTATED, + DMPAPER_A5_ROTATED, + DMPAPER_B4_JIS_ROTATED, + DMPAPER_B5_JIS_ROTATED, + DMPAPER_JAPANESE_POSTCARD_ROTATED, + DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED, + DMPAPER_A6_ROTATED, + DMPAPER_JENV_KAKU2_ROTATED, + DMPAPER_JENV_KAKU3_ROTATED, + DMPAPER_JENV_CHOU3_ROTATED, + DMPAPER_JENV_CHOU4_ROTATED, + DMPAPER_B6_JIS, + DMPAPER_B6_JIS_ROTATED, + DMPAPER_12X11, + DMPAPER_JENV_YOU4, + DMPAPER_JENV_YOU4_ROTATED, + DMPAPER_P16K, + DMPAPER_P32K, + DMPAPER_P32KBIG, + DMPAPER_PENV_1, + DMPAPER_PENV_2, + DMPAPER_PENV_3, + DMPAPER_PENV_4, + DMPAPER_PENV_5, + DMPAPER_PENV_6, + DMPAPER_PENV_7, + DMPAPER_PENV_8, + DMPAPER_PENV_9, + DMPAPER_PENV_10, + DMPAPER_P16K_ROTATED, + DMPAPER_P32K_ROTATED, + DMPAPER_P32KBIG_ROTATED, + DMPAPER_PENV_1_ROTATED, + DMPAPER_PENV_2_ROTATED, + DMPAPER_PENV_3_ROTATED, + DMPAPER_PENV_4_ROTATED, + DMPAPER_PENV_5_ROTATED, + DMPAPER_PENV_6_ROTATED, + DMPAPER_PENV_7_ROTATED, + DMPAPER_PENV_8_ROTATED, + DMPAPER_PENV_9_ROTATED, + DMPAPER_PENV_10_ROTATED // 118 + } +} + +const short DMPAPER_FIRST = DMPAPER_LETTER; + +static if (_WIN32_WINNT >= 0x500) { + const short DMPAPER_LAST = DMPAPER_PENV_10_ROTATED; +} else { + const short DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE; +} + +const short DMPAPER_USER = 256; + + +// DEVMODE.dmDefaultSource +enum : short { + DMBIN_ONLYONE = 1, + DMBIN_UPPER = 1, + DMBIN_LOWER, + DMBIN_MIDDLE, + DMBIN_MANUAL, + DMBIN_ENVELOPE, + DMBIN_ENVMANUAL, + DMBIN_AUTO, + DMBIN_TRACTOR, + DMBIN_SMALLFMT, + DMBIN_LARGEFMT, + DMBIN_LARGECAPACITY, // = 11 + DMBIN_CASSETTE = 14, + DMBIN_FORMSOURCE, +} +enum : short { + DMBIN_FIRST = DMBIN_UPPER, + DMBIN_LAST = DMBIN_FORMSOURCE, + DMBIN_USER = 256, +} + +// DEVMODE.dmPrintQuality +enum : short { + DMRES_DRAFT = -1, + DMRES_LOW = -2, + DMRES_MEDIUM = -3, + DMRES_HIGH = -4 +} + +// DEVMODE.dmColor +enum : short { + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2 +} + +// DEVMODE.dmDuplex +enum : short { + DMDUP_SIMPLEX = 1, + DMDUP_VERTICAL = 2, + DMDUP_HORIZONTAL = 3 +} + +// DEVMODE.dmTTOption +enum : short { + DMTT_BITMAP = 1, + DMTT_DOWNLOAD, + DMTT_SUBDEV, + DMTT_DOWNLOAD_OUTLINE +} + +// DEVMODE.dmCollate +enum : short { + DMCOLLATE_FALSE = 0, + DMCOLLATE_TRUE +} + +static if (_WIN32_WINNT >= 0x501) { + /* DEVMODE dmDisplayOrientation specifiations */ + enum : short { + DMDO_DEFAULT = 0, + DMDO_90 = 1, + DMDO_180 = 2, + DMDO_270 = 3, + } + + /* DEVMODE dmDisplayFixedOutput specifiations */ + enum : short { + DMDFO_DEFAULT = 0, + DMDFO_STRETCH = 1, + DMDFO_CENTER = 2, + } +} + + +/* FIXME: this flags are deprecated ? */ +// DEVMODE.dmDisplayFlags +const DWORD + DM_GRAYSCALE = 1, + DM_INTERLACED = 2; + +const DWORD + DMDISPLAYFLAGS_TEXTMODE = 0x00000004; + +/* dmNup , multiple logical page per physical page options */ +const DWORD + DMNUP_SYSTEM = 1, + DMNUP_ONEUP = 2; + +// DEVMODE.dmFields +const DWORD + DM_ORIENTATION = 0x00000001, + DM_PAPERSIZE = 0x00000002, + DM_PAPERLENGTH = 0x00000004, + DM_PAPERWIDTH = 0x00000008, + DM_SCALE = 0x00000010; +static if (_WIN32_WINNT >= 0x500) { + const DWORD + DM_POSITION = 0x00000020, + DM_NUP = 0x00000040; +} +static if (_WIN32_WINNT >= 0x501) { + const DWORD + DM_DISPLAYORIENTATION = 0x00000080; +} +const DWORD + DM_COPIES = 0x00000100, + DM_DEFAULTSOURCE = 0x00000200, + DM_PRINTQUALITY = 0x00000400, + DM_COLOR = 0x00000800, + DM_DUPLEX = 0x00001000, + DM_YRESOLUTION = 0x00002000, + DM_TTOPTION = 0x00004000, + DM_COLLATE = 0x00008000, + DM_FORMNAME = 0x00010000, + DM_LOGPIXELS = 0x00020000, + DM_BITSPERPEL = 0x00040000, + DM_PELSWIDTH = 0x00080000, + DM_PELSHEIGHT = 0x00100000, + DM_DISPLAYFLAGS = 0x00200000, + DM_DISPLAYFREQUENCY = 0x00400000, + DM_ICMMETHOD = 0x00800000, + DM_ICMINTENT = 0x01000000, + DM_MEDIATYPE = 0x02000000, + DM_DITHERTYPE = 0x04000000, + DM_PANNINGWIDTH = 0x08000000, + DM_PANNINGHEIGHT = 0x10000000; +static if (_WIN32_WINNT >= 0x501) { + const DWORD + DM_DISPLAYFIXEDOUTPUT = 0x20000000; +} + +// DEVMODE.dmICMMethod +enum : DWORD { + DMICMMETHOD_NONE = 1, + DMICMMETHOD_SYSTEM = 2, + DMICMMETHOD_DRIVER = 3, + DMICMMETHOD_DEVICE = 4, + DMICMMETHOD_USER = 256 +} + +// DEVMODE.dmICMIntent +enum : DWORD { + DMICM_SATURATE = 1, + DMICM_CONTRAST = 2, + DMICM_COLORIMETRIC = 3, + DMICM_ABS_COLORIMETRIC = 4, + DMICM_USER = 256 +} + +// DEVMODE.dmMediaType +enum : DWORD { + DMMEDIA_STANDARD = 1, + DMMEDIA_TRANSPARENCY = 2, + DMMEDIA_GLOSSY = 3, + DMMEDIA_USER = 256 +} + +// DEVMODE.dmDitherType +enum : DWORD { + DMDITHER_NONE = 1, + DMDITHER_COARSE, + DMDITHER_FINE, + DMDITHER_LINEART, + DMDITHER_ERRORDIFFUSION, + DMDITHER_RESERVED6, + DMDITHER_RESERVED7, + DMDITHER_RESERVED8, + DMDITHER_RESERVED9, + DMDITHER_GRAYSCALE, + DMDITHER_USER = 256 +} + +// ---- +// DocumentProperties() +const DWORD + DM_UPDATE = 1, + DM_COPY = 2, + DM_PROMPT = 4, + DM_MODIFY = 8, + DM_IN_BUFFER = DM_MODIFY, + DM_IN_PROMPT = DM_PROMPT, + DM_OUT_BUFFER = DM_COPY, + DM_OUT_DEFAULT = DM_UPDATE; +// --- + +const GDI_ERROR = 0xFFFFFFFF; +const HGDI_ERROR= cast(HANDLE)GDI_ERROR; + +// TEXTMETRIC.tmPitchAndFamily +const BYTE + TMPF_FIXED_PITCH = 1, + TMPF_VECTOR = 2, + TMPF_TRUETYPE = 4, + TMPF_DEVICE = 8; + +// NEWTEXTMETRIC.ntmFlags +const DWORD + NTM_ITALIC = 0x00000001, + NTM_BOLD = 0x00000020, + NTM_REGULAR = 0x00000040, + NTM_NONNEGATIVE_AC = 0x00010000, + NTM_PS_OPENTYPE = 0x00020000, + NTM_TT_OPENTYPE = 0x00040000, + NTM_MULTIPLEMASTER = 0x00080000, + NTM_TYPE1 = 0x00100000, + NTM_DSIG = 0x00200000; + +// --- +const DWORD TT_POLYGON_TYPE = 24; + +// TTPOLYCURVE +enum : WORD { + TT_PRIM_LINE = 1, + TT_PRIM_QSPLINE = 2, + TT_PRIM_CSPLINE = 3, +} +// --- +const FONTMAPPER_MAX = 10; +const ENHMETA_STOCK_OBJECT = 0x80000000; +const WGL_FONT_LINES = 0; +const WGL_FONT_POLYGONS = 1; + +// --- +// LAYERPLANEDESCRIPTOR.dwFlags +const DWORD + LPD_DOUBLEBUFFER = 1, + LPD_STEREO = 2, + LPD_SUPPORT_GDI = 16, + LPD_SUPPORT_OPENGL = 32, + LPD_SHARE_DEPTH = 64, + LPD_SHARE_STENCIL = 128, + LPD_SHARE_ACCUM = 256, + LPD_SWAP_EXCHANGE = 512, + LPD_SWAP_COPY = 1024, + LPD_TRANSPARENT = 4096; + +// LAYERPLANEDESCRIPTOR.iPixelType +enum : BYTE { + LPD_TYPE_RGBA = 0, + LPD_TYPE_COLORINDEX = 1 +} + +// --- + +// wglSwapLayerBuffers() +const UINT + WGL_SWAP_MAIN_PLANE = 1, + WGL_SWAP_OVERLAY1 = 2, + WGL_SWAP_OVERLAY2 = 4, + WGL_SWAP_OVERLAY3 = 8, + WGL_SWAP_OVERLAY4 = 16, + WGL_SWAP_OVERLAY5 = 32, + WGL_SWAP_OVERLAY6 = 64, + WGL_SWAP_OVERLAY7 = 128, + WGL_SWAP_OVERLAY8 = 256, + WGL_SWAP_OVERLAY9 = 512, + WGL_SWAP_OVERLAY10 = 1024, + WGL_SWAP_OVERLAY11 = 2048, + WGL_SWAP_OVERLAY12 = 4096, + WGL_SWAP_OVERLAY13 = 8192, + WGL_SWAP_OVERLAY14 = 16384, + WGL_SWAP_OVERLAY15 = 32768, + WGL_SWAP_UNDERLAY1 = 65536, + WGL_SWAP_UNDERLAY2 = 0x20000, + WGL_SWAP_UNDERLAY3 = 0x40000, + WGL_SWAP_UNDERLAY4 = 0x80000, + WGL_SWAP_UNDERLAY5 = 0x100000, + WGL_SWAP_UNDERLAY6 = 0x200000, + WGL_SWAP_UNDERLAY7 = 0x400000, + WGL_SWAP_UNDERLAY8 = 0x800000, + WGL_SWAP_UNDERLAY9 = 0x1000000, + WGL_SWAP_UNDERLAY10 = 0x2000000, + WGL_SWAP_UNDERLAY11 = 0x4000000, + WGL_SWAP_UNDERLAY12 = 0x8000000, + WGL_SWAP_UNDERLAY13 = 0x10000000, + WGL_SWAP_UNDERLAY14 = 0x20000000, + WGL_SWAP_UNDERLAY15 = 0x40000000; + +const AC_SRC_OVER = 0x00; +const AC_SRC_ALPHA = 0x01; + +// ??? +const AC_SRC_NO_PREMULT_ALPHA = 0x01; +const AC_SRC_NO_ALPHA = 0x02; +const AC_DST_NO_PREMULT_ALPHA = 0x10; +const AC_DST_NO_ALPHA = 0x20; + +const LAYOUT_RTL = 1; +const LAYOUT_BTT = 2; +const LAYOUT_VBH = 4; +const LAYOUT_BITMAPORIENTATIONPRESERVED = 8; + +const CS_ENABLE = 0x00000001; +const CS_DISABLE = 0x00000002; +const CS_DELETE_TRANSFORM = 0x00000003; + +static if (_WIN32_WINNT > 0x500) { + const GRADIENT_FILL_RECT_H=0x00; + const GRADIENT_FILL_RECT_V=0x01; + const GRADIENT_FILL_TRIANGLE=0x02; + const GRADIENT_FILL_OP_FLAG=0xff; + const COLORMATCHTOTARGET_EMBEDED=0x00000001; + const CREATECOLORSPACE_EMBEDED=0x00000001; + const SETICMPROFILE_EMBEDED=0x00000001; +} + +// DISPLAY_DEVICE.StateFlags +const DWORD + DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001, + DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002, + DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004, + DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008, + DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010, + DISPLAY_DEVICE_REMOVABLE = 0x00000020, + DISPLAY_DEVICE_DISCONNECT = 0x02000000, + DISPLAY_DEVICE_REMOTE = 0x04000000, + DISPLAY_DEVICE_MODESPRUNED = 0x08000000; + +/* Child device state */ +const DWORD + DISPLAY_DEVICE_ACTIVE = 0x00000001, + DISPLAY_DEVICE_ATTACHED = 0x00000002; + +static if (_WIN32_WINNT >= 0x500) { + const GGI_MARK_NONEXISTING_GLYPHS = 1; +} + +// ---------- +// STRUCTS +// ---------- + +struct ABC { + int abcA; + UINT abcB; + int abcC; +} +alias ABC* PABC, NPABC, LPABC; + +struct ABCFLOAT { + FLOAT abcfA; + FLOAT abcfB; + FLOAT abcfC; +} +alias ABCFLOAT* PABCFLOAT, NPABCFLOAT, LPABCFLOAT; + +struct BITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; +} +alias BITMAP* PBITMAP, NPBITMAP, LPBITMAP; + +struct BITMAPCOREHEADER { + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; +} +alias BITMAPCOREHEADER* PBITMAPCOREHEADER, LPBITMAPCOREHEADER; + +align(1): +struct RGBTRIPLE { + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; +} +alias RGBTRIPLE* LPRGBTRIPLE; + +align(2): +struct BITMAPFILEHEADER { + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; +} +alias BITMAPFILEHEADER* LPBITMAPFILEHEADER, PBITMAPFILEHEADER; + +align: + +struct BITMAPCOREINFO { + BITMAPCOREHEADER bmciHeader; + RGBTRIPLE[1] bmciColors; +} +alias BITMAPCOREINFO* LPBITMAPCOREINFO, PBITMAPCOREINFO; + +struct BITMAPINFOHEADER { + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} + +alias BITMAPINFOHEADER* LPBITMAPINFOHEADER, PBITMAPINFOHEADER; + +struct RGBQUAD { + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; +}; +alias RGBQUAD* LPRGBQUAD; + +struct BITMAPINFO { + BITMAPINFOHEADER bmiHeader; + RGBQUAD[1] bmiColors; +}; +alias BITMAPINFO* PBITMAPINFO, LPBITMAPINFO; + +alias int FXPT16DOT16; +alias int* LPFXPT16DOT16; +alias int FXPT2DOT30; +alias int* LPFXPT2DOT30; + +struct CIEXYZ { + FXPT2DOT30 ciexyzX; + FXPT2DOT30 ciexyzY; + FXPT2DOT30 ciexyzZ; +} +alias CIEXYZ* LPCIEXYZ; + +struct CIEXYZTRIPLE { + CIEXYZ ciexyzRed; + CIEXYZ ciexyzGreen; + CIEXYZ ciexyzBlue; +} +alias CIEXYZTRIPLE* LPCIEXYZTRIPLE; + +struct BITMAPV4HEADER { + DWORD bV4Size; + LONG bV4Width; + LONG bV4Height; + WORD bV4Planes; + WORD bV4BitCount; + DWORD bV4V4Compression; + DWORD bV4SizeImage; + LONG bV4XPelsPerMeter; + LONG bV4YPelsPerMeter; + DWORD bV4ClrUsed; + DWORD bV4ClrImportant; + DWORD bV4RedMask; + DWORD bV4GreenMask; + DWORD bV4BlueMask; + DWORD bV4AlphaMask; + DWORD bV4CSType; + CIEXYZTRIPLE bV4Endpoints; + DWORD bV4GammaRed; + DWORD bV4GammaGreen; + DWORD bV4GammaBlue; +} +alias BITMAPV4HEADER* LPBITMAPV4HEADER, PBITMAPV4HEADER; + +struct BITMAPV5HEADER { + DWORD bV5Size; + LONG bV5Width; + LONG bV5Height; + WORD bV5Planes; + WORD bV5BitCount; + DWORD bV5Compression; + DWORD bV5SizeImage; + LONG bV5XPelsPerMeter; + LONG bV5YPelsPerMeter; + DWORD bV5ClrUsed; + DWORD bV5ClrImportant; + DWORD bV5RedMask; + DWORD bV5GreenMask; + DWORD bV5BlueMask; + DWORD bV5AlphaMask; + DWORD bV5CSType; + CIEXYZTRIPLE bV5Endpoints; + DWORD bV5GammaRed; + DWORD bV5GammaGreen; + DWORD bV5GammaBlue; + DWORD bV5Intent; + DWORD bV5ProfileData; + DWORD bV5ProfileSize; + DWORD bV5Reserved; +} +alias BITMAPV5HEADER* LPBITMAPV5HEADER, PBITMAPV5HEADER; + +struct FONTSIGNATURE { + DWORD[4] fsUsb; + DWORD[2] fsCsb; +} +alias FONTSIGNATURE* PFONTSIGNATURE, LPFONTSIGNATURE; + +struct CHARSETINFO { + UINT ciCharset; + UINT ciACP; + FONTSIGNATURE fs; +} +alias CHARSETINFO* PCHARSETINFO, NPCHARSETINFO, LPCHARSETINFO; + +struct COLORADJUSTMENT { + WORD caSize; + WORD caFlags; + WORD caIlluminantIndex; + WORD caRedGamma; + WORD caGreenGamma; + WORD caBlueGamma; + WORD caReferenceBlack; + WORD caReferenceWhite; + SHORT caContrast; + SHORT caBrightness; + SHORT caColorfulness; + SHORT caRedGreenTint; +} +alias COLORADJUSTMENT* PCOLORADJUSTMENT, LPCOLORADJUSTMENT; + +struct DEVMODEA { + BYTE[CCHDEVICENAME] dmDeviceName; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union { + struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE[CCHFORMNAME] dmFormName; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union { + DWORD dmDisplayFlags; + DWORD dmNup; + } + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; +} +alias DEVMODEA* PDEVMODEA, NPDEVMODEA, LPDEVMODEA; + +struct DEVMODEW { + WCHAR[CCHDEVICENAME] dmDeviceName; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union { + struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } + + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR[CCHFORMNAME] dmFormName; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union { + DWORD dmDisplayFlags; + DWORD dmNup; + } + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; +} +alias DEVMODEW* PDEVMODEW, NPDEVMODEW, LPDEVMODEW; + +/* + * Information about output options + */ +struct PSFEATURE_OUTPUT { + BOOL bPageIndependent; + BOOL bSetPageDevice; +} +alias PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT; + +/* + * Information about custom paper size + */ +struct PSFEATURE_CUSTPAPER { + LONG lOrientation; + LONG lWidth; + LONG lHeight; + LONG lWidthOffset; + LONG lHeightOffset; +} +alias PSFEATURE_CUSTPAPER* PPSFEATURE_CUSTPAPER; + +struct DIBSECTION { + BITMAP dsBm; + BITMAPINFOHEADER dsBmih; + DWORD[3] dsBitfields; + HANDLE dshSection; + DWORD dsOffset; +} +alias DIBSECTION* PDIBSECTION; + +struct DOCINFOA { + int cbSize = DOCINFOA.sizeof; + LPCSTR lpszDocName; + LPCSTR lpszOutput; + LPCSTR lpszDatatype; + DWORD fwType; +} +alias DOCINFOA* LPDOCINFOA; + +struct DOCINFOW { + int cbSize = DOCINFOW.sizeof; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; + LPCWSTR lpszDatatype; + DWORD fwType; +} +alias DOCINFOW* LPDOCINFOW; + + +struct PANOSE { + BYTE bFamilyType; + BYTE bSerifStyle; + BYTE bWeight; + BYTE bProportion; + BYTE bContrast; + BYTE bStrokeVariation; + BYTE bArmStyle; + BYTE bLetterform; + BYTE bMidline; + BYTE bXHeight; +} +alias PANOSE* LPPANOSE; + +struct LOGFONTA { + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + CHAR[LF_FACESIZE] lfFaceName; +} +alias LOGFONTA* PLOGFONTA, NPLOGFONTA, LPLOGFONTA; + +struct LOGFONTW { + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + WCHAR[LF_FACESIZE] lfFaceName; +} +alias LOGFONTW* PLOGFONTW, NPLOGFONTW, LPLOGFONTW; + +struct EXTLOGFONTA { + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE[ELF_VENDOR_SIZE] elfVendorId; + DWORD elfCulture; + PANOSE elfPanose; +} +alias EXTLOGFONTA* PEXTLOGFONTA, NPEXTLOGFONTA, LPEXTLOGFONTA; + +struct EXTLOGFONTW { + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE[ELF_VENDOR_SIZE] elfVendorId; + DWORD elfCulture; + PANOSE elfPanose; +} +alias EXTLOGFONTW* PEXTLOGFONTW, NPEXTLOGFONTW, LPEXTLOGFONTW; + +struct LOGPEN { + UINT lopnStyle; + POINT lopnWidth; + COLORREF lopnColor; +} +alias LOGPEN* PLOGPEN, NPLOGPEN, LPLOGPEN; + +// ---------------------- EMR ------------ + +struct EMR { + DWORD iType; + DWORD nSize; +} +alias EMR* PEMR; + +struct EMRANGLEARC { + EMR emr; + POINTL ptlCenter; + DWORD nRadius; + FLOAT eStartAngle; + FLOAT eSweepAngle; +} +alias EMRANGLEARC* PEMRANGLEARC; + +struct EMRARC { + EMR emr; + RECTL rclBox; + POINTL ptlStart; + POINTL ptlEnd; +} +alias EMRARC* PEMRARC; +alias TypeDef!(EMRARC) EMRARCTO; +alias EMRARCTO* PEMRARCTO; +alias TypeDef!(EMRARC) EMRCHORD; +alias EMRCHORD* PEMRCHORD; +alias TypeDef!(EMRARC) EMRPIE; +alias EMRPIE* PEMRPIE; + +struct XFORM { + FLOAT eM11; + FLOAT eM12; + FLOAT eM21; + FLOAT eM22; + FLOAT eDx; + FLOAT eDy; +} +alias XFORM* PXFORM, LPXFORM; + +struct EMRBITBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; +} +alias EMRBITBLT* PEMRBITBLT; + +struct LOGBRUSH { + UINT lbStyle; + COLORREF lbColor; + LONG lbHatch; +} +alias TypeDef!(LOGBRUSH) PATTERN; +alias LOGBRUSH* PLOGBRUSH, NPLOGBRUSH, LPLOGBRUSH; +alias PATTERN* PPATTERN, NPPATTERN, LPPATTERN; + +struct LOGBRUSH32 { + UINT lbStyle; + COLORREF lbColor; + ULONG lbHatch; +} +alias LOGBRUSH32* PLOGBRUSH32, NPLOGBRUSH32, LPLOGBRUSH32; + +struct EMRCREATEBRUSHINDIRECT { + EMR emr; + DWORD ihBrush; + LOGBRUSH32 lb; +} +alias EMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT; + +alias LONG LCSCSTYPE, LCSGAMUTMATCH; + +struct LOGCOLORSPACEA { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + CHAR[MAX_PATH] lcsFilename; +} +alias LOGCOLORSPACEA* LPLOGCOLORSPACEA; + +struct LOGCOLORSPACEW { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + WCHAR[MAX_PATH] lcsFilename; +} +alias LOGCOLORSPACEW* LPLOGCOLORSPACEW; + +alias USHORT COLOR16; +struct TRIVERTEX { + LONG x; + LONG y; + COLOR16 Red; + COLOR16 Green; + COLOR16 Blue; + COLOR16 Alpha; +} +alias TRIVERTEX* PTRIVERTEX, LPTRIVERTEX; + +struct EMRGLSRECORD { + EMR emr; + DWORD cbData; + BYTE[1] Data; +} +alias EMRGLSRECORD* PEMRGLSRECORD; + +struct EMRGLSBOUNDEDRECORD { + EMR emr; + RECTL rclBounds; + DWORD cbData; + BYTE[1] Data; +} +alias EMRGLSBOUNDEDRECORD* PEMRGLSBOUNDEDRECORD; + +struct EMRPIXELFORMAT { + EMR emr; + PIXELFORMATDESCRIPTOR pfd; +} +alias EMRPIXELFORMAT* PEMRPIXELFORMAT; + +struct EMRCREATECOLORSPACE { + EMR emr; + DWORD ihCS; + LOGCOLORSPACE lcs; +} +alias EMRCREATECOLORSPACE* PEMRCREATECOLORSPACE; + +struct EMRSETCOLORSPACE { + EMR emr; + DWORD ihCS; +} +alias EMRSETCOLORSPACE* PEMRSETCOLORSPACE; +alias TypeDef!(EMRSETCOLORSPACE) EMRSELECTCOLORSPACE; +alias EMRSELECTCOLORSPACE* PEMRSELECTCOLORSPACE; +alias TypeDef!(EMRSETCOLORSPACE) EMRDELETECOLORSPACE; +alias EMRDELETECOLORSPACE* PEMRDELETECOLORSPACE; + +static if (_WIN32_WINNT >= 0x500) { + + struct EMREXTESCAPE { + EMR emr; + INT iEscape; + INT cbEscData; + BYTE[1] EscData; + } + alias EMREXTESCAPE* PEMREXTESCAPE; + alias TypeDef!(EMREXTESCAPE) EMRDRAWESCAPE; + alias EMRDRAWESCAPE* PEMRDRAWESCAPE; + + struct EMRNAMEDESCAPE { + EMR emr; + INT iEscape; + INT cbDriver; + INT cbEscData; + BYTE[1] EscData; + } + alias EMRNAMEDESCAPE* PEMRNAMEDESCAPE; + + struct EMRSETICMPROFILE { + EMR emr; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE[1] Data; + } + alias EMRSETICMPROFILE* PEMRSETICMPROFILE; + alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEA; + alias EMRSETICMPROFILEA* PEMRSETICMPROFILEA; + alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEW; + alias EMRSETICMPROFILEW* PEMRSETICMPROFILEW; + + struct EMRCREATECOLORSPACEW { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEW lcs; + DWORD dwFlags; + DWORD cbData; + BYTE[1] Data; + } + alias EMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW; + + struct EMRCOLORMATCHTOTARGET { + EMR emr; + DWORD dwAction; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE[1] Data; + } + alias EMRCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET; + + struct EMRCOLORCORRECTPALETTE { + EMR emr; + DWORD ihPalette; + DWORD nFirstEntry; + DWORD nPalEntries; + DWORD nReserved; + } + alias EMRCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE; + + struct EMRALPHABLEND { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; + } + alias EMRALPHABLEND* PEMRALPHABLEND; + + struct EMRGRADIENTFILL { + EMR emr; + RECTL rclBounds; + DWORD nVer; + DWORD nTri; + ULONG ulMode; + TRIVERTEX[1] Ver; + } + alias EMRGRADIENTFILL* PEMRGRADIENTFILL; + + struct EMRTRANSPARENTBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; + } + alias EMRTRANSPARENTBLT* PEMRTRANSPARENTBLT; +} + +struct EMRCREATEDIBPATTERNBRUSHPT { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} +alias EMRCREATEDIBPATTERNBRUSHPT* PEMRCREATEDIBPATTERNBRUSHPT; + +struct EMRCREATEMONOBRUSH { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} +alias EMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH; + +struct PALETTEENTRY { + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; +} +alias PALETTEENTRY* PPALETTEENTRY, LPPALETTEENTRY; + +struct LOGPALETTE { + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY[1] palPalEntry; +} +alias LOGPALETTE* PLOGPALETTE, NPLOGPALETTE, LPLOGPALETTE; + +struct EMRCREATEPALETTE { + EMR emr; + DWORD ihPal; + LOGPALETTE lgpl; +} +alias EMRCREATEPALETTE* PEMRCREATEPALETTE; + +struct EMRCREATEPEN { + EMR emr; + DWORD ihPen; + LOGPEN lopn; +} +alias EMRCREATEPEN* PEMRCREATEPEN; + +struct EMRELLIPSE { + EMR emr; + RECTL rclBox; +} +alias EMRELLIPSE* PEMRELLIPSE; + +alias TypeDef!(EMRELLIPSE) EMRRECTANGLE; +alias EMRRECTANGLE* PEMRRECTANGLE; + +struct EMREOF { + EMR emr; + DWORD nPalEntries; + DWORD offPalEntries; + DWORD nSizeLast; +} +alias EMREOF* PEMREOF; + +struct EMREXCLUDECLIPRECT { + EMR emr; + RECTL rclClip; +} +alias EMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT; +alias TypeDef!(EMREXCLUDECLIPRECT) EMRINTERSECTCLIPRECT; +alias EMRINTERSECTCLIPRECT* PEMRINTERSECTCLIPRECT; + +struct EMREXTCREATEFONTINDIRECTW { + EMR emr; + DWORD ihFont; + EXTLOGFONTW elfw; +} +alias EMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW; + +struct EXTLOGPEN { + UINT elpPenStyle; + UINT elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + LONG elpHatch; + DWORD elpNumEntries; + DWORD[1] elpStyleEntry; +} +alias EXTLOGPEN* PEXTLOGPEN, NPEXTLOGPEN, LPEXTLOGPEN; + +struct EMREXTCREATEPEN { + EMR emr; + DWORD ihPen; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; + EXTLOGPEN elp; +} +alias EMREXTCREATEPEN* PEMREXTCREATEPEN; + +struct EMREXTFLOODFILL { + EMR emr; + POINTL ptlStart; + COLORREF crColor; + DWORD iMode; +} +alias EMREXTFLOODFILL* PEMREXTFLOODFILL; + +struct EMREXTSELECTCLIPRGN { + EMR emr; + DWORD cbRgnData; + DWORD iMode; + BYTE [1]RgnData; +} +alias EMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN; + +struct EMRTEXT { + POINTL ptlReference; + DWORD nChars; + DWORD offString; + DWORD fOptions; + RECTL rcl; + DWORD offDx; +} +alias EMRTEXT* PEMRTEXT; + +struct EMREXTTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + EMRTEXT emrtext; +} +alias EMREXTTEXTOUTA* PEMREXTTEXTOUTA; +alias TypeDef!(EMREXTTEXTOUTA) EMREXTTEXTOUTW; +alias EMREXTTEXTOUTW* PEMREXTTEXTOUTW; + +struct EMRFILLPATH { + EMR emr; + RECTL rclBounds; +} +alias EMRFILLPATH* PEMRFILLPATH; + +alias TypeDef!(EMRFILLPATH) EMRSTROKEANDFILLPATH; +alias EMRSTROKEANDFILLPATH* PEMRSTROKEANDFILLPATH; + +alias TypeDef!(EMRFILLPATH) EMRSTROKEPATH; +alias EMRSTROKEPATH* PEMRSTROKEPATH; + +struct EMRFILLRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + BYTE[1] RgnData; +} +alias EMRFILLRGN* PEMRFILLRGN; + +struct EMRFORMAT { + DWORD dSignature; + DWORD nVersion; + DWORD cbData; + DWORD offData; +} +alias EMRFORMAT* PEMRFORMAT; + +struct EMRFRAMERGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + SIZEL szlStroke; + BYTE[1] RgnData; +} +alias EMRFRAMERGN* PEMRFRAMERGN; + +struct EMRGDICOMMENT { + EMR emr; + DWORD cbData; + BYTE[1] Data; +} +alias EMRGDICOMMENT* PEMRGDICOMMENT; + +struct EMRINVERTRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + BYTE[1] RgnData; +} +alias EMRINVERTRGN* PEMRINVERTRGN; +alias TypeDef!(EMRINVERTRGN) EMRPAINTRGN; +alias EMRPAINTRGN* PEMRPAINTRGN; + +struct EMRLINETO { + EMR emr; + POINTL ptl; +} +alias EMRLINETO* PEMRLINETO; +alias TypeDef!(EMRLINETO) EMRMOVETOEX; +alias EMRMOVETOEX* PEMRMOVETOEX; + +struct EMRMASKBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG xMask; + LONG yMask; + DWORD iUsageMask; + DWORD offBmiMask; + DWORD cbBmiMask; + DWORD offBitsMask; + DWORD cbBitsMask; +} +alias EMRMASKBLT* PEMRMASKBLT; + +struct EMRMODIFYWORLDTRANSFORM { + EMR emr; + XFORM xform; + DWORD iMode; +} +alias EMRMODIFYWORLDTRANSFORM* PEMRMODIFYWORLDTRANSFORM; + +struct EMROFFSETCLIPRGN { + EMR emr; + POINTL ptlOffset; +} +alias EMROFFSETCLIPRGN* PEMROFFSETCLIPRGN; + +struct EMRPLGBLT { + EMR emr; + RECTL rclBounds; + POINTL[3] aptlDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG xMask; + LONG yMask; + DWORD iUsageMask; + DWORD offBmiMask; + DWORD cbBmiMask; + DWORD offBitsMask; + DWORD cbBitsMask; +} +alias EMRPLGBLT* PEMRPLGBLT; + +struct EMRPOLYDRAW { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL[1] aptl; + BYTE[1] abTypes; +} +alias EMRPOLYDRAW* PEMRPOLYDRAW; + +struct EMRPOLYDRAW16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS[1] apts; + BYTE[1] abTypes; +} +alias EMRPOLYDRAW16* PEMRPOLYDRAW16; + +struct EMRPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL[1] aptl; +} +alias EMRPOLYLINE* PEMRPOLYLINE; +alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIER; +alias EMRPOLYBEZIER* PEMRPOLYBEZIER; +alias TypeDef!(EMRPOLYLINE) EMRPOLYGON; +alias EMRPOLYGON* PEMRPOLYGON; +alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIERTO; +alias EMRPOLYBEZIERTO* PEMRPOLYBEZIERTO; +alias TypeDef!(EMRPOLYLINE) EMRPOLYLINETO; +alias EMRPOLYLINETO* PEMRPOLYLINETO; + +struct EMRPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS[1] apts; +} +alias EMRPOLYLINE16* PEMRPOLYLINE16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIER16; +alias EMRPOLYBEZIER16* PEMRPOLYBEZIER16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYGON16; +alias EMRPOLYGON16* PEMRPOLYGON16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIERTO16; +alias EMRPOLYBEZIERTO16* PEMRPOLYBEZIERTO16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYLINETO16; +alias EMRPOLYLINETO16* PEMRPOLYLINETO16; + +struct EMRPOLYPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cptl; + DWORD[1] aPolyCounts; + POINTL[1] aptl; +} +alias EMRPOLYPOLYLINE* PEMRPOLYPOLYLINE; +alias TypeDef!(EMRPOLYPOLYLINE) EMRPOLYPOLYGON; +alias EMRPOLYPOLYGON* PEMRPOLYPOLYGON; + +struct EMRPOLYPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cpts; + DWORD[1] aPolyCounts; + POINTS[1] apts; +} +alias EMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16; +alias TypeDef!(EMRPOLYPOLYLINE16) EMRPOLYPOLYGON16; +alias EMRPOLYPOLYGON16* PEMRPOLYPOLYGON16; + +struct EMRPOLYTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + LONG cStrings; + EMRTEXT[1] aemrtext; +} +alias EMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA; +alias TypeDef!(EMRPOLYTEXTOUTA) EMRPOLYTEXTOUTW; +alias EMRPOLYTEXTOUTW* PEMRPOLYTEXTOUTW; + +struct EMRRESIZEPALETTE { + EMR emr; + DWORD ihPal; + DWORD cEntries; +} +alias EMRRESIZEPALETTE* PEMRRESIZEPALETTE; + +struct EMRRESTOREDC { + EMR emr; + LONG iRelative; +} +alias EMRRESTOREDC* PEMRRESTOREDC; + +struct EMRROUNDRECT { + EMR emr; + RECTL rclBox; + SIZEL szlCorner; +} +alias EMRROUNDRECT* PEMRROUNDRECT; + +struct EMRSCALEVIEWPORTEXTEX { + EMR emr; + LONG xNum; + LONG xDenom; + LONG yNum; + LONG yDenom; +} +alias EMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX; +alias TypeDef!(EMRSCALEVIEWPORTEXTEX) EMRSCALEWINDOWEXTEX; +alias EMRSCALEWINDOWEXTEX* PEMRSCALEWINDOWEXTEX; + +struct EMRSELECTOBJECT { + EMR emr; + DWORD ihObject; +} +alias EMRSELECTOBJECT* PEMRSELECTOBJECT; +alias TypeDef!(EMRSELECTOBJECT) EMRDELETEOBJECT; +alias EMRDELETEOBJECT* PEMRDELETEOBJECT; + +struct EMRSELECTPALETTE { + EMR emr; + DWORD ihPal; +} +alias EMRSELECTPALETTE* PEMRSELECTPALETTE; + +struct EMRSETARCDIRECTION { + EMR emr; + DWORD iArcDirection; +} +alias EMRSETARCDIRECTION* PEMRSETARCDIRECTION; + +struct EMRSETTEXTCOLOR { + EMR emr; + COLORREF crColor; +} +alias EMRSETTEXTCOLOR* PEMRSETTEXTCOLOR; +alias TypeDef!(EMRSETTEXTCOLOR) EMRSETBKCOLOR; +alias EMRSETBKCOLOR* PEMRSETBKCOLOR; + +struct EMRSETCOLORADJUSTMENT { + EMR emr; + COLORADJUSTMENT ColorAdjustment; +} +alias EMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT; + +struct EMRSETDIBITSTODEVICE { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + DWORD iUsageSrc; + DWORD iStartScan; + DWORD cScans; +} +alias EMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE; + +struct EMRSETMAPPERFLAGS { + EMR emr; + DWORD dwFlags; +} +alias EMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS; + +struct EMRSETMITERLIMIT { + EMR emr; + FLOAT eMiterLimit; +} +alias EMRSETMITERLIMIT* PEMRSETMITERLIMIT; + +struct EMRSETPALETTEENTRIES { + EMR emr; + DWORD ihPal; + DWORD iStart; + DWORD cEntries; + PALETTEENTRY[1] aPalEntries; +} +alias EMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES; + +struct EMRSETPIXELV { + EMR emr; + POINTL ptlPixel; + COLORREF crColor; +} +alias EMRSETPIXELV* PEMRSETPIXELV; + +struct EMRSETVIEWPORTEXTEX { + EMR emr; + SIZEL szlExtent; +} +alias EMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX; +alias TypeDef!(EMRSETVIEWPORTEXTEX) EMRSETWINDOWEXTEX; +alias EMRSETWINDOWEXTEX* PEMRSETWINDOWEXTEX; + +struct EMRSETVIEWPORTORGEX { + EMR emr; + POINTL ptlOrigin; +} +alias EMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX; +alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETWINDOWORGEX; +alias EMRSETWINDOWORGEX* PEMRSETWINDOWORGEX; +alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETBRUSHORGEX; +alias EMRSETBRUSHORGEX* PEMRSETBRUSHORGEX; + +struct EMRSETWORLDTRANSFORM { + EMR emr; + XFORM xform; +} +alias EMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM; + +struct EMRSTRETCHBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; +} +alias EMRSTRETCHBLT* PEMRSTRETCHBLT; + +struct EMRSTRETCHDIBITS { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + DWORD iUsageSrc; + DWORD dwRop; + LONG cxDest; + LONG cyDest; +} +alias EMRSTRETCHDIBITS* PEMRSTRETCHDIBITS; + +struct EMRABORTPATH { + EMR emr; +} +alias EMRABORTPATH* PEMRABORTPATH; +alias TypeDef!(EMRABORTPATH) EMRBEGINPATH; +alias EMRBEGINPATH* PEMRBEGINPATH; +alias TypeDef!(EMRABORTPATH) EMRENDPATH; +alias EMRENDPATH* PEMRENDPATH; +alias TypeDef!(EMRABORTPATH) EMRCLOSEFIGURE; +alias EMRCLOSEFIGURE* PEMRCLOSEFIGURE; +alias TypeDef!(EMRABORTPATH) EMRFLATTENPATH; +alias EMRFLATTENPATH* PEMRFLATTENPATH; +alias TypeDef!(EMRABORTPATH) EMRWIDENPATH; +alias EMRWIDENPATH* PEMRWIDENPATH; +alias TypeDef!(EMRABORTPATH) EMRSETMETARGN; +alias EMRSETMETARGN* PEMRSETMETARGN; +alias TypeDef!(EMRABORTPATH) EMRSAVEDC; +alias EMRSAVEDC* PEMRSAVEDC; +alias TypeDef!(EMRABORTPATH) EMRREALIZEPALETTE; +alias EMRREALIZEPALETTE* PEMRREALIZEPALETTE; + +struct EMRSELECTCLIPPATH { + EMR emr; + DWORD iMode; +} +alias EMRSELECTCLIPPATH* PEMRSELECTCLIPPATH; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETBKMODE; +alias EMRSETBKMODE* PEMRSETBKMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETMAPMODE; +alias EMRSETMAPMODE* PEMRSETMAPMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETPOLYFILLMODE; +alias EMRSETPOLYFILLMODE* PEMRSETPOLYFILLMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETROP2; +alias EMRSETROP2* PEMRSETROP2; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETSTRETCHBLTMODE; +alias EMRSETSTRETCHBLTMODE* PEMRSETSTRETCHBLTMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETICMMODE; +alias EMRSETICMMODE* PEMRSETICMMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETTEXTALIGN; +alias EMRSETTEXTALIGN* PEMRSETTEXTALIGN; +alias TypeDef!(EMRSELECTCLIPPATH) EMRENABLEICM; +alias EMRENABLEICM* PEMRENABLEICM; +static if (_WIN32_WINNT >= 0x500) { + alias TypeDef!(EMRSELECTCLIPPATH) EMRSETLAYOUT; + alias EMRSETLAYOUT* PEMRSETLAYOUT; +} + +align(2): +struct METAHEADER { + WORD mtType; + WORD mtHeaderSize; + WORD mtVersion; + DWORD mtSize; + WORD mtNoObjects; + DWORD mtMaxRecord; + WORD mtNoParameters; +} +alias METAHEADER* PMETAHEADER; +alias METAHEADER* LPMETAHEADER; + +align: + +struct ENHMETAHEADER { + DWORD iType = EMR_HEADER; + DWORD nSize = ENHMETAHEADER.sizeof; + RECTL rclBounds; + RECTL rclFrame; + DWORD dSignature = ENHMETA_SIGNATURE; + DWORD nVersion; + DWORD nBytes; + DWORD nRecords; + WORD nHandles; + WORD sReserved; + DWORD nDescription; + DWORD offDescription; + DWORD nPalEntries; + SIZEL szlDevice; + SIZEL szlMillimeters; + DWORD cbPixelFormat; + DWORD offPixelFormat; + DWORD bOpenGL; + static if (_WIN32_WINNT >= 0x500) { + SIZEL szlMicrometers; + } +} +alias ENHMETAHEADER* PENHMETAHEADER, LPENHMETAHEADER; + +struct METARECORD { + DWORD rdSize; + WORD rdFunction; + WORD[1] rdParm; +} +alias METARECORD* PMETARECORD; +alias METARECORD* LPMETARECORD; + +struct ENHMETARECORD { + DWORD iType; + DWORD nSize; + DWORD[1] dParm; +} +alias ENHMETARECORD* PENHMETARECORD, LPENHMETARECORD; + +// --- + +struct HANDLETABLE { + HGDIOBJ[1] objectHandle; +} +alias HANDLETABLE* PHANDLETABLE, LPHANDLETABLE; + +struct TEXTMETRICA { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} +alias TEXTMETRICA* PTEXTMETRICA, NPTEXTMETRICA, LPTEXTMETRICA; + +struct TEXTMETRICW { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} +alias TEXTMETRICW* PTEXTMETRICW, NPTEXTMETRICW, LPTEXTMETRICW; + +struct RGNDATAHEADER { + DWORD dwSize; + DWORD iType; + DWORD nCount; + DWORD nRgnSize; + RECT rcBound; +} +alias RGNDATAHEADER* PRGNDATAHEADER; + +struct RGNDATA { + RGNDATAHEADER rdh; + char[1] Buffer; +} +alias RGNDATA* PRGNDATA, NPRGNDATA, LPRGNDATA; + +/* for GetRandomRgn */ +const SYSRGN=4; +struct GCP_RESULTSA { + DWORD lStructSize; + LPSTR lpOutString; + UINT* lpOrder; + INT* lpDx; + INT* lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; +} +alias GCP_RESULTSA* LPGCP_RESULTSA; + +struct GCP_RESULTSW { + DWORD lStructSize; + LPWSTR lpOutString; + UINT* lpOrder; + INT* lpDx; + INT* lpCaretPos; + LPWSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; +} +alias GCP_RESULTSW* LPGCP_RESULTSW; + +struct GLYPHMETRICS { + UINT gmBlackBoxX; + UINT gmBlackBoxY; + POINT gmptGlyphOrigin; + short gmCellIncX; + short gmCellIncY; +} +alias GLYPHMETRICS* LPGLYPHMETRICS; + +static if (_WIN32_WINNT >= 0x500) { + struct WCRANGE { + WCHAR wcLow; + USHORT cGlyphs; + } + alias WCRANGE* PWCRANGE, LPWCRANGE; + + struct GLYPHSET { + DWORD cbThis; + DWORD flAccel; + DWORD cGlyphsSupported; + DWORD cRanges; + WCRANGE[1] ranges; + } + alias GLYPHSET* PGLYPHSET, LPGLYPHSET; + + const DWORD GS_8BIT_INDICES = 0x00000001; +} + +struct KERNINGPAIR { + WORD wFirst; + WORD wSecond; + int iKernAmount; +} +alias KERNINGPAIR* LPKERNINGPAIR; + +struct FIXED { + WORD fract; + short value; +} + +struct MAT2 { + FIXED eM11; + FIXED eM12; + FIXED eM21; + FIXED eM22; +} +alias MAT2* LPMAT2; + +struct OUTLINETEXTMETRICA { + UINT otmSize; + TEXTMETRICA otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; +} +alias OUTLINETEXTMETRICA* POUTLINETEXTMETRICA, NPOUTLINETEXTMETRICA, LPOUTLINETEXTMETRICA; + +struct OUTLINETEXTMETRICW { + UINT otmSize; + TEXTMETRICW otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; +} +alias OUTLINETEXTMETRICW* POUTLINETEXTMETRICW, NPOUTLINETEXTMETRICW, LPOUTLINETEXTMETRICW; + +struct RASTERIZER_STATUS { + short nSize; + short wFlags; + short nLanguageID; +} +alias RASTERIZER_STATUS* LPRASTERIZER_STATUS; + +struct POLYTEXTA { + int x; + int y; + UINT n; + LPCSTR lpstr; + UINT uiFlags; + RECT rcl; + int* pdx; +} +alias POLYTEXTA* PPOLYTEXTA, NPPOLYTEXTA, LPPOLYTEXTA; + +struct POLYTEXTW { + int x; + int y; + UINT n; + LPCWSTR lpstr; + UINT uiFlags; + RECT rcl; + int* pdx; +} +alias POLYTEXTW* PPOLYTEXTW, NPPOLYTEXTW, LPPOLYTEXTW; + +struct PIXELFORMATDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerType; + BYTE bReserved; + DWORD dwLayerMask; + DWORD dwVisibleMask; + DWORD dwDamageMask; +} +alias PIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR, LPPIXELFORMATDESCRIPTOR; + +struct METAFILEPICT { + LONG mm; + LONG xExt; + LONG yExt; + HMETAFILE hMF; +} +alias METAFILEPICT* LPMETAFILEPICT; + +struct LOCALESIGNATURE { + DWORD[4] lsUsb; + DWORD[2] lsCsbDefault; + DWORD[2] lsCsbSupported; +} +alias LOCALESIGNATURE* PLOCALESIGNATURE, LPLOCALESIGNATURE; + +alias LONG LCSTYPE; /* What this for? */ + +align(4): +struct NEWTEXTMETRICA { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; +} +alias NEWTEXTMETRICA* PNEWTEXTMETRICA, NPNEWTEXTMETRICA, LPNEWTEXTMETRICA; + +struct NEWTEXTMETRICW { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; +} +alias NEWTEXTMETRICW* PNEWTEXTMETRICW, NPNEWTEXTMETRICW, LPNEWTEXTMETRICW; + +align: +struct NEWTEXTMETRICEXA { + NEWTEXTMETRICA ntmTm; + FONTSIGNATURE ntmFontSig; +} + +struct NEWTEXTMETRICEXW { + NEWTEXTMETRICW ntmTm; + FONTSIGNATURE ntmFontSig; +} + +struct PELARRAY { + LONG paXCount; + LONG paYCount; + LONG paXExt; + LONG paYExt; + BYTE paRGBs; +} +alias PELARRAY* PPELARRAY, NPPELARRAY, LPPELARRAY; + +struct ENUMLOGFONTA { + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; +} +alias ENUMLOGFONTA* LPENUMLOGFONTA; + +struct ENUMLOGFONTW { + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; +} +alias ENUMLOGFONTW* LPENUMLOGFONTW; + +struct ENUMLOGFONTEXA { + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; + BYTE[LF_FACESIZE] elfScript; +} +alias ENUMLOGFONTEXA* LPENUMLOGFONTEXA; + +struct ENUMLOGFONTEXW { + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; + WCHAR[LF_FACESIZE] elfScript; +} +alias ENUMLOGFONTEXW* LPENUMLOGFONTEXW; + +struct POINTFX { + FIXED x; + FIXED y; +} +alias POINTFX* LPPOINTFX; + +struct TTPOLYCURVE { + WORD wType; + WORD cpfx; + POINTFX[1] apfx; +} +alias TTPOLYCURVE* LPTTPOLYCURVE; + +struct TTPOLYGONHEADER { + DWORD cb; + DWORD dwType; + POINTFX pfxStart; +} +alias TTPOLYGONHEADER* LPTTPOLYGONHEADER; + +struct POINTFLOAT { + FLOAT x; + FLOAT y; +} +alias POINTFLOAT* PPOINTFLOAT; + +struct GLYPHMETRICSFLOAT { + FLOAT gmfBlackBoxX; + FLOAT gmfBlackBoxY; + POINTFLOAT gmfptGlyphOrigin; + FLOAT gmfCellIncX; + FLOAT gmfCellIncY; +} +alias GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT, LPGLYPHMETRICSFLOAT; + +struct LAYERPLANEDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerPlane; + BYTE bReserved; + COLORREF crTransparent; +} +alias LAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR, LPLAYERPLANEDESCRIPTOR; + +struct BLENDFUNCTION { + BYTE BlendOp; + BYTE BlendFlags; + BYTE SourceConstantAlpha; + BYTE AlphaFormat; +} +alias BLENDFUNCTION* PBLENDFUNCTION, LPBLENDFUNCTION; + +const MM_MAX_NUMAXES = 16; + +struct DESIGNVECTOR { + DWORD dvReserved; + DWORD dvNumAxes; + LONG[MM_MAX_NUMAXES] dvValues; +} +alias DESIGNVECTOR* PDESIGNVECTOR, LPDESIGNVECTOR; +const STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8); +const STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8); + +static if (_WIN32_WINNT >= 0x500) { + + const MM_MAX_AXES_NAMELEN = 16; + + struct AXISINFOA { + LONG axMinValue; + LONG axMaxValue; + BYTE[MM_MAX_AXES_NAMELEN] axAxisName; + } + alias AXISINFOA* PAXISINFOA, LPAXISINFOA; + + struct AXISINFOW { + LONG axMinValue; + LONG axMaxValue; + WCHAR[MM_MAX_AXES_NAMELEN] axAxisName; + } + alias AXISINFOW* PAXISINFOW, LPAXISINFOW; + + version (Unicode) { + alias AXISINFOW AXISINFO; + alias PAXISINFOW PAXISINFO; + alias LPAXISINFOW LPAXISINFO; + } + else { + alias AXISINFOA AXISINFO; + alias PAXISINFOA PAXISINFO; + alias LPAXISINFOA LPAXISINFO; + } + + struct AXESLISTA { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOA[MM_MAX_NUMAXES] axlAxisInfo; + } + alias AXESLISTA* PAXESLISTA, LPAXESLISTA; + + struct AXESLISTW { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOW[MM_MAX_NUMAXES] axlAxisInfo; + } + alias AXESLISTW* PAXESLISTW, LPAXESLISTW; + + version (Unicode) { + alias AXESLISTW AXESLIST; + alias PAXESLISTW PAXESLIST; + alias LPAXESLISTW LPAXESLIST; + } + else { + alias AXESLISTA AXESLIST; + alias PAXESLISTA PAXESLIST; + alias LPAXESLISTA LPAXESLIST; + } + + struct ENUMLOGFONTEXDVA { + ENUMLOGFONTEXA elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; + } + alias ENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA, LPENUMLOGFONTEXDVA; + + struct ENUMLOGFONTEXDVW { + ENUMLOGFONTEXW elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; + } + alias ENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW, LPENUMLOGFONTEXDVW; + + HFONT CreateFontIndirectExA(const(ENUMLOGFONTEXDVA)*); + HFONT CreateFontIndirectExW(const(ENUMLOGFONTEXDVW)*); + version (Unicode) + alias CreateFontIndirectExW CreateFontIndirectEx; + else + alias CreateFontIndirectExA CreateFontIndirectEx; + + struct ENUMTEXTMETRICA { + NEWTEXTMETRICEXA etmNewTextMetricEx; + AXESLISTA etmAxesList; + } + alias ENUMTEXTMETRICA* PENUMTEXTMETRICA, LPENUMTEXTMETRICA; + + struct ENUMTEXTMETRICW { + NEWTEXTMETRICEXW etmNewTextMetricEx; + AXESLISTW etmAxesList; + } + alias ENUMTEXTMETRICW* PENUMTEXTMETRICW, LPENUMTEXTMETRICW; + + version (Unicode) { + alias ENUMTEXTMETRICW ENUMTEXTMETRIC; + alias PENUMTEXTMETRICW PENUMTEXTMETRIC; + alias LPENUMTEXTMETRICW LPENUMTEXTMETRIC; + } + else { + alias ENUMTEXTMETRICA ENUMTEXTMETRIC; + alias PENUMTEXTMETRICA PENUMTEXTMETRIC; + alias LPENUMTEXTMETRICA LPENUMTEXTMETRIC; + } +} /* _WIN32_WINNT >= 0x500 */ + +struct GRADIENT_TRIANGLE { + ULONG Vertex1; + ULONG Vertex2; + ULONG Vertex3; +} +alias GRADIENT_TRIANGLE* PGRADIENT_TRIANGLE, LPGRADIENT_TRIANGLE; + +struct GRADIENT_RECT { + ULONG UpperLeft; + ULONG LowerRight; +} +alias GRADIENT_RECT* PGRADIENT_RECT, LPGRADIENT_RECT; + +struct DISPLAY_DEVICEA { + DWORD cb; + CHAR[32] DeviceName; + CHAR[128] DeviceString; + DWORD StateFlags; + CHAR[128] DeviceID; + CHAR[128] DeviceKey; +} +alias DISPLAY_DEVICEA* PDISPLAY_DEVICEA, LPDISPLAY_DEVICEA; + +struct DISPLAY_DEVICEW { + DWORD cb; + WCHAR[32] DeviceName; + WCHAR[128] DeviceString; + DWORD StateFlags; + WCHAR[128] DeviceID; + WCHAR[128] DeviceKey; +} +alias DISPLAY_DEVICEW* PDISPLAY_DEVICEW, LPDISPLAY_DEVICEW; + +struct DRAWPATRECT { + POINT ptPosition; + POINT ptSize; + WORD wStyle; + WORD wPattern; +} +alias DRAWPATRECT* PDRAWPATRECT; + +// --------- +// Callbacks + +alias BOOL function (HDC, int) ABORTPROC; +alias int function (HDC, HANDLETABLE*, METARECORD*, int, LPARAM) MFENUMPROC; +alias int function (HDC, HANDLETABLE*, const(ENHMETARECORD)*, int, LPARAM) ENHMFENUMPROC; +alias int function (const(LOGFONTA)*, const(TEXTMETRICA)*, DWORD, LPARAM) FONTENUMPROCA, OLDFONTENUMPROCA; +alias int function (const(LOGFONTW)*, const(TEXTMETRICW)*, DWORD, LPARAM) FONTENUMPROCW, OLDFONTENUMPROCW; +alias int function (LPSTR, LPARAM) ICMENUMPROCA; +alias int function (LPWSTR, LPARAM) ICMENUMPROCW; +alias void function (LPVOID, LPARAM) GOBJENUMPROC; +alias void function (int, int, LPARAM) LINEDDAPROC; +alias UINT function (HWND, HMODULE, LPDEVMODEA, LPSTR, LPSTR, LPDEVMODEA, LPSTR, UINT) LPFNDEVMODE; +alias DWORD function (LPSTR, LPSTR, UINT, LPSTR, LPDEVMODEA) LPFNDEVCAPS; + + +// --------- +// C Macros. +// FIXME: +//POINTS MAKEPOINTS(DWORD dwValue) #define MAKEPOINTS(l) (*((POINTS*)&(l))) + +DWORD MAKEROP4(DWORD fore, DWORD back) { + return ((back<<8) & 0xFF000000) | (fore); +} + +COLORREF CMYK(BYTE c, BYTE m, BYTE y, BYTE k) { + return cast(COLORREF)(k | (y << 8) | (m << 16) | (c << 24)); +} + +BYTE GetCValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 24); +} + +BYTE GetMValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 16); +} + +BYTE GetYValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 8); +} + +BYTE GetKValue(COLORREF cmyk) { + return cast(BYTE)cmyk; +} + +COLORREF RGB(BYTE r, BYTE g, BYTE b) { + return cast(COLORREF)(r | (g << 8) | (b << 16)); +} + +BYTE GetRValue(COLORREF c) { + return cast(BYTE)c; +} + +BYTE GetGValue(COLORREF c) { + return cast(BYTE)(c >> 8); +} + +BYTE GetBValue(COLORREF c) { + return cast(BYTE)(c >> 16); +} + +COLORREF PALETTEINDEX(WORD i) { + return 0x01000000 | cast(COLORREF) i; +} + +COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b) { + return 0x02000000|RGB(r, g, b); +} + +extern(Windows) { + int AbortDoc(HDC); + BOOL AbortPath(HDC); + int AddFontResourceA(LPCSTR); + int AddFontResourceW(LPCWSTR); + BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); + BOOL AnimatePalette(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); + BOOL Arc(HDC, int, int, int, int, int, int, int, int); + BOOL ArcTo(HDC, int, int, int, int, int, int, int, int); + BOOL BeginPath(HDC); + BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); + BOOL CancelDC(HDC); + BOOL CheckColorsInGamut(HDC, PVOID, PVOID, DWORD); + BOOL Chord(HDC, int, int, int, int, int, int, int, int); + int ChoosePixelFormat(HDC, const(PIXELFORMATDESCRIPTOR)*); + HENHMETAFILE CloseEnhMetaFile(HDC); + BOOL CloseFigure(HDC); + HMETAFILE CloseMetaFile(HDC); + BOOL ColorMatchToTarget(HDC, HDC, DWORD); + BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD); + int CombineRgn(HRGN, HRGN, HRGN, int); + BOOL CombineTransform(LPXFORM, const(XFORM)*, const(XFORM)*); + HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); + HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); + HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR); + HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR); + HBITMAP CreateBitmap(int, int, UINT, UINT, PCVOID); + HBITMAP CreateBitmapIndirect(const(BITMAP)*); + HBRUSH CreateBrushIndirect(const(LOGBRUSH)*); + HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA); + HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW); + HBITMAP CreateCompatibleBitmap(HDC, int, int); + HDC CreateCompatibleDC(HDC); + HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); + HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); + HBITMAP CreateDIBitmap(HDC, const(BITMAPINFOHEADER)*, DWORD, PCVOID, const(BITMAPINFO)*, UINT); + HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT); + HBRUSH CreateDIBPatternBrushPt(PCVOID, UINT); + HBITMAP CreateDIBSection(HDC, const(BITMAPINFO)*, UINT, void**, HANDLE, DWORD); + HBITMAP CreateDiscardableBitmap(HDC, int, int); + HRGN CreateEllipticRgn(int, int, int, int); + HRGN CreateEllipticRgnIndirect(LPCRECT); + HDC CreateEnhMetaFileA(HDC, LPCSTR, LPCRECT, LPCSTR); + HDC CreateEnhMetaFileW(HDC, LPCWSTR, LPCRECT, LPCWSTR); + HFONT CreateFontA(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCSTR); + HFONT CreateFontW(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCWSTR); + HFONT CreateFontIndirectA(const(LOGFONTA)*); + HFONT CreateFontIndirectW(const(LOGFONTW)*); + HPALETTE CreateHalftonePalette(HDC); + HBRUSH CreateHatchBrush(int, COLORREF); + HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); + HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); + HDC CreateMetaFileA(LPCSTR); + HDC CreateMetaFileW(LPCWSTR); + HPALETTE CreatePalette(const(LOGPALETTE)*); + HBRUSH CreatePatternBrush(HBITMAP); + HPEN CreatePen(int, int, COLORREF); + HPEN CreatePenIndirect(const(LOGPEN)*); + HRGN CreatePolygonRgn(const(POINT)*, int, int); + HRGN CreatePolyPolygonRgn(const(POINT)*, const(INT)*, int, int); + HRGN CreateRectRgn(int, int, int, int); + HRGN CreateRectRgnIndirect(LPCRECT); + HRGN CreateRoundRectRgn(int, int, int, int, int, int); + BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); + BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); + HBRUSH CreateSolidBrush(COLORREF); + BOOL DeleteColorSpace(HCOLORSPACE); + BOOL DeleteDC(HDC); + BOOL DeleteEnhMetaFile(HENHMETAFILE); + BOOL DeleteMetaFile(HMETAFILE); + BOOL DeleteObject(HGDIOBJ); + int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); + DWORD DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, LPSTR, const(DEVMODEA)*); + DWORD DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, LPWSTR, const(DEVMODEW)*); + BOOL DPtoLP(HDC, LPPOINT, int); + int DrawEscape(HDC, int, int, LPCSTR); + BOOL Ellipse(HDC, int, int, int, int); + int EndDoc(HDC); + int EndPage(HDC); + BOOL EndPath(HDC); + BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, PVOID, LPCRECT); + int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); + int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); + int EnumFontFamiliesExA(HDC, PLOGFONTA, FONTENUMPROCA, LPARAM, DWORD); + int EnumFontFamiliesExW(HDC, PLOGFONTW, FONTENUMPROCW, LPARAM, DWORD); + int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); + int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); + int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM); + int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM); + BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); + int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); + BOOL EqualRgn(HRGN, HRGN); + int Escape(HDC, int, int, LPCSTR, PVOID); + int ExcludeClipRect(HDC, int, int, int, int); + int ExcludeUpdateRgn(HDC, HWND); + HPEN ExtCreatePen(DWORD, DWORD, const(LOGBRUSH)*, DWORD, const(DWORD)*); + HRGN ExtCreateRegion(const(XFORM)*, DWORD, const(RGNDATA)*); + int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); + BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT); + int ExtSelectClipRgn(HDC, HRGN, int); + BOOL ExtTextOutA(HDC, int, int, UINT, LPCRECT, LPCSTR, UINT, const(INT)*); + BOOL ExtTextOutW(HDC, int, int, UINT, LPCRECT, LPCWSTR, UINT, const(INT)*); + BOOL FillPath(HDC); + int FillRect(HDC, LPCRECT, HBRUSH); + int FillRgn(HDC, HRGN, HBRUSH); + BOOL FixBrushOrgEx(HDC, int, int, LPPOINT); + BOOL FlattenPath(HDC); + BOOL FloodFill(HDC, int, int, COLORREF); + BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); + BOOL GdiComment(HDC, UINT, const(BYTE)*); + BOOL GdiFlush(); + DWORD GdiGetBatchLimit(); + DWORD GdiSetBatchLimit(DWORD); + int GetArcDirection(HDC); + BOOL GetAspectRatioFilterEx(HDC, LPSIZE); + LONG GetBitmapBits(HBITMAP, LONG, PVOID); + BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE); + COLORREF GetBkColor(HDC); + int GetBkMode(HDC); + UINT GetBoundsRect(HDC, LPRECT, UINT); + BOOL GetBrushOrgEx(HDC, LPPOINT); + BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC); + BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC); + BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); + BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); + DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD); + DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD); + BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT); + BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthA(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthW(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); + BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); + int GetClipBox(HDC, LPRECT); + int GetClipRgn(HDC, HRGN); + BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT); + HANDLE GetColorSpace(HDC); + HGDIOBJ GetCurrentObject(HDC, UINT); + BOOL GetCurrentPositionEx(HDC, LPPOINT); + HCURSOR GetCursor(); + BOOL GetDCOrgEx(HDC, LPPOINT); + static if (_WIN32_WINNT >= 0x500) + { + DWORD GetDCPenColor(HGDIOBJ); + COLORREF GetDCBrushColor(HGDIOBJ); + } + int GetDeviceCaps(HDC, int); + BOOL GetDeviceGammaRamp(HDC, PVOID); + UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD*); + int GetDIBits(HDC, HBITMAP, UINT, UINT, PVOID, LPBITMAPINFO, UINT); + HENHMETAFILE GetEnhMetaFileA(LPCSTR); + HENHMETAFILE GetEnhMetaFileW(LPCWSTR); + UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); + UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR); + UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR); + UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER); + UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY); + UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, DWORD, const(PIXELFORMATDESCRIPTOR)*); + DWORD GetFontData(HDC, DWORD, DWORD, PVOID, DWORD); + DWORD GetFontLanguageInfo(HDC); + DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); + DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); + int GetGraphicsMode(HDC); + BOOL GetICMProfileA(HDC, DWORD, LPSTR); + BOOL GetICMProfileW(HDC, DWORD, LPWSTR); + DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); + DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); + BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD); + BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD); + int GetMapMode(HDC); + HMETAFILE GetMetaFileA(LPCSTR); + HMETAFILE GetMetaFileW(LPCWSTR); + UINT GetMetaFileBitsEx(HMETAFILE, UINT, PVOID); + int GetMetaRgn(HDC, HRGN); + BOOL GetMiterLimit(HDC, PFLOAT); + COLORREF GetNearestColor(HDC, COLORREF); + UINT GetNearestPaletteIndex(HPALETTE, COLORREF); + int GetObjectA(HGDIOBJ, int, PVOID); + int GetObjectW(HGDIOBJ, int, PVOID); + DWORD GetObjectType(HGDIOBJ); + UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); + UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); + UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); + int GetPath(HDC, LPPOINT, PBYTE, int); + COLORREF GetPixel(HDC, int, int); + int GetPixelFormat(HDC); + int GetPolyFillMode(HDC); + BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); + int GetRandomRgn (HDC, HRGN, INT); + DWORD GetRegionData(HRGN, DWORD, LPRGNDATA); + int GetRgnBox(HRGN, LPRECT); + int GetROP2(HDC); + HGDIOBJ GetStockObject(int); + int GetStretchBltMode(HDC); + UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); + UINT GetSystemPaletteUse(HDC); + UINT GetTextAlign(HDC); + int GetTextCharacterExtra(HDC); + int GetTextCharset(HDC); + int GetTextCharsetInfo(HDC, LPFONTSIGNATURE, DWORD); + COLORREF GetTextColor(HDC); + BOOL GetTextExtentExPointA(HDC, LPCSTR, int, int, LPINT, LPINT, LPSIZE); + BOOL GetTextExtentExPointW(HDC, LPCWSTR, int, int, LPINT, LPINT, LPSIZE); + BOOL GetTextExtentPointA(HDC, LPCSTR, int, LPSIZE); + BOOL GetTextExtentPointW(HDC, LPCWSTR, int, LPSIZE); + BOOL GetTextExtentPoint32A(HDC, LPCSTR, int, LPSIZE); + BOOL GetTextExtentPoint32W(HDC, LPCWSTR, int, LPSIZE); + int GetTextFaceA(HDC, int, LPSTR); + int GetTextFaceW(HDC, int, LPWSTR); + BOOL GetTextMetricsA(HDC, LPTEXTMETRICA); + BOOL GetTextMetricsW(HDC, LPTEXTMETRICW); + BOOL GetViewportExtEx(HDC, LPSIZE); + BOOL GetViewportOrgEx(HDC, LPPOINT); + BOOL GetWindowExtEx(HDC, LPSIZE); + BOOL GetWindowOrgEx(HDC, LPPOINT); + UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); + BOOL GetWorldTransform(HDC, LPXFORM); + int IntersectClipRect(HDC, int, int, int, int); + BOOL InvertRgn(HDC, HRGN); + BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); + BOOL LineTo(HDC, int, int); + BOOL LPtoDP(HDC, LPPOINT, int); + BOOL MaskBlt(HDC, int, int, int, int, HDC, int, int, HBITMAP, int, int, DWORD); + BOOL ModifyWorldTransform(HDC, const(XFORM)*, DWORD); + BOOL MoveToEx(HDC, int, int, LPPOINT); + int OffsetClipRgn(HDC, int, int); + int OffsetRgn(HRGN, int, int); + BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT); + BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT); + BOOL PaintRgn(HDC, HRGN); + BOOL PatBlt(HDC, int, int, int, int, DWORD); + HRGN PathToRegion(HDC); + BOOL Pie(HDC, int, int, int, int, int, int, int, int); + BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, LPCRECT); + BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, const(ENHMETARECORD)*, UINT); + BOOL PlayMetaFile(HDC, HMETAFILE); + BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); + BOOL PlgBlt(HDC, const(POINT)*, HDC, int, int, int, int, HBITMAP, int, int); + BOOL PolyBezier(HDC, const(POINT)*, DWORD); + BOOL PolyBezierTo(HDC, const(POINT)*, DWORD); + BOOL PolyDraw(HDC, const(POINT)*, const(BYTE)*, int); + BOOL Polygon(HDC, const(POINT)*, int); + BOOL Polyline(HDC, const(POINT)*, int); + BOOL PolylineTo(HDC, const(POINT)*, DWORD); + BOOL PolyPolygon(HDC, const(POINT)*, const(INT)*, int); + BOOL PolyPolyline(HDC, const(POINT)*, const(DWORD)*, DWORD); + BOOL PolyTextOutA(HDC, const(POLYTEXTA)*, int); + BOOL PolyTextOutW(HDC, const(POLYTEXTW)*, int); + BOOL PtInRegion(HRGN, int, int); + BOOL PtVisible(HDC, int, int); + UINT RealizePalette(HDC); + BOOL Rectangle(HDC, int, int, int, int); + BOOL RectInRegion(HRGN, LPCRECT); + BOOL RectVisible(HDC, LPCRECT); + BOOL RemoveFontResourceA(LPCSTR); + BOOL RemoveFontResourceW(LPCWSTR); + + HDC ResetDCA(HDC, const(DEVMODEA)*); + HDC ResetDCW(HDC, const(DEVMODEW)*); + BOOL ResizePalette(HPALETTE, UINT); + BOOL RestoreDC(HDC, int); + BOOL RoundRect(HDC, int, int, int, int, int, int); + int SaveDC(HDC); + BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); + BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); + BOOL SelectClipPath(HDC, int); + int SelectClipRgn(HDC, HRGN); + HGDIOBJ SelectObject(HDC, HGDIOBJ); + HPALETTE SelectPalette(HDC, HPALETTE, BOOL); + int SetAbortProc(HDC, ABORTPROC); + int SetArcDirection(HDC, int); + LONG SetBitmapBits(HBITMAP, DWORD, PCVOID); + BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); + COLORREF SetBkColor(HDC, COLORREF); + int SetBkMode(HDC, int); + UINT SetBoundsRect(HDC, LPCRECT, UINT); + BOOL SetBrushOrgEx(HDC, int, int, LPPOINT); + BOOL SetColorAdjustment(HDC, const(COLORADJUSTMENT)*); + BOOL SetColorSpace(HDC, HCOLORSPACE); + + BOOL SetDeviceGammaRamp(HDC, PVOID); + UINT SetDIBColorTable(HDC, UINT, UINT, const(RGBQUAD)*); + int SetDIBits(HDC, HBITMAP, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); + int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); + HENHMETAFILE SetEnhMetaFileBits(UINT, const(BYTE)*); + int SetGraphicsMode(HDC, int); + int SetICMMode(HDC, int); + BOOL SetICMProfileA(HDC, LPSTR); + BOOL SetICMProfileW(HDC, LPWSTR); + int SetMapMode(HDC, int); + + static if (_WIN32_WINNT >= 0x500) { + DWORD SetLayout(HDC hdc, DWORD l); + DWORD GetLayout(HDC hdc); + } + + DWORD SetMapperFlags(HDC, DWORD); + HMETAFILE SetMetaFileBitsEx(UINT, const(BYTE)*); + int SetMetaRgn(HDC); + BOOL SetMiterLimit(HDC, FLOAT, PFLOAT); + UINT SetPaletteEntries(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); + COLORREF SetPixel(HDC, int, int, COLORREF); + BOOL SetPixelFormat(HDC, int, const(PIXELFORMATDESCRIPTOR)*); + BOOL SetPixelV(HDC, int, int, COLORREF); + int SetPolyFillMode(HDC, int); + BOOL SetRectRgn(HRGN, int, int, int, int); + int SetROP2(HDC, int); + int SetStretchBltMode(HDC, int); + UINT SetSystemPaletteUse(HDC, UINT); + UINT SetTextAlign(HDC, UINT); + int SetTextCharacterExtra(HDC, int); + COLORREF SetTextColor(HDC, COLORREF); + BOOL SetTextJustification(HDC, int, int); + BOOL SetViewportExtEx(HDC, int, int, LPSIZE); + BOOL SetViewportOrgEx(HDC, int, int, LPPOINT); + BOOL SetWindowExtEx(HDC, int, int, LPSIZE); + BOOL SetWindowOrgEx(HDC, int, int, LPPOINT); + HENHMETAFILE SetWinMetaFileBits(UINT, const(BYTE)*, HDC, const(METAFILEPICT)*); + BOOL SetWorldTransform(HDC, const(XFORM)*); + int StartDocA(HDC, const(DOCINFOA)*); + int StartDocW(HDC, const(DOCINFOW)*); + int StartPage(HDC); + BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); + int StretchDIBits(HDC, int, int, int, int, int, int, int, int, const(VOID)* , const(BITMAPINFO)* , UINT, DWORD); + BOOL StrokeAndFillPath(HDC); + BOOL StrokePath(HDC); + BOOL SwapBuffers(HDC); + BOOL TextOutA(HDC, int, int, LPCSTR, int); + BOOL TextOutW(HDC, int, int, LPCWSTR, int); + BOOL TranslateCharsetInfo(PDWORD, LPCHARSETINFO, DWORD); + BOOL UnrealizeObject(HGDIOBJ); + BOOL UpdateColors(HDC); + BOOL UpdateICMRegKeyA(DWORD, DWORD, LPSTR, UINT); + BOOL UpdateICMRegKeyW(DWORD, DWORD, LPWSTR, UINT); + BOOL WidenPath(HDC); + BOOL wglCopyContext(HGLRC, HGLRC, UINT); + HGLRC wglCreateContext(HDC); + HGLRC wglCreateLayerContext(HDC, int); + BOOL wglDeleteContext(HGLRC); + BOOL wglDescribeLayerPlane(HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR); + HGLRC wglGetCurrentContext(); + HDC wglGetCurrentDC(); + int wglGetLayerPaletteEntries(HDC, int, int, int, COLORREF*); + PROC wglGetProcAddress(LPCSTR); + BOOL wglMakeCurrent(HDC, HGLRC); + BOOL wglRealizeLayerPalette(HDC, int, BOOL); + int wglSetLayerPaletteEntries(HDC, int, int, int, const(COLORREF)*); + BOOL wglShareLists(HGLRC, HGLRC); + BOOL wglSwapLayerBuffers(HDC, UINT); + BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD); + BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD); + BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); + BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); + + static if (_WIN32_WINNT >= 0x500) { + alias WGLSWAP* PWGLSWAP; + struct WGLSWAP { + HDC hdc; + UINT uiFlags; + } + const WGL_SWAPMULTIPLE_MAX = 16; + DWORD wglSwapMultipleBuffers(UINT, WGLSWAP*); +} + +static if (_WIN32_WINNT >= 0x500) { + BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); + BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG); + BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT); + } + + static if (_WIN32_WINNT >= 0x500) { + COLORREF SetDCBrushColor(HDC, COLORREF); + COLORREF SetDCPenColor(HDC, COLORREF); + HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD*); + int AddFontResourceExA(LPCSTR, DWORD, PVOID); + int AddFontResourceExW(LPCWSTR, DWORD, PVOID); + BOOL RemoveFontMemResourceEx(HANDLE); + BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID); + BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); + DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET); + DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD); + DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD); + BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE); + BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE); + BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT); + BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC); + } +} // extern (Windows) + +version(Unicode) { + alias WCHAR BCHAR; + alias DOCINFOW DOCINFO; + alias LOGFONTW LOGFONT; + + alias TEXTMETRICW TEXTMETRIC; + alias NPTEXTMETRICW NPTEXTMETRIC; + alias ICMENUMPROCW ICMENUMPROC; + alias FONTENUMPROCW FONTENUMPROC; + alias DEVMODEW DEVMODE; + + alias EXTLOGFONTW EXTLOGFONT; + alias GCP_RESULTSW GCP_RESULTS; + alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC; + alias POLYTEXTW POLYTEXT; + alias LOGCOLORSPACEW LOGCOLORSPACE; + alias NEWTEXTMETRICW NEWTEXTMETRIC; + alias NEWTEXTMETRICEXW NEWTEXTMETRICEX; + alias ENUMLOGFONTW ENUMLOGFONT; + alias ENUMLOGFONTEXW ENUMLOGFONTEX; + alias DISPLAY_DEVICEW DISPLAY_DEVICE; + alias AddFontResourceW AddFontResource; + + alias CopyEnhMetaFileW CopyEnhMetaFile; + alias CopyMetaFileW CopyMetaFile; + alias CreateColorSpaceW CreateColorSpace; + alias CreateDCW CreateDC; + alias CreateEnhMetaFileW CreateEnhMetaFile; + alias CreateFontW CreateFont; + alias CreateFontIndirectW CreateFontIndirect; + alias CreateICW CreateIC; + alias CreateMetaFileW CreateMetaFile; + alias CreateScalableFontResourceW CreateScalableFontResource; + alias DeviceCapabilitiesW DeviceCapabilities; + alias EnumFontFamiliesW EnumFontFamilies; + alias EnumFontFamiliesExW EnumFontFamiliesEx; + alias EnumFontsW EnumFonts; + alias EnumICMProfilesW EnumICMProfiles; + alias ExtTextOutW ExtTextOut; + alias GetCharABCWidthsFloatW GetCharABCWidthsFloat; + alias GetCharABCWidthsW GetCharABCWidths; + alias GetCharacterPlacementW GetCharacterPlacement; + alias GetCharWidth32W GetCharWidth32; + alias GetCharWidthFloatW GetCharWidthFloat; + alias GetCharWidthW GetCharWidth; + alias GetEnhMetaFileW GetEnhMetaFile; + alias GetEnhMetaFileDescriptionW GetEnhMetaFileDescription; + alias GetGlyphOutlineW GetGlyphOutline; + alias GetICMProfileW GetICMProfile; + alias GetKerningPairsW GetKerningPairs; + alias GetLogColorSpaceW GetLogColorSpace; + alias GetMetaFileW GetMetaFile; + alias GetObjectW GetObject; + alias GetOutlineTextMetricsW GetOutlineTextMetrics; + alias GetTextExtentPointW GetTextExtentPoint; + alias GetTextExtentExPointW GetTextExtentExPoint; + alias GetTextExtentPoint32W GetTextExtentPoint32; + alias GetTextFaceW GetTextFace; + alias GetTextMetricsW GetTextMetrics; + alias PolyTextOutW PolyTextOut; + alias RemoveFontResourceW RemoveFontResource; + + alias ResetDCW ResetDC; + alias SetICMProfileW SetICMProfile; + alias StartDocW StartDoc; + alias TextOutW TextOut; + alias UpdateICMRegKeyW UpdateICMRegKey; + alias wglUseFontBitmapsW wglUseFontBitmaps; + alias wglUseFontOutlinesW wglUseFontOutlines; + static if (_WIN32_WINNT >= 0x500) { + alias ENUMLOGFONTEXDVW ENUMLOGFONTEXDV; + alias PENUMLOGFONTEXDVW PENUMLOGFONTEXDV; + alias LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV; + alias AddFontResourceExW AddFontResourceEx; + alias RemoveFontResourceExW RemoveFontResourceEx; + alias GetGlyphIndicesW GetGlyphIndices; + } +} else { /* non-unicode build */ + alias BYTE BCHAR; + alias DOCINFOA DOCINFO; + alias LOGFONTA LOGFONT; + alias TEXTMETRICA TEXTMETRIC; + alias NPTEXTMETRICA NPTEXTMETRIC; + alias ICMENUMPROCA ICMENUMPROC; + alias FONTENUMPROCA FONTENUMPROC; + alias DEVMODEA DEVMODE; + alias EXTLOGFONTA EXTLOGFONT; + alias GCP_RESULTSA GCP_RESULTS; + alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC; + alias POLYTEXTA POLYTEXT; + alias LOGCOLORSPACEA LOGCOLORSPACE; + alias NEWTEXTMETRICA NEWTEXTMETRIC; + alias NEWTEXTMETRICEXA NEWTEXTMETRICEX; + alias ENUMLOGFONTA ENUMLOGFONT; + alias ENUMLOGFONTEXA ENUMLOGFONTEX; + alias DISPLAY_DEVICEA DISPLAY_DEVICE; + + alias AddFontResourceA AddFontResource; + alias CopyEnhMetaFileA CopyEnhMetaFile; + alias CopyMetaFileA CopyMetaFile; + alias CreateColorSpaceA CreateColorSpace; + alias CreateDCA CreateDC; + alias CreateEnhMetaFileA CreateEnhMetaFile; + alias CreateFontA CreateFont; + alias CreateFontIndirectA CreateFontIndirect; + alias CreateICA CreateIC; + alias CreateMetaFileA CreateMetaFile; + alias CreateScalableFontResourceA CreateScalableFontResource; + alias DeviceCapabilitiesA DeviceCapabilities; + alias EnumFontFamiliesA EnumFontFamilies; + alias EnumFontFamiliesExA EnumFontFamiliesEx; + alias EnumFontsA EnumFonts; + alias EnumICMProfilesA EnumICMProfiles; + alias ExtTextOutA ExtTextOut; + alias GetCharWidthFloatA GetCharWidthFloat; + alias GetCharWidthA GetCharWidth; + alias GetCharacterPlacementA GetCharacterPlacement; + alias GetCharABCWidthsA GetCharABCWidths; + alias GetCharABCWidthsFloatA GetCharABCWidthsFloat; + alias GetCharWidth32A GetCharWidth32; + alias GetEnhMetaFileA GetEnhMetaFile; + alias GetEnhMetaFileDescriptionA GetEnhMetaFileDescription; + alias GetGlyphOutlineA GetGlyphOutline; + alias GetICMProfileA GetICMProfile; + alias GetKerningPairsA GetKerningPairs; + alias GetLogColorSpaceA GetLogColorSpace; + alias GetMetaFileA GetMetaFile; + alias GetObjectA GetObject; + alias GetOutlineTextMetricsA GetOutlineTextMetrics; + alias GetTextExtentPointA GetTextExtentPoint; + alias GetTextExtentExPointA GetTextExtentExPoint; + alias GetTextExtentPoint32A GetTextExtentPoint32; + alias GetTextFaceA GetTextFace; + alias GetTextMetricsA GetTextMetrics; + alias PolyTextOutA PolyTextOut; + alias RemoveFontResourceA RemoveFontResource; + alias ResetDCA ResetDC; + alias SetICMProfileA SetICMProfile; + alias StartDocA StartDoc; + alias TextOutA TextOut; + alias UpdateICMRegKeyA UpdateICMRegKey; + alias wglUseFontBitmapsA wglUseFontBitmaps; + alias wglUseFontOutlinesA wglUseFontOutlines; + static if (_WIN32_WINNT >= 0x500) { + alias ENUMLOGFONTEXDVA ENUMLOGFONTEXDV; + alias PENUMLOGFONTEXDVA PENUMLOGFONTEXDV; + alias LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV; + alias AddFontResourceExA AddFontResourceEx; + alias RemoveFontResourceExA RemoveFontResourceEx; + alias GetGlyphIndicesA GetGlyphIndices; + } +} + +// Common to both ASCII & UNICODE +alias DOCINFO* LPDOCINFO; +alias LOGFONT* PLOGFONT, NPLOGFONT, LPLOGFONT; +alias TEXTMETRIC* PTEXTMETRIC, LPTEXTMETRIC; +alias DEVMODE* PDEVMODE, NPDEVMODE, LPDEVMODE; +alias EXTLOGFONT* PEXTLOGFONT, NPEXTLOGFONT, LPEXTLOGFONT; +alias GCP_RESULTS* LPGCP_RESULTS; +alias OUTLINETEXTMETRIC* POUTLINETEXTMETRIC, NPOUTLINETEXTMETRIC, LPOUTLINETEXTMETRIC; +alias POLYTEXT* PPOLYTEXT, NPPOLYTEXT, LPPOLYTEXT; +alias LOGCOLORSPACE* LPLOGCOLORSPACE; +alias NEWTEXTMETRIC* PNEWTEXTMETRIC, NPNEWTEXTMETRIC, LPNEWTEXTMETRIC; +alias ENUMLOGFONT* LPENUMLOGFONT; +alias ENUMLOGFONTEX* LPENUMLOGFONTEX; +alias DISPLAY_DEVICE* PDISPLAY_DEVICE, LPDISPLAY_DEVICE; diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d new file mode 100644 index 0000000000..9cbfd176a4 --- /dev/null +++ b/src/core/sys/windows/wininet.d @@ -0,0 +1,1246 @@ +/***********************************************************************\ +* wininet.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wininet; +pragma(lib, "wininet"); + +// FIXME: check types and grouping of constants + +import win32.windows; + +enum { + INTERNET_INVALID_PORT_NUMBER = 0, + INTERNET_DEFAULT_FTP_PORT = 21, + INTERNET_DEFAULT_GOPHER_PORT = 70, + INTERNET_DEFAULT_HTTP_PORT = 80, + INTERNET_DEFAULT_HTTPS_PORT = 443, + INTERNET_DEFAULT_SOCKS_PORT = 1080 +} + +const size_t + MAX_CACHE_ENTRY_INFO_SIZE = 4096, + INTERNET_MAX_HOST_NAME_LENGTH = 256, + INTERNET_MAX_USER_NAME_LENGTH = 128, + INTERNET_MAX_PASSWORD_LENGTH = 128, + INTERNET_MAX_PORT_NUMBER_LENGTH = 5, + INTERNET_MAX_PORT_NUMBER_VALUE = 65535, + INTERNET_MAX_PATH_LENGTH = 2048, + INTERNET_MAX_SCHEME_LENGTH = 32, + INTERNET_MAX_URL_LENGTH = INTERNET_MAX_SCHEME_LENGTH + + "://".length + + INTERNET_MAX_PATH_LENGTH; + +enum : DWORD { + INTERNET_KEEP_ALIVE_UNKNOWN = DWORD.max, + INTERNET_KEEP_ALIVE_DISABLED = 0, + INTERNET_KEEP_ALIVE_ENABLED +} + +enum { + INTERNET_REQFLAG_FROM_CACHE = 1, + INTERNET_REQFLAG_ASYNC = 2 +} + +const DWORD + INTERNET_FLAG_RELOAD = 0x80000000, + INTERNET_FLAG_RAW_DATA = 0x40000000, + INTERNET_FLAG_EXISTING_CONNECT = 0x20000000, + INTERNET_FLAG_ASYNC = 0x10000000, + INTERNET_FLAG_PASSIVE = 0x08000000, + INTERNET_FLAG_NO_CACHE_WRITE = 0x04000000, + INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE, + INTERNET_FLAG_MAKE_PERSISTENT = 0x02000000, + INTERNET_FLAG_OFFLINE = 0x01000000, + INTERNET_FLAG_SECURE = 0x00800000, + INTERNET_FLAG_KEEP_CONNECTION = 0x00400000, + INTERNET_FLAG_NO_AUTO_REDIRECT = 0x00200000, + INTERNET_FLAG_READ_PREFETCH = 0x00100000, + INTERNET_FLAG_NO_COOKIES = 0x00080000, + INTERNET_FLAG_NO_AUTH = 0x00040000, + INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP = 0x00008000, + INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = 0x00004000, + INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, + INTERNET_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, + INTERNET_FLAG_RESYNCHRONIZE = 0x00000800, + INTERNET_FLAG_HYPERLINK = 0x00000400, + INTERNET_FLAG_NO_UI = 0x00000200, + INTERNET_FLAG_PRAGMA_NOCACHE = 0x00000100, + INTERNET_FLAG_MUST_CACHE_REQUEST = 0x00000010, + INTERNET_FLAG_TRANSFER_ASCII = FTP_TRANSFER_TYPE_ASCII, + INTERNET_FLAG_TRANSFER_BINARY = FTP_TRANSFER_TYPE_BINARY, + + SECURITY_INTERNET_MASK = 0x0000F000, + SECURITY_SET_MASK = SECURITY_INTERNET_MASK, + + INTERNET_FLAGS_MASK = 0xFFFCFE13, + INTERNET_OPTIONS_MASK = ~INTERNET_FLAGS_MASK; + +const INTERNET_NO_CALLBACK = 0; +const INTERNET_RFC1123_FORMAT = 0; +const size_t INTERNET_RFC1123_BUFSIZE = 30; + +const DWORD + ICU_ESCAPE = 0x80000000, + ICU_USERNAME = 0x40000000, + ICU_NO_ENCODE = 0x20000000, + ICU_DECODE = 0x10000000, + ICU_NO_META = 0x08000000, + ICU_ENCODE_SPACES_ONLY = 0x04000000, + ICU_BROWSER_MODE = 0x02000000; + +enum { + INTERNET_OPEN_TYPE_PRECONFIG = 0, + INTERNET_OPEN_TYPE_DIRECT = 1, + INTERNET_OPEN_TYPE_PROXY = 3, + PRE_CONFIG_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PRECONFIG, + LOCAL_INTERNET_ACCESS = INTERNET_OPEN_TYPE_DIRECT, + GATEWAY_INTERNET_ACCESS = 2, + CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY, +} + +const ISO_GLOBAL = 1; +const ISO_REGISTRY = 2; +const ISO_VALID_FLAGS = ISO_GLOBAL | ISO_REGISTRY; + +enum { + INTERNET_OPTION_CALLBACK = 1, + INTERNET_OPTION_CONNECT_TIMEOUT, + INTERNET_OPTION_CONNECT_RETRIES, + INTERNET_OPTION_CONNECT_BACKOFF, + INTERNET_OPTION_SEND_TIMEOUT, + INTERNET_OPTION_CONTROL_SEND_TIMEOUT = INTERNET_OPTION_SEND_TIMEOUT, + INTERNET_OPTION_RECEIVE_TIMEOUT, + INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT = INTERNET_OPTION_RECEIVE_TIMEOUT, + INTERNET_OPTION_DATA_SEND_TIMEOUT, + INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, + INTERNET_OPTION_HANDLE_TYPE, + INTERNET_OPTION_CONTEXT_VALUE, + INTERNET_OPTION_LISTEN_TIMEOUT, + INTERNET_OPTION_READ_BUFFER_SIZE, + INTERNET_OPTION_WRITE_BUFFER_SIZE, // = 13 + INTERNET_OPTION_ASYNC_ID = 15, + INTERNET_OPTION_ASYNC_PRIORITY, // = 16 + INTERNET_OPTION_PARENT_HANDLE = 21, + INTERNET_OPTION_KEEP_CONNECTION, + INTERNET_OPTION_REQUEST_FLAGS, + INTERNET_OPTION_EXTENDED_ERROR, // = 24 + INTERNET_OPTION_OFFLINE_MODE = 26, + INTERNET_OPTION_CACHE_STREAM_HANDLE, + INTERNET_OPTION_USERNAME, + INTERNET_OPTION_PASSWORD, + INTERNET_OPTION_ASYNC, + INTERNET_OPTION_SECURITY_FLAGS, + INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, + INTERNET_OPTION_DATAFILE_NAME, + INTERNET_OPTION_URL, + INTERNET_OPTION_SECURITY_CERTIFICATE, + INTERNET_OPTION_SECURITY_KEY_BITNESS, + INTERNET_OPTION_REFRESH, + INTERNET_OPTION_PROXY, + INTERNET_OPTION_SETTINGS_CHANGED, + INTERNET_OPTION_VERSION, + INTERNET_OPTION_USER_AGENT, + INTERNET_OPTION_END_BROWSER_SESSION, + INTERNET_OPTION_PROXY_USERNAME, + INTERNET_OPTION_PROXY_PASSWORD, // = 44 + INTERNET_FIRST_OPTION = INTERNET_OPTION_CALLBACK, + // why? + INTERNET_LAST_OPTION = INTERNET_OPTION_USER_AGENT +} + +const INTERNET_PRIORITY_FOREGROUND = 1000; + +enum { + INTERNET_HANDLE_TYPE_INTERNET = 1, + INTERNET_HANDLE_TYPE_CONNECT_FTP, + INTERNET_HANDLE_TYPE_CONNECT_GOPHER, + INTERNET_HANDLE_TYPE_CONNECT_HTTP, + INTERNET_HANDLE_TYPE_FTP_FIND, + INTERNET_HANDLE_TYPE_FTP_FIND_HTML, + INTERNET_HANDLE_TYPE_FTP_FILE, + INTERNET_HANDLE_TYPE_FTP_FILE_HTML, + INTERNET_HANDLE_TYPE_GOPHER_FIND, + INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML, + INTERNET_HANDLE_TYPE_GOPHER_FILE, + INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML, + INTERNET_HANDLE_TYPE_HTTP_REQUEST +} + +const DWORD + SECURITY_FLAG_SECURE = 0x00000001, + SECURITY_FLAG_SSL = 0x00000002, + SECURITY_FLAG_SSL3 = 0x00000004, + SECURITY_FLAG_PCT = 0x00000008, + SECURITY_FLAG_PCT4 = 0x00000010, + SECURITY_FLAG_IETFSSL4 = 0x00000020, + SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080, + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, + SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200, + SECURITY_FLAG_40BIT = 0x10000000, + SECURITY_FLAG_128BIT = 0x20000000, + SECURITY_FLAG_56BIT = 0x40000000, + SECURITY_FLAG_UNKNOWNBIT = 0x80000000, + SECURITY_FLAG_NORMALBITNESS = SECURITY_FLAG_40BIT, + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = INTERNET_FLAG_IGNORE_CERT_CN_INVALID, + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID, + SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS, + SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; + +enum { + INTERNET_SERVICE_FTP = 1, + INTERNET_SERVICE_GOPHER, + INTERNET_SERVICE_HTTP +} + +enum { + INTERNET_STATUS_RESOLVING_NAME = 10, + INTERNET_STATUS_NAME_RESOLVED = 11, + INTERNET_STATUS_CONNECTING_TO_SERVER = 20, + INTERNET_STATUS_CONNECTED_TO_SERVER = 21, + INTERNET_STATUS_SENDING_REQUEST = 30, + INTERNET_STATUS_REQUEST_SENT = 31, + INTERNET_STATUS_RECEIVING_RESPONSE = 40, + INTERNET_STATUS_RESPONSE_RECEIVED = 41, + INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42, + INTERNET_STATUS_PREFETCH = 43, + INTERNET_STATUS_CLOSING_CONNECTION = 50, + INTERNET_STATUS_CONNECTION_CLOSED = 51, + INTERNET_STATUS_HANDLE_CREATED = 60, + INTERNET_STATUS_HANDLE_CLOSING = 70, + INTERNET_STATUS_REQUEST_COMPLETE = 100, + INTERNET_STATUS_REDIRECT = 110 +} + +enum { + FTP_TRANSFER_TYPE_UNKNOWN = 0, + FTP_TRANSFER_TYPE_ASCII = 1, + FTP_TRANSFER_TYPE_BINARY = 2, + FTP_TRANSFER_TYPE_MASK = 3 +} + +const size_t + MAX_GOPHER_DISPLAY_TEXT = 128, + MAX_GOPHER_SELECTOR_TEXT = 256, + MAX_GOPHER_HOST_NAME = INTERNET_MAX_HOST_NAME_LENGTH, + MAX_GOPHER_LOCATOR_LENGTH + = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1 + + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 4; + +const DWORD + GOPHER_TYPE_TEXT_FILE = 0x00000001, + GOPHER_TYPE_DIRECTORY = 0x00000002, + GOPHER_TYPE_CSO = 0x00000004, + GOPHER_TYPE_ERROR = 0x00000008, + GOPHER_TYPE_MAC_BINHEX = 0x00000010, + GOPHER_TYPE_DOS_ARCHIVE = 0x00000020, + GOPHER_TYPE_UNIX_UUENCODED = 0x00000040, + GOPHER_TYPE_INDEX_SERVER = 0x00000080, + GOPHER_TYPE_TELNET = 0x00000100, + GOPHER_TYPE_BINARY = 0x00000200, + GOPHER_TYPE_REDUNDANT = 0x00000400, + GOPHER_TYPE_TN3270 = 0x00000800, + GOPHER_TYPE_GIF = 0x00001000, + GOPHER_TYPE_IMAGE = 0x00002000, + GOPHER_TYPE_BITMAP = 0x00004000, + GOPHER_TYPE_MOVIE = 0x00008000, + GOPHER_TYPE_SOUND = 0x00010000, + GOPHER_TYPE_HTML = 0x00020000, + GOPHER_TYPE_PDF = 0x00040000, + GOPHER_TYPE_CALENDAR = 0x00080000, + GOPHER_TYPE_INLINE = 0x00100000, + GOPHER_TYPE_UNKNOWN = 0x20000000, + GOPHER_TYPE_ASK = 0x40000000, + GOPHER_TYPE_GOPHER_PLUS = 0x80000000, + GOPHER_TYPE_FILE_MASK = 0x001FF271; + +BOOL IS_GOPHER_FILE(DWORD t) { + return !!(t & GOPHER_TYPE_FILE_MASK); +} + +BOOL IS_GOPHER_DIRECTORY(DWORD t) { + return !!(t & GOPHER_TYPE_DIRECTORY); +} + +BOOL IS_GOPHER_PHONE_SERVER(DWORD t) { + return !!(t & GOPHER_TYPE_CSO); +} + +BOOL IS_GOPHER_ERROR(DWORD t) { + return !!(t & GOPHER_TYPE_ERROR); +} + +BOOL IS_GOPHER_INDEX_SERVER(DWORD t) { + return !!(t & GOPHER_TYPE_INDEX_SERVER); +} + +BOOL IS_GOPHER_TELNET_SESSION(DWORD t) { + return !!(t & GOPHER_TYPE_TELNET); +} + +BOOL IS_GOPHER_BACKUP_SERVER(DWORD t) { + return !!(t & GOPHER_TYPE_REDUNDANT); +} + +BOOL IS_GOPHER_TN3270_SESSION(DWORD t) { + return !!(t & GOPHER_TYPE_TN3270); +} + +BOOL IS_GOPHER_ASK(DWORD t) { + return !!(t & GOPHER_TYPE_ASK); +} + +BOOL IS_GOPHER_PLUS(DWORD t) { + return !!(t & GOPHER_TYPE_GOPHER_PLUS); +} + +BOOL IS_GOPHER_TYPE_KNOWN(DWORD t) { + return !(t & GOPHER_TYPE_UNKNOWN); +} + +const size_t + MAX_GOPHER_CATEGORY_NAME = 128, + MAX_GOPHER_ATTRIBUTE_NAME = 128, + MIN_GOPHER_ATTRIBUTE_LENGTH = 256; + +const TCHAR[] + GOPHER_INFO_CATEGORY = "+INFO", + GOPHER_ADMIN_CATEGORY = "+ADMIN", + GOPHER_VIEWS_CATEGORY = "+VIEWS", + GOPHER_ABSTRACT_CATEGORY = "+ABSTRACT", + GOPHER_VERONICA_CATEGORY = "+VERONICA", + GOPHER_ADMIN_ATTRIBUTE = "Admin", + GOPHER_MOD_DATE_ATTRIBUTE = "Mod-Date", + GOPHER_TTL_ATTRIBUTE = "TTL", + GOPHER_SCORE_ATTRIBUTE = "Score", + GOPHER_RANGE_ATTRIBUTE = "Score-range", + GOPHER_SITE_ATTRIBUTE = "Site", + GOPHER_ORG_ATTRIBUTE = "Org", + GOPHER_LOCATION_ATTRIBUTE = "Loc", + GOPHER_GEOG_ATTRIBUTE = "Geog", + GOPHER_TIMEZONE_ATTRIBUTE = "TZ", + GOPHER_PROVIDER_ATTRIBUTE = "Provider", + GOPHER_VERSION_ATTRIBUTE = "Version", + GOPHER_ABSTRACT_ATTRIBUTE = "Abstract", + GOPHER_VIEW_ATTRIBUTE = "View", + GOPHER_TREEWALK_ATTRIBUTE = "treewalk"; + +enum : DWORD { + GOPHER_ATTRIBUTE_ID_BASE = 0xABCCCC00, + GOPHER_CATEGORY_ID_ALL, + GOPHER_CATEGORY_ID_INFO, + GOPHER_CATEGORY_ID_ADMIN, + GOPHER_CATEGORY_ID_VIEWS, + GOPHER_CATEGORY_ID_ABSTRACT, + GOPHER_CATEGORY_ID_VERONICA, + GOPHER_CATEGORY_ID_ASK, + GOPHER_CATEGORY_ID_UNKNOWN, + GOPHER_ATTRIBUTE_ID_ALL, + GOPHER_ATTRIBUTE_ID_ADMIN, + GOPHER_ATTRIBUTE_ID_MOD_DATE, + GOPHER_ATTRIBUTE_ID_TTL, + GOPHER_ATTRIBUTE_ID_SCORE, + GOPHER_ATTRIBUTE_ID_RANGE, + GOPHER_ATTRIBUTE_ID_SITE, + GOPHER_ATTRIBUTE_ID_ORG, + GOPHER_ATTRIBUTE_ID_LOCATION, + GOPHER_ATTRIBUTE_ID_GEOG, + GOPHER_ATTRIBUTE_ID_TIMEZONE, + GOPHER_ATTRIBUTE_ID_PROVIDER, + GOPHER_ATTRIBUTE_ID_VERSION, + GOPHER_ATTRIBUTE_ID_ABSTRACT, + GOPHER_ATTRIBUTE_ID_VIEW, + GOPHER_ATTRIBUTE_ID_TREEWALK, + GOPHER_ATTRIBUTE_ID_UNKNOWN +} + +const HTTP_MAJOR_VERSION = 1; +const HTTP_MINOR_VERSION = 0; +const TCHAR[] HTTP_VERSION = "HTTP/1.0"; + +enum : DWORD { + HTTP_QUERY_MIME_VERSION, + HTTP_QUERY_CONTENT_TYPE, + HTTP_QUERY_CONTENT_TRANSFER_ENCODING, + HTTP_QUERY_CONTENT_ID, + HTTP_QUERY_CONTENT_DESCRIPTION, + HTTP_QUERY_CONTENT_LENGTH, + HTTP_QUERY_CONTENT_LANGUAGE, + HTTP_QUERY_ALLOW, + HTTP_QUERY_PUBLIC, + HTTP_QUERY_DATE, + HTTP_QUERY_EXPIRES, + HTTP_QUERY_LAST_MODIFIED, + HTTP_QUERY_MESSAGE_ID, + HTTP_QUERY_URI, + HTTP_QUERY_DERIVED_FROM, + HTTP_QUERY_COST, + HTTP_QUERY_LINK, + HTTP_QUERY_PRAGMA, + HTTP_QUERY_VERSION, + HTTP_QUERY_STATUS_CODE, + HTTP_QUERY_STATUS_TEXT, + HTTP_QUERY_RAW_HEADERS, + HTTP_QUERY_RAW_HEADERS_CRLF, + HTTP_QUERY_CONNECTION, + HTTP_QUERY_ACCEPT, + HTTP_QUERY_ACCEPT_CHARSET, + HTTP_QUERY_ACCEPT_ENCODING, + HTTP_QUERY_ACCEPT_LANGUAGE, + HTTP_QUERY_AUTHORIZATION, + HTTP_QUERY_CONTENT_ENCODING, + HTTP_QUERY_FORWARDED, + HTTP_QUERY_FROM, + HTTP_QUERY_IF_MODIFIED_SINCE, + HTTP_QUERY_LOCATION, + HTTP_QUERY_ORIG_URI, + HTTP_QUERY_REFERER, + HTTP_QUERY_RETRY_AFTER, + HTTP_QUERY_SERVER, + HTTP_QUERY_TITLE, + HTTP_QUERY_USER_AGENT, + HTTP_QUERY_WWW_AUTHENTICATE, + HTTP_QUERY_PROXY_AUTHENTICATE, + HTTP_QUERY_ACCEPT_RANGES, + HTTP_QUERY_SET_COOKIE, + HTTP_QUERY_COOKIE, + HTTP_QUERY_REQUEST_METHOD, + HTTP_QUERY_MAX = 45, + HTTP_QUERY_CUSTOM = 65535 +} + +const DWORD + HTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, + HTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, + HTTP_QUERY_FLAG_NUMBER = 0x20000000, + HTTP_QUERY_FLAG_COALESCE = 0x10000000, + HTTP_QUERY_MODIFIER_FLAGS_MASK = 0xF0000000, + HTTP_QUERY_HEADER_MASK = ~HTTP_QUERY_MODIFIER_FLAGS_MASK; + +enum { + HTTP_STATUS_OK = 200, + HTTP_STATUS_CREATED, + HTTP_STATUS_ACCEPTED, + HTTP_STATUS_PARTIAL, + HTTP_STATUS_NO_CONTENT, // = 204 + HTTP_STATUS_AMBIGUOUS = 300, + HTTP_STATUS_MOVED, + HTTP_STATUS_REDIRECT, + HTTP_STATUS_REDIRECT_METHOD, + HTTP_STATUS_NOT_MODIFIED, // = 304 + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_DENIED, + HTTP_STATUS_PAYMENT_REQ, + HTTP_STATUS_FORBIDDEN, + HTTP_STATUS_NOT_FOUND, + HTTP_STATUS_BAD_METHOD, + HTTP_STATUS_NONE_ACCEPTABLE, + HTTP_STATUS_PROXY_AUTH_REQ, + HTTP_STATUS_REQUEST_TIMEOUT, + HTTP_STATUS_CONFLICT, + HTTP_STATUS_GONE, + HTTP_STATUS_AUTH_REFUSED, // = 411 + HTTP_STATUS_SERVER_ERROR = 500, + HTTP_STATUS_NOT_SUPPORTED, + HTTP_STATUS_BAD_GATEWAY, + HTTP_STATUS_SERVICE_UNAVAIL, + HTTP_STATUS_GATEWAY_TIMEOUT // = 504 +} + +enum { + INTERNET_PREFETCH_PROGRESS, + INTERNET_PREFETCH_COMPLETE, + INTERNET_PREFETCH_ABORTED +} + +const FLAGS_ERROR_UI_FILTER_FOR_ERRORS = 0x01; +const FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = 0x02; +const FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = 0x04; +const FLAGS_ERROR_UI_FLAGS_NO_UI = 0x08; + +const DWORD + HTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, + HTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, + HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, + HTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, + HTTP_ADDREQ_FLAG_ADD = 0x20000000, + HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, + HTTP_ADDREQ_FLAG_COALESCE = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, + HTTP_ADDREQ_FLAG_REPLACE = 0x80000000; + +enum { + INTERNET_ERROR_BASE = 12000, + ERROR_INTERNET_OUT_OF_HANDLES, + ERROR_INTERNET_TIMEOUT, + ERROR_INTERNET_EXTENDED_ERROR, + ERROR_INTERNET_INTERNAL_ERROR, + ERROR_INTERNET_INVALID_URL, + ERROR_INTERNET_UNRECOGNIZED_SCHEME, + ERROR_INTERNET_NAME_NOT_RESOLVED, + ERROR_INTERNET_PROTOCOL_NOT_FOUND, + ERROR_INTERNET_INVALID_OPTION, + ERROR_INTERNET_BAD_OPTION_LENGTH, + ERROR_INTERNET_OPTION_NOT_SETTABLE, + ERROR_INTERNET_SHUTDOWN, + ERROR_INTERNET_INCORRECT_USER_NAME, + ERROR_INTERNET_INCORRECT_PASSWORD, + ERROR_INTERNET_LOGIN_FAILURE, + ERROR_INTERNET_INVALID_OPERATION, + ERROR_INTERNET_OPERATION_CANCELLED, + ERROR_INTERNET_INCORRECT_HANDLE_TYPE, + ERROR_INTERNET_INCORRECT_HANDLE_STATE, + ERROR_INTERNET_NOT_PROXY_REQUEST, + ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND, + ERROR_INTERNET_BAD_REGISTRY_PARAMETER, + ERROR_INTERNET_NO_DIRECT_ACCESS, + ERROR_INTERNET_NO_CONTEXT, + ERROR_INTERNET_NO_CALLBACK, + ERROR_INTERNET_REQUEST_PENDING, + ERROR_INTERNET_INCORRECT_FORMAT, + ERROR_INTERNET_ITEM_NOT_FOUND, + ERROR_INTERNET_CANNOT_CONNECT, + ERROR_INTERNET_CONNECTION_ABORTED, + ERROR_INTERNET_CONNECTION_RESET, + ERROR_INTERNET_FORCE_RETRY, + ERROR_INTERNET_INVALID_PROXY_REQUEST, + ERROR_INTERNET_NEED_UI, // = INTERNET_ERROR_BASE + 34 + ERROR_INTERNET_HANDLE_EXISTS = INTERNET_ERROR_BASE + 36, + ERROR_INTERNET_SEC_CERT_DATE_INVALID, + ERROR_INTERNET_SEC_CERT_CN_INVALID, + ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR, + ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR, + ERROR_INTERNET_MIXED_SECURITY, + ERROR_INTERNET_CHG_POST_IS_NON_SECURE, + ERROR_INTERNET_POST_IS_NON_SECURE, + ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED, + ERROR_INTERNET_INVALID_CA, + ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP, + ERROR_INTERNET_ASYNC_THREAD_FAILED, + ERROR_INTERNET_REDIRECT_SCHEME_CHANGE, // = INTERNET_ERROR_BASE + 48 + + ERROR_FTP_TRANSFER_IN_PROGRESS = INTERNET_ERROR_BASE + 110, + ERROR_FTP_DROPPED, // = INTERNET_ERROR_BASE + 111 + ERROR_GOPHER_PROTOCOL_ERROR = INTERNET_ERROR_BASE + 130, + ERROR_GOPHER_NOT_FILE, + ERROR_GOPHER_DATA_ERROR, + ERROR_GOPHER_END_OF_DATA, + ERROR_GOPHER_INVALID_LOCATOR, + ERROR_GOPHER_INCORRECT_LOCATOR_TYPE, + ERROR_GOPHER_NOT_GOPHER_PLUS, + ERROR_GOPHER_ATTRIBUTE_NOT_FOUND, + ERROR_GOPHER_UNKNOWN_LOCATOR, // = INTERNET_ERROR_BASE + 138, + ERROR_HTTP_HEADER_NOT_FOUND = INTERNET_ERROR_BASE + 150, + ERROR_HTTP_DOWNLEVEL_SERVER, + ERROR_HTTP_INVALID_SERVER_RESPONSE, + ERROR_HTTP_INVALID_HEADER, + ERROR_HTTP_INVALID_QUERY_REQUEST, + ERROR_HTTP_HEADER_ALREADY_EXISTS, + ERROR_HTTP_REDIRECT_FAILED, + ERROR_INTERNET_SECURITY_CHANNEL_ERROR, + ERROR_INTERNET_UNABLE_TO_CACHE_FILE, + ERROR_INTERNET_TCPIP_NOT_INSTALLED, + ERROR_HTTP_NOT_REDIRECTED, // = INTERNET_ERROR_BASE + 160 + // why? + INTERNET_ERROR_LAST = ERROR_INTERNET_TCPIP_NOT_INSTALLED +} + + +const NORMAL_CACHE_ENTRY = 0x000001; +const STABLE_CACHE_ENTRY = 0x000002; +const STICKY_CACHE_ENTRY = 0x000004; +const SPARSE_CACHE_ENTRY = 0x010000; +const OCX_CACHE_ENTRY = 0x020000; +const COOKIE_CACHE_ENTRY = 0x100000; +const URLHISTORY_CACHE_ENTRY = 0x200000; + +const CACHE_ENTRY_ATTRIBUTE_FC = 0x0004; +const CACHE_ENTRY_HITRATE_FC = 0x0010; +const CACHE_ENTRY_MODTIME_FC = 0x0040; +const CACHE_ENTRY_EXPTIME_FC = 0x0080; +const CACHE_ENTRY_ACCTIME_FC = 0x0100; +const CACHE_ENTRY_SYNCTIME_FC = 0x0200; +const CACHE_ENTRY_HEADERINFO_FC = 0x0400; + +enum { + WININET_API_FLAG_ASYNC = 1, + WININET_API_FLAG_SYNC = 4, + WININET_API_FLAG_USE_CONTEXT = 8 +} + +// FIXME: how should these really be grouped? +enum { + IRF_ASYNC = WININET_API_FLAG_ASYNC, + IRF_SYNC = WININET_API_FLAG_SYNC, + IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, +} +const IRF_NO_WAIT = 8; + +enum { + HSR_ASYNC = WININET_API_FLAG_ASYNC, + HSR_SYNC = WININET_API_FLAG_SYNC, + HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, +} + +const HSR_INITIATE = 8; +const HSR_DOWNLOAD = 16; +const HSR_CHUNKED = 32; + +const INTERNET_DIAL_UNATTENDED = 0x8000; +const INTERNET_DIALSTATE_DISCONNECTED = 1; +const INTERENT_GOONLINE_REFRESH = 1; +const INTERENT_GOONLINE_MASK = 1; +const INTERNET_AUTODIAL_FORCE_ONLINE = 1; +const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2; +const INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4; +const INTERNET_CONNECTION_MODEM = 0x01; +const INTERNET_CONNECTION_LAN = 0x02; +const INTERNET_CONNECTION_PROXY = 0x04; +const INTERNET_CONNECTION_MODEM_BUSY = 0x08; +const INTERNET_RAS_INSTALLED = 0x10; +const INTERNET_CONNECTION_OFFLINE = 0x20; +const INTERNET_CONNECTION_CONFIGURED = 0x40; + +enum { + CACHEGROUP_SEARCH_ALL = 0, + CACHEGROUP_SEARCH_BYURL = 1 +} + +enum { + INTERNET_CACHE_GROUP_ADD = 0, + INTERNET_CACHE_GROUP_REMOVE = 1 +} + +mixin DECLARE_HANDLE!("HINTERNET"); // doesn't work - bug +/*struct HINTERNET { + HANDLE h; + alias h this; +}*/ +alias HINTERNET* LPHINTERNET; + +alias LONGLONG GROUPID; +alias WORD INTERNET_PORT; +alias WORD* LPINTERNET_PORT; + +enum INTERNET_SCHEME { + INTERNET_SCHEME_PARTIAL = -2, + INTERNET_SCHEME_UNKNOWN, + INTERNET_SCHEME_DEFAULT, + INTERNET_SCHEME_FTP, + INTERNET_SCHEME_GOPHER, + INTERNET_SCHEME_HTTP, + INTERNET_SCHEME_HTTPS, + INTERNET_SCHEME_FILE, + INTERNET_SCHEME_NEWS, + INTERNET_SCHEME_MAILTO, + INTERNET_SCHEME_SOCKS, + INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, + INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS +} +alias INTERNET_SCHEME* LPINTERNET_SCHEME; + +struct INTERNET_ASYNC_RESULT { + DWORD dwResult; + DWORD dwError; +} +alias INTERNET_ASYNC_RESULT* LPINTERNET_ASYNC_RESULT; + +struct INTERNET_PREFETCH_STATUS { + DWORD dwStatus; + DWORD dwSize; +} +alias INTERNET_PREFETCH_STATUS* LPINTERNET_PREFETCH_STATUS; + +struct INTERNET_PROXY_INFO { + DWORD dwAccessType; + LPCTSTR lpszProxy; + LPCTSTR lpszProxyBypass; +} +alias INTERNET_PROXY_INFO* LPINTERNET_PROXY_INFO; + +struct INTERNET_VERSION_INFO { + DWORD dwMajorVersion; + DWORD dwMinorVersion; +} +alias INTERNET_VERSION_INFO* LPINTERNET_VERSION_INFO; + +struct URL_COMPONENTSA { + DWORD dwStructSize = URL_COMPONENTSA.sizeof; + LPSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPSTR lpszUserName; + DWORD dwUserNameLength; + LPSTR lpszPassword; + DWORD dwPasswordLength; + LPSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} +alias URL_COMPONENTSA* LPURL_COMPONENTSA; + +struct URL_COMPONENTSW { + DWORD dwStructSize = URL_COMPONENTSW.sizeof; + LPWSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPWSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPWSTR lpszUserName; + DWORD dwUserNameLength; + LPWSTR lpszPassword; + DWORD dwPasswordLength; + LPWSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPWSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} +alias URL_COMPONENTSW* LPURL_COMPONENTSW; + +struct INTERNET_CERTIFICATE_INFO { + FILETIME ftExpiry; + FILETIME ftStart; + LPTSTR lpszSubjectInfo; + LPTSTR lpszIssuerInfo; + LPTSTR lpszProtocolName; + LPTSTR lpszSignatureAlgName; + LPTSTR lpszEncryptionAlgName; + DWORD dwKeySize; +} +alias INTERNET_CERTIFICATE_INFO* LPINTERNET_CERTIFICATE_INFO; + +extern (Windows) alias void function(HINTERNET, DWORD, DWORD, PVOID, DWORD) + INTERNET_STATUS_CALLBACK; +alias INTERNET_STATUS_CALLBACK* LPINTERNET_STATUS_CALLBACK; + +const INTERNET_INVALID_STATUS_CALLBACK + = cast(INTERNET_STATUS_CALLBACK) -1; + +struct GOPHER_FIND_DATAA { + CHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; + DWORD GopherType; + DWORD SizeLow; + DWORD SizeHigh; + FILETIME LastModificationTime; + CHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; +} +alias GOPHER_FIND_DATAA* LPGOPHER_FIND_DATAA; + +struct GOPHER_FIND_DATAW { + WCHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; + DWORD GopherType; + DWORD SizeLow; + DWORD SizeHigh; + FILETIME LastModificationTime; + WCHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; +} +alias GOPHER_FIND_DATAW* LPGOPHER_FIND_DATAW; + +struct GOPHER_ADMIN_ATTRIBUTE_TYPE { + LPCTSTR Comment; + LPCTSTR EmailAddress; +} +alias GOPHER_ADMIN_ATTRIBUTE_TYPE* LPGOPHER_ADMIN_ATTRIBUTE_TYPE; + +struct GOPHER_MOD_DATE_ATTRIBUTE_TYPE { + FILETIME DateAndTime; +} +alias GOPHER_MOD_DATE_ATTRIBUTE_TYPE* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE; + +struct GOPHER_TTL_ATTRIBUTE_TYPE { + DWORD Ttl; +} +alias GOPHER_TTL_ATTRIBUTE_TYPE* LPGOPHER_TTL_ATTRIBUTE_TYPE; + +struct GOPHER_SCORE_ATTRIBUTE_TYPE { + INT Score; +} +alias GOPHER_SCORE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_ATTRIBUTE_TYPE; + +struct GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE { + INT LowerBound; + INT UpperBound; +} +alias GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE; + +struct GOPHER_SITE_ATTRIBUTE_TYPE { + LPCTSTR Site; +} +alias GOPHER_SITE_ATTRIBUTE_TYPE* LPGOPHER_SITE_ATTRIBUTE_TYPE; + +struct GOPHER_ORGANIZATION_ATTRIBUTE_TYPE { + LPCTSTR Organization; +} +alias GOPHER_ORGANIZATION_ATTRIBUTE_TYPE* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE; + +struct GOPHER_LOCATION_ATTRIBUTE_TYPE { + LPCTSTR Location; +} +alias GOPHER_LOCATION_ATTRIBUTE_TYPE* LPGOPHER_LOCATION_ATTRIBUTE_TYPE; + +struct GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE { + INT DegreesNorth; + INT MinutesNorth; + INT SecondsNorth; + INT DegreesEast; + INT MinutesEast; + INT SecondsEast; +} +alias GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE* + LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE; + +struct GOPHER_TIMEZONE_ATTRIBUTE_TYPE { + INT Zone; +} +alias GOPHER_TIMEZONE_ATTRIBUTE_TYPE* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE; + +struct GOPHER_PROVIDER_ATTRIBUTE_TYPE { + LPCTSTR Provider; +} +alias GOPHER_PROVIDER_ATTRIBUTE_TYPE* LPGOPHER_PROVIDER_ATTRIBUTE_TYPE; + +struct GOPHER_VERSION_ATTRIBUTE_TYPE { + LPCTSTR Version; +} +alias GOPHER_VERSION_ATTRIBUTE_TYPE* LPGOPHER_VERSION_ATTRIBUTE_TYPE; + +struct GOPHER_ABSTRACT_ATTRIBUTE_TYPE { + LPCTSTR ShortAbstract; + LPCTSTR AbstractFile; +} +alias GOPHER_ABSTRACT_ATTRIBUTE_TYPE* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE; + +struct GOPHER_VIEW_ATTRIBUTE_TYPE { + LPCTSTR ContentType; + LPCTSTR Language; + DWORD Size; +} +alias GOPHER_VIEW_ATTRIBUTE_TYPE* LPGOPHER_VIEW_ATTRIBUTE_TYPE; + +struct GOPHER_VERONICA_ATTRIBUTE_TYPE { + BOOL TreeWalk; +} +alias GOPHER_VERONICA_ATTRIBUTE_TYPE* LPGOPHER_VERONICA_ATTRIBUTE_TYPE; + +struct GOPHER_ASK_ATTRIBUTE_TYPE { + LPCTSTR QuestionType; + LPCTSTR QuestionText; +} +alias GOPHER_ASK_ATTRIBUTE_TYPE* LPGOPHER_ASK_ATTRIBUTE_TYPE; + +struct GOPHER_UNKNOWN_ATTRIBUTE_TYPE { + LPCTSTR Text; +} +alias GOPHER_UNKNOWN_ATTRIBUTE_TYPE* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE; + +struct GOPHER_ATTRIBUTE_TYPE { + DWORD CategoryId; + DWORD AttributeId; + union { + GOPHER_ADMIN_ATTRIBUTE_TYPE Admin; + GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate; + GOPHER_TTL_ATTRIBUTE_TYPE Ttl; + GOPHER_SCORE_ATTRIBUTE_TYPE Score; + GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange; + GOPHER_SITE_ATTRIBUTE_TYPE Site; + GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization; + GOPHER_LOCATION_ATTRIBUTE_TYPE Location; + GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation; + GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone; + GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider; + GOPHER_VERSION_ATTRIBUTE_TYPE Version; + GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract; + GOPHER_VIEW_ATTRIBUTE_TYPE View; + GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica; + GOPHER_ASK_ATTRIBUTE_TYPE Ask; + GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown; + } /+AttributeType;+/ +} +alias GOPHER_ATTRIBUTE_TYPE* LPGOPHER_ATTRIBUTE_TYPE; + +alias BOOL function(LPGOPHER_ATTRIBUTE_TYPE, DWORD) + GOPHER_ATTRIBUTE_ENUMERATOR; + +struct INTERNET_CACHE_ENTRY_INFOA { + DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOA.sizeof; + LPSTR lpszSourceUrlName; + LPSTR lpszLocalFileName; + DWORD CacheEntryType; + DWORD dwUseCount; + DWORD dwHitRate; + DWORD dwSizeLow; + DWORD dwSizeHigh; + FILETIME LastModifiedTime; + FILETIME ExpireTime; + FILETIME LastAccessTime; + FILETIME LastSyncTime; + PBYTE lpHeaderInfo; + DWORD dwHeaderInfoSize; + LPSTR lpszFileExtension; + DWORD dwReserved; +} +alias INTERNET_CACHE_ENTRY_INFOA* LPINTERNET_CACHE_ENTRY_INFOA; + +struct INTERNET_CACHE_ENTRY_INFOW { + DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOW.sizeof; + LPWSTR lpszSourceUrlName; + LPWSTR lpszLocalFileName; + DWORD CacheEntryType; + DWORD dwUseCount; + DWORD dwHitRate; + DWORD dwSizeLow; + DWORD dwSizeHigh; + FILETIME LastModifiedTime; + FILETIME ExpireTime; + FILETIME LastAccessTime; + FILETIME LastSyncTime; + PBYTE lpHeaderInfo; + DWORD dwHeaderInfoSize; + LPWSTR lpszFileExtension; + DWORD dwReserved; +} +alias INTERNET_CACHE_ENTRY_INFOW* LPINTERNET_CACHE_ENTRY_INFOW; + +struct INTERNET_BUFFERSA { + DWORD dwStructSize = INTERNET_BUFFERSA.sizeof; + INTERNET_BUFFERSA* Next; + LPCSTR lpcszHeader; + DWORD dwHeadersLength; + DWORD dwHeadersTotal; + LPVOID lpvBuffer; + DWORD dwBufferLength; + DWORD dwBufferTotal; + DWORD dwOffsetLow; + DWORD dwOffsetHigh; +} +alias INTERNET_BUFFERSA* LPINTERNET_BUFFERSA; + +struct INTERNET_BUFFERSW { + DWORD dwStructSize = INTERNET_BUFFERSW.sizeof; + INTERNET_BUFFERSW* Next; + LPCWSTR lpcszHeader; + DWORD dwHeadersLength; + DWORD dwHeadersTotal; + LPVOID lpvBuffer; + DWORD dwBufferLength; + DWORD dwBufferTotal; + DWORD dwOffsetLow; + DWORD dwOffsetHigh; +} +alias INTERNET_BUFFERSW* LPINTERNET_BUFFERSW; + +const size_t + GROUP_OWNER_STORAGE_SIZE = 4, + GROUPNAME_MAX_LENGTH = 120; + +struct INTERNET_CACHE_GROUP_INFOA { + DWORD dwGroupSize; + DWORD dwGroupFlags; + DWORD dwGroupType; + DWORD dwDiskUsage; + DWORD dwDiskQuota; + DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; + CHAR[GROUPNAME_MAX_LENGTH] szGroupName; +} +alias INTERNET_CACHE_GROUP_INFOA* LPINTERNET_CACHE_GROUP_INFOA; + +struct INTERNET_CACHE_GROUP_INFOW { + DWORD dwGroupSize; + DWORD dwGroupFlags; + DWORD dwGroupType; + DWORD dwDiskUsage; + DWORD dwDiskQuota; + DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; + WCHAR[GROUPNAME_MAX_LENGTH] szGroupName; +} +alias INTERNET_CACHE_GROUP_INFOW* LPINTERNET_CACHE_GROUP_INFOW; + +extern (Windows) { + BOOL InternetTimeFromSystemTime(SYSTEMTIME*, DWORD, LPSTR, DWORD); + BOOL InternetTimeToSystemTime(LPCSTR, SYSTEMTIME*, DWORD); + BOOL InternetDebugGetLocalTime(SYSTEMTIME*, PDWORD); + BOOL InternetCrackUrlA(LPCSTR, DWORD, DWORD, LPURL_COMPONENTSA); + BOOL InternetCrackUrlW(LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW); + BOOL InternetCreateUrlA(LPURL_COMPONENTSA, DWORD, LPSTR, PDWORD); + BOOL InternetCreateUrlW(LPURL_COMPONENTSW, DWORD, LPWSTR, PDWORD); + BOOL InternetCanonicalizeUrlA(LPCSTR, LPSTR, PDWORD, DWORD); + BOOL InternetCanonicalizeUrlW(LPCWSTR, LPWSTR, PDWORD, DWORD); + BOOL InternetCheckConnectionA(LPCSTR, DWORD, DWORD); + BOOL InternetCheckConnectionW(LPCWSTR, DWORD, DWORD); + BOOL InternetCombineUrlA(LPCSTR, LPCSTR, LPSTR, PDWORD, DWORD); + BOOL InternetCombineUrlW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, DWORD); + HINTERNET InternetOpenA(LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD); + HINTERNET InternetOpenW(LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD); + BOOL InternetCloseHandle(HINTERNET); + HINTERNET InternetConnectA(HINTERNET, LPCSTR, INTERNET_PORT, LPCSTR, + LPCSTR, DWORD, DWORD, DWORD); + HINTERNET InternetConnectW(HINTERNET, LPCWSTR, INTERNET_PORT, LPCWSTR, + LPCWSTR, DWORD, DWORD, DWORD); + HINTERNET InternetOpenUrlA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD, + DWORD); + HINTERNET InternetOpenUrlW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD, + DWORD); + BOOL InternetReadFile(HINTERNET, PVOID, DWORD, PDWORD); + DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD); + BOOL InternetWriteFile(HINTERNET, LPCVOID, DWORD, PDWORD); + BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD); + BOOL InternetFindNextFileA(HINTERNET, PVOID); + BOOL InternetFindNextFileW(HINTERNET, PVOID); + BOOL InternetQueryOptionA(HINTERNET, DWORD, PVOID, PDWORD); + BOOL InternetQueryOptionW(HINTERNET, DWORD, PVOID, PDWORD); + BOOL InternetSetOptionA(HINTERNET, DWORD, PVOID, DWORD); + BOOL InternetSetOptionW(HINTERNET, DWORD, PVOID, DWORD); + BOOL InternetSetOptionExA(HINTERNET, DWORD, PVOID, DWORD, DWORD); + BOOL InternetSetOptionExW(HINTERNET, DWORD, PVOID, DWORD, DWORD); + BOOL InternetGetLastResponseInfoA(PDWORD, LPSTR, PDWORD); + BOOL InternetGetLastResponseInfoW(PDWORD, LPWSTR, PDWORD); + INTERNET_STATUS_CALLBACK InternetSetStatusCallback(HINTERNET, + INTERNET_STATUS_CALLBACK); + DWORD FtpGetFileSize(HINTERNET, LPDWORD); + HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATA, DWORD, + DWORD); + HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATA, DWORD, + DWORD); + BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD); + BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD); + BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); + BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL FtpDeleteFileA(HINTERNET, LPCSTR); + BOOL FtpDeleteFileW(HINTERNET, LPCWSTR); + BOOL FtpRenameFileA(HINTERNET, LPCSTR, LPCSTR); + BOOL FtpRenameFileW(HINTERNET, LPCWSTR, LPCWSTR); + HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD); + HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD); + BOOL FtpCreateDirectoryA(HINTERNET, LPCSTR); + BOOL FtpCreateDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpRemoveDirectoryA(HINTERNET, LPCSTR); + BOOL FtpRemoveDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpSetCurrentDirectoryA(HINTERNET, LPCSTR); + BOOL FtpSetCurrentDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpGetCurrentDirectoryA(HINTERNET, LPSTR, PDWORD); + BOOL FtpGetCurrentDirectoryW(HINTERNET, LPWSTR, PDWORD); + BOOL FtpCommandA(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET*); + BOOL FtpCommandW(HINTERNET, BOOL, DWORD, LPCWSTR, DWORD_PTR, HINTERNET*); + BOOL GopherCreateLocatorA(LPCSTR, INTERNET_PORT, LPCSTR, LPCSTR, DWORD, + LPSTR, PDWORD); + BOOL GopherCreateLocatorW(LPCWSTR, INTERNET_PORT, LPCWSTR, LPCWSTR, DWORD, + LPWSTR, PDWORD); + BOOL GopherGetLocatorTypeA(LPCSTR, PDWORD); + BOOL GopherGetLocatorTypeW(LPCWSTR, PDWORD); + HINTERNET GopherFindFirstFileA(HINTERNET, LPCSTR, LPCSTR, + LPGOPHER_FIND_DATAA, DWORD, DWORD); + HINTERNET GopherFindFirstFileW(HINTERNET, LPCWSTR, LPCWSTR, + LPGOPHER_FIND_DATAW, DWORD, DWORD); + HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); + HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL GopherGetAttributeA(HINTERNET, LPCSTR, LPCSTR, LPBYTE, DWORD, + PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); + BOOL GopherGetAttributeW(HINTERNET, LPCWSTR, LPCWSTR, LPBYTE, DWORD, + PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); + HINTERNET HttpOpenRequestA(HINTERNET, LPCSTR, LPCSTR, LPCSTR, LPCSTR, + LPCSTR*, DWORD, DWORD); + HINTERNET HttpOpenRequestW(HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, + LPCWSTR*, DWORD, DWORD); + BOOL HttpAddRequestHeadersA(HINTERNET, LPCSTR, DWORD, DWORD); + BOOL HttpAddRequestHeadersW(HINTERNET, LPCWSTR, DWORD, DWORD); + BOOL HttpSendRequestA(HINTERNET, LPCSTR, DWORD, PVOID, DWORD); + BOOL HttpSendRequestW(HINTERNET, LPCWSTR, DWORD, PVOID, DWORD); + BOOL HttpQueryInfoA(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); + BOOL HttpQueryInfoW(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); + BOOL InternetSetCookieA(LPCSTR, LPCSTR, LPCSTR); + BOOL InternetSetCookieW(LPCWSTR, LPCWSTR, LPCWSTR); + BOOL InternetGetCookieA(LPCSTR, LPCSTR, LPSTR, PDWORD); + BOOL InternetGetCookieW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD); + DWORD InternetAttemptConnect(DWORD); + DWORD InternetErrorDlg(HWND, HINTERNET, DWORD, DWORD, PVOID*); + DWORD InternetConfirmZoneCrossing(HWND, LPSTR, LPSTR, BOOL); + BOOL CreateUrlCacheEntryA(LPCSTR, DWORD, LPCSTR, LPSTR, DWORD); + BOOL CreateUrlCacheEntryW(LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD); + BOOL CommitUrlCacheEntryA(LPCSTR, LPCSTR, FILETIME, FILETIME, DWORD, + LPBYTE, DWORD, LPCSTR, DWORD); + BOOL CommitUrlCacheEntryW(LPCWSTR, LPCWSTR, FILETIME, FILETIME, DWORD, + LPBYTE, DWORD, LPCWSTR, DWORD); + BOOL RetrieveUrlCacheEntryFileA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD, DWORD); + BOOL RetrieveUrlCacheEntryFileW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD, DWORD); + BOOL UnlockUrlCacheEntryFile(LPCSTR, DWORD); + HANDLE RetrieveUrlCacheEntryStreamA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD, BOOL, DWORD); + HANDLE RetrieveUrlCacheEntryStreamW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD, BOOL, DWORD); + BOOL ReadUrlCacheEntryStream(HANDLE, DWORD, PVOID, PDWORD, DWORD); + BOOL UnlockUrlCacheEntryStream(HANDLE, DWORD); + BOOL GetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); + BOOL GetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); + BOOL SetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, DWORD); + BOOL SetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, DWORD); + HANDLE FindFirstUrlCacheEntryA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD); + HANDLE FindFirstUrlCacheEntryW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD); + BOOL FindNextUrlCacheEntryA(HANDLE, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); + BOOL FindNextUrlCacheEntryW(HANDLE, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); + BOOL FindCloseUrlCache(HANDLE); + BOOL DeleteUrlCacheEntry(LPCSTR); + DWORD AuthenticateUser(PVOID*, LPSTR, LPSTR, DWORD, LPSTR, DWORD, LPSTR, + LPSTR); + BOOL HttpSendRequestExA(HINTERNET, LPINTERNET_BUFFERSA, + LPINTERNET_BUFFERSA, DWORD, DWORD); + BOOL HttpSendRequestExW(HINTERNET, LPINTERNET_BUFFERSW, + LPINTERNET_BUFFERSW, DWORD, DWORD); + BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD); + BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD); + DWORD InternetDial(HWND, LPTSTR, DWORD, LPDWORD, DWORD); + DWORD InternetHangUp(DWORD, DWORD); + BOOL InternetGoOnline(LPTSTR, HWND, DWORD); + BOOL InternetAutodial(DWORD, DWORD); + BOOL InternetAutodialHangup(DWORD); + BOOL InternetGetConnectedState(LPDWORD, DWORD); + BOOL InternetSetDialState(LPCTSTR, DWORD, DWORD); + BOOL InternetReadFileExA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR); + BOOL InternetReadFileExW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR); + GROUPID CreateUrlCacheGroup(DWORD, LPVOID); + BOOL DeleteUrlCacheGroup(GROUPID, DWORD, LPVOID); + HANDLE FindFirstUrlCacheGroup(DWORD, DWORD, LPVOID, DWORD, GROUPID*, + LPVOID); + BOOL FindNextUrlCacheGroup(HANDLE, GROUPID*, LPVOID); + BOOL GetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOA, LPDWORD, LPVOID); + BOOL GetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOW, LPDWORD, LPVOID); + BOOL SetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOA, LPVOID); + BOOL SetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOW, LPVOID); +} + +version (Unicode) { + alias URL_COMPONENTSW URL_COMPONENTS; + alias LPURL_COMPONENTSW LPURL_COMPONENTS; + alias GOPHER_FIND_DATAW GOPHER_FIND_DATA; + alias LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA; + alias INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO; + alias LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO; + alias INTERNET_BUFFERSW INTERNET_BUFFERS; + alias INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO; + alias LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO; + alias InternetCrackUrlW InternetCrackUrl; + alias InternetCreateUrlW InternetCreateUrl; + alias InternetCanonicalizeUrlW InternetCanonicalizeUrl; + alias InternetCheckConnectionW InternetCheckConnection; + alias InternetCombineUrlW InternetCombineUrl; + alias InternetOpenW InternetOpen; + alias InternetConnectW InternetConnect; + alias InternetOpenUrlW InternetOpenUrl; + alias InternetFindNextFileW InternetFindNextFile; + alias InternetQueryOptionW InternetQueryOption; + alias InternetSetOptionW InternetSetOption; + alias InternetSetOptionExW InternetSetOptionEx; + alias InternetGetLastResponseInfoW InternetGetLastResponseInfo; + alias InternetReadFileExW InternetReadFileEx; + alias FtpFindFirstFileW FtpFindFirstFile; + alias FtpGetFileW FtpGetFile; + alias FtpPutFileW FtpPutFile; + alias FtpDeleteFileW FtpDeleteFile; + alias FtpRenameFileW FtpRenameFile; + alias FtpOpenFileW FtpOpenFile; + alias FtpCreateDirectoryW FtpCreateDirectory; + alias FtpRemoveDirectoryW FtpRemoveDirectory; + alias FtpSetCurrentDirectoryW FtpSetCurrentDirectory; + alias FtpGetCurrentDirectoryW FtpGetCurrentDirectory; + alias FtpCommandW FtpCommand; + alias GopherGetLocatorTypeW GopherGetLocatorType; + alias GopherCreateLocatorW GopherCreateLocator; + alias GopherFindFirstFileW GopherFindFirstFile; + alias GopherOpenFileW GopherOpenFile; + alias GopherGetAttributeW GopherGetAttribute; + alias HttpSendRequestW HttpSendRequest; + alias HttpOpenRequestW HttpOpenRequest; + alias HttpAddRequestHeadersW HttpAddRequestHeaders; + alias HttpQueryInfoW HttpQueryInfo; + alias InternetSetCookieW InternetSetCookie; + alias InternetGetCookieW InternetGetCookie; + alias CreateUrlCacheEntryW CreateUrlCacheEntry; + alias RetrieveUrlCacheEntryStreamW RetrieveUrlCacheEntryStream; + alias FindNextUrlCacheEntryW FindNextUrlCacheEntry; + alias CommitUrlCacheEntryW CommitUrlCacheEntry; + alias GetUrlCacheEntryInfoW GetUrlCacheEntryInfo; + alias SetUrlCacheEntryInfoW SetUrlCacheEntryInfo; + alias FindFirstUrlCacheEntryW FindFirstUrlCacheEntry; + alias RetrieveUrlCacheEntryFileW RetrieveUrlCacheEntryFile; + alias HttpSendRequestExW HttpSendRequestEx; + alias HttpEndRequestW HttpEndRequest; + alias GetUrlCacheGroupAttributeW GetUrlCacheGroupAttribute; + alias SetUrlCacheGroupAttributeW SetUrlCacheGroupAttribute; +} else { + alias URL_COMPONENTSA URL_COMPONENTS; + alias LPURL_COMPONENTSA LPURL_COMPONENTS; + alias GOPHER_FIND_DATAA GOPHER_FIND_DATA; + alias LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA; + alias INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO; + alias LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO; + alias INTERNET_BUFFERSA INTERNET_BUFFERS; + alias INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO; + alias LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO; + alias GopherGetAttributeA GopherGetAttribute; + alias InternetCrackUrlA InternetCrackUrl; + alias InternetCreateUrlA InternetCreateUrl; + alias InternetCanonicalizeUrlA InternetCanonicalizeUrl; + alias InternetCheckConnectionA InternetCheckConnection; + alias InternetCombineUrlA InternetCombineUrl; + alias InternetOpenA InternetOpen; + alias InternetConnectA InternetConnect; + alias InternetOpenUrlA InternetOpenUrl; + alias InternetFindNextFileA InternetFindNextFile; + alias InternetQueryOptionA InternetQueryOption; + alias InternetSetOptionA InternetSetOption; + alias InternetSetOptionExA InternetSetOptionEx; + alias InternetGetLastResponseInfoA InternetGetLastResponseInfo; + alias InternetReadFileExA InternetReadFileEx; + alias FtpFindFirstFileA FtpFindFirstFile; + alias FtpGetFileA FtpGetFile; + alias FtpPutFileA FtpPutFile; + alias FtpDeleteFileA FtpDeleteFile; + alias FtpRenameFileA FtpRenameFile; + alias FtpOpenFileA FtpOpenFile; + alias FtpCreateDirectoryA FtpCreateDirectory; + alias FtpRemoveDirectoryA FtpRemoveDirectory; + alias FtpSetCurrentDirectoryA FtpSetCurrentDirectory; + alias FtpGetCurrentDirectoryA FtpGetCurrentDirectory; + alias FtpCommandA FtpCommand; + alias GopherGetLocatorTypeA GopherGetLocatorType; + alias GopherCreateLocatorA GopherCreateLocator; + alias GopherFindFirstFileA GopherFindFirstFile; + alias GopherOpenFileA GopherOpenFile; + alias HttpSendRequestA HttpSendRequest; + alias HttpOpenRequestA HttpOpenRequest; + alias HttpAddRequestHeadersA HttpAddRequestHeaders; + alias HttpQueryInfoA HttpQueryInfo; + alias InternetSetCookieA InternetSetCookie; + alias InternetGetCookieA InternetGetCookie; + alias CreateUrlCacheEntryA CreateUrlCacheEntry; + alias RetrieveUrlCacheEntryStreamA RetrieveUrlCacheEntryStream; + alias FindNextUrlCacheEntryA FindNextUrlCacheEntry; + alias CommitUrlCacheEntryA CommitUrlCacheEntry; + alias GetUrlCacheEntryInfoA GetUrlCacheEntryInfo; + alias SetUrlCacheEntryInfoA SetUrlCacheEntryInfo; + alias FindFirstUrlCacheEntryA FindFirstUrlCacheEntry; + alias RetrieveUrlCacheEntryFileA RetrieveUrlCacheEntryFile; + alias HttpSendRequestExA HttpSendRequestEx; + alias HttpEndRequestA HttpEndRequest; + alias GetUrlCacheGroupAttributeA GetUrlCacheGroupAttribute; + alias SetUrlCacheGroupAttributeA SetUrlCacheGroupAttribute; +} + +alias INTERNET_BUFFERS* LPINTERNET_BUFFERS; diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d new file mode 100644 index 0000000000..8c28b77207 --- /dev/null +++ b/src/core/sys/windows/winioctl.d @@ -0,0 +1,712 @@ +/***********************************************************************\ +* winioctl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winioctl; + +// FIXME: check types of some constants + +private import win32.basetyps, win32.windef; + +const size_t + HIST_NO_OF_BUCKETS = 24, + HISTOGRAM_BUCKET_SIZE = HISTOGRAM_BUCKET.sizeof, + DISK_HISTOGRAM_SIZE = DISK_HISTOGRAM.sizeof; + +alias DWORD DEVICE_TYPE; + +enum : DEVICE_TYPE { + FILE_DEVICE_BEEP = 1, + FILE_DEVICE_CD_ROM, + FILE_DEVICE_CD_ROM_FILE_SYSTEM, + FILE_DEVICE_CONTROLLER, + FILE_DEVICE_DATALINK, + FILE_DEVICE_DFS, + FILE_DEVICE_DISK, + FILE_DEVICE_DISK_FILE_SYSTEM, + FILE_DEVICE_FILE_SYSTEM, + FILE_DEVICE_INPORT_PORT, + FILE_DEVICE_KEYBOARD, + FILE_DEVICE_MAILSLOT, + FILE_DEVICE_MIDI_IN, + FILE_DEVICE_MIDI_OUT, + FILE_DEVICE_MOUSE, + FILE_DEVICE_MULTI_UNC_PROVIDER, + FILE_DEVICE_NAMED_PIPE, + FILE_DEVICE_NETWORK, + FILE_DEVICE_NETWORK_BROWSER, + FILE_DEVICE_NETWORK_FILE_SYSTEM, + FILE_DEVICE_NULL, + FILE_DEVICE_PARALLEL_PORT, + FILE_DEVICE_PHYSICAL_NETCARD, + FILE_DEVICE_PRINTER, + FILE_DEVICE_SCANNER, + FILE_DEVICE_SERIAL_MOUSE_PORT, + FILE_DEVICE_SERIAL_PORT, + FILE_DEVICE_SCREEN, + FILE_DEVICE_SOUND, + FILE_DEVICE_STREAMS, + FILE_DEVICE_TAPE, + FILE_DEVICE_TAPE_FILE_SYSTEM, + FILE_DEVICE_TRANSPORT, + FILE_DEVICE_UNKNOWN, + FILE_DEVICE_VIDEO, + FILE_DEVICE_VIRTUAL_DISK, + FILE_DEVICE_WAVE_IN, + FILE_DEVICE_WAVE_OUT, + FILE_DEVICE_8042_PORT, + FILE_DEVICE_NETWORK_REDIRECTOR, + FILE_DEVICE_BATTERY, + FILE_DEVICE_BUS_EXTENDER, + FILE_DEVICE_MODEM, + FILE_DEVICE_VDM, + FILE_DEVICE_MASS_STORAGE, + FILE_DEVICE_SMB, + FILE_DEVICE_KS, + FILE_DEVICE_CHANGER, + FILE_DEVICE_SMARTCARD, + FILE_DEVICE_ACPI, + FILE_DEVICE_DVD, + FILE_DEVICE_FULLSCREEN_VIDEO, + FILE_DEVICE_DFS_FILE_SYSTEM, + FILE_DEVICE_DFS_VOLUME, + FILE_DEVICE_SERENUM, + FILE_DEVICE_TERMSRV, + FILE_DEVICE_KSEC // = 57 +} + +enum { + METHOD_BUFFERED, + METHOD_IN_DIRECT, + METHOD_OUT_DIRECT, + METHOD_NEITHER +} + +enum { + FILE_ANY_ACCESS, + FILE_SPECIAL_ACCESS = 0, + FILE_READ_ACCESS, + FILE_WRITE_ACCESS +} + +/* Bit pattern: + * tttttttt tttttttt aaffffff ffffffmm + */ +/+ +#define CTL_CODE(t, f, m, a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) ++/ + +template CTL_CODE_T(DEVICE_TYPE t, uint f, uint m, uint a) { + const DWORD CTL_CODE_T = (t << 16) | (a << 14) | (f << 2) | m; +} + +DEVICE_TYPE DEVICE_TYPE_FROM_CTL_CODE(DWORD c) { + return (c & 0xFFFF0000) >> 16; +} + +const DEVICE_TYPE + IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE, + IOCTL_DISK_BASE = FILE_DEVICE_DISK, + IOCTL_VOLUME_BASE = 'V'; + +enum : DWORD { + IOCTL_STORAGE_CHECK_VERIFY = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_CHECK_VERIFY2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_EJECT_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_LOAD_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_LOAD_MEDIA2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_RESERVE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_RELEASE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_EJECTION_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_MCN_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_GET_MEDIA_TYPES_EX = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_RESET_BUS = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_RESET_DEVICE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_GET_DEVICE_NUMBER = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_PREDICT_FAILURE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS), + + IOCTL_DISK_GET_DRIVE_GEOMETRY = CTL_CODE_T!(IOCTL_DISK_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 1, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_GET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 4, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_FORMAT_TRACKS = CTL_CODE_T!(IOCTL_DISK_BASE, 6, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_REASSIGN_BLOCKS = CTL_CODE_T!(IOCTL_DISK_BASE, 7, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_PERFORMANCE = CTL_CODE_T!(IOCTL_DISK_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_IS_WRITABLE = CTL_CODE_T!(IOCTL_DISK_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_LOGGING = CTL_CODE_T!(IOCTL_DISK_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_FORMAT_TRACKS_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 11, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_HISTOGRAM_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_HISTOGRAM_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_HISTOGRAM_RESET = CTL_CODE_T!(IOCTL_DISK_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_REQUEST_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_REQUEST_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 16, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_SET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_SET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x15, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_CREATE_DISK = CTL_CODE_T!(IOCTL_DISK_BASE, 0x16, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_LENGTH_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 0x17, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_PERFORMANCE_OFF = CTL_CODE_T!(IOCTL_DISK_BASE, 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_DRIVE_GEOMETRY_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x28, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GROW_PARTITION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x34, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x35, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x36, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_DELETE_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 0x40, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_UPDATE_PROPERTIES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x50, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_CHECK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 0x200, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_DISK_BASE, 0x201, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_EJECT_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x202, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_LOAD_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x203, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_RESERVE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x204, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_RELEASE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x205, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x206, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_REMOVE_DEVICE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x207, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x300, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_UPDATE_DRIVE_SIZE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_SERIAL_LSRMST_INSERT = CTL_CODE_T!(FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS), + + IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS = CTL_CODE_T!(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_VOLUME_IS_CLUSTERED = CTL_CODE_T!(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), + + FSCTL_LOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_UNLOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_DISMOUNT_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_MOUNT_DBLS_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA|FILE_WRITE_DATA), + FSCTL_READ_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 17, METHOD_NEITHER, FILE_READ_DATA), + FSCTL_WRITE_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 18, METHOD_NEITHER, FILE_WRITE_DATA), + FSCTL_GET_NTFS_VOLUME_DATA = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_VOLUME_BITMAP = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS), + FSCTL_GET_RETRIEVAL_POINTERS = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS), + FSCTL_MOVE_FILE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_DELETE_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_SPARSE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS), +} + +enum : BYTE { + PARTITION_ENTRY_UNUSED, + PARTITION_FAT_12, + PARTITION_XENIX_1, + PARTITION_XENIX_2, + PARTITION_FAT_16, + PARTITION_EXTENDED, + PARTITION_HUGE, + PARTITION_IFS, // = 0x07 + PARTITION_FAT32 = 0x0B, + PARTITION_FAT32_XINT13 = 0x0C, + PARTITION_XINT13 = 0x0E, + PARTITION_XINT13_EXTENDED = 0x0F, + PARTITION_PREP = 0x41, + PARTITION_LDM = 0x42, + PARTITION_UNIX = 0x63 +} + +const BYTE + PARTITION_NTFT = 0x80, + VALID_NTFT = 0xC0; + +enum { + SERIAL_LSRMST_ESCAPE, + SERIAL_LSRMST_LSR_DATA, + SERIAL_LSRMST_LSR_NODATA, + SERIAL_LSRMST_MST +} + +enum { + DISK_LOGGING_START, + DISK_LOGGING_STOP, + DISK_LOGGING_DUMP, + DISK_BINNING +} + +alias WORD BAD_TRACK_NUMBER; +alias WORD* PBAD_TRACK_NUMBER; + +enum BIN_TYPES { + RequestSize, RequestLocation +} + +struct BIN_RANGE { + LARGE_INTEGER StartValue; + LARGE_INTEGER Length; +} +alias BIN_RANGE* PBIN_RANGE; + +struct BIN_COUNT { + BIN_RANGE BinRange; + DWORD BinCount; +} +alias BIN_COUNT* PBIN_COUNT; + +struct BIN_RESULTS { + DWORD NumberOfBins; + BIN_COUNT _BinCounts; + + BIN_COUNT* BinCounts() { return &_BinCounts; } +} +alias BIN_RESULTS* PBIN_RESULTS; + +enum PARTITION_STYLE { + PARTITION_STYLE_MBR, + PARTITION_STYLE_GPT, + PARTITION_STYLE_RAW +} + +struct CREATE_DISK_GPT { + GUID DiskId; + DWORD MaxPartitionCount; +} +alias CREATE_DISK_GPT* PCREATE_DISK_GPT; + +struct CREATE_DISK_MBR { + DWORD Signature; +} +alias CREATE_DISK_MBR* PCREATE_DISK_MBR; + +struct CREATE_DISK { + PARTITION_STYLE PartitionStyle; + union { + CREATE_DISK_MBR Mbr; + CREATE_DISK_GPT Gpt; + } +} +alias CREATE_DISK* PCREATE_DISK; + +enum DISK_CACHE_RETENTION_PRIORITY { + EqualPriority, + KeepPrefetchedData, + KeepReadData +} + +struct DISK_CACHE_INFORMATION { + BOOLEAN ParametersSavable; + BOOLEAN ReadCacheEnabled; + BOOLEAN WriteCacheEnabled; + DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; + DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; + WORD DisablePrefetchTransferLength; + BOOLEAN PrefetchScalar; + union { + struct _ScalarPrefetch { + WORD Minimum; + WORD Maximum; + WORD MaximumBlocks; + } + _ScalarPrefetch ScalarPrefetch; + struct _BlockPrefetch { + WORD Minimum; + WORD Maximum; + } + _BlockPrefetch BlockPrefetch; + } +} +alias DISK_CACHE_INFORMATION* PDISK_CACHE_INFORMATION; + +enum DETECTION_TYPE { + DetectNone, + DetectInt13, + DetectExInt13 +} + +struct DISK_INT13_INFO { + WORD DriveSelect; + DWORD MaxCylinders; + WORD SectorsPerTrack; + WORD MaxHeads; + WORD NumberDrives; + } +alias DISK_INT13_INFO* PDISK_INT13_INFO; + +struct DISK_EX_INT13_INFO { + WORD ExBufferSize; + WORD ExFlags; + DWORD ExCylinders; + DWORD ExHeads; + DWORD ExSectorsPerTrack; + DWORD64 ExSectorsPerDrive; + WORD ExSectorSize; + WORD ExReserved; +} +alias DISK_EX_INT13_INFO* PDISK_EX_INT13_INFO; + +struct DISK_DETECTION_INFO { + DWORD SizeOfDetectInfo; + DETECTION_TYPE DetectionType; + DISK_INT13_INFO Int13; + DISK_EX_INT13_INFO ExInt13; +} +alias DISK_DETECTION_INFO* PDISK_DETECTION_INFO; + +enum MEDIA_TYPE { + Unknown, + F5_1Pt2_512, + F3_1Pt44_512, + F3_2Pt88_512, + F3_20Pt8_512, + F3_720_512, + F5_360_512, + F5_320_512, + F5_320_1024, + F5_180_512, + F5_160_512, + RemovableMedia, + FixedMedia, + F3_120M_512, + F3_640_512, + F5_640_512, + F5_720_512, + F3_1Pt2_512, + F3_1Pt23_1024, + F5_1Pt23_1024, + F3_128Mb_512, + F3_230Mb_512, + F8_256_128, + F3_200Mb_512, + F3_240M_512, + F3_32M_512 +} +alias MEDIA_TYPE* PMEDIA_TYPE; + +struct DISK_GEOMETRY { + LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; + DWORD TracksPerCylinder; + DWORD SectorsPerTrack; + DWORD BytesPerSector; +} +alias DISK_GEOMETRY* PDISK_GEOMETRY; + +struct DISK_GEOMETRY_EX { + DISK_GEOMETRY Geometry; + LARGE_INTEGER DiskSize; + BYTE _Data; + + BYTE* Data() { return &_Data; } +} +alias DISK_GEOMETRY_EX* PDISK_GEOMETRY_EX; + +struct DISK_GROW_PARTITION { + DWORD PartitionNumber; + LARGE_INTEGER BytesToGrow; +} +alias DISK_GROW_PARTITION* PDISK_GROW_PARTITION; + +struct DISK_PARTITION_INFO { + DWORD SizeOfPartitionInfo; + PARTITION_STYLE PartitionStyle; + union { + //struct { + DWORD Signature; + //} Mbr; + //struct { + GUID DiskId; + //} Gpt; + } +} +alias DISK_PARTITION_INFO* PDISK_PARTITION_INFO; + +struct DISK_PERFORMANCE { + LARGE_INTEGER BytesRead; + LARGE_INTEGER BytesWritten; + LARGE_INTEGER ReadTime; + LARGE_INTEGER WriteTime; + DWORD ReadCount; + DWORD WriteCount; + DWORD QueueDepth; +} +alias DISK_PERFORMANCE* PDISK_PERFORMANCE; + +struct DISK_RECORD { + LARGE_INTEGER ByteOffset; + LARGE_INTEGER StartTime; + LARGE_INTEGER EndTime; + PVOID VirtualAddress; + DWORD NumberOfBytes; + BYTE DeviceNumber; + BOOLEAN ReadRequest; +} +alias DISK_RECORD* PDISK_RECORD; + +struct DISK_LOGGING { + BYTE Function; + PVOID BufferAddress; + DWORD BufferSize; +} +alias DISK_LOGGING* PDISK_LOGGING; + +struct DISKQUOTA_USER_INFORMATION { + LONGLONG QuotaUsed; + LONGLONG QuotaThreshold; + LONGLONG QuotaLimit; +} +alias DISKQUOTA_USER_INFORMATION* PDISKQUOTA_USER_INFORMATION; + +struct FORMAT_PARAMETERS { + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; +} +alias FORMAT_PARAMETERS* PFORMAT_PARAMETERS; + +struct FORMAT_EX_PARAMETERS { + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; + WORD FormatGapLength; + WORD SectorsPerTrack; + WORD _SectorNumber; + + WORD* SectorNumber() { return &_SectorNumber; } +} +alias FORMAT_EX_PARAMETERS* PFORMAT_EX_PARAMETERS; + +struct GET_LENGTH_INFORMATION { + LARGE_INTEGER Length; +} + +struct HISTOGRAM_BUCKET { + DWORD Reads; + DWORD Writes; +} +alias HISTOGRAM_BUCKET* PHISTOGRAM_BUCKET; + +struct DISK_HISTOGRAM { + LARGE_INTEGER DiskSize; + LARGE_INTEGER Start; + LARGE_INTEGER End; + LARGE_INTEGER Average; + LARGE_INTEGER AverageRead; + LARGE_INTEGER AverageWrite; + DWORD Granularity; + DWORD Size; + DWORD ReadCount; + DWORD WriteCount; + PHISTOGRAM_BUCKET Histogram; +} +alias DISK_HISTOGRAM* PDISK_HISTOGRAM; + +struct DISK_EXTENT { + DWORD DiskNumber; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER ExtentLength; +} +alias DISK_EXTENT* PDISK_EXTENT; + +struct VOLUME_DISK_EXTENTS { + DWORD NumberOfDiskExtents; + DISK_EXTENT _Extents; + + DISK_EXTENT* Extents() { return &_Extents; } +} +alias VOLUME_DISK_EXTENTS* PVOLUME_DISK_EXTENTS; + +struct PARTITION_INFORMATION { + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD HiddenSectors; + DWORD PartitionNumber; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + BOOLEAN RewritePartition; +} +alias PARTITION_INFORMATION* PPARTITION_INFORMATION; + +struct DRIVE_LAYOUT_INFORMATION { + DWORD PartitionCount; + DWORD Signature; + PARTITION_INFORMATION _PartitionEntry; + + PARTITION_INFORMATION* PartitionEntry() { return &_PartitionEntry; } +} +alias DRIVE_LAYOUT_INFORMATION* PDRIVE_LAYOUT_INFORMATION; + +struct DRIVE_LAYOUT_INFORMATION_GPT { + GUID DiskId; + LARGE_INTEGER StartingUsableOffset; + LARGE_INTEGER UsableLength; + ULONG MaxPartitionCount; +} +alias DRIVE_LAYOUT_INFORMATION_GPT* PDRIVE_LAYOUT_INFORMATION_GPT; + +struct DRIVE_LAYOUT_INFORMATION_MBR { + ULONG Signature; +} +alias DRIVE_LAYOUT_INFORMATION_MBR* PDRIVE_LAYOUT_INFORMATION_MBR; + +struct PARTITION_INFORMATION_MBR { + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + DWORD HiddenSectors; +} + +struct PARTITION_INFORMATION_GPT { + GUID PartitionType; + GUID PartitionId; + DWORD64 Attributes; + WCHAR[36] Name; +} + +struct PARTITION_INFORMATION_EX { + PARTITION_STYLE PartitionStyle; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD PartitionNumber; + BOOLEAN RewritePartition; + union { + PARTITION_INFORMATION_MBR Mbr; + PARTITION_INFORMATION_GPT Gpt; + } +} + +struct DRIVE_LAYOUT_INFORMATION_EX { + DWORD PartitionStyle; + DWORD PartitionCount; + union { + DRIVE_LAYOUT_INFORMATION_MBR Mbr; + DRIVE_LAYOUT_INFORMATION_GPT Gpt; + } + PARTITION_INFORMATION_EX _PartitionEntry; + + PARTITION_INFORMATION_EX* PartitionEntry() { return &_PartitionEntry; } +} +alias DRIVE_LAYOUT_INFORMATION_EX* PDRIVE_LAYOUT_INFORMATION_EX; + +struct MOVE_FILE_DATA { + HANDLE FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + DWORD ClusterCount; +} +alias MOVE_FILE_DATA* PMOVE_FILE_DATA; + +struct PERF_BIN { + DWORD NumberOfBins; + DWORD TypeOfBin; + BIN_RANGE _BinsRanges; + + BIN_RANGE* BinsRanges() { return &_BinsRanges; } +} +alias PERF_BIN* PPERF_BIN; + +struct PREVENT_MEDIA_REMOVAL { + BOOLEAN PreventMediaRemoval; +} +alias PREVENT_MEDIA_REMOVAL* PPREVENT_MEDIA_REMOVAL; + +struct RETRIEVAL_POINTERS_BUFFER { + DWORD ExtentCount; + LARGE_INTEGER StartingVcn; + // In MinGW, this is declared as struct { ... } Extents[1]; + struct Extent { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } + Extent _Extents; + + Extent* Extents() { return &_Extents; } +} +alias RETRIEVAL_POINTERS_BUFFER* PRETRIEVAL_POINTERS_BUFFER; + +struct REASSIGN_BLOCKS { + WORD Reserved; + WORD Count; + DWORD _BlockNumber; + + DWORD* BlockNumber() { return &_BlockNumber; } +} +alias REASSIGN_BLOCKS* PREASSIGN_BLOCKS; + +struct SET_PARTITION_INFORMATION { + BYTE PartitionType; +} +alias SET_PARTITION_INFORMATION* PSET_PARTITION_INFORMATION; + +struct STARTING_LCN_INPUT_BUFFER { + LARGE_INTEGER StartingLcn; +} +alias STARTING_LCN_INPUT_BUFFER* PSTARTING_LCN_INPUT_BUFFER; + +struct STARTING_VCN_INPUT_BUFFER { + LARGE_INTEGER StartingVcn; +} +alias STARTING_VCN_INPUT_BUFFER* PSTARTING_VCN_INPUT_BUFFER; + +struct VERIFY_INFORMATION { + LARGE_INTEGER StartingOffset; + DWORD Length; +} +alias VERIFY_INFORMATION* PVERIFY_INFORMATION; + +struct VOLUME_BITMAP_BUFFER { + LARGE_INTEGER StartingLcn; + LARGE_INTEGER BitmapSize; + BYTE _Buffer; + + BYTE* Buffer() { return &_Buffer; } +} +alias VOLUME_BITMAP_BUFFER* PVOLUME_BITMAP_BUFFER; + +struct NTFS_VOLUME_DATA_BUFFER { + LARGE_INTEGER VolumeSerialNumber; + LARGE_INTEGER NumberSectors; + LARGE_INTEGER TotalClusters; + LARGE_INTEGER FreeClusters; + LARGE_INTEGER TotalReserved; + DWORD BytesPerSector; + DWORD BytesPerCluster; + DWORD BytesPerFileRecordSegment; + DWORD ClustersPerFileRecordSegment; + LARGE_INTEGER MftValidDataLength; + LARGE_INTEGER MftStartLcn; + LARGE_INTEGER Mft2StartLcn; + LARGE_INTEGER MftZoneStart; + LARGE_INTEGER MftZoneEnd; +} +alias NTFS_VOLUME_DATA_BUFFER* PNTFS_VOLUME_DATA_BUFFER; + + +bool IsRecognizedPartition(BYTE t) { + return ((t & PARTITION_NTFT) + && ((t & ~VALID_NTFT) == PARTITION_FAT_12 + || (t & ~VALID_NTFT) == PARTITION_FAT_16 + || (t & ~VALID_NTFT) == PARTITION_IFS + || (t & ~VALID_NTFT) == PARTITION_HUGE + || (t & ~VALID_NTFT) == PARTITION_FAT32 + || (t & ~VALID_NTFT) == PARTITION_FAT32_XINT13 + || (t & ~VALID_NTFT) == PARTITION_XINT13)) + || (t & ~PARTITION_NTFT) == PARTITION_FAT_12 + || (t & ~PARTITION_NTFT) == PARTITION_FAT_16 + || (t & ~PARTITION_NTFT) == PARTITION_IFS + || (t & ~PARTITION_NTFT) == PARTITION_HUGE + || (t & ~PARTITION_NTFT) == PARTITION_FAT32 + || (t & ~PARTITION_NTFT) == PARTITION_FAT32_XINT13 + || (t & ~PARTITION_NTFT) == PARTITION_XINT13; +} + +bool IsContainerPartition(BYTE t) { + return ((t & PARTITION_NTFT) + && ((t & ~VALID_NTFT) == PARTITION_EXTENDED + || (t & ~VALID_NTFT) == PARTITION_XINT13_EXTENDED)) + || (t & ~PARTITION_NTFT) == PARTITION_EXTENDED + || (t & ~PARTITION_NTFT) == PARTITION_XINT13_EXTENDED; +} diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d new file mode 100644 index 0000000000..ed10f1a9dd --- /dev/null +++ b/src/core/sys/windows/winldap.d @@ -0,0 +1,854 @@ +/***********************************************************************\ +* winldap.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winldap; + +/* Comment from MinGW + winldap.h - Header file for the Windows LDAP API + + Written by Filip Navara + + References: + The C LDAP Application Program Interface + http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt + + Lightweight Directory Access Protocol Reference + http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +*/ + +import win32.schannel, win32.winber; +private import win32.wincrypt, win32.windef; +version(Tango){ + private import tango.stdc.stdio; +} + +align(4): + +enum { + LDAP_VERSION1 = 1, + LDAP_VERSION2 = 2, + LDAP_VERSION3 = 3, + LDAP_VERSION = LDAP_VERSION2, + LDAP_VERSION_MIN = LDAP_VERSION2, + LDAP_VERSION_MAX = LDAP_VERSION3 +} + +/* MinGW defines ANSI and Unicode versions as LDAP_VENDOR_NAME and + * LDAP_VENDOR_NAME_W respectively; similarly with other string constants + * defined in this module. + */ +const TCHAR[] LDAP_VENDOR_NAME = "Microsoft Corporation."; + +const LDAP_API_VERSION = 2004; +const LDAP_VENDOR_VERSION = 510; +const LDAP_API_INFO_VERSION = 1; +const LDAP_FEATURE_INFO_VERSION = 1; + +enum { + LDAP_SUCCESS = 0x00, + LDAP_OPT_SUCCESS = LDAP_SUCCESS, + LDAP_OPERATIONS_ERROR, + LDAP_PROTOCOL_ERROR, + LDAP_TIMELIMIT_EXCEEDED, + LDAP_SIZELIMIT_EXCEEDED, + LDAP_COMPARE_FALSE, + LDAP_COMPARE_TRUE, + LDAP_STRONG_AUTH_NOT_SUPPORTED, + LDAP_AUTH_METHOD_NOT_SUPPORTED = LDAP_STRONG_AUTH_NOT_SUPPORTED, + LDAP_STRONG_AUTH_REQUIRED, + LDAP_REFERRAL_V2, + LDAP_PARTIAL_RESULTS = LDAP_REFERRAL_V2, + LDAP_REFERRAL, + LDAP_ADMIN_LIMIT_EXCEEDED, + LDAP_UNAVAILABLE_CRIT_EXTENSION, + LDAP_CONFIDENTIALITY_REQUIRED, + LDAP_SASL_BIND_IN_PROGRESS, // = 0x0e + LDAP_NO_SUCH_ATTRIBUTE = 0x10, + LDAP_UNDEFINED_TYPE, + LDAP_INAPPROPRIATE_MATCHING, + LDAP_CONSTRAINT_VIOLATION, + LDAP_TYPE_OR_VALUE_EXISTS, + LDAP_ATTRIBUTE_OR_VALUE_EXISTS = LDAP_TYPE_OR_VALUE_EXISTS, + LDAP_INVALID_SYNTAX, // = 0x15 + LDAP_NO_SUCH_OBJECT = 0x20, + LDAP_ALIAS_PROBLEM, + LDAP_INVALID_DN_SYNTAX, + LDAP_IS_LEAF, + LDAP_ALIAS_DEREF_PROBLEM, // = 0x24 + LDAP_INAPPROPRIATE_AUTH = 0x30, + LDAP_INVALID_CREDENTIALS, + LDAP_INSUFFICIENT_ACCESS, + LDAP_INSUFFICIENT_RIGHTS = LDAP_INSUFFICIENT_ACCESS, + LDAP_BUSY, + LDAP_UNAVAILABLE, + LDAP_UNWILLING_TO_PERFORM, + LDAP_LOOP_DETECT, // = 0x36 + LDAP_NAMING_VIOLATION = 0x40, + LDAP_OBJECT_CLASS_VIOLATION, + LDAP_NOT_ALLOWED_ON_NONLEAF, + LDAP_NOT_ALLOWED_ON_RDN, + LDAP_ALREADY_EXISTS, + LDAP_NO_OBJECT_CLASS_MODS, + LDAP_RESULTS_TOO_LARGE, + LDAP_AFFECTS_MULTIPLE_DSAS, // = 0x47 + LDAP_OTHER = 0x50, + LDAP_SERVER_DOWN, + LDAP_LOCAL_ERROR, + LDAP_ENCODING_ERROR, + LDAP_DECODING_ERROR, + LDAP_TIMEOUT, + LDAP_AUTH_UNKNOWN, + LDAP_FILTER_ERROR, + LDAP_USER_CANCELLED, + LDAP_PARAM_ERROR, + LDAP_NO_MEMORY, + LDAP_CONNECT_ERROR, + LDAP_NOT_SUPPORTED, + LDAP_CONTROL_NOT_FOUND, + LDAP_NO_RESULTS_RETURNED, + LDAP_MORE_RESULTS_TO_RETURN, + LDAP_CLIENT_LOOP, + LDAP_REFERRAL_LIMIT_EXCEEDED // = 0x61 +} + +enum { + LDAP_PORT = 389, + LDAP_SSL_PORT = 636, + LDAP_GC_PORT = 3268, + LDAP_SSL_GC_PORT = 3269 +} + +const void* + LDAP_OPT_OFF = null, + LDAP_OPT_ON = cast(void*) 1; + +enum { + LDAP_OPT_API_INFO = 0x00, + LDAP_OPT_DESC, + LDAP_OPT_DEREF, + LDAP_OPT_SIZELIMIT, + LDAP_OPT_TIMELIMIT, + LDAP_OPT_THREAD_FN_PTRS, + LDAP_OPT_REBIND_FN, + LDAP_OPT_REBIND_ARG, + LDAP_OPT_REFERRALS, + LDAP_OPT_RESTART, + LDAP_OPT_SSL, + LDAP_OPT_TLS = LDAP_OPT_SSL, + LDAP_OPT_IO_FN_PTRS, // = 0x0b + LDAP_OPT_CACHE_FN_PTRS = 0x0d, + LDAP_OPT_CACHE_STRATEGY, + LDAP_OPT_CACHE_ENABLE, + LDAP_OPT_REFERRAL_HOP_LIMIT, + LDAP_OPT_PROTOCOL_VERSION, + LDAP_OPT_VERSION = LDAP_OPT_PROTOCOL_VERSION, + LDAP_OPT_SERVER_CONTROLS, + LDAP_OPT_CLIENT_CONTROLS, // = 0x13 + LDAP_OPT_API_FEATURE_INFO = 0x15, + LDAP_OPT_HOST_NAME = 0x30, + LDAP_OPT_ERROR_NUMBER, + LDAP_OPT_ERROR_STRING, + LDAP_OPT_SERVER_ERROR, + LDAP_OPT_SERVER_EXT_ERROR, // = 0x34 + LDAP_OPT_PING_KEEP_ALIVE = 0x36, + LDAP_OPT_PING_WAIT_TIME, + LDAP_OPT_PING_LIMIT, // = 0x38 + LDAP_OPT_DNSDOMAIN_NAME = 0x3b, + LDAP_OPT_GETDSNAME_FLAGS = 0x3d, + LDAP_OPT_HOST_REACHABLE, + LDAP_OPT_PROMPT_CREDENTIALS, + LDAP_OPT_TCP_KEEPALIVE, // = 0x40 + LDAP_OPT_REFERRAL_CALLBACK = 0x70, + LDAP_OPT_CLIENT_CERTIFICATE = 0x80, + LDAP_OPT_SERVER_CERTIFICATE, // = 0x81 + LDAP_OPT_AUTO_RECONNECT = 0x91, + LDAP_OPT_SSPI_FLAGS, + LDAP_OPT_SSL_INFO, + LDAP_OPT_TLS_INFO = LDAP_OPT_SSL_INFO, + LDAP_OPT_REF_DEREF_CONN_PER_MSG, + LDAP_OPT_SIGN, + LDAP_OPT_ENCRYPT, + LDAP_OPT_SASL_METHOD, + LDAP_OPT_AREC_EXCLUSIVE, + LDAP_OPT_SECURITY_CONTEXT, + LDAP_OPT_ROOTDSE_CACHE // = 0x9a +} + +enum { + LDAP_DEREF_NEVER, + LDAP_DEREF_SEARCHING, + LDAP_DEREF_FINDING, + LDAP_DEREF_ALWAYS +} + +const LDAP_NO_LIMIT = 0; + +const TCHAR[] LDAP_CONTROL_REFERRALS = "1.2.840.113556.1.4.616"; + +// FIXME: check type (declared with U suffix in MinGW) +enum : uint { + LDAP_CHASE_SUBORDINATE_REFERRALS = 0x20, + LDAP_CHASE_EXTERNAL_REFERRALS = 0x40 +} + +enum { + LDAP_SCOPE_DEFAULT = -1, + LDAP_SCOPE_BASE, + LDAP_SCOPE_ONELEVEL, + LDAP_SCOPE_SUBTREE +} + +enum { + LDAP_MOD_ADD, + LDAP_MOD_DELETE, + LDAP_MOD_REPLACE, + LDAP_MOD_BVALUES = 0x80 +} + +enum : int { + LDAP_RES_BIND = 0x61, + LDAP_RES_SEARCH_ENTRY = 0x64, + LDAP_RES_SEARCH_RESULT = 0x65, + LDAP_RES_MODIFY = 0x67, + LDAP_RES_ADD = 0x69, + LDAP_RES_DELETE = 0x6b, + LDAP_RES_MODRDN = 0x6d, + LDAP_RES_COMPARE = 0x6f, + LDAP_RES_SEARCH_REFERENCE = 0x73, + LDAP_RES_EXTENDED = 0x78, + LDAP_RES_ANY = -1 +} + +enum { + LDAP_MSG_ONE, + LDAP_MSG_ALL, + LDAP_MSG_RECEIVED +} + +const TCHAR[] + LDAP_SERVER_SORT_OID = "1.2.840.113556.1.4.473", + LDAP_SERVER_RESP_SORT_OID = "1.2.840.113556.1.4.474", + LDAP_PAGED_RESULT_OID_STRING = "1.2.840.113556.1.4.319", + LDAP_CONTROL_VLVREQUEST = "2.16.840.1.113730.3.4.9", + LDAP_CONTROL_VLVRESPONSE = "2.16.840.1.113730.3.4.10", + LDAP_START_TLS_OID = "1.3.6.1.4.1.1466.20037", + LDAP_TTL_EXTENDED_OP_OID = "1.3.6.1.4.1.1466.101.119.1"; + +enum { + LDAP_AUTH_NONE = 0x00U, + LDAP_AUTH_SIMPLE = 0x80U, + LDAP_AUTH_SASL = 0x83U, + LDAP_AUTH_OTHERKIND = 0x86U, + LDAP_AUTH_EXTERNAL = LDAP_AUTH_OTHERKIND | 0x0020U, + LDAP_AUTH_SICILY = LDAP_AUTH_OTHERKIND | 0x0200U, + LDAP_AUTH_NEGOTIATE = LDAP_AUTH_OTHERKIND | 0x0400U, + LDAP_AUTH_MSN = LDAP_AUTH_OTHERKIND | 0x0800U, + LDAP_AUTH_NTLM = LDAP_AUTH_OTHERKIND | 0x1000U, + LDAP_AUTH_DIGEST = LDAP_AUTH_OTHERKIND | 0x4000U, + LDAP_AUTH_DPA = LDAP_AUTH_OTHERKIND | 0x2000U, + LDAP_AUTH_SSPI = LDAP_AUTH_NEGOTIATE +} + +enum { + LDAP_FILTER_AND = 0xa0, + LDAP_FILTER_OR, + LDAP_FILTER_NOT, + LDAP_FILTER_EQUALITY, + LDAP_FILTER_SUBSTRINGS, + LDAP_FILTER_GE, + LDAP_FILTER_LE, // = 0xa6 + LDAP_FILTER_APPROX = 0xa8, + LDAP_FILTER_EXTENSIBLE, + LDAP_FILTER_PRESENT = 0x87 +} + +enum { + LDAP_SUBSTRING_INITIAL = 0x80, + LDAP_SUBSTRING_ANY, + LDAP_SUBSTRING_FINAL +} + +struct LDAP { + char[76] Reserved; + PCHAR ld_host; + ULONG ld_version; + UCHAR ld_lberoptions; + int ld_deref; + int ld_timelimit; + int ld_sizelimit; + int ld_errno; + PCHAR ld_matched; + PCHAR ld_error; +} +alias LDAP* PLDAP; + +struct LDAPMessage { + ULONG lm_msgid; + ULONG lm_msgtype; + BerElement* lm_ber; + LDAPMessage* lm_chain; + LDAPMessage* lm_next; + ULONG lm_time; +} +alias LDAPMessage* PLDAPMessage; + +struct LDAP_TIMEVAL { + LONG tv_sec; + LONG tv_usec; +} +alias LDAP_TIMEVAL* PLDAP_TIMEVAL; + +struct LDAPAPIInfoA { + int ldapai_info_version; + int ldapai_api_version; + int ldapai_protocol_version; + char** ldapai_extensions; + char* ldapai_vendor_name; + int ldapai_vendor_version; +} +alias LDAPAPIInfoA* PLDAPAPIInfoA; + +struct LDAPAPIInfoW { + int ldapai_info_version; + int ldapai_api_version; + int ldapai_protocol_version; + PWCHAR* ldapai_extensions; + PWCHAR ldapai_vendor_name; + int ldapai_vendor_version; +} +alias LDAPAPIInfoW* PLDAPAPIInfoW; + +struct LDAPAPIFeatureInfoA { + int ldapaif_info_version; + char* ldapaif_name; + int ldapaif_version; +} +alias LDAPAPIFeatureInfoA* PLDAPAPIFeatureInfoA; + +struct LDAPAPIFeatureInfoW { + int ldapaif_info_version; + PWCHAR ldapaif_name; + int ldapaif_version; +} +alias LDAPAPIFeatureInfoW* PLDAPAPIFeatureInfoW; + +struct LDAPControlA { + PCHAR ldctl_oid; + BerValue ldctl_value; + BOOLEAN ldctl_iscritical; +} +alias LDAPControlA* PLDAPControlA; + +struct LDAPControlW { + PWCHAR ldctl_oid; + BerValue ldctl_value; + BOOLEAN ldctl_iscritical; +} +alias LDAPControlW* PLDAPControlW; + +/* Do we really need these? In MinGW, LDAPModA/W have only mod_op, mod_type + * and mod_vals, and macros are used to simulate anonymous unions in those + * structures. + */ +union mod_vals_u_tA { + PCHAR* modv_strvals; + BerValue** modv_bvals; +} + +union mod_vals_u_tW { + PWCHAR* modv_strvals; + BerValue** modv_bvals; +} + +struct LDAPModA { + ULONG mod_op; + PCHAR mod_type; + + union { + mod_vals_u_tA mod_vals; + // The following members are defined as macros in MinGW. + PCHAR* mod_values; + BerValue** mod_bvalues; + } +} +alias LDAPModA* PLDAPModA; + +struct LDAPModW { + ULONG mod_op; + PWCHAR mod_type; + + union { + mod_vals_u_tW mod_vals; + // The following members are defined as macros in MinGW. + PWCHAR* mod_values; + BerValue** mod_bvalues; + } +} +alias LDAPModW* PLDAPModW; + +/* Opaque structure + * http://msdn.microsoft.com/library/en-us/ldap/ldap/ldapsearch.asp + */ +struct LDAPSearch; +alias LDAPSearch* PLDAPSearch; + +struct LDAPSortKeyA { + PCHAR sk_attrtype; + PCHAR sk_matchruleoid; + BOOLEAN sk_reverseorder; +} +alias LDAPSortKeyA* PLDAPSortKeyA; + +struct LDAPSortKeyW { + PWCHAR sk_attrtype; + PWCHAR sk_matchruleoid; + BOOLEAN sk_reverseorder; +} +alias LDAPSortKeyW* PLDAPSortKeyW; + +/* MinGW defines these as immediate function typedefs, which don't translate + * well into D. + */ +extern (C) { + alias ULONG function(PLDAP, PLDAP, PWCHAR, PCHAR, ULONG, PVOID, PVOID, + PLDAP*) QUERYFORCONNECTION; + alias BOOLEAN function(PLDAP, PLDAP, PWCHAR, PCHAR, PLDAP, ULONG, PVOID, + PVOID, ULONG) NOTIFYOFNEWCONNECTION; + alias ULONG function(PLDAP, PLDAP) DEREFERENCECONNECTION; + alias BOOLEAN function(PLDAP, PSecPkgContext_IssuerListInfoEx, + PCCERT_CONTEXT*) QUERYCLIENTCERT; +} + +struct LDAP_REFERRAL_CALLBACK { + ULONG SizeOfCallbacks; + QUERYFORCONNECTION* QueryForConnection; + NOTIFYOFNEWCONNECTION* NotifyRoutine; + DEREFERENCECONNECTION* DereferenceRoutine; +} +alias LDAP_REFERRAL_CALLBACK* PLDAP_REFERRAL_CALLBACK; + +struct LDAPVLVInfo { + int ldvlv_version; + uint ldvlv_before_count; + uint ldvlv_after_count; + uint ldvlv_offset; + uint ldvlv_count; + BerValue* ldvlv_attrvalue; + BerValue* ldvlv_context; + void* ldvlv_extradata; +} + +/* + * Under Microsoft WinLDAP the function ldap_error is only stub. + * This macro uses LDAP structure to get error string and pass it to the user. + */ +private extern (C) int printf(in char* format, ...); +int ldap_perror(LDAP* handle, char* message) { + return printf("%s: %s\n", message, handle.ld_error); +} + +/* FIXME: In MinGW, these are WINLDAPAPI == DECLSPEC_IMPORT. Linkage + * attribute? + */ +extern (C) { + PLDAP ldap_initA(PCHAR, ULONG); + PLDAP ldap_initW(PWCHAR, ULONG); + PLDAP ldap_openA(PCHAR, ULONG); + PLDAP ldap_openW(PWCHAR, ULONG); + PLDAP cldap_openA(PCHAR, ULONG); + PLDAP cldap_openW(PWCHAR, ULONG); + ULONG ldap_connect(LDAP*, LDAP_TIMEVAL*); + PLDAP ldap_sslinitA(PCHAR, ULONG, int); + PLDAP ldap_sslinitW(PWCHAR, ULONG, int); + ULONG ldap_start_tls_sA(LDAP*, PLDAPControlA*, PLDAPControlA*); + ULONG ldap_start_tls_sW(LDAP*, PLDAPControlW*, PLDAPControlW*); + BOOLEAN ldap_stop_tls_s(LDAP*); + ULONG ldap_get_optionA(LDAP*, int, void*); + ULONG ldap_get_optionW(LDAP*, int, void*); + ULONG ldap_set_optionA(LDAP*, int, void*); + ULONG ldap_set_optionW(LDAP*, int, void*); + ULONG ldap_control_freeA(LDAPControlA*); + ULONG ldap_control_freeW(LDAPControlW*); + ULONG ldap_controls_freeA(LDAPControlA**); + ULONG ldap_controls_freeW(LDAPControlW**); + ULONG ldap_free_controlsA(LDAPControlA**); + ULONG ldap_free_controlsW(LDAPControlW**); + ULONG ldap_sasl_bindA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, + PLDAPControlA*, int*); + ULONG ldap_sasl_bindW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, + PLDAPControlW*, int*); + ULONG ldap_sasl_bind_sA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, + PLDAPControlA*, PBERVAL*); + ULONG ldap_sasl_bind_sW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, + PLDAPControlW*, PBERVAL*); + ULONG ldap_simple_bindA(LDAP*, PCHAR, PCHAR); + ULONG ldap_simple_bindW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_simple_bind_sA(LDAP*, PCHAR, PCHAR); + ULONG ldap_simple_bind_sW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_unbind(LDAP*); + ULONG ldap_unbind_s(LDAP*); + ULONG ldap_search_extA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); + ULONG ldap_search_extW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); + ULONG ldap_search_ext_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + PLDAPControlA*, PLDAPControlA*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); + ULONG ldap_search_ext_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); + ULONG ldap_searchA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG); + ULONG ldap_searchW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG); + ULONG ldap_search_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + LDAPMessage**); + ULONG ldap_search_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + LDAPMessage**); + ULONG ldap_search_stA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_search_stW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_compare_extA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, + PLDAPControlA*, PLDAPControlA*, ULONG*); + ULONG ldap_compare_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, + PLDAPControlW*, PLDAPControlW*, ULONG*); + ULONG ldap_compare_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, + PLDAPControlA*, PLDAPControlA*); + ULONG ldap_compare_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, + PLDAPControlW*, PLDAPControlW*); + ULONG ldap_compareA(LDAP*, PCHAR, PCHAR, PCHAR); + ULONG ldap_compareW(LDAP*, PWCHAR, PWCHAR, PWCHAR); + ULONG ldap_compare_sA(LDAP*, PCHAR, PCHAR, PCHAR); + ULONG ldap_compare_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR); + ULONG ldap_modify_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_modify_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_modify_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*); + ULONG ldap_modify_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*); + ULONG ldap_modifyA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_modifyW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_modify_sA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_modify_sW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_rename_extA(LDAP*, PCHAR, PCHAR, PCHAR, INT, PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_rename_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_rename_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, INT, + PLDAPControlA*, PLDAPControlA*); + ULONG ldap_rename_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, + PLDAPControlW*, PLDAPControlW*); + ULONG ldap_add_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_add_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_add_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*); + ULONG ldap_add_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*); + ULONG ldap_addA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_addW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_add_sA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_add_sW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_delete_extA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*, + ULONG*); + ULONG ldap_delete_extW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*, + ULONG*); + ULONG ldap_delete_ext_sA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*); + ULONG ldap_delete_ext_sW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*); + ULONG ldap_deleteA(LDAP*, PCHAR); + ULONG ldap_deleteW(LDAP*, PWCHAR); + ULONG ldap_delete_sA(LDAP*, PCHAR); + ULONG ldap_delete_sW(LDAP*, PWCHAR); + ULONG ldap_extended_operationA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_extended_operationW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_extended_operation_sA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, + PLDAPControlA*, PCHAR*, BerValue**); + ULONG ldap_extended_operation_sW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, + PLDAPControlW*, PWCHAR*, BerValue**); + ULONG ldap_close_extended_op(LDAP*, ULONG); + ULONG ldap_abandon(LDAP*, ULONG); + ULONG ldap_result(LDAP*, ULONG, ULONG, LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_msgfree(LDAPMessage*); + ULONG ldap_parse_resultA(LDAP*, LDAPMessage*, ULONG*, PCHAR*, PCHAR*, + PCHAR**, PLDAPControlA**, BOOLEAN); + ULONG ldap_parse_resultW(LDAP*, LDAPMessage*, ULONG*, PWCHAR*, PWCHAR*, + PWCHAR**, PLDAPControlW**, BOOLEAN); + ULONG ldap_parse_extended_resultA(LDAP, LDAPMessage*, PCHAR*, BerValue**, + BOOLEAN); + ULONG ldap_parse_extended_resultW(LDAP, LDAPMessage*, PWCHAR*, BerValue**, + BOOLEAN); + PCHAR ldap_err2stringA(ULONG); + PWCHAR ldap_err2stringW(ULONG); + ULONG LdapGetLastError(); + ULONG LdapMapErrorToWin32(ULONG); + ULONG ldap_result2error(LDAP*, LDAPMessage*, ULONG); + PLDAPMessage ldap_first_entry(LDAP*, LDAPMessage*); + PLDAPMessage ldap_next_entry(LDAP*, LDAPMessage*); + PLDAPMessage ldap_first_reference(LDAP*, LDAPMessage*); + PLDAPMessage ldap_next_reference(LDAP*, LDAPMessage*); + ULONG ldap_count_entries(LDAP*, LDAPMessage*); + ULONG ldap_count_references(LDAP*, LDAPMessage*); + PCHAR ldap_first_attributeA(LDAP*, LDAPMessage*, BerElement**); + PWCHAR ldap_first_attributeW(LDAP*, LDAPMessage*, BerElement**); + PCHAR ldap_next_attributeA(LDAP*, LDAPMessage*, BerElement*); + PWCHAR ldap_next_attributeW(LDAP*, LDAPMessage*, BerElement*); + VOID ldap_memfreeA(PCHAR); + VOID ldap_memfreeW(PWCHAR); + PCHAR* ldap_get_valuesA(LDAP*, LDAPMessage*, PCHAR); + PWCHAR* ldap_get_valuesW(LDAP*, LDAPMessage*, PWCHAR); + BerValue** ldap_get_values_lenA(LDAP*, LDAPMessage*, PCHAR); + BerValue** ldap_get_values_lenW(LDAP*, LDAPMessage*, PWCHAR); + ULONG ldap_count_valuesA(PCHAR*); + ULONG ldap_count_valuesW(PWCHAR*); + ULONG ldap_count_values_len(BerValue**); + ULONG ldap_value_freeA(PCHAR*); + ULONG ldap_value_freeW(PWCHAR*); + ULONG ldap_value_free_len(BerValue**); + PCHAR ldap_get_dnA(LDAP*, LDAPMessage*); + PWCHAR ldap_get_dnW(LDAP*, LDAPMessage*); + PCHAR ldap_explode_dnA(PCHAR, ULONG); + PWCHAR ldap_explode_dnW(PWCHAR, ULONG); + PCHAR ldap_dn2ufnA(PCHAR); + PWCHAR ldap_dn2ufnW(PWCHAR); + ULONG ldap_ufn2dnA(PCHAR, PCHAR*); + ULONG ldap_ufn2dnW(PWCHAR, PWCHAR*); + ULONG ldap_parse_referenceA(LDAP*, LDAPMessage*, PCHAR**); + ULONG ldap_parse_referenceW(LDAP*, LDAPMessage*, PWCHAR**); + ULONG ldap_check_filterA(LDAP*, PCHAR); + ULONG ldap_check_filterW(LDAP*, PWCHAR); + ULONG ldap_create_page_controlA(PLDAP, ULONG, BerValue*, UCHAR, + PLDAPControlA*); + ULONG ldap_create_page_controlW(PLDAP, ULONG, BerValue*, UCHAR, + PLDAPControlW*); + ULONG ldap_create_sort_controlA(PLDAP, PLDAPSortKeyA*, UCHAR, + PLDAPControlA*); + ULONG ldap_create_sort_controlW(PLDAP, PLDAPSortKeyW*, UCHAR, + PLDAPControlW*); + INT ldap_create_vlv_controlA(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlA**); + INT ldap_create_vlv_controlW(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlW**); + ULONG ldap_encode_sort_controlA(PLDAP, PLDAPSortKeyA*, PLDAPControlA, + BOOLEAN); + ULONG ldap_encode_sort_controlW(PLDAP, PLDAPSortKeyW*, PLDAPControlW, + BOOLEAN); + ULONG ldap_escape_filter_elementA(PCHAR, ULONG, PCHAR, ULONG); + ULONG ldap_escape_filter_elementW(PWCHAR, ULONG, PWCHAR, ULONG); + ULONG ldap_get_next_page(PLDAP, PLDAPSearch, ULONG, ULONG*); + ULONG ldap_get_next_page_s(PLDAP, PLDAPSearch, LDAP_TIMEVAL*, ULONG, + ULONG*, LDAPMessage**); + ULONG ldap_get_paged_count(PLDAP, PLDAPSearch, ULONG*, PLDAPMessage); + ULONG ldap_parse_page_controlA(PLDAP, PLDAPControlA*, ULONG*, BerValue**); + ULONG ldap_parse_page_controlW(PLDAP, PLDAPControlW*, ULONG*, BerValue**); + ULONG ldap_parse_sort_controlA(PLDAP, PLDAPControlA*, ULONG*, PCHAR*); + ULONG ldap_parse_sort_controlW(PLDAP, PLDAPControlW*, ULONG*, PWCHAR*); + INT ldap_parse_vlv_controlA(LDAP*, LDAPControlA**, uint*, uint*, + BerValue**, int*); + INT ldap_parse_vlv_controlW(LDAP*, LDAPControlW**, uint*, uint*, + BerValue**, int*); + PLDAPSearch ldap_search_init_pageA(PLDAP, PCHAR, ULONG, PCHAR, PCHAR[], + ULONG, PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, PLDAPSortKeyA*); + PLDAPSearch ldap_search_init_pageW(PLDAP, PWCHAR, ULONG, PWCHAR, PWCHAR[], + ULONG, PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, PLDAPSortKeyW*); + ULONG ldap_search_abandon_page(PLDAP, PLDAPSearch); + LDAP ldap_conn_from_msg(LDAP*, LDAPMessage*); + INT LdapUnicodeToUTF8(LPCWSTR, int, LPSTR, int); + INT LdapUTF8ToUnicode(LPCSTR, int, LPWSTR, int); + deprecated { + ULONG ldap_bindA(LDAP*, PCHAR, PCHAR, ULONG); + ULONG ldap_bindW(LDAP*, PWCHAR, PWCHAR, ULONG); + ULONG ldap_bind_sA(LDAP*, PCHAR, PCHAR, ULONG); + ULONG ldap_bind_sW(LDAP*, PWCHAR, PWCHAR, ULONG); + ULONG ldap_modrdnA(LDAP*, PCHAR, PCHAR); + ULONG ldap_modrdnW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_modrdn_sA(LDAP*, PCHAR, PCHAR); + ULONG ldap_modrdn_sW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_modrdn2A(LDAP*, PCHAR, PCHAR, INT); + ULONG ldap_modrdn2W(LDAP*, PWCHAR, PWCHAR, INT); + ULONG ldap_modrdn2_sA(LDAP*, PCHAR, PCHAR, INT); + ULONG ldap_modrdn2_sW(LDAP*, PWCHAR, PWCHAR, INT); + } +} + +version (Unicode) { + alias LDAPControlW LDAPControl; + alias PLDAPControlW PLDAPControl; + alias LDAPModW LDAPMod; + alias LDAPModW PLDAPMod; + alias LDAPSortKeyW LDAPSortKey; + alias PLDAPSortKeyW PLDAPSortKey; + alias LDAPAPIInfoW LDAPAPIInfo; + alias PLDAPAPIInfoW PLDAPAPIInfo; + alias LDAPAPIFeatureInfoW LDAPAPIFeatureInfo; + alias PLDAPAPIFeatureInfoW PLDAPAPIFeatureInfo; + alias cldap_openW cldap_open; + alias ldap_openW ldap_open; + alias ldap_simple_bindW ldap_simple_bind; + alias ldap_simple_bind_sW ldap_simple_bind_s; + alias ldap_sasl_bindW ldap_sasl_bind; + alias ldap_sasl_bind_sW ldap_sasl_bind_s; + alias ldap_initW ldap_init; + alias ldap_sslinitW ldap_sslinit; + alias ldap_get_optionW ldap_get_option; + alias ldap_set_optionW ldap_set_option; + alias ldap_start_tls_sW ldap_start_tls_s; + alias ldap_addW ldap_add; + alias ldap_add_extW ldap_add_ext; + alias ldap_add_sW ldap_add_s; + alias ldap_add_ext_sW ldap_add_ext_s; + alias ldap_compareW ldap_compare; + alias ldap_compare_extW ldap_compare_ext; + alias ldap_compare_sW ldap_compare_s; + alias ldap_compare_ext_sW ldap_compare_ext_s; + alias ldap_deleteW ldap_delete; + alias ldap_delete_extW ldap_delete_ext; + alias ldap_delete_sW ldap_delete_s; + alias ldap_delete_ext_sW ldap_delete_ext_s; + alias ldap_extended_operation_sW ldap_extended_operation_s; + alias ldap_extended_operationW ldap_extended_operation; + alias ldap_modifyW ldap_modify; + alias ldap_modify_extW ldap_modify_ext; + alias ldap_modify_sW ldap_modify_s; + alias ldap_modify_ext_sW ldap_modify_ext_s; + alias ldap_check_filterW ldap_check_filter; + alias ldap_count_valuesW ldap_count_values; + alias ldap_create_page_controlW ldap_create_page_control; + alias ldap_create_sort_controlW ldap_create_sort_control; + alias ldap_create_vlv_controlW ldap_create_vlv_control; + alias ldap_encode_sort_controlW ldap_encode_sort_control; + alias ldap_escape_filter_elementW ldap_escape_filter_element; + alias ldap_first_attributeW ldap_first_attribute; + alias ldap_next_attributeW ldap_next_attribute; + alias ldap_get_valuesW ldap_get_values; + alias ldap_get_values_lenW ldap_get_values_len; + alias ldap_parse_extended_resultW ldap_parse_extended_result; + alias ldap_parse_page_controlW ldap_parse_page_control; + alias ldap_parse_referenceW ldap_parse_reference; + alias ldap_parse_resultW ldap_parse_result; + alias ldap_parse_sort_controlW ldap_parse_sort_control; + alias ldap_parse_vlv_controlW ldap_parse_vlv_control; + alias ldap_searchW ldap_search; + alias ldap_search_sW ldap_search_s; + alias ldap_search_stW ldap_search_st; + alias ldap_search_extW ldap_search_ext; + alias ldap_search_ext_sW ldap_search_ext_s; + alias ldap_search_init_pageW ldap_search_init_page; + alias ldap_err2stringW ldap_err2string; + alias ldap_control_freeW ldap_control_free; + alias ldap_controls_freeW ldap_controls_free; + alias ldap_free_controlsW ldap_free_controls; + alias ldap_memfreeW ldap_memfree; + alias ldap_value_freeW ldap_value_free; + alias ldap_dn2ufnW ldap_dn2ufn; + alias ldap_ufn2dnW ldap_ufn2dn; + alias ldap_explode_dnW ldap_explode_dn; + alias ldap_get_dnW ldap_get_dn; + alias ldap_rename_extW ldap_rename; + alias ldap_rename_ext_sW ldap_rename_s; + alias ldap_rename_extW ldap_rename_ext; + alias ldap_rename_ext_sW ldap_rename_ext_s; + deprecated { + alias ldap_bindW ldap_bind; + alias ldap_bind_sW ldap_bind_s; + alias ldap_modrdnW ldap_modrdn; + alias ldap_modrdn_sW ldap_modrdn_s; + alias ldap_modrdn2W ldap_modrdn2; + alias ldap_modrdn2_sW ldap_modrdn2_s; + } +} else { + alias LDAPControlA LDAPControl; + alias PLDAPControlA PLDAPControl; + alias LDAPModA LDAPMod; + alias LDAPModA PLDAPMod; + alias LDAPSortKeyA LDAPSortKey; + alias PLDAPSortKeyA PLDAPSortKey; + alias LDAPAPIInfoA LDAPAPIInfo; + alias PLDAPAPIInfoA PLDAPAPIInfo; + alias LDAPAPIFeatureInfoA LDAPAPIFeatureInfo; + alias PLDAPAPIFeatureInfoA PLDAPAPIFeatureInfo; + alias cldap_openA cldap_open; + alias ldap_openA ldap_open; + alias ldap_simple_bindA ldap_simple_bind; + alias ldap_simple_bind_sA ldap_simple_bind_s; + alias ldap_sasl_bindA ldap_sasl_bind; + alias ldap_sasl_bind_sA ldap_sasl_bind_s; + alias ldap_initA ldap_init; + alias ldap_sslinitA ldap_sslinit; + alias ldap_get_optionA ldap_get_option; + alias ldap_set_optionA ldap_set_option; + alias ldap_start_tls_sA ldap_start_tls_s; + alias ldap_addA ldap_add; + alias ldap_add_extA ldap_add_ext; + alias ldap_add_sA ldap_add_s; + alias ldap_add_ext_sA ldap_add_ext_s; + alias ldap_compareA ldap_compare; + alias ldap_compare_extA ldap_compare_ext; + alias ldap_compare_sA ldap_compare_s; + alias ldap_compare_ext_sA ldap_compare_ext_s; + alias ldap_deleteA ldap_delete; + alias ldap_delete_extA ldap_delete_ext; + alias ldap_delete_sA ldap_delete_s; + alias ldap_delete_ext_sA ldap_delete_ext_s; + alias ldap_extended_operation_sA ldap_extended_operation_s; + alias ldap_extended_operationA ldap_extended_operation; + alias ldap_modifyA ldap_modify; + alias ldap_modify_extA ldap_modify_ext; + alias ldap_modify_sA ldap_modify_s; + alias ldap_modify_ext_sA ldap_modify_ext_s; + alias ldap_check_filterA ldap_check_filter; + alias ldap_count_valuesA ldap_count_values; + alias ldap_create_page_controlA ldap_create_page_control; + alias ldap_create_sort_controlA ldap_create_sort_control; + alias ldap_create_vlv_controlA ldap_create_vlv_control; + alias ldap_encode_sort_controlA ldap_encode_sort_control; + alias ldap_escape_filter_elementA ldap_escape_filter_element; + alias ldap_first_attributeA ldap_first_attribute; + alias ldap_next_attributeA ldap_next_attribute; + alias ldap_get_valuesA ldap_get_values; + alias ldap_get_values_lenA ldap_get_values_len; + alias ldap_parse_extended_resultA ldap_parse_extended_result; + alias ldap_parse_page_controlA ldap_parse_page_control; + alias ldap_parse_referenceA ldap_parse_reference; + alias ldap_parse_resultA ldap_parse_result; + alias ldap_parse_sort_controlA ldap_parse_sort_control; + alias ldap_parse_vlv_controlA ldap_parse_vlv_control; + alias ldap_searchA ldap_search; + alias ldap_search_sA ldap_search_s; + alias ldap_search_stA ldap_search_st; + alias ldap_search_extA ldap_search_ext; + alias ldap_search_ext_sA ldap_search_ext_s; + alias ldap_search_init_pageA ldap_search_init_page; + alias ldap_err2stringA ldap_err2string; + alias ldap_control_freeA ldap_control_free; + alias ldap_controls_freeA ldap_controls_free; + alias ldap_free_controlsA ldap_free_controls; + alias ldap_memfreeA ldap_memfree; + alias ldap_value_freeA ldap_value_free; + alias ldap_dn2ufnA ldap_dn2ufn; + alias ldap_ufn2dnA ldap_ufn2dn; + alias ldap_explode_dnA ldap_explode_dn; + alias ldap_get_dnA ldap_get_dn; + alias ldap_rename_extA ldap_rename; + alias ldap_rename_ext_sA ldap_rename_s; + alias ldap_rename_extA ldap_rename_ext; + alias ldap_rename_ext_sA ldap_rename_ext_s; + deprecated { + alias ldap_bindA ldap_bind; + alias ldap_bind_sA ldap_bind_s; + alias ldap_modrdnA ldap_modrdn; + alias ldap_modrdn_sA ldap_modrdn_s; + alias ldap_modrdn2A ldap_modrdn2; + alias ldap_modrdn2_sA ldap_modrdn2_s; + } +} diff --git a/src/core/sys/windows/winnetwk.d b/src/core/sys/windows/winnetwk.d new file mode 100644 index 0000000000..faf49a36e6 --- /dev/null +++ b/src/core/sys/windows/winnetwk.d @@ -0,0 +1,438 @@ +/***********************************************************************\ +* winnetwk.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winnetwk; +pragma(lib, "mpr"); + +private import win32.winbase, win32.winerror, win32.winnt; + +enum : DWORD { + WNNC_NET_MSNET = 0x00010000, + WNNC_NET_LANMAN = 0x00020000, + WNNC_NET_NETWARE = 0x00030000, + WNNC_NET_VINES = 0x00040000, + WNNC_NET_10NET = 0x00050000, + WNNC_NET_LOCUS = 0x00060000, + WNNC_NET_SUN_PC_NFS = 0x00070000, + WNNC_NET_LANSTEP = 0x00080000, + WNNC_NET_9TILES = 0x00090000, + WNNC_NET_LANTASTIC = 0x000A0000, + WNNC_NET_AS400 = 0x000B0000, + WNNC_NET_FTP_NFS = 0x000C0000, + WNNC_NET_PATHWORKS = 0x000D0000, + WNNC_NET_LIFENET = 0x000E0000, + WNNC_NET_POWERLAN = 0x000F0000, + WNNC_NET_BWNFS = 0x00100000, + WNNC_NET_COGENT = 0x00110000, + WNNC_NET_FARALLON = 0x00120000, + WNNC_NET_APPLETALK = 0x00130000, + WNNC_NET_INTERGRAPH = 0x00140000, + WNNC_NET_SYMFONET = 0x00150000, + WNNC_NET_CLEARCASE = 0x00160000, + WNNC_NET_FRONTIER = 0x00170000, + WNNC_NET_BMC = 0x00180000, + WNNC_NET_DCE = 0x00190000, + WNNC_NET_AVID = 0x001A0000, + WNNC_NET_DOCUSPACE = 0x001B0000, + WNNC_NET_MANGOSOFT = 0x001C0000, + WNNC_NET_SERNET = 0x001D0000, + WNNC_NET_DECORB = 0x00200000, + WNNC_NET_PROTSTOR = 0x00210000, + WNNC_NET_FJ_REDIR = 0x00220000, + WNNC_NET_DISTINCT = 0x00230000, + WNNC_NET_TWINS = 0x00240000, + WNNC_NET_RDR2SAMPLE = 0x00250000, + WNNC_NET_CSC = 0x00260000, + WNNC_NET_3IN1 = 0x00270000, + WNNC_NET_EXTENDNET = 0x00290000, + WNNC_NET_OBJECT_DIRE = 0x00300000, + WNNC_NET_MASFAX = 0x00310000, + WNNC_NET_HOB_NFS = 0x00320000, + WNNC_NET_SHIVA = 0x00330000, + WNNC_NET_IBMAL = 0x00340000, + WNNC_CRED_MANAGER = 0xFFFF0000 +} + +enum : DWORD { + RESOURCE_CONNECTED = 1, + RESOURCE_GLOBALNET = 2, + RESOURCE_REMEMBERED = 3, + RESOURCE_RECENT = 4, + RESOURCE_CONTEXT = 5 +} + +const DWORD + RESOURCETYPE_ANY = 0, + RESOURCETYPE_DISK = 1, + RESOURCETYPE_PRINT = 2, + RESOURCETYPE_RESERVED = 8, + RESOURCETYPE_UNKNOWN = 0xFFFFFFFF; + +const DWORD + RESOURCEUSAGE_CONNECTABLE = 0x00000001, + RESOURCEUSAGE_CONTAINER = 0x00000002, + RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004, + RESOURCEUSAGE_SIBLING = 0x00000008, + RESOURCEUSAGE_ATTACHED = 0x00000010, + RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE + | RESOURCEUSAGE_CONTAINER + | RESOURCEUSAGE_ATTACHED), + RESOURCEUSAGE_RESERVED = 0x80000000; + +enum : DWORD { + RESOURCEDISPLAYTYPE_GENERIC, + RESOURCEDISPLAYTYPE_DOMAIN, + RESOURCEDISPLAYTYPE_SERVER, + RESOURCEDISPLAYTYPE_SHARE, + RESOURCEDISPLAYTYPE_FILE, + RESOURCEDISPLAYTYPE_GROUP, + RESOURCEDISPLAYTYPE_NETWORK, + RESOURCEDISPLAYTYPE_ROOT, + RESOURCEDISPLAYTYPE_SHAREADMIN, + RESOURCEDISPLAYTYPE_DIRECTORY, + RESOURCEDISPLAYTYPE_TREE // = 10 +} + +const NETPROPERTY_PERSISTENT = 1; + +const DWORD + CONNECT_UPDATE_PROFILE = 1, + CONNECT_UPDATE_RECENT = 2, + CONNECT_TEMPORARY = 4, + CONNECT_INTERACTIVE = 8, + CONNECT_PROMPT = 16, + CONNECT_NEED_DRIVE = 32, + CONNECT_REFCOUNT = 64, + CONNECT_REDIRECT = 128, + CONNECT_LOCALDRIVE = 256, + CONNECT_CURRENT_MEDIA = 512; + +const DWORD + CONNDLG_RO_PATH = 1, + CONNDLG_CONN_POINT = 2, + CONNDLG_USE_MRU = 4, + CONNDLG_HIDE_BOX = 8, + CONNDLG_PERSIST = 16, + CONNDLG_NOT_PERSIST = 32; + +const DWORD + DISC_UPDATE_PROFILE = 1, + DISC_NO_FORCE = 64; + +const DWORD + WNFMT_MULTILINE = 1, + WNFMT_ABBREVIATED = 2, + WNFMT_INENUM = 16, + WNFMT_CONNECTION = 32; + +enum : DWORD { + WN_SUCCESS = NO_ERROR, + WN_NO_ERROR = NO_ERROR, + WN_NOT_SUPPORTED = ERROR_NOT_SUPPORTED, + WN_CANCEL = ERROR_CANCELLED, + WN_RETRY = ERROR_RETRY, + WN_NET_ERROR = ERROR_UNEXP_NET_ERR, + WN_MORE_DATA = ERROR_MORE_DATA, + WN_BAD_POINTER = ERROR_INVALID_ADDRESS, + WN_BAD_VALUE = ERROR_INVALID_PARAMETER, + WN_BAD_USER = ERROR_BAD_USERNAME, + WN_BAD_PASSWORD = ERROR_INVALID_PASSWORD, + WN_ACCESS_DENIED = ERROR_ACCESS_DENIED, + WN_FUNCTION_BUSY = ERROR_BUSY, + WN_WINDOWS_ERROR = ERROR_UNEXP_NET_ERR, + WN_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_MEMORY, + WN_NO_NETWORK = ERROR_NO_NETWORK, + WN_EXTENDED_ERROR = ERROR_EXTENDED_ERROR, + WN_BAD_LEVEL = ERROR_INVALID_LEVEL, + WN_BAD_HANDLE = ERROR_INVALID_HANDLE, + WN_NOT_INITIALIZING = ERROR_ALREADY_INITIALIZED, + WN_NO_MORE_DEVICES = ERROR_NO_MORE_DEVICES, + WN_NOT_CONNECTED = ERROR_NOT_CONNECTED, + WN_OPEN_FILES = ERROR_OPEN_FILES, + WN_DEVICE_IN_USE = ERROR_DEVICE_IN_USE, + WN_BAD_NETNAME = ERROR_BAD_NET_NAME, + WN_BAD_LOCALNAME = ERROR_BAD_DEVICE, + WN_ALREADY_CONNECTED = ERROR_ALREADY_ASSIGNED, + WN_DEVICE_ERROR = ERROR_GEN_FAILURE, + WN_CONNECTION_CLOSED = ERROR_CONNECTION_UNAVAIL, + WN_NO_NET_OR_BAD_PATH = ERROR_NO_NET_OR_BAD_PATH, + WN_BAD_PROVIDER = ERROR_BAD_PROVIDER, + WN_CANNOT_OPEN_PROFILE = ERROR_CANNOT_OPEN_PROFILE, + WN_BAD_PROFILE = ERROR_BAD_PROFILE, + WN_BAD_DEV_TYPE = ERROR_BAD_DEV_TYPE, + WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED, + WN_NO_MORE_ENTRIES = ERROR_NO_MORE_ITEMS, + WN_NOT_CONTAINER = ERROR_NOT_CONTAINER, + WN_NOT_AUTHENTICATED = ERROR_NOT_AUTHENTICATED, + WN_NOT_LOGGED_ON = ERROR_NOT_LOGGED_ON, + WN_NOT_VALIDATED = ERROR_NO_LOGON_SERVERS +} + +enum : DWORD { + UNIVERSAL_NAME_INFO_LEVEL = 1, + REMOTE_NAME_INFO_LEVEL +} + +const DWORD + NETINFO_DLL16 = 1, + NETINFO_DISKRED = 4, + NETINFO_PRINTERRED = 8; + +const DWORD + RP_LOGON = 1, + RP_INIFILE = 2; + +const DWORD PP_DISPLAYERRORS = 1; + +const DWORD + WNCON_FORNETCARD = 1, + WNCON_NOTROUTED = 2, + WNCON_SLOWLINK = 4, + WNCON_DYNAMIC = 8; + +struct NETRESOURCEA { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPSTR lpLocalName; + LPSTR lpRemoteName; + LPSTR lpComment; + LPSTR lpProvider; +} +alias NETRESOURCEA* LPNETRESOURCEA; + +struct NETRESOURCEW { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + LPWSTR lpComment ; + LPWSTR lpProvider; +} +alias NETRESOURCEW* LPNETRESOURCEW; + +struct CONNECTDLGSTRUCTA { + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEA lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; +} +alias CONNECTDLGSTRUCTA* LPCONNECTDLGSTRUCTA; + +struct CONNECTDLGSTRUCTW { + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEW lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; +} +alias CONNECTDLGSTRUCTW* LPCONNECTDLGSTRUCTW; + +struct DISCDLGSTRUCTA { + DWORD cbStructure; + HWND hwndOwner; + LPSTR lpLocalName; + LPSTR lpRemoteName; + DWORD dwFlags; +} +alias DISCDLGSTRUCTA* LPDISCDLGSTRUCTA; + +struct DISCDLGSTRUCTW { + DWORD cbStructure; + HWND hwndOwner; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + DWORD dwFlags; +} +alias DISCDLGSTRUCTW* LPDISCDLGSTRUCTW; + +struct UNIVERSAL_NAME_INFOA { + LPSTR lpUniversalName; +} +alias UNIVERSAL_NAME_INFOA* LPUNIVERSAL_NAME_INFOA; + +struct UNIVERSAL_NAME_INFOW { + LPWSTR lpUniversalName; +} +alias UNIVERSAL_NAME_INFOW* LPUNIVERSAL_NAME_INFOW; + +struct REMOTE_NAME_INFOA { + LPSTR lpUniversalName; + LPSTR lpConnectionName; + LPSTR lpRemainingPath; +} +alias REMOTE_NAME_INFOA* LPREMOTE_NAME_INFOA; + +struct REMOTE_NAME_INFOW { + LPWSTR lpUniversalName; + LPWSTR lpConnectionName; + LPWSTR lpRemainingPath; +} +alias REMOTE_NAME_INFOW* LPREMOTE_NAME_INFOW; + +struct NETINFOSTRUCT { + DWORD cbStructure; + DWORD dwProviderVersion; + DWORD dwStatus; + DWORD dwCharacteristics; + DWORD dwHandle; + WORD wNetType; + DWORD dwPrinters; + DWORD dwDrives; +} +alias NETINFOSTRUCT* LPNETINFOSTRUCT; + +extern (Pascal) { + alias UINT function(LPCSTR, LPSTR, UINT) PFNGETPROFILEPATHA; + alias UINT function(LPCWSTR, LPWSTR, UINT) PFNGETPROFILEPATHW; + alias UINT function(LPCSTR, LPCSTR, DWORD) PFNRECONCILEPROFILEA; + alias UINT function(LPCWSTR, LPCWSTR, DWORD) PFNRECONCILEPROFILEW; + alias BOOL function(HWND, LPCSTR, LPCSTR, LPCSTR, DWORD) + PFNPROCESSPOLICIESA; + alias BOOL function(HWND, LPCWSTR, LPCWSTR, LPCWSTR, DWORD) + PFNPROCESSPOLICIESW; +} + +struct NETCONNECTINFOSTRUCT { + DWORD cbStructure; + DWORD dwFlags; + DWORD dwSpeed; + DWORD dwDelay; + DWORD dwOptDataSize; +} +alias NETCONNECTINFOSTRUCT* LPNETCONNECTINFOSTRUCT; + +extern (Windows) { + DWORD WNetAddConnection2A(LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); + DWORD WNetAddConnection2W(LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); + DWORD WNetAddConnection3A(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); + DWORD WNetAddConnection3W(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); + DWORD WNetCancelConnection2A(LPCSTR, DWORD, BOOL); + DWORD WNetCancelConnection2W(LPCWSTR, DWORD, BOOL); + DWORD WNetGetConnectionA(LPCSTR, LPSTR, PDWORD); + DWORD WNetGetConnectionW(LPCWSTR, LPWSTR, PDWORD); + DWORD WNetUseConnectionA(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD, + LPSTR, PDWORD, PDWORD); + DWORD WNetUseConnectionW(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD, + LPWSTR, PDWORD, PDWORD); + DWORD WNetSetConnectionA(LPCSTR, DWORD, PVOID); + DWORD WNetSetConnectionW(LPCWSTR, DWORD, PVOID); + DWORD WNetConnectionDialog(HWND, DWORD); + DWORD WNetDisconnectDialog(HWND, DWORD); + DWORD WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA); + DWORD WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW); + DWORD WNetDisconnectDialog1A(LPDISCDLGSTRUCTA); + DWORD WNetDisconnectDialog1W(LPDISCDLGSTRUCTW); + DWORD WNetOpenEnumA(DWORD, DWORD, DWORD, LPNETRESOURCEA, LPHANDLE); + DWORD WNetOpenEnumW(DWORD, DWORD, DWORD, LPNETRESOURCEW, LPHANDLE); + DWORD WNetEnumResourceA(HANDLE, PDWORD, PVOID, PDWORD); + DWORD WNetEnumResourceW(HANDLE, PDWORD, PVOID, PDWORD); + DWORD WNetCloseEnum(HANDLE); + DWORD WNetGetUniversalNameA(LPCSTR, DWORD, PVOID, PDWORD); + DWORD WNetGetUniversalNameW(LPCWSTR, DWORD, PVOID, PDWORD); + DWORD WNetGetUserA(LPCSTR, LPSTR, PDWORD); + DWORD WNetGetUserW(LPCWSTR, LPWSTR, PDWORD); + DWORD WNetGetProviderNameA(DWORD, LPSTR, PDWORD); + DWORD WNetGetProviderNameW(DWORD, LPWSTR, PDWORD); + DWORD WNetGetNetworkInformationA(LPCSTR, LPNETINFOSTRUCT); + DWORD WNetGetNetworkInformationW(LPCWSTR, LPNETINFOSTRUCT); + DWORD WNetGetResourceInformationA(LPNETRESOURCEA, LPVOID, LPDWORD, + LPSTR*); + DWORD WNetGetResourceInformationW(LPNETRESOURCEA, LPVOID, LPDWORD, + LPWSTR*); + DWORD WNetGetResourceParentA(LPNETRESOURCEA, LPVOID, LPDWORD); + DWORD WNetGetResourceParentW(LPNETRESOURCEW, LPVOID, LPDWORD); + DWORD WNetGetLastErrorA(PDWORD, LPSTR, DWORD, LPSTR, DWORD); + DWORD WNetGetLastErrorW(PDWORD, LPWSTR, DWORD, LPWSTR, DWORD); + DWORD MultinetGetConnectionPerformanceA(LPNETRESOURCEA, + LPNETCONNECTINFOSTRUCT); + DWORD MultinetGetConnectionPerformanceW(LPNETRESOURCEW, + LPNETCONNECTINFOSTRUCT); + deprecated { + DWORD WNetAddConnectionA(LPCSTR, LPCSTR, LPCSTR); + DWORD WNetAddConnectionW(LPCWSTR, LPCWSTR, LPCWSTR); + DWORD WNetCancelConnectionA(LPCSTR, BOOL); + DWORD WNetCancelConnectionW(LPCWSTR, BOOL); + } +} + +version (Unicode) { + alias PFNGETPROFILEPATHW PFNGETPROFILEPATH; + alias PFNRECONCILEPROFILEW PFNRECONCILEPROFILE; + alias PFNPROCESSPOLICIESW PFNPROCESSPOLICIES; + alias NETRESOURCEW NETRESOURCE; + alias CONNECTDLGSTRUCTW CONNECTDLGSTRUCT; + alias DISCDLGSTRUCTW DISCDLGSTRUCT; + alias REMOTE_NAME_INFOW REMOTE_NAME_INFO; + alias UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO; + alias WNetAddConnection2W WNetAddConnection2; + alias WNetAddConnection3W WNetAddConnection3; + alias WNetCancelConnection2W WNetCancelConnection2; + alias WNetGetConnectionW WNetGetConnection; + alias WNetUseConnectionW WNetUseConnection; + alias WNetSetConnectionW WNetSetConnection; + alias WNetConnectionDialog1W WNetConnectionDialog1; + alias WNetDisconnectDialog1W WNetDisconnectDialog1; + alias WNetOpenEnumW WNetOpenEnum; + alias WNetEnumResourceW WNetEnumResource; + alias WNetGetUniversalNameW WNetGetUniversalName; + alias WNetGetUserW WNetGetUser; + alias WNetGetProviderNameW WNetGetProviderName; + alias WNetGetNetworkInformationW WNetGetNetworkInformation; + alias WNetGetResourceInformationW WNetGetResourceInformation; + alias WNetGetResourceParentW WNetGetResourceParent; + alias WNetGetLastErrorW WNetGetLastError; + alias MultinetGetConnectionPerformanceW MultinetGetConnectionPerformance; + deprecated { + alias WNetAddConnectionW WNetAddConnection; + alias WNetCancelConnectionW WNetCancelConnection; + } +} else { + alias PFNGETPROFILEPATHA PFNGETPROFILEPATH; + alias PFNRECONCILEPROFILEA PFNRECONCILEPROFILE; + alias PFNPROCESSPOLICIESA PFNPROCESSPOLICIES; + alias NETRESOURCEA NETRESOURCE; + alias CONNECTDLGSTRUCTA CONNECTDLGSTRUCT; + alias DISCDLGSTRUCTA DISCDLGSTRUCT; + alias REMOTE_NAME_INFOA REMOTE_NAME_INFO; + alias UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO; + alias WNetAddConnection2A WNetAddConnection2; + alias WNetAddConnection3A WNetAddConnection3; + alias WNetCancelConnection2A WNetCancelConnection2; + alias WNetGetConnectionA WNetGetConnection; + alias WNetUseConnectionA WNetUseConnection; + alias WNetSetConnectionA WNetSetConnection; + alias WNetConnectionDialog1A WNetConnectionDialog1; + alias WNetDisconnectDialog1A WNetDisconnectDialog1; + alias WNetOpenEnumA WNetOpenEnum; + alias WNetEnumResourceA WNetEnumResource; + alias WNetGetUniversalNameA WNetGetUniversalName; + alias WNetGetUserA WNetGetUser; + alias WNetGetProviderNameA WNetGetProviderName; + alias WNetGetNetworkInformationA WNetGetNetworkInformation; + alias WNetGetResourceInformationA WNetGetResourceInformation; + alias WNetGetResourceParentA WNetGetResourceParent; + alias WNetGetLastErrorA WNetGetLastError; + alias MultinetGetConnectionPerformanceA MultinetGetConnectionPerformance; + deprecated { + alias WNetAddConnectionA WNetAddConnection; + alias WNetCancelConnectionA WNetCancelConnection; + } +} + +alias NETRESOURCE* LPNETRESOURCE; +alias CONNECTDLGSTRUCT* LPCONNECTDLGSTRUCT; +alias DISCDLGSTRUCT* LPDISCDLGSTRUCT; +alias REMOTE_NAME_INFO* LPREMOTE_NAME_INFO; +alias UNIVERSAL_NAME_INFO* LPUNIVERSAL_NAME_INFO; diff --git a/src/core/sys/windows/winnls.d b/src/core/sys/windows/winnls.d new file mode 100644 index 0000000000..abf357c8fe --- /dev/null +++ b/src/core/sys/windows/winnls.d @@ -0,0 +1,809 @@ +/***********************************************************************\ +* winnls.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winnls; +pragma(lib, "kernel32"); + +private import win32.basetsd, win32.w32api, win32.winbase, win32.windef; + +alias DWORD LCTYPE, CALTYPE, CALID, LGRPID, GEOID, GEOTYPE, GEOCLASS; + +const size_t + MAX_DEFAULTCHAR = 2, + MAX_LEADBYTES = 12; + +const LCTYPE + LOCALE_USE_CP_ACP = 0x40000000, + LOCALE_RETURN_NUMBER = 0x20000000; + +enum : LCTYPE { + LOCALE_ILANGUAGE = 1, + LOCALE_SLANGUAGE, + LOCALE_SABBREVLANGNAME, + LOCALE_SNATIVELANGNAME, + LOCALE_ICOUNTRY, + LOCALE_SCOUNTRY, + LOCALE_SABBREVCTRYNAME, + LOCALE_SNATIVECTRYNAME, + LOCALE_IDEFAULTLANGUAGE, + LOCALE_IDEFAULTCOUNTRY, + LOCALE_IDEFAULTCODEPAGE, + LOCALE_SLIST, + LOCALE_IMEASURE, + LOCALE_SDECIMAL, + LOCALE_STHOUSAND, + LOCALE_SGROUPING, + LOCALE_IDIGITS, + LOCALE_ILZERO, + LOCALE_SNATIVEDIGITS, + LOCALE_SCURRENCY, + LOCALE_SINTLSYMBOL, + LOCALE_SMONDECIMALSEP, + LOCALE_SMONTHOUSANDSEP, + LOCALE_SMONGROUPING, + LOCALE_ICURRDIGITS, + LOCALE_IINTLCURRDIGITS, + LOCALE_ICURRENCY, + LOCALE_INEGCURR, + LOCALE_SDATE, + LOCALE_STIME, + LOCALE_SSHORTDATE, + LOCALE_SLONGDATE, + LOCALE_IDATE, + LOCALE_ILDATE, + LOCALE_ITIME, + LOCALE_ICENTURY, + LOCALE_ITLZERO, + LOCALE_IDAYLZERO, + LOCALE_IMONLZERO, + LOCALE_S1159, + LOCALE_S2359, + LOCALE_SDAYNAME1, + LOCALE_SDAYNAME2, + LOCALE_SDAYNAME3, + LOCALE_SDAYNAME4, + LOCALE_SDAYNAME5, + LOCALE_SDAYNAME6, + LOCALE_SDAYNAME7, + LOCALE_SABBREVDAYNAME1, + LOCALE_SABBREVDAYNAME2, + LOCALE_SABBREVDAYNAME3, + LOCALE_SABBREVDAYNAME4, + LOCALE_SABBREVDAYNAME5, + LOCALE_SABBREVDAYNAME6, + LOCALE_SABBREVDAYNAME7, + LOCALE_SMONTHNAME1, + LOCALE_SMONTHNAME2, + LOCALE_SMONTHNAME3, + LOCALE_SMONTHNAME4, + LOCALE_SMONTHNAME5, + LOCALE_SMONTHNAME6, + LOCALE_SMONTHNAME7, + LOCALE_SMONTHNAME8, + LOCALE_SMONTHNAME9, + LOCALE_SMONTHNAME10, + LOCALE_SMONTHNAME11, + LOCALE_SMONTHNAME12, + LOCALE_SABBREVMONTHNAME1, + LOCALE_SABBREVMONTHNAME2, + LOCALE_SABBREVMONTHNAME3, + LOCALE_SABBREVMONTHNAME4, + LOCALE_SABBREVMONTHNAME5, + LOCALE_SABBREVMONTHNAME6, + LOCALE_SABBREVMONTHNAME7, + LOCALE_SABBREVMONTHNAME8, + LOCALE_SABBREVMONTHNAME9, + LOCALE_SABBREVMONTHNAME10, + LOCALE_SABBREVMONTHNAME11, + LOCALE_SABBREVMONTHNAME12, + LOCALE_SPOSITIVESIGN, + LOCALE_SNEGATIVESIGN, + LOCALE_IPOSSIGNPOSN, + LOCALE_INEGSIGNPOSN, + LOCALE_IPOSSYMPRECEDES, + LOCALE_IPOSSEPBYSPACE, + LOCALE_INEGSYMPRECEDES, + LOCALE_INEGSEPBYSPACE, + LOCALE_FONTSIGNATURE, + LOCALE_SISO639LANGNAME, + LOCALE_SISO3166CTRYNAME, // = 90 + LOCALE_SENGLANGUAGE = 0x1001, + LOCALE_SENGCOUNTRY = 0x1002, + LOCALE_IDEFAULTANSICODEPAGE = 0x1004, + LOCALE_INEGNUMBER = 0x1010, + LOCALE_STIMEFORMAT = 0x1003, + LOCALE_ITIMEMARKPOSN = 0x1005, + LOCALE_ICALENDARTYPE = 0x1009, + LOCALE_IOPTIONALCALENDAR = 0x100B, + LOCALE_IFIRSTDAYOFWEEK = 0x100C, + LOCALE_IFIRSTWEEKOFYEAR = 0x100D, + LOCALE_SMONTHNAME13 = 0x100E, + LOCALE_SABBREVMONTHNAME13 = 0x100F +} + +enum : LCID { + LOCALE_USER_DEFAULT = 0x400, + LOCALE_SYSTEM_DEFAULT = 0x800 +} + +const DWORD + NORM_IGNORECASE = 1, + NORM_IGNORENONSPACE = 2, + NORM_IGNORESYMBOLS = 4, + SORT_STRINGSORT = 0x01000, + NORM_IGNOREKANATYPE = 0x10000, + NORM_IGNOREWIDTH = 0x20000; + +const DWORD + LCMAP_LOWERCASE = 0x00000100, + LCMAP_UPPERCASE = 0x00000200, + LCMAP_SORTKEY = 0x00000400, + LCMAP_BYTEREV = 0x00000800, + LCMAP_HIRAGANA = 0x00100000, + LCMAP_KATAKANA = 0x00200000, + LCMAP_HALFWIDTH = 0x00400000, + LCMAP_FULLWIDTH = 0x00800000, + LCMAP_LINGUISTIC_CASING = 0x01000000, + LCMAP_SIMPLIFIED_CHINESE = 0x02000000, + LCMAP_TRADITIONAL_CHINESE = 0x04000000; + +const CALID ENUM_ALL_CALENDARS = -1; + +const DWORD + DATE_SHORTDATE = 1, + DATE_LONGDATE = 2, + DATE_USE_ALT_CALENDAR = 4, + LOCALE_NOUSEROVERRIDE = 0x80000000; + +enum : DWORD { + CP_INSTALLED = 1, + CP_SUPPORTED +} + +enum : DWORD { + LCID_INSTALLED = 1, + LCID_SUPPORTED = 2, + LCID_ALTERNATE_SORTS = 4 +} + +const DWORD + MAP_FOLDCZONE = 16, + MAP_PRECOMPOSED = 32, + MAP_COMPOSITE = 64, + MAP_FOLDDIGITS = 128; + +enum : UINT { + CP_ACP, + CP_OEMCP, + CP_MACCP, + CP_THREAD_ACP, // = 3 + CP_SYMBOL = 42, + CP_UTF7 = 65000, + CP_UTF8 = 65001 +} + +enum : DWORD { + CT_CTYPE1 = 1, + CT_CTYPE2 = 2, + CT_CTYPE3 = 4 +} + +const WORD + C1_UPPER = 1, + C1_LOWER = 2, + C1_DIGIT = 4, + C1_SPACE = 8, + C1_PUNCT = 16, + C1_CNTRL = 32, + C1_BLANK = 64, + C1_XDIGIT = 128, + C1_ALPHA = 256; + +enum : WORD { + C2_NOTAPPLICABLE, + C2_LEFTTORIGHT, + C2_RIGHTTOLEFT, + C2_EUROPENUMBER, + C2_EUROPESEPARATOR, + C2_EUROPETERMINATOR, + C2_ARABICNUMBER, + C2_COMMONSEPARATOR, + C2_BLOCKSEPARATOR, + C2_SEGMENTSEPARATOR, + C2_WHITESPACE, + C2_OTHERNEUTRAL // = 11 +} + +const WORD + C3_NOTAPPLICABLE = 0, + C3_NONSPACING = 1, + C3_DIACRITIC = 2, + C3_VOWELMARK = 4, + C3_SYMBOL = 8, + C3_KATAKANA = 0x0010, + C3_HIRAGANA = 0x0020, + C3_HALFWIDTH = 0x0040, + C3_FULLWIDTH = 0x0080, + C3_IDEOGRAPH = 0x0100, + C3_KASHIDA = 0x0200, + C3_LEXICAL = 0x0400, + C3_ALPHA = 0x8000; + +const DWORD + TIME_NOMINUTESORSECONDS = 1, + TIME_NOSECONDS = 2, + TIME_NOTIMEMARKER = 4, + TIME_FORCE24HOURFORMAT = 8; + +const DWORD + MB_PRECOMPOSED = 1, + MB_COMPOSITE = 2, + MB_USEGLYPHCHARS = 4, + MB_ERR_INVALID_CHARS = 8; + +const DWORD + WC_DISCARDNS = 16, + WC_SEPCHARS = 32, + WC_DEFAULTCHAR = 64, + WC_COMPOSITECHECK = 512; + +enum : LONG { + CTRY_DEFAULT = 0, + CTRY_DOMINICAN_REPUBLIC = 1, + CTRY_PUERTO_RICO = 1, + CTRY_CARIBBEAN = 1, + CTRY_JAMAICA = 1, + CTRY_UNITED_STATES = 1, + CTRY_TRINIDAD_Y_TOBAGO = 1, + CTRY_CANADA = 2, + CTRY_RUSSIA = 7, + CTRY_UZBEKISTAN = 7, + CTRY_KAZAKSTAN = 7, + CTRY_TATARSTAN = 7, + CTRY_EGYPT = 20, + CTRY_SOUTH_AFRICA = 27, + CTRY_GREECE = 30, + CTRY_NETHERLANDS = 31, + CTRY_BELGIUM = 32, + CTRY_FRANCE = 33, + CTRY_MONACO = 33, + CTRY_SPAIN = 34, + CTRY_HUNGARY = 36, + CTRY_ITALY = 39, + CTRY_ROMANIA = 40, + CTRY_SWITZERLAND = 41, + CTRY_LIECHTENSTEIN = 41, + CTRY_AUSTRIA = 43, + CTRY_UNITED_KINGDOM = 44, + CTRY_DENMARK = 45, + CTRY_SWEDEN = 46, + CTRY_NORWAY = 47, + CTRY_POLAND = 48, + CTRY_GERMANY = 49, + CTRY_PERU = 51, + CTRY_MEXICO = 52, + CTRY_ARGENTINA = 54, + CTRY_BRAZIL = 55, + CTRY_CHILE = 56, + CTRY_COLOMBIA = 57, + CTRY_VENEZUELA = 58, + CTRY_MALAYSIA = 60, + CTRY_AUSTRALIA = 61, + CTRY_INDONESIA = 62, + CTRY_PHILIPPINES = 63, + CTRY_NEW_ZEALAND = 64, + CTRY_SINGAPORE = 65, + CTRY_THAILAND = 66, + CTRY_JAPAN = 81, + CTRY_SOUTH_KOREA = 82, + CTRY_VIET_NAM = 84, + CTRY_PRCHINA = 86, + CTRY_TURKEY = 90, + CTRY_INDIA = 91, + CTRY_PAKISTAN = 92, + CTRY_MOROCCO = 212, + CTRY_ALGERIA = 213, + CTRY_TUNISIA = 216, + CTRY_LIBYA = 218, + CTRY_KENYA = 254, + CTRY_ZIMBABWE = 263, + CTRY_FAEROE_ISLANDS = 298, + CTRY_PORTUGAL = 351, + CTRY_LUXEMBOURG = 352, + CTRY_IRELAND = 353, + CTRY_ICELAND = 354, + CTRY_ALBANIA = 355, + CTRY_FINLAND = 358, + CTRY_BULGARIA = 359, + CTRY_LITHUANIA = 370, + CTRY_LATVIA = 371, + CTRY_ESTONIA = 372, + CTRY_ARMENIA = 374, + CTRY_BELARUS = 375, + CTRY_UKRAINE = 380, + CTRY_SERBIA = 381, + CTRY_CROATIA = 385, + CTRY_SLOVENIA = 386, + CTRY_MACEDONIA = 389, + CTRY_CZECH = 420, + CTRY_SLOVAK = 421, + CTRY_BELIZE = 501, + CTRY_GUATEMALA = 502, + CTRY_EL_SALVADOR = 503, + CTRY_HONDURAS = 504, + CTRY_NICARAGUA = 505, + CTRY_COSTA_RICA = 506, + CTRY_PANAMA = 507, + CTRY_BOLIVIA = 591, + CTRY_ECUADOR = 593, + CTRY_PARAGUAY = 595, + CTRY_URUGUAY = 598, + CTRY_BRUNEI_DARUSSALAM = 673, + CTRY_HONG_KONG = 852, + CTRY_MACAU = 853, + CTRY_TAIWAN = 886, + CTRY_MALDIVES = 960, + CTRY_LEBANON = 961, + CTRY_JORDAN = 962, + CTRY_SYRIA = 963, + CTRY_IRAQ = 964, + CTRY_KUWAIT = 965, + CTRY_SAUDI_ARABIA = 966, + CTRY_YEMEN = 967, + CTRY_OMAN = 968, + CTRY_UAE = 971, + CTRY_ISRAEL = 972, + CTRY_BAHRAIN = 973, + CTRY_QATAR = 974, + CTRY_MONGOLIA = 976, + CTRY_IRAN = 981, + CTRY_AZERBAIJAN = 994, + CTRY_GEORGIA = 995, + CTRY_KYRGYZSTAN = 996 +} + +enum : CALTYPE { + CAL_ICALINTVALUE = 1, + CAL_SCALNAME, + CAL_IYEAROFFSETRANGE, + CAL_SERASTRING, + CAL_SSHORTDATE, + CAL_SLONGDATE, + CAL_SDAYNAME1, + CAL_SDAYNAME2, + CAL_SDAYNAME3, + CAL_SDAYNAME4, + CAL_SDAYNAME5, + CAL_SDAYNAME6, + CAL_SDAYNAME7, + CAL_SABBREVDAYNAME1, + CAL_SABBREVDAYNAME2, + CAL_SABBREVDAYNAME3, + CAL_SABBREVDAYNAME4, + CAL_SABBREVDAYNAME5, + CAL_SABBREVDAYNAME6, + CAL_SABBREVDAYNAME7, + CAL_SMONTHNAME1, + CAL_SMONTHNAME2, + CAL_SMONTHNAME3, + CAL_SMONTHNAME4, + CAL_SMONTHNAME5, + CAL_SMONTHNAME6, + CAL_SMONTHNAME7, + CAL_SMONTHNAME8, + CAL_SMONTHNAME9, + CAL_SMONTHNAME10, + CAL_SMONTHNAME11, + CAL_SMONTHNAME12, + CAL_SMONTHNAME13, + CAL_SABBREVMONTHNAME1, + CAL_SABBREVMONTHNAME2, + CAL_SABBREVMONTHNAME3, + CAL_SABBREVMONTHNAME4, + CAL_SABBREVMONTHNAME5, + CAL_SABBREVMONTHNAME6, + CAL_SABBREVMONTHNAME7, + CAL_SABBREVMONTHNAME8, + CAL_SABBREVMONTHNAME9, + CAL_SABBREVMONTHNAME10, + CAL_SABBREVMONTHNAME11, + CAL_SABBREVMONTHNAME12, + CAL_SABBREVMONTHNAME13 // = 46 +} + + +enum : CALTYPE { + CAL_GREGORIAN = 1, + CAL_GREGORIAN_US, + CAL_JAPAN, + CAL_TAIWAN, + CAL_KOREA, + CAL_HIJRI, + CAL_THAI, + CAL_HEBREW, + CAL_GREGORIAN_ME_FRENCH, + CAL_GREGORIAN_ARABIC, + CAL_GREGORIAN_XLIT_ENGLISH, + CAL_GREGORIAN_XLIT_FRENCH // = 12 +} + +enum : int { + CSTR_LESS_THAN = 1, + CSTR_EQUAL, + CSTR_GREATER_THAN +} + +enum : DWORD { + LGRPID_INSTALLED = 1, + LGRPID_SUPPORTED +} + +enum : LGRPID { + LGRPID_WESTERN_EUROPE = 1, + LGRPID_CENTRAL_EUROPE, + LGRPID_BALTIC, + LGRPID_GREEK, + LGRPID_CYRILLIC, + LGRPID_TURKISH, + LGRPID_JAPANESE, + LGRPID_KOREAN, + LGRPID_TRADITIONAL_CHINESE, + LGRPID_SIMPLIFIED_CHINESE, + LGRPID_THAI, + LGRPID_HEBREW, + LGRPID_ARABIC, + LGRPID_VIETNAMESE, + LGRPID_INDIC, + LGRPID_GEORGIAN, + LGRPID_ARMENIAN // = 17 +} + +static if (_WIN32_WINNT >= 0x500) { + enum : LCTYPE { + LOCALE_SYEARMONTH = 0x1006, + LOCALE_SENGCURRNAME = 0x1007, + LOCALE_SNATIVECURRNAME = 0x1008, + LOCALE_IDEFAULTEBCDICCODEPAGE = 0x1012, + LOCALE_SSORTNAME = 0x1013, + LOCALE_IDIGITSUBSTITUTION = 0x1014, + LOCALE_IPAPERSIZE = 0x100A + } + + const DWORD + DATE_YEARMONTH = 8, + DATE_LTRREADING = 16, + DATE_RTLREADING = 32; + + const DWORD MAP_EXPAND_LIGATURES = 0x2000; + const DWORD WC_NO_BEST_FIT_CHARS = 1024; + + enum : CALTYPE { + CAL_SYEARMONTH = 47, + CAL_ITWODIGITYEARMAX = 48, + CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE, + CAL_RETURN_NUMBER = LOCALE_RETURN_NUMBER, + CAL_USE_CP_ACP = LOCALE_USE_CP_ACP + } +} // (_WIN32_WINNT >= 0x500) + +extern (Windows) { + alias BOOL function(LPSTR) CALINFO_ENUMPROCA; + alias BOOL function(LPWSTR) CALINFO_ENUMPROCW; + alias BOOL function(LPSTR, CALID) CALINFO_ENUMPROCEXA; + alias BOOL function(LPWSTR, CALID) CALINFO_ENUMPROCEXW; + alias BOOL function(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR) + LANGUAGEGROUP_ENUMPROCA; + alias BOOL function(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR) + LANGUAGEGROUP_ENUMPROCW; + alias BOOL function(LGRPID, LCID, LPSTR, LONG_PTR) + LANGGROUPLOCALE_ENUMPROCA; + alias BOOL function(LGRPID, LCID, LPWSTR, LONG_PTR) + LANGGROUPLOCALE_ENUMPROCW; + alias BOOL function(LPWSTR, LONG_PTR) UILANGUAGE_ENUMPROCW; + alias BOOL function(LPSTR, LONG_PTR) UILANGUAGE_ENUMPROCA; + alias BOOL function(LPSTR) LOCALE_ENUMPROCA; + alias BOOL function(LPWSTR) LOCALE_ENUMPROCW; + alias BOOL function(LPSTR) CODEPAGE_ENUMPROCA; + alias BOOL function(LPWSTR) CODEPAGE_ENUMPROCW; + alias BOOL function(LPSTR) DATEFMT_ENUMPROCA; + alias BOOL function(LPWSTR) DATEFMT_ENUMPROCW; + alias BOOL function(LPSTR, CALID) DATEFMT_ENUMPROCEXA; + alias BOOL function(LPWSTR, CALID) DATEFMT_ENUMPROCEXW; + alias BOOL function(LPSTR) TIMEFMT_ENUMPROCA; + alias BOOL function(LPWSTR) TIMEFMT_ENUMPROCW; + alias BOOL function(GEOID) GEO_ENUMPROC; +} + +enum NLS_FUNCTION { + COMPARE_STRING = 0x0001 +} + +enum SYSGEOCLASS { + GEOCLASS_NATION = 16, + GEOCLASS_REGION = 14 +} + +enum SYSGEOTYPE { + GEO_NATION = 0x0001, + GEO_LATITUDE = 0x0002, + GEO_LONGITUDE = 0x0003, + GEO_ISO2 = 0x0004, + GEO_ISO3 = 0x0005, + GEO_RFC1766 = 0x0006, + GEO_LCID = 0x0007, + GEO_FRIENDLYNAME = 0x0008, + GEO_OFFICIALNAME = 0x0009, + GEO_TIMEZONES = 0x000a, + GEO_OFFICIALLANGUAGES = 0x000a +} + +struct CPINFO { + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; +} +alias CPINFO* LPCPINFO; + +struct CPINFOEXA { + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; + WCHAR UnicodeDefaultChar; + UINT CodePage; + CHAR[MAX_PATH] CodePageName; +} +alias CPINFOEXA* LPCPINFOEXA; + +struct CPINFOEXW { + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; + WCHAR UnicodeDefaultChar; + UINT CodePage; + WCHAR[MAX_PATH] CodePageName; +} +alias CPINFOEXW* LPCPINFOEXW; + +struct CURRENCYFMTA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPSTR lpCurrencySymbol; +} +alias CURRENCYFMTA* LPCURRENCYFMTA; + +struct CURRENCYFMTW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPWSTR lpCurrencySymbol; +} +alias CURRENCYFMTW* LPCURRENCYFMTW; + +struct NLSVERSIONINFO { + DWORD dwNLSVersionInfoSize; + DWORD dwNLSVersion; + DWORD dwDefinedVersion; +} +alias NLSVERSIONINFO* LPNLSVERSIONINFO; + +struct NUMBERFMTA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; +} +alias NUMBERFMTA* LPNUMBERFMTA; + +struct NUMBERFMTW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; +} +alias NUMBERFMTW* LPNUMBERFMTW; + +extern (Windows) { + int CompareStringA(LCID, DWORD, LPCSTR, int, LPCSTR, int); + int CompareStringW(LCID, DWORD, LPCWSTR, int, LPCWSTR, int); + LCID ConvertDefaultLocale(LCID); + BOOL EnumCalendarInfoA(CALINFO_ENUMPROCA, LCID, CALID, CALTYPE); + BOOL EnumCalendarInfoW(CALINFO_ENUMPROCW, LCID, CALID, CALTYPE); + BOOL EnumDateFormatsA(DATEFMT_ENUMPROCA, LCID, DWORD); + BOOL EnumDateFormatsW(DATEFMT_ENUMPROCW, LCID, DWORD); + BOOL EnumSystemCodePagesA(CODEPAGE_ENUMPROCA, DWORD); + BOOL EnumSystemCodePagesW(CODEPAGE_ENUMPROCW, DWORD); + BOOL EnumSystemGeoID(GEOCLASS, GEOID, GEO_ENUMPROC); + BOOL EnumSystemLocalesA(LOCALE_ENUMPROCA, DWORD); + BOOL EnumSystemLocalesW(LOCALE_ENUMPROCW, DWORD); + BOOL EnumTimeFormatsA(TIMEFMT_ENUMPROCA, LCID, DWORD); + BOOL EnumTimeFormatsW(TIMEFMT_ENUMPROCW, LCID, DWORD); + int FoldStringA(DWORD, LPCSTR, int, LPSTR, int); + int FoldStringW(DWORD, LPCWSTR, int, LPWSTR, int); + UINT GetACP(); + int GetCalendarInfoA(LCID, CALID, CALTYPE, LPSTR, int, LPDWORD); + int GetCalendarInfoW(LCID, CALID, CALTYPE, LPWSTR, int, LPDWORD); + BOOL GetCPInfo(UINT, LPCPINFO); + BOOL GetCPInfoExA(UINT, DWORD, LPCPINFOEXA); + BOOL GetCPInfoExW(UINT, DWORD, LPCPINFOEXW); + int GetCurrencyFormatA(LCID, DWORD, LPCSTR, const(CURRENCYFMTA)*, LPSTR, int); + int GetCurrencyFormatW(LCID, DWORD, LPCWSTR, const(CURRENCYFMTW)*, LPWSTR, + int); + int GetDateFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); + int GetDateFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); + int GetGeoInfoA(GEOID, GEOTYPE, LPSTR, int, LANGID); + int GetGeoInfoW(GEOID, GEOTYPE, LPWSTR, int, LANGID); + int GetLocaleInfoA(LCID, LCTYPE, LPSTR, int); + int GetLocaleInfoW(LCID, LCTYPE, LPWSTR, int); + BOOL GetNLSVersion(NLS_FUNCTION, LCID, LPNLSVERSIONINFO); + int GetNumberFormatA(LCID, DWORD, LPCSTR, const(NUMBERFMTA)*, LPSTR, int); + int GetNumberFormatW(LCID, DWORD, LPCWSTR, const(NUMBERFMTW)*, LPWSTR, int); + UINT GetOEMCP(); + BOOL GetStringTypeA(LCID, DWORD, LPCSTR, int, LPWORD); + BOOL GetStringTypeW(DWORD, LPCWSTR, int, LPWORD); + BOOL GetStringTypeExA(LCID, DWORD, LPCSTR, int, LPWORD); + BOOL GetStringTypeExW(LCID, DWORD, LPCWSTR, int, LPWORD); + LANGID GetSystemDefaultLangID(); + LCID GetSystemDefaultLCID(); + LCID GetThreadLocale(); + int GetTimeFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); + int GetTimeFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); + LANGID GetUserDefaultLangID(); + LCID GetUserDefaultLCID(); + GEOID GetUserGeoID(GEOCLASS); + BOOL IsDBCSLeadByte(BYTE); + BOOL IsDBCSLeadByteEx(UINT, BYTE); + BOOL IsNLSDefinedString(NLS_FUNCTION, DWORD, LPNLSVERSIONINFO, LPCWSTR, + int); + BOOL IsValidCodePage(UINT); + BOOL IsValidLocale(LCID, DWORD); + int LCMapStringA(LCID, DWORD, LPCSTR, int, LPSTR, int); + int LCMapStringW(LCID, DWORD, LPCWSTR, int, LPWSTR, int); + int MultiByteToWideChar(UINT, DWORD, LPCSTR, int, LPWSTR, int); + int SetCalendarInfoA(LCID, CALID, CALTYPE, LPCSTR); + int SetCalendarInfoW(LCID, CALID, CALTYPE, LPCWSTR); + BOOL SetLocaleInfoA(LCID, LCTYPE, LPCSTR); + BOOL SetLocaleInfoW(LCID, LCTYPE, LPCWSTR); + BOOL SetThreadLocale(LCID); + BOOL SetUserGeoID(GEOID); + int WideCharToMultiByte(UINT, DWORD, LPCWSTR, int, LPSTR, int, LPCSTR, + LPBOOL); + + static if (_WIN32_WINNT >= 0x410) { + BOOL EnumCalendarInfoExA(CALINFO_ENUMPROCEXA, LCID, CALID, CALTYPE); + BOOL EnumCalendarInfoExW(CALINFO_ENUMPROCEXW, LCID, CALID, CALTYPE); + BOOL EnumDateFormatsExA(DATEFMT_ENUMPROCEXA, LCID, DWORD); + BOOL EnumDateFormatsExW(DATEFMT_ENUMPROCEXW, LCID, DWORD); + BOOL IsValidLanguageGroup(LGRPID, DWORD); + } + + static if (_WIN32_WINNT >= 0x500) { + LANGID GetSystemDefaultUILanguage(); + LANGID GetUserDefaultUILanguage(); + + BOOL EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA, DWORD, + LONG_PTR); + BOOL EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW, DWORD, + LONG_PTR); + BOOL EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA, LGRPID, + DWORD, LONG_PTR); + BOOL EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW, LGRPID, + DWORD, LONG_PTR); + BOOL EnumUILanguagesA(UILANGUAGE_ENUMPROCA, DWORD, LONG_PTR); + BOOL EnumUILanguagesW(UILANGUAGE_ENUMPROCW, DWORD, LONG_PTR); + } +} + +version (Unicode) { + alias CALINFO_ENUMPROCW CALINFO_ENUMPROC; + alias CALINFO_ENUMPROCEXW CALINFO_ENUMPROCEX; + alias LOCALE_ENUMPROCW LOCALE_ENUMPROC; + alias CODEPAGE_ENUMPROCW CODEPAGE_ENUMPROC; + alias DATEFMT_ENUMPROCW DATEFMT_ENUMPROC; + alias DATEFMT_ENUMPROCEXW DATEFMT_ENUMPROCEX; + alias TIMEFMT_ENUMPROCW TIMEFMT_ENUMPROC; + alias LANGUAGEGROUP_ENUMPROCW LANGUAGEGROUP_ENUMPROC; + alias LANGGROUPLOCALE_ENUMPROCW LANGGROUPLOCALE_ENUMPROC; + alias UILANGUAGE_ENUMPROCW UILANGUAGE_ENUMPROC; + alias CPINFOEXW CPINFOEX; + alias LPCPINFOEXW LPCPINFOEX; + alias CURRENCYFMTW CURRENCYFMT; + alias LPCURRENCYFMTW LPCURRENCYFMT; + alias NUMBERFMTW NUMBERFMT; + alias LPNUMBERFMTW LPNUMBERFMT; + alias CompareStringW CompareString; + alias EnumCalendarInfoW EnumCalendarInfo; + alias EnumSystemCodePagesW EnumSystemCodePages; + alias EnumSystemLocalesW EnumSystemLocales; + alias EnumTimeFormatsW EnumTimeFormats; + alias FoldStringW FoldString; + alias GetCalendarInfoW GetCalendarInfo; + alias GetCPInfoExW GetCPInfoEx; + alias GetCurrencyFormatW GetCurrencyFormat; + alias GetDateFormatW GetDateFormat; + alias GetGeoInfoW GetGeoInfo; + alias GetLocaleInfoW GetLocaleInfo; + alias GetNumberFormatW GetNumberFormat; + alias GetStringTypeExW GetStringTypeEx; + alias GetTimeFormatW GetTimeFormat; + alias LCMapStringW LCMapString; + alias SetCalendarInfoW SetCalendarInfo; + alias SetLocaleInfoW SetLocaleInfo; + + static if (_WIN32_WINNT >= 0x410) { + alias EnumCalendarInfoExW EnumCalendarInfoEx; + alias EnumDateFormatsExW EnumDateFormatsEx; + } + + static if (_WIN32_WINNT >= 0x500) { + alias EnumSystemLanguageGroupsW EnumSystemLanguageGroups; + alias EnumLanguageGroupLocalesW EnumLanguageGroupLocales; + alias EnumUILanguagesW EnumUILanguages; + } + +} else { + alias CALINFO_ENUMPROCA CALINFO_ENUMPROC; + alias CALINFO_ENUMPROCEXA CALINFO_ENUMPROCEX; + alias LOCALE_ENUMPROCA LOCALE_ENUMPROC; + alias CODEPAGE_ENUMPROCA CODEPAGE_ENUMPROC; + alias DATEFMT_ENUMPROCA DATEFMT_ENUMPROC; + alias DATEFMT_ENUMPROCEXA DATEFMT_ENUMPROCEX; + alias TIMEFMT_ENUMPROCA TIMEFMT_ENUMPROC; + alias LANGUAGEGROUP_ENUMPROCA LANGUAGEGROUP_ENUMPROC; + alias LANGGROUPLOCALE_ENUMPROCA LANGGROUPLOCALE_ENUMPROC; + alias UILANGUAGE_ENUMPROCA UILANGUAGE_ENUMPROC; + alias CPINFOEXA CPINFOEX; + alias LPCPINFOEXA LPCPINFOEX; + alias CURRENCYFMTA CURRENCYFMT; + alias LPCURRENCYFMTA LPCURRENCYFMT; + alias NUMBERFMTA NUMBERFMT; + alias LPNUMBERFMTA LPNUMBERFMT; + alias CompareStringA CompareString; + alias EnumCalendarInfoA EnumCalendarInfo; + alias EnumSystemCodePagesA EnumSystemCodePages; + alias EnumSystemLocalesA EnumSystemLocales; + alias EnumTimeFormatsA EnumTimeFormats; + alias FoldStringA FoldString; + alias GetCalendarInfoA GetCalendarInfo; + alias GetCPInfoExA GetCPInfoEx; + alias GetCurrencyFormatA GetCurrencyFormat; + alias GetDateFormatA GetDateFormat; + alias GetGeoInfoA GetGeoInfo; + alias GetLocaleInfoA GetLocaleInfo; + alias GetNumberFormatA GetNumberFormat; + alias GetStringTypeExA GetStringTypeEx; + alias GetTimeFormatA GetTimeFormat; + alias LCMapStringA LCMapString; + alias SetCalendarInfoA SetCalendarInfo; + alias SetLocaleInfoA SetLocaleInfo; + + static if (_WIN32_WINNT >= 0x410) { + alias EnumCalendarInfoExA EnumCalendarInfoEx; + alias EnumDateFormatsExA EnumDateFormatsEx; + } + + static if (_WIN32_WINNT >= 0x500) { + alias EnumSystemLanguageGroupsA EnumSystemLanguageGroups; + alias EnumLanguageGroupLocalesA EnumLanguageGroupLocales; + alias EnumUILanguagesA EnumUILanguages; + } +} diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d new file mode 100644 index 0000000000..e0b3f10ae3 --- /dev/null +++ b/src/core/sys/windows/winnt.d @@ -0,0 +1,4103 @@ +/***********************************************************************\ +* winnt.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.12 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winnt; + +public import win32.basetsd, win32.windef, win32.winerror; +private import win32.w32api; + +/* Translation Notes: +The following macros are unneeded for D: +FIELD_OFFSET(t,f), CONTAINING_RECORD(address, type, field) +*/ + +alias void VOID; +alias char CHAR, CCHAR; +alias wchar WCHAR; +alias bool BOOLEAN; +alias byte FCHAR; +alias ubyte UCHAR; +alias short SHORT; +alias ushort LANGID, FSHORT; +alias uint LCID, FLONG, ACCESS_MASK; +alias long LONGLONG, USN; +alias ulong DWORDLONG, ULONGLONG; + +alias void* PVOID, LPVOID; +alias char* PSZ, PCHAR, PCCHAR, LPCH, PCH, LPSTR, PSTR; +alias wchar* PWCHAR, LPWCH, PWCH, LPWSTR, PWSTR; +alias bool* PBOOLEAN; +alias ubyte* PUCHAR; +alias short* PSHORT; +alias int* PLONG; +alias uint* PLCID, PACCESS_MASK; +alias long* PLONGLONG; +alias ulong* PDWORDLONG, PULONGLONG; + +// FIXME(MinGW) for __WIN64 +alias void* PVOID64; + +// const versions +alias const(char)* LPCCH, PCSTR, LPCSTR; +alias const(wchar)* LPCWCH, PCWCH, LPCWSTR, PCWSTR; + +version (Unicode) { + alias WCHAR TCHAR, _TCHAR; +} else { + alias CHAR TCHAR, _TCHAR; +} + +alias TCHAR TBYTE; +alias TCHAR* PTCH, PTBYTE, LPTCH, PTSTR, LPTSTR, LP, PTCHAR; +alias const(TCHAR)* LPCTSTR; + +const char ANSI_NULL = '\0'; +const wchar UNICODE_NULL = '\0'; + +const APPLICATION_ERROR_MASK = 0x20000000; +const ERROR_SEVERITY_SUCCESS = 0x00000000; +const ERROR_SEVERITY_INFORMATIONAL = 0x40000000; +const ERROR_SEVERITY_WARNING = 0x80000000; +const ERROR_SEVERITY_ERROR = 0xC0000000; + +// MinGW: also in ddk/ntifs.h +enum : USHORT { + COMPRESSION_FORMAT_NONE = 0x0000, + COMPRESSION_FORMAT_DEFAULT = 0x0001, + COMPRESSION_FORMAT_LZNT1 = 0x0002, + COMPRESSION_ENGINE_STANDARD = 0x0000, + COMPRESSION_ENGINE_MAXIMUM = 0x0100, + COMPRESSION_ENGINE_HIBER = 0x0200 +} + +// ACCESS_DENIED_OBJECT_ACE, etc +const DWORD + ACE_OBJECT_TYPE_PRESENT = 0x00000001, + ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002; + +// ACE_HEADER.AceType +// also in ddk/ntifs.h +enum : BYTE { + ACCESS_ALLOWED_ACE_TYPE, + ACCESS_DENIED_ACE_TYPE, + SYSTEM_AUDIT_ACE_TYPE, + SYSTEM_ALARM_ACE_TYPE +} + +// ACE_HEADER.AceFlags +const BYTE + OBJECT_INHERIT_ACE = 0x01, + CONTAINER_INHERIT_ACE = 0x02, + NO_PROPAGATE_INHERIT_ACE = 0x04, + INHERIT_ONLY_ACE = 0x08, + INHERITED_ACE = 0x10, + VALID_INHERIT_FLAGS = 0x1F, + SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, + FAILED_ACCESS_ACE_FLAG = 0x80; + +// Access Mask Format +const ACCESS_MASK + DELETE = 0x00010000, + READ_CONTROL = 0x00020000, + WRITE_DAC = 0x00040000, + WRITE_OWNER = 0x00080000, + SYNCHRONIZE = 0x00100000, + ACCESS_SYSTEM_SECURITY = 0x01000000, + MAXIMUM_ALLOWED = 0x02000000, + GENERIC_READ = 0x80000000, + GENERIC_WRITE = 0x40000000, + GENERIC_EXECUTE = 0x20000000, + GENERIC_ALL = 0x10000000, + STANDARD_RIGHTS_REQUIRED = 0x000F0000, + STANDARD_RIGHTS_READ = 0x00020000, + STANDARD_RIGHTS_WRITE = 0x00020000, + STANDARD_RIGHTS_EXECUTE = 0x00020000, + STANDARD_RIGHTS_ALL = 0x001F0000, + SPECIFIC_RIGHTS_ALL = 0x0000FFFF; + + +const DWORD INVALID_FILE_ATTRIBUTES = -1; + +// MinGW: Also in ddk/winddk.h +const DWORD + FILE_LIST_DIRECTORY = 0x00000001, + FILE_READ_DATA = 0x00000001, + FILE_ADD_FILE = 0x00000002, + FILE_WRITE_DATA = 0x00000002, + FILE_ADD_SUBDIRECTORY = 0x00000004, + FILE_APPEND_DATA = 0x00000004, + FILE_CREATE_PIPE_INSTANCE = 0x00000004, + FILE_READ_EA = 0x00000008, + FILE_READ_PROPERTIES = 0x00000008, + FILE_WRITE_EA = 0x00000010, + FILE_WRITE_PROPERTIES = 0x00000010, + FILE_EXECUTE = 0x00000020, + FILE_TRAVERSE = 0x00000020, + FILE_DELETE_CHILD = 0x00000040, + FILE_READ_ATTRIBUTES = 0x00000080, + FILE_WRITE_ATTRIBUTES = 0x00000100; + +const DWORD + FILE_SHARE_READ = 0x00000001, + FILE_SHARE_WRITE = 0x00000002, + FILE_SHARE_DELETE = 0x00000004, + FILE_SHARE_VALID_FLAGS = 0x00000007; + +const DWORD + FILE_ATTRIBUTE_READONLY = 0x00000001, + FILE_ATTRIBUTE_HIDDEN = 0x00000002, + FILE_ATTRIBUTE_SYSTEM = 0x00000004, + FILE_ATTRIBUTE_DIRECTORY = 0x00000010, + FILE_ATTRIBUTE_ARCHIVE = 0x00000020, + FILE_ATTRIBUTE_DEVICE = 0x00000040, + FILE_ATTRIBUTE_NORMAL = 0x00000080, + FILE_ATTRIBUTE_TEMPORARY = 0x00000100, + FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200, + FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400, + FILE_ATTRIBUTE_COMPRESSED = 0x00000800, + FILE_ATTRIBUTE_OFFLINE = 0x00001000, + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000, + FILE_ATTRIBUTE_ENCRYPTED = 0x00004000, + FILE_ATTRIBUTE_VALID_FLAGS = 0x00007fb7, + FILE_ATTRIBUTE_VALID_SET_FLAGS = 0x000031a7; + +// These are not documented on MSDN +const FILE_COPY_STRUCTURED_STORAGE = 0x00000041; +const FILE_STRUCTURED_STORAGE = 0x00000441; + +// Nor are these +const FILE_VALID_OPTION_FLAGS = 0x00ffffff; +const FILE_VALID_PIPE_OPTION_FLAGS = 0x00000032; +const FILE_VALID_MAILSLOT_OPTION_FLAGS = 0x00000032; +const FILE_VALID_SET_FLAGS = 0x00000036; + +const ULONG + FILE_SUPERSEDE = 0x00000000, + FILE_OPEN = 0x00000001, + FILE_CREATE = 0x00000002, + FILE_OPEN_IF = 0x00000003, + FILE_OVERWRITE = 0x00000004, + FILE_OVERWRITE_IF = 0x00000005, + FILE_MAXIMUM_DISPOSITION = 0x00000005; + +const ULONG + FILE_DIRECTORY_FILE = 0x00000001, + FILE_WRITE_THROUGH = 0x00000002, + FILE_SEQUENTIAL_ONLY = 0x00000004, + FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008, + FILE_SYNCHRONOUS_IO_ALERT = 0x00000010, + FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020, + FILE_NON_DIRECTORY_FILE = 0x00000040, + FILE_CREATE_TREE_CONNECTION = 0x00000080, + FILE_COMPLETE_IF_OPLOCKED = 0x00000100, + FILE_NO_EA_KNOWLEDGE = 0x00000200, + FILE_OPEN_FOR_RECOVERY = 0x00000400, + FILE_RANDOM_ACCESS = 0x00000800, + FILE_DELETE_ON_CLOSE = 0x00001000, + FILE_OPEN_BY_FILE_ID = 0x00002000, + FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000, + FILE_NO_COMPRESSION = 0x00008000, + FILE_RESERVE_OPFILTER = 0x00100000, + FILE_OPEN_REPARSE_POINT = 0x00200000, + FILE_OPEN_NO_RECALL = 0x00400000, + FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000; + + +const ACCESS_MASK + FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x01FF, + FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES + | FILE_EXECUTE | SYNCHRONIZE, + FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA + | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE, + FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA + | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA + | SYNCHRONIZE; + +// MinGW: end winddk.h +// MinGW: also in ddk/ntifs.h +const DWORD + FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, + FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, + FILE_NOTIFY_CHANGE_NAME = 0x00000003, + FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004, + FILE_NOTIFY_CHANGE_SIZE = 0x00000008, + FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010, + FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020, + FILE_NOTIFY_CHANGE_CREATION = 0x00000040, + FILE_NOTIFY_CHANGE_EA = 0x00000080, + FILE_NOTIFY_CHANGE_SECURITY = 0x00000100, + FILE_NOTIFY_CHANGE_STREAM_NAME = 0x00000200, + FILE_NOTIFY_CHANGE_STREAM_SIZE = 0x00000400, + FILE_NOTIFY_CHANGE_STREAM_WRITE = 0x00000800, + FILE_NOTIFY_VALID_MASK = 0x00000fff; + +const DWORD + FILE_CASE_SENSITIVE_SEARCH = 0x00000001, + FILE_CASE_PRESERVED_NAMES = 0x00000002, + FILE_UNICODE_ON_DISK = 0x00000004, + FILE_PERSISTENT_ACLS = 0x00000008, + FILE_FILE_COMPRESSION = 0x00000010, + FILE_VOLUME_QUOTAS = 0x00000020, + FILE_SUPPORTS_SPARSE_FILES = 0x00000040, + FILE_SUPPORTS_REPARSE_POINTS = 0x00000080, + FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100, + FS_LFN_APIS = 0x00004000, + FILE_VOLUME_IS_COMPRESSED = 0x00008000, + FILE_SUPPORTS_OBJECT_IDS = 0x00010000, + FILE_SUPPORTS_ENCRYPTION = 0x00020000, + FILE_NAMED_STREAMS = 0x00040000, + FILE_READ_ONLY_VOLUME = 0x00080000, + FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000, + FILE_SUPPORTS_TRANSACTIONS = 0x00200000; + +// These are not documented on MSDN +const ACCESS_MASK + IO_COMPLETION_QUERY_STATE = 1, + IO_COMPLETION_MODIFY_STATE = 2, + IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 3; +// MinGW: end ntifs.h + +// MinGW: also in ddk/winddk.h +const DWORD + DUPLICATE_CLOSE_SOURCE = 1, + DUPLICATE_SAME_ACCESS = 2, + DUPLICATE_SAME_ATTRIBUTES = 4; +// MinGW: end winddk.k + +const DWORD + MAILSLOT_NO_MESSAGE = -1, + MAILSLOT_WAIT_FOREVER = -1; + +const ACCESS_MASK + PROCESS_TERMINATE = 0x0001, + PROCESS_CREATE_THREAD = 0x0002, + PROCESS_SET_SESSIONID = 0x0004, + PROCESS_VM_OPERATION = 0x0008, + PROCESS_VM_READ = 0x0010, + PROCESS_VM_WRITE = 0x0020, + PROCESS_DUP_HANDLE = 0x0040, + PROCESS_CREATE_PROCESS = 0x0080, + PROCESS_SET_QUOTA = 0x0100, + PROCESS_SET_INFORMATION = 0x0200, + PROCESS_QUERY_INFORMATION = 0x0400, + PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0FFF; + +const ACCESS_MASK + THREAD_TERMINATE = 0x0001, + THREAD_SUSPEND_RESUME = 0x0002, + THREAD_GET_CONTEXT = 0x0008, + THREAD_SET_CONTEXT = 0x0010, + THREAD_SET_INFORMATION = 0x0020, + THREAD_QUERY_INFORMATION = 0x0040, + THREAD_SET_THREAD_TOKEN = 0x0080, + THREAD_IMPERSONATE = 0x0100, + THREAD_DIRECT_IMPERSONATION = 0x0200, + THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF; + +// These are not documented on MSDN +const THREAD_BASE_PRIORITY_LOWRT = 15; +const THREAD_BASE_PRIORITY_MAX = 2; +const THREAD_BASE_PRIORITY_MIN = -2; +const THREAD_BASE_PRIORITY_IDLE = -15; + +const DWORD EXCEPTION_NONCONTINUABLE = 1; +const size_t EXCEPTION_MAXIMUM_PARAMETERS = 15; + +// These are not documented on MSDN +const ACCESS_MASK + MUTANT_QUERY_STATE = 1, + MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE; + +const ACCESS_MASK + TIMER_QUERY_STATE = 1, + TIMER_MODIFY_STATE = 2, + TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE + | TIMER_MODIFY_STATE; + +const SID_IDENTIFIER_AUTHORITY + SECURITY_NULL_SID_AUTHORITY = {[5: 0]}, + SECURITY_WORLD_SID_AUTHORITY = {[5: 1]}, + SECURITY_LOCAL_SID_AUTHORITY = {[5: 2]}, + SECURITY_CREATOR_SID_AUTHORITY = {[5: 3]}, + SECURITY_NON_UNIQUE_AUTHORITY = {[5: 4]}, + SECURITY_NT_AUTHORITY = {[5: 5]}, + SECURITY_MANDATORY_LABEL_AUTHORITY = {[5: 6]}; + +const DWORD + SECURITY_NULL_RID = 0, + SECURITY_WORLD_RID = 0, + SECURITY_LOCAL_RID = 0, + SECURITY_CREATOR_OWNER_RID = 0, + SECURITY_CREATOR_GROUP_RID = 1, + SECURITY_DIALUP_RID = 1, + SECURITY_NETWORK_RID = 2, + SECURITY_BATCH_RID = 3, + SECURITY_INTERACTIVE_RID = 4, + SECURITY_LOGON_IDS_RID = 5, + SECURITY_SERVICE_RID = 6, + SECURITY_LOCAL_SYSTEM_RID = 18, + SECURITY_BUILTIN_DOMAIN_RID = 32, + SECURITY_PRINCIPAL_SELF_RID = 10, + SECURITY_CREATOR_OWNER_SERVER_RID = 2, + SECURITY_CREATOR_GROUP_SERVER_RID = 3, + SECURITY_LOGON_IDS_RID_COUNT = 3, + SECURITY_ANONYMOUS_LOGON_RID = 7, + SECURITY_PROXY_RID = 8, + SECURITY_ENTERPRISE_CONTROLLERS_RID = 9, + SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID, + SECURITY_AUTHENTICATED_USER_RID = 11, + SECURITY_RESTRICTED_CODE_RID = 12, + SECURITY_NT_NON_UNIQUE_RID = 21, + SID_REVISION = 1; + +enum : DWORD { + DOMAIN_USER_RID_ADMIN = 0x01F4, + DOMAIN_USER_RID_GUEST = 0x01F5, + DOMAIN_GROUP_RID_ADMINS = 0x0200, + DOMAIN_GROUP_RID_USERS = 0x0201, + DOMAIN_ALIAS_RID_ADMINS = 0x0220, + DOMAIN_ALIAS_RID_USERS = 0x0221, + DOMAIN_ALIAS_RID_GUESTS = 0x0222, + DOMAIN_ALIAS_RID_POWER_USERS = 0x0223, + DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x0224, + DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x0225, + DOMAIN_ALIAS_RID_PRINT_OPS = 0x0226, + DOMAIN_ALIAS_RID_BACKUP_OPS = 0x0227, + DOMAIN_ALIAS_RID_REPLICATOR = 0x0228 +} + +enum : WORD { + SECURITY_MANDATORY_UNTRUSTED_RID = 0, + SECURITY_MANDATORY_LOW_RID = 0x1000, + SECURITY_MANDATORY_MEDIUM_RID = 0x2000, + SECURITY_MANDATORY_HIGH_RID = 0x3000, + SECURITY_MANDATORY_SYSTEM_RID = 0x4000, + SECURITY_MANDATORY_PROTECTED_PROCESS_RID = 0x5000, + SECURITY_MANDATORY_MAXIMUM_USER_RID = SECURITY_MANDATORY_SYSTEM_RID +} + +const TCHAR[] + SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege", + SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege", + SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege", + SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege", + SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege", + SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege", + SE_TCB_NAME = "SeTcbPrivilege", + SE_SECURITY_NAME = "SeSecurityPrivilege", + SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege", + SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege", + SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege", + SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege", + SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege", + SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege", + SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege", + SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege", + SE_BACKUP_NAME = "SeBackupPrivilege", + SE_RESTORE_NAME = "SeRestorePrivilege", + SE_SHUTDOWN_NAME = "SeShutdownPrivilege", + SE_DEBUG_NAME = "SeDebugPrivilege", + SE_AUDIT_NAME = "SeAuditPrivilege", + SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege", + SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege", + SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege", + SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege", + SE_UNDOCK_NAME = "SeUndockPrivilege", + SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege", + SE_IMPERSONATE_NAME = "SeImpersonatePrivilege", + SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege", + SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege", + SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege", + SE_RELABEL_NAME = "SeRelabelPrivilege", + SE_INCREASE_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege", + SE_TIME_ZONE_NAME = "SeTimeZonePrivilege", + SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"; + +const DWORD + SE_GROUP_MANDATORY = 0x00000001, + SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002, + SE_GROUP_ENABLED = 0x00000004, + SE_GROUP_OWNER = 0x00000008, + SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010, + SE_GROUP_INTEGRITY = 0x00000020, + SE_GROUP_INTEGRITY_ENABLED = 0x00000040, + SE_GROUP_RESOURCE = 0x20000000, + SE_GROUP_LOGON_ID = 0xC0000000; + +// Primary language identifiers +enum : USHORT { + LANG_NEUTRAL, + LANG_ARABIC, + LANG_BULGARIAN, + LANG_CATALAN, + LANG_CHINESE, + LANG_CZECH, + LANG_DANISH, + LANG_GERMAN, + LANG_GREEK, + LANG_ENGLISH, + LANG_SPANISH, + LANG_FINNISH, + LANG_FRENCH, + LANG_HEBREW, + LANG_HUNGARIAN, + LANG_ICELANDIC, + LANG_ITALIAN, + LANG_JAPANESE, + LANG_KOREAN, + LANG_DUTCH, + LANG_NORWEGIAN, + LANG_POLISH, + LANG_PORTUGUESE, // = 0x16 + LANG_ROMANIAN = 0x18, + LANG_RUSSIAN, + LANG_CROATIAN, // = 0x1A + LANG_SERBIAN = 0x1A, + LANG_BOSNIAN = 0x1A, + LANG_SLOVAK, + LANG_ALBANIAN, + LANG_SWEDISH, + LANG_THAI, + LANG_TURKISH, + LANG_URDU, + LANG_INDONESIAN, + LANG_UKRAINIAN, + LANG_BELARUSIAN, + LANG_SLOVENIAN, + LANG_ESTONIAN, + LANG_LATVIAN, + LANG_LITHUANIAN, // = 0x27 + LANG_FARSI = 0x29, + LANG_PERSIAN = 0x29, + LANG_VIETNAMESE, + LANG_ARMENIAN, + LANG_AZERI, + LANG_BASQUE, + LANG_LOWER_SORBIAN, // = 0x2E + LANG_UPPER_SORBIAN = 0x2E, + LANG_MACEDONIAN, // = 0x2F + LANG_TSWANA = 0x32, + LANG_XHOSA = 0x34, + LANG_ZULU, + LANG_AFRIKAANS, + LANG_GEORGIAN, + LANG_FAEROESE, + LANG_HINDI, + LANG_MALTESE, + LANG_SAMI, + LANG_IRISH, // = 0x3C + LANG_MALAY = 0x3E, + LANG_KAZAK, + LANG_KYRGYZ, + LANG_SWAHILI, // = 0x41 + LANG_UZBEK = 0x43, + LANG_TATAR, + LANG_BENGALI, + LANG_PUNJABI, + LANG_GUJARATI, + LANG_ORIYA, + LANG_TAMIL, + LANG_TELUGU, + LANG_KANNADA, + LANG_MALAYALAM, + LANG_ASSAMESE, + LANG_MARATHI, + LANG_SANSKRIT, + LANG_MONGOLIAN, + LANG_TIBETAN, + LANG_WELSH, + LANG_KHMER, + LANG_LAO, // = 0x54 + LANG_GALICIAN = 0x56, + LANG_KONKANI, + LANG_MANIPURI, + LANG_SINDHI, + LANG_SYRIAC, + LANG_SINHALESE, // = 0x5B + LANG_INUKTITUT = 0x5D, + LANG_AMHARIC, + LANG_TAMAZIGHT, + LANG_KASHMIRI, + LANG_NEPALI, + LANG_FRISIAN, + LANG_PASHTO, + LANG_FILIPINO, + LANG_DIVEHI, // = 0x65 + LANG_HAUSA = 0x68, + LANG_YORUBA = 0x6A, + LANG_QUECHUA, + LANG_SOTHO, + LANG_BASHKIR, + LANG_LUXEMBOURGISH, + LANG_GREENLANDIC, + LANG_IGBO, // = 0x70 + LANG_TIGRIGNA = 0x73, + LANG_YI = 0x78, + LANG_MAPUDUNGUN = 0x7A, + LANG_MOHAWK = 0x7C, + LANG_BRETON = 0x7E, + LANG_UIGHUR = 0x80, + LANG_MAORI, + LANG_OCCITAN, + LANG_CORSICAN, + LANG_ALSATIAN, + LANG_YAKUT, + LANG_KICHE, + LANG_KINYARWANDA, + LANG_WOLOF, // = 0x88 + LANG_DARI = 0x8C, + LANG_MALAGASY, // = 0x8D + + LANG_SERBIAN_NEUTRAL = 0x7C1A, + LANG_BOSNIAN_NEUTRAL = 0x781A, + + LANG_INVARIANT = 0x7F +} + + +// Sublanguage identifiers +enum : USHORT { + SUBLANG_NEUTRAL, + SUBLANG_DEFAULT, + SUBLANG_SYS_DEFAULT, + SUBLANG_CUSTOM_DEFAULT, // = 3 + SUBLANG_UI_CUSTOM_DEFAULT = 3, + SUBLANG_CUSTOM_UNSPECIFIED, // = 4 + + SUBLANG_AFRIKAANS_SOUTH_AFRICA = 1, + SUBLANG_ALBANIAN_ALBANIA = 1, + SUBLANG_ALSATIAN_FRANCE = 1, + SUBLANG_AMHARIC_ETHIOPIA = 1, + + SUBLANG_ARABIC_SAUDI_ARABIA = 1, + SUBLANG_ARABIC_IRAQ, + SUBLANG_ARABIC_EGYPT, + SUBLANG_ARABIC_LIBYA, + SUBLANG_ARABIC_ALGERIA, + SUBLANG_ARABIC_MOROCCO, + SUBLANG_ARABIC_TUNISIA, + SUBLANG_ARABIC_OMAN, + SUBLANG_ARABIC_YEMEN, + SUBLANG_ARABIC_SYRIA, + SUBLANG_ARABIC_JORDAN, + SUBLANG_ARABIC_LEBANON, + SUBLANG_ARABIC_KUWAIT, + SUBLANG_ARABIC_UAE, + SUBLANG_ARABIC_BAHRAIN, + SUBLANG_ARABIC_QATAR, // = 16 + + SUBLANG_ARMENIAN_ARMENIA = 1, + SUBLANG_ASSAMESE_INDIA = 1, + + SUBLANG_AZERI_LATIN = 1, + SUBLANG_AZERI_CYRILLIC, // = 2 + + SUBLANG_BASHKIR_RUSSIA = 1, + SUBLANG_BASQUE_BASQUE = 1, + SUBLANG_BELARUSIAN_BELARUS = 1, + SUBLANG_BENGALI_INDIA = 1, + + SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN = 5, + SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 8, + + SUBLANG_BRETON_FRANCE = 1, + SUBLANG_BULGARIAN_BULGARIA = 1, + SUBLANG_CATALAN_CATALAN = 1, + + SUBLANG_CHINESE_TRADITIONAL = 1, + SUBLANG_CHINESE_SIMPLIFIED, + SUBLANG_CHINESE_HONGKONG, + SUBLANG_CHINESE_SINGAPORE, + SUBLANG_CHINESE_MACAU, // = 5 + + SUBLANG_CORSICAN_FRANCE = 1, + + SUBLANG_CROATIAN_CROATIA = 1, + SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN = 4, + + SUBLANG_CZECH_CZECH_REPUBLIC = 1, + SUBLANG_DANISH_DENMARK = 1, + SUBLANG_DIVEHI_MALDIVES = 1, + + SUBLANG_DUTCH = 1, + SUBLANG_DUTCH_BELGIAN, // = 2 + + SUBLANG_ENGLISH_US = 1, + SUBLANG_ENGLISH_UK, + SUBLANG_ENGLISH_AUS, + SUBLANG_ENGLISH_CAN, + SUBLANG_ENGLISH_NZ, + SUBLANG_ENGLISH_EIRE, // = 6 + SUBLANG_ENGLISH_IRELAND = 6, + SUBLANG_ENGLISH_SOUTH_AFRICA, + SUBLANG_ENGLISH_JAMAICA, + SUBLANG_ENGLISH_CARIBBEAN, + SUBLANG_ENGLISH_BELIZE, + SUBLANG_ENGLISH_TRINIDAD, + SUBLANG_ENGLISH_ZIMBABWE, + SUBLANG_ENGLISH_PHILIPPINES, // = 13 + SUBLANG_ENGLISH_INDIA = 16, + SUBLANG_ENGLISH_MALAYSIA, + SUBLANG_ENGLISH_SINGAPORE, // = 18 + + SUBLANG_ESTONIAN_ESTONIA = 1, + SUBLANG_FAEROESE_FAROE_ISLANDS = 1, + SUBLANG_FILIPINO_PHILIPPINES = 1, + SUBLANG_FINNISH_FINLAND = 1, + + SUBLANG_FRENCH = 1, + SUBLANG_FRENCH_BELGIAN, + SUBLANG_FRENCH_CANADIAN, + SUBLANG_FRENCH_SWISS, + SUBLANG_FRENCH_LUXEMBOURG, + SUBLANG_FRENCH_MONACO, // = 6 + + SUBLANG_FRISIAN_NETHERLANDS = 1, + SUBLANG_GALICIAN_GALICIAN = 1, + SUBLANG_GEORGIAN_GEORGIA = 1, + + SUBLANG_GERMAN = 1, + SUBLANG_GERMAN_SWISS, + SUBLANG_GERMAN_AUSTRIAN, + SUBLANG_GERMAN_LUXEMBOURG, + SUBLANG_GERMAN_LIECHTENSTEIN, // = 5 + + SUBLANG_GREEK_GREECE = 1, + SUBLANG_GREENLANDIC_GREENLAND = 1, + SUBLANG_GUJARATI_INDIA = 1, + SUBLANG_HAUSA_NIGERIA = 1, + SUBLANG_HEBREW_ISRAEL = 1, + SUBLANG_HINDI_INDIA = 1, + SUBLANG_HUNGARIAN_HUNGARY = 1, + SUBLANG_ICELANDIC_ICELAND = 1, + SUBLANG_IGBO_NIGERIA = 1, + SUBLANG_INDONESIAN_INDONESIA = 1, + + SUBLANG_INUKTITUT_CANADA = 1, + SUBLANG_INUKTITUT_CANADA_LATIN = 1, + + SUBLANG_IRISH_IRELAND = 1, + + SUBLANG_ITALIAN = 1, + SUBLANG_ITALIAN_SWISS, // = 2 + + SUBLANG_JAPANESE_JAPAN = 1, + + SUBLANG_KASHMIRI_INDIA = 2, + SUBLANG_KASHMIRI_SASIA = 2, + + SUBLANG_KAZAK_KAZAKHSTAN = 1, + SUBLANG_KHMER_CAMBODIA = 1, + SUBLANG_KICHE_GUATEMALA = 1, + SUBLANG_KINYARWANDA_RWANDA = 1, + SUBLANG_KONKANI_INDIA = 1, + SUBLANG_KOREAN = 1, + SUBLANG_KYRGYZ_KYRGYZSTAN = 1, + SUBLANG_LAO_LAO_PDR = 1, + SUBLANG_LATVIAN_LATVIA = 1, + + SUBLANG_LITHUANIAN = 1, + SUBLANG_LITHUANIAN_LITHUANIA = 1, + + SUBLANG_LOWER_SORBIAN_GERMANY = 1, + SUBLANG_LUXEMBOURGISH_LUXEMBOURG = 1, + SUBLANG_MACEDONIAN_MACEDONIA = 1, + SUBLANG_MALAYALAM_INDIA = 1, + SUBLANG_MALTESE_MALTA = 1, + SUBLANG_MAORI_NEW_ZEALAND = 1, + SUBLANG_MAPUDUNGUN_CHILE = 1, + SUBLANG_MARATHI_INDIA = 1, + SUBLANG_MOHAWK_MOHAWK = 1, + + SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA = 1, + SUBLANG_MONGOLIAN_PRC, // = 2 + + SUBLANG_MALAY_MALAYSIA = 1, + SUBLANG_MALAY_BRUNEI_DARUSSALAM, // = 2 + + SUBLANG_NEPALI_NEPAL = 1, + SUBLANG_NEPALI_INDIA, // = 2 + + SUBLANG_NORWEGIAN_BOKMAL = 1, + SUBLANG_NORWEGIAN_NYNORSK, // = 2 + + SUBLANG_OCCITAN_FRANCE = 1, + SUBLANG_ORIYA_INDIA = 1, + SUBLANG_PASHTO_AFGHANISTAN = 1, + SUBLANG_PERSIAN_IRAN = 1, + SUBLANG_POLISH_POLAND = 1, + + SUBLANG_PORTUGUESE_BRAZILIAN = 1, + SUBLANG_PORTUGUESE = 2, + SUBLANG_PORTUGUESE_PORTUGAL, // = 2 + + SUBLANG_PUNJABI_INDIA = 1, + + SUBLANG_QUECHUA_BOLIVIA = 1, + SUBLANG_QUECHUA_ECUADOR, + SUBLANG_QUECHUA_PERU, // = 3 + + SUBLANG_ROMANIAN_ROMANIA = 1, + SUBLANG_ROMANSH_SWITZERLAND = 1, + SUBLANG_RUSSIAN_RUSSIA = 1, + + SUBLANG_SAMI_NORTHERN_NORWAY = 1, + SUBLANG_SAMI_NORTHERN_SWEDEN, + SUBLANG_SAMI_NORTHERN_FINLAND, // = 3 + SUBLANG_SAMI_SKOLT_FINLAND = 3, + SUBLANG_SAMI_INARI_FINLAND = 3, + SUBLANG_SAMI_LULE_NORWAY, + SUBLANG_SAMI_LULE_SWEDEN, + SUBLANG_SAMI_SOUTHERN_NORWAY, + SUBLANG_SAMI_SOUTHERN_SWEDEN, // = 7 + + SUBLANG_SANSKRIT_INDIA = 1, + + SUBLANG_SERBIAN_LATIN = 2, + SUBLANG_SERBIAN_CYRILLIC, // = 3 + SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN = 6, + SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 7, + + SUBLANG_SINDHI_AFGHANISTAN = 2, + SUBLANG_SINHALESE_SRI_LANKA = 1, + SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA = 1, + SUBLANG_SLOVAK_SLOVAKIA = 1, + SUBLANG_SLOVENIAN_SLOVENIA = 1, + + SUBLANG_SPANISH = 1, + SUBLANG_SPANISH_MEXICAN, + SUBLANG_SPANISH_MODERN, + SUBLANG_SPANISH_GUATEMALA, + SUBLANG_SPANISH_COSTA_RICA, + SUBLANG_SPANISH_PANAMA, + SUBLANG_SPANISH_DOMINICAN_REPUBLIC, + SUBLANG_SPANISH_VENEZUELA, + SUBLANG_SPANISH_COLOMBIA, + SUBLANG_SPANISH_PERU, + SUBLANG_SPANISH_ARGENTINA, + SUBLANG_SPANISH_ECUADOR, + SUBLANG_SPANISH_CHILE, + SUBLANG_SPANISH_URUGUAY, + SUBLANG_SPANISH_PARAGUAY, + SUBLANG_SPANISH_BOLIVIA, + SUBLANG_SPANISH_EL_SALVADOR, + SUBLANG_SPANISH_HONDURAS, + SUBLANG_SPANISH_NICARAGUA, + SUBLANG_SPANISH_PUERTO_RICO, + SUBLANG_SPANISH_US, // = 21 + + SUBLANG_SWEDISH = 1, + SUBLANG_SWEDISH_SWEDEN = 1, + SUBLANG_SWEDISH_FINLAND, // = 2 + + SUBLANG_SYRIAC = 1, + SUBLANG_TAJIK_TAJIKISTAN = 1, + SUBLANG_TAMAZIGHT_ALGERIA_LATIN = 2, + SUBLANG_TAMIL_INDIA = 1, + SUBLANG_TATAR_RUSSIA = 1, + SUBLANG_TELUGU_INDIA = 1, + SUBLANG_THAI_THAILAND = 1, + SUBLANG_TIBETAN_PRC = 1, + SUBLANG_TIBETAN_BHUTAN = 2, + SUBLANG_TIGRIGNA_ERITREA = 1, + SUBLANG_TSWANA_SOUTH_AFRICA = 1, + SUBLANG_TURKISH_TURKEY = 1, + SUBLANG_TURKMEN_TURKMENISTAN = 1, + SUBLANG_UIGHUR_PRC = 1, + SUBLANG_UKRAINIAN_UKRAINE = 1, + SUBLANG_UPPER_SORBIAN_GERMANY = 1, + + SUBLANG_URDU_PAKISTAN = 1, + SUBLANG_URDU_INDIA, // = 2 + + SUBLANG_UZBEK_LATIN = 1, + SUBLANG_UZBEK_CYRILLIC, // = 2 + + SUBLANG_VIETNAMESE_VIETNAM = 1, + SUBLANG_WELSH_UNITED_KINGDOM = 1, + SUBLANG_WOLOF_SENEGAL = 1, + SUBLANG_YORUBA_NIGERIA = 1, + SUBLANG_XHOSA_SOUTH_AFRICA = 1, + SUBLANG_YAKUT_RUSSIA = 1, + SUBLANG_YI_PRC = 1, + SUBLANG_ZULU_SOUTH_AFRICA = 1 +} + +// This is not documented on MSDN +const NLS_VALID_LOCALE_MASK = 1048575; + +// Sorting identifiers +enum : WORD { + SORT_DEFAULT = 0, + SORT_JAPANESE_XJIS = 0, + SORT_JAPANESE_UNICODE = 1, + SORT_CHINESE_BIG5 = 0, + SORT_CHINESE_PRCP = 0, + SORT_CHINESE_UNICODE = 1, + SORT_CHINESE_PRC = 2, + SORT_CHINESE_BOPOMOFO = 3, + SORT_KOREAN_KSC = 0, + SORT_KOREAN_UNICODE = 1, + SORT_GERMAN_PHONE_BOOK = 1, + SORT_HUNGARIAN_DEFAULT = 0, + SORT_HUNGARIAN_TECHNICAL = 1, + SORT_GEORGIAN_TRADITIONAL = 0, + SORT_GEORGIAN_MODERN = 1 +} + +WORD MAKELANGID(USHORT p, USHORT s) { return cast(WORD)((s << 10) | p); } +WORD PRIMARYLANGID(WORD lgid) { return cast(WORD)(lgid & 0x3FF); } +WORD SUBLANGID(WORD lgid) { return cast(WORD)(lgid >>> 10); } + +DWORD MAKELCID(WORD lgid, WORD srtid) { return (cast(DWORD) srtid << 16) | cast(DWORD) lgid; } +// ??? +//DWORD MAKESORTLCID(WORD lgid, WORD srtid, WORD ver) { return (MAKELCID(lgid, srtid)) | ((cast(DWORD)ver) << 20); } +WORD LANGIDFROMLCID(LCID lcid) { return cast(WORD) lcid; } +WORD SORTIDFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 16) & 0x0F); } +WORD SORTVERSIONFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 20) & 0x0F); } + +const WORD LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL; +const WORD LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL; +const DWORD LOCALE_NEUTRAL = (SORT_DEFAULT << 16) + | (SUBLANG_NEUTRAL << 10) | LANG_NEUTRAL; + +// --- +enum : BYTE { + ACL_REVISION = 2, + ACL_REVISION_DS = 4 +} + +// These are not documented on MSDN +enum : BYTE { + ACL_REVISION1 = 1, + ACL_REVISION2, + ACL_REVISION3, + ACL_REVISION4 // = 4 +} + +const BYTE + MIN_ACL_REVISION = 2, + MAX_ACL_REVISION = 4; + +/+ +// These aren't necessary for D. +const MINCHAR=0x80; +const MAXCHAR=0x7f; +const MINSHORT=0x8000; +const MAXSHORT=0x7fff; +const MINLONG=0x80000000; +const MAXLONG=0x7fffffff; +const MAXBYTE=0xff; +const MAXWORD=0xffff; +const MAXDWORD=0xffffffff; ++/ + +// SYSTEM_INFO.dwProcessorType +enum : DWORD { + PROCESSOR_INTEL_386 = 386, + PROCESSOR_INTEL_486 = 486, + PROCESSOR_INTEL_PENTIUM = 586, + PROCESSOR_MIPS_R4000 = 4000, + PROCESSOR_ALPHA_21064 = 21064, + PROCESSOR_INTEL_IA64 = 2200 +} + +// SYSTEM_INFO.wProcessorArchitecture +enum : WORD { + PROCESSOR_ARCHITECTURE_INTEL, + PROCESSOR_ARCHITECTURE_MIPS, + PROCESSOR_ARCHITECTURE_ALPHA, + PROCESSOR_ARCHITECTURE_PPC, + PROCESSOR_ARCHITECTURE_SHX, + PROCESSOR_ARCHITECTURE_ARM, + PROCESSOR_ARCHITECTURE_IA64, + PROCESSOR_ARCHITECTURE_ALPHA64, + PROCESSOR_ARCHITECTURE_MSIL, + PROCESSOR_ARCHITECTURE_AMD64, + PROCESSOR_ARCHITECTURE_IA32_ON_WIN64, // = 10 + PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF +} + +// IsProcessorFeaturePresent() +enum : DWORD { + PF_FLOATING_POINT_PRECISION_ERRATA, + PF_FLOATING_POINT_EMULATED, + PF_COMPARE_EXCHANGE_DOUBLE, + PF_MMX_INSTRUCTIONS_AVAILABLE, + PF_PPC_MOVEMEM_64BIT_OK, + PF_ALPHA_BYTE_INSTRUCTIONS, + PF_XMMI_INSTRUCTIONS_AVAILABLE, + PF_3DNOW_INSTRUCTIONS_AVAILABLE, + PF_RDTSC_INSTRUCTION_AVAILABLE, + PF_PAE_ENABLED, + PF_XMMI64_INSTRUCTIONS_AVAILABLE +} + +// MinGW: also in ddk/ntifs.h +enum : DWORD { + FILE_ACTION_ADDED = 1, + FILE_ACTION_REMOVED, + FILE_ACTION_MODIFIED, + FILE_ACTION_RENAMED_OLD_NAME, + FILE_ACTION_RENAMED_NEW_NAME, + FILE_ACTION_ADDED_STREAM, + FILE_ACTION_REMOVED_STREAM, + FILE_ACTION_MODIFIED_STREAM, + FILE_ACTION_REMOVED_BY_DELETE, + FILE_ACTION_ID_NOT_TUNNELLED, + FILE_ACTION_TUNNELLED_ID_COLLISION // = 11 +} +// MinGW: end ntifs.h + +const DWORD + HEAP_NO_SERIALIZE = 0x01, + HEAP_GROWABLE = 0x02, + HEAP_GENERATE_EXCEPTIONS = 0x04, + HEAP_ZERO_MEMORY = 0x08, + HEAP_REALLOC_IN_PLACE_ONLY = 0x10, + HEAP_TAIL_CHECKING_ENABLED = 0x20, + HEAP_FREE_CHECKING_ENABLED = 0x40, + HEAP_DISABLE_COALESCE_ON_FREE = 0x80; + +// These are not documented on MSDN +const HEAP_CREATE_ALIGN_16 = 0; +const HEAP_CREATE_ENABLE_TRACING = 0x020000; +const HEAP_MAXIMUM_TAG = 0x000FFF; +const HEAP_PSEUDO_TAG_FLAG = 0x008000; +const HEAP_TAG_SHIFT = 16; +// ??? +//MACRO #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16))) + +const ACCESS_MASK + KEY_QUERY_VALUE = 0x000001, + KEY_SET_VALUE = 0x000002, + KEY_CREATE_SUB_KEY = 0x000004, + KEY_ENUMERATE_SUB_KEYS = 0x000008, + KEY_NOTIFY = 0x000010, + KEY_CREATE_LINK = 0x000020, + KEY_WRITE = 0x020006, + KEY_EXECUTE = 0x020019, + KEY_READ = 0x020019, + KEY_ALL_ACCESS = 0x0F003F; + +static if (_WIN32_WINNT >= 0x502) { + const ACCESS_MASK + KEY_WOW64_64KEY = 0x000100, + KEY_WOW64_32KEY = 0x000200; +} + +const DWORD + REG_WHOLE_HIVE_VOLATILE = 1, + REG_REFRESH_HIVE = 2, + REG_NO_LAZY_FLUSH = 4; + +const DWORD + REG_OPTION_RESERVED = 0, + REG_OPTION_NON_VOLATILE = 0, + REG_OPTION_VOLATILE = 1, + REG_OPTION_CREATE_LINK = 2, + REG_OPTION_BACKUP_RESTORE = 4, + REG_OPTION_OPEN_LINK = 8, + REG_LEGAL_OPTION = 15; + +const SECURITY_INFORMATION + OWNER_SECURITY_INFORMATION = 0x00000001, + GROUP_SECURITY_INFORMATION = 0x00000002, + DACL_SECURITY_INFORMATION = 0x00000004, + SACL_SECURITY_INFORMATION = 0x00000008, + LABEL_SECURITY_INFORMATION = 0x00000010, + UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000, + UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000, + PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000, + PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000; + +const DWORD MAXIMUM_PROCESSORS = 32; + +// VirtualAlloc(), etc +// ------------------- + +enum : DWORD { + PAGE_NOACCESS = 0x0001, + PAGE_READONLY = 0x0002, + PAGE_READWRITE = 0x0004, + PAGE_WRITECOPY = 0x0008, + PAGE_EXECUTE = 0x0010, + PAGE_EXECUTE_READ = 0x0020, + PAGE_EXECUTE_READWRITE = 0x0040, + PAGE_EXECUTE_WRITECOPY = 0x0080, + PAGE_GUARD = 0x0100, + PAGE_NOCACHE = 0x0200 +} + +enum : DWORD { + MEM_COMMIT = 0x00001000, + MEM_RESERVE = 0x00002000, + MEM_DECOMMIT = 0x00004000, + MEM_RELEASE = 0x00008000, + MEM_FREE = 0x00010000, + MEM_PRIVATE = 0x00020000, + MEM_MAPPED = 0x00040000, + MEM_RESET = 0x00080000, + MEM_TOP_DOWN = 0x00100000, + MEM_WRITE_WATCH = 0x00200000, // MinGW (???): 98/Me + MEM_PHYSICAL = 0x00400000, + MEM_4MB_PAGES = 0x80000000 +} + +// MinGW: also in ddk/ntifs.h +// CreateFileMapping() +const DWORD + SEC_BASED = 0x00200000, + SEC_NO_CHANGE = 0x00400000, + SEC_FILE = 0x00800000, + SEC_IMAGE = 0x01000000, + SEC_VLM = 0x02000000, + SEC_RESERVE = 0x04000000, + SEC_COMMIT = 0x08000000, + SEC_NOCACHE = 0x10000000, + MEM_IMAGE = SEC_IMAGE; +// MinGW: end ntifs.h + +// ??? +const ACCESS_MASK + SECTION_QUERY = 0x000001, + SECTION_MAP_WRITE = 0x000002, + SECTION_MAP_READ = 0x000004, + SECTION_MAP_EXECUTE = 0x000008, + SECTION_EXTEND_SIZE = 0x000010, + SECTION_ALL_ACCESS = 0x0F001F; + +// These are not documented on MSDN +const MESSAGE_RESOURCE_UNICODE = 1; +const RTL_CRITSECT_TYPE = 0; +const RTL_RESOURCE_TYPE = 1; + +// COFF file format +// ---------------- + +// IMAGE_FILE_HEADER.Characteristics +const WORD + IMAGE_FILE_RELOCS_STRIPPED = 0x0001, + IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, + IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004, + IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008, + IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010, + IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, + IMAGE_FILE_BYTES_REVERSED_LO = 0x0080, + IMAGE_FILE_32BIT_MACHINE = 0x0100, + IMAGE_FILE_DEBUG_STRIPPED = 0x0200, + IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400, + IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800, + IMAGE_FILE_SYSTEM = 0x1000, + IMAGE_FILE_DLL = 0x2000, + IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000, + IMAGE_FILE_BYTES_REVERSED_HI = 0x8000; + +// IMAGE_FILE_HEADER.Machine +enum : WORD { + IMAGE_FILE_MACHINE_UNKNOWN = 0x0000, + IMAGE_FILE_MACHINE_I386 = 0x014C, + IMAGE_FILE_MACHINE_R3000 = 0x0162, + IMAGE_FILE_MACHINE_R4000 = 0x0166, + IMAGE_FILE_MACHINE_R10000 = 0x0168, + IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169, + IMAGE_FILE_MACHINE_ALPHA = 0x0184, + IMAGE_FILE_MACHINE_SH3 = 0x01A2, + IMAGE_FILE_MACHINE_SH3DSP = 0x01A3, + IMAGE_FILE_MACHINE_SH4 = 0x01A6, + IMAGE_FILE_MACHINE_SH5 = 0x01A8, + IMAGE_FILE_MACHINE_ARM = 0x01C0, + IMAGE_FILE_MACHINE_THUMB = 0x01C2, + IMAGE_FILE_MACHINE_AM33 = 0x01D3, + IMAGE_FILE_MACHINE_POWERPC = 0x01F0, + IMAGE_FILE_MACHINE_POWERPCFP = 0x01F1, + IMAGE_FILE_MACHINE_IA64 = 0x0200, + IMAGE_FILE_MACHINE_MIPS16 = 0x0266, + IMAGE_FILE_MACHINE_MIPSFPU = 0x0366, + IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466, + IMAGE_FILE_MACHINE_EBC = 0x0EBC, + IMAGE_FILE_MACHINE_AMD64 = 0x8664, + IMAGE_FILE_MACHINE_M32R = 0x9041 +} + +// ??? +enum { + IMAGE_DOS_SIGNATURE = 0x5A4D, + IMAGE_OS2_SIGNATURE = 0x454E, + IMAGE_OS2_SIGNATURE_LE = 0x454C, + IMAGE_VXD_SIGNATURE = 0x454C, + IMAGE_NT_SIGNATURE = 0x4550 +} + +// IMAGE_OPTIONAL_HEADER.Magic +enum : WORD { + IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x010B, + IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x0107, + IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x020B +} + +// IMAGE_OPTIONAL_HEADER.Subsystem +enum : WORD { + IMAGE_SUBSYSTEM_UNKNOWN = 0, + IMAGE_SUBSYSTEM_NATIVE, + IMAGE_SUBSYSTEM_WINDOWS_GUI, + IMAGE_SUBSYSTEM_WINDOWS_CUI, // = 3 + IMAGE_SUBSYSTEM_OS2_CUI = 5, + IMAGE_SUBSYSTEM_POSIX_CUI = 7, + IMAGE_SUBSYSTEM_NATIVE_WINDOWS, + IMAGE_SUBSYSTEM_WINDOWS_CE_GUI, + IMAGE_SUBSYSTEM_EFI_APPLICATION, + IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER, + IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, + IMAGE_SUBSYSTEM_EFI_ROM, + IMAGE_SUBSYSTEM_XBOX, // = 14 + IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 +} + +// IMAGE_OPTIONAL_HEADER.DllCharacteristics +const WORD + IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040, + IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, + IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, + IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200, + IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, + IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800, + IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000, + IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000; + +// ??? +const IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944; + +const size_t + IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16, + IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56, + IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28, + IMAGE_SIZEOF_NT_OPTIONAL_HEADER = 224, + IMAGE_SIZEOF_SHORT_NAME = 8, + IMAGE_SIZEOF_SECTION_HEADER = 40, + IMAGE_SIZEOF_SYMBOL = 18, + IMAGE_SIZEOF_AUX_SYMBOL = 18, + IMAGE_SIZEOF_RELOCATION = 10, + IMAGE_SIZEOF_BASE_RELOCATION = 8, + IMAGE_SIZEOF_LINENUMBER = 6, + IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60, + SIZEOF_RFPO_DATA = 16; + +PIMAGE_SECTION_HEADER IMAGE_FIRST_SECTION(PIMAGE_NT_HEADERS h) { + return cast(PIMAGE_SECTION_HEADER) + (&h.OptionalHeader + h.FileHeader.SizeOfOptionalHeader); +} + +// ImageDirectoryEntryToDataEx() +enum : USHORT { + IMAGE_DIRECTORY_ENTRY_EXPORT = 0, + IMAGE_DIRECTORY_ENTRY_IMPORT, + IMAGE_DIRECTORY_ENTRY_RESOURCE, + IMAGE_DIRECTORY_ENTRY_EXCEPTION, + IMAGE_DIRECTORY_ENTRY_SECURITY, + IMAGE_DIRECTORY_ENTRY_BASERELOC, + IMAGE_DIRECTORY_ENTRY_DEBUG, + IMAGE_DIRECTORY_ENTRY_COPYRIGHT, // = 7 + IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7, + IMAGE_DIRECTORY_ENTRY_GLOBALPTR, + IMAGE_DIRECTORY_ENTRY_TLS, + IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, + IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, + IMAGE_DIRECTORY_ENTRY_IAT, + IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, + IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, // = 14 +} + +// IMAGE_SECTION_HEADER.Characteristics +const DWORD + IMAGE_SCN_TYPE_REG = 0x00000000, + IMAGE_SCN_TYPE_DSECT = 0x00000001, + IMAGE_SCN_TYPE_NOLOAD = 0x00000002, + IMAGE_SCN_TYPE_GROUP = 0x00000004, + IMAGE_SCN_TYPE_NO_PAD = 0x00000008, + IMAGE_SCN_TYPE_COPY = 0x00000010, + IMAGE_SCN_CNT_CODE = 0x00000020, + IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040, + IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, + IMAGE_SCN_LNK_OTHER = 0x00000100, + IMAGE_SCN_LNK_INFO = 0x00000200, + IMAGE_SCN_TYPE_OVER = 0x00000400, + IMAGE_SCN_LNK_REMOVE = 0x00000800, + IMAGE_SCN_LNK_COMDAT = 0x00001000, + IMAGE_SCN_MEM_FARDATA = 0x00008000, + IMAGE_SCN_GPREL = 0x00008000, + IMAGE_SCN_MEM_PURGEABLE = 0x00020000, + IMAGE_SCN_MEM_16BIT = 0x00020000, + IMAGE_SCN_MEM_LOCKED = 0x00040000, + IMAGE_SCN_MEM_PRELOAD = 0x00080000, + IMAGE_SCN_ALIGN_1BYTES = 0x00100000, + IMAGE_SCN_ALIGN_2BYTES = 0x00200000, + IMAGE_SCN_ALIGN_4BYTES = 0x00300000, + IMAGE_SCN_ALIGN_8BYTES = 0x00400000, + IMAGE_SCN_ALIGN_16BYTES = 0x00500000, + IMAGE_SCN_ALIGN_32BYTES = 0x00600000, + IMAGE_SCN_ALIGN_64BYTES = 0x00700000, + IMAGE_SCN_ALIGN_128BYTES = 0x00800000, + IMAGE_SCN_ALIGN_256BYTES = 0x00900000, + IMAGE_SCN_ALIGN_512BYTES = 0x00A00000, + IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000, + IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000, + IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000, + IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000, + IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000, + IMAGE_SCN_MEM_DISCARDABLE = 0x02000000, + IMAGE_SCN_MEM_NOT_CACHED = 0x04000000, + IMAGE_SCN_MEM_NOT_PAGED = 0x08000000, + IMAGE_SCN_MEM_SHARED = 0x10000000, + IMAGE_SCN_MEM_EXECUTE = 0x20000000, + IMAGE_SCN_MEM_READ = 0x40000000, + IMAGE_SCN_MEM_WRITE = 0x80000000; + +/* The following constants are mostlydocumented at + * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/pecoff.doc + * but don't seem to be defined in the HTML docs. + */ +enum : SHORT { + IMAGE_SYM_UNDEFINED = 0, + IMAGE_SYM_ABSOLUTE = -1, + IMAGE_SYM_DEBUG = -2 +} + +enum : ubyte { + IMAGE_SYM_TYPE_NULL, + IMAGE_SYM_TYPE_VOID, + IMAGE_SYM_TYPE_CHAR, + IMAGE_SYM_TYPE_SHORT, + IMAGE_SYM_TYPE_INT, + IMAGE_SYM_TYPE_LONG, + IMAGE_SYM_TYPE_FLOAT, + IMAGE_SYM_TYPE_DOUBLE, + IMAGE_SYM_TYPE_STRUCT, + IMAGE_SYM_TYPE_UNION, + IMAGE_SYM_TYPE_ENUM, + IMAGE_SYM_TYPE_MOE, + IMAGE_SYM_TYPE_BYTE, + IMAGE_SYM_TYPE_WORD, + IMAGE_SYM_TYPE_UINT, + IMAGE_SYM_TYPE_DWORD // = 15 +} +const IMAGE_SYM_TYPE_PCODE = 32768; // ??? + +enum : ubyte { + IMAGE_SYM_DTYPE_NULL, + IMAGE_SYM_DTYPE_POINTER, + IMAGE_SYM_DTYPE_FUNCTION, + IMAGE_SYM_DTYPE_ARRAY +} + +enum : BYTE { + IMAGE_SYM_CLASS_END_OF_FUNCTION = 0xFF, + IMAGE_SYM_CLASS_NULL = 0, + IMAGE_SYM_CLASS_AUTOMATIC, + IMAGE_SYM_CLASS_EXTERNAL, + IMAGE_SYM_CLASS_STATIC, + IMAGE_SYM_CLASS_REGISTER, + IMAGE_SYM_CLASS_EXTERNAL_DEF, + IMAGE_SYM_CLASS_LABEL, + IMAGE_SYM_CLASS_UNDEFINED_LABEL, + IMAGE_SYM_CLASS_MEMBER_OF_STRUCT, + IMAGE_SYM_CLASS_ARGUMENT, + IMAGE_SYM_CLASS_STRUCT_TAG, + IMAGE_SYM_CLASS_MEMBER_OF_UNION, + IMAGE_SYM_CLASS_UNION_TAG, + IMAGE_SYM_CLASS_TYPE_DEFINITION, + IMAGE_SYM_CLASS_UNDEFINED_STATIC, + IMAGE_SYM_CLASS_ENUM_TAG, + IMAGE_SYM_CLASS_MEMBER_OF_ENUM, + IMAGE_SYM_CLASS_REGISTER_PARAM, + IMAGE_SYM_CLASS_BIT_FIELD, // = 18 + IMAGE_SYM_CLASS_FAR_EXTERNAL = 68, + IMAGE_SYM_CLASS_BLOCK = 100, + IMAGE_SYM_CLASS_FUNCTION, + IMAGE_SYM_CLASS_END_OF_STRUCT, + IMAGE_SYM_CLASS_FILE, + IMAGE_SYM_CLASS_SECTION, + IMAGE_SYM_CLASS_WEAK_EXTERNAL,// = 105 + IMAGE_SYM_CLASS_CLR_TOKEN = 107 +} + +enum : BYTE { + IMAGE_COMDAT_SELECT_NODUPLICATES = 1, + IMAGE_COMDAT_SELECT_ANY, + IMAGE_COMDAT_SELECT_SAME_SIZE, + IMAGE_COMDAT_SELECT_EXACT_MATCH, + IMAGE_COMDAT_SELECT_ASSOCIATIVE, + IMAGE_COMDAT_SELECT_LARGEST, + IMAGE_COMDAT_SELECT_NEWEST // = 7 +} + +enum : DWORD { + IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1, + IMAGE_WEAK_EXTERN_SEARCH_LIBRARY, + IMAGE_WEAK_EXTERN_SEARCH_ALIAS +} + +enum : WORD { + IMAGE_REL_I386_ABSOLUTE = 0x0000, + IMAGE_REL_I386_DIR16 = 0x0001, + IMAGE_REL_I386_REL16 = 0x0002, + IMAGE_REL_I386_DIR32 = 0x0006, + IMAGE_REL_I386_DIR32NB = 0x0007, + IMAGE_REL_I386_SEG12 = 0x0009, + IMAGE_REL_I386_SECTION = 0x000A, + IMAGE_REL_I386_SECREL = 0x000B, + IMAGE_REL_I386_TOKEN = 0x000C, + IMAGE_REL_I386_SECREL7 = 0x000D, + IMAGE_REL_I386_REL32 = 0x0014 +} + +enum : WORD { + IMAGE_REL_AMD64_ABSOLUTE = 0x0000, + IMAGE_REL_AMD64_ADDR64 = 0x0001, + IMAGE_REL_AMD64_ADDR32 = 0x0002, + IMAGE_REL_AMD64_ADDR32NB = 0x0003, + IMAGE_REL_AMD64_REL32 = 0x0004, + IMAGE_REL_AMD64_REL32_1 = 0x0005, + IMAGE_REL_AMD64_REL32_2 = 0x0006, + IMAGE_REL_AMD64_REL32_3 = 0x0007, + IMAGE_REL_AMD64_REL32_4 = 0x0008, + IMAGE_REL_AMD64_REL32_5 = 0x0009, + IMAGE_REL_AMD64_SECTION = 0x000A, + IMAGE_REL_AMD64_SECREL = 0x000B, + IMAGE_REL_AMD64_SECREL7 = 0x000C, + IMAGE_REL_AMD64_TOKEN = 0x000D, + IMAGE_REL_AMD64_SREL32 = 0x000E, + IMAGE_REL_AMD64_PAIR = 0x000F, + IMAGE_REL_AMD64_SSPAN32 = 0x0010 +} + +enum : WORD { + IMAGE_REL_IA64_ABSOLUTE = 0x0000, + IMAGE_REL_IA64_IMM14 = 0x0001, + IMAGE_REL_IA64_IMM22 = 0x0002, + IMAGE_REL_IA64_IMM64 = 0x0003, + IMAGE_REL_IA64_DIR32 = 0x0004, + IMAGE_REL_IA64_DIR64 = 0x0005, + IMAGE_REL_IA64_PCREL21B = 0x0006, + IMAGE_REL_IA64_PCREL21M = 0x0007, + IMAGE_REL_IA64_PCREL21F = 0x0008, + IMAGE_REL_IA64_GPREL22 = 0x0009, + IMAGE_REL_IA64_LTOFF22 = 0x000A, + IMAGE_REL_IA64_SECTION = 0x000B, + IMAGE_REL_IA64_SECREL22 = 0x000C, + IMAGE_REL_IA64_SECREL64I = 0x000D, + IMAGE_REL_IA64_SECREL32 = 0x000E, + IMAGE_REL_IA64_DIR32NB = 0x0010, + IMAGE_REL_IA64_SREL14 = 0x0011, + IMAGE_REL_IA64_SREL22 = 0x0012, + IMAGE_REL_IA64_SREL32 = 0x0013, + IMAGE_REL_IA64_UREL32 = 0x0014, + IMAGE_REL_IA64_PCREL60X = 0x0015, + IMAGE_REL_IA64_PCREL60B = 0x0016, + IMAGE_REL_IA64_PCREL60F = 0x0017, + IMAGE_REL_IA64_PCREL60I = 0x0018, + IMAGE_REL_IA64_PCREL60M = 0x0019, + IMAGE_REL_IA64_IMMGPREL64 = 0x001A, + IMAGE_REL_IA64_TOKEN = 0x001B, + IMAGE_REL_IA64_GPREL32 = 0x001C, + IMAGE_REL_IA64_ADDEND = 0x001F +} + +enum : WORD { + IMAGE_REL_SH3_ABSOLUTE = 0x0000, + IMAGE_REL_SH3_DIRECT16 = 0x0001, + IMAGE_REL_SH3_DIRECT32 = 0x0002, + IMAGE_REL_SH3_DIRECT8 = 0x0003, + IMAGE_REL_SH3_DIRECT8_WORD = 0x0004, + IMAGE_REL_SH3_DIRECT8_LONG = 0x0005, + IMAGE_REL_SH3_DIRECT4 = 0x0006, + IMAGE_REL_SH3_DIRECT4_WORD = 0x0007, + IMAGE_REL_SH3_DIRECT4_LONG = 0x0008, + IMAGE_REL_SH3_PCREL8_WORD = 0x0009, + IMAGE_REL_SH3_PCREL8_LONG = 0x000A, + IMAGE_REL_SH3_PCREL12_WORD = 0x000B, + IMAGE_REL_SH3_STARTOF_SECTION = 0x000C, + IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D, + IMAGE_REL_SH3_SECTION = 0x000E, + IMAGE_REL_SH3_SECREL = 0x000F, + IMAGE_REL_SH3_DIRECT32_NB = 0x0010, + IMAGE_REL_SH3_GPREL4_LONG = 0x0011, + IMAGE_REL_SH3_TOKEN = 0x0012, + IMAGE_REL_SHM_PCRELPT = 0x0013, + IMAGE_REL_SHM_REFLO = 0x0014, + IMAGE_REL_SHM_REFHALF = 0x0015, + IMAGE_REL_SHM_RELLO = 0x0016, + IMAGE_REL_SHM_RELHALF = 0x0017, + IMAGE_REL_SHM_PAIR = 0x0018, + IMAGE_REL_SHM_NOMODE = 0x8000 +} + +enum : WORD { + IMAGE_REL_M32R_ABSOLUTE = 0x0000, + IMAGE_REL_M32R_ADDR32 = 0x0001, + IMAGE_REL_M32R_ADDR32NB = 0x0002, + IMAGE_REL_M32R_ADDR24 = 0x0003, + IMAGE_REL_M32R_GPREL16 = 0x0004, + IMAGE_REL_M32R_PCREL24 = 0x0005, + IMAGE_REL_M32R_PCREL16 = 0x0006, + IMAGE_REL_M32R_PCREL8 = 0x0007, + IMAGE_REL_M32R_REFHALF = 0x0008, + IMAGE_REL_M32R_REFHI = 0x0009, + IMAGE_REL_M32R_REFLO = 0x000A, + IMAGE_REL_M32R_PAIR = 0x000B, + IMAGE_REL_M32R_SECTION = 0x000C, + IMAGE_REL_M32R_SECREL = 0x000D, + IMAGE_REL_M32R_TOKEN = 0x000E +} + +enum : WORD { + IMAGE_REL_MIPS_ABSOLUTE = 0x0000, + IMAGE_REL_MIPS_REFHALF = 0x0001, + IMAGE_REL_MIPS_REFWORD = 0x0002, + IMAGE_REL_MIPS_JMPADDR = 0x0003, + IMAGE_REL_MIPS_REFHI = 0x0004, + IMAGE_REL_MIPS_REFLO = 0x0005, + IMAGE_REL_MIPS_GPREL = 0x0006, + IMAGE_REL_MIPS_LITERAL = 0x0007, + IMAGE_REL_MIPS_SECTION = 0x000A, + IMAGE_REL_MIPS_SECREL = 0x000B, + IMAGE_REL_MIPS_SECRELLO = 0x000C, + IMAGE_REL_MIPS_SECRELHI = 0x000D, + IMAGE_REL_MIPS_JMPADDR16 = 0x0010, + IMAGE_REL_MIPS_REFWORDNB = 0x0022, + IMAGE_REL_MIPS_PAIR = 0x0025 +} + + +enum : WORD { + IMAGE_REL_ALPHA_ABSOLUTE, + IMAGE_REL_ALPHA_REFLONG, + IMAGE_REL_ALPHA_REFQUAD, + IMAGE_REL_ALPHA_GPREL32, + IMAGE_REL_ALPHA_LITERAL, + IMAGE_REL_ALPHA_LITUSE, + IMAGE_REL_ALPHA_GPDISP, + IMAGE_REL_ALPHA_BRADDR, + IMAGE_REL_ALPHA_HINT, + IMAGE_REL_ALPHA_INLINE_REFLONG, + IMAGE_REL_ALPHA_REFHI, + IMAGE_REL_ALPHA_REFLO, + IMAGE_REL_ALPHA_PAIR, + IMAGE_REL_ALPHA_MATCH, + IMAGE_REL_ALPHA_SECTION, + IMAGE_REL_ALPHA_SECREL, + IMAGE_REL_ALPHA_REFLONGNB, + IMAGE_REL_ALPHA_SECRELLO, + IMAGE_REL_ALPHA_SECRELHI // = 18 +} + +enum : WORD { + IMAGE_REL_PPC_ABSOLUTE, + IMAGE_REL_PPC_ADDR64, + IMAGE_REL_PPC_ADDR32, + IMAGE_REL_PPC_ADDR24, + IMAGE_REL_PPC_ADDR16, + IMAGE_REL_PPC_ADDR14, + IMAGE_REL_PPC_REL24, + IMAGE_REL_PPC_REL14, + IMAGE_REL_PPC_TOCREL16, + IMAGE_REL_PPC_TOCREL14, + IMAGE_REL_PPC_ADDR32NB, + IMAGE_REL_PPC_SECREL, + IMAGE_REL_PPC_SECTION, + IMAGE_REL_PPC_IFGLUE, + IMAGE_REL_PPC_IMGLUE, + IMAGE_REL_PPC_SECREL16, + IMAGE_REL_PPC_REFHI, + IMAGE_REL_PPC_REFLO, + IMAGE_REL_PPC_PAIR // = 18 +} + +// ??? +const IMAGE_REL_PPC_TYPEMASK = 0x00FF; +const IMAGE_REL_PPC_NEG = 0x0100; +const IMAGE_REL_PPC_BRTAKEN = 0x0200; +const IMAGE_REL_PPC_BRNTAKEN = 0x0400; +const IMAGE_REL_PPC_TOCDEFN = 0x0800; + +enum { + IMAGE_REL_BASED_ABSOLUTE, + IMAGE_REL_BASED_HIGH, + IMAGE_REL_BASED_LOW, + IMAGE_REL_BASED_HIGHLOW, + IMAGE_REL_BASED_HIGHADJ, + IMAGE_REL_BASED_MIPS_JMPADDR +} +// End of constants documented in pecoff.doc + +const size_t IMAGE_ARCHIVE_START_SIZE = 8; + +const TCHAR[] + IMAGE_ARCHIVE_START = "!\n", + IMAGE_ARCHIVE_END = "`\n", + IMAGE_ARCHIVE_PAD = "\n", + IMAGE_ARCHIVE_LINKER_MEMBER = "/ ", + IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; + +const IMAGE_ORDINAL_FLAG32 = 0x80000000; + +ulong IMAGE_ORDINAL64(ulong Ordinal) { return Ordinal & 0xFFFF; } +uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; } + +bool IMAGE_SNAP_BY_ORDINAL32(uint Ordinal) { + return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; +} + +const ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; + +bool IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal) { + return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; +} + +// ??? +const IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000; +const IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000; + +enum : DWORD { + IMAGE_DEBUG_TYPE_UNKNOWN, + IMAGE_DEBUG_TYPE_COFF, + IMAGE_DEBUG_TYPE_CODEVIEW, + IMAGE_DEBUG_TYPE_FPO, + IMAGE_DEBUG_TYPE_MISC, + IMAGE_DEBUG_TYPE_EXCEPTION, + IMAGE_DEBUG_TYPE_FIXUP, + IMAGE_DEBUG_TYPE_OMAP_TO_SRC, + IMAGE_DEBUG_TYPE_OMAP_FROM_SRC, + IMAGE_DEBUG_TYPE_BORLAND // = 9 +} + +enum : ubyte { + FRAME_FPO, + FRAME_TRAP, + FRAME_TSS, + FRAME_NONFPO +} + +// ??? +const IMAGE_DEBUG_MISC_EXENAME = 1; + +// ??? +const N_BTMASK = 0x000F; +const N_TMASK = 0x0030; +const N_TMASK1 = 0x00C0; +const N_TMASK2 = 0x00F0; +const N_BTSHFT = 4; +const N_TSHIFT = 2; + +const int + IS_TEXT_UNICODE_ASCII16 = 0x0001, + IS_TEXT_UNICODE_STATISTICS = 0x0002, + IS_TEXT_UNICODE_CONTROLS = 0x0004, + IS_TEXT_UNICODE_SIGNATURE = 0x0008, + IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010, + IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020, + IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040, + IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080, + IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100, + IS_TEXT_UNICODE_ODD_LENGTH = 0x0200, + IS_TEXT_UNICODE_NULL_BYTES = 0x1000, + IS_TEXT_UNICODE_UNICODE_MASK = 0x000F, + IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0, + IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00, + IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000; + +const DWORD + SERVICE_KERNEL_DRIVER = 0x0001, + SERVICE_FILE_SYSTEM_DRIVER = 0x0002, + SERVICE_ADAPTER = 0x0004, + SERVICE_RECOGNIZER_DRIVER = 0x0008, + SERVICE_WIN32_OWN_PROCESS = 0x0010, + SERVICE_WIN32_SHARE_PROCESS = 0x0020, + SERVICE_INTERACTIVE_PROCESS = 0x0100, + SERVICE_DRIVER = 0x000B, + SERVICE_WIN32 = 0x0030, + SERVICE_TYPE_ALL = 0x013F; + +enum : DWORD { + SERVICE_BOOT_START = 0, + SERVICE_SYSTEM_START = 1, + SERVICE_AUTO_START = 2, + SERVICE_DEMAND_START = 3, + SERVICE_DISABLED = 4 +} + +enum : DWORD { + SERVICE_ERROR_IGNORE = 0, + SERVICE_ERROR_NORMAL = 1, + SERVICE_ERROR_SEVERE = 2, + SERVICE_ERROR_CRITICAL = 3 +} + + +const uint + SE_OWNER_DEFAULTED = 0x0001, + SE_GROUP_DEFAULTED = 0x0002, + SE_DACL_PRESENT = 0x0004, + SE_DACL_DEFAULTED = 0x0008, + SE_SACL_PRESENT = 0x0010, + SE_SACL_DEFAULTED = 0x0020, + SE_DACL_AUTO_INHERIT_REQ = 0x0100, + SE_SACL_AUTO_INHERIT_REQ = 0x0200, + SE_DACL_AUTO_INHERITED = 0x0400, + SE_SACL_AUTO_INHERITED = 0x0800, + SE_DACL_PROTECTED = 0x1000, + SE_SACL_PROTECTED = 0x2000, + SE_SELF_RELATIVE = 0x8000; + +enum SECURITY_IMPERSONATION_LEVEL { + SecurityAnonymous, + SecurityIdentification, + SecurityImpersonation, + SecurityDelegation +} +alias SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; + +alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE; +alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; + +const size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; + +const DWORD + SECURITY_DESCRIPTOR_REVISION = 1, + SECURITY_DESCRIPTOR_REVISION1 = 1; + +const DWORD + SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, + SE_PRIVILEGE_ENABLED = 0x00000002, + SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; + +const DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; + +const SECURITY_IMPERSONATION_LEVEL + SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, + DEFAULT_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; + +const BOOLEAN + SECURITY_DYNAMIC_TRACKING = true, + SECURITY_STATIC_TRACKING = false; + +// also in ddk/ntifs.h +const DWORD + TOKEN_ASSIGN_PRIMARY = 0x0001, + TOKEN_DUPLICATE = 0x0002, + TOKEN_IMPERSONATE = 0x0004, + TOKEN_QUERY = 0x0008, + TOKEN_QUERY_SOURCE = 0x0010, + TOKEN_ADJUST_PRIVILEGES = 0x0020, + TOKEN_ADJUST_GROUPS = 0x0040, + TOKEN_ADJUST_DEFAULT = 0x0080, + + TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED + | TOKEN_ASSIGN_PRIMARY + | TOKEN_DUPLICATE + | TOKEN_IMPERSONATE + | TOKEN_QUERY + | TOKEN_QUERY_SOURCE + | TOKEN_ADJUST_PRIVILEGES + | TOKEN_ADJUST_GROUPS + | TOKEN_ADJUST_DEFAULT, + TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY, + TOKEN_WRITE = STANDARD_RIGHTS_WRITE + | TOKEN_ADJUST_PRIVILEGES + | TOKEN_ADJUST_GROUPS + | TOKEN_ADJUST_DEFAULT, + TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE; + +const size_t TOKEN_SOURCE_LENGTH = 8; +// end ddk/ntifs.h + +enum : DWORD { + DLL_PROCESS_DETACH, + DLL_PROCESS_ATTACH, + DLL_THREAD_ATTACH, + DLL_THREAD_DETACH +} + +enum : DWORD { + DBG_CONTINUE = 0x00010002, + DBG_TERMINATE_THREAD = 0x40010003, + DBG_TERMINATE_PROCESS = 0x40010004, + DBG_CONTROL_C = 0x40010005, + DBG_CONTROL_BREAK = 0x40010008, + DBG_EXCEPTION_NOT_HANDLED = 0x80010001 +} + +enum : DWORD { + TAPE_ABSOLUTE_POSITION, + TAPE_LOGICAL_POSITION, + TAPE_PSEUDO_LOGICAL_POSITION +} + +enum : DWORD { + TAPE_REWIND, + TAPE_ABSOLUTE_BLOCK, + TAPE_LOGICAL_BLOCK, + TAPE_PSEUDO_LOGICAL_BLOCK, + TAPE_SPACE_END_OF_DATA, + TAPE_SPACE_RELATIVE_BLOCKS, + TAPE_SPACE_FILEMARKS, + TAPE_SPACE_SEQUENTIAL_FMKS, + TAPE_SPACE_SETMARKS, + TAPE_SPACE_SEQUENTIAL_SMKS +} + +const DWORD + TAPE_DRIVE_FIXED = 0x00000001, + TAPE_DRIVE_SELECT = 0x00000002, + TAPE_DRIVE_INITIATOR = 0x00000004, + TAPE_DRIVE_ERASE_SHORT = 0x00000010, + TAPE_DRIVE_ERASE_LONG = 0x00000020, + TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040, + TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080, + TAPE_DRIVE_TAPE_CAPACITY = 0x00000100, + TAPE_DRIVE_TAPE_REMAINING = 0x00000200, + TAPE_DRIVE_FIXED_BLOCK = 0x00000400, + TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800, + TAPE_DRIVE_WRITE_PROTECT = 0x00001000, + TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000, + TAPE_DRIVE_ECC = 0x00010000, + TAPE_DRIVE_COMPRESSION = 0x00020000, + TAPE_DRIVE_PADDING = 0x00040000, + TAPE_DRIVE_REPORT_SMKS = 0x00080000, + TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000, + TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000, + TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000, + TAPE_DRIVE_EJECT_MEDIA = 0x01000000, + TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000, + TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000, + TAPE_DRIVE_RESERVED_BIT = 0x80000000; + +const DWORD + TAPE_DRIVE_LOAD_UNLOAD = 0x80000001, + TAPE_DRIVE_TENSION = 0x80000002, + TAPE_DRIVE_LOCK_UNLOCK = 0x80000004, + TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008, + TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010, + TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020, + TAPE_DRIVE_TENSION_IMMED = 0x80000040, + TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080, + TAPE_DRIVE_SET_ECC = 0x80000100, + TAPE_DRIVE_SET_COMPRESSION = 0x80000200, + TAPE_DRIVE_SET_PADDING = 0x80000400, + TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800, + TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000, + TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000, + TAPE_DRIVE_LOGICAL_BLK = 0x80004000, + TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000, + TAPE_DRIVE_END_OF_DATA = 0x80010000, + TAPE_DRIVE_RELATIVE_BLKS = 0x80020000, + TAPE_DRIVE_FILEMARKS = 0x80040000, + TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000, + TAPE_DRIVE_SETMARKS = 0x80100000, + TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000, + TAPE_DRIVE_REVERSE_POSITION = 0x80400000, + TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000, + TAPE_DRIVE_WRITE_SETMARKS = 0x81000000, + TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000, + TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000, + TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000, + TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000, + TAPE_DRIVE_FORMAT = 0xA0000000, + TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000, + TAPE_DRIVE_HIGH_FEATURES = 0x80000000; + +enum : DWORD { + TAPE_FIXED_PARTITIONS = 0, + TAPE_SELECT_PARTITIONS = 1, + TAPE_INITIATOR_PARTITIONS = 2 +} + +enum : DWORD { + TAPE_SETMARKS, + TAPE_FILEMARKS, + TAPE_SHORT_FILEMARKS, + TAPE_LONG_FILEMARKS +} + +enum : DWORD { + TAPE_ERASE_SHORT, + TAPE_ERASE_LONG +} + +enum : DWORD { + TAPE_LOAD, + TAPE_UNLOAD, + TAPE_TENSION, + TAPE_LOCK, + TAPE_UNLOCK, + TAPE_FORMAT +} + +enum : ULONG32 { + VER_PLATFORM_WIN32s, + VER_PLATFORM_WIN32_WINDOWS, + VER_PLATFORM_WIN32_NT +} + +enum : UCHAR { + VER_NT_WORKSTATION = 1, + VER_NT_DOMAIN_CONTROLLER, + VER_NT_SERVER +} + +const USHORT + VER_SUITE_SMALLBUSINESS = 0x0001, + VER_SUITE_ENTERPRISE = 0x0002, + VER_SUITE_BACKOFFICE = 0x0004, + VER_SUITE_TERMINAL = 0x0010, + VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x0020, + VER_SUITE_EMBEDDEDNT = 0x0040, + VER_SUITE_DATACENTER = 0x0080, + VER_SUITE_SINGLEUSERTS = 0x0100, + VER_SUITE_PERSONAL = 0x0200, + VER_SUITE_BLADE = 0x0400, + VER_SUITE_STORAGE_SERVER = 0x2000, + VER_SUITE_COMPUTE_SERVER = 0x4000; + +const ULONG + WT_EXECUTEDEFAULT = 0x00000000, + WT_EXECUTEINIOTHREAD = 0x00000001, + WT_EXECUTEINWAITTHREAD = 0x00000004, + WT_EXECUTEONLYONCE = 0x00000008, + WT_EXECUTELONGFUNCTION = 0x00000010, + WT_EXECUTEINTIMERTHREAD = 0x00000020, + WT_EXECUTEINPERSISTENTTHREAD = 0x00000080, + WT_TRANSFER_IMPERSONATION = 0x00000100; + +static if (_WIN32_WINNT >= 0x500) { + const DWORD + VER_MINORVERSION = 0x01, + VER_MAJORVERSION = 0x02, + VER_BUILDNUMBER = 0x04, + VER_PLATFORMID = 0x08, + VER_SERVICEPACKMINOR = 0x10, + VER_SERVICEPACKMAJOR = 0x20, + VER_SUITENAME = 0x40, + VER_PRODUCT_TYPE = 0x80; + + enum : DWORD { + VER_EQUAL = 1, + VER_GREATER, + VER_GREATER_EQUAL, + VER_LESS, + VER_LESS_EQUAL, + VER_AND, + VER_OR // = 7 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum : ULONG { + ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1, + ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7 + ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9 + } +} + +// Macros +BYTE BTYPE(BYTE x) { return cast(BYTE) (x & N_BTMASK); } +bool ISPTR(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); } +bool ISFCN(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } +bool ISARY(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } +bool ISTAG(uint x) { + return x == IMAGE_SYM_CLASS_STRUCT_TAG + || x == IMAGE_SYM_CLASS_UNION_TAG + || x == IMAGE_SYM_CLASS_ENUM_TAG; +} +uint INCREF(uint x) { + return ((x & ~N_BTMASK) << N_TSHIFT) | (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT) + | (x & N_BTMASK); +} +uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK) | (x & N_BTMASK); } + +const DWORD TLS_MINIMUM_AVAILABLE = 64; + +const ULONG + IO_REPARSE_TAG_RESERVED_ZERO = 0, + IO_REPARSE_TAG_RESERVED_ONE = 1, + IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE, + IO_REPARSE_TAG_SYMBOLIC_LINK = IO_REPARSE_TAG_RESERVED_ZERO, + IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003, + IO_REPARSE_TAG_SYMLINK = 0xA000000C, + IO_REPARSE_TAG_VALID_VALUES = 0xE000FFFF; + +/* Although these are semantically boolean, they are documented and + * implemented to return ULONG; this behaviour is preserved for compatibility + */ +ULONG IsReparseTagMicrosoft(ULONG x) { return x & 0x80000000; } +ULONG IsReparseTagHighLatency(ULONG x) { return x & 0x40000000; } +ULONG IsReparseTagNameSurrogate(ULONG x) { return x & 0x20000000; } + +bool IsReparseTagValid(ULONG x) { + return !(x & ~IO_REPARSE_TAG_VALID_VALUES) && (x > IO_REPARSE_TAG_RESERVED_RANGE); +} + +// Doesn't seem to make sense, but anyway.... +ULONG WT_SET_MAX_THREADPOOL_THREADS(ref ULONG Flags, ushort Limit) { + return Flags |= Limit << 16; +} + +import win32.basetyps; +/* also in win32.basetyps +struct GUID { + uint Data1; + ushort Data2; + ushort Data3; + ubyte Data4[8]; +} +alias GUID* REFGUID, LPGUID; +*/ + +struct GENERIC_MAPPING { + ACCESS_MASK GenericRead; + ACCESS_MASK GenericWrite; + ACCESS_MASK GenericExecute; + ACCESS_MASK GenericAll; +} +alias GENERIC_MAPPING* PGENERIC_MAPPING; + +struct ACE_HEADER { + BYTE AceType; + BYTE AceFlags; + WORD AceSize; +} +alias ACE_HEADER* PACE_HEADER; + +struct ACCESS_ALLOWED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; + +struct ACCESS_DENIED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; + +struct SYSTEM_AUDIT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; + +struct SYSTEM_ALARM_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE; + +struct ACCESS_ALLOWED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias ACCESS_ALLOWED_OBJECT_ACE* PACCESS_ALLOWED_OBJECT_ACE; + +struct ACCESS_DENIED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias ACCESS_DENIED_OBJECT_ACE* PACCESS_DENIED_OBJECT_ACE; + +struct SYSTEM_AUDIT_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias SYSTEM_AUDIT_OBJECT_ACE* PSYSTEM_AUDIT_OBJECT_ACE; + +struct SYSTEM_ALARM_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; + +struct ACL { + BYTE AclRevision; + BYTE Sbz1; + WORD AclSize; + WORD AceCount; + WORD Sbz2; +} +alias ACL* PACL; + +struct ACL_REVISION_INFORMATION { + DWORD AclRevision; +} + +struct ACL_SIZE_INFORMATION { + DWORD AceCount; + DWORD AclBytesInUse; + DWORD AclBytesFree; +} + +version (X86) { + // ??? + const SIZE_OF_80387_REGISTERS = 80; + const CONTEXT_i386 = 0x010000; + const CONTEXT_i486 = 0x010000; + const CONTEXT_CONTROL = CONTEXT_i386 | 0x01; + const CONTEXT_INTEGER = CONTEXT_i386 | 0x02; + const CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04; + const CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08; + const CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; + const CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; + const CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; + const MAXIMUM_SUPPORTED_EXTENSION = 512; + + struct FLOATING_SAVE_AREA { + DWORD ControlWord; + DWORD StatusWord; + DWORD TagWord; + DWORD ErrorOffset; + DWORD ErrorSelector; + DWORD DataOffset; + DWORD DataSelector; + BYTE[80] RegisterArea; + DWORD Cr0NpxState; + } + + struct CONTEXT { + DWORD ContextFlags; + DWORD Dr0; + DWORD Dr1; + DWORD Dr2; + DWORD Dr3; + DWORD Dr6; + DWORD Dr7; + FLOATING_SAVE_AREA FloatSave; + DWORD SegGs; + DWORD SegFs; + DWORD SegEs; + DWORD SegDs; + DWORD Edi; + DWORD Esi; + DWORD Ebx; + DWORD Edx; + DWORD Ecx; + DWORD Eax; + DWORD Ebp; + DWORD Eip; + DWORD SegCs; + DWORD EFlags; + DWORD Esp; + DWORD SegSs; + BYTE[MAXIMUM_SUPPORTED_EXTENSION] ExtendedRegisters; + } + +} else version(X86_64) +{ + const CONTEXT_AMD64 = 0x100000; + + const CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L); + const CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L); + const CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L); + const CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L); + const CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L); + + const CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT); + const CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS); + + const CONTEXT_EXCEPTION_ACTIVE = 0x8000000; + const CONTEXT_SERVICE_ACTIVE = 0x10000000; + const CONTEXT_EXCEPTION_REQUEST = 0x40000000; + const CONTEXT_EXCEPTION_REPORTING = 0x80000000; + + const INITIAL_MXCSR = 0x1f80; + const INITIAL_FPCSR = 0x027f; + + align(16) struct M128A + { + ULONGLONG Low; + LONGLONG High; + } + alias M128A* PM128A; + + struct XMM_SAVE_AREA32 + { + WORD ControlWord; + WORD StatusWord; + BYTE TagWord; + BYTE Reserved1; + WORD ErrorOpcode; + DWORD ErrorOffset; + WORD ErrorSelector; + WORD Reserved2; + DWORD DataOffset; + WORD DataSelector; + WORD Reserved3; + DWORD MxCsr; + DWORD MxCsr_Mask; + M128A[8] FloatRegisters; + M128A[16] XmmRegisters; + BYTE[96] Reserved4; + } + alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32; + const LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof; + + align(16) struct CONTEXT + { + DWORD64 P1Home; + DWORD64 P2Home; + DWORD64 P3Home; + DWORD64 P4Home; + DWORD64 P5Home; + DWORD64 P6Home; + DWORD ContextFlags; + DWORD MxCsr; + WORD SegCs; + WORD SegDs; + WORD SegEs; + WORD SegFs; + WORD SegGs; + WORD SegSs; + DWORD EFlags; + DWORD64 Dr0; + DWORD64 Dr1; + DWORD64 Dr2; + DWORD64 Dr3; + DWORD64 Dr6; + DWORD64 Dr7; + DWORD64 Rax; + DWORD64 Rcx; + DWORD64 Rdx; + DWORD64 Rbx; + DWORD64 Rsp; + DWORD64 Rbp; + DWORD64 Rsi; + DWORD64 Rdi; + DWORD64 R8; + DWORD64 R9; + DWORD64 R10; + DWORD64 R11; + DWORD64 R12; + DWORD64 R13; + DWORD64 R14; + DWORD64 R15; + DWORD64 Rip; + union + { + XMM_SAVE_AREA32 FltSave; + XMM_SAVE_AREA32 FloatSave; + struct + { + M128A[2] Header; + M128A[8] Legacy; + M128A Xmm0; + M128A Xmm1; + M128A Xmm2; + M128A Xmm3; + M128A Xmm4; + M128A Xmm5; + M128A Xmm6; + M128A Xmm7; + M128A Xmm8; + M128A Xmm9; + M128A Xmm10; + M128A Xmm11; + M128A Xmm12; + M128A Xmm13; + M128A Xmm14; + M128A Xmm15; + }; + }; + M128A[26] VectorRegister; + DWORD64 VectorControl; + DWORD64 DebugControl; + DWORD64 LastBranchToRip; + DWORD64 LastBranchFromRip; + DWORD64 LastExceptionToRip; + DWORD64 LastExceptionFromRip; + } + +} else { + static assert(false, "Unsupported CPU"); + // Versions for PowerPC, Alpha, SHX, and MIPS removed. +} + +alias CONTEXT* PCONTEXT, LPCONTEXT; + +struct EXCEPTION_RECORD { + DWORD ExceptionCode; + DWORD ExceptionFlags; + EXCEPTION_RECORD* ExceptionRecord; + PVOID ExceptionAddress; + DWORD NumberParameters; + DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; +} +alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; + +struct EXCEPTION_POINTERS { + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; +} +alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS, LPEXCEPTION_POINTERS; + +union LARGE_INTEGER { + struct { + uint LowPart; + int HighPart; + } + long QuadPart; +} +alias LARGE_INTEGER* PLARGE_INTEGER; + +union ULARGE_INTEGER { + struct { + uint LowPart; + uint HighPart; + } + ulong QuadPart; +} +alias ULARGE_INTEGER* PULARGE_INTEGER; + +alias LARGE_INTEGER LUID; +alias LUID* PLUID; + +const LUID SYSTEM_LUID = { QuadPart:999 }; + +align(4) struct LUID_AND_ATTRIBUTES { + LUID Luid; + DWORD Attributes; +} +alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; + +struct PRIVILEGE_SET { + DWORD PrivilegeCount; + DWORD Control; + LUID_AND_ATTRIBUTES _Privilege; + + LUID_AND_ATTRIBUTES* Privilege() { return &_Privilege; } +} +alias PRIVILEGE_SET* PPRIVILEGE_SET; + +struct SECURITY_ATTRIBUTES { + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; +} +alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; + +struct SECURITY_QUALITY_OF_SERVICE { + DWORD Length; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; + BOOLEAN EffectiveOnly; +} +alias SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE; + +alias PVOID PACCESS_TOKEN; + +struct SE_IMPERSONATION_STATE { + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL Level; +} +alias SE_IMPERSONATION_STATE* PSE_IMPERSONATION_STATE; + +struct SID_IDENTIFIER_AUTHORITY { + BYTE[6] Value; +} +alias SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY, LPSID_IDENTIFIER_AUTHORITY; + +alias PVOID PSID; + +struct SID { + BYTE Revision; + BYTE SubAuthorityCount; + SID_IDENTIFIER_AUTHORITY IdentifierAuthority; + DWORD _SubAuthority; + + DWORD* SubAuthority() { return &_SubAuthority; } +} +alias SID* PISID; + +struct SID_AND_ATTRIBUTES { + PSID Sid; + DWORD Attributes; +} +alias SID_AND_ATTRIBUTES* PSID_AND_ATTRIBUTES; + +struct TOKEN_SOURCE { + CHAR[TOKEN_SOURCE_LENGTH] SourceName; + LUID SourceIdentifier; +} +alias TOKEN_SOURCE* PTOKEN_SOURCE; + +struct TOKEN_CONTROL { + LUID TokenId; + LUID AuthenticationId; + LUID ModifiedId; + TOKEN_SOURCE TokenSource; +} +alias TOKEN_CONTROL* PTOKEN_CONTROL; + +struct TOKEN_DEFAULT_DACL { + PACL DefaultDacl; +} +alias TOKEN_DEFAULT_DACL* PTOKEN_DEFAULT_DACL; + +struct TOKEN_GROUPS { + DWORD GroupCount; + SID_AND_ATTRIBUTES _Groups; + + SID_AND_ATTRIBUTES* Groups() { return &_Groups; } +} +alias TOKEN_GROUPS* PTOKEN_GROUPS, LPTOKEN_GROUPS; + +struct TOKEN_OWNER { + PSID Owner; +} +alias TOKEN_OWNER* PTOKEN_OWNER; + +struct TOKEN_PRIMARY_GROUP { + PSID PrimaryGroup; +} +alias TOKEN_PRIMARY_GROUP* PTOKEN_PRIMARY_GROUP; + +struct TOKEN_PRIVILEGES { + DWORD PrivilegeCount; + LUID_AND_ATTRIBUTES _Privileges; + + LUID_AND_ATTRIBUTES* Privileges() { return &_Privileges; } +} +alias TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES, LPTOKEN_PRIVILEGES; + +enum TOKEN_TYPE { + TokenPrimary = 1, + TokenImpersonation +} +alias TOKEN_TYPE* PTOKEN_TYPE; + +struct TOKEN_STATISTICS { + LUID TokenId; + LUID AuthenticationId; + LARGE_INTEGER ExpirationTime; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + DWORD DynamicCharged; + DWORD DynamicAvailable; + DWORD GroupCount; + DWORD PrivilegeCount; + LUID ModifiedId; +} +alias TOKEN_STATISTICS* PTOKEN_STATISTICS; + +struct TOKEN_USER { + SID_AND_ATTRIBUTES User; +} +alias TOKEN_USER* PTOKEN_USER; + +alias DWORD SECURITY_INFORMATION; +alias SECURITY_INFORMATION* PSECURITY_INFORMATION; +alias WORD SECURITY_DESCRIPTOR_CONTROL; +alias SECURITY_DESCRIPTOR_CONTROL* PSECURITY_DESCRIPTOR_CONTROL; + +struct SECURITY_DESCRIPTOR { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PSID Owner; + PSID Group; + PACL Sacl; + PACL Dacl; +} +alias SECURITY_DESCRIPTOR* PSECURITY_DESCRIPTOR, PISECURITY_DESCRIPTOR; + +enum TOKEN_INFORMATION_CLASS { + TokenUser = 1, + TokenGroups, + TokenPrivileges, + TokenOwner, + TokenPrimaryGroup, + TokenDefaultDacl, + TokenSource, + TokenType, + TokenImpersonationLevel, + TokenStatistics, + TokenRestrictedSids, + TokenSessionId, + TokenGroupsAndPrivileges, + TokenSessionReference, + TokenSandBoxInert, + TokenAuditPolicy, + TokenOrigin +} + +enum SID_NAME_USE { + SidTypeUser = 1, + SidTypeGroup, + SidTypeDomain, + SidTypeAlias, + SidTypeWellKnownGroup, + SidTypeDeletedAccount, + SidTypeInvalid, + SidTypeUnknown, + SidTypeComputer +} +alias SID_NAME_USE* PSID_NAME_USE; + +struct QUOTA_LIMITS { + SIZE_T PagedPoolLimit; + SIZE_T NonPagedPoolLimit; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + SIZE_T PagefileLimit; + LARGE_INTEGER TimeLimit; +} +alias QUOTA_LIMITS* PQUOTA_LIMITS; + +struct IO_COUNTERS { + ULONGLONG ReadOperationCount; + ULONGLONG WriteOperationCount; + ULONGLONG OtherOperationCount; + ULONGLONG ReadTransferCount; + ULONGLONG WriteTransferCount; + ULONGLONG OtherTransferCount; +} +alias IO_COUNTERS* PIO_COUNTERS; + +struct FILE_NOTIFY_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + DWORD FileNameLength; + WCHAR _FileName; + + WCHAR* FileName() { return &_FileName; } +} +alias FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; + +struct TAPE_ERASE { + DWORD Type; + BOOLEAN Immediate; +} +alias TAPE_ERASE* PTAPE_ERASE; + +struct TAPE_GET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + DWORD DefaultBlockSize; + DWORD MaximumBlockSize; + DWORD MinimumBlockSize; + DWORD MaximumPartitionCount; + DWORD FeaturesLow; + DWORD FeaturesHigh; + DWORD EOTWarningZoneSize; +} +alias TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; + +struct TAPE_GET_MEDIA_PARAMETERS { + LARGE_INTEGER Capacity; + LARGE_INTEGER Remaining; + DWORD BlockSize; + DWORD PartitionCount; + BOOLEAN WriteProtected; +} +alias TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; + +struct TAPE_GET_POSITION { + ULONG Type; + ULONG Partition; + ULONG OffsetLow; + ULONG OffsetHigh; +} +alias TAPE_GET_POSITION* PTAPE_GET_POSITION; + +struct TAPE_PREPARE { + DWORD Operation; + BOOLEAN Immediate; +} +alias TAPE_PREPARE* PTAPE_PREPARE; + +struct TAPE_SET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + ULONG EOTWarningZoneSize; +} +alias TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; + +struct TAPE_SET_MEDIA_PARAMETERS { + ULONG BlockSize; +} +alias TAPE_SET_MEDIA_PARAMETERS* PTAPE_SET_MEDIA_PARAMETERS; + +struct TAPE_SET_POSITION { + DWORD Method; + DWORD Partition; + LARGE_INTEGER Offset; + BOOLEAN Immediate; +} +alias TAPE_SET_POSITION* PTAPE_SET_POSITION; + +struct TAPE_WRITE_MARKS { + DWORD Type; + DWORD Count; + BOOLEAN Immediate; +} +alias TAPE_WRITE_MARKS* PTAPE_WRITE_MARKS; + +struct TAPE_CREATE_PARTITION { + DWORD Method; + DWORD Count; + DWORD Size; +} +alias TAPE_CREATE_PARTITION* PTAPE_CREATE_PARTITION; + +struct MEMORY_BASIC_INFORMATION { + PVOID BaseAddress; + PVOID AllocationBase; + DWORD AllocationProtect; + DWORD RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; +} +alias MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION; + +struct MESSAGE_RESOURCE_ENTRY { + WORD Length; + WORD Flags; + BYTE _Text; + + BYTE* Text() { return &_Text; } +} +alias MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; + +struct MESSAGE_RESOURCE_BLOCK { + DWORD LowId; + DWORD HighId; + DWORD OffsetToEntries; +} +alias MESSAGE_RESOURCE_BLOCK* PMESSAGE_RESOURCE_BLOCK; + +struct MESSAGE_RESOURCE_DATA { + DWORD NumberOfBlocks; + MESSAGE_RESOURCE_BLOCK _Blocks; + + MESSAGE_RESOURCE_BLOCK* Blocks() { return &_Blocks; } +} +alias MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; + +struct LIST_ENTRY { + LIST_ENTRY* Flink; + LIST_ENTRY* Blink; +} +alias LIST_ENTRY* PLIST_ENTRY; + +struct SINGLE_LIST_ENTRY { + SINGLE_LIST_ENTRY* Next; +} +alias SINGLE_LIST_ENTRY SLIST_ENTRY; +alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY, PSLIST_ENTRY; + +union SLIST_HEADER { + ULONGLONG Alignment; + struct { + SLIST_ENTRY Next; + WORD Depth; + WORD Sequence; + } +} +alias SLIST_HEADER* PSLIST_HEADER; + +struct RTL_CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + RTL_CRITICAL_SECTION* CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD[2] Spare; +} +alias RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; + +struct RTL_CRITICAL_SECTION { + PRTL_CRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + DWORD Reserved; +} +alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; + +struct EVENTLOGRECORD { + DWORD Length; + DWORD Reserved; + DWORD RecordNumber; + DWORD TimeGenerated; + DWORD TimeWritten; + DWORD EventID; + WORD EventType; + WORD NumStrings; + WORD EventCategory; + WORD ReservedFlags; + DWORD ClosingRecordNumber; + DWORD StringOffset; + DWORD UserSidLength; + DWORD UserSidOffset; + DWORD DataLength; + DWORD DataOffset; +} +alias EVENTLOGRECORD* PEVENTLOGRECORD; + +struct OSVERSIONINFOA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR[128] szCSDVersion; +} +alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA; + +struct OSVERSIONINFOW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR[128] szCSDVersion; +} +alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW; + +struct OSVERSIONINFOEXA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR[128] szCSDVersion; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} +alias OSVERSIONINFOEXA* POSVERSIONINFOEXA, LPOSVERSIONINFOEXA; + +struct OSVERSIONINFOEXW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR[128] szCSDVersion; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} +alias OSVERSIONINFOEXW* POSVERSIONINFOEXW, LPOSVERSIONINFOEXW; + +align(2) struct IMAGE_VXD_HEADER { + WORD e32_magic; + BYTE e32_border; + BYTE e32_worder; + DWORD e32_level; + WORD e32_cpu; + WORD e32_os; + DWORD e32_ver; + DWORD e32_mflags; + DWORD e32_mpages; + DWORD e32_startobj; + DWORD e32_eip; + DWORD e32_stackobj; + DWORD e32_esp; + DWORD e32_pagesize; + DWORD e32_lastpagesize; + DWORD e32_fixupsize; + DWORD e32_fixupsum; + DWORD e32_ldrsize; + DWORD e32_ldrsum; + DWORD e32_objtab; + DWORD e32_objcnt; + DWORD e32_objmap; + DWORD e32_itermap; + DWORD e32_rsrctab; + DWORD e32_rsrccnt; + DWORD e32_restab; + DWORD e32_enttab; + DWORD e32_dirtab; + DWORD e32_dircnt; + DWORD e32_fpagetab; + DWORD e32_frectab; + DWORD e32_impmod; + DWORD e32_impmodcnt; + DWORD e32_impproc; + DWORD e32_pagesum; + DWORD e32_datapage; + DWORD e32_preload; + DWORD e32_nrestab; + DWORD e32_cbnrestab; + DWORD e32_nressum; + DWORD e32_autodata; + DWORD e32_debuginfo; + DWORD e32_debuglen; + DWORD e32_instpreload; + DWORD e32_instdemand; + DWORD e32_heapsize; + BYTE[12] e32_res3; + DWORD e32_winresoff; + DWORD e32_winreslen; + WORD e32_devid; + WORD e32_ddkver; +} +alias IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; + +align(4): +struct IMAGE_FILE_HEADER { + WORD Machine; + WORD NumberOfSections; + DWORD TimeDateStamp; + DWORD PointerToSymbolTable; + DWORD NumberOfSymbols; + WORD SizeOfOptionalHeader; + WORD Characteristics; +} +alias IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; +// const IMAGE_SIZEOF_FILE_HEADER = IMAGE_FILE_HEADER.sizeof; + +struct IMAGE_DATA_DIRECTORY { + DWORD VirtualAddress; + DWORD Size; +} +alias IMAGE_DATA_DIRECTORY* PIMAGE_DATA_DIRECTORY; + +struct IMAGE_OPTIONAL_HEADER32 { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + DWORD BaseOfData; + DWORD ImageBase; + DWORD SectionAlignment; + DWORD FileAlignment; + WORD MajorOperatingSystemVersion; + WORD MinorOperatingSystemVersion; + WORD MajorImageVersion; + WORD MinorImageVersion; + WORD MajorSubsystemVersion; + WORD MinorSubsystemVersion; + DWORD Win32VersionValue; + DWORD SizeOfImage; + DWORD SizeOfHeaders; + DWORD CheckSum; + WORD Subsystem; + WORD DllCharacteristics; + DWORD SizeOfStackReserve; + DWORD SizeOfStackCommit; + DWORD SizeOfHeapReserve; + DWORD SizeOfHeapCommit; + DWORD LoaderFlags; + DWORD NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; +} +alias IMAGE_OPTIONAL_HEADER32* PIMAGE_OPTIONAL_HEADER32; + +struct IMAGE_OPTIONAL_HEADER64 { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + ULONGLONG ImageBase; + DWORD SectionAlignment; + DWORD FileAlignment; + WORD MajorOperatingSystemVersion; + WORD MinorOperatingSystemVersion; + WORD MajorImageVersion; + WORD MinorImageVersion; + WORD MajorSubsystemVersion; + WORD MinorSubsystemVersion; + DWORD Win32VersionValue; + DWORD SizeOfImage; + DWORD SizeOfHeaders; + DWORD CheckSum; + WORD Subsystem; + WORD DllCharacteristics; + ULONGLONG SizeOfStackReserve; + ULONGLONG SizeOfStackCommit; + ULONGLONG SizeOfHeapReserve; + ULONGLONG SizeOfHeapCommit; + DWORD LoaderFlags; + DWORD NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; +} +alias IMAGE_OPTIONAL_HEADER64* PIMAGE_OPTIONAL_HEADER64; + +struct IMAGE_ROM_OPTIONAL_HEADER { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + DWORD BaseOfData; + DWORD BaseOfBss; + DWORD GprMask; + DWORD[4] CprMask; + DWORD GpValue; +} +alias IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; + +align(2): +struct IMAGE_DOS_HEADER { + WORD e_magic; + WORD e_cblp; + WORD e_cp; + WORD e_crlc; + WORD e_cparhdr; + WORD e_minalloc; + WORD e_maxalloc; + WORD e_ss; + WORD e_sp; + WORD e_csum; + WORD e_ip; + WORD e_cs; + WORD e_lfarlc; + WORD e_ovno; + WORD[4] e_res; + WORD e_oemid; + WORD e_oeminfo; + WORD[10] e_res2; + LONG e_lfanew; +} +alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER; + +struct IMAGE_OS2_HEADER { + WORD ne_magic; + CHAR ne_ver; + CHAR ne_rev; + WORD ne_enttab; + WORD ne_cbenttab; + LONG ne_crc; + WORD ne_flags; + WORD ne_autodata; + WORD ne_heap; + WORD ne_stack; + LONG ne_csip; + LONG ne_sssp; + WORD ne_cseg; + WORD ne_cmod; + WORD ne_cbnrestab; + WORD ne_segtab; + WORD ne_rsrctab; + WORD ne_restab; + WORD ne_modtab; + WORD ne_imptab; + LONG ne_nrestab; + WORD ne_cmovent; + WORD ne_align; + WORD ne_cres; + BYTE ne_exetyp; + BYTE ne_flagsothers; + WORD ne_pretthunks; + WORD ne_psegrefbytes; + WORD ne_swaparea; + WORD ne_expver; +} +alias IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER; + +align(4) struct IMAGE_NT_HEADERS32 { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER OptionalHeader; +} +alias IMAGE_NT_HEADERS32* PIMAGE_NT_HEADERS32; + +align(4) struct IMAGE_NT_HEADERS64 { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER OptionalHeader; +} +alias IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64; + +struct IMAGE_ROM_HEADERS { + IMAGE_FILE_HEADER FileHeader; + IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; +} +alias IMAGE_ROM_HEADERS* PIMAGE_ROM_HEADERS; + +struct IMAGE_SECTION_HEADER { + BYTE[IMAGE_SIZEOF_SHORT_NAME] Name; + union _Misc { + DWORD PhysicalAddress; + DWORD VirtualSize; + } + _Misc Misc; + DWORD VirtualAddress; + DWORD SizeOfRawData; + DWORD PointerToRawData; + DWORD PointerToRelocations; + DWORD PointerToLinenumbers; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD Characteristics; +} +alias IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; + +struct IMAGE_SYMBOL { + union _N { + BYTE[8] ShortName; + struct Name { + DWORD Short; + DWORD Long; + } + PBYTE[2] LongName; + } + _N N; + DWORD Value; + SHORT SectionNumber; + WORD Type; + BYTE StorageClass; + BYTE NumberOfAuxSymbols; +} +alias IMAGE_SYMBOL* PIMAGE_SYMBOL; + +union IMAGE_AUX_SYMBOL { + struct _Sym { + DWORD TagIndex; + union _Misc { + struct _LnSz { + WORD Linenumber; + WORD Size; + } + _LnSz LnSz; + DWORD TotalSize; + } + _Misc Misc; + union _FcnAry { + struct _Function { + DWORD PointerToLinenumber; + DWORD PointerToNextFunction; + } + _Function Function; + struct _Array { + WORD[4] Dimension; + } + _Array Array; + } + _FcnAry FcnAry; + WORD TvIndex; + } + _Sym Sym; + struct _File { + BYTE[IMAGE_SIZEOF_SYMBOL] Name; + } + _File File; + struct _Section { + DWORD Length; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD CheckSum; + SHORT Number; + BYTE Selection; + } + _Section Section; +} +alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; + +struct IMAGE_COFF_SYMBOLS_HEADER { + DWORD NumberOfSymbols; + DWORD LvaToFirstSymbol; + DWORD NumberOfLinenumbers; + DWORD LvaToFirstLinenumber; + DWORD RvaToFirstByteOfCode; + DWORD RvaToLastByteOfCode; + DWORD RvaToFirstByteOfData; + DWORD RvaToLastByteOfData; +} +alias IMAGE_COFF_SYMBOLS_HEADER* PIMAGE_COFF_SYMBOLS_HEADER; + +struct IMAGE_RELOCATION { + union { + DWORD VirtualAddress; + DWORD RelocCount; + } + DWORD SymbolTableIndex; + WORD Type; +} +alias IMAGE_RELOCATION* PIMAGE_RELOCATION; + +align(4) struct IMAGE_BASE_RELOCATION { + DWORD VirtualAddress; + DWORD SizeOfBlock; +} +alias IMAGE_BASE_RELOCATION* PIMAGE_BASE_RELOCATION; + +align(2) struct IMAGE_LINENUMBER { + union _Type { + DWORD SymbolTableIndex; + DWORD VirtualAddress; + } + _Type Type; + WORD Linenumber; +} +alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; + +align(4): +struct IMAGE_ARCHIVE_MEMBER_HEADER { + BYTE[16] Name; + BYTE[12] Date; + BYTE[6] UserID; + BYTE[6] GroupID; + BYTE[8] Mode; + BYTE[10] Size; + BYTE[2] EndHeader; +} +alias IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; + +struct IMAGE_EXPORT_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Name; + DWORD Base; + DWORD NumberOfFunctions; + DWORD NumberOfNames; + DWORD AddressOfFunctions; + DWORD AddressOfNames; + DWORD AddressOfNameOrdinals; +} +alias IMAGE_EXPORT_DIRECTORY* PIMAGE_EXPORT_DIRECTORY; + +struct IMAGE_IMPORT_BY_NAME { + WORD Hint; + BYTE _Name; + + BYTE* Name() { + return &_Name; + } +} +alias IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; + +struct IMAGE_THUNK_DATA32 { + union _u1 { + DWORD ForwarderString; + DWORD Function; + DWORD Ordinal; + DWORD AddressOfData; + } + _u1 u1; +} +alias IMAGE_THUNK_DATA32* PIMAGE_THUNK_DATA32; + +struct IMAGE_THUNK_DATA64 { + union _u1 { + ULONGLONG ForwarderString; + ULONGLONG Function; + ULONGLONG Ordinal; + ULONGLONG AddressOfData; + } + _u1 u1; +} +alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; + +struct IMAGE_IMPORT_DESCRIPTOR { + union { + DWORD Characteristics; + DWORD OriginalFirstThunk; + } + DWORD TimeDateStamp; + DWORD ForwarderChain; + DWORD Name; + DWORD FirstThunk; +} +alias IMAGE_IMPORT_DESCRIPTOR* PIMAGE_IMPORT_DESCRIPTOR; + +struct IMAGE_BOUND_IMPORT_DESCRIPTOR { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD NumberOfModuleForwarderRefs; +} +alias IMAGE_BOUND_IMPORT_DESCRIPTOR* PIMAGE_BOUND_IMPORT_DESCRIPTOR; + +struct IMAGE_BOUND_FORWARDER_REF { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD Reserved; +} +alias IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; + +struct IMAGE_TLS_DIRECTORY32 { + DWORD StartAddressOfRawData; + DWORD EndAddressOfRawData; + DWORD AddressOfIndex; + DWORD AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} +alias IMAGE_TLS_DIRECTORY32* PIMAGE_TLS_DIRECTORY32; + +struct IMAGE_TLS_DIRECTORY64 { + ULONGLONG StartAddressOfRawData; + ULONGLONG EndAddressOfRawData; + ULONGLONG AddressOfIndex; + ULONGLONG AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} +alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; + +struct IMAGE_RESOURCE_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + WORD NumberOfNamedEntries; + WORD NumberOfIdEntries; +} +alias IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; + +struct IMAGE_RESOURCE_DIRECTORY_ENTRY { + union { + /+struct { + DWORD NameOffset:31; + DWORD NameIsString:1; + }+/ + DWORD Name; + WORD Id; + } + DWORD OffsetToData; + /+struct { + DWORD OffsetToDirectory:31; + DWORD DataIsDirectory:1; + }+/ + + uint NameOffset() { return Name & 0x7FFFFFFF; } + bool NameIsString() { return cast(bool)(Name & 0x80000000); } + uint OffsetToDirectory() { return OffsetToData & 0x7FFFFFFF; } + bool DataIsDirectory() { return cast(bool)(OffsetToData & 0x80000000); } + + uint NameOffset(uint n) { + Name = (Name & 0x80000000) | (n & 0x7FFFFFFF); + return n & 0x7FFFFFFF; + } + + bool NameIsString(bool n) { + Name = (Name & 0x7FFFFFFF) | (n << 31); return n; + } + + uint OffsetToDirectory(uint o) { + OffsetToData = (OffsetToData & 0x80000000) | (o & 0x7FFFFFFF); + return o & 0x7FFFFFFF; + } + + bool DataIsDirectory(bool d) { + OffsetToData = (OffsetToData & 0x7FFFFFFF) | (d << 31); return d; + } +} +alias IMAGE_RESOURCE_DIRECTORY_ENTRY* PIMAGE_RESOURCE_DIRECTORY_ENTRY; + +struct IMAGE_RESOURCE_DIRECTORY_STRING { + WORD Length; + CHAR _NameString; + + CHAR* NameString() { return &_NameString; } +} +alias IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; + +struct IMAGE_RESOURCE_DIR_STRING_U { + WORD Length; + WCHAR _NameString; + + WCHAR* NameString() { return &_NameString; } +} +alias IMAGE_RESOURCE_DIR_STRING_U* PIMAGE_RESOURCE_DIR_STRING_U; + +struct IMAGE_RESOURCE_DATA_ENTRY { + DWORD OffsetToData; + DWORD Size; + DWORD CodePage; + DWORD Reserved; +} +alias IMAGE_RESOURCE_DATA_ENTRY* PIMAGE_RESOURCE_DATA_ENTRY; + +struct IMAGE_LOAD_CONFIG_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + DWORD DeCommitFreeBlockThreshold; + DWORD DeCommitTotalFreeThreshold; + PVOID LockPrefixTable; + DWORD MaximumAllocationSize; + DWORD VirtualMemoryThreshold; + DWORD ProcessHeapFlags; + DWORD[4] Reserved; +} +alias IMAGE_LOAD_CONFIG_DIRECTORY* PIMAGE_LOAD_CONFIG_DIRECTORY; + +struct IMAGE_LOAD_CONFIG_DIRECTORY64 { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + ULONGLONG DeCommitFreeBlockThreshold; + ULONGLONG DeCommitTotalFreeThreshold; + ULONGLONG LockPrefixTable; + ULONGLONG MaximumAllocationSize; + ULONGLONG VirtualMemoryThreshold; + ULONGLONG ProcessAffinityMask; + DWORD ProcessHeapFlags; + WORD CSDFlags; + WORD Reserved1; + ULONGLONG EditList; + DWORD[2] Reserved; +} +alias IMAGE_LOAD_CONFIG_DIRECTORY64* PIMAGE_LOAD_CONFIG_DIRECTORY64; + +struct IMAGE_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + DWORD EndAddress; + PVOID ExceptionHandler; + PVOID HandlerData; + DWORD PrologEndAddress; +} +alias IMAGE_RUNTIME_FUNCTION_ENTRY* PIMAGE_RUNTIME_FUNCTION_ENTRY; + +struct IMAGE_CE_RUNTIME_FUNCTION_ENTRY { + uint FuncStart; + union { + ubyte PrologLen; + uint _bf; + } +/+ + unsigned int FuncLen:22; + unsigned int ThirtyTwoBit:1; + unsigned int ExceptionFlag:1; ++/ + uint FuncLen() { return (_bf >> 8) & 0x3FFFFF; } + bool ThirtyTwoBit() { return cast(bool)(_bf & 0x40000000); } + bool ExceptionFlag() { return cast(bool)(_bf & 0x80000000); } + + uint FuncLen(uint f) { + _bf = (_bf & ~0x3FFFFF00) | ((f & 0x3FFFFF) << 8); return f & 0x3FFFFF; + } + + bool ThirtyTwoBit(bool t) { + _bf = (_bf & ~0x40000000) | (t << 30); return t; + } + + bool ExceptionFlag(bool e) { + _bf = (_bf & ~0x80000000) | (e << 31); return e; + } +} +alias IMAGE_CE_RUNTIME_FUNCTION_ENTRY* PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; + +struct IMAGE_DEBUG_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Type; + DWORD SizeOfData; + DWORD AddressOfRawData; + DWORD PointerToRawData; +} +alias IMAGE_DEBUG_DIRECTORY* PIMAGE_DEBUG_DIRECTORY; + +struct FPO_DATA { + DWORD ulOffStart; + DWORD cbProcSize; + DWORD cdwLocals; + WORD cdwParams; + ubyte cbProlog; + ubyte _bf; +/+ + WORD cbRegs:3; + WORD fHasSEH:1; + WORD fUseBP:1; + WORD reserved:1; + WORD cbFrame:2; ++/ + ubyte cbRegs() { return cast(ubyte)(_bf & 0x07); } + bool fHasSEH() { return cast(bool)(_bf & 0x08); } + bool fUseBP() { return cast(bool)(_bf & 0x10); } + bool reserved() { return cast(bool)(_bf & 0x20); } + ubyte cbFrame() { return cast(ubyte)(_bf >> 6); } + + ubyte cbRegs(ubyte c) { + _bf = cast(ubyte) ((_bf & ~0x07) | (c & 0x07)); + return cast(ubyte)(c & 0x07); + } + + bool fHasSEH(bool f) { _bf = cast(ubyte)((_bf & ~0x08) | (f << 3)); return f; } + bool fUseBP(bool f) { _bf = cast(ubyte)((_bf & ~0x10) | (f << 4)); return f; } + bool reserved(bool r) { _bf = cast(ubyte)((_bf & ~0x20) | (r << 5)); return r; } + + ubyte cbFrame(ubyte c) { + _bf = cast(ubyte) ((_bf & ~0xC0) | ((c & 0x03) << 6)); + return cast(ubyte)(c & 0x03); + } +} +alias FPO_DATA* PFPO_DATA; + +struct IMAGE_DEBUG_MISC { + DWORD DataType; + DWORD Length; + BOOLEAN Unicode; + BYTE[3] Reserved; + BYTE _Data; + + BYTE* Data() { return &_Data; } +} +alias IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; + +struct IMAGE_FUNCTION_ENTRY { + DWORD StartingAddress; + DWORD EndingAddress; + DWORD EndOfPrologue; +} +alias IMAGE_FUNCTION_ENTRY* PIMAGE_FUNCTION_ENTRY; + +struct IMAGE_FUNCTION_ENTRY64 { + ULONGLONG StartingAddress; + ULONGLONG EndingAddress; + union { + ULONGLONG EndOfPrologue; + ULONGLONG UnwindInfoAddress; + } +} +alias IMAGE_FUNCTION_ENTRY64* PIMAGE_FUNCTION_ENTRY64; + +struct IMAGE_SEPARATE_DEBUG_HEADER { + WORD Signature; + WORD Flags; + WORD Machine; + WORD Characteristics; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD ImageBase; + DWORD SizeOfImage; + DWORD NumberOfSections; + DWORD ExportedNamesSize; + DWORD DebugDirectorySize; + DWORD SectionAlignment; + DWORD[2] Reserved; +} +alias IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER; + +enum SERVICE_NODE_TYPE { + DriverType = SERVICE_KERNEL_DRIVER, + FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, + Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, + Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, + AdapterType = SERVICE_ADAPTER, + RecognizerType = SERVICE_RECOGNIZER_DRIVER +} + +enum SERVICE_LOAD_TYPE { + BootLoad = SERVICE_BOOT_START, + SystemLoad = SERVICE_SYSTEM_START, + AutoLoad = SERVICE_AUTO_START, + DemandLoad = SERVICE_DEMAND_START, + DisableLoad = SERVICE_DISABLED +} + +enum SERVICE_ERROR_TYPE { + IgnoreError = SERVICE_ERROR_IGNORE, + NormalError = SERVICE_ERROR_NORMAL, + SevereError = SERVICE_ERROR_SEVERE, + CriticalError = SERVICE_ERROR_CRITICAL +} +alias SERVICE_ERROR_TYPE _CM_ERROR_CONTROL_TYPE; + +//DAC: According to MSJ, 'UnderTheHood', May 1996, this +// structure is not documented in any official Microsoft header file. +alias void EXCEPTION_REGISTRATION_RECORD; + +align: +struct NT_TIB { + EXCEPTION_REGISTRATION_RECORD *ExceptionList; + PVOID StackBase; + PVOID StackLimit; + PVOID SubSystemTib; + union { + PVOID FiberData; + DWORD Version; + } + PVOID ArbitraryUserPointer; + NT_TIB *Self; +} +alias NT_TIB* PNT_TIB; + +struct REPARSE_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + union { + struct _GenericReparseBuffer { + BYTE _DataBuffer; + + BYTE* DataBuffer() { return &_DataBuffer; } + } + _GenericReparseBuffer GenericReparseBuffer; + struct _SymbolicLinkReparseBuffer { + WORD SubstituteNameOffset; + WORD SubstituteNameLength; + WORD PrintNameOffset; + WORD PrintNameLength; + // ??? This is in MinGW, but absent in MSDN docs + ULONG Flags; + WCHAR _PathBuffer; + + WCHAR* PathBuffer() { return &_PathBuffer; } + } + _SymbolicLinkReparseBuffer SymbolicLinkReparseBuffer; + struct _MountPointReparseBuffer { + WORD SubstituteNameOffset; + WORD SubstituteNameLength; + WORD PrintNameOffset; + WORD PrintNameLength; + WCHAR _PathBuffer; + + WCHAR* PathBuffer() { return &_PathBuffer; } + } + _MountPointReparseBuffer MountPointReparseBuffer; + } +} +alias REPARSE_DATA_BUFFER *PREPARSE_DATA_BUFFER; + +struct REPARSE_GUID_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + GUID ReparseGuid; + struct _GenericReparseBuffer { + BYTE _DataBuffer; + + BYTE* DataBuffer() { return &_DataBuffer; } + } + _GenericReparseBuffer GenericReparseBuffer; +} +alias REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; + +const size_t + REPARSE_DATA_BUFFER_HEADER_SIZE = REPARSE_DATA_BUFFER.GenericReparseBuffer.offsetof, + REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = REPARSE_GUID_DATA_BUFFER.GenericReparseBuffer.offsetof, + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384; + + +struct REPARSE_POINT_INFORMATION { + WORD ReparseDataLength; + WORD UnparsedNameLength; +} +alias REPARSE_POINT_INFORMATION* PREPARSE_POINT_INFORMATION; + +union FILE_SEGMENT_ELEMENT { + PVOID64 Buffer; + ULONGLONG Alignment; +} +alias FILE_SEGMENT_ELEMENT* PFILE_SEGMENT_ELEMENT; + +// JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants +const DWORD + JOB_OBJECT_LIMIT_WORKINGSET = 0x0001, + JOB_OBJECT_LIMIT_PROCESS_TIME = 0x0002, + JOB_OBJECT_LIMIT_JOB_TIME = 0x0004, + JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x0008, + JOB_OBJECT_LIMIT_AFFINITY = 0x0010, + JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x0020, + JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x0040, + JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x0080, + JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x0100, + JOB_OBJECT_LIMIT_JOB_MEMORY = 0x0200, + JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x0400, + JOB_OBJECT_BREAKAWAY_OK = 0x0800, + JOB_OBJECT_SILENT_BREAKAWAY = 0x1000; + +// JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants +const DWORD + JOB_OBJECT_UILIMIT_HANDLES = 0x0001, + JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x0002, + JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x0004, + JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x0008, + JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x0010, + JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x0020, + JOB_OBJECT_UILIMIT_DESKTOP = 0x0040, + JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x0080; + +// JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants +const DWORD + JOB_OBJECT_SECURITY_NO_ADMIN = 0x0001, + JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x0002, + JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x0004, + JOB_OBJECT_SECURITY_FILTER_TOKENS = 0x0008; + +// JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants +enum : DWORD { + JOB_OBJECT_TERMINATE_AT_END_OF_JOB, + JOB_OBJECT_POST_AT_END_OF_JOB +} + +enum : DWORD { + JOB_OBJECT_MSG_END_OF_JOB_TIME = 1, + JOB_OBJECT_MSG_END_OF_PROCESS_TIME, + JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT, + JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO, + JOB_OBJECT_MSG_NEW_PROCESS, + JOB_OBJECT_MSG_EXIT_PROCESS, + JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS, + JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT, + JOB_OBJECT_MSG_JOB_MEMORY_LIMIT +} + +enum JOBOBJECTINFOCLASS { + JobObjectBasicAccountingInformation = 1, + JobObjectBasicLimitInformation, + JobObjectBasicProcessIdList, + JobObjectBasicUIRestrictions, + JobObjectSecurityLimitInformation, + JobObjectEndOfJobTimeInformation, + JobObjectAssociateCompletionPortInformation, + JobObjectBasicAndIoAccountingInformation, + JobObjectExtendedLimitInformation, + JobObjectJobSetInformation, + MaxJobObjectInfoClass +} + +struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { + LARGE_INTEGER TotalUserTime; + LARGE_INTEGER TotalKernelTime; + LARGE_INTEGER ThisPeriodTotalUserTime; + LARGE_INTEGER ThisPeriodTotalKernelTime; + DWORD TotalPageFaultCount; + DWORD TotalProcesses; + DWORD ActiveProcesses; + DWORD TotalTerminatedProcesses; +} +alias JOBOBJECT_BASIC_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; + +struct JOBOBJECT_BASIC_LIMIT_INFORMATION { + LARGE_INTEGER PerProcessUserTimeLimit; + LARGE_INTEGER PerJobUserTimeLimit; + DWORD LimitFlags; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + DWORD ActiveProcessLimit; + ULONG_PTR Affinity; + DWORD PriorityClass; + DWORD SchedulingClass; +} +alias JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_INFORMATION; + +struct JOBOBJECT_BASIC_PROCESS_ID_LIST { + DWORD NumberOfAssignedProcesses; + DWORD NumberOfProcessIdsInList; + ULONG_PTR _ProcessIdList; + + ULONG_PTR* ProcessIdList() { return &_ProcessIdList; } +} +alias JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; + +struct JOBOBJECT_BASIC_UI_RESTRICTIONS { + DWORD UIRestrictionsClass; +} +alias JOBOBJECT_BASIC_UI_RESTRICTIONS* PJOBOBJECT_BASIC_UI_RESTRICTIONS; + +struct JOBOBJECT_SECURITY_LIMIT_INFORMATION { + DWORD SecurityLimitFlags; + HANDLE JobToken; + PTOKEN_GROUPS SidsToDisable; + PTOKEN_PRIVILEGES PrivilegesToDelete; + PTOKEN_GROUPS RestrictedSids; +} +alias JOBOBJECT_SECURITY_LIMIT_INFORMATION* PJOBOBJECT_SECURITY_LIMIT_INFORMATION; + +struct JOBOBJECT_END_OF_JOB_TIME_INFORMATION { + DWORD EndOfJobTimeAction; +} +alias JOBOBJECT_END_OF_JOB_TIME_INFORMATION* PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; + +struct JOBOBJECT_ASSOCIATE_COMPLETION_PORT { + PVOID CompletionKey; + HANDLE CompletionPort; +} +alias JOBOBJECT_ASSOCIATE_COMPLETION_PORT* PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; + +struct JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { + JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; + IO_COUNTERS IoInfo; +} +alias JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION *PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; + +struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION { + JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; + IO_COUNTERS IoInfo; + SIZE_T ProcessMemoryLimit; + SIZE_T JobMemoryLimit; + SIZE_T PeakProcessMemoryUsed; + SIZE_T PeakJobMemoryUsed; +} +alias JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; + +struct JOBOBJECT_JOBSET_INFORMATION { + DWORD MemberLevel; +} +alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; + +// MinGW: Making these defines conditional on _WIN32_WINNT will break ddk includes +//static if (_WIN32_WINNT >= 0x500) { + +const DWORD + ES_SYSTEM_REQUIRED = 0x00000001, + ES_DISPLAY_REQUIRED = 0x00000002, + ES_USER_PRESENT = 0x00000004, + ES_CONTINUOUS = 0x80000000; + +enum LATENCY_TIME { + LT_DONT_CARE, + LT_LOWEST_LATENCY +} +alias LATENCY_TIME* PLATENCY_TIME; + +enum SYSTEM_POWER_STATE { + PowerSystemUnspecified, + PowerSystemWorking, + PowerSystemSleeping1, + PowerSystemSleeping2, + PowerSystemSleeping3, + PowerSystemHibernate, + PowerSystemShutdown, + PowerSystemMaximum +} +alias SYSTEM_POWER_STATE* PSYSTEM_POWER_STATE; + +const POWER_SYSTEM_MAXIMUM = SYSTEM_POWER_STATE.PowerSystemMaximum; + +enum POWER_ACTION { + PowerActionNone, + PowerActionReserved, + PowerActionSleep, + PowerActionHibernate, + PowerActionShutdown, + PowerActionShutdownReset, + PowerActionShutdownOff, + PowerActionWarmEject +} +alias POWER_ACTION* PPOWER_ACTION; + +static if (_WIN32_WINNT >= 0x600) { + enum SYSTEM_POWER_CONDITION { + PoAc, + PoDc, + PoHot, + PoConditionMaximum + } + alias SYSTEM_POWER_CONDITION* PSYSTEM_POWER_CONDITION; +} + +enum DEVICE_POWER_STATE { + PowerDeviceUnspecified, + PowerDeviceD0, + PowerDeviceD1, + PowerDeviceD2, + PowerDeviceD3, + PowerDeviceMaximum +} +alias DEVICE_POWER_STATE* PDEVICE_POWER_STATE; + +align(4): +struct BATTERY_REPORTING_SCALE { + DWORD Granularity; + DWORD Capacity; +} +alias BATTERY_REPORTING_SCALE* PBATTERY_REPORTING_SCALE; + +struct POWER_ACTION_POLICY { + POWER_ACTION Action; + ULONG Flags; + ULONG EventCode; +} +alias POWER_ACTION_POLICY* PPOWER_ACTION_POLICY; + +// POWER_ACTION_POLICY.Flags constants +const ULONG + POWER_ACTION_QUERY_ALLOWED = 0x00000001, + POWER_ACTION_UI_ALLOWED = 0x00000002, + POWER_ACTION_OVERRIDE_APPS = 0x00000004, + POWER_ACTION_LIGHTEST_FIRST = 0x10000000, + POWER_ACTION_LOCK_CONSOLE = 0x20000000, + POWER_ACTION_DISABLE_WAKES = 0x40000000, + POWER_ACTION_CRITICAL = 0x80000000; + +// POWER_ACTION_POLICY.EventCode constants +const ULONG + POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001, + POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002, + POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004, + POWER_USER_NOTIFY_BUTTON = 0x00000008, + POWER_USER_NOTIFY_SHUTDOWN = 0x00000010, + POWER_FORCE_TRIGGER_RESET = 0x80000000; + +const size_t + DISCHARGE_POLICY_CRITICAL = 0, + DISCHARGE_POLICY_LOW = 1, + NUM_DISCHARGE_POLICIES = 4; + +enum : BYTE { + PO_THROTTLE_NONE, + PO_THROTTLE_CONSTANT, + PO_THROTTLE_DEGRADE, + PO_THROTTLE_ADAPTIVE, + PO_THROTTLE_MAXIMUM +} + +struct SYSTEM_POWER_LEVEL { + BOOLEAN Enable; + UCHAR[3] Spare; + ULONG BatteryLevel; + POWER_ACTION_POLICY PowerPolicy; + SYSTEM_POWER_STATE MinSystemState; +} +alias SYSTEM_POWER_LEVEL* PSYSTEM_POWER_LEVEL; + +struct SYSTEM_POWER_POLICY { + ULONG Revision; + POWER_ACTION_POLICY PowerButton; + POWER_ACTION_POLICY SleepButton; + POWER_ACTION_POLICY LidClose; + SYSTEM_POWER_STATE LidOpenWake; + ULONG Reserved; + POWER_ACTION_POLICY Idle; + ULONG IdleTimeout; + UCHAR IdleSensitivity; + UCHAR DynamicThrottle; + UCHAR[2] Spare2; + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + SYSTEM_POWER_STATE ReducedLatencySleep; + ULONG WinLogonFlags; + ULONG Spare3; + ULONG DozeS4Timeout; + ULONG BroadcastCapacityResolution; + SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; + ULONG VideoTimeout; + BOOLEAN VideoDimDisplay; + ULONG[3] VideoReserved; + ULONG SpindownTimeout; + BOOLEAN OptimizeForPower; + UCHAR FanThrottleTolerance; + UCHAR ForcedThrottle; + UCHAR MinThrottle; + POWER_ACTION_POLICY OverThrottled; +} +alias SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY; + +struct SYSTEM_POWER_CAPABILITIES { + BOOLEAN PowerButtonPresent; + BOOLEAN SleepButtonPresent; + BOOLEAN LidPresent; + BOOLEAN SystemS1; + BOOLEAN SystemS2; + BOOLEAN SystemS3; + BOOLEAN SystemS4; + BOOLEAN SystemS5; + BOOLEAN HiberFilePresent; + BOOLEAN FullWake; + BOOLEAN VideoDimPresent; + BOOLEAN ApmPresent; + BOOLEAN UpsPresent; + BOOLEAN ThermalControl; + BOOLEAN ProcessorThrottle; + UCHAR ProcessorMinThrottle; + UCHAR ProcessorMaxThrottle; + UCHAR[4] spare2; + BOOLEAN DiskSpinDown; + UCHAR[8] spare3; + BOOLEAN SystemBatteriesPresent; + BOOLEAN BatteriesAreShortTerm; + BATTERY_REPORTING_SCALE[3] BatteryScale; + SYSTEM_POWER_STATE AcOnLineWake; + SYSTEM_POWER_STATE SoftLidWake; + SYSTEM_POWER_STATE RtcWake; + SYSTEM_POWER_STATE MinDeviceWakeState; + SYSTEM_POWER_STATE DefaultLowLatencyWake; +} +alias SYSTEM_POWER_CAPABILITIES* PSYSTEM_POWER_CAPABILITIES; + +struct SYSTEM_BATTERY_STATE { + BOOLEAN AcOnLine; + BOOLEAN BatteryPresent; + BOOLEAN Charging; + BOOLEAN Discharging; + BOOLEAN[4] Spare1; + ULONG MaxCapacity; + ULONG RemainingCapacity; + ULONG Rate; + ULONG EstimatedTime; + ULONG DefaultAlert1; + ULONG DefaultAlert2; +} +alias SYSTEM_BATTERY_STATE* PSYSTEM_BATTERY_STATE; + +enum POWER_INFORMATION_LEVEL { + SystemPowerPolicyAc, + SystemPowerPolicyDc, + VerifySystemPolicyAc, + VerifySystemPolicyDc, + SystemPowerCapabilities, + SystemBatteryState, + SystemPowerStateHandler, + ProcessorStateHandler, + SystemPowerPolicyCurrent, + AdministratorPowerPolicy, + SystemReserveHiberFile, + ProcessorInformation, + SystemPowerInformation, + ProcessorStateHandler2, + LastWakeTime, + LastSleepTime, + SystemExecutionState, + SystemPowerStateNotifyHandler, + ProcessorPowerPolicyAc, + ProcessorPowerPolicyDc, + VerifyProcessorPowerPolicyAc, + VerifyProcessorPowerPolicyDc, + ProcessorPowerPolicyCurrent +} + +//#if 1 /* (WIN32_WINNT >= 0x0500) */ +struct SYSTEM_POWER_INFORMATION { + ULONG MaxIdlenessAllowed; + ULONG Idleness; + ULONG TimeRemaining; + UCHAR CoolingMode; +} +alias SYSTEM_POWER_INFORMATION* PSYSTEM_POWER_INFORMATION; +//#endif + +struct PROCESSOR_POWER_POLICY_INFO { + ULONG TimeCheck; + ULONG DemoteLimit; + ULONG PromoteLimit; + UCHAR DemotePercent; + UCHAR PromotePercent; + UCHAR[2] Spare; + uint _bf; + + bool AllowDemotion() { return cast(bool)(_bf & 1); } + bool AllowPromotion() { return cast(bool)(_bf & 2); } + + bool AllowDemotion(bool a) { _bf = (_bf & ~1) | a; return a; } + bool AllowPromotion(bool a) { _bf = (_bf & ~2) | (a << 1); return a; } +/+ + ULONG AllowDemotion : 1; + ULONG AllowPromotion : 1; + ULONG Reserved : 30; ++/ +} +alias PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO; + +struct PROCESSOR_POWER_POLICY { + ULONG Revision; + UCHAR DynamicThrottle; + UCHAR[3] Spare; + ULONG Reserved; + ULONG PolicyCount; + PROCESSOR_POWER_POLICY_INFO[3] Policy; +} +alias PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; + +struct ADMINISTRATOR_POWER_POLICY { + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + ULONG MinVideoTimeout; + ULONG MaxVideoTimeout; + ULONG MinSpindownTimeout; + ULONG MaxSpindownTimeout; +} +alias ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; + +//}//#endif /* _WIN32_WINNT >= 0x500 */ + +extern (Windows) { + alias void function(PVOID, DWORD, PVOID) PIMAGE_TLS_CALLBACK; + + static if (_WIN32_WINNT >= 0x500) { + alias LONG function(PEXCEPTION_POINTERS) PVECTORED_EXCEPTION_HANDLER; + alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACKFUNC; + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum HEAP_INFORMATION_CLASS { + HeapCompatibilityInformation + } + + enum ACTIVATION_CONTEXT_INFO_CLASS { + ActivationContextBasicInformation = 1, + ActivationContextDetailedInformation, + AssemblyDetailedInformationInActivationContext, + FileInformationInAssemblyOfAssemblyInActivationContext + } + + struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulEncodedAssemblyIdentityLength; + DWORD ulManifestPathType; + DWORD ulManifestPathLength; + LARGE_INTEGER liManifestLastWriteTime; + DWORD ulPolicyPathType; + DWORD ulPolicyPathLength; + LARGE_INTEGER liPolicyLastWriteTime; + DWORD ulMetadataSatelliteRosterIndex; + DWORD ulManifestVersionMajor; + DWORD ulManifestVersionMinor; + DWORD ulPolicyVersionMajor; + DWORD ulPolicyVersionMinor; + DWORD ulAssemblyDirectoryNameLength; + PCWSTR lpAssemblyEncodedAssemblyIdentity; + PCWSTR lpAssemblyManifestPath; + PCWSTR lpAssemblyPolicyPath; + PCWSTR lpAssemblyDirectoryName; + } + alias ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* + PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + alias const(ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION)* + PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + + struct ACTIVATION_CONTEXT_DETAILED_INFORMATION { + DWORD dwFlags; + DWORD ulFormatVersion; + DWORD ulAssemblyCount; + DWORD ulRootManifestPathType; + DWORD ulRootManifestPathChars; + DWORD ulRootConfigurationPathType; + DWORD ulRootConfigurationPathChars; + DWORD ulAppDirPathType; + DWORD ulAppDirPathChars; + PCWSTR lpRootManifestPath; + PCWSTR lpRootConfigurationPath; + PCWSTR lpAppDirPath; + } + alias ACTIVATION_CONTEXT_DETAILED_INFORMATION* + PACTIVATION_CONTEXT_DETAILED_INFORMATION; + alias const(ACTIVATION_CONTEXT_DETAILED_INFORMATION)* + PCACTIVATION_CONTEXT_DETAILED_INFORMATION; + + struct ACTIVATION_CONTEXT_QUERY_INDEX { + ULONG ulAssemblyIndex; + ULONG ulFileIndexInAssembly; + } + alias ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX; + alias const(ACTIVATION_CONTEXT_QUERY_INDEX)* PCACTIVATION_CONTEXT_QUERY_INDEX; + + struct ASSEMBLY_FILE_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulFilenameLength; + DWORD ulPathLength; + PCWSTR lpFileName; + PCWSTR lpFilePath; + } + alias ASSEMBLY_FILE_DETAILED_INFORMATION* + PASSEMBLY_FILE_DETAILED_INFORMATION; + alias const(ASSEMBLY_FILE_DETAILED_INFORMATION)* + PCASSEMBLY_FILE_DETAILED_INFORMATION; +} + +version (Unicode) { + alias OSVERSIONINFOW OSVERSIONINFO; + alias OSVERSIONINFOEXW OSVERSIONINFOEX; +} else { + alias OSVERSIONINFOA OSVERSIONINFO; + alias OSVERSIONINFOEXA OSVERSIONINFOEX; +} + +alias OSVERSIONINFO* POSVERSIONINFO, LPOSVERSIONINFO; +alias OSVERSIONINFOEX* POSVERSIONINFOEX, LPOSVERSIONINFOEX; + + +static if (_WIN32_WINNT >= 0x500) { + extern (Windows) ULONGLONG VerSetConditionMask(ULONGLONG, DWORD, BYTE); +} + +version (Win64) { + const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR64_MAGIC; + + alias IMAGE_ORDINAL_FLAG64 IMAGE_ORDINAL_FLAG; + alias IMAGE_SNAP_BY_ORDINAL64 IMAGE_SNAP_BY_ORDINAL; + alias IMAGE_ORDINAL64 IMAGE_ORDINAL; + alias IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; + alias IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; + alias IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; + alias IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; +} else { + const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC; + + alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG; + alias IMAGE_ORDINAL32 IMAGE_ORDINAL; + alias IMAGE_SNAP_BY_ORDINAL32 IMAGE_SNAP_BY_ORDINAL; + alias IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; + alias IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; + alias IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; + alias IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; +} + +alias IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER; +alias IMAGE_NT_HEADERS* PIMAGE_NT_HEADERS; +alias IMAGE_THUNK_DATA* PIMAGE_THUNK_DATA; +alias IMAGE_TLS_DIRECTORY* PIMAGE_TLS_DIRECTORY; + +// TODO: MinGW implements these in assembly. How to translate? +PVOID GetCurrentFiber(); +PVOID GetFiberData(); diff --git a/src/core/sys/windows/winperf.d b/src/core/sys/windows/winperf.d new file mode 100644 index 0000000000..558eed083f --- /dev/null +++ b/src/core/sys/windows/winperf.d @@ -0,0 +1,152 @@ +/***********************************************************************\ +* winperf.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winperf; + +import win32.windef; +import win32.winbase; // for SYSTEMTIME + +const PERF_DATA_VERSION=1; +const PERF_DATA_REVISION=1; +const PERF_NO_INSTANCES=-1; +const PERF_SIZE_DWORD=0; +const PERF_SIZE_LARGE=256; +const PERF_SIZE_ZERO=512; +const PERF_SIZE_VARIABLE_LEN=768; +const PERF_TYPE_NUMBER=0; +const PERF_TYPE_COUNTER=1024; +const PERF_TYPE_TEXT=2048; +const PERF_TYPE_ZERO=0xC00; +const PERF_NUMBER_HEX=0; +const PERF_NUMBER_DECIMAL=0x10000; +const PERF_NUMBER_DEC_1000=0x20000; +const PERF_COUNTER_VALUE=0; +const PERF_COUNTER_RATE=0x10000; +const PERF_COUNTER_FRACTION=0x20000; +const PERF_COUNTER_BASE=0x30000; +const PERF_COUNTER_ELAPSED=0x40000; +const PERF_COUNTER_QUEUELEN=0x50000; +const PERF_COUNTER_HISTOGRAM=0x60000; +const PERF_TEXT_UNICODE=0; +const PERF_TEXT_ASCII=0x10000; +const PERF_TIMER_TICK=0; +const PERF_TIMER_100NS=0x100000; +const PERF_OBJECT_TIMER=0x200000; +const PERF_DELTA_COUNTER=0x400000; +const PERF_DELTA_BASE=0x800000; +const PERF_INVERSE_COUNTER=0x1000000; +const PERF_MULTI_COUNTER=0x2000000; +const PERF_DISPLAY_NO_SUFFIX=0; +const PERF_DISPLAY_PER_SEC=0x10000000; +const PERF_DISPLAY_PERCENT=0x20000000; +const PERF_DISPLAY_SECONDS=0x30000000; +const PERF_DISPLAY_NOSHOW=0x40000000; +const PERF_COUNTER_HISTOGRAM_TYPE=0x80000000; +const PERF_NO_UNIQUE_ID=(-1); +const PERF_DETAIL_NOVICE=100; +const PERF_DETAIL_ADVANCED=200; +const PERF_DETAIL_EXPERT=300; +const PERF_DETAIL_WIZARD=400; +const PERF_COUNTER_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); +const PERF_COUNTER_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_QUEUELEN_TYPE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_QUEUELEN|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_BULK_COUNT=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); +const PERF_COUNTER_TEXT=(PERF_SIZE_VARIABLE_LEN|PERF_TYPE_TEXT|PERF_TEXT_UNICODE|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_RAWCOUNT=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_LARGE_RAWCOUNT=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_RAWCOUNT_HEX=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_LARGE_RAWCOUNT_HEX=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); +const PERF_SAMPLE_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DELTA_COUNTER|PERF_DELTA_BASE|PERF_DISPLAY_PERCENT); +const PERF_SAMPLE_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_NODATA=(PERF_SIZE_ZERO|PERF_DISPLAY_NOSHOW); +const PERF_COUNTER_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_SAMPLE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|1); +const PERF_AVERAGE_TIMER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_SECONDS); +const PERF_AVERAGE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|2); +const PERF_AVERAGE_BULK=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_NOSHOW); +const PERF_100NSEC_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_100NSEC_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_TIMER_TICK|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_MULTI_COUNTER|PERF_TIMER_TICK|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_MULTI_BASE=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_MULTI_COUNTER|PERF_DISPLAY_NOSHOW); +const PERF_100NSEC_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_100NSEC_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_RAW_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_PERCENT); +const PERF_RAW_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|3); +const PERF_ELAPSED_TIME=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS); + +struct PERF_DATA_BLOCK { + WCHAR[4] Signature; + DWORD LittleEndian; + DWORD Version; + DWORD Revision; + DWORD TotalByteLength; + DWORD HeaderLength; + DWORD NumObjectTypes; + LONG DefaultObject; + SYSTEMTIME SystemTime; + LARGE_INTEGER PerfTime; + LARGE_INTEGER PerfFreq; + LARGE_INTEGER PerfTime100nSec; + DWORD SystemNameLength; + DWORD SystemNameOffset; +} +alias PERF_DATA_BLOCK * PPERF_DATA_BLOCK; + +struct PERF_OBJECT_TYPE { + DWORD TotalByteLength; + DWORD DefinitionLength; + DWORD HeaderLength; + DWORD ObjectNameTitleIndex; + LPWSTR ObjectNameTitle; + DWORD ObjectHelpTitleIndex; + LPWSTR ObjectHelpTitle; + DWORD DetailLevel; + DWORD NumCounters; + LONG DefaultCounter; + LONG NumInstances; + DWORD CodePage; + LARGE_INTEGER PerfTime; + LARGE_INTEGER PerfFreq; +} +alias PERF_OBJECT_TYPE * PPERF_OBJECT_TYPE; + +struct PERF_COUNTER_DEFINITION { + DWORD ByteLength; + DWORD CounterNameTitleIndex; + LPWSTR CounterNameTitle; + DWORD CounterHelpTitleIndex; + LPWSTR CounterHelpTitle; + LONG DefaultScale; + DWORD DetailLevel; + DWORD CounterType; + DWORD CounterSize; + DWORD CounterOffset; +} +alias PERF_COUNTER_DEFINITION * PPERF_COUNTER_DEFINITION; + +struct PERF_INSTANCE_DEFINITION { + DWORD ByteLength; + DWORD ParentObjectTitleIndex; + DWORD ParentObjectInstance; + LONG UniqueID; + DWORD NameOffset; + DWORD NameLength; +} +alias PERF_INSTANCE_DEFINITION * PPERF_INSTANCE_DEFINITION; + +struct PERF_COUNTER_BLOCK { + DWORD ByteLength; +} +alias PERF_COUNTER_BLOCK * PPERF_COUNTER_BLOCK; + +extern (Windows): +alias DWORD function (LPWSTR) PM_OPEN_PROC; +alias DWORD function (LPWSTR,PVOID*,PDWORD,PDWORD) PM_COLLECT_PROC; +alias DWORD function () PM_CLOSE_PROC; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d new file mode 100644 index 0000000000..1924428fa3 --- /dev/null +++ b/src/core/sys/windows/winreg.d @@ -0,0 +1,251 @@ +/***********************************************************************\ +* winreg.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winreg; +pragma(lib, "advapi32"); + +private import win32.w32api, win32.winbase, win32.windef; + +enum : HKEY { // for some reason, DMD errors if I don't give all the values explicitly + HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, + HKEY_CURRENT_USER = cast(HKEY) 0x80000001, + HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, + HKEY_USERS = cast(HKEY) 0x80000003, + HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, + HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, + HKEY_DYN_DATA = cast(HKEY) 0x80000006 +} + +enum : DWORD { + REG_OPTION_NON_VOLATILE, + REG_OPTION_VOLATILE +} + +enum : DWORD { + REG_CREATED_NEW_KEY = 1, + REG_OPENED_EXISTING_KEY +} + +enum : DWORD { + REG_NONE = 0, + REG_SZ, + REG_EXPAND_SZ, + REG_BINARY, + REG_DWORD_LITTLE_ENDIAN, + REG_DWORD = REG_DWORD_LITTLE_ENDIAN, + REG_DWORD_BIG_ENDIAN, + REG_LINK, + REG_MULTI_SZ, + REG_RESOURCE_LIST, + REG_FULL_RESOURCE_DESCRIPTOR, + REG_RESOURCE_REQUIREMENTS_LIST, + REG_QWORD_LITTLE_ENDIAN, + REG_QWORD = REG_QWORD_LITTLE_ENDIAN +} + +const DWORD + REG_NOTIFY_CHANGE_NAME = 1, + REG_NOTIFY_CHANGE_ATTRIBUTES = 2, + REG_NOTIFY_CHANGE_LAST_SET = 4, + REG_NOTIFY_CHANGE_SECURITY = 8; + +alias ACCESS_MASK REGSAM; + +struct VALENTA { + LPSTR ve_valuename; + DWORD ve_valuelen; + DWORD ve_valueptr; + DWORD ve_type; +} +alias VALENTA* PVALENTA; + +struct VALENTW { + LPWSTR ve_valuename; + DWORD ve_valuelen; + DWORD ve_valueptr; + DWORD ve_type; +} +alias VALENTW* PVALENTW; + +// RRF - Registry Routine Flags (for RegGetValue) +static if (_WIN32_WINNT >= 0x600) { + enum : DWORD { + RRF_RT_REG_NONE = 0x00000001, + RRF_RT_REG_SZ = 0x00000002, + RRF_RT_REG_EXPAND_SZ = 0x00000004, + RRF_RT_REG_BINARY = 0x00000008, + RRF_RT_REG_DWORD = 0x00000010, + RRF_RT_REG_MULTI_SZ = 0x00000020, + RRF_RT_REG_QWORD = 0x00000040, + RRF_RT_DWORD = RRF_RT_REG_BINARY | RRF_RT_REG_DWORD, + RRF_RT_QWORD = RRF_RT_REG_BINARY | RRF_RT_REG_QWORD, + RRF_RT_ANY = 0x0000FFFF, + RRF_NOEXPAND = 0x10000000, + RRF_ZEROONFAILURE = 0x20000000 + } +} + +extern (Windows) { + LONG RegCloseKey(HKEY); + LONG RegConnectRegistryA(LPCSTR, HKEY, PHKEY); + LONG RegConnectRegistryW(LPCWSTR, HKEY, PHKEY); + LONG RegCreateKeyExA(HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, + LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); + LONG RegCreateKeyExW(HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, + LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); + LONG RegDeleteKeyA(HKEY, LPCSTR); + LONG RegDeleteKeyW(HKEY, LPCWSTR); + LONG RegDeleteValueA(HKEY, LPCSTR); + LONG RegDeleteValueW(HKEY, LPCWSTR); + LONG RegEnumKeyExA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, + PFILETIME); + LONG RegEnumKeyExW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, + PFILETIME); + LONG RegEnumValueA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, + PDWORD); + LONG RegEnumValueW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, + PDWORD); + LONG RegFlushKey(HKEY); + LONG RegLoadKeyA(HKEY, LPCSTR, LPCSTR); + LONG RegLoadKeyW(HKEY, LPCWSTR, LPCWSTR); + LONG RegOpenKeyExA(HKEY, LPCSTR, DWORD, REGSAM, PHKEY); + LONG RegOpenKeyExW(HKEY, LPCWSTR, DWORD, REGSAM, PHKEY); + LONG RegQueryInfoKeyA(HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, + PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); + LONG RegQueryInfoKeyW(HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, + PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); + LONG RegQueryMultipleValuesA(HKEY, PVALENTA, DWORD, LPSTR, LPDWORD); + LONG RegQueryMultipleValuesW(HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD); + LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); + LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); + LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR); + LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR); + LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); + LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); + LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, const(BYTE)*, DWORD); + LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, const(BYTE)*, DWORD); + LONG RegUnLoadKeyA(HKEY, LPCSTR); + LONG RegUnLoadKeyW(HKEY, LPCWSTR); + LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL); + + BOOL AbortSystemShutdownA(LPCSTR); + BOOL AbortSystemShutdownW(LPCWSTR); + BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL); + BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL); + LONG RegGetKeySecurity(HKEY, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, PDWORD); + LONG RegRestoreKeyA(HKEY, LPCSTR, DWORD); + LONG RegRestoreKeyW(HKEY, LPCWSTR, DWORD); + LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + + static if (_WIN32_WINNT >= 0x500) { + LONG RegDisablePredefinedCache(); + LONG RegOpenCurrentUser(REGSAM, PHKEY); + LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY); + } + + static if (_WIN32_WINNT >= 0x501) { + LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD); + LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD); + } + + static if (_WIN32_WINNT >= 0x600) { + LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, + DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); + LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, + DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); + } + + deprecated { + LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY); + LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY); + LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD); + LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD); + LONG RegOpenKeyA(HKEY, LPCSTR, PHKEY); + LONG RegOpenKeyW(HKEY, LPCWSTR, PHKEY); + LONG RegQueryValueA(HKEY, LPCSTR, LPSTR, PLONG); + LONG RegQueryValueW(HKEY, LPCWSTR, LPWSTR, PLONG); + LONG RegSetValueA(HKEY, LPCSTR, DWORD, LPCSTR, DWORD); + LONG RegSetValueW(HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); + } +} + +version (Unicode) { + alias VALENTW VALENT; + alias RegConnectRegistryW RegConnectRegistry; + alias RegCreateKeyExW RegCreateKeyEx; + alias RegDeleteKeyW RegDeleteKey; + alias RegDeleteValueW RegDeleteValue; + alias RegEnumKeyExW RegEnumKeyEx; + alias RegEnumValueW RegEnumValue; + alias RegLoadKeyW RegLoadKey; + alias RegOpenKeyExW RegOpenKeyEx; + alias RegQueryInfoKeyW RegQueryInfoKey; + alias RegQueryMultipleValuesW RegQueryMultipleValues; + alias RegQueryValueExW RegQueryValueEx; + alias RegReplaceKeyW RegReplaceKey; + alias RegSaveKeyW RegSaveKey; + alias RegSetValueExW RegSetValueEx; + alias RegUnLoadKeyW RegUnLoadKey; + + alias AbortSystemShutdownW AbortSystemShutdown; + alias InitiateSystemShutdownW InitiateSystemShutdown; + alias RegRestoreKeyW RegRestoreKey; + static if (_WIN32_WINNT >= 0x501) { + alias RegSaveKeyExA RegSaveKeyEx; + } + static if (_WIN32_WINNT >= 0x600) { + alias RegGetValueW RegGetValue; + } + deprecated { + alias RegCreateKeyW RegCreateKey; + alias RegEnumKeyW RegEnumKey; + alias RegOpenKeyW RegOpenKey; + alias RegQueryValueW RegQueryValue; + alias RegSetValueW RegSetValue; + } +} else { + alias VALENTA VALENT; + alias RegConnectRegistryA RegConnectRegistry; + alias RegCreateKeyExA RegCreateKeyEx; + alias RegDeleteKeyA RegDeleteKey; + alias RegDeleteValueA RegDeleteValue; + alias RegEnumKeyExA RegEnumKeyEx; + alias RegEnumValueA RegEnumValue; + alias RegLoadKeyA RegLoadKey; + alias RegOpenKeyExA RegOpenKeyEx; + alias RegQueryInfoKeyA RegQueryInfoKey; + alias RegQueryMultipleValuesA RegQueryMultipleValues; + alias RegQueryValueExA RegQueryValueEx; + alias RegReplaceKeyA RegReplaceKey; + alias RegSaveKeyA RegSaveKey; + alias RegSetValueExA RegSetValueEx; + alias RegUnLoadKeyA RegUnLoadKey; + alias AbortSystemShutdownA AbortSystemShutdown; + alias InitiateSystemShutdownA InitiateSystemShutdown; + alias RegRestoreKeyW RegRestoreKey; + static if (_WIN32_WINNT >= 0x501) { + alias RegSaveKeyExA RegSaveKeyEx; + } + static if (_WIN32_WINNT >= 0x600) { + alias RegGetValueA RegGetValue; + } + deprecated { + alias RegCreateKeyA RegCreateKey; + alias RegEnumKeyA RegEnumKey; + alias RegOpenKeyA RegOpenKey; + alias RegQueryValueA RegQueryValue; + alias RegSetValueA RegSetValue; + } +} + +alias VALENT* PVALENT; diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d new file mode 100644 index 0000000000..8d6cb0d908 --- /dev/null +++ b/src/core/sys/windows/winspool.d @@ -0,0 +1,961 @@ +/***********************************************************************\ +* winspool.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winspool; +pragma(lib, "winspool"); + +private import win32.w32api, win32.windef, win32.wingdi; +private import win32.winbase; // for SYSTEMTIME + +// FIXME: clean up Windows version support + +const DI_CHANNEL=1; +const DI_CHANNEL_WRITE=2; +const DI_READ_SPOOL_JOB=3; + +const FORM_BUILTIN=1; + +const JOB_CONTROL_PAUSE=1; +const JOB_CONTROL_RESUME=2; +const JOB_CONTROL_CANCEL=3; +const JOB_CONTROL_RESTART=4; +const JOB_CONTROL_DELETE=5; +const JOB_STATUS_PAUSED=1; +const JOB_STATUS_ERROR=2; +const JOB_STATUS_DELETING=4; +const JOB_STATUS_SPOOLING=8; +const JOB_STATUS_PRINTING=16; +const JOB_STATUS_OFFLINE=32; +const JOB_STATUS_PAPEROUT=0x40; +const JOB_STATUS_PRINTED=0x80; +const JOB_STATUS_DELETED=0x100; +const JOB_STATUS_BLOCKED_DEVQ=0x200; +const JOB_STATUS_USER_INTERVENTION=0x400; + +const JOB_POSITION_UNSPECIFIED=0; + +const JOB_NOTIFY_TYPE=1; + +const JOB_NOTIFY_FIELD_PRINTER_NAME=0; +const JOB_NOTIFY_FIELD_MACHINE_NAME=1; +const JOB_NOTIFY_FIELD_PORT_NAME=2; +const JOB_NOTIFY_FIELD_USER_NAME=3; +const JOB_NOTIFY_FIELD_NOTIFY_NAME=4; +const JOB_NOTIFY_FIELD_DATATYPE=5; +const JOB_NOTIFY_FIELD_PRINT_PROCESSOR=6; +const JOB_NOTIFY_FIELD_PARAMETERS=7; +const JOB_NOTIFY_FIELD_DRIVER_NAME=8; +const JOB_NOTIFY_FIELD_DEVMODE=9; +const JOB_NOTIFY_FIELD_STATUS=10; +const JOB_NOTIFY_FIELD_STATUS_STRING=11; +const JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; +const JOB_NOTIFY_FIELD_DOCUMENT=13; +const JOB_NOTIFY_FIELD_PRIORITY=14; +const JOB_NOTIFY_FIELD_POSITION=15; +const JOB_NOTIFY_FIELD_SUBMITTED=16; +const JOB_NOTIFY_FIELD_START_TIME=17; +const JOB_NOTIFY_FIELD_UNTIL_TIME=18; +const JOB_NOTIFY_FIELD_TIME=19; +const JOB_NOTIFY_FIELD_TOTAL_PAGES=20; +const JOB_NOTIFY_FIELD_PAGES_PRINTED=21; +const JOB_NOTIFY_FIELD_TOTAL_BYTES=22; +const JOB_NOTIFY_FIELD_BYTES_PRINTED=23; + +const JOB_ACCESS_ADMINISTER = 16; +const JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER; +const JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER; +const JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER; +const JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER; + +const PRINTER_NOTIFY_OPTIONS_REFRESH=1; +const PRINTER_ACCESS_ADMINISTER=4; +const PRINTER_ACCESS_USE=8; + +const PRINTER_ERROR_INFORMATION=0x80000000; +const PRINTER_ERROR_WARNING=0x40000000; +const PRINTER_ERROR_SEVERE=0x20000000; +const PRINTER_ERROR_OUTOFPAPER=1; +const PRINTER_ERROR_JAM=2; +const PRINTER_ERROR_OUTOFTONER=4; + +const PRINTER_CONTROL_PAUSE=1; +const PRINTER_CONTROL_RESUME=2; +const PRINTER_CONTROL_PURGE=3; +const PRINTER_CONTROL_SET_STATUS=4; + +const PRINTER_STATUS_PAUSED = 1; +const PRINTER_STATUS_ERROR = 2; +const PRINTER_STATUS_PENDING_DELETION = 4; +const PRINTER_STATUS_PAPER_JAM = 8; +const PRINTER_STATUS_PAPER_OUT = 0x10; +const PRINTER_STATUS_MANUAL_FEED = 0x20; +const PRINTER_STATUS_PAPER_PROBLEM = 0x40; +const PRINTER_STATUS_OFFLINE = 0x80; +const PRINTER_STATUS_IO_ACTIVE = 0x100; +const PRINTER_STATUS_BUSY = 0x200; +const PRINTER_STATUS_PRINTING = 0x400; +const PRINTER_STATUS_OUTPUT_BIN_FULL = 0x800; +const PRINTER_STATUS_NOT_AVAILABLE = 0x1000; +const PRINTER_STATUS_WAITING = 0x2000; +const PRINTER_STATUS_PROCESSING = 0x4000; +const PRINTER_STATUS_INITIALIZING = 0x8000; +const PRINTER_STATUS_WARMING_UP = 0x10000; +const PRINTER_STATUS_TONER_LOW = 0x20000; +const PRINTER_STATUS_NO_TONER = 0x40000; +const PRINTER_STATUS_PAGE_PUNT = 0x80000; +const PRINTER_STATUS_USER_INTERVENTION = 0x100000; +const PRINTER_STATUS_OUT_OF_MEMORY = 0x200000; +const PRINTER_STATUS_DOOR_OPEN = 0x400000; +const PRINTER_STATUS_SERVER_UNKNOWN = 0x800000; +const PRINTER_STATUS_POWER_SAVE = 0x1000000; + +const PRINTER_ATTRIBUTE_QUEUED=1; +const PRINTER_ATTRIBUTE_DIRECT=2; +const PRINTER_ATTRIBUTE_DEFAULT=4; +const PRINTER_ATTRIBUTE_SHARED=8; +const PRINTER_ATTRIBUTE_NETWORK=0x10; +const PRINTER_ATTRIBUTE_HIDDEN=0x20; +const PRINTER_ATTRIBUTE_LOCAL=0x40; +const PRINTER_ATTRIBUTE_ENABLE_DEVQ=0x80; +const PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS=0x100; +const PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST=0x200; +const PRINTER_ATTRIBUTE_WORK_OFFLINE=0x400; +const PRINTER_ATTRIBUTE_ENABLE_BIDI=0x800; +const PRINTER_ATTRIBUTE_RAW_ONLY=0x1000; +const PRINTER_ATTRIBUTE_PUBLISHED=0x2000; + +const PRINTER_ENUM_DEFAULT=1; +const PRINTER_ENUM_LOCAL=2; +const PRINTER_ENUM_CONNECTIONS=4; +const PRINTER_ENUM_FAVORITE=4; +const PRINTER_ENUM_NAME=8; +const PRINTER_ENUM_REMOTE=16; +const PRINTER_ENUM_SHARED=32; +const PRINTER_ENUM_NETWORK=0x40; +const PRINTER_ENUM_EXPAND=0x4000; +const PRINTER_ENUM_CONTAINER=0x8000; +const PRINTER_ENUM_ICONMASK=0xff0000; +const PRINTER_ENUM_ICON1=0x10000; +const PRINTER_ENUM_ICON2=0x20000; +const PRINTER_ENUM_ICON3=0x40000; +const PRINTER_ENUM_ICON4=0x80000; +const PRINTER_ENUM_ICON5=0x100000; +const PRINTER_ENUM_ICON6=0x200000; +const PRINTER_ENUM_ICON7=0x400000; +const PRINTER_ENUM_ICON8=0x800000; + +const PRINTER_NOTIFY_TYPE=0; + +const PRINTER_NOTIFY_FIELD_SERVER_NAME=0; +const PRINTER_NOTIFY_FIELD_PRINTER_NAME=1; +const PRINTER_NOTIFY_FIELD_SHARE_NAME=2; +const PRINTER_NOTIFY_FIELD_PORT_NAME=3; +const PRINTER_NOTIFY_FIELD_DRIVER_NAME=4; +const PRINTER_NOTIFY_FIELD_COMMENT=5; +const PRINTER_NOTIFY_FIELD_LOCATION=6; +const PRINTER_NOTIFY_FIELD_DEVMODE=7; +const PRINTER_NOTIFY_FIELD_SEPFILE=8; +const PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR=9; +const PRINTER_NOTIFY_FIELD_PARAMETERS=10; +const PRINTER_NOTIFY_FIELD_DATATYPE=11; +const PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; +const PRINTER_NOTIFY_FIELD_ATTRIBUTES=13; +const PRINTER_NOTIFY_FIELD_PRIORITY=14; +const PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY=15; +const PRINTER_NOTIFY_FIELD_START_TIME=16; +const PRINTER_NOTIFY_FIELD_UNTIL_TIME=17; +const PRINTER_NOTIFY_FIELD_STATUS=18; +const PRINTER_NOTIFY_FIELD_STATUS_STRING=19; +const PRINTER_NOTIFY_FIELD_CJOBS=20; +const PRINTER_NOTIFY_FIELD_AVERAGE_PPM=21; +const PRINTER_NOTIFY_FIELD_TOTAL_PAGES=22; +const PRINTER_NOTIFY_FIELD_PAGES_PRINTED=23; +const PRINTER_NOTIFY_FIELD_TOTAL_BYTES=24; +const PRINTER_NOTIFY_FIELD_BYTES_PRINTED=25; + +const PRINTER_CHANGE_ADD_PRINTER=1; +const PRINTER_CHANGE_SET_PRINTER=2; +const PRINTER_CHANGE_DELETE_PRINTER=4; +const PRINTER_CHANGE_FAILED_CONNECTION_PRINTER=8; +const PRINTER_CHANGE_PRINTER=0xFF; +const PRINTER_CHANGE_ADD_JOB=0x100; +const PRINTER_CHANGE_SET_JOB=0x200; +const PRINTER_CHANGE_DELETE_JOB=0x400; +const PRINTER_CHANGE_WRITE_JOB=0x800; +const PRINTER_CHANGE_JOB=0xFF00; +const PRINTER_CHANGE_ADD_FORM=0x10000; +const PRINTER_CHANGE_SET_FORM=0x20000; +const PRINTER_CHANGE_DELETE_FORM=0x40000; +const PRINTER_CHANGE_FORM=0x70000; +const PRINTER_CHANGE_ADD_PORT=0x100000; +const PRINTER_CHANGE_CONFIGURE_PORT=0x200000; +const PRINTER_CHANGE_DELETE_PORT=0x400000; +const PRINTER_CHANGE_PORT=0x700000; +const PRINTER_CHANGE_ADD_PRINT_PROCESSOR=0x1000000; +const PRINTER_CHANGE_DELETE_PRINT_PROCESSOR=0x4000000; +const PRINTER_CHANGE_PRINT_PROCESSOR=0x7000000; +const PRINTER_CHANGE_ADD_PRINTER_DRIVER=0x10000000; +const PRINTER_CHANGE_SET_PRINTER_DRIVER=0x20000000; +const PRINTER_CHANGE_DELETE_PRINTER_DRIVER=0x40000000; +const PRINTER_CHANGE_PRINTER_DRIVER=0x70000000; +const PRINTER_CHANGE_TIMEOUT=0x80000000; +const PRINTER_CHANGE_ALL=0x7777FFFF; + +const PRINTER_NOTIFY_INFO_DISCARDED=1; +const PRINTER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE); +const PRINTER_READ=(STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE); +const PRINTER_WRITE=(STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE); +const PRINTER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE); +const NO_PRIORITY=0; +const MAX_PRIORITY=99; +const MIN_PRIORITY=1; +const DEF_PRIORITY=1; +const PORT_TYPE_WRITE=1; +const PORT_TYPE_READ=2; +const PORT_TYPE_REDIRECTED=4; +const PORT_TYPE_NET_ATTACHED=8; +const SERVER_ACCESS_ADMINISTER=1; +const SERVER_ACCESS_ENUMERATE=2; + +const SERVER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); +const SERVER_READ=(STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE); +const SERVER_WRITE=(STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); +const SERVER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE); + +const PORT_STATUS_TYPE_ERROR=1; +const PORT_STATUS_TYPE_WARNING=2; +const PORT_STATUS_TYPE_INFO=3; + +const PORT_STATUS_OFFLINE=1; +const PORT_STATUS_PAPER_JAM=2; +const PORT_STATUS_PAPER_OUT=3; +const PORT_STATUS_OUTPUT_BIN_FULL=4; +const PORT_STATUS_PAPER_PROBLEM=5; +const PORT_STATUS_NO_TONER=6; +const PORT_STATUS_DOOR_OPEN=7; +const PORT_STATUS_USER_INTERVENTION=8; +const PORT_STATUS_OUT_OF_MEMORY=9; +const PORT_STATUS_TONER_LOW=10; +const PORT_STATUS_WARMING_UP=11; +const PORT_STATUS_POWER_SAVE=12; + +struct ADDJOB_INFO_1A { + LPSTR Path; + DWORD JobId; +} +alias ADDJOB_INFO_1A* PADDJOB_INFO_1A, LPADDJOB_INFO_1A; + +struct ADDJOB_INFO_1W { + LPWSTR Path; + DWORD JobId; +} +alias ADDJOB_INFO_1W* PADDJOB_INFO_1W, LPADDJOB_INFO_1W; + +struct DATATYPES_INFO_1A { + LPSTR pName; +} +alias DATATYPES_INFO_1A* PDATATYPES_INFO_1A, LPDATATYPES_INFO_1A; + +struct DATATYPES_INFO_1W { + LPWSTR pName; +} +alias DATATYPES_INFO_1W* PDATATYPES_INFO_1W, LPDATATYPES_INFO_1W; + +struct JOB_INFO_1A { + DWORD JobId; + LPSTR pPrinterName; + LPSTR pMachineName; + LPSTR pUserName; + LPSTR pDocument; + LPSTR pDatatype; + LPSTR pStatus; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD TotalPages; + DWORD PagesPrinted; + SYSTEMTIME Submitted; +} +alias JOB_INFO_1A* PJOB_INFO_1A, LPJOB_INFO_1A; + +struct JOB_INFO_1W { + DWORD JobId; + LPWSTR pPrinterName; + LPWSTR pMachineName; + LPWSTR pUserName; + LPWSTR pDocument; + LPWSTR pDatatype; + LPWSTR pStatus; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD TotalPages; + DWORD PagesPrinted; + SYSTEMTIME Submitted; +} +alias JOB_INFO_1W* PJOB_INFO_1W, LPJOB_INFO_1W; + +struct JOB_INFO_2A { + DWORD JobId; + LPSTR pPrinterName; + LPSTR pMachineName; + LPSTR pUserName; + LPSTR pDocument; + LPSTR pNotifyName; + LPSTR pDatatype; + LPSTR pPrintProcessor; + LPSTR pParameters; + LPSTR pDriverName; + LPDEVMODEA pDevMode; + LPSTR pStatus; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD StartTime; + DWORD UntilTime; + DWORD TotalPages; + DWORD Size; + SYSTEMTIME Submitted; + DWORD Time; + DWORD PagesPrinted; +} +alias JOB_INFO_2A* PJOB_INFO_2A, LPJOB_INFO_2A; + +struct JOB_INFO_2W { + DWORD JobId; + LPWSTR pPrinterName; + LPWSTR pMachineName; + LPWSTR pUserName; + LPWSTR pDocument; + LPWSTR pNotifyName; + LPWSTR pDatatype; + LPWSTR pPrintProcessor; + LPWSTR pParameters; + LPWSTR pDriverName; + LPDEVMODEW pDevMode; + LPWSTR pStatus; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD StartTime; + DWORD UntilTime; + DWORD TotalPages; + DWORD Size; + SYSTEMTIME Submitted; + DWORD Time; + DWORD PagesPrinted; +} +alias JOB_INFO_2W* PJOB_INFO_2W, LPJOB_INFO_2W; + +struct DOC_INFO_1A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; +} +alias DOC_INFO_1A* PDOC_INFO_1A, LPDOC_INFO_1A; + +struct DOC_INFO_1W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; +} +alias DOC_INFO_1W* PDOC_INFO_1W, LPDOC_INFO_1W; + +struct DOC_INFO_2A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} +alias DOC_INFO_2A* PDOC_INFO_2A, LPDOC_INFO_2A; + +struct DOC_INFO_2W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} +alias DOC_INFO_2W* PDOC_INFO_2W, LPDOC_INFO_2W; + +struct DRIVER_INFO_1A { + LPSTR pName; +} +alias DRIVER_INFO_1A* PDRIVER_INFO_1A, LPDRIVER_INFO_1A; + +struct DRIVER_INFO_1W { + LPWSTR pName; +} +alias DRIVER_INFO_1W* PDRIVER_INFO_1W, LPDRIVER_INFO_1W; + +struct DRIVER_INFO_2A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; +} +alias DRIVER_INFO_2A* PDRIVER_INFO_2A, LPDRIVER_INFO_2A; + +struct DRIVER_INFO_2W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; +} +alias DRIVER_INFO_2W* PDRIVER_INFO_2W, LPDRIVER_INFO_2W; + +struct DRIVER_INFO_3A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; +} +alias DRIVER_INFO_3A* PDRIVER_INFO_3A, LPDRIVER_INFO_3A; + +struct DRIVER_INFO_3W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; +} +alias DRIVER_INFO_3W* PDRIVER_INFO_3W, LPDRIVER_INFO_3W; + +struct MONITOR_INFO_1A { + LPSTR pName; +} +alias MONITOR_INFO_1A* PMONITOR_INFO_1A, LPMONITOR_INFO_1A; + +struct MONITOR_INFO_1W { + LPWSTR pName; +} +alias MONITOR_INFO_1W* PMONITOR_INFO_1W, LPMONITOR_INFO_1W; + +struct PORT_INFO_1A { + LPSTR pName; +} +alias PORT_INFO_1A* PPORT_INFO_1A, LPPORT_INFO_1A; + +struct PORT_INFO_1W { + LPWSTR pName; +} +alias PORT_INFO_1W* PPORT_INFO_1W, LPPORT_INFO_1W; + +struct MONITOR_INFO_2A { + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; +} +alias MONITOR_INFO_2A* PMONITOR_INFO_2A, LPMONITOR_INFO_2A; + +struct MONITOR_INFO_2W { + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; +} +alias MONITOR_INFO_2W* PMONITOR_INFO_2W, LPMONITOR_INFO_2W; + +struct PORT_INFO_2A { + LPSTR pPortName; + LPSTR pMonitorName; + LPSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} +alias PORT_INFO_2A* PPORT_INFO_2A, LPPORT_INFO_2A; + +struct PORT_INFO_2W { + LPWSTR pPortName; + LPWSTR pMonitorName; + LPWSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} +alias PORT_INFO_2W* PPORT_INFO_2W, LPPORT_INFO_2W; + +struct PORT_INFO_3A { + DWORD dwStatus; + LPSTR pszStatus; + DWORD dwSeverity; +} +alias PORT_INFO_3A* PPORT_INFO_3A, LPPORT_INFO_3A; + +struct PORT_INFO_3W { + DWORD dwStatus; + LPWSTR pszStatus; + DWORD dwSeverity; +} +alias PORT_INFO_3W* PPORT_INFO_3W, LPPORT_INFO_3W; + +struct PRINTER_INFO_1A { + DWORD Flags; + LPSTR pDescription; + LPSTR pName; + LPSTR pComment; +} +alias PRINTER_INFO_1A* PPRINTER_INFO_1A, LPPRINTER_INFO_1A; + +struct PRINTER_INFO_1W { + DWORD Flags; + LPWSTR pDescription; + LPWSTR pName; + LPWSTR pComment; +} +alias PRINTER_INFO_1W* PPRINTER_INFO_1W, LPPRINTER_INFO_1W; + +struct PRINTER_INFO_2A { + LPSTR pServerName; + LPSTR pPrinterName; + LPSTR pShareName; + LPSTR pPortName; + LPSTR pDriverName; + LPSTR pComment; + LPSTR pLocation; + LPDEVMODEA pDevMode; + LPSTR pSepFile; + LPSTR pPrintProcessor; + LPSTR pDatatype; + LPSTR pParameters; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Attributes; + DWORD Priority; + DWORD DefaultPriority; + DWORD StartTime; + DWORD UntilTime; + DWORD Status; + DWORD cJobs; + DWORD AveragePPM; +} +alias PRINTER_INFO_2A* PPRINTER_INFO_2A, LPPRINTER_INFO_2A; + +struct PRINTER_INFO_2W { + LPWSTR pServerName; + LPWSTR pPrinterName; + LPWSTR pShareName; + LPWSTR pPortName; + LPWSTR pDriverName; + LPWSTR pComment; + LPWSTR pLocation; + LPDEVMODEW pDevMode; + LPWSTR pSepFile; + LPWSTR pPrintProcessor; + LPWSTR pDatatype; + LPWSTR pParameters; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Attributes; + DWORD Priority; + DWORD DefaultPriority; + DWORD StartTime; + DWORD UntilTime; + DWORD Status; + DWORD cJobs; + DWORD AveragePPM; +} +alias PRINTER_INFO_2W* PPRINTER_INFO_2W, LPPRINTER_INFO_2W; + +struct PRINTER_INFO_3 { + PSECURITY_DESCRIPTOR pSecurityDescriptor; +} +alias PRINTER_INFO_3* PPRINTER_INFO_3, LPPRINTER_INFO_3; + +struct PRINTER_INFO_4A { + LPSTR pPrinterName; + LPSTR pServerName; + DWORD Attributes; +} +alias PRINTER_INFO_4A* PPRINTER_INFO_4A, LPPRINTER_INFO_4A; + +struct PRINTER_INFO_4W { + LPWSTR pPrinterName; + LPWSTR pServerName; + DWORD Attributes; +} +alias PRINTER_INFO_4W* PPRINTER_INFO_4W, LPPRINTER_INFO_4W; + +struct PRINTER_INFO_5A { + LPSTR pPrinterName; + LPSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} +alias PRINTER_INFO_5A* PPRINTER_INFO_5A, LPPRINTER_INFO_5A; + +struct PRINTER_INFO_5W { + LPWSTR pPrinterName; + LPWSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} +alias PRINTER_INFO_5W* PPRINTER_INFO_5W, LPPRINTER_INFO_5W; + +struct PRINTER_INFO_6 { + DWORD dwStatus; +} +alias PRINTER_INFO_6* PPRINTER_INFO_6, LPPRINTER_INFO_6; + +struct PRINTPROCESSOR_INFO_1A { + LPSTR pName; +} +alias PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A, LPPRINTPROCESSOR_INFO_1A; + +struct PRINTPROCESSOR_INFO_1W { + LPWSTR pName; +} +alias PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W, LPPRINTPROCESSOR_INFO_1W; + +struct PRINTER_NOTIFY_INFO_DATA { + WORD Type; + WORD Field; + DWORD Reserved; + DWORD Id; + union _NotifyData { + DWORD[2] adwData; + struct Data { + DWORD cbBuf; + PVOID pBuf; + } + } + _NotifyData NotifyData; +} +alias PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA, LPPRINTER_NOTIFY_INFO_DATA; + +struct PRINTER_NOTIFY_INFO { + DWORD Version; + DWORD Flags; + DWORD Count; + PRINTER_NOTIFY_INFO_DATA[1] aData; +} +alias PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO, LPPRINTER_NOTIFY_INFO; + +struct FORM_INFO_1A { + DWORD Flags; + LPSTR pName; + SIZEL Size; + RECTL ImageableArea; +} +alias FORM_INFO_1A* PFORM_INFO_1A, LPFORM_INFO_1A; + +struct FORM_INFO_1W { + DWORD Flags; + LPWSTR pName; + SIZEL Size; + RECTL ImageableArea; +} +alias FORM_INFO_1W* PFORM_INFO_1W, LPFORM_INFO_1W; + +struct PRINTER_DEFAULTSA { + LPSTR pDatatype; + LPDEVMODE pDevMode; + ACCESS_MASK DesiredAccess; +} +alias PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA, LPPRINTER_DEFAULTSA; + +struct PRINTER_DEFAULTSW { + LPWSTR pDatatype; + LPDEVMODE pDevMode; + ACCESS_MASK DesiredAccess; +} +alias PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW, LPPRINTER_DEFAULTSW; + +extern (Windows): +BOOL AbortPrinter(HANDLE); +BOOL AddFormA(HANDLE, DWORD, PBYTE); +BOOL AddFormW(HANDLE, DWORD, PBYTE); +BOOL AddJobA(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +BOOL AddJobW(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +BOOL AddMonitorA(LPSTR, DWORD, PBYTE); +BOOL AddMonitorW(LPWSTR, DWORD, PBYTE); +BOOL AddPortA(LPSTR, HWND, LPSTR); +BOOL AddPortW(LPWSTR, HWND, LPWSTR); +HANDLE AddPrinterA(LPSTR, DWORD, PBYTE); +HANDLE AddPrinterW(LPWSTR, DWORD, PBYTE); +BOOL AddPrinterConnectionA(LPSTR); +BOOL AddPrinterConnectionW(LPWSTR); +BOOL AddPrinterDriverA(LPSTR, DWORD, PBYTE); +BOOL AddPrinterDriverW(LPWSTR, DWORD, PBYTE); +BOOL AddPrintProcessorA(LPSTR, LPSTR, LPSTR, LPSTR); +BOOL AddPrintProcessorW(LPWSTR, LPWSTR, LPWSTR, LPWSTR); +BOOL AddPrintProvidorA(LPSTR, DWORD, PBYTE); +BOOL AddPrintProvidorW(LPWSTR, DWORD, PBYTE); +LONG AdvancedDocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODE, PDEVMODEA); +LONG AdvancedDocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODE, PDEVMODEW); +BOOL ClosePrinter(HANDLE); +BOOL ConfigurePortA(LPSTR, HWND, LPSTR); +BOOL ConfigurePortW(LPWSTR, HWND, LPWSTR); +HANDLE ConnectToPrinterDlg(HWND, DWORD); +BOOL DeleteFormA(HANDLE, LPSTR); +BOOL DeleteFormW(HANDLE, LPWSTR); +BOOL DeleteMonitorA(LPSTR, LPSTR, LPSTR); +BOOL DeleteMonitorW(LPWSTR, LPWSTR, LPWSTR); +BOOL DeletePortA(LPSTR, HWND, LPSTR); +BOOL DeletePortW(LPWSTR, HWND, LPWSTR); +BOOL DeletePrinter(HANDLE); +BOOL DeletePrinterConnectionA(LPSTR); +BOOL DeletePrinterConnectionW(LPWSTR); +DWORD DeletePrinterDataA(HANDLE, LPSTR); +DWORD DeletePrinterDataW(HANDLE, LPWSTR); +BOOL DeletePrinterDriverA(LPSTR, LPSTR, LPSTR); +BOOL DeletePrinterDriverW(LPWSTR, LPWSTR, LPWSTR); +BOOL DeletePrintProcessorA(LPSTR, LPSTR, LPSTR); +BOOL DeletePrintProcessorW(LPWSTR, LPWSTR, LPWSTR); +BOOL DeletePrintProvidorA(LPSTR, LPSTR, LPSTR); +BOOL DeletePrintProvidorW(LPWSTR, LPWSTR, LPWSTR); +LONG DocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODEA, PDEVMODEA, DWORD); +LONG DocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODEW, PDEVMODEW, DWORD); +BOOL EndDocPrinter(HANDLE); +BOOL EndPagePrinter(HANDLE); +BOOL EnumFormsA(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumFormsW(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumJobsA(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumJobsW(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumMonitorsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumMonitorsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPortsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPortsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +DWORD EnumPrinterDataA(HANDLE, DWORD, LPSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD); +DWORD EnumPrinterDataW(HANDLE, DWORD, LPWSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD); +BOOL EnumPrinterDriversA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrinterDriversW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintersA(DWORD, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintersW(DWORD, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorDatatypesA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorDatatypesW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorsA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorsW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL FindClosePrinterChangeNotification(HANDLE); +HANDLE FindFirstPrinterChangeNotification(HANDLE, DWORD, DWORD, PVOID); +HANDLE FindNextPrinterChangeNotification(HANDLE, PDWORD, PVOID, PVOID*); +BOOL FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO); + +static if (_WIN32_WINNT >= 0x500) { +BOOL GetDefaultPrinterA(LPSTR, LPDWORD); +BOOL GetDefaultPrinterW(LPWSTR, LPDWORD); +} + +BOOL GetFormA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetFormW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetPrinterA(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetPrinterW(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDataA(HANDLE, LPSTR, PDWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDataW(HANDLE, LPWSTR, PDWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrintProcessorDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrintProcessorDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +BOOL OpenPrinterA(LPSTR, PHANDLE, LPPRINTER_DEFAULTSA); +BOOL OpenPrinterW(LPWSTR, PHANDLE, LPPRINTER_DEFAULTSW); +DWORD PrinterMessageBoxA(HANDLE, DWORD, HWND, LPSTR, LPSTR, DWORD); +DWORD PrinterMessageBoxW(HANDLE, DWORD, HWND, LPWSTR, LPWSTR, DWORD); +BOOL PrinterProperties(HWND, HANDLE); +BOOL ReadPrinter(HANDLE, PVOID, DWORD, PDWORD); +BOOL ResetPrinterA(HANDLE, LPPRINTER_DEFAULTSA); +BOOL ResetPrinterW(HANDLE, LPPRINTER_DEFAULTSW); +BOOL ScheduleJob(HANDLE, DWORD); +BOOL SetFormA(HANDLE, LPSTR, DWORD, PBYTE); +BOOL SetFormW(HANDLE, LPWSTR, DWORD, PBYTE); +BOOL SetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD); +BOOL SetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD); +BOOL SetPrinterA(HANDLE, DWORD, PBYTE, DWORD); +BOOL SetPrinterW(HANDLE, DWORD, PBYTE, DWORD); +BOOL SetPrinterDataA(HANDLE, LPSTR, DWORD, PBYTE, DWORD); +BOOL SetPrinterDataW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD); +DWORD StartDocPrinterA(HANDLE, DWORD, PBYTE); +DWORD StartDocPrinterW(HANDLE, DWORD, PBYTE); +BOOL StartPagePrinter(HANDLE); +DWORD WaitForPrinterChange(HANDLE, DWORD); +BOOL WritePrinter(HANDLE, PVOID, DWORD, PDWORD); + +version(Unicode) { + +alias JOB_INFO_1W JOB_INFO_1; +alias JOB_INFO_2W JOB_INFO_2; +alias ADDJOB_INFO_1W ADDJOB_INFO_1; +alias DATATYPES_INFO_1W DATATYPES_INFO_1; +alias MONITOR_INFO_1W MONITOR_INFO_1; +alias MONITOR_INFO_2W MONITOR_INFO_2; +alias DOC_INFO_1W DOC_INFO_1; +alias DOC_INFO_2W DOC_INFO_2; +alias PORT_INFO_1W PORT_INFO_1; +alias PORT_INFO_2W PORT_INFO_2; +alias PORT_INFO_3W PORT_INFO_3; +alias DRIVER_INFO_2W DRIVER_INFO_2; +alias PRINTER_INFO_1W PRINTER_INFO_1; +alias PRINTER_INFO_2W PRINTER_INFO_2; +alias PRINTER_INFO_4W PRINTER_INFO_4; +alias PRINTER_INFO_5W PRINTER_INFO_5; +alias PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1; +alias FORM_INFO_1W FORM_INFO_1; +alias PRINTER_DEFAULTSW PRINTER_DEFAULTS; + +alias AddFormW AddForm; +alias AddJobW AddJob; +alias AddMonitorW AddMonitor; +alias AddPortW AddPort; +alias AddPrinterW AddPrinter; +alias AddPrinterConnectionW AddPrinterConnection; +alias AddPrinterDriverW AddPrinterDriver; +alias AddPrintProcessorW AddPrintProcessor; +alias AddPrintProvidorW AddPrintProvidor; +alias AdvancedDocumentPropertiesW AdvancedDocumentProperties; +alias ConfigurePortW ConfigurePort; +alias DeleteFormW DeleteForm; +alias DeleteMonitorW DeleteMonitor; +alias DeletePortW DeletePort; +alias DeletePrinterConnectionW DeletePrinterConnection; +alias DeletePrinterDataW DeletePrinterData; +alias DeletePrinterDriverW DeletePrinterDriver; +alias DeletePrintProcessorW DeletePrintProcessor; +alias DeletePrintProvidorW DeletePrintProvidor; +alias DocumentPropertiesW DocumentProperties; +alias EnumFormsW EnumForms; +alias EnumJobsW EnumJobs; +alias EnumMonitorsW EnumMonitors; +alias EnumPortsW EnumPorts; +alias EnumPrinterDataW EnumPrinterData; +alias EnumPrinterDriversW EnumPrinterDrivers; +alias EnumPrintersW EnumPrinters; +alias EnumPrintProcessorDatatypesW EnumPrintProcessorDatatypes; +alias EnumPrintProcessorsW EnumPrintProcessors; + +static if (_WIN32_WINNT >= 0x500) { +alias GetDefaultPrinterW GetDefaultPrinter; +} + +alias GetFormW GetForm; +alias GetJobW GetJob; +alias GetPrinterW GetPrinter; +alias GetPrinterDataW GetPrinterData; +alias GetPrinterDriverW GetPrinterDriver; +alias GetPrinterDriverDirectoryW GetPrinterDriverDirectory; +alias GetPrintProcessorDirectoryW GetPrintProcessorDirectory; +alias OpenPrinterW OpenPrinter; +alias PrinterMessageBoxW PrinterMessageBox; +alias ResetPrinterW ResetPrinter; +alias SetFormW SetForm; +alias SetJobW SetJob; +alias SetPrinterW SetPrinter; +alias SetPrinterDataW SetPrinterData; +alias StartDocPrinterW StartDocPrinter; + +} else { + +alias JOB_INFO_1A JOB_INFO_1; +alias JOB_INFO_2A JOB_INFO_2; +alias ADDJOB_INFO_1A ADDJOB_INFO_1; +alias DATATYPES_INFO_1A DATATYPES_INFO_1; +alias MONITOR_INFO_1A MONITOR_INFO_1; +alias MONITOR_INFO_2A MONITOR_INFO_2; +alias DOC_INFO_1A DOC_INFO_1; +alias DOC_INFO_2A DOC_INFO_2; +alias PORT_INFO_1A PORT_INFO_1; +alias PORT_INFO_2A PORT_INFO_2; +alias PORT_INFO_3A PORT_INFO_3; +alias DRIVER_INFO_2A DRIVER_INFO_2; +alias PRINTER_INFO_1A PRINTER_INFO_1; +alias PRINTER_INFO_2A PRINTER_INFO_2; +alias PRINTER_INFO_4A PRINTER_INFO_4; +alias PRINTER_INFO_5A PRINTER_INFO_5; +alias PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1; +alias FORM_INFO_1A FORM_INFO_1; +alias PRINTER_DEFAULTSA PRINTER_DEFAULTS; + +alias AddFormA AddForm; +alias AddJobA AddJob; +alias AddMonitorA AddMonitor; +alias AddPortA AddPort; +alias AddPrinterA AddPrinter; +alias AddPrinterConnectionA AddPrinterConnection; +alias AddPrinterDriverA AddPrinterDriver; +alias AddPrintProcessorA AddPrintProcessor; +alias AddPrintProvidorA AddPrintProvidor; +alias AdvancedDocumentPropertiesA AdvancedDocumentProperties; +alias ConfigurePortA ConfigurePort; +alias DeleteFormA DeleteForm; +alias DeleteMonitorA DeleteMonitor; +alias DeletePortA DeletePort; +alias DeletePrinterConnectionA DeletePrinterConnection; +alias DeletePrinterDataA DeletePrinterData; +alias DeletePrinterDriverA DeletePrinterDriver; +alias DeletePrintProcessorA DeletePrintProcessor; +alias DeletePrintProvidorA DeletePrintProvidor; +alias DocumentPropertiesA DocumentProperties; +alias EnumFormsA EnumForms; +alias EnumJobsA EnumJobs; +alias EnumMonitorsA EnumMonitors; +alias EnumPortsA EnumPorts; +alias EnumPrinterDataA EnumPrinterData; +alias EnumPrinterDriversA EnumPrinterDrivers; +alias EnumPrintersA EnumPrinters; +alias EnumPrintProcessorDatatypesA EnumPrintProcessorDatatypes; +alias EnumPrintProcessorsA EnumPrintProcessors; + +static if (_WIN32_WINNT >= 0x500) { +alias GetDefaultPrinterA GetDefaultPrinter; +} + +alias GetFormA GetForm; +alias GetJobA GetJob; +alias GetPrinterA GetPrinter; +alias GetPrinterDataA GetPrinterData; +alias GetPrinterDriverA GetPrinterDriver; +alias GetPrinterDriverDirectoryA GetPrinterDriverDirectory; +alias GetPrintProcessorDirectoryA GetPrintProcessorDirectory; +alias OpenPrinterA OpenPrinter; +alias PrinterMessageBoxA PrinterMessageBox; +alias ResetPrinterA ResetPrinter; +alias SetFormA SetForm; +alias SetJobA SetJob; +alias SetPrinterA SetPrinter; +alias SetPrinterDataA SetPrinterData; +alias StartDocPrinterA StartDocPrinter; +} + +alias JOB_INFO_1* PJOB_INFO_1, LPJOB_INFO_1; +alias JOB_INFO_2* PJOB_INFO_2, LPJOB_INFO_2; +alias ADDJOB_INFO_1* PADDJOB_INFO_1, LPADDJOB_INFO_1; +alias DATATYPES_INFO_1* PDATATYPES_INFO_1, LPDATATYPES_INFO_1; +alias MONITOR_INFO_1* PMONITOR_INFO_1, LPMONITOR_INFO_1; +alias MONITOR_INFO_2* PMONITOR_INFO_2, LPMONITOR_INFO_2; +alias DOC_INFO_1* PDOC_INFO_1, LPDOC_INFO_1; +alias DOC_INFO_2* PDOC_INFO_2, LPDOC_INFO_2; +alias PORT_INFO_1* PPORT_INFO_1, LPPORT_INFO_1; +alias PORT_INFO_2* PPORT_INFO_2, LPPORT_INFO_2; +alias PORT_INFO_3* PPORT_INFO_3, LPPORT_INFO_3; +alias DRIVER_INFO_2* PDRIVER_INFO_2, LPDRIVER_INFO_2; +alias PRINTER_INFO_1* PPRINTER_INFO_1, LPPRINTER_INFO_1; +alias PRINTER_INFO_2* PPRINTER_INFO_2, LPPRINTER_INFO_2; +alias PRINTER_INFO_4* PPRINTER_INFO_4, LPPRINTER_INFO_4; +alias PRINTER_INFO_5* PPRINTER_INFO_5, LPPRINTER_INFO_5; +alias PRINTPROCESSOR_INFO_1* PPRINTPROCESSOR_INFO_1, LPPRINTPROCESSOR_INFO_1; +alias FORM_INFO_1* PFORM_INFO_1, LPFORM_INFO_1; +alias PRINTER_DEFAULTS* PPRINTER_DEFAULTS, LPPRINTER_DEFAULTS; diff --git a/src/core/sys/windows/winsvc.d b/src/core/sys/windows/winsvc.d new file mode 100644 index 0000000000..5cde8a4dff --- /dev/null +++ b/src/core/sys/windows/winsvc.d @@ -0,0 +1,425 @@ +/***********************************************************************\ +* winsvc.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winsvc; +pragma(lib, "advapi32"); + +private import win32.w32api, win32.windef; + +// FIXME: check Windows version support + +const TCHAR[] + SERVICES_ACTIVE_DATABASE = "ServicesActive", + SERVICES_FAILED_DATABASE = "ServicesFailed"; + +const TCHAR SC_GROUP_IDENTIFIER = '+'; + +const DWORD + SC_MANAGER_ALL_ACCESS = 0xf003f, + SC_MANAGER_CONNECT = 1, + SC_MANAGER_CREATE_SERVICE = 2, + SC_MANAGER_ENUMERATE_SERVICE = 4, + SC_MANAGER_LOCK = 8, + SC_MANAGER_QUERY_LOCK_STATUS = 16, + SC_MANAGER_MODIFY_BOOT_CONFIG = 32; + +const DWORD SERVICE_NO_CHANGE = 0xffffffff; + +enum : DWORD { + SERVICE_STOPPED = 1, + SERVICE_START_PENDING, + SERVICE_STOP_PENDING, + SERVICE_RUNNING, + SERVICE_CONTINUE_PENDING, + SERVICE_PAUSE_PENDING, + SERVICE_PAUSED // = 7 +} + +const DWORD + SERVICE_ACCEPT_STOP = 1, + SERVICE_ACCEPT_PAUSE_CONTINUE = 2, + SERVICE_ACCEPT_SHUTDOWN = 4, + SERVICE_ACCEPT_PARAMCHANGE = 8, + SERVICE_ACCEPT_NETBINDCHANGE = 16, + SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32, + SERVICE_ACCEPT_POWEREVENT = 64, + SERVICE_ACCEPT_SESSIONCHANGE = 128; + +enum : DWORD { + SERVICE_CONTROL_STOP = 1, + SERVICE_CONTROL_PAUSE, + SERVICE_CONTROL_CONTINUE, + SERVICE_CONTROL_INTERROGATE, + SERVICE_CONTROL_SHUTDOWN, + SERVICE_CONTROL_PARAMCHANGE, + SERVICE_CONTROL_NETBINDADD, + SERVICE_CONTROL_NETBINDREMOVE, + SERVICE_CONTROL_NETBINDENABLE, + SERVICE_CONTROL_NETBINDDISABLE, + SERVICE_CONTROL_DEVICEEVENT, + SERVICE_CONTROL_HARDWAREPROFILECHANGE, + SERVICE_CONTROL_POWEREVENT, + SERVICE_CONTROL_SESSIONCHANGE, // = 14 +} + +enum : DWORD { + SERVICE_ACTIVE = 1, + SERVICE_INACTIVE, + SERVICE_STATE_ALL +} + +const DWORD + SERVICE_QUERY_CONFIG = 0x0001, + SERVICE_CHANGE_CONFIG = 0x0002, + SERVICE_QUERY_STATUS = 0x0004, + SERVICE_ENUMERATE_DEPENDENTS = 0x0008, + SERVICE_START = 0x0010, + SERVICE_STOP = 0x0020, + SERVICE_PAUSE_CONTINUE = 0x0040, + SERVICE_INTERROGATE = 0x0080, + SERVICE_USER_DEFINED_CONTROL = 0x0100, + SERVICE_ALL_ACCESS = 0x01FF | STANDARD_RIGHTS_REQUIRED; + +// This is not documented on the MSDN site +const SERVICE_RUNS_IN_SYSTEM_PROCESS = 1; + +enum : DWORD { + SERVICE_CONFIG_DESCRIPTION = 1, + SERVICE_CONFIG_FAILURE_ACTIONS, + SERVICE_CONFIG_DELAYED_AUTO_START_INFO, + SERVICE_CONFIG_FAILURE_ACTIONS_FLAG, + SERVICE_CONFIG_SERVICE_SID_INFO, + SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO, + SERVICE_CONFIG_PRESHUTDOWN_INFO // = 7 +} + +struct SERVICE_STATUS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; +} +alias SERVICE_STATUS* LPSERVICE_STATUS; + +struct ENUM_SERVICE_STATUSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; +} +alias ENUM_SERVICE_STATUSA* LPENUM_SERVICE_STATUSA; + +struct ENUM_SERVICE_STATUSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; +} +alias ENUM_SERVICE_STATUSW* LPENUM_SERVICE_STATUSW; + +struct QUERY_SERVICE_CONFIGA { + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPSTR lpBinaryPathName; + LPSTR lpLoadOrderGroup; + DWORD dwTagId; + LPSTR lpDependencies; + LPSTR lpServiceStartName; + LPSTR lpDisplayName; +} +alias QUERY_SERVICE_CONFIGA* LPQUERY_SERVICE_CONFIGA; + +struct QUERY_SERVICE_CONFIGW { + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPWSTR lpBinaryPathName; + LPWSTR lpLoadOrderGroup; + DWORD dwTagId; + LPWSTR lpDependencies; + LPWSTR lpServiceStartName; + LPWSTR lpDisplayName; +} +alias QUERY_SERVICE_CONFIGW* LPQUERY_SERVICE_CONFIGW; + +struct QUERY_SERVICE_LOCK_STATUSA { + DWORD fIsLocked; + LPSTR lpLockOwner; + DWORD dwLockDuration; +} +alias QUERY_SERVICE_LOCK_STATUSA* LPQUERY_SERVICE_LOCK_STATUSA; + +struct QUERY_SERVICE_LOCK_STATUSW { + DWORD fIsLocked; + LPWSTR lpLockOwner; + DWORD dwLockDuration; +} +alias QUERY_SERVICE_LOCK_STATUSW* LPQUERY_SERVICE_LOCK_STATUSW; + +extern (Windows) { + alias void function(DWORD, LPSTR*) LPSERVICE_MAIN_FUNCTIONA; + alias void function(DWORD, LPWSTR*) LPSERVICE_MAIN_FUNCTIONW; +} + +struct SERVICE_TABLE_ENTRYA { + LPSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONA lpServiceProc; +} +alias SERVICE_TABLE_ENTRYA* LPSERVICE_TABLE_ENTRYA; + +struct SERVICE_TABLE_ENTRYW { + LPWSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONW lpServiceProc; +} +alias SERVICE_TABLE_ENTRYW* LPSERVICE_TABLE_ENTRYW; + +mixin DECLARE_HANDLE!("SC_HANDLE"); +alias SC_HANDLE* LPSC_HANDLE; +alias void* SC_LOCK; +mixin DECLARE_HANDLE!("SERVICE_STATUS_HANDLE"); + +extern (Windows) { + alias void function(DWORD) LPHANDLER_FUNCTION; + alias DWORD function(DWORD, DWORD, LPVOID, LPVOID) LPHANDLER_FUNCTION_EX; +} + +static if (_WIN32_WINNT >= 0x500) { + struct SERVICE_STATUS_PROCESS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; + DWORD dwProcessId; + DWORD dwServiceFlags; + } + alias SERVICE_STATUS_PROCESS* LPSERVICE_STATUS_PROCESS; + + enum SC_STATUS_TYPE { + SC_STATUS_PROCESS_INFO = 0 + } + + enum SC_ENUM_TYPE { + SC_ENUM_PROCESS_INFO = 0 + } + + struct ENUM_SERVICE_STATUS_PROCESSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; + } + alias ENUM_SERVICE_STATUS_PROCESSA* LPENUM_SERVICE_STATUS_PROCESSA; + + struct ENUM_SERVICE_STATUS_PROCESSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; + } + alias ENUM_SERVICE_STATUS_PROCESSW* LPENUM_SERVICE_STATUS_PROCESSW; + + struct SERVICE_DESCRIPTIONA { + LPSTR lpDescription; + } + alias SERVICE_DESCRIPTIONA* LPSERVICE_DESCRIPTIONA; + + struct SERVICE_DESCRIPTIONW { + LPWSTR lpDescription; + } + alias SERVICE_DESCRIPTIONW* LPSERVICE_DESCRIPTIONW; + + enum SC_ACTION_TYPE { + SC_ACTION_NONE, + SC_ACTION_RESTART, + SC_ACTION_REBOOT, + SC_ACTION_RUN_COMMAND + } + + struct SC_ACTION { + SC_ACTION_TYPE Type; + DWORD Delay; + } + alias SC_ACTION* LPSC_ACTION; + + struct SERVICE_FAILURE_ACTIONSA { + DWORD dwResetPeriod; + LPSTR lpRebootMsg; + LPSTR lpCommand; + DWORD cActions; + SC_ACTION* lpsaActions; + } + alias SERVICE_FAILURE_ACTIONSA* LPSERVICE_FAILURE_ACTIONSA; + + struct SERVICE_FAILURE_ACTIONSW { + DWORD dwResetPeriod; + LPWSTR lpRebootMsg; + LPWSTR lpCommand; + DWORD cActions; + SC_ACTION* lpsaActions; + } + alias SERVICE_FAILURE_ACTIONSW* LPSERVICE_FAILURE_ACTIONSW; +} + +extern (Windows) { + BOOL ChangeServiceConfigA(SC_HANDLE, DWORD, DWORD, DWORD, LPCSTR, + LPCSTR, LPDWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR); + BOOL ChangeServiceConfigW(SC_HANDLE, DWORD, DWORD, DWORD, LPCWSTR, + LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL CloseServiceHandle(SC_HANDLE); + BOOL ControlService(SC_HANDLE, DWORD, LPSERVICE_STATUS); + SC_HANDLE CreateServiceA(SC_HANDLE, LPCSTR, LPCSTR, DWORD, DWORD, + DWORD, DWORD, LPCSTR, LPCSTR, PDWORD, LPCSTR, LPCSTR, LPCSTR); + SC_HANDLE CreateServiceW(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD, + DWORD, DWORD, LPCWSTR, LPCWSTR, PDWORD, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL DeleteService(SC_HANDLE); + BOOL EnumDependentServicesA(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSA, + DWORD, PDWORD, PDWORD); + BOOL EnumDependentServicesW(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSW, + DWORD, PDWORD, PDWORD); + BOOL EnumServicesStatusA(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSA, + DWORD, PDWORD, PDWORD, PDWORD); + BOOL EnumServicesStatusW(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSW, + DWORD, PDWORD, PDWORD, PDWORD); + BOOL GetServiceDisplayNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); + BOOL GetServiceDisplayNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); + BOOL GetServiceKeyNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); + BOOL GetServiceKeyNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); + SC_LOCK LockServiceDatabase(SC_HANDLE); + BOOL NotifyBootConfigStatus(BOOL); + SC_HANDLE OpenSCManagerA(LPCSTR, LPCSTR, DWORD); + SC_HANDLE OpenSCManagerW(LPCWSTR, LPCWSTR, DWORD); + SC_HANDLE OpenServiceA(SC_HANDLE, LPCSTR, DWORD); + SC_HANDLE OpenServiceW(SC_HANDLE, LPCWSTR, DWORD); + BOOL QueryServiceConfigA(SC_HANDLE, LPQUERY_SERVICE_CONFIGA, DWORD, + PDWORD); + BOOL QueryServiceConfigW(SC_HANDLE, LPQUERY_SERVICE_CONFIGW, DWORD, + PDWORD); + BOOL QueryServiceLockStatusA(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSA, + DWORD, PDWORD); + BOOL QueryServiceLockStatusW(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSW, + DWORD, PDWORD); + BOOL QueryServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, LPDWORD); + BOOL QueryServiceStatus(SC_HANDLE, LPSERVICE_STATUS); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(LPCSTR, + LPHANDLER_FUNCTION); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(LPCWSTR, + LPHANDLER_FUNCTION); + BOOL SetServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + BOOL SetServiceStatus(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS); + BOOL StartServiceA(SC_HANDLE, DWORD, LPCSTR*); + BOOL StartServiceW(SC_HANDLE, DWORD, LPCWSTR*); + BOOL StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA); + BOOL StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW); + BOOL UnlockServiceDatabase(SC_LOCK); + + static if (_WIN32_WINNT >= 0x500) { + BOOL EnumServicesStatusExA(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, + DWORD, LPDWORD, LPDWORD, LPDWORD, LPCSTR); + BOOL EnumServicesStatusExW(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, + DWORD, LPDWORD, LPDWORD, LPDWORD, LPCWSTR); + BOOL QueryServiceConfig2A(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); + BOOL QueryServiceConfig2W(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); + BOOL QueryServiceStatusEx(SC_HANDLE, SC_STATUS_TYPE, LPBYTE, DWORD, + LPDWORD); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(LPCSTR, + LPHANDLER_FUNCTION_EX, LPVOID); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(LPCWSTR, + LPHANDLER_FUNCTION_EX, LPVOID); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL ChangeServiceConfig2A(SC_HANDLE, DWORD, LPVOID); + BOOL ChangeServiceConfig2W(SC_HANDLE, DWORD, LPVOID); + } +} + +version (Unicode) { + alias ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS; + alias QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG; + alias QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS; + alias LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION; + alias SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY; + alias ChangeServiceConfigW ChangeServiceConfig; + alias CreateServiceW CreateService; + alias EnumDependentServicesW EnumDependentServices; + alias EnumServicesStatusW EnumServicesStatus; + alias GetServiceDisplayNameW GetServiceDisplayName; + alias GetServiceKeyNameW GetServiceKeyName; + alias OpenSCManagerW OpenSCManager; + alias OpenServiceW OpenService; + alias QueryServiceConfigW QueryServiceConfig; + alias QueryServiceLockStatusW QueryServiceLockStatus; + alias RegisterServiceCtrlHandlerW RegisterServiceCtrlHandler; + alias StartServiceW StartService; + alias StartServiceCtrlDispatcherW StartServiceCtrlDispatcher; + + static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS; + alias EnumServicesStatusExW EnumServicesStatusEx; + alias QueryServiceConfig2W QueryServiceConfig2; + alias RegisterServiceCtrlHandlerExW RegisterServiceCtrlHandlerEx; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ChangeServiceConfig2W ChangeServiceConfig2; + } + +} else { + alias ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS; + alias QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG; + alias QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS; + alias LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION; + alias SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY; + alias ChangeServiceConfigA ChangeServiceConfig; + alias CreateServiceA CreateService; + alias EnumDependentServicesA EnumDependentServices; + alias EnumServicesStatusA EnumServicesStatus; + alias GetServiceDisplayNameA GetServiceDisplayName; + alias GetServiceKeyNameA GetServiceKeyName; + alias OpenSCManagerA OpenSCManager; + alias OpenServiceA OpenService; + alias QueryServiceConfigA QueryServiceConfig; + alias QueryServiceLockStatusA QueryServiceLockStatus; + alias RegisterServiceCtrlHandlerA RegisterServiceCtrlHandler; + alias StartServiceA StartService; + alias StartServiceCtrlDispatcherA StartServiceCtrlDispatcher; + + static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; + alias EnumServicesStatusExA EnumServicesStatusEx; + alias QueryServiceConfig2A QueryServiceConfig2; + alias RegisterServiceCtrlHandlerExA RegisterServiceCtrlHandlerEx; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ChangeServiceConfig2A ChangeServiceConfig2; + } + +} + +alias ENUM_SERVICE_STATUS* LPENUM_SERVICE_STATUS; +alias QUERY_SERVICE_CONFIG* LPQUERY_SERVICE_CONFIG; +alias QUERY_SERVICE_LOCK_STATUS* LPQUERY_SERVICE_LOCK_STATUS; +alias SERVICE_TABLE_ENTRY* LPSERVICE_TABLE_ENTRY; + +static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESS* LPENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTION* LPSERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONS* LPSERVICE_FAILURE_ACTIONS; +} diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d new file mode 100644 index 0000000000..b2f8b07b32 --- /dev/null +++ b/src/core/sys/windows/winuser.d @@ -0,0 +1,4834 @@ +/***********************************************************************\ +* winuser.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winuser; +pragma(lib, "user32"); + +// Conversion Notes: +// The following macros were for win16 only, and are not included in this file: +//#define EnumTaskWindows(h, f, p) EnumThreadWindows((DWORD)h, f, p) +//#define PostAppMessageA(t, m, w, l) PostThreadMessageA((DWORD)t, m, w, l) +//#define PostAppMessageW(t, m, w, l) PostThreadMessageW((DWORD)t, m, w, l) +//#define GetSysModalWindow() (NULL) +//#define SetSysModalWindow(h) (NULL) +//#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL)) +//#define DefHookProc(c, p, lp, h) CallNextHookEx((HHOOK)*h, c, p, lp) + +private import win32.w32api, win32.winbase, win32.wingdi; +private import win32.windef; // for HMONITOR + +// FIXME: clean up Windows version support + +template MAKEINTATOM_T(int i) { + const LPTSTR MAKEINTATOM_T = cast(LPTSTR) i; +} + +const WC_DIALOG = MAKEINTATOM_T!(0x8002); + +const FAPPCOMMAND_MOUSE = 0x8000; +const FAPPCOMMAND_KEY = 0; +const FAPPCOMMAND_OEM = 0x1000; +const FAPPCOMMAND_MASK = 0xF000; + +const FVIRTKEY = 1; +const FNOINVERT = 2; +const FSHIFT = 4; +const FCONTROL = 8; +const FALT = 16; + +const ATF_TIMEOUTON = 1; +const ATF_ONOFFFEEDBACK = 2; +const ATF_AVAILABLE = 4; // May be obsolete. Not in recent MS docs. + +const WH_MIN = -1; +const WH_MSGFILTER = -1; +const WH_JOURNALRECORD = 0; +const WH_JOURNALPLAYBACK = 1; +const WH_KEYBOARD = 2; +const WH_GETMESSAGE = 3; +const WH_CALLWNDPROC = 4; +const WH_CBT = 5; +const WH_SYSMSGFILTER = 6; +const WH_MOUSE = 7; +const WH_HARDWARE = 8; +const WH_DEBUG = 9; +const WH_SHELL = 10; +const WH_FOREGROUNDIDLE = 11; +const WH_CALLWNDPROCRET = 12; +const WH_KEYBOARD_LL = 13; +const WH_MOUSE_LL = 14; +const WH_MAX = 14; +const WH_MINHOOK = WH_MIN; +const WH_MAXHOOK = WH_MAX; + +enum { + HC_ACTION = 0, + HC_GETNEXT, + HC_SKIP, + HC_NOREMOVE, // = 3 + HC_NOREM = HC_NOREMOVE, + HC_SYSMODALON, + HC_SYSMODALOFF +} + +enum { + HCBT_MOVESIZE = 0, + HCBT_MINMAX, + HCBT_QS, + HCBT_CREATEWND, + HCBT_DESTROYWND, + HCBT_ACTIVATE, + HCBT_CLICKSKIPPED, + HCBT_KEYSKIPPED, + HCBT_SYSCOMMAND, + HCBT_SETFOCUS // = 9 +} + +enum { + CF_TEXT = 0x0001, + CF_BITMAP, + CF_METAFILEPICT, + CF_SYLK, + CF_DIF, + CF_TIFF, + CF_OEMTEXT, + CF_DIB, + CF_PALETTE, + CF_PENDATA, + CF_RIFF, + CF_WAVE, + CF_UNICODETEXT, + CF_ENHMETAFILE, + CF_HDROP, + CF_LOCALE, + CF_MAX, // = 0x0011 + CF_OWNERDISPLAY = 0x0080, + CF_DSPTEXT, + CF_DSPBITMAP, + CF_DSPMETAFILEPICT, // = 0x0083 + CF_DSPENHMETAFILE = 0x008E, + CF_PRIVATEFIRST = 0x0200, + CF_PRIVATELAST = 0x02FF, + CF_GDIOBJFIRST = 0x0300, + CF_GDIOBJLAST = 0x03FF +} + +const HKL_PREV = 0; +const HKL_NEXT = 1; + +const KLF_ACTIVATE = 1; +const KLF_SUBSTITUTE_OK = 2; +const KLF_UNLOADPREVIOUS = 4; +const KLF_REORDER = 8; +const KLF_REPLACELANG = 16; +const KLF_NOTELLSHELL = 128; +const KLF_SETFORPROCESS = 256; +const KL_NAMELENGTH = 9; + +const MF_ENABLED = 0; +const MF_GRAYED = 1; +const MF_DISABLED = 2; +const MF_BITMAP = 4; +const MF_CHECKED = 8; +const MF_MENUBARBREAK = 32; +const MF_MENUBREAK = 64; +const MF_OWNERDRAW = 256; +const MF_POPUP = 16; +const MF_SEPARATOR = 0x800; +const MF_STRING = 0; +const MF_UNCHECKED = 0; +const MF_DEFAULT = 4096; +const MF_SYSMENU = 0x2000; +const MF_HELP = 0x4000; +const MF_END = 128; +const MF_RIGHTJUSTIFY = 0x4000; +const MF_MOUSESELECT = 0x8000; +const MF_INSERT = 0; +const MF_CHANGE = 128; +const MF_APPEND = 256; +const MF_DELETE = 512; +const MF_REMOVE = 4096; +const MF_USECHECKBITMAPS = 512; +const MF_UNHILITE = 0; +const MF_HILITE = 128; + +// Also defined in dbt.h +const BSM_ALLCOMPONENTS = 0; +const BSM_VXDS = 1; +const BSM_NETDRIVER = 2; +const BSM_INSTALLABLEDRIVERS = 4; +const BSM_APPLICATIONS = 8; +const BSM_ALLDESKTOPS = 16; + +const BSF_QUERY = 0x00000001; +const BSF_IGNORECURRENTTASK = 0x00000002; +const BSF_FLUSHDISK = 0x00000004; +const BSF_NOHANG = 0x00000008; +const BSF_POSTMESSAGE = 0x00000010; +const BSF_FORCEIFHUNG = 0x00000020; +const BSF_NOTIMEOUTIFNOTHUNG = 0x00000040; + +const BSF_ALLOWSFW = 0x00000080; +const BSF_SENDNOTIFYMESSAGE = 0x00000100; + +static if (_WIN32_WINNT >= 0x501) { + const BSF_RETURNHDESK = 0x00000200; + const BSF_LUID = 0x00000400; +} + +const BROADCAST_QUERY_DENY = 1112363332; +const DWORD ENUM_CURRENT_SETTINGS = -1; +const DWORD ENUM_REGISTRY_SETTINGS = -2; + +const CDS_UPDATEREGISTRY = 1; +const CDS_TEST = 2; +const CDS_FULLSCREEN = 4; +const CDS_GLOBAL = 8; +const CDS_SET_PRIMARY = 16; +const CDS_NORESET = 0x10000000; +const CDS_SETRECT = 0x20000000; +const CDS_RESET = 0x40000000; + +const DISP_CHANGE_RESTART = 1; +const DISP_CHANGE_SUCCESSFUL = 0; +const DISP_CHANGE_FAILED = -1; +const DISP_CHANGE_BADMODE = -2; +const DISP_CHANGE_NOTUPDATED = -3; +const DISP_CHANGE_BADFLAGS = -4; +const DISP_CHANGE_BADPARAM = -5; + +const BST_UNCHECKED = 0; +const BST_CHECKED = 1; +const BST_INDETERMINATE = 2; +const BST_PUSHED = 4; +const BST_FOCUS = 8; + +const MF_BYCOMMAND = 0; +const MF_BYPOSITION = 1024; +// [Redefined] MF_UNCHECKED=0 +// [Redefined] MF_HILITE=128 +// [Redefined] MF_UNHILITE=0 + +const CWP_ALL = 0; +const CWP_SKIPINVISIBLE = 1; +const CWP_SKIPDISABLED = 2; +const CWP_SKIPTRANSPARENT = 4; + +const IMAGE_BITMAP=0; +const IMAGE_ICON=1; +const IMAGE_CURSOR=2; +const IMAGE_ENHMETAFILE=3; + +const DF_ALLOWOTHERACCOUNTHOOK = 1; + +const DESKTOP_READOBJECTS = 1; +const DESKTOP_CREATEWINDOW = 2; +const DESKTOP_CREATEMENU = 4; +const DESKTOP_HOOKCONTROL = 8; +const DESKTOP_JOURNALRECORD = 16; +const DESKTOP_JOURNALPLAYBACK = 32; +const DESKTOP_ENUMERATE = 64; +const DESKTOP_WRITEOBJECTS = 128; +const DESKTOP_SWITCHDESKTOP = 256; + +const CW_USEDEFAULT = 0x80000000; + +enum { + WS_OVERLAPPED = 0, + WS_TILED = WS_OVERLAPPED, + WS_MAXIMIZEBOX = 0x00010000, + WS_MINIMIZEBOX = 0x00020000, + WS_TABSTOP = 0x00010000, + WS_GROUP = 0x00020000, + WS_THICKFRAME = 0x00040000, + WS_SIZEBOX = WS_THICKFRAME, + WS_SYSMENU = 0x00080000, + WS_HSCROLL = 0x00100000, + WS_VSCROLL = 0x00200000, + WS_DLGFRAME = 0x00400000, + WS_BORDER = 0x00800000, + WS_CAPTION = 0x00c00000, + WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, + WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, + WS_MAXIMIZE = 0x01000000, + WS_CLIPCHILDREN = 0x02000000, + WS_CLIPSIBLINGS = 0x04000000, + WS_DISABLED = 0x08000000, + WS_VISIBLE = 0x10000000, + WS_MINIMIZE = 0x20000000, + WS_ICONIC = WS_MINIMIZE, + WS_CHILD = 0x40000000, + WS_CHILDWINDOW = 0x40000000, + WS_POPUP = 0x80000000, + WS_POPUPWINDOW = WS_POPUP|WS_BORDER|WS_SYSMENU, +} + +const MDIS_ALLCHILDSTYLES = 1; + +const BS_3STATE = 5; +const BS_AUTO3STATE = 6; +const BS_AUTOCHECKBOX = 3; +const BS_AUTORADIOBUTTON = 9; +const BS_BITMAP = 128; +const BS_BOTTOM = 0x800; +const BS_CENTER = 0x300; +const BS_CHECKBOX = 2; +const BS_DEFPUSHBUTTON = 1; +const BS_GROUPBOX = 7; +const BS_ICON = 64; +const BS_LEFT = 256; +const BS_LEFTTEXT = 32; +const BS_MULTILINE = 0x2000; +const BS_NOTIFY = 0x4000; +const BS_OWNERDRAW = 0xb; +const BS_PUSHBUTTON = 0; +const BS_PUSHLIKE = 4096; +const BS_RADIOBUTTON = 4; +const BS_RIGHT = 512; +const BS_RIGHTBUTTON = 32; +const BS_TEXT = 0; +const BS_TOP = 0x400; +const BS_USERBUTTON = 8; +const BS_VCENTER = 0xc00; +const BS_FLAT = 0x8000; + +const CBS_AUTOHSCROLL = 64; +const CBS_DISABLENOSCROLL = 0x800; +const CBS_DROPDOWN = 2; +const CBS_DROPDOWNLIST = 3; +const CBS_HASSTRINGS = 512; +const CBS_LOWERCASE = 0x4000; +const CBS_NOINTEGRALHEIGHT = 0x400; +const CBS_OEMCONVERT = 128; +const CBS_OWNERDRAWFIXED = 16; +const CBS_OWNERDRAWVARIABLE = 32; +const CBS_SIMPLE = 1; +const CBS_SORT = 256; +const CBS_UPPERCASE = 0x2000; + +const ES_AUTOHSCROLL = 128; +const ES_AUTOVSCROLL = 64; +const ES_CENTER = 1; +const ES_LEFT = 0; +const ES_LOWERCASE = 16; +const ES_MULTILINE = 4; +const ES_NOHIDESEL = 256; +const ES_NUMBER = 0x2000; +const ES_OEMCONVERT = 0x400; +const ES_PASSWORD = 32; +const ES_READONLY = 0x800; +const ES_RIGHT = 2; +const ES_UPPERCASE = 8; +const ES_WANTRETURN = 4096; + +const LBS_DISABLENOSCROLL = 4096; +const LBS_EXTENDEDSEL = 0x800; +const LBS_HASSTRINGS = 64; +const LBS_MULTICOLUMN = 512; +const LBS_MULTIPLESEL = 8; +const LBS_NODATA = 0x2000; +const LBS_NOINTEGRALHEIGHT = 256; +const LBS_NOREDRAW = 4; +const LBS_NOSEL = 0x4000; +const LBS_NOTIFY = 1; +const LBS_OWNERDRAWFIXED = 16; +const LBS_OWNERDRAWVARIABLE = 32; +const LBS_SORT = 2; +const LBS_STANDARD = 0xa00003; +const LBS_USETABSTOPS = 128; +const LBS_WANTKEYBOARDINPUT = 0x400; + +const SBS_BOTTOMALIGN = 4; +const SBS_HORZ = 0; +const SBS_LEFTALIGN = 2; +const SBS_RIGHTALIGN = 4; +const SBS_SIZEBOX = 8; +const SBS_SIZEBOXBOTTOMRIGHTALIGN = 4; +const SBS_SIZEBOXTOPLEFTALIGN = 2; +const SBS_SIZEGRIP = 16; +const SBS_TOPALIGN = 2; +const SBS_VERT = 1; + +const SS_BITMAP = 14; +const SS_BLACKFRAME = 7; +const SS_BLACKRECT = 4; +const SS_CENTER = 1; +const SS_CENTERIMAGE = 512; +const SS_ENHMETAFILE = 15; +const SS_ETCHEDFRAME = 18; +const SS_ETCHEDHORZ = 16; +const SS_ETCHEDVERT = 17; +const SS_GRAYFRAME = 8; +const SS_GRAYRECT = 5; +const SS_ICON = 3; +const SS_LEFT = 0; +const SS_LEFTNOWORDWRAP = 0xc; +const SS_NOPREFIX = 128; +const SS_NOTIFY = 256; +const SS_OWNERDRAW = 0xd; +const SS_REALSIZEIMAGE = 0x800; +const SS_RIGHT = 2; +const SS_RIGHTJUST = 0x400; +const SS_SIMPLE = 11; +const SS_SUNKEN = 4096; +const SS_WHITEFRAME = 9; +const SS_WHITERECT = 6; +const SS_USERITEM = 10; +const SS_TYPEMASK = 0x0000001FL; +const SS_ENDELLIPSIS = 0x00004000L; +const SS_PATHELLIPSIS = 0x00008000L; +const SS_WORDELLIPSIS = 0x0000C000L; +const SS_ELLIPSISMASK = 0x0000C000L; + +const DS_ABSALIGN = 0x0001; +const DS_3DLOOK = 0x0004; +const DS_SYSMODAL = 0x0002; +const DS_FIXEDSYS = 0x0008; +const DS_NOFAILCREATE = 0x0010; +const DS_LOCALEDIT = 0x0020; +const DS_SETFONT = 0x0040; +const DS_MODALFRAME = 0x0080; +const DS_NOIDLEMSG = 0x0100; +const DS_SETFOREGROUND = 0x0200; +const DS_CONTROL = 0x0400; +const DS_CENTER = 0x0800; +const DS_CENTERMOUSE = 0x1000; +const DS_CONTEXTHELP = 0x2000; +const DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS; + +const WS_EX_ACCEPTFILES = 16; +const WS_EX_APPWINDOW = 0x40000; +const WS_EX_CLIENTEDGE = 512; +const WS_EX_COMPOSITED = 0x2000000; // XP +const WS_EX_CONTEXTHELP = 0x400; +const WS_EX_CONTROLPARENT = 0x10000; +const WS_EX_DLGMODALFRAME = 1; +const WS_EX_LAYERED = 0x80000; // w2k +const WS_EX_LAYOUTRTL = 0x400000; // w98, w2k +const WS_EX_LEFT = 0; +const WS_EX_LEFTSCROLLBAR = 0x4000; +const WS_EX_LTRREADING = 0; +const WS_EX_MDICHILD = 64; +const WS_EX_NOACTIVATE = 0x8000000; // w2k +const WS_EX_NOINHERITLAYOUT = 0x100000; // w2k +const WS_EX_NOPARENTNOTIFY = 4; +const WS_EX_OVERLAPPEDWINDOW = 0x300; +const WS_EX_PALETTEWINDOW = 0x188; +const WS_EX_RIGHT = 0x1000; +const WS_EX_RIGHTSCROLLBAR = 0; +const WS_EX_RTLREADING = 0x2000; +const WS_EX_STATICEDGE = 0x20000; +const WS_EX_TOOLWINDOW = 128; +const WS_EX_TOPMOST = 8; +const WS_EX_TRANSPARENT = 32; +const WS_EX_WINDOWEDGE = 256; + +const WINSTA_ENUMDESKTOPS = 1; +const WINSTA_READATTRIBUTES = 2; +const WINSTA_ACCESSCLIPBOARD = 4; +const WINSTA_CREATEDESKTOP = 8; +const WINSTA_WRITEATTRIBUTES = 16; +const WINSTA_ACCESSGLOBALATOMS = 32; +const WINSTA_EXITWINDOWS = 64; +const WINSTA_ENUMERATE = 256; +const WINSTA_READSCREEN = 512; + +const DDL_READWRITE = 0; +const DDL_READONLY = 1; +const DDL_HIDDEN = 2; +const DDL_SYSTEM = 4; +const DDL_DIRECTORY = 16; +const DDL_ARCHIVE = 32; +const DDL_POSTMSGS = 8192; +const DDL_DRIVES = 16384; +const DDL_EXCLUSIVE = 32768; + +const DC_ACTIVE = 0x00000001; +const DC_SMALLCAP = 0x00000002; +const DC_ICON = 0x00000004; +const DC_TEXT = 0x00000008; +const DC_INBUTTON = 0x00000010; + +const DC_GRADIENT = 0x00000020; +static if (_WIN32_WINNT >= 0x501) { + const DC_BUTTONS = 0x00001000; +} + +// Where are these documented? +//const DC_CAPTION = DC_ICON|DC_TEXT|DC_BUTTONS; +//const DC_NC = DC_CAPTION|DC_FRAME; + +const BDR_RAISEDOUTER = 1; +const BDR_SUNKENOUTER = 2; +const BDR_RAISEDINNER = 4; +const BDR_SUNKENINNER = 8; +const BDR_OUTER = 3; +const BDR_INNER = 0xc; +const BDR_RAISED = 5; +const BDR_SUNKEN = 10; + +const EDGE_RAISED = BDR_RAISEDOUTER|BDR_RAISEDINNER; +const EDGE_SUNKEN = BDR_SUNKENOUTER|BDR_SUNKENINNER; +const EDGE_ETCHED = BDR_SUNKENOUTER|BDR_RAISEDINNER; +const EDGE_BUMP = BDR_RAISEDOUTER|BDR_SUNKENINNER; + +const BF_LEFT = 1; +const BF_TOP = 2; +const BF_RIGHT = 4; +const BF_BOTTOM = 8; +const BF_TOPLEFT = BF_TOP|BF_LEFT; +const BF_TOPRIGHT = BF_TOP|BF_RIGHT; +const BF_BOTTOMLEFT = BF_BOTTOM|BF_LEFT; +const BF_BOTTOMRIGHT = BF_BOTTOM|BF_RIGHT; +const BF_RECT = BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM ; +const BF_DIAGONAL = 16; +const BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL|BF_TOP|BF_RIGHT; +const BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL|BF_TOP|BF_LEFT; +const BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL|BF_BOTTOM|BF_LEFT; +const BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL|BF_BOTTOM|BF_RIGHT; +const BF_MIDDLE = 0x800; +const BF_SOFT = 0x1000; +const BF_ADJUST = 0x2000; +const BF_FLAT = 0x4000; +const BF_MONO = 0x8000; + +enum { + DFC_CAPTION = 1, + DFC_MENU, + DFC_SCROLL, + DFC_BUTTON, + DFC_POPUPMENU // = 5 +} + +const DFCS_CAPTIONCLOSE = 0; +const DFCS_CAPTIONMIN = 1; +const DFCS_CAPTIONMAX = 2; +const DFCS_CAPTIONRESTORE = 3; +const DFCS_CAPTIONHELP = 4; + +const DFCS_MENUARROW = 0; +const DFCS_MENUCHECK = 1; +const DFCS_MENUBULLET = 2; +const DFCS_MENUARROWRIGHT = 4; + +const DFCS_SCROLLUP = 0; +const DFCS_SCROLLDOWN = 1; +const DFCS_SCROLLLEFT = 2; +const DFCS_SCROLLRIGHT = 3; +const DFCS_SCROLLCOMBOBOX = 5; +const DFCS_SCROLLSIZEGRIP = 8; +const DFCS_SCROLLSIZEGRIPRIGHT = 16; + +const DFCS_BUTTONCHECK = 0; +const DFCS_BUTTONRADIOIMAGE = 1; +const DFCS_BUTTONRADIOMASK = 2; +const DFCS_BUTTONRADIO = 4; +const DFCS_BUTTON3STATE = 8; +const DFCS_BUTTONPUSH = 16; +const DFCS_INACTIVE = 256; +const DFCS_PUSHED = 512; +const DFCS_CHECKED = 1024; +static if (_WIN32_WINNT >= 0x500) { + const DFCS_TRANSPARENT = 0x800; + const DFCS_HOT = 0x1000; +} +const DFCS_ADJUSTRECT = 0x2000; +const DFCS_FLAT = 0x4000; +const DFCS_MONO = 0x8000; + +enum { + DST_COMPLEX = 0, + DST_TEXT, + DST_PREFIXTEXT, + DST_ICON, + DST_BITMAP // = 4 +} + +const DSS_NORMAL = 0; +const DSS_UNION = 16; +const DSS_DISABLED = 32; +const DSS_MONO = 128; +const DSS_RIGHT = 0x8000; + +const DT_BOTTOM = 8; +const DT_CALCRECT = 1024; +const DT_CENTER = 1; +const DT_EDITCONTROL = 8192; +const DT_END_ELLIPSIS = 32768; +const DT_PATH_ELLIPSIS = 16384; +const DT_WORD_ELLIPSIS = 0x40000; +const DT_EXPANDTABS = 64; +const DT_EXTERNALLEADING = 512; +const DT_LEFT = 0; +const DT_MODIFYSTRING = 65536; +const DT_NOCLIP = 256; +const DT_NOPREFIX = 2048; +const DT_RIGHT = 2; +const DT_RTLREADING = 131072; +const DT_SINGLELINE = 32; +const DT_TABSTOP = 128; +const DT_TOP = 0; +const DT_VCENTER = 4; +const DT_WORDBREAK = 16; +const DT_INTERNAL = 4096; + +const WB_ISDELIMITER = 2; +const WB_LEFT = 0; +const WB_RIGHT = 1; + +const SB_HORZ = 0; +const SB_VERT = 1; +const SB_CTL = 2; +const SB_BOTH = 3; + +const ESB_DISABLE_BOTH = 3; +const ESB_DISABLE_DOWN = 2; +const ESB_DISABLE_LEFT = 1; +const ESB_DISABLE_LTUP = 1; +const ESB_DISABLE_RIGHT = 2; +const ESB_DISABLE_RTDN = 2; +const ESB_DISABLE_UP = 1; +const ESB_ENABLE_BOTH = 0; + +const SB_LINEUP = 0; +const SB_LINEDOWN = 1; +const SB_LINELEFT = 0; +const SB_LINERIGHT = 1; +const SB_PAGEUP = 2; +const SB_PAGEDOWN = 3; +const SB_PAGELEFT = 2; +const SB_PAGERIGHT = 3; +const SB_THUMBPOSITION = 4; +const SB_THUMBTRACK = 5; +const SB_ENDSCROLL = 8; +const SB_LEFT = 6; +const SB_RIGHT = 7; +const SB_BOTTOM = 7; +const SB_TOP = 6; + +//MACRO #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0) + +template MAKEINTRESOURCE_T (WORD i) +{ + const LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i); +} + +LPSTR MAKEINTRESOURCEA(WORD i) +{ + return cast(LPSTR)(i); +} + +LPWSTR MAKEINTRESOURCEW(WORD i) +{ + return cast(LPWSTR)(i); +} + +const RT_CURSOR = MAKEINTRESOURCE_T!(1); +const RT_BITMAP = MAKEINTRESOURCE_T!(2); +const RT_ICON = MAKEINTRESOURCE_T!(3); +const RT_MENU = MAKEINTRESOURCE_T!(4); +const RT_DIALOG = MAKEINTRESOURCE_T!(5); +const RT_STRING = MAKEINTRESOURCE_T!(6); +const RT_FONTDIR = MAKEINTRESOURCE_T!(7); +const RT_FONT = MAKEINTRESOURCE_T!(8); +const RT_ACCELERATOR = MAKEINTRESOURCE_T!(9); +const RT_RCDATA = MAKEINTRESOURCE_T!(10); +const RT_MESSAGETABLE = MAKEINTRESOURCE_T!(11); + +const RT_GROUP_CURSOR = MAKEINTRESOURCE_T!(12); +const RT_GROUP_ICON = MAKEINTRESOURCE_T!(14); +const RT_VERSION = MAKEINTRESOURCE_T!(16); +const RT_DLGINCLUDE = MAKEINTRESOURCE_T!(17); +const RT_PLUGPLAY = MAKEINTRESOURCE_T!(19); +const RT_VXD = MAKEINTRESOURCE_T!(20); +const RT_ANICURSOR = MAKEINTRESOURCE_T!(21); +const RT_ANIICON = MAKEINTRESOURCE_T!(22); +const RT_HTML = MAKEINTRESOURCE_T!(23); +const RT_MANIFEST = MAKEINTRESOURCE_T!(24); + +const CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(1); +const ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(2); +const ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(3); + +const EWX_LOGOFF = 0; +const EWX_SHUTDOWN = 1; +const EWX_REBOOT = 2; +const EWX_FORCE = 4; +const EWX_POWEROFF = 8; +static if (_WIN32_WINNT >= 0x500) { +const EWX_FORCEIFHUNG = 16; +} + +const CS_BYTEALIGNCLIENT = 4096; +const CS_BYTEALIGNWINDOW = 8192; +const CS_KEYCVTWINDOW = 4; +const CS_NOKEYCVT = 256; +const CS_CLASSDC = 64; +const CS_DBLCLKS = 8; +const CS_GLOBALCLASS = 16384; +const CS_HREDRAW = 2; +const CS_NOCLOSE = 512; +const CS_OWNDC = 32; +const CS_PARENTDC = 128; +const CS_SAVEBITS = 2048; +const CS_VREDRAW = 1; +const CS_IME = 0x10000; + +const GCW_ATOM = -32; +const GCL_CBCLSEXTRA = -20; +const GCL_CBWNDEXTRA = -18; +const GCL_HBRBACKGROUND = -10; +const GCL_HCURSOR = -12; +const GCL_HICON = -14; +const GCL_HICONSM = -34; +const GCL_HMODULE = -16; +const GCL_MENUNAME = -8; +const GCL_STYLE = -26; +const GCL_WNDPROC = -24; + +alias GCL_HICONSM GCLP_HICONSM; +alias GCL_HICON GCLP_HICON; +alias GCL_HCURSOR GCLP_HCURSOR; +alias GCL_HBRBACKGROUND GCLP_HBRBACKGROUND; +alias GCL_HMODULE GCLP_HMODULE; +alias GCL_MENUNAME GCLP_MENUNAME; +alias GCL_WNDPROC GCLP_WNDPROC; + +const IDC_ARROW = MAKEINTRESOURCE_T!(32512); +const IDC_IBEAM = MAKEINTRESOURCE_T!(32513); +const IDC_WAIT = MAKEINTRESOURCE_T!(32514); +const IDC_CROSS = MAKEINTRESOURCE_T!(32515); +const IDC_UPARROW = MAKEINTRESOURCE_T!(32516); +const IDC_SIZENWSE = MAKEINTRESOURCE_T!(32642); +const IDC_SIZENESW = MAKEINTRESOURCE_T!(32643); +const IDC_SIZEWE = MAKEINTRESOURCE_T!(32644); +const IDC_SIZENS = MAKEINTRESOURCE_T!(32645); +const IDC_SIZEALL = MAKEINTRESOURCE_T!(32646); +const IDC_NO = MAKEINTRESOURCE_T!(32648); +static if (_WIN32_WINNT >= 0x500) { + const IDC_HAND = MAKEINTRESOURCE_T!(32649); +} +const IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650); +const IDC_HELP = MAKEINTRESOURCE_T!(32651); +const IDC_ICON = MAKEINTRESOURCE_T!(32641); +const IDC_SIZE = MAKEINTRESOURCE_T!(32640); +const IDI_APPLICATION = MAKEINTRESOURCE_T!(32512); +const IDI_HAND = MAKEINTRESOURCE_T!(32513); +const IDI_QUESTION = MAKEINTRESOURCE_T!(32514); +const IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515); +const IDI_ASTERISK = MAKEINTRESOURCE_T!(32516); +const IDI_WINLOGO = MAKEINTRESOURCE_T!(32517); +static if (_WIN32_WINNT >= 0x600) { + const IDI_SHIELD = MAKEINTRESOURCE_T!(32518); +} + +const IDI_WARNING = IDI_EXCLAMATION; +const IDI_ERROR = IDI_HAND; +const IDI_INFORMATION = IDI_ASTERISK; + +static if(_WIN32_WINNT >= 0x500) { + +const MNGOF_TOPGAP = 0x00000001; +const MNGOF_BOTTOMGAP = 0x00000002; +const MNGO_NOINTERFACE = 0x00000000; +const MNGO_NOERROR = 0x00000001; + +} + +const MIIM_STATE = 1; +const MIIM_ID = 2; +const MIIM_SUBMENU = 4; +const MIIM_CHECKMARKS = 8; +const MIIM_TYPE = 16; +const MIIM_DATA = 32; +const MIIM_STRING = 64; +const MIIM_BITMAP = 128; +const MIIM_FTYPE = 256; + +static if (_WIN32_WINNT >= 0x500) { + + const MIM_MAXHEIGHT = 1; + const MIM_BACKGROUND = 2; + const MIM_HELPID = 4; + const MIM_MENUDATA = 8; + const MIM_STYLE = 16; + const MIM_APPLYTOSUBMENUS = 0x80000000L; + + const MNS_NOCHECK = 0x80000000; + const MNS_MODELESS = 0x40000000; + const MNS_DRAGDROP = 0x20000000; + const MNS_AUTODISMISS = 0x10000000; + const MNS_NOTIFYBYPOS = 0x08000000; + const MNS_CHECKORBMP = 0x04000000; + +} + +const MFT_BITMAP = 4; +const MFT_MENUBARBREAK = 32; +const MFT_MENUBREAK = 64; +const MFT_OWNERDRAW = 256; +const MFT_RADIOCHECK = 512; +const MFT_RIGHTJUSTIFY = 0x4000; +const MFT_SEPARATOR = 0x800; +const MFT_RIGHTORDER = 0x2000L; +const MFT_STRING = 0; + +const MFS_CHECKED = 8; +const MFS_DEFAULT = 4096; +const MFS_DISABLED = 3; +const MFS_ENABLED = 0; +const MFS_GRAYED = 3; +const MFS_HILITE = 128; +const MFS_UNCHECKED = 0; +const MFS_UNHILITE = 0; + +const GW_HWNDNEXT = 2; +const GW_HWNDPREV = 3; +const GW_CHILD = 5; +const GW_HWNDFIRST = 0; +const GW_HWNDLAST = 1; +const GW_OWNER = 4; + +const SW_HIDE = 0; +const SW_NORMAL = 1; +const SW_SHOWNORMAL = 1; +const SW_SHOWMINIMIZED = 2; +const SW_MAXIMIZE = 3; +const SW_SHOWMAXIMIZED = 3; +const SW_SHOWNOACTIVATE = 4; +const SW_SHOW = 5; +const SW_MINIMIZE = 6; +const SW_SHOWMINNOACTIVE = 7; +const SW_SHOWNA = 8; +const SW_RESTORE = 9; +const SW_SHOWDEFAULT = 10; +const SW_FORCEMINIMIZE = 11; +const SW_MAX = 11; + +const MB_USERICON = 128; +const MB_ICONASTERISK = 64; +const MB_ICONEXCLAMATION = 0x30; +const MB_ICONWARNING = 0x30; +const MB_ICONERROR = 16; +const MB_ICONHAND = 16; +const MB_ICONQUESTION = 32; +const MB_OK = 0; +const MB_ABORTRETRYIGNORE = 2; +const MB_APPLMODAL = 0; +const MB_DEFAULT_DESKTOP_ONLY = 0x20000; +const MB_HELP = 0x4000; +const MB_RIGHT = 0x80000; +const MB_RTLREADING = 0x100000; +const MB_TOPMOST = 0x40000; +const MB_DEFBUTTON1 = 0; +const MB_DEFBUTTON2 = 256; +const MB_DEFBUTTON3 = 512; +const MB_DEFBUTTON4 = 0x300; +const MB_ICONINFORMATION = 64; +const MB_ICONSTOP = 16; +const MB_OKCANCEL = 1; +const MB_RETRYCANCEL = 5; + +const MB_SERVICE_NOTIFICATION = 0x00200000; +const MB_SERVICE_NOTIFICATION_NT3X = 0x00040000; + +const MB_SETFOREGROUND = 0x10000; +const MB_SYSTEMMODAL = 4096; +const MB_TASKMODAL = 0x2000; +const MB_YESNO = 4; +const MB_YESNOCANCEL = 3; +const MB_ICONMASK = 240; +const MB_DEFMASK = 3840; +const MB_MODEMASK = 0x00003000; +const MB_MISCMASK = 0x0000C000; +const MB_NOFOCUS = 0x00008000; +const MB_TYPEMASK = 15; +// [Redefined] MB_TOPMOST=0x40000 +static if (_WIN32_WINNT >= 0x500) { + const MB_CANCELTRYCONTINUE=6; +} + +const IDOK = 1; +const IDCANCEL = 2; +const IDABORT = 3; +const IDRETRY = 4; +const IDIGNORE = 5; +const IDYES = 6; +const IDNO = 7; +static if (_WIN32_WINNT >= 0x400) { + const IDCLOSE = 8; + const IDHELP = 9; +} +static if (_WIN32_WINNT >= 0x500) { + const IDTRYAGAIN = 10; + const IDCONTINUE = 11; +} + +const GWL_EXSTYLE = -20; +const GWL_STYLE = -16; +const GWL_WNDPROC = -4; +const GWLP_WNDPROC = -4; +const GWL_HINSTANCE = -6; +const GWLP_HINSTANCE = -6; +const GWL_HWNDPARENT = -8; +const GWLP_HWNDPARENT = -8; +const GWL_ID = -12; +const GWLP_ID = -12; +const GWL_USERDATA = -21; +const GWLP_USERDATA = -21; + +const DWL_DLGPROC = 4; +const DWLP_DLGPROC = 4; +const DWL_MSGRESULT = 0; +const DWLP_MSGRESULT = 0; +const DWL_USER = 8; +const DWLP_USER = 8; + +const QS_KEY = 1; +const QS_MOUSEMOVE = 2; +const QS_MOUSEBUTTON = 4; +const QS_MOUSE = 6; +const QS_POSTMESSAGE = 8; +const QS_TIMER = 16; +const QS_PAINT = 32; +const QS_SENDMESSAGE = 64; +const QS_HOTKEY = 128; +const QS_ALLPOSTMESSAGE = 256; +static if (_WIN32_WINNT >= 0x501) { +const QS_RAWINPUT = 1024; +const QS_INPUT = 1031; +const QS_ALLEVENTS = 1215; +const QS_ALLINPUT = 1279; +} else { +const QS_INPUT = 7; +const QS_ALLEVENTS = 191; +const QS_ALLINPUT = 255; +} + +const MWMO_WAITALL = 1; +const MWMO_ALERTABLE = 2; +const MWMO_INPUTAVAILABLE = 4; + +const COLOR_3DDKSHADOW=21; +const COLOR_3DFACE=15; +const COLOR_3DHILIGHT=20; +const COLOR_3DHIGHLIGHT=20; +const COLOR_3DLIGHT=22; +const COLOR_BTNHILIGHT=20; +const COLOR_3DSHADOW=16; +const COLOR_ACTIVEBORDER=10; +const COLOR_ACTIVECAPTION=2; +const COLOR_APPWORKSPACE=12; +const COLOR_BACKGROUND=1; +const COLOR_DESKTOP=1; +const COLOR_BTNFACE=15; +const COLOR_BTNHIGHLIGHT=20; +const COLOR_BTNSHADOW=16; +const COLOR_BTNTEXT=18; +const COLOR_CAPTIONTEXT=9; +const COLOR_GRAYTEXT=17; +const COLOR_HIGHLIGHT=13; +const COLOR_HIGHLIGHTTEXT=14; +const COLOR_INACTIVEBORDER=11; +const COLOR_INACTIVECAPTION=3; +const COLOR_INACTIVECAPTIONTEXT=19; +const COLOR_INFOBK=24; +const COLOR_INFOTEXT=23; +const COLOR_MENU=4; +const COLOR_MENUTEXT=7; +const COLOR_SCROLLBAR=0; +const COLOR_WINDOW=5; +const COLOR_WINDOWFRAME=6; +const COLOR_WINDOWTEXT=8; +const COLOR_HOTLIGHT=26; +const COLOR_GRADIENTACTIVECAPTION=27; +const COLOR_GRADIENTINACTIVECAPTION=28; + +const CTLCOLOR_MSGBOX=0; +const CTLCOLOR_EDIT=1; +const CTLCOLOR_LISTBOX=2; +const CTLCOLOR_BTN=3; +const CTLCOLOR_DLG=4; +const CTLCOLOR_SCROLLBAR=5; +const CTLCOLOR_STATIC=6; +const CTLCOLOR_MAX=7; + +// For GetSystemMetrics() +enum : int { + SM_CXSCREEN = 0, + SM_CYSCREEN, + SM_CXVSCROLL, + SM_CYHSCROLL, + SM_CYCAPTION, + SM_CXBORDER, + SM_CYBORDER, + SM_CXDLGFRAME, // = 7, + SM_CXFIXEDFRAME = SM_CXDLGFRAME, + SM_CYDLGFRAME, // =8, + SM_CYFIXEDFRAME = SM_CYDLGFRAME, + SM_CYVTHUMB = 9, + SM_CXHTHUMB, + SM_CXICON, + SM_CYICON, + SM_CXCURSOR, + SM_CYCURSOR, + SM_CYMENU, + SM_CXFULLSCREEN, + SM_CYFULLSCREEN, + SM_CYKANJIWINDOW, + SM_MOUSEPRESENT, + SM_CYVSCROLL, + SM_CXHSCROLL, + SM_DEBUG, + SM_SWAPBUTTON, + SM_RESERVED1, + SM_RESERVED2, + SM_RESERVED3, + SM_RESERVED4, + SM_CXMIN, + SM_CYMIN, + SM_CXSIZE, + SM_CYSIZE, + SM_CXSIZEFRAME, // = 32, + SM_CXFRAME = SM_CXSIZEFRAME, + SM_CYSIZEFRAME, // = 33 + SM_CYFRAME = SM_CYSIZEFRAME, + SM_CXMINTRACK, + SM_CYMINTRACK, + SM_CXDOUBLECLK, + SM_CYDOUBLECLK, + SM_CXICONSPACING, + SM_CYICONSPACING, + SM_MENUDROPALIGNMENT, + SM_PENWINDOWS, + SM_DBCSENABLED, + SM_CMOUSEBUTTONS, + SM_SECURE, + SM_CXEDGE, + SM_CYEDGE, + SM_CXMINSPACING, + SM_CYMINSPACING, + SM_CXSMICON, + SM_CYSMICON, + SM_CYSMCAPTION, + SM_CXSMSIZE, + SM_CYSMSIZE, + SM_CXMENUSIZE, + SM_CYMENUSIZE, + SM_ARRANGE, + SM_CXMINIMIZED, + SM_CYMINIMIZED, + SM_CXMAXTRACK, + SM_CYMAXTRACK, + SM_CXMAXIMIZED, + SM_CYMAXIMIZED, + SM_NETWORK, // = 63 + SM_CLEANBOOT = 67, + SM_CXDRAG, + SM_CYDRAG, + SM_SHOWSOUNDS, + SM_CXMENUCHECK, + SM_CYMENUCHECK, + SM_SLOWMACHINE, + SM_MIDEASTENABLED, + // The next values aren't supported in Win95. + SM_MOUSEWHEELPRESENT, + SM_XVIRTUALSCREEN, + SM_YVIRTUALSCREEN, + SM_CXVIRTUALSCREEN, + SM_CYVIRTUALSCREEN, + SM_CMONITORS, + SM_SAMEDISPLAYFORMAT, + SM_IMMENABLED, + SM_CXFOCUSBORDER, + SM_CYFOCUSBORDER, // = 84 + SM_TABLETPC = 86, + SM_MEDIACENTER = 87, + SM_REMOTESESSION = 0x1000, + // These are only for WinXP and later + SM_SHUTTINGDOWN = 0x2000, + SM_REMOTECONTROL = 0x2001 +} + +const ARW_BOTTOMLEFT=0; +const ARW_BOTTOMRIGHT=1; +const ARW_HIDE=8; +const ARW_TOPLEFT=2; +const ARW_TOPRIGHT=3; +const ARW_DOWN=4; +const ARW_LEFT=0; +const ARW_RIGHT=0; +const ARW_UP=4; + +const UOI_FLAGS=1; +const UOI_NAME=2; +const UOI_TYPE=3; +const UOI_USER_SID=4; + +// For the fuLoad parameter of LoadImage() +enum : UINT { + LR_DEFAULTCOLOR = 0, + LR_MONOCHROME = 1, + LR_COLOR = 2, + LR_COPYRETURNORG = 4, + LR_COPYDELETEORG = 8, + LR_LOADFROMFILE = 16, + LR_LOADTRANSPARENT = 32, + LR_DEFAULTSIZE = 64, + LR_LOADREALSIZE = 128, + LR_LOADMAP3DCOLORS = 4096, + LR_CREATEDIBSECTION = 8192, + LR_COPYFROMRESOURCE = 16384, + LR_SHARED = 32768 +} + +const KEYEVENTF_EXTENDEDKEY = 0x00000001; +const KEYEVENTF_KEYUP = 00000002; +static if (_WIN32_WINNT >= 0x500) { +const KEYEVENTF_UNICODE = 0x00000004; +const KEYEVENTF_SCANCODE = 0x00000008; +} + +const OBM_BTNCORNERS = 32758; +const OBM_BTSIZE = 32761; +const OBM_CHECK = 32760; +const OBM_CHECKBOXES = 32759; +const OBM_CLOSE = 32754; +const OBM_COMBO = 32738; +const OBM_DNARROW = 32752; +const OBM_DNARROWD = 32742; +const OBM_DNARROWI = 32736; +const OBM_LFARROW = 32750; +const OBM_LFARROWI = 32734; +const OBM_LFARROWD = 32740; +const OBM_MNARROW = 32739; +const OBM_OLD_CLOSE = 32767; +const OBM_OLD_DNARROW = 32764; +const OBM_OLD_LFARROW = 32762; +const OBM_OLD_REDUCE = 32757; +const OBM_OLD_RESTORE = 32755; +const OBM_OLD_RGARROW = 32763; +const OBM_OLD_UPARROW = 32765; +const OBM_OLD_ZOOM = 32756; +const OBM_REDUCE = 32749; +const OBM_REDUCED = 32746; +const OBM_RESTORE = 32747; +const OBM_RESTORED = 32744; +const OBM_RGARROW = 32751; +const OBM_RGARROWD = 32741; +const OBM_RGARROWI = 32735; +const OBM_SIZE = 32766; +const OBM_UPARROW = 32753; +const OBM_UPARROWD = 32743; +const OBM_UPARROWI = 32737; +const OBM_ZOOM = 32748; +const OBM_ZOOMD = 32745; + +const OCR_NORMAL = 32512; +const OCR_IBEAM = 32513; +const OCR_WAIT = 32514; +const OCR_CROSS = 32515; +const OCR_UP = 32516; +const OCR_SIZE = 32640; +const OCR_ICON = 32641; +const OCR_SIZENWSE = 32642; +const OCR_SIZENESW = 32643; +const OCR_SIZEWE = 32644; +const OCR_SIZENS = 32645; +const OCR_SIZEALL = 32646; +const OCR_NO = 32648; +const OCR_APPSTARTING = 32650; + +const OIC_SAMPLE = 32512; +const OIC_HAND = 32513; +const OIC_QUES = 32514; +const OIC_BANG = 32515; +const OIC_NOTE = 32516; +const OIC_WINLOGO = 32517; +const OIC_WARNING = OIC_BANG; +const OIC_ERROR = OIC_HAND; +const OIC_INFORMATION = OIC_NOTE; + +const HELPINFO_MENUITEM = 2; +const HELPINFO_WINDOW = 1; + +static if (_WIN32_WINNT >= 0x501) { + +const WTS_CONSOLE_CONNECT = 0x1; +const WTS_CONSOLE_DISCONNECT = 0x2; +const WTS_REMOTE_CONNECT = 0x3; +const WTS_REMOTE_DISCONNECT = 0x4; +const WTS_SESSION_LOGON = 0x5; +const WTS_SESSION_LOGOFF = 0x6; +const WTS_SESSION_LOCK = 0x7; +const WTS_SESSION_UNLOCK = 0x8; +const WTS_SESSION_REMOTE_CONTROL = 0x9; + +} + +const MSGF_DIALOGBOX = 0; +const MSGF_MESSAGEBOX = 1; +const MSGF_MENU = 2; +const MSGF_MOVE = 3; +const MSGF_SIZE = 4; +const MSGF_SCROLLBAR = 5; +const MSGF_NEXTWINDOW = 6; +const MSGF_MAINLOOP = 8; +const MSGF_USER = 4096; + +const MOUSEEVENTF_MOVE = 1; +const MOUSEEVENTF_LEFTDOWN = 2; +const MOUSEEVENTF_LEFTUP = 4; +const MOUSEEVENTF_RIGHTDOWN = 8; +const MOUSEEVENTF_RIGHTUP = 16; +const MOUSEEVENTF_MIDDLEDOWN = 32; +const MOUSEEVENTF_MIDDLEUP = 64; +const MOUSEEVENTF_WHEEL = 0x0800; +const MOUSEEVENTF_ABSOLUTE = 32768; + +const PM_NOREMOVE = 0; +const PM_REMOVE = 1; +const PM_NOYIELD = 2; + +static if (_WIN32_WINNT >= 0x500) { +const PM_QS_INPUT = (QS_INPUT << 16); +const PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE|QS_HOTKEY|QS_TIMER) << 16); +const PM_QS_PAINT = (QS_PAINT << 16); +const PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16); +} +const HWND + HWND_BROADCAST = cast(HWND)0xffff, + HWND_BOTTOM = cast(HWND)1, + HWND_NOTOPMOST = cast(HWND)(-2), + HWND_TOP = cast(HWND)0, + HWND_TOPMOST = cast(HWND)(-1), + HWND_DESKTOP = cast(HWND)0, + HWND_MESSAGE = cast(HWND)(-3);// w2k + +const RDW_INVALIDATE = 1; +const RDW_INTERNALPAINT = 2; +const RDW_ERASE = 4; +const RDW_VALIDATE = 8; +const RDW_NOINTERNALPAINT = 16; +const RDW_NOERASE = 32; +const RDW_NOCHILDREN = 64; +const RDW_ALLCHILDREN = 128; +const RDW_UPDATENOW = 256; +const RDW_ERASENOW = 512; +const RDW_FRAME = 1024; +const RDW_NOFRAME = 2048; + +const SMTO_NORMAL = 0; +const SMTO_BLOCK = 1; +const SMTO_ABORTIFHUNG = 2; + +const SIF_ALL = 23; +const SIF_PAGE = 2; +const SIF_POS = 4; +const SIF_RANGE = 1; +const SIF_DISABLENOSCROLL = 8; +const SIF_TRACKPOS = 16; + +const SWP_DRAWFRAME = 32; +const SWP_FRAMECHANGED = 32; +const SWP_HIDEWINDOW = 128; +const SWP_NOACTIVATE = 16; +const SWP_NOCOPYBITS = 256; +const SWP_NOMOVE = 2; +const SWP_NOSIZE = 1; +const SWP_NOREDRAW = 8; +const SWP_NOZORDER = 4; +const SWP_SHOWWINDOW = 64; +const SWP_NOOWNERZORDER = 512; +const SWP_NOREPOSITION = 512; +const SWP_NOSENDCHANGING = 1024; +const SWP_DEFERERASE = 8192; +const SWP_ASYNCWINDOWPOS = 16384; + +enum { // passed variously as int or WPARAM + HSHELL_WINDOWCREATED = 1, + HSHELL_WINDOWDESTROYED, + HSHELL_ACTIVATESHELLWINDOW, + HSHELL_WINDOWACTIVATED, + HSHELL_GETMINRECT, + HSHELL_REDRAW, + HSHELL_TASKMAN, + HSHELL_LANGUAGE, // = 8 + HSHELL_ENDTASK = 10, + HSHELL_ACCESSIBILITYSTATE, + HSHELL_APPCOMMAND, // = 12 + HSHELL_RUDEAPPACTIVATED = 32772, + HSHELL_FLASH = 32774 +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + HSHELL_WINDOWREPLACED = 13, + HSHELL_WINDOWREPLACING + } +} + +enum SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001; +enum SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000; + +const SPI_GETACCESSTIMEOUT=60; +const SPI_GETACTIVEWNDTRKTIMEOUT=8194; +const SPI_GETANIMATION=72; +const SPI_GETBEEP=1; +const SPI_GETBORDER=5; +const SPI_GETDEFAULTINPUTLANG=89; +const SPI_GETDRAGFULLWINDOWS=38; +const SPI_GETFASTTASKSWITCH=35; +const SPI_GETFILTERKEYS=50; +const SPI_GETFONTSMOOTHING=74; +const SPI_GETGRIDGRANULARITY=18; +const SPI_GETHIGHCONTRAST=66; +const SPI_GETICONMETRICS=45; +const SPI_GETICONTITLELOGFONT=31; +const SPI_GETICONTITLEWRAP=25; +const SPI_GETKEYBOARDDELAY=22; +const SPI_GETKEYBOARDPREF=68; +const SPI_GETKEYBOARDSPEED=10; +const SPI_GETLOWPOWERACTIVE=83; +const SPI_GETLOWPOWERTIMEOUT=79; +const SPI_GETMENUDROPALIGNMENT=27; +const SPI_GETMINIMIZEDMETRICS=43; +const SPI_GETMOUSE=3; +const SPI_GETMOUSEKEYS=54; +const SPI_GETMOUSETRAILS=94; +const SPI_GETNONCLIENTMETRICS=41; +const SPI_GETPOWEROFFACTIVE=84; +const SPI_GETPOWEROFFTIMEOUT=80; +const SPI_GETSCREENREADER=70; +const SPI_GETSCREENSAVEACTIVE=16; +const SPI_GETSCREENSAVETIMEOUT=14; +const SPI_GETSERIALKEYS=62; +const SPI_GETSHOWSOUNDS=56; +const SPI_GETSOUNDSENTRY=64; +const SPI_GETSTICKYKEYS=58; +const SPI_GETTOGGLEKEYS=52; +const SPI_GETWHEELSCROLLLINES=104; +const SPI_GETWINDOWSEXTENSION=92; +const SPI_GETWORKAREA=48; +const SPI_ICONHORIZONTALSPACING=13; +const SPI_ICONVERTICALSPACING=24; +const SPI_LANGDRIVER=12; +const SPI_SCREENSAVERRUNNING=97; +const SPI_SETACCESSTIMEOUT=61; +const SPI_SETACTIVEWNDTRKTIMEOUT=8195; +const SPI_SETANIMATION=73; +const SPI_SETBEEP=2; +const SPI_SETBORDER=6; +const SPI_SETDEFAULTINPUTLANG=90; +const SPI_SETDESKPATTERN=21; +const SPI_SETDESKWALLPAPER=20; +const SPI_SETDOUBLECLICKTIME=32; +const SPI_SETDOUBLECLKHEIGHT=30; +const SPI_SETDOUBLECLKWIDTH=29; +const SPI_SETDRAGFULLWINDOWS=37; +const SPI_SETDRAGHEIGHT=77; +const SPI_SETDRAGWIDTH=76; +const SPI_SETFASTTASKSWITCH=36; +const SPI_SETFILTERKEYS=51; +const SPI_SETFONTSMOOTHING=75; +const SPI_SETGRIDGRANULARITY=19; +const SPI_SETHANDHELD=78; +const SPI_SETHIGHCONTRAST=67; +const SPI_SETICONMETRICS=46; +const SPI_SETICONTITLELOGFONT=34; +const SPI_SETICONTITLEWRAP=26; +const SPI_SETKEYBOARDDELAY=23; +const SPI_SETKEYBOARDPREF=69; +const SPI_SETKEYBOARDSPEED=11; +const SPI_SETLANGTOGGLE=91; +const SPI_SETLOWPOWERACTIVE=85; +const SPI_SETLOWPOWERTIMEOUT=81; +const SPI_SETMENUDROPALIGNMENT=28; +const SPI_SETMINIMIZEDMETRICS=44; +const SPI_SETMOUSE=4; +const SPI_SETMOUSEBUTTONSWAP=33; +const SPI_SETMOUSEKEYS=55; +const SPI_SETMOUSETRAILS=93; +const SPI_SETNONCLIENTMETRICS=42; +const SPI_SETPENWINDOWS=49; +const SPI_SETPOWEROFFACTIVE=86; +const SPI_SETPOWEROFFTIMEOUT=82; +const SPI_SETSCREENREADER=71; +const SPI_SETSCREENSAVEACTIVE=17; +const SPI_SETSCREENSAVERRUNNING=97; +const SPI_SETSCREENSAVETIMEOUT=15; +const SPI_SETSERIALKEYS=63; +const SPI_SETSHOWSOUNDS=57; +const SPI_SETSOUNDSENTRY=65; +const SPI_SETSTICKYKEYS=59; +const SPI_SETTOGGLEKEYS=53; +const SPI_SETWHEELSCROLLLINES=105; +const SPI_SETWORKAREA=47; + +static if (_WIN32_WINNT >= 0x500) { +const SPI_GETDESKWALLPAPER=115; +const SPI_GETMOUSESPEED=112; +const SPI_GETSCREENSAVERRUNNING=114; +const SPI_GETACTIVEWINDOWTRACKING=0x1000; +const SPI_GETACTIVEWNDTRKZORDER=0x100C; +const SPI_GETCOMBOBOXANIMATION=0x1004; +const SPI_GETCURSORSHADOW=0x101A; +const SPI_GETGRADIENTCAPTIONS=0x1008; +const SPI_GETHOTTRACKING=0x100E; +const SPI_GETKEYBOARDCUES=0x100A; +const SPI_GETLISTBOXSMOOTHSCROLLING=0x1006; +const SPI_GETMENUANIMATION=0x1002; +const SPI_GETMENUFADE=0x1012; +const SPI_GETMENUUNDERLINES=0x100A; +const SPI_GETSELECTIONFADE=0x1014; +const SPI_GETTOOLTIPANIMATION=0x1016; +const SPI_GETTOOLTIPFADE=0x1018; +const SPI_SETACTIVEWINDOWTRACKING=0x1001; +const SPI_SETACTIVEWNDTRKZORDER=0x100D; +const SPI_SETCOMBOBOXANIMATION=0x1005; +const SPI_SETCURSORSHADOW=0x101B; +const SPI_SETGRADIENTCAPTIONS=0x1009; +const SPI_SETHOTTRACKING=0x100F; +const SPI_SETKEYBOARDCUES=0x100B; +const SPI_SETLISTBOXSMOOTHSCROLLING=0x1007; +const SPI_SETMENUANIMATION=0x1003; +const SPI_SETMENUFADE=0x1013; +const SPI_SETMENUUNDERLINES=0x100B; +const SPI_SETMOUSESPEED=113; +const SPI_SETSELECTIONFADE=0x1015; +const SPI_SETTOOLTIPANIMATION=0x1017; +const SPI_SETTOOLTIPFADE=0x1019; +} + +const SPIF_UPDATEINIFILE=1; +const SPIF_SENDWININICHANGE=2; +const SPIF_SENDCHANGE=2; +// [Redefined] ATF_ONOFFFEEDBACK=2 +// [Redefined] ATF_TIMEOUTON=1 +const WM_APP=32768; +const WM_ACTIVATE=6; +const WM_ACTIVATEAPP=28; +// FIXME/CHECK: Are WM_AFX {FIRST, LAST} valid for _WIN32_WINNT < 0x400? +const WM_AFXFIRST=864; +const WM_AFXLAST=895; +const WM_ASKCBFORMATNAME=780; +const WM_CANCELJOURNAL=75; +const WM_CANCELMODE=31; +const WM_CAPTURECHANGED=533; +const WM_CHANGECBCHAIN=781; +const WM_CHAR=258; +const WM_CHARTOITEM=47; +const WM_CHILDACTIVATE=34; +const WM_CLEAR=771; +const WM_CLOSE=16; +const WM_COMMAND=273; +const WM_COMMNOTIFY=68; // obsolete +const WM_COMPACTING=65; +const WM_COMPAREITEM=57; +const WM_CONTEXTMENU=123; +const WM_COPY=769; +const WM_COPYDATA=74; +const WM_CREATE=1; +const WM_CTLCOLORBTN=309; +const WM_CTLCOLORDLG=310; +const WM_CTLCOLOREDIT=307; +const WM_CTLCOLORLISTBOX=308; +const WM_CTLCOLORMSGBOX=306; +const WM_CTLCOLORSCROLLBAR=311; +const WM_CTLCOLORSTATIC=312; +const WM_CUT=768; +const WM_DEADCHAR=259; +const WM_DELETEITEM=45; +const WM_DESTROY=2; +const WM_DESTROYCLIPBOARD=775; +const WM_DEVICECHANGE=537; +const WM_DEVMODECHANGE=27; +const WM_DISPLAYCHANGE=126; +const WM_DRAWCLIPBOARD=776; +const WM_DRAWITEM=43; +const WM_DROPFILES=563; +const WM_ENABLE=10; +const WM_ENDSESSION=22; +const WM_ENTERIDLE=289; +const WM_ENTERMENULOOP=529; +const WM_ENTERSIZEMOVE=561; +const WM_ERASEBKGND=20; +const WM_EXITMENULOOP=530; +const WM_EXITSIZEMOVE=562; +const WM_FONTCHANGE=29; +const WM_GETDLGCODE=135; +const WM_GETFONT=49; +const WM_GETHOTKEY=51; +const WM_GETICON=127; +const WM_GETMINMAXINFO=36; +const WM_GETTEXT=13; +const WM_GETTEXTLENGTH=14; +const WM_HANDHELDFIRST=856; +const WM_HANDHELDLAST=863; +const WM_HELP=83; +const WM_HOTKEY=786; +const WM_HSCROLL=276; +const WM_HSCROLLCLIPBOARD=782; +const WM_ICONERASEBKGND=39; +const WM_INITDIALOG=272; +const WM_INITMENU=278; +const WM_INITMENUPOPUP=279; +const WM_INPUTLANGCHANGE=81; +const WM_INPUTLANGCHANGEREQUEST=80; +const WM_KEYDOWN=256; +const WM_KEYUP=257; +const WM_KILLFOCUS=8; +const WM_MDIACTIVATE=546; +const WM_MDICASCADE=551; +const WM_MDICREATE=544; +const WM_MDIDESTROY=545; +const WM_MDIGETACTIVE=553; +const WM_MDIICONARRANGE=552; +const WM_MDIMAXIMIZE=549; +const WM_MDINEXT=548; +const WM_MDIREFRESHMENU=564; +const WM_MDIRESTORE=547; +const WM_MDISETMENU=560; +const WM_MDITILE=550; +const WM_MEASUREITEM=44; +static if (_WIN32_WINNT >= 0x500) { + const WM_UNINITMENUPOPUP=0x0125; + const WM_MENURBUTTONUP=290; + const WM_MENUCOMMAND=0x0126; + const WM_MENUGETOBJECT=0x0124; + const WM_MENUDRAG=0x0123; +} + +static if (_WIN32_WINNT >= 0x500) { + + enum { + WM_CHANGEUISTATE = 0x0127, + WM_UPDATEUISTATE = 0x0128, + WM_QUERYUISTATE = 0x0129 + } + + // LOWORD(wParam) values in WM_*UISTATE* + enum { + UIS_SET = 1, + UIS_CLEAR = 2, + UIS_INITIALIZE = 3 + } + + // HIWORD(wParam) values in WM_*UISTATE* + enum { + UISF_HIDEFOCUS = 0x1, + UISF_HIDEACCEL = 0x2 + } + +} + +static if (_WIN32_WINNT >= 0x501) { + + // HIWORD(wParam) values in WM_*UISTATE* + enum { + UISF_ACTIVE = 0x4 + } + +} + +const WM_MENUCHAR=288; +const WM_MENUSELECT=287; +const WM_MOVE=3; +const WM_MOVING=534; +const WM_NCACTIVATE=134; +const WM_NCCALCSIZE=131; +const WM_NCCREATE=129; +const WM_NCDESTROY=130; +const WM_NCHITTEST=132; +const WM_NCLBUTTONDBLCLK=163; +const WM_NCLBUTTONDOWN=161; +const WM_NCLBUTTONUP=162; +const WM_NCMBUTTONDBLCLK=169; +const WM_NCMBUTTONDOWN=167; +const WM_NCMBUTTONUP=168; +static if (_WIN32_WINNT >= 0x500) { +const WM_NCXBUTTONDOWN=171; +const WM_NCXBUTTONUP=172; +const WM_NCXBUTTONDBLCLK=173; +const WM_NCMOUSEHOVER=0x02A0; +const WM_NCMOUSELEAVE=0x02A2; +} +const WM_NCMOUSEMOVE=160; +const WM_NCPAINT=133; +const WM_NCRBUTTONDBLCLK=166; +const WM_NCRBUTTONDOWN=164; +const WM_NCRBUTTONUP=165; +const WM_NEXTDLGCTL=40; +const WM_NEXTMENU=531; +const WM_NOTIFY=78; +const WM_NOTIFYFORMAT=85; +const WM_NULL=0; +const WM_PAINT=15; +const WM_PAINTCLIPBOARD=777; +const WM_PAINTICON=38; +const WM_PALETTECHANGED=785; +const WM_PALETTEISCHANGING=784; +const WM_PARENTNOTIFY=528; +const WM_PASTE=770; +const WM_PENWINFIRST=896; +const WM_PENWINLAST=911; +const WM_POWER=72; +const WM_POWERBROADCAST=536; +const WM_PRINT=791; +const WM_PRINTCLIENT=792; +const WM_APPCOMMAND = 0x0319; +const WM_QUERYDRAGICON=55; +const WM_QUERYENDSESSION=17; +const WM_QUERYNEWPALETTE=783; +const WM_QUERYOPEN=19; +const WM_QUEUESYNC=35; +const WM_QUIT=18; +const WM_RENDERALLFORMATS=774; +const WM_RENDERFORMAT=773; +const WM_SETCURSOR=32; +const WM_SETFOCUS=7; +const WM_SETFONT=48; +const WM_SETHOTKEY=50; +const WM_SETICON=128; +const WM_SETREDRAW=11; +const WM_SETTEXT=12; +const WM_SETTINGCHANGE=26; +const WM_SHOWWINDOW=24; +const WM_SIZE=5; +const WM_SIZECLIPBOARD=779; +const WM_SIZING=532; +const WM_SPOOLERSTATUS=42; +const WM_STYLECHANGED=125; +const WM_STYLECHANGING=124; +const WM_SYSCHAR=262; +const WM_SYSCOLORCHANGE=21; +const WM_SYSCOMMAND=274; +const WM_SYSDEADCHAR=263; +const WM_SYSKEYDOWN=260; +const WM_SYSKEYUP=261; +static if(_WIN32_WINNT >= 0x501) { +const WM_TABLET_FIRST=704; +const WM_TABLET_LAST=735; +} +const WM_TCARD=82; +const WM_THEMECHANGED=794; +const WM_TIMECHANGE=30; +const WM_TIMER=275; +const WM_UNDO=772; +const WM_USER=1024; +const WM_USERCHANGED=84; +const WM_VKEYTOITEM=46; +const WM_VSCROLL=277; +const WM_VSCROLLCLIPBOARD=778; +const WM_WINDOWPOSCHANGED=71; +const WM_WINDOWPOSCHANGING=70; +const WM_WININICHANGE=26; +static if(_WIN32_WINNT >= 0x501) { +const WM_WTSSESSION_CHANGE=689; +} +const WM_INPUT=255; +const WM_KEYFIRST=256; +static if(_WIN32_WINNT >= 0x501) { +const WM_UNICHAR=265; +const WM_KEYLAST=265; +const UNICODE_NOCHAR=0xFFFF; +} else { +const WM_KEYLAST=264; +} +const WM_SYNCPAINT=136; +const WM_MOUSEACTIVATE=33; +const WM_MOUSEMOVE=512; +const WM_LBUTTONDOWN=513; +const WM_LBUTTONUP=514; +const WM_LBUTTONDBLCLK=515; +const WM_RBUTTONDOWN=516; +const WM_RBUTTONUP=517; +const WM_RBUTTONDBLCLK=518; +const WM_MBUTTONDOWN=519; +const WM_MBUTTONUP=520; +const WM_MBUTTONDBLCLK=521; +const WM_MOUSEWHEEL=522; +const WM_MOUSEFIRST=512; +static if (_WIN32_WINNT >= 0x600) { +const WM_XBUTTONDOWN=523; +const WM_XBUTTONUP=524; +const WM_XBUTTONDBLCLK=525; +const WM_MOUSEHWHEEL=526; +const WM_MOUSELAST=526; +} +else static if (_WIN32_WINNT >= 0x500) { +const WM_XBUTTONDOWN=523; +const WM_XBUTTONUP=524; +const WM_XBUTTONDBLCLK=525; +const WM_MOUSELAST=525; +} else { +const WM_MOUSELAST=522; +} +const WM_MOUSEHOVER=0x2A1; +const WM_MOUSELEAVE=0x2A3; +static if (_WIN32_WINNT >= 0x400) { +const WHEEL_DELTA=120; + +SHORT GET_WHEEL_DELTA_WPARAM(WPARAM wparam) +{ +return cast(SHORT) HIWORD(wparam); +} + +const WHEEL_PAGESCROLL = uint.max; +} +const BM_CLICK=245; +const BM_GETCHECK=240; +const BM_GETIMAGE=246; +const BM_GETSTATE=242; +const BM_SETCHECK=241; +const BM_SETIMAGE=247; +static if(_WIN32_WINNT >= 0x600) { + const BM_SETDONTCLICK = 248; +} +const BM_SETSTATE=243; +const BM_SETSTYLE=244; +const BN_CLICKED=0; +const BN_DBLCLK=5; +const BN_DISABLE=4; +const BN_DOUBLECLICKED=5; +const BN_HILITE=2; +const BN_KILLFOCUS=7; +const BN_PAINT=1; +const BN_PUSHED=2; +const BN_SETFOCUS=6; +const BN_UNHILITE=3; +const BN_UNPUSHED=3; +const CB_ADDSTRING=323; +const CB_DELETESTRING=324; +const CB_DIR=325; +const CB_FINDSTRING=332; +const CB_FINDSTRINGEXACT=344; +const CB_GETCOUNT=326; +const CB_GETCURSEL=327; +const CB_GETDROPPEDCONTROLRECT=338; +const CB_GETDROPPEDSTATE=343; +const CB_GETDROPPEDWIDTH=351; +const CB_GETEDITSEL=320; +const CB_GETEXTENDEDUI=342; +const CB_GETHORIZONTALEXTENT=349; +const CB_GETITEMDATA=336; +const CB_GETITEMHEIGHT=340; +const CB_GETLBTEXT=328; +const CB_GETLBTEXTLEN=329; +const CB_GETLOCALE=346; +const CB_GETTOPINDEX=347; +const CB_INITSTORAGE=353; +const CB_INSERTSTRING=330; +const CB_LIMITTEXT=321; +const CB_RESETCONTENT=331; +const CB_SELECTSTRING=333; +const CB_SETCURSEL=334; +const CB_SETDROPPEDWIDTH=352; +const CB_SETEDITSEL=322; +const CB_SETEXTENDEDUI=341; +const CB_SETHORIZONTALEXTENT=350; +const CB_SETITEMDATA=337; +const CB_SETITEMHEIGHT=339; +const CB_SETLOCALE=345; +const CB_SETTOPINDEX=348; +const CB_SHOWDROPDOWN=335; + +static if(_WIN32_WINNT >= 0x501) { +const CB_GETCOMBOBOXINFO = 356; +} + +const CBN_CLOSEUP=8; +const CBN_DBLCLK=2; +const CBN_DROPDOWN=7; +const CBN_EDITCHANGE=5; +const CBN_EDITUPDATE=6; +const CBN_ERRSPACE=(-1); +const CBN_KILLFOCUS=4; +const CBN_SELCHANGE=1; +const CBN_SELENDCANCEL=10; +const CBN_SELENDOK=9; +const CBN_SETFOCUS=3; + +const EM_CANUNDO=198; +const EM_CHARFROMPOS=215; +const EM_EMPTYUNDOBUFFER=205; +const EM_FMTLINES=200; +const EM_GETFIRSTVISIBLELINE=206; +const EM_GETHANDLE=189; +const EM_GETLIMITTEXT=213; +const EM_GETLINE=196; +const EM_GETLINECOUNT=186; +const EM_GETMARGINS=212; +const EM_GETMODIFY=184; +const EM_GETPASSWORDCHAR=210; +const EM_GETRECT=178; +const EM_GETSEL=176; +const EM_GETTHUMB=190; +const EM_GETWORDBREAKPROC=209; +const EM_LIMITTEXT=197; +const EM_LINEFROMCHAR=201; +const EM_LINEINDEX=187; +const EM_LINELENGTH=193; +const EM_LINESCROLL=182; +const EM_POSFROMCHAR=214; +const EM_REPLACESEL=194; +const EM_SCROLL=181; +const EM_SCROLLCARET=183; +const EM_SETHANDLE=188; +const EM_SETLIMITTEXT=197; +const EM_SETMARGINS=211; +const EM_SETMODIFY=185; +const EM_SETPASSWORDCHAR=204; +const EM_SETREADONLY=207; +const EM_SETRECT=179; +const EM_SETRECTNP=180; +const EM_SETSEL=177; +const EM_SETTABSTOPS=203; +const EM_SETWORDBREAKPROC=208; +const EM_UNDO=199; + +static if(_WIN32_WINNT >= 0x500) { + const EM_SETIMESTATUS=216; + const EM_GETIMESTATUS=217; +} + +const EN_CHANGE=768; +const EN_ERRSPACE=1280; +const EN_HSCROLL=1537; +const EN_KILLFOCUS=512; +const EN_MAXTEXT=1281; +const EN_SETFOCUS=256; +const EN_UPDATE=1024; +const EN_VSCROLL=1538; + +const LB_ADDFILE=406; +const LB_ADDSTRING=384; +const LB_DELETESTRING=386; +const LB_DIR=397; +const LB_FINDSTRING=399; +const LB_FINDSTRINGEXACT=418; +const LB_GETANCHORINDEX=413; +const LB_GETCARETINDEX=415; +const LB_GETCOUNT=395; +const LB_GETCURSEL=392; +const LB_GETHORIZONTALEXTENT=403; +const LB_GETITEMDATA=409; +const LB_GETITEMHEIGHT=417; +const LB_GETITEMRECT=408; +const LB_GETLOCALE=422; +const LB_GETSEL=391; +const LB_GETSELCOUNT=400; +const LB_GETSELITEMS=401; +const LB_GETTEXT=393; +const LB_GETTEXTLEN=394; +const LB_GETTOPINDEX=398; +const LB_INITSTORAGE=424; +const LB_INSERTSTRING=385; +const LB_ITEMFROMPOINT=425; +const LB_RESETCONTENT=388; +const LB_SELECTSTRING=396; +const LB_SELITEMRANGE=411; +const LB_SELITEMRANGEEX=387; +const LB_SETANCHORINDEX=412; +const LB_SETCARETINDEX=414; +const LB_SETCOLUMNWIDTH=405; +const LB_SETCOUNT=423; +const LB_SETCURSEL=390; +const LB_SETHORIZONTALEXTENT=404; +const LB_SETITEMDATA=410; +const LB_SETITEMHEIGHT=416; +const LB_SETLOCALE=421; +const LB_SETSEL=389; +const LB_SETTABSTOPS=402; +const LB_SETTOPINDEX=407; +static if(_WIN32_WINNT >= 0x501) { +const LB_GETLISTBOXINFO=434; +} + +const LBN_DBLCLK=2; +const LBN_ERRSPACE=-2; +const LBN_KILLFOCUS=5; +const LBN_SELCANCEL=3; +const LBN_SELCHANGE=1; +const LBN_SETFOCUS=4; + +const SBM_ENABLE_ARROWS=228; +const SBM_GETPOS=225; +const SBM_GETRANGE=227; +const SBM_GETSCROLLINFO=234; +const SBM_SETPOS=224; +const SBM_SETRANGE=226; +const SBM_SETRANGEREDRAW=230; +const SBM_SETSCROLLINFO=233; +static if(_WIN32_WINNT >= 0x501) { +const SBM_GETSCROLLBARINFO=235; +} + +const STM_GETICON=369; +const STM_GETIMAGE=371; +const STM_SETICON=368; +const STM_SETIMAGE=370; +const STN_CLICKED=0; +const STN_DBLCLK=1; +const STN_DISABLE=3; +const STN_ENABLE=2; + +const DM_GETDEFID = WM_USER; +const DM_SETDEFID = WM_USER+1; +const DM_REPOSITION = WM_USER+2; + +const PSM_PAGEINFO = WM_USER+100; +const PSM_SHEETINFO = WM_USER+101; + +const PSI_SETACTIVE=1; +const PSI_KILLACTIVE=2; +const PSI_APPLY=3; +const PSI_RESET=4; +const PSI_HASHELP=5; +const PSI_HELP=6; +const PSI_CHANGED=1; +const PSI_GUISTART=2; +const PSI_REBOOT=3; +const PSI_GETSIBLINGS=4; + +const DCX_WINDOW=1; +const DCX_CACHE=2; +const DCX_PARENTCLIP=32; +const DCX_CLIPSIBLINGS=16; +const DCX_CLIPCHILDREN=8; +const DCX_NORESETATTRS=4; +const DCX_INTERSECTUPDATE=0x200; +const DCX_LOCKWINDOWUPDATE=0x400; +const DCX_EXCLUDERGN=64; +const DCX_INTERSECTRGN=128; +const DCX_VALIDATE=0x200000; + +const GMDI_GOINTOPOPUPS=2; +const GMDI_USEDISABLED=1; +const FKF_AVAILABLE=2; +const FKF_CLICKON=64; +const FKF_FILTERKEYSON=1; +const FKF_HOTKEYACTIVE=4; +const FKF_HOTKEYSOUND=16; +const FKF_CONFIRMHOTKEY=8; +const FKF_INDICATOR=32; +const HCF_HIGHCONTRASTON=1; +const HCF_AVAILABLE=2; +const HCF_HOTKEYACTIVE=4; +const HCF_CONFIRMHOTKEY=8; +const HCF_HOTKEYSOUND=16; +const HCF_INDICATOR=32; +const HCF_HOTKEYAVAILABLE=64; +const MKF_AVAILABLE=2; +const MKF_CONFIRMHOTKEY=8; +const MKF_HOTKEYACTIVE=4; +const MKF_HOTKEYSOUND=16; +const MKF_INDICATOR=32; +const MKF_MOUSEKEYSON=1; +const MKF_MODIFIERS=64; +const MKF_REPLACENUMBERS=128; +const SERKF_ACTIVE=8; // May be obsolete. Not in recent MS docs. +const SERKF_AVAILABLE=2; +const SERKF_INDICATOR=4; +const SERKF_SERIALKEYSON=1; +const SSF_AVAILABLE=2; +const SSF_SOUNDSENTRYON=1; +const SSTF_BORDER=2; +const SSTF_CHARS=1; +const SSTF_DISPLAY=3; +const SSTF_NONE=0; +const SSGF_DISPLAY=3; +const SSGF_NONE=0; +const SSWF_CUSTOM=4; +const SSWF_DISPLAY=3; +const SSWF_NONE=0; +const SSWF_TITLE=1; +const SSWF_WINDOW=2; +const SKF_AUDIBLEFEEDBACK=64; +const SKF_AVAILABLE=2; +const SKF_CONFIRMHOTKEY=8; +const SKF_HOTKEYACTIVE=4; +const SKF_HOTKEYSOUND=16; +const SKF_INDICATOR=32; +const SKF_STICKYKEYSON=1; +const SKF_TRISTATE=128; +const SKF_TWOKEYSOFF=256; +const TKF_AVAILABLE=2; +const TKF_CONFIRMHOTKEY=8; +const TKF_HOTKEYACTIVE=4; +const TKF_HOTKEYSOUND=16; +const TKF_TOGGLEKEYSON=1; +const MDITILE_SKIPDISABLED=2; +const MDITILE_HORIZONTAL=1; +const MDITILE_VERTICAL=0; + +enum { + VK_LBUTTON = 0x01, + VK_RBUTTON = 0x02, + VK_CANCEL = 0x03, + VK_MBUTTON = 0x04, + //static if (_WIN32_WINNT > = 0x500) { + VK_XBUTTON1 = 0x05, + VK_XBUTTON2 = 0x06, + //} + VK_BACK = 0x08, + VK_TAB = 0x09, + VK_CLEAR = 0x0C, + VK_RETURN = 0x0D, + VK_SHIFT = 0x10, + VK_CONTROL = 0x11, + VK_MENU = 0x12, + VK_PAUSE = 0x13, + VK_CAPITAL = 0x14, + VK_KANA = 0x15, + VK_HANGEUL = 0x15, + VK_HANGUL = 0x15, + VK_JUNJA = 0x17, + VK_FINAL = 0x18, + VK_HANJA = 0x19, + VK_KANJI = 0x19, + VK_ESCAPE = 0x1B, + VK_CONVERT = 0x1C, + VK_NONCONVERT = 0x1D, + VK_ACCEPT = 0x1E, + VK_MODECHANGE = 0x1F, + VK_SPACE = 0x20, + VK_PRIOR = 0x21, + VK_NEXT = 0x22, + VK_END = 0x23, + VK_HOME = 0x24, + VK_LEFT = 0x25, + VK_UP = 0x26, + VK_RIGHT = 0x27, + VK_DOWN = 0x28, + VK_SELECT = 0x29, + VK_PRINT = 0x2A, + VK_EXECUTE = 0x2B, + VK_SNAPSHOT = 0x2C, + VK_INSERT = 0x2D, + VK_DELETE = 0x2E, + VK_HELP = 0x2F, + VK_LWIN = 0x5B, + VK_RWIN = 0x5C, + VK_APPS = 0x5D, + VK_SLEEP = 0x5F, + VK_NUMPAD0 = 0x60, + VK_NUMPAD1 = 0x61, + VK_NUMPAD2 = 0x62, + VK_NUMPAD3 = 0x63, + VK_NUMPAD4 = 0x64, + VK_NUMPAD5 = 0x65, + VK_NUMPAD6 = 0x66, + VK_NUMPAD7 = 0x67, + VK_NUMPAD8 = 0x68, + VK_NUMPAD9 = 0x69, + VK_MULTIPLY = 0x6A, + VK_ADD = 0x6B, + VK_SEPARATOR = 0x6C, + VK_SUBTRACT = 0x6D, + VK_DECIMAL = 0x6E, + VK_DIVIDE = 0x6F, + VK_F1 = 0x70, + VK_F2 = 0x71, + VK_F3 = 0x72, + VK_F4 = 0x73, + VK_F5 = 0x74, + VK_F6 = 0x75, + VK_F7 = 0x76, + VK_F8 = 0x77, + VK_F9 = 0x78, + VK_F10 = 0x79, + VK_F11 = 0x7A, + VK_F12 = 0x7B, + VK_F13 = 0x7C, + VK_F14 = 0x7D, + VK_F15 = 0x7E, + VK_F16 = 0x7F, + VK_F17 = 0x80, + VK_F18 = 0x81, + VK_F19 = 0x82, + VK_F20 = 0x83, + VK_F21 = 0x84, + VK_F22 = 0x85, + VK_F23 = 0x86, + VK_F24 = 0x87, + VK_NUMLOCK = 0x90, + VK_SCROLL = 0x91, + VK_LSHIFT = 0xA0, + VK_RSHIFT = 0xA1, + VK_LCONTROL = 0xA2, + VK_RCONTROL = 0xA3, + VK_LMENU = 0xA4, + VK_RMENU = 0xA5, + //static if (_WIN32_WINNT > = 0x500) { + VK_BROWSER_BACK = 0xA6, + VK_BROWSER_FORWARD = 0xA7, + VK_BROWSER_REFRESH = 0xA8, + VK_BROWSER_STOP = 0xA9, + VK_BROWSER_SEARCH = 0xAA, + VK_BROWSER_FAVORITES = 0xAB, + VK_BROWSER_HOME = 0xAC, + VK_VOLUME_MUTE = 0xAD, + VK_VOLUME_DOWN = 0xAE, + VK_VOLUME_UP = 0xAF, + VK_MEDIA_NEXT_TRACK = 0xB0, + VK_MEDIA_PREV_TRACK = 0xB1, + VK_MEDIA_STOP = 0xB2, + VK_MEDIA_PLAY_PAUSE = 0xB3, + VK_LAUNCH_MAIL = 0xB4, + VK_LAUNCH_MEDIA_SELECT = 0xB5, + VK_LAUNCH_APP1 = 0xB6, + VK_LAUNCH_APP2 = 0xB7, + //} + VK_OEM_1 = 0xBA, + //static if (_WIN32_WINNT > = 0x500) { + VK_OEM_PLUS = 0xBB, + VK_OEM_COMMA = 0xBC, + VK_OEM_MINUS = 0xBD, + VK_OEM_PERIOD = 0xBE, + //} + VK_OEM_2 = 0xBF, + VK_OEM_3 = 0xC0, + VK_OEM_4 = 0xDB, + VK_OEM_5 = 0xDC, + VK_OEM_6 = 0xDD, + VK_OEM_7 = 0xDE, + VK_OEM_8 = 0xDF, + //static if (_WIN32_WINNT > = 0x500) { + VK_OEM_102 = 0xE2, + //} + VK_PROCESSKEY = 0xE5, + //static if (_WIN32_WINNT > = 0x500) { + VK_PACKET = 0xE7, + //} + VK_ATTN = 0xF6, + VK_CRSEL = 0xF7, + VK_EXSEL = 0xF8, + VK_EREOF = 0xF9, + VK_PLAY = 0xFA, + VK_ZOOM = 0xFB, + VK_NONAME = 0xFC, + VK_PA1 = 0xFD, + VK_OEM_CLEAR = 0xFE, +} + +const TME_HOVER=1; +const TME_LEAVE=2; +const TME_QUERY=0x40000000; +const TME_CANCEL=0x80000000; + +const HOVER_DEFAULT=0xFFFFFFFF; + +const MK_LBUTTON=1; +const MK_RBUTTON=2; +const MK_SHIFT=4; +const MK_CONTROL=8; +const MK_MBUTTON=16; +static if (_WIN32_WINNT >= 0x500) { + const MK_XBUTTON1 = 32; + const MK_XBUTTON2 = 64; +} +const TPM_CENTERALIGN=4; +const TPM_LEFTALIGN=0; +const TPM_RIGHTALIGN=8; +const TPM_LEFTBUTTON=0; +const TPM_RIGHTBUTTON=2; +const TPM_HORIZONTAL=0; +const TPM_VERTICAL=64; +const TPM_TOPALIGN=0; +const TPM_VCENTERALIGN=16; +const TPM_BOTTOMALIGN=32; +const TPM_NONOTIFY=128; +const TPM_RETURNCMD=256; +static if (_WIN32_WINNT >= 0x410) { + const TPM_RECURSE = 1; +} + +const HELP_COMMAND=0x102; +const HELP_CONTENTS=3; +const HELP_CONTEXT=1; +const HELP_CONTEXTPOPUP=8; +const HELP_FORCEFILE=9; +const HELP_HELPONHELP=4; +const HELP_INDEX=3; +const HELP_KEY=0x101; +const HELP_MULTIKEY=0x201; +const HELP_PARTIALKEY=0x105; +const HELP_QUIT=2; +const HELP_SETCONTENTS=5; +const HELP_SETINDEX=5; +const HELP_SETWINPOS=0x203; +const HELP_CONTEXTMENU=0xa; +const HELP_FINDER=0xb; +const HELP_WM_HELP=0xc; +const HELP_TCARD=0x8000; +const HELP_TCARD_DATA=16; +const HELP_TCARD_OTHER_CALLER=0x11; + +const IDH_NO_HELP=28440; +const IDH_MISSING_CONTEXT=28441; +const IDH_GENERIC_HELP_BUTTON=28442; +const IDH_OK=28443; +const IDH_CANCEL=28444; +const IDH_HELP=28445; + +const LB_CTLCODE=0; +const LB_OKAY=0; +const LB_ERR=-1; +const LB_ERRSPACE=-2; + +const CB_OKAY=0; +const CB_ERR=-1; +const CB_ERRSPACE=-2; + +const HIDE_WINDOW=0; + +const SHOW_OPENWINDOW=1; +const SHOW_ICONWINDOW=2; +const SHOW_FULLSCREEN=3; +const SHOW_OPENNOACTIVATE=4; + +const SW_PARENTCLOSING=1; +const SW_OTHERZOOM=2; +const SW_PARENTOPENING=3; +const SW_OTHERUNZOOM=4; + +const KF_EXTENDED=256; +const KF_DLGMODE=2048; +const KF_MENUMODE=4096; +const KF_ALTDOWN=8192; +const KF_REPEAT=16384; +const KF_UP=32768; + +const WSF_VISIBLE=1; + +const PWR_OK=1; +const PWR_FAIL=-1; +const PWR_SUSPENDREQUEST=1; +const PWR_SUSPENDRESUME=2; +const PWR_CRITICALRESUME=3; + +const NFR_ANSI=1; +const NFR_UNICODE=2; +const NF_QUERY=3; +const NF_REQUERY=4; + +const MENULOOP_WINDOW=0; +const MENULOOP_POPUP=1; + +const WMSZ_LEFT=1; +const WMSZ_RIGHT=2; +const WMSZ_TOP=3; +const WMSZ_TOPLEFT=4; +const WMSZ_TOPRIGHT=5; +const WMSZ_BOTTOM=6; +const WMSZ_BOTTOMLEFT=7; +const WMSZ_BOTTOMRIGHT=8; + +const HTERROR=-2; +const HTTRANSPARENT=-1; +const HTNOWHERE=0; +const HTCLIENT=1; +const HTCAPTION=2; +const HTSYSMENU=3; +const HTGROWBOX=4; +const HTSIZE=4; +const HTMENU=5; +const HTHSCROLL=6; +const HTVSCROLL=7; +const HTMINBUTTON=8; +const HTMAXBUTTON=9; +const HTREDUCE=8; +const HTZOOM=9; +const HTLEFT=10; +const HTSIZEFIRST=10; +const HTRIGHT=11; +const HTTOP=12; +const HTTOPLEFT=13; +const HTTOPRIGHT=14; +const HTBOTTOM=15; +const HTBOTTOMLEFT=16; +const HTBOTTOMRIGHT=17; +const HTSIZELAST=17; +const HTBORDER=18; +const HTOBJECT=19; +const HTCLOSE=20; +const HTHELP=21; + +const MA_ACTIVATE=1; +const MA_ACTIVATEANDEAT=2; +const MA_NOACTIVATE=3; +const MA_NOACTIVATEANDEAT=4; + +const SIZE_RESTORED=0; +const SIZE_MINIMIZED=1; +const SIZE_MAXIMIZED=2; +const SIZE_MAXSHOW=3; +const SIZE_MAXHIDE=4; + +const SIZENORMAL=0; +const SIZEICONIC=1; +const SIZEFULLSCREEN=2; +const SIZEZOOMSHOW=3; +const SIZEZOOMHIDE=4; + +const WVR_ALIGNTOP=16; +const WVR_ALIGNLEFT=32; +const WVR_ALIGNBOTTOM=64; +const WVR_ALIGNRIGHT=128; +const WVR_HREDRAW=256; +const WVR_VREDRAW=512; +const WVR_REDRAW=(WVR_HREDRAW|WVR_VREDRAW); +const WVR_VALIDRECTS=1024; + +const PRF_CHECKVISIBLE=1; +const PRF_NONCLIENT=2; +const PRF_CLIENT=4; +const PRF_ERASEBKGND=8; +const PRF_CHILDREN=16; +const PRF_OWNED=32; + +const IDANI_OPEN=1; +const IDANI_CLOSE=2; +const IDANI_CAPTION=3; + +const WPF_RESTORETOMAXIMIZED=2; +const WPF_SETMINPOSITION=1; + +const ODT_MENU=1; +const ODT_LISTBOX=2; +const ODT_COMBOBOX=3; +const ODT_BUTTON=4; +const ODT_STATIC=5; +const ODA_DRAWENTIRE=1; +const ODA_SELECT=2; +const ODA_FOCUS=4; +const ODS_SELECTED=1; +const ODS_GRAYED=2; +const ODS_DISABLED=4; +const ODS_CHECKED=8; +const ODS_FOCUS=16; +const ODS_DEFAULT=32; +const ODS_COMBOBOXEDIT=4096; + +const IDHOT_SNAPWINDOW=-1; +const IDHOT_SNAPDESKTOP=-2; + +const DBWF_LPARAMPOINTER=0x8000; +const DLGWINDOWEXTRA=30; +const MNC_IGNORE=0; +const MNC_CLOSE=1; +const MNC_EXECUTE=2; +const MNC_SELECT=3; +const DOF_EXECUTABLE=0x8001; +const DOF_DOCUMENT=0x8002; +const DOF_DIRECTORY=0x8003; +const DOF_MULTIPLE=0x8004; +const DOF_PROGMAN=1; +const DOF_SHELLDATA=2; +const DO_DROPFILE=0x454C4946; +const DO_PRINTFILE=0x544E5250; + +const SW_SCROLLCHILDREN=1; +const SW_INVALIDATE=2; +const SW_ERASE=4; + +const SC_SIZE=0xF000; +const SC_MOVE=0xF010; +const SC_MINIMIZE=0xF020; +const SC_ICON=0xf020; +const SC_MAXIMIZE=0xF030; +const SC_ZOOM=0xF030; +const SC_NEXTWINDOW=0xF040; +const SC_PREVWINDOW=0xF050; +const SC_CLOSE=0xF060; +const SC_VSCROLL=0xF070; +const SC_HSCROLL=0xF080; +const SC_MOUSEMENU=0xF090; +const SC_KEYMENU=0xF100; +const SC_ARRANGE=0xF110; +const SC_RESTORE=0xF120; +const SC_TASKLIST=0xF130; +const SC_SCREENSAVE=0xF140; +const SC_HOTKEY=0xF150; +const SC_DEFAULT=0xF160; +const SC_MONITORPOWER=0xF170; +const SC_CONTEXTHELP=0xF180; +const SC_SEPARATOR=0xF00F; + +const EC_LEFTMARGIN=1; +const EC_RIGHTMARGIN=2; +const EC_USEFONTINFO=0xffff; + +const DC_HASDEFID=0x534B; + +const DLGC_WANTARROWS=1; +const DLGC_WANTTAB=2; +const DLGC_WANTALLKEYS=4; +const DLGC_WANTMESSAGE=4; +const DLGC_HASSETSEL=8; +const DLGC_DEFPUSHBUTTON=16; +const DLGC_UNDEFPUSHBUTTON=32; +const DLGC_RADIOBUTTON=64; +const DLGC_WANTCHARS=128; +const DLGC_STATIC=256; +const DLGC_BUTTON=0x2000; + +const WA_INACTIVE=0; +const WA_ACTIVE=1; +const WA_CLICKACTIVE=2; + +const ICON_SMALL=0; +const ICON_BIG=1; +static if (_WIN32_WINNT >= 0x501) { +const ICON_SMALL2=2; +} + +const HBITMAP + HBMMENU_CALLBACK = cast(HBITMAP)-1, + HBMMENU_SYSTEM = cast(HBITMAP)1, + HBMMENU_MBAR_RESTORE = cast(HBITMAP)2, + HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3, + HBMMENU_MBAR_CLOSE = cast(HBITMAP)5, + HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6, + HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7, + HBMMENU_POPUP_CLOSE = cast(HBITMAP)8, + HBMMENU_POPUP_RESTORE = cast(HBITMAP)9, + HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10, + HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11; + +const MOD_ALT=1; +const MOD_CONTROL=2; +const MOD_SHIFT=4; +const MOD_WIN=8; +const MOD_IGNORE_ALL_MODIFIER=1024; +const MOD_ON_KEYUP=2048; +const MOD_RIGHT=16384; +const MOD_LEFT=32768; + +const LLKHF_EXTENDED=(KF_EXTENDED >> 8); +const LLKHF_INJECTED=0x00000010; +const LLKHF_ALTDOWN=(KF_ALTDOWN >> 8); +const LLKHF_UP=(KF_UP >> 8); + +static if (_WIN32_WINNT >= 0x500) { + const FLASHW_STOP=0; + const FLASHW_CAPTION=1; + const FLASHW_TRAY=2; + const FLASHW_ALL=(FLASHW_CAPTION|FLASHW_TRAY); + const FLASHW_TIMER=4; + const FLASHW_TIMERNOFG=12; +} + +const CURSOR_SHOWING=0x00000001; +const WS_ACTIVECAPTION=0x00000001; +static if (_WIN32_WINNT >= 0x403) { + const INPUT_MOUSE=0x00000000; + const INPUT_KEYBOARD=0x00000001; + const INPUT_HARDWARE=0x00000002; +} +const ENDSESSION_LOGOFF = 0x80000000; + +static if (_WIN32_WINNT >= 0x500) { +const CHILDID_SELF = 0; +const OBJID_WINDOW = 0x00000000; +const OBJID_SYSMENU = 0xFFFFFFFF; +const OBJID_TITLEBAR = 0xFFFFFFFE; +const OBJID_MENU = 0xFFFFFFFD; +const OBJID_CLIENT = 0xFFFFFFFC; +const OBJID_VSCROLL = 0xFFFFFFFB; +const OBJID_HSCROLL = 0xFFFFFFFA; +const OBJID_SIZEGRIP = 0xFFFFFFF9; +const OBJID_CARET = 0xFFFFFFF8; +const OBJID_CURSOR = 0xFFFFFFF7; +const OBJID_ALERT = 0xFFFFFFF6; +const OBJID_SOUND = 0xFFFFFFF5; + +const GUI_CARETBLINKING = 0x00000001; +const GUI_INMOVESIZE = 0x00000002; +const GUI_INMENUMODE = 0x00000004; +const GUI_SYSTEMMENUMODE = 0x00000008; +const GUI_POPUPMENUMODE = 0x00000010; + +static if (_WIN32_WINNT >= 0x501) { +const GUI_16BITTASK = 0x00000020; +} +const WINEVENT_OUTOFCONTEXT=0x0000; +const WINEVENT_SKIPOWNTHREAD=0x0001; +const WINEVENT_SKIPOWNPROCESS=0x0002; +const WINEVENT_INCONTEXT=0x0004; +const AW_HOR_POSITIVE=0x00000001; +const AW_HOR_NEGATIVE=0x00000002; +const AW_VER_POSITIVE=0x00000004; +const AW_VER_NEGATIVE=0x00000008; +const AW_CENTER=0x00000010; +const AW_HIDE=0x00010000; +const AW_ACTIVATE=0x00020000; +const AW_SLIDE=0x00040000; +const AW_BLEND=0x00080000; +const DEVICE_NOTIFY_WINDOW_HANDLE=0x00000000; +const DEVICE_NOTIFY_SERVICE_HANDLE=0x00000001; + +static if (_WIN32_WINNT >= 0x501) { +const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES=0x00000004; +} + +const EVENT_MIN = 0x00000001; +const EVENT_SYSTEM_SOUND = 0x00000001; +const EVENT_SYSTEM_ALERT = 0x00000002; +const EVENT_SYSTEM_FOREGROUND = 0x00000003; +const EVENT_SYSTEM_MENUSTART = 0x00000004; +const EVENT_SYSTEM_MENUEND = 0x00000005; +const EVENT_SYSTEM_MENUPOPUPSTART = 0x00000006; +const EVENT_SYSTEM_MENUPOPUPEND = 0x00000007; +const EVENT_SYSTEM_CAPTURESTART = 0x00000008; +const EVENT_SYSTEM_CAPTUREEND = 0x00000009; +const EVENT_SYSTEM_MOVESIZESTART = 0x0000000a; +const EVENT_SYSTEM_MOVESIZEEND = 0x0000000b; +const EVENT_SYSTEM_CONTEXTHELPSTART = 0x0000000c; +const EVENT_SYSTEM_CONTEXTHELPEND = 0x0000000d; +const EVENT_SYSTEM_DRAGDROPSTART = 0x0000000e; +const EVENT_SYSTEM_DRAGDROPEND = 0x0000000f; +const EVENT_SYSTEM_DIALOGSTART = 0x00000010; +const EVENT_SYSTEM_DIALOGEND = 0x00000011; +const EVENT_SYSTEM_SCROLLINGSTART = 0x00000012; +const EVENT_SYSTEM_SCROLLINGEND = 0x00000013; +const EVENT_SYSTEM_SWITCHSTART = 0x00000014; +const EVENT_SYSTEM_SWITCHEND = 0x00000015; +const EVENT_SYSTEM_MINIMIZESTART = 0x00000016; +const EVENT_SYSTEM_MINIMIZEEND = 0x00000017; + +const EVENT_OBJECT_CREATE = 0x00008000; +const EVENT_OBJECT_DESTROY = 0x00008001; +const EVENT_OBJECT_SHOW = 0x00008002; +const EVENT_OBJECT_HIDE = 0x00008003; +const EVENT_OBJECT_REORDER = 0x00008004; +const EVENT_OBJECT_FOCUS = 0x00008005; +const EVENT_OBJECT_SELECTION = 0x00008006; +const EVENT_OBJECT_SELECTIONADD = 0x00008007; +const EVENT_OBJECT_SELECTIONREMOVE = 0x00008008; +const EVENT_OBJECT_SELECTIONWITHIN = 0x00008009; +const EVENT_OBJECT_STATECHANGE = 0x0000800a; +const EVENT_OBJECT_LOCATIONCHANGE = 0x0000800b; +const EVENT_OBJECT_NAMECHANGE = 0x0000800c; +const EVENT_OBJECT_DESCRIPTIONCHANGE = 0x0000800d; +const EVENT_OBJECT_VALUECHANGE = 0x0000800e; +const EVENT_OBJECT_PARENTCHANGE = 0x0000800f; +const EVENT_OBJECT_HELPCHANGE = 0x00008010; +const EVENT_OBJECT_DEFACTIONCHANGE = 0x00008011; +const EVENT_OBJECT_ACCELERATORCHANGE = 0x00008012; + +static if (_WIN32_WINNT >= 0x501) { +const EVENT_CONSOLE_CARET = 0x00004001; +const EVENT_CONSOLE_UPDATE_REGION = 0x00004002; +const EVENT_CONSOLE_UPDATE_SIMPLE = 0x00004003; +const EVENT_CONSOLE_UPDATE_SCROLL = 0x00004004; +const EVENT_CONSOLE_LAYOUT = 0x00004005; +const EVENT_CONSOLE_START_APPLICATION = 0x00004006; +const EVENT_CONSOLE_END_APPLICATION = 0x00004007; + +const CONSOLE_CARET_SELECTION = 0x00000001; +const CONSOLE_CARET_VISIBLE = 0x00000002; + +const CONSOLE_APPLICATION_16BIT = 0x00000001; + +} +const EVENT_MAX=0x7fffffff; + +}//(_WIN32_WINNT >= 0x500) + +static if (_WIN32_WINNT >= 0x500) { + const DWORD ASFW_ANY = -1; + enum : UINT { + LSFW_LOCK = 1, + LSFW_UNLOCK + } + + const LWA_COLORKEY = 0x01; + const LWA_ALPHA = 0x02; + const ULW_COLORKEY = 0x01; + const ULW_ALPHA = 0x02; + const ULW_OPAQUE = 0x04; +} + +const GA_PARENT = 1; +const GA_ROOT = 2; +const GA_ROOTOWNER = 3; + +static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + MONITOR_DEFAULTTONULL, + MONITOR_DEFAULTTOPRIMARY, + MONITOR_DEFAULTTONEAREST // = 2 + } + const MONITORINFOF_PRIMARY = 1; + + const EDS_RAWMODE = 0x00000002; + + const ISMEX_NOSEND = 0x00000000; + const ISMEX_SEND = 0x00000001; + const ISMEX_NOTIFY = 0x00000002; + const ISMEX_CALLBACK = 0x00000004; + const ISMEX_REPLIED = 0x00000008; + + const GR_GDIOBJECTS = 0; + const GR_USEROBJECTS = 1; + + const GMMP_USE_DISPLAY_POINTS = 1; + const GMMP_USE_HIGH_RESOLUTION_POINTS = 2; +} + +static if (_WIN32_WINNT >= 0x501) { + const PW_CLIENTONLY = 0x00000001; + const RIM_INPUT = 0x00000000; + const RIM_INPUTSINK = 0x00000001; + const RIM_TYPEMOUSE = 0x00000000; + const RIM_TYPEKEYBOARD = 0x00000001; + const RIM_TYPEHID = 0x00000002; + const MOUSE_MOVE_RELATIVE = 0x00000000; + const MOUSE_MOVE_ABSOLUTE = 0x00000001; + const MOUSE_VIRTUAL_DESKTOP = 0x00000002; + const MOUSE_ATTRIBUTES_CHANGED = 0x00000004; + const RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001; + const RI_MOUSE_LEFT_BUTTON_UP = 0x0002; + const RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004; + const RI_MOUSE_RIGHT_BUTTON_UP = 0x0008; + const RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010; + const RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020; + const RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN; + const RI_MOUSE_BUTTON_1_UP = RI_MOUSE_LEFT_BUTTON_UP; + const RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN; + const RI_MOUSE_BUTTON_2_UP = RI_MOUSE_RIGHT_BUTTON_UP; + const RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN; + const RI_MOUSE_BUTTON_3_UP = RI_MOUSE_MIDDLE_BUTTON_UP; + const RI_MOUSE_BUTTON_4_DOWN = 0x0040; + const RI_MOUSE_BUTTON_4_UP = 0x0080; + const RI_MOUSE_BUTTON_5_DOWN = 0x0100; + const RI_MOUSE_BUTTON_5_UP = 0x0200; + const RI_MOUSE_WHEEL = 0x0400; + const KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff; + const RI_KEY_MAKE = 0x0000; + const RI_KEY_BREAK = 0x0001; + const RI_KEY_E0 = 0x0002; + const RI_KEY_E1 = 0x0004; + const RI_KEY_TERMSRV_SET_LED = 0x0008; + const RI_KEY_TERMSRV_SHADOW = 0x0010; + + const RID_INPUT = 0x10000003; + const RID_HEADER = 0x10000005; + + const RIDI_PREPARSEDDATA = 0x20000005; + const RIDI_DEVICENAME = 0x20000007; + const RIDI_DEVICEINFO = 0x2000000b; + + const RIDEV_REMOVE = 0x00000001; + const RIDEV_EXCLUDE = 0x00000010; + const RIDEV_PAGEONLY = 0x00000020; + const RIDEV_NOLEGACY = 0x00000030; + const RIDEV_INPUTSINK = 0x00000100; + const RIDEV_CAPTUREMOUSE = 0x00000200; + const RIDEV_NOHOTKEYS = 0x00000200; + const RIDEV_APPKEYS = 0x00000400; +} + +// Callbacks +// --------- +extern (Windows) { + alias INT_PTR function (HWND, UINT, WPARAM, LPARAM) DLGPROC; + alias void function (HWND, UINT, UINT_PTR, DWORD) TIMERPROC; + alias BOOL function (HDC, LPARAM, int) GRAYSTRINGPROC; + alias LRESULT function (int, WPARAM, LPARAM) HOOKPROC; + alias BOOL function (HWND, LPCSTR, HANDLE) PROPENUMPROCA; + alias BOOL function (HWND, LPCWSTR, HANDLE) PROPENUMPROCW; + alias BOOL function (HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; + alias BOOL function (HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; + alias int function (LPSTR, int, int, int) EDITWORDBREAKPROCA; + alias int function (LPWSTR, int, int, int) EDITWORDBREAKPROCW; + alias LRESULT function (HWND, UINT, WPARAM, LPARAM) WNDPROC; + alias BOOL function (HDC, LPARAM, WPARAM, int, int) DRAWSTATEPROC; + alias BOOL function (HWND, LPARAM) WNDENUMPROC; + alias BOOL function (HWND, LPARAM) ENUMWINDOWSPROC; + alias void function (LPHELPINFO) MSGBOXCALLBACK; + + static if (_WIN32_WINNT >= 0x410) { + alias BOOL function (HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; + } + alias BOOL function (LPSTR, LPARAM) NAMEENUMPROCA; + alias BOOL function (LPWSTR, LPARAM) NAMEENUMPROCW; + alias void function (HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; + + alias NAMEENUMPROCA DESKTOPENUMPROCA; + alias NAMEENUMPROCW DESKTOPENUMPROCW; + alias NAMEENUMPROCA WINSTAENUMPROCA; + alias NAMEENUMPROCW WINSTAENUMPROCW; +} + +alias TypeDef!(HANDLE) HHOOK; +alias TypeDef!(HANDLE) HDWP; +alias TypeDef!(HANDLE) HDEVNOTIFY; + +struct ACCEL { + BYTE fVirt; + WORD key; + WORD cmd; +} +alias ACCEL* LPACCEL; + +struct ACCESSTIMEOUT { + UINT cbSize = ACCESSTIMEOUT.sizeof; + DWORD dwFlags; + DWORD iTimeOutMSec; +} +alias ACCESSTIMEOUT* LPACCESSTIMEOUT; + +struct ANIMATIONINFO { + UINT cbSize = ANIMATIONINFO.sizeof; + int iMinAnimate; +} +alias ANIMATIONINFO* LPANIMATIONINFO; + +struct CREATESTRUCTA { + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCSTR lpszName; + LPCSTR lpszClass; + DWORD dwExStyle; +} +alias CREATESTRUCTA* LPCREATESTRUCTA; + +struct CREATESTRUCTW { + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCWSTR lpszName; + LPCWSTR lpszClass; + DWORD dwExStyle; +} +alias CREATESTRUCTW* LPCREATESTRUCTW; + +struct CBT_CREATEWNDA { + LPCREATESTRUCTA lpcs; + HWND hwndInsertAfter; +} +alias CBT_CREATEWNDA* LPCBT_CREATEWNDA; + +struct CBT_CREATEWNDW { + LPCREATESTRUCTW lpcs; + HWND hwndInsertAfter; +} +alias CBT_CREATEWNDW* LPCBT_CREATEWNDW; + +struct CBTACTIVATESTRUCT { + BOOL fMouse; + HWND hWndActive; +} +alias CBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT; + +static if (_WIN32_WINNT >= 0x501) { + +struct WTSSESSION_NOTIFICATION +{ + DWORD cbSize; + DWORD dwSessionId; +} +alias WTSSESSION_NOTIFICATION* PWTSSESSION_NOTIFICATION; + +} + +struct CLIENTCREATESTRUCT { + HANDLE hWindowMenu; + UINT idFirstChild; +} +alias CLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT; + +struct COMPAREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + HWND hwndItem; + UINT itemID1; + DWORD itemData1; + UINT itemID2; + DWORD itemData2; + DWORD dwLocaleId; +} +alias COMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT; + +struct COPYDATASTRUCT { + DWORD dwData; + DWORD cbData; + PVOID lpData; +} +alias COPYDATASTRUCT* PCOPYDATASTRUCT; + +struct CURSORSHAPE { + int xHotSpot; + int yHotSpot; + int cx; + int cy; + int cbWidth; + BYTE Planes; + BYTE BitsPixel; +} +alias CURSORSHAPE* LPCURSORSHAPE; + +struct CWPRETSTRUCT { + LRESULT lResult; + LPARAM lParam; + WPARAM wParam; + DWORD message; + HWND hwnd; +} + +struct CWPSTRUCT { + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; +} +alias CWPSTRUCT* PCWPSTRUCT; + +struct DEBUGHOOKINFO { + DWORD idThread; + DWORD idThreadInstaller; + LPARAM lParam; + WPARAM wParam; + int code; +} +alias DEBUGHOOKINFO* PDEBUGHOOKINFO, LPDEBUGHOOKINFO; + +struct DELETEITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + HWND hwndItem; + UINT itemData; +} +alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT, LPDELETEITEMSTRUCT; + +align(2): +struct DLGITEMTEMPLATE { + DWORD style; + DWORD dwExtendedStyle; + short x; + short y; + short cx; + short cy; + WORD id; +} +alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATE; + +struct DLGTEMPLATE { + DWORD style; + DWORD dwExtendedStyle; + WORD cdit; + short x; + short y; + short cx; + short cy; +} +alias DLGTEMPLATE* LPDLGTEMPLATE, LPDLGTEMPLATEA, LPDLGTEMPLATEW; +alias const(DLGTEMPLATE)* LPCDLGTEMPLATE; + +align: + +struct DRAWITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemAction; + UINT itemState; + HWND hwndItem; + HDC hDC; + RECT rcItem; + DWORD itemData; +} +alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT, PDRAWITEMSTRUCT; + +struct DRAWTEXTPARAMS { + UINT cbSize = DRAWTEXTPARAMS.sizeof; + int iTabLength; + int iLeftMargin; + int iRightMargin; + UINT uiLengthDrawn; +} +alias DRAWTEXTPARAMS* LPDRAWTEXTPARAMS; + +struct PAINTSTRUCT { + HDC hdc; + BOOL fErase; + RECT rcPaint; + BOOL fRestore; + BOOL fIncUpdate; + BYTE[32] rgbReserved; +} +alias PAINTSTRUCT* LPPAINTSTRUCT; + +struct MSG { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; +} +alias MSG* LPMSG, PMSG; + +struct ICONINFO { + BOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; +} +alias ICONINFO* PICONINFO; + +struct NMHDR { + HWND hwndFrom; + UINT_PTR idFrom; + UINT code; +} +alias NMHDR* LPNMHDR; + +struct WNDCLASSA { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; +} +alias WNDCLASSA* LPWNDCLASSA, PWNDCLASSA; + +struct WNDCLASSW { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; +} +alias WNDCLASSW* LPWNDCLASSW, PWNDCLASSW; + +struct WNDCLASSEXA { + UINT cbSize = WNDCLASSEXA.sizeof; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; + HICON hIconSm; +} +alias WNDCLASSEXA* LPWNDCLASSEXA, PWNDCLASSEXA; + +struct WNDCLASSEXW { + UINT cbSize = WNDCLASSEXW.sizeof; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; + HICON hIconSm; +} +alias WNDCLASSEXW* LPWNDCLASSEXW, PWNDCLASSEXW; + +static if(_WIN32_WINNT >= 0x500) { + +struct MENUGETOBJECTINFO +{ + DWORD dwFlags; + UINT uPos; + HMENU hmenu; + PVOID riid; + PVOID pvObj; +} +alias MENUGETOBJECTINFO* PMENUGETOBJECTINFO; + +} + +struct MENUITEMINFOA { + UINT cbSize = MENUITEMINFOA.sizeof; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + LPSTR dwTypeData; + UINT cch; + static if (_WIN32_WINNT >= 0x500) { + HBITMAP hbmpItem; + } +} +alias MENUITEMINFOA* LPMENUITEMINFOA; +alias const(MENUITEMINFOA)* LPCMENUITEMINFOA; + +struct MENUITEMINFOW { + UINT cbSize = MENUITEMINFOW.sizeof; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + LPWSTR dwTypeData; + UINT cch; + static if (_WIN32_WINNT >= 0x500) { + HBITMAP hbmpItem; + } +} +alias MENUITEMINFOW* LPMENUITEMINFOW; +alias const(MENUITEMINFOW)* LPCMENUITEMINFOW; + +struct SCROLLINFO { + UINT cbSize = this.sizeof; + UINT fMask; + int nMin; + int nMax; + UINT nPage; + int nPos; + int nTrackPos; +} +alias SCROLLINFO* LPSCROLLINFO; +alias const(SCROLLINFO)* LPCSCROLLINFO; + +struct WINDOWPLACEMENT { + UINT length; + UINT flags; + UINT showCmd; + POINT ptMinPosition; + POINT ptMaxPosition; + RECT rcNormalPosition; +} +alias WINDOWPLACEMENT* LPWINDOWPLACEMENT, PWINDOWPLACEMENT; + +struct MENUITEMTEMPLATEHEADER { + WORD versionNumber; + WORD offset; +} + +struct MENUITEMTEMPLATE { + WORD mtOption; + WORD mtID; + WCHAR[1] mtString; +} + +alias void MENUTEMPLATE, MENUTEMPLATEA, MENUTEMPLATEW; + +alias MENUTEMPLATE* LPMENUTEMPLATEA, LPMENUTEMPLATEW, LPMENUTEMPLATE; + +struct HELPINFO { + UINT cbSize = this.sizeof; + int iContextType; + int iCtrlId; + HANDLE hItemHandle; + DWORD dwContextId; + POINT MousePos; +} +alias HELPINFO* LPHELPINFO; + +struct MSGBOXPARAMSA { + UINT cbSize = this.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpszText; + LPCSTR lpszCaption; + DWORD dwStyle; + LPCSTR lpszIcon; + DWORD dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} +alias MSGBOXPARAMSA* PMSGBOXPARAMSA, LPMSGBOXPARAMSA; + +struct MSGBOXPARAMSW { + UINT cbSize = this.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpszText; + LPCWSTR lpszCaption; + DWORD dwStyle; + LPCWSTR lpszIcon; + DWORD dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} +alias MSGBOXPARAMSW* PMSGBOXPARAMSW, LPMSGBOXPARAMSW; + +struct USEROBJECTFLAGS { + BOOL fInherit; + BOOL fReserved; + DWORD dwFlags; +} + +struct FILTERKEYS { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iWaitMSec; + DWORD iDelayMSec; + DWORD iRepeatMSec; + DWORD iBounceMSec; +} + +struct HIGHCONTRASTA { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPSTR lpszDefaultScheme; +} +alias HIGHCONTRASTA* LPHIGHCONTRASTA; + +struct HIGHCONTRASTW { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPWSTR lpszDefaultScheme; +} +alias HIGHCONTRASTW* LPHIGHCONTRASTW; + +struct ICONMETRICSA { + UINT cbSize = this.sizeof; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTA lfFont; +} +alias ICONMETRICSA* LPICONMETRICSA; + +struct ICONMETRICSW { + UINT cbSize = this.sizeof; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTW lfFont; +} +alias ICONMETRICSW* LPICONMETRICSW; + +struct MINIMIZEDMETRICS { + UINT cbSize = this.sizeof; + int iWidth; + int iHorzGap; + int iVertGap; + int iArrange; +} +alias MINIMIZEDMETRICS* LPMINIMIZEDMETRICS; + +struct MOUSEKEYS { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iMaxSpeed; + DWORD iTimeToMaxSpeed; + DWORD iCtrlSpeed; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias MOUSEKEYS* LPMOUSEKEYS; + +struct NONCLIENTMETRICSA { + UINT cbSize = this.sizeof; + int iBorderWidth; + int iScrollWidth; + int iScrollHeight; + int iCaptionWidth; + int iCaptionHeight; + LOGFONTA lfCaptionFont; + int iSmCaptionWidth; + int iSmCaptionHeight; + LOGFONTA lfSmCaptionFont; + int iMenuWidth; + int iMenuHeight; + LOGFONTA lfMenuFont; + LOGFONTA lfStatusFont; + LOGFONTA lfMessageFont; +} +alias NONCLIENTMETRICSA* LPNONCLIENTMETRICSA; + +struct NONCLIENTMETRICSW { + UINT cbSize = this.sizeof; + int iBorderWidth; + int iScrollWidth; + int iScrollHeight; + int iCaptionWidth; + int iCaptionHeight; + LOGFONTW lfCaptionFont; + int iSmCaptionWidth; + int iSmCaptionHeight; + LOGFONTW lfSmCaptionFont; + int iMenuWidth; + int iMenuHeight; + LOGFONTW lfMenuFont; + LOGFONTW lfStatusFont; + LOGFONTW lfMessageFont; +} +alias NONCLIENTMETRICSW* LPNONCLIENTMETRICSW; + +struct SERIALKEYSA { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPSTR lpszActivePort; + LPSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} +alias SERIALKEYSA* LPSERIALKEYSA; + +struct SERIALKEYSW { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPWSTR lpszActivePort; + LPWSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} +alias SERIALKEYSW* LPSERIALKEYSW; + +struct SOUNDSENTRYA { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} +alias SOUNDSENTRYA* LPSOUNDSENTRYA; + +struct SOUNDSENTRYW { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPWSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} +alias SOUNDSENTRYW* LPSOUNDSENTRYW; + +struct STICKYKEYS { + DWORD cbSize = this.sizeof; + DWORD dwFlags; +} +alias STICKYKEYS* LPSTICKYKEYS; + +struct TOGGLEKEYS { + DWORD cbSize = this.sizeof; + DWORD dwFlags; +} + +struct MOUSEHOOKSTRUCT { + POINT pt; + HWND hwnd; + UINT wHitTestCode; + DWORD dwExtraInfo; +} +alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT, PMOUSEHOOKSTRUCT; + +struct TRACKMOUSEEVENT { + DWORD cbSize = this.sizeof; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; +} +alias TRACKMOUSEEVENT* LPTRACKMOUSEEVENT; + +struct TPMPARAMS { + UINT cbSize = this.sizeof; + RECT rcExclude; +} +alias TPMPARAMS* LPTPMPARAMS; + +struct EVENTMSG { + UINT message; + UINT paramL; + UINT paramH; + DWORD time; + HWND hwnd; +} +alias EVENTMSG* PEVENTMSGMSG, LPEVENTMSGMSG, PEVENTMSG, LPEVENTMSG; + +struct WINDOWPOS { + HWND hwnd; + HWND hwndInsertAfter; + int x; + int y; + int cx; + int cy; + UINT flags; +} +alias WINDOWPOS* PWINDOWPOS, LPWINDOWPOS; + +struct NCCALCSIZE_PARAMS { + RECT[3] rgrc; + PWINDOWPOS lppos; +} +alias NCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS; + +struct MDICREATESTRUCTA { + LPCSTR szClass; + LPCSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} +alias MDICREATESTRUCTA* LPMDICREATESTRUCTA; + +struct MDICREATESTRUCTW { + LPCWSTR szClass; + LPCWSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} +alias MDICREATESTRUCTW* LPMDICREATESTRUCTW; + +struct MINMAXINFO { + POINT ptReserved; + POINT ptMaxSize; + POINT ptMaxPosition; + POINT ptMinTrackSize; + POINT ptMaxTrackSize; +} +alias MINMAXINFO* PMINMAXINFO, LPMINMAXINFO; + +struct MDINEXTMENU { + HMENU hmenuIn; + HMENU hmenuNext; + HWND hwndNext; +} +alias MDINEXTMENU* PMDINEXTMENU, LPMDINEXTMENU; + +struct MEASUREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemWidth; + UINT itemHeight; + DWORD itemData; +} +alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT, LPMEASUREITEMSTRUCT; + +struct DROPSTRUCT { + HWND hwndSource; + HWND hwndSink; + DWORD wFmt; + DWORD dwData; + POINT ptDrop; + DWORD dwControlData; +} +alias DROPSTRUCT* PDROPSTRUCT, LPDROPSTRUCT; + +alias DWORD HELPPOLY; + +struct MULTIKEYHELPA { + DWORD mkSize; + CHAR mkKeylist; + CHAR[1] szKeyphrase; +} +alias MULTIKEYHELPA* PMULTIKEYHELPA, LPMULTIKEYHELPA; + +struct MULTIKEYHELPW { + DWORD mkSize; + WCHAR mkKeylist; + WCHAR[1] szKeyphrase; +} +alias MULTIKEYHELPW* PMULTIKEYHELPW, LPMULTIKEYHELPW; + +struct HELPWININFOA { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + CHAR[2] rgchMember; +} +alias HELPWININFOA* PHELPWININFOA, LPHELPWININFOA; + +struct HELPWININFOW { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + WCHAR[2] rgchMember; +} +alias HELPWININFOW* PHELPWININFOW, LPHELPWININFOW; + +struct STYLESTRUCT { + DWORD styleOld; + DWORD styleNew; +} +alias STYLESTRUCT* LPSTYLESTRUCT; + +struct ALTTABINFO { + DWORD cbSize = this.sizeof; + int cItems; + int cColumns; + int cRows; + int iColFocus; + int iRowFocus; + int cxItem; + int cyItem; + POINT ptStart; +} +alias ALTTABINFO* PALTTABINFO, LPALTTABINFO; + +struct COMBOBOXINFO { + DWORD cbSize = this.sizeof; + RECT rcItem; + RECT rcButton; + DWORD stateButton; + HWND hwndCombo; + HWND hwndItem; + HWND hwndList; +} +alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO; + +struct CURSORINFO { + DWORD cbSize = this.sizeof; + DWORD flags; + HCURSOR hCursor; + POINT ptScreenPos; +} +alias CURSORINFO* PCURSORINFO, LPCURSORINFO; + +struct MENUBARINFO { + DWORD cbSize = this.sizeof; + RECT rcBar; + HMENU hMenu; + HWND hwndMenu; + byte bf_; // Simulated bitfield +// BOOL fBarFocused:1; +// BOOL fFocused:1; + bool fBarFocused() { return (bf_ & 1) == 1; } + bool fFocused() { return (bf_ & 2) == 2; } + void fBarFocused(bool b) { bf_ = cast(byte)((bf_ & 0xFE) | b); } + void fFocused(bool b) { bf_ = cast(byte)(b ? (bf_ | 2) : bf_ & 0xFD); } +} +alias MENUBARINFO* PMENUBARINFO; + +struct MENUINFO { + DWORD cbSize = this.sizeof; + DWORD fMask; + DWORD dwStyle; + UINT cyMax; + HBRUSH hbrBack; + DWORD dwContextHelpID; + ULONG_PTR dwMenuData; +} +alias MENUINFO* LPMENUINFO; +alias const(MENUINFO)* LPCMENUINFO; + + +const CCHILDREN_SCROLLBAR=5; + +struct SCROLLBARINFO { + DWORD cbSize = this.sizeof; + RECT rcScrollBar; + int dxyLineButton; + int xyThumbTop; + int xyThumbBottom; + int reserved; + DWORD[CCHILDREN_SCROLLBAR+1] rgstate; +} +alias SCROLLBARINFO* PSCROLLBARINFO, LPSCROLLBARINFO; + +const CCHILDREN_TITLEBAR=5; + +struct TITLEBARINFO { + DWORD cbSize = TITLEBARINFO.sizeof; + RECT rcTitleBar; + DWORD[CCHILDREN_TITLEBAR+1] rgstate; +} +alias TITLEBARINFO* PTITLEBARINFO, LPTITLEBARINFO; + +struct WINDOWINFO { + DWORD cbSize = WINDOWINFO.sizeof; + RECT rcWindow; + RECT rcClient; + DWORD dwStyle; + DWORD dwExStyle; + DWORD dwWindowStatus; + UINT cxWindowBorders; + UINT cyWindowBorders; + ATOM atomWindowType; + WORD wCreatorVersion; +} +alias WINDOWINFO* PWINDOWINFO, LPWINDOWINFO; + +struct LASTINPUTINFO { + UINT cbSize = this.sizeof; + DWORD dwTime; +} +alias LASTINPUTINFO* PLASTINPUTINFO; + +struct MONITORINFO { + DWORD cbSize = this.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; +} +alias MONITORINFO* LPMONITORINFO; + +const CCHDEVICENAME=32; + +struct MONITORINFOEXA { + DWORD cbSize = MONITORINFOEXA.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + CHAR[CCHDEVICENAME] szDevice; +} +alias MONITORINFOEXA* LPMONITORINFOEXA; + +struct MONITORINFOEXW { + DWORD cbSize = MONITORINFOEXW.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + WCHAR[CCHDEVICENAME] szDevice; +} +alias MONITORINFOEXW* LPMONITORINFOEXW; + +struct KBDLLHOOKSTRUCT { + DWORD vkCode; + DWORD scanCode; + DWORD flags; + DWORD time; + DWORD dwExtraInfo; +} +alias KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT; + +static if (_WIN32_WINNT >= 0x501) { + struct FLASHWINFO { + UINT cbSize = this.sizeof; + HWND hwnd; + DWORD dwFlags; + UINT uCount; + DWORD dwTimeout; + } + alias FLASHWINFO* PFLASHWINFO; +} + +static if (_WIN32_WINNT >= 0x500) { + + struct MOUSEMOVEPOINT { + int x; + int y; + DWORD time; + ULONG_PTR dwExtraInfo; + } + alias MOUSEMOVEPOINT* PMOUSEMOVEPOINT, LPMOUSEMOVEPOINT; +} + +static if (_WIN32_WINNT >= 0x403) { + struct MOUSEINPUT { + LONG dx; + LONG dy; + DWORD mouseData; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; + } + alias MOUSEINPUT* PMOUSEINPUT; + + struct KEYBDINPUT { + WORD wVk; + WORD wScan; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; + } + alias KEYBDINPUT* PKEYBDINPUT; + + struct HARDWAREINPUT { + DWORD uMsg; + WORD wParamL; + WORD wParamH; + } + alias HARDWAREINPUT* PHARDWAREINPUT; + + struct INPUT { + DWORD type; + union { + MOUSEINPUT mi; + KEYBDINPUT ki; + HARDWAREINPUT hi; + } + } + alias INPUT* PINPUT, LPINPUT; +}// (_WIN32_WINNT >= 0x403) + +static if (_WIN32_WINNT >= 0x500) { + struct GUITHREADINFO { + DWORD cbSize = this.sizeof; + DWORD flags; + HWND hwndActive; + HWND hwndFocus; + HWND hwndCapture; + HWND hwndMenuOwner; + HWND hwndMoveSize; + HWND hwndCaret; + RECT rcCaret; + } + alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO; + extern (Windows) { + alias void function (HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC; + } + +}// (_WIN32_WINNT >= 0x500) + +static if (_WIN32_WINNT >= 0x501) { + struct BSMINFO { + UINT cbSize = this.sizeof; + HDESK hdesk; + HWND hwnd; + LUID luid; + } + alias BSMINFO* PBSMINFO; + + alias TypeDef!(HANDLE) HRAWINPUT; + + struct RAWINPUTHEADER { + DWORD dwType; + DWORD dwSize; + HANDLE hDevice; + WPARAM wParam; + } + alias RAWINPUTHEADER* PRAWINPUTHEADER; + + struct RAWMOUSE { + USHORT usFlags; + union { + ULONG ulButtons; + struct { + USHORT usButtonFlags; + USHORT usButtonData; + } + } + ULONG ulRawButtons; + LONG lLastX; + LONG lLastY; + ULONG ulExtraInformation; + } + alias RAWMOUSE* PRAWMOUSE, LPRAWMOUSE; + + struct RAWKEYBOARD { + USHORT MakeCode; + USHORT Flags; + USHORT Reserved; + USHORT VKey; + UINT Message; + ULONG ExtraInformation; + } + alias RAWKEYBOARD* PRAWKEYBOARD, LPRAWKEYBOARD; + + struct RAWHID { + DWORD dwSizeHid; + DWORD dwCount; + BYTE bRawData; + } + alias RAWHID* PRAWHID, LPRAWHID; + + struct RAWINPUT { + RAWINPUTHEADER header; + union _data { + RAWMOUSE mouse; + RAWKEYBOARD keyboard; + RAWHID hid; + } + _data data; + } + alias RAWINPUT* PRAWINPUT, LPRAWINPUT; + + struct RAWINPUTDEVICE { + USHORT usUsagePage; + USHORT usUsage; + DWORD dwFlags; + HWND hwndTarget; + } + alias RAWINPUTDEVICE* PRAWINPUTDEVICE, LPRAWINPUTDEVICE; + alias const(RAWINPUTDEVICE)* PCRAWINPUTDEVICE; + + struct RAWINPUTDEVICELIST { + HANDLE hDevice; + DWORD dwType; + } + alias RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST; + + struct RID_DEVICE_INFO_MOUSE { + DWORD dwId; + DWORD dwNumberOfButtons; + DWORD dwSampleRate; + BOOL fHasHorizontalWheel; + } + + struct RID_DEVICE_INFO_KEYBOARD { + DWORD dwType; + DWORD dwSubType; + DWORD dwKeyboardMode; + DWORD dwNumberOfFunctionKeys; + DWORD dwNumberOfIndicators; + DWORD dwNumberOfKeysTotal; + } + + struct RID_DEVICE_INFO_HID { + DWORD dwVendorId; + DWORD dwProductId; + DWORD dwVersionNumber; + USHORT usUsagePage; + USHORT usUsage; + } + + struct RID_DEVICE_INFO { + DWORD cbSize = this.sizeof; + DWORD dwType; + union { + RID_DEVICE_INFO_MOUSE mouse; + RID_DEVICE_INFO_KEYBOARD keyboard; + RID_DEVICE_INFO_HID hid; + } + } +}// (_WIN32_WINNT >= 0x501) + +struct MSLLHOOKSTRUCT { + POINT pt; + DWORD mouseData; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT; + +alias CharToOemA AnsiToOem; +alias OemToCharA OemToAnsi; +alias CharToOemBuffA AnsiToOemBuff; +alias OemToCharBuffA OemToAnsiBuff; +alias CharUpperA AnsiUpper; +alias CharUpperBuffA AnsiUpperBuff; +alias CharLowerA AnsiLower; +alias CharLowerBuffA AnsiLowerBuff; +alias CharNextA AnsiNext; +alias CharPrevA AnsiPrev; + +alias MAKELONG MAKEWPARAM; +alias MAKELONG MAKELPARAM; +alias MAKELONG MAKELRESULT; + +//MACRO #define POINTSTOPOINT(p, ps) { (p).x=LOWORD(*(DWORD*)&ps); (p).y=HIWORD(*(DWORD*)&ps); } +//MACRO #define POINTTOPOINTS(p) ((POINTS)MAKELONG((p).x, (p).y)) + +extern (Windows) { + + HKL ActivateKeyboardLayout(HKL, UINT); + BOOL AdjustWindowRect(LPRECT, DWORD, BOOL); + BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD); + BOOL AnyPopup(); + BOOL AppendMenuA(HMENU, UINT, UINT_PTR, LPCSTR); + BOOL AppendMenuW(HMENU, UINT, UINT_PTR, LPCWSTR); + UINT ArrangeIconicWindows(HWND); + BOOL AttachThreadInput(DWORD, DWORD, BOOL); + HDWP BeginDeferWindowPos(int); + HDC BeginPaint(HWND, LPPAINTSTRUCT); + BOOL BringWindowToTop(HWND); + BOOL CallMsgFilterA(LPMSG, INT); + BOOL CallMsgFilterW(LPMSG, INT); + LRESULT CallNextHookEx(HHOOK, int, WPARAM, LPARAM); + LRESULT CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM); + LRESULT CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM); + WORD CascadeWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*); + BOOL ChangeClipboardChain(HWND, HWND); + + LONG ChangeDisplaySettingsA(PDEVMODEA, DWORD); + LONG ChangeDisplaySettingsW(PDEVMODEW, DWORD); + LONG ChangeDisplaySettingsExA(LPCSTR, LPDEVMODEA, HWND, DWORD, LPVOID); + LONG ChangeDisplaySettingsExW(LPCWSTR, LPDEVMODEW, HWND, DWORD, LPVOID); + + BOOL ChangeMenuA(HMENU, UINT, LPCSTR, UINT, UINT); + BOOL ChangeMenuW(HMENU, UINT, LPCWSTR, UINT, UINT); + LPSTR CharLowerA(LPSTR); + LPWSTR CharLowerW(LPWSTR); + DWORD CharLowerBuffA(LPSTR, DWORD); + DWORD CharLowerBuffW(LPWSTR, DWORD); + LPSTR CharNextA(LPCSTR); + LPWSTR CharNextW(LPCWSTR); + LPSTR CharNextExA(WORD, LPCSTR, DWORD); + LPWSTR CharNextExW(WORD, LPCWSTR, DWORD); + LPSTR CharPrevA(LPCSTR, LPCSTR); + LPWSTR CharPrevW(LPCWSTR, LPCWSTR); + LPSTR CharPrevExA(WORD, LPCSTR, LPCSTR, DWORD); + LPWSTR CharPrevExW(WORD, LPCWSTR, LPCWSTR, DWORD); + BOOL CharToOemA(LPCSTR, LPSTR); + BOOL CharToOemW(LPCWSTR, LPSTR); + BOOL CharToOemBuffA(LPCSTR, LPSTR, DWORD); + BOOL CharToOemBuffW(LPCWSTR, LPSTR, DWORD); + LPSTR CharUpperA(LPSTR); + LPWSTR CharUpperW(LPWSTR); + DWORD CharUpperBuffA(LPSTR, DWORD); + DWORD CharUpperBuffW(LPWSTR, DWORD); + BOOL CheckDlgButton(HWND, int, UINT); + DWORD CheckMenuItem(HMENU, UINT, UINT); + BOOL CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT); + BOOL CheckRadioButton(HWND, int, int, int); + HWND ChildWindowFromPoint(HWND, POINT); + HWND ChildWindowFromPointEx(HWND, POINT, UINT); + BOOL ClientToScreen(HWND, LPPOINT); + BOOL ClipCursor(LPCRECT); + BOOL CloseClipboard(); + BOOL CloseDesktop(HDESK); + BOOL CloseWindow(HWND); + BOOL CloseWindowStation(HWINSTA); + int CopyAcceleratorTableA(HACCEL, LPACCEL, int); + int CopyAcceleratorTableW(HACCEL, LPACCEL, int); + + HICON CopyIcon(HICON); + HANDLE CopyImage(HANDLE, UINT, int, int, UINT); + BOOL CopyRect(LPRECT, LPCRECT); + int CountClipboardFormats(); + HACCEL CreateAcceleratorTableA(LPACCEL, int); + HACCEL CreateAcceleratorTableW(LPACCEL, int); + BOOL CreateCaret(HWND, HBITMAP, int, int); + HCURSOR CreateCursor(HINSTANCE, int, int, int, int, PCVOID, PCVOID); + + HDESK CreateDesktopA(LPCSTR, LPCSTR, LPDEVMODEA, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); + HDESK CreateDesktopW(LPCWSTR, LPCWSTR, LPDEVMODEW, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); + + HWND CreateDialogParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); + HWND CreateDialogParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); + HWND CreateDialogIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + HWND CreateDialogIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + + HICON CreateIcon(HINSTANCE, int, int, BYTE, BYTE, const(BYTE)*, BYTE*); + HICON CreateIconFromResource(PBYTE, DWORD, BOOL, DWORD); + HICON CreateIconFromResourceEx(PBYTE, DWORD, BOOL, DWORD, int, int, UINT); + HICON CreateIconIndirect(PICONINFO); + HWND CreateMDIWindowA(LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); + HWND CreateMDIWindowW(LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); + HMENU CreateMenu(); + HMENU CreatePopupMenu(); + + HWND CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); + HWND CreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); + + HWINSTA CreateWindowStationA(LPSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HWINSTA CreateWindowStationW(LPWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + LRESULT DefDlgProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefDlgProcW(HWND, UINT, WPARAM, LPARAM); + HDWP DeferWindowPos(HDWP, HWND, HWND, int, int, int, int, UINT); + LRESULT DefFrameProcA(HWND, HWND, UINT, WPARAM, LPARAM); + LRESULT DefFrameProcW(HWND, HWND, UINT, WPARAM, LPARAM); + + LRESULT DefMDIChildProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefMDIChildProcW(HWND, UINT, WPARAM, LPARAM); + LRESULT DefWindowProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefWindowProcW(HWND, UINT, WPARAM, LPARAM); + BOOL DeleteMenu(HMENU, UINT, UINT); + BOOL DeregisterShellHookWindow(HWND); + BOOL DestroyAcceleratorTable(HACCEL); + BOOL DestroyCaret(); + BOOL DestroyCursor(HCURSOR); + BOOL DestroyIcon(HICON); + BOOL DestroyMenu(HMENU); + BOOL DestroyWindow(HWND); + + INT_PTR DialogBoxParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + +} // extern (Windows) + +HCURSOR CopyCursor()(HCURSOR c) { + return cast(HCURSOR)CopyIcon(cast(HICON)c); +} + +HWND CreateDialogA()(HINSTANCE h, LPCSTR n, HWND w, DLGPROC f) { + return CreateDialogParamA(h, n, w, f, 0); +} + +HWND CreateDialogW()(HINSTANCE h, LPCWSTR n, HWND w, DLGPROC f) { + return CreateDialogParamW(h, n, w, f, 0); +} + +HWND CreateDialogIndirectA()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { + return CreateDialogIndirectParamA(h, t, w, f, 0); +} + +HWND CreateDialogIndirectW()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { + return CreateDialogIndirectParamW(h, t, w, f, 0); +} + +HWND CreateWindowA()(LPCSTR a, LPCSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { + return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k); +} + +HWND CreateWindowW()(LPCWSTR a, LPCWSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { + return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k); +} + +INT_PTR DialogBoxA()(HINSTANCE i, LPCSTR t, HWND p, DLGPROC f) { + return DialogBoxParamA(i, t, p, f, 0); +} + +INT_PTR DialogBoxW()(HINSTANCE i, LPCWSTR t, HWND p, DLGPROC f) { + return DialogBoxParamW(i, t, p, f, 0); +} + +INT_PTR DialogBoxIndirectA()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { + return DialogBoxIndirectParamA(i, t, p, f, 0); +} + +INT_PTR DialogBoxIndirectW()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { + return DialogBoxIndirectParamW(i, t, p, f, 0); +} + +BOOL ExitWindows()(UINT r, DWORD c) { + return ExitWindowsEx(EWX_LOGOFF, 0); +} +alias GetWindow GetNextWindow; + +extern (Windows): +LONG DispatchMessageA(const(MSG)*); +LONG DispatchMessageW(const(MSG)*); +int DlgDirListA(HWND, LPSTR, int, int, UINT); +int DlgDirListW(HWND, LPWSTR, int, int, UINT); +int DlgDirListComboBoxA(HWND, LPSTR, int, int, UINT); +int DlgDirListComboBoxW(HWND, LPWSTR, int, int, UINT); +BOOL DlgDirSelectComboBoxExA(HWND, LPSTR, int, int); +BOOL DlgDirSelectComboBoxExW(HWND, LPWSTR, int, int); +BOOL DlgDirSelectExA(HWND, LPSTR, int, int); +BOOL DlgDirSelectExW(HWND, LPWSTR, int, int); +BOOL DragDetect(HWND, POINT); +DWORD DragObject(HWND, HWND, UINT, DWORD, HCURSOR); +BOOL DrawAnimatedRects(HWND, int, LPCRECT, LPCRECT); +BOOL DrawCaption(HWND, HDC, LPCRECT, UINT); +BOOL DrawEdge(HDC, LPRECT, UINT, UINT); +BOOL DrawFocusRect(HDC, LPCRECT); +BOOL DrawFrameControl(HDC, LPRECT, UINT, UINT); +BOOL DrawIcon(HDC, int, int, HICON); +BOOL DrawIconEx(HDC, int, int, HICON, int, int, UINT, HBRUSH, UINT); +BOOL DrawMenuBar(HWND); +BOOL DrawStateA(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT); +BOOL DrawStateW(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT); +int DrawTextA(HDC, LPCSTR, int, LPRECT, UINT); +int DrawTextW(HDC, LPCWSTR, int, LPRECT, UINT); +int DrawTextExA(HDC, LPSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS); +int DrawTextExW(HDC, LPWSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS); +BOOL EmptyClipboard(); +BOOL EnableMenuItem(HMENU, UINT, UINT); +BOOL EnableScrollBar(HWND, UINT, UINT); +BOOL EnableWindow(HWND, BOOL); +BOOL EndDeferWindowPos(HDWP); +BOOL EndDialog(HWND, INT_PTR); +BOOL EndMenu(); +BOOL EndPaint(HWND, const(PAINTSTRUCT)*); +BOOL EnumChildWindows(HWND, ENUMWINDOWSPROC, LPARAM); +UINT EnumClipboardFormats(UINT); +BOOL EnumDesktopsA(HWINSTA, DESKTOPENUMPROCA, LPARAM); +BOOL EnumDesktopsW(HWINSTA, DESKTOPENUMPROCW, LPARAM); +BOOL EnumDesktopWindows(HDESK, ENUMWINDOWSPROC, LPARAM); +BOOL EnumDisplaySettingsA(LPCSTR, DWORD, PDEVMODEA); +BOOL EnumDisplaySettingsW(LPCWSTR, DWORD, PDEVMODEW); + +BOOL EnumDisplayDevicesA(LPCSTR, DWORD, PDISPLAY_DEVICEA, DWORD); +BOOL EnumDisplayDevicesW(LPCWSTR, DWORD, PDISPLAY_DEVICEW, DWORD); + +int EnumPropsA(HWND, PROPENUMPROCA); +int EnumPropsW(HWND, PROPENUMPROCW); +int EnumPropsExA(HWND, PROPENUMPROCEXA, LPARAM); +int EnumPropsExW(HWND, PROPENUMPROCEXW, LPARAM); + +BOOL EnumThreadWindows(DWORD, WNDENUMPROC, LPARAM); +BOOL EnumWindows(WNDENUMPROC, LPARAM); +BOOL EnumWindowStationsA(WINSTAENUMPROCA, LPARAM); +BOOL EnumWindowStationsW(WINSTAENUMPROCW, LPARAM); +BOOL EqualRect(LPCRECT, LPCRECT); + +BOOL ExitWindowsEx(UINT, DWORD); +HWND FindWindowA(LPCSTR, LPCSTR); +HWND FindWindowExA(HWND, HWND, LPCSTR, LPCSTR); +HWND FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR); +HWND FindWindowW(LPCWSTR, LPCWSTR); +BOOL FlashWindow(HWND, BOOL); + +int FrameRect(HDC, LPCRECT, HBRUSH); +BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); +HWND GetActiveWindow(); +HWND GetAncestor(HWND, UINT); +SHORT GetAsyncKeyState(int); +HWND GetCapture(); +UINT GetCaretBlinkTime(); +BOOL GetCaretPos(LPPOINT); +BOOL GetClassInfoA(HINSTANCE, LPCSTR, LPWNDCLASSA); +BOOL GetClassInfoExA(HINSTANCE, LPCSTR, LPWNDCLASSEXA); +BOOL GetClassInfoW(HINSTANCE, LPCWSTR, LPWNDCLASSW); +BOOL GetClassInfoExW(HINSTANCE, LPCWSTR, LPWNDCLASSEXW); +DWORD GetClassLongA(HWND, int); +DWORD GetClassLongW(HWND, int); +int GetClassNameA(HWND, LPSTR, int); +int GetClassNameW(HWND, LPWSTR, int); +WORD GetClassWord(HWND, int); +BOOL GetClientRect(HWND, LPRECT); +HANDLE GetClipboardData(UINT); +int GetClipboardFormatNameA(UINT, LPSTR, int); +int GetClipboardFormatNameW(UINT, LPWSTR, int); +HWND GetClipboardOwner(); +HWND GetClipboardViewer(); +BOOL GetClipCursor(LPRECT); +BOOL GetCursorPos(LPPOINT); +HDC GetDC(HWND); +HDC GetDCEx(HWND, HRGN, DWORD); +HWND GetDesktopWindow(); +int GetDialogBaseUnits(); +int GetDlgCtrlID(HWND); +HWND GetDlgItem(HWND, int); +UINT GetDlgItemInt(HWND, int, PBOOL, BOOL); +UINT GetDlgItemTextA(HWND, int, LPSTR, int); +UINT GetDlgItemTextW(HWND, int, LPWSTR, int); +UINT GetDoubleClickTime(); +HWND GetFocus(); +HWND GetForegroundWindow(); + +BOOL GetIconInfo(HICON, PICONINFO); +BOOL GetInputState(); +UINT GetKBCodePage(); +HKL GetKeyboardLayout(DWORD); +UINT GetKeyboardLayoutList(int, HKL*); +BOOL GetKeyboardLayoutNameA(LPSTR); +BOOL GetKeyboardLayoutNameW(LPWSTR); +BOOL GetKeyboardState(PBYTE); +int GetKeyboardType(int); +int GetKeyNameTextA(LONG, LPSTR, int); +int GetKeyNameTextW(LONG, LPWSTR, int); +SHORT GetKeyState(int); +HWND GetLastActivePopup(HWND); +HMENU GetMenu(HWND); +LONG GetMenuCheckMarkDimensions(); +DWORD GetMenuContextHelpId(HMENU); +UINT GetMenuDefaultItem(HMENU, UINT, UINT); +int GetMenuItemCount(HMENU); +UINT GetMenuItemID(HMENU, int); +BOOL GetMenuItemInfoA(HMENU, UINT, BOOL, LPMENUITEMINFOA); +BOOL GetMenuItemInfoW(HMENU, UINT, BOOL, LPMENUITEMINFOW); +BOOL GetMenuItemRect(HWND, HMENU, UINT, LPRECT); +UINT GetMenuState(HMENU, UINT, UINT); +int GetMenuStringA(HMENU, UINT, LPSTR, int, UINT); +int GetMenuStringW(HMENU, UINT, LPWSTR, int, UINT); +BOOL GetMessageA(LPMSG, HWND, UINT, UINT); +BOOL GetMessageW(LPMSG, HWND, UINT, UINT); +LONG GetMessageExtraInfo(); +DWORD GetMessagePos(); +LONG GetMessageTime(); + +HWND GetNextDlgGroupItem(HWND, HWND, BOOL); +HWND GetNextDlgTabItem(HWND, HWND, BOOL); + +HWND GetOpenClipboardWindow(); +HWND GetParent(HWND); +int GetPriorityClipboardFormat(UINT*, int); +HANDLE GetPropA(HWND, LPCSTR); +HANDLE GetPropW(HWND, LPCWSTR); + +DWORD GetQueueStatus(UINT); +BOOL GetScrollInfo(HWND, int, LPSCROLLINFO); +int GetScrollPos(HWND, int); +BOOL GetScrollRange(HWND, int, LPINT, LPINT); + +HMENU GetSubMenu(HMENU, int); +DWORD GetSysColor(int); +HBRUSH GetSysColorBrush(int); + +HMENU GetSystemMenu(HWND, BOOL); +int GetSystemMetrics(int); +DWORD GetTabbedTextExtentA(HDC, LPCSTR, int, int, LPINT); +DWORD GetTabbedTextExtentW(HDC, LPCWSTR, int, int, LPINT); +LONG GetWindowLongA(HWND, int); +LONG GetWindowLongW(HWND, int); + +HDESK GetThreadDesktop(DWORD); +HWND GetTopWindow(HWND); +BOOL GetUpdateRect(HWND, LPRECT, BOOL); +int GetUpdateRgn(HWND, HRGN, BOOL); +BOOL GetUserObjectInformationA(HANDLE, int, PVOID, DWORD, PDWORD); +BOOL GetUserObjectInformationW(HANDLE, int, PVOID, DWORD, PDWORD); +BOOL GetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); +HWND GetWindow(HWND, UINT); +DWORD GetWindowContextHelpId(HWND); +HDC GetWindowDC(HWND); +BOOL GetWindowPlacement(HWND, WINDOWPLACEMENT*); +BOOL GetWindowRect(HWND, LPRECT); +int GetWindowRgn(HWND, HRGN); +int GetWindowTextA(HWND, LPSTR, int); +int GetWindowTextLengthA(HWND); +int GetWindowTextLengthW(HWND); +int GetWindowTextW(HWND, LPWSTR, int); +WORD GetWindowWord(HWND, int); +BOOL GetAltTabInfoA(HWND, int, PALTTABINFO, LPSTR, UINT); +BOOL GetAltTabInfoW(HWND, int, PALTTABINFO, LPWSTR, UINT); +BOOL GetComboBoxInfo(HWND, PCOMBOBOXINFO); +BOOL GetCursorInfo(PCURSORINFO); +BOOL GetLastInputInfo(PLASTINPUTINFO); +DWORD GetListBoxInfo(HWND); +BOOL GetMenuBarInfo(HWND, LONG, LONG, PMENUBARINFO); +BOOL GetMenuInfo(HMENU, LPMENUINFO); +BOOL GetScrollBarInfo(HWND, LONG, PSCROLLBARINFO); +BOOL GetTitleBarInfo(HWND, PTITLEBARINFO); +BOOL GetWindowInfo(HWND, PWINDOWINFO); +UINT GetWindowModuleFileNameA(HWND, LPSTR, UINT); +UINT GetWindowModuleFileNameW(HWND, LPWSTR, UINT); +BOOL GrayStringA(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int); +BOOL GrayStringW(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int); +BOOL HideCaret(HWND); +BOOL HiliteMenuItem(HWND, HMENU, UINT, UINT); +BOOL InflateRect(LPRECT, int, int); +BOOL InSendMessage(); +BOOL InsertMenuA(HMENU, UINT, UINT, UINT_PTR, LPCSTR); +BOOL InsertMenuW(HMENU, UINT, UINT, UINT_PTR, LPCWSTR); +BOOL InsertMenuItemA(HMENU, UINT, BOOL, LPCMENUITEMINFOA); +BOOL InsertMenuItemW(HMENU, UINT, BOOL, LPCMENUITEMINFOW); +INT InternalGetWindowText(HWND, LPWSTR, INT); +BOOL IntersectRect(LPRECT, LPCRECT, LPCRECT); +BOOL InvalidateRect(HWND, LPCRECT, BOOL); +BOOL InvalidateRgn(HWND, HRGN, BOOL); +BOOL InvertRect(HDC, LPCRECT); +BOOL IsCharAlphaA(CHAR ch); +BOOL IsCharAlphaNumericA(CHAR); +BOOL IsCharAlphaNumericW(WCHAR); +BOOL IsCharAlphaW(WCHAR); +BOOL IsCharLowerA(CHAR); +BOOL IsCharLowerW(WCHAR); +BOOL IsCharUpperA(CHAR); +BOOL IsCharUpperW(WCHAR); +BOOL IsChild(HWND, HWND); +BOOL IsClipboardFormatAvailable(UINT); +BOOL IsDialogMessageA(HWND, LPMSG); +BOOL IsDialogMessageW(HWND, LPMSG); +UINT IsDlgButtonChecked(HWND, int); +BOOL IsIconic(HWND); +BOOL IsMenu(HMENU); +BOOL IsRectEmpty(LPCRECT); +BOOL IsWindow(HWND); +BOOL IsWindowEnabled(HWND); +BOOL IsWindowUnicode(HWND); +BOOL IsWindowVisible(HWND); +BOOL IsZoomed(HWND); +void keybd_event(BYTE, BYTE, DWORD, DWORD); +BOOL KillTimer(HWND, UINT_PTR); +HACCEL LoadAcceleratorsA(HINSTANCE, LPCSTR); +HACCEL LoadAcceleratorsW(HINSTANCE, LPCWSTR); +HBITMAP LoadBitmapA(HINSTANCE, LPCSTR); +HBITMAP LoadBitmapW(HINSTANCE, LPCWSTR); +HCURSOR LoadCursorA(HINSTANCE, LPCSTR); +HCURSOR LoadCursorFromFileA(LPCSTR); +HCURSOR LoadCursorFromFileW(LPCWSTR); +HCURSOR LoadCursorW(HINSTANCE, LPCWSTR); +HICON LoadIconA(HINSTANCE, LPCSTR); +HICON LoadIconW(HINSTANCE, LPCWSTR); +HANDLE LoadImageA(HINSTANCE, LPCSTR, UINT, int, int, UINT); +HANDLE LoadImageW(HINSTANCE, LPCWSTR, UINT, int, int, UINT); +HKL LoadKeyboardLayoutA(LPCSTR, UINT); +HKL LoadKeyboardLayoutW(LPCWSTR, UINT); +HMENU LoadMenuA(HINSTANCE, LPCSTR); +HMENU LoadMenuIndirectA(const(MENUTEMPLATE)*); +HMENU LoadMenuIndirectW(const(MENUTEMPLATE)*); +HMENU LoadMenuW(HINSTANCE, LPCWSTR); +int LoadStringA(HINSTANCE, UINT, LPSTR, int); +int LoadStringW(HINSTANCE, UINT, LPWSTR, int); +BOOL LockWindowUpdate(HWND); +int LookupIconIdFromDirectory(PBYTE, BOOL); +int LookupIconIdFromDirectoryEx(PBYTE, BOOL, int, int, UINT); +BOOL MapDialogRect(HWND, LPRECT); +UINT MapVirtualKeyA(UINT, UINT); +UINT MapVirtualKeyExA(UINT, UINT, HKL); +UINT MapVirtualKeyExW(UINT, UINT, HKL); +UINT MapVirtualKeyW(UINT, UINT); +int MapWindowPoints(HWND, HWND, LPPOINT, UINT); +int MenuItemFromPoint(HWND, HMENU, POINT); +BOOL MessageBeep(UINT); +int MessageBoxA(HWND, LPCSTR, LPCSTR, UINT); +int MessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT); +int MessageBoxExA(HWND, LPCSTR, LPCSTR, UINT, WORD); +int MessageBoxExW(HWND, LPCWSTR, LPCWSTR, UINT, WORD); +int MessageBoxIndirectA(const(MSGBOXPARAMSA)*); +int MessageBoxIndirectW(const(MSGBOXPARAMSW)*); +BOOL ModifyMenuA(HMENU, UINT, UINT, UINT_PTR, LPCSTR); +BOOL ModifyMenuW(HMENU, UINT, UINT, UINT_PTR, LPCWSTR); +void mouse_event(DWORD, DWORD, DWORD, DWORD, ULONG_PTR); +BOOL MoveWindow(HWND, int, int, int, int, BOOL); +DWORD MsgWaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD, DWORD); +DWORD MsgWaitForMultipleObjectsEx(DWORD, const(HANDLE)*, DWORD, DWORD, DWORD); +DWORD OemKeyScan(WORD); +BOOL OemToCharA(LPCSTR, LPSTR); +BOOL OemToCharBuffA(LPCSTR, LPSTR, DWORD); +BOOL OemToCharBuffW(LPCSTR, LPWSTR, DWORD); +BOOL OemToCharW(LPCSTR, LPWSTR); +BOOL OffsetRect(LPRECT, int, int); +BOOL OpenClipboard(HWND); +HDESK OpenDesktopA(LPSTR, DWORD, BOOL, DWORD); +HDESK OpenDesktopW(LPWSTR, DWORD, BOOL, DWORD); +BOOL OpenIcon(HWND); +HDESK OpenInputDesktop(DWORD, BOOL, DWORD); +HWINSTA OpenWindowStationA(LPSTR, BOOL, DWORD); +HWINSTA OpenWindowStationW(LPWSTR, BOOL, DWORD); +BOOL PaintDesktop(HDC); +BOOL PeekMessageA(LPMSG, HWND, UINT, UINT, UINT); +BOOL PeekMessageW(LPMSG, HWND, UINT, UINT, UINT); +BOOL PostMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL PostMessageW(HWND, UINT, WPARAM, LPARAM); +void PostQuitMessage(int); +BOOL PostThreadMessageA(DWORD, UINT, WPARAM, LPARAM); +BOOL PostThreadMessageW(DWORD, UINT, WPARAM, LPARAM); +BOOL PtInRect(LPCRECT, POINT); +HWND RealChildWindowFromPoint(HWND, POINT); +UINT RealGetWindowClassA(HWND, LPSTR, UINT); +UINT RealGetWindowClassW(HWND, LPWSTR, UINT); +BOOL RedrawWindow(HWND, LPCRECT, HRGN, UINT); +ATOM RegisterClassA(const(WNDCLASSA)*); +ATOM RegisterClassW(const(WNDCLASSW)*); +ATOM RegisterClassExA(const(WNDCLASSEXA)*); +ATOM RegisterClassExW(const(WNDCLASSEXW)*); +UINT RegisterClipboardFormatA(LPCSTR); +UINT RegisterClipboardFormatW(LPCWSTR); +BOOL RegisterHotKey(HWND, int, UINT, UINT); +UINT RegisterWindowMessageA(LPCSTR); +UINT RegisterWindowMessageW(LPCWSTR); +BOOL ReleaseCapture(); +int ReleaseDC(HWND, HDC); +BOOL RemoveMenu(HMENU, UINT, UINT); +HANDLE RemovePropA(HWND, LPCSTR); +HANDLE RemovePropW(HWND, LPCWSTR); +BOOL ReplyMessage(LRESULT); +BOOL ScreenToClient(HWND, LPPOINT); +BOOL ScrollDC(HDC, int, int, LPCRECT, LPCRECT, HRGN, LPRECT); +BOOL ScrollWindow(HWND, int, int, LPCRECT, LPCRECT); +int ScrollWindowEx(HWND, int, int, LPCRECT, LPCRECT, HRGN, LPRECT, UINT); +LONG SendDlgItemMessageA(HWND, int, UINT, WPARAM, LPARAM); +LONG SendDlgItemMessageW(HWND, int, UINT, WPARAM, LPARAM); +LRESULT SendMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL SendMessageCallbackA(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); +BOOL SendMessageCallbackW(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); +LRESULT SendMessageTimeoutA(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); +LRESULT SendMessageTimeoutW(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); +LRESULT SendMessageW(HWND, UINT, WPARAM, LPARAM); +BOOL SendNotifyMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL SendNotifyMessageW(HWND, UINT, WPARAM, LPARAM); +HWND SetActiveWindow(HWND); +HWND SetCapture(HWND hWnd); +BOOL SetCaretBlinkTime(UINT); +BOOL SetCaretPos(int, int); +DWORD SetClassLongA(HWND, int, LONG); +DWORD SetClassLongW(HWND, int, LONG); +WORD SetClassWord(HWND, int, WORD); +HANDLE SetClipboardData(UINT, HANDLE); +HWND SetClipboardViewer(HWND); +HCURSOR SetCursor(HCURSOR); +BOOL SetCursorPos(int, int); +void SetDebugErrorLevel(DWORD); +BOOL SetDlgItemInt(HWND, int, UINT, BOOL); +BOOL SetDlgItemTextA(HWND, int, LPCSTR); +BOOL SetDlgItemTextW(HWND, int, LPCWSTR); +BOOL SetDoubleClickTime(UINT); +HWND SetFocus(HWND); +BOOL SetForegroundWindow(HWND); +BOOL SetKeyboardState(PBYTE); +BOOL SetMenu(HWND, HMENU); +BOOL SetMenuContextHelpId(HMENU, DWORD); +BOOL SetMenuDefaultItem(HMENU, UINT, UINT); +BOOL SetMenuInfo(HMENU, LPCMENUINFO); +BOOL SetMenuItemBitmaps(HMENU, UINT, UINT, HBITMAP, HBITMAP); +BOOL SetMenuItemInfoA(HMENU, UINT, BOOL, LPCMENUITEMINFOA); +BOOL SetMenuItemInfoW(HMENU, UINT, BOOL, LPCMENUITEMINFOW); +LPARAM SetMessageExtraInfo(LPARAM); +BOOL SetMessageQueue(int); +HWND SetParent(HWND, HWND); +BOOL SetProcessWindowStation(HWINSTA); +BOOL SetPropA(HWND, LPCSTR, HANDLE); +BOOL SetPropW(HWND, LPCWSTR, HANDLE); +BOOL SetRect(LPRECT, int, int, int, int); +BOOL SetRectEmpty(LPRECT); +int SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL); +int SetScrollPos(HWND, int, int, BOOL); +BOOL SetScrollRange(HWND, int, int, int, BOOL); +BOOL SetSysColors(int, const(INT)*, const(COLORREF)*); +BOOL SetSystemCursor(HCURSOR, DWORD); +BOOL SetThreadDesktop(HDESK); +UINT_PTR SetTimer(HWND, UINT_PTR, UINT, TIMERPROC); +BOOL SetUserObjectInformationA(HANDLE, int, PVOID, DWORD); +BOOL SetUserObjectInformationW(HANDLE, int, PVOID, DWORD); +BOOL SetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR); +BOOL SetWindowContextHelpId(HWND, DWORD); +LONG SetWindowLongA(HWND, int, LONG); +LONG SetWindowLongW(HWND, int, LONG); +BOOL SetWindowPlacement(HWND hWnd, const(WINDOWPLACEMENT)*); +BOOL SetWindowPos(HWND, HWND, int, int, int, int, UINT); +int SetWindowRgn(HWND, HRGN, BOOL); +HHOOK SetWindowsHookA(int, HOOKPROC); +HHOOK SetWindowsHookW(int, HOOKPROC); +HHOOK SetWindowsHookExA(int, HOOKPROC, HINSTANCE, DWORD); +HHOOK SetWindowsHookExW(int, HOOKPROC, HINSTANCE, DWORD); +BOOL SetWindowTextA(HWND, LPCSTR); +BOOL SetWindowTextW(HWND, LPCWSTR); +WORD SetWindowWord(HWND, int, WORD); +BOOL ShowCaret(HWND); +int ShowCursor(BOOL); +BOOL ShowOwnedPopups(HWND, BOOL); +BOOL ShowScrollBar(HWND, int, BOOL); +BOOL ShowWindow(HWND, int); +BOOL ShowWindowAsync(HWND, int); +BOOL SubtractRect(LPRECT, LPCRECT, LPCRECT); +BOOL SwapMouseButton(BOOL); +BOOL SwitchDesktop(HDESK); +BOOL SystemParametersInfoA(UINT, UINT, PVOID, UINT); +BOOL SystemParametersInfoW(UINT, UINT, PVOID, UINT); +LONG TabbedTextOutA(HDC, int, int, LPCSTR, int, int, LPINT, int); +LONG TabbedTextOutW(HDC, int, int, LPCWSTR, int, int, LPINT, int); +WORD TileWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*); +int ToAscii(UINT, UINT, PBYTE, LPWORD, UINT); +int ToAsciiEx(UINT, UINT, PBYTE, LPWORD, UINT, HKL); +int ToUnicode(UINT, UINT, PBYTE, LPWSTR, int, UINT); +int ToUnicodeEx(UINT, UINT, PBYTE, LPWSTR, int, UINT, HKL); +BOOL TrackMouseEvent(LPTRACKMOUSEEVENT); +BOOL TrackPopupMenu(HMENU, UINT, int, int, int, HWND, LPCRECT); +BOOL TrackPopupMenuEx(HMENU, UINT, int, int, HWND, LPTPMPARAMS); +int TranslateAcceleratorA(HWND, HACCEL, LPMSG); +int TranslateAcceleratorW(HWND, HACCEL, LPMSG); +BOOL TranslateMDISysAccel(HWND, LPMSG); +BOOL TranslateMessage(const(MSG)*); +BOOL UnhookWindowsHook(int, HOOKPROC); +BOOL UnhookWindowsHookEx(HHOOK); +BOOL UnionRect(LPRECT, LPCRECT, LPCRECT); +BOOL UnloadKeyboardLayout(HKL); +BOOL UnregisterClassA(LPCSTR, HINSTANCE); +BOOL UnregisterClassW(LPCWSTR, HINSTANCE); +BOOL UnregisterHotKey(HWND, int); +BOOL UpdateWindow(HWND); +BOOL ValidateRect(HWND, LPCRECT); +BOOL ValidateRgn(HWND, HRGN); +SHORT VkKeyScanA(CHAR); +SHORT VkKeyScanExA(CHAR, HKL); +SHORT VkKeyScanExW(WCHAR, HKL); +SHORT VkKeyScanW(WCHAR); +DWORD WaitForInputIdle(HANDLE, DWORD); +BOOL WaitMessage(); +HWND WindowFromDC(HDC hDC); +HWND WindowFromPoint(POINT); +UINT WinExec(LPCSTR, UINT); +BOOL WinHelpA(HWND, LPCSTR, UINT, DWORD); +BOOL WinHelpW(HWND, LPCWSTR, UINT, DWORD); + +extern (C) { + int wsprintfA(LPSTR, LPCSTR, ...); + int wsprintfW(LPWSTR, LPCWSTR, ...); +} + + +// These shouldn't be necessary for D. +alias TypeDef!(char*) va_list_; +int wvsprintfA(LPSTR, LPCSTR, va_list_ arglist); +int wvsprintfW(LPWSTR, LPCWSTR, va_list_ arglist); + + +int BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM); +int BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM); + +static if (_WIN32_WINNT >= 0x403) { + UINT SendInput(UINT, LPINPUT, int); +} + +static if (_WIN32_WINNT >= 0x410) { + BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM); + BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFO); + BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFOEXA); + BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFO); + BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFOEXW); + HMONITOR MonitorFromPoint(POINT, DWORD); + HMONITOR MonitorFromRect(LPCRECT, DWORD); + HMONITOR MonitorFromWindow(HWND, DWORD); +} + +static if (_WIN32_WINNT >= 0x500) { + BOOL AllowSetForegroundWindow(DWORD); + BOOL AnimateWindow(HWND, DWORD, DWORD); + BOOL EndTask(HWND, BOOL, BOOL); + BOOL EnumDisplaySettingsExA(LPCSTR, DWORD, LPDEVMODEA, DWORD); + BOOL EnumDisplaySettingsExW(LPCWSTR, DWORD, LPDEVMODEW, DWORD); + DWORD GetClipboardSequenceNumber(); + DWORD GetGuiResources(HANDLE, DWORD); + BOOL GetGUIThreadInfo(DWORD, LPGUITHREADINFO); + int GetMouseMovePointsEx(UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD); + BOOL GetProcessDefaultLayout(DWORD*); + HWND GetShellWindow(); + BOOL IsHungAppWindow(HWND); + DWORD InSendMessageEx(LPVOID); + BOOL LockSetForegroundWindow(UINT); + BOOL LockWorkStation(); + void NotifyWinEvent(DWORD, HWND, LONG, LONG); + HDEVNOTIFY RegisterDeviceNotificationA(HANDLE, LPVOID, DWORD); + HDEVNOTIFY RegisterDeviceNotificationW(HANDLE, LPVOID, DWORD); + BOOL SetProcessDefaultLayout(DWORD); + HWINEVENTHOOK SetWinEventHook(UINT, UINT, HMODULE, WINEVENTPROC, DWORD, DWORD, UINT); + void SwitchToThisWindow(HWND, BOOL); + BOOL SetLayeredWindowAttributes(HWND, COLORREF, BYTE, DWORD); + BOOL UpdateLayeredWindow(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD); + BOOL UserHandleGrantAccess(HANDLE, HANDLE, BOOL); + BOOL UnhookWinEvent(HWINEVENTHOOK); + BOOL UnregisterDeviceNotification(HANDLE); +} + +static if (_WIN32_WINNT >= 0x501) { + int BroadcastSystemMessageExA(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); + int BroadcastSystemMessageExW(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); + LRESULT DefRawInputProc(PRAWINPUT*, INT, UINT); + BOOL FlashWindowEx(PFLASHWINFO); + BOOL GetLayeredWindowAttributes(HWND, COLORREF*, BYTE*, DWORD*); + UINT GetRawInputBuffer(PRAWINPUT, PUINT, UINT); + UINT GetRawInputData(HRAWINPUT, UINT, LPVOID, PUINT, UINT); + UINT GetRawInputDeviceInfoA(HANDLE, UINT, LPVOID, PUINT); + UINT GetRawInputDeviceInfoW(HANDLE, UINT, LPVOID, PUINT); + UINT GetRawInputDeviceList(PRAWINPUTDEVICELIST, PUINT, UINT); + UINT GetRegisteredRawInputDevices(PRAWINPUTDEVICE, PUINT, UINT); + BOOL IsGUIThread(BOOL); + BOOL IsWinEventHookInstalled(DWORD); + BOOL PrintWindow(HWND, HDC, UINT); + BOOL RegisterRawInputDevices(PCRAWINPUTDEVICE, UINT, UINT); +} + +version (Win64) { + LONG_PTR GetWindowLongPtrA(HWND, int); + LONG_PTR GetWindowLongPtrW(HWND, int); + LONG_PTR SetWindowLongPtrA(HWND, int, LONG_PTR); + LONG_PTR SetWindowLongPtrW(HWND, int, LONG_PTR); +} else { + alias GetWindowLongA GetWindowLongPtrA; + alias GetWindowLongW GetWindowLongPtrW; + alias SetWindowLongA SetWindowLongPtrA; + alias SetWindowLongW SetWindowLongPtrW; +} + + +// ----- +// Aliases for Unicode or Ansi +version(Unicode) { + + alias EDITWORDBREAKPROCW EDITWORDBREAKPROC; + alias PROPENUMPROCW PROPENUMPROC; + alias PROPENUMPROCEXW PROPENUMPROCEX; + alias DESKTOPENUMPROCW DESKTOPENUMPROC; + alias WINSTAENUMPROCW WINSTAENUMPROC; + alias MAKEINTRESOURCEW MAKEINTRESOURCE; + + alias WNDCLASSW WNDCLASS; + alias WNDCLASSEXW WNDCLASSEX; + alias MENUITEMINFOW MENUITEMINFO; + alias LPCMENUITEMINFOW LPCMENUITEMINFO; + alias MSGBOXPARAMSW MSGBOXPARAMS; + alias HIGHCONTRASTW HIGHCONTRAST; + alias SERIALKEYSW SERIALKEYS; + alias SOUNDSENTRYW SOUNDSENTRY; + alias CREATESTRUCTW CREATESTRUCT; + alias CBT_CREATEWNDW CBT_CREATEWND; + alias MDICREATESTRUCTW MDICREATESTRUCT; + alias MULTIKEYHELPW MULTIKEYHELP; + alias MONITORINFOEXW MONITORINFOEX; + alias ICONMETRICSW ICONMETRICS; + alias NONCLIENTMETRICSW NONCLIENTMETRICS; + + alias AppendMenuW AppendMenu; + alias BroadcastSystemMessageW BroadcastSystemMessage; + static if (_WIN32_WINNT >= 0x501) { + alias BroadcastSystemMessageExW BroadcastSystemMessageEx; + } + alias CallMsgFilterW CallMsgFilter; + alias CallWindowProcW CallWindowProc; + alias ChangeMenuW ChangeMenu; + alias CharLowerW CharLower; + alias CharLowerBuffW CharLowerBuff; + alias CharNextW CharNext; + alias CharNextExW CharNextEx; + alias CharPrevW CharPrev; + alias CharPrevExW CharPrevEx; + alias CharToOemW CharToOem; + alias CharToOemBuffW CharToOemBuff; + alias CharUpperW CharUpper; + alias CharUpperBuffW CharUpperBuff; + alias CopyAcceleratorTableW CopyAcceleratorTable; + alias CreateAcceleratorTableW CreateAcceleratorTable; + alias CreateDialogW CreateDialog; + alias CreateDialogIndirectW CreateDialogIndirect; + alias CreateDialogIndirectParamW CreateDialogIndirectParam; + alias CreateDialogParamW CreateDialogParam; + alias CreateMDIWindowW CreateMDIWindow; + alias CreateWindowW CreateWindow; + alias CreateWindowExW CreateWindowEx; + alias CreateWindowStationW CreateWindowStation; + alias DefDlgProcW DefDlgProc; + alias DefFrameProcW DefFrameProc; + alias DefMDIChildProcW DefMDIChildProc; + alias DefWindowProcW DefWindowProc; + alias DialogBoxW DialogBox; + alias DialogBoxIndirectW DialogBoxIndirect; + alias DialogBoxIndirectParamW DialogBoxIndirectParam; + alias DialogBoxParamW DialogBoxParam; + alias DispatchMessageW DispatchMessage; + alias DlgDirListW DlgDirList; + alias DlgDirListComboBoxW DlgDirListComboBox; + alias DlgDirSelectComboBoxExW DlgDirSelectComboBoxEx; + alias DlgDirSelectExW DlgDirSelectEx; + alias DrawStateW DrawState; + alias DrawTextW DrawText; + alias DrawTextExW DrawTextEx; + alias EnumDesktopsW EnumDesktops; + alias EnumPropsW EnumProps; + alias EnumPropsExW EnumPropsEx; + alias EnumWindowStationsW EnumWindowStations; + alias FindWindowW FindWindow; + alias FindWindowExW FindWindowEx; + alias GetClassInfoW GetClassInfo; + alias GetClassInfoExW GetClassInfoEx; + alias GetClassLongW GetClassLong; + alias GetClassNameW GetClassName; + alias GetClipboardFormatNameW GetClipboardFormatName; + alias GetDlgItemTextW GetDlgItemText; + alias GetKeyboardLayoutNameW GetKeyboardLayoutName; + alias GetKeyNameTextW GetKeyNameText; + alias GetMenuItemInfoW GetMenuItemInfo; + alias GetMenuStringW GetMenuString; + alias GetMessageW GetMessage; + static if (_WIN32_WINNT >= 0x410) { + alias GetMonitorInfoW GetMonitorInfo; + } + alias GetPropW GetProp; + static if (_WIN32_WINNT >= 0x501) { + alias GetRawInputDeviceInfoW GetRawInputDeviceInfo; + } + alias GetTabbedTextExtentW GetTabbedTextExtent; + alias GetUserObjectInformationW GetUserObjectInformation; + alias GetWindowLongW GetWindowLong; + alias GetWindowLongPtrW GetWindowLongPtr; + alias GetWindowTextW GetWindowText; + alias GetWindowTextLengthW GetWindowTextLength; + alias GetAltTabInfoW GetAltTabInfo; + alias GetWindowModuleFileNameW GetWindowModuleFileName; + alias GrayStringW GrayString; + alias InsertMenuW InsertMenu; + alias InsertMenuItemW InsertMenuItem; + alias IsCharAlphaW IsCharAlpha; + alias IsCharAlphaNumericW IsCharAlphaNumeric; + alias IsCharLowerW IsCharLower; + alias IsCharUpperW IsCharUpper; + alias IsDialogMessageW IsDialogMessage; + alias LoadAcceleratorsW LoadAccelerators; + alias LoadBitmapW LoadBitmap; + alias LoadCursorW LoadCursor; + alias LoadCursorFromFileW LoadCursorFromFile; + alias LoadIconW LoadIcon; + alias LoadImageW LoadImage; + alias LoadKeyboardLayoutW LoadKeyboardLayout; + alias LoadMenuW LoadMenu; + alias LoadMenuIndirectW LoadMenuIndirect; + alias LoadStringW LoadString; + alias MapVirtualKeyW MapVirtualKey; + alias MapVirtualKeyExW MapVirtualKeyEx; + alias MessageBoxW MessageBox; + alias MessageBoxExW MessageBoxEx; + alias MessageBoxIndirectW MessageBoxIndirect; + alias ModifyMenuW ModifyMenu; + alias OemToCharW OemToChar; + alias OemToCharBuffW OemToCharBuff; + alias OpenDesktopW OpenDesktop; + alias OpenWindowStationW OpenWindowStation; + alias PeekMessageW PeekMessage; + alias PostMessageW PostMessage; + alias PostThreadMessageW PostThreadMessage; + alias RealGetWindowClassW RealGetWindowClass; + alias RegisterClassW RegisterClass; + alias RegisterClassExW RegisterClassEx; + alias RegisterClipboardFormatW RegisterClipboardFormat; + static if (_WIN32_WINNT >= 0x500) { + alias RegisterDeviceNotificationW RegisterDeviceNotification; + } + alias RegisterWindowMessageW RegisterWindowMessage; + alias RemovePropW RemoveProp; + alias SendDlgItemMessageW SendDlgItemMessage; + alias SendMessageW SendMessage; + alias SendMessageCallbackW SendMessageCallback; + alias SendMessageTimeoutW SendMessageTimeout; + alias SendNotifyMessageW SendNotifyMessage; + alias SetClassLongW SetClassLong; + alias SetDlgItemTextW SetDlgItemText; + alias SetMenuItemInfoW SetMenuItemInfo; + alias SetPropW SetProp; + alias SetUserObjectInformationW SetUserObjectInformation; + alias SetWindowLongW SetWindowLong; + alias SetWindowLongPtrW SetWindowLongPtr; + alias SetWindowsHookW SetWindowsHook; + alias SetWindowsHookExW SetWindowsHookEx; + alias SetWindowTextW SetWindowText; + alias SystemParametersInfoW SystemParametersInfo; + alias TabbedTextOutW TabbedTextOut; + alias TranslateAcceleratorW TranslateAccelerator; + alias UnregisterClassW UnregisterClass; + alias VkKeyScanW VkKeyScan; + alias VkKeyScanExW VkKeyScanEx; + alias WinHelpW WinHelp; + alias wsprintfW wsprintf; + alias wvsprintfW wvsprintf; + + alias ChangeDisplaySettingsW ChangeDisplaySettings; + alias ChangeDisplaySettingsExW ChangeDisplaySettingsEx; + alias CreateDesktopW CreateDesktop; + alias EnumDisplaySettingsW EnumDisplaySettings; + static if (_WIN32_WINNT >= 0x500) { + alias EnumDisplaySettingsExW EnumDisplaySettingsEx; + } + alias EnumDisplayDevicesW EnumDisplayDevices; + +} else { // ANSI + + alias EDITWORDBREAKPROCA EDITWORDBREAKPROC; + alias PROPENUMPROCA PROPENUMPROC; + alias PROPENUMPROCEXA PROPENUMPROCEX; + alias DESKTOPENUMPROCA DESKTOPENUMPROC; + alias WINSTAENUMPROCA WINSTAENUMPROC; + alias MAKEINTRESOURCEA MAKEINTRESOURCE; + + alias WNDCLASSA WNDCLASS; + alias WNDCLASSEXA WNDCLASSEX; + alias MENUITEMINFOA MENUITEMINFO; + alias LPCMENUITEMINFOA LPCMENUITEMINFO; + alias MSGBOXPARAMSA MSGBOXPARAMS; + alias HIGHCONTRASTA HIGHCONTRAST; + alias SERIALKEYSA SERIALKEYS; + alias SOUNDSENTRYA SOUNDSENTRY; + alias CREATESTRUCTA CREATESTRUCT; + alias CBT_CREATEWNDA CBT_CREATEWND; + alias MDICREATESTRUCTA MDICREATESTRUCT; + alias MULTIKEYHELPA MULTIKEYHELP; + alias MONITORINFOEXA MONITORINFOEX; + alias ICONMETRICSA ICONMETRICS; + alias NONCLIENTMETRICSA NONCLIENTMETRICS; + + alias AppendMenuA AppendMenu; + alias BroadcastSystemMessageA BroadcastSystemMessage; + static if (_WIN32_WINNT >= 0x501) { + alias BroadcastSystemMessageExA BroadcastSystemMessageEx; + } + alias CallMsgFilterA CallMsgFilter; + alias CallWindowProcA CallWindowProc; + alias ChangeMenuA ChangeMenu; + alias CharLowerA CharLower; + alias CharLowerBuffA CharLowerBuff; + alias CharNextA CharNext; + alias CharNextExA CharNextEx; + alias CharPrevA CharPrev; + alias CharPrevExA CharPrevEx; + alias CharToOemA CharToOem; + alias CharToOemBuffA CharToOemBuff; + alias CharUpperA CharUpper; + alias CharUpperBuffA CharUpperBuff; + alias CopyAcceleratorTableA CopyAcceleratorTable; + alias CreateAcceleratorTableA CreateAcceleratorTable; + alias CreateDialogA CreateDialog; + alias CreateDialogIndirectA CreateDialogIndirect; + alias CreateDialogIndirectParamA CreateDialogIndirectParam; + alias CreateDialogParamA CreateDialogParam; + alias CreateMDIWindowA CreateMDIWindow; + alias CreateWindowA CreateWindow; + alias CreateWindowExA CreateWindowEx; + alias CreateWindowStationA CreateWindowStation; + alias DefDlgProcA DefDlgProc; + alias DefFrameProcA DefFrameProc; + alias DefMDIChildProcA DefMDIChildProc; + alias DefWindowProcA DefWindowProc; + alias DialogBoxA DialogBox; + alias DialogBoxIndirectA DialogBoxIndirect; + alias DialogBoxIndirectParamA DialogBoxIndirectParam; + alias DialogBoxParamA DialogBoxParam; + alias DispatchMessageA DispatchMessage; + alias DlgDirListA DlgDirList; + alias DlgDirListComboBoxA DlgDirListComboBox; + alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx; + alias DlgDirSelectExA DlgDirSelectEx; + alias DrawStateA DrawState; + alias DrawTextA DrawText; + alias DrawTextExA DrawTextEx; + alias EnumDesktopsA EnumDesktops; + alias EnumPropsA EnumProps; + alias EnumPropsExA EnumPropsEx; + alias EnumWindowStationsA EnumWindowStations; + alias FindWindowA FindWindow; + alias FindWindowExA FindWindowEx; + alias GetClassInfoA GetClassInfo; + alias GetClassInfoExA GetClassInfoEx; + alias GetClassLongA GetClassLong; + alias GetClassNameA GetClassName; + alias GetClipboardFormatNameA GetClipboardFormatName; + alias GetDlgItemTextA GetDlgItemText; + alias GetKeyboardLayoutNameA GetKeyboardLayoutName; + alias GetKeyNameTextA GetKeyNameText; + alias GetMenuItemInfoA GetMenuItemInfo; + alias GetMenuStringA GetMenuString; + alias GetMessageA GetMessage; + static if (_WIN32_WINNT >= 0x410) { + alias GetMonitorInfoA GetMonitorInfo; + } + alias GetPropA GetProp; + static if (_WIN32_WINNT >= 0x501) { + alias GetRawInputDeviceInfoA GetRawInputDeviceInfo; + } + alias GetTabbedTextExtentA GetTabbedTextExtent; + alias GetUserObjectInformationA GetUserObjectInformation; + alias GetWindowLongA GetWindowLong; + alias GetWindowLongPtrA GetWindowLongPtr; + alias GetWindowTextA GetWindowText; + alias GetWindowTextLengthA GetWindowTextLength; + alias GetAltTabInfoA GetAltTabInfo; + alias GetWindowModuleFileNameA GetWindowModuleFileName; + alias GrayStringA GrayString; + alias InsertMenuA InsertMenu; + alias InsertMenuItemA InsertMenuItem; + alias IsCharAlphaA IsCharAlpha; + alias IsCharAlphaNumericA IsCharAlphaNumeric; + alias IsCharLowerA IsCharLower; + alias IsCharUpperA IsCharUpper; + alias IsDialogMessageA IsDialogMessage; + alias LoadAcceleratorsA LoadAccelerators; + alias LoadBitmapA LoadBitmap; + alias LoadCursorA LoadCursor; + alias LoadIconA LoadIcon; + alias LoadCursorFromFileA LoadCursorFromFile; + alias LoadImageA LoadImage; + alias LoadKeyboardLayoutA LoadKeyboardLayout; + alias LoadMenuA LoadMenu; + alias LoadMenuIndirectA LoadMenuIndirect; + alias LoadStringA LoadString; + alias MapVirtualKeyA MapVirtualKey; + alias MapVirtualKeyExA MapVirtualKeyEx; + alias MessageBoxA MessageBox; + alias MessageBoxExA MessageBoxEx; + alias MessageBoxIndirectA MessageBoxIndirect; + alias ModifyMenuA ModifyMenu; + alias OemToCharA OemToChar; + alias OemToCharBuffA OemToCharBuff; + alias OpenDesktopA OpenDesktop; + alias OpenWindowStationA OpenWindowStation; + alias PeekMessageA PeekMessage; + alias PostMessageA PostMessage; + alias PostThreadMessageA PostThreadMessage; + alias RealGetWindowClassA RealGetWindowClass; + alias RegisterClassA RegisterClass; + alias RegisterClassExA RegisterClassEx; + alias RegisterClipboardFormatA RegisterClipboardFormat; + static if (_WIN32_WINNT >= 0x500) { + alias RegisterDeviceNotificationA RegisterDeviceNotification; + } + alias RegisterWindowMessageA RegisterWindowMessage; + alias RemovePropA RemoveProp; + alias SendDlgItemMessageA SendDlgItemMessage; + alias SendMessageA SendMessage; + alias SendMessageCallbackA SendMessageCallback; + alias SendMessageTimeoutA SendMessageTimeout; + alias SendNotifyMessageA SendNotifyMessage; + alias SetClassLongA SetClassLong; + alias SetDlgItemTextA SetDlgItemText; + alias SetMenuItemInfoA SetMenuItemInfo; + alias SetPropA SetProp; + alias SetUserObjectInformationA SetUserObjectInformation; + alias SetWindowLongA SetWindowLong; + alias SetWindowLongPtrA SetWindowLongPtr; + alias SetWindowsHookA SetWindowsHook; + alias SetWindowsHookExA SetWindowsHookEx; + alias SetWindowTextA SetWindowText; + alias SystemParametersInfoA SystemParametersInfo; + alias TabbedTextOutA TabbedTextOut; + alias TranslateAcceleratorA TranslateAccelerator; + alias UnregisterClassA UnregisterClass; + alias VkKeyScanA VkKeyScan; + alias VkKeyScanExA VkKeyScanEx; + alias WinHelpA WinHelp; + alias wsprintfA wsprintf; + alias wvsprintfA wvsprintf; + + alias ChangeDisplaySettingsA ChangeDisplaySettings; + alias ChangeDisplaySettingsExA ChangeDisplaySettingsEx; + alias CreateDesktopA CreateDesktop; + alias EnumDisplaySettingsA EnumDisplaySettings; + static if (_WIN32_WINNT >= 0x500) { + alias EnumDisplaySettingsExA EnumDisplaySettingsEx; + } + alias EnumDisplayDevicesA EnumDisplayDevices; +} + +alias WNDCLASS* LPWNDCLASS, PWNDCLASS; +alias WNDCLASSEX* LPWNDCLASSEX, PWNDCLASSEX; +alias MENUITEMINFO* LPMENUITEMINFO; +alias MSGBOXPARAMS* PMSGBOXPARAMS, LPMSGBOXPARAMS; +alias HIGHCONTRAST* LPHIGHCONTRAST; +alias SERIALKEYS* LPSERIALKEYS; +alias SOUNDSENTRY* LPSOUNDSENTRY; +alias CREATESTRUCT* LPCREATESTRUCT; +alias CBT_CREATEWND* LPCBT_CREATEWND; +alias MDICREATESTRUCT* LPMDICREATESTRUCT; +alias MULTIKEYHELP* PMULTIKEYHELP, LPMULTIKEYHELP; +alias MONITORINFOEX* LPMONITORINFOEX; +alias ICONMETRICS* LPICONMETRICS; +alias NONCLIENTMETRICS* LPNONCLIENTMETRICS; diff --git a/src/core/sys/windows/winver.d b/src/core/sys/windows/winver.d new file mode 100644 index 0000000000..d27e1c3a17 --- /dev/null +++ b/src/core/sys/windows/winver.d @@ -0,0 +1,172 @@ +/***********************************************************************\ +* winver.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winver; +pragma(lib, "version"); + +private import win32.windef; + +// FIXME: type weirdness +enum { + VS_FILE_INFO = 16, + VS_VERSION_INFO = 1, + VS_USER_DEFINED = 100 +} + +enum { + VS_FFI_SIGNATURE = 0xFEEF04BD, + VS_FFI_STRUCVERSION = 0x10000, + VS_FFI_FILEFLAGSMASK = 0x3F +} + +enum { + VS_FF_DEBUG = 1, + VS_FF_PRERELEASE = 2, + VS_FF_PATCHED = 4, + VS_FF_PRIVATEBUILD = 8, + VS_FF_INFOINFERRED = 16, + VS_FF_SPECIALBUILD = 32 +} + +enum { + VOS_UNKNOWN = 0, + VOS_DOS = 0x10000, + VOS_OS216 = 0x20000, + VOS_OS232 = 0x30000, + VOS_NT = 0x40000, + VOS__BASE = 0, + VOS__WINDOWS16 = 1, + VOS__PM16 = 2, + VOS__PM32 = 3, + VOS__WINDOWS32 = 4, + VOS_DOS_WINDOWS16 = 0x10001, + VOS_DOS_WINDOWS32 = 0x10004, + VOS_OS216_PM16 = 0x20002, + VOS_OS232_PM32 = 0x30003, + VOS_NT_WINDOWS32 = 0x40004 +} + +enum { + VFT_UNKNOWN = 0, + VFT_APP = 1, + VFT_DLL = 2, + VFT_DRV = 3, + VFT_FONT = 4, + VFT_VXD = 5, + VFT_STATIC_LIB = 7 +} + +enum { + VFT2_UNKNOWN = 0, + VFT2_DRV_PRINTER = 1, + VFT2_DRV_KEYBOARD = 2, + VFT2_DRV_LANGUAGE = 3, + VFT2_DRV_DISPLAY = 4, + VFT2_DRV_MOUSE = 5, + VFT2_DRV_NETWORK = 6, + VFT2_DRV_SYSTEM = 7, + VFT2_DRV_INSTALLABLE = 8, + VFT2_DRV_SOUND = 9, + VFT2_DRV_COMM = 10, + VFT2_DRV_INPUTMETHOD = 11, + VFT2_FONT_RASTER = 1, + VFT2_FONT_VECTOR = 2, + VFT2_FONT_TRUETYPE = 3 +} + +enum : DWORD { + VFFF_ISSHAREDFILE = 1 +} + +enum : DWORD { + VFF_CURNEDEST = 1, + VFF_FILEINUSE = 2, + VFF_BUFFTOOSMALL = 4 +} + +enum : DWORD { + VIFF_FORCEINSTALL = 1, + VIFF_DONTDELETEOLD +} + +enum { + VIF_TEMPFILE = 0x00001, + VIF_MISMATCH = 0x00002, + VIF_SRCOLD = 0x00004, + VIF_DIFFLANG = 0x00008, + VIF_DIFFCODEPG = 0x00010, + VIF_DIFFTYPE = 0x00020, + VIF_WRITEPROT = 0x00040, + VIF_FILEINUSE = 0x00080, + VIF_OUTOFSPACE = 0x00100, + VIF_ACCESSVIOLATION = 0x00200, + VIF_SHARINGVIOLATION = 0x00400, + VIF_CANNOTCREATE = 0x00800, + VIF_CANNOTDELETE = 0x01000, + VIF_CANNOTRENAME = 0x02000, + VIF_CANNOTDELETECUR = 0x04000, + VIF_OUTOFMEMORY = 0x08000, + VIF_CANNOTREADSRC = 0x10000, + VIF_CANNOTREADDST = 0x20000, + VIF_BUFFTOOSMALL = 0x40000 +} + +struct VS_FIXEDFILEINFO { + DWORD dwSignature; + DWORD dwStrucVersion; + DWORD dwFileVersionMS; + DWORD dwFileVersionLS; + DWORD dwProductVersionMS; + DWORD dwProductVersionLS; + DWORD dwFileFlagsMask; + DWORD dwFileFlags; + DWORD dwFileOS; + DWORD dwFileType; + DWORD dwFileSubtype; + DWORD dwFileDateMS; + DWORD dwFileDateLS; +} + +extern (Windows) { + DWORD VerFindFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, + PUINT); + DWORD VerFindFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, + PUINT); + DWORD VerInstallFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, + PUINT); + DWORD VerInstallFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, + LPWSTR, PUINT); + DWORD GetFileVersionInfoSizeA(LPCSTR, PDWORD); + DWORD GetFileVersionInfoSizeW(LPCWSTR, PDWORD); + BOOL GetFileVersionInfoA(LPCSTR, DWORD, DWORD, PVOID); + BOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, PVOID); + DWORD VerLanguageNameA(DWORD, LPSTR, DWORD); + DWORD VerLanguageNameW(DWORD, LPWSTR, DWORD); + BOOL VerQueryValueA(LPCVOID, LPCSTR, LPVOID*, PUINT); + BOOL VerQueryValueW(LPCVOID, LPCWSTR, LPVOID*, PUINT); +} + +version (Unicode) { + alias VerFindFileW VerFindFile; + alias VerQueryValueW VerQueryValue; + alias VerInstallFileW VerInstallFile; + alias GetFileVersionInfoSizeW GetFileVersionInfoSize; + alias GetFileVersionInfoW GetFileVersionInfo; + alias VerLanguageNameW VerLanguageName; + alias VerQueryValueW VerQueryValue; +} else { + alias VerQueryValueA VerQueryValue; + alias VerFindFileA VerFindFile; + alias VerInstallFileA VerInstallFile; + alias GetFileVersionInfoSizeA GetFileVersionInfoSize; + alias GetFileVersionInfoA GetFileVersionInfo; + alias VerLanguageNameA VerLanguageName; + alias VerQueryValueA VerQueryValue; +} diff --git a/src/core/sys/windows/ws2tcpip.d b/src/core/sys/windows/ws2tcpip.d new file mode 100644 index 0000000000..f82243861c --- /dev/null +++ b/src/core/sys/windows/ws2tcpip.d @@ -0,0 +1,281 @@ +/***********************************************************************\ +* ws2tcpip.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ + +module win32.ws2tcpip; + +import win32.w32api; +//import win32.winbase; +import win32.windef; +//import win32.basetyps; +import win32.winsock2; + +enum { + IP_OPTIONS = 1, + + IP_HDRINCL = 2, + IP_TOS = 3, + IP_TTL = 4, + IP_MULTICAST_IF = 9, + IP_MULTICAST_TTL = 10, + IP_MULTICAST_LOOP = 11, + IP_ADD_MEMBERSHIP = 12, + IP_DROP_MEMBERSHIP = 13, + IP_DONTFRAGMENT = 14, + IP_ADD_SOURCE_MEMBERSHIP = 15, + IP_DROP_SOURCE_MEMBERSHIP = 16, + IP_BLOCK_SOURCE = 17, + IP_UNBLOCK_SOURCE = 18, + IP_PKTINFO = 19 +} + +enum { + IPV6_UNICAST_HOPS = 4, + IPV6_MULTICAST_IF = 9, + IPV6_MULTICAST_HOPS = 10, + IPV6_MULTICAST_LOOP = 11, + IPV6_ADD_MEMBERSHIP = 12, + IPV6_DROP_MEMBERSHIP = 13, + IPV6_JOIN_GROUP = IPV6_ADD_MEMBERSHIP, + IPV6_LEAVE_GROUP = IPV6_DROP_MEMBERSHIP, + IPV6_PKTINFO = 19 +} + +const IP_DEFAULT_MULTICAST_TTL = 1; +const IP_DEFAULT_MULTICAST_LOOP = 1; +const IP_MAX_MEMBERSHIPS = 20; + +const TCP_EXPEDITED_1122 = 2; + +const UDP_NOCHECKSUM = 1; + +enum { + IFF_UP = 1, + IFF_BROADCAST = 2, + IFF_LOOPBACK = 4, + IFF_POINTTOPOINT = 8, + IFF_MULTICAST = 16 +} + +const SIO_GET_INTERFACE_LIST = _IOR!('t', 127, u_long); + +const INET_ADDRSTRLEN = 16; +const INET6_ADDRSTRLEN = 46; + +const NI_MAXHOST = 1025; +const NI_MAXSERV = 32; + +const NI_NOFQDN = 0x01; +const NI_NUMERICHOST = 0x02; +const NI_NAMEREQD = 0x04; +const NI_NUMERICSERV = 0x08; +const NI_DGRAM = 0x10; + +const AI_PASSIVE = 1; +const AI_CANONNAME = 2; +const AI_NUMERICHOST = 4; + +const EAI_AGAIN = WSATRY_AGAIN; +const EAI_BADFLAGS = WSAEINVAL; +const EAI_FAIL = WSANO_RECOVERY; +const EAI_FAMILY = WSAEAFNOSUPPORT; +const EAI_MEMORY = WSA_NOT_ENOUGH_MEMORY; +const EAI_NODATA = WSANO_DATA; +const EAI_NONAME = WSAHOST_NOT_FOUND; +const EAI_SERVICE = WSATYPE_NOT_FOUND; +const EAI_SOCKTYPE = WSAESOCKTNOSUPPORT; + +struct ip_mreq { + IN_ADDR imr_multiaddr; + IN_ADDR imr_interface; +} + +struct ip_mreq_source { + IN_ADDR imr_multiaddr; + IN_ADDR imr_sourceaddr; + IN_ADDR imr_interface; +} + +struct ip_msfilter { + IN_ADDR imsf_multiaddr; + IN_ADDR imsf_interface; + u_long imsf_fmode; + u_long imsf_numsrc; + IN_ADDR[1] imsf_slist; +} + +template IP_MSFILTER_SIZE(ULONG numsrc) { + const DWORD IP_MSFILTER_SIZE = ip_msfilter.sizeof - IN_ADDR.sizeof + numsrc * IN_ADDR.sizeof; +} + +struct IN_PKTINFO { + IN_ADDR ipi_addr; + UINT ipi_ifindex; +} + +struct IN6_ADDR { + union { + u_char[16] _S6_u8; + u_short[8] _S6_u16; + u_long[4] _S6_u32; + } +} +alias IN6_ADDR* PIN6_ADDR, LPIN6_ADDR; + +struct SOCKADDR_IN6 { + short sin6_family; + u_short sin6_port; + u_long sin6_flowinfo; + IN6_ADDR sin6_addr; + u_long sin6_scope_id; +}; +alias SOCKADDR_IN6* PSOCKADDR_IN6, LPSOCKADDR_IN6; + +extern IN6_ADDR in6addr_any; +extern IN6_ADDR in6addr_loopback; + +/+ TODO: +#define IN6_ARE_ADDR_EQUAL(a, b) \ + (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0) + +#define IN6_IS_ADDR_UNSPECIFIED(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] == 0)) + +#define IN6_IS_ADDR_LOOPBACK(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] == 0x01000000)) + +#define IN6_IS_ADDR_MULTICAST(_addr) (((const u_char *) (_addr))[0] == 0xff) + +#define IN6_IS_ADDR_LINKLOCAL(_addr) \ + ( (((const u_char *)(_addr))[0] == 0xfe) \ + && ((((const u_char *)(_addr))[1] & 0xc0) == 0x80)) + +#define IN6_IS_ADDR_SITELOCAL(_addr) \ + ( (((const u_char *)(_addr))[0] == 0xfe) \ + && ((((const u_char *)(_addr))[1] & 0xc0) == 0xc0)) + +#define IN6_IS_ADDR_V4MAPPED(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0xffff0000)) + +#define IN6_IS_ADDR_V4COMPAT(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] != 0) \ + && (((const u_long *)(_addr))[3] != 0x01000000)) + +#define IN6_IS_ADDR_MC_NODELOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) + +#define IN6_IS_ADDR_MC_LINKLOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST (_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x2)) + +#define IN6_IS_ADDR_MC_SITELOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x5)) + +#define IN6_IS_ADDR_MC_ORGLOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x8)) + +#define IN6_IS_ADDR_MC_GLOBAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0xe)) ++/ + +alias int socklen_t; + +struct IPV6_MREG { + IN6_ADDR ipv6mr_multiaddr; + uint ipv6mr_interface; +} + +struct IN6_PKTINFO { + IN6_ADDR ipi6_addr; + UINT ipi6_ifindex; +} + +struct addrinfo { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + char* ai_canonname; + SOCKADDR* ai_addr; + addrinfo* ai_next; +} + +extern(Windows) { + static if (_WIN32_WINNT >= 0x501) { + void freeaddrinfo(addrinfo*); + int getaddrinfo (const(char)*, const(char)*, const(addrinfo)*, addrinfo**); + int getnameinfo(const(SOCKADDR)*, socklen_t, char*, DWORD, char*, DWORD, int); + } +} + +/+ TODO +static __inline char* +gai_strerrorA(int ecode) +{ + static char[1024+1] message; + DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS + | FORMAT_MESSAGE_MAX_WIDTH_MASK; + DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); + FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL); + return message; +} +static __inline WCHAR* +gai_strerrorW(int ecode) +{ + static WCHAR[1024+1] message; + DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS + | FORMAT_MESSAGE_MAX_WIDTH_MASK; + DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); + FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL); + return message; +} +#ifdef UNICODE +#define gai_strerror gai_strerrorW +#else +#define gai_strerror gai_strerrorA +#endif ++/ + +extern(Windows) { + INT getnameinfo(SOCKADDR* pSockaddr, socklen_t SockaddrLength, + PCHAR pNodeBuffer, DWORD NodeBufferSize, PCHAR pServiceBuffer, + DWORD ServiceBufferSize, INT Flags); + + static if (_WIN32_WINNT >= 0x502) { + INT GetNameInfoW(SOCKADDR* pSockaddr, socklen_t SockaddrLength, + PWCHAR pNodeBuffer, DWORD NodeBufferSize, PWCHAR pServiceBuffer, + DWORD ServiceBufferSize, INT Flags); + + alias getnameinfo GetNameInfoA; + + version(Unicode) { + alias GetNameInfoW GetNameInfo; + } else { + alias GetNameInfoA GetNameInfo; + } + } +} diff --git a/src/core/sys/windows/wtsapi32.d b/src/core/sys/windows/wtsapi32.d new file mode 100644 index 0000000000..b89d0d9c6c --- /dev/null +++ b/src/core/sys/windows/wtsapi32.d @@ -0,0 +1,429 @@ +/***********************************************************************\ +* wtsapi32.d * +* * +* Windows API header module * +* * +* Translated from MinGW-w64 API * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wtsapi32; +pragma(lib, "wtsapi32"); +private import win32.w32api; +import win32.windef; + +enum { + WTS_CURRENT_SERVER = null, + WTS_CURRENT_SERVER_HANDLE = null, + WTS_CURRENT_SERVER_NAME = null +} + +enum DWORD WTS_CURRENT_SESSION = cast(DWORD) -1; + +enum { + IDTIMEOUT = 32000, + IDASYNC = 32001 +} + +enum { + WTS_WSD_LOGOFF = 0x01, + WTS_WSD_SHUTDOWN = 0x02, + WTS_WSD_REBOOT = 0x04, + WTS_WSD_POWEROFF = 0x08, + WTS_WSD_FASTREBOOT = 0x10 +} + +enum WTS_CONNECTSTATE_CLASS { + WTSActive, + WTSConnected, + WTSConnectQuery, + WTSShadow, + WTSDisconnected, + WTSIdle, + WTSListen, + WTSReset, + WTSDown, + WTSInit +} + +struct WTS_SERVER_INFOW { + LPWSTR pServerName; +} +alias WTS_SERVER_INFOW* PWTS_SERVER_INFOW; + +struct WTS_SERVER_INFOA { + LPSTR pServerName; +} +alias WTS_SERVER_INFOA* PWTS_SERVER_INFOA; + +version(Unicode) { + alias WTS_SERVER_INFOW WTS_SERVER_INFO; + alias PWTS_SERVER_INFOW PWTS_SERVER_INFO; +} else { + alias WTS_SERVER_INFOA WTS_SERVER_INFO; + alias PWTS_SERVER_INFOA PWTS_SERVER_INFO; +} + +struct WTS_SESSION_INFOW { + DWORD SessionId; + LPWSTR pWinStationName; + WTS_CONNECTSTATE_CLASS State; +} +alias WTS_SESSION_INFOW* PWTS_SESSION_INFOW; + +struct WTS_SESSION_INFOA { + DWORD SessionId; + LPSTR pWinStationName; + WTS_CONNECTSTATE_CLASS State; +} +alias WTS_SESSION_INFOA* PWTS_SESSION_INFOA; + +version(Unicode) { + alias WTS_SESSION_INFOW WTS_SESSION_INFO; + alias PWTS_SESSION_INFOW PWTS_SESSION_INFO; +} else { + alias WTS_SESSION_INFOA WTS_SESSION_INFO; + alias PWTS_SESSION_INFOA PWTS_SESSION_INFO; +} + +struct WTS_PROCESS_INFOW { + DWORD SessionId; + DWORD ProcessId; + LPWSTR pProcessName; + PSID pUserSid; +} +alias WTS_PROCESS_INFOW* PWTS_PROCESS_INFOW; + +struct WTS_PROCESS_INFOA { + DWORD SessionId; + DWORD ProcessId; + LPSTR pProcessName; + PSID pUserSid; +} +alias WTS_PROCESS_INFOA* PWTS_PROCESS_INFOA; + +version(Unicode) { + alias WTS_PROCESS_INFOW WTS_PROCESS_INFO; + alias PWTS_PROCESS_INFOW PWTS_PROCESS_INFO; +} else { + alias WTS_PROCESS_INFOA WTS_PROCESS_INFO; + alias PWTS_PROCESS_INFOA PWTS_PROCESS_INFO; +} + +enum { + WTS_PROTOCOL_TYPE_CONSOLE, + WTS_PROTOCOL_TYPE_ICA, + WTS_PROTOCOL_TYPE_RDP +} + +enum WTS_INFO_CLASS { + WTSInitialProgram, + WTSApplicationName, + WTSWorkingDirectory, + WTSOEMId, + WTSSessionId, + WTSUserName, + WTSWinStationName, + WTSDomainName, + WTSConnectState, + WTSClientBuildNumber, + WTSClientName, + WTSClientDirectory, + WTSClientProductId, + WTSClientHardwareId, + WTSClientAddress, + WTSClientDisplay, + WTSClientProtocolType, + WTSIdleTime, + WTSLogonTime, + WTSIncomingBytes, + WTSOutgoingBytes, + WTSIncomingFrames, + WTSOutgoingFrames, + WTSClientInfo, + WTSSessionInfo, // = 24 +} + +struct WTS_CLIENT_ADDRESS { + DWORD AddressFamily; + BYTE[20] Address; +} +alias WTS_CLIENT_ADDRESS* PWTS_CLIENT_ADDRESS; + +struct WTS_CLIENT_DISPLAY { + DWORD HorizontalResolution; + DWORD VerticalResolution; + DWORD ColorDepth; +} +alias WTS_CLIENT_DISPLAY* PWTS_CLIENT_DISPLAY; + +enum WTS_CONFIG_CLASS { + WTSUserConfigInitialProgram, + WTSUserConfigWorkingDirectory, + WTSUserConfigfInheritInitialProgram, + WTSUserConfigfAllowLogonTerminalServer, + WTSUserConfigTimeoutSettingsConnections, + WTSUserConfigTimeoutSettingsDisconnections, + WTSUserConfigTimeoutSettingsIdle, + WTSUserConfigfDeviceClientDrives, + WTSUserConfigfDeviceClientPrinters, + WTSUserConfigfDeviceClientDefaultPrinter, + WTSUserConfigBrokenTimeoutSettings, + WTSUserConfigReconnectSettings, + WTSUserConfigModemCallbackSettings, + WTSUserConfigModemCallbackPhoneNumber, + WTSUserConfigShadowingSettings, + WTSUserConfigTerminalServerProfilePath, + WTSUserConfigTerminalServerHomeDir, + WTSUserConfigTerminalServerHomeDirDrive, + WTSUserConfigfTerminalServerRemoteHomeDir +} + +enum { + WTS_EVENT_NONE = 0x0, + WTS_EVENT_CREATE = 0x1, + WTS_EVENT_DELETE = 0x2, + WTS_EVENT_RENAME = 0x4, + WTS_EVENT_CONNECT = 0x8, + WTS_EVENT_DISCONNECT = 0x10, + WTS_EVENT_LOGON = 0x20, + WTS_EVENT_LOGOFF = 0x40, + WTS_EVENT_STATECHANGE = 0x80, + WTS_EVENT_LICENSE = 0x100, + WTS_EVENT_ALL = 0x7fffffff, + WTS_EVENT_FLUSH = 0x80000000 +} + +enum WTS_VIRTUAL_CLASS { + WTSVirtualClientData, + WTSVirtualFileHandle +} + +version(Unicode) { + alias WTSEnumerateServersW WTSEnumerateServers; + alias WTSOpenServerW WTSOpenServer; + alias WTSEnumerateSessionsW WTSEnumerateSessions; + alias WTSEnumerateProcessesW WTSEnumerateProcesses; + alias WTSQuerySessionInformationW WTSQuerySessionInformation; + alias WTSQueryUserConfigW WTSQueryUserConfig; + alias WTSSetUserConfigW WTSSetUserConfig; + alias WTSSendMessageW WTSSendMessage; +} else { + alias WTSEnumerateServersA WTSEnumerateServers; + alias WTSOpenServerA WTSOpenServer; + alias WTSEnumerateSessionsA WTSEnumerateSessions; + alias WTSEnumerateProcessesA WTSEnumerateProcesses; + alias WTSQuerySessionInformationA WTSQuerySessionInformation; + alias WTSQueryUserConfigA WTSQueryUserConfig; + alias WTSSetUserConfigA WTSSetUserConfig; + alias WTSSendMessageA WTSSendMessage; +} + +extern(Windows) { + WINBOOL WTSEnumerateServersW(LPWSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOW* ppServerInfo, DWORD* pCount); + WINBOOL WTSEnumerateServersA(LPSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOA* ppServerInfo, DWORD* pCount); + HANDLE WTSOpenServerW(LPWSTR pServerName); + HANDLE WTSOpenServerA(LPSTR pServerName); + VOID WTSCloseServer(HANDLE hServer); + WINBOOL WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOW* ppSessionInfo, DWORD* pCount); + WINBOOL WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOA* ppSessionInfo, DWORD* pCount); + WINBOOL WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount); + WINBOOL WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOA* ppProcessInfo, DWORD* pCount); + WINBOOL WTSTerminateProcess(HANDLE hServer, DWORD ProcessId, DWORD ExitCode); + WINBOOL WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQueryUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQueryUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSSetUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR pBuffer, DWORD DataLength); + WINBOOL WTSSetUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR pBuffer, DWORD DataLength); + WINBOOL WTSSendMessageW(HANDLE hServer, DWORD SessionId, LPWSTR pTitle, DWORD TitleLength, LPWSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); + WINBOOL WTSSendMessageA(HANDLE hServer, DWORD SessionId, LPSTR pTitle, DWORD TitleLength, LPSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); + WINBOOL WTSDisconnectSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); + WINBOOL WTSLogoffSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); + WINBOOL WTSShutdownSystem(HANDLE hServer, DWORD ShutdownFlag); + WINBOOL WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags); + HANDLE WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId, LPSTR pVirtualName); + WINBOOL WTSVirtualChannelClose(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut, PCHAR Buffer, ULONG BufferSize, PULONG pBytesRead); + WINBOOL WTSVirtualChannelWrite(HANDLE hChannelHandle, PCHAR Buffer, ULONG Length, PULONG pBytesWritten); + WINBOOL WTSVirtualChannelPurgeInput(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelQuery(HANDLE hChannelHandle, WTS_VIRTUAL_CLASS, PVOID* ppBuffer, DWORD* pBytesReturned); + VOID WTSFreeMemory(PVOID pMemory); + + WINBOOL WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags); + WINBOOL WTSUnRegisterSessionNotification(HWND hWnd); + WINBOOL WTSQueryUserToken(ULONG SessionId, PHANDLE phToken); +} + +enum { + NOTIFY_FOR_ALL_SESSIONS = 1, + NOTIFY_FOR_THIS_SESSION = 0 +} + +enum { + USERNAME_LENGTH = 20, + CLIENTNAME_LENGTH = 20, + CLIENTADDRESS_LENGTH = 30, + WINSTATIONNAME_LENGTH = 32, + DOMAIN_LENGTH = 17 +} + +static if (_WIN32_WINNT >= 0x600) { + struct WTSCLIENTW { + WCHAR ClientName[CLIENTNAME_LENGTH + 1]; + WCHAR Domain[DOMAIN_LENGTH + 1]; + WCHAR UserName[USERNAME_LENGTH + 1]; + WCHAR WorkDirectory[MAX_PATH + 1]; + WCHAR InitialProgram[MAX_PATH + 1]; + BYTE EncryptionLevel; + ULONG ClientAddressFamily; + USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; + USHORT HRes; + USHORT VRes; + USHORT ColorDepth; + WCHAR ClientDirectory[MAX_PATH + 1]; + ULONG ClientBuildNumber; + ULONG ClientHardwareId; + USHORT ClientProductId; + USHORT OutBufCountHost; + USHORT OutBufCountClient; + USHORT OutBufLength; + WCHAR DeviceId[MAX_PATH + 1]; + } + alias WTSCLIENTW* PWTSCLIENTW; + + struct WTSCLIENTA { + CHAR ClientName[CLIENTNAME_LENGTH + 1]; + CHAR Domain[DOMAIN_LENGTH + 1 ]; + CHAR UserName[USERNAME_LENGTH + 1]; + CHAR WorkDirectory[MAX_PATH + 1]; + CHAR InitialProgram[MAX_PATH + 1]; + BYTE EncryptionLevel; + ULONG ClientAddressFamily; + USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; + USHORT HRes; + USHORT VRes; + USHORT ColorDepth; + CHAR ClientDirectory[MAX_PATH + 1]; + ULONG ClientBuildNumber; + ULONG ClientHardwareId; + USHORT ClientProductId; + USHORT OutBufCountHost; + USHORT OutBufCountClient; + USHORT OutBufLength; + CHAR DeviceId[MAX_PATH + 1]; + } + alias WTSCLIENTA* PWTSCLIENTA; + + version(Unicode) { + alias WTSCLIENTW WTSCLIENT; + alias PWTSCLIENTW PWTSCLIENT; + } else { + alias WTSCLIENTA WTSCLIENT; + alias PWTSCLIENTA PWTSCLIENT; + } + + struct WTSINFOW { + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBytes; + WCHAR WinStationName[WINSTATIONNAME_LENGTH]; + WCHAR Domain[DOMAIN_LENGTH]; + WCHAR UserName[USERNAME_LENGTH+1]; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; + } + alias WTSINFOW* PWTSINFOW; + + struct WTSINFOA { + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBytes; + CHAR WinStationName[WINSTATIONNAME_LENGTH]; + CHAR Domain[DOMAIN_LENGTH]; + CHAR UserName[USERNAME_LENGTH+1]; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; + } + alias WTSINFOA* PWTSINFOA; + + version(Unicode) { + alias WTSINFOW WTSINFO; + alias PWTSINFOW PWTSINFO; + } else { + alias WTSINFOA WTSINFO; + alias PWTSINFOA PWTSINFO; + } + + extern(Windows) { + WINBOOL WTSConnectSessionA( + ULONG LogonId, + ULONG TargetLogonId, + PSTR pPassword, + WINBOOL bWait + ); + + WINBOOL WTSConnectSessionW( + ULONG LogonId, + ULONG TargetLogonId, + PWSTR pPassword, + WINBOOL bWait + ); + + WINBOOL WTSRegisterSessionNotificationEx( + HANDLE hServer, + HWND hWnd, + DWORD dwFlags + ); + + WINBOOL WTSStartRemoteControlSessionA( + LPSTR pTargetServerName, + ULONG TargetLogonId, + BYTE HotkeyVk, + USHORT HotkeyModifiers + ); + + WINBOOL WTSStartRemoteControlSessionW( + LPWSTR pTargetServerName, + ULONG TargetLogonId, + BYTE HotkeyVk, + USHORT HotkeyModifiers + ); + + version(Unicode) { + alias WTSStartRemoteControlSessionW WTSStartRemoteControlSession; + alias WTSConnectSessionW WTSConnectSession; + } else { + alias WTSStartRemoteControlSessionA WTSStartRemoteControlSession; + alias WTSConnectSessionA WTSConnectSession; + } + + WINBOOL WTSStopRemoteControlSession( + ULONG LogonId + ); + + WINBOOL WTSUnRegisterSessionNotificationEx( + HANDLE hServer, + HWND hWnd + ); + + HANDLE WTSVirtualChannelOpenEx( + DWORD SessionId, + LPSTR pVirtualName, + DWORD flags + ); + } /* extern(Windows) */ +} /* static if (_WIN32_WINNT >= 0x600) */ diff --git a/src/core/sys/windows/wtypes.d b/src/core/sys/windows/wtypes.d new file mode 100644 index 0000000000..4ae7dd7cdc --- /dev/null +++ b/src/core/sys/windows/wtypes.d @@ -0,0 +1,232 @@ +/***********************************************************************\ +* wtypes.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wtypes; + +import win32.rpc, win32.rpcndr; +private import win32.windef; +private import win32.uuid; // for GUID_NULL + +alias GUID_NULL IID_NULL, CLSID_NULL; + +const ROTFLAGS_REGISTRATIONKEEPSALIVE = 0x01; +const ROTFLAGS_ALLOWANYCLIENT = 0x02; + +// also in winsock2.h +struct BLOB { + ULONG cbSize; + BYTE* pBlobData; +} +alias BLOB* PBLOB, LPBLOB; + +enum DVASPECT { + DVASPECT_CONTENT = 1, + DVASPECT_THUMBNAIL = 2, + DVASPECT_ICON = 4, + DVASPECT_DOCPRINT = 8 +} + +enum DVASPECT2 { + DVASPECT_OPAQUE = 16, + DVASPECT_TRANSPARENT = 32 +} + +enum STATFLAG { + STATFLAG_DEFAULT = 0, + STATFLAG_NONAME = 1 +} + +enum MEMCTX { + MEMCTX_LOCAL = 0, + MEMCTX_TASK, + MEMCTX_SHARED, + MEMCTX_MACSYSTEM, + MEMCTX_UNKNOWN = -1, + MEMCTX_SAME = -2 +} + +enum MSHCTX { + MSHCTX_LOCAL = 0, + MSHCTX_NOSHAREDMEM, + MSHCTX_DIFFERENTMACHINE, + MSHCTX_INPROC, + MSHCTX_CROSSCTX +} + +enum CLSCTX { + CLSCTX_INPROC_SERVER = 1, + CLSCTX_INPROC_HANDLER = 2, + CLSCTX_LOCAL_SERVER = 4, + CLSCTX_INPROC_SERVER16 = 8, + CLSCTX_REMOTE_SERVER = 16 +} + +enum MSHLFLAGS { + MSHLFLAGS_NORMAL, + MSHLFLAGS_TABLESTRONG, + MSHLFLAGS_TABLEWEAK +} + +struct FLAGGED_WORD_BLOB { + uint fFlags; + uint clSize; + ushort[1] asData; +} + +alias WCHAR OLECHAR; +alias LPWSTR LPOLESTR; +alias LPCWSTR LPCOLESTR; + +alias ushort VARTYPE; +alias short VARIANT_BOOL; +alias VARIANT_BOOL _VARIANT_BOOL; +const VARIANT_BOOL VARIANT_TRUE = -1; // 0xffff; +const VARIANT_BOOL VARIANT_FALSE = 0; + +alias OLECHAR* BSTR; +alias FLAGGED_WORD_BLOB* wireBSTR; +alias BSTR* LPBSTR; +//alias LONG SCODE; // also in winerror +mixin DECLARE_HANDLE!("HCONTEXT"); +mixin DECLARE_HANDLE!("HMETAFILEPICT"); + +union CY { + struct { + uint Lo; + int Hi; + } + LONGLONG int64; +} + +alias double DATE; +struct BSTRBLOB { + ULONG cbSize; + PBYTE pData; +} +alias BSTRBLOB* LPBSTRBLOB; + +// Used only in the PROPVARIANT structure +// According to the 2003 SDK, this should be in propidl.h, not here. +struct CLIPDATA { + ULONG cbSize; + int ulClipFmt; + PBYTE pClipData; +} + +enum STGC { + STGC_DEFAULT, + STGC_OVERWRITE, + STGC_ONLYIFCURRENT, + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE +} + +enum STGMOVE { + STGMOVE_MOVE, + STGMOVE_COPY, + STGMOVE_SHALLOWCOPY +} + +enum VARENUM { + VT_EMPTY, + VT_NULL, + VT_I2, + VT_I4, + VT_R4, + VT_R8, + VT_CY, + VT_DATE, + VT_BSTR, + VT_DISPATCH, + VT_ERROR, + VT_BOOL, + VT_VARIANT, + VT_UNKNOWN, + VT_DECIMAL, + VT_I1 = 16, + VT_UI1, + VT_UI2, + VT_UI4, + VT_I8, + VT_UI8, + VT_INT, + VT_UINT, + VT_VOID, + VT_HRESULT, + VT_PTR, + VT_SAFEARRAY, + VT_CARRAY, + VT_USERDEFINED, + VT_LPSTR, + VT_LPWSTR, + VT_RECORD = 36, + VT_INT_PTR = 37, + VT_UINT_PTR = 38, + VT_FILETIME = 64, + VT_BLOB, + VT_STREAM, + VT_STORAGE, + VT_STREAMED_OBJECT, + VT_STORED_OBJECT, + VT_BLOB_OBJECT, + VT_CF, + VT_CLSID, + VT_BSTR_BLOB = 0xfff, + VT_VECTOR = 0x1000, + VT_ARRAY = 0x2000, + VT_BYREF = 0x4000, + VT_RESERVED = 0x8000, + VT_ILLEGAL = 0xffff, + VT_ILLEGALMASKED = 0xfff, + VT_TYPEMASK = 0xfff +}; + +struct BYTE_SIZEDARR { + uint clSize; + byte* pData; +} + +struct WORD_SIZEDARR { + uint clSize; + ushort* pData; +} + +struct DWORD_SIZEDARR { +uint clSize; +uint* pData; +} + +struct HYPER_SIZEDARR { + uint clSize; + hyper* pData; +} + +alias double DOUBLE; + + +struct DECIMAL { + USHORT wReserved; + union { + struct { + ubyte scale; // valid values are 0 to 28 + ubyte sign; // 0 for positive, DECIMAL_NEG for negatives. + enum ubyte DECIMAL_NEG = 0x80; + } + USHORT signscale; + } + ULONG Hi32; + union { + struct { + ULONG Lo32; + ULONG Mid32; + } + ULONGLONG Lo64; + } + // #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;} + void setZero() { Lo64 = 0; Hi32 = 0; signscale = 0; } +} From 3a298f5fd96576bcb732bce64182456c00f3628b Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 19:50:27 +0000 Subject: [PATCH 107/768] Import https://github.com/CS-svnmirror/dsource-bindings/commit/57332fb6670860783aba67ca4916f46984278ce9 --- src/core/sys/windows/w32api.d | 20 +- src/core/sys/windows/winhttp.d | 844 +++++++++++++++++++++++++++++++++ 2 files changed, 859 insertions(+), 5 deletions(-) create mode 100644 src/core/sys/windows/winhttp.d diff --git a/src/core/sys/windows/w32api.d b/src/core/sys/windows/w32api.d index 914b568edc..93e630bc59 100644 --- a/src/core/sys/windows/w32api.d +++ b/src/core/sys/windows/w32api.d @@ -21,11 +21,17 @@ enum __W32API_MINOR_VERSION = 17; * Windows 9x is no longer supported, either by Microsoft or by DMD, this distinction has been * removed in order to simplify the bindings. */ -version (Windows7) { + version (Windows10) { + enum uint _WIN32_WINNT = 0x604; +} else version (Windows8_1) { // also Windows2012R2 + enum uint _WIN32_WINNT = 0x603; +} else version (Windows8) { // also Windows2012 + enum uint _WIN32_WINNT = 0x602; +} else version (Windows7) { // also Windows2008R2 enum uint _WIN32_WINNT = 0x601; -} else version (WindowsVista) { +} else version (WindowsVista) { // also Windows2008 enum uint _WIN32_WINNT = 0x600; -} else version (Windows2003) { +} else version (Windows2003) { // also WindowsHomeServer, WindowsXP64 enum uint _WIN32_WINNT = 0x502; } else version (WindowsXP) { enum uint _WIN32_WINNT = 0x501; @@ -35,9 +41,13 @@ version (Windows7) { enum uint _WIN32_WINNT = 0x501; } -version (IE8) { +version (IE10) { + enum uint _WIN32_IE = 0xA00; +} else version (IE9) { + enum uint _WIN32_IE = 0x900; +} else version (IE8) { enum uint _WIN32_IE = 0x800; -} version (IE7) { +} else version (IE7) { enum uint _WIN32_IE = 0x700; } else version (IE602) { enum uint _WIN32_IE = 0x603; diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d new file mode 100644 index 0000000000..a0afa0897b --- /dev/null +++ b/src/core/sys/windows/winhttp.d @@ -0,0 +1,844 @@ +/***********************************************************************\ +* winhttp.d * +* * +* Windows API header module * +* * +* Translated from Windows SDK Headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winhttp; +pragma(lib, "winhttp"); +// FIXME: Grouping of constants. Windows SDK doesn't make this entirely clear +// FIXME: Verify WINHTTP_STATUS_CALLBACK function declaration works correctly + +import win32.w32api; +import win32.winbase; +import win32.windef; +import win32.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) + +alias HINTERNET = void*; +alias LPHINTERNET = HINTERNET*; +alias INTERNET_PORT = WORD; +alias LPINTERNET_PORT = INTERNET_PORT*; +alias INTERNET_SCHEME = int; +alias LPINTERNET_SCHEME = INTERNET_SCHEME*; + +// Protocol 'Manifests' +enum : DWORD { + INTERNET_DEFAULT_PORT = 0, + INTERNET_DEFAULT_HTTP_PORT = 80, + INTERNET_DEFAULT_HTTPS_PORT = 443 +} + +// WinHttpOpen() Flags: +enum DWORD WINHTTP_FLAG_ASYNC = 0x10000000; + +// WinHttpOpenRequest() Flags: +enum : DWORD { + WINHTTP_FLAG_SECURE = 0x00800000, + WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, + WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, + WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, + WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, + WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, + WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, + + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, + SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = 0x00000200 +} + +struct WINHTTP_ASYNC_RESULT { + DWORD_PTR dwResult; + DWORD dwError; +} +alias LPWINHTTP_ASYNC_RESULT = WINHTTP_ASYNC_RESULT*; + +struct HTTP_VERSION_INFO { + DWORD dwMajorVersion; + DWORD dwMinorVersion; +} +alias LPHTTP_VERSION_INFO = HTTP_VERSION_INFO*; + +// URL Scheme +enum : DWORD { + INTERNET_SCHEME_HTTP = 1, + INTERNET_SCHEME_HTTPS = 2, + INTERNET_SCHEME_FTP = 3, + INTERNET_SCHEME_SOCKS = 4 +} + +struct URL_COMPONENTS { + DWORD dwStructSize; + LPWSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPWSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPWSTR lpszUserName; + DWORD dwUserNameLength; + LPWSTR lpszPassword; + DWORD dwPasswordLength; + LPWSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPWSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} +alias LPURL_COMPONENTS = URL_COMPONENTS*; +alias URL_COMPONENTSW = URL_COMPONENTS; +alias LPURL_COMPONENTSW = URL_COMPONENTS*; + +struct WINHTTP_PROXY_INFO { + DWORD dwAccessType; + LPWSTR lpszProxy; + LPWSTR lpszProxyBypass; +} +alias LPWINHTTP_PROXY_INFO = WINHTTP_PROXY_INFO*; +alias WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO; +alias LPWINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO*; + +struct WINHTTP_AUTOPROXY_OPTIONS { + DWORD dwFlags; + DWORD dwAutoDetectFlags; + LPCWSTR lpszAutoConfigUrl; + LPVOID lpvReserved; + DWORD dwReserved; + BOOL fAutoLogonIfChallenged; +} + +enum : DWORD { + WINHTTP_AUTOPROXY_AUTO_DETECT = 0x00000001, + WINHTTP_AUTOPROXY_CONFIG_URL = 0x00000002, + WINHTTP_AUTOPROXY_HOST_KEEPCASE = 0x00000004, + WINHTTP_AUTOPROXY_HOST_LOWERCASE = 0x00000008, + WINHTTP_AUTOPROXY_RUN_INPROCESS = 0x00010000, + WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = 0x00020000, + WINHTTP_AUTOPROXY_NO_DIRECTACCESS = 0x00040000, + WINHTTP_AUTOPROXY_NO_CACHE_CLIENT = 0x00080000, + WINHTTP_AUTOPROXY_NO_CACHE_SVC = 0x00100000, + + WINHTTP_AUTOPROXY_SORT_RESULTS = 0x00400000 +} + +// dwAutoDetectFlags +enum : DWORD { + WINHTTP_AUTO_DETECT_TYPE_DHCP = 0x00000001, + WINHTTP_AUTO_DETECT_TYPE_DNS_A = 0x00000002 +} + +struct WINHTTP_CERTIFICATE_INFO { + FILETIME ftExpiry; + FILETIME ftStart; + LPWSTR lpszSubjectInfo; + LPWSTR lpszIssuerInfo; + LPWSTR lpszProtocolName; + LPWSTR lpszSignatureAlgName; + LPWSTR lpszEncryptionAlgName; + DWORD dwKeySize; +} + +// This structure is only defined #if _WS2DEF_ defined (from ) - per Windows SDK +struct WINHTTP_CONNECTION_INFO { + DWORD cbSize; + SOCKADDR_STORAGE LocalAddress; + SOCKADDR_STORAGE RemoteAddress; +} + +// WinHttpTimeFromSystemTime +enum DWORD WINHTTP_TIME_FORMAT_BUFSIZE = 62; + +// CrackUrl, CombineUrl +enum : DWORD { + ICU_NO_ENCODE = 0x20000000, + ICU_DECODE = 0x10000000, + ICU_NO_META = 0x08000000, + ICU_ENCODE_SPACES_ONLY = 0x04000000, + ICU_BROWSER_MODE = 0x02000000, + ICU_ENCODE_PERCENT = 0x00001000 +} +// WinHttpCrackUrl, WinHttpCreateUrl +enum : DWORD { + ICU_ESCAPE = 0x80000000, + ICU_ESCAPE_AUTHORITY = 0x00002000, + ICU_REJECT_USERPWD = 0x00004000 +} +enum : DWORD { + WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, + WINHTTP_ACCESS_TYPE_NO_PROXY = 1, + WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, + WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4 +} +// WinHttpOpen 'prettifiers' +enum LPCWSTR WINHTTP_NO_PROXY_NAME = null; +enum LPCWSTR WINHTTP_NO_PROXY_BYPASS = null; + +enum LPVOID WINHTTP_NO_CLIENT_CERT_CONTEXT = null; + +// WinHttp{Query|Set}Option +enum : DWORD { + WINHTTP_FIRST_OPTION = WINHTTP_OPTION_CALLBACK, + + WINHTTP_OPTION_CALLBACK = 1, + WINHTTP_OPTION_RESOLVE_TIMEOUT = 2, + WINHTTP_OPTION_CONNECT_TIMEOUT = 3, + WINHTTP_OPTION_CONNECT_RETRIES = 4, + WINHTTP_OPTION_SEND_TIMEOUT = 5, + WINHTTP_OPTION_RECEIVE_TIMEOUT = 6, + WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT = 7, + WINHTTP_OPTION_HANDLE_TYPE = 9, + WINHTTP_OPTION_READ_BUFFER_SIZE = 12, + WINHTTP_OPTION_WRITE_BUFFER_SIZE = 13, + WINHTTP_OPTION_PARENT_HANDLE = 21, + WINHTTP_OPTION_EXTENDED_ERROR = 24, + WINHTTP_OPTION_SECURITY_FLAGS = 31, + WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT = 32, + WINHTTP_OPTION_URL = 34, + WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36, + WINHTTP_OPTION_PROXY = 38, + WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39, + + WINHTTP_OPTION_USER_AGENT = 41, + WINHTTP_OPTION_CONTEXT_VALUE = 45, + WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47, + WINHTTP_OPTION_REQUEST_PRIORITY = 58, + WINHTTP_OPTION_HTTP_VERSION = 59, + WINHTTP_OPTION_DISABLE_FEATURE = 63, + + WINHTTP_OPTION_CODEPAGE = 68, + WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73, + WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74, + WINHTTP_OPTION_AUTOLOGON_POLICY = 77, + WINHTTP_OPTION_SERVER_CERT_CONTEXT = 78, + WINHTTP_OPTION_ENABLE_FEATURE = 79, + WINHTTP_OPTION_WORKER_THREAD_COUNT = 80, + WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT = 81, + WINHTTP_OPTION_PASSPORT_COBRANDING_URL = 82, + WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH = 83, + WINHTTP_OPTION_SECURE_PROTOCOLS = 84, + WINHTTP_OPTION_ENABLETRACING = 85, + WINHTTP_OPTION_PASSPORT_SIGN_OUT = 86, + WINHTTP_OPTION_PASSPORT_RETURN_URL = 87, + WINHTTP_OPTION_REDIRECT_POLICY = 88, + WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS = 89, + WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE = 90, + WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE = 91, + WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE = 92, + WINHTTP_OPTION_CONNECTION_INFO = 93, + WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94, + WINHTTP_OPTION_SPN = 96, + + WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97, + WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98, + + WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT = 99, + WINHTTP_OPTION_REJECT_USERPWD_IN_URL = 100, + WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS = 101, + + WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE = 103, + WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE = 104, + + WINHTTP_OPTION_SERVER_SPN_USED = 106, + WINHTTP_OPTION_PROXY_SPN_USED = 107, + + WINHTTP_OPTION_SERVER_CBT = 108, + + WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110, + WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111, + + WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114, + WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT = 115, + WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116, + + WINHTTP_OPTION_DECOMPRESSION = 118, + + WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE = 122, + WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE = 123, + + //WINHTTP_LAST_OPTION => Moved outside of enum - static if() constraints within enums + + WINHTTP_OPTION_USERNAME = 0x1000, + WINHTTP_OPTION_PASSWORD = 0x1001, + WINHTTP_OPTION_PROXY_USERNAME = 0x1002, + WINHTTP_OPTION_PROXY_PASSWORD = 0x1003, + + WINHTTP_CONNS_PER_SERVER_UNLIMITED = 0xFFFFFFFF, + + WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0, + WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1, + WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2, + + WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM, + + WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0, + WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1, + WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2, + + WINHTTP_OPTION_REDIRECT_POLICY_LAST = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS, + WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, + + WINHTTP_DISABLE_PASSPORT_AUTH = 0x00000000, + WINHTTP_ENABLE_PASSPORT_AUTH = 0x10000000, + WINHTTP_DISABLE_PASSPORT_KEYRING = 0x20000000, + WINHTTP_ENABLE_PASSPORT_KEYRING = 0x40000000, + + WINHTTP_DISABLE_COOKIES = 0x00000001, + WINHTTP_DISABLE_REDIRECTS = 0x00000002, + WINHTTP_DISABLE_AUTHENTICATION = 0x00000004, + WINHTTP_DISABLE_KEEP_ALIVE = 0x00000008, + + WINHTTP_ENABLE_SSL_REVOCATION = 0x00000001, + WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = 0x00000002, + + WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000, + WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001, + WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT +} + +// Windows 8.1 SDK: +static if (_WIN32_WINNT >= 0x602) { + enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; +} else { // Windows 7.0A SDK: + enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; +} + +enum : DWORD { + WINHTTP_DECOMPRESSION_FLAG_GZIP = 0x00000001, + WINHTTP_DECOMPRESSION_FLAG_DEFLATE = 0x00000002, + WINHTTP_DECOMPRESSION_FLAG_ALL = (WINHTTP_DECOMPRESSION_FLAG_GZIP | WINHTTP_DECOMPRESSION_FLAG_DEFLATE) +} + +struct WINHTTP_CREDS { + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; + DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; +} +alias PWINHTTP_CREDS = WINHTTP_CREDS*; + +struct WINHTTP_CREDS_EX { + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; + DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; + LPSTR lpszUrl; +} +alias PWINHTTP_CREDS_EX = WINHTTP_CREDS_EX*; + +enum : DWORD { + WINHTTP_HANDLE_TYPE_SESSION = 1, + WINHTTP_HANDLE_TYPE_CONNECT = 2, + WINHTTP_HANDLE_TYPE_REQUEST = 3, + + WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, + WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, + WINHTTP_AUTH_SCHEME_PASSPORT = 0x00000004, + WINHTTP_AUTH_SCHEME_DIGEST = 0x00000008, + WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, + + WINHTTP_AUTH_TARGET_SERVER = 0x00000000, + WINHTTP_AUTH_TARGET_PROXY = 0x00000001, + + SECURITY_FLAG_SECURE = 0x00000001, + SECURITY_FLAG_STRENGTH_WEAK = 0x10000000, + SECURITY_FLAG_STRENGTH_MEDIUM = 0x40000000, + SECURITY_FLAG_STRENGTH_STRONG = 0x20000000, + + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = 0x00000001, + WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = 0x00000002, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = 0x00000004, + WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA = 0x00000008, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID = 0x00000010, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID = 0x00000020, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE = 0x00000040, + WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR = 0x80000000, + + WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 = 0x00000008, + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 = 0x00000020, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = 0x00000080, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = 0x00000200, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = 0x00000800, + WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1) +} + +alias extern(Windows) int fnWINHTTP_STATUS_CALLBACK(HINTERNET hInternet, DWORD_PTR dwContext, + DWORD dwInternetStatus, LPVOID lpvStatusInformation,DWORD dwStatusInformationLength); +alias WINHTTP_STATUS_CALLBACK = fnWINHTTP_STATUS_CALLBACK*; +alias LPWINHTTP_STATUS_CALLBACK = WINHTTP_STATUS_CALLBACK*; + +enum : DWORD { + WINHTTP_CALLBACK_STATUS_RESOLVING_NAME = 0x00000001, + WINHTTP_CALLBACK_STATUS_NAME_RESOLVED = 0x00000002, + WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER = 0x00000004, + WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER = 0x00000008, + WINHTTP_CALLBACK_STATUS_SENDING_REQUEST = 0x00000010, + WINHTTP_CALLBACK_STATUS_REQUEST_SENT = 0x00000020, + WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE = 0x00000040, + WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED = 0x00000080, + WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION = 0x00000100, + WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED = 0x00000200, + WINHTTP_CALLBACK_STATUS_HANDLE_CREATED = 0x00000400, + WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING = 0x00000800, + WINHTTP_CALLBACK_STATUS_DETECTING_PROXY = 0x00001000, + WINHTTP_CALLBACK_STATUS_REDIRECT = 0x00004000, + WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE = 0x00008000, + WINHTTP_CALLBACK_STATUS_SECURE_FAILURE = 0x00010000, + WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE = 0x00020000, + WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE = 0x00040000, + WINHTTP_CALLBACK_STATUS_READ_COMPLETE = 0x00080000, + WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE = 0x00100000, + WINHTTP_CALLBACK_STATUS_REQUEST_ERROR = 0x00200000, + WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE = 0x00400000 +} + +enum : DWORD { + WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE = 0x01000000, + WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE = 0x02000000, + WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE = 0x04000000 +} + +enum : DWORD { + API_RECEIVE_RESPONSE = 1, + API_QUERY_DATA_AVAILABLE = 2, + API_READ_DATA = 3, + API_WRITE_DATA = 4, + API_SEND_REQUEST = 5 +} + +enum : DWORD { + WINHTTP_CALLBACK_FLAG_RESOLVE_NAME = (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED), + WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER = (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER), + WINHTTP_CALLBACK_FLAG_SEND_REQUEST = (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT), + WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE = (WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED), + WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION = (WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED), + WINHTTP_CALLBACK_FLAG_HANDLES = (WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING), + WINHTTP_CALLBACK_FLAG_DETECTING_PROXY = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY, + WINHTTP_CALLBACK_FLAG_REDIRECT = WINHTTP_CALLBACK_STATUS_REDIRECT, + WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE, + WINHTTP_CALLBACK_FLAG_SECURE_FAILURE = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, + WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE, + WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, + WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE, + WINHTTP_CALLBACK_FLAG_READ_COMPLETE = WINHTTP_CALLBACK_STATUS_READ_COMPLETE, + WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE, + WINHTTP_CALLBACK_FLAG_REQUEST_ERROR = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR +} + +enum DWORD WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE = WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE; + +// Windows 8+/2012+ +static if (_WIN32_WINNT >= 0x602) { + enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE + | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE + | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE + | WINHTTP_CALLBACK_STATUS_READ_COMPLETE + | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE + | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR); +} else { + enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE + | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE + | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE + | WINHTTP_CALLBACK_STATUS_READ_COMPLETE + | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE + | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR + | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE); +} + +enum DWORD WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS = 0xffffffff; + +enum WINHTTP_INVALID_STATUS_CALLBACK = (cast(WINHTTP_STATUS_CALLBACK)(-1L)); + +enum : DWORD { + WINHTTP_QUERY_MIME_VERSION = 0, + WINHTTP_QUERY_CONTENT_TYPE = 1, + WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2, + WINHTTP_QUERY_CONTENT_ID = 3, + WINHTTP_QUERY_CONTENT_DESCRIPTION = 4, + WINHTTP_QUERY_CONTENT_LENGTH = 5, + WINHTTP_QUERY_CONTENT_LANGUAGE = 6, + WINHTTP_QUERY_ALLOW = 7, + WINHTTP_QUERY_PUBLIC = 8, + WINHTTP_QUERY_DATE = 9, + WINHTTP_QUERY_EXPIRES = 10, + WINHTTP_QUERY_LAST_MODIFIED = 11, + WINHTTP_QUERY_MESSAGE_ID = 12, + WINHTTP_QUERY_URI = 13, + WINHTTP_QUERY_DERIVED_FROM = 14, + WINHTTP_QUERY_COST = 15, + WINHTTP_QUERY_LINK = 16, + WINHTTP_QUERY_PRAGMA = 17, + WINHTTP_QUERY_VERSION = 18, + WINHTTP_QUERY_STATUS_CODE = 19, + WINHTTP_QUERY_STATUS_TEXT = 20, + WINHTTP_QUERY_RAW_HEADERS = 21, + WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, + WINHTTP_QUERY_CONNECTION = 23, + WINHTTP_QUERY_ACCEPT = 24, + WINHTTP_QUERY_ACCEPT_CHARSET = 25, + WINHTTP_QUERY_ACCEPT_ENCODING = 26, + WINHTTP_QUERY_ACCEPT_LANGUAGE = 27, + WINHTTP_QUERY_AUTHORIZATION = 28, + WINHTTP_QUERY_CONTENT_ENCODING = 29, + WINHTTP_QUERY_FORWARDED = 30, + WINHTTP_QUERY_FROM = 31, + WINHTTP_QUERY_IF_MODIFIED_SINCE = 32, + WINHTTP_QUERY_LOCATION = 33, + WINHTTP_QUERY_ORIG_URI = 34, + WINHTTP_QUERY_REFERER = 35, + WINHTTP_QUERY_RETRY_AFTER = 36, + WINHTTP_QUERY_SERVER = 37, + WINHTTP_QUERY_TITLE = 38, + WINHTTP_QUERY_USER_AGENT = 39, + WINHTTP_QUERY_WWW_AUTHENTICATE = 40, + WINHTTP_QUERY_PROXY_AUTHENTICATE = 41, + WINHTTP_QUERY_ACCEPT_RANGES = 42, + WINHTTP_QUERY_SET_COOKIE = 43, + WINHTTP_QUERY_COOKIE = 44, + WINHTTP_QUERY_REQUEST_METHOD = 45, + WINHTTP_QUERY_REFRESH = 46, + WINHTTP_QUERY_CONTENT_DISPOSITION = 47, + + // HTTP 1.1 defined headers + + WINHTTP_QUERY_AGE = 48, + WINHTTP_QUERY_CACHE_CONTROL = 49, + WINHTTP_QUERY_CONTENT_BASE = 50, + WINHTTP_QUERY_CONTENT_LOCATION = 51, + WINHTTP_QUERY_CONTENT_MD5 = 52, + WINHTTP_QUERY_CONTENT_RANGE = 53, + WINHTTP_QUERY_ETAG = 54, + WINHTTP_QUERY_HOST = 55, + WINHTTP_QUERY_IF_MATCH = 56, + WINHTTP_QUERY_IF_NONE_MATCH = 57, + WINHTTP_QUERY_IF_RANGE = 58, + WINHTTP_QUERY_IF_UNMODIFIED_SINCE = 59, + WINHTTP_QUERY_MAX_FORWARDS = 60, + WINHTTP_QUERY_PROXY_AUTHORIZATION = 61, + WINHTTP_QUERY_RANGE = 62, + WINHTTP_QUERY_TRANSFER_ENCODING = 63, + WINHTTP_QUERY_UPGRADE = 64, + WINHTTP_QUERY_VARY = 65, + WINHTTP_QUERY_VIA = 66, + WINHTTP_QUERY_WARNING = 67, + WINHTTP_QUERY_EXPECT = 68, + WINHTTP_QUERY_PROXY_CONNECTION = 69, + WINHTTP_QUERY_UNLESS_MODIFIED_SINCE = 70, + + WINHTTP_QUERY_PROXY_SUPPORT = 75, + WINHTTP_QUERY_AUTHENTICATION_INFO = 76, + WINHTTP_QUERY_PASSPORT_URLS = 77, + WINHTTP_QUERY_PASSPORT_CONFIG = 78, + + WINHTTP_QUERY_MAX = 78, + + WINHTTP_QUERY_CUSTOM = 65535, + + WINHTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, + + WINHTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, + + WINHTTP_QUERY_FLAG_NUMBER = 0x20000000 +} + +enum : DWORD { + HTTP_STATUS_CONTINUE = 100, + HTTP_STATUS_SWITCH_PROTOCOLS = 101, + + HTTP_STATUS_OK = 200, + HTTP_STATUS_CREATED = 201, + HTTP_STATUS_ACCEPTED = 202, + HTTP_STATUS_PARTIAL = 203, + HTTP_STATUS_NO_CONTENT = 204, + HTTP_STATUS_RESET_CONTENT = 205, + HTTP_STATUS_PARTIAL_CONTENT = 206, + HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, + + HTTP_STATUS_AMBIGUOUS = 300, + HTTP_STATUS_MOVED = 301, + HTTP_STATUS_REDIRECT = 302, + HTTP_STATUS_REDIRECT_METHOD = 303, + HTTP_STATUS_NOT_MODIFIED = 304, + HTTP_STATUS_USE_PROXY = 305, + HTTP_STATUS_REDIRECT_KEEP_VERB = 307, + + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_DENIED = 401, + HTTP_STATUS_PAYMENT_REQ = 402, + HTTP_STATUS_FORBIDDEN = 403, + HTTP_STATUS_NOT_FOUND = 404, + HTTP_STATUS_BAD_METHOD = 405, + HTTP_STATUS_NONE_ACCEPTABLE = 406, + HTTP_STATUS_PROXY_AUTH_REQ = 407, + HTTP_STATUS_REQUEST_TIMEOUT = 408, + HTTP_STATUS_CONFLICT = 409, + HTTP_STATUS_GONE = 410, + HTTP_STATUS_LENGTH_REQUIRED = 411, + HTTP_STATUS_PRECOND_FAILED = 412, + HTTP_STATUS_REQUEST_TOO_LARGE = 413, + HTTP_STATUS_URI_TOO_LONG = 414, + HTTP_STATUS_UNSUPPORTED_MEDIA = 415, + HTTP_STATUS_RETRY_WITH = 449, + + HTTP_STATUS_SERVER_ERROR = 500, + HTTP_STATUS_NOT_SUPPORTED = 501, + HTTP_STATUS_BAD_GATEWAY = 502, + HTTP_STATUS_SERVICE_UNAVAIL = 503, + HTTP_STATUS_GATEWAY_TIMEOUT = 504, + HTTP_STATUS_VERSION_NOT_SUP = 505, + + HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE, + HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP +} + +enum LPCWSTR WINHTTP_NO_REFERER = null; +enum LPCWSTR * WINHTTP_DEFAULT_ACCEPT_TYPES = null; + +enum : DWORD { + WINHTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, + WINHTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, + + WINHTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, + + WINHTTP_ADDREQ_FLAG_ADD = 0x20000000, + + WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, + WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, + WINHTTP_ADDREQ_FLAG_COALESCE = WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, + + WINHTTP_ADDREQ_FLAG_REPLACE = 0x80000000, + + WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH = 0 +} + +enum LPCWSTR WINHTTP_NO_ADDITIONAL_HEADERS = null; +enum LPVOID WINHTTP_NO_REQUEST_DATA = null; + +enum LPCWSTR WINHTTP_HEADER_NAME_BY_INDEX = null; +enum LPVOID WINHTTP_NO_OUTPUT_BUFFER = null; +enum LPDWORD WINHTTP_NO_HEADER_INDEX = null; + +struct WINHTTP_CURRENT_USER_IE_PROXY_CONFIG { + BOOL fAutoDetect; + LPWSTR lpszAutoConfigUrl; + LPWSTR lpszProxy; + LPWSTR lpszProxyBypass; +} + +// WinHttp API error returns +enum : DWORD { + WINHTTP_ERROR_BASE = 12000, + + ERROR_WINHTTP_OUT_OF_HANDLES = (WINHTTP_ERROR_BASE + 1), + ERROR_WINHTTP_TIMEOUT = (WINHTTP_ERROR_BASE + 2), + ERROR_WINHTTP_INTERNAL_ERROR = (WINHTTP_ERROR_BASE + 4), + ERROR_WINHTTP_INVALID_URL = (WINHTTP_ERROR_BASE + 5), + ERROR_WINHTTP_UNRECOGNIZED_SCHEME = (WINHTTP_ERROR_BASE + 6), + ERROR_WINHTTP_NAME_NOT_RESOLVED = (WINHTTP_ERROR_BASE + 7), + ERROR_WINHTTP_INVALID_OPTION = (WINHTTP_ERROR_BASE + 9), + ERROR_WINHTTP_OPTION_NOT_SETTABLE = (WINHTTP_ERROR_BASE + 11), + ERROR_WINHTTP_SHUTDOWN = (WINHTTP_ERROR_BASE + 12), + + ERROR_WINHTTP_LOGIN_FAILURE = (WINHTTP_ERROR_BASE + 15), + ERROR_WINHTTP_OPERATION_CANCELLED = (WINHTTP_ERROR_BASE + 17), + ERROR_WINHTTP_INCORRECT_HANDLE_TYPE = (WINHTTP_ERROR_BASE + 18), + ERROR_WINHTTP_INCORRECT_HANDLE_STATE = (WINHTTP_ERROR_BASE + 19), + ERROR_WINHTTP_CANNOT_CONNECT = (WINHTTP_ERROR_BASE + 29), + ERROR_WINHTTP_CONNECTION_ERROR = (WINHTTP_ERROR_BASE + 30), + ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), + + ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE, + 44), + + ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), + ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), + ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = (WINHTTP_ERROR_BASE + 102), + ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN = (WINHTTP_ERROR_BASE + 103), + + ERROR_WINHTTP_HEADER_NOT_FOUND = (WINHTTP_ERROR_BASE + 150), + ERROR_WINHTTP_INVALID_SERVER_RESPONSE = (WINHTTP_ERROR_BASE + 152), + ERROR_WINHTTP_INVALID_HEADER = (WINHTTP_ERROR_BASE + 153), + ERROR_WINHTTP_INVALID_QUERY_REQUEST = (WINHTTP_ERROR_BASE + 154), + ERROR_WINHTTP_HEADER_ALREADY_EXISTS = (WINHTTP_ERROR_BASE + 155), + ERROR_WINHTTP_REDIRECT_FAILED = (WINHTTP_ERROR_BASE + 156), + + ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR = (WINHTTP_ERROR_BASE + 178), + ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT = (WINHTTP_ERROR_BASE + 166), + ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT = (WINHTTP_ERROR_BASE + 167), + ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE = (WINHTTP_ERROR_BASE + 176), + ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR = (WINHTTP_ERROR_BASE + 177), + + ERROR_WINHTTP_NOT_INITIALIZED = (WINHTTP_ERROR_BASE + 172), + ERROR_WINHTTP_SECURE_FAILURE = (WINHTTP_ERROR_BASE + 175), + + ERROR_WINHTTP_SECURE_CERT_DATE_INVALID = (WINHTTP_ERROR_BASE + 37), + ERROR_WINHTTP_SECURE_CERT_CN_INVALID = (WINHTTP_ERROR_BASE + 38), + ERROR_WINHTTP_SECURE_INVALID_CA = (WINHTTP_ERROR_BASE + 45), + ERROR_WINHTTP_SECURE_CERT_REV_FAILED = (WINHTTP_ERROR_BASE + 57), + ERROR_WINHTTP_SECURE_CHANNEL_ERROR = (WINHTTP_ERROR_BASE + 157), + ERROR_WINHTTP_SECURE_INVALID_CERT = (WINHTTP_ERROR_BASE + 169), + ERROR_WINHTTP_SECURE_CERT_REVOKED = (WINHTTP_ERROR_BASE + 170), + ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE = (WINHTTP_ERROR_BASE + 179), + + ERROR_WINHTTP_AUTODETECTION_FAILED = (WINHTTP_ERROR_BASE + 180), + ERROR_WINHTTP_HEADER_COUNT_EXCEEDED = (WINHTTP_ERROR_BASE + 181), + ERROR_WINHTTP_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 182), + ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 183), + ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW = (WINHTTP_ERROR_BASE + 184), + ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 185), + ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 186), + + WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) +} + +enum : DWORD { + WINHTTP_RESET_STATE = 0x00000001, + WINHTTP_RESET_SWPAD_CURRENT_NETWORK = 0x00000002, + WINHTTP_RESET_SWPAD_ALL = 0x00000004, + WINHTTP_RESET_SCRIPT_CACHE = 0x00000008, + WINHTTP_RESET_ALL = 0x0000FFFF, + WINHTTP_RESET_NOTIFY_NETWORK_CHANGED = 0x00010000, + WINHTTP_RESET_OUT_OF_PROC = 0x00020000 +} + +enum : DWORD { + WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123, + WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 15000 +} + +// Version(Windows8) || Version(Windows2012): +static if (_WIN32_WINNT >= 0x602) +{ + enum WINHTTP_WEB_SOCKET_OPERATION : DWORD + { + WINHTTP_WEB_SOCKET_SEND_OPERATION = 0, + WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1, + WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2, + WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3 + } + enum WINHTTP_WEB_SOCKET_BUFFER_TYPE : DWORD + { + WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0, + WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1, + WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2, + WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3, + WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4 + } + enum WINHTTP_WEB_SOCKET_CLOSE_STATUS : DWORD + { + WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000, + WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001, + WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002, + WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003, + WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005, + WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006, + WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007, + WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008, + WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009, + WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010, + WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011, + WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015 + } + struct WINHTTP_PROXY_RESULT_ENTRY { + BOOL fProxy; + BOOL fBypass; + INTERNET_SCHEME ProxyScheme; + PWSTR pwszProxy; + INTERNET_PORT ProxyPort; + } + struct WINHTTP_PROXY_RESULT { + DWORD cEntries; + WINHTTP_PROXY_RESULT_ENTRY *pEntries; + } + struct WINHTTP_WEB_SOCKET_ASYNC_RESULT { + WINHTTP_ASYNC_RESULT AsyncResult; + WINHTTP_WEB_SOCKET_OPERATION Operation; + } + struct WINHTTP_WEB_SOCKET_STATUS { + DWORD dwBytesTransferred; + WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType; + } +} + + +extern (Windows) { + BOOL WinHttpAddRequestHeaders(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, DWORD dwModifiers); + + BOOL WinHttpCheckPlatform(); + + BOOL WinHttpCloseHandle(HINTERNET hInternet); + + HINTERNET WinHttpConnect(HINTERNET hSession, LPCWSTR pswzServerName, INTERNET_PORT nServerPort, DWORD dwReserved); + + BOOL WinHttpCrackUrl(LPCWSTR pwszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents); + + BOOL WinHttpCreateUrl(LPURL_COMPONENTS lpUrlComponents, DWORD dwFlags, LPWSTR pwszUrl, LPDWORD lpdwUrlLength); + BOOL WinHttpDetectAutoProxyConfigUrl(DWORD dwAutoDetectFlags, LPWSTR *ppwszAutoConfigUrl); + + BOOL WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig); + BOOL WinHttpGetProxyForUrl(HINTERNET hSession, LPCWSTR lpcwszUrl, + WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, WINHTTP_PROXY_INFO *pProxyInfo); + + HINTERNET WinHttpOpen(LPCWSTR pwszUserAgent, DWORD dwAccessType, LPCWSTR pwszProxyName, + LPCWSTR pwszProxyBypass, DWORD dwFlags); + HINTERNET WinHttpOpenRequest(HINTERNET hConnect, LPCWSTR pwszVerb, LPCWSTR pwszObjectName, + LPCWSTR pwszVersion, LPCWSTR pwszReferrer, + LPCWSTR *ppwszAcceptTypes, DWORD dwFlags); + + BOOL WinHttpQueryAuthSchemes(HINTERNET hRequest, LPDWORD lpdwSupportedSchemes, + LPDWORD lpdwFirstScheme, LPDWORD pdwAuthTarget); + BOOL WinHttpQueryDataAvailable(HINTERNET hRequest, LPDWORD lpdwNumberOfBytesAvailable); + BOOL WinHttpQueryHeaders(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName, + LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex); + BOOL WinHttpQueryOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, + LPDWORD lpdwBufferLength); + + BOOL WinHttpReadData(HINTERNET hRequest, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, + LPDWORD lpdwNumberOfBytesRead); + BOOL WinHttpReceiveResponse(HINTERNET hRequest, LPVOID lpReserved); + + BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, + LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext); + + BOOL WinHttpSetCredentials(HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, + LPCWSTR pwszUserName, LPCWSTR pwszPassword, LPVOID pAuthParams); + BOOL WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpSetOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength); + WINHTTP_STATUS_CALLBACK WinHttpSetStatusCallback(HINTERNET hInternet, + WINHTTP_STATUS_CALLBACK lpfnInternetCallback, + DWORD dwNotificationFlags, DWORD_PTR dwReserved); + BOOL WinHttpSetTimeouts(HINTERNET hInternet, int dwResolveTimeout, int dwConnectTimeout, + int dwSendTimeout, int dwReceiveTimeout); + + BOOL WinHttpTimeFromSystemTime(const SYSTEMTIME *pst, LPWSTR pwszTime); + BOOL WinHttpTimeToSystemTime(LPCWSTR pwszTime, SYSTEMTIME *pst); + + BOOL WinHttpWriteData(HINTERNET hRequest, LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, + LPDWORD lpdwNumberOfBytesWritten); + + // Version(Windows8) || Version(Windows2012): + static if (_WIN32_WINNT >= 0x602) { + DWORD WinHttpCreateProxyResolver(HINTERNET hSession, HINTERNET *phResolver); + void WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT *pProxyResult); + DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, + WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, DWORD_PTR pContext); + DWORD WinHttpGetProxyResult(HINTERNET hResolver, WINHTTP_PROXY_RESULT *pProxyResult); + DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); + DWORD WinHttpWebSocketClose(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); + HINTERNET WinHttpWebSocketCompleteUpgrade(HINTERNET hRequest, DWORD_PTR pContext); + DWORD WinHttpWebSocketQueryCloseStatus(HINTERNET hWebSocket, USHORT *pusStatus, PVOID pvReason, + DWORD dwReasonLength, DWORD *pdwReasonLengthConsumed); + DWORD WinHttpWebSocketReceive(HINTERNET hWebSocket, PVOID pvBuffer, DWORD dwBufferLength, + DWORD *pdwBytesRead, WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType); + DWORD WinHttpWebSocketSend(HINTERNET hWebSocket, WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType, + PVOID pvBuffer, DWORD dwBufferLength); + DWORD WinHttpWebSocketShutdown(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); + } +} From c618a113021a28f9d331aa0d5f2be44c12a01c0d Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 19:55:28 +0000 Subject: [PATCH 108/768] Import changes from https://github.com/smjgordon/bindings --- src/core/sys/windows/aclui.d | 4 +- src/core/sys/windows/basetyps.d | 2 +- src/core/sys/windows/commctrl.d | 25 +- src/core/sys/windows/commdlg.d | 47 +- src/core/sys/windows/dbt.d | 8 +- src/core/sys/windows/dhcpcsdk.d | 4 +- src/core/sys/windows/imm.d | 4 +- src/core/sys/windows/mswsock.d | 4 +- src/core/sys/windows/ntsecapi.d | 1586 +++++----- src/core/sys/windows/ras.d | 317 +- src/core/sys/windows/rpcdce.d | 4 +- src/core/sys/windows/w32api.d | 188 +- src/core/sys/windows/winbase.d | 2 +- src/core/sys/windows/windef.d | 1 + src/core/sys/windows/wingdi.d | 18 +- src/core/sys/windows/winnt.d | 4 +- src/core/sys/windows/winuser.d | 4881 ++++++++++++++++--------------- 17 files changed, 3570 insertions(+), 3529 deletions(-) diff --git a/src/core/sys/windows/aclui.d b/src/core/sys/windows/aclui.d index a8e367782f..2f8a601e32 100644 --- a/src/core/sys/windows/aclui.d +++ b/src/core/sys/windows/aclui.d @@ -12,11 +12,11 @@ module win32.aclui; pragma(lib, "aclui"); private import win32.w32api; - +/* static assert (_WIN32_WINNT >= 0x500, "win32.aclui is available only if version Windows2000, WindowsXP, Windows2003 " "or WindowsVista is set"); - +*/ import win32.accctrl, win32.commctrl, win32.objbase; private import win32.basetyps, win32.prsht, win32.unknwn, win32.windef, win32.winuser; diff --git a/src/core/sys/windows/basetyps.d b/src/core/sys/windows/basetyps.d index d6b318f835..70ca12724b 100644 --- a/src/core/sys/windows/basetyps.d +++ b/src/core/sys/windows/basetyps.d @@ -19,6 +19,6 @@ align(1) struct GUID { // size is 16 } alias GUID UUID, IID, CLSID, FMTID, uuid_t; alias GUID* LPGUID, LPCLSID, LPIID; -alias const(GUID)* REFGUID, REFIID, REFCLSID, REFFMTID; +alias const(GUID)* LPCGUID, REFGUID, REFIID, REFCLSID, REFFMTID; alias uint error_status_t, PROPID; diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 53c1e4e02c..33c95df15a 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -944,21 +944,18 @@ static if (_WIN32_IE >= 0x400) { // IE4.0 ??? TTM_SETTITLEA, TTM_SETTITLEW // = WM_USER + 33 } - static if (_WIN32_IE >= 0x500) - { - alias TTM_SETTITLEW TTM_SETTITLE; - } - else - { - alias TTM_SETTITLEA TTM_SETTITLE; - } + static if (_WIN32_IE >= 0x500) { + alias TTM_SETTITLEW TTM_SETTITLE; + } else { + alias TTM_SETTITLEA TTM_SETTITLE; + } } static if (_WIN32_WINNT >= 0x501) { - enum { - TTM_POPUP = (WM_USER + 34), - TTM_GETTITLE = (WM_USER + 35), - } + enum { + TTM_POPUP = (WM_USER + 34), + TTM_GETTITLE = (WM_USER + 35), + } } enum { @@ -5483,11 +5480,11 @@ int ListView_EnableGroupView(HWND w, BOOL i) { return cast(int) SendMessage(w, LVM_ENABLEGROUPVIEW, i, 0); } -static if (_WIN32_WINNT >= 0x500 || _WIN32_IE >= 0x500) { +//static if (_WIN32_WINNT >= 0x500 || _WIN32_IE >= 0x500) { BOOL ListView_SortItemsEx(HWND w, PFNLVCOMPARE c, LPARAM p) { return cast(BOOL) SendMessage(w, LVM_SORTITEMSEX, cast(WPARAM) p, cast(LPARAM)c); } -} +//} static if (_WIN32_WINNT >= 0x501) { int ListView_GetGroupInfo(HWND w, int i, PLVGROUP p) { diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index c57db79d6d..47ce6483cf 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -35,12 +35,11 @@ enum : UINT { CDN_TYPECHANGE = CDN_FIRST - 6, } -static if(_WIN32_WINNT >= 0x500) -{ +//static if(_WIN32_WINNT >= 0x500) { enum : UINT { CDN_INCLUDEITEM = CDN_FIRST - 7, } -} +//} enum : UINT { CDM_FIRST = WM_USER + 100, @@ -195,7 +194,7 @@ enum : DWORD { PD_NONETWORKBUTTON = 0x200000 } -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { enum : DWORD { PD_CURRENTPAGE = 0x00400000, PD_NOCURRENTPAGE = 0x00800000, @@ -210,7 +209,7 @@ static if (_WIN32_WINNT >= 0x500) { } const DWORD START_PAGE_GENERAL = 0xFFFFFFFF; -} +//} enum { PSD_DEFAULTMINMARGINS = 0, @@ -428,12 +427,12 @@ struct OPENFILENAMEA { DWORD lCustData; LPOFNHOOKPROC lpfnHook; LPCSTR lpTemplateName; - - static if (_WIN32_WINNT >= 0x500) { + + //static if (_WIN32_WINNT >= 0x500) { void *pvReserved; DWORD dwReserved; DWORD FlagsEx; - } + //} } alias OPENFILENAMEA* LPOPENFILENAMEA; @@ -458,12 +457,12 @@ struct OPENFILENAMEW { DWORD lCustData; LPOFNHOOKPROC lpfnHook; LPCWSTR lpTemplateName; - - static if (_WIN32_WINNT >= 0x500) { - void *pvReserved; - DWORD dwReserved; - DWORD FlagsEx; - } + + //static if (_WIN32_WINNT >= 0x500) { + void *pvReserved; + DWORD dwReserved; + DWORD FlagsEx; + //} } alias OPENFILENAMEW* LPOPENFILENAMEW; @@ -565,7 +564,7 @@ struct PRINTDLGW { } alias PRINTDLGW* LPPRINTDLGW; -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { import win32.unknwn; // for LPUNKNOWN import win32.prsht; // for HPROPSHEETPAGE @@ -625,7 +624,7 @@ static if (_WIN32_WINNT >= 0x500) { } alias PRINTDLGEXW* LPPRINTDLGEXW; -} // _WIN32_WINNT >= 0x500 +//} // _WIN32_WINNT >= 0x500 extern (Windows) { BOOL ChooseColorA(LPCHOOSECOLORA); @@ -648,10 +647,10 @@ extern (Windows) { HWND ReplaceTextA(LPFINDREPLACEA); HWND ReplaceTextW(LPFINDREPLACEW); - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { HRESULT PrintDlgExA(LPPRINTDLGEXA); HRESULT PrintDlgExW(LPPRINTDLGEXW); - } + //} } version (Unicode) { @@ -673,10 +672,10 @@ version (Unicode) { alias PrintDlgW PrintDlg; alias ReplaceTextW ReplaceText; - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { alias PRINTDLGEXW PRINTDLGEX; alias PrintDlgExW PrintDlgEx; - } + //} } else { // UNICODE @@ -698,10 +697,10 @@ version (Unicode) { alias PrintDlgA PrintDlg; alias ReplaceTextA ReplaceText; - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { alias PRINTDLGEXA PRINTDLGEX; alias PrintDlgExA PrintDlgEx; - } + //} } // UNICODE @@ -712,6 +711,6 @@ alias OPENFILENAME* LPOPENFILENAME; alias OFNOTIFY* LPOFNOTIFY; alias PAGESETUPDLG* LPPAGESETUPDLG; alias PRINTDLG* LPPRINTDLG; -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { alias PRINTDLGEX* LPPRINTDLGEX; -} +//} diff --git a/src/core/sys/windows/dbt.d b/src/core/sys/windows/dbt.d index 9275d52e82..4fe61eae36 100644 --- a/src/core/sys/windows/dbt.d +++ b/src/core/sys/windows/dbt.d @@ -76,12 +76,12 @@ enum : DWORD { BSF_MSGSRV32ISOK = 0x80000000 } -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { enum : DWORD { BSF_ALLOWSFW = 0x00000080, BSF_SENDNOTIFYMESSAGE = 0x00000100 } -} +//} static if (_WIN32_WINNT >= 0x501) { enum : DWORD { @@ -146,7 +146,7 @@ version (Unicode) { } alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { struct DEV_BROADCAST_DEVICEINTERFACE_A { DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_A.sizeof; DWORD dbcc_devicetype; @@ -186,4 +186,4 @@ static if (_WIN32_WINNT >= 0x500) { BYTE* dbch_data() { return &_dbch_data; } } alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; -} +//} diff --git a/src/core/sys/windows/dhcpcsdk.d b/src/core/sys/windows/dhcpcsdk.d index c9d9e11816..c152d54297 100644 --- a/src/core/sys/windows/dhcpcsdk.d +++ b/src/core/sys/windows/dhcpcsdk.d @@ -12,9 +12,9 @@ module win32.dhcpcsdk; private import win32.w32api, win32.windef; -static assert (_WIN32_WINNT >= 0x500, +/*static assert (_WIN32_WINNT >= 0x500, "win32.dhcpcsdk is available only if version Windows2000, WindowsXP, Windows2003 -or WindowsVista is set"); +or WindowsVista is set");*/ //#if (_WIN32_WINNT >= 0x500) diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d index c5e50be895..ac83207a9e 100644 --- a/src/core/sys/windows/imm.d +++ b/src/core/sys/windows/imm.d @@ -25,9 +25,9 @@ const WM_IME_CONTROL = 0x283; const WM_IME_COMPOSITIONFULL = 0x284; const WM_IME_SELECT = 0x285; const WM_IME_CHAR = 0x286; -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { const WM_IME_REQUEST = 0x288; -} +//} const WM_IME_KEYDOWN = 0x290; const WM_IME_KEYUP = 0x291; diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index cadb395a10..21047b5f34 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -26,14 +26,14 @@ version (Win32_Winsock1) { import win32.winsock2; } -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { enum { /* WinNT5+: ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ SO_MAXDG = 0x7009, SO_MAXPATHDG = 0x700A, } -} +//} enum { /* WinNT4+: diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index f0930d59ef..76ed6fb961 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -1,793 +1,793 @@ -/***********************************************************************\ -* ntsecapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.ntsecapi; - -private import - win32.basetyps, win32.ntdef, win32.windef, win32.winnt, win32.w32api; - -// FIXME: check types and grouping of constants -// FIXME: check Windows version support - -const KERB_WRAP_NO_ENCRYPT = 0x80000001; - -const LOGON_GUEST = 0x00000001; -const LOGON_NOENCRYPTION = 0x00000002; -const LOGON_CACHED_ACCOUNT = 0x00000004; -const LOGON_USED_LM_PASSWORD = 0x00000008; -const LOGON_EXTRA_SIDS = 0x00000020; -const LOGON_SUBAUTH_SESSION_KEY = 0x00000040; -const LOGON_SERVER_TRUST_ACCOUNT = 0x00000080; -const LOGON_NTLMV2_ENABLED = 0x00000100; -const LOGON_RESOURCE_GROUPS = 0x00000200; -const LOGON_PROFILE_PATH_RETURNED = 0x00000400; -const LOGON_GRACE_LOGON = 0x01000000; - -enum { - LSA_MODE_PASSWORD_PROTECTED = 1, - LSA_MODE_INDIVIDUAL_ACCOUNTS, - LSA_MODE_MANDATORY_ACCESS, - LSA_MODE_LOG_FULL -} - -bool LSA_SUCCESS(int x) { return x >= 0; } - -/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned - * aliases. Should we merge them anyway? - */ -const char[] MICROSOFT_KERBEROS_NAME_A = "Kerberos"; -const wchar[] MICROSOFT_KERBEROS_NAME_W = "Kerberos"; -const char[] MSV1_0_PACKAGE_NAME = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; -const wchar[] MSV1_0_PACKAGE_NAMEW = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; - -const MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT = 32; -const MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT = 2048; -const MSV1_0_CLEARTEXT_PASSWORD_ALLOWED = 2; -const MSV1_0_CRED_LM_PRESENT = 1; -const MSV1_0_CRED_NT_PRESENT = 2; -const MSV1_0_CRED_VERSION = 0; -const MSV1_0_DONT_TRY_GUEST_ACCOUNT = 16; -const MSV1_0_MAX_NTLM3_LIFE = 1800; -const MSV1_0_MAX_AVL_SIZE = 64000; -const MSV1_0_MNS_LOGON = 16777216; - -const size_t - MSV1_0_CHALLENGE_LENGTH = 8, - MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8, - MSV1_0_NTLM3_RESPONSE_LENGTH = 16, - MSV1_0_NTLM3_OWF_LENGTH = 16, - MSV1_0_NTLM3_INPUT_LENGTH = MSV1_0_NTLM3_RESPONSE.sizeof - - MSV1_0_NTLM3_RESPONSE_LENGTH, - MSV1_0_OWF_PASSWORD_LENGTH = 16, - MSV1_0_PACKAGE_NAMEW_LENGTH = MSV1_0_PACKAGE_NAMEW.sizeof - - WCHAR.sizeof; - -const MSV1_0_RETURN_USER_PARAMETERS = 8; -const MSV1_0_RETURN_PASSWORD_EXPIRY = 64; -const MSV1_0_RETURN_PROFILE_PATH = 512; -const MSV1_0_SUBAUTHENTICATION_DLL_EX = 1048576; -const MSV1_0_SUBAUTHENTICATION_DLL = 0xff000000; -const MSV1_0_SUBAUTHENTICATION_DLL_SHIFT = 24; -const MSV1_0_SUBAUTHENTICATION_DLL_RAS = 2; -const MSV1_0_SUBAUTHENTICATION_DLL_IIS = 132; -const MSV1_0_SUBAUTHENTICATION_FLAGS = 0xff000000; -const MSV1_0_TRY_GUEST_ACCOUNT_ONLY = 256; -const MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY = 1024; -const MSV1_0_UPDATE_LOGON_STATISTICS = 4; -const MSV1_0_USE_CLIENT_CHALLENGE = 128; -const MSV1_0_USER_SESSION_KEY_LENGTH = 16; - -const char[] - MSV1_0_SUBAUTHENTICATION_KEY - = `System\CurrentControlSet\Control\Lsa\MSV1_0`, - MSV1_0_SUBAUTHENTICATION_VALUE = "Auth"; - -const ACCESS_MASK - POLICY_VIEW_LOCAL_INFORMATION = 0x0001, - POLICY_VIEW_AUDIT_INFORMATION = 0x0002, - POLICY_GET_PRIVATE_INFORMATION = 0x0004, - POLICY_TRUST_ADMIN = 0x0008, - POLICY_CREATE_ACCOUNT = 0x0010, - POLICY_CREATE_SECRET = 0x0020, - POLICY_CREATE_PRIVILEGE = 0x0040, - POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x0080, - POLICY_SET_AUDIT_REQUIREMENTS = 0x0100, - POLICY_AUDIT_LOG_ADMIN = 0x0200, - POLICY_SERVER_ADMIN = 0x0400, - POLICY_LOOKUP_NAMES = 0x0800, - - POLICY_READ = STANDARD_RIGHTS_READ | 0x0006, - POLICY_WRITE = STANDARD_RIGHTS_WRITE | 0x07F8, - POLICY_EXECUTE = STANDARD_RIGHTS_EXECUTE | 0x0801, - POLICY_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 0x0FFF; - -const POLICY_AUDIT_EVENT_UNCHANGED = 0; -const POLICY_AUDIT_EVENT_SUCCESS = 1; -const POLICY_AUDIT_EVENT_FAILURE = 2; -const POLICY_AUDIT_EVENT_NONE = 4; -const POLICY_AUDIT_EVENT_MASK = 7; - -enum { - POLICY_LOCATION_LOCAL = 1, - POLICY_LOCATION_DS -} - -enum : uint { - POLICY_MACHINE_POLICY_LOCAL = 0, - POLICY_MACHINE_POLICY_DEFAULTED, - POLICY_MACHINE_POLICY_EXPLICIT, - POLICY_MACHINE_POLICY_UNKNOWN = 0xFFFFFFFF -} - - -const POLICY_QOS_SCHANEL_REQUIRED = 0x0001; -const POLICY_QOS_OUTBOUND_INTEGRITY = 0x0002; -const POLICY_QOS_OUTBOUND_CONFIDENTIALITY = 0x0004; -const POLICY_QOS_INBOUND_INTEGREITY = 0x0008; -const POLICY_QOS_INBOUND_CONFIDENTIALITY = 0x0010; -const POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE = 0x0020; -const POLICY_QOS_RAS_SERVER_ALLOWED = 0x0040; -const POLICY_QOS_DHCP_SERVER_ALLOWD = 0x0080; - -const POLICY_KERBEROS_FORWARDABLE = 1; -const POLICY_KERBEROS_PROXYABLE = 2; -const POLICY_KERBEROS_RENEWABLE = 4; -const POLICY_KERBEROS_POSTDATEABLE = 8; - -const char[] - SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = "PasswordChangeNotify", - SAM_INIT_NOTIFICATION_ROUTINE = "InitializeChangeNotify", - SAM_PASSWORD_FILTER_ROUTINE = "PasswordFilter"; - -const TCHAR[] - SE_INTERACTIVE_LOGON_NAME = "SeInteractiveLogonRight", - SE_NETWORK_LOGON_NAME = "SeNetworkLogonRight", - SE_BATCH_LOGON_NAME = "SeBatchLogonRight", - SE_SERVICE_LOGON_NAME = "SeServiceLogonRight"; - -enum { - TRUST_ATTRIBUTE_NON_TRANSITIVE = 1, - TRUST_ATTRIBUTE_UPLEVEL_ONLY = 2, - TRUST_ATTRIBUTE_TREE_PARENT = 4194304, - TRUST_ATTRIBUTES_VALID = -16580609 -} - -enum { - TRUST_AUTH_TYPE_NONE, - TRUST_AUTH_TYPE_NT4OWF, - TRUST_AUTH_TYPE_CLEAR -} - -enum { - TRUST_DIRECTION_DISABLED, - TRUST_DIRECTION_INBOUND, - TRUST_DIRECTION_OUTBOUND, - TRUST_DIRECTION_BIDIRECTIONAL -} - -enum { - TRUST_TYPE_DOWNLEVEL = 1, - TRUST_TYPE_UPLEVEL, - TRUST_TYPE_MIT, - TRUST_TYPE_DCE -} - -alias UNICODE_STRING LSA_UNICODE_STRING; -alias UNICODE_STRING* PLSA_UNICODE_STRING; -alias STRING LSA_STRING; -alias STRING* PLSA_STRING; - -enum MSV1_0_LOGON_SUBMIT_TYPE { - MsV1_0InteractiveLogon = 2, - MsV1_0Lm20Logon, - MsV1_0NetworkLogon, - MsV1_0SubAuthLogon, - MsV1_0WorkstationUnlockLogon = 7 -} -alias MSV1_0_LOGON_SUBMIT_TYPE* PMSV1_0_LOGON_SUBMIT_TYPE; - -enum MSV1_0_PROFILE_BUFFER_TYPE { - MsV1_0InteractiveProfile = 2, - MsV1_0Lm20LogonProfile, - MsV1_0SmartCardProfile -} -alias MSV1_0_PROFILE_BUFFER_TYPE* PMSV1_0_PROFILE_BUFFER_TYPE; - - -enum MSV1_0_AVID { - MsvAvEOL, - MsvAvNbComputerName, - MsvAvNbDomainName, - MsvAvDnsComputerName, - MsvAvDnsDomainName -} - -enum MSV1_0_PROTOCOL_MESSAGE_TYPE { - MsV1_0Lm20ChallengeRequest = 0, - MsV1_0Lm20GetChallengeResponse, - MsV1_0EnumerateUsers, - MsV1_0GetUserInfo, - MsV1_0ReLogonUsers, - MsV1_0ChangePassword, - MsV1_0ChangeCachedPassword, - MsV1_0GenericPassthrough, - MsV1_0CacheLogon, - MsV1_0SubAuth, - MsV1_0DeriveCredential, - MsV1_0CacheLookup -} -alias MSV1_0_PROTOCOL_MESSAGE_TYPE* PMSV1_0_PROTOCOL_MESSAGE_TYPE; - -enum POLICY_LSA_SERVER_ROLE { - PolicyServerRoleBackup = 2, - PolicyServerRolePrimary -} -alias POLICY_LSA_SERVER_ROLE* PPOLICY_LSA_SERVER_ROLE; - -enum POLICY_SERVER_ENABLE_STATE { - PolicyServerEnabled = 2, - PolicyServerDisabled -} -alias POLICY_SERVER_ENABLE_STATE* PPOLICY_SERVER_ENABLE_STATE; - -enum POLICY_INFORMATION_CLASS { - PolicyAuditLogInformation = 1, - PolicyAuditEventsInformation, - PolicyPrimaryDomainInformation, - PolicyPdAccountInformation, - PolicyAccountDomainInformation, - PolicyLsaServerRoleInformation, - PolicyReplicaSourceInformation, - PolicyDefaultQuotaInformation, - PolicyModificationInformation, - PolicyAuditFullSetInformation, - PolicyAuditFullQueryInformation, - PolicyDnsDomainInformation, - PolicyEfsInformation -} -alias POLICY_INFORMATION_CLASS* PPOLICY_INFORMATION_CLASS; - -enum POLICY_AUDIT_EVENT_TYPE { - AuditCategorySystem, - AuditCategoryLogon, - AuditCategoryObjectAccess, - AuditCategoryPrivilegeUse, - AuditCategoryDetailedTracking, - AuditCategoryPolicyChange, - AuditCategoryAccountManagement, - AuditCategoryDirectoryServiceAccess, - AuditCategoryAccountLogon -} -alias POLICY_AUDIT_EVENT_TYPE* PPOLICY_AUDIT_EVENT_TYPE; - -enum POLICY_LOCAL_INFORMATION_CLASS { - PolicyLocalAuditEventsInformation = 1, - PolicyLocalPdAccountInformation, - PolicyLocalAccountDomainInformation, - PolicyLocalLsaServerRoleInformation, - PolicyLocalReplicaSourceInformation, - PolicyLocalModificationInformation, - PolicyLocalAuditFullSetInformation, - PolicyLocalAuditFullQueryInformation, - PolicyLocalDnsDomainInformation, - PolicyLocalIPSecReferenceInformation, - PolicyLocalMachinePasswordInformation, - PolicyLocalQualityOfServiceInformation, - PolicyLocalPolicyLocationInformation -} -alias POLICY_LOCAL_INFORMATION_CLASS* PPOLICY_LOCAL_INFORMATION_CLASS; - -enum POLICY_DOMAIN_INFORMATION_CLASS { - PolicyDomainIPSecReferenceInformation = 1, - PolicyDomainQualityOfServiceInformation, - PolicyDomainEfsInformation, - PolicyDomainPublicKeyInformation, - PolicyDomainPasswordPolicyInformation, - PolicyDomainLockoutInformation, - PolicyDomainKerberosTicketInformation -} -alias POLICY_DOMAIN_INFORMATION_CLASS* PPOLICY_DOMAIN_INFORMATION_CLASS; - -enum SECURITY_LOGON_TYPE { - Interactive = 2, - Network, - Batch, - Service, - Proxy, - Unlock -} -alias SECURITY_LOGON_TYPE* PSECURITY_LOGON_TYPE; - -enum TRUSTED_INFORMATION_CLASS { - TrustedDomainNameInformation = 1, - TrustedControllersInformation, - TrustedPosixOffsetInformation, - TrustedPasswordInformation, - TrustedDomainInformationBasic, - TrustedDomainInformationEx, - TrustedDomainAuthInformation, - TrustedDomainFullInformation -} -alias TRUSTED_INFORMATION_CLASS* PTRUSTED_INFORMATION_CLASS; - -struct DOMAIN_PASSWORD_INFORMATION { - USHORT MinPasswordLength; - USHORT PasswordHistoryLength; - ULONG PasswordProperties; - LARGE_INTEGER MaxPasswordAge; - LARGE_INTEGER MinPasswordAge; -} -alias DOMAIN_PASSWORD_INFORMATION* PDOMAIN_PASSWORD_INFORMATION; - -struct LSA_ENUMERATION_INFORMATION { - PSID Sid; -} -alias LSA_ENUMERATION_INFORMATION* PLSA_ENUMERATION_INFORMATION; - -alias OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES; -alias OBJECT_ATTRIBUTES* PLSA_OBJECT_ATTRIBUTES; - -struct LSA_TRUST_INFORMATION { - LSA_UNICODE_STRING Name; - PSID Sid; -} -alias LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; -alias LSA_TRUST_INFORMATION* PLSA_TRUST_INFORMATION; -/* in MinGW (further down the code): - * typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; - * but it doesn't look right.... - */ -alias LSA_TRUST_INFORMATION** PTRUSTED_DOMAIN_INFORMATION_BASIC; - -struct LSA_REFERENCED_DOMAIN_LIST { - ULONG Entries; - PLSA_TRUST_INFORMATION Domains; -} -alias LSA_REFERENCED_DOMAIN_LIST* PLSA_REFERENCED_DOMAIN_LIST; - -struct LSA_TRANSLATED_SID { - SID_NAME_USE Use; - ULONG RelativeId; - LONG DomainIndex; -} -alias LSA_TRANSLATED_SID* PLSA_TRANSLATED_SID; - -struct LSA_TRANSLATED_NAME { - SID_NAME_USE Use; - LSA_UNICODE_STRING Name; - LONG DomainIndex; -} -alias LSA_TRANSLATED_NAME* PLSA_TRANSLATED_NAME; - -struct MSV1_0_INTERACTIVE_LOGON { - MSV1_0_LOGON_SUBMIT_TYPE MessageType; - UNICODE_STRING LogonDomainName; - UNICODE_STRING UserName; - UNICODE_STRING Password; -} -alias MSV1_0_INTERACTIVE_LOGON* PMSV1_0_INTERACTIVE_LOGON; - -struct MSV1_0_INTERACTIVE_PROFILE { - MSV1_0_PROFILE_BUFFER_TYPE MessageType; - USHORT LogonCount; - USHORT BadPasswordCount; - LARGE_INTEGER LogonTime; - LARGE_INTEGER LogoffTime; - LARGE_INTEGER KickOffTime; - LARGE_INTEGER PasswordLastSet; - LARGE_INTEGER PasswordCanChange; - LARGE_INTEGER PasswordMustChange; - UNICODE_STRING LogonScript; - UNICODE_STRING HomeDirectory; - UNICODE_STRING FullName; - UNICODE_STRING ProfilePath; - UNICODE_STRING HomeDirectoryDrive; - UNICODE_STRING LogonServer; - ULONG UserFlags; -} -alias MSV1_0_INTERACTIVE_PROFILE* PMSV1_0_INTERACTIVE_PROFILE; - -struct MSV1_0_LM20_LOGON { - MSV1_0_LOGON_SUBMIT_TYPE MessageType; - UNICODE_STRING LogonDomainName; - UNICODE_STRING UserName; - UNICODE_STRING Workstation; - UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; - STRING CaseSensitiveChallengeResponse; - STRING CaseInsensitiveChallengeResponse; - ULONG ParameterControl; -} -alias MSV1_0_LM20_LOGON* PMSV1_0_LM20_LOGON; - -static if (_WIN32_WINNT >= 0x500) { - struct MSV1_0_SUBAUTH_LOGON { - MSV1_0_LOGON_SUBMIT_TYPE MessageType; - UNICODE_STRING LogonDomainName; - UNICODE_STRING UserName; - UNICODE_STRING Workstation; - UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; - STRING AuthenticationInfo1; - STRING AuthenticationInfo2; - ULONG ParameterControl; - ULONG SubAuthPackageId; - } - alias MSV1_0_SUBAUTH_LOGON* PMSV1_0_SUBAUTH_LOGON; -} - -struct MSV1_0_LM20_LOGON_PROFILE { - MSV1_0_PROFILE_BUFFER_TYPE MessageType; - LARGE_INTEGER KickOffTime; - LARGE_INTEGER LogoffTime; - ULONG UserFlags; - UCHAR[MSV1_0_USER_SESSION_KEY_LENGTH] UserSessionKey; - UNICODE_STRING LogonDomainName; - UCHAR[MSV1_0_LANMAN_SESSION_KEY_LENGTH] LanmanSessionKey; - UNICODE_STRING LogonServer; - UNICODE_STRING UserParameters; -} -alias MSV1_0_LM20_LOGON_PROFILE* PMSV1_0_LM20_LOGON_PROFILE; - -struct MSV1_0_SUPPLEMENTAL_CREDENTIAL { - ULONG Version; - ULONG Flags; - UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] LmPassword; - UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] NtPassword; -} -alias MSV1_0_SUPPLEMENTAL_CREDENTIAL* PMSV1_0_SUPPLEMENTAL_CREDENTIAL; - -struct MSV1_0_NTLM3_RESPONSE { - UCHAR[MSV1_0_NTLM3_RESPONSE_LENGTH] Response; - UCHAR RespType; - UCHAR HiRespType; - USHORT Flags; - ULONG MsgWord; - ULONGLONG TimeStamp; - UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeFromClient; - ULONG AvPairsOff; - UCHAR _Buffer; - UCHAR* Buffer() { return &_Buffer; } -} -alias MSV1_0_NTLM3_RESPONSE* PMSV1_0_NTLM3_RESPONSE; - -struct MSV1_0_AV_PAIR { - USHORT AvId; - USHORT AvLen; -} -alias MSV1_0_AV_PAIR* PMSV1_0_AV_PAIR; - -struct MSV1_0_CHANGEPASSWORD_REQUEST { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - UNICODE_STRING DomainName; - UNICODE_STRING AccountName; - UNICODE_STRING OldPassword; - UNICODE_STRING NewPassword; - BOOLEAN Impersonating; -} -alias MSV1_0_CHANGEPASSWORD_REQUEST* PMSV1_0_CHANGEPASSWORD_REQUEST; - -struct MSV1_0_CHANGEPASSWORD_RESPONSE { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - BOOLEAN PasswordInfoValid; - DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; -} -alias MSV1_0_CHANGEPASSWORD_RESPONSE* PMSV1_0_CHANGEPASSWORD_RESPONSE; - -struct MSV1_0_SUBAUTH_REQUEST { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - ULONG SubAuthPackageId; - ULONG SubAuthInfoLength; - PUCHAR SubAuthSubmitBuffer; -} -alias MSV1_0_SUBAUTH_REQUEST* PMSV1_0_SUBAUTH_REQUEST; - -struct MSV1_0_SUBAUTH_RESPONSE { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - ULONG SubAuthInfoLength; - PUCHAR SubAuthReturnBuffer; -} -alias MSV1_0_SUBAUTH_RESPONSE* PMSV1_0_SUBAUTH_RESPONSE; - -const MSV1_0_DERIVECRED_TYPE_SHA1 = 0; - -struct MSV1_0_DERIVECRED_REQUEST { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - LUID LogonId; - ULONG DeriveCredType; - ULONG DeriveCredInfoLength; - UCHAR _DeriveCredSubmitBuffer; - UCHAR* DeriveCredSubmitBuffer() { return &_DeriveCredSubmitBuffer; } -} -alias MSV1_0_DERIVECRED_REQUEST* PMSV1_0_DERIVECRED_REQUEST; - -struct MSV1_0_DERIVECRED_RESPONSE { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - ULONG DeriveCredInfoLength; - UCHAR _DeriveCredReturnBuffer; - UCHAR* DeriveCredReturnBuffer() { return &_DeriveCredReturnBuffer; } -} -alias MSV1_0_DERIVECRED_RESPONSE* PMSV1_0_DERIVECRED_RESPONSE; - -alias uint LSA_ENUMERATION_HANDLE, LSA_OPERATIONAL_MODE, - POLICY_AUDIT_EVENT_OPTIONS; -alias uint* PLSA_ENUMERATION_HANDLE, PLSA_OPERATIONAL_MODE, - PPOLICY_AUDIT_EVENT_OPTIONS; - -struct POLICY_PRIVILEGE_DEFINITION { - LSA_UNICODE_STRING Name; - LUID LocalValue; -} -alias POLICY_PRIVILEGE_DEFINITION* PPOLICY_PRIVILEGE_DEFINITION; - -struct POLICY_AUDIT_LOG_INFO { - ULONG AuditLogPercentFull; - ULONG MaximumLogSize; - LARGE_INTEGER AuditRetentionPeriod; - BOOLEAN AuditLogFullShutdownInProgress; - LARGE_INTEGER TimeToShutdown; - ULONG NextAuditRecordId; -} -alias POLICY_AUDIT_LOG_INFO* PPOLICY_AUDIT_LOG_INFO; - -struct POLICY_AUDIT_EVENTS_INFO { - BOOLEAN AuditingMode; - PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; - ULONG MaximumAuditEventCount; -} -alias POLICY_AUDIT_EVENTS_INFO* PPOLICY_AUDIT_EVENTS_INFO; - -struct POLICY_ACCOUNT_DOMAIN_INFO { - LSA_UNICODE_STRING DomainName; - PSID DomainSid; -} -alias POLICY_ACCOUNT_DOMAIN_INFO* PPOLICY_ACCOUNT_DOMAIN_INFO; - -struct POLICY_PRIMARY_DOMAIN_INFO { - LSA_UNICODE_STRING Name; - PSID Sid; -} -alias POLICY_PRIMARY_DOMAIN_INFO* PPOLICY_PRIMARY_DOMAIN_INFO; - -struct POLICY_DNS_DOMAIN_INFO { - LSA_UNICODE_STRING Name; - LSA_UNICODE_STRING DnsDomainName; - LSA_UNICODE_STRING DnsTreeName; - GUID DomainGuid; - PSID Sid; -} -alias POLICY_DNS_DOMAIN_INFO* PPOLICY_DNS_DOMAIN_INFO; - -struct POLICY_PD_ACCOUNT_INFO { - LSA_UNICODE_STRING Name; -} -alias POLICY_PD_ACCOUNT_INFO* PPOLICY_PD_ACCOUNT_INFO; - -struct POLICY_LSA_SERVER_ROLE_INFO { - POLICY_LSA_SERVER_ROLE LsaServerRole; -} -alias POLICY_LSA_SERVER_ROLE_INFO* PPOLICY_LSA_SERVER_ROLE_INFO; - -struct POLICY_REPLICA_SOURCE_INFO { - LSA_UNICODE_STRING ReplicaSource; - LSA_UNICODE_STRING ReplicaAccountName; -} -alias POLICY_REPLICA_SOURCE_INFO* PPOLICY_REPLICA_SOURCE_INFO; - -struct POLICY_DEFAULT_QUOTA_INFO { - QUOTA_LIMITS QuotaLimits; -} -alias POLICY_DEFAULT_QUOTA_INFO* PPOLICY_DEFAULT_QUOTA_INFO; - -struct POLICY_MODIFICATION_INFO { - LARGE_INTEGER ModifiedId; - LARGE_INTEGER DatabaseCreationTime; -} -alias POLICY_MODIFICATION_INFO* PPOLICY_MODIFICATION_INFO; - -struct POLICY_AUDIT_FULL_SET_INFO { - BOOLEAN ShutDownOnFull; -} -alias POLICY_AUDIT_FULL_SET_INFO* PPOLICY_AUDIT_FULL_SET_INFO; - -struct POLICY_AUDIT_FULL_QUERY_INFO { - BOOLEAN ShutDownOnFull; - BOOLEAN LogIsFull; -} -alias POLICY_AUDIT_FULL_QUERY_INFO* PPOLICY_AUDIT_FULL_QUERY_INFO; - -struct POLICY_EFS_INFO { - ULONG InfoLength; - PUCHAR EfsBlob; -} -alias POLICY_EFS_INFO* PPOLICY_EFS_INFO; - -struct POLICY_LOCAL_IPSEC_REFERENCE_INFO { - LSA_UNICODE_STRING ObjectPath; -} -alias POLICY_LOCAL_IPSEC_REFERENCE_INFO* PPOLICY_LOCAL_IPSEC_REFERENCE_INFO; - -struct POLICY_LOCAL_MACHINE_PASSWORD_INFO { - LARGE_INTEGER PasswordChangeInterval; -} -alias POLICY_LOCAL_MACHINE_PASSWORD_INFO* PPOLICY_LOCAL_MACHINE_PASSWORD_INFO; - -struct POLICY_LOCAL_POLICY_LOCATION_INFO { - ULONG PolicyLocation; -} -alias POLICY_LOCAL_POLICY_LOCATION_INFO* PPOLICY_LOCAL_POLICY_LOCATION_INFO; - -struct POLICY_LOCAL_QUALITY_OF_SERVICE_INFO{ - ULONG QualityOfService; -} -alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO - POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; -alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO* - PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO, - PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; - -struct POLICY_DOMAIN_PUBLIC_KEY_INFO { - ULONG InfoLength; - PUCHAR PublicKeyInfo; -} -alias POLICY_DOMAIN_PUBLIC_KEY_INFO* PPOLICY_DOMAIN_PUBLIC_KEY_INFO; - -struct POLICY_DOMAIN_LOCKOUT_INFO { - LARGE_INTEGER LockoutDuration; - LARGE_INTEGER LockoutObservationWindow; - USHORT LockoutThreshold; -} -alias POLICY_DOMAIN_LOCKOUT_INFO* PPOLICY_DOMAIN_LOCKOUT_INFO; - -struct POLICY_DOMAIN_PASSWORD_INFO { - USHORT MinPasswordLength; - USHORT PasswordHistoryLength; - ULONG PasswordProperties; - LARGE_INTEGER MaxPasswordAge; - LARGE_INTEGER MinPasswordAge; -} -alias POLICY_DOMAIN_PASSWORD_INFO* PPOLICY_DOMAIN_PASSWORD_INFO; - -struct POLICY_DOMAIN_KERBEROS_TICKET_INFO { - ULONG AuthenticationOptions; - LARGE_INTEGER MinTicketAge; - LARGE_INTEGER MaxTicketAge; - LARGE_INTEGER MaxRenewAge; - LARGE_INTEGER ProxyLifetime; - LARGE_INTEGER ForceLogoff; -} -alias POLICY_DOMAIN_KERBEROS_TICKET_INFO* PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; - -mixin DECLARE_HANDLE!("LSA_HANDLE"); -alias LSA_HANDLE* PLSA_HANDLE; - -struct TRUSTED_DOMAIN_NAME_INFO { - LSA_UNICODE_STRING Name; -} -alias TRUSTED_DOMAIN_NAME_INFO* PTRUSTED_DOMAIN_NAME_INFO; - -struct TRUSTED_CONTROLLERS_INFO { - ULONG Entries; - PLSA_UNICODE_STRING Names; -} -alias TRUSTED_CONTROLLERS_INFO* PTRUSTED_CONTROLLERS_INFO; - -struct TRUSTED_POSIX_OFFSET_INFO { - ULONG Offset; -} -alias TRUSTED_POSIX_OFFSET_INFO* PTRUSTED_POSIX_OFFSET_INFO; - -struct TRUSTED_PASSWORD_INFO { - LSA_UNICODE_STRING Password; - LSA_UNICODE_STRING OldPassword; -} -alias TRUSTED_PASSWORD_INFO* PTRUSTED_PASSWORD_INFO; - -struct TRUSTED_DOMAIN_INFORMATION_EX { - LSA_UNICODE_STRING Name; - LSA_UNICODE_STRING FlatName; - PSID Sid; - ULONG TrustDirection; - ULONG TrustType; - ULONG TrustAttributes; -} -alias TRUSTED_DOMAIN_INFORMATION_EX* PTRUSTED_DOMAIN_INFORMATION_EX; - -struct LSA_AUTH_INFORMATION { - LARGE_INTEGER LastUpdateTime; - ULONG AuthType; - ULONG AuthInfoLength; - PUCHAR AuthInfo; -} -alias LSA_AUTH_INFORMATION* PLSA_AUTH_INFORMATION; - -struct TRUSTED_DOMAIN_AUTH_INFORMATION { - ULONG IncomingAuthInfos; - PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; - PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; - ULONG OutgoingAuthInfos; - PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; - PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; -} -alias TRUSTED_DOMAIN_AUTH_INFORMATION* PTRUSTED_DOMAIN_AUTH_INFORMATION; - -struct TRUSTED_DOMAIN_FULL_INFORMATION { - TRUSTED_DOMAIN_INFORMATION_EX Information; - TRUSTED_POSIX_OFFSET_INFO PosixOffset; - TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; -} -alias TRUSTED_DOMAIN_FULL_INFORMATION* PTRUSTED_DOMAIN_FULL_INFORMATION; - -extern (Windows) { - NTSTATUS LsaAddAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING, - ULONG); - NTSTATUS LsaCallAuthenticationPackage(HANDLE, ULONG, PVOID, ULONG, - PVOID*, PULONG, PNTSTATUS); - NTSTATUS LsaClose(LSA_HANDLE); - NTSTATUS LsaConnectUntrusted(PHANDLE); - NTSTATUS LsaCreateTrustedDomainEx(LSA_HANDLE, - PTRUSTED_DOMAIN_INFORMATION_EX, PTRUSTED_DOMAIN_AUTH_INFORMATION, - ACCESS_MASK, PLSA_HANDLE); - NTSTATUS LsaDeleteTrustedDomain(LSA_HANDLE, PSID); - NTSTATUS LsaDeregisterLogonProcess(HANDLE); - NTSTATUS LsaEnumerateAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING*, - PULONG); - NTSTATUS LsaEnumerateAccountsWithUserRight(LSA_HANDLE, - PLSA_UNICODE_STRING, PVOID*, PULONG); - NTSTATUS LsaEnumerateTrustedDomains(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, - PVOID*, ULONG, PULONG); - NTSTATUS LsaEnumerateTrustedDomainsEx(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, - TRUSTED_INFORMATION_CLASS, PVOID*, ULONG, PULONG); - NTSTATUS LsaFreeMemory(PVOID); - NTSTATUS LsaFreeReturnBuffer(PVOID); - NTSTATUS LsaLogonUser(HANDLE, PLSA_STRING, SECURITY_LOGON_TYPE, ULONG, - PVOID, ULONG, PTOKEN_GROUPS, PTOKEN_SOURCE, PVOID*, PULONG, PLUID, - PHANDLE, PQUOTA_LIMITS, PNTSTATUS); - NTSTATUS LsaLookupAuthenticationPackage(HANDLE, PLSA_STRING, PULONG); - NTSTATUS LsaLookupNames(LSA_HANDLE, ULONG, PLSA_UNICODE_STRING, - PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_SID*); - NTSTATUS LsaLookupSids(LSA_HANDLE, ULONG, PSID*, - PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_NAME*); - ULONG LsaNtStatusToWinError(NTSTATUS); - NTSTATUS LsaOpenPolicy(PLSA_UNICODE_STRING, PLSA_OBJECT_ATTRIBUTES, - ACCESS_MASK, PLSA_HANDLE); - NTSTATUS LsaQueryDomainInformationPolicy(LSA_HANDLE, - POLICY_DOMAIN_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaQueryInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, - PVOID*); - NTSTATUS LsaQueryLocalInformationPolicy(LSA_HANDLE, - POLICY_LOCAL_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaQueryTrustedDomainInfo(LSA_HANDLE, PSID, - TRUSTED_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaQueryTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, - TRUSTED_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaRegisterLogonProcess(PLSA_STRING, PHANDLE, - PLSA_OPERATIONAL_MODE); - NTSTATUS LsaRemoveAccountRights(LSA_HANDLE, PSID, BOOLEAN, - PLSA_UNICODE_STRING, ULONG); - NTSTATUS LsaRetrievePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, - PLSA_UNICODE_STRING*); - NTSTATUS LsaSetDomainInformationPolicy(LSA_HANDLE, - POLICY_DOMAIN_INFORMATION_CLASS, PVOID); - NTSTATUS LsaSetInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, - PVOID); - NTSTATUS LsaSetLocalInformationPolicy(LSA_HANDLE, - POLICY_LOCAL_INFORMATION_CLASS, PVOID); - NTSTATUS LsaSetTrustedDomainInformation(LSA_HANDLE, PSID, - TRUSTED_INFORMATION_CLASS, PVOID); - NTSTATUS LsaSetTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, - TRUSTED_INFORMATION_CLASS, PVOID); - NTSTATUS LsaStorePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, - PLSA_UNICODE_STRING); -} - -alias NTSTATUS function(PUNICODE_STRING, ULONG, PUNICODE_STRING) - PSAM_PASSWORD_NOTIFICATION_ROUTINE; -alias BOOLEAN function() PSAM_INIT_NOTIFICATION_ROUTINE; -alias BOOLEAN function(PUNICODE_STRING, PUNICODE_STRING, - PUNICODE_STRING, BOOLEAN) PSAM_PASSWORD_FILTER_ROUTINE; +/***********************************************************************\ +* ntsecapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ntsecapi; + +private import + win32.basetyps, win32.ntdef, win32.windef, win32.winnt, win32.w32api; + +// FIXME: check types and grouping of constants +// FIXME: check Windows version support + +const KERB_WRAP_NO_ENCRYPT = 0x80000001; + +const LOGON_GUEST = 0x00000001; +const LOGON_NOENCRYPTION = 0x00000002; +const LOGON_CACHED_ACCOUNT = 0x00000004; +const LOGON_USED_LM_PASSWORD = 0x00000008; +const LOGON_EXTRA_SIDS = 0x00000020; +const LOGON_SUBAUTH_SESSION_KEY = 0x00000040; +const LOGON_SERVER_TRUST_ACCOUNT = 0x00000080; +const LOGON_NTLMV2_ENABLED = 0x00000100; +const LOGON_RESOURCE_GROUPS = 0x00000200; +const LOGON_PROFILE_PATH_RETURNED = 0x00000400; +const LOGON_GRACE_LOGON = 0x01000000; + +enum { + LSA_MODE_PASSWORD_PROTECTED = 1, + LSA_MODE_INDIVIDUAL_ACCOUNTS, + LSA_MODE_MANDATORY_ACCESS, + LSA_MODE_LOG_FULL +} + +bool LSA_SUCCESS(int x) { return x >= 0; } + +/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned + * aliases. Should we merge them anyway? + */ +const char[] MICROSOFT_KERBEROS_NAME_A = "Kerberos"; +const wchar[] MICROSOFT_KERBEROS_NAME_W = "Kerberos"; +const char[] MSV1_0_PACKAGE_NAME = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; +const wchar[] MSV1_0_PACKAGE_NAMEW = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; + +const MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT = 32; +const MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT = 2048; +const MSV1_0_CLEARTEXT_PASSWORD_ALLOWED = 2; +const MSV1_0_CRED_LM_PRESENT = 1; +const MSV1_0_CRED_NT_PRESENT = 2; +const MSV1_0_CRED_VERSION = 0; +const MSV1_0_DONT_TRY_GUEST_ACCOUNT = 16; +const MSV1_0_MAX_NTLM3_LIFE = 1800; +const MSV1_0_MAX_AVL_SIZE = 64000; +const MSV1_0_MNS_LOGON = 16777216; + +const size_t + MSV1_0_CHALLENGE_LENGTH = 8, + MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8, + MSV1_0_NTLM3_RESPONSE_LENGTH = 16, + MSV1_0_NTLM3_OWF_LENGTH = 16, + MSV1_0_NTLM3_INPUT_LENGTH = MSV1_0_NTLM3_RESPONSE.sizeof + - MSV1_0_NTLM3_RESPONSE_LENGTH, + MSV1_0_OWF_PASSWORD_LENGTH = 16, + MSV1_0_PACKAGE_NAMEW_LENGTH = MSV1_0_PACKAGE_NAMEW.sizeof + - WCHAR.sizeof; + +const MSV1_0_RETURN_USER_PARAMETERS = 8; +const MSV1_0_RETURN_PASSWORD_EXPIRY = 64; +const MSV1_0_RETURN_PROFILE_PATH = 512; +const MSV1_0_SUBAUTHENTICATION_DLL_EX = 1048576; +const MSV1_0_SUBAUTHENTICATION_DLL = 0xff000000; +const MSV1_0_SUBAUTHENTICATION_DLL_SHIFT = 24; +const MSV1_0_SUBAUTHENTICATION_DLL_RAS = 2; +const MSV1_0_SUBAUTHENTICATION_DLL_IIS = 132; +const MSV1_0_SUBAUTHENTICATION_FLAGS = 0xff000000; +const MSV1_0_TRY_GUEST_ACCOUNT_ONLY = 256; +const MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY = 1024; +const MSV1_0_UPDATE_LOGON_STATISTICS = 4; +const MSV1_0_USE_CLIENT_CHALLENGE = 128; +const MSV1_0_USER_SESSION_KEY_LENGTH = 16; + +const char[] + MSV1_0_SUBAUTHENTICATION_KEY + = `System\CurrentControlSet\Control\Lsa\MSV1_0`, + MSV1_0_SUBAUTHENTICATION_VALUE = "Auth"; + +const ACCESS_MASK + POLICY_VIEW_LOCAL_INFORMATION = 0x0001, + POLICY_VIEW_AUDIT_INFORMATION = 0x0002, + POLICY_GET_PRIVATE_INFORMATION = 0x0004, + POLICY_TRUST_ADMIN = 0x0008, + POLICY_CREATE_ACCOUNT = 0x0010, + POLICY_CREATE_SECRET = 0x0020, + POLICY_CREATE_PRIVILEGE = 0x0040, + POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x0080, + POLICY_SET_AUDIT_REQUIREMENTS = 0x0100, + POLICY_AUDIT_LOG_ADMIN = 0x0200, + POLICY_SERVER_ADMIN = 0x0400, + POLICY_LOOKUP_NAMES = 0x0800, + + POLICY_READ = STANDARD_RIGHTS_READ | 0x0006, + POLICY_WRITE = STANDARD_RIGHTS_WRITE | 0x07F8, + POLICY_EXECUTE = STANDARD_RIGHTS_EXECUTE | 0x0801, + POLICY_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 0x0FFF; + +const POLICY_AUDIT_EVENT_UNCHANGED = 0; +const POLICY_AUDIT_EVENT_SUCCESS = 1; +const POLICY_AUDIT_EVENT_FAILURE = 2; +const POLICY_AUDIT_EVENT_NONE = 4; +const POLICY_AUDIT_EVENT_MASK = 7; + +enum { + POLICY_LOCATION_LOCAL = 1, + POLICY_LOCATION_DS +} + +enum : uint { + POLICY_MACHINE_POLICY_LOCAL = 0, + POLICY_MACHINE_POLICY_DEFAULTED, + POLICY_MACHINE_POLICY_EXPLICIT, + POLICY_MACHINE_POLICY_UNKNOWN = 0xFFFFFFFF +} + + +const POLICY_QOS_SCHANEL_REQUIRED = 0x0001; +const POLICY_QOS_OUTBOUND_INTEGRITY = 0x0002; +const POLICY_QOS_OUTBOUND_CONFIDENTIALITY = 0x0004; +const POLICY_QOS_INBOUND_INTEGREITY = 0x0008; +const POLICY_QOS_INBOUND_CONFIDENTIALITY = 0x0010; +const POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE = 0x0020; +const POLICY_QOS_RAS_SERVER_ALLOWED = 0x0040; +const POLICY_QOS_DHCP_SERVER_ALLOWD = 0x0080; + +const POLICY_KERBEROS_FORWARDABLE = 1; +const POLICY_KERBEROS_PROXYABLE = 2; +const POLICY_KERBEROS_RENEWABLE = 4; +const POLICY_KERBEROS_POSTDATEABLE = 8; + +const char[] + SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = "PasswordChangeNotify", + SAM_INIT_NOTIFICATION_ROUTINE = "InitializeChangeNotify", + SAM_PASSWORD_FILTER_ROUTINE = "PasswordFilter"; + +const TCHAR[] + SE_INTERACTIVE_LOGON_NAME = "SeInteractiveLogonRight", + SE_NETWORK_LOGON_NAME = "SeNetworkLogonRight", + SE_BATCH_LOGON_NAME = "SeBatchLogonRight", + SE_SERVICE_LOGON_NAME = "SeServiceLogonRight"; + +enum { + TRUST_ATTRIBUTE_NON_TRANSITIVE = 1, + TRUST_ATTRIBUTE_UPLEVEL_ONLY = 2, + TRUST_ATTRIBUTE_TREE_PARENT = 4194304, + TRUST_ATTRIBUTES_VALID = -16580609 +} + +enum { + TRUST_AUTH_TYPE_NONE, + TRUST_AUTH_TYPE_NT4OWF, + TRUST_AUTH_TYPE_CLEAR +} + +enum { + TRUST_DIRECTION_DISABLED, + TRUST_DIRECTION_INBOUND, + TRUST_DIRECTION_OUTBOUND, + TRUST_DIRECTION_BIDIRECTIONAL +} + +enum { + TRUST_TYPE_DOWNLEVEL = 1, + TRUST_TYPE_UPLEVEL, + TRUST_TYPE_MIT, + TRUST_TYPE_DCE +} + +alias UNICODE_STRING LSA_UNICODE_STRING; +alias UNICODE_STRING* PLSA_UNICODE_STRING; +alias STRING LSA_STRING; +alias STRING* PLSA_STRING; + +enum MSV1_0_LOGON_SUBMIT_TYPE { + MsV1_0InteractiveLogon = 2, + MsV1_0Lm20Logon, + MsV1_0NetworkLogon, + MsV1_0SubAuthLogon, + MsV1_0WorkstationUnlockLogon = 7 +} +alias MSV1_0_LOGON_SUBMIT_TYPE* PMSV1_0_LOGON_SUBMIT_TYPE; + +enum MSV1_0_PROFILE_BUFFER_TYPE { + MsV1_0InteractiveProfile = 2, + MsV1_0Lm20LogonProfile, + MsV1_0SmartCardProfile +} +alias MSV1_0_PROFILE_BUFFER_TYPE* PMSV1_0_PROFILE_BUFFER_TYPE; + + +enum MSV1_0_AVID { + MsvAvEOL, + MsvAvNbComputerName, + MsvAvNbDomainName, + MsvAvDnsComputerName, + MsvAvDnsDomainName +} + +enum MSV1_0_PROTOCOL_MESSAGE_TYPE { + MsV1_0Lm20ChallengeRequest = 0, + MsV1_0Lm20GetChallengeResponse, + MsV1_0EnumerateUsers, + MsV1_0GetUserInfo, + MsV1_0ReLogonUsers, + MsV1_0ChangePassword, + MsV1_0ChangeCachedPassword, + MsV1_0GenericPassthrough, + MsV1_0CacheLogon, + MsV1_0SubAuth, + MsV1_0DeriveCredential, + MsV1_0CacheLookup +} +alias MSV1_0_PROTOCOL_MESSAGE_TYPE* PMSV1_0_PROTOCOL_MESSAGE_TYPE; + +enum POLICY_LSA_SERVER_ROLE { + PolicyServerRoleBackup = 2, + PolicyServerRolePrimary +} +alias POLICY_LSA_SERVER_ROLE* PPOLICY_LSA_SERVER_ROLE; + +enum POLICY_SERVER_ENABLE_STATE { + PolicyServerEnabled = 2, + PolicyServerDisabled +} +alias POLICY_SERVER_ENABLE_STATE* PPOLICY_SERVER_ENABLE_STATE; + +enum POLICY_INFORMATION_CLASS { + PolicyAuditLogInformation = 1, + PolicyAuditEventsInformation, + PolicyPrimaryDomainInformation, + PolicyPdAccountInformation, + PolicyAccountDomainInformation, + PolicyLsaServerRoleInformation, + PolicyReplicaSourceInformation, + PolicyDefaultQuotaInformation, + PolicyModificationInformation, + PolicyAuditFullSetInformation, + PolicyAuditFullQueryInformation, + PolicyDnsDomainInformation, + PolicyEfsInformation +} +alias POLICY_INFORMATION_CLASS* PPOLICY_INFORMATION_CLASS; + +enum POLICY_AUDIT_EVENT_TYPE { + AuditCategorySystem, + AuditCategoryLogon, + AuditCategoryObjectAccess, + AuditCategoryPrivilegeUse, + AuditCategoryDetailedTracking, + AuditCategoryPolicyChange, + AuditCategoryAccountManagement, + AuditCategoryDirectoryServiceAccess, + AuditCategoryAccountLogon +} +alias POLICY_AUDIT_EVENT_TYPE* PPOLICY_AUDIT_EVENT_TYPE; + +enum POLICY_LOCAL_INFORMATION_CLASS { + PolicyLocalAuditEventsInformation = 1, + PolicyLocalPdAccountInformation, + PolicyLocalAccountDomainInformation, + PolicyLocalLsaServerRoleInformation, + PolicyLocalReplicaSourceInformation, + PolicyLocalModificationInformation, + PolicyLocalAuditFullSetInformation, + PolicyLocalAuditFullQueryInformation, + PolicyLocalDnsDomainInformation, + PolicyLocalIPSecReferenceInformation, + PolicyLocalMachinePasswordInformation, + PolicyLocalQualityOfServiceInformation, + PolicyLocalPolicyLocationInformation +} +alias POLICY_LOCAL_INFORMATION_CLASS* PPOLICY_LOCAL_INFORMATION_CLASS; + +enum POLICY_DOMAIN_INFORMATION_CLASS { + PolicyDomainIPSecReferenceInformation = 1, + PolicyDomainQualityOfServiceInformation, + PolicyDomainEfsInformation, + PolicyDomainPublicKeyInformation, + PolicyDomainPasswordPolicyInformation, + PolicyDomainLockoutInformation, + PolicyDomainKerberosTicketInformation +} +alias POLICY_DOMAIN_INFORMATION_CLASS* PPOLICY_DOMAIN_INFORMATION_CLASS; + +enum SECURITY_LOGON_TYPE { + Interactive = 2, + Network, + Batch, + Service, + Proxy, + Unlock +} +alias SECURITY_LOGON_TYPE* PSECURITY_LOGON_TYPE; + +enum TRUSTED_INFORMATION_CLASS { + TrustedDomainNameInformation = 1, + TrustedControllersInformation, + TrustedPosixOffsetInformation, + TrustedPasswordInformation, + TrustedDomainInformationBasic, + TrustedDomainInformationEx, + TrustedDomainAuthInformation, + TrustedDomainFullInformation +} +alias TRUSTED_INFORMATION_CLASS* PTRUSTED_INFORMATION_CLASS; + +struct DOMAIN_PASSWORD_INFORMATION { + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; +} +alias DOMAIN_PASSWORD_INFORMATION* PDOMAIN_PASSWORD_INFORMATION; + +struct LSA_ENUMERATION_INFORMATION { + PSID Sid; +} +alias LSA_ENUMERATION_INFORMATION* PLSA_ENUMERATION_INFORMATION; + +alias OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES; +alias OBJECT_ATTRIBUTES* PLSA_OBJECT_ATTRIBUTES; + +struct LSA_TRUST_INFORMATION { + LSA_UNICODE_STRING Name; + PSID Sid; +} +alias LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; +alias LSA_TRUST_INFORMATION* PLSA_TRUST_INFORMATION; +/* in MinGW (further down the code): + * typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; + * but it doesn't look right.... + */ +alias LSA_TRUST_INFORMATION** PTRUSTED_DOMAIN_INFORMATION_BASIC; + +struct LSA_REFERENCED_DOMAIN_LIST { + ULONG Entries; + PLSA_TRUST_INFORMATION Domains; +} +alias LSA_REFERENCED_DOMAIN_LIST* PLSA_REFERENCED_DOMAIN_LIST; + +struct LSA_TRANSLATED_SID { + SID_NAME_USE Use; + ULONG RelativeId; + LONG DomainIndex; +} +alias LSA_TRANSLATED_SID* PLSA_TRANSLATED_SID; + +struct LSA_TRANSLATED_NAME { + SID_NAME_USE Use; + LSA_UNICODE_STRING Name; + LONG DomainIndex; +} +alias LSA_TRANSLATED_NAME* PLSA_TRANSLATED_NAME; + +struct MSV1_0_INTERACTIVE_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Password; +} +alias MSV1_0_INTERACTIVE_LOGON* PMSV1_0_INTERACTIVE_LOGON; + +struct MSV1_0_INTERACTIVE_PROFILE { + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + USHORT LogonCount; + USHORT BadPasswordCount; + LARGE_INTEGER LogonTime; + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING LogonScript; + UNICODE_STRING HomeDirectory; + UNICODE_STRING FullName; + UNICODE_STRING ProfilePath; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING LogonServer; + ULONG UserFlags; +} +alias MSV1_0_INTERACTIVE_PROFILE* PMSV1_0_INTERACTIVE_PROFILE; + +struct MSV1_0_LM20_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; + STRING CaseSensitiveChallengeResponse; + STRING CaseInsensitiveChallengeResponse; + ULONG ParameterControl; +} +alias MSV1_0_LM20_LOGON* PMSV1_0_LM20_LOGON; + +//static if (_WIN32_WINNT >= 0x500) { + struct MSV1_0_SUBAUTH_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; + STRING AuthenticationInfo1; + STRING AuthenticationInfo2; + ULONG ParameterControl; + ULONG SubAuthPackageId; + } + alias MSV1_0_SUBAUTH_LOGON* PMSV1_0_SUBAUTH_LOGON; +//} + +struct MSV1_0_LM20_LOGON_PROFILE { + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER LogoffTime; + ULONG UserFlags; + UCHAR[MSV1_0_USER_SESSION_KEY_LENGTH] UserSessionKey; + UNICODE_STRING LogonDomainName; + UCHAR[MSV1_0_LANMAN_SESSION_KEY_LENGTH] LanmanSessionKey; + UNICODE_STRING LogonServer; + UNICODE_STRING UserParameters; +} +alias MSV1_0_LM20_LOGON_PROFILE* PMSV1_0_LM20_LOGON_PROFILE; + +struct MSV1_0_SUPPLEMENTAL_CREDENTIAL { + ULONG Version; + ULONG Flags; + UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] LmPassword; + UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] NtPassword; +} +alias MSV1_0_SUPPLEMENTAL_CREDENTIAL* PMSV1_0_SUPPLEMENTAL_CREDENTIAL; + +struct MSV1_0_NTLM3_RESPONSE { + UCHAR[MSV1_0_NTLM3_RESPONSE_LENGTH] Response; + UCHAR RespType; + UCHAR HiRespType; + USHORT Flags; + ULONG MsgWord; + ULONGLONG TimeStamp; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeFromClient; + ULONG AvPairsOff; + UCHAR _Buffer; + UCHAR* Buffer() { return &_Buffer; } +} +alias MSV1_0_NTLM3_RESPONSE* PMSV1_0_NTLM3_RESPONSE; + +struct MSV1_0_AV_PAIR { + USHORT AvId; + USHORT AvLen; +} +alias MSV1_0_AV_PAIR* PMSV1_0_AV_PAIR; + +struct MSV1_0_CHANGEPASSWORD_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + UNICODE_STRING DomainName; + UNICODE_STRING AccountName; + UNICODE_STRING OldPassword; + UNICODE_STRING NewPassword; + BOOLEAN Impersonating; +} +alias MSV1_0_CHANGEPASSWORD_REQUEST* PMSV1_0_CHANGEPASSWORD_REQUEST; + +struct MSV1_0_CHANGEPASSWORD_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + BOOLEAN PasswordInfoValid; + DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; +} +alias MSV1_0_CHANGEPASSWORD_RESPONSE* PMSV1_0_CHANGEPASSWORD_RESPONSE; + +struct MSV1_0_SUBAUTH_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthPackageId; + ULONG SubAuthInfoLength; + PUCHAR SubAuthSubmitBuffer; +} +alias MSV1_0_SUBAUTH_REQUEST* PMSV1_0_SUBAUTH_REQUEST; + +struct MSV1_0_SUBAUTH_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthInfoLength; + PUCHAR SubAuthReturnBuffer; +} +alias MSV1_0_SUBAUTH_RESPONSE* PMSV1_0_SUBAUTH_RESPONSE; + +const MSV1_0_DERIVECRED_TYPE_SHA1 = 0; + +struct MSV1_0_DERIVECRED_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + LUID LogonId; + ULONG DeriveCredType; + ULONG DeriveCredInfoLength; + UCHAR _DeriveCredSubmitBuffer; + UCHAR* DeriveCredSubmitBuffer() { return &_DeriveCredSubmitBuffer; } +} +alias MSV1_0_DERIVECRED_REQUEST* PMSV1_0_DERIVECRED_REQUEST; + +struct MSV1_0_DERIVECRED_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG DeriveCredInfoLength; + UCHAR _DeriveCredReturnBuffer; + UCHAR* DeriveCredReturnBuffer() { return &_DeriveCredReturnBuffer; } +} +alias MSV1_0_DERIVECRED_RESPONSE* PMSV1_0_DERIVECRED_RESPONSE; + +alias uint LSA_ENUMERATION_HANDLE, LSA_OPERATIONAL_MODE, + POLICY_AUDIT_EVENT_OPTIONS; +alias uint* PLSA_ENUMERATION_HANDLE, PLSA_OPERATIONAL_MODE, + PPOLICY_AUDIT_EVENT_OPTIONS; + +struct POLICY_PRIVILEGE_DEFINITION { + LSA_UNICODE_STRING Name; + LUID LocalValue; +} +alias POLICY_PRIVILEGE_DEFINITION* PPOLICY_PRIVILEGE_DEFINITION; + +struct POLICY_AUDIT_LOG_INFO { + ULONG AuditLogPercentFull; + ULONG MaximumLogSize; + LARGE_INTEGER AuditRetentionPeriod; + BOOLEAN AuditLogFullShutdownInProgress; + LARGE_INTEGER TimeToShutdown; + ULONG NextAuditRecordId; +} +alias POLICY_AUDIT_LOG_INFO* PPOLICY_AUDIT_LOG_INFO; + +struct POLICY_AUDIT_EVENTS_INFO { + BOOLEAN AuditingMode; + PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; + ULONG MaximumAuditEventCount; +} +alias POLICY_AUDIT_EVENTS_INFO* PPOLICY_AUDIT_EVENTS_INFO; + +struct POLICY_ACCOUNT_DOMAIN_INFO { + LSA_UNICODE_STRING DomainName; + PSID DomainSid; +} +alias POLICY_ACCOUNT_DOMAIN_INFO* PPOLICY_ACCOUNT_DOMAIN_INFO; + +struct POLICY_PRIMARY_DOMAIN_INFO { + LSA_UNICODE_STRING Name; + PSID Sid; +} +alias POLICY_PRIMARY_DOMAIN_INFO* PPOLICY_PRIMARY_DOMAIN_INFO; + +struct POLICY_DNS_DOMAIN_INFO { + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING DnsDomainName; + LSA_UNICODE_STRING DnsTreeName; + GUID DomainGuid; + PSID Sid; +} +alias POLICY_DNS_DOMAIN_INFO* PPOLICY_DNS_DOMAIN_INFO; + +struct POLICY_PD_ACCOUNT_INFO { + LSA_UNICODE_STRING Name; +} +alias POLICY_PD_ACCOUNT_INFO* PPOLICY_PD_ACCOUNT_INFO; + +struct POLICY_LSA_SERVER_ROLE_INFO { + POLICY_LSA_SERVER_ROLE LsaServerRole; +} +alias POLICY_LSA_SERVER_ROLE_INFO* PPOLICY_LSA_SERVER_ROLE_INFO; + +struct POLICY_REPLICA_SOURCE_INFO { + LSA_UNICODE_STRING ReplicaSource; + LSA_UNICODE_STRING ReplicaAccountName; +} +alias POLICY_REPLICA_SOURCE_INFO* PPOLICY_REPLICA_SOURCE_INFO; + +struct POLICY_DEFAULT_QUOTA_INFO { + QUOTA_LIMITS QuotaLimits; +} +alias POLICY_DEFAULT_QUOTA_INFO* PPOLICY_DEFAULT_QUOTA_INFO; + +struct POLICY_MODIFICATION_INFO { + LARGE_INTEGER ModifiedId; + LARGE_INTEGER DatabaseCreationTime; +} +alias POLICY_MODIFICATION_INFO* PPOLICY_MODIFICATION_INFO; + +struct POLICY_AUDIT_FULL_SET_INFO { + BOOLEAN ShutDownOnFull; +} +alias POLICY_AUDIT_FULL_SET_INFO* PPOLICY_AUDIT_FULL_SET_INFO; + +struct POLICY_AUDIT_FULL_QUERY_INFO { + BOOLEAN ShutDownOnFull; + BOOLEAN LogIsFull; +} +alias POLICY_AUDIT_FULL_QUERY_INFO* PPOLICY_AUDIT_FULL_QUERY_INFO; + +struct POLICY_EFS_INFO { + ULONG InfoLength; + PUCHAR EfsBlob; +} +alias POLICY_EFS_INFO* PPOLICY_EFS_INFO; + +struct POLICY_LOCAL_IPSEC_REFERENCE_INFO { + LSA_UNICODE_STRING ObjectPath; +} +alias POLICY_LOCAL_IPSEC_REFERENCE_INFO* PPOLICY_LOCAL_IPSEC_REFERENCE_INFO; + +struct POLICY_LOCAL_MACHINE_PASSWORD_INFO { + LARGE_INTEGER PasswordChangeInterval; +} +alias POLICY_LOCAL_MACHINE_PASSWORD_INFO* PPOLICY_LOCAL_MACHINE_PASSWORD_INFO; + +struct POLICY_LOCAL_POLICY_LOCATION_INFO { + ULONG PolicyLocation; +} +alias POLICY_LOCAL_POLICY_LOCATION_INFO* PPOLICY_LOCAL_POLICY_LOCATION_INFO; + +struct POLICY_LOCAL_QUALITY_OF_SERVICE_INFO{ + ULONG QualityOfService; +} +alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO + POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; +alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO* + PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO, + PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; + +struct POLICY_DOMAIN_PUBLIC_KEY_INFO { + ULONG InfoLength; + PUCHAR PublicKeyInfo; +} +alias POLICY_DOMAIN_PUBLIC_KEY_INFO* PPOLICY_DOMAIN_PUBLIC_KEY_INFO; + +struct POLICY_DOMAIN_LOCKOUT_INFO { + LARGE_INTEGER LockoutDuration; + LARGE_INTEGER LockoutObservationWindow; + USHORT LockoutThreshold; +} +alias POLICY_DOMAIN_LOCKOUT_INFO* PPOLICY_DOMAIN_LOCKOUT_INFO; + +struct POLICY_DOMAIN_PASSWORD_INFO { + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; +} +alias POLICY_DOMAIN_PASSWORD_INFO* PPOLICY_DOMAIN_PASSWORD_INFO; + +struct POLICY_DOMAIN_KERBEROS_TICKET_INFO { + ULONG AuthenticationOptions; + LARGE_INTEGER MinTicketAge; + LARGE_INTEGER MaxTicketAge; + LARGE_INTEGER MaxRenewAge; + LARGE_INTEGER ProxyLifetime; + LARGE_INTEGER ForceLogoff; +} +alias POLICY_DOMAIN_KERBEROS_TICKET_INFO* PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; + +mixin DECLARE_HANDLE!("LSA_HANDLE"); +alias LSA_HANDLE* PLSA_HANDLE; + +struct TRUSTED_DOMAIN_NAME_INFO { + LSA_UNICODE_STRING Name; +} +alias TRUSTED_DOMAIN_NAME_INFO* PTRUSTED_DOMAIN_NAME_INFO; + +struct TRUSTED_CONTROLLERS_INFO { + ULONG Entries; + PLSA_UNICODE_STRING Names; +} +alias TRUSTED_CONTROLLERS_INFO* PTRUSTED_CONTROLLERS_INFO; + +struct TRUSTED_POSIX_OFFSET_INFO { + ULONG Offset; +} +alias TRUSTED_POSIX_OFFSET_INFO* PTRUSTED_POSIX_OFFSET_INFO; + +struct TRUSTED_PASSWORD_INFO { + LSA_UNICODE_STRING Password; + LSA_UNICODE_STRING OldPassword; +} +alias TRUSTED_PASSWORD_INFO* PTRUSTED_PASSWORD_INFO; + +struct TRUSTED_DOMAIN_INFORMATION_EX { + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING FlatName; + PSID Sid; + ULONG TrustDirection; + ULONG TrustType; + ULONG TrustAttributes; +} +alias TRUSTED_DOMAIN_INFORMATION_EX* PTRUSTED_DOMAIN_INFORMATION_EX; + +struct LSA_AUTH_INFORMATION { + LARGE_INTEGER LastUpdateTime; + ULONG AuthType; + ULONG AuthInfoLength; + PUCHAR AuthInfo; +} +alias LSA_AUTH_INFORMATION* PLSA_AUTH_INFORMATION; + +struct TRUSTED_DOMAIN_AUTH_INFORMATION { + ULONG IncomingAuthInfos; + PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; + PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; + ULONG OutgoingAuthInfos; + PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; + PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; +} +alias TRUSTED_DOMAIN_AUTH_INFORMATION* PTRUSTED_DOMAIN_AUTH_INFORMATION; + +struct TRUSTED_DOMAIN_FULL_INFORMATION { + TRUSTED_DOMAIN_INFORMATION_EX Information; + TRUSTED_POSIX_OFFSET_INFO PosixOffset; + TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; +} +alias TRUSTED_DOMAIN_FULL_INFORMATION* PTRUSTED_DOMAIN_FULL_INFORMATION; + +extern (Windows) { + NTSTATUS LsaAddAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING, + ULONG); + NTSTATUS LsaCallAuthenticationPackage(HANDLE, ULONG, PVOID, ULONG, + PVOID*, PULONG, PNTSTATUS); + NTSTATUS LsaClose(LSA_HANDLE); + NTSTATUS LsaConnectUntrusted(PHANDLE); + NTSTATUS LsaCreateTrustedDomainEx(LSA_HANDLE, + PTRUSTED_DOMAIN_INFORMATION_EX, PTRUSTED_DOMAIN_AUTH_INFORMATION, + ACCESS_MASK, PLSA_HANDLE); + NTSTATUS LsaDeleteTrustedDomain(LSA_HANDLE, PSID); + NTSTATUS LsaDeregisterLogonProcess(HANDLE); + NTSTATUS LsaEnumerateAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING*, + PULONG); + NTSTATUS LsaEnumerateAccountsWithUserRight(LSA_HANDLE, + PLSA_UNICODE_STRING, PVOID*, PULONG); + NTSTATUS LsaEnumerateTrustedDomains(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, + PVOID*, ULONG, PULONG); + NTSTATUS LsaEnumerateTrustedDomainsEx(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, + TRUSTED_INFORMATION_CLASS, PVOID*, ULONG, PULONG); + NTSTATUS LsaFreeMemory(PVOID); + NTSTATUS LsaFreeReturnBuffer(PVOID); + NTSTATUS LsaLogonUser(HANDLE, PLSA_STRING, SECURITY_LOGON_TYPE, ULONG, + PVOID, ULONG, PTOKEN_GROUPS, PTOKEN_SOURCE, PVOID*, PULONG, PLUID, + PHANDLE, PQUOTA_LIMITS, PNTSTATUS); + NTSTATUS LsaLookupAuthenticationPackage(HANDLE, PLSA_STRING, PULONG); + NTSTATUS LsaLookupNames(LSA_HANDLE, ULONG, PLSA_UNICODE_STRING, + PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_SID*); + NTSTATUS LsaLookupSids(LSA_HANDLE, ULONG, PSID*, + PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_NAME*); + ULONG LsaNtStatusToWinError(NTSTATUS); + NTSTATUS LsaOpenPolicy(PLSA_UNICODE_STRING, PLSA_OBJECT_ATTRIBUTES, + ACCESS_MASK, PLSA_HANDLE); + NTSTATUS LsaQueryDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, + PVOID*); + NTSTATUS LsaQueryLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryTrustedDomainInfo(LSA_HANDLE, PSID, + TRUSTED_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaRegisterLogonProcess(PLSA_STRING, PHANDLE, + PLSA_OPERATIONAL_MODE); + NTSTATUS LsaRemoveAccountRights(LSA_HANDLE, PSID, BOOLEAN, + PLSA_UNICODE_STRING, ULONG); + NTSTATUS LsaRetrievePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING*); + NTSTATUS LsaSetDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, + PVOID); + NTSTATUS LsaSetLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetTrustedDomainInformation(LSA_HANDLE, PSID, + TRUSTED_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS, PVOID); + NTSTATUS LsaStorePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING); +} + +alias NTSTATUS function(PUNICODE_STRING, ULONG, PUNICODE_STRING) + PSAM_PASSWORD_NOTIFICATION_ROUTINE; +alias BOOLEAN function() PSAM_INIT_NOTIFICATION_ROUTINE; +alias BOOLEAN function(PUNICODE_STRING, PUNICODE_STRING, + PUNICODE_STRING, BOOLEAN) PSAM_PASSWORD_FILTER_ROUTINE; diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index 883e5be9f5..8d794e5dc2 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -115,7 +115,7 @@ static if (_WIN32_WINNT >= 0x401) { const RASADP_FailedConnectionTimeout = 3; const RASADP_ConnectionQueryTimeout = 4; } -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { const RDEOPT_CustomDial = 0x00001000; const RASLCPAP_PAP = 0xC023; const RASLCPAP_SPAP = 0xC027; @@ -167,7 +167,7 @@ static if (_WIN32_WINNT >= 0x500) { const ET_Require = 1; const ET_RequireMax = 2; const ET_Optional = 3; -} +//} const RASCS_PAUSED = 0x1000; const RASCS_DONE = 0x2000; @@ -230,13 +230,13 @@ struct RASCONNW { WCHAR[RAS_MaxEntryName + 1] szEntryName; WCHAR[RAS_MaxDeviceType + 1] szDeviceType; WCHAR[RAS_MaxDeviceName + 1] szDeviceName; - static if (_WIN32_WINNT >= 0x401) { + //static if (_WIN32_WINNT >= 0x401) { WCHAR[MAX_PATH] szPhonebook; DWORD dwSubEntry; - } - static if (_WIN32_WINNT >= 0x500) { + //} + //static if (_WIN32_WINNT >= 0x500) { GUID guidEntry; - } + //} static if (_WIN32_WINNT >= 0x501) { DWORD dwFlags; LUID luid; @@ -250,13 +250,13 @@ struct RASCONNA { CHAR[RAS_MaxEntryName + 1] szEntryName; CHAR[RAS_MaxDeviceType + 1] szDeviceType; CHAR[RAS_MaxDeviceName + 1] szDeviceName; - static if (_WIN32_WINNT >= 0x401) { + //static if (_WIN32_WINNT >= 0x401) { CHAR[MAX_PATH] szPhonebook; DWORD dwSubEntry; - } - static if (_WIN32_WINNT >= 0x500) { + //} + //static if (_WIN32_WINNT >= 0x500) { GUID guidEntry; - } + //} static if (_WIN32_WINNT >= 0x501) { DWORD dwFlags; LUID luid; @@ -318,42 +318,42 @@ struct RASDIALPARAMSA{ } alias RASDIALPARAMSA* LPRASDIALPARAMSA; -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { struct RASEAPINFO { DWORD dwSizeofEapInfo; BYTE *pbEapInfo; } -} +//} struct RASDIALEXTENSIONS { DWORD dwSize; DWORD dwfOptions; HWND hwndParent; ULONG_PTR reserved; - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { ULONG_PTR reserved1; RASEAPINFO RasEapInfo; - } + //} } alias RASDIALEXTENSIONS* LPRASDIALEXTENSIONS; struct RASENTRYNAMEW { DWORD dwSize; WCHAR[RAS_MaxEntryName + 1] szEntryName; - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { DWORD dwFlags; WCHAR[MAX_PATH + 1] szPhonebookPath; - } + //} } alias RASENTRYNAMEW* LPRASENTRYNAMEW; struct RASENTRYNAMEA{ DWORD dwSize; CHAR[RAS_MaxEntryName + 1] szEntryName; - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { DWORD dwFlags; CHAR[MAX_PATH + 1] szPhonebookPath; - } + //} } alias RASENTRYNAMEA* LPRASENTRYNAMEA; @@ -414,10 +414,10 @@ struct RASPPPIPW{ //#ifndef WINNT35COMPATIBLE WCHAR[RAS_MaxIpAddress + 1] szServerIpAddress; //#endif - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { DWORD dwOptions; DWORD dwServerOptions; - } + //} } alias RASPPPIPW* LPRASPPPIPW; @@ -428,17 +428,17 @@ struct RASPPPIPA{ //#ifndef WINNT35COMPATIBLE CHAR[RAS_MaxIpAddress + 1] szServerIpAddress; //#endif - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { DWORD dwOptions; DWORD dwServerOptions; - } + //} } alias RASPPPIPA* LPRASPPPIPA; struct RASPPPLCPW{ DWORD dwSize; BOOL fBundled; - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { DWORD dwError; DWORD dwAuthenticationProtocol; DWORD dwAuthenticationData; @@ -452,14 +452,14 @@ struct RASPPPLCPW{ WCHAR[RAS_MaxReplyMessage] szReplyMessage; DWORD dwOptions; DWORD dwServerOptions; - } + //} } alias RASPPPLCPW* LPRASPPPLCPW; struct RASPPPLCPA{ DWORD dwSize; BOOL fBundled; - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { DWORD dwError; DWORD dwAuthenticationProtocol; DWORD dwAuthenticationData; @@ -473,7 +473,7 @@ struct RASPPPLCPA{ CHAR[RAS_MaxReplyMessage] szReplyMessage; DWORD dwOptions; DWORD dwServerOptions; - } + //} } alias RASPPPLCPA* LPRASPPPLCPA; @@ -552,7 +552,7 @@ struct RASENTRYW { DWORD dwChannels; DWORD dwReserved1; DWORD dwReserved2; - static if (_WIN32_WINNT >= 0x401) { + //static if (_WIN32_WINNT >= 0x401) { DWORD dwSubEntries; DWORD dwDialMode; DWORD dwDialExtraPercent; @@ -560,15 +560,15 @@ struct RASENTRYW { DWORD dwHangUpExtraPercent; DWORD dwHangUpExtraSampleSeconds; DWORD dwIdleDisconnectSeconds; - } - static if (_WIN32_WINNT >= 0x500) { + //} + //static if (_WIN32_WINNT >= 0x500) { DWORD dwType; DWORD dwEncryptionType; DWORD dwCustomAuthKey; GUID guidId; WCHAR[MAX_PATH] szCustomDialDll; DWORD dwVpnStrategy; - } + //} } alias RASENTRYW* LPRASENTRYW; @@ -600,7 +600,7 @@ struct RASENTRYA { DWORD dwChannels; DWORD dwReserved1; DWORD dwReserved2; - static if (_WIN32_WINNT >= 0x401) { + //static if (_WIN32_WINNT >= 0x401) { DWORD dwSubEntries; DWORD dwDialMode; DWORD dwDialExtraPercent; @@ -608,20 +608,20 @@ struct RASENTRYA { DWORD dwHangUpExtraPercent; DWORD dwHangUpExtraSampleSeconds; DWORD dwIdleDisconnectSeconds; - } - static if (_WIN32_WINNT >= 0x500) { + //} + //static if (_WIN32_WINNT >= 0x500) { DWORD dwType; DWORD dwEncryptionType; DWORD dwCustomAuthKey; GUID guidId; CHAR[MAX_PATH] szCustomDialDll; DWORD dwVpnStrategy; - } + //} } alias RASENTRYA* LPRASENTRYA; -static if (_WIN32_WINNT >= 0x401) { +//static if (_WIN32_WINNT >= 0x401) { struct RASADPARAMS { DWORD dwSize; HWND hwndOwner; @@ -684,9 +684,9 @@ static if (_WIN32_WINNT >= 0x401) { CHAR[RAS_MaxEntryName + 1] szEntry; } alias RASAUTODIALENTRYA* LPRASAUTODIALENTRYA; -} +//} -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { struct RASPPPCCP{ DWORD dwSize; DWORD dwError; @@ -729,7 +729,7 @@ static if (_WIN32_WINNT >= 0x500) { DWORD dwConnectDuration; } alias RAS_STATS* PRAS_STATS; -} +//} /* UNICODE typedefs for structures*/ @@ -747,15 +747,15 @@ version (Unicode) { alias RASDEVINFOW RASDEVINFO; alias RASENTRYNAMEW RASENTRYNAME; - static if (_WIN32_WINNT >= 0x401) { + //static if (_WIN32_WINNT >= 0x401) { alias RASSUBENTRYW RASSUBENTRY; alias RASCREDENTIALSW RASCREDENTIALS; alias RASAUTODIALENTRYW RASAUTODIALENTRY; - } + //} - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { alias RASEAPUSERIDENTITYW RASEAPUSERIDENTITY; - } + //} } else { // ! defined UNICODE @@ -772,14 +772,14 @@ version (Unicode) { alias RASDEVINFOA RASDEVINFO; alias RASENTRYNAMEA RASENTRYNAME; - static if (_WIN32_WINNT >= 0x401) { + //static if (_WIN32_WINNT >= 0x401) { alias RASSUBENTRYA RASSUBENTRY; alias RASCREDENTIALSA RASCREDENTIALS; alias RASAUTODIALENTRYA RASAUTODIALENTRY; - } - static if (_WIN32_WINNT >= 0x500) { + //} + //static if (_WIN32_WINNT >= 0x500) { alias RASEAPUSERIDENTITYA RASEAPUSERIDENTITY; - } + //} }// ! UNICODE @@ -796,14 +796,14 @@ alias RASSLIP* LPRASSLIP; alias RASDEVINFO* LPRASDEVINFO; alias RASENTRYNAME* LPRASENTRYNAME; -static if (_WIN32_WINNT >= 0x401) { +//static if (_WIN32_WINNT >= 0x401) { alias RASSUBENTRY* LPRASSUBENTRY; alias RASCREDENTIALS* LPRASCREDENTIALS; alias RASAUTODIALENTRY* LPRASAUTODIALENTRY; -} -static if (_WIN32_WINNT >= 0x500) { +//} +//static if (_WIN32_WINNT >= 0x500) { alias RASEAPUSERIDENTITY* LPRASEAPUSERIDENTITY; -} +//} /* Callback prototypes */ deprecated { @@ -811,122 +811,103 @@ deprecated { } alias void function (UINT, RASCONNSTATE, DWORD) RASDIALFUNC; -alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD, -DWORD) RASDIALFUNC1; +alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD) RASDIALFUNC1; alias DWORD function (ULONG_PTR, DWORD, HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD) RASDIALFUNC2; /* External functions */ -DWORD RasDialA (LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, -DWORD, LPVOID, LPHRASCONN); -DWORD RasDialW (LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, -DWORD, LPVOID, LPHRASCONN); -DWORD RasEnumConnectionsA (LPRASCONNA, LPDWORD, LPDWORD); -DWORD RasEnumConnectionsW (LPRASCONNW, LPDWORD, LPDWORD); -DWORD RasEnumEntriesA (LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, -LPDWORD); -DWORD RasEnumEntriesW (LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD, -LPDWORD); -DWORD RasGetConnectStatusA (HRASCONN, LPRASCONNSTATUSA); -DWORD RasGetConnectStatusW (HRASCONN, LPRASCONNSTATUSW); -DWORD RasGetErrorStringA (UINT, LPSTR, DWORD); -DWORD RasGetErrorStringW (UINT, LPWSTR, DWORD); -DWORD RasHangUpA (HRASCONN); -DWORD RasHangUpW (HRASCONN); -DWORD RasGetProjectionInfoA (HRASCONN, RASPROJECTION, LPVOID, -LPDWORD); -DWORD RasGetProjectionInfoW (HRASCONN, RASPROJECTION, LPVOID, -LPDWORD); -DWORD RasCreatePhonebookEntryA (HWND, LPCSTR); -DWORD RasCreatePhonebookEntryW (HWND, LPCWSTR); -DWORD RasEditPhonebookEntryA (HWND, LPCSTR, LPCSTR); -DWORD RasEditPhonebookEntryW (HWND, LPCWSTR, LPCWSTR); -DWORD RasSetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, BOOL); -DWORD RasSetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, BOOL); -DWORD RasGetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, LPBOOL); -DWORD RasGetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, LPBOOL); -DWORD RasEnumDevicesA (LPRASDEVINFOA, LPDWORD, LPDWORD); -DWORD RasEnumDevicesW (LPRASDEVINFOW, LPDWORD, LPDWORD); -DWORD RasGetCountryInfoA (LPRASCTRYINFOA, LPDWORD); -DWORD RasGetCountryInfoW (LPRASCTRYINFOW, LPDWORD); -DWORD RasGetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, -LPBYTE, LPDWORD); -DWORD RasGetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, -LPDWORD, LPBYTE, LPDWORD); -DWORD RasSetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, DWORD, -LPBYTE, DWORD); -DWORD RasSetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, -LPBYTE, DWORD); -DWORD RasRenameEntryA (LPCSTR, LPCSTR, LPCSTR); -DWORD RasRenameEntryW (LPCWSTR, LPCWSTR, LPCWSTR); -DWORD RasDeleteEntryA (LPCSTR, LPCSTR); -DWORD RasDeleteEntryW (LPCWSTR, LPCWSTR); -DWORD RasValidateEntryNameA (LPCSTR, LPCSTR); -DWORD RasValidateEntryNameW (LPCWSTR, LPCWSTR); - -static if (_WIN32_WINNT >= 0x401) { - alias BOOL function (LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; - alias BOOL function (LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; - - DWORD RasGetSubEntryHandleA (HRASCONN, DWORD, LPHRASCONN); - DWORD RasGetSubEntryHandleW (HRASCONN, DWORD, LPHRASCONN); - DWORD RasGetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA); - DWORD RasGetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW); - DWORD RasSetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL); - DWORD RasSetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL); - DWORD RasConnectionNotificationA (HRASCONN, HANDLE, DWORD); - DWORD RasConnectionNotificationW (HRASCONN, HANDLE, DWORD); - DWORD RasGetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD, - LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD); - DWORD RasGetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD, - LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD); - DWORD RasSetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD, - LPRASSUBENTRYA, DWORD, LPBYTE, DWORD); - DWORD RasSetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD, - LPRASSUBENTRYW, DWORD, LPBYTE, DWORD); - DWORD RasGetAutodialAddressA (LPCSTR, LPDWORD, LPRASAUTODIALENTRYA, - LPDWORD, LPDWORD); - DWORD RasGetAutodialAddressW (LPCWSTR, LPDWORD, - LPRASAUTODIALENTRYW, LPDWORD, LPDWORD); - DWORD RasSetAutodialAddressA (LPCSTR, DWORD, LPRASAUTODIALENTRYA, - DWORD, DWORD); - DWORD RasSetAutodialAddressW (LPCWSTR, DWORD, LPRASAUTODIALENTRYW, - DWORD, DWORD); - DWORD RasEnumAutodialAddressesA (LPSTR *, LPDWORD, LPDWORD); - DWORD RasEnumAutodialAddressesW (LPWSTR *, LPDWORD, LPDWORD); - DWORD RasGetAutodialEnableA (DWORD, LPBOOL); - DWORD RasGetAutodialEnableW (DWORD, LPBOOL); - DWORD RasSetAutodialEnableA (DWORD, BOOL); - DWORD RasSetAutodialEnableW (DWORD, BOOL); - DWORD RasGetAutodialParamA (DWORD, LPVOID, LPDWORD); - DWORD RasGetAutodialParamW (DWORD, LPVOID, LPDWORD); - DWORD RasSetAutodialParamA (DWORD, LPVOID, DWORD); - DWORD RasSetAutodialParamW (DWORD, LPVOID, DWORD); -} +DWORD RasDialA(LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, DWORD, LPVOID, LPHRASCONN); +DWORD RasDialW(LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, DWORD, LPVOID, LPHRASCONN); +DWORD RasEnumConnectionsA(LPRASCONNA, LPDWORD, LPDWORD); +DWORD RasEnumConnectionsW(LPRASCONNW, LPDWORD, LPDWORD); +DWORD RasEnumEntriesA(LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, LPDWORD); +DWORD RasEnumEntriesW(LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD, LPDWORD); +DWORD RasGetConnectStatusA(HRASCONN, LPRASCONNSTATUSA); +DWORD RasGetConnectStatusW(HRASCONN, LPRASCONNSTATUSW); +DWORD RasGetErrorStringA(UINT, LPSTR, DWORD); +DWORD RasGetErrorStringW(UINT, LPWSTR, DWORD); +DWORD RasHangUpA(HRASCONN); +DWORD RasHangUpW(HRASCONN); +DWORD RasGetProjectionInfoA(HRASCONN, RASPROJECTION, LPVOID, LPDWORD); +DWORD RasGetProjectionInfoW(HRASCONN, RASPROJECTION, LPVOID, LPDWORD); +DWORD RasCreatePhonebookEntryA(HWND, LPCSTR); +DWORD RasCreatePhonebookEntryW(HWND, LPCWSTR); +DWORD RasEditPhonebookEntryA(HWND, LPCSTR, LPCSTR); +DWORD RasEditPhonebookEntryW(HWND, LPCWSTR, LPCWSTR); +DWORD RasSetEntryDialParamsA(LPCSTR, LPRASDIALPARAMSA, BOOL); +DWORD RasSetEntryDialParamsW(LPCWSTR, LPRASDIALPARAMSW, BOOL); +DWORD RasGetEntryDialParamsA(LPCSTR, LPRASDIALPARAMSA, LPBOOL); +DWORD RasGetEntryDialParamsW(LPCWSTR, LPRASDIALPARAMSW, LPBOOL); +DWORD RasEnumDevicesA(LPRASDEVINFOA, LPDWORD, LPDWORD); +DWORD RasEnumDevicesW(LPRASDEVINFOW, LPDWORD, LPDWORD); +DWORD RasGetCountryInfoA(LPRASCTRYINFOA, LPDWORD); +DWORD RasGetCountryInfoW(LPRASCTRYINFOW, LPDWORD); +DWORD RasGetEntryPropertiesA(LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, LPBYTE, LPDWORD); +DWORD RasGetEntryPropertiesW(LPCWSTR, LPCWSTR, LPRASENTRYW, LPDWORD, LPBYTE, LPDWORD); +DWORD RasSetEntryPropertiesA(LPCSTR, LPCSTR, LPRASENTRYA, DWORD, LPBYTE, DWORD); +DWORD RasSetEntryPropertiesW(LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, LPBYTE, DWORD); +DWORD RasRenameEntryA(LPCSTR, LPCSTR, LPCSTR); +DWORD RasRenameEntryW(LPCWSTR, LPCWSTR, LPCWSTR); +DWORD RasDeleteEntryA(LPCSTR, LPCSTR); +DWORD RasDeleteEntryW(LPCWSTR, LPCWSTR); +DWORD RasValidateEntryNameA(LPCSTR, LPCSTR); +DWORD RasValidateEntryNameW(LPCWSTR, LPCWSTR); + +//static if(_WIN32_WINNT >= 0x401) { + alias BOOL function(LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; + alias BOOL function(LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; + + DWORD RasGetSubEntryHandleA(HRASCONN, DWORD, LPHRASCONN); + DWORD RasGetSubEntryHandleW(HRASCONN, DWORD, LPHRASCONN); + DWORD RasGetCredentialsA(LPCSTR, LPCSTR, LPRASCREDENTIALSA); + DWORD RasGetCredentialsW(LPCWSTR, LPCWSTR, LPRASCREDENTIALSW); + DWORD RasSetCredentialsA(LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL); + DWORD RasSetCredentialsW(LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL); + DWORD RasConnectionNotificationA(HRASCONN, HANDLE, DWORD); + DWORD RasConnectionNotificationW(HRASCONN, HANDLE, DWORD); + DWORD RasGetSubEntryPropertiesA(LPCSTR, LPCSTR, DWORD, LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD); + DWORD RasGetSubEntryPropertiesW(LPCWSTR, LPCWSTR, DWORD, LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD); + DWORD RasSetSubEntryPropertiesA(LPCSTR, LPCSTR, DWORD, LPRASSUBENTRYA, DWORD, LPBYTE, DWORD); + DWORD RasSetSubEntryPropertiesW(LPCWSTR, LPCWSTR, DWORD, LPRASSUBENTRYW, DWORD, LPBYTE, DWORD); + DWORD RasGetAutodialAddressA(LPCSTR, LPDWORD, LPRASAUTODIALENTRYA, LPDWORD, LPDWORD); + DWORD RasGetAutodialAddressW(LPCWSTR, LPDWORD, LPRASAUTODIALENTRYW, LPDWORD, LPDWORD); + DWORD RasSetAutodialAddressA(LPCSTR, DWORD, LPRASAUTODIALENTRYA, DWORD, DWORD); + DWORD RasSetAutodialAddressW(LPCWSTR, DWORD, LPRASAUTODIALENTRYW, DWORD, DWORD); + DWORD RasEnumAutodialAddressesA(LPSTR*, LPDWORD, LPDWORD); + DWORD RasEnumAutodialAddressesW(LPWSTR*, LPDWORD, LPDWORD); + DWORD RasGetAutodialEnableA(DWORD, LPBOOL); + DWORD RasGetAutodialEnableW(DWORD, LPBOOL); + DWORD RasSetAutodialEnableA(DWORD, BOOL); + DWORD RasSetAutodialEnableW(DWORD, BOOL); + DWORD RasGetAutodialParamA(DWORD, LPVOID, LPDWORD); + DWORD RasGetAutodialParamW(DWORD, LPVOID, LPDWORD); + DWORD RasSetAutodialParamA(DWORD, LPVOID, DWORD); + DWORD RasSetAutodialParamW(DWORD, LPVOID, DWORD); +//} static if (_WIN32_WINNT >= 0x500) { - alias DWORD function (HRASCONN) RasCustomHangUpFn; - alias DWORD function (LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; - alias DWORD function (HINSTANCE, LPRASDIALEXTENSIONS, - LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN, DWORD) RasCustomDialFn; - - DWORD RasInvokeEapUI (HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); - DWORD RasGetLinkStatistics (HRASCONN, DWORD, RAS_STATS*); - DWORD RasGetConnectionStatistics (HRASCONN, RAS_STATS*); - DWORD RasClearLinkStatistics (HRASCONN, DWORD); - DWORD RasClearConnectionStatistics (HRASCONN); - DWORD RasGetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*); - DWORD RasGetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*); - DWORD RasSetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD); - DWORD RasSetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD); - DWORD RasGetCustomAuthDataA (LPCSTR, LPCSTR, BYTE*, DWORD*); - DWORD RasGetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD*); - DWORD RasSetCustomAuthDataA (LPCSTR, LPCSTR, BYTE*, DWORD); - DWORD RasSetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD); - DWORD RasGetEapUserIdentityW (LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*); - DWORD RasGetEapUserIdentityA (LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*); - void RasFreeEapUserIdentityW (LPRASEAPUSERIDENTITYW); - void RasFreeEapUserIdentityA (LPRASEAPUSERIDENTITYA); + alias DWORD function(HRASCONN) RasCustomHangUpFn; + alias DWORD function(LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; + alias DWORD function(HINSTANCE, LPRASDIALEXTENSIONS, LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, + LPHRASCONN, DWORD) RasCustomDialFn; + + DWORD RasInvokeEapUI(HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); + DWORD RasGetLinkStatistics(HRASCONN, DWORD, RAS_STATS*); + DWORD RasGetConnectionStatistics(HRASCONN, RAS_STATS*); + DWORD RasClearLinkStatistics(HRASCONN, DWORD); + DWORD RasClearConnectionStatistics(HRASCONN); + DWORD RasGetEapUserDataA(HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*); + DWORD RasGetEapUserDataW(HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*); + DWORD RasSetEapUserDataA(HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD); + DWORD RasSetEapUserDataW(HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD); + DWORD RasGetCustomAuthDataA(LPCSTR, LPCSTR, BYTE*, DWORD*); + DWORD RasGetCustomAuthDataW(LPCWSTR, LPCWSTR, BYTE*, DWORD*); + DWORD RasSetCustomAuthDataA(LPCSTR, LPCSTR, BYTE*, DWORD); + DWORD RasSetCustomAuthDataW(LPCWSTR, LPCWSTR, BYTE*, DWORD); + DWORD RasGetEapUserIdentityW(LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*); + DWORD RasGetEapUserIdentityA(LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*); + void RasFreeEapUserIdentityW(LPRASEAPUSERIDENTITYW); + void RasFreeEapUserIdentityA(LPRASEAPUSERIDENTITYA); } @@ -951,7 +932,7 @@ version(Unicode) { alias RasDeleteEntryW RasDeleteEntry; alias RasValidateEntryNameW RasValidateEntryName; - static if (_WIN32_WINNT >= 0x401) { + //static if (_WIN32_WINNT >= 0x401) { alias RASADFUNCW RASADFUNC; alias RasGetSubEntryHandleW RasGetSubEntryHandle; alias RasConnectionNotificationW RasConnectionNotification; @@ -966,16 +947,16 @@ version(Unicode) { alias RasSetAutodialEnableW RasSetAutodialEnable; alias RasGetAutodialParamW RasGetAutodialParam; alias RasSetAutodialParamW RasSetAutodialParam; - } + //} - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { alias RasGetEapUserDataW RasGetEapUserData; alias RasSetEapUserDataW RasSetEapUserData; alias RasGetCustomAuthDataW RasGetCustomAuthData; alias RasSetCustomAuthDataW RasSetCustomAuthData; alias RasGetEapUserIdentityW RasGetEapUserIdentity; alias RasFreeEapUserIdentityW RasFreeEapUserIdentity; - } + //} } else { // !Unicode alias RasDialA RasDial; @@ -997,7 +978,7 @@ version(Unicode) { alias RasDeleteEntryA RasDeleteEntry; alias RasValidateEntryNameA RasValidateEntryName; - static if (_WIN32_WINNT >= 0x401) { + //static if (_WIN32_WINNT >= 0x401) { alias RASADFUNCA RASADFUNC; alias RasGetSubEntryHandleA RasGetSubEntryHandle; alias RasConnectionNotificationA RasConnectionNotification; @@ -1012,14 +993,14 @@ version(Unicode) { alias RasSetAutodialEnableA RasSetAutodialEnable; alias RasGetAutodialParamA RasGetAutodialParam; alias RasSetAutodialParamA RasSetAutodialParam; - } + //} - static if (_WIN32_WINNT >= 0x500) { + //static if (_WIN32_WINNT >= 0x500) { alias RasGetEapUserDataA RasGetEapUserData; alias RasSetEapUserDataA RasSetEapUserData; alias RasGetCustomAuthDataA RasGetCustomAuthData; alias RasSetCustomAuthDataA RasSetCustomAuthData; alias RasGetEapUserIdentityA RasGetEapUserIdentity; alias RasFreeEapUserIdentityA RasFreeEapUserIdentity; - } + //} } //#endif // !Unicode diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d index b994ae3296..1580009299 100644 --- a/src/core/sys/windows/rpcdce.d +++ b/src/core/sys/windows/rpcdce.d @@ -406,6 +406,6 @@ RPC_STATUS RpcMgmtSetParameter(uint, uint); RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*); RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint); -static if (_WIN32_WINNT >= 0x500) { +//static if (_WIN32_WINNT >= 0x500) { RPC_STATUS UuidCreateSequential(UUID*); -} +//} diff --git a/src/core/sys/windows/w32api.d b/src/core/sys/windows/w32api.d index 93e630bc59..18478f3cec 100644 --- a/src/core/sys/windows/w32api.d +++ b/src/core/sys/windows/w32api.d @@ -1,93 +1,95 @@ -/***********************************************************************\ -* w32api.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 4.0 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.w32api; - -enum __W32API_VERSION = 3.17; -enum __W32API_MAJOR_VERSION = 3; -enum __W32API_MINOR_VERSION = 17; - -/* These version identifiers are used to specify the minimum version of Windows that an - * application will support. - * - * Previously the minimum Windows 9x and Windows NT versions could be specified. However, since - * Windows 9x is no longer supported, either by Microsoft or by DMD, this distinction has been - * removed in order to simplify the bindings. - */ - version (Windows10) { - enum uint _WIN32_WINNT = 0x604; -} else version (Windows8_1) { // also Windows2012R2 - enum uint _WIN32_WINNT = 0x603; -} else version (Windows8) { // also Windows2012 - enum uint _WIN32_WINNT = 0x602; -} else version (Windows7) { // also Windows2008R2 - enum uint _WIN32_WINNT = 0x601; -} else version (WindowsVista) { // also Windows2008 - enum uint _WIN32_WINNT = 0x600; -} else version (Windows2003) { // also WindowsHomeServer, WindowsXP64 - enum uint _WIN32_WINNT = 0x502; -} else version (WindowsXP) { - enum uint _WIN32_WINNT = 0x501; -} else version (Windows2000) { - enum uint _WIN32_WINNT = 0x500; -} else { - enum uint _WIN32_WINNT = 0x501; -} - -version (IE10) { - enum uint _WIN32_IE = 0xA00; -} else version (IE9) { - enum uint _WIN32_IE = 0x900; -} else version (IE8) { - enum uint _WIN32_IE = 0x800; -} else version (IE7) { - enum uint _WIN32_IE = 0x700; -} else version (IE602) { - enum uint _WIN32_IE = 0x603; -} else version (IE601) { - enum uint _WIN32_IE = 0x601; -} else version (IE6) { - enum uint _WIN32_IE = 0x600; -} else version (IE56) { - enum uint _WIN32_IE = 0x560; -} else version (IE501) { - enum uint _WIN32_IE = 0x501; -} else version (IE5) { - enum uint _WIN32_IE = 0x500; -} else version (IE401) { - enum uint _WIN32_IE = 0x401; -} else version (IE4) { - enum uint _WIN32_IE = 0x400; -} else version (IE3) { - enum uint _WIN32_IE = 0x300; -} else static if (_WIN32_WINNT >= 0x410) { - enum uint _WIN32_IE = 0x400; -} else { - enum uint _WIN32_IE = 0; -} - -debug (WindowsUnitTest) { - unittest { - printf("Windows NT version: %03x\n", _WIN32_WINNT); - printf("IE version: %03x\n", _WIN32_IE); - } -} - -version (Unicode) { - enum bool _WIN32_UNICODE = true; - package template DECLARE_AW(string name) { - mixin("alias " ~ name ~ "W " ~ name ~ ";"); - } -} else { - enum bool _WIN32_UNICODE = false; - package template DECLARE_AW(string name) { - mixin("alias " ~ name ~ "A " ~ name ~ ";"); - } -} +/***********************************************************************\ +* w32api.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 4.0 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.w32api; + +enum __W32API_VERSION = 3.17; +enum __W32API_MAJOR_VERSION = 3; +enum __W32API_MINOR_VERSION = 17; + +/* These version identifiers are used to specify the minimum version of Windows that an + * application will support. + * + * Previously the minimum Windows 9x and Windows NT versions could be specified. However, since + * Windows 9x is no longer supported, either by Microsoft or by DMD, this distinction has been + * removed in order to simplify the bindings. + */ + version (Windows10) { + enum uint _WIN32_WINNT = 0x604; +} else version (Windows8_1) { // also Windows2012R2 + enum uint _WIN32_WINNT = 0x603; +} else version (Windows8) { // also Windows2012 + enum uint _WIN32_WINNT = 0x602; +} else version (Windows7) { // also Windows2008R2 + enum uint _WIN32_WINNT = 0x601; +} else version (WindowsVista) { // also Windows2008 + enum uint _WIN32_WINNT = 0x600; +} else version (Windows2003) { // also WindowsHomeServer, WindowsXP64 + enum uint _WIN32_WINNT = 0x502; +} else version (WindowsXP) { + enum uint _WIN32_WINNT = 0x501; +} else version (Windows2000) { + // Current DMD doesn't support any version of Windows older than XP, + // but third-party compilers could use this + enum uint _WIN32_WINNT = 0x500; +} else { + enum uint _WIN32_WINNT = 0x501; +} + +version (IE10) { + enum uint _WIN32_IE = 0xA00; +} else version (IE9) { + enum uint _WIN32_IE = 0x900; +} else version (IE8) { + enum uint _WIN32_IE = 0x800; +} else version (IE7) { + enum uint _WIN32_IE = 0x700; +} else version (IE602) { + enum uint _WIN32_IE = 0x603; +} else version (IE601) { + enum uint _WIN32_IE = 0x601; +} else version (IE6) { + enum uint _WIN32_IE = 0x600; +} else version (IE56) { + enum uint _WIN32_IE = 0x560; +} else version (IE501) { + enum uint _WIN32_IE = 0x501; +} else version (IE5) { + enum uint _WIN32_IE = 0x500; +} else version (IE401) { + enum uint _WIN32_IE = 0x401; +} else version (IE4) { + enum uint _WIN32_IE = 0x400; +} else version (IE3) { + enum uint _WIN32_IE = 0x300; +} else static if (_WIN32_WINNT >= 0x410) { + enum uint _WIN32_IE = 0x400; +} else { + enum uint _WIN32_IE = 0; +} + +debug (WindowsUnitTest) { + unittest { + printf("Windows NT version: %03x\n", _WIN32_WINNT); + printf("IE version: %03x\n", _WIN32_IE); + } +} + +version (Unicode) { + enum bool _WIN32_UNICODE = true; + package template DECLARE_AW(string name) { + mixin("alias " ~ name ~ "W " ~ name ~ ";"); + } +} else { + enum bool _WIN32_UNICODE = false; + package template DECLARE_AW(string name) { + mixin("alias " ~ name ~ "A " ~ name ~ ";"); + } +} diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index 782aa4971f..9ad30b7944 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -1830,7 +1830,7 @@ WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); DWORD GetPrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPCWSTR); BOOL GetPrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); BOOL GetPrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); - FARPROC GetProcAddress(HINSTANCE, LPCSTR); + FARPROC GetProcAddress(HMODULE, LPCSTR); // 1st param wrongly HINSTANCE in MinGW BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); DWORD GetProcessVersion(DWORD); UINT GetProfileIntA(LPCSTR, LPCSTR, INT); diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index 78930d2268..549a56a7dc 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -79,6 +79,7 @@ alias const(void)* PCVOID, LPCVOID; alias UINT_PTR WPARAM; alias LONG_PTR LPARAM, LRESULT; +mixin DECLARE_HANDLE!("HHOOK"); mixin DECLARE_HANDLE!("HGLOBAL"); mixin DECLARE_HANDLE!("HLOCAL"); mixin DECLARE_HANDLE!("GLOBALHANDLE"); diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index bd136f6c0c..303eb4e942 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -2015,6 +2015,7 @@ alias RGBTRIPLE* LPRGBTRIPLE; align(2): struct BITMAPFILEHEADER { +align(2): WORD bfType; DWORD bfSize; WORD bfReserved1; @@ -2179,9 +2180,11 @@ struct DEVMODEA { short dmDefaultSource; short dmPrintQuality; } - POINTL dmPosition; - DWORD dmDisplayOrientation; - DWORD dmDisplayFixedOutput; + struct { + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } } short dmColor; short dmDuplex; @@ -2227,9 +2230,11 @@ struct DEVMODEW { short dmDefaultSource; short dmPrintQuality; } - POINTL dmPosition; - DWORD dmDisplayOrientation; - DWORD dmDisplayFixedOutput; + struct { + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } } short dmColor; @@ -3259,6 +3264,7 @@ static if (_WIN32_WINNT >= 0x500) { align(2): struct METAHEADER { +align(2): WORD mtType; WORD mtHeaderSize; WORD mtVersion; diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index e0b3f10ae3..e4e72a2a84 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -2682,7 +2682,7 @@ struct EVENTLOGRECORD { alias EVENTLOGRECORD* PEVENTLOGRECORD; struct OSVERSIONINFOA { - DWORD dwOSVersionInfoSize; + DWORD dwOSVersionInfoSize = OSVERSIONINFOA.sizeof; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; @@ -2692,7 +2692,7 @@ struct OSVERSIONINFOA { alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA; struct OSVERSIONINFOW { - DWORD dwOSVersionInfoSize; + DWORD dwOSVersionInfoSize = OSVERSIONINFOW.sizeof; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index b2f8b07b32..137cc410d2 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -25,60 +25,75 @@ private import win32.windef; // for HMONITOR // FIXME: clean up Windows version support -template MAKEINTATOM_T(int i) { - const LPTSTR MAKEINTATOM_T = cast(LPTSTR) i; -} - -const WC_DIALOG = MAKEINTATOM_T!(0x8002); - -const FAPPCOMMAND_MOUSE = 0x8000; -const FAPPCOMMAND_KEY = 0; -const FAPPCOMMAND_OEM = 0x1000; -const FAPPCOMMAND_MASK = 0xF000; - -const FVIRTKEY = 1; -const FNOINVERT = 2; -const FSHIFT = 4; -const FCONTROL = 8; -const FALT = 16; - -const ATF_TIMEOUTON = 1; -const ATF_ONOFFFEEDBACK = 2; -const ATF_AVAILABLE = 4; // May be obsolete. Not in recent MS docs. - -const WH_MIN = -1; -const WH_MSGFILTER = -1; -const WH_JOURNALRECORD = 0; -const WH_JOURNALPLAYBACK = 1; -const WH_KEYBOARD = 2; -const WH_GETMESSAGE = 3; -const WH_CALLWNDPROC = 4; -const WH_CBT = 5; -const WH_SYSMSGFILTER = 6; -const WH_MOUSE = 7; -const WH_HARDWARE = 8; -const WH_DEBUG = 9; -const WH_SHELL = 10; -const WH_FOREGROUNDIDLE = 11; -const WH_CALLWNDPROCRET = 12; -const WH_KEYBOARD_LL = 13; -const WH_MOUSE_LL = 14; -const WH_MAX = 14; -const WH_MINHOOK = WH_MIN; -const WH_MAXHOOK = WH_MAX; +LPTSTR MAKEINTATOM_T()(int i) { + return cast(LPTSTR) i; +} + +enum LPTSTR WC_DIALOG = MAKEINTATOM_T(0x8002); + +enum { + FAPPCOMMAND_MOUSE = 0x8000, + FAPPCOMMAND_KEY = 0, + FAPPCOMMAND_OEM = 0x1000, + FAPPCOMMAND_MASK = 0xF000 +} + +enum { + MNGO_NOINTERFACE = 0, + MNGO_NOERROR, + MNGOF_TOPGAP = 1, + MNGOF_BOTTOMGAP +} + +enum { + FVIRTKEY = 1, + FNOINVERT = 2, + FSHIFT = 4, + FCONTROL = 8, + FALT = 16 +} + +enum { + ATF_TIMEOUTON = 1, + ATF_ONOFFFEEDBACK = 2, + ATF_AVAILABLE = 4 // May be obsolete. Not in recent MS docs. +} + +enum { + WH_MIN = -1, + WH_MSGFILTER = -1, + WH_JOURNALRECORD, + WH_JOURNALPLAYBACK, + WH_KEYBOARD, + WH_GETMESSAGE, + WH_CALLWNDPROC, + WH_CBT, + WH_SYSMSGFILTER, + WH_MOUSE, + WH_HARDWARE, + WH_DEBUG, + WH_SHELL, + WH_FOREGROUNDIDLE, + WH_CALLWNDPROCRET, + WH_KEYBOARD_LL, + WH_MOUSE_LL, // = 14 + WH_MAX = 14, + WH_MINHOOK = WH_MIN, + WH_MAXHOOK = WH_MAX +} enum { - HC_ACTION = 0, + HC_ACTION = 0, HC_GETNEXT, HC_SKIP, HC_NOREMOVE, // = 3 - HC_NOREM = HC_NOREMOVE, + HC_NOREM = HC_NOREMOVE, HC_SYSMODALON, HC_SYSMODALOFF } enum { - HCBT_MOVESIZE = 0, + HCBT_MOVESIZE = 0, HCBT_MINMAX, HCBT_QS, HCBT_CREATEWND, @@ -107,7 +122,8 @@ enum { CF_ENHMETAFILE, CF_HDROP, CF_LOCALE, - CF_MAX, // = 0x0011 + CF_DIBV5, + CF_MAX, // = 0x0012 CF_OWNERDISPLAY = 0x0080, CF_DSPTEXT, CF_DSPBITMAP, @@ -119,125 +135,129 @@ enum { CF_GDIOBJLAST = 0x03FF } -const HKL_PREV = 0; -const HKL_NEXT = 1; - -const KLF_ACTIVATE = 1; -const KLF_SUBSTITUTE_OK = 2; -const KLF_UNLOADPREVIOUS = 4; -const KLF_REORDER = 8; -const KLF_REPLACELANG = 16; -const KLF_NOTELLSHELL = 128; -const KLF_SETFORPROCESS = 256; -const KL_NAMELENGTH = 9; - -const MF_ENABLED = 0; -const MF_GRAYED = 1; -const MF_DISABLED = 2; -const MF_BITMAP = 4; -const MF_CHECKED = 8; -const MF_MENUBARBREAK = 32; -const MF_MENUBREAK = 64; -const MF_OWNERDRAW = 256; -const MF_POPUP = 16; -const MF_SEPARATOR = 0x800; -const MF_STRING = 0; -const MF_UNCHECKED = 0; -const MF_DEFAULT = 4096; -const MF_SYSMENU = 0x2000; -const MF_HELP = 0x4000; -const MF_END = 128; -const MF_RIGHTJUSTIFY = 0x4000; -const MF_MOUSESELECT = 0x8000; -const MF_INSERT = 0; -const MF_CHANGE = 128; -const MF_APPEND = 256; -const MF_DELETE = 512; -const MF_REMOVE = 4096; -const MF_USECHECKBITMAPS = 512; -const MF_UNHILITE = 0; -const MF_HILITE = 128; +enum HKL_PREV = 0; +enum HKL_NEXT = 1; + +enum KLF_ACTIVATE = 1; +enum KLF_SUBSTITUTE_OK = 2; +enum KLF_UNLOADPREVIOUS = 4; +enum KLF_REORDER = 8; +enum KLF_REPLACELANG = 16; +enum KLF_NOTELLSHELL = 128; +enum KLF_SETFORPROCESS = 256; +enum KL_NAMELENGTH = 9; + +enum MF_ENABLED = 0; +enum MF_GRAYED = 1; +enum MF_DISABLED = 2; +enum MF_BITMAP = 4; +enum MF_CHECKED = 8; +enum MF_MENUBARBREAK = 32; +enum MF_MENUBREAK = 64; +enum MF_OWNERDRAW = 256; +enum MF_POPUP = 16; +enum MF_SEPARATOR = 0x800; +enum MF_STRING = 0; +enum MF_UNCHECKED = 0; +enum MF_DEFAULT = 4096; +enum MF_SYSMENU = 0x2000; +enum MF_HELP = 0x4000; +enum MF_END = 128; +enum MF_RIGHTJUSTIFY = 0x4000; +enum MF_MOUSESELECT = 0x8000; +enum MF_INSERT = 0; +enum MF_CHANGE = 128; +enum MF_APPEND = 256; +enum MF_DELETE = 512; +enum MF_REMOVE = 4096; +enum MF_USECHECKBITMAPS = 512; +enum MF_UNHILITE = 0; +enum MF_HILITE = 128; // Also defined in dbt.h -const BSM_ALLCOMPONENTS = 0; -const BSM_VXDS = 1; -const BSM_NETDRIVER = 2; -const BSM_INSTALLABLEDRIVERS = 4; -const BSM_APPLICATIONS = 8; -const BSM_ALLDESKTOPS = 16; - -const BSF_QUERY = 0x00000001; -const BSF_IGNORECURRENTTASK = 0x00000002; -const BSF_FLUSHDISK = 0x00000004; -const BSF_NOHANG = 0x00000008; -const BSF_POSTMESSAGE = 0x00000010; -const BSF_FORCEIFHUNG = 0x00000020; -const BSF_NOTIMEOUTIFNOTHUNG = 0x00000040; - -const BSF_ALLOWSFW = 0x00000080; -const BSF_SENDNOTIFYMESSAGE = 0x00000100; +enum BSM_ALLCOMPONENTS = 0; +enum BSM_VXDS = 1; +enum BSM_NETDRIVER = 2; +enum BSM_INSTALLABLEDRIVERS = 4; +enum BSM_APPLICATIONS = 8; +enum BSM_ALLDESKTOPS = 16; +enum { + BSF_QUERY = 0x0001, + BSF_IGNORECURRENTTASK = 0x0002, + BSF_FLUSHDISK = 0x0004, + BSF_NOHANG = 0x0008, + BSF_POSTMESSAGE = 0x0010, + BSF_FORCEIFHUNG = 0x0020, + BSF_NOTIMEOUTIFNOTHUNG = 0x0040, + BSF_ALLOWSFW = 0x0080, + BSF_SENDNOTIFYMESSAGE = 0x0100 +} static if (_WIN32_WINNT >= 0x501) { - const BSF_RETURNHDESK = 0x00000200; - const BSF_LUID = 0x00000400; -} - -const BROADCAST_QUERY_DENY = 1112363332; -const DWORD ENUM_CURRENT_SETTINGS = -1; -const DWORD ENUM_REGISTRY_SETTINGS = -2; - -const CDS_UPDATEREGISTRY = 1; -const CDS_TEST = 2; -const CDS_FULLSCREEN = 4; -const CDS_GLOBAL = 8; -const CDS_SET_PRIMARY = 16; -const CDS_NORESET = 0x10000000; -const CDS_SETRECT = 0x20000000; -const CDS_RESET = 0x40000000; - -const DISP_CHANGE_RESTART = 1; -const DISP_CHANGE_SUCCESSFUL = 0; -const DISP_CHANGE_FAILED = -1; -const DISP_CHANGE_BADMODE = -2; -const DISP_CHANGE_NOTUPDATED = -3; -const DISP_CHANGE_BADFLAGS = -4; -const DISP_CHANGE_BADPARAM = -5; - -const BST_UNCHECKED = 0; -const BST_CHECKED = 1; -const BST_INDETERMINATE = 2; -const BST_PUSHED = 4; -const BST_FOCUS = 8; - -const MF_BYCOMMAND = 0; -const MF_BYPOSITION = 1024; -// [Redefined] MF_UNCHECKED=0 -// [Redefined] MF_HILITE=128 -// [Redefined] MF_UNHILITE=0 - -const CWP_ALL = 0; -const CWP_SKIPINVISIBLE = 1; -const CWP_SKIPDISABLED = 2; -const CWP_SKIPTRANSPARENT = 4; - -const IMAGE_BITMAP=0; -const IMAGE_ICON=1; -const IMAGE_CURSOR=2; -const IMAGE_ENHMETAFILE=3; - -const DF_ALLOWOTHERACCOUNTHOOK = 1; - -const DESKTOP_READOBJECTS = 1; -const DESKTOP_CREATEWINDOW = 2; -const DESKTOP_CREATEMENU = 4; -const DESKTOP_HOOKCONTROL = 8; -const DESKTOP_JOURNALRECORD = 16; -const DESKTOP_JOURNALPLAYBACK = 32; -const DESKTOP_ENUMERATE = 64; -const DESKTOP_WRITEOBJECTS = 128; -const DESKTOP_SWITCHDESKTOP = 256; - -const CW_USEDEFAULT = 0x80000000; + enum { + BSF_RETURNHDESK = 0x0200, + BSF_LUID = 0x0400 + } +} + +enum BROADCAST_QUERY_DENY = 1112363332; +enum DWORD ENUM_CURRENT_SETTINGS = -1; +enum DWORD ENUM_REGISTRY_SETTINGS = -2; + +enum CDS_UPDATEREGISTRY = 1; +enum CDS_TEST = 2; +enum CDS_FULLSCREEN = 4; +enum CDS_GLOBAL = 8; +enum CDS_SET_PRIMARY = 16; +enum CDS_NORESET = 0x10000000; +enum CDS_SETRECT = 0x20000000; +enum CDS_RESET = 0x40000000; + +enum { + DISP_CHANGE_BADPARAM = -5, + DISP_CHANGE_BADFLAGS, + DISP_CHANGE_NOTUPDATED, + DISP_CHANGE_BADMODE, + DISP_CHANGE_FAILED, + DISP_CHANGE_SUCCESSFUL, + DISP_CHANGE_RESTART // = 1 +} + +enum BST_UNCHECKED = 0; +enum BST_CHECKED = 1; +enum BST_INDETERMINATE = 2; +enum BST_PUSHED = 4; +enum BST_FOCUS = 8; + +enum MF_BYCOMMAND = 0; +enum MF_BYPOSITION = 1024; +// [Redefined] MF_UNCHECKED = 0 +// [Redefined] MF_HILITE = 128 +// [Redefined] MF_UNHILITE = 0 + +enum CWP_ALL = 0; +enum CWP_SKIPINVISIBLE = 1; +enum CWP_SKIPDISABLED = 2; +enum CWP_SKIPTRANSPARENT = 4; + +enum IMAGE_BITMAP = 0; +enum IMAGE_ICON = 1; +enum IMAGE_CURSOR = 2; +enum IMAGE_ENHMETAFILE = 3; + +enum DF_ALLOWOTHERACCOUNTHOOK = 1; + +enum DESKTOP_READOBJECTS = 1; +enum DESKTOP_CREATEWINDOW = 2; +enum DESKTOP_CREATEMENU = 4; +enum DESKTOP_HOOKCONTROL = 8; +enum DESKTOP_JOURNALRECORD = 16; +enum DESKTOP_JOURNALPLAYBACK = 32; +enum DESKTOP_ENUMERATE = 64; +enum DESKTOP_WRITEOBJECTS = 128; +enum DESKTOP_SWITCHDESKTOP = 256; + +enum CW_USEDEFAULT = 0x80000000; enum { WS_OVERLAPPED = 0, @@ -269,234 +289,235 @@ enum { WS_POPUPWINDOW = WS_POPUP|WS_BORDER|WS_SYSMENU, } -const MDIS_ALLCHILDSTYLES = 1; - -const BS_3STATE = 5; -const BS_AUTO3STATE = 6; -const BS_AUTOCHECKBOX = 3; -const BS_AUTORADIOBUTTON = 9; -const BS_BITMAP = 128; -const BS_BOTTOM = 0x800; -const BS_CENTER = 0x300; -const BS_CHECKBOX = 2; -const BS_DEFPUSHBUTTON = 1; -const BS_GROUPBOX = 7; -const BS_ICON = 64; -const BS_LEFT = 256; -const BS_LEFTTEXT = 32; -const BS_MULTILINE = 0x2000; -const BS_NOTIFY = 0x4000; -const BS_OWNERDRAW = 0xb; -const BS_PUSHBUTTON = 0; -const BS_PUSHLIKE = 4096; -const BS_RADIOBUTTON = 4; -const BS_RIGHT = 512; -const BS_RIGHTBUTTON = 32; -const BS_TEXT = 0; -const BS_TOP = 0x400; -const BS_USERBUTTON = 8; -const BS_VCENTER = 0xc00; -const BS_FLAT = 0x8000; - -const CBS_AUTOHSCROLL = 64; -const CBS_DISABLENOSCROLL = 0x800; -const CBS_DROPDOWN = 2; -const CBS_DROPDOWNLIST = 3; -const CBS_HASSTRINGS = 512; -const CBS_LOWERCASE = 0x4000; -const CBS_NOINTEGRALHEIGHT = 0x400; -const CBS_OEMCONVERT = 128; -const CBS_OWNERDRAWFIXED = 16; -const CBS_OWNERDRAWVARIABLE = 32; -const CBS_SIMPLE = 1; -const CBS_SORT = 256; -const CBS_UPPERCASE = 0x2000; - -const ES_AUTOHSCROLL = 128; -const ES_AUTOVSCROLL = 64; -const ES_CENTER = 1; -const ES_LEFT = 0; -const ES_LOWERCASE = 16; -const ES_MULTILINE = 4; -const ES_NOHIDESEL = 256; -const ES_NUMBER = 0x2000; -const ES_OEMCONVERT = 0x400; -const ES_PASSWORD = 32; -const ES_READONLY = 0x800; -const ES_RIGHT = 2; -const ES_UPPERCASE = 8; -const ES_WANTRETURN = 4096; - -const LBS_DISABLENOSCROLL = 4096; -const LBS_EXTENDEDSEL = 0x800; -const LBS_HASSTRINGS = 64; -const LBS_MULTICOLUMN = 512; -const LBS_MULTIPLESEL = 8; -const LBS_NODATA = 0x2000; -const LBS_NOINTEGRALHEIGHT = 256; -const LBS_NOREDRAW = 4; -const LBS_NOSEL = 0x4000; -const LBS_NOTIFY = 1; -const LBS_OWNERDRAWFIXED = 16; -const LBS_OWNERDRAWVARIABLE = 32; -const LBS_SORT = 2; -const LBS_STANDARD = 0xa00003; -const LBS_USETABSTOPS = 128; -const LBS_WANTKEYBOARDINPUT = 0x400; - -const SBS_BOTTOMALIGN = 4; -const SBS_HORZ = 0; -const SBS_LEFTALIGN = 2; -const SBS_RIGHTALIGN = 4; -const SBS_SIZEBOX = 8; -const SBS_SIZEBOXBOTTOMRIGHTALIGN = 4; -const SBS_SIZEBOXTOPLEFTALIGN = 2; -const SBS_SIZEGRIP = 16; -const SBS_TOPALIGN = 2; -const SBS_VERT = 1; - -const SS_BITMAP = 14; -const SS_BLACKFRAME = 7; -const SS_BLACKRECT = 4; -const SS_CENTER = 1; -const SS_CENTERIMAGE = 512; -const SS_ENHMETAFILE = 15; -const SS_ETCHEDFRAME = 18; -const SS_ETCHEDHORZ = 16; -const SS_ETCHEDVERT = 17; -const SS_GRAYFRAME = 8; -const SS_GRAYRECT = 5; -const SS_ICON = 3; -const SS_LEFT = 0; -const SS_LEFTNOWORDWRAP = 0xc; -const SS_NOPREFIX = 128; -const SS_NOTIFY = 256; -const SS_OWNERDRAW = 0xd; -const SS_REALSIZEIMAGE = 0x800; -const SS_RIGHT = 2; -const SS_RIGHTJUST = 0x400; -const SS_SIMPLE = 11; -const SS_SUNKEN = 4096; -const SS_WHITEFRAME = 9; -const SS_WHITERECT = 6; -const SS_USERITEM = 10; -const SS_TYPEMASK = 0x0000001FL; -const SS_ENDELLIPSIS = 0x00004000L; -const SS_PATHELLIPSIS = 0x00008000L; -const SS_WORDELLIPSIS = 0x0000C000L; -const SS_ELLIPSISMASK = 0x0000C000L; - -const DS_ABSALIGN = 0x0001; -const DS_3DLOOK = 0x0004; -const DS_SYSMODAL = 0x0002; -const DS_FIXEDSYS = 0x0008; -const DS_NOFAILCREATE = 0x0010; -const DS_LOCALEDIT = 0x0020; -const DS_SETFONT = 0x0040; -const DS_MODALFRAME = 0x0080; -const DS_NOIDLEMSG = 0x0100; -const DS_SETFOREGROUND = 0x0200; -const DS_CONTROL = 0x0400; -const DS_CENTER = 0x0800; -const DS_CENTERMOUSE = 0x1000; -const DS_CONTEXTHELP = 0x2000; -const DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS; - -const WS_EX_ACCEPTFILES = 16; -const WS_EX_APPWINDOW = 0x40000; -const WS_EX_CLIENTEDGE = 512; -const WS_EX_COMPOSITED = 0x2000000; // XP -const WS_EX_CONTEXTHELP = 0x400; -const WS_EX_CONTROLPARENT = 0x10000; -const WS_EX_DLGMODALFRAME = 1; -const WS_EX_LAYERED = 0x80000; // w2k -const WS_EX_LAYOUTRTL = 0x400000; // w98, w2k -const WS_EX_LEFT = 0; -const WS_EX_LEFTSCROLLBAR = 0x4000; -const WS_EX_LTRREADING = 0; -const WS_EX_MDICHILD = 64; -const WS_EX_NOACTIVATE = 0x8000000; // w2k -const WS_EX_NOINHERITLAYOUT = 0x100000; // w2k -const WS_EX_NOPARENTNOTIFY = 4; -const WS_EX_OVERLAPPEDWINDOW = 0x300; -const WS_EX_PALETTEWINDOW = 0x188; -const WS_EX_RIGHT = 0x1000; -const WS_EX_RIGHTSCROLLBAR = 0; -const WS_EX_RTLREADING = 0x2000; -const WS_EX_STATICEDGE = 0x20000; -const WS_EX_TOOLWINDOW = 128; -const WS_EX_TOPMOST = 8; -const WS_EX_TRANSPARENT = 32; -const WS_EX_WINDOWEDGE = 256; - -const WINSTA_ENUMDESKTOPS = 1; -const WINSTA_READATTRIBUTES = 2; -const WINSTA_ACCESSCLIPBOARD = 4; -const WINSTA_CREATEDESKTOP = 8; -const WINSTA_WRITEATTRIBUTES = 16; -const WINSTA_ACCESSGLOBALATOMS = 32; -const WINSTA_EXITWINDOWS = 64; -const WINSTA_ENUMERATE = 256; -const WINSTA_READSCREEN = 512; - -const DDL_READWRITE = 0; -const DDL_READONLY = 1; -const DDL_HIDDEN = 2; -const DDL_SYSTEM = 4; -const DDL_DIRECTORY = 16; -const DDL_ARCHIVE = 32; -const DDL_POSTMSGS = 8192; -const DDL_DRIVES = 16384; -const DDL_EXCLUSIVE = 32768; - -const DC_ACTIVE = 0x00000001; -const DC_SMALLCAP = 0x00000002; -const DC_ICON = 0x00000004; -const DC_TEXT = 0x00000008; -const DC_INBUTTON = 0x00000010; - -const DC_GRADIENT = 0x00000020; +enum MDIS_ALLCHILDSTYLES = 1; + +enum BS_3STATE = 5; +enum BS_AUTO3STATE = 6; +enum BS_AUTOCHECKBOX = 3; +enum BS_AUTORADIOBUTTON = 9; +enum BS_BITMAP = 128; +enum BS_BOTTOM = 0x800; +enum BS_CENTER = 0x300; +enum BS_CHECKBOX = 2; +enum BS_DEFPUSHBUTTON = 1; +enum BS_GROUPBOX = 7; +enum BS_ICON = 64; +enum BS_LEFT = 256; +enum BS_LEFTTEXT = 32; +enum BS_MULTILINE = 0x2000; +enum BS_NOTIFY = 0x4000; +enum BS_OWNERDRAW = 0xb; +enum BS_PUSHBUTTON = 0; +enum BS_PUSHLIKE = 4096; +enum BS_RADIOBUTTON = 4; +enum BS_RIGHT = 512; +enum BS_RIGHTBUTTON = 32; +enum BS_TEXT = 0; +enum BS_TOP = 0x400; +enum BS_USERBUTTON = 8; +enum BS_VCENTER = 0xc00; +enum BS_FLAT = 0x8000; + +enum CBS_AUTOHSCROLL = 64; +enum CBS_DISABLENOSCROLL = 0x800; +enum CBS_DROPDOWN = 2; +enum CBS_DROPDOWNLIST = 3; +enum CBS_HASSTRINGS = 512; +enum CBS_LOWERCASE = 0x4000; +enum CBS_NOINTEGRALHEIGHT = 0x400; +enum CBS_OEMCONVERT = 128; +enum CBS_OWNERDRAWFIXED = 16; +enum CBS_OWNERDRAWVARIABLE = 32; +enum CBS_SIMPLE = 1; +enum CBS_SORT = 256; +enum CBS_UPPERCASE = 0x2000; + +enum ES_AUTOHSCROLL = 128; +enum ES_AUTOVSCROLL = 64; +enum ES_CENTER = 1; +enum ES_LEFT = 0; +enum ES_LOWERCASE = 16; +enum ES_MULTILINE = 4; +enum ES_NOHIDESEL = 256; +enum ES_NUMBER = 0x2000; +enum ES_OEMCONVERT = 0x400; +enum ES_PASSWORD = 32; +enum ES_READONLY = 0x800; +enum ES_RIGHT = 2; +enum ES_UPPERCASE = 8; +enum ES_WANTRETURN = 4096; + +enum LBS_DISABLENOSCROLL = 4096; +enum LBS_EXTENDEDSEL = 0x800; +enum LBS_HASSTRINGS = 64; +enum LBS_MULTICOLUMN = 512; +enum LBS_MULTIPLESEL = 8; +enum LBS_NODATA = 0x2000; +enum LBS_NOINTEGRALHEIGHT = 256; +enum LBS_NOREDRAW = 4; +enum LBS_NOSEL = 0x4000; +enum LBS_NOTIFY = 1; +enum LBS_OWNERDRAWFIXED = 16; +enum LBS_OWNERDRAWVARIABLE = 32; +enum LBS_SORT = 2; +enum LBS_STANDARD = 0xa00003; +enum LBS_USETABSTOPS = 128; +enum LBS_WANTKEYBOARDINPUT = 0x400; + +enum SBS_BOTTOMALIGN = 4; +enum SBS_HORZ = 0; +enum SBS_LEFTALIGN = 2; +enum SBS_RIGHTALIGN = 4; +enum SBS_SIZEBOX = 8; +enum SBS_SIZEBOXBOTTOMRIGHTALIGN = 4; +enum SBS_SIZEBOXTOPLEFTALIGN = 2; +enum SBS_SIZEGRIP = 16; +enum SBS_TOPALIGN = 2; +enum SBS_VERT = 1; + +enum SS_BITMAP = 14; +enum SS_BLACKFRAME = 7; +enum SS_BLACKRECT = 4; +enum SS_CENTER = 1; +enum SS_CENTERIMAGE = 512; +enum SS_ENHMETAFILE = 15; +enum SS_ETCHEDFRAME = 18; +enum SS_ETCHEDHORZ = 16; +enum SS_ETCHEDVERT = 17; +enum SS_GRAYFRAME = 8; +enum SS_GRAYRECT = 5; +enum SS_ICON = 3; +enum SS_LEFT = 0; +enum SS_LEFTNOWORDWRAP = 0xc; +enum SS_NOPREFIX = 128; +enum SS_NOTIFY = 256; +enum SS_OWNERDRAW = 0xd; +enum SS_REALSIZEIMAGE = 0x800; +enum SS_RIGHT = 2; +enum SS_RIGHTJUST = 0x400; +enum SS_SIMPLE = 11; +enum SS_SUNKEN = 4096; +enum SS_WHITEFRAME = 9; +enum SS_WHITERECT = 6; +enum SS_USERITEM = 10; +enum SS_TYPEMASK = 0x0000001FL; +enum SS_ENDELLIPSIS = 0x00004000L; +enum SS_PATHELLIPSIS = 0x00008000L; +enum SS_WORDELLIPSIS = 0x0000C000L; +enum SS_ELLIPSISMASK = 0x0000C000L; + +enum DS_ABSALIGN = 0x0001; +enum DS_3DLOOK = 0x0004; +enum DS_SYSMODAL = 0x0002; +enum DS_FIXEDSYS = 0x0008; +enum DS_NOFAILCREATE = 0x0010; +enum DS_LOCALEDIT = 0x0020; +enum DS_SETFONT = 0x0040; +enum DS_MODALFRAME = 0x0080; +enum DS_NOIDLEMSG = 0x0100; +enum DS_SETFOREGROUND = 0x0200; +enum DS_CONTROL = 0x0400; +enum DS_CENTER = 0x0800; +enum DS_CENTERMOUSE = 0x1000; +enum DS_CONTEXTHELP = 0x2000; +enum DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS; + +enum WS_EX_ACCEPTFILES = 16; +enum WS_EX_APPWINDOW = 0x40000; +enum WS_EX_CLIENTEDGE = 512; +enum WS_EX_COMPOSITED = 0x2000000; // XP +enum WS_EX_CONTEXTHELP = 0x400; +enum WS_EX_CONTROLPARENT = 0x10000; +enum WS_EX_DLGMODALFRAME = 1; +enum WS_EX_LAYERED = 0x80000; // w2k +enum WS_EX_LAYOUTRTL = 0x400000; // w98, w2k +enum WS_EX_LEFT = 0; +enum WS_EX_LEFTSCROLLBAR = 0x4000; +enum WS_EX_LTRREADING = 0; +enum WS_EX_MDICHILD = 64; +enum WS_EX_NOACTIVATE = 0x8000000; // w2k +enum WS_EX_NOINHERITLAYOUT = 0x100000; // w2k +enum WS_EX_NOPARENTNOTIFY = 4; +enum WS_EX_OVERLAPPEDWINDOW = 0x300; +enum WS_EX_PALETTEWINDOW = 0x188; +enum WS_EX_RIGHT = 0x1000; +enum WS_EX_RIGHTSCROLLBAR = 0; +enum WS_EX_RTLREADING = 0x2000; +enum WS_EX_STATICEDGE = 0x20000; +enum WS_EX_TOOLWINDOW = 128; +enum WS_EX_TOPMOST = 8; +enum WS_EX_TRANSPARENT = 32; +enum WS_EX_WINDOWEDGE = 256; + +enum WINSTA_ENUMDESKTOPS = 1; +enum WINSTA_READATTRIBUTES = 2; +enum WINSTA_ACCESSCLIPBOARD = 4; +enum WINSTA_CREATEDESKTOP = 8; +enum WINSTA_WRITEATTRIBUTES = 16; +enum WINSTA_ACCESSGLOBALATOMS = 32; +enum WINSTA_EXITWINDOWS = 64; +enum WINSTA_ENUMERATE = 256; +enum WINSTA_READSCREEN = 512; + +enum DDL_READWRITE = 0; +enum DDL_READONLY = 1; +enum DDL_HIDDEN = 2; +enum DDL_SYSTEM = 4; +enum DDL_DIRECTORY = 16; +enum DDL_ARCHIVE = 32; +enum DDL_POSTMSGS = 8192; +enum DDL_DRIVES = 16384; +enum DDL_EXCLUSIVE = 32768; + +enum { + DC_ACTIVE = 0x0001, + DC_SMALLCAP = 0x0002, + DC_ICON = 0x0004, + DC_TEXT = 0x0008, + DC_INBUTTON = 0x0010, + DC_GRADIENT = 0x0020 +} static if (_WIN32_WINNT >= 0x501) { - const DC_BUTTONS = 0x00001000; + enum DC_BUTTONS = 0x1000; } // Where are these documented? -//const DC_CAPTION = DC_ICON|DC_TEXT|DC_BUTTONS; -//const DC_NC = DC_CAPTION|DC_FRAME; - -const BDR_RAISEDOUTER = 1; -const BDR_SUNKENOUTER = 2; -const BDR_RAISEDINNER = 4; -const BDR_SUNKENINNER = 8; -const BDR_OUTER = 3; -const BDR_INNER = 0xc; -const BDR_RAISED = 5; -const BDR_SUNKEN = 10; - -const EDGE_RAISED = BDR_RAISEDOUTER|BDR_RAISEDINNER; -const EDGE_SUNKEN = BDR_SUNKENOUTER|BDR_SUNKENINNER; -const EDGE_ETCHED = BDR_SUNKENOUTER|BDR_RAISEDINNER; -const EDGE_BUMP = BDR_RAISEDOUTER|BDR_SUNKENINNER; - -const BF_LEFT = 1; -const BF_TOP = 2; -const BF_RIGHT = 4; -const BF_BOTTOM = 8; -const BF_TOPLEFT = BF_TOP|BF_LEFT; -const BF_TOPRIGHT = BF_TOP|BF_RIGHT; -const BF_BOTTOMLEFT = BF_BOTTOM|BF_LEFT; -const BF_BOTTOMRIGHT = BF_BOTTOM|BF_RIGHT; -const BF_RECT = BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM ; -const BF_DIAGONAL = 16; -const BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL|BF_TOP|BF_RIGHT; -const BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL|BF_TOP|BF_LEFT; -const BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL|BF_BOTTOM|BF_LEFT; -const BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL|BF_BOTTOM|BF_RIGHT; -const BF_MIDDLE = 0x800; -const BF_SOFT = 0x1000; -const BF_ADJUST = 0x2000; -const BF_FLAT = 0x4000; -const BF_MONO = 0x8000; +//enum DC_CAPTION = DC_ICON|DC_TEXT|DC_BUTTONS; +//enum DC_NC = DC_CAPTION|DC_FRAME; + +enum BDR_RAISEDOUTER = 1; +enum BDR_SUNKENOUTER = 2; +enum BDR_RAISEDINNER = 4; +enum BDR_SUNKENINNER = 8; +enum BDR_OUTER = 3; +enum BDR_INNER = 0xc; +enum BDR_RAISED = 5; +enum BDR_SUNKEN = 10; + +enum EDGE_RAISED = BDR_RAISEDOUTER|BDR_RAISEDINNER; +enum EDGE_SUNKEN = BDR_SUNKENOUTER|BDR_SUNKENINNER; +enum EDGE_ETCHED = BDR_SUNKENOUTER|BDR_RAISEDINNER; +enum EDGE_BUMP = BDR_RAISEDOUTER|BDR_SUNKENINNER; + +enum BF_LEFT = 1; +enum BF_TOP = 2; +enum BF_RIGHT = 4; +enum BF_BOTTOM = 8; +enum BF_TOPLEFT = BF_TOP|BF_LEFT; +enum BF_TOPRIGHT = BF_TOP|BF_RIGHT; +enum BF_BOTTOMLEFT = BF_BOTTOM|BF_LEFT; +enum BF_BOTTOMRIGHT = BF_BOTTOM|BF_RIGHT; +enum BF_RECT = BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM ; +enum BF_DIAGONAL = 16; +enum BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL|BF_TOP|BF_RIGHT; +enum BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL|BF_TOP|BF_LEFT; +enum BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL|BF_BOTTOM|BF_LEFT; +enum BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL|BF_BOTTOM|BF_RIGHT; +enum BF_MIDDLE = 0x800; +enum BF_SOFT = 0x1000; +enum BF_ADJUST = 0x2000; +enum BF_FLAT = 0x4000; +enum BF_MONO = 0x8000; enum { DFC_CAPTION = 1, @@ -506,41 +527,47 @@ enum { DFC_POPUPMENU // = 5 } -const DFCS_CAPTIONCLOSE = 0; -const DFCS_CAPTIONMIN = 1; -const DFCS_CAPTIONMAX = 2; -const DFCS_CAPTIONRESTORE = 3; -const DFCS_CAPTIONHELP = 4; - -const DFCS_MENUARROW = 0; -const DFCS_MENUCHECK = 1; -const DFCS_MENUBULLET = 2; -const DFCS_MENUARROWRIGHT = 4; - -const DFCS_SCROLLUP = 0; -const DFCS_SCROLLDOWN = 1; -const DFCS_SCROLLLEFT = 2; -const DFCS_SCROLLRIGHT = 3; -const DFCS_SCROLLCOMBOBOX = 5; -const DFCS_SCROLLSIZEGRIP = 8; -const DFCS_SCROLLSIZEGRIPRIGHT = 16; - -const DFCS_BUTTONCHECK = 0; -const DFCS_BUTTONRADIOIMAGE = 1; -const DFCS_BUTTONRADIOMASK = 2; -const DFCS_BUTTONRADIO = 4; -const DFCS_BUTTON3STATE = 8; -const DFCS_BUTTONPUSH = 16; -const DFCS_INACTIVE = 256; -const DFCS_PUSHED = 512; -const DFCS_CHECKED = 1024; -static if (_WIN32_WINNT >= 0x500) { - const DFCS_TRANSPARENT = 0x800; - const DFCS_HOT = 0x1000; -} -const DFCS_ADJUSTRECT = 0x2000; -const DFCS_FLAT = 0x4000; -const DFCS_MONO = 0x8000; +enum { + DFCS_CAPTIONCLOSE, + DFCS_CAPTIONMIN, + DFCS_CAPTIONMAX, + DFCS_CAPTIONRESTORE, + DFCS_CAPTIONHELP // = 4 +} + +enum { + DFCS_MENUARROW = 0, + DFCS_MENUCHECK = 1, + DFCS_MENUBULLET = 2, + DFCS_MENUARROWRIGHT = 4 +} + +enum { + DFCS_SCROLLUP = 0, + DFCS_SCROLLDOWN = 1, + DFCS_SCROLLLEFT = 2, + DFCS_SCROLLRIGHT = 3, + DFCS_SCROLLCOMBOBOX = 5, + DFCS_SCROLLSIZEGRIP = 8, + DFCS_SCROLLSIZEGRIPRIGHT = 16 +} + +enum { + DFCS_BUTTONCHECK = 0, + DFCS_BUTTONRADIOIMAGE = 0x0001, + DFCS_BUTTONRADIOMASK = 0x0002, + DFCS_BUTTONRADIO = 0x0004, + DFCS_BUTTON3STATE = 0x0008, + DFCS_BUTTONPUSH = 0x0010, + DFCS_INACTIVE = 0x0100, + DFCS_PUSHED = 0x0200, + DFCS_CHECKED = 0x0400, + DFCS_TRANSPARENT = 0x0800, + DFCS_HOT = 0x1000, + DFCS_ADJUSTRECT = 0x2000, + DFCS_FLAT = 0x4000, + DFCS_MONO = 0x8000 +} enum { DST_COMPLEX = 0, @@ -550,147 +577,144 @@ enum { DST_BITMAP // = 4 } -const DSS_NORMAL = 0; -const DSS_UNION = 16; -const DSS_DISABLED = 32; -const DSS_MONO = 128; -const DSS_RIGHT = 0x8000; - -const DT_BOTTOM = 8; -const DT_CALCRECT = 1024; -const DT_CENTER = 1; -const DT_EDITCONTROL = 8192; -const DT_END_ELLIPSIS = 32768; -const DT_PATH_ELLIPSIS = 16384; -const DT_WORD_ELLIPSIS = 0x40000; -const DT_EXPANDTABS = 64; -const DT_EXTERNALLEADING = 512; -const DT_LEFT = 0; -const DT_MODIFYSTRING = 65536; -const DT_NOCLIP = 256; -const DT_NOPREFIX = 2048; -const DT_RIGHT = 2; -const DT_RTLREADING = 131072; -const DT_SINGLELINE = 32; -const DT_TABSTOP = 128; -const DT_TOP = 0; -const DT_VCENTER = 4; -const DT_WORDBREAK = 16; -const DT_INTERNAL = 4096; - -const WB_ISDELIMITER = 2; -const WB_LEFT = 0; -const WB_RIGHT = 1; - -const SB_HORZ = 0; -const SB_VERT = 1; -const SB_CTL = 2; -const SB_BOTH = 3; - -const ESB_DISABLE_BOTH = 3; -const ESB_DISABLE_DOWN = 2; -const ESB_DISABLE_LEFT = 1; -const ESB_DISABLE_LTUP = 1; -const ESB_DISABLE_RIGHT = 2; -const ESB_DISABLE_RTDN = 2; -const ESB_DISABLE_UP = 1; -const ESB_ENABLE_BOTH = 0; - -const SB_LINEUP = 0; -const SB_LINEDOWN = 1; -const SB_LINELEFT = 0; -const SB_LINERIGHT = 1; -const SB_PAGEUP = 2; -const SB_PAGEDOWN = 3; -const SB_PAGELEFT = 2; -const SB_PAGERIGHT = 3; -const SB_THUMBPOSITION = 4; -const SB_THUMBTRACK = 5; -const SB_ENDSCROLL = 8; -const SB_LEFT = 6; -const SB_RIGHT = 7; -const SB_BOTTOM = 7; -const SB_TOP = 6; +enum DSS_NORMAL = 0; +enum DSS_UNION = 16; +enum DSS_DISABLED = 32; +enum DSS_MONO = 128; +enum DSS_RIGHT = 0x8000; + +enum DT_BOTTOM = 8; +enum DT_CALCRECT = 1024; +enum DT_CENTER = 1; +enum DT_EDITCONTROL = 8192; +enum DT_END_ELLIPSIS = 32768; +enum DT_PATH_ELLIPSIS = 16384; +enum DT_WORD_ELLIPSIS = 0x40000; +enum DT_EXPANDTABS = 64; +enum DT_EXTERNALLEADING = 512; +enum DT_LEFT = 0; +enum DT_MODIFYSTRING = 65536; +enum DT_NOCLIP = 256; +enum DT_NOPREFIX = 2048; +enum DT_RIGHT = 2; +enum DT_RTLREADING = 131072; +enum DT_SINGLELINE = 32; +enum DT_TABSTOP = 128; +enum DT_TOP = 0; +enum DT_VCENTER = 4; +enum DT_WORDBREAK = 16; +enum DT_INTERNAL = 4096; + +enum WB_ISDELIMITER = 2; +enum WB_LEFT = 0; +enum WB_RIGHT = 1; + +enum SB_HORZ = 0; +enum SB_VERT = 1; +enum SB_CTL = 2; +enum SB_BOTH = 3; + +enum ESB_DISABLE_BOTH = 3; +enum ESB_DISABLE_DOWN = 2; +enum ESB_DISABLE_LEFT = 1; +enum ESB_DISABLE_LTUP = 1; +enum ESB_DISABLE_RIGHT = 2; +enum ESB_DISABLE_RTDN = 2; +enum ESB_DISABLE_UP = 1; +enum ESB_ENABLE_BOTH = 0; + +enum SB_LINEUP = 0; +enum SB_LINEDOWN = 1; +enum SB_LINELEFT = 0; +enum SB_LINERIGHT = 1; +enum SB_PAGEUP = 2; +enum SB_PAGEDOWN = 3; +enum SB_PAGELEFT = 2; +enum SB_PAGERIGHT = 3; +enum SB_THUMBPOSITION = 4; +enum SB_THUMBTRACK = 5; +enum SB_ENDSCROLL = 8; +enum SB_LEFT = 6; +enum SB_RIGHT = 7; +enum SB_BOTTOM = 7; +enum SB_TOP = 6; //MACRO #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0) -template MAKEINTRESOURCE_T (WORD i) -{ - const LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i); +template MAKEINTRESOURCE_T(WORD i) { + enum LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i); } -LPSTR MAKEINTRESOURCEA(WORD i) -{ - return cast(LPSTR)(i); +LPSTR MAKEINTRESOURCEA()(WORD i) { + return cast(LPSTR) i; } -LPWSTR MAKEINTRESOURCEW(WORD i) -{ - return cast(LPWSTR)(i); -} - -const RT_CURSOR = MAKEINTRESOURCE_T!(1); -const RT_BITMAP = MAKEINTRESOURCE_T!(2); -const RT_ICON = MAKEINTRESOURCE_T!(3); -const RT_MENU = MAKEINTRESOURCE_T!(4); -const RT_DIALOG = MAKEINTRESOURCE_T!(5); -const RT_STRING = MAKEINTRESOURCE_T!(6); -const RT_FONTDIR = MAKEINTRESOURCE_T!(7); -const RT_FONT = MAKEINTRESOURCE_T!(8); -const RT_ACCELERATOR = MAKEINTRESOURCE_T!(9); -const RT_RCDATA = MAKEINTRESOURCE_T!(10); -const RT_MESSAGETABLE = MAKEINTRESOURCE_T!(11); - -const RT_GROUP_CURSOR = MAKEINTRESOURCE_T!(12); -const RT_GROUP_ICON = MAKEINTRESOURCE_T!(14); -const RT_VERSION = MAKEINTRESOURCE_T!(16); -const RT_DLGINCLUDE = MAKEINTRESOURCE_T!(17); -const RT_PLUGPLAY = MAKEINTRESOURCE_T!(19); -const RT_VXD = MAKEINTRESOURCE_T!(20); -const RT_ANICURSOR = MAKEINTRESOURCE_T!(21); -const RT_ANIICON = MAKEINTRESOURCE_T!(22); -const RT_HTML = MAKEINTRESOURCE_T!(23); -const RT_MANIFEST = MAKEINTRESOURCE_T!(24); - -const CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(1); -const ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(2); -const ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(3); - -const EWX_LOGOFF = 0; -const EWX_SHUTDOWN = 1; -const EWX_REBOOT = 2; -const EWX_FORCE = 4; -const EWX_POWEROFF = 8; -static if (_WIN32_WINNT >= 0x500) { -const EWX_FORCEIFHUNG = 16; -} - -const CS_BYTEALIGNCLIENT = 4096; -const CS_BYTEALIGNWINDOW = 8192; -const CS_KEYCVTWINDOW = 4; -const CS_NOKEYCVT = 256; -const CS_CLASSDC = 64; -const CS_DBLCLKS = 8; -const CS_GLOBALCLASS = 16384; -const CS_HREDRAW = 2; -const CS_NOCLOSE = 512; -const CS_OWNDC = 32; -const CS_PARENTDC = 128; -const CS_SAVEBITS = 2048; -const CS_VREDRAW = 1; -const CS_IME = 0x10000; - -const GCW_ATOM = -32; -const GCL_CBCLSEXTRA = -20; -const GCL_CBWNDEXTRA = -18; -const GCL_HBRBACKGROUND = -10; -const GCL_HCURSOR = -12; -const GCL_HICON = -14; -const GCL_HICONSM = -34; -const GCL_HMODULE = -16; -const GCL_MENUNAME = -8; -const GCL_STYLE = -26; -const GCL_WNDPROC = -24; +LPWSTR MAKEINTRESOURCEW()(WORD i) { + return cast(LPWSTR) i; +} + +enum RT_CURSOR = MAKEINTRESOURCE_T!(1); +enum RT_BITMAP = MAKEINTRESOURCE_T!(2); +enum RT_ICON = MAKEINTRESOURCE_T!(3); +enum RT_MENU = MAKEINTRESOURCE_T!(4); +enum RT_DIALOG = MAKEINTRESOURCE_T!(5); +enum RT_STRING = MAKEINTRESOURCE_T!(6); +enum RT_FONTDIR = MAKEINTRESOURCE_T!(7); +enum RT_FONT = MAKEINTRESOURCE_T!(8); +enum RT_ACCELERATOR = MAKEINTRESOURCE_T!(9); +enum RT_RCDATA = MAKEINTRESOURCE_T!(10); +enum RT_MESSAGETABLE = MAKEINTRESOURCE_T!(11); + +enum RT_GROUP_CURSOR = MAKEINTRESOURCE_T!(12); +enum RT_GROUP_ICON = MAKEINTRESOURCE_T!(14); +enum RT_VERSION = MAKEINTRESOURCE_T!(16); +enum RT_DLGINCLUDE = MAKEINTRESOURCE_T!(17); +enum RT_PLUGPLAY = MAKEINTRESOURCE_T!(19); +enum RT_VXD = MAKEINTRESOURCE_T!(20); +enum RT_ANICURSOR = MAKEINTRESOURCE_T!(21); +enum RT_ANIICON = MAKEINTRESOURCE_T!(22); +enum RT_HTML = MAKEINTRESOURCE_T!(23); +enum RT_MANIFEST = MAKEINTRESOURCE_T!(24); + +enum CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(1); +enum ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(2); +enum ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(3); + +enum { + EWX_LOGOFF = 0, + EWX_SHUTDOWN = 1, + EWX_REBOOT = 2, + EWX_FORCE = 4, + EWX_POWEROFF = 8, + EWX_FORCEIFHUNG = 16 +} + +enum CS_BYTEALIGNCLIENT = 4096; +enum CS_BYTEALIGNWINDOW = 8192; +enum CS_KEYCVTWINDOW = 4; +enum CS_NOKEYCVT = 256; +enum CS_CLASSDC = 64; +enum CS_DBLCLKS = 8; +enum CS_GLOBALCLASS = 16384; +enum CS_HREDRAW = 2; +enum CS_NOCLOSE = 512; +enum CS_OWNDC = 32; +enum CS_PARENTDC = 128; +enum CS_SAVEBITS = 2048; +enum CS_VREDRAW = 1; +enum CS_IME = 0x10000; + +enum GCW_ATOM = -32; +enum GCL_CBCLSEXTRA = -20; +enum GCL_CBWNDEXTRA = -18; +enum GCL_HBRBACKGROUND = -10; +enum GCL_HCURSOR = -12; +enum GCL_HICON = -14; +enum GCL_HICONSM = -34; +enum GCL_HMODULE = -16; +enum GCL_MENUNAME = -8; +enum GCL_STYLE = -26; +enum GCL_WNDPROC = -24; alias GCL_HICONSM GCLP_HICONSM; alias GCL_HICON GCLP_HICON; @@ -700,264 +724,259 @@ alias GCL_HMODULE GCLP_HMODULE; alias GCL_MENUNAME GCLP_MENUNAME; alias GCL_WNDPROC GCLP_WNDPROC; -const IDC_ARROW = MAKEINTRESOURCE_T!(32512); -const IDC_IBEAM = MAKEINTRESOURCE_T!(32513); -const IDC_WAIT = MAKEINTRESOURCE_T!(32514); -const IDC_CROSS = MAKEINTRESOURCE_T!(32515); -const IDC_UPARROW = MAKEINTRESOURCE_T!(32516); -const IDC_SIZENWSE = MAKEINTRESOURCE_T!(32642); -const IDC_SIZENESW = MAKEINTRESOURCE_T!(32643); -const IDC_SIZEWE = MAKEINTRESOURCE_T!(32644); -const IDC_SIZENS = MAKEINTRESOURCE_T!(32645); -const IDC_SIZEALL = MAKEINTRESOURCE_T!(32646); -const IDC_NO = MAKEINTRESOURCE_T!(32648); -static if (_WIN32_WINNT >= 0x500) { - const IDC_HAND = MAKEINTRESOURCE_T!(32649); -} -const IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650); -const IDC_HELP = MAKEINTRESOURCE_T!(32651); -const IDC_ICON = MAKEINTRESOURCE_T!(32641); -const IDC_SIZE = MAKEINTRESOURCE_T!(32640); -const IDI_APPLICATION = MAKEINTRESOURCE_T!(32512); -const IDI_HAND = MAKEINTRESOURCE_T!(32513); -const IDI_QUESTION = MAKEINTRESOURCE_T!(32514); -const IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515); -const IDI_ASTERISK = MAKEINTRESOURCE_T!(32516); -const IDI_WINLOGO = MAKEINTRESOURCE_T!(32517); +enum { + IDC_ARROW = MAKEINTRESOURCE_T!(32512), + IDC_IBEAM = MAKEINTRESOURCE_T!(32513), + IDC_WAIT = MAKEINTRESOURCE_T!(32514), + IDC_CROSS = MAKEINTRESOURCE_T!(32515), + IDC_UPARROW = MAKEINTRESOURCE_T!(32516), + IDC_SIZE = MAKEINTRESOURCE_T!(32640), + IDC_ICON = MAKEINTRESOURCE_T!(32641), + IDC_SIZENWSE = MAKEINTRESOURCE_T!(32642), + IDC_SIZENESW = MAKEINTRESOURCE_T!(32643), + IDC_SIZEWE = MAKEINTRESOURCE_T!(32644), + IDC_SIZENS = MAKEINTRESOURCE_T!(32645), + IDC_SIZEALL = MAKEINTRESOURCE_T!(32646), + IDC_NO = MAKEINTRESOURCE_T!(32648), + IDC_HAND = MAKEINTRESOURCE_T!(32649), + IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650), + IDC_HELP = MAKEINTRESOURCE_T!(32651), + IDI_APPLICATION = MAKEINTRESOURCE_T!(32512), + IDI_HAND = MAKEINTRESOURCE_T!(32513), + IDI_QUESTION = MAKEINTRESOURCE_T!(32514), + IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515), + IDI_ASTERISK = MAKEINTRESOURCE_T!(32516), + IDI_WINLOGO = MAKEINTRESOURCE_T!(32517), + IDI_WARNING = IDI_EXCLAMATION, + IDI_ERROR = IDI_HAND, + IDI_INFORMATION = IDI_ASTERISK +} static if (_WIN32_WINNT >= 0x600) { - const IDI_SHIELD = MAKEINTRESOURCE_T!(32518); -} - -const IDI_WARNING = IDI_EXCLAMATION; -const IDI_ERROR = IDI_HAND; -const IDI_INFORMATION = IDI_ASTERISK; - -static if(_WIN32_WINNT >= 0x500) { - -const MNGOF_TOPGAP = 0x00000001; -const MNGOF_BOTTOMGAP = 0x00000002; -const MNGO_NOINTERFACE = 0x00000000; -const MNGO_NOERROR = 0x00000001; - -} - -const MIIM_STATE = 1; -const MIIM_ID = 2; -const MIIM_SUBMENU = 4; -const MIIM_CHECKMARKS = 8; -const MIIM_TYPE = 16; -const MIIM_DATA = 32; -const MIIM_STRING = 64; -const MIIM_BITMAP = 128; -const MIIM_FTYPE = 256; - -static if (_WIN32_WINNT >= 0x500) { - - const MIM_MAXHEIGHT = 1; - const MIM_BACKGROUND = 2; - const MIM_HELPID = 4; - const MIM_MENUDATA = 8; - const MIM_STYLE = 16; - const MIM_APPLYTOSUBMENUS = 0x80000000L; - - const MNS_NOCHECK = 0x80000000; - const MNS_MODELESS = 0x40000000; - const MNS_DRAGDROP = 0x20000000; - const MNS_AUTODISMISS = 0x10000000; - const MNS_NOTIFYBYPOS = 0x08000000; - const MNS_CHECKORBMP = 0x04000000; - -} - -const MFT_BITMAP = 4; -const MFT_MENUBARBREAK = 32; -const MFT_MENUBREAK = 64; -const MFT_OWNERDRAW = 256; -const MFT_RADIOCHECK = 512; -const MFT_RIGHTJUSTIFY = 0x4000; -const MFT_SEPARATOR = 0x800; -const MFT_RIGHTORDER = 0x2000L; -const MFT_STRING = 0; - -const MFS_CHECKED = 8; -const MFS_DEFAULT = 4096; -const MFS_DISABLED = 3; -const MFS_ENABLED = 0; -const MFS_GRAYED = 3; -const MFS_HILITE = 128; -const MFS_UNCHECKED = 0; -const MFS_UNHILITE = 0; - -const GW_HWNDNEXT = 2; -const GW_HWNDPREV = 3; -const GW_CHILD = 5; -const GW_HWNDFIRST = 0; -const GW_HWNDLAST = 1; -const GW_OWNER = 4; - -const SW_HIDE = 0; -const SW_NORMAL = 1; -const SW_SHOWNORMAL = 1; -const SW_SHOWMINIMIZED = 2; -const SW_MAXIMIZE = 3; -const SW_SHOWMAXIMIZED = 3; -const SW_SHOWNOACTIVATE = 4; -const SW_SHOW = 5; -const SW_MINIMIZE = 6; -const SW_SHOWMINNOACTIVE = 7; -const SW_SHOWNA = 8; -const SW_RESTORE = 9; -const SW_SHOWDEFAULT = 10; -const SW_FORCEMINIMIZE = 11; -const SW_MAX = 11; - -const MB_USERICON = 128; -const MB_ICONASTERISK = 64; -const MB_ICONEXCLAMATION = 0x30; -const MB_ICONWARNING = 0x30; -const MB_ICONERROR = 16; -const MB_ICONHAND = 16; -const MB_ICONQUESTION = 32; -const MB_OK = 0; -const MB_ABORTRETRYIGNORE = 2; -const MB_APPLMODAL = 0; -const MB_DEFAULT_DESKTOP_ONLY = 0x20000; -const MB_HELP = 0x4000; -const MB_RIGHT = 0x80000; -const MB_RTLREADING = 0x100000; -const MB_TOPMOST = 0x40000; -const MB_DEFBUTTON1 = 0; -const MB_DEFBUTTON2 = 256; -const MB_DEFBUTTON3 = 512; -const MB_DEFBUTTON4 = 0x300; -const MB_ICONINFORMATION = 64; -const MB_ICONSTOP = 16; -const MB_OKCANCEL = 1; -const MB_RETRYCANCEL = 5; - -const MB_SERVICE_NOTIFICATION = 0x00200000; -const MB_SERVICE_NOTIFICATION_NT3X = 0x00040000; - -const MB_SETFOREGROUND = 0x10000; -const MB_SYSTEMMODAL = 4096; -const MB_TASKMODAL = 0x2000; -const MB_YESNO = 4; -const MB_YESNOCANCEL = 3; -const MB_ICONMASK = 240; -const MB_DEFMASK = 3840; -const MB_MODEMASK = 0x00003000; -const MB_MISCMASK = 0x0000C000; -const MB_NOFOCUS = 0x00008000; -const MB_TYPEMASK = 15; -// [Redefined] MB_TOPMOST=0x40000 -static if (_WIN32_WINNT >= 0x500) { - const MB_CANCELTRYCONTINUE=6; -} - -const IDOK = 1; -const IDCANCEL = 2; -const IDABORT = 3; -const IDRETRY = 4; -const IDIGNORE = 5; -const IDYES = 6; -const IDNO = 7; -static if (_WIN32_WINNT >= 0x400) { - const IDCLOSE = 8; - const IDHELP = 9; -} -static if (_WIN32_WINNT >= 0x500) { - const IDTRYAGAIN = 10; - const IDCONTINUE = 11; -} - -const GWL_EXSTYLE = -20; -const GWL_STYLE = -16; -const GWL_WNDPROC = -4; -const GWLP_WNDPROC = -4; -const GWL_HINSTANCE = -6; -const GWLP_HINSTANCE = -6; -const GWL_HWNDPARENT = -8; -const GWLP_HWNDPARENT = -8; -const GWL_ID = -12; -const GWLP_ID = -12; -const GWL_USERDATA = -21; -const GWLP_USERDATA = -21; - -const DWL_DLGPROC = 4; -const DWLP_DLGPROC = 4; -const DWL_MSGRESULT = 0; -const DWLP_MSGRESULT = 0; -const DWL_USER = 8; -const DWLP_USER = 8; - -const QS_KEY = 1; -const QS_MOUSEMOVE = 2; -const QS_MOUSEBUTTON = 4; -const QS_MOUSE = 6; -const QS_POSTMESSAGE = 8; -const QS_TIMER = 16; -const QS_PAINT = 32; -const QS_SENDMESSAGE = 64; -const QS_HOTKEY = 128; -const QS_ALLPOSTMESSAGE = 256; + enum IDI_SHIELD = MAKEINTRESOURCE_T!(32518); +} + +enum { + MIIM_STATE = 0x0001, + MIIM_ID = 0x0002, + MIIM_SUBMENU = 0x0004, + MIIM_CHECKMARKS = 0x0008, + MIIM_TYPE = 0x0010, + MIIM_DATA = 0x0020, + MIIM_STRING = 0x0040, + MIIM_BITMAP = 0x0080, + MIIM_FTYPE = 0x0100 +} + +enum { + MFT_BITMAP = 0x0004, + MFT_MENUBARBREAK = 0x0020, + MFT_MENUBREAK = 0x0040, + MFT_OWNERDRAW = 0x0100, + MFT_RADIOCHECK = 0x0200, + MFT_RIGHTJUSTIFY = 0x4000, + MFT_SEPARATOR = 0x0800, + MFT_RIGHTORDER = 0x2000, + MFT_STRING = 0 +} + +enum { + MFS_CHECKED = 8, + MFS_DEFAULT = 4096, + MFS_DISABLED = 3, + MFS_ENABLED = 0, + MFS_GRAYED = 3, + MFS_HILITE = 128, + MFS_UNCHECKED = 0, + MFS_UNHILITE = 0 +} + +enum { + GW_HWNDFIRST = 0, + GW_HWNDLAST, + GW_HWNDNEXT, + GW_HWNDPREV, + GW_OWNER, + GW_CHILD // = 5 +} + +enum { + SW_HIDE = 0, + SW_NORMAL = 1, + SW_SHOWNORMAL = 1, + SW_SHOWMINIMIZED = 2, + SW_MAXIMIZE = 3, + SW_SHOWMAXIMIZED = 3, + SW_SHOWNOACTIVATE = 4, + SW_SHOW = 5, + SW_MINIMIZE = 6, + SW_SHOWMINNOACTIVE = 7, + SW_SHOWNA = 8, + SW_RESTORE = 9, + SW_SHOWDEFAULT = 10, + SW_FORCEMINIMIZE = 11, + SW_MAX = 11 +} + +enum { + SW_PARENTCLOSING = 1, + SW_OTHERZOOM, + SW_PARENTOPENING, + SW_OTHERUNZOOM // = 4 +} + +enum { // is this a different SW from the previous? + SW_SCROLLCHILDREN = 0x01, + SW_INVALIDATE = 0x02, + SW_ERASE = 0x04, + SW_SMOOTHSCROLL = 0x10 +} + +enum { + MB_OK = 0, + MB_OKCANCEL, + MB_ABORTRETRYIGNORE, + MB_YESNOCANCEL, + MB_YESNO, + MB_RETRYCANCEL, + MB_CANCELTRYCONTINUE, // = 6 + MB_TYPEMASK = 0x0000000F, + MB_ICONHAND = 0x00000010, + MB_ICONSTOP = MB_ICONHAND, + MB_ICONERROR = MB_ICONHAND, + MB_ICONQUESTION = 0x00000020, + MB_ICONEXCLAMATION = 0x00000030, + MB_ICONWARNING = MB_ICONEXCLAMATION, + MB_ICONASTERISK = 0x00000040, + MB_ICONINFORMATION = MB_ICONASTERISK, + MB_USERICON = 0x00000080, + MB_ICONMASK = 0x000000F0, + + MB_DEFBUTTON1 = 0, + MB_DEFBUTTON2 = 0x00000100, + MB_DEFBUTTON3 = 0x00000200, + MB_DEFBUTTON4 = 0x00000300, + MB_DEFMASK = 0x00000F00, + + MB_APPLMODAL = 0, + MB_SYSTEMMODAL = 0x00001000, + MB_TASKMODAL = 0x00002000, + MB_MODEMASK = 0x00003000, + + MB_HELP = 0x00004000, + MB_NOFOCUS = 0x00008000, + MB_MISCMASK = 0x0000C000, + + MB_SETFOREGROUND = 0x00010000, + MB_DEFAULT_DESKTOP_ONLY = 0x00020000, + MB_TOPMOST = 0x00040000, + MB_SERVICE_NOTIFICATION_NT3X = 0x00040000, + MB_RIGHT = 0x00080000, + MB_RTLREADING = 0x00100000, + MB_SERVICE_NOTIFICATION = 0x00200000 +} + +enum { + IDOK = 1, + IDCANCEL, + IDABORT, + IDRETRY, + IDIGNORE, + IDYES, + IDNO, + IDCLOSE, + IDHELP, + IDTRYAGAIN, + IDCONTINUE // = 11 +} + +enum GWL_EXSTYLE = -20; +enum GWL_STYLE = -16; +enum GWL_WNDPROC = -4; +enum GWLP_WNDPROC = -4; +enum GWL_HINSTANCE = -6; +enum GWLP_HINSTANCE = -6; +enum GWL_HWNDPARENT = -8; +enum GWLP_HWNDPARENT = -8; +enum GWL_ID = -12; +enum GWLP_ID = -12; +enum GWL_USERDATA = -21; +enum GWLP_USERDATA = -21; + +enum DWL_DLGPROC = 4; +enum DWLP_DLGPROC = 4; +enum DWL_MSGRESULT = 0; +enum DWLP_MSGRESULT = 0; +enum DWL_USER = 8; +enum DWLP_USER = 8; + +enum QS_KEY = 1; +enum QS_MOUSEMOVE = 2; +enum QS_MOUSEBUTTON = 4; +enum QS_MOUSE = 6; +enum QS_POSTMESSAGE = 8; +enum QS_TIMER = 16; +enum QS_PAINT = 32; +enum QS_SENDMESSAGE = 64; +enum QS_HOTKEY = 128; +enum QS_ALLPOSTMESSAGE = 256; static if (_WIN32_WINNT >= 0x501) { -const QS_RAWINPUT = 1024; -const QS_INPUT = 1031; -const QS_ALLEVENTS = 1215; -const QS_ALLINPUT = 1279; +enum QS_RAWINPUT = 1024; +enum QS_INPUT = 1031; +enum QS_ALLEVENTS = 1215; +enum QS_ALLINPUT = 1279; } else { -const QS_INPUT = 7; -const QS_ALLEVENTS = 191; -const QS_ALLINPUT = 255; -} - -const MWMO_WAITALL = 1; -const MWMO_ALERTABLE = 2; -const MWMO_INPUTAVAILABLE = 4; - -const COLOR_3DDKSHADOW=21; -const COLOR_3DFACE=15; -const COLOR_3DHILIGHT=20; -const COLOR_3DHIGHLIGHT=20; -const COLOR_3DLIGHT=22; -const COLOR_BTNHILIGHT=20; -const COLOR_3DSHADOW=16; -const COLOR_ACTIVEBORDER=10; -const COLOR_ACTIVECAPTION=2; -const COLOR_APPWORKSPACE=12; -const COLOR_BACKGROUND=1; -const COLOR_DESKTOP=1; -const COLOR_BTNFACE=15; -const COLOR_BTNHIGHLIGHT=20; -const COLOR_BTNSHADOW=16; -const COLOR_BTNTEXT=18; -const COLOR_CAPTIONTEXT=9; -const COLOR_GRAYTEXT=17; -const COLOR_HIGHLIGHT=13; -const COLOR_HIGHLIGHTTEXT=14; -const COLOR_INACTIVEBORDER=11; -const COLOR_INACTIVECAPTION=3; -const COLOR_INACTIVECAPTIONTEXT=19; -const COLOR_INFOBK=24; -const COLOR_INFOTEXT=23; -const COLOR_MENU=4; -const COLOR_MENUTEXT=7; -const COLOR_SCROLLBAR=0; -const COLOR_WINDOW=5; -const COLOR_WINDOWFRAME=6; -const COLOR_WINDOWTEXT=8; -const COLOR_HOTLIGHT=26; -const COLOR_GRADIENTACTIVECAPTION=27; -const COLOR_GRADIENTINACTIVECAPTION=28; - -const CTLCOLOR_MSGBOX=0; -const CTLCOLOR_EDIT=1; -const CTLCOLOR_LISTBOX=2; -const CTLCOLOR_BTN=3; -const CTLCOLOR_DLG=4; -const CTLCOLOR_SCROLLBAR=5; -const CTLCOLOR_STATIC=6; -const CTLCOLOR_MAX=7; +enum QS_INPUT = 7; +enum QS_ALLEVENTS = 191; +enum QS_ALLINPUT = 255; +} + +enum MWMO_WAITALL = 1; +enum MWMO_ALERTABLE = 2; +enum MWMO_INPUTAVAILABLE = 4; + +enum COLOR_3DDKSHADOW = 21; +enum COLOR_3DFACE = 15; +enum COLOR_3DHILIGHT = 20; +enum COLOR_3DHIGHLIGHT = 20; +enum COLOR_3DLIGHT = 22; +enum COLOR_BTNHILIGHT = 20; +enum COLOR_3DSHADOW = 16; +enum COLOR_ACTIVEBORDER = 10; +enum COLOR_ACTIVECAPTION = 2; +enum COLOR_APPWORKSPACE = 12; +enum COLOR_BACKGROUND = 1; +enum COLOR_DESKTOP = 1; +enum COLOR_BTNFACE = 15; +enum COLOR_BTNHIGHLIGHT = 20; +enum COLOR_BTNSHADOW = 16; +enum COLOR_BTNTEXT = 18; +enum COLOR_CAPTIONTEXT = 9; +enum COLOR_GRAYTEXT = 17; +enum COLOR_HIGHLIGHT = 13; +enum COLOR_HIGHLIGHTTEXT = 14; +enum COLOR_INACTIVEBORDER = 11; +enum COLOR_INACTIVECAPTION = 3; +enum COLOR_INACTIVECAPTIONTEXT = 19; +enum COLOR_INFOBK = 24; +enum COLOR_INFOTEXT = 23; +enum COLOR_MENU = 4; +enum COLOR_MENUTEXT = 7; +enum COLOR_SCROLLBAR = 0; +enum COLOR_WINDOW = 5; +enum COLOR_WINDOWFRAME = 6; +enum COLOR_WINDOWTEXT = 8; +enum COLOR_HOTLIGHT = 26; +enum COLOR_GRADIENTACTIVECAPTION = 27; +enum COLOR_GRADIENTINACTIVECAPTION = 28; + +enum CTLCOLOR_MSGBOX = 0; +enum CTLCOLOR_EDIT = 1; +enum CTLCOLOR_LISTBOX = 2; +enum CTLCOLOR_BTN = 3; +enum CTLCOLOR_DLG = 4; +enum CTLCOLOR_SCROLLBAR = 5; +enum CTLCOLOR_STATIC = 6; +enum CTLCOLOR_MAX = 7; // For GetSystemMetrics() enum : int { @@ -968,11 +987,11 @@ enum : int { SM_CYCAPTION, SM_CXBORDER, SM_CYBORDER, - SM_CXDLGFRAME, // = 7, - SM_CXFIXEDFRAME = SM_CXDLGFRAME, - SM_CYDLGFRAME, // =8, - SM_CYFIXEDFRAME = SM_CYDLGFRAME, - SM_CYVTHUMB = 9, + SM_CXDLGFRAME, // = 7 + SM_CXFIXEDFRAME = SM_CXDLGFRAME, + SM_CYDLGFRAME, // = 8 + SM_CYFIXEDFRAME = SM_CYDLGFRAME, + SM_CYVTHUMB, // = 9 SM_CXHTHUMB, SM_CXICON, SM_CYICON, @@ -995,10 +1014,10 @@ enum : int { SM_CYMIN, SM_CXSIZE, SM_CYSIZE, - SM_CXSIZEFRAME, // = 32, - SM_CXFRAME = SM_CXSIZEFRAME, - SM_CYSIZEFRAME, // = 33 - SM_CYFRAME = SM_CYSIZEFRAME, + SM_CXSIZEFRAME, // = 32, + SM_CXFRAME = SM_CXSIZEFRAME, + SM_CYSIZEFRAME, // = 33 + SM_CYFRAME = SM_CYSIZEFRAME, SM_CXMINTRACK, SM_CYMINTRACK, SM_CXDOUBLECLK, @@ -1028,8 +1047,8 @@ enum : int { SM_CYMAXTRACK, SM_CXMAXIMIZED, SM_CYMAXIMIZED, - SM_NETWORK, // = 63 - SM_CLEANBOOT = 67, + SM_NETWORK, // = 63 + SM_CLEANBOOT = 67, SM_CXDRAG, SM_CYDRAG, SM_SHOWSOUNDS, @@ -1037,7 +1056,6 @@ enum : int { SM_CYMENUCHECK, SM_SLOWMACHINE, SM_MIDEASTENABLED, - // The next values aren't supported in Win95. SM_MOUSEWHEELPRESENT, SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN, @@ -1048,208 +1066,217 @@ enum : int { SM_IMMENABLED, SM_CXFOCUSBORDER, SM_CYFOCUSBORDER, // = 84 - SM_TABLETPC = 86, - SM_MEDIACENTER = 87, - SM_REMOTESESSION = 0x1000, - // These are only for WinXP and later - SM_SHUTTINGDOWN = 0x2000, - SM_REMOTECONTROL = 0x2001 -} - -const ARW_BOTTOMLEFT=0; -const ARW_BOTTOMRIGHT=1; -const ARW_HIDE=8; -const ARW_TOPLEFT=2; -const ARW_TOPRIGHT=3; -const ARW_DOWN=4; -const ARW_LEFT=0; -const ARW_RIGHT=0; -const ARW_UP=4; - -const UOI_FLAGS=1; -const UOI_NAME=2; -const UOI_TYPE=3; -const UOI_USER_SID=4; + SM_TABLETPC = 86, + SM_MEDIACENTER, + SM_STARTER, // = 88 + SM_CMETRICS = 88, + SM_SERVERR2, + SM_REMOTESESSION = 0x1000, +} +static if (_WIN32_WINNT >= 0x501) { + enum { // These are only for WinXP and later + SM_SHUTTINGDOWN = 0x2000, + SM_REMOTECONTROL = 0x2001 + } +} + +enum ARW_BOTTOMLEFT = 0; +enum ARW_BOTTOMRIGHT = 1; +enum ARW_HIDE = 8; +enum ARW_TOPLEFT = 2; +enum ARW_TOPRIGHT = 3; +enum ARW_DOWN = 4; +enum ARW_LEFT = 0; +enum ARW_RIGHT = 0; +enum ARW_UP = 4; + +enum UOI_FLAGS = 1; +enum UOI_NAME = 2; +enum UOI_TYPE = 3; +enum UOI_USER_SID = 4; // For the fuLoad parameter of LoadImage() enum : UINT { LR_DEFAULTCOLOR = 0, - LR_MONOCHROME = 1, - LR_COLOR = 2, - LR_COPYRETURNORG = 4, - LR_COPYDELETEORG = 8, - LR_LOADFROMFILE = 16, - LR_LOADTRANSPARENT = 32, - LR_DEFAULTSIZE = 64, - LR_LOADREALSIZE = 128, - LR_LOADMAP3DCOLORS = 4096, - LR_CREATEDIBSECTION = 8192, - LR_COPYFROMRESOURCE = 16384, - LR_SHARED = 32768 -} - -const KEYEVENTF_EXTENDEDKEY = 0x00000001; -const KEYEVENTF_KEYUP = 00000002; -static if (_WIN32_WINNT >= 0x500) { -const KEYEVENTF_UNICODE = 0x00000004; -const KEYEVENTF_SCANCODE = 0x00000008; -} - -const OBM_BTNCORNERS = 32758; -const OBM_BTSIZE = 32761; -const OBM_CHECK = 32760; -const OBM_CHECKBOXES = 32759; -const OBM_CLOSE = 32754; -const OBM_COMBO = 32738; -const OBM_DNARROW = 32752; -const OBM_DNARROWD = 32742; -const OBM_DNARROWI = 32736; -const OBM_LFARROW = 32750; -const OBM_LFARROWI = 32734; -const OBM_LFARROWD = 32740; -const OBM_MNARROW = 32739; -const OBM_OLD_CLOSE = 32767; -const OBM_OLD_DNARROW = 32764; -const OBM_OLD_LFARROW = 32762; -const OBM_OLD_REDUCE = 32757; -const OBM_OLD_RESTORE = 32755; -const OBM_OLD_RGARROW = 32763; -const OBM_OLD_UPARROW = 32765; -const OBM_OLD_ZOOM = 32756; -const OBM_REDUCE = 32749; -const OBM_REDUCED = 32746; -const OBM_RESTORE = 32747; -const OBM_RESTORED = 32744; -const OBM_RGARROW = 32751; -const OBM_RGARROWD = 32741; -const OBM_RGARROWI = 32735; -const OBM_SIZE = 32766; -const OBM_UPARROW = 32753; -const OBM_UPARROWD = 32743; -const OBM_UPARROWI = 32737; -const OBM_ZOOM = 32748; -const OBM_ZOOMD = 32745; - -const OCR_NORMAL = 32512; -const OCR_IBEAM = 32513; -const OCR_WAIT = 32514; -const OCR_CROSS = 32515; -const OCR_UP = 32516; -const OCR_SIZE = 32640; -const OCR_ICON = 32641; -const OCR_SIZENWSE = 32642; -const OCR_SIZENESW = 32643; -const OCR_SIZEWE = 32644; -const OCR_SIZENS = 32645; -const OCR_SIZEALL = 32646; -const OCR_NO = 32648; -const OCR_APPSTARTING = 32650; - -const OIC_SAMPLE = 32512; -const OIC_HAND = 32513; -const OIC_QUES = 32514; -const OIC_BANG = 32515; -const OIC_NOTE = 32516; -const OIC_WINLOGO = 32517; -const OIC_WARNING = OIC_BANG; -const OIC_ERROR = OIC_HAND; -const OIC_INFORMATION = OIC_NOTE; - -const HELPINFO_MENUITEM = 2; -const HELPINFO_WINDOW = 1; + LR_MONOCHROME = 0x0001, + LR_COLOR = 0x0002, + LR_COPYRETURNORG = 0x0004, + LR_COPYDELETEORG = 0x0008, + LR_LOADFROMFILE = 0x0010, + LR_LOADTRANSPARENT = 0x0020, + LR_DEFAULTSIZE = 0x0040, + LR_VGACOLOR = 0x0080, + LR_LOADREALSIZE = 0x0080, + LR_LOADMAP3DCOLORS = 0x1000, + LR_CREATEDIBSECTION = 0x2000, + LR_COPYFROMRESOURCE = 0x4000, + LR_SHARED = 0x8000 +} + +enum { + KEYEVENTF_EXTENDEDKEY = 1, + KEYEVENTF_KEYUP = 2, + KEYEVENTF_UNICODE = 4, + KEYEVENTF_SCANCODE = 8 +} + +enum OBM_BTNCORNERS = 32758; +enum OBM_BTSIZE = 32761; +enum OBM_CHECK = 32760; +enum OBM_CHECKBOXES = 32759; +enum OBM_CLOSE = 32754; +enum OBM_COMBO = 32738; +enum OBM_DNARROW = 32752; +enum OBM_DNARROWD = 32742; +enum OBM_DNARROWI = 32736; +enum OBM_LFARROW = 32750; +enum OBM_LFARROWI = 32734; +enum OBM_LFARROWD = 32740; +enum OBM_MNARROW = 32739; +enum OBM_OLD_CLOSE = 32767; +enum OBM_OLD_DNARROW = 32764; +enum OBM_OLD_LFARROW = 32762; +enum OBM_OLD_REDUCE = 32757; +enum OBM_OLD_RESTORE = 32755; +enum OBM_OLD_RGARROW = 32763; +enum OBM_OLD_UPARROW = 32765; +enum OBM_OLD_ZOOM = 32756; +enum OBM_REDUCE = 32749; +enum OBM_REDUCED = 32746; +enum OBM_RESTORE = 32747; +enum OBM_RESTORED = 32744; +enum OBM_RGARROW = 32751; +enum OBM_RGARROWD = 32741; +enum OBM_RGARROWI = 32735; +enum OBM_SIZE = 32766; +enum OBM_UPARROW = 32753; +enum OBM_UPARROWD = 32743; +enum OBM_UPARROWI = 32737; +enum OBM_ZOOM = 32748; +enum OBM_ZOOMD = 32745; + +enum OCR_NORMAL = 32512; +enum OCR_IBEAM = 32513; +enum OCR_WAIT = 32514; +enum OCR_CROSS = 32515; +enum OCR_UP = 32516; +enum OCR_SIZE = 32640; +enum OCR_ICON = 32641; +enum OCR_SIZENWSE = 32642; +enum OCR_SIZENESW = 32643; +enum OCR_SIZEWE = 32644; +enum OCR_SIZENS = 32645; +enum OCR_SIZEALL = 32646; +enum OCR_NO = 32648; +enum OCR_APPSTARTING = 32650; + +enum OIC_SAMPLE = 32512; +enum OIC_HAND = 32513; +enum OIC_QUES = 32514; +enum OIC_BANG = 32515; +enum OIC_NOTE = 32516; +enum OIC_WINLOGO = 32517; +enum OIC_WARNING = OIC_BANG; +enum OIC_ERROR = OIC_HAND; +enum OIC_INFORMATION = OIC_NOTE; + +enum HELPINFO_MENUITEM = 2; +enum HELPINFO_WINDOW = 1; static if (_WIN32_WINNT >= 0x501) { + enum { + WTS_CONSOLE_CONNECT = 1, + WTS_CONSOLE_DISCONNECT, + WTS_REMOTE_CONNECT, + WTS_REMOTE_DISCONNECT, + WTS_SESSION_LOGON, + WTS_SESSION_LOGOFF, + WTS_SESSION_LOCK, + WTS_SESSION_UNLOCK, + WTS_SESSION_REMOTE_CONTROL // = 9 + } +} -const WTS_CONSOLE_CONNECT = 0x1; -const WTS_CONSOLE_DISCONNECT = 0x2; -const WTS_REMOTE_CONNECT = 0x3; -const WTS_REMOTE_DISCONNECT = 0x4; -const WTS_SESSION_LOGON = 0x5; -const WTS_SESSION_LOGOFF = 0x6; -const WTS_SESSION_LOCK = 0x7; -const WTS_SESSION_UNLOCK = 0x8; -const WTS_SESSION_REMOTE_CONTROL = 0x9; - -} - -const MSGF_DIALOGBOX = 0; -const MSGF_MESSAGEBOX = 1; -const MSGF_MENU = 2; -const MSGF_MOVE = 3; -const MSGF_SIZE = 4; -const MSGF_SCROLLBAR = 5; -const MSGF_NEXTWINDOW = 6; -const MSGF_MAINLOOP = 8; -const MSGF_USER = 4096; - -const MOUSEEVENTF_MOVE = 1; -const MOUSEEVENTF_LEFTDOWN = 2; -const MOUSEEVENTF_LEFTUP = 4; -const MOUSEEVENTF_RIGHTDOWN = 8; -const MOUSEEVENTF_RIGHTUP = 16; -const MOUSEEVENTF_MIDDLEDOWN = 32; -const MOUSEEVENTF_MIDDLEUP = 64; -const MOUSEEVENTF_WHEEL = 0x0800; -const MOUSEEVENTF_ABSOLUTE = 32768; - -const PM_NOREMOVE = 0; -const PM_REMOVE = 1; -const PM_NOYIELD = 2; - -static if (_WIN32_WINNT >= 0x500) { -const PM_QS_INPUT = (QS_INPUT << 16); -const PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE|QS_HOTKEY|QS_TIMER) << 16); -const PM_QS_PAINT = (QS_PAINT << 16); -const PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16); -} -const HWND - HWND_BROADCAST = cast(HWND)0xffff, - HWND_BOTTOM = cast(HWND)1, - HWND_NOTOPMOST = cast(HWND)(-2), - HWND_TOP = cast(HWND)0, - HWND_TOPMOST = cast(HWND)(-1), - HWND_DESKTOP = cast(HWND)0, - HWND_MESSAGE = cast(HWND)(-3);// w2k - -const RDW_INVALIDATE = 1; -const RDW_INTERNALPAINT = 2; -const RDW_ERASE = 4; -const RDW_VALIDATE = 8; -const RDW_NOINTERNALPAINT = 16; -const RDW_NOERASE = 32; -const RDW_NOCHILDREN = 64; -const RDW_ALLCHILDREN = 128; -const RDW_UPDATENOW = 256; -const RDW_ERASENOW = 512; -const RDW_FRAME = 1024; -const RDW_NOFRAME = 2048; - -const SMTO_NORMAL = 0; -const SMTO_BLOCK = 1; -const SMTO_ABORTIFHUNG = 2; - -const SIF_ALL = 23; -const SIF_PAGE = 2; -const SIF_POS = 4; -const SIF_RANGE = 1; -const SIF_DISABLENOSCROLL = 8; -const SIF_TRACKPOS = 16; - -const SWP_DRAWFRAME = 32; -const SWP_FRAMECHANGED = 32; -const SWP_HIDEWINDOW = 128; -const SWP_NOACTIVATE = 16; -const SWP_NOCOPYBITS = 256; -const SWP_NOMOVE = 2; -const SWP_NOSIZE = 1; -const SWP_NOREDRAW = 8; -const SWP_NOZORDER = 4; -const SWP_SHOWWINDOW = 64; -const SWP_NOOWNERZORDER = 512; -const SWP_NOREPOSITION = 512; -const SWP_NOSENDCHANGING = 1024; -const SWP_DEFERERASE = 8192; -const SWP_ASYNCWINDOWPOS = 16384; +enum MSGF_DIALOGBOX = 0; +enum MSGF_MESSAGEBOX = 1; +enum MSGF_MENU = 2; +enum MSGF_MOVE = 3; +enum MSGF_SIZE = 4; +enum MSGF_SCROLLBAR = 5; +enum MSGF_NEXTWINDOW = 6; +enum MSGF_MAINLOOP = 8; +enum MSGF_USER = 4096; + +enum { + MOUSEEVENTF_MOVE = 0x0001, + MOUSEEVENTF_LEFTDOWN = 0x0002, + MOUSEEVENTF_LEFTUP = 0x0004, + MOUSEEVENTF_RIGHTDOWN = 0x0008, + MOUSEEVENTF_RIGHTUP = 0x0010, + MOUSEEVENTF_MIDDLEDOWN = 0x0020, + MOUSEEVENTF_MIDDLEUP = 0x0040, + MOUSEEVENTF_XDOWN = 0x0080, + MOUSEEVENTF_XUP = 0x0100, + MOUSEEVENTF_WHEEL = 0x0800, + MOUSEEVENTF_ABSOLUTE = 0x8000 +} + +enum PM_NOREMOVE = 0; +enum PM_REMOVE = 1; +enum PM_NOYIELD = 2; + +enum : HWND { + HWND_BROADCAST = cast(HWND) 0xFFFF, + HWND_MESSAGE = cast(HWND) -3, + HWND_NOTOPMOST = cast(HWND) -2, + HWND_TOPMOST = cast(HWND) -1, + HWND_TOP = cast(HWND) 0, + HWND_DESKTOP = cast(HWND) 0, + HWND_BOTTOM = cast(HWND) 1 +} + +enum RDW_INVALIDATE = 1; +enum RDW_INTERNALPAINT = 2; +enum RDW_ERASE = 4; +enum RDW_VALIDATE = 8; +enum RDW_NOINTERNALPAINT = 16; +enum RDW_NOERASE = 32; +enum RDW_NOCHILDREN = 64; +enum RDW_ALLCHILDREN = 128; +enum RDW_UPDATENOW = 256; +enum RDW_ERASENOW = 512; +enum RDW_FRAME = 1024; +enum RDW_NOFRAME = 2048; + +enum { + SMTO_NORMAL = 0, + SMTO_BLOCK = 1, + SMTO_ABORTIFHUNG = 2, + SMTO_NOTIMEOUTIFNOTHUNG = 8 +} + +enum SIF_ALL = 23; +enum SIF_PAGE = 2; +enum SIF_POS = 4; +enum SIF_RANGE = 1; +enum SIF_DISABLENOSCROLL = 8; +enum SIF_TRACKPOS = 16; + +enum SWP_DRAWFRAME = 32; +enum SWP_FRAMECHANGED = 32; +enum SWP_HIDEWINDOW = 128; +enum SWP_NOACTIVATE = 16; +enum SWP_NOCOPYBITS = 256; +enum SWP_NOMOVE = 2; +enum SWP_NOSIZE = 1; +enum SWP_NOREDRAW = 8; +enum SWP_NOZORDER = 4; +enum SWP_SHOWWINDOW = 64; +enum SWP_NOOWNERZORDER = 512; +enum SWP_NOREPOSITION = 512; +enum SWP_NOSENDCHANGING = 1024; +enum SWP_DEFERERASE = 8192; +enum SWP_ASYNCWINDOWPOS = 16384; enum { // passed variously as int or WPARAM HSHELL_WINDOWCREATED = 1, @@ -1274,709 +1301,719 @@ static if (_WIN32_WINNT >= 0x501) { } } -enum SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001; -enum SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000; - -const SPI_GETACCESSTIMEOUT=60; -const SPI_GETACTIVEWNDTRKTIMEOUT=8194; -const SPI_GETANIMATION=72; -const SPI_GETBEEP=1; -const SPI_GETBORDER=5; -const SPI_GETDEFAULTINPUTLANG=89; -const SPI_GETDRAGFULLWINDOWS=38; -const SPI_GETFASTTASKSWITCH=35; -const SPI_GETFILTERKEYS=50; -const SPI_GETFONTSMOOTHING=74; -const SPI_GETGRIDGRANULARITY=18; -const SPI_GETHIGHCONTRAST=66; -const SPI_GETICONMETRICS=45; -const SPI_GETICONTITLELOGFONT=31; -const SPI_GETICONTITLEWRAP=25; -const SPI_GETKEYBOARDDELAY=22; -const SPI_GETKEYBOARDPREF=68; -const SPI_GETKEYBOARDSPEED=10; -const SPI_GETLOWPOWERACTIVE=83; -const SPI_GETLOWPOWERTIMEOUT=79; -const SPI_GETMENUDROPALIGNMENT=27; -const SPI_GETMINIMIZEDMETRICS=43; -const SPI_GETMOUSE=3; -const SPI_GETMOUSEKEYS=54; -const SPI_GETMOUSETRAILS=94; -const SPI_GETNONCLIENTMETRICS=41; -const SPI_GETPOWEROFFACTIVE=84; -const SPI_GETPOWEROFFTIMEOUT=80; -const SPI_GETSCREENREADER=70; -const SPI_GETSCREENSAVEACTIVE=16; -const SPI_GETSCREENSAVETIMEOUT=14; -const SPI_GETSERIALKEYS=62; -const SPI_GETSHOWSOUNDS=56; -const SPI_GETSOUNDSENTRY=64; -const SPI_GETSTICKYKEYS=58; -const SPI_GETTOGGLEKEYS=52; -const SPI_GETWHEELSCROLLLINES=104; -const SPI_GETWINDOWSEXTENSION=92; -const SPI_GETWORKAREA=48; -const SPI_ICONHORIZONTALSPACING=13; -const SPI_ICONVERTICALSPACING=24; -const SPI_LANGDRIVER=12; -const SPI_SCREENSAVERRUNNING=97; -const SPI_SETACCESSTIMEOUT=61; -const SPI_SETACTIVEWNDTRKTIMEOUT=8195; -const SPI_SETANIMATION=73; -const SPI_SETBEEP=2; -const SPI_SETBORDER=6; -const SPI_SETDEFAULTINPUTLANG=90; -const SPI_SETDESKPATTERN=21; -const SPI_SETDESKWALLPAPER=20; -const SPI_SETDOUBLECLICKTIME=32; -const SPI_SETDOUBLECLKHEIGHT=30; -const SPI_SETDOUBLECLKWIDTH=29; -const SPI_SETDRAGFULLWINDOWS=37; -const SPI_SETDRAGHEIGHT=77; -const SPI_SETDRAGWIDTH=76; -const SPI_SETFASTTASKSWITCH=36; -const SPI_SETFILTERKEYS=51; -const SPI_SETFONTSMOOTHING=75; -const SPI_SETGRIDGRANULARITY=19; -const SPI_SETHANDHELD=78; -const SPI_SETHIGHCONTRAST=67; -const SPI_SETICONMETRICS=46; -const SPI_SETICONTITLELOGFONT=34; -const SPI_SETICONTITLEWRAP=26; -const SPI_SETKEYBOARDDELAY=23; -const SPI_SETKEYBOARDPREF=69; -const SPI_SETKEYBOARDSPEED=11; -const SPI_SETLANGTOGGLE=91; -const SPI_SETLOWPOWERACTIVE=85; -const SPI_SETLOWPOWERTIMEOUT=81; -const SPI_SETMENUDROPALIGNMENT=28; -const SPI_SETMINIMIZEDMETRICS=44; -const SPI_SETMOUSE=4; -const SPI_SETMOUSEBUTTONSWAP=33; -const SPI_SETMOUSEKEYS=55; -const SPI_SETMOUSETRAILS=93; -const SPI_SETNONCLIENTMETRICS=42; -const SPI_SETPENWINDOWS=49; -const SPI_SETPOWEROFFACTIVE=86; -const SPI_SETPOWEROFFTIMEOUT=82; -const SPI_SETSCREENREADER=71; -const SPI_SETSCREENSAVEACTIVE=17; -const SPI_SETSCREENSAVERRUNNING=97; -const SPI_SETSCREENSAVETIMEOUT=15; -const SPI_SETSERIALKEYS=63; -const SPI_SETSHOWSOUNDS=57; -const SPI_SETSOUNDSENTRY=65; -const SPI_SETSTICKYKEYS=59; -const SPI_SETTOGGLEKEYS=53; -const SPI_SETWHEELSCROLLLINES=105; -const SPI_SETWORKAREA=47; - -static if (_WIN32_WINNT >= 0x500) { -const SPI_GETDESKWALLPAPER=115; -const SPI_GETMOUSESPEED=112; -const SPI_GETSCREENSAVERRUNNING=114; -const SPI_GETACTIVEWINDOWTRACKING=0x1000; -const SPI_GETACTIVEWNDTRKZORDER=0x100C; -const SPI_GETCOMBOBOXANIMATION=0x1004; -const SPI_GETCURSORSHADOW=0x101A; -const SPI_GETGRADIENTCAPTIONS=0x1008; -const SPI_GETHOTTRACKING=0x100E; -const SPI_GETKEYBOARDCUES=0x100A; -const SPI_GETLISTBOXSMOOTHSCROLLING=0x1006; -const SPI_GETMENUANIMATION=0x1002; -const SPI_GETMENUFADE=0x1012; -const SPI_GETMENUUNDERLINES=0x100A; -const SPI_GETSELECTIONFADE=0x1014; -const SPI_GETTOOLTIPANIMATION=0x1016; -const SPI_GETTOOLTIPFADE=0x1018; -const SPI_SETACTIVEWINDOWTRACKING=0x1001; -const SPI_SETACTIVEWNDTRKZORDER=0x100D; -const SPI_SETCOMBOBOXANIMATION=0x1005; -const SPI_SETCURSORSHADOW=0x101B; -const SPI_SETGRADIENTCAPTIONS=0x1009; -const SPI_SETHOTTRACKING=0x100F; -const SPI_SETKEYBOARDCUES=0x100B; -const SPI_SETLISTBOXSMOOTHSCROLLING=0x1007; -const SPI_SETMENUANIMATION=0x1003; -const SPI_SETMENUFADE=0x1013; -const SPI_SETMENUUNDERLINES=0x100B; -const SPI_SETMOUSESPEED=113; -const SPI_SETSELECTIONFADE=0x1015; -const SPI_SETTOOLTIPANIMATION=0x1017; -const SPI_SETTOOLTIPFADE=0x1019; -} - -const SPIF_UPDATEINIFILE=1; -const SPIF_SENDWININICHANGE=2; -const SPIF_SENDCHANGE=2; -// [Redefined] ATF_ONOFFFEEDBACK=2 -// [Redefined] ATF_TIMEOUTON=1 -const WM_APP=32768; -const WM_ACTIVATE=6; -const WM_ACTIVATEAPP=28; -// FIXME/CHECK: Are WM_AFX {FIRST, LAST} valid for _WIN32_WINNT < 0x400? -const WM_AFXFIRST=864; -const WM_AFXLAST=895; -const WM_ASKCBFORMATNAME=780; -const WM_CANCELJOURNAL=75; -const WM_CANCELMODE=31; -const WM_CAPTURECHANGED=533; -const WM_CHANGECBCHAIN=781; -const WM_CHAR=258; -const WM_CHARTOITEM=47; -const WM_CHILDACTIVATE=34; -const WM_CLEAR=771; -const WM_CLOSE=16; -const WM_COMMAND=273; -const WM_COMMNOTIFY=68; // obsolete -const WM_COMPACTING=65; -const WM_COMPAREITEM=57; -const WM_CONTEXTMENU=123; -const WM_COPY=769; -const WM_COPYDATA=74; -const WM_CREATE=1; -const WM_CTLCOLORBTN=309; -const WM_CTLCOLORDLG=310; -const WM_CTLCOLOREDIT=307; -const WM_CTLCOLORLISTBOX=308; -const WM_CTLCOLORMSGBOX=306; -const WM_CTLCOLORSCROLLBAR=311; -const WM_CTLCOLORSTATIC=312; -const WM_CUT=768; -const WM_DEADCHAR=259; -const WM_DELETEITEM=45; -const WM_DESTROY=2; -const WM_DESTROYCLIPBOARD=775; -const WM_DEVICECHANGE=537; -const WM_DEVMODECHANGE=27; -const WM_DISPLAYCHANGE=126; -const WM_DRAWCLIPBOARD=776; -const WM_DRAWITEM=43; -const WM_DROPFILES=563; -const WM_ENABLE=10; -const WM_ENDSESSION=22; -const WM_ENTERIDLE=289; -const WM_ENTERMENULOOP=529; -const WM_ENTERSIZEMOVE=561; -const WM_ERASEBKGND=20; -const WM_EXITMENULOOP=530; -const WM_EXITSIZEMOVE=562; -const WM_FONTCHANGE=29; -const WM_GETDLGCODE=135; -const WM_GETFONT=49; -const WM_GETHOTKEY=51; -const WM_GETICON=127; -const WM_GETMINMAXINFO=36; -const WM_GETTEXT=13; -const WM_GETTEXTLENGTH=14; -const WM_HANDHELDFIRST=856; -const WM_HANDHELDLAST=863; -const WM_HELP=83; -const WM_HOTKEY=786; -const WM_HSCROLL=276; -const WM_HSCROLLCLIPBOARD=782; -const WM_ICONERASEBKGND=39; -const WM_INITDIALOG=272; -const WM_INITMENU=278; -const WM_INITMENUPOPUP=279; -const WM_INPUTLANGCHANGE=81; -const WM_INPUTLANGCHANGEREQUEST=80; -const WM_KEYDOWN=256; -const WM_KEYUP=257; -const WM_KILLFOCUS=8; -const WM_MDIACTIVATE=546; -const WM_MDICASCADE=551; -const WM_MDICREATE=544; -const WM_MDIDESTROY=545; -const WM_MDIGETACTIVE=553; -const WM_MDIICONARRANGE=552; -const WM_MDIMAXIMIZE=549; -const WM_MDINEXT=548; -const WM_MDIREFRESHMENU=564; -const WM_MDIRESTORE=547; -const WM_MDISETMENU=560; -const WM_MDITILE=550; -const WM_MEASUREITEM=44; -static if (_WIN32_WINNT >= 0x500) { - const WM_UNINITMENUPOPUP=0x0125; - const WM_MENURBUTTONUP=290; - const WM_MENUCOMMAND=0x0126; - const WM_MENUGETOBJECT=0x0124; - const WM_MENUDRAG=0x0123; -} - -static if (_WIN32_WINNT >= 0x500) { - - enum { - WM_CHANGEUISTATE = 0x0127, - WM_UPDATEUISTATE = 0x0128, - WM_QUERYUISTATE = 0x0129 - } - - // LOWORD(wParam) values in WM_*UISTATE* - enum { - UIS_SET = 1, - UIS_CLEAR = 2, - UIS_INITIALIZE = 3 - } +enum { + SPI_GETBEEP = 0x0001, + SPI_SETBEEP = 0x0002, + SPI_GETMOUSE = 0x0003, + SPI_SETMOUSE = 0x0004, + SPI_GETBORDER = 0x0005, + SPI_SETBORDER = 0x0006, + SPI_GETKEYBOARDSPEED = 0x000A, + SPI_SETKEYBOARDSPEED = 0x000B, + SPI_LANGDRIVER = 0x000C, + SPI_ICONHORIZONTALSPACING = 0x000D, + SPI_GETSCREENSAVETIMEOUT = 0x000E, + SPI_SETSCREENSAVETIMEOUT = 0x000F, + SPI_GETSCREENSAVEACTIVE = 0x0010, + SPI_SETSCREENSAVEACTIVE = 0x0011, + SPI_GETGRIDGRANULARITY = 0x0012, + SPI_SETGRIDGRANULARITY = 0x0013, + SPI_SETDESKWALLPAPER = 0x0014, + SPI_SETDESKPATTERN = 0x0015, + SPI_GETKEYBOARDDELAY = 0x0016, + SPI_SETKEYBOARDDELAY = 0x0017, + SPI_ICONVERTICALSPACING = 0x0018, + SPI_GETICONTITLEWRAP = 0x0019, + SPI_SETICONTITLEWRAP = 0x001A, + SPI_GETMENUDROPALIGNMENT = 0x001B, + SPI_SETMENUDROPALIGNMENT = 0x001C, + SPI_SETDOUBLECLKWIDTH = 0x001D, + SPI_SETDOUBLECLKHEIGHT = 0x001E, + SPI_GETICONTITLELOGFONT = 0x001F, + SPI_SETDOUBLECLICKTIME = 0x0020, + SPI_SETMOUSEBUTTONSWAP = 0x0021, + SPI_SETICONTITLELOGFONT = 0x0022, + SPI_GETFASTTASKSWITCH = 0x0023, + SPI_SETFASTTASKSWITCH = 0x0024, + SPI_SETDRAGFULLWINDOWS = 0x0025, + SPI_GETDRAGFULLWINDOWS = 0x0026, + SPI_GETNONCLIENTMETRICS = 0x0029, + SPI_SETNONCLIENTMETRICS = 0x002A, + SPI_GETMINIMIZEDMETRICS = 0x002B, + SPI_SETMINIMIZEDMETRICS = 0x002C, + SPI_GETICONMETRICS = 0x002D, + SPI_SETICONMETRICS = 0x002E, + SPI_SETWORKAREA = 0x002F, + SPI_GETWORKAREA = 0x0030, + SPI_SETPENWINDOWS = 0x0031, + SPI_GETFILTERKEYS = 0x0032, + SPI_SETFILTERKEYS = 0x0033, + SPI_GETTOGGLEKEYS = 0x0034, + SPI_SETTOGGLEKEYS = 0x0035, + SPI_GETMOUSEKEYS = 0x0036, + SPI_SETMOUSEKEYS = 0x0037, + SPI_GETSHOWSOUNDS = 0x0038, + SPI_SETSHOWSOUNDS = 0x0039, + SPI_GETSTICKYKEYS = 0x003A, + SPI_SETSTICKYKEYS = 0x003B, + SPI_GETACCESSTIMEOUT = 0x003C, + SPI_SETACCESSTIMEOUT = 0x003D, + SPI_GETSERIALKEYS = 0x003E, + SPI_SETSERIALKEYS = 0x003F, + SPI_GETSOUNDSENTRY = 0x0040, + SPI_SETSOUNDSENTRY = 0x0041, + SPI_GETHIGHCONTRAST = 0x0042, + SPI_SETHIGHCONTRAST = 0x0043, + SPI_GETKEYBOARDPREF = 0x0044, + SPI_SETKEYBOARDPREF = 0x0045, + SPI_GETSCREENREADER = 0x0046, + SPI_SETSCREENREADER = 0x0047, + SPI_GETANIMATION = 0x0048, + SPI_SETANIMATION = 0x0049, + SPI_GETFONTSMOOTHING = 0x004A, + SPI_SETFONTSMOOTHING = 0x004B, + SPI_SETDRAGWIDTH = 0x004C, + SPI_SETDRAGHEIGHT = 0x004D, + SPI_SETHANDHELD = 0x004E, + SPI_GETLOWPOWERTIMEOUT = 0x004F, + SPI_GETPOWEROFFTIMEOUT = 0x0050, + SPI_SETLOWPOWERTIMEOUT = 0x0051, + SPI_SETPOWEROFFTIMEOUT = 0x0052, + SPI_GETLOWPOWERACTIVE = 0x0053, + SPI_GETPOWEROFFACTIVE = 0x0054, + SPI_SETLOWPOWERACTIVE = 0x0055, + SPI_SETPOWEROFFACTIVE = 0x0056, + SPI_SETCURSORS = 0x0057, + SPI_SETICONS = 0x0058, + SPI_GETDEFAULTINPUTLANG = 0x0059, + SPI_SETDEFAULTINPUTLANG = 0x005A, + SPI_SETLANGTOGGLE = 0x005B, + SPI_GETWINDOWSEXTENSION = 0x005C, + SPI_SETMOUSETRAILS = 0x005D, + SPI_GETMOUSETRAILS = 0x005E, + SPI_GETSNAPTODEFBUTTON = 0x005F, + SPI_SETSNAPTODEFBUTTON = 0x0060, + //SPI_SCREENSAVERRUNNING = 0x0061, // mistake in older MinGW? + SPI_SETSCREENSAVERRUNNING = 0x0061, + SPI_GETMOUSEHOVERWIDTH = 0x0062, + SPI_SETMOUSEHOVERWIDTH = 0x0063, + SPI_GETMOUSEHOVERHEIGHT = 0x0064, + SPI_SETMOUSEHOVERHEIGHT = 0x0065, + SPI_GETMOUSEHOVERTIME = 0x0066, + SPI_SETMOUSEHOVERTIME = 0x0067, + SPI_GETWHEELSCROLLLINES = 0x0068, + SPI_SETWHEELSCROLLLINES = 0x0069, + SPI_GETMENUSHOWDELAY = 0x006A, + SPI_SETMENUSHOWDELAY = 0x006B, + SPI_GETSHOWIMEUI = 0x006E, + SPI_SETSHOWIMEUI = 0x006F, + SPI_GETMOUSESPEED = 0x0070, + SPI_SETMOUSESPEED = 0x0071, + SPI_GETSCREENSAVERRUNNING = 0x0072, + SPI_GETDESKWALLPAPER = 0x0073, + SPI_GETACTIVEWINDOWTRACKING = 0x1000, + SPI_SETACTIVEWINDOWTRACKING = 0x1001, + SPI_GETMENUANIMATION = 0x1002, + SPI_SETMENUANIMATION = 0x1003, + SPI_GETCOMBOBOXANIMATION = 0x1004, + SPI_SETCOMBOBOXANIMATION = 0x1005, + SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006, + SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007, + SPI_GETGRADIENTCAPTIONS = 0x1008, + SPI_SETGRADIENTCAPTIONS = 0x1009, + SPI_GETKEYBOARDCUES = 0x100A, + SPI_GETMENUUNDERLINES = SPI_GETKEYBOARDCUES, + SPI_SETKEYBOARDCUES = 0x100B, + SPI_SETMENUUNDERLINES = SPI_SETKEYBOARDCUES, + SPI_GETACTIVEWNDTRKZORDER = 0x100C, + SPI_SETACTIVEWNDTRKZORDER = 0x100D, + SPI_GETHOTTRACKING = 0x100E, + SPI_SETHOTTRACKING = 0x100F, + SPI_GETMENUFADE = 0x1012, + SPI_SETMENUFADE = 0x1013, + SPI_GETSELECTIONFADE = 0x1014, + SPI_SETSELECTIONFADE = 0x1015, + SPI_GETTOOLTIPANIMATION = 0x1016, + SPI_SETTOOLTIPANIMATION = 0x1017, + SPI_GETTOOLTIPFADE = 0x1018, + SPI_SETTOOLTIPFADE = 0x1019, + SPI_GETCURSORSHADOW = 0x101A, + SPI_SETCURSORSHADOW = 0x101B, + SPI_GETBLOCKSENDINPUTRESETS = 0x1026, + SPI_SETBLOCKSENDINPUTRESETS = 0x1027, + SPI_GETUIEFFECTS = 0x103E, + SPI_SETUIEFFECTS = 0x103F, + SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000, + SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001, + SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002, + SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003, + SPI_GETFOREGROUNDFLASHCOUNT = 0x2004, + SPI_SETFOREGROUNDFLASHCOUNT = 0x2005, + SPI_GETCARETWIDTH = 0x2006, + SPI_SETCARETWIDTH = 0x2007 +} - // HIWORD(wParam) values in WM_*UISTATE* - enum { - UISF_HIDEFOCUS = 0x1, - UISF_HIDEACCEL = 0x2 - } +enum { + SPIF_UPDATEINIFILE = 1, + SPIF_SENDWININICHANGE = 2, + SPIF_SENDCHANGE = SPIF_SENDWININICHANGE +} + +// [Redefined] ATF_ONOFFFEEDBACK = 2 +// [Redefined] ATF_TIMEOUTON = 1 +enum WM_APP = 32768; +enum WM_ACTIVATE = 6; +enum WM_ACTIVATEAPP = 28; +enum WM_AFXFIRST = 864; +enum WM_AFXLAST = 895; +enum WM_ASKCBFORMATNAME = 780; +enum WM_CANCELJOURNAL = 75; +enum WM_CANCELMODE = 31; +enum WM_CAPTURECHANGED = 533; +enum WM_CHANGECBCHAIN = 781; +enum WM_CHAR = 258; +enum WM_CHARTOITEM = 47; +enum WM_CHILDACTIVATE = 34; +enum WM_CLEAR = 771; +enum WM_CLOSE = 16; +enum WM_COMMAND = 273; +enum WM_COMMNOTIFY = 68; // obsolete +enum WM_COMPACTING = 65; +enum WM_COMPAREITEM = 57; +enum WM_CONTEXTMENU = 123; +enum WM_COPY = 769; +enum WM_COPYDATA = 74; +enum WM_CREATE = 1; +enum WM_CTLCOLORBTN = 309; +enum WM_CTLCOLORDLG = 310; +enum WM_CTLCOLOREDIT = 307; +enum WM_CTLCOLORLISTBOX = 308; +enum WM_CTLCOLORMSGBOX = 306; +enum WM_CTLCOLORSCROLLBAR = 311; +enum WM_CTLCOLORSTATIC = 312; +enum WM_CUT = 768; +enum WM_DEADCHAR = 259; +enum WM_DELETEITEM = 45; +enum WM_DESTROY = 2; +enum WM_DESTROYCLIPBOARD = 775; +enum WM_DEVICECHANGE = 537; +enum WM_DEVMODECHANGE = 27; +enum WM_DISPLAYCHANGE = 126; +enum WM_DRAWCLIPBOARD = 776; +enum WM_DRAWITEM = 43; +enum WM_DROPFILES = 563; +enum WM_ENABLE = 10; +enum WM_ENDSESSION = 22; +enum WM_ENTERIDLE = 289; +enum WM_ENTERMENULOOP = 529; +enum WM_ENTERSIZEMOVE = 561; +enum WM_ERASEBKGND = 20; +enum WM_EXITMENULOOP = 530; +enum WM_EXITSIZEMOVE = 562; +enum WM_FONTCHANGE = 29; +enum WM_GETDLGCODE = 135; +enum WM_GETFONT = 49; +enum WM_GETHOTKEY = 51; +enum WM_GETICON = 127; +enum WM_GETMINMAXINFO = 36; +enum WM_GETTEXT = 13; +enum WM_GETTEXTLENGTH = 14; +enum WM_HANDHELDFIRST = 856; +enum WM_HANDHELDLAST = 863; +enum WM_HELP = 83; +enum WM_HOTKEY = 786; +enum WM_HSCROLL = 276; +enum WM_HSCROLLCLIPBOARD = 782; +enum WM_ICONERASEBKGND = 39; +enum WM_INITDIALOG = 272; +enum WM_INITMENU = 278; +enum WM_INITMENUPOPUP = 279; +enum WM_INPUTLANGCHANGE = 81; +enum WM_INPUTLANGCHANGEREQUEST = 80; +enum WM_KEYDOWN = 256; +enum WM_KEYUP = 257; +enum WM_KILLFOCUS = 8; +enum WM_MDIACTIVATE = 546; +enum WM_MDICASCADE = 551; +enum WM_MDICREATE = 544; +enum WM_MDIDESTROY = 545; +enum WM_MDIGETACTIVE = 553; +enum WM_MDIICONARRANGE = 552; +enum WM_MDIMAXIMIZE = 549; +enum WM_MDINEXT = 548; +enum WM_MDIREFRESHMENU = 564; +enum WM_MDIRESTORE = 547; +enum WM_MDISETMENU = 560; +enum WM_MDITILE = 550; +enum WM_MEASUREITEM = 44; +enum WM_UNINITMENUPOPUP = 0x0125; +enum WM_MENURBUTTONUP = 290; +enum WM_MENUCOMMAND = 0x0126; +enum WM_MENUGETOBJECT = 0x0124; +enum WM_MENUDRAG = 0x0123; + +enum WM_CHANGEUISTATE = 0x0127; +enum WM_UPDATEUISTATE = 0x0128; +enum WM_QUERYUISTATE = 0x0129; + +// LOWORD(wParam) values in WM_*UISTATE* +enum { + UIS_SET = 1, + UIS_CLEAR = 2, + UIS_INITIALIZE = 3 +} +// HIWORD(wParam) values in WM_*UISTATE* +enum { + UISF_HIDEFOCUS = 0x1, + UISF_HIDEACCEL = 0x2 } + static if (_WIN32_WINNT >= 0x501) { // HIWORD(wParam) values in WM_*UISTATE* enum { - UISF_ACTIVE = 0x4 + UISF_ACTIVE = 0x4 } } -const WM_MENUCHAR=288; -const WM_MENUSELECT=287; -const WM_MOVE=3; -const WM_MOVING=534; -const WM_NCACTIVATE=134; -const WM_NCCALCSIZE=131; -const WM_NCCREATE=129; -const WM_NCDESTROY=130; -const WM_NCHITTEST=132; -const WM_NCLBUTTONDBLCLK=163; -const WM_NCLBUTTONDOWN=161; -const WM_NCLBUTTONUP=162; -const WM_NCMBUTTONDBLCLK=169; -const WM_NCMBUTTONDOWN=167; -const WM_NCMBUTTONUP=168; -static if (_WIN32_WINNT >= 0x500) { -const WM_NCXBUTTONDOWN=171; -const WM_NCXBUTTONUP=172; -const WM_NCXBUTTONDBLCLK=173; -const WM_NCMOUSEHOVER=0x02A0; -const WM_NCMOUSELEAVE=0x02A2; -} -const WM_NCMOUSEMOVE=160; -const WM_NCPAINT=133; -const WM_NCRBUTTONDBLCLK=166; -const WM_NCRBUTTONDOWN=164; -const WM_NCRBUTTONUP=165; -const WM_NEXTDLGCTL=40; -const WM_NEXTMENU=531; -const WM_NOTIFY=78; -const WM_NOTIFYFORMAT=85; -const WM_NULL=0; -const WM_PAINT=15; -const WM_PAINTCLIPBOARD=777; -const WM_PAINTICON=38; -const WM_PALETTECHANGED=785; -const WM_PALETTEISCHANGING=784; -const WM_PARENTNOTIFY=528; -const WM_PASTE=770; -const WM_PENWINFIRST=896; -const WM_PENWINLAST=911; -const WM_POWER=72; -const WM_POWERBROADCAST=536; -const WM_PRINT=791; -const WM_PRINTCLIENT=792; -const WM_APPCOMMAND = 0x0319; -const WM_QUERYDRAGICON=55; -const WM_QUERYENDSESSION=17; -const WM_QUERYNEWPALETTE=783; -const WM_QUERYOPEN=19; -const WM_QUEUESYNC=35; -const WM_QUIT=18; -const WM_RENDERALLFORMATS=774; -const WM_RENDERFORMAT=773; -const WM_SETCURSOR=32; -const WM_SETFOCUS=7; -const WM_SETFONT=48; -const WM_SETHOTKEY=50; -const WM_SETICON=128; -const WM_SETREDRAW=11; -const WM_SETTEXT=12; -const WM_SETTINGCHANGE=26; -const WM_SHOWWINDOW=24; -const WM_SIZE=5; -const WM_SIZECLIPBOARD=779; -const WM_SIZING=532; -const WM_SPOOLERSTATUS=42; -const WM_STYLECHANGED=125; -const WM_STYLECHANGING=124; -const WM_SYSCHAR=262; -const WM_SYSCOLORCHANGE=21; -const WM_SYSCOMMAND=274; -const WM_SYSDEADCHAR=263; -const WM_SYSKEYDOWN=260; -const WM_SYSKEYUP=261; -static if(_WIN32_WINNT >= 0x501) { -const WM_TABLET_FIRST=704; -const WM_TABLET_LAST=735; -} -const WM_TCARD=82; -const WM_THEMECHANGED=794; -const WM_TIMECHANGE=30; -const WM_TIMER=275; -const WM_UNDO=772; -const WM_USER=1024; -const WM_USERCHANGED=84; -const WM_VKEYTOITEM=46; -const WM_VSCROLL=277; -const WM_VSCROLLCLIPBOARD=778; -const WM_WINDOWPOSCHANGED=71; -const WM_WINDOWPOSCHANGING=70; -const WM_WININICHANGE=26; +enum WM_MENUCHAR = 288; +enum WM_MENUSELECT = 287; +enum WM_MOVE = 3; +enum WM_MOVING = 534; +enum WM_NCACTIVATE = 134; +enum WM_NCCALCSIZE = 131; +enum WM_NCCREATE = 129; +enum WM_NCDESTROY = 130; +enum WM_NCHITTEST = 132; +enum WM_NCLBUTTONDBLCLK = 163; +enum WM_NCLBUTTONDOWN = 161; +enum WM_NCLBUTTONUP = 162; +enum WM_NCMBUTTONDBLCLK = 169; +enum WM_NCMBUTTONDOWN = 167; +enum WM_NCMBUTTONUP = 168; +enum WM_NCXBUTTONDOWN = 171; +enum WM_NCXBUTTONUP = 172; +enum WM_NCXBUTTONDBLCLK = 173; +enum WM_NCMOUSEHOVER = 0x02A0; +enum WM_NCMOUSELEAVE = 0x02A2; +enum WM_NCMOUSEMOVE = 160; +enum WM_NCPAINT = 133; +enum WM_NCRBUTTONDBLCLK = 166; +enum WM_NCRBUTTONDOWN = 164; +enum WM_NCRBUTTONUP = 165; +enum WM_NEXTDLGCTL = 40; +enum WM_NEXTMENU = 531; +enum WM_NOTIFY = 78; +enum WM_NOTIFYFORMAT = 85; +enum WM_NULL = 0; +enum WM_PAINT = 15; +enum WM_PAINTCLIPBOARD = 777; +enum WM_PAINTICON = 38; +enum WM_PALETTECHANGED = 785; +enum WM_PALETTEISCHANGING = 784; +enum WM_PARENTNOTIFY = 528; +enum WM_PASTE = 770; +enum WM_PENWINFIRST = 896; +enum WM_PENWINLAST = 911; +enum WM_POWER = 72; +enum WM_POWERBROADCAST = 536; +enum WM_PRINT = 791; +enum WM_PRINTCLIENT = 792; +enum WM_APPCOMMAND = 0x0319; +enum WM_QUERYDRAGICON = 55; +enum WM_QUERYENDSESSION = 17; +enum WM_QUERYNEWPALETTE = 783; +enum WM_QUERYOPEN = 19; +enum WM_QUEUESYNC = 35; +enum WM_QUIT = 18; +enum WM_RENDERALLFORMATS = 774; +enum WM_RENDERFORMAT = 773; +enum WM_SETCURSOR = 32; +enum WM_SETFOCUS = 7; +enum WM_SETFONT = 48; +enum WM_SETHOTKEY = 50; +enum WM_SETICON = 128; +enum WM_SETREDRAW = 11; +enum WM_SETTEXT = 12; +enum WM_SETTINGCHANGE = 26; +enum WM_SHOWWINDOW = 24; +enum WM_SIZE = 5; +enum WM_SIZECLIPBOARD = 779; +enum WM_SIZING = 532; +enum WM_SPOOLERSTATUS = 42; +enum WM_STYLECHANGED = 125; +enum WM_STYLECHANGING = 124; +enum WM_SYSCHAR = 262; +enum WM_SYSCOLORCHANGE = 21; +enum WM_SYSCOMMAND = 274; +enum WM_SYSDEADCHAR = 263; +enum WM_SYSKEYDOWN = 260; +enum WM_SYSKEYUP = 261; +static if (_WIN32_WINNT >= 0x501) { + enum WM_TABLET_FIRST = 704; + enum WM_TABLET_LAST = 735; +} +enum WM_TCARD = 82; +enum WM_THEMECHANGED = 794; +enum WM_TIMECHANGE = 30; +enum WM_TIMER = 275; +enum WM_UNDO = 772; +enum WM_USER = 1024; +enum WM_USERCHANGED = 84; +enum WM_VKEYTOITEM = 46; +enum WM_VSCROLL = 277; +enum WM_VSCROLLCLIPBOARD = 778; +enum WM_WINDOWPOSCHANGED = 71; +enum WM_WINDOWPOSCHANGING = 70; +enum WM_WININICHANGE = 26; static if(_WIN32_WINNT >= 0x501) { -const WM_WTSSESSION_CHANGE=689; +enum WM_WTSSESSION_CHANGE = 689; } -const WM_INPUT=255; -const WM_KEYFIRST=256; +enum WM_INPUT = 255; +enum WM_KEYFIRST = 256; static if(_WIN32_WINNT >= 0x501) { -const WM_UNICHAR=265; -const WM_KEYLAST=265; -const UNICODE_NOCHAR=0xFFFF; +enum WM_UNICHAR = 265; +enum WM_KEYLAST = 265; +enum UNICODE_NOCHAR = 0xFFFF; } else { -const WM_KEYLAST=264; -} -const WM_SYNCPAINT=136; -const WM_MOUSEACTIVATE=33; -const WM_MOUSEMOVE=512; -const WM_LBUTTONDOWN=513; -const WM_LBUTTONUP=514; -const WM_LBUTTONDBLCLK=515; -const WM_RBUTTONDOWN=516; -const WM_RBUTTONUP=517; -const WM_RBUTTONDBLCLK=518; -const WM_MBUTTONDOWN=519; -const WM_MBUTTONUP=520; -const WM_MBUTTONDBLCLK=521; -const WM_MOUSEWHEEL=522; -const WM_MOUSEFIRST=512; +enum WM_KEYLAST = 264; +} +enum WM_SYNCPAINT = 136; +enum WM_MOUSEACTIVATE = 33; +enum WM_MOUSEMOVE = 512; +enum WM_LBUTTONDOWN = 513; +enum WM_LBUTTONUP = 514; +enum WM_LBUTTONDBLCLK = 515; +enum WM_RBUTTONDOWN = 516; +enum WM_RBUTTONUP = 517; +enum WM_RBUTTONDBLCLK = 518; +enum WM_MBUTTONDOWN = 519; +enum WM_MBUTTONUP = 520; +enum WM_MBUTTONDBLCLK = 521; +enum WM_MOUSEWHEEL = 522; +enum WM_MOUSEFIRST = 512; +static if (_WIN32_WINNT >= 0x501) { + enum WM_XBUTTONDOWN = 523; + enum WM_XBUTTONUP = 524; + enum WM_XBUTTONDBLCLK = 525; +} +static if (_WIN32_WINNT >= 0x600) { // FIXME: where did this come from? what version is it? + enum WM_MOUSEHWHEEL = 526; +} + static if (_WIN32_WINNT >= 0x600) { -const WM_XBUTTONDOWN=523; -const WM_XBUTTONUP=524; -const WM_XBUTTONDBLCLK=525; -const WM_MOUSEHWHEEL=526; -const WM_MOUSELAST=526; -} -else static if (_WIN32_WINNT >= 0x500) { -const WM_XBUTTONDOWN=523; -const WM_XBUTTONUP=524; -const WM_XBUTTONDBLCLK=525; -const WM_MOUSELAST=525; + enum WM_MOUSELAST = WM_MOUSEHWHEEL; +} else static if (_WIN32_WINNT >= 0x501) { + enum WM_MOUSELAST = WM_XBUTTONDBLCLK; } else { -const WM_MOUSELAST=522; + enum WM_MOUSELAST = WM_MOUSEWHEEL; } -const WM_MOUSEHOVER=0x2A1; -const WM_MOUSELEAVE=0x2A3; -static if (_WIN32_WINNT >= 0x400) { -const WHEEL_DELTA=120; -SHORT GET_WHEEL_DELTA_WPARAM(WPARAM wparam) -{ -return cast(SHORT) HIWORD(wparam); -} +enum WM_MOUSEHOVER = 0x2A1; +enum WM_MOUSELEAVE = 0x2A3; + +enum WHEEL_DELTA = 120; -const WHEEL_PAGESCROLL = uint.max; +SHORT GET_WHEEL_DELTA_WPARAM()(WPARAM wparam) { + return cast(SHORT) HIWORD(wparam); } -const BM_CLICK=245; -const BM_GETCHECK=240; -const BM_GETIMAGE=246; -const BM_GETSTATE=242; -const BM_SETCHECK=241; -const BM_SETIMAGE=247; + +enum WHEEL_PAGESCROLL = uint.max; + +enum BM_CLICK = 245; +enum BM_GETCHECK = 240; +enum BM_GETIMAGE = 246; +enum BM_GETSTATE = 242; +enum BM_SETCHECK = 241; +enum BM_SETIMAGE = 247; static if(_WIN32_WINNT >= 0x600) { - const BM_SETDONTCLICK = 248; -} -const BM_SETSTATE=243; -const BM_SETSTYLE=244; -const BN_CLICKED=0; -const BN_DBLCLK=5; -const BN_DISABLE=4; -const BN_DOUBLECLICKED=5; -const BN_HILITE=2; -const BN_KILLFOCUS=7; -const BN_PAINT=1; -const BN_PUSHED=2; -const BN_SETFOCUS=6; -const BN_UNHILITE=3; -const BN_UNPUSHED=3; -const CB_ADDSTRING=323; -const CB_DELETESTRING=324; -const CB_DIR=325; -const CB_FINDSTRING=332; -const CB_FINDSTRINGEXACT=344; -const CB_GETCOUNT=326; -const CB_GETCURSEL=327; -const CB_GETDROPPEDCONTROLRECT=338; -const CB_GETDROPPEDSTATE=343; -const CB_GETDROPPEDWIDTH=351; -const CB_GETEDITSEL=320; -const CB_GETEXTENDEDUI=342; -const CB_GETHORIZONTALEXTENT=349; -const CB_GETITEMDATA=336; -const CB_GETITEMHEIGHT=340; -const CB_GETLBTEXT=328; -const CB_GETLBTEXTLEN=329; -const CB_GETLOCALE=346; -const CB_GETTOPINDEX=347; -const CB_INITSTORAGE=353; -const CB_INSERTSTRING=330; -const CB_LIMITTEXT=321; -const CB_RESETCONTENT=331; -const CB_SELECTSTRING=333; -const CB_SETCURSEL=334; -const CB_SETDROPPEDWIDTH=352; -const CB_SETEDITSEL=322; -const CB_SETEXTENDEDUI=341; -const CB_SETHORIZONTALEXTENT=350; -const CB_SETITEMDATA=337; -const CB_SETITEMHEIGHT=339; -const CB_SETLOCALE=345; -const CB_SETTOPINDEX=348; -const CB_SHOWDROPDOWN=335; + enum BM_SETDONTCLICK = 248; +} +enum BM_SETSTATE = 243; +enum BM_SETSTYLE = 244; +enum BN_CLICKED = 0; +enum BN_DBLCLK = 5; +enum BN_DISABLE = 4; +enum BN_DOUBLECLICKED = 5; +enum BN_HILITE = 2; +enum BN_KILLFOCUS = 7; +enum BN_PAINT = 1; +enum BN_PUSHED = 2; +enum BN_SETFOCUS = 6; +enum BN_UNHILITE = 3; +enum BN_UNPUSHED = 3; +enum CB_ADDSTRING = 323; +enum CB_DELETESTRING = 324; +enum CB_DIR = 325; +enum CB_FINDSTRING = 332; +enum CB_FINDSTRINGEXACT = 344; +enum CB_GETCOUNT = 326; +enum CB_GETCURSEL = 327; +enum CB_GETDROPPEDCONTROLRECT = 338; +enum CB_GETDROPPEDSTATE = 343; +enum CB_GETDROPPEDWIDTH = 351; +enum CB_GETEDITSEL = 320; +enum CB_GETEXTENDEDUI = 342; +enum CB_GETHORIZONTALEXTENT = 349; +enum CB_GETITEMDATA = 336; +enum CB_GETITEMHEIGHT = 340; +enum CB_GETLBTEXT = 328; +enum CB_GETLBTEXTLEN = 329; +enum CB_GETLOCALE = 346; +enum CB_GETTOPINDEX = 347; +enum CB_INITSTORAGE = 353; +enum CB_INSERTSTRING = 330; +enum CB_LIMITTEXT = 321; +enum CB_RESETCONTENT = 331; +enum CB_SELECTSTRING = 333; +enum CB_SETCURSEL = 334; +enum CB_SETDROPPEDWIDTH = 352; +enum CB_SETEDITSEL = 322; +enum CB_SETEXTENDEDUI = 341; +enum CB_SETHORIZONTALEXTENT = 350; +enum CB_SETITEMDATA = 337; +enum CB_SETITEMHEIGHT = 339; +enum CB_SETLOCALE = 345; +enum CB_SETTOPINDEX = 348; +enum CB_SHOWDROPDOWN = 335; static if(_WIN32_WINNT >= 0x501) { -const CB_GETCOMBOBOXINFO = 356; -} - -const CBN_CLOSEUP=8; -const CBN_DBLCLK=2; -const CBN_DROPDOWN=7; -const CBN_EDITCHANGE=5; -const CBN_EDITUPDATE=6; -const CBN_ERRSPACE=(-1); -const CBN_KILLFOCUS=4; -const CBN_SELCHANGE=1; -const CBN_SELENDCANCEL=10; -const CBN_SELENDOK=9; -const CBN_SETFOCUS=3; - -const EM_CANUNDO=198; -const EM_CHARFROMPOS=215; -const EM_EMPTYUNDOBUFFER=205; -const EM_FMTLINES=200; -const EM_GETFIRSTVISIBLELINE=206; -const EM_GETHANDLE=189; -const EM_GETLIMITTEXT=213; -const EM_GETLINE=196; -const EM_GETLINECOUNT=186; -const EM_GETMARGINS=212; -const EM_GETMODIFY=184; -const EM_GETPASSWORDCHAR=210; -const EM_GETRECT=178; -const EM_GETSEL=176; -const EM_GETTHUMB=190; -const EM_GETWORDBREAKPROC=209; -const EM_LIMITTEXT=197; -const EM_LINEFROMCHAR=201; -const EM_LINEINDEX=187; -const EM_LINELENGTH=193; -const EM_LINESCROLL=182; -const EM_POSFROMCHAR=214; -const EM_REPLACESEL=194; -const EM_SCROLL=181; -const EM_SCROLLCARET=183; -const EM_SETHANDLE=188; -const EM_SETLIMITTEXT=197; -const EM_SETMARGINS=211; -const EM_SETMODIFY=185; -const EM_SETPASSWORDCHAR=204; -const EM_SETREADONLY=207; -const EM_SETRECT=179; -const EM_SETRECTNP=180; -const EM_SETSEL=177; -const EM_SETTABSTOPS=203; -const EM_SETWORDBREAKPROC=208; -const EM_UNDO=199; - -static if(_WIN32_WINNT >= 0x500) { - const EM_SETIMESTATUS=216; - const EM_GETIMESTATUS=217; -} - -const EN_CHANGE=768; -const EN_ERRSPACE=1280; -const EN_HSCROLL=1537; -const EN_KILLFOCUS=512; -const EN_MAXTEXT=1281; -const EN_SETFOCUS=256; -const EN_UPDATE=1024; -const EN_VSCROLL=1538; - -const LB_ADDFILE=406; -const LB_ADDSTRING=384; -const LB_DELETESTRING=386; -const LB_DIR=397; -const LB_FINDSTRING=399; -const LB_FINDSTRINGEXACT=418; -const LB_GETANCHORINDEX=413; -const LB_GETCARETINDEX=415; -const LB_GETCOUNT=395; -const LB_GETCURSEL=392; -const LB_GETHORIZONTALEXTENT=403; -const LB_GETITEMDATA=409; -const LB_GETITEMHEIGHT=417; -const LB_GETITEMRECT=408; -const LB_GETLOCALE=422; -const LB_GETSEL=391; -const LB_GETSELCOUNT=400; -const LB_GETSELITEMS=401; -const LB_GETTEXT=393; -const LB_GETTEXTLEN=394; -const LB_GETTOPINDEX=398; -const LB_INITSTORAGE=424; -const LB_INSERTSTRING=385; -const LB_ITEMFROMPOINT=425; -const LB_RESETCONTENT=388; -const LB_SELECTSTRING=396; -const LB_SELITEMRANGE=411; -const LB_SELITEMRANGEEX=387; -const LB_SETANCHORINDEX=412; -const LB_SETCARETINDEX=414; -const LB_SETCOLUMNWIDTH=405; -const LB_SETCOUNT=423; -const LB_SETCURSEL=390; -const LB_SETHORIZONTALEXTENT=404; -const LB_SETITEMDATA=410; -const LB_SETITEMHEIGHT=416; -const LB_SETLOCALE=421; -const LB_SETSEL=389; -const LB_SETTABSTOPS=402; -const LB_SETTOPINDEX=407; +enum CB_GETCOMBOBOXINFO = 356; +} + +enum CBN_CLOSEUP = 8; +enum CBN_DBLCLK = 2; +enum CBN_DROPDOWN = 7; +enum CBN_EDITCHANGE = 5; +enum CBN_EDITUPDATE = 6; +enum CBN_ERRSPACE = (-1); +enum CBN_KILLFOCUS = 4; +enum CBN_SELCHANGE = 1; +enum CBN_SELENDCANCEL = 10; +enum CBN_SELENDOK = 9; +enum CBN_SETFOCUS = 3; + +enum EM_CANUNDO = 198; +enum EM_CHARFROMPOS = 215; +enum EM_EMPTYUNDOBUFFER = 205; +enum EM_FMTLINES = 200; +enum EM_GETFIRSTVISIBLELINE = 206; +enum EM_GETHANDLE = 189; +enum EM_GETLIMITTEXT = 213; +enum EM_GETLINE = 196; +enum EM_GETLINECOUNT = 186; +enum EM_GETMARGINS = 212; +enum EM_GETMODIFY = 184; +enum EM_GETPASSWORDCHAR = 210; +enum EM_GETRECT = 178; +enum EM_GETSEL = 176; +enum EM_GETTHUMB = 190; +enum EM_GETWORDBREAKPROC = 209; +enum EM_LIMITTEXT = 197; +enum EM_LINEFROMCHAR = 201; +enum EM_LINEINDEX = 187; +enum EM_LINELENGTH = 193; +enum EM_LINESCROLL = 182; +enum EM_POSFROMCHAR = 214; +enum EM_REPLACESEL = 194; +enum EM_SCROLL = 181; +enum EM_SCROLLCARET = 183; +enum EM_SETHANDLE = 188; +enum EM_SETLIMITTEXT = 197; +enum EM_SETMARGINS = 211; +enum EM_SETMODIFY = 185; +enum EM_SETPASSWORDCHAR = 204; +enum EM_SETREADONLY = 207; +enum EM_SETRECT = 179; +enum EM_SETRECTNP = 180; +enum EM_SETSEL = 177; +enum EM_SETTABSTOPS = 203; +enum EM_SETWORDBREAKPROC = 208; +enum EM_UNDO = 199; + +enum EM_SETIMESTATUS = 216; +enum EM_GETIMESTATUS = 217; + +enum EN_CHANGE = 768; +enum EN_ERRSPACE = 1280; +enum EN_HSCROLL = 1537; +enum EN_KILLFOCUS = 512; +enum EN_MAXTEXT = 1281; +enum EN_SETFOCUS = 256; +enum EN_UPDATE = 1024; +enum EN_VSCROLL = 1538; + +enum LB_ADDFILE = 406; +enum LB_ADDSTRING = 384; +enum LB_DELETESTRING = 386; +enum LB_DIR = 397; +enum LB_FINDSTRING = 399; +enum LB_FINDSTRINGEXACT = 418; +enum LB_GETANCHORINDEX = 413; +enum LB_GETCARETINDEX = 415; +enum LB_GETCOUNT = 395; +enum LB_GETCURSEL = 392; +enum LB_GETHORIZONTALEXTENT = 403; +enum LB_GETITEMDATA = 409; +enum LB_GETITEMHEIGHT = 417; +enum LB_GETITEMRECT = 408; +enum LB_GETLOCALE = 422; +enum LB_GETSEL = 391; +enum LB_GETSELCOUNT = 400; +enum LB_GETSELITEMS = 401; +enum LB_GETTEXT = 393; +enum LB_GETTEXTLEN = 394; +enum LB_GETTOPINDEX = 398; +enum LB_INITSTORAGE = 424; +enum LB_INSERTSTRING = 385; +enum LB_ITEMFROMPOINT = 425; +enum LB_RESETCONTENT = 388; +enum LB_SELECTSTRING = 396; +enum LB_SELITEMRANGE = 411; +enum LB_SELITEMRANGEEX = 387; +enum LB_SETANCHORINDEX = 412; +enum LB_SETCARETINDEX = 414; +enum LB_SETCOLUMNWIDTH = 405; +enum LB_SETCOUNT = 423; +enum LB_SETCURSEL = 390; +enum LB_SETHORIZONTALEXTENT = 404; +enum LB_SETITEMDATA = 410; +enum LB_SETITEMHEIGHT = 416; +enum LB_SETLOCALE = 421; +enum LB_SETSEL = 389; +enum LB_SETTABSTOPS = 402; +enum LB_SETTOPINDEX = 407; static if(_WIN32_WINNT >= 0x501) { -const LB_GETLISTBOXINFO=434; -} - -const LBN_DBLCLK=2; -const LBN_ERRSPACE=-2; -const LBN_KILLFOCUS=5; -const LBN_SELCANCEL=3; -const LBN_SELCHANGE=1; -const LBN_SETFOCUS=4; - -const SBM_ENABLE_ARROWS=228; -const SBM_GETPOS=225; -const SBM_GETRANGE=227; -const SBM_GETSCROLLINFO=234; -const SBM_SETPOS=224; -const SBM_SETRANGE=226; -const SBM_SETRANGEREDRAW=230; -const SBM_SETSCROLLINFO=233; +enum LB_GETLISTBOXINFO = 434; +} + +enum LBN_DBLCLK = 2; +enum LBN_ERRSPACE = -2; +enum LBN_KILLFOCUS = 5; +enum LBN_SELCANCEL = 3; +enum LBN_SELCHANGE = 1; +enum LBN_SETFOCUS = 4; + +enum SBM_ENABLE_ARROWS = 228; +enum SBM_GETPOS = 225; +enum SBM_GETRANGE = 227; +enum SBM_GETSCROLLINFO = 234; +enum SBM_SETPOS = 224; +enum SBM_SETRANGE = 226; +enum SBM_SETRANGEREDRAW = 230; +enum SBM_SETSCROLLINFO = 233; static if(_WIN32_WINNT >= 0x501) { -const SBM_GETSCROLLBARINFO=235; -} - -const STM_GETICON=369; -const STM_GETIMAGE=371; -const STM_SETICON=368; -const STM_SETIMAGE=370; -const STN_CLICKED=0; -const STN_DBLCLK=1; -const STN_DISABLE=3; -const STN_ENABLE=2; - -const DM_GETDEFID = WM_USER; -const DM_SETDEFID = WM_USER+1; -const DM_REPOSITION = WM_USER+2; - -const PSM_PAGEINFO = WM_USER+100; -const PSM_SHEETINFO = WM_USER+101; - -const PSI_SETACTIVE=1; -const PSI_KILLACTIVE=2; -const PSI_APPLY=3; -const PSI_RESET=4; -const PSI_HASHELP=5; -const PSI_HELP=6; -const PSI_CHANGED=1; -const PSI_GUISTART=2; -const PSI_REBOOT=3; -const PSI_GETSIBLINGS=4; - -const DCX_WINDOW=1; -const DCX_CACHE=2; -const DCX_PARENTCLIP=32; -const DCX_CLIPSIBLINGS=16; -const DCX_CLIPCHILDREN=8; -const DCX_NORESETATTRS=4; -const DCX_INTERSECTUPDATE=0x200; -const DCX_LOCKWINDOWUPDATE=0x400; -const DCX_EXCLUDERGN=64; -const DCX_INTERSECTRGN=128; -const DCX_VALIDATE=0x200000; - -const GMDI_GOINTOPOPUPS=2; -const GMDI_USEDISABLED=1; -const FKF_AVAILABLE=2; -const FKF_CLICKON=64; -const FKF_FILTERKEYSON=1; -const FKF_HOTKEYACTIVE=4; -const FKF_HOTKEYSOUND=16; -const FKF_CONFIRMHOTKEY=8; -const FKF_INDICATOR=32; -const HCF_HIGHCONTRASTON=1; -const HCF_AVAILABLE=2; -const HCF_HOTKEYACTIVE=4; -const HCF_CONFIRMHOTKEY=8; -const HCF_HOTKEYSOUND=16; -const HCF_INDICATOR=32; -const HCF_HOTKEYAVAILABLE=64; -const MKF_AVAILABLE=2; -const MKF_CONFIRMHOTKEY=8; -const MKF_HOTKEYACTIVE=4; -const MKF_HOTKEYSOUND=16; -const MKF_INDICATOR=32; -const MKF_MOUSEKEYSON=1; -const MKF_MODIFIERS=64; -const MKF_REPLACENUMBERS=128; -const SERKF_ACTIVE=8; // May be obsolete. Not in recent MS docs. -const SERKF_AVAILABLE=2; -const SERKF_INDICATOR=4; -const SERKF_SERIALKEYSON=1; -const SSF_AVAILABLE=2; -const SSF_SOUNDSENTRYON=1; -const SSTF_BORDER=2; -const SSTF_CHARS=1; -const SSTF_DISPLAY=3; -const SSTF_NONE=0; -const SSGF_DISPLAY=3; -const SSGF_NONE=0; -const SSWF_CUSTOM=4; -const SSWF_DISPLAY=3; -const SSWF_NONE=0; -const SSWF_TITLE=1; -const SSWF_WINDOW=2; -const SKF_AUDIBLEFEEDBACK=64; -const SKF_AVAILABLE=2; -const SKF_CONFIRMHOTKEY=8; -const SKF_HOTKEYACTIVE=4; -const SKF_HOTKEYSOUND=16; -const SKF_INDICATOR=32; -const SKF_STICKYKEYSON=1; -const SKF_TRISTATE=128; -const SKF_TWOKEYSOFF=256; -const TKF_AVAILABLE=2; -const TKF_CONFIRMHOTKEY=8; -const TKF_HOTKEYACTIVE=4; -const TKF_HOTKEYSOUND=16; -const TKF_TOGGLEKEYSON=1; -const MDITILE_SKIPDISABLED=2; -const MDITILE_HORIZONTAL=1; -const MDITILE_VERTICAL=0; +enum SBM_GETSCROLLBARINFO = 235; +} + +enum STM_GETICON = 369; +enum STM_GETIMAGE = 371; +enum STM_SETICON = 368; +enum STM_SETIMAGE = 370; +enum STN_CLICKED = 0; +enum STN_DBLCLK = 1; +enum STN_DISABLE = 3; +enum STN_ENABLE = 2; + +enum DM_GETDEFID = WM_USER; +enum DM_SETDEFID = WM_USER+1; +enum DM_REPOSITION = WM_USER+2; + +enum PSM_PAGEINFO = WM_USER+100; +enum PSM_SHEETINFO = WM_USER+101; + +enum PSI_SETACTIVE = 1; +enum PSI_KILLACTIVE = 2; +enum PSI_APPLY = 3; +enum PSI_RESET = 4; +enum PSI_HASHELP = 5; +enum PSI_HELP = 6; +enum PSI_CHANGED = 1; +enum PSI_GUISTART = 2; +enum PSI_REBOOT = 3; +enum PSI_GETSIBLINGS = 4; + +enum DCX_WINDOW = 1; +enum DCX_CACHE = 2; +enum DCX_PARENTCLIP = 32; +enum DCX_CLIPSIBLINGS = 16; +enum DCX_CLIPCHILDREN = 8; +enum DCX_NORESETATTRS = 4; +enum DCX_INTERSECTUPDATE = 0x200; +enum DCX_LOCKWINDOWUPDATE = 0x400; +enum DCX_EXCLUDERGN = 64; +enum DCX_INTERSECTRGN = 128; +enum DCX_VALIDATE = 0x200000; + +enum GMDI_GOINTOPOPUPS = 2; +enum GMDI_USEDISABLED = 1; +enum FKF_AVAILABLE = 2; +enum FKF_CLICKON = 64; +enum FKF_FILTERKEYSON = 1; +enum FKF_HOTKEYACTIVE = 4; +enum FKF_HOTKEYSOUND = 16; +enum FKF_CONFIRMHOTKEY = 8; +enum FKF_INDICATOR = 32; +enum HCF_HIGHCONTRASTON = 1; +enum HCF_AVAILABLE = 2; +enum HCF_HOTKEYACTIVE = 4; +enum HCF_CONFIRMHOTKEY = 8; +enum HCF_HOTKEYSOUND = 16; +enum HCF_INDICATOR = 32; +enum HCF_HOTKEYAVAILABLE = 64; +enum MKF_AVAILABLE = 2; +enum MKF_CONFIRMHOTKEY = 8; +enum MKF_HOTKEYACTIVE = 4; +enum MKF_HOTKEYSOUND = 16; +enum MKF_INDICATOR = 32; +enum MKF_MOUSEKEYSON = 1; +enum MKF_MODIFIERS = 64; +enum MKF_REPLACENUMBERS = 128; +enum SERKF_ACTIVE = 8; // May be obsolete. Not in recent MS docs. +enum SERKF_AVAILABLE = 2; +enum SERKF_INDICATOR = 4; +enum SERKF_SERIALKEYSON = 1; +enum SSF_AVAILABLE = 2; +enum SSF_SOUNDSENTRYON = 1; +enum SSTF_BORDER = 2; +enum SSTF_CHARS = 1; +enum SSTF_DISPLAY = 3; +enum SSTF_NONE = 0; +enum SSGF_DISPLAY = 3; +enum SSGF_NONE = 0; +enum SSWF_CUSTOM = 4; +enum SSWF_DISPLAY = 3; +enum SSWF_NONE = 0; +enum SSWF_TITLE = 1; +enum SSWF_WINDOW = 2; +enum SKF_AUDIBLEFEEDBACK = 64; +enum SKF_AVAILABLE = 2; +enum SKF_CONFIRMHOTKEY = 8; +enum SKF_HOTKEYACTIVE = 4; +enum SKF_HOTKEYSOUND = 16; +enum SKF_INDICATOR = 32; +enum SKF_STICKYKEYSON = 1; +enum SKF_TRISTATE = 128; +enum SKF_TWOKEYSOFF = 256; +enum TKF_AVAILABLE = 2; +enum TKF_CONFIRMHOTKEY = 8; +enum TKF_HOTKEYACTIVE = 4; +enum TKF_HOTKEYSOUND = 16; +enum TKF_TOGGLEKEYSON = 1; +enum MDITILE_SKIPDISABLED = 2; +enum MDITILE_HORIZONTAL = 1; +enum MDITILE_VERTICAL = 0; enum { VK_LBUTTON = 0x01, VK_RBUTTON = 0x02, VK_CANCEL = 0x03, VK_MBUTTON = 0x04, - //static if (_WIN32_WINNT > = 0x500) { VK_XBUTTON1 = 0x05, VK_XBUTTON2 = 0x06, - //} VK_BACK = 0x08, VK_TAB = 0x09, VK_CLEAR = 0x0C, @@ -2066,7 +2103,6 @@ enum { VK_RCONTROL = 0xA3, VK_LMENU = 0xA4, VK_RMENU = 0xA5, - //static if (_WIN32_WINNT > = 0x500) { VK_BROWSER_BACK = 0xA6, VK_BROWSER_FORWARD = 0xA7, VK_BROWSER_REFRESH = 0xA8, @@ -2085,14 +2121,11 @@ enum { VK_LAUNCH_MEDIA_SELECT = 0xB5, VK_LAUNCH_APP1 = 0xB6, VK_LAUNCH_APP2 = 0xB7, - //} VK_OEM_1 = 0xBA, - //static if (_WIN32_WINNT > = 0x500) { VK_OEM_PLUS = 0xBB, VK_OEM_COMMA = 0xBC, VK_OEM_MINUS = 0xBD, VK_OEM_PERIOD = 0xBE, - //} VK_OEM_2 = 0xBF, VK_OEM_3 = 0xC0, VK_OEM_4 = 0xDB, @@ -2100,13 +2133,9 @@ enum { VK_OEM_6 = 0xDD, VK_OEM_7 = 0xDE, VK_OEM_8 = 0xDF, - //static if (_WIN32_WINNT > = 0x500) { VK_OEM_102 = 0xE2, - //} VK_PROCESSKEY = 0xE5, - //static if (_WIN32_WINNT > = 0x500) { VK_PACKET = 0xE7, - //} VK_ATTN = 0xF6, VK_CRSEL = 0xF7, VK_EXSEL = 0xF8, @@ -2118,279 +2147,269 @@ enum { VK_OEM_CLEAR = 0xFE, } -const TME_HOVER=1; -const TME_LEAVE=2; -const TME_QUERY=0x40000000; -const TME_CANCEL=0x80000000; - -const HOVER_DEFAULT=0xFFFFFFFF; - -const MK_LBUTTON=1; -const MK_RBUTTON=2; -const MK_SHIFT=4; -const MK_CONTROL=8; -const MK_MBUTTON=16; -static if (_WIN32_WINNT >= 0x500) { - const MK_XBUTTON1 = 32; - const MK_XBUTTON2 = 64; -} -const TPM_CENTERALIGN=4; -const TPM_LEFTALIGN=0; -const TPM_RIGHTALIGN=8; -const TPM_LEFTBUTTON=0; -const TPM_RIGHTBUTTON=2; -const TPM_HORIZONTAL=0; -const TPM_VERTICAL=64; -const TPM_TOPALIGN=0; -const TPM_VCENTERALIGN=16; -const TPM_BOTTOMALIGN=32; -const TPM_NONOTIFY=128; -const TPM_RETURNCMD=256; -static if (_WIN32_WINNT >= 0x410) { - const TPM_RECURSE = 1; -} - -const HELP_COMMAND=0x102; -const HELP_CONTENTS=3; -const HELP_CONTEXT=1; -const HELP_CONTEXTPOPUP=8; -const HELP_FORCEFILE=9; -const HELP_HELPONHELP=4; -const HELP_INDEX=3; -const HELP_KEY=0x101; -const HELP_MULTIKEY=0x201; -const HELP_PARTIALKEY=0x105; -const HELP_QUIT=2; -const HELP_SETCONTENTS=5; -const HELP_SETINDEX=5; -const HELP_SETWINPOS=0x203; -const HELP_CONTEXTMENU=0xa; -const HELP_FINDER=0xb; -const HELP_WM_HELP=0xc; -const HELP_TCARD=0x8000; -const HELP_TCARD_DATA=16; -const HELP_TCARD_OTHER_CALLER=0x11; - -const IDH_NO_HELP=28440; -const IDH_MISSING_CONTEXT=28441; -const IDH_GENERIC_HELP_BUTTON=28442; -const IDH_OK=28443; -const IDH_CANCEL=28444; -const IDH_HELP=28445; - -const LB_CTLCODE=0; -const LB_OKAY=0; -const LB_ERR=-1; -const LB_ERRSPACE=-2; - -const CB_OKAY=0; -const CB_ERR=-1; -const CB_ERRSPACE=-2; - -const HIDE_WINDOW=0; - -const SHOW_OPENWINDOW=1; -const SHOW_ICONWINDOW=2; -const SHOW_FULLSCREEN=3; -const SHOW_OPENNOACTIVATE=4; - -const SW_PARENTCLOSING=1; -const SW_OTHERZOOM=2; -const SW_PARENTOPENING=3; -const SW_OTHERUNZOOM=4; - -const KF_EXTENDED=256; -const KF_DLGMODE=2048; -const KF_MENUMODE=4096; -const KF_ALTDOWN=8192; -const KF_REPEAT=16384; -const KF_UP=32768; - -const WSF_VISIBLE=1; - -const PWR_OK=1; -const PWR_FAIL=-1; -const PWR_SUSPENDREQUEST=1; -const PWR_SUSPENDRESUME=2; -const PWR_CRITICALRESUME=3; - -const NFR_ANSI=1; -const NFR_UNICODE=2; -const NF_QUERY=3; -const NF_REQUERY=4; - -const MENULOOP_WINDOW=0; -const MENULOOP_POPUP=1; - -const WMSZ_LEFT=1; -const WMSZ_RIGHT=2; -const WMSZ_TOP=3; -const WMSZ_TOPLEFT=4; -const WMSZ_TOPRIGHT=5; -const WMSZ_BOTTOM=6; -const WMSZ_BOTTOMLEFT=7; -const WMSZ_BOTTOMRIGHT=8; - -const HTERROR=-2; -const HTTRANSPARENT=-1; -const HTNOWHERE=0; -const HTCLIENT=1; -const HTCAPTION=2; -const HTSYSMENU=3; -const HTGROWBOX=4; -const HTSIZE=4; -const HTMENU=5; -const HTHSCROLL=6; -const HTVSCROLL=7; -const HTMINBUTTON=8; -const HTMAXBUTTON=9; -const HTREDUCE=8; -const HTZOOM=9; -const HTLEFT=10; -const HTSIZEFIRST=10; -const HTRIGHT=11; -const HTTOP=12; -const HTTOPLEFT=13; -const HTTOPRIGHT=14; -const HTBOTTOM=15; -const HTBOTTOMLEFT=16; -const HTBOTTOMRIGHT=17; -const HTSIZELAST=17; -const HTBORDER=18; -const HTOBJECT=19; -const HTCLOSE=20; -const HTHELP=21; - -const MA_ACTIVATE=1; -const MA_ACTIVATEANDEAT=2; -const MA_NOACTIVATE=3; -const MA_NOACTIVATEANDEAT=4; - -const SIZE_RESTORED=0; -const SIZE_MINIMIZED=1; -const SIZE_MAXIMIZED=2; -const SIZE_MAXSHOW=3; -const SIZE_MAXHIDE=4; - -const SIZENORMAL=0; -const SIZEICONIC=1; -const SIZEFULLSCREEN=2; -const SIZEZOOMSHOW=3; -const SIZEZOOMHIDE=4; - -const WVR_ALIGNTOP=16; -const WVR_ALIGNLEFT=32; -const WVR_ALIGNBOTTOM=64; -const WVR_ALIGNRIGHT=128; -const WVR_HREDRAW=256; -const WVR_VREDRAW=512; -const WVR_REDRAW=(WVR_HREDRAW|WVR_VREDRAW); -const WVR_VALIDRECTS=1024; - -const PRF_CHECKVISIBLE=1; -const PRF_NONCLIENT=2; -const PRF_CLIENT=4; -const PRF_ERASEBKGND=8; -const PRF_CHILDREN=16; -const PRF_OWNED=32; - -const IDANI_OPEN=1; -const IDANI_CLOSE=2; -const IDANI_CAPTION=3; - -const WPF_RESTORETOMAXIMIZED=2; -const WPF_SETMINPOSITION=1; - -const ODT_MENU=1; -const ODT_LISTBOX=2; -const ODT_COMBOBOX=3; -const ODT_BUTTON=4; -const ODT_STATIC=5; -const ODA_DRAWENTIRE=1; -const ODA_SELECT=2; -const ODA_FOCUS=4; -const ODS_SELECTED=1; -const ODS_GRAYED=2; -const ODS_DISABLED=4; -const ODS_CHECKED=8; -const ODS_FOCUS=16; -const ODS_DEFAULT=32; -const ODS_COMBOBOXEDIT=4096; - -const IDHOT_SNAPWINDOW=-1; -const IDHOT_SNAPDESKTOP=-2; - -const DBWF_LPARAMPOINTER=0x8000; -const DLGWINDOWEXTRA=30; -const MNC_IGNORE=0; -const MNC_CLOSE=1; -const MNC_EXECUTE=2; -const MNC_SELECT=3; -const DOF_EXECUTABLE=0x8001; -const DOF_DOCUMENT=0x8002; -const DOF_DIRECTORY=0x8003; -const DOF_MULTIPLE=0x8004; -const DOF_PROGMAN=1; -const DOF_SHELLDATA=2; -const DO_DROPFILE=0x454C4946; -const DO_PRINTFILE=0x544E5250; - -const SW_SCROLLCHILDREN=1; -const SW_INVALIDATE=2; -const SW_ERASE=4; - -const SC_SIZE=0xF000; -const SC_MOVE=0xF010; -const SC_MINIMIZE=0xF020; -const SC_ICON=0xf020; -const SC_MAXIMIZE=0xF030; -const SC_ZOOM=0xF030; -const SC_NEXTWINDOW=0xF040; -const SC_PREVWINDOW=0xF050; -const SC_CLOSE=0xF060; -const SC_VSCROLL=0xF070; -const SC_HSCROLL=0xF080; -const SC_MOUSEMENU=0xF090; -const SC_KEYMENU=0xF100; -const SC_ARRANGE=0xF110; -const SC_RESTORE=0xF120; -const SC_TASKLIST=0xF130; -const SC_SCREENSAVE=0xF140; -const SC_HOTKEY=0xF150; -const SC_DEFAULT=0xF160; -const SC_MONITORPOWER=0xF170; -const SC_CONTEXTHELP=0xF180; -const SC_SEPARATOR=0xF00F; - -const EC_LEFTMARGIN=1; -const EC_RIGHTMARGIN=2; -const EC_USEFONTINFO=0xffff; - -const DC_HASDEFID=0x534B; - -const DLGC_WANTARROWS=1; -const DLGC_WANTTAB=2; -const DLGC_WANTALLKEYS=4; -const DLGC_WANTMESSAGE=4; -const DLGC_HASSETSEL=8; -const DLGC_DEFPUSHBUTTON=16; -const DLGC_UNDEFPUSHBUTTON=32; -const DLGC_RADIOBUTTON=64; -const DLGC_WANTCHARS=128; -const DLGC_STATIC=256; -const DLGC_BUTTON=0x2000; - -const WA_INACTIVE=0; -const WA_ACTIVE=1; -const WA_CLICKACTIVE=2; - -const ICON_SMALL=0; -const ICON_BIG=1; +enum TME_HOVER = 1; +enum TME_LEAVE = 2; +enum TME_QUERY = 0x40000000; +enum TME_CANCEL = 0x80000000; + +enum HOVER_DEFAULT = 0xFFFFFFFF; + +enum MK_LBUTTON = 1; +enum MK_RBUTTON = 2; +enum MK_SHIFT = 4; +enum MK_CONTROL = 8; +enum MK_MBUTTON = 16; +enum MK_XBUTTON1 = 32; +enum MK_XBUTTON2 = 64; + +enum { + TPM_RECURSE = 0x0001, + TPM_LEFTBUTTON = 0, + TPM_RIGHTBUTTON = 0x0002, + TPM_LEFTALIGN = 0, + TPM_CENTERALIGN = 0x0004, + TPM_RIGHTALIGN = 0x0008, + TPM_TOPALIGN = 0, + TPM_VCENTERALIGN = 0x0010, + TPM_BOTTOMALIGN = 0x0020, + TPM_HORIZONTAL = 0, + TPM_VERTICAL = 0x0040, + TPM_NONOTIFY = 0x0080, + TPM_RETURNCMD = 0x0100 +} + +enum HELP_COMMAND = 0x102; +enum HELP_CONTENTS = 3; +enum HELP_CONTEXT = 1; +enum HELP_CONTEXTPOPUP = 8; +enum HELP_FORCEFILE = 9; +enum HELP_HELPONHELP = 4; +enum HELP_INDEX = 3; +enum HELP_KEY = 0x101; +enum HELP_MULTIKEY = 0x201; +enum HELP_PARTIALKEY = 0x105; +enum HELP_QUIT = 2; +enum HELP_SETCONTENTS = 5; +enum HELP_SETINDEX = 5; +enum HELP_SETWINPOS = 0x203; +enum HELP_CONTEXTMENU = 0xa; +enum HELP_FINDER = 0xb; +enum HELP_WM_HELP = 0xc; +enum HELP_TCARD = 0x8000; +enum HELP_TCARD_DATA = 16; +enum HELP_TCARD_OTHER_CALLER = 0x11; + +enum IDH_NO_HELP = 28440; +enum IDH_MISSING_CONTEXT = 28441; +enum IDH_GENERIC_HELP_BUTTON = 28442; +enum IDH_OK = 28443; +enum IDH_CANCEL = 28444; +enum IDH_HELP = 28445; + +enum LB_CTLCODE = 0; +enum LB_OKAY = 0; +enum LB_ERR = -1; +enum LB_ERRSPACE = -2; + +enum CB_OKAY = 0; +enum CB_ERR = -1; +enum CB_ERRSPACE = -2; + +enum HIDE_WINDOW = 0; + +enum SHOW_OPENWINDOW = 1; +enum SHOW_ICONWINDOW = 2; +enum SHOW_FULLSCREEN = 3; +enum SHOW_OPENNOACTIVATE = 4; + +enum KF_EXTENDED = 256; +enum KF_DLGMODE = 2048; +enum KF_MENUMODE = 4096; +enum KF_ALTDOWN = 8192; +enum KF_REPEAT = 16384; +enum KF_UP = 32768; + +enum WSF_VISIBLE = 1; + +enum PWR_OK = 1; +enum PWR_FAIL = -1; +enum PWR_SUSPENDREQUEST = 1; +enum PWR_SUSPENDRESUME = 2; +enum PWR_CRITICALRESUME = 3; + +enum NFR_ANSI = 1; +enum NFR_UNICODE = 2; +enum NF_QUERY = 3; +enum NF_REQUERY = 4; + +enum MENULOOP_WINDOW = 0; +enum MENULOOP_POPUP = 1; + +enum WMSZ_LEFT = 1; +enum WMSZ_RIGHT = 2; +enum WMSZ_TOP = 3; +enum WMSZ_TOPLEFT = 4; +enum WMSZ_TOPRIGHT = 5; +enum WMSZ_BOTTOM = 6; +enum WMSZ_BOTTOMLEFT = 7; +enum WMSZ_BOTTOMRIGHT = 8; + +enum HTERROR = -2; +enum HTTRANSPARENT = -1; +enum HTNOWHERE = 0; +enum HTCLIENT = 1; +enum HTCAPTION = 2; +enum HTSYSMENU = 3; +enum HTGROWBOX = 4; +enum HTSIZE = 4; +enum HTMENU = 5; +enum HTHSCROLL = 6; +enum HTVSCROLL = 7; +enum HTMINBUTTON = 8; +enum HTMAXBUTTON = 9; +enum HTREDUCE = 8; +enum HTZOOM = 9; +enum HTLEFT = 10; +enum HTSIZEFIRST = 10; +enum HTRIGHT = 11; +enum HTTOP = 12; +enum HTTOPLEFT = 13; +enum HTTOPRIGHT = 14; +enum HTBOTTOM = 15; +enum HTBOTTOMLEFT = 16; +enum HTBOTTOMRIGHT = 17; +enum HTSIZELAST = 17; +enum HTBORDER = 18; +enum HTOBJECT = 19; +enum HTCLOSE = 20; +enum HTHELP = 21; + +enum MA_ACTIVATE = 1; +enum MA_ACTIVATEANDEAT = 2; +enum MA_NOACTIVATE = 3; +enum MA_NOACTIVATEANDEAT = 4; + +enum SIZE_RESTORED = 0; +enum SIZE_MINIMIZED = 1; +enum SIZE_MAXIMIZED = 2; +enum SIZE_MAXSHOW = 3; +enum SIZE_MAXHIDE = 4; + +enum SIZENORMAL = 0; +enum SIZEICONIC = 1; +enum SIZEFULLSCREEN = 2; +enum SIZEZOOMSHOW = 3; +enum SIZEZOOMHIDE = 4; + +enum WVR_ALIGNTOP = 16; +enum WVR_ALIGNLEFT = 32; +enum WVR_ALIGNBOTTOM = 64; +enum WVR_ALIGNRIGHT = 128; +enum WVR_HREDRAW = 256; +enum WVR_VREDRAW = 512; +enum WVR_REDRAW = (WVR_HREDRAW|WVR_VREDRAW); +enum WVR_VALIDRECTS = 1024; + +enum PRF_CHECKVISIBLE = 1; +enum PRF_NONCLIENT = 2; +enum PRF_CLIENT = 4; +enum PRF_ERASEBKGND = 8; +enum PRF_CHILDREN = 16; +enum PRF_OWNED = 32; + +enum IDANI_OPEN = 1; +enum IDANI_CLOSE = 2; +enum IDANI_CAPTION = 3; + +enum WPF_RESTORETOMAXIMIZED = 2; +enum WPF_SETMINPOSITION = 1; + +enum ODT_MENU = 1; +enum ODT_LISTBOX = 2; +enum ODT_COMBOBOX = 3; +enum ODT_BUTTON = 4; +enum ODT_STATIC = 5; +enum ODA_DRAWENTIRE = 1; +enum ODA_SELECT = 2; +enum ODA_FOCUS = 4; +enum ODS_SELECTED = 1; +enum ODS_GRAYED = 2; +enum ODS_DISABLED = 4; +enum ODS_CHECKED = 8; +enum ODS_FOCUS = 16; +enum ODS_DEFAULT = 32; +enum ODS_COMBOBOXEDIT = 4096; + +enum IDHOT_SNAPWINDOW = -1; +enum IDHOT_SNAPDESKTOP = -2; + +enum DBWF_LPARAMPOINTER = 0x8000; +enum DLGWINDOWEXTRA = 30; +enum MNC_IGNORE = 0; +enum MNC_CLOSE = 1; +enum MNC_EXECUTE = 2; +enum MNC_SELECT = 3; +enum DOF_EXECUTABLE = 0x8001; +enum DOF_DOCUMENT = 0x8002; +enum DOF_DIRECTORY = 0x8003; +enum DOF_MULTIPLE = 0x8004; +enum DOF_PROGMAN = 1; +enum DOF_SHELLDATA = 2; +enum DO_DROPFILE = 0x454C4946; +enum DO_PRINTFILE = 0x544E5250; + +enum SC_SIZE = 0xF000; +enum SC_MOVE = 0xF010; +enum SC_MINIMIZE = 0xF020; +enum SC_ICON = 0xf020; +enum SC_MAXIMIZE = 0xF030; +enum SC_ZOOM = 0xF030; +enum SC_NEXTWINDOW = 0xF040; +enum SC_PREVWINDOW = 0xF050; +enum SC_CLOSE = 0xF060; +enum SC_VSCROLL = 0xF070; +enum SC_HSCROLL = 0xF080; +enum SC_MOUSEMENU = 0xF090; +enum SC_KEYMENU = 0xF100; +enum SC_ARRANGE = 0xF110; +enum SC_RESTORE = 0xF120; +enum SC_TASKLIST = 0xF130; +enum SC_SCREENSAVE = 0xF140; +enum SC_HOTKEY = 0xF150; +enum SC_DEFAULT = 0xF160; +enum SC_MONITORPOWER = 0xF170; +enum SC_CONTEXTHELP = 0xF180; +enum SC_SEPARATOR = 0xF00F; + +enum EC_LEFTMARGIN = 1; +enum EC_RIGHTMARGIN = 2; +enum EC_USEFONTINFO = 0xffff; + +enum DC_HASDEFID = 0x534B; + +enum DLGC_WANTARROWS = 1; +enum DLGC_WANTTAB = 2; +enum DLGC_WANTALLKEYS = 4; +enum DLGC_WANTMESSAGE = 4; +enum DLGC_HASSETSEL = 8; +enum DLGC_DEFPUSHBUTTON = 16; +enum DLGC_UNDEFPUSHBUTTON = 32; +enum DLGC_RADIOBUTTON = 64; +enum DLGC_WANTCHARS = 128; +enum DLGC_STATIC = 256; +enum DLGC_BUTTON = 0x2000; + +enum WA_INACTIVE = 0; +enum WA_ACTIVE = 1; +enum WA_CLICKACTIVE = 2; + +enum ICON_SMALL = 0; +enum ICON_BIG = 1; static if (_WIN32_WINNT >= 0x501) { -const ICON_SMALL2=2; +enum ICON_SMALL2 = 2; } -const HBITMAP +enum HBITMAP HBMMENU_CALLBACK = cast(HBITMAP)-1, HBMMENU_SYSTEM = cast(HBITMAP)1, HBMMENU_MBAR_RESTORE = cast(HBITMAP)2, @@ -2403,265 +2422,65 @@ const HBITMAP HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10, HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11; -const MOD_ALT=1; -const MOD_CONTROL=2; -const MOD_SHIFT=4; -const MOD_WIN=8; -const MOD_IGNORE_ALL_MODIFIER=1024; -const MOD_ON_KEYUP=2048; -const MOD_RIGHT=16384; -const MOD_LEFT=32768; - -const LLKHF_EXTENDED=(KF_EXTENDED >> 8); -const LLKHF_INJECTED=0x00000010; -const LLKHF_ALTDOWN=(KF_ALTDOWN >> 8); -const LLKHF_UP=(KF_UP >> 8); - -static if (_WIN32_WINNT >= 0x500) { - const FLASHW_STOP=0; - const FLASHW_CAPTION=1; - const FLASHW_TRAY=2; - const FLASHW_ALL=(FLASHW_CAPTION|FLASHW_TRAY); - const FLASHW_TIMER=4; - const FLASHW_TIMERNOFG=12; -} - -const CURSOR_SHOWING=0x00000001; -const WS_ACTIVECAPTION=0x00000001; -static if (_WIN32_WINNT >= 0x403) { - const INPUT_MOUSE=0x00000000; - const INPUT_KEYBOARD=0x00000001; - const INPUT_HARDWARE=0x00000002; -} -const ENDSESSION_LOGOFF = 0x80000000; - -static if (_WIN32_WINNT >= 0x500) { -const CHILDID_SELF = 0; -const OBJID_WINDOW = 0x00000000; -const OBJID_SYSMENU = 0xFFFFFFFF; -const OBJID_TITLEBAR = 0xFFFFFFFE; -const OBJID_MENU = 0xFFFFFFFD; -const OBJID_CLIENT = 0xFFFFFFFC; -const OBJID_VSCROLL = 0xFFFFFFFB; -const OBJID_HSCROLL = 0xFFFFFFFA; -const OBJID_SIZEGRIP = 0xFFFFFFF9; -const OBJID_CARET = 0xFFFFFFF8; -const OBJID_CURSOR = 0xFFFFFFF7; -const OBJID_ALERT = 0xFFFFFFF6; -const OBJID_SOUND = 0xFFFFFFF5; - -const GUI_CARETBLINKING = 0x00000001; -const GUI_INMOVESIZE = 0x00000002; -const GUI_INMENUMODE = 0x00000004; -const GUI_SYSTEMMENUMODE = 0x00000008; -const GUI_POPUPMENUMODE = 0x00000010; - -static if (_WIN32_WINNT >= 0x501) { -const GUI_16BITTASK = 0x00000020; -} -const WINEVENT_OUTOFCONTEXT=0x0000; -const WINEVENT_SKIPOWNTHREAD=0x0001; -const WINEVENT_SKIPOWNPROCESS=0x0002; -const WINEVENT_INCONTEXT=0x0004; -const AW_HOR_POSITIVE=0x00000001; -const AW_HOR_NEGATIVE=0x00000002; -const AW_VER_POSITIVE=0x00000004; -const AW_VER_NEGATIVE=0x00000008; -const AW_CENTER=0x00000010; -const AW_HIDE=0x00010000; -const AW_ACTIVATE=0x00020000; -const AW_SLIDE=0x00040000; -const AW_BLEND=0x00080000; -const DEVICE_NOTIFY_WINDOW_HANDLE=0x00000000; -const DEVICE_NOTIFY_SERVICE_HANDLE=0x00000001; - -static if (_WIN32_WINNT >= 0x501) { -const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES=0x00000004; -} - -const EVENT_MIN = 0x00000001; -const EVENT_SYSTEM_SOUND = 0x00000001; -const EVENT_SYSTEM_ALERT = 0x00000002; -const EVENT_SYSTEM_FOREGROUND = 0x00000003; -const EVENT_SYSTEM_MENUSTART = 0x00000004; -const EVENT_SYSTEM_MENUEND = 0x00000005; -const EVENT_SYSTEM_MENUPOPUPSTART = 0x00000006; -const EVENT_SYSTEM_MENUPOPUPEND = 0x00000007; -const EVENT_SYSTEM_CAPTURESTART = 0x00000008; -const EVENT_SYSTEM_CAPTUREEND = 0x00000009; -const EVENT_SYSTEM_MOVESIZESTART = 0x0000000a; -const EVENT_SYSTEM_MOVESIZEEND = 0x0000000b; -const EVENT_SYSTEM_CONTEXTHELPSTART = 0x0000000c; -const EVENT_SYSTEM_CONTEXTHELPEND = 0x0000000d; -const EVENT_SYSTEM_DRAGDROPSTART = 0x0000000e; -const EVENT_SYSTEM_DRAGDROPEND = 0x0000000f; -const EVENT_SYSTEM_DIALOGSTART = 0x00000010; -const EVENT_SYSTEM_DIALOGEND = 0x00000011; -const EVENT_SYSTEM_SCROLLINGSTART = 0x00000012; -const EVENT_SYSTEM_SCROLLINGEND = 0x00000013; -const EVENT_SYSTEM_SWITCHSTART = 0x00000014; -const EVENT_SYSTEM_SWITCHEND = 0x00000015; -const EVENT_SYSTEM_MINIMIZESTART = 0x00000016; -const EVENT_SYSTEM_MINIMIZEEND = 0x00000017; - -const EVENT_OBJECT_CREATE = 0x00008000; -const EVENT_OBJECT_DESTROY = 0x00008001; -const EVENT_OBJECT_SHOW = 0x00008002; -const EVENT_OBJECT_HIDE = 0x00008003; -const EVENT_OBJECT_REORDER = 0x00008004; -const EVENT_OBJECT_FOCUS = 0x00008005; -const EVENT_OBJECT_SELECTION = 0x00008006; -const EVENT_OBJECT_SELECTIONADD = 0x00008007; -const EVENT_OBJECT_SELECTIONREMOVE = 0x00008008; -const EVENT_OBJECT_SELECTIONWITHIN = 0x00008009; -const EVENT_OBJECT_STATECHANGE = 0x0000800a; -const EVENT_OBJECT_LOCATIONCHANGE = 0x0000800b; -const EVENT_OBJECT_NAMECHANGE = 0x0000800c; -const EVENT_OBJECT_DESCRIPTIONCHANGE = 0x0000800d; -const EVENT_OBJECT_VALUECHANGE = 0x0000800e; -const EVENT_OBJECT_PARENTCHANGE = 0x0000800f; -const EVENT_OBJECT_HELPCHANGE = 0x00008010; -const EVENT_OBJECT_DEFACTIONCHANGE = 0x00008011; -const EVENT_OBJECT_ACCELERATORCHANGE = 0x00008012; - -static if (_WIN32_WINNT >= 0x501) { -const EVENT_CONSOLE_CARET = 0x00004001; -const EVENT_CONSOLE_UPDATE_REGION = 0x00004002; -const EVENT_CONSOLE_UPDATE_SIMPLE = 0x00004003; -const EVENT_CONSOLE_UPDATE_SCROLL = 0x00004004; -const EVENT_CONSOLE_LAYOUT = 0x00004005; -const EVENT_CONSOLE_START_APPLICATION = 0x00004006; -const EVENT_CONSOLE_END_APPLICATION = 0x00004007; - -const CONSOLE_CARET_SELECTION = 0x00000001; -const CONSOLE_CARET_VISIBLE = 0x00000002; - -const CONSOLE_APPLICATION_16BIT = 0x00000001; - -} -const EVENT_MAX=0x7fffffff; +enum MOD_ALT = 1; +enum MOD_CONTROL = 2; +enum MOD_SHIFT = 4; +enum MOD_WIN = 8; +enum MOD_IGNORE_ALL_MODIFIER = 1024; +enum MOD_ON_KEYUP = 2048; +enum MOD_RIGHT = 16384; +enum MOD_LEFT = 32768; -}//(_WIN32_WINNT >= 0x500) +enum LLKHF_EXTENDED = (KF_EXTENDED >> 8); +enum LLKHF_INJECTED = 0x00000010; +enum LLKHF_ALTDOWN = (KF_ALTDOWN >> 8); +enum LLKHF_UP = (KF_UP >> 8); -static if (_WIN32_WINNT >= 0x500) { - const DWORD ASFW_ANY = -1; - enum : UINT { - LSFW_LOCK = 1, - LSFW_UNLOCK - } +enum CURSOR_SHOWING = 0x00000001; +enum WS_ACTIVECAPTION = 0x00000001; +enum ENDSESSION_LOGOFF = 0x80000000; - const LWA_COLORKEY = 0x01; - const LWA_ALPHA = 0x02; - const ULW_COLORKEY = 0x01; - const ULW_ALPHA = 0x02; - const ULW_OPAQUE = 0x04; -} +enum GA_PARENT = 1; +enum GA_ROOT = 2; +enum GA_ROOTOWNER = 3; -const GA_PARENT = 1; -const GA_ROOT = 2; -const GA_ROOTOWNER = 3; - -static if (_WIN32_WINNT >= 0x500) { - enum : DWORD { - MONITOR_DEFAULTTONULL, - MONITOR_DEFAULTTOPRIMARY, - MONITOR_DEFAULTTONEAREST // = 2 - } - const MONITORINFOF_PRIMARY = 1; - - const EDS_RAWMODE = 0x00000002; - - const ISMEX_NOSEND = 0x00000000; - const ISMEX_SEND = 0x00000001; - const ISMEX_NOTIFY = 0x00000002; - const ISMEX_CALLBACK = 0x00000004; - const ISMEX_REPLIED = 0x00000008; - - const GR_GDIOBJECTS = 0; - const GR_USEROBJECTS = 1; - - const GMMP_USE_DISPLAY_POINTS = 1; - const GMMP_USE_HIGH_RESOLUTION_POINTS = 2; +enum { + MAPVK_VK_TO_VSC, + MAPVK_VSC_TO_VK, + MAPVK_VK_TO_CHAR, + MAPVK_VSC_TO_VK_EX, + MAPVK_VK_TO_VSC_EX // = 4 } -static if (_WIN32_WINNT >= 0x501) { - const PW_CLIENTONLY = 0x00000001; - const RIM_INPUT = 0x00000000; - const RIM_INPUTSINK = 0x00000001; - const RIM_TYPEMOUSE = 0x00000000; - const RIM_TYPEKEYBOARD = 0x00000001; - const RIM_TYPEHID = 0x00000002; - const MOUSE_MOVE_RELATIVE = 0x00000000; - const MOUSE_MOVE_ABSOLUTE = 0x00000001; - const MOUSE_VIRTUAL_DESKTOP = 0x00000002; - const MOUSE_ATTRIBUTES_CHANGED = 0x00000004; - const RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001; - const RI_MOUSE_LEFT_BUTTON_UP = 0x0002; - const RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004; - const RI_MOUSE_RIGHT_BUTTON_UP = 0x0008; - const RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010; - const RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020; - const RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN; - const RI_MOUSE_BUTTON_1_UP = RI_MOUSE_LEFT_BUTTON_UP; - const RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN; - const RI_MOUSE_BUTTON_2_UP = RI_MOUSE_RIGHT_BUTTON_UP; - const RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN; - const RI_MOUSE_BUTTON_3_UP = RI_MOUSE_MIDDLE_BUTTON_UP; - const RI_MOUSE_BUTTON_4_DOWN = 0x0040; - const RI_MOUSE_BUTTON_4_UP = 0x0080; - const RI_MOUSE_BUTTON_5_DOWN = 0x0100; - const RI_MOUSE_BUTTON_5_UP = 0x0200; - const RI_MOUSE_WHEEL = 0x0400; - const KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff; - const RI_KEY_MAKE = 0x0000; - const RI_KEY_BREAK = 0x0001; - const RI_KEY_E0 = 0x0002; - const RI_KEY_E1 = 0x0004; - const RI_KEY_TERMSRV_SET_LED = 0x0008; - const RI_KEY_TERMSRV_SHADOW = 0x0010; - - const RID_INPUT = 0x10000003; - const RID_HEADER = 0x10000005; - - const RIDI_PREPARSEDDATA = 0x20000005; - const RIDI_DEVICENAME = 0x20000007; - const RIDI_DEVICEINFO = 0x2000000b; - - const RIDEV_REMOVE = 0x00000001; - const RIDEV_EXCLUDE = 0x00000010; - const RIDEV_PAGEONLY = 0x00000020; - const RIDEV_NOLEGACY = 0x00000030; - const RIDEV_INPUTSINK = 0x00000100; - const RIDEV_CAPTUREMOUSE = 0x00000200; - const RIDEV_NOHOTKEYS = 0x00000200; - const RIDEV_APPKEYS = 0x00000400; +enum { + INPUT_MOUSE, + INPUT_KEYBOARD, + INPUT_HARDWARE // = 2 } // Callbacks // --------- extern (Windows) { - alias INT_PTR function (HWND, UINT, WPARAM, LPARAM) DLGPROC; - alias void function (HWND, UINT, UINT_PTR, DWORD) TIMERPROC; - alias BOOL function (HDC, LPARAM, int) GRAYSTRINGPROC; - alias LRESULT function (int, WPARAM, LPARAM) HOOKPROC; - alias BOOL function (HWND, LPCSTR, HANDLE) PROPENUMPROCA; - alias BOOL function (HWND, LPCWSTR, HANDLE) PROPENUMPROCW; - alias BOOL function (HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; - alias BOOL function (HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; - alias int function (LPSTR, int, int, int) EDITWORDBREAKPROCA; - alias int function (LPWSTR, int, int, int) EDITWORDBREAKPROCW; - alias LRESULT function (HWND, UINT, WPARAM, LPARAM) WNDPROC; - alias BOOL function (HDC, LPARAM, WPARAM, int, int) DRAWSTATEPROC; - alias BOOL function (HWND, LPARAM) WNDENUMPROC; - alias BOOL function (HWND, LPARAM) ENUMWINDOWSPROC; - alias void function (LPHELPINFO) MSGBOXCALLBACK; - - static if (_WIN32_WINNT >= 0x410) { - alias BOOL function (HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; - } - alias BOOL function (LPSTR, LPARAM) NAMEENUMPROCA; - alias BOOL function (LPWSTR, LPARAM) NAMEENUMPROCW; - alias void function (HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; + alias INT_PTR function(HWND, UINT, WPARAM, LPARAM) DLGPROC; + alias void function(HWND, UINT, UINT_PTR, DWORD) TIMERPROC; + alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC; + alias LRESULT function(int, WPARAM, LPARAM) HOOKPROC; + alias BOOL function(HWND, LPCSTR, HANDLE) PROPENUMPROCA; + alias BOOL function(HWND, LPCWSTR, HANDLE) PROPENUMPROCW; + alias BOOL function(HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; + alias BOOL function(HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; + alias int function(LPSTR, int, int, int) EDITWORDBREAKPROCA; + alias int function(LPWSTR, int, int, int) EDITWORDBREAKPROCW; + alias LRESULT function(HWND, UINT, WPARAM, LPARAM) WNDPROC; + alias BOOL function(HDC, LPARAM, WPARAM, int, int) DRAWSTATEPROC; + alias BOOL function(HWND, LPARAM) WNDENUMPROC; + alias BOOL function(HWND, LPARAM) ENUMWINDOWSPROC; + alias void function(LPHELPINFO) MSGBOXCALLBACK; + + alias BOOL function(HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; + alias BOOL function(LPSTR, LPARAM) NAMEENUMPROCA; + alias BOOL function(LPWSTR, LPARAM) NAMEENUMPROCW; + alias void function(HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; alias NAMEENUMPROCA DESKTOPENUMPROCA; alias NAMEENUMPROCW DESKTOPENUMPROCW; @@ -2669,9 +2488,17 @@ extern (Windows) { alias NAMEENUMPROCW WINSTAENUMPROCW; } -alias TypeDef!(HANDLE) HHOOK; -alias TypeDef!(HANDLE) HDWP; -alias TypeDef!(HANDLE) HDEVNOTIFY; +mixin DECLARE_HANDLE!("HDWP"); +mixin DECLARE_HANDLE!("HDEVNOTIFY"); + +struct MENUGETOBJECTINFO { + DWORD dwFlags; + UINT uPos; + HMENU hmenu; + PVOID riid; + PVOID pvObj; +} +alias MENUGETOBJECTINFO* PMENUGETOBJECTINFO; struct ACCEL { BYTE fVirt; @@ -2968,54 +2795,36 @@ struct WNDCLASSEXW { } alias WNDCLASSEXW* LPWNDCLASSEXW, PWNDCLASSEXW; -static if(_WIN32_WINNT >= 0x500) { - -struct MENUGETOBJECTINFO -{ - DWORD dwFlags; - UINT uPos; - HMENU hmenu; - PVOID riid; - PVOID pvObj; -} -alias MENUGETOBJECTINFO* PMENUGETOBJECTINFO; - -} - struct MENUITEMINFOA { - UINT cbSize = MENUITEMINFOA.sizeof; - UINT fMask; - UINT fType; - UINT fState; - UINT wID; - HMENU hSubMenu; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - LPSTR dwTypeData; - UINT cch; - static if (_WIN32_WINNT >= 0x500) { - HBITMAP hbmpItem; - } + UINT cbSize = MENUITEMINFOA.sizeof; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPSTR dwTypeData; + UINT cch; + HBITMAP hbmpItem; } alias MENUITEMINFOA* LPMENUITEMINFOA; alias const(MENUITEMINFOA)* LPCMENUITEMINFOA; struct MENUITEMINFOW { - UINT cbSize = MENUITEMINFOW.sizeof; - UINT fMask; - UINT fType; - UINT fState; - UINT wID; - HMENU hSubMenu; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - LPWSTR dwTypeData; - UINT cch; - static if (_WIN32_WINNT >= 0x500) { - HBITMAP hbmpItem; - } + UINT cbSize = MENUITEMINFOW.sizeof; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPWSTR dwTypeData; + UINT cch; + HBITMAP hbmpItem; } alias MENUITEMINFOW* LPMENUITEMINFOW; alias const(MENUITEMINFOW)* LPCMENUITEMINFOW; @@ -3459,10 +3268,10 @@ struct MENUBARINFO { byte bf_; // Simulated bitfield // BOOL fBarFocused:1; // BOOL fFocused:1; - bool fBarFocused() { return (bf_ & 1) == 1; } - bool fFocused() { return (bf_ & 2) == 2; } - void fBarFocused(bool b) { bf_ = cast(byte)((bf_ & 0xFE) | b); } - void fFocused(bool b) { bf_ = cast(byte)(b ? (bf_ | 2) : bf_ & 0xFD); } + bool fBarFocused() { return (bf_ & 1) == 1; } + bool fFocused() { return (bf_ & 2) == 2; } + bool fBarFocused(bool b) { bf_ = cast(byte) ((bf_ & 0xFE) | b); return b; } + bool fFocused(bool b) { bf_ = cast(byte) (b ? (bf_ | 2) : bf_ & 0xFD); return b; } } alias MENUBARINFO* PMENUBARINFO; @@ -3479,7 +3288,7 @@ alias MENUINFO* LPMENUINFO; alias const(MENUINFO)* LPCMENUINFO; -const CCHILDREN_SCROLLBAR=5; +enum CCHILDREN_SCROLLBAR = 5; struct SCROLLBARINFO { DWORD cbSize = this.sizeof; @@ -3492,14 +3301,7 @@ struct SCROLLBARINFO { } alias SCROLLBARINFO* PSCROLLBARINFO, LPSCROLLBARINFO; -const CCHILDREN_TITLEBAR=5; - -struct TITLEBARINFO { - DWORD cbSize = TITLEBARINFO.sizeof; - RECT rcTitleBar; - DWORD[CCHILDREN_TITLEBAR+1] rgstate; -} -alias TITLEBARINFO* PTITLEBARINFO, LPTITLEBARINFO; +enum CCHILDREN_TITLEBAR = 5; struct WINDOWINFO { DWORD cbSize = WINDOWINFO.sizeof; @@ -3529,7 +3331,7 @@ struct MONITORINFO { } alias MONITORINFO* LPMONITORINFO; -const CCHDEVICENAME=32; +enum CCHDEVICENAME = 32; struct MONITORINFOEXA { DWORD cbSize = MONITORINFOEXA.sizeof; @@ -3558,84 +3360,50 @@ struct KBDLLHOOKSTRUCT { } alias KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT; -static if (_WIN32_WINNT >= 0x501) { - struct FLASHWINFO { - UINT cbSize = this.sizeof; - HWND hwnd; - DWORD dwFlags; - UINT uCount; - DWORD dwTimeout; - } - alias FLASHWINFO* PFLASHWINFO; +struct MSLLHOOKSTRUCT { + POINT pt; + DWORD mouseData; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; } +alias MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT; -static if (_WIN32_WINNT >= 0x500) { - - struct MOUSEMOVEPOINT { - int x; - int y; - DWORD time; - ULONG_PTR dwExtraInfo; - } - alias MOUSEMOVEPOINT* PMOUSEMOVEPOINT, LPMOUSEMOVEPOINT; +struct MOUSEINPUT { + LONG dx; + LONG dy; + DWORD mouseData; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; } +alias MOUSEINPUT* PMOUSEINPUT; -static if (_WIN32_WINNT >= 0x403) { - struct MOUSEINPUT { - LONG dx; - LONG dy; - DWORD mouseData; - DWORD dwFlags; - DWORD time; - ULONG_PTR dwExtraInfo; - } - alias MOUSEINPUT* PMOUSEINPUT; - - struct KEYBDINPUT { - WORD wVk; - WORD wScan; - DWORD dwFlags; - DWORD time; - ULONG_PTR dwExtraInfo; - } - alias KEYBDINPUT* PKEYBDINPUT; - - struct HARDWAREINPUT { - DWORD uMsg; - WORD wParamL; - WORD wParamH; - } - alias HARDWAREINPUT* PHARDWAREINPUT; +struct KEYBDINPUT { + WORD wVk; + WORD wScan; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias KEYBDINPUT* PKEYBDINPUT; - struct INPUT { - DWORD type; - union { - MOUSEINPUT mi; - KEYBDINPUT ki; - HARDWAREINPUT hi; - } - } - alias INPUT* PINPUT, LPINPUT; -}// (_WIN32_WINNT >= 0x403) +struct HARDWAREINPUT { + DWORD uMsg; + WORD wParamL; + WORD wParamH; +} +alias HARDWAREINPUT* PHARDWAREINPUT; -static if (_WIN32_WINNT >= 0x500) { - struct GUITHREADINFO { - DWORD cbSize = this.sizeof; - DWORD flags; - HWND hwndActive; - HWND hwndFocus; - HWND hwndCapture; - HWND hwndMenuOwner; - HWND hwndMoveSize; - HWND hwndCaret; - RECT rcCaret; - } - alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO; - extern (Windows) { - alias void function (HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC; +struct INPUT { + DWORD type; + union { + MOUSEINPUT mi; + KEYBDINPUT ki; + HARDWAREINPUT hi; } - -}// (_WIN32_WINNT >= 0x500) +} +alias INPUT* PINPUT, LPINPUT; static if (_WIN32_WINNT >= 0x501) { struct BSMINFO { @@ -3750,15 +3518,6 @@ static if (_WIN32_WINNT >= 0x501) { } }// (_WIN32_WINNT >= 0x501) -struct MSLLHOOKSTRUCT { - POINT pt; - DWORD mouseData; - DWORD flags; - DWORD time; - ULONG_PTR dwExtraInfo; -} -alias MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT; - alias CharToOemA AnsiToOem; alias OemToCharA OemToAnsi; alias CharToOemBuffA AnsiToOemBuff; @@ -3774,11 +3533,16 @@ alias MAKELONG MAKEWPARAM; alias MAKELONG MAKELPARAM; alias MAKELONG MAKELRESULT; -//MACRO #define POINTSTOPOINT(p, ps) { (p).x=LOWORD(*(DWORD*)&ps); (p).y=HIWORD(*(DWORD*)&ps); } -//MACRO #define POINTTOPOINTS(p) ((POINTS)MAKELONG((p).x, (p).y)) +void POINTSTOPOINT()(out POINT p, LONG ps) { + p.x = LOWORD(ps); + p.y = HIWORD(ps); +} -extern (Windows) { +POINTS POINTTOPOINTS()(in POINT p) { + return MAKELONG(p.x, p.y); +} +extern (Windows) { HKL ActivateKeyboardLayout(HKL, UINT); BOOL AdjustWindowRect(LPRECT, DWORD, BOOL); BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD); @@ -4386,53 +4150,304 @@ alias TypeDef!(char*) va_list_; int wvsprintfA(LPSTR, LPCSTR, va_list_ arglist); int wvsprintfW(LPWSTR, LPCWSTR, va_list_ arglist); +enum : DWORD { + MONITOR_DEFAULTTONULL, + MONITOR_DEFAULTTOPRIMARY, + MONITOR_DEFAULTTONEAREST // = 2 +} +enum MONITORINFOF_PRIMARY = 1; + +enum EDS_RAWMODE = 0x00000002; + +enum { + ISMEX_NOSEND = 0, + ISMEX_SEND = 1, + ISMEX_NOTIFY = 2, + ISMEX_CALLBACK = 4, + ISMEX_REPLIED = 8 +} +struct TITLEBARINFO { + DWORD cbSize = TITLEBARINFO.sizeof; + RECT rcTitleBar; + DWORD[CCHILDREN_TITLEBAR+1] rgstate; +} +alias TITLEBARINFO* PTITLEBARINFO, LPTITLEBARINFO; + +static if (_WIN32_WINNT >= 0x501) { // *** correct? + struct FLASHWINFO { + UINT cbSize = this.sizeof; + HWND hwnd; + DWORD dwFlags; + UINT uCount; + DWORD dwTimeout; + } + alias FLASHWINFO* PFLASHWINFO; +} + +enum DWORD ASFW_ANY = -1; +enum : UINT { + LSFW_LOCK = 1, + LSFW_UNLOCK +} +enum { + GMMP_USE_DISPLAY_POINTS = 1, + GMMP_USE_HIGH_RESOLUTION_POINTS +} + +struct MOUSEMOVEPOINT { + int x; + int y; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias MOUSEMOVEPOINT* PMOUSEMOVEPOINT, LPMOUSEMOVEPOINT; + +enum { + MIM_MAXHEIGHT = 1, + MIM_BACKGROUND = 2, + MIM_HELPID = 4, + MIM_MENUDATA = 8, + MIM_STYLE = 16, + MIM_APPLYTOSUBMENUS = 0x80000000L +} + +enum { + MNS_NOCHECK = 0x80000000, + MNS_MODELESS = 0x40000000, + MNS_DRAGDROP = 0x20000000, + MNS_AUTODISMISS = 0x10000000, + MNS_NOTIFYBYPOS = 0x08000000, + MNS_CHECKORBMP = 0x04000000 +} + +enum { + PM_QS_INPUT = (QS_INPUT << 16), + PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16), + PM_QS_PAINT = (QS_PAINT << 16), + PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16) +} +/* +#define WM_GETOBJECT 0x003D +#define WM_CHANGEUISTATE 0x0127 +#define WM_UPDATEUISTATE 0x0128 +#define WM_QUERYUISTATE 0x0129 +#define WM_UNINITMENUPOPUP 0x0125 +#define WM_MENURBUTTONUP 290 +#define WM_MENUCOMMAND 0x0126 +#define WM_MENUGETOBJECT 0x0124 +#define WM_MENUDRAG 0x0123 +#define WM_APPCOMMAND 0x0319 +#define WM_NCXBUTTONDOWN 171 +#define WM_NCXBUTTONUP 172 +#define WM_NCXBUTTONDBLCLK 173 +#define WM_NCMOUSEHOVER 0x02A0 +#define WM_NCMOUSELEAVE 0x02A2*/ + +enum { + FLASHW_STOP = 0, + FLASHW_CAPTION = 0x01, + FLASHW_TRAY = 0x02, + FLASHW_ALL = 0x03, + FLASHW_TIMER = 0x04, + FLASHW_TIMERNOFG = 0x0C +} + +enum CHILDID_SELF = 0; + +enum { + OBJID_WINDOW = 0x00000000, + OBJID_SOUND = 0xFFFFFFF5, + OBJID_ALERT = 0xFFFFFFF6, + OBJID_CURSOR = 0xFFFFFFF7, + OBJID_CARET = 0xFFFFFFF8, + OBJID_SIZEGRIP = 0xFFFFFFF9, + OBJID_HSCROLL = 0xFFFFFFFA, + OBJID_VSCROLL = 0xFFFFFFFB, + OBJID_CLIENT = 0xFFFFFFFC, + OBJID_MENU = 0xFFFFFFFD, + OBJID_TITLEBAR = 0xFFFFFFFE, + OBJID_SYSMENU = 0xFFFFFFFF +} + +enum { + GUI_CARETBLINKING = 0x0001, + GUI_INMOVESIZE = 0x0002, + GUI_INMENUMODE = 0x0004, + GUI_SYSTEMMENUMODE = 0x0008, + GUI_POPUPMENUMODE = 0x0010 +} +static if (_WIN32_WINNT >= 0x501) { + enum GUI_16BITTASK = 0x0020; +} + +enum { + WINEVENT_OUTOFCONTEXT = 0x00, + WINEVENT_SKIPOWNTHREAD = 0x01, + WINEVENT_SKIPOWNPROCESS = 0x02, + WINEVENT_INCONTEXT = 0x04 +} + +enum { + AW_HOR_POSITIVE = 0x00000001, + AW_HOR_NEGATIVE = 0x00000002, + AW_VER_POSITIVE = 0x00000004, + AW_VER_NEGATIVE = 0x00000008, + AW_CENTER = 0x00000010, + AW_HIDE = 0x00010000, + AW_ACTIVATE = 0x00020000, + AW_SLIDE = 0x00040000, + AW_BLEND = 0x00080000 +} + +enum { + DEVICE_NOTIFY_WINDOW_HANDLE = 0x00000000, + DEVICE_NOTIFY_SERVICE_HANDLE = 0x00000001 +} + +static if (_WIN32_WINNT >= 0x501) { + enum DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 0x00000004; +} + +enum : DWORD { + EVENT_MIN = 0x00000001, + EVENT_SYSTEM_SOUND = 0x00000001, + EVENT_SYSTEM_ALERT, + EVENT_SYSTEM_FOREGROUND, + EVENT_SYSTEM_MENUSTART, + EVENT_SYSTEM_MENUEND, + EVENT_SYSTEM_MENUPOPUPSTART, + EVENT_SYSTEM_MENUPOPUPEND, + EVENT_SYSTEM_CAPTURESTART, + EVENT_SYSTEM_CAPTUREEND, + EVENT_SYSTEM_MOVESIZESTART, + EVENT_SYSTEM_MOVESIZEEND, + EVENT_SYSTEM_CONTEXTHELPSTART, + EVENT_SYSTEM_CONTEXTHELPEND, + EVENT_SYSTEM_DRAGDROPSTART, + EVENT_SYSTEM_DRAGDROPEND, + EVENT_SYSTEM_DIALOGSTART, + EVENT_SYSTEM_DIALOGEND, + EVENT_SYSTEM_SCROLLINGSTART, + EVENT_SYSTEM_SCROLLINGEND, + EVENT_SYSTEM_SWITCHSTART, + EVENT_SYSTEM_SWITCHEND, + EVENT_SYSTEM_MINIMIZESTART, + EVENT_SYSTEM_MINIMIZEEND, // = 0x00000017 + EVENT_OBJECT_CREATE = 0x00008000, + EVENT_OBJECT_DESTROY, + EVENT_OBJECT_SHOW, + EVENT_OBJECT_HIDE, + EVENT_OBJECT_REORDER, + EVENT_OBJECT_FOCUS, + EVENT_OBJECT_SELECTION, + EVENT_OBJECT_SELECTIONADD, + EVENT_OBJECT_SELECTIONREMOVE, + EVENT_OBJECT_SELECTIONWITHIN, + EVENT_OBJECT_STATECHANGE, + EVENT_OBJECT_LOCATIONCHANGE, + EVENT_OBJECT_NAMECHANGE, + EVENT_OBJECT_DESCRIPTIONCHANGE, + EVENT_OBJECT_VALUECHANGE, + EVENT_OBJECT_PARENTCHANGE, + EVENT_OBJECT_HELPCHANGE, + EVENT_OBJECT_DEFACTIONCHANGE, + EVENT_OBJECT_ACCELERATORCHANGE, // = 0x00008012 + EVENT_MAX = 0x7FFFFFFF +} + +static if (_WIN32_WINNT >= 0x501) { + enum : DWORD { + EVENT_CONSOLE_CARET = 0x00004000, + EVENT_CONSOLE_UPDATE_REGION, + EVENT_CONSOLE_UPDATE_SIMPLE, + EVENT_CONSOLE_UPDATE_SCROLL, + EVENT_CONSOLE_LAYOUT, + EVENT_CONSOLE_START_APPLICATION, + EVENT_CONSOLE_END_APPLICATION, // = 0x00004007 + } + + enum : LONG { + CONSOLE_CARET_SELECTION = 1, + CONSOLE_CARET_VISIBLE // = 2 + } + enum LONG CONSOLE_APPLICATION_16BIT = 1; +} + +enum { + LWA_COLORKEY = 1, + LWA_ALPHA +} +enum { + ULW_COLORKEY = 1, + ULW_ALPHA = 2, + ULW_OPAQUE = 4 +} +enum { + GR_GDIOBJECTS, + GR_USEROBJECTS +} + +enum { + XBUTTON1 = 1, + XBUTTON2 +} + +struct GUITHREADINFO { + DWORD cbSize = this.sizeof; + DWORD flags; + HWND hwndActive; + HWND hwndFocus; + HWND hwndCapture; + HWND hwndMenuOwner; + HWND hwndMoveSize; + HWND hwndCaret; + RECT rcCaret; +} +alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO; +extern (Windows) { + alias void function(HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC; +} +// *** line 4680 of MinGW 4.0 int BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM); int BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM); -static if (_WIN32_WINNT >= 0x403) { - UINT SendInput(UINT, LPINPUT, int); -} - -static if (_WIN32_WINNT >= 0x410) { - BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM); - BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFO); - BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFOEXA); - BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFO); - BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFOEXW); - HMONITOR MonitorFromPoint(POINT, DWORD); - HMONITOR MonitorFromRect(LPCRECT, DWORD); - HMONITOR MonitorFromWindow(HWND, DWORD); -} - -static if (_WIN32_WINNT >= 0x500) { - BOOL AllowSetForegroundWindow(DWORD); - BOOL AnimateWindow(HWND, DWORD, DWORD); - BOOL EndTask(HWND, BOOL, BOOL); - BOOL EnumDisplaySettingsExA(LPCSTR, DWORD, LPDEVMODEA, DWORD); - BOOL EnumDisplaySettingsExW(LPCWSTR, DWORD, LPDEVMODEW, DWORD); - DWORD GetClipboardSequenceNumber(); - DWORD GetGuiResources(HANDLE, DWORD); - BOOL GetGUIThreadInfo(DWORD, LPGUITHREADINFO); - int GetMouseMovePointsEx(UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD); - BOOL GetProcessDefaultLayout(DWORD*); - HWND GetShellWindow(); - BOOL IsHungAppWindow(HWND); - DWORD InSendMessageEx(LPVOID); - BOOL LockSetForegroundWindow(UINT); - BOOL LockWorkStation(); - void NotifyWinEvent(DWORD, HWND, LONG, LONG); - HDEVNOTIFY RegisterDeviceNotificationA(HANDLE, LPVOID, DWORD); - HDEVNOTIFY RegisterDeviceNotificationW(HANDLE, LPVOID, DWORD); - BOOL SetProcessDefaultLayout(DWORD); - HWINEVENTHOOK SetWinEventHook(UINT, UINT, HMODULE, WINEVENTPROC, DWORD, DWORD, UINT); - void SwitchToThisWindow(HWND, BOOL); - BOOL SetLayeredWindowAttributes(HWND, COLORREF, BYTE, DWORD); - BOOL UpdateLayeredWindow(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD); - BOOL UserHandleGrantAccess(HANDLE, HANDLE, BOOL); - BOOL UnhookWinEvent(HWINEVENTHOOK); - BOOL UnregisterDeviceNotification(HANDLE); -} +UINT SendInput(UINT, LPINPUT, int); +BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM); +BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFO); +BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFOEXA); +BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFO); +BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFOEXW); +HMONITOR MonitorFromPoint(POINT, DWORD); +HMONITOR MonitorFromRect(LPCRECT, DWORD); +HMONITOR MonitorFromWindow(HWND, DWORD); +BOOL AllowSetForegroundWindow(DWORD); +BOOL AnimateWindow(HWND, DWORD, DWORD); +BOOL EndTask(HWND, BOOL, BOOL); +BOOL EnumDisplaySettingsExA(LPCSTR, DWORD, LPDEVMODEA, DWORD); +BOOL EnumDisplaySettingsExW(LPCWSTR, DWORD, LPDEVMODEW, DWORD); +DWORD GetClipboardSequenceNumber(); +DWORD GetGuiResources(HANDLE, DWORD); +BOOL GetGUIThreadInfo(DWORD, LPGUITHREADINFO); + +int GetMouseMovePointsEx(UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD); +BOOL GetProcessDefaultLayout(DWORD*); +HWND GetShellWindow(); +BOOL IsHungAppWindow(HWND); +DWORD InSendMessageEx(LPVOID); +BOOL LockSetForegroundWindow(UINT); +BOOL LockWorkStation(); +void NotifyWinEvent(DWORD, HWND, LONG, LONG); +HDEVNOTIFY RegisterDeviceNotificationA(HANDLE, LPVOID, DWORD); +HDEVNOTIFY RegisterDeviceNotificationW(HANDLE, LPVOID, DWORD); +BOOL SetProcessDefaultLayout(DWORD); +HWINEVENTHOOK SetWinEventHook(UINT, UINT, HMODULE, WINEVENTPROC, DWORD, DWORD, UINT); +void SwitchToThisWindow(HWND, BOOL); +BOOL SetLayeredWindowAttributes(HWND, COLORREF, BYTE, DWORD); +BOOL UpdateLayeredWindow(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD); +BOOL UserHandleGrantAccess(HANDLE, HANDLE, BOOL); +BOOL UnhookWinEvent(HWINEVENTHOOK); +BOOL UnregisterDeviceNotification(HANDLE); static if (_WIN32_WINNT >= 0x501) { int BroadcastSystemMessageExA(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); @@ -4468,7 +4483,6 @@ version (Win64) { // ----- // Aliases for Unicode or Ansi version(Unicode) { - alias EDITWORDBREAKPROCW EDITWORDBREAKPROC; alias PROPENUMPROCW PROPENUMPROC; alias PROPENUMPROCEXW PROPENUMPROCEX; @@ -4553,9 +4567,7 @@ version(Unicode) { alias GetMenuItemInfoW GetMenuItemInfo; alias GetMenuStringW GetMenuString; alias GetMessageW GetMessage; - static if (_WIN32_WINNT >= 0x410) { - alias GetMonitorInfoW GetMonitorInfo; - } + alias GetMonitorInfoW GetMonitorInfo; alias GetPropW GetProp; static if (_WIN32_WINNT >= 0x501) { alias GetRawInputDeviceInfoW GetRawInputDeviceInfo; @@ -4603,9 +4615,7 @@ version(Unicode) { alias RegisterClassW RegisterClass; alias RegisterClassExW RegisterClassEx; alias RegisterClipboardFormatW RegisterClipboardFormat; - static if (_WIN32_WINNT >= 0x500) { - alias RegisterDeviceNotificationW RegisterDeviceNotification; - } + alias RegisterDeviceNotificationW RegisterDeviceNotification; alias RegisterWindowMessageW RegisterWindowMessage; alias RemovePropW RemoveProp; alias SendDlgItemMessageW SendDlgItemMessage; @@ -4637,9 +4647,7 @@ version(Unicode) { alias ChangeDisplaySettingsExW ChangeDisplaySettingsEx; alias CreateDesktopW CreateDesktop; alias EnumDisplaySettingsW EnumDisplaySettings; - static if (_WIN32_WINNT >= 0x500) { - alias EnumDisplaySettingsExW EnumDisplaySettingsEx; - } + alias EnumDisplaySettingsExW EnumDisplaySettingsEx; alias EnumDisplayDevicesW EnumDisplayDevices; } else { // ANSI @@ -4728,9 +4736,7 @@ version(Unicode) { alias GetMenuItemInfoA GetMenuItemInfo; alias GetMenuStringA GetMenuString; alias GetMessageA GetMessage; - static if (_WIN32_WINNT >= 0x410) { - alias GetMonitorInfoA GetMonitorInfo; - } + alias GetMonitorInfoA GetMonitorInfo; alias GetPropA GetProp; static if (_WIN32_WINNT >= 0x501) { alias GetRawInputDeviceInfoA GetRawInputDeviceInfo; @@ -4778,9 +4784,7 @@ version(Unicode) { alias RegisterClassA RegisterClass; alias RegisterClassExA RegisterClassEx; alias RegisterClipboardFormatA RegisterClipboardFormat; - static if (_WIN32_WINNT >= 0x500) { - alias RegisterDeviceNotificationA RegisterDeviceNotification; - } + alias RegisterDeviceNotificationA RegisterDeviceNotification; alias RegisterWindowMessageA RegisterWindowMessage; alias RemovePropA RemoveProp; alias SendDlgItemMessageA SendDlgItemMessage; @@ -4812,9 +4816,7 @@ version(Unicode) { alias ChangeDisplaySettingsExA ChangeDisplaySettingsEx; alias CreateDesktopA CreateDesktop; alias EnumDisplaySettingsA EnumDisplaySettings; - static if (_WIN32_WINNT >= 0x500) { - alias EnumDisplaySettingsExA EnumDisplaySettingsEx; - } + alias EnumDisplaySettingsExA EnumDisplaySettingsEx; alias EnumDisplayDevicesA EnumDisplayDevices; } @@ -4832,3 +4834,56 @@ alias MULTIKEYHELP* PMULTIKEYHELP, LPMULTIKEYHELP; alias MONITORINFOEX* LPMONITORINFOEX; alias ICONMETRICS* LPICONMETRICS; alias NONCLIENTMETRICS* LPNONCLIENTMETRICS; + +static if (_WIN32_WINNT >= 0x501) { + enum PW_CLIENTONLY = 0x00000001; + enum RIM_INPUT = 0x00000000; + enum RIM_INPUTSINK = 0x00000001; + enum RIM_TYPEMOUSE = 0x00000000; + enum RIM_TYPEKEYBOARD = 0x00000001; + enum RIM_TYPEHID = 0x00000002; + enum MOUSE_MOVE_RELATIVE = 0x00000000; + enum MOUSE_MOVE_ABSOLUTE = 0x00000001; + enum MOUSE_VIRTUAL_DESKTOP = 0x00000002; + enum MOUSE_ATTRIBUTES_CHANGED = 0x00000004; + enum RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001; + enum RI_MOUSE_LEFT_BUTTON_UP = 0x0002; + enum RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004; + enum RI_MOUSE_RIGHT_BUTTON_UP = 0x0008; + enum RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010; + enum RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020; + enum RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN; + enum RI_MOUSE_BUTTON_1_UP = RI_MOUSE_LEFT_BUTTON_UP; + enum RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN; + enum RI_MOUSE_BUTTON_2_UP = RI_MOUSE_RIGHT_BUTTON_UP; + enum RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN; + enum RI_MOUSE_BUTTON_3_UP = RI_MOUSE_MIDDLE_BUTTON_UP; + enum RI_MOUSE_BUTTON_4_DOWN = 0x0040; + enum RI_MOUSE_BUTTON_4_UP = 0x0080; + enum RI_MOUSE_BUTTON_5_DOWN = 0x0100; + enum RI_MOUSE_BUTTON_5_UP = 0x0200; + enum RI_MOUSE_WHEEL = 0x0400; + enum KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff; + enum RI_KEY_MAKE = 0x0000; + enum RI_KEY_BREAK = 0x0001; + enum RI_KEY_E0 = 0x0002; + enum RI_KEY_E1 = 0x0004; + enum RI_KEY_TERMSRV_SET_LED = 0x0008; + enum RI_KEY_TERMSRV_SHADOW = 0x0010; + + enum RID_INPUT = 0x10000003; + enum RID_HEADER = 0x10000005; + + enum RIDI_PREPARSEDDATA = 0x20000005; + enum RIDI_DEVICENAME = 0x20000007; + enum RIDI_DEVICEINFO = 0x2000000b; + + enum RIDEV_REMOVE = 0x00000001; + enum RIDEV_EXCLUDE = 0x00000010; + enum RIDEV_PAGEONLY = 0x00000020; + enum RIDEV_NOLEGACY = 0x00000030; + enum RIDEV_INPUTSINK = 0x00000100; + enum RIDEV_CAPTUREMOUSE = 0x00000200; + enum RIDEV_NOHOTKEYS = 0x00000200; + enum RIDEV_APPKEYS = 0x00000400; +} From 6abf26235534b020661b52aa9d861f6e76297d05 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 20:00:27 +0000 Subject: [PATCH 109/768] Update module names --- src/core/sys/windows/accctrl.d | 4 ++-- src/core/sys/windows/aclapi.d | 4 ++-- src/core/sys/windows/aclui.d | 12 +++++----- src/core/sys/windows/basetsd.d | 2 +- src/core/sys/windows/basetyps.d | 4 ++-- src/core/sys/windows/cderr.d | 2 +- src/core/sys/windows/cguid.d | 4 ++-- src/core/sys/windows/comcat.d | 8 +++---- src/core/sys/windows/commctrl.d | 10 ++++---- src/core/sys/windows/commdlg.d | 12 +++++----- src/core/sys/windows/core.d | 22 ++++++++--------- src/core/sys/windows/cpl.d | 4 ++-- src/core/sys/windows/cplext.d | 2 +- src/core/sys/windows/custcntl.d | 4 ++-- src/core/sys/windows/dbt.d | 6 ++--- src/core/sys/windows/dde.d | 4 ++-- src/core/sys/windows/ddeml.d | 4 ++-- src/core/sys/windows/dhcpcsdk.d | 6 ++--- src/core/sys/windows/dlgs.d | 4 ++-- src/core/sys/windows/docobj.d | 6 ++--- src/core/sys/windows/errorrep.d | 6 ++--- src/core/sys/windows/exdisp.d | 6 ++--- src/core/sys/windows/exdispid.d | 2 +- src/core/sys/windows/httpext.d | 4 ++-- src/core/sys/windows/idispids.d | 2 +- src/core/sys/windows/imagehlp.d | 4 ++-- src/core/sys/windows/imm.d | 8 +++---- src/core/sys/windows/intshcut.d | 4 ++-- src/core/sys/windows/ipexport.d | 4 ++-- src/core/sys/windows/iphlpapi.d | 6 ++--- src/core/sys/windows/ipifcons.d | 2 +- src/core/sys/windows/iprtrmib.d | 6 ++--- src/core/sys/windows/iptypes.d | 4 ++-- src/core/sys/windows/isguids.d | 4 ++-- src/core/sys/windows/lm.d | 42 ++++++++++++++++----------------- src/core/sys/windows/lmaccess.d | 4 ++-- src/core/sys/windows/lmalert.d | 4 ++-- src/core/sys/windows/lmapibuf.d | 4 ++-- src/core/sys/windows/lmat.d | 4 ++-- src/core/sys/windows/lmaudit.d | 4 ++-- src/core/sys/windows/lmbrowsr.d | 4 ++-- src/core/sys/windows/lmchdev.d | 4 ++-- src/core/sys/windows/lmconfig.d | 4 ++-- src/core/sys/windows/lmcons.d | 6 ++--- src/core/sys/windows/lmerr.d | 4 ++-- src/core/sys/windows/lmerrlog.d | 6 ++--- src/core/sys/windows/lmmsg.d | 6 ++--- src/core/sys/windows/lmremutl.d | 4 ++-- src/core/sys/windows/lmrepl.d | 4 ++-- src/core/sys/windows/lmserver.d | 6 ++--- src/core/sys/windows/lmshare.d | 6 ++--- src/core/sys/windows/lmsname.d | 4 ++-- src/core/sys/windows/lmstats.d | 4 ++-- src/core/sys/windows/lmsvc.d | 6 ++--- src/core/sys/windows/lmuse.d | 6 ++--- src/core/sys/windows/lmuseflg.d | 2 +- src/core/sys/windows/lmwksta.d | 6 ++--- src/core/sys/windows/lzexpand.d | 4 ++-- src/core/sys/windows/mapi.d | 4 ++-- src/core/sys/windows/mciavi.d | 4 ++-- src/core/sys/windows/mcx.d | 4 ++-- src/core/sys/windows/mgmtapi.d | 6 ++--- src/core/sys/windows/mmsystem.d | 4 ++-- src/core/sys/windows/msacm.d | 4 ++-- src/core/sys/windows/mshtml.d | 6 ++--- src/core/sys/windows/mswsock.d | 10 ++++---- src/core/sys/windows/nb30.d | 4 ++-- src/core/sys/windows/nddeapi.d | 4 ++-- src/core/sys/windows/nspapi.d | 8 +++---- src/core/sys/windows/ntdef.d | 4 ++-- src/core/sys/windows/ntdll.d | 4 ++-- src/core/sys/windows/ntldap.d | 2 +- src/core/sys/windows/ntsecapi.d | 4 ++-- src/core/sys/windows/ntsecpkg.d | 8 +++---- src/core/sys/windows/oaidl.d | 4 ++-- src/core/sys/windows/objbase.d | 8 +++---- src/core/sys/windows/objfwd.d | 4 ++-- src/core/sys/windows/objidl.d | 20 ++++++++-------- src/core/sys/windows/objsafe.d | 4 ++-- src/core/sys/windows/ocidl.d | 18 +++++++------- src/core/sys/windows/odbcinst.d | 6 ++--- src/core/sys/windows/ole.d | 4 ++-- src/core/sys/windows/ole2.d | 10 ++++---- src/core/sys/windows/ole2ver.d | 2 +- src/core/sys/windows/oleacc.d | 6 ++--- src/core/sys/windows/oleauto.d | 8 +++---- src/core/sys/windows/olectl.d | 14 +++++------ src/core/sys/windows/olectlid.d | 4 ++-- src/core/sys/windows/oledlg.d | 8 +++---- src/core/sys/windows/oleidl.d | 10 ++++---- src/core/sys/windows/pbt.d | 4 ++-- src/core/sys/windows/powrprof.d | 6 ++--- src/core/sys/windows/prsht.d | 4 ++-- src/core/sys/windows/psapi.d | 8 +++---- src/core/sys/windows/rapi.d | 4 ++-- src/core/sys/windows/ras.d | 4 ++-- src/core/sys/windows/rasdlg.d | 6 ++--- src/core/sys/windows/raserror.d | 2 +- src/core/sys/windows/rassapi.d | 4 ++-- src/core/sys/windows/reason.d | 6 ++--- src/core/sys/windows/regstr.d | 4 ++-- src/core/sys/windows/richedit.d | 6 ++--- src/core/sys/windows/richole.d | 8 +++---- src/core/sys/windows/rpc.d | 12 +++++----- src/core/sys/windows/rpcdce.d | 6 ++--- src/core/sys/windows/rpcdce2.d | 6 ++--- src/core/sys/windows/rpcdcep.d | 8 +++---- src/core/sys/windows/rpcndr.d | 10 ++++---- src/core/sys/windows/rpcnsi.d | 8 +++---- src/core/sys/windows/rpcnsip.d | 4 ++-- src/core/sys/windows/rpcnterr.d | 4 ++-- src/core/sys/windows/schannel.d | 6 ++--- src/core/sys/windows/secext.d | 6 ++--- src/core/sys/windows/security.d | 2 +- src/core/sys/windows/servprov.d | 4 ++-- src/core/sys/windows/setupapi.d | 8 +++---- src/core/sys/windows/shellapi.d | 4 ++-- src/core/sys/windows/shldisp.d | 4 ++-- src/core/sys/windows/shlguid.d | 4 ++-- src/core/sys/windows/shlobj.d | 12 +++++----- src/core/sys/windows/shlwapi.d | 8 +++---- src/core/sys/windows/snmp.d | 4 ++-- src/core/sys/windows/sql.d | 6 ++--- src/core/sys/windows/sqlext.d | 6 ++--- src/core/sys/windows/sqltypes.d | 6 ++--- src/core/sys/windows/sqlucode.d | 4 ++-- src/core/sys/windows/sspi.d | 14 +++++------ src/core/sys/windows/subauth.d | 4 ++-- src/core/sys/windows/tlhelp32.d | 4 ++-- src/core/sys/windows/tmschema.d | 2 +- src/core/sys/windows/unknwn.d | 6 ++--- src/core/sys/windows/uuid.d | 4 ++-- src/core/sys/windows/vfw.d | 16 ++++++------- src/core/sys/windows/w32api.d | 2 +- src/core/sys/windows/winbase.d | 6 ++--- src/core/sys/windows/winber.d | 4 ++-- src/core/sys/windows/wincon.d | 4 ++-- src/core/sys/windows/wincrypt.d | 4 ++-- src/core/sys/windows/windef.d | 6 ++--- src/core/sys/windows/windows.d | 42 ++++++++++++++++----------------- src/core/sys/windows/winerror.d | 6 ++--- src/core/sys/windows/wingdi.d | 8 +++---- src/core/sys/windows/wininet.d | 4 ++-- src/core/sys/windows/winioctl.d | 4 ++-- src/core/sys/windows/winldap.d | 6 ++--- src/core/sys/windows/winnetwk.d | 4 ++-- src/core/sys/windows/winnls.d | 4 ++-- src/core/sys/windows/winnt.d | 10 ++++---- src/core/sys/windows/winperf.d | 6 ++--- src/core/sys/windows/winreg.d | 4 ++-- src/core/sys/windows/winspool.d | 6 ++--- src/core/sys/windows/winsvc.d | 4 ++-- src/core/sys/windows/winuser.d | 6 ++--- src/core/sys/windows/winver.d | 4 ++-- src/core/sys/windows/ws2tcpip.d | 12 +++++----- src/core/sys/windows/wtsapi32.d | 6 ++--- src/core/sys/windows/wtypes.d | 8 +++---- 157 files changed, 486 insertions(+), 486 deletions(-) diff --git a/src/core/sys/windows/accctrl.d b/src/core/sys/windows/accctrl.d index 1bc969b430..968993ada1 100644 --- a/src/core/sys/windows/accctrl.d +++ b/src/core/sys/windows/accctrl.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.accctrl; +module core.sys.windows.accctrl; -private import win32.basetyps, win32.w32api, win32.winbase, win32.windef; +private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; // FIXME: check types and grouping of constants // FIXME: check Windows version support diff --git a/src/core/sys/windows/aclapi.d b/src/core/sys/windows/aclapi.d index 6d1ce9ab04..cdfcb44a56 100644 --- a/src/core/sys/windows/aclapi.d +++ b/src/core/sys/windows/aclapi.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.aclapi; +module core.sys.windows.aclapi; pragma(lib, "advapi32"); -import win32.windows, win32.accctrl; +import core.sys.windows.windows, core.sys.windows.accctrl; extern (Windows) { VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD, diff --git a/src/core/sys/windows/aclui.d b/src/core/sys/windows/aclui.d index 2f8a601e32..9e1217e729 100644 --- a/src/core/sys/windows/aclui.d +++ b/src/core/sys/windows/aclui.d @@ -8,18 +8,18 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.aclui; +module core.sys.windows.aclui; pragma(lib, "aclui"); -private import win32.w32api; +private import core.sys.windows.w32api; /* static assert (_WIN32_WINNT >= 0x500, - "win32.aclui is available only if version Windows2000, WindowsXP, Windows2003 " + "core.sys.windows.aclui is available only if version Windows2000, WindowsXP, Windows2003 " "or WindowsVista is set"); */ -import win32.accctrl, win32.commctrl, win32.objbase; -private import win32.basetyps, win32.prsht, win32.unknwn, win32.windef, - win32.winuser; +import core.sys.windows.accctrl, core.sys.windows.commctrl, core.sys.windows.objbase; +private import core.sys.windows.basetyps, core.sys.windows.prsht, core.sys.windows.unknwn, core.sys.windows.windef, + core.sys.windows.winuser; struct SI_OBJECT_INFO { diff --git a/src/core/sys/windows/basetsd.d b/src/core/sys/windows/basetsd.d index baa6dc5d56..a785b366d4 100644 --- a/src/core/sys/windows/basetsd.d +++ b/src/core/sys/windows/basetsd.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.basetsd; +module core.sys.windows.basetsd; /* This template is used in these modules to declare constant pointer types, * in order to support both D 1.x and 2.x. diff --git a/src/core/sys/windows/basetyps.d b/src/core/sys/windows/basetyps.d index 70ca12724b..cb5456e9ed 100644 --- a/src/core/sys/windows/basetyps.d +++ b/src/core/sys/windows/basetyps.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.basetyps; +module core.sys.windows.basetyps; -private import win32.windef, win32.basetsd; +private import core.sys.windows.windef, core.sys.windows.basetsd; align(1) struct GUID { // size is 16 DWORD Data1; diff --git a/src/core/sys/windows/cderr.d b/src/core/sys/windows/cderr.d index 9ac54206e7..944f6e0a67 100644 --- a/src/core/sys/windows/cderr.d +++ b/src/core/sys/windows/cderr.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.cderr; +module core.sys.windows.cderr; enum { CDERR_DIALOGFAILURE = 0xFFFF, diff --git a/src/core/sys/windows/cguid.d b/src/core/sys/windows/cguid.d index 1675cc6550..ae3ca4429b 100644 --- a/src/core/sys/windows/cguid.d +++ b/src/core/sys/windows/cguid.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.cguid; +module core.sys.windows.cguid; -private import win32.basetyps; +private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/comcat.d b/src/core/sys/windows/comcat.d index 89639bdb0f..c7633200e3 100644 --- a/src/core/sys/windows/comcat.d +++ b/src/core/sys/windows/comcat.d @@ -8,11 +8,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.comcat; +module core.sys.windows.comcat; -import win32.windows, win32.ole2; -private import win32.basetyps, win32.cguid, win32.objbase, win32.unknwn, - win32.windef, win32.wtypes; +import core.sys.windows.windows, core.sys.windows.ole2; +private import core.sys.windows.basetyps, core.sys.windows.cguid, core.sys.windows.objbase, core.sys.windows.unknwn, + core.sys.windows.windef, core.sys.windows.wtypes; alias IEnumGUID LPENUMGUID; diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 33c95df15a..4f7e7e37f6 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -7,14 +7,14 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.commctrl; +module core.sys.windows.commctrl; pragma(lib, "comctl32"); -private import win32.w32api, win32.windef, win32.winuser; -private import win32.winbase; // for SYSTEMTIME -private import win32.objfwd; // for LPSTREAM +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; +private import core.sys.windows.winbase; // for SYSTEMTIME +private import core.sys.windows.objfwd; // for LPSTREAM -import win32.prsht; +import core.sys.windows.prsht; const COMCTL32_VERSION = 6; diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index 47ce6483cf..b94492ae0e 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -7,12 +7,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.commdlg; +module core.sys.windows.commdlg; pragma(lib, "comdlg32"); -private import win32.w32api; -import win32.windef, win32.winuser; -import win32.wingdi; // for LPLOGFONTA +private import core.sys.windows.w32api; +import core.sys.windows.windef, core.sys.windows.winuser; +import core.sys.windows.wingdi; // for LPLOGFONTA const TCHAR[] LBSELCHSTRING = "commdlg_LBSelChangedNotify", @@ -565,8 +565,8 @@ struct PRINTDLGW { alias PRINTDLGW* LPPRINTDLGW; //static if (_WIN32_WINNT >= 0x500) { - import win32.unknwn; // for LPUNKNOWN - import win32.prsht; // for HPROPSHEETPAGE + import core.sys.windows.unknwn; // for LPUNKNOWN + import core.sys.windows.prsht; // for HPROPSHEETPAGE struct PRINTPAGERANGE { DWORD nFromPage; diff --git a/src/core/sys/windows/core.d b/src/core/sys/windows/core.d index b540886ece..1803636a4e 100644 --- a/src/core/sys/windows/core.d +++ b/src/core/sys/windows/core.d @@ -5,7 +5,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.core; +module core.sys.windows.core; /** The core Windows API functions. @@ -18,13 +18,13 @@ module win32.core; */ -public import win32.windef; -public import win32.winnt; -public import win32.wincon; -public import win32.winbase; -public import win32.wingdi; -public import win32.winuser; -public import win32.winnls; -public import win32.winver; -public import win32.winnetwk; -public import win32.winsvc; +public import core.sys.windows.windef; +public import core.sys.windows.winnt; +public import core.sys.windows.wincon; +public import core.sys.windows.winbase; +public import core.sys.windows.wingdi; +public import core.sys.windows.winuser; +public import core.sys.windows.winnls; +public import core.sys.windows.winver; +public import core.sys.windows.winnetwk; +public import core.sys.windows.winsvc; diff --git a/src/core/sys/windows/cpl.d b/src/core/sys/windows/cpl.d index f444e48b82..2869001d08 100644 --- a/src/core/sys/windows/cpl.d +++ b/src/core/sys/windows/cpl.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.cpl; +module core.sys.windows.cpl; -private import win32.windef, win32.winuser; +private import core.sys.windows.windef, core.sys.windows.winuser; enum : uint { WM_CPL_LAUNCH = WM_USER + 1000, diff --git a/src/core/sys/windows/cplext.d b/src/core/sys/windows/cplext.d index 1b6bfcfbf2..ff2b9c47f2 100644 --- a/src/core/sys/windows/cplext.d +++ b/src/core/sys/windows/cplext.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.cplext; +module core.sys.windows.cplext; enum : uint { CPLPAGE_MOUSE_BUTTONS = 1, diff --git a/src/core/sys/windows/custcntl.d b/src/core/sys/windows/custcntl.d index 1bbfed4878..0a607f4e21 100644 --- a/src/core/sys/windows/custcntl.d +++ b/src/core/sys/windows/custcntl.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.custcntl; +module core.sys.windows.custcntl; -private import win32.windef; +private import core.sys.windows.windef; // FIXME: check type const CCF_NOTEXT = 1; diff --git a/src/core/sys/windows/dbt.d b/src/core/sys/windows/dbt.d index 4fe61eae36..b0a7208cca 100644 --- a/src/core/sys/windows/dbt.d +++ b/src/core/sys/windows/dbt.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.dbt; +module core.sys.windows.dbt; -import win32.w32api, win32.windef; -import win32.basetyps; // for GUID +import core.sys.windows.w32api, core.sys.windows.windef; +import core.sys.windows.basetyps; // for GUID // FIXME: clean up Windows version support diff --git a/src/core/sys/windows/dde.d b/src/core/sys/windows/dde.d index 9217643213..17eaa88ba2 100644 --- a/src/core/sys/windows/dde.d +++ b/src/core/sys/windows/dde.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.dde; +module core.sys.windows.dde; pragma(lib, "user32"); -private import win32.windef; +private import core.sys.windows.windef; enum : uint { WM_DDE_FIRST = 0x03E0, diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index 1dca9b1b5e..88aecb349e 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ddeml; +module core.sys.windows.ddeml; pragma(lib, "user32"); -private import win32.basetsd, win32.windef, win32.winnt; +private import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winnt; enum : int { CP_WINANSI = 1004, diff --git a/src/core/sys/windows/dhcpcsdk.d b/src/core/sys/windows/dhcpcsdk.d index c152d54297..ee7ff05964 100644 --- a/src/core/sys/windows/dhcpcsdk.d +++ b/src/core/sys/windows/dhcpcsdk.d @@ -8,12 +8,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.dhcpcsdk; +module core.sys.windows.dhcpcsdk; -private import win32.w32api, win32.windef; +private import core.sys.windows.w32api, core.sys.windows.windef; /*static assert (_WIN32_WINNT >= 0x500, -"win32.dhcpcsdk is available only if version Windows2000, WindowsXP, Windows2003 +"core.sys.windows.dhcpcsdk is available only if version Windows2000, WindowsXP, Windows2003 or WindowsVista is set");*/ //#if (_WIN32_WINNT >= 0x500) diff --git a/src/core/sys/windows/dlgs.d b/src/core/sys/windows/dlgs.d index efdb1904d3..916ad6cadc 100644 --- a/src/core/sys/windows/dlgs.d +++ b/src/core/sys/windows/dlgs.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.dlgs; +module core.sys.windows.dlgs; -private import win32.windef; +private import core.sys.windows.windef; enum : ushort { FILEOPENORD = 1536, diff --git a/src/core/sys/windows/docobj.d b/src/core/sys/windows/docobj.d index 3882b65ede..c08b6d015a 100644 --- a/src/core/sys/windows/docobj.d +++ b/src/core/sys/windows/docobj.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.docobj; +module core.sys.windows.docobj; -private import win32.basetyps, win32.oaidl, win32.objidl, win32.oleidl, - win32.unknwn, win32.windef, win32.wtypes; +private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.objidl, core.sys.windows.oleidl, + core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; // FIXME: remove inherited methods from interface definitions diff --git a/src/core/sys/windows/errorrep.d b/src/core/sys/windows/errorrep.d index 0e758391f0..5d6a65c7b4 100644 --- a/src/core/sys/windows/errorrep.d +++ b/src/core/sys/windows/errorrep.d @@ -8,12 +8,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.errorrep; +module core.sys.windows.errorrep; -private import win32.w32api, win32.windef; +private import core.sys.windows.w32api, core.sys.windows.windef; static assert (_WIN32_WINNT >= 0x501, - "win32.errorrep is available only if version WindowsXP, Windows2003 " + "core.sys.windows.errorrep is available only if version WindowsXP, Windows2003 " "or WindowsVista is set"); enum EFaultRepRetVal { diff --git a/src/core/sys/windows/exdisp.d b/src/core/sys/windows/exdisp.d index 2db8df8817..b00019820d 100644 --- a/src/core/sys/windows/exdisp.d +++ b/src/core/sys/windows/exdisp.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.exdisp; +module core.sys.windows.exdisp; -import win32.docobj, win32.oaidl, win32.ocidl; -private import win32.basetyps, win32.windef, win32.wtypes; +import core.sys.windows.docobj, core.sys.windows.oaidl, core.sys.windows.ocidl; +private import core.sys.windows.basetyps, core.sys.windows.windef, core.sys.windows.wtypes; enum BrowserNavConstants { diff --git a/src/core/sys/windows/exdispid.d b/src/core/sys/windows/exdispid.d index 6d3b3296e6..4972c90f87 100644 --- a/src/core/sys/windows/exdispid.d +++ b/src/core/sys/windows/exdispid.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.exdispid; +module core.sys.windows.exdispid; enum : int { DISPID_STATUSTEXTCHANGE = 102, diff --git a/src/core/sys/windows/httpext.d b/src/core/sys/windows/httpext.d index cf03b42ad9..77fc459e1d 100644 --- a/src/core/sys/windows/httpext.d +++ b/src/core/sys/windows/httpext.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.httpext; +module core.sys.windows.httpext; /* Comment from MinGW httpext.h - Header for ISAPI extensions. @@ -19,7 +19,7 @@ module win32.httpext; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ -private import win32.windows; +private import core.sys.windows.windows; enum { HSE_VERSION_MAJOR = 2, diff --git a/src/core/sys/windows/idispids.d b/src/core/sys/windows/idispids.d index 93064be7ef..4dc564303b 100644 --- a/src/core/sys/windows/idispids.d +++ b/src/core/sys/windows/idispids.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.idispids; +module core.sys.windows.idispids; enum : int { DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501, diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index 314f98f92b..ff307de7bb 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.imagehlp; +module core.sys.windows.imagehlp; /* Comment from MinGW NOTE: This strictly does not belong in the Win32 API since it's @@ -16,7 +16,7 @@ module win32.imagehlp; as well provide it here. */ -private import win32.winbase, win32.windef; +private import core.sys.windows.winbase, core.sys.windows.windef; // FIXME: check types of constants diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d index ac83207a9e..2d44e194a5 100644 --- a/src/core/sys/windows/imm.d +++ b/src/core/sys/windows/imm.d @@ -7,12 +7,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.imm; +module core.sys.windows.imm; pragma(lib, "imm32"); -import win32.windef, win32.wingdi; -import win32.winuser; // for the MFS_xxx enums. -private import win32.w32api; +import core.sys.windows.windef, core.sys.windows.wingdi; +import core.sys.windows.winuser; // for the MFS_xxx enums. +private import core.sys.windows.w32api; const WM_CONVERTREQUESTEX = 0x108; const WM_IME_STARTCOMPOSITION = 0x10D; diff --git a/src/core/sys/windows/intshcut.d b/src/core/sys/windows/intshcut.d index dfc247c351..64becc92ef 100644 --- a/src/core/sys/windows/intshcut.d +++ b/src/core/sys/windows/intshcut.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.intshcut; +module core.sys.windows.intshcut; -private import win32.unknwn, win32.windef; +private import core.sys.windows.unknwn, core.sys.windows.windef; enum : SCODE { E_FLAGS = 0x80041000, diff --git a/src/core/sys/windows/ipexport.d b/src/core/sys/windows/ipexport.d index 754e918518..d03fca2022 100644 --- a/src/core/sys/windows/ipexport.d +++ b/src/core/sys/windows/ipexport.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ipexport; +module core.sys.windows.ipexport; -private import win32.windef; +private import core.sys.windows.windef; const size_t MAX_ADAPTER_NAME = 128; diff --git a/src/core/sys/windows/iphlpapi.d b/src/core/sys/windows/iphlpapi.d index f722ef2a8c..5beaa46db4 100644 --- a/src/core/sys/windows/iphlpapi.d +++ b/src/core/sys/windows/iphlpapi.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.iphlpapi; +module core.sys.windows.iphlpapi; -import win32.ipexport, win32.iprtrmib, win32.iptypes; -private import win32.winbase, win32.windef; +import core.sys.windows.ipexport, core.sys.windows.iprtrmib, core.sys.windows.iptypes; +private import core.sys.windows.winbase, core.sys.windows.windef; extern (Windows) { DWORD AddIPAddress(IPAddr, IPMask, DWORD, PULONG, PULONG); diff --git a/src/core/sys/windows/ipifcons.d b/src/core/sys/windows/ipifcons.d index f7bc787994..4a790beef7 100644 --- a/src/core/sys/windows/ipifcons.d +++ b/src/core/sys/windows/ipifcons.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ipifcons; +module core.sys.windows.ipifcons; // FIXME: check types of constants diff --git a/src/core/sys/windows/iprtrmib.d b/src/core/sys/windows/iprtrmib.d index 0a3a1967c6..38fe139f6e 100644 --- a/src/core/sys/windows/iprtrmib.d +++ b/src/core/sys/windows/iprtrmib.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.iprtrmib; +module core.sys.windows.iprtrmib; -import win32.ipifcons; -private import win32.windef; +import core.sys.windows.ipifcons; +private import core.sys.windows.windef; // FIXME: check types of constants diff --git a/src/core/sys/windows/iptypes.d b/src/core/sys/windows/iptypes.d index bded5cdf2c..58cd952310 100644 --- a/src/core/sys/windows/iptypes.d +++ b/src/core/sys/windows/iptypes.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.iptypes; +module core.sys.windows.iptypes; -import win32.windef; +import core.sys.windows.windef; version(Tango){ private import tango.stdc.time; }else{ diff --git a/src/core/sys/windows/isguids.d b/src/core/sys/windows/isguids.d index d9da4bfdb1..6181b69cbb 100644 --- a/src/core/sys/windows/isguids.d +++ b/src/core/sys/windows/isguids.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.isguids; +module core.sys.windows.isguids; -private import win32.basetyps; +private import core.sys.windows.basetyps; extern (C) extern const GUID CLSID_InternetShortcut, diff --git a/src/core/sys/windows/lm.d b/src/core/sys/windows/lm.d index ebbdbdc311..a8f5ee11ca 100644 --- a/src/core/sys/windows/lm.d +++ b/src/core/sys/windows/lm.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lm; +module core.sys.windows.lm; /* removed - now supporting only Win2k up version (WindowsVista) { version = WIN32_WINNT_ONLY; @@ -19,29 +19,29 @@ version (WindowsVista) { version = WIN32_WINNT_ONLY; } */ -public import win32.lmcons; -public import win32.lmaccess; -public import win32.lmalert; -public import win32.lmat; -public import win32.lmerr; -public import win32.lmshare; -public import win32.lmapibuf; -public import win32.lmremutl; -public import win32.lmrepl; -public import win32.lmuse; -public import win32.lmstats; -public import win32.lmwksta; -public import win32.lmserver; +public import core.sys.windows.lmcons; +public import core.sys.windows.lmaccess; +public import core.sys.windows.lmalert; +public import core.sys.windows.lmat; +public import core.sys.windows.lmerr; +public import core.sys.windows.lmshare; +public import core.sys.windows.lmapibuf; +public import core.sys.windows.lmremutl; +public import core.sys.windows.lmrepl; +public import core.sys.windows.lmuse; +public import core.sys.windows.lmstats; +public import core.sys.windows.lmwksta; +public import core.sys.windows.lmserver; version (Windows2000) { } else { - public import win32.lmmsg; + public import core.sys.windows.lmmsg; } // FIXME: Everything in these next files seems to be deprecated! -import win32.lmaudit; -import win32.lmchdev; // can't find many docs for functions from this file. -import win32.lmconfig; -import win32.lmerrlog; -import win32.lmsvc; -import win32.lmsname; // in MinGW, this was publicly included by lm.lmsvc +import core.sys.windows.lmaudit; +import core.sys.windows.lmchdev; // can't find many docs for functions from this file. +import core.sys.windows.lmconfig; +import core.sys.windows.lmerrlog; +import core.sys.windows.lmsvc; +import core.sys.windows.lmsname; // in MinGW, this was publicly included by lm.lmsvc diff --git a/src/core/sys/windows/lmaccess.d b/src/core/sys/windows/lmaccess.d index 1911fcfe7d..2b3350cebd 100644 --- a/src/core/sys/windows/lmaccess.d +++ b/src/core/sys/windows/lmaccess.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmaccess; +module core.sys.windows.lmaccess; pragma(lib, "netapi32"); /** @@ -16,7 +16,7 @@ pragma(lib, "netapi32"); the Platform SDK docs, so they have been dropped from this file. */ -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; const wchar[] GROUP_SPECIALGRP_USERS = "USERS", diff --git a/src/core/sys/windows/lmalert.d b/src/core/sys/windows/lmalert.d index 9b9f07cf41..7a5950276b 100644 --- a/src/core/sys/windows/lmalert.d +++ b/src/core/sys/windows/lmalert.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmalert; +module core.sys.windows.lmalert; pragma(lib, "netapi32"); -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; const TCHAR[] ALERTER_MAILSLOT = `\\.\MAILSLOT\Alerter`, diff --git a/src/core/sys/windows/lmapibuf.d b/src/core/sys/windows/lmapibuf.d index f02c71fd04..84d544f3e8 100644 --- a/src/core/sys/windows/lmapibuf.d +++ b/src/core/sys/windows/lmapibuf.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmapibuf; +module core.sys.windows.lmapibuf; pragma(lib, "netapi32"); -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; extern (Windows) { NET_API_STATUS NetApiBufferAllocate(DWORD, PVOID*); diff --git a/src/core/sys/windows/lmat.d b/src/core/sys/windows/lmat.d index 760730e18c..bd7d32d875 100644 --- a/src/core/sys/windows/lmat.d +++ b/src/core/sys/windows/lmat.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmat; +module core.sys.windows.lmat; pragma(lib, "netapi32"); -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; const JOB_RUN_PERIODICALLY = 1; const JOB_EXEC_ERROR = 2; diff --git a/src/core/sys/windows/lmaudit.d b/src/core/sys/windows/lmaudit.d index 57fdfa99cc..80b604c28f 100644 --- a/src/core/sys/windows/lmaudit.d +++ b/src/core/sys/windows/lmaudit.d @@ -8,9 +8,9 @@ * Placed into public domain * \***********************************************************************/ // COMMENT: This file may be deprecated. -module win32.lmaudit; +module core.sys.windows.lmaudit; -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; const LOGFLAGS_FORWARD = 0; const LOGFLAGS_BACKWARD = 1; diff --git a/src/core/sys/windows/lmbrowsr.d b/src/core/sys/windows/lmbrowsr.d index d7f320f909..387fff3c5e 100644 --- a/src/core/sys/windows/lmbrowsr.d +++ b/src/core/sys/windows/lmbrowsr.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmbrowsr; +module core.sys.windows.lmbrowsr; -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; const BROWSER_ROLE_PDC = 1; const BROWSER_ROLE_BDC = 2; diff --git a/src/core/sys/windows/lmchdev.d b/src/core/sys/windows/lmchdev.d index 684d411637..765a172341 100644 --- a/src/core/sys/windows/lmchdev.d +++ b/src/core/sys/windows/lmchdev.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmchdev; +module core.sys.windows.lmchdev; // COMMENT: This file might be deprecated. -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; const CHARDEVQ_NO_REQUESTS = -1; const CHARDEV_CLOSE = 0; diff --git a/src/core/sys/windows/lmconfig.d b/src/core/sys/windows/lmconfig.d index 6733fa2741..c5e8b029f7 100644 --- a/src/core/sys/windows/lmconfig.d +++ b/src/core/sys/windows/lmconfig.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmconfig; +module core.sys.windows.lmconfig; // All functions in this file are deprecated! -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; deprecated { struct CONFIG_INFO_0 { diff --git a/src/core/sys/windows/lmcons.d b/src/core/sys/windows/lmcons.d index 38f98944f6..9addd30818 100644 --- a/src/core/sys/windows/lmcons.d +++ b/src/core/sys/windows/lmcons.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmcons; +module core.sys.windows.lmcons; -private import win32.windef; -private import win32.lmerr; // for NERR_BASE +private import core.sys.windows.windef; +private import core.sys.windows.lmerr; // for NERR_BASE const TCHAR[] MESSAGE_FILENAME = "NETMSG", diff --git a/src/core/sys/windows/lmerr.d b/src/core/sys/windows/lmerr.d index 700220a1d3..683daa1429 100644 --- a/src/core/sys/windows/lmerr.d +++ b/src/core/sys/windows/lmerr.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmerr; +module core.sys.windows.lmerr; -import win32.winerror; +import core.sys.windows.winerror; enum { NERR_Success = 0, diff --git a/src/core/sys/windows/lmerrlog.d b/src/core/sys/windows/lmerrlog.d index 406b6ac8c7..a69c587498 100644 --- a/src/core/sys/windows/lmerrlog.d +++ b/src/core/sys/windows/lmerrlog.d @@ -7,12 +7,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmerrlog; +module core.sys.windows.lmerrlog; // COMMENT: This appears to be only for Win16. All functions are deprecated. -private import win32.lmcons, win32.windef; -private import win32.lmaudit; // for LPHLOG +private import core.sys.windows.lmcons, core.sys.windows.windef; +private import core.sys.windows.lmaudit; // for LPHLOG const ERRLOG_BASE=3100; const ERRLOG2_BASE=5700; diff --git a/src/core/sys/windows/lmmsg.d b/src/core/sys/windows/lmmsg.d index 990f855e9d..9e62c8a17b 100644 --- a/src/core/sys/windows/lmmsg.d +++ b/src/core/sys/windows/lmmsg.d @@ -7,13 +7,13 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmmsg; +module core.sys.windows.lmmsg; pragma(lib, "netapi32"); -private import win32.lmcons, win32.windef, win32.w32api; +private import core.sys.windows.lmcons, core.sys.windows.windef, core.sys.windows.w32api; static assert (_WIN32_WINNT >= 0x501, - "win32.lmmsg is available only if version WindowsXP, Windows2003 " + "core.sys.windows.lmmsg is available only if version WindowsXP, Windows2003 " "or WindowsVista is set"); const MSGNAME_NOT_FORWARDED = 0; diff --git a/src/core/sys/windows/lmremutl.d b/src/core/sys/windows/lmremutl.d index 1a58e9789b..fbf0be1aab 100644 --- a/src/core/sys/windows/lmremutl.d +++ b/src/core/sys/windows/lmremutl.d @@ -7,12 +7,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmremutl; +module core.sys.windows.lmremutl; pragma(lib, "netapi32"); // D Conversion Note: DESC_CHAR is defined as TCHAR. -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; const SUPPORTS_REMOTE_ADMIN_PROTOCOL = 2; const SUPPORTS_RPC = 4; diff --git a/src/core/sys/windows/lmrepl.d b/src/core/sys/windows/lmrepl.d index 36c28251ac..1e7277f3b7 100644 --- a/src/core/sys/windows/lmrepl.d +++ b/src/core/sys/windows/lmrepl.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmrepl; +module core.sys.windows.lmrepl; pragma(lib, "netapi32"); -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; const REPL_ROLE_EXPORT=1; const REPL_ROLE_IMPORT=2; diff --git a/src/core/sys/windows/lmserver.d b/src/core/sys/windows/lmserver.d index e3b176c866..142004a76c 100644 --- a/src/core/sys/windows/lmserver.d +++ b/src/core/sys/windows/lmserver.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmserver; +module core.sys.windows.lmserver; -import win32.winsvc; -private import win32.lmcons, win32.windef; +import core.sys.windows.winsvc; +private import core.sys.windows.lmcons, core.sys.windows.windef; struct SERVER_INFO_100 { DWORD sv100_platform_id; diff --git a/src/core/sys/windows/lmshare.d b/src/core/sys/windows/lmshare.d index d70c65cfdd..fb5c2441d4 100644 --- a/src/core/sys/windows/lmshare.d +++ b/src/core/sys/windows/lmshare.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmshare; +module core.sys.windows.lmshare; pragma(lib, "netapi"); -import win32.lmcons; -private import win32.w32api, win32.windef; +import core.sys.windows.lmcons; +private import core.sys.windows.w32api, core.sys.windows.windef; const SHARE_NETNAME_PARMNUM = 1; diff --git a/src/core/sys/windows/lmsname.d b/src/core/sys/windows/lmsname.d index 9081ff2c9d..3881a7c756 100644 --- a/src/core/sys/windows/lmsname.d +++ b/src/core/sys/windows/lmsname.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmsname; +module core.sys.windows.lmsname; -private import win32.windef; +private import core.sys.windows.windef; const TCHAR[] SERVICE_WORKSTATION = "LanmanWorkstation", diff --git a/src/core/sys/windows/lmstats.d b/src/core/sys/windows/lmstats.d index a2b0d1b31c..0c6c1d028a 100644 --- a/src/core/sys/windows/lmstats.d +++ b/src/core/sys/windows/lmstats.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmstats; +module core.sys.windows.lmstats; pragma(lib, "netapi32"); -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; const ULONG STATSOPT_CLR = 1, diff --git a/src/core/sys/windows/lmsvc.d b/src/core/sys/windows/lmsvc.d index f282924e84..b6f50ca960 100644 --- a/src/core/sys/windows/lmsvc.d +++ b/src/core/sys/windows/lmsvc.d @@ -7,16 +7,16 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmsvc; +module core.sys.windows.lmsvc; // FIXME: Is this file deprecated? All of the functions are only for Win16. /** Changes relative to MinGW: - lmsname is not imported publicly (instead, win32.lm imports it directly). + lmsname is not imported publicly (instead, core.sys.windows.lm imports it directly). */ // TODO: 5 macros -private import win32.lmcons, win32.lmsname, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.lmsname, core.sys.windows.windef; const TCHAR[] SERVICE_DOS_ENCRYPTION = "ENCRYPT"; diff --git a/src/core/sys/windows/lmuse.d b/src/core/sys/windows/lmuse.d index 4974e9b4ba..63da602ca8 100644 --- a/src/core/sys/windows/lmuse.d +++ b/src/core/sys/windows/lmuse.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmuse; +module core.sys.windows.lmuse; pragma(lib, "netapi32"); -import win32.lmuseflg; -private import win32.lmcons, win32.windef; +import core.sys.windows.lmuseflg; +private import core.sys.windows.lmcons, core.sys.windows.windef; enum { USE_LOCAL_PARMNUM = 1, diff --git a/src/core/sys/windows/lmuseflg.d b/src/core/sys/windows/lmuseflg.d index 746dad98b0..e9b4b5ccde 100644 --- a/src/core/sys/windows/lmuseflg.d +++ b/src/core/sys/windows/lmuseflg.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmuseflg; +module core.sys.windows.lmuseflg; enum : uint { USE_NOFORCE = 0, diff --git a/src/core/sys/windows/lmwksta.d b/src/core/sys/windows/lmwksta.d index 6fb5a26939..a014cf4529 100644 --- a/src/core/sys/windows/lmwksta.d +++ b/src/core/sys/windows/lmwksta.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lmwksta; +module core.sys.windows.lmwksta; pragma(lib, "netapi32"); -import win32.lmuseflg; -private import win32.lmcons, win32.windef; +import core.sys.windows.lmuseflg; +private import core.sys.windows.lmcons, core.sys.windows.windef; pragma(lib, "Netapi32"); diff --git a/src/core/sys/windows/lzexpand.d b/src/core/sys/windows/lzexpand.d index 0050e8c1d5..42ce133fe2 100644 --- a/src/core/sys/windows/lzexpand.d +++ b/src/core/sys/windows/lzexpand.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.lzexpand; +module core.sys.windows.lzexpand; pragma(lib, "lz32"); -private import win32.winbase, win32.windef; +private import core.sys.windows.winbase, core.sys.windows.windef; enum : LONG { LZERROR_BADINHANDLE = -1, diff --git a/src/core/sys/windows/mapi.d b/src/core/sys/windows/mapi.d index 0bafe254b0..bb83e15c17 100644 --- a/src/core/sys/windows/mapi.d +++ b/src/core/sys/windows/mapi.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.mapi; +module core.sys.windows.mapi; -private import win32.windef; +private import core.sys.windows.windef; // FIXME: check types and grouping of constants diff --git a/src/core/sys/windows/mciavi.d b/src/core/sys/windows/mciavi.d index 6259e35c68..d0a83862ba 100644 --- a/src/core/sys/windows/mciavi.d +++ b/src/core/sys/windows/mciavi.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.mciavi; +module core.sys.windows.mciavi; -private import win32.mmsystem; +private import core.sys.windows.mmsystem; // FIXME: check types and grouping of constants diff --git a/src/core/sys/windows/mcx.d b/src/core/sys/windows/mcx.d index 8b5c603ee0..a3d873f605 100644 --- a/src/core/sys/windows/mcx.d +++ b/src/core/sys/windows/mcx.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.mcx; +module core.sys.windows.mcx; -private import win32.windef; +private import core.sys.windows.windef; const DWORD DIALOPTION_BILLING = 64, diff --git a/src/core/sys/windows/mgmtapi.d b/src/core/sys/windows/mgmtapi.d index 6867c0684a..773df06141 100644 --- a/src/core/sys/windows/mgmtapi.d +++ b/src/core/sys/windows/mgmtapi.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.mgmtapi; +module core.sys.windows.mgmtapi; -import win32.snmp; -private import win32.windef; +import core.sys.windows.snmp; +private import core.sys.windows.windef; enum { SNMP_MGMTAPI_TIMEOUT = 40, diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index e69ad292b8..7bce737f1c 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -7,14 +7,14 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.mmsystem; +module core.sys.windows.mmsystem; pragma(lib, "winmm"); /* The #defines MAKEFOURCC, mmioFOURCC, sndAlias are used to define * compile-time constants, so they are implemented as templates. */ -private import win32.w32api, win32.windef, win32.winver; +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winver; align(1): diff --git a/src/core/sys/windows/msacm.d b/src/core/sys/windows/msacm.d index 7e0facc506..173b2ef211 100644 --- a/src/core/sys/windows/msacm.d +++ b/src/core/sys/windows/msacm.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.msacm; +module core.sys.windows.msacm; -private import win32.basetsd, win32.mmsystem, win32.windef; +private import core.sys.windows.basetsd, core.sys.windows.mmsystem, core.sys.windows.windef; mixin DECLARE_HANDLE!("HACMDRIVERID"); mixin DECLARE_HANDLE!("HACMDRIVER"); diff --git a/src/core/sys/windows/mshtml.d b/src/core/sys/windows/mshtml.d index d3120367d2..1ed4e9d62b 100644 --- a/src/core/sys/windows/mshtml.d +++ b/src/core/sys/windows/mshtml.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.mshtml; +module core.sys.windows.mshtml; -private import win32.basetyps, win32.oaidl, win32.unknwn, - win32.windef, win32.wtypes; +private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.unknwn, + core.sys.windows.windef, core.sys.windows.wtypes; // These are used in this file, but not defined in MinGW. interface IHTMLStyleSheet {}; diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index 21047b5f34..ff5ff31966 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.mswsock; +module core.sys.windows.mswsock; -import win32.winbase, win32.windef; -private import win32.basetyps, win32.w32api; +import core.sys.windows.winbase, core.sys.windows.windef; +private import core.sys.windows.basetyps, core.sys.windows.w32api; // FIXME: clean up Windows version support @@ -21,9 +21,9 @@ version (Win32_Winsock2) pragma(msg, // Pull in Winsock1 if the user has put "Win32_Winsock1" on the compile // line; otherwise, default to Winsock2. version (Win32_Winsock1) { - import win32.winsock; + import core.sys.windows.winsock; } else { - import win32.winsock2; + import core.sys.windows.winsock2; } //static if (_WIN32_WINNT >= 0x500) { diff --git a/src/core/sys/windows/nb30.d b/src/core/sys/windows/nb30.d index f470d8b15a..1aac0738ca 100644 --- a/src/core/sys/windows/nb30.d +++ b/src/core/sys/windows/nb30.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.nb30; +module core.sys.windows.nb30; -private import win32.windef; +private import core.sys.windows.windef; const size_t NCBNAMSZ = 16, diff --git a/src/core/sys/windows/nddeapi.d b/src/core/sys/windows/nddeapi.d index 853325e93d..af4fa6a4b0 100644 --- a/src/core/sys/windows/nddeapi.d +++ b/src/core/sys/windows/nddeapi.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.nddeapi; +module core.sys.windows.nddeapi; -private import win32.windef; +private import core.sys.windows.windef; // FIXME: check types and grouping of constants diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d index ed588520a2..e7a174ddc8 100644 --- a/src/core/sys/windows/nspapi.d +++ b/src/core/sys/windows/nspapi.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.nspapi; +module core.sys.windows.nspapi; -private import win32.basetyps, win32.windef; +private import core.sys.windows.basetyps, core.sys.windows.windef; // FIXME: check types of constants @@ -51,9 +51,9 @@ enum { * being included. But that doesn't translate well into D. */ version (Win32_Winsock1) { - import win32.winsock; + import core.sys.windows.winsock; } else { - import win32.winsock2; + import core.sys.windows.winsock2; } struct SOCKET_ADDRESS { diff --git a/src/core/sys/windows/ntdef.d b/src/core/sys/windows/ntdef.d index ca9a5a7f77..3b9032d90b 100644 --- a/src/core/sys/windows/ntdef.d +++ b/src/core/sys/windows/ntdef.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ntdef; +module core.sys.windows.ntdef; -private import win32.basetsd, win32.subauth, win32.windef, win32.winnt; +private import core.sys.windows.basetsd, core.sys.windows.subauth, core.sys.windows.windef, core.sys.windows.winnt; const uint OBJ_INHERIT = 0x0002, diff --git a/src/core/sys/windows/ntdll.d b/src/core/sys/windows/ntdll.d index 6accbe0225..70855212df 100644 --- a/src/core/sys/windows/ntdll.d +++ b/src/core/sys/windows/ntdll.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ntdll; +module core.sys.windows.ntdll; -private import win32.w32api; +private import core.sys.windows.w32api; enum SHUTDOWN_ACTION { diff --git a/src/core/sys/windows/ntldap.d b/src/core/sys/windows/ntldap.d index 637e1bb7a2..99a313d323 100644 --- a/src/core/sys/windows/ntldap.d +++ b/src/core/sys/windows/ntldap.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ntldap; +module core.sys.windows.ntldap; /* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned * aliases. Should we merge them anyway? diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index 76ed6fb961..7ed9fd3981 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ntsecapi; +module core.sys.windows.ntsecapi; private import - win32.basetyps, win32.ntdef, win32.windef, win32.winnt, win32.w32api; + core.sys.windows.basetyps, core.sys.windows.ntdef, core.sys.windows.windef, core.sys.windows.winnt, core.sys.windows.w32api; // FIXME: check types and grouping of constants // FIXME: check Windows version support diff --git a/src/core/sys/windows/ntsecpkg.d b/src/core/sys/windows/ntsecpkg.d index 17f88687d0..9f63c96e0e 100644 --- a/src/core/sys/windows/ntsecpkg.d +++ b/src/core/sys/windows/ntsecpkg.d @@ -8,11 +8,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ntsecpkg; +module core.sys.windows.ntsecpkg; -import win32.windef, win32.ntsecapi, win32.security, win32.ntdef, win32.sspi; -import win32.winnt: GUID; -import win32.winbase; +import core.sys.windows.windef, core.sys.windows.ntsecapi, core.sys.windows.security, core.sys.windows.ntdef, core.sys.windows.sspi; +import core.sys.windows.winnt: GUID; +import core.sys.windows.winbase; extern(Windows): diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d index a12588d979..0d0667d2a8 100644 --- a/src/core/sys/windows/oaidl.d +++ b/src/core/sys/windows/oaidl.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.oaidl; +module core.sys.windows.oaidl; -private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; +private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; const DISPID_UNKNOWN = -1; const DISPID_VALUE = 0; diff --git a/src/core/sys/windows/objbase.d b/src/core/sys/windows/objbase.d index 6f01b3f8fc..16ac43a592 100644 --- a/src/core/sys/windows/objbase.d +++ b/src/core/sys/windows/objbase.d @@ -7,12 +7,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.objbase; +module core.sys.windows.objbase; pragma(lib, "ole32"); -import win32.cguid, win32.objidl, win32.unknwn, win32.wtypes; -private import win32.basetyps, win32.objfwd, win32.rpcdce, win32.winbase, - win32.windef; +import core.sys.windows.cguid, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.wtypes; +private import core.sys.windows.basetyps, core.sys.windows.objfwd, core.sys.windows.rpcdce, core.sys.windows.winbase, + core.sys.windows.windef; // DAC: Not needed for D? //MACRO #define LISet32(li, v) ((li).HighPart=(v)<0?-1:0, (li).LowPart=(v)) diff --git a/src/core/sys/windows/objfwd.d b/src/core/sys/windows/objfwd.d index 9903afdf1c..813a6c26d1 100644 --- a/src/core/sys/windows/objfwd.d +++ b/src/core/sys/windows/objfwd.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.objfwd; +module core.sys.windows.objfwd; -private import win32.objidl; +private import core.sys.windows.objidl; /+ // Forward declararions are not necessary in D. diff --git a/src/core/sys/windows/objidl.d b/src/core/sys/windows/objidl.d index d892924462..8eba98c92a 100644 --- a/src/core/sys/windows/objidl.d +++ b/src/core/sys/windows/objidl.d @@ -11,16 +11,16 @@ // # why is "alias IPSFactoryBuffer* LPPSFACTORYBUFFER;" in this file, // rather than in objfwd ? // # do we need the proxies that are defined in this file? -module win32.objidl; - -import win32.unknwn; -import win32.objfwd; -private import win32.windef; -private import win32.basetyps; -private import win32.oleidl; -private import win32.wtypes; -private import win32.winbase; // for FILETIME -private import win32.rpcdce; +module core.sys.windows.objidl; + +import core.sys.windows.unknwn; +import core.sys.windows.objfwd; +private import core.sys.windows.windef; +private import core.sys.windows.basetyps; +private import core.sys.windows.oleidl; +private import core.sys.windows.wtypes; +private import core.sys.windows.winbase; // for FILETIME +private import core.sys.windows.rpcdce; struct STATSTG { LPOLESTR pwcsName; diff --git a/src/core/sys/windows/objsafe.d b/src/core/sys/windows/objsafe.d index 131d85f1fe..c362fd2a73 100644 --- a/src/core/sys/windows/objsafe.d +++ b/src/core/sys/windows/objsafe.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.objsafe; +module core.sys.windows.objsafe; -private import win32.basetyps, win32.unknwn, win32.windef; +private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef; enum { INTERFACESAFE_FOR_UNTRUSTED_CALLER = 1, diff --git a/src/core/sys/windows/ocidl.d b/src/core/sys/windows/ocidl.d index ba5b812456..d9dce12d28 100644 --- a/src/core/sys/windows/ocidl.d +++ b/src/core/sys/windows/ocidl.d @@ -8,13 +8,13 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ocidl; +module core.sys.windows.ocidl; -private import win32.ole2, win32.oleidl, win32.oaidl, win32.objfwd, - win32.windef, win32.wtypes; -private import win32.objidl; // for CLIPFORMAT -private import win32.wingdi; // for TEXTMETRICW -private import win32.winuser; // for LPMSG +private import core.sys.windows.ole2, core.sys.windows.oleidl, core.sys.windows.oaidl, core.sys.windows.objfwd, + core.sys.windows.windef, core.sys.windows.wtypes; +private import core.sys.windows.objidl; // for CLIPFORMAT +private import core.sys.windows.wingdi; // for TEXTMETRICW +private import core.sys.windows.winuser; // for LPMSG interface IBindHost : IUnknown {} @@ -24,10 +24,10 @@ interface IServiceProvider : IUnknown{ /* // TODO: -//private import win32.servprov; // for IServiceProvider -// private import win32.urlmon; // for IBindHost. This is not included in MinGW. +//private import core.sys.windows.servprov; // for IServiceProvider +// private import core.sys.windows.urlmon; // for IBindHost. This is not included in MinGW. -// win32.urlmon should contain: +// core.sys.windows.urlmon should contain: interface IBindHost : IUnknown { HRESULT CreateMoniker(LPOLESTR szName, IBindCtx pBC, IMoniker* ppmk, DWORD); diff --git a/src/core/sys/windows/odbcinst.d b/src/core/sys/windows/odbcinst.d index 35a19f49d4..e5c485fd9a 100644 --- a/src/core/sys/windows/odbcinst.d +++ b/src/core/sys/windows/odbcinst.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.odbcinst; +module core.sys.windows.odbcinst; -import win32.sql; -private import win32.windef; +import core.sys.windows.sql; +private import core.sys.windows.windef; /* FIXME: The Unicode/Ansi functions situation is a mess. How do the xxxA * versions of these functions fit into the scheme? diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index d4ec788e12..104ee57139 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ole; +module core.sys.windows.ole; -private import win32.windef, win32.wingdi, win32.uuid; +private import core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.uuid; alias LPCSTR OLE_LPCSTR; diff --git a/src/core/sys/windows/ole2.d b/src/core/sys/windows/ole2.d index 14197ef7c3..5f1dbd3278 100644 --- a/src/core/sys/windows/ole2.d +++ b/src/core/sys/windows/ole2.d @@ -7,13 +7,13 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ole2; +module core.sys.windows.ole2; pragma(lib, "ole32"); -public import win32.basetyps, win32.objbase, win32.oleauto, win32.olectlid, - win32.oleidl, win32.unknwn, win32.winerror, win32.uuid; -private import win32.objfwd, win32.objidl, win32.windef, win32.wtypes; -private import win32.winuser; // for LPMSG +public import core.sys.windows.basetyps, core.sys.windows.objbase, core.sys.windows.oleauto, core.sys.windows.olectlid, + core.sys.windows.oleidl, core.sys.windows.unknwn, core.sys.windows.winerror, core.sys.windows.uuid; +private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.windows.windef, core.sys.windows.wtypes; +private import core.sys.windows.winuser; // for LPMSG const E_DRAW = VIEW_E_DRAW; diff --git a/src/core/sys/windows/ole2ver.d b/src/core/sys/windows/ole2ver.d index 3d29a1d645..40ebed6aa3 100644 --- a/src/core/sys/windows/ole2ver.d +++ b/src/core/sys/windows/ole2ver.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ole2ver; +module core.sys.windows.ole2ver; // These are apparently not documented on the MSDN site const rmm = 23; diff --git a/src/core/sys/windows/oleacc.d b/src/core/sys/windows/oleacc.d index e8262eccd4..3d85b85633 100644 --- a/src/core/sys/windows/oleacc.d +++ b/src/core/sys/windows/oleacc.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.oleacc; +module core.sys.windows.oleacc; pragma(lib, "oleacc"); -private import win32.basetyps, win32.oaidl, win32.unknwn, win32.wtypes, - win32.windef; +private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.unknwn, core.sys.windows.wtypes, + core.sys.windows.windef; enum { DISPID_ACC_PARENT = -5000, diff --git a/src/core/sys/windows/oleauto.d b/src/core/sys/windows/oleauto.d index df81f1e067..5c95b4b45b 100644 --- a/src/core/sys/windows/oleauto.d +++ b/src/core/sys/windows/oleauto.d @@ -7,12 +7,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.oleauto; +module core.sys.windows.oleauto; pragma(lib, "oleaut32"); -import win32.oaidl; -private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; -private import win32.winbase; // for SYSTEMTIME +import core.sys.windows.oaidl; +private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; +private import core.sys.windows.winbase; // for SYSTEMTIME align(8): const STDOLE_MAJORVERNUM = 1; diff --git a/src/core/sys/windows/olectl.d b/src/core/sys/windows/olectl.d index 77d9006b80..56e10c3f80 100644 --- a/src/core/sys/windows/olectl.d +++ b/src/core/sys/windows/olectl.d @@ -7,17 +7,17 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.olectl; +module core.sys.windows.olectl; // In conversion from MinGW, the following was deleted: //#define FONTSIZE(n) {n##0000, 0} -import win32.ocidl, win32.olectlid; -private import win32.basetyps, win32.oaidl, win32.oleauto, win32.unknwn, - win32.windef, win32.wingdi, win32.winuser, win32.wtypes; -private import win32.ntdef; // for NTSTATUS -private import win32.objfwd; // for LPSTREAM -private import win32.winerror; // for SCODE +import core.sys.windows.ocidl, core.sys.windows.olectlid; +private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.oleauto, core.sys.windows.unknwn, + core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.winuser, core.sys.windows.wtypes; +private import core.sys.windows.ntdef; // for NTSTATUS +private import core.sys.windows.objfwd; // for LPSTREAM +private import core.sys.windows.winerror; // for SCODE private { diff --git a/src/core/sys/windows/olectlid.d b/src/core/sys/windows/olectlid.d index 5e180ccd72..3a7e9cabd0 100644 --- a/src/core/sys/windows/olectlid.d +++ b/src/core/sys/windows/olectlid.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.olectlid; +module core.sys.windows.olectlid; -private import win32.basetyps; +private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d index bdaf2b9232..048ba5a9c0 100644 --- a/src/core/sys/windows/oledlg.d +++ b/src/core/sys/windows/oledlg.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.oledlg; +module core.sys.windows.oledlg; -import win32.commdlg, win32.dlgs, win32.ole2, win32.prsht, win32.shellapi, - win32.windows; -private import win32.winbase, win32.objidl, win32.objfwd, win32.winnt; +import core.sys.windows.commdlg, core.sys.windows.dlgs, core.sys.windows.ole2, core.sys.windows.prsht, core.sys.windows.shellapi, + core.sys.windows.windows; +private import core.sys.windows.winbase, core.sys.windows.objidl, core.sys.windows.objfwd, core.sys.windows.winnt; // FIXME: remove inherited methods from interface definitions diff --git a/src/core/sys/windows/oleidl.d b/src/core/sys/windows/oleidl.d index 608966d3a4..b75a0b7dd9 100644 --- a/src/core/sys/windows/oleidl.d +++ b/src/core/sys/windows/oleidl.d @@ -7,16 +7,16 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.oleidl; +module core.sys.windows.oleidl; // DAC: This is defined in ocidl !! // what is it doing in here? //alias IEnumOleUndoUnits LPENUMOLEUNDOUNITS; -private import win32.basetyps, win32.objidl, win32.unknwn, win32.windef, - win32.winuser, win32.wtypes; -private import win32.objfwd; // for LPMONIKER -private import win32.wingdi; // for LPLOGPALETTE +private import core.sys.windows.basetyps, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.windef, + core.sys.windows.winuser, core.sys.windows.wtypes; +private import core.sys.windows.objfwd; // for LPMONIKER +private import core.sys.windows.wingdi; // for LPLOGPALETTE const MK_ALT = 32; diff --git a/src/core/sys/windows/pbt.d b/src/core/sys/windows/pbt.d index 1668d08c5e..a33b2cd161 100644 --- a/src/core/sys/windows/pbt.d +++ b/src/core/sys/windows/pbt.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.pbt; +module core.sys.windows.pbt; -private import win32.windef; +private import core.sys.windows.windef; enum : WPARAM { PBT_APMQUERYSUSPEND, diff --git a/src/core/sys/windows/powrprof.d b/src/core/sys/windows/powrprof.d index 164bf932c2..fc60bef608 100644 --- a/src/core/sys/windows/powrprof.d +++ b/src/core/sys/windows/powrprof.d @@ -8,11 +8,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.powrprof; +module core.sys.windows.powrprof; pragma(lib, "powrprof"); -private import win32.windef; -private import win32.ntdef; +private import core.sys.windows.windef; +private import core.sys.windows.ntdef; // FIXME: look up Windows version support diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d index bd5ee1a91f..ea8f6da6f8 100644 --- a/src/core/sys/windows/prsht.d +++ b/src/core/sys/windows/prsht.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.prsht; +module core.sys.windows.prsht; pragma(lib, "comctl32"); -private import win32.w32api, win32.windef, win32.winuser; +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; const MAXPROPPAGES = 100; diff --git a/src/core/sys/windows/psapi.d b/src/core/sys/windows/psapi.d index d4feccd7f7..1eb25f06f6 100644 --- a/src/core/sys/windows/psapi.d +++ b/src/core/sys/windows/psapi.d @@ -12,11 +12,11 @@ * http://windowssdk.msdn.microsoft.com/library/ms684884.aspx */ -module win32.psapi; +module core.sys.windows.psapi; -private import win32.w32api; -private import win32.winbase; -private import win32.windef; +private import core.sys.windows.w32api; +private import core.sys.windows.winbase; +private import core.sys.windows.windef; struct MODULEINFO { LPVOID lpBaseOfDll; diff --git a/src/core/sys/windows/rapi.d b/src/core/sys/windows/rapi.d index 3b790c3119..358083a318 100644 --- a/src/core/sys/windows/rapi.d +++ b/src/core/sys/windows/rapi.d @@ -8,14 +8,14 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rapi; +module core.sys.windows.rapi; /* Comment from MinGW NOTE: This strictly does not belong in the Win32 API since it's really part of Platform SDK. */ -private import win32.winbase, win32.windef; +private import core.sys.windows.winbase, core.sys.windows.windef; extern (Windows): diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index 8d794e5dc2..32dfe0c349 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.ras; +module core.sys.windows.ras; pragma(lib, "rasapi32"); -private import win32.basetyps, win32.lmcons, win32.w32api, win32.windef; +private import core.sys.windows.basetyps, core.sys.windows.lmcons, core.sys.windows.w32api, core.sys.windows.windef; align(4): diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d index 8401560519..dadf2e9c10 100644 --- a/src/core/sys/windows/rasdlg.d +++ b/src/core/sys/windows/rasdlg.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rasdlg; +module core.sys.windows.rasdlg; -import win32.ras; -private import win32.lmcons, win32.windef; +import core.sys.windows.ras; +private import core.sys.windows.lmcons, core.sys.windows.windef; enum { RASPBDEVENT_AddEntry = 1, diff --git a/src/core/sys/windows/raserror.d b/src/core/sys/windows/raserror.d index fe1c5421a8..6e0d85d9b0 100644 --- a/src/core/sys/windows/raserror.d +++ b/src/core/sys/windows/raserror.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.raserror; +module core.sys.windows.raserror; enum { SUCCESS = 0, diff --git a/src/core/sys/windows/rassapi.d b/src/core/sys/windows/rassapi.d index e6adf71467..175622639d 100644 --- a/src/core/sys/windows/rassapi.d +++ b/src/core/sys/windows/rassapi.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rassapi; +module core.sys.windows.rassapi; -private import win32.lmcons, win32.windef; +private import core.sys.windows.lmcons, core.sys.windows.windef; // FIXME: check types of constants diff --git a/src/core/sys/windows/reason.d b/src/core/sys/windows/reason.d index c94f51b026..e77eab64ef 100644 --- a/src/core/sys/windows/reason.d +++ b/src/core/sys/windows/reason.d @@ -8,12 +8,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.reason; +module core.sys.windows.reason; -private import win32.w32api, win32.windef; +private import core.sys.windows.w32api, core.sys.windows.windef; static assert (_WIN32_WINNT >= 0x501, - "win32.reason is only available on WindowsXP and later"); + "core.sys.windows.reason is only available on WindowsXP and later"); enum : DWORD { diff --git a/src/core/sys/windows/regstr.d b/src/core/sys/windows/regstr.d index 242b645a00..42fd94a220 100644 --- a/src/core/sys/windows/regstr.d +++ b/src/core/sys/windows/regstr.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.regstr; +module core.sys.windows.regstr; // TODO: fix possible conflict with shloj. Sort out NEC_98 issue. -private import win32.windef; +private import core.sys.windows.windef; const REGSTR_MAX_VALUE_LENGTH = 256; diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d index cdbd58268b..3ad9cd2086 100644 --- a/src/core/sys/windows/richedit.d +++ b/src/core/sys/windows/richedit.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.richedit; +module core.sys.windows.richedit; -private import win32.windef, win32.winuser; -private import win32.wingdi; // for LF_FACESIZE +private import core.sys.windows.windef, core.sys.windows.winuser; +private import core.sys.windows.wingdi; // for LF_FACESIZE align(4): diff --git a/src/core/sys/windows/richole.d b/src/core/sys/windows/richole.d index a497802f00..b21a916cc5 100644 --- a/src/core/sys/windows/richole.d +++ b/src/core/sys/windows/richole.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.richole; +module core.sys.windows.richole; -private import win32.objfwd, win32.objidl, win32.ole2, win32.unknwn, - win32.windef; -private import win32.richedit; // for CHARRANGE +private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.windows.ole2, core.sys.windows.unknwn, + core.sys.windows.windef; +private import core.sys.windows.richedit; // for CHARRANGE align(4): diff --git a/src/core/sys/windows/rpc.d b/src/core/sys/windows/rpc.d index 3ae552429b..385cefb919 100644 --- a/src/core/sys/windows/rpc.d +++ b/src/core/sys/windows/rpc.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rpc; +module core.sys.windows.rpc; /* Moved to rpcdecp (duplicate definition). typedef void *I_RPC_HANDLE; @@ -17,11 +17,11 @@ module win32.rpc; RpcRevertToSelf */ -public import win32.unknwn; -public import win32.rpcdce; // also pulls in rpcdcep -public import win32.rpcnsi; -public import win32.rpcnterr; -public import win32.winerror; +public import core.sys.windows.unknwn; +public import core.sys.windows.rpcdce; // also pulls in rpcdcep +public import core.sys.windows.rpcnsi; +public import core.sys.windows.rpcnterr; +public import core.sys.windows.winerror; alias MIDL_user_allocate midl_user_allocate; alias MIDL_user_free midl_user_free; diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d index 1580009299..94530b5d83 100644 --- a/src/core/sys/windows/rpcdce.d +++ b/src/core/sys/windows/rpcdce.d @@ -7,14 +7,14 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rpcdce; +module core.sys.windows.rpcdce; pragma(lib, "Rpcrt4"); // TODO: I think MinGW got this wrong. RPC_UNICODE_SUPPORTED should be // replaced aliases for version(Unicode) -public import win32.rpcdcep; -private import win32.basetyps, win32.w32api, win32.windef; +public import core.sys.windows.rpcdcep; +private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.windef; // FIXME: clean up Windows version support diff --git a/src/core/sys/windows/rpcdce2.d b/src/core/sys/windows/rpcdce2.d index c53fbfa694..92b1ed3a08 100644 --- a/src/core/sys/windows/rpcdce2.d +++ b/src/core/sys/windows/rpcdce2.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rpcdce2; +module core.sys.windows.rpcdce2; -import win32.rpcdce; -private import win32.basetyps; +import core.sys.windows.rpcdce; +private import core.sys.windows.basetyps; // FIXME: deal with RPC_UNICODE_SUPPORTED // FIXME: check types of constants diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d index 7617175f45..008bbd673f 100644 --- a/src/core/sys/windows/rpcdcep.d +++ b/src/core/sys/windows/rpcdcep.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rpcdcep; +module core.sys.windows.rpcdcep; -private import win32.basetyps; -private import win32.w32api; -private import win32.windef; +private import core.sys.windows.basetyps; +private import core.sys.windows.w32api; +private import core.sys.windows.windef; mixin DECLARE_HANDLE!("I_RPC_HANDLE"); alias long RPC_STATUS; diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index 930eb71e2c..bf0ff011fe 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rpcndr; +module core.sys.windows.rpcndr; pragma(lib, "rpcrt4"); /* Translation notes: @@ -18,10 +18,10 @@ pragma(lib, "rpcrt4"); // Macros need to be converted. const __RPCNDR_H_VERSION__= 450; -import win32.rpcnsip; -private import win32.rpc, win32.rpcdce, win32.unknwn, win32.windef; -private import win32.objidl; // for IRpcChannelBuffer, IRpcStubBuffer -private import win32.basetyps; +import core.sys.windows.rpcnsip; +private import core.sys.windows.rpc, core.sys.windows.rpcdce, core.sys.windows.unknwn, core.sys.windows.windef; +private import core.sys.windows.objidl; // for IRpcChannelBuffer, IRpcStubBuffer +private import core.sys.windows.basetyps; extern (Windows): diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d index f6412f2819..2bfde50c1b 100644 --- a/src/core/sys/windows/rpcnsi.d +++ b/src/core/sys/windows/rpcnsi.d @@ -8,12 +8,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rpcnsi; +module core.sys.windows.rpcnsi; pragma(lib, "rpcns4"); -private import win32.basetyps, win32.rpcdcep, win32.rpcnsi, win32.rpcdce, - win32.w32api; -private import win32.windef; // for HANDLE +private import core.sys.windows.basetyps, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi, core.sys.windows.rpcdce, + core.sys.windows.w32api; +private import core.sys.windows.windef; // for HANDLE mixin DECLARE_HANDLE!("RPC_NS_HANDLE"); diff --git a/src/core/sys/windows/rpcnsip.d b/src/core/sys/windows/rpcnsip.d index c018bb0b9d..d5d63f7700 100644 --- a/src/core/sys/windows/rpcnsip.d +++ b/src/core/sys/windows/rpcnsip.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rpcnsip; +module core.sys.windows.rpcnsip; -private import win32.rpcdce, win32.rpcdcep, win32.rpcnsi; +private import core.sys.windows.rpcdce, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi; struct RPC_IMPORT_CONTEXT_P { RPC_NS_HANDLE LookupContext; diff --git a/src/core/sys/windows/rpcnterr.d b/src/core/sys/windows/rpcnterr.d index 3bb346f294..1b543419de 100644 --- a/src/core/sys/windows/rpcnterr.d +++ b/src/core/sys/windows/rpcnterr.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.rpcnterr; +module core.sys.windows.rpcnterr; -import win32.winerror; +import core.sys.windows.winerror; enum : uint { RPC_S_OK = ERROR_SUCCESS, diff --git a/src/core/sys/windows/schannel.d b/src/core/sys/windows/schannel.d index b41a77f308..1e449b0d53 100644 --- a/src/core/sys/windows/schannel.d +++ b/src/core/sys/windows/schannel.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.schannel; +module core.sys.windows.schannel; -import win32.wincrypt; -private import win32.windef; +import core.sys.windows.wincrypt; +private import core.sys.windows.windef; const DWORD SCHANNEL_CRED_VERSION = 4; const SCHANNEL_SHUTDOWN = 1; diff --git a/src/core/sys/windows/secext.d b/src/core/sys/windows/secext.d index f5ec71f36d..647174b9eb 100644 --- a/src/core/sys/windows/secext.d +++ b/src/core/sys/windows/secext.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -// Don't include this file directly, use win32.security instead. -module win32.secext; +// Don't include this file directly, use core.sys.windows.security instead. +module core.sys.windows.secext; pragma(lib, "secur32"); -private import win32.w32api, win32.windef; +private import core.sys.windows.w32api, core.sys.windows.windef; static assert (_WIN32_WINNT >= 0x501, "SecExt is only available on WindowsXP and later"); diff --git a/src/core/sys/windows/security.d b/src/core/sys/windows/security.d index 1aea9bd97b..cefc44c6bc 100644 --- a/src/core/sys/windows/security.d +++ b/src/core/sys/windows/security.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.security; +module core.sys.windows.security; enum :SECURITY_STATUS{ SEC_E_OK = 0, diff --git a/src/core/sys/windows/servprov.d b/src/core/sys/windows/servprov.d index fa8b9e9385..41171b5c43 100644 --- a/src/core/sys/windows/servprov.d +++ b/src/core/sys/windows/servprov.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.servprov; +module core.sys.windows.servprov; -private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; +private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; interface IServiceProvider : IUnknown { HRESULT QueryService(REFGUID, REFIID, void**); diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d index 9df27bc8c8..db7e00ae73 100644 --- a/src/core/sys/windows/setupapi.d +++ b/src/core/sys/windows/setupapi.d @@ -8,12 +8,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.setupapi; +module core.sys.windows.setupapi; pragma(lib, "setupapi"); -private import win32.basetyps, win32.commctrl, win32.prsht, win32.w32api, - win32.winreg, win32.windef; -private import win32.winbase; // for SYSTEMTIME +private import core.sys.windows.basetyps, core.sys.windows.commctrl, core.sys.windows.prsht, core.sys.windows.w32api, + core.sys.windows.winreg, core.sys.windows.windef; +private import core.sys.windows.winbase; // for SYSTEMTIME /*static if(_WIN32_WINNT < _WIN32_WINDOWS) { const UINT _SETUPAPI_VER = _WIN32_WINNT; // SetupAPI version follows Windows NT version diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index 65a4eefdae..6b61c9d99c 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.shellapi; +module core.sys.windows.shellapi; pragma(lib, "shell32"); -private import win32.w32api, win32.windef, win32.basetyps; +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.basetyps; enum : UINT { ABE_LEFT, diff --git a/src/core/sys/windows/shldisp.d b/src/core/sys/windows/shldisp.d index ffef2b3a4c..b6c4818971 100644 --- a/src/core/sys/windows/shldisp.d +++ b/src/core/sys/windows/shldisp.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.shldisp; +module core.sys.windows.shldisp; -private import win32.unknwn, win32.windef, win32.wtypes; +private import core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; // options for IAutoComplete2 const DWORD ACO_AUTOSUGGEST = 0x01; diff --git a/src/core/sys/windows/shlguid.d b/src/core/sys/windows/shlguid.d index 45bab70843..c8f9444afa 100644 --- a/src/core/sys/windows/shlguid.d +++ b/src/core/sys/windows/shlguid.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.shlguid; +module core.sys.windows.shlguid; -private import win32.basetyps, win32.w32api; +private import core.sys.windows.basetyps, core.sys.windows.w32api; // FIXME: clean up Windows version support diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index 5671041785..9426eb8682 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -7,18 +7,18 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.shlobj; +module core.sys.windows.shlobj; pragma(lib, "shell32"); // TODO: fix bitfields // TODO: CMIC_VALID_SEE_FLAGS // SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K -import win32.commctrl, win32.ole2, win32.shlguid, win32.shellapi; -private import win32.prsht, win32.unknwn, win32.w32api, win32.winbase, - win32.winnt, win32.winuser, win32.wtypes, win32.objfwd, win32.objidl; -private import win32.winnetwk; // for NETRESOURCE -private import win32.oaidl : VARIANT; +import core.sys.windows.commctrl, core.sys.windows.ole2, core.sys.windows.shlguid, core.sys.windows.shellapi; +private import core.sys.windows.prsht, core.sys.windows.unknwn, core.sys.windows.w32api, core.sys.windows.winbase, + core.sys.windows.winnt, core.sys.windows.winuser, core.sys.windows.wtypes, core.sys.windows.objfwd, core.sys.windows.objidl; +private import core.sys.windows.winnetwk; // for NETRESOURCE +private import core.sys.windows.oaidl : VARIANT; // FIXME: clean up Windows version support diff --git a/src/core/sys/windows/shlwapi.d b/src/core/sys/windows/shlwapi.d index a72c7971d3..c94d100e2d 100644 --- a/src/core/sys/windows/shlwapi.d +++ b/src/core/sys/windows/shlwapi.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.shlwapi; +module core.sys.windows.shlwapi; pragma(lib, "shlwapi"); /* Changes compared to MinGW: @@ -24,9 +24,9 @@ wnsprintf functions are not included. ((ULONGLONG)( qfe) << 0)) */ -import win32.objbase, win32.shlobj; -private import win32.basetyps, win32.objidl, win32.unknwn, win32.windef, - win32.winbase, win32.winreg; +import core.sys.windows.objbase, core.sys.windows.shlobj; +private import core.sys.windows.basetyps, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.windef, + core.sys.windows.winbase, core.sys.windows.winreg; const DLLVER_PLATFORM_WINDOWS = 0x00000001; const DLLVER_PLATFORM_NT = 0x00000002; diff --git a/src/core/sys/windows/snmp.d b/src/core/sys/windows/snmp.d index 9fb15bd1aa..8ddae7a26a 100644 --- a/src/core/sys/windows/snmp.d +++ b/src/core/sys/windows/snmp.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.snmp; +module core.sys.windows.snmp; -private import win32.windows; +private import core.sys.windows.windows; // These are not documented on MSDN enum { diff --git a/src/core/sys/windows/sql.d b/src/core/sys/windows/sql.d index acc3499ced..a00e1d4330 100644 --- a/src/core/sys/windows/sql.d +++ b/src/core/sys/windows/sql.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.sql; +module core.sys.windows.sql; -public import win32.sqltypes; -private import win32.windef; +public import core.sys.windows.sqltypes; +private import core.sys.windows.windef; const ODBCVER = 0x0351; diff --git a/src/core/sys/windows/sqlext.d b/src/core/sys/windows/sqlext.d index 2f19bc2997..a281b02a41 100644 --- a/src/core/sys/windows/sqlext.d +++ b/src/core/sys/windows/sqlext.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.sqlext; +module core.sys.windows.sqlext; /* Conversion notes: The MinGW file was a horrible mess. All of the #defines were sorted alphabetically, @@ -16,8 +16,8 @@ module win32.sqlext; creating a circular dependency! */ -public import win32.sql; -private import win32.windef; +public import core.sys.windows.sql; +private import core.sys.windows.windef; const SQL_SPEC_MAJOR = 3; const SQL_SPEC_MINOR = 51; diff --git a/src/core/sys/windows/sqltypes.d b/src/core/sys/windows/sqltypes.d index 4d3285c90e..5eb92f2912 100644 --- a/src/core/sys/windows/sqltypes.d +++ b/src/core/sys/windows/sqltypes.d @@ -7,14 +7,14 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.sqltypes; +module core.sys.windows.sqltypes; /* Conversion notes: It's assumed that ODBC >= 0x0300. */ -private import win32.windef; -private import win32.basetyps; // for GUID +private import core.sys.windows.windef; +private import core.sys.windows.basetyps; // for GUID alias byte SCHAR, SQLSCHAR; alias int SDWORD, SLONG, SQLINTEGER; diff --git a/src/core/sys/windows/sqlucode.d b/src/core/sys/windows/sqlucode.d index 74dba183fc..b405669265 100644 --- a/src/core/sys/windows/sqlucode.d +++ b/src/core/sys/windows/sqlucode.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.sqlucode; +module core.sys.windows.sqlucode; -private import win32.sqlext; +private import core.sys.windows.sqlext; const SQL_WCHAR = -8; const SQL_WVARCHAR = -9; diff --git a/src/core/sys/windows/sspi.d b/src/core/sys/windows/sspi.d index 0859c13a7d..60c7677bb2 100644 --- a/src/core/sys/windows/sspi.d +++ b/src/core/sys/windows/sspi.d @@ -8,14 +8,14 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.sspi; +module core.sys.windows.sspi; -import win32.windef; -import win32.ntdef; -import win32.w32api; -import win32.security; -import win32.ntsecapi; -import win32.subauth; +import core.sys.windows.windef; +import core.sys.windows.ntdef; +import core.sys.windows.w32api; +import core.sys.windows.security; +import core.sys.windows.ntsecapi; +import core.sys.windows.subauth; enum :ULONG{ SECPKG_CRED_INBOUND = 1, diff --git a/src/core/sys/windows/subauth.d b/src/core/sys/windows/subauth.d index 689e89fba3..17699fed5e 100644 --- a/src/core/sys/windows/subauth.d +++ b/src/core/sys/windows/subauth.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.subauth; +module core.sys.windows.subauth; -private import win32.ntdef, win32.windef; +private import core.sys.windows.ntdef, core.sys.windows.windef; /+ alias LONG NTSTATUS; diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index f063470771..922aeae56d 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -7,9 +7,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.tlhelp32; +module core.sys.windows.tlhelp32; -private import win32.windef; +private import core.sys.windows.windef; enum : uint { HF32_DEFAULT = 1, diff --git a/src/core/sys/windows/tmschema.d b/src/core/sys/windows/tmschema.d index c61d3716ed..9173a08098 100644 --- a/src/core/sys/windows/tmschema.d +++ b/src/core/sys/windows/tmschema.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.tmschema; +module core.sys.windows.tmschema; /* BUTTON parts */ enum { diff --git a/src/core/sys/windows/unknwn.d b/src/core/sys/windows/unknwn.d index de6278b3c6..5f8e599245 100644 --- a/src/core/sys/windows/unknwn.d +++ b/src/core/sys/windows/unknwn.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.unknwn; +module core.sys.windows.unknwn; -import win32.objfwd, win32.windef, win32.wtypes; -private import win32.basetyps; +import core.sys.windows.objfwd, core.sys.windows.windef, core.sys.windows.wtypes; +private import core.sys.windows.basetyps; extern (Windows) { void* MIDL_user_allocate(size_t); diff --git a/src/core/sys/windows/uuid.d b/src/core/sys/windows/uuid.d index 670550d956..c56a9d6bbc 100644 --- a/src/core/sys/windows/uuid.d +++ b/src/core/sys/windows/uuid.d @@ -1,6 +1,6 @@ -module win32.uuid; +module core.sys.windows.uuid; -import win32.basetyps; +import core.sys.windows.basetyps; export extern(C) { diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index 019c93ce57..7fa1fdd0a9 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -7,17 +7,17 @@ * Placed into public domain * \***********************************************************************/ -module win32.vfw; +module core.sys.windows.vfw; pragma(lib, "vfw32"); private import - win32.commdlg, - win32.wingdi, - win32.mmsystem, - win32.unknwn, - win32.w32api, - win32.windef, - win32.winuser; + core.sys.windows.commdlg, + core.sys.windows.wingdi, + core.sys.windows.mmsystem, + core.sys.windows.unknwn, + core.sys.windows.w32api, + core.sys.windows.windef, + core.sys.windows.winuser; extern(Windows) { DWORD VideoForWindowsVersion(); diff --git a/src/core/sys/windows/w32api.d b/src/core/sys/windows/w32api.d index 18478f3cec..f7a2357dec 100644 --- a/src/core/sys/windows/w32api.d +++ b/src/core/sys/windows/w32api.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.w32api; +module core.sys.windows.w32api; enum __W32API_VERSION = 3.17; enum __W32API_MAJOR_VERSION = 3; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index 9ad30b7944..dceba57b5a 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winbase; +module core.sys.windows.winbase; pragma(lib, "kernel32"); /** @@ -53,8 +53,8 @@ int wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); */ -import win32.windef, win32.winver; -private import win32.basetyps, win32.w32api, win32.winnt; +import core.sys.windows.windef, core.sys.windows.winver; +private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winnt; // FIXME: alias void va_list; diff --git a/src/core/sys/windows/winber.d b/src/core/sys/windows/winber.d index 3e0e426dd1..97c03e4870 100644 --- a/src/core/sys/windows/winber.d +++ b/src/core/sys/windows/winber.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winber; +module core.sys.windows.winber; /* Comment from MinGW winber.h - Header file for the Windows LDAP Basic Encoding Rules API @@ -27,7 +27,7 @@ module win32.winber; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ - import win32.basetsd; + import core.sys.windows.basetsd; /* Opaque structure * http://msdn.microsoft.com/library/en-us/ldap/ldap/berelement.asp diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index f2fdbc5a08..dec40aa840 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.wincon; +module core.sys.windows.wincon; pragma(lib, "kernel32"); -private import win32.w32api, win32.windef; +private import core.sys.windows.w32api, core.sys.windows.windef; // FIXME: clean up Windows version support diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index 6a2472bd64..872d5da29b 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -8,9 +8,9 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.wincrypt; +module core.sys.windows.wincrypt; -private import win32.w32api, win32.winbase, win32.windef; +private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; /* FIXME: * Types of some constants diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index 549a56a7dc..8503f608ea 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.windef; +module core.sys.windows.windef; -public import win32.winnt; -private import win32.w32api; +public import core.sys.windows.winnt; +private import core.sys.windows.w32api; const size_t MAX_PATH = 260; diff --git a/src/core/sys/windows/windows.d b/src/core/sys/windows/windows.d index 46508ea0cf..82a468b721 100644 --- a/src/core/sys/windows/windows.d +++ b/src/core/sys/windows/windows.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.windows; +module core.sys.windows.windows; /* windows.h - main header file for the Win32 API @@ -22,33 +22,33 @@ module win32.windows; */ -public import win32.w32api; -public import win32.core; +public import core.sys.windows.w32api; +public import core.sys.windows.core; -public import win32.cderr; -public import win32.dde; -public import win32.ddeml; -public import win32.dlgs; -public import win32.imm; -public import win32.lzexpand; -public import win32.mmsystem; -public import win32.nb30; -public import win32.winsvc; +public import core.sys.windows.cderr; +public import core.sys.windows.dde; +public import core.sys.windows.ddeml; +public import core.sys.windows.dlgs; +public import core.sys.windows.imm; +public import core.sys.windows.lzexpand; +public import core.sys.windows.mmsystem; +public import core.sys.windows.nb30; +public import core.sys.windows.winsvc; -public import win32.rpc; -public import win32.shellapi; -public import win32.winperf; -public import win32.commdlg; -public import win32.winspool; -public import win32.ole2; +public import core.sys.windows.rpc; +public import core.sys.windows.shellapi; +public import core.sys.windows.winperf; +public import core.sys.windows.commdlg; +public import core.sys.windows.winspool; +public import core.sys.windows.ole2; // Select correct version of winsock. Importing the incorrect // module will cause a static assert to prevent problems later on. version (Win32_Winsock1) { - public import win32.winsock; + public import core.sys.windows.winsock; } else { - public import win32.winsock2; - public import win32.ws2tcpip; + public import core.sys.windows.winsock2; + public import core.sys.windows.ws2tcpip; } /+ diff --git a/src/core/sys/windows/winerror.d b/src/core/sys/windows/winerror.d index ce2cc01e37..abd2cee342 100644 --- a/src/core/sys/windows/winerror.d +++ b/src/core/sys/windows/winerror.d @@ -7,15 +7,15 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winerror; +module core.sys.windows.winerror; /* Comments from the Mingw header: * WAIT_TIMEOUT is also defined in winbase.h */ -private import win32.windef; +private import core.sys.windows.windef; -alias int SCODE; // was in win32.wtypes. +alias int SCODE; // was in core.sys.windows.wtypes. enum : uint { ERROR_SUCCESS = 0, diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index 303eb4e942..bc4f6c4f9d 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -7,12 +7,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.wingdi; +module core.sys.windows.wingdi; pragma(lib, "gdi32"); // FIXME: clean up Windows version support -private import win32.w32api, win32.windef, win32.winver; +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winver; // BITMAPINFOHEADER.biCompression enum : DWORD { @@ -60,7 +60,7 @@ enum { } //--- -/* FIXME: move to win32.winuser ? */ +/* FIXME: move to core.sys.windows.winuser ? */ // DrawIconEx() enum : UINT { DI_MASK = 1, @@ -1160,7 +1160,7 @@ enum : BYTE { PC_NOCOLLAPSE = 4 } -/* FIXME: move to win32.commctrl ? */ +/* FIXME: move to core.sys.windows.commctrl ? */ // ImageList const COLORREF CLR_NONE = 0xffffffff, diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index 9cbfd176a4..33be5679c6 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -8,12 +8,12 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.wininet; +module core.sys.windows.wininet; pragma(lib, "wininet"); // FIXME: check types and grouping of constants -import win32.windows; +import core.sys.windows.windows; enum { INTERNET_INVALID_PORT_NUMBER = 0, diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d index 8c28b77207..a1f785bde2 100644 --- a/src/core/sys/windows/winioctl.d +++ b/src/core/sys/windows/winioctl.d @@ -8,11 +8,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winioctl; +module core.sys.windows.winioctl; // FIXME: check types of some constants -private import win32.basetyps, win32.windef; +private import core.sys.windows.basetyps, core.sys.windows.windef; const size_t HIST_NO_OF_BUCKETS = 24, diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index ed10f1a9dd..8749bee6a8 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -8,7 +8,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winldap; +module core.sys.windows.winldap; /* Comment from MinGW winldap.h - Header file for the Windows LDAP API @@ -27,8 +27,8 @@ module win32.winldap; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ -import win32.schannel, win32.winber; -private import win32.wincrypt, win32.windef; +import core.sys.windows.schannel, core.sys.windows.winber; +private import core.sys.windows.wincrypt, core.sys.windows.windef; version(Tango){ private import tango.stdc.stdio; } diff --git a/src/core/sys/windows/winnetwk.d b/src/core/sys/windows/winnetwk.d index faf49a36e6..dcda4c0adb 100644 --- a/src/core/sys/windows/winnetwk.d +++ b/src/core/sys/windows/winnetwk.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winnetwk; +module core.sys.windows.winnetwk; pragma(lib, "mpr"); -private import win32.winbase, win32.winerror, win32.winnt; +private import core.sys.windows.winbase, core.sys.windows.winerror, core.sys.windows.winnt; enum : DWORD { WNNC_NET_MSNET = 0x00010000, diff --git a/src/core/sys/windows/winnls.d b/src/core/sys/windows/winnls.d index abf357c8fe..2c53248cca 100644 --- a/src/core/sys/windows/winnls.d +++ b/src/core/sys/windows/winnls.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winnls; +module core.sys.windows.winnls; pragma(lib, "kernel32"); -private import win32.basetsd, win32.w32api, win32.winbase, win32.windef; +private import core.sys.windows.basetsd, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; alias DWORD LCTYPE, CALTYPE, CALID, LGRPID, GEOID, GEOTYPE, GEOCLASS; diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index e4e72a2a84..d91cba9737 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winnt; +module core.sys.windows.winnt; -public import win32.basetsd, win32.windef, win32.winerror; -private import win32.w32api; +public import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winerror; +private import core.sys.windows.w32api; /* Translation Notes: The following macros are unneeded for D: @@ -1953,8 +1953,8 @@ ULONG WT_SET_MAX_THREADPOOL_THREADS(ref ULONG Flags, ushort Limit) { return Flags |= Limit << 16; } -import win32.basetyps; -/* also in win32.basetyps +import core.sys.windows.basetyps; +/* also in core.sys.windows.basetyps struct GUID { uint Data1; ushort Data2; diff --git a/src/core/sys/windows/winperf.d b/src/core/sys/windows/winperf.d index 558eed083f..0cc6874d9b 100644 --- a/src/core/sys/windows/winperf.d +++ b/src/core/sys/windows/winperf.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winperf; +module core.sys.windows.winperf; -import win32.windef; -import win32.winbase; // for SYSTEMTIME +import core.sys.windows.windef; +import core.sys.windows.winbase; // for SYSTEMTIME const PERF_DATA_VERSION=1; const PERF_DATA_REVISION=1; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index 1924428fa3..d7e8f4a135 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winreg; +module core.sys.windows.winreg; pragma(lib, "advapi32"); -private import win32.w32api, win32.winbase, win32.windef; +private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; enum : HKEY { // for some reason, DMD errors if I don't give all the values explicitly HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d index 8d6cb0d908..39a61af540 100644 --- a/src/core/sys/windows/winspool.d +++ b/src/core/sys/windows/winspool.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winspool; +module core.sys.windows.winspool; pragma(lib, "winspool"); -private import win32.w32api, win32.windef, win32.wingdi; -private import win32.winbase; // for SYSTEMTIME +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.wingdi; +private import core.sys.windows.winbase; // for SYSTEMTIME // FIXME: clean up Windows version support diff --git a/src/core/sys/windows/winsvc.d b/src/core/sys/windows/winsvc.d index 5cde8a4dff..d7ea7b7bd6 100644 --- a/src/core/sys/windows/winsvc.d +++ b/src/core/sys/windows/winsvc.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winsvc; +module core.sys.windows.winsvc; pragma(lib, "advapi32"); -private import win32.w32api, win32.windef; +private import core.sys.windows.w32api, core.sys.windows.windef; // FIXME: check Windows version support diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 137cc410d2..981384341e 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -7,7 +7,7 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winuser; +module core.sys.windows.winuser; pragma(lib, "user32"); // Conversion Notes: @@ -20,8 +20,8 @@ pragma(lib, "user32"); //#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL)) //#define DefHookProc(c, p, lp, h) CallNextHookEx((HHOOK)*h, c, p, lp) -private import win32.w32api, win32.winbase, win32.wingdi; -private import win32.windef; // for HMONITOR +private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.wingdi; +private import core.sys.windows.windef; // for HMONITOR // FIXME: clean up Windows version support diff --git a/src/core/sys/windows/winver.d b/src/core/sys/windows/winver.d index d27e1c3a17..8dc9ce4edc 100644 --- a/src/core/sys/windows/winver.d +++ b/src/core/sys/windows/winver.d @@ -8,10 +8,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.winver; +module core.sys.windows.winver; pragma(lib, "version"); -private import win32.windef; +private import core.sys.windows.windef; // FIXME: type weirdness enum { diff --git a/src/core/sys/windows/ws2tcpip.d b/src/core/sys/windows/ws2tcpip.d index f82243861c..0d66f5ade9 100644 --- a/src/core/sys/windows/ws2tcpip.d +++ b/src/core/sys/windows/ws2tcpip.d @@ -8,13 +8,13 @@ * Placed into public domain * \***********************************************************************/ -module win32.ws2tcpip; +module core.sys.windows.ws2tcpip; -import win32.w32api; -//import win32.winbase; -import win32.windef; -//import win32.basetyps; -import win32.winsock2; +import core.sys.windows.w32api; +//import core.sys.windows.winbase; +import core.sys.windows.windef; +//import core.sys.windows.basetyps; +import core.sys.windows.winsock2; enum { IP_OPTIONS = 1, diff --git a/src/core/sys/windows/wtsapi32.d b/src/core/sys/windows/wtsapi32.d index b89d0d9c6c..ff0a69fbe4 100644 --- a/src/core/sys/windows/wtsapi32.d +++ b/src/core/sys/windows/wtsapi32.d @@ -7,10 +7,10 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.wtsapi32; +module core.sys.windows.wtsapi32; pragma(lib, "wtsapi32"); -private import win32.w32api; -import win32.windef; +private import core.sys.windows.w32api; +import core.sys.windows.windef; enum { WTS_CURRENT_SERVER = null, diff --git a/src/core/sys/windows/wtypes.d b/src/core/sys/windows/wtypes.d index 4ae7dd7cdc..026ea3676a 100644 --- a/src/core/sys/windows/wtypes.d +++ b/src/core/sys/windows/wtypes.d @@ -7,11 +7,11 @@ * * * Placed into public domain * \***********************************************************************/ -module win32.wtypes; +module core.sys.windows.wtypes; -import win32.rpc, win32.rpcndr; -private import win32.windef; -private import win32.uuid; // for GUID_NULL +import core.sys.windows.rpc, core.sys.windows.rpcndr; +private import core.sys.windows.windef; +private import core.sys.windows.uuid; // for GUID_NULL alias GUID_NULL IID_NULL, CLSID_NULL; From fdfe2b42e58d71314b3f1633090d71605e5111d4 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 15:20:04 +0000 Subject: [PATCH 110/768] Add header comment conversion script --- winhlp/hdrconv/hdrconv.d | 100 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 winhlp/hdrconv/hdrconv.d diff --git a/winhlp/hdrconv/hdrconv.d b/winhlp/hdrconv/hdrconv.d new file mode 100644 index 0000000000..8025fac663 --- /dev/null +++ b/winhlp/hdrconv/hdrconv.d @@ -0,0 +1,100 @@ +import ae.utils.aa; + +import std.exception; +import std.file; +import std.path; +import std.range.primitives; +import std.stdio; +import std.string; + +void main() +{ + foreach (de; `..\..\src\core\sys\windows`.dirEntries("*.d", SpanMode.shallow)) + { + scope(failure) stderr.writeln("Error with file: ", de.name); + auto lines = de.name.readText.splitLines(); + if (lines.front != `/***********************************************************************\`) + continue; + lines.popFront(); + + string[] description; + OrderedMap!(string, string) fields; + + while (!lines.empty) + { + auto line = lines.front; lines.popFront(); + auto oline = line; + scope(failure) stderr.writeln("Error with line: ", oline); + + if (line == `\***********************************************************************/`) + break; + + enforce(line[0] == '*' && line[$-1] == '*'); + line = line[1..$-1].strip(); + + if (line == de.baseName) + {} + else + if (line == "Placed into public domain") + fields["License"] = line; + else + if (line.startsWith("by ")) + fields["Authors"] = line[3..$]; + else + if (line == "Windows API header module" + || line == "Translated from MinGW Windows headers" + || line.startsWith("Translated from MinGW API for MS-Windows ") + ) + description ~= line; + else + if (!line.length) + {} //f.writeln(" *"); + else + { + description ~= line; + stderr.writeln("Unknown header line: " ~ line); + } + } + + auto f = File("temp.d", "wt"); + f.writeln("/**"); + foreach (line; description) + { + f.writeln(" * ", line); + f.writeln(" *"); + } + foreach (name, value; fields) + f.writeln(" * ", name, ": ", value); + f.writeln(" * Source: $(DRUNTIMESRC src/core/sys/windows/_", de.baseName, ")"); + f.writeln(" */"); + foreach (l; lines) + f.writeln(l); + f.close(); + "temp.d".rename("out/" ~ de.baseName); + //break; + } +} + + +/***********************************************************************\ +* docobj.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ + + +/** + * This module provides OS specific helper function for DLL support + * + * Copyright: Copyright Digital Mars 2010 - 2012. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). + * (See accompanying file LICENSE) + * Authors: Rainer Schuetze + * Source: $(DRUNTIMESRC src/core/sys/windows/_dll.d) + */ + From ad76ce0c49555bc2f15de4a77f2d620ff5598329 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 20:02:27 +0000 Subject: [PATCH 111/768] Convert header comments to conform to Druntime style --- src/core/sys/windows/accctrl.d | 19 +- src/core/sys/windows/aclapi.d | 19 +- src/core/sys/windows/aclui.d | 19 +- src/core/sys/windows/basetsd.d | 19 +- src/core/sys/windows/basetyps.d | 17 +- src/core/sys/windows/cderr.d | 17 +- src/core/sys/windows/cguid.d | 23 +- src/core/sys/windows/comcat.d | 19 +- src/core/sys/windows/commctrl.d | 17 +- src/core/sys/windows/commdlg.d | 17 +- src/core/sys/windows/core.d | 13 +- src/core/sys/windows/cpl.d | 19 +- src/core/sys/windows/cplext.d | 19 +- src/core/sys/windows/custcntl.d | 19 +- src/core/sys/windows/dbt.d | 19 +- src/core/sys/windows/dde.d | 19 +- src/core/sys/windows/ddeml.d | 19 +- src/core/sys/windows/dhcpcsdk.d | 19 +- src/core/sys/windows/dlgs.d | 19 +- src/core/sys/windows/docobj.d | 17 +- src/core/sys/windows/errorrep.d | 19 +- src/core/sys/windows/exdisp.d | 17 +- src/core/sys/windows/exdispid.d | 19 +- src/core/sys/windows/httpext.d | 17 +- src/core/sys/windows/idispids.d | 19 +- src/core/sys/windows/imagehlp.d | 19 +- src/core/sys/windows/imm.d | 17 +- src/core/sys/windows/intshcut.d | 19 +- src/core/sys/windows/ipexport.d | 19 +- src/core/sys/windows/iphlpapi.d | 19 +- src/core/sys/windows/ipifcons.d | 19 +- src/core/sys/windows/iprtrmib.d | 19 +- src/core/sys/windows/iptypes.d | 19 +- src/core/sys/windows/isguids.d | 19 +- src/core/sys/windows/lm.d | 17 +- src/core/sys/windows/lmaccess.d | 19 +- src/core/sys/windows/lmalert.d | 17 +- src/core/sys/windows/lmapibuf.d | 17 +- src/core/sys/windows/lmat.d | 17 +- src/core/sys/windows/lmaudit.d | 19 +- src/core/sys/windows/lmbrowsr.d | 17 +- src/core/sys/windows/lmchdev.d | 17 +- src/core/sys/windows/lmconfig.d | 17 +- src/core/sys/windows/lmcons.d | 17 +- src/core/sys/windows/lmerr.d | 17 +- src/core/sys/windows/lmerrlog.d | 19 +- src/core/sys/windows/lmmsg.d | 17 +- src/core/sys/windows/lmremutl.d | 17 +- src/core/sys/windows/lmrepl.d | 19 +- src/core/sys/windows/lmserver.d | 17 +- src/core/sys/windows/lmshare.d | 19 +- src/core/sys/windows/lmsname.d | 17 +- src/core/sys/windows/lmstats.d | 17 +- src/core/sys/windows/lmsvc.d | 17 +- src/core/sys/windows/lmuse.d | 17 +- src/core/sys/windows/lmuseflg.d | 31 +- src/core/sys/windows/lmwksta.d | 17 +- src/core/sys/windows/lzexpand.d | 17 +- src/core/sys/windows/mapi.d | 19 +- src/core/sys/windows/mciavi.d | 19 +- src/core/sys/windows/mcx.d | 19 +- src/core/sys/windows/mgmtapi.d | 19 +- src/core/sys/windows/mmsystem.d | 17 +- src/core/sys/windows/msacm.d | 345 ++++--- src/core/sys/windows/mshtml.d | 17 +- src/core/sys/windows/mswsock.d | 19 +- src/core/sys/windows/nb30.d | 19 +- src/core/sys/windows/nddeapi.d | 323 +++--- src/core/sys/windows/nspapi.d | 295 +++--- src/core/sys/windows/ntdef.d | 159 ++- src/core/sys/windows/ntdll.d | 43 +- src/core/sys/windows/ntldap.d | 115 ++- src/core/sys/windows/ntsecapi.d | 19 +- src/core/sys/windows/ntsecpkg.d | 891 ++++++++-------- src/core/sys/windows/oaidl.d | 17 +- src/core/sys/windows/objbase.d | 17 +- src/core/sys/windows/objfwd.d | 17 +- src/core/sys/windows/objidl.d | 17 +- src/core/sys/windows/objsafe.d | 45 +- src/core/sys/windows/ocidl.d | 20 +- src/core/sys/windows/odbcinst.d | 17 +- src/core/sys/windows/ole.d | 723 +++++++------ src/core/sys/windows/ole2.d | 17 +- src/core/sys/windows/ole2ver.d | 17 +- src/core/sys/windows/oleacc.d | 17 +- src/core/sys/windows/oleauto.d | 17 +- src/core/sys/windows/olectl.d | 17 +- src/core/sys/windows/olectlid.d | 17 +- src/core/sys/windows/oledlg.d | 17 +- src/core/sys/windows/oleidl.d | 17 +- src/core/sys/windows/pbt.d | 19 +- src/core/sys/windows/powrprof.d | 19 +- src/core/sys/windows/prsht.d | 19 +- src/core/sys/windows/psapi.d | 17 +- src/core/sys/windows/rapi.d | 19 +- src/core/sys/windows/ras.d | 17 +- src/core/sys/windows/rasdlg.d | 19 +- src/core/sys/windows/raserror.d | 17 +- src/core/sys/windows/rassapi.d | 19 +- src/core/sys/windows/reason.d | 19 +- src/core/sys/windows/regstr.d | 17 +- src/core/sys/windows/richedit.d | 17 +- src/core/sys/windows/richole.d | 17 +- src/core/sys/windows/rpc.d | 17 +- src/core/sys/windows/rpcdce.d | 17 +- src/core/sys/windows/rpcdce2.d | 17 +- src/core/sys/windows/rpcdcep.d | 17 +- src/core/sys/windows/rpcndr.d | 17 +- src/core/sys/windows/rpcnsi.d | 20 +- src/core/sys/windows/rpcnsip.d | 17 +- src/core/sys/windows/rpcnterr.d | 17 +- src/core/sys/windows/schannel.d | 19 +- src/core/sys/windows/secext.d | 103 +- src/core/sys/windows/security.d | 91 +- src/core/sys/windows/servprov.d | 17 +- src/core/sys/windows/setupapi.d | 19 +- src/core/sys/windows/shellapi.d | 19 +- src/core/sys/windows/shldisp.d | 17 +- src/core/sys/windows/shlguid.d | 17 +- src/core/sys/windows/shlobj.d | 17 +- src/core/sys/windows/shlwapi.d | 17 +- src/core/sys/windows/snmp.d | 19 +- src/core/sys/windows/sql.d | 21 +- src/core/sys/windows/sqlext.d | 17 +- src/core/sys/windows/sqltypes.d | 17 +- src/core/sys/windows/sqlucode.d | 17 +- src/core/sys/windows/sspi.d | 759 +++++++------- src/core/sys/windows/subauth.d | 19 +- src/core/sys/windows/tlhelp32.d | 337 +++--- src/core/sys/windows/tmschema.d | 1515 ++++++++++++++------------- src/core/sys/windows/unknwn.d | 17 +- src/core/sys/windows/vfw.d | 18 +- src/core/sys/windows/w32api.d | 19 +- src/core/sys/windows/winbase.d | 17 +- src/core/sys/windows/winber.d | 19 +- src/core/sys/windows/wincon.d | 17 +- src/core/sys/windows/wincrypt.d | 19 +- src/core/sys/windows/windef.d | 19 +- src/core/sys/windows/windows.d | 17 +- src/core/sys/windows/winerror.d | 17 +- src/core/sys/windows/wingdi.d | 17 +- src/core/sys/windows/winhttp.d | 1687 +++++++++++++++---------------- src/core/sys/windows/wininet.d | 19 +- src/core/sys/windows/winioctl.d | 19 +- src/core/sys/windows/winldap.d | 19 +- src/core/sys/windows/winnetwk.d | 19 +- src/core/sys/windows/winnls.d | 19 +- src/core/sys/windows/winnt.d | 17 +- src/core/sys/windows/winperf.d | 17 +- src/core/sys/windows/winreg.d | 19 +- src/core/sys/windows/winspool.d | 17 +- src/core/sys/windows/winsvc.d | 19 +- src/core/sys/windows/winuser.d | 17 +- src/core/sys/windows/winver.d | 19 +- src/core/sys/windows/ws2tcpip.d | 561 +++++----- src/core/sys/windows/wtsapi32.d | 17 +- src/core/sys/windows/wtypes.d | 17 +- 157 files changed, 5191 insertions(+), 5345 deletions(-) diff --git a/src/core/sys/windows/accctrl.d b/src/core/sys/windows/accctrl.d index 968993ada1..bb1d12c9a5 100644 --- a/src/core/sys/windows/accctrl.d +++ b/src/core/sys/windows/accctrl.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* accctrl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_accctrl.d) + */ module core.sys.windows.accctrl; private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/aclapi.d b/src/core/sys/windows/aclapi.d index cdfcb44a56..43c6439154 100644 --- a/src/core/sys/windows/aclapi.d +++ b/src/core/sys/windows/aclapi.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* aclapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_aclapi.d) + */ module core.sys.windows.aclapi; pragma(lib, "advapi32"); diff --git a/src/core/sys/windows/aclui.d b/src/core/sys/windows/aclui.d index 9e1217e729..aa3ae8c5cb 100644 --- a/src/core/sys/windows/aclui.d +++ b/src/core/sys/windows/aclui.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* aclui.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_aclui.d) + */ module core.sys.windows.aclui; pragma(lib, "aclui"); diff --git a/src/core/sys/windows/basetsd.d b/src/core/sys/windows/basetsd.d index a785b366d4..e11d5d895b 100644 --- a/src/core/sys/windows/basetsd.d +++ b/src/core/sys/windows/basetsd.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* basetsd.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.12 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.12 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_basetsd.d) + */ module core.sys.windows.basetsd; /* This template is used in these modules to declare constant pointer types, diff --git a/src/core/sys/windows/basetyps.d b/src/core/sys/windows/basetyps.d index cb5456e9ed..27c57eea5c 100644 --- a/src/core/sys/windows/basetyps.d +++ b/src/core/sys/windows/basetyps.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* basetyps.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_basetyps.d) + */ module core.sys.windows.basetyps; private import core.sys.windows.windef, core.sys.windows.basetsd; diff --git a/src/core/sys/windows/cderr.d b/src/core/sys/windows/cderr.d index 944f6e0a67..7b1153bb44 100644 --- a/src/core/sys/windows/cderr.d +++ b/src/core/sys/windows/cderr.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* cderr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_cderr.d) + */ module core.sys.windows.cderr; enum { diff --git a/src/core/sys/windows/cguid.d b/src/core/sys/windows/cguid.d index ae3ca4429b..62f3fd4236 100644 --- a/src/core/sys/windows/cguid.d +++ b/src/core/sys/windows/cguid.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* cguid.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.cguid; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_cguid.d) + */ +module core.sys.windows.cguid; + +private import core.sys.windows.basetyps; -private import core.sys.windows.basetyps; - diff --git a/src/core/sys/windows/comcat.d b/src/core/sys/windows/comcat.d index c7633200e3..1f08232d83 100644 --- a/src/core/sys/windows/comcat.d +++ b/src/core/sys/windows/comcat.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* comcat.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_comcat.d) + */ module core.sys.windows.comcat; import core.sys.windows.windows, core.sys.windows.ole2; diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 4f7e7e37f6..730fa8616e 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* commctrl.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.12 * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.12 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_commctrl.d) + */ module core.sys.windows.commctrl; pragma(lib, "comctl32"); diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index b94492ae0e..c9144a053d 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* commdlg.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.12 * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.12 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_commdlg.d) + */ module core.sys.windows.commdlg; pragma(lib, "comdlg32"); diff --git a/src/core/sys/windows/core.d b/src/core/sys/windows/core.d index 1803636a4e..10b0bc164e 100644 --- a/src/core/sys/windows/core.d +++ b/src/core/sys/windows/core.d @@ -1,10 +1,9 @@ -/***********************************************************************\ -* core.d * -* * -* Helper module for the Windows API * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Helper module for the Windows API + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_core.d) + */ module core.sys.windows.core; /** diff --git a/src/core/sys/windows/cpl.d b/src/core/sys/windows/cpl.d index 2869001d08..ee1d80a99b 100644 --- a/src/core/sys/windows/cpl.d +++ b/src/core/sys/windows/cpl.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* cpl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_cpl.d) + */ module core.sys.windows.cpl; private import core.sys.windows.windef, core.sys.windows.winuser; diff --git a/src/core/sys/windows/cplext.d b/src/core/sys/windows/cplext.d index ff2b9c47f2..d84e97fd31 100644 --- a/src/core/sys/windows/cplext.d +++ b/src/core/sys/windows/cplext.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* cplext.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_cplext.d) + */ module core.sys.windows.cplext; enum : uint { diff --git a/src/core/sys/windows/custcntl.d b/src/core/sys/windows/custcntl.d index 0a607f4e21..411cd8806a 100644 --- a/src/core/sys/windows/custcntl.d +++ b/src/core/sys/windows/custcntl.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* custcntl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_custcntl.d) + */ module core.sys.windows.custcntl; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/dbt.d b/src/core/sys/windows/dbt.d index b0a7208cca..50d1f2dd03 100644 --- a/src/core/sys/windows/dbt.d +++ b/src/core/sys/windows/dbt.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* dbt.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Vladimir Vlasov * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Vladimir Vlasov + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_dbt.d) + */ module core.sys.windows.dbt; import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/dde.d b/src/core/sys/windows/dde.d index 17eaa88ba2..c5e6a1b33b 100644 --- a/src/core/sys/windows/dde.d +++ b/src/core/sys/windows/dde.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* dde.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_dde.d) + */ module core.sys.windows.dde; pragma(lib, "user32"); diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index 88aecb349e..749e8505a3 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* ddeml.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ddeml.d) + */ module core.sys.windows.ddeml; pragma(lib, "user32"); diff --git a/src/core/sys/windows/dhcpcsdk.d b/src/core/sys/windows/dhcpcsdk.d index ee7ff05964..96dda90b79 100644 --- a/src/core/sys/windows/dhcpcsdk.d +++ b/src/core/sys/windows/dhcpcsdk.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* dhcpcsdk.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_dhcpcsdk.d) + */ module core.sys.windows.dhcpcsdk; private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/dlgs.d b/src/core/sys/windows/dlgs.d index 916ad6cadc..48ec59212e 100644 --- a/src/core/sys/windows/dlgs.d +++ b/src/core/sys/windows/dlgs.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* dlgs.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_dlgs.d) + */ module core.sys.windows.dlgs; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/docobj.d b/src/core/sys/windows/docobj.d index c08b6d015a..8205f47f2d 100644 --- a/src/core/sys/windows/docobj.d +++ b/src/core/sys/windows/docobj.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* docobj.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_docobj.d) + */ module core.sys.windows.docobj; private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.objidl, core.sys.windows.oleidl, diff --git a/src/core/sys/windows/errorrep.d b/src/core/sys/windows/errorrep.d index 5d6a65c7b4..a275671faf 100644 --- a/src/core/sys/windows/errorrep.d +++ b/src/core/sys/windows/errorrep.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* errorrep.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_errorrep.d) + */ module core.sys.windows.errorrep; private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/exdisp.d b/src/core/sys/windows/exdisp.d index b00019820d..61cd6779ef 100644 --- a/src/core/sys/windows/exdisp.d +++ b/src/core/sys/windows/exdisp.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* exdisp.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_exdisp.d) + */ module core.sys.windows.exdisp; import core.sys.windows.docobj, core.sys.windows.oaidl, core.sys.windows.ocidl; diff --git a/src/core/sys/windows/exdispid.d b/src/core/sys/windows/exdispid.d index 4972c90f87..3c417aa090 100644 --- a/src/core/sys/windows/exdispid.d +++ b/src/core/sys/windows/exdispid.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* exdispid.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_exdispid.d) + */ module core.sys.windows.exdispid; enum : int { diff --git a/src/core/sys/windows/httpext.d b/src/core/sys/windows/httpext.d index 77fc459e1d..60a7d4d0a8 100644 --- a/src/core/sys/windows/httpext.d +++ b/src/core/sys/windows/httpext.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* httpext.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_httpext.d) + */ module core.sys.windows.httpext; /* Comment from MinGW diff --git a/src/core/sys/windows/idispids.d b/src/core/sys/windows/idispids.d index 4dc564303b..3f2c41c074 100644 --- a/src/core/sys/windows/idispids.d +++ b/src/core/sys/windows/idispids.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* idispids.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_idispids.d) + */ module core.sys.windows.idispids; enum : int { diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index ff307de7bb..2b4d2a3908 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* imagehlp.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_imagehlp.d) + */ module core.sys.windows.imagehlp; /* Comment from MinGW diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d index 2d44e194a5..2f8d1857f9 100644 --- a/src/core/sys/windows/imm.d +++ b/src/core/sys/windows/imm.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* imm.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_imm.d) + */ module core.sys.windows.imm; pragma(lib, "imm32"); diff --git a/src/core/sys/windows/intshcut.d b/src/core/sys/windows/intshcut.d index 64becc92ef..8aaf187823 100644 --- a/src/core/sys/windows/intshcut.d +++ b/src/core/sys/windows/intshcut.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* intshcut.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_intshcut.d) + */ module core.sys.windows.intshcut; private import core.sys.windows.unknwn, core.sys.windows.windef; diff --git a/src/core/sys/windows/ipexport.d b/src/core/sys/windows/ipexport.d index d03fca2022..74a447ac31 100644 --- a/src/core/sys/windows/ipexport.d +++ b/src/core/sys/windows/ipexport.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* ipexport.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ipexport.d) + */ module core.sys.windows.ipexport; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/iphlpapi.d b/src/core/sys/windows/iphlpapi.d index 5beaa46db4..787e47a0c2 100644 --- a/src/core/sys/windows/iphlpapi.d +++ b/src/core/sys/windows/iphlpapi.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* iphlpapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_iphlpapi.d) + */ module core.sys.windows.iphlpapi; import core.sys.windows.ipexport, core.sys.windows.iprtrmib, core.sys.windows.iptypes; diff --git a/src/core/sys/windows/ipifcons.d b/src/core/sys/windows/ipifcons.d index 4a790beef7..96a537d255 100644 --- a/src/core/sys/windows/ipifcons.d +++ b/src/core/sys/windows/ipifcons.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* ipifcons.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ipifcons.d) + */ module core.sys.windows.ipifcons; // FIXME: check types of constants diff --git a/src/core/sys/windows/iprtrmib.d b/src/core/sys/windows/iprtrmib.d index 38fe139f6e..68db75c3f2 100644 --- a/src/core/sys/windows/iprtrmib.d +++ b/src/core/sys/windows/iprtrmib.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* iprtrmib.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_iprtrmib.d) + */ module core.sys.windows.iprtrmib; import core.sys.windows.ipifcons; diff --git a/src/core/sys/windows/iptypes.d b/src/core/sys/windows/iptypes.d index 58cd952310..9d5f047ca0 100644 --- a/src/core/sys/windows/iptypes.d +++ b/src/core/sys/windows/iptypes.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* iptypes.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_iptypes.d) + */ module core.sys.windows.iptypes; import core.sys.windows.windef; diff --git a/src/core/sys/windows/isguids.d b/src/core/sys/windows/isguids.d index 6181b69cbb..ada3a6a692 100644 --- a/src/core/sys/windows/isguids.d +++ b/src/core/sys/windows/isguids.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* isguids.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_isguids.d) + */ module core.sys.windows.isguids; private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/lm.d b/src/core/sys/windows/lm.d index a8f5ee11ca..fa44fff95f 100644 --- a/src/core/sys/windows/lm.d +++ b/src/core/sys/windows/lm.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lm.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lm.d) + */ module core.sys.windows.lm; /* removed - now supporting only Win2k up version (WindowsVista) { diff --git a/src/core/sys/windows/lmaccess.d b/src/core/sys/windows/lmaccess.d index 2b3350cebd..841348225f 100644 --- a/src/core/sys/windows/lmaccess.d +++ b/src/core/sys/windows/lmaccess.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmaccess.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmaccess.d) + */ module core.sys.windows.lmaccess; pragma(lib, "netapi32"); @@ -756,4 +755,4 @@ NET_API_STATUS NetGetDCName(LPCWSTR,LPCWSTR,PBYTE*); NET_API_STATUS NetGetAnyDCName(LPCWSTR,LPCWSTR,PBYTE*); NET_API_STATUS I_NetLogonControl(LPCWSTR,DWORD,DWORD,PBYTE*); NET_API_STATUS I_NetLogonControl2(LPCWSTR,DWORD,DWORD,PBYTE,PBYTE*); -} \ No newline at end of file +} diff --git a/src/core/sys/windows/lmalert.d b/src/core/sys/windows/lmalert.d index 7a5950276b..04227b19c8 100644 --- a/src/core/sys/windows/lmalert.d +++ b/src/core/sys/windows/lmalert.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmalert.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmalert.d) + */ module core.sys.windows.lmalert; pragma(lib, "netapi32"); diff --git a/src/core/sys/windows/lmapibuf.d b/src/core/sys/windows/lmapibuf.d index 84d544f3e8..bd6bf88ba6 100644 --- a/src/core/sys/windows/lmapibuf.d +++ b/src/core/sys/windows/lmapibuf.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmapibuf.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmapibuf.d) + */ module core.sys.windows.lmapibuf; pragma(lib, "netapi32"); diff --git a/src/core/sys/windows/lmat.d b/src/core/sys/windows/lmat.d index bd7d32d875..d725d1fc11 100644 --- a/src/core/sys/windows/lmat.d +++ b/src/core/sys/windows/lmat.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmat.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmat.d) + */ module core.sys.windows.lmat; pragma(lib, "netapi32"); diff --git a/src/core/sys/windows/lmaudit.d b/src/core/sys/windows/lmaudit.d index 80b604c28f..fc872a7b1f 100644 --- a/src/core/sys/windows/lmaudit.d +++ b/src/core/sys/windows/lmaudit.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmaudit.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmaudit.d) + */ // COMMENT: This file may be deprecated. module core.sys.windows.lmaudit; @@ -299,4 +298,4 @@ const AE_SRVSTART=0; const AE_SRVPAUSED=1; const AE_SRVCONT=2; const AE_SRVSTOP=3; -+/ \ No newline at end of file ++/ diff --git a/src/core/sys/windows/lmbrowsr.d b/src/core/sys/windows/lmbrowsr.d index 387fff3c5e..a18e4a2856 100644 --- a/src/core/sys/windows/lmbrowsr.d +++ b/src/core/sys/windows/lmbrowsr.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmbrowsr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmbrowsr.d) + */ module core.sys.windows.lmbrowsr; private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/lmchdev.d b/src/core/sys/windows/lmchdev.d index 765a172341..f61ed3dc66 100644 --- a/src/core/sys/windows/lmchdev.d +++ b/src/core/sys/windows/lmchdev.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmchdev.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmchdev.d) + */ module core.sys.windows.lmchdev; // COMMENT: This file might be deprecated. diff --git a/src/core/sys/windows/lmconfig.d b/src/core/sys/windows/lmconfig.d index c5e8b029f7..e6d280839a 100644 --- a/src/core/sys/windows/lmconfig.d +++ b/src/core/sys/windows/lmconfig.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmconfig.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmconfig.d) + */ module core.sys.windows.lmconfig; // All functions in this file are deprecated! diff --git a/src/core/sys/windows/lmcons.d b/src/core/sys/windows/lmcons.d index 9addd30818..5295e801ba 100644 --- a/src/core/sys/windows/lmcons.d +++ b/src/core/sys/windows/lmcons.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmcons.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmcons.d) + */ module core.sys.windows.lmcons; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/lmerr.d b/src/core/sys/windows/lmerr.d index 683daa1429..bc62ade434 100644 --- a/src/core/sys/windows/lmerr.d +++ b/src/core/sys/windows/lmerr.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmerr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmerr.d) + */ module core.sys.windows.lmerr; import core.sys.windows.winerror; diff --git a/src/core/sys/windows/lmerrlog.d b/src/core/sys/windows/lmerrlog.d index a69c587498..a302290a70 100644 --- a/src/core/sys/windows/lmerrlog.d +++ b/src/core/sys/windows/lmerrlog.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmerrlog.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmerrlog.d) + */ module core.sys.windows.lmerrlog; // COMMENT: This appears to be only for Win16. All functions are deprecated. @@ -219,4 +218,4 @@ extern (Windows) { NET_API_STATUS NetErrorLogWrite(LPBYTE, DWORD, LPCWSTR, LPBYTE, DWORD, LPBYTE, DWORD, LPBYTE); } -} \ No newline at end of file +} diff --git a/src/core/sys/windows/lmmsg.d b/src/core/sys/windows/lmmsg.d index 9e62c8a17b..5b428e6001 100644 --- a/src/core/sys/windows/lmmsg.d +++ b/src/core/sys/windows/lmmsg.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmmsg.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmmsg.d) + */ module core.sys.windows.lmmsg; pragma(lib, "netapi32"); diff --git a/src/core/sys/windows/lmremutl.d b/src/core/sys/windows/lmremutl.d index fbf0be1aab..8e1242ebe4 100644 --- a/src/core/sys/windows/lmremutl.d +++ b/src/core/sys/windows/lmremutl.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmremutl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmremutl.d) + */ module core.sys.windows.lmremutl; pragma(lib, "netapi32"); diff --git a/src/core/sys/windows/lmrepl.d b/src/core/sys/windows/lmrepl.d index 1e7277f3b7..d13949668a 100644 --- a/src/core/sys/windows/lmrepl.d +++ b/src/core/sys/windows/lmrepl.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmrepl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmrepl.d) + */ module core.sys.windows.lmrepl; pragma(lib, "netapi32"); @@ -131,4 +130,4 @@ NET_API_STATUS NetReplImportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDW NET_API_STATUS NetReplImportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); NET_API_STATUS NetReplImportDirLock(LPCWSTR,LPCWSTR); NET_API_STATUS NetReplImportDirUnlock(LPCWSTR,LPCWSTR,DWORD); -} \ No newline at end of file +} diff --git a/src/core/sys/windows/lmserver.d b/src/core/sys/windows/lmserver.d index 142004a76c..6df846c9f5 100644 --- a/src/core/sys/windows/lmserver.d +++ b/src/core/sys/windows/lmserver.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmserver.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmserver.d) + */ module core.sys.windows.lmserver; import core.sys.windows.winsvc; diff --git a/src/core/sys/windows/lmshare.d b/src/core/sys/windows/lmshare.d index fb5c2441d4..570cf942fc 100644 --- a/src/core/sys/windows/lmshare.d +++ b/src/core/sys/windows/lmshare.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmshare.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmshare.d) + */ module core.sys.windows.lmshare; pragma(lib, "netapi"); @@ -194,4 +193,4 @@ NET_API_STATUS NetConnectionEnum(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD, NET_API_STATUS NetFileClose(LPWSTR,DWORD); NET_API_STATUS NetFileEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); NET_API_STATUS NetFileGetInfo(LPWSTR,DWORD,DWORD,PBYTE*); -} \ No newline at end of file +} diff --git a/src/core/sys/windows/lmsname.d b/src/core/sys/windows/lmsname.d index 3881a7c756..ab98402490 100644 --- a/src/core/sys/windows/lmsname.d +++ b/src/core/sys/windows/lmsname.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmsname.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmsname.d) + */ module core.sys.windows.lmsname; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/lmstats.d b/src/core/sys/windows/lmstats.d index 0c6c1d028a..17ba12daad 100644 --- a/src/core/sys/windows/lmstats.d +++ b/src/core/sys/windows/lmstats.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmstats.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmstats.d) + */ module core.sys.windows.lmstats; pragma(lib, "netapi32"); diff --git a/src/core/sys/windows/lmsvc.d b/src/core/sys/windows/lmsvc.d index b6f50ca960..d8c51db9a7 100644 --- a/src/core/sys/windows/lmsvc.d +++ b/src/core/sys/windows/lmsvc.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmsvc.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmsvc.d) + */ module core.sys.windows.lmsvc; // FIXME: Is this file deprecated? All of the functions are only for Win16. diff --git a/src/core/sys/windows/lmuse.d b/src/core/sys/windows/lmuse.d index 63da602ca8..9b10ec0865 100644 --- a/src/core/sys/windows/lmuse.d +++ b/src/core/sys/windows/lmuse.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmuse.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmuse.d) + */ module core.sys.windows.lmuse; pragma(lib, "netapi32"); diff --git a/src/core/sys/windows/lmuseflg.d b/src/core/sys/windows/lmuseflg.d index e9b4b5ccde..b3630612dd 100644 --- a/src/core/sys/windows/lmuseflg.d +++ b/src/core/sys/windows/lmuseflg.d @@ -1,16 +1,15 @@ -/***********************************************************************\ -* lmuseflg.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.lmuseflg; - -enum : uint { - USE_NOFORCE = 0, - USE_FORCE, - USE_LOTS_OF_FORCE // = 2 -} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmuseflg.d) + */ +module core.sys.windows.lmuseflg; + +enum : uint { + USE_NOFORCE = 0, + USE_FORCE, + USE_LOTS_OF_FORCE // = 2 +} diff --git a/src/core/sys/windows/lmwksta.d b/src/core/sys/windows/lmwksta.d index a014cf4529..b709393c45 100644 --- a/src/core/sys/windows/lmwksta.d +++ b/src/core/sys/windows/lmwksta.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lmwksta.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmwksta.d) + */ module core.sys.windows.lmwksta; pragma(lib, "netapi32"); diff --git a/src/core/sys/windows/lzexpand.d b/src/core/sys/windows/lzexpand.d index 42ce133fe2..af38a52612 100644 --- a/src/core/sys/windows/lzexpand.d +++ b/src/core/sys/windows/lzexpand.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* lzexpand.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lzexpand.d) + */ module core.sys.windows.lzexpand; pragma(lib, "lz32"); diff --git a/src/core/sys/windows/mapi.d b/src/core/sys/windows/mapi.d index bb83e15c17..1d02295d5d 100644 --- a/src/core/sys/windows/mapi.d +++ b/src/core/sys/windows/mapi.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* mapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mapi.d) + */ module core.sys.windows.mapi; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/mciavi.d b/src/core/sys/windows/mciavi.d index d0a83862ba..f3521fd3c2 100644 --- a/src/core/sys/windows/mciavi.d +++ b/src/core/sys/windows/mciavi.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* mciavi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mciavi.d) + */ module core.sys.windows.mciavi; private import core.sys.windows.mmsystem; diff --git a/src/core/sys/windows/mcx.d b/src/core/sys/windows/mcx.d index a3d873f605..c3ce1f5951 100644 --- a/src/core/sys/windows/mcx.d +++ b/src/core/sys/windows/mcx.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* mcx.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mcx.d) + */ module core.sys.windows.mcx; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/mgmtapi.d b/src/core/sys/windows/mgmtapi.d index 773df06141..129d643d49 100644 --- a/src/core/sys/windows/mgmtapi.d +++ b/src/core/sys/windows/mgmtapi.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* mgmtapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mgmtapi.d) + */ module core.sys.windows.mgmtapi; import core.sys.windows.snmp; diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index 7bce737f1c..cea85d73e9 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* mmsystem.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mmsystem.d) + */ module core.sys.windows.mmsystem; pragma(lib, "winmm"); diff --git a/src/core/sys/windows/msacm.d b/src/core/sys/windows/msacm.d index 173b2ef211..136cbfb85d 100644 --- a/src/core/sys/windows/msacm.d +++ b/src/core/sys/windows/msacm.d @@ -1,173 +1,172 @@ -/***********************************************************************\ -* msacm.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.msacm; - -private import core.sys.windows.basetsd, core.sys.windows.mmsystem, core.sys.windows.windef; - -mixin DECLARE_HANDLE!("HACMDRIVERID"); -mixin DECLARE_HANDLE!("HACMDRIVER"); -alias HACMDRIVER* LPHACMDRIVER; - -/* Comment from MinGW - found through experimentation - */ -const size_t - ACMDRIVERDETAILS_SHORTNAME_CHARS = 32, - ACMDRIVERDETAILS_LONGNAME_CHARS = 128, - ACMDRIVERDETAILS_COPYRIGHT_CHARS = 80, - ACMDRIVERDETAILS_LICENSING_CHARS = 128; - -/* Comment from MinGW - I don't know the right values for these macros - */ -const size_t - ACMFORMATDETAILS_FORMAT_CHARS = 256, - ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 256, - ACMDRIVERDETAILS_FEATURES_CHARS = 256; - -struct ACMFORMATDETAILSA { - DWORD cbStruct = ACMFORMATDETAILSA.sizeof; // are they? - DWORD dwFormatIndex; - DWORD dwFormatTag; - DWORD fdwSupport; - LPWAVEFORMATEX pwfx; - DWORD cbwfx; - char[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; -} -alias ACMFORMATDETAILSA* LPACMFORMATDETAILSA; - -struct ACMFORMATDETAILSW { - DWORD cbStruct = ACMFORMATDETAILSW.sizeof; - DWORD dwFormatIndex; - DWORD dwFormatTag; - DWORD fdwSupport; - LPWAVEFORMATEX pwfx; - DWORD cbwfx; - WCHAR[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; -} -alias ACMFORMATDETAILSW* LPACMFORMATDETAILSW; - -struct ACMFORMATTAGDETAILSA { - DWORD cbStruct = ACMFORMATTAGDETAILSA.sizeof; - DWORD dwFormatTagIndex; - DWORD dwFormatTag; - DWORD cbFormatSize; - DWORD fdwSupport; - DWORD cStandardFormats; - char[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; -} -alias ACMFORMATTAGDETAILSA* LPACMFORMATTAGDETAILSA; - -struct ACMFORMATTAGDETAILSW { - DWORD cbStruct = ACMFORMATTAGDETAILSW.sizeof; - DWORD dwFormatTagIndex; - DWORD dwFormatTag; - DWORD cbFormatSize; - DWORD fdwSupport; - DWORD cStandardFormats; - WCHAR[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; -} -alias ACMFORMATTAGDETAILSW* LPACMFORMATTAGDETAILSW; - -struct ACMDRIVERDETAILSA { - DWORD cbStruct = ACMDRIVERDETAILSA.sizeof; - FOURCC fccType; - FOURCC fccComp; - WORD wMid; - WORD wPid; - DWORD vdwACM; - DWORD vdwDriver; - DWORD fdwSupport; - DWORD cFormatTags; - DWORD cFilterTags; - HICON hicon; - char[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; - char[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; - char[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; - char[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; - char[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; -} -alias ACMDRIVERDETAILSA* LPACMDRIVERDETAILSA; - -struct ACMDRIVERDETAILSW { - DWORD cbStruct = ACMDRIVERDETAILSW.sizeof; - FOURCC fccType; - FOURCC fccComp; - WORD wMid; - WORD wPid; - DWORD vdwACM; - DWORD vdwDriver; - DWORD fdwSupport; - DWORD cFormatTags; - DWORD cFilterTags; - HICON hicon; - WCHAR[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; - WCHAR[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; - WCHAR[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; - WCHAR[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; - WCHAR[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; -} -alias ACMDRIVERDETAILSW* LPACMDRIVERDETAILSW; - -extern (Windows) { - alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSA pafd, - DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBA; - alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSW pafd, - DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBW; - alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSA paftd, - DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBA; - alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSW paftd, - DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBW; - alias BOOL function(HACMDRIVERID hadid, DWORD_PTR dwInstance, - DWORD fdwSupport) ACMDRIVERENUMCB; - - MMRESULT acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, - DWORD fdwOpen); - MMRESULT acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, - DWORD fdwEnum); - MMRESULT acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, - ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); - MMRESULT acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, - ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); - MMRESULT acmDriverClose(HACMDRIVER had, DWORD fdwClose); - MMRESULT acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, - DWORD fdwDetails); - MMRESULT acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, - DWORD fdwDetails); - MMRESULT acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, - ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); - MMRESULT acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, - ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); -} - -version (Unicode) { - alias ACMFORMATDETAILSW ACMFORMATDETAILS; - alias ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS; - alias ACMDRIVERDETAILSW ACMDRIVERDETAILS; - alias ACMFORMATENUMCBW ACMFORMATENUMCB; - alias ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB; - alias acmFormatEnumW acmFormatEnum; - alias acmDriverDetailsW acmDriverDetails; - alias acmFormatTagEnumW acmFormatTagEnum; -} else { - alias ACMFORMATDETAILSA ACMFORMATDETAILS; - alias ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS; - alias ACMDRIVERDETAILSA ACMDRIVERDETAILS; - alias ACMFORMATENUMCBA ACMFORMATENUMCB; - alias ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB; - alias acmFormatEnumA acmFormatEnum; - alias acmDriverDetailsA acmDriverDetails; - alias acmFormatTagEnumA acmFormatTagEnum; -} - -alias ACMFORMATDETAILS* LPACMFORMATDETAILS; -alias ACMFORMATTAGDETAILS* LPACMFORMATTAGDETAILS; -alias ACMDRIVERDETAILS* LPACMDRIVERDETAILS; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_msacm.d) + */ +module core.sys.windows.msacm; + +private import core.sys.windows.basetsd, core.sys.windows.mmsystem, core.sys.windows.windef; + +mixin DECLARE_HANDLE!("HACMDRIVERID"); +mixin DECLARE_HANDLE!("HACMDRIVER"); +alias HACMDRIVER* LPHACMDRIVER; + +/* Comment from MinGW + found through experimentation + */ +const size_t + ACMDRIVERDETAILS_SHORTNAME_CHARS = 32, + ACMDRIVERDETAILS_LONGNAME_CHARS = 128, + ACMDRIVERDETAILS_COPYRIGHT_CHARS = 80, + ACMDRIVERDETAILS_LICENSING_CHARS = 128; + +/* Comment from MinGW + I don't know the right values for these macros + */ +const size_t + ACMFORMATDETAILS_FORMAT_CHARS = 256, + ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 256, + ACMDRIVERDETAILS_FEATURES_CHARS = 256; + +struct ACMFORMATDETAILSA { + DWORD cbStruct = ACMFORMATDETAILSA.sizeof; // are they? + DWORD dwFormatIndex; + DWORD dwFormatTag; + DWORD fdwSupport; + LPWAVEFORMATEX pwfx; + DWORD cbwfx; + char[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; +} +alias ACMFORMATDETAILSA* LPACMFORMATDETAILSA; + +struct ACMFORMATDETAILSW { + DWORD cbStruct = ACMFORMATDETAILSW.sizeof; + DWORD dwFormatIndex; + DWORD dwFormatTag; + DWORD fdwSupport; + LPWAVEFORMATEX pwfx; + DWORD cbwfx; + WCHAR[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; +} +alias ACMFORMATDETAILSW* LPACMFORMATDETAILSW; + +struct ACMFORMATTAGDETAILSA { + DWORD cbStruct = ACMFORMATTAGDETAILSA.sizeof; + DWORD dwFormatTagIndex; + DWORD dwFormatTag; + DWORD cbFormatSize; + DWORD fdwSupport; + DWORD cStandardFormats; + char[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; +} +alias ACMFORMATTAGDETAILSA* LPACMFORMATTAGDETAILSA; + +struct ACMFORMATTAGDETAILSW { + DWORD cbStruct = ACMFORMATTAGDETAILSW.sizeof; + DWORD dwFormatTagIndex; + DWORD dwFormatTag; + DWORD cbFormatSize; + DWORD fdwSupport; + DWORD cStandardFormats; + WCHAR[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; +} +alias ACMFORMATTAGDETAILSW* LPACMFORMATTAGDETAILSW; + +struct ACMDRIVERDETAILSA { + DWORD cbStruct = ACMDRIVERDETAILSA.sizeof; + FOURCC fccType; + FOURCC fccComp; + WORD wMid; + WORD wPid; + DWORD vdwACM; + DWORD vdwDriver; + DWORD fdwSupport; + DWORD cFormatTags; + DWORD cFilterTags; + HICON hicon; + char[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; + char[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; + char[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; + char[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; + char[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; +} +alias ACMDRIVERDETAILSA* LPACMDRIVERDETAILSA; + +struct ACMDRIVERDETAILSW { + DWORD cbStruct = ACMDRIVERDETAILSW.sizeof; + FOURCC fccType; + FOURCC fccComp; + WORD wMid; + WORD wPid; + DWORD vdwACM; + DWORD vdwDriver; + DWORD fdwSupport; + DWORD cFormatTags; + DWORD cFilterTags; + HICON hicon; + WCHAR[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; + WCHAR[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; + WCHAR[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; + WCHAR[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; + WCHAR[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; +} +alias ACMDRIVERDETAILSW* LPACMDRIVERDETAILSW; + +extern (Windows) { + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSA pafd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBA; + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSW pafd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBW; + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSA paftd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBA; + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSW paftd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBW; + alias BOOL function(HACMDRIVERID hadid, DWORD_PTR dwInstance, + DWORD fdwSupport) ACMDRIVERENUMCB; + + MMRESULT acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, + DWORD fdwOpen); + MMRESULT acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, + DWORD fdwEnum); + MMRESULT acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, + ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); + MMRESULT acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, + ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); + MMRESULT acmDriverClose(HACMDRIVER had, DWORD fdwClose); + MMRESULT acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, + DWORD fdwDetails); + MMRESULT acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, + DWORD fdwDetails); + MMRESULT acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, + ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); + MMRESULT acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, + ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); +} + +version (Unicode) { + alias ACMFORMATDETAILSW ACMFORMATDETAILS; + alias ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS; + alias ACMDRIVERDETAILSW ACMDRIVERDETAILS; + alias ACMFORMATENUMCBW ACMFORMATENUMCB; + alias ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB; + alias acmFormatEnumW acmFormatEnum; + alias acmDriverDetailsW acmDriverDetails; + alias acmFormatTagEnumW acmFormatTagEnum; +} else { + alias ACMFORMATDETAILSA ACMFORMATDETAILS; + alias ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS; + alias ACMDRIVERDETAILSA ACMDRIVERDETAILS; + alias ACMFORMATENUMCBA ACMFORMATENUMCB; + alias ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB; + alias acmFormatEnumA acmFormatEnum; + alias acmDriverDetailsA acmDriverDetails; + alias acmFormatTagEnumA acmFormatTagEnum; +} + +alias ACMFORMATDETAILS* LPACMFORMATDETAILS; +alias ACMFORMATTAGDETAILS* LPACMFORMATTAGDETAILS; +alias ACMDRIVERDETAILS* LPACMDRIVERDETAILS; diff --git a/src/core/sys/windows/mshtml.d b/src/core/sys/windows/mshtml.d index 1ed4e9d62b..5d41bc6ac8 100644 --- a/src/core/sys/windows/mshtml.d +++ b/src/core/sys/windows/mshtml.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* mshtml.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mshtml.d) + */ module core.sys.windows.mshtml; private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.unknwn, diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index ff5ff31966..8adff40867 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* mswsock.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Daniel Keep * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Daniel Keep + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mswsock.d) + */ module core.sys.windows.mswsock; import core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/nb30.d b/src/core/sys/windows/nb30.d index 1aac0738ca..dca0bb5619 100644 --- a/src/core/sys/windows/nb30.d +++ b/src/core/sys/windows/nb30.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* nb30.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_nb30.d) + */ module core.sys.windows.nb30; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/nddeapi.d b/src/core/sys/windows/nddeapi.d index af4fa6a4b0..7d4914feb1 100644 --- a/src/core/sys/windows/nddeapi.d +++ b/src/core/sys/windows/nddeapi.d @@ -1,162 +1,161 @@ -/***********************************************************************\ -* nddeapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.nddeapi; - -private import core.sys.windows.windef; - -// FIXME: check types and grouping of constants - -/+ -#ifndef CNLEN /* also in lmcons.h */ -#define CNLEN 15 -#define UNCLEN (CNLEN + 2) -#endif -+/ - -const char SEP_CHAR = ','; -const char[] BAR_CHAR = "|"; -const wchar SEP_WCHAR = ','; -const wchar[] BAR_WCHAR = "|"; - -enum { - NDDE_NO_ERROR, - NDDE_ACCESS_DENIED, - NDDE_BUF_TOO_SMALL, - NDDE_ERROR_MORE_DATA, - NDDE_INVALID_SERVER, - NDDE_INVALID_SHARE, - NDDE_INVALID_PARAMETER, - NDDE_INVALID_LEVEL, - NDDE_INVALID_PASSWORD, - NDDE_INVALID_ITEMNAME, - NDDE_INVALID_TOPIC, - NDDE_INTERNAL_ERROR, - NDDE_OUT_OF_MEMORY, - NDDE_INVALID_APPNAME, - NDDE_NOT_IMPLEMENTED, - NDDE_SHARE_ALREADY_EXIST, - NDDE_SHARE_NOT_EXIST, - NDDE_INVALID_FILENAME, - NDDE_NOT_RUNNING, - NDDE_INVALID_WINDOW, - NDDE_INVALID_SESSION, - NDDE_INVALID_ITEM_LIST, - NDDE_SHARE_DATA_CORRUPTED, - NDDE_REGISTRY_ERROR, - NDDE_CANT_ACCESS_SERVER, - NDDE_INVALID_SPECIAL_COMMAND, - NDDE_INVALID_SECURITY_DESC, - NDDE_TRUST_SHARE_FAIL -} - -const size_t - MAX_NDDESHARENAME = 256, - MAX_DOMAINNAME = 15, - MAX_USERNAME = 15, - MAX_APPNAME = 255, - MAX_TOPICNAME = 255, - MAX_ITEMNAME = 255; - -const NDDEF_NOPASSWORDPROMPT = 1; -const NDDEF_NOCACHELOOKUP = 2; -const NDDEF_STRIP_NDDE = 4; - -const SHARE_TYPE_OLD = 1; -const SHARE_TYPE_NEW = 2; -const SHARE_TYPE_STATIC = 4; - -const uint - NDDE_CMD_SHOW_MASK = 0x0000FFFF, - NDDE_TRUST_CMD_SHOW = 0x10000000, - NDDE_TRUST_SHARE_DEL = 0x20000000, - NDDE_TRUST_SHARE_INIT = 0x40000000, - NDDE_TRUST_SHARE_START = 0x80000000; - -struct NDdeShareInfo_tag { - LONG lRevision; - LPTSTR lpszShareName; - LONG lShareType; - LPTSTR lpszAppTopicList; - LONG fSharedFlag; - LONG fService; - LONG fStartAppFlag; - LONG nCmdShow; - LONG[2] qModifyId; - LONG cNumItems; - LPTSTR lpszItemList; -} -extern (C) { // huh? - NDdeShareInfo_tag NDDESHAREINFO; - NDdeShareInfo_tag* PNDDESHAREINFO; -} - -extern (Windows) { - UINT NDdeGetErrorStringA(UINT, LPSTR, DWORD); - UINT NDdeGetErrorStringW(UINT, LPWSTR, DWORD); - UINT NDdeGetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, DWORD, PDWORD); - UINT NDdeGetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, DWORD, PDWORD); - UINT NDdeGetTrustedShareA(LPSTR, LPSTR, PDWORD, PDWORD, PDWORD); - UINT NDdeGetTrustedShareW(LPWSTR, LPWSTR, PDWORD, PDWORD, PDWORD); - BOOL NDdeIsValidShareNameA(LPSTR); - BOOL NDdeIsValidShareNameW(LPWSTR); - BOOL NDdeIsValidAppTopicListA(LPSTR); - BOOL NDdeIsValidAppTopicListW(LPWSTR); - UINT NDdeSetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - UINT NDdeSetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - UINT NDdeSetTrustedShareA(LPSTR, LPSTR, DWORD); - UINT NDdeSetTrustedShareW(LPWSTR, LPWSTR, DWORD); - UINT NDdeShareAddA(LPSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); - UINT NDdeShareAddW(LPWSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); - UINT NDdeShareDelA(LPSTR, LPSTR, UINT); - UINT NDdeShareDelW(LPWSTR, LPWSTR, UINT); - UINT NDdeShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); - UINT NDdeShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); - UINT NDdeShareGetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); - UINT NDdeShareGetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); - UINT NDdeShareSetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, WORD); - UINT NDdeShareSetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, WORD); - UINT NDdeTrustedShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); - UINT NDdeTrustedShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); -} - -version (Unicode) { - alias NDdeShareAddW NDdeShareAdd; - alias NDdeShareDelW NDdeShareDel; - alias NDdeSetShareSecurityW NDdeSetShareSecurity; - alias NDdeGetShareSecurityW NDdeGetShareSecurity; - alias NDdeShareEnumW NDdeShareEnum; - alias NDdeShareGetInfoW NDdeShareGetInfo; - alias NDdeShareSetInfoW NDdeShareSetInfo; - alias NDdeGetErrorStringW NDdeGetErrorString; - alias NDdeIsValidShareNameW NDdeIsValidShareName; - alias NDdeIsValidAppTopicListW NDdeIsValidAppTopicList; - alias NDdeSetTrustedShareW NDdeSetTrustedShare; - alias NDdeGetTrustedShareW NDdeGetTrustedShare; - alias NDdeTrustedShareEnumW NDdeTrustedShareEnum; -} else { - alias NDdeShareAddA NDdeShareAdd; - alias NDdeShareDelA NDdeShareDel; - alias NDdeSetShareSecurityA NDdeSetShareSecurity; - alias NDdeGetShareSecurityA NDdeGetShareSecurity; - alias NDdeShareEnumA NDdeShareEnum; - alias NDdeShareGetInfoA NDdeShareGetInfo; - alias NDdeShareSetInfoA NDdeShareSetInfo; - alias NDdeGetErrorStringA NDdeGetErrorString; - alias NDdeIsValidShareNameA NDdeIsValidShareName; - alias NDdeIsValidAppTopicListA NDdeIsValidAppTopicList; - alias NDdeSetTrustedShareA NDdeSetTrustedShare; - alias NDdeGetTrustedShareA NDdeGetTrustedShare; - alias NDdeTrustedShareEnumA NDdeTrustedShareEnum; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_nddeapi.d) + */ +module core.sys.windows.nddeapi; + +private import core.sys.windows.windef; + +// FIXME: check types and grouping of constants + +/+ +#ifndef CNLEN /* also in lmcons.h */ +#define CNLEN 15 +#define UNCLEN (CNLEN + 2) +#endif ++/ + +const char SEP_CHAR = ','; +const char[] BAR_CHAR = "|"; +const wchar SEP_WCHAR = ','; +const wchar[] BAR_WCHAR = "|"; + +enum { + NDDE_NO_ERROR, + NDDE_ACCESS_DENIED, + NDDE_BUF_TOO_SMALL, + NDDE_ERROR_MORE_DATA, + NDDE_INVALID_SERVER, + NDDE_INVALID_SHARE, + NDDE_INVALID_PARAMETER, + NDDE_INVALID_LEVEL, + NDDE_INVALID_PASSWORD, + NDDE_INVALID_ITEMNAME, + NDDE_INVALID_TOPIC, + NDDE_INTERNAL_ERROR, + NDDE_OUT_OF_MEMORY, + NDDE_INVALID_APPNAME, + NDDE_NOT_IMPLEMENTED, + NDDE_SHARE_ALREADY_EXIST, + NDDE_SHARE_NOT_EXIST, + NDDE_INVALID_FILENAME, + NDDE_NOT_RUNNING, + NDDE_INVALID_WINDOW, + NDDE_INVALID_SESSION, + NDDE_INVALID_ITEM_LIST, + NDDE_SHARE_DATA_CORRUPTED, + NDDE_REGISTRY_ERROR, + NDDE_CANT_ACCESS_SERVER, + NDDE_INVALID_SPECIAL_COMMAND, + NDDE_INVALID_SECURITY_DESC, + NDDE_TRUST_SHARE_FAIL +} + +const size_t + MAX_NDDESHARENAME = 256, + MAX_DOMAINNAME = 15, + MAX_USERNAME = 15, + MAX_APPNAME = 255, + MAX_TOPICNAME = 255, + MAX_ITEMNAME = 255; + +const NDDEF_NOPASSWORDPROMPT = 1; +const NDDEF_NOCACHELOOKUP = 2; +const NDDEF_STRIP_NDDE = 4; + +const SHARE_TYPE_OLD = 1; +const SHARE_TYPE_NEW = 2; +const SHARE_TYPE_STATIC = 4; + +const uint + NDDE_CMD_SHOW_MASK = 0x0000FFFF, + NDDE_TRUST_CMD_SHOW = 0x10000000, + NDDE_TRUST_SHARE_DEL = 0x20000000, + NDDE_TRUST_SHARE_INIT = 0x40000000, + NDDE_TRUST_SHARE_START = 0x80000000; + +struct NDdeShareInfo_tag { + LONG lRevision; + LPTSTR lpszShareName; + LONG lShareType; + LPTSTR lpszAppTopicList; + LONG fSharedFlag; + LONG fService; + LONG fStartAppFlag; + LONG nCmdShow; + LONG[2] qModifyId; + LONG cNumItems; + LPTSTR lpszItemList; +} +extern (C) { // huh? + NDdeShareInfo_tag NDDESHAREINFO; + NDdeShareInfo_tag* PNDDESHAREINFO; +} + +extern (Windows) { + UINT NDdeGetErrorStringA(UINT, LPSTR, DWORD); + UINT NDdeGetErrorStringW(UINT, LPWSTR, DWORD); + UINT NDdeGetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, PDWORD); + UINT NDdeGetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, PDWORD); + UINT NDdeGetTrustedShareA(LPSTR, LPSTR, PDWORD, PDWORD, PDWORD); + UINT NDdeGetTrustedShareW(LPWSTR, LPWSTR, PDWORD, PDWORD, PDWORD); + BOOL NDdeIsValidShareNameA(LPSTR); + BOOL NDdeIsValidShareNameW(LPWSTR); + BOOL NDdeIsValidAppTopicListA(LPSTR); + BOOL NDdeIsValidAppTopicListW(LPWSTR); + UINT NDdeSetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + UINT NDdeSetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + UINT NDdeSetTrustedShareA(LPSTR, LPSTR, DWORD); + UINT NDdeSetTrustedShareW(LPWSTR, LPWSTR, DWORD); + UINT NDdeShareAddA(LPSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); + UINT NDdeShareAddW(LPWSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); + UINT NDdeShareDelA(LPSTR, LPSTR, UINT); + UINT NDdeShareDelW(LPWSTR, LPWSTR, UINT); + UINT NDdeShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeShareGetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); + UINT NDdeShareGetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); + UINT NDdeShareSetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, WORD); + UINT NDdeShareSetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, WORD); + UINT NDdeTrustedShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeTrustedShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); +} + +version (Unicode) { + alias NDdeShareAddW NDdeShareAdd; + alias NDdeShareDelW NDdeShareDel; + alias NDdeSetShareSecurityW NDdeSetShareSecurity; + alias NDdeGetShareSecurityW NDdeGetShareSecurity; + alias NDdeShareEnumW NDdeShareEnum; + alias NDdeShareGetInfoW NDdeShareGetInfo; + alias NDdeShareSetInfoW NDdeShareSetInfo; + alias NDdeGetErrorStringW NDdeGetErrorString; + alias NDdeIsValidShareNameW NDdeIsValidShareName; + alias NDdeIsValidAppTopicListW NDdeIsValidAppTopicList; + alias NDdeSetTrustedShareW NDdeSetTrustedShare; + alias NDdeGetTrustedShareW NDdeGetTrustedShare; + alias NDdeTrustedShareEnumW NDdeTrustedShareEnum; +} else { + alias NDdeShareAddA NDdeShareAdd; + alias NDdeShareDelA NDdeShareDel; + alias NDdeSetShareSecurityA NDdeSetShareSecurity; + alias NDdeGetShareSecurityA NDdeGetShareSecurity; + alias NDdeShareEnumA NDdeShareEnum; + alias NDdeShareGetInfoA NDdeShareGetInfo; + alias NDdeShareSetInfoA NDdeShareSetInfo; + alias NDdeGetErrorStringA NDdeGetErrorString; + alias NDdeIsValidShareNameA NDdeIsValidShareName; + alias NDdeIsValidAppTopicListA NDdeIsValidAppTopicList; + alias NDdeSetTrustedShareA NDdeSetTrustedShare; + alias NDdeGetTrustedShareA NDdeGetTrustedShare; + alias NDdeTrustedShareEnumA NDdeTrustedShareEnum; +} diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d index e7a174ddc8..f540d58ee2 100644 --- a/src/core/sys/windows/nspapi.d +++ b/src/core/sys/windows/nspapi.d @@ -1,148 +1,147 @@ -/***********************************************************************\ -* nspapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.nspapi; - -private import core.sys.windows.basetyps, core.sys.windows.windef; - -// FIXME: check types of constants - -enum { - NS_ALL = 0, - - NS_SAP, - NS_NDS, - NS_PEER_BROWSE, - - NS_TCPIP_LOCAL = 10, - NS_TCPIP_HOSTS, - NS_DNS, - NS_NETBT, - NS_WINS, - - NS_NBP = 20, - - NS_MS = 30, - NS_STDA, - NS_NTDS, - - NS_X500 = 40, - NS_NIS, - NS_NISPLUS, - - NS_WRQ = 50 -} - -enum { - SERVICE_REGISTER = 1, - SERVICE_DEREGISTER = 2, - SERVICE_FLUSH = 3, - SERVICE_FLAG_HARD = 2 -} - -/* MinGW makes the next section conditional on winsock.h or winsock2.h - * being included. But that doesn't translate well into D. - */ -version (Win32_Winsock1) { - import core.sys.windows.winsock; -} else { - import core.sys.windows.winsock2; -} - -struct SOCKET_ADDRESS { - LPSOCKADDR lpSockaddr; - INT iSockaddrLength; -} -alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; - -struct CSADDR_INFO { - SOCKET_ADDRESS LocalAddr; - SOCKET_ADDRESS RemoteAddr; - INT iSocketType; - INT iProtocol; -} -alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; - -struct BLOB { - ULONG cbSize; - BYTE* pBlobData; -} -alias BLOB* PBLOB, LPBLOB; - -struct SERVICE_ADDRESS { - DWORD dwAddressType; - DWORD dwAddressFlags; - DWORD dwAddressLength; - DWORD dwPrincipalLength; - BYTE* lpAddress; - BYTE* lpPrincipal; -} - -struct SERVICE_ADDRESSES { - DWORD dwAddressCount; - SERVICE_ADDRESS _Addresses; - - SERVICE_ADDRESS* Addresses() { return &_Addresses; } -} -alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES; - -struct SERVICE_INFOA { - LPGUID lpServiceType; - LPSTR lpServiceName; - LPSTR lpComment; - LPSTR lpLocale; - DWORD dwDisplayHint; - DWORD dwVersion; - DWORD dwTime; - LPSTR lpMachineName; - LPSERVICE_ADDRESSES lpServiceAddress; - BLOB ServiceSpecificInfo; -} -alias SERVICE_INFOA* LPSERVICE_INFOA; - -struct SERVICE_INFOW { - LPGUID lpServiceType; - LPWSTR lpServiceName; - LPWSTR lpComment; - LPWSTR lpLocale; - DWORD dwDisplayHint; - DWORD dwVersion; - DWORD dwTime; - LPWSTR lpMachineName; - LPSERVICE_ADDRESSES lpServiceAddress; - BLOB ServiceSpecificInfo; -} -alias SERVICE_INFOW* LPSERVICE_INFOW; - -alias void* LPSERVICE_ASYNC_INFO; - -extern (Windows) { - INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA, - LPSERVICE_ASYNC_INFO, LPDWORD); - INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW, - LPSERVICE_ASYNC_INFO, LPDWORD); - INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD, - LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD); - INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD, - LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD); -} - -version (Unicode) { - alias SERVICE_INFOW SERVICE_INFO; - alias SetServiceW SetService; - alias GetAddressByNameW GetAddressByName; -} else { - alias SERVICE_INFOA SERVICE_INFO; - alias SetServiceA SetService; - alias GetAddressByNameA GetAddressByName; -} - -alias SERVICE_INFO _SERVICE_INFO; -alias SERVICE_INFO* LPSERVICE_INFO; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_nspapi.d) + */ +module core.sys.windows.nspapi; + +private import core.sys.windows.basetyps, core.sys.windows.windef; + +// FIXME: check types of constants + +enum { + NS_ALL = 0, + + NS_SAP, + NS_NDS, + NS_PEER_BROWSE, + + NS_TCPIP_LOCAL = 10, + NS_TCPIP_HOSTS, + NS_DNS, + NS_NETBT, + NS_WINS, + + NS_NBP = 20, + + NS_MS = 30, + NS_STDA, + NS_NTDS, + + NS_X500 = 40, + NS_NIS, + NS_NISPLUS, + + NS_WRQ = 50 +} + +enum { + SERVICE_REGISTER = 1, + SERVICE_DEREGISTER = 2, + SERVICE_FLUSH = 3, + SERVICE_FLAG_HARD = 2 +} + +/* MinGW makes the next section conditional on winsock.h or winsock2.h + * being included. But that doesn't translate well into D. + */ +version (Win32_Winsock1) { + import core.sys.windows.winsock; +} else { + import core.sys.windows.winsock2; +} + +struct SOCKET_ADDRESS { + LPSOCKADDR lpSockaddr; + INT iSockaddrLength; +} +alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; + +struct CSADDR_INFO { + SOCKET_ADDRESS LocalAddr; + SOCKET_ADDRESS RemoteAddr; + INT iSocketType; + INT iProtocol; +} +alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; + +struct BLOB { + ULONG cbSize; + BYTE* pBlobData; +} +alias BLOB* PBLOB, LPBLOB; + +struct SERVICE_ADDRESS { + DWORD dwAddressType; + DWORD dwAddressFlags; + DWORD dwAddressLength; + DWORD dwPrincipalLength; + BYTE* lpAddress; + BYTE* lpPrincipal; +} + +struct SERVICE_ADDRESSES { + DWORD dwAddressCount; + SERVICE_ADDRESS _Addresses; + + SERVICE_ADDRESS* Addresses() { return &_Addresses; } +} +alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES; + +struct SERVICE_INFOA { + LPGUID lpServiceType; + LPSTR lpServiceName; + LPSTR lpComment; + LPSTR lpLocale; + DWORD dwDisplayHint; + DWORD dwVersion; + DWORD dwTime; + LPSTR lpMachineName; + LPSERVICE_ADDRESSES lpServiceAddress; + BLOB ServiceSpecificInfo; +} +alias SERVICE_INFOA* LPSERVICE_INFOA; + +struct SERVICE_INFOW { + LPGUID lpServiceType; + LPWSTR lpServiceName; + LPWSTR lpComment; + LPWSTR lpLocale; + DWORD dwDisplayHint; + DWORD dwVersion; + DWORD dwTime; + LPWSTR lpMachineName; + LPSERVICE_ADDRESSES lpServiceAddress; + BLOB ServiceSpecificInfo; +} +alias SERVICE_INFOW* LPSERVICE_INFOW; + +alias void* LPSERVICE_ASYNC_INFO; + +extern (Windows) { + INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA, + LPSERVICE_ASYNC_INFO, LPDWORD); + INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW, + LPSERVICE_ASYNC_INFO, LPDWORD); + INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD, + LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD); + INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD, + LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD); +} + +version (Unicode) { + alias SERVICE_INFOW SERVICE_INFO; + alias SetServiceW SetService; + alias GetAddressByNameW GetAddressByName; +} else { + alias SERVICE_INFOA SERVICE_INFO; + alias SetServiceA SetService; + alias GetAddressByNameA GetAddressByName; +} + +alias SERVICE_INFO _SERVICE_INFO; +alias SERVICE_INFO* LPSERVICE_INFO; diff --git a/src/core/sys/windows/ntdef.d b/src/core/sys/windows/ntdef.d index 3b9032d90b..f1854b74c8 100644 --- a/src/core/sys/windows/ntdef.d +++ b/src/core/sys/windows/ntdef.d @@ -1,80 +1,79 @@ -/***********************************************************************\ -* ntdef.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.ntdef; - -private import core.sys.windows.basetsd, core.sys.windows.subauth, core.sys.windows.windef, core.sys.windows.winnt; - -const uint - OBJ_INHERIT = 0x0002, - OBJ_PERMANENT = 0x0010, - OBJ_EXCLUSIVE = 0x0020, - OBJ_CASE_INSENSITIVE = 0x0040, - OBJ_OPENIF = 0x0080, - OBJ_OPENLINK = 0x0100, - OBJ_VALID_ATTRIBUTES = 0x01F2; - -void InitializeObjectAttributes(OBJECT_ATTRIBUTES* p, UNICODE_STRING* n, - uint a, HANDLE r, void* s) { - with (*p) { - Length = OBJECT_ATTRIBUTES.sizeof; - RootDirectory = r; - Attributes = a; - ObjectName = n; - SecurityDescriptor = s; - SecurityQualityOfService = null; - } -} - -bool NT_SUCCESS(int x) { return x >= 0; } - -/* In MinGW, NTSTATUS, UNICODE_STRING, STRING and their associated pointer - * type aliases are defined in ntdef.h, ntsecapi.h and subauth.h, each of - * which checks that none of the others is already included. - */ -alias int NTSTATUS; -alias int* PNTSTATUS; - -struct UNICODE_STRING { - USHORT Length; - USHORT MaximumLength; - PWSTR Buffer; -} -alias UNICODE_STRING* PUNICODE_STRING; -alias const(UNICODE_STRING)* PCUNICODE_STRING; - -struct STRING { - USHORT Length; - USHORT MaximumLength; - PCHAR Buffer; -} -alias STRING ANSI_STRING, OEM_STRING; -alias STRING* PSTRING, PANSI_STRING, POEM_STRING; - -alias LARGE_INTEGER PHYSICAL_ADDRESS; -alias LARGE_INTEGER* PPHYSICAL_ADDRESS; - -enum SECTION_INHERIT { - ViewShare = 1, - ViewUnmap -} - -/* In MinGW, this is defined in ntdef.h and ntsecapi.h, each of which checks - * that the other isn't already included. - */ -struct OBJECT_ATTRIBUTES { - ULONG Length = OBJECT_ATTRIBUTES.sizeof; - HANDLE RootDirectory; - PUNICODE_STRING ObjectName; - ULONG Attributes; - PVOID SecurityDescriptor; - PVOID SecurityQualityOfService; -} -alias OBJECT_ATTRIBUTES* POBJECT_ATTRIBUTES; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ntdef.d) + */ +module core.sys.windows.ntdef; + +private import core.sys.windows.basetsd, core.sys.windows.subauth, core.sys.windows.windef, core.sys.windows.winnt; + +const uint + OBJ_INHERIT = 0x0002, + OBJ_PERMANENT = 0x0010, + OBJ_EXCLUSIVE = 0x0020, + OBJ_CASE_INSENSITIVE = 0x0040, + OBJ_OPENIF = 0x0080, + OBJ_OPENLINK = 0x0100, + OBJ_VALID_ATTRIBUTES = 0x01F2; + +void InitializeObjectAttributes(OBJECT_ATTRIBUTES* p, UNICODE_STRING* n, + uint a, HANDLE r, void* s) { + with (*p) { + Length = OBJECT_ATTRIBUTES.sizeof; + RootDirectory = r; + Attributes = a; + ObjectName = n; + SecurityDescriptor = s; + SecurityQualityOfService = null; + } +} + +bool NT_SUCCESS(int x) { return x >= 0; } + +/* In MinGW, NTSTATUS, UNICODE_STRING, STRING and their associated pointer + * type aliases are defined in ntdef.h, ntsecapi.h and subauth.h, each of + * which checks that none of the others is already included. + */ +alias int NTSTATUS; +alias int* PNTSTATUS; + +struct UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} +alias UNICODE_STRING* PUNICODE_STRING; +alias const(UNICODE_STRING)* PCUNICODE_STRING; + +struct STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} +alias STRING ANSI_STRING, OEM_STRING; +alias STRING* PSTRING, PANSI_STRING, POEM_STRING; + +alias LARGE_INTEGER PHYSICAL_ADDRESS; +alias LARGE_INTEGER* PPHYSICAL_ADDRESS; + +enum SECTION_INHERIT { + ViewShare = 1, + ViewUnmap +} + +/* In MinGW, this is defined in ntdef.h and ntsecapi.h, each of which checks + * that the other isn't already included. + */ +struct OBJECT_ATTRIBUTES { + ULONG Length = OBJECT_ATTRIBUTES.sizeof; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +} +alias OBJECT_ATTRIBUTES* POBJECT_ATTRIBUTES; diff --git a/src/core/sys/windows/ntdll.d b/src/core/sys/windows/ntdll.d index 70855212df..cc06276870 100644 --- a/src/core/sys/windows/ntdll.d +++ b/src/core/sys/windows/ntdll.d @@ -1,22 +1,21 @@ -/***********************************************************************\ -* ntdll.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.ntdll; - -private import core.sys.windows.w32api; - - -enum SHUTDOWN_ACTION { - ShutdownNoReboot, - ShutdownReboot, - ShutdownPowerOff -} - -extern (Windows) uint NtShutdownSystem(SHUTDOWN_ACTION Action); +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ntdll.d) + */ +module core.sys.windows.ntdll; + +private import core.sys.windows.w32api; + + +enum SHUTDOWN_ACTION { + ShutdownNoReboot, + ShutdownReboot, + ShutdownPowerOff +} + +extern (Windows) uint NtShutdownSystem(SHUTDOWN_ACTION Action); diff --git a/src/core/sys/windows/ntldap.d b/src/core/sys/windows/ntldap.d index 99a313d323..801af62f46 100644 --- a/src/core/sys/windows/ntldap.d +++ b/src/core/sys/windows/ntldap.d @@ -1,58 +1,57 @@ -/***********************************************************************\ -* ntldap.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.ntldap; - -/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned - * aliases. Should we merge them anyway? - */ - -const char[] - LDAP_SERVER_ASQ_OID = "1.2.840.113556.1.4.1504", - LDAP_SERVER_DIRSYNC_OID = "1.2.840.113556.1.4.841", - LDAP_SERVER_SD_FLAGS_OID = "1.2.840.113556.1.4.801", - LDAP_SERVER_FAST_BIND_OID = "1.2.840.113556.1.4.1781", - LDAP_MATCHING_RULE_BIT_OR = "1.2.840.113556.1.4.804", - LDAP_MATCHING_RULE_BIT_AND = "1.2.840.113556.1.4.803", - LDAP_SERVER_EXTENDED_DN_OID = "1.2.840.113556.1.4.529", - LDAP_SERVER_LAZY_COMMIT_OID = "1.2.840.113556.1.4.619", - LDAP_SERVER_TREE_DELETE_OID = "1.2.840.113556.1.4.805", - LDAP_SERVER_VERIFY_NAME_OID = "1.2.840.113556.1.4.1338", - LDAP_SERVER_SHOW_DELETED_OID = "1.2.840.113556.1.4.417", - LDAP_SERVER_NOTIFICATION_OID = "1.2.840.113556.1.4.528", - LDAP_SERVER_DOMAIN_SCOPE_OID = "1.2.840.113556.1.4.1339", - LDAP_CAP_ACTIVE_DIRECTORY_OID = "1.2.840.113556.1.4.800", - LDAP_SERVER_SEARCH_OPTIONS_OID = "1.2.840.113556.1.4.1340", - LDAP_CAP_ACTIVE_DIRECTORY_V51_OID = "1.2.840.113556.1.4.1670", - LDAP_SERVER_PERMISSIVE_MODIFY_OID = "1.2.840.113556.1.4.1413", - LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID = "1.2.840.113556.1.4.521"; - -const wchar[] - LDAP_SERVER_ASQ_OID_W = "1.2.840.113556.1.4.1504", - LDAP_SERVER_DIRSYNC_OID_W = "1.2.840.113556.1.4.841", - LDAP_SERVER_SD_FLAGS_OID_W = "1.2.840.113556.1.4.801", - LDAP_SERVER_FAST_BIND_OID_W = "1.2.840.113556.1.4.1781", - LDAP_MATCHING_RULE_BIT_OR_W = "1.2.840.113556.1.4.804", - LDAP_MATCHING_RULE_BIT_AND_W = "1.2.840.113556.1.4.803", - LDAP_SERVER_EXTENDED_DN_OID_W = "1.2.840.113556.1.4.529", - LDAP_SERVER_LAZY_COMMIT_OID_W = "1.2.840.113556.1.4.619", - LDAP_SERVER_TREE_DELETE_OID_W = "1.2.840.113556.1.4.805", - LDAP_SERVER_VERIFY_NAME_OID_W = "1.2.840.113556.1.4.1338", - LDAP_SERVER_SHOW_DELETED_OID_W = "1.2.840.113556.1.4.417", - LDAP_SERVER_NOTIFICATION_OID_W = "1.2.840.113556.1.4.528", - LDAP_SERVER_DOMAIN_SCOPE_OID_W = "1.2.840.113556.1.4.1339", - LDAP_CAP_ACTIVE_DIRECTORY_OID_W = "1.2.840.113556.1.4.800", - LDAP_SERVER_SEARCH_OPTIONS_OID_W = "1.2.840.113556.1.4.1340", - LDAP_CAP_ACTIVE_DIRECTORY_V51_OID_W = "1.2.840.113556.1.4.1670", - LDAP_SERVER_PERMISSIVE_MODIFY_OID_W = "1.2.840.113556.1.4.1413", - LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID_W = "1.2.840.113556.1.4.521"; - -const SERVER_SEARCH_FLAG_DOMAIN_SCOPE = 1; -const SERVER_SEARCH_FLAG_PHANTOM_ROOT = 2; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ntldap.d) + */ +module core.sys.windows.ntldap; + +/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned + * aliases. Should we merge them anyway? + */ + +const char[] + LDAP_SERVER_ASQ_OID = "1.2.840.113556.1.4.1504", + LDAP_SERVER_DIRSYNC_OID = "1.2.840.113556.1.4.841", + LDAP_SERVER_SD_FLAGS_OID = "1.2.840.113556.1.4.801", + LDAP_SERVER_FAST_BIND_OID = "1.2.840.113556.1.4.1781", + LDAP_MATCHING_RULE_BIT_OR = "1.2.840.113556.1.4.804", + LDAP_MATCHING_RULE_BIT_AND = "1.2.840.113556.1.4.803", + LDAP_SERVER_EXTENDED_DN_OID = "1.2.840.113556.1.4.529", + LDAP_SERVER_LAZY_COMMIT_OID = "1.2.840.113556.1.4.619", + LDAP_SERVER_TREE_DELETE_OID = "1.2.840.113556.1.4.805", + LDAP_SERVER_VERIFY_NAME_OID = "1.2.840.113556.1.4.1338", + LDAP_SERVER_SHOW_DELETED_OID = "1.2.840.113556.1.4.417", + LDAP_SERVER_NOTIFICATION_OID = "1.2.840.113556.1.4.528", + LDAP_SERVER_DOMAIN_SCOPE_OID = "1.2.840.113556.1.4.1339", + LDAP_CAP_ACTIVE_DIRECTORY_OID = "1.2.840.113556.1.4.800", + LDAP_SERVER_SEARCH_OPTIONS_OID = "1.2.840.113556.1.4.1340", + LDAP_CAP_ACTIVE_DIRECTORY_V51_OID = "1.2.840.113556.1.4.1670", + LDAP_SERVER_PERMISSIVE_MODIFY_OID = "1.2.840.113556.1.4.1413", + LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID = "1.2.840.113556.1.4.521"; + +const wchar[] + LDAP_SERVER_ASQ_OID_W = "1.2.840.113556.1.4.1504", + LDAP_SERVER_DIRSYNC_OID_W = "1.2.840.113556.1.4.841", + LDAP_SERVER_SD_FLAGS_OID_W = "1.2.840.113556.1.4.801", + LDAP_SERVER_FAST_BIND_OID_W = "1.2.840.113556.1.4.1781", + LDAP_MATCHING_RULE_BIT_OR_W = "1.2.840.113556.1.4.804", + LDAP_MATCHING_RULE_BIT_AND_W = "1.2.840.113556.1.4.803", + LDAP_SERVER_EXTENDED_DN_OID_W = "1.2.840.113556.1.4.529", + LDAP_SERVER_LAZY_COMMIT_OID_W = "1.2.840.113556.1.4.619", + LDAP_SERVER_TREE_DELETE_OID_W = "1.2.840.113556.1.4.805", + LDAP_SERVER_VERIFY_NAME_OID_W = "1.2.840.113556.1.4.1338", + LDAP_SERVER_SHOW_DELETED_OID_W = "1.2.840.113556.1.4.417", + LDAP_SERVER_NOTIFICATION_OID_W = "1.2.840.113556.1.4.528", + LDAP_SERVER_DOMAIN_SCOPE_OID_W = "1.2.840.113556.1.4.1339", + LDAP_CAP_ACTIVE_DIRECTORY_OID_W = "1.2.840.113556.1.4.800", + LDAP_SERVER_SEARCH_OPTIONS_OID_W = "1.2.840.113556.1.4.1340", + LDAP_CAP_ACTIVE_DIRECTORY_V51_OID_W = "1.2.840.113556.1.4.1670", + LDAP_SERVER_PERMISSIVE_MODIFY_OID_W = "1.2.840.113556.1.4.1413", + LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID_W = "1.2.840.113556.1.4.521"; + +const SERVER_SEARCH_FLAG_DOMAIN_SCOPE = 1; +const SERVER_SEARCH_FLAG_PHANTOM_ROOT = 2; diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index 7ed9fd3981..fc411ed9f7 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* ntsecapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ntsecapi.d) + */ module core.sys.windows.ntsecapi; private import diff --git a/src/core/sys/windows/ntsecpkg.d b/src/core/sys/windows/ntsecpkg.d index 9f63c96e0e..158c6f9e22 100644 --- a/src/core/sys/windows/ntsecpkg.d +++ b/src/core/sys/windows/ntsecpkg.d @@ -1,446 +1,445 @@ -/***********************************************************************\ -* ntsecpkg.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Ellery Newcomer * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.ntsecpkg; - -import core.sys.windows.windef, core.sys.windows.ntsecapi, core.sys.windows.security, core.sys.windows.ntdef, core.sys.windows.sspi; -import core.sys.windows.winnt: GUID; -import core.sys.windows.winbase; - -extern(Windows): - -enum :ULONG{ - ISC_REQ_DELEGATE = 1, - ISC_REQ_MUTUAL_AUTH = 2, - ISC_REQ_REPLAY_DETECT = 4, - ISC_REQ_SEQUENCE_DETECT = 8, - ISC_REQ_CONFIDENTIALITY = 16, - ISC_REQ_USE_SESSION_KEY = 32, - ISC_REQ_PROMPT_FOR_CREDS = 64, - ISC_REQ_USE_SUPPLIED_CREDS = 128, - ISC_REQ_ALLOCATE_MEMORY = 256, - ISC_REQ_USE_DCE_STYLE = 512, - ISC_REQ_DATAGRAM = 1024, - ISC_REQ_CONNECTION = 2048, - ISC_REQ_EXTENDED_ERROR = 16384, - ISC_REQ_STREAM = 32768, - ISC_REQ_INTEGRITY = 65536, - ISC_REQ_MANUAL_CRED_VALIDATION = 524288, - ISC_REQ_HTTP = 268435456, -} - -enum ISC_RET_EXTENDED_ERROR = 16384; - -enum :ULONG{ - ASC_REQ_DELEGATE = 1, - ASC_REQ_MUTUAL_AUTH = 2, - ASC_REQ_REPLAY_DETECT = 4, - ASC_REQ_SEQUENCE_DETECT = 8, - ASC_REQ_CONFIDENTIALITY = 16, - ASC_REQ_USE_SESSION_KEY = 32, - ASC_REQ_ALLOCATE_MEMORY = 256, - ASC_REQ_USE_DCE_STYLE = 512, - ASC_REQ_DATAGRAM = 1024, - ASC_REQ_CONNECTION = 2048, - ASC_REQ_EXTENDED_ERROR = 32768, - ASC_REQ_STREAM = 65536, - ASC_REQ_INTEGRITY = 131072, -} - -enum SECURITY_NATIVE_DREP = 16; -enum SECURITY_NETWORK_DREP = 0; - -enum :ULONG{ - SECPKG_STATE_ENCRYPTION_PERMITTED = 0x01, - SECPKG_STATE_STRONG_ENCRYPTION_PERMITTED = 0x02, - SECPKG_STATE_DOMAIN_CONTROLLER = 0x04, - SECPKG_STATE_WORKSTATION = 0x08, - SECPKG_STATE_STANDALONE = 0x10, -} - -/* enum definitions for Secure Service Provider/Authentication Packages */ -enum LSA_TOKEN_INFORMATION_TYPE { - LsaTokenInformationNull, - LsaTokenInformationV1 -} -alias LSA_TOKEN_INFORMATION_TYPE* PLSA_TOKEN_INFORMATION_TYPE; -enum SECPKG_EXTENDED_INFORMATION_CLASS -{ - SecpkgGssInfo = 1, - SecpkgContextThunks, - SecpkgMutualAuthLevel, - SecpkgMaxInfo -} -enum SECPKG_NAME_TYPE { - SecNameSamCompatible, - SecNameAlternateId, - SecNameFlat, - SecNameDN -} - -/* struct definitions for SSP/AP */ -struct SECPKG_PRIMARY_CRED { - LUID LogonId; - UNICODE_STRING DownlevelName; - UNICODE_STRING DomainName; - UNICODE_STRING Password; - UNICODE_STRING OldPassword; - PSID UserSid; - ULONG Flags; - UNICODE_STRING DnsDomainName; - UNICODE_STRING Upn; - UNICODE_STRING LogonServer; - UNICODE_STRING Spare1; - UNICODE_STRING Spare2; - UNICODE_STRING Spare3; - UNICODE_STRING Spare4; -} -alias SECPKG_PRIMARY_CRED* PSECPKG_PRIMARY_CRED; -struct SECPKG_SUPPLEMENTAL_CRED { - UNICODE_STRING PackageName; - ULONG CredentialSize; - PUCHAR Credentials; -} -alias SECPKG_SUPPLEMENTAL_CRED* PSECPKG_SUPPLEMENTAL_CRED; -struct SECPKG_SUPPLEMENTAL_CRED_ARRAY { - ULONG CredentialCount; - SECPKG_SUPPLEMENTAL_CRED[1] Credentials; -} -alias SECPKG_SUPPLEMENTAL_CRED_ARRAY* PSECPKG_SUPPLEMENTAL_CRED_ARRAY; -struct SECPKG_PARAMETERS { - ULONG Version; - ULONG MachineState; - ULONG SetupMode; - PSID DomainSid; - UNICODE_STRING DomainName; - UNICODE_STRING DnsDomainName; - GUID DomainGuid; -} -alias SECPKG_PARAMETERS* PSECPKG_PARAMETERS,PSECPKG_EVENT_DOMAIN_CHANGE; -alias SECPKG_PARAMETERS SECPKG_EVENT_DOMAIN_CHANGE; -struct SECPKG_CLIENT_INFO { - LUID LogonId; - ULONG ProcessID; - ULONG ThreadID; - BOOLEAN HasTcbPrivilege; - BOOLEAN Impersonating; - BOOLEAN Restricted; -} -alias SECPKG_CLIENT_INFO* PSECPKG_CLIENT_INFO; -struct SECURITY_USER_DATA { - SECURITY_STRING UserName; - SECURITY_STRING LogonDomainName; - SECURITY_STRING LogonServer; - PSID pSid; -} -alias SECURITY_USER_DATA* PSECURITY_USER_DATA,PSecurityUserData; -alias SECURITY_USER_DATA SecurityUserData; -struct SECPKG_GSS_INFO { - ULONG EncodedIdLength; - UCHAR[4] EncodedId; -} -alias SECPKG_GSS_INFO* PSECPKG_GSS_INFO; -struct SECPKG_CONTEXT_THUNKS { - ULONG InfoLevelCount; - ULONG[1] Levels; -} -alias SECPKG_CONTEXT_THUNKS* PSECPKG_CONTEXT_THUNKS; -struct SECPKG_MUTUAL_AUTH_LEVEL { - ULONG MutualAuthLevel; -} -alias SECPKG_MUTUAL_AUTH_LEVEL* PSECPKG_MUTUAL_AUTH_LEVEL; -struct SECPKG_CALL_INFO { - ULONG ProcessId; - ULONG ThreadId; - ULONG Attributes; - ULONG CallCount; -} -alias SECPKG_CALL_INFO* PSECPKG_CALL_INFO; -struct SECPKG_EXTENDED_INFORMATION { - SECPKG_EXTENDED_INFORMATION_CLASS Class; - union _Info{ - SECPKG_GSS_INFO GssInfo; - SECPKG_CONTEXT_THUNKS ContextThunks; - SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel; - } - _Info Info; -} -alias SECPKG_EXTENDED_INFORMATION* PSECPKG_EXTENDED_INFORMATION; - -/* callbacks implemented by SSP/AP dlls and called by the LSA */ -alias void function(ULONG_PTR, ULONG_PTR, PSecBuffer, - PSecBuffer) PLSA_CALLBACK_FUNCTION; - -/* misc typedefs used in the below prototypes */ -alias PVOID* PLSA_CLIENT_REQUEST; -alias ULONG LSA_SEC_HANDLE; -alias ULONG* PLSA_SEC_HANDLE; -alias LPTHREAD_START_ROUTINE SEC_THREAD_START; -alias PSECURITY_ATTRIBUTES SEC_ATTRS; - -/* functions used by SSP/AP obtainable by dispatch tables */ -alias NTSTATUS function(ULONG, PLSA_CALLBACK_FUNCTION) PLSA_REGISTER_CALLBACK; -alias NTSTATUS function(PLUID) PLSA_CREATE_LOGON_SESSION; -alias NTSTATUS function(PLUID) PLSA_DELETE_LOGON_SESSION; -alias NTSTATUS function(PLUID, ULONG, PLSA_STRING, - PLSA_STRING) PLSA_ADD_CREDENTIAL; -alias NTSTATUS function(PLUID, ULONG, PULONG, BOOLEAN, - PLSA_STRING, PULONG, PLSA_STRING) PLSA_GET_CREDENTIALS; -alias NTSTATUS function(PLUID, ULONG, PLSA_STRING) PLSA_DELETE_CREDENTIAL; -alias PVOID function(ULONG) PLSA_ALLOCATE_LSA_HEAP; -alias void function(PVOID) PLSA_FREE_LSA_HEAP; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, - ULONG, PVOID*) PLSA_ALLOCATE_CLIENT_BUFFER; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, PVOID) PLSA_FREE_CLIENT_BUFFER; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, ULONG, - PVOID, PVOID) PLSA_COPY_TO_CLIENT_BUFFER; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, - ULONG, PVOID, PVOID) PLSA_COPY_FROM_CLIENT_BUFFER; -alias NTSTATUS function() PLSA_IMPERSONATE_CLIENT; -alias NTSTATUS function() PLSA_UNLOAD_PACKAGE; -alias NTSTATUS function(HANDLE, PHANDLE) PLSA_DUPLICATE_HANDLE; -alias NTSTATUS function(PLUID, ULONG, - PVOID, BOOLEAN) PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS; -alias HANDLE function(SEC_ATTRS, ULONG, SEC_THREAD_START, - PVOID, ULONG, PULONG) PLSA_CREATE_THREAD; -alias NTSTATUS function(PSECPKG_CLIENT_INFO) PLSA_GET_CLIENT_INFO; -alias HANDLE function(SEC_THREAD_START, PVOID, - ULONG, ULONG, ULONG, ULONG, HANDLE) PLSA_REGISTER_NOTIFICATION; -alias NTSTATUS function(HANDLE) PLSA_CANCEL_NOTIFICATION; -alias NTSTATUS function(PSecBuffer, PSecBuffer) PLSA_MAP_BUFFER; -alias NTSTATUS function(PLUID, PTOKEN_SOURCE, - SECURITY_LOGON_TYPE, SECURITY_IMPERSONATION_LEVEL, LSA_TOKEN_INFORMATION_TYPE, - PVOID, PTOKEN_GROUPS, PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, - PUNICODE_STRING, PHANDLE, PNTSTATUS) PLSA_CREATE_TOKEN; -alias void function(NTSTATUS, NTSTATUS, PUNICODE_STRING, - PUNICODE_STRING, PUNICODE_STRING, PSID, SECURITY_LOGON_TYPE, - PTOKEN_SOURCE, PLUID) PLSA_AUDIT_LOGON; -alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, - PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE; -alias BOOLEAN function(PSECPKG_CALL_INFO) PLSA_GET_CALL_INFO; -alias NTSTATUS function(PUNICODE_STRING, PVOID, PVOID, - ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGEEX; -alias PVOID function(ULONG, ULONG) PLSA_CREATE_SHARED_MEMORY; -alias PVOID function(PVOID, ULONG) PLSA_ALLOCATE_SHARED_MEMORY; -alias void function(PVOID, PVOID) PLSA_FREE_SHARED_MEMORY; -alias BOOLEAN function(PVOID) PLSA_DELETE_SHARED_MEMORY; -alias NTSTATUS function(PSECURITY_STRING, SECPKG_NAME_TYPE, - PSECURITY_STRING, BOOLEAN, ULONG, PVOID*) PLSA_OPEN_SAM_USER; -alias NTSTATUS function(PVOID, PVOID *, PULONG, - PVOID *, PULONG) PLSA_GET_USER_CREDENTIALS; -alias NTSTATUS function(PVOID, PUCHAR *, PULONG) PLSA_GET_USER_AUTH_DATA; -alias NTSTATUS function(PVOID) PLSA_CLOSE_SAM_USER; -alias NTSTATUS function(PVOID, ULONG, - SECURITY_IMPERSONATION_LEVEL, PTOKEN_SOURCE, SECURITY_LOGON_TYPE, - PUNICODE_STRING, PHANDLE, PLUID, PUNICODE_STRING, PNTSTATUS) PLSA_CONVERT_AUTH_DATA_TO_TOKEN; -alias NTSTATUS function(PCHAR, ULONG_PTR, ULONG_PTR, - PSecBuffer, PSecBuffer) PLSA_CLIENT_CALLBACK; -alias NTSTATUS function(PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY) PLSA_UPDATE_PRIMARY_CREDENTIALS; -alias NTSTATUS function(PSECURITY_STRING, - SECPKG_NAME_TYPE, PSECURITY_STRING, PUCHAR *, PULONG, PUNICODE_STRING) PLSA_GET_AUTH_DATA_FOR_USER; -alias NTSTATUS function(ULONG, BOOLEAN, - PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING, - PULONG) PLSA_CRACK_SINGLE_NAME; -alias NTSTATUS function(ULONG, BOOLEAN, - PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS) PLSA_AUDIT_ACCOUNT_LOGON; -alias NTSTATUS function(PUNICODE_STRING, PVOID, - PVOID, ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE_PASSTHROUGH; - -/* Dispatch tables of functions used by SSP/AP */ -struct SECPKG_DLL_FUNCTIONS { - PLSA_ALLOCATE_LSA_HEAP AllocateHeap; - PLSA_FREE_LSA_HEAP FreeHeap; - PLSA_REGISTER_CALLBACK RegisterCallback; -} -alias SECPKG_DLL_FUNCTIONS* PSECPKG_DLL_FUNCTIONS; -struct LSA_DISPATCH_TABLE { - PLSA_CREATE_LOGON_SESSION CreateLogonSession; - PLSA_DELETE_LOGON_SESSION DeleteLogonSession; - PLSA_ADD_CREDENTIAL AddCredential; - PLSA_GET_CREDENTIALS GetCredentials; - PLSA_DELETE_CREDENTIAL DeleteCredential; - PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; - PLSA_FREE_LSA_HEAP FreeLsaHeap; - PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; - PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; - PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; - PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; -} -alias LSA_DISPATCH_TABLE* PLSA_DISPATCH_TABLE; -struct LSA_SECPKG_FUNCTION_TABLE { - PLSA_CREATE_LOGON_SESSION CreateLogonSession; - PLSA_DELETE_LOGON_SESSION DeleteLogonSession; - PLSA_ADD_CREDENTIAL AddCredential; - PLSA_GET_CREDENTIALS GetCredentials; - PLSA_DELETE_CREDENTIAL DeleteCredential; - PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; - PLSA_FREE_LSA_HEAP FreeLsaHeap; - PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; - PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; - PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; - PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; - PLSA_IMPERSONATE_CLIENT ImpersonateClient; - PLSA_UNLOAD_PACKAGE UnloadPackage; - PLSA_DUPLICATE_HANDLE DuplicateHandle; - PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials; - PLSA_CREATE_THREAD CreateThread; - PLSA_GET_CLIENT_INFO GetClientInfo; - PLSA_REGISTER_NOTIFICATION RegisterNotification; - PLSA_CANCEL_NOTIFICATION CancelNotification; - PLSA_MAP_BUFFER MapBuffer; - PLSA_CREATE_TOKEN CreateToken; - PLSA_AUDIT_LOGON AuditLogon; - PLSA_CALL_PACKAGE CallPackage; - PLSA_FREE_LSA_HEAP FreeReturnBuffer; - PLSA_GET_CALL_INFO GetCallInfo; - PLSA_CALL_PACKAGEEX CallPackageEx; - PLSA_CREATE_SHARED_MEMORY CreateSharedMemory; - PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory; - PLSA_FREE_SHARED_MEMORY FreeSharedMemory; - PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory; - PLSA_OPEN_SAM_USER OpenSamUser; - PLSA_GET_USER_CREDENTIALS GetUserCredentials; - PLSA_GET_USER_AUTH_DATA GetUserAuthData; - PLSA_CLOSE_SAM_USER CloseSamUser; - PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken; - PLSA_CLIENT_CALLBACK ClientCallback; - PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials; - PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser; - PLSA_CRACK_SINGLE_NAME CrackSingleName; - PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; - PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; -} -alias LSA_SECPKG_FUNCTION_TABLE* PLSA_SECPKG_FUNCTION_TABLE; - -/* functions implemented by SSP/AP obtainable by dispatch tables */ -alias NTSTATUS function(ULONG, PLSA_DISPATCH_TABLE, - PLSA_STRING, PLSA_STRING, PLSA_STRING *) PLSA_AP_INITIALIZE_PACKAGE; -alias NTSTATUS function(LPWSTR, LPWSTR, LPWSTR, LPWSTR, - DWORD, DWORD, PHANDLE) PLSA_AP_LOGON_USER; -alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, - PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE; -alias void function(PLUID) PLSA_AP_LOGON_TERMINATED; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, - PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_UNTRUSTED; -alias NTSTATUS function(PUNICODE_STRING, - PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_PASSTHROUGH; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, - SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, - PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, - PUNICODE_STRING *) PLSA_AP_LOGON_USER_EX; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, - SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, - PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, - PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *) PLSA_AP_LOGON_USER_EX2; -alias NTSTATUS function(ULONG_PTR, PSECPKG_PARAMETERS, - PLSA_SECPKG_FUNCTION_TABLE) SpInitializeFn; -alias NTSTATUS function() SpShutDownFn; -alias NTSTATUS function(PSecPkgInfoW) SpGetInfoFn; -alias NTSTATUS function(SECURITY_LOGON_TYPE, - PUNICODE_STRING, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED) SpAcceptCredentialsFn; -alias NTSTATUS function(PUNICODE_STRING, ULONG, - PLUID, PVOID, PVOID, PVOID, PLSA_SEC_HANDLE, PTimeStamp) SpAcquireCredentialsHandleFn; -alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryCredentialsAttributesFn; -alias NTSTATUS function(LSA_SEC_HANDLE) SpFreeCredentialsHandleFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpSaveCredentialsFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpGetCredentialsFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpDeleteCredentialsFn; -alias NTSTATUS function(LSA_SEC_HANDLE, LSA_SEC_HANDLE, - PUNICODE_STRING, ULONG, ULONG, PSecBufferDesc, PLSA_SEC_HANDLE, PSecBufferDesc, - PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpInitLsaModeContextFn; -alias NTSTATUS function(LSA_SEC_HANDLE, - LSA_SEC_HANDLE, PSecBufferDesc, ULONG, ULONG, PLSA_SEC_HANDLE, PSecBufferDesc, - PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpAcceptLsaModeContextFn; -alias NTSTATUS function(LSA_SEC_HANDLE) SpDeleteContextFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpApplyControlTokenFn; -alias NTSTATUS function(PLUID, ULONG, PSecurityUserData *) SpGetUserInfoFn; -alias NTSTATUS function(SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION *) SpGetExtendedInformationFn; -alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryContextAttributesFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PUNICODE_STRING, - PUNICODE_STRING, ULONG, PVOID, PVOID, PVOID, PTimeStamp) SpAddCredentialsFn; -alias NTSTATUS function( - SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION) SpSetExtendedInformationFn; -alias NTSTATUS function(ULONG, PSECPKG_DLL_FUNCTIONS, - PVOID *) SpInstanceInitFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpInitUserModeContextFn; -alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, - PSecBufferDesc, ULONG) SpMakeSignatureFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, - ULONG, PULONG) SpVerifySignatureFn; -alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PSecBufferDesc, - ULONG) SpSealMessageFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, - ULONG, PULONG) SpUnsealMessageFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PHANDLE) SpGetContextTokenFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpCompleteAuthTokenFn; -alias NTSTATUS function(PSecBuffer, PSecBuffer) SpFormatCredentialsFn; -alias NTSTATUS function(ULONG, PUCHAR, PULONG, - PVOID *) SpMarshallSupplementalCredsFn; -alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, - PSecBuffer, PHANDLE) SpExportSecurityContextFn; -alias NTSTATUS function(PSecBuffer, HANDLE, - PLSA_SEC_HANDLE) SpImportSecurityContextFn; - -/* Dispatch tables of functions implemented by SSP/AP */ -struct SECPKG_FUNCTION_TABLE { - PLSA_AP_INITIALIZE_PACKAGE InitializePackage; - PLSA_AP_LOGON_USER LogonUser; - PLSA_AP_CALL_PACKAGE CallPackage; - PLSA_AP_LOGON_TERMINATED LogonTerminated; - PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted; - PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; - PLSA_AP_LOGON_USER_EX LogonUserEx; - PLSA_AP_LOGON_USER_EX2 LogonUserEx2; - SpInitializeFn *Initialize; - SpShutDownFn *Shutdown; - SpGetInfoFn *GetInfo; - SpAcceptCredentialsFn *AcceptCredentials; - SpAcquireCredentialsHandleFn *AcquireCredentialsHandle; - SpQueryCredentialsAttributesFn *QueryCredentialsAttributes; - SpFreeCredentialsHandleFn *FreeCredentialsHandle; - SpSaveCredentialsFn *SaveCredentials; - SpGetCredentialsFn *GetCredentials; - SpDeleteCredentialsFn *DeleteCredentials; - SpInitLsaModeContextFn *InitLsaModeContext; - SpAcceptLsaModeContextFn *AcceptLsaModeContext; - SpDeleteContextFn *DeleteContext; - SpApplyControlTokenFn *ApplyControlToken; - SpGetUserInfoFn *GetUserInfo; - SpGetExtendedInformationFn *GetExtendedInformation; - SpQueryContextAttributesFn *QueryContextAttributes; - SpAddCredentialsFn *AddCredentials; - SpSetExtendedInformationFn *SetExtendedInformation; -} -alias SECPKG_FUNCTION_TABLE* PSECPKG_FUNCTION_TABLE; - -struct SECPKG_USER_FUNCTION_TABLE { - SpInstanceInitFn *InstanceInit; - SpInitUserModeContextFn *InitUserModeContext; - SpMakeSignatureFn *MakeSignature; - SpVerifySignatureFn *VerifySignature; - SpSealMessageFn *SealMessage; - SpUnsealMessageFn *UnsealMessage; - SpGetContextTokenFn *GetContextToken; - SpQueryContextAttributesFn *QueryContextAttributes; - SpCompleteAuthTokenFn *CompleteAuthToken; - SpDeleteContextFn *DeleteUserModeContext; - SpFormatCredentialsFn *FormatCredentials; - SpMarshallSupplementalCredsFn *MarshallSupplementalCreds; - SpExportSecurityContextFn *ExportContext; - SpImportSecurityContextFn *ImportContext; -} -alias SECPKG_USER_FUNCTION_TABLE* PSECPKG_USER_FUNCTION_TABLE; - -/* Entry points to SSP/AP */ -alias NTSTATUS function(ULONG, PULONG, - PSECPKG_FUNCTION_TABLE *, PULONG) SpLsaModeInitializeFn; -alias NTSTATUS function(ULONG, PULONG, - PSECPKG_USER_FUNCTION_TABLE *, PULONG) SpUserModeInitializeFn; - +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Ellery Newcomer + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ntsecpkg.d) + */ +module core.sys.windows.ntsecpkg; + +import core.sys.windows.windef, core.sys.windows.ntsecapi, core.sys.windows.security, core.sys.windows.ntdef, core.sys.windows.sspi; +import core.sys.windows.winnt: GUID; +import core.sys.windows.winbase; + +extern(Windows): + +enum :ULONG{ + ISC_REQ_DELEGATE = 1, + ISC_REQ_MUTUAL_AUTH = 2, + ISC_REQ_REPLAY_DETECT = 4, + ISC_REQ_SEQUENCE_DETECT = 8, + ISC_REQ_CONFIDENTIALITY = 16, + ISC_REQ_USE_SESSION_KEY = 32, + ISC_REQ_PROMPT_FOR_CREDS = 64, + ISC_REQ_USE_SUPPLIED_CREDS = 128, + ISC_REQ_ALLOCATE_MEMORY = 256, + ISC_REQ_USE_DCE_STYLE = 512, + ISC_REQ_DATAGRAM = 1024, + ISC_REQ_CONNECTION = 2048, + ISC_REQ_EXTENDED_ERROR = 16384, + ISC_REQ_STREAM = 32768, + ISC_REQ_INTEGRITY = 65536, + ISC_REQ_MANUAL_CRED_VALIDATION = 524288, + ISC_REQ_HTTP = 268435456, +} + +enum ISC_RET_EXTENDED_ERROR = 16384; + +enum :ULONG{ + ASC_REQ_DELEGATE = 1, + ASC_REQ_MUTUAL_AUTH = 2, + ASC_REQ_REPLAY_DETECT = 4, + ASC_REQ_SEQUENCE_DETECT = 8, + ASC_REQ_CONFIDENTIALITY = 16, + ASC_REQ_USE_SESSION_KEY = 32, + ASC_REQ_ALLOCATE_MEMORY = 256, + ASC_REQ_USE_DCE_STYLE = 512, + ASC_REQ_DATAGRAM = 1024, + ASC_REQ_CONNECTION = 2048, + ASC_REQ_EXTENDED_ERROR = 32768, + ASC_REQ_STREAM = 65536, + ASC_REQ_INTEGRITY = 131072, +} + +enum SECURITY_NATIVE_DREP = 16; +enum SECURITY_NETWORK_DREP = 0; + +enum :ULONG{ + SECPKG_STATE_ENCRYPTION_PERMITTED = 0x01, + SECPKG_STATE_STRONG_ENCRYPTION_PERMITTED = 0x02, + SECPKG_STATE_DOMAIN_CONTROLLER = 0x04, + SECPKG_STATE_WORKSTATION = 0x08, + SECPKG_STATE_STANDALONE = 0x10, +} + +/* enum definitions for Secure Service Provider/Authentication Packages */ +enum LSA_TOKEN_INFORMATION_TYPE { + LsaTokenInformationNull, + LsaTokenInformationV1 +} +alias LSA_TOKEN_INFORMATION_TYPE* PLSA_TOKEN_INFORMATION_TYPE; +enum SECPKG_EXTENDED_INFORMATION_CLASS +{ + SecpkgGssInfo = 1, + SecpkgContextThunks, + SecpkgMutualAuthLevel, + SecpkgMaxInfo +} +enum SECPKG_NAME_TYPE { + SecNameSamCompatible, + SecNameAlternateId, + SecNameFlat, + SecNameDN +} + +/* struct definitions for SSP/AP */ +struct SECPKG_PRIMARY_CRED { + LUID LogonId; + UNICODE_STRING DownlevelName; + UNICODE_STRING DomainName; + UNICODE_STRING Password; + UNICODE_STRING OldPassword; + PSID UserSid; + ULONG Flags; + UNICODE_STRING DnsDomainName; + UNICODE_STRING Upn; + UNICODE_STRING LogonServer; + UNICODE_STRING Spare1; + UNICODE_STRING Spare2; + UNICODE_STRING Spare3; + UNICODE_STRING Spare4; +} +alias SECPKG_PRIMARY_CRED* PSECPKG_PRIMARY_CRED; +struct SECPKG_SUPPLEMENTAL_CRED { + UNICODE_STRING PackageName; + ULONG CredentialSize; + PUCHAR Credentials; +} +alias SECPKG_SUPPLEMENTAL_CRED* PSECPKG_SUPPLEMENTAL_CRED; +struct SECPKG_SUPPLEMENTAL_CRED_ARRAY { + ULONG CredentialCount; + SECPKG_SUPPLEMENTAL_CRED[1] Credentials; +} +alias SECPKG_SUPPLEMENTAL_CRED_ARRAY* PSECPKG_SUPPLEMENTAL_CRED_ARRAY; +struct SECPKG_PARAMETERS { + ULONG Version; + ULONG MachineState; + ULONG SetupMode; + PSID DomainSid; + UNICODE_STRING DomainName; + UNICODE_STRING DnsDomainName; + GUID DomainGuid; +} +alias SECPKG_PARAMETERS* PSECPKG_PARAMETERS,PSECPKG_EVENT_DOMAIN_CHANGE; +alias SECPKG_PARAMETERS SECPKG_EVENT_DOMAIN_CHANGE; +struct SECPKG_CLIENT_INFO { + LUID LogonId; + ULONG ProcessID; + ULONG ThreadID; + BOOLEAN HasTcbPrivilege; + BOOLEAN Impersonating; + BOOLEAN Restricted; +} +alias SECPKG_CLIENT_INFO* PSECPKG_CLIENT_INFO; +struct SECURITY_USER_DATA { + SECURITY_STRING UserName; + SECURITY_STRING LogonDomainName; + SECURITY_STRING LogonServer; + PSID pSid; +} +alias SECURITY_USER_DATA* PSECURITY_USER_DATA,PSecurityUserData; +alias SECURITY_USER_DATA SecurityUserData; +struct SECPKG_GSS_INFO { + ULONG EncodedIdLength; + UCHAR[4] EncodedId; +} +alias SECPKG_GSS_INFO* PSECPKG_GSS_INFO; +struct SECPKG_CONTEXT_THUNKS { + ULONG InfoLevelCount; + ULONG[1] Levels; +} +alias SECPKG_CONTEXT_THUNKS* PSECPKG_CONTEXT_THUNKS; +struct SECPKG_MUTUAL_AUTH_LEVEL { + ULONG MutualAuthLevel; +} +alias SECPKG_MUTUAL_AUTH_LEVEL* PSECPKG_MUTUAL_AUTH_LEVEL; +struct SECPKG_CALL_INFO { + ULONG ProcessId; + ULONG ThreadId; + ULONG Attributes; + ULONG CallCount; +} +alias SECPKG_CALL_INFO* PSECPKG_CALL_INFO; +struct SECPKG_EXTENDED_INFORMATION { + SECPKG_EXTENDED_INFORMATION_CLASS Class; + union _Info{ + SECPKG_GSS_INFO GssInfo; + SECPKG_CONTEXT_THUNKS ContextThunks; + SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel; + } + _Info Info; +} +alias SECPKG_EXTENDED_INFORMATION* PSECPKG_EXTENDED_INFORMATION; + +/* callbacks implemented by SSP/AP dlls and called by the LSA */ +alias void function(ULONG_PTR, ULONG_PTR, PSecBuffer, + PSecBuffer) PLSA_CALLBACK_FUNCTION; + +/* misc typedefs used in the below prototypes */ +alias PVOID* PLSA_CLIENT_REQUEST; +alias ULONG LSA_SEC_HANDLE; +alias ULONG* PLSA_SEC_HANDLE; +alias LPTHREAD_START_ROUTINE SEC_THREAD_START; +alias PSECURITY_ATTRIBUTES SEC_ATTRS; + +/* functions used by SSP/AP obtainable by dispatch tables */ +alias NTSTATUS function(ULONG, PLSA_CALLBACK_FUNCTION) PLSA_REGISTER_CALLBACK; +alias NTSTATUS function(PLUID) PLSA_CREATE_LOGON_SESSION; +alias NTSTATUS function(PLUID) PLSA_DELETE_LOGON_SESSION; +alias NTSTATUS function(PLUID, ULONG, PLSA_STRING, + PLSA_STRING) PLSA_ADD_CREDENTIAL; +alias NTSTATUS function(PLUID, ULONG, PULONG, BOOLEAN, + PLSA_STRING, PULONG, PLSA_STRING) PLSA_GET_CREDENTIALS; +alias NTSTATUS function(PLUID, ULONG, PLSA_STRING) PLSA_DELETE_CREDENTIAL; +alias PVOID function(ULONG) PLSA_ALLOCATE_LSA_HEAP; +alias void function(PVOID) PLSA_FREE_LSA_HEAP; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + ULONG, PVOID*) PLSA_ALLOCATE_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, PVOID) PLSA_FREE_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, ULONG, + PVOID, PVOID) PLSA_COPY_TO_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + ULONG, PVOID, PVOID) PLSA_COPY_FROM_CLIENT_BUFFER; +alias NTSTATUS function() PLSA_IMPERSONATE_CLIENT; +alias NTSTATUS function() PLSA_UNLOAD_PACKAGE; +alias NTSTATUS function(HANDLE, PHANDLE) PLSA_DUPLICATE_HANDLE; +alias NTSTATUS function(PLUID, ULONG, + PVOID, BOOLEAN) PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS; +alias HANDLE function(SEC_ATTRS, ULONG, SEC_THREAD_START, + PVOID, ULONG, PULONG) PLSA_CREATE_THREAD; +alias NTSTATUS function(PSECPKG_CLIENT_INFO) PLSA_GET_CLIENT_INFO; +alias HANDLE function(SEC_THREAD_START, PVOID, + ULONG, ULONG, ULONG, ULONG, HANDLE) PLSA_REGISTER_NOTIFICATION; +alias NTSTATUS function(HANDLE) PLSA_CANCEL_NOTIFICATION; +alias NTSTATUS function(PSecBuffer, PSecBuffer) PLSA_MAP_BUFFER; +alias NTSTATUS function(PLUID, PTOKEN_SOURCE, + SECURITY_LOGON_TYPE, SECURITY_IMPERSONATION_LEVEL, LSA_TOKEN_INFORMATION_TYPE, + PVOID, PTOKEN_GROUPS, PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, + PUNICODE_STRING, PHANDLE, PNTSTATUS) PLSA_CREATE_TOKEN; +alias void function(NTSTATUS, NTSTATUS, PUNICODE_STRING, + PUNICODE_STRING, PUNICODE_STRING, PSID, SECURITY_LOGON_TYPE, + PTOKEN_SOURCE, PLUID) PLSA_AUDIT_LOGON; +alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, + PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE; +alias BOOLEAN function(PSECPKG_CALL_INFO) PLSA_GET_CALL_INFO; +alias NTSTATUS function(PUNICODE_STRING, PVOID, PVOID, + ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGEEX; +alias PVOID function(ULONG, ULONG) PLSA_CREATE_SHARED_MEMORY; +alias PVOID function(PVOID, ULONG) PLSA_ALLOCATE_SHARED_MEMORY; +alias void function(PVOID, PVOID) PLSA_FREE_SHARED_MEMORY; +alias BOOLEAN function(PVOID) PLSA_DELETE_SHARED_MEMORY; +alias NTSTATUS function(PSECURITY_STRING, SECPKG_NAME_TYPE, + PSECURITY_STRING, BOOLEAN, ULONG, PVOID*) PLSA_OPEN_SAM_USER; +alias NTSTATUS function(PVOID, PVOID *, PULONG, + PVOID *, PULONG) PLSA_GET_USER_CREDENTIALS; +alias NTSTATUS function(PVOID, PUCHAR *, PULONG) PLSA_GET_USER_AUTH_DATA; +alias NTSTATUS function(PVOID) PLSA_CLOSE_SAM_USER; +alias NTSTATUS function(PVOID, ULONG, + SECURITY_IMPERSONATION_LEVEL, PTOKEN_SOURCE, SECURITY_LOGON_TYPE, + PUNICODE_STRING, PHANDLE, PLUID, PUNICODE_STRING, PNTSTATUS) PLSA_CONVERT_AUTH_DATA_TO_TOKEN; +alias NTSTATUS function(PCHAR, ULONG_PTR, ULONG_PTR, + PSecBuffer, PSecBuffer) PLSA_CLIENT_CALLBACK; +alias NTSTATUS function(PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY) PLSA_UPDATE_PRIMARY_CREDENTIALS; +alias NTSTATUS function(PSECURITY_STRING, + SECPKG_NAME_TYPE, PSECURITY_STRING, PUCHAR *, PULONG, PUNICODE_STRING) PLSA_GET_AUTH_DATA_FOR_USER; +alias NTSTATUS function(ULONG, BOOLEAN, + PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING, + PULONG) PLSA_CRACK_SINGLE_NAME; +alias NTSTATUS function(ULONG, BOOLEAN, + PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS) PLSA_AUDIT_ACCOUNT_LOGON; +alias NTSTATUS function(PUNICODE_STRING, PVOID, + PVOID, ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE_PASSTHROUGH; + +/* Dispatch tables of functions used by SSP/AP */ +struct SECPKG_DLL_FUNCTIONS { + PLSA_ALLOCATE_LSA_HEAP AllocateHeap; + PLSA_FREE_LSA_HEAP FreeHeap; + PLSA_REGISTER_CALLBACK RegisterCallback; +} +alias SECPKG_DLL_FUNCTIONS* PSECPKG_DLL_FUNCTIONS; +struct LSA_DISPATCH_TABLE { + PLSA_CREATE_LOGON_SESSION CreateLogonSession; + PLSA_DELETE_LOGON_SESSION DeleteLogonSession; + PLSA_ADD_CREDENTIAL AddCredential; + PLSA_GET_CREDENTIALS GetCredentials; + PLSA_DELETE_CREDENTIAL DeleteCredential; + PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; + PLSA_FREE_LSA_HEAP FreeLsaHeap; + PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; + PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; + PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; + PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; +} +alias LSA_DISPATCH_TABLE* PLSA_DISPATCH_TABLE; +struct LSA_SECPKG_FUNCTION_TABLE { + PLSA_CREATE_LOGON_SESSION CreateLogonSession; + PLSA_DELETE_LOGON_SESSION DeleteLogonSession; + PLSA_ADD_CREDENTIAL AddCredential; + PLSA_GET_CREDENTIALS GetCredentials; + PLSA_DELETE_CREDENTIAL DeleteCredential; + PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; + PLSA_FREE_LSA_HEAP FreeLsaHeap; + PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; + PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; + PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; + PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; + PLSA_IMPERSONATE_CLIENT ImpersonateClient; + PLSA_UNLOAD_PACKAGE UnloadPackage; + PLSA_DUPLICATE_HANDLE DuplicateHandle; + PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials; + PLSA_CREATE_THREAD CreateThread; + PLSA_GET_CLIENT_INFO GetClientInfo; + PLSA_REGISTER_NOTIFICATION RegisterNotification; + PLSA_CANCEL_NOTIFICATION CancelNotification; + PLSA_MAP_BUFFER MapBuffer; + PLSA_CREATE_TOKEN CreateToken; + PLSA_AUDIT_LOGON AuditLogon; + PLSA_CALL_PACKAGE CallPackage; + PLSA_FREE_LSA_HEAP FreeReturnBuffer; + PLSA_GET_CALL_INFO GetCallInfo; + PLSA_CALL_PACKAGEEX CallPackageEx; + PLSA_CREATE_SHARED_MEMORY CreateSharedMemory; + PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory; + PLSA_FREE_SHARED_MEMORY FreeSharedMemory; + PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory; + PLSA_OPEN_SAM_USER OpenSamUser; + PLSA_GET_USER_CREDENTIALS GetUserCredentials; + PLSA_GET_USER_AUTH_DATA GetUserAuthData; + PLSA_CLOSE_SAM_USER CloseSamUser; + PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken; + PLSA_CLIENT_CALLBACK ClientCallback; + PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials; + PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser; + PLSA_CRACK_SINGLE_NAME CrackSingleName; + PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; + PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; +} +alias LSA_SECPKG_FUNCTION_TABLE* PLSA_SECPKG_FUNCTION_TABLE; + +/* functions implemented by SSP/AP obtainable by dispatch tables */ +alias NTSTATUS function(ULONG, PLSA_DISPATCH_TABLE, + PLSA_STRING, PLSA_STRING, PLSA_STRING *) PLSA_AP_INITIALIZE_PACKAGE; +alias NTSTATUS function(LPWSTR, LPWSTR, LPWSTR, LPWSTR, + DWORD, DWORD, PHANDLE) PLSA_AP_LOGON_USER; +alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, + PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE; +alias void function(PLUID) PLSA_AP_LOGON_TERMINATED; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_UNTRUSTED; +alias NTSTATUS function(PUNICODE_STRING, + PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_PASSTHROUGH; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, + PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, + PUNICODE_STRING *) PLSA_AP_LOGON_USER_EX; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, + PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, + PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *) PLSA_AP_LOGON_USER_EX2; +alias NTSTATUS function(ULONG_PTR, PSECPKG_PARAMETERS, + PLSA_SECPKG_FUNCTION_TABLE) SpInitializeFn; +alias NTSTATUS function() SpShutDownFn; +alias NTSTATUS function(PSecPkgInfoW) SpGetInfoFn; +alias NTSTATUS function(SECURITY_LOGON_TYPE, + PUNICODE_STRING, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED) SpAcceptCredentialsFn; +alias NTSTATUS function(PUNICODE_STRING, ULONG, + PLUID, PVOID, PVOID, PVOID, PLSA_SEC_HANDLE, PTimeStamp) SpAcquireCredentialsHandleFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryCredentialsAttributesFn; +alias NTSTATUS function(LSA_SEC_HANDLE) SpFreeCredentialsHandleFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpSaveCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpGetCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpDeleteCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, LSA_SEC_HANDLE, + PUNICODE_STRING, ULONG, ULONG, PSecBufferDesc, PLSA_SEC_HANDLE, PSecBufferDesc, + PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpInitLsaModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, + LSA_SEC_HANDLE, PSecBufferDesc, ULONG, ULONG, PLSA_SEC_HANDLE, PSecBufferDesc, + PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpAcceptLsaModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE) SpDeleteContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpApplyControlTokenFn; +alias NTSTATUS function(PLUID, ULONG, PSecurityUserData *) SpGetUserInfoFn; +alias NTSTATUS function(SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION *) SpGetExtendedInformationFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryContextAttributesFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PUNICODE_STRING, + PUNICODE_STRING, ULONG, PVOID, PVOID, PVOID, PTimeStamp) SpAddCredentialsFn; +alias NTSTATUS function( + SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION) SpSetExtendedInformationFn; +alias NTSTATUS function(ULONG, PSECPKG_DLL_FUNCTIONS, + PVOID *) SpInstanceInitFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpInitUserModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, + PSecBufferDesc, ULONG) SpMakeSignatureFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, + ULONG, PULONG) SpVerifySignatureFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PSecBufferDesc, + ULONG) SpSealMessageFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, + ULONG, PULONG) SpUnsealMessageFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PHANDLE) SpGetContextTokenFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpCompleteAuthTokenFn; +alias NTSTATUS function(PSecBuffer, PSecBuffer) SpFormatCredentialsFn; +alias NTSTATUS function(ULONG, PUCHAR, PULONG, + PVOID *) SpMarshallSupplementalCredsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, + PSecBuffer, PHANDLE) SpExportSecurityContextFn; +alias NTSTATUS function(PSecBuffer, HANDLE, + PLSA_SEC_HANDLE) SpImportSecurityContextFn; + +/* Dispatch tables of functions implemented by SSP/AP */ +struct SECPKG_FUNCTION_TABLE { + PLSA_AP_INITIALIZE_PACKAGE InitializePackage; + PLSA_AP_LOGON_USER LogonUser; + PLSA_AP_CALL_PACKAGE CallPackage; + PLSA_AP_LOGON_TERMINATED LogonTerminated; + PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted; + PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; + PLSA_AP_LOGON_USER_EX LogonUserEx; + PLSA_AP_LOGON_USER_EX2 LogonUserEx2; + SpInitializeFn *Initialize; + SpShutDownFn *Shutdown; + SpGetInfoFn *GetInfo; + SpAcceptCredentialsFn *AcceptCredentials; + SpAcquireCredentialsHandleFn *AcquireCredentialsHandle; + SpQueryCredentialsAttributesFn *QueryCredentialsAttributes; + SpFreeCredentialsHandleFn *FreeCredentialsHandle; + SpSaveCredentialsFn *SaveCredentials; + SpGetCredentialsFn *GetCredentials; + SpDeleteCredentialsFn *DeleteCredentials; + SpInitLsaModeContextFn *InitLsaModeContext; + SpAcceptLsaModeContextFn *AcceptLsaModeContext; + SpDeleteContextFn *DeleteContext; + SpApplyControlTokenFn *ApplyControlToken; + SpGetUserInfoFn *GetUserInfo; + SpGetExtendedInformationFn *GetExtendedInformation; + SpQueryContextAttributesFn *QueryContextAttributes; + SpAddCredentialsFn *AddCredentials; + SpSetExtendedInformationFn *SetExtendedInformation; +} +alias SECPKG_FUNCTION_TABLE* PSECPKG_FUNCTION_TABLE; + +struct SECPKG_USER_FUNCTION_TABLE { + SpInstanceInitFn *InstanceInit; + SpInitUserModeContextFn *InitUserModeContext; + SpMakeSignatureFn *MakeSignature; + SpVerifySignatureFn *VerifySignature; + SpSealMessageFn *SealMessage; + SpUnsealMessageFn *UnsealMessage; + SpGetContextTokenFn *GetContextToken; + SpQueryContextAttributesFn *QueryContextAttributes; + SpCompleteAuthTokenFn *CompleteAuthToken; + SpDeleteContextFn *DeleteUserModeContext; + SpFormatCredentialsFn *FormatCredentials; + SpMarshallSupplementalCredsFn *MarshallSupplementalCreds; + SpExportSecurityContextFn *ExportContext; + SpImportSecurityContextFn *ImportContext; +} +alias SECPKG_USER_FUNCTION_TABLE* PSECPKG_USER_FUNCTION_TABLE; + +/* Entry points to SSP/AP */ +alias NTSTATUS function(ULONG, PULONG, + PSECPKG_FUNCTION_TABLE *, PULONG) SpLsaModeInitializeFn; +alias NTSTATUS function(ULONG, PULONG, + PSECPKG_USER_FUNCTION_TABLE *, PULONG) SpUserModeInitializeFn; + diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d index 0d0667d2a8..6b67245a22 100644 --- a/src/core/sys/windows/oaidl.d +++ b/src/core/sys/windows/oaidl.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* oaidl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_oaidl.d) + */ module core.sys.windows.oaidl; private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/objbase.d b/src/core/sys/windows/objbase.d index 16ac43a592..46c18d0ef5 100644 --- a/src/core/sys/windows/objbase.d +++ b/src/core/sys/windows/objbase.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* objbase.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_objbase.d) + */ module core.sys.windows.objbase; pragma(lib, "ole32"); diff --git a/src/core/sys/windows/objfwd.d b/src/core/sys/windows/objfwd.d index 813a6c26d1..11974001b5 100644 --- a/src/core/sys/windows/objfwd.d +++ b/src/core/sys/windows/objfwd.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* objfwd.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_objfwd.d) + */ module core.sys.windows.objfwd; private import core.sys.windows.objidl; diff --git a/src/core/sys/windows/objidl.d b/src/core/sys/windows/objidl.d index 8eba98c92a..96d7986894 100644 --- a/src/core/sys/windows/objidl.d +++ b/src/core/sys/windows/objidl.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* objidl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_objidl.d) + */ // TODO (Don): // # why is "alias IPSFactoryBuffer* LPPSFACTORYBUFFER;" in this file, // rather than in objfwd ? diff --git a/src/core/sys/windows/objsafe.d b/src/core/sys/windows/objsafe.d index c362fd2a73..9f4925433d 100644 --- a/src/core/sys/windows/objsafe.d +++ b/src/core/sys/windows/objsafe.d @@ -1,23 +1,22 @@ -/***********************************************************************\ -* objsafe.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.objsafe; - -private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef; - -enum { - INTERFACESAFE_FOR_UNTRUSTED_CALLER = 1, - INTERFACESAFE_FOR_UNTRUSTED_DATA -} - -interface IObjectSafety : IUnknown { - HRESULT GetInterfaceSafetyOptions(REFIID, DWORD*, DWORD*); - HRESULT SetInterfaceSafetyOptions(REFIID, DWORD, DWORD); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_objsafe.d) + */ +module core.sys.windows.objsafe; + +private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef; + +enum { + INTERFACESAFE_FOR_UNTRUSTED_CALLER = 1, + INTERFACESAFE_FOR_UNTRUSTED_DATA +} + +interface IObjectSafety : IUnknown { + HRESULT GetInterfaceSafetyOptions(REFIID, DWORD*, DWORD*); + HRESULT SetInterfaceSafetyOptions(REFIID, DWORD, DWORD); +} diff --git a/src/core/sys/windows/ocidl.d b/src/core/sys/windows/ocidl.d index d9dce12d28..32097e6eef 100644 --- a/src/core/sys/windows/ocidl.d +++ b/src/core/sys/windows/ocidl.d @@ -1,13 +1,13 @@ -/***********************************************************************\ -* ocidl.d * -* * -* Windows API header module * -* Part of the Internet Development SDK * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Part of the Internet Development SDK + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ocidl.d) + */ module core.sys.windows.ocidl; private import core.sys.windows.ole2, core.sys.windows.oleidl, core.sys.windows.oaidl, core.sys.windows.objfwd, diff --git a/src/core/sys/windows/odbcinst.d b/src/core/sys/windows/odbcinst.d index e5c485fd9a..856adc6e0e 100644 --- a/src/core/sys/windows/odbcinst.d +++ b/src/core/sys/windows/odbcinst.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* odbcinst.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_odbcinst.d) + */ module core.sys.windows.odbcinst; import core.sys.windows.sql; diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index 104ee57139..be818f0eb6 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -1,362 +1,361 @@ -/***********************************************************************\ -* ole.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.ole; - -private import core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.uuid; - -alias LPCSTR OLE_LPCSTR; - -/+#define LRESULT LONG -#define HGLOBAL HANDLE+/ - -enum { - OT_LINK = 1, - OT_EMBEDDED, - OT_STATIC -} - -const OLEVERB_PRIMARY = 0; -const OF_SET = 1; -const OF_GET = 2; -const OF_HANDLER = 4; - -struct OLETARGETDEVICE { - USHORT otdDeviceNameOffset; - USHORT otdDriverNameOffset; - USHORT otdPortNameOffset; - USHORT otdExtDevmodeOffset; - USHORT otdExtDevmodeSize; - USHORT otdEnvironmentOffset; - USHORT otdEnvironmentSize; - BYTE _otdData; - BYTE* otdData() { return &_otdData; } -} -alias OLETARGETDEVICE* LPOLETARGETDEVICE; - -enum OLESTATUS { - OLE_OK, - OLE_WAIT_FOR_RELEASE, - OLE_BUSY, - OLE_ERROR_PROTECT_ONLY, - OLE_ERROR_MEMORY, - OLE_ERROR_STREAM, - OLE_ERROR_STATIC, - OLE_ERROR_BLANK, - OLE_ERROR_DRAW, - OLE_ERROR_METAFILE, - OLE_ERROR_ABORT, - OLE_ERROR_CLIPBOARD, - OLE_ERROR_FORMAT, - OLE_ERROR_OBJECT, - OLE_ERROR_OPTION, - OLE_ERROR_PROTOCOL, - OLE_ERROR_ADDRESS, - OLE_ERROR_NOT_EQUAL, - OLE_ERROR_HANDLE, - OLE_ERROR_GENERIC, - OLE_ERROR_CLASS, - OLE_ERROR_SYNTAX, - OLE_ERROR_DATATYPE, - OLE_ERROR_PALETTE, - OLE_ERROR_NOT_LINK, - OLE_ERROR_NOT_EMPTY, - OLE_ERROR_SIZE, - OLE_ERROR_DRIVE, - OLE_ERROR_NETWORK, - OLE_ERROR_NAME, - OLE_ERROR_TEMPLATE, - OLE_ERROR_NEW, - OLE_ERROR_EDIT, - OLE_ERROR_OPEN, - OLE_ERROR_NOT_OPEN, - OLE_ERROR_LAUNCH, - OLE_ERROR_COMM, - OLE_ERROR_TERMINATE, - OLE_ERROR_COMMAND, - OLE_ERROR_SHOW, - OLE_ERROR_DOVERB, - OLE_ERROR_ADVISE_NATIVE, - OLE_ERROR_ADVISE_PICT, - OLE_ERROR_ADVISE_RENAME, - OLE_ERROR_POKE_NATIVE, - OLE_ERROR_REQUEST_NATIVE, - OLE_ERROR_REQUEST_PICT, - OLE_ERROR_SERVER_BLOCKED, - OLE_ERROR_REGISTRATION, - OLE_ERROR_ALREADY_REGISTERED, - OLE_ERROR_TASK, - OLE_ERROR_OUTOFDATE, - OLE_ERROR_CANT_UPDATE_CLIENT, - OLE_ERROR_UPDATE, - OLE_ERROR_SETDATA_FORMAT, - OLE_ERROR_STATIC_FROM_OTHER_OS, - OLE_ERROR_FILE_VER, - OLE_WARN_DELETE_DATA = 1000 -} - -enum OLE_NOTIFICATION { - OLE_CHANGED, - OLE_SAVED, - OLE_CLOSED, - OLE_RENAMED, - OLE_QUERY_PAINT, - OLE_RELEASE, - OLE_QUERY_RETRY -} - -enum OLE_RELEASE_METHOD { - OLE_NONE, - OLE_DELETE, - OLE_LNKPASTE, - OLE_EMBPASTE, - OLE_SHOW, - OLE_RUN, - OLE_ACTIVATE, - OLE_UPDATE, - OLE_CLOSE, - OLE_RECONNECT, - OLE_SETUPDATEOPTIONS, - OLE_SERVERUNLAUNCH, - OLE_LOADFROMSTREAM, - OLE_SETDATA, - OLE_REQUESTDATA, - OLE_OTHER, - OLE_CREATE, - OLE_CREATEFROMTEMPLATE, - OLE_CREATELINKFROMFILE, - OLE_COPYFROMLNK, - OLE_CREATEFROMFILE, - OLE_CREATEINVISIBLE -} - -enum OLEOPT_RENDER { - olerender_none, - olerender_draw, - olerender_format -} - -alias WORD OLECLIPFORMAT; - -enum OLEOPT_UPDATE { - oleupdate_always, - oleupdate_onsave, - oleupdate_oncall, -// #ifdef OLE_INTERNAL - oleupdate_onclose -// #endif -} - -mixin DECLARE_HANDLE!("HOBJECT"); -alias LONG LHSERVER, LHCLIENTDOC, LHSERVERDOC; - -struct OLEOBJECTVTBL { - extern (Windows) { - void* function(LPOLEOBJECT, OLE_LPCSTR) QueryProtocol; - OLESTATUS function(LPOLEOBJECT) Release; - OLESTATUS function(LPOLEOBJECT, BOOL) Show; - OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL) DoVerb; - OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*) GetData; - OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE) SetData; - OLESTATUS function(LPOLEOBJECT, HGLOBAL) SetTargetDevice; - OLESTATUS function(LPOLEOBJECT, RECT*) SetBounds; - OLECLIPFORMAT function(LPOLEOBJECT, OLECLIPFORMAT) EnumFormats; - OLESTATUS function(LPOLEOBJECT, LOGPALETTE*) SetColorScheme; -//#ifndef SERVERONLY - OLESTATUS function(LPOLEOBJECT) Delete; - OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; - OLESTATUS function(LPOLEOBJECT, LPOLESTREAM) SaveToStream; - OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, - LPOLEOBJECT*) Clone; - OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, - LPOLEOBJECT*) CopyFromLink; - OLESTATUS function(LPOLEOBJECT, LPOLEOBJECT) Equal; - OLESTATUS function(LPOLEOBJECT) CopyToClipboard; - OLESTATUS function(LPOLEOBJECT, HDC, RECT*, RECT*, HDC) Draw; - OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, RECT*) - Activate; - OLESTATUS function(LPOLEOBJECT, HGLOBAL, UINT) Execute; - OLESTATUS function(LPOLEOBJECT) Close; - OLESTATUS function(LPOLEOBJECT) Update; - OLESTATUS function(LPOLEOBJECT) Reconnect; - OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, - OLE_LPCSTR, LPOLEOBJECT*) ObjectConvert; - OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE*) GetLinkUpdateOptions; - OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE) SetLinkUpdateOptions; - OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR) Rename; - OLESTATUS function(LPOLEOBJECT, LPSTR, UINT*) QueryName; - OLESTATUS function(LPOLEOBJECT, LONG*) QueryType; - OLESTATUS function(LPOLEOBJECT, RECT*) QueryBounds; - OLESTATUS function(LPOLEOBJECT, DWORD*) QuerySize; - OLESTATUS function(LPOLEOBJECT) QueryOpen; - OLESTATUS function(LPOLEOBJECT) QueryOutOfDate; - OLESTATUS function(LPOLEOBJECT) QueryReleaseStatus; - OLESTATUS function(LPOLEOBJECT) QueryReleaseError; - OLE_RELEASE_METHOD function(LPOLEOBJECT) QueryReleaseMethod; - OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT) RequestData; - OLESTATUS function(LPOLEOBJECT, UINT, LONG*) ObjectLong; - OLESTATUS function(LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL) ChangeData; -//#endif - } -} -alias OLEOBJECTVTBL* LPOLEOBJECTVTBL; - -//#ifndef OLE_INTERNAL -struct OLEOBJECT { - LPOLEOBJECTVTBL lpvtbl; -} -alias OLEOBJECT* LPOLEOBJECT; -//#endif - -struct OLECLIENTVTBL { - int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack; -} -alias OLECLIENTVTBL* LPOLECLIENTVTBL; - -struct OLECLIENT { - LPOLECLIENTVTBL lpvtbl; -} -alias OLECLIENT* LPOLECLIENT; - -struct OLESTREAMVTBL { - DWORD function(LPOLESTREAM, void*, DWORD) Get; - DWORD function(LPOLESTREAM, void*, DWORD) Put; -} -alias OLESTREAMVTBL* LPOLESTREAMVTBL; - -struct OLESTREAM { - LPOLESTREAMVTBL lpstbl; -} -alias OLESTREAM* LPOLESTREAM; - -enum OLE_SERVER_USE { - OLE_SERVER_MULTI, - OLE_SERVER_SINGLE -} - -struct OLESERVERVTBL { - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC*) - Open; - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, - LPOLESERVERDOC*) Create; - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, - OLE_LPCSTR, LPOLESERVERDOC*) CreateFromTemplate; - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, - LPOLESERVERDOC*) Edit; - OLESTATUS function(LPOLESERVER) Exit; - OLESTATUS function(LPOLESERVER) Release; - OLESTATUS function(LPOLESERVER, HGLOBAL) Execute; -} -alias TypeDef!(OLESERVERVTBL*) LPOLESERVERVTBL; - -struct OLESERVER { - LPOLESERVERVTBL lpvtbl; -} -alias OLESERVER* LPOLESERVER; - -struct OLESERVERDOCVTBL { - OLESTATUS function(LPOLESERVERDOC) Save; - OLESTATUS function(LPOLESERVERDOC) Close; - OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; - OLESTATUS function(LPOLESERVERDOC, RECT*) SetDocDimensions; - OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT*, LPOLECLIENT) - GetObject; - OLESTATUS function(LPOLESERVERDOC) Release; - OLESTATUS function(LPOLESERVERDOC, LOGPALETTE*) SetColorScheme; - OLESTATUS function(LPOLESERVERDOC, HGLOBAL) Execute; -} -alias OLESERVERDOCVTBL* LPOLESERVERDOCVTBL; - -struct OLESERVERDOC { - LPOLESERVERDOCVTBL lpvtbl; -} -alias OLESERVERDOC* LPOLESERVERDOC; - -extern (Windows) { - OLESTATUS OleDelete(LPOLEOBJECT); - OLESTATUS OleRelease(LPOLEOBJECT); - OLESTATUS OleSaveToStream(LPOLEOBJECT, LPOLESTREAM); - OLESTATUS OleEqual(LPOLEOBJECT, LPOLEOBJECT); - OLESTATUS OleCopyToClipboard(LPOLEOBJECT); - OLESTATUS OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR); - OLESTATUS OleSetTargetDevice(LPOLEOBJECT, HGLOBAL); - OLESTATUS OleSetBounds(LPOLEOBJECT, LPCRECT); - OLESTATUS OleSetColorScheme(LPOLEOBJECT, const(LOGPALETTE)*); - OLESTATUS OleQueryBounds(LPOLEOBJECT, RECT*); - OLESTATUS OleQuerySize(LPOLEOBJECT, DWORD*); - OLESTATUS OleDraw(LPOLEOBJECT, HDC, LPCRECT, LPCRECT, HDC); - OLESTATUS OleQueryOpen(LPOLEOBJECT); - OLESTATUS OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPCRECT); - OLESTATUS OleExecute(LPOLEOBJECT, HGLOBAL, UINT); - OLESTATUS OleClose(LPOLEOBJECT); - OLESTATUS OleUpdate(LPOLEOBJECT); - OLESTATUS OleReconnect(LPOLEOBJECT); - OLESTATUS OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE*); - OLESTATUS OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE); - void* OleQueryProtocol(LPOLEOBJECT, LPCSTR); - OLESTATUS OleQueryReleaseStatus(LPOLEOBJECT); - OLESTATUS OleQueryReleaseError(LPOLEOBJECT); - OLE_RELEASE_METHOD OleQueryReleaseMethod(LPOLEOBJECT); - OLESTATUS OleQueryType(LPOLEOBJECT, LONG*); - DWORD OleQueryClientVersion(); - DWORD OleQueryServerVersion(); - OLECLIPFORMAT OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT); - OLESTATUS OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*); - OLESTATUS OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE); - OLESTATUS OleQueryOutOfDate(LPOLEOBJECT); - OLESTATUS OleRequestData(LPOLEOBJECT, OLECLIPFORMAT); - OLESTATUS OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, - LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, - LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*); - OLESTATUS OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL); - OLESTATUS OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*); - OLESTATUS OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*); - OLESTATUS OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*); - OLESTATUS OleRename(LPOLEOBJECT, LPCSTR); - OLESTATUS OleQueryName(LPOLEOBJECT, LPSTR, UINT*); - OLESTATUS OleRevokeObject(LPOLECLIENT); - BOOL OleIsDcMeta(HDC); - OLESTATUS OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC*); - OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); - OLESTATUS OleRenameClientDoc(LHCLIENTDOC, LPCSTR); - OLESTATUS OleRevertClientDoc(LHCLIENTDOC); - OLESTATUS OleSavedClientDoc(LHCLIENTDOC); - OLESTATUS OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT*); - OLESTATUS OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER*, HINSTANCE, - OLE_SERVER_USE); - OLESTATUS OleRevokeServer(LHSERVER); - OLESTATUS OleBlockServer(LHSERVER); - OLESTATUS OleUnblockServer(LHSERVER, BOOL*); - OLESTATUS OleLockServer(LPOLEOBJECT, LHSERVER*); - OLESTATUS OleUnlockServer(LHSERVER); - OLESTATUS OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC, - LHSERVERDOC*); - OLESTATUS OleRevokeServerDoc(LHSERVERDOC); - OLESTATUS OleRenameServerDoc(LHSERVERDOC, LPCSTR); - OLESTATUS OleRevertServerDoc(LHSERVERDOC); - OLESTATUS OleSavedServerDoc(LHSERVERDOC); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ole.d) + */ +module core.sys.windows.ole; + +private import core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.uuid; + +alias LPCSTR OLE_LPCSTR; + +/+#define LRESULT LONG +#define HGLOBAL HANDLE+/ + +enum { + OT_LINK = 1, + OT_EMBEDDED, + OT_STATIC +} + +const OLEVERB_PRIMARY = 0; +const OF_SET = 1; +const OF_GET = 2; +const OF_HANDLER = 4; + +struct OLETARGETDEVICE { + USHORT otdDeviceNameOffset; + USHORT otdDriverNameOffset; + USHORT otdPortNameOffset; + USHORT otdExtDevmodeOffset; + USHORT otdExtDevmodeSize; + USHORT otdEnvironmentOffset; + USHORT otdEnvironmentSize; + BYTE _otdData; + BYTE* otdData() { return &_otdData; } +} +alias OLETARGETDEVICE* LPOLETARGETDEVICE; + +enum OLESTATUS { + OLE_OK, + OLE_WAIT_FOR_RELEASE, + OLE_BUSY, + OLE_ERROR_PROTECT_ONLY, + OLE_ERROR_MEMORY, + OLE_ERROR_STREAM, + OLE_ERROR_STATIC, + OLE_ERROR_BLANK, + OLE_ERROR_DRAW, + OLE_ERROR_METAFILE, + OLE_ERROR_ABORT, + OLE_ERROR_CLIPBOARD, + OLE_ERROR_FORMAT, + OLE_ERROR_OBJECT, + OLE_ERROR_OPTION, + OLE_ERROR_PROTOCOL, + OLE_ERROR_ADDRESS, + OLE_ERROR_NOT_EQUAL, + OLE_ERROR_HANDLE, + OLE_ERROR_GENERIC, + OLE_ERROR_CLASS, + OLE_ERROR_SYNTAX, + OLE_ERROR_DATATYPE, + OLE_ERROR_PALETTE, + OLE_ERROR_NOT_LINK, + OLE_ERROR_NOT_EMPTY, + OLE_ERROR_SIZE, + OLE_ERROR_DRIVE, + OLE_ERROR_NETWORK, + OLE_ERROR_NAME, + OLE_ERROR_TEMPLATE, + OLE_ERROR_NEW, + OLE_ERROR_EDIT, + OLE_ERROR_OPEN, + OLE_ERROR_NOT_OPEN, + OLE_ERROR_LAUNCH, + OLE_ERROR_COMM, + OLE_ERROR_TERMINATE, + OLE_ERROR_COMMAND, + OLE_ERROR_SHOW, + OLE_ERROR_DOVERB, + OLE_ERROR_ADVISE_NATIVE, + OLE_ERROR_ADVISE_PICT, + OLE_ERROR_ADVISE_RENAME, + OLE_ERROR_POKE_NATIVE, + OLE_ERROR_REQUEST_NATIVE, + OLE_ERROR_REQUEST_PICT, + OLE_ERROR_SERVER_BLOCKED, + OLE_ERROR_REGISTRATION, + OLE_ERROR_ALREADY_REGISTERED, + OLE_ERROR_TASK, + OLE_ERROR_OUTOFDATE, + OLE_ERROR_CANT_UPDATE_CLIENT, + OLE_ERROR_UPDATE, + OLE_ERROR_SETDATA_FORMAT, + OLE_ERROR_STATIC_FROM_OTHER_OS, + OLE_ERROR_FILE_VER, + OLE_WARN_DELETE_DATA = 1000 +} + +enum OLE_NOTIFICATION { + OLE_CHANGED, + OLE_SAVED, + OLE_CLOSED, + OLE_RENAMED, + OLE_QUERY_PAINT, + OLE_RELEASE, + OLE_QUERY_RETRY +} + +enum OLE_RELEASE_METHOD { + OLE_NONE, + OLE_DELETE, + OLE_LNKPASTE, + OLE_EMBPASTE, + OLE_SHOW, + OLE_RUN, + OLE_ACTIVATE, + OLE_UPDATE, + OLE_CLOSE, + OLE_RECONNECT, + OLE_SETUPDATEOPTIONS, + OLE_SERVERUNLAUNCH, + OLE_LOADFROMSTREAM, + OLE_SETDATA, + OLE_REQUESTDATA, + OLE_OTHER, + OLE_CREATE, + OLE_CREATEFROMTEMPLATE, + OLE_CREATELINKFROMFILE, + OLE_COPYFROMLNK, + OLE_CREATEFROMFILE, + OLE_CREATEINVISIBLE +} + +enum OLEOPT_RENDER { + olerender_none, + olerender_draw, + olerender_format +} + +alias WORD OLECLIPFORMAT; + +enum OLEOPT_UPDATE { + oleupdate_always, + oleupdate_onsave, + oleupdate_oncall, +// #ifdef OLE_INTERNAL + oleupdate_onclose +// #endif +} + +mixin DECLARE_HANDLE!("HOBJECT"); +alias LONG LHSERVER, LHCLIENTDOC, LHSERVERDOC; + +struct OLEOBJECTVTBL { + extern (Windows) { + void* function(LPOLEOBJECT, OLE_LPCSTR) QueryProtocol; + OLESTATUS function(LPOLEOBJECT) Release; + OLESTATUS function(LPOLEOBJECT, BOOL) Show; + OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL) DoVerb; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*) GetData; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE) SetData; + OLESTATUS function(LPOLEOBJECT, HGLOBAL) SetTargetDevice; + OLESTATUS function(LPOLEOBJECT, RECT*) SetBounds; + OLECLIPFORMAT function(LPOLEOBJECT, OLECLIPFORMAT) EnumFormats; + OLESTATUS function(LPOLEOBJECT, LOGPALETTE*) SetColorScheme; +//#ifndef SERVERONLY + OLESTATUS function(LPOLEOBJECT) Delete; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; + OLESTATUS function(LPOLEOBJECT, LPOLESTREAM) SaveToStream; + OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, + LPOLEOBJECT*) Clone; + OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, + LPOLEOBJECT*) CopyFromLink; + OLESTATUS function(LPOLEOBJECT, LPOLEOBJECT) Equal; + OLESTATUS function(LPOLEOBJECT) CopyToClipboard; + OLESTATUS function(LPOLEOBJECT, HDC, RECT*, RECT*, HDC) Draw; + OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, RECT*) + Activate; + OLESTATUS function(LPOLEOBJECT, HGLOBAL, UINT) Execute; + OLESTATUS function(LPOLEOBJECT) Close; + OLESTATUS function(LPOLEOBJECT) Update; + OLESTATUS function(LPOLEOBJECT) Reconnect; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, + OLE_LPCSTR, LPOLEOBJECT*) ObjectConvert; + OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE*) GetLinkUpdateOptions; + OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE) SetLinkUpdateOptions; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR) Rename; + OLESTATUS function(LPOLEOBJECT, LPSTR, UINT*) QueryName; + OLESTATUS function(LPOLEOBJECT, LONG*) QueryType; + OLESTATUS function(LPOLEOBJECT, RECT*) QueryBounds; + OLESTATUS function(LPOLEOBJECT, DWORD*) QuerySize; + OLESTATUS function(LPOLEOBJECT) QueryOpen; + OLESTATUS function(LPOLEOBJECT) QueryOutOfDate; + OLESTATUS function(LPOLEOBJECT) QueryReleaseStatus; + OLESTATUS function(LPOLEOBJECT) QueryReleaseError; + OLE_RELEASE_METHOD function(LPOLEOBJECT) QueryReleaseMethod; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT) RequestData; + OLESTATUS function(LPOLEOBJECT, UINT, LONG*) ObjectLong; + OLESTATUS function(LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL) ChangeData; +//#endif + } +} +alias OLEOBJECTVTBL* LPOLEOBJECTVTBL; + +//#ifndef OLE_INTERNAL +struct OLEOBJECT { + LPOLEOBJECTVTBL lpvtbl; +} +alias OLEOBJECT* LPOLEOBJECT; +//#endif + +struct OLECLIENTVTBL { + int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack; +} +alias OLECLIENTVTBL* LPOLECLIENTVTBL; + +struct OLECLIENT { + LPOLECLIENTVTBL lpvtbl; +} +alias OLECLIENT* LPOLECLIENT; + +struct OLESTREAMVTBL { + DWORD function(LPOLESTREAM, void*, DWORD) Get; + DWORD function(LPOLESTREAM, void*, DWORD) Put; +} +alias OLESTREAMVTBL* LPOLESTREAMVTBL; + +struct OLESTREAM { + LPOLESTREAMVTBL lpstbl; +} +alias OLESTREAM* LPOLESTREAM; + +enum OLE_SERVER_USE { + OLE_SERVER_MULTI, + OLE_SERVER_SINGLE +} + +struct OLESERVERVTBL { + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC*) + Open; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + LPOLESERVERDOC*) Create; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + OLE_LPCSTR, LPOLESERVERDOC*) CreateFromTemplate; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + LPOLESERVERDOC*) Edit; + OLESTATUS function(LPOLESERVER) Exit; + OLESTATUS function(LPOLESERVER) Release; + OLESTATUS function(LPOLESERVER, HGLOBAL) Execute; +} +alias TypeDef!(OLESERVERVTBL*) LPOLESERVERVTBL; + +struct OLESERVER { + LPOLESERVERVTBL lpvtbl; +} +alias OLESERVER* LPOLESERVER; + +struct OLESERVERDOCVTBL { + OLESTATUS function(LPOLESERVERDOC) Save; + OLESTATUS function(LPOLESERVERDOC) Close; + OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; + OLESTATUS function(LPOLESERVERDOC, RECT*) SetDocDimensions; + OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT*, LPOLECLIENT) + GetObject; + OLESTATUS function(LPOLESERVERDOC) Release; + OLESTATUS function(LPOLESERVERDOC, LOGPALETTE*) SetColorScheme; + OLESTATUS function(LPOLESERVERDOC, HGLOBAL) Execute; +} +alias OLESERVERDOCVTBL* LPOLESERVERDOCVTBL; + +struct OLESERVERDOC { + LPOLESERVERDOCVTBL lpvtbl; +} +alias OLESERVERDOC* LPOLESERVERDOC; + +extern (Windows) { + OLESTATUS OleDelete(LPOLEOBJECT); + OLESTATUS OleRelease(LPOLEOBJECT); + OLESTATUS OleSaveToStream(LPOLEOBJECT, LPOLESTREAM); + OLESTATUS OleEqual(LPOLEOBJECT, LPOLEOBJECT); + OLESTATUS OleCopyToClipboard(LPOLEOBJECT); + OLESTATUS OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR); + OLESTATUS OleSetTargetDevice(LPOLEOBJECT, HGLOBAL); + OLESTATUS OleSetBounds(LPOLEOBJECT, LPCRECT); + OLESTATUS OleSetColorScheme(LPOLEOBJECT, const(LOGPALETTE)*); + OLESTATUS OleQueryBounds(LPOLEOBJECT, RECT*); + OLESTATUS OleQuerySize(LPOLEOBJECT, DWORD*); + OLESTATUS OleDraw(LPOLEOBJECT, HDC, LPCRECT, LPCRECT, HDC); + OLESTATUS OleQueryOpen(LPOLEOBJECT); + OLESTATUS OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPCRECT); + OLESTATUS OleExecute(LPOLEOBJECT, HGLOBAL, UINT); + OLESTATUS OleClose(LPOLEOBJECT); + OLESTATUS OleUpdate(LPOLEOBJECT); + OLESTATUS OleReconnect(LPOLEOBJECT); + OLESTATUS OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE*); + OLESTATUS OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE); + void* OleQueryProtocol(LPOLEOBJECT, LPCSTR); + OLESTATUS OleQueryReleaseStatus(LPOLEOBJECT); + OLESTATUS OleQueryReleaseError(LPOLEOBJECT); + OLE_RELEASE_METHOD OleQueryReleaseMethod(LPOLEOBJECT); + OLESTATUS OleQueryType(LPOLEOBJECT, LONG*); + DWORD OleQueryClientVersion(); + DWORD OleQueryServerVersion(); + OLECLIPFORMAT OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT); + OLESTATUS OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*); + OLESTATUS OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE); + OLESTATUS OleQueryOutOfDate(LPOLEOBJECT); + OLESTATUS OleRequestData(LPOLEOBJECT, OLECLIPFORMAT); + OLESTATUS OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, + LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, + LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL); + OLESTATUS OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*); + OLESTATUS OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleRename(LPOLEOBJECT, LPCSTR); + OLESTATUS OleQueryName(LPOLEOBJECT, LPSTR, UINT*); + OLESTATUS OleRevokeObject(LPOLECLIENT); + BOOL OleIsDcMeta(HDC); + OLESTATUS OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC*); + OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); + OLESTATUS OleRenameClientDoc(LHCLIENTDOC, LPCSTR); + OLESTATUS OleRevertClientDoc(LHCLIENTDOC); + OLESTATUS OleSavedClientDoc(LHCLIENTDOC); + OLESTATUS OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT*); + OLESTATUS OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER*, HINSTANCE, + OLE_SERVER_USE); + OLESTATUS OleRevokeServer(LHSERVER); + OLESTATUS OleBlockServer(LHSERVER); + OLESTATUS OleUnblockServer(LHSERVER, BOOL*); + OLESTATUS OleLockServer(LPOLEOBJECT, LHSERVER*); + OLESTATUS OleUnlockServer(LHSERVER); + OLESTATUS OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC, + LHSERVERDOC*); + OLESTATUS OleRevokeServerDoc(LHSERVERDOC); + OLESTATUS OleRenameServerDoc(LHSERVERDOC, LPCSTR); + OLESTATUS OleRevertServerDoc(LHSERVERDOC); + OLESTATUS OleSavedServerDoc(LHSERVERDOC); +} diff --git a/src/core/sys/windows/ole2.d b/src/core/sys/windows/ole2.d index 5f1dbd3278..7211e9c796 100644 --- a/src/core/sys/windows/ole2.d +++ b/src/core/sys/windows/ole2.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* ole2.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ole2.d) + */ module core.sys.windows.ole2; pragma(lib, "ole32"); diff --git a/src/core/sys/windows/ole2ver.d b/src/core/sys/windows/ole2ver.d index 40ebed6aa3..8a2a880a7f 100644 --- a/src/core/sys/windows/ole2ver.d +++ b/src/core/sys/windows/ole2ver.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* ole2ver.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ole2ver.d) + */ module core.sys.windows.ole2ver; // These are apparently not documented on the MSDN site diff --git a/src/core/sys/windows/oleacc.d b/src/core/sys/windows/oleacc.d index 3d85b85633..07c9fc3e16 100644 --- a/src/core/sys/windows/oleacc.d +++ b/src/core/sys/windows/oleacc.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* oleacc.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_oleacc.d) + */ module core.sys.windows.oleacc; pragma(lib, "oleacc"); diff --git a/src/core/sys/windows/oleauto.d b/src/core/sys/windows/oleauto.d index 5c95b4b45b..5cbfc1f50c 100644 --- a/src/core/sys/windows/oleauto.d +++ b/src/core/sys/windows/oleauto.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* oleauto.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_oleauto.d) + */ module core.sys.windows.oleauto; pragma(lib, "oleaut32"); diff --git a/src/core/sys/windows/olectl.d b/src/core/sys/windows/olectl.d index 56e10c3f80..5580d74c86 100644 --- a/src/core/sys/windows/olectl.d +++ b/src/core/sys/windows/olectl.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* olectl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_olectl.d) + */ module core.sys.windows.olectl; // In conversion from MinGW, the following was deleted: diff --git a/src/core/sys/windows/olectlid.d b/src/core/sys/windows/olectlid.d index 3a7e9cabd0..9c712b3a1c 100644 --- a/src/core/sys/windows/olectlid.d +++ b/src/core/sys/windows/olectlid.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* olectlid.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_olectlid.d) + */ module core.sys.windows.olectlid; private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d index 048ba5a9c0..3671778089 100644 --- a/src/core/sys/windows/oledlg.d +++ b/src/core/sys/windows/oledlg.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* oledlg.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_oledlg.d) + */ module core.sys.windows.oledlg; import core.sys.windows.commdlg, core.sys.windows.dlgs, core.sys.windows.ole2, core.sys.windows.prsht, core.sys.windows.shellapi, diff --git a/src/core/sys/windows/oleidl.d b/src/core/sys/windows/oleidl.d index b75a0b7dd9..1cd4eec806 100644 --- a/src/core/sys/windows/oleidl.d +++ b/src/core/sys/windows/oleidl.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* oleidl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_oleidl.d) + */ module core.sys.windows.oleidl; // DAC: This is defined in ocidl !! diff --git a/src/core/sys/windows/pbt.d b/src/core/sys/windows/pbt.d index a33b2cd161..ab374c582a 100644 --- a/src/core/sys/windows/pbt.d +++ b/src/core/sys/windows/pbt.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* pbt.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_pbt.d) + */ module core.sys.windows.pbt; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/powrprof.d b/src/core/sys/windows/powrprof.d index fc60bef608..d5c5577c3d 100644 --- a/src/core/sys/windows/powrprof.d +++ b/src/core/sys/windows/powrprof.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* powrprof.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_powrprof.d) + */ module core.sys.windows.powrprof; pragma(lib, "powrprof"); diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d index ea8f6da6f8..5b931751d1 100644 --- a/src/core/sys/windows/prsht.d +++ b/src/core/sys/windows/prsht.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* prsht.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Vladimir Vlasov * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Vladimir Vlasov + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_prsht.d) + */ module core.sys.windows.prsht; pragma(lib, "comctl32"); diff --git a/src/core/sys/windows/psapi.d b/src/core/sys/windows/psapi.d index 1eb25f06f6..58818301d4 100644 --- a/src/core/sys/windows/psapi.d +++ b/src/core/sys/windows/psapi.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* psapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_psapi.d) + */ /* Comment from MinGW * Process status API (PSAPI) * http://windowssdk.msdn.microsoft.com/library/ms684884.aspx diff --git a/src/core/sys/windows/rapi.d b/src/core/sys/windows/rapi.d index 358083a318..2251a4c521 100644 --- a/src/core/sys/windows/rapi.d +++ b/src/core/sys/windows/rapi.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* rapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rapi.d) + */ module core.sys.windows.rapi; /* Comment from MinGW diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index 32dfe0c349..34afaea045 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* ras.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ras.d) + */ module core.sys.windows.ras; pragma(lib, "rasapi32"); diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d index dadf2e9c10..54246e680c 100644 --- a/src/core/sys/windows/rasdlg.d +++ b/src/core/sys/windows/rasdlg.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* rasdlg.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rasdlg.d) + */ module core.sys.windows.rasdlg; import core.sys.windows.ras; diff --git a/src/core/sys/windows/raserror.d b/src/core/sys/windows/raserror.d index 6e0d85d9b0..d0403e3a47 100644 --- a/src/core/sys/windows/raserror.d +++ b/src/core/sys/windows/raserror.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* raserror.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_raserror.d) + */ module core.sys.windows.raserror; enum { diff --git a/src/core/sys/windows/rassapi.d b/src/core/sys/windows/rassapi.d index 175622639d..d3d4cd5fd3 100644 --- a/src/core/sys/windows/rassapi.d +++ b/src/core/sys/windows/rassapi.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* rassapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rassapi.d) + */ module core.sys.windows.rassapi; private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/reason.d b/src/core/sys/windows/reason.d index e77eab64ef..58591eaec4 100644 --- a/src/core/sys/windows/reason.d +++ b/src/core/sys/windows/reason.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* reason.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_reason.d) + */ module core.sys.windows.reason; private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/regstr.d b/src/core/sys/windows/regstr.d index 42fd94a220..17bbd816bd 100644 --- a/src/core/sys/windows/regstr.d +++ b/src/core/sys/windows/regstr.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* regstr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_regstr.d) + */ module core.sys.windows.regstr; // TODO: fix possible conflict with shloj. Sort out NEC_98 issue. diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d index 3ad9cd2086..4b05f2834d 100644 --- a/src/core/sys/windows/richedit.d +++ b/src/core/sys/windows/richedit.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* richedit.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_richedit.d) + */ module core.sys.windows.richedit; private import core.sys.windows.windef, core.sys.windows.winuser; diff --git a/src/core/sys/windows/richole.d b/src/core/sys/windows/richole.d index b21a916cc5..b120661cf5 100644 --- a/src/core/sys/windows/richole.d +++ b/src/core/sys/windows/richole.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* richole.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_richole.d) + */ module core.sys.windows.richole; private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.windows.ole2, core.sys.windows.unknwn, diff --git a/src/core/sys/windows/rpc.d b/src/core/sys/windows/rpc.d index 385cefb919..43149c5625 100644 --- a/src/core/sys/windows/rpc.d +++ b/src/core/sys/windows/rpc.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* rpc.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpc.d) + */ module core.sys.windows.rpc; /* Moved to rpcdecp (duplicate definition). diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d index 94530b5d83..f3017e4f61 100644 --- a/src/core/sys/windows/rpcdce.d +++ b/src/core/sys/windows/rpcdce.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* rpcdce.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdce.d) + */ module core.sys.windows.rpcdce; pragma(lib, "Rpcrt4"); diff --git a/src/core/sys/windows/rpcdce2.d b/src/core/sys/windows/rpcdce2.d index 92b1ed3a08..ef85ab31bb 100644 --- a/src/core/sys/windows/rpcdce2.d +++ b/src/core/sys/windows/rpcdce2.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* rpcdce2.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdce2.d) + */ module core.sys.windows.rpcdce2; import core.sys.windows.rpcdce; diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d index 008bbd673f..9c91b6a55c 100644 --- a/src/core/sys/windows/rpcdcep.d +++ b/src/core/sys/windows/rpcdcep.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* rpcdcep.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdcep.d) + */ module core.sys.windows.rpcdcep; private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index bf0ff011fe..e09bd18e66 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* rpcndr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcndr.d) + */ module core.sys.windows.rpcndr; pragma(lib, "rpcrt4"); diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d index 2bfde50c1b..1a10a37454 100644 --- a/src/core/sys/windows/rpcnsi.d +++ b/src/core/sys/windows/rpcnsi.d @@ -1,13 +1,13 @@ -/***********************************************************************\ -* rpcnsi.d * -* * -* Windows API header module * -* RPC Name Service (RpcNs APIs) * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * RPC Name Service (RpcNs APIs) + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnsi.d) + */ module core.sys.windows.rpcnsi; pragma(lib, "rpcns4"); diff --git a/src/core/sys/windows/rpcnsip.d b/src/core/sys/windows/rpcnsip.d index d5d63f7700..d56bdc3c0d 100644 --- a/src/core/sys/windows/rpcnsip.d +++ b/src/core/sys/windows/rpcnsip.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* rpcnsip.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnsip.d) + */ module core.sys.windows.rpcnsip; private import core.sys.windows.rpcdce, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi; diff --git a/src/core/sys/windows/rpcnterr.d b/src/core/sys/windows/rpcnterr.d index 1b543419de..7dda50bf1e 100644 --- a/src/core/sys/windows/rpcnterr.d +++ b/src/core/sys/windows/rpcnterr.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* rpcnterr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnterr.d) + */ module core.sys.windows.rpcnterr; import core.sys.windows.winerror; diff --git a/src/core/sys/windows/schannel.d b/src/core/sys/windows/schannel.d index 1e449b0d53..a5a3e721c3 100644 --- a/src/core/sys/windows/schannel.d +++ b/src/core/sys/windows/schannel.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* schannel.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_schannel.d) + */ module core.sys.windows.schannel; import core.sys.windows.wincrypt; diff --git a/src/core/sys/windows/secext.d b/src/core/sys/windows/secext.d index 647174b9eb..5bc438cffd 100644 --- a/src/core/sys/windows/secext.d +++ b/src/core/sys/windows/secext.d @@ -1,52 +1,51 @@ -/***********************************************************************\ -* secext.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -// Don't include this file directly, use core.sys.windows.security instead. -module core.sys.windows.secext; -pragma(lib, "secur32"); - -private import core.sys.windows.w32api, core.sys.windows.windef; - -static assert (_WIN32_WINNT >= 0x501, - "SecExt is only available on WindowsXP and later"); - -enum EXTENDED_NAME_FORMAT { - NameUnknown, - NameFullyQualifiedDN, - NameSamCompatible, - NameDisplay, // = 3 - NameUniqueId = 6, - NameCanonical, - NameUserPrincipal, - NameCanonicalEx, - NameServicePrincipal, // = 10 - NameDnsDomain = 12 -} -alias EXTENDED_NAME_FORMAT* PEXTENDED_NAME_FORMAT; - -extern (Windows) { - BOOLEAN GetComputerObjectNameA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); - BOOLEAN GetComputerObjectNameW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); - BOOLEAN GetUserNameExA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); - BOOLEAN GetUserNameExW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); - BOOLEAN TranslateNameA(LPCSTR, EXTENDED_NAME_FORMAT, - EXTENDED_NAME_FORMAT, LPSTR, PULONG); - BOOLEAN TranslateNameW(LPCWSTR, EXTENDED_NAME_FORMAT, - EXTENDED_NAME_FORMAT, LPWSTR, PULONG); -} - -version (Unicode) { - alias GetComputerObjectNameW GetComputerObjectName; - alias GetUserNameExW GetUserNameEx; - alias TranslateNameW TranslateName; -} else { - alias GetComputerObjectNameA GetComputerObjectName; - alias GetUserNameExA GetUserNameEx; - alias TranslateNameA TranslateName; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_secext.d) + */ +// Don't include this file directly, use core.sys.windows.security instead. +module core.sys.windows.secext; +pragma(lib, "secur32"); + +private import core.sys.windows.w32api, core.sys.windows.windef; + +static assert (_WIN32_WINNT >= 0x501, + "SecExt is only available on WindowsXP and later"); + +enum EXTENDED_NAME_FORMAT { + NameUnknown, + NameFullyQualifiedDN, + NameSamCompatible, + NameDisplay, // = 3 + NameUniqueId = 6, + NameCanonical, + NameUserPrincipal, + NameCanonicalEx, + NameServicePrincipal, // = 10 + NameDnsDomain = 12 +} +alias EXTENDED_NAME_FORMAT* PEXTENDED_NAME_FORMAT; + +extern (Windows) { + BOOLEAN GetComputerObjectNameA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN GetComputerObjectNameW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); + BOOLEAN GetUserNameExA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN GetUserNameExW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); + BOOLEAN TranslateNameA(LPCSTR, EXTENDED_NAME_FORMAT, + EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN TranslateNameW(LPCWSTR, EXTENDED_NAME_FORMAT, + EXTENDED_NAME_FORMAT, LPWSTR, PULONG); +} + +version (Unicode) { + alias GetComputerObjectNameW GetComputerObjectName; + alias GetUserNameExW GetUserNameEx; + alias TranslateNameW TranslateName; +} else { + alias GetComputerObjectNameA GetComputerObjectName; + alias GetUserNameExA GetUserNameEx; + alias TranslateNameA TranslateName; +} diff --git a/src/core/sys/windows/security.d b/src/core/sys/windows/security.d index cefc44c6bc..4f8568d9ae 100644 --- a/src/core/sys/windows/security.d +++ b/src/core/sys/windows/security.d @@ -1,46 +1,45 @@ -/***********************************************************************\ -* security.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Ellery Newcomer * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.security; - -enum :SECURITY_STATUS{ - SEC_E_OK = 0, - SEC_E_CERT_EXPIRED = (-2146893016), - SEC_E_INCOMPLETE_MESSAGE = (-2146893032), - SEC_E_INSUFFICIENT_MEMORY = (-2146893056), - SEC_E_INTERNAL_ERROR = (-2146893052), - SEC_E_INVALID_HANDLE = (-2146893055), - SEC_E_INVALID_TOKEN = (-2146893048), - SEC_E_LOGON_DENIED = (-2146893044), - SEC_E_NO_AUTHENTICATING_AUTHORITY = (-2146893039), - SEC_E_NO_CREDENTIALS = (-2146893042), - SEC_E_TARGET_UNKNOWN = (-2146893053), - SEC_E_UNSUPPORTED_FUNCTION = (-2146893054), - SEC_E_UNTRUSTED_ROOT = (-2146893019), - SEC_E_WRONG_PRINCIPAL = (-2146893022), - SEC_E_SECPKG_NOT_FOUND = (-2146893051), - SEC_E_QOP_NOT_SUPPORTED = (-2146893046), - SEC_E_UNKNOWN_CREDENTIALS = (-2146893043), - SEC_E_NOT_OWNER = (-2146893050), -} -enum :SECURITY_STATUS { - SEC_I_RENEGOTIATE = 590625, - SEC_I_COMPLETE_AND_CONTINUE = 590612, - SEC_I_COMPLETE_NEEDED = 590611, - SEC_I_CONTINUE_NEEDED = 590610, - SEC_I_INCOMPLETE_CREDENTIALS = 590624, -} - -/* always a char */ -alias char SEC_CHAR; -alias wchar SEC_WCHAR; - -alias int SECURITY_STATUS; - +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Ellery Newcomer + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_security.d) + */ +module core.sys.windows.security; + +enum :SECURITY_STATUS{ + SEC_E_OK = 0, + SEC_E_CERT_EXPIRED = (-2146893016), + SEC_E_INCOMPLETE_MESSAGE = (-2146893032), + SEC_E_INSUFFICIENT_MEMORY = (-2146893056), + SEC_E_INTERNAL_ERROR = (-2146893052), + SEC_E_INVALID_HANDLE = (-2146893055), + SEC_E_INVALID_TOKEN = (-2146893048), + SEC_E_LOGON_DENIED = (-2146893044), + SEC_E_NO_AUTHENTICATING_AUTHORITY = (-2146893039), + SEC_E_NO_CREDENTIALS = (-2146893042), + SEC_E_TARGET_UNKNOWN = (-2146893053), + SEC_E_UNSUPPORTED_FUNCTION = (-2146893054), + SEC_E_UNTRUSTED_ROOT = (-2146893019), + SEC_E_WRONG_PRINCIPAL = (-2146893022), + SEC_E_SECPKG_NOT_FOUND = (-2146893051), + SEC_E_QOP_NOT_SUPPORTED = (-2146893046), + SEC_E_UNKNOWN_CREDENTIALS = (-2146893043), + SEC_E_NOT_OWNER = (-2146893050), +} +enum :SECURITY_STATUS { + SEC_I_RENEGOTIATE = 590625, + SEC_I_COMPLETE_AND_CONTINUE = 590612, + SEC_I_COMPLETE_NEEDED = 590611, + SEC_I_CONTINUE_NEEDED = 590610, + SEC_I_INCOMPLETE_CREDENTIALS = 590624, +} + +/* always a char */ +alias char SEC_CHAR; +alias wchar SEC_WCHAR; + +alias int SECURITY_STATUS; + diff --git a/src/core/sys/windows/servprov.d b/src/core/sys/windows/servprov.d index 41171b5c43..1c33164557 100644 --- a/src/core/sys/windows/servprov.d +++ b/src/core/sys/windows/servprov.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* servprov.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_servprov.d) + */ module core.sys.windows.servprov; private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d index db7e00ae73..ed5325c588 100644 --- a/src/core/sys/windows/setupapi.d +++ b/src/core/sys/windows/setupapi.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* setupapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Vladimir Vlasov * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Vladimir Vlasov + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_setupapi.d) + */ module core.sys.windows.setupapi; pragma(lib, "setupapi"); diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index 6b61c9d99c..e072de4ea9 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* shellapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_shellapi.d) + */ module core.sys.windows.shellapi; pragma(lib, "shell32"); diff --git a/src/core/sys/windows/shldisp.d b/src/core/sys/windows/shldisp.d index b6c4818971..6d9cfe396f 100644 --- a/src/core/sys/windows/shldisp.d +++ b/src/core/sys/windows/shldisp.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* shldisp.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_shldisp.d) + */ module core.sys.windows.shldisp; private import core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/shlguid.d b/src/core/sys/windows/shlguid.d index c8f9444afa..480964896c 100644 --- a/src/core/sys/windows/shlguid.d +++ b/src/core/sys/windows/shlguid.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* shlguid.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_shlguid.d) + */ module core.sys.windows.shlguid; private import core.sys.windows.basetyps, core.sys.windows.w32api; diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index 9426eb8682..332d2be914 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* shlobj.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 4.0 * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 4.0 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_shlobj.d) + */ module core.sys.windows.shlobj; pragma(lib, "shell32"); diff --git a/src/core/sys/windows/shlwapi.d b/src/core/sys/windows/shlwapi.d index c94d100e2d..a751d547a2 100644 --- a/src/core/sys/windows/shlwapi.d +++ b/src/core/sys/windows/shlwapi.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* shlwapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_shlwapi.d) + */ module core.sys.windows.shlwapi; pragma(lib, "shlwapi"); diff --git a/src/core/sys/windows/snmp.d b/src/core/sys/windows/snmp.d index 8ddae7a26a..ea9b8dcc80 100644 --- a/src/core/sys/windows/snmp.d +++ b/src/core/sys/windows/snmp.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* snmp.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_snmp.d) + */ module core.sys.windows.snmp; private import core.sys.windows.windows; diff --git a/src/core/sys/windows/sql.d b/src/core/sys/windows/sql.d index a00e1d4330..7f13106ace 100644 --- a/src/core/sys/windows/sql.d +++ b/src/core/sys/windows/sql.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* sql.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_sql.d) + */ module core.sys.windows.sql; public import core.sys.windows.sqltypes; @@ -426,9 +425,9 @@ extern (Windows) { SQLRETURN SQLGetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); SQLRETURN SQLSetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); SQLRETURN SQLSetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetDescRec(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLLEN, SQLSMALLINT, + SQLRETURN SQLSetDescRec(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLLEN, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN*, SQLLEN*); SQLRETURN SQLSetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER); SQLRETURN SQLSetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); }/* (ODBCVER >= 0x0300) */ -} \ No newline at end of file +} diff --git a/src/core/sys/windows/sqlext.d b/src/core/sys/windows/sqlext.d index a281b02a41..0c498d1bb4 100644 --- a/src/core/sys/windows/sqlext.d +++ b/src/core/sys/windows/sqlext.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* sqlext.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_sqlext.d) + */ module core.sys.windows.sqlext; /* Conversion notes: diff --git a/src/core/sys/windows/sqltypes.d b/src/core/sys/windows/sqltypes.d index 5eb92f2912..cf8494969e 100644 --- a/src/core/sys/windows/sqltypes.d +++ b/src/core/sys/windows/sqltypes.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* sqltypes.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_sqltypes.d) + */ module core.sys.windows.sqltypes; /* Conversion notes: diff --git a/src/core/sys/windows/sqlucode.d b/src/core/sys/windows/sqlucode.d index b405669265..2f173e2c67 100644 --- a/src/core/sys/windows/sqlucode.d +++ b/src/core/sys/windows/sqlucode.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* sqlucode.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_sqlucode.d) + */ module core.sys.windows.sqlucode; private import core.sys.windows.sqlext; diff --git a/src/core/sys/windows/sspi.d b/src/core/sys/windows/sspi.d index 60c7677bb2..5a3dbc8923 100644 --- a/src/core/sys/windows/sspi.d +++ b/src/core/sys/windows/sspi.d @@ -1,380 +1,379 @@ -/***********************************************************************\ -* sspi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Ellery Newcomer * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.sspi; - -import core.sys.windows.windef; -import core.sys.windows.ntdef; -import core.sys.windows.w32api; -import core.sys.windows.security; -import core.sys.windows.ntsecapi; -import core.sys.windows.subauth; - -enum :ULONG{ - SECPKG_CRED_INBOUND = 1, - SECPKG_CRED_OUTBOUND = 2, - SECPKG_CRED_BOTH = (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND), - SECPKG_CRED_ATTR_NAMES = 1, -} - -enum :ULONG{ - SECPKG_FLAG_INTEGRITY = 1, - SECPKG_FLAG_PRIVACY = 2, - SECPKG_FLAG_TOKEN_ONLY = 4, - SECPKG_FLAG_DATAGRAM = 8, - SECPKG_FLAG_CONNECTION = 16, - SECPKG_FLAG_MULTI_REQUIRED = 32, - SECPKG_FLAG_CLIENT_ONLY = 64, - SECPKG_FLAG_EXTENDED_ERROR = 128, - SECPKG_FLAG_IMPERSONATION = 256, - SECPKG_FLAG_ACCEPT_WIN32_NAME = 512, - SECPKG_FLAG_STREAM = 1024, -} - -enum :ULONG{ - SECPKG_ATTR_AUTHORITY = 6, - SECPKG_ATTR_CONNECTION_INFO = 90, - SECPKG_ATTR_ISSUER_LIST = 80, - SECPKG_ATTR_ISSUER_LIST_EX = 89, - SECPKG_ATTR_KEY_INFO = 5, - SECPKG_ATTR_LIFESPAN = 2, - SECPKG_ATTR_LOCAL_CERT_CONTEXT = 84, - SECPKG_ATTR_LOCAL_CRED = 82, - SECPKG_ATTR_NAMES = 1, - SECPKG_ATTR_PROTO_INFO = 7, - SECPKG_ATTR_REMOTE_CERT_CONTEXT = 83, - SECPKG_ATTR_REMOTE_CRED = 81, - SECPKG_ATTR_SIZES = 0, - SECPKG_ATTR_STREAM_SIZES = 4, -} - -enum :ULONG{ - SECBUFFER_EMPTY = 0, - SECBUFFER_DATA = 1, - SECBUFFER_TOKEN = 2, - SECBUFFER_PKG_PARAMS = 3, - SECBUFFER_MISSING = 4, - SECBUFFER_EXTRA = 5, - SECBUFFER_STREAM_TRAILER = 6, - SECBUFFER_STREAM_HEADER = 7, - SECBUFFER_PADDING = 9, - SECBUFFER_STREAM = 10, - SECBUFFER_READONLY = 0x80000000, - SECBUFFER_ATTRMASK = 0xf0000000, -} - -enum UNISP_NAME_A = "Microsoft Unified Security Protocol Provider"; -enum UNISP_NAME_W = "Microsoft Unified Security Protocol Provider"w; -enum SECBUFFER_VERSION = 0; - -alias UNICODE_STRING SECURITY_STRING; -alias UNICODE_STRING* PSECURITY_STRING; - -extern(Windows): - -struct SecHandle { - ULONG_PTR dwLower; - ULONG_PTR dwUpper; -} -alias SecHandle* PSecHandle; -struct SecBuffer { - ULONG cbBuffer; - ULONG BufferType; - PVOID pvBuffer; -} -alias SecBuffer* PSecBuffer; -alias SecHandle CredHandle; -alias PSecHandle PCredHandle; -alias SecHandle CtxtHandle; -alias PSecHandle PCtxtHandle; -struct SECURITY_INTEGER { - uint LowPart; - int HighPart; -} -alias SECURITY_INTEGER TimeStamp; -alias SECURITY_INTEGER* PTimeStamp; -struct SecBufferDesc { - ULONG ulVersion; - ULONG cBuffers; - PSecBuffer pBuffers; -} -alias SecBufferDesc* PSecBufferDesc; -struct SecPkgContext_StreamSizes { - ULONG cbHeader; - ULONG cbTrailer; - ULONG cbMaximumMessage; - ULONG cBuffers; - ULONG cbBlockSize; -} -alias SecPkgContext_StreamSizes* PSecPkgContext_StreamSizes; -struct SecPkgContext_Sizes { - ULONG cbMaxToken; - ULONG cbMaxSignature; - ULONG cbBlockSize; - ULONG cbSecurityTrailer; -} -alias SecPkgContext_Sizes* PSecPkgContext_Sizes; -struct SecPkgContext_AuthorityW { - SEC_WCHAR* sAuthorityName; -} -alias SecPkgContext_AuthorityW* PSecPkgContext_AuthorityW; -struct SecPkgContext_AuthorityA { - SEC_CHAR* sAuthorityName; -} -alias SecPkgContext_AuthorityA* PSecPkgContext_AuthorityA; -struct SecPkgContext_KeyInfoW { - SEC_WCHAR* sSignatureAlgorithmName; - SEC_WCHAR* sEncryptAlgorithmName; - ULONG KeySize; - ULONG SignatureAlgorithm; - ULONG EncryptAlgorithm; -} -alias SecPkgContext_KeyInfoW* PSecPkgContext_KeyInfoW; -struct SecPkgContext_KeyInfoA { - SEC_CHAR* sSignatureAlgorithmName; - SEC_CHAR* sEncryptAlgorithmName; - ULONG KeySize; - ULONG SignatureAlgorithm; - ULONG EncryptAlgorithm; -} -alias SecPkgContext_KeyInfoA* PSecPkgContext_KeyInfoA; -struct SecPkgContext_LifeSpan { - TimeStamp tsStart; - TimeStamp tsExpiry; -} -alias SecPkgContext_LifeSpan* PSecPkgContext_LifeSpan; -struct SecPkgContext_NamesW { - SEC_WCHAR* sUserName; -} -alias SecPkgContext_NamesW* PSecPkgContext_NamesW; -struct SecPkgContext_NamesA { - SEC_CHAR* sUserName; -} -alias SecPkgContext_NamesA* PSecPkgContext_NamesA; -struct SecPkgInfoW { - ULONG fCapabilities; - USHORT wVersion; - USHORT wRPCID; - ULONG cbMaxToken; - SEC_WCHAR* Name; - SEC_WCHAR* Comment; -} -alias SecPkgInfoW* PSecPkgInfoW; -struct SecPkgInfoA { - ULONG fCapabilities; - USHORT wVersion; - USHORT wRPCID; - ULONG cbMaxToken; - SEC_CHAR* Name; - SEC_CHAR* Comment; -} -alias SecPkgInfoA* PSecPkgInfoA; -/* supported only in win2k+, so it should be a PSecPkgInfoW */ -/* PSDK does not say it has ANSI/Unicode versions */ -struct SecPkgContext_PackageInfo { - PSecPkgInfoW PackageInfo; -} -alias SecPkgContext_PackageInfo* PSecPkgContext_PackageInfo; -struct SecPkgCredentials_NamesW { - SEC_WCHAR* sUserName; -} -alias SecPkgCredentials_NamesW* PSecPkgCredentials_NamesW; -struct SecPkgCredentials_NamesA { - SEC_CHAR* sUserName; -} -alias SecPkgCredentials_NamesA* PSecPkgCredentials_NamesA; - -/* TODO: missing type in SDK */ -alias void function() SEC_GET_KEY_FN; - -alias SECURITY_STATUS function(PULONG,PSecPkgInfoW*) ENUMERATE_SECURITY_PACKAGES_FN_W; -alias SECURITY_STATUS function(PULONG,PSecPkgInfoA*) ENUMERATE_SECURITY_PACKAGES_FN_A; -alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_W; -alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_A; -alias SECURITY_STATUS function(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_W; -alias SECURITY_STATUS function(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_A; -alias SECURITY_STATUS function(PCredHandle) FREE_CREDENTIALS_HANDLE_FN; -alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_W; -alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_A; -alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) ACCEPT_SECURITY_CONTEXT_FN; -alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) COMPLETE_AUTH_TOKEN_FN; -alias SECURITY_STATUS function(PCtxtHandle) DELETE_SECURITY_CONTEXT_FN; -alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_W; -alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_A; -alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_A; -alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_W; -alias SECURITY_STATUS function(PCtxtHandle) IMPERSONATE_SECURITY_CONTEXT_FN; -alias SECURITY_STATUS function(PCtxtHandle) REVERT_SECURITY_CONTEXT_FN; -alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) MAKE_SIGNATURE_FN; -alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) VERIFY_SIGNATURE_FN; -alias SECURITY_STATUS function(PVOID) FREE_CONTEXT_BUFFER_FN; -alias SECURITY_STATUS function(SEC_CHAR*,PSecPkgInfoA*) QUERY_SECURITY_PACKAGE_INFO_FN_A; -alias SECURITY_STATUS function(PCtxtHandle,HANDLE*) QUERY_SECURITY_CONTEXT_TOKEN_FN; -alias SECURITY_STATUS function(SEC_WCHAR*,PSecPkgInfoW*) QUERY_SECURITY_PACKAGE_INFO_FN_W; -alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) ENCRYPT_MESSAGE_FN; -alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) DECRYPT_MESSAGE_FN; - -/* No, it really is FreeCredentialsHandle, see the thread beginning - * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a - * discovery discussion. */ -struct SecurityFunctionTableW{ - uint dwVersion; - ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; - QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; - ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; - FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; - void* Reserved2; - INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; - ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; - COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; - DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; - APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW; - QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; - IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; - REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; - MAKE_SIGNATURE_FN MakeSignature; - VERIFY_SIGNATURE_FN VerifySignature; - FREE_CONTEXT_BUFFER_FN FreeContextBuffer; - QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; - void* Reserved3; - void* Reserved4; - void* Reserved5; - void* Reserved6; - void* Reserved7; - void* Reserved8; - QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; - ENCRYPT_MESSAGE_FN EncryptMessage; - DECRYPT_MESSAGE_FN DecryptMessage; -} -alias SecurityFunctionTableW* PSecurityFunctionTableW; -struct SecurityFunctionTableA{ - uint dwVersion; - ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; - QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; - ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; - FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; - void* Reserved2; - INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; - ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; - COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; - DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; - APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA; - QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; - IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; - REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; - MAKE_SIGNATURE_FN MakeSignature; - VERIFY_SIGNATURE_FN VerifySignature; - FREE_CONTEXT_BUFFER_FN FreeContextBuffer; - QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; - void* Reserved3; - void* Reserved4; - void* Unknown1; - void* Unknown2; - void* Unknown3; - void* Unknown4; - void* Unknown5; - ENCRYPT_MESSAGE_FN EncryptMessage; - DECRYPT_MESSAGE_FN DecryptMessage; -} -alias SecurityFunctionTableA* PSecurityFunctionTableA; -alias PSecurityFunctionTableA function() INIT_SECURITY_INTERFACE_A; -alias PSecurityFunctionTableW function() INIT_SECURITY_INTERFACE_W; - -SECURITY_STATUS FreeCredentialsHandle(PCredHandle); -SECURITY_STATUS EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*); -SECURITY_STATUS EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*); -SECURITY_STATUS AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); -SECURITY_STATUS AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); -SECURITY_STATUS AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); -SECURITY_STATUS InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); -SECURITY_STATUS InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); -SECURITY_STATUS FreeContextBuffer(PVOID); -SECURITY_STATUS QueryContextAttributesA(PCtxtHandle,ULONG,PVOID); -SECURITY_STATUS QueryContextAttributesW(PCtxtHandle,ULONG,PVOID); -SECURITY_STATUS QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID); -SECURITY_STATUS QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID); -static if(_WIN32_WINNT >= 0x500){ - SECURITY_STATUS QuerySecurityContextToken(PCtxtHandle,HANDLE*); -} -SECURITY_STATUS DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); -SECURITY_STATUS EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); -SECURITY_STATUS DeleteSecurityContext(PCtxtHandle); -SECURITY_STATUS CompleteAuthToken(PCtxtHandle,PSecBufferDesc); -SECURITY_STATUS ApplyControlTokenA(PCtxtHandle,PSecBufferDesc); -SECURITY_STATUS ApplyControlTokenW(PCtxtHandle,PSecBufferDesc); -SECURITY_STATUS ImpersonateSecurityContext(PCtxtHandle); -SECURITY_STATUS RevertSecurityContext(PCtxtHandle); -SECURITY_STATUS MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); -SECURITY_STATUS VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); -SECURITY_STATUS QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*); -SECURITY_STATUS QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*); -PSecurityFunctionTableA InitSecurityInterfaceA(); -PSecurityFunctionTableW InitSecurityInterfaceW(); - -version(Unicode) { - alias UNISP_NAME_W UNISP_NAME; - alias SecPkgInfoW SecPkgInfo; - alias PSecPkgInfoW PSecPkgInfo; - alias SecPkgCredentials_NamesW SecPkgCredentials_Names; - alias PSecPkgCredentials_NamesW PSecPkgCredentials_Names; - alias SecPkgContext_AuthorityW SecPkgContext_Authority; - alias PSecPkgContext_AuthorityW PSecPkgContext_Authority; - alias SecPkgContext_KeyInfoW SecPkgContext_KeyInfo; - alias PSecPkgContext_KeyInfoW PSecPkgContext_KeyInfo; - alias SecPkgContext_NamesW SecPkgContext_Names; - alias PSecPkgContext_NamesW PSecPkgContext_Names; - alias SecurityFunctionTableW SecurityFunctionTable; - alias PSecurityFunctionTableW PSecurityFunctionTable; - alias AcquireCredentialsHandleW AcquireCredentialsHandle; - alias EnumerateSecurityPackagesW EnumerateSecurityPackages; - alias InitializeSecurityContextW InitializeSecurityContext; - alias QueryContextAttributesW QueryContextAttributes; - alias QueryCredentialsAttributesW QueryCredentialsAttributes; - alias QuerySecurityPackageInfoW QuerySecurityPackageInfo; - alias ApplyControlTokenW ApplyControlToken; - alias ENUMERATE_SECURITY_PACKAGES_FN_W ENUMERATE_SECURITY_PACKAGES_FN; - alias QUERY_CREDENTIALS_ATTRIBUTES_FN_W QUERY_CREDENTIALS_ATTRIBUTES_FN; - alias ACQUIRE_CREDENTIALS_HANDLE_FN_W ACQUIRE_CREDENTIALS_HANDLE_FN; - alias INITIALIZE_SECURITY_CONTEXT_FN_W INITIALIZE_SECURITY_CONTEXT_FN; - alias APPLY_CONTROL_TOKEN_FN_W APPLY_CONTROL_TOKEN_FN; - alias QUERY_CONTEXT_ATTRIBUTES_FN_W QUERY_CONTEXT_ATTRIBUTES_FN; - alias QUERY_SECURITY_PACKAGE_INFO_FN_W QUERY_SECURITY_PACKAGE_INFO_FN; - alias INIT_SECURITY_INTERFACE_W INIT_SECURITY_INTERFACE; -}else{ - alias UNISP_NAME_A UNISP_NAME; - alias SecPkgInfoA SecPkgInfo; - alias PSecPkgInfoA PSecPkgInfo; - alias SecPkgCredentials_NamesA SecPkgCredentials_Names; - alias PSecPkgCredentials_NamesA PSecPkgCredentials_Names; - alias SecPkgContext_AuthorityA SecPkgContext_Authority; - alias PSecPkgContext_AuthorityA PSecPkgContext_Authority; - alias SecPkgContext_KeyInfoA SecPkgContext_KeyInfo; - alias PSecPkgContext_KeyInfoA PSecPkgContext_KeyInfo; - alias SecPkgContext_NamesA SecPkgContext_Names; - alias PSecPkgContext_NamesA PSecPkgContext_Names; - alias SecurityFunctionTableA SecurityFunctionTable; - alias PSecurityFunctionTableA PSecurityFunctionTable; - alias AcquireCredentialsHandleA AcquireCredentialsHandle; - alias EnumerateSecurityPackagesA EnumerateSecurityPackages; - alias InitializeSecurityContextA InitializeSecurityContext; - alias QueryContextAttributesA QueryContextAttributes; - alias QueryCredentialsAttributesA QueryCredentialsAttributes; - alias QuerySecurityPackageInfoA QuerySecurityPackageInfo; - alias ApplyControlTokenA ApplyControlToken; - alias ENUMERATE_SECURITY_PACKAGES_FN_A ENUMERATE_SECURITY_PACKAGES_FN; - alias QUERY_CREDENTIALS_ATTRIBUTES_FN_A QUERY_CREDENTIALS_ATTRIBUTES_FN; - alias ACQUIRE_CREDENTIALS_HANDLE_FN_A ACQUIRE_CREDENTIALS_HANDLE_FN; - alias INITIALIZE_SECURITY_CONTEXT_FN_A INITIALIZE_SECURITY_CONTEXT_FN; - alias APPLY_CONTROL_TOKEN_FN_A APPLY_CONTROL_TOKEN_FN; - alias QUERY_CONTEXT_ATTRIBUTES_FN_A QUERY_CONTEXT_ATTRIBUTES_FN; - alias QUERY_SECURITY_PACKAGE_INFO_FN_A QUERY_SECURITY_PACKAGE_INFO_FN; - alias INIT_SECURITY_INTERFACE_A INIT_SECURITY_INTERFACE; -} - +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Ellery Newcomer + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_sspi.d) + */ +module core.sys.windows.sspi; + +import core.sys.windows.windef; +import core.sys.windows.ntdef; +import core.sys.windows.w32api; +import core.sys.windows.security; +import core.sys.windows.ntsecapi; +import core.sys.windows.subauth; + +enum :ULONG{ + SECPKG_CRED_INBOUND = 1, + SECPKG_CRED_OUTBOUND = 2, + SECPKG_CRED_BOTH = (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND), + SECPKG_CRED_ATTR_NAMES = 1, +} + +enum :ULONG{ + SECPKG_FLAG_INTEGRITY = 1, + SECPKG_FLAG_PRIVACY = 2, + SECPKG_FLAG_TOKEN_ONLY = 4, + SECPKG_FLAG_DATAGRAM = 8, + SECPKG_FLAG_CONNECTION = 16, + SECPKG_FLAG_MULTI_REQUIRED = 32, + SECPKG_FLAG_CLIENT_ONLY = 64, + SECPKG_FLAG_EXTENDED_ERROR = 128, + SECPKG_FLAG_IMPERSONATION = 256, + SECPKG_FLAG_ACCEPT_WIN32_NAME = 512, + SECPKG_FLAG_STREAM = 1024, +} + +enum :ULONG{ + SECPKG_ATTR_AUTHORITY = 6, + SECPKG_ATTR_CONNECTION_INFO = 90, + SECPKG_ATTR_ISSUER_LIST = 80, + SECPKG_ATTR_ISSUER_LIST_EX = 89, + SECPKG_ATTR_KEY_INFO = 5, + SECPKG_ATTR_LIFESPAN = 2, + SECPKG_ATTR_LOCAL_CERT_CONTEXT = 84, + SECPKG_ATTR_LOCAL_CRED = 82, + SECPKG_ATTR_NAMES = 1, + SECPKG_ATTR_PROTO_INFO = 7, + SECPKG_ATTR_REMOTE_CERT_CONTEXT = 83, + SECPKG_ATTR_REMOTE_CRED = 81, + SECPKG_ATTR_SIZES = 0, + SECPKG_ATTR_STREAM_SIZES = 4, +} + +enum :ULONG{ + SECBUFFER_EMPTY = 0, + SECBUFFER_DATA = 1, + SECBUFFER_TOKEN = 2, + SECBUFFER_PKG_PARAMS = 3, + SECBUFFER_MISSING = 4, + SECBUFFER_EXTRA = 5, + SECBUFFER_STREAM_TRAILER = 6, + SECBUFFER_STREAM_HEADER = 7, + SECBUFFER_PADDING = 9, + SECBUFFER_STREAM = 10, + SECBUFFER_READONLY = 0x80000000, + SECBUFFER_ATTRMASK = 0xf0000000, +} + +enum UNISP_NAME_A = "Microsoft Unified Security Protocol Provider"; +enum UNISP_NAME_W = "Microsoft Unified Security Protocol Provider"w; +enum SECBUFFER_VERSION = 0; + +alias UNICODE_STRING SECURITY_STRING; +alias UNICODE_STRING* PSECURITY_STRING; + +extern(Windows): + +struct SecHandle { + ULONG_PTR dwLower; + ULONG_PTR dwUpper; +} +alias SecHandle* PSecHandle; +struct SecBuffer { + ULONG cbBuffer; + ULONG BufferType; + PVOID pvBuffer; +} +alias SecBuffer* PSecBuffer; +alias SecHandle CredHandle; +alias PSecHandle PCredHandle; +alias SecHandle CtxtHandle; +alias PSecHandle PCtxtHandle; +struct SECURITY_INTEGER { + uint LowPart; + int HighPart; +} +alias SECURITY_INTEGER TimeStamp; +alias SECURITY_INTEGER* PTimeStamp; +struct SecBufferDesc { + ULONG ulVersion; + ULONG cBuffers; + PSecBuffer pBuffers; +} +alias SecBufferDesc* PSecBufferDesc; +struct SecPkgContext_StreamSizes { + ULONG cbHeader; + ULONG cbTrailer; + ULONG cbMaximumMessage; + ULONG cBuffers; + ULONG cbBlockSize; +} +alias SecPkgContext_StreamSizes* PSecPkgContext_StreamSizes; +struct SecPkgContext_Sizes { + ULONG cbMaxToken; + ULONG cbMaxSignature; + ULONG cbBlockSize; + ULONG cbSecurityTrailer; +} +alias SecPkgContext_Sizes* PSecPkgContext_Sizes; +struct SecPkgContext_AuthorityW { + SEC_WCHAR* sAuthorityName; +} +alias SecPkgContext_AuthorityW* PSecPkgContext_AuthorityW; +struct SecPkgContext_AuthorityA { + SEC_CHAR* sAuthorityName; +} +alias SecPkgContext_AuthorityA* PSecPkgContext_AuthorityA; +struct SecPkgContext_KeyInfoW { + SEC_WCHAR* sSignatureAlgorithmName; + SEC_WCHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; +} +alias SecPkgContext_KeyInfoW* PSecPkgContext_KeyInfoW; +struct SecPkgContext_KeyInfoA { + SEC_CHAR* sSignatureAlgorithmName; + SEC_CHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; +} +alias SecPkgContext_KeyInfoA* PSecPkgContext_KeyInfoA; +struct SecPkgContext_LifeSpan { + TimeStamp tsStart; + TimeStamp tsExpiry; +} +alias SecPkgContext_LifeSpan* PSecPkgContext_LifeSpan; +struct SecPkgContext_NamesW { + SEC_WCHAR* sUserName; +} +alias SecPkgContext_NamesW* PSecPkgContext_NamesW; +struct SecPkgContext_NamesA { + SEC_CHAR* sUserName; +} +alias SecPkgContext_NamesA* PSecPkgContext_NamesA; +struct SecPkgInfoW { + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_WCHAR* Name; + SEC_WCHAR* Comment; +} +alias SecPkgInfoW* PSecPkgInfoW; +struct SecPkgInfoA { + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_CHAR* Name; + SEC_CHAR* Comment; +} +alias SecPkgInfoA* PSecPkgInfoA; +/* supported only in win2k+, so it should be a PSecPkgInfoW */ +/* PSDK does not say it has ANSI/Unicode versions */ +struct SecPkgContext_PackageInfo { + PSecPkgInfoW PackageInfo; +} +alias SecPkgContext_PackageInfo* PSecPkgContext_PackageInfo; +struct SecPkgCredentials_NamesW { + SEC_WCHAR* sUserName; +} +alias SecPkgCredentials_NamesW* PSecPkgCredentials_NamesW; +struct SecPkgCredentials_NamesA { + SEC_CHAR* sUserName; +} +alias SecPkgCredentials_NamesA* PSecPkgCredentials_NamesA; + +/* TODO: missing type in SDK */ +alias void function() SEC_GET_KEY_FN; + +alias SECURITY_STATUS function(PULONG,PSecPkgInfoW*) ENUMERATE_SECURITY_PACKAGES_FN_W; +alias SECURITY_STATUS function(PULONG,PSecPkgInfoA*) ENUMERATE_SECURITY_PACKAGES_FN_A; +alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_W; +alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_A; +alias SECURITY_STATUS function(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_W; +alias SECURITY_STATUS function(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_A; +alias SECURITY_STATUS function(PCredHandle) FREE_CREDENTIALS_HANDLE_FN; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_W; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_A; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) ACCEPT_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) COMPLETE_AUTH_TOKEN_FN; +alias SECURITY_STATUS function(PCtxtHandle) DELETE_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_W; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_W; +alias SECURITY_STATUS function(PCtxtHandle) IMPERSONATE_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle) REVERT_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) MAKE_SIGNATURE_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) VERIFY_SIGNATURE_FN; +alias SECURITY_STATUS function(PVOID) FREE_CONTEXT_BUFFER_FN; +alias SECURITY_STATUS function(SEC_CHAR*,PSecPkgInfoA*) QUERY_SECURITY_PACKAGE_INFO_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,HANDLE*) QUERY_SECURITY_CONTEXT_TOKEN_FN; +alias SECURITY_STATUS function(SEC_WCHAR*,PSecPkgInfoW*) QUERY_SECURITY_PACKAGE_INFO_FN_W; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) ENCRYPT_MESSAGE_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) DECRYPT_MESSAGE_FN; + +/* No, it really is FreeCredentialsHandle, see the thread beginning + * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a + * discovery discussion. */ +struct SecurityFunctionTableW{ + uint dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; + QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; + ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW; + QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; + void* Reserved3; + void* Reserved4; + void* Reserved5; + void* Reserved6; + void* Reserved7; + void* Reserved8; + QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} +alias SecurityFunctionTableW* PSecurityFunctionTableW; +struct SecurityFunctionTableA{ + uint dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; + QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; + ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA; + QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; + void* Reserved3; + void* Reserved4; + void* Unknown1; + void* Unknown2; + void* Unknown3; + void* Unknown4; + void* Unknown5; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} +alias SecurityFunctionTableA* PSecurityFunctionTableA; +alias PSecurityFunctionTableA function() INIT_SECURITY_INTERFACE_A; +alias PSecurityFunctionTableW function() INIT_SECURITY_INTERFACE_W; + +SECURITY_STATUS FreeCredentialsHandle(PCredHandle); +SECURITY_STATUS EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*); +SECURITY_STATUS EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*); +SECURITY_STATUS AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +SECURITY_STATUS AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +SECURITY_STATUS AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS FreeContextBuffer(PVOID); +SECURITY_STATUS QueryContextAttributesA(PCtxtHandle,ULONG,PVOID); +SECURITY_STATUS QueryContextAttributesW(PCtxtHandle,ULONG,PVOID); +SECURITY_STATUS QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID); +SECURITY_STATUS QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID); +static if(_WIN32_WINNT >= 0x500){ + SECURITY_STATUS QuerySecurityContextToken(PCtxtHandle,HANDLE*); +} +SECURITY_STATUS DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +SECURITY_STATUS EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +SECURITY_STATUS DeleteSecurityContext(PCtxtHandle); +SECURITY_STATUS CompleteAuthToken(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ApplyControlTokenA(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ApplyControlTokenW(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ImpersonateSecurityContext(PCtxtHandle); +SECURITY_STATUS RevertSecurityContext(PCtxtHandle); +SECURITY_STATUS MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +SECURITY_STATUS VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +SECURITY_STATUS QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*); +SECURITY_STATUS QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*); +PSecurityFunctionTableA InitSecurityInterfaceA(); +PSecurityFunctionTableW InitSecurityInterfaceW(); + +version(Unicode) { + alias UNISP_NAME_W UNISP_NAME; + alias SecPkgInfoW SecPkgInfo; + alias PSecPkgInfoW PSecPkgInfo; + alias SecPkgCredentials_NamesW SecPkgCredentials_Names; + alias PSecPkgCredentials_NamesW PSecPkgCredentials_Names; + alias SecPkgContext_AuthorityW SecPkgContext_Authority; + alias PSecPkgContext_AuthorityW PSecPkgContext_Authority; + alias SecPkgContext_KeyInfoW SecPkgContext_KeyInfo; + alias PSecPkgContext_KeyInfoW PSecPkgContext_KeyInfo; + alias SecPkgContext_NamesW SecPkgContext_Names; + alias PSecPkgContext_NamesW PSecPkgContext_Names; + alias SecurityFunctionTableW SecurityFunctionTable; + alias PSecurityFunctionTableW PSecurityFunctionTable; + alias AcquireCredentialsHandleW AcquireCredentialsHandle; + alias EnumerateSecurityPackagesW EnumerateSecurityPackages; + alias InitializeSecurityContextW InitializeSecurityContext; + alias QueryContextAttributesW QueryContextAttributes; + alias QueryCredentialsAttributesW QueryCredentialsAttributes; + alias QuerySecurityPackageInfoW QuerySecurityPackageInfo; + alias ApplyControlTokenW ApplyControlToken; + alias ENUMERATE_SECURITY_PACKAGES_FN_W ENUMERATE_SECURITY_PACKAGES_FN; + alias QUERY_CREDENTIALS_ATTRIBUTES_FN_W QUERY_CREDENTIALS_ATTRIBUTES_FN; + alias ACQUIRE_CREDENTIALS_HANDLE_FN_W ACQUIRE_CREDENTIALS_HANDLE_FN; + alias INITIALIZE_SECURITY_CONTEXT_FN_W INITIALIZE_SECURITY_CONTEXT_FN; + alias APPLY_CONTROL_TOKEN_FN_W APPLY_CONTROL_TOKEN_FN; + alias QUERY_CONTEXT_ATTRIBUTES_FN_W QUERY_CONTEXT_ATTRIBUTES_FN; + alias QUERY_SECURITY_PACKAGE_INFO_FN_W QUERY_SECURITY_PACKAGE_INFO_FN; + alias INIT_SECURITY_INTERFACE_W INIT_SECURITY_INTERFACE; +}else{ + alias UNISP_NAME_A UNISP_NAME; + alias SecPkgInfoA SecPkgInfo; + alias PSecPkgInfoA PSecPkgInfo; + alias SecPkgCredentials_NamesA SecPkgCredentials_Names; + alias PSecPkgCredentials_NamesA PSecPkgCredentials_Names; + alias SecPkgContext_AuthorityA SecPkgContext_Authority; + alias PSecPkgContext_AuthorityA PSecPkgContext_Authority; + alias SecPkgContext_KeyInfoA SecPkgContext_KeyInfo; + alias PSecPkgContext_KeyInfoA PSecPkgContext_KeyInfo; + alias SecPkgContext_NamesA SecPkgContext_Names; + alias PSecPkgContext_NamesA PSecPkgContext_Names; + alias SecurityFunctionTableA SecurityFunctionTable; + alias PSecurityFunctionTableA PSecurityFunctionTable; + alias AcquireCredentialsHandleA AcquireCredentialsHandle; + alias EnumerateSecurityPackagesA EnumerateSecurityPackages; + alias InitializeSecurityContextA InitializeSecurityContext; + alias QueryContextAttributesA QueryContextAttributes; + alias QueryCredentialsAttributesA QueryCredentialsAttributes; + alias QuerySecurityPackageInfoA QuerySecurityPackageInfo; + alias ApplyControlTokenA ApplyControlToken; + alias ENUMERATE_SECURITY_PACKAGES_FN_A ENUMERATE_SECURITY_PACKAGES_FN; + alias QUERY_CREDENTIALS_ATTRIBUTES_FN_A QUERY_CREDENTIALS_ATTRIBUTES_FN; + alias ACQUIRE_CREDENTIALS_HANDLE_FN_A ACQUIRE_CREDENTIALS_HANDLE_FN; + alias INITIALIZE_SECURITY_CONTEXT_FN_A INITIALIZE_SECURITY_CONTEXT_FN; + alias APPLY_CONTROL_TOKEN_FN_A APPLY_CONTROL_TOKEN_FN; + alias QUERY_CONTEXT_ATTRIBUTES_FN_A QUERY_CONTEXT_ATTRIBUTES_FN; + alias QUERY_SECURITY_PACKAGE_INFO_FN_A QUERY_SECURITY_PACKAGE_INFO_FN; + alias INIT_SECURITY_INTERFACE_A INIT_SECURITY_INTERFACE; +} + diff --git a/src/core/sys/windows/subauth.d b/src/core/sys/windows/subauth.d index 17699fed5e..c42145653e 100644 --- a/src/core/sys/windows/subauth.d +++ b/src/core/sys/windows/subauth.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* subauth.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_subauth.d) + */ module core.sys.windows.subauth; private import core.sys.windows.ntdef, core.sys.windows.windef; @@ -272,4 +271,4 @@ NTSTATUS Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*); NTSTATUS Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID, ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, PMSV1_0_VALIDATION_INFO,PULONG); -} \ No newline at end of file +} diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index 922aeae56d..a26f685ab7 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -1,169 +1,168 @@ -/***********************************************************************\ -* tlhelp32.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.tlhelp32; - -private import core.sys.windows.windef; - -enum : uint { - HF32_DEFAULT = 1, - HF32_SHARED -} - -enum : uint { - LF32_FIXED = 0x1, - LF32_FREE = 0x2, - LF32_MOVEABLE = 0x4 -} - -const MAX_MODULE_NAME32 = 255; - -enum : uint { - TH32CS_SNAPHEAPLIST = 0x1, - TH32CS_SNAPPROCESS = 0x2, - TH32CS_SNAPTHREAD = 0x4, - TH32CS_SNAPMODULE = 0x8, - TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE), - TH32CS_INHERIT = 0x80000000 -} - -struct HEAPLIST32 { - SIZE_T dwSize; - DWORD th32ProcessID; - ULONG_PTR th32HeapID; - DWORD dwFlags; -} -alias HEAPLIST32* PHEAPLIST32; -alias HEAPLIST32* LPHEAPLIST32; - -struct HEAPENTRY32 { - SIZE_T dwSize; - HANDLE hHandle; - ULONG_PTR dwAddress; - SIZE_T dwBlockSize; - DWORD dwFlags; - DWORD dwLockCount; - DWORD dwResvd; - DWORD th32ProcessID; - ULONG_PTR th32HeapID; -} -alias HEAPENTRY32* PHEAPENTRY32; -alias HEAPENTRY32* LPHEAPENTRY32; - -struct PROCESSENTRY32W { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ProcessID; - ULONG_PTR th32DefaultHeapID; - DWORD th32ModuleID; - DWORD cntThreads; - DWORD th32ParentProcessID; - LONG pcPriClassBase; - DWORD dwFlags; - WCHAR[MAX_PATH] szExeFile; -} -alias PROCESSENTRY32W* PPROCESSENTRY32W; -alias PROCESSENTRY32W* LPPROCESSENTRY32W; - -struct THREADENTRY32 { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ThreadID; - DWORD th32OwnerProcessID; - LONG tpBasePri; - LONG tpDeltaPri; - DWORD dwFlags; -} -alias THREADENTRY32* PTHREADENTRY32; -alias THREADENTRY32* LPTHREADENTRY32; - -struct MODULEENTRY32W { - DWORD dwSize; - DWORD th32ModuleID; - DWORD th32ProcessID; - DWORD GlblcntUsage; - DWORD ProccntUsage; - BYTE *modBaseAddr; - DWORD modBaseSize; - HMODULE hModule; - WCHAR[MAX_MODULE_NAME32 + 1] szModule; - WCHAR[MAX_PATH] szExePath; -} -alias MODULEENTRY32W* PMODULEENTRY32W; -alias MODULEENTRY32W* LPMODULEENTRY32W; - -version(Unicode) { - alias PROCESSENTRY32W PROCESSENTRY32; - alias PPROCESSENTRY32W PPROCESSENTRY32; - alias LPPROCESSENTRY32W LPPROCESSENTRY32; - - alias MODULEENTRY32W MODULEENTRY32; - alias PMODULEENTRY32W PMODULEENTRY32; - alias LPMODULEENTRY32W LPMODULEENTRY32; -} else { - struct PROCESSENTRY32 { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ProcessID; - ULONG_PTR th32DefaultHeapID; - DWORD th32ModuleID; - DWORD cntThreads; - DWORD th32ParentProcessID; - LONG pcPriClassBase; - DWORD dwFlags; - CHAR[MAX_PATH] szExeFile; - } - alias PROCESSENTRY32* PPROCESSENTRY32; - alias PROCESSENTRY32* LPPROCESSENTRY32; - - struct MODULEENTRY32 { - DWORD dwSize; - DWORD th32ModuleID; - DWORD th32ProcessID; - DWORD GlblcntUsage; - DWORD ProccntUsage; - BYTE *modBaseAddr; - DWORD modBaseSize; - HMODULE hModule; - char[MAX_MODULE_NAME32 + 1] szModule; - char[MAX_PATH] szExePath; - } - alias MODULEENTRY32* PMODULEENTRY32; - alias MODULEENTRY32* LPMODULEENTRY32; -} - - -extern(Windows) { - BOOL Heap32First(LPHEAPENTRY32,DWORD,DWORD); - BOOL Heap32ListFirst(HANDLE,LPHEAPLIST32); - BOOL Heap32ListNext(HANDLE,LPHEAPLIST32); - BOOL Heap32Next(LPHEAPENTRY32); - BOOL Thread32First(HANDLE,LPTHREADENTRY32); - BOOL Thread32Next(HANDLE,LPTHREADENTRY32); - BOOL Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD); - HANDLE CreateToolhelp32Snapshot(DWORD,DWORD); - BOOL Module32FirstW(HANDLE,LPMODULEENTRY32W); - BOOL Module32NextW(HANDLE,LPMODULEENTRY32W); - BOOL Process32FirstW(HANDLE,LPPROCESSENTRY32W); - BOOL Process32NextW(HANDLE,LPPROCESSENTRY32W); -} - -version(Unicode) { - alias Module32FirstW Module32First; - alias Module32NextW Module32Next; - alias Process32FirstW Process32First; - alias Process32NextW Process32Next; -} else { - extern(Windows) { - BOOL Module32First(HANDLE,LPMODULEENTRY32); - BOOL Module32Next(HANDLE,LPMODULEENTRY32); - BOOL Process32First(HANDLE,LPPROCESSENTRY32); - BOOL Process32Next(HANDLE,LPPROCESSENTRY32); - } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_tlhelp32.d) + */ +module core.sys.windows.tlhelp32; + +private import core.sys.windows.windef; + +enum : uint { + HF32_DEFAULT = 1, + HF32_SHARED +} + +enum : uint { + LF32_FIXED = 0x1, + LF32_FREE = 0x2, + LF32_MOVEABLE = 0x4 +} + +const MAX_MODULE_NAME32 = 255; + +enum : uint { + TH32CS_SNAPHEAPLIST = 0x1, + TH32CS_SNAPPROCESS = 0x2, + TH32CS_SNAPTHREAD = 0x4, + TH32CS_SNAPMODULE = 0x8, + TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE), + TH32CS_INHERIT = 0x80000000 +} + +struct HEAPLIST32 { + SIZE_T dwSize; + DWORD th32ProcessID; + ULONG_PTR th32HeapID; + DWORD dwFlags; +} +alias HEAPLIST32* PHEAPLIST32; +alias HEAPLIST32* LPHEAPLIST32; + +struct HEAPENTRY32 { + SIZE_T dwSize; + HANDLE hHandle; + ULONG_PTR dwAddress; + SIZE_T dwBlockSize; + DWORD dwFlags; + DWORD dwLockCount; + DWORD dwResvd; + DWORD th32ProcessID; + ULONG_PTR th32HeapID; +} +alias HEAPENTRY32* PHEAPENTRY32; +alias HEAPENTRY32* LPHEAPENTRY32; + +struct PROCESSENTRY32W { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ProcessID; + ULONG_PTR th32DefaultHeapID; + DWORD th32ModuleID; + DWORD cntThreads; + DWORD th32ParentProcessID; + LONG pcPriClassBase; + DWORD dwFlags; + WCHAR[MAX_PATH] szExeFile; +} +alias PROCESSENTRY32W* PPROCESSENTRY32W; +alias PROCESSENTRY32W* LPPROCESSENTRY32W; + +struct THREADENTRY32 { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ThreadID; + DWORD th32OwnerProcessID; + LONG tpBasePri; + LONG tpDeltaPri; + DWORD dwFlags; +} +alias THREADENTRY32* PTHREADENTRY32; +alias THREADENTRY32* LPTHREADENTRY32; + +struct MODULEENTRY32W { + DWORD dwSize; + DWORD th32ModuleID; + DWORD th32ProcessID; + DWORD GlblcntUsage; + DWORD ProccntUsage; + BYTE *modBaseAddr; + DWORD modBaseSize; + HMODULE hModule; + WCHAR[MAX_MODULE_NAME32 + 1] szModule; + WCHAR[MAX_PATH] szExePath; +} +alias MODULEENTRY32W* PMODULEENTRY32W; +alias MODULEENTRY32W* LPMODULEENTRY32W; + +version(Unicode) { + alias PROCESSENTRY32W PROCESSENTRY32; + alias PPROCESSENTRY32W PPROCESSENTRY32; + alias LPPROCESSENTRY32W LPPROCESSENTRY32; + + alias MODULEENTRY32W MODULEENTRY32; + alias PMODULEENTRY32W PMODULEENTRY32; + alias LPMODULEENTRY32W LPMODULEENTRY32; +} else { + struct PROCESSENTRY32 { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ProcessID; + ULONG_PTR th32DefaultHeapID; + DWORD th32ModuleID; + DWORD cntThreads; + DWORD th32ParentProcessID; + LONG pcPriClassBase; + DWORD dwFlags; + CHAR[MAX_PATH] szExeFile; + } + alias PROCESSENTRY32* PPROCESSENTRY32; + alias PROCESSENTRY32* LPPROCESSENTRY32; + + struct MODULEENTRY32 { + DWORD dwSize; + DWORD th32ModuleID; + DWORD th32ProcessID; + DWORD GlblcntUsage; + DWORD ProccntUsage; + BYTE *modBaseAddr; + DWORD modBaseSize; + HMODULE hModule; + char[MAX_MODULE_NAME32 + 1] szModule; + char[MAX_PATH] szExePath; + } + alias MODULEENTRY32* PMODULEENTRY32; + alias MODULEENTRY32* LPMODULEENTRY32; +} + + +extern(Windows) { + BOOL Heap32First(LPHEAPENTRY32,DWORD,DWORD); + BOOL Heap32ListFirst(HANDLE,LPHEAPLIST32); + BOOL Heap32ListNext(HANDLE,LPHEAPLIST32); + BOOL Heap32Next(LPHEAPENTRY32); + BOOL Thread32First(HANDLE,LPTHREADENTRY32); + BOOL Thread32Next(HANDLE,LPTHREADENTRY32); + BOOL Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD); + HANDLE CreateToolhelp32Snapshot(DWORD,DWORD); + BOOL Module32FirstW(HANDLE,LPMODULEENTRY32W); + BOOL Module32NextW(HANDLE,LPMODULEENTRY32W); + BOOL Process32FirstW(HANDLE,LPPROCESSENTRY32W); + BOOL Process32NextW(HANDLE,LPPROCESSENTRY32W); +} + +version(Unicode) { + alias Module32FirstW Module32First; + alias Module32NextW Module32Next; + alias Process32FirstW Process32First; + alias Process32NextW Process32Next; +} else { + extern(Windows) { + BOOL Module32First(HANDLE,LPMODULEENTRY32); + BOOL Module32Next(HANDLE,LPMODULEENTRY32); + BOOL Process32First(HANDLE,LPPROCESSENTRY32); + BOOL Process32Next(HANDLE,LPPROCESSENTRY32); + } +} diff --git a/src/core/sys/windows/tmschema.d b/src/core/sys/windows/tmschema.d index 9173a08098..b03869457a 100644 --- a/src/core/sys/windows/tmschema.d +++ b/src/core/sys/windows/tmschema.d @@ -1,758 +1,757 @@ -/***********************************************************************\ -* tmschema.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module core.sys.windows.tmschema; - -/* BUTTON parts */ -enum { - BP_PUSHBUTTON = 1, - BP_RADIOBUTTON = 2, - BP_CHECKBOX = 3, - BP_GROUPBOX = 4, - BP_USERBUTTON = 5 -} - -enum { - CBS_UNCHECKEDNORMAL = 1, - CBS_UNCHECKEDHOT = 2, - CBS_UNCHECKEDPRESSED = 3, - CBS_UNCHECKEDDISABLED = 4, - CBS_CHECKEDNORMAL = 5, - CBS_CHECKEDHOT = 6, - CBS_CHECKEDPRESSED = 7, - CBS_CHECKEDDISABLED = 8, - CBS_MIXEDNORMAL = 9, - CBS_MIXEDHOT = 10, - CBS_MIXEDPRESSED = 11, - CBS_MIXEDDISABLED = 12 -} - -enum { - GBS_NORMAL = 1, - GBS_DISABLED = 2 -} - -enum { - PBS_NORMAL = 1, - PBS_HOT = 2, - PBS_PRESSED = 3, - PBS_DISABLED = 4, - PBS_DEFAULTED = 5 -} - -enum { - RBS_UNCHECKEDNORMAL = 1, - RBS_UNCHECKEDHOT = 2, - RBS_UNCHECKEDPRESSED = 3, - RBS_UNCHECKEDDISABLED = 4, - RBS_CHECKEDNORMAL = 5, - RBS_CHECKEDHOT = 6, - RBS_CHECKEDPRESSED = 7, - RBS_CHECKEDDISABLED = 8 -} - -/* CLOCK parts */ -enum { - CLP_TIME = 1 -} - -enum { - CLS_NORMAL = 1 -} - -/* COMBOBOX parts */ -enum { - CP_DROPDOWNBUTTON = 1 -} - -enum { - CBXS_NORMAL = 1, - CBXS_HOT = 2, - CBXS_PRESSED = 3, - CBXS_DISABLED = 4 -} - -/* EDIT parts */ -enum { - EP_EDITTEXT = 1, - EP_CARET = 2 -} - -enum { - ETS_NORMAL = 1, - ETS_HOT = 2, - ETS_SELECTED = 3, - ETS_DISABLED = 4, - ETS_FOCUSED = 5, - ETS_READONLY = 6, - ETS_ASSIST = 7 -} -/* EXPLORERBAR parts */ -enum { - EBP_HEADERBACKGROUND = 1, - EBP_HEADERCLOSE = 2, - EBP_HEADERPIN = 3, - EBP_IEBARMENU = 4, - EBP_NORMALGROUPBACKGROUND = 5, - EBP_NORMALGROUPCOLLAPSE = 6, - EBP_NORMALGROUPEXPAND = 7, - EBP_NORMALGROUPHEAD = 8, - EBP_SPECIALGROUPBACKGROUND = 9, - EBP_SPECIALGROUPCOLLAPSE = 10, - EBP_SPECIALGROUPEXPAND = 11, - EBP_SPECIALGROUPHEAD = 12 -} - -enum { - EBHC_NORMAL = 1, - EBHC_HOT = 2, - EBHC_PRESSED = 3 -} - -enum { - EBHP_NORMAL = 1, - EBHP_HOT = 2, - EBHP_PRESSED = 3, - EBHP_SELECTEDNORMAL = 4, - EBHP_SELECTEDHOT = 5, - EBHP_SELECTEDPRESSED = 6 -} - -enum { - EBM_NORMAL = 1, - EBM_HOT = 2, - EBM_PRESSED = 3 -} - -enum { - EBNGC_NORMAL = 1, - EBNGC_HOT = 2, - EBNGC_PRESSED = 3 -} - -enum { - EBNGE_NORMAL = 1, - EBNGE_HOT = 2, - EBNGE_PRESSED = 3 -} - -enum { - EBSGC_NORMAL = 1, - EBSGC_HOT = 2, - EBSGC_PRESSED = 3 -} - -enum { - EBSGE_NORMAL = 1, - EBSGE_HOT = 2, - EBSGE_PRESSED = 3 -} - -/* HEADER parts */ -enum { - HP_HEADERITEM = 1, - HP_HEADERITEMLEFT = 2, - HP_HEADERITEMRIGHT = 3, - HP_HEADERSORTARROW = 4 -} - -enum { - HIS_NORMAL = 1, - HIS_HOT = 2, - HIS_PRESSED = 3 -} - -enum { - HILS_NORMAL = 1, - HILS_HOT = 2, - HILS_PRESSED = 3 -} - -enum { - HIRS_NORMAL = 1, - HIRS_HOT = 2, - HIRS_PRESSED = 3 -} - -enum { - HSAS_SORTEDUP = 1, - HSAS_SORTEDDOWN = 2 -} - -/* LISTVIEW parts */ -enum { - LVP_LISTITEM = 1, - LVP_LISTGROUP = 2, - LVP_LISTDETAIL = 3, - LVP_LISTSORTEDDETAIL = 4, - LVP_EMPTYTEXT = 5 -} - -enum { - LIS_NORMAL = 1, - LIS_HOT = 2, - LIS_SELECTED = 3, - LIS_DISABLED = 4, - LIS_SELECTEDNOTFOCUS = 5 -} - -/* MENU parts */ -enum { - MP_MENUITEM = 1, - MP_MENUDROPDOWN = 2, - MP_MENUBARITEM = 3, - MP_MENUBARDROPDOWN = 4, - MP_CHEVRON = 5, - MP_SEPARATOR = 6 -} - -enum { - MS_NORMAL = 1, - MS_SELECTED = 2, - MS_DEMOTED = 3 -} -/* MENUBAND parts */ -enum { - MDP_NEWAPPBUTTON = 1, - MDP_SEPERATOR = 2 -} - -enum { - MDS_NORMAL = 1, - MDS_HOT = 2, - MDS_PRESSED = 3, - MDS_DISABLED = 4, - MDS_CHECKED = 5, - MDS_HOTCHECKED = 6 -} - -/* PAGE parts */ -enum { - PGRP_UP = 1, - PGRP_DOWN = 2, - PGRP_UPHORZ = 3, - PGRP_DOWNHORZ = 4 -} - -enum { - DNS_NORMAL = 1, - DNS_HOT = 2, - DNS_PRESSED = 3, - DNS_DISABLED = 4 -} - -enum { - DNHZS_NORMAL = 1, - DNHZS_HOT = 2, - DNHZS_PRESSED = 3, - DNHZS_DISABLED = 4 -} - -enum { - UPS_NORMAL = 1, - UPS_HOT = 2, - UPS_PRESSED = 3, - UPS_DISABLED = 4 -} - -enum { - UPHZS_NORMAL = 1, - UPHZS_HOT = 2, - UPHZS_PRESSED = 3, - UPHZS_DISABLED = 4 -} - -/* PROGRESS parts */ -enum { - PP_BAR = 1, - PP_BARVERT = 2, - PP_CHUNK = 3, - PP_CHUNKVERT = 4 -} - -/* REBAR parts */ -enum { - RP_GRIPPER = 1, - RP_GRIPPERVERT = 2, - RP_BAND = 3, - RP_CHEVRON = 4, - RP_CHEVRONVERT = 5 -} - -enum { - CHEVS_NORMAL = 1, - CHEVS_HOT = 2, - CHEVS_PRESSED = 3 -} - -/* SCROLLBAR parts */ -enum { - SBP_ARROWBTN = 1, - SBP_THUMBBTNHORZ = 2, - SBP_THUMBBTNVERT = 3, - SBP_LOWERTRACKHORZ = 4, - SBP_UPPERTRACKHORZ = 5, - SBP_LOWERTRACKVERT = 6, - SBP_UPPERTRACKVERT = 7, - SBP_GRIPPERHORZ = 8, - SBP_GRIPPERVERT = 9, - SBP_SIZEBOX = 10 -} - -enum { - ABS_UPNORMAL = 1, - ABS_UPHOT = 2, - ABS_UPPRESSED = 3, - ABS_UPDISABLED = 4, - ABS_DOWNNORMAL = 5, - ABS_DOWNHOT = 6, - ABS_DOWNPRESSED = 7, - ABS_DOWNDISABLED = 8, - ABS_LEFTNORMAL = 9, - ABS_LEFTHOT = 10, - ABS_LEFTPRESSED = 11, - ABS_LEFTDISABLED = 12, - ABS_RIGHTNORMAL = 13, - ABS_RIGHTHOT = 14, - ABS_RIGHTPRESSED = 15, - ABS_RIGHTDISABLED = 16 -} - -enum { - SCRBS_NORMAL = 1, - SCRBS_HOT = 2, - SCRBS_PRESSED = 3, - SCRBS_DISABLED = 4 -} - -enum { - SZB_RIGHTALIGN = 1, - SZB_LEFTALIGN = 2 -} - -/* SPIN parts */ -enum { - SPNP_UP = 1, - SPNP_DOWN = 2, - SPNP_UPHORZ = 3, - SPNP_DOWNHORZ = 4 -} - -/* STARTPANEL parts */ -enum { - SPP_USERPANE = 1, - SPP_MOREPROGRAMS = 2, - SPP_MOREPROGRAMSARROW = 3, - SPP_PROGLIST = 4, - SPP_PROGLISTSEPARATOR = 5, - SPP_PLACESLIST = 6, - SPP_PLACESLISTSEPARATOR = 7, - SPP_LOGOFF = 8, - SPP_LOGOFFBUTTONS = 9, - SPP_USERPICTURE = 10, - SPP_PREVIEW = 11 -} - -enum { - SPLS_NORMAL = 1, - SPLS_HOT = 2, - SPLS_PRESSED = 3 -} - -enum { - SPS_NORMAL = 1, - SPS_HOT = 2, - SPS_PRESSED = 3 -} - -/* STATUS parts */ -enum { - SP_PANE = 1, - SP_GRIPPERPANE = 2, - SP_GRIPPER = 3 -} - -/* TAB parts */ -enum { - TABP_TABITEM = 1, - TABP_TABITEMLEFTEDGE = 2, - TABP_TABITEMRIGHTEDGE = 3, - TABP_TABITEMBOTHEDGE = 4, - TABP_TOPTABITEM = 5, - TABP_TOPTABITEMLEFTEDGE = 6, - TABP_TOPTABITEMRIGHTEDGE = 7, - TABP_TOPTABITEMBOTHEDGE = 8, - TABP_PANE = 9, - TABP_BODY = 10 -} - -enum { - TIS_NORMAL = 1, - TIS_HOT = 2, - TIS_SELECTED = 3, - TIS_DISABLED = 4, - TIS_FOCUSED = 5 -} - -enum { - TIBES_NORMAL = 1, - TIBES_HOT = 2, - TIBES_SELECTED = 3, - TIBES_DISABLED = 4, - TIBES_FOCUSED = 5 -} - -enum { - TILES_NORMAL = 1, - TILES_HOT = 2, - TILES_SELECTED = 3, - TILES_DISABLED = 4, - TILES_FOCUSED = 5 -} - -enum { - TIRES_NORMAL = 1, - TIRES_HOT = 2, - TIRES_SELECTED = 3, - TIRES_DISABLED = 4, - TIRES_FOCUSED = 5 -} - -enum { - TTIS_NORMAL = 1, - TTIS_HOT = 2, - TTIS_SELECTED = 3, - TTIS_DISABLED = 4, - TTIS_FOCUSED = 5 -} - -enum { - TTIBES_NORMAL = 1, - TTIBES_HOT = 2, - TTIBES_SELECTED = 3, - TTIBES_DISABLED = 4, - TTIBES_FOCUSED = 5 -} - -enum { - TTILES_NORMAL = 1, - TTILES_HOT = 2, - TTILES_SELECTED = 3, - TTILES_DISABLED = 4, - TTILES_FOCUSED = 5 -} - -enum { - TTIRES_NORMAL = 1, - TTIRES_HOT = 2, - TTIRES_SELECTED = 3, - TTIRES_DISABLED = 4, - TTIRES_FOCUSED = 5 -} - -/* TASKBAND parts */ -enum { - TDP_GROUPCOUNT = 1, - TDP_FLASHBUTTON = 2, - TDP_FLASHBUTTONGROUPMENU = 3 -} - -/* TASKBAR parts */ -enum { - TBP_BACKGROUNDBOTTOM = 1, - TBP_BACKGROUNDRIGHT = 2, - TBP_BACKGROUNDTOP = 3, - TBP_BACKGROUNDLEFT = 4, - TBP_SIZINGBARBOTTOM = 5, - TBP_SIZINGBARRIGHT = 6, - TBP_SIZINGBARTOP = 7, - TBP_SIZINGBARLEFT = 8 -} - -/* TOOLBAR parts */ -enum { - TP_BUTTON = 1, - TP_DROPDOWNBUTTON = 2, - TP_SPLITBUTTON = 3, - TP_SPLITBUTTONDROPDOWN = 4, - TP_SEPARATOR = 5, - TP_SEPARATORVERT = 6 -} - -enum { - TS_NORMAL = 1, - TS_HOT = 2, - TS_PRESSED = 3, - TS_DISABLED = 4, - TS_CHECKED = 5, - TS_HOTCHECKED = 6 -} - -/* TOOLTIP parts */ -enum { - TTP_STANDARD = 1, - TTP_STANDARDTITLE = 2, - TTP_BALLOON = 3, - TTP_BALLOONTITLE = 4, - TTP_CLOSE = 5 -} - -enum { - TTBS_NORMAL = 1, - TTBS_LINK = 2 -} - -enum { - TTCS_NORMAL = 1, - TTCS_HOT = 2, - TTCS_PRESSED = 3 -} - -enum { - TTSS_NORMAL = 1, - TTSS_LINK = 2 -} - -/* TRACKBAR parts */ -enum { - TKP_TRACK = 1, - TKP_TRACKVERT = 2, - TKP_THUMB = 3, - TKP_THUMBBOTTOM = 4, - TKP_THUMBTOP = 5, - TKP_THUMBVERT = 6, - TKP_THUMBLEFT = 7, - TKP_THUMBRIGHT = 8, - TKP_TICS = 9, - TKP_TICSVERT = 10 -} - -enum { - TUS_NORMAL = 1, - TUS_HOT = 2, - TUS_PRESSED = 3, - TUS_FOCUSED = 4, - TUS_DISABLED = 5 -} - -enum { - TUBS_NORMAL = 1, - TUBS_HOT = 2, - TUBS_PRESSED = 3, - TUBS_FOCUSED = 4, - TUBS_DISABLED = 5 -} - -enum { - TUVLS_NORMAL = 1, - TUVLS_HOT = 2, - TUVLS_PRESSED = 3, - TUVLS_FOCUSED = 4, - TUVLS_DISABLED = 5 -} - -enum { - TUVRS_NORMAL = 1, - TUVRS_HOT = 2, - TUVRS_PRESSED = 3, - TUVRS_FOCUSED = 4, - TUVRS_DISABLED = 5 -} - -enum { - TUTS_NORMAL = 1, - TUTS_HOT = 2, - TUTS_PRESSED = 3, - TUTS_FOCUSED = 4, - TUTS_DISABLED = 5 -} - -enum { - TUVS_NORMAL = 1, - TUVS_HOT = 2, - TUVS_PRESSED = 3, - TUVS_FOCUSED = 4, - TUVS_DISABLED = 5 -} - -enum { - TSS_NORMAL = 1 -} - -enum { - TSVS_NORMAL = 1 -} - -enum { - TRS_NORMAL = 1 -} - -enum { - TRVS_NORMAL = 1 -} - -/* TRAYNOTIFY parts */ -enum { - TNP_BACKGROUND = 1, - TNP_ANIMBACKGROUND = 2 -} - -/* TREEVIEW parts */ -enum { - TVP_TREEITEM = 1, - TVP_GLYPH = 2, - TVP_BRANCH = 3 -} - -enum { - GLPS_CLOSED = 1, - GLPS_OPENED = 2 -} - -enum { - TREIS_NORMAL = 1, - TREIS_HOT = 2, - TREIS_SELECTED = 3, - TREIS_DISABLED = 4, - TREIS_SELECTEDNOTFOCUS = 5 -} - -/* WINDOW parts */ -enum { - WP_CAPTION = 1, - WP_SMALLCAPTION = 2, - WP_MINCAPTION = 3, - WP_SMALLMINCAPTION = 4, - WP_MAXCAPTION = 5, - WP_SMALLMAXCAPTION = 6, - WP_FRAMELEFT = 7, - WP_FRAMERIGHT = 8, - WP_FRAMEBOTTOM = 9, - WP_SMALLFRAMELEFT = 10, - WP_SMALLFRAMERIGHT = 11, - WP_SMALLFRAMEBOTTOM = 12, - WP_SYSBUTTON = 13, - WP_MDISYSBUTTON = 14, - WP_MINBUTTON = 15, - WP_MDIMINBUTTON = 16, - WP_MAXBUTTON = 17, - WP_CLOSEBUTTON = 18, - WP_SMALLCLOSEBUTTON = 19, - WP_MDICLOSEBUTTON = 20, - WP_RESTOREBUTTON = 21, - WP_MDIRESTOREBUTTON = 22, - WP_HELPBUTTON = 23, - WP_MDIHELPBUTTON = 24, - WP_HORZSCROLL = 25, - WP_HORZTHUMB = 26, - WP_VERTSCROLL = 27, - WP_VERTTHUMB = 28, - WP_DIALOG = 29, - WP_CAPTIONSIZINGTEMPLATE = 30, - WP_SMALLCAPTIONSIZINGTEMPLATE = 31, - WP_FRAMELEFTSIZINGTEMPLATE = 32, - WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33, - WP_FRAMERIGHTSIZINGTEMPLATE = 34, - WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35, - WP_FRAMEBOTTOMSIZINGTEMPLATE = 36, - WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37 -} - -enum { - CS_ACTIVE = 1, - CS_INACTIVE = 2, - CS_DISABLED = 3 -} - -enum { - CBS_NORMAL = 1, - CBS_HOT = 2, - CBS_PUSHED = 3, - CBS_DISABLED = 4 -} - -enum { - FS_ACTIVE = 1, - FS_INACTIVE = 2 -} - -enum { - HBS_NORMAL = 1, - HBS_HOT = 2, - HBS_PUSHED = 3, - HBS_DISABLED = 4 -} - -enum { - HSS_NORMAL = 1, - HSS_HOT = 2, - HSS_PUSHED = 3, - HSS_DISABLED = 4 -} - -enum { - HTS_NORMAL = 1, - HTS_HOT = 2, - HTS_PUSHED = 3, - HTS_DISABLED = 4 -} - -enum { - MAXBS_NORMAL = 1, - MAXBS_HOT = 2, - MAXBS_PUSHED = 3, - MAXBS_DISABLED = 4 -} - -enum { - MXCS_ACTIVE = 1, - MXCS_INACTIVE = 2, - MXCS_DISABLED = 3 -} - -enum { - MINBS_NORMAL = 1, - MINBS_HOT = 2, - MINBS_PUSHED = 3, - MINBS_DISABLED = 4 -} - -enum { - RBS_NORMAL = 1, - RBS_HOT = 2, - RBS_PUSHED = 3, - RBS_DISABLED = 4 -} - -enum { - SBS_NORMAL = 1, - SBS_HOT = 2, - SBS_PUSHED = 3, - SBS_DISABLED = 4 -} - -enum { - MNCS_ACTIVE = 1, - MNCS_INACTIVE = 2, - MNCS_DISABLED = 3 -} - -enum { - VSS_NORMAL = 1, - VSS_HOT = 2, - VSS_PUSHED = 3, - VSS_DISABLED = 4 -} - -enum { - VTS_NORMAL = 1, - VTS_HOT = 2, - VTS_PUSHED = 3, - VTS_DISABLED = 4 -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_tmschema.d) + */ +module core.sys.windows.tmschema; + +/* BUTTON parts */ +enum { + BP_PUSHBUTTON = 1, + BP_RADIOBUTTON = 2, + BP_CHECKBOX = 3, + BP_GROUPBOX = 4, + BP_USERBUTTON = 5 +} + +enum { + CBS_UNCHECKEDNORMAL = 1, + CBS_UNCHECKEDHOT = 2, + CBS_UNCHECKEDPRESSED = 3, + CBS_UNCHECKEDDISABLED = 4, + CBS_CHECKEDNORMAL = 5, + CBS_CHECKEDHOT = 6, + CBS_CHECKEDPRESSED = 7, + CBS_CHECKEDDISABLED = 8, + CBS_MIXEDNORMAL = 9, + CBS_MIXEDHOT = 10, + CBS_MIXEDPRESSED = 11, + CBS_MIXEDDISABLED = 12 +} + +enum { + GBS_NORMAL = 1, + GBS_DISABLED = 2 +} + +enum { + PBS_NORMAL = 1, + PBS_HOT = 2, + PBS_PRESSED = 3, + PBS_DISABLED = 4, + PBS_DEFAULTED = 5 +} + +enum { + RBS_UNCHECKEDNORMAL = 1, + RBS_UNCHECKEDHOT = 2, + RBS_UNCHECKEDPRESSED = 3, + RBS_UNCHECKEDDISABLED = 4, + RBS_CHECKEDNORMAL = 5, + RBS_CHECKEDHOT = 6, + RBS_CHECKEDPRESSED = 7, + RBS_CHECKEDDISABLED = 8 +} + +/* CLOCK parts */ +enum { + CLP_TIME = 1 +} + +enum { + CLS_NORMAL = 1 +} + +/* COMBOBOX parts */ +enum { + CP_DROPDOWNBUTTON = 1 +} + +enum { + CBXS_NORMAL = 1, + CBXS_HOT = 2, + CBXS_PRESSED = 3, + CBXS_DISABLED = 4 +} + +/* EDIT parts */ +enum { + EP_EDITTEXT = 1, + EP_CARET = 2 +} + +enum { + ETS_NORMAL = 1, + ETS_HOT = 2, + ETS_SELECTED = 3, + ETS_DISABLED = 4, + ETS_FOCUSED = 5, + ETS_READONLY = 6, + ETS_ASSIST = 7 +} +/* EXPLORERBAR parts */ +enum { + EBP_HEADERBACKGROUND = 1, + EBP_HEADERCLOSE = 2, + EBP_HEADERPIN = 3, + EBP_IEBARMENU = 4, + EBP_NORMALGROUPBACKGROUND = 5, + EBP_NORMALGROUPCOLLAPSE = 6, + EBP_NORMALGROUPEXPAND = 7, + EBP_NORMALGROUPHEAD = 8, + EBP_SPECIALGROUPBACKGROUND = 9, + EBP_SPECIALGROUPCOLLAPSE = 10, + EBP_SPECIALGROUPEXPAND = 11, + EBP_SPECIALGROUPHEAD = 12 +} + +enum { + EBHC_NORMAL = 1, + EBHC_HOT = 2, + EBHC_PRESSED = 3 +} + +enum { + EBHP_NORMAL = 1, + EBHP_HOT = 2, + EBHP_PRESSED = 3, + EBHP_SELECTEDNORMAL = 4, + EBHP_SELECTEDHOT = 5, + EBHP_SELECTEDPRESSED = 6 +} + +enum { + EBM_NORMAL = 1, + EBM_HOT = 2, + EBM_PRESSED = 3 +} + +enum { + EBNGC_NORMAL = 1, + EBNGC_HOT = 2, + EBNGC_PRESSED = 3 +} + +enum { + EBNGE_NORMAL = 1, + EBNGE_HOT = 2, + EBNGE_PRESSED = 3 +} + +enum { + EBSGC_NORMAL = 1, + EBSGC_HOT = 2, + EBSGC_PRESSED = 3 +} + +enum { + EBSGE_NORMAL = 1, + EBSGE_HOT = 2, + EBSGE_PRESSED = 3 +} + +/* HEADER parts */ +enum { + HP_HEADERITEM = 1, + HP_HEADERITEMLEFT = 2, + HP_HEADERITEMRIGHT = 3, + HP_HEADERSORTARROW = 4 +} + +enum { + HIS_NORMAL = 1, + HIS_HOT = 2, + HIS_PRESSED = 3 +} + +enum { + HILS_NORMAL = 1, + HILS_HOT = 2, + HILS_PRESSED = 3 +} + +enum { + HIRS_NORMAL = 1, + HIRS_HOT = 2, + HIRS_PRESSED = 3 +} + +enum { + HSAS_SORTEDUP = 1, + HSAS_SORTEDDOWN = 2 +} + +/* LISTVIEW parts */ +enum { + LVP_LISTITEM = 1, + LVP_LISTGROUP = 2, + LVP_LISTDETAIL = 3, + LVP_LISTSORTEDDETAIL = 4, + LVP_EMPTYTEXT = 5 +} + +enum { + LIS_NORMAL = 1, + LIS_HOT = 2, + LIS_SELECTED = 3, + LIS_DISABLED = 4, + LIS_SELECTEDNOTFOCUS = 5 +} + +/* MENU parts */ +enum { + MP_MENUITEM = 1, + MP_MENUDROPDOWN = 2, + MP_MENUBARITEM = 3, + MP_MENUBARDROPDOWN = 4, + MP_CHEVRON = 5, + MP_SEPARATOR = 6 +} + +enum { + MS_NORMAL = 1, + MS_SELECTED = 2, + MS_DEMOTED = 3 +} +/* MENUBAND parts */ +enum { + MDP_NEWAPPBUTTON = 1, + MDP_SEPERATOR = 2 +} + +enum { + MDS_NORMAL = 1, + MDS_HOT = 2, + MDS_PRESSED = 3, + MDS_DISABLED = 4, + MDS_CHECKED = 5, + MDS_HOTCHECKED = 6 +} + +/* PAGE parts */ +enum { + PGRP_UP = 1, + PGRP_DOWN = 2, + PGRP_UPHORZ = 3, + PGRP_DOWNHORZ = 4 +} + +enum { + DNS_NORMAL = 1, + DNS_HOT = 2, + DNS_PRESSED = 3, + DNS_DISABLED = 4 +} + +enum { + DNHZS_NORMAL = 1, + DNHZS_HOT = 2, + DNHZS_PRESSED = 3, + DNHZS_DISABLED = 4 +} + +enum { + UPS_NORMAL = 1, + UPS_HOT = 2, + UPS_PRESSED = 3, + UPS_DISABLED = 4 +} + +enum { + UPHZS_NORMAL = 1, + UPHZS_HOT = 2, + UPHZS_PRESSED = 3, + UPHZS_DISABLED = 4 +} + +/* PROGRESS parts */ +enum { + PP_BAR = 1, + PP_BARVERT = 2, + PP_CHUNK = 3, + PP_CHUNKVERT = 4 +} + +/* REBAR parts */ +enum { + RP_GRIPPER = 1, + RP_GRIPPERVERT = 2, + RP_BAND = 3, + RP_CHEVRON = 4, + RP_CHEVRONVERT = 5 +} + +enum { + CHEVS_NORMAL = 1, + CHEVS_HOT = 2, + CHEVS_PRESSED = 3 +} + +/* SCROLLBAR parts */ +enum { + SBP_ARROWBTN = 1, + SBP_THUMBBTNHORZ = 2, + SBP_THUMBBTNVERT = 3, + SBP_LOWERTRACKHORZ = 4, + SBP_UPPERTRACKHORZ = 5, + SBP_LOWERTRACKVERT = 6, + SBP_UPPERTRACKVERT = 7, + SBP_GRIPPERHORZ = 8, + SBP_GRIPPERVERT = 9, + SBP_SIZEBOX = 10 +} + +enum { + ABS_UPNORMAL = 1, + ABS_UPHOT = 2, + ABS_UPPRESSED = 3, + ABS_UPDISABLED = 4, + ABS_DOWNNORMAL = 5, + ABS_DOWNHOT = 6, + ABS_DOWNPRESSED = 7, + ABS_DOWNDISABLED = 8, + ABS_LEFTNORMAL = 9, + ABS_LEFTHOT = 10, + ABS_LEFTPRESSED = 11, + ABS_LEFTDISABLED = 12, + ABS_RIGHTNORMAL = 13, + ABS_RIGHTHOT = 14, + ABS_RIGHTPRESSED = 15, + ABS_RIGHTDISABLED = 16 +} + +enum { + SCRBS_NORMAL = 1, + SCRBS_HOT = 2, + SCRBS_PRESSED = 3, + SCRBS_DISABLED = 4 +} + +enum { + SZB_RIGHTALIGN = 1, + SZB_LEFTALIGN = 2 +} + +/* SPIN parts */ +enum { + SPNP_UP = 1, + SPNP_DOWN = 2, + SPNP_UPHORZ = 3, + SPNP_DOWNHORZ = 4 +} + +/* STARTPANEL parts */ +enum { + SPP_USERPANE = 1, + SPP_MOREPROGRAMS = 2, + SPP_MOREPROGRAMSARROW = 3, + SPP_PROGLIST = 4, + SPP_PROGLISTSEPARATOR = 5, + SPP_PLACESLIST = 6, + SPP_PLACESLISTSEPARATOR = 7, + SPP_LOGOFF = 8, + SPP_LOGOFFBUTTONS = 9, + SPP_USERPICTURE = 10, + SPP_PREVIEW = 11 +} + +enum { + SPLS_NORMAL = 1, + SPLS_HOT = 2, + SPLS_PRESSED = 3 +} + +enum { + SPS_NORMAL = 1, + SPS_HOT = 2, + SPS_PRESSED = 3 +} + +/* STATUS parts */ +enum { + SP_PANE = 1, + SP_GRIPPERPANE = 2, + SP_GRIPPER = 3 +} + +/* TAB parts */ +enum { + TABP_TABITEM = 1, + TABP_TABITEMLEFTEDGE = 2, + TABP_TABITEMRIGHTEDGE = 3, + TABP_TABITEMBOTHEDGE = 4, + TABP_TOPTABITEM = 5, + TABP_TOPTABITEMLEFTEDGE = 6, + TABP_TOPTABITEMRIGHTEDGE = 7, + TABP_TOPTABITEMBOTHEDGE = 8, + TABP_PANE = 9, + TABP_BODY = 10 +} + +enum { + TIS_NORMAL = 1, + TIS_HOT = 2, + TIS_SELECTED = 3, + TIS_DISABLED = 4, + TIS_FOCUSED = 5 +} + +enum { + TIBES_NORMAL = 1, + TIBES_HOT = 2, + TIBES_SELECTED = 3, + TIBES_DISABLED = 4, + TIBES_FOCUSED = 5 +} + +enum { + TILES_NORMAL = 1, + TILES_HOT = 2, + TILES_SELECTED = 3, + TILES_DISABLED = 4, + TILES_FOCUSED = 5 +} + +enum { + TIRES_NORMAL = 1, + TIRES_HOT = 2, + TIRES_SELECTED = 3, + TIRES_DISABLED = 4, + TIRES_FOCUSED = 5 +} + +enum { + TTIS_NORMAL = 1, + TTIS_HOT = 2, + TTIS_SELECTED = 3, + TTIS_DISABLED = 4, + TTIS_FOCUSED = 5 +} + +enum { + TTIBES_NORMAL = 1, + TTIBES_HOT = 2, + TTIBES_SELECTED = 3, + TTIBES_DISABLED = 4, + TTIBES_FOCUSED = 5 +} + +enum { + TTILES_NORMAL = 1, + TTILES_HOT = 2, + TTILES_SELECTED = 3, + TTILES_DISABLED = 4, + TTILES_FOCUSED = 5 +} + +enum { + TTIRES_NORMAL = 1, + TTIRES_HOT = 2, + TTIRES_SELECTED = 3, + TTIRES_DISABLED = 4, + TTIRES_FOCUSED = 5 +} + +/* TASKBAND parts */ +enum { + TDP_GROUPCOUNT = 1, + TDP_FLASHBUTTON = 2, + TDP_FLASHBUTTONGROUPMENU = 3 +} + +/* TASKBAR parts */ +enum { + TBP_BACKGROUNDBOTTOM = 1, + TBP_BACKGROUNDRIGHT = 2, + TBP_BACKGROUNDTOP = 3, + TBP_BACKGROUNDLEFT = 4, + TBP_SIZINGBARBOTTOM = 5, + TBP_SIZINGBARRIGHT = 6, + TBP_SIZINGBARTOP = 7, + TBP_SIZINGBARLEFT = 8 +} + +/* TOOLBAR parts */ +enum { + TP_BUTTON = 1, + TP_DROPDOWNBUTTON = 2, + TP_SPLITBUTTON = 3, + TP_SPLITBUTTONDROPDOWN = 4, + TP_SEPARATOR = 5, + TP_SEPARATORVERT = 6 +} + +enum { + TS_NORMAL = 1, + TS_HOT = 2, + TS_PRESSED = 3, + TS_DISABLED = 4, + TS_CHECKED = 5, + TS_HOTCHECKED = 6 +} + +/* TOOLTIP parts */ +enum { + TTP_STANDARD = 1, + TTP_STANDARDTITLE = 2, + TTP_BALLOON = 3, + TTP_BALLOONTITLE = 4, + TTP_CLOSE = 5 +} + +enum { + TTBS_NORMAL = 1, + TTBS_LINK = 2 +} + +enum { + TTCS_NORMAL = 1, + TTCS_HOT = 2, + TTCS_PRESSED = 3 +} + +enum { + TTSS_NORMAL = 1, + TTSS_LINK = 2 +} + +/* TRACKBAR parts */ +enum { + TKP_TRACK = 1, + TKP_TRACKVERT = 2, + TKP_THUMB = 3, + TKP_THUMBBOTTOM = 4, + TKP_THUMBTOP = 5, + TKP_THUMBVERT = 6, + TKP_THUMBLEFT = 7, + TKP_THUMBRIGHT = 8, + TKP_TICS = 9, + TKP_TICSVERT = 10 +} + +enum { + TUS_NORMAL = 1, + TUS_HOT = 2, + TUS_PRESSED = 3, + TUS_FOCUSED = 4, + TUS_DISABLED = 5 +} + +enum { + TUBS_NORMAL = 1, + TUBS_HOT = 2, + TUBS_PRESSED = 3, + TUBS_FOCUSED = 4, + TUBS_DISABLED = 5 +} + +enum { + TUVLS_NORMAL = 1, + TUVLS_HOT = 2, + TUVLS_PRESSED = 3, + TUVLS_FOCUSED = 4, + TUVLS_DISABLED = 5 +} + +enum { + TUVRS_NORMAL = 1, + TUVRS_HOT = 2, + TUVRS_PRESSED = 3, + TUVRS_FOCUSED = 4, + TUVRS_DISABLED = 5 +} + +enum { + TUTS_NORMAL = 1, + TUTS_HOT = 2, + TUTS_PRESSED = 3, + TUTS_FOCUSED = 4, + TUTS_DISABLED = 5 +} + +enum { + TUVS_NORMAL = 1, + TUVS_HOT = 2, + TUVS_PRESSED = 3, + TUVS_FOCUSED = 4, + TUVS_DISABLED = 5 +} + +enum { + TSS_NORMAL = 1 +} + +enum { + TSVS_NORMAL = 1 +} + +enum { + TRS_NORMAL = 1 +} + +enum { + TRVS_NORMAL = 1 +} + +/* TRAYNOTIFY parts */ +enum { + TNP_BACKGROUND = 1, + TNP_ANIMBACKGROUND = 2 +} + +/* TREEVIEW parts */ +enum { + TVP_TREEITEM = 1, + TVP_GLYPH = 2, + TVP_BRANCH = 3 +} + +enum { + GLPS_CLOSED = 1, + GLPS_OPENED = 2 +} + +enum { + TREIS_NORMAL = 1, + TREIS_HOT = 2, + TREIS_SELECTED = 3, + TREIS_DISABLED = 4, + TREIS_SELECTEDNOTFOCUS = 5 +} + +/* WINDOW parts */ +enum { + WP_CAPTION = 1, + WP_SMALLCAPTION = 2, + WP_MINCAPTION = 3, + WP_SMALLMINCAPTION = 4, + WP_MAXCAPTION = 5, + WP_SMALLMAXCAPTION = 6, + WP_FRAMELEFT = 7, + WP_FRAMERIGHT = 8, + WP_FRAMEBOTTOM = 9, + WP_SMALLFRAMELEFT = 10, + WP_SMALLFRAMERIGHT = 11, + WP_SMALLFRAMEBOTTOM = 12, + WP_SYSBUTTON = 13, + WP_MDISYSBUTTON = 14, + WP_MINBUTTON = 15, + WP_MDIMINBUTTON = 16, + WP_MAXBUTTON = 17, + WP_CLOSEBUTTON = 18, + WP_SMALLCLOSEBUTTON = 19, + WP_MDICLOSEBUTTON = 20, + WP_RESTOREBUTTON = 21, + WP_MDIRESTOREBUTTON = 22, + WP_HELPBUTTON = 23, + WP_MDIHELPBUTTON = 24, + WP_HORZSCROLL = 25, + WP_HORZTHUMB = 26, + WP_VERTSCROLL = 27, + WP_VERTTHUMB = 28, + WP_DIALOG = 29, + WP_CAPTIONSIZINGTEMPLATE = 30, + WP_SMALLCAPTIONSIZINGTEMPLATE = 31, + WP_FRAMELEFTSIZINGTEMPLATE = 32, + WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33, + WP_FRAMERIGHTSIZINGTEMPLATE = 34, + WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35, + WP_FRAMEBOTTOMSIZINGTEMPLATE = 36, + WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37 +} + +enum { + CS_ACTIVE = 1, + CS_INACTIVE = 2, + CS_DISABLED = 3 +} + +enum { + CBS_NORMAL = 1, + CBS_HOT = 2, + CBS_PUSHED = 3, + CBS_DISABLED = 4 +} + +enum { + FS_ACTIVE = 1, + FS_INACTIVE = 2 +} + +enum { + HBS_NORMAL = 1, + HBS_HOT = 2, + HBS_PUSHED = 3, + HBS_DISABLED = 4 +} + +enum { + HSS_NORMAL = 1, + HSS_HOT = 2, + HSS_PUSHED = 3, + HSS_DISABLED = 4 +} + +enum { + HTS_NORMAL = 1, + HTS_HOT = 2, + HTS_PUSHED = 3, + HTS_DISABLED = 4 +} + +enum { + MAXBS_NORMAL = 1, + MAXBS_HOT = 2, + MAXBS_PUSHED = 3, + MAXBS_DISABLED = 4 +} + +enum { + MXCS_ACTIVE = 1, + MXCS_INACTIVE = 2, + MXCS_DISABLED = 3 +} + +enum { + MINBS_NORMAL = 1, + MINBS_HOT = 2, + MINBS_PUSHED = 3, + MINBS_DISABLED = 4 +} + +enum { + RBS_NORMAL = 1, + RBS_HOT = 2, + RBS_PUSHED = 3, + RBS_DISABLED = 4 +} + +enum { + SBS_NORMAL = 1, + SBS_HOT = 2, + SBS_PUSHED = 3, + SBS_DISABLED = 4 +} + +enum { + MNCS_ACTIVE = 1, + MNCS_INACTIVE = 2, + MNCS_DISABLED = 3 +} + +enum { + VSS_NORMAL = 1, + VSS_HOT = 2, + VSS_PUSHED = 3, + VSS_DISABLED = 4 +} + +enum { + VTS_NORMAL = 1, + VTS_HOT = 2, + VTS_PUSHED = 3, + VTS_DISABLED = 4 +} diff --git a/src/core/sys/windows/unknwn.d b/src/core/sys/windows/unknwn.d index 5f8e599245..09c6f7ef12 100644 --- a/src/core/sys/windows/unknwn.d +++ b/src/core/sys/windows/unknwn.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* unknwn.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_unknwn.d) + */ module core.sys.windows.unknwn; import core.sys.windows.objfwd, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index 7fa1fdd0a9..9707ca4668 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -1,11 +1,11 @@ -/***********************************************************************\ -* vfw.d * -* * -* Windows API header module * -* written in the D programming language * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * written in the D programming language + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_vfw.d) + */ module core.sys.windows.vfw; pragma(lib, "vfw32"); @@ -2392,4 +2392,4 @@ version(Unicode) { } else { // Unicode alias GetOpenFileNamePreviewA GetOpenFileNamePreview; alias GetSaveFileNamePreviewA GetSaveFileNamePreview; -} \ No newline at end of file +} diff --git a/src/core/sys/windows/w32api.d b/src/core/sys/windows/w32api.d index f7a2357dec..3473a0ca1d 100644 --- a/src/core/sys/windows/w32api.d +++ b/src/core/sys/windows/w32api.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* w32api.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 4.0 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 4.0 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_w32api.d) + */ module core.sys.windows.w32api; enum __W32API_VERSION = 3.17; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index dceba57b5a..d79c0b4fb9 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* winbase.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winbase.d) + */ module core.sys.windows.winbase; pragma(lib, "kernel32"); diff --git a/src/core/sys/windows/winber.d b/src/core/sys/windows/winber.d index 97c03e4870..55562b748b 100644 --- a/src/core/sys/windows/winber.d +++ b/src/core/sys/windows/winber.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* winber.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winber.d) + */ module core.sys.windows.winber; /* Comment from MinGW diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index dec40aa840..ddf5359ba0 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* wincon.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wincon.d) + */ module core.sys.windows.wincon; pragma(lib, "kernel32"); diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index 872d5da29b..ecc930448c 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* wincrypt.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wincrypt.d) + */ module core.sys.windows.wincrypt; private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index 8503f608ea..361292ec1c 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* windef.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_windef.d) + */ module core.sys.windows.windef; public import core.sys.windows.winnt; diff --git a/src/core/sys/windows/windows.d b/src/core/sys/windows/windows.d index 82a468b721..a1942b0e3d 100644 --- a/src/core/sys/windows/windows.d +++ b/src/core/sys/windows/windows.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* windows.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 4.0 * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 4.0 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_windows.d) + */ module core.sys.windows.windows; /* diff --git a/src/core/sys/windows/winerror.d b/src/core/sys/windows/winerror.d index abd2cee342..aa9652b975 100644 --- a/src/core/sys/windows/winerror.d +++ b/src/core/sys/windows/winerror.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* winerror.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winerror.d) + */ module core.sys.windows.winerror; /* Comments from the Mingw header: diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index bc4f6c4f9d..4616f008ef 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* wingdi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wingdi.d) + */ module core.sys.windows.wingdi; pragma(lib, "gdi32"); diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d index a0afa0897b..a0d5e48ec8 100644 --- a/src/core/sys/windows/winhttp.d +++ b/src/core/sys/windows/winhttp.d @@ -1,844 +1,843 @@ -/***********************************************************************\ -* winhttp.d * -* * -* Windows API header module * -* * -* Translated from Windows SDK Headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winhttp; -pragma(lib, "winhttp"); -// FIXME: Grouping of constants. Windows SDK doesn't make this entirely clear -// FIXME: Verify WINHTTP_STATUS_CALLBACK function declaration works correctly - -import win32.w32api; -import win32.winbase; -import win32.windef; -import win32.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) - -alias HINTERNET = void*; -alias LPHINTERNET = HINTERNET*; -alias INTERNET_PORT = WORD; -alias LPINTERNET_PORT = INTERNET_PORT*; -alias INTERNET_SCHEME = int; -alias LPINTERNET_SCHEME = INTERNET_SCHEME*; - -// Protocol 'Manifests' -enum : DWORD { - INTERNET_DEFAULT_PORT = 0, - INTERNET_DEFAULT_HTTP_PORT = 80, - INTERNET_DEFAULT_HTTPS_PORT = 443 -} - -// WinHttpOpen() Flags: -enum DWORD WINHTTP_FLAG_ASYNC = 0x10000000; - -// WinHttpOpenRequest() Flags: -enum : DWORD { - WINHTTP_FLAG_SECURE = 0x00800000, - WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, - WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, - WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, - WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, - WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, - WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, - - SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, - SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, - SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, - SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = 0x00000200 -} - -struct WINHTTP_ASYNC_RESULT { - DWORD_PTR dwResult; - DWORD dwError; -} -alias LPWINHTTP_ASYNC_RESULT = WINHTTP_ASYNC_RESULT*; - -struct HTTP_VERSION_INFO { - DWORD dwMajorVersion; - DWORD dwMinorVersion; -} -alias LPHTTP_VERSION_INFO = HTTP_VERSION_INFO*; - -// URL Scheme -enum : DWORD { - INTERNET_SCHEME_HTTP = 1, - INTERNET_SCHEME_HTTPS = 2, - INTERNET_SCHEME_FTP = 3, - INTERNET_SCHEME_SOCKS = 4 -} - -struct URL_COMPONENTS { - DWORD dwStructSize; - LPWSTR lpszScheme; - DWORD dwSchemeLength; - INTERNET_SCHEME nScheme; - LPWSTR lpszHostName; - DWORD dwHostNameLength; - INTERNET_PORT nPort; - LPWSTR lpszUserName; - DWORD dwUserNameLength; - LPWSTR lpszPassword; - DWORD dwPasswordLength; - LPWSTR lpszUrlPath; - DWORD dwUrlPathLength; - LPWSTR lpszExtraInfo; - DWORD dwExtraInfoLength; -} -alias LPURL_COMPONENTS = URL_COMPONENTS*; -alias URL_COMPONENTSW = URL_COMPONENTS; -alias LPURL_COMPONENTSW = URL_COMPONENTS*; - -struct WINHTTP_PROXY_INFO { - DWORD dwAccessType; - LPWSTR lpszProxy; - LPWSTR lpszProxyBypass; -} -alias LPWINHTTP_PROXY_INFO = WINHTTP_PROXY_INFO*; -alias WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO; -alias LPWINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO*; - -struct WINHTTP_AUTOPROXY_OPTIONS { - DWORD dwFlags; - DWORD dwAutoDetectFlags; - LPCWSTR lpszAutoConfigUrl; - LPVOID lpvReserved; - DWORD dwReserved; - BOOL fAutoLogonIfChallenged; -} - -enum : DWORD { - WINHTTP_AUTOPROXY_AUTO_DETECT = 0x00000001, - WINHTTP_AUTOPROXY_CONFIG_URL = 0x00000002, - WINHTTP_AUTOPROXY_HOST_KEEPCASE = 0x00000004, - WINHTTP_AUTOPROXY_HOST_LOWERCASE = 0x00000008, - WINHTTP_AUTOPROXY_RUN_INPROCESS = 0x00010000, - WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = 0x00020000, - WINHTTP_AUTOPROXY_NO_DIRECTACCESS = 0x00040000, - WINHTTP_AUTOPROXY_NO_CACHE_CLIENT = 0x00080000, - WINHTTP_AUTOPROXY_NO_CACHE_SVC = 0x00100000, - - WINHTTP_AUTOPROXY_SORT_RESULTS = 0x00400000 -} - -// dwAutoDetectFlags -enum : DWORD { - WINHTTP_AUTO_DETECT_TYPE_DHCP = 0x00000001, - WINHTTP_AUTO_DETECT_TYPE_DNS_A = 0x00000002 -} - -struct WINHTTP_CERTIFICATE_INFO { - FILETIME ftExpiry; - FILETIME ftStart; - LPWSTR lpszSubjectInfo; - LPWSTR lpszIssuerInfo; - LPWSTR lpszProtocolName; - LPWSTR lpszSignatureAlgName; - LPWSTR lpszEncryptionAlgName; - DWORD dwKeySize; -} - -// This structure is only defined #if _WS2DEF_ defined (from ) - per Windows SDK -struct WINHTTP_CONNECTION_INFO { - DWORD cbSize; - SOCKADDR_STORAGE LocalAddress; - SOCKADDR_STORAGE RemoteAddress; -} - -// WinHttpTimeFromSystemTime -enum DWORD WINHTTP_TIME_FORMAT_BUFSIZE = 62; - -// CrackUrl, CombineUrl -enum : DWORD { - ICU_NO_ENCODE = 0x20000000, - ICU_DECODE = 0x10000000, - ICU_NO_META = 0x08000000, - ICU_ENCODE_SPACES_ONLY = 0x04000000, - ICU_BROWSER_MODE = 0x02000000, - ICU_ENCODE_PERCENT = 0x00001000 -} -// WinHttpCrackUrl, WinHttpCreateUrl -enum : DWORD { - ICU_ESCAPE = 0x80000000, - ICU_ESCAPE_AUTHORITY = 0x00002000, - ICU_REJECT_USERPWD = 0x00004000 -} -enum : DWORD { - WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, - WINHTTP_ACCESS_TYPE_NO_PROXY = 1, - WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, - WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4 -} -// WinHttpOpen 'prettifiers' -enum LPCWSTR WINHTTP_NO_PROXY_NAME = null; -enum LPCWSTR WINHTTP_NO_PROXY_BYPASS = null; - -enum LPVOID WINHTTP_NO_CLIENT_CERT_CONTEXT = null; - -// WinHttp{Query|Set}Option -enum : DWORD { - WINHTTP_FIRST_OPTION = WINHTTP_OPTION_CALLBACK, - - WINHTTP_OPTION_CALLBACK = 1, - WINHTTP_OPTION_RESOLVE_TIMEOUT = 2, - WINHTTP_OPTION_CONNECT_TIMEOUT = 3, - WINHTTP_OPTION_CONNECT_RETRIES = 4, - WINHTTP_OPTION_SEND_TIMEOUT = 5, - WINHTTP_OPTION_RECEIVE_TIMEOUT = 6, - WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT = 7, - WINHTTP_OPTION_HANDLE_TYPE = 9, - WINHTTP_OPTION_READ_BUFFER_SIZE = 12, - WINHTTP_OPTION_WRITE_BUFFER_SIZE = 13, - WINHTTP_OPTION_PARENT_HANDLE = 21, - WINHTTP_OPTION_EXTENDED_ERROR = 24, - WINHTTP_OPTION_SECURITY_FLAGS = 31, - WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT = 32, - WINHTTP_OPTION_URL = 34, - WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36, - WINHTTP_OPTION_PROXY = 38, - WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39, - - WINHTTP_OPTION_USER_AGENT = 41, - WINHTTP_OPTION_CONTEXT_VALUE = 45, - WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47, - WINHTTP_OPTION_REQUEST_PRIORITY = 58, - WINHTTP_OPTION_HTTP_VERSION = 59, - WINHTTP_OPTION_DISABLE_FEATURE = 63, - - WINHTTP_OPTION_CODEPAGE = 68, - WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73, - WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74, - WINHTTP_OPTION_AUTOLOGON_POLICY = 77, - WINHTTP_OPTION_SERVER_CERT_CONTEXT = 78, - WINHTTP_OPTION_ENABLE_FEATURE = 79, - WINHTTP_OPTION_WORKER_THREAD_COUNT = 80, - WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT = 81, - WINHTTP_OPTION_PASSPORT_COBRANDING_URL = 82, - WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH = 83, - WINHTTP_OPTION_SECURE_PROTOCOLS = 84, - WINHTTP_OPTION_ENABLETRACING = 85, - WINHTTP_OPTION_PASSPORT_SIGN_OUT = 86, - WINHTTP_OPTION_PASSPORT_RETURN_URL = 87, - WINHTTP_OPTION_REDIRECT_POLICY = 88, - WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS = 89, - WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE = 90, - WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE = 91, - WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE = 92, - WINHTTP_OPTION_CONNECTION_INFO = 93, - WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94, - WINHTTP_OPTION_SPN = 96, - - WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97, - WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98, - - WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT = 99, - WINHTTP_OPTION_REJECT_USERPWD_IN_URL = 100, - WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS = 101, - - WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE = 103, - WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE = 104, - - WINHTTP_OPTION_SERVER_SPN_USED = 106, - WINHTTP_OPTION_PROXY_SPN_USED = 107, - - WINHTTP_OPTION_SERVER_CBT = 108, - - WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110, - WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111, - - WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114, - WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT = 115, - WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116, - - WINHTTP_OPTION_DECOMPRESSION = 118, - - WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE = 122, - WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE = 123, - - //WINHTTP_LAST_OPTION => Moved outside of enum - static if() constraints within enums - - WINHTTP_OPTION_USERNAME = 0x1000, - WINHTTP_OPTION_PASSWORD = 0x1001, - WINHTTP_OPTION_PROXY_USERNAME = 0x1002, - WINHTTP_OPTION_PROXY_PASSWORD = 0x1003, - - WINHTTP_CONNS_PER_SERVER_UNLIMITED = 0xFFFFFFFF, - - WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0, - WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1, - WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2, - - WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM, - - WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0, - WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1, - WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2, - - WINHTTP_OPTION_REDIRECT_POLICY_LAST = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS, - WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, - - WINHTTP_DISABLE_PASSPORT_AUTH = 0x00000000, - WINHTTP_ENABLE_PASSPORT_AUTH = 0x10000000, - WINHTTP_DISABLE_PASSPORT_KEYRING = 0x20000000, - WINHTTP_ENABLE_PASSPORT_KEYRING = 0x40000000, - - WINHTTP_DISABLE_COOKIES = 0x00000001, - WINHTTP_DISABLE_REDIRECTS = 0x00000002, - WINHTTP_DISABLE_AUTHENTICATION = 0x00000004, - WINHTTP_DISABLE_KEEP_ALIVE = 0x00000008, - - WINHTTP_ENABLE_SSL_REVOCATION = 0x00000001, - WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = 0x00000002, - - WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000, - WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001, - WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT -} - -// Windows 8.1 SDK: -static if (_WIN32_WINNT >= 0x602) { - enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; -} else { // Windows 7.0A SDK: - enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; -} - -enum : DWORD { - WINHTTP_DECOMPRESSION_FLAG_GZIP = 0x00000001, - WINHTTP_DECOMPRESSION_FLAG_DEFLATE = 0x00000002, - WINHTTP_DECOMPRESSION_FLAG_ALL = (WINHTTP_DECOMPRESSION_FLAG_GZIP | WINHTTP_DECOMPRESSION_FLAG_DEFLATE) -} - -struct WINHTTP_CREDS { - LPSTR lpszUserName; - LPSTR lpszPassword; - LPSTR lpszRealm; - DWORD dwAuthScheme; - LPSTR lpszHostName; - DWORD dwPort; -} -alias PWINHTTP_CREDS = WINHTTP_CREDS*; - -struct WINHTTP_CREDS_EX { - LPSTR lpszUserName; - LPSTR lpszPassword; - LPSTR lpszRealm; - DWORD dwAuthScheme; - LPSTR lpszHostName; - DWORD dwPort; - LPSTR lpszUrl; -} -alias PWINHTTP_CREDS_EX = WINHTTP_CREDS_EX*; - -enum : DWORD { - WINHTTP_HANDLE_TYPE_SESSION = 1, - WINHTTP_HANDLE_TYPE_CONNECT = 2, - WINHTTP_HANDLE_TYPE_REQUEST = 3, - - WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, - WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, - WINHTTP_AUTH_SCHEME_PASSPORT = 0x00000004, - WINHTTP_AUTH_SCHEME_DIGEST = 0x00000008, - WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, - - WINHTTP_AUTH_TARGET_SERVER = 0x00000000, - WINHTTP_AUTH_TARGET_PROXY = 0x00000001, - - SECURITY_FLAG_SECURE = 0x00000001, - SECURITY_FLAG_STRENGTH_WEAK = 0x10000000, - SECURITY_FLAG_STRENGTH_MEDIUM = 0x40000000, - SECURITY_FLAG_STRENGTH_STRONG = 0x20000000, - - WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = 0x00000001, - WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = 0x00000002, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = 0x00000004, - WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA = 0x00000008, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID = 0x00000010, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID = 0x00000020, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE = 0x00000040, - WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR = 0x80000000, - - WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 = 0x00000008, - WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 = 0x00000020, - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = 0x00000080, - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = 0x00000200, - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = 0x00000800, - WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | - WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1) -} - -alias extern(Windows) int fnWINHTTP_STATUS_CALLBACK(HINTERNET hInternet, DWORD_PTR dwContext, - DWORD dwInternetStatus, LPVOID lpvStatusInformation,DWORD dwStatusInformationLength); -alias WINHTTP_STATUS_CALLBACK = fnWINHTTP_STATUS_CALLBACK*; -alias LPWINHTTP_STATUS_CALLBACK = WINHTTP_STATUS_CALLBACK*; - -enum : DWORD { - WINHTTP_CALLBACK_STATUS_RESOLVING_NAME = 0x00000001, - WINHTTP_CALLBACK_STATUS_NAME_RESOLVED = 0x00000002, - WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER = 0x00000004, - WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER = 0x00000008, - WINHTTP_CALLBACK_STATUS_SENDING_REQUEST = 0x00000010, - WINHTTP_CALLBACK_STATUS_REQUEST_SENT = 0x00000020, - WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE = 0x00000040, - WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED = 0x00000080, - WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION = 0x00000100, - WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED = 0x00000200, - WINHTTP_CALLBACK_STATUS_HANDLE_CREATED = 0x00000400, - WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING = 0x00000800, - WINHTTP_CALLBACK_STATUS_DETECTING_PROXY = 0x00001000, - WINHTTP_CALLBACK_STATUS_REDIRECT = 0x00004000, - WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE = 0x00008000, - WINHTTP_CALLBACK_STATUS_SECURE_FAILURE = 0x00010000, - WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE = 0x00020000, - WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE = 0x00040000, - WINHTTP_CALLBACK_STATUS_READ_COMPLETE = 0x00080000, - WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE = 0x00100000, - WINHTTP_CALLBACK_STATUS_REQUEST_ERROR = 0x00200000, - WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE = 0x00400000 -} - -enum : DWORD { - WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE = 0x01000000, - WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE = 0x02000000, - WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE = 0x04000000 -} - -enum : DWORD { - API_RECEIVE_RESPONSE = 1, - API_QUERY_DATA_AVAILABLE = 2, - API_READ_DATA = 3, - API_WRITE_DATA = 4, - API_SEND_REQUEST = 5 -} - -enum : DWORD { - WINHTTP_CALLBACK_FLAG_RESOLVE_NAME = (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED), - WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER = (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER), - WINHTTP_CALLBACK_FLAG_SEND_REQUEST = (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT), - WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE = (WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED), - WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION = (WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED), - WINHTTP_CALLBACK_FLAG_HANDLES = (WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING), - WINHTTP_CALLBACK_FLAG_DETECTING_PROXY = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY, - WINHTTP_CALLBACK_FLAG_REDIRECT = WINHTTP_CALLBACK_STATUS_REDIRECT, - WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE, - WINHTTP_CALLBACK_FLAG_SECURE_FAILURE = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, - WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE, - WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, - WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE, - WINHTTP_CALLBACK_FLAG_READ_COMPLETE = WINHTTP_CALLBACK_STATUS_READ_COMPLETE, - WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE, - WINHTTP_CALLBACK_FLAG_REQUEST_ERROR = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR -} - -enum DWORD WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE = WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE; - -// Windows 8+/2012+ -static if (_WIN32_WINNT >= 0x602) { - enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE - | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE - | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE - | WINHTTP_CALLBACK_STATUS_READ_COMPLETE - | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE - | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR); -} else { - enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE - | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE - | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE - | WINHTTP_CALLBACK_STATUS_READ_COMPLETE - | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE - | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR - | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE); -} - -enum DWORD WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS = 0xffffffff; - -enum WINHTTP_INVALID_STATUS_CALLBACK = (cast(WINHTTP_STATUS_CALLBACK)(-1L)); - -enum : DWORD { - WINHTTP_QUERY_MIME_VERSION = 0, - WINHTTP_QUERY_CONTENT_TYPE = 1, - WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2, - WINHTTP_QUERY_CONTENT_ID = 3, - WINHTTP_QUERY_CONTENT_DESCRIPTION = 4, - WINHTTP_QUERY_CONTENT_LENGTH = 5, - WINHTTP_QUERY_CONTENT_LANGUAGE = 6, - WINHTTP_QUERY_ALLOW = 7, - WINHTTP_QUERY_PUBLIC = 8, - WINHTTP_QUERY_DATE = 9, - WINHTTP_QUERY_EXPIRES = 10, - WINHTTP_QUERY_LAST_MODIFIED = 11, - WINHTTP_QUERY_MESSAGE_ID = 12, - WINHTTP_QUERY_URI = 13, - WINHTTP_QUERY_DERIVED_FROM = 14, - WINHTTP_QUERY_COST = 15, - WINHTTP_QUERY_LINK = 16, - WINHTTP_QUERY_PRAGMA = 17, - WINHTTP_QUERY_VERSION = 18, - WINHTTP_QUERY_STATUS_CODE = 19, - WINHTTP_QUERY_STATUS_TEXT = 20, - WINHTTP_QUERY_RAW_HEADERS = 21, - WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, - WINHTTP_QUERY_CONNECTION = 23, - WINHTTP_QUERY_ACCEPT = 24, - WINHTTP_QUERY_ACCEPT_CHARSET = 25, - WINHTTP_QUERY_ACCEPT_ENCODING = 26, - WINHTTP_QUERY_ACCEPT_LANGUAGE = 27, - WINHTTP_QUERY_AUTHORIZATION = 28, - WINHTTP_QUERY_CONTENT_ENCODING = 29, - WINHTTP_QUERY_FORWARDED = 30, - WINHTTP_QUERY_FROM = 31, - WINHTTP_QUERY_IF_MODIFIED_SINCE = 32, - WINHTTP_QUERY_LOCATION = 33, - WINHTTP_QUERY_ORIG_URI = 34, - WINHTTP_QUERY_REFERER = 35, - WINHTTP_QUERY_RETRY_AFTER = 36, - WINHTTP_QUERY_SERVER = 37, - WINHTTP_QUERY_TITLE = 38, - WINHTTP_QUERY_USER_AGENT = 39, - WINHTTP_QUERY_WWW_AUTHENTICATE = 40, - WINHTTP_QUERY_PROXY_AUTHENTICATE = 41, - WINHTTP_QUERY_ACCEPT_RANGES = 42, - WINHTTP_QUERY_SET_COOKIE = 43, - WINHTTP_QUERY_COOKIE = 44, - WINHTTP_QUERY_REQUEST_METHOD = 45, - WINHTTP_QUERY_REFRESH = 46, - WINHTTP_QUERY_CONTENT_DISPOSITION = 47, - - // HTTP 1.1 defined headers - - WINHTTP_QUERY_AGE = 48, - WINHTTP_QUERY_CACHE_CONTROL = 49, - WINHTTP_QUERY_CONTENT_BASE = 50, - WINHTTP_QUERY_CONTENT_LOCATION = 51, - WINHTTP_QUERY_CONTENT_MD5 = 52, - WINHTTP_QUERY_CONTENT_RANGE = 53, - WINHTTP_QUERY_ETAG = 54, - WINHTTP_QUERY_HOST = 55, - WINHTTP_QUERY_IF_MATCH = 56, - WINHTTP_QUERY_IF_NONE_MATCH = 57, - WINHTTP_QUERY_IF_RANGE = 58, - WINHTTP_QUERY_IF_UNMODIFIED_SINCE = 59, - WINHTTP_QUERY_MAX_FORWARDS = 60, - WINHTTP_QUERY_PROXY_AUTHORIZATION = 61, - WINHTTP_QUERY_RANGE = 62, - WINHTTP_QUERY_TRANSFER_ENCODING = 63, - WINHTTP_QUERY_UPGRADE = 64, - WINHTTP_QUERY_VARY = 65, - WINHTTP_QUERY_VIA = 66, - WINHTTP_QUERY_WARNING = 67, - WINHTTP_QUERY_EXPECT = 68, - WINHTTP_QUERY_PROXY_CONNECTION = 69, - WINHTTP_QUERY_UNLESS_MODIFIED_SINCE = 70, - - WINHTTP_QUERY_PROXY_SUPPORT = 75, - WINHTTP_QUERY_AUTHENTICATION_INFO = 76, - WINHTTP_QUERY_PASSPORT_URLS = 77, - WINHTTP_QUERY_PASSPORT_CONFIG = 78, - - WINHTTP_QUERY_MAX = 78, - - WINHTTP_QUERY_CUSTOM = 65535, - - WINHTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, - - WINHTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, - - WINHTTP_QUERY_FLAG_NUMBER = 0x20000000 -} - -enum : DWORD { - HTTP_STATUS_CONTINUE = 100, - HTTP_STATUS_SWITCH_PROTOCOLS = 101, - - HTTP_STATUS_OK = 200, - HTTP_STATUS_CREATED = 201, - HTTP_STATUS_ACCEPTED = 202, - HTTP_STATUS_PARTIAL = 203, - HTTP_STATUS_NO_CONTENT = 204, - HTTP_STATUS_RESET_CONTENT = 205, - HTTP_STATUS_PARTIAL_CONTENT = 206, - HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, - - HTTP_STATUS_AMBIGUOUS = 300, - HTTP_STATUS_MOVED = 301, - HTTP_STATUS_REDIRECT = 302, - HTTP_STATUS_REDIRECT_METHOD = 303, - HTTP_STATUS_NOT_MODIFIED = 304, - HTTP_STATUS_USE_PROXY = 305, - HTTP_STATUS_REDIRECT_KEEP_VERB = 307, - - HTTP_STATUS_BAD_REQUEST = 400, - HTTP_STATUS_DENIED = 401, - HTTP_STATUS_PAYMENT_REQ = 402, - HTTP_STATUS_FORBIDDEN = 403, - HTTP_STATUS_NOT_FOUND = 404, - HTTP_STATUS_BAD_METHOD = 405, - HTTP_STATUS_NONE_ACCEPTABLE = 406, - HTTP_STATUS_PROXY_AUTH_REQ = 407, - HTTP_STATUS_REQUEST_TIMEOUT = 408, - HTTP_STATUS_CONFLICT = 409, - HTTP_STATUS_GONE = 410, - HTTP_STATUS_LENGTH_REQUIRED = 411, - HTTP_STATUS_PRECOND_FAILED = 412, - HTTP_STATUS_REQUEST_TOO_LARGE = 413, - HTTP_STATUS_URI_TOO_LONG = 414, - HTTP_STATUS_UNSUPPORTED_MEDIA = 415, - HTTP_STATUS_RETRY_WITH = 449, - - HTTP_STATUS_SERVER_ERROR = 500, - HTTP_STATUS_NOT_SUPPORTED = 501, - HTTP_STATUS_BAD_GATEWAY = 502, - HTTP_STATUS_SERVICE_UNAVAIL = 503, - HTTP_STATUS_GATEWAY_TIMEOUT = 504, - HTTP_STATUS_VERSION_NOT_SUP = 505, - - HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE, - HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP -} - -enum LPCWSTR WINHTTP_NO_REFERER = null; -enum LPCWSTR * WINHTTP_DEFAULT_ACCEPT_TYPES = null; - -enum : DWORD { - WINHTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, - WINHTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, - - WINHTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, - - WINHTTP_ADDREQ_FLAG_ADD = 0x20000000, - - WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, - WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, - WINHTTP_ADDREQ_FLAG_COALESCE = WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, - - WINHTTP_ADDREQ_FLAG_REPLACE = 0x80000000, - - WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH = 0 -} - -enum LPCWSTR WINHTTP_NO_ADDITIONAL_HEADERS = null; -enum LPVOID WINHTTP_NO_REQUEST_DATA = null; - -enum LPCWSTR WINHTTP_HEADER_NAME_BY_INDEX = null; -enum LPVOID WINHTTP_NO_OUTPUT_BUFFER = null; -enum LPDWORD WINHTTP_NO_HEADER_INDEX = null; - -struct WINHTTP_CURRENT_USER_IE_PROXY_CONFIG { - BOOL fAutoDetect; - LPWSTR lpszAutoConfigUrl; - LPWSTR lpszProxy; - LPWSTR lpszProxyBypass; -} - -// WinHttp API error returns -enum : DWORD { - WINHTTP_ERROR_BASE = 12000, - - ERROR_WINHTTP_OUT_OF_HANDLES = (WINHTTP_ERROR_BASE + 1), - ERROR_WINHTTP_TIMEOUT = (WINHTTP_ERROR_BASE + 2), - ERROR_WINHTTP_INTERNAL_ERROR = (WINHTTP_ERROR_BASE + 4), - ERROR_WINHTTP_INVALID_URL = (WINHTTP_ERROR_BASE + 5), - ERROR_WINHTTP_UNRECOGNIZED_SCHEME = (WINHTTP_ERROR_BASE + 6), - ERROR_WINHTTP_NAME_NOT_RESOLVED = (WINHTTP_ERROR_BASE + 7), - ERROR_WINHTTP_INVALID_OPTION = (WINHTTP_ERROR_BASE + 9), - ERROR_WINHTTP_OPTION_NOT_SETTABLE = (WINHTTP_ERROR_BASE + 11), - ERROR_WINHTTP_SHUTDOWN = (WINHTTP_ERROR_BASE + 12), - - ERROR_WINHTTP_LOGIN_FAILURE = (WINHTTP_ERROR_BASE + 15), - ERROR_WINHTTP_OPERATION_CANCELLED = (WINHTTP_ERROR_BASE + 17), - ERROR_WINHTTP_INCORRECT_HANDLE_TYPE = (WINHTTP_ERROR_BASE + 18), - ERROR_WINHTTP_INCORRECT_HANDLE_STATE = (WINHTTP_ERROR_BASE + 19), - ERROR_WINHTTP_CANNOT_CONNECT = (WINHTTP_ERROR_BASE + 29), - ERROR_WINHTTP_CONNECTION_ERROR = (WINHTTP_ERROR_BASE + 30), - ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), - - ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE, + 44), - - ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), - ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), - ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = (WINHTTP_ERROR_BASE + 102), - ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN = (WINHTTP_ERROR_BASE + 103), - - ERROR_WINHTTP_HEADER_NOT_FOUND = (WINHTTP_ERROR_BASE + 150), - ERROR_WINHTTP_INVALID_SERVER_RESPONSE = (WINHTTP_ERROR_BASE + 152), - ERROR_WINHTTP_INVALID_HEADER = (WINHTTP_ERROR_BASE + 153), - ERROR_WINHTTP_INVALID_QUERY_REQUEST = (WINHTTP_ERROR_BASE + 154), - ERROR_WINHTTP_HEADER_ALREADY_EXISTS = (WINHTTP_ERROR_BASE + 155), - ERROR_WINHTTP_REDIRECT_FAILED = (WINHTTP_ERROR_BASE + 156), - - ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR = (WINHTTP_ERROR_BASE + 178), - ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT = (WINHTTP_ERROR_BASE + 166), - ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT = (WINHTTP_ERROR_BASE + 167), - ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE = (WINHTTP_ERROR_BASE + 176), - ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR = (WINHTTP_ERROR_BASE + 177), - - ERROR_WINHTTP_NOT_INITIALIZED = (WINHTTP_ERROR_BASE + 172), - ERROR_WINHTTP_SECURE_FAILURE = (WINHTTP_ERROR_BASE + 175), - - ERROR_WINHTTP_SECURE_CERT_DATE_INVALID = (WINHTTP_ERROR_BASE + 37), - ERROR_WINHTTP_SECURE_CERT_CN_INVALID = (WINHTTP_ERROR_BASE + 38), - ERROR_WINHTTP_SECURE_INVALID_CA = (WINHTTP_ERROR_BASE + 45), - ERROR_WINHTTP_SECURE_CERT_REV_FAILED = (WINHTTP_ERROR_BASE + 57), - ERROR_WINHTTP_SECURE_CHANNEL_ERROR = (WINHTTP_ERROR_BASE + 157), - ERROR_WINHTTP_SECURE_INVALID_CERT = (WINHTTP_ERROR_BASE + 169), - ERROR_WINHTTP_SECURE_CERT_REVOKED = (WINHTTP_ERROR_BASE + 170), - ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE = (WINHTTP_ERROR_BASE + 179), - - ERROR_WINHTTP_AUTODETECTION_FAILED = (WINHTTP_ERROR_BASE + 180), - ERROR_WINHTTP_HEADER_COUNT_EXCEEDED = (WINHTTP_ERROR_BASE + 181), - ERROR_WINHTTP_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 182), - ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 183), - ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW = (WINHTTP_ERROR_BASE + 184), - ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 185), - ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 186), - - WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) -} - -enum : DWORD { - WINHTTP_RESET_STATE = 0x00000001, - WINHTTP_RESET_SWPAD_CURRENT_NETWORK = 0x00000002, - WINHTTP_RESET_SWPAD_ALL = 0x00000004, - WINHTTP_RESET_SCRIPT_CACHE = 0x00000008, - WINHTTP_RESET_ALL = 0x0000FFFF, - WINHTTP_RESET_NOTIFY_NETWORK_CHANGED = 0x00010000, - WINHTTP_RESET_OUT_OF_PROC = 0x00020000 -} - -enum : DWORD { - WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123, - WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 15000 -} - -// Version(Windows8) || Version(Windows2012): -static if (_WIN32_WINNT >= 0x602) -{ - enum WINHTTP_WEB_SOCKET_OPERATION : DWORD - { - WINHTTP_WEB_SOCKET_SEND_OPERATION = 0, - WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1, - WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2, - WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3 - } - enum WINHTTP_WEB_SOCKET_BUFFER_TYPE : DWORD - { - WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0, - WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1, - WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2, - WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3, - WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4 - } - enum WINHTTP_WEB_SOCKET_CLOSE_STATUS : DWORD - { - WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000, - WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001, - WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002, - WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003, - WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005, - WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006, - WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007, - WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008, - WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009, - WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010, - WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011, - WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015 - } - struct WINHTTP_PROXY_RESULT_ENTRY { - BOOL fProxy; - BOOL fBypass; - INTERNET_SCHEME ProxyScheme; - PWSTR pwszProxy; - INTERNET_PORT ProxyPort; - } - struct WINHTTP_PROXY_RESULT { - DWORD cEntries; - WINHTTP_PROXY_RESULT_ENTRY *pEntries; - } - struct WINHTTP_WEB_SOCKET_ASYNC_RESULT { - WINHTTP_ASYNC_RESULT AsyncResult; - WINHTTP_WEB_SOCKET_OPERATION Operation; - } - struct WINHTTP_WEB_SOCKET_STATUS { - DWORD dwBytesTransferred; - WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType; - } -} - - -extern (Windows) { - BOOL WinHttpAddRequestHeaders(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, DWORD dwModifiers); - - BOOL WinHttpCheckPlatform(); - - BOOL WinHttpCloseHandle(HINTERNET hInternet); - - HINTERNET WinHttpConnect(HINTERNET hSession, LPCWSTR pswzServerName, INTERNET_PORT nServerPort, DWORD dwReserved); - - BOOL WinHttpCrackUrl(LPCWSTR pwszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents); - - BOOL WinHttpCreateUrl(LPURL_COMPONENTS lpUrlComponents, DWORD dwFlags, LPWSTR pwszUrl, LPDWORD lpdwUrlLength); - BOOL WinHttpDetectAutoProxyConfigUrl(DWORD dwAutoDetectFlags, LPWSTR *ppwszAutoConfigUrl); - - BOOL WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); - BOOL WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig); - BOOL WinHttpGetProxyForUrl(HINTERNET hSession, LPCWSTR lpcwszUrl, - WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, WINHTTP_PROXY_INFO *pProxyInfo); - - HINTERNET WinHttpOpen(LPCWSTR pwszUserAgent, DWORD dwAccessType, LPCWSTR pwszProxyName, - LPCWSTR pwszProxyBypass, DWORD dwFlags); - HINTERNET WinHttpOpenRequest(HINTERNET hConnect, LPCWSTR pwszVerb, LPCWSTR pwszObjectName, - LPCWSTR pwszVersion, LPCWSTR pwszReferrer, - LPCWSTR *ppwszAcceptTypes, DWORD dwFlags); - - BOOL WinHttpQueryAuthSchemes(HINTERNET hRequest, LPDWORD lpdwSupportedSchemes, - LPDWORD lpdwFirstScheme, LPDWORD pdwAuthTarget); - BOOL WinHttpQueryDataAvailable(HINTERNET hRequest, LPDWORD lpdwNumberOfBytesAvailable); - BOOL WinHttpQueryHeaders(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName, - LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex); - BOOL WinHttpQueryOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, - LPDWORD lpdwBufferLength); - - BOOL WinHttpReadData(HINTERNET hRequest, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, - LPDWORD lpdwNumberOfBytesRead); - BOOL WinHttpReceiveResponse(HINTERNET hRequest, LPVOID lpReserved); - - BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, - LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext); - - BOOL WinHttpSetCredentials(HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, - LPCWSTR pwszUserName, LPCWSTR pwszPassword, LPVOID pAuthParams); - BOOL WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); - BOOL WinHttpSetOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength); - WINHTTP_STATUS_CALLBACK WinHttpSetStatusCallback(HINTERNET hInternet, - WINHTTP_STATUS_CALLBACK lpfnInternetCallback, - DWORD dwNotificationFlags, DWORD_PTR dwReserved); - BOOL WinHttpSetTimeouts(HINTERNET hInternet, int dwResolveTimeout, int dwConnectTimeout, - int dwSendTimeout, int dwReceiveTimeout); - - BOOL WinHttpTimeFromSystemTime(const SYSTEMTIME *pst, LPWSTR pwszTime); - BOOL WinHttpTimeToSystemTime(LPCWSTR pwszTime, SYSTEMTIME *pst); - - BOOL WinHttpWriteData(HINTERNET hRequest, LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, - LPDWORD lpdwNumberOfBytesWritten); - - // Version(Windows8) || Version(Windows2012): - static if (_WIN32_WINNT >= 0x602) { - DWORD WinHttpCreateProxyResolver(HINTERNET hSession, HINTERNET *phResolver); - void WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT *pProxyResult); - DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, - WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, DWORD_PTR pContext); - DWORD WinHttpGetProxyResult(HINTERNET hResolver, WINHTTP_PROXY_RESULT *pProxyResult); - DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); - DWORD WinHttpWebSocketClose(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); - HINTERNET WinHttpWebSocketCompleteUpgrade(HINTERNET hRequest, DWORD_PTR pContext); - DWORD WinHttpWebSocketQueryCloseStatus(HINTERNET hWebSocket, USHORT *pusStatus, PVOID pvReason, - DWORD dwReasonLength, DWORD *pdwReasonLengthConsumed); - DWORD WinHttpWebSocketReceive(HINTERNET hWebSocket, PVOID pvBuffer, DWORD dwBufferLength, - DWORD *pdwBytesRead, WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType); - DWORD WinHttpWebSocketSend(HINTERNET hWebSocket, WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType, - PVOID pvBuffer, DWORD dwBufferLength); - DWORD WinHttpWebSocketShutdown(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); - } -} +/** + * Windows API header module + * + * Translated from Windows SDK Headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winhttp.d) + */ +module win32.winhttp; +pragma(lib, "winhttp"); +// FIXME: Grouping of constants. Windows SDK doesn't make this entirely clear +// FIXME: Verify WINHTTP_STATUS_CALLBACK function declaration works correctly + +import win32.w32api; +import win32.winbase; +import win32.windef; +import win32.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) + +alias HINTERNET = void*; +alias LPHINTERNET = HINTERNET*; +alias INTERNET_PORT = WORD; +alias LPINTERNET_PORT = INTERNET_PORT*; +alias INTERNET_SCHEME = int; +alias LPINTERNET_SCHEME = INTERNET_SCHEME*; + +// Protocol 'Manifests' +enum : DWORD { + INTERNET_DEFAULT_PORT = 0, + INTERNET_DEFAULT_HTTP_PORT = 80, + INTERNET_DEFAULT_HTTPS_PORT = 443 +} + +// WinHttpOpen() Flags: +enum DWORD WINHTTP_FLAG_ASYNC = 0x10000000; + +// WinHttpOpenRequest() Flags: +enum : DWORD { + WINHTTP_FLAG_SECURE = 0x00800000, + WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, + WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, + WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, + WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, + WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, + WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, + + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, + SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = 0x00000200 +} + +struct WINHTTP_ASYNC_RESULT { + DWORD_PTR dwResult; + DWORD dwError; +} +alias LPWINHTTP_ASYNC_RESULT = WINHTTP_ASYNC_RESULT*; + +struct HTTP_VERSION_INFO { + DWORD dwMajorVersion; + DWORD dwMinorVersion; +} +alias LPHTTP_VERSION_INFO = HTTP_VERSION_INFO*; + +// URL Scheme +enum : DWORD { + INTERNET_SCHEME_HTTP = 1, + INTERNET_SCHEME_HTTPS = 2, + INTERNET_SCHEME_FTP = 3, + INTERNET_SCHEME_SOCKS = 4 +} + +struct URL_COMPONENTS { + DWORD dwStructSize; + LPWSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPWSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPWSTR lpszUserName; + DWORD dwUserNameLength; + LPWSTR lpszPassword; + DWORD dwPasswordLength; + LPWSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPWSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} +alias LPURL_COMPONENTS = URL_COMPONENTS*; +alias URL_COMPONENTSW = URL_COMPONENTS; +alias LPURL_COMPONENTSW = URL_COMPONENTS*; + +struct WINHTTP_PROXY_INFO { + DWORD dwAccessType; + LPWSTR lpszProxy; + LPWSTR lpszProxyBypass; +} +alias LPWINHTTP_PROXY_INFO = WINHTTP_PROXY_INFO*; +alias WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO; +alias LPWINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO*; + +struct WINHTTP_AUTOPROXY_OPTIONS { + DWORD dwFlags; + DWORD dwAutoDetectFlags; + LPCWSTR lpszAutoConfigUrl; + LPVOID lpvReserved; + DWORD dwReserved; + BOOL fAutoLogonIfChallenged; +} + +enum : DWORD { + WINHTTP_AUTOPROXY_AUTO_DETECT = 0x00000001, + WINHTTP_AUTOPROXY_CONFIG_URL = 0x00000002, + WINHTTP_AUTOPROXY_HOST_KEEPCASE = 0x00000004, + WINHTTP_AUTOPROXY_HOST_LOWERCASE = 0x00000008, + WINHTTP_AUTOPROXY_RUN_INPROCESS = 0x00010000, + WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = 0x00020000, + WINHTTP_AUTOPROXY_NO_DIRECTACCESS = 0x00040000, + WINHTTP_AUTOPROXY_NO_CACHE_CLIENT = 0x00080000, + WINHTTP_AUTOPROXY_NO_CACHE_SVC = 0x00100000, + + WINHTTP_AUTOPROXY_SORT_RESULTS = 0x00400000 +} + +// dwAutoDetectFlags +enum : DWORD { + WINHTTP_AUTO_DETECT_TYPE_DHCP = 0x00000001, + WINHTTP_AUTO_DETECT_TYPE_DNS_A = 0x00000002 +} + +struct WINHTTP_CERTIFICATE_INFO { + FILETIME ftExpiry; + FILETIME ftStart; + LPWSTR lpszSubjectInfo; + LPWSTR lpszIssuerInfo; + LPWSTR lpszProtocolName; + LPWSTR lpszSignatureAlgName; + LPWSTR lpszEncryptionAlgName; + DWORD dwKeySize; +} + +// This structure is only defined #if _WS2DEF_ defined (from ) - per Windows SDK +struct WINHTTP_CONNECTION_INFO { + DWORD cbSize; + SOCKADDR_STORAGE LocalAddress; + SOCKADDR_STORAGE RemoteAddress; +} + +// WinHttpTimeFromSystemTime +enum DWORD WINHTTP_TIME_FORMAT_BUFSIZE = 62; + +// CrackUrl, CombineUrl +enum : DWORD { + ICU_NO_ENCODE = 0x20000000, + ICU_DECODE = 0x10000000, + ICU_NO_META = 0x08000000, + ICU_ENCODE_SPACES_ONLY = 0x04000000, + ICU_BROWSER_MODE = 0x02000000, + ICU_ENCODE_PERCENT = 0x00001000 +} +// WinHttpCrackUrl, WinHttpCreateUrl +enum : DWORD { + ICU_ESCAPE = 0x80000000, + ICU_ESCAPE_AUTHORITY = 0x00002000, + ICU_REJECT_USERPWD = 0x00004000 +} +enum : DWORD { + WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, + WINHTTP_ACCESS_TYPE_NO_PROXY = 1, + WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, + WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4 +} +// WinHttpOpen 'prettifiers' +enum LPCWSTR WINHTTP_NO_PROXY_NAME = null; +enum LPCWSTR WINHTTP_NO_PROXY_BYPASS = null; + +enum LPVOID WINHTTP_NO_CLIENT_CERT_CONTEXT = null; + +// WinHttp{Query|Set}Option +enum : DWORD { + WINHTTP_FIRST_OPTION = WINHTTP_OPTION_CALLBACK, + + WINHTTP_OPTION_CALLBACK = 1, + WINHTTP_OPTION_RESOLVE_TIMEOUT = 2, + WINHTTP_OPTION_CONNECT_TIMEOUT = 3, + WINHTTP_OPTION_CONNECT_RETRIES = 4, + WINHTTP_OPTION_SEND_TIMEOUT = 5, + WINHTTP_OPTION_RECEIVE_TIMEOUT = 6, + WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT = 7, + WINHTTP_OPTION_HANDLE_TYPE = 9, + WINHTTP_OPTION_READ_BUFFER_SIZE = 12, + WINHTTP_OPTION_WRITE_BUFFER_SIZE = 13, + WINHTTP_OPTION_PARENT_HANDLE = 21, + WINHTTP_OPTION_EXTENDED_ERROR = 24, + WINHTTP_OPTION_SECURITY_FLAGS = 31, + WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT = 32, + WINHTTP_OPTION_URL = 34, + WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36, + WINHTTP_OPTION_PROXY = 38, + WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39, + + WINHTTP_OPTION_USER_AGENT = 41, + WINHTTP_OPTION_CONTEXT_VALUE = 45, + WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47, + WINHTTP_OPTION_REQUEST_PRIORITY = 58, + WINHTTP_OPTION_HTTP_VERSION = 59, + WINHTTP_OPTION_DISABLE_FEATURE = 63, + + WINHTTP_OPTION_CODEPAGE = 68, + WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73, + WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74, + WINHTTP_OPTION_AUTOLOGON_POLICY = 77, + WINHTTP_OPTION_SERVER_CERT_CONTEXT = 78, + WINHTTP_OPTION_ENABLE_FEATURE = 79, + WINHTTP_OPTION_WORKER_THREAD_COUNT = 80, + WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT = 81, + WINHTTP_OPTION_PASSPORT_COBRANDING_URL = 82, + WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH = 83, + WINHTTP_OPTION_SECURE_PROTOCOLS = 84, + WINHTTP_OPTION_ENABLETRACING = 85, + WINHTTP_OPTION_PASSPORT_SIGN_OUT = 86, + WINHTTP_OPTION_PASSPORT_RETURN_URL = 87, + WINHTTP_OPTION_REDIRECT_POLICY = 88, + WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS = 89, + WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE = 90, + WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE = 91, + WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE = 92, + WINHTTP_OPTION_CONNECTION_INFO = 93, + WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94, + WINHTTP_OPTION_SPN = 96, + + WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97, + WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98, + + WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT = 99, + WINHTTP_OPTION_REJECT_USERPWD_IN_URL = 100, + WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS = 101, + + WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE = 103, + WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE = 104, + + WINHTTP_OPTION_SERVER_SPN_USED = 106, + WINHTTP_OPTION_PROXY_SPN_USED = 107, + + WINHTTP_OPTION_SERVER_CBT = 108, + + WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110, + WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111, + + WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114, + WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT = 115, + WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116, + + WINHTTP_OPTION_DECOMPRESSION = 118, + + WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE = 122, + WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE = 123, + + //WINHTTP_LAST_OPTION => Moved outside of enum - static if() constraints within enums + + WINHTTP_OPTION_USERNAME = 0x1000, + WINHTTP_OPTION_PASSWORD = 0x1001, + WINHTTP_OPTION_PROXY_USERNAME = 0x1002, + WINHTTP_OPTION_PROXY_PASSWORD = 0x1003, + + WINHTTP_CONNS_PER_SERVER_UNLIMITED = 0xFFFFFFFF, + + WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0, + WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1, + WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2, + + WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM, + + WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0, + WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1, + WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2, + + WINHTTP_OPTION_REDIRECT_POLICY_LAST = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS, + WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, + + WINHTTP_DISABLE_PASSPORT_AUTH = 0x00000000, + WINHTTP_ENABLE_PASSPORT_AUTH = 0x10000000, + WINHTTP_DISABLE_PASSPORT_KEYRING = 0x20000000, + WINHTTP_ENABLE_PASSPORT_KEYRING = 0x40000000, + + WINHTTP_DISABLE_COOKIES = 0x00000001, + WINHTTP_DISABLE_REDIRECTS = 0x00000002, + WINHTTP_DISABLE_AUTHENTICATION = 0x00000004, + WINHTTP_DISABLE_KEEP_ALIVE = 0x00000008, + + WINHTTP_ENABLE_SSL_REVOCATION = 0x00000001, + WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = 0x00000002, + + WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000, + WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001, + WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT +} + +// Windows 8.1 SDK: +static if (_WIN32_WINNT >= 0x602) { + enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; +} else { // Windows 7.0A SDK: + enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; +} + +enum : DWORD { + WINHTTP_DECOMPRESSION_FLAG_GZIP = 0x00000001, + WINHTTP_DECOMPRESSION_FLAG_DEFLATE = 0x00000002, + WINHTTP_DECOMPRESSION_FLAG_ALL = (WINHTTP_DECOMPRESSION_FLAG_GZIP | WINHTTP_DECOMPRESSION_FLAG_DEFLATE) +} + +struct WINHTTP_CREDS { + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; + DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; +} +alias PWINHTTP_CREDS = WINHTTP_CREDS*; + +struct WINHTTP_CREDS_EX { + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; + DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; + LPSTR lpszUrl; +} +alias PWINHTTP_CREDS_EX = WINHTTP_CREDS_EX*; + +enum : DWORD { + WINHTTP_HANDLE_TYPE_SESSION = 1, + WINHTTP_HANDLE_TYPE_CONNECT = 2, + WINHTTP_HANDLE_TYPE_REQUEST = 3, + + WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, + WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, + WINHTTP_AUTH_SCHEME_PASSPORT = 0x00000004, + WINHTTP_AUTH_SCHEME_DIGEST = 0x00000008, + WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, + + WINHTTP_AUTH_TARGET_SERVER = 0x00000000, + WINHTTP_AUTH_TARGET_PROXY = 0x00000001, + + SECURITY_FLAG_SECURE = 0x00000001, + SECURITY_FLAG_STRENGTH_WEAK = 0x10000000, + SECURITY_FLAG_STRENGTH_MEDIUM = 0x40000000, + SECURITY_FLAG_STRENGTH_STRONG = 0x20000000, + + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = 0x00000001, + WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = 0x00000002, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = 0x00000004, + WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA = 0x00000008, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID = 0x00000010, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID = 0x00000020, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE = 0x00000040, + WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR = 0x80000000, + + WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 = 0x00000008, + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 = 0x00000020, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = 0x00000080, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = 0x00000200, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = 0x00000800, + WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1) +} + +alias extern(Windows) int fnWINHTTP_STATUS_CALLBACK(HINTERNET hInternet, DWORD_PTR dwContext, + DWORD dwInternetStatus, LPVOID lpvStatusInformation,DWORD dwStatusInformationLength); +alias WINHTTP_STATUS_CALLBACK = fnWINHTTP_STATUS_CALLBACK*; +alias LPWINHTTP_STATUS_CALLBACK = WINHTTP_STATUS_CALLBACK*; + +enum : DWORD { + WINHTTP_CALLBACK_STATUS_RESOLVING_NAME = 0x00000001, + WINHTTP_CALLBACK_STATUS_NAME_RESOLVED = 0x00000002, + WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER = 0x00000004, + WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER = 0x00000008, + WINHTTP_CALLBACK_STATUS_SENDING_REQUEST = 0x00000010, + WINHTTP_CALLBACK_STATUS_REQUEST_SENT = 0x00000020, + WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE = 0x00000040, + WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED = 0x00000080, + WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION = 0x00000100, + WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED = 0x00000200, + WINHTTP_CALLBACK_STATUS_HANDLE_CREATED = 0x00000400, + WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING = 0x00000800, + WINHTTP_CALLBACK_STATUS_DETECTING_PROXY = 0x00001000, + WINHTTP_CALLBACK_STATUS_REDIRECT = 0x00004000, + WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE = 0x00008000, + WINHTTP_CALLBACK_STATUS_SECURE_FAILURE = 0x00010000, + WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE = 0x00020000, + WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE = 0x00040000, + WINHTTP_CALLBACK_STATUS_READ_COMPLETE = 0x00080000, + WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE = 0x00100000, + WINHTTP_CALLBACK_STATUS_REQUEST_ERROR = 0x00200000, + WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE = 0x00400000 +} + +enum : DWORD { + WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE = 0x01000000, + WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE = 0x02000000, + WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE = 0x04000000 +} + +enum : DWORD { + API_RECEIVE_RESPONSE = 1, + API_QUERY_DATA_AVAILABLE = 2, + API_READ_DATA = 3, + API_WRITE_DATA = 4, + API_SEND_REQUEST = 5 +} + +enum : DWORD { + WINHTTP_CALLBACK_FLAG_RESOLVE_NAME = (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED), + WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER = (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER), + WINHTTP_CALLBACK_FLAG_SEND_REQUEST = (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT), + WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE = (WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED), + WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION = (WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED), + WINHTTP_CALLBACK_FLAG_HANDLES = (WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING), + WINHTTP_CALLBACK_FLAG_DETECTING_PROXY = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY, + WINHTTP_CALLBACK_FLAG_REDIRECT = WINHTTP_CALLBACK_STATUS_REDIRECT, + WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE, + WINHTTP_CALLBACK_FLAG_SECURE_FAILURE = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, + WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE, + WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, + WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE, + WINHTTP_CALLBACK_FLAG_READ_COMPLETE = WINHTTP_CALLBACK_STATUS_READ_COMPLETE, + WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE, + WINHTTP_CALLBACK_FLAG_REQUEST_ERROR = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR +} + +enum DWORD WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE = WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE; + +// Windows 8+/2012+ +static if (_WIN32_WINNT >= 0x602) { + enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE + | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE + | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE + | WINHTTP_CALLBACK_STATUS_READ_COMPLETE + | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE + | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR); +} else { + enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE + | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE + | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE + | WINHTTP_CALLBACK_STATUS_READ_COMPLETE + | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE + | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR + | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE); +} + +enum DWORD WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS = 0xffffffff; + +enum WINHTTP_INVALID_STATUS_CALLBACK = (cast(WINHTTP_STATUS_CALLBACK)(-1L)); + +enum : DWORD { + WINHTTP_QUERY_MIME_VERSION = 0, + WINHTTP_QUERY_CONTENT_TYPE = 1, + WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2, + WINHTTP_QUERY_CONTENT_ID = 3, + WINHTTP_QUERY_CONTENT_DESCRIPTION = 4, + WINHTTP_QUERY_CONTENT_LENGTH = 5, + WINHTTP_QUERY_CONTENT_LANGUAGE = 6, + WINHTTP_QUERY_ALLOW = 7, + WINHTTP_QUERY_PUBLIC = 8, + WINHTTP_QUERY_DATE = 9, + WINHTTP_QUERY_EXPIRES = 10, + WINHTTP_QUERY_LAST_MODIFIED = 11, + WINHTTP_QUERY_MESSAGE_ID = 12, + WINHTTP_QUERY_URI = 13, + WINHTTP_QUERY_DERIVED_FROM = 14, + WINHTTP_QUERY_COST = 15, + WINHTTP_QUERY_LINK = 16, + WINHTTP_QUERY_PRAGMA = 17, + WINHTTP_QUERY_VERSION = 18, + WINHTTP_QUERY_STATUS_CODE = 19, + WINHTTP_QUERY_STATUS_TEXT = 20, + WINHTTP_QUERY_RAW_HEADERS = 21, + WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, + WINHTTP_QUERY_CONNECTION = 23, + WINHTTP_QUERY_ACCEPT = 24, + WINHTTP_QUERY_ACCEPT_CHARSET = 25, + WINHTTP_QUERY_ACCEPT_ENCODING = 26, + WINHTTP_QUERY_ACCEPT_LANGUAGE = 27, + WINHTTP_QUERY_AUTHORIZATION = 28, + WINHTTP_QUERY_CONTENT_ENCODING = 29, + WINHTTP_QUERY_FORWARDED = 30, + WINHTTP_QUERY_FROM = 31, + WINHTTP_QUERY_IF_MODIFIED_SINCE = 32, + WINHTTP_QUERY_LOCATION = 33, + WINHTTP_QUERY_ORIG_URI = 34, + WINHTTP_QUERY_REFERER = 35, + WINHTTP_QUERY_RETRY_AFTER = 36, + WINHTTP_QUERY_SERVER = 37, + WINHTTP_QUERY_TITLE = 38, + WINHTTP_QUERY_USER_AGENT = 39, + WINHTTP_QUERY_WWW_AUTHENTICATE = 40, + WINHTTP_QUERY_PROXY_AUTHENTICATE = 41, + WINHTTP_QUERY_ACCEPT_RANGES = 42, + WINHTTP_QUERY_SET_COOKIE = 43, + WINHTTP_QUERY_COOKIE = 44, + WINHTTP_QUERY_REQUEST_METHOD = 45, + WINHTTP_QUERY_REFRESH = 46, + WINHTTP_QUERY_CONTENT_DISPOSITION = 47, + + // HTTP 1.1 defined headers + + WINHTTP_QUERY_AGE = 48, + WINHTTP_QUERY_CACHE_CONTROL = 49, + WINHTTP_QUERY_CONTENT_BASE = 50, + WINHTTP_QUERY_CONTENT_LOCATION = 51, + WINHTTP_QUERY_CONTENT_MD5 = 52, + WINHTTP_QUERY_CONTENT_RANGE = 53, + WINHTTP_QUERY_ETAG = 54, + WINHTTP_QUERY_HOST = 55, + WINHTTP_QUERY_IF_MATCH = 56, + WINHTTP_QUERY_IF_NONE_MATCH = 57, + WINHTTP_QUERY_IF_RANGE = 58, + WINHTTP_QUERY_IF_UNMODIFIED_SINCE = 59, + WINHTTP_QUERY_MAX_FORWARDS = 60, + WINHTTP_QUERY_PROXY_AUTHORIZATION = 61, + WINHTTP_QUERY_RANGE = 62, + WINHTTP_QUERY_TRANSFER_ENCODING = 63, + WINHTTP_QUERY_UPGRADE = 64, + WINHTTP_QUERY_VARY = 65, + WINHTTP_QUERY_VIA = 66, + WINHTTP_QUERY_WARNING = 67, + WINHTTP_QUERY_EXPECT = 68, + WINHTTP_QUERY_PROXY_CONNECTION = 69, + WINHTTP_QUERY_UNLESS_MODIFIED_SINCE = 70, + + WINHTTP_QUERY_PROXY_SUPPORT = 75, + WINHTTP_QUERY_AUTHENTICATION_INFO = 76, + WINHTTP_QUERY_PASSPORT_URLS = 77, + WINHTTP_QUERY_PASSPORT_CONFIG = 78, + + WINHTTP_QUERY_MAX = 78, + + WINHTTP_QUERY_CUSTOM = 65535, + + WINHTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, + + WINHTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, + + WINHTTP_QUERY_FLAG_NUMBER = 0x20000000 +} + +enum : DWORD { + HTTP_STATUS_CONTINUE = 100, + HTTP_STATUS_SWITCH_PROTOCOLS = 101, + + HTTP_STATUS_OK = 200, + HTTP_STATUS_CREATED = 201, + HTTP_STATUS_ACCEPTED = 202, + HTTP_STATUS_PARTIAL = 203, + HTTP_STATUS_NO_CONTENT = 204, + HTTP_STATUS_RESET_CONTENT = 205, + HTTP_STATUS_PARTIAL_CONTENT = 206, + HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, + + HTTP_STATUS_AMBIGUOUS = 300, + HTTP_STATUS_MOVED = 301, + HTTP_STATUS_REDIRECT = 302, + HTTP_STATUS_REDIRECT_METHOD = 303, + HTTP_STATUS_NOT_MODIFIED = 304, + HTTP_STATUS_USE_PROXY = 305, + HTTP_STATUS_REDIRECT_KEEP_VERB = 307, + + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_DENIED = 401, + HTTP_STATUS_PAYMENT_REQ = 402, + HTTP_STATUS_FORBIDDEN = 403, + HTTP_STATUS_NOT_FOUND = 404, + HTTP_STATUS_BAD_METHOD = 405, + HTTP_STATUS_NONE_ACCEPTABLE = 406, + HTTP_STATUS_PROXY_AUTH_REQ = 407, + HTTP_STATUS_REQUEST_TIMEOUT = 408, + HTTP_STATUS_CONFLICT = 409, + HTTP_STATUS_GONE = 410, + HTTP_STATUS_LENGTH_REQUIRED = 411, + HTTP_STATUS_PRECOND_FAILED = 412, + HTTP_STATUS_REQUEST_TOO_LARGE = 413, + HTTP_STATUS_URI_TOO_LONG = 414, + HTTP_STATUS_UNSUPPORTED_MEDIA = 415, + HTTP_STATUS_RETRY_WITH = 449, + + HTTP_STATUS_SERVER_ERROR = 500, + HTTP_STATUS_NOT_SUPPORTED = 501, + HTTP_STATUS_BAD_GATEWAY = 502, + HTTP_STATUS_SERVICE_UNAVAIL = 503, + HTTP_STATUS_GATEWAY_TIMEOUT = 504, + HTTP_STATUS_VERSION_NOT_SUP = 505, + + HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE, + HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP +} + +enum LPCWSTR WINHTTP_NO_REFERER = null; +enum LPCWSTR * WINHTTP_DEFAULT_ACCEPT_TYPES = null; + +enum : DWORD { + WINHTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, + WINHTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, + + WINHTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, + + WINHTTP_ADDREQ_FLAG_ADD = 0x20000000, + + WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, + WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, + WINHTTP_ADDREQ_FLAG_COALESCE = WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, + + WINHTTP_ADDREQ_FLAG_REPLACE = 0x80000000, + + WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH = 0 +} + +enum LPCWSTR WINHTTP_NO_ADDITIONAL_HEADERS = null; +enum LPVOID WINHTTP_NO_REQUEST_DATA = null; + +enum LPCWSTR WINHTTP_HEADER_NAME_BY_INDEX = null; +enum LPVOID WINHTTP_NO_OUTPUT_BUFFER = null; +enum LPDWORD WINHTTP_NO_HEADER_INDEX = null; + +struct WINHTTP_CURRENT_USER_IE_PROXY_CONFIG { + BOOL fAutoDetect; + LPWSTR lpszAutoConfigUrl; + LPWSTR lpszProxy; + LPWSTR lpszProxyBypass; +} + +// WinHttp API error returns +enum : DWORD { + WINHTTP_ERROR_BASE = 12000, + + ERROR_WINHTTP_OUT_OF_HANDLES = (WINHTTP_ERROR_BASE + 1), + ERROR_WINHTTP_TIMEOUT = (WINHTTP_ERROR_BASE + 2), + ERROR_WINHTTP_INTERNAL_ERROR = (WINHTTP_ERROR_BASE + 4), + ERROR_WINHTTP_INVALID_URL = (WINHTTP_ERROR_BASE + 5), + ERROR_WINHTTP_UNRECOGNIZED_SCHEME = (WINHTTP_ERROR_BASE + 6), + ERROR_WINHTTP_NAME_NOT_RESOLVED = (WINHTTP_ERROR_BASE + 7), + ERROR_WINHTTP_INVALID_OPTION = (WINHTTP_ERROR_BASE + 9), + ERROR_WINHTTP_OPTION_NOT_SETTABLE = (WINHTTP_ERROR_BASE + 11), + ERROR_WINHTTP_SHUTDOWN = (WINHTTP_ERROR_BASE + 12), + + ERROR_WINHTTP_LOGIN_FAILURE = (WINHTTP_ERROR_BASE + 15), + ERROR_WINHTTP_OPERATION_CANCELLED = (WINHTTP_ERROR_BASE + 17), + ERROR_WINHTTP_INCORRECT_HANDLE_TYPE = (WINHTTP_ERROR_BASE + 18), + ERROR_WINHTTP_INCORRECT_HANDLE_STATE = (WINHTTP_ERROR_BASE + 19), + ERROR_WINHTTP_CANNOT_CONNECT = (WINHTTP_ERROR_BASE + 29), + ERROR_WINHTTP_CONNECTION_ERROR = (WINHTTP_ERROR_BASE + 30), + ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), + + ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE, + 44), + + ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), + ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), + ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = (WINHTTP_ERROR_BASE + 102), + ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN = (WINHTTP_ERROR_BASE + 103), + + ERROR_WINHTTP_HEADER_NOT_FOUND = (WINHTTP_ERROR_BASE + 150), + ERROR_WINHTTP_INVALID_SERVER_RESPONSE = (WINHTTP_ERROR_BASE + 152), + ERROR_WINHTTP_INVALID_HEADER = (WINHTTP_ERROR_BASE + 153), + ERROR_WINHTTP_INVALID_QUERY_REQUEST = (WINHTTP_ERROR_BASE + 154), + ERROR_WINHTTP_HEADER_ALREADY_EXISTS = (WINHTTP_ERROR_BASE + 155), + ERROR_WINHTTP_REDIRECT_FAILED = (WINHTTP_ERROR_BASE + 156), + + ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR = (WINHTTP_ERROR_BASE + 178), + ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT = (WINHTTP_ERROR_BASE + 166), + ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT = (WINHTTP_ERROR_BASE + 167), + ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE = (WINHTTP_ERROR_BASE + 176), + ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR = (WINHTTP_ERROR_BASE + 177), + + ERROR_WINHTTP_NOT_INITIALIZED = (WINHTTP_ERROR_BASE + 172), + ERROR_WINHTTP_SECURE_FAILURE = (WINHTTP_ERROR_BASE + 175), + + ERROR_WINHTTP_SECURE_CERT_DATE_INVALID = (WINHTTP_ERROR_BASE + 37), + ERROR_WINHTTP_SECURE_CERT_CN_INVALID = (WINHTTP_ERROR_BASE + 38), + ERROR_WINHTTP_SECURE_INVALID_CA = (WINHTTP_ERROR_BASE + 45), + ERROR_WINHTTP_SECURE_CERT_REV_FAILED = (WINHTTP_ERROR_BASE + 57), + ERROR_WINHTTP_SECURE_CHANNEL_ERROR = (WINHTTP_ERROR_BASE + 157), + ERROR_WINHTTP_SECURE_INVALID_CERT = (WINHTTP_ERROR_BASE + 169), + ERROR_WINHTTP_SECURE_CERT_REVOKED = (WINHTTP_ERROR_BASE + 170), + ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE = (WINHTTP_ERROR_BASE + 179), + + ERROR_WINHTTP_AUTODETECTION_FAILED = (WINHTTP_ERROR_BASE + 180), + ERROR_WINHTTP_HEADER_COUNT_EXCEEDED = (WINHTTP_ERROR_BASE + 181), + ERROR_WINHTTP_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 182), + ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 183), + ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW = (WINHTTP_ERROR_BASE + 184), + ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 185), + ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 186), + + WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) +} + +enum : DWORD { + WINHTTP_RESET_STATE = 0x00000001, + WINHTTP_RESET_SWPAD_CURRENT_NETWORK = 0x00000002, + WINHTTP_RESET_SWPAD_ALL = 0x00000004, + WINHTTP_RESET_SCRIPT_CACHE = 0x00000008, + WINHTTP_RESET_ALL = 0x0000FFFF, + WINHTTP_RESET_NOTIFY_NETWORK_CHANGED = 0x00010000, + WINHTTP_RESET_OUT_OF_PROC = 0x00020000 +} + +enum : DWORD { + WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123, + WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 15000 +} + +// Version(Windows8) || Version(Windows2012): +static if (_WIN32_WINNT >= 0x602) +{ + enum WINHTTP_WEB_SOCKET_OPERATION : DWORD + { + WINHTTP_WEB_SOCKET_SEND_OPERATION = 0, + WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1, + WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2, + WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3 + } + enum WINHTTP_WEB_SOCKET_BUFFER_TYPE : DWORD + { + WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0, + WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1, + WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2, + WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3, + WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4 + } + enum WINHTTP_WEB_SOCKET_CLOSE_STATUS : DWORD + { + WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000, + WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001, + WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002, + WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003, + WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005, + WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006, + WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007, + WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008, + WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009, + WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010, + WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011, + WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015 + } + struct WINHTTP_PROXY_RESULT_ENTRY { + BOOL fProxy; + BOOL fBypass; + INTERNET_SCHEME ProxyScheme; + PWSTR pwszProxy; + INTERNET_PORT ProxyPort; + } + struct WINHTTP_PROXY_RESULT { + DWORD cEntries; + WINHTTP_PROXY_RESULT_ENTRY *pEntries; + } + struct WINHTTP_WEB_SOCKET_ASYNC_RESULT { + WINHTTP_ASYNC_RESULT AsyncResult; + WINHTTP_WEB_SOCKET_OPERATION Operation; + } + struct WINHTTP_WEB_SOCKET_STATUS { + DWORD dwBytesTransferred; + WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType; + } +} + + +extern (Windows) { + BOOL WinHttpAddRequestHeaders(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, DWORD dwModifiers); + + BOOL WinHttpCheckPlatform(); + + BOOL WinHttpCloseHandle(HINTERNET hInternet); + + HINTERNET WinHttpConnect(HINTERNET hSession, LPCWSTR pswzServerName, INTERNET_PORT nServerPort, DWORD dwReserved); + + BOOL WinHttpCrackUrl(LPCWSTR pwszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents); + + BOOL WinHttpCreateUrl(LPURL_COMPONENTS lpUrlComponents, DWORD dwFlags, LPWSTR pwszUrl, LPDWORD lpdwUrlLength); + BOOL WinHttpDetectAutoProxyConfigUrl(DWORD dwAutoDetectFlags, LPWSTR *ppwszAutoConfigUrl); + + BOOL WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig); + BOOL WinHttpGetProxyForUrl(HINTERNET hSession, LPCWSTR lpcwszUrl, + WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, WINHTTP_PROXY_INFO *pProxyInfo); + + HINTERNET WinHttpOpen(LPCWSTR pwszUserAgent, DWORD dwAccessType, LPCWSTR pwszProxyName, + LPCWSTR pwszProxyBypass, DWORD dwFlags); + HINTERNET WinHttpOpenRequest(HINTERNET hConnect, LPCWSTR pwszVerb, LPCWSTR pwszObjectName, + LPCWSTR pwszVersion, LPCWSTR pwszReferrer, + LPCWSTR *ppwszAcceptTypes, DWORD dwFlags); + + BOOL WinHttpQueryAuthSchemes(HINTERNET hRequest, LPDWORD lpdwSupportedSchemes, + LPDWORD lpdwFirstScheme, LPDWORD pdwAuthTarget); + BOOL WinHttpQueryDataAvailable(HINTERNET hRequest, LPDWORD lpdwNumberOfBytesAvailable); + BOOL WinHttpQueryHeaders(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName, + LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex); + BOOL WinHttpQueryOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, + LPDWORD lpdwBufferLength); + + BOOL WinHttpReadData(HINTERNET hRequest, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, + LPDWORD lpdwNumberOfBytesRead); + BOOL WinHttpReceiveResponse(HINTERNET hRequest, LPVOID lpReserved); + + BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, + LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext); + + BOOL WinHttpSetCredentials(HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, + LPCWSTR pwszUserName, LPCWSTR pwszPassword, LPVOID pAuthParams); + BOOL WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpSetOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength); + WINHTTP_STATUS_CALLBACK WinHttpSetStatusCallback(HINTERNET hInternet, + WINHTTP_STATUS_CALLBACK lpfnInternetCallback, + DWORD dwNotificationFlags, DWORD_PTR dwReserved); + BOOL WinHttpSetTimeouts(HINTERNET hInternet, int dwResolveTimeout, int dwConnectTimeout, + int dwSendTimeout, int dwReceiveTimeout); + + BOOL WinHttpTimeFromSystemTime(const SYSTEMTIME *pst, LPWSTR pwszTime); + BOOL WinHttpTimeToSystemTime(LPCWSTR pwszTime, SYSTEMTIME *pst); + + BOOL WinHttpWriteData(HINTERNET hRequest, LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, + LPDWORD lpdwNumberOfBytesWritten); + + // Version(Windows8) || Version(Windows2012): + static if (_WIN32_WINNT >= 0x602) { + DWORD WinHttpCreateProxyResolver(HINTERNET hSession, HINTERNET *phResolver); + void WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT *pProxyResult); + DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, + WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, DWORD_PTR pContext); + DWORD WinHttpGetProxyResult(HINTERNET hResolver, WINHTTP_PROXY_RESULT *pProxyResult); + DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); + DWORD WinHttpWebSocketClose(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); + HINTERNET WinHttpWebSocketCompleteUpgrade(HINTERNET hRequest, DWORD_PTR pContext); + DWORD WinHttpWebSocketQueryCloseStatus(HINTERNET hWebSocket, USHORT *pusStatus, PVOID pvReason, + DWORD dwReasonLength, DWORD *pdwReasonLengthConsumed); + DWORD WinHttpWebSocketReceive(HINTERNET hWebSocket, PVOID pvBuffer, DWORD dwBufferLength, + DWORD *pdwBytesRead, WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType); + DWORD WinHttpWebSocketSend(HINTERNET hWebSocket, WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType, + PVOID pvBuffer, DWORD dwBufferLength); + DWORD WinHttpWebSocketShutdown(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); + } +} diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index 33be5679c6..2066494722 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* wininet.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wininet.d) + */ module core.sys.windows.wininet; pragma(lib, "wininet"); diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d index a1f785bde2..744b627f57 100644 --- a/src/core/sys/windows/winioctl.d +++ b/src/core/sys/windows/winioctl.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* winioctl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winioctl.d) + */ module core.sys.windows.winioctl; // FIXME: check types of some constants diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index 8749bee6a8..b85757da6d 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* winldap.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winldap.d) + */ module core.sys.windows.winldap; /* Comment from MinGW diff --git a/src/core/sys/windows/winnetwk.d b/src/core/sys/windows/winnetwk.d index dcda4c0adb..5f368acc0e 100644 --- a/src/core/sys/windows/winnetwk.d +++ b/src/core/sys/windows/winnetwk.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* winnetwk.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winnetwk.d) + */ module core.sys.windows.winnetwk; pragma(lib, "mpr"); diff --git a/src/core/sys/windows/winnls.d b/src/core/sys/windows/winnls.d index 2c53248cca..5dca95cccd 100644 --- a/src/core/sys/windows/winnls.d +++ b/src/core/sys/windows/winnls.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* winnls.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winnls.d) + */ module core.sys.windows.winnls; pragma(lib, "kernel32"); diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index d91cba9737..0915ad3fa2 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* winnt.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.12 * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.12 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winnt.d) + */ module core.sys.windows.winnt; public import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winerror; diff --git a/src/core/sys/windows/winperf.d b/src/core/sys/windows/winperf.d index 0cc6874d9b..2a8d4ed989 100644 --- a/src/core/sys/windows/winperf.d +++ b/src/core/sys/windows/winperf.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* winperf.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winperf.d) + */ module core.sys.windows.winperf; import core.sys.windows.windef; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index d7e8f4a135..f15edcc8a7 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* winreg.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winreg.d) + */ module core.sys.windows.winreg; pragma(lib, "advapi32"); diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d index 39a61af540..a517a482b5 100644 --- a/src/core/sys/windows/winspool.d +++ b/src/core/sys/windows/winspool.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* winspool.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winspool.d) + */ module core.sys.windows.winspool; pragma(lib, "winspool"); diff --git a/src/core/sys/windows/winsvc.d b/src/core/sys/windows/winsvc.d index d7ea7b7bd6..619944d5ef 100644 --- a/src/core/sys/windows/winsvc.d +++ b/src/core/sys/windows/winsvc.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* winsvc.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winsvc.d) + */ module core.sys.windows.winsvc; pragma(lib, "advapi32"); diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 981384341e..170db7b536 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* winuser.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winuser.d) + */ module core.sys.windows.winuser; pragma(lib, "user32"); diff --git a/src/core/sys/windows/winver.d b/src/core/sys/windows/winver.d index 8dc9ce4edc..8b43d3342b 100644 --- a/src/core/sys/windows/winver.d +++ b/src/core/sys/windows/winver.d @@ -1,13 +1,12 @@ -/***********************************************************************\ -* winver.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winver.d) + */ module core.sys.windows.winver; pragma(lib, "version"); diff --git a/src/core/sys/windows/ws2tcpip.d b/src/core/sys/windows/ws2tcpip.d index 0d66f5ade9..45438f6450 100644 --- a/src/core/sys/windows/ws2tcpip.d +++ b/src/core/sys/windows/ws2tcpip.d @@ -1,281 +1,280 @@ -/***********************************************************************\ -* ws2tcpip.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ - -module core.sys.windows.ws2tcpip; - -import core.sys.windows.w32api; -//import core.sys.windows.winbase; -import core.sys.windows.windef; -//import core.sys.windows.basetyps; -import core.sys.windows.winsock2; - -enum { - IP_OPTIONS = 1, - - IP_HDRINCL = 2, - IP_TOS = 3, - IP_TTL = 4, - IP_MULTICAST_IF = 9, - IP_MULTICAST_TTL = 10, - IP_MULTICAST_LOOP = 11, - IP_ADD_MEMBERSHIP = 12, - IP_DROP_MEMBERSHIP = 13, - IP_DONTFRAGMENT = 14, - IP_ADD_SOURCE_MEMBERSHIP = 15, - IP_DROP_SOURCE_MEMBERSHIP = 16, - IP_BLOCK_SOURCE = 17, - IP_UNBLOCK_SOURCE = 18, - IP_PKTINFO = 19 -} - -enum { - IPV6_UNICAST_HOPS = 4, - IPV6_MULTICAST_IF = 9, - IPV6_MULTICAST_HOPS = 10, - IPV6_MULTICAST_LOOP = 11, - IPV6_ADD_MEMBERSHIP = 12, - IPV6_DROP_MEMBERSHIP = 13, - IPV6_JOIN_GROUP = IPV6_ADD_MEMBERSHIP, - IPV6_LEAVE_GROUP = IPV6_DROP_MEMBERSHIP, - IPV6_PKTINFO = 19 -} - -const IP_DEFAULT_MULTICAST_TTL = 1; -const IP_DEFAULT_MULTICAST_LOOP = 1; -const IP_MAX_MEMBERSHIPS = 20; - -const TCP_EXPEDITED_1122 = 2; - -const UDP_NOCHECKSUM = 1; - -enum { - IFF_UP = 1, - IFF_BROADCAST = 2, - IFF_LOOPBACK = 4, - IFF_POINTTOPOINT = 8, - IFF_MULTICAST = 16 -} - -const SIO_GET_INTERFACE_LIST = _IOR!('t', 127, u_long); - -const INET_ADDRSTRLEN = 16; -const INET6_ADDRSTRLEN = 46; - -const NI_MAXHOST = 1025; -const NI_MAXSERV = 32; - -const NI_NOFQDN = 0x01; -const NI_NUMERICHOST = 0x02; -const NI_NAMEREQD = 0x04; -const NI_NUMERICSERV = 0x08; -const NI_DGRAM = 0x10; - -const AI_PASSIVE = 1; -const AI_CANONNAME = 2; -const AI_NUMERICHOST = 4; - -const EAI_AGAIN = WSATRY_AGAIN; -const EAI_BADFLAGS = WSAEINVAL; -const EAI_FAIL = WSANO_RECOVERY; -const EAI_FAMILY = WSAEAFNOSUPPORT; -const EAI_MEMORY = WSA_NOT_ENOUGH_MEMORY; -const EAI_NODATA = WSANO_DATA; -const EAI_NONAME = WSAHOST_NOT_FOUND; -const EAI_SERVICE = WSATYPE_NOT_FOUND; -const EAI_SOCKTYPE = WSAESOCKTNOSUPPORT; - -struct ip_mreq { - IN_ADDR imr_multiaddr; - IN_ADDR imr_interface; -} - -struct ip_mreq_source { - IN_ADDR imr_multiaddr; - IN_ADDR imr_sourceaddr; - IN_ADDR imr_interface; -} - -struct ip_msfilter { - IN_ADDR imsf_multiaddr; - IN_ADDR imsf_interface; - u_long imsf_fmode; - u_long imsf_numsrc; - IN_ADDR[1] imsf_slist; -} - -template IP_MSFILTER_SIZE(ULONG numsrc) { - const DWORD IP_MSFILTER_SIZE = ip_msfilter.sizeof - IN_ADDR.sizeof + numsrc * IN_ADDR.sizeof; -} - -struct IN_PKTINFO { - IN_ADDR ipi_addr; - UINT ipi_ifindex; -} - -struct IN6_ADDR { - union { - u_char[16] _S6_u8; - u_short[8] _S6_u16; - u_long[4] _S6_u32; - } -} -alias IN6_ADDR* PIN6_ADDR, LPIN6_ADDR; - -struct SOCKADDR_IN6 { - short sin6_family; - u_short sin6_port; - u_long sin6_flowinfo; - IN6_ADDR sin6_addr; - u_long sin6_scope_id; -}; -alias SOCKADDR_IN6* PSOCKADDR_IN6, LPSOCKADDR_IN6; - -extern IN6_ADDR in6addr_any; -extern IN6_ADDR in6addr_loopback; - -/+ TODO: -#define IN6_ARE_ADDR_EQUAL(a, b) \ - (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0) - -#define IN6_IS_ADDR_UNSPECIFIED(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] == 0)) - -#define IN6_IS_ADDR_LOOPBACK(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] == 0x01000000)) - -#define IN6_IS_ADDR_MULTICAST(_addr) (((const u_char *) (_addr))[0] == 0xff) - -#define IN6_IS_ADDR_LINKLOCAL(_addr) \ - ( (((const u_char *)(_addr))[0] == 0xfe) \ - && ((((const u_char *)(_addr))[1] & 0xc0) == 0x80)) - -#define IN6_IS_ADDR_SITELOCAL(_addr) \ - ( (((const u_char *)(_addr))[0] == 0xfe) \ - && ((((const u_char *)(_addr))[1] & 0xc0) == 0xc0)) - -#define IN6_IS_ADDR_V4MAPPED(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0xffff0000)) - -#define IN6_IS_ADDR_V4COMPAT(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] != 0) \ - && (((const u_long *)(_addr))[3] != 0x01000000)) - -#define IN6_IS_ADDR_MC_NODELOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) - -#define IN6_IS_ADDR_MC_LINKLOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST (_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x2)) - -#define IN6_IS_ADDR_MC_SITELOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x5)) - -#define IN6_IS_ADDR_MC_ORGLOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x8)) - -#define IN6_IS_ADDR_MC_GLOBAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0xe)) -+/ - -alias int socklen_t; - -struct IPV6_MREG { - IN6_ADDR ipv6mr_multiaddr; - uint ipv6mr_interface; -} - -struct IN6_PKTINFO { - IN6_ADDR ipi6_addr; - UINT ipi6_ifindex; -} - -struct addrinfo { - int ai_flags; - int ai_family; - int ai_socktype; - int ai_protocol; - size_t ai_addrlen; - char* ai_canonname; - SOCKADDR* ai_addr; - addrinfo* ai_next; -} - -extern(Windows) { - static if (_WIN32_WINNT >= 0x501) { - void freeaddrinfo(addrinfo*); - int getaddrinfo (const(char)*, const(char)*, const(addrinfo)*, addrinfo**); - int getnameinfo(const(SOCKADDR)*, socklen_t, char*, DWORD, char*, DWORD, int); - } -} - -/+ TODO -static __inline char* -gai_strerrorA(int ecode) -{ - static char[1024+1] message; - DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS - | FORMAT_MESSAGE_MAX_WIDTH_MASK; - DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); - FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL); - return message; -} -static __inline WCHAR* -gai_strerrorW(int ecode) -{ - static WCHAR[1024+1] message; - DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS - | FORMAT_MESSAGE_MAX_WIDTH_MASK; - DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); - FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL); - return message; -} -#ifdef UNICODE -#define gai_strerror gai_strerrorW -#else -#define gai_strerror gai_strerrorA -#endif -+/ - -extern(Windows) { - INT getnameinfo(SOCKADDR* pSockaddr, socklen_t SockaddrLength, - PCHAR pNodeBuffer, DWORD NodeBufferSize, PCHAR pServiceBuffer, - DWORD ServiceBufferSize, INT Flags); - - static if (_WIN32_WINNT >= 0x502) { - INT GetNameInfoW(SOCKADDR* pSockaddr, socklen_t SockaddrLength, - PWCHAR pNodeBuffer, DWORD NodeBufferSize, PWCHAR pServiceBuffer, - DWORD ServiceBufferSize, INT Flags); - - alias getnameinfo GetNameInfoA; - - version(Unicode) { - alias GetNameInfoW GetNameInfo; - } else { - alias GetNameInfoA GetNameInfo; - } - } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ws2tcpip.d) + */ + +module core.sys.windows.ws2tcpip; + +import core.sys.windows.w32api; +//import core.sys.windows.winbase; +import core.sys.windows.windef; +//import core.sys.windows.basetyps; +import core.sys.windows.winsock2; + +enum { + IP_OPTIONS = 1, + + IP_HDRINCL = 2, + IP_TOS = 3, + IP_TTL = 4, + IP_MULTICAST_IF = 9, + IP_MULTICAST_TTL = 10, + IP_MULTICAST_LOOP = 11, + IP_ADD_MEMBERSHIP = 12, + IP_DROP_MEMBERSHIP = 13, + IP_DONTFRAGMENT = 14, + IP_ADD_SOURCE_MEMBERSHIP = 15, + IP_DROP_SOURCE_MEMBERSHIP = 16, + IP_BLOCK_SOURCE = 17, + IP_UNBLOCK_SOURCE = 18, + IP_PKTINFO = 19 +} + +enum { + IPV6_UNICAST_HOPS = 4, + IPV6_MULTICAST_IF = 9, + IPV6_MULTICAST_HOPS = 10, + IPV6_MULTICAST_LOOP = 11, + IPV6_ADD_MEMBERSHIP = 12, + IPV6_DROP_MEMBERSHIP = 13, + IPV6_JOIN_GROUP = IPV6_ADD_MEMBERSHIP, + IPV6_LEAVE_GROUP = IPV6_DROP_MEMBERSHIP, + IPV6_PKTINFO = 19 +} + +const IP_DEFAULT_MULTICAST_TTL = 1; +const IP_DEFAULT_MULTICAST_LOOP = 1; +const IP_MAX_MEMBERSHIPS = 20; + +const TCP_EXPEDITED_1122 = 2; + +const UDP_NOCHECKSUM = 1; + +enum { + IFF_UP = 1, + IFF_BROADCAST = 2, + IFF_LOOPBACK = 4, + IFF_POINTTOPOINT = 8, + IFF_MULTICAST = 16 +} + +const SIO_GET_INTERFACE_LIST = _IOR!('t', 127, u_long); + +const INET_ADDRSTRLEN = 16; +const INET6_ADDRSTRLEN = 46; + +const NI_MAXHOST = 1025; +const NI_MAXSERV = 32; + +const NI_NOFQDN = 0x01; +const NI_NUMERICHOST = 0x02; +const NI_NAMEREQD = 0x04; +const NI_NUMERICSERV = 0x08; +const NI_DGRAM = 0x10; + +const AI_PASSIVE = 1; +const AI_CANONNAME = 2; +const AI_NUMERICHOST = 4; + +const EAI_AGAIN = WSATRY_AGAIN; +const EAI_BADFLAGS = WSAEINVAL; +const EAI_FAIL = WSANO_RECOVERY; +const EAI_FAMILY = WSAEAFNOSUPPORT; +const EAI_MEMORY = WSA_NOT_ENOUGH_MEMORY; +const EAI_NODATA = WSANO_DATA; +const EAI_NONAME = WSAHOST_NOT_FOUND; +const EAI_SERVICE = WSATYPE_NOT_FOUND; +const EAI_SOCKTYPE = WSAESOCKTNOSUPPORT; + +struct ip_mreq { + IN_ADDR imr_multiaddr; + IN_ADDR imr_interface; +} + +struct ip_mreq_source { + IN_ADDR imr_multiaddr; + IN_ADDR imr_sourceaddr; + IN_ADDR imr_interface; +} + +struct ip_msfilter { + IN_ADDR imsf_multiaddr; + IN_ADDR imsf_interface; + u_long imsf_fmode; + u_long imsf_numsrc; + IN_ADDR[1] imsf_slist; +} + +template IP_MSFILTER_SIZE(ULONG numsrc) { + const DWORD IP_MSFILTER_SIZE = ip_msfilter.sizeof - IN_ADDR.sizeof + numsrc * IN_ADDR.sizeof; +} + +struct IN_PKTINFO { + IN_ADDR ipi_addr; + UINT ipi_ifindex; +} + +struct IN6_ADDR { + union { + u_char[16] _S6_u8; + u_short[8] _S6_u16; + u_long[4] _S6_u32; + } +} +alias IN6_ADDR* PIN6_ADDR, LPIN6_ADDR; + +struct SOCKADDR_IN6 { + short sin6_family; + u_short sin6_port; + u_long sin6_flowinfo; + IN6_ADDR sin6_addr; + u_long sin6_scope_id; +}; +alias SOCKADDR_IN6* PSOCKADDR_IN6, LPSOCKADDR_IN6; + +extern IN6_ADDR in6addr_any; +extern IN6_ADDR in6addr_loopback; + +/+ TODO: +#define IN6_ARE_ADDR_EQUAL(a, b) \ + (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0) + +#define IN6_IS_ADDR_UNSPECIFIED(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] == 0)) + +#define IN6_IS_ADDR_LOOPBACK(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] == 0x01000000)) + +#define IN6_IS_ADDR_MULTICAST(_addr) (((const u_char *) (_addr))[0] == 0xff) + +#define IN6_IS_ADDR_LINKLOCAL(_addr) \ + ( (((const u_char *)(_addr))[0] == 0xfe) \ + && ((((const u_char *)(_addr))[1] & 0xc0) == 0x80)) + +#define IN6_IS_ADDR_SITELOCAL(_addr) \ + ( (((const u_char *)(_addr))[0] == 0xfe) \ + && ((((const u_char *)(_addr))[1] & 0xc0) == 0xc0)) + +#define IN6_IS_ADDR_V4MAPPED(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0xffff0000)) + +#define IN6_IS_ADDR_V4COMPAT(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] != 0) \ + && (((const u_long *)(_addr))[3] != 0x01000000)) + +#define IN6_IS_ADDR_MC_NODELOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) + +#define IN6_IS_ADDR_MC_LINKLOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST (_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x2)) + +#define IN6_IS_ADDR_MC_SITELOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x5)) + +#define IN6_IS_ADDR_MC_ORGLOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x8)) + +#define IN6_IS_ADDR_MC_GLOBAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0xe)) ++/ + +alias int socklen_t; + +struct IPV6_MREG { + IN6_ADDR ipv6mr_multiaddr; + uint ipv6mr_interface; +} + +struct IN6_PKTINFO { + IN6_ADDR ipi6_addr; + UINT ipi6_ifindex; +} + +struct addrinfo { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + char* ai_canonname; + SOCKADDR* ai_addr; + addrinfo* ai_next; +} + +extern(Windows) { + static if (_WIN32_WINNT >= 0x501) { + void freeaddrinfo(addrinfo*); + int getaddrinfo (const(char)*, const(char)*, const(addrinfo)*, addrinfo**); + int getnameinfo(const(SOCKADDR)*, socklen_t, char*, DWORD, char*, DWORD, int); + } +} + +/+ TODO +static __inline char* +gai_strerrorA(int ecode) +{ + static char[1024+1] message; + DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS + | FORMAT_MESSAGE_MAX_WIDTH_MASK; + DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); + FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL); + return message; +} +static __inline WCHAR* +gai_strerrorW(int ecode) +{ + static WCHAR[1024+1] message; + DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS + | FORMAT_MESSAGE_MAX_WIDTH_MASK; + DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); + FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL); + return message; +} +#ifdef UNICODE +#define gai_strerror gai_strerrorW +#else +#define gai_strerror gai_strerrorA +#endif ++/ + +extern(Windows) { + INT getnameinfo(SOCKADDR* pSockaddr, socklen_t SockaddrLength, + PCHAR pNodeBuffer, DWORD NodeBufferSize, PCHAR pServiceBuffer, + DWORD ServiceBufferSize, INT Flags); + + static if (_WIN32_WINNT >= 0x502) { + INT GetNameInfoW(SOCKADDR* pSockaddr, socklen_t SockaddrLength, + PWCHAR pNodeBuffer, DWORD NodeBufferSize, PWCHAR pServiceBuffer, + DWORD ServiceBufferSize, INT Flags); + + alias getnameinfo GetNameInfoA; + + version(Unicode) { + alias GetNameInfoW GetNameInfo; + } else { + alias GetNameInfoA GetNameInfo; + } + } +} diff --git a/src/core/sys/windows/wtsapi32.d b/src/core/sys/windows/wtsapi32.d index ff0a69fbe4..7a9ebb41db 100644 --- a/src/core/sys/windows/wtsapi32.d +++ b/src/core/sys/windows/wtsapi32.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* wtsapi32.d * -* * -* Windows API header module * -* * -* Translated from MinGW-w64 API * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW-w64 API + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wtsapi32.d) + */ module core.sys.windows.wtsapi32; pragma(lib, "wtsapi32"); private import core.sys.windows.w32api; diff --git a/src/core/sys/windows/wtypes.d b/src/core/sys/windows/wtypes.d index 026ea3676a..2c46caeb4a 100644 --- a/src/core/sys/windows/wtypes.d +++ b/src/core/sys/windows/wtypes.d @@ -1,12 +1,11 @@ -/***********************************************************************\ -* wtypes.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wtypes.d) + */ module core.sys.windows.wtypes; import core.sys.windows.rpc, core.sys.windows.rpcndr; From 79b13d8b7929c3824f5f498aa2096db2564052fb Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 20:03:33 +0000 Subject: [PATCH 112/768] tolf --- src/core/sys/windows/accctrl.d | 838 +- src/core/sys/windows/aclapi.d | 272 +- src/core/sys/windows/aclui.d | 238 +- src/core/sys/windows/basetsd.d | 316 +- src/core/sys/windows/basetyps.d | 46 +- src/core/sys/windows/cderr.d | 98 +- src/core/sys/windows/cguid.d | 24 +- src/core/sys/windows/comcat.d | 144 +- src/core/sys/windows/commctrl.d | 12558 +++++++++++++++--------------- src/core/sys/windows/commdlg.d | 1430 ++-- src/core/sys/windows/core.d | 58 +- src/core/sys/windows/cpl.d | 152 +- src/core/sys/windows/cplext.d | 36 +- src/core/sys/windows/custcntl.d | 242 +- src/core/sys/windows/dbt.d | 376 +- src/core/sys/windows/dde.d | 428 +- src/core/sys/windows/ddeml.d | 752 +- src/core/sys/windows/dhcpcsdk.d | 114 +- src/core/sys/windows/dlgs.d | 380 +- src/core/sys/windows/docobj.d | 264 +- src/core/sys/windows/errorrep.d | 78 +- src/core/sys/windows/exdisp.d | 252 +- src/core/sys/windows/exdispid.d | 38 +- src/core/sys/windows/httpext.d | 226 +- src/core/sys/windows/idispids.d | 30 +- src/core/sys/windows/imagehlp.d | 724 +- src/core/sys/windows/imm.d | 962 +-- src/core/sys/windows/intshcut.d | 176 +- src/core/sys/windows/ipexport.d | 214 +- src/core/sys/windows/iphlpapi.d | 122 +- src/core/sys/windows/ipifcons.d | 74 +- src/core/sys/windows/iprtrmib.d | 532 +- src/core/sys/windows/iptypes.d | 204 +- src/core/sys/windows/isguids.d | 32 +- src/core/sys/windows/lm.d | 92 +- src/core/sys/windows/lmaccess.d | 1516 ++-- src/core/sys/windows/lmalert.d | 152 +- src/core/sys/windows/lmapibuf.d | 40 +- src/core/sys/windows/lmat.d | 98 +- src/core/sys/windows/lmaudit.d | 602 +- src/core/sys/windows/lmbrowsr.d | 168 +- src/core/sys/windows/lmchdev.d | 178 +- src/core/sys/windows/lmconfig.d | 58 +- src/core/sys/windows/lmcons.d | 170 +- src/core/sys/windows/lmerr.d | 624 +- src/core/sys/windows/lmerrlog.d | 442 +- src/core/sys/windows/lmmsg.d | 84 +- src/core/sys/windows/lmremutl.d | 118 +- src/core/sys/windows/lmrepl.d | 266 +- src/core/sys/windows/lmserver.d | 1880 ++--- src/core/sys/windows/lmshare.d | 392 +- src/core/sys/windows/lmsname.d | 128 +- src/core/sys/windows/lmstats.d | 240 +- src/core/sys/windows/lmsvc.d | 310 +- src/core/sys/windows/lmuse.d | 158 +- src/core/sys/windows/lmuseflg.d | 30 +- src/core/sys/windows/lmwksta.d | 778 +- src/core/sys/windows/lzexpand.d | 94 +- src/core/sys/windows/mapi.d | 334 +- src/core/sys/windows/mciavi.d | 78 +- src/core/sys/windows/mcx.d | 196 +- src/core/sys/windows/mgmtapi.d | 92 +- src/core/sys/windows/mmsystem.d | 4536 +++++------ src/core/sys/windows/msacm.d | 344 +- src/core/sys/windows/mshtml.d | 1070 +-- src/core/sys/windows/mswsock.d | 392 +- src/core/sys/windows/nb30.d | 472 +- src/core/sys/windows/nddeapi.d | 322 +- src/core/sys/windows/nspapi.d | 294 +- src/core/sys/windows/ntdef.d | 158 +- src/core/sys/windows/ntdll.d | 42 +- src/core/sys/windows/ntldap.d | 114 +- src/core/sys/windows/ntsecapi.d | 1584 ++-- src/core/sys/windows/ntsecpkg.d | 890 +-- src/core/sys/windows/oaidl.d | 1342 ++-- src/core/sys/windows/objbase.d | 412 +- src/core/sys/windows/objfwd.d | 204 +- src/core/sys/windows/objidl.d | 2612 +++---- src/core/sys/windows/objsafe.d | 44 +- src/core/sys/windows/ocidl.d | 942 +-- src/core/sys/windows/odbcinst.d | 330 +- src/core/sys/windows/ole.d | 722 +- src/core/sys/windows/ole2.d | 234 +- src/core/sys/windows/ole2ver.d | 26 +- src/core/sys/windows/oleacc.d | 426 +- src/core/sys/windows/oleauto.d | 1366 ++-- src/core/sys/windows/olectl.d | 794 +- src/core/sys/windows/olectlid.d | 24 +- src/core/sys/windows/oledlg.d | 1978 ++--- src/core/sys/windows/oleidl.d | 538 +- src/core/sys/windows/pbt.d | 58 +- src/core/sys/windows/powrprof.d | 278 +- src/core/sys/windows/prsht.d | 882 +-- src/core/sys/windows/psapi.d | 314 +- src/core/sys/windows/rapi.d | 106 +- src/core/sys/windows/ras.d | 2010 ++--- src/core/sys/windows/rasdlg.d | 316 +- src/core/sys/windows/raserror.d | 428 +- src/core/sys/windows/rassapi.d | 438 +- src/core/sys/windows/reason.d | 124 +- src/core/sys/windows/regstr.d | 1630 ++-- src/core/sys/windows/richedit.d | 1178 +-- src/core/sys/windows/richole.d | 200 +- src/core/sys/windows/rpc.d | 60 +- src/core/sys/windows/rpcdce.d | 820 +- src/core/sys/windows/rpcdce2.d | 154 +- src/core/sys/windows/rpcdcep.d | 300 +- src/core/sys/windows/rpcndr.d | 1144 +-- src/core/sys/windows/rpcnsi.d | 298 +- src/core/sys/windows/rpcnsip.d | 56 +- src/core/sys/windows/rpcnterr.d | 60 +- src/core/sys/windows/schannel.d | 210 +- src/core/sys/windows/secext.d | 102 +- src/core/sys/windows/security.d | 90 +- src/core/sys/windows/servprov.d | 30 +- src/core/sys/windows/setupapi.d | 3956 +++++----- src/core/sys/windows/shellapi.d | 834 +- src/core/sys/windows/shldisp.d | 52 +- src/core/sys/windows/shlguid.d | 34 +- src/core/sys/windows/shlobj.d | 2704 +++---- src/core/sys/windows/shlwapi.d | 1458 ++-- src/core/sys/windows/snmp.d | 536 +- src/core/sys/windows/sql.d | 866 +- src/core/sys/windows/sqlext.d | 2588 +++--- src/core/sys/windows/sqltypes.d | 282 +- src/core/sys/windows/sqlucode.d | 310 +- src/core/sys/windows/sspi.d | 758 +- src/core/sys/windows/subauth.d | 548 +- src/core/sys/windows/tlhelp32.d | 336 +- src/core/sys/windows/tmschema.d | 1514 ++-- src/core/sys/windows/unknwn.d | 108 +- src/core/sys/windows/vfw.d | 4790 ++++++------ src/core/sys/windows/winbase.d | 5596 ++++++------- src/core/sys/windows/winber.d | 138 +- src/core/sys/windows/wincon.d | 552 +- src/core/sys/windows/wincrypt.d | 1796 ++--- src/core/sys/windows/windef.d | 310 +- src/core/sys/windows/windows.d | 128 +- src/core/sys/windows/winerror.d | 4618 +++++------ src/core/sys/windows/wingdi.d | 9130 +++++++++++----------- src/core/sys/windows/winhttp.d | 1686 ++-- src/core/sys/windows/wininet.d | 2490 +++--- src/core/sys/windows/winioctl.d | 1422 ++-- src/core/sys/windows/winldap.d | 1706 ++-- src/core/sys/windows/winnetwk.d | 874 +-- src/core/sys/windows/winnls.d | 1616 ++-- src/core/sys/windows/winnt.d | 8204 +++++++++---------- src/core/sys/windows/winperf.d | 302 +- src/core/sys/windows/winreg.d | 500 +- src/core/sys/windows/winspool.d | 1920 ++--- src/core/sys/windows/winsvc.d | 848 +- src/core/sys/windows/winuser.d | 9776 +++++++++++------------ src/core/sys/windows/winver.d | 342 +- src/core/sys/windows/ws2tcpip.d | 560 +- src/core/sys/windows/wtsapi32.d | 856 +- src/core/sys/windows/wtypes.d | 462 +- 156 files changed, 71376 insertions(+), 71376 deletions(-) diff --git a/src/core/sys/windows/accctrl.d b/src/core/sys/windows/accctrl.d index bb1d12c9a5..e8644765fa 100644 --- a/src/core/sys/windows/accctrl.d +++ b/src/core/sys/windows/accctrl.d @@ -1,419 +1,419 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_accctrl.d) - */ -module core.sys.windows.accctrl; - -private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; - -// FIXME: check types and grouping of constants -// FIXME: check Windows version support - -alias LocalFree AccFree; - -const uint - ACTRL_RESERVED = 0x00000000, - ACTRL_ACCESS_PROTECTED = 0x00000001, - ACTRL_ACCESS_ALLOWED = 0x00000001, - ACTRL_ACCESS_DENIED = 0x00000002, - ACTRL_AUDIT_SUCCESS = 0x00000004, - ACTRL_AUDIT_FAILURE = 0x00000008, - ACTRL_SYSTEM_ACCESS = 0x04000000, - ACTRL_DELETE = 0x08000000, - ACTRL_READ_CONTROL = 0x10000000, - ACTRL_CHANGE_ACCESS = 0x20000000, - ACTRL_CHANGE_OWNER = 0x40000000, - ACTRL_SYNCHRONIZE = 0x80000000, - ACTRL_STD_RIGHTS_ALL = 0xf8000000; - -const uint - ACTRL_FILE_READ = 0x00000001, - ACTRL_FILE_WRITE = 0x00000002, - ACTRL_FILE_APPEND = 0x00000004, - ACTRL_FILE_READ_PROP = 0x00000008, - ACTRL_FILE_WRITE_PROP = 0x00000010, - ACTRL_FILE_EXECUTE = 0x00000020, - ACTRL_FILE_READ_ATTRIB = 0x00000080, - ACTRL_FILE_WRITE_ATTRIB = 0x00000100, - ACTRL_FILE_CREATE_PIPE = 0x00000200; - -const uint - ACTRL_DIR_LIST = 0x00000001, - ACTRL_DIR_CREATE_OBJECT = 0x00000002, - ACTRL_DIR_CREATE_CHILD = 0x00000004, - ACTRL_DIR_DELETE_CHILD = 0x00000040, - ACTRL_DIR_TRAVERSE = 0x00000020; - -const uint - ACTRL_KERNEL_TERMINATE = 0x00000001, - ACTRL_KERNEL_THREAD = 0x00000002, - ACTRL_KERNEL_VM = 0x00000004, - ACTRL_KERNEL_VM_READ = 0x00000008, - ACTRL_KERNEL_VM_WRITE = 0x00000010, - ACTRL_KERNEL_DUP_HANDLE = 0x00000020, - ACTRL_KERNEL_PROCESS = 0x00000040, - ACTRL_KERNEL_SET_INFO = 0x00000080, - ACTRL_KERNEL_GET_INFO = 0x00000100, - ACTRL_KERNEL_CONTROL = 0x00000200, - ACTRL_KERNEL_ALERT = 0x00000400, - ACTRL_KERNEL_GET_CONTEXT = 0x00000800, - ACTRL_KERNEL_SET_CONTEXT = 0x00001000, - ACTRL_KERNEL_TOKEN = 0x00002000, - ACTRL_KERNEL_IMPERSONATE = 0x00004000, - ACTRL_KERNEL_DIMPERSONATE = 0x00008000; - -const uint - ACTRL_PRINT_SADMIN = 0x00000001, - ACTRL_PRINT_SLIST = 0x00000002, - ACTRL_PRINT_PADMIN = 0x00000004, - ACTRL_PRINT_PUSE = 0x00000008, - ACTRL_PRINT_JADMIN = 0x00000010; - -const uint - ACTRL_SVC_GET_INFO = 0x00000001, - ACTRL_SVC_SET_INFO = 0x00000002, - ACTRL_SVC_STATUS = 0x00000004, - ACTRL_SVC_LIST = 0x00000008, - ACTRL_SVC_START = 0x00000010, - ACTRL_SVC_STOP = 0x00000020, - ACTRL_SVC_PAUSE = 0x00000040, - ACTRL_SVC_INTERROGATE = 0x00000080, - ACTRL_SVC_UCONTROL = 0x00000100; - -const uint - ACTRL_REG_QUERY = 0x00000001, - ACTRL_REG_SET = 0x00000002, - ACTRL_REG_CREATE_CHILD = 0x00000004, - ACTRL_REG_LIST = 0x00000008, - ACTRL_REG_NOTIFY = 0x00000010, - ACTRL_REG_LINK = 0x00000020; - -const uint - ACTRL_WIN_CLIPBRD = 0x00000001, - ACTRL_WIN_GLOBAL_ATOMS = 0x00000002, - ACTRL_WIN_CREATE = 0x00000004, - ACTRL_WIN_LIST_DESK = 0x00000008, - ACTRL_WIN_LIST = 0x00000010, - ACTRL_WIN_READ_ATTRIBS = 0x00000020, - ACTRL_WIN_WRITE_ATTRIBS = 0x00000040, - ACTRL_WIN_SCREEN = 0x00000080, - ACTRL_WIN_EXIT = 0x00000100; - -enum : uint { - ACTRL_ACCESS_NO_OPTIONS = 0x00000000, - ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES = 0x00000001 -} - -const TCHAR[] ACCCTRL_DEFAULT_PROVIDER = "Windows NT Access Provider"; - -const uint - TRUSTEE_ACCESS_ALLOWED = 0x00000001, - TRUSTEE_ACCESS_READ = 0x00000002, - TRUSTEE_ACCESS_WRITE = 0x00000004, - TRUSTEE_ACCESS_EXPLICIT = 0x00000001, - TRUSTEE_ACCESS_READ_WRITE = 0x00000006, - TRUSTEE_ACCESS_ALL = 0xFFFFFFFF; - -const uint - NO_INHERITANCE = 0x0, - SUB_OBJECTS_ONLY_INHERIT = 0x1, - SUB_CONTAINERS_ONLY_INHERIT = 0x2, - SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3, - INHERIT_NO_PROPAGATE = 0x4, - INHERIT_ONLY = 0x8, - INHERITED_ACCESS_ENTRY = 0x10, - INHERITED_PARENT = 0x10000000, - INHERITED_GRANDPARENT = 0x20000000; - -alias ULONG INHERIT_FLAGS, ACCESS_RIGHTS; -alias ULONG* PINHERIT_FLAGS, PACCESS_RIGHTS; - -enum ACCESS_MODE { - NOT_USED_ACCESS, - GRANT_ACCESS, - SET_ACCESS, - DENY_ACCESS, - REVOKE_ACCESS, - SET_AUDIT_SUCCESS, - SET_AUDIT_FAILURE -} - -enum SE_OBJECT_TYPE { - SE_UNKNOWN_OBJECT_TYPE, - SE_FILE_OBJECT, - SE_SERVICE, - SE_PRINTER, - SE_REGISTRY_KEY, - SE_LMSHARE, - SE_KERNEL_OBJECT, - SE_WINDOW_OBJECT, - SE_DS_OBJECT, - SE_DS_OBJECT_ALL, - SE_PROVIDER_DEFINED_OBJECT, - SE_WMIGUID_OBJECT, - SE_REGISTRY_WOW64_32KEY -} - -enum TRUSTEE_TYPE { - TRUSTEE_IS_UNKNOWN, - TRUSTEE_IS_USER, - TRUSTEE_IS_GROUP, - TRUSTEE_IS_DOMAIN, - TRUSTEE_IS_ALIAS, - TRUSTEE_IS_WELL_KNOWN_GROUP, - TRUSTEE_IS_DELETED, - TRUSTEE_IS_INVALID, - TRUSTEE_IS_COMPUTER -} - -enum TRUSTEE_FORM { - TRUSTEE_IS_SID, - TRUSTEE_IS_NAME, - TRUSTEE_BAD_FORM, - TRUSTEE_IS_OBJECTS_AND_SID, - TRUSTEE_IS_OBJECTS_AND_NAME -} - -enum MULTIPLE_TRUSTEE_OPERATION { - NO_MULTIPLE_TRUSTEE, - TRUSTEE_IS_IMPERSONATE -} - -struct TRUSTEE_A { - TRUSTEE_A* pMultipleTrustee; - MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; - TRUSTEE_FORM TrusteeForm; - TRUSTEE_TYPE TrusteeType; - LPSTR ptstrName; -} -alias TRUSTEE_A TRUSTEEA; -alias TRUSTEE_A* PTRUSTEE_A, PTRUSTEEA; - -struct TRUSTEE_W { - TRUSTEE_W* pMultipleTrustee; - MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; - TRUSTEE_FORM TrusteeForm; - TRUSTEE_TYPE TrusteeType; - LPWSTR ptstrName; -} -alias TRUSTEE_W TRUSTEEW; -alias TRUSTEEW* PTRUSTEE_W, PTRUSTEEW; - -struct ACTRL_ACCESS_ENTRYA { - TRUSTEE_A Trustee; - ULONG fAccessFlags; - ACCESS_RIGHTS Access; - ACCESS_RIGHTS ProvSpecificAccess; - INHERIT_FLAGS Inheritance; - LPCSTR lpInheritProperty; -} -alias ACTRL_ACCESS_ENTRYA* PACTRL_ACCESS_ENTRYA; - -struct ACTRL_ACCESS_ENTRYW { - TRUSTEE_W Trustee; - ULONG fAccessFlags; - ACCESS_RIGHTS Access; - ACCESS_RIGHTS ProvSpecificAccess; - INHERIT_FLAGS Inheritance; - LPCWSTR lpInheritProperty; -} -alias ACTRL_ACCESS_ENTRYW* PACTRL_ACCESS_ENTRYW; - -struct ACTRL_ACCESS_ENTRY_LISTA { - ULONG cEntries; - ACTRL_ACCESS_ENTRYA* pAccessList; -} -alias ACTRL_ACCESS_ENTRY_LISTA* PACTRL_ACCESS_ENTRY_LISTA; - -struct ACTRL_ACCESS_ENTRY_LISTW { - ULONG cEntries; - ACTRL_ACCESS_ENTRYW* pAccessList; -} -alias ACTRL_ACCESS_ENTRY_LISTW* PACTRL_ACCESS_ENTRY_LISTW; - -struct ACTRL_PROPERTY_ENTRYA { - LPCSTR lpProperty; - PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; - ULONG fListFlags; -} -alias ACTRL_PROPERTY_ENTRYA* PACTRL_PROPERTY_ENTRYA; - -struct ACTRL_PROPERTY_ENTRYW { - LPCWSTR lpProperty; - PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; - ULONG fListFlags; -} -alias ACTRL_PROPERTY_ENTRYW* PACTRL_PROPERTY_ENTRYW; - -struct ACTRL_ACCESSA { - ULONG cEntries; - PACTRL_PROPERTY_ENTRYA pPropertyAccessList; -} -alias ACTRL_ACCESSA ACTRL_AUDITA; -alias ACTRL_ACCESSA* PACTRL_ACCESSA, PACTRL_AUDITA; - -struct ACTRL_ACCESSW { - ULONG cEntries; - PACTRL_PROPERTY_ENTRYW pPropertyAccessList; -} -alias ACTRL_ACCESSW ACTRL_AUDITW; -alias ACTRL_ACCESSW* PACTRL_ACCESSW, PACTRL_AUDITW; - -struct TRUSTEE_ACCESSA { - LPSTR lpProperty; - ACCESS_RIGHTS Access; - ULONG fAccessFlags; - ULONG fReturnedAccess; -} -alias TRUSTEE_ACCESSA* PTRUSTEE_ACCESSA; - -struct TRUSTEE_ACCESSW { - LPWSTR lpProperty; - ACCESS_RIGHTS Access; - ULONG fAccessFlags; - ULONG fReturnedAccess; -} -alias TRUSTEE_ACCESSW* PTRUSTEE_ACCESSW; - -struct ACTRL_OVERLAPPED { - union { - PVOID Provider; - ULONG Reserved1; - } - ULONG Reserved2; - HANDLE hEvent; -} -alias ACTRL_OVERLAPPED* PACTRL_OVERLAPPED; - -struct ACTRL_ACCESS_INFOA { - ULONG fAccessPermission; - LPSTR lpAccessPermissionName; -} -alias ACTRL_ACCESS_INFOA* PACTRL_ACCESS_INFOA; - -struct ACTRL_ACCESS_INFOW { - ULONG fAccessPermission; - LPWSTR lpAccessPermissionName; -} -alias ACTRL_ACCESS_INFOW* PACTRL_ACCESS_INFOW; - -struct ACTRL_CONTROL_INFOA { - LPSTR lpControlId; - LPSTR lpControlName; -} -alias ACTRL_CONTROL_INFOA* PACTRL_CONTROL_INFOA; - -struct ACTRL_CONTROL_INFOW { - LPWSTR lpControlId; - LPWSTR lpControlName; -} -alias ACTRL_CONTROL_INFOW* PACTRL_CONTROL_INFOW; - -struct EXPLICIT_ACCESS_A { - DWORD grfAccessPermissions; - ACCESS_MODE grfAccessMode; - DWORD grfInheritance; - TRUSTEE_A Trustee; -} -alias EXPLICIT_ACCESS_A EXPLICIT_ACCESSA; -alias EXPLICIT_ACCESS_A* PEXPLICIT_ACCESS_A, PEXPLICIT_ACCESSA; - -struct EXPLICIT_ACCESS_W { - DWORD grfAccessPermissions; - ACCESS_MODE grfAccessMode; - DWORD grfInheritance; - TRUSTEE_W Trustee; -} -alias EXPLICIT_ACCESS_W EXPLICIT_ACCESSW; -alias EXPLICIT_ACCESS_W* PEXPLICIT_ACCESS_W, PEXPLICIT_ACCESSW; - -struct OBJECTS_AND_SID { - DWORD ObjectsPresent; - GUID ObjectTypeGuid; - GUID InheritedObjectTypeGuid; - SID* pSid; -} -alias OBJECTS_AND_SID* POBJECTS_AND_SID; - -struct OBJECTS_AND_NAME_A { - DWORD ObjectsPresent; - SE_OBJECT_TYPE ObjectType; - LPSTR ObjectTypeName; - LPSTR InheritedObjectTypeName; - LPSTR ptstrName; -} -alias OBJECTS_AND_NAME_A* POBJECTS_AND_NAME_A; - -struct OBJECTS_AND_NAME_W { - DWORD ObjectsPresent; - SE_OBJECT_TYPE ObjectType; - LPWSTR ObjectTypeName; - LPWSTR InheritedObjectTypeName; - LPWSTR ptstrName; -} -alias OBJECTS_AND_NAME_W* POBJECTS_AND_NAME_W; - -static if (_WIN32_WINNT >= 0x501) { - struct INHERITED_FROMA { - LONG GenerationGap; - LPSTR AncestorName; - } - alias INHERITED_FROMA* PINHERITED_FROMA; - - struct INHERITED_FROMW { - LONG GenerationGap; - LPWSTR AncestorName; - } - alias INHERITED_FROMW* PINHERITED_FROMW; -} - -version (Unicode) { - alias TRUSTEEW TRUSTEE; - alias ACTRL_ACCESSW ACTRL_ACCESS; - alias ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST; - alias ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO; - alias ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY; - alias ACTRL_AUDITW ACTRL_AUDIT; - alias ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO; - alias EXPLICIT_ACCESSW EXPLICIT_ACCESS; - alias TRUSTEE_ACCESSW TRUSTEE_ACCESS; - alias OBJECTS_AND_NAME_W OBJECTS_AND_NAME_; - static if (_WIN32_WINNT >= 0x501) { - alias INHERITED_FROMW INHERITED_FROM; - } -} else { - alias TRUSTEEA TRUSTEE; - alias ACTRL_ACCESSA ACTRL_ACCESS; - alias ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST; - alias ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO; - alias ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY; - alias ACTRL_AUDITA ACTRL_AUDIT; - alias ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO; - alias EXPLICIT_ACCESSA EXPLICIT_ACCESS; - alias TRUSTEE_ACCESSA TRUSTEE_ACCESS; - alias OBJECTS_AND_NAME_A OBJECTS_AND_NAME_; - static if (_WIN32_WINNT >= 0x501) { - alias INHERITED_FROMA INHERITED_FROM; - } -} - -alias TRUSTEE TRUSTEE_; -alias TRUSTEE* PTRUSTEE, PTRUSTEE_; -alias ACTRL_ACCESS* PACTRL_ACCESS; -alias ACTRL_ACCESS_ENTRY_LIST* PACTRL_ACCESS_ENTRY_LIST; -alias ACTRL_ACCESS_INFO* PACTRL_ACCESS_INFO; -alias ACTRL_ACCESS_ENTRY* PACTRL_ACCESS_ENTRY; -alias ACTRL_AUDIT* PACTRL_AUDIT; -alias ACTRL_CONTROL_INFO* PACTRL_CONTROL_INFO; -alias EXPLICIT_ACCESS EXPLICIT_ACCESS_; -alias EXPLICIT_ACCESS* PEXPLICIT_ACCESS, PEXPLICIT_ACCESS_; -alias TRUSTEE_ACCESS* PTRUSTEE_ACCESS; -alias OBJECTS_AND_NAME_* POBJECTS_AND_NAME_; -static if (_WIN32_WINNT >= 0x501) { - alias INHERITED_FROM* PINHERITED_FROM; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_accctrl.d) + */ +module core.sys.windows.accctrl; + +private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; + +// FIXME: check types and grouping of constants +// FIXME: check Windows version support + +alias LocalFree AccFree; + +const uint + ACTRL_RESERVED = 0x00000000, + ACTRL_ACCESS_PROTECTED = 0x00000001, + ACTRL_ACCESS_ALLOWED = 0x00000001, + ACTRL_ACCESS_DENIED = 0x00000002, + ACTRL_AUDIT_SUCCESS = 0x00000004, + ACTRL_AUDIT_FAILURE = 0x00000008, + ACTRL_SYSTEM_ACCESS = 0x04000000, + ACTRL_DELETE = 0x08000000, + ACTRL_READ_CONTROL = 0x10000000, + ACTRL_CHANGE_ACCESS = 0x20000000, + ACTRL_CHANGE_OWNER = 0x40000000, + ACTRL_SYNCHRONIZE = 0x80000000, + ACTRL_STD_RIGHTS_ALL = 0xf8000000; + +const uint + ACTRL_FILE_READ = 0x00000001, + ACTRL_FILE_WRITE = 0x00000002, + ACTRL_FILE_APPEND = 0x00000004, + ACTRL_FILE_READ_PROP = 0x00000008, + ACTRL_FILE_WRITE_PROP = 0x00000010, + ACTRL_FILE_EXECUTE = 0x00000020, + ACTRL_FILE_READ_ATTRIB = 0x00000080, + ACTRL_FILE_WRITE_ATTRIB = 0x00000100, + ACTRL_FILE_CREATE_PIPE = 0x00000200; + +const uint + ACTRL_DIR_LIST = 0x00000001, + ACTRL_DIR_CREATE_OBJECT = 0x00000002, + ACTRL_DIR_CREATE_CHILD = 0x00000004, + ACTRL_DIR_DELETE_CHILD = 0x00000040, + ACTRL_DIR_TRAVERSE = 0x00000020; + +const uint + ACTRL_KERNEL_TERMINATE = 0x00000001, + ACTRL_KERNEL_THREAD = 0x00000002, + ACTRL_KERNEL_VM = 0x00000004, + ACTRL_KERNEL_VM_READ = 0x00000008, + ACTRL_KERNEL_VM_WRITE = 0x00000010, + ACTRL_KERNEL_DUP_HANDLE = 0x00000020, + ACTRL_KERNEL_PROCESS = 0x00000040, + ACTRL_KERNEL_SET_INFO = 0x00000080, + ACTRL_KERNEL_GET_INFO = 0x00000100, + ACTRL_KERNEL_CONTROL = 0x00000200, + ACTRL_KERNEL_ALERT = 0x00000400, + ACTRL_KERNEL_GET_CONTEXT = 0x00000800, + ACTRL_KERNEL_SET_CONTEXT = 0x00001000, + ACTRL_KERNEL_TOKEN = 0x00002000, + ACTRL_KERNEL_IMPERSONATE = 0x00004000, + ACTRL_KERNEL_DIMPERSONATE = 0x00008000; + +const uint + ACTRL_PRINT_SADMIN = 0x00000001, + ACTRL_PRINT_SLIST = 0x00000002, + ACTRL_PRINT_PADMIN = 0x00000004, + ACTRL_PRINT_PUSE = 0x00000008, + ACTRL_PRINT_JADMIN = 0x00000010; + +const uint + ACTRL_SVC_GET_INFO = 0x00000001, + ACTRL_SVC_SET_INFO = 0x00000002, + ACTRL_SVC_STATUS = 0x00000004, + ACTRL_SVC_LIST = 0x00000008, + ACTRL_SVC_START = 0x00000010, + ACTRL_SVC_STOP = 0x00000020, + ACTRL_SVC_PAUSE = 0x00000040, + ACTRL_SVC_INTERROGATE = 0x00000080, + ACTRL_SVC_UCONTROL = 0x00000100; + +const uint + ACTRL_REG_QUERY = 0x00000001, + ACTRL_REG_SET = 0x00000002, + ACTRL_REG_CREATE_CHILD = 0x00000004, + ACTRL_REG_LIST = 0x00000008, + ACTRL_REG_NOTIFY = 0x00000010, + ACTRL_REG_LINK = 0x00000020; + +const uint + ACTRL_WIN_CLIPBRD = 0x00000001, + ACTRL_WIN_GLOBAL_ATOMS = 0x00000002, + ACTRL_WIN_CREATE = 0x00000004, + ACTRL_WIN_LIST_DESK = 0x00000008, + ACTRL_WIN_LIST = 0x00000010, + ACTRL_WIN_READ_ATTRIBS = 0x00000020, + ACTRL_WIN_WRITE_ATTRIBS = 0x00000040, + ACTRL_WIN_SCREEN = 0x00000080, + ACTRL_WIN_EXIT = 0x00000100; + +enum : uint { + ACTRL_ACCESS_NO_OPTIONS = 0x00000000, + ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES = 0x00000001 +} + +const TCHAR[] ACCCTRL_DEFAULT_PROVIDER = "Windows NT Access Provider"; + +const uint + TRUSTEE_ACCESS_ALLOWED = 0x00000001, + TRUSTEE_ACCESS_READ = 0x00000002, + TRUSTEE_ACCESS_WRITE = 0x00000004, + TRUSTEE_ACCESS_EXPLICIT = 0x00000001, + TRUSTEE_ACCESS_READ_WRITE = 0x00000006, + TRUSTEE_ACCESS_ALL = 0xFFFFFFFF; + +const uint + NO_INHERITANCE = 0x0, + SUB_OBJECTS_ONLY_INHERIT = 0x1, + SUB_CONTAINERS_ONLY_INHERIT = 0x2, + SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3, + INHERIT_NO_PROPAGATE = 0x4, + INHERIT_ONLY = 0x8, + INHERITED_ACCESS_ENTRY = 0x10, + INHERITED_PARENT = 0x10000000, + INHERITED_GRANDPARENT = 0x20000000; + +alias ULONG INHERIT_FLAGS, ACCESS_RIGHTS; +alias ULONG* PINHERIT_FLAGS, PACCESS_RIGHTS; + +enum ACCESS_MODE { + NOT_USED_ACCESS, + GRANT_ACCESS, + SET_ACCESS, + DENY_ACCESS, + REVOKE_ACCESS, + SET_AUDIT_SUCCESS, + SET_AUDIT_FAILURE +} + +enum SE_OBJECT_TYPE { + SE_UNKNOWN_OBJECT_TYPE, + SE_FILE_OBJECT, + SE_SERVICE, + SE_PRINTER, + SE_REGISTRY_KEY, + SE_LMSHARE, + SE_KERNEL_OBJECT, + SE_WINDOW_OBJECT, + SE_DS_OBJECT, + SE_DS_OBJECT_ALL, + SE_PROVIDER_DEFINED_OBJECT, + SE_WMIGUID_OBJECT, + SE_REGISTRY_WOW64_32KEY +} + +enum TRUSTEE_TYPE { + TRUSTEE_IS_UNKNOWN, + TRUSTEE_IS_USER, + TRUSTEE_IS_GROUP, + TRUSTEE_IS_DOMAIN, + TRUSTEE_IS_ALIAS, + TRUSTEE_IS_WELL_KNOWN_GROUP, + TRUSTEE_IS_DELETED, + TRUSTEE_IS_INVALID, + TRUSTEE_IS_COMPUTER +} + +enum TRUSTEE_FORM { + TRUSTEE_IS_SID, + TRUSTEE_IS_NAME, + TRUSTEE_BAD_FORM, + TRUSTEE_IS_OBJECTS_AND_SID, + TRUSTEE_IS_OBJECTS_AND_NAME +} + +enum MULTIPLE_TRUSTEE_OPERATION { + NO_MULTIPLE_TRUSTEE, + TRUSTEE_IS_IMPERSONATE +} + +struct TRUSTEE_A { + TRUSTEE_A* pMultipleTrustee; + MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; + TRUSTEE_FORM TrusteeForm; + TRUSTEE_TYPE TrusteeType; + LPSTR ptstrName; +} +alias TRUSTEE_A TRUSTEEA; +alias TRUSTEE_A* PTRUSTEE_A, PTRUSTEEA; + +struct TRUSTEE_W { + TRUSTEE_W* pMultipleTrustee; + MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; + TRUSTEE_FORM TrusteeForm; + TRUSTEE_TYPE TrusteeType; + LPWSTR ptstrName; +} +alias TRUSTEE_W TRUSTEEW; +alias TRUSTEEW* PTRUSTEE_W, PTRUSTEEW; + +struct ACTRL_ACCESS_ENTRYA { + TRUSTEE_A Trustee; + ULONG fAccessFlags; + ACCESS_RIGHTS Access; + ACCESS_RIGHTS ProvSpecificAccess; + INHERIT_FLAGS Inheritance; + LPCSTR lpInheritProperty; +} +alias ACTRL_ACCESS_ENTRYA* PACTRL_ACCESS_ENTRYA; + +struct ACTRL_ACCESS_ENTRYW { + TRUSTEE_W Trustee; + ULONG fAccessFlags; + ACCESS_RIGHTS Access; + ACCESS_RIGHTS ProvSpecificAccess; + INHERIT_FLAGS Inheritance; + LPCWSTR lpInheritProperty; +} +alias ACTRL_ACCESS_ENTRYW* PACTRL_ACCESS_ENTRYW; + +struct ACTRL_ACCESS_ENTRY_LISTA { + ULONG cEntries; + ACTRL_ACCESS_ENTRYA* pAccessList; +} +alias ACTRL_ACCESS_ENTRY_LISTA* PACTRL_ACCESS_ENTRY_LISTA; + +struct ACTRL_ACCESS_ENTRY_LISTW { + ULONG cEntries; + ACTRL_ACCESS_ENTRYW* pAccessList; +} +alias ACTRL_ACCESS_ENTRY_LISTW* PACTRL_ACCESS_ENTRY_LISTW; + +struct ACTRL_PROPERTY_ENTRYA { + LPCSTR lpProperty; + PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; + ULONG fListFlags; +} +alias ACTRL_PROPERTY_ENTRYA* PACTRL_PROPERTY_ENTRYA; + +struct ACTRL_PROPERTY_ENTRYW { + LPCWSTR lpProperty; + PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; + ULONG fListFlags; +} +alias ACTRL_PROPERTY_ENTRYW* PACTRL_PROPERTY_ENTRYW; + +struct ACTRL_ACCESSA { + ULONG cEntries; + PACTRL_PROPERTY_ENTRYA pPropertyAccessList; +} +alias ACTRL_ACCESSA ACTRL_AUDITA; +alias ACTRL_ACCESSA* PACTRL_ACCESSA, PACTRL_AUDITA; + +struct ACTRL_ACCESSW { + ULONG cEntries; + PACTRL_PROPERTY_ENTRYW pPropertyAccessList; +} +alias ACTRL_ACCESSW ACTRL_AUDITW; +alias ACTRL_ACCESSW* PACTRL_ACCESSW, PACTRL_AUDITW; + +struct TRUSTEE_ACCESSA { + LPSTR lpProperty; + ACCESS_RIGHTS Access; + ULONG fAccessFlags; + ULONG fReturnedAccess; +} +alias TRUSTEE_ACCESSA* PTRUSTEE_ACCESSA; + +struct TRUSTEE_ACCESSW { + LPWSTR lpProperty; + ACCESS_RIGHTS Access; + ULONG fAccessFlags; + ULONG fReturnedAccess; +} +alias TRUSTEE_ACCESSW* PTRUSTEE_ACCESSW; + +struct ACTRL_OVERLAPPED { + union { + PVOID Provider; + ULONG Reserved1; + } + ULONG Reserved2; + HANDLE hEvent; +} +alias ACTRL_OVERLAPPED* PACTRL_OVERLAPPED; + +struct ACTRL_ACCESS_INFOA { + ULONG fAccessPermission; + LPSTR lpAccessPermissionName; +} +alias ACTRL_ACCESS_INFOA* PACTRL_ACCESS_INFOA; + +struct ACTRL_ACCESS_INFOW { + ULONG fAccessPermission; + LPWSTR lpAccessPermissionName; +} +alias ACTRL_ACCESS_INFOW* PACTRL_ACCESS_INFOW; + +struct ACTRL_CONTROL_INFOA { + LPSTR lpControlId; + LPSTR lpControlName; +} +alias ACTRL_CONTROL_INFOA* PACTRL_CONTROL_INFOA; + +struct ACTRL_CONTROL_INFOW { + LPWSTR lpControlId; + LPWSTR lpControlName; +} +alias ACTRL_CONTROL_INFOW* PACTRL_CONTROL_INFOW; + +struct EXPLICIT_ACCESS_A { + DWORD grfAccessPermissions; + ACCESS_MODE grfAccessMode; + DWORD grfInheritance; + TRUSTEE_A Trustee; +} +alias EXPLICIT_ACCESS_A EXPLICIT_ACCESSA; +alias EXPLICIT_ACCESS_A* PEXPLICIT_ACCESS_A, PEXPLICIT_ACCESSA; + +struct EXPLICIT_ACCESS_W { + DWORD grfAccessPermissions; + ACCESS_MODE grfAccessMode; + DWORD grfInheritance; + TRUSTEE_W Trustee; +} +alias EXPLICIT_ACCESS_W EXPLICIT_ACCESSW; +alias EXPLICIT_ACCESS_W* PEXPLICIT_ACCESS_W, PEXPLICIT_ACCESSW; + +struct OBJECTS_AND_SID { + DWORD ObjectsPresent; + GUID ObjectTypeGuid; + GUID InheritedObjectTypeGuid; + SID* pSid; +} +alias OBJECTS_AND_SID* POBJECTS_AND_SID; + +struct OBJECTS_AND_NAME_A { + DWORD ObjectsPresent; + SE_OBJECT_TYPE ObjectType; + LPSTR ObjectTypeName; + LPSTR InheritedObjectTypeName; + LPSTR ptstrName; +} +alias OBJECTS_AND_NAME_A* POBJECTS_AND_NAME_A; + +struct OBJECTS_AND_NAME_W { + DWORD ObjectsPresent; + SE_OBJECT_TYPE ObjectType; + LPWSTR ObjectTypeName; + LPWSTR InheritedObjectTypeName; + LPWSTR ptstrName; +} +alias OBJECTS_AND_NAME_W* POBJECTS_AND_NAME_W; + +static if (_WIN32_WINNT >= 0x501) { + struct INHERITED_FROMA { + LONG GenerationGap; + LPSTR AncestorName; + } + alias INHERITED_FROMA* PINHERITED_FROMA; + + struct INHERITED_FROMW { + LONG GenerationGap; + LPWSTR AncestorName; + } + alias INHERITED_FROMW* PINHERITED_FROMW; +} + +version (Unicode) { + alias TRUSTEEW TRUSTEE; + alias ACTRL_ACCESSW ACTRL_ACCESS; + alias ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST; + alias ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO; + alias ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY; + alias ACTRL_AUDITW ACTRL_AUDIT; + alias ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO; + alias EXPLICIT_ACCESSW EXPLICIT_ACCESS; + alias TRUSTEE_ACCESSW TRUSTEE_ACCESS; + alias OBJECTS_AND_NAME_W OBJECTS_AND_NAME_; + static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROMW INHERITED_FROM; + } +} else { + alias TRUSTEEA TRUSTEE; + alias ACTRL_ACCESSA ACTRL_ACCESS; + alias ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST; + alias ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO; + alias ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY; + alias ACTRL_AUDITA ACTRL_AUDIT; + alias ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO; + alias EXPLICIT_ACCESSA EXPLICIT_ACCESS; + alias TRUSTEE_ACCESSA TRUSTEE_ACCESS; + alias OBJECTS_AND_NAME_A OBJECTS_AND_NAME_; + static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROMA INHERITED_FROM; + } +} + +alias TRUSTEE TRUSTEE_; +alias TRUSTEE* PTRUSTEE, PTRUSTEE_; +alias ACTRL_ACCESS* PACTRL_ACCESS; +alias ACTRL_ACCESS_ENTRY_LIST* PACTRL_ACCESS_ENTRY_LIST; +alias ACTRL_ACCESS_INFO* PACTRL_ACCESS_INFO; +alias ACTRL_ACCESS_ENTRY* PACTRL_ACCESS_ENTRY; +alias ACTRL_AUDIT* PACTRL_AUDIT; +alias ACTRL_CONTROL_INFO* PACTRL_CONTROL_INFO; +alias EXPLICIT_ACCESS EXPLICIT_ACCESS_; +alias EXPLICIT_ACCESS* PEXPLICIT_ACCESS, PEXPLICIT_ACCESS_; +alias TRUSTEE_ACCESS* PTRUSTEE_ACCESS; +alias OBJECTS_AND_NAME_* POBJECTS_AND_NAME_; +static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROM* PINHERITED_FROM; +} diff --git a/src/core/sys/windows/aclapi.d b/src/core/sys/windows/aclapi.d index 43c6439154..f4706de11c 100644 --- a/src/core/sys/windows/aclapi.d +++ b/src/core/sys/windows/aclapi.d @@ -1,136 +1,136 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_aclapi.d) - */ -module core.sys.windows.aclapi; -pragma(lib, "advapi32"); - -import core.sys.windows.windows, core.sys.windows.accctrl; - -extern (Windows) { - VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD, - ACCESS_MODE, DWORD); - VOID BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, DWORD, - ACCESS_MODE, DWORD); - DWORD BuildSecurityDescriptorA(PTRUSTEE_A, PTRUSTEE_A , ULONG, - PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR, - PULONG, PSECURITY_DESCRIPTOR*); - DWORD BuildSecurityDescriptorW(PTRUSTEE_W, PTRUSTEE_W , ULONG, - PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR, - PULONG, PSECURITY_DESCRIPTOR*); - VOID BuildTrusteeWithNameA(PTRUSTEE_A, LPSTR); - VOID BuildTrusteeWithNameW(PTRUSTEE_W, LPWSTR); - VOID BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A, POBJECTS_AND_NAME_A, - SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR); - VOID BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W, POBJECTS_AND_NAME_W, - SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR); - VOID BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A, POBJECTS_AND_SID, - GUID*, GUID*, PSID); - VOID BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W, POBJECTS_AND_SID, - GUID*, GUID*, PSID); - VOID BuildTrusteeWithSidA(PTRUSTEE_A, PSID); - VOID BuildTrusteeWithSidW(PTRUSTEE_W, PSID); - DWORD GetAuditedPermissionsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK, - PACCESS_MASK); - DWORD GetAuditedPermissionsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK, - PACCESS_MASK); - DWORD GetEffectiveRightsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK); - DWORD GetEffectiveRightsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK); - DWORD GetExplicitEntriesFromAclA(PACL, PULONG, PEXPLICIT_ACCESS_A*); - DWORD GetExplicitEntriesFromAclW(PACL, PULONG, PEXPLICIT_ACCESS_W*); - static if (_WIN32_WINNT >= 0x501) { - DWORD GetInheritanceSourceA(LPSTR, SE_OBJECT_TYPE, - SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, - PGENERIC_MAPPING, PINHERITED_FROMA); - DWORD GetInheritanceSourceW(LPWSTR, SE_OBJECT_TYPE, - SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, - PGENERIC_MAPPING, PINHERITED_FROMW); - } - DWORD GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); - DWORD GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); - DWORD GetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); - TRUSTEE_FORM GetTrusteeFormA(PTRUSTEE_A); - TRUSTEE_FORM GetTrusteeFormW(PTRUSTEE_W); - LPSTR GetTrusteeNameA(PTRUSTEE_A); - LPWSTR GetTrusteeNameW(PTRUSTEE_W); - TRUSTEE_TYPE GetTrusteeTypeA(PTRUSTEE_A); - TRUSTEE_TYPE GetTrusteeTypeW(PTRUSTEE_W); - DWORD LookupSecurityDescriptorPartsA(PTRUSTEE_A*, PTRUSTEE_A*, PULONG, - PEXPLICIT_ACCESS_A*, PULONG, PEXPLICIT_ACCESS_A*, - PSECURITY_DESCRIPTOR); - DWORD LookupSecurityDescriptorPartsW(PTRUSTEE_W*, PTRUSTEE_W*, PULONG, - PEXPLICIT_ACCESS_W*, PULONG, PEXPLICIT_ACCESS_W*, - PSECURITY_DESCRIPTOR); - DWORD SetEntriesInAclA(ULONG, PEXPLICIT_ACCESS_A, PACL, PACL*); - DWORD SetEntriesInAclW(ULONG, PEXPLICIT_ACCESS_W, PACL, PACL*); - DWORD SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID, PSID, PACL, PACL); - DWORD SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID, PSID, PACL, PACL); - DWORD SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID, - PSID, PACL, PACL); - VOID BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, - PTRUSTEE_A, DWORD, ACCESS_MODE, DWORD); - VOID BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, - PTRUSTEE_W, DWORD, ACCESS_MODE, DWORD); - VOID BuildImpersonateTrusteeA(PTRUSTEE_A, PTRUSTEE_A); - VOID BuildImpersonateTrusteeW(PTRUSTEE_W, PTRUSTEE_W); - PTRUSTEE_A GetMultipleTrusteeA(PTRUSTEE_A); - PTRUSTEE_W GetMultipleTrusteeW(PTRUSTEE_W); - MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationA(PTRUSTEE_A); - MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationW(PTRUSTEE_W); -} - -version (Unicode) { - alias BuildExplicitAccessWithNameW BuildExplicitAccessWithName; - alias BuildSecurityDescriptorW BuildSecurityDescriptor; - alias BuildTrusteeWithNameW BuildTrusteeWithName; - alias BuildTrusteeWithObjectsAndNameW BuildTrusteeWithObjectsAndName; - alias BuildTrusteeWithObjectsAndSidW BuildTrusteeWithObjectsAndSid; - alias BuildTrusteeWithSidW BuildTrusteeWithSid; - alias GetAuditedPermissionsFromAclW GetAuditedPermissionsFromAcl; - alias GetEffectiveRightsFromAclW GetEffectiveRightsFromAcl; - alias GetExplicitEntriesFromAclW GetExplicitEntriesFromAcl; - alias GetNamedSecurityInfoW GetNamedSecurityInfo; - alias GetTrusteeFormW GetTrusteeForm; - alias GetTrusteeNameW GetTrusteeName; - alias GetTrusteeTypeW GetTrusteeType; - alias LookupSecurityDescriptorPartsW LookupSecurityDescriptorParts; - alias SetEntriesInAclW SetEntriesInAcl; - alias SetNamedSecurityInfoW SetNamedSecurityInfo; - alias BuildImpersonateExplicitAccessWithNameW - BuildImpersonateExplicitAccessWithName; - alias BuildImpersonateTrusteeW BuildImpersonateTrustee; - alias GetMultipleTrusteeW GetMultipleTrustee; - alias GetMultipleTrusteeOperationW GetMultipleTrusteeOperation; -} else { - alias BuildExplicitAccessWithNameA BuildExplicitAccessWithName; - alias BuildSecurityDescriptorA BuildSecurityDescriptor; - alias BuildTrusteeWithNameA BuildTrusteeWithName; - alias BuildTrusteeWithObjectsAndNameA BuildTrusteeWithObjectsAndName; - alias BuildTrusteeWithObjectsAndSidA BuildTrusteeWithObjectsAndSid; - alias BuildTrusteeWithSidA BuildTrusteeWithSid; - alias GetAuditedPermissionsFromAclA GetAuditedPermissionsFromAcl; - alias GetEffectiveRightsFromAclA GetEffectiveRightsFromAcl; - alias GetExplicitEntriesFromAclA GetExplicitEntriesFromAcl; - alias GetNamedSecurityInfoA GetNamedSecurityInfo; - alias GetTrusteeFormA GetTrusteeForm; - alias GetTrusteeNameA GetTrusteeName; - alias GetTrusteeTypeA GetTrusteeType; - alias LookupSecurityDescriptorPartsA LookupSecurityDescriptorParts; - alias SetEntriesInAclA SetEntriesInAcl; - alias SetNamedSecurityInfoA SetNamedSecurityInfo; - alias BuildImpersonateExplicitAccessWithNameA - BuildImpersonateExplicitAccessWithName; - alias BuildImpersonateTrusteeA BuildImpersonateTrustee; - alias GetMultipleTrusteeA GetMultipleTrustee; - alias GetMultipleTrusteeOperationA GetMultipleTrusteeOperation; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_aclapi.d) + */ +module core.sys.windows.aclapi; +pragma(lib, "advapi32"); + +import core.sys.windows.windows, core.sys.windows.accctrl; + +extern (Windows) { + VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD, + ACCESS_MODE, DWORD); + VOID BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, DWORD, + ACCESS_MODE, DWORD); + DWORD BuildSecurityDescriptorA(PTRUSTEE_A, PTRUSTEE_A , ULONG, + PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR, + PULONG, PSECURITY_DESCRIPTOR*); + DWORD BuildSecurityDescriptorW(PTRUSTEE_W, PTRUSTEE_W , ULONG, + PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR, + PULONG, PSECURITY_DESCRIPTOR*); + VOID BuildTrusteeWithNameA(PTRUSTEE_A, LPSTR); + VOID BuildTrusteeWithNameW(PTRUSTEE_W, LPWSTR); + VOID BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A, POBJECTS_AND_NAME_A, + SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR); + VOID BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W, POBJECTS_AND_NAME_W, + SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR); + VOID BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A, POBJECTS_AND_SID, + GUID*, GUID*, PSID); + VOID BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W, POBJECTS_AND_SID, + GUID*, GUID*, PSID); + VOID BuildTrusteeWithSidA(PTRUSTEE_A, PSID); + VOID BuildTrusteeWithSidW(PTRUSTEE_W, PSID); + DWORD GetAuditedPermissionsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK, + PACCESS_MASK); + DWORD GetAuditedPermissionsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK, + PACCESS_MASK); + DWORD GetEffectiveRightsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK); + DWORD GetEffectiveRightsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK); + DWORD GetExplicitEntriesFromAclA(PACL, PULONG, PEXPLICIT_ACCESS_A*); + DWORD GetExplicitEntriesFromAclW(PACL, PULONG, PEXPLICIT_ACCESS_W*); + static if (_WIN32_WINNT >= 0x501) { + DWORD GetInheritanceSourceA(LPSTR, SE_OBJECT_TYPE, + SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, + PGENERIC_MAPPING, PINHERITED_FROMA); + DWORD GetInheritanceSourceW(LPWSTR, SE_OBJECT_TYPE, + SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, + PGENERIC_MAPPING, PINHERITED_FROMW); + } + DWORD GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + DWORD GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + DWORD GetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + TRUSTEE_FORM GetTrusteeFormA(PTRUSTEE_A); + TRUSTEE_FORM GetTrusteeFormW(PTRUSTEE_W); + LPSTR GetTrusteeNameA(PTRUSTEE_A); + LPWSTR GetTrusteeNameW(PTRUSTEE_W); + TRUSTEE_TYPE GetTrusteeTypeA(PTRUSTEE_A); + TRUSTEE_TYPE GetTrusteeTypeW(PTRUSTEE_W); + DWORD LookupSecurityDescriptorPartsA(PTRUSTEE_A*, PTRUSTEE_A*, PULONG, + PEXPLICIT_ACCESS_A*, PULONG, PEXPLICIT_ACCESS_A*, + PSECURITY_DESCRIPTOR); + DWORD LookupSecurityDescriptorPartsW(PTRUSTEE_W*, PTRUSTEE_W*, PULONG, + PEXPLICIT_ACCESS_W*, PULONG, PEXPLICIT_ACCESS_W*, + PSECURITY_DESCRIPTOR); + DWORD SetEntriesInAclA(ULONG, PEXPLICIT_ACCESS_A, PACL, PACL*); + DWORD SetEntriesInAclW(ULONG, PEXPLICIT_ACCESS_W, PACL, PACL*); + DWORD SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID, PSID, PACL, PACL); + DWORD SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID, PSID, PACL, PACL); + DWORD SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID, + PSID, PACL, PACL); + VOID BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, + PTRUSTEE_A, DWORD, ACCESS_MODE, DWORD); + VOID BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, + PTRUSTEE_W, DWORD, ACCESS_MODE, DWORD); + VOID BuildImpersonateTrusteeA(PTRUSTEE_A, PTRUSTEE_A); + VOID BuildImpersonateTrusteeW(PTRUSTEE_W, PTRUSTEE_W); + PTRUSTEE_A GetMultipleTrusteeA(PTRUSTEE_A); + PTRUSTEE_W GetMultipleTrusteeW(PTRUSTEE_W); + MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationA(PTRUSTEE_A); + MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationW(PTRUSTEE_W); +} + +version (Unicode) { + alias BuildExplicitAccessWithNameW BuildExplicitAccessWithName; + alias BuildSecurityDescriptorW BuildSecurityDescriptor; + alias BuildTrusteeWithNameW BuildTrusteeWithName; + alias BuildTrusteeWithObjectsAndNameW BuildTrusteeWithObjectsAndName; + alias BuildTrusteeWithObjectsAndSidW BuildTrusteeWithObjectsAndSid; + alias BuildTrusteeWithSidW BuildTrusteeWithSid; + alias GetAuditedPermissionsFromAclW GetAuditedPermissionsFromAcl; + alias GetEffectiveRightsFromAclW GetEffectiveRightsFromAcl; + alias GetExplicitEntriesFromAclW GetExplicitEntriesFromAcl; + alias GetNamedSecurityInfoW GetNamedSecurityInfo; + alias GetTrusteeFormW GetTrusteeForm; + alias GetTrusteeNameW GetTrusteeName; + alias GetTrusteeTypeW GetTrusteeType; + alias LookupSecurityDescriptorPartsW LookupSecurityDescriptorParts; + alias SetEntriesInAclW SetEntriesInAcl; + alias SetNamedSecurityInfoW SetNamedSecurityInfo; + alias BuildImpersonateExplicitAccessWithNameW + BuildImpersonateExplicitAccessWithName; + alias BuildImpersonateTrusteeW BuildImpersonateTrustee; + alias GetMultipleTrusteeW GetMultipleTrustee; + alias GetMultipleTrusteeOperationW GetMultipleTrusteeOperation; +} else { + alias BuildExplicitAccessWithNameA BuildExplicitAccessWithName; + alias BuildSecurityDescriptorA BuildSecurityDescriptor; + alias BuildTrusteeWithNameA BuildTrusteeWithName; + alias BuildTrusteeWithObjectsAndNameA BuildTrusteeWithObjectsAndName; + alias BuildTrusteeWithObjectsAndSidA BuildTrusteeWithObjectsAndSid; + alias BuildTrusteeWithSidA BuildTrusteeWithSid; + alias GetAuditedPermissionsFromAclA GetAuditedPermissionsFromAcl; + alias GetEffectiveRightsFromAclA GetEffectiveRightsFromAcl; + alias GetExplicitEntriesFromAclA GetExplicitEntriesFromAcl; + alias GetNamedSecurityInfoA GetNamedSecurityInfo; + alias GetTrusteeFormA GetTrusteeForm; + alias GetTrusteeNameA GetTrusteeName; + alias GetTrusteeTypeA GetTrusteeType; + alias LookupSecurityDescriptorPartsA LookupSecurityDescriptorParts; + alias SetEntriesInAclA SetEntriesInAcl; + alias SetNamedSecurityInfoA SetNamedSecurityInfo; + alias BuildImpersonateExplicitAccessWithNameA + BuildImpersonateExplicitAccessWithName; + alias BuildImpersonateTrusteeA BuildImpersonateTrustee; + alias GetMultipleTrusteeA GetMultipleTrustee; + alias GetMultipleTrusteeOperationA GetMultipleTrusteeOperation; +} diff --git a/src/core/sys/windows/aclui.d b/src/core/sys/windows/aclui.d index aa3ae8c5cb..5839d2a403 100644 --- a/src/core/sys/windows/aclui.d +++ b/src/core/sys/windows/aclui.d @@ -1,119 +1,119 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_aclui.d) - */ -module core.sys.windows.aclui; -pragma(lib, "aclui"); - -private import core.sys.windows.w32api; -/* -static assert (_WIN32_WINNT >= 0x500, - "core.sys.windows.aclui is available only if version Windows2000, WindowsXP, Windows2003 " - "or WindowsVista is set"); -*/ -import core.sys.windows.accctrl, core.sys.windows.commctrl, core.sys.windows.objbase; -private import core.sys.windows.basetyps, core.sys.windows.prsht, core.sys.windows.unknwn, core.sys.windows.windef, - core.sys.windows.winuser; - - -struct SI_OBJECT_INFO { - DWORD dwFlags; - HINSTANCE hInstance; - LPWSTR pszServerName; - LPWSTR pszObjectName; - LPWSTR pszPageTitle; - GUID guidObjectType; -} -alias SI_OBJECT_INFO* PSI_OBJECT_INFO; - -// values for SI_OBJECT_INFO.dwFlags -const DWORD - SI_EDIT_PERMS = 0x00000000, - SI_EDIT_OWNER = 0x00000001, - SI_EDIT_AUDITS = 0x00000002, - SI_CONTAINER = 0x00000004, - SI_READONLY = 0x00000008, - SI_ADVANCED = 0x00000010, - SI_RESET = 0x00000020, - SI_OWNER_READONLY = 0x00000040, - SI_EDIT_PROPERTIES = 0x00000080, - SI_OWNER_RECURSE = 0x00000100, - SI_NO_ACL_PROTECT = 0x00000200, - SI_NO_TREE_APPLY = 0x00000400, - SI_PAGE_TITLE = 0x00000800, - SI_SERVER_IS_DC = 0x00001000, - SI_RESET_DACL_TREE = 0x00004000, - SI_RESET_SACL_TREE = 0x00008000, - SI_OBJECT_GUID = 0x00010000, - SI_EDIT_EFFECTIVE = 0x00020000, - SI_RESET_DACL = 0x00040000, - SI_RESET_SACL = 0x00080000, - SI_RESET_OWNER = 0x00100000, - SI_NO_ADDITIONAL_PERMISSION = 0x00200000, - SI_MAY_WRITE = 0x10000000, - SI_EDIT_ALL = SI_EDIT_PERMS | SI_EDIT_OWNER - | SI_EDIT_AUDITS; - -struct SI_ACCESS { - const(GUID)* pguid; - ACCESS_MASK mask; - LPCWSTR pszName; - DWORD dwFlags; -} -alias SI_ACCESS* PSI_ACCESS; - -// values for SI_ACCESS.dwFlags -const DWORD - SI_ACCESS_SPECIFIC = 0x00010000, - SI_ACCESS_GENERAL = 0x00020000, - SI_ACCESS_CONTAINER = 0x00040000, - SI_ACCESS_PROPERTY = 0x00080000; - - -struct SI_INHERIT_TYPE { - const(GUID)* pguid; - ULONG dwFlags; - LPCWSTR pszName; -} -alias SI_INHERIT_TYPE* PSI_INHERIT_TYPE; - -/* values for SI_INHERIT_TYPE.dwFlags - INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE - defined elsewhere */ - -enum SI_PAGE_TYPE { - SI_PAGE_PERM, - SI_PAGE_ADVPERM, - SI_PAGE_AUDIT, - SI_PAGE_OWNER -} - -const uint PSPCB_SI_INITDIALOG = WM_USER + 1; - -interface ISecurityInformation : IUnknown { - HRESULT GetObjectInformation(PSI_OBJECT_INFO); - HRESULT GetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR*, BOOL); - HRESULT SetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - HRESULT GetAccessRights(const(GUID)*, DWORD, PSI_ACCESS*, ULONG*, ULONG*); - HRESULT MapGeneric(const(GUID)*, UCHAR*, ACCESS_MASK*); - HRESULT GetInheritTypes(PSI_INHERIT_TYPE*, ULONG*); - HRESULT PropertySheetPageCallback(HWND, UINT, SI_PAGE_TYPE); -} -alias ISecurityInformation LPSECURITYINFO; - -/* Comment from MinGW - * TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo - */ - -// FIXME: linkage attribute? -extern (C) /+DECLSPEC_IMPORT+/ extern const IID IID_ISecurityInformation; - -extern (Windows) { - HPROPSHEETPAGE CreateSecurityPage(LPSECURITYINFO psi); - BOOL EditSecurity(HWND hwndOwner, LPSECURITYINFO psi); -} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_aclui.d) + */ +module core.sys.windows.aclui; +pragma(lib, "aclui"); + +private import core.sys.windows.w32api; +/* +static assert (_WIN32_WINNT >= 0x500, + "core.sys.windows.aclui is available only if version Windows2000, WindowsXP, Windows2003 " + "or WindowsVista is set"); +*/ +import core.sys.windows.accctrl, core.sys.windows.commctrl, core.sys.windows.objbase; +private import core.sys.windows.basetyps, core.sys.windows.prsht, core.sys.windows.unknwn, core.sys.windows.windef, + core.sys.windows.winuser; + + +struct SI_OBJECT_INFO { + DWORD dwFlags; + HINSTANCE hInstance; + LPWSTR pszServerName; + LPWSTR pszObjectName; + LPWSTR pszPageTitle; + GUID guidObjectType; +} +alias SI_OBJECT_INFO* PSI_OBJECT_INFO; + +// values for SI_OBJECT_INFO.dwFlags +const DWORD + SI_EDIT_PERMS = 0x00000000, + SI_EDIT_OWNER = 0x00000001, + SI_EDIT_AUDITS = 0x00000002, + SI_CONTAINER = 0x00000004, + SI_READONLY = 0x00000008, + SI_ADVANCED = 0x00000010, + SI_RESET = 0x00000020, + SI_OWNER_READONLY = 0x00000040, + SI_EDIT_PROPERTIES = 0x00000080, + SI_OWNER_RECURSE = 0x00000100, + SI_NO_ACL_PROTECT = 0x00000200, + SI_NO_TREE_APPLY = 0x00000400, + SI_PAGE_TITLE = 0x00000800, + SI_SERVER_IS_DC = 0x00001000, + SI_RESET_DACL_TREE = 0x00004000, + SI_RESET_SACL_TREE = 0x00008000, + SI_OBJECT_GUID = 0x00010000, + SI_EDIT_EFFECTIVE = 0x00020000, + SI_RESET_DACL = 0x00040000, + SI_RESET_SACL = 0x00080000, + SI_RESET_OWNER = 0x00100000, + SI_NO_ADDITIONAL_PERMISSION = 0x00200000, + SI_MAY_WRITE = 0x10000000, + SI_EDIT_ALL = SI_EDIT_PERMS | SI_EDIT_OWNER + | SI_EDIT_AUDITS; + +struct SI_ACCESS { + const(GUID)* pguid; + ACCESS_MASK mask; + LPCWSTR pszName; + DWORD dwFlags; +} +alias SI_ACCESS* PSI_ACCESS; + +// values for SI_ACCESS.dwFlags +const DWORD + SI_ACCESS_SPECIFIC = 0x00010000, + SI_ACCESS_GENERAL = 0x00020000, + SI_ACCESS_CONTAINER = 0x00040000, + SI_ACCESS_PROPERTY = 0x00080000; + + +struct SI_INHERIT_TYPE { + const(GUID)* pguid; + ULONG dwFlags; + LPCWSTR pszName; +} +alias SI_INHERIT_TYPE* PSI_INHERIT_TYPE; + +/* values for SI_INHERIT_TYPE.dwFlags + INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE + defined elsewhere */ + +enum SI_PAGE_TYPE { + SI_PAGE_PERM, + SI_PAGE_ADVPERM, + SI_PAGE_AUDIT, + SI_PAGE_OWNER +} + +const uint PSPCB_SI_INITDIALOG = WM_USER + 1; + +interface ISecurityInformation : IUnknown { + HRESULT GetObjectInformation(PSI_OBJECT_INFO); + HRESULT GetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR*, BOOL); + HRESULT SetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + HRESULT GetAccessRights(const(GUID)*, DWORD, PSI_ACCESS*, ULONG*, ULONG*); + HRESULT MapGeneric(const(GUID)*, UCHAR*, ACCESS_MASK*); + HRESULT GetInheritTypes(PSI_INHERIT_TYPE*, ULONG*); + HRESULT PropertySheetPageCallback(HWND, UINT, SI_PAGE_TYPE); +} +alias ISecurityInformation LPSECURITYINFO; + +/* Comment from MinGW + * TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo + */ + +// FIXME: linkage attribute? +extern (C) /+DECLSPEC_IMPORT+/ extern const IID IID_ISecurityInformation; + +extern (Windows) { + HPROPSHEETPAGE CreateSecurityPage(LPSECURITYINFO psi); + BOOL EditSecurity(HWND hwndOwner, LPSECURITYINFO psi); +} diff --git a/src/core/sys/windows/basetsd.d b/src/core/sys/windows/basetsd.d index e11d5d895b..67f50b7875 100644 --- a/src/core/sys/windows/basetsd.d +++ b/src/core/sys/windows/basetsd.d @@ -1,158 +1,158 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.12 - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_basetsd.d) - */ -module core.sys.windows.basetsd; - -/* This template is used in these modules to declare constant pointer types, - * in order to support both D 1.x and 2.x. - * Since removed - now supporting only D2 - */ -/*template CPtr(T) { - version (D_Version2) { - // must use mixin so that it doesn't cause a syntax error under D1 - mixin("alias const(T)* CPtr;"); - } else { - alias T* CPtr; - } -}*/ - -/* [CyberShadow VP 2011.12.22] typedef is now deprecated in D2. - */ -template TypeDef(T) { - version (D_Version2) { - alias T TypeDef; - } else { - // must use mixin so that it doesn't cause a deprecation error under D2 - mixin("typedef T TypeDef;"); - } -} - -// [SnakE 2009-02-23] Moved HANDLE definition here from winnt.d to avoid -// 'forwatd template reference' to CPtr from winnt.d caused by a circular -// import. - -alias TypeDef!(void*) HANDLE; -/+struct HANDLE { - const(void)* h; - alias h this; -}+/ - -package template DECLARE_HANDLE(string name, base = HANDLE) { - mixin ("alias " ~ base.stringof ~ " " ~ name ~ ";"); -} -alias HANDLE* PHANDLE, LPHANDLE; - -version (Win64) { - alias long __int3264; - const ulong ADDRESS_TAG_BIT = 0x40000000000; - - alias long INT_PTR, LONG_PTR; - alias long* PINT_PTR, PLONG_PTR; - alias ulong UINT_PTR, ULONG_PTR, HANDLE_PTR; - alias ulong* PUINT_PTR, PULONG_PTR; - alias int HALF_PTR; - alias int* PHALF_PTR; - alias uint UHALF_PTR; - alias uint* PUHALF_PTR; - - uint HandleToULong(void* h) { return(cast(uint) cast(ULONG_PTR) h); } - int HandleToLong(void* h) { return(cast(int) cast(LONG_PTR) h); } - void* ULongToHandle(uint h) { return(cast(void*) cast(UINT_PTR) h); } - void* LongToHandle(int h) { return(cast(void*) cast(INT_PTR) h); } - uint PtrToUlong(void* p) { return(cast(uint) cast(ULONG_PTR) p); } - uint PtrToUint(void* p) { return(cast(uint) cast(UINT_PTR) p); } - ushort PtrToUshort(void* p) { return(cast(ushort) cast(uint) cast(ULONG_PTR) p); } - int PtrToLong(void* p) { return(cast(int) cast(LONG_PTR) p); } - int PtrToInt(void* p) { return(cast(int) cast(INT_PTR) p); } - short PtrToShort(void* p) { return(cast(short) cast(int) cast(LONG_PTR) p); } - void* IntToPtr(int i) { return(cast(void*) cast(INT_PTR) i); } - void* UIntToPtr(uint ui) { return(cast(void*) cast(UINT_PTR) ui); } - void* LongToPtr(int l) { return(cast(void*) cast(LONG_PTR) l); } - void* ULongToPtr(uint ul) { return(cast(void*) cast(ULONG_PTR) ul); } - -} else { - alias int __int3264; - const uint ADDRESS_TAG_BIT = 0x80000000; - - alias int INT_PTR, LONG_PTR; - alias int* PINT_PTR, PLONG_PTR; - alias uint UINT_PTR, ULONG_PTR, HANDLE_PTR; - alias uint* PUINT_PTR, PULONG_PTR; - alias short HALF_PTR; - alias short* PHALF_PTR; - alias ushort UHALF_PTR; - alias ushort* PUHALF_PTR; - - uint HandleToUlong(HANDLE h) { return cast(uint) h; } - int HandleToLong(HANDLE h) { return cast(int) h; } - HANDLE LongToHandle(LONG_PTR h) { return cast(HANDLE)h; } - uint PtrToUlong(const(void)* p) { return cast(uint) p; } - uint PtrToUint(const(void)* p) { return cast(uint) p; } - int PtrToInt(const(void)* p) { return cast(int) p; } - ushort PtrToUshort(const(void)* p) { return cast(ushort) p; } - short PtrToShort(const(void)* p) { return cast(short) p; } - void* IntToPtr(int i) { return cast(void*) i; } - void* UIntToPtr(uint ui) { return cast(void*) ui; } - alias IntToPtr LongToPtr; - alias UIntToPtr ULongToPtr; -} - -alias UIntToPtr UintToPtr, UlongToPtr; - -enum : UINT_PTR { - MAXUINT_PTR = UINT_PTR.max -} - -enum : INT_PTR { - MAXINT_PTR = INT_PTR.max, - MININT_PTR = INT_PTR.min -} - -enum : ULONG_PTR { - MAXULONG_PTR = ULONG_PTR.max -} - -enum : LONG_PTR { - MAXLONG_PTR = LONG_PTR.max, - MINLONG_PTR = LONG_PTR.min -} - -enum : UHALF_PTR { - MAXUHALF_PTR = UHALF_PTR.max -} - -enum : HALF_PTR { - MAXHALF_PTR = HALF_PTR.max, - MINHALF_PTR = HALF_PTR.min -} - -alias byte INT8; -alias byte* PINT8; -alias ubyte UINT8; -alias ubyte* PUINT8; - -alias short INT16; -alias short* PINT16; -alias ushort UINT16; -alias ushort* PUINT16; - -alias int LONG32, INT32; -alias int* PLONG32, PINT32; -alias uint ULONG32, DWORD32, UINT32; -alias uint* PULONG32, PDWORD32, PUINT32; - -alias ULONG_PTR SIZE_T, DWORD_PTR; -alias ULONG_PTR* PSIZE_T, PDWORD_PTR; -alias LONG_PTR SSIZE_T; -alias LONG_PTR* PSSIZE_T; - -alias long LONG64, INT64; -alias long* PLONG64, PINT64; -alias ulong ULONG64, DWORD64, UINT64; -alias ulong* PULONG64, PDWORD64, PUINT64; +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.12 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_basetsd.d) + */ +module core.sys.windows.basetsd; + +/* This template is used in these modules to declare constant pointer types, + * in order to support both D 1.x and 2.x. + * Since removed - now supporting only D2 + */ +/*template CPtr(T) { + version (D_Version2) { + // must use mixin so that it doesn't cause a syntax error under D1 + mixin("alias const(T)* CPtr;"); + } else { + alias T* CPtr; + } +}*/ + +/* [CyberShadow VP 2011.12.22] typedef is now deprecated in D2. + */ +template TypeDef(T) { + version (D_Version2) { + alias T TypeDef; + } else { + // must use mixin so that it doesn't cause a deprecation error under D2 + mixin("typedef T TypeDef;"); + } +} + +// [SnakE 2009-02-23] Moved HANDLE definition here from winnt.d to avoid +// 'forwatd template reference' to CPtr from winnt.d caused by a circular +// import. + +alias TypeDef!(void*) HANDLE; +/+struct HANDLE { + const(void)* h; + alias h this; +}+/ + +package template DECLARE_HANDLE(string name, base = HANDLE) { + mixin ("alias " ~ base.stringof ~ " " ~ name ~ ";"); +} +alias HANDLE* PHANDLE, LPHANDLE; + +version (Win64) { + alias long __int3264; + const ulong ADDRESS_TAG_BIT = 0x40000000000; + + alias long INT_PTR, LONG_PTR; + alias long* PINT_PTR, PLONG_PTR; + alias ulong UINT_PTR, ULONG_PTR, HANDLE_PTR; + alias ulong* PUINT_PTR, PULONG_PTR; + alias int HALF_PTR; + alias int* PHALF_PTR; + alias uint UHALF_PTR; + alias uint* PUHALF_PTR; + + uint HandleToULong(void* h) { return(cast(uint) cast(ULONG_PTR) h); } + int HandleToLong(void* h) { return(cast(int) cast(LONG_PTR) h); } + void* ULongToHandle(uint h) { return(cast(void*) cast(UINT_PTR) h); } + void* LongToHandle(int h) { return(cast(void*) cast(INT_PTR) h); } + uint PtrToUlong(void* p) { return(cast(uint) cast(ULONG_PTR) p); } + uint PtrToUint(void* p) { return(cast(uint) cast(UINT_PTR) p); } + ushort PtrToUshort(void* p) { return(cast(ushort) cast(uint) cast(ULONG_PTR) p); } + int PtrToLong(void* p) { return(cast(int) cast(LONG_PTR) p); } + int PtrToInt(void* p) { return(cast(int) cast(INT_PTR) p); } + short PtrToShort(void* p) { return(cast(short) cast(int) cast(LONG_PTR) p); } + void* IntToPtr(int i) { return(cast(void*) cast(INT_PTR) i); } + void* UIntToPtr(uint ui) { return(cast(void*) cast(UINT_PTR) ui); } + void* LongToPtr(int l) { return(cast(void*) cast(LONG_PTR) l); } + void* ULongToPtr(uint ul) { return(cast(void*) cast(ULONG_PTR) ul); } + +} else { + alias int __int3264; + const uint ADDRESS_TAG_BIT = 0x80000000; + + alias int INT_PTR, LONG_PTR; + alias int* PINT_PTR, PLONG_PTR; + alias uint UINT_PTR, ULONG_PTR, HANDLE_PTR; + alias uint* PUINT_PTR, PULONG_PTR; + alias short HALF_PTR; + alias short* PHALF_PTR; + alias ushort UHALF_PTR; + alias ushort* PUHALF_PTR; + + uint HandleToUlong(HANDLE h) { return cast(uint) h; } + int HandleToLong(HANDLE h) { return cast(int) h; } + HANDLE LongToHandle(LONG_PTR h) { return cast(HANDLE)h; } + uint PtrToUlong(const(void)* p) { return cast(uint) p; } + uint PtrToUint(const(void)* p) { return cast(uint) p; } + int PtrToInt(const(void)* p) { return cast(int) p; } + ushort PtrToUshort(const(void)* p) { return cast(ushort) p; } + short PtrToShort(const(void)* p) { return cast(short) p; } + void* IntToPtr(int i) { return cast(void*) i; } + void* UIntToPtr(uint ui) { return cast(void*) ui; } + alias IntToPtr LongToPtr; + alias UIntToPtr ULongToPtr; +} + +alias UIntToPtr UintToPtr, UlongToPtr; + +enum : UINT_PTR { + MAXUINT_PTR = UINT_PTR.max +} + +enum : INT_PTR { + MAXINT_PTR = INT_PTR.max, + MININT_PTR = INT_PTR.min +} + +enum : ULONG_PTR { + MAXULONG_PTR = ULONG_PTR.max +} + +enum : LONG_PTR { + MAXLONG_PTR = LONG_PTR.max, + MINLONG_PTR = LONG_PTR.min +} + +enum : UHALF_PTR { + MAXUHALF_PTR = UHALF_PTR.max +} + +enum : HALF_PTR { + MAXHALF_PTR = HALF_PTR.max, + MINHALF_PTR = HALF_PTR.min +} + +alias byte INT8; +alias byte* PINT8; +alias ubyte UINT8; +alias ubyte* PUINT8; + +alias short INT16; +alias short* PINT16; +alias ushort UINT16; +alias ushort* PUINT16; + +alias int LONG32, INT32; +alias int* PLONG32, PINT32; +alias uint ULONG32, DWORD32, UINT32; +alias uint* PULONG32, PDWORD32, PUINT32; + +alias ULONG_PTR SIZE_T, DWORD_PTR; +alias ULONG_PTR* PSIZE_T, PDWORD_PTR; +alias LONG_PTR SSIZE_T; +alias LONG_PTR* PSSIZE_T; + +alias long LONG64, INT64; +alias long* PLONG64, PINT64; +alias ulong ULONG64, DWORD64, UINT64; +alias ulong* PULONG64, PDWORD64, PUINT64; diff --git a/src/core/sys/windows/basetyps.d b/src/core/sys/windows/basetyps.d index 27c57eea5c..3c7f075930 100644 --- a/src/core/sys/windows/basetyps.d +++ b/src/core/sys/windows/basetyps.d @@ -1,23 +1,23 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_basetyps.d) - */ -module core.sys.windows.basetyps; - -private import core.sys.windows.windef, core.sys.windows.basetsd; - -align(1) struct GUID { // size is 16 - DWORD Data1; - WORD Data2; - WORD Data3; - BYTE[8] Data4; -} -alias GUID UUID, IID, CLSID, FMTID, uuid_t; -alias GUID* LPGUID, LPCLSID, LPIID; -alias const(GUID)* LPCGUID, REFGUID, REFIID, REFCLSID, REFFMTID; - -alias uint error_status_t, PROPID; +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_basetyps.d) + */ +module core.sys.windows.basetyps; + +private import core.sys.windows.windef, core.sys.windows.basetsd; + +align(1) struct GUID { // size is 16 + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE[8] Data4; +} +alias GUID UUID, IID, CLSID, FMTID, uuid_t; +alias GUID* LPGUID, LPCLSID, LPIID; +alias const(GUID)* LPCGUID, REFGUID, REFIID, REFCLSID, REFFMTID; + +alias uint error_status_t, PROPID; diff --git a/src/core/sys/windows/cderr.d b/src/core/sys/windows/cderr.d index 7b1153bb44..3912980493 100644 --- a/src/core/sys/windows/cderr.d +++ b/src/core/sys/windows/cderr.d @@ -1,49 +1,49 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_cderr.d) - */ -module core.sys.windows.cderr; - -enum { - CDERR_DIALOGFAILURE = 0xFFFF, - CDERR_GENERALCODES = 0x0000, - CDERR_STRUCTSIZE, - CDERR_INITIALIZATION, - CDERR_NOTEMPLATE, - CDERR_NOHINSTANCE, - CDERR_LOADSTRFAILURE, - CDERR_FINDRESFAILURE, - CDERR_LOADRESFAILURE, - CDERR_LOCKRESFAILURE, - CDERR_MEMALLOCFAILURE, - CDERR_MEMLOCKFAILURE, - CDERR_NOHOOK, - CDERR_REGISTERMSGFAIL, - PDERR_PRINTERCODES = 0x1000, - PDERR_SETUPFAILURE, - PDERR_PARSEFAILURE, - PDERR_RETDEFFAILURE, - PDERR_LOADDRVFAILURE, - PDERR_GETDEVMODEFAIL, - PDERR_INITFAILURE, - PDERR_NODEVICES, - PDERR_NODEFAULTPRN, - PDERR_DNDMMISMATCH, - PDERR_CREATEICFAILURE, - PDERR_PRINTERNOTFOUND, - PDERR_DEFAULTDIFFERENT, - CFERR_CHOOSEFONTCODES = 0x2000, - CFERR_NOFONTS, - CFERR_MAXLESSTHANMIN, - FNERR_FILENAMECODES = 0x3000, - FNERR_SUBCLASSFAILURE, - FNERR_INVALIDFILENAME, - FNERR_BUFFERTOOSMALL, - FRERR_FINDREPLACECODES = 0x4000, - FRERR_BUFFERLENGTHZERO, - CCERR_CHOOSECOLORCODES = 0x5000 -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_cderr.d) + */ +module core.sys.windows.cderr; + +enum { + CDERR_DIALOGFAILURE = 0xFFFF, + CDERR_GENERALCODES = 0x0000, + CDERR_STRUCTSIZE, + CDERR_INITIALIZATION, + CDERR_NOTEMPLATE, + CDERR_NOHINSTANCE, + CDERR_LOADSTRFAILURE, + CDERR_FINDRESFAILURE, + CDERR_LOADRESFAILURE, + CDERR_LOCKRESFAILURE, + CDERR_MEMALLOCFAILURE, + CDERR_MEMLOCKFAILURE, + CDERR_NOHOOK, + CDERR_REGISTERMSGFAIL, + PDERR_PRINTERCODES = 0x1000, + PDERR_SETUPFAILURE, + PDERR_PARSEFAILURE, + PDERR_RETDEFFAILURE, + PDERR_LOADDRVFAILURE, + PDERR_GETDEVMODEFAIL, + PDERR_INITFAILURE, + PDERR_NODEVICES, + PDERR_NODEFAULTPRN, + PDERR_DNDMMISMATCH, + PDERR_CREATEICFAILURE, + PDERR_PRINTERNOTFOUND, + PDERR_DEFAULTDIFFERENT, + CFERR_CHOOSEFONTCODES = 0x2000, + CFERR_NOFONTS, + CFERR_MAXLESSTHANMIN, + FNERR_FILENAMECODES = 0x3000, + FNERR_SUBCLASSFAILURE, + FNERR_INVALIDFILENAME, + FNERR_BUFFERTOOSMALL, + FRERR_FINDREPLACECODES = 0x4000, + FRERR_BUFFERLENGTHZERO, + CCERR_CHOOSECOLORCODES = 0x5000 +} diff --git a/src/core/sys/windows/cguid.d b/src/core/sys/windows/cguid.d index 62f3fd4236..e2007a6edd 100644 --- a/src/core/sys/windows/cguid.d +++ b/src/core/sys/windows/cguid.d @@ -1,12 +1,12 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_cguid.d) - */ -module core.sys.windows.cguid; - -private import core.sys.windows.basetyps; - +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_cguid.d) + */ +module core.sys.windows.cguid; + +private import core.sys.windows.basetyps; + diff --git a/src/core/sys/windows/comcat.d b/src/core/sys/windows/comcat.d index 1f08232d83..e1ea332f86 100644 --- a/src/core/sys/windows/comcat.d +++ b/src/core/sys/windows/comcat.d @@ -1,72 +1,72 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_comcat.d) - */ -module core.sys.windows.comcat; - -import core.sys.windows.windows, core.sys.windows.ole2; -private import core.sys.windows.basetyps, core.sys.windows.cguid, core.sys.windows.objbase, core.sys.windows.unknwn, - core.sys.windows.windef, core.sys.windows.wtypes; - -alias IEnumGUID LPENUMGUID; - -interface IEnumGUID : IUnknown { - HRESULT Next(ULONG, GUID*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMGUID*); -} - -alias GUID CATID; -alias REFGUID REFCATID; -alias GUID_NULL CATID_NULL; -alias IsEqualGUID IsEqualCATID; - -struct CATEGORYINFO { - CATID catid; - LCID lcid; - OLECHAR[128] szDescription; -} -alias CATEGORYINFO* LPCATEGORYINFO; - -alias IEnumGUID IEnumCATID; -alias LPENUMGUID LPENUMCATID; -alias IID_IEnumGUID IID_IEnumCATID; - -alias IEnumGUID IEnumCLSID; -alias LPENUMGUID LPENUMCLSID; -alias IID_IEnumGUID IID_IEnumCLSID; - -interface ICatInformation : IUnknown { - HRESULT EnumCategories(LCID, LPENUMCATEGORYINFO*); - HRESULT GetCategoryDesc(REFCATID, LCID, PWCHAR*); - HRESULT EnumClassesOfCategories(ULONG, CATID*, ULONG, CATID*, - LPENUMCLSID*); - HRESULT IsClassOfCategories(REFCLSID, ULONG, CATID*, ULONG, CATID*); - HRESULT EnumImplCategoriesOfClass(REFCLSID, LPENUMCATID*); - HRESULT EnumReqCategoriesOfClass(REFCLSID, LPENUMCATID*); -} -alias ICatInformation LPCATINFORMATION; - -interface ICatRegister : IUnknown { - HRESULT RegisterCategories(ULONG, CATEGORYINFO*); - HRESULT UnRegisterCategories(ULONG, CATID*); - HRESULT RegisterClassImplCategories(REFCLSID, ULONG, CATID*); - HRESULT UnRegisterClassImplCategories(REFCLSID, ULONG, CATID*); - HRESULT RegisterClassReqCategories(REFCLSID, ULONG, CATID*); - HRESULT UnRegisterClassReqCategories(REFCLSID, ULONG, CATID*); -} -alias ICatRegister LPCATREGISTER; - -interface IEnumCATEGORYINFO : IUnknown { - HRESULT Next(ULONG, CATEGORYINFO*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMCATEGORYINFO*); -} -alias IEnumCATEGORYINFO LPENUMCATEGORYINFO; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_comcat.d) + */ +module core.sys.windows.comcat; + +import core.sys.windows.windows, core.sys.windows.ole2; +private import core.sys.windows.basetyps, core.sys.windows.cguid, core.sys.windows.objbase, core.sys.windows.unknwn, + core.sys.windows.windef, core.sys.windows.wtypes; + +alias IEnumGUID LPENUMGUID; + +interface IEnumGUID : IUnknown { + HRESULT Next(ULONG, GUID*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMGUID*); +} + +alias GUID CATID; +alias REFGUID REFCATID; +alias GUID_NULL CATID_NULL; +alias IsEqualGUID IsEqualCATID; + +struct CATEGORYINFO { + CATID catid; + LCID lcid; + OLECHAR[128] szDescription; +} +alias CATEGORYINFO* LPCATEGORYINFO; + +alias IEnumGUID IEnumCATID; +alias LPENUMGUID LPENUMCATID; +alias IID_IEnumGUID IID_IEnumCATID; + +alias IEnumGUID IEnumCLSID; +alias LPENUMGUID LPENUMCLSID; +alias IID_IEnumGUID IID_IEnumCLSID; + +interface ICatInformation : IUnknown { + HRESULT EnumCategories(LCID, LPENUMCATEGORYINFO*); + HRESULT GetCategoryDesc(REFCATID, LCID, PWCHAR*); + HRESULT EnumClassesOfCategories(ULONG, CATID*, ULONG, CATID*, + LPENUMCLSID*); + HRESULT IsClassOfCategories(REFCLSID, ULONG, CATID*, ULONG, CATID*); + HRESULT EnumImplCategoriesOfClass(REFCLSID, LPENUMCATID*); + HRESULT EnumReqCategoriesOfClass(REFCLSID, LPENUMCATID*); +} +alias ICatInformation LPCATINFORMATION; + +interface ICatRegister : IUnknown { + HRESULT RegisterCategories(ULONG, CATEGORYINFO*); + HRESULT UnRegisterCategories(ULONG, CATID*); + HRESULT RegisterClassImplCategories(REFCLSID, ULONG, CATID*); + HRESULT UnRegisterClassImplCategories(REFCLSID, ULONG, CATID*); + HRESULT RegisterClassReqCategories(REFCLSID, ULONG, CATID*); + HRESULT UnRegisterClassReqCategories(REFCLSID, ULONG, CATID*); +} +alias ICatRegister LPCATREGISTER; + +interface IEnumCATEGORYINFO : IUnknown { + HRESULT Next(ULONG, CATEGORYINFO*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCATEGORYINFO*); +} +alias IEnumCATEGORYINFO LPENUMCATEGORYINFO; diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 730fa8616e..8cd69035f9 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -1,6279 +1,6279 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.12 - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_commctrl.d) - */ -module core.sys.windows.commctrl; -pragma(lib, "comctl32"); - -private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; -private import core.sys.windows.winbase; // for SYSTEMTIME -private import core.sys.windows.objfwd; // for LPSTREAM - -import core.sys.windows.prsht; - -const COMCTL32_VERSION = 6; - -const TCHAR[] - DRAGLISTMSGSTRING = "commctrl_DragListMsg", - HOTKEY_CLASS = "msctls_hotkey32", - PROGRESS_CLASS = "msctls_progress32", - STATUSCLASSNAME = "msctls_statusbar32", - TOOLBARCLASSNAME = "ToolbarWindow32", - TOOLTIPS_CLASS = "tooltips_class32", - TRACKBAR_CLASS = "msctls_trackbar32", - UPDOWN_CLASS = "msctls_updown32", - ANIMATE_CLASS = "SysAnimate32", - DATETIMEPICK_CLASS = "SysDateTimePick32", - MONTHCAL_CLASS = "SysMonthCal32", - REBARCLASSNAME = "ReBarWindow32", - WC_COMBOBOXEX = "ComboBoxEx32", - WC_IPADDRESS = "SysIPAddress32", - WC_LISTVIEW = "SysListView32", - WC_TABCONTROL = "SysTabControl32", - WC_TREEVIEW = "SysTreeView32", - WC_HEADER = "SysHeader32", - WC_PAGESCROLLER = "SysPager", - WC_NATIVEFONTCTL = "NativeFontCtl", - WC_BUTTON = "Button", - WC_STATIC = "Static", - WC_EDIT = "Edit", - WC_LISTBOX = "ListBox", - WC_COMBOBOX = "ComboBox", - WC_SCROLLBAR = "ScrollBar", - WC_LINKA = "SysLink"; - -enum { - LVM_FIRST = 0x1000, - TV_FIRST = 0x1100, - HDM_FIRST = 0x1200 -} - -enum { - ACM_OPENA = WM_USER + 100, - ACM_PLAY = WM_USER + 101, - ACM_STOP = WM_USER + 102, - ACM_OPENW = WM_USER + 103, - ACM_ISPLAYING = WM_USER + 104 -} - -enum { - ACN_START = 1, - ACN_STOP -} - -enum { - CBEIF_TEXT = 0x00000001, - CBEIF_IMAGE = 0x00000002, - CBEIF_SELECTEDIMAGE = 0x00000004, - CBEIF_OVERLAY = 0x00000008, - CBEIF_INDENT = 0x00000010, - CBEIF_LPARAM = 0x00000020, - CBEIF_DI_SETITEM = 0x10000000 -} - -enum { - RBN_FIRST = -831U, - RBN_LAST = -859U, - MCN_FIRST = -750U, - MCN_LAST = -759U, - DTN_FIRST = -760U, - DTN_LAST = -799U, - CBEN_FIRST = -800U, - CBEN_LAST = -830U -} - -enum { - CBEN_INSERTITEM = CBEN_FIRST - 1, - CBEN_DELETEITEM = CBEN_FIRST - 2, - CBEN_BEGINEDIT = CBEN_FIRST - 4, - CBEN_ENDEDITA = CBEN_FIRST - 5, - CBEN_ENDEDITW = CBEN_FIRST - 6 -} - -enum { - CBENF_KILLFOCUS = 1, - CBENF_RETURN, - CBENF_ESCAPE, - CBENF_DROPDOWN // = 4 -} - -const CBEMAXSTRLEN = 260; - -enum { - DL_BEGINDRAG = 1157, - DL_CANCELDRAG = 1160, - DL_DRAGGING = 1158, - DL_DROPPED = 1159, - DL_CURSORSET = 0, - DL_STOPCURSOR = 1, - DL_COPYCURSOR = 2, - DL_MOVECURSOR = 3 -} - -enum { - CCS_TOP = 1, - CCS_NOMOVEY = 2, - CCS_BOTTOM = 3, - CCS_NORESIZE = 4, - CCS_NOPARENTALIGN = 8, - CCS_ADJUSTABLE = 32, - CCS_NODIVIDER = 64 -} -static if (_WIN32_IE >= 0x300) { - enum { - CCS_VERT = 128, - CCS_LEFT = 129, - CCS_NOMOVEX = 130, - CCS_RIGHT = 131 - } -} - -enum { - ACS_CENTER = 0x0001, - ACS_TRANSPARENT = 0x0002, - ACS_AUTOPLAY = 0x0004, - ACS_TIMER = 0x0008 -} - -enum { - PGS_VERT = 0x00000000, - PGS_HORZ = 0x00000001, - PGS_AUTOSCROLL = 0x00000002, - PGS_DRAGNDROP = 0x00000004 -} - -const CMB_MASKED = 2; - -const MINSYSCOMMAND = SC_SIZE; - -enum { - SBT_OWNERDRAW = 0x1000, - SBT_NOBORDERS = 256, - SBT_POPOUT = 512, - SBT_RTLREADING = 1024 -} - -enum { - SB_SETTEXTA = WM_USER + 1, - SB_SETTEXTW = WM_USER + 11, - SB_GETTEXTA = WM_USER + 2, - SB_GETTEXTW = WM_USER + 13, - SB_GETTEXTLENGTHA = WM_USER + 3, - SB_GETTEXTLENGTHW = WM_USER + 12, - SB_SETPARTS = WM_USER + 4, - SB_GETPARTS = WM_USER + 6, - SB_GETBORDERS = WM_USER + 7, - SB_SETMINHEIGHT = WM_USER + 8, - SB_SIMPLE = WM_USER + 9, - SB_GETRECT = WM_USER + 10 -} - -enum { - MSGF_COMMCTRL_BEGINDRAG = 0x4200, - MSGF_COMMCTRL_SIZEHEADER = 0x4201, - MSGF_COMMCTRL_DRAGSELECT = 0x4202, - MSGF_COMMCTRL_TOOLBARCUST = 0x4203 -} - -enum { - ILC_COLOR = 0, - ILC_COLOR4 = 4, - ILC_COLOR8 = 8, - ILC_COLOR16 = 16, - ILC_COLOR24 = 24, - ILC_COLOR32 = 32, - ILC_COLORDDB = 254, - ILC_MASK = 1, - ILC_PALETTE = 2048 -} - -enum { - ILCF_MOVE, - ILCF_SWAP -} - -enum { - ILS_NORMAL = 0, - ILS_GLOW = 1, - ILS_SHADOW = 2, - ILS_SATURATE = 4, - ILS_ALPHA = 8, - ILD_BLEND25 = 2, - ILD_BLEND50 = 4, - ILD_SELECTED = 4, - ILD_BLEND = 4, - ILD_FOCUS = 2, - ILD_MASK = 16, - ILD_NORMAL = 0, - ILD_TRANSPARENT = 1, - ILD_IMAGE = 0x0020, - ILD_ROP = 0x0040, - ILD_OVERLAYMASK = 0x0F00, - ILD_PRESERVEALPHA = 0x1000, - ILD_SCALE = 0x2000, - ILD_DPISCALE = 0x4000 -} - -enum { - HDS_HORZ = 0, - HDS_BUTTONS = 2, - HDS_HIDDEN = 8 -} -static if (_WIN32_IE >= 0x400) { - enum { - HDS_HOTTRACK = 4, - HDS_DRAGDROP = 0x0040, - HDS_FULLDRAG = 0x0080 - } -} -static if (_WIN32_IE >= 0x500) { - enum { - HDS_FILTERBAR = 0x0100 - } -} - -enum { - NM_FIRST = 0, - NM_LAST = -99U, - LVN_FIRST = -100U, - LVN_LAST = -199U, - HDN_FIRST = -300U, - HDN_LAST = -399U, - TVN_FIRST = -400U, - TVN_LAST = -499U, - TTN_FIRST = -520U, - TTN_LAST = -549U, - TCN_FIRST = -550U, - TCN_LAST = -580U, - CDN_FIRST = -601U, /* also in commdlg.h */ - CDN_LAST = -699U, - TBN_FIRST = -700U, - TBN_LAST = -720U, - UDN_FIRST = -721U, - UDN_LAST = -740U -} -/*static if (_WIN32_IE >= 0x300) { - enum { - RBN_FIRST = -831U, - RBN_LAST = -859U, - MCN_FIRST = -750U, - MCN_LAST = -759U, - DTN_FIRST = -760U, - DTN_LAST = -799U, - CBEN_FIRST = -800U, - CBEN_LAST = -830U - } -}*/ -static if (_WIN32_IE >= 0x400) { - enum { - IPN_FIRST = -860U, - IPN_LAST = -879U, - IPN_FIELDCHANGED = IPN_FIRST, - SBN_FIRST = -880U, - SBN_LAST = -899U, - PGN_FIRST = -900U, - PGN_LAST = -950U, - PGN_SCROLL = PGN_FIRST-1, - PGN_CALCSIZE = PGN_FIRST-2 - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - WMN_FIRST = -1000U, - WMN_LAST = -1200U, - } -} - -static if (_WIN32_WINNT >= 0x501) -{ - enum { - BCN_FIRST = -1250U, - BCN_LAST = -1350U, - } -} - -static if (_WIN32_WINNT >= 0x600) -{ - enum { - TRBN_FIRST = -1501U, - TRBN_LAST = -1519U, - } -} - -enum { - HDI_WIDTH = 1, - HDI_HEIGHT = 1, - HDI_TEXT = 2, - HDI_FORMAT = 4, - HDI_LPARAM = 8, - HDI_BITMAP = 16 -} -static if (_WIN32_IE >= 0x300) { - enum { - HDI_IMAGE = 32, - HDI_DI_SETITEM = 64, - HDI_ORDER = 128 - } -} -static if (_WIN32_IE >= 0x500) { - enum { - HDI_FILTER = 256 - } -} - -enum { - CBES_EX_NOEDITIMAGE = 0x00000001, - CBES_EX_NOEDITIMAGEINDENT = 0x00000002, - CBES_EX_PATHWORDBREAKPROC = 0x00000004 -} -static if (_WIN32_IE >= 0x400) { - enum { - CBES_EX_NOSIZELIMIT = 0x00000008, - CBES_EX_CASESENSITIVE = 0x00000010, - CBEN_GETDISPINFOA = CBEN_FIRST - 0, - CBEN_GETDISPINFOW = CBEN_FIRST - 7, - CBEN_DRAGBEGINA = CBEN_FIRST - 8, - CBEN_DRAGBEGINW = CBEN_FIRST - 9 - } -} - -enum { - HDF_LEFT, - HDF_RIGHT, - HDF_CENTER, - HDF_JUSTIFYMASK, - HDF_RTLREADING, // = 4 - HDF_OWNERDRAW = 0x8000, - HDF_STRING = 0x4000, - HDF_BITMAP = 0x2000 -} -static if (_WIN32_IE >= 0x300) { - enum { - HDF_BITMAP_ON_RIGHT = 0x1000, - HDF_IMAGE = 0x0800 - } -} - -enum { - CCM_FIRST = 0x2000, - CCM_LAST = CCM_FIRST + 0x200, - CCM_SETBKCOLOR = 8193, - CCM_SETCOLORSCHEME = 8194, - CCM_GETCOLORSCHEME = 8195, - CCM_GETDROPTARGET = 8196, - CCM_SETUNICODEFORMAT = 8197, - CCM_GETUNICODEFORMAT = 8198, - CCM_SETVERSION = 0x2007, - CCM_GETVERSION = 0x2008, - CCM_SETNOTIFYWINDOW = 0x2009 -} - -enum { - HDM_GETITEMCOUNT = HDM_FIRST, - HDM_INSERTITEMA = HDM_FIRST + 1, - HDM_INSERTITEMW = HDM_FIRST + 10, - HDM_DELETEITEM = HDM_FIRST + 2, - HDM_GETITEMA = HDM_FIRST + 3, - HDM_GETITEMW = HDM_FIRST + 11, - HDM_SETITEMA = HDM_FIRST + 4, - HDM_SETITEMW = HDM_FIRST + 12, - HDM_LAYOUT = HDM_FIRST + 5 -} -static if (_WIN32_IE >= 0x300) { - enum { - HDM_GETITEMRECT = HDM_FIRST + 7, - HDM_SETIMAGELIST = HDM_FIRST + 8, - HDM_GETIMAGELIST = HDM_FIRST + 9, - HDM_ORDERTOINDEX = HDM_FIRST + 15, - HDM_CREATEDRAGIMAGE = HDM_FIRST + 16, - HDM_GETORDERARRAY = HDM_FIRST + 17, - HDM_SETORDERARRAY = HDM_FIRST + 18, - HDM_SETHOTDIVIDER = HDM_FIRST + 19 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, - HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT - } -} -static if (_WIN32_IE >= 0x500) { - enum { - HDM_SETBITMAPMARGIN = HDM_FIRST + 20, - HDM_GETBITMAPMARGIN = HDM_FIRST + 21, - HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST + 22, - HDM_EDITFILTER = HDM_FIRST + 23, - HDM_CLEARFILTER = HDM_FIRST + 24, - } -} -static if (_WIN32_IE >= 0x600) { - enum { - HDM_GETITEMDROPDOWNRECT = HDM_FIRST + 25, - HDM_GETOVERFLOWRECT = HDM_FIRST + 26, - HDM_GETFOCUSEDITEM = HDM_FIRST + 27, - HDM_SETFOCUSEDITEM = HDM_FIRST + 28, - } -} - -enum { - HHT_NOWHERE = 1, - HHT_ONHEADER = 2, - HHT_ONDIVIDER = 4, - HHT_ONDIVOPEN = 8, - HHT_ABOVE = 256, - HHT_BELOW = 512, - HHT_TORIGHT = 1024, - HHT_TOLEFT = 2048 -} - -enum { - HDM_HITTEST = HDM_FIRST + 6 -} - -enum { - HDN_ITEMCHANGINGA = HDN_FIRST -0, - HDN_ITEMCHANGINGW = HDN_FIRST -20, - HDN_ITEMCHANGEDA = HDN_FIRST -1, - HDN_ITEMCHANGEDW = HDN_FIRST -21, - HDN_ITEMCLICKA = HDN_FIRST -2, - HDN_ITEMCLICKW = HDN_FIRST -22, - HDN_ITEMDBLCLICKA = HDN_FIRST -3, - HDN_ITEMDBLCLICKW = HDN_FIRST -23, - HDN_DIVIDERDBLCLICKA = HDN_FIRST -5, - HDN_DIVIDERDBLCLICKW = HDN_FIRST -25, - HDN_BEGINTRACKA = HDN_FIRST -6, - HDN_BEGINTRACKW = HDN_FIRST -26, - HDN_ENDTRACKA = HDN_FIRST -7, - HDN_ENDTRACKW = HDN_FIRST -27, - HDN_TRACKA = HDN_FIRST -8, - HDN_TRACKW = HDN_FIRST -28 -} -static if (_WIN32_IE >= 0x300) { - enum { - HDN_ENDDRAG = (HDN_FIRST-11), - HDN_BEGINDRAG = (HDN_FIRST-10), - HDN_GETDISPINFOA = (HDN_FIRST-9), - HDN_GETDISPINFOW = (HDN_FIRST-29) - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - HICF_OTHER = 0x00, - HICF_MOUSE = 0x01, - HICF_ARROWKEYS = 0x02, - HICF_ACCELERATOR = 0x04, - HICF_DUPACCEL = 0x08, - HICF_ENTERING = 0x10, - HICF_LEAVING = 0x20, - HICF_RESELECT = 0x40, - HICF_LMOUSE = 0x80, - HICF_TOGGLEDROPDOWN = 0x100 - } -} - -enum { - IPM_CLEARADDRESS = WM_USER + 100, - IPM_SETADDRESS = WM_USER + 101, - IPM_GETADDRESS = WM_USER + 102, - IPM_SETRANGE = WM_USER + 103, - IPM_SETFOCUS = WM_USER + 104, - IPM_ISBLANK = WM_USER + 105 -} - -static if (_WIN32_IE >= 0x500) { - enum { - I_INDENTCALLBACK = -1, - I_IMAGENONE = -2 - } -} - -enum { - TBSTATE_CHECKED = 1, - TBSTATE_PRESSED = 2, - TBSTATE_ENABLED = 4, - TBSTATE_HIDDEN = 8, - TBSTATE_INDETERMINATE = 16, - TBSTATE_WRAP = 32 -} -static if (_WIN32_IE >= 0x300) { - enum { - TBSTATE_ELLIPSES = 0x40 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TBSTATE_MARKED = 0x0080 - } -} - -enum { - TBSTYLE_BUTTON = 0, - TBSTYLE_SEP = 1, - TBSTYLE_CHECK = 2, - TBSTYLE_GROUP = 4, - TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK -} -static if (_WIN32_IE >= 0x300) { - enum { - TBSTYLE_DROPDOWN = 8 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TBSTYLE_AUTOSIZE = 16, - TBSTYLE_NOPREFIX = 32 - } -} -enum { - TBSTYLE_TOOLTIPS = 256, - TBSTYLE_WRAPABLE = 512, - TBSTYLE_ALTDRAG = 1024 -} -static if (_WIN32_IE >= 0x300) { - enum { - TBSTYLE_FLAT = 2048, - TBSTYLE_LIST = 4096, - TBSTYLE_CUSTOMERASE = 8192 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TBSTYLE_REGISTERDROP = 0x4000, - TBSTYLE_TRANSPARENT = 0x8000, - TBSTYLE_EX_DRAWDDARROWS = 0x00000001 - } -} -static if (_WIN32_IE >= 0x501) { - enum { - TBSTYLE_EX_MIXEDBUTTONS = 8, - TBSTYLE_EX_HIDECLIPPEDBUTTONS = 16 - } -} -static if (_WIN32_WINNT >= 0x501) { - enum { - TBSTYLE_EX_DOUBLEBUFFER = 0x80 - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - BTNS_BUTTON = TBSTYLE_BUTTON, - BTNS_SEP = TBSTYLE_SEP, - BTNS_CHECK = TBSTYLE_CHECK, - BTNS_GROUP = TBSTYLE_GROUP, - BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP, - BTNS_DROPDOWN = TBSTYLE_DROPDOWN, - BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE, - BTNS_NOPREFIX = TBSTYLE_NOPREFIX, - BTNS_WHOLEDROPDOWN = 0x0080 - } -} -static if (_WIN32_IE >= 0x501) { - enum { - BTNS_SHOWTEXT = 0x0040 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - TBCDRF_NOEDGES = 0x10000, - TBCDRF_HILITEHOTTRACK = 0x20000, - TBCDRF_NOOFFSET = 0x40000, - TBCDRF_NOMARK = 0x80000, - TBCDRF_NOETCHEDEFFECT = 0x100000 - } -} - -const HINST_COMMCTRL = cast(HINSTANCE) (-1); - -enum { - IDB_STD_SMALL_COLOR, - IDB_STD_LARGE_COLOR, - IDB_VIEW_SMALL_COLOR = 4, - IDB_VIEW_LARGE_COLOR = 5 -} -static if (_WIN32_IE >= 0x300) { - enum { - IDB_HIST_SMALL_COLOR = 8, - IDB_HIST_LARGE_COLOR = 9 - } -} - -enum { - STD_CUT, - STD_COPY, - STD_PASTE, - STD_UNDO, - STD_REDOW, - STD_DELETE, - STD_FILENEW, - STD_FILEOPEN, - STD_FILESAVE, - STD_PRINTPRE, - STD_PROPERTIES, - STD_HELP, - STD_FIND, - STD_REPLACE, - STD_PRINT // = 14 -} - -enum { - VIEW_LARGEICONS, - VIEW_SMALLICONS, - VIEW_LIST, - VIEW_DETAILS, - VIEW_SORTNAME, - VIEW_SORTSIZE, - VIEW_SORTDATE, - VIEW_SORTTYPE, - VIEW_PARENTFOLDER, - VIEW_NETCONNECT, - VIEW_NETDISCONNECT, - VIEW_NEWFOLDER // = 11 -} - -enum { - TB_ENABLEBUTTON = WM_USER + 1, - TB_CHECKBUTTON, - TB_PRESSBUTTON, - TB_HIDEBUTTON, - TB_INDETERMINATE, // = WM_USER + 5, - TB_ISBUTTONENABLED = WM_USER + 9, - TB_ISBUTTONCHECKED, - TB_ISBUTTONPRESSED, - TB_ISBUTTONHIDDEN, - TB_ISBUTTONINDETERMINATE, // = WM_USER + 13, - TB_SETSTATE = WM_USER + 17, - TB_GETSTATE = WM_USER + 18, - TB_ADDBITMAP = WM_USER + 19, - TB_DELETEBUTTON = WM_USER + 22, - TB_GETBUTTON, - TB_BUTTONCOUNT, - TB_COMMANDTOINDEX, - TB_SAVERESTOREA, - TB_CUSTOMIZE, - TB_ADDSTRINGA, - TB_GETITEMRECT, - TB_BUTTONSTRUCTSIZE, - TB_SETBUTTONSIZE, - TB_SETBITMAPSIZE, - TB_AUTOSIZE, // = WM_USER + 33, - TB_GETTOOLTIPS = WM_USER + 35, - TB_SETTOOLTIPS = WM_USER + 36, - TB_SETPARENT = WM_USER + 37, - TB_SETROWS = WM_USER + 39, - TB_GETROWS, - TB_GETBITMAPFLAGS, - TB_SETCMDID, - TB_CHANGEBITMAP, - TB_GETBITMAP, - TB_GETBUTTONTEXTA, - TB_REPLACEBITMAP, // = WM_USER + 46, - TB_GETBUTTONSIZE = WM_USER + 58, - TB_SETBUTTONWIDTH = WM_USER + 59, - TB_GETBUTTONTEXTW = WM_USER + 75, - TB_SAVERESTOREW = WM_USER + 76, - TB_ADDSTRINGW = WM_USER + 77, -} -static if (_WIN32_IE >= 0x400) { - enum { - TB_MARKBUTTON = WM_USER + 6 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TB_ISBUTTONHIGHLIGHTED = WM_USER + 14 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TB_ADDBUTTONSA = WM_USER + 20, - TB_INSERTBUTTONA = WM_USER + 21 - } -} else { - enum { - TB_ADDBUTTONS = WM_USER + 20, - TB_INSERTBUTTON = WM_USER + 21 - } -} -static if (_WIN32_IE >= 0x300) { - enum { - TB_SETINDENT = WM_USER + 47, - TB_SETIMAGELIST, - TB_GETIMAGELIST, - TB_LOADIMAGES, - TB_GETRECT, - TB_SETHOTIMAGELIST, - TB_GETHOTIMAGELIST, - TB_SETDISABLEDIMAGELIST, - TB_GETDISABLEDIMAGELIST, - TB_SETSTYLE, - TB_GETSTYLE, - //TB_GETBUTTONSIZE, - //TB_SETBUTTONWIDTH, - TB_SETMAXTEXTROWS, - TB_GETTEXTROWS // = WM_USER + 61 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TB_GETOBJECT = WM_USER + 62, - TB_GETBUTTONINFOW, - TB_SETBUTTONINFOW, - TB_GETBUTTONINFOA, - TB_SETBUTTONINFOA, - TB_INSERTBUTTONW, - TB_ADDBUTTONSW, - TB_HITTEST, // = WM_USER + 69 - TB_SETEXTENDEDSTYLE = WM_USER + 84, - TB_GETEXTENDEDSTYLE = WM_USER + 85, - TB_SETDRAWTEXTFLAGS = WM_USER + 70, - TB_GETHOTITEM, - TB_SETHOTITEM, - TB_SETANCHORHIGHLIGHT, - TB_GETANCHORHIGHLIGHT, // = WM_USER + 74 - TB_MAPACCELERATORA = WM_USER + 78, - TB_GETINSERTMARK, - TB_SETINSERTMARK, - TB_INSERTMARKHITTEST, - TB_MOVEBUTTON, - TB_GETMAXSIZE, - //TB_SETEXTENDEDSTYLE, - //TB_GETEXTENDEDSTYLE, - TB_GETPADDING, - TB_SETPADDING, - TB_SETINSERTMARKCOLOR, - TB_GETINSERTMARKCOLOR, - TB_MAPACCELERATORW, - TB_GETSTRINGW, - TB_GETSTRINGA, // = WM_USER + 92 - TB_SETHOTITEM2 = WM_USER + 94, - TB_SETLISTGAP = WM_USER + 96, - TB_GETIMAGELISTCOUNT = WM_USER + 98, - TB_GETIDEALSIZE = WM_USER + 99, - //TB_TRANSLATEACCELERATOR = CCM_TRANSLATEACCELERATOR, - TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, - TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME, - TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - TB_GETMETRICS = WM_USER + 101, - TB_SETMETRICS = WM_USER + 102, - } -} - -static if (_WIN32_WINNT >= 0x600) { - enum { - TB_GETITEMDROPDOWNRECT = WM_USER + 103, - TB_SETPRESSEDIMAGELIST = WM_USER + 104, - TB_GETPRESSEDIMAGELIST = WM_USER + 105, - } -} - -const TBBF_LARGE = 1; - -enum { - TBN_GETBUTTONINFOA = TBN_FIRST -0, - TBN_BEGINDRAG = TBN_FIRST -1, - TBN_ENDDRAG = TBN_FIRST -2, - TBN_BEGINADJUST = TBN_FIRST -3, - TBN_ENDADJUST = TBN_FIRST -4, - TBN_RESET = TBN_FIRST -5, - TBN_QUERYINSERT = TBN_FIRST -6, - TBN_QUERYDELETE = TBN_FIRST -7, - TBN_TOOLBARCHANGE = TBN_FIRST -8, - TBN_CUSTHELP = TBN_FIRST -9 -} -static if (_WIN32_IE >= 0x300) { - enum { - TBN_DROPDOWN = TBN_FIRST - 10 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TBN_HOTITEMCHANGE = TBN_FIRST - 13, - TBN_DRAGOUT = TBN_FIRST - 14, - TBN_DELETINGBUTTON = TBN_FIRST - 15, - TBN_GETDISPINFOA = TBN_FIRST - 16, - TBN_GETDISPINFOW = TBN_FIRST - 17, - TBN_GETINFOTIPA = TBN_FIRST - 18, - TBN_GETINFOTIPW = TBN_FIRST - 19, - TBN_GETBUTTONINFOW = TBN_FIRST - 20 - } -} -static if (_WIN32_IE >= 0x500) { - enum { - TBN_RESTORE = TBN_FIRST - 21, - TBN_SAVE = TBN_FIRST - 22, - TBN_INITCUSTOMIZE = TBN_FIRST - 23 - } - - enum { - TBNRF_HIDEHELP = 1, - TBNRF_ENDCUSTOMIZE - } - - enum { - TBNF_IMAGE = 1, - TBNF_TEXT = 2, - TBNF_DI_SETITEM = 0x10000000 - } -} - -enum { - TTS_ALWAYSTIP = 1, - TTS_NOPREFIX -} -static if(_WIN32_IE >= 0x500) { - enum { - TTS_NOANIMATE = 0x10, - TTS_NOFADE = 0x20, - TTS_BALLOON = 0x40, - TTS_CLOSE = 0x80 - } -} - -enum { - TTF_IDISHWND = 1, - TTF_CENTERTIP = 2, - TTF_RTLREADING = 4, - TTF_SUBCLASS = 16 -} -static if (_WIN32_IE >= 0x300) { - enum { - TTF_TRACK = 0x0020, - TTF_ABSOLUTE = 0x0080, - TTF_TRANSPARENT = 0x0100, - TTF_DI_SETITEM = 0x8000 - } - - static if (_WIN32_IE >= 0x501) { - enum { - TTF_PARSELINKS = 0x1000 - } - } - - enum { - TBCD_TICS = 1, - TBCD_THUMB, - TBCD_CHANNEL // = 3 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - TBDDRET_DEFAULT, - TBDDRET_NODEFAULT, - TBDDRET_TREATPRESSED - } - - enum { - TBIMHT_AFTER = 1, - TBIMHT_BACKGROUND - } -} - -enum { - TTDT_AUTOMATIC, - TTDT_RESHOW, - TTDT_AUTOPOP, - TTDT_INITIAL -} - -enum { - TTM_ACTIVATE = WM_USER + 1, - TTM_SETDELAYTIME = WM_USER + 3, - TTM_ADDTOOLA, - TTM_DELTOOLA, - TTM_NEWTOOLRECTA, - TTM_RELAYEVENT, - TTM_GETTOOLINFOA, - TTM_SETTOOLINFOA, - TTM_HITTESTA, - TTM_GETTEXTA, - TTM_UPDATETIPTEXTA, - TTM_GETTOOLCOUNT, - TTM_ENUMTOOLSA, - TTM_GETCURRENTTOOLA, - TTM_WINDOWFROMPOINT, // = WM_USER + 16 - TTM_ADDTOOLW = WM_USER + 50, - TTM_DELTOOLW, - TTM_NEWTOOLRECTW, - TTM_GETTOOLINFOW, - TTM_SETTOOLINFOW, - TTM_HITTESTW, - TTM_GETTEXTW, - TTM_UPDATETIPTEXTW, - TTM_ENUMTOOLSW, - TTM_GETCURRENTTOOLW // = WM_USER + 59 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TTM_TRACKACTIVATE = WM_USER + 17, - TTM_TRACKPOSITION, - TTM_SETTIPBKCOLOR, - TTM_SETTIPTEXTCOLOR, - TTM_GETDELAYTIME, - TTM_GETTIPBKCOLOR, - TTM_GETTIPTEXTCOLOR, - TTM_SETMAXTIPWIDTH, - TTM_GETMAXTIPWIDTH, - TTM_SETMARGIN, - TTM_GETMARGIN, - TTM_POP // = WM_USER + 28 - } -} - -static if (_WIN32_IE >= 0x400) { // IE4.0 ??? - enum { - TTM_UPDATE = WM_USER + 29, - TTM_GETBUBBLESIZE, - TTM_ADJUSTRECT, - TTM_SETTITLEA, - TTM_SETTITLEW // = WM_USER + 33 - } - static if (_WIN32_IE >= 0x500) { - alias TTM_SETTITLEW TTM_SETTITLE; - } else { - alias TTM_SETTITLEA TTM_SETTITLE; - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - TTM_POPUP = (WM_USER + 34), - TTM_GETTITLE = (WM_USER + 35), - } -} - -enum { - TTN_GETDISPINFOA = TTN_FIRST - 0, - TTN_GETDISPINFOW = TTN_FIRST - 10, - TTN_NEEDTEXTA = TTN_GETDISPINFOA, - TTN_NEEDTEXTW = TTN_GETDISPINFOW, - TTN_SHOW = TTN_FIRST-1, - TTN_POP = TTN_FIRST-2 -} - -const UD_MAXVAL = 0x7fff; -const UD_MINVAL = -UD_MAXVAL; - -enum { - UDN_DELTAPOS = UDN_FIRST-1, - UDS_WRAP = 1, - UDS_SETBUDDYINT = 2, - UDS_ALIGNRIGHT = 4, - UDS_ALIGNLEFT = 8, - UDS_AUTOBUDDY = 16, - UDS_ARROWKEYS = 32, - UDS_HORZ = 64, - UDS_NOTHOUSANDS = 128 -} - -static if (_WIN32_IE >= 0x300) { - enum { - UDS_HOTTRACK = 0x0100 - } -} - -enum { - UDM_SETRANGE = WM_USER + 101, - UDM_GETRANGE, - UDM_SETPOS, - UDM_GETPOS, - UDM_SETBUDDY, - UDM_GETBUDDY, - UDM_SETACCEL, - UDM_GETACCEL, - UDM_SETBASE, - UDM_GETBASE // = WM_USER + 110 -} - -static if (_WIN32_IE >= 0x400) { - enum { - UDM_SETRANGE32 = WM_USER + 111, - UDM_GETRANGE32, - UDM_SETPOS32, - UDM_GETPOS32 // = WM_USER + 114 - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -/*enum { - SB_SETTEXTA = WM_USER + 1, - SB_GETTEXTA, - SB_GETTEXTLENGTHA, - SB_SETPARTS, // = WM_USER + 4 - SB_GETPARTS = WM_USER + 6, - SB_GETBORDERS, - SB_SETMINHEIGHT, - SB_SIMPLE, - SB_GETRECT, - SB_SETTEXTW, - SB_GETTEXTLENGTHW, - SB_GETTEXTW // = WM_USER + 13 -}*/ - -/*enum { - SBT_OWNERDRAW = 0x1000, - SBT_NOBORDERS = 256, - SBT_POPOUT = 512, - SBT_RTLREADING = 1024 -}*/ - -static if(_WIN32_IE >= 0x400) { - enum { - SBT_TOOLTIPS = 0x0800, - SBN_SIMPLEMODECHANGE = SBN_FIRST - } -} - -enum { - TBS_AUTOTICKS = 1, - TBS_VERT = 2, - TBS_HORZ = 0, - TBS_TOP = 4, - TBS_BOTTOM = 0, - TBS_LEFT = 4, - TBS_RIGHT = 0, - TBS_BOTH = 8, - TBS_NOTICKS = 16, - TBS_ENABLESELRANGE = 32, - TBS_FIXEDLENGTH = 64, - TBS_NOTHUMB = 128 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TBS_TOOLTIPS = 0x0100, - TBTS_TOP = 0, - TBTS_LEFT, - TBTS_BOTTOM, - TBTS_RIGHT // = 3 - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - TBS_REVERSED = 0x0200 - } -} - -static if (_WIN32_IE >= 0x501) { - enum { - TBS_DOWNISLEFT = 0x0400 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - TBIF_BYINDEX = 0x80000000, - TBIF_COMMAND = 32, - TBIF_IMAGE = 1, - TBIF_LPARAM = 16, - TBIF_SIZE = 64, - TBIF_STATE = 4, - TBIF_STYLE = 8, - TBIF_TEXT = 2 - } -} - -enum { - TBM_GETPOS = WM_USER, - TBM_GETRANGEMIN, - TBM_GETRANGEMAX, - TBM_GETTIC, - TBM_SETTIC, - TBM_SETPOS, - TBM_SETRANGE, - TBM_SETRANGEMIN, - TBM_SETRANGEMAX, - TBM_CLEARTICS, - TBM_SETSEL, - TBM_SETSELSTART, - TBM_SETSELEND, // = WM_USER+12, - TBM_GETPTICS = WM_USER+14, - TBM_GETTICPOS, - TBM_GETNUMTICS, - TBM_GETSELSTART, - TBM_GETSELEND, - TBM_CLEARSEL, - TBM_SETTICFREQ, - TBM_SETPAGESIZE, - TBM_GETPAGESIZE, - TBM_SETLINESIZE, - TBM_GETLINESIZE, - TBM_GETTHUMBRECT, - TBM_GETCHANNELRECT, - TBM_SETTHUMBLENGTH, - TBM_GETTHUMBLENGTH, - TBM_SETTOOLTIPS, - TBM_GETTOOLTIPS, - TBM_SETTIPSIDE, - TBM_SETBUDDY, - TBM_GETBUDDY, // = WM_USER+33, - TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, - TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT -} - -enum { - TB_LINEUP, - TB_LINEDOWN, - TB_PAGEUP, - TB_PAGEDOWN, - TB_THUMBPOSITION, - TB_THUMBTRACK, - TB_TOP, - TB_BOTTOM, - TB_ENDTRACK // = 8 -} - -enum { - HOTKEYF_SHIFT = 1, - HOTKEYF_CONTROL = 2, - HOTKEYF_ALT = 4, - HOTKEYF_EXT = 8 -} - -enum { - HKCOMB_NONE = 1, - HKCOMB_S = 2, - HKCOMB_C = 4, - HKCOMB_A = 8, - HKCOMB_SC = 16, - HKCOMB_SA = 32, - HKCOMB_CA = 64, - HKCOMB_SCA = 128 -} - -enum { - HKM_SETHOTKEY = WM_USER + 1, - HKM_GETHOTKEY = WM_USER + 2, - HKM_SETRULES = WM_USER + 3 -} - -enum { - PBM_SETRANGE = WM_USER + 1, - PBM_SETPOS, - PBM_DELTAPOS, - PBM_SETSTEP, - PBM_STEPIT, // = WM_USER + 5 - PBM_SETRANGE32 = 1030, - PBM_GETRANGE, - PBM_GETPOS, - PBM_SETBARCOLOR, // = 1033 - PBM_SETBKCOLOR = CCM_SETBKCOLOR -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - PBM_SETMARQUEE = WM_USER + 10, - } -} - -static if (_WIN32_WINNT >= 0x600) { - enum { - PBM_GETSTEP = WM_USER + 13, - PBM_GETBKCOLOR, - PBM_GETBARCOLOR, - PBM_SETSTATE, - PBM_GETSTATE, - } -} - -enum { - PBS_SMOOTH = 1, - PBS_VERTICAL = 4 -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - PBS_MARQUEE = 8, - } -} - -static if (_WIN32_WINNT >= 0x600) { - enum { - PBS_SMOOTHREVERSE = 16, - } -} - -enum { - LVS_ICON, - LVS_REPORT, - LVS_SMALLICON, - LVS_LIST, // = 3 - LVS_TYPEMASK = 3, - LVS_SINGLESEL = 4, - LVS_SHOWSELALWAYS = 8, - LVS_SORTASCENDING = 16, - LVS_SORTDESCENDING = 32, - LVS_SHAREIMAGELISTS = 64, - LVS_NOLABELWRAP = 128, - LVS_AUTOARRANGE = 256, - LVS_EDITLABELS = 512, - LVS_NOSCROLL = 0x2000, - LVS_TYPESTYLEMASK = 0xFC00, - LVS_ALIGNTOP = 0, - LVS_ALIGNLEFT = 0x800, - LVS_ALIGNMASK = 0xC00, - LVS_OWNERDRAWFIXED = 0x400, - LVS_NOCOLUMNHEADER = 0x4000, - LVS_NOSORTHEADER = 0x8000 -} - -static if (_WIN32_IE >= 0x300) { - enum { - CDIS_CHECKED = 8, - CDIS_DEFAULT = 32, - CDIS_DISABLED = 4, - CDIS_FOCUS = 16, - CDIS_GRAYED = 2, - CDIS_HOT = 64, - CDIS_SELECTED = 1, - CDIS_MARKED = 128, - CDIS_INDETERMINATE = 256 - } - - static if (_WIN32_WINNT >= 0x501) { - enum { - CDIS_SHOWKEYBOARDCUES = 512 - } - } - - enum { - CDDS_POSTERASE = 4, - CDDS_POSTPAINT = 2, - CDDS_PREERASE = 3, - CDDS_PREPAINT = 1, - CDDS_ITEM = 65536, - CDDS_ITEMPOSTERASE = 65540, - CDDS_ITEMPOSTPAINT = 65538, - CDDS_ITEMPREERASE = 65539, - CDDS_ITEMPREPAINT = 65537 - } - - static if (_WIN32_IE >= 0x400) { - enum { - CDDS_SUBITEM = 0x20000 - } - } - - enum { - CDRF_DODEFAULT = 0x00, - CDRF_NOTIFYITEMDRAW = 0x20, - CDRF_NOTIFYSUBITEMDRAW = 0x20, - CDRF_NOTIFYITEMERASE = 0x80, - CDRF_NOTIFYPOSTERASE = 0x40, - CDRF_NOTIFYPOSTPAINT = 0x10, - CDRF_NEWFONT = 0x02, - CDRF_SKIPDEFAULT = 0x04 - } - - static if (_WIN32_IE >= 0x400) { - enum { - LVBKIF_SOURCE_NONE = 0x00000000, - LVBKIF_SOURCE_HBITMAP = 0x00000001, - LVBKIF_SOURCE_URL = 0x00000002, - LVBKIF_SOURCE_MASK = 0x00000003, - LVBKIF_STYLE_NORMAL = 0x00000000, - LVBKIF_STYLE_TILE = 0x00000010, - LVBKIF_STYLE_MASK = 0x00000010 - } - } - - static if (_WIN32_WINNT >= 0x501) { - enum { - LVBKIF_FLAG_TILEOFFSET = 0x00000100, - LVBKIF_TYPE_WATERMARK = 0x10000000 - } - } - - enum { - LVS_OWNERDATA = 4096 - } - - enum { - LVS_EX_CHECKBOXES = 4, - LVS_EX_FULLROWSELECT = 32, - LVS_EX_GRIDLINES = 1, - LVS_EX_HEADERDRAGDROP = 16, - LVS_EX_ONECLICKACTIVATE = 64, - LVS_EX_SUBITEMIMAGES = 2, - LVS_EX_TRACKSELECT = 8, - LVS_EX_TWOCLICKACTIVATE = 128 - } - - enum { - LVSICF_NOINVALIDATEALL = 0x00000001, - LVSICF_NOSCROLL = 0x00000002 - } - - static if(_WIN32_IE >= 0x400) { - enum { - LVS_EX_FLATSB = 0x00000100, - LVS_EX_REGIONAL = 0x00000200, - LVS_EX_INFOTIP = 0x00000400, - LVS_EX_UNDERLINEHOT = 0x00000800, - LVS_EX_UNDERLINECOLD = 0x00001000, - LVS_EX_MULTIWORKAREAS = 0x00002000 - } - } - - static if(_WIN32_IE >= 0x500) { - enum { - LVS_EX_LABELTIP = 0x00004000, - LVS_EX_BORDERSELECT = 0x00008000 - } - } -} - -enum { - LVSIL_NORMAL, - LVSIL_SMALL, - LVSIL_STATE -} - -enum { - LVM_GETBKCOLOR = LVM_FIRST, - LVM_SETBKCOLOR, - LVM_GETIMAGELIST, - LVM_SETIMAGELIST, - LVM_GETITEMCOUNT, // = LVM_FIRST + 4 - LVM_SORTITEMSEX = LVM_FIRST + 81, - LVM_GETGROUPSTATE = LVM_FIRST + 92, - LVM_GETFOCUSEDGROUP, - LVM_GETGROUPRECT = LVM_FIRST + 98, - LVM_SETVIEW = LVM_FIRST + 142, - LVM_GETVIEW, // = LVM_FIRST + 143 - LVM_INSERTGROUP = LVM_FIRST + 145, - LVM_SETGROUPINFO = LVM_FIRST + 147, - LVM_GETGROUPINFO = LVM_FIRST + 149, - LVM_REMOVEGROUP, - LVM_MOVEGROUP, // = LVM_FIRST + 151 - LVM_GETGROUPCOUNT, - LVM_GETGROUPINFOBYINDEX, - LVM_MOVEITEMTOGROUP, - LVM_SETGROUPMETRICS = LVM_FIRST + 155, - LVM_GETGROUPMETRICS, - LVM_ENABLEGROUPVIEW, - LVM_SORTGROUPS, - LVM_INSERTGROUPSORTED, - LVM_REMOVEALLGROUPS, - LVM_HASGROUP, - LVM_SETTILEVIEWINFO, - LVM_GETTILEVIEWINFO, - LVM_SETTILEINFO, - LVM_GETTILEINFO, - LVM_SETINSERTMARK, - LVM_GETINSERTMARK, - LVM_INSERTMARKHITTEST, - LVM_GETINSERTMARKRECT, - LVM_SETINSERTMARKCOLOR, - LVM_GETINSERTMARKCOLOR, // = LVM_FIRST + 171 - LVM_SETINFOTIP = LVM_FIRST + 173, - LVM_GETSELECTEDCOLUMN, - LVM_ISGROUPVIEWENABLED, - LVM_GETOUTLINECOLOR, - LVM_SETOUTLINECOLOR, // = LVM_FIRST + 177 - LVM_CANCELEDITLABEL = LVM_FIRST + 179, - LVM_MAPINDEXTOID = LVM_FIRST + 180, - LVM_MAPIDTOINDEX = LVM_FIRST + 181, - LVM_ISITEMVISIBLE = LVM_FIRST + 182, -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140 - } -} - -static if (_WIN32_WINNT >= 0x600) { - enum { - LVM_GETEMPTYTEXT = LVM_FIRST + 204, - LVM_GETFOOTERRECT = LVM_FIRST + 205, - LVM_GETFOOTERINFO = LVM_FIRST + 206, - LVM_GETFOOTERITEMRECT = LVM_FIRST + 207, - LVM_GETFOOTERITEM = (LVM_FIRST + 208), - LVM_GETITEMINDEXRECT = (LVM_FIRST + 209), - LVM_SETITEMINDEXSTATE = (LVM_FIRST + 210), - LVM_GETNEXTITEMINDEX = (LVM_FIRST + 211), - } -} - -enum { - LVIF_TEXT = 1, - LVIF_IMAGE = 2, - LVIF_PARAM = 4, - LVIF_STATE = 8 -} - -static if (_WIN32_IE >= 0x300) { - enum { - LVIF_INDENT = 16, - LVIF_NORECOMPUTE = 2048 - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - LVIF_GROUPID = 128, - LVIF_COLUMNS = 256 - } -} - -enum { - LVIS_FOCUSED = 1, - LVIS_SELECTED = 2, - LVIS_CUT = 4, - LVIS_DROPHILITED = 8, - LVIS_OVERLAYMASK = 0xF00, - LVIS_STATEIMAGEMASK = 0xF000 -} - -const LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR) -1; -const LPSTR LPSTR_TEXTCALLBACKA = cast(LPSTR) -1; - -const I_IMAGECALLBACK = -1; - -static if(_WIN32_IE >= 0x400) { - enum { - LVM_SETBKIMAGEA = LVM_FIRST + 68, - LVM_SETBKIMAGEW = LVM_FIRST + 138, - LVM_GETBKIMAGEA = LVM_FIRST + 69, - LVM_GETBKIMAGEW = LVM_FIRST + 139, - LV_MAX_WORKAREAS = 16, - LVM_SETWORKAREAS = LVM_FIRST + 65, - LVM_GETWORKAREAS = LVM_FIRST + 70, - LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73, - LVM_GETSELECTIONMARK = LVM_FIRST + 66, - LVM_SETSELECTIONMARK = LVM_FIRST + 67, - LVM_SETHOVERTIME = LVM_FIRST + 71, - LVM_GETHOVERTIME = LVM_FIRST + 72, - LVM_SETTOOLTIPS = LVM_FIRST + 74, - LVM_GETTOOLTIPS = LVM_FIRST + 78, - LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -enum { - LVNI_ALL, - LVNI_FOCUSED = 1, - LVNI_SELECTED = 2, - LVNI_CUT = 4, - LVNI_DROPHILITED = 8, - LVNI_ABOVE = 256, - LVNI_BELOW = 512, - LVNI_TOLEFT = 1024, - LVNI_TORIGHT = 2048 -} - -enum { - LVM_GETITEMA = LVM_FIRST + 5, - LVM_SETITEMA, - LVM_INSERTITEMA, - LVM_DELETEITEM, - LVM_DELETEALLITEMS, - LVM_GETCALLBACKMASK, - LVM_SETCALLBACKMASK, - LVM_GETNEXTITEM, - LVM_FINDITEMA, - LVM_GETITEMRECT, - LVM_SETITEMPOSITION, - LVM_GETITEMPOSITION, - LVM_GETSTRINGWIDTHA, - LVM_HITTEST, - LVM_ENSUREVISIBLE, - LVM_SCROLL, - LVM_REDRAWITEMS, - LVM_ARRANGE, - LVM_EDITLABELA, - LVM_GETEDITCONTROL, - LVM_GETCOLUMNA, - LVM_SETCOLUMNA, - LVM_INSERTCOLUMNA, - LVM_DELETECOLUMN, - LVM_GETCOLUMNWIDTH, - LVM_SETCOLUMNWIDTH, // = LVM_FIRST + 30, - LVM_CREATEDRAGIMAGE = LVM_FIRST + 33, - LVM_GETVIEWRECT, - LVM_GETTEXTCOLOR, - LVM_SETTEXTCOLOR, - LVM_GETTEXTBKCOLOR, - LVM_SETTEXTBKCOLOR, - LVM_GETTOPINDEX, - LVM_GETCOUNTPERPAGE, - LVM_GETORIGIN, - LVM_UPDATE, - LVM_SETITEMSTATE, - LVM_GETITEMSTATE, - LVM_GETITEMTEXTA, - LVM_SETITEMTEXTA, - LVM_SETITEMCOUNT, - LVM_SORTITEMS, - LVM_SETITEMPOSITION32, - LVM_GETSELECTEDCOUNT, - LVM_GETITEMSPACING, - LVM_GETISEARCHSTRINGA, // = LVM_FIRST + 52, - LVM_GETITEMW = LVM_FIRST + 75, - LVM_SETITEMW = LVM_FIRST + 76, - LVM_INSERTITEMW = LVM_FIRST + 77, - LVM_FINDITEMW = LVM_FIRST + 83, - LVM_GETSTRINGWIDTHW = LVM_FIRST + 87, - LVM_GETCOLUMNW = LVM_FIRST + 95, - LVM_SETCOLUMNW = LVM_FIRST + 96, - LVM_INSERTCOLUMNW = LVM_FIRST + 97, - LVM_GETITEMTEXTW = LVM_FIRST + 115, - LVM_SETITEMTEXTW, - LVM_GETISEARCHSTRINGW, - LVM_EDITLABELW // = LVM_FIRST + 118, -} - -static if (_WIN32_IE >= 0x300) { - enum { - LVM_GETHEADER = LVM_FIRST + 31, - LVM_SETICONSPACING = LVM_FIRST + 53, - LVM_SETEXTENDEDLISTVIEWSTYLE, - LVM_GETEXTENDEDLISTVIEWSTYLE, - LVM_GETSUBITEMRECT, - LVM_SUBITEMHITTEST, - LVM_SETCOLUMNORDERARRAY, - LVM_GETCOLUMNORDERARRAY, - LVM_SETHOTITEM, - LVM_GETHOTITEM, - LVM_SETHOTCURSOR, - LVM_GETHOTCURSOR, - LVM_APPROXIMATEVIEWRECT // = LVM_FIRST + 64, - } -} - -enum { - LVFI_PARAM = 1, - LVFI_STRING = 2, - LVFI_PARTIAL = 8, - LVFI_WRAP = 32, - LVFI_NEARESTXY = 64 -} - -enum { - LVIF_DI_SETITEM = 0x1000 -} - -enum { - LVIR_BOUNDS, - LVIR_ICON, - LVIR_LABEL, - LVIR_SELECTBOUNDS // = 3 -} - -enum { - LVHT_NOWHERE = 1, - LVHT_ONITEMICON = 2, - LVHT_ONITEMLABEL = 4, - LVHT_ONITEMSTATEICON = 8, - LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL - | LVHT_ONITEMSTATEICON, - LVHT_ABOVE = 8, - LVHT_BELOW = 16, - LVHT_TORIGHT = 32, - LVHT_TOLEFT = 64 -} - -enum { - LVA_DEFAULT = 0, - LVA_ALIGNLEFT = 1, - LVA_ALIGNTOP = 2, - LVA_SNAPTOGRID = 5 -} - -enum { - LVCF_FMT = 1, - LVCF_WIDTH = 2, - LVCF_TEXT = 4, - LVCF_SUBITEM = 8 -} - -static if (_WIN32_IE >= 0x300) { - enum { - LVCF_IMAGE = 16, - LVCF_ORDER = 32 - } -} - -enum { - LVCFMT_LEFT, - LVCFMT_RIGHT, - LVCFMT_CENTER, - LVCFMT_JUSTIFYMASK // = 3 -} - -static if (_WIN32_IE >= 0x300) { - enum { - LVCFMT_IMAGE = 2048, - LVCFMT_BITMAP_ON_RIGHT = 4096, - LVCFMT_COL_HAS_IMAGES = 32768 - } -} - -enum { - LVSCW_AUTOSIZE = -1, - LVSCW_AUTOSIZE_USEHEADER = -2 -} - -enum { - LVN_ITEMCHANGING = LVN_FIRST, - LVN_ITEMCHANGED = LVN_FIRST - 1, - LVN_INSERTITEM = LVN_FIRST - 2, - LVN_DELETEITEM = LVN_FIRST - 3, - LVN_DELETEALLITEMS = LVN_FIRST - 4, - LVN_BEGINLABELEDITA = LVN_FIRST - 5, - LVN_ENDLABELEDITA = LVN_FIRST - 6, - LVN_COLUMNCLICK = LVN_FIRST - 8, - LVN_BEGINDRAG = LVN_FIRST - 9, - LVN_BEGINRDRAG = LVN_FIRST - 11, - LVN_GETDISPINFOA = LVN_FIRST - 50, - LVN_SETDISPINFOA = LVN_FIRST - 51, - LVN_KEYDOWN = LVN_FIRST - 55, - LVN_BEGINLABELEDITW = LVN_FIRST - 75, - LVN_ENDLABELEDITW = LVN_FIRST - 76, - LVN_GETDISPINFOW = LVN_FIRST - 77, - LVN_SETDISPINFOW = LVN_FIRST - 78 -} - -static if (_WIN32_IE >= 0x400) { - enum { - LVN_MARQUEEBEGIN = LVN_FIRST - 56, - LVN_GETINFOTIPA = LVN_FIRST - 57, - LVN_GETINFOTIPW = LVN_FIRST - 58, - LVKF_ALT = 1, - LVKF_CONTROL = 2, - LVKF_SHIFT = 4, - LVGIT_UNFOLDED = 1 - } -} - -enum { - TVS_HASBUTTONS = 1, - TVS_HASLINES = 2, - TVS_LINESATROOT = 4, - TVS_EDITLABELS = 8, - TVS_DISABLEDRAGDROP = 16, - TVS_SHOWSELALWAYS = 32 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TVS_RTLREADING = 64, - TVS_NOTOOLTIPS = 128, - TVS_CHECKBOXES = 256, - TVS_TRACKSELECT = 512 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - TVS_SINGLEEXPAND = 1024, - TVS_INFOTIP = 2048, - TVS_FULLROWSELECT = 4096, - TVS_NOSCROLL = 8192, - TVS_NONEVENHEIGHT = 16384 - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - TVS_NOHSCROLL = 0x8000 - } -} - -enum { - TVIF_TEXT = 1, - TVIF_IMAGE = 2, - TVIF_PARAM = 4, - TVIF_STATE = 8, - TVIF_HANDLE = 16, - TVIF_SELECTEDIMAGE = 32, - TVIF_CHILDREN = 64 -} - -static if (_WIN32_IE >= 0x400) { - enum { - TVIF_INTEGRAL = 0x0080 - } -} - -enum { - TVIS_FOCUSED = 1, - TVIS_SELECTED = 2, - TVIS_CUT = 4, - TVIS_DROPHILITED = 8, - TVIS_BOLD = 16, - TVIS_EXPANDED = 32, - TVIS_EXPANDEDONCE = 64, - TVIS_OVERLAYMASK = 0xF00, - TVIS_STATEIMAGEMASK = 0xF000, - TVIS_USERMASK = 0xF000 -} - -enum { - I_CHILDRENCALLBACK = -1 -} - -mixin DECLARE_HANDLE!("HTREEITEM"); -mixin DECLARE_HANDLE!("HIMAGELIST"); - -version(Win64) -{ -const HTREEITEM - TVI_ROOT = cast(HTREEITEM) cast(ULONG_PTR)-0x10000, - TVI_FIRST = cast(HTREEITEM) cast(ULONG_PTR)-0xffff, - TVI_LAST = cast(HTREEITEM) cast(ULONG_PTR)-0xfffe, - TVI_SORT = cast(HTREEITEM) cast(ULONG_PTR)-0xfffd; -} else { -const HTREEITEM - TVI_ROOT = cast(HTREEITEM) 0xFFFF0000, - TVI_FIRST = cast(HTREEITEM) 0xFFFF0001, - TVI_LAST = cast(HTREEITEM) 0xFFFF0002, - TVI_SORT = cast(HTREEITEM) 0xFFFF0003; -} - -enum { - TVSIL_NORMAL = 0, - TVSIL_STATE = 2 -} - -enum { - TVM_INSERTITEMA = TV_FIRST, - TVM_DELETEITEM = TV_FIRST + 1, - TVM_EXPAND = TV_FIRST + 2, - TVM_GETITEMRECT = TV_FIRST + 4, - TVM_GETCOUNT, - TVM_GETINDENT, - TVM_SETINDENT, - TVM_GETIMAGELIST, - TVM_SETIMAGELIST, - TVM_GETNEXTITEM, - TVM_SELECTITEM, - TVM_GETITEMA, - TVM_SETITEMA, - TVM_EDITLABELA, - TVM_GETEDITCONTROL, - TVM_GETVISIBLECOUNT, - TVM_HITTEST, - TVM_CREATEDRAGIMAGE, - TVM_SORTCHILDREN, - TVM_ENSUREVISIBLE, - TVM_SORTCHILDRENCB, - TVM_ENDEDITLABELNOW, - TVM_GETISEARCHSTRINGA, // = TV_FIRST + 23 - TVM_INSERTITEMW = TV_FIRST + 50, - TVM_GETITEMW = TV_FIRST + 62, - TVM_SETITEMW = TV_FIRST + 63, - TVM_GETISEARCHSTRINGW = TV_FIRST + 64, - TVM_EDITLABELW = TV_FIRST + 65 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TVM_GETTOOLTIPS = TV_FIRST + 25, - TVM_SETTOOLTIPS = TV_FIRST + 24 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - TVM_SETINSERTMARK = TV_FIRST + 26, - TVM_SETITEMHEIGHT, - TVM_GETITEMHEIGHT, - TVM_SETBKCOLOR, - TVM_SETTEXTCOLOR, - TVM_GETBKCOLOR, - TVM_GETTEXTCOLOR, - TVM_SETSCROLLTIME, - TVM_GETSCROLLTIME, // = TV_FIRST + 34 - TVM_SETINSERTMARKCOLOR = TV_FIRST + 37, - TVM_GETINSERTMARKCOLOR = TV_FIRST + 38, - TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - TVM_GETITEMSTATE = TV_FIRST + 39, - TVM_SETLINECOLOR = TV_FIRST + 40, - TVM_GETLINECOLOR = TV_FIRST + 41 - } -} - -static if (_WIN32_IE >= 0x501) { - enum { - TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42, - TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43, - TVM_SETEXTENDEDSTYLE = TV_FIRST + 44, - TVM_GETEXTENDEDSTYLE = TV_FIRST + 45, - TVM_SETAUTOSCROLLINFO = TV_FIRST + 59 - } -} - -static if (_WIN32_IE >= 0x600) { - enum { - TVM_GETSELECTEDCOUNT = TV_FIRST + 70, - TVM_SHOWINFOTIP = TV_FIRST + 71, - TVM_GETITEMPARTRECT = TV_FIRST + 72, - } -} - -enum { - TVE_COLLAPSE = 1, - TVE_EXPAND = 2, - TVE_TOGGLE = 3, - TVE_COLLAPSERESET = 0x8000 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TVE_EXPANDPARTIAL = 0x4000 - } -} - -enum { - TVC_UNKNOWN, - TVC_BYMOUSE, - TVC_BYKEYBOARD // = 2 -} - -enum { - TVGN_ROOT, - TVGN_NEXT, - TVGN_PREVIOUS, - TVGN_PARENT, - TVGN_CHILD, - TVGN_FIRSTVISIBLE, - TVGN_NEXTVISIBLE, - TVGN_PREVIOUSVISIBLE, - TVGN_DROPHILITE, - TVGN_CARET // = 9 -} - -static if (_WIN32_IE >= 0x400) { - enum { - TVGN_LASTVISIBLE = 10 - } -} - -static if (_WIN32_IE >= 0x600) { - enum { - TVGN_NEXTSELECTED = 11 - } -} - -enum { - TVN_SELCHANGINGA = TVN_FIRST - 1, - TVN_SELCHANGEDA = TVN_FIRST - 2, - TVN_GETDISPINFOA = TVN_FIRST - 3, - TVN_SETDISPINFOA = TVN_FIRST - 4, - TVN_ITEMEXPANDINGA = TVN_FIRST - 5, - TVN_ITEMEXPANDEDA = TVN_FIRST - 6, - TVN_BEGINDRAGA = TVN_FIRST - 7, - TVN_BEGINRDRAGA = TVN_FIRST - 8, - TVN_DELETEITEMA = TVN_FIRST - 9, - TVN_BEGINLABELEDITA = TVN_FIRST - 10, - TVN_ENDLABELEDITA = TVN_FIRST - 11, - TVN_KEYDOWN = TVN_FIRST - 12, - TVN_SELCHANGINGW = TVN_FIRST - 50, - TVN_SELCHANGEDW = TVN_FIRST - 51, - TVN_GETDISPINFOW = TVN_FIRST - 52, - TVN_SETDISPINFOW = TVN_FIRST - 53, - TVN_ITEMEXPANDINGW = TVN_FIRST - 54, - TVN_ITEMEXPANDEDW = TVN_FIRST - 55, - TVN_BEGINDRAGW = TVN_FIRST - 56, - TVN_BEGINRDRAGW = TVN_FIRST - 57, - TVN_DELETEITEMW = TVN_FIRST - 58, - TVN_BEGINLABELEDITW = TVN_FIRST - 59, - TVN_ENDLABELEDITW = TVN_FIRST - 60 -} - -static if (_WIN32_IE >= 0x400) { - enum { - TVNRET_DEFAULT = 0, - TVNRET_SKIPOLD = 1, - TVNRET_SKIPNEW = 2, - TVN_GETINFOTIPA = TVN_FIRST - 13, - TVN_GETINFOTIPW = TVN_FIRST - 14, - TVN_SINGLEEXPAND = TVN_FIRST - 15 - } -} - -enum { - TVIF_DI_SETITEM = 0x1000 -} - -enum { - TVHT_NOWHERE = 1, - TVHT_ONITEMICON = 2, - TVHT_ONITEMLABEL = 4, - TVHT_ONITEMINDENT = 8, - TVHT_ONITEMBUTTON = 16, - TVHT_ONITEMRIGHT = 32, - TVHT_ONITEMSTATEICON = 64, - TVHT_ABOVE = 256, - TVHT_BELOW = 512, - TVHT_TORIGHT = 1024, - TVHT_TOLEFT = 2048, - TCHT_NOWHERE = 1, - TCHT_ONITEMICON = 2, - TCHT_ONITEMLABEL = 4, - TVHT_ONITEM = TVHT_ONITEMICON | TVHT_ONITEMLABEL - | TVHT_ONITEMSTATEICON, - TCHT_ONITEM = TCHT_ONITEMICON | TCHT_ONITEMLABEL -} - -enum { - TCS_TABS = 0, - TCS_RIGHTJUSTIFY = 0, - TCS_SINGLELINE = 0, - TCS_FORCEICONLEFT = 16, - TCS_FORCELABELLEFT = 32, - TCS_BUTTONS = 256, - TCS_MULTILINE = 512, - TCS_FIXEDWIDTH = 1024, - TCS_RAGGEDRIGHT = 2048, - TCS_FOCUSONBUTTONDOWN = 0x1000, - TCS_OWNERDRAWFIXED = 0x2000, - TCS_TOOLTIPS = 0x4000, - TCS_FOCUSNEVER = 0x8000 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TCS_BOTTOM = 2, - TCS_RIGHT = 2, - TCS_VERTICAL = 128, - TCS_SCROLLOPPOSITE = 0x0001, - TCS_HOTTRACK = 0x0040, - TCS_MULTISELECT = 0x0004 - } -} - -static if(_WIN32_IE >= 0x400) { - enum { - TCS_FLATBUTTONS = 0x0008, - TCS_EX_FLATSEPARATORS = 0x00000001, - TCS_EX_REGISTERDROP = 0x00000002 - } -} - -enum { - TCIF_TEXT = 1, - TCIF_IMAGE = 2, - TCIF_RTLREADING = 4, - TCIF_PARAM = 8 -} - -static if (_WIN32_IE >= 0x400) { - enum { - TCIF_STATE = 16 - } -} - -enum { - TCIS_BUTTONPRESSED = 1 -} - -static if (_WIN32_IE >= 0x400) { - enum { - TCIS_HIGHLIGHTED = 2 - } -} - -enum { - TCM_FIRST = 0x1300, - TCM_GETIMAGELIST = TCM_FIRST + 2, - TCM_SETIMAGELIST, - TCM_GETITEMCOUNT, - TCM_GETITEMA, - TCM_SETITEMA, - TCM_INSERTITEMA, - TCM_DELETEITEM, - TCM_DELETEALLITEMS, - TCM_GETITEMRECT, - TCM_GETCURSEL, - TCM_SETCURSEL, - TCM_HITTEST, - TCM_SETITEMEXTRA, // = TCM_FIRST + 14 - TCM_ADJUSTRECT = TCM_FIRST + 40, - TCM_SETITEMSIZE, - TCM_REMOVEIMAGE, - TCM_SETPADDING, - TCM_GETROWCOUNT, - TCM_GETTOOLTIPS, - TCM_SETTOOLTIPS, - TCM_GETCURFOCUS, - TCM_SETCURFOCUS, - TCM_SETMINTABWIDTH, - TCM_DESELECTALL, // = TCM_FIRST + 50 - TCM_GETITEMW = TCM_FIRST + 60, - TCM_SETITEMW = TCM_FIRST + 61, - TCM_INSERTITEMW = TCM_FIRST + 62 -} - -static if (_WIN32_IE >=0x0400) { - enum { - TCM_HIGHLIGHTITEM = TCM_FIRST + 51, - TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52, - TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53, - TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -enum { - TCN_KEYDOWN = TCN_FIRST, - TCN_SELCHANGE = TCN_FIRST - 1, - TCN_SELCHANGING = TCN_FIRST - 2 -} - -enum { - NM_OUTOFMEMORY = NM_FIRST - 1, - NM_CLICK = NM_FIRST - 2, - NM_DBLCLK = NM_FIRST - 3, - NM_RETURN = NM_FIRST - 4, - NM_RCLICK = NM_FIRST - 5, - NM_RDBLCLK = NM_FIRST - 6, - NM_SETFOCUS = NM_FIRST - 7, - NM_KILLFOCUS = NM_FIRST - 8, - NM_CUSTOMDRAW = NM_FIRST - 12, - NM_HOVER = NM_FIRST - 13, - NM_NCHITTEST = NM_FIRST - 14, - NM_KEYDOWN = NM_FIRST - 15, - NM_RELEASEDCAPTURE = NM_FIRST - 16, - NM_SETCURSOR = NM_FIRST - 17, - NM_CHAR = NM_FIRST - 18, - NM_TOOLTIPSCREATED = NM_FIRST - 19 -} - -enum { - SBARS_SIZEGRIP = 256 -} - -/*enum { - CCM_FIRST = 0x2000, - CCM_LAST = CCM_FIRST + 0x200, - CCM_SETBKCOLOR = 8193, - CCM_SETCOLORSCHEME = 8194, - CCM_GETCOLORSCHEME = 8195, - CCM_GETDROPTARGET = 8196, - CCM_SETUNICODEFORMAT = 8197, - CCM_GETUNICODEFORMAT = 8198, - CCM_SETVERSION = 0x2007, - CCM_GETVERSION = 0x2008, - CCM_SETNOTIFYWINDOW = 0x2009 -}*/ - -static if (_WIN32_WINNT >= 0x501) { - enum { - CCM_SETWINDOWTHEME = 0x200b, - CCM_DPISCALE = 0x200c, - - RB_GETBANDMARGINS = WM_USER + 40, - RB_SETWINDOWTHEME = CCM_SETWINDOWTHEME, - TB_SETWINDOWTHEME = CCM_SETWINDOWTHEME, - TTM_SETWINDOWTHEME = CCM_SETWINDOWTHEME, - } -} - -enum { - ICC_LISTVIEW_CLASSES = 1, - ICC_TREEVIEW_CLASSES = 2, - ICC_BAR_CLASSES = 4, - ICC_TAB_CLASSES = 8, - ICC_UPDOWN_CLASS = 16, - ICC_PROGRESS_CLASS = 32, - ICC_HOTKEY_CLASS = 64, - ICC_ANIMATE_CLASS = 128, - ICC_WIN95_CLASSES = 255, - ICC_DATE_CLASSES = 256, - ICC_USEREX_CLASSES = 512, - ICC_COOL_CLASSES = 1024 -} - -static if (_WIN32_IE >= 0x400) { - enum { - INFOTIPSIZE = 1024, - ICC_INTERNET_CLASSES = 2048, - ICC_PAGESCROLLER_CLASS = 4096, - ICC_NATIVEFNTCTL_CLASS = 8192 - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - ICC_STANDARD_CLASSES = 0x00004000, - ICC_LINK_CLASS = 0x00008000 - } -} - -enum { - GDTR_MIN = 1, - GDTR_MAX = 2 -} - -enum { - GMR_VISIBLE, - GMR_DAYSTATE -} - -enum { - GDT_ERROR = -1, - GDT_VALID = 0, - GDT_NONE = 1 -} - -enum { - DTS_SHORTDATEFORMAT = 0, - DTS_UPDOWN = 1, - DTS_SHOWNONE = 2, - DTS_LONGDATEFORMAT = 4, - DTS_TIMEFORMAT = 9, - DTS_APPCANPARSE = 16, - DTS_RIGHTALIGN = 32 -} - -static if (_WIN32_IE >= 0x500) { - enum { - DTS_SHORTDATECENTURYFORMAT = 0x000C - } -} - -enum { - MCS_DAYSTATE = 1, - MCS_MULTISELECT = 2, - MCS_WEEKNUMBERS = 4 -} - -static if (_WIN32_IE >= 0x400) { - enum { - MCS_NOTODAYCIRCLE = 0x0008, - MCS_NOTODAY = 0x0010 - } -} else { - enum { - MCS_NOTODAY = 0x0008 - } -} - -enum { - DTM_FIRST = 0x10000, - DTM_GETSYSTEMTIME = 0x1001, - DTM_SETSYSTEMTIME = 0x1002, - DTM_GETRANGE = 0x1003, - DTM_SETRANGE = 0x1004, - DTM_SETFORMATA = 0x1005, - DTM_SETMCCOLOR = 0x1006, - DTM_GETMCCOLOR = 0x1007, - DTM_GETMONTHCAL = 0x1008, - DTM_SETMCFONT = 0x1009, - DTM_GETMCFONT = 0x100a, - DTM_SETFORMATW = 0x1050 -} - -static if (_WIN32_WINNT >= 0x600) { - enum { - DTM_SETMCSTYLE = DTM_FIRST + 11, - DTM_GETMCSTYLE, - DTM_CLOSEMONTHCAL, - DTM_GETDATETIMEPICKERINFO, - DTM_GETIDEALSIZE, - } -} - -enum { - DTN_USERSTRINGA = -758U, - DTN_USERSTRINGW = -745U, - DTN_WMKEYDOWNA = -757U, - DTN_WMKEYDOWNW = -744U, - DTN_FORMATA = -756U, - DTN_FORMATW = -743U, - DTN_FORMATQUERYA = -755U, - DTN_FORMATQUERYW = -742U, - DTN_DROPDOWN = -754U, - DTN_CLOSEUP = -753U, - DTN_DATETIMECHANGE = -759U, -} - -enum { - MCM_FIRST = 0x1000, - MCM_GETCURSEL = 0x1001, - MCM_SETCURSEL = 0x1002, - MCM_GETMAXSELCOUNT = 0x1003, - MCM_SETMAXSELCOUNT = 0x1004, - MCM_GETSELRANGE = 0x1005, - MCM_SETSELRANGE = 0x1006, - MCM_GETMONTHRANGE = 0x1007, - MCM_SETDAYSTATE = 0x1008, - MCM_GETMINREQRECT = 0x1009, - MCM_SETCOLOR = 0x100a, - MCM_GETCOLOR = 0x100b, - MCM_SETTODAY = 0x100c, - MCM_GETTODAY = 0x100d, - MCM_HITTEST = 0x100e, - MCM_SETFIRSTDAYOFWEEK = 0x100f, - MCM_GETFIRSTDAYOFWEEK = 0x1010, - MCM_GETRANGE = 0x1011, - MCM_SETRANGE = 0x1012, - MCM_GETMONTHDELTA = 0x1013, - MCM_SETMONTHDELTA = 0x1014, - MCM_GETMAXTODAYWIDTH = 0x1015, - MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, - MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT -} - -static if (_WIN32_WINNT >= 0x600) { - enum { - MCM_GETCURRENTVIEW = MCM_FIRST + 22, - MCM_GETCALENDARCOUNT, - MCM_GETCALENDARGRIDINFO, - MCM_GETCALID = MCM_FIRST + 27, - MCM_SETCALID, - MCM_SIZERECTTOMIN, - MCM_SETCALENDARBORDER, - MCM_GETCALENDARBORDER, - MCM_SETCURRENTVIEW, - } -} - -enum { - MCN_SELCHANGE = -749U, - MCN_GETDAYSTATE = -747U, - MCN_SELECT = -746U -} - -enum { - ODT_HEADER = 100, - ODT_TAB, - ODT_LISTVIEW // = 102 -} - -enum { - SB_SETBKCOLOR = 0x2001 -} - -static if (_WIN32_IE >= 0x300) { - enum { - SB_ISSIMPLE = 1038 - } - - enum { - MCSC_BACKGROUND, - MCSC_TEXT, - MCSC_TITLEBK, - MCSC_TITLETEXT, - MCSC_MONTHBK, - MCSC_TRAILINGTEXT // = 5 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - MCHT_TITLE = 0x10000, - MCHT_CALENDAR = 0x20000, - MCHT_TODAYLINK = 0x30000, - MCHT_NEXT = 0x1000000, - MCHT_PREV = 0x2000000, - MCHT_NOWHERE = 0x00, - MCHT_TITLEBK = MCHT_TITLE, - MCHT_TITLEMONTH = MCHT_TITLE | 0x0001, - MCHT_TITLEYEAR = MCHT_TITLE | 0x0002, - MCHT_TITLEBTNNEXT = MCHT_TITLE | MCHT_NEXT | 0x0003, - MCHT_TITLEBTNPREV = MCHT_TITLE | MCHT_PREV | 0x0003, - MCHT_CALENDARBK = MCHT_CALENDAR, - MCHT_CALENDARDATE = MCHT_CALENDAR | 0x0001, - MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT, - MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV, - MCHT_CALENDARDAY = MCHT_CALENDAR | 0x0002, - MCHT_CALENDARWEEKNUM = MCHT_CALENDAR | 0x0003 - } -} - -enum { - RBS_TOOLTIPS = 256, - RBS_VARHEIGHT = 512, - RBS_BANDBORDERS = 1024, - RBS_FIXEDORDER = 2048 -} - -enum { - RBIM_IMAGELIST = 1 -} - -enum { - RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, - RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME -} - -enum { - RBBS_BREAK = 0x0001, - RBBS_FIXEDSIZE = 0x0002, - RBBS_CHILDEDGE = 0x0004, - RBBS_HIDDEN = 0x0008, - RBBS_NOVERT = 0x0010, - RBBS_FIXEDBMP = 0x0020, - RBBS_VARIABLEHEIGHT = 0x0040, - RBBS_GRIPPERALWAYS = 0x0080, - RBBS_NOGRIPPER = 0x0100 -} - -static if (_WIN32_IE >= 0x500) { - enum { - RBBS_USECHEVRON = 0x0200 - } -} - -static if (_WIN32_IE >= 0x501) { - enum { - RBBS_HIDETITLE = 0x0400, - RBBS_TOPALIGN = 0x0800 - } -} - -enum { - RBBIM_STYLE = 1, - RBBIM_COLORS = 2, - RBBIM_TEXT = 4, - RBBIM_IMAGE = 8, - RBBIM_CHILD = 16, - RBBIM_CHILDSIZE = 32, - RBBIM_SIZE = 64, - RBBIM_BACKGROUND = 128, - RBBIM_ID = 256 -} - -enum { - RB_INSERTBANDA = WM_USER + 1, - RB_DELETEBAND, - RB_GETBARINFO, - RB_SETBARINFO, // = WM_USER + 4 - RB_SETBANDINFOA = WM_USER + 6, - RB_SETPARENT = WM_USER + 7, - RB_INSERTBANDW = WM_USER + 10, - RB_SETBANDINFOW, - RB_GETBANDCOUNT, - RB_GETROWCOUNT, - RB_GETROWHEIGHT // = WM_USER + 14, -} - -enum { - RBN_HEIGHTCHANGE = RBN_FIRST -} - -static if (_WIN32_IE >= 0x300) { - enum { - LVN_ODCACHEHINT = LVN_FIRST - 13, - LVN_ODFINDITEMA = LVN_FIRST - 52, - LVN_ODFINDITEMW = LVN_FIRST - 79, - LVN_ITEMACTIVATE = LVN_FIRST - 14, - LVN_ODSTATECHANGED = LVN_FIRST - 15 - } - - version (Unicode) { - enum { - LVN_ODFINDITEM = LVN_ODFINDITEMW - } - } else { - enum { - LVN_ODFINDITEM = LVN_ODFINDITEMA - } - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - SB_SETICON = 1039, - SB_SETTIPTEXTA, - SB_SETTIPTEXTW, - SB_GETTIPTEXTA, - SB_GETTIPTEXTW, - SB_GETICON, // = 1044 - SB_SETUNICODEFORMAT = 0x2005, - SB_GETUNICODEFORMAT = 0x2006 - } - - enum { - PGF_INVISIBLE = 0, - PGF_NORMAL = 1, - PGF_GRAYED = 2, - PGF_DEPRESSED = 4, - PGF_HOT = 8 - } - - enum { - PGB_TOPORLEFT, - PGB_BOTTOMORRIGHT - } - - enum { - PGF_SCROLLUP = 1, - PGF_SCROLLDOWN = 2, - PGF_SCROLLLEFT = 4, - PGF_SCROLLRIGHT = 8 - } - - enum { - PGK_SHIFT = 1, - PGK_CONTROL = 2, - PGK_MENU = 4 - } - - enum { - PGF_CALCWIDTH = 1, - PGF_CALCHEIGHT = 2 - } - - enum { - PGM_FIRST = 0x1400, - PGM_SETCHILD = PGM_FIRST + 1, - PGM_RECALCSIZE, - PGM_FORWARDMOUSE, - PGM_SETBKCOLOR, - PGM_GETBKCOLOR, - PGM_SETBORDER, - PGM_GETBORDER, - PGM_SETPOS, - PGM_GETPOS, - PGM_SETBUTTONSIZE, - PGM_GETBUTTONSIZE, - PGM_GETBUTTONSTATE, // = PGM_FIRST + 12 - PGM_GETDROPTARGET = CCM_GETDROPTARGET - } - - enum { - RBS_REGISTERDROP = 4096, - RBS_AUTOSIZE = 8192, - RBS_VERTICALGRIPPER = 16384, - RBS_DBLCLKTOGGLE = 32768 - } - - enum { - RBBIM_IDEALSIZE = 512, - RBBIM_LPARAM = 1024, - RBBIM_HEADERSIZE = 2048 - } - - enum { - RB_HITTEST = WM_USER + 8, - RB_GETRECT = WM_USER + 9, - RB_IDTOINDEX = WM_USER + 16, - RB_GETTOOLTIPS, - RB_SETTOOLTIPS, - RB_SETBKCOLOR, - RB_GETBKCOLOR, - RB_SETTEXTCOLOR, - RB_GETTEXTCOLOR, - RB_SIZETORECT, - RB_BEGINDRAG, - RB_ENDDRAG, - RB_DRAGMOVE, - RB_GETBARHEIGHT, - RB_GETBANDINFOW, - RB_GETBANDINFOA, - RB_MINIMIZEBAND, - RB_MAXIMIZEBAND, // = WM_USER + 31 - RB_GETDROPTARGET = CCM_GETDROPTARGET, - RB_GETBANDBORDERS = WM_USER + 34, - RB_SHOWBAND = WM_USER + 35, - RB_SETPALETTE = WM_USER + 37, - RB_GETPALETTE = WM_USER + 38, - RB_MOVEBAND = WM_USER + 39, - RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } - - enum { - RBN_GETOBJECT = RBN_FIRST - 1, - RBN_LAYOUTCHANGED = RBN_FIRST - 2, - RBN_AUTOSIZE = RBN_FIRST - 3, - RBN_BEGINDRAG = RBN_FIRST - 4, - RBN_ENDDRAG = RBN_FIRST - 5, - RBN_DELETINGBAND = RBN_FIRST - 6, - RBN_DELETEDBAND = RBN_FIRST - 7, - RBN_CHILDSIZE = RBN_FIRST - 8 - } - - enum { - RBNM_ID = 1, - RBNM_STYLE = 2, - RBNM_LPARAM = 4 - } - - enum { - RBHT_NOWHERE = 1, - RBHT_CAPTION, - RBHT_CLIENT, - RBHT_GRABBER - } - - version (Unicode) { - alias SB_SETTIPTEXTW SB_SETTIPTEXT; - alias SB_GETTIPTEXTW SB_GETTIPTEXT; - alias RB_GETBANDINFOW RB_GETBANDINFO; - } else { - alias SB_SETTIPTEXTA SB_SETTIPTEXT; - alias SB_GETTIPTEXTA SB_GETTIPTEXT; - alias RB_GETBANDINFOA RB_GETBANDINFO; - } -} else { - enum { - RB_GETBANDINFO = WM_USER + 5 - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - RB_PUSHCHEVRON = WM_USER + 43, - } -} - -static if (_WIN32_IE >= 0x600) { - enum { - RB_SETEXTENDEDSTYLE = WM_USER + 41, - RB_GETEXTENDEDSTYLE = WM_USER + 42, - } -} - -static if (_WIN32_WINNT >= 0x500) { - enum { - RB_SETBANDWIDTH = WM_USER + 44, - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - ECM_FIRST = 0x1500, - BCM_FIRST = 0x1600, - - BCM_GETIDEALSIZE = BCM_FIRST + 0x0001, - BCM_SETIMAGELIST = BCM_FIRST + 0x0002, - BCM_GETIMAGELIST = BCM_FIRST + 0x0003, - BCM_SETTEXTMARGIN = BCM_FIRST + 0x0004, - BCM_GETTEXTMARGIN = BCM_FIRST + 0x0005, - - BCN_HOTITEMCHANGE = BCN_FIRST + 0x0001, - } - - struct NMBCHOTITEM { - NMHDR hdr; - DWORD dwFlags; - } - alias NMBCHOTITEM* LPNMBCHOTITEM; -} - -static if(_WIN32_WINNT >= 0x600) { - enum { - BST_DROPDOWNPUSHED = 0x0400, - - BS_SPLITBUTTON = 0x0000_000C, - BS_DEFSPLITBUTTON = 0x0000_000D, - BS_COMMANDLINK = 0x0000_000E, - BS_DEFCOMMANDLINK = 0x0000_000F, - - BCSIF_GLYPH = 0x0001, - BCSIF_IMAGE = 0x0002, - BCSIF_STYLE = 0x0004, - BCSIF_SIZE = 0x0008, - - BCSS_NOSPLIT = 0x0001, - BCSS_STRETCH = 0x0002, - BCSS_ALIGNLEFT = 0x0004, - BCSS_IMAGE = 0x0008, - - BCM_SETDROPDOWNSTATE = BCM_FIRST + 0x0006, - BCM_SETSPLITINFO = BCM_FIRST + 0x0007, - BCM_GETSPLITINFO = BCM_FIRST + 0x0008, - BCM_SETNOTE = BCM_FIRST + 0x0009, - BCM_GETNOTE = BCM_FIRST + 0x000A, - BCM_GETNOTELENGTH = BCM_FIRST + 0x000B, - BCM_SETSHIELD = BCM_FIRST + 0x000C, - - BCN_DROPDOWN = BCN_FIRST + 0x0002, - } - - const HIMAGELIST BCCL_NOGLYPH = cast(HIMAGELIST)-1; - - struct BUTTON_SPLITINFO - { - UINT mask; - HIMAGELIST himlGlyph; - UINT uSplitStyle; - SIZE size; - } - alias BUTTON_SPLITINFO* PBUTTON_SPLITINFO; -} - -enum { - CBEM_INSERTITEMA = WM_USER + 1, - CBEM_SETIMAGELIST, - CBEM_GETIMAGELIST, - CBEM_GETITEMA, - CBEM_SETITEMA, - CBEM_GETCOMBOCONTROL, - CBEM_GETEDITCONTROL, - CBEM_SETEXSTYLE, - CBEM_GETEXSTYLE, // = WM_USER + 9) - CBEM_DELETEITEM = CB_DELETESTRING -} - -static if (_WIN32_IE >= 0x400) { - enum { - CBEM_SETEXTENDEDSTYLE = WM_USER + 14, - CBEM_GETEXTENDEDSTYLE = WM_USER + 9, - CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -enum { - CBEM_HASEDITCHANGED = WM_USER + 10, - CBEM_INSERTITEMW = WM_USER + 11, - CBEM_SETITEMW = WM_USER + 12, - CBEM_GETITEMW = WM_USER + 13 -} - -static if (_WIN32_WINNT >= 0x501) -{ - enum { - CBEM_SETWINDOWTHEME = CCM_SETWINDOWTHEME - } -} - -enum { - DA_LAST = 0x7fffffff -} - -enum { - DPA_APPEND = 0x7fffffff, - DPA_ERR = -1 -} - -enum { - DSA_APPEND = 0x7fffffff, - DSA_ERR = -1 -} - -enum { - DPAS_SORTED = 1, - DPAS_INSERTBEFORE = 2, - DPAS_INSERTAFTER = 4 -} - -static if (_WIN32_IE >= 0x400) { - enum { - WSB_PROP_CYVSCROLL = 1, - WSB_PROP_CXHSCROLL = 2, - WSB_PROP_CYHSCROLL = 4, - WSB_PROP_CXVSCROLL = 8, - WSB_PROP_CXHTHUMB = 16, - WSB_PROP_CYVTHUMB = 32, - WSB_PROP_VBKGCOLOR = 64, - WSB_PROP_HBKGCOLOR = 128, - WSB_PROP_VSTYLE = 256, - WSB_PROP_HSTYLE = 512, - WSB_PROP_WINSTYLE = 1024, - WSB_PROP_PALETTE = 2048, - WSB_PROP_MASK = 0xfff, - FSB_FLAT_MODE = 2, - FSB_ENCARTA_MODE = 1, - FSB_REGULAR_MODE = 0 - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - LIF_ITEMINDEX = 1, - LIF_STATE = 2, - LIF_ITEMID = 4, - LIF_URL = 8 - } - - enum { - LIS_FOCUSED = 1, - LIS_ENABLED = 2, - LIS_VISITED = 4 - } - - enum { - LM_HITTEST = WM_USER + 768, - LM_GETIDEALHEIGHT, - LM_SETITEM, - LM_GETITEM, // = WM_USER + 771 - LM_GETIDEALSIZE = LM_GETIDEALHEIGHT, - } - - const size_t MAX_LINKID_TEXT = 48; - const size_t L_MAX_URL_LENGTH = 2084; -} - - -struct TBMETRICS { - UINT cbSize = TBMETRICS.sizeof; - DWORD dwMask; - int cxPad; - int cyPad; - int cxBarPad; - int cyBarPad; - int cxButtonSpacing; - int cyButtonSpacing; -} -alias TBMETRICS* LPTBMETRICS; - -static if (_WIN32_WINNT >= 0x501) { - struct TTGETTITLE { - DWORD dwSize = TTGETTITLE.sizeof; - UINT uTitleBitmap; - UINT cch; - WCHAR* pszTitle; - } - alias TTGETTITLE* PTTGETTITLE; -} - -static if (_WIN32_WINNT >= 0x600) { - struct MCGRIDINFO { - UINT cbSize; - DWORD dwPart; - DWORD dwFlags; - int iCalendar; - int iRow; - int iCol; - BOOL bSelected; - SYSTEMTIME stStart; - SYSTEMTIME stEnd; - RECT rc; - PWSTR pszName; - size_t cchName; - } - alias MCGRIDINFO* PMCGRIDINFO; - - struct DATETIMEPICKERINFO - { - DWORD cbSize; - RECT rcCheck; - DWORD stateCheck; - RECT rcButton; - DWORD stateButton; - HWND hwndEdit; - HWND hwndUD; - HWND hwndDropDown; - } - alias DATETIMEPICKERINFO* LPDATETIMEPICKERINFO; -} - -struct COMBOBOXEXITEMA { - UINT mask; - INT_PTR iItem; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int iOverlay; - int iIndent; - LPARAM lParam; -} -alias COMBOBOXEXITEMA* PCOMBOBOXEXITEMA; -alias const(COMBOBOXEXITEMA)* PCCOMBOEXITEMA; - -struct COMBOBOXEXITEMW { - UINT mask; - INT_PTR iItem; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int iOverlay; - int iIndent; - LPARAM lParam; -} -alias COMBOBOXEXITEMW* PCOMBOBOXEXITEMW; -alias const(COMBOBOXEXITEMW)* PCCOMBOEXITEMW; - -static if (_WIN32_IE >= 0x400) { - struct NMCOMBOBOXEXA { - NMHDR hdr; - COMBOBOXEXITEMA ceItem; - } - alias NMCOMBOBOXEXA* PNMCOMBOBOXEXA; - - struct NMCOMBOBOXEXW { - NMHDR hdr; - COMBOBOXEXITEMW ceItem; - } - alias NMCOMBOBOXEXW* PNMCOMBOBOXEXW; - - struct NMCBEDRAGBEGINW { - NMHDR hdr; - int iItemid; - WCHAR[CBEMAXSTRLEN] szText; - } - alias NMCBEDRAGBEGINW* LPNMCBEDRAGBEGINW, PNMCBEDRAGBEGINW; - - struct NMCBEDRAGBEGINA { - NMHDR hdr; - int iItemid; - char[CBEMAXSTRLEN] szText; - } - alias NMCBEDRAGBEGINA* LPNMCBEDRAGBEGINA, PNMCBEDRAGBEGINA; - - struct NMIPADDRESS { - NMHDR hdr; - int iField; - int iValue; - } - alias NMIPADDRESS* LPNMIPADDRESS; - - struct NMLVKEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; - } - alias NMLVKEYDOWN* LPNMLVKEYDOWN; - - struct NMPGCALCSIZE { - NMHDR hdr; - DWORD dwFlag; - int iWidth; - int iHeight; - } - alias NMPGCALCSIZE* LPNMPGCALCSIZE; - - struct NMPGSCROLL { - NMHDR hdr; - BOOL fwKeys; - RECT rcParent; - int iDir; - int iXpos; - int iYpos; - int iScroll; - } - alias NMPGSCROLL* LPNMPGSCROLL; - - struct NMSELCHANGE { - NMHDR nmhdr; - SYSTEMTIME stSelStart; - SYSTEMTIME stSelEnd; - } - alias NMSELCHANGE* LPNMSELCHANGE; - - struct NMTBHOTITEM { - NMHDR hdr; - int idOld; - int idNew; - DWORD dwFlags; - } - alias NMTBHOTITEM* LPNMTBHOTITEM; - - struct NMTBDISPINFOA { - NMHDR hdr; - DWORD dwMask; - int idCommand; - DWORD_PTR lParam; - int iImage; - LPSTR pszText; - int cchText; - } - alias NMTBDISPINFOA* LPNMTBDISPINFOA; - - struct NMTBDISPINFOW { - NMHDR hdr; - DWORD dwMask; - int idCommand; - DWORD_PTR lParam; - int iImage; - LPWSTR pszText; - int cchText; - } - alias NMTBDISPINFOW* LPNMTBDISPINFOW; - - struct NMTBGETINFOTIPA { - NMHDR hdr; - LPSTR pszText; - int cchTextMax; - int iItem; - LPARAM lParam; - } - alias NMTBGETINFOTIPA* LPNMTBGETINFOTIPA; - - struct NMTBGETINFOTIPW { - NMHDR hdr; - LPWSTR pszText; - int cchTextMax; - int iItem; - LPARAM lParam; - } - alias NMTBGETINFOTIPW* LPNMTBGETINFOTIPW; - - struct NMMOUSE { - NMHDR hdr; - DWORD_PTR dwItemSpec; - DWORD_PTR dwItemData; - POINT pt; - LPARAM dwHitInfo; - } - alias NMMOUSE* LPNMMOUSE; -} - -static if (_WIN32_IE >= 0x401) { - struct NMTOOLTIPSCREATED { - NMHDR hdr; - HWND hwndToolTips; - } - alias NMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED; -} - -struct NMDATETIMECHANGE { - NMHDR nmhdr; - DWORD dwFlags; - SYSTEMTIME st; -} -alias NMDATETIMECHANGE* LPNMDATETIMECHANGE; - -struct NMCBEENDEDITW { - NMHDR hdr; - BOOL fChanged; - int iNewSelection; - WCHAR[CBEMAXSTRLEN] szText; - int iWhy; -} -alias NMCBEENDEDITW* LPNMCBEENDEDITW, PNMCBEENDEDITW; - -struct NMCBEENDEDITA { - NMHDR hdr; - BOOL fChanged; - int iNewSelection; - char[CBEMAXSTRLEN] szText; - int iWhy; -} -alias NMCBEENDEDITA* LPNMCBEENDEDITA, PNMCBEENDEDITA; - -struct COLORMAP { - COLORREF from; - COLORREF to; -} -alias COLORMAP* LPCOLORMAP; - -struct DRAGLISTINFO { - UINT uNotification; - HWND hWnd; - POINT ptCursor; -} -alias DRAGLISTINFO* LPDRAGLISTINFO; - -struct TBBUTTON { - int iBitmap; - int idCommand; - BYTE fsState; - BYTE fsStyle; - version(Win64){ - BYTE[6] bReserved; - } else { - BYTE[2] bReserved; - } - DWORD_PTR dwData; - INT_PTR iString; -} -alias TBBUTTON* PTBBUTTON, LPTBBUTTON; -alias const(TBBUTTON)* LPCTBBUTTON; - -static if (_WIN32_IE >= 0x400) { - struct TBBUTTONINFOA { - UINT cbSize = TBBUTTONINFOA.sizeof; - DWORD dwMask; - int idCommand; - int iImage; - BYTE fsState; - BYTE fsStyle; - WORD cx; - DWORD_PTR lParam; - LPSTR pszText; - int cchText; - } - alias TBBUTTONINFOA* LPTBBUTTONINFOA; - - struct TBBUTTONINFOW { - UINT cbSize = TBBUTTONINFOW.sizeof; - DWORD dwMask; - int idCommand; - int iImage; - BYTE fsState; - BYTE fsStyle; - WORD cx; - DWORD_PTR lParam; - LPWSTR pszText; - int cchText; - } - alias TBBUTTONINFOW* LPTBBUTTONINFOW; - - struct TBINSERTMARK { - int iButton; - DWORD dwFlags; - } - alias TBINSERTMARK* LPTBINSERTMARK; - - struct LVBKIMAGEA { - ULONG ulFlags; - HBITMAP hbm; - LPSTR pszImage; - UINT cchImageMax; - int xOffsetPercent; - int yOffsetPercent; - } - alias LVBKIMAGEA* LPLVBKIMAGEA; - - struct LVBKIMAGEW { - ULONG ulFlags; - HBITMAP hbm; - LPWSTR pszImage; - UINT cchImageMax; - int xOffsetPercent; - int yOffsetPercent; - } - alias LVBKIMAGEW* LPLVBKIMAGEW; -} - -/*struct TBNOTIFY { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPTSTR pszText; -} -alias TBNOTIFY* LPTBNOTIFY; -*/ - -/*struct TBSAVEPARAMS { - HKEY hkr; - LPCTSTR pszSubKey; - LPCTSTR pszValueName; -}*/ - -struct IMAGEINFO { - HBITMAP hbmImage; - HBITMAP hbmMask; - int Unused1; - int Unused2; - RECT rcImage; -} -alias IMAGEINFO* LPIMAGEINFO; - -static if (_WIN32_IE >= 0x500) { - struct HDITEMA { - UINT mask; - int cxy; - LPSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - int iImage; - int iOrder; - UINT type; - LPVOID pvFilter; - } - - struct HDITEMW { - UINT mask; - int cxy; - LPWSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - int iImage; - int iOrder; - UINT type; - LPVOID pvFilter; - } -} else static if (_WIN32_IE >= 0x300) { - struct HDITEMA { - UINT mask; - int cxy; - LPSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - int iImage; - int iOrder; - } - - struct HDITEMW { - UINT mask; - int cxy; - LPWSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - int iImage; - int iOrder; - } -} else { - struct HDITEMA { - UINT mask; - int cxy; - LPSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - } - - struct HDITEMW { - UINT mask; - int cxy; - LPWSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - } -} -alias HDITEMA* LPHDITEMA; -alias HDITEMW* LPHDITEMW; - -deprecated { - alias HDITEMA HD_ITEMA; - alias HDITEMW HD_ITEMW; - //alias HDITEM HD_ITEM; fixme -} - -struct HD_LAYOUT { - RECT* prc; - WINDOWPOS* pwpos; -} -alias HD_LAYOUT* LPHDLAYOUT; -deprecated alias HD_LAYOUT HDLAYOUT; - -struct HD_HITTESTINFO { - POINT pt; - UINT flags; - int iItem; -} -alias HD_HITTESTINFO* LPHDHITTESTINFO; - -struct HD_NOTIFYA { - NMHDR hdr; - int iItem; - int iButton; - HDITEMA* pitem; -} - -struct HD_NOTIFYW { - NMHDR hdr; - int iItem; - int iButton; - HDITEMW* pitem; -} - -/* FIXME: NMHEADER structure (base for all events of the comctl controls) - is the same as HD_NOTIFY depending on the value of _WIN32_IE macro. - I'm defining both for now. */ -struct NMHEADERA { - NMHDR hdr; - int iItem; - int iButton; - HDITEMA* pitem; -} -alias NMHEADERA* LPNMHEADERA; - -struct NMHEADERW { - NMHDR hdr; - int iItem; - int iButton; - HDITEMW* pitem; -} -alias NMHEADERW* LPNMHEADERW; - -version (Unicode) { - alias NMHEADERW NMHEADER; - alias LPNMHEADERW LPNMHEADER; -} else { - alias NMHEADERA NMHEADER; - alias LPNMHEADERA LPNMHEADER; -} -// End FIXME - -struct NMHDDISPINFOA { - NMHDR hdr; - int iItem; - UINT mask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; -} -alias NMHDDISPINFOA* LPNMHDDISPINFOA; - -struct NMHDDISPINFOW { - NMHDR hdr; - int iItem; - UINT mask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; -} -alias NMHDDISPINFOW* LPNMHDDISPINFOW; - -struct NMCUSTOMDRAW { - NMHDR hdr; - DWORD dwDrawStage; - HDC hdc; - RECT rc; - DWORD dwItemSpec; - UINT uItemState; - LPARAM lItemlParam; -} -alias NMCUSTOMDRAW* LPNMCUSTOMDRAW; - -static if (_WIN32_IE >= 0x400) { - struct NMLVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - int iSubItem; - } -} else { - struct NMLVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - } -} -alias NMLVCUSTOMDRAW* LPNMLVCUSTOMDRAW; - -static if (_WIN32_IE >= 0x400) { - struct NMLVGETINFOTIPA { - NMHDR hdr; - DWORD dwFlags; - LPSTR pszText; - int cchTextMax; - int iItem; - int iSubItem; - LPARAM lParam; - } - alias NMLVGETINFOTIPA* LPNMLVGETINFOTIPA; - - struct NMLVGETINFOTIPW { - NMHDR hdr; - DWORD dwFlags; - LPWSTR pszText; - int cchTextMax; - int iItem; - int iSubItem; - LPARAM lParam; - } - alias NMLVGETINFOTIPW* LPNMLVGETINFOTIPW; -} - -static if (_WIN32_IE >= 0x400) { - struct NMTVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - int iLevel; - } -} else { - struct NMTVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - } -} -alias NMTVCUSTOMDRAW* LPNMTVCUSTOMDRAW; - -static if (_WIN32_IE >= 0x400) { - static if (_WIN32_WINNT >= 0x501) { - struct NMTBCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - HBRUSH hbrMonoDither; - HBRUSH hbrLines; - HPEN hpenLines; - COLORREF clrText; - COLORREF clrMark; - COLORREF clrTextHighlight; - COLORREF clrBtnFace; - COLORREF clrBtnHighlight; - COLORREF clrHighlightHotTrack; - RECT rcText; - int nStringBkMode; - int nHLStringBkMode; - int iListGap; - } - } else { - struct NMTBCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - HBRUSH hbrMonoDither; - HBRUSH hbrLines; - HPEN hpenLines; - COLORREF clrText; - COLORREF clrMark; - COLORREF clrTextHighlight; - COLORREF clrBtnFace; - COLORREF clrBtnHighlight; - COLORREF clrHighlightHotTrack; - RECT rcText; - int nStringBkMode; - int nHLStringBkMode; - } - } - alias NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW; - - struct NMITEMACTIVATE { - NMHDR hdr; - int iItem; - int iSubItem; - UINT uNewState; - UINT uOldState; - UINT uChanged; - POINT ptAction; - LPARAM lParam; - UINT uKeyFlags; - } - alias NMITEMACTIVATE* LPNMITEMACTIVATE; -} - -struct TBADDBITMAP { - HINSTANCE hInst; - UINT_PTR nID; -} -alias TBADDBITMAP* LPTBADDBITMAP; - -struct TBSAVEPARAMSA { - HKEY hkr; - LPCSTR pszSubKey; - LPCSTR pszValueName; -} - -struct TBSAVEPARAMSW { - HKEY hkr; - LPCWSTR pszSubKey; - LPCWSTR pszValueName; -} - -struct TBREPLACEBITMAP { - HINSTANCE hInstOld; - UINT_PTR nIDOld; - HINSTANCE hInstNew; - UINT_PTR nIDNew; - int nButtons; -} -alias TBREPLACEBITMAP* LPTBREPLACEBITMAP; - -static if (_WIN32_IE >= 0x500) { - struct NMTOOLBARA { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPSTR pszText; - RECT rcButton; - } - - struct NMTOOLBARW { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPWSTR pszText; - RECT rcButton; - } -} else { - struct NMTOOLBARA { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPSTR pszText; - } - - struct NMTOOLBARW { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPWSTR pszText; - } -} -alias NMTOOLBARA* LPNMTOOLBARA; -alias NMTOOLBARW* LPNMTOOLBARW; - -alias NMTOOLBARA TBNOTIFYA; -alias LPNMTOOLBARA LPTBNOTIFYA; - -alias NMTOOLBARW TBNOTIFYW; -alias LPNMTOOLBARW LPTBNOTIFYW; - -static if (_WIN32_WINNT >= 0x501) { - struct TOOLINFOA { - UINT cbSize = TOOLINFOA.sizeof; - UINT uFlags; - HWND hwnd; - UINT_PTR uId; - RECT rect; - HINSTANCE hinst; - LPSTR lpszText; - LPARAM lParam; - void* lpReserved; - } - - struct TOOLINFOW { - UINT cbSize = TOOLINFOW.sizeof; - UINT uFlags; - HWND hwnd; - UINT_PTR uId; - RECT rect; - HINSTANCE hinst; - LPWSTR lpszText; - LPARAM lParam; - void* lpReserved; - } - - const size_t - TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, - TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, - TTTOOLINFOA_V2_SIZE = TOOLINFOA.lpReserved.offsetof, - TTTOOLINFOW_V2_SIZE = TOOLINFOW.lpReserved.offsetof, - TTTOOLINFOA_V3_SIZE = TOOLINFOA.sizeof, - TTTOOLINFOW_V3_SIZE = TOOLINFOW.sizeof; -} else static if (_WIN32_IE >= 0x300) { - struct TOOLINFOA { - UINT cbSize = TOOLINFOA.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPSTR lpszText; - LPARAM lParam; - } - - struct TOOLINFOW { - UINT cbSize = TOOLINFOW.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPWSTR lpszText; - LPARAM lParam; - } - - const size_t - TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, - TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, - TTTOOLINFOA_V2_SIZE = TOOLINFOA.sizeof, - TTTOOLINFOW_V2_SIZE = TOOLINFOW.sizeof; -} else { - struct TOOLINFOA { - UINT cbSize = TOOLINFOA.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPSTR lpszText; - } - - struct TOOLINFOW { - UINT cbSize = TOOLINFOW.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPWSTR lpszText; - } - - const size_t - TTTOOLINFOA_V1_SIZE = TOOLINFOA.sizeof, - TTTOOLINFOW_V1_SIZE = TOOLINFOW.sizeof; -} -alias TOOLINFOA TTTOOLINFOA; -alias TOOLINFOW TTTOOLINFOW; -alias TTTOOLINFOA* LPTTTOOLINFOA, PTOOLINFOA, LPTOOLINFOA; -alias TTTOOLINFOW* LPTTTOOLINFOW, PTOOLINFOW, LPTOOLINFOW; - -struct TTHITTESTINFOA { - HWND hwnd; - POINT pt; - TOOLINFOA ti; -} -alias TTHITTESTINFOA* LPTTHITTESTINFOA, LPHITTESTINFOA; - -struct TTHITTESTINFOW { - HWND hwnd; - POINT pt; - TOOLINFOW ti; -} -alias TTHITTESTINFOW* LPTTHITTESTINFOW, LPHITTESTINFOW; - -static if (_WIN32_IE >= 0x300) { - struct NMTTDISPINFOA { - NMHDR hdr; - LPSTR lpszText; - char[80] szText; - HINSTANCE hinst; - UINT uFlags; - LPARAM lParam; - } - - struct NMTTDISPINFOW { - NMHDR hdr; - LPWSTR lpszText; - WCHAR[80] szText; - HINSTANCE hinst; - UINT uFlags; - LPARAM lParam; - } -} else { - struct NMTTDISPINFOA { - NMHDR hdr; - LPSTR lpszText; - char[80] szText; - HINSTANCE hinst; - UINT uFlags; - } - - struct NMTTDISPINFOW { - NMHDR hdr; - LPWSTR lpszText; - WCHAR[80] szText; - HINSTANCE hinst; - UINT uFlags; - } -} -alias NMTTDISPINFOA* LPNMTTDISPINFOA; -alias NMTTDISPINFOW* LPNMTTDISPINFOW; -alias NMTTDISPINFOA TOOLTIPTEXTA; -alias LPNMTTDISPINFOA LPTOOLTIPTEXTA; -alias NMTTDISPINFOW TOOLTIPTEXTW; -alias LPNMTTDISPINFOW LPTOOLTIPTEXTW; - -struct UDACCEL { - UINT nSec; - UINT nInc; -} -alias UDACCEL* LPUDACCEL; - -struct NMUPDOWN { - NMHDR hdr; - int iPos; - int iDelta; -} -alias NMUPDOWN* LPNMUPDOWN; - -deprecated { - alias NMUPDOWN NM_UPDOWN; - alias LPNMUPDOWN LPNM_UPDOWN; -} - -static if (_WIN32_WINNT >= 0x501) { - struct LVITEMA { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - int iIndent; - int iGroupId; - UINT cColumns; - PUINT puColumns; - } - - struct LVITEMW { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - int iIndent; - int iGroupId; - UINT cColumns; - PUINT puColumns; - } -} else static if (_WIN32_IE >= 0x300) { - struct LVITEMA { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - int iIndent; - } - - struct LVITEMW { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - int iIndent; - } -} else { - struct LVITEMA { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } - - struct LVITEMW { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } -} -alias LVITEMA* LPLVITEMA; -alias LVITEMW* LPLVITEMW; -alias LVITEMA LV_ITEMA; -alias LVITEMW LV_ITEMW; - -struct LVFINDINFOA { - UINT flags; - LPCSTR psz; - LPARAM lParam; - POINT pt; - UINT vkDirection; -} - -struct LVFINDINFOW { - UINT flags; - LPCWSTR psz; - LPARAM lParam; - POINT pt; - UINT vkDirection; -} - -alias LVFINDINFOA* LPFINDINFOA; -alias LVFINDINFOA LV_FINDINFOA; -alias LVFINDINFOW* LPFINDINFOW; -alias LVFINDINFOW LV_FINDINFOW; - -struct NMLVFINDITEMA { - NMHDR hdr; - int iStart; - LVFINDINFOA lvfi; -} - -struct NMLVFINDITEMW { - NMHDR hdr; - int iStart; - LVFINDINFOW lvfi; -} - -alias NMLVFINDITEMA* PNMLVFINDITEMA, LPNMLVFINDITEMA; -alias NMLVFINDITEMW* PNMLVFINDITEMW, LPNMLVFINDITEMW; - -static if (_WIN32_IE >= 0x300) { - struct LVHITTESTINFO { - POINT pt; - UINT flags; - int iItem; - int iSubItem; - } -} else { - struct LVHITTESTINFO { - POINT pt; - UINT flags; - int iItem; - } -} -alias LVHITTESTINFO* LPLVHITTESTINFO; -alias LVHITTESTINFO LV_HITTESTINFO; - -static if (_WIN32_IE >= 0x300) { - struct LVCOLUMNA { - UINT mask; - int fmt; - int cx; - LPSTR pszText; - int cchTextMax; - int iSubItem; - int iImage; - int iOrder; - } - struct LVCOLUMNW { - UINT mask; - int fmt; - int cx; - LPWSTR pszText; - int cchTextMax; - int iSubItem; - int iImage; - int iOrder; - } -} else { - struct LVCOLUMNA { - UINT mask; - int fmt; - int cx; - LPSTR pszText; - int cchTextMax; - int iSubItem; - } - struct LVCOLUMNW { - UINT mask; - int fmt; - int cx; - LPWSTR pszText; - int cchTextMax; - int iSubItem; - } -} -alias LVCOLUMNA* LPLVCOLUMNA; -alias LVCOLUMNW* LPLVCOLUMNW; -alias LVCOLUMNA LV_COLUMNA; -alias LVCOLUMNW LV_COLUMNW; - -static if (_WIN32_WINNT >= 0x501) { - /* SG: The definitions in this static if block are from the MSDN docs. - * They are not in MinGW, but nonetheless required for macros that are. - */ - struct LVGROUP { - UINT cbSize = LVGROUP.sizeof; - UINT mask; - LPWSTR pszHeader; - int cchHeader; - LPWSTR pszFooter; - int cchFooter; - int iGroupId; - UINT stateMask; - UINT state; - UINT uAlign; - static if (_WIN32_WINNT >= 0x600) { - LPWSTR pszSubtitle; - UINT cchSubtitle; - LPWSTR pszTask; - UINT cchTask; - LPWSTR pszDescriptionTop; - UINT cchDescriptionTop; - LPWSTR pszDescriptionBottom; - UINT cchDescriptionBottom; - int iTitleImage; - int iExtendedImage; - int iFirstItem; // Read only - UINT cItems; // Read only - LPWSTR pszSubsetTitle; // NULL if group is not subset - UINT cchSubsetTitle; - } - } - alias LVGROUP* PLVGROUP; - - struct LVGROUPMETRICS { - UINT cbSize = LVGROUPMETRICS.sizeof; - UINT mask; - UINT Left; - UINT Top; - UINT Right; - UINT Bottom; - COLORREF crLeft; - COLORREF crTop; - COLORREF crRight; - COLORREF crBottom; - COLORREF crHeader; - COLORREF crFooter; - } - alias LVGROUPMETRICS* PLVGROUPMETRICS; - - struct LVINSERTMARK { - UINT cbSize = LVINSERTMARK.sizeof; - DWORD dwFlags; - int iItem; - DWORD dwReserved; - } - alias LVINSERTMARK* PLVINSERTMARK; - alias LVINSERTMARK* LPLVINSERTMARK; - - struct LVTILEINFO { - UINT cbSize = LVTILEINFO.sizeof; - int iItem; - UINT cColumns; - PUINT puColumns; - static if (_WIN32_WINNT >= 0x600) { - int* piColFmt; - } - } - alias LVTILEINFO* PLVTILEINFO; - - struct LVTILEVIEWINFO { - UINT cbSize = LVTILEVIEWINFO.sizeof; - DWORD dwMask; - DWORD dwFlags; - SIZE sizeTile; - int cLines; - RECT rcLabelMargin; - } - alias LVTILEVIEWINFO* PLVTILEVIEWINFO; - - struct LVINSERTGROUPSORTED { - PFNLVGROUPCOMPARE pfnGroupCompare; - LPVOID* pvData; - LVGROUP lvGroup; - } - alias LVINSERTGROUPSORTED* PLVINSERTGROUPSORTED; - - alias int function(INT, INT, VOID*) PFNLVGROUPCOMPARE; - - struct LVSETINFOTIP { - UINT cbSize = LVSETINFOTIP.sizeof; - DWORD dwFlags; - LPWSTR pszText; - int iItem; - int iSubItem; - HBITMAP hbmp; - } - alias LVSETINFOTIP* PLVSETINFOTIP; - - struct BUTTON_IMAGELIST { - HIMAGELIST himl; - RECT margin; - UINT uAlign; - } - alias BUTTON_IMAGELIST* PBUTTON_IMAGELIST; -} - -static if (_WIN32_WINNT >= 0x600) { - struct LVITEMINDEX - { - int iItem; - int iGroup; - }; - alias LVITEMINDEX* PLVITEMINDEX; - - struct LVFOOTERINFO - { - UINT mask; - LPWSTR pszText; - int cchTextMax; - UINT cItems; - } - alias LVFOOTERINFO* LPLVFOOTERINFO; - - struct LVFOOTERITEM - { - UINT mask; - int iItem; - LPWSTR pszText; - int cchTextMax; - UINT state; - UINT stateMask; - } - alias LVFOOTERITEM *LPLVFOOTERITEM; - - alias UINT TVITEMPART; - enum { - TVGIPR_BUTTON = 0x0001, - } -} - -alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE; - -struct NMLISTVIEW { - NMHDR hdr; - int iItem; - int iSubItem; - UINT uNewState; - UINT uOldState; - UINT uChanged; - POINT ptAction; - LPARAM lParam; -} -alias NMLISTVIEW* LPNMLISTVIEW; - -deprecated { - alias NMLISTVIEW NM_LISTVIEW; - alias LPNMLISTVIEW LPNM_LISTVIEW; -} - -struct NMLVDISPINFOA { - NMHDR hdr; - LV_ITEMA item; -} -alias NMLVDISPINFOA* LPNMLVDISPINFOA; -alias NMLVDISPINFOA LV_DISPINFOA; - -struct NMLVDISPINFOW { - NMHDR hdr; - LV_ITEMW item; -} -alias NMLVDISPINFOW* LPNMLVDISPINFOW; -alias NMLVDISPINFOW LV_DISPINFOW; - -struct LV_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; -} - -struct NMLVCACHEHINT { - NMHDR hdr; - int iFrom; - int iTo; -} -alias NMLVCACHEHINT* LPNMLVCACHEHINT, PNM_CACHEHINT, LPNM_CACHEHINT; -alias NMLVCACHEHINT NM_CACHEHINT; - -struct TVITEMA { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; -} -alias TVITEMA* LPTVITEMA, LPTV_ITEMA; -alias TVITEMA TV_ITEMA; - -struct TVITEMW { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; -} -alias TVITEMW* LPTVITEMW, LPTV_ITEMW; -alias TVITEMW TV_ITEMW; - -static if (_WIN32_IE >= 0x400) { - struct TVITEMEXA { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; - int iIntegral; - } - alias TVITEMEXA* LPTVITEMEXA; - - struct TVITEMEXW { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; - int iIntegral; - } - alias TVITEMEXW* LPTVITEMEXW; -} - -static if (_WIN32_IE >= 0x400) { - struct TVINSERTSTRUCTA { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - union { - TVITEMEXA itemex; - TV_ITEMA item; - } - } - - struct TVINSERTSTRUCTW { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - union { - TVITEMEXW itemex; - TV_ITEMW item; - } - } -} else { - struct TVINSERTSTRUCTA { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - TV_ITEMA item; - } - - struct TVINSERTSTRUCTW { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - TV_ITEMW item; - } -} -alias TVINSERTSTRUCTA* LPTVINSERTSTRUCTA, LPTV_INSERTSTRUCTA; -alias TVINSERTSTRUCTA TV_INSERTSTRUCTA; -alias TVINSERTSTRUCTW* LPTVINSERTSTRUCTW, LPTV_INSERTSTRUCTW; -alias TVINSERTSTRUCTW TV_INSERTSTRUCTW; - -struct TVHITTESTINFO { - POINT pt; - UINT flags; - HTREEITEM hItem; -} -alias TVHITTESTINFO* LPTVHITTESTINFO, LPTV_HITTESTINFO; -alias TVHITTESTINFO TV_HITTESTINFO; - -static if (_WIN32_WINNT >= 0x600) { - struct TVGETITEMPARTRECTINFO { - HTREEITEM hti; - RECT* prc; - TVITEMPART partID; - } -} - -alias int function(LPARAM, LPARAM, LPARAM) PFNTVCOMPARE; -struct TVSORTCB { - HTREEITEM hParent; - PFNTVCOMPARE lpfnCompare; - LPARAM lParam; -} -alias TVSORTCB* LPTVSORTCB, LPTV_SORTCB; -alias TVSORTCB TV_SORTCB; - -struct NMTREEVIEWA { - NMHDR hdr; - UINT action; - TV_ITEMA itemOld; - TV_ITEMA itemNew; - POINT ptDrag; -} -alias NMTREEVIEWA* LPNMTREEVIEWA, LPNM_TREEVIEWA; -alias NMTREEVIEWA NM_TREEVIEWA; - -struct NMTREEVIEWW { - NMHDR hdr; - UINT action; - TV_ITEMW itemOld; - TV_ITEMW itemNew; - POINT ptDrag; -} -alias NMTREEVIEWW* LPNMTREEVIEWW, LPNM_TREEVIEWW; -alias NMTREEVIEWW NM_TREEVIEWW; - -struct NMTVDISPINFOA { - NMHDR hdr; - TVITEMA item; -} -alias NMTVDISPINFOA* LPNMTVDISPINFOA; -alias NMTVDISPINFOA TV_DISPINFOA; - -struct NMTVDISPINFOW { - NMHDR hdr; - TVITEMW item; -} -alias NMTVDISPINFOW* LPNMTVDISPINFOW; -alias NMTVDISPINFOW TV_DISPINFOW; - -static if (_WIN32_IE >= 0x400) { - struct NMTVGETINFOTIPA { - NMHDR hdr; - LPSTR pszText; - int cchTextMax; - HTREEITEM hItem; - LPARAM lParam; - } - alias NMTVGETINFOTIPA* LPNMTVGETINFOTIPA; - - struct NMTVGETINFOTIPW { - NMHDR hdr; - LPWSTR pszText; - int cchTextMax; - HTREEITEM hItem; - LPARAM lParam; - } - alias NMTVGETINFOTIPW* LPNMTVGETINFOTIPW; -} - -struct TV_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; -} - -struct TC_ITEMHEADERA { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPSTR pszText; - int cchTextMax; - int iImage; -} - -struct TC_ITEMHEADERW { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPWSTR pszText; - int cchTextMax; - int iImage; -} - -static if (_WIN32_IE >= 0x300) { - struct TCITEMA { - UINT mask; - DWORD dwState; - DWORD dwStateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } - - struct TCITEMW { - UINT mask; - DWORD dwState; - DWORD dwStateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } -} else { - struct TCITEMA { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } - - struct TCITEMW { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } -} -alias TCITEMA* LPTCITEMA; -alias TCITEMA TC_ITEMA; -alias TCITEMW* LPTCITEMW; -alias TCITEMW TC_ITEMW; - -struct TCHITTESTINFO { - POINT pt; - UINT flags; -} -alias TCHITTESTINFO* LPTCHITTESTINFO, LPTC_HITTESTINFO; -alias TCHITTESTINFO TC_HITTESTINFO; - -struct TC_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; -} - -static if (_WIN32_IE >= 0x300) { - struct INITCOMMONCONTROLSEX { - DWORD dwSize = INITCOMMONCONTROLSEX.sizeof; - DWORD dwICC; - } - alias INITCOMMONCONTROLSEX* LPINITCOMMONCONTROLSEX; -} - -struct PBRANGE { - int iLow; - int iHigh; -} -alias PBRANGE* PPBRANGE; - -struct COLORSCHEME { - DWORD dwSize = COLORSCHEME.sizeof; - COLORREF clrBtnHighlight; - COLORREF clrBtnShadow; -} -alias COLORSCHEME* LPCOLORSCHEME; - -struct MCHITTESTINFO { - UINT cbSize = MCHITTESTINFO.sizeof; - POINT pt; - UINT uHit; - SYSTEMTIME st; -} -alias MCHITTESTINFO* PMCHITTESTINFO; - -alias DWORD MONTHDAYSTATE; -alias MONTHDAYSTATE* LPMONTHDAYSTATE; - -struct NMDAYSTATE { - NMHDR nmhdr; - SYSTEMTIME stStart; - int cDayState; - LPMONTHDAYSTATE prgDayState; -} -alias NMDAYSTATE* LPNMDAYSTATE; - -struct REBARINFO { - UINT cbSize = REBARINFO.sizeof; - UINT fMask; - HIMAGELIST himl; -} -alias REBARINFO* LPREBARINFO; - -static if (_WIN32_IE >= 0x400) { - struct REBARBANDINFOA { - UINT cbSize = REBARBANDINFOA.sizeof; - UINT fMask; - UINT fStyle; - COLORREF clrFore; - COLORREF clrBack; - LPSTR lpText; - UINT cch; - int iImage; - HWND hwndChild; - UINT cxMinChild; - UINT cyMinChild; - UINT cx; - HBITMAP hbmBack; - UINT wID; - UINT cyChild; - UINT cyMaxChild; - UINT cyIntegral; - UINT cxIdeal; - LPARAM lParam; - UINT cxHeader; - } - - struct REBARBANDINFOW { - UINT cbSize = REBARBANDINFOW.sizeof; - UINT fMask; - UINT fStyle; - COLORREF clrFore; - COLORREF clrBack; - LPWSTR lpText; - UINT cch; - int iImage; - HWND hwndChild; - UINT cxMinChild; - UINT cyMinChild; - UINT cx; - HBITMAP hbmBack; - UINT wID; - UINT cyChild; - UINT cyMaxChild; - UINT cyIntegral; - UINT cxIdeal; - LPARAM lParam; - UINT cxHeader; - } - - enum : size_t { - REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.cyChild.offsetof, - REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.cyChild.offsetof - } -} else { - struct REBARBANDINFOA { - UINT cbSize = REBARBANDINFOA.sizeof; - UINT fMask; - UINT fStyle; - COLORREF clrFore; - COLORREF clrBack; - LPSTR lpText; - UINT cch; - int iImage; - HWND hwndChild; - UINT cxMinChild; - UINT cyMinChild; - UINT cx; - HBITMAP hbmBack; - UINT wID; - } - - struct REBARBANDINFOW { - UINT cbSize = REBARBANDINFOW.sizeof; - UINT fMask; - UINT fStyle; - COLORREF clrFore; - COLORREF clrBack; - LPWSTR lpText; - UINT cch; - int iImage; - HWND hwndChild; - UINT cxMinChild; - UINT cyMinChild; - UINT cx; - HBITMAP hbmBack; - UINT wID; - } - - enum : size_t { - REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.sizeof, - REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.sizeof - } -} -alias REBARBANDINFOA* LPREBARBANDINFOA; -alias const(REBARBANDINFOA)* LPCREBARBANDINFOA; -alias REBARBANDINFOW* LPREBARBANDINFOW; -alias const(REBARBANDINFOW)* LPCREBARBANDINFOW; - -static if (_WIN32_IE >= 0x300) { - struct NMLVODSTATECHANGE { - NMHDR hdr; - int iFrom; - int iTo; - UINT uNewState; - UINT uOldState; - } - alias NMLVODSTATECHANGE* LPNMLVODSTATECHANGE; - - static if (_WIN32_WINNT >= 0x501) { - struct IMAGELISTDRAWPARAMS { - DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; - HIMAGELIST himl; - int i; - HDC hdcDst; - int x; - int y; - int cx; - int cy; - int xBitmap; - int yBitmap; - COLORREF rgbBk; - COLORREF rgbFg; - UINT fStyle; - DWORD dwRop; - DWORD fState; - DWORD Frame; - COLORREF crEffect; - } - } else { - struct IMAGELISTDRAWPARAMS { - DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; - HIMAGELIST himl; - int i; - HDC hdcDst; - int x; - int y; - int cx; - int cy; - int xBitmap; - int yBitmap; - COLORREF rgbBk; - COLORREF rgbFg; - UINT fStyle; - DWORD dwRop; - } - } - alias IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS; -} - -static if (_WIN32_IE >= 0x400) { - struct NMREBARCHILDSIZE { - NMHDR hdr; - UINT uBand; - UINT wID; - RECT rcChild; - RECT rcBand; - } - alias NMREBARCHILDSIZE* LPNMREBARCHILDSIZE; - - struct NMREBAR { - NMHDR hdr; - DWORD dwMask; - UINT uBand; - UINT fStyle; - UINT wID; - LPARAM lParam; - } - alias NMREBAR* LPNMREBAR; - - struct NMRBAUTOSIZE { - NMHDR hdr; - BOOL fChanged; - RECT rcTarget; - RECT rcActual; - } - alias NMRBAUTOSIZE* LPNMRBAUTOSIZE; - - static if (_WIN32_IE >= 0x500) { - struct NMREBARCHEVRON { - NMHDR hdr; - UINT uBand; - UINT wID; - LPARAM lParam; - RECT rc; - LPARAM lParamNM; - } - alias NMREBARCHEVRON* LPNMREBARCHEVRON; - } - - struct RBHITTESTINFO { - POINT pt; - UINT flags; - int iBand; - } - alias RBHITTESTINFO* LPRBHITTESTINFO; -} - -mixin DECLARE_HANDLE!("HDSA"); -mixin DECLARE_HANDLE!("HDPA"); - -version (Unicode) { - alias HDITEMW HDITEM; - alias LPHDITEMW LPHDITEM; - alias TOOLINFOW TOOLINFO; - alias TOOLINFOW* PTOOLINFO, LPTOOLINFO; - alias TTHITTESTINFOW TTHITTESTINFO; - alias TTHITTESTINFOW* LPHITTESTINFO, LPTTHITTESTINFO; - alias TOOLTIPTEXTW TOOLTIPTEXT; - alias TOOLTIPTEXTW* LPTOOLTIPTEXT; - alias NMTTDISPINFOW NMTTDISPINFO; - alias NMTTDISPINFOW* LPNMTTDISPINFO; - alias TV_ITEMW TV_ITEM; - alias TV_ITEMW* LPTV_ITEM; - alias TVITEMW TVITEM; - alias TVITEMW* LPTVITEM; - - static if (_WIN32_IE >= 0x400) { - alias TVITEMEXW TVITEMEX; - alias TVITEMEXW* LPTVITEMEX; - } - - alias TV_INSERTSTRUCTW TV_INSERTSTRUCT; - alias TV_INSERTSTRUCTW* LPTV_INSERTSTRUCT; - alias TVINSERTSTRUCTW TVINSERTSTRUCT; - alias TVINSERTSTRUCTW* LPTVINSERTSTRUCT; - alias NM_TREEVIEWW NM_TREEVIEW; - alias NM_TREEVIEWW* LPNM_TREEVIEW; - alias NMTREEVIEWW NMTREEVIEW; - alias NMTREEVIEWW* LPNMTREEVIEW; - alias NMHDDISPINFOW NMHDDISPINFO; - alias NMHDDISPINFOW* LPNMHDDISPINFO; - - alias ACM_OPENW ACM_OPEN; - alias COMBOBOXEXITEMW COMBOBOXEXITEM; - alias PCOMBOBOXEXITEMW PCOMBOBOXEXITEM; - //alias PCCOMBOBOXEXITEMW PCCOMBOBOXEXITEM; fixme - alias CBEM_INSERTITEMW CBEM_INSERTITEM; - alias CBEM_SETITEMW CBEM_SETITEM; - alias CBEM_GETITEMW CBEM_GETITEM; - alias CBEN_ENDEDITW CBEN_ENDEDIT; - alias NMCBEENDEDITW NMCBEENDEDIT; - alias LPNMCBEENDEDITW LPNMCBEENDEDIT; - alias PNMCBEENDEDITW PNMCBEENDEDIT; - - static if (_WIN32_IE >= 0x400) { - alias NMCOMBOBOXEXW NMCOMBOBOXEX; - alias PNMCOMBOBOXEXW PNMCOMBOBOXEX; - alias CBEN_GETDISPINFOW CBEN_GETDISPINFO; - alias CBEN_DRAGBEGINW CBEN_DRAGBEGIN; - alias NMCBEDRAGBEGINW NMCBEDRAGBEGIN; - alias LPNMCBEDRAGBEGINW LPNMCBEDRAGBEGIN; - alias PNMCBEDRAGBEGINW PNMCBEDRAGBEGIN; - } - - alias SB_GETTEXTW SB_GETTEXT; - alias SB_SETTEXTW SB_SETTEXT; - alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; - alias HDM_INSERTITEMW HDM_INSERTITEM; - alias HDM_GETITEMW HDM_GETITEM; - alias HDM_SETITEMW HDM_SETITEM; - alias HDN_ITEMCHANGINGW HDN_ITEMCHANGING; - alias HDN_ITEMCHANGEDW HDN_ITEMCHANGED; - alias HDN_ITEMCLICKW HDN_ITEMCLICK; - alias HDN_ITEMDBLCLICKW HDN_ITEMDBLCLICK; - alias HDN_DIVIDERDBLCLICKW HDN_DIVIDERDBLCLICK; - alias HDN_BEGINTRACKW HDN_BEGINTRACK; - alias HDN_ENDTRACKW HDN_ENDTRACK; - alias HDN_TRACKW HDN_TRACK; - - static if (_WIN32_IE >= 0x300) { - alias HDN_GETDISPINFOW HDN_GETDISPINFO; - } - - alias HD_NOTIFYW HD_NOTIFY; - alias TBSAVEPARAMSW TBSAVEPARAMS; - alias TB_GETBUTTONTEXTW TB_GETBUTTONTEXT; - alias TB_SAVERESTOREW TB_SAVERESTORE; - alias TB_ADDSTRINGW TB_ADDSTRING; - - static if (_WIN32_IE >= 0x400) { - alias TBN_GETBUTTONINFOW TBN_GETBUTTONINFO; // fixme - alias TB_GETBUTTONINFOW TB_GETBUTTONINFO; - alias TB_SETBUTTONINFOW TB_SETBUTTONINFO; - alias TB_INSERTBUTTONW TB_INSERTBUTTON; - alias TB_ADDBUTTONSW TB_ADDBUTTONS; - alias TB_MAPACCELERATORW TB_MAPACCELERATOR; - alias TB_GETSTRINGW TB_GETSTRING; - alias TBBUTTONINFOW TBBUTTONINFO; - alias LPTBBUTTONINFOW LPTBBUTTONINFO; - alias TBN_GETDISPINFOW TBN_GETDISPINFO; - alias NMTBDISPINFOW NMTBDISPINFO; - alias LPNMTBDISPINFOW LPNMTBDISPINFO; - alias NMTBGETINFOTIPW NMTBGETINFOTIP; - alias LPNMTBGETINFOTIPW LPNMTBGETINFOTIP; - } - - alias TBNOTIFYW TBNOTIFY; - alias LPTBNOTIFYW LPTBNOTIFY; - alias NMTOOLBARW NMTOOLBAR; - alias LPNMTOOLBARW LPNMTOOLBAR; - alias TTM_ADDTOOLW TTM_ADDTOOL; - alias TTM_DELTOOLW TTM_DELTOOL; - alias TTM_NEWTOOLRECTW TTM_NEWTOOLRECT; - alias TTM_GETTOOLINFOW TTM_GETTOOLINFO; - alias TTM_SETTOOLINFOW TTM_SETTOOLINFO; - alias TTM_HITTESTW TTM_HITTEST; - alias TTM_GETTEXTW TTM_GETTEXT; - alias TTM_UPDATETIPTEXTW TTM_UPDATETIPTEXT; - alias TTM_ENUMTOOLSW TTM_ENUMTOOLS; - alias TTM_GETCURRENTTOOLW TTM_GETCURRENTTOOL; - alias TTN_NEEDTEXTW TTN_NEEDTEXT; - alias TTN_GETDISPINFOW TTN_GETDISPINFO; - //alias SB_GETTEXTW SB_GETTEXT; - //alias SB_SETTEXTW SB_SETTEXT; - //alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; - alias LV_ITEMW LV_ITEM; - alias LVITEMW LVITEM; - alias LVITEM* LPLVITEM; - alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK; - - static if (_WIN32_IE >= 0x400) { - alias LVBKIMAGEW LVBKIMAGE; - alias LPLVBKIMAGEW LPLVBKIMAGE; - alias LVM_SETBKIMAGEW LVM_SETBKIMAGE; - alias LVM_GETBKIMAGEW LVM_GETBKIMAGE; - } - - alias LVM_GETITEMW LVM_GETITEM; - alias LVM_SETITEMW LVM_SETITEM; - alias LVM_INSERTITEMW LVM_INSERTITEM; - alias LV_FINDINFOW LV_FINDINFO; - alias LVFINDINFOW LVFINDINFO; - alias LPFINDINFOW LPFINDINFO; - alias NMLVFINDITEMW NMLVFINDITEM; - alias PNMLVFINDITEMW PNMLVFINDITEM; - alias LPNMLVFINDITEMW LPNMLVFINDITEM; - alias LVM_FINDITEMW LVM_FINDITEM; - alias LVM_GETSTRINGWIDTHW LVM_GETSTRINGWIDTH; - alias LVM_EDITLABELW LVM_EDITLABEL; - alias LV_COLUMNW LV_COLUMN; - alias LVCOLUMNW LVCOLUMN; - alias LVCOLUMNW* LPLVCOLUMN; - alias LVM_GETCOLUMNW LVM_GETCOLUMN; - alias LVM_SETCOLUMNW LVM_SETCOLUMN; - alias LVM_INSERTCOLUMNW LVM_INSERTCOLUMN; - alias LVM_GETITEMTEXTW LVM_GETITEMTEXT; - alias LVM_SETITEMTEXTW LVM_SETITEMTEXT; - alias LVM_GETISEARCHSTRINGW LVM_GETISEARCHSTRING; - alias LVN_BEGINLABELEDITW LVN_BEGINLABELEDIT; - alias LVN_ENDLABELEDITW LVN_ENDLABELEDIT; - alias LVN_GETDISPINFOW LVN_GETDISPINFO; - alias LVN_SETDISPINFOW LVN_SETDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias LVN_GETINFOTIPW LVN_GETINFOTIP; - alias NMLVGETINFOTIPW NMLVGETINFOTIP; - alias LPNMLVGETINFOTIPW LPNMLVGETINFOTIP; - } - - alias LV_DISPINFOW LV_DISPINFO; - alias NMLVDISPINFOW NMLVDISPINFO; - alias LPNMLVDISPINFOW LPNMLVDISPINFO; - alias TVM_INSERTITEMW TVM_INSERTITEM; - alias TVM_GETITEMW TVM_GETITEM; - alias TVM_SETITEMW TVM_SETITEM; - alias TVM_EDITLABELW TVM_EDITLABEL; - alias TVM_GETISEARCHSTRINGW TVM_GETISEARCHSTRING; - alias NMTVDISPINFOW TV_DISPINFO; - alias NMTVDISPINFOW NMTVDISPINFO; - alias LPNMTVDISPINFOW LPNMTVDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias NMTVGETINFOTIPW NMTVGETINFOTIP; - alias LPNMTVGETINFOTIPW LPNMTVGETINFOTIP; - alias TVN_GETINFOTIPW TVN_GETINFOTIP; - } - - alias TVN_SELCHANGINGW TVN_SELCHANGING; - alias TVN_SELCHANGEDW TVN_SELCHANGED; - alias TVN_GETDISPINFOW TVN_GETDISPINFO; - alias TVN_SETDISPINFOW TVN_SETDISPINFO; - alias TVN_ITEMEXPANDINGW TVN_ITEMEXPANDING; - alias TVN_ITEMEXPANDEDW TVN_ITEMEXPANDED; - alias TVN_BEGINDRAGW TVN_BEGINDRAG; - alias TVN_BEGINRDRAGW TVN_BEGINRDRAG; - alias TVN_DELETEITEMW TVN_DELETEITEM; - alias TVN_BEGINLABELEDITW TVN_BEGINLABELEDIT; - alias TVN_ENDLABELEDITW TVN_ENDLABELEDIT; - alias TC_ITEMHEADERW TC_ITEMHEADER; - alias TC_ITEMW TC_ITEM; - alias TCITEMW TCITEM; - alias LPTCITEMW LPTCITEM; - alias TCM_GETITEMW TCM_GETITEM; - alias TCM_SETITEMW TCM_SETITEM; - alias TCM_INSERTITEMW TCM_INSERTITEM; - alias CreateStatusWindowW CreateStatusWindow; - alias DrawStatusTextW DrawStatusText; - alias ImageList_LoadImageW ImageList_LoadImage; - alias DTM_SETFORMATW DTM_SETFORMAT; - alias DTN_USERSTRINGW DTN_USERSTRING; - alias DTN_WMKEYDOWNW DTN_WMKEYDOWN; - alias DTN_FORMATW DTN_FORMAT; - alias DTN_FORMATQUERYW DTN_FORMATQUERY; - alias REBARBANDINFOW REBARBANDINFO; - alias REBARBANDINFO* LPREBARBANDINFO; - alias LPCREBARBANDINFOW LPCREBARBANDINFO; - alias REBARBANDINFOW_V3_SIZE REBARBANDINFO_V3_SIZE; - alias RB_INSERTBANDW RB_INSERTBAND; - alias RB_SETBANDINFOW RB_SETBANDINFO; -} else { - alias HDITEMA HDITEM; - alias LPHDITEMA LPHDITEM; - alias TOOLINFOA TOOLINFO; - alias TOOLINFOA* PTOOLINFO, LPTOOLINFO; - alias TTHITTESTINFOA TTHITTESTINFO; - alias TTHITTESTINFOA* LPHITTESTINFO, LPTTHITTESTINFO; - alias TOOLTIPTEXTA TOOLTIPTEXT; - alias TOOLTIPTEXTA* LPTOOLTIPTEXT; - alias NMTTDISPINFOA NMTTDISPINFO; - alias NMTTDISPINFOA* LPNMTTDISPINFO; - alias TV_ITEMA TV_ITEM; - alias TV_ITEMA* LPTV_ITEM; - alias TVITEMA TVITEM; - alias TVITEMA* LPTVITEM; - - static if (_WIN32_IE >= 0x400) { - alias TVITEMEXA TVITEMEX; - alias TVITEMEXA* LPTVITEMEX; - } - - alias TV_INSERTSTRUCTA TV_INSERTSTRUCT; - alias TV_INSERTSTRUCTA* LPTV_INSERTSTRUCT; - alias TVINSERTSTRUCTA TVINSERTSTRUCT; - alias TVINSERTSTRUCTA* LPTVINSERTSTRUCT; - alias NM_TREEVIEWA NM_TREEVIEW; - alias NM_TREEVIEWA* LPNM_TREEVIEW; - alias NMTREEVIEWA NMTREEVIEW; - alias NMTREEVIEWA* LPNMTREEVIEW; - alias NMHDDISPINFOW NMHDDISPINFO; - alias NMHDDISPINFOW* LPNMHDDISPINFO; - - alias ACM_OPENA ACM_OPEN; - alias COMBOBOXEXITEMA COMBOBOXEXITEM; - alias PCOMBOBOXEXITEMA PCOMBOBOXEXITEM; - //alias PCCOMBOBOXEXITEMA PCCOMBOBOXEXITEM; fixme - alias CBEM_INSERTITEMA CBEM_INSERTITEM; - alias CBEM_SETITEMA CBEM_SETITEM; - alias CBEM_GETITEMA CBEM_GETITEM; - alias CBEN_ENDEDITA CBEN_ENDEDIT; - alias NMCBEENDEDITA NMCBEENDEDIT; - alias LPNMCBEENDEDITA LPNMCBEENDEDIT; - alias PNMCBEENDEDITA PNMCBEENDEDIT; - - static if (_WIN32_IE >= 0x400) { - alias TB_GETBUTTONINFOA TB_GETBUTTONINFO; - alias TB_SETBUTTONINFOA TB_SETBUTTONINFO; - alias TB_INSERTBUTTONA TB_INSERTBUTTON; - alias TB_ADDBUTTONSA TB_ADDBUTTONS; - alias TB_MAPACCELERATORA TB_MAPACCELERATOR; - alias TB_GETSTRINGA TB_GETSTRING; - alias NMCOMBOBOXEXA NMCOMBOBOXEX; - alias PNMCOMBOBOXEXA PNMCOMBOBOXEX; - alias CBEN_DRAGBEGINA CBEN_DRAGBEGIN; - alias CBEN_GETDISPINFOA CBEN_GETDISPINFO; - alias NMCBEDRAGBEGINA NMCBEDRAGBEGIN; - alias LPNMCBEDRAGBEGINA LPNMCBEDRAGBEGIN; - alias PNMCBEDRAGBEGINA PNMCBEDRAGBEGIN; - alias TBN_GETDISPINFOA TBN_GETDISPINFO; - alias NMTBDISPINFOA NMTBDISPINFO; - alias LPNMTBDISPINFOA LPNMTBDISPINFO; - alias NMTBGETINFOTIPA NMTBGETINFOTIP; - alias LPNMTBGETINFOTIPA LPNMTBGETINFOTIP; - } - - alias SB_GETTEXTA SB_GETTEXT; - alias SB_SETTEXTA SB_SETTEXT; - alias SB_GETTEXTLENGTHA SB_GETTEXTLENGTH; - alias HDM_INSERTITEMA HDM_INSERTITEM; - alias HDM_GETITEMA HDM_GETITEM; - alias HDM_SETITEMA HDM_SETITEM; - alias HDN_ITEMCHANGINGA HDN_ITEMCHANGING; - alias HDN_ITEMCHANGEDA HDN_ITEMCHANGED; - alias HDN_ITEMCLICKA HDN_ITEMCLICK; - alias HDN_ITEMDBLCLICKA HDN_ITEMDBLCLICK; - alias HDN_DIVIDERDBLCLICKA HDN_DIVIDERDBLCLICK; - alias HDN_BEGINTRACKA HDN_BEGINTRACK; - alias HDN_ENDTRACKA HDN_ENDTRACK; - alias HDN_TRACKA HDN_TRACK; - - static if (_WIN32_IE >= 0x300) { - alias HDN_GETDISPINFOA HDN_GETDISPINFO; - } - - alias HD_NOTIFYA HD_NOTIFY; - alias TBSAVEPARAMSA TBSAVEPARAMS; - alias TB_GETBUTTONTEXTA TB_GETBUTTONTEXT; - alias TB_SAVERESTOREA TB_SAVERESTORE; - alias TB_ADDSTRINGA TB_ADDSTRING; - alias TBN_GETBUTTONINFOA TBN_GETBUTTONINFO; - - static if (_WIN32_IE >= 0x400) { - alias TBBUTTONINFOA TBBUTTONINFO; - alias LPTBBUTTONINFOA LPTBBUTTONINFO; - } - - alias TBNOTIFYA TBNOTIFY; - alias LPTBNOTIFYA LPTBNOTIFY; - alias NMTOOLBARA NMTOOLBAR; - alias LPNMTOOLBARA LPNMTOOLBAR; - alias TTM_ADDTOOLA TTM_ADDTOOL; - alias TTM_DELTOOLA TTM_DELTOOL; - alias TTM_NEWTOOLRECTA TTM_NEWTOOLRECT; - alias TTM_GETTOOLINFOA TTM_GETTOOLINFO; - alias TTM_SETTOOLINFOA TTM_SETTOOLINFO; - alias TTM_HITTESTA TTM_HITTEST; - alias TTM_GETTEXTA TTM_GETTEXT; - alias TTM_UPDATETIPTEXTA TTM_UPDATETIPTEXT; - alias TTM_ENUMTOOLSA TTM_ENUMTOOLS; - alias TTM_GETCURRENTTOOLA TTM_GETCURRENTTOOL; - alias TTN_NEEDTEXTA TTN_NEEDTEXT; - alias TTN_GETDISPINFOA TTN_GETDISPINFO; - alias LV_ITEMA LV_ITEM; - alias LVITEMA LVITEM; - alias LVITEM* LPLVITEM; - alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK; - - static if (_WIN32_IE >= 0x400) { - alias LVBKIMAGEA LVBKIMAGE; - alias LPLVBKIMAGEA LPLVBKIMAGE; - alias LVM_SETBKIMAGEA LVM_SETBKIMAGE; - alias LVM_GETBKIMAGEA LVM_GETBKIMAGE; - } - - alias LVM_GETITEMA LVM_GETITEM; - alias LVM_SETITEMA LVM_SETITEM; - alias LVM_INSERTITEMA LVM_INSERTITEM; - alias LV_FINDINFOA LV_FINDINFO; - alias LVFINDINFOA LVFINDINFO; - alias LPFINDINFOA LPFINDINFO; - alias NMLVFINDITEMA NMLVFINDITEM; - alias PNMLVFINDITEMA PNMLVFINDITEM; - alias LPNMLVFINDITEMA LPNMLVFINDITEM; - alias LVM_FINDITEMA LVM_FINDITEM; - alias LVM_GETSTRINGWIDTHA LVM_GETSTRINGWIDTH; - alias LVM_EDITLABELA LVM_EDITLABEL; - alias LV_COLUMNA LV_COLUMN; - alias LVCOLUMNA LVCOLUMN; - alias LVCOLUMNA* LPLVCOLUMN; - alias LVM_GETCOLUMNA LVM_GETCOLUMN; - alias LVM_SETCOLUMNA LVM_SETCOLUMN; - alias LVM_INSERTCOLUMNA LVM_INSERTCOLUMN; - alias LVM_GETITEMTEXTA LVM_GETITEMTEXT; - alias LVM_SETITEMTEXTA LVM_SETITEMTEXT; - alias LVM_GETISEARCHSTRINGA LVM_GETISEARCHSTRING; - alias LVN_BEGINLABELEDITA LVN_BEGINLABELEDIT; - alias LVN_ENDLABELEDITA LVN_ENDLABELEDIT; - alias LVN_GETDISPINFOA LVN_GETDISPINFO; - alias LVN_SETDISPINFOA LVN_SETDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias LVN_GETINFOTIPA LVN_GETINFOTIP; - alias NMLVGETINFOTIPA NMLVGETINFOTIP; - alias LPNMLVGETINFOTIPA LPNMLVGETINFOTIP; - } - - alias LV_DISPINFOA LV_DISPINFO; - alias NMLVDISPINFOA NMLVDISPINFO; - alias LPNMLVDISPINFOA LPNMLVDISPINFO; - alias TVM_INSERTITEMA TVM_INSERTITEM; - alias TVM_GETITEMA TVM_GETITEM; - alias TVM_SETITEMA TVM_SETITEM; - alias TVM_EDITLABELA TVM_EDITLABEL; - alias TVM_GETISEARCHSTRINGA TVM_GETISEARCHSTRING; - alias NMTVDISPINFOA TV_DISPINFO; - alias NMTVDISPINFOA NMTVDISPINFO; - alias LPNMTVDISPINFOA LPNMTVDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias NMTVGETINFOTIPA NMTVGETINFOTIP; - alias LPNMTVGETINFOTIPA LPNMTVGETINFOTIP; - alias TVN_GETINFOTIPA TVN_GETINFOTIP; - } - - alias TVN_SELCHANGINGA TVN_SELCHANGING; - alias TVN_SELCHANGEDA TVN_SELCHANGED; - alias TVN_GETDISPINFOA TVN_GETDISPINFO; - alias TVN_SETDISPINFOA TVN_SETDISPINFO; - alias TVN_ITEMEXPANDINGA TVN_ITEMEXPANDING; - alias TVN_ITEMEXPANDEDA TVN_ITEMEXPANDED; - alias TVN_BEGINDRAGA TVN_BEGINDRAG; - alias TVN_BEGINRDRAGA TVN_BEGINRDRAG; - alias TVN_DELETEITEMA TVN_DELETEITEM; - alias TVN_BEGINLABELEDITA TVN_BEGINLABELEDIT; - alias TVN_ENDLABELEDITA TVN_ENDLABELEDIT; - alias TC_ITEMHEADERA TC_ITEMHEADER; - alias TC_ITEMA TC_ITEM; - alias TCITEMA TCITEM; - alias LPTCITEMA LPTCITEM; - alias TCM_GETITEMA TCM_GETITEM; - alias TCM_SETITEMA TCM_SETITEM; - alias TCM_INSERTITEMA TCM_INSERTITEM; - alias CreateStatusWindowA CreateStatusWindow; - alias DrawStatusTextA DrawStatusText; - alias ImageList_LoadImageA ImageList_LoadImage; - alias DTM_SETFORMATA DTM_SETFORMAT; - alias DTN_USERSTRINGA DTN_USERSTRING; - alias DTN_WMKEYDOWNA DTN_WMKEYDOWN; - alias DTN_FORMATA DTN_FORMAT; - alias DTN_FORMATQUERYA DTN_FORMATQUERY; - alias REBARBANDINFOA REBARBANDINFO; - alias REBARBANDINFOA* LPREBARBANDINFO; - alias LPCREBARBANDINFOA LPCREBARBANDINFO; - alias REBARBANDINFOA_V3_SIZE REBARBANDINFO_V3_SIZE; - alias RB_INSERTBANDA RB_INSERTBAND; - alias RB_SETBANDINFOA RB_SETBANDINFO; -} - - -alias INT function(PVOID, PVOID) PFNDPAENUMCALLBACK; -alias INT function(PVOID, PVOID) PFNDSAENUMCALLBACK; -alias INT function(PVOID, PVOID, LPARAM) PFNDPACOMPARE; - -static if (_WIN32_WINNT >= 0x501) { - extern (Windows) - alias LRESULT function(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR) - SUBCLASSPROC; - - struct LITEM { - UINT mask; - int iLink; - UINT state; - UINT stateMask; - WCHAR[MAX_LINKID_TEXT] szID; - WCHAR[L_MAX_URL_LENGTH] szUrl; - } - alias LITEM* PLITEM; - - struct LHITTESTINFO { - POINT pt; - LITEM item; - } - alias LHITTESTINFO* PLHITTESTINFO; - - struct NMLINK { - NMHDR hdr; - LITEM item; - } - alias NMLINK* PNMLINK; -} - -uint INDEXTOOVERLAYMASK(uint i) { return i << 8; } -uint INDEXTOSTATEIMAGEMASK(uint i) { return i << 12; } - -template HANDLE_WM_NOTIFY(R) { - R HANDLE_WM_NOTIFY(HWND hwnd, WPARAM wParam, LPARAM lParam, - R function(HWND, int, NMHDR*) fn) { - return fn(hwnd, wParam, cast(NMHDR*) lParam); - } -} -int FORWARD_WM_NOTIFY(HWND hwnd, int idFrom, NMHDR* pnmhdr, - int function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) fn) { - return fn(hwnd, WM_NOTIFY, idFrom, cast(LPARAM) pnmhdr); -} - -//#define CCSIZEOF_STRUCT(s, m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m)) - -LPARAM MAKEIPADDRESS(ubyte b1, ubyte b2, ubyte b3, ubyte b4) { - return (cast(DWORD) b1 << 24) - | (cast(DWORD) b2 << 16) - | (cast(DWORD) b3 << 8) - | (cast(DWORD) b4); -} - -LPARAM MAKEIPRANGE(ubyte low, ubyte high) { - return (cast(int) high << 8) | low; -} - -ubyte FIRST_IPADDRESS(LPARAM x) { - return cast(ubyte) (x >> 24); -} - -ubyte SECOND_IPADDRESS(LPARAM x) { - return cast(ubyte) (x >> 16); -} - -ubyte THIRD_IPADDRESS(LPARAM x) { - return cast(ubyte) (x >> 8); -} - -ubyte FOURTH_IPADDRESS(LPARAM x) { - return cast(ubyte) x; -} - -HWND Animate_Create(HWND hwndP, UINT id, DWORD dwStyle, - HINSTANCE hInstance) { - return CreateWindow(cast(TCHAR*)ANIMATE_CLASS.ptr, null, dwStyle, 0, 0, 0, 0, hwndP, - cast(HMENU) id, hInstance, null); -} - -BOOL Animate_Open(HWND hwnd, LPTSTR szName) { - return cast(BOOL) SendMessage(hwnd, ACM_OPEN, 0, cast(LPARAM) szName); -} - -BOOL Animate_OpenEx(HWND hwnd, HINSTANCE hInst, LPTSTR szName) { - return cast(BOOL) SendMessage(hwnd, ACM_OPEN, cast(WPARAM) hInst, - cast(LPARAM) szName); -} - -BOOL Animate_Play(HWND hwnd, int from, int to, int rep) { - return cast(BOOL) SendMessage(hwnd, ACM_PLAY, rep, - MAKELONG(cast(ushort) from, cast(ushort) to)); -} - -BOOL Animate_Stop(HWND hwnd) { - return cast(BOOL) SendMessage(hwnd, ACM_STOP, 0, 0); -} - -BOOL Animate_Close(HWND hwnd) { - return Animate_Open(hwnd, null); -} - -BOOL Animate_Seek(HWND hwnd, int frame) { - return Animate_Play(hwnd, frame, frame, 1); -} - -extern (Windows) { - HBITMAP CreateMappedBitmap(HINSTANCE, INT_PTR, UINT, LPCOLORMAP, int); - HWND CreateStatusWindowA(LONG, LPCSTR, HWND, UINT); - HWND CreateStatusWindowW(LONG, LPCWSTR, HWND, UINT); - HWND CreateToolbarEx(HWND, DWORD, UINT, int, HINSTANCE, UINT_PTR, - LPCTBBUTTON, int, int, int, int, int, UINT); - HWND CreateUpDownControl(DWORD, int, int, int, int, HWND, int, HINSTANCE, - HWND, int, int, int); -} - -HWND DateTime_GetMonthCal(HWND hwnd) { - return cast(HWND) SendMessage(hwnd, DTM_GETMONTHCAL, 0, 0); -} - -COLORREF DateTime_GetMonthCalColor(HWND hwnd, int iColor) { - return cast(COLORREF) SendMessage(hwnd, DTM_GETMCCOLOR, iColor, 0); -} - -HFONT DateTime_GetMonthCalFont(HWND hwnd) { - return cast(HFONT) SendMessage(hwnd, DTM_GETMCFONT, 0, 0); -} - -DWORD DateTime_GetRange(HWND hwnd, LPSYSTEMTIME lpSysTimeArray) { - return cast(DWORD) SendMessage(hwnd, DTM_GETRANGE, 0, cast(LPARAM) lpSysTimeArray); -} - -DWORD DateTime_GetSystemtime(HWND hwnd, LPSYSTEMTIME lpSysTime) { - return cast(DWORD) SendMessage(hwnd, DTM_GETSYSTEMTIME, 0, cast(LPARAM) lpSysTime); -} - -BOOL DateTime_SetFormat(HWND hwnd, LPCTSTR lpszFormat) { - return cast(BOOL) SendMessage(hwnd, DTM_SETFORMAT, 0, - cast(LPARAM) lpszFormat); -} - -LRESULT DateTime_SetMonthCalColor(HWND hwnd, int iColor, COLORREF clr) { - return SendMessage(hwnd, DTM_SETMCCOLOR, cast(WPARAM) iColor, - cast(LPARAM) clr); -} - -void DateTime_SetMonthCalFont(HWND hwnd, HFONT hfont, BOOL fRedraw) { - SendMessage(hwnd, DTM_SETMCFONT, cast(WPARAM) hfont, fRedraw); -} - -BOOL DateTime_SetRange(HWND hwnd, WPARAM flags, LPSYSTEMTIME lpSysTimeArray) { - return cast(BOOL) SendMessage(hwnd, DTM_SETRANGE, flags, - cast(LPARAM) lpSysTimeArray); -} - -BOOL DateTime_SetSystemtime(HWND hwnd, WPARAM flag, LPSYSTEMTIME lpSysTime) { - return cast(BOOL) SendMessage(hwnd, DTM_SETSYSTEMTIME, flag, - cast(LPARAM) lpSysTime); -} - -extern (Windows) { - void DrawInsert(HWND, HWND, int); - void DrawStatusTextA(HDC, LPRECT, LPCSTR, UINT); - void DrawStatusTextW(HDC, LPRECT, LPCWSTR, UINT); - void GetEffectiveClientRect(HWND, LPRECT, LPINT); -} - -int Header_GetItemCount(HWND w) { - return cast(int) SendMessage(w, HDM_GETITEMCOUNT, 0, 0); -} - -int Header_InsertItem(HWND w, int i, const(HDITEM)* phdi) { - return cast(int) SendMessage(w, HDM_INSERTITEM, i, cast(LPARAM) phdi); -} - -BOOL Header_DeleteItem(HWND w, int i) { - return cast(BOOL) SendMessage(w, HDM_DELETEITEM, i, 0); -} - -BOOL Header_GetItem(HWND w, int i, LPHDITEM phdi) { - return cast(BOOL) SendMessage(w, HDM_GETITEM, i, cast(LPARAM) phdi); -} - -BOOL Header_SetItem(HWND w, int i, const(HDITEM)* phdi) { - return cast(BOOL) SendMessage(w, HDM_SETITEM, i, cast(LPARAM) phdi); -} - -BOOL Header_Layout(HWND w, LPHDLAYOUT playout) { - return cast(BOOL) SendMessage(w, HDM_LAYOUT, 0, cast(LPARAM) playout); -} - -static if (_WIN32_IE >= 0x300) { - int Header_OrderToIndex(HWND w, int i) { - return cast(int) SendMessage(w, HDM_ORDERTOINDEX, i, 0); - } - - BOOL Header_GetItemRect(HWND w, int i, RECT* r) { - return cast(BOOL) SendMessage(w, HDM_GETITEMRECT, i, cast(LPARAM) r); - } - - BOOL Header_GetOrderArray(HWND w, int iSize, LPINT lpiArray) { - return cast(BOOL) SendMessage(w, HDM_GETORDERARRAY, iSize, - cast(LPARAM) lpiArray); - } - - BOOL Header_SetOrderArray(HWND w, int iSize, LPINT lpiArray) { - return cast(BOOL) SendMessage(w, HDM_SETORDERARRAY, iSize, - cast(LPARAM) lpiArray); - } - - HIMAGELIST Header_CreateDragImage(HWND w, int i) { - return cast(HIMAGELIST) SendMessage(w, HDM_CREATEDRAGIMAGE, i, 0); - } - - HIMAGELIST Header_SetImageList(HWND w, HIMAGELIST himl) { - return cast(HIMAGELIST) SendMessage(w, HDM_SETIMAGELIST, 0, - cast(LPARAM) himl); - } - - HIMAGELIST Header_GetImageList(HWND w) { - return cast(HIMAGELIST) SendMessage(w, HDM_GETIMAGELIST, 0, 0); - } -} - -static if (_WIN32_IE >= 0x400) { - BOOL Header_GetUnicodeFormat(HWND w) { - return cast(BOOL) SendMessage(w, HDM_GETUNICODEFORMAT, 0, 0); - } - - BOOL Header_SetUnicodeFormat(HWND w, BOOL fUnicode) { - return cast(BOOL) SendMessage(w, HDM_SETUNICODEFORMAT, fUnicode, 0); - } -} - -extern (Windows) { - HDSA DSA_Create(INT, INT); - BOOL DSA_Destroy(HDSA); - VOID DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, PVOID); - PVOID DSA_GetItemPtr(HDSA, INT); - INT DSA_InsertItem(HDSA, INT, PVOID); - HDPA DPA_Create(INT); - BOOL DPA_Destroy(HDPA); - PVOID DPA_DeletePtr(HDPA, INT); - BOOL DPA_DeleteAllPtrs(HDPA); - VOID DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); - VOID DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); - BOOL DPA_SetPtr(HDPA, INT, PVOID); - INT DPA_InsertPtr(HDPA, INT, PVOID); - PVOID DPA_GetPtr(HDPA, INT_PTR); - BOOL DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM); - INT DPA_Search(HDPA, PVOID, INT, PFNDPACOMPARE, LPARAM, UINT); - BOOL Str_SetPtrW(LPWSTR*, LPCWSTR); - - static if (_WIN32_IE >= 0x400) { - BOOL FlatSB_EnableScrollBar(HWND, INT, UINT); - BOOL FlatSB_ShowScrollBar(HWND, INT, BOOL); - BOOL FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT); - BOOL FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO); - INT FlatSB_GetScrollPos(HWND, INT); - BOOL FlatSB_GetScrollProp(HWND, INT, LPINT); - version (Win64) { - BOOL FlatSB_GetScrollPropPtr(HWND, INT, PINT_PTR); - } else { - alias FlatSB_GetScrollProp FlatSB_GetScrollPropPtr; - } - INT FlatSB_SetScrollPos(HWND, INT, INT, BOOL); - INT FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL); - INT FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL); - BOOL FlatSB_SetScrollProp(HWND, UINT, INT_PTR, BOOL); - alias FlatSB_SetScrollProp FlatSB_SetScrollPropPtr; - BOOL InitializeFlatSB(HWND); - HRESULT UninitializeFlatSB(HWND); - } - - static if (_WIN32_WINNT >= 0x501) { - BOOL SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR); - BOOL GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*); - BOOL RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR); - LRESULT DefSubclassProc(HWND, UINT, WPARAM, LPARAM); - INT DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, - COLORREF, INT, INT); - } - - int ImageList_Add(HIMAGELIST, HBITMAP, HBITMAP); - int ImageList_AddMasked(HIMAGELIST, HBITMAP, COLORREF); - BOOL ImageList_BeginDrag(HIMAGELIST, int, int, int); - HIMAGELIST ImageList_Create(int, int, UINT, int, int); - BOOL ImageList_Destroy(HIMAGELIST); - BOOL ImageList_DragEnter(HWND, int, int); - BOOL ImageList_DragLeave(HWND); - BOOL ImageList_DragMove(int, int); - BOOL ImageList_DragShowNolock(BOOL); - BOOL ImageList_Draw(HIMAGELIST, int, HDC, int, int, UINT); - BOOL ImageList_DrawEx(HIMAGELIST, int, HDC, int, int, int, int, COLORREF, - COLORREF, UINT); - void ImageList_EndDrag(); - COLORREF ImageList_GetBkColor(HIMAGELIST); - HIMAGELIST ImageList_GetDragImage(LPPOINT, LPPOINT); - HICON ImageList_GetIcon(HIMAGELIST, int, UINT); - BOOL ImageList_GetIconSize(HIMAGELIST, int*, int*); - int ImageList_GetImageCount(HIMAGELIST); - BOOL ImageList_GetImageInfo(HIMAGELIST, int, IMAGEINFO*); - HIMAGELIST ImageList_LoadImageA(HINSTANCE, LPCSTR, int, int, COLORREF, - UINT, UINT); - HIMAGELIST ImageList_LoadImageW(HINSTANCE, LPCWSTR, int, int, COLORREF, - UINT, UINT); - HIMAGELIST ImageList_Merge(HIMAGELIST, int, HIMAGELIST, int, int, int); - BOOL ImageList_Remove(HIMAGELIST, int); - BOOL ImageList_Replace(HIMAGELIST, int, HBITMAP, HBITMAP); - int ImageList_ReplaceIcon(HIMAGELIST, int, HICON); - COLORREF ImageList_SetBkColor(HIMAGELIST, COLORREF); - BOOL ImageList_SetDragCursorImage(HIMAGELIST, int, int, int); - BOOL ImageList_SetIconSize(HIMAGELIST, int, int); - BOOL ImageList_SetOverlayImage(HIMAGELIST, int, int); - - //#ifdef _OBJIDL_H - HIMAGELIST ImageList_Read(LPSTREAM); - BOOL ImageList_Write(HIMAGELIST, LPSTREAM); - //#endif - - static if (_WIN32_IE >= 0x400) { - HIMAGELIST ImageList_Duplicate(HIMAGELIST himl); - } - - void InitCommonControls(); - - static if (_WIN32_IE >= 0x300) { - BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX); - } - - int LBItemFromPt(HWND, POINT, BOOL); -} - -int ImageList_AddIcon(HIMAGELIST himl, HICON hicon) { - return ImageList_ReplaceIcon(himl, -1, hicon); -} - -HICON ImageList_ExtractIcon(HINSTANCE hi, HIMAGELIST himl, int i) { - return ImageList_GetIcon(himl, i, 0); -} - -HIMAGELIST ImageList_LoadBitmap(HINSTANCE hi, LPCTSTR lpbmp, int cx, - int cGrow, COLORREF crMask) { - return ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0); -} - -BOOL ImageList_RemoveAll(HIMAGELIST himl) { - return ImageList_Remove(himl, -1); -} - -COLORREF ListView_GetBkColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETBKCOLOR, 0, 0); -} - -HIMAGELIST ListView_GetImageList(HWND w, int i) { - return cast(HIMAGELIST) SendMessage(w, LVM_GETIMAGELIST, i, 0); -} - -int ListView_GetItemCount(HWND w) { - return cast(int) SendMessage(w, LVM_GETITEMCOUNT, 0, 0); -} - -BOOL ListView_GetItem(HWND w, LPLVITEM pitem) { - return cast(BOOL) SendMessage(w, LVM_GETITEM, 0, cast(LPARAM) pitem); -} - -BOOL ListView_SetBkColor(HWND w, COLORREF c) { - return cast(BOOL) SendMessage(w, LVM_SETBKCOLOR, 0, cast(LPARAM) c); -} - -HIMAGELIST ListView_SetImageList(HWND w, HIMAGELIST h, int i) { - return cast(HIMAGELIST) SendMessage(w, LVM_SETIMAGELIST, i, - cast(LPARAM) h); -} - -BOOL ListView_SetItem(HWND w, const(LV_ITEM)* i) { - return cast(BOOL) SendMessage(w, LVM_SETITEM, 0, cast(LPARAM) i); -} - -int ListView_InsertItem(HWND w, const(LV_ITEM)* i) { - return cast(int) SendMessage(w, LVM_INSERTITEM, 0, cast(LPARAM) i); -} - -BOOL ListView_DeleteItem(HWND w, int i) { - return cast(BOOL) SendMessage(w, LVM_DELETEITEM, i, 0); -} - -BOOL ListView_DeleteAllItems(HWND w) { - return cast(BOOL) SendMessage(w, LVM_DELETEALLITEMS, 0, 0); -} - -UINT ListView_GetCallbackMask(HWND w) { - return cast(UINT) SendMessage(w, LVM_GETCALLBACKMASK, 0, 0); -} - -BOOL ListView_SetCallbackMask(HWND w, UINT m) { - return cast(BOOL) SendMessage(w, LVM_SETCALLBACKMASK, m, 0); -} - -int ListView_GetNextItem(HWND w, int i, UINT f) { - return cast(int) SendMessage(w, LVM_GETNEXTITEM, i, MAKELPARAM(cast(ushort)f, 0)); -} - -int ListView_FindItem(HWND w, int i, const(LV_FINDINFO)* p) { - return cast(int) SendMessage(w, LVM_FINDITEM, i, cast(LPARAM) p); -} - -BOOL ListView_GetItemRect(HWND w, int i, LPRECT p, int c) { - return cast(BOOL) SendMessage(w, LVM_GETITEMRECT, i, p ? - (p.left = c, cast(LPARAM) p) : 0); -} - -BOOL ListView_SetItemPosition(HWND w, int i, int x, int y) { - return cast(BOOL) SendMessage(w, LVM_SETITEMPOSITION, i, MAKELPARAM(cast(ushort)x, cast(ushort)y)); -} - -BOOL ListView_GetItemPosition(HWND w, int i, POINT* p) { - return cast(BOOL) SendMessage(w, LVM_GETITEMPOSITION, i, cast(LPARAM) p); -} - -DWORD ListView_GetItemSpacing(HWND w, BOOL f) { - return cast(DWORD) SendMessage(w, LVM_GETITEMSPACING, f, 0); -} - -int ListView_GetStringWidth(HWND w, LPCSTR s) { - return cast(int) SendMessage(w, LVM_GETSTRINGWIDTH, 0, cast(LPARAM) s); -} - -int ListView_HitTest(HWND w, LPLVHITTESTINFO p) { - return cast(int) SendMessage(w, LVM_HITTEST, 0, cast(LPARAM) p); -} - -BOOL ListView_EnsureVisible(HWND w, int i, BOOL f) { - return cast(BOOL) SendMessage(w, LVM_ENSUREVISIBLE, i, MAKELPARAM(cast(ushort)f, 0)); -} - -BOOL ListView_Scroll(HWND w, int dx, int dy) { - return cast(BOOL) SendMessage(w, LVM_SCROLL, dx, dy); -} - -BOOL ListView_RedrawItems(HWND w, int f, int l) { - return cast(BOOL) SendMessage(w, LVM_REDRAWITEMS, f, l); -} - -BOOL ListView_Arrange(HWND w, UINT c) { - return cast(BOOL) SendMessage(w, LVM_ARRANGE, c, 0); -} - -HWND ListView_EditLabel(HWND w, int i) { - return cast(HWND) SendMessage(w, LVM_EDITLABEL, i, 0); -} - -HWND ListView_GetEditControl(HWND w) { - return cast(HWND) SendMessage(w, LVM_GETEDITCONTROL, 0, 0); -} - -BOOL ListView_GetColumn(HWND w, int i, LPLVCOLUMN p) { - return cast(BOOL) SendMessage(w, LVM_GETCOLUMN, i, cast(LPARAM) p); -} - -BOOL ListView_SetColumn(HWND w, int i, const(LV_COLUMN)* p) { - return cast(BOOL) SendMessage(w, LVM_SETCOLUMN, i, cast(LPARAM) p); -} - -int ListView_InsertColumn(HWND w, int i, const(LV_COLUMN)* p) { - return cast(int) SendMessage(w, LVM_INSERTCOLUMN, i, cast(LPARAM) p); -} - -BOOL ListView_DeleteColumn(HWND w, int i) { - return cast(BOOL) SendMessage(w, LVM_DELETECOLUMN, i, 0); -} - -int ListView_GetColumnWidth(HWND w, int i) { - return cast(int) SendMessage(w, LVM_GETCOLUMNWIDTH, i, 0); -} - -BOOL ListView_SetColumnWidth(HWND w, int i, int x) { - return cast(BOOL) SendMessage(w, LVM_SETCOLUMNWIDTH, i, MAKELPARAM(cast(ushort)x, 0)); -} - -HIMAGELIST ListView_CreateDragImage(HWND w, int i, LPPOINT p) { - return cast(HIMAGELIST) SendMessage(w, LVM_CREATEDRAGIMAGE, i, - cast(LPARAM) p); -} - -BOOL ListView_GetViewRect(HWND w, RECT* p) { - return cast(BOOL) SendMessage(w, LVM_GETVIEWRECT, 0, cast(LPARAM) p); -} - -COLORREF ListView_GetTextColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETTEXTCOLOR, 0, 0); -} - -BOOL ListView_SetTextColor(HWND w, COLORREF c) { - return cast(BOOL) SendMessage(w, LVM_SETTEXTCOLOR, 0, cast(LPARAM) c); -} - -COLORREF ListView_GetTextBkColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETTEXTBKCOLOR, 0, 0); -} - -BOOL ListView_SetTextBkColor(HWND w, COLORREF c) { - return cast(BOOL) SendMessage(w, LVM_SETTEXTBKCOLOR, 0, cast(LPARAM) c); -} - -int ListView_GetTopIndex(HWND w) { - return cast(int) SendMessage(w, LVM_GETTOPINDEX, 0, 0); -} - -int ListView_GetCountPerPage(HWND w) { - return cast(int) SendMessage(w, LVM_GETCOUNTPERPAGE, 0, 0); -} - -BOOL ListView_GetOrigin(HWND w, LPPOINT p) { - return cast(BOOL) SendMessage(w, LVM_GETORIGIN, 0, cast(LPARAM) p); -} - -BOOL ListView_Update(HWND w, WPARAM i) { - return cast(BOOL) SendMessage(w, LVM_UPDATE, i, 0); -} - -void ListView_SetItemState(HWND w, int i, UINT d, UINT m) { - LV_ITEM _lvi; - _lvi.stateMask = m; - _lvi.state = d; - SendMessage(w, LVM_SETITEMSTATE, i, cast(LPARAM) &_lvi); -} - -UINT ListView_GetItemState(HWND w, int i, UINT m) { - return cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, m); -} - -void ListView_GetItemText(HWND w, int i, int iS, LPTSTR s, int n) { - LV_ITEM _lvi; - _lvi.iSubItem = iS; - _lvi.cchTextMax = n; - _lvi.pszText = s; - SendMessage(w, LVM_GETITEMTEXT, i, cast(LPARAM) &_lvi); -} - -void ListView_SetItemText(HWND w, int i, int iS, LPTSTR s) { - LV_ITEM _lvi; - _lvi.iSubItem = iS; - _lvi.pszText = s; - SendMessage(w, LVM_SETITEMTEXT, i, cast(LPARAM) &_lvi); -} - -void ListView_SetItemCount(HWND w, int n) { - SendMessage(w, LVM_SETITEMCOUNT, n, 0); -} - -BOOL ListView_SortItems(HWND w, PFNLVCOMPARE f, LPARAM l) { - return cast(BOOL) SendMessage(w, LVM_SORTITEMS, l, cast(LPARAM) f); -} - -void ListView_SetItemPosition32(HWND w, int i, int x, int y) { - POINT p; - p.x = x; - p.y = y; - SendMessage(w, LVM_SETITEMPOSITION32, i, cast(LPARAM) &p); -} - -UINT ListView_GetSelectedCount(HWND w) { - return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOUNT, 0, 0); -} - -UINT ListView_GetCheckState(HWND w, UINT i) { - return ((cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK)) >> 12) - 1; -} - -void ListView_SetCheckState(HWND w, UINT i, BOOL f) { - ListView_SetItemState(w, i, INDEXTOSTATEIMAGEMASK(f ? 2 : 1), - LVIS_STATEIMAGEMASK); -} - -BOOL ListView_GetISearchString(HWND w, LPSTR lpsz) { - return cast(BOOL) SendMessage(w, LVM_GETISEARCHSTRING, 0, - cast(LPARAM) lpsz); -} - -void ListView_CancelEditLabel(HWND w) { - SendMessage(w, LVM_CANCELEDITLABEL, 0, 0); -} - -int ListView_EnableGroupView(HWND w, BOOL i) { - return cast(int) SendMessage(w, LVM_ENABLEGROUPVIEW, i, 0); -} - -//static if (_WIN32_WINNT >= 0x500 || _WIN32_IE >= 0x500) { - BOOL ListView_SortItemsEx(HWND w, PFNLVCOMPARE c, LPARAM p) { - return cast(BOOL) SendMessage(w, LVM_SORTITEMSEX, cast(WPARAM) p, cast(LPARAM)c); - } -//} - -static if (_WIN32_WINNT >= 0x501) { - int ListView_GetGroupInfo(HWND w, int i, PLVGROUP p) { - return cast(int) SendMessage(w, LVM_GETGROUPINFO, i, cast(LPARAM) p); - } - - void ListView_GetGroupMetrics(HWND w, PLVGROUPMETRICS p) { - SendMessage(w, LVM_GETGROUPMETRICS, 0, cast(LPARAM) p); - } - - BOOL ListView_GetInsertMark(HWND w, PLVINSERTMARK p) { - return cast(BOOL) SendMessage(w, LVM_GETINSERTMARK, 0, cast(LPARAM) p); - } - - COLORREF ListView_GetInsertMarkColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETINSERTMARKCOLOR, 0, 0); - } - - int ListView_GetInsertMarkRect(HWND w, LPRECT p) { - return cast(int) SendMessage(w, LVM_GETINSERTMARKRECT, 0, cast(LPARAM) p); - } - - COLORREF ListView_GetOutlineColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETOUTLINECOLOR, 0, 0); - } - - UINT ListView_GetSelectedColumn(HWND w) { - return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOLUMN, 0, 0); - } - - void ListView_GetTileInfo(HWND w, PLVTILEINFO p) { - SendMessage(w, LVM_GETTILEINFO, 0, cast(LPARAM) p); - } - - void ListView_GetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { - SendMessage(w, LVM_GETTILEVIEWINFO, 0, cast(LPARAM) p); - } - - DWORD ListView_GetView(HWND w) { - return cast(DWORD) SendMessage(w, LVM_GETVIEW, 0, 0); - } - - BOOL ListView_HasGroup(HWND w, int i) { - return cast(BOOL) SendMessage(w, LVM_HASGROUP, i, 0); - } - - int ListView_InsertGroup(HWND w, int i, PLVGROUP p) { - return cast(int) SendMessage(w, LVM_INSERTGROUP, i, cast(LPARAM) p); - } - - void ListView_InsertGroupSorted(HWND w, PLVINSERTGROUPSORTED p) { - SendMessage(w, LVM_INSERTGROUPSORTED, cast(WPARAM) p, 0); - } - - BOOL ListView_InsertMarkHitTest(HWND w, LPPOINT p, PLVINSERTMARK t) { - return cast(BOOL) SendMessage(w, LVM_INSERTMARKHITTEST, cast(WPARAM) p, cast(LPARAM) t); - } - - BOOL ListView_IsGroupViewEnabled(HWND w) { - return cast(BOOL) SendMessage(w, LVM_ISGROUPVIEWENABLED, 0, 0); - } - - UINT ListView_MapIDToIndex(HWND w, UINT i) { - return cast(UINT) SendMessage(w, LVM_MAPIDTOINDEX, i, 0); - } - - /* ??? MSDN documents this as "Not implemented", except in relation to - * Windows CE/Mobile. - */ - void ListView_MoveGroup(HWND w, int i, int t) { - SendMessage(w, LVM_MOVEGROUP, i, t); - } - - void ListView_RemoveAllGroups(HWND w) { - SendMessage(w, LVM_REMOVEALLGROUPS, 0, 0); - } - - int ListView_RemoveGroup(HWND w, int i) { - return cast(int) SendMessage(w, LVM_REMOVEGROUP, i, 0); - } - - int ListView_SetGroupInfo(HWND w, int i, PLVGROUP p) { - return cast(int) SendMessage(w, LVM_SETGROUPINFO, i, cast(LPARAM) p); - } - - void ListView_SetGroupMetrics(HWND w, PLVGROUPMETRICS p) { - SendMessage(w, LVM_SETGROUPMETRICS, 0, cast(LPARAM) p); - } - - BOOL ListView_SetInfoTip(HWND w, PLVSETINFOTIP p) { - return cast(BOOL) SendMessage(w, LVM_SETINFOTIP, 0, cast(LPARAM) p); - } - - BOOL ListView_SetInsertMark(HWND w, PLVINSERTMARK p) { - return cast(BOOL) SendMessage(w, LVM_SETINSERTMARK, 0, cast(LPARAM) p); - } - - COLORREF ListView_SetInsertMarkColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, LVM_SETINSERTMARKCOLOR, 0, c); - } - - COLORREF ListView_SetOutlineColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, LVM_SETOUTLINECOLOR, 0, c); - } - - void ListView_SetSelectedColumn(HWND w, int i) { - SendMessage(w, LVM_SETSELECTEDCOLUMN, i, 0); - } - - BOOL ListView_SetTileInfo(HWND w, PLVTILEINFO p) { - return cast(BOOL) SendMessage(w, LVM_SETTILEINFO, 0, cast(LPARAM) p); - } - - BOOL ListView_SetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { - return cast(BOOL) SendMessage(w, LVM_SETTILEVIEWINFO, 0, cast(LPARAM) p); - } - - int ListView_SetView(HWND w, DWORD i) { - return cast(int) SendMessage(w, LVM_SETVIEW, i, 0); - } - - int ListView_SortGroups(HWND w, PFNLVGROUPCOMPARE c, LPVOID p) { - return cast(int) SendMessage(w, LVM_SORTGROUPS, cast(WPARAM) c, cast(LPARAM) p); - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - CBM_FIRST = 0x1700, - CB_SETMINVISIBLE = CBM_FIRST + 1, - CB_GETMINVISIBLE = CBM_FIRST + 2, - CB_SETCUEBANNER = CBM_FIRST + 3, - CB_GETCUEBANNER = CBM_FIRST + 4, - } - - BOOL ComboBox_SetMinVisible(HWND w, INT i) { - return cast(BOOL) SendMessage(w, CB_SETMINVISIBLE, cast(WPARAM) i, 0); - } - - int ComboBox_GetMinVisible(HWND w) { - return cast(int) SendMessage(w, CB_GETMINVISIBLE, 0, 0); - } -} - -extern (Windows) BOOL MakeDragList(HWND); -extern (Windows) void MenuHelp(UINT, WPARAM, LPARAM, HMENU, HINSTANCE, HWND, - PUINT); - -COLORREF MonthCal_GetColor(HWND hwnd, INT icolor) { - return cast(COLORREF) SendMessage(hwnd, MCM_GETCOLOR, - cast(WPARAM) icolor, 0); -} - -BOOL MonthCal_GetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { - return cast(BOOL) SendMessage(hwnd, MCM_GETCURSEL, 0, - cast(LPARAM) lpsystime); -} - -DWORD MonthCal_GetFirstDayOfWeek(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, MCM_GETFIRSTDAYOFWEEK, 0, 0); -} - -DWORD MonthCal_GetMaxSelCount(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, MCM_GETMAXSELCOUNT, 0, 0); -} - -DWORD MonthCal_GetMaxTodayWidth(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, MCM_GETMAXTODAYWIDTH, 0, 0); -} - -BOOL MonthCal_GetMinReqRect(HWND hwnd, LPRECT lpRectInfo) { - return cast(BOOL) SendMessage(hwnd, MCM_GETMINREQRECT, 0, - cast(LPARAM) lpRectInfo); -} - -INT MonthCal_GetMonthDelta(HWND hwnd) { - return cast(INT) SendMessage(hwnd, MCM_GETMONTHDELTA, 0, 0); -} - -INT MonthCal_GetMonthRange(HWND hwnd, DWORD flag, LPSYSTEMTIME systimearray) { - return cast(INT) SendMessage(hwnd, MCM_GETMONTHRANGE, cast(WPARAM) flag, - cast(LPARAM) systimearray); -} - -DWORD MonthCal_GetRange(HWND hwnd, LPSYSTEMTIME systimearray) { - return cast(DWORD) SendMessage(hwnd, MCM_GETRANGE, 0, - cast(LPARAM) systimearray); -} - -BOOL MonthCal_GetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { - return cast(BOOL) SendMessage(hwnd, MCM_GETSELRANGE, 0, - cast(LPARAM) systimearray); -} - -BOOL MonthCal_GetToday(HWND hwnd, LPSYSTEMTIME systime) { - return cast(BOOL) SendMessage(hwnd, MCM_GETTODAY, 0, - cast(LPARAM) systime); -} - -BOOL MonthCal_GetUnicodeFormat(HWND hwnd) { - return cast(BOOL) SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0); -} - -DWORD MonthCal_HitTest(HWND hwnd, PMCHITTESTINFO pmchittest) { - return cast(DWORD) SendMessage(hwnd, MCM_HITTEST, 0, - cast(LPARAM) pmchittest); -} - -COLORREF MonthCal_SetColor(HWND hwnd, INT icolor, COLORREF clr) { - return cast(COLORREF) SendMessage(hwnd, MCM_SETCOLOR, cast(WPARAM) icolor, - cast(LPARAM) clr); -} - -BOOL MonthCal_SetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { - return cast(BOOL) SendMessage(hwnd, MCM_SETCURSEL, 0, - cast(LPARAM) lpsystime); -} - -BOOL MonthCal_SetDayState(HWND hwnd, INT imonths, LPMONTHDAYSTATE lpdatestatearray) { - return cast(BOOL) SendMessage(hwnd, MCM_SETDAYSTATE, cast(WPARAM) imonths, - cast(LPARAM) lpdatestatearray); -} - -DWORD MonthCal_SetFirstDayOfWeek(HWND hwnd, INT iday) { - return cast(DWORD) SendMessage(hwnd, MCM_SETFIRSTDAYOFWEEK, 0, - cast(LPARAM) iday); -} - -BOOL MonthCal_SetMaxSelCount(HWND hwnd, UINT imax) { - return cast(BOOL) SendMessage(hwnd, MCM_SETMAXSELCOUNT, - cast(WPARAM) imax, 0); -} - -INT MonthCal_SetMonthDelta(HWND hwnd, INT idelta) { - return cast(INT) SendMessage(hwnd, MCM_SETMONTHDELTA, cast(WPARAM) idelta, 0); -} - -BOOL MonthCal_SetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { - return cast(BOOL) SendMessage(hwnd, MCM_SETSELRANGE, 0, - cast(LPARAM) systimearray); -} - -void MonthCal_SetToday(HWND hwnd, LPSYSTEMTIME systime) { - SendMessage(hwnd, MCM_SETTODAY, 0, cast(LPARAM) systime); -} - -BOOL MonthCal_SetUnicodeFormat(HWND hwnd, BOOL unicode) { - return cast(BOOL) SendMessage(hwnd, MCM_SETUNICODEFORMAT, - cast(WPARAM) unicode, 0); -} - -BOOL MonthCal_SetRange(HWND w, DWORD f, LPSYSTEMTIME st) { - return cast(BOOL) SendMessage(w, MCM_SETRANGE, cast(WPARAM) f, - cast(LPARAM) st); -} - -extern (Windows) BOOL ShowHideMenuCtl(HWND, UINT_PTR, PINT); - -BOOL TabCtrl_GetItem(HWND w, int i, LPTCITEM p) { - return cast(BOOL) SendMessage(w, TCM_GETITEM, i, cast(LPARAM) p); -} - -BOOL TabCtrl_SetItem(HWND w, int i, LPTCITEM p) { - return cast(BOOL) SendMessage(w, TCM_SETITEM, i, cast(LPARAM) p); -} - -int TabCtrl_InsertItem(HWND w, int i, const(TC_ITEM)* p) { - return cast(int) SendMessage(w, TCM_INSERTITEM, i, cast(LPARAM) p); -} - -BOOL TabCtrl_DeleteItem(HWND w, int i) { - return cast(BOOL) SendMessage(w, TCM_DELETEITEM, i, 0); -} - -BOOL TabCtrl_DeleteAllItems(HWND w) { - return cast(BOOL) SendMessage(w, TCM_DELETEALLITEMS, 0, 0); -} - -BOOL TabCtrl_GetItemRect(HWND w, int i, LPRECT p) { - return cast(BOOL) SendMessage(w, TCM_GETITEMRECT, i, cast(LPARAM) p); -} - -int TabCtrl_GetCurSel(HWND w) { - return cast(int) SendMessage(w, TCM_GETCURSEL, 0, 0); -} - -int TabCtrl_SetCurSel(HWND w, int i) { - return cast(int) SendMessage(w, TCM_SETCURSEL, i, 0); -} - -int TabCtrl_HitTest(HWND w, LPTCHITTESTINFO p) { - return cast(int) SendMessage(w, TCM_HITTEST, 0, cast(LPARAM) p); -} - -BOOL TabCtrl_SetItemExtra(HWND w, int c) { - return cast(BOOL) SendMessage(w, TCM_SETITEMEXTRA, c, 0); -} - -int TabCtrl_AdjustRect(HWND w, BOOL b, LPRECT p) { - return cast(int) SendMessage(w, TCM_ADJUSTRECT, b, cast(LPARAM) p); -} - -DWORD TabCtrl_SetItemSize(HWND w, int x, int y) { - return cast(DWORD) SendMessage(w, TCM_SETITEMSIZE, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); -} - -void TabCtrl_RemoveImage(HWND w, int i) { - SendMessage(w, TCM_REMOVEIMAGE, i, 0); -} - -void TabCtrl_SetPadding(HWND w, int x, int y) { - SendMessage(w, TCM_SETPADDING, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); -} - -int TabCtrl_GetRowCount(HWND w) { - return cast(int) SendMessage(w, TCM_GETROWCOUNT, 0, 0); -} - -HWND TabCtrl_GetToolTips(HWND w) { - return cast(HWND) SendMessage(w, TCM_GETTOOLTIPS, 0, 0); -} - -void TabCtrl_SetToolTips(HWND w, HWND t) { - SendMessage(w, TCM_SETTOOLTIPS, cast(WPARAM) t, 0); -} - -int TabCtrl_GetCurFocus(HWND w) { - return cast(int) SendMessage(w, TCM_GETCURFOCUS, 0, 0); -} - -void TabCtrl_SetCurFocus(HWND w, int i) { - SendMessage(w, TCM_SETCURFOCUS, i, 0); -} - -HIMAGELIST TabCtrl_GetImageList(HWND w) { - return cast(HIMAGELIST) SendMessage(w, TCM_GETIMAGELIST, 0, 0); -} - -HIMAGELIST TabCtrl_SetImageList(HWND w, HIMAGELIST h) { - return cast(HIMAGELIST) SendMessage(w, TCM_SETIMAGELIST, 0, - cast(LPARAM) h); -} - -int TabCtrl_GetItemCount(HWND w) { - return cast(int) SendMessage(w, TCM_GETITEMCOUNT, 0, 0); -} - -extern (Windows) BOOL _TrackMouseEvent(LPTRACKMOUSEEVENT); - -HTREEITEM TreeView_InsertItem(HWND w, LPTVINSERTSTRUCT i) { - return cast(HTREEITEM) SendMessage(w, TVM_INSERTITEM, 0, cast(LPARAM) i); -} - -BOOL TreeView_DeleteItem(HWND w, HTREEITEM i) { - return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) i); -} - -BOOL TreeView_DeleteAllItems(HWND w) { - return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) TVI_ROOT); -} - -BOOL TreeView_Expand(HWND w, HTREEITEM i, UINT c) { - return cast(BOOL) SendMessage(w, TVM_EXPAND, c, cast(LPARAM) i); -} - -BOOL TreeView_GetItemRect(HWND w, HTREEITEM i, LPRECT p, BOOL c) { - *cast(HTREEITEM*) p = i; - return cast(BOOL) SendMessage(w, TVM_GETITEMRECT, c, cast(LPARAM) p); -} - -UINT TreeView_GetCount(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETCOUNT, 0, 0); -} - -UINT TreeView_GetIndent(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETINDENT, 0, 0); -} - -BOOL TreeView_SetIndent(HWND w, INT i) { - return cast(BOOL) SendMessage(w, TVM_SETINDENT, i, 0); -} - -HIMAGELIST TreeView_GetImageList(HWND w, INT i) { - return cast(HIMAGELIST) SendMessage(w, TVM_GETIMAGELIST, i, 0); -} - -HIMAGELIST TreeView_SetImageList(HWND w, HIMAGELIST h, INT i) { - return cast(HIMAGELIST) SendMessage(w, TVM_SETIMAGELIST, i, - cast(LPARAM) h); -} - -HTREEITEM TreeView_GetNextItem(HWND w, HTREEITEM i, UINT c) { - return cast(HTREEITEM) SendMessage(w, TVM_GETNEXTITEM, c, cast(LPARAM) i); -} - -HTREEITEM TreeView_GetChild(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_CHILD); -} - -HTREEITEM TreeView_GetNextSibling(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_NEXT); -} - -HTREEITEM TreeView_GetPrevSibling(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_PREVIOUS); -} - -HTREEITEM TreeView_GetParent(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_PARENT); -} - -HTREEITEM TreeView_GetFirstVisible(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_FIRSTVISIBLE); -} - -HTREEITEM TreeView_GetNextVisible(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_NEXTVISIBLE); -} - -HTREEITEM TreeView_GetPrevVisible(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_PREVIOUSVISIBLE); -} - -HTREEITEM TreeView_GetSelection(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_CARET); -} - -HTREEITEM TreeView_GetDropHilight(HTREEITEM w) { - return TreeView_GetNextItem(w, null, TVGN_DROPHILITE); -} - -HTREEITEM TreeView_GetRoot(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_ROOT); -} - -BOOL TreeView_Select(HWND w, HTREEITEM i, UINT c) { - return cast(BOOL) SendMessage(w, TVM_SELECTITEM, c, cast(LPARAM) i); -} - -BOOL TreeView_SelectItem(HWND w, HTREEITEM i) { - return TreeView_Select(w, i, TVGN_CARET); -} - -BOOL TreeView_SelectDropTarget(HWND w, HTREEITEM i) { - return TreeView_Select(w, i, TVGN_DROPHILITE); -} - -BOOL TreeView_SelectSetFirstVisible(HWND w, HTREEITEM i) { - return TreeView_Select(w, i, TVGN_FIRSTVISIBLE); -} - -BOOL TreeView_GetItem(HWND w, LPTVITEM i) { - return cast(BOOL) SendMessage(w, TVM_GETITEM, 0, cast(LPARAM) i); -} - -BOOL TreeView_SetItem(HWND w, const(TV_ITEM)* i) { - return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) i); -} - -HWND TreeView_EditLabel(HWND w, HTREEITEM i) { - return cast(HWND) SendMessage(w, TVM_EDITLABEL, 0, cast(LPARAM) i); -} - -HWND TreeView_GetEditControl(HWND w) { - return cast(HWND) SendMessage(w, TVM_GETEDITCONTROL, 0, 0); -} - -UINT TreeView_GetVisibleCount(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETVISIBLECOUNT, 0, 0); -} - -HTREEITEM TreeView_HitTest(HWND w, LPTVHITTESTINFO p) { - return cast(HTREEITEM) SendMessage(w, TVM_HITTEST, 0, cast(LPARAM) p); -} - -HIMAGELIST TreeView_CreateDragImage(HWND w, HTREEITEM i) { - return cast(HIMAGELIST) SendMessage(w, TVM_CREATEDRAGIMAGE, 0, - cast(LPARAM) i); -} - -BOOL TreeView_SortChildren(HWND w, HTREEITEM i, BOOL r) { - return cast(BOOL) SendMessage(w, TVM_SORTCHILDREN, r, cast(LPARAM) i); -} - -BOOL TreeView_EnsureVisible(HWND w, HTREEITEM i) { - return cast(BOOL) SendMessage(w, TVM_ENSUREVISIBLE, 0, cast(LPARAM) i); -} - -BOOL TreeView_SortChildrenCB(HWND w, LPTVSORTCB s, BOOL r) { - return cast(BOOL) SendMessage(w, TVM_SORTCHILDRENCB, r, cast(LPARAM) s); -} - -BOOL TreeView_EndEditLabelNow(HWND w, BOOL f) { - return cast(BOOL) SendMessage(w, TVM_ENDEDITLABELNOW, f, 0); -} - -BOOL TreeView_GetISearchString(HWND w, LPTSTR s) { - return cast(BOOL) SendMessage(w, TVM_GETISEARCHSTRING, 0, cast(LPARAM) s); -} - -static if (_WIN32_IE >= 0x300) { - DWORD ListView_ApproximateViewRect(HWND w, int iw, int ih, int i) { - return cast(DWORD) SendMessage(w, LVM_APPROXIMATEVIEWRECT, i, - MAKELPARAM(cast(ushort)iw, cast(ushort)ih)); - } - - DWORD ListView_SetExtendedListViewStyle(HWND w, DWORD s) { - return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, s); - } - - DWORD ListView_GetExtendedListViewStyle(HWND w) { - return cast(DWORD) SendMessage(w, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); - } - - BOOL ListView_SetColumnOrderArray(HWND w, int i, int* a) { - return cast(BOOL) SendMessage(w, LVM_SETCOLUMNORDERARRAY, - cast(WPARAM) i, cast(LPARAM) a); - } - - BOOL ListView_GetColumnOrderArray(HWND w, int i, int* a) { - return cast(BOOL) SendMessage(w, LVM_GETCOLUMNORDERARRAY, - cast(WPARAM) i, cast(LPARAM) a); - } - - HWND ListView_GetHeader(HWND w) { - return cast(HWND) SendMessage(w, LVM_GETHEADER, 0, 0); - } - - HCURSOR ListView_GetHotCursor(HWND w) { - return cast(HCURSOR) SendMessage(w, LVM_GETHOTCURSOR, 0, 0); - } - - INT ListView_GetHotItem(HWND w) { - return cast(INT) SendMessage(w, LVM_GETHOTITEM, 0, 0); - } - - BOOL ListView_GetSubItemRect(HWND w, int i, int isi, int c, LPRECT p) { - return cast(BOOL) SendMessage(w, LVM_GETSUBITEMRECT, i, - p ? (p.left = c, p.top = isi, cast(LPARAM) p) : 0); - } - - HCURSOR ListView_SetHotCursor(HWND w, HCURSOR c) { - return cast(HCURSOR) SendMessage(w, LVM_SETHOTCURSOR, 0, - cast(LPARAM) c); - } - - INT ListView_SetHotItem(HWND w, INT i) { - return cast(INT) SendMessage(w, LVM_SETHOTITEM, cast(WPARAM) i, 0); - } - - DWORD ListView_SetIconSpacing(HWND w, int x, int y) { - return cast(DWORD) SendMessage(w, LVM_SETICONSPACING, 0, - MAKELONG(cast(ushort)x, cast(ushort)y)); - } - - INT ListView_SubItemHitTest(HWND w, LPLVHITTESTINFO p) { - return cast(INT) SendMessage(w, LVM_SUBITEMHITTEST, 0, cast(LPARAM) p); - } - - BOOL ListView_SetItemCountEx(HWND w, int i, DWORD f) { - return cast(BOOL) SendMessage(w, LVM_SETITEMCOUNT, i, cast(LPARAM) f); - } - - extern (Windows) { - WINBOOL ImageList_SetImageCount(HIMAGELIST, UINT); - WINBOOL ImageList_Copy(HIMAGELIST, int, HIMAGELIST, int, UINT); - WINBOOL ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*); - } - - int TabCtrl_SetMinTabWidth(HWND hwnd, int x) { - return cast(int) SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x); - } - - VOID TabCtrl_DeselectAll(HWND hwnd, UINT fExcludeFocus) { - SendMessage(hwnd, TCM_DESELECTALL, fExcludeFocus, 0); - } - - HWND TreeView_GetToolTips(HWND w) { - return cast(HWND) SendMessage(w, TVM_GETTOOLTIPS, 0, 0); - } - - HWND TreeView_SetToolTips(HWND w, HWND wt) { - return cast(HWND) SendMessage(w, TVM_SETTOOLTIPS, cast(WPARAM) wt, 0); - } -} - -static if (_WIN32_IE >= 0x400) { - BOOL ListView_GetBkImage(HWND h, LPLVBKIMAGE plvbki) { - return cast(BOOL) SendMessage(h, LVM_GETBKIMAGE, 0, - cast(LPARAM) plvbki); - } - - BOOL ListView_SetBkImage(HWND h, LPLVBKIMAGE plvbki) { - return cast(BOOL) SendMessage(h, LVM_SETBKIMAGE, 0, - cast(LPARAM) plvbki); - } - - DWORD ListView_SetExtendedListViewStyleEx(HWND w, DWORD m, DWORD s) { - return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, m, s); - } - - VOID ListView_SetWorkAreas(HWND w, INT n, LPRECT r) { - SendMessage(w, LVM_SETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); - } - - VOID ListView_GetWorkAreas(HWND w, INT n, LPRECT r) { - SendMessage(w, LVM_GETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); - } - - BOOL ListView_GetNumberOfWorkAreas(HWND w, LPUINT n) { - return cast(BOOL) SendMessage(w, LVM_GETNUMBEROFWORKAREAS, 0, - cast(LPARAM) n); - } - - DWORD ListView_SetHoverTime(HWND w, DWORD t) { - return cast(DWORD) SendMessage(w, LVM_SETHOVERTIME, 0, - cast(LPARAM) t); - } - - DWORD ListView_GetHoverTime(HWND w) { - return cast(DWORD) SendMessage(w, LVM_GETHOVERTIME, 0, 0); - } - - INT ListView_GetSelectionMark(HWND w) { - return cast(INT) SendMessage(w, LVM_GETSELECTIONMARK, 0, 0); - } - - INT ListView_SetSelectionMark(HWND w, INT i) { - return cast(INT) SendMessage(w, LVM_SETSELECTIONMARK, 0, cast(LPARAM) i); - } - - HWND ListView_SetToolTips(HWND w, HWND n) { - return cast(HWND) SendMessage(w, LVM_SETTOOLTIPS, cast(WPARAM) n, 0); - } - - HWND ListView_GetToolTips(HWND w) { - return cast(HWND) SendMessage(w, LVM_GETTOOLTIPS, 0, 0); - } - - BOOL ListView_SetUnicodeFormat(HWND w, BOOL f) { - return cast(BOOL) SendMessage(w, LVM_SETUNICODEFORMAT, - cast(WPARAM) f, 0); - } - - BOOL ListView_GetUnicodeFormat(HWND w) { - return cast(BOOL) SendMessage(w, LVM_GETUNICODEFORMAT, 0, 0); - } - - BOOL TabCtrl_HighlightItem(HWND hwnd, INT i, WORD fHighlight) { - return cast(BOOL) SendMessage(hwnd, TCM_HIGHLIGHTITEM, - cast(WPARAM) i, cast(LPARAM) MAKELONG(fHighlight, 0)); - } - - DWORD TabCtrl_SetExtendedStyle(HWND hwnd, DWORD dw) { - return cast(DWORD) SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw); - } - - DWORD TabCtrl_GetExtendedStyle(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0); - } - - BOOL TabCtrl_SetUnicodeFormat(HWND hwnd, HWND fUnicode) { - return cast(BOOL) SendMessage(hwnd, TCM_SETUNICODEFORMAT, - cast(WPARAM) fUnicode, 0); - } - - BOOL TabCtrl_GetUnicodeFormat(HWND hwnd) { - return cast(BOOL) SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0); - } - - COLORREF TreeView_GetBkColor(HWND w) { - return cast(COLORREF) SendMessage(w, TVM_GETBKCOLOR, 0, 0); - } - - COLORREF TreeView_GetInsertMarkColor(HWND w) { - return cast(COLORREF) SendMessage(w, TVM_GETINSERTMARKCOLOR, 0, 0); - } - - int TreeView_GetItemHeight(HWND w) { - return cast(int) SendMessage(w, TVM_GETITEMHEIGHT, 0, 0); - } - - UINT TreeView_GetScrollTime(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETSCROLLTIME, 0, 0); - } - - COLORREF TreeView_GetTextColor(HWND w) { - return cast(COLORREF) SendMessage(w, TVM_GETTEXTCOLOR, 0, 0); - } - - COLORREF TreeView_SetBkColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, TVM_SETBKCOLOR, 0, - cast(LPARAM) c); - } - - COLORREF TreeView_SetInsertMarkColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, TVM_SETINSERTMARKCOLOR, 0, - cast(LPARAM) c); - } - - int TreeView_SetItemHeight(HWND w, SHORT h) { - return cast(int) SendMessage(w, TVM_SETITEMHEIGHT, cast(WPARAM) h, 0); - } - - UINT TreeView_SetScrollTime(HWND w, UINT t) { - return cast(UINT) SendMessage(w, TVM_SETSCROLLTIME, cast(WPARAM) t, 0); - } - - COLORREF TreeView_SetTextColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, TVM_SETTEXTCOLOR, 0, - cast(LPARAM) c); - } - - BOOL TreeView_SetInsertMark(HWND w, HTREEITEM i, BOOL a) { - return cast(BOOL) SendMessage(w, TVM_SETINSERTMARK, cast(WPARAM) a, - cast(LPARAM) i); - } - - BOOL TreeView_SetUnicodeFormat(HWND w, BOOL u) { - return cast(BOOL) SendMessage(w, TVM_SETUNICODEFORMAT, - cast(WPARAM) u, 0); - } - - BOOL TreeView_GetUnicodeFormat(HWND w) { - return cast(BOOL) SendMessage(w, TVM_GETUNICODEFORMAT, 0, 0); - } - - HTREEITEM TreeView_GetLastVisible(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_LASTVISIBLE); - } -} - -static if (_WIN32_IE >= 0x500) { - UINT TreeView_GetItemState(HWND w, HTREEITEM i, UINT m) { - return cast(UINT) SendMessage(w, TVM_GETITEMSTATE, cast(WPARAM) i, - cast(LPARAM) m); - } - - BOOL TreeView_SetItemState(HWND w, HTREEITEM i, UINT d, UINT m) { - TVITEM _tvi; - _tvi.mask = TVIF_STATE; - _tvi.hItem = i; - _tvi.stateMask = m; - _tvi.state = d; - return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) &_tvi); - } -} - - -//#ifdef _WIN32_WCE // these are PPC only -/+ -extern (Windows) { - HWND CommandBar_Create(HINSTANCE, HWND, int); - BOOL CommandBar_Show(HWND, BOOL); - int CommandBar_AddBitmap(HWND, HINSTANCE, int, int, int, int); - HWND CommandBar_InsertComboBox(HWND, HINSTANCE, int, UINT, WORD, WORD); - BOOL CommandBar_InsertMenubar(HWND, HINSTANCE, WORD, WORD ); - BOOL CommandBar_InsertMenubarEx(HWND, HINSTANCE, LPTSTR, WORD); - BOOL CommandBar_DrawMenuBar(HWND, WORD); - HMENU CommandBar_GetMenu(HWND, WORD); - BOOL CommandBar_AddAdornments(HWND, DWORD, DWORD); - int CommandBar_Height(HWND hwndCB); -} - -// MinGW: These two are not in the DLL -void CommandBar_InsertButton(HWND hwnd, int i, LPTBBUTTON lptbbutton) { - SendMessage(hwnd, TB_INSERTBUTTON, i, lptbbutton); -} -alias DestroyWindow CommandBar_Destroy; -+/ -//#endif // _WIN32_WCE - - -static if (_WIN32_WINNT >= 0x501) { - struct EDITBALLOONTIP - { - DWORD cbStruct; - LPCWSTR pszTitle; - LPCWSTR pszText; - INT ttiIcon; - } - alias EDITBALLOONTIP* PEDITBALLOONTIP; - - const EM_SETCUEBANNER = ECM_FIRST + 1; - const EM_GETCUEBANNER = ECM_FIRST + 2; - const EM_SHOWBALLOONTIP = ECM_FIRST + 3; - const EM_HIDEBALLOONTIP = ECM_FIRST + 4; -} - -static if (_WIN32_WINNT >= 0x600) { - const EM_SETHILITE = ECM_FIRST + 5; - const EM_GETHILITE = ECM_FIRST + 6; -} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.12 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_commctrl.d) + */ +module core.sys.windows.commctrl; +pragma(lib, "comctl32"); + +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; +private import core.sys.windows.winbase; // for SYSTEMTIME +private import core.sys.windows.objfwd; // for LPSTREAM + +import core.sys.windows.prsht; + +const COMCTL32_VERSION = 6; + +const TCHAR[] + DRAGLISTMSGSTRING = "commctrl_DragListMsg", + HOTKEY_CLASS = "msctls_hotkey32", + PROGRESS_CLASS = "msctls_progress32", + STATUSCLASSNAME = "msctls_statusbar32", + TOOLBARCLASSNAME = "ToolbarWindow32", + TOOLTIPS_CLASS = "tooltips_class32", + TRACKBAR_CLASS = "msctls_trackbar32", + UPDOWN_CLASS = "msctls_updown32", + ANIMATE_CLASS = "SysAnimate32", + DATETIMEPICK_CLASS = "SysDateTimePick32", + MONTHCAL_CLASS = "SysMonthCal32", + REBARCLASSNAME = "ReBarWindow32", + WC_COMBOBOXEX = "ComboBoxEx32", + WC_IPADDRESS = "SysIPAddress32", + WC_LISTVIEW = "SysListView32", + WC_TABCONTROL = "SysTabControl32", + WC_TREEVIEW = "SysTreeView32", + WC_HEADER = "SysHeader32", + WC_PAGESCROLLER = "SysPager", + WC_NATIVEFONTCTL = "NativeFontCtl", + WC_BUTTON = "Button", + WC_STATIC = "Static", + WC_EDIT = "Edit", + WC_LISTBOX = "ListBox", + WC_COMBOBOX = "ComboBox", + WC_SCROLLBAR = "ScrollBar", + WC_LINKA = "SysLink"; + +enum { + LVM_FIRST = 0x1000, + TV_FIRST = 0x1100, + HDM_FIRST = 0x1200 +} + +enum { + ACM_OPENA = WM_USER + 100, + ACM_PLAY = WM_USER + 101, + ACM_STOP = WM_USER + 102, + ACM_OPENW = WM_USER + 103, + ACM_ISPLAYING = WM_USER + 104 +} + +enum { + ACN_START = 1, + ACN_STOP +} + +enum { + CBEIF_TEXT = 0x00000001, + CBEIF_IMAGE = 0x00000002, + CBEIF_SELECTEDIMAGE = 0x00000004, + CBEIF_OVERLAY = 0x00000008, + CBEIF_INDENT = 0x00000010, + CBEIF_LPARAM = 0x00000020, + CBEIF_DI_SETITEM = 0x10000000 +} + +enum { + RBN_FIRST = -831U, + RBN_LAST = -859U, + MCN_FIRST = -750U, + MCN_LAST = -759U, + DTN_FIRST = -760U, + DTN_LAST = -799U, + CBEN_FIRST = -800U, + CBEN_LAST = -830U +} + +enum { + CBEN_INSERTITEM = CBEN_FIRST - 1, + CBEN_DELETEITEM = CBEN_FIRST - 2, + CBEN_BEGINEDIT = CBEN_FIRST - 4, + CBEN_ENDEDITA = CBEN_FIRST - 5, + CBEN_ENDEDITW = CBEN_FIRST - 6 +} + +enum { + CBENF_KILLFOCUS = 1, + CBENF_RETURN, + CBENF_ESCAPE, + CBENF_DROPDOWN // = 4 +} + +const CBEMAXSTRLEN = 260; + +enum { + DL_BEGINDRAG = 1157, + DL_CANCELDRAG = 1160, + DL_DRAGGING = 1158, + DL_DROPPED = 1159, + DL_CURSORSET = 0, + DL_STOPCURSOR = 1, + DL_COPYCURSOR = 2, + DL_MOVECURSOR = 3 +} + +enum { + CCS_TOP = 1, + CCS_NOMOVEY = 2, + CCS_BOTTOM = 3, + CCS_NORESIZE = 4, + CCS_NOPARENTALIGN = 8, + CCS_ADJUSTABLE = 32, + CCS_NODIVIDER = 64 +} +static if (_WIN32_IE >= 0x300) { + enum { + CCS_VERT = 128, + CCS_LEFT = 129, + CCS_NOMOVEX = 130, + CCS_RIGHT = 131 + } +} + +enum { + ACS_CENTER = 0x0001, + ACS_TRANSPARENT = 0x0002, + ACS_AUTOPLAY = 0x0004, + ACS_TIMER = 0x0008 +} + +enum { + PGS_VERT = 0x00000000, + PGS_HORZ = 0x00000001, + PGS_AUTOSCROLL = 0x00000002, + PGS_DRAGNDROP = 0x00000004 +} + +const CMB_MASKED = 2; + +const MINSYSCOMMAND = SC_SIZE; + +enum { + SBT_OWNERDRAW = 0x1000, + SBT_NOBORDERS = 256, + SBT_POPOUT = 512, + SBT_RTLREADING = 1024 +} + +enum { + SB_SETTEXTA = WM_USER + 1, + SB_SETTEXTW = WM_USER + 11, + SB_GETTEXTA = WM_USER + 2, + SB_GETTEXTW = WM_USER + 13, + SB_GETTEXTLENGTHA = WM_USER + 3, + SB_GETTEXTLENGTHW = WM_USER + 12, + SB_SETPARTS = WM_USER + 4, + SB_GETPARTS = WM_USER + 6, + SB_GETBORDERS = WM_USER + 7, + SB_SETMINHEIGHT = WM_USER + 8, + SB_SIMPLE = WM_USER + 9, + SB_GETRECT = WM_USER + 10 +} + +enum { + MSGF_COMMCTRL_BEGINDRAG = 0x4200, + MSGF_COMMCTRL_SIZEHEADER = 0x4201, + MSGF_COMMCTRL_DRAGSELECT = 0x4202, + MSGF_COMMCTRL_TOOLBARCUST = 0x4203 +} + +enum { + ILC_COLOR = 0, + ILC_COLOR4 = 4, + ILC_COLOR8 = 8, + ILC_COLOR16 = 16, + ILC_COLOR24 = 24, + ILC_COLOR32 = 32, + ILC_COLORDDB = 254, + ILC_MASK = 1, + ILC_PALETTE = 2048 +} + +enum { + ILCF_MOVE, + ILCF_SWAP +} + +enum { + ILS_NORMAL = 0, + ILS_GLOW = 1, + ILS_SHADOW = 2, + ILS_SATURATE = 4, + ILS_ALPHA = 8, + ILD_BLEND25 = 2, + ILD_BLEND50 = 4, + ILD_SELECTED = 4, + ILD_BLEND = 4, + ILD_FOCUS = 2, + ILD_MASK = 16, + ILD_NORMAL = 0, + ILD_TRANSPARENT = 1, + ILD_IMAGE = 0x0020, + ILD_ROP = 0x0040, + ILD_OVERLAYMASK = 0x0F00, + ILD_PRESERVEALPHA = 0x1000, + ILD_SCALE = 0x2000, + ILD_DPISCALE = 0x4000 +} + +enum { + HDS_HORZ = 0, + HDS_BUTTONS = 2, + HDS_HIDDEN = 8 +} +static if (_WIN32_IE >= 0x400) { + enum { + HDS_HOTTRACK = 4, + HDS_DRAGDROP = 0x0040, + HDS_FULLDRAG = 0x0080 + } +} +static if (_WIN32_IE >= 0x500) { + enum { + HDS_FILTERBAR = 0x0100 + } +} + +enum { + NM_FIRST = 0, + NM_LAST = -99U, + LVN_FIRST = -100U, + LVN_LAST = -199U, + HDN_FIRST = -300U, + HDN_LAST = -399U, + TVN_FIRST = -400U, + TVN_LAST = -499U, + TTN_FIRST = -520U, + TTN_LAST = -549U, + TCN_FIRST = -550U, + TCN_LAST = -580U, + CDN_FIRST = -601U, /* also in commdlg.h */ + CDN_LAST = -699U, + TBN_FIRST = -700U, + TBN_LAST = -720U, + UDN_FIRST = -721U, + UDN_LAST = -740U +} +/*static if (_WIN32_IE >= 0x300) { + enum { + RBN_FIRST = -831U, + RBN_LAST = -859U, + MCN_FIRST = -750U, + MCN_LAST = -759U, + DTN_FIRST = -760U, + DTN_LAST = -799U, + CBEN_FIRST = -800U, + CBEN_LAST = -830U + } +}*/ +static if (_WIN32_IE >= 0x400) { + enum { + IPN_FIRST = -860U, + IPN_LAST = -879U, + IPN_FIELDCHANGED = IPN_FIRST, + SBN_FIRST = -880U, + SBN_LAST = -899U, + PGN_FIRST = -900U, + PGN_LAST = -950U, + PGN_SCROLL = PGN_FIRST-1, + PGN_CALCSIZE = PGN_FIRST-2 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + WMN_FIRST = -1000U, + WMN_LAST = -1200U, + } +} + +static if (_WIN32_WINNT >= 0x501) +{ + enum { + BCN_FIRST = -1250U, + BCN_LAST = -1350U, + } +} + +static if (_WIN32_WINNT >= 0x600) +{ + enum { + TRBN_FIRST = -1501U, + TRBN_LAST = -1519U, + } +} + +enum { + HDI_WIDTH = 1, + HDI_HEIGHT = 1, + HDI_TEXT = 2, + HDI_FORMAT = 4, + HDI_LPARAM = 8, + HDI_BITMAP = 16 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDI_IMAGE = 32, + HDI_DI_SETITEM = 64, + HDI_ORDER = 128 + } +} +static if (_WIN32_IE >= 0x500) { + enum { + HDI_FILTER = 256 + } +} + +enum { + CBES_EX_NOEDITIMAGE = 0x00000001, + CBES_EX_NOEDITIMAGEINDENT = 0x00000002, + CBES_EX_PATHWORDBREAKPROC = 0x00000004 +} +static if (_WIN32_IE >= 0x400) { + enum { + CBES_EX_NOSIZELIMIT = 0x00000008, + CBES_EX_CASESENSITIVE = 0x00000010, + CBEN_GETDISPINFOA = CBEN_FIRST - 0, + CBEN_GETDISPINFOW = CBEN_FIRST - 7, + CBEN_DRAGBEGINA = CBEN_FIRST - 8, + CBEN_DRAGBEGINW = CBEN_FIRST - 9 + } +} + +enum { + HDF_LEFT, + HDF_RIGHT, + HDF_CENTER, + HDF_JUSTIFYMASK, + HDF_RTLREADING, // = 4 + HDF_OWNERDRAW = 0x8000, + HDF_STRING = 0x4000, + HDF_BITMAP = 0x2000 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDF_BITMAP_ON_RIGHT = 0x1000, + HDF_IMAGE = 0x0800 + } +} + +enum { + CCM_FIRST = 0x2000, + CCM_LAST = CCM_FIRST + 0x200, + CCM_SETBKCOLOR = 8193, + CCM_SETCOLORSCHEME = 8194, + CCM_GETCOLORSCHEME = 8195, + CCM_GETDROPTARGET = 8196, + CCM_SETUNICODEFORMAT = 8197, + CCM_GETUNICODEFORMAT = 8198, + CCM_SETVERSION = 0x2007, + CCM_GETVERSION = 0x2008, + CCM_SETNOTIFYWINDOW = 0x2009 +} + +enum { + HDM_GETITEMCOUNT = HDM_FIRST, + HDM_INSERTITEMA = HDM_FIRST + 1, + HDM_INSERTITEMW = HDM_FIRST + 10, + HDM_DELETEITEM = HDM_FIRST + 2, + HDM_GETITEMA = HDM_FIRST + 3, + HDM_GETITEMW = HDM_FIRST + 11, + HDM_SETITEMA = HDM_FIRST + 4, + HDM_SETITEMW = HDM_FIRST + 12, + HDM_LAYOUT = HDM_FIRST + 5 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDM_GETITEMRECT = HDM_FIRST + 7, + HDM_SETIMAGELIST = HDM_FIRST + 8, + HDM_GETIMAGELIST = HDM_FIRST + 9, + HDM_ORDERTOINDEX = HDM_FIRST + 15, + HDM_CREATEDRAGIMAGE = HDM_FIRST + 16, + HDM_GETORDERARRAY = HDM_FIRST + 17, + HDM_SETORDERARRAY = HDM_FIRST + 18, + HDM_SETHOTDIVIDER = HDM_FIRST + 19 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT + } +} +static if (_WIN32_IE >= 0x500) { + enum { + HDM_SETBITMAPMARGIN = HDM_FIRST + 20, + HDM_GETBITMAPMARGIN = HDM_FIRST + 21, + HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST + 22, + HDM_EDITFILTER = HDM_FIRST + 23, + HDM_CLEARFILTER = HDM_FIRST + 24, + } +} +static if (_WIN32_IE >= 0x600) { + enum { + HDM_GETITEMDROPDOWNRECT = HDM_FIRST + 25, + HDM_GETOVERFLOWRECT = HDM_FIRST + 26, + HDM_GETFOCUSEDITEM = HDM_FIRST + 27, + HDM_SETFOCUSEDITEM = HDM_FIRST + 28, + } +} + +enum { + HHT_NOWHERE = 1, + HHT_ONHEADER = 2, + HHT_ONDIVIDER = 4, + HHT_ONDIVOPEN = 8, + HHT_ABOVE = 256, + HHT_BELOW = 512, + HHT_TORIGHT = 1024, + HHT_TOLEFT = 2048 +} + +enum { + HDM_HITTEST = HDM_FIRST + 6 +} + +enum { + HDN_ITEMCHANGINGA = HDN_FIRST -0, + HDN_ITEMCHANGINGW = HDN_FIRST -20, + HDN_ITEMCHANGEDA = HDN_FIRST -1, + HDN_ITEMCHANGEDW = HDN_FIRST -21, + HDN_ITEMCLICKA = HDN_FIRST -2, + HDN_ITEMCLICKW = HDN_FIRST -22, + HDN_ITEMDBLCLICKA = HDN_FIRST -3, + HDN_ITEMDBLCLICKW = HDN_FIRST -23, + HDN_DIVIDERDBLCLICKA = HDN_FIRST -5, + HDN_DIVIDERDBLCLICKW = HDN_FIRST -25, + HDN_BEGINTRACKA = HDN_FIRST -6, + HDN_BEGINTRACKW = HDN_FIRST -26, + HDN_ENDTRACKA = HDN_FIRST -7, + HDN_ENDTRACKW = HDN_FIRST -27, + HDN_TRACKA = HDN_FIRST -8, + HDN_TRACKW = HDN_FIRST -28 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDN_ENDDRAG = (HDN_FIRST-11), + HDN_BEGINDRAG = (HDN_FIRST-10), + HDN_GETDISPINFOA = (HDN_FIRST-9), + HDN_GETDISPINFOW = (HDN_FIRST-29) + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + HICF_OTHER = 0x00, + HICF_MOUSE = 0x01, + HICF_ARROWKEYS = 0x02, + HICF_ACCELERATOR = 0x04, + HICF_DUPACCEL = 0x08, + HICF_ENTERING = 0x10, + HICF_LEAVING = 0x20, + HICF_RESELECT = 0x40, + HICF_LMOUSE = 0x80, + HICF_TOGGLEDROPDOWN = 0x100 + } +} + +enum { + IPM_CLEARADDRESS = WM_USER + 100, + IPM_SETADDRESS = WM_USER + 101, + IPM_GETADDRESS = WM_USER + 102, + IPM_SETRANGE = WM_USER + 103, + IPM_SETFOCUS = WM_USER + 104, + IPM_ISBLANK = WM_USER + 105 +} + +static if (_WIN32_IE >= 0x500) { + enum { + I_INDENTCALLBACK = -1, + I_IMAGENONE = -2 + } +} + +enum { + TBSTATE_CHECKED = 1, + TBSTATE_PRESSED = 2, + TBSTATE_ENABLED = 4, + TBSTATE_HIDDEN = 8, + TBSTATE_INDETERMINATE = 16, + TBSTATE_WRAP = 32 +} +static if (_WIN32_IE >= 0x300) { + enum { + TBSTATE_ELLIPSES = 0x40 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBSTATE_MARKED = 0x0080 + } +} + +enum { + TBSTYLE_BUTTON = 0, + TBSTYLE_SEP = 1, + TBSTYLE_CHECK = 2, + TBSTYLE_GROUP = 4, + TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK +} +static if (_WIN32_IE >= 0x300) { + enum { + TBSTYLE_DROPDOWN = 8 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBSTYLE_AUTOSIZE = 16, + TBSTYLE_NOPREFIX = 32 + } +} +enum { + TBSTYLE_TOOLTIPS = 256, + TBSTYLE_WRAPABLE = 512, + TBSTYLE_ALTDRAG = 1024 +} +static if (_WIN32_IE >= 0x300) { + enum { + TBSTYLE_FLAT = 2048, + TBSTYLE_LIST = 4096, + TBSTYLE_CUSTOMERASE = 8192 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBSTYLE_REGISTERDROP = 0x4000, + TBSTYLE_TRANSPARENT = 0x8000, + TBSTYLE_EX_DRAWDDARROWS = 0x00000001 + } +} +static if (_WIN32_IE >= 0x501) { + enum { + TBSTYLE_EX_MIXEDBUTTONS = 8, + TBSTYLE_EX_HIDECLIPPEDBUTTONS = 16 + } +} +static if (_WIN32_WINNT >= 0x501) { + enum { + TBSTYLE_EX_DOUBLEBUFFER = 0x80 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + BTNS_BUTTON = TBSTYLE_BUTTON, + BTNS_SEP = TBSTYLE_SEP, + BTNS_CHECK = TBSTYLE_CHECK, + BTNS_GROUP = TBSTYLE_GROUP, + BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP, + BTNS_DROPDOWN = TBSTYLE_DROPDOWN, + BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE, + BTNS_NOPREFIX = TBSTYLE_NOPREFIX, + BTNS_WHOLEDROPDOWN = 0x0080 + } +} +static if (_WIN32_IE >= 0x501) { + enum { + BTNS_SHOWTEXT = 0x0040 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TBCDRF_NOEDGES = 0x10000, + TBCDRF_HILITEHOTTRACK = 0x20000, + TBCDRF_NOOFFSET = 0x40000, + TBCDRF_NOMARK = 0x80000, + TBCDRF_NOETCHEDEFFECT = 0x100000 + } +} + +const HINST_COMMCTRL = cast(HINSTANCE) (-1); + +enum { + IDB_STD_SMALL_COLOR, + IDB_STD_LARGE_COLOR, + IDB_VIEW_SMALL_COLOR = 4, + IDB_VIEW_LARGE_COLOR = 5 +} +static if (_WIN32_IE >= 0x300) { + enum { + IDB_HIST_SMALL_COLOR = 8, + IDB_HIST_LARGE_COLOR = 9 + } +} + +enum { + STD_CUT, + STD_COPY, + STD_PASTE, + STD_UNDO, + STD_REDOW, + STD_DELETE, + STD_FILENEW, + STD_FILEOPEN, + STD_FILESAVE, + STD_PRINTPRE, + STD_PROPERTIES, + STD_HELP, + STD_FIND, + STD_REPLACE, + STD_PRINT // = 14 +} + +enum { + VIEW_LARGEICONS, + VIEW_SMALLICONS, + VIEW_LIST, + VIEW_DETAILS, + VIEW_SORTNAME, + VIEW_SORTSIZE, + VIEW_SORTDATE, + VIEW_SORTTYPE, + VIEW_PARENTFOLDER, + VIEW_NETCONNECT, + VIEW_NETDISCONNECT, + VIEW_NEWFOLDER // = 11 +} + +enum { + TB_ENABLEBUTTON = WM_USER + 1, + TB_CHECKBUTTON, + TB_PRESSBUTTON, + TB_HIDEBUTTON, + TB_INDETERMINATE, // = WM_USER + 5, + TB_ISBUTTONENABLED = WM_USER + 9, + TB_ISBUTTONCHECKED, + TB_ISBUTTONPRESSED, + TB_ISBUTTONHIDDEN, + TB_ISBUTTONINDETERMINATE, // = WM_USER + 13, + TB_SETSTATE = WM_USER + 17, + TB_GETSTATE = WM_USER + 18, + TB_ADDBITMAP = WM_USER + 19, + TB_DELETEBUTTON = WM_USER + 22, + TB_GETBUTTON, + TB_BUTTONCOUNT, + TB_COMMANDTOINDEX, + TB_SAVERESTOREA, + TB_CUSTOMIZE, + TB_ADDSTRINGA, + TB_GETITEMRECT, + TB_BUTTONSTRUCTSIZE, + TB_SETBUTTONSIZE, + TB_SETBITMAPSIZE, + TB_AUTOSIZE, // = WM_USER + 33, + TB_GETTOOLTIPS = WM_USER + 35, + TB_SETTOOLTIPS = WM_USER + 36, + TB_SETPARENT = WM_USER + 37, + TB_SETROWS = WM_USER + 39, + TB_GETROWS, + TB_GETBITMAPFLAGS, + TB_SETCMDID, + TB_CHANGEBITMAP, + TB_GETBITMAP, + TB_GETBUTTONTEXTA, + TB_REPLACEBITMAP, // = WM_USER + 46, + TB_GETBUTTONSIZE = WM_USER + 58, + TB_SETBUTTONWIDTH = WM_USER + 59, + TB_GETBUTTONTEXTW = WM_USER + 75, + TB_SAVERESTOREW = WM_USER + 76, + TB_ADDSTRINGW = WM_USER + 77, +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_MARKBUTTON = WM_USER + 6 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_ISBUTTONHIGHLIGHTED = WM_USER + 14 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_ADDBUTTONSA = WM_USER + 20, + TB_INSERTBUTTONA = WM_USER + 21 + } +} else { + enum { + TB_ADDBUTTONS = WM_USER + 20, + TB_INSERTBUTTON = WM_USER + 21 + } +} +static if (_WIN32_IE >= 0x300) { + enum { + TB_SETINDENT = WM_USER + 47, + TB_SETIMAGELIST, + TB_GETIMAGELIST, + TB_LOADIMAGES, + TB_GETRECT, + TB_SETHOTIMAGELIST, + TB_GETHOTIMAGELIST, + TB_SETDISABLEDIMAGELIST, + TB_GETDISABLEDIMAGELIST, + TB_SETSTYLE, + TB_GETSTYLE, + //TB_GETBUTTONSIZE, + //TB_SETBUTTONWIDTH, + TB_SETMAXTEXTROWS, + TB_GETTEXTROWS // = WM_USER + 61 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_GETOBJECT = WM_USER + 62, + TB_GETBUTTONINFOW, + TB_SETBUTTONINFOW, + TB_GETBUTTONINFOA, + TB_SETBUTTONINFOA, + TB_INSERTBUTTONW, + TB_ADDBUTTONSW, + TB_HITTEST, // = WM_USER + 69 + TB_SETEXTENDEDSTYLE = WM_USER + 84, + TB_GETEXTENDEDSTYLE = WM_USER + 85, + TB_SETDRAWTEXTFLAGS = WM_USER + 70, + TB_GETHOTITEM, + TB_SETHOTITEM, + TB_SETANCHORHIGHLIGHT, + TB_GETANCHORHIGHLIGHT, // = WM_USER + 74 + TB_MAPACCELERATORA = WM_USER + 78, + TB_GETINSERTMARK, + TB_SETINSERTMARK, + TB_INSERTMARKHITTEST, + TB_MOVEBUTTON, + TB_GETMAXSIZE, + //TB_SETEXTENDEDSTYLE, + //TB_GETEXTENDEDSTYLE, + TB_GETPADDING, + TB_SETPADDING, + TB_SETINSERTMARKCOLOR, + TB_GETINSERTMARKCOLOR, + TB_MAPACCELERATORW, + TB_GETSTRINGW, + TB_GETSTRINGA, // = WM_USER + 92 + TB_SETHOTITEM2 = WM_USER + 94, + TB_SETLISTGAP = WM_USER + 96, + TB_GETIMAGELISTCOUNT = WM_USER + 98, + TB_GETIDEALSIZE = WM_USER + 99, + //TB_TRANSLATEACCELERATOR = CCM_TRANSLATEACCELERATOR, + TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, + TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME, + TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + TB_GETMETRICS = WM_USER + 101, + TB_SETMETRICS = WM_USER + 102, + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + TB_GETITEMDROPDOWNRECT = WM_USER + 103, + TB_SETPRESSEDIMAGELIST = WM_USER + 104, + TB_GETPRESSEDIMAGELIST = WM_USER + 105, + } +} + +const TBBF_LARGE = 1; + +enum { + TBN_GETBUTTONINFOA = TBN_FIRST -0, + TBN_BEGINDRAG = TBN_FIRST -1, + TBN_ENDDRAG = TBN_FIRST -2, + TBN_BEGINADJUST = TBN_FIRST -3, + TBN_ENDADJUST = TBN_FIRST -4, + TBN_RESET = TBN_FIRST -5, + TBN_QUERYINSERT = TBN_FIRST -6, + TBN_QUERYDELETE = TBN_FIRST -7, + TBN_TOOLBARCHANGE = TBN_FIRST -8, + TBN_CUSTHELP = TBN_FIRST -9 +} +static if (_WIN32_IE >= 0x300) { + enum { + TBN_DROPDOWN = TBN_FIRST - 10 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBN_HOTITEMCHANGE = TBN_FIRST - 13, + TBN_DRAGOUT = TBN_FIRST - 14, + TBN_DELETINGBUTTON = TBN_FIRST - 15, + TBN_GETDISPINFOA = TBN_FIRST - 16, + TBN_GETDISPINFOW = TBN_FIRST - 17, + TBN_GETINFOTIPA = TBN_FIRST - 18, + TBN_GETINFOTIPW = TBN_FIRST - 19, + TBN_GETBUTTONINFOW = TBN_FIRST - 20 + } +} +static if (_WIN32_IE >= 0x500) { + enum { + TBN_RESTORE = TBN_FIRST - 21, + TBN_SAVE = TBN_FIRST - 22, + TBN_INITCUSTOMIZE = TBN_FIRST - 23 + } + + enum { + TBNRF_HIDEHELP = 1, + TBNRF_ENDCUSTOMIZE + } + + enum { + TBNF_IMAGE = 1, + TBNF_TEXT = 2, + TBNF_DI_SETITEM = 0x10000000 + } +} + +enum { + TTS_ALWAYSTIP = 1, + TTS_NOPREFIX +} +static if(_WIN32_IE >= 0x500) { + enum { + TTS_NOANIMATE = 0x10, + TTS_NOFADE = 0x20, + TTS_BALLOON = 0x40, + TTS_CLOSE = 0x80 + } +} + +enum { + TTF_IDISHWND = 1, + TTF_CENTERTIP = 2, + TTF_RTLREADING = 4, + TTF_SUBCLASS = 16 +} +static if (_WIN32_IE >= 0x300) { + enum { + TTF_TRACK = 0x0020, + TTF_ABSOLUTE = 0x0080, + TTF_TRANSPARENT = 0x0100, + TTF_DI_SETITEM = 0x8000 + } + + static if (_WIN32_IE >= 0x501) { + enum { + TTF_PARSELINKS = 0x1000 + } + } + + enum { + TBCD_TICS = 1, + TBCD_THUMB, + TBCD_CHANNEL // = 3 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TBDDRET_DEFAULT, + TBDDRET_NODEFAULT, + TBDDRET_TREATPRESSED + } + + enum { + TBIMHT_AFTER = 1, + TBIMHT_BACKGROUND + } +} + +enum { + TTDT_AUTOMATIC, + TTDT_RESHOW, + TTDT_AUTOPOP, + TTDT_INITIAL +} + +enum { + TTM_ACTIVATE = WM_USER + 1, + TTM_SETDELAYTIME = WM_USER + 3, + TTM_ADDTOOLA, + TTM_DELTOOLA, + TTM_NEWTOOLRECTA, + TTM_RELAYEVENT, + TTM_GETTOOLINFOA, + TTM_SETTOOLINFOA, + TTM_HITTESTA, + TTM_GETTEXTA, + TTM_UPDATETIPTEXTA, + TTM_GETTOOLCOUNT, + TTM_ENUMTOOLSA, + TTM_GETCURRENTTOOLA, + TTM_WINDOWFROMPOINT, // = WM_USER + 16 + TTM_ADDTOOLW = WM_USER + 50, + TTM_DELTOOLW, + TTM_NEWTOOLRECTW, + TTM_GETTOOLINFOW, + TTM_SETTOOLINFOW, + TTM_HITTESTW, + TTM_GETTEXTW, + TTM_UPDATETIPTEXTW, + TTM_ENUMTOOLSW, + TTM_GETCURRENTTOOLW // = WM_USER + 59 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TTM_TRACKACTIVATE = WM_USER + 17, + TTM_TRACKPOSITION, + TTM_SETTIPBKCOLOR, + TTM_SETTIPTEXTCOLOR, + TTM_GETDELAYTIME, + TTM_GETTIPBKCOLOR, + TTM_GETTIPTEXTCOLOR, + TTM_SETMAXTIPWIDTH, + TTM_GETMAXTIPWIDTH, + TTM_SETMARGIN, + TTM_GETMARGIN, + TTM_POP // = WM_USER + 28 + } +} + +static if (_WIN32_IE >= 0x400) { // IE4.0 ??? + enum { + TTM_UPDATE = WM_USER + 29, + TTM_GETBUBBLESIZE, + TTM_ADJUSTRECT, + TTM_SETTITLEA, + TTM_SETTITLEW // = WM_USER + 33 + } + static if (_WIN32_IE >= 0x500) { + alias TTM_SETTITLEW TTM_SETTITLE; + } else { + alias TTM_SETTITLEA TTM_SETTITLE; + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + TTM_POPUP = (WM_USER + 34), + TTM_GETTITLE = (WM_USER + 35), + } +} + +enum { + TTN_GETDISPINFOA = TTN_FIRST - 0, + TTN_GETDISPINFOW = TTN_FIRST - 10, + TTN_NEEDTEXTA = TTN_GETDISPINFOA, + TTN_NEEDTEXTW = TTN_GETDISPINFOW, + TTN_SHOW = TTN_FIRST-1, + TTN_POP = TTN_FIRST-2 +} + +const UD_MAXVAL = 0x7fff; +const UD_MINVAL = -UD_MAXVAL; + +enum { + UDN_DELTAPOS = UDN_FIRST-1, + UDS_WRAP = 1, + UDS_SETBUDDYINT = 2, + UDS_ALIGNRIGHT = 4, + UDS_ALIGNLEFT = 8, + UDS_AUTOBUDDY = 16, + UDS_ARROWKEYS = 32, + UDS_HORZ = 64, + UDS_NOTHOUSANDS = 128 +} + +static if (_WIN32_IE >= 0x300) { + enum { + UDS_HOTTRACK = 0x0100 + } +} + +enum { + UDM_SETRANGE = WM_USER + 101, + UDM_GETRANGE, + UDM_SETPOS, + UDM_GETPOS, + UDM_SETBUDDY, + UDM_GETBUDDY, + UDM_SETACCEL, + UDM_GETACCEL, + UDM_SETBASE, + UDM_GETBASE // = WM_USER + 110 +} + +static if (_WIN32_IE >= 0x400) { + enum { + UDM_SETRANGE32 = WM_USER + 111, + UDM_GETRANGE32, + UDM_SETPOS32, + UDM_GETPOS32 // = WM_USER + 114 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +/*enum { + SB_SETTEXTA = WM_USER + 1, + SB_GETTEXTA, + SB_GETTEXTLENGTHA, + SB_SETPARTS, // = WM_USER + 4 + SB_GETPARTS = WM_USER + 6, + SB_GETBORDERS, + SB_SETMINHEIGHT, + SB_SIMPLE, + SB_GETRECT, + SB_SETTEXTW, + SB_GETTEXTLENGTHW, + SB_GETTEXTW // = WM_USER + 13 +}*/ + +/*enum { + SBT_OWNERDRAW = 0x1000, + SBT_NOBORDERS = 256, + SBT_POPOUT = 512, + SBT_RTLREADING = 1024 +}*/ + +static if(_WIN32_IE >= 0x400) { + enum { + SBT_TOOLTIPS = 0x0800, + SBN_SIMPLEMODECHANGE = SBN_FIRST + } +} + +enum { + TBS_AUTOTICKS = 1, + TBS_VERT = 2, + TBS_HORZ = 0, + TBS_TOP = 4, + TBS_BOTTOM = 0, + TBS_LEFT = 4, + TBS_RIGHT = 0, + TBS_BOTH = 8, + TBS_NOTICKS = 16, + TBS_ENABLESELRANGE = 32, + TBS_FIXEDLENGTH = 64, + TBS_NOTHUMB = 128 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TBS_TOOLTIPS = 0x0100, + TBTS_TOP = 0, + TBTS_LEFT, + TBTS_BOTTOM, + TBTS_RIGHT // = 3 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + TBS_REVERSED = 0x0200 + } +} + +static if (_WIN32_IE >= 0x501) { + enum { + TBS_DOWNISLEFT = 0x0400 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TBIF_BYINDEX = 0x80000000, + TBIF_COMMAND = 32, + TBIF_IMAGE = 1, + TBIF_LPARAM = 16, + TBIF_SIZE = 64, + TBIF_STATE = 4, + TBIF_STYLE = 8, + TBIF_TEXT = 2 + } +} + +enum { + TBM_GETPOS = WM_USER, + TBM_GETRANGEMIN, + TBM_GETRANGEMAX, + TBM_GETTIC, + TBM_SETTIC, + TBM_SETPOS, + TBM_SETRANGE, + TBM_SETRANGEMIN, + TBM_SETRANGEMAX, + TBM_CLEARTICS, + TBM_SETSEL, + TBM_SETSELSTART, + TBM_SETSELEND, // = WM_USER+12, + TBM_GETPTICS = WM_USER+14, + TBM_GETTICPOS, + TBM_GETNUMTICS, + TBM_GETSELSTART, + TBM_GETSELEND, + TBM_CLEARSEL, + TBM_SETTICFREQ, + TBM_SETPAGESIZE, + TBM_GETPAGESIZE, + TBM_SETLINESIZE, + TBM_GETLINESIZE, + TBM_GETTHUMBRECT, + TBM_GETCHANNELRECT, + TBM_SETTHUMBLENGTH, + TBM_GETTHUMBLENGTH, + TBM_SETTOOLTIPS, + TBM_GETTOOLTIPS, + TBM_SETTIPSIDE, + TBM_SETBUDDY, + TBM_GETBUDDY, // = WM_USER+33, + TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT +} + +enum { + TB_LINEUP, + TB_LINEDOWN, + TB_PAGEUP, + TB_PAGEDOWN, + TB_THUMBPOSITION, + TB_THUMBTRACK, + TB_TOP, + TB_BOTTOM, + TB_ENDTRACK // = 8 +} + +enum { + HOTKEYF_SHIFT = 1, + HOTKEYF_CONTROL = 2, + HOTKEYF_ALT = 4, + HOTKEYF_EXT = 8 +} + +enum { + HKCOMB_NONE = 1, + HKCOMB_S = 2, + HKCOMB_C = 4, + HKCOMB_A = 8, + HKCOMB_SC = 16, + HKCOMB_SA = 32, + HKCOMB_CA = 64, + HKCOMB_SCA = 128 +} + +enum { + HKM_SETHOTKEY = WM_USER + 1, + HKM_GETHOTKEY = WM_USER + 2, + HKM_SETRULES = WM_USER + 3 +} + +enum { + PBM_SETRANGE = WM_USER + 1, + PBM_SETPOS, + PBM_DELTAPOS, + PBM_SETSTEP, + PBM_STEPIT, // = WM_USER + 5 + PBM_SETRANGE32 = 1030, + PBM_GETRANGE, + PBM_GETPOS, + PBM_SETBARCOLOR, // = 1033 + PBM_SETBKCOLOR = CCM_SETBKCOLOR +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + PBM_SETMARQUEE = WM_USER + 10, + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + PBM_GETSTEP = WM_USER + 13, + PBM_GETBKCOLOR, + PBM_GETBARCOLOR, + PBM_SETSTATE, + PBM_GETSTATE, + } +} + +enum { + PBS_SMOOTH = 1, + PBS_VERTICAL = 4 +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + PBS_MARQUEE = 8, + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + PBS_SMOOTHREVERSE = 16, + } +} + +enum { + LVS_ICON, + LVS_REPORT, + LVS_SMALLICON, + LVS_LIST, // = 3 + LVS_TYPEMASK = 3, + LVS_SINGLESEL = 4, + LVS_SHOWSELALWAYS = 8, + LVS_SORTASCENDING = 16, + LVS_SORTDESCENDING = 32, + LVS_SHAREIMAGELISTS = 64, + LVS_NOLABELWRAP = 128, + LVS_AUTOARRANGE = 256, + LVS_EDITLABELS = 512, + LVS_NOSCROLL = 0x2000, + LVS_TYPESTYLEMASK = 0xFC00, + LVS_ALIGNTOP = 0, + LVS_ALIGNLEFT = 0x800, + LVS_ALIGNMASK = 0xC00, + LVS_OWNERDRAWFIXED = 0x400, + LVS_NOCOLUMNHEADER = 0x4000, + LVS_NOSORTHEADER = 0x8000 +} + +static if (_WIN32_IE >= 0x300) { + enum { + CDIS_CHECKED = 8, + CDIS_DEFAULT = 32, + CDIS_DISABLED = 4, + CDIS_FOCUS = 16, + CDIS_GRAYED = 2, + CDIS_HOT = 64, + CDIS_SELECTED = 1, + CDIS_MARKED = 128, + CDIS_INDETERMINATE = 256 + } + + static if (_WIN32_WINNT >= 0x501) { + enum { + CDIS_SHOWKEYBOARDCUES = 512 + } + } + + enum { + CDDS_POSTERASE = 4, + CDDS_POSTPAINT = 2, + CDDS_PREERASE = 3, + CDDS_PREPAINT = 1, + CDDS_ITEM = 65536, + CDDS_ITEMPOSTERASE = 65540, + CDDS_ITEMPOSTPAINT = 65538, + CDDS_ITEMPREERASE = 65539, + CDDS_ITEMPREPAINT = 65537 + } + + static if (_WIN32_IE >= 0x400) { + enum { + CDDS_SUBITEM = 0x20000 + } + } + + enum { + CDRF_DODEFAULT = 0x00, + CDRF_NOTIFYITEMDRAW = 0x20, + CDRF_NOTIFYSUBITEMDRAW = 0x20, + CDRF_NOTIFYITEMERASE = 0x80, + CDRF_NOTIFYPOSTERASE = 0x40, + CDRF_NOTIFYPOSTPAINT = 0x10, + CDRF_NEWFONT = 0x02, + CDRF_SKIPDEFAULT = 0x04 + } + + static if (_WIN32_IE >= 0x400) { + enum { + LVBKIF_SOURCE_NONE = 0x00000000, + LVBKIF_SOURCE_HBITMAP = 0x00000001, + LVBKIF_SOURCE_URL = 0x00000002, + LVBKIF_SOURCE_MASK = 0x00000003, + LVBKIF_STYLE_NORMAL = 0x00000000, + LVBKIF_STYLE_TILE = 0x00000010, + LVBKIF_STYLE_MASK = 0x00000010 + } + } + + static if (_WIN32_WINNT >= 0x501) { + enum { + LVBKIF_FLAG_TILEOFFSET = 0x00000100, + LVBKIF_TYPE_WATERMARK = 0x10000000 + } + } + + enum { + LVS_OWNERDATA = 4096 + } + + enum { + LVS_EX_CHECKBOXES = 4, + LVS_EX_FULLROWSELECT = 32, + LVS_EX_GRIDLINES = 1, + LVS_EX_HEADERDRAGDROP = 16, + LVS_EX_ONECLICKACTIVATE = 64, + LVS_EX_SUBITEMIMAGES = 2, + LVS_EX_TRACKSELECT = 8, + LVS_EX_TWOCLICKACTIVATE = 128 + } + + enum { + LVSICF_NOINVALIDATEALL = 0x00000001, + LVSICF_NOSCROLL = 0x00000002 + } + + static if(_WIN32_IE >= 0x400) { + enum { + LVS_EX_FLATSB = 0x00000100, + LVS_EX_REGIONAL = 0x00000200, + LVS_EX_INFOTIP = 0x00000400, + LVS_EX_UNDERLINEHOT = 0x00000800, + LVS_EX_UNDERLINECOLD = 0x00001000, + LVS_EX_MULTIWORKAREAS = 0x00002000 + } + } + + static if(_WIN32_IE >= 0x500) { + enum { + LVS_EX_LABELTIP = 0x00004000, + LVS_EX_BORDERSELECT = 0x00008000 + } + } +} + +enum { + LVSIL_NORMAL, + LVSIL_SMALL, + LVSIL_STATE +} + +enum { + LVM_GETBKCOLOR = LVM_FIRST, + LVM_SETBKCOLOR, + LVM_GETIMAGELIST, + LVM_SETIMAGELIST, + LVM_GETITEMCOUNT, // = LVM_FIRST + 4 + LVM_SORTITEMSEX = LVM_FIRST + 81, + LVM_GETGROUPSTATE = LVM_FIRST + 92, + LVM_GETFOCUSEDGROUP, + LVM_GETGROUPRECT = LVM_FIRST + 98, + LVM_SETVIEW = LVM_FIRST + 142, + LVM_GETVIEW, // = LVM_FIRST + 143 + LVM_INSERTGROUP = LVM_FIRST + 145, + LVM_SETGROUPINFO = LVM_FIRST + 147, + LVM_GETGROUPINFO = LVM_FIRST + 149, + LVM_REMOVEGROUP, + LVM_MOVEGROUP, // = LVM_FIRST + 151 + LVM_GETGROUPCOUNT, + LVM_GETGROUPINFOBYINDEX, + LVM_MOVEITEMTOGROUP, + LVM_SETGROUPMETRICS = LVM_FIRST + 155, + LVM_GETGROUPMETRICS, + LVM_ENABLEGROUPVIEW, + LVM_SORTGROUPS, + LVM_INSERTGROUPSORTED, + LVM_REMOVEALLGROUPS, + LVM_HASGROUP, + LVM_SETTILEVIEWINFO, + LVM_GETTILEVIEWINFO, + LVM_SETTILEINFO, + LVM_GETTILEINFO, + LVM_SETINSERTMARK, + LVM_GETINSERTMARK, + LVM_INSERTMARKHITTEST, + LVM_GETINSERTMARKRECT, + LVM_SETINSERTMARKCOLOR, + LVM_GETINSERTMARKCOLOR, // = LVM_FIRST + 171 + LVM_SETINFOTIP = LVM_FIRST + 173, + LVM_GETSELECTEDCOLUMN, + LVM_ISGROUPVIEWENABLED, + LVM_GETOUTLINECOLOR, + LVM_SETOUTLINECOLOR, // = LVM_FIRST + 177 + LVM_CANCELEDITLABEL = LVM_FIRST + 179, + LVM_MAPINDEXTOID = LVM_FIRST + 180, + LVM_MAPIDTOINDEX = LVM_FIRST + 181, + LVM_ISITEMVISIBLE = LVM_FIRST + 182, +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140 + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + LVM_GETEMPTYTEXT = LVM_FIRST + 204, + LVM_GETFOOTERRECT = LVM_FIRST + 205, + LVM_GETFOOTERINFO = LVM_FIRST + 206, + LVM_GETFOOTERITEMRECT = LVM_FIRST + 207, + LVM_GETFOOTERITEM = (LVM_FIRST + 208), + LVM_GETITEMINDEXRECT = (LVM_FIRST + 209), + LVM_SETITEMINDEXSTATE = (LVM_FIRST + 210), + LVM_GETNEXTITEMINDEX = (LVM_FIRST + 211), + } +} + +enum { + LVIF_TEXT = 1, + LVIF_IMAGE = 2, + LVIF_PARAM = 4, + LVIF_STATE = 8 +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVIF_INDENT = 16, + LVIF_NORECOMPUTE = 2048 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + LVIF_GROUPID = 128, + LVIF_COLUMNS = 256 + } +} + +enum { + LVIS_FOCUSED = 1, + LVIS_SELECTED = 2, + LVIS_CUT = 4, + LVIS_DROPHILITED = 8, + LVIS_OVERLAYMASK = 0xF00, + LVIS_STATEIMAGEMASK = 0xF000 +} + +const LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR) -1; +const LPSTR LPSTR_TEXTCALLBACKA = cast(LPSTR) -1; + +const I_IMAGECALLBACK = -1; + +static if(_WIN32_IE >= 0x400) { + enum { + LVM_SETBKIMAGEA = LVM_FIRST + 68, + LVM_SETBKIMAGEW = LVM_FIRST + 138, + LVM_GETBKIMAGEA = LVM_FIRST + 69, + LVM_GETBKIMAGEW = LVM_FIRST + 139, + LV_MAX_WORKAREAS = 16, + LVM_SETWORKAREAS = LVM_FIRST + 65, + LVM_GETWORKAREAS = LVM_FIRST + 70, + LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73, + LVM_GETSELECTIONMARK = LVM_FIRST + 66, + LVM_SETSELECTIONMARK = LVM_FIRST + 67, + LVM_SETHOVERTIME = LVM_FIRST + 71, + LVM_GETHOVERTIME = LVM_FIRST + 72, + LVM_SETTOOLTIPS = LVM_FIRST + 74, + LVM_GETTOOLTIPS = LVM_FIRST + 78, + LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +enum { + LVNI_ALL, + LVNI_FOCUSED = 1, + LVNI_SELECTED = 2, + LVNI_CUT = 4, + LVNI_DROPHILITED = 8, + LVNI_ABOVE = 256, + LVNI_BELOW = 512, + LVNI_TOLEFT = 1024, + LVNI_TORIGHT = 2048 +} + +enum { + LVM_GETITEMA = LVM_FIRST + 5, + LVM_SETITEMA, + LVM_INSERTITEMA, + LVM_DELETEITEM, + LVM_DELETEALLITEMS, + LVM_GETCALLBACKMASK, + LVM_SETCALLBACKMASK, + LVM_GETNEXTITEM, + LVM_FINDITEMA, + LVM_GETITEMRECT, + LVM_SETITEMPOSITION, + LVM_GETITEMPOSITION, + LVM_GETSTRINGWIDTHA, + LVM_HITTEST, + LVM_ENSUREVISIBLE, + LVM_SCROLL, + LVM_REDRAWITEMS, + LVM_ARRANGE, + LVM_EDITLABELA, + LVM_GETEDITCONTROL, + LVM_GETCOLUMNA, + LVM_SETCOLUMNA, + LVM_INSERTCOLUMNA, + LVM_DELETECOLUMN, + LVM_GETCOLUMNWIDTH, + LVM_SETCOLUMNWIDTH, // = LVM_FIRST + 30, + LVM_CREATEDRAGIMAGE = LVM_FIRST + 33, + LVM_GETVIEWRECT, + LVM_GETTEXTCOLOR, + LVM_SETTEXTCOLOR, + LVM_GETTEXTBKCOLOR, + LVM_SETTEXTBKCOLOR, + LVM_GETTOPINDEX, + LVM_GETCOUNTPERPAGE, + LVM_GETORIGIN, + LVM_UPDATE, + LVM_SETITEMSTATE, + LVM_GETITEMSTATE, + LVM_GETITEMTEXTA, + LVM_SETITEMTEXTA, + LVM_SETITEMCOUNT, + LVM_SORTITEMS, + LVM_SETITEMPOSITION32, + LVM_GETSELECTEDCOUNT, + LVM_GETITEMSPACING, + LVM_GETISEARCHSTRINGA, // = LVM_FIRST + 52, + LVM_GETITEMW = LVM_FIRST + 75, + LVM_SETITEMW = LVM_FIRST + 76, + LVM_INSERTITEMW = LVM_FIRST + 77, + LVM_FINDITEMW = LVM_FIRST + 83, + LVM_GETSTRINGWIDTHW = LVM_FIRST + 87, + LVM_GETCOLUMNW = LVM_FIRST + 95, + LVM_SETCOLUMNW = LVM_FIRST + 96, + LVM_INSERTCOLUMNW = LVM_FIRST + 97, + LVM_GETITEMTEXTW = LVM_FIRST + 115, + LVM_SETITEMTEXTW, + LVM_GETISEARCHSTRINGW, + LVM_EDITLABELW // = LVM_FIRST + 118, +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVM_GETHEADER = LVM_FIRST + 31, + LVM_SETICONSPACING = LVM_FIRST + 53, + LVM_SETEXTENDEDLISTVIEWSTYLE, + LVM_GETEXTENDEDLISTVIEWSTYLE, + LVM_GETSUBITEMRECT, + LVM_SUBITEMHITTEST, + LVM_SETCOLUMNORDERARRAY, + LVM_GETCOLUMNORDERARRAY, + LVM_SETHOTITEM, + LVM_GETHOTITEM, + LVM_SETHOTCURSOR, + LVM_GETHOTCURSOR, + LVM_APPROXIMATEVIEWRECT // = LVM_FIRST + 64, + } +} + +enum { + LVFI_PARAM = 1, + LVFI_STRING = 2, + LVFI_PARTIAL = 8, + LVFI_WRAP = 32, + LVFI_NEARESTXY = 64 +} + +enum { + LVIF_DI_SETITEM = 0x1000 +} + +enum { + LVIR_BOUNDS, + LVIR_ICON, + LVIR_LABEL, + LVIR_SELECTBOUNDS // = 3 +} + +enum { + LVHT_NOWHERE = 1, + LVHT_ONITEMICON = 2, + LVHT_ONITEMLABEL = 4, + LVHT_ONITEMSTATEICON = 8, + LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL + | LVHT_ONITEMSTATEICON, + LVHT_ABOVE = 8, + LVHT_BELOW = 16, + LVHT_TORIGHT = 32, + LVHT_TOLEFT = 64 +} + +enum { + LVA_DEFAULT = 0, + LVA_ALIGNLEFT = 1, + LVA_ALIGNTOP = 2, + LVA_SNAPTOGRID = 5 +} + +enum { + LVCF_FMT = 1, + LVCF_WIDTH = 2, + LVCF_TEXT = 4, + LVCF_SUBITEM = 8 +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVCF_IMAGE = 16, + LVCF_ORDER = 32 + } +} + +enum { + LVCFMT_LEFT, + LVCFMT_RIGHT, + LVCFMT_CENTER, + LVCFMT_JUSTIFYMASK // = 3 +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVCFMT_IMAGE = 2048, + LVCFMT_BITMAP_ON_RIGHT = 4096, + LVCFMT_COL_HAS_IMAGES = 32768 + } +} + +enum { + LVSCW_AUTOSIZE = -1, + LVSCW_AUTOSIZE_USEHEADER = -2 +} + +enum { + LVN_ITEMCHANGING = LVN_FIRST, + LVN_ITEMCHANGED = LVN_FIRST - 1, + LVN_INSERTITEM = LVN_FIRST - 2, + LVN_DELETEITEM = LVN_FIRST - 3, + LVN_DELETEALLITEMS = LVN_FIRST - 4, + LVN_BEGINLABELEDITA = LVN_FIRST - 5, + LVN_ENDLABELEDITA = LVN_FIRST - 6, + LVN_COLUMNCLICK = LVN_FIRST - 8, + LVN_BEGINDRAG = LVN_FIRST - 9, + LVN_BEGINRDRAG = LVN_FIRST - 11, + LVN_GETDISPINFOA = LVN_FIRST - 50, + LVN_SETDISPINFOA = LVN_FIRST - 51, + LVN_KEYDOWN = LVN_FIRST - 55, + LVN_BEGINLABELEDITW = LVN_FIRST - 75, + LVN_ENDLABELEDITW = LVN_FIRST - 76, + LVN_GETDISPINFOW = LVN_FIRST - 77, + LVN_SETDISPINFOW = LVN_FIRST - 78 +} + +static if (_WIN32_IE >= 0x400) { + enum { + LVN_MARQUEEBEGIN = LVN_FIRST - 56, + LVN_GETINFOTIPA = LVN_FIRST - 57, + LVN_GETINFOTIPW = LVN_FIRST - 58, + LVKF_ALT = 1, + LVKF_CONTROL = 2, + LVKF_SHIFT = 4, + LVGIT_UNFOLDED = 1 + } +} + +enum { + TVS_HASBUTTONS = 1, + TVS_HASLINES = 2, + TVS_LINESATROOT = 4, + TVS_EDITLABELS = 8, + TVS_DISABLEDRAGDROP = 16, + TVS_SHOWSELALWAYS = 32 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TVS_RTLREADING = 64, + TVS_NOTOOLTIPS = 128, + TVS_CHECKBOXES = 256, + TVS_TRACKSELECT = 512 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVS_SINGLEEXPAND = 1024, + TVS_INFOTIP = 2048, + TVS_FULLROWSELECT = 4096, + TVS_NOSCROLL = 8192, + TVS_NONEVENHEIGHT = 16384 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + TVS_NOHSCROLL = 0x8000 + } +} + +enum { + TVIF_TEXT = 1, + TVIF_IMAGE = 2, + TVIF_PARAM = 4, + TVIF_STATE = 8, + TVIF_HANDLE = 16, + TVIF_SELECTEDIMAGE = 32, + TVIF_CHILDREN = 64 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVIF_INTEGRAL = 0x0080 + } +} + +enum { + TVIS_FOCUSED = 1, + TVIS_SELECTED = 2, + TVIS_CUT = 4, + TVIS_DROPHILITED = 8, + TVIS_BOLD = 16, + TVIS_EXPANDED = 32, + TVIS_EXPANDEDONCE = 64, + TVIS_OVERLAYMASK = 0xF00, + TVIS_STATEIMAGEMASK = 0xF000, + TVIS_USERMASK = 0xF000 +} + +enum { + I_CHILDRENCALLBACK = -1 +} + +mixin DECLARE_HANDLE!("HTREEITEM"); +mixin DECLARE_HANDLE!("HIMAGELIST"); + +version(Win64) +{ +const HTREEITEM + TVI_ROOT = cast(HTREEITEM) cast(ULONG_PTR)-0x10000, + TVI_FIRST = cast(HTREEITEM) cast(ULONG_PTR)-0xffff, + TVI_LAST = cast(HTREEITEM) cast(ULONG_PTR)-0xfffe, + TVI_SORT = cast(HTREEITEM) cast(ULONG_PTR)-0xfffd; +} else { +const HTREEITEM + TVI_ROOT = cast(HTREEITEM) 0xFFFF0000, + TVI_FIRST = cast(HTREEITEM) 0xFFFF0001, + TVI_LAST = cast(HTREEITEM) 0xFFFF0002, + TVI_SORT = cast(HTREEITEM) 0xFFFF0003; +} + +enum { + TVSIL_NORMAL = 0, + TVSIL_STATE = 2 +} + +enum { + TVM_INSERTITEMA = TV_FIRST, + TVM_DELETEITEM = TV_FIRST + 1, + TVM_EXPAND = TV_FIRST + 2, + TVM_GETITEMRECT = TV_FIRST + 4, + TVM_GETCOUNT, + TVM_GETINDENT, + TVM_SETINDENT, + TVM_GETIMAGELIST, + TVM_SETIMAGELIST, + TVM_GETNEXTITEM, + TVM_SELECTITEM, + TVM_GETITEMA, + TVM_SETITEMA, + TVM_EDITLABELA, + TVM_GETEDITCONTROL, + TVM_GETVISIBLECOUNT, + TVM_HITTEST, + TVM_CREATEDRAGIMAGE, + TVM_SORTCHILDREN, + TVM_ENSUREVISIBLE, + TVM_SORTCHILDRENCB, + TVM_ENDEDITLABELNOW, + TVM_GETISEARCHSTRINGA, // = TV_FIRST + 23 + TVM_INSERTITEMW = TV_FIRST + 50, + TVM_GETITEMW = TV_FIRST + 62, + TVM_SETITEMW = TV_FIRST + 63, + TVM_GETISEARCHSTRINGW = TV_FIRST + 64, + TVM_EDITLABELW = TV_FIRST + 65 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TVM_GETTOOLTIPS = TV_FIRST + 25, + TVM_SETTOOLTIPS = TV_FIRST + 24 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVM_SETINSERTMARK = TV_FIRST + 26, + TVM_SETITEMHEIGHT, + TVM_GETITEMHEIGHT, + TVM_SETBKCOLOR, + TVM_SETTEXTCOLOR, + TVM_GETBKCOLOR, + TVM_GETTEXTCOLOR, + TVM_SETSCROLLTIME, + TVM_GETSCROLLTIME, // = TV_FIRST + 34 + TVM_SETINSERTMARKCOLOR = TV_FIRST + 37, + TVM_GETINSERTMARKCOLOR = TV_FIRST + 38, + TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + TVM_GETITEMSTATE = TV_FIRST + 39, + TVM_SETLINECOLOR = TV_FIRST + 40, + TVM_GETLINECOLOR = TV_FIRST + 41 + } +} + +static if (_WIN32_IE >= 0x501) { + enum { + TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42, + TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43, + TVM_SETEXTENDEDSTYLE = TV_FIRST + 44, + TVM_GETEXTENDEDSTYLE = TV_FIRST + 45, + TVM_SETAUTOSCROLLINFO = TV_FIRST + 59 + } +} + +static if (_WIN32_IE >= 0x600) { + enum { + TVM_GETSELECTEDCOUNT = TV_FIRST + 70, + TVM_SHOWINFOTIP = TV_FIRST + 71, + TVM_GETITEMPARTRECT = TV_FIRST + 72, + } +} + +enum { + TVE_COLLAPSE = 1, + TVE_EXPAND = 2, + TVE_TOGGLE = 3, + TVE_COLLAPSERESET = 0x8000 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TVE_EXPANDPARTIAL = 0x4000 + } +} + +enum { + TVC_UNKNOWN, + TVC_BYMOUSE, + TVC_BYKEYBOARD // = 2 +} + +enum { + TVGN_ROOT, + TVGN_NEXT, + TVGN_PREVIOUS, + TVGN_PARENT, + TVGN_CHILD, + TVGN_FIRSTVISIBLE, + TVGN_NEXTVISIBLE, + TVGN_PREVIOUSVISIBLE, + TVGN_DROPHILITE, + TVGN_CARET // = 9 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVGN_LASTVISIBLE = 10 + } +} + +static if (_WIN32_IE >= 0x600) { + enum { + TVGN_NEXTSELECTED = 11 + } +} + +enum { + TVN_SELCHANGINGA = TVN_FIRST - 1, + TVN_SELCHANGEDA = TVN_FIRST - 2, + TVN_GETDISPINFOA = TVN_FIRST - 3, + TVN_SETDISPINFOA = TVN_FIRST - 4, + TVN_ITEMEXPANDINGA = TVN_FIRST - 5, + TVN_ITEMEXPANDEDA = TVN_FIRST - 6, + TVN_BEGINDRAGA = TVN_FIRST - 7, + TVN_BEGINRDRAGA = TVN_FIRST - 8, + TVN_DELETEITEMA = TVN_FIRST - 9, + TVN_BEGINLABELEDITA = TVN_FIRST - 10, + TVN_ENDLABELEDITA = TVN_FIRST - 11, + TVN_KEYDOWN = TVN_FIRST - 12, + TVN_SELCHANGINGW = TVN_FIRST - 50, + TVN_SELCHANGEDW = TVN_FIRST - 51, + TVN_GETDISPINFOW = TVN_FIRST - 52, + TVN_SETDISPINFOW = TVN_FIRST - 53, + TVN_ITEMEXPANDINGW = TVN_FIRST - 54, + TVN_ITEMEXPANDEDW = TVN_FIRST - 55, + TVN_BEGINDRAGW = TVN_FIRST - 56, + TVN_BEGINRDRAGW = TVN_FIRST - 57, + TVN_DELETEITEMW = TVN_FIRST - 58, + TVN_BEGINLABELEDITW = TVN_FIRST - 59, + TVN_ENDLABELEDITW = TVN_FIRST - 60 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVNRET_DEFAULT = 0, + TVNRET_SKIPOLD = 1, + TVNRET_SKIPNEW = 2, + TVN_GETINFOTIPA = TVN_FIRST - 13, + TVN_GETINFOTIPW = TVN_FIRST - 14, + TVN_SINGLEEXPAND = TVN_FIRST - 15 + } +} + +enum { + TVIF_DI_SETITEM = 0x1000 +} + +enum { + TVHT_NOWHERE = 1, + TVHT_ONITEMICON = 2, + TVHT_ONITEMLABEL = 4, + TVHT_ONITEMINDENT = 8, + TVHT_ONITEMBUTTON = 16, + TVHT_ONITEMRIGHT = 32, + TVHT_ONITEMSTATEICON = 64, + TVHT_ABOVE = 256, + TVHT_BELOW = 512, + TVHT_TORIGHT = 1024, + TVHT_TOLEFT = 2048, + TCHT_NOWHERE = 1, + TCHT_ONITEMICON = 2, + TCHT_ONITEMLABEL = 4, + TVHT_ONITEM = TVHT_ONITEMICON | TVHT_ONITEMLABEL + | TVHT_ONITEMSTATEICON, + TCHT_ONITEM = TCHT_ONITEMICON | TCHT_ONITEMLABEL +} + +enum { + TCS_TABS = 0, + TCS_RIGHTJUSTIFY = 0, + TCS_SINGLELINE = 0, + TCS_FORCEICONLEFT = 16, + TCS_FORCELABELLEFT = 32, + TCS_BUTTONS = 256, + TCS_MULTILINE = 512, + TCS_FIXEDWIDTH = 1024, + TCS_RAGGEDRIGHT = 2048, + TCS_FOCUSONBUTTONDOWN = 0x1000, + TCS_OWNERDRAWFIXED = 0x2000, + TCS_TOOLTIPS = 0x4000, + TCS_FOCUSNEVER = 0x8000 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TCS_BOTTOM = 2, + TCS_RIGHT = 2, + TCS_VERTICAL = 128, + TCS_SCROLLOPPOSITE = 0x0001, + TCS_HOTTRACK = 0x0040, + TCS_MULTISELECT = 0x0004 + } +} + +static if(_WIN32_IE >= 0x400) { + enum { + TCS_FLATBUTTONS = 0x0008, + TCS_EX_FLATSEPARATORS = 0x00000001, + TCS_EX_REGISTERDROP = 0x00000002 + } +} + +enum { + TCIF_TEXT = 1, + TCIF_IMAGE = 2, + TCIF_RTLREADING = 4, + TCIF_PARAM = 8 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TCIF_STATE = 16 + } +} + +enum { + TCIS_BUTTONPRESSED = 1 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TCIS_HIGHLIGHTED = 2 + } +} + +enum { + TCM_FIRST = 0x1300, + TCM_GETIMAGELIST = TCM_FIRST + 2, + TCM_SETIMAGELIST, + TCM_GETITEMCOUNT, + TCM_GETITEMA, + TCM_SETITEMA, + TCM_INSERTITEMA, + TCM_DELETEITEM, + TCM_DELETEALLITEMS, + TCM_GETITEMRECT, + TCM_GETCURSEL, + TCM_SETCURSEL, + TCM_HITTEST, + TCM_SETITEMEXTRA, // = TCM_FIRST + 14 + TCM_ADJUSTRECT = TCM_FIRST + 40, + TCM_SETITEMSIZE, + TCM_REMOVEIMAGE, + TCM_SETPADDING, + TCM_GETROWCOUNT, + TCM_GETTOOLTIPS, + TCM_SETTOOLTIPS, + TCM_GETCURFOCUS, + TCM_SETCURFOCUS, + TCM_SETMINTABWIDTH, + TCM_DESELECTALL, // = TCM_FIRST + 50 + TCM_GETITEMW = TCM_FIRST + 60, + TCM_SETITEMW = TCM_FIRST + 61, + TCM_INSERTITEMW = TCM_FIRST + 62 +} + +static if (_WIN32_IE >=0x0400) { + enum { + TCM_HIGHLIGHTITEM = TCM_FIRST + 51, + TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52, + TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53, + TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +enum { + TCN_KEYDOWN = TCN_FIRST, + TCN_SELCHANGE = TCN_FIRST - 1, + TCN_SELCHANGING = TCN_FIRST - 2 +} + +enum { + NM_OUTOFMEMORY = NM_FIRST - 1, + NM_CLICK = NM_FIRST - 2, + NM_DBLCLK = NM_FIRST - 3, + NM_RETURN = NM_FIRST - 4, + NM_RCLICK = NM_FIRST - 5, + NM_RDBLCLK = NM_FIRST - 6, + NM_SETFOCUS = NM_FIRST - 7, + NM_KILLFOCUS = NM_FIRST - 8, + NM_CUSTOMDRAW = NM_FIRST - 12, + NM_HOVER = NM_FIRST - 13, + NM_NCHITTEST = NM_FIRST - 14, + NM_KEYDOWN = NM_FIRST - 15, + NM_RELEASEDCAPTURE = NM_FIRST - 16, + NM_SETCURSOR = NM_FIRST - 17, + NM_CHAR = NM_FIRST - 18, + NM_TOOLTIPSCREATED = NM_FIRST - 19 +} + +enum { + SBARS_SIZEGRIP = 256 +} + +/*enum { + CCM_FIRST = 0x2000, + CCM_LAST = CCM_FIRST + 0x200, + CCM_SETBKCOLOR = 8193, + CCM_SETCOLORSCHEME = 8194, + CCM_GETCOLORSCHEME = 8195, + CCM_GETDROPTARGET = 8196, + CCM_SETUNICODEFORMAT = 8197, + CCM_GETUNICODEFORMAT = 8198, + CCM_SETVERSION = 0x2007, + CCM_GETVERSION = 0x2008, + CCM_SETNOTIFYWINDOW = 0x2009 +}*/ + +static if (_WIN32_WINNT >= 0x501) { + enum { + CCM_SETWINDOWTHEME = 0x200b, + CCM_DPISCALE = 0x200c, + + RB_GETBANDMARGINS = WM_USER + 40, + RB_SETWINDOWTHEME = CCM_SETWINDOWTHEME, + TB_SETWINDOWTHEME = CCM_SETWINDOWTHEME, + TTM_SETWINDOWTHEME = CCM_SETWINDOWTHEME, + } +} + +enum { + ICC_LISTVIEW_CLASSES = 1, + ICC_TREEVIEW_CLASSES = 2, + ICC_BAR_CLASSES = 4, + ICC_TAB_CLASSES = 8, + ICC_UPDOWN_CLASS = 16, + ICC_PROGRESS_CLASS = 32, + ICC_HOTKEY_CLASS = 64, + ICC_ANIMATE_CLASS = 128, + ICC_WIN95_CLASSES = 255, + ICC_DATE_CLASSES = 256, + ICC_USEREX_CLASSES = 512, + ICC_COOL_CLASSES = 1024 +} + +static if (_WIN32_IE >= 0x400) { + enum { + INFOTIPSIZE = 1024, + ICC_INTERNET_CLASSES = 2048, + ICC_PAGESCROLLER_CLASS = 4096, + ICC_NATIVEFNTCTL_CLASS = 8192 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + ICC_STANDARD_CLASSES = 0x00004000, + ICC_LINK_CLASS = 0x00008000 + } +} + +enum { + GDTR_MIN = 1, + GDTR_MAX = 2 +} + +enum { + GMR_VISIBLE, + GMR_DAYSTATE +} + +enum { + GDT_ERROR = -1, + GDT_VALID = 0, + GDT_NONE = 1 +} + +enum { + DTS_SHORTDATEFORMAT = 0, + DTS_UPDOWN = 1, + DTS_SHOWNONE = 2, + DTS_LONGDATEFORMAT = 4, + DTS_TIMEFORMAT = 9, + DTS_APPCANPARSE = 16, + DTS_RIGHTALIGN = 32 +} + +static if (_WIN32_IE >= 0x500) { + enum { + DTS_SHORTDATECENTURYFORMAT = 0x000C + } +} + +enum { + MCS_DAYSTATE = 1, + MCS_MULTISELECT = 2, + MCS_WEEKNUMBERS = 4 +} + +static if (_WIN32_IE >= 0x400) { + enum { + MCS_NOTODAYCIRCLE = 0x0008, + MCS_NOTODAY = 0x0010 + } +} else { + enum { + MCS_NOTODAY = 0x0008 + } +} + +enum { + DTM_FIRST = 0x10000, + DTM_GETSYSTEMTIME = 0x1001, + DTM_SETSYSTEMTIME = 0x1002, + DTM_GETRANGE = 0x1003, + DTM_SETRANGE = 0x1004, + DTM_SETFORMATA = 0x1005, + DTM_SETMCCOLOR = 0x1006, + DTM_GETMCCOLOR = 0x1007, + DTM_GETMONTHCAL = 0x1008, + DTM_SETMCFONT = 0x1009, + DTM_GETMCFONT = 0x100a, + DTM_SETFORMATW = 0x1050 +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + DTM_SETMCSTYLE = DTM_FIRST + 11, + DTM_GETMCSTYLE, + DTM_CLOSEMONTHCAL, + DTM_GETDATETIMEPICKERINFO, + DTM_GETIDEALSIZE, + } +} + +enum { + DTN_USERSTRINGA = -758U, + DTN_USERSTRINGW = -745U, + DTN_WMKEYDOWNA = -757U, + DTN_WMKEYDOWNW = -744U, + DTN_FORMATA = -756U, + DTN_FORMATW = -743U, + DTN_FORMATQUERYA = -755U, + DTN_FORMATQUERYW = -742U, + DTN_DROPDOWN = -754U, + DTN_CLOSEUP = -753U, + DTN_DATETIMECHANGE = -759U, +} + +enum { + MCM_FIRST = 0x1000, + MCM_GETCURSEL = 0x1001, + MCM_SETCURSEL = 0x1002, + MCM_GETMAXSELCOUNT = 0x1003, + MCM_SETMAXSELCOUNT = 0x1004, + MCM_GETSELRANGE = 0x1005, + MCM_SETSELRANGE = 0x1006, + MCM_GETMONTHRANGE = 0x1007, + MCM_SETDAYSTATE = 0x1008, + MCM_GETMINREQRECT = 0x1009, + MCM_SETCOLOR = 0x100a, + MCM_GETCOLOR = 0x100b, + MCM_SETTODAY = 0x100c, + MCM_GETTODAY = 0x100d, + MCM_HITTEST = 0x100e, + MCM_SETFIRSTDAYOFWEEK = 0x100f, + MCM_GETFIRSTDAYOFWEEK = 0x1010, + MCM_GETRANGE = 0x1011, + MCM_SETRANGE = 0x1012, + MCM_GETMONTHDELTA = 0x1013, + MCM_SETMONTHDELTA = 0x1014, + MCM_GETMAXTODAYWIDTH = 0x1015, + MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + MCM_GETCURRENTVIEW = MCM_FIRST + 22, + MCM_GETCALENDARCOUNT, + MCM_GETCALENDARGRIDINFO, + MCM_GETCALID = MCM_FIRST + 27, + MCM_SETCALID, + MCM_SIZERECTTOMIN, + MCM_SETCALENDARBORDER, + MCM_GETCALENDARBORDER, + MCM_SETCURRENTVIEW, + } +} + +enum { + MCN_SELCHANGE = -749U, + MCN_GETDAYSTATE = -747U, + MCN_SELECT = -746U +} + +enum { + ODT_HEADER = 100, + ODT_TAB, + ODT_LISTVIEW // = 102 +} + +enum { + SB_SETBKCOLOR = 0x2001 +} + +static if (_WIN32_IE >= 0x300) { + enum { + SB_ISSIMPLE = 1038 + } + + enum { + MCSC_BACKGROUND, + MCSC_TEXT, + MCSC_TITLEBK, + MCSC_TITLETEXT, + MCSC_MONTHBK, + MCSC_TRAILINGTEXT // = 5 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + MCHT_TITLE = 0x10000, + MCHT_CALENDAR = 0x20000, + MCHT_TODAYLINK = 0x30000, + MCHT_NEXT = 0x1000000, + MCHT_PREV = 0x2000000, + MCHT_NOWHERE = 0x00, + MCHT_TITLEBK = MCHT_TITLE, + MCHT_TITLEMONTH = MCHT_TITLE | 0x0001, + MCHT_TITLEYEAR = MCHT_TITLE | 0x0002, + MCHT_TITLEBTNNEXT = MCHT_TITLE | MCHT_NEXT | 0x0003, + MCHT_TITLEBTNPREV = MCHT_TITLE | MCHT_PREV | 0x0003, + MCHT_CALENDARBK = MCHT_CALENDAR, + MCHT_CALENDARDATE = MCHT_CALENDAR | 0x0001, + MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT, + MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV, + MCHT_CALENDARDAY = MCHT_CALENDAR | 0x0002, + MCHT_CALENDARWEEKNUM = MCHT_CALENDAR | 0x0003 + } +} + +enum { + RBS_TOOLTIPS = 256, + RBS_VARHEIGHT = 512, + RBS_BANDBORDERS = 1024, + RBS_FIXEDORDER = 2048 +} + +enum { + RBIM_IMAGELIST = 1 +} + +enum { + RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, + RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME +} + +enum { + RBBS_BREAK = 0x0001, + RBBS_FIXEDSIZE = 0x0002, + RBBS_CHILDEDGE = 0x0004, + RBBS_HIDDEN = 0x0008, + RBBS_NOVERT = 0x0010, + RBBS_FIXEDBMP = 0x0020, + RBBS_VARIABLEHEIGHT = 0x0040, + RBBS_GRIPPERALWAYS = 0x0080, + RBBS_NOGRIPPER = 0x0100 +} + +static if (_WIN32_IE >= 0x500) { + enum { + RBBS_USECHEVRON = 0x0200 + } +} + +static if (_WIN32_IE >= 0x501) { + enum { + RBBS_HIDETITLE = 0x0400, + RBBS_TOPALIGN = 0x0800 + } +} + +enum { + RBBIM_STYLE = 1, + RBBIM_COLORS = 2, + RBBIM_TEXT = 4, + RBBIM_IMAGE = 8, + RBBIM_CHILD = 16, + RBBIM_CHILDSIZE = 32, + RBBIM_SIZE = 64, + RBBIM_BACKGROUND = 128, + RBBIM_ID = 256 +} + +enum { + RB_INSERTBANDA = WM_USER + 1, + RB_DELETEBAND, + RB_GETBARINFO, + RB_SETBARINFO, // = WM_USER + 4 + RB_SETBANDINFOA = WM_USER + 6, + RB_SETPARENT = WM_USER + 7, + RB_INSERTBANDW = WM_USER + 10, + RB_SETBANDINFOW, + RB_GETBANDCOUNT, + RB_GETROWCOUNT, + RB_GETROWHEIGHT // = WM_USER + 14, +} + +enum { + RBN_HEIGHTCHANGE = RBN_FIRST +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVN_ODCACHEHINT = LVN_FIRST - 13, + LVN_ODFINDITEMA = LVN_FIRST - 52, + LVN_ODFINDITEMW = LVN_FIRST - 79, + LVN_ITEMACTIVATE = LVN_FIRST - 14, + LVN_ODSTATECHANGED = LVN_FIRST - 15 + } + + version (Unicode) { + enum { + LVN_ODFINDITEM = LVN_ODFINDITEMW + } + } else { + enum { + LVN_ODFINDITEM = LVN_ODFINDITEMA + } + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + SB_SETICON = 1039, + SB_SETTIPTEXTA, + SB_SETTIPTEXTW, + SB_GETTIPTEXTA, + SB_GETTIPTEXTW, + SB_GETICON, // = 1044 + SB_SETUNICODEFORMAT = 0x2005, + SB_GETUNICODEFORMAT = 0x2006 + } + + enum { + PGF_INVISIBLE = 0, + PGF_NORMAL = 1, + PGF_GRAYED = 2, + PGF_DEPRESSED = 4, + PGF_HOT = 8 + } + + enum { + PGB_TOPORLEFT, + PGB_BOTTOMORRIGHT + } + + enum { + PGF_SCROLLUP = 1, + PGF_SCROLLDOWN = 2, + PGF_SCROLLLEFT = 4, + PGF_SCROLLRIGHT = 8 + } + + enum { + PGK_SHIFT = 1, + PGK_CONTROL = 2, + PGK_MENU = 4 + } + + enum { + PGF_CALCWIDTH = 1, + PGF_CALCHEIGHT = 2 + } + + enum { + PGM_FIRST = 0x1400, + PGM_SETCHILD = PGM_FIRST + 1, + PGM_RECALCSIZE, + PGM_FORWARDMOUSE, + PGM_SETBKCOLOR, + PGM_GETBKCOLOR, + PGM_SETBORDER, + PGM_GETBORDER, + PGM_SETPOS, + PGM_GETPOS, + PGM_SETBUTTONSIZE, + PGM_GETBUTTONSIZE, + PGM_GETBUTTONSTATE, // = PGM_FIRST + 12 + PGM_GETDROPTARGET = CCM_GETDROPTARGET + } + + enum { + RBS_REGISTERDROP = 4096, + RBS_AUTOSIZE = 8192, + RBS_VERTICALGRIPPER = 16384, + RBS_DBLCLKTOGGLE = 32768 + } + + enum { + RBBIM_IDEALSIZE = 512, + RBBIM_LPARAM = 1024, + RBBIM_HEADERSIZE = 2048 + } + + enum { + RB_HITTEST = WM_USER + 8, + RB_GETRECT = WM_USER + 9, + RB_IDTOINDEX = WM_USER + 16, + RB_GETTOOLTIPS, + RB_SETTOOLTIPS, + RB_SETBKCOLOR, + RB_GETBKCOLOR, + RB_SETTEXTCOLOR, + RB_GETTEXTCOLOR, + RB_SIZETORECT, + RB_BEGINDRAG, + RB_ENDDRAG, + RB_DRAGMOVE, + RB_GETBARHEIGHT, + RB_GETBANDINFOW, + RB_GETBANDINFOA, + RB_MINIMIZEBAND, + RB_MAXIMIZEBAND, // = WM_USER + 31 + RB_GETDROPTARGET = CCM_GETDROPTARGET, + RB_GETBANDBORDERS = WM_USER + 34, + RB_SHOWBAND = WM_USER + 35, + RB_SETPALETTE = WM_USER + 37, + RB_GETPALETTE = WM_USER + 38, + RB_MOVEBAND = WM_USER + 39, + RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } + + enum { + RBN_GETOBJECT = RBN_FIRST - 1, + RBN_LAYOUTCHANGED = RBN_FIRST - 2, + RBN_AUTOSIZE = RBN_FIRST - 3, + RBN_BEGINDRAG = RBN_FIRST - 4, + RBN_ENDDRAG = RBN_FIRST - 5, + RBN_DELETINGBAND = RBN_FIRST - 6, + RBN_DELETEDBAND = RBN_FIRST - 7, + RBN_CHILDSIZE = RBN_FIRST - 8 + } + + enum { + RBNM_ID = 1, + RBNM_STYLE = 2, + RBNM_LPARAM = 4 + } + + enum { + RBHT_NOWHERE = 1, + RBHT_CAPTION, + RBHT_CLIENT, + RBHT_GRABBER + } + + version (Unicode) { + alias SB_SETTIPTEXTW SB_SETTIPTEXT; + alias SB_GETTIPTEXTW SB_GETTIPTEXT; + alias RB_GETBANDINFOW RB_GETBANDINFO; + } else { + alias SB_SETTIPTEXTA SB_SETTIPTEXT; + alias SB_GETTIPTEXTA SB_GETTIPTEXT; + alias RB_GETBANDINFOA RB_GETBANDINFO; + } +} else { + enum { + RB_GETBANDINFO = WM_USER + 5 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + RB_PUSHCHEVRON = WM_USER + 43, + } +} + +static if (_WIN32_IE >= 0x600) { + enum { + RB_SETEXTENDEDSTYLE = WM_USER + 41, + RB_GETEXTENDEDSTYLE = WM_USER + 42, + } +} + +static if (_WIN32_WINNT >= 0x500) { + enum { + RB_SETBANDWIDTH = WM_USER + 44, + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + ECM_FIRST = 0x1500, + BCM_FIRST = 0x1600, + + BCM_GETIDEALSIZE = BCM_FIRST + 0x0001, + BCM_SETIMAGELIST = BCM_FIRST + 0x0002, + BCM_GETIMAGELIST = BCM_FIRST + 0x0003, + BCM_SETTEXTMARGIN = BCM_FIRST + 0x0004, + BCM_GETTEXTMARGIN = BCM_FIRST + 0x0005, + + BCN_HOTITEMCHANGE = BCN_FIRST + 0x0001, + } + + struct NMBCHOTITEM { + NMHDR hdr; + DWORD dwFlags; + } + alias NMBCHOTITEM* LPNMBCHOTITEM; +} + +static if(_WIN32_WINNT >= 0x600) { + enum { + BST_DROPDOWNPUSHED = 0x0400, + + BS_SPLITBUTTON = 0x0000_000C, + BS_DEFSPLITBUTTON = 0x0000_000D, + BS_COMMANDLINK = 0x0000_000E, + BS_DEFCOMMANDLINK = 0x0000_000F, + + BCSIF_GLYPH = 0x0001, + BCSIF_IMAGE = 0x0002, + BCSIF_STYLE = 0x0004, + BCSIF_SIZE = 0x0008, + + BCSS_NOSPLIT = 0x0001, + BCSS_STRETCH = 0x0002, + BCSS_ALIGNLEFT = 0x0004, + BCSS_IMAGE = 0x0008, + + BCM_SETDROPDOWNSTATE = BCM_FIRST + 0x0006, + BCM_SETSPLITINFO = BCM_FIRST + 0x0007, + BCM_GETSPLITINFO = BCM_FIRST + 0x0008, + BCM_SETNOTE = BCM_FIRST + 0x0009, + BCM_GETNOTE = BCM_FIRST + 0x000A, + BCM_GETNOTELENGTH = BCM_FIRST + 0x000B, + BCM_SETSHIELD = BCM_FIRST + 0x000C, + + BCN_DROPDOWN = BCN_FIRST + 0x0002, + } + + const HIMAGELIST BCCL_NOGLYPH = cast(HIMAGELIST)-1; + + struct BUTTON_SPLITINFO + { + UINT mask; + HIMAGELIST himlGlyph; + UINT uSplitStyle; + SIZE size; + } + alias BUTTON_SPLITINFO* PBUTTON_SPLITINFO; +} + +enum { + CBEM_INSERTITEMA = WM_USER + 1, + CBEM_SETIMAGELIST, + CBEM_GETIMAGELIST, + CBEM_GETITEMA, + CBEM_SETITEMA, + CBEM_GETCOMBOCONTROL, + CBEM_GETEDITCONTROL, + CBEM_SETEXSTYLE, + CBEM_GETEXSTYLE, // = WM_USER + 9) + CBEM_DELETEITEM = CB_DELETESTRING +} + +static if (_WIN32_IE >= 0x400) { + enum { + CBEM_SETEXTENDEDSTYLE = WM_USER + 14, + CBEM_GETEXTENDEDSTYLE = WM_USER + 9, + CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +enum { + CBEM_HASEDITCHANGED = WM_USER + 10, + CBEM_INSERTITEMW = WM_USER + 11, + CBEM_SETITEMW = WM_USER + 12, + CBEM_GETITEMW = WM_USER + 13 +} + +static if (_WIN32_WINNT >= 0x501) +{ + enum { + CBEM_SETWINDOWTHEME = CCM_SETWINDOWTHEME + } +} + +enum { + DA_LAST = 0x7fffffff +} + +enum { + DPA_APPEND = 0x7fffffff, + DPA_ERR = -1 +} + +enum { + DSA_APPEND = 0x7fffffff, + DSA_ERR = -1 +} + +enum { + DPAS_SORTED = 1, + DPAS_INSERTBEFORE = 2, + DPAS_INSERTAFTER = 4 +} + +static if (_WIN32_IE >= 0x400) { + enum { + WSB_PROP_CYVSCROLL = 1, + WSB_PROP_CXHSCROLL = 2, + WSB_PROP_CYHSCROLL = 4, + WSB_PROP_CXVSCROLL = 8, + WSB_PROP_CXHTHUMB = 16, + WSB_PROP_CYVTHUMB = 32, + WSB_PROP_VBKGCOLOR = 64, + WSB_PROP_HBKGCOLOR = 128, + WSB_PROP_VSTYLE = 256, + WSB_PROP_HSTYLE = 512, + WSB_PROP_WINSTYLE = 1024, + WSB_PROP_PALETTE = 2048, + WSB_PROP_MASK = 0xfff, + FSB_FLAT_MODE = 2, + FSB_ENCARTA_MODE = 1, + FSB_REGULAR_MODE = 0 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + LIF_ITEMINDEX = 1, + LIF_STATE = 2, + LIF_ITEMID = 4, + LIF_URL = 8 + } + + enum { + LIS_FOCUSED = 1, + LIS_ENABLED = 2, + LIS_VISITED = 4 + } + + enum { + LM_HITTEST = WM_USER + 768, + LM_GETIDEALHEIGHT, + LM_SETITEM, + LM_GETITEM, // = WM_USER + 771 + LM_GETIDEALSIZE = LM_GETIDEALHEIGHT, + } + + const size_t MAX_LINKID_TEXT = 48; + const size_t L_MAX_URL_LENGTH = 2084; +} + + +struct TBMETRICS { + UINT cbSize = TBMETRICS.sizeof; + DWORD dwMask; + int cxPad; + int cyPad; + int cxBarPad; + int cyBarPad; + int cxButtonSpacing; + int cyButtonSpacing; +} +alias TBMETRICS* LPTBMETRICS; + +static if (_WIN32_WINNT >= 0x501) { + struct TTGETTITLE { + DWORD dwSize = TTGETTITLE.sizeof; + UINT uTitleBitmap; + UINT cch; + WCHAR* pszTitle; + } + alias TTGETTITLE* PTTGETTITLE; +} + +static if (_WIN32_WINNT >= 0x600) { + struct MCGRIDINFO { + UINT cbSize; + DWORD dwPart; + DWORD dwFlags; + int iCalendar; + int iRow; + int iCol; + BOOL bSelected; + SYSTEMTIME stStart; + SYSTEMTIME stEnd; + RECT rc; + PWSTR pszName; + size_t cchName; + } + alias MCGRIDINFO* PMCGRIDINFO; + + struct DATETIMEPICKERINFO + { + DWORD cbSize; + RECT rcCheck; + DWORD stateCheck; + RECT rcButton; + DWORD stateButton; + HWND hwndEdit; + HWND hwndUD; + HWND hwndDropDown; + } + alias DATETIMEPICKERINFO* LPDATETIMEPICKERINFO; +} + +struct COMBOBOXEXITEMA { + UINT mask; + INT_PTR iItem; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} +alias COMBOBOXEXITEMA* PCOMBOBOXEXITEMA; +alias const(COMBOBOXEXITEMA)* PCCOMBOEXITEMA; + +struct COMBOBOXEXITEMW { + UINT mask; + INT_PTR iItem; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} +alias COMBOBOXEXITEMW* PCOMBOBOXEXITEMW; +alias const(COMBOBOXEXITEMW)* PCCOMBOEXITEMW; + +static if (_WIN32_IE >= 0x400) { + struct NMCOMBOBOXEXA { + NMHDR hdr; + COMBOBOXEXITEMA ceItem; + } + alias NMCOMBOBOXEXA* PNMCOMBOBOXEXA; + + struct NMCOMBOBOXEXW { + NMHDR hdr; + COMBOBOXEXITEMW ceItem; + } + alias NMCOMBOBOXEXW* PNMCOMBOBOXEXW; + + struct NMCBEDRAGBEGINW { + NMHDR hdr; + int iItemid; + WCHAR[CBEMAXSTRLEN] szText; + } + alias NMCBEDRAGBEGINW* LPNMCBEDRAGBEGINW, PNMCBEDRAGBEGINW; + + struct NMCBEDRAGBEGINA { + NMHDR hdr; + int iItemid; + char[CBEMAXSTRLEN] szText; + } + alias NMCBEDRAGBEGINA* LPNMCBEDRAGBEGINA, PNMCBEDRAGBEGINA; + + struct NMIPADDRESS { + NMHDR hdr; + int iField; + int iValue; + } + alias NMIPADDRESS* LPNMIPADDRESS; + + struct NMLVKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; + } + alias NMLVKEYDOWN* LPNMLVKEYDOWN; + + struct NMPGCALCSIZE { + NMHDR hdr; + DWORD dwFlag; + int iWidth; + int iHeight; + } + alias NMPGCALCSIZE* LPNMPGCALCSIZE; + + struct NMPGSCROLL { + NMHDR hdr; + BOOL fwKeys; + RECT rcParent; + int iDir; + int iXpos; + int iYpos; + int iScroll; + } + alias NMPGSCROLL* LPNMPGSCROLL; + + struct NMSELCHANGE { + NMHDR nmhdr; + SYSTEMTIME stSelStart; + SYSTEMTIME stSelEnd; + } + alias NMSELCHANGE* LPNMSELCHANGE; + + struct NMTBHOTITEM { + NMHDR hdr; + int idOld; + int idNew; + DWORD dwFlags; + } + alias NMTBHOTITEM* LPNMTBHOTITEM; + + struct NMTBDISPINFOA { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPSTR pszText; + int cchText; + } + alias NMTBDISPINFOA* LPNMTBDISPINFOA; + + struct NMTBDISPINFOW { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPWSTR pszText; + int cchText; + } + alias NMTBDISPINFOW* LPNMTBDISPINFOW; + + struct NMTBGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; + } + alias NMTBGETINFOTIPA* LPNMTBGETINFOTIPA; + + struct NMTBGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; + } + alias NMTBGETINFOTIPW* LPNMTBGETINFOTIPW; + + struct NMMOUSE { + NMHDR hdr; + DWORD_PTR dwItemSpec; + DWORD_PTR dwItemData; + POINT pt; + LPARAM dwHitInfo; + } + alias NMMOUSE* LPNMMOUSE; +} + +static if (_WIN32_IE >= 0x401) { + struct NMTOOLTIPSCREATED { + NMHDR hdr; + HWND hwndToolTips; + } + alias NMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED; +} + +struct NMDATETIMECHANGE { + NMHDR nmhdr; + DWORD dwFlags; + SYSTEMTIME st; +} +alias NMDATETIMECHANGE* LPNMDATETIMECHANGE; + +struct NMCBEENDEDITW { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + WCHAR[CBEMAXSTRLEN] szText; + int iWhy; +} +alias NMCBEENDEDITW* LPNMCBEENDEDITW, PNMCBEENDEDITW; + +struct NMCBEENDEDITA { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + char[CBEMAXSTRLEN] szText; + int iWhy; +} +alias NMCBEENDEDITA* LPNMCBEENDEDITA, PNMCBEENDEDITA; + +struct COLORMAP { + COLORREF from; + COLORREF to; +} +alias COLORMAP* LPCOLORMAP; + +struct DRAGLISTINFO { + UINT uNotification; + HWND hWnd; + POINT ptCursor; +} +alias DRAGLISTINFO* LPDRAGLISTINFO; + +struct TBBUTTON { + int iBitmap; + int idCommand; + BYTE fsState; + BYTE fsStyle; + version(Win64){ + BYTE[6] bReserved; + } else { + BYTE[2] bReserved; + } + DWORD_PTR dwData; + INT_PTR iString; +} +alias TBBUTTON* PTBBUTTON, LPTBBUTTON; +alias const(TBBUTTON)* LPCTBBUTTON; + +static if (_WIN32_IE >= 0x400) { + struct TBBUTTONINFOA { + UINT cbSize = TBBUTTONINFOA.sizeof; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPSTR pszText; + int cchText; + } + alias TBBUTTONINFOA* LPTBBUTTONINFOA; + + struct TBBUTTONINFOW { + UINT cbSize = TBBUTTONINFOW.sizeof; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPWSTR pszText; + int cchText; + } + alias TBBUTTONINFOW* LPTBBUTTONINFOW; + + struct TBINSERTMARK { + int iButton; + DWORD dwFlags; + } + alias TBINSERTMARK* LPTBINSERTMARK; + + struct LVBKIMAGEA { + ULONG ulFlags; + HBITMAP hbm; + LPSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; + } + alias LVBKIMAGEA* LPLVBKIMAGEA; + + struct LVBKIMAGEW { + ULONG ulFlags; + HBITMAP hbm; + LPWSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; + } + alias LVBKIMAGEW* LPLVBKIMAGEW; +} + +/*struct TBNOTIFY { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPTSTR pszText; +} +alias TBNOTIFY* LPTBNOTIFY; +*/ + +/*struct TBSAVEPARAMS { + HKEY hkr; + LPCTSTR pszSubKey; + LPCTSTR pszValueName; +}*/ + +struct IMAGEINFO { + HBITMAP hbmImage; + HBITMAP hbmMask; + int Unused1; + int Unused2; + RECT rcImage; +} +alias IMAGEINFO* LPIMAGEINFO; + +static if (_WIN32_IE >= 0x500) { + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + UINT type; + LPVOID pvFilter; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + UINT type; + LPVOID pvFilter; + } +} else static if (_WIN32_IE >= 0x300) { + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + } +} else { + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + } +} +alias HDITEMA* LPHDITEMA; +alias HDITEMW* LPHDITEMW; + +deprecated { + alias HDITEMA HD_ITEMA; + alias HDITEMW HD_ITEMW; + //alias HDITEM HD_ITEM; fixme +} + +struct HD_LAYOUT { + RECT* prc; + WINDOWPOS* pwpos; +} +alias HD_LAYOUT* LPHDLAYOUT; +deprecated alias HD_LAYOUT HDLAYOUT; + +struct HD_HITTESTINFO { + POINT pt; + UINT flags; + int iItem; +} +alias HD_HITTESTINFO* LPHDHITTESTINFO; + +struct HD_NOTIFYA { + NMHDR hdr; + int iItem; + int iButton; + HDITEMA* pitem; +} + +struct HD_NOTIFYW { + NMHDR hdr; + int iItem; + int iButton; + HDITEMW* pitem; +} + +/* FIXME: NMHEADER structure (base for all events of the comctl controls) + is the same as HD_NOTIFY depending on the value of _WIN32_IE macro. + I'm defining both for now. */ +struct NMHEADERA { + NMHDR hdr; + int iItem; + int iButton; + HDITEMA* pitem; +} +alias NMHEADERA* LPNMHEADERA; + +struct NMHEADERW { + NMHDR hdr; + int iItem; + int iButton; + HDITEMW* pitem; +} +alias NMHEADERW* LPNMHEADERW; + +version (Unicode) { + alias NMHEADERW NMHEADER; + alias LPNMHEADERW LPNMHEADER; +} else { + alias NMHEADERA NMHEADER; + alias LPNMHEADERA LPNMHEADER; +} +// End FIXME + +struct NMHDDISPINFOA { + NMHDR hdr; + int iItem; + UINT mask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias NMHDDISPINFOA* LPNMHDDISPINFOA; + +struct NMHDDISPINFOW { + NMHDR hdr; + int iItem; + UINT mask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias NMHDDISPINFOW* LPNMHDDISPINFOW; + +struct NMCUSTOMDRAW { + NMHDR hdr; + DWORD dwDrawStage; + HDC hdc; + RECT rc; + DWORD dwItemSpec; + UINT uItemState; + LPARAM lItemlParam; +} +alias NMCUSTOMDRAW* LPNMCUSTOMDRAW; + +static if (_WIN32_IE >= 0x400) { + struct NMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + int iSubItem; + } +} else { + struct NMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + } +} +alias NMLVCUSTOMDRAW* LPNMLVCUSTOMDRAW; + +static if (_WIN32_IE >= 0x400) { + struct NMLVGETINFOTIPA { + NMHDR hdr; + DWORD dwFlags; + LPSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; + } + alias NMLVGETINFOTIPA* LPNMLVGETINFOTIPA; + + struct NMLVGETINFOTIPW { + NMHDR hdr; + DWORD dwFlags; + LPWSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; + } + alias NMLVGETINFOTIPW* LPNMLVGETINFOTIPW; +} + +static if (_WIN32_IE >= 0x400) { + struct NMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + int iLevel; + } +} else { + struct NMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + } +} +alias NMTVCUSTOMDRAW* LPNMTVCUSTOMDRAW; + +static if (_WIN32_IE >= 0x400) { + static if (_WIN32_WINNT >= 0x501) { + struct NMTBCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + HBRUSH hbrMonoDither; + HBRUSH hbrLines; + HPEN hpenLines; + COLORREF clrText; + COLORREF clrMark; + COLORREF clrTextHighlight; + COLORREF clrBtnFace; + COLORREF clrBtnHighlight; + COLORREF clrHighlightHotTrack; + RECT rcText; + int nStringBkMode; + int nHLStringBkMode; + int iListGap; + } + } else { + struct NMTBCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + HBRUSH hbrMonoDither; + HBRUSH hbrLines; + HPEN hpenLines; + COLORREF clrText; + COLORREF clrMark; + COLORREF clrTextHighlight; + COLORREF clrBtnFace; + COLORREF clrBtnHighlight; + COLORREF clrHighlightHotTrack; + RECT rcText; + int nStringBkMode; + int nHLStringBkMode; + } + } + alias NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW; + + struct NMITEMACTIVATE { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; + UINT uKeyFlags; + } + alias NMITEMACTIVATE* LPNMITEMACTIVATE; +} + +struct TBADDBITMAP { + HINSTANCE hInst; + UINT_PTR nID; +} +alias TBADDBITMAP* LPTBADDBITMAP; + +struct TBSAVEPARAMSA { + HKEY hkr; + LPCSTR pszSubKey; + LPCSTR pszValueName; +} + +struct TBSAVEPARAMSW { + HKEY hkr; + LPCWSTR pszSubKey; + LPCWSTR pszValueName; +} + +struct TBREPLACEBITMAP { + HINSTANCE hInstOld; + UINT_PTR nIDOld; + HINSTANCE hInstNew; + UINT_PTR nIDNew; + int nButtons; +} +alias TBREPLACEBITMAP* LPTBREPLACEBITMAP; + +static if (_WIN32_IE >= 0x500) { + struct NMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; + RECT rcButton; + } + + struct NMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; + RECT rcButton; + } +} else { + struct NMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; + } + + struct NMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; + } +} +alias NMTOOLBARA* LPNMTOOLBARA; +alias NMTOOLBARW* LPNMTOOLBARW; + +alias NMTOOLBARA TBNOTIFYA; +alias LPNMTOOLBARA LPTBNOTIFYA; + +alias NMTOOLBARW TBNOTIFYW; +alias LPNMTOOLBARW LPTBNOTIFYW; + +static if (_WIN32_WINNT >= 0x501) { + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + LPARAM lParam; + void* lpReserved; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + LPARAM lParam; + void* lpReserved; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, + TTTOOLINFOA_V2_SIZE = TOOLINFOA.lpReserved.offsetof, + TTTOOLINFOW_V2_SIZE = TOOLINFOW.lpReserved.offsetof, + TTTOOLINFOA_V3_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V3_SIZE = TOOLINFOW.sizeof; +} else static if (_WIN32_IE >= 0x300) { + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + LPARAM lParam; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + LPARAM lParam; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, + TTTOOLINFOA_V2_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V2_SIZE = TOOLINFOW.sizeof; +} else { + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.sizeof; +} +alias TOOLINFOA TTTOOLINFOA; +alias TOOLINFOW TTTOOLINFOW; +alias TTTOOLINFOA* LPTTTOOLINFOA, PTOOLINFOA, LPTOOLINFOA; +alias TTTOOLINFOW* LPTTTOOLINFOW, PTOOLINFOW, LPTOOLINFOW; + +struct TTHITTESTINFOA { + HWND hwnd; + POINT pt; + TOOLINFOA ti; +} +alias TTHITTESTINFOA* LPTTHITTESTINFOA, LPHITTESTINFOA; + +struct TTHITTESTINFOW { + HWND hwnd; + POINT pt; + TOOLINFOW ti; +} +alias TTHITTESTINFOW* LPTTHITTESTINFOW, LPHITTESTINFOW; + +static if (_WIN32_IE >= 0x300) { + struct NMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char[80] szText; + HINSTANCE hinst; + UINT uFlags; + LPARAM lParam; + } + + struct NMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR[80] szText; + HINSTANCE hinst; + UINT uFlags; + LPARAM lParam; + } +} else { + struct NMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char[80] szText; + HINSTANCE hinst; + UINT uFlags; + } + + struct NMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR[80] szText; + HINSTANCE hinst; + UINT uFlags; + } +} +alias NMTTDISPINFOA* LPNMTTDISPINFOA; +alias NMTTDISPINFOW* LPNMTTDISPINFOW; +alias NMTTDISPINFOA TOOLTIPTEXTA; +alias LPNMTTDISPINFOA LPTOOLTIPTEXTA; +alias NMTTDISPINFOW TOOLTIPTEXTW; +alias LPNMTTDISPINFOW LPTOOLTIPTEXTW; + +struct UDACCEL { + UINT nSec; + UINT nInc; +} +alias UDACCEL* LPUDACCEL; + +struct NMUPDOWN { + NMHDR hdr; + int iPos; + int iDelta; +} +alias NMUPDOWN* LPNMUPDOWN; + +deprecated { + alias NMUPDOWN NM_UPDOWN; + alias LPNMUPDOWN LPNM_UPDOWN; +} + +static if (_WIN32_WINNT >= 0x501) { + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + int iGroupId; + UINT cColumns; + PUINT puColumns; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + int iGroupId; + UINT cColumns; + PUINT puColumns; + } +} else static if (_WIN32_IE >= 0x300) { + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + } +} else { + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } +} +alias LVITEMA* LPLVITEMA; +alias LVITEMW* LPLVITEMW; +alias LVITEMA LV_ITEMA; +alias LVITEMW LV_ITEMW; + +struct LVFINDINFOA { + UINT flags; + LPCSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} + +struct LVFINDINFOW { + UINT flags; + LPCWSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} + +alias LVFINDINFOA* LPFINDINFOA; +alias LVFINDINFOA LV_FINDINFOA; +alias LVFINDINFOW* LPFINDINFOW; +alias LVFINDINFOW LV_FINDINFOW; + +struct NMLVFINDITEMA { + NMHDR hdr; + int iStart; + LVFINDINFOA lvfi; +} + +struct NMLVFINDITEMW { + NMHDR hdr; + int iStart; + LVFINDINFOW lvfi; +} + +alias NMLVFINDITEMA* PNMLVFINDITEMA, LPNMLVFINDITEMA; +alias NMLVFINDITEMW* PNMLVFINDITEMW, LPNMLVFINDITEMW; + +static if (_WIN32_IE >= 0x300) { + struct LVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; + int iSubItem; + } +} else { + struct LVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; + } +} +alias LVHITTESTINFO* LPLVHITTESTINFO; +alias LVHITTESTINFO LV_HITTESTINFO; + +static if (_WIN32_IE >= 0x300) { + struct LVCOLUMNA { + UINT mask; + int fmt; + int cx; + LPSTR pszText; + int cchTextMax; + int iSubItem; + int iImage; + int iOrder; + } + struct LVCOLUMNW { + UINT mask; + int fmt; + int cx; + LPWSTR pszText; + int cchTextMax; + int iSubItem; + int iImage; + int iOrder; + } +} else { + struct LVCOLUMNA { + UINT mask; + int fmt; + int cx; + LPSTR pszText; + int cchTextMax; + int iSubItem; + } + struct LVCOLUMNW { + UINT mask; + int fmt; + int cx; + LPWSTR pszText; + int cchTextMax; + int iSubItem; + } +} +alias LVCOLUMNA* LPLVCOLUMNA; +alias LVCOLUMNW* LPLVCOLUMNW; +alias LVCOLUMNA LV_COLUMNA; +alias LVCOLUMNW LV_COLUMNW; + +static if (_WIN32_WINNT >= 0x501) { + /* SG: The definitions in this static if block are from the MSDN docs. + * They are not in MinGW, but nonetheless required for macros that are. + */ + struct LVGROUP { + UINT cbSize = LVGROUP.sizeof; + UINT mask; + LPWSTR pszHeader; + int cchHeader; + LPWSTR pszFooter; + int cchFooter; + int iGroupId; + UINT stateMask; + UINT state; + UINT uAlign; + static if (_WIN32_WINNT >= 0x600) { + LPWSTR pszSubtitle; + UINT cchSubtitle; + LPWSTR pszTask; + UINT cchTask; + LPWSTR pszDescriptionTop; + UINT cchDescriptionTop; + LPWSTR pszDescriptionBottom; + UINT cchDescriptionBottom; + int iTitleImage; + int iExtendedImage; + int iFirstItem; // Read only + UINT cItems; // Read only + LPWSTR pszSubsetTitle; // NULL if group is not subset + UINT cchSubsetTitle; + } + } + alias LVGROUP* PLVGROUP; + + struct LVGROUPMETRICS { + UINT cbSize = LVGROUPMETRICS.sizeof; + UINT mask; + UINT Left; + UINT Top; + UINT Right; + UINT Bottom; + COLORREF crLeft; + COLORREF crTop; + COLORREF crRight; + COLORREF crBottom; + COLORREF crHeader; + COLORREF crFooter; + } + alias LVGROUPMETRICS* PLVGROUPMETRICS; + + struct LVINSERTMARK { + UINT cbSize = LVINSERTMARK.sizeof; + DWORD dwFlags; + int iItem; + DWORD dwReserved; + } + alias LVINSERTMARK* PLVINSERTMARK; + alias LVINSERTMARK* LPLVINSERTMARK; + + struct LVTILEINFO { + UINT cbSize = LVTILEINFO.sizeof; + int iItem; + UINT cColumns; + PUINT puColumns; + static if (_WIN32_WINNT >= 0x600) { + int* piColFmt; + } + } + alias LVTILEINFO* PLVTILEINFO; + + struct LVTILEVIEWINFO { + UINT cbSize = LVTILEVIEWINFO.sizeof; + DWORD dwMask; + DWORD dwFlags; + SIZE sizeTile; + int cLines; + RECT rcLabelMargin; + } + alias LVTILEVIEWINFO* PLVTILEVIEWINFO; + + struct LVINSERTGROUPSORTED { + PFNLVGROUPCOMPARE pfnGroupCompare; + LPVOID* pvData; + LVGROUP lvGroup; + } + alias LVINSERTGROUPSORTED* PLVINSERTGROUPSORTED; + + alias int function(INT, INT, VOID*) PFNLVGROUPCOMPARE; + + struct LVSETINFOTIP { + UINT cbSize = LVSETINFOTIP.sizeof; + DWORD dwFlags; + LPWSTR pszText; + int iItem; + int iSubItem; + HBITMAP hbmp; + } + alias LVSETINFOTIP* PLVSETINFOTIP; + + struct BUTTON_IMAGELIST { + HIMAGELIST himl; + RECT margin; + UINT uAlign; + } + alias BUTTON_IMAGELIST* PBUTTON_IMAGELIST; +} + +static if (_WIN32_WINNT >= 0x600) { + struct LVITEMINDEX + { + int iItem; + int iGroup; + }; + alias LVITEMINDEX* PLVITEMINDEX; + + struct LVFOOTERINFO + { + UINT mask; + LPWSTR pszText; + int cchTextMax; + UINT cItems; + } + alias LVFOOTERINFO* LPLVFOOTERINFO; + + struct LVFOOTERITEM + { + UINT mask; + int iItem; + LPWSTR pszText; + int cchTextMax; + UINT state; + UINT stateMask; + } + alias LVFOOTERITEM *LPLVFOOTERITEM; + + alias UINT TVITEMPART; + enum { + TVGIPR_BUTTON = 0x0001, + } +} + +alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE; + +struct NMLISTVIEW { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; +} +alias NMLISTVIEW* LPNMLISTVIEW; + +deprecated { + alias NMLISTVIEW NM_LISTVIEW; + alias LPNMLISTVIEW LPNM_LISTVIEW; +} + +struct NMLVDISPINFOA { + NMHDR hdr; + LV_ITEMA item; +} +alias NMLVDISPINFOA* LPNMLVDISPINFOA; +alias NMLVDISPINFOA LV_DISPINFOA; + +struct NMLVDISPINFOW { + NMHDR hdr; + LV_ITEMW item; +} +alias NMLVDISPINFOW* LPNMLVDISPINFOW; +alias NMLVDISPINFOW LV_DISPINFOW; + +struct LV_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} + +struct NMLVCACHEHINT { + NMHDR hdr; + int iFrom; + int iTo; +} +alias NMLVCACHEHINT* LPNMLVCACHEHINT, PNM_CACHEHINT, LPNM_CACHEHINT; +alias NMLVCACHEHINT NM_CACHEHINT; + +struct TVITEMA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} +alias TVITEMA* LPTVITEMA, LPTV_ITEMA; +alias TVITEMA TV_ITEMA; + +struct TVITEMW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} +alias TVITEMW* LPTVITEMW, LPTV_ITEMW; +alias TVITEMW TV_ITEMW; + +static if (_WIN32_IE >= 0x400) { + struct TVITEMEXA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; + } + alias TVITEMEXA* LPTVITEMEXA; + + struct TVITEMEXW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; + } + alias TVITEMEXW* LPTVITEMEXW; +} + +static if (_WIN32_IE >= 0x400) { + struct TVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + union { + TVITEMEXA itemex; + TV_ITEMA item; + } + } + + struct TVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + union { + TVITEMEXW itemex; + TV_ITEMW item; + } + } +} else { + struct TVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + TV_ITEMA item; + } + + struct TVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + TV_ITEMW item; + } +} +alias TVINSERTSTRUCTA* LPTVINSERTSTRUCTA, LPTV_INSERTSTRUCTA; +alias TVINSERTSTRUCTA TV_INSERTSTRUCTA; +alias TVINSERTSTRUCTW* LPTVINSERTSTRUCTW, LPTV_INSERTSTRUCTW; +alias TVINSERTSTRUCTW TV_INSERTSTRUCTW; + +struct TVHITTESTINFO { + POINT pt; + UINT flags; + HTREEITEM hItem; +} +alias TVHITTESTINFO* LPTVHITTESTINFO, LPTV_HITTESTINFO; +alias TVHITTESTINFO TV_HITTESTINFO; + +static if (_WIN32_WINNT >= 0x600) { + struct TVGETITEMPARTRECTINFO { + HTREEITEM hti; + RECT* prc; + TVITEMPART partID; + } +} + +alias int function(LPARAM, LPARAM, LPARAM) PFNTVCOMPARE; +struct TVSORTCB { + HTREEITEM hParent; + PFNTVCOMPARE lpfnCompare; + LPARAM lParam; +} +alias TVSORTCB* LPTVSORTCB, LPTV_SORTCB; +alias TVSORTCB TV_SORTCB; + +struct NMTREEVIEWA { + NMHDR hdr; + UINT action; + TV_ITEMA itemOld; + TV_ITEMA itemNew; + POINT ptDrag; +} +alias NMTREEVIEWA* LPNMTREEVIEWA, LPNM_TREEVIEWA; +alias NMTREEVIEWA NM_TREEVIEWA; + +struct NMTREEVIEWW { + NMHDR hdr; + UINT action; + TV_ITEMW itemOld; + TV_ITEMW itemNew; + POINT ptDrag; +} +alias NMTREEVIEWW* LPNMTREEVIEWW, LPNM_TREEVIEWW; +alias NMTREEVIEWW NM_TREEVIEWW; + +struct NMTVDISPINFOA { + NMHDR hdr; + TVITEMA item; +} +alias NMTVDISPINFOA* LPNMTVDISPINFOA; +alias NMTVDISPINFOA TV_DISPINFOA; + +struct NMTVDISPINFOW { + NMHDR hdr; + TVITEMW item; +} +alias NMTVDISPINFOW* LPNMTVDISPINFOW; +alias NMTVDISPINFOW TV_DISPINFOW; + +static if (_WIN32_IE >= 0x400) { + struct NMTVGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; + } + alias NMTVGETINFOTIPA* LPNMTVGETINFOTIPA; + + struct NMTVGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; + } + alias NMTVGETINFOTIPW* LPNMTVGETINFOTIPW; +} + +struct TV_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} + +struct TC_ITEMHEADERA { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; +} + +struct TC_ITEMHEADERW { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; +} + +static if (_WIN32_IE >= 0x300) { + struct TCITEMA { + UINT mask; + DWORD dwState; + DWORD dwStateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct TCITEMW { + UINT mask; + DWORD dwState; + DWORD dwStateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } +} else { + struct TCITEMA { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct TCITEMW { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } +} +alias TCITEMA* LPTCITEMA; +alias TCITEMA TC_ITEMA; +alias TCITEMW* LPTCITEMW; +alias TCITEMW TC_ITEMW; + +struct TCHITTESTINFO { + POINT pt; + UINT flags; +} +alias TCHITTESTINFO* LPTCHITTESTINFO, LPTC_HITTESTINFO; +alias TCHITTESTINFO TC_HITTESTINFO; + +struct TC_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} + +static if (_WIN32_IE >= 0x300) { + struct INITCOMMONCONTROLSEX { + DWORD dwSize = INITCOMMONCONTROLSEX.sizeof; + DWORD dwICC; + } + alias INITCOMMONCONTROLSEX* LPINITCOMMONCONTROLSEX; +} + +struct PBRANGE { + int iLow; + int iHigh; +} +alias PBRANGE* PPBRANGE; + +struct COLORSCHEME { + DWORD dwSize = COLORSCHEME.sizeof; + COLORREF clrBtnHighlight; + COLORREF clrBtnShadow; +} +alias COLORSCHEME* LPCOLORSCHEME; + +struct MCHITTESTINFO { + UINT cbSize = MCHITTESTINFO.sizeof; + POINT pt; + UINT uHit; + SYSTEMTIME st; +} +alias MCHITTESTINFO* PMCHITTESTINFO; + +alias DWORD MONTHDAYSTATE; +alias MONTHDAYSTATE* LPMONTHDAYSTATE; + +struct NMDAYSTATE { + NMHDR nmhdr; + SYSTEMTIME stStart; + int cDayState; + LPMONTHDAYSTATE prgDayState; +} +alias NMDAYSTATE* LPNMDAYSTATE; + +struct REBARINFO { + UINT cbSize = REBARINFO.sizeof; + UINT fMask; + HIMAGELIST himl; +} +alias REBARINFO* LPREBARINFO; + +static if (_WIN32_IE >= 0x400) { + struct REBARBANDINFOA { + UINT cbSize = REBARBANDINFOA.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; + } + + struct REBARBANDINFOW { + UINT cbSize = REBARBANDINFOW.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPWSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; + } + + enum : size_t { + REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.cyChild.offsetof, + REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.cyChild.offsetof + } +} else { + struct REBARBANDINFOA { + UINT cbSize = REBARBANDINFOA.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + } + + struct REBARBANDINFOW { + UINT cbSize = REBARBANDINFOW.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPWSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + } + + enum : size_t { + REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.sizeof, + REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.sizeof + } +} +alias REBARBANDINFOA* LPREBARBANDINFOA; +alias const(REBARBANDINFOA)* LPCREBARBANDINFOA; +alias REBARBANDINFOW* LPREBARBANDINFOW; +alias const(REBARBANDINFOW)* LPCREBARBANDINFOW; + +static if (_WIN32_IE >= 0x300) { + struct NMLVODSTATECHANGE { + NMHDR hdr; + int iFrom; + int iTo; + UINT uNewState; + UINT uOldState; + } + alias NMLVODSTATECHANGE* LPNMLVODSTATECHANGE; + + static if (_WIN32_WINNT >= 0x501) { + struct IMAGELISTDRAWPARAMS { + DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; + HIMAGELIST himl; + int i; + HDC hdcDst; + int x; + int y; + int cx; + int cy; + int xBitmap; + int yBitmap; + COLORREF rgbBk; + COLORREF rgbFg; + UINT fStyle; + DWORD dwRop; + DWORD fState; + DWORD Frame; + COLORREF crEffect; + } + } else { + struct IMAGELISTDRAWPARAMS { + DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; + HIMAGELIST himl; + int i; + HDC hdcDst; + int x; + int y; + int cx; + int cy; + int xBitmap; + int yBitmap; + COLORREF rgbBk; + COLORREF rgbFg; + UINT fStyle; + DWORD dwRop; + } + } + alias IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS; +} + +static if (_WIN32_IE >= 0x400) { + struct NMREBARCHILDSIZE { + NMHDR hdr; + UINT uBand; + UINT wID; + RECT rcChild; + RECT rcBand; + } + alias NMREBARCHILDSIZE* LPNMREBARCHILDSIZE; + + struct NMREBAR { + NMHDR hdr; + DWORD dwMask; + UINT uBand; + UINT fStyle; + UINT wID; + LPARAM lParam; + } + alias NMREBAR* LPNMREBAR; + + struct NMRBAUTOSIZE { + NMHDR hdr; + BOOL fChanged; + RECT rcTarget; + RECT rcActual; + } + alias NMRBAUTOSIZE* LPNMRBAUTOSIZE; + + static if (_WIN32_IE >= 0x500) { + struct NMREBARCHEVRON { + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + RECT rc; + LPARAM lParamNM; + } + alias NMREBARCHEVRON* LPNMREBARCHEVRON; + } + + struct RBHITTESTINFO { + POINT pt; + UINT flags; + int iBand; + } + alias RBHITTESTINFO* LPRBHITTESTINFO; +} + +mixin DECLARE_HANDLE!("HDSA"); +mixin DECLARE_HANDLE!("HDPA"); + +version (Unicode) { + alias HDITEMW HDITEM; + alias LPHDITEMW LPHDITEM; + alias TOOLINFOW TOOLINFO; + alias TOOLINFOW* PTOOLINFO, LPTOOLINFO; + alias TTHITTESTINFOW TTHITTESTINFO; + alias TTHITTESTINFOW* LPHITTESTINFO, LPTTHITTESTINFO; + alias TOOLTIPTEXTW TOOLTIPTEXT; + alias TOOLTIPTEXTW* LPTOOLTIPTEXT; + alias NMTTDISPINFOW NMTTDISPINFO; + alias NMTTDISPINFOW* LPNMTTDISPINFO; + alias TV_ITEMW TV_ITEM; + alias TV_ITEMW* LPTV_ITEM; + alias TVITEMW TVITEM; + alias TVITEMW* LPTVITEM; + + static if (_WIN32_IE >= 0x400) { + alias TVITEMEXW TVITEMEX; + alias TVITEMEXW* LPTVITEMEX; + } + + alias TV_INSERTSTRUCTW TV_INSERTSTRUCT; + alias TV_INSERTSTRUCTW* LPTV_INSERTSTRUCT; + alias TVINSERTSTRUCTW TVINSERTSTRUCT; + alias TVINSERTSTRUCTW* LPTVINSERTSTRUCT; + alias NM_TREEVIEWW NM_TREEVIEW; + alias NM_TREEVIEWW* LPNM_TREEVIEW; + alias NMTREEVIEWW NMTREEVIEW; + alias NMTREEVIEWW* LPNMTREEVIEW; + alias NMHDDISPINFOW NMHDDISPINFO; + alias NMHDDISPINFOW* LPNMHDDISPINFO; + + alias ACM_OPENW ACM_OPEN; + alias COMBOBOXEXITEMW COMBOBOXEXITEM; + alias PCOMBOBOXEXITEMW PCOMBOBOXEXITEM; + //alias PCCOMBOBOXEXITEMW PCCOMBOBOXEXITEM; fixme + alias CBEM_INSERTITEMW CBEM_INSERTITEM; + alias CBEM_SETITEMW CBEM_SETITEM; + alias CBEM_GETITEMW CBEM_GETITEM; + alias CBEN_ENDEDITW CBEN_ENDEDIT; + alias NMCBEENDEDITW NMCBEENDEDIT; + alias LPNMCBEENDEDITW LPNMCBEENDEDIT; + alias PNMCBEENDEDITW PNMCBEENDEDIT; + + static if (_WIN32_IE >= 0x400) { + alias NMCOMBOBOXEXW NMCOMBOBOXEX; + alias PNMCOMBOBOXEXW PNMCOMBOBOXEX; + alias CBEN_GETDISPINFOW CBEN_GETDISPINFO; + alias CBEN_DRAGBEGINW CBEN_DRAGBEGIN; + alias NMCBEDRAGBEGINW NMCBEDRAGBEGIN; + alias LPNMCBEDRAGBEGINW LPNMCBEDRAGBEGIN; + alias PNMCBEDRAGBEGINW PNMCBEDRAGBEGIN; + } + + alias SB_GETTEXTW SB_GETTEXT; + alias SB_SETTEXTW SB_SETTEXT; + alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; + alias HDM_INSERTITEMW HDM_INSERTITEM; + alias HDM_GETITEMW HDM_GETITEM; + alias HDM_SETITEMW HDM_SETITEM; + alias HDN_ITEMCHANGINGW HDN_ITEMCHANGING; + alias HDN_ITEMCHANGEDW HDN_ITEMCHANGED; + alias HDN_ITEMCLICKW HDN_ITEMCLICK; + alias HDN_ITEMDBLCLICKW HDN_ITEMDBLCLICK; + alias HDN_DIVIDERDBLCLICKW HDN_DIVIDERDBLCLICK; + alias HDN_BEGINTRACKW HDN_BEGINTRACK; + alias HDN_ENDTRACKW HDN_ENDTRACK; + alias HDN_TRACKW HDN_TRACK; + + static if (_WIN32_IE >= 0x300) { + alias HDN_GETDISPINFOW HDN_GETDISPINFO; + } + + alias HD_NOTIFYW HD_NOTIFY; + alias TBSAVEPARAMSW TBSAVEPARAMS; + alias TB_GETBUTTONTEXTW TB_GETBUTTONTEXT; + alias TB_SAVERESTOREW TB_SAVERESTORE; + alias TB_ADDSTRINGW TB_ADDSTRING; + + static if (_WIN32_IE >= 0x400) { + alias TBN_GETBUTTONINFOW TBN_GETBUTTONINFO; // fixme + alias TB_GETBUTTONINFOW TB_GETBUTTONINFO; + alias TB_SETBUTTONINFOW TB_SETBUTTONINFO; + alias TB_INSERTBUTTONW TB_INSERTBUTTON; + alias TB_ADDBUTTONSW TB_ADDBUTTONS; + alias TB_MAPACCELERATORW TB_MAPACCELERATOR; + alias TB_GETSTRINGW TB_GETSTRING; + alias TBBUTTONINFOW TBBUTTONINFO; + alias LPTBBUTTONINFOW LPTBBUTTONINFO; + alias TBN_GETDISPINFOW TBN_GETDISPINFO; + alias NMTBDISPINFOW NMTBDISPINFO; + alias LPNMTBDISPINFOW LPNMTBDISPINFO; + alias NMTBGETINFOTIPW NMTBGETINFOTIP; + alias LPNMTBGETINFOTIPW LPNMTBGETINFOTIP; + } + + alias TBNOTIFYW TBNOTIFY; + alias LPTBNOTIFYW LPTBNOTIFY; + alias NMTOOLBARW NMTOOLBAR; + alias LPNMTOOLBARW LPNMTOOLBAR; + alias TTM_ADDTOOLW TTM_ADDTOOL; + alias TTM_DELTOOLW TTM_DELTOOL; + alias TTM_NEWTOOLRECTW TTM_NEWTOOLRECT; + alias TTM_GETTOOLINFOW TTM_GETTOOLINFO; + alias TTM_SETTOOLINFOW TTM_SETTOOLINFO; + alias TTM_HITTESTW TTM_HITTEST; + alias TTM_GETTEXTW TTM_GETTEXT; + alias TTM_UPDATETIPTEXTW TTM_UPDATETIPTEXT; + alias TTM_ENUMTOOLSW TTM_ENUMTOOLS; + alias TTM_GETCURRENTTOOLW TTM_GETCURRENTTOOL; + alias TTN_NEEDTEXTW TTN_NEEDTEXT; + alias TTN_GETDISPINFOW TTN_GETDISPINFO; + //alias SB_GETTEXTW SB_GETTEXT; + //alias SB_SETTEXTW SB_SETTEXT; + //alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; + alias LV_ITEMW LV_ITEM; + alias LVITEMW LVITEM; + alias LVITEM* LPLVITEM; + alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK; + + static if (_WIN32_IE >= 0x400) { + alias LVBKIMAGEW LVBKIMAGE; + alias LPLVBKIMAGEW LPLVBKIMAGE; + alias LVM_SETBKIMAGEW LVM_SETBKIMAGE; + alias LVM_GETBKIMAGEW LVM_GETBKIMAGE; + } + + alias LVM_GETITEMW LVM_GETITEM; + alias LVM_SETITEMW LVM_SETITEM; + alias LVM_INSERTITEMW LVM_INSERTITEM; + alias LV_FINDINFOW LV_FINDINFO; + alias LVFINDINFOW LVFINDINFO; + alias LPFINDINFOW LPFINDINFO; + alias NMLVFINDITEMW NMLVFINDITEM; + alias PNMLVFINDITEMW PNMLVFINDITEM; + alias LPNMLVFINDITEMW LPNMLVFINDITEM; + alias LVM_FINDITEMW LVM_FINDITEM; + alias LVM_GETSTRINGWIDTHW LVM_GETSTRINGWIDTH; + alias LVM_EDITLABELW LVM_EDITLABEL; + alias LV_COLUMNW LV_COLUMN; + alias LVCOLUMNW LVCOLUMN; + alias LVCOLUMNW* LPLVCOLUMN; + alias LVM_GETCOLUMNW LVM_GETCOLUMN; + alias LVM_SETCOLUMNW LVM_SETCOLUMN; + alias LVM_INSERTCOLUMNW LVM_INSERTCOLUMN; + alias LVM_GETITEMTEXTW LVM_GETITEMTEXT; + alias LVM_SETITEMTEXTW LVM_SETITEMTEXT; + alias LVM_GETISEARCHSTRINGW LVM_GETISEARCHSTRING; + alias LVN_BEGINLABELEDITW LVN_BEGINLABELEDIT; + alias LVN_ENDLABELEDITW LVN_ENDLABELEDIT; + alias LVN_GETDISPINFOW LVN_GETDISPINFO; + alias LVN_SETDISPINFOW LVN_SETDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias LVN_GETINFOTIPW LVN_GETINFOTIP; + alias NMLVGETINFOTIPW NMLVGETINFOTIP; + alias LPNMLVGETINFOTIPW LPNMLVGETINFOTIP; + } + + alias LV_DISPINFOW LV_DISPINFO; + alias NMLVDISPINFOW NMLVDISPINFO; + alias LPNMLVDISPINFOW LPNMLVDISPINFO; + alias TVM_INSERTITEMW TVM_INSERTITEM; + alias TVM_GETITEMW TVM_GETITEM; + alias TVM_SETITEMW TVM_SETITEM; + alias TVM_EDITLABELW TVM_EDITLABEL; + alias TVM_GETISEARCHSTRINGW TVM_GETISEARCHSTRING; + alias NMTVDISPINFOW TV_DISPINFO; + alias NMTVDISPINFOW NMTVDISPINFO; + alias LPNMTVDISPINFOW LPNMTVDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias NMTVGETINFOTIPW NMTVGETINFOTIP; + alias LPNMTVGETINFOTIPW LPNMTVGETINFOTIP; + alias TVN_GETINFOTIPW TVN_GETINFOTIP; + } + + alias TVN_SELCHANGINGW TVN_SELCHANGING; + alias TVN_SELCHANGEDW TVN_SELCHANGED; + alias TVN_GETDISPINFOW TVN_GETDISPINFO; + alias TVN_SETDISPINFOW TVN_SETDISPINFO; + alias TVN_ITEMEXPANDINGW TVN_ITEMEXPANDING; + alias TVN_ITEMEXPANDEDW TVN_ITEMEXPANDED; + alias TVN_BEGINDRAGW TVN_BEGINDRAG; + alias TVN_BEGINRDRAGW TVN_BEGINRDRAG; + alias TVN_DELETEITEMW TVN_DELETEITEM; + alias TVN_BEGINLABELEDITW TVN_BEGINLABELEDIT; + alias TVN_ENDLABELEDITW TVN_ENDLABELEDIT; + alias TC_ITEMHEADERW TC_ITEMHEADER; + alias TC_ITEMW TC_ITEM; + alias TCITEMW TCITEM; + alias LPTCITEMW LPTCITEM; + alias TCM_GETITEMW TCM_GETITEM; + alias TCM_SETITEMW TCM_SETITEM; + alias TCM_INSERTITEMW TCM_INSERTITEM; + alias CreateStatusWindowW CreateStatusWindow; + alias DrawStatusTextW DrawStatusText; + alias ImageList_LoadImageW ImageList_LoadImage; + alias DTM_SETFORMATW DTM_SETFORMAT; + alias DTN_USERSTRINGW DTN_USERSTRING; + alias DTN_WMKEYDOWNW DTN_WMKEYDOWN; + alias DTN_FORMATW DTN_FORMAT; + alias DTN_FORMATQUERYW DTN_FORMATQUERY; + alias REBARBANDINFOW REBARBANDINFO; + alias REBARBANDINFO* LPREBARBANDINFO; + alias LPCREBARBANDINFOW LPCREBARBANDINFO; + alias REBARBANDINFOW_V3_SIZE REBARBANDINFO_V3_SIZE; + alias RB_INSERTBANDW RB_INSERTBAND; + alias RB_SETBANDINFOW RB_SETBANDINFO; +} else { + alias HDITEMA HDITEM; + alias LPHDITEMA LPHDITEM; + alias TOOLINFOA TOOLINFO; + alias TOOLINFOA* PTOOLINFO, LPTOOLINFO; + alias TTHITTESTINFOA TTHITTESTINFO; + alias TTHITTESTINFOA* LPHITTESTINFO, LPTTHITTESTINFO; + alias TOOLTIPTEXTA TOOLTIPTEXT; + alias TOOLTIPTEXTA* LPTOOLTIPTEXT; + alias NMTTDISPINFOA NMTTDISPINFO; + alias NMTTDISPINFOA* LPNMTTDISPINFO; + alias TV_ITEMA TV_ITEM; + alias TV_ITEMA* LPTV_ITEM; + alias TVITEMA TVITEM; + alias TVITEMA* LPTVITEM; + + static if (_WIN32_IE >= 0x400) { + alias TVITEMEXA TVITEMEX; + alias TVITEMEXA* LPTVITEMEX; + } + + alias TV_INSERTSTRUCTA TV_INSERTSTRUCT; + alias TV_INSERTSTRUCTA* LPTV_INSERTSTRUCT; + alias TVINSERTSTRUCTA TVINSERTSTRUCT; + alias TVINSERTSTRUCTA* LPTVINSERTSTRUCT; + alias NM_TREEVIEWA NM_TREEVIEW; + alias NM_TREEVIEWA* LPNM_TREEVIEW; + alias NMTREEVIEWA NMTREEVIEW; + alias NMTREEVIEWA* LPNMTREEVIEW; + alias NMHDDISPINFOW NMHDDISPINFO; + alias NMHDDISPINFOW* LPNMHDDISPINFO; + + alias ACM_OPENA ACM_OPEN; + alias COMBOBOXEXITEMA COMBOBOXEXITEM; + alias PCOMBOBOXEXITEMA PCOMBOBOXEXITEM; + //alias PCCOMBOBOXEXITEMA PCCOMBOBOXEXITEM; fixme + alias CBEM_INSERTITEMA CBEM_INSERTITEM; + alias CBEM_SETITEMA CBEM_SETITEM; + alias CBEM_GETITEMA CBEM_GETITEM; + alias CBEN_ENDEDITA CBEN_ENDEDIT; + alias NMCBEENDEDITA NMCBEENDEDIT; + alias LPNMCBEENDEDITA LPNMCBEENDEDIT; + alias PNMCBEENDEDITA PNMCBEENDEDIT; + + static if (_WIN32_IE >= 0x400) { + alias TB_GETBUTTONINFOA TB_GETBUTTONINFO; + alias TB_SETBUTTONINFOA TB_SETBUTTONINFO; + alias TB_INSERTBUTTONA TB_INSERTBUTTON; + alias TB_ADDBUTTONSA TB_ADDBUTTONS; + alias TB_MAPACCELERATORA TB_MAPACCELERATOR; + alias TB_GETSTRINGA TB_GETSTRING; + alias NMCOMBOBOXEXA NMCOMBOBOXEX; + alias PNMCOMBOBOXEXA PNMCOMBOBOXEX; + alias CBEN_DRAGBEGINA CBEN_DRAGBEGIN; + alias CBEN_GETDISPINFOA CBEN_GETDISPINFO; + alias NMCBEDRAGBEGINA NMCBEDRAGBEGIN; + alias LPNMCBEDRAGBEGINA LPNMCBEDRAGBEGIN; + alias PNMCBEDRAGBEGINA PNMCBEDRAGBEGIN; + alias TBN_GETDISPINFOA TBN_GETDISPINFO; + alias NMTBDISPINFOA NMTBDISPINFO; + alias LPNMTBDISPINFOA LPNMTBDISPINFO; + alias NMTBGETINFOTIPA NMTBGETINFOTIP; + alias LPNMTBGETINFOTIPA LPNMTBGETINFOTIP; + } + + alias SB_GETTEXTA SB_GETTEXT; + alias SB_SETTEXTA SB_SETTEXT; + alias SB_GETTEXTLENGTHA SB_GETTEXTLENGTH; + alias HDM_INSERTITEMA HDM_INSERTITEM; + alias HDM_GETITEMA HDM_GETITEM; + alias HDM_SETITEMA HDM_SETITEM; + alias HDN_ITEMCHANGINGA HDN_ITEMCHANGING; + alias HDN_ITEMCHANGEDA HDN_ITEMCHANGED; + alias HDN_ITEMCLICKA HDN_ITEMCLICK; + alias HDN_ITEMDBLCLICKA HDN_ITEMDBLCLICK; + alias HDN_DIVIDERDBLCLICKA HDN_DIVIDERDBLCLICK; + alias HDN_BEGINTRACKA HDN_BEGINTRACK; + alias HDN_ENDTRACKA HDN_ENDTRACK; + alias HDN_TRACKA HDN_TRACK; + + static if (_WIN32_IE >= 0x300) { + alias HDN_GETDISPINFOA HDN_GETDISPINFO; + } + + alias HD_NOTIFYA HD_NOTIFY; + alias TBSAVEPARAMSA TBSAVEPARAMS; + alias TB_GETBUTTONTEXTA TB_GETBUTTONTEXT; + alias TB_SAVERESTOREA TB_SAVERESTORE; + alias TB_ADDSTRINGA TB_ADDSTRING; + alias TBN_GETBUTTONINFOA TBN_GETBUTTONINFO; + + static if (_WIN32_IE >= 0x400) { + alias TBBUTTONINFOA TBBUTTONINFO; + alias LPTBBUTTONINFOA LPTBBUTTONINFO; + } + + alias TBNOTIFYA TBNOTIFY; + alias LPTBNOTIFYA LPTBNOTIFY; + alias NMTOOLBARA NMTOOLBAR; + alias LPNMTOOLBARA LPNMTOOLBAR; + alias TTM_ADDTOOLA TTM_ADDTOOL; + alias TTM_DELTOOLA TTM_DELTOOL; + alias TTM_NEWTOOLRECTA TTM_NEWTOOLRECT; + alias TTM_GETTOOLINFOA TTM_GETTOOLINFO; + alias TTM_SETTOOLINFOA TTM_SETTOOLINFO; + alias TTM_HITTESTA TTM_HITTEST; + alias TTM_GETTEXTA TTM_GETTEXT; + alias TTM_UPDATETIPTEXTA TTM_UPDATETIPTEXT; + alias TTM_ENUMTOOLSA TTM_ENUMTOOLS; + alias TTM_GETCURRENTTOOLA TTM_GETCURRENTTOOL; + alias TTN_NEEDTEXTA TTN_NEEDTEXT; + alias TTN_GETDISPINFOA TTN_GETDISPINFO; + alias LV_ITEMA LV_ITEM; + alias LVITEMA LVITEM; + alias LVITEM* LPLVITEM; + alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK; + + static if (_WIN32_IE >= 0x400) { + alias LVBKIMAGEA LVBKIMAGE; + alias LPLVBKIMAGEA LPLVBKIMAGE; + alias LVM_SETBKIMAGEA LVM_SETBKIMAGE; + alias LVM_GETBKIMAGEA LVM_GETBKIMAGE; + } + + alias LVM_GETITEMA LVM_GETITEM; + alias LVM_SETITEMA LVM_SETITEM; + alias LVM_INSERTITEMA LVM_INSERTITEM; + alias LV_FINDINFOA LV_FINDINFO; + alias LVFINDINFOA LVFINDINFO; + alias LPFINDINFOA LPFINDINFO; + alias NMLVFINDITEMA NMLVFINDITEM; + alias PNMLVFINDITEMA PNMLVFINDITEM; + alias LPNMLVFINDITEMA LPNMLVFINDITEM; + alias LVM_FINDITEMA LVM_FINDITEM; + alias LVM_GETSTRINGWIDTHA LVM_GETSTRINGWIDTH; + alias LVM_EDITLABELA LVM_EDITLABEL; + alias LV_COLUMNA LV_COLUMN; + alias LVCOLUMNA LVCOLUMN; + alias LVCOLUMNA* LPLVCOLUMN; + alias LVM_GETCOLUMNA LVM_GETCOLUMN; + alias LVM_SETCOLUMNA LVM_SETCOLUMN; + alias LVM_INSERTCOLUMNA LVM_INSERTCOLUMN; + alias LVM_GETITEMTEXTA LVM_GETITEMTEXT; + alias LVM_SETITEMTEXTA LVM_SETITEMTEXT; + alias LVM_GETISEARCHSTRINGA LVM_GETISEARCHSTRING; + alias LVN_BEGINLABELEDITA LVN_BEGINLABELEDIT; + alias LVN_ENDLABELEDITA LVN_ENDLABELEDIT; + alias LVN_GETDISPINFOA LVN_GETDISPINFO; + alias LVN_SETDISPINFOA LVN_SETDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias LVN_GETINFOTIPA LVN_GETINFOTIP; + alias NMLVGETINFOTIPA NMLVGETINFOTIP; + alias LPNMLVGETINFOTIPA LPNMLVGETINFOTIP; + } + + alias LV_DISPINFOA LV_DISPINFO; + alias NMLVDISPINFOA NMLVDISPINFO; + alias LPNMLVDISPINFOA LPNMLVDISPINFO; + alias TVM_INSERTITEMA TVM_INSERTITEM; + alias TVM_GETITEMA TVM_GETITEM; + alias TVM_SETITEMA TVM_SETITEM; + alias TVM_EDITLABELA TVM_EDITLABEL; + alias TVM_GETISEARCHSTRINGA TVM_GETISEARCHSTRING; + alias NMTVDISPINFOA TV_DISPINFO; + alias NMTVDISPINFOA NMTVDISPINFO; + alias LPNMTVDISPINFOA LPNMTVDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias NMTVGETINFOTIPA NMTVGETINFOTIP; + alias LPNMTVGETINFOTIPA LPNMTVGETINFOTIP; + alias TVN_GETINFOTIPA TVN_GETINFOTIP; + } + + alias TVN_SELCHANGINGA TVN_SELCHANGING; + alias TVN_SELCHANGEDA TVN_SELCHANGED; + alias TVN_GETDISPINFOA TVN_GETDISPINFO; + alias TVN_SETDISPINFOA TVN_SETDISPINFO; + alias TVN_ITEMEXPANDINGA TVN_ITEMEXPANDING; + alias TVN_ITEMEXPANDEDA TVN_ITEMEXPANDED; + alias TVN_BEGINDRAGA TVN_BEGINDRAG; + alias TVN_BEGINRDRAGA TVN_BEGINRDRAG; + alias TVN_DELETEITEMA TVN_DELETEITEM; + alias TVN_BEGINLABELEDITA TVN_BEGINLABELEDIT; + alias TVN_ENDLABELEDITA TVN_ENDLABELEDIT; + alias TC_ITEMHEADERA TC_ITEMHEADER; + alias TC_ITEMA TC_ITEM; + alias TCITEMA TCITEM; + alias LPTCITEMA LPTCITEM; + alias TCM_GETITEMA TCM_GETITEM; + alias TCM_SETITEMA TCM_SETITEM; + alias TCM_INSERTITEMA TCM_INSERTITEM; + alias CreateStatusWindowA CreateStatusWindow; + alias DrawStatusTextA DrawStatusText; + alias ImageList_LoadImageA ImageList_LoadImage; + alias DTM_SETFORMATA DTM_SETFORMAT; + alias DTN_USERSTRINGA DTN_USERSTRING; + alias DTN_WMKEYDOWNA DTN_WMKEYDOWN; + alias DTN_FORMATA DTN_FORMAT; + alias DTN_FORMATQUERYA DTN_FORMATQUERY; + alias REBARBANDINFOA REBARBANDINFO; + alias REBARBANDINFOA* LPREBARBANDINFO; + alias LPCREBARBANDINFOA LPCREBARBANDINFO; + alias REBARBANDINFOA_V3_SIZE REBARBANDINFO_V3_SIZE; + alias RB_INSERTBANDA RB_INSERTBAND; + alias RB_SETBANDINFOA RB_SETBANDINFO; +} + + +alias INT function(PVOID, PVOID) PFNDPAENUMCALLBACK; +alias INT function(PVOID, PVOID) PFNDSAENUMCALLBACK; +alias INT function(PVOID, PVOID, LPARAM) PFNDPACOMPARE; + +static if (_WIN32_WINNT >= 0x501) { + extern (Windows) + alias LRESULT function(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR) + SUBCLASSPROC; + + struct LITEM { + UINT mask; + int iLink; + UINT state; + UINT stateMask; + WCHAR[MAX_LINKID_TEXT] szID; + WCHAR[L_MAX_URL_LENGTH] szUrl; + } + alias LITEM* PLITEM; + + struct LHITTESTINFO { + POINT pt; + LITEM item; + } + alias LHITTESTINFO* PLHITTESTINFO; + + struct NMLINK { + NMHDR hdr; + LITEM item; + } + alias NMLINK* PNMLINK; +} + +uint INDEXTOOVERLAYMASK(uint i) { return i << 8; } +uint INDEXTOSTATEIMAGEMASK(uint i) { return i << 12; } + +template HANDLE_WM_NOTIFY(R) { + R HANDLE_WM_NOTIFY(HWND hwnd, WPARAM wParam, LPARAM lParam, + R function(HWND, int, NMHDR*) fn) { + return fn(hwnd, wParam, cast(NMHDR*) lParam); + } +} +int FORWARD_WM_NOTIFY(HWND hwnd, int idFrom, NMHDR* pnmhdr, + int function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) fn) { + return fn(hwnd, WM_NOTIFY, idFrom, cast(LPARAM) pnmhdr); +} + +//#define CCSIZEOF_STRUCT(s, m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m)) + +LPARAM MAKEIPADDRESS(ubyte b1, ubyte b2, ubyte b3, ubyte b4) { + return (cast(DWORD) b1 << 24) + | (cast(DWORD) b2 << 16) + | (cast(DWORD) b3 << 8) + | (cast(DWORD) b4); +} + +LPARAM MAKEIPRANGE(ubyte low, ubyte high) { + return (cast(int) high << 8) | low; +} + +ubyte FIRST_IPADDRESS(LPARAM x) { + return cast(ubyte) (x >> 24); +} + +ubyte SECOND_IPADDRESS(LPARAM x) { + return cast(ubyte) (x >> 16); +} + +ubyte THIRD_IPADDRESS(LPARAM x) { + return cast(ubyte) (x >> 8); +} + +ubyte FOURTH_IPADDRESS(LPARAM x) { + return cast(ubyte) x; +} + +HWND Animate_Create(HWND hwndP, UINT id, DWORD dwStyle, + HINSTANCE hInstance) { + return CreateWindow(cast(TCHAR*)ANIMATE_CLASS.ptr, null, dwStyle, 0, 0, 0, 0, hwndP, + cast(HMENU) id, hInstance, null); +} + +BOOL Animate_Open(HWND hwnd, LPTSTR szName) { + return cast(BOOL) SendMessage(hwnd, ACM_OPEN, 0, cast(LPARAM) szName); +} + +BOOL Animate_OpenEx(HWND hwnd, HINSTANCE hInst, LPTSTR szName) { + return cast(BOOL) SendMessage(hwnd, ACM_OPEN, cast(WPARAM) hInst, + cast(LPARAM) szName); +} + +BOOL Animate_Play(HWND hwnd, int from, int to, int rep) { + return cast(BOOL) SendMessage(hwnd, ACM_PLAY, rep, + MAKELONG(cast(ushort) from, cast(ushort) to)); +} + +BOOL Animate_Stop(HWND hwnd) { + return cast(BOOL) SendMessage(hwnd, ACM_STOP, 0, 0); +} + +BOOL Animate_Close(HWND hwnd) { + return Animate_Open(hwnd, null); +} + +BOOL Animate_Seek(HWND hwnd, int frame) { + return Animate_Play(hwnd, frame, frame, 1); +} + +extern (Windows) { + HBITMAP CreateMappedBitmap(HINSTANCE, INT_PTR, UINT, LPCOLORMAP, int); + HWND CreateStatusWindowA(LONG, LPCSTR, HWND, UINT); + HWND CreateStatusWindowW(LONG, LPCWSTR, HWND, UINT); + HWND CreateToolbarEx(HWND, DWORD, UINT, int, HINSTANCE, UINT_PTR, + LPCTBBUTTON, int, int, int, int, int, UINT); + HWND CreateUpDownControl(DWORD, int, int, int, int, HWND, int, HINSTANCE, + HWND, int, int, int); +} + +HWND DateTime_GetMonthCal(HWND hwnd) { + return cast(HWND) SendMessage(hwnd, DTM_GETMONTHCAL, 0, 0); +} + +COLORREF DateTime_GetMonthCalColor(HWND hwnd, int iColor) { + return cast(COLORREF) SendMessage(hwnd, DTM_GETMCCOLOR, iColor, 0); +} + +HFONT DateTime_GetMonthCalFont(HWND hwnd) { + return cast(HFONT) SendMessage(hwnd, DTM_GETMCFONT, 0, 0); +} + +DWORD DateTime_GetRange(HWND hwnd, LPSYSTEMTIME lpSysTimeArray) { + return cast(DWORD) SendMessage(hwnd, DTM_GETRANGE, 0, cast(LPARAM) lpSysTimeArray); +} + +DWORD DateTime_GetSystemtime(HWND hwnd, LPSYSTEMTIME lpSysTime) { + return cast(DWORD) SendMessage(hwnd, DTM_GETSYSTEMTIME, 0, cast(LPARAM) lpSysTime); +} + +BOOL DateTime_SetFormat(HWND hwnd, LPCTSTR lpszFormat) { + return cast(BOOL) SendMessage(hwnd, DTM_SETFORMAT, 0, + cast(LPARAM) lpszFormat); +} + +LRESULT DateTime_SetMonthCalColor(HWND hwnd, int iColor, COLORREF clr) { + return SendMessage(hwnd, DTM_SETMCCOLOR, cast(WPARAM) iColor, + cast(LPARAM) clr); +} + +void DateTime_SetMonthCalFont(HWND hwnd, HFONT hfont, BOOL fRedraw) { + SendMessage(hwnd, DTM_SETMCFONT, cast(WPARAM) hfont, fRedraw); +} + +BOOL DateTime_SetRange(HWND hwnd, WPARAM flags, LPSYSTEMTIME lpSysTimeArray) { + return cast(BOOL) SendMessage(hwnd, DTM_SETRANGE, flags, + cast(LPARAM) lpSysTimeArray); +} + +BOOL DateTime_SetSystemtime(HWND hwnd, WPARAM flag, LPSYSTEMTIME lpSysTime) { + return cast(BOOL) SendMessage(hwnd, DTM_SETSYSTEMTIME, flag, + cast(LPARAM) lpSysTime); +} + +extern (Windows) { + void DrawInsert(HWND, HWND, int); + void DrawStatusTextA(HDC, LPRECT, LPCSTR, UINT); + void DrawStatusTextW(HDC, LPRECT, LPCWSTR, UINT); + void GetEffectiveClientRect(HWND, LPRECT, LPINT); +} + +int Header_GetItemCount(HWND w) { + return cast(int) SendMessage(w, HDM_GETITEMCOUNT, 0, 0); +} + +int Header_InsertItem(HWND w, int i, const(HDITEM)* phdi) { + return cast(int) SendMessage(w, HDM_INSERTITEM, i, cast(LPARAM) phdi); +} + +BOOL Header_DeleteItem(HWND w, int i) { + return cast(BOOL) SendMessage(w, HDM_DELETEITEM, i, 0); +} + +BOOL Header_GetItem(HWND w, int i, LPHDITEM phdi) { + return cast(BOOL) SendMessage(w, HDM_GETITEM, i, cast(LPARAM) phdi); +} + +BOOL Header_SetItem(HWND w, int i, const(HDITEM)* phdi) { + return cast(BOOL) SendMessage(w, HDM_SETITEM, i, cast(LPARAM) phdi); +} + +BOOL Header_Layout(HWND w, LPHDLAYOUT playout) { + return cast(BOOL) SendMessage(w, HDM_LAYOUT, 0, cast(LPARAM) playout); +} + +static if (_WIN32_IE >= 0x300) { + int Header_OrderToIndex(HWND w, int i) { + return cast(int) SendMessage(w, HDM_ORDERTOINDEX, i, 0); + } + + BOOL Header_GetItemRect(HWND w, int i, RECT* r) { + return cast(BOOL) SendMessage(w, HDM_GETITEMRECT, i, cast(LPARAM) r); + } + + BOOL Header_GetOrderArray(HWND w, int iSize, LPINT lpiArray) { + return cast(BOOL) SendMessage(w, HDM_GETORDERARRAY, iSize, + cast(LPARAM) lpiArray); + } + + BOOL Header_SetOrderArray(HWND w, int iSize, LPINT lpiArray) { + return cast(BOOL) SendMessage(w, HDM_SETORDERARRAY, iSize, + cast(LPARAM) lpiArray); + } + + HIMAGELIST Header_CreateDragImage(HWND w, int i) { + return cast(HIMAGELIST) SendMessage(w, HDM_CREATEDRAGIMAGE, i, 0); + } + + HIMAGELIST Header_SetImageList(HWND w, HIMAGELIST himl) { + return cast(HIMAGELIST) SendMessage(w, HDM_SETIMAGELIST, 0, + cast(LPARAM) himl); + } + + HIMAGELIST Header_GetImageList(HWND w) { + return cast(HIMAGELIST) SendMessage(w, HDM_GETIMAGELIST, 0, 0); + } +} + +static if (_WIN32_IE >= 0x400) { + BOOL Header_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, HDM_GETUNICODEFORMAT, 0, 0); + } + + BOOL Header_SetUnicodeFormat(HWND w, BOOL fUnicode) { + return cast(BOOL) SendMessage(w, HDM_SETUNICODEFORMAT, fUnicode, 0); + } +} + +extern (Windows) { + HDSA DSA_Create(INT, INT); + BOOL DSA_Destroy(HDSA); + VOID DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, PVOID); + PVOID DSA_GetItemPtr(HDSA, INT); + INT DSA_InsertItem(HDSA, INT, PVOID); + HDPA DPA_Create(INT); + BOOL DPA_Destroy(HDPA); + PVOID DPA_DeletePtr(HDPA, INT); + BOOL DPA_DeleteAllPtrs(HDPA); + VOID DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); + VOID DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); + BOOL DPA_SetPtr(HDPA, INT, PVOID); + INT DPA_InsertPtr(HDPA, INT, PVOID); + PVOID DPA_GetPtr(HDPA, INT_PTR); + BOOL DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM); + INT DPA_Search(HDPA, PVOID, INT, PFNDPACOMPARE, LPARAM, UINT); + BOOL Str_SetPtrW(LPWSTR*, LPCWSTR); + + static if (_WIN32_IE >= 0x400) { + BOOL FlatSB_EnableScrollBar(HWND, INT, UINT); + BOOL FlatSB_ShowScrollBar(HWND, INT, BOOL); + BOOL FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT); + BOOL FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO); + INT FlatSB_GetScrollPos(HWND, INT); + BOOL FlatSB_GetScrollProp(HWND, INT, LPINT); + version (Win64) { + BOOL FlatSB_GetScrollPropPtr(HWND, INT, PINT_PTR); + } else { + alias FlatSB_GetScrollProp FlatSB_GetScrollPropPtr; + } + INT FlatSB_SetScrollPos(HWND, INT, INT, BOOL); + INT FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL); + INT FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL); + BOOL FlatSB_SetScrollProp(HWND, UINT, INT_PTR, BOOL); + alias FlatSB_SetScrollProp FlatSB_SetScrollPropPtr; + BOOL InitializeFlatSB(HWND); + HRESULT UninitializeFlatSB(HWND); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR); + BOOL GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*); + BOOL RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR); + LRESULT DefSubclassProc(HWND, UINT, WPARAM, LPARAM); + INT DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, + COLORREF, INT, INT); + } + + int ImageList_Add(HIMAGELIST, HBITMAP, HBITMAP); + int ImageList_AddMasked(HIMAGELIST, HBITMAP, COLORREF); + BOOL ImageList_BeginDrag(HIMAGELIST, int, int, int); + HIMAGELIST ImageList_Create(int, int, UINT, int, int); + BOOL ImageList_Destroy(HIMAGELIST); + BOOL ImageList_DragEnter(HWND, int, int); + BOOL ImageList_DragLeave(HWND); + BOOL ImageList_DragMove(int, int); + BOOL ImageList_DragShowNolock(BOOL); + BOOL ImageList_Draw(HIMAGELIST, int, HDC, int, int, UINT); + BOOL ImageList_DrawEx(HIMAGELIST, int, HDC, int, int, int, int, COLORREF, + COLORREF, UINT); + void ImageList_EndDrag(); + COLORREF ImageList_GetBkColor(HIMAGELIST); + HIMAGELIST ImageList_GetDragImage(LPPOINT, LPPOINT); + HICON ImageList_GetIcon(HIMAGELIST, int, UINT); + BOOL ImageList_GetIconSize(HIMAGELIST, int*, int*); + int ImageList_GetImageCount(HIMAGELIST); + BOOL ImageList_GetImageInfo(HIMAGELIST, int, IMAGEINFO*); + HIMAGELIST ImageList_LoadImageA(HINSTANCE, LPCSTR, int, int, COLORREF, + UINT, UINT); + HIMAGELIST ImageList_LoadImageW(HINSTANCE, LPCWSTR, int, int, COLORREF, + UINT, UINT); + HIMAGELIST ImageList_Merge(HIMAGELIST, int, HIMAGELIST, int, int, int); + BOOL ImageList_Remove(HIMAGELIST, int); + BOOL ImageList_Replace(HIMAGELIST, int, HBITMAP, HBITMAP); + int ImageList_ReplaceIcon(HIMAGELIST, int, HICON); + COLORREF ImageList_SetBkColor(HIMAGELIST, COLORREF); + BOOL ImageList_SetDragCursorImage(HIMAGELIST, int, int, int); + BOOL ImageList_SetIconSize(HIMAGELIST, int, int); + BOOL ImageList_SetOverlayImage(HIMAGELIST, int, int); + + //#ifdef _OBJIDL_H + HIMAGELIST ImageList_Read(LPSTREAM); + BOOL ImageList_Write(HIMAGELIST, LPSTREAM); + //#endif + + static if (_WIN32_IE >= 0x400) { + HIMAGELIST ImageList_Duplicate(HIMAGELIST himl); + } + + void InitCommonControls(); + + static if (_WIN32_IE >= 0x300) { + BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX); + } + + int LBItemFromPt(HWND, POINT, BOOL); +} + +int ImageList_AddIcon(HIMAGELIST himl, HICON hicon) { + return ImageList_ReplaceIcon(himl, -1, hicon); +} + +HICON ImageList_ExtractIcon(HINSTANCE hi, HIMAGELIST himl, int i) { + return ImageList_GetIcon(himl, i, 0); +} + +HIMAGELIST ImageList_LoadBitmap(HINSTANCE hi, LPCTSTR lpbmp, int cx, + int cGrow, COLORREF crMask) { + return ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0); +} + +BOOL ImageList_RemoveAll(HIMAGELIST himl) { + return ImageList_Remove(himl, -1); +} + +COLORREF ListView_GetBkColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETBKCOLOR, 0, 0); +} + +HIMAGELIST ListView_GetImageList(HWND w, int i) { + return cast(HIMAGELIST) SendMessage(w, LVM_GETIMAGELIST, i, 0); +} + +int ListView_GetItemCount(HWND w) { + return cast(int) SendMessage(w, LVM_GETITEMCOUNT, 0, 0); +} + +BOOL ListView_GetItem(HWND w, LPLVITEM pitem) { + return cast(BOOL) SendMessage(w, LVM_GETITEM, 0, cast(LPARAM) pitem); +} + +BOOL ListView_SetBkColor(HWND w, COLORREF c) { + return cast(BOOL) SendMessage(w, LVM_SETBKCOLOR, 0, cast(LPARAM) c); +} + +HIMAGELIST ListView_SetImageList(HWND w, HIMAGELIST h, int i) { + return cast(HIMAGELIST) SendMessage(w, LVM_SETIMAGELIST, i, + cast(LPARAM) h); +} + +BOOL ListView_SetItem(HWND w, const(LV_ITEM)* i) { + return cast(BOOL) SendMessage(w, LVM_SETITEM, 0, cast(LPARAM) i); +} + +int ListView_InsertItem(HWND w, const(LV_ITEM)* i) { + return cast(int) SendMessage(w, LVM_INSERTITEM, 0, cast(LPARAM) i); +} + +BOOL ListView_DeleteItem(HWND w, int i) { + return cast(BOOL) SendMessage(w, LVM_DELETEITEM, i, 0); +} + +BOOL ListView_DeleteAllItems(HWND w) { + return cast(BOOL) SendMessage(w, LVM_DELETEALLITEMS, 0, 0); +} + +UINT ListView_GetCallbackMask(HWND w) { + return cast(UINT) SendMessage(w, LVM_GETCALLBACKMASK, 0, 0); +} + +BOOL ListView_SetCallbackMask(HWND w, UINT m) { + return cast(BOOL) SendMessage(w, LVM_SETCALLBACKMASK, m, 0); +} + +int ListView_GetNextItem(HWND w, int i, UINT f) { + return cast(int) SendMessage(w, LVM_GETNEXTITEM, i, MAKELPARAM(cast(ushort)f, 0)); +} + +int ListView_FindItem(HWND w, int i, const(LV_FINDINFO)* p) { + return cast(int) SendMessage(w, LVM_FINDITEM, i, cast(LPARAM) p); +} + +BOOL ListView_GetItemRect(HWND w, int i, LPRECT p, int c) { + return cast(BOOL) SendMessage(w, LVM_GETITEMRECT, i, p ? + (p.left = c, cast(LPARAM) p) : 0); +} + +BOOL ListView_SetItemPosition(HWND w, int i, int x, int y) { + return cast(BOOL) SendMessage(w, LVM_SETITEMPOSITION, i, MAKELPARAM(cast(ushort)x, cast(ushort)y)); +} + +BOOL ListView_GetItemPosition(HWND w, int i, POINT* p) { + return cast(BOOL) SendMessage(w, LVM_GETITEMPOSITION, i, cast(LPARAM) p); +} + +DWORD ListView_GetItemSpacing(HWND w, BOOL f) { + return cast(DWORD) SendMessage(w, LVM_GETITEMSPACING, f, 0); +} + +int ListView_GetStringWidth(HWND w, LPCSTR s) { + return cast(int) SendMessage(w, LVM_GETSTRINGWIDTH, 0, cast(LPARAM) s); +} + +int ListView_HitTest(HWND w, LPLVHITTESTINFO p) { + return cast(int) SendMessage(w, LVM_HITTEST, 0, cast(LPARAM) p); +} + +BOOL ListView_EnsureVisible(HWND w, int i, BOOL f) { + return cast(BOOL) SendMessage(w, LVM_ENSUREVISIBLE, i, MAKELPARAM(cast(ushort)f, 0)); +} + +BOOL ListView_Scroll(HWND w, int dx, int dy) { + return cast(BOOL) SendMessage(w, LVM_SCROLL, dx, dy); +} + +BOOL ListView_RedrawItems(HWND w, int f, int l) { + return cast(BOOL) SendMessage(w, LVM_REDRAWITEMS, f, l); +} + +BOOL ListView_Arrange(HWND w, UINT c) { + return cast(BOOL) SendMessage(w, LVM_ARRANGE, c, 0); +} + +HWND ListView_EditLabel(HWND w, int i) { + return cast(HWND) SendMessage(w, LVM_EDITLABEL, i, 0); +} + +HWND ListView_GetEditControl(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETEDITCONTROL, 0, 0); +} + +BOOL ListView_GetColumn(HWND w, int i, LPLVCOLUMN p) { + return cast(BOOL) SendMessage(w, LVM_GETCOLUMN, i, cast(LPARAM) p); +} + +BOOL ListView_SetColumn(HWND w, int i, const(LV_COLUMN)* p) { + return cast(BOOL) SendMessage(w, LVM_SETCOLUMN, i, cast(LPARAM) p); +} + +int ListView_InsertColumn(HWND w, int i, const(LV_COLUMN)* p) { + return cast(int) SendMessage(w, LVM_INSERTCOLUMN, i, cast(LPARAM) p); +} + +BOOL ListView_DeleteColumn(HWND w, int i) { + return cast(BOOL) SendMessage(w, LVM_DELETECOLUMN, i, 0); +} + +int ListView_GetColumnWidth(HWND w, int i) { + return cast(int) SendMessage(w, LVM_GETCOLUMNWIDTH, i, 0); +} + +BOOL ListView_SetColumnWidth(HWND w, int i, int x) { + return cast(BOOL) SendMessage(w, LVM_SETCOLUMNWIDTH, i, MAKELPARAM(cast(ushort)x, 0)); +} + +HIMAGELIST ListView_CreateDragImage(HWND w, int i, LPPOINT p) { + return cast(HIMAGELIST) SendMessage(w, LVM_CREATEDRAGIMAGE, i, + cast(LPARAM) p); +} + +BOOL ListView_GetViewRect(HWND w, RECT* p) { + return cast(BOOL) SendMessage(w, LVM_GETVIEWRECT, 0, cast(LPARAM) p); +} + +COLORREF ListView_GetTextColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETTEXTCOLOR, 0, 0); +} + +BOOL ListView_SetTextColor(HWND w, COLORREF c) { + return cast(BOOL) SendMessage(w, LVM_SETTEXTCOLOR, 0, cast(LPARAM) c); +} + +COLORREF ListView_GetTextBkColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETTEXTBKCOLOR, 0, 0); +} + +BOOL ListView_SetTextBkColor(HWND w, COLORREF c) { + return cast(BOOL) SendMessage(w, LVM_SETTEXTBKCOLOR, 0, cast(LPARAM) c); +} + +int ListView_GetTopIndex(HWND w) { + return cast(int) SendMessage(w, LVM_GETTOPINDEX, 0, 0); +} + +int ListView_GetCountPerPage(HWND w) { + return cast(int) SendMessage(w, LVM_GETCOUNTPERPAGE, 0, 0); +} + +BOOL ListView_GetOrigin(HWND w, LPPOINT p) { + return cast(BOOL) SendMessage(w, LVM_GETORIGIN, 0, cast(LPARAM) p); +} + +BOOL ListView_Update(HWND w, WPARAM i) { + return cast(BOOL) SendMessage(w, LVM_UPDATE, i, 0); +} + +void ListView_SetItemState(HWND w, int i, UINT d, UINT m) { + LV_ITEM _lvi; + _lvi.stateMask = m; + _lvi.state = d; + SendMessage(w, LVM_SETITEMSTATE, i, cast(LPARAM) &_lvi); +} + +UINT ListView_GetItemState(HWND w, int i, UINT m) { + return cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, m); +} + +void ListView_GetItemText(HWND w, int i, int iS, LPTSTR s, int n) { + LV_ITEM _lvi; + _lvi.iSubItem = iS; + _lvi.cchTextMax = n; + _lvi.pszText = s; + SendMessage(w, LVM_GETITEMTEXT, i, cast(LPARAM) &_lvi); +} + +void ListView_SetItemText(HWND w, int i, int iS, LPTSTR s) { + LV_ITEM _lvi; + _lvi.iSubItem = iS; + _lvi.pszText = s; + SendMessage(w, LVM_SETITEMTEXT, i, cast(LPARAM) &_lvi); +} + +void ListView_SetItemCount(HWND w, int n) { + SendMessage(w, LVM_SETITEMCOUNT, n, 0); +} + +BOOL ListView_SortItems(HWND w, PFNLVCOMPARE f, LPARAM l) { + return cast(BOOL) SendMessage(w, LVM_SORTITEMS, l, cast(LPARAM) f); +} + +void ListView_SetItemPosition32(HWND w, int i, int x, int y) { + POINT p; + p.x = x; + p.y = y; + SendMessage(w, LVM_SETITEMPOSITION32, i, cast(LPARAM) &p); +} + +UINT ListView_GetSelectedCount(HWND w) { + return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOUNT, 0, 0); +} + +UINT ListView_GetCheckState(HWND w, UINT i) { + return ((cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK)) >> 12) - 1; +} + +void ListView_SetCheckState(HWND w, UINT i, BOOL f) { + ListView_SetItemState(w, i, INDEXTOSTATEIMAGEMASK(f ? 2 : 1), + LVIS_STATEIMAGEMASK); +} + +BOOL ListView_GetISearchString(HWND w, LPSTR lpsz) { + return cast(BOOL) SendMessage(w, LVM_GETISEARCHSTRING, 0, + cast(LPARAM) lpsz); +} + +void ListView_CancelEditLabel(HWND w) { + SendMessage(w, LVM_CANCELEDITLABEL, 0, 0); +} + +int ListView_EnableGroupView(HWND w, BOOL i) { + return cast(int) SendMessage(w, LVM_ENABLEGROUPVIEW, i, 0); +} + +//static if (_WIN32_WINNT >= 0x500 || _WIN32_IE >= 0x500) { + BOOL ListView_SortItemsEx(HWND w, PFNLVCOMPARE c, LPARAM p) { + return cast(BOOL) SendMessage(w, LVM_SORTITEMSEX, cast(WPARAM) p, cast(LPARAM)c); + } +//} + +static if (_WIN32_WINNT >= 0x501) { + int ListView_GetGroupInfo(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_GETGROUPINFO, i, cast(LPARAM) p); + } + + void ListView_GetGroupMetrics(HWND w, PLVGROUPMETRICS p) { + SendMessage(w, LVM_GETGROUPMETRICS, 0, cast(LPARAM) p); + } + + BOOL ListView_GetInsertMark(HWND w, PLVINSERTMARK p) { + return cast(BOOL) SendMessage(w, LVM_GETINSERTMARK, 0, cast(LPARAM) p); + } + + COLORREF ListView_GetInsertMarkColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETINSERTMARKCOLOR, 0, 0); + } + + int ListView_GetInsertMarkRect(HWND w, LPRECT p) { + return cast(int) SendMessage(w, LVM_GETINSERTMARKRECT, 0, cast(LPARAM) p); + } + + COLORREF ListView_GetOutlineColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETOUTLINECOLOR, 0, 0); + } + + UINT ListView_GetSelectedColumn(HWND w) { + return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOLUMN, 0, 0); + } + + void ListView_GetTileInfo(HWND w, PLVTILEINFO p) { + SendMessage(w, LVM_GETTILEINFO, 0, cast(LPARAM) p); + } + + void ListView_GetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { + SendMessage(w, LVM_GETTILEVIEWINFO, 0, cast(LPARAM) p); + } + + DWORD ListView_GetView(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETVIEW, 0, 0); + } + + BOOL ListView_HasGroup(HWND w, int i) { + return cast(BOOL) SendMessage(w, LVM_HASGROUP, i, 0); + } + + int ListView_InsertGroup(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_INSERTGROUP, i, cast(LPARAM) p); + } + + void ListView_InsertGroupSorted(HWND w, PLVINSERTGROUPSORTED p) { + SendMessage(w, LVM_INSERTGROUPSORTED, cast(WPARAM) p, 0); + } + + BOOL ListView_InsertMarkHitTest(HWND w, LPPOINT p, PLVINSERTMARK t) { + return cast(BOOL) SendMessage(w, LVM_INSERTMARKHITTEST, cast(WPARAM) p, cast(LPARAM) t); + } + + BOOL ListView_IsGroupViewEnabled(HWND w) { + return cast(BOOL) SendMessage(w, LVM_ISGROUPVIEWENABLED, 0, 0); + } + + UINT ListView_MapIDToIndex(HWND w, UINT i) { + return cast(UINT) SendMessage(w, LVM_MAPIDTOINDEX, i, 0); + } + + /* ??? MSDN documents this as "Not implemented", except in relation to + * Windows CE/Mobile. + */ + void ListView_MoveGroup(HWND w, int i, int t) { + SendMessage(w, LVM_MOVEGROUP, i, t); + } + + void ListView_RemoveAllGroups(HWND w) { + SendMessage(w, LVM_REMOVEALLGROUPS, 0, 0); + } + + int ListView_RemoveGroup(HWND w, int i) { + return cast(int) SendMessage(w, LVM_REMOVEGROUP, i, 0); + } + + int ListView_SetGroupInfo(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_SETGROUPINFO, i, cast(LPARAM) p); + } + + void ListView_SetGroupMetrics(HWND w, PLVGROUPMETRICS p) { + SendMessage(w, LVM_SETGROUPMETRICS, 0, cast(LPARAM) p); + } + + BOOL ListView_SetInfoTip(HWND w, PLVSETINFOTIP p) { + return cast(BOOL) SendMessage(w, LVM_SETINFOTIP, 0, cast(LPARAM) p); + } + + BOOL ListView_SetInsertMark(HWND w, PLVINSERTMARK p) { + return cast(BOOL) SendMessage(w, LVM_SETINSERTMARK, 0, cast(LPARAM) p); + } + + COLORREF ListView_SetInsertMarkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, LVM_SETINSERTMARKCOLOR, 0, c); + } + + COLORREF ListView_SetOutlineColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, LVM_SETOUTLINECOLOR, 0, c); + } + + void ListView_SetSelectedColumn(HWND w, int i) { + SendMessage(w, LVM_SETSELECTEDCOLUMN, i, 0); + } + + BOOL ListView_SetTileInfo(HWND w, PLVTILEINFO p) { + return cast(BOOL) SendMessage(w, LVM_SETTILEINFO, 0, cast(LPARAM) p); + } + + BOOL ListView_SetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { + return cast(BOOL) SendMessage(w, LVM_SETTILEVIEWINFO, 0, cast(LPARAM) p); + } + + int ListView_SetView(HWND w, DWORD i) { + return cast(int) SendMessage(w, LVM_SETVIEW, i, 0); + } + + int ListView_SortGroups(HWND w, PFNLVGROUPCOMPARE c, LPVOID p) { + return cast(int) SendMessage(w, LVM_SORTGROUPS, cast(WPARAM) c, cast(LPARAM) p); + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + CBM_FIRST = 0x1700, + CB_SETMINVISIBLE = CBM_FIRST + 1, + CB_GETMINVISIBLE = CBM_FIRST + 2, + CB_SETCUEBANNER = CBM_FIRST + 3, + CB_GETCUEBANNER = CBM_FIRST + 4, + } + + BOOL ComboBox_SetMinVisible(HWND w, INT i) { + return cast(BOOL) SendMessage(w, CB_SETMINVISIBLE, cast(WPARAM) i, 0); + } + + int ComboBox_GetMinVisible(HWND w) { + return cast(int) SendMessage(w, CB_GETMINVISIBLE, 0, 0); + } +} + +extern (Windows) BOOL MakeDragList(HWND); +extern (Windows) void MenuHelp(UINT, WPARAM, LPARAM, HMENU, HINSTANCE, HWND, + PUINT); + +COLORREF MonthCal_GetColor(HWND hwnd, INT icolor) { + return cast(COLORREF) SendMessage(hwnd, MCM_GETCOLOR, + cast(WPARAM) icolor, 0); +} + +BOOL MonthCal_GetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { + return cast(BOOL) SendMessage(hwnd, MCM_GETCURSEL, 0, + cast(LPARAM) lpsystime); +} + +DWORD MonthCal_GetFirstDayOfWeek(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, MCM_GETFIRSTDAYOFWEEK, 0, 0); +} + +DWORD MonthCal_GetMaxSelCount(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, MCM_GETMAXSELCOUNT, 0, 0); +} + +DWORD MonthCal_GetMaxTodayWidth(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, MCM_GETMAXTODAYWIDTH, 0, 0); +} + +BOOL MonthCal_GetMinReqRect(HWND hwnd, LPRECT lpRectInfo) { + return cast(BOOL) SendMessage(hwnd, MCM_GETMINREQRECT, 0, + cast(LPARAM) lpRectInfo); +} + +INT MonthCal_GetMonthDelta(HWND hwnd) { + return cast(INT) SendMessage(hwnd, MCM_GETMONTHDELTA, 0, 0); +} + +INT MonthCal_GetMonthRange(HWND hwnd, DWORD flag, LPSYSTEMTIME systimearray) { + return cast(INT) SendMessage(hwnd, MCM_GETMONTHRANGE, cast(WPARAM) flag, + cast(LPARAM) systimearray); +} + +DWORD MonthCal_GetRange(HWND hwnd, LPSYSTEMTIME systimearray) { + return cast(DWORD) SendMessage(hwnd, MCM_GETRANGE, 0, + cast(LPARAM) systimearray); +} + +BOOL MonthCal_GetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { + return cast(BOOL) SendMessage(hwnd, MCM_GETSELRANGE, 0, + cast(LPARAM) systimearray); +} + +BOOL MonthCal_GetToday(HWND hwnd, LPSYSTEMTIME systime) { + return cast(BOOL) SendMessage(hwnd, MCM_GETTODAY, 0, + cast(LPARAM) systime); +} + +BOOL MonthCal_GetUnicodeFormat(HWND hwnd) { + return cast(BOOL) SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0); +} + +DWORD MonthCal_HitTest(HWND hwnd, PMCHITTESTINFO pmchittest) { + return cast(DWORD) SendMessage(hwnd, MCM_HITTEST, 0, + cast(LPARAM) pmchittest); +} + +COLORREF MonthCal_SetColor(HWND hwnd, INT icolor, COLORREF clr) { + return cast(COLORREF) SendMessage(hwnd, MCM_SETCOLOR, cast(WPARAM) icolor, + cast(LPARAM) clr); +} + +BOOL MonthCal_SetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { + return cast(BOOL) SendMessage(hwnd, MCM_SETCURSEL, 0, + cast(LPARAM) lpsystime); +} + +BOOL MonthCal_SetDayState(HWND hwnd, INT imonths, LPMONTHDAYSTATE lpdatestatearray) { + return cast(BOOL) SendMessage(hwnd, MCM_SETDAYSTATE, cast(WPARAM) imonths, + cast(LPARAM) lpdatestatearray); +} + +DWORD MonthCal_SetFirstDayOfWeek(HWND hwnd, INT iday) { + return cast(DWORD) SendMessage(hwnd, MCM_SETFIRSTDAYOFWEEK, 0, + cast(LPARAM) iday); +} + +BOOL MonthCal_SetMaxSelCount(HWND hwnd, UINT imax) { + return cast(BOOL) SendMessage(hwnd, MCM_SETMAXSELCOUNT, + cast(WPARAM) imax, 0); +} + +INT MonthCal_SetMonthDelta(HWND hwnd, INT idelta) { + return cast(INT) SendMessage(hwnd, MCM_SETMONTHDELTA, cast(WPARAM) idelta, 0); +} + +BOOL MonthCal_SetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { + return cast(BOOL) SendMessage(hwnd, MCM_SETSELRANGE, 0, + cast(LPARAM) systimearray); +} + +void MonthCal_SetToday(HWND hwnd, LPSYSTEMTIME systime) { + SendMessage(hwnd, MCM_SETTODAY, 0, cast(LPARAM) systime); +} + +BOOL MonthCal_SetUnicodeFormat(HWND hwnd, BOOL unicode) { + return cast(BOOL) SendMessage(hwnd, MCM_SETUNICODEFORMAT, + cast(WPARAM) unicode, 0); +} + +BOOL MonthCal_SetRange(HWND w, DWORD f, LPSYSTEMTIME st) { + return cast(BOOL) SendMessage(w, MCM_SETRANGE, cast(WPARAM) f, + cast(LPARAM) st); +} + +extern (Windows) BOOL ShowHideMenuCtl(HWND, UINT_PTR, PINT); + +BOOL TabCtrl_GetItem(HWND w, int i, LPTCITEM p) { + return cast(BOOL) SendMessage(w, TCM_GETITEM, i, cast(LPARAM) p); +} + +BOOL TabCtrl_SetItem(HWND w, int i, LPTCITEM p) { + return cast(BOOL) SendMessage(w, TCM_SETITEM, i, cast(LPARAM) p); +} + +int TabCtrl_InsertItem(HWND w, int i, const(TC_ITEM)* p) { + return cast(int) SendMessage(w, TCM_INSERTITEM, i, cast(LPARAM) p); +} + +BOOL TabCtrl_DeleteItem(HWND w, int i) { + return cast(BOOL) SendMessage(w, TCM_DELETEITEM, i, 0); +} + +BOOL TabCtrl_DeleteAllItems(HWND w) { + return cast(BOOL) SendMessage(w, TCM_DELETEALLITEMS, 0, 0); +} + +BOOL TabCtrl_GetItemRect(HWND w, int i, LPRECT p) { + return cast(BOOL) SendMessage(w, TCM_GETITEMRECT, i, cast(LPARAM) p); +} + +int TabCtrl_GetCurSel(HWND w) { + return cast(int) SendMessage(w, TCM_GETCURSEL, 0, 0); +} + +int TabCtrl_SetCurSel(HWND w, int i) { + return cast(int) SendMessage(w, TCM_SETCURSEL, i, 0); +} + +int TabCtrl_HitTest(HWND w, LPTCHITTESTINFO p) { + return cast(int) SendMessage(w, TCM_HITTEST, 0, cast(LPARAM) p); +} + +BOOL TabCtrl_SetItemExtra(HWND w, int c) { + return cast(BOOL) SendMessage(w, TCM_SETITEMEXTRA, c, 0); +} + +int TabCtrl_AdjustRect(HWND w, BOOL b, LPRECT p) { + return cast(int) SendMessage(w, TCM_ADJUSTRECT, b, cast(LPARAM) p); +} + +DWORD TabCtrl_SetItemSize(HWND w, int x, int y) { + return cast(DWORD) SendMessage(w, TCM_SETITEMSIZE, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); +} + +void TabCtrl_RemoveImage(HWND w, int i) { + SendMessage(w, TCM_REMOVEIMAGE, i, 0); +} + +void TabCtrl_SetPadding(HWND w, int x, int y) { + SendMessage(w, TCM_SETPADDING, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); +} + +int TabCtrl_GetRowCount(HWND w) { + return cast(int) SendMessage(w, TCM_GETROWCOUNT, 0, 0); +} + +HWND TabCtrl_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, TCM_GETTOOLTIPS, 0, 0); +} + +void TabCtrl_SetToolTips(HWND w, HWND t) { + SendMessage(w, TCM_SETTOOLTIPS, cast(WPARAM) t, 0); +} + +int TabCtrl_GetCurFocus(HWND w) { + return cast(int) SendMessage(w, TCM_GETCURFOCUS, 0, 0); +} + +void TabCtrl_SetCurFocus(HWND w, int i) { + SendMessage(w, TCM_SETCURFOCUS, i, 0); +} + +HIMAGELIST TabCtrl_GetImageList(HWND w) { + return cast(HIMAGELIST) SendMessage(w, TCM_GETIMAGELIST, 0, 0); +} + +HIMAGELIST TabCtrl_SetImageList(HWND w, HIMAGELIST h) { + return cast(HIMAGELIST) SendMessage(w, TCM_SETIMAGELIST, 0, + cast(LPARAM) h); +} + +int TabCtrl_GetItemCount(HWND w) { + return cast(int) SendMessage(w, TCM_GETITEMCOUNT, 0, 0); +} + +extern (Windows) BOOL _TrackMouseEvent(LPTRACKMOUSEEVENT); + +HTREEITEM TreeView_InsertItem(HWND w, LPTVINSERTSTRUCT i) { + return cast(HTREEITEM) SendMessage(w, TVM_INSERTITEM, 0, cast(LPARAM) i); +} + +BOOL TreeView_DeleteItem(HWND w, HTREEITEM i) { + return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) i); +} + +BOOL TreeView_DeleteAllItems(HWND w) { + return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) TVI_ROOT); +} + +BOOL TreeView_Expand(HWND w, HTREEITEM i, UINT c) { + return cast(BOOL) SendMessage(w, TVM_EXPAND, c, cast(LPARAM) i); +} + +BOOL TreeView_GetItemRect(HWND w, HTREEITEM i, LPRECT p, BOOL c) { + *cast(HTREEITEM*) p = i; + return cast(BOOL) SendMessage(w, TVM_GETITEMRECT, c, cast(LPARAM) p); +} + +UINT TreeView_GetCount(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETCOUNT, 0, 0); +} + +UINT TreeView_GetIndent(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETINDENT, 0, 0); +} + +BOOL TreeView_SetIndent(HWND w, INT i) { + return cast(BOOL) SendMessage(w, TVM_SETINDENT, i, 0); +} + +HIMAGELIST TreeView_GetImageList(HWND w, INT i) { + return cast(HIMAGELIST) SendMessage(w, TVM_GETIMAGELIST, i, 0); +} + +HIMAGELIST TreeView_SetImageList(HWND w, HIMAGELIST h, INT i) { + return cast(HIMAGELIST) SendMessage(w, TVM_SETIMAGELIST, i, + cast(LPARAM) h); +} + +HTREEITEM TreeView_GetNextItem(HWND w, HTREEITEM i, UINT c) { + return cast(HTREEITEM) SendMessage(w, TVM_GETNEXTITEM, c, cast(LPARAM) i); +} + +HTREEITEM TreeView_GetChild(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_CHILD); +} + +HTREEITEM TreeView_GetNextSibling(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_NEXT); +} + +HTREEITEM TreeView_GetPrevSibling(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_PREVIOUS); +} + +HTREEITEM TreeView_GetParent(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_PARENT); +} + +HTREEITEM TreeView_GetFirstVisible(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_FIRSTVISIBLE); +} + +HTREEITEM TreeView_GetNextVisible(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_NEXTVISIBLE); +} + +HTREEITEM TreeView_GetPrevVisible(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_PREVIOUSVISIBLE); +} + +HTREEITEM TreeView_GetSelection(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_CARET); +} + +HTREEITEM TreeView_GetDropHilight(HTREEITEM w) { + return TreeView_GetNextItem(w, null, TVGN_DROPHILITE); +} + +HTREEITEM TreeView_GetRoot(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_ROOT); +} + +BOOL TreeView_Select(HWND w, HTREEITEM i, UINT c) { + return cast(BOOL) SendMessage(w, TVM_SELECTITEM, c, cast(LPARAM) i); +} + +BOOL TreeView_SelectItem(HWND w, HTREEITEM i) { + return TreeView_Select(w, i, TVGN_CARET); +} + +BOOL TreeView_SelectDropTarget(HWND w, HTREEITEM i) { + return TreeView_Select(w, i, TVGN_DROPHILITE); +} + +BOOL TreeView_SelectSetFirstVisible(HWND w, HTREEITEM i) { + return TreeView_Select(w, i, TVGN_FIRSTVISIBLE); +} + +BOOL TreeView_GetItem(HWND w, LPTVITEM i) { + return cast(BOOL) SendMessage(w, TVM_GETITEM, 0, cast(LPARAM) i); +} + +BOOL TreeView_SetItem(HWND w, const(TV_ITEM)* i) { + return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) i); +} + +HWND TreeView_EditLabel(HWND w, HTREEITEM i) { + return cast(HWND) SendMessage(w, TVM_EDITLABEL, 0, cast(LPARAM) i); +} + +HWND TreeView_GetEditControl(HWND w) { + return cast(HWND) SendMessage(w, TVM_GETEDITCONTROL, 0, 0); +} + +UINT TreeView_GetVisibleCount(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETVISIBLECOUNT, 0, 0); +} + +HTREEITEM TreeView_HitTest(HWND w, LPTVHITTESTINFO p) { + return cast(HTREEITEM) SendMessage(w, TVM_HITTEST, 0, cast(LPARAM) p); +} + +HIMAGELIST TreeView_CreateDragImage(HWND w, HTREEITEM i) { + return cast(HIMAGELIST) SendMessage(w, TVM_CREATEDRAGIMAGE, 0, + cast(LPARAM) i); +} + +BOOL TreeView_SortChildren(HWND w, HTREEITEM i, BOOL r) { + return cast(BOOL) SendMessage(w, TVM_SORTCHILDREN, r, cast(LPARAM) i); +} + +BOOL TreeView_EnsureVisible(HWND w, HTREEITEM i) { + return cast(BOOL) SendMessage(w, TVM_ENSUREVISIBLE, 0, cast(LPARAM) i); +} + +BOOL TreeView_SortChildrenCB(HWND w, LPTVSORTCB s, BOOL r) { + return cast(BOOL) SendMessage(w, TVM_SORTCHILDRENCB, r, cast(LPARAM) s); +} + +BOOL TreeView_EndEditLabelNow(HWND w, BOOL f) { + return cast(BOOL) SendMessage(w, TVM_ENDEDITLABELNOW, f, 0); +} + +BOOL TreeView_GetISearchString(HWND w, LPTSTR s) { + return cast(BOOL) SendMessage(w, TVM_GETISEARCHSTRING, 0, cast(LPARAM) s); +} + +static if (_WIN32_IE >= 0x300) { + DWORD ListView_ApproximateViewRect(HWND w, int iw, int ih, int i) { + return cast(DWORD) SendMessage(w, LVM_APPROXIMATEVIEWRECT, i, + MAKELPARAM(cast(ushort)iw, cast(ushort)ih)); + } + + DWORD ListView_SetExtendedListViewStyle(HWND w, DWORD s) { + return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, s); + } + + DWORD ListView_GetExtendedListViewStyle(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); + } + + BOOL ListView_SetColumnOrderArray(HWND w, int i, int* a) { + return cast(BOOL) SendMessage(w, LVM_SETCOLUMNORDERARRAY, + cast(WPARAM) i, cast(LPARAM) a); + } + + BOOL ListView_GetColumnOrderArray(HWND w, int i, int* a) { + return cast(BOOL) SendMessage(w, LVM_GETCOLUMNORDERARRAY, + cast(WPARAM) i, cast(LPARAM) a); + } + + HWND ListView_GetHeader(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETHEADER, 0, 0); + } + + HCURSOR ListView_GetHotCursor(HWND w) { + return cast(HCURSOR) SendMessage(w, LVM_GETHOTCURSOR, 0, 0); + } + + INT ListView_GetHotItem(HWND w) { + return cast(INT) SendMessage(w, LVM_GETHOTITEM, 0, 0); + } + + BOOL ListView_GetSubItemRect(HWND w, int i, int isi, int c, LPRECT p) { + return cast(BOOL) SendMessage(w, LVM_GETSUBITEMRECT, i, + p ? (p.left = c, p.top = isi, cast(LPARAM) p) : 0); + } + + HCURSOR ListView_SetHotCursor(HWND w, HCURSOR c) { + return cast(HCURSOR) SendMessage(w, LVM_SETHOTCURSOR, 0, + cast(LPARAM) c); + } + + INT ListView_SetHotItem(HWND w, INT i) { + return cast(INT) SendMessage(w, LVM_SETHOTITEM, cast(WPARAM) i, 0); + } + + DWORD ListView_SetIconSpacing(HWND w, int x, int y) { + return cast(DWORD) SendMessage(w, LVM_SETICONSPACING, 0, + MAKELONG(cast(ushort)x, cast(ushort)y)); + } + + INT ListView_SubItemHitTest(HWND w, LPLVHITTESTINFO p) { + return cast(INT) SendMessage(w, LVM_SUBITEMHITTEST, 0, cast(LPARAM) p); + } + + BOOL ListView_SetItemCountEx(HWND w, int i, DWORD f) { + return cast(BOOL) SendMessage(w, LVM_SETITEMCOUNT, i, cast(LPARAM) f); + } + + extern (Windows) { + WINBOOL ImageList_SetImageCount(HIMAGELIST, UINT); + WINBOOL ImageList_Copy(HIMAGELIST, int, HIMAGELIST, int, UINT); + WINBOOL ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*); + } + + int TabCtrl_SetMinTabWidth(HWND hwnd, int x) { + return cast(int) SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x); + } + + VOID TabCtrl_DeselectAll(HWND hwnd, UINT fExcludeFocus) { + SendMessage(hwnd, TCM_DESELECTALL, fExcludeFocus, 0); + } + + HWND TreeView_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, TVM_GETTOOLTIPS, 0, 0); + } + + HWND TreeView_SetToolTips(HWND w, HWND wt) { + return cast(HWND) SendMessage(w, TVM_SETTOOLTIPS, cast(WPARAM) wt, 0); + } +} + +static if (_WIN32_IE >= 0x400) { + BOOL ListView_GetBkImage(HWND h, LPLVBKIMAGE plvbki) { + return cast(BOOL) SendMessage(h, LVM_GETBKIMAGE, 0, + cast(LPARAM) plvbki); + } + + BOOL ListView_SetBkImage(HWND h, LPLVBKIMAGE plvbki) { + return cast(BOOL) SendMessage(h, LVM_SETBKIMAGE, 0, + cast(LPARAM) plvbki); + } + + DWORD ListView_SetExtendedListViewStyleEx(HWND w, DWORD m, DWORD s) { + return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, m, s); + } + + VOID ListView_SetWorkAreas(HWND w, INT n, LPRECT r) { + SendMessage(w, LVM_SETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); + } + + VOID ListView_GetWorkAreas(HWND w, INT n, LPRECT r) { + SendMessage(w, LVM_GETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); + } + + BOOL ListView_GetNumberOfWorkAreas(HWND w, LPUINT n) { + return cast(BOOL) SendMessage(w, LVM_GETNUMBEROFWORKAREAS, 0, + cast(LPARAM) n); + } + + DWORD ListView_SetHoverTime(HWND w, DWORD t) { + return cast(DWORD) SendMessage(w, LVM_SETHOVERTIME, 0, + cast(LPARAM) t); + } + + DWORD ListView_GetHoverTime(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETHOVERTIME, 0, 0); + } + + INT ListView_GetSelectionMark(HWND w) { + return cast(INT) SendMessage(w, LVM_GETSELECTIONMARK, 0, 0); + } + + INT ListView_SetSelectionMark(HWND w, INT i) { + return cast(INT) SendMessage(w, LVM_SETSELECTIONMARK, 0, cast(LPARAM) i); + } + + HWND ListView_SetToolTips(HWND w, HWND n) { + return cast(HWND) SendMessage(w, LVM_SETTOOLTIPS, cast(WPARAM) n, 0); + } + + HWND ListView_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETTOOLTIPS, 0, 0); + } + + BOOL ListView_SetUnicodeFormat(HWND w, BOOL f) { + return cast(BOOL) SendMessage(w, LVM_SETUNICODEFORMAT, + cast(WPARAM) f, 0); + } + + BOOL ListView_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, LVM_GETUNICODEFORMAT, 0, 0); + } + + BOOL TabCtrl_HighlightItem(HWND hwnd, INT i, WORD fHighlight) { + return cast(BOOL) SendMessage(hwnd, TCM_HIGHLIGHTITEM, + cast(WPARAM) i, cast(LPARAM) MAKELONG(fHighlight, 0)); + } + + DWORD TabCtrl_SetExtendedStyle(HWND hwnd, DWORD dw) { + return cast(DWORD) SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw); + } + + DWORD TabCtrl_GetExtendedStyle(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0); + } + + BOOL TabCtrl_SetUnicodeFormat(HWND hwnd, HWND fUnicode) { + return cast(BOOL) SendMessage(hwnd, TCM_SETUNICODEFORMAT, + cast(WPARAM) fUnicode, 0); + } + + BOOL TabCtrl_GetUnicodeFormat(HWND hwnd) { + return cast(BOOL) SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0); + } + + COLORREF TreeView_GetBkColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETBKCOLOR, 0, 0); + } + + COLORREF TreeView_GetInsertMarkColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETINSERTMARKCOLOR, 0, 0); + } + + int TreeView_GetItemHeight(HWND w) { + return cast(int) SendMessage(w, TVM_GETITEMHEIGHT, 0, 0); + } + + UINT TreeView_GetScrollTime(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETSCROLLTIME, 0, 0); + } + + COLORREF TreeView_GetTextColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETTEXTCOLOR, 0, 0); + } + + COLORREF TreeView_SetBkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETBKCOLOR, 0, + cast(LPARAM) c); + } + + COLORREF TreeView_SetInsertMarkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETINSERTMARKCOLOR, 0, + cast(LPARAM) c); + } + + int TreeView_SetItemHeight(HWND w, SHORT h) { + return cast(int) SendMessage(w, TVM_SETITEMHEIGHT, cast(WPARAM) h, 0); + } + + UINT TreeView_SetScrollTime(HWND w, UINT t) { + return cast(UINT) SendMessage(w, TVM_SETSCROLLTIME, cast(WPARAM) t, 0); + } + + COLORREF TreeView_SetTextColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETTEXTCOLOR, 0, + cast(LPARAM) c); + } + + BOOL TreeView_SetInsertMark(HWND w, HTREEITEM i, BOOL a) { + return cast(BOOL) SendMessage(w, TVM_SETINSERTMARK, cast(WPARAM) a, + cast(LPARAM) i); + } + + BOOL TreeView_SetUnicodeFormat(HWND w, BOOL u) { + return cast(BOOL) SendMessage(w, TVM_SETUNICODEFORMAT, + cast(WPARAM) u, 0); + } + + BOOL TreeView_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, TVM_GETUNICODEFORMAT, 0, 0); + } + + HTREEITEM TreeView_GetLastVisible(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_LASTVISIBLE); + } +} + +static if (_WIN32_IE >= 0x500) { + UINT TreeView_GetItemState(HWND w, HTREEITEM i, UINT m) { + return cast(UINT) SendMessage(w, TVM_GETITEMSTATE, cast(WPARAM) i, + cast(LPARAM) m); + } + + BOOL TreeView_SetItemState(HWND w, HTREEITEM i, UINT d, UINT m) { + TVITEM _tvi; + _tvi.mask = TVIF_STATE; + _tvi.hItem = i; + _tvi.stateMask = m; + _tvi.state = d; + return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) &_tvi); + } +} + + +//#ifdef _WIN32_WCE // these are PPC only +/+ +extern (Windows) { + HWND CommandBar_Create(HINSTANCE, HWND, int); + BOOL CommandBar_Show(HWND, BOOL); + int CommandBar_AddBitmap(HWND, HINSTANCE, int, int, int, int); + HWND CommandBar_InsertComboBox(HWND, HINSTANCE, int, UINT, WORD, WORD); + BOOL CommandBar_InsertMenubar(HWND, HINSTANCE, WORD, WORD ); + BOOL CommandBar_InsertMenubarEx(HWND, HINSTANCE, LPTSTR, WORD); + BOOL CommandBar_DrawMenuBar(HWND, WORD); + HMENU CommandBar_GetMenu(HWND, WORD); + BOOL CommandBar_AddAdornments(HWND, DWORD, DWORD); + int CommandBar_Height(HWND hwndCB); +} + +// MinGW: These two are not in the DLL +void CommandBar_InsertButton(HWND hwnd, int i, LPTBBUTTON lptbbutton) { + SendMessage(hwnd, TB_INSERTBUTTON, i, lptbbutton); +} +alias DestroyWindow CommandBar_Destroy; ++/ +//#endif // _WIN32_WCE + + +static if (_WIN32_WINNT >= 0x501) { + struct EDITBALLOONTIP + { + DWORD cbStruct; + LPCWSTR pszTitle; + LPCWSTR pszText; + INT ttiIcon; + } + alias EDITBALLOONTIP* PEDITBALLOONTIP; + + const EM_SETCUEBANNER = ECM_FIRST + 1; + const EM_GETCUEBANNER = ECM_FIRST + 2; + const EM_SHOWBALLOONTIP = ECM_FIRST + 3; + const EM_HIDEBALLOONTIP = ECM_FIRST + 4; +} + +static if (_WIN32_WINNT >= 0x600) { + const EM_SETHILITE = ECM_FIRST + 5; + const EM_GETHILITE = ECM_FIRST + 6; +} diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index c9144a053d..95d58c829e 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -1,715 +1,715 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.12 - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_commdlg.d) - */ -module core.sys.windows.commdlg; -pragma(lib, "comdlg32"); - -private import core.sys.windows.w32api; -import core.sys.windows.windef, core.sys.windows.winuser; -import core.sys.windows.wingdi; // for LPLOGFONTA - -const TCHAR[] - LBSELCHSTRING = "commdlg_LBSelChangedNotify", - SHAREVISTRING = "commdlg_ShareViolation", - FILEOKSTRING = "commdlg_FileNameOK", - COLOROKSTRING = "commdlg_ColorOK", - SETRGBSTRING = "commdlg_SetRGBColor", - HELPMSGSTRING = "commdlg_help", - FINDMSGSTRING = "commdlg_FindReplace"; - -enum : UINT { - CDN_FIRST = -601, // also in commctrl.h - CDN_LAST = -699, - CDN_INITDONE = CDN_FIRST, - CDN_SELCHANGE = CDN_FIRST - 1, - CDN_FOLDERCHANGE = CDN_FIRST - 2, - CDN_SHAREVIOLATION = CDN_FIRST - 3, - CDN_HELP = CDN_FIRST - 4, - CDN_FILEOK = CDN_FIRST - 5, - CDN_TYPECHANGE = CDN_FIRST - 6, -} - -//static if(_WIN32_WINNT >= 0x500) { - enum : UINT { - CDN_INCLUDEITEM = CDN_FIRST - 7, - } -//} - -enum : UINT { - CDM_FIRST = WM_USER + 100, - CDM_LAST = WM_USER + 200, - CDM_GETSPEC = CDM_FIRST, - CDM_GETFILEPATH, - CDM_GETFOLDERPATH, - CDM_GETFOLDERIDLIST, - CDM_SETCONTROLTEXT, - CDM_HIDECONTROL, - CDM_SETDEFEXT // = CDM_FIRST + 6 -} - -// flags for ChooseColor -enum : DWORD { - CC_RGBINIT = 0x0001, - CC_FULLOPEN = 0x0002, - CC_PREVENTFULLOPEN = 0x0004, - CC_SHOWHELP = 0x0008, - CC_ENABLEHOOK = 0x0010, - CC_ENABLETEMPLATE = 0x0020, - CC_ENABLETEMPLATEHANDLE = 0x0040, - CC_SOLIDCOLOR = 0x0080, - CC_ANYCOLOR = 0x0100 -} - -// flags for ChooseFont -enum : DWORD { - CF_SCREENFONTS = 0x00000001, - CF_PRINTERFONTS = 0x00000002, - CF_BOTH = 0x00000003, - CF_SHOWHELP = 0x00000004, - CF_ENABLEHOOK = 0x00000008, - CF_ENABLETEMPLATE = 0x00000010, - CF_ENABLETEMPLATEHANDLE = 0x00000020, - CF_INITTOLOGFONTSTRUCT = 0x00000040, - CF_USESTYLE = 0x00000080, - CF_EFFECTS = 0x00000100, - CF_APPLY = 0x00000200, - CF_ANSIONLY = 0x00000400, - CF_SCRIPTSONLY = CF_ANSIONLY, - CF_NOVECTORFONTS = 0x00000800, - CF_NOOEMFONTS = 0x00000800, - CF_NOSIMULATIONS = 0x00001000, - CF_LIMITSIZE = 0x00002000, - CF_FIXEDPITCHONLY = 0x00004000, - CF_WYSIWYG = 0x00008000, - CF_FORCEFONTEXIST = 0x00010000, - CF_SCALABLEONLY = 0x00020000, - CF_TTONLY = 0x00040000, - CF_NOFACESEL = 0x00080000, - CF_NOSTYLESEL = 0x00100000, - CF_NOSIZESEL = 0x00200000, - CF_SELECTSCRIPT = 0x00400000, - CF_NOSCRIPTSEL = 0x00800000, - CF_NOVERTFONTS = 0x01000000 -} - -// Font type for ChooseFont -enum : WORD { - BOLD_FONTTYPE = 0x0100, - ITALIC_FONTTYPE = 0x0200, - REGULAR_FONTTYPE = 0x0400, - SCREEN_FONTTYPE = 0x2000, - PRINTER_FONTTYPE = 0x4000, - SIMULATED_FONTTYPE = 0x8000 -} - -enum : UINT { - WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1, - WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101, - WM_CHOOSEFONT_SETFLAGS = WM_USER + 102 -} - -// flags for OpenFileName -enum : DWORD { - OFN_SHAREWARN = 0, - OFN_SHARENOWARN = 0x000001, - OFN_READONLY = 0x000001, - OFN_SHAREFALLTHROUGH = 0x000002, - OFN_OVERWRITEPROMPT = 0x000002, - OFN_HIDEREADONLY = 0x000004, - OFN_NOCHANGEDIR = 0x000008, - OFN_SHOWHELP = 0x000010, - OFN_ENABLEHOOK = 0x000020, - OFN_ENABLETEMPLATE = 0x000040, - OFN_ENABLETEMPLATEHANDLE = 0x000080, - OFN_NOVALIDATE = 0x000100, - OFN_ALLOWMULTISELECT = 0x000200, - OFN_EXTENSIONDIFFERENT = 0x000400, - OFN_PATHMUSTEXIST = 0x000800, - OFN_FILEMUSTEXIST = 0x001000, - OFN_CREATEPROMPT = 0x002000, - OFN_SHAREAWARE = 0x004000, - OFN_NOREADONLYRETURN = 0x008000, - OFN_NOTESTFILECREATE = 0x010000, - OFN_NONETWORKBUTTON = 0x020000, - OFN_NOLONGNAMES = 0x040000, - OFN_EXPLORER = 0x080000, - OFN_NODEREFERENCELINKS = 0x100000, - OFN_LONGNAMES = 0x200000, - OFN_ENABLESIZING = 0x800000 -} - -enum : DWORD { - FR_DOWN = 0x00000001, - FR_WHOLEWORD = 0x00000002, - FR_MATCHCASE = 0x00000004, - FR_FINDNEXT = 0x00000008, - FR_REPLACE = 0x00000010, - FR_REPLACEALL = 0x00000020, - FR_DIALOGTERM = 0x00000040, - FR_SHOWHELP = 0x00000080, - FR_ENABLEHOOK = 0x00000100, - FR_ENABLETEMPLATE = 0x00000200, - FR_NOUPDOWN = 0x00000400, - FR_NOMATCHCASE = 0x00000800, - FR_NOWHOLEWORD = 0x00001000, - FR_ENABLETEMPLATEHANDLE = 0x00002000, - FR_HIDEUPDOWN = 0x00004000, - FR_HIDEMATCHCASE = 0x00008000, - FR_HIDEWHOLEWORD = 0x00010000, - FR_MATCHDIAC = 0x20000000, - FR_MATCHKASHIDA = 0x40000000, - FR_MATCHALEFHAMZA = 0x80000000 -} - -enum : DWORD { - PD_ALLPAGES = 0, - PD_SELECTION = 0x000001, - PD_PAGENUMS = 0x000002, - PD_NOSELECTION = 0x000004, - PD_NOPAGENUMS = 0x000008, - PD_COLLATE = 0x000010, - PD_PRINTTOFILE = 0x000020, - PD_PRINTSETUP = 0x000040, - PD_NOWARNING = 0x000080, - PD_RETURNDC = 0x000100, - PD_RETURNIC = 0x000200, - PD_RETURNDEFAULT = 0x000400, - PD_SHOWHELP = 0x000800, - PD_ENABLEPRINTHOOK = 0x001000, - PD_ENABLESETUPHOOK = 0x002000, - PD_ENABLEPRINTTEMPLATE = 0x004000, - PD_ENABLESETUPTEMPLATE = 0x008000, - PD_ENABLEPRINTTEMPLATEHANDLE = 0x010000, - PD_ENABLESETUPTEMPLATEHANDLE = 0x020000, - PD_USEDEVMODECOPIES = 0x040000, - PD_USEDEVMODECOPIESANDCOLLATE = 0x040000, - PD_DISABLEPRINTTOFILE = 0x080000, - PD_HIDEPRINTTOFILE = 0x100000, - PD_NONETWORKBUTTON = 0x200000 -} - -//static if (_WIN32_WINNT >= 0x500) { - enum : DWORD { - PD_CURRENTPAGE = 0x00400000, - PD_NOCURRENTPAGE = 0x00800000, - PD_EXCLUSIONFLAGS = 0x01000000, - PD_USELARGETEMPLATE = 0x10000000, - } - - enum : HRESULT { - PD_RESULT_CANCEL, - PD_RESULT_PRINT, - PD_RESULT_APPLY - } - - const DWORD START_PAGE_GENERAL = 0xFFFFFFFF; -//} - -enum { - PSD_DEFAULTMINMARGINS = 0, - PSD_INWININIINTLMEASURE = 0, - PSD_MINMARGINS = 0x000001, - PSD_MARGINS = 0x000002, - PSD_INTHOUSANDTHSOFINCHES = 0x000004, - PSD_INHUNDREDTHSOFMILLIMETERS = 0x000008, - PSD_DISABLEMARGINS = 0x000010, - PSD_DISABLEPRINTER = 0x000020, - PSD_NOWARNING = 0x000080, - PSD_DISABLEORIENTATION = 0x000100, - PSD_DISABLEPAPER = 0x000200, - PSD_RETURNDEFAULT = 0x000400, - PSD_SHOWHELP = 0x000800, - PSD_ENABLEPAGESETUPHOOK = 0x002000, - PSD_ENABLEPAGESETUPTEMPLATE = 0x008000, - PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x020000, - PSD_ENABLEPAGEPAINTHOOK = 0x040000, - PSD_DISABLEPAGEPAINTING = 0x080000 -} - -enum : UINT { - WM_PSD_PAGESETUPDLG = WM_USER, - WM_PSD_FULLPAGERECT, - WM_PSD_MINMARGINRECT, - WM_PSD_MARGINRECT, - WM_PSD_GREEKTEXTRECT, - WM_PSD_ENVSTAMPRECT, - WM_PSD_YAFULLPAGERECT // = WM_USER + 6 -} - -enum : int { - CD_LBSELNOITEMS = -1, - CD_LBSELCHANGE, - CD_LBSELSUB, - CD_LBSELADD -} - -const WORD DN_DEFAULTPRN = 1; - -/+ -// Both MinGW and the windows docs indicate that there are macros for the send messages -// the controls. These seem to be totally unnecessary -- and at least one of MinGW or -// Windows Docs is buggy! - -int CommDlg_OpenSave_GetSpec(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETSPEC, wParam, lParam); -} - -int CommDlg_OpenSave_GetFilePath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETFILEPATH, wParam, lParam); -} - -int CommDlg_OpenSave_GetFolderPath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETFOLDERPATH, wParam, lParam); -} - -int CommDlg_OpenSave_GetFolderIDList(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETFOLDERIDLIST, wParam, lParam); -} - -void CommDlg_OpenSave_SetControlText(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_SETCONTROLTEXT, wParam, lParam); -} - -void CommDlg_OpenSave_HideControl(HWND hWndControl, WPARAM wParam) { - return SendMessage(hWndControl, CDM_HIDECONTROL, wParam, 0); -} - -void CommDlg_OpenSave_SetDefExt(HWND hWndControl, TCHAR* lparam) { - return SendMessage(hWndControl, CDM_SETCONTROLTEXT, 0, cast(LPARAM)lParam); -} - -// These aliases seem even more unnecessary -alias CommDlg_OpenSave_GetSpec - CommDlg_OpenSave_GetSpecA, CommDlg_OpenSave_GetSpecW; -alias CommDlg_OpenSave_GetFilePath - CommDlg_OpenSave_GetFilePathA, CommDlg_OpenSave_GetFilePathW; -alias CommDlg_OpenSave_GetFolderPath - CommDlg_OpenSave_GetFolderPathA, CommDlg_OpenSave_GetFolderPathW; -+/ - -// Callbacks. -extern(Windows) { -alias UINT_PTR function (HWND, UINT, WPARAM, LPARAM) - LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC, - LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; -} - -align (1): - -struct CHOOSECOLORA { - DWORD lStructSize = CHOOSECOLORA.sizeof; - HWND hwndOwner; - HWND hInstance; - COLORREF rgbResult; - COLORREF* lpCustColors; - DWORD Flags; - LPARAM lCustData; - LPCCHOOKPROC lpfnHook; - LPCSTR lpTemplateName; -} -alias CHOOSECOLORA* LPCHOOSECOLORA; - -struct CHOOSECOLORW { - DWORD lStructSize = CHOOSECOLORW.sizeof; - HWND hwndOwner; - HWND hInstance; - COLORREF rgbResult; - COLORREF* lpCustColors; - DWORD Flags; - LPARAM lCustData; - LPCCHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; -} -alias CHOOSECOLORW* LPCHOOSECOLORW; - -align (4) struct CHOOSEFONTA { - DWORD lStructSize = CHOOSEFONTA.sizeof; - HWND hwndOwner; - HDC hDC; - LPLOGFONTA lpLogFont; - INT iPointSize; - DWORD Flags; - DWORD rgbColors; - LPARAM lCustData; - LPCFHOOKPROC lpfnHook; - LPCSTR lpTemplateName; - HINSTANCE hInstance; - LPSTR lpszStyle; - WORD nFontType; - //WORD ___MISSING_ALIGNMENT__; - INT nSizeMin; - INT nSizeMax; -} -alias CHOOSEFONTA* LPCHOOSEFONTA; - -align (4) struct CHOOSEFONTW { - DWORD lStructSize = CHOOSEFONTW.sizeof; - HWND hwndOwner; - HDC hDC; - LPLOGFONTW lpLogFont; - INT iPointSize; - DWORD Flags; - DWORD rgbColors; - LPARAM lCustData; - LPCFHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; - HINSTANCE hInstance; - LPWSTR lpszStyle; - WORD nFontType; - //WORD ___MISSING_ALIGNMENT__; - INT nSizeMin; - INT nSizeMax; -} -alias CHOOSEFONTW* LPCHOOSEFONTW; - -struct DEVNAMES { - WORD wDriverOffset; - WORD wDeviceOffset; - WORD wOutputOffset; - WORD wDefault; -} -alias DEVNAMES* LPDEVNAMES; - -struct FINDREPLACEA { - DWORD lStructSize = FINDREPLACEA.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - DWORD Flags; - LPSTR lpstrFindWhat; - LPSTR lpstrReplaceWith; - WORD wFindWhatLen; - WORD wReplaceWithLen; - LPARAM lCustData; - LPFRHOOKPROC lpfnHook; - LPCSTR lpTemplateName; -} -alias FINDREPLACEA* LPFINDREPLACEA; - -struct FINDREPLACEW { - DWORD lStructSize = FINDREPLACEW.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - DWORD Flags; - LPWSTR lpstrFindWhat; - LPWSTR lpstrReplaceWith; - WORD wFindWhatLen; - WORD wReplaceWithLen; - LPARAM lCustData; - LPFRHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; -} -alias FINDREPLACEW* LPFINDREPLACEW; - -struct OPENFILENAMEA { - DWORD lStructSize = OPENFILENAMEA.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - LPCSTR lpstrFilter; - LPSTR lpstrCustomFilter; - DWORD nMaxCustFilter; - DWORD nFilterIndex; - LPSTR lpstrFile; - DWORD nMaxFile; - LPSTR lpstrFileTitle; - DWORD nMaxFileTitle; - LPCSTR lpstrInitialDir; - LPCSTR lpstrTitle; - DWORD Flags; - WORD nFileOffset; - WORD nFileExtension; - LPCSTR lpstrDefExt; - DWORD lCustData; - LPOFNHOOKPROC lpfnHook; - LPCSTR lpTemplateName; - - //static if (_WIN32_WINNT >= 0x500) { - void *pvReserved; - DWORD dwReserved; - DWORD FlagsEx; - //} -} -alias OPENFILENAMEA* LPOPENFILENAMEA; - -struct OPENFILENAMEW { - DWORD lStructSize = OPENFILENAMEW.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - LPCWSTR lpstrFilter; - LPWSTR lpstrCustomFilter; - DWORD nMaxCustFilter; - DWORD nFilterIndex; - LPWSTR lpstrFile; - DWORD nMaxFile; - LPWSTR lpstrFileTitle; - DWORD nMaxFileTitle; - LPCWSTR lpstrInitialDir; - LPCWSTR lpstrTitle; - DWORD Flags; - WORD nFileOffset; - WORD nFileExtension; - LPCWSTR lpstrDefExt; - DWORD lCustData; - LPOFNHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; - - //static if (_WIN32_WINNT >= 0x500) { - void *pvReserved; - DWORD dwReserved; - DWORD FlagsEx; - //} -} -alias OPENFILENAMEW* LPOPENFILENAMEW; - -const size_t OPENFILENAME_SIZE_VERSION_400 = 76; - -struct OFNOTIFYA { - NMHDR hdr; - LPOPENFILENAMEA lpOFN; - LPSTR pszFile; -} -alias OFNOTIFYA* LPOFNOTIFYA; - -struct OFNOTIFYW { - NMHDR hdr; - LPOPENFILENAMEW lpOFN; - LPWSTR pszFile; -} -alias OFNOTIFYW* LPOFNOTIFYW; - -struct PAGESETUPDLGA { - DWORD lStructSize = PAGESETUPDLGA.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - DWORD Flags; - POINT ptPaperSize; - RECT rtMinMargin; - RECT rtMargin; - HINSTANCE hInstance; - LPARAM lCustData; - LPPAGESETUPHOOK lpfnPageSetupHook; - LPPAGEPAINTHOOK lpfnPagePaintHook; - LPCSTR lpPageSetupTemplateName; - HGLOBAL hPageSetupTemplate; -} -alias PAGESETUPDLGA* LPPAGESETUPDLGA; - -struct PAGESETUPDLGW { - DWORD lStructSize = PAGESETUPDLGW.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - DWORD Flags; - POINT ptPaperSize; - RECT rtMinMargin; - RECT rtMargin; - HINSTANCE hInstance; - LPARAM lCustData; - LPPAGESETUPHOOK lpfnPageSetupHook; - LPPAGEPAINTHOOK lpfnPagePaintHook; - LPCWSTR lpPageSetupTemplateName; - HGLOBAL hPageSetupTemplate; -} -alias PAGESETUPDLGW* LPPAGESETUPDLGW; - -struct PRINTDLGA { - DWORD lStructSize = PRINTDLGA.sizeof; - HWND hwndOwner; - HANDLE hDevMode; - HANDLE hDevNames; - HDC hDC; - DWORD Flags; - WORD nFromPage; - WORD nToPage; - WORD nMinPage; - WORD nMaxPage; - WORD nCopies; - HINSTANCE hInstance; - DWORD lCustData; - LPPRINTHOOKPROC lpfnPrintHook; - LPSETUPHOOKPROC lpfnSetupHook; - LPCSTR lpPrintTemplateName; - LPCSTR lpSetupTemplateName; - HANDLE hPrintTemplate; - HANDLE hSetupTemplate; -} -alias PRINTDLGA* LPPRINTDLGA; - -struct PRINTDLGW { - DWORD lStructSize = PRINTDLGW.sizeof; - HWND hwndOwner; - HANDLE hDevMode; - HANDLE hDevNames; - HDC hDC; - DWORD Flags; - WORD nFromPage; - WORD nToPage; - WORD nMinPage; - WORD nMaxPage; - WORD nCopies; - HINSTANCE hInstance; - DWORD lCustData; - LPPRINTHOOKPROC lpfnPrintHook; - LPSETUPHOOKPROC lpfnSetupHook; - LPCWSTR lpPrintTemplateName; - LPCWSTR lpSetupTemplateName; - HANDLE hPrintTemplate; - HANDLE hSetupTemplate; -} -alias PRINTDLGW* LPPRINTDLGW; - -//static if (_WIN32_WINNT >= 0x500) { - import core.sys.windows.unknwn; // for LPUNKNOWN - import core.sys.windows.prsht; // for HPROPSHEETPAGE - - struct PRINTPAGERANGE { - DWORD nFromPage; - DWORD nToPage; - } - alias PRINTPAGERANGE* LPPRINTPAGERANGE; - - struct PRINTDLGEXA { - DWORD lStructSize = PRINTDLGEXA.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - HDC hDC; - DWORD Flags; - DWORD Flags2; - DWORD ExclusionFlags; - DWORD nPageRanges; - DWORD nMaxPageRanges; - LPPRINTPAGERANGE lpPageRanges; - DWORD nMinPage; - DWORD nMaxPage; - DWORD nCopies; - HINSTANCE hInstance; - LPCSTR lpPrintTemplateName; - LPUNKNOWN lpCallback; - DWORD nPropertyPages; - HPROPSHEETPAGE* lphPropertyPages; - DWORD nStartPage; - DWORD dwResultAction; - } - alias PRINTDLGEXA* LPPRINTDLGEXA; - - struct PRINTDLGEXW { - DWORD lStructSize = PRINTDLGEXW.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - HDC hDC; - DWORD Flags; - DWORD Flags2; - DWORD ExclusionFlags; - DWORD nPageRanges; - DWORD nMaxPageRanges; - LPPRINTPAGERANGE lpPageRanges; - DWORD nMinPage; - DWORD nMaxPage; - DWORD nCopies; - HINSTANCE hInstance; - LPCWSTR lpPrintTemplateName; - LPUNKNOWN lpCallback; - DWORD nPropertyPages; - HPROPSHEETPAGE* lphPropertyPages; - DWORD nStartPage; - DWORD dwResultAction; - } - alias PRINTDLGEXW* LPPRINTDLGEXW; - -//} // _WIN32_WINNT >= 0x500 - -extern (Windows) { - BOOL ChooseColorA(LPCHOOSECOLORA); - BOOL ChooseColorW(LPCHOOSECOLORW); - BOOL ChooseFontA(LPCHOOSEFONTA); - BOOL ChooseFontW(LPCHOOSEFONTW); - DWORD CommDlgExtendedError(); - HWND FindTextA(LPFINDREPLACEA); - HWND FindTextW(LPFINDREPLACEW); - short GetFileTitleA(LPCSTR, LPSTR, WORD); - short GetFileTitleW(LPCWSTR, LPWSTR, WORD); - BOOL GetOpenFileNameA(LPOPENFILENAMEA); - BOOL GetOpenFileNameW(LPOPENFILENAMEW); - BOOL GetSaveFileNameA(LPOPENFILENAMEA); - BOOL GetSaveFileNameW(LPOPENFILENAMEW); - BOOL PageSetupDlgA(LPPAGESETUPDLGA); - BOOL PageSetupDlgW(LPPAGESETUPDLGW); - BOOL PrintDlgA(LPPRINTDLGA); - BOOL PrintDlgW(LPPRINTDLGW); - HWND ReplaceTextA(LPFINDREPLACEA); - HWND ReplaceTextW(LPFINDREPLACEW); - - //static if (_WIN32_WINNT >= 0x500) { - HRESULT PrintDlgExA(LPPRINTDLGEXA); - HRESULT PrintDlgExW(LPPRINTDLGEXW); - //} -} - -version (Unicode) { - alias CHOOSECOLORW CHOOSECOLOR; - alias CHOOSEFONTW CHOOSEFONT; - alias FINDREPLACEW FINDREPLACE; - alias OPENFILENAMEW OPENFILENAME; - alias OFNOTIFYW OFNOTIFY; - alias PAGESETUPDLGW PAGESETUPDLG; - alias PRINTDLGW PRINTDLG; - - alias ChooseColorW ChooseColor; - alias ChooseFontW ChooseFont; - alias FindTextW FindText; - alias GetFileTitleW GetFileTitle; - alias GetOpenFileNameW GetOpenFileName; - alias GetSaveFileNameW GetSaveFileName; - alias PageSetupDlgW PageSetupDlg; - alias PrintDlgW PrintDlg; - alias ReplaceTextW ReplaceText; - - //static if (_WIN32_WINNT >= 0x500) { - alias PRINTDLGEXW PRINTDLGEX; - alias PrintDlgExW PrintDlgEx; - //} - -} else { // UNICODE - - alias CHOOSECOLORA CHOOSECOLOR; - alias CHOOSEFONTA CHOOSEFONT; - alias FINDREPLACEA FINDREPLACE; - alias OPENFILENAMEA OPENFILENAME; - alias OFNOTIFYA OFNOTIFY; - alias PAGESETUPDLGA PAGESETUPDLG; - alias PRINTDLGA PRINTDLG; - - alias ChooseColorA ChooseColor; - alias ChooseFontA ChooseFont; - alias FindTextA FindText; - alias GetFileTitleA GetFileTitle; - alias GetOpenFileNameA GetOpenFileName; - alias GetSaveFileNameA GetSaveFileName; - alias PageSetupDlgA PageSetupDlg; - alias PrintDlgA PrintDlg; - alias ReplaceTextA ReplaceText; - - //static if (_WIN32_WINNT >= 0x500) { - alias PRINTDLGEXA PRINTDLGEX; - alias PrintDlgExA PrintDlgEx; - //} - -} // UNICODE - -alias CHOOSECOLOR* LPCHOOSECOLOR; -alias CHOOSEFONT* LPCHOOSEFONT; -alias FINDREPLACE* LPFINDREPLACE; -alias OPENFILENAME* LPOPENFILENAME; -alias OFNOTIFY* LPOFNOTIFY; -alias PAGESETUPDLG* LPPAGESETUPDLG; -alias PRINTDLG* LPPRINTDLG; -//static if (_WIN32_WINNT >= 0x500) { - alias PRINTDLGEX* LPPRINTDLGEX; -//} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.12 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_commdlg.d) + */ +module core.sys.windows.commdlg; +pragma(lib, "comdlg32"); + +private import core.sys.windows.w32api; +import core.sys.windows.windef, core.sys.windows.winuser; +import core.sys.windows.wingdi; // for LPLOGFONTA + +const TCHAR[] + LBSELCHSTRING = "commdlg_LBSelChangedNotify", + SHAREVISTRING = "commdlg_ShareViolation", + FILEOKSTRING = "commdlg_FileNameOK", + COLOROKSTRING = "commdlg_ColorOK", + SETRGBSTRING = "commdlg_SetRGBColor", + HELPMSGSTRING = "commdlg_help", + FINDMSGSTRING = "commdlg_FindReplace"; + +enum : UINT { + CDN_FIRST = -601, // also in commctrl.h + CDN_LAST = -699, + CDN_INITDONE = CDN_FIRST, + CDN_SELCHANGE = CDN_FIRST - 1, + CDN_FOLDERCHANGE = CDN_FIRST - 2, + CDN_SHAREVIOLATION = CDN_FIRST - 3, + CDN_HELP = CDN_FIRST - 4, + CDN_FILEOK = CDN_FIRST - 5, + CDN_TYPECHANGE = CDN_FIRST - 6, +} + +//static if(_WIN32_WINNT >= 0x500) { + enum : UINT { + CDN_INCLUDEITEM = CDN_FIRST - 7, + } +//} + +enum : UINT { + CDM_FIRST = WM_USER + 100, + CDM_LAST = WM_USER + 200, + CDM_GETSPEC = CDM_FIRST, + CDM_GETFILEPATH, + CDM_GETFOLDERPATH, + CDM_GETFOLDERIDLIST, + CDM_SETCONTROLTEXT, + CDM_HIDECONTROL, + CDM_SETDEFEXT // = CDM_FIRST + 6 +} + +// flags for ChooseColor +enum : DWORD { + CC_RGBINIT = 0x0001, + CC_FULLOPEN = 0x0002, + CC_PREVENTFULLOPEN = 0x0004, + CC_SHOWHELP = 0x0008, + CC_ENABLEHOOK = 0x0010, + CC_ENABLETEMPLATE = 0x0020, + CC_ENABLETEMPLATEHANDLE = 0x0040, + CC_SOLIDCOLOR = 0x0080, + CC_ANYCOLOR = 0x0100 +} + +// flags for ChooseFont +enum : DWORD { + CF_SCREENFONTS = 0x00000001, + CF_PRINTERFONTS = 0x00000002, + CF_BOTH = 0x00000003, + CF_SHOWHELP = 0x00000004, + CF_ENABLEHOOK = 0x00000008, + CF_ENABLETEMPLATE = 0x00000010, + CF_ENABLETEMPLATEHANDLE = 0x00000020, + CF_INITTOLOGFONTSTRUCT = 0x00000040, + CF_USESTYLE = 0x00000080, + CF_EFFECTS = 0x00000100, + CF_APPLY = 0x00000200, + CF_ANSIONLY = 0x00000400, + CF_SCRIPTSONLY = CF_ANSIONLY, + CF_NOVECTORFONTS = 0x00000800, + CF_NOOEMFONTS = 0x00000800, + CF_NOSIMULATIONS = 0x00001000, + CF_LIMITSIZE = 0x00002000, + CF_FIXEDPITCHONLY = 0x00004000, + CF_WYSIWYG = 0x00008000, + CF_FORCEFONTEXIST = 0x00010000, + CF_SCALABLEONLY = 0x00020000, + CF_TTONLY = 0x00040000, + CF_NOFACESEL = 0x00080000, + CF_NOSTYLESEL = 0x00100000, + CF_NOSIZESEL = 0x00200000, + CF_SELECTSCRIPT = 0x00400000, + CF_NOSCRIPTSEL = 0x00800000, + CF_NOVERTFONTS = 0x01000000 +} + +// Font type for ChooseFont +enum : WORD { + BOLD_FONTTYPE = 0x0100, + ITALIC_FONTTYPE = 0x0200, + REGULAR_FONTTYPE = 0x0400, + SCREEN_FONTTYPE = 0x2000, + PRINTER_FONTTYPE = 0x4000, + SIMULATED_FONTTYPE = 0x8000 +} + +enum : UINT { + WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1, + WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101, + WM_CHOOSEFONT_SETFLAGS = WM_USER + 102 +} + +// flags for OpenFileName +enum : DWORD { + OFN_SHAREWARN = 0, + OFN_SHARENOWARN = 0x000001, + OFN_READONLY = 0x000001, + OFN_SHAREFALLTHROUGH = 0x000002, + OFN_OVERWRITEPROMPT = 0x000002, + OFN_HIDEREADONLY = 0x000004, + OFN_NOCHANGEDIR = 0x000008, + OFN_SHOWHELP = 0x000010, + OFN_ENABLEHOOK = 0x000020, + OFN_ENABLETEMPLATE = 0x000040, + OFN_ENABLETEMPLATEHANDLE = 0x000080, + OFN_NOVALIDATE = 0x000100, + OFN_ALLOWMULTISELECT = 0x000200, + OFN_EXTENSIONDIFFERENT = 0x000400, + OFN_PATHMUSTEXIST = 0x000800, + OFN_FILEMUSTEXIST = 0x001000, + OFN_CREATEPROMPT = 0x002000, + OFN_SHAREAWARE = 0x004000, + OFN_NOREADONLYRETURN = 0x008000, + OFN_NOTESTFILECREATE = 0x010000, + OFN_NONETWORKBUTTON = 0x020000, + OFN_NOLONGNAMES = 0x040000, + OFN_EXPLORER = 0x080000, + OFN_NODEREFERENCELINKS = 0x100000, + OFN_LONGNAMES = 0x200000, + OFN_ENABLESIZING = 0x800000 +} + +enum : DWORD { + FR_DOWN = 0x00000001, + FR_WHOLEWORD = 0x00000002, + FR_MATCHCASE = 0x00000004, + FR_FINDNEXT = 0x00000008, + FR_REPLACE = 0x00000010, + FR_REPLACEALL = 0x00000020, + FR_DIALOGTERM = 0x00000040, + FR_SHOWHELP = 0x00000080, + FR_ENABLEHOOK = 0x00000100, + FR_ENABLETEMPLATE = 0x00000200, + FR_NOUPDOWN = 0x00000400, + FR_NOMATCHCASE = 0x00000800, + FR_NOWHOLEWORD = 0x00001000, + FR_ENABLETEMPLATEHANDLE = 0x00002000, + FR_HIDEUPDOWN = 0x00004000, + FR_HIDEMATCHCASE = 0x00008000, + FR_HIDEWHOLEWORD = 0x00010000, + FR_MATCHDIAC = 0x20000000, + FR_MATCHKASHIDA = 0x40000000, + FR_MATCHALEFHAMZA = 0x80000000 +} + +enum : DWORD { + PD_ALLPAGES = 0, + PD_SELECTION = 0x000001, + PD_PAGENUMS = 0x000002, + PD_NOSELECTION = 0x000004, + PD_NOPAGENUMS = 0x000008, + PD_COLLATE = 0x000010, + PD_PRINTTOFILE = 0x000020, + PD_PRINTSETUP = 0x000040, + PD_NOWARNING = 0x000080, + PD_RETURNDC = 0x000100, + PD_RETURNIC = 0x000200, + PD_RETURNDEFAULT = 0x000400, + PD_SHOWHELP = 0x000800, + PD_ENABLEPRINTHOOK = 0x001000, + PD_ENABLESETUPHOOK = 0x002000, + PD_ENABLEPRINTTEMPLATE = 0x004000, + PD_ENABLESETUPTEMPLATE = 0x008000, + PD_ENABLEPRINTTEMPLATEHANDLE = 0x010000, + PD_ENABLESETUPTEMPLATEHANDLE = 0x020000, + PD_USEDEVMODECOPIES = 0x040000, + PD_USEDEVMODECOPIESANDCOLLATE = 0x040000, + PD_DISABLEPRINTTOFILE = 0x080000, + PD_HIDEPRINTTOFILE = 0x100000, + PD_NONETWORKBUTTON = 0x200000 +} + +//static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + PD_CURRENTPAGE = 0x00400000, + PD_NOCURRENTPAGE = 0x00800000, + PD_EXCLUSIONFLAGS = 0x01000000, + PD_USELARGETEMPLATE = 0x10000000, + } + + enum : HRESULT { + PD_RESULT_CANCEL, + PD_RESULT_PRINT, + PD_RESULT_APPLY + } + + const DWORD START_PAGE_GENERAL = 0xFFFFFFFF; +//} + +enum { + PSD_DEFAULTMINMARGINS = 0, + PSD_INWININIINTLMEASURE = 0, + PSD_MINMARGINS = 0x000001, + PSD_MARGINS = 0x000002, + PSD_INTHOUSANDTHSOFINCHES = 0x000004, + PSD_INHUNDREDTHSOFMILLIMETERS = 0x000008, + PSD_DISABLEMARGINS = 0x000010, + PSD_DISABLEPRINTER = 0x000020, + PSD_NOWARNING = 0x000080, + PSD_DISABLEORIENTATION = 0x000100, + PSD_DISABLEPAPER = 0x000200, + PSD_RETURNDEFAULT = 0x000400, + PSD_SHOWHELP = 0x000800, + PSD_ENABLEPAGESETUPHOOK = 0x002000, + PSD_ENABLEPAGESETUPTEMPLATE = 0x008000, + PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x020000, + PSD_ENABLEPAGEPAINTHOOK = 0x040000, + PSD_DISABLEPAGEPAINTING = 0x080000 +} + +enum : UINT { + WM_PSD_PAGESETUPDLG = WM_USER, + WM_PSD_FULLPAGERECT, + WM_PSD_MINMARGINRECT, + WM_PSD_MARGINRECT, + WM_PSD_GREEKTEXTRECT, + WM_PSD_ENVSTAMPRECT, + WM_PSD_YAFULLPAGERECT // = WM_USER + 6 +} + +enum : int { + CD_LBSELNOITEMS = -1, + CD_LBSELCHANGE, + CD_LBSELSUB, + CD_LBSELADD +} + +const WORD DN_DEFAULTPRN = 1; + +/+ +// Both MinGW and the windows docs indicate that there are macros for the send messages +// the controls. These seem to be totally unnecessary -- and at least one of MinGW or +// Windows Docs is buggy! + +int CommDlg_OpenSave_GetSpec(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETSPEC, wParam, lParam); +} + +int CommDlg_OpenSave_GetFilePath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETFILEPATH, wParam, lParam); +} + +int CommDlg_OpenSave_GetFolderPath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETFOLDERPATH, wParam, lParam); +} + +int CommDlg_OpenSave_GetFolderIDList(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETFOLDERIDLIST, wParam, lParam); +} + +void CommDlg_OpenSave_SetControlText(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_SETCONTROLTEXT, wParam, lParam); +} + +void CommDlg_OpenSave_HideControl(HWND hWndControl, WPARAM wParam) { + return SendMessage(hWndControl, CDM_HIDECONTROL, wParam, 0); +} + +void CommDlg_OpenSave_SetDefExt(HWND hWndControl, TCHAR* lparam) { + return SendMessage(hWndControl, CDM_SETCONTROLTEXT, 0, cast(LPARAM)lParam); +} + +// These aliases seem even more unnecessary +alias CommDlg_OpenSave_GetSpec + CommDlg_OpenSave_GetSpecA, CommDlg_OpenSave_GetSpecW; +alias CommDlg_OpenSave_GetFilePath + CommDlg_OpenSave_GetFilePathA, CommDlg_OpenSave_GetFilePathW; +alias CommDlg_OpenSave_GetFolderPath + CommDlg_OpenSave_GetFolderPathA, CommDlg_OpenSave_GetFolderPathW; ++/ + +// Callbacks. +extern(Windows) { +alias UINT_PTR function (HWND, UINT, WPARAM, LPARAM) + LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC, + LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; +} + +align (1): + +struct CHOOSECOLORA { + DWORD lStructSize = CHOOSECOLORA.sizeof; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF* lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias CHOOSECOLORA* LPCHOOSECOLORA; + +struct CHOOSECOLORW { + DWORD lStructSize = CHOOSECOLORW.sizeof; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF* lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias CHOOSECOLORW* LPCHOOSECOLORW; + +align (4) struct CHOOSEFONTA { + DWORD lStructSize = CHOOSEFONTA.sizeof; + HWND hwndOwner; + HDC hDC; + LPLOGFONTA lpLogFont; + INT iPointSize; + DWORD Flags; + DWORD rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + HINSTANCE hInstance; + LPSTR lpszStyle; + WORD nFontType; + //WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; +} +alias CHOOSEFONTA* LPCHOOSEFONTA; + +align (4) struct CHOOSEFONTW { + DWORD lStructSize = CHOOSEFONTW.sizeof; + HWND hwndOwner; + HDC hDC; + LPLOGFONTW lpLogFont; + INT iPointSize; + DWORD Flags; + DWORD rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + HINSTANCE hInstance; + LPWSTR lpszStyle; + WORD nFontType; + //WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; +} +alias CHOOSEFONTW* LPCHOOSEFONTW; + +struct DEVNAMES { + WORD wDriverOffset; + WORD wDeviceOffset; + WORD wOutputOffset; + WORD wDefault; +} +alias DEVNAMES* LPDEVNAMES; + +struct FINDREPLACEA { + DWORD lStructSize = FINDREPLACEA.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPSTR lpstrFindWhat; + LPSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias FINDREPLACEA* LPFINDREPLACEA; + +struct FINDREPLACEW { + DWORD lStructSize = FINDREPLACEW.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPWSTR lpstrFindWhat; + LPWSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias FINDREPLACEW* LPFINDREPLACEW; + +struct OPENFILENAMEA { + DWORD lStructSize = OPENFILENAMEA.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpstrFilter; + LPSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPSTR lpstrFile; + DWORD nMaxFile; + LPSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCSTR lpstrInitialDir; + LPCSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCSTR lpstrDefExt; + DWORD lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + + //static if (_WIN32_WINNT >= 0x500) { + void *pvReserved; + DWORD dwReserved; + DWORD FlagsEx; + //} +} +alias OPENFILENAMEA* LPOPENFILENAMEA; + +struct OPENFILENAMEW { + DWORD lStructSize = OPENFILENAMEW.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpstrFilter; + LPWSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPWSTR lpstrFile; + DWORD nMaxFile; + LPWSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCWSTR lpstrInitialDir; + LPCWSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCWSTR lpstrDefExt; + DWORD lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + + //static if (_WIN32_WINNT >= 0x500) { + void *pvReserved; + DWORD dwReserved; + DWORD FlagsEx; + //} +} +alias OPENFILENAMEW* LPOPENFILENAMEW; + +const size_t OPENFILENAME_SIZE_VERSION_400 = 76; + +struct OFNOTIFYA { + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPSTR pszFile; +} +alias OFNOTIFYA* LPOFNOTIFYA; + +struct OFNOTIFYW { + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPWSTR pszFile; +} +alias OFNOTIFYW* LPOFNOTIFYW; + +struct PAGESETUPDLGA { + DWORD lStructSize = PAGESETUPDLGA.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + DWORD Flags; + POINT ptPaperSize; + RECT rtMinMargin; + RECT rtMargin; + HINSTANCE hInstance; + LPARAM lCustData; + LPPAGESETUPHOOK lpfnPageSetupHook; + LPPAGEPAINTHOOK lpfnPagePaintHook; + LPCSTR lpPageSetupTemplateName; + HGLOBAL hPageSetupTemplate; +} +alias PAGESETUPDLGA* LPPAGESETUPDLGA; + +struct PAGESETUPDLGW { + DWORD lStructSize = PAGESETUPDLGW.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + DWORD Flags; + POINT ptPaperSize; + RECT rtMinMargin; + RECT rtMargin; + HINSTANCE hInstance; + LPARAM lCustData; + LPPAGESETUPHOOK lpfnPageSetupHook; + LPPAGEPAINTHOOK lpfnPagePaintHook; + LPCWSTR lpPageSetupTemplateName; + HGLOBAL hPageSetupTemplate; +} +alias PAGESETUPDLGW* LPPAGESETUPDLGW; + +struct PRINTDLGA { + DWORD lStructSize = PRINTDLGA.sizeof; + HWND hwndOwner; + HANDLE hDevMode; + HANDLE hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + DWORD lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCSTR lpPrintTemplateName; + LPCSTR lpSetupTemplateName; + HANDLE hPrintTemplate; + HANDLE hSetupTemplate; +} +alias PRINTDLGA* LPPRINTDLGA; + +struct PRINTDLGW { + DWORD lStructSize = PRINTDLGW.sizeof; + HWND hwndOwner; + HANDLE hDevMode; + HANDLE hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + DWORD lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCWSTR lpPrintTemplateName; + LPCWSTR lpSetupTemplateName; + HANDLE hPrintTemplate; + HANDLE hSetupTemplate; +} +alias PRINTDLGW* LPPRINTDLGW; + +//static if (_WIN32_WINNT >= 0x500) { + import core.sys.windows.unknwn; // for LPUNKNOWN + import core.sys.windows.prsht; // for HPROPSHEETPAGE + + struct PRINTPAGERANGE { + DWORD nFromPage; + DWORD nToPage; + } + alias PRINTPAGERANGE* LPPRINTPAGERANGE; + + struct PRINTDLGEXA { + DWORD lStructSize = PRINTDLGEXA.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + DWORD Flags2; + DWORD ExclusionFlags; + DWORD nPageRanges; + DWORD nMaxPageRanges; + LPPRINTPAGERANGE lpPageRanges; + DWORD nMinPage; + DWORD nMaxPage; + DWORD nCopies; + HINSTANCE hInstance; + LPCSTR lpPrintTemplateName; + LPUNKNOWN lpCallback; + DWORD nPropertyPages; + HPROPSHEETPAGE* lphPropertyPages; + DWORD nStartPage; + DWORD dwResultAction; + } + alias PRINTDLGEXA* LPPRINTDLGEXA; + + struct PRINTDLGEXW { + DWORD lStructSize = PRINTDLGEXW.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + DWORD Flags2; + DWORD ExclusionFlags; + DWORD nPageRanges; + DWORD nMaxPageRanges; + LPPRINTPAGERANGE lpPageRanges; + DWORD nMinPage; + DWORD nMaxPage; + DWORD nCopies; + HINSTANCE hInstance; + LPCWSTR lpPrintTemplateName; + LPUNKNOWN lpCallback; + DWORD nPropertyPages; + HPROPSHEETPAGE* lphPropertyPages; + DWORD nStartPage; + DWORD dwResultAction; + } + alias PRINTDLGEXW* LPPRINTDLGEXW; + +//} // _WIN32_WINNT >= 0x500 + +extern (Windows) { + BOOL ChooseColorA(LPCHOOSECOLORA); + BOOL ChooseColorW(LPCHOOSECOLORW); + BOOL ChooseFontA(LPCHOOSEFONTA); + BOOL ChooseFontW(LPCHOOSEFONTW); + DWORD CommDlgExtendedError(); + HWND FindTextA(LPFINDREPLACEA); + HWND FindTextW(LPFINDREPLACEW); + short GetFileTitleA(LPCSTR, LPSTR, WORD); + short GetFileTitleW(LPCWSTR, LPWSTR, WORD); + BOOL GetOpenFileNameA(LPOPENFILENAMEA); + BOOL GetOpenFileNameW(LPOPENFILENAMEW); + BOOL GetSaveFileNameA(LPOPENFILENAMEA); + BOOL GetSaveFileNameW(LPOPENFILENAMEW); + BOOL PageSetupDlgA(LPPAGESETUPDLGA); + BOOL PageSetupDlgW(LPPAGESETUPDLGW); + BOOL PrintDlgA(LPPRINTDLGA); + BOOL PrintDlgW(LPPRINTDLGW); + HWND ReplaceTextA(LPFINDREPLACEA); + HWND ReplaceTextW(LPFINDREPLACEW); + + //static if (_WIN32_WINNT >= 0x500) { + HRESULT PrintDlgExA(LPPRINTDLGEXA); + HRESULT PrintDlgExW(LPPRINTDLGEXW); + //} +} + +version (Unicode) { + alias CHOOSECOLORW CHOOSECOLOR; + alias CHOOSEFONTW CHOOSEFONT; + alias FINDREPLACEW FINDREPLACE; + alias OPENFILENAMEW OPENFILENAME; + alias OFNOTIFYW OFNOTIFY; + alias PAGESETUPDLGW PAGESETUPDLG; + alias PRINTDLGW PRINTDLG; + + alias ChooseColorW ChooseColor; + alias ChooseFontW ChooseFont; + alias FindTextW FindText; + alias GetFileTitleW GetFileTitle; + alias GetOpenFileNameW GetOpenFileName; + alias GetSaveFileNameW GetSaveFileName; + alias PageSetupDlgW PageSetupDlg; + alias PrintDlgW PrintDlg; + alias ReplaceTextW ReplaceText; + + //static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEXW PRINTDLGEX; + alias PrintDlgExW PrintDlgEx; + //} + +} else { // UNICODE + + alias CHOOSECOLORA CHOOSECOLOR; + alias CHOOSEFONTA CHOOSEFONT; + alias FINDREPLACEA FINDREPLACE; + alias OPENFILENAMEA OPENFILENAME; + alias OFNOTIFYA OFNOTIFY; + alias PAGESETUPDLGA PAGESETUPDLG; + alias PRINTDLGA PRINTDLG; + + alias ChooseColorA ChooseColor; + alias ChooseFontA ChooseFont; + alias FindTextA FindText; + alias GetFileTitleA GetFileTitle; + alias GetOpenFileNameA GetOpenFileName; + alias GetSaveFileNameA GetSaveFileName; + alias PageSetupDlgA PageSetupDlg; + alias PrintDlgA PrintDlg; + alias ReplaceTextA ReplaceText; + + //static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEXA PRINTDLGEX; + alias PrintDlgExA PrintDlgEx; + //} + +} // UNICODE + +alias CHOOSECOLOR* LPCHOOSECOLOR; +alias CHOOSEFONT* LPCHOOSEFONT; +alias FINDREPLACE* LPFINDREPLACE; +alias OPENFILENAME* LPOPENFILENAME; +alias OFNOTIFY* LPOFNOTIFY; +alias PAGESETUPDLG* LPPAGESETUPDLG; +alias PRINTDLG* LPPRINTDLG; +//static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEX* LPPRINTDLGEX; +//} diff --git a/src/core/sys/windows/core.d b/src/core/sys/windows/core.d index 10b0bc164e..74e3f8ca68 100644 --- a/src/core/sys/windows/core.d +++ b/src/core/sys/windows/core.d @@ -1,29 +1,29 @@ -/** - * Helper module for the Windows API - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_core.d) - */ -module core.sys.windows.core; - -/** - The core Windows API functions. - - Importing this file is equivalent to the C code: - --- - #define WIN32_LEAN_AND_MEAN - #include "windows.h" - --- - -*/ - -public import core.sys.windows.windef; -public import core.sys.windows.winnt; -public import core.sys.windows.wincon; -public import core.sys.windows.winbase; -public import core.sys.windows.wingdi; -public import core.sys.windows.winuser; -public import core.sys.windows.winnls; -public import core.sys.windows.winver; -public import core.sys.windows.winnetwk; -public import core.sys.windows.winsvc; +/** + * Helper module for the Windows API + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_core.d) + */ +module core.sys.windows.core; + +/** + The core Windows API functions. + + Importing this file is equivalent to the C code: + --- + #define WIN32_LEAN_AND_MEAN + #include "windows.h" + --- + +*/ + +public import core.sys.windows.windef; +public import core.sys.windows.winnt; +public import core.sys.windows.wincon; +public import core.sys.windows.winbase; +public import core.sys.windows.wingdi; +public import core.sys.windows.winuser; +public import core.sys.windows.winnls; +public import core.sys.windows.winver; +public import core.sys.windows.winnetwk; +public import core.sys.windows.winsvc; diff --git a/src/core/sys/windows/cpl.d b/src/core/sys/windows/cpl.d index ee1d80a99b..9ff977ea7c 100644 --- a/src/core/sys/windows/cpl.d +++ b/src/core/sys/windows/cpl.d @@ -1,76 +1,76 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_cpl.d) - */ -module core.sys.windows.cpl; - -private import core.sys.windows.windef, core.sys.windows.winuser; - -enum : uint { - WM_CPL_LAUNCH = WM_USER + 1000, - WM_CPL_LAUNCHED -} - -enum : uint { - CPL_DYNAMIC_RES, - CPL_INIT, - CPL_GETCOUNT, - CPL_INQUIRE, - CPL_SELECT, - CPL_DBLCLK, - CPL_STOP, - CPL_EXIT, - CPL_NEWINQUIRE, - CPL_STARTWPARMSA, - CPL_STARTWPARMSW, // = 10 - CPL_SETUP = 200 -} - -extern (Windows) alias LONG function(HWND, UINT, LONG, LONG) APPLET_PROC; - -struct CPLINFO { - int idIcon; - int idName; - int idInfo; - LONG lData; -} -alias CPLINFO* LPCPLINFO; - -struct NEWCPLINFOA { - DWORD dwSize = NEWCPLINFOA.sizeof; - DWORD dwFlags; - DWORD dwHelpContext; - LONG lData; - HICON hIcon; - CHAR[32] szName; - CHAR[64] szInfo; - CHAR[128] szHelpFile; -} -alias NEWCPLINFOA* LPNEWCPLINFOA; - -struct NEWCPLINFOW { - DWORD dwSize = NEWCPLINFOW.sizeof; - DWORD dwFlags; - DWORD dwHelpContext; - LONG lData; - HICON hIcon; - WCHAR[32] szName; - WCHAR[64] szInfo; - WCHAR[128] szHelpFile; -} -alias NEWCPLINFOW* LPNEWCPLINFOW; - -version (Unicode) { - alias CPL_STARTWPARMSW CPL_STARTWPARMS; - alias NEWCPLINFOW NEWCPLINFO; -} else { - alias CPL_STARTWPARMSA CPL_STARTWPARMS; - alias NEWCPLINFOA NEWCPLINFO; -} - -alias NEWCPLINFO* LPNEWCPLINFO; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_cpl.d) + */ +module core.sys.windows.cpl; + +private import core.sys.windows.windef, core.sys.windows.winuser; + +enum : uint { + WM_CPL_LAUNCH = WM_USER + 1000, + WM_CPL_LAUNCHED +} + +enum : uint { + CPL_DYNAMIC_RES, + CPL_INIT, + CPL_GETCOUNT, + CPL_INQUIRE, + CPL_SELECT, + CPL_DBLCLK, + CPL_STOP, + CPL_EXIT, + CPL_NEWINQUIRE, + CPL_STARTWPARMSA, + CPL_STARTWPARMSW, // = 10 + CPL_SETUP = 200 +} + +extern (Windows) alias LONG function(HWND, UINT, LONG, LONG) APPLET_PROC; + +struct CPLINFO { + int idIcon; + int idName; + int idInfo; + LONG lData; +} +alias CPLINFO* LPCPLINFO; + +struct NEWCPLINFOA { + DWORD dwSize = NEWCPLINFOA.sizeof; + DWORD dwFlags; + DWORD dwHelpContext; + LONG lData; + HICON hIcon; + CHAR[32] szName; + CHAR[64] szInfo; + CHAR[128] szHelpFile; +} +alias NEWCPLINFOA* LPNEWCPLINFOA; + +struct NEWCPLINFOW { + DWORD dwSize = NEWCPLINFOW.sizeof; + DWORD dwFlags; + DWORD dwHelpContext; + LONG lData; + HICON hIcon; + WCHAR[32] szName; + WCHAR[64] szInfo; + WCHAR[128] szHelpFile; +} +alias NEWCPLINFOW* LPNEWCPLINFOW; + +version (Unicode) { + alias CPL_STARTWPARMSW CPL_STARTWPARMS; + alias NEWCPLINFOW NEWCPLINFO; +} else { + alias CPL_STARTWPARMSA CPL_STARTWPARMS; + alias NEWCPLINFOA NEWCPLINFO; +} + +alias NEWCPLINFO* LPNEWCPLINFO; diff --git a/src/core/sys/windows/cplext.d b/src/core/sys/windows/cplext.d index d84e97fd31..278a4271c5 100644 --- a/src/core/sys/windows/cplext.d +++ b/src/core/sys/windows/cplext.d @@ -1,18 +1,18 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_cplext.d) - */ -module core.sys.windows.cplext; - -enum : uint { - CPLPAGE_MOUSE_BUTTONS = 1, - CPLPAGE_MOUSE_PTRMOTION = 2, - CPLPAGE_MOUSE_WHEEL = 3, - CPLPAGE_KEYBOARD_SPEED = 1, - CPLPAGE_DISPLAY_BACKGROUND = 1 -} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_cplext.d) + */ +module core.sys.windows.cplext; + +enum : uint { + CPLPAGE_MOUSE_BUTTONS = 1, + CPLPAGE_MOUSE_PTRMOTION = 2, + CPLPAGE_MOUSE_WHEEL = 3, + CPLPAGE_KEYBOARD_SPEED = 1, + CPLPAGE_DISPLAY_BACKGROUND = 1 +} diff --git a/src/core/sys/windows/custcntl.d b/src/core/sys/windows/custcntl.d index 411cd8806a..0500adcd21 100644 --- a/src/core/sys/windows/custcntl.d +++ b/src/core/sys/windows/custcntl.d @@ -1,121 +1,121 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_custcntl.d) - */ -module core.sys.windows.custcntl; - -private import core.sys.windows.windef; - -// FIXME: check type -const CCF_NOTEXT = 1; - -const size_t - CCHCCCLASS = 32, - CCHCCDESC = 32, - CCHCCTEXT = 256; - -struct CCSTYLEA { - DWORD flStyle; - DWORD flExtStyle; - CHAR[CCHCCTEXT] szText; - LANGID lgid; - WORD wReserved1; -} -alias CCSTYLEA* LPCCSTYLEA; - -struct CCSTYLEW { - DWORD flStyle; - DWORD flExtStyle; - WCHAR[CCHCCTEXT] szText; - LANGID lgid; - WORD wReserved1; -} -alias CCSTYLEW* LPCCSTYLEW; - -struct CCSTYLEFLAGA { - DWORD flStyle; - DWORD flStyleMask; - LPSTR pszStyle; -} -alias CCSTYLEFLAGA* LPCCSTYLEFLAGA; - -struct CCSTYLEFLAGW { - DWORD flStyle; - DWORD flStyleMask; - LPWSTR pszStyle; -} -alias CCSTYLEFLAGW* LPCCSTYLEFLAGW; - -struct CCINFOA { - CHAR[CCHCCCLASS] szClass; - DWORD flOptions; - CHAR[CCHCCDESC] szDesc; - UINT cxDefault; - UINT cyDefault; - DWORD flStyleDefault; - DWORD flExtStyleDefault; - DWORD flCtrlTypeMask; - CHAR[CCHCCTEXT] szTextDefault; - INT cStyleFlags; - LPCCSTYLEFLAGA aStyleFlags; - LPFNCCSTYLEA lpfnStyle; - LPFNCCSIZETOTEXTA lpfnSizeToText; - DWORD dwReserved1; - DWORD dwReserved2; -} -alias CCINFOA* LPCCINFOA; - -struct CCINFOW { - WCHAR[CCHCCCLASS] szClass; - DWORD flOptions; - WCHAR[CCHCCDESC] szDesc; - UINT cxDefault; - UINT cyDefault; - DWORD flStyleDefault; - DWORD flExtStyleDefault; - DWORD flCtrlTypeMask; - WCHAR[CCHCCTEXT] szTextDefault; - INT cStyleFlags; - LPCCSTYLEFLAGW aStyleFlags; - LPFNCCSTYLEW lpfnStyle; - LPFNCCSIZETOTEXTW lpfnSizeToText; - DWORD dwReserved1; - DWORD dwReserved2; -} -alias CCINFOW* LPCCINFOW; - -extern (Windows) { - alias BOOL function(HWND, LPCCSTYLEA) LPFNCCSTYLEA; - alias BOOL function(HWND, LPCCSTYLEW) LPFNCCSTYLEW; - alias INT function(DWORD, DWORD, HFONT, LPSTR) LPFNCCSIZETOTEXTA; - alias INT function(DWORD, DWORD, HFONT, LPWSTR) LPFNCCSIZETOTEXTW; - alias UINT function(LPCCINFOA) LPFNCCINFOA; - alias UINT function(LPCCINFOW) LPFNCCINFOW; - UINT CustomControlInfoA(LPCCINFOA acci); - UINT CustomControlInfoW(LPCCINFOW acci); -} - -version (Unicode) { - alias CCSTYLEW CCSTYLE; - alias CCSTYLEFLAGW CCSTYLEFLAG; - alias CCINFOW CCINFO; - alias LPFNCCSTYLEW LPFNCCSTYLE; - alias LPFNCCSIZETOTEXTW LPFNCCSIZETOTEXT; - alias LPFNCCINFOW LPFNCCINFO; -} else { - alias CCSTYLEA CCSTYLE; - alias CCSTYLEFLAGA CCSTYLEFLAG; - alias CCINFOA CCINFO; - alias LPFNCCSTYLEA LPFNCCSTYLE; - alias LPFNCCSIZETOTEXTA LPFNCCSIZETOTEXT; - alias LPFNCCINFOA LPFNCCINFO; -} - -alias CCSTYLE* LPCCSTYLE; -alias CCSTYLEFLAG* LPCCSTYLEFLAG; -alias CCINFO* LPCCINFO; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_custcntl.d) + */ +module core.sys.windows.custcntl; + +private import core.sys.windows.windef; + +// FIXME: check type +const CCF_NOTEXT = 1; + +const size_t + CCHCCCLASS = 32, + CCHCCDESC = 32, + CCHCCTEXT = 256; + +struct CCSTYLEA { + DWORD flStyle; + DWORD flExtStyle; + CHAR[CCHCCTEXT] szText; + LANGID lgid; + WORD wReserved1; +} +alias CCSTYLEA* LPCCSTYLEA; + +struct CCSTYLEW { + DWORD flStyle; + DWORD flExtStyle; + WCHAR[CCHCCTEXT] szText; + LANGID lgid; + WORD wReserved1; +} +alias CCSTYLEW* LPCCSTYLEW; + +struct CCSTYLEFLAGA { + DWORD flStyle; + DWORD flStyleMask; + LPSTR pszStyle; +} +alias CCSTYLEFLAGA* LPCCSTYLEFLAGA; + +struct CCSTYLEFLAGW { + DWORD flStyle; + DWORD flStyleMask; + LPWSTR pszStyle; +} +alias CCSTYLEFLAGW* LPCCSTYLEFLAGW; + +struct CCINFOA { + CHAR[CCHCCCLASS] szClass; + DWORD flOptions; + CHAR[CCHCCDESC] szDesc; + UINT cxDefault; + UINT cyDefault; + DWORD flStyleDefault; + DWORD flExtStyleDefault; + DWORD flCtrlTypeMask; + CHAR[CCHCCTEXT] szTextDefault; + INT cStyleFlags; + LPCCSTYLEFLAGA aStyleFlags; + LPFNCCSTYLEA lpfnStyle; + LPFNCCSIZETOTEXTA lpfnSizeToText; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias CCINFOA* LPCCINFOA; + +struct CCINFOW { + WCHAR[CCHCCCLASS] szClass; + DWORD flOptions; + WCHAR[CCHCCDESC] szDesc; + UINT cxDefault; + UINT cyDefault; + DWORD flStyleDefault; + DWORD flExtStyleDefault; + DWORD flCtrlTypeMask; + WCHAR[CCHCCTEXT] szTextDefault; + INT cStyleFlags; + LPCCSTYLEFLAGW aStyleFlags; + LPFNCCSTYLEW lpfnStyle; + LPFNCCSIZETOTEXTW lpfnSizeToText; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias CCINFOW* LPCCINFOW; + +extern (Windows) { + alias BOOL function(HWND, LPCCSTYLEA) LPFNCCSTYLEA; + alias BOOL function(HWND, LPCCSTYLEW) LPFNCCSTYLEW; + alias INT function(DWORD, DWORD, HFONT, LPSTR) LPFNCCSIZETOTEXTA; + alias INT function(DWORD, DWORD, HFONT, LPWSTR) LPFNCCSIZETOTEXTW; + alias UINT function(LPCCINFOA) LPFNCCINFOA; + alias UINT function(LPCCINFOW) LPFNCCINFOW; + UINT CustomControlInfoA(LPCCINFOA acci); + UINT CustomControlInfoW(LPCCINFOW acci); +} + +version (Unicode) { + alias CCSTYLEW CCSTYLE; + alias CCSTYLEFLAGW CCSTYLEFLAG; + alias CCINFOW CCINFO; + alias LPFNCCSTYLEW LPFNCCSTYLE; + alias LPFNCCSIZETOTEXTW LPFNCCSIZETOTEXT; + alias LPFNCCINFOW LPFNCCINFO; +} else { + alias CCSTYLEA CCSTYLE; + alias CCSTYLEFLAGA CCSTYLEFLAG; + alias CCINFOA CCINFO; + alias LPFNCCSTYLEA LPFNCCSTYLE; + alias LPFNCCSIZETOTEXTA LPFNCCSIZETOTEXT; + alias LPFNCCINFOA LPFNCCINFO; +} + +alias CCSTYLE* LPCCSTYLE; +alias CCSTYLEFLAG* LPCCSTYLEFLAG; +alias CCINFO* LPCCINFO; diff --git a/src/core/sys/windows/dbt.d b/src/core/sys/windows/dbt.d index 50d1f2dd03..3fe1c824a7 100644 --- a/src/core/sys/windows/dbt.d +++ b/src/core/sys/windows/dbt.d @@ -1,188 +1,188 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Vladimir Vlasov - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_dbt.d) - */ -module core.sys.windows.dbt; - -import core.sys.windows.w32api, core.sys.windows.windef; -import core.sys.windows.basetyps; // for GUID - -// FIXME: clean up Windows version support - -enum : DWORD { - DBT_NO_DISK_SPACE = 0x47, - DBT_CONFIGMGPRIVATE = 0x7FFF, - DBT_DEVICEARRIVAL = 0x8000, - DBT_DEVICEQUERYREMOVE = 0x8001, - DBT_DEVICEQUERYREMOVEFAILED = 0x8002, - DBT_DEVICEREMOVEPENDING = 0x8003, - DBT_DEVICEREMOVECOMPLETE = 0x8004, - DBT_DEVICETYPESPECIFIC = 0x8005, - DBT_DEVTYP_OEM = 0, - DBT_DEVTYP_DEVNODE, - DBT_DEVTYP_VOLUME, - DBT_DEVTYP_PORT, - DBT_DEVTYP_NET, - DBT_DEVTYP_DEVICEINTERFACE, - DBT_DEVTYP_HANDLE // = 6 -} - -enum : DWORD { - DBT_APPYBEGIN, - DBT_APPYEND, - DBT_DEVNODES_CHANGED = 7, - DBT_QUERYCHANGECONFIG = 0x17, - DBT_CONFIGCHANGED = 0x18, - DBT_CONFIGCHANGECANCELED = 0x19, - DBT_MONITORCHANGE = 0x1B, - DBT_SHELLLOGGEDON = 32, - DBT_CONFIGMGAPI32 = 34, - DBT_VXDINITCOMPLETE = 35, - DBT_VOLLOCKQUERYLOCK = 0x8041, - DBT_VOLLOCKLOCKTAKEN = 0x8042, - DBT_VOLLOCKLOCKFAILED = 0x8043, - DBT_VOLLOCKQUERYUNLOCK = 0x8044, - DBT_VOLLOCKLOCKRELEASED = 0x8045, - DBT_VOLLOCKUNLOCKFAILED = 0x8046, - DBT_USERDEFINED = 0xFFFF -} - -enum : WORD { - DBTF_MEDIA = 1, - DBTF_NET = 2 -} - -enum : DWORD { - BSM_ALLCOMPONENTS = 0, - BSM_APPLICATIONS = 8, - BSM_ALLDESKTOPS = 16, - BSM_INSTALLABLEDRIVERS = 4, - BSM_NETDRIVER = 2, - BSM_VXDS = 1, - BSF_FLUSHDISK = 0x00000004, - BSF_FORCEIFHUNG = 0x00000020, - BSF_IGNORECURRENTTASK = 0x00000002, - BSF_NOHANG = 0x00000008, - BSF_NOTIMEOUTIFNOTHUNG = 0x00000040, - BSF_POSTMESSAGE = 0x00000010, - BSF_QUERY = 0x00000001, - BSF_MSGSRV32ISOK_BIT = 31, - BSF_MSGSRV32ISOK = 0x80000000 -} - -//static if (_WIN32_WINNT >= 0x500) { - enum : DWORD { - BSF_ALLOWSFW = 0x00000080, - BSF_SENDNOTIFYMESSAGE = 0x00000100 - } -//} - -static if (_WIN32_WINNT >= 0x501) { - enum : DWORD { - BSF_LUID = 0x00000400, - BSF_RETURNHDESK = 0x00000200 - } -} - -struct DEV_BROADCAST_HDR { - DWORD dbch_size = DEV_BROADCAST_HDR.sizeof; - DWORD dbch_devicetype; - DWORD dbch_reserved; -} -alias DEV_BROADCAST_HDR* PDEV_BROADCAST_HDR; - -struct DEV_BROADCAST_OEM { - DWORD dbco_size = DEV_BROADCAST_OEM.sizeof; - DWORD dbco_devicetype; - DWORD dbco_reserved; - DWORD dbco_identifier; - DWORD dbco_suppfunc; -} -alias DEV_BROADCAST_OEM* PDEV_BROADCAST_OEM; - -struct DEV_BROADCAST_PORT_A { - DWORD dbcp_size = DEV_BROADCAST_PORT_A.sizeof; - DWORD dbcp_devicetype; - DWORD dbcp_reserved; - char _dbcp_name; - char* dbcp_name() { return &_dbcp_name; } -} -alias DEV_BROADCAST_PORT_A* PDEV_BROADCAST_PORT_A; - -struct DEV_BROADCAST_PORT_W { - DWORD dbcp_size = DEV_BROADCAST_PORT_W.sizeof; - DWORD dbcp_devicetype; - DWORD dbcp_reserved; - WCHAR _dbcp_name; - WCHAR* dbcp_name() { return &_dbcp_name; } -} -alias DEV_BROADCAST_PORT_W* PDEV_BROADCAST_PORT_W; - -struct DEV_BROADCAST_USERDEFINED { - DEV_BROADCAST_HDR dbud_dbh; - char _dbud_szName; - char* dbud_szName() { return &_dbud_szName; } -} - -struct DEV_BROADCAST_VOLUME { - DWORD dbcv_size = DEV_BROADCAST_VOLUME.sizeof; - DWORD dbcv_devicetype; - DWORD dbcv_reserved; - DWORD dbcv_unitmask; - WORD dbcv_flags; -} -alias DEV_BROADCAST_VOLUME* PDEV_BROADCAST_VOLUME; - -version (Unicode) { - alias DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT; -} else { - alias DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT; -} -alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; - -//static if (_WIN32_WINNT >= 0x500) { - struct DEV_BROADCAST_DEVICEINTERFACE_A { - DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_A.sizeof; - DWORD dbcc_devicetype; - DWORD dbcc_reserved; - GUID dbcc_classguid; - char _dbcc_name; - char* dbcc_name() { return &_dbcc_name; } - } - alias DEV_BROADCAST_DEVICEINTERFACE_A* PDEV_BROADCAST_DEVICEINTERFACE_A; - - struct DEV_BROADCAST_DEVICEINTERFACE_W { - DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_W.sizeof; - DWORD dbcc_devicetype; - DWORD dbcc_reserved; - GUID dbcc_classguid; - WCHAR _dbcc_name; - WCHAR* dbcc_name() { return &_dbcc_name; } - } - alias DEV_BROADCAST_DEVICEINTERFACE_W* PDEV_BROADCAST_DEVICEINTERFACE_W; - - version (Unicode) { - alias DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE; - } else { - alias DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE; - } - alias DEV_BROADCAST_DEVICEINTERFACE* PDEV_BROADCAST_DEVICEINTERFACE; - - struct DEV_BROADCAST_HANDLE { - DWORD dbch_size = DEV_BROADCAST_HANDLE.sizeof; - DWORD dbch_devicetype; - DWORD dbch_reserved; - HANDLE dbch_handle; - DWORD dbch_hdevnotify; - GUID dbch_eventguid; - LONG dbch_nameoffset; - BYTE _dbch_data; - BYTE* dbch_data() { return &_dbch_data; } - } - alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; -//} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Vladimir Vlasov + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_dbt.d) + */ +module core.sys.windows.dbt; + +import core.sys.windows.w32api, core.sys.windows.windef; +import core.sys.windows.basetyps; // for GUID + +// FIXME: clean up Windows version support + +enum : DWORD { + DBT_NO_DISK_SPACE = 0x47, + DBT_CONFIGMGPRIVATE = 0x7FFF, + DBT_DEVICEARRIVAL = 0x8000, + DBT_DEVICEQUERYREMOVE = 0x8001, + DBT_DEVICEQUERYREMOVEFAILED = 0x8002, + DBT_DEVICEREMOVEPENDING = 0x8003, + DBT_DEVICEREMOVECOMPLETE = 0x8004, + DBT_DEVICETYPESPECIFIC = 0x8005, + DBT_DEVTYP_OEM = 0, + DBT_DEVTYP_DEVNODE, + DBT_DEVTYP_VOLUME, + DBT_DEVTYP_PORT, + DBT_DEVTYP_NET, + DBT_DEVTYP_DEVICEINTERFACE, + DBT_DEVTYP_HANDLE // = 6 +} + +enum : DWORD { + DBT_APPYBEGIN, + DBT_APPYEND, + DBT_DEVNODES_CHANGED = 7, + DBT_QUERYCHANGECONFIG = 0x17, + DBT_CONFIGCHANGED = 0x18, + DBT_CONFIGCHANGECANCELED = 0x19, + DBT_MONITORCHANGE = 0x1B, + DBT_SHELLLOGGEDON = 32, + DBT_CONFIGMGAPI32 = 34, + DBT_VXDINITCOMPLETE = 35, + DBT_VOLLOCKQUERYLOCK = 0x8041, + DBT_VOLLOCKLOCKTAKEN = 0x8042, + DBT_VOLLOCKLOCKFAILED = 0x8043, + DBT_VOLLOCKQUERYUNLOCK = 0x8044, + DBT_VOLLOCKLOCKRELEASED = 0x8045, + DBT_VOLLOCKUNLOCKFAILED = 0x8046, + DBT_USERDEFINED = 0xFFFF +} + +enum : WORD { + DBTF_MEDIA = 1, + DBTF_NET = 2 +} + +enum : DWORD { + BSM_ALLCOMPONENTS = 0, + BSM_APPLICATIONS = 8, + BSM_ALLDESKTOPS = 16, + BSM_INSTALLABLEDRIVERS = 4, + BSM_NETDRIVER = 2, + BSM_VXDS = 1, + BSF_FLUSHDISK = 0x00000004, + BSF_FORCEIFHUNG = 0x00000020, + BSF_IGNORECURRENTTASK = 0x00000002, + BSF_NOHANG = 0x00000008, + BSF_NOTIMEOUTIFNOTHUNG = 0x00000040, + BSF_POSTMESSAGE = 0x00000010, + BSF_QUERY = 0x00000001, + BSF_MSGSRV32ISOK_BIT = 31, + BSF_MSGSRV32ISOK = 0x80000000 +} + +//static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + BSF_ALLOWSFW = 0x00000080, + BSF_SENDNOTIFYMESSAGE = 0x00000100 + } +//} + +static if (_WIN32_WINNT >= 0x501) { + enum : DWORD { + BSF_LUID = 0x00000400, + BSF_RETURNHDESK = 0x00000200 + } +} + +struct DEV_BROADCAST_HDR { + DWORD dbch_size = DEV_BROADCAST_HDR.sizeof; + DWORD dbch_devicetype; + DWORD dbch_reserved; +} +alias DEV_BROADCAST_HDR* PDEV_BROADCAST_HDR; + +struct DEV_BROADCAST_OEM { + DWORD dbco_size = DEV_BROADCAST_OEM.sizeof; + DWORD dbco_devicetype; + DWORD dbco_reserved; + DWORD dbco_identifier; + DWORD dbco_suppfunc; +} +alias DEV_BROADCAST_OEM* PDEV_BROADCAST_OEM; + +struct DEV_BROADCAST_PORT_A { + DWORD dbcp_size = DEV_BROADCAST_PORT_A.sizeof; + DWORD dbcp_devicetype; + DWORD dbcp_reserved; + char _dbcp_name; + char* dbcp_name() { return &_dbcp_name; } +} +alias DEV_BROADCAST_PORT_A* PDEV_BROADCAST_PORT_A; + +struct DEV_BROADCAST_PORT_W { + DWORD dbcp_size = DEV_BROADCAST_PORT_W.sizeof; + DWORD dbcp_devicetype; + DWORD dbcp_reserved; + WCHAR _dbcp_name; + WCHAR* dbcp_name() { return &_dbcp_name; } +} +alias DEV_BROADCAST_PORT_W* PDEV_BROADCAST_PORT_W; + +struct DEV_BROADCAST_USERDEFINED { + DEV_BROADCAST_HDR dbud_dbh; + char _dbud_szName; + char* dbud_szName() { return &_dbud_szName; } +} + +struct DEV_BROADCAST_VOLUME { + DWORD dbcv_size = DEV_BROADCAST_VOLUME.sizeof; + DWORD dbcv_devicetype; + DWORD dbcv_reserved; + DWORD dbcv_unitmask; + WORD dbcv_flags; +} +alias DEV_BROADCAST_VOLUME* PDEV_BROADCAST_VOLUME; + +version (Unicode) { + alias DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT; +} else { + alias DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT; +} +alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; + +//static if (_WIN32_WINNT >= 0x500) { + struct DEV_BROADCAST_DEVICEINTERFACE_A { + DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_A.sizeof; + DWORD dbcc_devicetype; + DWORD dbcc_reserved; + GUID dbcc_classguid; + char _dbcc_name; + char* dbcc_name() { return &_dbcc_name; } + } + alias DEV_BROADCAST_DEVICEINTERFACE_A* PDEV_BROADCAST_DEVICEINTERFACE_A; + + struct DEV_BROADCAST_DEVICEINTERFACE_W { + DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_W.sizeof; + DWORD dbcc_devicetype; + DWORD dbcc_reserved; + GUID dbcc_classguid; + WCHAR _dbcc_name; + WCHAR* dbcc_name() { return &_dbcc_name; } + } + alias DEV_BROADCAST_DEVICEINTERFACE_W* PDEV_BROADCAST_DEVICEINTERFACE_W; + + version (Unicode) { + alias DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE; + } else { + alias DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE; + } + alias DEV_BROADCAST_DEVICEINTERFACE* PDEV_BROADCAST_DEVICEINTERFACE; + + struct DEV_BROADCAST_HANDLE { + DWORD dbch_size = DEV_BROADCAST_HANDLE.sizeof; + DWORD dbch_devicetype; + DWORD dbch_reserved; + HANDLE dbch_handle; + DWORD dbch_hdevnotify; + GUID dbch_eventguid; + LONG dbch_nameoffset; + BYTE _dbch_data; + BYTE* dbch_data() { return &_dbch_data; } + } + alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; +//} diff --git a/src/core/sys/windows/dde.d b/src/core/sys/windows/dde.d index c5e6a1b33b..aa9d7ba101 100644 --- a/src/core/sys/windows/dde.d +++ b/src/core/sys/windows/dde.d @@ -1,214 +1,214 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_dde.d) - */ -module core.sys.windows.dde; -pragma(lib, "user32"); - -private import core.sys.windows.windef; - -enum : uint { - WM_DDE_FIRST = 0x03E0, - WM_DDE_INITIATE = WM_DDE_FIRST, - WM_DDE_TERMINATE, - WM_DDE_ADVISE, - WM_DDE_UNADVISE, - WM_DDE_ACK, - WM_DDE_DATA, - WM_DDE_REQUEST, - WM_DDE_POKE, - WM_DDE_EXECUTE, - WM_DDE_LAST = WM_DDE_EXECUTE -} - -struct DDEACK { - ubyte bAppReturnCode; - ubyte _bf; - - @property ubyte reserved() { return cast(ubyte) (_bf & 0x3F); } - @property bool fBusy() { return cast(bool) (_bf & 0x40); } - @property bool fAck() { return cast(bool) (_bf & 0x80); } - - @property ubyte reserved(ubyte r) { - _bf = cast(ubyte) ((_bf & ~0x3F) | (r & 0x3F)); - return cast(ubyte)(r & 0x3F); - } - - @property bool fBusy(bool f) { _bf = cast(ubyte) ((_bf & ~0x40) | (f << 6)); return f; } - @property bool fAck(bool f) { _bf = cast(ubyte) ((_bf & ~0x80) | (f << 7)); return f; } -} - -struct DDEADVISE { - ushort _bf; - short cfFormat; - - @property ushort reserved() { return cast(ushort) (_bf & 0x3FFF); } - @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } - @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - @property ushort reserved(ushort r) { - _bf = cast(ushort) ((_bf & ~0x3FFF) | (r & 0x3FFF)); - return cast(ushort)(r & 0x3FFF); - } - - @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } -} - -struct DDEDATA { - ushort _bf; - short cfFormat; - byte _Value; - - @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } - @property bool fResponse() { return cast(bool) (_bf & 0x1000); } - @property bool fRelease() { return cast(bool) (_bf & 0x2000); } - @property bool reserved() { return cast(bool) (_bf & 0x4000); } - @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - @property byte* Value() { return &_Value; } - - @property ushort unused(ushort r) { - _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); - return cast(ushort)(r & 0x0FFF); - } - - @property bool fResponse(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } - @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - @property bool reserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } -} - -struct DDEPOKE { - ushort _bf; - short cfFormat; - byte _Value; - - @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } - @property bool fRelease() { return cast(bool) (_bf & 0x2000); } - @property ubyte fReserved() { return cast(ubyte) ((_bf & 0xC000) >>> 14); } - - @property byte* Value() { return &_Value; } - - @property ushort unused(ushort u) { - _bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF)); - return cast(ushort)(u & 0x1FFF); - } - - @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - @property ubyte fReserved(ubyte r) { _bf = cast(ushort) ((_bf & ~0xC000) | (r << 14)); return r; } -} - -deprecated struct DDELN { - ushort _bf; - short cfFormat; - - @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } - @property bool fRelease() { return cast(bool) (_bf & 0x2000); } - @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } - @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - @property ushort unused(ushort u) { - _bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF)); - return cast(ushort)(u & 0x1FFF); - } - - @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } -} - -deprecated struct DDEUP { - ushort _bf; - short cfFormat; - byte _rgb; - - @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } - @property bool fAck() { return cast(bool) (_bf & 0x1000); } - @property bool fRelease() { return cast(bool) (_bf & 0x2000); } - @property bool fReserved() { return cast(bool) (_bf & 0x4000); } - @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - @property byte* rgb() { return &_rgb; } - - @property ushort unused(ushort r) { - _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); - return cast(ushort)(r & 0x0FFF); - } - - @property bool fAck(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } - @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - @property bool fReserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } -} - -extern (Windows) { - BOOL DdeSetQualityOfService(HWND, const(SECURITY_QUALITY_OF_SERVICE)*, - PSECURITY_QUALITY_OF_SERVICE); - BOOL ImpersonateDdeClientWindow(HWND, HWND); - LPARAM PackDDElParam(UINT, UINT_PTR, UINT_PTR); - BOOL UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR); - BOOL FreeDDElParam(UINT, LPARAM); - LPARAM ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR); -} - -debug (WindowsUnitTest) { - unittest { - DDEACK ddeack; - - with (ddeack) { - reserved = 10; - assert (_bf == 0x0A); - fBusy = true; - assert (_bf == 0x4A); - fAck = true; - assert (_bf == 0xCA); - - assert (reserved == 10); - assert (fBusy == true); - assert (fAck == true); - - reserved = 43; - assert (_bf == 0xEB); - fBusy = false; - assert (_bf == 0xAB); - fAck = false; - assert (_bf == 0x2B); - - assert (reserved == 43); - assert (fBusy == false); - assert (fAck == false); - } - - DDEPOKE ddepoke; - - with (ddepoke) { - unused = 3456; - assert (_bf == 0x0D80); - fRelease = true; - assert (_bf == 0x2D80); - fReserved = 2; - assert (_bf == 0xAD80); - - assert (unused == 3456); - assert (fRelease == true); - assert (fReserved == 2); - - unused = 2109; - assert (_bf == 0xa83d); - fRelease = false; - assert (_bf == 0x883d); - fReserved = 1; - assert (_bf == 0x483d); - - assert (unused == 2109); - assert (fRelease == false); - assert (fReserved == 1); - } - } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_dde.d) + */ +module core.sys.windows.dde; +pragma(lib, "user32"); + +private import core.sys.windows.windef; + +enum : uint { + WM_DDE_FIRST = 0x03E0, + WM_DDE_INITIATE = WM_DDE_FIRST, + WM_DDE_TERMINATE, + WM_DDE_ADVISE, + WM_DDE_UNADVISE, + WM_DDE_ACK, + WM_DDE_DATA, + WM_DDE_REQUEST, + WM_DDE_POKE, + WM_DDE_EXECUTE, + WM_DDE_LAST = WM_DDE_EXECUTE +} + +struct DDEACK { + ubyte bAppReturnCode; + ubyte _bf; + + @property ubyte reserved() { return cast(ubyte) (_bf & 0x3F); } + @property bool fBusy() { return cast(bool) (_bf & 0x40); } + @property bool fAck() { return cast(bool) (_bf & 0x80); } + + @property ubyte reserved(ubyte r) { + _bf = cast(ubyte) ((_bf & ~0x3F) | (r & 0x3F)); + return cast(ubyte)(r & 0x3F); + } + + @property bool fBusy(bool f) { _bf = cast(ubyte) ((_bf & ~0x40) | (f << 6)); return f; } + @property bool fAck(bool f) { _bf = cast(ubyte) ((_bf & ~0x80) | (f << 7)); return f; } +} + +struct DDEADVISE { + ushort _bf; + short cfFormat; + + @property ushort reserved() { return cast(ushort) (_bf & 0x3FFF); } + @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property ushort reserved(ushort r) { + _bf = cast(ushort) ((_bf & ~0x3FFF) | (r & 0x3FFF)); + return cast(ushort)(r & 0x3FFF); + } + + @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +struct DDEDATA { + ushort _bf; + short cfFormat; + byte _Value; + + @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } + @property bool fResponse() { return cast(bool) (_bf & 0x1000); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool reserved() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property byte* Value() { return &_Value; } + + @property ushort unused(ushort r) { + _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); + return cast(ushort)(r & 0x0FFF); + } + + @property bool fResponse(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool reserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +struct DDEPOKE { + ushort _bf; + short cfFormat; + byte _Value; + + @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property ubyte fReserved() { return cast(ubyte) ((_bf & 0xC000) >>> 14); } + + @property byte* Value() { return &_Value; } + + @property ushort unused(ushort u) { + _bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF)); + return cast(ushort)(u & 0x1FFF); + } + + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property ubyte fReserved(ubyte r) { _bf = cast(ushort) ((_bf & ~0xC000) | (r << 14)); return r; } +} + +deprecated struct DDELN { + ushort _bf; + short cfFormat; + + @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property ushort unused(ushort u) { + _bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF)); + return cast(ushort)(u & 0x1FFF); + } + + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +deprecated struct DDEUP { + ushort _bf; + short cfFormat; + byte _rgb; + + @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } + @property bool fAck() { return cast(bool) (_bf & 0x1000); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool fReserved() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property byte* rgb() { return &_rgb; } + + @property ushort unused(ushort r) { + _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); + return cast(ushort)(r & 0x0FFF); + } + + @property bool fAck(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool fReserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +extern (Windows) { + BOOL DdeSetQualityOfService(HWND, const(SECURITY_QUALITY_OF_SERVICE)*, + PSECURITY_QUALITY_OF_SERVICE); + BOOL ImpersonateDdeClientWindow(HWND, HWND); + LPARAM PackDDElParam(UINT, UINT_PTR, UINT_PTR); + BOOL UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR); + BOOL FreeDDElParam(UINT, LPARAM); + LPARAM ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR); +} + +debug (WindowsUnitTest) { + unittest { + DDEACK ddeack; + + with (ddeack) { + reserved = 10; + assert (_bf == 0x0A); + fBusy = true; + assert (_bf == 0x4A); + fAck = true; + assert (_bf == 0xCA); + + assert (reserved == 10); + assert (fBusy == true); + assert (fAck == true); + + reserved = 43; + assert (_bf == 0xEB); + fBusy = false; + assert (_bf == 0xAB); + fAck = false; + assert (_bf == 0x2B); + + assert (reserved == 43); + assert (fBusy == false); + assert (fAck == false); + } + + DDEPOKE ddepoke; + + with (ddepoke) { + unused = 3456; + assert (_bf == 0x0D80); + fRelease = true; + assert (_bf == 0x2D80); + fReserved = 2; + assert (_bf == 0xAD80); + + assert (unused == 3456); + assert (fRelease == true); + assert (fReserved == 2); + + unused = 2109; + assert (_bf == 0xa83d); + fRelease = false; + assert (_bf == 0x883d); + fReserved = 1; + assert (_bf == 0x483d); + + assert (unused == 2109); + assert (fRelease == false); + assert (fReserved == 1); + } + } +} diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index 749e8505a3..d935314424 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -1,376 +1,376 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ddeml.d) - */ -module core.sys.windows.ddeml; -pragma(lib, "user32"); - -private import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winnt; - -enum : int { - CP_WINANSI = 1004, - CP_WINUNICODE = 1200 -} - -enum : UINT { - XTYPF_NOBLOCK = 2, - XTYPF_NODATA = 4, - XTYPF_ACKREQ = 8 -} - -enum : UINT { - XCLASS_MASK = 0xFC00, - XCLASS_BOOL = 0x1000, - XCLASS_DATA = 0x2000, - XCLASS_FLAGS = 0x4000, - XCLASS_NOTIFICATION = 0x8000 -} - -enum : UINT { - XST_NULL, - XST_INCOMPLETE, - XST_CONNECTED, - XST_INIT1, - XST_INIT2, - XST_REQSENT, - XST_DATARCVD, - XST_POKESENT, - XST_POKEACKRCVD, - XST_EXECSENT, - XST_EXECACKRCVD, - XST_ADVSENT, - XST_UNADVSENT, - XST_ADVACKRCVD, - XST_UNADVACKRCVD, - XST_ADVDATASENT, - XST_ADVDATAACKRCVD // = 16 -} - -enum : UINT { - XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS, - XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK, - XTYP_ADVSTART = 0x0030 | XCLASS_BOOL, - XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION, - XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS, - XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK, - XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION, - XTYP_POKE = 0x0090 | XCLASS_FLAGS, - XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_REQUEST = 0x00B0 | XCLASS_DATA, - XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK, - XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_MASK = 0x00F0, - XTYP_SHIFT = 4 -} - -/+ -#define TIMEOUT_ASYNC 0xFFFFFFFF -#define QID_SYNC 0xFFFFFFFF -+/ - -enum : UINT { - ST_CONNECTED = 1, - ST_ADVISE = 2, - ST_ISLOCAL = 4, - ST_BLOCKED = 8, - ST_CLIENT = 16, - ST_TERMINATED = 32, - ST_INLIST = 64, - ST_BLOCKNEXT = 128, - ST_ISSELF = 256 -} - -/+ -#define CADV_LATEACK 0xFFFF -+/ - -enum : UINT { - DMLERR_NO_ERROR = 0, - DMLERR_FIRST = 0x4000, - DMLERR_ADVACKTIMEOUT = DMLERR_FIRST, - DMLERR_BUSY, - DMLERR_DATAACKTIMEOUT, - DMLERR_DLL_NOT_INITIALIZED, - DMLERR_DLL_USAGE, - DMLERR_EXECACKTIMEOUT, - DMLERR_INVALIDPARAMETER, - DMLERR_LOW_MEMORY, - DMLERR_MEMORY_ERROR, - DMLERR_NOTPROCESSED, - DMLERR_NO_CONV_ESTABLISHED, - DMLERR_POKEACKTIMEOUT, - DMLERR_POSTMSG_FAILED, - DMLERR_REENTRANCY, - DMLERR_SERVER_DIED, - DMLERR_SYS_ERROR, - DMLERR_UNADVACKTIMEOUT, - DMLERR_UNFOUND_QUEUE_ID, // = 0x4011 - DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID -} - -/+ -#define DDE_FACK 0x8000 -#define DDE_FBUSY 0x4000 -#define DDE_FDEFERUPD 0x4000 -#define DDE_FACKREQ 0x8000 -#define DDE_FRELEASE 0x2000 -#define DDE_FREQUESTED 0x1000 -#define DDE_FAPPSTATUS 0x00ff -#define DDE_FNOTPROCESSED 0 -#define DDE_FACKRESERVED (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS)) -#define DDE_FADVRESERVED (~(DDE_FACKREQ|DDE_FDEFERUPD)) -#define DDE_FDATRESERVED (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED)) -#define DDE_FPOKRESERVED (~DDE_FRELEASE) -#define MSGF_DDEMGR 0x8001 -#define CBR_BLOCK ((HDDEDATA)0xffffffff) -+/ - -const DWORD - APPCLASS_STANDARD = 0, - APPCLASS_MONITOR = 0x00000001, - APPCLASS_MASK = 0x0000000F, - APPCMD_CLIENTONLY = 0x00000010, - APPCMD_FILTERINITS = 0x00000020, - APPCMD_MASK = 0x00000FF0, - CBF_FAIL_SELFCONNECTIONS = 0x00001000, - CBF_FAIL_CONNECTIONS = 0x00002000, - CBF_FAIL_ADVISES = 0x00004000, - CBF_FAIL_EXECUTES = 0x00008000, - CBF_FAIL_POKES = 0x00010000, - CBF_FAIL_REQUESTS = 0x00020000, - CBF_FAIL_ALLSVRXACTIONS = 0x0003f000, - CBF_SKIP_CONNECT_CONFIRMS = 0x00040000, - CBF_SKIP_REGISTRATIONS = 0x00080000, - CBF_SKIP_UNREGISTRATIONS = 0x00100000, - CBF_SKIP_DISCONNECTS = 0x00200000, - CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000, - MF_HSZ_INFO = 0x01000000, - MF_SENDMSGS = 0x02000000, - MF_POSTMSGS = 0x04000000, - MF_CALLBACKS = 0x08000000, - MF_ERRORS = 0x10000000, - MF_LINKS = 0x20000000, - MF_CONV = 0x40000000, - MF_MASK = 0xFF000000; - -enum : UINT { - EC_ENABLEALL = 0, - EC_ENABLEONE = ST_BLOCKNEXT, - EC_DISABLE = ST_BLOCKED, - EC_QUERYWAITING = 2 -} - -enum : UINT { - DNS_REGISTER = 1, - DNS_UNREGISTER = 2, - DNS_FILTERON = 4, - DNS_FILTEROFF = 8 -} - -/+ -#define HDATA_APPOWNED 1 -#define MAX_MONITORS 4 -+/ - -enum : int { - MH_CREATE = 1, - MH_KEEP = 2, - MH_DELETE = 3, - MH_CLEANUP = 4 -} - -mixin DECLARE_HANDLE!("HCONVLIST"); -mixin DECLARE_HANDLE!("HCONV"); -mixin DECLARE_HANDLE!("HSZ"); -mixin DECLARE_HANDLE!("HDDEDATA"); - -extern (Windows) alias HDDEDATA - function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD) PFNCALLBACK; - -struct HSZPAIR { - HSZ hszSvc; - HSZ hszTopic; -} -alias HSZPAIR* PHSZPAIR; - -struct CONVCONTEXT { - UINT cb = CONVCONTEXT.sizeof; - UINT wFlags; - UINT wCountryID; - int iCodePage; - DWORD dwLangID; - DWORD dwSecurity; - SECURITY_QUALITY_OF_SERVICE qos; -} -alias CONVCONTEXT* PCONVCONTEXT; - -struct CONVINFO { - DWORD cb = CONVINFO.sizeof; - DWORD hUser; - HCONV hConvPartner; - HSZ hszSvcPartner; - HSZ hszServiceReq; - HSZ hszTopic; - HSZ hszItem; - UINT wFmt; - UINT wType; - UINT wStatus; - UINT wConvst; - UINT wLastError; - HCONVLIST hConvList; - CONVCONTEXT ConvCtxt; - HWND hwnd; - HWND hwndPartner; -} -alias CONVINFO* PCONVINFO; - -struct DDEML_MSG_HOOK_DATA { - UINT_PTR uiLo; - UINT_PTR uiHi; - DWORD cbData; - DWORD[8] Data; -} - -struct MONHSZSTRUCT { - UINT cb = MONHSZSTRUCT.sizeof; - int fsAction; - DWORD dwTime; - HSZ hsz; - HANDLE hTask; - TCHAR[1] _str; - - TCHAR* str() { return _str.ptr; } -} -alias MONHSZSTRUCT* PMONHSZSTRUCT; - -struct MONLINKSTRUCT { - UINT cb = MONLINKSTRUCT.sizeof; - DWORD dwTime; - HANDLE hTask; - BOOL fEstablished; - BOOL fNoData; - HSZ hszSvc; - HSZ hszTopic; - HSZ hszItem; - UINT wFmt; - BOOL fServer; - HCONV hConvServer; - HCONV hConvClient; -} -alias MONLINKSTRUCT* PMONLINKSTRUCT; - -struct MONCONVSTRUCT { - UINT cb = MONCONVSTRUCT.sizeof; - BOOL fConnect; - DWORD dwTime; - HANDLE hTask; - HSZ hszSvc; - HSZ hszTopic; - HCONV hConvClient; - HCONV hConvServer; -} -alias MONCONVSTRUCT* PMONCONVSTRUCT; - -struct MONCBSTRUCT { - UINT cb = MONCBSTRUCT.sizeof; - DWORD dwTime; - HANDLE hTask; - DWORD dwRet; - UINT wType; - UINT wFmt; - HCONV hConv; - HSZ hsz1; - HSZ hsz2; - HDDEDATA hData; - ULONG_PTR dwData1; - ULONG_PTR dwData2; - CONVCONTEXT cc; - DWORD cbData; - DWORD[8] Data; -} -alias MONCBSTRUCT* PMONCBSTRUCT; - -struct MONERRSTRUCT { - UINT cb = MONERRSTRUCT.sizeof; - UINT wLastError; - DWORD dwTime; - HANDLE hTask; -} -alias MONERRSTRUCT* PMONERRSTRUCT; - -struct MONMSGSTRUCT { - UINT cb = MONMSGSTRUCT.sizeof; - HWND hwndTo; - DWORD dwTime; - HANDLE hTask; - UINT wMsg; - WPARAM wParam; - LPARAM lParam; - DDEML_MSG_HOOK_DATA dmhd; -} -alias MONMSGSTRUCT* PMONMSGSTRUCT; - -extern (Windows) { - BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD); - PBYTE DdeAccessData(HDDEDATA, PDWORD); - HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD); - HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT, - DWORD, PDWORD); - int DdeCmpStringHandles(HSZ, HSZ); - HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT); - HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT); - HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT, - UINT); - HSZ DdeCreateStringHandleA(DWORD, LPSTR, int); - HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int); - BOOL DdeDisconnect(HCONV); - BOOL DdeDisconnectList(HCONVLIST); - BOOL DdeEnableCallback(DWORD, HCONV, UINT); - BOOL DdeFreeDataHandle(HDDEDATA); - BOOL DdeFreeStringHandle(DWORD, HSZ); - DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD); - UINT DdeGetLastError(DWORD); - BOOL DdeImpersonateClient(HCONV); - UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD); - UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD); - BOOL DdeKeepStringHandle(DWORD, HSZ); - HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT); - BOOL DdePostAdvise(DWORD, HSZ, HSZ); - UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO); - HCONV DdeQueryNextServer(HCONVLIST, HCONV); - DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int); - DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int); - HCONV DdeReconnect(HCONV); - BOOL DdeSetUserHandle(HCONV, DWORD, DWORD); - BOOL DdeUnaccessData(HDDEDATA); - BOOL DdeUninitialize(DWORD); -} - -const TCHAR[] - SZDDESYS_TOPIC = "System", - SZDDESYS_ITEM_TOPICS = "Topics", - SZDDESYS_ITEM_SYSITEMS = "SysItems", - SZDDESYS_ITEM_RTNMSG = "ReturnMessage", - SZDDESYS_ITEM_STATUS = "Status", - SZDDESYS_ITEM_FORMATS = "Formats", - SZDDESYS_ITEM_HELP = "Help", - SZDDE_ITEM_ITEMLIST = "TopicItemList"; - -version (Unicode) { - alias DdeCreateStringHandleW DdeCreateStringHandle; - alias DdeInitializeW DdeInitialize; - alias DdeQueryStringW DdeQueryString; -} else { - alias DdeCreateStringHandleA DdeCreateStringHandle; - alias DdeInitializeA DdeInitialize; - alias DdeQueryStringA DdeQueryString; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ddeml.d) + */ +module core.sys.windows.ddeml; +pragma(lib, "user32"); + +private import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winnt; + +enum : int { + CP_WINANSI = 1004, + CP_WINUNICODE = 1200 +} + +enum : UINT { + XTYPF_NOBLOCK = 2, + XTYPF_NODATA = 4, + XTYPF_ACKREQ = 8 +} + +enum : UINT { + XCLASS_MASK = 0xFC00, + XCLASS_BOOL = 0x1000, + XCLASS_DATA = 0x2000, + XCLASS_FLAGS = 0x4000, + XCLASS_NOTIFICATION = 0x8000 +} + +enum : UINT { + XST_NULL, + XST_INCOMPLETE, + XST_CONNECTED, + XST_INIT1, + XST_INIT2, + XST_REQSENT, + XST_DATARCVD, + XST_POKESENT, + XST_POKEACKRCVD, + XST_EXECSENT, + XST_EXECACKRCVD, + XST_ADVSENT, + XST_UNADVSENT, + XST_ADVACKRCVD, + XST_UNADVACKRCVD, + XST_ADVDATASENT, + XST_ADVDATAACKRCVD // = 16 +} + +enum : UINT { + XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS, + XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK, + XTYP_ADVSTART = 0x0030 | XCLASS_BOOL, + XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION, + XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS, + XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK, + XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION, + XTYP_POKE = 0x0090 | XCLASS_FLAGS, + XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_REQUEST = 0x00B0 | XCLASS_DATA, + XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK, + XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_MASK = 0x00F0, + XTYP_SHIFT = 4 +} + +/+ +#define TIMEOUT_ASYNC 0xFFFFFFFF +#define QID_SYNC 0xFFFFFFFF ++/ + +enum : UINT { + ST_CONNECTED = 1, + ST_ADVISE = 2, + ST_ISLOCAL = 4, + ST_BLOCKED = 8, + ST_CLIENT = 16, + ST_TERMINATED = 32, + ST_INLIST = 64, + ST_BLOCKNEXT = 128, + ST_ISSELF = 256 +} + +/+ +#define CADV_LATEACK 0xFFFF ++/ + +enum : UINT { + DMLERR_NO_ERROR = 0, + DMLERR_FIRST = 0x4000, + DMLERR_ADVACKTIMEOUT = DMLERR_FIRST, + DMLERR_BUSY, + DMLERR_DATAACKTIMEOUT, + DMLERR_DLL_NOT_INITIALIZED, + DMLERR_DLL_USAGE, + DMLERR_EXECACKTIMEOUT, + DMLERR_INVALIDPARAMETER, + DMLERR_LOW_MEMORY, + DMLERR_MEMORY_ERROR, + DMLERR_NOTPROCESSED, + DMLERR_NO_CONV_ESTABLISHED, + DMLERR_POKEACKTIMEOUT, + DMLERR_POSTMSG_FAILED, + DMLERR_REENTRANCY, + DMLERR_SERVER_DIED, + DMLERR_SYS_ERROR, + DMLERR_UNADVACKTIMEOUT, + DMLERR_UNFOUND_QUEUE_ID, // = 0x4011 + DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID +} + +/+ +#define DDE_FACK 0x8000 +#define DDE_FBUSY 0x4000 +#define DDE_FDEFERUPD 0x4000 +#define DDE_FACKREQ 0x8000 +#define DDE_FRELEASE 0x2000 +#define DDE_FREQUESTED 0x1000 +#define DDE_FAPPSTATUS 0x00ff +#define DDE_FNOTPROCESSED 0 +#define DDE_FACKRESERVED (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS)) +#define DDE_FADVRESERVED (~(DDE_FACKREQ|DDE_FDEFERUPD)) +#define DDE_FDATRESERVED (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED)) +#define DDE_FPOKRESERVED (~DDE_FRELEASE) +#define MSGF_DDEMGR 0x8001 +#define CBR_BLOCK ((HDDEDATA)0xffffffff) ++/ + +const DWORD + APPCLASS_STANDARD = 0, + APPCLASS_MONITOR = 0x00000001, + APPCLASS_MASK = 0x0000000F, + APPCMD_CLIENTONLY = 0x00000010, + APPCMD_FILTERINITS = 0x00000020, + APPCMD_MASK = 0x00000FF0, + CBF_FAIL_SELFCONNECTIONS = 0x00001000, + CBF_FAIL_CONNECTIONS = 0x00002000, + CBF_FAIL_ADVISES = 0x00004000, + CBF_FAIL_EXECUTES = 0x00008000, + CBF_FAIL_POKES = 0x00010000, + CBF_FAIL_REQUESTS = 0x00020000, + CBF_FAIL_ALLSVRXACTIONS = 0x0003f000, + CBF_SKIP_CONNECT_CONFIRMS = 0x00040000, + CBF_SKIP_REGISTRATIONS = 0x00080000, + CBF_SKIP_UNREGISTRATIONS = 0x00100000, + CBF_SKIP_DISCONNECTS = 0x00200000, + CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000, + MF_HSZ_INFO = 0x01000000, + MF_SENDMSGS = 0x02000000, + MF_POSTMSGS = 0x04000000, + MF_CALLBACKS = 0x08000000, + MF_ERRORS = 0x10000000, + MF_LINKS = 0x20000000, + MF_CONV = 0x40000000, + MF_MASK = 0xFF000000; + +enum : UINT { + EC_ENABLEALL = 0, + EC_ENABLEONE = ST_BLOCKNEXT, + EC_DISABLE = ST_BLOCKED, + EC_QUERYWAITING = 2 +} + +enum : UINT { + DNS_REGISTER = 1, + DNS_UNREGISTER = 2, + DNS_FILTERON = 4, + DNS_FILTEROFF = 8 +} + +/+ +#define HDATA_APPOWNED 1 +#define MAX_MONITORS 4 ++/ + +enum : int { + MH_CREATE = 1, + MH_KEEP = 2, + MH_DELETE = 3, + MH_CLEANUP = 4 +} + +mixin DECLARE_HANDLE!("HCONVLIST"); +mixin DECLARE_HANDLE!("HCONV"); +mixin DECLARE_HANDLE!("HSZ"); +mixin DECLARE_HANDLE!("HDDEDATA"); + +extern (Windows) alias HDDEDATA + function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD) PFNCALLBACK; + +struct HSZPAIR { + HSZ hszSvc; + HSZ hszTopic; +} +alias HSZPAIR* PHSZPAIR; + +struct CONVCONTEXT { + UINT cb = CONVCONTEXT.sizeof; + UINT wFlags; + UINT wCountryID; + int iCodePage; + DWORD dwLangID; + DWORD dwSecurity; + SECURITY_QUALITY_OF_SERVICE qos; +} +alias CONVCONTEXT* PCONVCONTEXT; + +struct CONVINFO { + DWORD cb = CONVINFO.sizeof; + DWORD hUser; + HCONV hConvPartner; + HSZ hszSvcPartner; + HSZ hszServiceReq; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + UINT wType; + UINT wStatus; + UINT wConvst; + UINT wLastError; + HCONVLIST hConvList; + CONVCONTEXT ConvCtxt; + HWND hwnd; + HWND hwndPartner; +} +alias CONVINFO* PCONVINFO; + +struct DDEML_MSG_HOOK_DATA { + UINT_PTR uiLo; + UINT_PTR uiHi; + DWORD cbData; + DWORD[8] Data; +} + +struct MONHSZSTRUCT { + UINT cb = MONHSZSTRUCT.sizeof; + int fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + TCHAR[1] _str; + + TCHAR* str() { return _str.ptr; } +} +alias MONHSZSTRUCT* PMONHSZSTRUCT; + +struct MONLINKSTRUCT { + UINT cb = MONLINKSTRUCT.sizeof; + DWORD dwTime; + HANDLE hTask; + BOOL fEstablished; + BOOL fNoData; + HSZ hszSvc; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + BOOL fServer; + HCONV hConvServer; + HCONV hConvClient; +} +alias MONLINKSTRUCT* PMONLINKSTRUCT; + +struct MONCONVSTRUCT { + UINT cb = MONCONVSTRUCT.sizeof; + BOOL fConnect; + DWORD dwTime; + HANDLE hTask; + HSZ hszSvc; + HSZ hszTopic; + HCONV hConvClient; + HCONV hConvServer; +} +alias MONCONVSTRUCT* PMONCONVSTRUCT; + +struct MONCBSTRUCT { + UINT cb = MONCBSTRUCT.sizeof; + DWORD dwTime; + HANDLE hTask; + DWORD dwRet; + UINT wType; + UINT wFmt; + HCONV hConv; + HSZ hsz1; + HSZ hsz2; + HDDEDATA hData; + ULONG_PTR dwData1; + ULONG_PTR dwData2; + CONVCONTEXT cc; + DWORD cbData; + DWORD[8] Data; +} +alias MONCBSTRUCT* PMONCBSTRUCT; + +struct MONERRSTRUCT { + UINT cb = MONERRSTRUCT.sizeof; + UINT wLastError; + DWORD dwTime; + HANDLE hTask; +} +alias MONERRSTRUCT* PMONERRSTRUCT; + +struct MONMSGSTRUCT { + UINT cb = MONMSGSTRUCT.sizeof; + HWND hwndTo; + DWORD dwTime; + HANDLE hTask; + UINT wMsg; + WPARAM wParam; + LPARAM lParam; + DDEML_MSG_HOOK_DATA dmhd; +} +alias MONMSGSTRUCT* PMONMSGSTRUCT; + +extern (Windows) { + BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD); + PBYTE DdeAccessData(HDDEDATA, PDWORD); + HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD); + HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT, + DWORD, PDWORD); + int DdeCmpStringHandles(HSZ, HSZ); + HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT); + HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT); + HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT, + UINT); + HSZ DdeCreateStringHandleA(DWORD, LPSTR, int); + HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int); + BOOL DdeDisconnect(HCONV); + BOOL DdeDisconnectList(HCONVLIST); + BOOL DdeEnableCallback(DWORD, HCONV, UINT); + BOOL DdeFreeDataHandle(HDDEDATA); + BOOL DdeFreeStringHandle(DWORD, HSZ); + DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD); + UINT DdeGetLastError(DWORD); + BOOL DdeImpersonateClient(HCONV); + UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD); + UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD); + BOOL DdeKeepStringHandle(DWORD, HSZ); + HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT); + BOOL DdePostAdvise(DWORD, HSZ, HSZ); + UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO); + HCONV DdeQueryNextServer(HCONVLIST, HCONV); + DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int); + DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int); + HCONV DdeReconnect(HCONV); + BOOL DdeSetUserHandle(HCONV, DWORD, DWORD); + BOOL DdeUnaccessData(HDDEDATA); + BOOL DdeUninitialize(DWORD); +} + +const TCHAR[] + SZDDESYS_TOPIC = "System", + SZDDESYS_ITEM_TOPICS = "Topics", + SZDDESYS_ITEM_SYSITEMS = "SysItems", + SZDDESYS_ITEM_RTNMSG = "ReturnMessage", + SZDDESYS_ITEM_STATUS = "Status", + SZDDESYS_ITEM_FORMATS = "Formats", + SZDDESYS_ITEM_HELP = "Help", + SZDDE_ITEM_ITEMLIST = "TopicItemList"; + +version (Unicode) { + alias DdeCreateStringHandleW DdeCreateStringHandle; + alias DdeInitializeW DdeInitialize; + alias DdeQueryStringW DdeQueryString; +} else { + alias DdeCreateStringHandleA DdeCreateStringHandle; + alias DdeInitializeA DdeInitialize; + alias DdeQueryStringA DdeQueryString; +} diff --git a/src/core/sys/windows/dhcpcsdk.d b/src/core/sys/windows/dhcpcsdk.d index 96dda90b79..3631ace072 100644 --- a/src/core/sys/windows/dhcpcsdk.d +++ b/src/core/sys/windows/dhcpcsdk.d @@ -1,57 +1,57 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_dhcpcsdk.d) - */ -module core.sys.windows.dhcpcsdk; - -private import core.sys.windows.w32api, core.sys.windows.windef; - -/*static assert (_WIN32_WINNT >= 0x500, -"core.sys.windows.dhcpcsdk is available only if version Windows2000, WindowsXP, Windows2003 -or WindowsVista is set");*/ - -//#if (_WIN32_WINNT >= 0x500) - -// FIXME: check type -const DHCPCAPI_REGISTER_HANDLE_EVENT = 1; -const DHCPCAPI_REQUEST_PERSISTENT = 1; -const DHCPCAPI_REQUEST_SYNCHRONOUS = 2; - -struct DHCPCAPI_CLASSID { - ULONG Flags; - LPBYTE Data; - ULONG nBytesData; -} -alias DHCPCAPI_CLASSID* PDHCPCAPI_CLASSID, LPDHCPCAPI_CLASSID; - -struct DHCPAPI_PARAMS { - ULONG Flags; - ULONG OptionId; - BOOL IsVendor; - LPBYTE Data; - DWORD nBytesData; -} -alias DHCPAPI_PARAMS* PDHCPAPI_PARAMS, LPDHCPAPI_PARAMS; - -struct DHCPCAPI_PARAMS_ARRAY { - ULONG nParams; - LPDHCPAPI_PARAMS Params; -} -alias DHCPCAPI_PARAMS_ARRAY* PDHCPCAPI_PARAMS_ARRAY, LPDHCPCAPI_PARAMS_ARRAY; - -extern (Windows) { - void DhcpCApiCleanup(); - DWORD DhcpCApiInitialize(LPDWORD); - DWORD DhcpDeRegisterParamChange(DWORD, LPVOID, LPVOID); - DWORD DhcpRegisterParamChange(DWORD, LPVOID, PWSTR, LPDHCPCAPI_CLASSID, - DHCPCAPI_PARAMS_ARRAY, LPVOID); - DWORD DhcpRemoveDNSRegistrations(); - DWORD DhcpUndoRequestParams(DWORD, LPVOID, LPWSTR, LPWSTR); -} - -//#endif // (_WIN32_WINNT >= 0x500) +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_dhcpcsdk.d) + */ +module core.sys.windows.dhcpcsdk; + +private import core.sys.windows.w32api, core.sys.windows.windef; + +/*static assert (_WIN32_WINNT >= 0x500, +"core.sys.windows.dhcpcsdk is available only if version Windows2000, WindowsXP, Windows2003 +or WindowsVista is set");*/ + +//#if (_WIN32_WINNT >= 0x500) + +// FIXME: check type +const DHCPCAPI_REGISTER_HANDLE_EVENT = 1; +const DHCPCAPI_REQUEST_PERSISTENT = 1; +const DHCPCAPI_REQUEST_SYNCHRONOUS = 2; + +struct DHCPCAPI_CLASSID { + ULONG Flags; + LPBYTE Data; + ULONG nBytesData; +} +alias DHCPCAPI_CLASSID* PDHCPCAPI_CLASSID, LPDHCPCAPI_CLASSID; + +struct DHCPAPI_PARAMS { + ULONG Flags; + ULONG OptionId; + BOOL IsVendor; + LPBYTE Data; + DWORD nBytesData; +} +alias DHCPAPI_PARAMS* PDHCPAPI_PARAMS, LPDHCPAPI_PARAMS; + +struct DHCPCAPI_PARAMS_ARRAY { + ULONG nParams; + LPDHCPAPI_PARAMS Params; +} +alias DHCPCAPI_PARAMS_ARRAY* PDHCPCAPI_PARAMS_ARRAY, LPDHCPCAPI_PARAMS_ARRAY; + +extern (Windows) { + void DhcpCApiCleanup(); + DWORD DhcpCApiInitialize(LPDWORD); + DWORD DhcpDeRegisterParamChange(DWORD, LPVOID, LPVOID); + DWORD DhcpRegisterParamChange(DWORD, LPVOID, PWSTR, LPDHCPCAPI_CLASSID, + DHCPCAPI_PARAMS_ARRAY, LPVOID); + DWORD DhcpRemoveDNSRegistrations(); + DWORD DhcpUndoRequestParams(DWORD, LPVOID, LPWSTR, LPWSTR); +} + +//#endif // (_WIN32_WINNT >= 0x500) diff --git a/src/core/sys/windows/dlgs.d b/src/core/sys/windows/dlgs.d index 48ec59212e..7fb535ee2c 100644 --- a/src/core/sys/windows/dlgs.d +++ b/src/core/sys/windows/dlgs.d @@ -1,190 +1,190 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_dlgs.d) - */ -module core.sys.windows.dlgs; - -private import core.sys.windows.windef; - -enum : ushort { - FILEOPENORD = 1536, - MULTIFILEOPENORD = 1537, - PRINTDLGORD = 1538, - PRNSETUPDLGORD = 1539, - FINDDLGORD = 1540, - REPLACEDLGORD = 1541, - FONTDLGORD = 1542, - FORMATDLGORD31 = 1543, - FORMATDLGORD30 = 1544, - PAGESETUPDLGORD = 1546 -} - -enum : int { - ctlFirst = 0x400, - ctlLast = 0x4ff, - chx1 = 0x410, - chx2 = 0x411, - chx3 = 0x412, - chx4 = 0x413, - chx5 = 0x414, - chx6 = 0x415, - chx7 = 0x416, - chx8 = 0x417, - chx9 = 0x418, - chx10 = 0x419, - chx11 = 0x41a, - chx12 = 0x41b, - chx13 = 0x41c, - chx14 = 0x41d, - chx15 = 0x41e, - chx16 = 0x41f, - cmb1 = 0x470, - cmb2 = 0x471, - cmb3 = 0x472, - cmb4 = 0x473, - cmb5 = 0x474, - cmb6 = 0x475, - cmb7 = 0x476, - cmb8 = 0x477, - cmb9 = 0x478, - cmb10 = 0x479, - cmb11 = 0x47a, - cmb12 = 0x47b, - cmb13 = 0x47c, - cmb14 = 0x47d, - cmb15 = 0x47e, - cmb16 = 0x47f, - edt1 = 0x480, - edt2 = 0x481, - edt3 = 0x482, - edt4 = 0x483, - edt5 = 0x484, - edt6 = 0x485, - edt7 = 0x486, - edt8 = 0x487, - edt9 = 0x488, - edt10 = 0x489, - edt11 = 0x48a, - edt12 = 0x48b, - edt13 = 0x48c, - edt14 = 0x48d, - edt15 = 0x48e, - edt16 = 0x48f, - frm1 = 0x434, - frm2 = 0x435, - frm3 = 0x436, - frm4 = 0x437, - grp1 = 0x430, - grp2 = 0x431, - grp3 = 0x432, - grp4 = 0x433, - ico1 = 0x43c, - ico2 = 0x43d, - ico3 = 0x43e, - ico4 = 0x43f, - lst1 = 0x460, - lst2 = 0x461, - lst3 = 0x462, - lst4 = 0x463, - lst5 = 0x464, - lst6 = 0x465, - lst7 = 0x466, - lst8 = 0x467, - lst9 = 0x468, - lst10 = 0x469, - lst11 = 0x46a, - lst12 = 0x46b, - lst13 = 0x46c, - lst14 = 0x46d, - lst15 = 0x46e, - lst16 = 0x46f, - psh1 = 0x400, - psh2 = 0x401, - psh3 = 0x402, - psh4 = 0x403, - psh5 = 0x404, - psh6 = 0x405, - psh7 = 0x406, - psh8 = 0x407, - psh9 = 0x408, - psh10 = 0x409, - psh11 = 0x40a, - psh12 = 0x40b, - psh13 = 0x40c, - psh14 = 0x40d, - psh15 = 0x40e, - pshHelp = 0x40e, - psh16 = 0x40f, - rad1 = 0x420, - rad2 = 0x421, - rad3 = 0x422, - rad4 = 0x423, - rad5 = 0x424, - rad6 = 0x425, - rad7 = 0x426, - rad8 = 0x427, - rad9 = 0x428, - rad10 = 0x429, - rad11 = 0x42a, - rad12 = 0x42b, - rad13 = 0x42c, - rad14 = 0x42d, - rad15 = 0x42e, - rad16 = 0x42f, - rct1 = 0x438, - rct2 = 0x439, - rct3 = 0x43a, - rct4 = 0x43b, - scr1 = 0x490, - scr2 = 0x491, - scr3 = 0x492, - scr4 = 0x493, - scr5 = 0x494, - scr6 = 0x495, - scr7 = 0x496, - scr8 = 0x497, - stc1 = 0x440, - stc2 = 0x441, - stc3 = 0x442, - stc4 = 0x443, - stc5 = 0x444, - stc6 = 0x445, - stc7 = 0x446, - stc8 = 0x447, - stc9 = 0x448, - stc10 = 0x449, - stc11 = 0x44a, - stc12 = 0x44b, - stc13 = 0x44c, - stc14 = 0x44d, - stc15 = 0x44e, - stc16 = 0x44f, - stc17 = 0x450, - stc18 = 0x451, - stc19 = 0x452, - stc20 = 0x453, - stc21 = 0x454, - stc22 = 0x455, - stc23 = 0x456, - stc24 = 0x457, - stc25 = 0x458, - stc26 = 0x459, - stc27 = 0x45a, - stc28 = 0x45b, - stc29 = 0x45c, - stc30 = 0x45d, - stc31 = 0x45e, - stc32 = 0x45f -} - -struct CRGB { - ubyte bRed; - ubyte bGreen; - ubyte bBlue; - ubyte bExtra; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_dlgs.d) + */ +module core.sys.windows.dlgs; + +private import core.sys.windows.windef; + +enum : ushort { + FILEOPENORD = 1536, + MULTIFILEOPENORD = 1537, + PRINTDLGORD = 1538, + PRNSETUPDLGORD = 1539, + FINDDLGORD = 1540, + REPLACEDLGORD = 1541, + FONTDLGORD = 1542, + FORMATDLGORD31 = 1543, + FORMATDLGORD30 = 1544, + PAGESETUPDLGORD = 1546 +} + +enum : int { + ctlFirst = 0x400, + ctlLast = 0x4ff, + chx1 = 0x410, + chx2 = 0x411, + chx3 = 0x412, + chx4 = 0x413, + chx5 = 0x414, + chx6 = 0x415, + chx7 = 0x416, + chx8 = 0x417, + chx9 = 0x418, + chx10 = 0x419, + chx11 = 0x41a, + chx12 = 0x41b, + chx13 = 0x41c, + chx14 = 0x41d, + chx15 = 0x41e, + chx16 = 0x41f, + cmb1 = 0x470, + cmb2 = 0x471, + cmb3 = 0x472, + cmb4 = 0x473, + cmb5 = 0x474, + cmb6 = 0x475, + cmb7 = 0x476, + cmb8 = 0x477, + cmb9 = 0x478, + cmb10 = 0x479, + cmb11 = 0x47a, + cmb12 = 0x47b, + cmb13 = 0x47c, + cmb14 = 0x47d, + cmb15 = 0x47e, + cmb16 = 0x47f, + edt1 = 0x480, + edt2 = 0x481, + edt3 = 0x482, + edt4 = 0x483, + edt5 = 0x484, + edt6 = 0x485, + edt7 = 0x486, + edt8 = 0x487, + edt9 = 0x488, + edt10 = 0x489, + edt11 = 0x48a, + edt12 = 0x48b, + edt13 = 0x48c, + edt14 = 0x48d, + edt15 = 0x48e, + edt16 = 0x48f, + frm1 = 0x434, + frm2 = 0x435, + frm3 = 0x436, + frm4 = 0x437, + grp1 = 0x430, + grp2 = 0x431, + grp3 = 0x432, + grp4 = 0x433, + ico1 = 0x43c, + ico2 = 0x43d, + ico3 = 0x43e, + ico4 = 0x43f, + lst1 = 0x460, + lst2 = 0x461, + lst3 = 0x462, + lst4 = 0x463, + lst5 = 0x464, + lst6 = 0x465, + lst7 = 0x466, + lst8 = 0x467, + lst9 = 0x468, + lst10 = 0x469, + lst11 = 0x46a, + lst12 = 0x46b, + lst13 = 0x46c, + lst14 = 0x46d, + lst15 = 0x46e, + lst16 = 0x46f, + psh1 = 0x400, + psh2 = 0x401, + psh3 = 0x402, + psh4 = 0x403, + psh5 = 0x404, + psh6 = 0x405, + psh7 = 0x406, + psh8 = 0x407, + psh9 = 0x408, + psh10 = 0x409, + psh11 = 0x40a, + psh12 = 0x40b, + psh13 = 0x40c, + psh14 = 0x40d, + psh15 = 0x40e, + pshHelp = 0x40e, + psh16 = 0x40f, + rad1 = 0x420, + rad2 = 0x421, + rad3 = 0x422, + rad4 = 0x423, + rad5 = 0x424, + rad6 = 0x425, + rad7 = 0x426, + rad8 = 0x427, + rad9 = 0x428, + rad10 = 0x429, + rad11 = 0x42a, + rad12 = 0x42b, + rad13 = 0x42c, + rad14 = 0x42d, + rad15 = 0x42e, + rad16 = 0x42f, + rct1 = 0x438, + rct2 = 0x439, + rct3 = 0x43a, + rct4 = 0x43b, + scr1 = 0x490, + scr2 = 0x491, + scr3 = 0x492, + scr4 = 0x493, + scr5 = 0x494, + scr6 = 0x495, + scr7 = 0x496, + scr8 = 0x497, + stc1 = 0x440, + stc2 = 0x441, + stc3 = 0x442, + stc4 = 0x443, + stc5 = 0x444, + stc6 = 0x445, + stc7 = 0x446, + stc8 = 0x447, + stc9 = 0x448, + stc10 = 0x449, + stc11 = 0x44a, + stc12 = 0x44b, + stc13 = 0x44c, + stc14 = 0x44d, + stc15 = 0x44e, + stc16 = 0x44f, + stc17 = 0x450, + stc18 = 0x451, + stc19 = 0x452, + stc20 = 0x453, + stc21 = 0x454, + stc22 = 0x455, + stc23 = 0x456, + stc24 = 0x457, + stc25 = 0x458, + stc26 = 0x459, + stc27 = 0x45a, + stc28 = 0x45b, + stc29 = 0x45c, + stc30 = 0x45d, + stc31 = 0x45e, + stc32 = 0x45f +} + +struct CRGB { + ubyte bRed; + ubyte bGreen; + ubyte bBlue; + ubyte bExtra; +} diff --git a/src/core/sys/windows/docobj.d b/src/core/sys/windows/docobj.d index 8205f47f2d..656e6a0859 100644 --- a/src/core/sys/windows/docobj.d +++ b/src/core/sys/windows/docobj.d @@ -1,132 +1,132 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_docobj.d) - */ -module core.sys.windows.docobj; - -private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.objidl, core.sys.windows.oleidl, - core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; - -// FIXME: remove inherited methods from interface definitions - -enum { - OLECMDERR_E_UNKNOWNGROUP = -2147221244, - OLECMDERR_E_CANCELED = -2147221245, - OLECMDERR_E_NOHELP = -2147221246, - OLECMDERR_E_DISABLED = -2147221247, - OLECMDERR_E_NOTSUPPORTED = -2147221248 -} - -enum OLECMDID { - OLECMDID_OPEN = 1, - OLECMDID_NEW = 2, - OLECMDID_SAVE = 3, - OLECMDID_SAVEAS = 4, - OLECMDID_SAVECOPYAS = 5, - OLECMDID_PRINT = 6, - OLECMDID_PRINTPREVIEW = 7, - OLECMDID_PAGESETUP = 8, - OLECMDID_SPELL = 9, - OLECMDID_PROPERTIES = 10, - OLECMDID_CUT = 11, - OLECMDID_COPY = 12, - OLECMDID_PASTE = 13, - OLECMDID_PASTESPECIAL = 14, - OLECMDID_UNDO = 15, - OLECMDID_REDO = 16, - OLECMDID_SELECTALL = 17, - OLECMDID_CLEARSELECTION = 18, - OLECMDID_ZOOM = 19, - OLECMDID_GETZOOMRANGE = 20, - OLECMDID_UPDATECOMMANDS = 21, - OLECMDID_REFRESH = 22, - OLECMDID_STOP = 23, - OLECMDID_HIDETOOLBARS = 24, - OLECMDID_SETPROGRESSMAX = 25, - OLECMDID_SETPROGRESSPOS = 26, - OLECMDID_SETPROGRESSTEXT = 27, - OLECMDID_SETTITLE = 28, - OLECMDID_SETDOWNLOADSTATE = 29, - OLECMDID_STOPDOWNLOAD = 30 -} - -enum OLECMDF { - OLECMDF_SUPPORTED = 1, - OLECMDF_ENABLED = 2, - OLECMDF_LATCHED = 4, - OLECMDF_NINCHED = 8 -} - -enum OLECMDEXECOPT { - OLECMDEXECOPT_DODEFAULT = 0, - OLECMDEXECOPT_PROMPTUSER = 1, - OLECMDEXECOPT_DONTPROMPTUSER = 2, - OLECMDEXECOPT_SHOWHELP = 3 -} - -struct OLECMDTEXT { - DWORD cmdtextf; - ULONG cwActual; - ULONG cwBuf; - wchar[1] rgwz; -} - -struct OLECMD { - ULONG cmdID; - DWORD cmdf; -} - -alias IOleInPlaceSite LPOLEINPLACESITE; -alias IEnumOleDocumentViews LPENUMOLEDOCUMENTVIEWS; - -extern (C) extern const IID - IID_IContinueCallback, - IID_IEnumOleDocumentViews, - IID_IPrint, - IID_IOleDocumentView, - IID_IOleDocument, - IID_IOleCommandTarget, - IID_IOleDocumentSite; - - -interface IOleDocumentView : IUnknown { - HRESULT SetInPlaceSite(LPOLEINPLACESITE); - HRESULT GetInPlaceSite(LPOLEINPLACESITE*); - HRESULT GetDocument(IUnknown*); - HRESULT SetRect(LPRECT); - HRESULT GetRect(LPRECT); - HRESULT SetRectComplex(LPRECT, LPRECT, LPRECT, LPRECT); - HRESULT Show(BOOL); - HRESULT UIActivate(BOOL); - HRESULT Open(); - HRESULT Close(DWORD); - HRESULT SaveViewState(IStream); - HRESULT ApplyViewState(IStream); - HRESULT Clone(LPOLEINPLACESITE, IOleDocumentView*); -} - -interface IEnumOleDocumentViews : IUnknown { - HRESULT Next(ULONG, IOleDocumentView, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumOleDocumentViews*); -} - -interface IOleDocument : IUnknown { - HRESULT CreateView(LPOLEINPLACESITE, IStream, DWORD, IOleDocumentView*); - HRESULT GetDocMiscStatus(DWORD*); - HRESULT EnumViews(LPENUMOLEDOCUMENTVIEWS*, IOleDocumentView*); -} - -interface IOleCommandTarget : IUnknown { - HRESULT QueryStatus(const(GUID)*, ULONG, OLECMD*, OLECMDTEXT*); - HRESULT Exec(const(GUID)*, DWORD, DWORD, VARIANTARG*, VARIANTARG*); -} - -interface IOleDocumentSite : IUnknown { - HRESULT ActivateMe(IOleDocumentView); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_docobj.d) + */ +module core.sys.windows.docobj; + +private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.objidl, core.sys.windows.oleidl, + core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; + +// FIXME: remove inherited methods from interface definitions + +enum { + OLECMDERR_E_UNKNOWNGROUP = -2147221244, + OLECMDERR_E_CANCELED = -2147221245, + OLECMDERR_E_NOHELP = -2147221246, + OLECMDERR_E_DISABLED = -2147221247, + OLECMDERR_E_NOTSUPPORTED = -2147221248 +} + +enum OLECMDID { + OLECMDID_OPEN = 1, + OLECMDID_NEW = 2, + OLECMDID_SAVE = 3, + OLECMDID_SAVEAS = 4, + OLECMDID_SAVECOPYAS = 5, + OLECMDID_PRINT = 6, + OLECMDID_PRINTPREVIEW = 7, + OLECMDID_PAGESETUP = 8, + OLECMDID_SPELL = 9, + OLECMDID_PROPERTIES = 10, + OLECMDID_CUT = 11, + OLECMDID_COPY = 12, + OLECMDID_PASTE = 13, + OLECMDID_PASTESPECIAL = 14, + OLECMDID_UNDO = 15, + OLECMDID_REDO = 16, + OLECMDID_SELECTALL = 17, + OLECMDID_CLEARSELECTION = 18, + OLECMDID_ZOOM = 19, + OLECMDID_GETZOOMRANGE = 20, + OLECMDID_UPDATECOMMANDS = 21, + OLECMDID_REFRESH = 22, + OLECMDID_STOP = 23, + OLECMDID_HIDETOOLBARS = 24, + OLECMDID_SETPROGRESSMAX = 25, + OLECMDID_SETPROGRESSPOS = 26, + OLECMDID_SETPROGRESSTEXT = 27, + OLECMDID_SETTITLE = 28, + OLECMDID_SETDOWNLOADSTATE = 29, + OLECMDID_STOPDOWNLOAD = 30 +} + +enum OLECMDF { + OLECMDF_SUPPORTED = 1, + OLECMDF_ENABLED = 2, + OLECMDF_LATCHED = 4, + OLECMDF_NINCHED = 8 +} + +enum OLECMDEXECOPT { + OLECMDEXECOPT_DODEFAULT = 0, + OLECMDEXECOPT_PROMPTUSER = 1, + OLECMDEXECOPT_DONTPROMPTUSER = 2, + OLECMDEXECOPT_SHOWHELP = 3 +} + +struct OLECMDTEXT { + DWORD cmdtextf; + ULONG cwActual; + ULONG cwBuf; + wchar[1] rgwz; +} + +struct OLECMD { + ULONG cmdID; + DWORD cmdf; +} + +alias IOleInPlaceSite LPOLEINPLACESITE; +alias IEnumOleDocumentViews LPENUMOLEDOCUMENTVIEWS; + +extern (C) extern const IID + IID_IContinueCallback, + IID_IEnumOleDocumentViews, + IID_IPrint, + IID_IOleDocumentView, + IID_IOleDocument, + IID_IOleCommandTarget, + IID_IOleDocumentSite; + + +interface IOleDocumentView : IUnknown { + HRESULT SetInPlaceSite(LPOLEINPLACESITE); + HRESULT GetInPlaceSite(LPOLEINPLACESITE*); + HRESULT GetDocument(IUnknown*); + HRESULT SetRect(LPRECT); + HRESULT GetRect(LPRECT); + HRESULT SetRectComplex(LPRECT, LPRECT, LPRECT, LPRECT); + HRESULT Show(BOOL); + HRESULT UIActivate(BOOL); + HRESULT Open(); + HRESULT Close(DWORD); + HRESULT SaveViewState(IStream); + HRESULT ApplyViewState(IStream); + HRESULT Clone(LPOLEINPLACESITE, IOleDocumentView*); +} + +interface IEnumOleDocumentViews : IUnknown { + HRESULT Next(ULONG, IOleDocumentView, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOleDocumentViews*); +} + +interface IOleDocument : IUnknown { + HRESULT CreateView(LPOLEINPLACESITE, IStream, DWORD, IOleDocumentView*); + HRESULT GetDocMiscStatus(DWORD*); + HRESULT EnumViews(LPENUMOLEDOCUMENTVIEWS*, IOleDocumentView*); +} + +interface IOleCommandTarget : IUnknown { + HRESULT QueryStatus(const(GUID)*, ULONG, OLECMD*, OLECMDTEXT*); + HRESULT Exec(const(GUID)*, DWORD, DWORD, VARIANTARG*, VARIANTARG*); +} + +interface IOleDocumentSite : IUnknown { + HRESULT ActivateMe(IOleDocumentView); +} diff --git a/src/core/sys/windows/errorrep.d b/src/core/sys/windows/errorrep.d index a275671faf..293896db5a 100644 --- a/src/core/sys/windows/errorrep.d +++ b/src/core/sys/windows/errorrep.d @@ -1,39 +1,39 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_errorrep.d) - */ -module core.sys.windows.errorrep; - -private import core.sys.windows.w32api, core.sys.windows.windef; - -static assert (_WIN32_WINNT >= 0x501, - "core.sys.windows.errorrep is available only if version WindowsXP, Windows2003 " - "or WindowsVista is set"); - -enum EFaultRepRetVal { - frrvOk, - frrvOkManifest, - frrvOkQueued, - frrvErr, - frrvErrNoDW, - frrvErrTimeout, - frrvLaunchDebugger, - frrvOkHeadless // = 7 -} - -extern (Windows) { - BOOL AddERExcludedApplicationA(LPCSTR); - BOOL AddERExcludedApplicationW(LPCWSTR); - EFaultRepRetVal ReportFault(LPEXCEPTION_POINTERS, DWORD); -} - -version (Unicode) { - alias AddERExcludedApplicationW AddERExcludedApplication; -} else { - alias AddERExcludedApplicationA AddERExcludedApplication; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_errorrep.d) + */ +module core.sys.windows.errorrep; + +private import core.sys.windows.w32api, core.sys.windows.windef; + +static assert (_WIN32_WINNT >= 0x501, + "core.sys.windows.errorrep is available only if version WindowsXP, Windows2003 " + "or WindowsVista is set"); + +enum EFaultRepRetVal { + frrvOk, + frrvOkManifest, + frrvOkQueued, + frrvErr, + frrvErrNoDW, + frrvErrTimeout, + frrvLaunchDebugger, + frrvOkHeadless // = 7 +} + +extern (Windows) { + BOOL AddERExcludedApplicationA(LPCSTR); + BOOL AddERExcludedApplicationW(LPCWSTR); + EFaultRepRetVal ReportFault(LPEXCEPTION_POINTERS, DWORD); +} + +version (Unicode) { + alias AddERExcludedApplicationW AddERExcludedApplication; +} else { + alias AddERExcludedApplicationA AddERExcludedApplication; +} diff --git a/src/core/sys/windows/exdisp.d b/src/core/sys/windows/exdisp.d index 61cd6779ef..8abeaaffc0 100644 --- a/src/core/sys/windows/exdisp.d +++ b/src/core/sys/windows/exdisp.d @@ -1,126 +1,126 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_exdisp.d) - */ -module core.sys.windows.exdisp; - -import core.sys.windows.docobj, core.sys.windows.oaidl, core.sys.windows.ocidl; -private import core.sys.windows.basetyps, core.sys.windows.windef, core.sys.windows.wtypes; - - -enum BrowserNavConstants { - navOpenInNewWindow = 0x01, - navNoHistory = 0x02, - navNoReadFromCache = 0x04, - navNoWriteTocache = 0x08, - navAllowAutosearch = 0x10, - navBrowserBar = 0x20, - navHyperLink = 0x40 -} - -interface IWebBrowser : IDispatch { - HRESULT GoBack(); - HRESULT GoForward(); - HRESULT GoHome(); - HRESULT GoSearch(); - HRESULT Navigate(BSTR, VARIANT*, VARIANT*, VARIANT*, VARIANT*); - HRESULT Refresh(); - HRESULT Refresh2(VARIANT*); - HRESULT Stop(); - HRESULT get_Application(IDispatch* ppDisp); - HRESULT get_Parent(IDispatch* ppDisp); - HRESULT get_Container(IDispatch* ppDisp); - HRESULT get_Document(IDispatch* ppDisp); - HRESULT get_TopLevelContainer(VARIANT_BOOL*); - HRESULT get_Type(BSTR*); - HRESULT get_Left(LONG*); - HRESULT put_Left(LONG); - HRESULT get_Top(LONG*); - HRESULT put_Top(LONG); - HRESULT get_Width(LONG*); - HRESULT put_Width(LONG); - HRESULT get_Height(LONG*); - HRESULT put_Height(LONG); - HRESULT get_LocationName(BSTR*); - HRESULT get_LocationURL(BSTR*); - HRESULT get_Busy(VARIANT_BOOL*); -} - -interface IWebBrowserApp : IWebBrowser { - HRESULT Quit(); - HRESULT ClientToWindow(int*, int*); - HRESULT PutProperty(BSTR, VARIANT); - HRESULT GetProperty(BSTR, VARIANT*); - HRESULT get_Name(BSTR*); - HRESULT get_HWND(LONG*); - HRESULT get_FullName(BSTR*); - HRESULT get_Path(BSTR*); - HRESULT get_Visible(VARIANT_BOOL*); - HRESULT put_Visible(VARIANT_BOOL); - HRESULT get_StatusBar(VARIANT_BOOL*); - HRESULT put_StatusBar(VARIANT_BOOL); - HRESULT get_StatusText(BSTR*); - HRESULT put_StatusText(BSTR); - HRESULT get_ToolBar(int*); - HRESULT put_ToolBar(int); - HRESULT get_MenuBar(VARIANT_BOOL*); - HRESULT put_MenuBar(VARIANT_BOOL); - HRESULT get_FullScreen(VARIANT_BOOL*); - HRESULT put_FullScreen(VARIANT_BOOL); -} - -interface IWebBrowser2 : IWebBrowserApp { - HRESULT Navigate2(VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*); - HRESULT QueryStatusWB(OLECMDID, OLECMDF*); - HRESULT ExecWB(OLECMDID, OLECMDEXECOPT, VARIANT*, VARIANT*); - HRESULT ShowBrowserBar(VARIANT*, VARIANT*, VARIANT*); - HRESULT get_ReadyState(READYSTATE*); - HRESULT get_Offline(VARIANT_BOOL*); - HRESULT put_Offline(VARIANT_BOOL); - HRESULT get_Silent(VARIANT_BOOL*); - HRESULT put_Silent(VARIANT_BOOL); - HRESULT get_RegistaerAsBrowser(VARIANT_BOOL*); - HRESULT put_RegisterAsBrowser(VARIANT_BOOL); - HRESULT get_RegistaerAsDropTarget(VARIANT_BOOL*); - HRESULT put_RegisterAsDropTarget(VARIANT_BOOL); - HRESULT get_TheaterMode(VARIANT_BOOL*); - HRESULT put_TheaterMode(VARIANT_BOOL); - HRESULT get_AddressBar(VARIANT_BOOL*); - HRESULT put_AddressBar(VARIANT_BOOL); - HRESULT get_Resizable(VARIANT_BOOL*); - HRESULT put_Resizable(VARIANT_BOOL); -} - -interface DWebBrowserEvents2 : IDispatch { - void StatusTextChange(BSTR); - void ProgressChange(LONG, LONG); - void CommandStateChange(LONG, VARIANT_BOOL); - void DownloadBegin(); - void DownloadComplete(); - void TitleChange(BSTR); - void PropertyChange(BSTR); - void BeforeNavigate2(IDispatch pDisp, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT_BOOL*); - void NewWindow2(IDispatch* ppDisp, VARIANT_BOOL*); - void NavigateComplete(IDispatch pDisp, VARIANT*); - void DocumentComplete(IDispatch pDisp, VARIANT*); - void OnQuit(); - void OnVisible(VARIANT_BOOL); - void OnToolBar(VARIANT_BOOL); - void OnMenuBar(VARIANT_BOOL); - void OnStatusBar(VARIANT_BOOL); - void OnFullScreen(VARIANT_BOOL); - void OnTheaterMode(VARIANT_BOOL); - void WindowSetResizable(VARIANT_BOOL); - void WindowSetLeft(LONG); - void WindowSetTop(LONG); - void WindowSetWidth(LONG); - void WindowSetHeight(LONG); - void WindowClosing(VARIANT_BOOL, VARIANT_BOOL*); - void ClientToHostWindow(LONG*, LONG*); - void SetSecureLockIcon(LONG); - void FileDownload(VARIANT_BOOL*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_exdisp.d) + */ +module core.sys.windows.exdisp; + +import core.sys.windows.docobj, core.sys.windows.oaidl, core.sys.windows.ocidl; +private import core.sys.windows.basetyps, core.sys.windows.windef, core.sys.windows.wtypes; + + +enum BrowserNavConstants { + navOpenInNewWindow = 0x01, + navNoHistory = 0x02, + navNoReadFromCache = 0x04, + navNoWriteTocache = 0x08, + navAllowAutosearch = 0x10, + navBrowserBar = 0x20, + navHyperLink = 0x40 +} + +interface IWebBrowser : IDispatch { + HRESULT GoBack(); + HRESULT GoForward(); + HRESULT GoHome(); + HRESULT GoSearch(); + HRESULT Navigate(BSTR, VARIANT*, VARIANT*, VARIANT*, VARIANT*); + HRESULT Refresh(); + HRESULT Refresh2(VARIANT*); + HRESULT Stop(); + HRESULT get_Application(IDispatch* ppDisp); + HRESULT get_Parent(IDispatch* ppDisp); + HRESULT get_Container(IDispatch* ppDisp); + HRESULT get_Document(IDispatch* ppDisp); + HRESULT get_TopLevelContainer(VARIANT_BOOL*); + HRESULT get_Type(BSTR*); + HRESULT get_Left(LONG*); + HRESULT put_Left(LONG); + HRESULT get_Top(LONG*); + HRESULT put_Top(LONG); + HRESULT get_Width(LONG*); + HRESULT put_Width(LONG); + HRESULT get_Height(LONG*); + HRESULT put_Height(LONG); + HRESULT get_LocationName(BSTR*); + HRESULT get_LocationURL(BSTR*); + HRESULT get_Busy(VARIANT_BOOL*); +} + +interface IWebBrowserApp : IWebBrowser { + HRESULT Quit(); + HRESULT ClientToWindow(int*, int*); + HRESULT PutProperty(BSTR, VARIANT); + HRESULT GetProperty(BSTR, VARIANT*); + HRESULT get_Name(BSTR*); + HRESULT get_HWND(LONG*); + HRESULT get_FullName(BSTR*); + HRESULT get_Path(BSTR*); + HRESULT get_Visible(VARIANT_BOOL*); + HRESULT put_Visible(VARIANT_BOOL); + HRESULT get_StatusBar(VARIANT_BOOL*); + HRESULT put_StatusBar(VARIANT_BOOL); + HRESULT get_StatusText(BSTR*); + HRESULT put_StatusText(BSTR); + HRESULT get_ToolBar(int*); + HRESULT put_ToolBar(int); + HRESULT get_MenuBar(VARIANT_BOOL*); + HRESULT put_MenuBar(VARIANT_BOOL); + HRESULT get_FullScreen(VARIANT_BOOL*); + HRESULT put_FullScreen(VARIANT_BOOL); +} + +interface IWebBrowser2 : IWebBrowserApp { + HRESULT Navigate2(VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*); + HRESULT QueryStatusWB(OLECMDID, OLECMDF*); + HRESULT ExecWB(OLECMDID, OLECMDEXECOPT, VARIANT*, VARIANT*); + HRESULT ShowBrowserBar(VARIANT*, VARIANT*, VARIANT*); + HRESULT get_ReadyState(READYSTATE*); + HRESULT get_Offline(VARIANT_BOOL*); + HRESULT put_Offline(VARIANT_BOOL); + HRESULT get_Silent(VARIANT_BOOL*); + HRESULT put_Silent(VARIANT_BOOL); + HRESULT get_RegistaerAsBrowser(VARIANT_BOOL*); + HRESULT put_RegisterAsBrowser(VARIANT_BOOL); + HRESULT get_RegistaerAsDropTarget(VARIANT_BOOL*); + HRESULT put_RegisterAsDropTarget(VARIANT_BOOL); + HRESULT get_TheaterMode(VARIANT_BOOL*); + HRESULT put_TheaterMode(VARIANT_BOOL); + HRESULT get_AddressBar(VARIANT_BOOL*); + HRESULT put_AddressBar(VARIANT_BOOL); + HRESULT get_Resizable(VARIANT_BOOL*); + HRESULT put_Resizable(VARIANT_BOOL); +} + +interface DWebBrowserEvents2 : IDispatch { + void StatusTextChange(BSTR); + void ProgressChange(LONG, LONG); + void CommandStateChange(LONG, VARIANT_BOOL); + void DownloadBegin(); + void DownloadComplete(); + void TitleChange(BSTR); + void PropertyChange(BSTR); + void BeforeNavigate2(IDispatch pDisp, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT_BOOL*); + void NewWindow2(IDispatch* ppDisp, VARIANT_BOOL*); + void NavigateComplete(IDispatch pDisp, VARIANT*); + void DocumentComplete(IDispatch pDisp, VARIANT*); + void OnQuit(); + void OnVisible(VARIANT_BOOL); + void OnToolBar(VARIANT_BOOL); + void OnMenuBar(VARIANT_BOOL); + void OnStatusBar(VARIANT_BOOL); + void OnFullScreen(VARIANT_BOOL); + void OnTheaterMode(VARIANT_BOOL); + void WindowSetResizable(VARIANT_BOOL); + void WindowSetLeft(LONG); + void WindowSetTop(LONG); + void WindowSetWidth(LONG); + void WindowSetHeight(LONG); + void WindowClosing(VARIANT_BOOL, VARIANT_BOOL*); + void ClientToHostWindow(LONG*, LONG*); + void SetSecureLockIcon(LONG); + void FileDownload(VARIANT_BOOL*); +} diff --git a/src/core/sys/windows/exdispid.d b/src/core/sys/windows/exdispid.d index 3c417aa090..3ecc9b4097 100644 --- a/src/core/sys/windows/exdispid.d +++ b/src/core/sys/windows/exdispid.d @@ -1,19 +1,19 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_exdispid.d) - */ -module core.sys.windows.exdispid; - -enum : int { - DISPID_STATUSTEXTCHANGE = 102, - DISPID_PROGRESSCHANGE = 108, - DISPID_TITLECHANGE = 113, - DISPID_BEFORENAVIGATE2 = 250, - DISPID_NEWWINDOW2 = 251, - DISPID_DOCUMENTCOMPLETE = 259 -} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_exdispid.d) + */ +module core.sys.windows.exdispid; + +enum : int { + DISPID_STATUSTEXTCHANGE = 102, + DISPID_PROGRESSCHANGE = 108, + DISPID_TITLECHANGE = 113, + DISPID_BEFORENAVIGATE2 = 250, + DISPID_NEWWINDOW2 = 251, + DISPID_DOCUMENTCOMPLETE = 259 +} diff --git a/src/core/sys/windows/httpext.d b/src/core/sys/windows/httpext.d index 60a7d4d0a8..ddd8032ebf 100644 --- a/src/core/sys/windows/httpext.d +++ b/src/core/sys/windows/httpext.d @@ -1,113 +1,113 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_httpext.d) - */ -module core.sys.windows.httpext; - -/* Comment from MinGW - httpext.h - Header for ISAPI extensions. - - This file is part of a free library for the Win32 API. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -*/ - -private import core.sys.windows.windows; - -enum { - HSE_VERSION_MAJOR = 2, - HSE_VERSION_MINOR = 0, - HSE_LOG_BUFFER_LEN = 80, - HSE_MAX_EXT_DLL_NAME_LEN = 256, - HSE_STATUS_SUCCESS = 1, - HSE_STATUS_SUCCESS_AND_KEEP_CONN, - HSE_STATUS_PENDING, - HSE_STATUS_ERROR, - HSE_REQ_BASE = 0, - HSE_REQ_SEND_URL_REDIRECT_RESP, - HSE_REQ_SEND_URL, - HSE_REQ_SEND_RESPONSE_HEADER, - HSE_REQ_DONE_WITH_SESSION, - HSE_REQ_SEND_RESPONSE_HEADER_EX = 1016, - HSE_REQ_END_RESERVED = 1000, - HSE_TERM_ADVISORY_UNLOAD = 0x00000001, - HSE_TERM_MUST_UNLOAD, - HSE_IO_SYNC = 0x00000001, - HSE_IO_ASYNC, - HSE_IO_DISCONNECT_AFTER_SEND = 0x00000004, - HSE_IO_SEND_HEADERS = 0x00000008 -} - -mixin DECLARE_HANDLE!("HCONN"); - -struct HSE_VERSION_INFO { - DWORD dwExtensionVersion; - CHAR[HSE_MAX_EXT_DLL_NAME_LEN] lpszExtensionDesc; -} -alias HSE_VERSION_INFO* LPHSE_VERSION_INFO; - -struct EXTENSION_CONTROL_BLOCK { - DWORD cbSize = EXTENSION_CONTROL_BLOCK.sizeof; - DWORD dwVersion; - HCONN ConnID; - DWORD dwHttpStatusCode; - CHAR[HSE_LOG_BUFFER_LEN] lpszLogData; - LPSTR lpszMethod; - LPSTR lpszQueryString; - LPSTR lpszPathInfo; - LPSTR lpszPathTranslated; - DWORD cbTotalBytes; - DWORD cbAvailable; - LPBYTE lpbData; - LPSTR lpszContentType; - extern(Pascal) BOOL function(HCONN, LPSTR, LPVOID, LPDWORD) - GetServerVariable; - extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD, DWORD) WriteClient; - extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD) ReadClient; - extern(Pascal) BOOL function(HCONN, DWORD, LPVOID, LPDWORD, LPDWORD) - ServerSupportFunction; -} -alias EXTENSION_CONTROL_BLOCK* LPEXTENSION_CONTROL_BLOCK; - -extern (Pascal) { - alias BOOL function(HSE_VERSION_INFO*) PFN_GETEXTENSIONVERSION; - alias DWORD function(EXTENSION_CONTROL_BLOCK*) PFN_HTTPEXTENSIONPROC; - alias BOOL function(DWORD) PFN_TERMINATEEXTENSION; - alias VOID function(EXTENSION_CONTROL_BLOCK*, PVOID, DWORD, DWORD) PFN_HSE_IO_COMPLETION; -} - -struct HSE_TF_INFO { - PFN_HSE_IO_COMPLETION pfnHseIO; - PVOID pContext; - HANDLE hFile; - LPCSTR pszStatusCode; - DWORD BytesToWrite; - DWORD Offset; - PVOID pHead; - DWORD HeadLength; - PVOID pTail; - DWORD TailLength; - DWORD dwFlags; -} -alias HSE_TF_INFO* LPHSE_TF_INFO; - -struct HSE_SEND_HEADER_EX_INFO { - LPCSTR pszStatus; - LPCSTR pszHeader; - DWORD cchStatus; - DWORD cchHeader; - BOOL fKeepConn; -} -alias HSE_SEND_HEADER_EX_INFO* LPHSE_SEND_HEADER_EX_INF; - -extern (Pascal) { - BOOL GetExtensionVersion(HSE_VERSION_INFO*); - DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK*); - BOOL TerminateExtension(DWORD); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_httpext.d) + */ +module core.sys.windows.httpext; + +/* Comment from MinGW + httpext.h - Header for ISAPI extensions. + + This file is part of a free library for the Win32 API. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +*/ + +private import core.sys.windows.windows; + +enum { + HSE_VERSION_MAJOR = 2, + HSE_VERSION_MINOR = 0, + HSE_LOG_BUFFER_LEN = 80, + HSE_MAX_EXT_DLL_NAME_LEN = 256, + HSE_STATUS_SUCCESS = 1, + HSE_STATUS_SUCCESS_AND_KEEP_CONN, + HSE_STATUS_PENDING, + HSE_STATUS_ERROR, + HSE_REQ_BASE = 0, + HSE_REQ_SEND_URL_REDIRECT_RESP, + HSE_REQ_SEND_URL, + HSE_REQ_SEND_RESPONSE_HEADER, + HSE_REQ_DONE_WITH_SESSION, + HSE_REQ_SEND_RESPONSE_HEADER_EX = 1016, + HSE_REQ_END_RESERVED = 1000, + HSE_TERM_ADVISORY_UNLOAD = 0x00000001, + HSE_TERM_MUST_UNLOAD, + HSE_IO_SYNC = 0x00000001, + HSE_IO_ASYNC, + HSE_IO_DISCONNECT_AFTER_SEND = 0x00000004, + HSE_IO_SEND_HEADERS = 0x00000008 +} + +mixin DECLARE_HANDLE!("HCONN"); + +struct HSE_VERSION_INFO { + DWORD dwExtensionVersion; + CHAR[HSE_MAX_EXT_DLL_NAME_LEN] lpszExtensionDesc; +} +alias HSE_VERSION_INFO* LPHSE_VERSION_INFO; + +struct EXTENSION_CONTROL_BLOCK { + DWORD cbSize = EXTENSION_CONTROL_BLOCK.sizeof; + DWORD dwVersion; + HCONN ConnID; + DWORD dwHttpStatusCode; + CHAR[HSE_LOG_BUFFER_LEN] lpszLogData; + LPSTR lpszMethod; + LPSTR lpszQueryString; + LPSTR lpszPathInfo; + LPSTR lpszPathTranslated; + DWORD cbTotalBytes; + DWORD cbAvailable; + LPBYTE lpbData; + LPSTR lpszContentType; + extern(Pascal) BOOL function(HCONN, LPSTR, LPVOID, LPDWORD) + GetServerVariable; + extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD, DWORD) WriteClient; + extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD) ReadClient; + extern(Pascal) BOOL function(HCONN, DWORD, LPVOID, LPDWORD, LPDWORD) + ServerSupportFunction; +} +alias EXTENSION_CONTROL_BLOCK* LPEXTENSION_CONTROL_BLOCK; + +extern (Pascal) { + alias BOOL function(HSE_VERSION_INFO*) PFN_GETEXTENSIONVERSION; + alias DWORD function(EXTENSION_CONTROL_BLOCK*) PFN_HTTPEXTENSIONPROC; + alias BOOL function(DWORD) PFN_TERMINATEEXTENSION; + alias VOID function(EXTENSION_CONTROL_BLOCK*, PVOID, DWORD, DWORD) PFN_HSE_IO_COMPLETION; +} + +struct HSE_TF_INFO { + PFN_HSE_IO_COMPLETION pfnHseIO; + PVOID pContext; + HANDLE hFile; + LPCSTR pszStatusCode; + DWORD BytesToWrite; + DWORD Offset; + PVOID pHead; + DWORD HeadLength; + PVOID pTail; + DWORD TailLength; + DWORD dwFlags; +} +alias HSE_TF_INFO* LPHSE_TF_INFO; + +struct HSE_SEND_HEADER_EX_INFO { + LPCSTR pszStatus; + LPCSTR pszHeader; + DWORD cchStatus; + DWORD cchHeader; + BOOL fKeepConn; +} +alias HSE_SEND_HEADER_EX_INFO* LPHSE_SEND_HEADER_EX_INF; + +extern (Pascal) { + BOOL GetExtensionVersion(HSE_VERSION_INFO*); + DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK*); + BOOL TerminateExtension(DWORD); +} diff --git a/src/core/sys/windows/idispids.d b/src/core/sys/windows/idispids.d index 3f2c41c074..fb1c10d055 100644 --- a/src/core/sys/windows/idispids.d +++ b/src/core/sys/windows/idispids.d @@ -1,15 +1,15 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_idispids.d) - */ -module core.sys.windows.idispids; - -enum : int { - DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501, - DISPID_AMBIENT_SILENT = -5502 -} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_idispids.d) + */ +module core.sys.windows.idispids; + +enum : int { + DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501, + DISPID_AMBIENT_SILENT = -5502 +} diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index 2b4d2a3908..c5f39b61eb 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -1,362 +1,362 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_imagehlp.d) - */ -module core.sys.windows.imagehlp; - -/* Comment from MinGW - NOTE: This strictly does not belong in the Win32 API since it's - really part of Platform SDK. However, GDB needs it and we might - as well provide it here. -*/ - -private import core.sys.windows.winbase, core.sys.windows.windef; - -// FIXME: check types of constants - -const API_VERSION_NUMBER = 7; - -const BIND_NO_BOUND_IMPORTS = 1; -const BIND_NO_UPDATE = 2; -const BIND_ALL_IMAGES = 4; -const BIND_CACHE_IMPORT_DLLS = 8; - -enum { - CBA_DEFERRED_SYMBOL_LOAD_START = 1, - CBA_DEFERRED_SYMBOL_LOAD_COMPLETE, - CBA_DEFERRED_SYMBOL_LOAD_FAILURE, - CBA_SYMBOLS_UNLOADED, - CBA_DUPLICATE_SYMBOL -} - -const CERT_PE_IMAGE_DIGEST_DEBUG_INFO = 1; -const CERT_PE_IMAGE_DIGEST_RESOURCES = 2; -const CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO = 4; -const CERT_PE_IMAGE_DIGEST_NON_PE_INFO = 8; - -const CERT_SECTION_TYPE_ANY = 255; - -enum { - CHECKSUM_SUCCESS = 0, - CHECKSUM_OPEN_FAILURE, - CHECKSUM_MAP_FAILURE, - CHECKSUM_MAPVIEW_FAILURE, - CHECKSUM_UNICODE_FAILURE -} - -const IMAGE_SEPARATION = 65536; - -const SPLITSYM_REMOVE_PRIVATE = 1; -const SPLITSYM_EXTRACT_ALL = 2; -const SPLITSYM_SYMBOLPATH_IS_SRC = 4; - -const SYMF_OMAP_GENERATED = 1; -const SYMF_OMAP_MODIFIED = 2; - -const SYMOPT_CASE_INSENSITIVE = 1; -const SYMOPT_UNDNAME = 2; -const SYMOPT_DEFERRED_LOADS = 4; -const SYMOPT_NO_CPP = 8; -const SYMOPT_LOAD_LINES = 16; -const SYMOPT_OMAP_FIND_NEAREST = 32; - -const UNDNAME_COMPLETE = 0; -const UNDNAME_NO_LEADING_UNDERSCORES = 1; -const UNDNAME_NO_MS_KEYWORDS = 2; -const UNDNAME_NO_FUNCTION_RETURNS = 4; -const UNDNAME_NO_ALLOCATION_MODEL = 8; -const UNDNAME_NO_ALLOCATION_LANGUAGE = 16; -const UNDNAME_NO_MS_THISTYPE = 32; -const UNDNAME_NO_CV_THISTYPE = 64; -const UNDNAME_NO_THISTYPE = 96; -const UNDNAME_NO_ACCESS_SPECIFIERS = 128; -const UNDNAME_NO_THROW_SIGNATURES = 256; -const UNDNAME_NO_MEMBER_TYPE = 512; -const UNDNAME_NO_RETURN_UDT_MODEL = 1024; -const UNDNAME_32_BIT_DECODE = 2048; -const UNDNAME_NAME_ONLY = 4096; -const UNDNAME_NO_ARGUMENTS = 8192; -const UNDNAME_NO_SPECIAL_SYMS = 16384; - -enum IMAGEHLP_STATUS_REASON { - BindOutOfMemory, - BindRvaToVaFailed, - BindNoRoomInImage, - BindImportModuleFailed, - BindImportProcedureFailed, - BindImportModule, - BindImportProcedure, - BindForwarder, - BindForwarderNOT, - BindImageModified, - BindExpandFileHeaders, - BindImageComplete, - BindMismatchedSymbols, - BindSymbolsNotUpdated -} - -struct LOADED_IMAGE { - LPSTR ModuleName; - HANDLE hFile; - PUCHAR MappedAddress; - PIMAGE_NT_HEADERS FileHeader; - PIMAGE_SECTION_HEADER LastRvaSection; - ULONG NumberOfSections; - PIMAGE_SECTION_HEADER Sections; - ULONG Characteristics; - BOOLEAN fSystemImage; - BOOLEAN fDOSImage; - LIST_ENTRY Links; - ULONG SizeOfImage; -} -alias LOADED_IMAGE* PLOADED_IMAGE; - -struct IMAGE_DEBUG_INFORMATION { - LIST_ENTRY List; - DWORD Size; - PVOID MappedBase; - USHORT Machine; - USHORT Characteristics; - DWORD CheckSum; - DWORD ImageBase; - DWORD SizeOfImage; - DWORD NumberOfSections; - PIMAGE_SECTION_HEADER Sections; - DWORD ExportedNamesSize; - LPSTR ExportedNames; - DWORD NumberOfFunctionTableEntries; - PIMAGE_FUNCTION_ENTRY FunctionTableEntries; - DWORD LowestFunctionStartingAddress; - DWORD HighestFunctionEndingAddress; - DWORD NumberOfFpoTableEntries; - PFPO_DATA FpoTableEntries; - DWORD SizeOfCoffSymbols; - PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; - DWORD SizeOfCodeViewSymbols; - PVOID CodeViewSymbols; - LPSTR ImageFilePath; - LPSTR ImageFileName; - LPSTR DebugFilePath; - DWORD TimeDateStamp; - BOOL RomImage; - PIMAGE_DEBUG_DIRECTORY DebugDirectory; - DWORD NumberOfDebugDirectories; - DWORD[3] Reserved; -} -alias IMAGE_DEBUG_INFORMATION* PIMAGE_DEBUG_INFORMATION; - -enum ADDRESS_MODE { - AddrMode1616, - AddrMode1632, - AddrModeReal, - AddrModeFlat -} - -struct ADDRESS { - DWORD Offset; - WORD Segment; - ADDRESS_MODE Mode; -} -alias ADDRESS* LPADDRESS; - -struct KDHELP { - DWORD Thread; - DWORD ThCallbackStack; - DWORD NextCallback; - DWORD FramePointer; - DWORD KiCallUserMode; - DWORD KeUserCallbackDispatcher; - DWORD SystemRangeStart; -} -alias KDHELP* PKDHELP; - -struct STACKFRAME { - ADDRESS AddrPC; - ADDRESS AddrReturn; - ADDRESS AddrFrame; - ADDRESS AddrStack; - LPVOID FuncTableEntry; - DWORD[4] Params; - BOOL Far; - BOOL Virtual; - DWORD[3] Reserved; - KDHELP KdHelp; -} -alias STACKFRAME* LPSTACKFRAME; - -struct API_VERSION { - USHORT MajorVersion; - USHORT MinorVersion; - USHORT Revision; - USHORT Reserved; -} -alias API_VERSION* LPAPI_VERSION; - -enum SYM_TYPE { - SymNone, - SymCoff, - SymCv, - SymPdb, - SymExport, - SymDeferred, - SymSym -} - -struct IMAGEHLP_SYMBOL { - DWORD SizeOfStruct; - DWORD Address; - DWORD Size; - DWORD Flags; - DWORD MaxNameLength; - CHAR[1] Name; -} -alias IMAGEHLP_SYMBOL* PIMAGEHLP_SYMBOL; - -struct IMAGEHLP_MODULE { - DWORD SizeOfStruct; - DWORD BaseOfImage; - DWORD ImageSize; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD NumSyms; - SYM_TYPE SymType; - CHAR[32] ModuleName; - CHAR[256] ImageName; - CHAR[256] LoadedImageName; -} -alias IMAGEHLP_MODULE* PIMAGEHLP_MODULE; - -struct IMAGEHLP_LINE { - DWORD SizeOfStruct; - DWORD Key; - DWORD LineNumber; - PCHAR FileName; - DWORD Address; -} -alias IMAGEHLP_LINE* PIMAGEHLP_LINE; - -struct IMAGEHLP_DEFERRED_SYMBOL_LOAD { - DWORD SizeOfStruct; - DWORD BaseOfImage; - DWORD CheckSum; - DWORD TimeDateStamp; - CHAR[MAX_PATH] FileName; - BOOLEAN Reparse; -} -alias IMAGEHLP_DEFERRED_SYMBOL_LOAD* PIMAGEHLP_DEFERRED_SYMBOL_LOAD; - -struct IMAGEHLP_DUPLICATE_SYMBOL { - DWORD SizeOfStruct; - DWORD NumberOfDups; - PIMAGEHLP_SYMBOL Symbol; - ULONG SelectedSymbol; -} -alias IMAGEHLP_DUPLICATE_SYMBOL* PIMAGEHLP_DUPLICATE_SYMBOL; - -mixin DECLARE_HANDLE!("DIGEST_HANDLE"); - -extern (Windows) { - alias BOOL function(IMAGEHLP_STATUS_REASON, LPSTR, LPSTR, ULONG, ULONG) - PIMAGEHLP_STATUS_ROUTINE; - alias BOOL function(HANDLE , LPCVOID, LPVOID, DWORD, LPDWORD) - PREAD_PROCESS_MEMORY_ROUTINE; - alias LPVOID function(HANDLE, DWORD) PFUNCTION_TABLE_ACCESS_ROUTINE; - alias DWORD function(HANDLE, DWORD) PGET_MODULE_BASE_ROUTINE; - alias DWORD function(HANDLE, HANDLE, LPADDRESS) - PTRANSLATE_ADDRESS_ROUTINE; - alias BOOL function(LPSTR, ULONG, PVOID) PSYM_ENUMMODULES_CALLBACK; - alias BOOL function(LPSTR, ULONG, ULONG, PVOID) PSYM_ENUMSYMBOLS_CALLBACK; - alias BOOL function(LPSTR, ULONG, ULONG, PVOID) - PENUMLOADED_MODULES_CALLBACK; - alias BOOL function(HANDLE, ULONG, PVOID, PVOID) - PSYMBOL_REGISTERED_CALLBACK; - alias BOOL function(DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength) - DIGEST_FUNCTION; - - PIMAGE_NT_HEADERS CheckSumMappedFile(LPVOID, DWORD, LPDWORD, LPDWORD); - DWORD MapFileAndCheckSumA(LPSTR, LPDWORD, LPDWORD); - DWORD MapFileAndCheckSumW(PWSTR, LPDWORD, LPDWORD); - BOOL TouchFileTimes(HANDLE, LPSYSTEMTIME); - BOOL SplitSymbols(LPSTR, LPSTR, LPSTR, DWORD); - HANDLE FindDebugInfoFile(LPSTR, LPSTR, LPSTR); - HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); - BOOL UpdateDebugInfoFile(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS); - BOOL UpdateDebugInfoFileEx(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS, DWORD); - BOOL BindImage(LPSTR, LPSTR, LPSTR); - BOOL BindImageEx(DWORD, LPSTR, LPSTR, LPSTR, PIMAGEHLP_STATUS_ROUTINE); - BOOL ReBaseImage(LPSTR, LPSTR, BOOL, BOOL, BOOL, ULONG, ULONG*, ULONG*, - ULONG*, ULONG*, ULONG); - PLOADED_IMAGE ImageLoad(LPSTR, LPSTR); - BOOL ImageUnload(PLOADED_IMAGE); - PIMAGE_NT_HEADERS ImageNtHeader(PVOID); - PVOID ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG); - PIMAGE_SECTION_HEADER ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG); - PVOID ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, - PIMAGE_SECTION_HEADER*); - BOOL MapAndLoad(LPSTR, LPSTR, PLOADED_IMAGE, BOOL, BOOL); - BOOL GetImageConfigInformation(PLOADED_IMAGE, - PIMAGE_LOAD_CONFIG_DIRECTORY); - DWORD GetImageUnusedHeaderBytes(PLOADED_IMAGE, LPDWORD); - BOOL SetImageConfigInformation(PLOADED_IMAGE, - PIMAGE_LOAD_CONFIG_DIRECTORY); - BOOL UnMapAndLoad(PLOADED_IMAGE); - PIMAGE_DEBUG_INFORMATION MapDebugInformation(HANDLE, LPSTR, LPSTR, DWORD); - BOOL UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); - HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); - BOOL SearchTreeForFile(LPSTR, LPSTR, LPSTR); - BOOL MakeSureDirectoryPathExists(LPCSTR); - DWORD UnDecorateSymbolName(LPCSTR, LPSTR, DWORD, DWORD); - BOOL StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID, - PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, - PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE); - LPAPI_VERSION ImagehlpApiVersion(); - LPAPI_VERSION ImagehlpApiVersionEx(LPAPI_VERSION); - DWORD GetTimestampForLoadedLibrary(HMODULE); - BOOL RemovePrivateCvSymbolic(PCHAR, PCHAR*, ULONG*); - VOID RemoveRelocations(PCHAR); - DWORD SymSetOptions(DWORD); - DWORD SymGetOptions(); - BOOL SymCleanup(HANDLE); - BOOL SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); - BOOL SymEnumerateSymbols(HANDLE, DWORD, PSYM_ENUMSYMBOLS_CALLBACK, PVOID); - BOOL EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID); - LPVOID SymFunctionTableAccess(HANDLE, DWORD); - BOOL SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); - DWORD SymGetModuleBase(HANDLE, DWORD); - BOOL SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); - BOOL SymGetSymFromName(HANDLE, LPSTR, PIMAGEHLP_SYMBOL); - BOOL SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); - BOOL SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); - BOOL SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); - BOOL SymGetLineFromName(HANDLE, LPSTR, LPSTR, DWORD, PLONG, - PIMAGEHLP_LINE); - BOOL SymGetLineNext(HANDLE, PIMAGEHLP_LINE); - BOOL SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); - BOOL SymMatchFileName(LPSTR, LPSTR, LPSTR*, LPSTR*); - BOOL SymInitialize(HANDLE, LPSTR, BOOL); - BOOL SymGetSearchPath(HANDLE, LPSTR, DWORD); - BOOL SymSetSearchPath(HANDLE, LPSTR); - BOOL SymLoadModule(HANDLE, HANDLE, PSTR, PSTR, DWORD, DWORD); - BOOL SymUnloadModule(HANDLE, DWORD); - BOOL SymUnDName(PIMAGEHLP_SYMBOL, LPSTR, DWORD); - BOOL SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); - BOOL ImageGetDigestStream(HANDLE, DWORD, DIGEST_FUNCTION, DIGEST_HANDLE); - BOOL ImageAddCertificate(HANDLE, LPWIN_CERTIFICATE, PDWORD); - BOOL ImageRemoveCertificate(HANDLE, DWORD); - BOOL ImageEnumerateCertificates(HANDLE, WORD, PDWORD, PDWORD, DWORD); - BOOL ImageGetCertificateData(HANDLE, DWORD, LPWIN_CERTIFICATE, PDWORD); - BOOL ImageGetCertificateHeader(HANDLE, DWORD, LPWIN_CERTIFICATE); - BOOL CopyPdb(CHAR*, CHAR*, BOOL); - BOOL RemovePrivateCvSymbolicEx(PCHAR, ULONG, PCHAR*, ULONG*); -} - -version (Unicode) { - alias MapFileAndCheckSumW MapFileAndCheckSum; -} else { - alias MapFileAndCheckSumA MapFileAndCheckSum; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_imagehlp.d) + */ +module core.sys.windows.imagehlp; + +/* Comment from MinGW + NOTE: This strictly does not belong in the Win32 API since it's + really part of Platform SDK. However, GDB needs it and we might + as well provide it here. +*/ + +private import core.sys.windows.winbase, core.sys.windows.windef; + +// FIXME: check types of constants + +const API_VERSION_NUMBER = 7; + +const BIND_NO_BOUND_IMPORTS = 1; +const BIND_NO_UPDATE = 2; +const BIND_ALL_IMAGES = 4; +const BIND_CACHE_IMPORT_DLLS = 8; + +enum { + CBA_DEFERRED_SYMBOL_LOAD_START = 1, + CBA_DEFERRED_SYMBOL_LOAD_COMPLETE, + CBA_DEFERRED_SYMBOL_LOAD_FAILURE, + CBA_SYMBOLS_UNLOADED, + CBA_DUPLICATE_SYMBOL +} + +const CERT_PE_IMAGE_DIGEST_DEBUG_INFO = 1; +const CERT_PE_IMAGE_DIGEST_RESOURCES = 2; +const CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO = 4; +const CERT_PE_IMAGE_DIGEST_NON_PE_INFO = 8; + +const CERT_SECTION_TYPE_ANY = 255; + +enum { + CHECKSUM_SUCCESS = 0, + CHECKSUM_OPEN_FAILURE, + CHECKSUM_MAP_FAILURE, + CHECKSUM_MAPVIEW_FAILURE, + CHECKSUM_UNICODE_FAILURE +} + +const IMAGE_SEPARATION = 65536; + +const SPLITSYM_REMOVE_PRIVATE = 1; +const SPLITSYM_EXTRACT_ALL = 2; +const SPLITSYM_SYMBOLPATH_IS_SRC = 4; + +const SYMF_OMAP_GENERATED = 1; +const SYMF_OMAP_MODIFIED = 2; + +const SYMOPT_CASE_INSENSITIVE = 1; +const SYMOPT_UNDNAME = 2; +const SYMOPT_DEFERRED_LOADS = 4; +const SYMOPT_NO_CPP = 8; +const SYMOPT_LOAD_LINES = 16; +const SYMOPT_OMAP_FIND_NEAREST = 32; + +const UNDNAME_COMPLETE = 0; +const UNDNAME_NO_LEADING_UNDERSCORES = 1; +const UNDNAME_NO_MS_KEYWORDS = 2; +const UNDNAME_NO_FUNCTION_RETURNS = 4; +const UNDNAME_NO_ALLOCATION_MODEL = 8; +const UNDNAME_NO_ALLOCATION_LANGUAGE = 16; +const UNDNAME_NO_MS_THISTYPE = 32; +const UNDNAME_NO_CV_THISTYPE = 64; +const UNDNAME_NO_THISTYPE = 96; +const UNDNAME_NO_ACCESS_SPECIFIERS = 128; +const UNDNAME_NO_THROW_SIGNATURES = 256; +const UNDNAME_NO_MEMBER_TYPE = 512; +const UNDNAME_NO_RETURN_UDT_MODEL = 1024; +const UNDNAME_32_BIT_DECODE = 2048; +const UNDNAME_NAME_ONLY = 4096; +const UNDNAME_NO_ARGUMENTS = 8192; +const UNDNAME_NO_SPECIAL_SYMS = 16384; + +enum IMAGEHLP_STATUS_REASON { + BindOutOfMemory, + BindRvaToVaFailed, + BindNoRoomInImage, + BindImportModuleFailed, + BindImportProcedureFailed, + BindImportModule, + BindImportProcedure, + BindForwarder, + BindForwarderNOT, + BindImageModified, + BindExpandFileHeaders, + BindImageComplete, + BindMismatchedSymbols, + BindSymbolsNotUpdated +} + +struct LOADED_IMAGE { + LPSTR ModuleName; + HANDLE hFile; + PUCHAR MappedAddress; + PIMAGE_NT_HEADERS FileHeader; + PIMAGE_SECTION_HEADER LastRvaSection; + ULONG NumberOfSections; + PIMAGE_SECTION_HEADER Sections; + ULONG Characteristics; + BOOLEAN fSystemImage; + BOOLEAN fDOSImage; + LIST_ENTRY Links; + ULONG SizeOfImage; +} +alias LOADED_IMAGE* PLOADED_IMAGE; + +struct IMAGE_DEBUG_INFORMATION { + LIST_ENTRY List; + DWORD Size; + PVOID MappedBase; + USHORT Machine; + USHORT Characteristics; + DWORD CheckSum; + DWORD ImageBase; + DWORD SizeOfImage; + DWORD NumberOfSections; + PIMAGE_SECTION_HEADER Sections; + DWORD ExportedNamesSize; + LPSTR ExportedNames; + DWORD NumberOfFunctionTableEntries; + PIMAGE_FUNCTION_ENTRY FunctionTableEntries; + DWORD LowestFunctionStartingAddress; + DWORD HighestFunctionEndingAddress; + DWORD NumberOfFpoTableEntries; + PFPO_DATA FpoTableEntries; + DWORD SizeOfCoffSymbols; + PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; + DWORD SizeOfCodeViewSymbols; + PVOID CodeViewSymbols; + LPSTR ImageFilePath; + LPSTR ImageFileName; + LPSTR DebugFilePath; + DWORD TimeDateStamp; + BOOL RomImage; + PIMAGE_DEBUG_DIRECTORY DebugDirectory; + DWORD NumberOfDebugDirectories; + DWORD[3] Reserved; +} +alias IMAGE_DEBUG_INFORMATION* PIMAGE_DEBUG_INFORMATION; + +enum ADDRESS_MODE { + AddrMode1616, + AddrMode1632, + AddrModeReal, + AddrModeFlat +} + +struct ADDRESS { + DWORD Offset; + WORD Segment; + ADDRESS_MODE Mode; +} +alias ADDRESS* LPADDRESS; + +struct KDHELP { + DWORD Thread; + DWORD ThCallbackStack; + DWORD NextCallback; + DWORD FramePointer; + DWORD KiCallUserMode; + DWORD KeUserCallbackDispatcher; + DWORD SystemRangeStart; +} +alias KDHELP* PKDHELP; + +struct STACKFRAME { + ADDRESS AddrPC; + ADDRESS AddrReturn; + ADDRESS AddrFrame; + ADDRESS AddrStack; + LPVOID FuncTableEntry; + DWORD[4] Params; + BOOL Far; + BOOL Virtual; + DWORD[3] Reserved; + KDHELP KdHelp; +} +alias STACKFRAME* LPSTACKFRAME; + +struct API_VERSION { + USHORT MajorVersion; + USHORT MinorVersion; + USHORT Revision; + USHORT Reserved; +} +alias API_VERSION* LPAPI_VERSION; + +enum SYM_TYPE { + SymNone, + SymCoff, + SymCv, + SymPdb, + SymExport, + SymDeferred, + SymSym +} + +struct IMAGEHLP_SYMBOL { + DWORD SizeOfStruct; + DWORD Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + CHAR[1] Name; +} +alias IMAGEHLP_SYMBOL* PIMAGEHLP_SYMBOL; + +struct IMAGEHLP_MODULE { + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + CHAR[32] ModuleName; + CHAR[256] ImageName; + CHAR[256] LoadedImageName; +} +alias IMAGEHLP_MODULE* PIMAGEHLP_MODULE; + +struct IMAGEHLP_LINE { + DWORD SizeOfStruct; + DWORD Key; + DWORD LineNumber; + PCHAR FileName; + DWORD Address; +} +alias IMAGEHLP_LINE* PIMAGEHLP_LINE; + +struct IMAGEHLP_DEFERRED_SYMBOL_LOAD { + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD CheckSum; + DWORD TimeDateStamp; + CHAR[MAX_PATH] FileName; + BOOLEAN Reparse; +} +alias IMAGEHLP_DEFERRED_SYMBOL_LOAD* PIMAGEHLP_DEFERRED_SYMBOL_LOAD; + +struct IMAGEHLP_DUPLICATE_SYMBOL { + DWORD SizeOfStruct; + DWORD NumberOfDups; + PIMAGEHLP_SYMBOL Symbol; + ULONG SelectedSymbol; +} +alias IMAGEHLP_DUPLICATE_SYMBOL* PIMAGEHLP_DUPLICATE_SYMBOL; + +mixin DECLARE_HANDLE!("DIGEST_HANDLE"); + +extern (Windows) { + alias BOOL function(IMAGEHLP_STATUS_REASON, LPSTR, LPSTR, ULONG, ULONG) + PIMAGEHLP_STATUS_ROUTINE; + alias BOOL function(HANDLE , LPCVOID, LPVOID, DWORD, LPDWORD) + PREAD_PROCESS_MEMORY_ROUTINE; + alias LPVOID function(HANDLE, DWORD) PFUNCTION_TABLE_ACCESS_ROUTINE; + alias DWORD function(HANDLE, DWORD) PGET_MODULE_BASE_ROUTINE; + alias DWORD function(HANDLE, HANDLE, LPADDRESS) + PTRANSLATE_ADDRESS_ROUTINE; + alias BOOL function(LPSTR, ULONG, PVOID) PSYM_ENUMMODULES_CALLBACK; + alias BOOL function(LPSTR, ULONG, ULONG, PVOID) PSYM_ENUMSYMBOLS_CALLBACK; + alias BOOL function(LPSTR, ULONG, ULONG, PVOID) + PENUMLOADED_MODULES_CALLBACK; + alias BOOL function(HANDLE, ULONG, PVOID, PVOID) + PSYMBOL_REGISTERED_CALLBACK; + alias BOOL function(DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength) + DIGEST_FUNCTION; + + PIMAGE_NT_HEADERS CheckSumMappedFile(LPVOID, DWORD, LPDWORD, LPDWORD); + DWORD MapFileAndCheckSumA(LPSTR, LPDWORD, LPDWORD); + DWORD MapFileAndCheckSumW(PWSTR, LPDWORD, LPDWORD); + BOOL TouchFileTimes(HANDLE, LPSYSTEMTIME); + BOOL SplitSymbols(LPSTR, LPSTR, LPSTR, DWORD); + HANDLE FindDebugInfoFile(LPSTR, LPSTR, LPSTR); + HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); + BOOL UpdateDebugInfoFile(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS); + BOOL UpdateDebugInfoFileEx(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS, DWORD); + BOOL BindImage(LPSTR, LPSTR, LPSTR); + BOOL BindImageEx(DWORD, LPSTR, LPSTR, LPSTR, PIMAGEHLP_STATUS_ROUTINE); + BOOL ReBaseImage(LPSTR, LPSTR, BOOL, BOOL, BOOL, ULONG, ULONG*, ULONG*, + ULONG*, ULONG*, ULONG); + PLOADED_IMAGE ImageLoad(LPSTR, LPSTR); + BOOL ImageUnload(PLOADED_IMAGE); + PIMAGE_NT_HEADERS ImageNtHeader(PVOID); + PVOID ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG); + PIMAGE_SECTION_HEADER ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG); + PVOID ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, + PIMAGE_SECTION_HEADER*); + BOOL MapAndLoad(LPSTR, LPSTR, PLOADED_IMAGE, BOOL, BOOL); + BOOL GetImageConfigInformation(PLOADED_IMAGE, + PIMAGE_LOAD_CONFIG_DIRECTORY); + DWORD GetImageUnusedHeaderBytes(PLOADED_IMAGE, LPDWORD); + BOOL SetImageConfigInformation(PLOADED_IMAGE, + PIMAGE_LOAD_CONFIG_DIRECTORY); + BOOL UnMapAndLoad(PLOADED_IMAGE); + PIMAGE_DEBUG_INFORMATION MapDebugInformation(HANDLE, LPSTR, LPSTR, DWORD); + BOOL UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); + HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); + BOOL SearchTreeForFile(LPSTR, LPSTR, LPSTR); + BOOL MakeSureDirectoryPathExists(LPCSTR); + DWORD UnDecorateSymbolName(LPCSTR, LPSTR, DWORD, DWORD); + BOOL StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID, + PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, + PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE); + LPAPI_VERSION ImagehlpApiVersion(); + LPAPI_VERSION ImagehlpApiVersionEx(LPAPI_VERSION); + DWORD GetTimestampForLoadedLibrary(HMODULE); + BOOL RemovePrivateCvSymbolic(PCHAR, PCHAR*, ULONG*); + VOID RemoveRelocations(PCHAR); + DWORD SymSetOptions(DWORD); + DWORD SymGetOptions(); + BOOL SymCleanup(HANDLE); + BOOL SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); + BOOL SymEnumerateSymbols(HANDLE, DWORD, PSYM_ENUMSYMBOLS_CALLBACK, PVOID); + BOOL EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID); + LPVOID SymFunctionTableAccess(HANDLE, DWORD); + BOOL SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); + DWORD SymGetModuleBase(HANDLE, DWORD); + BOOL SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); + BOOL SymGetSymFromName(HANDLE, LPSTR, PIMAGEHLP_SYMBOL); + BOOL SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); + BOOL SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); + BOOL SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); + BOOL SymGetLineFromName(HANDLE, LPSTR, LPSTR, DWORD, PLONG, + PIMAGEHLP_LINE); + BOOL SymGetLineNext(HANDLE, PIMAGEHLP_LINE); + BOOL SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); + BOOL SymMatchFileName(LPSTR, LPSTR, LPSTR*, LPSTR*); + BOOL SymInitialize(HANDLE, LPSTR, BOOL); + BOOL SymGetSearchPath(HANDLE, LPSTR, DWORD); + BOOL SymSetSearchPath(HANDLE, LPSTR); + BOOL SymLoadModule(HANDLE, HANDLE, PSTR, PSTR, DWORD, DWORD); + BOOL SymUnloadModule(HANDLE, DWORD); + BOOL SymUnDName(PIMAGEHLP_SYMBOL, LPSTR, DWORD); + BOOL SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); + BOOL ImageGetDigestStream(HANDLE, DWORD, DIGEST_FUNCTION, DIGEST_HANDLE); + BOOL ImageAddCertificate(HANDLE, LPWIN_CERTIFICATE, PDWORD); + BOOL ImageRemoveCertificate(HANDLE, DWORD); + BOOL ImageEnumerateCertificates(HANDLE, WORD, PDWORD, PDWORD, DWORD); + BOOL ImageGetCertificateData(HANDLE, DWORD, LPWIN_CERTIFICATE, PDWORD); + BOOL ImageGetCertificateHeader(HANDLE, DWORD, LPWIN_CERTIFICATE); + BOOL CopyPdb(CHAR*, CHAR*, BOOL); + BOOL RemovePrivateCvSymbolicEx(PCHAR, ULONG, PCHAR*, ULONG*); +} + +version (Unicode) { + alias MapFileAndCheckSumW MapFileAndCheckSum; +} else { + alias MapFileAndCheckSumA MapFileAndCheckSum; +} diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d index 2f8d1857f9..196d77ffa6 100644 --- a/src/core/sys/windows/imm.d +++ b/src/core/sys/windows/imm.d @@ -1,481 +1,481 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_imm.d) - */ -module core.sys.windows.imm; -pragma(lib, "imm32"); - -import core.sys.windows.windef, core.sys.windows.wingdi; -import core.sys.windows.winuser; // for the MFS_xxx enums. -private import core.sys.windows.w32api; - -const WM_CONVERTREQUESTEX = 0x108; -const WM_IME_STARTCOMPOSITION = 0x10D; -const WM_IME_ENDCOMPOSITION = 0x10E; -const WM_IME_COMPOSITION = 0x10F; -const WM_IME_KEYLAST = 0x10F; -const WM_IME_SETCONTEXT = 0x281; -const WM_IME_NOTIFY = 0x282; -const WM_IME_CONTROL = 0x283; -const WM_IME_COMPOSITIONFULL = 0x284; -const WM_IME_SELECT = 0x285; -const WM_IME_CHAR = 0x286; -//static if (_WIN32_WINNT >= 0x500) { - const WM_IME_REQUEST = 0x288; -//} -const WM_IME_KEYDOWN = 0x290; -const WM_IME_KEYUP = 0x291; - - -const IMC_GETCANDIDATEPOS=7; -const IMC_SETCANDIDATEPOS=8; -const IMC_GETCOMPOSITIONFONT=9; -const IMC_SETCOMPOSITIONFONT=10; -const IMC_GETCOMPOSITIONWINDOW=11; -const IMC_SETCOMPOSITIONWINDOW=12; -const IMC_GETSTATUSWINDOWPOS=15; -const IMC_SETSTATUSWINDOWPOS=16; -const IMC_CLOSESTATUSWINDOW=0x21; -const IMC_OPENSTATUSWINDOW=0x22; -const IMN_CLOSESTATUSWINDOW=1; -const IMN_OPENSTATUSWINDOW=2; -const IMN_CHANGECANDIDATE=3; -const IMN_CLOSECANDIDATE=4; -const IMN_OPENCANDIDATE=5; -const IMN_SETCONVERSIONMODE=6; -const IMN_SETSENTENCEMODE=7; -const IMN_SETOPENSTATUS=8; -const IMN_SETCANDIDATEPOS=9; -const IMN_SETCOMPOSITIONFONT=10; -const IMN_SETCOMPOSITIONWINDOW=11; -const IMN_SETSTATUSWINDOWPOS=12; -const IMN_GUIDELINE=13; -const IMN_PRIVATE=14; - -const NI_OPENCANDIDATE=16; -const NI_CLOSECANDIDATE=17; -const NI_SELECTCANDIDATESTR=18; -const NI_CHANGECANDIDATELIST=19; -const NI_FINALIZECONVERSIONRESULT=20; -const NI_COMPOSITIONSTR=21; -const NI_SETCANDIDATE_PAGESTART=22; -const NI_SETCANDIDATE_PAGESIZE=23; -const NI_IMEMENUSELECTED=24; - -const ISC_SHOWUICANDIDATEWINDOW=1; -const ISC_SHOWUICOMPOSITIONWINDOW=0x80000000; -const ISC_SHOWUIGUIDELINE=0x40000000; -const ISC_SHOWUIALLCANDIDATEWINDOW=15; -const ISC_SHOWUIALL=0xC000000F; - -const CPS_COMPLETE=1; -const CPS_CONVERT=2; -const CPS_REVERT=3; -const CPS_CANCEL=4; - -const IME_CHOTKEY_IME_NONIME_TOGGLE=16; -const IME_CHOTKEY_SHAPE_TOGGLE=17; -const IME_CHOTKEY_SYMBOL_TOGGLE=18; -const IME_JHOTKEY_CLOSE_OPEN=0x30; -const IME_KHOTKEY_SHAPE_TOGGLE=0x50; -const IME_KHOTKEY_HANJACONVERT=0x51; -const IME_KHOTKEY_ENGLISH=0x52; -const IME_THOTKEY_IME_NONIME_TOGGLE=0x70; -const IME_THOTKEY_SHAPE_TOGGLE=0x71; -const IME_THOTKEY_SYMBOL_TOGGLE=0x72; -const IME_HOTKEY_DSWITCH_FIRST=256; -const IME_HOTKEY_DSWITCH_LAST=0x11F; -const IME_ITHOTKEY_RESEND_RESULTSTR=512; -const IME_ITHOTKEY_PREVIOUS_COMPOSITION=513; -const IME_ITHOTKEY_UISTYLE_TOGGLE=514; - -const GCS_COMPREADSTR=1; -const GCS_COMPREADATTR=2; -const GCS_COMPREADCLAUSE=4; -const GCS_COMPSTR=8; -const GCS_COMPATTR=16; -const GCS_COMPCLAUSE=32; -const GCS_CURSORPOS=128; -const GCS_DELTASTART=256; -const GCS_RESULTREADSTR=512; -const GCS_RESULTREADCLAUSE=1024; -const GCS_RESULTSTR=2048; -const GCS_RESULTCLAUSE=4096; - -const CS_INSERTCHAR=0x2000; -const CS_NOMOVECARET=0x4000; - -const IMEVER_0310=0x3000A; -const IMEVER_0400=0x40000; - -const IME_PROP_AT_CARET=0x10000; -const IME_PROP_SPECIAL_UI=0x20000; -const IME_PROP_CANDLIST_START_FROM_1=0x40000; -const IME_PROP_UNICODE=0x80000; - -const UI_CAP_2700=1; -const UI_CAP_ROT90=2; -const UI_CAP_ROTANY=4; - -const SCS_CAP_COMPSTR=1; -const SCS_CAP_MAKEREAD=2; -const SELECT_CAP_CONVERSION=1; -const SELECT_CAP_SENTENCE=2; -const GGL_LEVEL=1; -const GGL_INDEX=2; -const GGL_STRING=3; -const GGL_PRIVATE=4; -const GL_LEVEL_NOGUIDELINE=0; -const GL_LEVEL_FATAL=1; -const GL_LEVEL_ERROR=2; -const GL_LEVEL_WARNING=3; -const GL_LEVEL_INFORMATION=4; -const GL_ID_UNKNOWN=0; -const GL_ID_NOMODULE=1; -const GL_ID_NODICTIONARY=16; -const GL_ID_CANNOTSAVE=17; -const GL_ID_NOCONVERT=32; -const GL_ID_TYPINGERROR=33; -const GL_ID_TOOMANYSTROKE=34; -const GL_ID_READINGCONFLICT=35; -const GL_ID_INPUTREADING=36; -const GL_ID_INPUTRADICAL=37; -const GL_ID_INPUTCODE=38; -const GL_ID_INPUTSYMBOL=39; -const GL_ID_CHOOSECANDIDATE=40; -const GL_ID_REVERSECONVERSION=41; -const GL_ID_PRIVATE_FIRST=0x8000; -const GL_ID_PRIVATE_LAST=0xFFFF; - -const DWORD IGP_GETIMEVERSION = -4; -const IGP_PROPERTY=4; -const IGP_CONVERSION=8; -const IGP_SENTENCE=12; -const IGP_UI=16; -const IGP_SETCOMPSTR=0x14; -const IGP_SELECT=0x18; - -const SCS_SETSTR = GCS_COMPREADSTR|GCS_COMPSTR; -const SCS_CHANGEATTR = GCS_COMPREADATTR|GCS_COMPATTR; -const SCS_CHANGECLAUSE = GCS_COMPREADCLAUSE|GCS_COMPCLAUSE; - -const ATTR_INPUT=0; -const ATTR_TARGET_CONVERTED=1; -const ATTR_CONVERTED=2; -const ATTR_TARGET_NOTCONVERTED=3; -const ATTR_INPUT_ERROR=4; -const ATTR_FIXEDCONVERTED=5; -const CFS_DEFAULT=0; -const CFS_RECT=1; -const CFS_POINT=2; -const CFS_SCREEN=4; -const CFS_FORCE_POSITION=32; -const CFS_CANDIDATEPOS=64; -const CFS_EXCLUDE=128; -const GCL_CONVERSION=1; -const GCL_REVERSECONVERSION=2; -const GCL_REVERSE_LENGTH=3; - -const IME_CMODE_ALPHANUMERIC=0; -const IME_CMODE_NATIVE=1; -const IME_CMODE_CHINESE=IME_CMODE_NATIVE; -const IME_CMODE_HANGEUL=IME_CMODE_NATIVE; -const IME_CMODE_HANGUL=IME_CMODE_NATIVE; -const IME_CMODE_JAPANESE=IME_CMODE_NATIVE; -const IME_CMODE_KATAKANA=2; -const IME_CMODE_LANGUAGE=3; -const IME_CMODE_FULLSHAPE=8; -const IME_CMODE_ROMAN=16; -const IME_CMODE_CHARCODE=32; -const IME_CMODE_HANJACONVERT=64; -const IME_CMODE_SOFTKBD=128; -const IME_CMODE_NOCONVERSION=256; -const IME_CMODE_EUDC=512; -const IME_CMODE_SYMBOL=1024; -const IME_CMODE_FIXED=2048; -const IME_SMODE_NONE=0; -const IME_SMODE_PLAURALCLAUSE=1; -const IME_SMODE_SINGLECONVERT=2; -const IME_SMODE_AUTOMATIC=4; -const IME_SMODE_PHRASEPREDICT=8; -const IME_CAND_UNKNOWN=0; -const IME_CAND_READ=1; -const IME_CAND_CODE=2; -const IME_CAND_MEANING=3; -const IME_CAND_RADICAL=4; -const IME_CAND_STROKE=5; -const IMM_ERROR_NODATA=(-1); -const IMM_ERROR_GENERAL=(-2); -const IME_CONFIG_GENERAL=1; -const IME_CONFIG_REGISTERWORD=2; -const IME_CONFIG_SELECTDICTIONARY=3; -const IME_ESC_QUERY_SUPPORT=3; -const IME_ESC_RESERVED_FIRST=4; -const IME_ESC_RESERVED_LAST=0x7FF; -const IME_ESC_PRIVATE_FIRST=0x800; -const IME_ESC_PRIVATE_LAST=0xFFF; -const IME_ESC_SEQUENCE_TO_INTERNAL=0x1001; -const IME_ESC_GET_EUDC_DICTIONARY=0x1003; -const IME_ESC_SET_EUDC_DICTIONARY=0x1004; -const IME_ESC_MAX_KEY=0x1005; -const IME_ESC_IME_NAME=0x1006; -const IME_ESC_SYNC_HOTKEY=0x1007; -const IME_ESC_HANJA_MODE=0x1008; -const IME_ESC_AUTOMATA=0x1009; -const IME_REGWORD_STYLE_EUDC=1; -const IME_REGWORD_STYLE_USER_FIRST=0x80000000; -const IME_REGWORD_STYLE_USER_LAST=0xFFFFFFFF; - -const SOFTKEYBOARD_TYPE_T1=1; -const SOFTKEYBOARD_TYPE_C1=2; - -const IMEMENUITEM_STRING_SIZE=80; - -const MOD_ALT=1; -const MOD_CONTROL=2; -const MOD_SHIFT=4; -const MOD_WIN=8; -const MOD_IGNORE_ALL_MODIFIER=1024; -const MOD_ON_KEYUP=2048; -const MOD_RIGHT=16384; -const MOD_LEFT=32768; - -const IACE_CHILDREN=1; -const IACE_DEFAULT=16; -const IACE_IGNORENOCONTEXT=32; - -const IGIMIF_RIGHTMENU=1; - -const IGIMII_CMODE=1; -const IGIMII_SMODE=2; -const IGIMII_CONFIGURE=4; -const IGIMII_TOOLS=8; -const IGIMII_HELP=16; -const IGIMII_OTHER=32; -const IGIMII_INPUTTOOLS=64; - -const IMFT_RADIOCHECK=1; -const IMFT_SEPARATOR=2; -const IMFT_SUBMENU=4; - -const IMFS_GRAYED=MFS_GRAYED; -const IMFS_DISABLED=MFS_DISABLED; -const IMFS_CHECKED=MFS_CHECKED; -const IMFS_HILITE=MFS_HILITE; -const IMFS_ENABLED=MFS_ENABLED; -const IMFS_UNCHECKED=MFS_UNCHECKED; -const IMFS_UNHILITE=MFS_UNHILITE; -const IMFS_DEFAULT=MFS_DEFAULT; - -const STYLE_DESCRIPTION_SIZE=32; - -alias DWORD HIMC; -alias DWORD HIMCC; -alias HKL* LPHKL; - -struct COMPOSITIONFORM{ - DWORD dwStyle; - POINT ptCurrentPos; - RECT rcArea; -} -alias COMPOSITIONFORM* PCOMPOSITIONFORM, LPCOMPOSITIONFORM; - -struct CANDIDATEFORM{ - DWORD dwIndex; - DWORD dwStyle; - POINT ptCurrentPos; - RECT rcArea; -} -alias CANDIDATEFORM* PCANDIDATEFORM, LPCANDIDATEFORM; - -struct CANDIDATELIST{ - DWORD dwSize; - DWORD dwStyle; - DWORD dwCount; - DWORD dwSelection; - DWORD dwPageStart; - DWORD dwPageSize; - DWORD[1] dwOffset; -} -alias CANDIDATELIST* PCANDIDATELIST, LPCANDIDATELIST; - -struct REGISTERWORDA{ - LPSTR lpReading; - LPSTR lpWord; -} -alias REGISTERWORDA* PREGISTERWORDA, LPREGISTERWORDA; - -struct REGISTERWORDW{ - LPWSTR lpReading; - LPWSTR lpWord; -} -alias REGISTERWORDW* PREGISTERWORDW, LPREGISTERWORDW; - -struct STYLEBUFA{ - DWORD dwStyle; - CHAR[STYLE_DESCRIPTION_SIZE] szDescription; -} -alias STYLEBUFA* PSTYLEBUFA, LPSTYLEBUFA; - -struct STYLEBUFW{ - DWORD dwStyle; - WCHAR[STYLE_DESCRIPTION_SIZE] szDescription; -} -alias STYLEBUFW* PSTYLEBUFW, LPSTYLEBUFW; - -struct IMEMENUITEMINFOA{ - UINT cbSize = this.sizeof; - UINT fType; - UINT fState; - UINT wID; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - CHAR[IMEMENUITEM_STRING_SIZE] szString; - HBITMAP hbmpItem; -} -alias IMEMENUITEMINFOA* PIMEMENUITEMINFOA, LPIMEMENUITEMINFOA; - -struct IMEMENUITEMINFOW{ - UINT cbSize = this.sizeof; - UINT fType; - UINT fState; - UINT wID; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - WCHAR[IMEMENUITEM_STRING_SIZE] szString; - HBITMAP hbmpItem; -} -alias IMEMENUITEMINFOW* PIMEMENUITEMINFOW, LPIMEMENUITEMINFOW; - -alias int function (LPCSTR, DWORD, LPCSTR, LPVOID) REGISTERWORDENUMPROCA; -alias int function (LPCWSTR, DWORD, LPCWSTR, LPVOID) REGISTERWORDENUMPROCW; - -version(Unicode) { - alias REGISTERWORDENUMPROCW REGISTERWORDENUMPROC; - alias REGISTERWORDW REGISTERWORD; - alias IMEMENUITEMINFOW IMEMENUITEMINFO; - alias STYLEBUFW STYLEBUF; -} else { - alias REGISTERWORDENUMPROCA REGISTERWORDENUMPROC; - alias REGISTERWORDA REGISTERWORD; - alias IMEMENUITEMINFOA IMEMENUITEMINFO; - alias STYLEBUFA STYLEBUF; -} - -alias STYLEBUF* PSTYLEBUF, LPSTYLEBUF; -alias REGISTERWORD* PREGISTERWORD, LPREGISTERWORD; -alias IMEMENUITEMINFO* PIMEMENUITEMINFO, LPIMEMENUITEMINFO; - - -extern (Windows): -HKL ImmInstallIMEA(LPCSTR, LPCSTR); -HKL ImmInstallIMEW(LPCWSTR, LPCWSTR); -HWND ImmGetDefaultIMEWnd(HWND); -UINT ImmGetDescriptionA(HKL, LPSTR, UINT); -UINT ImmGetDescriptionW(HKL, LPWSTR, UINT); -UINT ImmGetIMEFileNameA(HKL, LPSTR, UINT); -UINT ImmGetIMEFileNameW(HKL, LPWSTR, UINT); -DWORD ImmGetProperty(HKL, DWORD); -BOOL ImmIsIME(HKL); -BOOL ImmSimulateHotKey(HWND, DWORD); -HIMC ImmCreateContext(); -BOOL ImmDestroyContext(HIMC); -HIMC ImmGetContext(HWND); -BOOL ImmReleaseContext(HWND, HIMC); -HIMC ImmAssociateContext(HWND, HIMC); -LONG ImmGetCompositionStringA(HIMC, DWORD, PVOID, DWORD); -LONG ImmGetCompositionStringW(HIMC, DWORD, PVOID, DWORD); -BOOL ImmSetCompositionStringA(HIMC, DWORD, PCVOID, DWORD, PCVOID, DWORD); -BOOL ImmSetCompositionStringW(HIMC, DWORD, PCVOID, DWORD, PCVOID, DWORD); -DWORD ImmGetCandidateListCountA(HIMC, PDWORD); -DWORD ImmGetCandidateListCountW(HIMC, PDWORD); -DWORD ImmGetCandidateListA(HIMC, DWORD, PCANDIDATELIST, DWORD); -DWORD ImmGetCandidateListW(HIMC, DWORD, PCANDIDATELIST, DWORD); -DWORD ImmGetGuideLineA(HIMC, DWORD, LPSTR, DWORD); -DWORD ImmGetGuideLineW(HIMC, DWORD, LPWSTR, DWORD); -BOOL ImmGetConversionStatus(HIMC, LPDWORD, PDWORD); -BOOL ImmSetConversionStatus(HIMC, DWORD, DWORD); -BOOL ImmGetOpenStatus(HIMC); -BOOL ImmSetOpenStatus(HIMC, BOOL); - -BOOL ImmGetCompositionFontA(HIMC, LPLOGFONTA); -BOOL ImmGetCompositionFontW(HIMC, LPLOGFONTW); -BOOL ImmSetCompositionFontA(HIMC, LPLOGFONTA); -BOOL ImmSetCompositionFontW(HIMC, LPLOGFONTW); - -BOOL ImmConfigureIMEA(HKL, HWND, DWORD, PVOID); -BOOL ImmConfigureIMEW(HKL, HWND, DWORD, PVOID); -LRESULT ImmEscapeA(HKL, HIMC, UINT, PVOID); -LRESULT ImmEscapeW(HKL, HIMC, UINT, PVOID); -DWORD ImmGetConversionListA(HKL, HIMC, LPCSTR, PCANDIDATELIST, DWORD, UINT); -DWORD ImmGetConversionListW(HKL, HIMC, LPCWSTR, PCANDIDATELIST, DWORD, UINT); -BOOL ImmNotifyIME(HIMC, DWORD, DWORD, DWORD); -BOOL ImmGetStatusWindowPos(HIMC, LPPOINT); -BOOL ImmSetStatusWindowPos(HIMC, LPPOINT); -BOOL ImmGetCompositionWindow(HIMC, PCOMPOSITIONFORM); -BOOL ImmSetCompositionWindow(HIMC, PCOMPOSITIONFORM); -BOOL ImmGetCandidateWindow(HIMC, DWORD, PCANDIDATEFORM); -BOOL ImmSetCandidateWindow(HIMC, PCANDIDATEFORM); -BOOL ImmIsUIMessageA(HWND, UINT, WPARAM, LPARAM); -BOOL ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM); -UINT ImmGetVirtualKey(HWND); -BOOL ImmRegisterWordA(HKL, LPCSTR, DWORD, LPCSTR); -BOOL ImmRegisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR); -BOOL ImmUnregisterWordA(HKL, LPCSTR, DWORD, LPCSTR); -BOOL ImmUnregisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR); -UINT ImmGetRegisterWordStyleA(HKL, UINT, PSTYLEBUFA); -UINT ImmGetRegisterWordStyleW(HKL, UINT, PSTYLEBUFW); -UINT ImmEnumRegisterWordA(HKL, REGISTERWORDENUMPROCA, LPCSTR, DWORD, LPCSTR, PVOID); -UINT ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, PVOID); -BOOL EnableEUDC(BOOL); -BOOL ImmDisableIME(DWORD); -DWORD ImmGetImeMenuItemsA(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMINFOA, DWORD); -DWORD ImmGetImeMenuItemsW(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); - -version(Unicode) { - alias ImmEnumRegisterWordW ImmEnumRegisterWord; - alias ImmGetRegisterWordStyleW ImmGetRegisterWordStyle; - alias ImmUnregisterWordW ImmUnregisterWord; - alias ImmRegisterWordW ImmRegisterWord; - alias ImmInstallIMEW ImmInstallIME; - alias ImmIsUIMessageW ImmIsUIMessage; - alias ImmGetConversionListW ImmGetConversionList; - alias ImmEscapeW ImmEscape; - alias ImmConfigureIMEW ImmConfigureIME; - alias ImmSetCompositionFontW ImmSetCompositionFont; - alias ImmGetCompositionFontW ImmGetCompositionFont; - alias ImmGetGuideLineW ImmGetGuideLine; - alias ImmGetCandidateListW ImmGetCandidateList; - alias ImmGetCandidateListCountW ImmGetCandidateListCount; - alias ImmSetCompositionStringW ImmSetCompositionString; - alias ImmGetCompositionStringW ImmGetCompositionString; - alias ImmGetDescriptionW ImmGetDescription; - alias ImmGetIMEFileNameW ImmGetIMEFileName; - alias ImmGetImeMenuItemsW ImmGetImeMenuItems; -} else { - alias ImmEnumRegisterWordA ImmEnumRegisterWord; - alias ImmGetRegisterWordStyleA ImmGetRegisterWordStyle; - alias ImmUnregisterWordA ImmUnregisterWord; - alias ImmRegisterWordA ImmRegisterWord; - alias ImmInstallIMEA ImmInstallIME; - alias ImmIsUIMessageA ImmIsUIMessage; - alias ImmGetConversionListA ImmGetConversionList; - alias ImmEscapeA ImmEscape; - alias ImmConfigureIMEA ImmConfigureIME; - alias ImmSetCompositionFontA ImmSetCompositionFont; - alias ImmGetCompositionFontA ImmGetCompositionFont; - alias ImmGetGuideLineA ImmGetGuideLine; - alias ImmGetCandidateListA ImmGetCandidateList; - alias ImmGetCandidateListCountA ImmGetCandidateListCount; - alias ImmSetCompositionStringA ImmSetCompositionString; - alias ImmGetCompositionStringA ImmGetCompositionString; - alias ImmGetDescriptionA ImmGetDescription; - alias ImmGetIMEFileNameA ImmGetIMEFileName; - alias ImmGetImeMenuItemsW ImmGetImeMenuItems; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_imm.d) + */ +module core.sys.windows.imm; +pragma(lib, "imm32"); + +import core.sys.windows.windef, core.sys.windows.wingdi; +import core.sys.windows.winuser; // for the MFS_xxx enums. +private import core.sys.windows.w32api; + +const WM_CONVERTREQUESTEX = 0x108; +const WM_IME_STARTCOMPOSITION = 0x10D; +const WM_IME_ENDCOMPOSITION = 0x10E; +const WM_IME_COMPOSITION = 0x10F; +const WM_IME_KEYLAST = 0x10F; +const WM_IME_SETCONTEXT = 0x281; +const WM_IME_NOTIFY = 0x282; +const WM_IME_CONTROL = 0x283; +const WM_IME_COMPOSITIONFULL = 0x284; +const WM_IME_SELECT = 0x285; +const WM_IME_CHAR = 0x286; +//static if (_WIN32_WINNT >= 0x500) { + const WM_IME_REQUEST = 0x288; +//} +const WM_IME_KEYDOWN = 0x290; +const WM_IME_KEYUP = 0x291; + + +const IMC_GETCANDIDATEPOS=7; +const IMC_SETCANDIDATEPOS=8; +const IMC_GETCOMPOSITIONFONT=9; +const IMC_SETCOMPOSITIONFONT=10; +const IMC_GETCOMPOSITIONWINDOW=11; +const IMC_SETCOMPOSITIONWINDOW=12; +const IMC_GETSTATUSWINDOWPOS=15; +const IMC_SETSTATUSWINDOWPOS=16; +const IMC_CLOSESTATUSWINDOW=0x21; +const IMC_OPENSTATUSWINDOW=0x22; +const IMN_CLOSESTATUSWINDOW=1; +const IMN_OPENSTATUSWINDOW=2; +const IMN_CHANGECANDIDATE=3; +const IMN_CLOSECANDIDATE=4; +const IMN_OPENCANDIDATE=5; +const IMN_SETCONVERSIONMODE=6; +const IMN_SETSENTENCEMODE=7; +const IMN_SETOPENSTATUS=8; +const IMN_SETCANDIDATEPOS=9; +const IMN_SETCOMPOSITIONFONT=10; +const IMN_SETCOMPOSITIONWINDOW=11; +const IMN_SETSTATUSWINDOWPOS=12; +const IMN_GUIDELINE=13; +const IMN_PRIVATE=14; + +const NI_OPENCANDIDATE=16; +const NI_CLOSECANDIDATE=17; +const NI_SELECTCANDIDATESTR=18; +const NI_CHANGECANDIDATELIST=19; +const NI_FINALIZECONVERSIONRESULT=20; +const NI_COMPOSITIONSTR=21; +const NI_SETCANDIDATE_PAGESTART=22; +const NI_SETCANDIDATE_PAGESIZE=23; +const NI_IMEMENUSELECTED=24; + +const ISC_SHOWUICANDIDATEWINDOW=1; +const ISC_SHOWUICOMPOSITIONWINDOW=0x80000000; +const ISC_SHOWUIGUIDELINE=0x40000000; +const ISC_SHOWUIALLCANDIDATEWINDOW=15; +const ISC_SHOWUIALL=0xC000000F; + +const CPS_COMPLETE=1; +const CPS_CONVERT=2; +const CPS_REVERT=3; +const CPS_CANCEL=4; + +const IME_CHOTKEY_IME_NONIME_TOGGLE=16; +const IME_CHOTKEY_SHAPE_TOGGLE=17; +const IME_CHOTKEY_SYMBOL_TOGGLE=18; +const IME_JHOTKEY_CLOSE_OPEN=0x30; +const IME_KHOTKEY_SHAPE_TOGGLE=0x50; +const IME_KHOTKEY_HANJACONVERT=0x51; +const IME_KHOTKEY_ENGLISH=0x52; +const IME_THOTKEY_IME_NONIME_TOGGLE=0x70; +const IME_THOTKEY_SHAPE_TOGGLE=0x71; +const IME_THOTKEY_SYMBOL_TOGGLE=0x72; +const IME_HOTKEY_DSWITCH_FIRST=256; +const IME_HOTKEY_DSWITCH_LAST=0x11F; +const IME_ITHOTKEY_RESEND_RESULTSTR=512; +const IME_ITHOTKEY_PREVIOUS_COMPOSITION=513; +const IME_ITHOTKEY_UISTYLE_TOGGLE=514; + +const GCS_COMPREADSTR=1; +const GCS_COMPREADATTR=2; +const GCS_COMPREADCLAUSE=4; +const GCS_COMPSTR=8; +const GCS_COMPATTR=16; +const GCS_COMPCLAUSE=32; +const GCS_CURSORPOS=128; +const GCS_DELTASTART=256; +const GCS_RESULTREADSTR=512; +const GCS_RESULTREADCLAUSE=1024; +const GCS_RESULTSTR=2048; +const GCS_RESULTCLAUSE=4096; + +const CS_INSERTCHAR=0x2000; +const CS_NOMOVECARET=0x4000; + +const IMEVER_0310=0x3000A; +const IMEVER_0400=0x40000; + +const IME_PROP_AT_CARET=0x10000; +const IME_PROP_SPECIAL_UI=0x20000; +const IME_PROP_CANDLIST_START_FROM_1=0x40000; +const IME_PROP_UNICODE=0x80000; + +const UI_CAP_2700=1; +const UI_CAP_ROT90=2; +const UI_CAP_ROTANY=4; + +const SCS_CAP_COMPSTR=1; +const SCS_CAP_MAKEREAD=2; +const SELECT_CAP_CONVERSION=1; +const SELECT_CAP_SENTENCE=2; +const GGL_LEVEL=1; +const GGL_INDEX=2; +const GGL_STRING=3; +const GGL_PRIVATE=4; +const GL_LEVEL_NOGUIDELINE=0; +const GL_LEVEL_FATAL=1; +const GL_LEVEL_ERROR=2; +const GL_LEVEL_WARNING=3; +const GL_LEVEL_INFORMATION=4; +const GL_ID_UNKNOWN=0; +const GL_ID_NOMODULE=1; +const GL_ID_NODICTIONARY=16; +const GL_ID_CANNOTSAVE=17; +const GL_ID_NOCONVERT=32; +const GL_ID_TYPINGERROR=33; +const GL_ID_TOOMANYSTROKE=34; +const GL_ID_READINGCONFLICT=35; +const GL_ID_INPUTREADING=36; +const GL_ID_INPUTRADICAL=37; +const GL_ID_INPUTCODE=38; +const GL_ID_INPUTSYMBOL=39; +const GL_ID_CHOOSECANDIDATE=40; +const GL_ID_REVERSECONVERSION=41; +const GL_ID_PRIVATE_FIRST=0x8000; +const GL_ID_PRIVATE_LAST=0xFFFF; + +const DWORD IGP_GETIMEVERSION = -4; +const IGP_PROPERTY=4; +const IGP_CONVERSION=8; +const IGP_SENTENCE=12; +const IGP_UI=16; +const IGP_SETCOMPSTR=0x14; +const IGP_SELECT=0x18; + +const SCS_SETSTR = GCS_COMPREADSTR|GCS_COMPSTR; +const SCS_CHANGEATTR = GCS_COMPREADATTR|GCS_COMPATTR; +const SCS_CHANGECLAUSE = GCS_COMPREADCLAUSE|GCS_COMPCLAUSE; + +const ATTR_INPUT=0; +const ATTR_TARGET_CONVERTED=1; +const ATTR_CONVERTED=2; +const ATTR_TARGET_NOTCONVERTED=3; +const ATTR_INPUT_ERROR=4; +const ATTR_FIXEDCONVERTED=5; +const CFS_DEFAULT=0; +const CFS_RECT=1; +const CFS_POINT=2; +const CFS_SCREEN=4; +const CFS_FORCE_POSITION=32; +const CFS_CANDIDATEPOS=64; +const CFS_EXCLUDE=128; +const GCL_CONVERSION=1; +const GCL_REVERSECONVERSION=2; +const GCL_REVERSE_LENGTH=3; + +const IME_CMODE_ALPHANUMERIC=0; +const IME_CMODE_NATIVE=1; +const IME_CMODE_CHINESE=IME_CMODE_NATIVE; +const IME_CMODE_HANGEUL=IME_CMODE_NATIVE; +const IME_CMODE_HANGUL=IME_CMODE_NATIVE; +const IME_CMODE_JAPANESE=IME_CMODE_NATIVE; +const IME_CMODE_KATAKANA=2; +const IME_CMODE_LANGUAGE=3; +const IME_CMODE_FULLSHAPE=8; +const IME_CMODE_ROMAN=16; +const IME_CMODE_CHARCODE=32; +const IME_CMODE_HANJACONVERT=64; +const IME_CMODE_SOFTKBD=128; +const IME_CMODE_NOCONVERSION=256; +const IME_CMODE_EUDC=512; +const IME_CMODE_SYMBOL=1024; +const IME_CMODE_FIXED=2048; +const IME_SMODE_NONE=0; +const IME_SMODE_PLAURALCLAUSE=1; +const IME_SMODE_SINGLECONVERT=2; +const IME_SMODE_AUTOMATIC=4; +const IME_SMODE_PHRASEPREDICT=8; +const IME_CAND_UNKNOWN=0; +const IME_CAND_READ=1; +const IME_CAND_CODE=2; +const IME_CAND_MEANING=3; +const IME_CAND_RADICAL=4; +const IME_CAND_STROKE=5; +const IMM_ERROR_NODATA=(-1); +const IMM_ERROR_GENERAL=(-2); +const IME_CONFIG_GENERAL=1; +const IME_CONFIG_REGISTERWORD=2; +const IME_CONFIG_SELECTDICTIONARY=3; +const IME_ESC_QUERY_SUPPORT=3; +const IME_ESC_RESERVED_FIRST=4; +const IME_ESC_RESERVED_LAST=0x7FF; +const IME_ESC_PRIVATE_FIRST=0x800; +const IME_ESC_PRIVATE_LAST=0xFFF; +const IME_ESC_SEQUENCE_TO_INTERNAL=0x1001; +const IME_ESC_GET_EUDC_DICTIONARY=0x1003; +const IME_ESC_SET_EUDC_DICTIONARY=0x1004; +const IME_ESC_MAX_KEY=0x1005; +const IME_ESC_IME_NAME=0x1006; +const IME_ESC_SYNC_HOTKEY=0x1007; +const IME_ESC_HANJA_MODE=0x1008; +const IME_ESC_AUTOMATA=0x1009; +const IME_REGWORD_STYLE_EUDC=1; +const IME_REGWORD_STYLE_USER_FIRST=0x80000000; +const IME_REGWORD_STYLE_USER_LAST=0xFFFFFFFF; + +const SOFTKEYBOARD_TYPE_T1=1; +const SOFTKEYBOARD_TYPE_C1=2; + +const IMEMENUITEM_STRING_SIZE=80; + +const MOD_ALT=1; +const MOD_CONTROL=2; +const MOD_SHIFT=4; +const MOD_WIN=8; +const MOD_IGNORE_ALL_MODIFIER=1024; +const MOD_ON_KEYUP=2048; +const MOD_RIGHT=16384; +const MOD_LEFT=32768; + +const IACE_CHILDREN=1; +const IACE_DEFAULT=16; +const IACE_IGNORENOCONTEXT=32; + +const IGIMIF_RIGHTMENU=1; + +const IGIMII_CMODE=1; +const IGIMII_SMODE=2; +const IGIMII_CONFIGURE=4; +const IGIMII_TOOLS=8; +const IGIMII_HELP=16; +const IGIMII_OTHER=32; +const IGIMII_INPUTTOOLS=64; + +const IMFT_RADIOCHECK=1; +const IMFT_SEPARATOR=2; +const IMFT_SUBMENU=4; + +const IMFS_GRAYED=MFS_GRAYED; +const IMFS_DISABLED=MFS_DISABLED; +const IMFS_CHECKED=MFS_CHECKED; +const IMFS_HILITE=MFS_HILITE; +const IMFS_ENABLED=MFS_ENABLED; +const IMFS_UNCHECKED=MFS_UNCHECKED; +const IMFS_UNHILITE=MFS_UNHILITE; +const IMFS_DEFAULT=MFS_DEFAULT; + +const STYLE_DESCRIPTION_SIZE=32; + +alias DWORD HIMC; +alias DWORD HIMCC; +alias HKL* LPHKL; + +struct COMPOSITIONFORM{ + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} +alias COMPOSITIONFORM* PCOMPOSITIONFORM, LPCOMPOSITIONFORM; + +struct CANDIDATEFORM{ + DWORD dwIndex; + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} +alias CANDIDATEFORM* PCANDIDATEFORM, LPCANDIDATEFORM; + +struct CANDIDATELIST{ + DWORD dwSize; + DWORD dwStyle; + DWORD dwCount; + DWORD dwSelection; + DWORD dwPageStart; + DWORD dwPageSize; + DWORD[1] dwOffset; +} +alias CANDIDATELIST* PCANDIDATELIST, LPCANDIDATELIST; + +struct REGISTERWORDA{ + LPSTR lpReading; + LPSTR lpWord; +} +alias REGISTERWORDA* PREGISTERWORDA, LPREGISTERWORDA; + +struct REGISTERWORDW{ + LPWSTR lpReading; + LPWSTR lpWord; +} +alias REGISTERWORDW* PREGISTERWORDW, LPREGISTERWORDW; + +struct STYLEBUFA{ + DWORD dwStyle; + CHAR[STYLE_DESCRIPTION_SIZE] szDescription; +} +alias STYLEBUFA* PSTYLEBUFA, LPSTYLEBUFA; + +struct STYLEBUFW{ + DWORD dwStyle; + WCHAR[STYLE_DESCRIPTION_SIZE] szDescription; +} +alias STYLEBUFW* PSTYLEBUFW, LPSTYLEBUFW; + +struct IMEMENUITEMINFOA{ + UINT cbSize = this.sizeof; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + CHAR[IMEMENUITEM_STRING_SIZE] szString; + HBITMAP hbmpItem; +} +alias IMEMENUITEMINFOA* PIMEMENUITEMINFOA, LPIMEMENUITEMINFOA; + +struct IMEMENUITEMINFOW{ + UINT cbSize = this.sizeof; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + WCHAR[IMEMENUITEM_STRING_SIZE] szString; + HBITMAP hbmpItem; +} +alias IMEMENUITEMINFOW* PIMEMENUITEMINFOW, LPIMEMENUITEMINFOW; + +alias int function (LPCSTR, DWORD, LPCSTR, LPVOID) REGISTERWORDENUMPROCA; +alias int function (LPCWSTR, DWORD, LPCWSTR, LPVOID) REGISTERWORDENUMPROCW; + +version(Unicode) { + alias REGISTERWORDENUMPROCW REGISTERWORDENUMPROC; + alias REGISTERWORDW REGISTERWORD; + alias IMEMENUITEMINFOW IMEMENUITEMINFO; + alias STYLEBUFW STYLEBUF; +} else { + alias REGISTERWORDENUMPROCA REGISTERWORDENUMPROC; + alias REGISTERWORDA REGISTERWORD; + alias IMEMENUITEMINFOA IMEMENUITEMINFO; + alias STYLEBUFA STYLEBUF; +} + +alias STYLEBUF* PSTYLEBUF, LPSTYLEBUF; +alias REGISTERWORD* PREGISTERWORD, LPREGISTERWORD; +alias IMEMENUITEMINFO* PIMEMENUITEMINFO, LPIMEMENUITEMINFO; + + +extern (Windows): +HKL ImmInstallIMEA(LPCSTR, LPCSTR); +HKL ImmInstallIMEW(LPCWSTR, LPCWSTR); +HWND ImmGetDefaultIMEWnd(HWND); +UINT ImmGetDescriptionA(HKL, LPSTR, UINT); +UINT ImmGetDescriptionW(HKL, LPWSTR, UINT); +UINT ImmGetIMEFileNameA(HKL, LPSTR, UINT); +UINT ImmGetIMEFileNameW(HKL, LPWSTR, UINT); +DWORD ImmGetProperty(HKL, DWORD); +BOOL ImmIsIME(HKL); +BOOL ImmSimulateHotKey(HWND, DWORD); +HIMC ImmCreateContext(); +BOOL ImmDestroyContext(HIMC); +HIMC ImmGetContext(HWND); +BOOL ImmReleaseContext(HWND, HIMC); +HIMC ImmAssociateContext(HWND, HIMC); +LONG ImmGetCompositionStringA(HIMC, DWORD, PVOID, DWORD); +LONG ImmGetCompositionStringW(HIMC, DWORD, PVOID, DWORD); +BOOL ImmSetCompositionStringA(HIMC, DWORD, PCVOID, DWORD, PCVOID, DWORD); +BOOL ImmSetCompositionStringW(HIMC, DWORD, PCVOID, DWORD, PCVOID, DWORD); +DWORD ImmGetCandidateListCountA(HIMC, PDWORD); +DWORD ImmGetCandidateListCountW(HIMC, PDWORD); +DWORD ImmGetCandidateListA(HIMC, DWORD, PCANDIDATELIST, DWORD); +DWORD ImmGetCandidateListW(HIMC, DWORD, PCANDIDATELIST, DWORD); +DWORD ImmGetGuideLineA(HIMC, DWORD, LPSTR, DWORD); +DWORD ImmGetGuideLineW(HIMC, DWORD, LPWSTR, DWORD); +BOOL ImmGetConversionStatus(HIMC, LPDWORD, PDWORD); +BOOL ImmSetConversionStatus(HIMC, DWORD, DWORD); +BOOL ImmGetOpenStatus(HIMC); +BOOL ImmSetOpenStatus(HIMC, BOOL); + +BOOL ImmGetCompositionFontA(HIMC, LPLOGFONTA); +BOOL ImmGetCompositionFontW(HIMC, LPLOGFONTW); +BOOL ImmSetCompositionFontA(HIMC, LPLOGFONTA); +BOOL ImmSetCompositionFontW(HIMC, LPLOGFONTW); + +BOOL ImmConfigureIMEA(HKL, HWND, DWORD, PVOID); +BOOL ImmConfigureIMEW(HKL, HWND, DWORD, PVOID); +LRESULT ImmEscapeA(HKL, HIMC, UINT, PVOID); +LRESULT ImmEscapeW(HKL, HIMC, UINT, PVOID); +DWORD ImmGetConversionListA(HKL, HIMC, LPCSTR, PCANDIDATELIST, DWORD, UINT); +DWORD ImmGetConversionListW(HKL, HIMC, LPCWSTR, PCANDIDATELIST, DWORD, UINT); +BOOL ImmNotifyIME(HIMC, DWORD, DWORD, DWORD); +BOOL ImmGetStatusWindowPos(HIMC, LPPOINT); +BOOL ImmSetStatusWindowPos(HIMC, LPPOINT); +BOOL ImmGetCompositionWindow(HIMC, PCOMPOSITIONFORM); +BOOL ImmSetCompositionWindow(HIMC, PCOMPOSITIONFORM); +BOOL ImmGetCandidateWindow(HIMC, DWORD, PCANDIDATEFORM); +BOOL ImmSetCandidateWindow(HIMC, PCANDIDATEFORM); +BOOL ImmIsUIMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM); +UINT ImmGetVirtualKey(HWND); +BOOL ImmRegisterWordA(HKL, LPCSTR, DWORD, LPCSTR); +BOOL ImmRegisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR); +BOOL ImmUnregisterWordA(HKL, LPCSTR, DWORD, LPCSTR); +BOOL ImmUnregisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR); +UINT ImmGetRegisterWordStyleA(HKL, UINT, PSTYLEBUFA); +UINT ImmGetRegisterWordStyleW(HKL, UINT, PSTYLEBUFW); +UINT ImmEnumRegisterWordA(HKL, REGISTERWORDENUMPROCA, LPCSTR, DWORD, LPCSTR, PVOID); +UINT ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, PVOID); +BOOL EnableEUDC(BOOL); +BOOL ImmDisableIME(DWORD); +DWORD ImmGetImeMenuItemsA(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMINFOA, DWORD); +DWORD ImmGetImeMenuItemsW(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); + +version(Unicode) { + alias ImmEnumRegisterWordW ImmEnumRegisterWord; + alias ImmGetRegisterWordStyleW ImmGetRegisterWordStyle; + alias ImmUnregisterWordW ImmUnregisterWord; + alias ImmRegisterWordW ImmRegisterWord; + alias ImmInstallIMEW ImmInstallIME; + alias ImmIsUIMessageW ImmIsUIMessage; + alias ImmGetConversionListW ImmGetConversionList; + alias ImmEscapeW ImmEscape; + alias ImmConfigureIMEW ImmConfigureIME; + alias ImmSetCompositionFontW ImmSetCompositionFont; + alias ImmGetCompositionFontW ImmGetCompositionFont; + alias ImmGetGuideLineW ImmGetGuideLine; + alias ImmGetCandidateListW ImmGetCandidateList; + alias ImmGetCandidateListCountW ImmGetCandidateListCount; + alias ImmSetCompositionStringW ImmSetCompositionString; + alias ImmGetCompositionStringW ImmGetCompositionString; + alias ImmGetDescriptionW ImmGetDescription; + alias ImmGetIMEFileNameW ImmGetIMEFileName; + alias ImmGetImeMenuItemsW ImmGetImeMenuItems; +} else { + alias ImmEnumRegisterWordA ImmEnumRegisterWord; + alias ImmGetRegisterWordStyleA ImmGetRegisterWordStyle; + alias ImmUnregisterWordA ImmUnregisterWord; + alias ImmRegisterWordA ImmRegisterWord; + alias ImmInstallIMEA ImmInstallIME; + alias ImmIsUIMessageA ImmIsUIMessage; + alias ImmGetConversionListA ImmGetConversionList; + alias ImmEscapeA ImmEscape; + alias ImmConfigureIMEA ImmConfigureIME; + alias ImmSetCompositionFontA ImmSetCompositionFont; + alias ImmGetCompositionFontA ImmGetCompositionFont; + alias ImmGetGuideLineA ImmGetGuideLine; + alias ImmGetCandidateListA ImmGetCandidateList; + alias ImmGetCandidateListCountA ImmGetCandidateListCount; + alias ImmSetCompositionStringA ImmSetCompositionString; + alias ImmGetCompositionStringA ImmGetCompositionString; + alias ImmGetDescriptionA ImmGetDescription; + alias ImmGetIMEFileNameA ImmGetIMEFileName; + alias ImmGetImeMenuItemsW ImmGetImeMenuItems; +} diff --git a/src/core/sys/windows/intshcut.d b/src/core/sys/windows/intshcut.d index 8aaf187823..8c8cad7601 100644 --- a/src/core/sys/windows/intshcut.d +++ b/src/core/sys/windows/intshcut.d @@ -1,88 +1,88 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_intshcut.d) - */ -module core.sys.windows.intshcut; - -private import core.sys.windows.unknwn, core.sys.windows.windef; - -enum : SCODE { - E_FLAGS = 0x80041000, - // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000) - URL_E_INVALID_SYNTAX = 0x80041001, - // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001) - URL_E_UNREGISTERED_PROTOCOL = 0x80041002, // etc. - IS_E_EXEC_FAILED = 0x80042002 -} - -enum IURL_SETURL_FLAGS { - IURL_SETURL_FL_GUESS_PROTOCOL = 1, - IURL_SETURL_FL_USE_DEFAULT_PROTOCOL, - ALL_IURL_SETURL_FLAGS -} - -enum IURL_INVOKECOMMAND_FLAGS { - IURL_INVOKECOMMAND_FL_ALLOW_UI = 1, - IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB, - ALL_IURL_INVOKECOMMAND_FLAGS -} - -enum TRANSLATEURL_IN_FLAGS { - TRANSLATEURL_FL_GUESS_PROTOCOL = 1, - TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL, - ALL_TRANSLATEURL_FLAGS -} - -enum URLASSOCIATIONDIALOG_IN_FLAGS { - URLASSOCDLG_FL_USE_DEFAULT_NAME = 1, - URLASSOCDLG_FL_REGISTER_ASSOC, - ALL_URLASSOCDLG_FLAGS -} - -enum MIMEASSOCIATIONDIALOG_IN_FLAGS { - MIMEASSOCDLG_FL_REGISTER_ASSOC = 1, - ALL_MIMEASSOCDLG_FLAGS = MIMEASSOCDLG_FL_REGISTER_ASSOC -} - -struct URLINVOKECOMMANDINFO { - DWORD dwcbSize = URLINVOKECOMMANDINFO.sizeof; - DWORD dwFlags; - HWND hwndParent; - PCSTR pcszVerb; -} -alias URLINVOKECOMMANDINFO CURLINVOKECOMMANDINFO; -alias URLINVOKECOMMANDINFO* PURLINVOKECOMMANDINFO, PCURLINVOKECOMMANDINFO; - -interface IUniformResourceLocator : IUnknown { - HRESULT SetURL(PCSTR, DWORD); - HRESULT GetURL(PSTR*); - HRESULT InvokeCommand(PURLINVOKECOMMANDINFO); -} -//alias typeof(*(IUniformResourceLocator.init)) CIUniformResourceLocator; // value-type of interface not representable in D -alias IUniformResourceLocator PIUniformResourceLocator, - PCIUniformResourceLocator; - -extern (Windows) { - BOOL InetIsOffline(DWORD); - HRESULT MIMEAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); - HRESULT MIMEAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); - HRESULT TranslateURLA(PCSTR, DWORD, PSTR*); - HRESULT TranslateURLW(PCWSTR, DWORD, PWSTR*); - HRESULT URLAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); - HRESULT URLAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); -} - -version (Unicode) { - alias TranslateURLW TranslateURL; - alias MIMEAssociationDialogW MIMEAssociationDialog; - alias URLAssociationDialogW URLAssociationDialog; -} else { - alias TranslateURLA TranslateURL; - alias MIMEAssociationDialogA MIMEAssociationDialog; - alias URLAssociationDialogA URLAssociationDialog; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_intshcut.d) + */ +module core.sys.windows.intshcut; + +private import core.sys.windows.unknwn, core.sys.windows.windef; + +enum : SCODE { + E_FLAGS = 0x80041000, + // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000) + URL_E_INVALID_SYNTAX = 0x80041001, + // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001) + URL_E_UNREGISTERED_PROTOCOL = 0x80041002, // etc. + IS_E_EXEC_FAILED = 0x80042002 +} + +enum IURL_SETURL_FLAGS { + IURL_SETURL_FL_GUESS_PROTOCOL = 1, + IURL_SETURL_FL_USE_DEFAULT_PROTOCOL, + ALL_IURL_SETURL_FLAGS +} + +enum IURL_INVOKECOMMAND_FLAGS { + IURL_INVOKECOMMAND_FL_ALLOW_UI = 1, + IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB, + ALL_IURL_INVOKECOMMAND_FLAGS +} + +enum TRANSLATEURL_IN_FLAGS { + TRANSLATEURL_FL_GUESS_PROTOCOL = 1, + TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL, + ALL_TRANSLATEURL_FLAGS +} + +enum URLASSOCIATIONDIALOG_IN_FLAGS { + URLASSOCDLG_FL_USE_DEFAULT_NAME = 1, + URLASSOCDLG_FL_REGISTER_ASSOC, + ALL_URLASSOCDLG_FLAGS +} + +enum MIMEASSOCIATIONDIALOG_IN_FLAGS { + MIMEASSOCDLG_FL_REGISTER_ASSOC = 1, + ALL_MIMEASSOCDLG_FLAGS = MIMEASSOCDLG_FL_REGISTER_ASSOC +} + +struct URLINVOKECOMMANDINFO { + DWORD dwcbSize = URLINVOKECOMMANDINFO.sizeof; + DWORD dwFlags; + HWND hwndParent; + PCSTR pcszVerb; +} +alias URLINVOKECOMMANDINFO CURLINVOKECOMMANDINFO; +alias URLINVOKECOMMANDINFO* PURLINVOKECOMMANDINFO, PCURLINVOKECOMMANDINFO; + +interface IUniformResourceLocator : IUnknown { + HRESULT SetURL(PCSTR, DWORD); + HRESULT GetURL(PSTR*); + HRESULT InvokeCommand(PURLINVOKECOMMANDINFO); +} +//alias typeof(*(IUniformResourceLocator.init)) CIUniformResourceLocator; // value-type of interface not representable in D +alias IUniformResourceLocator PIUniformResourceLocator, + PCIUniformResourceLocator; + +extern (Windows) { + BOOL InetIsOffline(DWORD); + HRESULT MIMEAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); + HRESULT MIMEAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); + HRESULT TranslateURLA(PCSTR, DWORD, PSTR*); + HRESULT TranslateURLW(PCWSTR, DWORD, PWSTR*); + HRESULT URLAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); + HRESULT URLAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); +} + +version (Unicode) { + alias TranslateURLW TranslateURL; + alias MIMEAssociationDialogW MIMEAssociationDialog; + alias URLAssociationDialogW URLAssociationDialog; +} else { + alias TranslateURLA TranslateURL; + alias MIMEAssociationDialogA MIMEAssociationDialog; + alias URLAssociationDialogA URLAssociationDialog; +} diff --git a/src/core/sys/windows/ipexport.d b/src/core/sys/windows/ipexport.d index 74a447ac31..a2b5564c35 100644 --- a/src/core/sys/windows/ipexport.d +++ b/src/core/sys/windows/ipexport.d @@ -1,107 +1,107 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ipexport.d) - */ -module core.sys.windows.ipexport; - -private import core.sys.windows.windef; - -const size_t MAX_ADAPTER_NAME = 128; - -// IP STATUS flags -enum : IP_STATUS { - IP_SUCCESS = 0, - IP_STATUS_BASE = 11000, - IP_BUF_TOO_SMALL, - IP_DEST_NET_UNREACHABLE, - IP_DEST_HOST_UNREACHABLE, - IP_DEST_PROT_UNREACHABLE, - IP_DEST_PORT_UNREACHABLE, - IP_NO_RESOURCES, - IP_BAD_OPTION, - IP_HW_ERROR, - IP_PACKET_TOO_BIG, - IP_REQ_TIMED_OUT, - IP_BAD_REQ, - IP_BAD_ROUTE, - IP_TTL_EXPIRED_TRANSIT, - IP_TTL_EXPIRED_REASSEM, - IP_PARAM_PROBLEM, - IP_SOURCE_QUENCH, - IP_OPTION_TOO_BIG, - IP_BAD_DESTINATION, - IP_ADDR_DELETED, - IP_SPEC_MTU_CHANGE, - IP_MTU_CHANGE, - IP_UNLOAD, // = IP_STATUS_BASE + 22 - IP_GENERAL_FAILURE = IP_STATUS_BASE + 50, - MAX_IP_STATUS = IP_GENERAL_FAILURE, - IP_PENDING = IP_STATUS_BASE + 255 -} - -// IP header Flags values -const byte IP_FLAG_DF = 2; - -// IP Option types -enum : ubyte { - IP_OPT_EOL = 0, - IP_OPT_NOP = 0x01, - IP_OPT_RR = 0x07, - IP_OPT_SECURITY = 0x82, - IP_OPT_LSRR = 0x83, - IP_OPT_SSRR = 0x89, - IP_OPT_TS = 0x44, - IP_OPT_SID = 0x88, - IP_OPT_ROUTER_ALERT = 0x94 -} - -const ubyte MAX_OPT_SIZE = 40; - -alias uint IPAddr, IPMask, IP_STATUS; - -struct IP_OPTION_INFORMATION { - ubyte Ttl; - ubyte Tos; - ubyte Flags; - ubyte OptionsSize; - ubyte* OptionsData; -} -alias IP_OPTION_INFORMATION* PIP_OPTION_INFORMATION; - -struct ICMP_ECHO_REPLY { - IPAddr Address; - uint Status; - uint RoundTripTime; - ushort DataSize; - ushort Reserved; - void* Data; - IP_OPTION_INFORMATION Options; -} -alias ICMP_ECHO_REPLY* PICMP_ECHO_REPLY; - -struct IP_ADAPTER_INDEX_MAP { - ULONG Index; - WCHAR[MAX_ADAPTER_NAME] Name; -} -alias IP_ADAPTER_INDEX_MAP* PIP_ADAPTER_INDEX_MAP; - -struct IP_INTERFACE_INFO { - LONG NumAdapters; - IP_ADAPTER_INDEX_MAP[1] _Adapter; - - IP_ADAPTER_INDEX_MAP* Adapter() { return _Adapter.ptr; } -} -alias IP_INTERFACE_INFO* PIP_INTERFACE_INFO; - -struct IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { - ULONG NumAdapters; - IPAddr[1] _Address; - - IPAddr* Address() { return _Address.ptr; } -} -alias IP_UNIDIRECTIONAL_ADAPTER_ADDRESS* PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ipexport.d) + */ +module core.sys.windows.ipexport; + +private import core.sys.windows.windef; + +const size_t MAX_ADAPTER_NAME = 128; + +// IP STATUS flags +enum : IP_STATUS { + IP_SUCCESS = 0, + IP_STATUS_BASE = 11000, + IP_BUF_TOO_SMALL, + IP_DEST_NET_UNREACHABLE, + IP_DEST_HOST_UNREACHABLE, + IP_DEST_PROT_UNREACHABLE, + IP_DEST_PORT_UNREACHABLE, + IP_NO_RESOURCES, + IP_BAD_OPTION, + IP_HW_ERROR, + IP_PACKET_TOO_BIG, + IP_REQ_TIMED_OUT, + IP_BAD_REQ, + IP_BAD_ROUTE, + IP_TTL_EXPIRED_TRANSIT, + IP_TTL_EXPIRED_REASSEM, + IP_PARAM_PROBLEM, + IP_SOURCE_QUENCH, + IP_OPTION_TOO_BIG, + IP_BAD_DESTINATION, + IP_ADDR_DELETED, + IP_SPEC_MTU_CHANGE, + IP_MTU_CHANGE, + IP_UNLOAD, // = IP_STATUS_BASE + 22 + IP_GENERAL_FAILURE = IP_STATUS_BASE + 50, + MAX_IP_STATUS = IP_GENERAL_FAILURE, + IP_PENDING = IP_STATUS_BASE + 255 +} + +// IP header Flags values +const byte IP_FLAG_DF = 2; + +// IP Option types +enum : ubyte { + IP_OPT_EOL = 0, + IP_OPT_NOP = 0x01, + IP_OPT_RR = 0x07, + IP_OPT_SECURITY = 0x82, + IP_OPT_LSRR = 0x83, + IP_OPT_SSRR = 0x89, + IP_OPT_TS = 0x44, + IP_OPT_SID = 0x88, + IP_OPT_ROUTER_ALERT = 0x94 +} + +const ubyte MAX_OPT_SIZE = 40; + +alias uint IPAddr, IPMask, IP_STATUS; + +struct IP_OPTION_INFORMATION { + ubyte Ttl; + ubyte Tos; + ubyte Flags; + ubyte OptionsSize; + ubyte* OptionsData; +} +alias IP_OPTION_INFORMATION* PIP_OPTION_INFORMATION; + +struct ICMP_ECHO_REPLY { + IPAddr Address; + uint Status; + uint RoundTripTime; + ushort DataSize; + ushort Reserved; + void* Data; + IP_OPTION_INFORMATION Options; +} +alias ICMP_ECHO_REPLY* PICMP_ECHO_REPLY; + +struct IP_ADAPTER_INDEX_MAP { + ULONG Index; + WCHAR[MAX_ADAPTER_NAME] Name; +} +alias IP_ADAPTER_INDEX_MAP* PIP_ADAPTER_INDEX_MAP; + +struct IP_INTERFACE_INFO { + LONG NumAdapters; + IP_ADAPTER_INDEX_MAP[1] _Adapter; + + IP_ADAPTER_INDEX_MAP* Adapter() { return _Adapter.ptr; } +} +alias IP_INTERFACE_INFO* PIP_INTERFACE_INFO; + +struct IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { + ULONG NumAdapters; + IPAddr[1] _Address; + + IPAddr* Address() { return _Address.ptr; } +} +alias IP_UNIDIRECTIONAL_ADAPTER_ADDRESS* PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; diff --git a/src/core/sys/windows/iphlpapi.d b/src/core/sys/windows/iphlpapi.d index 787e47a0c2..4cca70f24c 100644 --- a/src/core/sys/windows/iphlpapi.d +++ b/src/core/sys/windows/iphlpapi.d @@ -1,61 +1,61 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_iphlpapi.d) - */ -module core.sys.windows.iphlpapi; - -import core.sys.windows.ipexport, core.sys.windows.iprtrmib, core.sys.windows.iptypes; -private import core.sys.windows.winbase, core.sys.windows.windef; - -extern (Windows) { - DWORD AddIPAddress(IPAddr, IPMask, DWORD, PULONG, PULONG); - DWORD CreateIpForwardEntry(PMIB_IPFORWARDROW); - DWORD CreateIpNetEntry(PMIB_IPNETROW); - DWORD CreateProxyArpEntry(DWORD, DWORD, DWORD); - DWORD DeleteIPAddress(ULONG); - DWORD DeleteIpForwardEntry(PMIB_IPFORWARDROW); - DWORD DeleteIpNetEntry(PMIB_IPNETROW); - DWORD DeleteProxyArpEntry(DWORD, DWORD, DWORD); - DWORD EnableRouter(HANDLE*, OVERLAPPED*); - DWORD FlushIpNetTable(DWORD); - DWORD GetAdapterIndex(LPWSTR, PULONG); - DWORD GetAdaptersInfo(PIP_ADAPTER_INFO, PULONG); - DWORD GetBestInterface(IPAddr, PDWORD); - DWORD GetBestRoute(DWORD, DWORD, PMIB_IPFORWARDROW); - DWORD GetFriendlyIfIndex(DWORD); - DWORD GetIcmpStatistics(PMIB_ICMP); - DWORD GetIfEntry(PMIB_IFROW); - DWORD GetIfTable(PMIB_IFTABLE, PULONG, BOOL); - DWORD GetInterfaceInfo(PIP_INTERFACE_INFO, PULONG); - DWORD GetIpAddrTable(PMIB_IPADDRTABLE, PULONG, BOOL); - DWORD GetIpForwardTable(PMIB_IPFORWARDTABLE, PULONG, BOOL); - DWORD GetIpNetTable(PMIB_IPNETTABLE, PULONG, BOOL); - DWORD GetIpStatistics(PMIB_IPSTATS); - DWORD GetNetworkParams(PFIXED_INFO, PULONG); - DWORD GetNumberOfInterfaces(PDWORD); - DWORD GetPerAdapterInfo(ULONG, PIP_PER_ADAPTER_INFO, PULONG); - BOOL GetRTTAndHopCount(IPAddr, PULONG, ULONG, PULONG); - DWORD GetTcpStatistics(PMIB_TCPSTATS); - DWORD GetTcpTable(PMIB_TCPTABLE, PDWORD, BOOL); - DWORD GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS, - PULONG); - DWORD GetUdpStatistics(PMIB_UDPSTATS); - DWORD GetUdpTable(PMIB_UDPTABLE, PDWORD, BOOL); - DWORD IpReleaseAddress(PIP_ADAPTER_INDEX_MAP); - DWORD IpRenewAddress(PIP_ADAPTER_INDEX_MAP); - DWORD NotifyAddrChange(PHANDLE, LPOVERLAPPED); - DWORD NotifyRouteChange(PHANDLE, LPOVERLAPPED); - DWORD SendARP(IPAddr, IPAddr, PULONG, PULONG); - DWORD SetIfEntry(PMIB_IFROW); - DWORD SetIpForwardEntry(PMIB_IPFORWARDROW); - DWORD SetIpNetEntry(PMIB_IPNETROW); - DWORD SetIpStatistics(PMIB_IPSTATS); - DWORD SetIpTTL(UINT); - DWORD SetTcpEntry(PMIB_TCPROW); - DWORD UnenableRouter(OVERLAPPED*, LPDWORD); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_iphlpapi.d) + */ +module core.sys.windows.iphlpapi; + +import core.sys.windows.ipexport, core.sys.windows.iprtrmib, core.sys.windows.iptypes; +private import core.sys.windows.winbase, core.sys.windows.windef; + +extern (Windows) { + DWORD AddIPAddress(IPAddr, IPMask, DWORD, PULONG, PULONG); + DWORD CreateIpForwardEntry(PMIB_IPFORWARDROW); + DWORD CreateIpNetEntry(PMIB_IPNETROW); + DWORD CreateProxyArpEntry(DWORD, DWORD, DWORD); + DWORD DeleteIPAddress(ULONG); + DWORD DeleteIpForwardEntry(PMIB_IPFORWARDROW); + DWORD DeleteIpNetEntry(PMIB_IPNETROW); + DWORD DeleteProxyArpEntry(DWORD, DWORD, DWORD); + DWORD EnableRouter(HANDLE*, OVERLAPPED*); + DWORD FlushIpNetTable(DWORD); + DWORD GetAdapterIndex(LPWSTR, PULONG); + DWORD GetAdaptersInfo(PIP_ADAPTER_INFO, PULONG); + DWORD GetBestInterface(IPAddr, PDWORD); + DWORD GetBestRoute(DWORD, DWORD, PMIB_IPFORWARDROW); + DWORD GetFriendlyIfIndex(DWORD); + DWORD GetIcmpStatistics(PMIB_ICMP); + DWORD GetIfEntry(PMIB_IFROW); + DWORD GetIfTable(PMIB_IFTABLE, PULONG, BOOL); + DWORD GetInterfaceInfo(PIP_INTERFACE_INFO, PULONG); + DWORD GetIpAddrTable(PMIB_IPADDRTABLE, PULONG, BOOL); + DWORD GetIpForwardTable(PMIB_IPFORWARDTABLE, PULONG, BOOL); + DWORD GetIpNetTable(PMIB_IPNETTABLE, PULONG, BOOL); + DWORD GetIpStatistics(PMIB_IPSTATS); + DWORD GetNetworkParams(PFIXED_INFO, PULONG); + DWORD GetNumberOfInterfaces(PDWORD); + DWORD GetPerAdapterInfo(ULONG, PIP_PER_ADAPTER_INFO, PULONG); + BOOL GetRTTAndHopCount(IPAddr, PULONG, ULONG, PULONG); + DWORD GetTcpStatistics(PMIB_TCPSTATS); + DWORD GetTcpTable(PMIB_TCPTABLE, PDWORD, BOOL); + DWORD GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS, + PULONG); + DWORD GetUdpStatistics(PMIB_UDPSTATS); + DWORD GetUdpTable(PMIB_UDPTABLE, PDWORD, BOOL); + DWORD IpReleaseAddress(PIP_ADAPTER_INDEX_MAP); + DWORD IpRenewAddress(PIP_ADAPTER_INDEX_MAP); + DWORD NotifyAddrChange(PHANDLE, LPOVERLAPPED); + DWORD NotifyRouteChange(PHANDLE, LPOVERLAPPED); + DWORD SendARP(IPAddr, IPAddr, PULONG, PULONG); + DWORD SetIfEntry(PMIB_IFROW); + DWORD SetIpForwardEntry(PMIB_IPFORWARDROW); + DWORD SetIpNetEntry(PMIB_IPNETROW); + DWORD SetIpStatistics(PMIB_IPSTATS); + DWORD SetIpTTL(UINT); + DWORD SetTcpEntry(PMIB_TCPROW); + DWORD UnenableRouter(OVERLAPPED*, LPDWORD); +} diff --git a/src/core/sys/windows/ipifcons.d b/src/core/sys/windows/ipifcons.d index 96a537d255..5e1f96a6c3 100644 --- a/src/core/sys/windows/ipifcons.d +++ b/src/core/sys/windows/ipifcons.d @@ -1,37 +1,37 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ipifcons.d) - */ -module core.sys.windows.ipifcons; - -// FIXME: check types of constants - -enum { - MIB_IF_ADMIN_STATUS_UP = 1, - MIB_IF_ADMIN_STATUS_DOWN, - MIB_IF_ADMIN_STATUS_TESTING, -} - -enum { - MIB_IF_OPER_STATUS_NON_OPERATIONAL, - MIB_IF_OPER_STATUS_UNREACHABLE, - MIB_IF_OPER_STATUS_DISCONNECTED, - MIB_IF_OPER_STATUS_CONNECTING, - MIB_IF_OPER_STATUS_CONNECTED, - MIB_IF_OPER_STATUS_OPERATIONAL // = 5 -} - -enum { - MIB_IF_TYPE_OTHER = 1, - MIB_IF_TYPE_ETHERNET = 6, - MIB_IF_TYPE_TOKENRING = 9, - MIB_IF_TYPE_FDDI = 15, - MIB_IF_TYPE_PPP = 23, - MIB_IF_TYPE_LOOPBACK = 24, - MIB_IF_TYPE_SLIP = 28 -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ipifcons.d) + */ +module core.sys.windows.ipifcons; + +// FIXME: check types of constants + +enum { + MIB_IF_ADMIN_STATUS_UP = 1, + MIB_IF_ADMIN_STATUS_DOWN, + MIB_IF_ADMIN_STATUS_TESTING, +} + +enum { + MIB_IF_OPER_STATUS_NON_OPERATIONAL, + MIB_IF_OPER_STATUS_UNREACHABLE, + MIB_IF_OPER_STATUS_DISCONNECTED, + MIB_IF_OPER_STATUS_CONNECTING, + MIB_IF_OPER_STATUS_CONNECTED, + MIB_IF_OPER_STATUS_OPERATIONAL // = 5 +} + +enum { + MIB_IF_TYPE_OTHER = 1, + MIB_IF_TYPE_ETHERNET = 6, + MIB_IF_TYPE_TOKENRING = 9, + MIB_IF_TYPE_FDDI = 15, + MIB_IF_TYPE_PPP = 23, + MIB_IF_TYPE_LOOPBACK = 24, + MIB_IF_TYPE_SLIP = 28 +} diff --git a/src/core/sys/windows/iprtrmib.d b/src/core/sys/windows/iprtrmib.d index 68db75c3f2..9ec8777b47 100644 --- a/src/core/sys/windows/iprtrmib.d +++ b/src/core/sys/windows/iprtrmib.d @@ -1,266 +1,266 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_iprtrmib.d) - */ -module core.sys.windows.iprtrmib; - -import core.sys.windows.ipifcons; -private import core.sys.windows.windef; - -// FIXME: check types of constants - -const size_t - MAXLEN_PHYSADDR = 8, - MAXLEN_IFDESCR = 256, - MAX_INTERFACE_NAME_LEN = 256; - -enum { - MIB_IPNET_TYPE_OTHER = 1, - MIB_IPNET_TYPE_INVALID, - MIB_IPNET_TYPE_DYNAMIC, - MIB_IPNET_TYPE_STATIC -} - -enum { - MIB_TCP_RTO_OTHER = 1, - MIB_TCP_RTO_CONSTANT, - MIB_TCP_RTO_RSRE, - MIB_TCP_RTO_VANJ -} - -enum { - MIB_TCP_STATE_CLOSED = 1, - MIB_TCP_STATE_LISTEN, - MIB_TCP_STATE_SYN_SENT, - MIB_TCP_STATE_SYN_RCVD, - MIB_TCP_STATE_ESTAB, - MIB_TCP_STATE_FIN_WAIT1, - MIB_TCP_STATE_FIN_WAIT2, - MIB_TCP_STATE_CLOSE_WAIT, - MIB_TCP_STATE_CLOSING, - MIB_TCP_STATE_LAST_ACK, - MIB_TCP_STATE_TIME_WAIT, - MIB_TCP_STATE_DELETE_TCB // = 12 -} - -const DWORD - MIB_USE_CURRENT_TTL = -1, - MIB_USE_CURRENT_FORWARDING = -1, - MIB_TCP_MAXCONN_DYNAMIC = -1; - -struct MIB_IPADDRROW { - DWORD dwAddr; - DWORD dwIndex; - DWORD dwMask; - DWORD dwBCastAddr; - DWORD dwReasmSize; - ushort unused1; - ushort unused2; -} -alias MIB_IPADDRROW* PMIB_IPADDRROW; - -struct MIB_IPADDRTABLE { - DWORD dwNumEntries; - MIB_IPADDRROW[1] _table; - - MIB_IPADDRROW* table() { return _table.ptr; } -} -alias MIB_IPADDRTABLE* PMIB_IPADDRTABLE; - -struct MIB_IPFORWARDROW { - DWORD dwForwardDest; - DWORD dwForwardMask; - DWORD dwForwardPolicy; - DWORD dwForwardNextHop; - DWORD dwForwardIfIndex; - DWORD dwForwardType; - DWORD dwForwardProto; - DWORD dwForwardAge; - DWORD dwForwardNextHopAS; - DWORD dwForwardMetric1; - DWORD dwForwardMetric2; - DWORD dwForwardMetric3; - DWORD dwForwardMetric4; - DWORD dwForwardMetric5; -} -alias MIB_IPFORWARDROW* PMIB_IPFORWARDROW; - -struct MIB_IPFORWARDTABLE { - DWORD dwNumEntries; - MIB_IPFORWARDROW[1] _table; - - MIB_IPFORWARDROW* table() { return _table.ptr; } -} -alias MIB_IPFORWARDTABLE* PMIB_IPFORWARDTABLE; - -struct MIB_IPNETROW { - DWORD dwIndex; - DWORD dwPhysAddrLen; - BYTE[MAXLEN_PHYSADDR] bPhysAddr; - DWORD dwAddr; - DWORD dwType; -} -alias MIB_IPNETROW* PMIB_IPNETROW; - -struct MIB_IPNETTABLE { - DWORD dwNumEntries; - MIB_IPNETROW[1] _table; - - MIB_IPNETROW* table() { return _table.ptr; } -} -alias MIB_IPNETTABLE* PMIB_IPNETTABLE; - -struct MIBICMPSTATS { - DWORD dwMsgs; - DWORD dwErrors; - DWORD dwDestUnreachs; - DWORD dwTimeExcds; - DWORD dwParmProbs; - DWORD dwSrcQuenchs; - DWORD dwRedirects; - DWORD dwEchos; - DWORD dwEchoReps; - DWORD dwTimestamps; - DWORD dwTimestampReps; - DWORD dwAddrMasks; - DWORD dwAddrMaskReps; -} -alias MIBICMPSTATS* PMIBICMPSTATS; - -struct MIBICMPINFO { - MIBICMPSTATS icmpInStats; - MIBICMPSTATS icmpOutStats; -} -alias MIBICMPINFO* PMIBICMPINFO; - -struct MIB_ICMP { - MIBICMPINFO stats; -} -alias MIB_ICMP* PMIB_ICMP; - -struct MIB_IFROW { - WCHAR[MAX_INTERFACE_NAME_LEN] wszName; - DWORD dwIndex; - DWORD dwType; - DWORD dwMtu; - DWORD dwSpeed; - DWORD dwPhysAddrLen; - BYTE[MAXLEN_PHYSADDR] bPhysAddr; - DWORD dwAdminStatus; - DWORD dwOperStatus; - DWORD dwLastChange; - DWORD dwInOctets; - DWORD dwInUcastPkts; - DWORD dwInNUcastPkts; - DWORD dwInDiscards; - DWORD dwInErrors; - DWORD dwInUnknownProtos; - DWORD dwOutOctets; - DWORD dwOutUcastPkts; - DWORD dwOutNUcastPkts; - DWORD dwOutDiscards; - DWORD dwOutErrors; - DWORD dwOutQLen; - DWORD dwDescrLen; - BYTE[MAXLEN_IFDESCR] bDescr; -} -alias MIB_IFROW* PMIB_IFROW; - -struct MIB_IFTABLE { - DWORD dwNumEntries; - MIB_IFROW[1] _table; - - MIB_IFROW* table() { return _table.ptr; } -} -alias MIB_IFTABLE* PMIB_IFTABLE; - -struct MIB_IPSTATS { - DWORD dwForwarding; - DWORD dwDefaultTTL; - DWORD dwInReceives; - DWORD dwInHdrErrors; - DWORD dwInAddrErrors; - DWORD dwForwDatagrams; - DWORD dwInUnknownProtos; - DWORD dwInDiscards; - DWORD dwInDelivers; - DWORD dwOutRequests; - DWORD dwRoutingDiscards; - DWORD dwOutDiscards; - DWORD dwOutNoRoutes; - DWORD dwReasmTimeout; - DWORD dwReasmReqds; - DWORD dwReasmOks; - DWORD dwReasmFails; - DWORD dwFragOks; - DWORD dwFragFails; - DWORD dwFragCreates; - DWORD dwNumIf; - DWORD dwNumAddr; - DWORD dwNumRoutes; -} -alias MIB_IPSTATS* PMIB_IPSTATS; - -struct MIB_TCPSTATS { - DWORD dwRtoAlgorithm; - DWORD dwRtoMin; - DWORD dwRtoMax; - DWORD dwMaxConn; - DWORD dwActiveOpens; - DWORD dwPassiveOpens; - DWORD dwAttemptFails; - DWORD dwEstabResets; - DWORD dwCurrEstab; - DWORD dwInSegs; - DWORD dwOutSegs; - DWORD dwRetransSegs; - DWORD dwInErrs; - DWORD dwOutRsts; - DWORD dwNumConns; -} -alias MIB_TCPSTATS* PMIB_TCPSTATS; - -struct MIB_TCPROW { - DWORD dwState; - DWORD dwLocalAddr; - DWORD dwLocalPort; - DWORD dwRemoteAddr; - DWORD dwRemotePort; -} -alias MIB_TCPROW* PMIB_TCPROW; - -struct MIB_TCPTABLE { - DWORD dwNumEntries; - MIB_TCPROW[1] _table; - - MIB_TCPROW* table() { return _table.ptr; } -} -alias MIB_TCPTABLE* PMIB_TCPTABLE; - -struct MIB_UDPSTATS { - DWORD dwInDatagrams; - DWORD dwNoPorts; - DWORD dwInErrors; - DWORD dwOutDatagrams; - DWORD dwNumAddrs; -} -alias MIB_UDPSTATS* PMIB_UDPSTATS; - -struct MIB_UDPROW { - DWORD dwLocalAddr; - DWORD dwLocalPort; -} -alias MIB_UDPROW* PMIB_UDPROW; - -struct MIB_UDPTABLE { - DWORD dwNumEntries; - MIB_UDPROW[1] _table; - - MIB_UDPROW* table() { return _table.ptr; } -} -alias MIB_UDPTABLE* PMIB_UDPTABLE; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_iprtrmib.d) + */ +module core.sys.windows.iprtrmib; + +import core.sys.windows.ipifcons; +private import core.sys.windows.windef; + +// FIXME: check types of constants + +const size_t + MAXLEN_PHYSADDR = 8, + MAXLEN_IFDESCR = 256, + MAX_INTERFACE_NAME_LEN = 256; + +enum { + MIB_IPNET_TYPE_OTHER = 1, + MIB_IPNET_TYPE_INVALID, + MIB_IPNET_TYPE_DYNAMIC, + MIB_IPNET_TYPE_STATIC +} + +enum { + MIB_TCP_RTO_OTHER = 1, + MIB_TCP_RTO_CONSTANT, + MIB_TCP_RTO_RSRE, + MIB_TCP_RTO_VANJ +} + +enum { + MIB_TCP_STATE_CLOSED = 1, + MIB_TCP_STATE_LISTEN, + MIB_TCP_STATE_SYN_SENT, + MIB_TCP_STATE_SYN_RCVD, + MIB_TCP_STATE_ESTAB, + MIB_TCP_STATE_FIN_WAIT1, + MIB_TCP_STATE_FIN_WAIT2, + MIB_TCP_STATE_CLOSE_WAIT, + MIB_TCP_STATE_CLOSING, + MIB_TCP_STATE_LAST_ACK, + MIB_TCP_STATE_TIME_WAIT, + MIB_TCP_STATE_DELETE_TCB // = 12 +} + +const DWORD + MIB_USE_CURRENT_TTL = -1, + MIB_USE_CURRENT_FORWARDING = -1, + MIB_TCP_MAXCONN_DYNAMIC = -1; + +struct MIB_IPADDRROW { + DWORD dwAddr; + DWORD dwIndex; + DWORD dwMask; + DWORD dwBCastAddr; + DWORD dwReasmSize; + ushort unused1; + ushort unused2; +} +alias MIB_IPADDRROW* PMIB_IPADDRROW; + +struct MIB_IPADDRTABLE { + DWORD dwNumEntries; + MIB_IPADDRROW[1] _table; + + MIB_IPADDRROW* table() { return _table.ptr; } +} +alias MIB_IPADDRTABLE* PMIB_IPADDRTABLE; + +struct MIB_IPFORWARDROW { + DWORD dwForwardDest; + DWORD dwForwardMask; + DWORD dwForwardPolicy; + DWORD dwForwardNextHop; + DWORD dwForwardIfIndex; + DWORD dwForwardType; + DWORD dwForwardProto; + DWORD dwForwardAge; + DWORD dwForwardNextHopAS; + DWORD dwForwardMetric1; + DWORD dwForwardMetric2; + DWORD dwForwardMetric3; + DWORD dwForwardMetric4; + DWORD dwForwardMetric5; +} +alias MIB_IPFORWARDROW* PMIB_IPFORWARDROW; + +struct MIB_IPFORWARDTABLE { + DWORD dwNumEntries; + MIB_IPFORWARDROW[1] _table; + + MIB_IPFORWARDROW* table() { return _table.ptr; } +} +alias MIB_IPFORWARDTABLE* PMIB_IPFORWARDTABLE; + +struct MIB_IPNETROW { + DWORD dwIndex; + DWORD dwPhysAddrLen; + BYTE[MAXLEN_PHYSADDR] bPhysAddr; + DWORD dwAddr; + DWORD dwType; +} +alias MIB_IPNETROW* PMIB_IPNETROW; + +struct MIB_IPNETTABLE { + DWORD dwNumEntries; + MIB_IPNETROW[1] _table; + + MIB_IPNETROW* table() { return _table.ptr; } +} +alias MIB_IPNETTABLE* PMIB_IPNETTABLE; + +struct MIBICMPSTATS { + DWORD dwMsgs; + DWORD dwErrors; + DWORD dwDestUnreachs; + DWORD dwTimeExcds; + DWORD dwParmProbs; + DWORD dwSrcQuenchs; + DWORD dwRedirects; + DWORD dwEchos; + DWORD dwEchoReps; + DWORD dwTimestamps; + DWORD dwTimestampReps; + DWORD dwAddrMasks; + DWORD dwAddrMaskReps; +} +alias MIBICMPSTATS* PMIBICMPSTATS; + +struct MIBICMPINFO { + MIBICMPSTATS icmpInStats; + MIBICMPSTATS icmpOutStats; +} +alias MIBICMPINFO* PMIBICMPINFO; + +struct MIB_ICMP { + MIBICMPINFO stats; +} +alias MIB_ICMP* PMIB_ICMP; + +struct MIB_IFROW { + WCHAR[MAX_INTERFACE_NAME_LEN] wszName; + DWORD dwIndex; + DWORD dwType; + DWORD dwMtu; + DWORD dwSpeed; + DWORD dwPhysAddrLen; + BYTE[MAXLEN_PHYSADDR] bPhysAddr; + DWORD dwAdminStatus; + DWORD dwOperStatus; + DWORD dwLastChange; + DWORD dwInOctets; + DWORD dwInUcastPkts; + DWORD dwInNUcastPkts; + DWORD dwInDiscards; + DWORD dwInErrors; + DWORD dwInUnknownProtos; + DWORD dwOutOctets; + DWORD dwOutUcastPkts; + DWORD dwOutNUcastPkts; + DWORD dwOutDiscards; + DWORD dwOutErrors; + DWORD dwOutQLen; + DWORD dwDescrLen; + BYTE[MAXLEN_IFDESCR] bDescr; +} +alias MIB_IFROW* PMIB_IFROW; + +struct MIB_IFTABLE { + DWORD dwNumEntries; + MIB_IFROW[1] _table; + + MIB_IFROW* table() { return _table.ptr; } +} +alias MIB_IFTABLE* PMIB_IFTABLE; + +struct MIB_IPSTATS { + DWORD dwForwarding; + DWORD dwDefaultTTL; + DWORD dwInReceives; + DWORD dwInHdrErrors; + DWORD dwInAddrErrors; + DWORD dwForwDatagrams; + DWORD dwInUnknownProtos; + DWORD dwInDiscards; + DWORD dwInDelivers; + DWORD dwOutRequests; + DWORD dwRoutingDiscards; + DWORD dwOutDiscards; + DWORD dwOutNoRoutes; + DWORD dwReasmTimeout; + DWORD dwReasmReqds; + DWORD dwReasmOks; + DWORD dwReasmFails; + DWORD dwFragOks; + DWORD dwFragFails; + DWORD dwFragCreates; + DWORD dwNumIf; + DWORD dwNumAddr; + DWORD dwNumRoutes; +} +alias MIB_IPSTATS* PMIB_IPSTATS; + +struct MIB_TCPSTATS { + DWORD dwRtoAlgorithm; + DWORD dwRtoMin; + DWORD dwRtoMax; + DWORD dwMaxConn; + DWORD dwActiveOpens; + DWORD dwPassiveOpens; + DWORD dwAttemptFails; + DWORD dwEstabResets; + DWORD dwCurrEstab; + DWORD dwInSegs; + DWORD dwOutSegs; + DWORD dwRetransSegs; + DWORD dwInErrs; + DWORD dwOutRsts; + DWORD dwNumConns; +} +alias MIB_TCPSTATS* PMIB_TCPSTATS; + +struct MIB_TCPROW { + DWORD dwState; + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwRemoteAddr; + DWORD dwRemotePort; +} +alias MIB_TCPROW* PMIB_TCPROW; + +struct MIB_TCPTABLE { + DWORD dwNumEntries; + MIB_TCPROW[1] _table; + + MIB_TCPROW* table() { return _table.ptr; } +} +alias MIB_TCPTABLE* PMIB_TCPTABLE; + +struct MIB_UDPSTATS { + DWORD dwInDatagrams; + DWORD dwNoPorts; + DWORD dwInErrors; + DWORD dwOutDatagrams; + DWORD dwNumAddrs; +} +alias MIB_UDPSTATS* PMIB_UDPSTATS; + +struct MIB_UDPROW { + DWORD dwLocalAddr; + DWORD dwLocalPort; +} +alias MIB_UDPROW* PMIB_UDPROW; + +struct MIB_UDPTABLE { + DWORD dwNumEntries; + MIB_UDPROW[1] _table; + + MIB_UDPROW* table() { return _table.ptr; } +} +alias MIB_UDPTABLE* PMIB_UDPTABLE; diff --git a/src/core/sys/windows/iptypes.d b/src/core/sys/windows/iptypes.d index 9d5f047ca0..2fbb4bba80 100644 --- a/src/core/sys/windows/iptypes.d +++ b/src/core/sys/windows/iptypes.d @@ -1,102 +1,102 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_iptypes.d) - */ -module core.sys.windows.iptypes; - -import core.sys.windows.windef; -version(Tango){ - private import tango.stdc.time; -}else{ - version (D_Version2) - import core.stdc.time; - else - import std.c.time; -} -//#include - -const size_t - DEFAULT_MINIMUM_ENTITIES = 32, - MAX_ADAPTER_ADDRESS_LENGTH = 8, - MAX_ADAPTER_DESCRIPTION_LENGTH = 128, - MAX_ADAPTER_NAME_LENGTH = 256, - MAX_DOMAIN_NAME_LEN = 128, - MAX_HOSTNAME_LEN = 128, - MAX_SCOPE_ID_LEN = 256; - -const UINT - BROADCAST_NODETYPE = 1, - PEER_TO_PEER_NODETYPE = 2, - MIXED_NODETYPE = 4, - HYBRID_NODETYPE = 8; - -enum : UINT { - IF_OTHER_ADAPTERTYPE, - IF_ETHERNET_ADAPTERTYPE, - IF_TOKEN_RING_ADAPTERTYPE, - IF_FDDI_ADAPTERTYPE, - IF_PPP_ADAPTERTYPE, - IF_LOOPBACK_ADAPTERTYPE // = 5 -} - -struct IP_ADDRESS_STRING { - char[16] String; -} -alias IP_ADDRESS_STRING IP_MASK_STRING; -alias IP_ADDRESS_STRING* PIP_ADDRESS_STRING, PIP_MASK_STRING; - -struct IP_ADDR_STRING { - IP_ADDR_STRING* Next; - IP_ADDRESS_STRING IpAddress; - IP_MASK_STRING IpMask; - DWORD Context; -} -alias IP_ADDR_STRING* PIP_ADDR_STRING; - -struct IP_ADAPTER_INFO { - IP_ADAPTER_INFO* Next; - DWORD ComboIndex; - char[MAX_ADAPTER_NAME_LENGTH+4] AdapterName; - char[MAX_ADAPTER_DESCRIPTION_LENGTH+4] Description; - UINT AddressLength; - BYTE[MAX_ADAPTER_ADDRESS_LENGTH] Address; - DWORD Index; - UINT Type; - UINT DhcpEnabled; - PIP_ADDR_STRING CurrentIpAddress; - IP_ADDR_STRING IpAddressList; - IP_ADDR_STRING GatewayList; - IP_ADDR_STRING DhcpServer; - BOOL HaveWins; - IP_ADDR_STRING PrimaryWinsServer; - IP_ADDR_STRING SecondaryWinsServer; - time_t LeaseObtained; - time_t LeaseExpires; -} -alias IP_ADAPTER_INFO* PIP_ADAPTER_INFO; - -struct IP_PER_ADAPTER_INFO { - UINT AutoconfigEnabled; - UINT AutoconfigActive; - PIP_ADDR_STRING CurrentDnsServer; - IP_ADDR_STRING DnsServerList; -} -alias IP_PER_ADAPTER_INFO* PIP_PER_ADAPTER_INFO; - -struct FIXED_INFO { - char[MAX_HOSTNAME_LEN+4] HostName; - char[MAX_DOMAIN_NAME_LEN+4] DomainName; - PIP_ADDR_STRING CurrentDnsServer; - IP_ADDR_STRING DnsServerList; - UINT NodeType; - char[MAX_SCOPE_ID_LEN+4] ScopeId; - UINT EnableRouting; - UINT EnableProxy; - UINT EnableDns; -} -alias FIXED_INFO* PFIXED_INFO; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_iptypes.d) + */ +module core.sys.windows.iptypes; + +import core.sys.windows.windef; +version(Tango){ + private import tango.stdc.time; +}else{ + version (D_Version2) + import core.stdc.time; + else + import std.c.time; +} +//#include + +const size_t + DEFAULT_MINIMUM_ENTITIES = 32, + MAX_ADAPTER_ADDRESS_LENGTH = 8, + MAX_ADAPTER_DESCRIPTION_LENGTH = 128, + MAX_ADAPTER_NAME_LENGTH = 256, + MAX_DOMAIN_NAME_LEN = 128, + MAX_HOSTNAME_LEN = 128, + MAX_SCOPE_ID_LEN = 256; + +const UINT + BROADCAST_NODETYPE = 1, + PEER_TO_PEER_NODETYPE = 2, + MIXED_NODETYPE = 4, + HYBRID_NODETYPE = 8; + +enum : UINT { + IF_OTHER_ADAPTERTYPE, + IF_ETHERNET_ADAPTERTYPE, + IF_TOKEN_RING_ADAPTERTYPE, + IF_FDDI_ADAPTERTYPE, + IF_PPP_ADAPTERTYPE, + IF_LOOPBACK_ADAPTERTYPE // = 5 +} + +struct IP_ADDRESS_STRING { + char[16] String; +} +alias IP_ADDRESS_STRING IP_MASK_STRING; +alias IP_ADDRESS_STRING* PIP_ADDRESS_STRING, PIP_MASK_STRING; + +struct IP_ADDR_STRING { + IP_ADDR_STRING* Next; + IP_ADDRESS_STRING IpAddress; + IP_MASK_STRING IpMask; + DWORD Context; +} +alias IP_ADDR_STRING* PIP_ADDR_STRING; + +struct IP_ADAPTER_INFO { + IP_ADAPTER_INFO* Next; + DWORD ComboIndex; + char[MAX_ADAPTER_NAME_LENGTH+4] AdapterName; + char[MAX_ADAPTER_DESCRIPTION_LENGTH+4] Description; + UINT AddressLength; + BYTE[MAX_ADAPTER_ADDRESS_LENGTH] Address; + DWORD Index; + UINT Type; + UINT DhcpEnabled; + PIP_ADDR_STRING CurrentIpAddress; + IP_ADDR_STRING IpAddressList; + IP_ADDR_STRING GatewayList; + IP_ADDR_STRING DhcpServer; + BOOL HaveWins; + IP_ADDR_STRING PrimaryWinsServer; + IP_ADDR_STRING SecondaryWinsServer; + time_t LeaseObtained; + time_t LeaseExpires; +} +alias IP_ADAPTER_INFO* PIP_ADAPTER_INFO; + +struct IP_PER_ADAPTER_INFO { + UINT AutoconfigEnabled; + UINT AutoconfigActive; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; +} +alias IP_PER_ADAPTER_INFO* PIP_PER_ADAPTER_INFO; + +struct FIXED_INFO { + char[MAX_HOSTNAME_LEN+4] HostName; + char[MAX_DOMAIN_NAME_LEN+4] DomainName; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; + UINT NodeType; + char[MAX_SCOPE_ID_LEN+4] ScopeId; + UINT EnableRouting; + UINT EnableProxy; + UINT EnableDns; +} +alias FIXED_INFO* PFIXED_INFO; diff --git a/src/core/sys/windows/isguids.d b/src/core/sys/windows/isguids.d index ada3a6a692..8b543e3157 100644 --- a/src/core/sys/windows/isguids.d +++ b/src/core/sys/windows/isguids.d @@ -1,16 +1,16 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_isguids.d) - */ -module core.sys.windows.isguids; - -private import core.sys.windows.basetyps; - -extern (C) extern const GUID - CLSID_InternetShortcut, - IID_IUniformResourceLocator; +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_isguids.d) + */ +module core.sys.windows.isguids; + +private import core.sys.windows.basetyps; + +extern (C) extern const GUID + CLSID_InternetShortcut, + IID_IUniformResourceLocator; diff --git a/src/core/sys/windows/lm.d b/src/core/sys/windows/lm.d index fa44fff95f..7e10486b39 100644 --- a/src/core/sys/windows/lm.d +++ b/src/core/sys/windows/lm.d @@ -1,46 +1,46 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lm.d) - */ -module core.sys.windows.lm; -/* removed - now supporting only Win2k up -version (WindowsVista) { - version = WIN32_WINNT_ONLY; -} else version (Windows2003) { - version = WIN32_WINNT_ONLY; -} else version (WindowsXP) { - version = WIN32_WINNT_ONLY; -} else version (WindowsNTonly) { - version = WIN32_WINNT_ONLY; -} -*/ -public import core.sys.windows.lmcons; -public import core.sys.windows.lmaccess; -public import core.sys.windows.lmalert; -public import core.sys.windows.lmat; -public import core.sys.windows.lmerr; -public import core.sys.windows.lmshare; -public import core.sys.windows.lmapibuf; -public import core.sys.windows.lmremutl; -public import core.sys.windows.lmrepl; -public import core.sys.windows.lmuse; -public import core.sys.windows.lmstats; -public import core.sys.windows.lmwksta; -public import core.sys.windows.lmserver; - -version (Windows2000) { -} else { - public import core.sys.windows.lmmsg; -} - -// FIXME: Everything in these next files seems to be deprecated! -import core.sys.windows.lmaudit; -import core.sys.windows.lmchdev; // can't find many docs for functions from this file. -import core.sys.windows.lmconfig; -import core.sys.windows.lmerrlog; -import core.sys.windows.lmsvc; -import core.sys.windows.lmsname; // in MinGW, this was publicly included by lm.lmsvc +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lm.d) + */ +module core.sys.windows.lm; +/* removed - now supporting only Win2k up +version (WindowsVista) { + version = WIN32_WINNT_ONLY; +} else version (Windows2003) { + version = WIN32_WINNT_ONLY; +} else version (WindowsXP) { + version = WIN32_WINNT_ONLY; +} else version (WindowsNTonly) { + version = WIN32_WINNT_ONLY; +} +*/ +public import core.sys.windows.lmcons; +public import core.sys.windows.lmaccess; +public import core.sys.windows.lmalert; +public import core.sys.windows.lmat; +public import core.sys.windows.lmerr; +public import core.sys.windows.lmshare; +public import core.sys.windows.lmapibuf; +public import core.sys.windows.lmremutl; +public import core.sys.windows.lmrepl; +public import core.sys.windows.lmuse; +public import core.sys.windows.lmstats; +public import core.sys.windows.lmwksta; +public import core.sys.windows.lmserver; + +version (Windows2000) { +} else { + public import core.sys.windows.lmmsg; +} + +// FIXME: Everything in these next files seems to be deprecated! +import core.sys.windows.lmaudit; +import core.sys.windows.lmchdev; // can't find many docs for functions from this file. +import core.sys.windows.lmconfig; +import core.sys.windows.lmerrlog; +import core.sys.windows.lmsvc; +import core.sys.windows.lmsname; // in MinGW, this was publicly included by lm.lmsvc diff --git a/src/core/sys/windows/lmaccess.d b/src/core/sys/windows/lmaccess.d index 841348225f..e3b57b4d8a 100644 --- a/src/core/sys/windows/lmaccess.d +++ b/src/core/sys/windows/lmaccess.d @@ -1,758 +1,758 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmaccess.d) - */ -module core.sys.windows.lmaccess; -pragma(lib, "netapi32"); - -/** - Changes relative to MinGW: - USER_POSIX_ID_PARMNUM and GROUP_POSIX_ID_PARMNUM aren't in MinGW or in - the Platform SDK docs, so they have been dropped from this file. -*/ - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -const wchar[] - GROUP_SPECIALGRP_USERS = "USERS", - GROUP_SPECIALGRP_ADMINS = "ADMINS", - GROUP_SPECIALGRP_GUESTS = "GUESTS", - GROUP_SPECIALGRP_LOCAL = "LOCAL"; - -const ACCESS_LETTERS = "RWCXDAP "; - -const NETLOGON_CONTROL_QUERY=1; -const NETLOGON_CONTROL_REPLICATE=2; -const NETLOGON_CONTROL_SYNCHRONIZE=3; -const NETLOGON_CONTROL_PDC_REPLICATE=4; -const NETLOGON_CONTROL_REDISCOVER=5; -const NETLOGON_CONTROL_TC_QUERY=6; -const NETLOGON_CONTROL_BACKUP_CHANGE_LOG=65532; -const NETLOGON_CONTROL_TRUNCATE_LOG=65533; -const NETLOGON_CONTROL_SET_DBFLAG=65534; -const NETLOGON_CONTROL_BREAKPOINT=65535; - -const UF_SCRIPT=1; -const UF_ACCOUNTDISABLE=2; -const UF_HOMEDIR_REQUIRED=8; -const UF_LOCKOUT=16; -const UF_PASSWD_NOTREQD=32; -const UF_PASSWD_CANT_CHANGE=64; -const UF_TEMP_DUPLICATE_ACCOUNT=256; -const UF_NORMAL_ACCOUNT=512; -const UF_INTERDOMAIN_TRUST_ACCOUNT=2048; -const UF_WORKSTATION_TRUST_ACCOUNT=4096; -const UF_SERVER_TRUST_ACCOUNT=8192; -const UF_MNS_LOGON_ACCOUNT=131072; -const UF_MACHINE_ACCOUNT_MASK=UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; -const UF_ACCOUNT_TYPE_MASK=UF_TEMP_DUPLICATE_ACCOUNT|UF_NORMAL_ACCOUNT|UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; -const UF_DONT_EXPIRE_PASSWD=65536; -const UF_SETTABLE_BITS=UF_SCRIPT|UF_ACCOUNTDISABLE|UF_LOCKOUT|UF_HOMEDIR_REQUIRED|UF_PASSWD_NOTREQD|UF_PASSWD_CANT_CHANGE|UF_ACCOUNT_TYPE_MASK|UF_DONT_EXPIRE_PASSWD; - -const FILTER_TEMP_DUPLICATE_ACCOUNT=1; -const FILTER_NORMAL_ACCOUNT=2; -const FILTER_INTERDOMAIN_TRUST_ACCOUNT=8; -const FILTER_WORKSTATION_TRUST_ACCOUNT=16; -const FILTER_SERVER_TRUST_ACCOUNT=32; - -const LG_INCLUDE_INDIRECT=1; - -const AF_OP_PRINT=1; -const AF_OP_COMM=2; -const AF_OP_SERVER=4; -const AF_OP_ACCOUNTS=8; -const AF_SETTABLE_BITS=(AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS); - -const UAS_ROLE_STANDALONE=0; -const UAS_ROLE_MEMBER=1; -const UAS_ROLE_BACKUP=2; -const UAS_ROLE_PRIMARY=3; - -const USER_NAME_PARMNUM=1; -const USER_PASSWORD_PARMNUM=3; -const USER_PASSWORD_AGE_PARMNUM=4; -const USER_PRIV_PARMNUM=5; -const USER_HOME_DIR_PARMNUM=6; -const USER_COMMENT_PARMNUM=7; -const USER_FLAGS_PARMNUM=8; -const USER_SCRIPT_PATH_PARMNUM=9; -const USER_AUTH_FLAGS_PARMNUM=10; -const USER_FULL_NAME_PARMNUM=11; -const USER_USR_COMMENT_PARMNUM=12; -const USER_PARMS_PARMNUM=13; -const USER_WORKSTATIONS_PARMNUM=14; -const USER_LAST_LOGON_PARMNUM=15; -const USER_LAST_LOGOFF_PARMNUM=16; -const USER_ACCT_EXPIRES_PARMNUM=17; -const USER_MAX_STORAGE_PARMNUM=18; -const USER_UNITS_PER_WEEK_PARMNUM=19; -const USER_LOGON_HOURS_PARMNUM=20; -const USER_PAD_PW_COUNT_PARMNUM=21; -const USER_NUM_LOGONS_PARMNUM=22; -const USER_LOGON_SERVER_PARMNUM=23; -const USER_COUNTRY_CODE_PARMNUM=24; -const USER_CODE_PAGE_PARMNUM=25; -const USER_PRIMARY_GROUP_PARMNUM=51; -const USER_PROFILE=52; -const USER_PROFILE_PARMNUM=52; -const USER_HOME_DIR_DRIVE_PARMNUM=53; - -const USER_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM; -const USER_PASSWORD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM; -const USER_PASSWORD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM; -const USER_PRIV_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM; -const USER_HOME_DIR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM; -const USER_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM; -const USER_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM; -const USER_SCRIPT_PATH_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM; -const USER_AUTH_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM; -const USER_FULL_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM; -const USER_USR_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM; -const USER_PARMS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM; -const USER_WORKSTATIONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM; -const USER_LAST_LOGON_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM; -const USER_LAST_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM; -const USER_ACCT_EXPIRES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM; -const USER_MAX_STORAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM; -const USER_UNITS_PER_WEEK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM; -const USER_LOGON_HOURS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM; -const USER_PAD_PW_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM; -const USER_NUM_LOGONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM; -const USER_LOGON_SERVER_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM; -const USER_COUNTRY_CODE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM; -const USER_CODE_PAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM; -const USER_PRIMARY_GROUP_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM; -// USER_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. -//const USER_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_POSIX_ID_PARMNUM; -const USER_HOME_DIR_DRIVE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM; - -const NULL_USERSETINFO_PASSWD=" "; -const ULONG TIMEQ_FOREVER=-1; -const ULONG USER_MAXSTORAGE_UNLIMITED=-1; -const ULONG USER_NO_LOGOFF=-1; -const UNITS_PER_DAY=24; -const UNITS_PER_WEEK=168; -const USER_PRIV_MASK=3; -const USER_PRIV_GUEST=0; -const USER_PRIV_USER=1; -const USER_PRIV_ADMIN=2; -const MAX_PASSWD_LEN=PWLEN; -const DEF_MIN_PWLEN=6; -const DEF_PWUNIQUENESS=5; -const DEF_MAX_PWHIST=8; -const DEF_MAX_PWAGE=TIMEQ_FOREVER; -const DEF_MIN_PWAGE=0; -const ULONG DEF_FORCE_LOGOFF=0xffffffff; -const DEF_MAX_BADPW=0; -const ONE_DAY=86400; -const VALIDATED_LOGON=0; -const PASSWORD_EXPIRED=2; -const NON_VALIDATED_LOGON=3; -const VALID_LOGOFF=1; - -const MODALS_MIN_PASSWD_LEN_PARMNUM=1; -const MODALS_MAX_PASSWD_AGE_PARMNUM=2; -const MODALS_MIN_PASSWD_AGE_PARMNUM=3; -const MODALS_FORCE_LOGOFF_PARMNUM=4; -const MODALS_PASSWD_HIST_LEN_PARMNUM=5; -const MODALS_ROLE_PARMNUM=6; -const MODALS_PRIMARY_PARMNUM=7; -const MODALS_DOMAIN_NAME_PARMNUM=8; -const MODALS_DOMAIN_ID_PARMNUM=9; -const MODALS_LOCKOUT_DURATION_PARMNUM=10; -const MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM=11; -const MODALS_LOCKOUT_THRESHOLD_PARMNUM=12; - -const MODALS_MIN_PASSWD_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM); -const MODALS_MAX_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM); -const MODALS_MIN_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM); -const MODALS_FORCE_LOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM); -const MODALS_PASSWD_HIST_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM); -const MODALS_ROLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM); -const MODALS_PRIMARY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM); -const MODALS_DOMAIN_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM); -const MODALS_DOMAIN_ID_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM); - -const GROUPIDMASK=0x8000; -const GROUP_ALL_PARMNUM=0; -const GROUP_NAME_PARMNUM=1; -const GROUP_COMMENT_PARMNUM=2; -const GROUP_ATTRIBUTES_PARMNUM=3; - -const GROUP_ALL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM; -const GROUP_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM; -const GROUP_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM; -const GROUP_ATTRIBUTES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM; -// GROUP_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. -//const GROUP_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_POSIX_ID_PARMNUM; - -const LOCALGROUP_NAME_PARMNUM=1; -const LOCALGROUP_COMMENT_PARMNUM=2; -const MAXPERMENTRIES=64; -const ACCESS_NONE=0; -const ACCESS_READ=1; -const ACCESS_WRITE=2; -const ACCESS_CREATE=4; -const ACCESS_EXEC=8; -const ACCESS_DELETE=16; -const ACCESS_ATRIB=32; -const ACCESS_PERM=64; -const ACCESS_ALL = ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM; -const ACCESS_GROUP=0x8000; -const ACCESS_AUDIT=1; -const ACCESS_SUCCESS_OPEN=16; -const ACCESS_SUCCESS_WRITE=32; -const ACCESS_SUCCESS_DELETE=64; -const ACCESS_SUCCESS_ACL=128; -const ACCESS_SUCCESS_MASK=240; -const ACCESS_FAIL_OPEN=256; -const ACCESS_FAIL_WRITE=512; -const ACCESS_FAIL_DELETE=1024; -const ACCESS_FAIL_ACL=2048; -const ACCESS_FAIL_MASK=3840; -const ACCESS_FAIL_SHIFT=4; -const ACCESS_RESOURCE_NAME_PARMNUM=1; -const ACCESS_ATTR_PARMNUM=2; -const ACCESS_COUNT_PARMNUM=3; -const ACCESS_ACCESS_LIST_PARMNUM=4; - -const ACCESS_RESOURCE_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM); -const ACCESS_ATTR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM); -const ACCESS_COUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM); -const ACCESS_ACCESS_LIST_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM); - -const NETLOGON_REPLICATION_NEEDED=1; -const NETLOGON_REPLICATION_IN_PROGRESS=2; -const NETLOGON_FULL_SYNC_REPLICATION=4; -const NETLOGON_REDO_NEEDED=8; - -struct USER_INFO_0 { - LPWSTR usri0_name; -} -alias USER_INFO_0* PUSER_INFO_0, LPUSER_INFO_0; - -struct USER_INFO_1{ - LPWSTR usri1_name; - LPWSTR usri1_password; - DWORD usri1_password_age; - DWORD usri1_priv; - LPWSTR usri1_home_dir; - LPWSTR usri1_comment; - DWORD usri1_flags; - LPWSTR usri1_script_path; -} -alias USER_INFO_1* PUSER_INFO_1, LPUSER_INFO_1; - -struct USER_INFO_2{ - LPWSTR usri2_name; - LPWSTR usri2_password; - DWORD usri2_password_age; - DWORD usri2_priv; - LPWSTR usri2_home_dir; - LPWSTR usri2_comment; - DWORD usri2_flags; - LPWSTR usri2_script_path; - DWORD usri2_auth_flags; - LPWSTR usri2_full_name; - LPWSTR usri2_usr_comment; - LPWSTR usri2_parms; - LPWSTR usri2_workstations; - DWORD usri2_last_logon; - DWORD usri2_last_logoff; - DWORD usri2_acct_expires; - DWORD usri2_max_storage; - DWORD usri2_units_per_week; - PBYTE usri2_logon_hours; - DWORD usri2_bad_pw_count; - DWORD usri2_num_logons; - LPWSTR usri2_logon_server; - DWORD usri2_country_code; - DWORD usri2_code_page; -} -alias USER_INFO_2* PUSER_INFO_2, LPUSER_INFO_2; - -struct USER_INFO_3{ - LPWSTR usri3_name; - LPWSTR usri3_password; - DWORD usri3_password_age; - DWORD usri3_priv; - LPWSTR usri3_home_dir; - LPWSTR usri3_comment; - DWORD usri3_flags; - LPWSTR usri3_script_path; - DWORD usri3_auth_flags; - LPWSTR usri3_full_name; - LPWSTR usri3_usr_comment; - LPWSTR usri3_parms; - LPWSTR usri3_workstations; - DWORD usri3_last_logon; - DWORD usri3_last_logoff; - DWORD usri3_acct_expires; - DWORD usri3_max_storage; - DWORD usri3_units_per_week; - PBYTE usri3_logon_hours; - DWORD usri3_bad_pw_count; - DWORD usri3_num_logons; - LPWSTR usri3_logon_server; - DWORD usri3_country_code; - DWORD usri3_code_page; - DWORD usri3_user_id; - DWORD usri3_primary_group_id; - LPWSTR usri3_profile; - LPWSTR usri3_home_dir_drive; - DWORD usri3_password_expired; -} -alias USER_INFO_3* PUSER_INFO_3, LPUSER_INFO_3; - -struct USER_INFO_10{ - LPWSTR usri10_name; - LPWSTR usri10_comment; - LPWSTR usri10_usr_comment; - LPWSTR usri10_full_name; -} -alias USER_INFO_10* PUSER_INFO_10, LPUSER_INFO_10; - -struct USER_INFO_11{ - LPWSTR usri11_name; - LPWSTR usri11_comment; - LPWSTR usri11_usr_comment; - LPWSTR usri11_full_name; - DWORD usri11_priv; - DWORD usri11_auth_flags; - DWORD usri11_password_age; - LPWSTR usri11_home_dir; - LPWSTR usri11_parms; - DWORD usri11_last_logon; - DWORD usri11_last_logoff; - DWORD usri11_bad_pw_count; - DWORD usri11_num_logons; - LPWSTR usri11_logon_server; - DWORD usri11_country_code; - LPWSTR usri11_workstations; - DWORD usri11_max_storage; - DWORD usri11_units_per_week; - PBYTE usri11_logon_hours; - DWORD usri11_code_page; -} -alias USER_INFO_11* PUSER_INFO_11, LPUSER_INFO_11; - -struct USER_INFO_20 { - LPWSTR usri20_name; - LPWSTR usri20_full_name; - LPWSTR usri20_comment; - DWORD usri20_flags; - DWORD usri20_user_id; -} -alias USER_INFO_20* PUSER_INFO_20, LPUSER_INFO_20; - -struct USER_INFO_21 { - BYTE[ENCRYPTED_PWLEN] usri21_password; -} -alias USER_INFO_21* PUSER_INFO_21, LPUSER_INFO_21; - -struct USER_INFO_22{ - LPWSTR usri22_name; - BYTE[ENCRYPTED_PWLEN] usri22_password; - DWORD usri22_password_age; - DWORD usri22_priv; - LPWSTR usri22_home_dir; - LPWSTR usri22_comment; - DWORD usri22_flags; - LPWSTR usri22_script_path; - DWORD usri22_auth_flags; - LPWSTR usri22_full_name; - LPWSTR usri22_usr_comment; - LPWSTR usri22_parms; - LPWSTR usri22_workstations; - DWORD usri22_last_logon; - DWORD usri22_last_logoff; - DWORD usri22_acct_expires; - DWORD usri22_max_storage; - DWORD usri22_units_per_week; - PBYTE usri22_logon_hours; - DWORD usri22_bad_pw_count; - DWORD usri22_num_logons; - LPWSTR usri22_logon_server; - DWORD usri22_country_code; - DWORD usri22_code_page; -} -alias USER_INFO_22* PUSER_INFO_22, LPUSER_INFO_22; - -struct USER_INFO_1003{ - LPWSTR usri1003_password; -} -alias USER_INFO_1003* PUSER_INFO_1003, LPUSER_INFO_1003; - -struct USER_INFO_1005{ - DWORD usri1005_priv; -} -alias USER_INFO_1005* PUSER_INFO_1005, LPUSER_INFO_1005; - -struct USER_INFO_1006{ - LPWSTR usri1006_home_dir; -} -alias USER_INFO_1006* PUSER_INFO_1006, LPUSER_INFO_1006; - -struct USER_INFO_1007{ - LPWSTR usri1007_comment; -} -alias USER_INFO_1007* PUSER_INFO_1007, LPUSER_INFO_1007; - -struct USER_INFO_1008{ - DWORD usri1008_flags; -} -alias USER_INFO_1008* PUSER_INFO_1008, LPUSER_INFO_1008; - -struct USER_INFO_1009{ - LPWSTR usri1009_script_path; -} -alias USER_INFO_1009* PUSER_INFO_1009, LPUSER_INFO_1009; - -struct USER_INFO_1010{ - DWORD usri1010_auth_flags; -} -alias USER_INFO_1010* PUSER_INFO_1010, LPUSER_INFO_1010; - -struct USER_INFO_1011{ - LPWSTR usri1011_full_name; -} -alias USER_INFO_1011* PUSER_INFO_1011, LPUSER_INFO_1011; - -struct USER_INFO_1012{ - LPWSTR usri1012_usr_comment; -} -alias USER_INFO_1012* PUSER_INFO_1012, LPUSER_INFO_1012; - -struct USER_INFO_1013{ - LPWSTR usri1013_parms; -} -alias USER_INFO_1013* PUSER_INFO_1013, LPUSER_INFO_1013; - -struct USER_INFO_1014{ - LPWSTR usri1014_workstations; -} -alias USER_INFO_1014* PUSER_INFO_1014, LPUSER_INFO_1014; - -struct USER_INFO_1017{ - DWORD usri1017_acct_expires; -} -alias USER_INFO_1017* PUSER_INFO_1017, LPUSER_INFO_1017; - -struct USER_INFO_1018{ - DWORD usri1018_max_storage; -} -alias USER_INFO_1018* PUSER_INFO_1018, LPUSER_INFO_1018; - -struct USER_INFO_1020{ - DWORD usri1020_units_per_week; - PBYTE usri1020_logon_hours; -} -alias USER_INFO_1020* PUSER_INFO_1020, LPUSER_INFO_1020; - -struct USER_INFO_1023{ - LPWSTR usri1023_logon_server; -} -alias USER_INFO_1023* PUSER_INFO_1023, LPUSER_INFO_1023; - -struct USER_INFO_1024{ - DWORD usri1024_country_code; -} -alias USER_INFO_1024* PUSER_INFO_1024, LPUSER_INFO_1024; - -struct USER_INFO_1025{ - DWORD usri1025_code_page; -} -alias USER_INFO_1025* PUSER_INFO_1025, LPUSER_INFO_1025; - -struct USER_INFO_1051{ - DWORD usri1051_primary_group_id; -} -alias USER_INFO_1051* PUSER_INFO_1051, LPUSER_INFO_1051; - -struct USER_INFO_1052{ - LPWSTR usri1052_profile; -} -alias USER_INFO_1052* PUSER_INFO_1052, LPUSER_INFO_1052; - -struct USER_INFO_1053{ - LPWSTR usri1053_home_dir_drive; -} -alias USER_INFO_1053* PUSER_INFO_1053, LPUSER_INFO_1053; - -struct USER_MODALS_INFO_0{ - DWORD usrmod0_min_passwd_len; - DWORD usrmod0_max_passwd_age; - DWORD usrmod0_min_passwd_age; - DWORD usrmod0_force_logoff; - DWORD usrmod0_password_hist_len; -} -alias USER_MODALS_INFO_0* PUSER_MODALS_INFO_0, LPUSER_MODALS_INFO_0; - -struct USER_MODALS_INFO_1{ - DWORD usrmod1_role; - LPWSTR usrmod1_primary; -} -alias USER_MODALS_INFO_1* PUSER_MODALS_INFO_1, LPUSER_MODALS_INFO_1; - -struct USER_MODALS_INFO_2{ - LPWSTR usrmod2_domain_name; - PSID usrmod2_domain_id; -} -alias USER_MODALS_INFO_2* PUSER_MODALS_INFO_2, LPUSER_MODALS_INFO_2; - -struct USER_MODALS_INFO_3{ - DWORD usrmod3_lockout_duration; - DWORD usrmod3_lockout_observation_window; - DWORD usrmod3_lockout_threshold; -} -alias USER_MODALS_INFO_3* PUSER_MODALS_INFO_3, LPUSER_MODALS_INFO_3; - -struct USER_MODALS_INFO_1001{ - DWORD usrmod1001_min_passwd_len; -} -alias USER_MODALS_INFO_1001* PUSER_MODALS_INFO_1001, LPUSER_MODALS_INFO_1001; - -struct USER_MODALS_INFO_1002{ - DWORD usrmod1002_max_passwd_age; -} -alias USER_MODALS_INFO_1002* PUSER_MODALS_INFO_1002, LPUSER_MODALS_INFO_1002; - -struct USER_MODALS_INFO_1003{ - DWORD usrmod1003_min_passwd_age; -} -alias USER_MODALS_INFO_1003* PUSER_MODALS_INFO_1003, LPUSER_MODALS_INFO_1003; - -struct USER_MODALS_INFO_1004{ - DWORD usrmod1004_force_logoff; -} -alias USER_MODALS_INFO_1004* PUSER_MODALS_INFO_1004, LPUSER_MODALS_INFO_1004; - -struct USER_MODALS_INFO_1005{ - DWORD usrmod1005_password_hist_len; -} -alias USER_MODALS_INFO_1005* PUSER_MODALS_INFO_1005, LPUSER_MODALS_INFO_1005; - -struct USER_MODALS_INFO_1006{ - DWORD usrmod1006_role; -} -alias USER_MODALS_INFO_1006* PUSER_MODALS_INFO_1006, LPUSER_MODALS_INFO_1006; - -struct USER_MODALS_INFO_1007{ - LPWSTR usrmod1007_primary; -} -alias USER_MODALS_INFO_1007* PUSER_MODALS_INFO_1007, LPUSER_MODALS_INFO_1007; - -struct GROUP_INFO_0{ - LPWSTR grpi0_name; -} -alias GROUP_INFO_0* PGROUP_INFO_0, LPGROUP_INFO_0; - -struct GROUP_INFO_1{ - LPWSTR grpi1_name; - LPWSTR grpi1_comment; -} -alias GROUP_INFO_1* PGROUP_INFO_1, LPGROUP_INFO_1; - -struct GROUP_INFO_2{ - LPWSTR grpi2_name; - LPWSTR grpi2_comment; - DWORD grpi2_group_id; - DWORD grpi2_attributes; -} -alias GROUP_INFO_2* PGROUP_INFO_2; - -struct GROUP_INFO_1002{ - LPWSTR grpi1002_comment; -} -alias GROUP_INFO_1002* PGROUP_INFO_1002, LPGROUP_INFO_1002; - -struct GROUP_INFO_1005{ - DWORD grpi1005_attributes; -} -alias GROUP_INFO_1005* PGROUP_INFO_1005, LPGROUP_INFO_1005; - -struct GROUP_USERS_INFO_0{ - LPWSTR grui0_name; -} -alias GROUP_USERS_INFO_0* PGROUP_USERS_INFO_0, LPGROUP_USERS_INFO_0; - -struct GROUP_USERS_INFO_1{ - LPWSTR grui1_name; - DWORD grui1_attributes; -} -alias GROUP_USERS_INFO_1* PGROUP_USERS_INFO_1, LPGROUP_USERS_INFO_1; - -struct LOCALGROUP_INFO_0{ - LPWSTR lgrpi0_name; -} -alias LOCALGROUP_INFO_0* PLOCALGROUP_INFO_0, LPLOCALGROUP_INFO_0; - -struct LOCALGROUP_INFO_1{ - LPWSTR lgrpi1_name; - LPWSTR lgrpi1_comment; -} -alias LOCALGROUP_INFO_1* PLOCALGROUP_INFO_1, LPLOCALGROUP_INFO_1; - -struct LOCALGROUP_INFO_1002{ - LPWSTR lgrpi1002_comment; -} -alias LOCALGROUP_INFO_1002* PLOCALGROUP_INFO_1002, LPLOCALGROUP_INFO_1002; - -struct LOCALGROUP_MEMBERS_INFO_0{ - PSID lgrmi0_sid; -} -alias LOCALGROUP_MEMBERS_INFO_0* PLOCALGROUP_MEMBERS_INFO_0, LPLOCALGROUP_MEMBERS_INFO_0; - -struct LOCALGROUP_MEMBERS_INFO_1{ - PSID lgrmi1_sid; - SID_NAME_USE lgrmi1_sidusage; - LPWSTR lgrmi1_name; -} -alias LOCALGROUP_MEMBERS_INFO_1* PLOCALGROUP_MEMBERS_INFO_1, LPLOCALGROUP_MEMBERS_INFO_1; - -struct LOCALGROUP_MEMBERS_INFO_2{ - PSID lgrmi2_sid; - SID_NAME_USE lgrmi2_sidusage; - LPWSTR lgrmi2_domainandname; -} -alias LOCALGROUP_MEMBERS_INFO_2* PLOCALGROUP_MEMBERS_INFO_2, LPLOCALGROUP_MEMBERS_INFO_2; - -struct LOCALGROUP_MEMBERS_INFO_3{ - LPWSTR lgrmi3_domainandname; -} -alias LOCALGROUP_MEMBERS_INFO_3* PLOCALGROUP_MEMBERS_INFO_3, LPLOCALGROUP_MEMBERS_INFO_3; - -struct LOCALGROUP_USERS_INFO_0{ - LPWSTR lgrui0_name; -} -alias LOCALGROUP_USERS_INFO_0* PLOCALGROUP_USERS_INFO_0, LPLOCALGROUP_USERS_INFO_0; - -struct NET_DISPLAY_USER{ - LPWSTR usri1_name; - LPWSTR usri1_comment; - DWORD usri1_flags; - LPWSTR usri1_full_name; - DWORD usri1_user_id; - DWORD usri1_next_index; -} -alias NET_DISPLAY_USER* PNET_DISPLAY_USER; - -struct NET_DISPLAY_MACHINE{ - LPWSTR usri2_name; - LPWSTR usri2_comment; - DWORD usri2_flags; - DWORD usri2_user_id; - DWORD usri2_next_index; -} -alias NET_DISPLAY_MACHINE* PNET_DISPLAY_MACHINE; - -struct NET_DISPLAY_GROUP{ - LPWSTR grpi3_name; - LPWSTR grpi3_comment; - DWORD grpi3_group_id; - DWORD grpi3_attributes; - DWORD grpi3_next_index; -} -alias NET_DISPLAY_GROUP* PNET_DISPLAY_GROUP; - -struct ACCESS_INFO_0{ - LPTSTR acc0_resource_name; -} -alias ACCESS_INFO_0* PACCESS_INFO_0, LPACCESS_INFO_0; - -struct ACCESS_INFO_1{ - LPTSTR acc1_resource_name; - DWORD acc1_attr; - DWORD acc1_count; -} -alias ACCESS_INFO_1* PACCESS_INFO_1, LPACCESS_INFO_1; - -struct ACCESS_INFO_1002{ - DWORD acc1002_attr; -} -alias ACCESS_INFO_1002* PACCESS_INFO_1002, LPACCESS_INFO_1002; - -struct ACCESS_LIST{ - LPTSTR acl_ugname; - DWORD acl_access; -} -alias ACCESS_LIST* PACCESS_LIST, LPACCESS_LIST; - -struct NETLOGON_INFO_1{ - DWORD netlog1_flags; - NET_API_STATUS netlog1_pdc_connection_status; -} -alias NETLOGON_INFO_1* PNETLOGON_INFO_1; - -struct NETLOGON_INFO_2{ - DWORD netlog2_flags; - NET_API_STATUS netlog2_pdc_connection_status; - LPWSTR netlog2_trusted_dc_name; - NET_API_STATUS netlog2_tc_connection_status; -} -alias NETLOGON_INFO_2* PNETLOGON_INFO_2; - -struct NETLOGON_INFO_3{ - DWORD netlog3_flags; - DWORD netlog3_logon_attempts; - DWORD netlog3_reserved1; - DWORD netlog3_reserved2; - DWORD netlog3_reserved3; - DWORD netlog3_reserved4; - DWORD netlog3_reserved5; -} -alias NETLOGON_INFO_3* PNETLOGON_INFO_3; - -extern (Windows) { -deprecated { - /* These are obsolete */ - NET_API_STATUS NetAccessAdd(LPCWSTR,DWORD,PBYTE,PDWORD); - NET_API_STATUS NetAccessEnum(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); - NET_API_STATUS NetAccessGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); - NET_API_STATUS NetAccessSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); - NET_API_STATUS NetAccessDel(LPCWSTR,LPCWSTR); - NET_API_STATUS NetAccessGetUserPerms(LPCWSTR,LPCWSTR,LPCWSTR,PDWORD); -} -NET_API_STATUS NetUserAdd(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetUserEnum(LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetUserGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetUserSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetUserDel(LPCWSTR,LPCWSTR); -NET_API_STATUS NetUserGetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); -NET_API_STATUS NetUserSetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); -NET_API_STATUS NetUserGetLocalGroups(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); -NET_API_STATUS NetUserModalsGet(LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetUserModalsSet(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetUserChangePassword(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); -NET_API_STATUS NetGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetGroupAddUser(LPCWSTR,LPCWSTR,LPCWSTR); -NET_API_STATUS NetGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetGroupDel(LPCWSTR,LPCWSTR); -NET_API_STATUS NetGroupDelUser(LPCWSTR,LPCWSTR,LPCWSTR); -NET_API_STATUS NetGroupGetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetGroupSetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); -NET_API_STATUS NetLocalGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetLocalGroupAddMember(LPCWSTR,LPCWSTR,PSID); -NET_API_STATUS NetLocalGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetLocalGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetLocalGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetLocalGroupDel(LPCWSTR,LPCWSTR); -NET_API_STATUS NetLocalGroupDelMember(LPCWSTR,LPCWSTR,PSID); -NET_API_STATUS NetLocalGroupGetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD, -PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetLocalGroupSetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); -NET_API_STATUS NetLocalGroupAddMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); -NET_API_STATUS NetLocalGroupDelMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); -NET_API_STATUS NetQueryDisplayInformation(LPCWSTR,DWORD,DWORD,DWORD,DWORD,PDWORD,PVOID*); -NET_API_STATUS NetGetDisplayInformationIndex(LPCWSTR,DWORD,LPCWSTR,PDWORD); -NET_API_STATUS NetGetDCName(LPCWSTR,LPCWSTR,PBYTE*); -NET_API_STATUS NetGetAnyDCName(LPCWSTR,LPCWSTR,PBYTE*); -NET_API_STATUS I_NetLogonControl(LPCWSTR,DWORD,DWORD,PBYTE*); -NET_API_STATUS I_NetLogonControl2(LPCWSTR,DWORD,DWORD,PBYTE,PBYTE*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmaccess.d) + */ +module core.sys.windows.lmaccess; +pragma(lib, "netapi32"); + +/** + Changes relative to MinGW: + USER_POSIX_ID_PARMNUM and GROUP_POSIX_ID_PARMNUM aren't in MinGW or in + the Platform SDK docs, so they have been dropped from this file. +*/ + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +const wchar[] + GROUP_SPECIALGRP_USERS = "USERS", + GROUP_SPECIALGRP_ADMINS = "ADMINS", + GROUP_SPECIALGRP_GUESTS = "GUESTS", + GROUP_SPECIALGRP_LOCAL = "LOCAL"; + +const ACCESS_LETTERS = "RWCXDAP "; + +const NETLOGON_CONTROL_QUERY=1; +const NETLOGON_CONTROL_REPLICATE=2; +const NETLOGON_CONTROL_SYNCHRONIZE=3; +const NETLOGON_CONTROL_PDC_REPLICATE=4; +const NETLOGON_CONTROL_REDISCOVER=5; +const NETLOGON_CONTROL_TC_QUERY=6; +const NETLOGON_CONTROL_BACKUP_CHANGE_LOG=65532; +const NETLOGON_CONTROL_TRUNCATE_LOG=65533; +const NETLOGON_CONTROL_SET_DBFLAG=65534; +const NETLOGON_CONTROL_BREAKPOINT=65535; + +const UF_SCRIPT=1; +const UF_ACCOUNTDISABLE=2; +const UF_HOMEDIR_REQUIRED=8; +const UF_LOCKOUT=16; +const UF_PASSWD_NOTREQD=32; +const UF_PASSWD_CANT_CHANGE=64; +const UF_TEMP_DUPLICATE_ACCOUNT=256; +const UF_NORMAL_ACCOUNT=512; +const UF_INTERDOMAIN_TRUST_ACCOUNT=2048; +const UF_WORKSTATION_TRUST_ACCOUNT=4096; +const UF_SERVER_TRUST_ACCOUNT=8192; +const UF_MNS_LOGON_ACCOUNT=131072; +const UF_MACHINE_ACCOUNT_MASK=UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; +const UF_ACCOUNT_TYPE_MASK=UF_TEMP_DUPLICATE_ACCOUNT|UF_NORMAL_ACCOUNT|UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; +const UF_DONT_EXPIRE_PASSWD=65536; +const UF_SETTABLE_BITS=UF_SCRIPT|UF_ACCOUNTDISABLE|UF_LOCKOUT|UF_HOMEDIR_REQUIRED|UF_PASSWD_NOTREQD|UF_PASSWD_CANT_CHANGE|UF_ACCOUNT_TYPE_MASK|UF_DONT_EXPIRE_PASSWD; + +const FILTER_TEMP_DUPLICATE_ACCOUNT=1; +const FILTER_NORMAL_ACCOUNT=2; +const FILTER_INTERDOMAIN_TRUST_ACCOUNT=8; +const FILTER_WORKSTATION_TRUST_ACCOUNT=16; +const FILTER_SERVER_TRUST_ACCOUNT=32; + +const LG_INCLUDE_INDIRECT=1; + +const AF_OP_PRINT=1; +const AF_OP_COMM=2; +const AF_OP_SERVER=4; +const AF_OP_ACCOUNTS=8; +const AF_SETTABLE_BITS=(AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS); + +const UAS_ROLE_STANDALONE=0; +const UAS_ROLE_MEMBER=1; +const UAS_ROLE_BACKUP=2; +const UAS_ROLE_PRIMARY=3; + +const USER_NAME_PARMNUM=1; +const USER_PASSWORD_PARMNUM=3; +const USER_PASSWORD_AGE_PARMNUM=4; +const USER_PRIV_PARMNUM=5; +const USER_HOME_DIR_PARMNUM=6; +const USER_COMMENT_PARMNUM=7; +const USER_FLAGS_PARMNUM=8; +const USER_SCRIPT_PATH_PARMNUM=9; +const USER_AUTH_FLAGS_PARMNUM=10; +const USER_FULL_NAME_PARMNUM=11; +const USER_USR_COMMENT_PARMNUM=12; +const USER_PARMS_PARMNUM=13; +const USER_WORKSTATIONS_PARMNUM=14; +const USER_LAST_LOGON_PARMNUM=15; +const USER_LAST_LOGOFF_PARMNUM=16; +const USER_ACCT_EXPIRES_PARMNUM=17; +const USER_MAX_STORAGE_PARMNUM=18; +const USER_UNITS_PER_WEEK_PARMNUM=19; +const USER_LOGON_HOURS_PARMNUM=20; +const USER_PAD_PW_COUNT_PARMNUM=21; +const USER_NUM_LOGONS_PARMNUM=22; +const USER_LOGON_SERVER_PARMNUM=23; +const USER_COUNTRY_CODE_PARMNUM=24; +const USER_CODE_PAGE_PARMNUM=25; +const USER_PRIMARY_GROUP_PARMNUM=51; +const USER_PROFILE=52; +const USER_PROFILE_PARMNUM=52; +const USER_HOME_DIR_DRIVE_PARMNUM=53; + +const USER_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM; +const USER_PASSWORD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM; +const USER_PASSWORD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM; +const USER_PRIV_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM; +const USER_HOME_DIR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM; +const USER_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM; +const USER_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM; +const USER_SCRIPT_PATH_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM; +const USER_AUTH_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM; +const USER_FULL_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM; +const USER_USR_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM; +const USER_PARMS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM; +const USER_WORKSTATIONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM; +const USER_LAST_LOGON_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM; +const USER_LAST_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM; +const USER_ACCT_EXPIRES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM; +const USER_MAX_STORAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM; +const USER_UNITS_PER_WEEK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM; +const USER_LOGON_HOURS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM; +const USER_PAD_PW_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM; +const USER_NUM_LOGONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM; +const USER_LOGON_SERVER_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM; +const USER_COUNTRY_CODE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM; +const USER_CODE_PAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM; +const USER_PRIMARY_GROUP_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM; +// USER_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. +//const USER_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_POSIX_ID_PARMNUM; +const USER_HOME_DIR_DRIVE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM; + +const NULL_USERSETINFO_PASSWD=" "; +const ULONG TIMEQ_FOREVER=-1; +const ULONG USER_MAXSTORAGE_UNLIMITED=-1; +const ULONG USER_NO_LOGOFF=-1; +const UNITS_PER_DAY=24; +const UNITS_PER_WEEK=168; +const USER_PRIV_MASK=3; +const USER_PRIV_GUEST=0; +const USER_PRIV_USER=1; +const USER_PRIV_ADMIN=2; +const MAX_PASSWD_LEN=PWLEN; +const DEF_MIN_PWLEN=6; +const DEF_PWUNIQUENESS=5; +const DEF_MAX_PWHIST=8; +const DEF_MAX_PWAGE=TIMEQ_FOREVER; +const DEF_MIN_PWAGE=0; +const ULONG DEF_FORCE_LOGOFF=0xffffffff; +const DEF_MAX_BADPW=0; +const ONE_DAY=86400; +const VALIDATED_LOGON=0; +const PASSWORD_EXPIRED=2; +const NON_VALIDATED_LOGON=3; +const VALID_LOGOFF=1; + +const MODALS_MIN_PASSWD_LEN_PARMNUM=1; +const MODALS_MAX_PASSWD_AGE_PARMNUM=2; +const MODALS_MIN_PASSWD_AGE_PARMNUM=3; +const MODALS_FORCE_LOGOFF_PARMNUM=4; +const MODALS_PASSWD_HIST_LEN_PARMNUM=5; +const MODALS_ROLE_PARMNUM=6; +const MODALS_PRIMARY_PARMNUM=7; +const MODALS_DOMAIN_NAME_PARMNUM=8; +const MODALS_DOMAIN_ID_PARMNUM=9; +const MODALS_LOCKOUT_DURATION_PARMNUM=10; +const MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM=11; +const MODALS_LOCKOUT_THRESHOLD_PARMNUM=12; + +const MODALS_MIN_PASSWD_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM); +const MODALS_MAX_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM); +const MODALS_MIN_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM); +const MODALS_FORCE_LOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM); +const MODALS_PASSWD_HIST_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM); +const MODALS_ROLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM); +const MODALS_PRIMARY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM); +const MODALS_DOMAIN_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM); +const MODALS_DOMAIN_ID_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM); + +const GROUPIDMASK=0x8000; +const GROUP_ALL_PARMNUM=0; +const GROUP_NAME_PARMNUM=1; +const GROUP_COMMENT_PARMNUM=2; +const GROUP_ATTRIBUTES_PARMNUM=3; + +const GROUP_ALL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM; +const GROUP_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM; +const GROUP_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM; +const GROUP_ATTRIBUTES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM; +// GROUP_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. +//const GROUP_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_POSIX_ID_PARMNUM; + +const LOCALGROUP_NAME_PARMNUM=1; +const LOCALGROUP_COMMENT_PARMNUM=2; +const MAXPERMENTRIES=64; +const ACCESS_NONE=0; +const ACCESS_READ=1; +const ACCESS_WRITE=2; +const ACCESS_CREATE=4; +const ACCESS_EXEC=8; +const ACCESS_DELETE=16; +const ACCESS_ATRIB=32; +const ACCESS_PERM=64; +const ACCESS_ALL = ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM; +const ACCESS_GROUP=0x8000; +const ACCESS_AUDIT=1; +const ACCESS_SUCCESS_OPEN=16; +const ACCESS_SUCCESS_WRITE=32; +const ACCESS_SUCCESS_DELETE=64; +const ACCESS_SUCCESS_ACL=128; +const ACCESS_SUCCESS_MASK=240; +const ACCESS_FAIL_OPEN=256; +const ACCESS_FAIL_WRITE=512; +const ACCESS_FAIL_DELETE=1024; +const ACCESS_FAIL_ACL=2048; +const ACCESS_FAIL_MASK=3840; +const ACCESS_FAIL_SHIFT=4; +const ACCESS_RESOURCE_NAME_PARMNUM=1; +const ACCESS_ATTR_PARMNUM=2; +const ACCESS_COUNT_PARMNUM=3; +const ACCESS_ACCESS_LIST_PARMNUM=4; + +const ACCESS_RESOURCE_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM); +const ACCESS_ATTR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM); +const ACCESS_COUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM); +const ACCESS_ACCESS_LIST_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM); + +const NETLOGON_REPLICATION_NEEDED=1; +const NETLOGON_REPLICATION_IN_PROGRESS=2; +const NETLOGON_FULL_SYNC_REPLICATION=4; +const NETLOGON_REDO_NEEDED=8; + +struct USER_INFO_0 { + LPWSTR usri0_name; +} +alias USER_INFO_0* PUSER_INFO_0, LPUSER_INFO_0; + +struct USER_INFO_1{ + LPWSTR usri1_name; + LPWSTR usri1_password; + DWORD usri1_password_age; + DWORD usri1_priv; + LPWSTR usri1_home_dir; + LPWSTR usri1_comment; + DWORD usri1_flags; + LPWSTR usri1_script_path; +} +alias USER_INFO_1* PUSER_INFO_1, LPUSER_INFO_1; + +struct USER_INFO_2{ + LPWSTR usri2_name; + LPWSTR usri2_password; + DWORD usri2_password_age; + DWORD usri2_priv; + LPWSTR usri2_home_dir; + LPWSTR usri2_comment; + DWORD usri2_flags; + LPWSTR usri2_script_path; + DWORD usri2_auth_flags; + LPWSTR usri2_full_name; + LPWSTR usri2_usr_comment; + LPWSTR usri2_parms; + LPWSTR usri2_workstations; + DWORD usri2_last_logon; + DWORD usri2_last_logoff; + DWORD usri2_acct_expires; + DWORD usri2_max_storage; + DWORD usri2_units_per_week; + PBYTE usri2_logon_hours; + DWORD usri2_bad_pw_count; + DWORD usri2_num_logons; + LPWSTR usri2_logon_server; + DWORD usri2_country_code; + DWORD usri2_code_page; +} +alias USER_INFO_2* PUSER_INFO_2, LPUSER_INFO_2; + +struct USER_INFO_3{ + LPWSTR usri3_name; + LPWSTR usri3_password; + DWORD usri3_password_age; + DWORD usri3_priv; + LPWSTR usri3_home_dir; + LPWSTR usri3_comment; + DWORD usri3_flags; + LPWSTR usri3_script_path; + DWORD usri3_auth_flags; + LPWSTR usri3_full_name; + LPWSTR usri3_usr_comment; + LPWSTR usri3_parms; + LPWSTR usri3_workstations; + DWORD usri3_last_logon; + DWORD usri3_last_logoff; + DWORD usri3_acct_expires; + DWORD usri3_max_storage; + DWORD usri3_units_per_week; + PBYTE usri3_logon_hours; + DWORD usri3_bad_pw_count; + DWORD usri3_num_logons; + LPWSTR usri3_logon_server; + DWORD usri3_country_code; + DWORD usri3_code_page; + DWORD usri3_user_id; + DWORD usri3_primary_group_id; + LPWSTR usri3_profile; + LPWSTR usri3_home_dir_drive; + DWORD usri3_password_expired; +} +alias USER_INFO_3* PUSER_INFO_3, LPUSER_INFO_3; + +struct USER_INFO_10{ + LPWSTR usri10_name; + LPWSTR usri10_comment; + LPWSTR usri10_usr_comment; + LPWSTR usri10_full_name; +} +alias USER_INFO_10* PUSER_INFO_10, LPUSER_INFO_10; + +struct USER_INFO_11{ + LPWSTR usri11_name; + LPWSTR usri11_comment; + LPWSTR usri11_usr_comment; + LPWSTR usri11_full_name; + DWORD usri11_priv; + DWORD usri11_auth_flags; + DWORD usri11_password_age; + LPWSTR usri11_home_dir; + LPWSTR usri11_parms; + DWORD usri11_last_logon; + DWORD usri11_last_logoff; + DWORD usri11_bad_pw_count; + DWORD usri11_num_logons; + LPWSTR usri11_logon_server; + DWORD usri11_country_code; + LPWSTR usri11_workstations; + DWORD usri11_max_storage; + DWORD usri11_units_per_week; + PBYTE usri11_logon_hours; + DWORD usri11_code_page; +} +alias USER_INFO_11* PUSER_INFO_11, LPUSER_INFO_11; + +struct USER_INFO_20 { + LPWSTR usri20_name; + LPWSTR usri20_full_name; + LPWSTR usri20_comment; + DWORD usri20_flags; + DWORD usri20_user_id; +} +alias USER_INFO_20* PUSER_INFO_20, LPUSER_INFO_20; + +struct USER_INFO_21 { + BYTE[ENCRYPTED_PWLEN] usri21_password; +} +alias USER_INFO_21* PUSER_INFO_21, LPUSER_INFO_21; + +struct USER_INFO_22{ + LPWSTR usri22_name; + BYTE[ENCRYPTED_PWLEN] usri22_password; + DWORD usri22_password_age; + DWORD usri22_priv; + LPWSTR usri22_home_dir; + LPWSTR usri22_comment; + DWORD usri22_flags; + LPWSTR usri22_script_path; + DWORD usri22_auth_flags; + LPWSTR usri22_full_name; + LPWSTR usri22_usr_comment; + LPWSTR usri22_parms; + LPWSTR usri22_workstations; + DWORD usri22_last_logon; + DWORD usri22_last_logoff; + DWORD usri22_acct_expires; + DWORD usri22_max_storage; + DWORD usri22_units_per_week; + PBYTE usri22_logon_hours; + DWORD usri22_bad_pw_count; + DWORD usri22_num_logons; + LPWSTR usri22_logon_server; + DWORD usri22_country_code; + DWORD usri22_code_page; +} +alias USER_INFO_22* PUSER_INFO_22, LPUSER_INFO_22; + +struct USER_INFO_1003{ + LPWSTR usri1003_password; +} +alias USER_INFO_1003* PUSER_INFO_1003, LPUSER_INFO_1003; + +struct USER_INFO_1005{ + DWORD usri1005_priv; +} +alias USER_INFO_1005* PUSER_INFO_1005, LPUSER_INFO_1005; + +struct USER_INFO_1006{ + LPWSTR usri1006_home_dir; +} +alias USER_INFO_1006* PUSER_INFO_1006, LPUSER_INFO_1006; + +struct USER_INFO_1007{ + LPWSTR usri1007_comment; +} +alias USER_INFO_1007* PUSER_INFO_1007, LPUSER_INFO_1007; + +struct USER_INFO_1008{ + DWORD usri1008_flags; +} +alias USER_INFO_1008* PUSER_INFO_1008, LPUSER_INFO_1008; + +struct USER_INFO_1009{ + LPWSTR usri1009_script_path; +} +alias USER_INFO_1009* PUSER_INFO_1009, LPUSER_INFO_1009; + +struct USER_INFO_1010{ + DWORD usri1010_auth_flags; +} +alias USER_INFO_1010* PUSER_INFO_1010, LPUSER_INFO_1010; + +struct USER_INFO_1011{ + LPWSTR usri1011_full_name; +} +alias USER_INFO_1011* PUSER_INFO_1011, LPUSER_INFO_1011; + +struct USER_INFO_1012{ + LPWSTR usri1012_usr_comment; +} +alias USER_INFO_1012* PUSER_INFO_1012, LPUSER_INFO_1012; + +struct USER_INFO_1013{ + LPWSTR usri1013_parms; +} +alias USER_INFO_1013* PUSER_INFO_1013, LPUSER_INFO_1013; + +struct USER_INFO_1014{ + LPWSTR usri1014_workstations; +} +alias USER_INFO_1014* PUSER_INFO_1014, LPUSER_INFO_1014; + +struct USER_INFO_1017{ + DWORD usri1017_acct_expires; +} +alias USER_INFO_1017* PUSER_INFO_1017, LPUSER_INFO_1017; + +struct USER_INFO_1018{ + DWORD usri1018_max_storage; +} +alias USER_INFO_1018* PUSER_INFO_1018, LPUSER_INFO_1018; + +struct USER_INFO_1020{ + DWORD usri1020_units_per_week; + PBYTE usri1020_logon_hours; +} +alias USER_INFO_1020* PUSER_INFO_1020, LPUSER_INFO_1020; + +struct USER_INFO_1023{ + LPWSTR usri1023_logon_server; +} +alias USER_INFO_1023* PUSER_INFO_1023, LPUSER_INFO_1023; + +struct USER_INFO_1024{ + DWORD usri1024_country_code; +} +alias USER_INFO_1024* PUSER_INFO_1024, LPUSER_INFO_1024; + +struct USER_INFO_1025{ + DWORD usri1025_code_page; +} +alias USER_INFO_1025* PUSER_INFO_1025, LPUSER_INFO_1025; + +struct USER_INFO_1051{ + DWORD usri1051_primary_group_id; +} +alias USER_INFO_1051* PUSER_INFO_1051, LPUSER_INFO_1051; + +struct USER_INFO_1052{ + LPWSTR usri1052_profile; +} +alias USER_INFO_1052* PUSER_INFO_1052, LPUSER_INFO_1052; + +struct USER_INFO_1053{ + LPWSTR usri1053_home_dir_drive; +} +alias USER_INFO_1053* PUSER_INFO_1053, LPUSER_INFO_1053; + +struct USER_MODALS_INFO_0{ + DWORD usrmod0_min_passwd_len; + DWORD usrmod0_max_passwd_age; + DWORD usrmod0_min_passwd_age; + DWORD usrmod0_force_logoff; + DWORD usrmod0_password_hist_len; +} +alias USER_MODALS_INFO_0* PUSER_MODALS_INFO_0, LPUSER_MODALS_INFO_0; + +struct USER_MODALS_INFO_1{ + DWORD usrmod1_role; + LPWSTR usrmod1_primary; +} +alias USER_MODALS_INFO_1* PUSER_MODALS_INFO_1, LPUSER_MODALS_INFO_1; + +struct USER_MODALS_INFO_2{ + LPWSTR usrmod2_domain_name; + PSID usrmod2_domain_id; +} +alias USER_MODALS_INFO_2* PUSER_MODALS_INFO_2, LPUSER_MODALS_INFO_2; + +struct USER_MODALS_INFO_3{ + DWORD usrmod3_lockout_duration; + DWORD usrmod3_lockout_observation_window; + DWORD usrmod3_lockout_threshold; +} +alias USER_MODALS_INFO_3* PUSER_MODALS_INFO_3, LPUSER_MODALS_INFO_3; + +struct USER_MODALS_INFO_1001{ + DWORD usrmod1001_min_passwd_len; +} +alias USER_MODALS_INFO_1001* PUSER_MODALS_INFO_1001, LPUSER_MODALS_INFO_1001; + +struct USER_MODALS_INFO_1002{ + DWORD usrmod1002_max_passwd_age; +} +alias USER_MODALS_INFO_1002* PUSER_MODALS_INFO_1002, LPUSER_MODALS_INFO_1002; + +struct USER_MODALS_INFO_1003{ + DWORD usrmod1003_min_passwd_age; +} +alias USER_MODALS_INFO_1003* PUSER_MODALS_INFO_1003, LPUSER_MODALS_INFO_1003; + +struct USER_MODALS_INFO_1004{ + DWORD usrmod1004_force_logoff; +} +alias USER_MODALS_INFO_1004* PUSER_MODALS_INFO_1004, LPUSER_MODALS_INFO_1004; + +struct USER_MODALS_INFO_1005{ + DWORD usrmod1005_password_hist_len; +} +alias USER_MODALS_INFO_1005* PUSER_MODALS_INFO_1005, LPUSER_MODALS_INFO_1005; + +struct USER_MODALS_INFO_1006{ + DWORD usrmod1006_role; +} +alias USER_MODALS_INFO_1006* PUSER_MODALS_INFO_1006, LPUSER_MODALS_INFO_1006; + +struct USER_MODALS_INFO_1007{ + LPWSTR usrmod1007_primary; +} +alias USER_MODALS_INFO_1007* PUSER_MODALS_INFO_1007, LPUSER_MODALS_INFO_1007; + +struct GROUP_INFO_0{ + LPWSTR grpi0_name; +} +alias GROUP_INFO_0* PGROUP_INFO_0, LPGROUP_INFO_0; + +struct GROUP_INFO_1{ + LPWSTR grpi1_name; + LPWSTR grpi1_comment; +} +alias GROUP_INFO_1* PGROUP_INFO_1, LPGROUP_INFO_1; + +struct GROUP_INFO_2{ + LPWSTR grpi2_name; + LPWSTR grpi2_comment; + DWORD grpi2_group_id; + DWORD grpi2_attributes; +} +alias GROUP_INFO_2* PGROUP_INFO_2; + +struct GROUP_INFO_1002{ + LPWSTR grpi1002_comment; +} +alias GROUP_INFO_1002* PGROUP_INFO_1002, LPGROUP_INFO_1002; + +struct GROUP_INFO_1005{ + DWORD grpi1005_attributes; +} +alias GROUP_INFO_1005* PGROUP_INFO_1005, LPGROUP_INFO_1005; + +struct GROUP_USERS_INFO_0{ + LPWSTR grui0_name; +} +alias GROUP_USERS_INFO_0* PGROUP_USERS_INFO_0, LPGROUP_USERS_INFO_0; + +struct GROUP_USERS_INFO_1{ + LPWSTR grui1_name; + DWORD grui1_attributes; +} +alias GROUP_USERS_INFO_1* PGROUP_USERS_INFO_1, LPGROUP_USERS_INFO_1; + +struct LOCALGROUP_INFO_0{ + LPWSTR lgrpi0_name; +} +alias LOCALGROUP_INFO_0* PLOCALGROUP_INFO_0, LPLOCALGROUP_INFO_0; + +struct LOCALGROUP_INFO_1{ + LPWSTR lgrpi1_name; + LPWSTR lgrpi1_comment; +} +alias LOCALGROUP_INFO_1* PLOCALGROUP_INFO_1, LPLOCALGROUP_INFO_1; + +struct LOCALGROUP_INFO_1002{ + LPWSTR lgrpi1002_comment; +} +alias LOCALGROUP_INFO_1002* PLOCALGROUP_INFO_1002, LPLOCALGROUP_INFO_1002; + +struct LOCALGROUP_MEMBERS_INFO_0{ + PSID lgrmi0_sid; +} +alias LOCALGROUP_MEMBERS_INFO_0* PLOCALGROUP_MEMBERS_INFO_0, LPLOCALGROUP_MEMBERS_INFO_0; + +struct LOCALGROUP_MEMBERS_INFO_1{ + PSID lgrmi1_sid; + SID_NAME_USE lgrmi1_sidusage; + LPWSTR lgrmi1_name; +} +alias LOCALGROUP_MEMBERS_INFO_1* PLOCALGROUP_MEMBERS_INFO_1, LPLOCALGROUP_MEMBERS_INFO_1; + +struct LOCALGROUP_MEMBERS_INFO_2{ + PSID lgrmi2_sid; + SID_NAME_USE lgrmi2_sidusage; + LPWSTR lgrmi2_domainandname; +} +alias LOCALGROUP_MEMBERS_INFO_2* PLOCALGROUP_MEMBERS_INFO_2, LPLOCALGROUP_MEMBERS_INFO_2; + +struct LOCALGROUP_MEMBERS_INFO_3{ + LPWSTR lgrmi3_domainandname; +} +alias LOCALGROUP_MEMBERS_INFO_3* PLOCALGROUP_MEMBERS_INFO_3, LPLOCALGROUP_MEMBERS_INFO_3; + +struct LOCALGROUP_USERS_INFO_0{ + LPWSTR lgrui0_name; +} +alias LOCALGROUP_USERS_INFO_0* PLOCALGROUP_USERS_INFO_0, LPLOCALGROUP_USERS_INFO_0; + +struct NET_DISPLAY_USER{ + LPWSTR usri1_name; + LPWSTR usri1_comment; + DWORD usri1_flags; + LPWSTR usri1_full_name; + DWORD usri1_user_id; + DWORD usri1_next_index; +} +alias NET_DISPLAY_USER* PNET_DISPLAY_USER; + +struct NET_DISPLAY_MACHINE{ + LPWSTR usri2_name; + LPWSTR usri2_comment; + DWORD usri2_flags; + DWORD usri2_user_id; + DWORD usri2_next_index; +} +alias NET_DISPLAY_MACHINE* PNET_DISPLAY_MACHINE; + +struct NET_DISPLAY_GROUP{ + LPWSTR grpi3_name; + LPWSTR grpi3_comment; + DWORD grpi3_group_id; + DWORD grpi3_attributes; + DWORD grpi3_next_index; +} +alias NET_DISPLAY_GROUP* PNET_DISPLAY_GROUP; + +struct ACCESS_INFO_0{ + LPTSTR acc0_resource_name; +} +alias ACCESS_INFO_0* PACCESS_INFO_0, LPACCESS_INFO_0; + +struct ACCESS_INFO_1{ + LPTSTR acc1_resource_name; + DWORD acc1_attr; + DWORD acc1_count; +} +alias ACCESS_INFO_1* PACCESS_INFO_1, LPACCESS_INFO_1; + +struct ACCESS_INFO_1002{ + DWORD acc1002_attr; +} +alias ACCESS_INFO_1002* PACCESS_INFO_1002, LPACCESS_INFO_1002; + +struct ACCESS_LIST{ + LPTSTR acl_ugname; + DWORD acl_access; +} +alias ACCESS_LIST* PACCESS_LIST, LPACCESS_LIST; + +struct NETLOGON_INFO_1{ + DWORD netlog1_flags; + NET_API_STATUS netlog1_pdc_connection_status; +} +alias NETLOGON_INFO_1* PNETLOGON_INFO_1; + +struct NETLOGON_INFO_2{ + DWORD netlog2_flags; + NET_API_STATUS netlog2_pdc_connection_status; + LPWSTR netlog2_trusted_dc_name; + NET_API_STATUS netlog2_tc_connection_status; +} +alias NETLOGON_INFO_2* PNETLOGON_INFO_2; + +struct NETLOGON_INFO_3{ + DWORD netlog3_flags; + DWORD netlog3_logon_attempts; + DWORD netlog3_reserved1; + DWORD netlog3_reserved2; + DWORD netlog3_reserved3; + DWORD netlog3_reserved4; + DWORD netlog3_reserved5; +} +alias NETLOGON_INFO_3* PNETLOGON_INFO_3; + +extern (Windows) { +deprecated { + /* These are obsolete */ + NET_API_STATUS NetAccessAdd(LPCWSTR,DWORD,PBYTE,PDWORD); + NET_API_STATUS NetAccessEnum(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); + NET_API_STATUS NetAccessGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); + NET_API_STATUS NetAccessSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); + NET_API_STATUS NetAccessDel(LPCWSTR,LPCWSTR); + NET_API_STATUS NetAccessGetUserPerms(LPCWSTR,LPCWSTR,LPCWSTR,PDWORD); +} +NET_API_STATUS NetUserAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetUserEnum(LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetUserGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetUserSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetUserDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetUserGetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS NetUserSetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetUserGetLocalGroups(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS NetUserModalsGet(LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetUserModalsSet(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetUserChangePassword(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetGroupAddUser(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetGroupDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupDelUser(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupGetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetGroupSetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetLocalGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetLocalGroupAddMember(LPCWSTR,LPCWSTR,PSID); +NET_API_STATUS NetLocalGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetLocalGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetLocalGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetLocalGroupDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetLocalGroupDelMember(LPCWSTR,LPCWSTR,PSID); +NET_API_STATUS NetLocalGroupGetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD, +PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetLocalGroupSetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetLocalGroupAddMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetLocalGroupDelMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetQueryDisplayInformation(LPCWSTR,DWORD,DWORD,DWORD,DWORD,PDWORD,PVOID*); +NET_API_STATUS NetGetDisplayInformationIndex(LPCWSTR,DWORD,LPCWSTR,PDWORD); +NET_API_STATUS NetGetDCName(LPCWSTR,LPCWSTR,PBYTE*); +NET_API_STATUS NetGetAnyDCName(LPCWSTR,LPCWSTR,PBYTE*); +NET_API_STATUS I_NetLogonControl(LPCWSTR,DWORD,DWORD,PBYTE*); +NET_API_STATUS I_NetLogonControl2(LPCWSTR,DWORD,DWORD,PBYTE,PBYTE*); +} diff --git a/src/core/sys/windows/lmalert.d b/src/core/sys/windows/lmalert.d index 04227b19c8..09563a4462 100644 --- a/src/core/sys/windows/lmalert.d +++ b/src/core/sys/windows/lmalert.d @@ -1,76 +1,76 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmalert.d) - */ -module core.sys.windows.lmalert; -pragma(lib, "netapi32"); - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -const TCHAR[] - ALERTER_MAILSLOT = `\\.\MAILSLOT\Alerter`, - ALERT_PRINT_EVENT = "PRINTING", - ALERT_MESSAGE_EVENT = "MESSAGE", - ALERT_ERRORLOG_EVENT = "ERRORLOG", - ALERT_ADMIN_EVENT = "ADMIN", - ALERT_USER_EVENT = "USER"; -//MACRO #define ALERT_OTHER_INFO(x) ((PBYTE)(x)+sizeof(STD_ALERT)) - -//MACRO #define ALERT_VAR_DATA(p) ((PBYTE)(p)+sizeof(*p)) - -const PRJOB_QSTATUS = 3; -const PRJOB_DEVSTATUS = 508; -const PRJOB_COMPLETE = 4; -const PRJOB_INTERV = 8; -const PRJOB_ = 16; -const PRJOB_DESTOFFLINE = 32; -const PRJOB_DESTPAUSED = 64; -const PRJOB_NOTIFY = 128; -const PRJOB_DESTNOPAPER = 256; -const PRJOB_DELETED = 32768; -const PRJOB_QS_QUEUED = 0; -const PRJOB_QS_PAUSED = 1; -const PRJOB_QS_SPOOLING = 2; -const PRJOB_QS_PRINTING = 3; - -struct ADMIN_OTHER_INFO{ - DWORD alrtad_errcode; - DWORD alrtad_numstrings; -} -alias ADMIN_OTHER_INFO* PADMIN_OTHER_INFO, LPADMIN_OTHER_INFO; - -struct STD_ALERT{ - DWORD alrt_timestamp; - TCHAR[EVLEN+1] alrt_eventname; - TCHAR[SNLEN+1] alrt_servicename; -} -alias STD_ALERT* PSTD_ALERT, LPSTD_ALERT; - -struct ERRLOG_OTHER_INFO{ - DWORD alrter_errcode; - DWORD alrter_offset; -} -alias ERRLOG_OTHER_INFO* PERRLOG_OTHER_INFO, LPERRLOG_OTHER_INFO; - -struct PRINT_OTHER_INFO{ - DWORD alrtpr_jobid; - DWORD alrtpr_status; - DWORD alrtpr_submitted; - DWORD alrtpr_size; -} -alias PRINT_OTHER_INFO* PPRINT_OTHER_INFO, LPPRINT_OTHER_INFO; - -struct USER_OTHER_INFO{ - DWORD alrtus_errcode; - DWORD alrtus_numstrings; -} -alias USER_OTHER_INFO* PUSER_OTHER_INFO, LPUSER_OTHER_INFO; - -extern (Windows) { -NET_API_STATUS NetAlertRaise(LPCWSTR,PVOID,DWORD); -NET_API_STATUS NetAlertRaiseEx(LPCWSTR,PVOID,DWORD,LPCWSTR); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmalert.d) + */ +module core.sys.windows.lmalert; +pragma(lib, "netapi32"); + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +const TCHAR[] + ALERTER_MAILSLOT = `\\.\MAILSLOT\Alerter`, + ALERT_PRINT_EVENT = "PRINTING", + ALERT_MESSAGE_EVENT = "MESSAGE", + ALERT_ERRORLOG_EVENT = "ERRORLOG", + ALERT_ADMIN_EVENT = "ADMIN", + ALERT_USER_EVENT = "USER"; +//MACRO #define ALERT_OTHER_INFO(x) ((PBYTE)(x)+sizeof(STD_ALERT)) + +//MACRO #define ALERT_VAR_DATA(p) ((PBYTE)(p)+sizeof(*p)) + +const PRJOB_QSTATUS = 3; +const PRJOB_DEVSTATUS = 508; +const PRJOB_COMPLETE = 4; +const PRJOB_INTERV = 8; +const PRJOB_ = 16; +const PRJOB_DESTOFFLINE = 32; +const PRJOB_DESTPAUSED = 64; +const PRJOB_NOTIFY = 128; +const PRJOB_DESTNOPAPER = 256; +const PRJOB_DELETED = 32768; +const PRJOB_QS_QUEUED = 0; +const PRJOB_QS_PAUSED = 1; +const PRJOB_QS_SPOOLING = 2; +const PRJOB_QS_PRINTING = 3; + +struct ADMIN_OTHER_INFO{ + DWORD alrtad_errcode; + DWORD alrtad_numstrings; +} +alias ADMIN_OTHER_INFO* PADMIN_OTHER_INFO, LPADMIN_OTHER_INFO; + +struct STD_ALERT{ + DWORD alrt_timestamp; + TCHAR[EVLEN+1] alrt_eventname; + TCHAR[SNLEN+1] alrt_servicename; +} +alias STD_ALERT* PSTD_ALERT, LPSTD_ALERT; + +struct ERRLOG_OTHER_INFO{ + DWORD alrter_errcode; + DWORD alrter_offset; +} +alias ERRLOG_OTHER_INFO* PERRLOG_OTHER_INFO, LPERRLOG_OTHER_INFO; + +struct PRINT_OTHER_INFO{ + DWORD alrtpr_jobid; + DWORD alrtpr_status; + DWORD alrtpr_submitted; + DWORD alrtpr_size; +} +alias PRINT_OTHER_INFO* PPRINT_OTHER_INFO, LPPRINT_OTHER_INFO; + +struct USER_OTHER_INFO{ + DWORD alrtus_errcode; + DWORD alrtus_numstrings; +} +alias USER_OTHER_INFO* PUSER_OTHER_INFO, LPUSER_OTHER_INFO; + +extern (Windows) { +NET_API_STATUS NetAlertRaise(LPCWSTR,PVOID,DWORD); +NET_API_STATUS NetAlertRaiseEx(LPCWSTR,PVOID,DWORD,LPCWSTR); +} diff --git a/src/core/sys/windows/lmapibuf.d b/src/core/sys/windows/lmapibuf.d index bd6bf88ba6..722d8fd4ee 100644 --- a/src/core/sys/windows/lmapibuf.d +++ b/src/core/sys/windows/lmapibuf.d @@ -1,20 +1,20 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmapibuf.d) - */ -module core.sys.windows.lmapibuf; -pragma(lib, "netapi32"); - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -extern (Windows) { - NET_API_STATUS NetApiBufferAllocate(DWORD, PVOID*); - NET_API_STATUS NetApiBufferFree(PVOID); - NET_API_STATUS NetApiBufferReallocate(PVOID, DWORD, PVOID*); - NET_API_STATUS NetApiBufferSize(PVOID, PDWORD); - NET_API_STATUS NetapipBufferAllocate(DWORD, PVOID*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmapibuf.d) + */ +module core.sys.windows.lmapibuf; +pragma(lib, "netapi32"); + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +extern (Windows) { + NET_API_STATUS NetApiBufferAllocate(DWORD, PVOID*); + NET_API_STATUS NetApiBufferFree(PVOID); + NET_API_STATUS NetApiBufferReallocate(PVOID, DWORD, PVOID*); + NET_API_STATUS NetApiBufferSize(PVOID, PDWORD); + NET_API_STATUS NetapipBufferAllocate(DWORD, PVOID*); +} diff --git a/src/core/sys/windows/lmat.d b/src/core/sys/windows/lmat.d index d725d1fc11..927be535e4 100644 --- a/src/core/sys/windows/lmat.d +++ b/src/core/sys/windows/lmat.d @@ -1,49 +1,49 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmat.d) - */ -module core.sys.windows.lmat; -pragma(lib, "netapi32"); - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -const JOB_RUN_PERIODICALLY = 1; -const JOB_EXEC_ERROR = 2; -const JOB_RUNS_TODAY = 4; -const JOB_ADD_CURRENT_DATE = 8; -const JOB_NONINTERACTIVE = 16; -const JOB_INPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_ADD_CURRENT_DATE - | JOB_NONINTERACTIVE; -const JOB_OUTPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_EXEC_ERROR - | JOB_RUNS_TODAY | JOB_NONINTERACTIVE; - -struct AT_ENUM { - DWORD JobId; - DWORD JobTime; - DWORD DaysOfMonth; - UCHAR DaysOfWeek; - UCHAR Flags; - LPWSTR Command; -} -alias AT_ENUM* PAT_ENUM, LPAT_ENUM; - -struct AT_INFO { - DWORD JobTime; - DWORD DaysOfMonth; - UCHAR DaysOfWeek; - UCHAR Flags; - LPWSTR Command; -} -alias AT_INFO* PAT_INFO, LPAT_INFO; - -extern (Windows) { - NET_API_STATUS NetScheduleJobAdd(LPWSTR, PBYTE, LPDWORD); - NET_API_STATUS NetScheduleJobDel(LPWSTR, DWORD, DWORD); - NET_API_STATUS NetScheduleJobEnum(LPWSTR, PBYTE*, DWORD, PDWORD, PDWORD, - PDWORD); - NET_API_STATUS NetScheduleJobGetInfo(LPWSTR, DWORD, PBYTE*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmat.d) + */ +module core.sys.windows.lmat; +pragma(lib, "netapi32"); + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +const JOB_RUN_PERIODICALLY = 1; +const JOB_EXEC_ERROR = 2; +const JOB_RUNS_TODAY = 4; +const JOB_ADD_CURRENT_DATE = 8; +const JOB_NONINTERACTIVE = 16; +const JOB_INPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_ADD_CURRENT_DATE + | JOB_NONINTERACTIVE; +const JOB_OUTPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_EXEC_ERROR + | JOB_RUNS_TODAY | JOB_NONINTERACTIVE; + +struct AT_ENUM { + DWORD JobId; + DWORD JobTime; + DWORD DaysOfMonth; + UCHAR DaysOfWeek; + UCHAR Flags; + LPWSTR Command; +} +alias AT_ENUM* PAT_ENUM, LPAT_ENUM; + +struct AT_INFO { + DWORD JobTime; + DWORD DaysOfMonth; + UCHAR DaysOfWeek; + UCHAR Flags; + LPWSTR Command; +} +alias AT_INFO* PAT_INFO, LPAT_INFO; + +extern (Windows) { + NET_API_STATUS NetScheduleJobAdd(LPWSTR, PBYTE, LPDWORD); + NET_API_STATUS NetScheduleJobDel(LPWSTR, DWORD, DWORD); + NET_API_STATUS NetScheduleJobEnum(LPWSTR, PBYTE*, DWORD, PDWORD, PDWORD, + PDWORD); + NET_API_STATUS NetScheduleJobGetInfo(LPWSTR, DWORD, PBYTE*); +} diff --git a/src/core/sys/windows/lmaudit.d b/src/core/sys/windows/lmaudit.d index fc872a7b1f..d30c809a6f 100644 --- a/src/core/sys/windows/lmaudit.d +++ b/src/core/sys/windows/lmaudit.d @@ -1,301 +1,301 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmaudit.d) - */ -// COMMENT: This file may be deprecated. -module core.sys.windows.lmaudit; - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -const LOGFLAGS_FORWARD = 0; -const LOGFLAGS_BACKWARD = 1; -const LOGFLAGS_SEEK = 2; - -const ACTION_LOCKOUT = 0; -const ACTION_ADMINUNLOCK = 1; - -const AE_GUEST=0; -const AE_USER=1; -const AE_ADMIN=2; -const AE_NORMAL=0; -const AE_USERLIMIT=0; -const AE_GENERAL=0; -const AE_ERROR=1; -const AE_SESSDIS=1; -const AE_BADPW=1; -const AE_AUTODIS=2; -const AE_UNSHARE=2; -const AE_ADMINPRIVREQD=2; -const AE_ADMINDIS=3; -const AE_NOACCESSPERM=3; -const AE_ACCRESTRICT=4; -const AE_NORMAL_CLOSE=0; -const AE_SES_CLOSE=1; -const AE_ADMIN_CLOSE=2; -const AE_LIM_UNKNOWN=0; -const AE_LIM_LOGONHOURS=1; -const AE_LIM_EXPIRED=2; -const AE_LIM_INVAL_WKSTA=3; -const AE_LIM_DISABLED=4; -const AE_LIM_DELETED=5; -const AE_MOD=0; -const AE_DELETE=1; -const AE_ADD=2; - -const AE_UAS_USER = 0; -const AE_UAS_GROUP = 1; -const AE_UAS_MODALS = 2; - -const SVAUD_SERVICE = 1; -const SVAUD_GOODSESSLOGON = 6; -const SVAUD_BADSESSLOGON = 24; -const SVAUD_SESSLOGON = SVAUD_GOODSESSLOGON|SVAUD_BADSESSLOGON; -const SVAUD_GOODNETLOGON = 96; -const SVAUD_BADNETLOGON = 384; -const SVAUD_NETLOGON = SVAUD_GOODNETLOGON|SVAUD_BADNETLOGON; -const SVAUD_LOGON = SVAUD_NETLOGON|SVAUD_SESSLOGON; -const SVAUD_GOODUSE = 0x600; -const SVAUD_BADUSE = 0x1800; -const SVAUD_USE = SVAUD_GOODUSE|SVAUD_BADUSE; -const SVAUD_USERLIST = 8192; -const SVAUD_PERMISSIONS = 16384; -const SVAUD_RESOURCE = 32768; -const SVAUD_LOGONLIM = 65536; - -const AA_AUDIT_ALL=1; -const AA_A_OWNER=4; -const AA_CLOSE=8; -const AA_S_OPEN=16; -const AA_S_WRITE=32; -const AA_S_CREATE=32; -const AA_S_DELETE=64; -const AA_S_ACL=128; -const AA_S_ALL=253; -const AA_F_OPEN=256; -const AA_F_WRITE=512; -const AA_F_CREATE=512; -const AA_F_DELETE=1024; -const AA_F_ACL=2048; -const AA_F_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; -const AA_A_OPEN=2048; -const AA_A_WRITE=4096; -const AA_A_CREATE=8192; -const AA_A_DELETE=16384; -const AA_A_ACL=32768; -const AA_A_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; - -struct AUDIT_ENTRY{ - DWORD ae_len; - DWORD ae_reserved; - DWORD ae_time; - DWORD ae_type; - DWORD ae_data_offset; - DWORD ae_data_size; -} -alias AUDIT_ENTRY* PAUDIT_ENTRY, LPAUDIT_ENTRY; - -struct HLOG{ - DWORD time; - DWORD last_flags; - DWORD offset; - DWORD rec_offset; -} -alias HLOG* PHLOG, LPHLOG; - -struct AE_SRVSTATUS{ - DWORD ae_sv_status; -} -alias AE_SRVSTATUS* PAE_SRVSTATUS, LPAE_SRVSTATUS; - -struct AE_SESSLOGON{ - DWORD ae_so_compname; - DWORD ae_so_username; - DWORD ae_so_privilege; -} -alias AE_SESSLOGON* PAE_SESSLOGON, LPAE_SESSLOGON; - -struct AE_SESSLOGOFF{ - DWORD ae_sf_compname; - DWORD ae_sf_username; - DWORD ae_sf_reason; -} -alias AE_SESSLOGOFF* PAE_SESSLOGOFF, LPAE_SESSLOGOFF; - -struct AE_SESSPWERR{ - DWORD ae_sp_compname; - DWORD ae_sp_username; -} -alias AE_SESSPWERR* PAE_SESSPWERR, LPAE_SESSPWERR; - -struct AE_CONNSTART{ - DWORD ae_ct_compname; - DWORD ae_ct_username; - DWORD ae_ct_netname; - DWORD ae_ct_connid; -} -alias AE_CONNSTART* PAE_CONNSTART, LPAE_CONNSTART; - -struct AE_CONNSTOP{ - DWORD ae_cp_compname; - DWORD ae_cp_username; - DWORD ae_cp_netname; - DWORD ae_cp_connid; - DWORD ae_cp_reason; -} -alias AE_CONNSTOP* PAE_CONNSTOP, LPAE_CONNSTOP; - -struct AE_CONNREJ{ - DWORD ae_cr_compname; - DWORD ae_cr_username; - DWORD ae_cr_netname; - DWORD ae_cr_reason; -} -alias AE_CONNREJ* PAE_CONNREJ, LPAE_CONNREJ; - -struct AE_RESACCESS{ - DWORD ae_ra_compname; - DWORD ae_ra_username; - DWORD ae_ra_resname; - DWORD ae_ra_operation; - DWORD ae_ra_returncode; - DWORD ae_ra_restype; - DWORD ae_ra_fileid; -} -alias AE_RESACCESS* PAE_RESACCESS, LPAE_RESACCESS; - -struct AE_RESACCESSREJ{ - DWORD ae_rr_compname; - DWORD ae_rr_username; - DWORD ae_rr_resname; - DWORD ae_rr_operation; -} -alias AE_RESACCESSREJ* PAE_RESACCESSREJ, LPAE_RESACCESSREJ; - -struct AE_CLOSEFILE{ - DWORD ae_cf_compname; - DWORD ae_cf_username; - DWORD ae_cf_resname; - DWORD ae_cf_fileid; - DWORD ae_cf_duration; - DWORD ae_cf_reason; -} -alias AE_CLOSEFILE* PAE_CLOSEFILE, LPAE_CLOSEFILE; - -struct AE_SERVICESTAT{ - DWORD ae_ss_compname; - DWORD ae_ss_username; - DWORD ae_ss_svcname; - DWORD ae_ss_status; - DWORD ae_ss_code; - DWORD ae_ss_text; - DWORD ae_ss_returnval; -} -alias AE_SERVICESTAT* PAE_SERVICESTAT, LPAE_SERVICESTAT; - -struct AE_ACLMOD{ - DWORD ae_am_compname; - DWORD ae_am_username; - DWORD ae_am_resname; - DWORD ae_am_action; - DWORD ae_am_datalen; -} -alias AE_ACLMOD* PAE_ACLMOD, LPAE_ACLMOD; - -struct AE_UASMOD{ - DWORD ae_um_compname; - DWORD ae_um_username; - DWORD ae_um_resname; - DWORD ae_um_rectype; - DWORD ae_um_action; - DWORD ae_um_datalen; -} -alias AE_UASMOD* PAE_UASMOD, LPAE_UASMOD; - -struct AE_NETLOGON{ - DWORD ae_no_compname; - DWORD ae_no_username; - DWORD ae_no_privilege; - DWORD ae_no_authflags; -} -alias AE_NETLOGON* PAE_NETLOGON, LPAE_NETLOGON; - -struct AE_NETLOGOFF{ - DWORD ae_nf_compname; - DWORD ae_nf_username; - DWORD ae_nf_reserved1; - DWORD ae_nf_reserved2; -} -alias AE_NETLOGOFF* PAE_NETLOGOFF, LPAE_NETLOGOFF; - -struct AE_ACCLIM{ - DWORD ae_al_compname; - DWORD ae_al_username; - DWORD ae_al_resname; - DWORD ae_al_limit; -} -alias AE_ACCLIM* PAE_ACCLIM, LPAE_ACCLIM; - -struct AE_LOCKOUT{ - DWORD ae_lk_compname; - DWORD ae_lk_username; - DWORD ae_lk_action; - DWORD ae_lk_bad_pw_count; -} -alias AE_LOCKOUT* PAE_LOCKOUT, LPAE_LOCKOUT; - -struct AE_GENERIC{ - DWORD ae_ge_msgfile; - DWORD ae_ge_msgnum; - DWORD ae_ge_params; - DWORD ae_ge_param1; - DWORD ae_ge_param2; - DWORD ae_ge_param3; - DWORD ae_ge_param4; - DWORD ae_ge_param5; - DWORD ae_ge_param6; - DWORD ae_ge_param7; - DWORD ae_ge_param8; - DWORD ae_ge_param9; -} -alias AE_GENERIC* PAE_GENERIC, LPAE_GENERIC; - -extern (Windows) { -deprecated { -NET_API_STATUS NetAuditClear(LPCWSTR,LPCWSTR,LPCWSTR); -NET_API_STATUS NetAuditRead(LPTSTR,LPTSTR,LPHLOG,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); -NET_API_STATUS NetAuditWrite(DWORD,PBYTE,DWORD,LPTSTR,PBYTE); -} -} - -/+ -/* MinGW: These conflict with struct typedefs, why? */ -const AE_SRVSTATUS=0; -const AE_SESSLOGON=1; -const AE_SESSLOGOFF=2; -const AE_SESSPWERR=3; -const AE_CONNSTART=4; -const AE_CONNSTOP=5; -const AE_CONNREJ=6; -const AE_RESACCESS=7; -const AE_RESACCESSREJ=8; -const AE_CLOSEFILE=9; -const AE_SERVICESTAT=11; -const AE_ACLMOD=12; -const AE_UASMOD=13; -const AE_NETLOGON=14; -const AE_NETLOGOFF=15; -const AE_NETLOGDENIED=16; -const AE_ACCLIMITEXCD=17; -const AE_RESACCESS2=18; -const AE_ACLMODFAIL=19; -const AE_LOCKOUT=20; -const AE_GENERIC_TYPE=21; -const AE_SRVSTART=0; -const AE_SRVPAUSED=1; -const AE_SRVCONT=2; -const AE_SRVSTOP=3; -+/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmaudit.d) + */ +// COMMENT: This file may be deprecated. +module core.sys.windows.lmaudit; + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +const LOGFLAGS_FORWARD = 0; +const LOGFLAGS_BACKWARD = 1; +const LOGFLAGS_SEEK = 2; + +const ACTION_LOCKOUT = 0; +const ACTION_ADMINUNLOCK = 1; + +const AE_GUEST=0; +const AE_USER=1; +const AE_ADMIN=2; +const AE_NORMAL=0; +const AE_USERLIMIT=0; +const AE_GENERAL=0; +const AE_ERROR=1; +const AE_SESSDIS=1; +const AE_BADPW=1; +const AE_AUTODIS=2; +const AE_UNSHARE=2; +const AE_ADMINPRIVREQD=2; +const AE_ADMINDIS=3; +const AE_NOACCESSPERM=3; +const AE_ACCRESTRICT=4; +const AE_NORMAL_CLOSE=0; +const AE_SES_CLOSE=1; +const AE_ADMIN_CLOSE=2; +const AE_LIM_UNKNOWN=0; +const AE_LIM_LOGONHOURS=1; +const AE_LIM_EXPIRED=2; +const AE_LIM_INVAL_WKSTA=3; +const AE_LIM_DISABLED=4; +const AE_LIM_DELETED=5; +const AE_MOD=0; +const AE_DELETE=1; +const AE_ADD=2; + +const AE_UAS_USER = 0; +const AE_UAS_GROUP = 1; +const AE_UAS_MODALS = 2; + +const SVAUD_SERVICE = 1; +const SVAUD_GOODSESSLOGON = 6; +const SVAUD_BADSESSLOGON = 24; +const SVAUD_SESSLOGON = SVAUD_GOODSESSLOGON|SVAUD_BADSESSLOGON; +const SVAUD_GOODNETLOGON = 96; +const SVAUD_BADNETLOGON = 384; +const SVAUD_NETLOGON = SVAUD_GOODNETLOGON|SVAUD_BADNETLOGON; +const SVAUD_LOGON = SVAUD_NETLOGON|SVAUD_SESSLOGON; +const SVAUD_GOODUSE = 0x600; +const SVAUD_BADUSE = 0x1800; +const SVAUD_USE = SVAUD_GOODUSE|SVAUD_BADUSE; +const SVAUD_USERLIST = 8192; +const SVAUD_PERMISSIONS = 16384; +const SVAUD_RESOURCE = 32768; +const SVAUD_LOGONLIM = 65536; + +const AA_AUDIT_ALL=1; +const AA_A_OWNER=4; +const AA_CLOSE=8; +const AA_S_OPEN=16; +const AA_S_WRITE=32; +const AA_S_CREATE=32; +const AA_S_DELETE=64; +const AA_S_ACL=128; +const AA_S_ALL=253; +const AA_F_OPEN=256; +const AA_F_WRITE=512; +const AA_F_CREATE=512; +const AA_F_DELETE=1024; +const AA_F_ACL=2048; +const AA_F_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; +const AA_A_OPEN=2048; +const AA_A_WRITE=4096; +const AA_A_CREATE=8192; +const AA_A_DELETE=16384; +const AA_A_ACL=32768; +const AA_A_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; + +struct AUDIT_ENTRY{ + DWORD ae_len; + DWORD ae_reserved; + DWORD ae_time; + DWORD ae_type; + DWORD ae_data_offset; + DWORD ae_data_size; +} +alias AUDIT_ENTRY* PAUDIT_ENTRY, LPAUDIT_ENTRY; + +struct HLOG{ + DWORD time; + DWORD last_flags; + DWORD offset; + DWORD rec_offset; +} +alias HLOG* PHLOG, LPHLOG; + +struct AE_SRVSTATUS{ + DWORD ae_sv_status; +} +alias AE_SRVSTATUS* PAE_SRVSTATUS, LPAE_SRVSTATUS; + +struct AE_SESSLOGON{ + DWORD ae_so_compname; + DWORD ae_so_username; + DWORD ae_so_privilege; +} +alias AE_SESSLOGON* PAE_SESSLOGON, LPAE_SESSLOGON; + +struct AE_SESSLOGOFF{ + DWORD ae_sf_compname; + DWORD ae_sf_username; + DWORD ae_sf_reason; +} +alias AE_SESSLOGOFF* PAE_SESSLOGOFF, LPAE_SESSLOGOFF; + +struct AE_SESSPWERR{ + DWORD ae_sp_compname; + DWORD ae_sp_username; +} +alias AE_SESSPWERR* PAE_SESSPWERR, LPAE_SESSPWERR; + +struct AE_CONNSTART{ + DWORD ae_ct_compname; + DWORD ae_ct_username; + DWORD ae_ct_netname; + DWORD ae_ct_connid; +} +alias AE_CONNSTART* PAE_CONNSTART, LPAE_CONNSTART; + +struct AE_CONNSTOP{ + DWORD ae_cp_compname; + DWORD ae_cp_username; + DWORD ae_cp_netname; + DWORD ae_cp_connid; + DWORD ae_cp_reason; +} +alias AE_CONNSTOP* PAE_CONNSTOP, LPAE_CONNSTOP; + +struct AE_CONNREJ{ + DWORD ae_cr_compname; + DWORD ae_cr_username; + DWORD ae_cr_netname; + DWORD ae_cr_reason; +} +alias AE_CONNREJ* PAE_CONNREJ, LPAE_CONNREJ; + +struct AE_RESACCESS{ + DWORD ae_ra_compname; + DWORD ae_ra_username; + DWORD ae_ra_resname; + DWORD ae_ra_operation; + DWORD ae_ra_returncode; + DWORD ae_ra_restype; + DWORD ae_ra_fileid; +} +alias AE_RESACCESS* PAE_RESACCESS, LPAE_RESACCESS; + +struct AE_RESACCESSREJ{ + DWORD ae_rr_compname; + DWORD ae_rr_username; + DWORD ae_rr_resname; + DWORD ae_rr_operation; +} +alias AE_RESACCESSREJ* PAE_RESACCESSREJ, LPAE_RESACCESSREJ; + +struct AE_CLOSEFILE{ + DWORD ae_cf_compname; + DWORD ae_cf_username; + DWORD ae_cf_resname; + DWORD ae_cf_fileid; + DWORD ae_cf_duration; + DWORD ae_cf_reason; +} +alias AE_CLOSEFILE* PAE_CLOSEFILE, LPAE_CLOSEFILE; + +struct AE_SERVICESTAT{ + DWORD ae_ss_compname; + DWORD ae_ss_username; + DWORD ae_ss_svcname; + DWORD ae_ss_status; + DWORD ae_ss_code; + DWORD ae_ss_text; + DWORD ae_ss_returnval; +} +alias AE_SERVICESTAT* PAE_SERVICESTAT, LPAE_SERVICESTAT; + +struct AE_ACLMOD{ + DWORD ae_am_compname; + DWORD ae_am_username; + DWORD ae_am_resname; + DWORD ae_am_action; + DWORD ae_am_datalen; +} +alias AE_ACLMOD* PAE_ACLMOD, LPAE_ACLMOD; + +struct AE_UASMOD{ + DWORD ae_um_compname; + DWORD ae_um_username; + DWORD ae_um_resname; + DWORD ae_um_rectype; + DWORD ae_um_action; + DWORD ae_um_datalen; +} +alias AE_UASMOD* PAE_UASMOD, LPAE_UASMOD; + +struct AE_NETLOGON{ + DWORD ae_no_compname; + DWORD ae_no_username; + DWORD ae_no_privilege; + DWORD ae_no_authflags; +} +alias AE_NETLOGON* PAE_NETLOGON, LPAE_NETLOGON; + +struct AE_NETLOGOFF{ + DWORD ae_nf_compname; + DWORD ae_nf_username; + DWORD ae_nf_reserved1; + DWORD ae_nf_reserved2; +} +alias AE_NETLOGOFF* PAE_NETLOGOFF, LPAE_NETLOGOFF; + +struct AE_ACCLIM{ + DWORD ae_al_compname; + DWORD ae_al_username; + DWORD ae_al_resname; + DWORD ae_al_limit; +} +alias AE_ACCLIM* PAE_ACCLIM, LPAE_ACCLIM; + +struct AE_LOCKOUT{ + DWORD ae_lk_compname; + DWORD ae_lk_username; + DWORD ae_lk_action; + DWORD ae_lk_bad_pw_count; +} +alias AE_LOCKOUT* PAE_LOCKOUT, LPAE_LOCKOUT; + +struct AE_GENERIC{ + DWORD ae_ge_msgfile; + DWORD ae_ge_msgnum; + DWORD ae_ge_params; + DWORD ae_ge_param1; + DWORD ae_ge_param2; + DWORD ae_ge_param3; + DWORD ae_ge_param4; + DWORD ae_ge_param5; + DWORD ae_ge_param6; + DWORD ae_ge_param7; + DWORD ae_ge_param8; + DWORD ae_ge_param9; +} +alias AE_GENERIC* PAE_GENERIC, LPAE_GENERIC; + +extern (Windows) { +deprecated { +NET_API_STATUS NetAuditClear(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetAuditRead(LPTSTR,LPTSTR,LPHLOG,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS NetAuditWrite(DWORD,PBYTE,DWORD,LPTSTR,PBYTE); +} +} + +/+ +/* MinGW: These conflict with struct typedefs, why? */ +const AE_SRVSTATUS=0; +const AE_SESSLOGON=1; +const AE_SESSLOGOFF=2; +const AE_SESSPWERR=3; +const AE_CONNSTART=4; +const AE_CONNSTOP=5; +const AE_CONNREJ=6; +const AE_RESACCESS=7; +const AE_RESACCESSREJ=8; +const AE_CLOSEFILE=9; +const AE_SERVICESTAT=11; +const AE_ACLMOD=12; +const AE_UASMOD=13; +const AE_NETLOGON=14; +const AE_NETLOGOFF=15; +const AE_NETLOGDENIED=16; +const AE_ACCLIMITEXCD=17; +const AE_RESACCESS2=18; +const AE_ACLMODFAIL=19; +const AE_LOCKOUT=20; +const AE_GENERIC_TYPE=21; +const AE_SRVSTART=0; +const AE_SRVPAUSED=1; +const AE_SRVCONT=2; +const AE_SRVSTOP=3; ++/ diff --git a/src/core/sys/windows/lmbrowsr.d b/src/core/sys/windows/lmbrowsr.d index a18e4a2856..0d358cee46 100644 --- a/src/core/sys/windows/lmbrowsr.d +++ b/src/core/sys/windows/lmbrowsr.d @@ -1,84 +1,84 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmbrowsr.d) - */ -module core.sys.windows.lmbrowsr; - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -const BROWSER_ROLE_PDC = 1; -const BROWSER_ROLE_BDC = 2; - -struct BROWSER_STATISTICS { - LARGE_INTEGER StatisticsStartTime; - LARGE_INTEGER NumberOfServerAnnouncements; - LARGE_INTEGER NumberOfDomainAnnouncements; - ULONG NumberOfElectionPackets; - ULONG NumberOfMailslotWrites; - ULONG NumberOfGetBrowserServerListRequests; - ULONG NumberOfServerEnumerations; - ULONG NumberOfDomainEnumerations; - ULONG NumberOfOtherEnumerations; - ULONG NumberOfMissedServerAnnouncements; - ULONG NumberOfMissedMailslotDatagrams; - ULONG NumberOfMissedGetBrowserServerListRequests; - ULONG NumberOfFailedServerAnnounceAllocations; - ULONG NumberOfFailedMailslotAllocations; - ULONG NumberOfFailedMailslotReceives; - ULONG NumberOfFailedMailslotWrites; - ULONG NumberOfFailedMailslotOpens; - ULONG NumberOfDuplicateMasterAnnouncements; - LARGE_INTEGER NumberOfIllegalDatagrams; -} -alias BROWSER_STATISTICS* PBROWSER_STATISTICS, LPBROWSER_STATISTICS; - -struct BROWSER_STATISTICS_100 { - LARGE_INTEGER StartTime; - LARGE_INTEGER NumberOfServerAnnouncements; - LARGE_INTEGER NumberOfDomainAnnouncements; - ULONG NumberOfElectionPackets; - ULONG NumberOfMailslotWrites; - ULONG NumberOfGetBrowserServerListRequests; - LARGE_INTEGER NumberOfIllegalDatagrams; -} -alias BROWSER_STATISTICS_100* PBROWSER_STATISTICS_100; - -struct BROWSER_STATISTICS_101 { - LARGE_INTEGER StartTime; - LARGE_INTEGER NumberOfServerAnnouncements; - LARGE_INTEGER NumberOfDomainAnnouncements; - ULONG NumberOfElectionPackets; - ULONG NumberOfMailslotWrites; - ULONG NumberOfGetBrowserServerListRequests; - LARGE_INTEGER NumberOfIllegalDatagrams; - ULONG NumberOfMissedServerAnnouncements; - ULONG NumberOfMissedMailslotDatagrams; - ULONG NumberOfMissedGetBrowserServerListRequests; - ULONG NumberOfFailedServerAnnounceAllocations; - ULONG NumberOfFailedMailslotAllocations; - ULONG NumberOfFailedMailslotReceives; - ULONG NumberOfFailedMailslotWrites; - ULONG NumberOfFailedMailslotOpens; - ULONG NumberOfDuplicateMasterAnnouncements; -} -alias BROWSER_STATISTICS_101* PBROWSER_STATISTICS_101; - -extern (Windows) { - NET_API_STATUS I_BrowserServerEnum(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, - PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, PDWORD); - NET_API_STATUS I_BrowserServerEnumEx(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, - PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR); - NET_API_STATUS I_BrowserQueryEmulatedDomains(LPWSTR, PBYTE*, PDWORD); - NET_API_STATUS I_BrowserQueryOtherDomains(LPCWSTR, PBYTE*, PDWORD, PDWORD); - NET_API_STATUS I_BrowserResetNetlogonState(LPCWSTR); - NET_API_STATUS I_BrowserSetNetlogonState(LPWSTR, LPWSTR, LPWSTR, DWORD); - NET_API_STATUS I_BrowserQueryStatistics(LPCWSTR, LPBROWSER_STATISTICS*); - NET_API_STATUS I_BrowserResetStatistics(LPCWSTR); - WORD I_BrowserServerEnumForXactsrv(LPCWSTR, LPCWSTR, ULONG, USHORT, PVOID, - WORD, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR, PWORD); - NET_API_STATUS I_BrowserDebugTrace(PWCHAR, PCHAR); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmbrowsr.d) + */ +module core.sys.windows.lmbrowsr; + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +const BROWSER_ROLE_PDC = 1; +const BROWSER_ROLE_BDC = 2; + +struct BROWSER_STATISTICS { + LARGE_INTEGER StatisticsStartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + ULONG NumberOfServerEnumerations; + ULONG NumberOfDomainEnumerations; + ULONG NumberOfOtherEnumerations; + ULONG NumberOfMissedServerAnnouncements; + ULONG NumberOfMissedMailslotDatagrams; + ULONG NumberOfMissedGetBrowserServerListRequests; + ULONG NumberOfFailedServerAnnounceAllocations; + ULONG NumberOfFailedMailslotAllocations; + ULONG NumberOfFailedMailslotReceives; + ULONG NumberOfFailedMailslotWrites; + ULONG NumberOfFailedMailslotOpens; + ULONG NumberOfDuplicateMasterAnnouncements; + LARGE_INTEGER NumberOfIllegalDatagrams; +} +alias BROWSER_STATISTICS* PBROWSER_STATISTICS, LPBROWSER_STATISTICS; + +struct BROWSER_STATISTICS_100 { + LARGE_INTEGER StartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + LARGE_INTEGER NumberOfIllegalDatagrams; +} +alias BROWSER_STATISTICS_100* PBROWSER_STATISTICS_100; + +struct BROWSER_STATISTICS_101 { + LARGE_INTEGER StartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + LARGE_INTEGER NumberOfIllegalDatagrams; + ULONG NumberOfMissedServerAnnouncements; + ULONG NumberOfMissedMailslotDatagrams; + ULONG NumberOfMissedGetBrowserServerListRequests; + ULONG NumberOfFailedServerAnnounceAllocations; + ULONG NumberOfFailedMailslotAllocations; + ULONG NumberOfFailedMailslotReceives; + ULONG NumberOfFailedMailslotWrites; + ULONG NumberOfFailedMailslotOpens; + ULONG NumberOfDuplicateMasterAnnouncements; +} +alias BROWSER_STATISTICS_101* PBROWSER_STATISTICS_101; + +extern (Windows) { + NET_API_STATUS I_BrowserServerEnum(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, + PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, PDWORD); + NET_API_STATUS I_BrowserServerEnumEx(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, + PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR); + NET_API_STATUS I_BrowserQueryEmulatedDomains(LPWSTR, PBYTE*, PDWORD); + NET_API_STATUS I_BrowserQueryOtherDomains(LPCWSTR, PBYTE*, PDWORD, PDWORD); + NET_API_STATUS I_BrowserResetNetlogonState(LPCWSTR); + NET_API_STATUS I_BrowserSetNetlogonState(LPWSTR, LPWSTR, LPWSTR, DWORD); + NET_API_STATUS I_BrowserQueryStatistics(LPCWSTR, LPBROWSER_STATISTICS*); + NET_API_STATUS I_BrowserResetStatistics(LPCWSTR); + WORD I_BrowserServerEnumForXactsrv(LPCWSTR, LPCWSTR, ULONG, USHORT, PVOID, + WORD, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR, PWORD); + NET_API_STATUS I_BrowserDebugTrace(PWCHAR, PCHAR); +} diff --git a/src/core/sys/windows/lmchdev.d b/src/core/sys/windows/lmchdev.d index f61ed3dc66..cfe23d0d38 100644 --- a/src/core/sys/windows/lmchdev.d +++ b/src/core/sys/windows/lmchdev.d @@ -1,89 +1,89 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmchdev.d) - */ -module core.sys.windows.lmchdev; - -// COMMENT: This file might be deprecated. - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -const CHARDEVQ_NO_REQUESTS = -1; -const CHARDEV_CLOSE = 0; -const CHARDEVQ_MAX_PRIORITY = 1; -const CHARDEVQ_DEV_PARMNUM = 1; - -const HANDLE_INFO_LEVEL_1 = 1; -const HANDLE_CHARTIME_PARMNUM = 1; -const HANDLE_CHARCOUNT_PARMNUM = 2; - -const CHARDEV_STAT_OPENED = 2; -const CHARDEVQ_PRIORITY_PARMNUM = 2; -const CHARDEVQ_DEVS_PARMNUM = 3; -const CHARDEV_STAT_ERROR = 4; -const CHARDEVQ_NUMUSERS_PARMNUM = 4; -const CHARDEVQ_NUMAHEAD_PARMNUM = 5; -const CHARDEVQ_DEF_PRIORITY = 5; -const CHARDEVQ_PRIORITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_PRIORITY_PARMNUM; -const CHARDEVQ_DEVS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_DEVS_PARMNUM; -const CHARDEVQ_MIN_PRIORITY = 9; - -struct CHARDEV_INFO_0 { - LPWSTR ch0_dev; -} -alias CHARDEV_INFO_0* PCHARDEV_INFO_0, LPCHARDEV_INFO_0; - -struct CHARDEV_INFO_1{ - LPWSTR ch1_dev; - DWORD ch1_status; - LPWSTR ch1_username; - DWORD ch1_time; -} -alias CHARDEV_INFO_1* PCHARDEV_INFO_1, LPCHARDEV_INFO_1; - -struct CHARDEVQ_INFO_0 { - LPWSTR cq0_dev; -} -alias CHARDEVQ_INFO_0* PCHARDEVQ_INFO_0, LPCHARDEVQ_INFO_0; - -struct CHARDEVQ_INFO_1{ - LPWSTR cq1_dev; - DWORD cq1_priority; - LPWSTR cq1_devs; - DWORD cq1_numusers; - DWORD cq1_numahead; -} -alias CHARDEVQ_INFO_1* PCHARDEVQ_INFO_1, LPCHARDEVQ_INFO_1; - -struct CHARDEVQ_INFO_1002 { - DWORD cq1002_priority; -} -alias CHARDEVQ_INFO_1002* PCHARDEVQ_INFO_1002, LPCHARDEVQ_INFO_1002; - -struct CHARDEVQ_INFO_1003 { - LPWSTR cq1003_devs; -} -alias CHARDEVQ_INFO_1003* PCHARDEVQ_INFO_1003, LPCHARDEVQ_INFO_1003; - -struct HANDLE_INFO_1{ - DWORD hdli1_chartime; - DWORD hdli1_charcount; -} -alias HANDLE_INFO_1* PHANDLE_INFO_1, LPHANDLE_INFO_1; - -extern (Windows) { - NET_API_STATUS NetCharDevEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); - NET_API_STATUS NetCharDevGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); - NET_API_STATUS NetCharDevControl(LPCWSTR, LPCWSTR, DWORD); - NET_API_STATUS NetCharDevQEnum(LPCWSTR, LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); - NET_API_STATUS NetCharDevQGetInfo(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, PBYTE*); - NET_API_STATUS NetCharDevQSetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE, PDWORD); - NET_API_STATUS NetCharDevQPurge(LPCWSTR, LPCWSTR); - NET_API_STATUS NetCharDevQPurgeSelf(LPCWSTR, LPCWSTR, LPCWSTR); - NET_API_STATUS NetHandleGetInfo(HANDLE, DWORD, PBYTE*); - NET_API_STATUS NetHandleSetInfo(HANDLE, DWORD, PBYTE, DWORD, PDWORD); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmchdev.d) + */ +module core.sys.windows.lmchdev; + +// COMMENT: This file might be deprecated. + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +const CHARDEVQ_NO_REQUESTS = -1; +const CHARDEV_CLOSE = 0; +const CHARDEVQ_MAX_PRIORITY = 1; +const CHARDEVQ_DEV_PARMNUM = 1; + +const HANDLE_INFO_LEVEL_1 = 1; +const HANDLE_CHARTIME_PARMNUM = 1; +const HANDLE_CHARCOUNT_PARMNUM = 2; + +const CHARDEV_STAT_OPENED = 2; +const CHARDEVQ_PRIORITY_PARMNUM = 2; +const CHARDEVQ_DEVS_PARMNUM = 3; +const CHARDEV_STAT_ERROR = 4; +const CHARDEVQ_NUMUSERS_PARMNUM = 4; +const CHARDEVQ_NUMAHEAD_PARMNUM = 5; +const CHARDEVQ_DEF_PRIORITY = 5; +const CHARDEVQ_PRIORITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_PRIORITY_PARMNUM; +const CHARDEVQ_DEVS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_DEVS_PARMNUM; +const CHARDEVQ_MIN_PRIORITY = 9; + +struct CHARDEV_INFO_0 { + LPWSTR ch0_dev; +} +alias CHARDEV_INFO_0* PCHARDEV_INFO_0, LPCHARDEV_INFO_0; + +struct CHARDEV_INFO_1{ + LPWSTR ch1_dev; + DWORD ch1_status; + LPWSTR ch1_username; + DWORD ch1_time; +} +alias CHARDEV_INFO_1* PCHARDEV_INFO_1, LPCHARDEV_INFO_1; + +struct CHARDEVQ_INFO_0 { + LPWSTR cq0_dev; +} +alias CHARDEVQ_INFO_0* PCHARDEVQ_INFO_0, LPCHARDEVQ_INFO_0; + +struct CHARDEVQ_INFO_1{ + LPWSTR cq1_dev; + DWORD cq1_priority; + LPWSTR cq1_devs; + DWORD cq1_numusers; + DWORD cq1_numahead; +} +alias CHARDEVQ_INFO_1* PCHARDEVQ_INFO_1, LPCHARDEVQ_INFO_1; + +struct CHARDEVQ_INFO_1002 { + DWORD cq1002_priority; +} +alias CHARDEVQ_INFO_1002* PCHARDEVQ_INFO_1002, LPCHARDEVQ_INFO_1002; + +struct CHARDEVQ_INFO_1003 { + LPWSTR cq1003_devs; +} +alias CHARDEVQ_INFO_1003* PCHARDEVQ_INFO_1003, LPCHARDEVQ_INFO_1003; + +struct HANDLE_INFO_1{ + DWORD hdli1_chartime; + DWORD hdli1_charcount; +} +alias HANDLE_INFO_1* PHANDLE_INFO_1, LPHANDLE_INFO_1; + +extern (Windows) { + NET_API_STATUS NetCharDevEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); + NET_API_STATUS NetCharDevGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetCharDevControl(LPCWSTR, LPCWSTR, DWORD); + NET_API_STATUS NetCharDevQEnum(LPCWSTR, LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); + NET_API_STATUS NetCharDevQGetInfo(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetCharDevQSetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE, PDWORD); + NET_API_STATUS NetCharDevQPurge(LPCWSTR, LPCWSTR); + NET_API_STATUS NetCharDevQPurgeSelf(LPCWSTR, LPCWSTR, LPCWSTR); + NET_API_STATUS NetHandleGetInfo(HANDLE, DWORD, PBYTE*); + NET_API_STATUS NetHandleSetInfo(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +} diff --git a/src/core/sys/windows/lmconfig.d b/src/core/sys/windows/lmconfig.d index e6d280839a..02d901bc27 100644 --- a/src/core/sys/windows/lmconfig.d +++ b/src/core/sys/windows/lmconfig.d @@ -1,29 +1,29 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmconfig.d) - */ -module core.sys.windows.lmconfig; - -// All functions in this file are deprecated! - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -deprecated { - struct CONFIG_INFO_0 { - LPWSTR cfgi0_key; - LPWSTR cfgi0_data; - } - - alias CONFIG_INFO_0* PCONFIG_INFO_0, LPCONFIG_INFO_0; - - extern (Windows) { - NET_API_STATUS NetConfigGet(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE*); - NET_API_STATUS NetConfigGetAll(LPCWSTR, LPCWSTR, PBYTE*); - NET_API_STATUS NetConfigSet(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, - PBYTE, DWORD); - } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmconfig.d) + */ +module core.sys.windows.lmconfig; + +// All functions in this file are deprecated! + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +deprecated { + struct CONFIG_INFO_0 { + LPWSTR cfgi0_key; + LPWSTR cfgi0_data; + } + + alias CONFIG_INFO_0* PCONFIG_INFO_0, LPCONFIG_INFO_0; + + extern (Windows) { + NET_API_STATUS NetConfigGet(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE*); + NET_API_STATUS NetConfigGetAll(LPCWSTR, LPCWSTR, PBYTE*); + NET_API_STATUS NetConfigSet(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, + PBYTE, DWORD); + } +} diff --git a/src/core/sys/windows/lmcons.d b/src/core/sys/windows/lmcons.d index 5295e801ba..e4d16f00eb 100644 --- a/src/core/sys/windows/lmcons.d +++ b/src/core/sys/windows/lmcons.d @@ -1,85 +1,85 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmcons.d) - */ -module core.sys.windows.lmcons; - -private import core.sys.windows.windef; -private import core.sys.windows.lmerr; // for NERR_BASE - -const TCHAR[] - MESSAGE_FILENAME = "NETMSG", - OS2MSG_FILENAME = "BASE", - HELP_MSG_FILENAME = "NETH"; - -alias DWORD NET_API_STATUS, API_RET_TYPE; - -const MIN_LANMAN_MESSAGE_ID = NERR_BASE; -const MAX_LANMAN_MESSAGE_ID = 5799; - -const CNLEN = 15; /* also in nddeapi.h */ -const UNCLEN = CNLEN + 2; - -const DNLEN = 15; -const LM20_CNLEN = 15; -const LM20_DNLEN = 15; -const LM20_SNLEN = 15; -const LM20_STXTLEN = 63; -const LM20_UNCLEN = LM20_CNLEN + 2; -const LM20_NNLEN = 12; -const LM20_RMLEN = LM20_UNCLEN + 1 + LM20_NNLEN; -const NNLEN = 80; -const RMLEN = UNCLEN + 1 + NNLEN; -const SNLEN = 80; -const STXTLEN = 256; -const PATHLEN = 256; -const LM20_PATHLEN = 256; -const DEVLEN = 80; -const LM20_DEVLEN = 8; -const EVLEN = 16; -const UNLEN = 256; -const LM20_UNLEN = 20; -const GNLEN = UNLEN; -const LM20_GNLEN = LM20_UNLEN; -const PWLEN = 256; -const LM20_PWLEN = 14; -const SHPWLEN = 8; -const CLTYPE_LEN = 12; -const QNLEN = NNLEN; -const LM20_QNLEN = LM20_NNLEN; - -const MAXCOMMENTSZ = 256; -const LM20_MAXCOMMENTSZ = 48; -const ALERTSZ = 128; -const MAXDEVENTRIES = 32;// (sizeof(int)*8); -const NETBIOS_NAME_LEN = 16; -const DWORD MAX_PREFERRED_LENGTH = -1; -const CRYPT_KEY_LEN = 7; -const CRYPT_TXT_LEN = 8; -const ENCRYPTED_PWLEN = 16; -const SESSION_PWLEN = 24; -const SESSION_CRYPT_KLEN = 21; - -const PARMNUM_ALL = 0; -const DWORD PARM_ERROR_UNKNOWN = -1; -const PARM_ERROR_NONE = 0; -const PARMNUM_BASE_INFOLEVEL = 1000; - -const PLATFORM_ID_DOS = 300; -const PLATFORM_ID_OS2 = 400; -const PLATFORM_ID_NT = 500; -const PLATFORM_ID_OSF = 600; -const PLATFORM_ID_VMS = 700; - -// this is a new typedef in W2K, but it should be harmless for earlier Windows versions. -version (Unicode) { - alias LPWSTR LMSTR; - alias LPCWSTR LMCSTR; -} else { - alias LPSTR LMSTR; - alias LPCSTR LMCSTR; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmcons.d) + */ +module core.sys.windows.lmcons; + +private import core.sys.windows.windef; +private import core.sys.windows.lmerr; // for NERR_BASE + +const TCHAR[] + MESSAGE_FILENAME = "NETMSG", + OS2MSG_FILENAME = "BASE", + HELP_MSG_FILENAME = "NETH"; + +alias DWORD NET_API_STATUS, API_RET_TYPE; + +const MIN_LANMAN_MESSAGE_ID = NERR_BASE; +const MAX_LANMAN_MESSAGE_ID = 5799; + +const CNLEN = 15; /* also in nddeapi.h */ +const UNCLEN = CNLEN + 2; + +const DNLEN = 15; +const LM20_CNLEN = 15; +const LM20_DNLEN = 15; +const LM20_SNLEN = 15; +const LM20_STXTLEN = 63; +const LM20_UNCLEN = LM20_CNLEN + 2; +const LM20_NNLEN = 12; +const LM20_RMLEN = LM20_UNCLEN + 1 + LM20_NNLEN; +const NNLEN = 80; +const RMLEN = UNCLEN + 1 + NNLEN; +const SNLEN = 80; +const STXTLEN = 256; +const PATHLEN = 256; +const LM20_PATHLEN = 256; +const DEVLEN = 80; +const LM20_DEVLEN = 8; +const EVLEN = 16; +const UNLEN = 256; +const LM20_UNLEN = 20; +const GNLEN = UNLEN; +const LM20_GNLEN = LM20_UNLEN; +const PWLEN = 256; +const LM20_PWLEN = 14; +const SHPWLEN = 8; +const CLTYPE_LEN = 12; +const QNLEN = NNLEN; +const LM20_QNLEN = LM20_NNLEN; + +const MAXCOMMENTSZ = 256; +const LM20_MAXCOMMENTSZ = 48; +const ALERTSZ = 128; +const MAXDEVENTRIES = 32;// (sizeof(int)*8); +const NETBIOS_NAME_LEN = 16; +const DWORD MAX_PREFERRED_LENGTH = -1; +const CRYPT_KEY_LEN = 7; +const CRYPT_TXT_LEN = 8; +const ENCRYPTED_PWLEN = 16; +const SESSION_PWLEN = 24; +const SESSION_CRYPT_KLEN = 21; + +const PARMNUM_ALL = 0; +const DWORD PARM_ERROR_UNKNOWN = -1; +const PARM_ERROR_NONE = 0; +const PARMNUM_BASE_INFOLEVEL = 1000; + +const PLATFORM_ID_DOS = 300; +const PLATFORM_ID_OS2 = 400; +const PLATFORM_ID_NT = 500; +const PLATFORM_ID_OSF = 600; +const PLATFORM_ID_VMS = 700; + +// this is a new typedef in W2K, but it should be harmless for earlier Windows versions. +version (Unicode) { + alias LPWSTR LMSTR; + alias LPCWSTR LMCSTR; +} else { + alias LPSTR LMSTR; + alias LPCSTR LMCSTR; +} diff --git a/src/core/sys/windows/lmerr.d b/src/core/sys/windows/lmerr.d index bc62ade434..6ccd1f748e 100644 --- a/src/core/sys/windows/lmerr.d +++ b/src/core/sys/windows/lmerr.d @@ -1,312 +1,312 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmerr.d) - */ -module core.sys.windows.lmerr; - -import core.sys.windows.winerror; - -enum { - NERR_Success = 0, - NERR_BASE = 2100, - NERR_NetNotStarted = NERR_BASE + 2, - NERR_UnknownServer, - NERR_ShareMem, - NERR_NoNetworkResource, - NERR_RemoteOnly, - NERR_DevNotRedirected, - NERR_ServerNotStarted = NERR_BASE + 14, - NERR_ItemNotFound, - NERR_UnknownDevDir, - NERR_RedirectedPath, - NERR_DuplicateShare, - NERR_NoRoom, - NERR_TooManyItems = NERR_BASE + 21, - NERR_InvalidMaxUsers, - NERR_BufTooSmall, - NERR_RemoteErr = NERR_BASE + 27, - NERR_LanmanIniError = NERR_BASE + 31, - NERR_NetworkError = NERR_BASE + 36, - NERR_WkstaInconsistentState, - NERR_WkstaNotStarted, - NERR_BrowserNotStarted, - NERR_InternalError, - NERR_BadTransactConfig, - NERR_InvalidAPI, - NERR_BadEventName, - NERR_DupNameReboot, - NERR_CfgCompNotFound = NERR_BASE + 46, - NERR_CfgParamNotFound, - NERR_LineTooLong = NERR_BASE + 49, - NERR_QNotFound, - NERR_JobNotFound, - NERR_DestNotFound, - NERR_DestExists, - NERR_QExists, - NERR_QNoRoom, - NERR_JobNoRoom, - NERR_DestNoRoom, - NERR_DestIdle, - NERR_DestInvalidOp, - NERR_ProcNoRespond, - NERR_SpoolerNotLoaded, - NERR_DestInvalidState, - NERR_QInvalidState, - NERR_JobInvalidState, - NERR_SpoolNoMemory, - NERR_DriverNotFound, - NERR_DataTypeInvalid, - NERR_ProcNotFound, - NERR_ServiceTableLocked = NERR_BASE + 80, - NERR_ServiceTableFull, - NERR_ServiceInstalled, - NERR_ServiceEntryLocked, - NERR_ServiceNotInstalled, - NERR_BadServiceName, - NERR_ServiceCtlTimeout, - NERR_ServiceCtlBusy, - NERR_BadServiceProgName, - NERR_ServiceNotCtrl, - NERR_ServiceKillProc, - NERR_ServiceCtlNotValid, - NERR_NotInDispatchTbl, - NERR_BadControlRecv, - NERR_ServiceNotStarting, - NERR_AlreadyLoggedOn = NERR_BASE + 100, - NERR_NotLoggedOn, - NERR_BadUsername, - NERR_BadPassword, - NERR_UnableToAddName_W, - NERR_UnableToAddName_F, - NERR_UnableToDelName_W, - NERR_UnableToDelName_F, - NERR_LogonsPaused = NERR_BASE + 109, - NERR_LogonServerConflict, - NERR_LogonNoUserPath, - NERR_LogonScriptError, - NERR_StandaloneLogon = NERR_BASE + 114, - NERR_LogonServerNotFound, - NERR_LogonDomainExists, - NERR_NonValidatedLogon, - NERR_ACFNotFound = NERR_BASE + 119, - NERR_GroupNotFound, - NERR_UserNotFound, - NERR_ResourceNotFound, - NERR_GroupExists, - NERR_UserExists, - NERR_ResourceExists, - NERR_NotPrimary, - NERR_ACFNotLoaded, - NERR_ACFNoRoom, - NERR_ACFFileIOFail, - NERR_ACFTooManyLists, - NERR_UserLogon, - NERR_ACFNoParent, - NERR_CanNotGrowSegment, - NERR_SpeGroupOp, - NERR_NotInCache, - NERR_UserInGroup, - NERR_UserNotInGroup, - NERR_AccountUndefined, - NERR_AccountExpired, - NERR_InvalidWorkstation, - NERR_InvalidLogonHours, - NERR_PasswordExpired, - NERR_PasswordCantChange, - NERR_PasswordHistConflict, - NERR_PasswordTooShort, - NERR_PasswordTooRecent, - NERR_InvalidDatabase, - NERR_DatabaseUpToDate, - NERR_SyncRequired, - NERR_UseNotFound, - NERR_BadAsgType, - NERR_DeviceIsShared, - NERR_NoComputerName = NERR_BASE + 170, - NERR_MsgAlreadyStarted, - NERR_MsgInitFailed, - NERR_NameNotFound, - NERR_AlreadyForwarded, - NERR_AddForwarded, - NERR_AlreadyExists, - NERR_TooManyNames, - NERR_DelComputerName, - NERR_LocalForward, - NERR_GrpMsgProcessor, - NERR_PausedRemote, - NERR_BadReceive, - NERR_NameInUse, - NERR_MsgNotStarted, - NERR_NotLocalName, - NERR_NoForwardName, - NERR_RemoteFull, - NERR_NameNotForwarded, - NERR_TruncatedBroadcast, - NERR_InvalidDevice = NERR_BASE + 194, - NERR_WriteFault, - NERR_DuplicateName = NERR_BASE + 197, - NERR_DeleteLater, - NERR_IncompleteDel, - NERR_MultipleNets, - NERR_NetNameNotFound = NERR_BASE + 210, - NERR_DeviceNotShared, - NERR_ClientNameNotFound, - NERR_FileIdNotFound = NERR_BASE + 214, - NERR_ExecFailure, - NERR_TmpFile, - NERR_TooMuchData, - NERR_DeviceShareConflict, - NERR_BrowserTableIncomplete, - NERR_NotLocalDomain, - NERR_DevInvalidOpCode = NERR_BASE + 231, - NERR_DevNotFound, - NERR_DevNotOpen, - NERR_BadQueueDevString, - NERR_BadQueuePriority, - NERR_NoCommDevs = NERR_BASE + 237, - NERR_QueueNotFound, - NERR_BadDevString = NERR_BASE + 240, - NERR_BadDev, - NERR_InUseBySpooler, - NERR_CommDevInUse, - NERR_InvalidComputer = NERR_BASE + 251, - NERR_MaxLenExceeded = NERR_BASE + 254, - NERR_BadComponent = NERR_BASE + 256, - NERR_CantType, - NERR_TooManyEntries = NERR_BASE + 262, - NERR_ProfileFileTooBig = NERR_BASE + 270, - NERR_ProfileOffset, - NERR_ProfileCleanup, - NERR_ProfileUnknownCmd, - NERR_ProfileLoadErr, - NERR_ProfileSaveErr, - NERR_LogOverflow = NERR_BASE + 277, - NERR_LogFileChanged, - NERR_LogFileCorrupt, - NERR_SourceIsDir, - NERR_BadSource, - NERR_BadDest, - NERR_DifferentServers, - NERR_RunSrvPaused = NERR_BASE + 285, - NERR_ErrCommRunSrv = NERR_BASE + 289, - NERR_ErrorExecingGhost = NERR_BASE + 291, - NERR_ShareNotFound, - NERR_InvalidLana = NERR_BASE + 300, - NERR_OpenFiles, - NERR_ActiveConns, - NERR_BadPasswordCore, - NERR_DevInUse, - NERR_LocalDrive, - NERR_AlertExists = NERR_BASE + 330, - NERR_TooManyAlerts, - NERR_NoSuchAlert, - NERR_BadRecipient, - NERR_AcctLimitExceeded, - NERR_InvalidLogSeek = NERR_BASE + 340, - NERR_BadUasConfig = NERR_BASE + 350, - NERR_InvalidUASOp, - NERR_LastAdmin, - NERR_DCNotFound, - NERR_LogonTrackingError, - NERR_NetlogonNotStarted, - NERR_CanNotGrowUASFile, - NERR_TimeDiffAtDC, - NERR_PasswordMismatch, - NERR_NoSuchServer = NERR_BASE + 360, - NERR_NoSuchSession, - NERR_NoSuchConnection, - NERR_TooManyServers, - NERR_TooManySessions, - NERR_TooManyConnections, - NERR_TooManyFiles, - NERR_NoAlternateServers, - NERR_TryDownLevel = NERR_BASE + 370, - NERR_UPSDriverNotStarted = NERR_BASE + 380, - NERR_UPSInvalidConfig, - NERR_UPSInvalidCommPort, - NERR_UPSSignalAsserted, - NERR_UPSShutdownFailed, - NERR_BadDosRetCode = NERR_BASE + 400, - NERR_ProgNeedsExtraMem, - NERR_BadDosFunction, - NERR_RemoteBootFailed, - NERR_BadFileCheckSum, - NERR_NoRplBootSystem, - NERR_RplLoadrNetBiosErr, - NERR_RplLoadrDiskErr, - NERR_ImageParamErr, - NERR_TooManyImageParams, - NERR_NonDosFloppyUsed, - NERR_RplBootRestart, - NERR_RplSrvrCallFailed, - NERR_CantConnectRplSrvr, - NERR_CantOpenImageFile, - NERR_CallingRplSrvr, - NERR_StartingRplBoot, - NERR_RplBootServiceTerm, - NERR_RplBootStartFailed, - NERR_RPL_CONNECTED, - NERR_BrowserConfiguredToNotRun = NERR_BASE + 450, - NERR_RplNoAdaptersStarted = NERR_BASE + 510, - NERR_RplBadRegistry, - NERR_RplBadDatabase, - NERR_RplRplfilesShare, - NERR_RplNotRplServer, - NERR_RplCannotEnum, - NERR_RplWkstaInfoCorrupted, - NERR_RplWkstaNotFound, - NERR_RplWkstaNameUnavailable, - NERR_RplProfileInfoCorrupted, - NERR_RplProfileNotFound, - NERR_RplProfileNameUnavailable, - NERR_RplProfileNotEmpty, - NERR_RplConfigInfoCorrupted, - NERR_RplConfigNotFound, - NERR_RplAdapterInfoCorrupted, - NERR_RplInternal, - NERR_RplVendorInfoCorrupted, - NERR_RplBootInfoCorrupted, - NERR_RplWkstaNeedsUserAcct, - NERR_RplNeedsRPLUSERAcct, - NERR_RplBootNotFound, - NERR_RplIncompatibleProfile, - NERR_RplAdapterNameUnavailable, - NERR_RplConfigNotEmpty, - NERR_RplBootInUse, - NERR_RplBackupDatabase, - NERR_RplAdapterNotFound, - NERR_RplVendorNotFound, - NERR_RplVendorNameUnavailable, - NERR_RplBootNameUnavailable, - NERR_RplConfigNameUnavailable, - NERR_DfsInternalCorruption = NERR_BASE + 560, - NERR_DfsVolumeDataCorrupt, - NERR_DfsNoSuchVolume, - NERR_DfsVolumeAlreadyExists, - NERR_DfsAlreadyShared, - NERR_DfsNoSuchShare, - NERR_DfsNotALeafVolume, - NERR_DfsLeafVolume, - NERR_DfsVolumeHasMultipleServers, - NERR_DfsCantCreateJunctionPoint, - NERR_DfsServerNotDfsAware, - NERR_DfsBadRenamePath, - NERR_DfsVolumeIsOffline, - NERR_DfsNoSuchServer, - NERR_DfsCyclicalName, - NERR_DfsNotSupportedInServerDfs, - NERR_DfsDuplicateService, - NERR_DfsCantRemoveLastServerShare, - NERR_DfsVolumeIsInterDfs, - NERR_DfsInconsistent, - NERR_DfsServerUpgraded, - NERR_DfsDataIsIdentical, - NERR_DfsCantRemoveDfsRoot, - NERR_DfsChildOrParentInDfs, - NERR_DfsInternalError = NERR_BASE + 590, - MAX_NERR = NERR_BASE + 899 -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmerr.d) + */ +module core.sys.windows.lmerr; + +import core.sys.windows.winerror; + +enum { + NERR_Success = 0, + NERR_BASE = 2100, + NERR_NetNotStarted = NERR_BASE + 2, + NERR_UnknownServer, + NERR_ShareMem, + NERR_NoNetworkResource, + NERR_RemoteOnly, + NERR_DevNotRedirected, + NERR_ServerNotStarted = NERR_BASE + 14, + NERR_ItemNotFound, + NERR_UnknownDevDir, + NERR_RedirectedPath, + NERR_DuplicateShare, + NERR_NoRoom, + NERR_TooManyItems = NERR_BASE + 21, + NERR_InvalidMaxUsers, + NERR_BufTooSmall, + NERR_RemoteErr = NERR_BASE + 27, + NERR_LanmanIniError = NERR_BASE + 31, + NERR_NetworkError = NERR_BASE + 36, + NERR_WkstaInconsistentState, + NERR_WkstaNotStarted, + NERR_BrowserNotStarted, + NERR_InternalError, + NERR_BadTransactConfig, + NERR_InvalidAPI, + NERR_BadEventName, + NERR_DupNameReboot, + NERR_CfgCompNotFound = NERR_BASE + 46, + NERR_CfgParamNotFound, + NERR_LineTooLong = NERR_BASE + 49, + NERR_QNotFound, + NERR_JobNotFound, + NERR_DestNotFound, + NERR_DestExists, + NERR_QExists, + NERR_QNoRoom, + NERR_JobNoRoom, + NERR_DestNoRoom, + NERR_DestIdle, + NERR_DestInvalidOp, + NERR_ProcNoRespond, + NERR_SpoolerNotLoaded, + NERR_DestInvalidState, + NERR_QInvalidState, + NERR_JobInvalidState, + NERR_SpoolNoMemory, + NERR_DriverNotFound, + NERR_DataTypeInvalid, + NERR_ProcNotFound, + NERR_ServiceTableLocked = NERR_BASE + 80, + NERR_ServiceTableFull, + NERR_ServiceInstalled, + NERR_ServiceEntryLocked, + NERR_ServiceNotInstalled, + NERR_BadServiceName, + NERR_ServiceCtlTimeout, + NERR_ServiceCtlBusy, + NERR_BadServiceProgName, + NERR_ServiceNotCtrl, + NERR_ServiceKillProc, + NERR_ServiceCtlNotValid, + NERR_NotInDispatchTbl, + NERR_BadControlRecv, + NERR_ServiceNotStarting, + NERR_AlreadyLoggedOn = NERR_BASE + 100, + NERR_NotLoggedOn, + NERR_BadUsername, + NERR_BadPassword, + NERR_UnableToAddName_W, + NERR_UnableToAddName_F, + NERR_UnableToDelName_W, + NERR_UnableToDelName_F, + NERR_LogonsPaused = NERR_BASE + 109, + NERR_LogonServerConflict, + NERR_LogonNoUserPath, + NERR_LogonScriptError, + NERR_StandaloneLogon = NERR_BASE + 114, + NERR_LogonServerNotFound, + NERR_LogonDomainExists, + NERR_NonValidatedLogon, + NERR_ACFNotFound = NERR_BASE + 119, + NERR_GroupNotFound, + NERR_UserNotFound, + NERR_ResourceNotFound, + NERR_GroupExists, + NERR_UserExists, + NERR_ResourceExists, + NERR_NotPrimary, + NERR_ACFNotLoaded, + NERR_ACFNoRoom, + NERR_ACFFileIOFail, + NERR_ACFTooManyLists, + NERR_UserLogon, + NERR_ACFNoParent, + NERR_CanNotGrowSegment, + NERR_SpeGroupOp, + NERR_NotInCache, + NERR_UserInGroup, + NERR_UserNotInGroup, + NERR_AccountUndefined, + NERR_AccountExpired, + NERR_InvalidWorkstation, + NERR_InvalidLogonHours, + NERR_PasswordExpired, + NERR_PasswordCantChange, + NERR_PasswordHistConflict, + NERR_PasswordTooShort, + NERR_PasswordTooRecent, + NERR_InvalidDatabase, + NERR_DatabaseUpToDate, + NERR_SyncRequired, + NERR_UseNotFound, + NERR_BadAsgType, + NERR_DeviceIsShared, + NERR_NoComputerName = NERR_BASE + 170, + NERR_MsgAlreadyStarted, + NERR_MsgInitFailed, + NERR_NameNotFound, + NERR_AlreadyForwarded, + NERR_AddForwarded, + NERR_AlreadyExists, + NERR_TooManyNames, + NERR_DelComputerName, + NERR_LocalForward, + NERR_GrpMsgProcessor, + NERR_PausedRemote, + NERR_BadReceive, + NERR_NameInUse, + NERR_MsgNotStarted, + NERR_NotLocalName, + NERR_NoForwardName, + NERR_RemoteFull, + NERR_NameNotForwarded, + NERR_TruncatedBroadcast, + NERR_InvalidDevice = NERR_BASE + 194, + NERR_WriteFault, + NERR_DuplicateName = NERR_BASE + 197, + NERR_DeleteLater, + NERR_IncompleteDel, + NERR_MultipleNets, + NERR_NetNameNotFound = NERR_BASE + 210, + NERR_DeviceNotShared, + NERR_ClientNameNotFound, + NERR_FileIdNotFound = NERR_BASE + 214, + NERR_ExecFailure, + NERR_TmpFile, + NERR_TooMuchData, + NERR_DeviceShareConflict, + NERR_BrowserTableIncomplete, + NERR_NotLocalDomain, + NERR_DevInvalidOpCode = NERR_BASE + 231, + NERR_DevNotFound, + NERR_DevNotOpen, + NERR_BadQueueDevString, + NERR_BadQueuePriority, + NERR_NoCommDevs = NERR_BASE + 237, + NERR_QueueNotFound, + NERR_BadDevString = NERR_BASE + 240, + NERR_BadDev, + NERR_InUseBySpooler, + NERR_CommDevInUse, + NERR_InvalidComputer = NERR_BASE + 251, + NERR_MaxLenExceeded = NERR_BASE + 254, + NERR_BadComponent = NERR_BASE + 256, + NERR_CantType, + NERR_TooManyEntries = NERR_BASE + 262, + NERR_ProfileFileTooBig = NERR_BASE + 270, + NERR_ProfileOffset, + NERR_ProfileCleanup, + NERR_ProfileUnknownCmd, + NERR_ProfileLoadErr, + NERR_ProfileSaveErr, + NERR_LogOverflow = NERR_BASE + 277, + NERR_LogFileChanged, + NERR_LogFileCorrupt, + NERR_SourceIsDir, + NERR_BadSource, + NERR_BadDest, + NERR_DifferentServers, + NERR_RunSrvPaused = NERR_BASE + 285, + NERR_ErrCommRunSrv = NERR_BASE + 289, + NERR_ErrorExecingGhost = NERR_BASE + 291, + NERR_ShareNotFound, + NERR_InvalidLana = NERR_BASE + 300, + NERR_OpenFiles, + NERR_ActiveConns, + NERR_BadPasswordCore, + NERR_DevInUse, + NERR_LocalDrive, + NERR_AlertExists = NERR_BASE + 330, + NERR_TooManyAlerts, + NERR_NoSuchAlert, + NERR_BadRecipient, + NERR_AcctLimitExceeded, + NERR_InvalidLogSeek = NERR_BASE + 340, + NERR_BadUasConfig = NERR_BASE + 350, + NERR_InvalidUASOp, + NERR_LastAdmin, + NERR_DCNotFound, + NERR_LogonTrackingError, + NERR_NetlogonNotStarted, + NERR_CanNotGrowUASFile, + NERR_TimeDiffAtDC, + NERR_PasswordMismatch, + NERR_NoSuchServer = NERR_BASE + 360, + NERR_NoSuchSession, + NERR_NoSuchConnection, + NERR_TooManyServers, + NERR_TooManySessions, + NERR_TooManyConnections, + NERR_TooManyFiles, + NERR_NoAlternateServers, + NERR_TryDownLevel = NERR_BASE + 370, + NERR_UPSDriverNotStarted = NERR_BASE + 380, + NERR_UPSInvalidConfig, + NERR_UPSInvalidCommPort, + NERR_UPSSignalAsserted, + NERR_UPSShutdownFailed, + NERR_BadDosRetCode = NERR_BASE + 400, + NERR_ProgNeedsExtraMem, + NERR_BadDosFunction, + NERR_RemoteBootFailed, + NERR_BadFileCheckSum, + NERR_NoRplBootSystem, + NERR_RplLoadrNetBiosErr, + NERR_RplLoadrDiskErr, + NERR_ImageParamErr, + NERR_TooManyImageParams, + NERR_NonDosFloppyUsed, + NERR_RplBootRestart, + NERR_RplSrvrCallFailed, + NERR_CantConnectRplSrvr, + NERR_CantOpenImageFile, + NERR_CallingRplSrvr, + NERR_StartingRplBoot, + NERR_RplBootServiceTerm, + NERR_RplBootStartFailed, + NERR_RPL_CONNECTED, + NERR_BrowserConfiguredToNotRun = NERR_BASE + 450, + NERR_RplNoAdaptersStarted = NERR_BASE + 510, + NERR_RplBadRegistry, + NERR_RplBadDatabase, + NERR_RplRplfilesShare, + NERR_RplNotRplServer, + NERR_RplCannotEnum, + NERR_RplWkstaInfoCorrupted, + NERR_RplWkstaNotFound, + NERR_RplWkstaNameUnavailable, + NERR_RplProfileInfoCorrupted, + NERR_RplProfileNotFound, + NERR_RplProfileNameUnavailable, + NERR_RplProfileNotEmpty, + NERR_RplConfigInfoCorrupted, + NERR_RplConfigNotFound, + NERR_RplAdapterInfoCorrupted, + NERR_RplInternal, + NERR_RplVendorInfoCorrupted, + NERR_RplBootInfoCorrupted, + NERR_RplWkstaNeedsUserAcct, + NERR_RplNeedsRPLUSERAcct, + NERR_RplBootNotFound, + NERR_RplIncompatibleProfile, + NERR_RplAdapterNameUnavailable, + NERR_RplConfigNotEmpty, + NERR_RplBootInUse, + NERR_RplBackupDatabase, + NERR_RplAdapterNotFound, + NERR_RplVendorNotFound, + NERR_RplVendorNameUnavailable, + NERR_RplBootNameUnavailable, + NERR_RplConfigNameUnavailable, + NERR_DfsInternalCorruption = NERR_BASE + 560, + NERR_DfsVolumeDataCorrupt, + NERR_DfsNoSuchVolume, + NERR_DfsVolumeAlreadyExists, + NERR_DfsAlreadyShared, + NERR_DfsNoSuchShare, + NERR_DfsNotALeafVolume, + NERR_DfsLeafVolume, + NERR_DfsVolumeHasMultipleServers, + NERR_DfsCantCreateJunctionPoint, + NERR_DfsServerNotDfsAware, + NERR_DfsBadRenamePath, + NERR_DfsVolumeIsOffline, + NERR_DfsNoSuchServer, + NERR_DfsCyclicalName, + NERR_DfsNotSupportedInServerDfs, + NERR_DfsDuplicateService, + NERR_DfsCantRemoveLastServerShare, + NERR_DfsVolumeIsInterDfs, + NERR_DfsInconsistent, + NERR_DfsServerUpgraded, + NERR_DfsDataIsIdentical, + NERR_DfsCantRemoveDfsRoot, + NERR_DfsChildOrParentInDfs, + NERR_DfsInternalError = NERR_BASE + 590, + MAX_NERR = NERR_BASE + 899 +} diff --git a/src/core/sys/windows/lmerrlog.d b/src/core/sys/windows/lmerrlog.d index a302290a70..b806501c9d 100644 --- a/src/core/sys/windows/lmerrlog.d +++ b/src/core/sys/windows/lmerrlog.d @@ -1,221 +1,221 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmerrlog.d) - */ -module core.sys.windows.lmerrlog; - -// COMMENT: This appears to be only for Win16. All functions are deprecated. - -private import core.sys.windows.lmcons, core.sys.windows.windef; -private import core.sys.windows.lmaudit; // for LPHLOG - -const ERRLOG_BASE=3100; -const ERRLOG2_BASE=5700; -const LOGFLAGS_FORWARD=0; -const LOGFLAGS_BACKWARD=1; -const LOGFLAGS_SEEK=2; -const NELOG_Internal_Error=ERRLOG_BASE; -const NELOG_Resource_Shortage=(ERRLOG_BASE+1); -const NELOG_Unable_To_Lock_Segment=(ERRLOG_BASE+2); -const NELOG_Unable_To_Unlock_Segment=(ERRLOG_BASE+3); -const NELOG_Uninstall_Service=(ERRLOG_BASE+4); -const NELOG_Init_Exec_Fail=(ERRLOG_BASE+5); -const NELOG_Ncb_Error=(ERRLOG_BASE+6); -const NELOG_Net_Not_Started=(ERRLOG_BASE+7); -const NELOG_Ioctl_Error=(ERRLOG_BASE+8); -const NELOG_System_Semaphore=(ERRLOG_BASE+9); -const NELOG_Init_OpenCreate_Err=(ERRLOG_BASE+10); -const NELOG_NetBios=(ERRLOG_BASE+11); -const NELOG_SMB_Illegal=(ERRLOG_BASE+12); -const NELOG_Service_Fail=(ERRLOG_BASE+13); -const NELOG_Entries_Lost=(ERRLOG_BASE+14); -const NELOG_Init_Seg_Overflow=(ERRLOG_BASE+20); -const NELOG_Srv_No_Mem_Grow=(ERRLOG_BASE+21); -const NELOG_Access_File_Bad=(ERRLOG_BASE+22); -const NELOG_Srvnet_Not_Started=(ERRLOG_BASE+23); -const NELOG_Init_Chardev_Err=(ERRLOG_BASE+24); -const NELOG_Remote_API=(ERRLOG_BASE+25); -const NELOG_Ncb_TooManyErr=(ERRLOG_BASE+26); -const NELOG_Mailslot_err=(ERRLOG_BASE+27); -const NELOG_ReleaseMem_Alert=(ERRLOG_BASE+28); -const NELOG_AT_cannot_write=(ERRLOG_BASE+29); -const NELOG_Cant_Make_Msg_File=(ERRLOG_BASE+30); -const NELOG_Exec_Netservr_NoMem=(ERRLOG_BASE+31); -const NELOG_Server_Lock_Failure=(ERRLOG_BASE+32); -const NELOG_Msg_Shutdown=(ERRLOG_BASE+40); -const NELOG_Msg_Sem_Shutdown=(ERRLOG_BASE+41); -const NELOG_Msg_Log_Err=(ERRLOG_BASE+50); -const NELOG_VIO_POPUP_ERR=(ERRLOG_BASE+51); -const NELOG_Msg_Unexpected_SMB_Type=(ERRLOG_BASE+52); -const NELOG_Wksta_Infoseg=(ERRLOG_BASE+60); -const NELOG_Wksta_Compname=(ERRLOG_BASE+61); -const NELOG_Wksta_BiosThreadFailure=(ERRLOG_BASE+62); -const NELOG_Wksta_IniSeg=(ERRLOG_BASE+63); -const NELOG_Wksta_HostTab_Full=(ERRLOG_BASE+64); -const NELOG_Wksta_Bad_Mailslot_SMB=(ERRLOG_BASE+65); -const NELOG_Wksta_UASInit=(ERRLOG_BASE+66); -const NELOG_Wksta_SSIRelogon=(ERRLOG_BASE+67); -const NELOG_Build_Name=(ERRLOG_BASE+70); -const NELOG_Name_Expansion=(ERRLOG_BASE+71); -const NELOG_Message_Send=(ERRLOG_BASE+72); -const NELOG_Mail_Slt_Err=(ERRLOG_BASE+73); -const NELOG_AT_cannot_read=(ERRLOG_BASE+74); -const NELOG_AT_sched_err=(ERRLOG_BASE+75); -const NELOG_AT_schedule_file_created=(ERRLOG_BASE+76); -const NELOG_Srvnet_NB_Open=(ERRLOG_BASE+77); -const NELOG_AT_Exec_Err=(ERRLOG_BASE+78); -const NELOG_Lazy_Write_Err=(ERRLOG_BASE+80); -const NELOG_HotFix=(ERRLOG_BASE+81); -const NELOG_HardErr_From_Server=(ERRLOG_BASE+82); -const NELOG_LocalSecFail1=(ERRLOG_BASE+83); -const NELOG_LocalSecFail2=(ERRLOG_BASE+84); -const NELOG_LocalSecFail3=(ERRLOG_BASE+85); -const NELOG_LocalSecGeneralFail=(ERRLOG_BASE+86); -const NELOG_NetWkSta_Internal_Error=(ERRLOG_BASE+90); -const NELOG_NetWkSta_No_Resource=(ERRLOG_BASE+91); -const NELOG_NetWkSta_SMB_Err=(ERRLOG_BASE+92); -const NELOG_NetWkSta_VC_Err=(ERRLOG_BASE+93); -const NELOG_NetWkSta_Stuck_VC_Err=(ERRLOG_BASE+94); -const NELOG_NetWkSta_NCB_Err=(ERRLOG_BASE+95); -const NELOG_NetWkSta_Write_Behind_Err=(ERRLOG_BASE+96); -const NELOG_NetWkSta_Reset_Err=(ERRLOG_BASE+97); -const NELOG_NetWkSta_Too_Many=(ERRLOG_BASE+98); -const NELOG_Srv_Thread_Failure=(ERRLOG_BASE+104); -const NELOG_Srv_Close_Failure=(ERRLOG_BASE+105); -const NELOG_ReplUserCurDir=(ERRLOG_BASE+106); -const NELOG_ReplCannotMasterDir=(ERRLOG_BASE+107); -const NELOG_ReplUpdateError=(ERRLOG_BASE+108); -const NELOG_ReplLostMaster=(ERRLOG_BASE+109); -const NELOG_NetlogonAuthDCFail=(ERRLOG_BASE+110); -const NELOG_ReplLogonFailed=(ERRLOG_BASE+111); -const NELOG_ReplNetErr=(ERRLOG_BASE+112); -const NELOG_ReplMaxFiles=(ERRLOG_BASE+113); -const NELOG_ReplMaxTreeDepth=(ERRLOG_BASE+114); -const NELOG_ReplBadMsg=(ERRLOG_BASE+115); -const NELOG_ReplSysErr=(ERRLOG_BASE+116); -const NELOG_ReplUserLoged=(ERRLOG_BASE+117); -const NELOG_ReplBadImport=(ERRLOG_BASE+118); -const NELOG_ReplBadExport=(ERRLOG_BASE+119); -const NELOG_ReplSignalFileErr=(ERRLOG_BASE+120); -const NELOG_DiskFT=(ERRLOG_BASE+121); -const NELOG_ReplAccessDenied=(ERRLOG_BASE+122); -const NELOG_NetlogonFailedPrimary=(ERRLOG_BASE+123); -const NELOG_NetlogonPasswdSetFailed=(ERRLOG_BASE+124); -const NELOG_NetlogonTrackingError=(ERRLOG_BASE+125); -const NELOG_NetlogonSyncError=(ERRLOG_BASE+126); -const NELOG_UPS_PowerOut=(ERRLOG_BASE+130); -const NELOG_UPS_Shutdown=(ERRLOG_BASE+131); -const NELOG_UPS_CmdFileError=(ERRLOG_BASE+132); -const NELOG_UPS_CannotOpenDriver=(ERRLOG_BASE+133); -const NELOG_UPS_PowerBack=(ERRLOG_BASE+134); -const NELOG_UPS_CmdFileConfig=(ERRLOG_BASE+135); -const NELOG_UPS_CmdFileExec=(ERRLOG_BASE+136); -const NELOG_Missing_Parameter=(ERRLOG_BASE+150); -const NELOG_Invalid_Config_Line=(ERRLOG_BASE+151); -const NELOG_Invalid_Config_File=(ERRLOG_BASE+152); -const NELOG_File_Changed=(ERRLOG_BASE+153); -const NELOG_Files_Dont_Fit=(ERRLOG_BASE+154); -const NELOG_Wrong_DLL_Version=(ERRLOG_BASE+155); -const NELOG_Error_in_DLL=(ERRLOG_BASE+156); -const NELOG_System_Error=(ERRLOG_BASE+157); -const NELOG_FT_ErrLog_Too_Large=(ERRLOG_BASE+158); -const NELOG_FT_Update_In_Progress=(ERRLOG_BASE+159); -const NELOG_OEM_Code=(ERRLOG_BASE+199); -const NELOG_NetlogonSSIInitError=ERRLOG2_BASE; -const NELOG_NetlogonFailedToUpdateTrustList=(ERRLOG2_BASE+1); -const NELOG_NetlogonFailedToAddRpcInterface=(ERRLOG2_BASE+2); -const NELOG_NetlogonFailedToReadMailslot=(ERRLOG2_BASE+3); -const NELOG_NetlogonFailedToRegisterSC=(ERRLOG2_BASE+4); -const NELOG_NetlogonChangeLogCorrupt=(ERRLOG2_BASE+5); -const NELOG_NetlogonFailedToCreateShare=(ERRLOG2_BASE+6); -const NELOG_NetlogonDownLevelLogonFailed=(ERRLOG2_BASE+7); -const NELOG_NetlogonDownLevelLogoffFailed=(ERRLOG2_BASE+8); -const NELOG_NetlogonNTLogonFailed=(ERRLOG2_BASE+9); -const NELOG_NetlogonNTLogoffFailed=(ERRLOG2_BASE+10); -const NELOG_NetlogonPartialSyncCallSuccess=(ERRLOG2_BASE+11); -const NELOG_NetlogonPartialSyncCallFailed=(ERRLOG2_BASE+12); -const NELOG_NetlogonFullSyncCallSuccess=(ERRLOG2_BASE+13); -const NELOG_NetlogonFullSyncCallFailed=(ERRLOG2_BASE+14); -const NELOG_NetlogonPartialSyncSuccess=(ERRLOG2_BASE+15); -const NELOG_NetlogonPartialSyncFailed=(ERRLOG2_BASE+16); -const NELOG_NetlogonFullSyncSuccess=(ERRLOG2_BASE+17); -const NELOG_NetlogonFullSyncFailed=(ERRLOG2_BASE+18); -const NELOG_NetlogonAuthNoDomainController=(ERRLOG2_BASE+19); -const NELOG_NetlogonAuthNoTrustLsaSecret=(ERRLOG2_BASE+20); -const NELOG_NetlogonAuthNoTrustSamAccount=(ERRLOG2_BASE+21); -const NELOG_NetlogonServerAuthFailed=(ERRLOG2_BASE+22); -const NELOG_NetlogonServerAuthNoTrustSamAccount=(ERRLOG2_BASE+23); -const NELOG_FailedToRegisterSC=(ERRLOG2_BASE+24); -const NELOG_FailedToSetServiceStatus=(ERRLOG2_BASE+25); -const NELOG_FailedToGetComputerName=(ERRLOG2_BASE+26); -const NELOG_DriverNotLoaded=(ERRLOG2_BASE+27); -const NELOG_NoTranportLoaded=(ERRLOG2_BASE+28); -const NELOG_NetlogonFailedDomainDelta=(ERRLOG2_BASE+29); -const NELOG_NetlogonFailedGlobalGroupDelta=(ERRLOG2_BASE+30); -const NELOG_NetlogonFailedLocalGroupDelta=(ERRLOG2_BASE+31); -const NELOG_NetlogonFailedUserDelta=(ERRLOG2_BASE+32); -const NELOG_NetlogonFailedPolicyDelta=(ERRLOG2_BASE+33); -const NELOG_NetlogonFailedTrustedDomainDelta=(ERRLOG2_BASE+34); -const NELOG_NetlogonFailedAccountDelta=(ERRLOG2_BASE+35); -const NELOG_NetlogonFailedSecretDelta=(ERRLOG2_BASE+36); -const NELOG_NetlogonSystemError=(ERRLOG2_BASE+37); -const NELOG_NetlogonDuplicateMachineAccounts=(ERRLOG2_BASE+38); -const NELOG_NetlogonTooManyGlobalGroups=(ERRLOG2_BASE+39); -const NELOG_NetlogonBrowserDriver=(ERRLOG2_BASE+40); -const NELOG_NetlogonAddNameFailure=(ERRLOG2_BASE+41); -const NELOG_RplMessages=(ERRLOG2_BASE+42); -const NELOG_RplXnsBoot=(ERRLOG2_BASE+43); -const NELOG_RplSystem=(ERRLOG2_BASE+44); -const NELOG_RplWkstaTimeout=(ERRLOG2_BASE+45); -const NELOG_RplWkstaFileOpen=(ERRLOG2_BASE+46); -const NELOG_RplWkstaFileRead=(ERRLOG2_BASE+47); -const NELOG_RplWkstaMemory=(ERRLOG2_BASE+48); -const NELOG_RplWkstaFileChecksum=(ERRLOG2_BASE+49); -const NELOG_RplWkstaFileLineCount=(ERRLOG2_BASE+50); -const NELOG_RplWkstaBbcFile=(ERRLOG2_BASE+51); -const NELOG_RplWkstaFileSize=(ERRLOG2_BASE+52); -const NELOG_RplWkstaInternal=(ERRLOG2_BASE+53); -const NELOG_RplWkstaWrongVersion=(ERRLOG2_BASE+54); -const NELOG_RplWkstaNetwork=(ERRLOG2_BASE+55); -const NELOG_RplAdapterResource=(ERRLOG2_BASE+56); -const NELOG_RplFileCopy=(ERRLOG2_BASE+57); -const NELOG_RplFileDelete=(ERRLOG2_BASE+58); -const NELOG_RplFilePerms=(ERRLOG2_BASE+59); -const NELOG_RplCheckConfigs=(ERRLOG2_BASE+60); -const NELOG_RplCreateProfiles=(ERRLOG2_BASE+61); -const NELOG_RplRegistry=(ERRLOG2_BASE+62); -const NELOG_RplReplaceRPLDISK=(ERRLOG2_BASE+63); -const NELOG_RplCheckSecurity=(ERRLOG2_BASE+64); -const NELOG_RplBackupDatabase=(ERRLOG2_BASE+65); -const NELOG_RplInitDatabase=(ERRLOG2_BASE+66); -const NELOG_RplRestoreDatabaseFailure=(ERRLOG2_BASE+67); -const NELOG_RplRestoreDatabaseSuccess=(ERRLOG2_BASE+68); -const NELOG_RplInitRestoredDatabase=(ERRLOG2_BASE+69); -const NELOG_NetlogonSessionTypeWrong=(ERRLOG2_BASE+70); - -struct ERROR_LOG { - DWORD el_len; - DWORD el_reserved; - DWORD el_time; - DWORD el_error; - LPWSTR el_name; - LPWSTR el_text; - LPBYTE el_data; - DWORD el_data_size; - DWORD el_nstrings; -} -alias ERROR_LOG* PERROR_LOG, LPERROR_LOG; - -extern (Windows) { - deprecated { - NET_API_STATUS NetErrorLogClear(LPCWSTR, LPCWSTR, LPBYTE); - NET_API_STATUS NetErrorLogRead(LPCWSTR, LPWSTR, LPHLOG, DWORD, - LPDWORD, DWORD, DWORD, LPBYTE*, DWORD, LPDWORD, LPDWORD); - NET_API_STATUS NetErrorLogWrite(LPBYTE, DWORD, LPCWSTR, LPBYTE, - DWORD, LPBYTE, DWORD, LPBYTE); - } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmerrlog.d) + */ +module core.sys.windows.lmerrlog; + +// COMMENT: This appears to be only for Win16. All functions are deprecated. + +private import core.sys.windows.lmcons, core.sys.windows.windef; +private import core.sys.windows.lmaudit; // for LPHLOG + +const ERRLOG_BASE=3100; +const ERRLOG2_BASE=5700; +const LOGFLAGS_FORWARD=0; +const LOGFLAGS_BACKWARD=1; +const LOGFLAGS_SEEK=2; +const NELOG_Internal_Error=ERRLOG_BASE; +const NELOG_Resource_Shortage=(ERRLOG_BASE+1); +const NELOG_Unable_To_Lock_Segment=(ERRLOG_BASE+2); +const NELOG_Unable_To_Unlock_Segment=(ERRLOG_BASE+3); +const NELOG_Uninstall_Service=(ERRLOG_BASE+4); +const NELOG_Init_Exec_Fail=(ERRLOG_BASE+5); +const NELOG_Ncb_Error=(ERRLOG_BASE+6); +const NELOG_Net_Not_Started=(ERRLOG_BASE+7); +const NELOG_Ioctl_Error=(ERRLOG_BASE+8); +const NELOG_System_Semaphore=(ERRLOG_BASE+9); +const NELOG_Init_OpenCreate_Err=(ERRLOG_BASE+10); +const NELOG_NetBios=(ERRLOG_BASE+11); +const NELOG_SMB_Illegal=(ERRLOG_BASE+12); +const NELOG_Service_Fail=(ERRLOG_BASE+13); +const NELOG_Entries_Lost=(ERRLOG_BASE+14); +const NELOG_Init_Seg_Overflow=(ERRLOG_BASE+20); +const NELOG_Srv_No_Mem_Grow=(ERRLOG_BASE+21); +const NELOG_Access_File_Bad=(ERRLOG_BASE+22); +const NELOG_Srvnet_Not_Started=(ERRLOG_BASE+23); +const NELOG_Init_Chardev_Err=(ERRLOG_BASE+24); +const NELOG_Remote_API=(ERRLOG_BASE+25); +const NELOG_Ncb_TooManyErr=(ERRLOG_BASE+26); +const NELOG_Mailslot_err=(ERRLOG_BASE+27); +const NELOG_ReleaseMem_Alert=(ERRLOG_BASE+28); +const NELOG_AT_cannot_write=(ERRLOG_BASE+29); +const NELOG_Cant_Make_Msg_File=(ERRLOG_BASE+30); +const NELOG_Exec_Netservr_NoMem=(ERRLOG_BASE+31); +const NELOG_Server_Lock_Failure=(ERRLOG_BASE+32); +const NELOG_Msg_Shutdown=(ERRLOG_BASE+40); +const NELOG_Msg_Sem_Shutdown=(ERRLOG_BASE+41); +const NELOG_Msg_Log_Err=(ERRLOG_BASE+50); +const NELOG_VIO_POPUP_ERR=(ERRLOG_BASE+51); +const NELOG_Msg_Unexpected_SMB_Type=(ERRLOG_BASE+52); +const NELOG_Wksta_Infoseg=(ERRLOG_BASE+60); +const NELOG_Wksta_Compname=(ERRLOG_BASE+61); +const NELOG_Wksta_BiosThreadFailure=(ERRLOG_BASE+62); +const NELOG_Wksta_IniSeg=(ERRLOG_BASE+63); +const NELOG_Wksta_HostTab_Full=(ERRLOG_BASE+64); +const NELOG_Wksta_Bad_Mailslot_SMB=(ERRLOG_BASE+65); +const NELOG_Wksta_UASInit=(ERRLOG_BASE+66); +const NELOG_Wksta_SSIRelogon=(ERRLOG_BASE+67); +const NELOG_Build_Name=(ERRLOG_BASE+70); +const NELOG_Name_Expansion=(ERRLOG_BASE+71); +const NELOG_Message_Send=(ERRLOG_BASE+72); +const NELOG_Mail_Slt_Err=(ERRLOG_BASE+73); +const NELOG_AT_cannot_read=(ERRLOG_BASE+74); +const NELOG_AT_sched_err=(ERRLOG_BASE+75); +const NELOG_AT_schedule_file_created=(ERRLOG_BASE+76); +const NELOG_Srvnet_NB_Open=(ERRLOG_BASE+77); +const NELOG_AT_Exec_Err=(ERRLOG_BASE+78); +const NELOG_Lazy_Write_Err=(ERRLOG_BASE+80); +const NELOG_HotFix=(ERRLOG_BASE+81); +const NELOG_HardErr_From_Server=(ERRLOG_BASE+82); +const NELOG_LocalSecFail1=(ERRLOG_BASE+83); +const NELOG_LocalSecFail2=(ERRLOG_BASE+84); +const NELOG_LocalSecFail3=(ERRLOG_BASE+85); +const NELOG_LocalSecGeneralFail=(ERRLOG_BASE+86); +const NELOG_NetWkSta_Internal_Error=(ERRLOG_BASE+90); +const NELOG_NetWkSta_No_Resource=(ERRLOG_BASE+91); +const NELOG_NetWkSta_SMB_Err=(ERRLOG_BASE+92); +const NELOG_NetWkSta_VC_Err=(ERRLOG_BASE+93); +const NELOG_NetWkSta_Stuck_VC_Err=(ERRLOG_BASE+94); +const NELOG_NetWkSta_NCB_Err=(ERRLOG_BASE+95); +const NELOG_NetWkSta_Write_Behind_Err=(ERRLOG_BASE+96); +const NELOG_NetWkSta_Reset_Err=(ERRLOG_BASE+97); +const NELOG_NetWkSta_Too_Many=(ERRLOG_BASE+98); +const NELOG_Srv_Thread_Failure=(ERRLOG_BASE+104); +const NELOG_Srv_Close_Failure=(ERRLOG_BASE+105); +const NELOG_ReplUserCurDir=(ERRLOG_BASE+106); +const NELOG_ReplCannotMasterDir=(ERRLOG_BASE+107); +const NELOG_ReplUpdateError=(ERRLOG_BASE+108); +const NELOG_ReplLostMaster=(ERRLOG_BASE+109); +const NELOG_NetlogonAuthDCFail=(ERRLOG_BASE+110); +const NELOG_ReplLogonFailed=(ERRLOG_BASE+111); +const NELOG_ReplNetErr=(ERRLOG_BASE+112); +const NELOG_ReplMaxFiles=(ERRLOG_BASE+113); +const NELOG_ReplMaxTreeDepth=(ERRLOG_BASE+114); +const NELOG_ReplBadMsg=(ERRLOG_BASE+115); +const NELOG_ReplSysErr=(ERRLOG_BASE+116); +const NELOG_ReplUserLoged=(ERRLOG_BASE+117); +const NELOG_ReplBadImport=(ERRLOG_BASE+118); +const NELOG_ReplBadExport=(ERRLOG_BASE+119); +const NELOG_ReplSignalFileErr=(ERRLOG_BASE+120); +const NELOG_DiskFT=(ERRLOG_BASE+121); +const NELOG_ReplAccessDenied=(ERRLOG_BASE+122); +const NELOG_NetlogonFailedPrimary=(ERRLOG_BASE+123); +const NELOG_NetlogonPasswdSetFailed=(ERRLOG_BASE+124); +const NELOG_NetlogonTrackingError=(ERRLOG_BASE+125); +const NELOG_NetlogonSyncError=(ERRLOG_BASE+126); +const NELOG_UPS_PowerOut=(ERRLOG_BASE+130); +const NELOG_UPS_Shutdown=(ERRLOG_BASE+131); +const NELOG_UPS_CmdFileError=(ERRLOG_BASE+132); +const NELOG_UPS_CannotOpenDriver=(ERRLOG_BASE+133); +const NELOG_UPS_PowerBack=(ERRLOG_BASE+134); +const NELOG_UPS_CmdFileConfig=(ERRLOG_BASE+135); +const NELOG_UPS_CmdFileExec=(ERRLOG_BASE+136); +const NELOG_Missing_Parameter=(ERRLOG_BASE+150); +const NELOG_Invalid_Config_Line=(ERRLOG_BASE+151); +const NELOG_Invalid_Config_File=(ERRLOG_BASE+152); +const NELOG_File_Changed=(ERRLOG_BASE+153); +const NELOG_Files_Dont_Fit=(ERRLOG_BASE+154); +const NELOG_Wrong_DLL_Version=(ERRLOG_BASE+155); +const NELOG_Error_in_DLL=(ERRLOG_BASE+156); +const NELOG_System_Error=(ERRLOG_BASE+157); +const NELOG_FT_ErrLog_Too_Large=(ERRLOG_BASE+158); +const NELOG_FT_Update_In_Progress=(ERRLOG_BASE+159); +const NELOG_OEM_Code=(ERRLOG_BASE+199); +const NELOG_NetlogonSSIInitError=ERRLOG2_BASE; +const NELOG_NetlogonFailedToUpdateTrustList=(ERRLOG2_BASE+1); +const NELOG_NetlogonFailedToAddRpcInterface=(ERRLOG2_BASE+2); +const NELOG_NetlogonFailedToReadMailslot=(ERRLOG2_BASE+3); +const NELOG_NetlogonFailedToRegisterSC=(ERRLOG2_BASE+4); +const NELOG_NetlogonChangeLogCorrupt=(ERRLOG2_BASE+5); +const NELOG_NetlogonFailedToCreateShare=(ERRLOG2_BASE+6); +const NELOG_NetlogonDownLevelLogonFailed=(ERRLOG2_BASE+7); +const NELOG_NetlogonDownLevelLogoffFailed=(ERRLOG2_BASE+8); +const NELOG_NetlogonNTLogonFailed=(ERRLOG2_BASE+9); +const NELOG_NetlogonNTLogoffFailed=(ERRLOG2_BASE+10); +const NELOG_NetlogonPartialSyncCallSuccess=(ERRLOG2_BASE+11); +const NELOG_NetlogonPartialSyncCallFailed=(ERRLOG2_BASE+12); +const NELOG_NetlogonFullSyncCallSuccess=(ERRLOG2_BASE+13); +const NELOG_NetlogonFullSyncCallFailed=(ERRLOG2_BASE+14); +const NELOG_NetlogonPartialSyncSuccess=(ERRLOG2_BASE+15); +const NELOG_NetlogonPartialSyncFailed=(ERRLOG2_BASE+16); +const NELOG_NetlogonFullSyncSuccess=(ERRLOG2_BASE+17); +const NELOG_NetlogonFullSyncFailed=(ERRLOG2_BASE+18); +const NELOG_NetlogonAuthNoDomainController=(ERRLOG2_BASE+19); +const NELOG_NetlogonAuthNoTrustLsaSecret=(ERRLOG2_BASE+20); +const NELOG_NetlogonAuthNoTrustSamAccount=(ERRLOG2_BASE+21); +const NELOG_NetlogonServerAuthFailed=(ERRLOG2_BASE+22); +const NELOG_NetlogonServerAuthNoTrustSamAccount=(ERRLOG2_BASE+23); +const NELOG_FailedToRegisterSC=(ERRLOG2_BASE+24); +const NELOG_FailedToSetServiceStatus=(ERRLOG2_BASE+25); +const NELOG_FailedToGetComputerName=(ERRLOG2_BASE+26); +const NELOG_DriverNotLoaded=(ERRLOG2_BASE+27); +const NELOG_NoTranportLoaded=(ERRLOG2_BASE+28); +const NELOG_NetlogonFailedDomainDelta=(ERRLOG2_BASE+29); +const NELOG_NetlogonFailedGlobalGroupDelta=(ERRLOG2_BASE+30); +const NELOG_NetlogonFailedLocalGroupDelta=(ERRLOG2_BASE+31); +const NELOG_NetlogonFailedUserDelta=(ERRLOG2_BASE+32); +const NELOG_NetlogonFailedPolicyDelta=(ERRLOG2_BASE+33); +const NELOG_NetlogonFailedTrustedDomainDelta=(ERRLOG2_BASE+34); +const NELOG_NetlogonFailedAccountDelta=(ERRLOG2_BASE+35); +const NELOG_NetlogonFailedSecretDelta=(ERRLOG2_BASE+36); +const NELOG_NetlogonSystemError=(ERRLOG2_BASE+37); +const NELOG_NetlogonDuplicateMachineAccounts=(ERRLOG2_BASE+38); +const NELOG_NetlogonTooManyGlobalGroups=(ERRLOG2_BASE+39); +const NELOG_NetlogonBrowserDriver=(ERRLOG2_BASE+40); +const NELOG_NetlogonAddNameFailure=(ERRLOG2_BASE+41); +const NELOG_RplMessages=(ERRLOG2_BASE+42); +const NELOG_RplXnsBoot=(ERRLOG2_BASE+43); +const NELOG_RplSystem=(ERRLOG2_BASE+44); +const NELOG_RplWkstaTimeout=(ERRLOG2_BASE+45); +const NELOG_RplWkstaFileOpen=(ERRLOG2_BASE+46); +const NELOG_RplWkstaFileRead=(ERRLOG2_BASE+47); +const NELOG_RplWkstaMemory=(ERRLOG2_BASE+48); +const NELOG_RplWkstaFileChecksum=(ERRLOG2_BASE+49); +const NELOG_RplWkstaFileLineCount=(ERRLOG2_BASE+50); +const NELOG_RplWkstaBbcFile=(ERRLOG2_BASE+51); +const NELOG_RplWkstaFileSize=(ERRLOG2_BASE+52); +const NELOG_RplWkstaInternal=(ERRLOG2_BASE+53); +const NELOG_RplWkstaWrongVersion=(ERRLOG2_BASE+54); +const NELOG_RplWkstaNetwork=(ERRLOG2_BASE+55); +const NELOG_RplAdapterResource=(ERRLOG2_BASE+56); +const NELOG_RplFileCopy=(ERRLOG2_BASE+57); +const NELOG_RplFileDelete=(ERRLOG2_BASE+58); +const NELOG_RplFilePerms=(ERRLOG2_BASE+59); +const NELOG_RplCheckConfigs=(ERRLOG2_BASE+60); +const NELOG_RplCreateProfiles=(ERRLOG2_BASE+61); +const NELOG_RplRegistry=(ERRLOG2_BASE+62); +const NELOG_RplReplaceRPLDISK=(ERRLOG2_BASE+63); +const NELOG_RplCheckSecurity=(ERRLOG2_BASE+64); +const NELOG_RplBackupDatabase=(ERRLOG2_BASE+65); +const NELOG_RplInitDatabase=(ERRLOG2_BASE+66); +const NELOG_RplRestoreDatabaseFailure=(ERRLOG2_BASE+67); +const NELOG_RplRestoreDatabaseSuccess=(ERRLOG2_BASE+68); +const NELOG_RplInitRestoredDatabase=(ERRLOG2_BASE+69); +const NELOG_NetlogonSessionTypeWrong=(ERRLOG2_BASE+70); + +struct ERROR_LOG { + DWORD el_len; + DWORD el_reserved; + DWORD el_time; + DWORD el_error; + LPWSTR el_name; + LPWSTR el_text; + LPBYTE el_data; + DWORD el_data_size; + DWORD el_nstrings; +} +alias ERROR_LOG* PERROR_LOG, LPERROR_LOG; + +extern (Windows) { + deprecated { + NET_API_STATUS NetErrorLogClear(LPCWSTR, LPCWSTR, LPBYTE); + NET_API_STATUS NetErrorLogRead(LPCWSTR, LPWSTR, LPHLOG, DWORD, + LPDWORD, DWORD, DWORD, LPBYTE*, DWORD, LPDWORD, LPDWORD); + NET_API_STATUS NetErrorLogWrite(LPBYTE, DWORD, LPCWSTR, LPBYTE, + DWORD, LPBYTE, DWORD, LPBYTE); + } +} diff --git a/src/core/sys/windows/lmmsg.d b/src/core/sys/windows/lmmsg.d index 5b428e6001..7be446af24 100644 --- a/src/core/sys/windows/lmmsg.d +++ b/src/core/sys/windows/lmmsg.d @@ -1,42 +1,42 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmmsg.d) - */ -module core.sys.windows.lmmsg; -pragma(lib, "netapi32"); - -private import core.sys.windows.lmcons, core.sys.windows.windef, core.sys.windows.w32api; - -static assert (_WIN32_WINNT >= 0x501, - "core.sys.windows.lmmsg is available only if version WindowsXP, Windows2003 " - "or WindowsVista is set"); - -const MSGNAME_NOT_FORWARDED = 0; -const MSGNAME_FORWARDED_TO = 4; -const MSGNAME_FORWARDED_FROM = 16; - -struct MSG_INFO_0 { - LPWSTR msgi0_name; -} -alias MSG_INFO_0* PMSG_INFO_0, LPMSG_INFO_0; - -struct MSG_INFO_1 { - LPWSTR msgi1_name; - DWORD msgi1_forward_flag; - LPWSTR msgi1_forward; -} -alias MSG_INFO_1* PMSG_INFO_1, LPMSG_INFO_1; - -extern (Windows) { - NET_API_STATUS NetMessageBufferSend(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE, - DWORD); - NET_API_STATUS NetMessageNameAdd(LPCWSTR, LPCWSTR); - NET_API_STATUS NetMessageNameDel(LPCWSTR, LPCWSTR); - NET_API_STATUS NetMessageNameEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, - PDWORD, PDWORD); - NET_API_STATUS NetMessageNameGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmmsg.d) + */ +module core.sys.windows.lmmsg; +pragma(lib, "netapi32"); + +private import core.sys.windows.lmcons, core.sys.windows.windef, core.sys.windows.w32api; + +static assert (_WIN32_WINNT >= 0x501, + "core.sys.windows.lmmsg is available only if version WindowsXP, Windows2003 " + "or WindowsVista is set"); + +const MSGNAME_NOT_FORWARDED = 0; +const MSGNAME_FORWARDED_TO = 4; +const MSGNAME_FORWARDED_FROM = 16; + +struct MSG_INFO_0 { + LPWSTR msgi0_name; +} +alias MSG_INFO_0* PMSG_INFO_0, LPMSG_INFO_0; + +struct MSG_INFO_1 { + LPWSTR msgi1_name; + DWORD msgi1_forward_flag; + LPWSTR msgi1_forward; +} +alias MSG_INFO_1* PMSG_INFO_1, LPMSG_INFO_1; + +extern (Windows) { + NET_API_STATUS NetMessageBufferSend(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE, + DWORD); + NET_API_STATUS NetMessageNameAdd(LPCWSTR, LPCWSTR); + NET_API_STATUS NetMessageNameDel(LPCWSTR, LPCWSTR); + NET_API_STATUS NetMessageNameEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, + PDWORD, PDWORD); + NET_API_STATUS NetMessageNameGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); +} diff --git a/src/core/sys/windows/lmremutl.d b/src/core/sys/windows/lmremutl.d index 8e1242ebe4..e14f13d2a6 100644 --- a/src/core/sys/windows/lmremutl.d +++ b/src/core/sys/windows/lmremutl.d @@ -1,59 +1,59 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmremutl.d) - */ -module core.sys.windows.lmremutl; -pragma(lib, "netapi32"); - -// D Conversion Note: DESC_CHAR is defined as TCHAR. - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -const SUPPORTS_REMOTE_ADMIN_PROTOCOL = 2; -const SUPPORTS_RPC = 4; -const SUPPORTS_SAM_PROTOCOL = 8; -const SUPPORTS_UNICODE = 16; -const SUPPORTS_LOCAL = 32; -const SUPPORTS_ANY = 0xFFFFFFFF; - -const NO_PERMISSION_REQUIRED = 1; -const ALLOCATE_RESPONSE = 2; -const USE_SPECIFIC_TRANSPORT = 0x80000000; - -//[Yes] #ifndef DESC_CHAR_UNICODE -//alias CHAR DESC_CHAR; -//} else { -//[No] #else -//[No] typedef WCHAR DESC_CHAR; -//[No] #endif -// FIXME (D): Is this OK? -alias TCHAR DESC_CHAR; - -alias DESC_CHAR* LPDESC; - -struct TIME_OF_DAY_INFO { - DWORD tod_elapsedt; - DWORD tod_msecs; - DWORD tod_hours; - DWORD tod_mins; - DWORD tod_secs; - DWORD tod_hunds; - LONG tod_timezone; - DWORD tod_tinterval; - DWORD tod_day; - DWORD tod_month; - DWORD tod_year; - DWORD tod_weekday; -} -alias TIME_OF_DAY_INFO* PTIME_OF_DAY_INFO, LPTIME_OF_DAY_INFO; - -extern (Windows) { - NET_API_STATUS NetRemoteTOD(LPCWSTR, PBYTE*); - NET_API_STATUS NetRemoteComputerSupports(LPCWSTR, DWORD, PDWORD); - NET_API_STATUS RxRemoteApi(DWORD, LPCWSTR, LPDESC, LPDESC, LPDESC, - LPDESC, LPDESC, LPDESC, LPDESC, DWORD, ...); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmremutl.d) + */ +module core.sys.windows.lmremutl; +pragma(lib, "netapi32"); + +// D Conversion Note: DESC_CHAR is defined as TCHAR. + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +const SUPPORTS_REMOTE_ADMIN_PROTOCOL = 2; +const SUPPORTS_RPC = 4; +const SUPPORTS_SAM_PROTOCOL = 8; +const SUPPORTS_UNICODE = 16; +const SUPPORTS_LOCAL = 32; +const SUPPORTS_ANY = 0xFFFFFFFF; + +const NO_PERMISSION_REQUIRED = 1; +const ALLOCATE_RESPONSE = 2; +const USE_SPECIFIC_TRANSPORT = 0x80000000; + +//[Yes] #ifndef DESC_CHAR_UNICODE +//alias CHAR DESC_CHAR; +//} else { +//[No] #else +//[No] typedef WCHAR DESC_CHAR; +//[No] #endif +// FIXME (D): Is this OK? +alias TCHAR DESC_CHAR; + +alias DESC_CHAR* LPDESC; + +struct TIME_OF_DAY_INFO { + DWORD tod_elapsedt; + DWORD tod_msecs; + DWORD tod_hours; + DWORD tod_mins; + DWORD tod_secs; + DWORD tod_hunds; + LONG tod_timezone; + DWORD tod_tinterval; + DWORD tod_day; + DWORD tod_month; + DWORD tod_year; + DWORD tod_weekday; +} +alias TIME_OF_DAY_INFO* PTIME_OF_DAY_INFO, LPTIME_OF_DAY_INFO; + +extern (Windows) { + NET_API_STATUS NetRemoteTOD(LPCWSTR, PBYTE*); + NET_API_STATUS NetRemoteComputerSupports(LPCWSTR, DWORD, PDWORD); + NET_API_STATUS RxRemoteApi(DWORD, LPCWSTR, LPDESC, LPDESC, LPDESC, + LPDESC, LPDESC, LPDESC, LPDESC, DWORD, ...); +} diff --git a/src/core/sys/windows/lmrepl.d b/src/core/sys/windows/lmrepl.d index d13949668a..1e3be8ca93 100644 --- a/src/core/sys/windows/lmrepl.d +++ b/src/core/sys/windows/lmrepl.d @@ -1,133 +1,133 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmrepl.d) - */ -module core.sys.windows.lmrepl; -pragma(lib, "netapi32"); - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -const REPL_ROLE_EXPORT=1; -const REPL_ROLE_IMPORT=2; -const REPL_ROLE_BOTH=3; - -const REPL_INTERVAL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; -const REPL_PULSE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; -const REPL_GUARDTIME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+2; -const REPL_RANDOM_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+3; - -const REPL_UNLOCK_NOFORCE=0; -const REPL_UNLOCK_FORCE=1; -const REPL_STATE_OK=0; -const REPL_STATE_NO_MASTER=1; -const REPL_STATE_NO_SYNC=2; -const REPL_STATE_NEVER_REPLICATED=3; -const REPL_INTEGRITY_FILE=1; -const REPL_INTEGRITY_TREE=2; -const REPL_EXTENT_FILE=1; -const REPL_EXTENT_TREE=2; - -const REPL_EXPORT_INTEGRITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; -const REPL_EXPORT_EXTENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; - -struct REPL_INFO_0 { - DWORD rp0_role; - LPWSTR rp0_exportpath; - LPWSTR rp0_exportlist; - LPWSTR rp0_importpath; - LPWSTR rp0_importlist; - LPWSTR rp0_logonusername; - DWORD rp0_interval; - DWORD rp0_pulse; - DWORD rp0_guardtime; - DWORD rp0_random; -} -alias REPL_INFO_0* PREPL_INFO_0, LPREPL_INFO_0; - -struct REPL_INFO_1000 { - DWORD rp1000_interval; -} -alias REPL_INFO_1000* PREPL_INFO_1000, LPREPL_INFO_1000; - -struct REPL_INFO_1001 { - DWORD rp1001_pulse; -} -alias REPL_INFO_1001* PREPL_INFO_1001, LPREPL_INFO_1001; - -struct REPL_INFO_1002 { - DWORD rp1002_guardtime; -} -alias REPL_INFO_1002* PREPL_INFO_1002, LPREPL_INFO_1002; - -struct REPL_INFO_1003 { - DWORD rp1003_random; -} -alias REPL_INFO_1003* PREPL_INFO_1003, LPREPL_INFO_1003; - -struct REPL_EDIR_INFO_0 { - LPWSTR rped0_dirname; -} -alias REPL_EDIR_INFO_0* PREPL_EDIR_INFO_0, LPREPL_EDIR_INFO_0; - -struct REPL_EDIR_INFO_1 { - LPWSTR rped1_dirname; - DWORD rped1_integrity; - DWORD rped1_extent; -} -alias REPL_EDIR_INFO_1* PREPL_EDIR_INFO_1, LPREPL_EDIR_INFO_1; - -struct REPL_EDIR_INFO_2 { - LPWSTR rped2_dirname; - DWORD rped2_integrity; - DWORD rped2_extent; - DWORD rped2_lockcount; - DWORD rped2_locktime; -} -alias REPL_EDIR_INFO_2* PREPL_EDIR_INFO_2, LPREPL_EDIR_INFO_2; - -struct REPL_EDIR_INFO_1000 { - DWORD rped1000_integrity; -} -alias REPL_EDIR_INFO_1000* PREPL_EDIR_INFO_1000, LPREPL_EDIR_INFO_1000; - -struct REPL_EDIR_INFO_1001 { - DWORD rped1001_extent; -} -alias REPL_EDIR_INFO_1001* PREPL_EDIR_INFO_1001, LPREPL_EDIR_INFO_1001; - -struct REPL_IDIR_INFO_0 { - LPWSTR rpid0_dirname; -} -alias REPL_IDIR_INFO_0* PREPL_IDIR_INFO_0, LPREPL_IDIR_INFO_0; - -struct REPL_IDIR_INFO_1 { - LPWSTR rpid1_dirname; - DWORD rpid1_state; - LPWSTR rpid1_mastername; - DWORD rpid1_last_update_time; - DWORD rpid1_lockcount; - DWORD rpid1_locktime; -} -alias REPL_IDIR_INFO_1* PREPL_IDIR_INFO_1, LPREPL_IDIR_INFO_1; - -extern (Windows) { -NET_API_STATUS NetReplGetInfo(LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetReplSetInfo(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetReplExportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetReplExportDirDel(LPCWSTR,LPCWSTR); -NET_API_STATUS NetReplExportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetReplExportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetReplExportDirSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetReplExportDirLock(LPCWSTR,LPCWSTR); -NET_API_STATUS NetReplExportDirUnlock(LPCWSTR,LPCWSTR,DWORD); -NET_API_STATUS NetReplImportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetReplImportDirDel(LPCWSTR,LPCWSTR); -NET_API_STATUS NetReplImportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetReplImportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetReplImportDirLock(LPCWSTR,LPCWSTR); -NET_API_STATUS NetReplImportDirUnlock(LPCWSTR,LPCWSTR,DWORD); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmrepl.d) + */ +module core.sys.windows.lmrepl; +pragma(lib, "netapi32"); + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +const REPL_ROLE_EXPORT=1; +const REPL_ROLE_IMPORT=2; +const REPL_ROLE_BOTH=3; + +const REPL_INTERVAL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; +const REPL_PULSE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; +const REPL_GUARDTIME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+2; +const REPL_RANDOM_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+3; + +const REPL_UNLOCK_NOFORCE=0; +const REPL_UNLOCK_FORCE=1; +const REPL_STATE_OK=0; +const REPL_STATE_NO_MASTER=1; +const REPL_STATE_NO_SYNC=2; +const REPL_STATE_NEVER_REPLICATED=3; +const REPL_INTEGRITY_FILE=1; +const REPL_INTEGRITY_TREE=2; +const REPL_EXTENT_FILE=1; +const REPL_EXTENT_TREE=2; + +const REPL_EXPORT_INTEGRITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; +const REPL_EXPORT_EXTENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; + +struct REPL_INFO_0 { + DWORD rp0_role; + LPWSTR rp0_exportpath; + LPWSTR rp0_exportlist; + LPWSTR rp0_importpath; + LPWSTR rp0_importlist; + LPWSTR rp0_logonusername; + DWORD rp0_interval; + DWORD rp0_pulse; + DWORD rp0_guardtime; + DWORD rp0_random; +} +alias REPL_INFO_0* PREPL_INFO_0, LPREPL_INFO_0; + +struct REPL_INFO_1000 { + DWORD rp1000_interval; +} +alias REPL_INFO_1000* PREPL_INFO_1000, LPREPL_INFO_1000; + +struct REPL_INFO_1001 { + DWORD rp1001_pulse; +} +alias REPL_INFO_1001* PREPL_INFO_1001, LPREPL_INFO_1001; + +struct REPL_INFO_1002 { + DWORD rp1002_guardtime; +} +alias REPL_INFO_1002* PREPL_INFO_1002, LPREPL_INFO_1002; + +struct REPL_INFO_1003 { + DWORD rp1003_random; +} +alias REPL_INFO_1003* PREPL_INFO_1003, LPREPL_INFO_1003; + +struct REPL_EDIR_INFO_0 { + LPWSTR rped0_dirname; +} +alias REPL_EDIR_INFO_0* PREPL_EDIR_INFO_0, LPREPL_EDIR_INFO_0; + +struct REPL_EDIR_INFO_1 { + LPWSTR rped1_dirname; + DWORD rped1_integrity; + DWORD rped1_extent; +} +alias REPL_EDIR_INFO_1* PREPL_EDIR_INFO_1, LPREPL_EDIR_INFO_1; + +struct REPL_EDIR_INFO_2 { + LPWSTR rped2_dirname; + DWORD rped2_integrity; + DWORD rped2_extent; + DWORD rped2_lockcount; + DWORD rped2_locktime; +} +alias REPL_EDIR_INFO_2* PREPL_EDIR_INFO_2, LPREPL_EDIR_INFO_2; + +struct REPL_EDIR_INFO_1000 { + DWORD rped1000_integrity; +} +alias REPL_EDIR_INFO_1000* PREPL_EDIR_INFO_1000, LPREPL_EDIR_INFO_1000; + +struct REPL_EDIR_INFO_1001 { + DWORD rped1001_extent; +} +alias REPL_EDIR_INFO_1001* PREPL_EDIR_INFO_1001, LPREPL_EDIR_INFO_1001; + +struct REPL_IDIR_INFO_0 { + LPWSTR rpid0_dirname; +} +alias REPL_IDIR_INFO_0* PREPL_IDIR_INFO_0, LPREPL_IDIR_INFO_0; + +struct REPL_IDIR_INFO_1 { + LPWSTR rpid1_dirname; + DWORD rpid1_state; + LPWSTR rpid1_mastername; + DWORD rpid1_last_update_time; + DWORD rpid1_lockcount; + DWORD rpid1_locktime; +} +alias REPL_IDIR_INFO_1* PREPL_IDIR_INFO_1, LPREPL_IDIR_INFO_1; + +extern (Windows) { +NET_API_STATUS NetReplGetInfo(LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetReplSetInfo(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplExportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplExportDirDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplExportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetReplExportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetReplExportDirSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplExportDirLock(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplExportDirUnlock(LPCWSTR,LPCWSTR,DWORD); +NET_API_STATUS NetReplImportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplImportDirDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplImportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetReplImportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetReplImportDirLock(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplImportDirUnlock(LPCWSTR,LPCWSTR,DWORD); +} diff --git a/src/core/sys/windows/lmserver.d b/src/core/sys/windows/lmserver.d index 6df846c9f5..18ccf02634 100644 --- a/src/core/sys/windows/lmserver.d +++ b/src/core/sys/windows/lmserver.d @@ -1,940 +1,940 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmserver.d) - */ -module core.sys.windows.lmserver; - -import core.sys.windows.winsvc; -private import core.sys.windows.lmcons, core.sys.windows.windef; - -struct SERVER_INFO_100 { - DWORD sv100_platform_id; - LPWSTR sv100_name; -} -alias SERVER_INFO_100* PSERVER_INFO_100, LPSERVER_INFO_100; - -struct SERVER_INFO_101 { - DWORD sv101_platform_id; - LPWSTR sv101_name; - DWORD sv101_version_major; - DWORD sv101_version_minor; - DWORD sv101_type; - LPWSTR sv101_comment; -} -alias SERVER_INFO_101* PSERVER_INFO_101, LPSERVER_INFO_101; - -struct SERVER_INFO_102 { - DWORD sv102_platform_id; - LPWSTR sv102_name; - DWORD sv102_version_major; - DWORD sv102_version_minor; - DWORD sv102_type; - LPWSTR sv102_comment; - DWORD sv102_users; - LONG sv102_disc; - BOOL sv102_hidden; - DWORD sv102_announce; - DWORD sv102_anndelta; - DWORD sv102_licenses; - LPWSTR sv102_userpath; -} -alias SERVER_INFO_102* PSERVER_INFO_102, LPSERVER_INFO_102; - -struct SERVER_INFO_402 { - DWORD sv402_ulist_mtime; - DWORD sv402_glist_mtime; - DWORD sv402_alist_mtime; - LPWSTR sv402_alerts; - DWORD sv402_security; - DWORD sv402_numadmin; - DWORD sv402_lanmask; - LPWSTR sv402_guestacct; - DWORD sv402_chdevs; - DWORD sv402_chdevq; - DWORD sv402_chdevjobs; - DWORD sv402_connections; - DWORD sv402_shares; - DWORD sv402_openfiles; - DWORD sv402_sessopens; - DWORD sv402_sessvcs; - DWORD sv402_sessreqs; - DWORD sv402_opensearch; - DWORD sv402_activelocks; - DWORD sv402_numreqbuf; - DWORD sv402_sizreqbuf; - DWORD sv402_numbigbuf; - DWORD sv402_numfiletasks; - DWORD sv402_alertsched; - DWORD sv402_erroralert; - DWORD sv402_logonalert; - DWORD sv402_accessalert; - DWORD sv402_diskalert; - DWORD sv402_netioalert; - DWORD sv402_maxauditsz; - LPWSTR sv402_srvheuristics; -} -alias SERVER_INFO_402* PSERVER_INFO_402, LPSERVER_INFO_402; - -struct SERVER_INFO_403 { - DWORD sv403_ulist_mtime; - DWORD sv403_glist_mtime; - DWORD sv403_alist_mtime; - LPWSTR sv403_alerts; - DWORD sv403_security; - DWORD sv403_numadmin; - DWORD sv403_lanmask; - LPWSTR sv403_guestacct; - DWORD sv403_chdevs; - DWORD sv403_chdevq; - DWORD sv403_chdevjobs; - DWORD sv403_connections; - DWORD sv403_shares; - DWORD sv403_openfiles; - DWORD sv403_sessopens; - DWORD sv403_sessvcs; - DWORD sv403_sessreqs; - DWORD sv403_opensearch; - DWORD sv403_activelocks; - DWORD sv403_numreqbuf; - DWORD sv403_sizreqbuf; - DWORD sv403_numbigbuf; - DWORD sv403_numfiletasks; - DWORD sv403_alertsched; - DWORD sv403_erroralert; - DWORD sv403_logonalert; - DWORD sv403_accessalert; - DWORD sv403_diskalert; - DWORD sv403_netioalert; - DWORD sv403_maxauditsz; - LPWSTR sv403_srvheuristics; - DWORD sv403_auditedevents; - DWORD sv403_autoprofile; - LPWSTR sv403_autopath; -} -alias SERVER_INFO_403* PSERVER_INFO_403, LPSERVER_INFO_403; - -struct SERVER_INFO_502 { - DWORD sv502_sessopens; - DWORD sv502_sessvcs; - DWORD sv502_opensearch; - DWORD sv502_sizreqbuf; - DWORD sv502_initworkitems; - DWORD sv502_maxworkitems; - DWORD sv502_rawworkitems; - DWORD sv502_irpstacksize; - DWORD sv502_maxrawbuflen; - DWORD sv502_sessusers; - DWORD sv502_sessconns; - DWORD sv502_maxpagedmemoryusage; - DWORD sv502_maxnonpagedmemoryusage; - BOOL sv502_enablesoftcompat; - BOOL sv502_enableforcedlogoff; - BOOL sv502_timesource; - BOOL sv502_acceptdownlevelapis; - BOOL sv502_lmannounce; -} -alias SERVER_INFO_502* PSERVER_INFO_502, LPSERVER_INFO_502; - -struct SERVER_INFO_503 { - DWORD sv503_sessopens; - DWORD sv503_sessvcs; - DWORD sv503_opensearch; - DWORD sv503_sizreqbuf; - DWORD sv503_initworkitems; - DWORD sv503_maxworkitems; - DWORD sv503_rawworkitems; - DWORD sv503_irpstacksize; - DWORD sv503_maxrawbuflen; - DWORD sv503_sessusers; - DWORD sv503_sessconns; - DWORD sv503_maxpagedmemoryusage; - DWORD sv503_maxnonpagedmemoryusage; - BOOL sv503_enablesoftcompat; - BOOL sv503_enableforcedlogoff; - BOOL sv503_timesource; - BOOL sv503_acceptdownlevelapis; - BOOL sv503_lmannounce; - LPWSTR sv503_domain; - DWORD sv503_maxcopyreadlen; - DWORD sv503_maxcopywritelen; - DWORD sv503_minkeepsearch; - DWORD sv503_maxkeepsearch; - DWORD sv503_minkeepcomplsearch; - DWORD sv503_maxkeepcomplsearch; - DWORD sv503_threadcountadd; - DWORD sv503_numblockthreads; - DWORD sv503_scavtimeout; - DWORD sv503_minrcvqueue; - DWORD sv503_minfreeworkitems; - DWORD sv503_xactmemsize; - DWORD sv503_threadpriority; - DWORD sv503_maxmpxct; - DWORD sv503_oplockbreakwait; - DWORD sv503_oplockbreakresponsewait; - BOOL sv503_enableoplocks; - BOOL sv503_enableoplockforceclose; - BOOL sv503_enablefcbopens; - BOOL sv503_enableraw; - BOOL sv503_enablesharednetdrives; - DWORD sv503_minfreeconnections; - DWORD sv503_maxfreeconnections; -} -alias SERVER_INFO_503* PSERVER_INFO_503, LPSERVER_INFO_503; - -struct SERVER_INFO_599 { - DWORD sv599_sessopens; - DWORD sv599_sessvcs; - DWORD sv599_opensearch; - DWORD sv599_sizreqbuf; - DWORD sv599_initworkitems; - DWORD sv599_maxworkitems; - DWORD sv599_rawworkitems; - DWORD sv599_irpstacksize; - DWORD sv599_maxrawbuflen; - DWORD sv599_sessusers; - DWORD sv599_sessconns; - DWORD sv599_maxpagedmemoryusage; - DWORD sv599_maxnonpagedmemoryusage; - BOOL sv599_enablesoftcompat; - BOOL sv599_enableforcedlogoff; - BOOL sv599_timesource; - BOOL sv599_acceptdownlevelapis; - BOOL sv599_lmannounce; - LPWSTR sv599_domain; - DWORD sv599_maxcopyreadlen; - DWORD sv599_maxcopywritelen; - DWORD sv599_minkeepsearch; - DWORD sv599_maxkeepsearch; - DWORD sv599_minkeepcomplsearch; - DWORD sv599_maxkeepcomplsearch; - DWORD sv599_threadcountadd; - DWORD sv599_numblockthreads; - DWORD sv599_scavtimeout; - DWORD sv599_minrcvqueue; - DWORD sv599_minfreeworkitems; - DWORD sv599_xactmemsize; - DWORD sv599_threadpriority; - DWORD sv599_maxmpxct; - DWORD sv599_oplockbreakwait; - DWORD sv599_oplockbreakresponsewait; - BOOL sv599_enableoplocks; - BOOL sv599_enableoplockforceclose; - BOOL sv599_enablefcbopens; - BOOL sv599_enableraw; - BOOL sv599_enablesharednetdrives; - DWORD sv599_minfreeconnections; - DWORD sv599_maxfreeconnections; - DWORD sv599_initsesstable; - DWORD sv599_initconntable; - DWORD sv599_initfiletable; - DWORD sv599_initsearchtable; - DWORD sv599_alertschedule; - DWORD sv599_errorthreshold; - DWORD sv599_networkerrorthreshold; - DWORD sv599_diskspacethreshold; - DWORD sv599_reserved; - DWORD sv599_maxlinkdelay; - DWORD sv599_minlinkthroughput; - DWORD sv599_linkinfovalidtime; - DWORD sv599_scavqosinfoupdatetime; - DWORD sv599_maxworkitemidletime; -} -alias SERVER_INFO_599* PSERVER_INFO_599, LPSERVER_INFO_599; - -struct SERVER_INFO_598 { - DWORD sv598_maxrawworkitems; - DWORD sv598_maxthreadsperqueue; - DWORD sv598_producttype; - DWORD sv598_serversize; - DWORD sv598_connectionlessautodisc; - DWORD sv598_sharingviolationretries; - DWORD sv598_sharingviolationdelay; - DWORD sv598_maxglobalopensearch; - DWORD sv598_removeduplicatesearches; - DWORD sv598_lockviolationoffset; - DWORD sv598_lockviolationdelay; - DWORD sv598_mdlreadswitchover; - DWORD sv598_cachedopenlimit; - DWORD sv598_otherqueueaffinity; - BOOL sv598_restrictnullsessaccess; - BOOL sv598_enablewfw311directipx; - DWORD sv598_queuesamplesecs; - DWORD sv598_balancecount; - DWORD sv598_preferredaffinity; - DWORD sv598_maxfreerfcbs; - DWORD sv598_maxfreemfcbs; - DWORD sv598_maxfreelfcbs; - DWORD sv598_maxfreepagedpoolchunks; - DWORD sv598_minpagedpoolchunksize; - DWORD sv598_maxpagedpoolchunksize; - BOOL sv598_sendsfrompreferredprocessor; -} -alias SERVER_INFO_598* PSERVER_INFO_598, LPSERVER_INFO_598; - -struct SERVER_INFO_1005 { - LPWSTR sv1005_comment; -} -alias SERVER_INFO_1005* PSERVER_INFO_1005, LPSERVER_INFO_1005; - -struct SERVER_INFO_1107 { - DWORD sv1107_users; -} -alias SERVER_INFO_1107* PSERVER_INFO_1107, LPSERVER_INFO_1107; - -struct SERVER_INFO_1010 { - LONG sv1010_disc; -} -alias SERVER_INFO_1010* PSERVER_INFO_1010, LPSERVER_INFO_1010; - -struct SERVER_INFO_1016 { - BOOL sv1016_hidden; -} -alias SERVER_INFO_1016* PSERVER_INFO_1016, LPSERVER_INFO_1016; - -struct SERVER_INFO_1017 { - DWORD sv1017_announce; -} -alias SERVER_INFO_1017* PSERVER_INFO_1017, LPSERVER_INFO_1017; - -struct SERVER_INFO_1018 { - DWORD sv1018_anndelta; -} -alias SERVER_INFO_1018* PSERVER_INFO_1018, LPSERVER_INFO_1018; - -struct SERVER_INFO_1501 { - DWORD sv1501_sessopens; -} -alias SERVER_INFO_1501* PSERVER_INFO_1501, LPSERVER_INFO_1501; - -struct SERVER_INFO_1502 { - DWORD sv1502_sessvcs; -} -alias SERVER_INFO_1502* PSERVER_INFO_1502, LPSERVER_INFO_1502; - -struct SERVER_INFO_1503 { - DWORD sv1503_opensearch; -} -alias SERVER_INFO_1503* PSERVER_INFO_1503, LPSERVER_INFO_1503; - -struct SERVER_INFO_1506 { - DWORD sv1506_maxworkitems; -} -alias SERVER_INFO_1506* PSERVER_INFO_1506, LPSERVER_INFO_1506; - -struct SERVER_INFO_1509 { - DWORD sv1509_maxrawbuflen; -} -alias SERVER_INFO_1509* PSERVER_INFO_1509, LPSERVER_INFO_1509; - -struct SERVER_INFO_1510 { - DWORD sv1510_sessusers; -} -alias SERVER_INFO_1510* PSERVER_INFO_1510, LPSERVER_INFO_1510; - -struct SERVER_INFO_1511 { - DWORD sv1511_sessconns; -} alias SERVER_INFO_1511* PSERVER_INFO_1511, LPSERVER_INFO_1511; - -struct SERVER_INFO_1512 { - DWORD sv1512_maxnonpagedmemoryusage; -} -alias SERVER_INFO_1512* PSERVER_INFO_1512, LPSERVER_INFO_1512; - -struct SERVER_INFO_1513 { - DWORD sv1513_maxpagedmemoryusage; -} -alias SERVER_INFO_1513* PSERVER_INFO_1513, LPSERVER_INFO_1513; - -struct SERVER_INFO_1514 { - BOOL sv1514_enablesoftcompat; -} -alias SERVER_INFO_1514* PSERVER_INFO_1514, LPSERVER_INFO_1514; - -struct SERVER_INFO_1515 { - BOOL sv1515_enableforcedlogoff; -} -alias SERVER_INFO_1515* PSERVER_INFO_1515, LPSERVER_INFO_1515; - -struct SERVER_INFO_1516 { - BOOL sv1516_timesource; -} -alias SERVER_INFO_1516* PSERVER_INFO_1516, LPSERVER_INFO_1516; - -struct SERVER_INFO_1518 { - BOOL sv1518_lmannounce; -} -alias SERVER_INFO_1518* PSERVER_INFO_1518, LPSERVER_INFO_1518; - -struct SERVER_INFO_1520 { - DWORD sv1520_maxcopyreadlen; -} -alias SERVER_INFO_1520* PSERVER_INFO_1520, LPSERVER_INFO_1520; - -struct SERVER_INFO_1521 { - DWORD sv1521_maxcopywritelen; -} -alias SERVER_INFO_1521* PSERVER_INFO_1521, LPSERVER_INFO_1521; - -struct SERVER_INFO_1522 { - DWORD sv1522_minkeepsearch; -} -alias SERVER_INFO_1522* PSERVER_INFO_1522, LPSERVER_INFO_1522; - -struct SERVER_INFO_1523 { - DWORD sv1523_maxkeepsearch; -} -alias SERVER_INFO_1523* PSERVER_INFO_1523, LPSERVER_INFO_1523; - -struct SERVER_INFO_1524 { - DWORD sv1524_minkeepcomplsearch; -} -alias SERVER_INFO_1524* PSERVER_INFO_1524, LPSERVER_INFO_1524; - -struct SERVER_INFO_1525 { - DWORD sv1525_maxkeepcomplsearch; -} -alias SERVER_INFO_1525* PSERVER_INFO_1525, LPSERVER_INFO_1525; - -struct SERVER_INFO_1528 { - DWORD sv1528_scavtimeout; -} -alias SERVER_INFO_1528* PSERVER_INFO_1528, LPSERVER_INFO_1528; - -struct SERVER_INFO_1529 { - DWORD sv1529_minrcvqueue; -} -alias SERVER_INFO_1529* PSERVER_INFO_1529, LPSERVER_INFO_1529; - -struct SERVER_INFO_1530 { - DWORD sv1530_minfreeworkitems; -} -alias SERVER_INFO_1530* PSERVER_INFO_1530, LPSERVER_INFO_1530; - -struct SERVER_INFO_1533 { - DWORD sv1533_maxmpxct; -} -alias SERVER_INFO_1533* PSERVER_INFO_1533, LPSERVER_INFO_1533; - -struct SERVER_INFO_1534 { - DWORD sv1534_oplockbreakwait; -} -alias SERVER_INFO_1534* PSERVER_INFO_1534, LPSERVER_INFO_1534; - -struct SERVER_INFO_1535 { - DWORD sv1535_oplockbreakresponsewait; -} -alias SERVER_INFO_1535* PSERVER_INFO_1535, LPSERVER_INFO_1535; - -struct SERVER_INFO_1536 { - BOOL sv1536_enableoplocks; -} -alias SERVER_INFO_1536* PSERVER_INFO_1536, LPSERVER_INFO_1536; - -struct SERVER_INFO_1537 { - BOOL sv1537_enableoplockforceclose; -} -alias SERVER_INFO_1537* PSERVER_INFO_1537, LPSERVER_INFO_1537; - -struct SERVER_INFO_1538 { - BOOL sv1538_enablefcbopens; -} -alias SERVER_INFO_1538* PSERVER_INFO_1538, LPSERVER_INFO_1538; - -struct SERVER_INFO_1539 { - BOOL sv1539_enableraw; -} -alias SERVER_INFO_1539* PSERVER_INFO_1539, LPSERVER_INFO_1539; - -struct SERVER_INFO_1540 { - BOOL sv1540_enablesharednetdrives; -} -alias SERVER_INFO_1540* PSERVER_INFO_1540, LPSERVER_INFO_1540; - -struct SERVER_INFO_1541 { - BOOL sv1541_minfreeconnections; -} -alias SERVER_INFO_1541* PSERVER_INFO_1541, LPSERVER_INFO_1541; - -struct SERVER_INFO_1542 { - BOOL sv1542_maxfreeconnections; -} -alias SERVER_INFO_1542* PSERVER_INFO_1542, LPSERVER_INFO_1542; - -struct SERVER_INFO_1543 { - DWORD sv1543_initsesstable; -} -alias SERVER_INFO_1543* PSERVER_INFO_1543, LPSERVER_INFO_1543; - -struct SERVER_INFO_1544 { - DWORD sv1544_initconntable; -} -alias SERVER_INFO_1544* PSERVER_INFO_1544, LPSERVER_INFO_1544; - -struct SERVER_INFO_1545 { - DWORD sv1545_initfiletable; -} -alias SERVER_INFO_1545* PSERVER_INFO_1545, LPSERVER_INFO_1545; - -struct SERVER_INFO_1546 { - DWORD sv1546_initsearchtable; -} -alias SERVER_INFO_1546* PSERVER_INFO_1546, LPSERVER_INFO_1546; - -struct SERVER_INFO_1547 { - DWORD sv1547_alertschedule; -} -alias SERVER_INFO_1547* PSERVER_INFO_1547, LPSERVER_INFO_1547; - -struct SERVER_INFO_1548 { - DWORD sv1548_errorthreshold; -} -alias SERVER_INFO_1548* PSERVER_INFO_1548, LPSERVER_INFO_1548; - -struct SERVER_INFO_1549 { - DWORD sv1549_networkerrorthreshold; -} -alias SERVER_INFO_1549* PSERVER_INFO_1549, LPSERVER_INFO_1549; - -struct SERVER_INFO_1550 { - DWORD sv1550_diskspacethreshold; -} -alias SERVER_INFO_1550* PSERVER_INFO_1550, LPSERVER_INFO_1550; - -struct SERVER_INFO_1552 { - DWORD sv1552_maxlinkdelay; -} -alias SERVER_INFO_1552* PSERVER_INFO_1552, LPSERVER_INFO_1552; - -struct SERVER_INFO_1553 { - DWORD sv1553_minlinkthroughput; -} -alias SERVER_INFO_1553* PSERVER_INFO_1553, LPSERVER_INFO_1553; - -struct SERVER_INFO_1554 { - DWORD sv1554_linkinfovalidtime; -} -alias SERVER_INFO_1554* PSERVER_INFO_1554, LPSERVER_INFO_1554; - -struct SERVER_INFO_1555 { - DWORD sv1555_scavqosinfoupdatetime; -} -alias SERVER_INFO_1555* PSERVER_INFO_1555, LPSERVER_INFO_1555; - -struct SERVER_INFO_1556 { - DWORD sv1556_maxworkitemidletime; -} -alias SERVER_INFO_1556* PSERVER_INFO_1556, LPSERVER_INFO_1556; - -struct SERVER_INFO_1557 { - DWORD sv1557_maxrawworkitems; -} -alias SERVER_INFO_1557* PSERVER_INFO_1557, LPSERVER_INFO_1557; - -struct SERVER_INFO_1560 { - DWORD sv1560_producttype; -} -alias SERVER_INFO_1560* PSERVER_INFO_1560, LPSERVER_INFO_1560; - -struct SERVER_INFO_1561 { - DWORD sv1561_serversize; -} -alias SERVER_INFO_1561* PSERVER_INFO_1561, LPSERVER_INFO_1561; - -struct SERVER_INFO_1562 { - DWORD sv1562_connectionlessautodisc; -} -alias SERVER_INFO_1562* PSERVER_INFO_1562, LPSERVER_INFO_1562; - -struct SERVER_INFO_1563 { - DWORD sv1563_sharingviolationretries; -} -alias SERVER_INFO_1563* PSERVER_INFO_1563, LPSERVER_INFO_1563; - -struct SERVER_INFO_1564 { - DWORD sv1564_sharingviolationdelay; -} -alias SERVER_INFO_1564* PSERVER_INFO_1564, LPSERVER_INFO_1564; - -struct SERVER_INFO_1565 { - DWORD sv1565_maxglobalopensearch; -} -alias SERVER_INFO_1565* PSERVER_INFO_1565, LPSERVER_INFO_1565; - -struct SERVER_INFO_1566 { - BOOL sv1566_removeduplicatesearches; -} -alias SERVER_INFO_1566* PSERVER_INFO_1566, LPSERVER_INFO_1566; - -struct SERVER_INFO_1567 { - DWORD sv1567_lockviolationretries; -} -alias SERVER_INFO_1567* PSERVER_INFO_1567, LPSERVER_INFO_1567; - -struct SERVER_INFO_1568 { - DWORD sv1568_lockviolationoffset; -} -alias SERVER_INFO_1568* PSERVER_INFO_1568, LPSERVER_INFO_1568; - -struct SERVER_INFO_1569 { - DWORD sv1569_lockviolationdelay; -} -alias SERVER_INFO_1569* PSERVER_INFO_1569, LPSERVER_INFO_1569; - -struct SERVER_INFO_1570 { - DWORD sv1570_mdlreadswitchover; -} -alias SERVER_INFO_1570* PSERVER_INFO_1570, LPSERVER_INFO_1570; - -struct SERVER_INFO_1571 { - DWORD sv1571_cachedopenlimit; -} -alias SERVER_INFO_1571* PSERVER_INFO_1571, LPSERVER_INFO_1571; - -struct SERVER_INFO_1572 { - DWORD sv1572_criticalthreads; -} -alias SERVER_INFO_1572* PSERVER_INFO_1572, LPSERVER_INFO_1572; - -struct SERVER_INFO_1573 { - DWORD sv1573_restrictnullsessaccess; -} -alias SERVER_INFO_1573* PSERVER_INFO_1573, LPSERVER_INFO_1573; - -struct SERVER_INFO_1574 { - DWORD sv1574_enablewfw311directipx; -} -alias SERVER_INFO_1574* PSERVER_INFO_1574, LPSERVER_INFO_1574; - -struct SERVER_INFO_1575 { - DWORD sv1575_otherqueueaffinity; -} -alias SERVER_INFO_1575* PSERVER_INFO_1575, LPSERVER_INFO_1575; - -struct SERVER_INFO_1576 { - DWORD sv1576_queuesamplesecs; -} -alias SERVER_INFO_1576* PSERVER_INFO_1576, LPSERVER_INFO_1576; - -struct SERVER_INFO_1577 { - DWORD sv1577_balancecount; -} -alias SERVER_INFO_1577* PSERVER_INFO_1577, LPSERVER_INFO_1577; - -struct SERVER_INFO_1578 { - DWORD sv1578_preferredaffinity; -} -alias SERVER_INFO_1578* PSERVER_INFO_1578, LPSERVER_INFO_1578; - -struct SERVER_INFO_1579 { - DWORD sv1579_maxfreerfcbs; -} -alias SERVER_INFO_1579* PSERVER_INFO_1579, LPSERVER_INFO_1579; - -struct SERVER_INFO_1580 { - DWORD sv1580_maxfreemfcbs; -} -alias SERVER_INFO_1580* PSERVER_INFO_1580, LPSERVER_INFO_1580; - -struct SERVER_INFO_1581 { - DWORD sv1581_maxfreemlcbs; -} -alias SERVER_INFO_1581* PSERVER_INFO_1581, LPSERVER_INFO_1581; - -struct SERVER_INFO_1582 { - DWORD sv1582_maxfreepagedpoolchunks; -} -alias SERVER_INFO_1582* PSERVER_INFO_1582, LPSERVER_INFO_1582; - -struct SERVER_INFO_1583 { - DWORD sv1583_minpagedpoolchunksize; -} -alias SERVER_INFO_1583* PSERVER_INFO_1583, LPSERVER_INFO_1583; - -struct SERVER_INFO_1584 { - DWORD sv1584_maxpagedpoolchunksize; -} -alias SERVER_INFO_1584* PSERVER_INFO_1584, LPSERVER_INFO_1584; - -struct SERVER_INFO_1585 { - BOOL sv1585_sendsfrompreferredprocessor; -} -alias SERVER_INFO_1585* PSERVER_INFO_1585, LPSERVER_INFO_1585; - -struct SERVER_INFO_1586 { - BOOL sv1586_maxthreadsperqueue; -} -alias SERVER_INFO_1586* PSERVER_INFO_1586, LPSERVER_INFO_1586; - -struct SERVER_TRANSPORT_INFO_0 { - DWORD svti0_numberofvcs; - LPWSTR svti0_transportname; - PBYTE svti0_transportaddress; - DWORD svti0_transportaddresslength; - LPWSTR svti0_networkaddress; -} -alias SERVER_TRANSPORT_INFO_0* PSERVER_TRANSPORT_INFO_0, - LPSERVER_TRANSPORT_INFO_0; - -extern (Windows): -NET_API_STATUS NetServerEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD); -NET_API_STATUS NetServerEnumEx(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR); -NET_API_STATUS NetServerGetInfo(LPWSTR,DWORD,PBYTE*); -NET_API_STATUS NetServerSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetServerSetInfoCommandLine(WORD,LPWSTR*); -NET_API_STATUS NetServerDiskEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetServerComputerNameAdd(LPWSTR,LPWSTR,LPWSTR); -NET_API_STATUS NetServerComputerNameDel(LPWSTR,LPWSTR); -NET_API_STATUS NetServerTransportAdd(LPWSTR,DWORD,PBYTE); -NET_API_STATUS NetServerTransportAddEx(LPWSTR,DWORD,PBYTE); -NET_API_STATUS NetServerTransportDel(LPWSTR,DWORD,PBYTE); -NET_API_STATUS NetServerTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -BOOL SetServiceBits(SERVICE_STATUS_HANDLE,DWORD,BOOL,BOOL); - -const SVI1_NUM_ELEMENTS=5; -const SVI2_NUM_ELEMENTS=40; -const SVI3_NUM_ELEMENTS=44; -const SV_MAX_CMD_LEN=PATHLEN; -const SW_AUTOPROF_LOAD_MASK=1; -const SW_AUTOPROF_SAVE_MASK=2; -const SV_MAX_SRV_HEUR_LEN=32; -const SV_USERS_PER_LICENSE=5; -const SV_PLATFORM_ID_OS2=400; -const SV_PLATFORM_ID_NT=500; -const MAJOR_VERSION_MASK=15; -const SV_TYPE_WORKSTATION=1; -const SV_TYPE_SERVER=2; -const SV_TYPE_SQLSERVER=4; -const SV_TYPE_DOMAIN_CTRL=8; -const SV_TYPE_DOMAIN_BAKCTRL=16; -const SV_TYPE_TIME_SOURCE=32; -const SV_TYPE_AFP=64; -const SV_TYPE_NOVELL=128; -const SV_TYPE_DOMAIN_MEMBER=256; -const SV_TYPE_PRINTQ_SERVER=512; -const SV_TYPE_DIALIN_SERVER=1024; -const SV_TYPE_XENIX_SERVER=2048; -const SV_TYPE_SERVER_UNIX=SV_TYPE_XENIX_SERVER; -const SV_TYPE_NT=4096; -const SV_TYPE_WFW=8192; -const SV_TYPE_SERVER_MFPN=16384; -const SV_TYPE_SERVER_NT=32768; -const SV_TYPE_POTENTIAL_BROWSER=65536; -const SV_TYPE_BACKUP_BROWSER=0x20000; -const SV_TYPE_MASTER_BROWSER=0x40000; -const SV_TYPE_DOMAIN_MASTER=0x80000; -const SV_TYPE_SERVER_OSF=0x100000; -const SV_TYPE_SERVER_VMS=0x200000; -const SV_TYPE_WINDOWS=0x400000; -const SV_TYPE_ALTERNATE_XPORT=0x20000000; -const SV_TYPE_LOCAL_LIST_ONLY=0x40000000; -const SV_TYPE_DOMAIN_ENUM=0x80000000; -const SV_TYPE_ALL=0xFFFFFFFF; -const SV_NODISC=(-1); -const SV_USERSECURITY=1; -const SV_SHARESECURITY=0; -const SV_HIDDEN=1; -const SV_VISIBLE=0; -const SV_PLATFORM_ID_PARMNUM=101; -const SV_NAME_PARMNUM=102; -const SV_VERSION_MAJOR_PARMNUM=103; -const SV_VERSION_MINOR_PARMNUM=104; -const SV_TYPE_PARMNUM=105; -const SV_COMMENT_PARMNUM=5; -const SV_USERS_PARMNUM=107; -const SV_DISC_PARMNUM=10; -const SV_HIDDEN_PARMNUM=16; -const SV_ANNOUNCE_PARMNUM=17; -const SV_ANNDELTA_PARMNUM=18; -const SV_USERPATH_PARMNUM=112; -const SV_ULIST_MTIME_PARMNUM=401; -const SV_GLIST_MTIME_PARMNUM=402; -const SV_ALIST_MTIME_PARMNUM=403; -const SV_ALERTS_PARMNUM=11; -const SV_SECURITY_PARMNUM=405; -const SV_NUMADMIN_PARMNUM=406; -const SV_LANMASK_PARMNUM=407; -const SV_GUESTACC_PARMNUM=408; -const SV_CHDEVQ_PARMNUM=410; -const SV_CHDEVJOBS_PARMNUM=411; -const SV_CONNECTIONS_PARMNUM=412; -const SV_SHARES_PARMNUM=413; -const SV_OPENFILES_PARMNUM=414; -const SV_SESSREQS_PARMNUM=417; -const SV_ACTIVELOCKS_PARMNUM=419; -const SV_NUMREQBUF_PARMNUM=420; -const SV_NUMBIGBUF_PARMNUM=422; -const SV_NUMFILETASKS_PARMNUM=423; -const SV_ALERTSCHED_PARMNUM=37; -const SV_ERRORALERT_PARMNUM=38; -const SV_LOGONALERT_PARMNUM=39; -const SV_ACCESSALERT_PARMNUM=40; -const SV_DISKALERT_PARMNUM=41; -const SV_NETIOALERT_PARMNUM=42; -const SV_MAXAUDITSZ_PARMNUM=43; -const SV_SRVHEURISTICS_PARMNUM=431; -const SV_SESSOPENS_PARMNUM=501; -const SV_SESSVCS_PARMNUM=502; -const SV_OPENSEARCH_PARMNUM=503; -const SV_SIZREQBUF_PARMNUM=504; -const SV_INITWORKITEMS_PARMNUM=505; -const SV_MAXWORKITEMS_PARMNUM=506; -const SV_RAWWORKITEMS_PARMNUM=507; -const SV_IRPSTACKSIZE_PARMNUM=508; -const SV_MAXRAWBUFLEN_PARMNUM=509; -const SV_SESSUSERS_PARMNUM=510; -const SV_SESSCONNS_PARMNUM=511; -const SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM=512; -const SV_MAXPAGEDMEMORYUSAGE_PARMNUM=513; -const SV_ENABLESOFTCOMPAT_PARMNUM=514; -const SV_ENABLEFORCEDLOGOFF_PARMNUM=515; -const SV_TIMESOURCE_PARMNUM=516; -const SV_ACCEPTDOWNLEVELAPIS_PARMNUM=517; -const SV_LMANNOUNCE_PARMNUM=518; -const SV_DOMAIN_PARMNUM=519; -const SV_MAXCOPYREADLEN_PARMNUM=520; -const SV_MAXCOPYWRITELEN_PARMNUM=521; -const SV_MINKEEPSEARCH_PARMNUM=522; -const SV_MAXKEEPSEARCH_PARMNUM=523; -const SV_MINKEEPCOMPLSEARCH_PARMNUM=524; -const SV_MAXKEEPCOMPLSEARCH_PARMNUM=525; -const SV_THREADCOUNTADD_PARMNUM=526; -const SV_NUMBLOCKTHREADS_PARMNUM=527; -const SV_SCAVTIMEOUT_PARMNUM=528; -const SV_MINRCVQUEUE_PARMNUM=529; -const SV_MINFREEWORKITEMS_PARMNUM=530; -const SV_XACTMEMSIZE_PARMNUM=531; -const SV_THREADPRIORITY_PARMNUM=532; -const SV_MAXMPXCT_PARMNUM=533; -const SV_OPLOCKBREAKWAIT_PARMNUM=534; -const SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM=535; -const SV_ENABLEOPLOCKS_PARMNUM=536; -const SV_ENABLEOPLOCKFORCECLOSE_PARMNUM=537; -const SV_ENABLEFCBOPENS_PARMNUM=538; -const SV_ENABLERAW_PARMNUM=539; -const SV_ENABLESHAREDNETDRIVES_PARMNUM=540; -const SV_MINFREECONNECTIONS_PARMNUM=541; -const SV_MAXFREECONNECTIONS_PARMNUM=542; -const SV_INITSESSTABLE_PARMNUM=543; -const SV_INITCONNTABLE_PARMNUM=544; -const SV_INITFILETABLE_PARMNUM=545; -const SV_INITSEARCHTABLE_PARMNUM=546; -const SV_ALERTSCHEDULE_PARMNUM=547; -const SV_ERRORTHRESHOLD_PARMNUM=548; -const SV_NETWORKERRORTHRESHOLD_PARMNUM=549; -const SV_DISKSPACETHRESHOLD_PARMNUM=550; -const SV_MAXLINKDELAY_PARMNUM=552; -const SV_MINLINKTHROUGHPUT_PARMNUM=553; -const SV_LINKINFOVALIDTIME_PARMNUM=554; -const SV_SCAVQOSINFOUPDATETIME_PARMNUM=555; -const SV_MAXWORKITEMIDLETIME_PARMNUM=556; -const SV_MAXRAWWORKITEMS_PARMNUM=557; -const SV_PRODUCTTYPE_PARMNUM=560; -const SV_SERVERSIZE_PARMNUM=561; -const SV_CONNECTIONLESSAUTODISC_PARMNUM=562; -const SV_SHARINGVIOLATIONRETRIES_PARMNUM=563; -const SV_SHARINGVIOLATIONDELAY_PARMNUM=564; -const SV_MAXGLOBALOPENSEARCH_PARMNUM=565; -const SV_REMOVEDUPLICATESEARCHES_PARMNUM=566; -const SV_LOCKVIOLATIONRETRIES_PARMNUM=567; -const SV_LOCKVIOLATIONOFFSET_PARMNUM=568; -const SV_LOCKVIOLATIONDELAY_PARMNUM=569; -const SV_MDLREADSWITCHOVER_PARMNUM=570; -const SV_CACHEDOPENLIMIT_PARMNUM=571; -const SV_CRITICALTHREADS_PARMNUM=572; -const SV_RESTRICTNULLSESSACCESS_PARMNUM=573; -const SV_ENABLEWFW311DIRECTIPX_PARMNUM=574; -const SV_OTHERQUEUEAFFINITY_PARMNUM=575; -const SV_QUEUESAMPLESECS_PARMNUM=576; -const SV_BALANCECOUNT_PARMNUM=577; -const SV_PREFERREDAFFINITY_PARMNUM=578; -const SV_MAXFREERFCBS_PARMNUM=579; -const SV_MAXFREEMFCBS_PARMNUM=580; -const SV_MAXFREELFCBS_PARMNUM=581; -const SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM=582; -const SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM=583; -const SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM=584; -const SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM=585; -const SV_MAXTHREADSPERQUEUE_PARMNUM=586; -const SV_COMMENT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM); -const SV_USERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM); -const SV_DISC_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM); -const SV_HIDDEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM); -const SV_ANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM); -const SV_ANNDELTA_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM); -const SV_SESSOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM); -const SV_SESSVCS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM); -const SV_OPENSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM); -const SV_MAXWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM); -const SV_MAXRAWBUFLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM); -const SV_SESSUSERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM); -const SV_SESSCONNS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM); -const SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM); -const SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM); -const SV_ENABLESOFTCOMPAT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM); -const SV_ENABLEFORCEDLOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM); -const SV_TIMESOURCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM); -const SV_LMANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM); -const SV_MAXCOPYREADLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM); -const SV_MAXCOPYWRITELEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM); -const SV_MINKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM); -const SV_MAXKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM); -const SV_MINKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM); -const SV_MAXKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM); -const SV_SCAVTIMEOUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM); -const SV_MINRCVQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM); -const SV_MINFREEWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM); -const SV_MAXMPXCT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM); -const SV_OPLOCKBREAKWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM); -const SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM); -const SV_ENABLEOPLOCKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM); -const SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM); -const SV_ENABLEFCBOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM); -const SV_ENABLERAW_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM); -const SV_ENABLESHAREDNETDRIVES_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM); -const SV_MINFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM); -const SV_MAXFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM); -const SV_INITSESSTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM); -const SV_INITCONNTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM); -const SV_INITFILETABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM); -const SV_INITSEARCHTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM); -const SV_ALERTSCHEDULE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM); -const SV_ERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM); -const SV_NETWORKERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM); -const SV_DISKSPACETHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM); -const SV_MAXLINKDELAY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM); -const SV_MINLINKTHROUGHPUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM); -const SV_LINKINFOVALIDTIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM); -const SV_SCAVQOSINFOUPDATETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM); -const SV_MAXWORKITEMIDLETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM); -const SV_MAXRAWWORKITEMS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM); -const SV_PRODUCTTYPE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM); -const SV_SERVERSIZE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM); -const SV_CONNECTIONLESSAUTODISC_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM); -const SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM); -const SV_SHARINGVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM); -const SV_MAXGLOBALOPENSEARCH_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM); -const SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM); -const SV_LOCKVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM); -const SV_LOCKVIOLATIONOFFSET_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM); -const SV_LOCKVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM); -const SV_MDLREADSWITCHOVER_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM); -const SV_CACHEDOPENLIMIT_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM); -const SV_CRITICALTHREADS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM); -const SV_RESTRICTNULLSESSACCESS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM); -const SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM); -const SV_OTHERQUEUEAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM); -const SV_QUEUESAMPLESECS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM); -const SV_BALANCECOUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM); -const SV_PREFERREDAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM); -const SV_MAXFREERFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM); -const SV_MAXFREEMFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM); -const SV_MAXFREELFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM); -const SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM); -const SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM); -const SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM); -const SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM); -const SV_MAXTHREADSPERQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM); +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmserver.d) + */ +module core.sys.windows.lmserver; + +import core.sys.windows.winsvc; +private import core.sys.windows.lmcons, core.sys.windows.windef; + +struct SERVER_INFO_100 { + DWORD sv100_platform_id; + LPWSTR sv100_name; +} +alias SERVER_INFO_100* PSERVER_INFO_100, LPSERVER_INFO_100; + +struct SERVER_INFO_101 { + DWORD sv101_platform_id; + LPWSTR sv101_name; + DWORD sv101_version_major; + DWORD sv101_version_minor; + DWORD sv101_type; + LPWSTR sv101_comment; +} +alias SERVER_INFO_101* PSERVER_INFO_101, LPSERVER_INFO_101; + +struct SERVER_INFO_102 { + DWORD sv102_platform_id; + LPWSTR sv102_name; + DWORD sv102_version_major; + DWORD sv102_version_minor; + DWORD sv102_type; + LPWSTR sv102_comment; + DWORD sv102_users; + LONG sv102_disc; + BOOL sv102_hidden; + DWORD sv102_announce; + DWORD sv102_anndelta; + DWORD sv102_licenses; + LPWSTR sv102_userpath; +} +alias SERVER_INFO_102* PSERVER_INFO_102, LPSERVER_INFO_102; + +struct SERVER_INFO_402 { + DWORD sv402_ulist_mtime; + DWORD sv402_glist_mtime; + DWORD sv402_alist_mtime; + LPWSTR sv402_alerts; + DWORD sv402_security; + DWORD sv402_numadmin; + DWORD sv402_lanmask; + LPWSTR sv402_guestacct; + DWORD sv402_chdevs; + DWORD sv402_chdevq; + DWORD sv402_chdevjobs; + DWORD sv402_connections; + DWORD sv402_shares; + DWORD sv402_openfiles; + DWORD sv402_sessopens; + DWORD sv402_sessvcs; + DWORD sv402_sessreqs; + DWORD sv402_opensearch; + DWORD sv402_activelocks; + DWORD sv402_numreqbuf; + DWORD sv402_sizreqbuf; + DWORD sv402_numbigbuf; + DWORD sv402_numfiletasks; + DWORD sv402_alertsched; + DWORD sv402_erroralert; + DWORD sv402_logonalert; + DWORD sv402_accessalert; + DWORD sv402_diskalert; + DWORD sv402_netioalert; + DWORD sv402_maxauditsz; + LPWSTR sv402_srvheuristics; +} +alias SERVER_INFO_402* PSERVER_INFO_402, LPSERVER_INFO_402; + +struct SERVER_INFO_403 { + DWORD sv403_ulist_mtime; + DWORD sv403_glist_mtime; + DWORD sv403_alist_mtime; + LPWSTR sv403_alerts; + DWORD sv403_security; + DWORD sv403_numadmin; + DWORD sv403_lanmask; + LPWSTR sv403_guestacct; + DWORD sv403_chdevs; + DWORD sv403_chdevq; + DWORD sv403_chdevjobs; + DWORD sv403_connections; + DWORD sv403_shares; + DWORD sv403_openfiles; + DWORD sv403_sessopens; + DWORD sv403_sessvcs; + DWORD sv403_sessreqs; + DWORD sv403_opensearch; + DWORD sv403_activelocks; + DWORD sv403_numreqbuf; + DWORD sv403_sizreqbuf; + DWORD sv403_numbigbuf; + DWORD sv403_numfiletasks; + DWORD sv403_alertsched; + DWORD sv403_erroralert; + DWORD sv403_logonalert; + DWORD sv403_accessalert; + DWORD sv403_diskalert; + DWORD sv403_netioalert; + DWORD sv403_maxauditsz; + LPWSTR sv403_srvheuristics; + DWORD sv403_auditedevents; + DWORD sv403_autoprofile; + LPWSTR sv403_autopath; +} +alias SERVER_INFO_403* PSERVER_INFO_403, LPSERVER_INFO_403; + +struct SERVER_INFO_502 { + DWORD sv502_sessopens; + DWORD sv502_sessvcs; + DWORD sv502_opensearch; + DWORD sv502_sizreqbuf; + DWORD sv502_initworkitems; + DWORD sv502_maxworkitems; + DWORD sv502_rawworkitems; + DWORD sv502_irpstacksize; + DWORD sv502_maxrawbuflen; + DWORD sv502_sessusers; + DWORD sv502_sessconns; + DWORD sv502_maxpagedmemoryusage; + DWORD sv502_maxnonpagedmemoryusage; + BOOL sv502_enablesoftcompat; + BOOL sv502_enableforcedlogoff; + BOOL sv502_timesource; + BOOL sv502_acceptdownlevelapis; + BOOL sv502_lmannounce; +} +alias SERVER_INFO_502* PSERVER_INFO_502, LPSERVER_INFO_502; + +struct SERVER_INFO_503 { + DWORD sv503_sessopens; + DWORD sv503_sessvcs; + DWORD sv503_opensearch; + DWORD sv503_sizreqbuf; + DWORD sv503_initworkitems; + DWORD sv503_maxworkitems; + DWORD sv503_rawworkitems; + DWORD sv503_irpstacksize; + DWORD sv503_maxrawbuflen; + DWORD sv503_sessusers; + DWORD sv503_sessconns; + DWORD sv503_maxpagedmemoryusage; + DWORD sv503_maxnonpagedmemoryusage; + BOOL sv503_enablesoftcompat; + BOOL sv503_enableforcedlogoff; + BOOL sv503_timesource; + BOOL sv503_acceptdownlevelapis; + BOOL sv503_lmannounce; + LPWSTR sv503_domain; + DWORD sv503_maxcopyreadlen; + DWORD sv503_maxcopywritelen; + DWORD sv503_minkeepsearch; + DWORD sv503_maxkeepsearch; + DWORD sv503_minkeepcomplsearch; + DWORD sv503_maxkeepcomplsearch; + DWORD sv503_threadcountadd; + DWORD sv503_numblockthreads; + DWORD sv503_scavtimeout; + DWORD sv503_minrcvqueue; + DWORD sv503_minfreeworkitems; + DWORD sv503_xactmemsize; + DWORD sv503_threadpriority; + DWORD sv503_maxmpxct; + DWORD sv503_oplockbreakwait; + DWORD sv503_oplockbreakresponsewait; + BOOL sv503_enableoplocks; + BOOL sv503_enableoplockforceclose; + BOOL sv503_enablefcbopens; + BOOL sv503_enableraw; + BOOL sv503_enablesharednetdrives; + DWORD sv503_minfreeconnections; + DWORD sv503_maxfreeconnections; +} +alias SERVER_INFO_503* PSERVER_INFO_503, LPSERVER_INFO_503; + +struct SERVER_INFO_599 { + DWORD sv599_sessopens; + DWORD sv599_sessvcs; + DWORD sv599_opensearch; + DWORD sv599_sizreqbuf; + DWORD sv599_initworkitems; + DWORD sv599_maxworkitems; + DWORD sv599_rawworkitems; + DWORD sv599_irpstacksize; + DWORD sv599_maxrawbuflen; + DWORD sv599_sessusers; + DWORD sv599_sessconns; + DWORD sv599_maxpagedmemoryusage; + DWORD sv599_maxnonpagedmemoryusage; + BOOL sv599_enablesoftcompat; + BOOL sv599_enableforcedlogoff; + BOOL sv599_timesource; + BOOL sv599_acceptdownlevelapis; + BOOL sv599_lmannounce; + LPWSTR sv599_domain; + DWORD sv599_maxcopyreadlen; + DWORD sv599_maxcopywritelen; + DWORD sv599_minkeepsearch; + DWORD sv599_maxkeepsearch; + DWORD sv599_minkeepcomplsearch; + DWORD sv599_maxkeepcomplsearch; + DWORD sv599_threadcountadd; + DWORD sv599_numblockthreads; + DWORD sv599_scavtimeout; + DWORD sv599_minrcvqueue; + DWORD sv599_minfreeworkitems; + DWORD sv599_xactmemsize; + DWORD sv599_threadpriority; + DWORD sv599_maxmpxct; + DWORD sv599_oplockbreakwait; + DWORD sv599_oplockbreakresponsewait; + BOOL sv599_enableoplocks; + BOOL sv599_enableoplockforceclose; + BOOL sv599_enablefcbopens; + BOOL sv599_enableraw; + BOOL sv599_enablesharednetdrives; + DWORD sv599_minfreeconnections; + DWORD sv599_maxfreeconnections; + DWORD sv599_initsesstable; + DWORD sv599_initconntable; + DWORD sv599_initfiletable; + DWORD sv599_initsearchtable; + DWORD sv599_alertschedule; + DWORD sv599_errorthreshold; + DWORD sv599_networkerrorthreshold; + DWORD sv599_diskspacethreshold; + DWORD sv599_reserved; + DWORD sv599_maxlinkdelay; + DWORD sv599_minlinkthroughput; + DWORD sv599_linkinfovalidtime; + DWORD sv599_scavqosinfoupdatetime; + DWORD sv599_maxworkitemidletime; +} +alias SERVER_INFO_599* PSERVER_INFO_599, LPSERVER_INFO_599; + +struct SERVER_INFO_598 { + DWORD sv598_maxrawworkitems; + DWORD sv598_maxthreadsperqueue; + DWORD sv598_producttype; + DWORD sv598_serversize; + DWORD sv598_connectionlessautodisc; + DWORD sv598_sharingviolationretries; + DWORD sv598_sharingviolationdelay; + DWORD sv598_maxglobalopensearch; + DWORD sv598_removeduplicatesearches; + DWORD sv598_lockviolationoffset; + DWORD sv598_lockviolationdelay; + DWORD sv598_mdlreadswitchover; + DWORD sv598_cachedopenlimit; + DWORD sv598_otherqueueaffinity; + BOOL sv598_restrictnullsessaccess; + BOOL sv598_enablewfw311directipx; + DWORD sv598_queuesamplesecs; + DWORD sv598_balancecount; + DWORD sv598_preferredaffinity; + DWORD sv598_maxfreerfcbs; + DWORD sv598_maxfreemfcbs; + DWORD sv598_maxfreelfcbs; + DWORD sv598_maxfreepagedpoolchunks; + DWORD sv598_minpagedpoolchunksize; + DWORD sv598_maxpagedpoolchunksize; + BOOL sv598_sendsfrompreferredprocessor; +} +alias SERVER_INFO_598* PSERVER_INFO_598, LPSERVER_INFO_598; + +struct SERVER_INFO_1005 { + LPWSTR sv1005_comment; +} +alias SERVER_INFO_1005* PSERVER_INFO_1005, LPSERVER_INFO_1005; + +struct SERVER_INFO_1107 { + DWORD sv1107_users; +} +alias SERVER_INFO_1107* PSERVER_INFO_1107, LPSERVER_INFO_1107; + +struct SERVER_INFO_1010 { + LONG sv1010_disc; +} +alias SERVER_INFO_1010* PSERVER_INFO_1010, LPSERVER_INFO_1010; + +struct SERVER_INFO_1016 { + BOOL sv1016_hidden; +} +alias SERVER_INFO_1016* PSERVER_INFO_1016, LPSERVER_INFO_1016; + +struct SERVER_INFO_1017 { + DWORD sv1017_announce; +} +alias SERVER_INFO_1017* PSERVER_INFO_1017, LPSERVER_INFO_1017; + +struct SERVER_INFO_1018 { + DWORD sv1018_anndelta; +} +alias SERVER_INFO_1018* PSERVER_INFO_1018, LPSERVER_INFO_1018; + +struct SERVER_INFO_1501 { + DWORD sv1501_sessopens; +} +alias SERVER_INFO_1501* PSERVER_INFO_1501, LPSERVER_INFO_1501; + +struct SERVER_INFO_1502 { + DWORD sv1502_sessvcs; +} +alias SERVER_INFO_1502* PSERVER_INFO_1502, LPSERVER_INFO_1502; + +struct SERVER_INFO_1503 { + DWORD sv1503_opensearch; +} +alias SERVER_INFO_1503* PSERVER_INFO_1503, LPSERVER_INFO_1503; + +struct SERVER_INFO_1506 { + DWORD sv1506_maxworkitems; +} +alias SERVER_INFO_1506* PSERVER_INFO_1506, LPSERVER_INFO_1506; + +struct SERVER_INFO_1509 { + DWORD sv1509_maxrawbuflen; +} +alias SERVER_INFO_1509* PSERVER_INFO_1509, LPSERVER_INFO_1509; + +struct SERVER_INFO_1510 { + DWORD sv1510_sessusers; +} +alias SERVER_INFO_1510* PSERVER_INFO_1510, LPSERVER_INFO_1510; + +struct SERVER_INFO_1511 { + DWORD sv1511_sessconns; +} alias SERVER_INFO_1511* PSERVER_INFO_1511, LPSERVER_INFO_1511; + +struct SERVER_INFO_1512 { + DWORD sv1512_maxnonpagedmemoryusage; +} +alias SERVER_INFO_1512* PSERVER_INFO_1512, LPSERVER_INFO_1512; + +struct SERVER_INFO_1513 { + DWORD sv1513_maxpagedmemoryusage; +} +alias SERVER_INFO_1513* PSERVER_INFO_1513, LPSERVER_INFO_1513; + +struct SERVER_INFO_1514 { + BOOL sv1514_enablesoftcompat; +} +alias SERVER_INFO_1514* PSERVER_INFO_1514, LPSERVER_INFO_1514; + +struct SERVER_INFO_1515 { + BOOL sv1515_enableforcedlogoff; +} +alias SERVER_INFO_1515* PSERVER_INFO_1515, LPSERVER_INFO_1515; + +struct SERVER_INFO_1516 { + BOOL sv1516_timesource; +} +alias SERVER_INFO_1516* PSERVER_INFO_1516, LPSERVER_INFO_1516; + +struct SERVER_INFO_1518 { + BOOL sv1518_lmannounce; +} +alias SERVER_INFO_1518* PSERVER_INFO_1518, LPSERVER_INFO_1518; + +struct SERVER_INFO_1520 { + DWORD sv1520_maxcopyreadlen; +} +alias SERVER_INFO_1520* PSERVER_INFO_1520, LPSERVER_INFO_1520; + +struct SERVER_INFO_1521 { + DWORD sv1521_maxcopywritelen; +} +alias SERVER_INFO_1521* PSERVER_INFO_1521, LPSERVER_INFO_1521; + +struct SERVER_INFO_1522 { + DWORD sv1522_minkeepsearch; +} +alias SERVER_INFO_1522* PSERVER_INFO_1522, LPSERVER_INFO_1522; + +struct SERVER_INFO_1523 { + DWORD sv1523_maxkeepsearch; +} +alias SERVER_INFO_1523* PSERVER_INFO_1523, LPSERVER_INFO_1523; + +struct SERVER_INFO_1524 { + DWORD sv1524_minkeepcomplsearch; +} +alias SERVER_INFO_1524* PSERVER_INFO_1524, LPSERVER_INFO_1524; + +struct SERVER_INFO_1525 { + DWORD sv1525_maxkeepcomplsearch; +} +alias SERVER_INFO_1525* PSERVER_INFO_1525, LPSERVER_INFO_1525; + +struct SERVER_INFO_1528 { + DWORD sv1528_scavtimeout; +} +alias SERVER_INFO_1528* PSERVER_INFO_1528, LPSERVER_INFO_1528; + +struct SERVER_INFO_1529 { + DWORD sv1529_minrcvqueue; +} +alias SERVER_INFO_1529* PSERVER_INFO_1529, LPSERVER_INFO_1529; + +struct SERVER_INFO_1530 { + DWORD sv1530_minfreeworkitems; +} +alias SERVER_INFO_1530* PSERVER_INFO_1530, LPSERVER_INFO_1530; + +struct SERVER_INFO_1533 { + DWORD sv1533_maxmpxct; +} +alias SERVER_INFO_1533* PSERVER_INFO_1533, LPSERVER_INFO_1533; + +struct SERVER_INFO_1534 { + DWORD sv1534_oplockbreakwait; +} +alias SERVER_INFO_1534* PSERVER_INFO_1534, LPSERVER_INFO_1534; + +struct SERVER_INFO_1535 { + DWORD sv1535_oplockbreakresponsewait; +} +alias SERVER_INFO_1535* PSERVER_INFO_1535, LPSERVER_INFO_1535; + +struct SERVER_INFO_1536 { + BOOL sv1536_enableoplocks; +} +alias SERVER_INFO_1536* PSERVER_INFO_1536, LPSERVER_INFO_1536; + +struct SERVER_INFO_1537 { + BOOL sv1537_enableoplockforceclose; +} +alias SERVER_INFO_1537* PSERVER_INFO_1537, LPSERVER_INFO_1537; + +struct SERVER_INFO_1538 { + BOOL sv1538_enablefcbopens; +} +alias SERVER_INFO_1538* PSERVER_INFO_1538, LPSERVER_INFO_1538; + +struct SERVER_INFO_1539 { + BOOL sv1539_enableraw; +} +alias SERVER_INFO_1539* PSERVER_INFO_1539, LPSERVER_INFO_1539; + +struct SERVER_INFO_1540 { + BOOL sv1540_enablesharednetdrives; +} +alias SERVER_INFO_1540* PSERVER_INFO_1540, LPSERVER_INFO_1540; + +struct SERVER_INFO_1541 { + BOOL sv1541_minfreeconnections; +} +alias SERVER_INFO_1541* PSERVER_INFO_1541, LPSERVER_INFO_1541; + +struct SERVER_INFO_1542 { + BOOL sv1542_maxfreeconnections; +} +alias SERVER_INFO_1542* PSERVER_INFO_1542, LPSERVER_INFO_1542; + +struct SERVER_INFO_1543 { + DWORD sv1543_initsesstable; +} +alias SERVER_INFO_1543* PSERVER_INFO_1543, LPSERVER_INFO_1543; + +struct SERVER_INFO_1544 { + DWORD sv1544_initconntable; +} +alias SERVER_INFO_1544* PSERVER_INFO_1544, LPSERVER_INFO_1544; + +struct SERVER_INFO_1545 { + DWORD sv1545_initfiletable; +} +alias SERVER_INFO_1545* PSERVER_INFO_1545, LPSERVER_INFO_1545; + +struct SERVER_INFO_1546 { + DWORD sv1546_initsearchtable; +} +alias SERVER_INFO_1546* PSERVER_INFO_1546, LPSERVER_INFO_1546; + +struct SERVER_INFO_1547 { + DWORD sv1547_alertschedule; +} +alias SERVER_INFO_1547* PSERVER_INFO_1547, LPSERVER_INFO_1547; + +struct SERVER_INFO_1548 { + DWORD sv1548_errorthreshold; +} +alias SERVER_INFO_1548* PSERVER_INFO_1548, LPSERVER_INFO_1548; + +struct SERVER_INFO_1549 { + DWORD sv1549_networkerrorthreshold; +} +alias SERVER_INFO_1549* PSERVER_INFO_1549, LPSERVER_INFO_1549; + +struct SERVER_INFO_1550 { + DWORD sv1550_diskspacethreshold; +} +alias SERVER_INFO_1550* PSERVER_INFO_1550, LPSERVER_INFO_1550; + +struct SERVER_INFO_1552 { + DWORD sv1552_maxlinkdelay; +} +alias SERVER_INFO_1552* PSERVER_INFO_1552, LPSERVER_INFO_1552; + +struct SERVER_INFO_1553 { + DWORD sv1553_minlinkthroughput; +} +alias SERVER_INFO_1553* PSERVER_INFO_1553, LPSERVER_INFO_1553; + +struct SERVER_INFO_1554 { + DWORD sv1554_linkinfovalidtime; +} +alias SERVER_INFO_1554* PSERVER_INFO_1554, LPSERVER_INFO_1554; + +struct SERVER_INFO_1555 { + DWORD sv1555_scavqosinfoupdatetime; +} +alias SERVER_INFO_1555* PSERVER_INFO_1555, LPSERVER_INFO_1555; + +struct SERVER_INFO_1556 { + DWORD sv1556_maxworkitemidletime; +} +alias SERVER_INFO_1556* PSERVER_INFO_1556, LPSERVER_INFO_1556; + +struct SERVER_INFO_1557 { + DWORD sv1557_maxrawworkitems; +} +alias SERVER_INFO_1557* PSERVER_INFO_1557, LPSERVER_INFO_1557; + +struct SERVER_INFO_1560 { + DWORD sv1560_producttype; +} +alias SERVER_INFO_1560* PSERVER_INFO_1560, LPSERVER_INFO_1560; + +struct SERVER_INFO_1561 { + DWORD sv1561_serversize; +} +alias SERVER_INFO_1561* PSERVER_INFO_1561, LPSERVER_INFO_1561; + +struct SERVER_INFO_1562 { + DWORD sv1562_connectionlessautodisc; +} +alias SERVER_INFO_1562* PSERVER_INFO_1562, LPSERVER_INFO_1562; + +struct SERVER_INFO_1563 { + DWORD sv1563_sharingviolationretries; +} +alias SERVER_INFO_1563* PSERVER_INFO_1563, LPSERVER_INFO_1563; + +struct SERVER_INFO_1564 { + DWORD sv1564_sharingviolationdelay; +} +alias SERVER_INFO_1564* PSERVER_INFO_1564, LPSERVER_INFO_1564; + +struct SERVER_INFO_1565 { + DWORD sv1565_maxglobalopensearch; +} +alias SERVER_INFO_1565* PSERVER_INFO_1565, LPSERVER_INFO_1565; + +struct SERVER_INFO_1566 { + BOOL sv1566_removeduplicatesearches; +} +alias SERVER_INFO_1566* PSERVER_INFO_1566, LPSERVER_INFO_1566; + +struct SERVER_INFO_1567 { + DWORD sv1567_lockviolationretries; +} +alias SERVER_INFO_1567* PSERVER_INFO_1567, LPSERVER_INFO_1567; + +struct SERVER_INFO_1568 { + DWORD sv1568_lockviolationoffset; +} +alias SERVER_INFO_1568* PSERVER_INFO_1568, LPSERVER_INFO_1568; + +struct SERVER_INFO_1569 { + DWORD sv1569_lockviolationdelay; +} +alias SERVER_INFO_1569* PSERVER_INFO_1569, LPSERVER_INFO_1569; + +struct SERVER_INFO_1570 { + DWORD sv1570_mdlreadswitchover; +} +alias SERVER_INFO_1570* PSERVER_INFO_1570, LPSERVER_INFO_1570; + +struct SERVER_INFO_1571 { + DWORD sv1571_cachedopenlimit; +} +alias SERVER_INFO_1571* PSERVER_INFO_1571, LPSERVER_INFO_1571; + +struct SERVER_INFO_1572 { + DWORD sv1572_criticalthreads; +} +alias SERVER_INFO_1572* PSERVER_INFO_1572, LPSERVER_INFO_1572; + +struct SERVER_INFO_1573 { + DWORD sv1573_restrictnullsessaccess; +} +alias SERVER_INFO_1573* PSERVER_INFO_1573, LPSERVER_INFO_1573; + +struct SERVER_INFO_1574 { + DWORD sv1574_enablewfw311directipx; +} +alias SERVER_INFO_1574* PSERVER_INFO_1574, LPSERVER_INFO_1574; + +struct SERVER_INFO_1575 { + DWORD sv1575_otherqueueaffinity; +} +alias SERVER_INFO_1575* PSERVER_INFO_1575, LPSERVER_INFO_1575; + +struct SERVER_INFO_1576 { + DWORD sv1576_queuesamplesecs; +} +alias SERVER_INFO_1576* PSERVER_INFO_1576, LPSERVER_INFO_1576; + +struct SERVER_INFO_1577 { + DWORD sv1577_balancecount; +} +alias SERVER_INFO_1577* PSERVER_INFO_1577, LPSERVER_INFO_1577; + +struct SERVER_INFO_1578 { + DWORD sv1578_preferredaffinity; +} +alias SERVER_INFO_1578* PSERVER_INFO_1578, LPSERVER_INFO_1578; + +struct SERVER_INFO_1579 { + DWORD sv1579_maxfreerfcbs; +} +alias SERVER_INFO_1579* PSERVER_INFO_1579, LPSERVER_INFO_1579; + +struct SERVER_INFO_1580 { + DWORD sv1580_maxfreemfcbs; +} +alias SERVER_INFO_1580* PSERVER_INFO_1580, LPSERVER_INFO_1580; + +struct SERVER_INFO_1581 { + DWORD sv1581_maxfreemlcbs; +} +alias SERVER_INFO_1581* PSERVER_INFO_1581, LPSERVER_INFO_1581; + +struct SERVER_INFO_1582 { + DWORD sv1582_maxfreepagedpoolchunks; +} +alias SERVER_INFO_1582* PSERVER_INFO_1582, LPSERVER_INFO_1582; + +struct SERVER_INFO_1583 { + DWORD sv1583_minpagedpoolchunksize; +} +alias SERVER_INFO_1583* PSERVER_INFO_1583, LPSERVER_INFO_1583; + +struct SERVER_INFO_1584 { + DWORD sv1584_maxpagedpoolchunksize; +} +alias SERVER_INFO_1584* PSERVER_INFO_1584, LPSERVER_INFO_1584; + +struct SERVER_INFO_1585 { + BOOL sv1585_sendsfrompreferredprocessor; +} +alias SERVER_INFO_1585* PSERVER_INFO_1585, LPSERVER_INFO_1585; + +struct SERVER_INFO_1586 { + BOOL sv1586_maxthreadsperqueue; +} +alias SERVER_INFO_1586* PSERVER_INFO_1586, LPSERVER_INFO_1586; + +struct SERVER_TRANSPORT_INFO_0 { + DWORD svti0_numberofvcs; + LPWSTR svti0_transportname; + PBYTE svti0_transportaddress; + DWORD svti0_transportaddresslength; + LPWSTR svti0_networkaddress; +} +alias SERVER_TRANSPORT_INFO_0* PSERVER_TRANSPORT_INFO_0, + LPSERVER_TRANSPORT_INFO_0; + +extern (Windows): +NET_API_STATUS NetServerEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD); +NET_API_STATUS NetServerEnumEx(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR); +NET_API_STATUS NetServerGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetServerSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetServerSetInfoCommandLine(WORD,LPWSTR*); +NET_API_STATUS NetServerDiskEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetServerComputerNameAdd(LPWSTR,LPWSTR,LPWSTR); +NET_API_STATUS NetServerComputerNameDel(LPWSTR,LPWSTR); +NET_API_STATUS NetServerTransportAdd(LPWSTR,DWORD,PBYTE); +NET_API_STATUS NetServerTransportAddEx(LPWSTR,DWORD,PBYTE); +NET_API_STATUS NetServerTransportDel(LPWSTR,DWORD,PBYTE); +NET_API_STATUS NetServerTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +BOOL SetServiceBits(SERVICE_STATUS_HANDLE,DWORD,BOOL,BOOL); + +const SVI1_NUM_ELEMENTS=5; +const SVI2_NUM_ELEMENTS=40; +const SVI3_NUM_ELEMENTS=44; +const SV_MAX_CMD_LEN=PATHLEN; +const SW_AUTOPROF_LOAD_MASK=1; +const SW_AUTOPROF_SAVE_MASK=2; +const SV_MAX_SRV_HEUR_LEN=32; +const SV_USERS_PER_LICENSE=5; +const SV_PLATFORM_ID_OS2=400; +const SV_PLATFORM_ID_NT=500; +const MAJOR_VERSION_MASK=15; +const SV_TYPE_WORKSTATION=1; +const SV_TYPE_SERVER=2; +const SV_TYPE_SQLSERVER=4; +const SV_TYPE_DOMAIN_CTRL=8; +const SV_TYPE_DOMAIN_BAKCTRL=16; +const SV_TYPE_TIME_SOURCE=32; +const SV_TYPE_AFP=64; +const SV_TYPE_NOVELL=128; +const SV_TYPE_DOMAIN_MEMBER=256; +const SV_TYPE_PRINTQ_SERVER=512; +const SV_TYPE_DIALIN_SERVER=1024; +const SV_TYPE_XENIX_SERVER=2048; +const SV_TYPE_SERVER_UNIX=SV_TYPE_XENIX_SERVER; +const SV_TYPE_NT=4096; +const SV_TYPE_WFW=8192; +const SV_TYPE_SERVER_MFPN=16384; +const SV_TYPE_SERVER_NT=32768; +const SV_TYPE_POTENTIAL_BROWSER=65536; +const SV_TYPE_BACKUP_BROWSER=0x20000; +const SV_TYPE_MASTER_BROWSER=0x40000; +const SV_TYPE_DOMAIN_MASTER=0x80000; +const SV_TYPE_SERVER_OSF=0x100000; +const SV_TYPE_SERVER_VMS=0x200000; +const SV_TYPE_WINDOWS=0x400000; +const SV_TYPE_ALTERNATE_XPORT=0x20000000; +const SV_TYPE_LOCAL_LIST_ONLY=0x40000000; +const SV_TYPE_DOMAIN_ENUM=0x80000000; +const SV_TYPE_ALL=0xFFFFFFFF; +const SV_NODISC=(-1); +const SV_USERSECURITY=1; +const SV_SHARESECURITY=0; +const SV_HIDDEN=1; +const SV_VISIBLE=0; +const SV_PLATFORM_ID_PARMNUM=101; +const SV_NAME_PARMNUM=102; +const SV_VERSION_MAJOR_PARMNUM=103; +const SV_VERSION_MINOR_PARMNUM=104; +const SV_TYPE_PARMNUM=105; +const SV_COMMENT_PARMNUM=5; +const SV_USERS_PARMNUM=107; +const SV_DISC_PARMNUM=10; +const SV_HIDDEN_PARMNUM=16; +const SV_ANNOUNCE_PARMNUM=17; +const SV_ANNDELTA_PARMNUM=18; +const SV_USERPATH_PARMNUM=112; +const SV_ULIST_MTIME_PARMNUM=401; +const SV_GLIST_MTIME_PARMNUM=402; +const SV_ALIST_MTIME_PARMNUM=403; +const SV_ALERTS_PARMNUM=11; +const SV_SECURITY_PARMNUM=405; +const SV_NUMADMIN_PARMNUM=406; +const SV_LANMASK_PARMNUM=407; +const SV_GUESTACC_PARMNUM=408; +const SV_CHDEVQ_PARMNUM=410; +const SV_CHDEVJOBS_PARMNUM=411; +const SV_CONNECTIONS_PARMNUM=412; +const SV_SHARES_PARMNUM=413; +const SV_OPENFILES_PARMNUM=414; +const SV_SESSREQS_PARMNUM=417; +const SV_ACTIVELOCKS_PARMNUM=419; +const SV_NUMREQBUF_PARMNUM=420; +const SV_NUMBIGBUF_PARMNUM=422; +const SV_NUMFILETASKS_PARMNUM=423; +const SV_ALERTSCHED_PARMNUM=37; +const SV_ERRORALERT_PARMNUM=38; +const SV_LOGONALERT_PARMNUM=39; +const SV_ACCESSALERT_PARMNUM=40; +const SV_DISKALERT_PARMNUM=41; +const SV_NETIOALERT_PARMNUM=42; +const SV_MAXAUDITSZ_PARMNUM=43; +const SV_SRVHEURISTICS_PARMNUM=431; +const SV_SESSOPENS_PARMNUM=501; +const SV_SESSVCS_PARMNUM=502; +const SV_OPENSEARCH_PARMNUM=503; +const SV_SIZREQBUF_PARMNUM=504; +const SV_INITWORKITEMS_PARMNUM=505; +const SV_MAXWORKITEMS_PARMNUM=506; +const SV_RAWWORKITEMS_PARMNUM=507; +const SV_IRPSTACKSIZE_PARMNUM=508; +const SV_MAXRAWBUFLEN_PARMNUM=509; +const SV_SESSUSERS_PARMNUM=510; +const SV_SESSCONNS_PARMNUM=511; +const SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM=512; +const SV_MAXPAGEDMEMORYUSAGE_PARMNUM=513; +const SV_ENABLESOFTCOMPAT_PARMNUM=514; +const SV_ENABLEFORCEDLOGOFF_PARMNUM=515; +const SV_TIMESOURCE_PARMNUM=516; +const SV_ACCEPTDOWNLEVELAPIS_PARMNUM=517; +const SV_LMANNOUNCE_PARMNUM=518; +const SV_DOMAIN_PARMNUM=519; +const SV_MAXCOPYREADLEN_PARMNUM=520; +const SV_MAXCOPYWRITELEN_PARMNUM=521; +const SV_MINKEEPSEARCH_PARMNUM=522; +const SV_MAXKEEPSEARCH_PARMNUM=523; +const SV_MINKEEPCOMPLSEARCH_PARMNUM=524; +const SV_MAXKEEPCOMPLSEARCH_PARMNUM=525; +const SV_THREADCOUNTADD_PARMNUM=526; +const SV_NUMBLOCKTHREADS_PARMNUM=527; +const SV_SCAVTIMEOUT_PARMNUM=528; +const SV_MINRCVQUEUE_PARMNUM=529; +const SV_MINFREEWORKITEMS_PARMNUM=530; +const SV_XACTMEMSIZE_PARMNUM=531; +const SV_THREADPRIORITY_PARMNUM=532; +const SV_MAXMPXCT_PARMNUM=533; +const SV_OPLOCKBREAKWAIT_PARMNUM=534; +const SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM=535; +const SV_ENABLEOPLOCKS_PARMNUM=536; +const SV_ENABLEOPLOCKFORCECLOSE_PARMNUM=537; +const SV_ENABLEFCBOPENS_PARMNUM=538; +const SV_ENABLERAW_PARMNUM=539; +const SV_ENABLESHAREDNETDRIVES_PARMNUM=540; +const SV_MINFREECONNECTIONS_PARMNUM=541; +const SV_MAXFREECONNECTIONS_PARMNUM=542; +const SV_INITSESSTABLE_PARMNUM=543; +const SV_INITCONNTABLE_PARMNUM=544; +const SV_INITFILETABLE_PARMNUM=545; +const SV_INITSEARCHTABLE_PARMNUM=546; +const SV_ALERTSCHEDULE_PARMNUM=547; +const SV_ERRORTHRESHOLD_PARMNUM=548; +const SV_NETWORKERRORTHRESHOLD_PARMNUM=549; +const SV_DISKSPACETHRESHOLD_PARMNUM=550; +const SV_MAXLINKDELAY_PARMNUM=552; +const SV_MINLINKTHROUGHPUT_PARMNUM=553; +const SV_LINKINFOVALIDTIME_PARMNUM=554; +const SV_SCAVQOSINFOUPDATETIME_PARMNUM=555; +const SV_MAXWORKITEMIDLETIME_PARMNUM=556; +const SV_MAXRAWWORKITEMS_PARMNUM=557; +const SV_PRODUCTTYPE_PARMNUM=560; +const SV_SERVERSIZE_PARMNUM=561; +const SV_CONNECTIONLESSAUTODISC_PARMNUM=562; +const SV_SHARINGVIOLATIONRETRIES_PARMNUM=563; +const SV_SHARINGVIOLATIONDELAY_PARMNUM=564; +const SV_MAXGLOBALOPENSEARCH_PARMNUM=565; +const SV_REMOVEDUPLICATESEARCHES_PARMNUM=566; +const SV_LOCKVIOLATIONRETRIES_PARMNUM=567; +const SV_LOCKVIOLATIONOFFSET_PARMNUM=568; +const SV_LOCKVIOLATIONDELAY_PARMNUM=569; +const SV_MDLREADSWITCHOVER_PARMNUM=570; +const SV_CACHEDOPENLIMIT_PARMNUM=571; +const SV_CRITICALTHREADS_PARMNUM=572; +const SV_RESTRICTNULLSESSACCESS_PARMNUM=573; +const SV_ENABLEWFW311DIRECTIPX_PARMNUM=574; +const SV_OTHERQUEUEAFFINITY_PARMNUM=575; +const SV_QUEUESAMPLESECS_PARMNUM=576; +const SV_BALANCECOUNT_PARMNUM=577; +const SV_PREFERREDAFFINITY_PARMNUM=578; +const SV_MAXFREERFCBS_PARMNUM=579; +const SV_MAXFREEMFCBS_PARMNUM=580; +const SV_MAXFREELFCBS_PARMNUM=581; +const SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM=582; +const SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM=583; +const SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM=584; +const SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM=585; +const SV_MAXTHREADSPERQUEUE_PARMNUM=586; +const SV_COMMENT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM); +const SV_USERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM); +const SV_DISC_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM); +const SV_HIDDEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM); +const SV_ANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM); +const SV_ANNDELTA_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM); +const SV_SESSOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM); +const SV_SESSVCS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM); +const SV_OPENSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM); +const SV_MAXWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM); +const SV_MAXRAWBUFLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM); +const SV_SESSUSERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM); +const SV_SESSCONNS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM); +const SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM); +const SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM); +const SV_ENABLESOFTCOMPAT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM); +const SV_ENABLEFORCEDLOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM); +const SV_TIMESOURCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM); +const SV_LMANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM); +const SV_MAXCOPYREADLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM); +const SV_MAXCOPYWRITELEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM); +const SV_MINKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM); +const SV_MAXKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM); +const SV_MINKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM); +const SV_MAXKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM); +const SV_SCAVTIMEOUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM); +const SV_MINRCVQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM); +const SV_MINFREEWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM); +const SV_MAXMPXCT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM); +const SV_OPLOCKBREAKWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM); +const SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM); +const SV_ENABLEOPLOCKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM); +const SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM); +const SV_ENABLEFCBOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM); +const SV_ENABLERAW_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM); +const SV_ENABLESHAREDNETDRIVES_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM); +const SV_MINFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM); +const SV_MAXFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM); +const SV_INITSESSTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM); +const SV_INITCONNTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM); +const SV_INITFILETABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM); +const SV_INITSEARCHTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM); +const SV_ALERTSCHEDULE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM); +const SV_ERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM); +const SV_NETWORKERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM); +const SV_DISKSPACETHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM); +const SV_MAXLINKDELAY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM); +const SV_MINLINKTHROUGHPUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM); +const SV_LINKINFOVALIDTIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM); +const SV_SCAVQOSINFOUPDATETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM); +const SV_MAXWORKITEMIDLETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM); +const SV_MAXRAWWORKITEMS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM); +const SV_PRODUCTTYPE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM); +const SV_SERVERSIZE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM); +const SV_CONNECTIONLESSAUTODISC_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM); +const SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM); +const SV_SHARINGVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM); +const SV_MAXGLOBALOPENSEARCH_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM); +const SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM); +const SV_LOCKVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM); +const SV_LOCKVIOLATIONOFFSET_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM); +const SV_LOCKVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM); +const SV_MDLREADSWITCHOVER_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM); +const SV_CACHEDOPENLIMIT_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM); +const SV_CRITICALTHREADS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM); +const SV_RESTRICTNULLSESSACCESS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM); +const SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM); +const SV_OTHERQUEUEAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM); +const SV_QUEUESAMPLESECS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM); +const SV_BALANCECOUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM); +const SV_PREFERREDAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM); +const SV_MAXFREERFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM); +const SV_MAXFREEMFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM); +const SV_MAXFREELFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM); +const SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM); +const SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM); +const SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM); +const SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM); +const SV_MAXTHREADSPERQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM); diff --git a/src/core/sys/windows/lmshare.d b/src/core/sys/windows/lmshare.d index 570cf942fc..bba5d9b6af 100644 --- a/src/core/sys/windows/lmshare.d +++ b/src/core/sys/windows/lmshare.d @@ -1,196 +1,196 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmshare.d) - */ -module core.sys.windows.lmshare; -pragma(lib, "netapi"); - -import core.sys.windows.lmcons; -private import core.sys.windows.w32api, core.sys.windows.windef; - - -const SHARE_NETNAME_PARMNUM = 1; -const SHARE_TYPE_PARMNUM = 3; -const SHARE_REMARK_PARMNUM = 4; -const SHARE_PERMISSIONS_PARMNUM = 5; -const SHARE_MAX_USES_PARMNUM = 6; -const SHARE_CURRENT_USES_PARMNUM = 7; -const SHARE_PATH_PARMNUM = 8; -const SHARE_PASSWD_PARMNUM = 9; -const SHARE_FILE_SD_PARMNUM = 501; -const SHARE_REMARK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM; -const SHARE_MAX_USES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM; -const SHARE_FILE_SD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM; - -const SHI1_NUM_ELEMENTS = 4; -const SHI2_NUM_ELEMENTS = 10; - -const STYPE_DISKTREE = 0; -const STYPE_PRINTQ = 1; -const STYPE_DEVICE = 2; -const STYPE_IPC = 3; -const STYPE_DFS = 100; -const STYPE_SPECIAL = 0x80000000; - -const DWORD SHI_USES_UNLIMITED = -1; - -const SESS_GUEST = 1; -const SESS_NOENCRYPTION = 2; -const SESI1_NUM_ELEMENTS = 8; -const SESI2_NUM_ELEMENTS = 9; - -const PERM_FILE_READ = 1; -const PERM_FILE_WRITE = 2; -const PERM_FILE_CREATE = 4; - -struct FILE_INFO_2 { - DWORD fi2_id; -} -alias FILE_INFO_2* PFILE_INFO_2, LPFILE_INFO_2; - -struct FILE_INFO_3 { - DWORD fi3_id; - DWORD fi3_permissions; - DWORD fi3_num_locks; - LPTSTR fi3_pathname; - LPTSTR fi3_username; -} -alias FILE_INFO_3* PFILE_INFO_3, LPFILE_INFO_3; - -struct SHARE_INFO_0 { - LPTSTR shi0_netname; -} -alias SHARE_INFO_0* PSHARE_INFO_0, LPSHARE_INFO_0; - -struct SHARE_INFO_1 { - LPTSTR shi1_netname; - DWORD shi1_type; - LPTSTR shi1_remark; -} -alias SHARE_INFO_1* PSHARE_INFO_1, LPSHARE_INFO_1; - -struct SHARE_INFO_2 { - LPTSTR shi2_netname; - DWORD shi2_type; - LPTSTR shi2_remark; - DWORD shi2_permissions; - DWORD shi2_max_uses; - DWORD shi2_current_uses; - LPTSTR shi2_path; - LPTSTR shi2_passwd; -} -alias SHARE_INFO_2* PSHARE_INFO_2, LPSHARE_INFO_2; - -struct SHARE_INFO_502 { - LPTSTR shi502_netname; - DWORD shi502_type; - LPTSTR shi502_remark; - DWORD shi502_permissions; - DWORD shi502_max_uses; - DWORD shi502_current_uses; - LPTSTR shi502_path; - LPTSTR shi502_passwd; - DWORD shi502_reserved; - PSECURITY_DESCRIPTOR shi502_security_descriptor; -} -alias SHARE_INFO_502* PSHARE_INFO_502, LPSHARE_INFO_502; - -struct SHARE_INFO_1004 { - LPTSTR shi1004_remark; -} -alias SHARE_INFO_1004* PSHARE_INFO_1004, LPSHARE_INFO_1004; - -struct SHARE_INFO_1006 { - DWORD shi1006_max_uses; -} -alias SHARE_INFO_1006* PSHARE_INFO_1006, LPSHARE_INFO_1006; - -struct SHARE_INFO_1501 { - DWORD shi1501_reserved; - PSECURITY_DESCRIPTOR shi1501_security_descriptor; -} -alias SHARE_INFO_1501* PSHARE_INFO_1501, LPSHARE_INFO_1501; - -struct SESSION_INFO_0 { - LPWSTR sesi0_cname; -} -alias SESSION_INFO_0* PSESSION_INFO_0, LPSESSION_INFO_0; - -struct SESSION_INFO_1 { - LPTSTR sesi1_cname; - LPTSTR sesi1_username; - DWORD sesi1_num_opens; - DWORD sesi1_time; - DWORD sesi1_idle_time; - DWORD sesi1_user_flags; -} -alias SESSION_INFO_1* PSESSION_INFO_1, LPSESSION_INFO_1; - -struct SESSION_INFO_2 { - LPTSTR sesi2_cname; - LPTSTR sesi2_username; - DWORD sesi2_num_opens; - DWORD sesi2_time; - DWORD sesi2_idle_time; - DWORD sesi2_user_flags; - LPWSTR sesi2_cltype_name; -} -alias SESSION_INFO_2* PSESSION_INFO_2, LPSESSION_INFO_2; - -struct SESSION_INFO_10 { - LPWSTR sesi10_cname; - LPWSTR sesi10_username; - DWORD sesi10_time; - DWORD sesi10_idle_time; -} -alias SESSION_INFO_10* PSESSION_INFO_10, LPSESSION_INFO_10; - -struct SESSION_INFO_502 { - LPWSTR sesi502_cname; - LPWSTR sesi502_username; - DWORD sesi502_num_opens; - DWORD sesi502_time; - DWORD sesi502_idle_time; - DWORD sesi502_user_flags; - LPWSTR sesi502_cltype_name; - LPWSTR sesi502_transport; -} -alias SESSION_INFO_502* PSESSION_INFO_502, LPSESSION_INFO_502; - -struct CONNECTION_INFO_0 { - DWORD coni0_id; -} -alias CONNECTION_INFO_0* PCONNECTION_INFO_0, LPCONNECTION_INFO_0; - -struct CONNECTION_INFO_1 { - DWORD coni1_id; - DWORD coni1_type; - DWORD coni1_num_opens; - DWORD coni1_num_users; - DWORD coni1_time; - LPWSTR coni1_username; - LPWSTR coni1_netname; -} -alias CONNECTION_INFO_1* PCONNECTION_INFO_1, LPCONNECTION_INFO_1; - -extern (Windows) { -NET_API_STATUS NetShareAdd(LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetShareEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetShareEnumSticky(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD resume_handle); -NET_API_STATUS NetShareGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*); -NET_API_STATUS NetShareSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetShareDel(LPWSTR,LPWSTR,DWORD); -NET_API_STATUS NetShareDelSticky(LPWSTR,LPWSTR,DWORD); -NET_API_STATUS NetShareCheck(LPWSTR,LPWSTR,PDWORD); -NET_API_STATUS NetSessionEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetSessionDel(LPWSTR,LPWSTR,LPWSTR); -NET_API_STATUS NetSessionGetInfo(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*); -NET_API_STATUS NetConnectionEnum(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetFileClose(LPWSTR,DWORD); -NET_API_STATUS NetFileEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetFileGetInfo(LPWSTR,DWORD,DWORD,PBYTE*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmshare.d) + */ +module core.sys.windows.lmshare; +pragma(lib, "netapi"); + +import core.sys.windows.lmcons; +private import core.sys.windows.w32api, core.sys.windows.windef; + + +const SHARE_NETNAME_PARMNUM = 1; +const SHARE_TYPE_PARMNUM = 3; +const SHARE_REMARK_PARMNUM = 4; +const SHARE_PERMISSIONS_PARMNUM = 5; +const SHARE_MAX_USES_PARMNUM = 6; +const SHARE_CURRENT_USES_PARMNUM = 7; +const SHARE_PATH_PARMNUM = 8; +const SHARE_PASSWD_PARMNUM = 9; +const SHARE_FILE_SD_PARMNUM = 501; +const SHARE_REMARK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM; +const SHARE_MAX_USES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM; +const SHARE_FILE_SD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM; + +const SHI1_NUM_ELEMENTS = 4; +const SHI2_NUM_ELEMENTS = 10; + +const STYPE_DISKTREE = 0; +const STYPE_PRINTQ = 1; +const STYPE_DEVICE = 2; +const STYPE_IPC = 3; +const STYPE_DFS = 100; +const STYPE_SPECIAL = 0x80000000; + +const DWORD SHI_USES_UNLIMITED = -1; + +const SESS_GUEST = 1; +const SESS_NOENCRYPTION = 2; +const SESI1_NUM_ELEMENTS = 8; +const SESI2_NUM_ELEMENTS = 9; + +const PERM_FILE_READ = 1; +const PERM_FILE_WRITE = 2; +const PERM_FILE_CREATE = 4; + +struct FILE_INFO_2 { + DWORD fi2_id; +} +alias FILE_INFO_2* PFILE_INFO_2, LPFILE_INFO_2; + +struct FILE_INFO_3 { + DWORD fi3_id; + DWORD fi3_permissions; + DWORD fi3_num_locks; + LPTSTR fi3_pathname; + LPTSTR fi3_username; +} +alias FILE_INFO_3* PFILE_INFO_3, LPFILE_INFO_3; + +struct SHARE_INFO_0 { + LPTSTR shi0_netname; +} +alias SHARE_INFO_0* PSHARE_INFO_0, LPSHARE_INFO_0; + +struct SHARE_INFO_1 { + LPTSTR shi1_netname; + DWORD shi1_type; + LPTSTR shi1_remark; +} +alias SHARE_INFO_1* PSHARE_INFO_1, LPSHARE_INFO_1; + +struct SHARE_INFO_2 { + LPTSTR shi2_netname; + DWORD shi2_type; + LPTSTR shi2_remark; + DWORD shi2_permissions; + DWORD shi2_max_uses; + DWORD shi2_current_uses; + LPTSTR shi2_path; + LPTSTR shi2_passwd; +} +alias SHARE_INFO_2* PSHARE_INFO_2, LPSHARE_INFO_2; + +struct SHARE_INFO_502 { + LPTSTR shi502_netname; + DWORD shi502_type; + LPTSTR shi502_remark; + DWORD shi502_permissions; + DWORD shi502_max_uses; + DWORD shi502_current_uses; + LPTSTR shi502_path; + LPTSTR shi502_passwd; + DWORD shi502_reserved; + PSECURITY_DESCRIPTOR shi502_security_descriptor; +} +alias SHARE_INFO_502* PSHARE_INFO_502, LPSHARE_INFO_502; + +struct SHARE_INFO_1004 { + LPTSTR shi1004_remark; +} +alias SHARE_INFO_1004* PSHARE_INFO_1004, LPSHARE_INFO_1004; + +struct SHARE_INFO_1006 { + DWORD shi1006_max_uses; +} +alias SHARE_INFO_1006* PSHARE_INFO_1006, LPSHARE_INFO_1006; + +struct SHARE_INFO_1501 { + DWORD shi1501_reserved; + PSECURITY_DESCRIPTOR shi1501_security_descriptor; +} +alias SHARE_INFO_1501* PSHARE_INFO_1501, LPSHARE_INFO_1501; + +struct SESSION_INFO_0 { + LPWSTR sesi0_cname; +} +alias SESSION_INFO_0* PSESSION_INFO_0, LPSESSION_INFO_0; + +struct SESSION_INFO_1 { + LPTSTR sesi1_cname; + LPTSTR sesi1_username; + DWORD sesi1_num_opens; + DWORD sesi1_time; + DWORD sesi1_idle_time; + DWORD sesi1_user_flags; +} +alias SESSION_INFO_1* PSESSION_INFO_1, LPSESSION_INFO_1; + +struct SESSION_INFO_2 { + LPTSTR sesi2_cname; + LPTSTR sesi2_username; + DWORD sesi2_num_opens; + DWORD sesi2_time; + DWORD sesi2_idle_time; + DWORD sesi2_user_flags; + LPWSTR sesi2_cltype_name; +} +alias SESSION_INFO_2* PSESSION_INFO_2, LPSESSION_INFO_2; + +struct SESSION_INFO_10 { + LPWSTR sesi10_cname; + LPWSTR sesi10_username; + DWORD sesi10_time; + DWORD sesi10_idle_time; +} +alias SESSION_INFO_10* PSESSION_INFO_10, LPSESSION_INFO_10; + +struct SESSION_INFO_502 { + LPWSTR sesi502_cname; + LPWSTR sesi502_username; + DWORD sesi502_num_opens; + DWORD sesi502_time; + DWORD sesi502_idle_time; + DWORD sesi502_user_flags; + LPWSTR sesi502_cltype_name; + LPWSTR sesi502_transport; +} +alias SESSION_INFO_502* PSESSION_INFO_502, LPSESSION_INFO_502; + +struct CONNECTION_INFO_0 { + DWORD coni0_id; +} +alias CONNECTION_INFO_0* PCONNECTION_INFO_0, LPCONNECTION_INFO_0; + +struct CONNECTION_INFO_1 { + DWORD coni1_id; + DWORD coni1_type; + DWORD coni1_num_opens; + DWORD coni1_num_users; + DWORD coni1_time; + LPWSTR coni1_username; + LPWSTR coni1_netname; +} +alias CONNECTION_INFO_1* PCONNECTION_INFO_1, LPCONNECTION_INFO_1; + +extern (Windows) { +NET_API_STATUS NetShareAdd(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetShareEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetShareEnumSticky(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD resume_handle); +NET_API_STATUS NetShareGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetShareSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetShareDel(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS NetShareDelSticky(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS NetShareCheck(LPWSTR,LPWSTR,PDWORD); +NET_API_STATUS NetSessionEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetSessionDel(LPWSTR,LPWSTR,LPWSTR); +NET_API_STATUS NetSessionGetInfo(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetConnectionEnum(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetFileClose(LPWSTR,DWORD); +NET_API_STATUS NetFileEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetFileGetInfo(LPWSTR,DWORD,DWORD,PBYTE*); +} diff --git a/src/core/sys/windows/lmsname.d b/src/core/sys/windows/lmsname.d index ab98402490..1645a5e5e2 100644 --- a/src/core/sys/windows/lmsname.d +++ b/src/core/sys/windows/lmsname.d @@ -1,64 +1,64 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmsname.d) - */ -module core.sys.windows.lmsname; - -private import core.sys.windows.windef; - -const TCHAR[] - SERVICE_WORKSTATION = "LanmanWorkstation", - SERVICE_LM20_WORKSTATION = "WORKSTATION", - WORKSTATION_DISPLAY_NAME = "Workstation", - SERVICE_SERVER = "LanmanServer", - SERVICE_LM20_SERVER = "SERVER", - SERVER_DISPLAY_NAME = "Server", - SERVICE_BROWSER = "BROWSER", - SERVICE_LM20_BROWSER = SERVICE_BROWSER, - SERVICE_MESSENGER = "MESSENGER", - SERVICE_LM20_MESSENGER = SERVICE_MESSENGER, - SERVICE_NETRUN = "NETRUN", - SERVICE_LM20_NETRUN = SERVICE_NETRUN, - SERVICE_SPOOLER = "SPOOLER", - SERVICE_LM20_SPOOLER = SERVICE_SPOOLER, - SERVICE_ALERTER = "ALERTER", - SERVICE_LM20_ALERTER = SERVICE_ALERTER, - SERVICE_NETLOGON = "NETLOGON", - SERVICE_LM20_NETLOGON = SERVICE_NETLOGON, - SERVICE_NETPOPUP = "NETPOPUP", - SERVICE_LM20_NETPOPUP = SERVICE_NETPOPUP, - SERVICE_SQLSERVER = "SQLSERVER", - SERVICE_LM20_SQLSERVER = SERVICE_SQLSERVER, - SERVICE_REPL = "REPLICATOR", - SERVICE_LM20_REPL = SERVICE_REPL, - SERVICE_RIPL = "REMOTEBOOT", - SERVICE_LM20_RIPL = SERVICE_RIPL, - SERVICE_TIMESOURCE = "TIMESOURCE", - SERVICE_LM20_TIMESOURCE = SERVICE_TIMESOURCE, - SERVICE_AFP = "AFP", - SERVICE_LM20_AFP = SERVICE_AFP, - SERVICE_UPS = "UPS", - SERVICE_LM20_UPS = SERVICE_UPS, - SERVICE_XACTSRV = "XACTSRV", - SERVICE_LM20_XACTSRV = SERVICE_XACTSRV, - SERVICE_TCPIP = "TCPIP", - SERVICE_LM20_TCPIP = SERVICE_TCPIP, - SERVICE_NBT = "NBT", - SERVICE_LM20_NBT = SERVICE_NBT, - SERVICE_LMHOSTS = "LMHOSTS", - SERVICE_LM20_LMHOSTS = SERVICE_LMHOSTS, - SERVICE_TELNET = "Telnet", - SERVICE_LM20_TELNET = SERVICE_TELNET, - SERVICE_SCHEDULE = "Schedule", - SERVICE_LM20_SCHEDULE = SERVICE_SCHEDULE, - SERVICE_NTLMSSP = "NtLmSsp", - SERVICE_DHCP = "DHCP", - SERVICE_LM20_DHCP = SERVICE_DHCP, - SERVICE_NWSAP = "NwSapAgent", - SERVICE_LM20_NWSAP = SERVICE_NWSAP, - NWSAP_DISPLAY_NAME = "NW Sap Agent", - SERVICE_NWCS = "NWCWorkstation"; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmsname.d) + */ +module core.sys.windows.lmsname; + +private import core.sys.windows.windef; + +const TCHAR[] + SERVICE_WORKSTATION = "LanmanWorkstation", + SERVICE_LM20_WORKSTATION = "WORKSTATION", + WORKSTATION_DISPLAY_NAME = "Workstation", + SERVICE_SERVER = "LanmanServer", + SERVICE_LM20_SERVER = "SERVER", + SERVER_DISPLAY_NAME = "Server", + SERVICE_BROWSER = "BROWSER", + SERVICE_LM20_BROWSER = SERVICE_BROWSER, + SERVICE_MESSENGER = "MESSENGER", + SERVICE_LM20_MESSENGER = SERVICE_MESSENGER, + SERVICE_NETRUN = "NETRUN", + SERVICE_LM20_NETRUN = SERVICE_NETRUN, + SERVICE_SPOOLER = "SPOOLER", + SERVICE_LM20_SPOOLER = SERVICE_SPOOLER, + SERVICE_ALERTER = "ALERTER", + SERVICE_LM20_ALERTER = SERVICE_ALERTER, + SERVICE_NETLOGON = "NETLOGON", + SERVICE_LM20_NETLOGON = SERVICE_NETLOGON, + SERVICE_NETPOPUP = "NETPOPUP", + SERVICE_LM20_NETPOPUP = SERVICE_NETPOPUP, + SERVICE_SQLSERVER = "SQLSERVER", + SERVICE_LM20_SQLSERVER = SERVICE_SQLSERVER, + SERVICE_REPL = "REPLICATOR", + SERVICE_LM20_REPL = SERVICE_REPL, + SERVICE_RIPL = "REMOTEBOOT", + SERVICE_LM20_RIPL = SERVICE_RIPL, + SERVICE_TIMESOURCE = "TIMESOURCE", + SERVICE_LM20_TIMESOURCE = SERVICE_TIMESOURCE, + SERVICE_AFP = "AFP", + SERVICE_LM20_AFP = SERVICE_AFP, + SERVICE_UPS = "UPS", + SERVICE_LM20_UPS = SERVICE_UPS, + SERVICE_XACTSRV = "XACTSRV", + SERVICE_LM20_XACTSRV = SERVICE_XACTSRV, + SERVICE_TCPIP = "TCPIP", + SERVICE_LM20_TCPIP = SERVICE_TCPIP, + SERVICE_NBT = "NBT", + SERVICE_LM20_NBT = SERVICE_NBT, + SERVICE_LMHOSTS = "LMHOSTS", + SERVICE_LM20_LMHOSTS = SERVICE_LMHOSTS, + SERVICE_TELNET = "Telnet", + SERVICE_LM20_TELNET = SERVICE_TELNET, + SERVICE_SCHEDULE = "Schedule", + SERVICE_LM20_SCHEDULE = SERVICE_SCHEDULE, + SERVICE_NTLMSSP = "NtLmSsp", + SERVICE_DHCP = "DHCP", + SERVICE_LM20_DHCP = SERVICE_DHCP, + SERVICE_NWSAP = "NwSapAgent", + SERVICE_LM20_NWSAP = SERVICE_NWSAP, + NWSAP_DISPLAY_NAME = "NW Sap Agent", + SERVICE_NWCS = "NWCWorkstation"; diff --git a/src/core/sys/windows/lmstats.d b/src/core/sys/windows/lmstats.d index 17ba12daad..c4309bd71a 100644 --- a/src/core/sys/windows/lmstats.d +++ b/src/core/sys/windows/lmstats.d @@ -1,120 +1,120 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmstats.d) - */ -module core.sys.windows.lmstats; -pragma(lib, "netapi32"); - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -const ULONG - STATSOPT_CLR = 1, - STATS_NO_VALUE = -1, - STATS_OVERFLOW = -2; - -struct STAT_SERVER_0{ - DWORD sts0_start; - DWORD sts0_fopens; - DWORD sts0_devopens; - DWORD sts0_jobsqueued; - DWORD sts0_sopens; - DWORD sts0_stimedout; - DWORD sts0_serrorout; - DWORD sts0_pwerrors; - DWORD sts0_permerrors; - DWORD sts0_syserrors; - DWORD sts0_bytessent_low; - DWORD sts0_bytessent_high; - DWORD sts0_bytesrcvd_low; - DWORD sts0_bytesrcvd_high; - DWORD sts0_avresponse; - DWORD sts0_reqbufneed; - DWORD sts0_bigbufneed; -} -alias STAT_SERVER_0* PSTAT_SERVER_0, LPSTAT_SERVER_0; - -// #ifdef LM20_WORKSTATION_STATISTICS -// typedef struct _STAT_WORKSTATION_0 { -// DWORD stw0_start; -// DWORD stw0_numNCB_r; -// DWORD stw0_numNCB_s; -// DWORD stw0_numNCB_a; -// DWORD stw0_fiNCB_r; -// DWORD stw0_fiNCB_s; -// DWORD stw0_fiNCB_a; -// DWORD stw0_fcNCB_r; -// DWORD stw0_fcNCB_s; -// DWORD stw0_fcNCB_a; -// DWORD stw0_sesstart; -// DWORD stw0_sessfailcon; -// DWORD stw0_sessbroke; -// DWORD stw0_uses; -// DWORD stw0_usefail; -// DWORD stw0_autorec; -// DWORD stw0_bytessent_r_lo; -// DWORD stw0_bytessent_r_hi; -// DWORD stw0_bytesrcvd_r_lo; -// DWORD stw0_bytesrcvd_r_hi; -// DWORD stw0_bytessent_s_lo; -// DWORD stw0_bytessent_s_hi; -// DWORD stw0_bytesrcvd_s_lo; -// DWORD stw0_bytesrcvd_s_hi; -// DWORD stw0_bytessent_a_lo; -// DWORD stw0_bytessent_a_hi; -// DWORD stw0_bytesrcvd_a_lo; -// DWORD stw0_bytesrcvd_a_hi; -// DWORD stw0_reqbufneed; -// DWORD stw0_bigbufneed; -// } STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0; -// #else - -struct STAT_WORKSTATION_0{ - LARGE_INTEGER StatisticsStartTime; - LARGE_INTEGER BytesReceived; - LARGE_INTEGER SmbsReceived; - LARGE_INTEGER PagingReadBytesRequested; - LARGE_INTEGER NonPagingReadBytesRequested; - LARGE_INTEGER CacheReadBytesRequested; - LARGE_INTEGER NetworkReadBytesRequested; - LARGE_INTEGER BytesTransmitted; - LARGE_INTEGER SmbsTransmitted; - LARGE_INTEGER PagingWriteBytesRequested; - LARGE_INTEGER NonPagingWriteBytesRequested; - LARGE_INTEGER CacheWriteBytesRequested; - LARGE_INTEGER NetworkWriteBytesRequested; - DWORD InitiallyFailedOperations; - DWORD FailedCompletionOperations; - DWORD ReadOperations; - DWORD RandomReadOperations; - DWORD ReadSmbs; - DWORD LargeReadSmbs; - DWORD SmallReadSmbs; - DWORD WriteOperations; - DWORD RandomWriteOperations; - DWORD WriteSmbs; - DWORD LargeWriteSmbs; - DWORD SmallWriteSmbs; - DWORD RawReadsDenied; - DWORD RawWritesDenied; - DWORD NetworkErrors; - DWORD Sessions; - DWORD FailedSessions; - DWORD Reconnects; - DWORD CoreConnects; - DWORD Lanman20Connects; - DWORD Lanman21Connects; - DWORD LanmanNtConnects; - DWORD ServerDisconnects; - DWORD HungSessions; - DWORD UseCount; - DWORD FailedUseCount; - DWORD CurrentCommands; -} -alias STAT_WORKSTATION_0* PSTAT_WORKSTATION_0, LPSTAT_WORKSTATION_0; - -extern (Windows): -NET_API_STATUS NetStatisticsGet(LPWSTR,LPWSTR,DWORD,DWORD,PBYTE*); +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmstats.d) + */ +module core.sys.windows.lmstats; +pragma(lib, "netapi32"); + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +const ULONG + STATSOPT_CLR = 1, + STATS_NO_VALUE = -1, + STATS_OVERFLOW = -2; + +struct STAT_SERVER_0{ + DWORD sts0_start; + DWORD sts0_fopens; + DWORD sts0_devopens; + DWORD sts0_jobsqueued; + DWORD sts0_sopens; + DWORD sts0_stimedout; + DWORD sts0_serrorout; + DWORD sts0_pwerrors; + DWORD sts0_permerrors; + DWORD sts0_syserrors; + DWORD sts0_bytessent_low; + DWORD sts0_bytessent_high; + DWORD sts0_bytesrcvd_low; + DWORD sts0_bytesrcvd_high; + DWORD sts0_avresponse; + DWORD sts0_reqbufneed; + DWORD sts0_bigbufneed; +} +alias STAT_SERVER_0* PSTAT_SERVER_0, LPSTAT_SERVER_0; + +// #ifdef LM20_WORKSTATION_STATISTICS +// typedef struct _STAT_WORKSTATION_0 { +// DWORD stw0_start; +// DWORD stw0_numNCB_r; +// DWORD stw0_numNCB_s; +// DWORD stw0_numNCB_a; +// DWORD stw0_fiNCB_r; +// DWORD stw0_fiNCB_s; +// DWORD stw0_fiNCB_a; +// DWORD stw0_fcNCB_r; +// DWORD stw0_fcNCB_s; +// DWORD stw0_fcNCB_a; +// DWORD stw0_sesstart; +// DWORD stw0_sessfailcon; +// DWORD stw0_sessbroke; +// DWORD stw0_uses; +// DWORD stw0_usefail; +// DWORD stw0_autorec; +// DWORD stw0_bytessent_r_lo; +// DWORD stw0_bytessent_r_hi; +// DWORD stw0_bytesrcvd_r_lo; +// DWORD stw0_bytesrcvd_r_hi; +// DWORD stw0_bytessent_s_lo; +// DWORD stw0_bytessent_s_hi; +// DWORD stw0_bytesrcvd_s_lo; +// DWORD stw0_bytesrcvd_s_hi; +// DWORD stw0_bytessent_a_lo; +// DWORD stw0_bytessent_a_hi; +// DWORD stw0_bytesrcvd_a_lo; +// DWORD stw0_bytesrcvd_a_hi; +// DWORD stw0_reqbufneed; +// DWORD stw0_bigbufneed; +// } STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0; +// #else + +struct STAT_WORKSTATION_0{ + LARGE_INTEGER StatisticsStartTime; + LARGE_INTEGER BytesReceived; + LARGE_INTEGER SmbsReceived; + LARGE_INTEGER PagingReadBytesRequested; + LARGE_INTEGER NonPagingReadBytesRequested; + LARGE_INTEGER CacheReadBytesRequested; + LARGE_INTEGER NetworkReadBytesRequested; + LARGE_INTEGER BytesTransmitted; + LARGE_INTEGER SmbsTransmitted; + LARGE_INTEGER PagingWriteBytesRequested; + LARGE_INTEGER NonPagingWriteBytesRequested; + LARGE_INTEGER CacheWriteBytesRequested; + LARGE_INTEGER NetworkWriteBytesRequested; + DWORD InitiallyFailedOperations; + DWORD FailedCompletionOperations; + DWORD ReadOperations; + DWORD RandomReadOperations; + DWORD ReadSmbs; + DWORD LargeReadSmbs; + DWORD SmallReadSmbs; + DWORD WriteOperations; + DWORD RandomWriteOperations; + DWORD WriteSmbs; + DWORD LargeWriteSmbs; + DWORD SmallWriteSmbs; + DWORD RawReadsDenied; + DWORD RawWritesDenied; + DWORD NetworkErrors; + DWORD Sessions; + DWORD FailedSessions; + DWORD Reconnects; + DWORD CoreConnects; + DWORD Lanman20Connects; + DWORD Lanman21Connects; + DWORD LanmanNtConnects; + DWORD ServerDisconnects; + DWORD HungSessions; + DWORD UseCount; + DWORD FailedUseCount; + DWORD CurrentCommands; +} +alias STAT_WORKSTATION_0* PSTAT_WORKSTATION_0, LPSTAT_WORKSTATION_0; + +extern (Windows): +NET_API_STATUS NetStatisticsGet(LPWSTR,LPWSTR,DWORD,DWORD,PBYTE*); diff --git a/src/core/sys/windows/lmsvc.d b/src/core/sys/windows/lmsvc.d index d8c51db9a7..63ac6f44ac 100644 --- a/src/core/sys/windows/lmsvc.d +++ b/src/core/sys/windows/lmsvc.d @@ -1,155 +1,155 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmsvc.d) - */ -module core.sys.windows.lmsvc; - -// FIXME: Is this file deprecated? All of the functions are only for Win16. -/** - Changes relative to MinGW: - lmsname is not imported publicly (instead, core.sys.windows.lm imports it directly). -*/ -// TODO: 5 macros - -private import core.sys.windows.lmcons, core.sys.windows.lmsname, core.sys.windows.windef; - -const TCHAR[] SERVICE_DOS_ENCRYPTION = "ENCRYPT"; - -const SERVICE_UNINSTALLED=0; -const SERVICE_INSTALL_PENDING=1; -const SERVICE_UNINSTALL_PENDING=2; -const SERVICE_INSTALLED=3; -const SERVICE_INSTALL_STATE=3; -const SERVICE_PAUSE_STATE=18; -const LM20_SERVICE_ACTIVE=0; -const LM20_SERVICE_CONTINUE_PENDING=4; -const LM20_SERVICE_PAUSE_PENDING=8; -const LM20_SERVICE_PAUSED=18; -const SERVICE_NOT_UNINSTALLABLE=0; -const SERVICE_UNINSTALLABLE=16; -const SERVICE_NOT_PAUSABLE=0; -const SERVICE_PAUSABLE=32; -const SERVICE_REDIR_PAUSED=0x700; -const SERVICE_REDIR_DISK_PAUSED=256; -const SERVICE_REDIR_PRINT_PAUSED=512; -const SERVICE_REDIR_COMM_PAUSED=1024; -const SERVICE_CTRL_INTERROGATE=0; -const SERVICE_CTRL_PAUSE=1; -const SERVICE_CTRL_CONTINUE=2; -const SERVICE_CTRL_UNINSTALL=3; -const SERVICE_CTRL_REDIR_DISK=1; -const SERVICE_CTRL_REDIR_PRINT=2; -const SERVICE_CTRL_REDIR_COMM=4; -const SERVICE_IP_NO_HINT=0; -const SERVICE_CCP_NO_HINT=0; -const SERVICE_IP_QUERY_HINT=0x10000; -const SERVICE_CCP_QUERY_HINT=0x10000; -const SERVICE_IP_CHKPT_NUM=255; -const SERVICE_CCP_CHKPT_NUM=255; -const SERVICE_IP_WAIT_TIME=0xFF00; -const SERVICE_CCP_WAIT_TIME=0xFF00; -const SERVICE_IP_WAITTIME_SHIFT=8; -const SERVICE_NTIP_WAITTIME_SHIFT=12; -const UPPER_HINT_MASK=0xFF00; -const LOWER_HINT_MASK=255; -const UPPER_GET_HINT_MASK=0xFF00000; -const LOWER_GET_HINT_MASK=0xFF00; -const SERVICE_NT_MAXTIME=0xFFFF; -const SERVICE_RESRV_MASK=0x1FFFF; -const SERVICE_MAXTIME=255; -const SERVICE_BASE=3050; -const SERVICE_UIC_NORMAL=0; - -const SERVICE_UIC_BADPARMVAL = SERVICE_BASE+1; -const SERVICE_UIC_MISSPARM = SERVICE_BASE+2; -const SERVICE_UIC_UNKPARM = SERVICE_BASE+3; -const SERVICE_UIC_RESOURCE = SERVICE_BASE+4; -const SERVICE_UIC_CONFIG = SERVICE_BASE+5; -const SERVICE_UIC_SYSTEM = SERVICE_BASE+6; -const SERVICE_UIC_INTERNAL = SERVICE_BASE+7; -const SERVICE_UIC_AMBIGPARM = SERVICE_BASE+8; -const SERVICE_UIC_DUPPARM = SERVICE_BASE+9; -const SERVICE_UIC_KILL = SERVICE_BASE+10; -const SERVICE_UIC_EXEC = SERVICE_BASE+11; -const SERVICE_UIC_SUBSERV = SERVICE_BASE+12; -const SERVICE_UIC_CONFLPARM = SERVICE_BASE+13; -const SERVICE_UIC_FILE = SERVICE_BASE+14; -const SERVICE_UIC_M_NULL=0; -const SERVICE_UIC_M_MEMORY = SERVICE_BASE+20; -const SERVICE_UIC_M_DISK = SERVICE_BASE+21; -const SERVICE_UIC_M_THREADS = SERVICE_BASE+22; -const SERVICE_UIC_M_PROCESSES = SERVICE_BASE+23; -const SERVICE_UIC_M_SECURITY = SERVICE_BASE+24; -const SERVICE_UIC_M_LANROOT = SERVICE_BASE+25; -const SERVICE_UIC_M_REDIR = SERVICE_BASE+26; -const SERVICE_UIC_M_SERVER = SERVICE_BASE+27; -const SERVICE_UIC_M_SEC_FILE_ERR = SERVICE_BASE+28; -const SERVICE_UIC_M_FILES = SERVICE_BASE+29; -const SERVICE_UIC_M_LOGS = SERVICE_BASE+30; -const SERVICE_UIC_M_LANGROUP = SERVICE_BASE+31; -const SERVICE_UIC_M_MSGNAME = SERVICE_BASE+32; -const SERVICE_UIC_M_ANNOUNCE = SERVICE_BASE+33; -const SERVICE_UIC_M_UAS = SERVICE_BASE+34; -const SERVICE_UIC_M_SERVER_SEC_ERR = SERVICE_BASE+35; -const SERVICE_UIC_M_WKSTA = SERVICE_BASE+37; -const SERVICE_UIC_M_ERRLOG = SERVICE_BASE+38; -const SERVICE_UIC_M_FILE_UW = SERVICE_BASE+39; -const SERVICE_UIC_M_ADDPAK = SERVICE_BASE+40; -const SERVICE_UIC_M_LAZY = SERVICE_BASE+41; -const SERVICE_UIC_M_UAS_MACHINE_ACCT = SERVICE_BASE+42; -const SERVICE_UIC_M_UAS_SERVERS_NMEMB = SERVICE_BASE+43; -const SERVICE_UIC_M_UAS_SERVERS_NOGRP = SERVICE_BASE+44; -const SERVICE_UIC_M_UAS_INVALID_ROLE = SERVICE_BASE+45; -const SERVICE_UIC_M_NETLOGON_NO_DC = SERVICE_BASE+46; -const SERVICE_UIC_M_NETLOGON_DC_CFLCT = SERVICE_BASE+47; -const SERVICE_UIC_M_NETLOGON_AUTH = SERVICE_BASE+48; -const SERVICE_UIC_M_UAS_PROLOG = SERVICE_BASE+49; -const SERVICE2_BASE=5600; -const SERVICE_UIC_M_NETLOGON_MPATH = SERVICE2_BASE+0; -const SERVICE_UIC_M_LSA_MACHINE_ACCT = SERVICE2_BASE+1; -const SERVICE_UIC_M_DATABASE_ERROR = SERVICE2_BASE+2; - -struct SERVICE_INFO_0 { - LPWSTR svci0_name; -} -alias SERVICE_INFO_0* PSERVICE_INFO_0, LPSERVICE_INFO_0; - -struct SERVICE_INFO_1 { - LPWSTR svci1_name; - DWORD svci1_status; - DWORD svci1_code; - DWORD svci1_pid; -} -alias SERVICE_INFO_1* PSERVICE_INFO_1, LPSERVICE_INFO_1; - -struct SERVICE_INFO_2 { - LPWSTR svci2_name; - DWORD svci2_status; - DWORD svci2_code; - DWORD svci2_pid; - LPWSTR svci2_text; - DWORD svci2_specific_error; - LPWSTR svci2_display_name; -} -alias SERVICE_INFO_2* PSERVICE_INFO_2, LPSERVICE_INFO_2; - -extern (Windows) { - deprecated { - NET_API_STATUS NetServiceControl(LPCWSTR, LPCWSTR, DWORD, DWORD, - PBYTE*); - NET_API_STATUS NetServiceEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, - PDWORD, PDWORD); - NET_API_STATUS NetServiceGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); - NET_API_STATUS NetServiceInstall(LPCWSTR, LPCWSTR, DWORD, LPCWSTR*, - PBYTE*); - } -} -//MACRO #define SERVICE_IP_CODE(t, n) ((long)SERVICE_IP_QUERY_HINT|(long)(n|(t<>SERVICE_NTIP_WAITTIME_SHIFT)|(((c)&LOWER_GET_HINT_MASK)>>SERVICE_IP_WAITTIME_SHIFT)) +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmsvc.d) + */ +module core.sys.windows.lmsvc; + +// FIXME: Is this file deprecated? All of the functions are only for Win16. +/** + Changes relative to MinGW: + lmsname is not imported publicly (instead, core.sys.windows.lm imports it directly). +*/ +// TODO: 5 macros + +private import core.sys.windows.lmcons, core.sys.windows.lmsname, core.sys.windows.windef; + +const TCHAR[] SERVICE_DOS_ENCRYPTION = "ENCRYPT"; + +const SERVICE_UNINSTALLED=0; +const SERVICE_INSTALL_PENDING=1; +const SERVICE_UNINSTALL_PENDING=2; +const SERVICE_INSTALLED=3; +const SERVICE_INSTALL_STATE=3; +const SERVICE_PAUSE_STATE=18; +const LM20_SERVICE_ACTIVE=0; +const LM20_SERVICE_CONTINUE_PENDING=4; +const LM20_SERVICE_PAUSE_PENDING=8; +const LM20_SERVICE_PAUSED=18; +const SERVICE_NOT_UNINSTALLABLE=0; +const SERVICE_UNINSTALLABLE=16; +const SERVICE_NOT_PAUSABLE=0; +const SERVICE_PAUSABLE=32; +const SERVICE_REDIR_PAUSED=0x700; +const SERVICE_REDIR_DISK_PAUSED=256; +const SERVICE_REDIR_PRINT_PAUSED=512; +const SERVICE_REDIR_COMM_PAUSED=1024; +const SERVICE_CTRL_INTERROGATE=0; +const SERVICE_CTRL_PAUSE=1; +const SERVICE_CTRL_CONTINUE=2; +const SERVICE_CTRL_UNINSTALL=3; +const SERVICE_CTRL_REDIR_DISK=1; +const SERVICE_CTRL_REDIR_PRINT=2; +const SERVICE_CTRL_REDIR_COMM=4; +const SERVICE_IP_NO_HINT=0; +const SERVICE_CCP_NO_HINT=0; +const SERVICE_IP_QUERY_HINT=0x10000; +const SERVICE_CCP_QUERY_HINT=0x10000; +const SERVICE_IP_CHKPT_NUM=255; +const SERVICE_CCP_CHKPT_NUM=255; +const SERVICE_IP_WAIT_TIME=0xFF00; +const SERVICE_CCP_WAIT_TIME=0xFF00; +const SERVICE_IP_WAITTIME_SHIFT=8; +const SERVICE_NTIP_WAITTIME_SHIFT=12; +const UPPER_HINT_MASK=0xFF00; +const LOWER_HINT_MASK=255; +const UPPER_GET_HINT_MASK=0xFF00000; +const LOWER_GET_HINT_MASK=0xFF00; +const SERVICE_NT_MAXTIME=0xFFFF; +const SERVICE_RESRV_MASK=0x1FFFF; +const SERVICE_MAXTIME=255; +const SERVICE_BASE=3050; +const SERVICE_UIC_NORMAL=0; + +const SERVICE_UIC_BADPARMVAL = SERVICE_BASE+1; +const SERVICE_UIC_MISSPARM = SERVICE_BASE+2; +const SERVICE_UIC_UNKPARM = SERVICE_BASE+3; +const SERVICE_UIC_RESOURCE = SERVICE_BASE+4; +const SERVICE_UIC_CONFIG = SERVICE_BASE+5; +const SERVICE_UIC_SYSTEM = SERVICE_BASE+6; +const SERVICE_UIC_INTERNAL = SERVICE_BASE+7; +const SERVICE_UIC_AMBIGPARM = SERVICE_BASE+8; +const SERVICE_UIC_DUPPARM = SERVICE_BASE+9; +const SERVICE_UIC_KILL = SERVICE_BASE+10; +const SERVICE_UIC_EXEC = SERVICE_BASE+11; +const SERVICE_UIC_SUBSERV = SERVICE_BASE+12; +const SERVICE_UIC_CONFLPARM = SERVICE_BASE+13; +const SERVICE_UIC_FILE = SERVICE_BASE+14; +const SERVICE_UIC_M_NULL=0; +const SERVICE_UIC_M_MEMORY = SERVICE_BASE+20; +const SERVICE_UIC_M_DISK = SERVICE_BASE+21; +const SERVICE_UIC_M_THREADS = SERVICE_BASE+22; +const SERVICE_UIC_M_PROCESSES = SERVICE_BASE+23; +const SERVICE_UIC_M_SECURITY = SERVICE_BASE+24; +const SERVICE_UIC_M_LANROOT = SERVICE_BASE+25; +const SERVICE_UIC_M_REDIR = SERVICE_BASE+26; +const SERVICE_UIC_M_SERVER = SERVICE_BASE+27; +const SERVICE_UIC_M_SEC_FILE_ERR = SERVICE_BASE+28; +const SERVICE_UIC_M_FILES = SERVICE_BASE+29; +const SERVICE_UIC_M_LOGS = SERVICE_BASE+30; +const SERVICE_UIC_M_LANGROUP = SERVICE_BASE+31; +const SERVICE_UIC_M_MSGNAME = SERVICE_BASE+32; +const SERVICE_UIC_M_ANNOUNCE = SERVICE_BASE+33; +const SERVICE_UIC_M_UAS = SERVICE_BASE+34; +const SERVICE_UIC_M_SERVER_SEC_ERR = SERVICE_BASE+35; +const SERVICE_UIC_M_WKSTA = SERVICE_BASE+37; +const SERVICE_UIC_M_ERRLOG = SERVICE_BASE+38; +const SERVICE_UIC_M_FILE_UW = SERVICE_BASE+39; +const SERVICE_UIC_M_ADDPAK = SERVICE_BASE+40; +const SERVICE_UIC_M_LAZY = SERVICE_BASE+41; +const SERVICE_UIC_M_UAS_MACHINE_ACCT = SERVICE_BASE+42; +const SERVICE_UIC_M_UAS_SERVERS_NMEMB = SERVICE_BASE+43; +const SERVICE_UIC_M_UAS_SERVERS_NOGRP = SERVICE_BASE+44; +const SERVICE_UIC_M_UAS_INVALID_ROLE = SERVICE_BASE+45; +const SERVICE_UIC_M_NETLOGON_NO_DC = SERVICE_BASE+46; +const SERVICE_UIC_M_NETLOGON_DC_CFLCT = SERVICE_BASE+47; +const SERVICE_UIC_M_NETLOGON_AUTH = SERVICE_BASE+48; +const SERVICE_UIC_M_UAS_PROLOG = SERVICE_BASE+49; +const SERVICE2_BASE=5600; +const SERVICE_UIC_M_NETLOGON_MPATH = SERVICE2_BASE+0; +const SERVICE_UIC_M_LSA_MACHINE_ACCT = SERVICE2_BASE+1; +const SERVICE_UIC_M_DATABASE_ERROR = SERVICE2_BASE+2; + +struct SERVICE_INFO_0 { + LPWSTR svci0_name; +} +alias SERVICE_INFO_0* PSERVICE_INFO_0, LPSERVICE_INFO_0; + +struct SERVICE_INFO_1 { + LPWSTR svci1_name; + DWORD svci1_status; + DWORD svci1_code; + DWORD svci1_pid; +} +alias SERVICE_INFO_1* PSERVICE_INFO_1, LPSERVICE_INFO_1; + +struct SERVICE_INFO_2 { + LPWSTR svci2_name; + DWORD svci2_status; + DWORD svci2_code; + DWORD svci2_pid; + LPWSTR svci2_text; + DWORD svci2_specific_error; + LPWSTR svci2_display_name; +} +alias SERVICE_INFO_2* PSERVICE_INFO_2, LPSERVICE_INFO_2; + +extern (Windows) { + deprecated { + NET_API_STATUS NetServiceControl(LPCWSTR, LPCWSTR, DWORD, DWORD, + PBYTE*); + NET_API_STATUS NetServiceEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, + PDWORD, PDWORD); + NET_API_STATUS NetServiceGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetServiceInstall(LPCWSTR, LPCWSTR, DWORD, LPCWSTR*, + PBYTE*); + } +} +//MACRO #define SERVICE_IP_CODE(t, n) ((long)SERVICE_IP_QUERY_HINT|(long)(n|(t<>SERVICE_NTIP_WAITTIME_SHIFT)|(((c)&LOWER_GET_HINT_MASK)>>SERVICE_IP_WAITTIME_SHIFT)) diff --git a/src/core/sys/windows/lmuse.d b/src/core/sys/windows/lmuse.d index 9b10ec0865..2fe26fc440 100644 --- a/src/core/sys/windows/lmuse.d +++ b/src/core/sys/windows/lmuse.d @@ -1,79 +1,79 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmuse.d) - */ -module core.sys.windows.lmuse; -pragma(lib, "netapi32"); - -import core.sys.windows.lmuseflg; -private import core.sys.windows.lmcons, core.sys.windows.windef; - -enum { - USE_LOCAL_PARMNUM = 1, - USE_REMOTE_PARMNUM, - USE_PASSWORD_PARMNUM, - USE_ASGTYPE_PARMNUM, - USE_USERNAME_PARMNUM, - USE_DOMAINNAME_PARMNUM -} - -enum { - USE_OK, - USE_PAUSED, - USE_SESSLOST, - USE_DISCONN = USE_SESSLOST, - USE_NETERR, - USE_CONN, - USE_RECONN -} - -const DWORD USE_WILDCARD = -1; - -enum { - USE_DISKDEV, - USE_SPOOLDEV, - USE_CHARDEV, - USE_IPC -} - -struct USE_INFO_0 { - LPWSTR ui0_local; - LPWSTR ui0_remote; -} -alias USE_INFO_0* PUSE_INFO_0, LPUSE_INFO_0; - -struct USE_INFO_1 { - LPWSTR ui1_local; - LPWSTR ui1_remote; - LPWSTR ui1_password; - DWORD ui1_status; - DWORD ui1_asg_type; - DWORD ui1_refcount; - DWORD ui1_usecount; -} -alias USE_INFO_1* PUSE_INFO_1, LPUSE_INFO_1; - -struct USE_INFO_2 { - LPWSTR ui2_local; - LPWSTR ui2_remote; - LPWSTR ui2_password; - DWORD ui2_status; - DWORD ui2_asg_type; - DWORD ui2_refcount; - DWORD ui2_usecount; - LPWSTR ui2_username; - LPWSTR ui2_domainname; -} -alias USE_INFO_2* PUSE_INFO_2, LPUSE_INFO_2; - -extern (Windows) { - NET_API_STATUS NetUseAdd(LPWSTR, DWORD, PBYTE, PDWORD); - NET_API_STATUS NetUseDel(LPWSTR, LPWSTR, DWORD); - NET_API_STATUS NetUseEnum(LPWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, - PDWORD); - NET_API_STATUS NetUseGetInfo(LPWSTR, LPWSTR, DWORD, PBYTE*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmuse.d) + */ +module core.sys.windows.lmuse; +pragma(lib, "netapi32"); + +import core.sys.windows.lmuseflg; +private import core.sys.windows.lmcons, core.sys.windows.windef; + +enum { + USE_LOCAL_PARMNUM = 1, + USE_REMOTE_PARMNUM, + USE_PASSWORD_PARMNUM, + USE_ASGTYPE_PARMNUM, + USE_USERNAME_PARMNUM, + USE_DOMAINNAME_PARMNUM +} + +enum { + USE_OK, + USE_PAUSED, + USE_SESSLOST, + USE_DISCONN = USE_SESSLOST, + USE_NETERR, + USE_CONN, + USE_RECONN +} + +const DWORD USE_WILDCARD = -1; + +enum { + USE_DISKDEV, + USE_SPOOLDEV, + USE_CHARDEV, + USE_IPC +} + +struct USE_INFO_0 { + LPWSTR ui0_local; + LPWSTR ui0_remote; +} +alias USE_INFO_0* PUSE_INFO_0, LPUSE_INFO_0; + +struct USE_INFO_1 { + LPWSTR ui1_local; + LPWSTR ui1_remote; + LPWSTR ui1_password; + DWORD ui1_status; + DWORD ui1_asg_type; + DWORD ui1_refcount; + DWORD ui1_usecount; +} +alias USE_INFO_1* PUSE_INFO_1, LPUSE_INFO_1; + +struct USE_INFO_2 { + LPWSTR ui2_local; + LPWSTR ui2_remote; + LPWSTR ui2_password; + DWORD ui2_status; + DWORD ui2_asg_type; + DWORD ui2_refcount; + DWORD ui2_usecount; + LPWSTR ui2_username; + LPWSTR ui2_domainname; +} +alias USE_INFO_2* PUSE_INFO_2, LPUSE_INFO_2; + +extern (Windows) { + NET_API_STATUS NetUseAdd(LPWSTR, DWORD, PBYTE, PDWORD); + NET_API_STATUS NetUseDel(LPWSTR, LPWSTR, DWORD); + NET_API_STATUS NetUseEnum(LPWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, + PDWORD); + NET_API_STATUS NetUseGetInfo(LPWSTR, LPWSTR, DWORD, PBYTE*); +} diff --git a/src/core/sys/windows/lmuseflg.d b/src/core/sys/windows/lmuseflg.d index b3630612dd..375a982ae9 100644 --- a/src/core/sys/windows/lmuseflg.d +++ b/src/core/sys/windows/lmuseflg.d @@ -1,15 +1,15 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmuseflg.d) - */ -module core.sys.windows.lmuseflg; - -enum : uint { - USE_NOFORCE = 0, - USE_FORCE, - USE_LOTS_OF_FORCE // = 2 -} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmuseflg.d) + */ +module core.sys.windows.lmuseflg; + +enum : uint { + USE_NOFORCE = 0, + USE_FORCE, + USE_LOTS_OF_FORCE // = 2 +} diff --git a/src/core/sys/windows/lmwksta.d b/src/core/sys/windows/lmwksta.d index b709393c45..8701859a1d 100644 --- a/src/core/sys/windows/lmwksta.d +++ b/src/core/sys/windows/lmwksta.d @@ -1,389 +1,389 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lmwksta.d) - */ -module core.sys.windows.lmwksta; -pragma(lib, "netapi32"); - -import core.sys.windows.lmuseflg; -private import core.sys.windows.lmcons, core.sys.windows.windef; - -pragma(lib, "Netapi32"); - -enum { - WKSTA_COMPUTERNAME_PARMNUM = 1, - WKSTA_LANGROUP_PARMNUM, // = 2 - WKSTA_VER_MAJOR_PARMNUM = 4, - WKSTA_VER_MINOR_PARMNUM, - WKSTA_LOGGED_ON_USERS_PARMNUM, - WKSTA_LANROOT_PARMNUM, - WKSTA_LOGON_DOMAIN_PARMNUM, - WKSTA_LOGON_SERVER_PARMNUM, - WKSTA_CHARWAIT_PARMNUM, - WKSTA_CHARTIME_PARMNUM, - WKSTA_CHARCOUNT_PARMNUM, - WKSTA_KEEPCONN_PARMNUM, - WKSTA_KEEPSEARCH_PARMNUM, - WKSTA_MAXCMDS_PARMNUM, - WKSTA_NUMWORKBUF_PARMNUM, - WKSTA_MAXWRKCACHE_PARMNUM, - WKSTA_SESSTIMEOUT_PARMNUM, - WKSTA_SIZERROR_PARMNUM, - WKSTA_NUMALERTS_PARMNUM, - WKSTA_NUMSERVICES_PARMNUM, - WKSTA_NUMCHARBUF_PARMNUM, - WKSTA_SIZCHARBUF_PARMNUM, // = 23 - WKSTA_ERRLOGSZ_PARMNUM = 27, - WKSTA_PRINTBUFTIME_PARMNUM, - WKSTA_SIZWORKBUF_PARMNUM, - WKSTA_MAILSLOTS_PARMNUM, - WKSTA_NUMDGRAMBUF_PARMNUM, - WKSTA_WRKHEURISTICS_PARMNUM, - WKSTA_MAXTHREADS_PARMNUM, // = 33 - WKSTA_LOCKQUOTA_PARMNUM = 41, - WKSTA_LOCKINCREMENT_PARMNUM, - WKSTA_LOCKMAXIMUM_PARMNUM, - WKSTA_PIPEINCREMENT_PARMNUM, - WKSTA_PIPEMAXIMUM_PARMNUM, - WKSTA_DORMANTFILELIMIT_PARMNUM, - WKSTA_CACHEFILETIMEOUT_PARMNUM, - WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM, - WKSTA_USEUNLOCKBEHIND_PARMNUM, - WKSTA_USECLOSEBEHIND_PARMNUM, - WKSTA_BUFFERNAMEDPIPES_PARMNUM, - WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM, - WKSTA_UTILIZENTCACHING_PARMNUM, - WKSTA_USERAWREAD_PARMNUM, - WKSTA_USERAWWRITE_PARMNUM, - WKSTA_USEWRITERAWWITHDATA_PARMNUM, - WKSTA_USEENCRYPTION_PARMNUM, - WKSTA_BUFFILESWITHDENYWRITE_PARMNUM, - WKSTA_BUFFERREADONLYFILES_PARMNUM, - WKSTA_FORCECORECREATEMODE_PARMNUM, - WKSTA_USE512BYTESMAXTRANSFER_PARMNUM, - WKSTA_READAHEADTHRUPUT_PARMNUM, // = 62 - WKSTA_PLATFORM_ID_PARMNUM = 100, - WKSTA_OTH_DOMAINS_PARMNUM = 101, - TRANSPORT_QUALITYOFSERVICE_PARMNUM = 201, - TRANSPORT_NAME_PARMNUM = 202 -} - -struct WKSTA_INFO_100{ - DWORD wki100_platform_id; - LPWSTR wki100_computername; - LPWSTR wki100_langroup; - DWORD wki100_ver_major; - DWORD wki100_ver_minor; -} -alias WKSTA_INFO_100* PWKSTA_INFO_100, LPWKSTA_INFO_100; - -struct WKSTA_INFO_101{ - DWORD wki101_platform_id; - LPWSTR wki101_computername; - LPWSTR wki101_langroup; - DWORD wki101_ver_major; - DWORD wki101_ver_minor; - LPWSTR wki101_lanroot; -} -alias WKSTA_INFO_101* PWKSTA_INFO_101, LPWKSTA_INFO_101; - -struct WKSTA_INFO_102{ - DWORD wki102_platform_id; - LPWSTR wki102_computername; - LPWSTR wki102_langroup; - DWORD wki102_ver_major; - DWORD wki102_ver_minor; - LPWSTR wki102_lanroot; - DWORD wki102_logged_on_users; -} -alias WKSTA_INFO_102* PWKSTA_INFO_102, LPWKSTA_INFO_102; - -struct WKSTA_INFO_302{ - DWORD wki302_char_wait; - DWORD wki302_collection_time; - DWORD wki302_maximum_collection_count; - DWORD wki302_keep_conn; - DWORD wki302_keep_search; - DWORD wki302_max_cmds; - DWORD wki302_num_work_buf; - DWORD wki302_siz_work_buf; - DWORD wki302_max_wrk_cache; - DWORD wki302_sess_timeout; - DWORD wki302_siz_error; - DWORD wki302_num_alerts; - DWORD wki302_num_services; - DWORD wki302_errlog_sz; - DWORD wki302_print_buf_time; - DWORD wki302_num_char_buf; - DWORD wki302_siz_char_buf; - LPWSTR wki302_wrk_heuristics; - DWORD wki302_mailslots; - DWORD wki302_num_dgram_buf; -} -alias WKSTA_INFO_302* PWKSTA_INFO_302, LPWKSTA_INFO_302; - -struct WKSTA_INFO_402{ - DWORD wki402_char_wait; - DWORD wki402_collection_time; - DWORD wki402_maximum_collection_count; - DWORD wki402_keep_conn; - DWORD wki402_keep_search; - DWORD wki402_max_cmds; - DWORD wki402_num_work_buf; - DWORD wki402_siz_work_buf; - DWORD wki402_max_wrk_cache; - DWORD wki402_sess_timeout; - DWORD wki402_siz_error; - DWORD wki402_num_alerts; - DWORD wki402_num_services; - DWORD wki402_errlog_sz; - DWORD wki402_print_buf_time; - DWORD wki402_num_char_buf; - DWORD wki402_siz_char_buf; - LPWSTR wki402_wrk_heuristics; - DWORD wki402_mailslots; - DWORD wki402_num_dgram_buf; - DWORD wki402_max_threads; -} -alias WKSTA_INFO_402* PWKSTA_INFO_402, LPWKSTA_INFO_402; - -struct WKSTA_INFO_502{ - DWORD wki502_char_wait; - DWORD wki502_collection_time; - DWORD wki502_maximum_collection_count; - DWORD wki502_keep_conn; - DWORD wki502_max_cmds; - DWORD wki502_sess_timeout; - DWORD wki502_siz_char_buf; - DWORD wki502_max_threads; - DWORD wki502_lock_quota; - DWORD wki502_lock_increment; - DWORD wki502_lock_maximum; - DWORD wki502_pipe_increment; - DWORD wki502_pipe_maximum; - DWORD wki502_cache_file_timeout; - DWORD wki502_dormant_file_limit; - DWORD wki502_read_ahead_throughput; - DWORD wki502_num_mailslot_buffers; - DWORD wki502_num_srv_announce_buffers; - DWORD wki502_max_illegal_datagram_events; - DWORD wki502_illegal_datagram_event_reset_frequency; - BOOL wki502_log_election_packets; - BOOL wki502_use_opportunistic_locking; - BOOL wki502_use_unlock_behind; - BOOL wki502_use_close_behind; - BOOL wki502_buf_named_pipes; - BOOL wki502_use_lock_read_unlock; - BOOL wki502_utilize_nt_caching; - BOOL wki502_use_raw_read; - BOOL wki502_use_raw_write; - BOOL wki502_use_write_raw_data; - BOOL wki502_use_encryption; - BOOL wki502_buf_files_deny_write; - BOOL wki502_buf_read_only_files; - BOOL wki502_force_core_create_mode; - BOOL wki502_use_512_byte_max_transfer; -} -alias WKSTA_INFO_502* PWKSTA_INFO_502, LPWKSTA_INFO_502; - -struct WKSTA_INFO_1010 { - DWORD wki1010_char_wait; -} -alias WKSTA_INFO_1010* PWKSTA_INFO_1010, LPWKSTA_INFO_1010; - -struct WKSTA_INFO_1011 { - DWORD wki1011_collection_time; -} -alias WKSTA_INFO_1011* PWKSTA_INFO_1011, LPWKSTA_INFO_1011; - -struct WKSTA_INFO_1012 { - DWORD wki1012_maximum_collection_count; -} -alias WKSTA_INFO_1012* PWKSTA_INFO_1012, LPWKSTA_INFO_1012; - -struct WKSTA_INFO_1027 { - DWORD wki1027_errlog_sz; -} -alias WKSTA_INFO_1027* PWKSTA_INFO_1027, LPWKSTA_INFO_1027; - -struct WKSTA_INFO_1028 { - DWORD wki1028_print_buf_time; -} -alias WKSTA_INFO_1028* PWKSTA_INFO_1028, LPWKSTA_INFO_1028; - -struct WKSTA_INFO_1032 { - DWORD wki1032_wrk_heuristics; -} -alias WKSTA_INFO_1032* PWKSTA_INFO_1032, LPWKSTA_INFO_1032; - -struct WKSTA_INFO_1013 { - DWORD wki1013_keep_conn; -} -alias WKSTA_INFO_1013* PWKSTA_INFO_1013, LPWKSTA_INFO_1013; - -struct WKSTA_INFO_1018 { - DWORD wki1018_sess_timeout; -} -alias WKSTA_INFO_1018* PWKSTA_INFO_1018, LPWKSTA_INFO_1018; - -struct WKSTA_INFO_1023 { - DWORD wki1023_siz_char_buf; -} -alias WKSTA_INFO_1023* PWKSTA_INFO_1023, LPWKSTA_INFO_1023; - -struct WKSTA_INFO_1033 { - DWORD wki1033_max_threads; -} -alias WKSTA_INFO_1033* PWKSTA_INFO_1033, LPWKSTA_INFO_1033; - -struct WKSTA_INFO_1041 { - DWORD wki1041_lock_quota; -} -alias WKSTA_INFO_1041* PWKSTA_INFO_1041, LPWKSTA_INFO_1041; - -struct WKSTA_INFO_1042 { - DWORD wki1042_lock_increment; -} -alias WKSTA_INFO_1042* PWKSTA_INFO_1042, LPWKSTA_INFO_1042; - -struct WKSTA_INFO_1043 { - DWORD wki1043_lock_maximum; -} -alias WKSTA_INFO_1043* PWKSTA_INFO_1043, LPWKSTA_INFO_1043; - -struct WKSTA_INFO_1044 { - DWORD wki1044_pipe_increment; -} -alias WKSTA_INFO_1044* PWKSTA_INFO_1044, LPWKSTA_INFO_1044; - -struct WKSTA_INFO_1045 { - DWORD wki1045_pipe_maximum; -} -alias WKSTA_INFO_1045* PWKSTA_INFO_1045, LPWKSTA_INFO_1045; - -struct WKSTA_INFO_1046 { - DWORD wki1046_dormant_file_limit; -} -alias WKSTA_INFO_1046* PWKSTA_INFO_1046, LPWKSTA_INFO_1046; - -struct WKSTA_INFO_1047 { - DWORD wki1047_cache_file_timeout; -} -alias WKSTA_INFO_1047* PWKSTA_INFO_1047, LPWKSTA_INFO_1047; - -struct WKSTA_INFO_1048 { - BOOL wki1048_use_opportunistic_locking; -} -alias WKSTA_INFO_1048* PWKSTA_INFO_1048, LPWKSTA_INFO_1048; - -struct WKSTA_INFO_1049 { - BOOL wki1049_use_unlock_behind; -} -alias WKSTA_INFO_1049* PWKSTA_INFO_1049, LPWKSTA_INFO_1049; - -struct WKSTA_INFO_1050 { - BOOL wki1050_use_close_behind; -} -alias WKSTA_INFO_1050* PWKSTA_INFO_1050, LPWKSTA_INFO_1050; - -struct WKSTA_INFO_1051 { - BOOL wki1051_buf_named_pipes; -} -alias WKSTA_INFO_1051* PWKSTA_INFO_1051, LPWKSTA_INFO_1051; - -struct WKSTA_INFO_1052 { - BOOL wki1052_use_lock_read_unlock; -} -alias WKSTA_INFO_1052* PWKSTA_INFO_1052, LPWKSTA_INFO_1052; - -struct WKSTA_INFO_1053 { - BOOL wki1053_utilize_nt_caching; -} -alias WKSTA_INFO_1053* PWKSTA_INFO_1053, LPWKSTA_INFO_1053; - -struct WKSTA_INFO_1054 { - BOOL wki1054_use_raw_read; -} -alias WKSTA_INFO_1054* PWKSTA_INFO_1054, LPWKSTA_INFO_1054; - -struct WKSTA_INFO_1055 { - BOOL wki1055_use_raw_write; -} -alias WKSTA_INFO_1055* PWKSTA_INFO_1055, LPWKSTA_INFO_1055; - -struct WKSTA_INFO_1056 { - BOOL wki1056_use_write_raw_data; -} -alias WKSTA_INFO_1056* PWKSTA_INFO_1056, LPWKSTA_INFO_1056; - -struct WKSTA_INFO_1057 { - BOOL wki1057_use_encryption; -} -alias WKSTA_INFO_1057* PWKSTA_INFO_1057, LPWKSTA_INFO_1057; - -struct WKSTA_INFO_1058 { - BOOL wki1058_buf_files_deny_write; -} -alias WKSTA_INFO_1058* PWKSTA_INFO_1058, LPWKSTA_INFO_1058; - -struct WKSTA_INFO_1059 { - BOOL wki1059_buf_read_only_files; -} -alias WKSTA_INFO_1059* PWKSTA_INFO_1059, LPWKSTA_INFO_1059; - -struct WKSTA_INFO_1060 { - BOOL wki1060_force_core_create_mode; -} -alias WKSTA_INFO_1060* PWKSTA_INFO_1060, LPWKSTA_INFO_1060; - -struct WKSTA_INFO_1061 { - BOOL wki1061_use_512_byte_max_transfer; -} -alias WKSTA_INFO_1061* PWKSTA_INFO_1061, LPWKSTA_INFO_1061; - -struct WKSTA_INFO_1062 { - DWORD wki1062_read_ahead_throughput; -} -alias WKSTA_INFO_1062* PWKSTA_INFO_1062, LPWKSTA_INFO_1062; - -struct WKSTA_USER_INFO_0 { - LPWSTR wkui0_username; -} -alias WKSTA_USER_INFO_0* PWKSTA_USER_INFO_0, LPWKSTA_USER_INFO_0; - -struct WKSTA_USER_INFO_1{ - LPWSTR wkui1_username; - LPWSTR wkui1_logon_domain; - LPWSTR wkui1_oth_domains; - LPWSTR wkui1_logon_server; -} -alias WKSTA_USER_INFO_1* PWKSTA_USER_INFO_1, LPWKSTA_USER_INFO_1; - -struct WKSTA_USER_INFO_1101 { - LPWSTR wkui1101_oth_domains; -} -alias WKSTA_USER_INFO_1101* PWKSTA_USER_INFO_1101, LPWKSTA_USER_INFO_1101; - -struct WKSTA_TRANSPORT_INFO_0{ - DWORD wkti0_quality_of_service; - DWORD wkti0_number_of_vcs; - LPWSTR wkti0_transport_name; - LPWSTR wkti0_transport_address; - BOOL wkti0_wan_ish; -} -alias WKSTA_TRANSPORT_INFO_0* PWKSTA_TRANSPORT_INFO_0, LPWKSTA_TRANSPORT_INFO_0; - -extern (Windows) { -NET_API_STATUS NetWkstaGetInfo(LPWSTR,DWORD,PBYTE*); -NET_API_STATUS NetWkstaSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetWkstaUserGetInfo(LPWSTR,DWORD,PBYTE*); -NET_API_STATUS NetWkstaUserSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetWkstaUserEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetWkstaTransportAdd(LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetWkstaTransportDel(LPWSTR,LPWSTR,DWORD); -NET_API_STATUS NetWkstaTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lmwksta.d) + */ +module core.sys.windows.lmwksta; +pragma(lib, "netapi32"); + +import core.sys.windows.lmuseflg; +private import core.sys.windows.lmcons, core.sys.windows.windef; + +pragma(lib, "Netapi32"); + +enum { + WKSTA_COMPUTERNAME_PARMNUM = 1, + WKSTA_LANGROUP_PARMNUM, // = 2 + WKSTA_VER_MAJOR_PARMNUM = 4, + WKSTA_VER_MINOR_PARMNUM, + WKSTA_LOGGED_ON_USERS_PARMNUM, + WKSTA_LANROOT_PARMNUM, + WKSTA_LOGON_DOMAIN_PARMNUM, + WKSTA_LOGON_SERVER_PARMNUM, + WKSTA_CHARWAIT_PARMNUM, + WKSTA_CHARTIME_PARMNUM, + WKSTA_CHARCOUNT_PARMNUM, + WKSTA_KEEPCONN_PARMNUM, + WKSTA_KEEPSEARCH_PARMNUM, + WKSTA_MAXCMDS_PARMNUM, + WKSTA_NUMWORKBUF_PARMNUM, + WKSTA_MAXWRKCACHE_PARMNUM, + WKSTA_SESSTIMEOUT_PARMNUM, + WKSTA_SIZERROR_PARMNUM, + WKSTA_NUMALERTS_PARMNUM, + WKSTA_NUMSERVICES_PARMNUM, + WKSTA_NUMCHARBUF_PARMNUM, + WKSTA_SIZCHARBUF_PARMNUM, // = 23 + WKSTA_ERRLOGSZ_PARMNUM = 27, + WKSTA_PRINTBUFTIME_PARMNUM, + WKSTA_SIZWORKBUF_PARMNUM, + WKSTA_MAILSLOTS_PARMNUM, + WKSTA_NUMDGRAMBUF_PARMNUM, + WKSTA_WRKHEURISTICS_PARMNUM, + WKSTA_MAXTHREADS_PARMNUM, // = 33 + WKSTA_LOCKQUOTA_PARMNUM = 41, + WKSTA_LOCKINCREMENT_PARMNUM, + WKSTA_LOCKMAXIMUM_PARMNUM, + WKSTA_PIPEINCREMENT_PARMNUM, + WKSTA_PIPEMAXIMUM_PARMNUM, + WKSTA_DORMANTFILELIMIT_PARMNUM, + WKSTA_CACHEFILETIMEOUT_PARMNUM, + WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM, + WKSTA_USEUNLOCKBEHIND_PARMNUM, + WKSTA_USECLOSEBEHIND_PARMNUM, + WKSTA_BUFFERNAMEDPIPES_PARMNUM, + WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM, + WKSTA_UTILIZENTCACHING_PARMNUM, + WKSTA_USERAWREAD_PARMNUM, + WKSTA_USERAWWRITE_PARMNUM, + WKSTA_USEWRITERAWWITHDATA_PARMNUM, + WKSTA_USEENCRYPTION_PARMNUM, + WKSTA_BUFFILESWITHDENYWRITE_PARMNUM, + WKSTA_BUFFERREADONLYFILES_PARMNUM, + WKSTA_FORCECORECREATEMODE_PARMNUM, + WKSTA_USE512BYTESMAXTRANSFER_PARMNUM, + WKSTA_READAHEADTHRUPUT_PARMNUM, // = 62 + WKSTA_PLATFORM_ID_PARMNUM = 100, + WKSTA_OTH_DOMAINS_PARMNUM = 101, + TRANSPORT_QUALITYOFSERVICE_PARMNUM = 201, + TRANSPORT_NAME_PARMNUM = 202 +} + +struct WKSTA_INFO_100{ + DWORD wki100_platform_id; + LPWSTR wki100_computername; + LPWSTR wki100_langroup; + DWORD wki100_ver_major; + DWORD wki100_ver_minor; +} +alias WKSTA_INFO_100* PWKSTA_INFO_100, LPWKSTA_INFO_100; + +struct WKSTA_INFO_101{ + DWORD wki101_platform_id; + LPWSTR wki101_computername; + LPWSTR wki101_langroup; + DWORD wki101_ver_major; + DWORD wki101_ver_minor; + LPWSTR wki101_lanroot; +} +alias WKSTA_INFO_101* PWKSTA_INFO_101, LPWKSTA_INFO_101; + +struct WKSTA_INFO_102{ + DWORD wki102_platform_id; + LPWSTR wki102_computername; + LPWSTR wki102_langroup; + DWORD wki102_ver_major; + DWORD wki102_ver_minor; + LPWSTR wki102_lanroot; + DWORD wki102_logged_on_users; +} +alias WKSTA_INFO_102* PWKSTA_INFO_102, LPWKSTA_INFO_102; + +struct WKSTA_INFO_302{ + DWORD wki302_char_wait; + DWORD wki302_collection_time; + DWORD wki302_maximum_collection_count; + DWORD wki302_keep_conn; + DWORD wki302_keep_search; + DWORD wki302_max_cmds; + DWORD wki302_num_work_buf; + DWORD wki302_siz_work_buf; + DWORD wki302_max_wrk_cache; + DWORD wki302_sess_timeout; + DWORD wki302_siz_error; + DWORD wki302_num_alerts; + DWORD wki302_num_services; + DWORD wki302_errlog_sz; + DWORD wki302_print_buf_time; + DWORD wki302_num_char_buf; + DWORD wki302_siz_char_buf; + LPWSTR wki302_wrk_heuristics; + DWORD wki302_mailslots; + DWORD wki302_num_dgram_buf; +} +alias WKSTA_INFO_302* PWKSTA_INFO_302, LPWKSTA_INFO_302; + +struct WKSTA_INFO_402{ + DWORD wki402_char_wait; + DWORD wki402_collection_time; + DWORD wki402_maximum_collection_count; + DWORD wki402_keep_conn; + DWORD wki402_keep_search; + DWORD wki402_max_cmds; + DWORD wki402_num_work_buf; + DWORD wki402_siz_work_buf; + DWORD wki402_max_wrk_cache; + DWORD wki402_sess_timeout; + DWORD wki402_siz_error; + DWORD wki402_num_alerts; + DWORD wki402_num_services; + DWORD wki402_errlog_sz; + DWORD wki402_print_buf_time; + DWORD wki402_num_char_buf; + DWORD wki402_siz_char_buf; + LPWSTR wki402_wrk_heuristics; + DWORD wki402_mailslots; + DWORD wki402_num_dgram_buf; + DWORD wki402_max_threads; +} +alias WKSTA_INFO_402* PWKSTA_INFO_402, LPWKSTA_INFO_402; + +struct WKSTA_INFO_502{ + DWORD wki502_char_wait; + DWORD wki502_collection_time; + DWORD wki502_maximum_collection_count; + DWORD wki502_keep_conn; + DWORD wki502_max_cmds; + DWORD wki502_sess_timeout; + DWORD wki502_siz_char_buf; + DWORD wki502_max_threads; + DWORD wki502_lock_quota; + DWORD wki502_lock_increment; + DWORD wki502_lock_maximum; + DWORD wki502_pipe_increment; + DWORD wki502_pipe_maximum; + DWORD wki502_cache_file_timeout; + DWORD wki502_dormant_file_limit; + DWORD wki502_read_ahead_throughput; + DWORD wki502_num_mailslot_buffers; + DWORD wki502_num_srv_announce_buffers; + DWORD wki502_max_illegal_datagram_events; + DWORD wki502_illegal_datagram_event_reset_frequency; + BOOL wki502_log_election_packets; + BOOL wki502_use_opportunistic_locking; + BOOL wki502_use_unlock_behind; + BOOL wki502_use_close_behind; + BOOL wki502_buf_named_pipes; + BOOL wki502_use_lock_read_unlock; + BOOL wki502_utilize_nt_caching; + BOOL wki502_use_raw_read; + BOOL wki502_use_raw_write; + BOOL wki502_use_write_raw_data; + BOOL wki502_use_encryption; + BOOL wki502_buf_files_deny_write; + BOOL wki502_buf_read_only_files; + BOOL wki502_force_core_create_mode; + BOOL wki502_use_512_byte_max_transfer; +} +alias WKSTA_INFO_502* PWKSTA_INFO_502, LPWKSTA_INFO_502; + +struct WKSTA_INFO_1010 { + DWORD wki1010_char_wait; +} +alias WKSTA_INFO_1010* PWKSTA_INFO_1010, LPWKSTA_INFO_1010; + +struct WKSTA_INFO_1011 { + DWORD wki1011_collection_time; +} +alias WKSTA_INFO_1011* PWKSTA_INFO_1011, LPWKSTA_INFO_1011; + +struct WKSTA_INFO_1012 { + DWORD wki1012_maximum_collection_count; +} +alias WKSTA_INFO_1012* PWKSTA_INFO_1012, LPWKSTA_INFO_1012; + +struct WKSTA_INFO_1027 { + DWORD wki1027_errlog_sz; +} +alias WKSTA_INFO_1027* PWKSTA_INFO_1027, LPWKSTA_INFO_1027; + +struct WKSTA_INFO_1028 { + DWORD wki1028_print_buf_time; +} +alias WKSTA_INFO_1028* PWKSTA_INFO_1028, LPWKSTA_INFO_1028; + +struct WKSTA_INFO_1032 { + DWORD wki1032_wrk_heuristics; +} +alias WKSTA_INFO_1032* PWKSTA_INFO_1032, LPWKSTA_INFO_1032; + +struct WKSTA_INFO_1013 { + DWORD wki1013_keep_conn; +} +alias WKSTA_INFO_1013* PWKSTA_INFO_1013, LPWKSTA_INFO_1013; + +struct WKSTA_INFO_1018 { + DWORD wki1018_sess_timeout; +} +alias WKSTA_INFO_1018* PWKSTA_INFO_1018, LPWKSTA_INFO_1018; + +struct WKSTA_INFO_1023 { + DWORD wki1023_siz_char_buf; +} +alias WKSTA_INFO_1023* PWKSTA_INFO_1023, LPWKSTA_INFO_1023; + +struct WKSTA_INFO_1033 { + DWORD wki1033_max_threads; +} +alias WKSTA_INFO_1033* PWKSTA_INFO_1033, LPWKSTA_INFO_1033; + +struct WKSTA_INFO_1041 { + DWORD wki1041_lock_quota; +} +alias WKSTA_INFO_1041* PWKSTA_INFO_1041, LPWKSTA_INFO_1041; + +struct WKSTA_INFO_1042 { + DWORD wki1042_lock_increment; +} +alias WKSTA_INFO_1042* PWKSTA_INFO_1042, LPWKSTA_INFO_1042; + +struct WKSTA_INFO_1043 { + DWORD wki1043_lock_maximum; +} +alias WKSTA_INFO_1043* PWKSTA_INFO_1043, LPWKSTA_INFO_1043; + +struct WKSTA_INFO_1044 { + DWORD wki1044_pipe_increment; +} +alias WKSTA_INFO_1044* PWKSTA_INFO_1044, LPWKSTA_INFO_1044; + +struct WKSTA_INFO_1045 { + DWORD wki1045_pipe_maximum; +} +alias WKSTA_INFO_1045* PWKSTA_INFO_1045, LPWKSTA_INFO_1045; + +struct WKSTA_INFO_1046 { + DWORD wki1046_dormant_file_limit; +} +alias WKSTA_INFO_1046* PWKSTA_INFO_1046, LPWKSTA_INFO_1046; + +struct WKSTA_INFO_1047 { + DWORD wki1047_cache_file_timeout; +} +alias WKSTA_INFO_1047* PWKSTA_INFO_1047, LPWKSTA_INFO_1047; + +struct WKSTA_INFO_1048 { + BOOL wki1048_use_opportunistic_locking; +} +alias WKSTA_INFO_1048* PWKSTA_INFO_1048, LPWKSTA_INFO_1048; + +struct WKSTA_INFO_1049 { + BOOL wki1049_use_unlock_behind; +} +alias WKSTA_INFO_1049* PWKSTA_INFO_1049, LPWKSTA_INFO_1049; + +struct WKSTA_INFO_1050 { + BOOL wki1050_use_close_behind; +} +alias WKSTA_INFO_1050* PWKSTA_INFO_1050, LPWKSTA_INFO_1050; + +struct WKSTA_INFO_1051 { + BOOL wki1051_buf_named_pipes; +} +alias WKSTA_INFO_1051* PWKSTA_INFO_1051, LPWKSTA_INFO_1051; + +struct WKSTA_INFO_1052 { + BOOL wki1052_use_lock_read_unlock; +} +alias WKSTA_INFO_1052* PWKSTA_INFO_1052, LPWKSTA_INFO_1052; + +struct WKSTA_INFO_1053 { + BOOL wki1053_utilize_nt_caching; +} +alias WKSTA_INFO_1053* PWKSTA_INFO_1053, LPWKSTA_INFO_1053; + +struct WKSTA_INFO_1054 { + BOOL wki1054_use_raw_read; +} +alias WKSTA_INFO_1054* PWKSTA_INFO_1054, LPWKSTA_INFO_1054; + +struct WKSTA_INFO_1055 { + BOOL wki1055_use_raw_write; +} +alias WKSTA_INFO_1055* PWKSTA_INFO_1055, LPWKSTA_INFO_1055; + +struct WKSTA_INFO_1056 { + BOOL wki1056_use_write_raw_data; +} +alias WKSTA_INFO_1056* PWKSTA_INFO_1056, LPWKSTA_INFO_1056; + +struct WKSTA_INFO_1057 { + BOOL wki1057_use_encryption; +} +alias WKSTA_INFO_1057* PWKSTA_INFO_1057, LPWKSTA_INFO_1057; + +struct WKSTA_INFO_1058 { + BOOL wki1058_buf_files_deny_write; +} +alias WKSTA_INFO_1058* PWKSTA_INFO_1058, LPWKSTA_INFO_1058; + +struct WKSTA_INFO_1059 { + BOOL wki1059_buf_read_only_files; +} +alias WKSTA_INFO_1059* PWKSTA_INFO_1059, LPWKSTA_INFO_1059; + +struct WKSTA_INFO_1060 { + BOOL wki1060_force_core_create_mode; +} +alias WKSTA_INFO_1060* PWKSTA_INFO_1060, LPWKSTA_INFO_1060; + +struct WKSTA_INFO_1061 { + BOOL wki1061_use_512_byte_max_transfer; +} +alias WKSTA_INFO_1061* PWKSTA_INFO_1061, LPWKSTA_INFO_1061; + +struct WKSTA_INFO_1062 { + DWORD wki1062_read_ahead_throughput; +} +alias WKSTA_INFO_1062* PWKSTA_INFO_1062, LPWKSTA_INFO_1062; + +struct WKSTA_USER_INFO_0 { + LPWSTR wkui0_username; +} +alias WKSTA_USER_INFO_0* PWKSTA_USER_INFO_0, LPWKSTA_USER_INFO_0; + +struct WKSTA_USER_INFO_1{ + LPWSTR wkui1_username; + LPWSTR wkui1_logon_domain; + LPWSTR wkui1_oth_domains; + LPWSTR wkui1_logon_server; +} +alias WKSTA_USER_INFO_1* PWKSTA_USER_INFO_1, LPWKSTA_USER_INFO_1; + +struct WKSTA_USER_INFO_1101 { + LPWSTR wkui1101_oth_domains; +} +alias WKSTA_USER_INFO_1101* PWKSTA_USER_INFO_1101, LPWKSTA_USER_INFO_1101; + +struct WKSTA_TRANSPORT_INFO_0{ + DWORD wkti0_quality_of_service; + DWORD wkti0_number_of_vcs; + LPWSTR wkti0_transport_name; + LPWSTR wkti0_transport_address; + BOOL wkti0_wan_ish; +} +alias WKSTA_TRANSPORT_INFO_0* PWKSTA_TRANSPORT_INFO_0, LPWKSTA_TRANSPORT_INFO_0; + +extern (Windows) { +NET_API_STATUS NetWkstaGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetWkstaSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetWkstaUserGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetWkstaUserSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetWkstaUserEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetWkstaTransportAdd(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetWkstaTransportDel(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS NetWkstaTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +} diff --git a/src/core/sys/windows/lzexpand.d b/src/core/sys/windows/lzexpand.d index af38a52612..2e3a2917ea 100644 --- a/src/core/sys/windows/lzexpand.d +++ b/src/core/sys/windows/lzexpand.d @@ -1,47 +1,47 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_lzexpand.d) - */ -module core.sys.windows.lzexpand; -pragma(lib, "lz32"); - -private import core.sys.windows.winbase, core.sys.windows.windef; - -enum : LONG { - LZERROR_BADINHANDLE = -1, - LZERROR_BADOUTHANDLE = -2, - LZERROR_READ = -3, - LZERROR_WRITE = -4, - LZERROR_GLOBALLOC = -5, - LZERROR_GLOBLOCK = -6, - LZERROR_BADVALUE = -7, - LZERROR_UNKNOWNALG = -8 -} - -extern (Windows): -deprecated { - LONG CopyLZFile(INT, INT); - void LZDone(); - INT LZStart(); -} -INT GetExpandedNameA(LPSTR, LPSTR); -INT GetExpandedNameW(LPWSTR, LPWSTR); -void LZClose(INT); -LONG LZCopy(INT, INT); -INT LZInit(INT); -INT LZOpenFileA(LPSTR, LPOFSTRUCT, WORD); -INT LZOpenFileW(LPWSTR, LPOFSTRUCT, WORD); -INT LZRead(INT, LPSTR, INT); -LONG LZSeek(INT, LONG, INT); - -version (Unicode) { - alias GetExpandedNameW GetExpandedName; - alias LZOpenFileW LZOpenFile; -} else { - alias GetExpandedNameA GetExpandedName; - alias LZOpenFileA LZOpenFile; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_lzexpand.d) + */ +module core.sys.windows.lzexpand; +pragma(lib, "lz32"); + +private import core.sys.windows.winbase, core.sys.windows.windef; + +enum : LONG { + LZERROR_BADINHANDLE = -1, + LZERROR_BADOUTHANDLE = -2, + LZERROR_READ = -3, + LZERROR_WRITE = -4, + LZERROR_GLOBALLOC = -5, + LZERROR_GLOBLOCK = -6, + LZERROR_BADVALUE = -7, + LZERROR_UNKNOWNALG = -8 +} + +extern (Windows): +deprecated { + LONG CopyLZFile(INT, INT); + void LZDone(); + INT LZStart(); +} +INT GetExpandedNameA(LPSTR, LPSTR); +INT GetExpandedNameW(LPWSTR, LPWSTR); +void LZClose(INT); +LONG LZCopy(INT, INT); +INT LZInit(INT); +INT LZOpenFileA(LPSTR, LPOFSTRUCT, WORD); +INT LZOpenFileW(LPWSTR, LPOFSTRUCT, WORD); +INT LZRead(INT, LPSTR, INT); +LONG LZSeek(INT, LONG, INT); + +version (Unicode) { + alias GetExpandedNameW GetExpandedName; + alias LZOpenFileW LZOpenFile; +} else { + alias GetExpandedNameA GetExpandedName; + alias LZOpenFileA LZOpenFile; +} diff --git a/src/core/sys/windows/mapi.d b/src/core/sys/windows/mapi.d index 1d02295d5d..081044be5e 100644 --- a/src/core/sys/windows/mapi.d +++ b/src/core/sys/windows/mapi.d @@ -1,167 +1,167 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_mapi.d) - */ -module core.sys.windows.mapi; - -private import core.sys.windows.windef; - -// FIXME: check types and grouping of constants - -enum { - SUCCESS_SUCCESS, - MAPI_USER_ABORT, - MAPI_E_USER_ABORT = MAPI_USER_ABORT, - MAPI_E_FAILURE, - MAPI_E_LOGIN_FAILURE, - MAPI_E_LOGON_FAILURE = MAPI_E_LOGIN_FAILURE, - MAPI_E_DISK_FULL = 4, - MAPI_E_INSUFFICIENT_MEMORY, - MAPI_E_ACCESS_DENIED, - MAPI_E_BLK_TOO_SMALL = MAPI_E_ACCESS_DENIED, // = 6 - MAPI_E_TOO_MANY_SESSIONS = 8, - MAPI_E_TOO_MANY_FILES, - MAPI_E_TOO_MANY_RECIPIENTS, - MAPI_E_ATTACHMENT_NOT_FOUND, - MAPI_E_ATTACHMENT_OPEN_FAILURE, - MAPI_E_ATTACHMENT_WRITE_FAILURE, - MAPI_E_UNKNOWN_RECIPIENT, - MAPI_E_BAD_RECIPTYPE, - MAPI_E_NO_MESSAGES, - MAPI_E_INVALID_MESSAGE, - MAPI_E_TEXT_TOO_LARGE, - MAPI_E_INVALID_SESSION, - MAPI_E_TYPE_NOT_SUPPORTED, - MAPI_E_AMBIGUOUS_RECIPIENT, - MAPI_E_AMBIGUOUS_RECIP = MAPI_E_AMBIGUOUS_RECIPIENT, - MAPI_E_MESSAGE_IN_USE, - MAPI_E_NETWORK_FAILURE, - MAPI_E_INVALID_EDITFIELDS, - MAPI_E_INVALID_RECIPS, - MAPI_E_NOT_SUPPORTED // = 26 -} - -enum { - MAPI_ORIG, - MAPI_TO, - MAPI_CC, - MAPI_BCC -} - -const MAPI_LOGON_UI = 0x0001; -const MAPI_NEW_SESSION = 0x0002; -const MAPI_FORCE_DOWNLOAD = 0x1000; -const MAPI_LOGOFF_SHARED = 0x0001; -const MAPI_LOGOFF_UI = 0x0002; -const MAPI_DIALOG = 0x0008; -const MAPI_UNREAD_ONLY = 0x0020; -const MAPI_LONG_MSGID = 0x4000; -const MAPI_GUARANTEE_FIFO = 0x0100; -const MAPI_ENVELOPE_ONLY = 0x0040; -const MAPI_PEEK = 0x0080; -const MAPI_BODY_AS_FILE = 0x0200; -const MAPI_SUPPRESS_ATTACH = 0x0800; -const MAPI_AB_NOMODIFY = 0x0400; -const MAPI_OLE = 0x0001; -const MAPI_OLE_STATIC = 0x0002; -const MAPI_UNREAD = 0x0001; -const MAPI_RECEIPT_REQUESTED = 0x0002; -const MAPI_SENT = 0x0004; - -alias uint FLAGS, LHANDLE; -alias uint* LPLHANDLE, LPULONG; - -struct MapiRecipDesc { - ULONG ulReserved; - ULONG ulRecipClass; - LPSTR lpszName; - LPSTR lpszAddress; - ULONG ulEIDSize; - LPVOID lpEntryID; -} -alias MapiRecipDesc* lpMapiRecipDesc; - -struct MapiFileDesc { - ULONG ulReserved; - ULONG flFlags; - ULONG nPosition; - LPSTR lpszPathName; - LPSTR lpszFileName; - LPVOID lpFileType; -} -alias MapiFileDesc* lpMapiFileDesc; - -struct MapiFileTagExt { - ULONG ulReserved; - ULONG cbTag; - LPBYTE lpTag; - ULONG cbEncoding; - LPBYTE lpEncoding; -} -alias MapiFileTagExt* lpMapiFileTagExt; - -struct MapiMessage { - ULONG ulReserved; - LPSTR lpszSubject; - LPSTR lpszNoteText; - LPSTR lpszMessageType; - LPSTR lpszDateReceived; - LPSTR lpszConversationID; - FLAGS flFlags; - lpMapiRecipDesc lpOriginator; - ULONG nRecipCount; - lpMapiRecipDesc lpRecips; - ULONG nFileCount; - lpMapiFileDesc lpFiles; -} -alias MapiMessage* lpMapiMessage; - -extern (Pascal) { - ULONG MAPILogon(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE); - ULONG MAPISendMail(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG); - ULONG MAPISendDocuments(ULONG, LPSTR, LPSTR, LPSTR, ULONG); - ULONG MAPIReadMail(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*); - ULONG MAPIFindNext(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR); - ULONG MAPIResolveName(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, - lpMapiRecipDesc*); - ULONG MAPIAddress(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, - lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*); - ULONG MAPIFreeBuffer(LPVOID); - ULONG MAPIDetails(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG); - ULONG MAPISaveMail(LHANDLE, ULONG, lpMapiMessage lpszMessage, FLAGS, - ULONG, LPSTR); - ULONG MAPIDeleteMail(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG); - ULONG MAPILogoff(LHANDLE, ULONG, FLAGS, ULONG); - // Netscape extensions - ULONG MAPIGetNetscapeVersion(); - ULONG MAPI_NSCP_SynchronizeClient(LHANDLE, ULONG); - - // Handles for use with GetProcAddress - alias ULONG function(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE) - LPMAPILOGON; - alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG) - LPMAPISENDMAIL; - alias ULONG function(ULONG, LPSTR, LPSTR, LPSTR, ULONG) - LPMAPISENDDOCUMENTS; - alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*) - LPMAPIREADMAIL; - alias ULONG function(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR) - LPMAPIFINDNEXT; - alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, - lpMapiRecipDesc*) LPMAPIRESOLVENAME; - alias ULONG function(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, - lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*) LPMAPIADDRESS; - alias ULONG function(LPVOID lpv) LPMAPIFREEBUFFER; - alias ULONG function(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG) - LPMAPIDETAILS; - alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG, LPSTR) - LPMAPISAVEMAIL; - alias ULONG function(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG) - LPMAPIDELETEMAIL; - alias ULONG function(LHANDLE, ULONG, FLAGS, ULONG) LPMAPILOGOFF; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mapi.d) + */ +module core.sys.windows.mapi; + +private import core.sys.windows.windef; + +// FIXME: check types and grouping of constants + +enum { + SUCCESS_SUCCESS, + MAPI_USER_ABORT, + MAPI_E_USER_ABORT = MAPI_USER_ABORT, + MAPI_E_FAILURE, + MAPI_E_LOGIN_FAILURE, + MAPI_E_LOGON_FAILURE = MAPI_E_LOGIN_FAILURE, + MAPI_E_DISK_FULL = 4, + MAPI_E_INSUFFICIENT_MEMORY, + MAPI_E_ACCESS_DENIED, + MAPI_E_BLK_TOO_SMALL = MAPI_E_ACCESS_DENIED, // = 6 + MAPI_E_TOO_MANY_SESSIONS = 8, + MAPI_E_TOO_MANY_FILES, + MAPI_E_TOO_MANY_RECIPIENTS, + MAPI_E_ATTACHMENT_NOT_FOUND, + MAPI_E_ATTACHMENT_OPEN_FAILURE, + MAPI_E_ATTACHMENT_WRITE_FAILURE, + MAPI_E_UNKNOWN_RECIPIENT, + MAPI_E_BAD_RECIPTYPE, + MAPI_E_NO_MESSAGES, + MAPI_E_INVALID_MESSAGE, + MAPI_E_TEXT_TOO_LARGE, + MAPI_E_INVALID_SESSION, + MAPI_E_TYPE_NOT_SUPPORTED, + MAPI_E_AMBIGUOUS_RECIPIENT, + MAPI_E_AMBIGUOUS_RECIP = MAPI_E_AMBIGUOUS_RECIPIENT, + MAPI_E_MESSAGE_IN_USE, + MAPI_E_NETWORK_FAILURE, + MAPI_E_INVALID_EDITFIELDS, + MAPI_E_INVALID_RECIPS, + MAPI_E_NOT_SUPPORTED // = 26 +} + +enum { + MAPI_ORIG, + MAPI_TO, + MAPI_CC, + MAPI_BCC +} + +const MAPI_LOGON_UI = 0x0001; +const MAPI_NEW_SESSION = 0x0002; +const MAPI_FORCE_DOWNLOAD = 0x1000; +const MAPI_LOGOFF_SHARED = 0x0001; +const MAPI_LOGOFF_UI = 0x0002; +const MAPI_DIALOG = 0x0008; +const MAPI_UNREAD_ONLY = 0x0020; +const MAPI_LONG_MSGID = 0x4000; +const MAPI_GUARANTEE_FIFO = 0x0100; +const MAPI_ENVELOPE_ONLY = 0x0040; +const MAPI_PEEK = 0x0080; +const MAPI_BODY_AS_FILE = 0x0200; +const MAPI_SUPPRESS_ATTACH = 0x0800; +const MAPI_AB_NOMODIFY = 0x0400; +const MAPI_OLE = 0x0001; +const MAPI_OLE_STATIC = 0x0002; +const MAPI_UNREAD = 0x0001; +const MAPI_RECEIPT_REQUESTED = 0x0002; +const MAPI_SENT = 0x0004; + +alias uint FLAGS, LHANDLE; +alias uint* LPLHANDLE, LPULONG; + +struct MapiRecipDesc { + ULONG ulReserved; + ULONG ulRecipClass; + LPSTR lpszName; + LPSTR lpszAddress; + ULONG ulEIDSize; + LPVOID lpEntryID; +} +alias MapiRecipDesc* lpMapiRecipDesc; + +struct MapiFileDesc { + ULONG ulReserved; + ULONG flFlags; + ULONG nPosition; + LPSTR lpszPathName; + LPSTR lpszFileName; + LPVOID lpFileType; +} +alias MapiFileDesc* lpMapiFileDesc; + +struct MapiFileTagExt { + ULONG ulReserved; + ULONG cbTag; + LPBYTE lpTag; + ULONG cbEncoding; + LPBYTE lpEncoding; +} +alias MapiFileTagExt* lpMapiFileTagExt; + +struct MapiMessage { + ULONG ulReserved; + LPSTR lpszSubject; + LPSTR lpszNoteText; + LPSTR lpszMessageType; + LPSTR lpszDateReceived; + LPSTR lpszConversationID; + FLAGS flFlags; + lpMapiRecipDesc lpOriginator; + ULONG nRecipCount; + lpMapiRecipDesc lpRecips; + ULONG nFileCount; + lpMapiFileDesc lpFiles; +} +alias MapiMessage* lpMapiMessage; + +extern (Pascal) { + ULONG MAPILogon(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE); + ULONG MAPISendMail(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG); + ULONG MAPISendDocuments(ULONG, LPSTR, LPSTR, LPSTR, ULONG); + ULONG MAPIReadMail(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*); + ULONG MAPIFindNext(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR); + ULONG MAPIResolveName(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, + lpMapiRecipDesc*); + ULONG MAPIAddress(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, + lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*); + ULONG MAPIFreeBuffer(LPVOID); + ULONG MAPIDetails(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG); + ULONG MAPISaveMail(LHANDLE, ULONG, lpMapiMessage lpszMessage, FLAGS, + ULONG, LPSTR); + ULONG MAPIDeleteMail(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG); + ULONG MAPILogoff(LHANDLE, ULONG, FLAGS, ULONG); + // Netscape extensions + ULONG MAPIGetNetscapeVersion(); + ULONG MAPI_NSCP_SynchronizeClient(LHANDLE, ULONG); + + // Handles for use with GetProcAddress + alias ULONG function(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE) + LPMAPILOGON; + alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG) + LPMAPISENDMAIL; + alias ULONG function(ULONG, LPSTR, LPSTR, LPSTR, ULONG) + LPMAPISENDDOCUMENTS; + alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*) + LPMAPIREADMAIL; + alias ULONG function(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR) + LPMAPIFINDNEXT; + alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, + lpMapiRecipDesc*) LPMAPIRESOLVENAME; + alias ULONG function(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, + lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*) LPMAPIADDRESS; + alias ULONG function(LPVOID lpv) LPMAPIFREEBUFFER; + alias ULONG function(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG) + LPMAPIDETAILS; + alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG, LPSTR) + LPMAPISAVEMAIL; + alias ULONG function(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG) + LPMAPIDELETEMAIL; + alias ULONG function(LHANDLE, ULONG, FLAGS, ULONG) LPMAPILOGOFF; +} diff --git a/src/core/sys/windows/mciavi.d b/src/core/sys/windows/mciavi.d index f3521fd3c2..aa351d70e2 100644 --- a/src/core/sys/windows/mciavi.d +++ b/src/core/sys/windows/mciavi.d @@ -1,39 +1,39 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_mciavi.d) - */ -module core.sys.windows.mciavi; - -private import core.sys.windows.mmsystem; - -// FIXME: check types and grouping of constants - -const MCI_MCIAVI_PLAY_WINDOW = 0x01000000; -const MCI_MCIAVI_PLAY_FULLSCREEN = 0x02000000; -const MCI_MCIAVI_PLAY_FULLBY2 = 0x04000000; - -enum { - MCI_AVI_STATUS_FRAMES_SKIPPED = 0x00008001, - MCI_AVI_STATUS_LAST_PLAY_SPEED = 0x00008002, - MCI_AVI_STATUS_AUDIO_BREAKS = 0x00008003, - MCI_AVI_SETVIDEO_DRAW_PROCEDURE = 0x00008000, - MCI_AVI_SETVIDEO_PALETTE_COLOR = 0x00008100, - MCI_AVI_SETVIDEO_PALETTE_HALFTONE = 0x0000FFFF -} - -enum { - MCIERR_AVI_OLDAVIFORMAT = MCIERR_CUSTOM_DRIVER_BASE + 100, - MCIERR_AVI_NOTINTERLEAVED, - MCIERR_AVI_NODISPDIB, - MCIERR_AVI_CANTPLAYFULLSCREEN, - MCIERR_AVI_TOOBIGFORVGA, - MCIERR_AVI_NOCOMPRESSOR, - MCIERR_AVI_DISPLAYERROR, - MCIERR_AVI_AUDIOERROR, - MCIERR_AVI_BADPALETTE // = MCIERR_CUSTOM_DRIVER_BASE + 108 -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mciavi.d) + */ +module core.sys.windows.mciavi; + +private import core.sys.windows.mmsystem; + +// FIXME: check types and grouping of constants + +const MCI_MCIAVI_PLAY_WINDOW = 0x01000000; +const MCI_MCIAVI_PLAY_FULLSCREEN = 0x02000000; +const MCI_MCIAVI_PLAY_FULLBY2 = 0x04000000; + +enum { + MCI_AVI_STATUS_FRAMES_SKIPPED = 0x00008001, + MCI_AVI_STATUS_LAST_PLAY_SPEED = 0x00008002, + MCI_AVI_STATUS_AUDIO_BREAKS = 0x00008003, + MCI_AVI_SETVIDEO_DRAW_PROCEDURE = 0x00008000, + MCI_AVI_SETVIDEO_PALETTE_COLOR = 0x00008100, + MCI_AVI_SETVIDEO_PALETTE_HALFTONE = 0x0000FFFF +} + +enum { + MCIERR_AVI_OLDAVIFORMAT = MCIERR_CUSTOM_DRIVER_BASE + 100, + MCIERR_AVI_NOTINTERLEAVED, + MCIERR_AVI_NODISPDIB, + MCIERR_AVI_CANTPLAYFULLSCREEN, + MCIERR_AVI_TOOBIGFORVGA, + MCIERR_AVI_NOCOMPRESSOR, + MCIERR_AVI_DISPLAYERROR, + MCIERR_AVI_AUDIOERROR, + MCIERR_AVI_BADPALETTE // = MCIERR_CUSTOM_DRIVER_BASE + 108 +} diff --git a/src/core/sys/windows/mcx.d b/src/core/sys/windows/mcx.d index c3ce1f5951..633a8977b7 100644 --- a/src/core/sys/windows/mcx.d +++ b/src/core/sys/windows/mcx.d @@ -1,98 +1,98 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_mcx.d) - */ -module core.sys.windows.mcx; - -private import core.sys.windows.windef; - -const DWORD - DIALOPTION_BILLING = 64, - DIALOPTION_QUIET = 128, - DIALOPTION_DIALTONE = 256; - -const DWORD - MDMVOLFLAG_LOW = 1, - MDMVOLFLAG_MEDIUM = 2, - MDMVOLFLAG_HIGH = 4; - -enum : DWORD { - MDMVOL_LOW = 0, - MDMVOL_MEDIUM = 1, - MDMVOL_HIGH = 2 -} - -const DWORD - MDMSPKRFLAG_OFF = 1, - MDMSPKRFLAG_DIAL = 2, - MDMSPKRFLAG_ON = 4, - MDMSPKRFLAG_CALLSETUP = 8; - -enum : DWORD { - MDMSPKR_OFF, - MDMSPKR_DIAL, - MDMSPKR_ON, - MDMSPKR_CALLSETUP -} - -const DWORD - MDM_COMPRESSION = 0x0001, - MDM_ERROR_CONTROL = 0x0002, - MDM_FORCED_EC = 0x0004, - MDM_CELLULAR = 0x0008, - MDM_FLOWCONTROL_HARD = 0x0010, - MDM_FLOWCONTROL_SOFT = 0x0020, - MDM_CCITT_OVERRIDE = 0x0040, - MDM_SPEED_ADJUST = 0x0080, - MDM_TONE_DIAL = 0x0100, - MDM_BLIND_DIAL = 0x0200, - MDM_V23_OVERRIDE = 0x0400; - -struct MODEMDEVCAPS { - DWORD dwActualSize; - DWORD dwRequiredSize; - DWORD dwDevSpecificOffset; - DWORD dwDevSpecificSize; - DWORD dwModemProviderVersion; - DWORD dwModemManufacturerOffset; - DWORD dwModemManufacturerSize; - DWORD dwModemModelOffset; - DWORD dwModemModelSize; - DWORD dwModemVersionOffset; - DWORD dwModemVersionSize; - DWORD dwDialOptions; - DWORD dwCallSetupFailTimer; - DWORD dwInactivityTimeout; - DWORD dwSpeakerVolume; - DWORD dwSpeakerMode; - DWORD dwModemOptions; - DWORD dwMaxDTERate; - DWORD dwMaxDCERate; - BYTE _abVariablePortion; - - BYTE* abVariablePortion() { return &_abVariablePortion; } -} -alias MODEMDEVCAPS* PMODEMDEVCAPS, LPMODEMDEVCAPS; - -struct MODEMSETTINGS { - DWORD dwActualSize; - DWORD dwRequiredSize; - DWORD dwDevSpecificOffset; - DWORD dwDevSpecificSize; - DWORD dwCallSetupFailTimer; - DWORD dwInactivityTimeout; - DWORD dwSpeakerVolume; - DWORD dwSpeakerMode; - DWORD dwPreferredModemOptions; - DWORD dwNegotiatedModemOptions; - DWORD dwNegotiatedDCERate; - BYTE _abVariablePortion; - - BYTE* abVariablePortion() { return &_abVariablePortion; } -} -alias MODEMSETTINGS* PMODEMSETTINGS, LPMODEMSETTINGS; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mcx.d) + */ +module core.sys.windows.mcx; + +private import core.sys.windows.windef; + +const DWORD + DIALOPTION_BILLING = 64, + DIALOPTION_QUIET = 128, + DIALOPTION_DIALTONE = 256; + +const DWORD + MDMVOLFLAG_LOW = 1, + MDMVOLFLAG_MEDIUM = 2, + MDMVOLFLAG_HIGH = 4; + +enum : DWORD { + MDMVOL_LOW = 0, + MDMVOL_MEDIUM = 1, + MDMVOL_HIGH = 2 +} + +const DWORD + MDMSPKRFLAG_OFF = 1, + MDMSPKRFLAG_DIAL = 2, + MDMSPKRFLAG_ON = 4, + MDMSPKRFLAG_CALLSETUP = 8; + +enum : DWORD { + MDMSPKR_OFF, + MDMSPKR_DIAL, + MDMSPKR_ON, + MDMSPKR_CALLSETUP +} + +const DWORD + MDM_COMPRESSION = 0x0001, + MDM_ERROR_CONTROL = 0x0002, + MDM_FORCED_EC = 0x0004, + MDM_CELLULAR = 0x0008, + MDM_FLOWCONTROL_HARD = 0x0010, + MDM_FLOWCONTROL_SOFT = 0x0020, + MDM_CCITT_OVERRIDE = 0x0040, + MDM_SPEED_ADJUST = 0x0080, + MDM_TONE_DIAL = 0x0100, + MDM_BLIND_DIAL = 0x0200, + MDM_V23_OVERRIDE = 0x0400; + +struct MODEMDEVCAPS { + DWORD dwActualSize; + DWORD dwRequiredSize; + DWORD dwDevSpecificOffset; + DWORD dwDevSpecificSize; + DWORD dwModemProviderVersion; + DWORD dwModemManufacturerOffset; + DWORD dwModemManufacturerSize; + DWORD dwModemModelOffset; + DWORD dwModemModelSize; + DWORD dwModemVersionOffset; + DWORD dwModemVersionSize; + DWORD dwDialOptions; + DWORD dwCallSetupFailTimer; + DWORD dwInactivityTimeout; + DWORD dwSpeakerVolume; + DWORD dwSpeakerMode; + DWORD dwModemOptions; + DWORD dwMaxDTERate; + DWORD dwMaxDCERate; + BYTE _abVariablePortion; + + BYTE* abVariablePortion() { return &_abVariablePortion; } +} +alias MODEMDEVCAPS* PMODEMDEVCAPS, LPMODEMDEVCAPS; + +struct MODEMSETTINGS { + DWORD dwActualSize; + DWORD dwRequiredSize; + DWORD dwDevSpecificOffset; + DWORD dwDevSpecificSize; + DWORD dwCallSetupFailTimer; + DWORD dwInactivityTimeout; + DWORD dwSpeakerVolume; + DWORD dwSpeakerMode; + DWORD dwPreferredModemOptions; + DWORD dwNegotiatedModemOptions; + DWORD dwNegotiatedDCERate; + BYTE _abVariablePortion; + + BYTE* abVariablePortion() { return &_abVariablePortion; } +} +alias MODEMSETTINGS* PMODEMSETTINGS, LPMODEMSETTINGS; diff --git a/src/core/sys/windows/mgmtapi.d b/src/core/sys/windows/mgmtapi.d index 129d643d49..bd26c297e9 100644 --- a/src/core/sys/windows/mgmtapi.d +++ b/src/core/sys/windows/mgmtapi.d @@ -1,46 +1,46 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_mgmtapi.d) - */ -module core.sys.windows.mgmtapi; - -import core.sys.windows.snmp; -private import core.sys.windows.windef; - -enum { - SNMP_MGMTAPI_TIMEOUT = 40, - SNMP_MGMTAPI_SELECT_FDERRORS, - SNMP_MGMTAPI_TRAP_ERRORS, - SNMP_MGMTAPI_TRAP_DUPINIT, - SNMP_MGMTAPI_NOTRAPS, - SNMP_MGMTAPI_AGAIN, - SNMP_MGMTAPI_INVALID_CTL, - SNMP_MGMTAPI_INVALID_SESSION, - SNMP_MGMTAPI_INVALID_BUFFER // = 48 -} - -const MGMCTL_SETAGENTPORT = 1; - -alias PVOID LPSNMP_MGR_SESSION; - -extern (Windows) { - BOOL SnmpMgrClose(LPSNMP_MGR_SESSION); - BOOL SnmpMgrCtl(LPSNMP_MGR_SESSION, DWORD, LPVOID, DWORD, LPVOID, DWORD, - LPDWORD); - BOOL SnmpMgrGetTrap(AsnObjectIdentifier*, AsnNetworkAddress*, - AsnInteger*, AsnInteger*, AsnTimeticks*, SnmpVarBindList*); - BOOL SnmpMgrGetTrapEx(AsnObjectIdentifier*, AsnNetworkAddress*, - AsnNetworkAddress*, AsnInteger*, AsnInteger*, AsnOctetString*, - AsnTimeticks*, SnmpVarBindList*); - BOOL SnmpMgrOidToStr(AsnObjectIdentifier*, LPSTR*); - LPSNMP_MGR_SESSION SnmpMgrOpen(LPSTR, LPSTR, INT, INT); - INT SnmpMgrRequest(LPSNMP_MGR_SESSION, BYTE, SnmpVarBindList*, - AsnInteger*, AsnInteger*); - BOOL SnmpMgrStrToOid(LPSTR, AsnObjectIdentifier*); - BOOL SnmpMgrTrapListen(HANDLE*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mgmtapi.d) + */ +module core.sys.windows.mgmtapi; + +import core.sys.windows.snmp; +private import core.sys.windows.windef; + +enum { + SNMP_MGMTAPI_TIMEOUT = 40, + SNMP_MGMTAPI_SELECT_FDERRORS, + SNMP_MGMTAPI_TRAP_ERRORS, + SNMP_MGMTAPI_TRAP_DUPINIT, + SNMP_MGMTAPI_NOTRAPS, + SNMP_MGMTAPI_AGAIN, + SNMP_MGMTAPI_INVALID_CTL, + SNMP_MGMTAPI_INVALID_SESSION, + SNMP_MGMTAPI_INVALID_BUFFER // = 48 +} + +const MGMCTL_SETAGENTPORT = 1; + +alias PVOID LPSNMP_MGR_SESSION; + +extern (Windows) { + BOOL SnmpMgrClose(LPSNMP_MGR_SESSION); + BOOL SnmpMgrCtl(LPSNMP_MGR_SESSION, DWORD, LPVOID, DWORD, LPVOID, DWORD, + LPDWORD); + BOOL SnmpMgrGetTrap(AsnObjectIdentifier*, AsnNetworkAddress*, + AsnInteger*, AsnInteger*, AsnTimeticks*, SnmpVarBindList*); + BOOL SnmpMgrGetTrapEx(AsnObjectIdentifier*, AsnNetworkAddress*, + AsnNetworkAddress*, AsnInteger*, AsnInteger*, AsnOctetString*, + AsnTimeticks*, SnmpVarBindList*); + BOOL SnmpMgrOidToStr(AsnObjectIdentifier*, LPSTR*); + LPSNMP_MGR_SESSION SnmpMgrOpen(LPSTR, LPSTR, INT, INT); + INT SnmpMgrRequest(LPSNMP_MGR_SESSION, BYTE, SnmpVarBindList*, + AsnInteger*, AsnInteger*); + BOOL SnmpMgrStrToOid(LPSTR, AsnObjectIdentifier*); + BOOL SnmpMgrTrapListen(HANDLE*); +} diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index cea85d73e9..c29a577561 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -1,2268 +1,2268 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_mmsystem.d) - */ -module core.sys.windows.mmsystem; -pragma(lib, "winmm"); - -/* The #defines MAKEFOURCC, mmioFOURCC, sndAlias are used to define - * compile-time constants, so they are implemented as templates. - */ - -private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winver; - -align(1): - -const MAXPNAMELEN = 32; -const MAXERRORLENGTH = 256; -const MAX_JOYSTICKOEMVXDNAME = 260; - -const TIME_MS = 1; -const TIME_SAMPLES = 2; -const TIME_BYTES = 4; -const TIME_SMPTE = 8; -const TIME_MIDI = 16; -const TIME_TICKS = 32; - -template MAKEFOURCC(char c0, char c1, char c2, char c3) -{ - const DWORD MAKEFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); -} - -template mmioFOURCC(char c0, char c1, char c2, char c3) -{ - const DWORD mmioFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); -} - -enum { - MM_JOY1MOVE = 0x3A0, - MM_JOY2MOVE, - MM_JOY1ZMOVE, - MM_JOY2ZMOVE, // = 0x3A3 - MM_JOY1BUTTONDOWN = 0x3B5, - MM_JOY2BUTTONDOWN, - MM_JOY1BUTTONUP, - MM_JOY2BUTTONUP, - MM_MCINOTIFY, // = 0x3B9 - MM_WOM_OPEN = 0x3BB, - MM_WOM_CLOSE, - MM_WOM_DONE, - MM_WIM_OPEN, - MM_WIM_CLOSE, - MM_WIM_DATA, - MM_MIM_OPEN, - MM_MIM_CLOSE, - MM_MIM_DATA, - MM_MIM_LONGDATA, - MM_MIM_ERROR, - MM_MIM_LONGERROR, - MM_MOM_OPEN, - MM_MOM_CLOSE, - MM_MOM_DONE, // = 0x3C9 - MM_DRVM_OPEN = 0x3D0, - MM_DRVM_CLOSE, - MM_DRVM_DATA, - MM_DRVM_ERROR, - MM_STREAM_OPEN, - MM_STREAM_CLOSE, - MM_STREAM_DONE, - MM_STREAM_ERROR, // = 0x3D7 - MM_MOM_POSITIONCB = 0x3CA, - MM_MCISIGNAL, - MM_MIM_MOREDATA, // = 0x3CC - MM_MIXM_LINE_CHANGE = 0x3D0, - MM_MIXM_CONTROL_CHANGE = 0x3D1 -} - -const MMSYSERR_BASE = 0; -const WAVERR_BASE = 32; -const MIDIERR_BASE = 64; -const TIMERR_BASE = 96; -const JOYERR_BASE = 160; -const MCIERR_BASE = 256; -const MIXERR_BASE = 1024; -const MCI_STRING_OFFSET = 512; -const MCI_VD_OFFSET = 1024; -const MCI_CD_OFFSET = 1088; -const MCI_WAVE_OFFSET = 1152; -const MCI_SEQ_OFFSET = 1216; - -enum { - MMSYSERR_NOERROR = 0, - MMSYSERR_ERROR = MMSYSERR_BASE+1, - MMSYSERR_BADDEVICEID, - MMSYSERR_NOTENABLED, - MMSYSERR_ALLOCATED, - MMSYSERR_INVALHANDLE, - MMSYSERR_NODRIVER, - MMSYSERR_NOMEM, - MMSYSERR_NOTSUPPORTED, - MMSYSERR_BADERRNUM, - MMSYSERR_INVALFLAG, - MMSYSERR_INVALPARAM, - MMSYSERR_HANDLEBUSY, - MMSYSERR_INVALIDALIAS, - MMSYSERR_BADDB, - MMSYSERR_KEYNOTFOUND, - MMSYSERR_READERROR, - MMSYSERR_WRITEERROR, - MMSYSERR_DELETEERROR, - MMSYSERR_VALNOTFOUND, - MMSYSERR_NODRIVERCB, // = MMSYSERR_BASE+20 - MMSYSERR_LASTERROR = MMSYSERR_NODRIVERCB -} - -enum { - DRV_LOAD = 1, - DRV_ENABLE, - DRV_OPEN, - DRV_CLOSE, - DRV_DISABLE, - DRV_FREE, - DRV_CONFIGURE, - DRV_QUERYCONFIGURE, - DRV_INSTALL, - DRV_REMOVE, - DRV_EXITSESSION, - DRV_POWER -} - -const DRV_RESERVED = 0x800; -const DRV_USER = 0x4000; - -const DRVCNF_CANCEL = 0; -const DRVCNF_OK = 1; -const DRVCNF_RESTART = 2; -const DRV_CANCEL = DRVCNF_CANCEL; -const DRV_OK = DRVCNF_OK; -const DRV_RESTART = DRVCNF_RESTART; -const DRV_MCI_FIRST = DRV_RESERVED; -const DRV_MCI_LAST = DRV_RESERVED + 0xFFF; - -const CALLBACK_TYPEMASK = 0x70000; -const CALLBACK_NULL = 0; -const CALLBACK_WINDOW = 0x10000; -const CALLBACK_TASK = 0x20000; -const CALLBACK_FUNCTION = 0x30000; -const CALLBACK_THREAD = CALLBACK_TASK; -const CALLBACK_EVENT = 0x50000; - -const SND_SYNC=0; -const SND_ASYNC=1; -const SND_NODEFAULT=2; -const SND_MEMORY=4; -const SND_LOOP=8; -const SND_NOSTOP=16; -const SND_NOWAIT=0x2000; -const SND_ALIAS=0x10000; -const SND_ALIAS_ID=0x110000; -const SND_FILENAME=0x20000; -const SND_RESOURCE=0x40004; -const SND_PURGE=0x40; -const SND_APPLICATION=0x80; -const SND_ALIAS_START=0; - -template sndAlias(char c0, char c1) -{ - const DWORD sndAlias = SND_ALIAS_START + c0 | (c1<<8); -} - -const SND_ALIAS_SYSTEMASTERISK = sndAlias!('S', '*'); -const SND_ALIAS_SYSTEMQUESTION = sndAlias!('S', '?'); -const SND_ALIAS_SYSTEMHAND = sndAlias!('S', 'H'); -const SND_ALIAS_SYSTEMEXIT = sndAlias!('S', 'E'); -const SND_ALIAS_SYSTEMSTART = sndAlias!('S', 'S'); -const SND_ALIAS_SYSTEMWELCOME = sndAlias!('S', 'W'); -const SND_ALIAS_SYSTEMEXCLAMATION = sndAlias!('S', '!'); -const SND_ALIAS_SYSTEMDEFAULT = sndAlias!('S', 'D'); - -enum { - WAVERR_BADFORMAT = (WAVERR_BASE + 0), - WAVERR_STILLPLAYING, - WAVERR_UNPREPARED, - WAVERR_SYNC, // = WAVERR_BASE + 3; - WAVERR_LASTERROR = WAVERR_SYNC -} - -const WOM_OPEN = MM_WOM_OPEN; -const WOM_CLOSE = MM_WOM_CLOSE; -const WOM_DONE = MM_WOM_DONE; -const WIM_OPEN = MM_WIM_OPEN; -const WIM_CLOSE = MM_WIM_CLOSE; -const WIM_DATA = MM_WIM_DATA; - -const UINT WAVE_MAPPER= -1; // FIXME: This doesn't make sense! -const WAVE_FORMAT_QUERY=1; -const WAVE_ALLOWSYNC=2; -const WAVE_MAPPED=4; -const WAVE_FORMAT_DIRECT=8; -const WAVE_FORMAT_DIRECT_QUERY=(WAVE_FORMAT_QUERY|WAVE_FORMAT_DIRECT); -const WHDR_DONE=1; -const WHDR_PREPARED=2; -const WHDR_BEGINLOOP=4; -const WHDR_ENDLOOP=8; -const WHDR_INQUEUE=16; - -const WAVECAPS_PITCH=1; -const WAVECAPS_PLAYBACKRATE=2; -const WAVECAPS_VOLUME=4; -const WAVECAPS_LRVOLUME=8; -const WAVECAPS_SYNC=16; -const WAVECAPS_SAMPLEACCURATE=32; -const WAVECAPS_DIRECTSOUND=64; - -const WAVE_INVALIDFORMAT=0; -const WAVE_FORMAT_1M08=1; -const WAVE_FORMAT_1S08=2; -const WAVE_FORMAT_1M16=4; -const WAVE_FORMAT_1S16=8; -const WAVE_FORMAT_2M08=16; -const WAVE_FORMAT_2S08=32; -const WAVE_FORMAT_2M16=64; -const WAVE_FORMAT_2S16=128; -const WAVE_FORMAT_4M08=256; -const WAVE_FORMAT_4S08=512; -const WAVE_FORMAT_4M16=1024; -const WAVE_FORMAT_4S16=2048; -const WAVE_FORMAT_PCM=1; - -enum { - MIDIERR_UNPREPARED = MIDIERR_BASE, - MIDIERR_STILLPLAYING, - MIDIERR_NOMAP, - MIDIERR_NOTREADY, - MIDIERR_NODEVICE, - MIDIERR_INVALIDSETUP, - MIDIERR_BADOPENMODE, - MIDIERR_DONT_CONTINUE, // = MIDIERR_BASE+7 - MIDIERR_LASTERROR = MIDIERR_DONT_CONTINUE -} - -const MIDIPATCHSIZE=128; - -const MIM_OPEN=MM_MIM_OPEN; -const MIM_CLOSE=MM_MIM_CLOSE; -const MIM_DATA=MM_MIM_DATA; -const MIM_LONGDATA=MM_MIM_LONGDATA; -const MIM_ERROR=MM_MIM_ERROR; -const MIM_LONGERROR=MM_MIM_LONGERROR; -const MOM_OPEN=MM_MOM_OPEN; -const MOM_CLOSE=MM_MOM_CLOSE; -const MOM_DONE=MM_MOM_DONE; -const MIM_MOREDATA=MM_MIM_MOREDATA; -const MOM_POSITIONCB=MM_MOM_POSITIONCB; - -const UINT MIDIMAPPER= -1; // FIXME: uint is nonsense for this! -const UINT MIDI_MAPPER= -1; // FIXME: uint is nonsense for this! -const MIDI_IO_STATUS=32; -const MIDI_CACHE_ALL=1; -const MIDI_CACHE_BESTFIT=2; -const MIDI_CACHE_QUERY=3; -const MIDI_UNCACHE=4; -const MOD_MIDIPORT=1; -const MOD_SYNTH=2; -const MOD_SQSYNTH=3; -const MOD_FMSYNTH=4; -const MOD_MAPPER=5; -const MIDICAPS_VOLUME=1; -const MIDICAPS_LRVOLUME=2; -const MIDICAPS_CACHE=4; -const MIDICAPS_STREAM=8; -const MHDR_DONE=1; -const MHDR_PREPARED=2; -const MHDR_INQUEUE=4; -const MHDR_ISSTRM=8; -const MEVT_F_SHORT=0; -const MEVT_F_LONG=0x80000000; -const MEVT_F_CALLBACK=0x40000000; - -BYTE MEVT_EVENTTYPE(DWORD x) { return cast(BYTE)((x>>24) &0xFF); } -DWORD MEVT_EVENTPARM(DWORD x) { return x & 0xFFFFFF; } - -const MEVT_SHORTMSG=0; -const MEVT_TEMPO=1; -const MEVT_NOP=2; - -const BYTE MEVT_LONGMSG = 0x80; -const BYTE MEVT_COMMENT = 0x82; -const BYTE MEVT_VERSION = 0x84; - -const MIDISTRM_ERROR = -2; - -const MIDIPROP_SET = 0x80000000; -const MIDIPROP_GET = 0x40000000; -const MIDIPROP_TIMEDIV = 1; -const MIDIPROP_TEMPO = 2; - -const UINT AUX_MAPPER = -1; - -const AUXCAPS_CDAUDIO=1; -const AUXCAPS_AUXIN=2; -const AUXCAPS_VOLUME=1; -const AUXCAPS_LRVOLUME=2; -const MIXER_SHORT_NAME_CHARS=16; -const MIXER_LONG_NAME_CHARS=64; -const MIXERR_INVALLINE=MIXERR_BASE; -const MIXERR_INVALCONTROL=(MIXERR_BASE+1); -const MIXERR_INVALVALUE=(MIXERR_BASE+2); -const MIXERR_LASTERROR=(MIXERR_BASE+2); - -const MIXER_OBJECTF_HANDLE=0x80000000; -const MIXER_OBJECTF_MIXER=0; -const MIXER_OBJECTF_HMIXER=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER); -const MIXER_OBJECTF_WAVEOUT=0x10000000; -const MIXER_OBJECTF_HWAVEOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT); -const MIXER_OBJECTF_WAVEIN=0x20000000; -const MIXER_OBJECTF_HWAVEIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN); -const MIXER_OBJECTF_MIDIOUT=0x30000000; -const MIXER_OBJECTF_HMIDIOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT); -const MIXER_OBJECTF_MIDIIN=0x40000000; -const MIXER_OBJECTF_HMIDIIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN); -const MIXER_OBJECTF_AUX=0x50000000; - -const MIXERLINE_LINEF_ACTIVE=1; -const MIXERLINE_LINEF_DISCONNECTED=0x8000; -const MIXERLINE_LINEF_SOURCE=0x80000000; - -const MIXERLINE_COMPONENTTYPE_DST_FIRST=0; -const MIXERLINE_COMPONENTTYPE_DST_UNDEFINED=MIXERLINE_COMPONENTTYPE_DST_FIRST; -const MIXERLINE_COMPONENTTYPE_DST_DIGITAL=(MIXERLINE_COMPONENTTYPE_DST_FIRST+1); -const MIXERLINE_COMPONENTTYPE_DST_LINE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+2); -const MIXERLINE_COMPONENTTYPE_DST_MONITOR=(MIXERLINE_COMPONENTTYPE_DST_FIRST+3); -const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS=(MIXERLINE_COMPONENTTYPE_DST_FIRST+4); -const MIXERLINE_COMPONENTTYPE_DST_HEADPHONES=(MIXERLINE_COMPONENTTYPE_DST_FIRST+5); -const MIXERLINE_COMPONENTTYPE_DST_TELEPHONE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+6); -const MIXERLINE_COMPONENTTYPE_DST_WAVEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+7); -const MIXERLINE_COMPONENTTYPE_DST_VOICEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); -const MIXERLINE_COMPONENTTYPE_DST_LAST=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); -const MIXERLINE_COMPONENTTYPE_SRC_FIRST=0x1000; -const MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED=MIXERLINE_COMPONENTTYPE_SRC_FIRST; -const MIXERLINE_COMPONENTTYPE_SRC_DIGITAL=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+1); -const MIXERLINE_COMPONENTTYPE_SRC_LINE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+2); -const MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+3); -const MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+4); -const MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+5); -const MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+6); -const MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+7); -const MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+8); -const MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+9); -const MIXERLINE_COMPONENTTYPE_SRC_ANALOG=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); -const MIXERLINE_COMPONENTTYPE_SRC_LAST=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); - -enum { - MIXERLINE_TARGETTYPE_UNDEFINED = 0, - MIXERLINE_TARGETTYPE_WAVEOUT, - MIXERLINE_TARGETTYPE_WAVEIN, - MIXERLINE_TARGETTYPE_MIDIOUT, - MIXERLINE_TARGETTYPE_MIDIIN, - MIXERLINE_TARGETTYPE_AUX // =5 -} - -const MIXER_GETLINEINFOF_DESTINATION=0; -const MIXER_GETLINEINFOF_SOURCE=1; -const MIXER_GETLINEINFOF_LINEID=2; -const MIXER_GETLINEINFOF_COMPONENTTYPE=3; -const MIXER_GETLINEINFOF_TARGETTYPE=4; -const MIXER_GETLINEINFOF_QUERYMASK=15; - -const MIXERCONTROL_CONTROLF_UNIFORM=1; -const MIXERCONTROL_CONTROLF_MULTIPLE=2; -const MIXERCONTROL_CONTROLF_DISABLED=0x80000000; -const MIXERCONTROL_CT_CLASS_MASK=0xF0000000; -const MIXERCONTROL_CT_CLASS_CUSTOM=0; -const MIXERCONTROL_CT_CLASS_METER=0x10000000; -const MIXERCONTROL_CT_CLASS_SWITCH=0x20000000; -const MIXERCONTROL_CT_CLASS_NUMBER=0x30000000; -const MIXERCONTROL_CT_CLASS_SLIDER=0x40000000; -const MIXERCONTROL_CT_CLASS_FADER=0x50000000; -const MIXERCONTROL_CT_CLASS_TIME=0x60000000; -const MIXERCONTROL_CT_CLASS_LIST=0x70000000; -const MIXERCONTROL_CT_SUBCLASS_MASK=0xF000000; -const MIXERCONTROL_CT_SC_SWITCH_BOOLEAN=0; -const MIXERCONTROL_CT_SC_SWITCH_BUTTON=0x1000000; -const MIXERCONTROL_CT_SC_METER_POLLED=0; -const MIXERCONTROL_CT_SC_TIME_MICROSECS=0; -const MIXERCONTROL_CT_SC_TIME_MILLISECS=0x1000000; -const MIXERCONTROL_CT_SC_LIST_SINGLE=0; -const MIXERCONTROL_CT_SC_LIST_MULTIPLE=0x1000000; -const MIXERCONTROL_CT_UNITS_MASK=0xFF0000; -const MIXERCONTROL_CT_UNITS_CUSTOM=0; -const MIXERCONTROL_CT_UNITS_BOOLEAN=0x10000; -const MIXERCONTROL_CT_UNITS_SIGNED=0x20000; -const MIXERCONTROL_CT_UNITS_UNSIGNED=0x30000; -const MIXERCONTROL_CT_UNITS_DECIBELS=0x40000; -const MIXERCONTROL_CT_UNITS_PERCENT=0x50000; - -const MIXERCONTROL_CONTROLTYPE_CUSTOM=(MIXERCONTROL_CT_CLASS_CUSTOM|MIXERCONTROL_CT_UNITS_CUSTOM); -const MIXERCONTROL_CONTROLTYPE_BOOLEANMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_SIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_SIGNED); -const MIXERCONTROL_CONTROLTYPE_PEAKMETER=(MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1); -const MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_BOOLEAN=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BOOLEAN|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_ONOFF=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+1); -const MIXERCONTROL_CONTROLTYPE_MUTE=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+2); -const MIXERCONTROL_CONTROLTYPE_MONO=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+3); -const MIXERCONTROL_CONTROLTYPE_LOUDNESS=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+4); -const MIXERCONTROL_CONTROLTYPE_STEREOENH=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+5); -const MIXERCONTROL_CONTROLTYPE_BUTTON=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BUTTON|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_DECIBELS=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_DECIBELS); -const MIXERCONTROL_CONTROLTYPE_SIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_SIGNED); -const MIXERCONTROL_CONTROLTYPE_UNSIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_PERCENT=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_PERCENT); -const MIXERCONTROL_CONTROLTYPE_SLIDER=(MIXERCONTROL_CT_CLASS_SLIDER|MIXERCONTROL_CT_UNITS_SIGNED); -const MIXERCONTROL_CONTROLTYPE_PAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+1); -const MIXERCONTROL_CONTROLTYPE_QSOUNDPAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+2); -const MIXERCONTROL_CONTROLTYPE_FADER=(MIXERCONTROL_CT_CLASS_FADER|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_VOLUME=(MIXERCONTROL_CONTROLTYPE_FADER+1); -const MIXERCONTROL_CONTROLTYPE_BASS=(MIXERCONTROL_CONTROLTYPE_FADER+2); -const MIXERCONTROL_CONTROLTYPE_TREBLE=(MIXERCONTROL_CONTROLTYPE_FADER+3); -const MIXERCONTROL_CONTROLTYPE_EQUALIZER=(MIXERCONTROL_CONTROLTYPE_FADER+4); -const MIXERCONTROL_CONTROLTYPE_SINGLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_SINGLE|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_MUX=(MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1); -const MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_MULTIPLE|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_MIXER=(MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1); -const MIXERCONTROL_CONTROLTYPE_MICROTIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MICROSECS|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_MILLITIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MILLISECS|MIXERCONTROL_CT_UNITS_UNSIGNED); - -const MIXER_GETLINECONTROLSF_ALL=0; -const MIXER_GETLINECONTROLSF_ONEBYID=1; -const MIXER_GETLINECONTROLSF_ONEBYTYPE=2; -const MIXER_GETLINECONTROLSF_QUERYMASK=15; -const MIXER_GETCONTROLDETAILSF_VALUE=0; -const MIXER_GETCONTROLDETAILSF_LISTTEXT=1; -const MIXER_GETCONTROLDETAILSF_QUERYMASK=15; -const MIXER_SETCONTROLDETAILSF_VALUE=0; -const MIXER_SETCONTROLDETAILSF_CUSTOM=1; -const MIXER_SETCONTROLDETAILSF_QUERYMASK=15; - -const TIMERR_NOERROR=0; -const TIMERR_NOCANDO=(TIMERR_BASE+1); -const TIMERR_STRUCT=(TIMERR_BASE+33); -const TIME_ONESHOT=0; -const TIME_PERIODIC=1; -const TIME_CALLBACK_FUNCTION=0; -const TIME_CALLBACK_EVENT_SET=16; -const TIME_CALLBACK_EVENT_PULSE=32; - -static if (_WIN32_WINNT >= 0x501) { - -const TIME_KILL_SYNCHRONOUS=0x0100; - -} - -const JOYERR_NOERROR = 0; -const JOYERR_PARMS=(JOYERR_BASE+5); -const JOYERR_NOCANDO=(JOYERR_BASE+6); -const JOYERR_UNPLUGGED=(JOYERR_BASE+7); - -const JOY_BUTTON1=1; -const JOY_BUTTON2=2; -const JOY_BUTTON3=4; -const JOY_BUTTON4=8; -const JOY_BUTTON1CHG=256; -const JOY_BUTTON2CHG=512; -const JOY_BUTTON3CHG=1024; -const JOY_BUTTON4CHG=2048; -const JOY_BUTTON5=257; -const JOY_BUTTON6=513; -const JOY_BUTTON7=1025; -const JOY_BUTTON8=2049; -const JOY_BUTTON9=256; -const JOY_BUTTON10=512; -const JOY_BUTTON11=1024; -const JOY_BUTTON12=2048; -const JOY_BUTTON13=4096; -const JOY_BUTTON14=8192; -const JOY_BUTTON15=16384; -const JOY_BUTTON16=32768; -const JOY_BUTTON17=65536; -const JOY_BUTTON18=0x20000; -const JOY_BUTTON19=0x40000; -const JOY_BUTTON20=0x80000; -const JOY_BUTTON21=0x100000; -const JOY_BUTTON22=0x200000; -const JOY_BUTTON23=0x400000; -const JOY_BUTTON24=0x800000; -const JOY_BUTTON25=0x1000000; -const JOY_BUTTON26=0x2000000; -const JOY_BUTTON27=0x4000000; -const JOY_BUTTON28=0x8000000; -const JOY_BUTTON29=0x10000000; -const JOY_BUTTON30=0x20000000; -const JOY_BUTTON31=0x40000000; -const JOY_BUTTON32=0x80000000; - -enum : DWORD { - JOY_POVCENTERED = -1, - JOY_POVFORWARD = 0, - JOY_POVBACKWARD = 18000, - JOY_POVLEFT = 27000, - JOY_POVRIGHT = 9000 -} - -const DWORD - JOY_RETURNX = 0x00000001, - JOY_RETURNY = 0x00000002, - JOY_RETURNZ = 0x00000004, - JOY_RETURNR = 0x00000008, - JOY_RETURNU = 0x00000010, - JOY_RETURNV = 0x00000020, - JOY_RETURNPOV = 0x00000040, - JOY_RETURNBUTTONS = 0x00000080, - JOY_RETURNRAWDATA = 0x00000100, - JOY_RETURNPOVCTS = 0x00000200, - JOY_RETURNCENTERED = 0x00000400, - JOY_USEDEADZONE = 0x00000800, - JOY_RETURNALL = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR - | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV - | JOY_RETURNBUTTONS, - JOY_CAL_READALWAYS = 0x00010000, - JOY_CAL_READXYONLY = 0x00020000, - JOY_CAL_READ3 = 0x00040000, - JOY_CAL_READ4 = 0x00080000, - JOY_CAL_READXONLY = 0x00100000, - JOY_CAL_READYONLY = 0x00200000, - JOY_CAL_READ5 = 0x00400000, - JOY_CAL_READ6 = 0x00800000, - JOY_CAL_READZONLY = 0x01000000, - JOY_CAL_READRONLY = 0x02000000, - JOY_CAL_READUONLY = 0x04000000, - JOY_CAL_READVONLY = 0x08000000; - -const JOYSTICKID1=0; -const JOYSTICKID2=1; - -const JOYCAPS_HASZ=1; -const JOYCAPS_HASR=2; -const JOYCAPS_HASU=4; -const JOYCAPS_HASV=8; -const JOYCAPS_HASPOV=16; -const JOYCAPS_POV4DIR=32; -const JOYCAPS_POVCTS=64; - -const MMIOERR_BASE=256; -const MMIOERR_FILENOTFOUND=(MMIOERR_BASE+1); -const MMIOERR_OUTOFMEMORY=(MMIOERR_BASE+2); -const MMIOERR_CANNOTOPEN=(MMIOERR_BASE+3); -const MMIOERR_CANNOTCLOSE=(MMIOERR_BASE+4); -const MMIOERR_CANNOTREAD=(MMIOERR_BASE+5); -const MMIOERR_CANNOTWRITE=(MMIOERR_BASE+6); -const MMIOERR_CANNOTSEEK=(MMIOERR_BASE+7); -const MMIOERR_CANNOTEXPAND=(MMIOERR_BASE+8); -const MMIOERR_CHUNKNOTFOUND=(MMIOERR_BASE+9); -const MMIOERR_UNBUFFERED=(MMIOERR_BASE+10); -const MMIOERR_PATHNOTFOUND=(MMIOERR_BASE+11); -const MMIOERR_ACCESSDENIED=(MMIOERR_BASE+12); -const MMIOERR_SHARINGVIOLATION=(MMIOERR_BASE+13); -const MMIOERR_NETWORKERROR=(MMIOERR_BASE+14); -const MMIOERR_TOOMANYOPENFILES=(MMIOERR_BASE+15); -const MMIOERR_INVALIDFILE=(MMIOERR_BASE+16); - -const CFSEPCHAR='+'; - -const MMIO_RWMODE=3; -const MMIO_SHAREMODE=0x70; -const MMIO_CREATE=0x1000; -const MMIO_PARSE=256; -const MMIO_DELETE=512; -const MMIO_EXIST=0x4000; -const MMIO_ALLOCBUF=0x10000; -const MMIO_GETTEMP=0x20000; -const MMIO_DIRTY=0x10000000; -const MMIO_READ=0; -const MMIO_WRITE=1; -const MMIO_READWRITE=2; -const MMIO_COMPAT=0; -const MMIO_EXCLUSIVE=16; -const MMIO_DENYWRITE=32; -const MMIO_DENYREAD=0x30; -const MMIO_DENYNONE=64; -const MMIO_FHOPEN=16; -const MMIO_EMPTYBUF=16; -const MMIO_TOUPPER=16; -const MMIO_INSTALLPROC=0x10000; -const MMIO_GLOBALPROC=0x10000000; -const MMIO_REMOVEPROC=0x20000; -const MMIO_UNICODEPROC=0x1000000; -const MMIO_FINDPROC=0x40000; -const MMIO_FINDCHUNK=16; -const MMIO_FINDRIFF=32; -const MMIO_FINDLIST=64; -const MMIO_CREATERIFF=32; -const MMIO_CREATELIST=64; -const MMIOM_READ=MMIO_READ; -const MMIOM_WRITE=MMIO_WRITE; -const MMIOM_SEEK=2; -const MMIOM_OPEN=3; -const MMIOM_CLOSE=4; -const MMIOM_WRITEFLUSH=5; -const MMIOM_RENAME=6; -const MMIOM_USER=0x8000; - -const FOURCC_RIFF = mmioFOURCC!('R', 'I', 'F', 'F'); -const FOURCC_LIST = mmioFOURCC!('L', 'I', 'S', 'T'); -const FOURCC_DOS = mmioFOURCC!('D', 'O', 'S', ' '); -const FOURCC_MEM = mmioFOURCC!('M', 'E', 'M', ' '); - -const MMIO_DEFAULTBUFFER=8192; - -enum { - MCIERR_INVALID_DEVICE_ID = MCIERR_BASE + 1, - MCIERR_UNRECOGNIZED_KEYWORD = MCIERR_BASE + 3, - MCIERR_UNRECOGNIZED_COMMAND = MCIERR_BASE + 5, - MCIERR_HARDWARE, - MCIERR_INVALID_DEVICE_NAME, - MCIERR_OUT_OF_MEMORY, - MCIERR_DEVICE_OPEN, - MCIERR_CANNOT_LOAD_DRIVER, - MCIERR_MISSING_COMMAND_STRING, - MCIERR_PARAM_OVERFLOW, - MCIERR_MISSING_STRING_ARGUMENT, - MCIERR_BAD_INTEGER, - MCIERR_PARSER_INTERNAL, - MCIERR_DRIVER_INTERNAL, - MCIERR_MISSING_PARAMETER, - MCIERR_UNSUPPORTED_FUNCTION, - MCIERR_FILE_NOT_FOUND, - MCIERR_DEVICE_NOT_READY, - MCIERR_INTERNAL, - MCIERR_DRIVER, - MCIERR_CANNOT_USE_ALL, - MCIERR_MULTIPLE, - MCIERR_EXTENSION_NOT_FOUND, - MCIERR_OUTOFRANGE, // = MCIERR_BASE+26 - MCIERR_FLAGS_NOT_COMPATIBLE = MCIERR_BASE + 28, - MCIERR_FILE_NOT_SAVED = MCIERR_BASE + 30, - MCIERR_DEVICE_TYPE_REQUIRED, - MCIERR_DEVICE_LOCKED, - MCIERR_DUPLICATE_ALIAS, - MCIERR_BAD_CONSTANT, - MCIERR_MUST_USE_SHAREABLE, - MCIERR_MISSING_DEVICE_NAME, - MCIERR_BAD_TIME_FORMAT, - MCIERR_NO_CLOSING_QUOTE, - MCIERR_DUPLICATE_FLAGS, - MCIERR_INVALID_FILE, - MCIERR_NULL_PARAMETER_BLOCK, - MCIERR_UNNAMED_RESOURCE, - MCIERR_NEW_REQUIRES_ALIAS, - MCIERR_NOTIFY_ON_AUTO_OPEN, - MCIERR_NO_ELEMENT_ALLOWED, - MCIERR_NONAPPLICABLE_FUNCTION, - MCIERR_ILLEGAL_FOR_AUTO_OPEN, - MCIERR_FILENAME_REQUIRED, - MCIERR_EXTRA_CHARACTERS, - MCIERR_DEVICE_NOT_INSTALLED, - MCIERR_GET_CD, - MCIERR_SET_CD, - MCIERR_SET_DRIVE, - MCIERR_DEVICE_LENGTH, - MCIERR_DEVICE_ORD_LENGTH, - MCIERR_NO_INTEGER, // = MCIERR_BASE + 56 - MCIERR_WAVE_OUTPUTSINUSE = MCIERR_BASE + 64, - MCIERR_WAVE_SETOUTPUTINUSE, - MCIERR_WAVE_INPUTSINUSE, - MCIERR_WAVE_SETINPUTINUSE, - MCIERR_WAVE_OUTPUTUNSPECIFIED, - MCIERR_WAVE_INPUTUNSPECIFIED, - MCIERR_WAVE_OUTPUTSUNSUITABLE, - MCIERR_WAVE_SETOUTPUTUNSUITABLE, - MCIERR_WAVE_INPUTSUNSUITABLE, - MCIERR_WAVE_SETINPUTUNSUITABLE, // = MCIERR_BASE + 73 - MCIERR_SEQ_DIV_INCOMPATIBLE = MCIERR_BASE + 80, - MCIERR_SEQ_PORT_INUSE, - MCIERR_SEQ_PORT_NONEXISTENT, - MCIERR_SEQ_PORT_MAPNODEVICE, - MCIERR_SEQ_PORT_MISCERROR, - MCIERR_SEQ_TIMER, - MCIERR_SEQ_PORTUNSPECIFIED, - MCIERR_SEQ_NOMIDIPRESENT, // = MCIERR_BASE + 87 - MCIERR_NO_WINDOW = MCIERR_BASE + 90, - MCIERR_CREATEWINDOW, - MCIERR_FILE_READ, - MCIERR_FILE_WRITE, - MCIERR_NO_IDENTITY // = MCIERR_BASE + 94 -} -const MCIERR_CUSTOM_DRIVER_BASE = MCIERR_BASE + 256; - -const MCI_FIRST=DRV_MCI_FIRST; -const MCI_OPEN=0x803; -const MCI_CLOSE=0x804; -const MCI_ESCAPE=0x805; -const MCI_PLAY=0x806; -const MCI_SEEK=0x807; -const MCI_STOP=0x808; -const MCI_PAUSE=0x809; -const MCI_INFO=0x80A; -const MCI_GETDEVCAPS=0x80B; -const MCI_SPIN=0x80C; -const MCI_SET=0x80D; -const MCI_STEP=0x80E; -const MCI_RECORD=0x80F; -const MCI_SYSINFO=0x810; -const MCI_BREAK=0x811; -const MCI_SAVE=0x813; -const MCI_STATUS=0x814; -const MCI_CUE=0x830; -const MCI_REALIZE=0x840; -const MCI_WINDOW=0x841; -const MCI_PUT=0x842; -const MCI_WHERE=0x843; -const MCI_FREEZE=0x844; -const MCI_UNFREEZE=0x845; -const MCI_LOAD=0x850; -const MCI_CUT=0x851; -const MCI_COPY=0x852; -const MCI_PASTE=0x853; -const MCI_UPDATE=0x854; -const MCI_RESUME=0x855; -const MCI_DELETE=0x856; -const MCI_USER_MESSAGES=(DRV_MCI_FIRST+0x400); -const MCI_LAST=0xFFF; - -const MCIDEVICEID MCI_ALL_DEVICE_ID = -1; - -const MCI_DEVTYPE_VCR=513; -const MCI_DEVTYPE_VIDEODISC=514; -const MCI_DEVTYPE_OVERLAY=515; -const MCI_DEVTYPE_CD_AUDIO=516; -const MCI_DEVTYPE_DAT=517; -const MCI_DEVTYPE_SCANNER=518; -const MCI_DEVTYPE_ANIMATION=519; -const MCI_DEVTYPE_DIGITAL_VIDEO=520; -const MCI_DEVTYPE_OTHER=521; -const MCI_DEVTYPE_WAVEFORM_AUDIO=522; -const MCI_DEVTYPE_SEQUENCER=523; -const MCI_DEVTYPE_FIRST=MCI_DEVTYPE_VCR; -const MCI_DEVTYPE_LAST=MCI_DEVTYPE_SEQUENCER; -const MCI_DEVTYPE_FIRST_USER=0x1000; -const MCI_MODE_NOT_READY=(MCI_STRING_OFFSET+12); -const MCI_MODE_STOP=(MCI_STRING_OFFSET+13); -const MCI_MODE_PLAY=(MCI_STRING_OFFSET+14); -const MCI_MODE_RECORD=(MCI_STRING_OFFSET+15); -const MCI_MODE_SEEK=(MCI_STRING_OFFSET+16); -const MCI_MODE_PAUSE=(MCI_STRING_OFFSET+17); -const MCI_MODE_OPEN=(MCI_STRING_OFFSET+18); -const MCI_FORMAT_MILLISECONDS=0; -const MCI_FORMAT_HMS=1; -const MCI_FORMAT_MSF=2; -const MCI_FORMAT_FRAMES=3; -const MCI_FORMAT_SMPTE_24=4; -const MCI_FORMAT_SMPTE_25=5; -const MCI_FORMAT_SMPTE_30=6; -const MCI_FORMAT_SMPTE_30DROP=7; -const MCI_FORMAT_BYTES=8; -const MCI_FORMAT_SAMPLES=9; -const MCI_FORMAT_TMSF=10; - - - - -// Macros -BYTE MCI_HMS_HOUR(DWORD t) { return cast(BYTE)(t); } -BYTE MCI_HMS_MINUTE(DWORD t) { return cast(BYTE)(t>>>8); } -BYTE MCI_HMS_SECOND(DWORD t) { return cast(BYTE)( t>>>16); } -DWORD MCI_MAKE_HMS(BYTE h, BYTE m, BYTE s) { return h |(m<<8)|(cast(DWORD)(s)<<16); } -DWORD MCI_MAKE_MSF(BYTE m, BYTE s, BYTE f) { return m |(s<<8)|(cast(DWORD)(f)<<16); } -DWORD MCI_MAKE_TMSF(BYTE t, BYTE m, BYTE s, BYTE f) { - return t |(m<<8)|(s<<16)|(cast(DWORD)(f)<< 24); } - -BYTE MCI_MSF_MINUTE(DWORD t) { return cast(BYTE)(t); } -BYTE MCI_MSF_SECOND(DWORD t) { return cast(BYTE)(t >>> 8); } -BYTE MCI_MSF_FRAME(DWORD t) { return cast(BYTE)(t >>> 16); } - -BYTE MCI_TMSF_TRACK(DWORD t) { return cast(BYTE)(t); } -BYTE MCI_TMSF_MINUTE(DWORD t) { return cast(BYTE)(t>>8); } -BYTE MCI_TMSF_SECOND(DWORD t) { return cast(BYTE)(t>>16); } -BYTE MCI_TMSF_FRAME(DWORD t) { return cast(BYTE)(t>>24); } - - -const MCI_NOTIFY_SUCCESSFUL=1; -const MCI_NOTIFY_SUPERSEDED=2; -const MCI_NOTIFY_ABORTED=4; -const MCI_NOTIFY_FAILURE=8; -const MCI_NOTIFY=1; -const MCI_WAIT=2; -const MCI_FROM=4; -const MCI_TO=8; -const MCI_TRACK=16; -const MCI_OPEN_SHAREABLE=256; -const MCI_OPEN_ELEMENT=512; -const MCI_OPEN_ALIAS=1024; -const MCI_OPEN_ELEMENT_ID=2048; -const MCI_OPEN_TYPE_ID=0x1000; -const MCI_OPEN_TYPE=0x2000; -const MCI_SEEK_TO_START=256; -const MCI_SEEK_TO_END=512; -const MCI_STATUS_ITEM=256; -const MCI_STATUS_START=512; -const MCI_STATUS_LENGTH=1; -const MCI_STATUS_POSITION=2; -const MCI_STATUS_NUMBER_OF_TRACKS=3; -const MCI_STATUS_MODE=4; -const MCI_STATUS_MEDIA_PRESENT=5; -const MCI_STATUS_TIME_FORMAT=6; -const MCI_STATUS_READY=7; -const MCI_STATUS_CURRENT_TRACK=8; -const MCI_INFO_PRODUCT=256; -const MCI_INFO_FILE=512; -const MCI_INFO_MEDIA_UPC=1024; -const MCI_INFO_MEDIA_IDENTITY=2048; -const MCI_INFO_NAME=0x1000; -const MCI_INFO_COPYRIGHT=0x2000; - -const MCI_GETDEVCAPS_ITEM=256; -const MCI_GETDEVCAPS_CAN_RECORD=1; -const MCI_GETDEVCAPS_HAS_AUDIO=2; -const MCI_GETDEVCAPS_HAS_VIDEO=3; -const MCI_GETDEVCAPS_DEVICE_TYPE=4; -const MCI_GETDEVCAPS_USES_FILES=5; -const MCI_GETDEVCAPS_COMPOUND_DEVICE=6; -const MCI_GETDEVCAPS_CAN_EJECT=7; -const MCI_GETDEVCAPS_CAN_PLAY=8; -const MCI_GETDEVCAPS_CAN_SAVE=9; - -const MCI_SYSINFO_QUANTITY=256; -const MCI_SYSINFO_OPEN=512; -const MCI_SYSINFO_NAME=1024; -const MCI_SYSINFO_INSTALLNAME=2048; -const MCI_SET_DOOR_OPEN=256; -const MCI_SET_DOOR_CLOSED=512; -const MCI_SET_TIME_FORMAT=1024; -const MCI_SET_AUDIO=2048; -const MCI_SET_VIDEO=0x1000; -const MCI_SET_ON=0x2000; -const MCI_SET_OFF=0x4000; - -const MCI_SET_AUDIO_ALL=0; -const MCI_SET_AUDIO_LEFT=1; -const MCI_SET_AUDIO_RIGHT=2; - -const MCI_BREAK_KEY=256; -const MCI_BREAK_HWND=512; -const MCI_BREAK_OFF=1024; - -const MCI_RECORD_INSERT=256; -const MCI_RECORD_OVERWRITE=512; -const MCI_SAVE_FILE=256; -const MCI_LOAD_FILE=256; - -const MCI_VD_MODE_PARK=(MCI_VD_OFFSET+1); -const MCI_VD_MEDIA_CLV=(MCI_VD_OFFSET+2); -const MCI_VD_MEDIA_CAV=(MCI_VD_OFFSET+3); -const MCI_VD_MEDIA_OTHER=(MCI_VD_OFFSET+4); - -const MCI_VD_FORMAT_TRACK=0x4001; -const MCI_VD_PLAY_REVERSE=0x10000; -const MCI_VD_PLAY_FAST=0x20000; -const MCI_VD_PLAY_SPEED=0x40000; -const MCI_VD_PLAY_SCAN=0x80000; -const MCI_VD_PLAY_SLOW=0x100000; -const MCI_VD_SEEK_REVERSE=0x10000; -const MCI_VD_STATUS_SPEED=0x4002; -const MCI_VD_STATUS_FORWARD=0x4003; -const MCI_VD_STATUS_MEDIA_TYPE=0x4004; -const MCI_VD_STATUS_SIDE=0x4005; -const MCI_VD_STATUS_DISC_SIZE=0x4006; -const MCI_VD_GETDEVCAPS_CLV=0x10000; -const MCI_VD_GETDEVCAPS_CAV=0x20000; -const MCI_VD_SPIN_UP=0x10000; -const MCI_VD_SPIN_DOWN=0x20000; -const MCI_VD_GETDEVCAPS_CAN_REVERSE=0x4002; -const MCI_VD_GETDEVCAPS_FAST_RATE=0x4003; -const MCI_VD_GETDEVCAPS_SLOW_RATE=0x4004; -const MCI_VD_GETDEVCAPS_NORMAL_RATE=0x4005; -const MCI_VD_STEP_FRAMES=0x10000; -const MCI_VD_STEP_REVERSE=0x20000; -const MCI_VD_ESCAPE_STRING=256; - -const MCI_CDA_STATUS_TYPE_TRACK=0x4001; -const MCI_CDA_TRACK_AUDIO=MCI_CD_OFFSET; -const MCI_CDA_TRACK_OTHER=(MCI_CD_OFFSET+1); - -const MCI_WAVE_PCM=MCI_WAVE_OFFSET; -const MCI_WAVE_MAPPER=(MCI_WAVE_OFFSET+1); -const MCI_WAVE_OPEN_BUFFER=0x10000; -const MCI_WAVE_SET_FORMATTAG=0x10000; -const MCI_WAVE_SET_CHANNELS=0x20000; -const MCI_WAVE_SET_SAMPLESPERSEC=0x40000; -const MCI_WAVE_SET_AVGBYTESPERSEC=0x80000; -const MCI_WAVE_SET_BLOCKALIGN=0x100000; -const MCI_WAVE_SET_BITSPERSAMPLE=0x200000; -const MCI_WAVE_INPUT=0x400000; -const MCI_WAVE_OUTPUT=0x800000; -const MCI_WAVE_STATUS_FORMATTAG=0x4001; -const MCI_WAVE_STATUS_CHANNELS=0x4002; -const MCI_WAVE_STATUS_SAMPLESPERSEC=0x4003; -const MCI_WAVE_STATUS_AVGBYTESPERSEC=0x4004; -const MCI_WAVE_STATUS_BLOCKALIGN=0x4005; -const MCI_WAVE_STATUS_BITSPERSAMPLE=0x4006; -const MCI_WAVE_STATUS_LEVEL=0x4007; -const MCI_WAVE_SET_ANYINPUT=0x4000000; -const MCI_WAVE_SET_ANYOUTPUT=0x8000000; -const MCI_WAVE_GETDEVCAPS_INPUTS=0x4001; -const MCI_WAVE_GETDEVCAPS_OUTPUTS=0x4002; - -const MCI_SEQ_DIV_PPQN=MCI_SEQ_OFFSET; -const MCI_SEQ_DIV_SMPTE_24=(MCI_SEQ_OFFSET+1); -const MCI_SEQ_DIV_SMPTE_25=(MCI_SEQ_OFFSET+2); -const MCI_SEQ_DIV_SMPTE_30DROP=(MCI_SEQ_OFFSET+3); -const MCI_SEQ_DIV_SMPTE_30=(MCI_SEQ_OFFSET+4); -const MCI_SEQ_FORMAT_SONGPTR=0x4001; -const MCI_SEQ_FILE=0x4002; -const MCI_SEQ_MIDI=0x4003; -const MCI_SEQ_SMPTE=0x4004; -const MCI_SEQ_NONE=65533; -const MCI_SEQ_MAPPER=65535; - -const MCI_SEQ_STATUS_TEMPO=0x4002; -const MCI_SEQ_STATUS_PORT=0x4003; -const MCI_SEQ_STATUS_SLAVE=0x4007; -const MCI_SEQ_STATUS_MASTER=0x4008; -const MCI_SEQ_STATUS_OFFSET=0x4009; -const MCI_SEQ_STATUS_DIVTYPE=0x400A; -const MCI_SEQ_STATUS_NAME=0x400B; -const MCI_SEQ_STATUS_COPYRIGHT=0x400C; - -const MCI_SEQ_SET_TEMPO=0x10000; -const MCI_SEQ_SET_PORT=0x20000; -const MCI_SEQ_SET_SLAVE=0x40000; -const MCI_SEQ_SET_MASTER=0x80000; -const MCI_SEQ_SET_OFFSET=0x1000000; - -const MCI_ANIM_OPEN_WS=0x10000; -const MCI_ANIM_OPEN_PARENT=0x20000; -const MCI_ANIM_OPEN_NOSTATIC=0x40000; -const MCI_ANIM_PLAY_SPEED=0x10000; -const MCI_ANIM_PLAY_REVERSE=0x20000; -const MCI_ANIM_PLAY_FAST=0x40000; -const MCI_ANIM_PLAY_SLOW=0x80000; -const MCI_ANIM_PLAY_SCAN=0x100000; -const MCI_ANIM_STEP_REVERSE=0x10000; -const MCI_ANIM_STEP_FRAMES=0x20000; -const MCI_ANIM_STATUS_SPEED=0x4001; -const MCI_ANIM_STATUS_FORWARD=0x4002; -const MCI_ANIM_STATUS_HWND=0x4003; -const MCI_ANIM_STATUS_HPAL=0x4004; -const MCI_ANIM_STATUS_STRETCH=0x4005; -const MCI_ANIM_INFO_TEXT=0x10000; - -const MCI_ANIM_GETDEVCAPS_CAN_REVERSE=0x4001; -const MCI_ANIM_GETDEVCAPS_FAST_RATE=0x4002; -const MCI_ANIM_GETDEVCAPS_SLOW_RATE=0x4003; -const MCI_ANIM_GETDEVCAPS_NORMAL_RATE=0x4004; -const MCI_ANIM_GETDEVCAPS_PALETTES=0x4006; -const MCI_ANIM_GETDEVCAPS_CAN_STRETCH=0x4007; -const MCI_ANIM_GETDEVCAPS_MAX_WINDOWS=0x4008; - -const MCI_ANIM_REALIZE_NORM=0x10000; -const MCI_ANIM_REALIZE_BKGD=0x20000; - -const MCI_ANIM_WINDOW_HWND=0x10000; -const MCI_ANIM_WINDOW_STATE=0x40000; -const MCI_ANIM_WINDOW_TEXT=0x80000; -const MCI_ANIM_WINDOW_ENABLE_STRETCH=0x100000; -const MCI_ANIM_WINDOW_DISABLE_STRETCH=0x200000; -const MCI_ANIM_WINDOW_DEFAULT=0x0; - -const MCI_ANIM_RECT=0x10000; -const MCI_ANIM_PUT_SOURCE=0x20000; -const MCI_ANIM_PUT_DESTINATION=0x40000; -const MCI_ANIM_WHERE_SOURCE=0x20000; -const MCI_ANIM_WHERE_DESTINATION=0x40000; -const MCI_ANIM_UPDATE_HDC=0x20000; - -const MCI_OVLY_OPEN_WS=0x10000; -const MCI_OVLY_OPEN_PARENT=0x20000; -const MCI_OVLY_STATUS_HWND=0x4001; -const MCI_OVLY_STATUS_STRETCH=0x4002; -const MCI_OVLY_INFO_TEXT=0x10000; -const MCI_OVLY_GETDEVCAPS_CAN_STRETCH=0x4001; -const MCI_OVLY_GETDEVCAPS_CAN_FREEZE=0x4002; -const MCI_OVLY_GETDEVCAPS_MAX_WINDOWS=0x4003; -const MCI_OVLY_WINDOW_HWND=0x10000; -const MCI_OVLY_WINDOW_STATE=0x40000; -const MCI_OVLY_WINDOW_TEXT=0x80000; -const MCI_OVLY_WINDOW_ENABLE_STRETCH=0x100000; -const MCI_OVLY_WINDOW_DISABLE_STRETCH=0x200000; -const MCI_OVLY_WINDOW_DEFAULT=0x0; -const MCI_OVLY_RECT=0x10000; -const MCI_OVLY_PUT_SOURCE=0x20000; -const MCI_OVLY_PUT_DESTINATION=0x40000; -const MCI_OVLY_PUT_FRAME=0x80000; -const MCI_OVLY_PUT_VIDEO=0x100000; -const MCI_OVLY_WHERE_SOURCE=0x20000; -const MCI_OVLY_WHERE_DESTINATION=0x40000; -const MCI_OVLY_WHERE_FRAME=0x80000; -const MCI_OVLY_WHERE_VIDEO=0x100000; - -const NEWTRANSPARENT=3; -const QUERYROPSUPPORT=40; -const SELECTDIB=41; - -LONG DIBINDEX(WORD n) { - return MAKELONG(n, 0x10FF); -} -const CAPS1=94; -const C1_TRANSPARENT=1; - -const SEEK_SET=0; -const SEEK_CUR=1; -const SEEK_END=2; - -alias DWORD MCIERROR; -alias UINT MCIDEVICEID; -alias UINT function (MCIDEVICEID, DWORD) YIELDPROC; -alias UINT MMVERSION; -alias UINT MMRESULT; - -struct MMTIME { - UINT wType; - union { - DWORD ms; - DWORD sample; - DWORD cb; - DWORD ticks; - struct smpte { - BYTE hour; - BYTE min; - BYTE sec; - BYTE frame; - BYTE fps; - BYTE dummy; - BYTE[2] pad; - }; - struct midi { - DWORD songptrpos; - } - } -} -alias MMTIME* PMMTIME, LPMMTIME; - -alias TypeDef!(HANDLE) HDRVR; - -struct DRVCONFIGINFO { - DWORD dwDCISize; - LPCWSTR lpszDCISectionName; - LPCWSTR lpszDCIAliasName; -} -alias DRVCONFIGINFO * PDRVCONFIGINFO, LPDRVCONFIGINFO; - -struct DRVCONFIGINFOEX { - DWORD dwDCISize; - LPCWSTR lpszDCISectionName; - LPCWSTR lpszDCIAliasName; - DWORD dnDevNode; -} -alias DRVCONFIGINFOEX* PDRVCONFIGINFOEX, LPDRVCONFIGINFOEX; - -extern(Windows): - -/+FIXME: I couldn't find these in MSDN. -alias void function (HDRVR, UINT, DWORD, DWORD, DWORD) DRVCALLBACK; -LRESULT DRIVERPROC (DWORD, HDRVR, UINT, LPARAM, LPARAM); -alias DRVCALLBACK* LPDRVCALLBACK, PDRVCALLBACK; - -alias DRVCALLBACK WAVECALLBACK; -alias WAVECALLBACK* LPWAVECALLBACK; - -alias DRVCALLBACK MIDICALLBACK; -alias MIDICALLBACK* LPMIDICALLBACK; - -+/ - -alias TypeDef!(HANDLE) HWAVE; -alias TypeDef!(HANDLE) HWAVEIN; -alias TypeDef!(HANDLE) HWAVEOUT; - -alias HWAVEIN* LPHWAVEIN; -alias HWAVEOUT* LPHWAVEOUT; - -struct WAVEHDR { - LPSTR lpData; - DWORD dwBufferLength; - DWORD dwBytesRecorded; - DWORD dwUser; - DWORD dwFlags; - DWORD dwLoops; - WAVEHDR *lpNext; - DWORD reserved; -} -alias WAVEHDR* PWAVEHDR, LPWAVEHDR; - -struct WAVEOUTCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR[MAXPNAMELEN] szPname; - DWORD dwFormats; - WORD wChannels; - WORD wReserved1; - DWORD dwSupport; -} -alias WAVEOUTCAPSA* PWAVEOUTCAPSA, LPWAVEOUTCAPSA; - -struct WAVEOUTCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR[MAXPNAMELEN] szPname; - DWORD dwFormats; - WORD wChannels; - WORD wReserved1; - DWORD dwSupport; -} -alias WAVEOUTCAPSW* PWAVEOUTCAPSW, LPWAVEOUTCAPSW; - -struct WAVEINCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR[MAXPNAMELEN] szPname; - DWORD dwFormats; - WORD wChannels; - WORD wReserved1; -} -alias WAVEINCAPSA* PWAVEINCAPSA, LPWAVEINCAPSA; - -struct WAVEINCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR[MAXPNAMELEN] szPname; - DWORD dwFormats; - WORD wChannels; - WORD wReserved1; -} -alias WAVEINCAPSW* PWAVEINCAPSW, LPWAVEINCAPSW; - -struct WAVEFORMAT { - WORD wFormatTag; - WORD nChannels; - DWORD nSamplesPerSec; - DWORD nAvgBytesPerSec; - WORD nBlockAlign; -} -alias WAVEFORMAT* PWAVEFORMAT, LPWAVEFORMAT; - -struct PCMWAVEFORMAT { - WAVEFORMAT wf; - WORD wBitsPerSample; -} -alias PCMWAVEFORMAT* PPCMWAVEFORMAT, LPPCMWAVEFORMAT; - -struct WAVEFORMATEX { - WORD wFormatTag; - WORD nChannels; - DWORD nSamplesPerSec; - DWORD nAvgBytesPerSec; - WORD nBlockAlign; - WORD wBitsPerSample; - WORD cbSize; -} -alias WAVEFORMATEX* PWAVEFORMATEX, LPWAVEFORMATEX; -alias const(WAVEFORMATEX)* LPCWAVEFORMATEX; - -alias TypeDef!(HANDLE) HMIDI; -alias TypeDef!(HANDLE) HMIDIIN; -alias TypeDef!(HANDLE) HMIDIOUT; -alias TypeDef!(HANDLE) HMIDISTRM; - -alias HMIDI* LPHMIDI; -alias HMIDIIN* LPHMIDIIN; -alias HMIDIOUT* LPHMIDIOUT; -alias HMIDISTRM* LPHMIDISTRM; - -alias WORD[MIDIPATCHSIZE] PATCHARRAY; -alias WORD* LPPATCHARRAY; -alias WORD[MIDIPATCHSIZE] KEYARRAY; -alias WORD* LPKEYARRAY; - -struct MIDIOUTCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR[MAXPNAMELEN] szPname; - WORD wTechnology; - WORD wVoices; - WORD wNotes; - WORD wChannelMask; - DWORD dwSupport; -} -alias MIDIOUTCAPSA* PMIDIOUTCAPSA, LPMIDIOUTCAPSA; - -struct MIDIOUTCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR[MAXPNAMELEN] szPname; - WORD wTechnology; - WORD wVoices; - WORD wNotes; - WORD wChannelMask; - DWORD dwSupport; -} -alias MIDIOUTCAPSW* PMIDIOUTCAPSW, LPMIDIOUTCAPSW; - -struct MIDIINCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR[MAXPNAMELEN] szPname; - DWORD dwSupport; -} -alias MIDIINCAPSA* PMIDIINCAPSA, LPMIDIINCAPSA; - -struct MIDIINCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR[MAXPNAMELEN] szPname; - DWORD dwSupport; -} -alias MIDIINCAPSW* PMIDIINCAPSW, LPMIDIINCAPSW; - -struct MIDIHDR { - LPSTR lpData; - DWORD dwBufferLength; - DWORD dwBytesRecorded; - DWORD dwUser; - DWORD dwFlags; - MIDIHDR *lpNext; - DWORD reserved; - DWORD dwOffset; - DWORD[8] dwReserved; -} -alias MIDIHDR* PMIDIHDR, LPMIDIHDR; - -struct MIDIEVENT { - DWORD dwDeltaTime; - DWORD dwStreamID; - DWORD dwEvent; - DWORD[1] dwParms; -} - -struct MIDISTRMBUFFVER { - DWORD dwVersion; - DWORD dwMid; - DWORD dwOEMVersion; -} - -struct MIDIPROPTIMEDIV { - DWORD cbStruct; - DWORD dwTimeDiv; -} -alias MIDIPROPTIMEDIV* LPMIDIPROPTIMEDIV; - -struct MIDIPROPTEMPO { - DWORD cbStruct; - DWORD dwTempo; -} -alias MIDIPROPTEMPO* LPMIDIPROPTEMPO; - -struct AUXCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR[MAXPNAMELEN] szPname; - WORD wTechnology; - WORD wReserved1; - DWORD dwSupport; -} -alias AUXCAPSA* PAUXCAPSA, LPAUXCAPSA; - -struct AUXCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR[MAXPNAMELEN] szPname; - WORD wTechnology; - WORD wReserved1; - DWORD dwSupport; -} -alias AUXCAPSW* PAUXCAPSW, LPAUXCAPSW; - -alias TypeDef!(HANDLE) HMIXEROBJ; -alias HMIXEROBJ* LPHMIXEROBJ; - -alias TypeDef!(HANDLE) HMIXER; -alias HMIXER* LPHMIXER; - -struct MIXERCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR[MAXPNAMELEN] szPname; - DWORD fdwSupport; - DWORD cDestinations; -} -alias MIXERCAPSA* PMIXERCAPSA, LPMIXERCAPSA; - -struct MIXERCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR[MAXPNAMELEN] szPname; - DWORD fdwSupport; - DWORD cDestinations; -} -alias MIXERCAPSW* PMIXERCAPSW, LPMIXERCAPSW; - -struct MIXERLINEA { - DWORD cbStruct; - DWORD dwDestination; - DWORD dwSource; - DWORD dwLineID; - DWORD fdwLine; - DWORD dwUser; - DWORD dwComponentType; - DWORD cChannels; - DWORD cConnections; - DWORD cControls; - CHAR[MIXER_SHORT_NAME_CHARS] szShortName; - CHAR[MIXER_LONG_NAME_CHARS] szName; - struct Target { - DWORD dwType; - DWORD dwDeviceID; - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR[MAXPNAMELEN] szPname; - } -} -alias MIXERLINEA* PMIXERLINEA, LPMIXERLINEA; - -struct MIXERLINEW { - DWORD cbStruct; - DWORD dwDestination; - DWORD dwSource; - DWORD dwLineID; - DWORD fdwLine; - DWORD dwUser; - DWORD dwComponentType; - DWORD cChannels; - DWORD cConnections; - DWORD cControls; - WCHAR[MIXER_SHORT_NAME_CHARS] szShortName; - WCHAR[MIXER_LONG_NAME_CHARS] szName; - struct Target { - DWORD dwType; - DWORD dwDeviceID; - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR[MAXPNAMELEN] szPname; - } -} -alias MIXERLINEW* PMIXERLINEW, LPMIXERLINEW; - -struct MIXERCONTROLA { - DWORD cbStruct; - DWORD dwControlID; - DWORD dwControlType; - DWORD fdwControl; - DWORD cMultipleItems; - CHAR[MIXER_SHORT_NAME_CHARS] szShortName; - CHAR[MIXER_LONG_NAME_CHARS] szName; - union _Bounds { - struct { - LONG lMinimum; - LONG lMaximum; - } - struct { - DWORD dwMinimum; - DWORD dwMaximum; - } - DWORD[6] dwReserved; - } - _Bounds Bounds; - union _Metrics { - DWORD cSteps; - DWORD cbCustomData; - DWORD[6] dwReserved; - } - _Metrics Metrics; -} -alias MIXERCONTROLA* PMIXERCONTROLA, LPMIXERCONTROLA; - -struct MIXERCONTROLW { - DWORD cbStruct; - DWORD dwControlID; - DWORD dwControlType; - DWORD fdwControl; - DWORD cMultipleItems; - WCHAR[MIXER_SHORT_NAME_CHARS] szShortName; - WCHAR[MIXER_LONG_NAME_CHARS] szName; - union _Bounds { - struct { - LONG lMinimum; - LONG lMaximum; - } - struct { - DWORD dwMinimum; - DWORD dwMaximum; - } - DWORD[6] dwReserved; - } - _Bounds Bounds; - union _Metrics { - DWORD cSteps; - DWORD cbCustomData; - DWORD[6] dwReserved; - } - _Metrics Metrics; -} - -alias MIXERCONTROLW* PMIXERCONTROLW, LPMIXERCONTROLW; - -struct MIXERLINECONTROLSA { - DWORD cbStruct; - DWORD dwLineID; - union { - DWORD dwControlID; - DWORD dwControlType; - } - DWORD cControls; - DWORD cbmxctrl; - LPMIXERCONTROLA pamxctrl; -} -alias MIXERLINECONTROLSA* PMIXERLINECONTROLSA, LPMIXERLINECONTROLSA; - -struct MIXERLINECONTROLSW { - DWORD cbStruct; - DWORD dwLineID; - union { - DWORD dwControlID; - DWORD dwControlType; - } - DWORD cControls; - DWORD cbmxctrl; - LPMIXERCONTROLW pamxctrl; -} -alias MIXERLINECONTROLSW* PMIXERLINECONTROLSW, LPMIXERLINECONTROLSW; - -struct MIXERCONTROLDETAILS { - DWORD cbStruct; - DWORD dwControlID; - DWORD cChannels; - union { - HWND hwndOwner; - DWORD cMultipleItems; - } - DWORD cbDetails; - PVOID paDetails; -} -alias MIXERCONTROLDETAILS* PMIXERCONTROLDETAILS, LPMIXERCONTROLDETAILS; - -struct MIXERCONTROLDETAILS_LISTTEXTA { - DWORD dwParam1; - DWORD dwParam2; - CHAR[MIXER_LONG_NAME_CHARS] szName; -} -alias MIXERCONTROLDETAILS_LISTTEXTA* PMIXERCONTROLDETAILS_LISTTEXTA, LPMIXERCONTROLDETAILS_LISTTEXTA; - -struct MIXERCONTROLDETAILS_LISTTEXTW { - DWORD dwParam1; - DWORD dwParam2; - WCHAR[MIXER_LONG_NAME_CHARS] szName; -} -alias MIXERCONTROLDETAILS_LISTTEXTW* PMIXERCONTROLDETAILS_LISTTEXTW, LPMIXERCONTROLDETAILS_LISTTEXTW; - -struct MIXERCONTROLDETAILS_BOOLEAN { - LONG fValue; -} -alias MIXERCONTROLDETAILS_BOOLEAN* PMIXERCONTROLDETAILS_BOOLEAN, LPMIXERCONTROLDETAILS_BOOLEAN; - -struct MIXERCONTROLDETAILS_SIGNED { - LONG lValue; -} -alias MIXERCONTROLDETAILS_SIGNED* PMIXERCONTROLDETAILS_SIGNED, LPMIXERCONTROLDETAILS_SIGNED; - -struct MIXERCONTROLDETAILS_UNSIGNED { - DWORD dwValue; -} -alias MIXERCONTROLDETAILS_UNSIGNED* PMIXERCONTROLDETAILS_UNSIGNED, LPMIXERCONTROLDETAILS_UNSIGNED; - -alias void function (UINT, UINT, DWORD, DWORD, DWORD) LPTIMECALLBACK; - -struct TIMECAPS { - UINT wPeriodMin; - UINT wPeriodMax; -} -alias TIMECAPS* PTIMECAPS, LPTIMECAPS; - -struct JOYCAPSA { - WORD wMid; - WORD wPid; - CHAR[MAXPNAMELEN] szPname; - UINT wXmin; - UINT wXmax; - UINT wYmin; - UINT wYmax; - UINT wZmin; - UINT wZmax; - UINT wNumButtons; - UINT wPeriodMin; - UINT wPeriodMax; - UINT wRmin; - UINT wRmax; - UINT wUmin; - UINT wUmax; - UINT wVmin; - UINT wVmax; - UINT wCaps; - UINT wMaxAxes; - UINT wNumAxes; - UINT wMaxButtons; - CHAR[MAXPNAMELEN] szRegKey; - CHAR[MAX_JOYSTICKOEMVXDNAME] szOEMVxD; -} -alias JOYCAPSA* PJOYCAPSA, LPJOYCAPSA; - -struct JOYCAPSW { - WORD wMid; - WORD wPid; - WCHAR[MAXPNAMELEN] szPname; - UINT wXmin; - UINT wXmax; - UINT wYmin; - UINT wYmax; - UINT wZmin; - UINT wZmax; - UINT wNumButtons; - UINT wPeriodMin; - UINT wPeriodMax; - UINT wRmin; - UINT wRmax; - UINT wUmin; - UINT wUmax; - UINT wVmin; - UINT wVmax; - UINT wCaps; - UINT wMaxAxes; - UINT wNumAxes; - UINT wMaxButtons; - WCHAR[MAXPNAMELEN] szRegKey; - WCHAR[MAX_JOYSTICKOEMVXDNAME] szOEMVxD; -} -alias JOYCAPSW* PJOYCAPSW, LPJOYCAPSW; - -struct JOYINFO { - UINT wXpos; - UINT wYpos; - UINT wZpos; - UINT wButtons; -} -alias JOYINFO* PJOYINFO, LPJOYINFO; - -struct JOYINFOEX { - DWORD dwSize; - DWORD dwFlags; - DWORD dwXpos; - DWORD dwYpos; - DWORD dwZpos; - DWORD dwRpos; - DWORD dwUpos; - DWORD dwVpos; - DWORD dwButtons; - DWORD dwButtonNumber; - DWORD dwPOV; - DWORD dwReserved1; - DWORD dwReserved2; -} -alias JOYINFOEX* PJOYINFOEX, LPJOYINFOEX; - -alias DWORD FOURCC; -alias char* HPSTR; - -alias TypeDef!(HANDLE) HMMIO; - -alias LRESULT function (LPSTR, UINT, LPARAM, LPARAM) LPMMIOPROC; - -struct MMIOINFO { - DWORD dwFlags; - FOURCC fccIOProc; - LPMMIOPROC pIOProc; - UINT wErrorRet; - HTASK htask; - LONG cchBuffer; - HPSTR pchBuffer; - HPSTR pchNext; - HPSTR pchEndRead; - HPSTR pchEndWrite; - LONG lBufOffset; - LONG lDiskOffset; - DWORD[3] adwInfo; - DWORD dwReserved1; - DWORD dwReserved2; - HMMIO hmmio; -} -alias MMIOINFO* PMMIOINFO, LPMMIOINFO; -alias const(MMIOINFO)* LPCMMIOINFO; - -struct MMCKINFO { - FOURCC ckid; - DWORD cksize; - FOURCC fccType; - DWORD dwDataOffset; - DWORD dwFlags; -} -alias MMCKINFO* PMMCKINFO, LPMMCKINFO; -alias const(MMCKINFO)* LPCMMCKINFO; - -struct MCI_GENERIC_PARMS { - DWORD dwCallback; -} -alias MCI_GENERIC_PARMS* PMCI_GENERIC_PARMS, LPMCI_GENERIC_PARMS; - -struct MCI_OPEN_PARMSA { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCSTR lpstrDeviceType; - LPCSTR lpstrElementName; - LPCSTR lpstrAlias; -} -alias MCI_OPEN_PARMSA* PMCI_OPEN_PARMSA, LPMCI_OPEN_PARMSA; - -struct MCI_OPEN_PARMSW { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCWSTR lpstrDeviceType; - LPCWSTR lpstrElementName; - LPCWSTR lpstrAlias; -} -alias MCI_OPEN_PARMSW* PMCI_OPEN_PARMSW, LPMCI_OPEN_PARMSW; - -struct MCI_PLAY_PARMS { - DWORD dwCallback; - DWORD dwFrom; - DWORD dwTo; -} -alias MCI_PLAY_PARMS* PMCI_PLAY_PARMS, LPMCI_PLAY_PARMS; - -struct MCI_SEEK_PARMS { - DWORD dwCallback; - DWORD dwTo; -} -alias MCI_SEEK_PARMS* PMCI_SEEK_PARMS, LPMCI_SEEK_PARMS; - -struct MCI_STATUS_PARMS { - DWORD dwCallback; - DWORD dwReturn; - DWORD dwItem; - DWORD dwTrack; -} -alias MCI_STATUS_PARMS* PMCI_STATUS_PARMS, LPMCI_STATUS_PARMS; - -struct MCI_INFO_PARMSA { - DWORD dwCallback; - LPSTR lpstrReturn; - DWORD dwRetSize; -} -alias MCI_INFO_PARMSA* LPMCI_INFO_PARMSA; - -struct MCI_INFO_PARMSW { - DWORD dwCallback; - LPWSTR lpstrReturn; - DWORD dwRetSize; -} -alias MCI_INFO_PARMSW* LPMCI_INFO_PARMSW; - -struct MCI_GETDEVCAPS_PARMS { - DWORD dwCallback; - DWORD dwReturn; - DWORD dwItem; -} -alias MCI_GETDEVCAPS_PARMS* PMCI_GETDEVCAPS_PARMS, LPMCI_GETDEVCAPS_PARMS; - -struct MCI_SYSINFO_PARMSA { - DWORD dwCallback; - LPSTR lpstrReturn; - DWORD dwRetSize; - DWORD dwNumber; - UINT wDeviceType; -} -alias MCI_SYSINFO_PARMSA* PMCI_SYSINFO_PARMSA, LPMCI_SYSINFO_PARMSA; - -struct MCI_SYSINFO_PARMSW { - DWORD dwCallback; - LPWSTR lpstrReturn; - DWORD dwRetSize; - DWORD dwNumber; - UINT wDeviceType; -} -alias MCI_SYSINFO_PARMSW* PMCI_SYSINFO_PARMSW, LPMCI_SYSINFO_PARMSW; - -struct MCI_SET_PARMS { - DWORD dwCallback; - DWORD dwTimeFormat; - DWORD dwAudio; -} -alias MCI_SET_PARMS* PMCI_SET_PARMS, LPMCI_SET_PARMS; - -struct MCI_BREAK_PARMS { - DWORD dwCallback; - int nVirtKey; - HWND hwndBreak; -} -alias MCI_BREAK_PARMS* PMCI_BREAK_PARMS, LPMCI_BREAK_PARMS; - -struct MCI_SAVE_PARMSA { - DWORD dwCallback; - LPCSTR lpfilename; -} -alias MCI_SAVE_PARMSA* PMCI_SAVE_PARMSA, LPMCI_SAVE_PARMSA; - -struct MCI_SAVE_PARMSW { - DWORD dwCallback; - LPCWSTR lpfilename; -} -alias MCI_SAVE_PARMSW* PMCI_SAVE_PARMSW, LPMCI_SAVE_PARMSW; - -struct MCI_LOAD_PARMSA { - DWORD dwCallback; - LPCSTR lpfilename; -} -alias MCI_LOAD_PARMSA* PMCI_LOAD_PARMSA, LPMCI_LOAD_PARMSA; - -struct MCI_LOAD_PARMSW { - DWORD dwCallback; - LPCWSTR lpfilename; -} -alias MCI_LOAD_PARMSW* PMCI_LOAD_PARMSW, LPMCI_LOAD_PARMSW; - -struct MCI_RECORD_PARMS { - DWORD dwCallback; - DWORD dwFrom; - DWORD dwTo; -} -alias MCI_RECORD_PARMS* LPMCI_RECORD_PARMS; - -struct MCI_VD_PLAY_PARMS { - DWORD dwCallback; - DWORD dwFrom; - DWORD dwTo; - DWORD dwSpeed; -} -alias MCI_VD_PLAY_PARMS* PMCI_VD_PLAY_PARMS, LPMCI_VD_PLAY_PARMS; - -struct MCI_VD_STEP_PARMS { - DWORD dwCallback; - DWORD dwFrames; -} -alias MCI_VD_STEP_PARMS* PMCI_VD_STEP_PARMS, LPMCI_VD_STEP_PARMS; - -struct MCI_VD_ESCAPE_PARMSA { - DWORD dwCallback; - LPCSTR lpstrCommand; -} -alias MCI_VD_ESCAPE_PARMSA* PMCI_VD_ESCAPE_PARMSA, LPMCI_VD_ESCAPE_PARMSA; - -struct MCI_VD_ESCAPE_PARMSW { - DWORD dwCallback; - LPCWSTR lpstrCommand; -} -alias MCI_VD_ESCAPE_PARMSW* PMCI_VD_ESCAPE_PARMSW, LPMCI_VD_ESCAPE_PARMSW; - -struct MCI_WAVE_OPEN_PARMSA { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCSTR lpstrDeviceType; - LPCSTR lpstrElementName; - LPCSTR lpstrAlias; - DWORD dwBufferSeconds; -} -alias MCI_WAVE_OPEN_PARMSA* PMCI_WAVE_OPEN_PARMSA, LPMCI_WAVE_OPEN_PARMSA; - -struct MCI_WAVE_OPEN_PARMSW { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCWSTR lpstrDeviceType; - LPCWSTR lpstrElementName; - LPCWSTR lpstrAlias; - DWORD dwBufferSeconds; -} -alias MCI_WAVE_OPEN_PARMSW* PMCI_WAVE_OPEN_PARMSW, LPMCI_WAVE_OPEN_PARMSW; - -struct MCI_WAVE_DELETE_PARMS { - DWORD dwCallback; - DWORD dwFrom; - DWORD dwTo; -} -alias MCI_WAVE_DELETE_PARMS* PMCI_WAVE_DELETE_PARMS, LPMCI_WAVE_DELETE_PARMS; - -struct MCI_WAVE_SET_PARMS { - DWORD dwCallback; - DWORD dwTimeFormat; - DWORD dwAudio; - UINT wInput; - UINT wOutput; - WORD wFormatTag; - WORD wReserved2; - WORD nChannels; - WORD wReserved3; - DWORD nSamplesPerSec; - DWORD nAvgBytesPerSec; - WORD nBlockAlign; - WORD wReserved4; - WORD wBitsPerSample; - WORD wReserved5; -} -alias MCI_WAVE_SET_PARMS* PMCI_WAVE_SET_PARMS, LPMCI_WAVE_SET_PARMS; - -extern (Windows): -LRESULT CloseDriver(HDRVR, LONG, LONG); -HDRVR OpenDriver(LPCWSTR, LPCWSTR, LONG); -LRESULT SendDriverMessage(HDRVR, UINT, LONG, LONG); -HMODULE DrvGetModuleHandle(HDRVR); -HMODULE GetDriverModuleHandle(HDRVR); -LRESULT DefDriverProc(DWORD, HDRVR, UINT, LPARAM, LPARAM); -UINT mmsystemGetVersion(); -// FIXME: I believe this next line is a mistake -//alias OutputDebugString OutputDebugStr; -BOOL sndPlaySoundA(LPCSTR, UINT); -BOOL sndPlaySoundW(LPCWSTR, UINT); -BOOL PlaySoundA(LPCSTR, HMODULE, DWORD); -BOOL PlaySoundW(LPCWSTR, HMODULE, DWORD); -UINT waveOutGetNumDevs(); -MMRESULT waveOutGetDevCapsA(UINT, LPWAVEOUTCAPSA, UINT); -MMRESULT waveOutGetDevCapsW(UINT, LPWAVEOUTCAPSW, UINT); -MMRESULT waveOutGetVolume(HWAVEOUT, PDWORD); -MMRESULT waveOutSetVolume(HWAVEOUT, DWORD); -MMRESULT waveOutGetErrorTextA(MMRESULT, LPSTR, UINT); -MMRESULT waveOutGetErrorTextW(MMRESULT, LPWSTR, UINT); -MMRESULT waveOutOpen(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD); -MMRESULT waveOutClose(HWAVEOUT); -MMRESULT waveOutPrepareHeader(HWAVEOUT, LPWAVEHDR, UINT); -MMRESULT waveOutUnprepareHeader(HWAVEOUT, LPWAVEHDR, UINT); -MMRESULT waveOutWrite(HWAVEOUT, LPWAVEHDR, UINT); -MMRESULT waveOutPause(HWAVEOUT); -MMRESULT waveOutRestart(HWAVEOUT); -MMRESULT waveOutReset(HWAVEOUT); -MMRESULT waveOutBreakLoop(HWAVEOUT); -MMRESULT waveOutGetPosition(HWAVEOUT, LPMMTIME, UINT); -MMRESULT waveOutGetPitch(HWAVEOUT, PDWORD); -MMRESULT waveOutSetPitch(HWAVEOUT, DWORD); -MMRESULT waveOutGetPlaybackRate(HWAVEOUT, PDWORD); -MMRESULT waveOutSetPlaybackRate(HWAVEOUT, DWORD); -MMRESULT waveOutGetID(HWAVEOUT, LPUINT); -MMRESULT waveOutMessage(HWAVEOUT, UINT, DWORD, DWORD); -UINT waveInGetNumDevs(); -MMRESULT waveInGetDevCapsA(UINT, LPWAVEINCAPSA, UINT); -MMRESULT waveInGetDevCapsW(UINT, LPWAVEINCAPSW, UINT); -MMRESULT waveInGetErrorTextA(MMRESULT, LPSTR, UINT); -MMRESULT waveInGetErrorTextW(MMRESULT, LPWSTR, UINT); -MMRESULT waveInOpen(LPHWAVEIN, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD); -MMRESULT waveInClose(HWAVEIN); -MMRESULT waveInPrepareHeader(HWAVEIN, LPWAVEHDR, UINT); -MMRESULT waveInUnprepareHeader(HWAVEIN, LPWAVEHDR, UINT); -MMRESULT waveInAddBuffer(HWAVEIN, LPWAVEHDR, UINT); -MMRESULT waveInStart(HWAVEIN); -MMRESULT waveInStop(HWAVEIN); -MMRESULT waveInReset(HWAVEIN); -MMRESULT waveInGetPosition(HWAVEIN, LPMMTIME, UINT); -MMRESULT waveInGetID(HWAVEIN, LPUINT); -MMRESULT waveInMessage(HWAVEIN, UINT, DWORD, DWORD); -UINT midiOutGetNumDevs(); -MMRESULT midiStreamOpen(LPHMIDISTRM, LPUINT, DWORD, DWORD, DWORD, DWORD); -MMRESULT midiStreamClose(HMIDISTRM); -MMRESULT midiStreamProperty(HMIDISTRM, LPBYTE, DWORD); -MMRESULT midiStreamPosition(HMIDISTRM, LPMMTIME, UINT); -MMRESULT midiStreamOut(HMIDISTRM, LPMIDIHDR, UINT); -MMRESULT midiStreamPause(HMIDISTRM); -MMRESULT midiStreamRestart(HMIDISTRM); -MMRESULT midiStreamStop(HMIDISTRM); -MMRESULT midiConnect(HMIDI, HMIDIOUT, PVOID); -MMRESULT midiDisconnect(HMIDI, HMIDIOUT, PVOID); -MMRESULT midiOutGetDevCapsA(UINT, LPMIDIOUTCAPSA, UINT); -MMRESULT midiOutGetDevCapsW(UINT, LPMIDIOUTCAPSW, UINT); -MMRESULT midiOutGetVolume(HMIDIOUT, PDWORD); -MMRESULT midiOutSetVolume(HMIDIOUT, DWORD); -MMRESULT midiOutGetErrorTextA(MMRESULT, LPSTR, UINT); -MMRESULT midiOutGetErrorTextW(MMRESULT, LPWSTR, UINT); -MMRESULT midiOutOpen(LPHMIDIOUT, UINT, DWORD, DWORD, DWORD); -MMRESULT midiOutClose(HMIDIOUT); -MMRESULT midiOutPrepareHeader(HMIDIOUT, LPMIDIHDR, UINT); -MMRESULT midiOutUnprepareHeader(HMIDIOUT, LPMIDIHDR, UINT); -MMRESULT midiOutShortMsg(HMIDIOUT, DWORD); -MMRESULT midiOutLongMsg(HMIDIOUT, LPMIDIHDR, UINT); -MMRESULT midiOutReset(HMIDIOUT); -MMRESULT midiOutCachePatches(HMIDIOUT, UINT, LPWORD, UINT); -MMRESULT midiOutCacheDrumPatches(HMIDIOUT, UINT, LPWORD, UINT); -MMRESULT midiOutGetID(HMIDIOUT, LPUINT); -MMRESULT midiOutMessage(HMIDIOUT, UINT, DWORD, DWORD); -UINT midiInGetNumDevs(); -MMRESULT midiInGetDevCapsA(UINT, LPMIDIINCAPSA, UINT); -MMRESULT midiInGetDevCapsW(UINT, LPMIDIINCAPSW, UINT); -MMRESULT midiInGetErrorTextA(MMRESULT, LPSTR, UINT); -MMRESULT midiInGetErrorTextW(MMRESULT, LPWSTR, UINT); -MMRESULT midiInOpen(LPHMIDIIN, UINT, DWORD, DWORD, DWORD); -MMRESULT midiInClose(HMIDIIN); -MMRESULT midiInPrepareHeader(HMIDIIN, LPMIDIHDR, UINT); -MMRESULT midiInUnprepareHeader(HMIDIIN, LPMIDIHDR, UINT); -MMRESULT midiInAddBuffer(HMIDIIN, LPMIDIHDR, UINT); -MMRESULT midiInStart(HMIDIIN); -MMRESULT midiInStop(HMIDIIN); -MMRESULT midiInReset(HMIDIIN); -MMRESULT midiInGetID(HMIDIIN, LPUINT); -MMRESULT midiInMessage(HMIDIIN, UINT, DWORD, DWORD); -UINT auxGetNumDevs(); -MMRESULT auxGetDevCapsA(UINT, LPAUXCAPSA, UINT); -MMRESULT auxGetDevCapsW(UINT, LPAUXCAPSW, UINT); -MMRESULT auxSetVolume(UINT, DWORD); -MMRESULT auxGetVolume(UINT, PDWORD); -MMRESULT auxOutMessage(UINT, UINT, DWORD, DWORD); -UINT mixerGetNumDevs(); -MMRESULT mixerGetDevCapsA(UINT, LPMIXERCAPSA, UINT); -MMRESULT mixerGetDevCapsW(UINT, LPMIXERCAPSW, UINT); -MMRESULT mixerOpen(LPHMIXER, UINT, DWORD, DWORD, DWORD); -MMRESULT mixerClose(HMIXER); -DWORD mixerMessage(HMIXER, UINT, DWORD, DWORD); -MMRESULT mixerGetLineInfoA(HMIXEROBJ, LPMIXERLINEA, DWORD); -MMRESULT mixerGetLineInfoW(HMIXEROBJ, LPMIXERLINEW, DWORD); -MMRESULT mixerGetID(HMIXEROBJ, PUINT, DWORD); -MMRESULT mixerGetLineControlsA(HMIXEROBJ, LPMIXERLINECONTROLSA, DWORD); -MMRESULT mixerGetLineControlsW(HMIXEROBJ, LPMIXERLINECONTROLSW, DWORD); -MMRESULT mixerGetControlDetailsA(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); -MMRESULT mixerGetControlDetailsW(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); -MMRESULT mixerSetControlDetails(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); -MMRESULT timeGetSystemTime(LPMMTIME, UINT); -DWORD timeGetTime(); -MMRESULT timeSetEvent(UINT, UINT, LPTIMECALLBACK, DWORD, UINT); -MMRESULT timeKillEvent(UINT); -MMRESULT timeGetDevCaps(LPTIMECAPS, UINT); -MMRESULT timeBeginPeriod(UINT); -MMRESULT timeEndPeriod(UINT); -UINT joyGetNumDevs(); -MMRESULT joyGetDevCapsA(UINT, LPJOYCAPSA, UINT); -MMRESULT joyGetDevCapsW(UINT, LPJOYCAPSW, UINT); -MMRESULT joyGetPos(UINT, LPJOYINFO); -MMRESULT joyGetPosEx(UINT, LPJOYINFOEX); -MMRESULT joyGetThreshold(UINT, LPUINT); -MMRESULT joyReleaseCapture(UINT); -MMRESULT joySetCapture(HWND, UINT, UINT, BOOL); -MMRESULT joySetThreshold(UINT, UINT); -FOURCC mmioStringToFOURCCA(LPCSTR, UINT); -FOURCC mmioStringToFOURCCW(LPCWSTR, UINT); -LPMMIOPROC mmioInstallIOProcA(FOURCC, LPMMIOPROC, DWORD); -LPMMIOPROC mmioInstallIOProcW(FOURCC, LPMMIOPROC, DWORD); -HMMIO mmioOpenA(LPSTR, LPMMIOINFO, DWORD); -HMMIO mmioOpenW(LPWSTR, LPMMIOINFO, DWORD); -MMRESULT mmioRenameA(LPCSTR, LPCSTR, LPCMMIOINFO, DWORD); -MMRESULT mmioRenameW(LPCWSTR, LPCWSTR, LPCMMIOINFO, DWORD); -MMRESULT mmioClose(HMMIO, UINT); -LONG mmioRead(HMMIO, HPSTR, LONG); -LONG mmioWrite(HMMIO, LPCSTR, LONG); -LONG mmioSeek(HMMIO, LONG, int); -MMRESULT mmioGetInfo(HMMIO, LPMMIOINFO, UINT); -MMRESULT mmioSetInfo(HMMIO, LPCMMIOINFO, UINT); -MMRESULT mmioSetBuffer(HMMIO, LPSTR, LONG, UINT); -MMRESULT mmioFlush(HMMIO, UINT); -MMRESULT mmioAdvance(HMMIO, LPMMIOINFO, UINT); -LRESULT mmioSendMessage(HMMIO, UINT, LPARAM, LPARAM); -MMRESULT mmioDescend(HMMIO, LPMMCKINFO, const(MMCKINFO)*, UINT); -MMRESULT mmioAscend(HMMIO, LPMMCKINFO, UINT); -MMRESULT mmioCreateChunk(HMMIO, LPMMCKINFO, UINT); -MCIERROR mciSendCommandA(MCIDEVICEID, UINT, DWORD, DWORD); -MCIERROR mciSendCommandW(MCIDEVICEID, UINT, DWORD, DWORD); -MCIERROR mciSendStringA(LPCSTR, LPSTR, UINT, HWND); -MCIERROR mciSendStringW(LPCWSTR, LPWSTR, UINT, HWND); -MCIDEVICEID mciGetDeviceIDA(LPCSTR); -MCIDEVICEID mciGetDeviceIDW(LPCWSTR); -MCIDEVICEID mciGetDeviceIDFromElementIDA(DWORD, LPCSTR); -MCIDEVICEID mciGetDeviceIDFromElementIDW(DWORD, LPCWSTR); -BOOL mciGetErrorStringA(MCIERROR, LPSTR, UINT); -BOOL mciGetErrorStringW(MCIERROR, LPWSTR, UINT); -BOOL mciSetYieldProc(MCIDEVICEID, YIELDPROC, DWORD); -HTASK mciGetCreatorTask(MCIDEVICEID); -YIELDPROC mciGetYieldProc(MCIDEVICEID, PDWORD); - -struct MCI_SEQ_SET_PARMS { - DWORD dwCallback; - DWORD dwTimeFormat; - DWORD dwAudio; - DWORD dwTempo; - DWORD dwPort; - DWORD dwSlave; - DWORD dwMaster; - DWORD dwOffset; -} -alias MCI_SEQ_SET_PARMS* PMCI_SEQ_SET_PARMS, LPMCI_SEQ_SET_PARMS; - -struct MCI_ANIM_OPEN_PARMSA { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCSTR lpstrDeviceType; - LPCSTR lpstrElementName; - LPCSTR lpstrAlias; - DWORD dwStyle; - HWND hWndParent; -} -alias MCI_ANIM_OPEN_PARMSA* PMCI_ANIM_OPEN_PARMSA, LPMCI_ANIM_OPEN_PARMSA; - -struct MCI_ANIM_OPEN_PARMSW { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCWSTR lpstrDeviceType; - LPCWSTR lpstrElementName; - LPCWSTR lpstrAlias; - DWORD dwStyle; - HWND hWndParent; -} -alias MCI_ANIM_OPEN_PARMSW* PMCI_ANIM_OPEN_PARMSW, LPMCI_ANIM_OPEN_PARMSW; - -struct MCI_ANIM_PLAY_PARMS { - DWORD dwCallback; - DWORD dwFrom; - DWORD dwTo; - DWORD dwSpeed; -} -alias MCI_ANIM_PLAY_PARMS* PMCI_ANIM_PLAY_PARMS, LPMCI_ANIM_PLAY_PARMS; - -struct MCI_ANIM_STEP_PARMS { - DWORD dwCallback; - DWORD dwFrames; -} -alias MCI_ANIM_STEP_PARMS* PMCI_ANIM_STEP_PARMS, LPMCI_ANIM_STEP_PARMS; - -struct MCI_ANIM_WINDOW_PARMSA { - DWORD dwCallback; - HWND hWnd; - UINT nCmdShow; - LPCSTR lpstrText; -} -alias MCI_ANIM_WINDOW_PARMSA* PMCI_ANIM_WINDOW_PARMSA, LPMCI_ANIM_WINDOW_PARMSA; - -struct MCI_ANIM_WINDOW_PARMSW { - DWORD dwCallback; - HWND hWnd; - UINT nCmdShow; - LPCWSTR lpstrText; -} -alias MCI_ANIM_WINDOW_PARMSW* PMCI_ANIM_WINDOW_PARMSW, LPMCI_ANIM_WINDOW_PARMSW; - -struct MCI_ANIM_RECT_PARMS { - DWORD dwCallback; - //#ifdef MCI_USE_OFFEXT - // POINT ptOffset; - // POINT ptExtent; - //#else - RECT rc; - //#endif -} -alias MCI_ANIM_RECT_PARMS* PMCI_ANIM_RECT_PARMS, LPMCI_ANIM_RECT_PARMS; - -struct MCI_ANIM_UPDATE_PARMS { - DWORD dwCallback; - RECT rc; - HDC hDC; -} -alias MCI_ANIM_UPDATE_PARMS* PMCI_ANIM_UPDATE_PARMS, LPMCI_ANIM_UPDATE_PARMS; - -struct MCI_OVLY_OPEN_PARMSA { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCSTR lpstrDeviceType; - LPCSTR lpstrElementName; - LPCSTR lpstrAlias; - DWORD dwStyle; - HWND hWndParent; -} -alias MCI_OVLY_OPEN_PARMSA* PMCI_OVLY_OPEN_PARMSA, LPMCI_OVLY_OPEN_PARMSA; - -struct MCI_OVLY_OPEN_PARMSW { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCWSTR lpstrDeviceType; - LPCWSTR lpstrElementName; - LPCWSTR lpstrAlias; - DWORD dwStyle; - HWND hWndParent; -} -alias MCI_OVLY_OPEN_PARMSW* PMCI_OVLY_OPEN_PARMSW, LPMCI_OVLY_OPEN_PARMSW; - -struct MCI_OVLY_WINDOW_PARMSA { - DWORD dwCallback; - HWND hWnd; - UINT nCmdShow; - LPCSTR lpstrText; -} -alias MCI_OVLY_WINDOW_PARMSA* PMCI_OVLY_WINDOW_PARMSA, LPMCI_OVLY_WINDOW_PARMSA; - -struct MCI_OVLY_WINDOW_PARMSW { - DWORD dwCallback; - HWND hWnd; - UINT nCmdShow; - LPCWSTR lpstrText; -} -alias MCI_OVLY_WINDOW_PARMSW* PMCI_OVLY_WINDOW_PARMSW, LPMCI_OVLY_WINDOW_PARMSW; - -struct MCI_OVLY_RECT_PARMS { - DWORD dwCallback; - //#ifdef MCI_USE_OFFEXT - // POINT ptOffset; - // POINT ptExtent; - //#else - RECT rc; - //#endif -} -alias MCI_OVLY_RECT_PARMS* PMCI_OVLY_RECT_PARMS, LPMCI_OVLY_RECT_PARMS; - -struct MCI_OVLY_SAVE_PARMSA { - DWORD dwCallback; - LPCSTR lpfilename; - RECT rc; -} -alias MCI_OVLY_SAVE_PARMSA* PMCI_OVLY_SAVE_PARMSA, LPMCI_OVLY_SAVE_PARMSA; - -struct MCI_OVLY_SAVE_PARMSW { - DWORD dwCallback; - LPCWSTR lpfilename; - RECT rc; -} -alias MCI_OVLY_SAVE_PARMSW* PMCI_OVLY_SAVE_PARMSW, LPMCI_OVLY_SAVE_PARMSW; - -struct MCI_OVLY_LOAD_PARMSA { - DWORD dwCallback; - LPCSTR lpfilename; - RECT rc; -} -alias MCI_OVLY_LOAD_PARMSA* PMCI_OVLY_LOAD_PARMSA, LPMCI_OVLY_LOAD_PARMSA; - -struct MCI_OVLY_LOAD_PARMSW { - DWORD dwCallback; - LPCWSTR lpfilename; - RECT rc; -} -alias MCI_OVLY_LOAD_PARMSW* PMCI_OVLY_LOAD_PARMSW, LPMCI_OVLY_LOAD_PARMSW; - -version(Unicode) { - alias WAVEOUTCAPSW WAVEOUTCAPS; - alias WAVEINCAPSW WAVEINCAPS; - alias MIDIOUTCAPSW MIDIOUTCAPS; - alias MIDIINCAPSW MIDIINCAPS; - alias AUXCAPSW AUXCAPS; - alias MIXERCAPSW MIXERCAPS; - alias MIXERLINEW MIXERLINE; - alias MIXERCONTROLA MIXERCONTROL; - alias MIXERLINECONTROLSW MIXERLINECONTROLS; - alias MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT; - alias JOYCAPSW JOYCAPS; - alias MCI_OPEN_PARMSW MCI_OPEN_PARMS; - alias MCI_INFO_PARMSW MCI_INFO_PARMS; - alias MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS; - alias MCI_SAVE_PARMSW MCI_SAVE_PARMS; - alias MCI_LOAD_PARMSW MCI_LOAD_PARMS; - alias MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS; - alias MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS; - alias MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS; - alias MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS; - alias MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS; - alias MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS; - alias MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS; - - alias sndPlaySoundW sndPlaySound; - alias PlaySoundW PlaySound; - alias waveOutGetDevCapsW waveOutGetDevCaps; - alias waveOutGetErrorTextW waveOutGetErrorText; - alias waveInGetDevCapsW waveInGetDevCaps; - alias waveInGetErrorTextW waveInGetErrorText; - alias midiOutGetDevCapsW midiOutGetDevCaps; - alias midiOutGetErrorTextW midiOutGetErrorText; - alias midiInGetDevCapsW midiInGetDevCaps; - alias midiInGetErrorTextW midiInGetErrorText; - alias auxGetDevCapsW auxGetDevCaps; - alias mixerGetDevCapsW mixerGetDevCaps; - alias mixerGetLineInfoW mixerGetLineInfo; - alias mixerGetLineControlsW mixerGetLineControls; - alias mixerGetControlDetailsW mixerGetControlDetails; - alias joyGetDevCapsW joyGetDevCaps; - alias mmioInstallIOProcW mmioInstallIOProc; - alias mmioStringToFOURCCW mmioStringToFOURCC; - alias mmioOpenW mmioOpen; - alias mmioRenameW mmioRename; - alias mciSendCommandW mciSendCommand; - alias mciSendStringW mciSendString; - alias mciGetDeviceIDW mciGetDeviceID; - alias mciGetDeviceIDFromElementIDW mciGetDeviceIDFromElementID; - alias mciGetErrorStringW mciGetErrorString; - -} else { - alias WAVEOUTCAPSA WAVEOUTCAPS; - alias WAVEINCAPSA WAVEINCAPS; - alias MIDIOUTCAPSA MIDIOUTCAPS; - alias MIDIINCAPSA MIDIINCAPS; - alias AUXCAPSA AUXCAPS; - alias MIXERCAPSA MIXERCAPS; - alias MIXERLINEA MIXERLINE; - alias MIXERCONTROLA MIXERCONTROL; - alias MIXERLINECONTROLSA MIXERLINECONTROLS; - alias MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT; - alias JOYCAPSA JOYCAPS; - alias MCI_OPEN_PARMSA MCI_OPEN_PARMS; - alias MCI_INFO_PARMSA MCI_INFO_PARMS; - alias MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS; - alias MCI_SAVE_PARMSA MCI_SAVE_PARMS; - alias MCI_LOAD_PARMSA MCI_LOAD_PARMS; - alias MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS; - alias MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS; - alias MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS; - alias MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS; - alias MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS; - alias MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS; - alias MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS; - - alias sndPlaySoundA sndPlaySound; - alias PlaySoundA PlaySound; - alias waveOutGetDevCapsA waveOutGetDevCaps; - alias waveOutGetErrorTextA waveOutGetErrorText; - alias waveInGetDevCapsA waveInGetDevCaps; - alias waveInGetErrorTextA waveInGetErrorText; - alias midiOutGetDevCapsA midiOutGetDevCaps; - alias midiOutGetErrorTextA midiOutGetErrorText; - alias midiInGetDevCapsA midiInGetDevCaps; - alias midiInGetErrorTextA midiInGetErrorText; - alias auxGetDevCapsA auxGetDevCaps; - alias mixerGetDevCapsA mixerGetDevCaps; - alias mixerGetLineInfoA mixerGetLineInfo; - alias mixerGetLineControlsA mixerGetLineControls; - alias mixerGetControlDetailsA mixerGetControlDetails; - alias joyGetDevCapsA joyGetDevCaps; - alias mmioInstallIOProcA mmioInstallIOProc; - alias mmioStringToFOURCCA mmioStringToFOURCC; - alias mmioOpenA mmioOpen; - alias mmioRenameA mmioRename; - alias mciSendCommandA mciSendCommand; - alias mciSendStringA mciSendString; - alias mciGetDeviceIDA mciGetDeviceID; - alias mciGetDeviceIDFromElementIDA mciGetDeviceIDFromElementID; - alias mciGetErrorStringA mciGetErrorString; -} - -alias WAVEOUTCAPS* PWAVEOUTCAPS, LPWAVEOUTCAPS; -alias WAVEINCAPS* PWAVEINCAPS, LPWAVEINCAPS; -alias MIDIOUTCAPS* PMIDIOUTCAPS, LPMIDIOUTCAPS; -alias MIDIINCAPS* PMIDIINCAPS, LPMIDIINCAPS; -alias AUXCAPS* PAUXCAPS, LPAUXCAPS; -alias MIXERCAPS* PMIXERCAPS, LPMIXERCAPS; -alias MIXERLINE* PMIXERLINE, LPMIXERLINE; -alias MIXERCONTROL* PMIXERCONTROL, LPMIXERCONTROL; -alias MIXERLINECONTROLS* PMIXERLINECONTROLS, LPMIXERLINECONTROLS; -alias MIXERCONTROLDETAILS_LISTTEXT* PMIXERCONTROLDETAILS_LISTTEXT, LPMIXERCONTROLDETAILS_LISTTEXT; -alias JOYCAPS* PJOYCAPS, LPJOYCAPS; -alias MCI_OPEN_PARMS* PMCI_OPEN_PARMS, LPMCI_OPEN_PARMS; -alias MCI_INFO_PARMS* LPMCI_INFO_PARMS; -alias MCI_SYSINFO_PARMS* PMCI_SYSINFO_PARMS, LPMCI_SYSINFO_PARMS; -alias MCI_SAVE_PARMS* PMCI_SAVE_PARMS, LPMCI_SAVE_PARMS; -alias MCI_LOAD_PARMS* PMCI_LOAD_PARMS, LPMCI_LOAD_PARMS; -alias MCI_VD_ESCAPE_PARMS* PMCI_VD_ESCAPE_PARMS, LPMCI_VD_ESCAPE_PARMS; -alias MCI_WAVE_OPEN_PARMS* PMCI_WAVE_OPEN_PARMS, LPMCI_WAVE_OPEN_PARMS; -alias MCI_ANIM_OPEN_PARMS* PMCI_ANIM_OPEN_PARMS, LPMCI_ANIM_OPEN_PARMS; -alias MCI_ANIM_WINDOW_PARMS* PMCI_ANIM_WINDOW_PARMS, LPMCI_ANIM_WINDOW_PARMS; -alias MCI_OVLY_OPEN_PARMS* PMCI_OVLY_OPEN_PARMS, LPMCI_OVLY_OPEN_PARMS; -alias MCI_OVLY_WINDOW_PARMS* PMCI_OVLY_WINDOW_PARMS, LPMCI_OVLY_WINDOW_PARMS; -alias MCI_OVLY_SAVE_PARMS* PMCI_OVLY_SAVE_PARMS, LPMCI_OVLY_SAVE_PARMS; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mmsystem.d) + */ +module core.sys.windows.mmsystem; +pragma(lib, "winmm"); + +/* The #defines MAKEFOURCC, mmioFOURCC, sndAlias are used to define + * compile-time constants, so they are implemented as templates. + */ + +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winver; + +align(1): + +const MAXPNAMELEN = 32; +const MAXERRORLENGTH = 256; +const MAX_JOYSTICKOEMVXDNAME = 260; + +const TIME_MS = 1; +const TIME_SAMPLES = 2; +const TIME_BYTES = 4; +const TIME_SMPTE = 8; +const TIME_MIDI = 16; +const TIME_TICKS = 32; + +template MAKEFOURCC(char c0, char c1, char c2, char c3) +{ + const DWORD MAKEFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); +} + +template mmioFOURCC(char c0, char c1, char c2, char c3) +{ + const DWORD mmioFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); +} + +enum { + MM_JOY1MOVE = 0x3A0, + MM_JOY2MOVE, + MM_JOY1ZMOVE, + MM_JOY2ZMOVE, // = 0x3A3 + MM_JOY1BUTTONDOWN = 0x3B5, + MM_JOY2BUTTONDOWN, + MM_JOY1BUTTONUP, + MM_JOY2BUTTONUP, + MM_MCINOTIFY, // = 0x3B9 + MM_WOM_OPEN = 0x3BB, + MM_WOM_CLOSE, + MM_WOM_DONE, + MM_WIM_OPEN, + MM_WIM_CLOSE, + MM_WIM_DATA, + MM_MIM_OPEN, + MM_MIM_CLOSE, + MM_MIM_DATA, + MM_MIM_LONGDATA, + MM_MIM_ERROR, + MM_MIM_LONGERROR, + MM_MOM_OPEN, + MM_MOM_CLOSE, + MM_MOM_DONE, // = 0x3C9 + MM_DRVM_OPEN = 0x3D0, + MM_DRVM_CLOSE, + MM_DRVM_DATA, + MM_DRVM_ERROR, + MM_STREAM_OPEN, + MM_STREAM_CLOSE, + MM_STREAM_DONE, + MM_STREAM_ERROR, // = 0x3D7 + MM_MOM_POSITIONCB = 0x3CA, + MM_MCISIGNAL, + MM_MIM_MOREDATA, // = 0x3CC + MM_MIXM_LINE_CHANGE = 0x3D0, + MM_MIXM_CONTROL_CHANGE = 0x3D1 +} + +const MMSYSERR_BASE = 0; +const WAVERR_BASE = 32; +const MIDIERR_BASE = 64; +const TIMERR_BASE = 96; +const JOYERR_BASE = 160; +const MCIERR_BASE = 256; +const MIXERR_BASE = 1024; +const MCI_STRING_OFFSET = 512; +const MCI_VD_OFFSET = 1024; +const MCI_CD_OFFSET = 1088; +const MCI_WAVE_OFFSET = 1152; +const MCI_SEQ_OFFSET = 1216; + +enum { + MMSYSERR_NOERROR = 0, + MMSYSERR_ERROR = MMSYSERR_BASE+1, + MMSYSERR_BADDEVICEID, + MMSYSERR_NOTENABLED, + MMSYSERR_ALLOCATED, + MMSYSERR_INVALHANDLE, + MMSYSERR_NODRIVER, + MMSYSERR_NOMEM, + MMSYSERR_NOTSUPPORTED, + MMSYSERR_BADERRNUM, + MMSYSERR_INVALFLAG, + MMSYSERR_INVALPARAM, + MMSYSERR_HANDLEBUSY, + MMSYSERR_INVALIDALIAS, + MMSYSERR_BADDB, + MMSYSERR_KEYNOTFOUND, + MMSYSERR_READERROR, + MMSYSERR_WRITEERROR, + MMSYSERR_DELETEERROR, + MMSYSERR_VALNOTFOUND, + MMSYSERR_NODRIVERCB, // = MMSYSERR_BASE+20 + MMSYSERR_LASTERROR = MMSYSERR_NODRIVERCB +} + +enum { + DRV_LOAD = 1, + DRV_ENABLE, + DRV_OPEN, + DRV_CLOSE, + DRV_DISABLE, + DRV_FREE, + DRV_CONFIGURE, + DRV_QUERYCONFIGURE, + DRV_INSTALL, + DRV_REMOVE, + DRV_EXITSESSION, + DRV_POWER +} + +const DRV_RESERVED = 0x800; +const DRV_USER = 0x4000; + +const DRVCNF_CANCEL = 0; +const DRVCNF_OK = 1; +const DRVCNF_RESTART = 2; +const DRV_CANCEL = DRVCNF_CANCEL; +const DRV_OK = DRVCNF_OK; +const DRV_RESTART = DRVCNF_RESTART; +const DRV_MCI_FIRST = DRV_RESERVED; +const DRV_MCI_LAST = DRV_RESERVED + 0xFFF; + +const CALLBACK_TYPEMASK = 0x70000; +const CALLBACK_NULL = 0; +const CALLBACK_WINDOW = 0x10000; +const CALLBACK_TASK = 0x20000; +const CALLBACK_FUNCTION = 0x30000; +const CALLBACK_THREAD = CALLBACK_TASK; +const CALLBACK_EVENT = 0x50000; + +const SND_SYNC=0; +const SND_ASYNC=1; +const SND_NODEFAULT=2; +const SND_MEMORY=4; +const SND_LOOP=8; +const SND_NOSTOP=16; +const SND_NOWAIT=0x2000; +const SND_ALIAS=0x10000; +const SND_ALIAS_ID=0x110000; +const SND_FILENAME=0x20000; +const SND_RESOURCE=0x40004; +const SND_PURGE=0x40; +const SND_APPLICATION=0x80; +const SND_ALIAS_START=0; + +template sndAlias(char c0, char c1) +{ + const DWORD sndAlias = SND_ALIAS_START + c0 | (c1<<8); +} + +const SND_ALIAS_SYSTEMASTERISK = sndAlias!('S', '*'); +const SND_ALIAS_SYSTEMQUESTION = sndAlias!('S', '?'); +const SND_ALIAS_SYSTEMHAND = sndAlias!('S', 'H'); +const SND_ALIAS_SYSTEMEXIT = sndAlias!('S', 'E'); +const SND_ALIAS_SYSTEMSTART = sndAlias!('S', 'S'); +const SND_ALIAS_SYSTEMWELCOME = sndAlias!('S', 'W'); +const SND_ALIAS_SYSTEMEXCLAMATION = sndAlias!('S', '!'); +const SND_ALIAS_SYSTEMDEFAULT = sndAlias!('S', 'D'); + +enum { + WAVERR_BADFORMAT = (WAVERR_BASE + 0), + WAVERR_STILLPLAYING, + WAVERR_UNPREPARED, + WAVERR_SYNC, // = WAVERR_BASE + 3; + WAVERR_LASTERROR = WAVERR_SYNC +} + +const WOM_OPEN = MM_WOM_OPEN; +const WOM_CLOSE = MM_WOM_CLOSE; +const WOM_DONE = MM_WOM_DONE; +const WIM_OPEN = MM_WIM_OPEN; +const WIM_CLOSE = MM_WIM_CLOSE; +const WIM_DATA = MM_WIM_DATA; + +const UINT WAVE_MAPPER= -1; // FIXME: This doesn't make sense! +const WAVE_FORMAT_QUERY=1; +const WAVE_ALLOWSYNC=2; +const WAVE_MAPPED=4; +const WAVE_FORMAT_DIRECT=8; +const WAVE_FORMAT_DIRECT_QUERY=(WAVE_FORMAT_QUERY|WAVE_FORMAT_DIRECT); +const WHDR_DONE=1; +const WHDR_PREPARED=2; +const WHDR_BEGINLOOP=4; +const WHDR_ENDLOOP=8; +const WHDR_INQUEUE=16; + +const WAVECAPS_PITCH=1; +const WAVECAPS_PLAYBACKRATE=2; +const WAVECAPS_VOLUME=4; +const WAVECAPS_LRVOLUME=8; +const WAVECAPS_SYNC=16; +const WAVECAPS_SAMPLEACCURATE=32; +const WAVECAPS_DIRECTSOUND=64; + +const WAVE_INVALIDFORMAT=0; +const WAVE_FORMAT_1M08=1; +const WAVE_FORMAT_1S08=2; +const WAVE_FORMAT_1M16=4; +const WAVE_FORMAT_1S16=8; +const WAVE_FORMAT_2M08=16; +const WAVE_FORMAT_2S08=32; +const WAVE_FORMAT_2M16=64; +const WAVE_FORMAT_2S16=128; +const WAVE_FORMAT_4M08=256; +const WAVE_FORMAT_4S08=512; +const WAVE_FORMAT_4M16=1024; +const WAVE_FORMAT_4S16=2048; +const WAVE_FORMAT_PCM=1; + +enum { + MIDIERR_UNPREPARED = MIDIERR_BASE, + MIDIERR_STILLPLAYING, + MIDIERR_NOMAP, + MIDIERR_NOTREADY, + MIDIERR_NODEVICE, + MIDIERR_INVALIDSETUP, + MIDIERR_BADOPENMODE, + MIDIERR_DONT_CONTINUE, // = MIDIERR_BASE+7 + MIDIERR_LASTERROR = MIDIERR_DONT_CONTINUE +} + +const MIDIPATCHSIZE=128; + +const MIM_OPEN=MM_MIM_OPEN; +const MIM_CLOSE=MM_MIM_CLOSE; +const MIM_DATA=MM_MIM_DATA; +const MIM_LONGDATA=MM_MIM_LONGDATA; +const MIM_ERROR=MM_MIM_ERROR; +const MIM_LONGERROR=MM_MIM_LONGERROR; +const MOM_OPEN=MM_MOM_OPEN; +const MOM_CLOSE=MM_MOM_CLOSE; +const MOM_DONE=MM_MOM_DONE; +const MIM_MOREDATA=MM_MIM_MOREDATA; +const MOM_POSITIONCB=MM_MOM_POSITIONCB; + +const UINT MIDIMAPPER= -1; // FIXME: uint is nonsense for this! +const UINT MIDI_MAPPER= -1; // FIXME: uint is nonsense for this! +const MIDI_IO_STATUS=32; +const MIDI_CACHE_ALL=1; +const MIDI_CACHE_BESTFIT=2; +const MIDI_CACHE_QUERY=3; +const MIDI_UNCACHE=4; +const MOD_MIDIPORT=1; +const MOD_SYNTH=2; +const MOD_SQSYNTH=3; +const MOD_FMSYNTH=4; +const MOD_MAPPER=5; +const MIDICAPS_VOLUME=1; +const MIDICAPS_LRVOLUME=2; +const MIDICAPS_CACHE=4; +const MIDICAPS_STREAM=8; +const MHDR_DONE=1; +const MHDR_PREPARED=2; +const MHDR_INQUEUE=4; +const MHDR_ISSTRM=8; +const MEVT_F_SHORT=0; +const MEVT_F_LONG=0x80000000; +const MEVT_F_CALLBACK=0x40000000; + +BYTE MEVT_EVENTTYPE(DWORD x) { return cast(BYTE)((x>>24) &0xFF); } +DWORD MEVT_EVENTPARM(DWORD x) { return x & 0xFFFFFF; } + +const MEVT_SHORTMSG=0; +const MEVT_TEMPO=1; +const MEVT_NOP=2; + +const BYTE MEVT_LONGMSG = 0x80; +const BYTE MEVT_COMMENT = 0x82; +const BYTE MEVT_VERSION = 0x84; + +const MIDISTRM_ERROR = -2; + +const MIDIPROP_SET = 0x80000000; +const MIDIPROP_GET = 0x40000000; +const MIDIPROP_TIMEDIV = 1; +const MIDIPROP_TEMPO = 2; + +const UINT AUX_MAPPER = -1; + +const AUXCAPS_CDAUDIO=1; +const AUXCAPS_AUXIN=2; +const AUXCAPS_VOLUME=1; +const AUXCAPS_LRVOLUME=2; +const MIXER_SHORT_NAME_CHARS=16; +const MIXER_LONG_NAME_CHARS=64; +const MIXERR_INVALLINE=MIXERR_BASE; +const MIXERR_INVALCONTROL=(MIXERR_BASE+1); +const MIXERR_INVALVALUE=(MIXERR_BASE+2); +const MIXERR_LASTERROR=(MIXERR_BASE+2); + +const MIXER_OBJECTF_HANDLE=0x80000000; +const MIXER_OBJECTF_MIXER=0; +const MIXER_OBJECTF_HMIXER=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER); +const MIXER_OBJECTF_WAVEOUT=0x10000000; +const MIXER_OBJECTF_HWAVEOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT); +const MIXER_OBJECTF_WAVEIN=0x20000000; +const MIXER_OBJECTF_HWAVEIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN); +const MIXER_OBJECTF_MIDIOUT=0x30000000; +const MIXER_OBJECTF_HMIDIOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT); +const MIXER_OBJECTF_MIDIIN=0x40000000; +const MIXER_OBJECTF_HMIDIIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN); +const MIXER_OBJECTF_AUX=0x50000000; + +const MIXERLINE_LINEF_ACTIVE=1; +const MIXERLINE_LINEF_DISCONNECTED=0x8000; +const MIXERLINE_LINEF_SOURCE=0x80000000; + +const MIXERLINE_COMPONENTTYPE_DST_FIRST=0; +const MIXERLINE_COMPONENTTYPE_DST_UNDEFINED=MIXERLINE_COMPONENTTYPE_DST_FIRST; +const MIXERLINE_COMPONENTTYPE_DST_DIGITAL=(MIXERLINE_COMPONENTTYPE_DST_FIRST+1); +const MIXERLINE_COMPONENTTYPE_DST_LINE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+2); +const MIXERLINE_COMPONENTTYPE_DST_MONITOR=(MIXERLINE_COMPONENTTYPE_DST_FIRST+3); +const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS=(MIXERLINE_COMPONENTTYPE_DST_FIRST+4); +const MIXERLINE_COMPONENTTYPE_DST_HEADPHONES=(MIXERLINE_COMPONENTTYPE_DST_FIRST+5); +const MIXERLINE_COMPONENTTYPE_DST_TELEPHONE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+6); +const MIXERLINE_COMPONENTTYPE_DST_WAVEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+7); +const MIXERLINE_COMPONENTTYPE_DST_VOICEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); +const MIXERLINE_COMPONENTTYPE_DST_LAST=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); +const MIXERLINE_COMPONENTTYPE_SRC_FIRST=0x1000; +const MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED=MIXERLINE_COMPONENTTYPE_SRC_FIRST; +const MIXERLINE_COMPONENTTYPE_SRC_DIGITAL=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+1); +const MIXERLINE_COMPONENTTYPE_SRC_LINE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+2); +const MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+3); +const MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+4); +const MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+5); +const MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+6); +const MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+7); +const MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+8); +const MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+9); +const MIXERLINE_COMPONENTTYPE_SRC_ANALOG=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); +const MIXERLINE_COMPONENTTYPE_SRC_LAST=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); + +enum { + MIXERLINE_TARGETTYPE_UNDEFINED = 0, + MIXERLINE_TARGETTYPE_WAVEOUT, + MIXERLINE_TARGETTYPE_WAVEIN, + MIXERLINE_TARGETTYPE_MIDIOUT, + MIXERLINE_TARGETTYPE_MIDIIN, + MIXERLINE_TARGETTYPE_AUX // =5 +} + +const MIXER_GETLINEINFOF_DESTINATION=0; +const MIXER_GETLINEINFOF_SOURCE=1; +const MIXER_GETLINEINFOF_LINEID=2; +const MIXER_GETLINEINFOF_COMPONENTTYPE=3; +const MIXER_GETLINEINFOF_TARGETTYPE=4; +const MIXER_GETLINEINFOF_QUERYMASK=15; + +const MIXERCONTROL_CONTROLF_UNIFORM=1; +const MIXERCONTROL_CONTROLF_MULTIPLE=2; +const MIXERCONTROL_CONTROLF_DISABLED=0x80000000; +const MIXERCONTROL_CT_CLASS_MASK=0xF0000000; +const MIXERCONTROL_CT_CLASS_CUSTOM=0; +const MIXERCONTROL_CT_CLASS_METER=0x10000000; +const MIXERCONTROL_CT_CLASS_SWITCH=0x20000000; +const MIXERCONTROL_CT_CLASS_NUMBER=0x30000000; +const MIXERCONTROL_CT_CLASS_SLIDER=0x40000000; +const MIXERCONTROL_CT_CLASS_FADER=0x50000000; +const MIXERCONTROL_CT_CLASS_TIME=0x60000000; +const MIXERCONTROL_CT_CLASS_LIST=0x70000000; +const MIXERCONTROL_CT_SUBCLASS_MASK=0xF000000; +const MIXERCONTROL_CT_SC_SWITCH_BOOLEAN=0; +const MIXERCONTROL_CT_SC_SWITCH_BUTTON=0x1000000; +const MIXERCONTROL_CT_SC_METER_POLLED=0; +const MIXERCONTROL_CT_SC_TIME_MICROSECS=0; +const MIXERCONTROL_CT_SC_TIME_MILLISECS=0x1000000; +const MIXERCONTROL_CT_SC_LIST_SINGLE=0; +const MIXERCONTROL_CT_SC_LIST_MULTIPLE=0x1000000; +const MIXERCONTROL_CT_UNITS_MASK=0xFF0000; +const MIXERCONTROL_CT_UNITS_CUSTOM=0; +const MIXERCONTROL_CT_UNITS_BOOLEAN=0x10000; +const MIXERCONTROL_CT_UNITS_SIGNED=0x20000; +const MIXERCONTROL_CT_UNITS_UNSIGNED=0x30000; +const MIXERCONTROL_CT_UNITS_DECIBELS=0x40000; +const MIXERCONTROL_CT_UNITS_PERCENT=0x50000; + +const MIXERCONTROL_CONTROLTYPE_CUSTOM=(MIXERCONTROL_CT_CLASS_CUSTOM|MIXERCONTROL_CT_UNITS_CUSTOM); +const MIXERCONTROL_CONTROLTYPE_BOOLEANMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_SIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_SIGNED); +const MIXERCONTROL_CONTROLTYPE_PEAKMETER=(MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1); +const MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_BOOLEAN=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BOOLEAN|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_ONOFF=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+1); +const MIXERCONTROL_CONTROLTYPE_MUTE=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+2); +const MIXERCONTROL_CONTROLTYPE_MONO=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+3); +const MIXERCONTROL_CONTROLTYPE_LOUDNESS=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+4); +const MIXERCONTROL_CONTROLTYPE_STEREOENH=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+5); +const MIXERCONTROL_CONTROLTYPE_BUTTON=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BUTTON|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_DECIBELS=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_DECIBELS); +const MIXERCONTROL_CONTROLTYPE_SIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_SIGNED); +const MIXERCONTROL_CONTROLTYPE_UNSIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_PERCENT=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_PERCENT); +const MIXERCONTROL_CONTROLTYPE_SLIDER=(MIXERCONTROL_CT_CLASS_SLIDER|MIXERCONTROL_CT_UNITS_SIGNED); +const MIXERCONTROL_CONTROLTYPE_PAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+1); +const MIXERCONTROL_CONTROLTYPE_QSOUNDPAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+2); +const MIXERCONTROL_CONTROLTYPE_FADER=(MIXERCONTROL_CT_CLASS_FADER|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_VOLUME=(MIXERCONTROL_CONTROLTYPE_FADER+1); +const MIXERCONTROL_CONTROLTYPE_BASS=(MIXERCONTROL_CONTROLTYPE_FADER+2); +const MIXERCONTROL_CONTROLTYPE_TREBLE=(MIXERCONTROL_CONTROLTYPE_FADER+3); +const MIXERCONTROL_CONTROLTYPE_EQUALIZER=(MIXERCONTROL_CONTROLTYPE_FADER+4); +const MIXERCONTROL_CONTROLTYPE_SINGLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_SINGLE|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_MUX=(MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1); +const MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_MULTIPLE|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_MIXER=(MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1); +const MIXERCONTROL_CONTROLTYPE_MICROTIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MICROSECS|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_MILLITIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MILLISECS|MIXERCONTROL_CT_UNITS_UNSIGNED); + +const MIXER_GETLINECONTROLSF_ALL=0; +const MIXER_GETLINECONTROLSF_ONEBYID=1; +const MIXER_GETLINECONTROLSF_ONEBYTYPE=2; +const MIXER_GETLINECONTROLSF_QUERYMASK=15; +const MIXER_GETCONTROLDETAILSF_VALUE=0; +const MIXER_GETCONTROLDETAILSF_LISTTEXT=1; +const MIXER_GETCONTROLDETAILSF_QUERYMASK=15; +const MIXER_SETCONTROLDETAILSF_VALUE=0; +const MIXER_SETCONTROLDETAILSF_CUSTOM=1; +const MIXER_SETCONTROLDETAILSF_QUERYMASK=15; + +const TIMERR_NOERROR=0; +const TIMERR_NOCANDO=(TIMERR_BASE+1); +const TIMERR_STRUCT=(TIMERR_BASE+33); +const TIME_ONESHOT=0; +const TIME_PERIODIC=1; +const TIME_CALLBACK_FUNCTION=0; +const TIME_CALLBACK_EVENT_SET=16; +const TIME_CALLBACK_EVENT_PULSE=32; + +static if (_WIN32_WINNT >= 0x501) { + +const TIME_KILL_SYNCHRONOUS=0x0100; + +} + +const JOYERR_NOERROR = 0; +const JOYERR_PARMS=(JOYERR_BASE+5); +const JOYERR_NOCANDO=(JOYERR_BASE+6); +const JOYERR_UNPLUGGED=(JOYERR_BASE+7); + +const JOY_BUTTON1=1; +const JOY_BUTTON2=2; +const JOY_BUTTON3=4; +const JOY_BUTTON4=8; +const JOY_BUTTON1CHG=256; +const JOY_BUTTON2CHG=512; +const JOY_BUTTON3CHG=1024; +const JOY_BUTTON4CHG=2048; +const JOY_BUTTON5=257; +const JOY_BUTTON6=513; +const JOY_BUTTON7=1025; +const JOY_BUTTON8=2049; +const JOY_BUTTON9=256; +const JOY_BUTTON10=512; +const JOY_BUTTON11=1024; +const JOY_BUTTON12=2048; +const JOY_BUTTON13=4096; +const JOY_BUTTON14=8192; +const JOY_BUTTON15=16384; +const JOY_BUTTON16=32768; +const JOY_BUTTON17=65536; +const JOY_BUTTON18=0x20000; +const JOY_BUTTON19=0x40000; +const JOY_BUTTON20=0x80000; +const JOY_BUTTON21=0x100000; +const JOY_BUTTON22=0x200000; +const JOY_BUTTON23=0x400000; +const JOY_BUTTON24=0x800000; +const JOY_BUTTON25=0x1000000; +const JOY_BUTTON26=0x2000000; +const JOY_BUTTON27=0x4000000; +const JOY_BUTTON28=0x8000000; +const JOY_BUTTON29=0x10000000; +const JOY_BUTTON30=0x20000000; +const JOY_BUTTON31=0x40000000; +const JOY_BUTTON32=0x80000000; + +enum : DWORD { + JOY_POVCENTERED = -1, + JOY_POVFORWARD = 0, + JOY_POVBACKWARD = 18000, + JOY_POVLEFT = 27000, + JOY_POVRIGHT = 9000 +} + +const DWORD + JOY_RETURNX = 0x00000001, + JOY_RETURNY = 0x00000002, + JOY_RETURNZ = 0x00000004, + JOY_RETURNR = 0x00000008, + JOY_RETURNU = 0x00000010, + JOY_RETURNV = 0x00000020, + JOY_RETURNPOV = 0x00000040, + JOY_RETURNBUTTONS = 0x00000080, + JOY_RETURNRAWDATA = 0x00000100, + JOY_RETURNPOVCTS = 0x00000200, + JOY_RETURNCENTERED = 0x00000400, + JOY_USEDEADZONE = 0x00000800, + JOY_RETURNALL = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR + | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV + | JOY_RETURNBUTTONS, + JOY_CAL_READALWAYS = 0x00010000, + JOY_CAL_READXYONLY = 0x00020000, + JOY_CAL_READ3 = 0x00040000, + JOY_CAL_READ4 = 0x00080000, + JOY_CAL_READXONLY = 0x00100000, + JOY_CAL_READYONLY = 0x00200000, + JOY_CAL_READ5 = 0x00400000, + JOY_CAL_READ6 = 0x00800000, + JOY_CAL_READZONLY = 0x01000000, + JOY_CAL_READRONLY = 0x02000000, + JOY_CAL_READUONLY = 0x04000000, + JOY_CAL_READVONLY = 0x08000000; + +const JOYSTICKID1=0; +const JOYSTICKID2=1; + +const JOYCAPS_HASZ=1; +const JOYCAPS_HASR=2; +const JOYCAPS_HASU=4; +const JOYCAPS_HASV=8; +const JOYCAPS_HASPOV=16; +const JOYCAPS_POV4DIR=32; +const JOYCAPS_POVCTS=64; + +const MMIOERR_BASE=256; +const MMIOERR_FILENOTFOUND=(MMIOERR_BASE+1); +const MMIOERR_OUTOFMEMORY=(MMIOERR_BASE+2); +const MMIOERR_CANNOTOPEN=(MMIOERR_BASE+3); +const MMIOERR_CANNOTCLOSE=(MMIOERR_BASE+4); +const MMIOERR_CANNOTREAD=(MMIOERR_BASE+5); +const MMIOERR_CANNOTWRITE=(MMIOERR_BASE+6); +const MMIOERR_CANNOTSEEK=(MMIOERR_BASE+7); +const MMIOERR_CANNOTEXPAND=(MMIOERR_BASE+8); +const MMIOERR_CHUNKNOTFOUND=(MMIOERR_BASE+9); +const MMIOERR_UNBUFFERED=(MMIOERR_BASE+10); +const MMIOERR_PATHNOTFOUND=(MMIOERR_BASE+11); +const MMIOERR_ACCESSDENIED=(MMIOERR_BASE+12); +const MMIOERR_SHARINGVIOLATION=(MMIOERR_BASE+13); +const MMIOERR_NETWORKERROR=(MMIOERR_BASE+14); +const MMIOERR_TOOMANYOPENFILES=(MMIOERR_BASE+15); +const MMIOERR_INVALIDFILE=(MMIOERR_BASE+16); + +const CFSEPCHAR='+'; + +const MMIO_RWMODE=3; +const MMIO_SHAREMODE=0x70; +const MMIO_CREATE=0x1000; +const MMIO_PARSE=256; +const MMIO_DELETE=512; +const MMIO_EXIST=0x4000; +const MMIO_ALLOCBUF=0x10000; +const MMIO_GETTEMP=0x20000; +const MMIO_DIRTY=0x10000000; +const MMIO_READ=0; +const MMIO_WRITE=1; +const MMIO_READWRITE=2; +const MMIO_COMPAT=0; +const MMIO_EXCLUSIVE=16; +const MMIO_DENYWRITE=32; +const MMIO_DENYREAD=0x30; +const MMIO_DENYNONE=64; +const MMIO_FHOPEN=16; +const MMIO_EMPTYBUF=16; +const MMIO_TOUPPER=16; +const MMIO_INSTALLPROC=0x10000; +const MMIO_GLOBALPROC=0x10000000; +const MMIO_REMOVEPROC=0x20000; +const MMIO_UNICODEPROC=0x1000000; +const MMIO_FINDPROC=0x40000; +const MMIO_FINDCHUNK=16; +const MMIO_FINDRIFF=32; +const MMIO_FINDLIST=64; +const MMIO_CREATERIFF=32; +const MMIO_CREATELIST=64; +const MMIOM_READ=MMIO_READ; +const MMIOM_WRITE=MMIO_WRITE; +const MMIOM_SEEK=2; +const MMIOM_OPEN=3; +const MMIOM_CLOSE=4; +const MMIOM_WRITEFLUSH=5; +const MMIOM_RENAME=6; +const MMIOM_USER=0x8000; + +const FOURCC_RIFF = mmioFOURCC!('R', 'I', 'F', 'F'); +const FOURCC_LIST = mmioFOURCC!('L', 'I', 'S', 'T'); +const FOURCC_DOS = mmioFOURCC!('D', 'O', 'S', ' '); +const FOURCC_MEM = mmioFOURCC!('M', 'E', 'M', ' '); + +const MMIO_DEFAULTBUFFER=8192; + +enum { + MCIERR_INVALID_DEVICE_ID = MCIERR_BASE + 1, + MCIERR_UNRECOGNIZED_KEYWORD = MCIERR_BASE + 3, + MCIERR_UNRECOGNIZED_COMMAND = MCIERR_BASE + 5, + MCIERR_HARDWARE, + MCIERR_INVALID_DEVICE_NAME, + MCIERR_OUT_OF_MEMORY, + MCIERR_DEVICE_OPEN, + MCIERR_CANNOT_LOAD_DRIVER, + MCIERR_MISSING_COMMAND_STRING, + MCIERR_PARAM_OVERFLOW, + MCIERR_MISSING_STRING_ARGUMENT, + MCIERR_BAD_INTEGER, + MCIERR_PARSER_INTERNAL, + MCIERR_DRIVER_INTERNAL, + MCIERR_MISSING_PARAMETER, + MCIERR_UNSUPPORTED_FUNCTION, + MCIERR_FILE_NOT_FOUND, + MCIERR_DEVICE_NOT_READY, + MCIERR_INTERNAL, + MCIERR_DRIVER, + MCIERR_CANNOT_USE_ALL, + MCIERR_MULTIPLE, + MCIERR_EXTENSION_NOT_FOUND, + MCIERR_OUTOFRANGE, // = MCIERR_BASE+26 + MCIERR_FLAGS_NOT_COMPATIBLE = MCIERR_BASE + 28, + MCIERR_FILE_NOT_SAVED = MCIERR_BASE + 30, + MCIERR_DEVICE_TYPE_REQUIRED, + MCIERR_DEVICE_LOCKED, + MCIERR_DUPLICATE_ALIAS, + MCIERR_BAD_CONSTANT, + MCIERR_MUST_USE_SHAREABLE, + MCIERR_MISSING_DEVICE_NAME, + MCIERR_BAD_TIME_FORMAT, + MCIERR_NO_CLOSING_QUOTE, + MCIERR_DUPLICATE_FLAGS, + MCIERR_INVALID_FILE, + MCIERR_NULL_PARAMETER_BLOCK, + MCIERR_UNNAMED_RESOURCE, + MCIERR_NEW_REQUIRES_ALIAS, + MCIERR_NOTIFY_ON_AUTO_OPEN, + MCIERR_NO_ELEMENT_ALLOWED, + MCIERR_NONAPPLICABLE_FUNCTION, + MCIERR_ILLEGAL_FOR_AUTO_OPEN, + MCIERR_FILENAME_REQUIRED, + MCIERR_EXTRA_CHARACTERS, + MCIERR_DEVICE_NOT_INSTALLED, + MCIERR_GET_CD, + MCIERR_SET_CD, + MCIERR_SET_DRIVE, + MCIERR_DEVICE_LENGTH, + MCIERR_DEVICE_ORD_LENGTH, + MCIERR_NO_INTEGER, // = MCIERR_BASE + 56 + MCIERR_WAVE_OUTPUTSINUSE = MCIERR_BASE + 64, + MCIERR_WAVE_SETOUTPUTINUSE, + MCIERR_WAVE_INPUTSINUSE, + MCIERR_WAVE_SETINPUTINUSE, + MCIERR_WAVE_OUTPUTUNSPECIFIED, + MCIERR_WAVE_INPUTUNSPECIFIED, + MCIERR_WAVE_OUTPUTSUNSUITABLE, + MCIERR_WAVE_SETOUTPUTUNSUITABLE, + MCIERR_WAVE_INPUTSUNSUITABLE, + MCIERR_WAVE_SETINPUTUNSUITABLE, // = MCIERR_BASE + 73 + MCIERR_SEQ_DIV_INCOMPATIBLE = MCIERR_BASE + 80, + MCIERR_SEQ_PORT_INUSE, + MCIERR_SEQ_PORT_NONEXISTENT, + MCIERR_SEQ_PORT_MAPNODEVICE, + MCIERR_SEQ_PORT_MISCERROR, + MCIERR_SEQ_TIMER, + MCIERR_SEQ_PORTUNSPECIFIED, + MCIERR_SEQ_NOMIDIPRESENT, // = MCIERR_BASE + 87 + MCIERR_NO_WINDOW = MCIERR_BASE + 90, + MCIERR_CREATEWINDOW, + MCIERR_FILE_READ, + MCIERR_FILE_WRITE, + MCIERR_NO_IDENTITY // = MCIERR_BASE + 94 +} +const MCIERR_CUSTOM_DRIVER_BASE = MCIERR_BASE + 256; + +const MCI_FIRST=DRV_MCI_FIRST; +const MCI_OPEN=0x803; +const MCI_CLOSE=0x804; +const MCI_ESCAPE=0x805; +const MCI_PLAY=0x806; +const MCI_SEEK=0x807; +const MCI_STOP=0x808; +const MCI_PAUSE=0x809; +const MCI_INFO=0x80A; +const MCI_GETDEVCAPS=0x80B; +const MCI_SPIN=0x80C; +const MCI_SET=0x80D; +const MCI_STEP=0x80E; +const MCI_RECORD=0x80F; +const MCI_SYSINFO=0x810; +const MCI_BREAK=0x811; +const MCI_SAVE=0x813; +const MCI_STATUS=0x814; +const MCI_CUE=0x830; +const MCI_REALIZE=0x840; +const MCI_WINDOW=0x841; +const MCI_PUT=0x842; +const MCI_WHERE=0x843; +const MCI_FREEZE=0x844; +const MCI_UNFREEZE=0x845; +const MCI_LOAD=0x850; +const MCI_CUT=0x851; +const MCI_COPY=0x852; +const MCI_PASTE=0x853; +const MCI_UPDATE=0x854; +const MCI_RESUME=0x855; +const MCI_DELETE=0x856; +const MCI_USER_MESSAGES=(DRV_MCI_FIRST+0x400); +const MCI_LAST=0xFFF; + +const MCIDEVICEID MCI_ALL_DEVICE_ID = -1; + +const MCI_DEVTYPE_VCR=513; +const MCI_DEVTYPE_VIDEODISC=514; +const MCI_DEVTYPE_OVERLAY=515; +const MCI_DEVTYPE_CD_AUDIO=516; +const MCI_DEVTYPE_DAT=517; +const MCI_DEVTYPE_SCANNER=518; +const MCI_DEVTYPE_ANIMATION=519; +const MCI_DEVTYPE_DIGITAL_VIDEO=520; +const MCI_DEVTYPE_OTHER=521; +const MCI_DEVTYPE_WAVEFORM_AUDIO=522; +const MCI_DEVTYPE_SEQUENCER=523; +const MCI_DEVTYPE_FIRST=MCI_DEVTYPE_VCR; +const MCI_DEVTYPE_LAST=MCI_DEVTYPE_SEQUENCER; +const MCI_DEVTYPE_FIRST_USER=0x1000; +const MCI_MODE_NOT_READY=(MCI_STRING_OFFSET+12); +const MCI_MODE_STOP=(MCI_STRING_OFFSET+13); +const MCI_MODE_PLAY=(MCI_STRING_OFFSET+14); +const MCI_MODE_RECORD=(MCI_STRING_OFFSET+15); +const MCI_MODE_SEEK=(MCI_STRING_OFFSET+16); +const MCI_MODE_PAUSE=(MCI_STRING_OFFSET+17); +const MCI_MODE_OPEN=(MCI_STRING_OFFSET+18); +const MCI_FORMAT_MILLISECONDS=0; +const MCI_FORMAT_HMS=1; +const MCI_FORMAT_MSF=2; +const MCI_FORMAT_FRAMES=3; +const MCI_FORMAT_SMPTE_24=4; +const MCI_FORMAT_SMPTE_25=5; +const MCI_FORMAT_SMPTE_30=6; +const MCI_FORMAT_SMPTE_30DROP=7; +const MCI_FORMAT_BYTES=8; +const MCI_FORMAT_SAMPLES=9; +const MCI_FORMAT_TMSF=10; + + + + +// Macros +BYTE MCI_HMS_HOUR(DWORD t) { return cast(BYTE)(t); } +BYTE MCI_HMS_MINUTE(DWORD t) { return cast(BYTE)(t>>>8); } +BYTE MCI_HMS_SECOND(DWORD t) { return cast(BYTE)( t>>>16); } +DWORD MCI_MAKE_HMS(BYTE h, BYTE m, BYTE s) { return h |(m<<8)|(cast(DWORD)(s)<<16); } +DWORD MCI_MAKE_MSF(BYTE m, BYTE s, BYTE f) { return m |(s<<8)|(cast(DWORD)(f)<<16); } +DWORD MCI_MAKE_TMSF(BYTE t, BYTE m, BYTE s, BYTE f) { + return t |(m<<8)|(s<<16)|(cast(DWORD)(f)<< 24); } + +BYTE MCI_MSF_MINUTE(DWORD t) { return cast(BYTE)(t); } +BYTE MCI_MSF_SECOND(DWORD t) { return cast(BYTE)(t >>> 8); } +BYTE MCI_MSF_FRAME(DWORD t) { return cast(BYTE)(t >>> 16); } + +BYTE MCI_TMSF_TRACK(DWORD t) { return cast(BYTE)(t); } +BYTE MCI_TMSF_MINUTE(DWORD t) { return cast(BYTE)(t>>8); } +BYTE MCI_TMSF_SECOND(DWORD t) { return cast(BYTE)(t>>16); } +BYTE MCI_TMSF_FRAME(DWORD t) { return cast(BYTE)(t>>24); } + + +const MCI_NOTIFY_SUCCESSFUL=1; +const MCI_NOTIFY_SUPERSEDED=2; +const MCI_NOTIFY_ABORTED=4; +const MCI_NOTIFY_FAILURE=8; +const MCI_NOTIFY=1; +const MCI_WAIT=2; +const MCI_FROM=4; +const MCI_TO=8; +const MCI_TRACK=16; +const MCI_OPEN_SHAREABLE=256; +const MCI_OPEN_ELEMENT=512; +const MCI_OPEN_ALIAS=1024; +const MCI_OPEN_ELEMENT_ID=2048; +const MCI_OPEN_TYPE_ID=0x1000; +const MCI_OPEN_TYPE=0x2000; +const MCI_SEEK_TO_START=256; +const MCI_SEEK_TO_END=512; +const MCI_STATUS_ITEM=256; +const MCI_STATUS_START=512; +const MCI_STATUS_LENGTH=1; +const MCI_STATUS_POSITION=2; +const MCI_STATUS_NUMBER_OF_TRACKS=3; +const MCI_STATUS_MODE=4; +const MCI_STATUS_MEDIA_PRESENT=5; +const MCI_STATUS_TIME_FORMAT=6; +const MCI_STATUS_READY=7; +const MCI_STATUS_CURRENT_TRACK=8; +const MCI_INFO_PRODUCT=256; +const MCI_INFO_FILE=512; +const MCI_INFO_MEDIA_UPC=1024; +const MCI_INFO_MEDIA_IDENTITY=2048; +const MCI_INFO_NAME=0x1000; +const MCI_INFO_COPYRIGHT=0x2000; + +const MCI_GETDEVCAPS_ITEM=256; +const MCI_GETDEVCAPS_CAN_RECORD=1; +const MCI_GETDEVCAPS_HAS_AUDIO=2; +const MCI_GETDEVCAPS_HAS_VIDEO=3; +const MCI_GETDEVCAPS_DEVICE_TYPE=4; +const MCI_GETDEVCAPS_USES_FILES=5; +const MCI_GETDEVCAPS_COMPOUND_DEVICE=6; +const MCI_GETDEVCAPS_CAN_EJECT=7; +const MCI_GETDEVCAPS_CAN_PLAY=8; +const MCI_GETDEVCAPS_CAN_SAVE=9; + +const MCI_SYSINFO_QUANTITY=256; +const MCI_SYSINFO_OPEN=512; +const MCI_SYSINFO_NAME=1024; +const MCI_SYSINFO_INSTALLNAME=2048; +const MCI_SET_DOOR_OPEN=256; +const MCI_SET_DOOR_CLOSED=512; +const MCI_SET_TIME_FORMAT=1024; +const MCI_SET_AUDIO=2048; +const MCI_SET_VIDEO=0x1000; +const MCI_SET_ON=0x2000; +const MCI_SET_OFF=0x4000; + +const MCI_SET_AUDIO_ALL=0; +const MCI_SET_AUDIO_LEFT=1; +const MCI_SET_AUDIO_RIGHT=2; + +const MCI_BREAK_KEY=256; +const MCI_BREAK_HWND=512; +const MCI_BREAK_OFF=1024; + +const MCI_RECORD_INSERT=256; +const MCI_RECORD_OVERWRITE=512; +const MCI_SAVE_FILE=256; +const MCI_LOAD_FILE=256; + +const MCI_VD_MODE_PARK=(MCI_VD_OFFSET+1); +const MCI_VD_MEDIA_CLV=(MCI_VD_OFFSET+2); +const MCI_VD_MEDIA_CAV=(MCI_VD_OFFSET+3); +const MCI_VD_MEDIA_OTHER=(MCI_VD_OFFSET+4); + +const MCI_VD_FORMAT_TRACK=0x4001; +const MCI_VD_PLAY_REVERSE=0x10000; +const MCI_VD_PLAY_FAST=0x20000; +const MCI_VD_PLAY_SPEED=0x40000; +const MCI_VD_PLAY_SCAN=0x80000; +const MCI_VD_PLAY_SLOW=0x100000; +const MCI_VD_SEEK_REVERSE=0x10000; +const MCI_VD_STATUS_SPEED=0x4002; +const MCI_VD_STATUS_FORWARD=0x4003; +const MCI_VD_STATUS_MEDIA_TYPE=0x4004; +const MCI_VD_STATUS_SIDE=0x4005; +const MCI_VD_STATUS_DISC_SIZE=0x4006; +const MCI_VD_GETDEVCAPS_CLV=0x10000; +const MCI_VD_GETDEVCAPS_CAV=0x20000; +const MCI_VD_SPIN_UP=0x10000; +const MCI_VD_SPIN_DOWN=0x20000; +const MCI_VD_GETDEVCAPS_CAN_REVERSE=0x4002; +const MCI_VD_GETDEVCAPS_FAST_RATE=0x4003; +const MCI_VD_GETDEVCAPS_SLOW_RATE=0x4004; +const MCI_VD_GETDEVCAPS_NORMAL_RATE=0x4005; +const MCI_VD_STEP_FRAMES=0x10000; +const MCI_VD_STEP_REVERSE=0x20000; +const MCI_VD_ESCAPE_STRING=256; + +const MCI_CDA_STATUS_TYPE_TRACK=0x4001; +const MCI_CDA_TRACK_AUDIO=MCI_CD_OFFSET; +const MCI_CDA_TRACK_OTHER=(MCI_CD_OFFSET+1); + +const MCI_WAVE_PCM=MCI_WAVE_OFFSET; +const MCI_WAVE_MAPPER=(MCI_WAVE_OFFSET+1); +const MCI_WAVE_OPEN_BUFFER=0x10000; +const MCI_WAVE_SET_FORMATTAG=0x10000; +const MCI_WAVE_SET_CHANNELS=0x20000; +const MCI_WAVE_SET_SAMPLESPERSEC=0x40000; +const MCI_WAVE_SET_AVGBYTESPERSEC=0x80000; +const MCI_WAVE_SET_BLOCKALIGN=0x100000; +const MCI_WAVE_SET_BITSPERSAMPLE=0x200000; +const MCI_WAVE_INPUT=0x400000; +const MCI_WAVE_OUTPUT=0x800000; +const MCI_WAVE_STATUS_FORMATTAG=0x4001; +const MCI_WAVE_STATUS_CHANNELS=0x4002; +const MCI_WAVE_STATUS_SAMPLESPERSEC=0x4003; +const MCI_WAVE_STATUS_AVGBYTESPERSEC=0x4004; +const MCI_WAVE_STATUS_BLOCKALIGN=0x4005; +const MCI_WAVE_STATUS_BITSPERSAMPLE=0x4006; +const MCI_WAVE_STATUS_LEVEL=0x4007; +const MCI_WAVE_SET_ANYINPUT=0x4000000; +const MCI_WAVE_SET_ANYOUTPUT=0x8000000; +const MCI_WAVE_GETDEVCAPS_INPUTS=0x4001; +const MCI_WAVE_GETDEVCAPS_OUTPUTS=0x4002; + +const MCI_SEQ_DIV_PPQN=MCI_SEQ_OFFSET; +const MCI_SEQ_DIV_SMPTE_24=(MCI_SEQ_OFFSET+1); +const MCI_SEQ_DIV_SMPTE_25=(MCI_SEQ_OFFSET+2); +const MCI_SEQ_DIV_SMPTE_30DROP=(MCI_SEQ_OFFSET+3); +const MCI_SEQ_DIV_SMPTE_30=(MCI_SEQ_OFFSET+4); +const MCI_SEQ_FORMAT_SONGPTR=0x4001; +const MCI_SEQ_FILE=0x4002; +const MCI_SEQ_MIDI=0x4003; +const MCI_SEQ_SMPTE=0x4004; +const MCI_SEQ_NONE=65533; +const MCI_SEQ_MAPPER=65535; + +const MCI_SEQ_STATUS_TEMPO=0x4002; +const MCI_SEQ_STATUS_PORT=0x4003; +const MCI_SEQ_STATUS_SLAVE=0x4007; +const MCI_SEQ_STATUS_MASTER=0x4008; +const MCI_SEQ_STATUS_OFFSET=0x4009; +const MCI_SEQ_STATUS_DIVTYPE=0x400A; +const MCI_SEQ_STATUS_NAME=0x400B; +const MCI_SEQ_STATUS_COPYRIGHT=0x400C; + +const MCI_SEQ_SET_TEMPO=0x10000; +const MCI_SEQ_SET_PORT=0x20000; +const MCI_SEQ_SET_SLAVE=0x40000; +const MCI_SEQ_SET_MASTER=0x80000; +const MCI_SEQ_SET_OFFSET=0x1000000; + +const MCI_ANIM_OPEN_WS=0x10000; +const MCI_ANIM_OPEN_PARENT=0x20000; +const MCI_ANIM_OPEN_NOSTATIC=0x40000; +const MCI_ANIM_PLAY_SPEED=0x10000; +const MCI_ANIM_PLAY_REVERSE=0x20000; +const MCI_ANIM_PLAY_FAST=0x40000; +const MCI_ANIM_PLAY_SLOW=0x80000; +const MCI_ANIM_PLAY_SCAN=0x100000; +const MCI_ANIM_STEP_REVERSE=0x10000; +const MCI_ANIM_STEP_FRAMES=0x20000; +const MCI_ANIM_STATUS_SPEED=0x4001; +const MCI_ANIM_STATUS_FORWARD=0x4002; +const MCI_ANIM_STATUS_HWND=0x4003; +const MCI_ANIM_STATUS_HPAL=0x4004; +const MCI_ANIM_STATUS_STRETCH=0x4005; +const MCI_ANIM_INFO_TEXT=0x10000; + +const MCI_ANIM_GETDEVCAPS_CAN_REVERSE=0x4001; +const MCI_ANIM_GETDEVCAPS_FAST_RATE=0x4002; +const MCI_ANIM_GETDEVCAPS_SLOW_RATE=0x4003; +const MCI_ANIM_GETDEVCAPS_NORMAL_RATE=0x4004; +const MCI_ANIM_GETDEVCAPS_PALETTES=0x4006; +const MCI_ANIM_GETDEVCAPS_CAN_STRETCH=0x4007; +const MCI_ANIM_GETDEVCAPS_MAX_WINDOWS=0x4008; + +const MCI_ANIM_REALIZE_NORM=0x10000; +const MCI_ANIM_REALIZE_BKGD=0x20000; + +const MCI_ANIM_WINDOW_HWND=0x10000; +const MCI_ANIM_WINDOW_STATE=0x40000; +const MCI_ANIM_WINDOW_TEXT=0x80000; +const MCI_ANIM_WINDOW_ENABLE_STRETCH=0x100000; +const MCI_ANIM_WINDOW_DISABLE_STRETCH=0x200000; +const MCI_ANIM_WINDOW_DEFAULT=0x0; + +const MCI_ANIM_RECT=0x10000; +const MCI_ANIM_PUT_SOURCE=0x20000; +const MCI_ANIM_PUT_DESTINATION=0x40000; +const MCI_ANIM_WHERE_SOURCE=0x20000; +const MCI_ANIM_WHERE_DESTINATION=0x40000; +const MCI_ANIM_UPDATE_HDC=0x20000; + +const MCI_OVLY_OPEN_WS=0x10000; +const MCI_OVLY_OPEN_PARENT=0x20000; +const MCI_OVLY_STATUS_HWND=0x4001; +const MCI_OVLY_STATUS_STRETCH=0x4002; +const MCI_OVLY_INFO_TEXT=0x10000; +const MCI_OVLY_GETDEVCAPS_CAN_STRETCH=0x4001; +const MCI_OVLY_GETDEVCAPS_CAN_FREEZE=0x4002; +const MCI_OVLY_GETDEVCAPS_MAX_WINDOWS=0x4003; +const MCI_OVLY_WINDOW_HWND=0x10000; +const MCI_OVLY_WINDOW_STATE=0x40000; +const MCI_OVLY_WINDOW_TEXT=0x80000; +const MCI_OVLY_WINDOW_ENABLE_STRETCH=0x100000; +const MCI_OVLY_WINDOW_DISABLE_STRETCH=0x200000; +const MCI_OVLY_WINDOW_DEFAULT=0x0; +const MCI_OVLY_RECT=0x10000; +const MCI_OVLY_PUT_SOURCE=0x20000; +const MCI_OVLY_PUT_DESTINATION=0x40000; +const MCI_OVLY_PUT_FRAME=0x80000; +const MCI_OVLY_PUT_VIDEO=0x100000; +const MCI_OVLY_WHERE_SOURCE=0x20000; +const MCI_OVLY_WHERE_DESTINATION=0x40000; +const MCI_OVLY_WHERE_FRAME=0x80000; +const MCI_OVLY_WHERE_VIDEO=0x100000; + +const NEWTRANSPARENT=3; +const QUERYROPSUPPORT=40; +const SELECTDIB=41; + +LONG DIBINDEX(WORD n) { + return MAKELONG(n, 0x10FF); +} +const CAPS1=94; +const C1_TRANSPARENT=1; + +const SEEK_SET=0; +const SEEK_CUR=1; +const SEEK_END=2; + +alias DWORD MCIERROR; +alias UINT MCIDEVICEID; +alias UINT function (MCIDEVICEID, DWORD) YIELDPROC; +alias UINT MMVERSION; +alias UINT MMRESULT; + +struct MMTIME { + UINT wType; + union { + DWORD ms; + DWORD sample; + DWORD cb; + DWORD ticks; + struct smpte { + BYTE hour; + BYTE min; + BYTE sec; + BYTE frame; + BYTE fps; + BYTE dummy; + BYTE[2] pad; + }; + struct midi { + DWORD songptrpos; + } + } +} +alias MMTIME* PMMTIME, LPMMTIME; + +alias TypeDef!(HANDLE) HDRVR; + +struct DRVCONFIGINFO { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; +} +alias DRVCONFIGINFO * PDRVCONFIGINFO, LPDRVCONFIGINFO; + +struct DRVCONFIGINFOEX { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; + DWORD dnDevNode; +} +alias DRVCONFIGINFOEX* PDRVCONFIGINFOEX, LPDRVCONFIGINFOEX; + +extern(Windows): + +/+FIXME: I couldn't find these in MSDN. +alias void function (HDRVR, UINT, DWORD, DWORD, DWORD) DRVCALLBACK; +LRESULT DRIVERPROC (DWORD, HDRVR, UINT, LPARAM, LPARAM); +alias DRVCALLBACK* LPDRVCALLBACK, PDRVCALLBACK; + +alias DRVCALLBACK WAVECALLBACK; +alias WAVECALLBACK* LPWAVECALLBACK; + +alias DRVCALLBACK MIDICALLBACK; +alias MIDICALLBACK* LPMIDICALLBACK; + ++/ + +alias TypeDef!(HANDLE) HWAVE; +alias TypeDef!(HANDLE) HWAVEIN; +alias TypeDef!(HANDLE) HWAVEOUT; + +alias HWAVEIN* LPHWAVEIN; +alias HWAVEOUT* LPHWAVEOUT; + +struct WAVEHDR { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD dwUser; + DWORD dwFlags; + DWORD dwLoops; + WAVEHDR *lpNext; + DWORD reserved; +} +alias WAVEHDR* PWAVEHDR, LPWAVEHDR; + +struct WAVEOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} +alias WAVEOUTCAPSA* PWAVEOUTCAPSA, LPWAVEOUTCAPSA; + +struct WAVEOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} +alias WAVEOUTCAPSW* PWAVEOUTCAPSW, LPWAVEOUTCAPSW; + +struct WAVEINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} +alias WAVEINCAPSA* PWAVEINCAPSA, LPWAVEINCAPSA; + +struct WAVEINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} +alias WAVEINCAPSW* PWAVEINCAPSW, LPWAVEINCAPSW; + +struct WAVEFORMAT { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; +} +alias WAVEFORMAT* PWAVEFORMAT, LPWAVEFORMAT; + +struct PCMWAVEFORMAT { + WAVEFORMAT wf; + WORD wBitsPerSample; +} +alias PCMWAVEFORMAT* PPCMWAVEFORMAT, LPPCMWAVEFORMAT; + +struct WAVEFORMATEX { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wBitsPerSample; + WORD cbSize; +} +alias WAVEFORMATEX* PWAVEFORMATEX, LPWAVEFORMATEX; +alias const(WAVEFORMATEX)* LPCWAVEFORMATEX; + +alias TypeDef!(HANDLE) HMIDI; +alias TypeDef!(HANDLE) HMIDIIN; +alias TypeDef!(HANDLE) HMIDIOUT; +alias TypeDef!(HANDLE) HMIDISTRM; + +alias HMIDI* LPHMIDI; +alias HMIDIIN* LPHMIDIIN; +alias HMIDIOUT* LPHMIDIOUT; +alias HMIDISTRM* LPHMIDISTRM; + +alias WORD[MIDIPATCHSIZE] PATCHARRAY; +alias WORD* LPPATCHARRAY; +alias WORD[MIDIPATCHSIZE] KEYARRAY; +alias WORD* LPKEYARRAY; + +struct MIDIOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} +alias MIDIOUTCAPSA* PMIDIOUTCAPSA, LPMIDIOUTCAPSA; + +struct MIDIOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} +alias MIDIOUTCAPSW* PMIDIOUTCAPSW, LPMIDIOUTCAPSW; + +struct MIDIINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD dwSupport; +} +alias MIDIINCAPSA* PMIDIINCAPSA, LPMIDIINCAPSA; + +struct MIDIINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD dwSupport; +} +alias MIDIINCAPSW* PMIDIINCAPSW, LPMIDIINCAPSW; + +struct MIDIHDR { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD dwUser; + DWORD dwFlags; + MIDIHDR *lpNext; + DWORD reserved; + DWORD dwOffset; + DWORD[8] dwReserved; +} +alias MIDIHDR* PMIDIHDR, LPMIDIHDR; + +struct MIDIEVENT { + DWORD dwDeltaTime; + DWORD dwStreamID; + DWORD dwEvent; + DWORD[1] dwParms; +} + +struct MIDISTRMBUFFVER { + DWORD dwVersion; + DWORD dwMid; + DWORD dwOEMVersion; +} + +struct MIDIPROPTIMEDIV { + DWORD cbStruct; + DWORD dwTimeDiv; +} +alias MIDIPROPTIMEDIV* LPMIDIPROPTIMEDIV; + +struct MIDIPROPTEMPO { + DWORD cbStruct; + DWORD dwTempo; +} +alias MIDIPROPTEMPO* LPMIDIPROPTEMPO; + +struct AUXCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} +alias AUXCAPSA* PAUXCAPSA, LPAUXCAPSA; + +struct AUXCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} +alias AUXCAPSW* PAUXCAPSW, LPAUXCAPSW; + +alias TypeDef!(HANDLE) HMIXEROBJ; +alias HMIXEROBJ* LPHMIXEROBJ; + +alias TypeDef!(HANDLE) HMIXER; +alias HMIXER* LPHMIXER; + +struct MIXERCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD fdwSupport; + DWORD cDestinations; +} +alias MIXERCAPSA* PMIXERCAPSA, LPMIXERCAPSA; + +struct MIXERCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD fdwSupport; + DWORD cDestinations; +} +alias MIXERCAPSW* PMIXERCAPSW, LPMIXERCAPSW; + +struct MIXERLINEA { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + CHAR[MIXER_SHORT_NAME_CHARS] szShortName; + CHAR[MIXER_LONG_NAME_CHARS] szName; + struct Target { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + } +} +alias MIXERLINEA* PMIXERLINEA, LPMIXERLINEA; + +struct MIXERLINEW { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + WCHAR[MIXER_SHORT_NAME_CHARS] szShortName; + WCHAR[MIXER_LONG_NAME_CHARS] szName; + struct Target { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + } +} +alias MIXERLINEW* PMIXERLINEW, LPMIXERLINEW; + +struct MIXERCONTROLA { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + CHAR[MIXER_SHORT_NAME_CHARS] szShortName; + CHAR[MIXER_LONG_NAME_CHARS] szName; + union _Bounds { + struct { + LONG lMinimum; + LONG lMaximum; + } + struct { + DWORD dwMinimum; + DWORD dwMaximum; + } + DWORD[6] dwReserved; + } + _Bounds Bounds; + union _Metrics { + DWORD cSteps; + DWORD cbCustomData; + DWORD[6] dwReserved; + } + _Metrics Metrics; +} +alias MIXERCONTROLA* PMIXERCONTROLA, LPMIXERCONTROLA; + +struct MIXERCONTROLW { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + WCHAR[MIXER_SHORT_NAME_CHARS] szShortName; + WCHAR[MIXER_LONG_NAME_CHARS] szName; + union _Bounds { + struct { + LONG lMinimum; + LONG lMaximum; + } + struct { + DWORD dwMinimum; + DWORD dwMaximum; + } + DWORD[6] dwReserved; + } + _Bounds Bounds; + union _Metrics { + DWORD cSteps; + DWORD cbCustomData; + DWORD[6] dwReserved; + } + _Metrics Metrics; +} + +alias MIXERCONTROLW* PMIXERCONTROLW, LPMIXERCONTROLW; + +struct MIXERLINECONTROLSA { + DWORD cbStruct; + DWORD dwLineID; + union { + DWORD dwControlID; + DWORD dwControlType; + } + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLA pamxctrl; +} +alias MIXERLINECONTROLSA* PMIXERLINECONTROLSA, LPMIXERLINECONTROLSA; + +struct MIXERLINECONTROLSW { + DWORD cbStruct; + DWORD dwLineID; + union { + DWORD dwControlID; + DWORD dwControlType; + } + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLW pamxctrl; +} +alias MIXERLINECONTROLSW* PMIXERLINECONTROLSW, LPMIXERLINECONTROLSW; + +struct MIXERCONTROLDETAILS { + DWORD cbStruct; + DWORD dwControlID; + DWORD cChannels; + union { + HWND hwndOwner; + DWORD cMultipleItems; + } + DWORD cbDetails; + PVOID paDetails; +} +alias MIXERCONTROLDETAILS* PMIXERCONTROLDETAILS, LPMIXERCONTROLDETAILS; + +struct MIXERCONTROLDETAILS_LISTTEXTA { + DWORD dwParam1; + DWORD dwParam2; + CHAR[MIXER_LONG_NAME_CHARS] szName; +} +alias MIXERCONTROLDETAILS_LISTTEXTA* PMIXERCONTROLDETAILS_LISTTEXTA, LPMIXERCONTROLDETAILS_LISTTEXTA; + +struct MIXERCONTROLDETAILS_LISTTEXTW { + DWORD dwParam1; + DWORD dwParam2; + WCHAR[MIXER_LONG_NAME_CHARS] szName; +} +alias MIXERCONTROLDETAILS_LISTTEXTW* PMIXERCONTROLDETAILS_LISTTEXTW, LPMIXERCONTROLDETAILS_LISTTEXTW; + +struct MIXERCONTROLDETAILS_BOOLEAN { + LONG fValue; +} +alias MIXERCONTROLDETAILS_BOOLEAN* PMIXERCONTROLDETAILS_BOOLEAN, LPMIXERCONTROLDETAILS_BOOLEAN; + +struct MIXERCONTROLDETAILS_SIGNED { + LONG lValue; +} +alias MIXERCONTROLDETAILS_SIGNED* PMIXERCONTROLDETAILS_SIGNED, LPMIXERCONTROLDETAILS_SIGNED; + +struct MIXERCONTROLDETAILS_UNSIGNED { + DWORD dwValue; +} +alias MIXERCONTROLDETAILS_UNSIGNED* PMIXERCONTROLDETAILS_UNSIGNED, LPMIXERCONTROLDETAILS_UNSIGNED; + +alias void function (UINT, UINT, DWORD, DWORD, DWORD) LPTIMECALLBACK; + +struct TIMECAPS { + UINT wPeriodMin; + UINT wPeriodMax; +} +alias TIMECAPS* PTIMECAPS, LPTIMECAPS; + +struct JOYCAPSA { + WORD wMid; + WORD wPid; + CHAR[MAXPNAMELEN] szPname; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + CHAR[MAXPNAMELEN] szRegKey; + CHAR[MAX_JOYSTICKOEMVXDNAME] szOEMVxD; +} +alias JOYCAPSA* PJOYCAPSA, LPJOYCAPSA; + +struct JOYCAPSW { + WORD wMid; + WORD wPid; + WCHAR[MAXPNAMELEN] szPname; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + WCHAR[MAXPNAMELEN] szRegKey; + WCHAR[MAX_JOYSTICKOEMVXDNAME] szOEMVxD; +} +alias JOYCAPSW* PJOYCAPSW, LPJOYCAPSW; + +struct JOYINFO { + UINT wXpos; + UINT wYpos; + UINT wZpos; + UINT wButtons; +} +alias JOYINFO* PJOYINFO, LPJOYINFO; + +struct JOYINFOEX { + DWORD dwSize; + DWORD dwFlags; + DWORD dwXpos; + DWORD dwYpos; + DWORD dwZpos; + DWORD dwRpos; + DWORD dwUpos; + DWORD dwVpos; + DWORD dwButtons; + DWORD dwButtonNumber; + DWORD dwPOV; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias JOYINFOEX* PJOYINFOEX, LPJOYINFOEX; + +alias DWORD FOURCC; +alias char* HPSTR; + +alias TypeDef!(HANDLE) HMMIO; + +alias LRESULT function (LPSTR, UINT, LPARAM, LPARAM) LPMMIOPROC; + +struct MMIOINFO { + DWORD dwFlags; + FOURCC fccIOProc; + LPMMIOPROC pIOProc; + UINT wErrorRet; + HTASK htask; + LONG cchBuffer; + HPSTR pchBuffer; + HPSTR pchNext; + HPSTR pchEndRead; + HPSTR pchEndWrite; + LONG lBufOffset; + LONG lDiskOffset; + DWORD[3] adwInfo; + DWORD dwReserved1; + DWORD dwReserved2; + HMMIO hmmio; +} +alias MMIOINFO* PMMIOINFO, LPMMIOINFO; +alias const(MMIOINFO)* LPCMMIOINFO; + +struct MMCKINFO { + FOURCC ckid; + DWORD cksize; + FOURCC fccType; + DWORD dwDataOffset; + DWORD dwFlags; +} +alias MMCKINFO* PMMCKINFO, LPMMCKINFO; +alias const(MMCKINFO)* LPCMMCKINFO; + +struct MCI_GENERIC_PARMS { + DWORD dwCallback; +} +alias MCI_GENERIC_PARMS* PMCI_GENERIC_PARMS, LPMCI_GENERIC_PARMS; + +struct MCI_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; +} +alias MCI_OPEN_PARMSA* PMCI_OPEN_PARMSA, LPMCI_OPEN_PARMSA; + +struct MCI_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; +} +alias MCI_OPEN_PARMSW* PMCI_OPEN_PARMSW, LPMCI_OPEN_PARMSW; + +struct MCI_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias MCI_PLAY_PARMS* PMCI_PLAY_PARMS, LPMCI_PLAY_PARMS; + +struct MCI_SEEK_PARMS { + DWORD dwCallback; + DWORD dwTo; +} +alias MCI_SEEK_PARMS* PMCI_SEEK_PARMS, LPMCI_SEEK_PARMS; + +struct MCI_STATUS_PARMS { + DWORD dwCallback; + DWORD dwReturn; + DWORD dwItem; + DWORD dwTrack; +} +alias MCI_STATUS_PARMS* PMCI_STATUS_PARMS, LPMCI_STATUS_PARMS; + +struct MCI_INFO_PARMSA { + DWORD dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; +} +alias MCI_INFO_PARMSA* LPMCI_INFO_PARMSA; + +struct MCI_INFO_PARMSW { + DWORD dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; +} +alias MCI_INFO_PARMSW* LPMCI_INFO_PARMSW; + +struct MCI_GETDEVCAPS_PARMS { + DWORD dwCallback; + DWORD dwReturn; + DWORD dwItem; +} +alias MCI_GETDEVCAPS_PARMS* PMCI_GETDEVCAPS_PARMS, LPMCI_GETDEVCAPS_PARMS; + +struct MCI_SYSINFO_PARMSA { + DWORD dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} +alias MCI_SYSINFO_PARMSA* PMCI_SYSINFO_PARMSA, LPMCI_SYSINFO_PARMSA; + +struct MCI_SYSINFO_PARMSW { + DWORD dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} +alias MCI_SYSINFO_PARMSW* PMCI_SYSINFO_PARMSW, LPMCI_SYSINFO_PARMSW; + +struct MCI_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +} +alias MCI_SET_PARMS* PMCI_SET_PARMS, LPMCI_SET_PARMS; + +struct MCI_BREAK_PARMS { + DWORD dwCallback; + int nVirtKey; + HWND hwndBreak; +} +alias MCI_BREAK_PARMS* PMCI_BREAK_PARMS, LPMCI_BREAK_PARMS; + +struct MCI_SAVE_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; +} +alias MCI_SAVE_PARMSA* PMCI_SAVE_PARMSA, LPMCI_SAVE_PARMSA; + +struct MCI_SAVE_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; +} +alias MCI_SAVE_PARMSW* PMCI_SAVE_PARMSW, LPMCI_SAVE_PARMSW; + +struct MCI_LOAD_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; +} +alias MCI_LOAD_PARMSA* PMCI_LOAD_PARMSA, LPMCI_LOAD_PARMSA; + +struct MCI_LOAD_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; +} +alias MCI_LOAD_PARMSW* PMCI_LOAD_PARMSW, LPMCI_LOAD_PARMSW; + +struct MCI_RECORD_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias MCI_RECORD_PARMS* LPMCI_RECORD_PARMS; + +struct MCI_VD_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} +alias MCI_VD_PLAY_PARMS* PMCI_VD_PLAY_PARMS, LPMCI_VD_PLAY_PARMS; + +struct MCI_VD_STEP_PARMS { + DWORD dwCallback; + DWORD dwFrames; +} +alias MCI_VD_STEP_PARMS* PMCI_VD_STEP_PARMS, LPMCI_VD_STEP_PARMS; + +struct MCI_VD_ESCAPE_PARMSA { + DWORD dwCallback; + LPCSTR lpstrCommand; +} +alias MCI_VD_ESCAPE_PARMSA* PMCI_VD_ESCAPE_PARMSA, LPMCI_VD_ESCAPE_PARMSA; + +struct MCI_VD_ESCAPE_PARMSW { + DWORD dwCallback; + LPCWSTR lpstrCommand; +} +alias MCI_VD_ESCAPE_PARMSW* PMCI_VD_ESCAPE_PARMSW, LPMCI_VD_ESCAPE_PARMSW; + +struct MCI_WAVE_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwBufferSeconds; +} +alias MCI_WAVE_OPEN_PARMSA* PMCI_WAVE_OPEN_PARMSA, LPMCI_WAVE_OPEN_PARMSA; + +struct MCI_WAVE_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwBufferSeconds; +} +alias MCI_WAVE_OPEN_PARMSW* PMCI_WAVE_OPEN_PARMSW, LPMCI_WAVE_OPEN_PARMSW; + +struct MCI_WAVE_DELETE_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias MCI_WAVE_DELETE_PARMS* PMCI_WAVE_DELETE_PARMS, LPMCI_WAVE_DELETE_PARMS; + +struct MCI_WAVE_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + UINT wInput; + UINT wOutput; + WORD wFormatTag; + WORD wReserved2; + WORD nChannels; + WORD wReserved3; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wReserved4; + WORD wBitsPerSample; + WORD wReserved5; +} +alias MCI_WAVE_SET_PARMS* PMCI_WAVE_SET_PARMS, LPMCI_WAVE_SET_PARMS; + +extern (Windows): +LRESULT CloseDriver(HDRVR, LONG, LONG); +HDRVR OpenDriver(LPCWSTR, LPCWSTR, LONG); +LRESULT SendDriverMessage(HDRVR, UINT, LONG, LONG); +HMODULE DrvGetModuleHandle(HDRVR); +HMODULE GetDriverModuleHandle(HDRVR); +LRESULT DefDriverProc(DWORD, HDRVR, UINT, LPARAM, LPARAM); +UINT mmsystemGetVersion(); +// FIXME: I believe this next line is a mistake +//alias OutputDebugString OutputDebugStr; +BOOL sndPlaySoundA(LPCSTR, UINT); +BOOL sndPlaySoundW(LPCWSTR, UINT); +BOOL PlaySoundA(LPCSTR, HMODULE, DWORD); +BOOL PlaySoundW(LPCWSTR, HMODULE, DWORD); +UINT waveOutGetNumDevs(); +MMRESULT waveOutGetDevCapsA(UINT, LPWAVEOUTCAPSA, UINT); +MMRESULT waveOutGetDevCapsW(UINT, LPWAVEOUTCAPSW, UINT); +MMRESULT waveOutGetVolume(HWAVEOUT, PDWORD); +MMRESULT waveOutSetVolume(HWAVEOUT, DWORD); +MMRESULT waveOutGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT waveOutGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT waveOutOpen(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD); +MMRESULT waveOutClose(HWAVEOUT); +MMRESULT waveOutPrepareHeader(HWAVEOUT, LPWAVEHDR, UINT); +MMRESULT waveOutUnprepareHeader(HWAVEOUT, LPWAVEHDR, UINT); +MMRESULT waveOutWrite(HWAVEOUT, LPWAVEHDR, UINT); +MMRESULT waveOutPause(HWAVEOUT); +MMRESULT waveOutRestart(HWAVEOUT); +MMRESULT waveOutReset(HWAVEOUT); +MMRESULT waveOutBreakLoop(HWAVEOUT); +MMRESULT waveOutGetPosition(HWAVEOUT, LPMMTIME, UINT); +MMRESULT waveOutGetPitch(HWAVEOUT, PDWORD); +MMRESULT waveOutSetPitch(HWAVEOUT, DWORD); +MMRESULT waveOutGetPlaybackRate(HWAVEOUT, PDWORD); +MMRESULT waveOutSetPlaybackRate(HWAVEOUT, DWORD); +MMRESULT waveOutGetID(HWAVEOUT, LPUINT); +MMRESULT waveOutMessage(HWAVEOUT, UINT, DWORD, DWORD); +UINT waveInGetNumDevs(); +MMRESULT waveInGetDevCapsA(UINT, LPWAVEINCAPSA, UINT); +MMRESULT waveInGetDevCapsW(UINT, LPWAVEINCAPSW, UINT); +MMRESULT waveInGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT waveInGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT waveInOpen(LPHWAVEIN, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD); +MMRESULT waveInClose(HWAVEIN); +MMRESULT waveInPrepareHeader(HWAVEIN, LPWAVEHDR, UINT); +MMRESULT waveInUnprepareHeader(HWAVEIN, LPWAVEHDR, UINT); +MMRESULT waveInAddBuffer(HWAVEIN, LPWAVEHDR, UINT); +MMRESULT waveInStart(HWAVEIN); +MMRESULT waveInStop(HWAVEIN); +MMRESULT waveInReset(HWAVEIN); +MMRESULT waveInGetPosition(HWAVEIN, LPMMTIME, UINT); +MMRESULT waveInGetID(HWAVEIN, LPUINT); +MMRESULT waveInMessage(HWAVEIN, UINT, DWORD, DWORD); +UINT midiOutGetNumDevs(); +MMRESULT midiStreamOpen(LPHMIDISTRM, LPUINT, DWORD, DWORD, DWORD, DWORD); +MMRESULT midiStreamClose(HMIDISTRM); +MMRESULT midiStreamProperty(HMIDISTRM, LPBYTE, DWORD); +MMRESULT midiStreamPosition(HMIDISTRM, LPMMTIME, UINT); +MMRESULT midiStreamOut(HMIDISTRM, LPMIDIHDR, UINT); +MMRESULT midiStreamPause(HMIDISTRM); +MMRESULT midiStreamRestart(HMIDISTRM); +MMRESULT midiStreamStop(HMIDISTRM); +MMRESULT midiConnect(HMIDI, HMIDIOUT, PVOID); +MMRESULT midiDisconnect(HMIDI, HMIDIOUT, PVOID); +MMRESULT midiOutGetDevCapsA(UINT, LPMIDIOUTCAPSA, UINT); +MMRESULT midiOutGetDevCapsW(UINT, LPMIDIOUTCAPSW, UINT); +MMRESULT midiOutGetVolume(HMIDIOUT, PDWORD); +MMRESULT midiOutSetVolume(HMIDIOUT, DWORD); +MMRESULT midiOutGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT midiOutGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT midiOutOpen(LPHMIDIOUT, UINT, DWORD, DWORD, DWORD); +MMRESULT midiOutClose(HMIDIOUT); +MMRESULT midiOutPrepareHeader(HMIDIOUT, LPMIDIHDR, UINT); +MMRESULT midiOutUnprepareHeader(HMIDIOUT, LPMIDIHDR, UINT); +MMRESULT midiOutShortMsg(HMIDIOUT, DWORD); +MMRESULT midiOutLongMsg(HMIDIOUT, LPMIDIHDR, UINT); +MMRESULT midiOutReset(HMIDIOUT); +MMRESULT midiOutCachePatches(HMIDIOUT, UINT, LPWORD, UINT); +MMRESULT midiOutCacheDrumPatches(HMIDIOUT, UINT, LPWORD, UINT); +MMRESULT midiOutGetID(HMIDIOUT, LPUINT); +MMRESULT midiOutMessage(HMIDIOUT, UINT, DWORD, DWORD); +UINT midiInGetNumDevs(); +MMRESULT midiInGetDevCapsA(UINT, LPMIDIINCAPSA, UINT); +MMRESULT midiInGetDevCapsW(UINT, LPMIDIINCAPSW, UINT); +MMRESULT midiInGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT midiInGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT midiInOpen(LPHMIDIIN, UINT, DWORD, DWORD, DWORD); +MMRESULT midiInClose(HMIDIIN); +MMRESULT midiInPrepareHeader(HMIDIIN, LPMIDIHDR, UINT); +MMRESULT midiInUnprepareHeader(HMIDIIN, LPMIDIHDR, UINT); +MMRESULT midiInAddBuffer(HMIDIIN, LPMIDIHDR, UINT); +MMRESULT midiInStart(HMIDIIN); +MMRESULT midiInStop(HMIDIIN); +MMRESULT midiInReset(HMIDIIN); +MMRESULT midiInGetID(HMIDIIN, LPUINT); +MMRESULT midiInMessage(HMIDIIN, UINT, DWORD, DWORD); +UINT auxGetNumDevs(); +MMRESULT auxGetDevCapsA(UINT, LPAUXCAPSA, UINT); +MMRESULT auxGetDevCapsW(UINT, LPAUXCAPSW, UINT); +MMRESULT auxSetVolume(UINT, DWORD); +MMRESULT auxGetVolume(UINT, PDWORD); +MMRESULT auxOutMessage(UINT, UINT, DWORD, DWORD); +UINT mixerGetNumDevs(); +MMRESULT mixerGetDevCapsA(UINT, LPMIXERCAPSA, UINT); +MMRESULT mixerGetDevCapsW(UINT, LPMIXERCAPSW, UINT); +MMRESULT mixerOpen(LPHMIXER, UINT, DWORD, DWORD, DWORD); +MMRESULT mixerClose(HMIXER); +DWORD mixerMessage(HMIXER, UINT, DWORD, DWORD); +MMRESULT mixerGetLineInfoA(HMIXEROBJ, LPMIXERLINEA, DWORD); +MMRESULT mixerGetLineInfoW(HMIXEROBJ, LPMIXERLINEW, DWORD); +MMRESULT mixerGetID(HMIXEROBJ, PUINT, DWORD); +MMRESULT mixerGetLineControlsA(HMIXEROBJ, LPMIXERLINECONTROLSA, DWORD); +MMRESULT mixerGetLineControlsW(HMIXEROBJ, LPMIXERLINECONTROLSW, DWORD); +MMRESULT mixerGetControlDetailsA(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); +MMRESULT mixerGetControlDetailsW(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); +MMRESULT mixerSetControlDetails(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); +MMRESULT timeGetSystemTime(LPMMTIME, UINT); +DWORD timeGetTime(); +MMRESULT timeSetEvent(UINT, UINT, LPTIMECALLBACK, DWORD, UINT); +MMRESULT timeKillEvent(UINT); +MMRESULT timeGetDevCaps(LPTIMECAPS, UINT); +MMRESULT timeBeginPeriod(UINT); +MMRESULT timeEndPeriod(UINT); +UINT joyGetNumDevs(); +MMRESULT joyGetDevCapsA(UINT, LPJOYCAPSA, UINT); +MMRESULT joyGetDevCapsW(UINT, LPJOYCAPSW, UINT); +MMRESULT joyGetPos(UINT, LPJOYINFO); +MMRESULT joyGetPosEx(UINT, LPJOYINFOEX); +MMRESULT joyGetThreshold(UINT, LPUINT); +MMRESULT joyReleaseCapture(UINT); +MMRESULT joySetCapture(HWND, UINT, UINT, BOOL); +MMRESULT joySetThreshold(UINT, UINT); +FOURCC mmioStringToFOURCCA(LPCSTR, UINT); +FOURCC mmioStringToFOURCCW(LPCWSTR, UINT); +LPMMIOPROC mmioInstallIOProcA(FOURCC, LPMMIOPROC, DWORD); +LPMMIOPROC mmioInstallIOProcW(FOURCC, LPMMIOPROC, DWORD); +HMMIO mmioOpenA(LPSTR, LPMMIOINFO, DWORD); +HMMIO mmioOpenW(LPWSTR, LPMMIOINFO, DWORD); +MMRESULT mmioRenameA(LPCSTR, LPCSTR, LPCMMIOINFO, DWORD); +MMRESULT mmioRenameW(LPCWSTR, LPCWSTR, LPCMMIOINFO, DWORD); +MMRESULT mmioClose(HMMIO, UINT); +LONG mmioRead(HMMIO, HPSTR, LONG); +LONG mmioWrite(HMMIO, LPCSTR, LONG); +LONG mmioSeek(HMMIO, LONG, int); +MMRESULT mmioGetInfo(HMMIO, LPMMIOINFO, UINT); +MMRESULT mmioSetInfo(HMMIO, LPCMMIOINFO, UINT); +MMRESULT mmioSetBuffer(HMMIO, LPSTR, LONG, UINT); +MMRESULT mmioFlush(HMMIO, UINT); +MMRESULT mmioAdvance(HMMIO, LPMMIOINFO, UINT); +LRESULT mmioSendMessage(HMMIO, UINT, LPARAM, LPARAM); +MMRESULT mmioDescend(HMMIO, LPMMCKINFO, const(MMCKINFO)*, UINT); +MMRESULT mmioAscend(HMMIO, LPMMCKINFO, UINT); +MMRESULT mmioCreateChunk(HMMIO, LPMMCKINFO, UINT); +MCIERROR mciSendCommandA(MCIDEVICEID, UINT, DWORD, DWORD); +MCIERROR mciSendCommandW(MCIDEVICEID, UINT, DWORD, DWORD); +MCIERROR mciSendStringA(LPCSTR, LPSTR, UINT, HWND); +MCIERROR mciSendStringW(LPCWSTR, LPWSTR, UINT, HWND); +MCIDEVICEID mciGetDeviceIDA(LPCSTR); +MCIDEVICEID mciGetDeviceIDW(LPCWSTR); +MCIDEVICEID mciGetDeviceIDFromElementIDA(DWORD, LPCSTR); +MCIDEVICEID mciGetDeviceIDFromElementIDW(DWORD, LPCWSTR); +BOOL mciGetErrorStringA(MCIERROR, LPSTR, UINT); +BOOL mciGetErrorStringW(MCIERROR, LPWSTR, UINT); +BOOL mciSetYieldProc(MCIDEVICEID, YIELDPROC, DWORD); +HTASK mciGetCreatorTask(MCIDEVICEID); +YIELDPROC mciGetYieldProc(MCIDEVICEID, PDWORD); + +struct MCI_SEQ_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + DWORD dwTempo; + DWORD dwPort; + DWORD dwSlave; + DWORD dwMaster; + DWORD dwOffset; +} +alias MCI_SEQ_SET_PARMS* PMCI_SEQ_SET_PARMS, LPMCI_SEQ_SET_PARMS; + +struct MCI_ANIM_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_ANIM_OPEN_PARMSA* PMCI_ANIM_OPEN_PARMSA, LPMCI_ANIM_OPEN_PARMSA; + +struct MCI_ANIM_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_ANIM_OPEN_PARMSW* PMCI_ANIM_OPEN_PARMSW, LPMCI_ANIM_OPEN_PARMSW; + +struct MCI_ANIM_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} +alias MCI_ANIM_PLAY_PARMS* PMCI_ANIM_PLAY_PARMS, LPMCI_ANIM_PLAY_PARMS; + +struct MCI_ANIM_STEP_PARMS { + DWORD dwCallback; + DWORD dwFrames; +} +alias MCI_ANIM_STEP_PARMS* PMCI_ANIM_STEP_PARMS, LPMCI_ANIM_STEP_PARMS; + +struct MCI_ANIM_WINDOW_PARMSA { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} +alias MCI_ANIM_WINDOW_PARMSA* PMCI_ANIM_WINDOW_PARMSA, LPMCI_ANIM_WINDOW_PARMSA; + +struct MCI_ANIM_WINDOW_PARMSW { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} +alias MCI_ANIM_WINDOW_PARMSW* PMCI_ANIM_WINDOW_PARMSW, LPMCI_ANIM_WINDOW_PARMSW; + +struct MCI_ANIM_RECT_PARMS { + DWORD dwCallback; + //#ifdef MCI_USE_OFFEXT + // POINT ptOffset; + // POINT ptExtent; + //#else + RECT rc; + //#endif +} +alias MCI_ANIM_RECT_PARMS* PMCI_ANIM_RECT_PARMS, LPMCI_ANIM_RECT_PARMS; + +struct MCI_ANIM_UPDATE_PARMS { + DWORD dwCallback; + RECT rc; + HDC hDC; +} +alias MCI_ANIM_UPDATE_PARMS* PMCI_ANIM_UPDATE_PARMS, LPMCI_ANIM_UPDATE_PARMS; + +struct MCI_OVLY_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_OVLY_OPEN_PARMSA* PMCI_OVLY_OPEN_PARMSA, LPMCI_OVLY_OPEN_PARMSA; + +struct MCI_OVLY_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_OVLY_OPEN_PARMSW* PMCI_OVLY_OPEN_PARMSW, LPMCI_OVLY_OPEN_PARMSW; + +struct MCI_OVLY_WINDOW_PARMSA { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} +alias MCI_OVLY_WINDOW_PARMSA* PMCI_OVLY_WINDOW_PARMSA, LPMCI_OVLY_WINDOW_PARMSA; + +struct MCI_OVLY_WINDOW_PARMSW { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} +alias MCI_OVLY_WINDOW_PARMSW* PMCI_OVLY_WINDOW_PARMSW, LPMCI_OVLY_WINDOW_PARMSW; + +struct MCI_OVLY_RECT_PARMS { + DWORD dwCallback; + //#ifdef MCI_USE_OFFEXT + // POINT ptOffset; + // POINT ptExtent; + //#else + RECT rc; + //#endif +} +alias MCI_OVLY_RECT_PARMS* PMCI_OVLY_RECT_PARMS, LPMCI_OVLY_RECT_PARMS; + +struct MCI_OVLY_SAVE_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_SAVE_PARMSA* PMCI_OVLY_SAVE_PARMSA, LPMCI_OVLY_SAVE_PARMSA; + +struct MCI_OVLY_SAVE_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_SAVE_PARMSW* PMCI_OVLY_SAVE_PARMSW, LPMCI_OVLY_SAVE_PARMSW; + +struct MCI_OVLY_LOAD_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_LOAD_PARMSA* PMCI_OVLY_LOAD_PARMSA, LPMCI_OVLY_LOAD_PARMSA; + +struct MCI_OVLY_LOAD_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_LOAD_PARMSW* PMCI_OVLY_LOAD_PARMSW, LPMCI_OVLY_LOAD_PARMSW; + +version(Unicode) { + alias WAVEOUTCAPSW WAVEOUTCAPS; + alias WAVEINCAPSW WAVEINCAPS; + alias MIDIOUTCAPSW MIDIOUTCAPS; + alias MIDIINCAPSW MIDIINCAPS; + alias AUXCAPSW AUXCAPS; + alias MIXERCAPSW MIXERCAPS; + alias MIXERLINEW MIXERLINE; + alias MIXERCONTROLA MIXERCONTROL; + alias MIXERLINECONTROLSW MIXERLINECONTROLS; + alias MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT; + alias JOYCAPSW JOYCAPS; + alias MCI_OPEN_PARMSW MCI_OPEN_PARMS; + alias MCI_INFO_PARMSW MCI_INFO_PARMS; + alias MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS; + alias MCI_SAVE_PARMSW MCI_SAVE_PARMS; + alias MCI_LOAD_PARMSW MCI_LOAD_PARMS; + alias MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS; + alias MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS; + alias MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS; + alias MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS; + alias MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS; + alias MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS; + alias MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS; + + alias sndPlaySoundW sndPlaySound; + alias PlaySoundW PlaySound; + alias waveOutGetDevCapsW waveOutGetDevCaps; + alias waveOutGetErrorTextW waveOutGetErrorText; + alias waveInGetDevCapsW waveInGetDevCaps; + alias waveInGetErrorTextW waveInGetErrorText; + alias midiOutGetDevCapsW midiOutGetDevCaps; + alias midiOutGetErrorTextW midiOutGetErrorText; + alias midiInGetDevCapsW midiInGetDevCaps; + alias midiInGetErrorTextW midiInGetErrorText; + alias auxGetDevCapsW auxGetDevCaps; + alias mixerGetDevCapsW mixerGetDevCaps; + alias mixerGetLineInfoW mixerGetLineInfo; + alias mixerGetLineControlsW mixerGetLineControls; + alias mixerGetControlDetailsW mixerGetControlDetails; + alias joyGetDevCapsW joyGetDevCaps; + alias mmioInstallIOProcW mmioInstallIOProc; + alias mmioStringToFOURCCW mmioStringToFOURCC; + alias mmioOpenW mmioOpen; + alias mmioRenameW mmioRename; + alias mciSendCommandW mciSendCommand; + alias mciSendStringW mciSendString; + alias mciGetDeviceIDW mciGetDeviceID; + alias mciGetDeviceIDFromElementIDW mciGetDeviceIDFromElementID; + alias mciGetErrorStringW mciGetErrorString; + +} else { + alias WAVEOUTCAPSA WAVEOUTCAPS; + alias WAVEINCAPSA WAVEINCAPS; + alias MIDIOUTCAPSA MIDIOUTCAPS; + alias MIDIINCAPSA MIDIINCAPS; + alias AUXCAPSA AUXCAPS; + alias MIXERCAPSA MIXERCAPS; + alias MIXERLINEA MIXERLINE; + alias MIXERCONTROLA MIXERCONTROL; + alias MIXERLINECONTROLSA MIXERLINECONTROLS; + alias MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT; + alias JOYCAPSA JOYCAPS; + alias MCI_OPEN_PARMSA MCI_OPEN_PARMS; + alias MCI_INFO_PARMSA MCI_INFO_PARMS; + alias MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS; + alias MCI_SAVE_PARMSA MCI_SAVE_PARMS; + alias MCI_LOAD_PARMSA MCI_LOAD_PARMS; + alias MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS; + alias MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS; + alias MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS; + alias MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS; + alias MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS; + alias MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS; + alias MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS; + + alias sndPlaySoundA sndPlaySound; + alias PlaySoundA PlaySound; + alias waveOutGetDevCapsA waveOutGetDevCaps; + alias waveOutGetErrorTextA waveOutGetErrorText; + alias waveInGetDevCapsA waveInGetDevCaps; + alias waveInGetErrorTextA waveInGetErrorText; + alias midiOutGetDevCapsA midiOutGetDevCaps; + alias midiOutGetErrorTextA midiOutGetErrorText; + alias midiInGetDevCapsA midiInGetDevCaps; + alias midiInGetErrorTextA midiInGetErrorText; + alias auxGetDevCapsA auxGetDevCaps; + alias mixerGetDevCapsA mixerGetDevCaps; + alias mixerGetLineInfoA mixerGetLineInfo; + alias mixerGetLineControlsA mixerGetLineControls; + alias mixerGetControlDetailsA mixerGetControlDetails; + alias joyGetDevCapsA joyGetDevCaps; + alias mmioInstallIOProcA mmioInstallIOProc; + alias mmioStringToFOURCCA mmioStringToFOURCC; + alias mmioOpenA mmioOpen; + alias mmioRenameA mmioRename; + alias mciSendCommandA mciSendCommand; + alias mciSendStringA mciSendString; + alias mciGetDeviceIDA mciGetDeviceID; + alias mciGetDeviceIDFromElementIDA mciGetDeviceIDFromElementID; + alias mciGetErrorStringA mciGetErrorString; +} + +alias WAVEOUTCAPS* PWAVEOUTCAPS, LPWAVEOUTCAPS; +alias WAVEINCAPS* PWAVEINCAPS, LPWAVEINCAPS; +alias MIDIOUTCAPS* PMIDIOUTCAPS, LPMIDIOUTCAPS; +alias MIDIINCAPS* PMIDIINCAPS, LPMIDIINCAPS; +alias AUXCAPS* PAUXCAPS, LPAUXCAPS; +alias MIXERCAPS* PMIXERCAPS, LPMIXERCAPS; +alias MIXERLINE* PMIXERLINE, LPMIXERLINE; +alias MIXERCONTROL* PMIXERCONTROL, LPMIXERCONTROL; +alias MIXERLINECONTROLS* PMIXERLINECONTROLS, LPMIXERLINECONTROLS; +alias MIXERCONTROLDETAILS_LISTTEXT* PMIXERCONTROLDETAILS_LISTTEXT, LPMIXERCONTROLDETAILS_LISTTEXT; +alias JOYCAPS* PJOYCAPS, LPJOYCAPS; +alias MCI_OPEN_PARMS* PMCI_OPEN_PARMS, LPMCI_OPEN_PARMS; +alias MCI_INFO_PARMS* LPMCI_INFO_PARMS; +alias MCI_SYSINFO_PARMS* PMCI_SYSINFO_PARMS, LPMCI_SYSINFO_PARMS; +alias MCI_SAVE_PARMS* PMCI_SAVE_PARMS, LPMCI_SAVE_PARMS; +alias MCI_LOAD_PARMS* PMCI_LOAD_PARMS, LPMCI_LOAD_PARMS; +alias MCI_VD_ESCAPE_PARMS* PMCI_VD_ESCAPE_PARMS, LPMCI_VD_ESCAPE_PARMS; +alias MCI_WAVE_OPEN_PARMS* PMCI_WAVE_OPEN_PARMS, LPMCI_WAVE_OPEN_PARMS; +alias MCI_ANIM_OPEN_PARMS* PMCI_ANIM_OPEN_PARMS, LPMCI_ANIM_OPEN_PARMS; +alias MCI_ANIM_WINDOW_PARMS* PMCI_ANIM_WINDOW_PARMS, LPMCI_ANIM_WINDOW_PARMS; +alias MCI_OVLY_OPEN_PARMS* PMCI_OVLY_OPEN_PARMS, LPMCI_OVLY_OPEN_PARMS; +alias MCI_OVLY_WINDOW_PARMS* PMCI_OVLY_WINDOW_PARMS, LPMCI_OVLY_WINDOW_PARMS; +alias MCI_OVLY_SAVE_PARMS* PMCI_OVLY_SAVE_PARMS, LPMCI_OVLY_SAVE_PARMS; diff --git a/src/core/sys/windows/msacm.d b/src/core/sys/windows/msacm.d index 136cbfb85d..babbdd8bfe 100644 --- a/src/core/sys/windows/msacm.d +++ b/src/core/sys/windows/msacm.d @@ -1,172 +1,172 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_msacm.d) - */ -module core.sys.windows.msacm; - -private import core.sys.windows.basetsd, core.sys.windows.mmsystem, core.sys.windows.windef; - -mixin DECLARE_HANDLE!("HACMDRIVERID"); -mixin DECLARE_HANDLE!("HACMDRIVER"); -alias HACMDRIVER* LPHACMDRIVER; - -/* Comment from MinGW - found through experimentation - */ -const size_t - ACMDRIVERDETAILS_SHORTNAME_CHARS = 32, - ACMDRIVERDETAILS_LONGNAME_CHARS = 128, - ACMDRIVERDETAILS_COPYRIGHT_CHARS = 80, - ACMDRIVERDETAILS_LICENSING_CHARS = 128; - -/* Comment from MinGW - I don't know the right values for these macros - */ -const size_t - ACMFORMATDETAILS_FORMAT_CHARS = 256, - ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 256, - ACMDRIVERDETAILS_FEATURES_CHARS = 256; - -struct ACMFORMATDETAILSA { - DWORD cbStruct = ACMFORMATDETAILSA.sizeof; // are they? - DWORD dwFormatIndex; - DWORD dwFormatTag; - DWORD fdwSupport; - LPWAVEFORMATEX pwfx; - DWORD cbwfx; - char[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; -} -alias ACMFORMATDETAILSA* LPACMFORMATDETAILSA; - -struct ACMFORMATDETAILSW { - DWORD cbStruct = ACMFORMATDETAILSW.sizeof; - DWORD dwFormatIndex; - DWORD dwFormatTag; - DWORD fdwSupport; - LPWAVEFORMATEX pwfx; - DWORD cbwfx; - WCHAR[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; -} -alias ACMFORMATDETAILSW* LPACMFORMATDETAILSW; - -struct ACMFORMATTAGDETAILSA { - DWORD cbStruct = ACMFORMATTAGDETAILSA.sizeof; - DWORD dwFormatTagIndex; - DWORD dwFormatTag; - DWORD cbFormatSize; - DWORD fdwSupport; - DWORD cStandardFormats; - char[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; -} -alias ACMFORMATTAGDETAILSA* LPACMFORMATTAGDETAILSA; - -struct ACMFORMATTAGDETAILSW { - DWORD cbStruct = ACMFORMATTAGDETAILSW.sizeof; - DWORD dwFormatTagIndex; - DWORD dwFormatTag; - DWORD cbFormatSize; - DWORD fdwSupport; - DWORD cStandardFormats; - WCHAR[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; -} -alias ACMFORMATTAGDETAILSW* LPACMFORMATTAGDETAILSW; - -struct ACMDRIVERDETAILSA { - DWORD cbStruct = ACMDRIVERDETAILSA.sizeof; - FOURCC fccType; - FOURCC fccComp; - WORD wMid; - WORD wPid; - DWORD vdwACM; - DWORD vdwDriver; - DWORD fdwSupport; - DWORD cFormatTags; - DWORD cFilterTags; - HICON hicon; - char[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; - char[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; - char[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; - char[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; - char[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; -} -alias ACMDRIVERDETAILSA* LPACMDRIVERDETAILSA; - -struct ACMDRIVERDETAILSW { - DWORD cbStruct = ACMDRIVERDETAILSW.sizeof; - FOURCC fccType; - FOURCC fccComp; - WORD wMid; - WORD wPid; - DWORD vdwACM; - DWORD vdwDriver; - DWORD fdwSupport; - DWORD cFormatTags; - DWORD cFilterTags; - HICON hicon; - WCHAR[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; - WCHAR[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; - WCHAR[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; - WCHAR[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; - WCHAR[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; -} -alias ACMDRIVERDETAILSW* LPACMDRIVERDETAILSW; - -extern (Windows) { - alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSA pafd, - DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBA; - alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSW pafd, - DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBW; - alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSA paftd, - DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBA; - alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSW paftd, - DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBW; - alias BOOL function(HACMDRIVERID hadid, DWORD_PTR dwInstance, - DWORD fdwSupport) ACMDRIVERENUMCB; - - MMRESULT acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, - DWORD fdwOpen); - MMRESULT acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, - DWORD fdwEnum); - MMRESULT acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, - ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); - MMRESULT acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, - ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); - MMRESULT acmDriverClose(HACMDRIVER had, DWORD fdwClose); - MMRESULT acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, - DWORD fdwDetails); - MMRESULT acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, - DWORD fdwDetails); - MMRESULT acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, - ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); - MMRESULT acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, - ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); -} - -version (Unicode) { - alias ACMFORMATDETAILSW ACMFORMATDETAILS; - alias ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS; - alias ACMDRIVERDETAILSW ACMDRIVERDETAILS; - alias ACMFORMATENUMCBW ACMFORMATENUMCB; - alias ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB; - alias acmFormatEnumW acmFormatEnum; - alias acmDriverDetailsW acmDriverDetails; - alias acmFormatTagEnumW acmFormatTagEnum; -} else { - alias ACMFORMATDETAILSA ACMFORMATDETAILS; - alias ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS; - alias ACMDRIVERDETAILSA ACMDRIVERDETAILS; - alias ACMFORMATENUMCBA ACMFORMATENUMCB; - alias ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB; - alias acmFormatEnumA acmFormatEnum; - alias acmDriverDetailsA acmDriverDetails; - alias acmFormatTagEnumA acmFormatTagEnum; -} - -alias ACMFORMATDETAILS* LPACMFORMATDETAILS; -alias ACMFORMATTAGDETAILS* LPACMFORMATTAGDETAILS; -alias ACMDRIVERDETAILS* LPACMDRIVERDETAILS; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_msacm.d) + */ +module core.sys.windows.msacm; + +private import core.sys.windows.basetsd, core.sys.windows.mmsystem, core.sys.windows.windef; + +mixin DECLARE_HANDLE!("HACMDRIVERID"); +mixin DECLARE_HANDLE!("HACMDRIVER"); +alias HACMDRIVER* LPHACMDRIVER; + +/* Comment from MinGW + found through experimentation + */ +const size_t + ACMDRIVERDETAILS_SHORTNAME_CHARS = 32, + ACMDRIVERDETAILS_LONGNAME_CHARS = 128, + ACMDRIVERDETAILS_COPYRIGHT_CHARS = 80, + ACMDRIVERDETAILS_LICENSING_CHARS = 128; + +/* Comment from MinGW + I don't know the right values for these macros + */ +const size_t + ACMFORMATDETAILS_FORMAT_CHARS = 256, + ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 256, + ACMDRIVERDETAILS_FEATURES_CHARS = 256; + +struct ACMFORMATDETAILSA { + DWORD cbStruct = ACMFORMATDETAILSA.sizeof; // are they? + DWORD dwFormatIndex; + DWORD dwFormatTag; + DWORD fdwSupport; + LPWAVEFORMATEX pwfx; + DWORD cbwfx; + char[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; +} +alias ACMFORMATDETAILSA* LPACMFORMATDETAILSA; + +struct ACMFORMATDETAILSW { + DWORD cbStruct = ACMFORMATDETAILSW.sizeof; + DWORD dwFormatIndex; + DWORD dwFormatTag; + DWORD fdwSupport; + LPWAVEFORMATEX pwfx; + DWORD cbwfx; + WCHAR[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; +} +alias ACMFORMATDETAILSW* LPACMFORMATDETAILSW; + +struct ACMFORMATTAGDETAILSA { + DWORD cbStruct = ACMFORMATTAGDETAILSA.sizeof; + DWORD dwFormatTagIndex; + DWORD dwFormatTag; + DWORD cbFormatSize; + DWORD fdwSupport; + DWORD cStandardFormats; + char[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; +} +alias ACMFORMATTAGDETAILSA* LPACMFORMATTAGDETAILSA; + +struct ACMFORMATTAGDETAILSW { + DWORD cbStruct = ACMFORMATTAGDETAILSW.sizeof; + DWORD dwFormatTagIndex; + DWORD dwFormatTag; + DWORD cbFormatSize; + DWORD fdwSupport; + DWORD cStandardFormats; + WCHAR[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; +} +alias ACMFORMATTAGDETAILSW* LPACMFORMATTAGDETAILSW; + +struct ACMDRIVERDETAILSA { + DWORD cbStruct = ACMDRIVERDETAILSA.sizeof; + FOURCC fccType; + FOURCC fccComp; + WORD wMid; + WORD wPid; + DWORD vdwACM; + DWORD vdwDriver; + DWORD fdwSupport; + DWORD cFormatTags; + DWORD cFilterTags; + HICON hicon; + char[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; + char[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; + char[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; + char[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; + char[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; +} +alias ACMDRIVERDETAILSA* LPACMDRIVERDETAILSA; + +struct ACMDRIVERDETAILSW { + DWORD cbStruct = ACMDRIVERDETAILSW.sizeof; + FOURCC fccType; + FOURCC fccComp; + WORD wMid; + WORD wPid; + DWORD vdwACM; + DWORD vdwDriver; + DWORD fdwSupport; + DWORD cFormatTags; + DWORD cFilterTags; + HICON hicon; + WCHAR[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; + WCHAR[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; + WCHAR[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; + WCHAR[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; + WCHAR[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; +} +alias ACMDRIVERDETAILSW* LPACMDRIVERDETAILSW; + +extern (Windows) { + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSA pafd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBA; + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSW pafd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBW; + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSA paftd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBA; + alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSW paftd, + DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBW; + alias BOOL function(HACMDRIVERID hadid, DWORD_PTR dwInstance, + DWORD fdwSupport) ACMDRIVERENUMCB; + + MMRESULT acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, + DWORD fdwOpen); + MMRESULT acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, + DWORD fdwEnum); + MMRESULT acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, + ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); + MMRESULT acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, + ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); + MMRESULT acmDriverClose(HACMDRIVER had, DWORD fdwClose); + MMRESULT acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, + DWORD fdwDetails); + MMRESULT acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, + DWORD fdwDetails); + MMRESULT acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, + ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); + MMRESULT acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, + ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); +} + +version (Unicode) { + alias ACMFORMATDETAILSW ACMFORMATDETAILS; + alias ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS; + alias ACMDRIVERDETAILSW ACMDRIVERDETAILS; + alias ACMFORMATENUMCBW ACMFORMATENUMCB; + alias ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB; + alias acmFormatEnumW acmFormatEnum; + alias acmDriverDetailsW acmDriverDetails; + alias acmFormatTagEnumW acmFormatTagEnum; +} else { + alias ACMFORMATDETAILSA ACMFORMATDETAILS; + alias ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS; + alias ACMDRIVERDETAILSA ACMDRIVERDETAILS; + alias ACMFORMATENUMCBA ACMFORMATENUMCB; + alias ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB; + alias acmFormatEnumA acmFormatEnum; + alias acmDriverDetailsA acmDriverDetails; + alias acmFormatTagEnumA acmFormatTagEnum; +} + +alias ACMFORMATDETAILS* LPACMFORMATDETAILS; +alias ACMFORMATTAGDETAILS* LPACMFORMATTAGDETAILS; +alias ACMDRIVERDETAILS* LPACMDRIVERDETAILS; diff --git a/src/core/sys/windows/mshtml.d b/src/core/sys/windows/mshtml.d index 5d41bc6ac8..0152db1f87 100644 --- a/src/core/sys/windows/mshtml.d +++ b/src/core/sys/windows/mshtml.d @@ -1,535 +1,535 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_mshtml.d) - */ -module core.sys.windows.mshtml; - -private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.unknwn, - core.sys.windows.windef, core.sys.windows.wtypes; - -// These are used in this file, but not defined in MinGW. -interface IHTMLStyleSheet {}; -alias IHTMLStyle LPHTMLSTYLE; -alias IHTMLStyleSheet LPHTMLSTYLESHEET; -interface IHTMLLocation {}; -alias IHTMLLocation LPHTMLLOCATION; -interface IHTMLFramesCollection {}; -alias IHTMLFramesCollection LPHTMLFRAMESCOLLECTION; -interface IHTMLStyleSheetsCollection {}; -alias IHTMLStyleSheetsCollection LPHTMLSTYLESHEETSCOLLECTION; -interface IHTMLStyle {}; -interface IHTMLFiltersCollection {}; -alias IHTMLFiltersCollection LPHTMLFILTERSCOLLECTION; -interface IOmHistory : IDispatch { - HRESULT get_length(short* p); - HRESULT back(VARIANT*); - HRESULT forward(VARIANT*); - HRESULT go(VARIANT*); -}; -alias IOmHistory LPOMHISTORY; -interface IOmNavigator {}; -alias IOmNavigator LPOMNAVIGATOR; -interface IHTMLImageElementFactory {}; -alias IHTMLImageElementFactory LPHTMLIMAGEELEMENTFACTORY; -interface IHTMLEventObj {}; -alias IHTMLEventObj LPHTMLEVENTOBJ; -interface IHTMLScreen {}; -alias IHTMLScreen LPHTMLSCREEN; -interface IHTMLOptionElementFactory {}; -alias IHTMLOptionElementFactory LPHTMLOPTIONELEMENTFACTORY; - -interface IHTMLLinkElement : IDispatch { - HRESULT put_href(BSTR); - HRESULT get_href(BSTR*); - HRESULT put_rel(BSTR); - HRESULT get_rel(BSTR*); - HRESULT put_rev(BSTR); - HRESULT get_rev(BSTR*); - HRESULT put_type(BSTR); - HRESULT get_type(BSTR*); - HRESULT get_readyState(BSTR*); - HRESULT put_onreadystatechange(VARIANT); - HRESULT get_onreadystatechange(VARIANT*); - HRESULT put_onload(VARIANT); - HRESULT get_onload(VARIANT*); - HRESULT put_onerror(VARIANT); - HRESULT get_onerror(VARIANT*); - HRESULT get_styleSheet(LPHTMLSTYLESHEET*); - HRESULT put_disabled(VARIANT_BOOL); - HRESULT get_disabled(VARIANT_BOOL*); - HRESULT put_media(BSTR); - HRESULT get_media(BSTR*); -} -alias IHTMLLinkElement LPHTMLLINKELEMENT; - -interface IHTMLImgElement : IDispatch { - HRESULT put_isMap(VARIANT_BOOL); - HRESULT get_isMap(VARIANT_BOOL*); - HRESULT put_useMap(BSTR); - HRESULT get_useMap(BSTR*); - HRESULT get_mimeType(BSTR*); - HRESULT get_fileSize(BSTR*); - HRESULT get_fileCreatedDate(BSTR*); - HRESULT get_fileModifiedDate(BSTR*); - HRESULT get_fileUpdatedDate(BSTR*); - HRESULT get_protocol(BSTR*); - HRESULT get_href(BSTR*); - HRESULT get_nameProp(BSTR*); - HRESULT put_border(VARIANT); - HRESULT get_border(VARIANT*); - HRESULT put_vspace(LONG); - HRESULT get_vspace(LONG*); - HRESULT put_hspace(LONG); - HRESULT get_hspace(LONG*); - HRESULT put_alt(BSTR); - HRESULT get_alt(BSTR*); - HRESULT put_src(BSTR); - HRESULT get_src(BSTR*); - HRESULT put_lowsrc(BSTR); - HRESULT get_lowsrc(BSTR*); - HRESULT put_vrml(BSTR); - HRESULT get_vrml(BSTR*); - HRESULT put_dynsrc(BSTR); - HRESULT get_dynsrc(BSTR*); - HRESULT get_readyState(BSTR*); - HRESULT get_complete(VARIANT_BOOL*); - HRESULT put_loop(VARIANT); - HRESULT get_loop(VARIANT*); - HRESULT put_align(BSTR); - HRESULT get_align(BSTR*); - HRESULT put_onload(VARIANT); - HRESULT get_onload(VARIANT*); - HRESULT put_onerror(VARIANT); - HRESULT get_onerror(VARIANT*); - HRESULT put_onabort(VARIANT); - HRESULT get_onabort(VARIANT*); - HRESULT put_name(BSTR); - HRESULT get_name(BSTR*); - HRESULT put_width(LONG); - HRESULT get_width(LONG*); - HRESULT put_height(LONG); - HRESULT get_height(LONG*); - HRESULT put_start(BSTR); - HRESULT get_start(BSTR*); -} -alias IHTMLImgElement LPHTMLIMGELEMENT; - -interface IHTMLElementCollection : IDispatch { - HRESULT toString(BSTR*); - HRESULT put_length(LONG); - HRESULT get_length(LONG*); - HRESULT get__newEnum(IUnknown*); - HRESULT item(VARIANT,VARIANT,IDispatch* pDisp); - HRESULT tags(VARIANT,IDispatch* pdisp); -} -alias IHTMLElementCollection LPHTMLELEMENTCOLLECTION; - -interface IHTMLDocument : IDispatch { - HRESULT get_Script(IDispatch*); -} - -interface IHTMLDocument2 : IHTMLDocument { - HRESULT get_all(LPHTMLELEMENTCOLLECTION*); - HRESULT get_body(LPHTMLELEMENT*); - HRESULT get_activeElement(LPHTMLELEMENT*); - HRESULT get_images(LPHTMLELEMENTCOLLECTION*); - HRESULT get_applets(LPHTMLELEMENTCOLLECTION*); - HRESULT get_links(LPHTMLELEMENTCOLLECTION*); - HRESULT get_forms(LPHTMLELEMENTCOLLECTION*); - HRESULT get_anchors(LPHTMLELEMENTCOLLECTION*); - HRESULT put_title(BSTR); - HRESULT get_title(BSTR*); - HRESULT get_scripts(LPHTMLELEMENTCOLLECTION*); - HRESULT put_designMode(BSTR); - HRESULT get_designMode(BSTR*); - HRESULT get_selection(LPHTMLSELECTIONOBJECT*); - HRESULT get_readyState(BSTR*); - HRESULT get_frames(IHTMLFramesCollection2*); - HRESULT get_embeds(LPHTMLELEMENTCOLLECTION*); - HRESULT get_plugins(LPHTMLELEMENTCOLLECTION*); - HRESULT put_alinkColor(VARIANT); - HRESULT get_alinkColor(VARIANT*); - HRESULT put_bgColor(VARIANT); - HRESULT get_bgColor(VARIANT*); - HRESULT put_fgColor(VARIANT); - HRESULT get_fgColor(VARIANT*); - HRESULT put_linkColor(VARIANT); - HRESULT get_linkColor(VARIANT*); - HRESULT put_vlinkColor(VARIANT); - HRESULT get_vlinkColor(VARIANT*); - HRESULT get_referrer(BSTR*); - HRESULT get_location(LPHTMLLOCATION*); - HRESULT get_lastModified(BSTR*); - HRESULT put_url(BSTR); - HRESULT get_url(BSTR*); - HRESULT put_domain(BSTR); - HRESULT get_domain(BSTR*); - HRESULT put_cookie(BSTR); - HRESULT get_cookie(BSTR*); - HRESULT put_expands(VARIANT_BOOL); - HRESULT get_expands(VARIANT_BOOL*); - HRESULT put_charset(BSTR); - HRESULT get_charset(BSTR*); - HRESULT put_defaultCharset(BSTR); - HRESULT get_defaultCharset(BSTR*); - HRESULT get_mimeType(BSTR*); - HRESULT get_fileSize(BSTR*); - HRESULT get_fileCreatedDate(BSTR*); - HRESULT get_fileModifiedDate(BSTR*); - HRESULT get_fileUpdatedDate(BSTR*); - HRESULT get_security(BSTR*); - HRESULT get_protocol(BSTR*); - HRESULT get_nameProp(BSTR*); - HRESULT write(SAFEARRAY*); - HRESULT writeln(SAFEARRAY*); - HRESULT open(BSTR,VARIANT,VARIANT,VARIANT,IDispatch*); - HRESULT close(); - HRESULT clear(); - HRESULT queryCommandSupported(BSTR,VARIANT_BOOL*); - HRESULT queryCommandEnabled(BSTR,VARIANT_BOOL*); - HRESULT queryCommandState(BSTR,VARIANT_BOOL*); - HRESULT queryCommandIndeterm(BSTR,VARIANT_BOOL*); - HRESULT queryCommandText(BSTR,BSTR*); - HRESULT queryCommandValue(BSTR,VARIANT*); - HRESULT execCommand(BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*); - HRESULT execCommandShowHelp(BSTR,VARIANT_BOOL*); - HRESULT createElement(BSTR,LPHTMLELEMENT*); - HRESULT put_onhelp(VARIANT); - HRESULT get_onhelp(VARIANT*); - HRESULT put_onclick(VARIANT); - HRESULT get_onclick(VARIANT*); - HRESULT put_ondblclick(VARIANT); - HRESULT get_ondblclick(VARIANT*); - HRESULT put_onkeyup(VARIANT); - HRESULT get_onkeyup(VARIANT*); - HRESULT put_onkeydown(VARIANT); - HRESULT get_onkeydown(VARIANT*); - HRESULT put_onkeypress(VARIANT); - HRESULT get_onkeypress(VARIANT*); - HRESULT put_onmouseup(VARIANT); - HRESULT get_onmouseup(VARIANT*); - HRESULT put_onmousedown(VARIANT); - HRESULT get_onmousedown(VARIANT*); - HRESULT put_onmousemove(VARIANT); - HRESULT get_onmousemove(VARIANT*); - HRESULT put_onmouseout(VARIANT); - HRESULT get_onmouseout(VARIANT*); - HRESULT put_onmouseover(VARIANT); - HRESULT get_onmouseover(VARIANT*); - HRESULT put_onreadystatechange(VARIANT); - HRESULT get_onreadystatechange(VARIANT*); - HRESULT put_onafterupdate(VARIANT); - HRESULT get_onafterupdate(VARIANT*); - HRESULT put_onrowexit(VARIANT); - HRESULT get_onrowexit(VARIANT*); - HRESULT put_onrowenter(VARIANT); - HRESULT get_onrowenter(VARIANT*); - HRESULT put_ondragstart(VARIANT); - HRESULT get_ondragstart(VARIANT*); - HRESULT put_onselectstart(VARIANT); - HRESULT get_onselectstart(VARIANT*); - HRESULT elementFromPoint(LONG,LONG,LPHTMLELEMENT*); - HRESULT get_parentWindow(LPHTMLWINDOW2*); - HRESULT get_styleSheets(LPHTMLSTYLESHEETSCOLLECTION*); - HRESULT put_onbeforeupdate(VARIANT); - HRESULT get_onbeforeupdate(VARIANT*); - HRESULT put_onerrorupdate(VARIANT); - HRESULT get_onerrorupdate(VARIANT*); - HRESULT toString(BSTR*); - HRESULT createStyleSheet(BSTR,LONG,LPHTMLSTYLESHEET*); -} - -interface IHTMLSelectionObject : IDispatch { - HRESULT createRange(IDispatch*); - HRESULT empty(); - HRESULT clear(); - HRESULT get_type(BSTR*); -} -alias IHTMLSelectionObject LPHTMLSELECTIONOBJECT; - -interface IHTMLTxtRange : IDispatch { - HRESULT get_htmlText(BSTR*); - HRESULT put_text(BSTR); - HRESULT get_text(BSTR*); - HRESULT parentElement(LPHTMLELEMENT*); - HRESULT duplicate(IHTMLTxtRange*); - HRESULT inRange(IHTMLTxtRange,VARIANT_BOOL*); - HRESULT isEqual(IHTMLTxtRange,VARIANT_BOOL*); - HRESULT scrollIntoView(VARIANT_BOOL); - HRESULT collapse(VARIANT_BOOL); - HRESULT expand(BSTR,VARIANT_BOOL*); - HRESULT move(BSTR,LONG,LONG*); - HRESULT moveStart(BSTR,LONG,LONG*); - HRESULT moveEnd(BSTR,LONG,LONG*); - HRESULT select(); - HRESULT pasteHTML(BSTR); - HRESULT moveToElementText(LPHTMLELEMENT); - HRESULT setEndPoint(BSTR,IHTMLTxtRange); - HRESULT compareEndPoints(BSTR,IHTMLTxtRange,LONG*); - HRESULT findText(BSTR,LONG,LONG,VARIANT_BOOL*); - HRESULT moveToPoint(LONG,LONG); - HRESULT getBookmark(BSTR*); - HRESULT moveToBookbark(BSTR,VARIANT_BOOL*); - HRESULT queryCommandSupported(BSTR,VARIANT_BOOL*); - HRESULT queryCommandEnabled(BSTR,VARIANT_BOOL*); - HRESULT queryCommandState(BSTR,VARIANT_BOOL*); - HRESULT queryCommandIndeterm(BSTR,VARIANT_BOOL*); - HRESULT queryCommandText(BSTR,BSTR*); - HRESULT queryCommandValue(BSTR,VARIANT*); - HRESULT execCommand(BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*); - HRESULT execCommandShowHelp(BSTR,VARIANT_BOOL*); -} - -interface IHTMLElement : IDispatch { - HRESULT setAttribute(BSTR,VARIANT,LONG); - HRESULT getAttribute(BSTR,LONG,VARIANT*); - HRESULT removeAttribute(BSTR,LONG,VARIANT_BOOL*); - HRESULT put_className(BSTR); - HRESULT get_className(ref BSTR); - HRESULT put_id(BSTR); - HRESULT get_id(ref BSTR); - HRESULT get_tagName(ref BSTR); - HRESULT get_parentElement(LPHTMLELEMENT*); - HRESULT get_style(LPHTMLSTYLE*); - HRESULT put_onhelp(VARIANT); - HRESULT get_onhelp(VARIANT*); - HRESULT put_onclick(VARIANT); - HRESULT get_onclick(VARIANT*); - HRESULT put_ondblclick(VARIANT); - HRESULT get_ondblclick(VARIANT*); - HRESULT put_onkeydown(VARIANT); - HRESULT get_onkeydown(VARIANT*); - HRESULT put_onkeyup(VARIANT); - HRESULT get_onkeyup(VARIANT*); - HRESULT put_onkeypress(VARIANT); - HRESULT get_onkeypress(VARIANT*); - HRESULT put_onmouseout(VARIANT); - HRESULT get_onmouseout(VARIANT*); - HRESULT put_onmouseover(VARIANT); - HRESULT get_onmouseover(VARIANT*); - HRESULT put_onmousemove(VARIANT); - HRESULT get_onmousemove(VARIANT*); - HRESULT put_onmousedown(VARIANT); - HRESULT get_onmousedown(VARIANT*); - HRESULT put_onmouseup(VARIANT); - HRESULT get_onmouseup(VARIANT*); - HRESULT get_document(IDispatch*); - HRESULT put_title(BSTR); - HRESULT get_title(ref BSTR); - HRESULT put_language(BSTR); - HRESULT get_language(ref BSTR); - HRESULT put_onselectstart(VARIANT); - HRESULT get_onselectstart(VARIANT*); - HRESULT scrollIntoView(VARIANT); - HRESULT contains(LPHTMLELEMENT,VARIANT_BOOL*); - HRESULT get_source3Index(LONG*); - HRESULT get_recordNumber(VARIANT*); - HRESULT put_lang(BSTR); - HRESULT get_lang(ref BSTR); - HRESULT get_offsetLeft(LONG*); - HRESULT get_offsetTop(LONG*); - HRESULT get_offsetWidth(LONG*); - HRESULT get_offsetHeight(LONG*); - HRESULT get_offsetParent(LPHTMLELEMENT*); - HRESULT put_innerHTML(BSTR); - HRESULT get_innerHTML(ref BSTR); - HRESULT put_innerText(BSTR); - HRESULT get_innerText(ref BSTR); - HRESULT put_outerHTML(BSTR); - HRESULT get_outerHTML(ref BSTR); - HRESULT put_outerText(BSTR); - HRESULT get_outerText(ref BSTR); - HRESULT insertAdjacentHTML(BSTR,BSTR); - HRESULT insertAdjacentText(BSTR,BSTR); - HRESULT get_parentTextEdit(LPHTMLELEMENT*); - HRESULT isTextEdit(VARIANT_BOOL*); - HRESULT click(); - HRESULT get_filters(LPHTMLFILTERSCOLLECTION*); - HRESULT put_ondragstart(VARIANT); - HRESULT get_ondragstart(VARIANT*); - HRESULT toString(BSTR*); - HRESULT put_onbeforeupdate(VARIANT); - HRESULT get_onbeforeupdate(VARIANT*); - HRESULT put_onafterupdate(VARIANT); - HRESULT get_onafterupdate(VARIANT*); - HRESULT put_onerrorupdate(VARIANT); - HRESULT get_onerrorupdate(VARIANT*); - HRESULT put_onrowexit(VARIANT); - HRESULT get_onrowexit(VARIANT*); - HRESULT put_onrowenter(VARIANT); - HRESULT get_onrowenter(VARIANT*); - HRESULT put_ondatasetchanged(VARIANT); - HRESULT get_ondatasetchanged(VARIANT*); - HRESULT put_ondataavailable(VARIANT); - HRESULT get_ondataavailable(VARIANT*); - HRESULT put_ondatasetcomplete(VARIANT); - HRESULT get_ondatasetcomplete(VARIANT*); - HRESULT put_onfilterchange(VARIANT); - HRESULT get_onfilterchange(VARIANT*); - HRESULT get_children(IDispatch*); - HRESULT get_all(IDispatch*); -} -alias IHTMLElement LPHTMLELEMENT; - -interface IHTMLFramesCollection2 : IDispatch { - HRESULT item(VARIANT*,VARIANT*); - HRESULT get_length(LONG*); -} - -interface IHTMLWindow2 : IHTMLFramesCollection2 { - HRESULT get_frames(IHTMLFramesCollection2*); - HRESULT put_defaultStatus(BSTR); - HRESULT get_defaultStatus(BSTR*); - HRESULT put_status(BSTR); - HRESULT get_status(BSTR*); - HRESULT setTimeout(BSTR,LONG,VARIANT*,LONG*); - HRESULT clearTimeout(LONG); - HRESULT alert(BSTR); - HRESULT confirm(BSTR,VARIANT_BOOL*); - HRESULT prompt(BSTR,BSTR,VARIANT*); - HRESULT get_Image(LPHTMLIMAGEELEMENTFACTORY*); - HRESULT get_location(LPHTMLLOCATION*); - HRESULT get_history(LPOMHISTORY*); - HRESULT close(); - HRESULT put_opener(VARIANT); - HRESULT get_opener(VARIANT*); - HRESULT get_navigator(LPOMNAVIGATOR*); - HRESULT put_name(BSTR); - HRESULT get_name(BSTR*); - HRESULT get_parent(LPHTMLWINDOW2*); - HRESULT open(BSTR,BSTR,BSTR,VARIANT_BOOL,LPHTMLWINDOW2*); - HRESULT get_self(LPHTMLWINDOW2*); - HRESULT get_top(LPHTMLWINDOW2*); - HRESULT get_window(LPHTMLWINDOW2*); - HRESULT navigate(BSTR); - HRESULT put_onfocus(VARIANT); - HRESULT get_onfocus(VARIANT*); - HRESULT put_onblur(VARIANT); - HRESULT get_onblur(VARIANT*); - HRESULT put_onload(VARIANT); - HRESULT get_onload(VARIANT*); - HRESULT put_onbeforeunload(VARIANT); - HRESULT get_onbeforeunload(VARIANT*); - HRESULT put_onunload(VARIANT); - HRESULT get_onunload(VARIANT*); - HRESULT put_onhelp(VARIANT); - HRESULT get_onhelp(VARIANT*); - HRESULT put_onerror(VARIANT); - HRESULT get_onerror(VARIANT*); - HRESULT put_onresize(VARIANT); - HRESULT get_onresize(VARIANT*); - HRESULT put_onscroll(VARIANT); - HRESULT get_onscroll(VARIANT*); - HRESULT get_document(IHTMLDocument2*); - HRESULT get_event(LPHTMLEVENTOBJ*); - HRESULT get__newEnum(IUnknown*); - HRESULT showModalDialog(BSTR,VARIANT*,VARIANT*,VARIANT*); - HRESULT showHelp(BSTR,VARIANT,BSTR); - HRESULT get_screen(LPHTMLSCREEN*); - HRESULT get_Option(LPHTMLOPTIONELEMENTFACTORY*); - HRESULT focus(); - HRESULT get_closed(VARIANT_BOOL*); - HRESULT blur(); - HRESULT scroll(long,long); - HRESULT get_clientInformation(LPOMNAVIGATOR*); - HRESULT setInterval(BSTR,long,VARIANT*,long*); - HRESULT clearInterval(long); - HRESULT put_offscreenBuffering(VARIANT); - HRESULT get_offscreenBuffering(VARIANT*); - HRESULT execScript(BSTR,BSTR,VARIANT*); - HRESULT toString(BSTR*); - HRESULT scrollBy(LONG,LONG); - HRESULT scrollTo(LONG,LONG); - HRESULT moveTo(LONG,LONG); - HRESULT moveBy(LONG,LONG); - HRESULT resizeTo(LONG,LONG); - HRESULT resizeBy(LONG,LONG); - HRESULT get_external(IDispatch*); -} -alias IHTMLWindow2 LPHTMLWINDOW2; - -interface IHTMLFrameBase : IDispatch { - HRESULT put_src(BSTR); - HRESULT get_src(BSTR*); - HRESULT put_name(BSTR); - HRESULT get_name(BSTR*); - HRESULT put_border(VARIANT); - HRESULT get_border(VARIANT*); - HRESULT put_frameBorder(BSTR); - HRESULT get_frameBorder(BSTR*); - HRESULT put_frameSpacing(VARIANT); - HRESULT get_frameSpacing(VARIANT*); - HRESULT put_marginWidth(VARIANT); - HRESULT get_marginWidth(VARIANT*); - HRESULT put_marginHeight(VARIANT); - HRESULT get_marginHeight(VARIANT*); - HRESULT put_noResize(VARIANT_BOOL); - HRESULT get_noResize(VARIANT_BOOL*); - HRESULT put_scrolling(BSTR); - HRESULT get_scrolling(BSTR*); -} - -interface IHTMLFrameBase2 : IDispatch { - HRESULT get_contentWindow(IHTMLWindow2*); - HRESULT put_onload(VARIANT); - HRESULT get_onload(VARIANT*); - HRESULT put_onreadystatechange(VARIANT); - HRESULT get_onreadystatechange(VARIANT*); - HRESULT get_readyState(BSTR*); - HRESULT put_allowTransparency(VARIANT_BOOL); - HRESULT get_allowTransparency(VARIANT_BOOL*); -} - -interface IHTMLFrameBase3 : IDispatch { - HRESULT put_longDesc(BSTR); - HRESULT get_longDesc(BSTR*); -} - -interface IHTMLBodyElement : IDispatch { - HRESULT put_background(BSTR); - HRESULT get_background(BSTR*); - HRESULT put_bgProperties(BSTR); - HRESULT get_bgProperties(BSTR*); - HRESULT put_leftMargin(VARIANT); - HRESULT get_leftMargin(VARIANT*); - HRESULT put_topMargin(VARIANT); - HRESULT get_topMargin(VARIANT*); - HRESULT put_rightMargin(VARIANT); - HRESULT get_rightMargin(VARIANT*); - HRESULT put_bottomMargin(VARIANT); - HRESULT get_bottomMargin(VARIANT*); - HRESULT put_noWrap(VARIANT_BOOL); - HRESULT get_noWrap(VARIANT_BOOL*); - HRESULT put_bgColor(VARIANT); - HRESULT get_bgColor(VARIANT*); - HRESULT put_text(VARIANT); - HRESULT get_text(VARIANT*); - HRESULT put_link(VARIANT); - HRESULT get_link(VARIANT*); - HRESULT put_vLink(VARIANT); - HRESULT get_vLink(VARIANT*); - HRESULT put_aLink(VARIANT); - HRESULT get_aLink(VARIANT*); - HRESULT put_onload(VARIANT); - HRESULT get_onload(VARIANT*); - HRESULT put_onunload(VARIANT); - HRESULT get_onunload(VARIANT*); - HRESULT put_scroll(BSTR); - HRESULT get_scroll(BSTR*); - HRESULT put_onselect(VARIANT); - HRESULT get_onselect(VARIANT*); - HRESULT put_onbeforeunload(VARIANT); - HRESULT get_onbeforeunload(VARIANT*); - HRESULT createTextRange(IHTMLTxtRange*); -} - -interface IHTMLBodyElement2 : IDispatch { - HRESULT put_onbeforeprint(VARIANT); - HRESULT get_onbeforeprint(VARIANT*); - HRESULT put_onafterprint(VARIANT); - HRESULT get_onafterprint(VARIANT*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mshtml.d) + */ +module core.sys.windows.mshtml; + +private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.unknwn, + core.sys.windows.windef, core.sys.windows.wtypes; + +// These are used in this file, but not defined in MinGW. +interface IHTMLStyleSheet {}; +alias IHTMLStyle LPHTMLSTYLE; +alias IHTMLStyleSheet LPHTMLSTYLESHEET; +interface IHTMLLocation {}; +alias IHTMLLocation LPHTMLLOCATION; +interface IHTMLFramesCollection {}; +alias IHTMLFramesCollection LPHTMLFRAMESCOLLECTION; +interface IHTMLStyleSheetsCollection {}; +alias IHTMLStyleSheetsCollection LPHTMLSTYLESHEETSCOLLECTION; +interface IHTMLStyle {}; +interface IHTMLFiltersCollection {}; +alias IHTMLFiltersCollection LPHTMLFILTERSCOLLECTION; +interface IOmHistory : IDispatch { + HRESULT get_length(short* p); + HRESULT back(VARIANT*); + HRESULT forward(VARIANT*); + HRESULT go(VARIANT*); +}; +alias IOmHistory LPOMHISTORY; +interface IOmNavigator {}; +alias IOmNavigator LPOMNAVIGATOR; +interface IHTMLImageElementFactory {}; +alias IHTMLImageElementFactory LPHTMLIMAGEELEMENTFACTORY; +interface IHTMLEventObj {}; +alias IHTMLEventObj LPHTMLEVENTOBJ; +interface IHTMLScreen {}; +alias IHTMLScreen LPHTMLSCREEN; +interface IHTMLOptionElementFactory {}; +alias IHTMLOptionElementFactory LPHTMLOPTIONELEMENTFACTORY; + +interface IHTMLLinkElement : IDispatch { + HRESULT put_href(BSTR); + HRESULT get_href(BSTR*); + HRESULT put_rel(BSTR); + HRESULT get_rel(BSTR*); + HRESULT put_rev(BSTR); + HRESULT get_rev(BSTR*); + HRESULT put_type(BSTR); + HRESULT get_type(BSTR*); + HRESULT get_readyState(BSTR*); + HRESULT put_onreadystatechange(VARIANT); + HRESULT get_onreadystatechange(VARIANT*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onerror(VARIANT); + HRESULT get_onerror(VARIANT*); + HRESULT get_styleSheet(LPHTMLSTYLESHEET*); + HRESULT put_disabled(VARIANT_BOOL); + HRESULT get_disabled(VARIANT_BOOL*); + HRESULT put_media(BSTR); + HRESULT get_media(BSTR*); +} +alias IHTMLLinkElement LPHTMLLINKELEMENT; + +interface IHTMLImgElement : IDispatch { + HRESULT put_isMap(VARIANT_BOOL); + HRESULT get_isMap(VARIANT_BOOL*); + HRESULT put_useMap(BSTR); + HRESULT get_useMap(BSTR*); + HRESULT get_mimeType(BSTR*); + HRESULT get_fileSize(BSTR*); + HRESULT get_fileCreatedDate(BSTR*); + HRESULT get_fileModifiedDate(BSTR*); + HRESULT get_fileUpdatedDate(BSTR*); + HRESULT get_protocol(BSTR*); + HRESULT get_href(BSTR*); + HRESULT get_nameProp(BSTR*); + HRESULT put_border(VARIANT); + HRESULT get_border(VARIANT*); + HRESULT put_vspace(LONG); + HRESULT get_vspace(LONG*); + HRESULT put_hspace(LONG); + HRESULT get_hspace(LONG*); + HRESULT put_alt(BSTR); + HRESULT get_alt(BSTR*); + HRESULT put_src(BSTR); + HRESULT get_src(BSTR*); + HRESULT put_lowsrc(BSTR); + HRESULT get_lowsrc(BSTR*); + HRESULT put_vrml(BSTR); + HRESULT get_vrml(BSTR*); + HRESULT put_dynsrc(BSTR); + HRESULT get_dynsrc(BSTR*); + HRESULT get_readyState(BSTR*); + HRESULT get_complete(VARIANT_BOOL*); + HRESULT put_loop(VARIANT); + HRESULT get_loop(VARIANT*); + HRESULT put_align(BSTR); + HRESULT get_align(BSTR*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onerror(VARIANT); + HRESULT get_onerror(VARIANT*); + HRESULT put_onabort(VARIANT); + HRESULT get_onabort(VARIANT*); + HRESULT put_name(BSTR); + HRESULT get_name(BSTR*); + HRESULT put_width(LONG); + HRESULT get_width(LONG*); + HRESULT put_height(LONG); + HRESULT get_height(LONG*); + HRESULT put_start(BSTR); + HRESULT get_start(BSTR*); +} +alias IHTMLImgElement LPHTMLIMGELEMENT; + +interface IHTMLElementCollection : IDispatch { + HRESULT toString(BSTR*); + HRESULT put_length(LONG); + HRESULT get_length(LONG*); + HRESULT get__newEnum(IUnknown*); + HRESULT item(VARIANT,VARIANT,IDispatch* pDisp); + HRESULT tags(VARIANT,IDispatch* pdisp); +} +alias IHTMLElementCollection LPHTMLELEMENTCOLLECTION; + +interface IHTMLDocument : IDispatch { + HRESULT get_Script(IDispatch*); +} + +interface IHTMLDocument2 : IHTMLDocument { + HRESULT get_all(LPHTMLELEMENTCOLLECTION*); + HRESULT get_body(LPHTMLELEMENT*); + HRESULT get_activeElement(LPHTMLELEMENT*); + HRESULT get_images(LPHTMLELEMENTCOLLECTION*); + HRESULT get_applets(LPHTMLELEMENTCOLLECTION*); + HRESULT get_links(LPHTMLELEMENTCOLLECTION*); + HRESULT get_forms(LPHTMLELEMENTCOLLECTION*); + HRESULT get_anchors(LPHTMLELEMENTCOLLECTION*); + HRESULT put_title(BSTR); + HRESULT get_title(BSTR*); + HRESULT get_scripts(LPHTMLELEMENTCOLLECTION*); + HRESULT put_designMode(BSTR); + HRESULT get_designMode(BSTR*); + HRESULT get_selection(LPHTMLSELECTIONOBJECT*); + HRESULT get_readyState(BSTR*); + HRESULT get_frames(IHTMLFramesCollection2*); + HRESULT get_embeds(LPHTMLELEMENTCOLLECTION*); + HRESULT get_plugins(LPHTMLELEMENTCOLLECTION*); + HRESULT put_alinkColor(VARIANT); + HRESULT get_alinkColor(VARIANT*); + HRESULT put_bgColor(VARIANT); + HRESULT get_bgColor(VARIANT*); + HRESULT put_fgColor(VARIANT); + HRESULT get_fgColor(VARIANT*); + HRESULT put_linkColor(VARIANT); + HRESULT get_linkColor(VARIANT*); + HRESULT put_vlinkColor(VARIANT); + HRESULT get_vlinkColor(VARIANT*); + HRESULT get_referrer(BSTR*); + HRESULT get_location(LPHTMLLOCATION*); + HRESULT get_lastModified(BSTR*); + HRESULT put_url(BSTR); + HRESULT get_url(BSTR*); + HRESULT put_domain(BSTR); + HRESULT get_domain(BSTR*); + HRESULT put_cookie(BSTR); + HRESULT get_cookie(BSTR*); + HRESULT put_expands(VARIANT_BOOL); + HRESULT get_expands(VARIANT_BOOL*); + HRESULT put_charset(BSTR); + HRESULT get_charset(BSTR*); + HRESULT put_defaultCharset(BSTR); + HRESULT get_defaultCharset(BSTR*); + HRESULT get_mimeType(BSTR*); + HRESULT get_fileSize(BSTR*); + HRESULT get_fileCreatedDate(BSTR*); + HRESULT get_fileModifiedDate(BSTR*); + HRESULT get_fileUpdatedDate(BSTR*); + HRESULT get_security(BSTR*); + HRESULT get_protocol(BSTR*); + HRESULT get_nameProp(BSTR*); + HRESULT write(SAFEARRAY*); + HRESULT writeln(SAFEARRAY*); + HRESULT open(BSTR,VARIANT,VARIANT,VARIANT,IDispatch*); + HRESULT close(); + HRESULT clear(); + HRESULT queryCommandSupported(BSTR,VARIANT_BOOL*); + HRESULT queryCommandEnabled(BSTR,VARIANT_BOOL*); + HRESULT queryCommandState(BSTR,VARIANT_BOOL*); + HRESULT queryCommandIndeterm(BSTR,VARIANT_BOOL*); + HRESULT queryCommandText(BSTR,BSTR*); + HRESULT queryCommandValue(BSTR,VARIANT*); + HRESULT execCommand(BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*); + HRESULT execCommandShowHelp(BSTR,VARIANT_BOOL*); + HRESULT createElement(BSTR,LPHTMLELEMENT*); + HRESULT put_onhelp(VARIANT); + HRESULT get_onhelp(VARIANT*); + HRESULT put_onclick(VARIANT); + HRESULT get_onclick(VARIANT*); + HRESULT put_ondblclick(VARIANT); + HRESULT get_ondblclick(VARIANT*); + HRESULT put_onkeyup(VARIANT); + HRESULT get_onkeyup(VARIANT*); + HRESULT put_onkeydown(VARIANT); + HRESULT get_onkeydown(VARIANT*); + HRESULT put_onkeypress(VARIANT); + HRESULT get_onkeypress(VARIANT*); + HRESULT put_onmouseup(VARIANT); + HRESULT get_onmouseup(VARIANT*); + HRESULT put_onmousedown(VARIANT); + HRESULT get_onmousedown(VARIANT*); + HRESULT put_onmousemove(VARIANT); + HRESULT get_onmousemove(VARIANT*); + HRESULT put_onmouseout(VARIANT); + HRESULT get_onmouseout(VARIANT*); + HRESULT put_onmouseover(VARIANT); + HRESULT get_onmouseover(VARIANT*); + HRESULT put_onreadystatechange(VARIANT); + HRESULT get_onreadystatechange(VARIANT*); + HRESULT put_onafterupdate(VARIANT); + HRESULT get_onafterupdate(VARIANT*); + HRESULT put_onrowexit(VARIANT); + HRESULT get_onrowexit(VARIANT*); + HRESULT put_onrowenter(VARIANT); + HRESULT get_onrowenter(VARIANT*); + HRESULT put_ondragstart(VARIANT); + HRESULT get_ondragstart(VARIANT*); + HRESULT put_onselectstart(VARIANT); + HRESULT get_onselectstart(VARIANT*); + HRESULT elementFromPoint(LONG,LONG,LPHTMLELEMENT*); + HRESULT get_parentWindow(LPHTMLWINDOW2*); + HRESULT get_styleSheets(LPHTMLSTYLESHEETSCOLLECTION*); + HRESULT put_onbeforeupdate(VARIANT); + HRESULT get_onbeforeupdate(VARIANT*); + HRESULT put_onerrorupdate(VARIANT); + HRESULT get_onerrorupdate(VARIANT*); + HRESULT toString(BSTR*); + HRESULT createStyleSheet(BSTR,LONG,LPHTMLSTYLESHEET*); +} + +interface IHTMLSelectionObject : IDispatch { + HRESULT createRange(IDispatch*); + HRESULT empty(); + HRESULT clear(); + HRESULT get_type(BSTR*); +} +alias IHTMLSelectionObject LPHTMLSELECTIONOBJECT; + +interface IHTMLTxtRange : IDispatch { + HRESULT get_htmlText(BSTR*); + HRESULT put_text(BSTR); + HRESULT get_text(BSTR*); + HRESULT parentElement(LPHTMLELEMENT*); + HRESULT duplicate(IHTMLTxtRange*); + HRESULT inRange(IHTMLTxtRange,VARIANT_BOOL*); + HRESULT isEqual(IHTMLTxtRange,VARIANT_BOOL*); + HRESULT scrollIntoView(VARIANT_BOOL); + HRESULT collapse(VARIANT_BOOL); + HRESULT expand(BSTR,VARIANT_BOOL*); + HRESULT move(BSTR,LONG,LONG*); + HRESULT moveStart(BSTR,LONG,LONG*); + HRESULT moveEnd(BSTR,LONG,LONG*); + HRESULT select(); + HRESULT pasteHTML(BSTR); + HRESULT moveToElementText(LPHTMLELEMENT); + HRESULT setEndPoint(BSTR,IHTMLTxtRange); + HRESULT compareEndPoints(BSTR,IHTMLTxtRange,LONG*); + HRESULT findText(BSTR,LONG,LONG,VARIANT_BOOL*); + HRESULT moveToPoint(LONG,LONG); + HRESULT getBookmark(BSTR*); + HRESULT moveToBookbark(BSTR,VARIANT_BOOL*); + HRESULT queryCommandSupported(BSTR,VARIANT_BOOL*); + HRESULT queryCommandEnabled(BSTR,VARIANT_BOOL*); + HRESULT queryCommandState(BSTR,VARIANT_BOOL*); + HRESULT queryCommandIndeterm(BSTR,VARIANT_BOOL*); + HRESULT queryCommandText(BSTR,BSTR*); + HRESULT queryCommandValue(BSTR,VARIANT*); + HRESULT execCommand(BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*); + HRESULT execCommandShowHelp(BSTR,VARIANT_BOOL*); +} + +interface IHTMLElement : IDispatch { + HRESULT setAttribute(BSTR,VARIANT,LONG); + HRESULT getAttribute(BSTR,LONG,VARIANT*); + HRESULT removeAttribute(BSTR,LONG,VARIANT_BOOL*); + HRESULT put_className(BSTR); + HRESULT get_className(ref BSTR); + HRESULT put_id(BSTR); + HRESULT get_id(ref BSTR); + HRESULT get_tagName(ref BSTR); + HRESULT get_parentElement(LPHTMLELEMENT*); + HRESULT get_style(LPHTMLSTYLE*); + HRESULT put_onhelp(VARIANT); + HRESULT get_onhelp(VARIANT*); + HRESULT put_onclick(VARIANT); + HRESULT get_onclick(VARIANT*); + HRESULT put_ondblclick(VARIANT); + HRESULT get_ondblclick(VARIANT*); + HRESULT put_onkeydown(VARIANT); + HRESULT get_onkeydown(VARIANT*); + HRESULT put_onkeyup(VARIANT); + HRESULT get_onkeyup(VARIANT*); + HRESULT put_onkeypress(VARIANT); + HRESULT get_onkeypress(VARIANT*); + HRESULT put_onmouseout(VARIANT); + HRESULT get_onmouseout(VARIANT*); + HRESULT put_onmouseover(VARIANT); + HRESULT get_onmouseover(VARIANT*); + HRESULT put_onmousemove(VARIANT); + HRESULT get_onmousemove(VARIANT*); + HRESULT put_onmousedown(VARIANT); + HRESULT get_onmousedown(VARIANT*); + HRESULT put_onmouseup(VARIANT); + HRESULT get_onmouseup(VARIANT*); + HRESULT get_document(IDispatch*); + HRESULT put_title(BSTR); + HRESULT get_title(ref BSTR); + HRESULT put_language(BSTR); + HRESULT get_language(ref BSTR); + HRESULT put_onselectstart(VARIANT); + HRESULT get_onselectstart(VARIANT*); + HRESULT scrollIntoView(VARIANT); + HRESULT contains(LPHTMLELEMENT,VARIANT_BOOL*); + HRESULT get_source3Index(LONG*); + HRESULT get_recordNumber(VARIANT*); + HRESULT put_lang(BSTR); + HRESULT get_lang(ref BSTR); + HRESULT get_offsetLeft(LONG*); + HRESULT get_offsetTop(LONG*); + HRESULT get_offsetWidth(LONG*); + HRESULT get_offsetHeight(LONG*); + HRESULT get_offsetParent(LPHTMLELEMENT*); + HRESULT put_innerHTML(BSTR); + HRESULT get_innerHTML(ref BSTR); + HRESULT put_innerText(BSTR); + HRESULT get_innerText(ref BSTR); + HRESULT put_outerHTML(BSTR); + HRESULT get_outerHTML(ref BSTR); + HRESULT put_outerText(BSTR); + HRESULT get_outerText(ref BSTR); + HRESULT insertAdjacentHTML(BSTR,BSTR); + HRESULT insertAdjacentText(BSTR,BSTR); + HRESULT get_parentTextEdit(LPHTMLELEMENT*); + HRESULT isTextEdit(VARIANT_BOOL*); + HRESULT click(); + HRESULT get_filters(LPHTMLFILTERSCOLLECTION*); + HRESULT put_ondragstart(VARIANT); + HRESULT get_ondragstart(VARIANT*); + HRESULT toString(BSTR*); + HRESULT put_onbeforeupdate(VARIANT); + HRESULT get_onbeforeupdate(VARIANT*); + HRESULT put_onafterupdate(VARIANT); + HRESULT get_onafterupdate(VARIANT*); + HRESULT put_onerrorupdate(VARIANT); + HRESULT get_onerrorupdate(VARIANT*); + HRESULT put_onrowexit(VARIANT); + HRESULT get_onrowexit(VARIANT*); + HRESULT put_onrowenter(VARIANT); + HRESULT get_onrowenter(VARIANT*); + HRESULT put_ondatasetchanged(VARIANT); + HRESULT get_ondatasetchanged(VARIANT*); + HRESULT put_ondataavailable(VARIANT); + HRESULT get_ondataavailable(VARIANT*); + HRESULT put_ondatasetcomplete(VARIANT); + HRESULT get_ondatasetcomplete(VARIANT*); + HRESULT put_onfilterchange(VARIANT); + HRESULT get_onfilterchange(VARIANT*); + HRESULT get_children(IDispatch*); + HRESULT get_all(IDispatch*); +} +alias IHTMLElement LPHTMLELEMENT; + +interface IHTMLFramesCollection2 : IDispatch { + HRESULT item(VARIANT*,VARIANT*); + HRESULT get_length(LONG*); +} + +interface IHTMLWindow2 : IHTMLFramesCollection2 { + HRESULT get_frames(IHTMLFramesCollection2*); + HRESULT put_defaultStatus(BSTR); + HRESULT get_defaultStatus(BSTR*); + HRESULT put_status(BSTR); + HRESULT get_status(BSTR*); + HRESULT setTimeout(BSTR,LONG,VARIANT*,LONG*); + HRESULT clearTimeout(LONG); + HRESULT alert(BSTR); + HRESULT confirm(BSTR,VARIANT_BOOL*); + HRESULT prompt(BSTR,BSTR,VARIANT*); + HRESULT get_Image(LPHTMLIMAGEELEMENTFACTORY*); + HRESULT get_location(LPHTMLLOCATION*); + HRESULT get_history(LPOMHISTORY*); + HRESULT close(); + HRESULT put_opener(VARIANT); + HRESULT get_opener(VARIANT*); + HRESULT get_navigator(LPOMNAVIGATOR*); + HRESULT put_name(BSTR); + HRESULT get_name(BSTR*); + HRESULT get_parent(LPHTMLWINDOW2*); + HRESULT open(BSTR,BSTR,BSTR,VARIANT_BOOL,LPHTMLWINDOW2*); + HRESULT get_self(LPHTMLWINDOW2*); + HRESULT get_top(LPHTMLWINDOW2*); + HRESULT get_window(LPHTMLWINDOW2*); + HRESULT navigate(BSTR); + HRESULT put_onfocus(VARIANT); + HRESULT get_onfocus(VARIANT*); + HRESULT put_onblur(VARIANT); + HRESULT get_onblur(VARIANT*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onbeforeunload(VARIANT); + HRESULT get_onbeforeunload(VARIANT*); + HRESULT put_onunload(VARIANT); + HRESULT get_onunload(VARIANT*); + HRESULT put_onhelp(VARIANT); + HRESULT get_onhelp(VARIANT*); + HRESULT put_onerror(VARIANT); + HRESULT get_onerror(VARIANT*); + HRESULT put_onresize(VARIANT); + HRESULT get_onresize(VARIANT*); + HRESULT put_onscroll(VARIANT); + HRESULT get_onscroll(VARIANT*); + HRESULT get_document(IHTMLDocument2*); + HRESULT get_event(LPHTMLEVENTOBJ*); + HRESULT get__newEnum(IUnknown*); + HRESULT showModalDialog(BSTR,VARIANT*,VARIANT*,VARIANT*); + HRESULT showHelp(BSTR,VARIANT,BSTR); + HRESULT get_screen(LPHTMLSCREEN*); + HRESULT get_Option(LPHTMLOPTIONELEMENTFACTORY*); + HRESULT focus(); + HRESULT get_closed(VARIANT_BOOL*); + HRESULT blur(); + HRESULT scroll(long,long); + HRESULT get_clientInformation(LPOMNAVIGATOR*); + HRESULT setInterval(BSTR,long,VARIANT*,long*); + HRESULT clearInterval(long); + HRESULT put_offscreenBuffering(VARIANT); + HRESULT get_offscreenBuffering(VARIANT*); + HRESULT execScript(BSTR,BSTR,VARIANT*); + HRESULT toString(BSTR*); + HRESULT scrollBy(LONG,LONG); + HRESULT scrollTo(LONG,LONG); + HRESULT moveTo(LONG,LONG); + HRESULT moveBy(LONG,LONG); + HRESULT resizeTo(LONG,LONG); + HRESULT resizeBy(LONG,LONG); + HRESULT get_external(IDispatch*); +} +alias IHTMLWindow2 LPHTMLWINDOW2; + +interface IHTMLFrameBase : IDispatch { + HRESULT put_src(BSTR); + HRESULT get_src(BSTR*); + HRESULT put_name(BSTR); + HRESULT get_name(BSTR*); + HRESULT put_border(VARIANT); + HRESULT get_border(VARIANT*); + HRESULT put_frameBorder(BSTR); + HRESULT get_frameBorder(BSTR*); + HRESULT put_frameSpacing(VARIANT); + HRESULT get_frameSpacing(VARIANT*); + HRESULT put_marginWidth(VARIANT); + HRESULT get_marginWidth(VARIANT*); + HRESULT put_marginHeight(VARIANT); + HRESULT get_marginHeight(VARIANT*); + HRESULT put_noResize(VARIANT_BOOL); + HRESULT get_noResize(VARIANT_BOOL*); + HRESULT put_scrolling(BSTR); + HRESULT get_scrolling(BSTR*); +} + +interface IHTMLFrameBase2 : IDispatch { + HRESULT get_contentWindow(IHTMLWindow2*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onreadystatechange(VARIANT); + HRESULT get_onreadystatechange(VARIANT*); + HRESULT get_readyState(BSTR*); + HRESULT put_allowTransparency(VARIANT_BOOL); + HRESULT get_allowTransparency(VARIANT_BOOL*); +} + +interface IHTMLFrameBase3 : IDispatch { + HRESULT put_longDesc(BSTR); + HRESULT get_longDesc(BSTR*); +} + +interface IHTMLBodyElement : IDispatch { + HRESULT put_background(BSTR); + HRESULT get_background(BSTR*); + HRESULT put_bgProperties(BSTR); + HRESULT get_bgProperties(BSTR*); + HRESULT put_leftMargin(VARIANT); + HRESULT get_leftMargin(VARIANT*); + HRESULT put_topMargin(VARIANT); + HRESULT get_topMargin(VARIANT*); + HRESULT put_rightMargin(VARIANT); + HRESULT get_rightMargin(VARIANT*); + HRESULT put_bottomMargin(VARIANT); + HRESULT get_bottomMargin(VARIANT*); + HRESULT put_noWrap(VARIANT_BOOL); + HRESULT get_noWrap(VARIANT_BOOL*); + HRESULT put_bgColor(VARIANT); + HRESULT get_bgColor(VARIANT*); + HRESULT put_text(VARIANT); + HRESULT get_text(VARIANT*); + HRESULT put_link(VARIANT); + HRESULT get_link(VARIANT*); + HRESULT put_vLink(VARIANT); + HRESULT get_vLink(VARIANT*); + HRESULT put_aLink(VARIANT); + HRESULT get_aLink(VARIANT*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onunload(VARIANT); + HRESULT get_onunload(VARIANT*); + HRESULT put_scroll(BSTR); + HRESULT get_scroll(BSTR*); + HRESULT put_onselect(VARIANT); + HRESULT get_onselect(VARIANT*); + HRESULT put_onbeforeunload(VARIANT); + HRESULT get_onbeforeunload(VARIANT*); + HRESULT createTextRange(IHTMLTxtRange*); +} + +interface IHTMLBodyElement2 : IDispatch { + HRESULT put_onbeforeprint(VARIANT); + HRESULT get_onbeforeprint(VARIANT*); + HRESULT put_onafterprint(VARIANT); + HRESULT get_onafterprint(VARIANT*); +} diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index 8adff40867..8f19f99ac3 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -1,196 +1,196 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Daniel Keep - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_mswsock.d) - */ -module core.sys.windows.mswsock; - -import core.sys.windows.winbase, core.sys.windows.windef; -private import core.sys.windows.basetyps, core.sys.windows.w32api; - -// FIXME: clean up Windows version support - -version (Win32_Winsock2) pragma(msg, - "Version Win32_Winsock2 is deprecated; Winsock2 is now imported by default"); - -// Pull in Winsock1 if the user has put "Win32_Winsock1" on the compile -// line; otherwise, default to Winsock2. -version (Win32_Winsock1) { - import core.sys.windows.winsock; -} else { - import core.sys.windows.winsock2; -} - -//static if (_WIN32_WINNT >= 0x500) { - enum { - /* WinNT5+: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_MAXDG = 0x7009, - SO_MAXPATHDG = 0x700A, - } -//} - -enum { - /* WinNT4+: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options_for_windows_nt_4_0_2.htm */ - SO_CONNDATA = 0x7000, - SO_CONNOPT = 0x7001, - SO_DISCDATA = 0x7002, - SO_DISCOPT = 0x7003, - SO_CONNDATALEN = 0x7004, - SO_CONNOPTLEN = 0x7005, - SO_DISCDATALEN = 0x7006, - SO_DISCOPTLEN = 0x7007, - - /* WinNT4: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_UPDATE_ACCEPT_CONTENT = 0x700B, -} - -enum { - /* Win95+, WinNT4+ but apparently shouldn't used: mark as deprecated? - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_OPENTYPE = 0x7008, - - /* Win95+; these two are passed to the SO_OPENTYPE option as arguments, - so would they be deprecated as well? - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_SYNCHRONOUS_ALERT = 0x0010, - SO_SYNCHRONOUS_NONALERT = 0x0020, - - /* Win95: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_CONNECT_TIME = 0x700C, -} - - -enum { - TCP_BSDURGENT = 0x7000, -} - -/* These *appear* to be constants for passing to the TransmitFile / - TransmitPackets functions, which are available in WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ -enum { - TF_DISCONNECT = 1, - TF_REUSE_SOCKET = 2, - TF_WRITE_BEHIND = 4, - TF_USE_DEFAULT_WORKER = 0, - TF_USE_SYSTEM_THREAD = 16, - TF_USE_KERNEL_APC = 32 -} - -/* Win95+, WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_file_buffers_2.htm */ -struct TRANSMIT_FILE_BUFFERS { - PVOID Head; - DWORD HeadLength; - PVOID Tail; - DWORD TailLength; -} -alias TRANSMIT_FILE_BUFFERS* PTRANSMIT_FILE_BUFFERS, LPTRANSMIT_FILE_BUFFERS; - -extern(Windows) { - /* Win95+, WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvex_2.htm */ - int WSARecvEx(SOCKET, char*, int, int*); - - /* Win95+, WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/getacceptexSOCKADDRs_2.htm */ - VOID GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, SOCKADDR**, LPINT, SOCKADDR**, LPINT); - - /* WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ - BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD); - - /* WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */ - alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX; - const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; - - alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX; - const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; -} - -version(Win32_Winsock1) { -} else { - static if (_WIN32_WINNT > 0x501) { - /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT - * structure below, so I've given them the same minimum version - */ - enum { - TP_ELEMENT_FILE = 1, - TP_ELEMENT_MEMORY = 2, - TP_ELEMENT_EOP = 4 - } - - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm - */ - struct TRANSMIT_PACKETS_ELEMENT { - ULONG dwElFlags; - ULONG cLength; - union { - struct { - LARGE_INTEGER nFileOffset; - HANDLE hFile; - } - PVOID pBuffer; - } - } - - /* WinXP+, Server2003+: - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm - */ - struct WSAMSG { - LPSOCKADDR name; - INT namelen; - LPWSABUF lpBuffers; - DWORD dwBufferCount; - WSABUF Control; - DWORD dwFlags; - } - - alias WSAMSG* PWSAMSG, LPWSAMSG; - - /* According to MSDN docs, the WSAMSG.Control buffer starts with a - cmsghdr header of the following form. See also RFC 2292. */ - /* DK: Confirmed. So I suppose these should get the same version as - WSAMSG... */ - struct WSACMSGHDR { - UINT cmsg_len; - INT cmsg_level; - INT cmsg_type; - // followed by UCHAR cmsg_data[]; - } - - /* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */ - /* DK: MinGW doesn't define these, and neither does the MSDN docs. Might have - to actually look up RFC 2292... */ - /+ - #if 0 - #define WSA_CMSG_FIRSTHDR(mhdr) - #define WSA_CMSG_NXTHDR(mhdr, cmsg) - #define WSA_CMSG_SPACE(length) - #define WSA_CMSG_LEN(length) - #endif - +/ - - extern(Windows) - { - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm - */ - BOOL DisconnectEx(SOCKET, LPOVERLAPPED, DWORD, DWORD); - - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm - */ - int WSARecvMsg(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); - } - } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Daniel Keep + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_mswsock.d) + */ +module core.sys.windows.mswsock; + +import core.sys.windows.winbase, core.sys.windows.windef; +private import core.sys.windows.basetyps, core.sys.windows.w32api; + +// FIXME: clean up Windows version support + +version (Win32_Winsock2) pragma(msg, + "Version Win32_Winsock2 is deprecated; Winsock2 is now imported by default"); + +// Pull in Winsock1 if the user has put "Win32_Winsock1" on the compile +// line; otherwise, default to Winsock2. +version (Win32_Winsock1) { + import core.sys.windows.winsock; +} else { + import core.sys.windows.winsock2; +} + +//static if (_WIN32_WINNT >= 0x500) { + enum { + /* WinNT5+: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_MAXDG = 0x7009, + SO_MAXPATHDG = 0x700A, + } +//} + +enum { + /* WinNT4+: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options_for_windows_nt_4_0_2.htm */ + SO_CONNDATA = 0x7000, + SO_CONNOPT = 0x7001, + SO_DISCDATA = 0x7002, + SO_DISCOPT = 0x7003, + SO_CONNDATALEN = 0x7004, + SO_CONNOPTLEN = 0x7005, + SO_DISCDATALEN = 0x7006, + SO_DISCOPTLEN = 0x7007, + + /* WinNT4: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_UPDATE_ACCEPT_CONTENT = 0x700B, +} + +enum { + /* Win95+, WinNT4+ but apparently shouldn't used: mark as deprecated? + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_OPENTYPE = 0x7008, + + /* Win95+; these two are passed to the SO_OPENTYPE option as arguments, + so would they be deprecated as well? + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_SYNCHRONOUS_ALERT = 0x0010, + SO_SYNCHRONOUS_NONALERT = 0x0020, + + /* Win95: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_CONNECT_TIME = 0x700C, +} + + +enum { + TCP_BSDURGENT = 0x7000, +} + +/* These *appear* to be constants for passing to the TransmitFile / + TransmitPackets functions, which are available in WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ +enum { + TF_DISCONNECT = 1, + TF_REUSE_SOCKET = 2, + TF_WRITE_BEHIND = 4, + TF_USE_DEFAULT_WORKER = 0, + TF_USE_SYSTEM_THREAD = 16, + TF_USE_KERNEL_APC = 32 +} + +/* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_file_buffers_2.htm */ +struct TRANSMIT_FILE_BUFFERS { + PVOID Head; + DWORD HeadLength; + PVOID Tail; + DWORD TailLength; +} +alias TRANSMIT_FILE_BUFFERS* PTRANSMIT_FILE_BUFFERS, LPTRANSMIT_FILE_BUFFERS; + +extern(Windows) { + /* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvex_2.htm */ + int WSARecvEx(SOCKET, char*, int, int*); + + /* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/getacceptexSOCKADDRs_2.htm */ + VOID GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, SOCKADDR**, LPINT, SOCKADDR**, LPINT); + + /* WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ + BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD); + + /* WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */ + alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX; + const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; + + alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX; + const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; +} + +version(Win32_Winsock1) { +} else { + static if (_WIN32_WINNT > 0x501) { + /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT + * structure below, so I've given them the same minimum version + */ + enum { + TP_ELEMENT_FILE = 1, + TP_ELEMENT_MEMORY = 2, + TP_ELEMENT_EOP = 4 + } + + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm + */ + struct TRANSMIT_PACKETS_ELEMENT { + ULONG dwElFlags; + ULONG cLength; + union { + struct { + LARGE_INTEGER nFileOffset; + HANDLE hFile; + } + PVOID pBuffer; + } + } + + /* WinXP+, Server2003+: + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm + */ + struct WSAMSG { + LPSOCKADDR name; + INT namelen; + LPWSABUF lpBuffers; + DWORD dwBufferCount; + WSABUF Control; + DWORD dwFlags; + } + + alias WSAMSG* PWSAMSG, LPWSAMSG; + + /* According to MSDN docs, the WSAMSG.Control buffer starts with a + cmsghdr header of the following form. See also RFC 2292. */ + /* DK: Confirmed. So I suppose these should get the same version as + WSAMSG... */ + struct WSACMSGHDR { + UINT cmsg_len; + INT cmsg_level; + INT cmsg_type; + // followed by UCHAR cmsg_data[]; + } + + /* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */ + /* DK: MinGW doesn't define these, and neither does the MSDN docs. Might have + to actually look up RFC 2292... */ + /+ + #if 0 + #define WSA_CMSG_FIRSTHDR(mhdr) + #define WSA_CMSG_NXTHDR(mhdr, cmsg) + #define WSA_CMSG_SPACE(length) + #define WSA_CMSG_LEN(length) + #endif + +/ + + extern(Windows) + { + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm + */ + BOOL DisconnectEx(SOCKET, LPOVERLAPPED, DWORD, DWORD); + + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm + */ + int WSARecvMsg(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); + } + } +} diff --git a/src/core/sys/windows/nb30.d b/src/core/sys/windows/nb30.d index dca0bb5619..10664543fd 100644 --- a/src/core/sys/windows/nb30.d +++ b/src/core/sys/windows/nb30.d @@ -1,236 +1,236 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_nb30.d) - */ -module core.sys.windows.nb30; - -private import core.sys.windows.windef; - -const size_t - NCBNAMSZ = 16, - MAX_LANA = 254; - -// FIXME: are these really two sets of constants? -enum : UCHAR { - REGISTERING = 0, - REGISTERED = 4, - DEREGISTERED, - DUPLICATE, - DUPLICATE_DEREG, // = 7 - UNIQUE_NAME = 0, - GROUP_NAME = 0x80, - NAME_FLAGS_MASK = 0x87 -} - -enum : UCHAR { - LISTEN_OUTSTANDING = 1, - CALL_PENDING, - SESSION_ESTABLISHED, - HANGUP_PENDING, - HANGUP_COMPLETE, - SESSION_ABORTED // = 6 -} - -const char[4] - ALL_TRANSPORTS = "M\0\0\0", - MS_NBF = "MNBF"; - -enum : UCHAR { - NCBCALL = 0x10, - NCBLISTEN, - NCBHANGUP, // = 0x12 - NCBSEND = 0x14, - NCBRECV, - NCBRECVANY, - NCBCHAINSEND, // = 0x17 - NCBDGSEND = 0x20, - NCBDGRECV, - NCBDGSENDBC, - NCBDGRECVBC, // = 0x23, - NCBADDNAME = 0x30, - NCBDELNAME, - NCBRESET, - NCBASTAT, - NCBSSTAT, - NCBCANCEL, - NCBADDGRNAME, - NCBENUM, // = 0x37 - NCBUNLINK = 0x70, - NCBSENDNA, - NCBCHAINSENDNA, - NCBLANSTALERT, // = 0x73 - NCBACTION = 0x77, - NCBFINDNAME, - NCBTRACE // = 0x79 -} - -const UCHAR ASYNCH = 0x80; - -enum : UCHAR { - NRC_GOODRET = 0x00, - NRC_BUFLEN = 0x01, - NRC_ILLCMD = 0x03, - NRC_CMDTMO = 0x05, - NRC_INCOMP, - NRC_BADDR, - NRC_SNUMOUT, - NRC_NORES, - NRC_SCLOSED, - NRC_CMDCAN, // = 0x0b - NRC_DUPNAME = 0x0d, - NRC_NAMTFUL, - NRC_ACTSES, // = 0x0f, - NRC_LOCTFUL = 0x11, - NRC_REMTFUL, - NRC_ILLNN, - NRC_NOCALL, - NRC_NOWILD, - NRC_INUSE, - NRC_NAMERR, - NRC_SABORT, - NRC_NAMCONF, // = 0x19 - NRC_IFBUSY = 0x21, - NRC_TOOMANY, - NRC_BRIDGE, - NRC_CANOCCR, // = 0x24 - NRC_CANCEL = 0x26, - NRC_DUPENV = 0x30, - NRC_ENVNOTDEF = 0x34, - NRC_OSRESNOTAV, - NRC_MAXAPPS, - NRC_NOSAPS, - NRC_NORESOURCES, - NRC_INVADDRESS, // = 0x39 - NRC_INVDDID = 0x3B, - NRC_LOCKFAIL = 0x3C, - NRC_OPENERR = 0x3f, - NRC_SYSTEM = 0x40, - NRC_PENDING = 0xff -} - -struct ACTION_HEADER { - union { - /* transport_id is defined as a ULONG, but both the above constants - * and the documented description suggest it should be a char[4] - */ - ULONG transport_id; - char[4] c_transport_id; - } - USHORT action_code; - USHORT reserved; -} -alias ACTION_HEADER* PACTION_HEADER; - -struct ADAPTER_STATUS { - UCHAR[6] adapter_address; - UCHAR rev_major; - UCHAR reserved0; - UCHAR adapter_type; - UCHAR rev_minor; - WORD duration; - WORD frmr_recv; - WORD frmr_xmit; - WORD iframe_recv_err; - WORD xmit_aborts; - DWORD xmit_success; - DWORD recv_success; - WORD iframe_xmit_err; - WORD recv_buff_unavail; - WORD t1_timeouts; - WORD ti_timeouts; - DWORD reserved1; - WORD free_ncbs; - WORD max_cfg_ncbs; - WORD max_ncbs; - WORD xmit_buf_unavail; - WORD max_dgram_size; - WORD pending_sess; - WORD max_cfg_sess; - WORD max_sess; - WORD max_sess_pkt_size; - WORD name_count; -} -alias ADAPTER_STATUS* PADAPTER_STATUS; - -struct FIND_NAME_BUFFER { - /* From Win32 API docs - * - * length - * Specifies the length, in bytes, of the FIND_NAME_BUFFER - * structure. Although this structure always occupies 33 bytes, - * not all of the structure is necessarily valid. - * - * On this basis, should length be initialised? - */ - UCHAR length; - UCHAR access_control; - UCHAR frame_control; - UCHAR[6] destination_addr; - UCHAR[6] source_addr; - UCHAR[18] routing_info; -} -alias FIND_NAME_BUFFER* PFIND_NAME_BUFFER; - -struct FIND_NAME_HEADER { - WORD node_count; - UCHAR reserved; - UCHAR unique_group; -} -alias FIND_NAME_HEADER* PFIND_NAME_HEADER; - -struct LANA_ENUM { - UCHAR length; - UCHAR[MAX_LANA+1] lana; -} -alias LANA_ENUM* PLANA_ENUM; - -struct NAME_BUFFER { - UCHAR[NCBNAMSZ] name; - UCHAR name_num; - UCHAR name_flags; -} -alias NAME_BUFFER* PNAME_BUFFER; - -struct NCB { - UCHAR ncb_command; - UCHAR ncb_retcode; - UCHAR ncb_lsn; - UCHAR ncb_num; - PUCHAR ncb_buffer; - WORD ncb_length; - UCHAR[NCBNAMSZ] ncb_callname; - UCHAR[NCBNAMSZ] ncb_name; - UCHAR ncb_rto; - UCHAR ncb_sto; - extern (Windows) void function(NCB*) ncb_post; - UCHAR ncb_lana_num; - UCHAR ncb_cmd_cplt; - UCHAR[10] ncb_reserve; - HANDLE ncb_event; -} -alias NCB* PNCB; - -struct SESSION_BUFFER { - UCHAR lsn; - UCHAR state; - UCHAR[NCBNAMSZ] local_name; - UCHAR[NCBNAMSZ] remote_name; - UCHAR rcvs_outstanding; - UCHAR sends_outstanding; -} -alias SESSION_BUFFER* PSESSION_BUFFER; - -struct SESSION_HEADER { - UCHAR sess_name; - UCHAR num_sess; - UCHAR rcv_dg_outstanding; - UCHAR rcv_any_outstanding; -} -alias SESSION_HEADER* PSESSION_HEADER; - -extern (Windows) UCHAR Netbios(PNCB); +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_nb30.d) + */ +module core.sys.windows.nb30; + +private import core.sys.windows.windef; + +const size_t + NCBNAMSZ = 16, + MAX_LANA = 254; + +// FIXME: are these really two sets of constants? +enum : UCHAR { + REGISTERING = 0, + REGISTERED = 4, + DEREGISTERED, + DUPLICATE, + DUPLICATE_DEREG, // = 7 + UNIQUE_NAME = 0, + GROUP_NAME = 0x80, + NAME_FLAGS_MASK = 0x87 +} + +enum : UCHAR { + LISTEN_OUTSTANDING = 1, + CALL_PENDING, + SESSION_ESTABLISHED, + HANGUP_PENDING, + HANGUP_COMPLETE, + SESSION_ABORTED // = 6 +} + +const char[4] + ALL_TRANSPORTS = "M\0\0\0", + MS_NBF = "MNBF"; + +enum : UCHAR { + NCBCALL = 0x10, + NCBLISTEN, + NCBHANGUP, // = 0x12 + NCBSEND = 0x14, + NCBRECV, + NCBRECVANY, + NCBCHAINSEND, // = 0x17 + NCBDGSEND = 0x20, + NCBDGRECV, + NCBDGSENDBC, + NCBDGRECVBC, // = 0x23, + NCBADDNAME = 0x30, + NCBDELNAME, + NCBRESET, + NCBASTAT, + NCBSSTAT, + NCBCANCEL, + NCBADDGRNAME, + NCBENUM, // = 0x37 + NCBUNLINK = 0x70, + NCBSENDNA, + NCBCHAINSENDNA, + NCBLANSTALERT, // = 0x73 + NCBACTION = 0x77, + NCBFINDNAME, + NCBTRACE // = 0x79 +} + +const UCHAR ASYNCH = 0x80; + +enum : UCHAR { + NRC_GOODRET = 0x00, + NRC_BUFLEN = 0x01, + NRC_ILLCMD = 0x03, + NRC_CMDTMO = 0x05, + NRC_INCOMP, + NRC_BADDR, + NRC_SNUMOUT, + NRC_NORES, + NRC_SCLOSED, + NRC_CMDCAN, // = 0x0b + NRC_DUPNAME = 0x0d, + NRC_NAMTFUL, + NRC_ACTSES, // = 0x0f, + NRC_LOCTFUL = 0x11, + NRC_REMTFUL, + NRC_ILLNN, + NRC_NOCALL, + NRC_NOWILD, + NRC_INUSE, + NRC_NAMERR, + NRC_SABORT, + NRC_NAMCONF, // = 0x19 + NRC_IFBUSY = 0x21, + NRC_TOOMANY, + NRC_BRIDGE, + NRC_CANOCCR, // = 0x24 + NRC_CANCEL = 0x26, + NRC_DUPENV = 0x30, + NRC_ENVNOTDEF = 0x34, + NRC_OSRESNOTAV, + NRC_MAXAPPS, + NRC_NOSAPS, + NRC_NORESOURCES, + NRC_INVADDRESS, // = 0x39 + NRC_INVDDID = 0x3B, + NRC_LOCKFAIL = 0x3C, + NRC_OPENERR = 0x3f, + NRC_SYSTEM = 0x40, + NRC_PENDING = 0xff +} + +struct ACTION_HEADER { + union { + /* transport_id is defined as a ULONG, but both the above constants + * and the documented description suggest it should be a char[4] + */ + ULONG transport_id; + char[4] c_transport_id; + } + USHORT action_code; + USHORT reserved; +} +alias ACTION_HEADER* PACTION_HEADER; + +struct ADAPTER_STATUS { + UCHAR[6] adapter_address; + UCHAR rev_major; + UCHAR reserved0; + UCHAR adapter_type; + UCHAR rev_minor; + WORD duration; + WORD frmr_recv; + WORD frmr_xmit; + WORD iframe_recv_err; + WORD xmit_aborts; + DWORD xmit_success; + DWORD recv_success; + WORD iframe_xmit_err; + WORD recv_buff_unavail; + WORD t1_timeouts; + WORD ti_timeouts; + DWORD reserved1; + WORD free_ncbs; + WORD max_cfg_ncbs; + WORD max_ncbs; + WORD xmit_buf_unavail; + WORD max_dgram_size; + WORD pending_sess; + WORD max_cfg_sess; + WORD max_sess; + WORD max_sess_pkt_size; + WORD name_count; +} +alias ADAPTER_STATUS* PADAPTER_STATUS; + +struct FIND_NAME_BUFFER { + /* From Win32 API docs + * + * length + * Specifies the length, in bytes, of the FIND_NAME_BUFFER + * structure. Although this structure always occupies 33 bytes, + * not all of the structure is necessarily valid. + * + * On this basis, should length be initialised? + */ + UCHAR length; + UCHAR access_control; + UCHAR frame_control; + UCHAR[6] destination_addr; + UCHAR[6] source_addr; + UCHAR[18] routing_info; +} +alias FIND_NAME_BUFFER* PFIND_NAME_BUFFER; + +struct FIND_NAME_HEADER { + WORD node_count; + UCHAR reserved; + UCHAR unique_group; +} +alias FIND_NAME_HEADER* PFIND_NAME_HEADER; + +struct LANA_ENUM { + UCHAR length; + UCHAR[MAX_LANA+1] lana; +} +alias LANA_ENUM* PLANA_ENUM; + +struct NAME_BUFFER { + UCHAR[NCBNAMSZ] name; + UCHAR name_num; + UCHAR name_flags; +} +alias NAME_BUFFER* PNAME_BUFFER; + +struct NCB { + UCHAR ncb_command; + UCHAR ncb_retcode; + UCHAR ncb_lsn; + UCHAR ncb_num; + PUCHAR ncb_buffer; + WORD ncb_length; + UCHAR[NCBNAMSZ] ncb_callname; + UCHAR[NCBNAMSZ] ncb_name; + UCHAR ncb_rto; + UCHAR ncb_sto; + extern (Windows) void function(NCB*) ncb_post; + UCHAR ncb_lana_num; + UCHAR ncb_cmd_cplt; + UCHAR[10] ncb_reserve; + HANDLE ncb_event; +} +alias NCB* PNCB; + +struct SESSION_BUFFER { + UCHAR lsn; + UCHAR state; + UCHAR[NCBNAMSZ] local_name; + UCHAR[NCBNAMSZ] remote_name; + UCHAR rcvs_outstanding; + UCHAR sends_outstanding; +} +alias SESSION_BUFFER* PSESSION_BUFFER; + +struct SESSION_HEADER { + UCHAR sess_name; + UCHAR num_sess; + UCHAR rcv_dg_outstanding; + UCHAR rcv_any_outstanding; +} +alias SESSION_HEADER* PSESSION_HEADER; + +extern (Windows) UCHAR Netbios(PNCB); diff --git a/src/core/sys/windows/nddeapi.d b/src/core/sys/windows/nddeapi.d index 7d4914feb1..4785f9af45 100644 --- a/src/core/sys/windows/nddeapi.d +++ b/src/core/sys/windows/nddeapi.d @@ -1,161 +1,161 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_nddeapi.d) - */ -module core.sys.windows.nddeapi; - -private import core.sys.windows.windef; - -// FIXME: check types and grouping of constants - -/+ -#ifndef CNLEN /* also in lmcons.h */ -#define CNLEN 15 -#define UNCLEN (CNLEN + 2) -#endif -+/ - -const char SEP_CHAR = ','; -const char[] BAR_CHAR = "|"; -const wchar SEP_WCHAR = ','; -const wchar[] BAR_WCHAR = "|"; - -enum { - NDDE_NO_ERROR, - NDDE_ACCESS_DENIED, - NDDE_BUF_TOO_SMALL, - NDDE_ERROR_MORE_DATA, - NDDE_INVALID_SERVER, - NDDE_INVALID_SHARE, - NDDE_INVALID_PARAMETER, - NDDE_INVALID_LEVEL, - NDDE_INVALID_PASSWORD, - NDDE_INVALID_ITEMNAME, - NDDE_INVALID_TOPIC, - NDDE_INTERNAL_ERROR, - NDDE_OUT_OF_MEMORY, - NDDE_INVALID_APPNAME, - NDDE_NOT_IMPLEMENTED, - NDDE_SHARE_ALREADY_EXIST, - NDDE_SHARE_NOT_EXIST, - NDDE_INVALID_FILENAME, - NDDE_NOT_RUNNING, - NDDE_INVALID_WINDOW, - NDDE_INVALID_SESSION, - NDDE_INVALID_ITEM_LIST, - NDDE_SHARE_DATA_CORRUPTED, - NDDE_REGISTRY_ERROR, - NDDE_CANT_ACCESS_SERVER, - NDDE_INVALID_SPECIAL_COMMAND, - NDDE_INVALID_SECURITY_DESC, - NDDE_TRUST_SHARE_FAIL -} - -const size_t - MAX_NDDESHARENAME = 256, - MAX_DOMAINNAME = 15, - MAX_USERNAME = 15, - MAX_APPNAME = 255, - MAX_TOPICNAME = 255, - MAX_ITEMNAME = 255; - -const NDDEF_NOPASSWORDPROMPT = 1; -const NDDEF_NOCACHELOOKUP = 2; -const NDDEF_STRIP_NDDE = 4; - -const SHARE_TYPE_OLD = 1; -const SHARE_TYPE_NEW = 2; -const SHARE_TYPE_STATIC = 4; - -const uint - NDDE_CMD_SHOW_MASK = 0x0000FFFF, - NDDE_TRUST_CMD_SHOW = 0x10000000, - NDDE_TRUST_SHARE_DEL = 0x20000000, - NDDE_TRUST_SHARE_INIT = 0x40000000, - NDDE_TRUST_SHARE_START = 0x80000000; - -struct NDdeShareInfo_tag { - LONG lRevision; - LPTSTR lpszShareName; - LONG lShareType; - LPTSTR lpszAppTopicList; - LONG fSharedFlag; - LONG fService; - LONG fStartAppFlag; - LONG nCmdShow; - LONG[2] qModifyId; - LONG cNumItems; - LPTSTR lpszItemList; -} -extern (C) { // huh? - NDdeShareInfo_tag NDDESHAREINFO; - NDdeShareInfo_tag* PNDDESHAREINFO; -} - -extern (Windows) { - UINT NDdeGetErrorStringA(UINT, LPSTR, DWORD); - UINT NDdeGetErrorStringW(UINT, LPWSTR, DWORD); - UINT NDdeGetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, DWORD, PDWORD); - UINT NDdeGetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, DWORD, PDWORD); - UINT NDdeGetTrustedShareA(LPSTR, LPSTR, PDWORD, PDWORD, PDWORD); - UINT NDdeGetTrustedShareW(LPWSTR, LPWSTR, PDWORD, PDWORD, PDWORD); - BOOL NDdeIsValidShareNameA(LPSTR); - BOOL NDdeIsValidShareNameW(LPWSTR); - BOOL NDdeIsValidAppTopicListA(LPSTR); - BOOL NDdeIsValidAppTopicListW(LPWSTR); - UINT NDdeSetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - UINT NDdeSetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - UINT NDdeSetTrustedShareA(LPSTR, LPSTR, DWORD); - UINT NDdeSetTrustedShareW(LPWSTR, LPWSTR, DWORD); - UINT NDdeShareAddA(LPSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); - UINT NDdeShareAddW(LPWSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); - UINT NDdeShareDelA(LPSTR, LPSTR, UINT); - UINT NDdeShareDelW(LPWSTR, LPWSTR, UINT); - UINT NDdeShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); - UINT NDdeShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); - UINT NDdeShareGetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); - UINT NDdeShareGetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); - UINT NDdeShareSetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, WORD); - UINT NDdeShareSetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, WORD); - UINT NDdeTrustedShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); - UINT NDdeTrustedShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); -} - -version (Unicode) { - alias NDdeShareAddW NDdeShareAdd; - alias NDdeShareDelW NDdeShareDel; - alias NDdeSetShareSecurityW NDdeSetShareSecurity; - alias NDdeGetShareSecurityW NDdeGetShareSecurity; - alias NDdeShareEnumW NDdeShareEnum; - alias NDdeShareGetInfoW NDdeShareGetInfo; - alias NDdeShareSetInfoW NDdeShareSetInfo; - alias NDdeGetErrorStringW NDdeGetErrorString; - alias NDdeIsValidShareNameW NDdeIsValidShareName; - alias NDdeIsValidAppTopicListW NDdeIsValidAppTopicList; - alias NDdeSetTrustedShareW NDdeSetTrustedShare; - alias NDdeGetTrustedShareW NDdeGetTrustedShare; - alias NDdeTrustedShareEnumW NDdeTrustedShareEnum; -} else { - alias NDdeShareAddA NDdeShareAdd; - alias NDdeShareDelA NDdeShareDel; - alias NDdeSetShareSecurityA NDdeSetShareSecurity; - alias NDdeGetShareSecurityA NDdeGetShareSecurity; - alias NDdeShareEnumA NDdeShareEnum; - alias NDdeShareGetInfoA NDdeShareGetInfo; - alias NDdeShareSetInfoA NDdeShareSetInfo; - alias NDdeGetErrorStringA NDdeGetErrorString; - alias NDdeIsValidShareNameA NDdeIsValidShareName; - alias NDdeIsValidAppTopicListA NDdeIsValidAppTopicList; - alias NDdeSetTrustedShareA NDdeSetTrustedShare; - alias NDdeGetTrustedShareA NDdeGetTrustedShare; - alias NDdeTrustedShareEnumA NDdeTrustedShareEnum; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_nddeapi.d) + */ +module core.sys.windows.nddeapi; + +private import core.sys.windows.windef; + +// FIXME: check types and grouping of constants + +/+ +#ifndef CNLEN /* also in lmcons.h */ +#define CNLEN 15 +#define UNCLEN (CNLEN + 2) +#endif ++/ + +const char SEP_CHAR = ','; +const char[] BAR_CHAR = "|"; +const wchar SEP_WCHAR = ','; +const wchar[] BAR_WCHAR = "|"; + +enum { + NDDE_NO_ERROR, + NDDE_ACCESS_DENIED, + NDDE_BUF_TOO_SMALL, + NDDE_ERROR_MORE_DATA, + NDDE_INVALID_SERVER, + NDDE_INVALID_SHARE, + NDDE_INVALID_PARAMETER, + NDDE_INVALID_LEVEL, + NDDE_INVALID_PASSWORD, + NDDE_INVALID_ITEMNAME, + NDDE_INVALID_TOPIC, + NDDE_INTERNAL_ERROR, + NDDE_OUT_OF_MEMORY, + NDDE_INVALID_APPNAME, + NDDE_NOT_IMPLEMENTED, + NDDE_SHARE_ALREADY_EXIST, + NDDE_SHARE_NOT_EXIST, + NDDE_INVALID_FILENAME, + NDDE_NOT_RUNNING, + NDDE_INVALID_WINDOW, + NDDE_INVALID_SESSION, + NDDE_INVALID_ITEM_LIST, + NDDE_SHARE_DATA_CORRUPTED, + NDDE_REGISTRY_ERROR, + NDDE_CANT_ACCESS_SERVER, + NDDE_INVALID_SPECIAL_COMMAND, + NDDE_INVALID_SECURITY_DESC, + NDDE_TRUST_SHARE_FAIL +} + +const size_t + MAX_NDDESHARENAME = 256, + MAX_DOMAINNAME = 15, + MAX_USERNAME = 15, + MAX_APPNAME = 255, + MAX_TOPICNAME = 255, + MAX_ITEMNAME = 255; + +const NDDEF_NOPASSWORDPROMPT = 1; +const NDDEF_NOCACHELOOKUP = 2; +const NDDEF_STRIP_NDDE = 4; + +const SHARE_TYPE_OLD = 1; +const SHARE_TYPE_NEW = 2; +const SHARE_TYPE_STATIC = 4; + +const uint + NDDE_CMD_SHOW_MASK = 0x0000FFFF, + NDDE_TRUST_CMD_SHOW = 0x10000000, + NDDE_TRUST_SHARE_DEL = 0x20000000, + NDDE_TRUST_SHARE_INIT = 0x40000000, + NDDE_TRUST_SHARE_START = 0x80000000; + +struct NDdeShareInfo_tag { + LONG lRevision; + LPTSTR lpszShareName; + LONG lShareType; + LPTSTR lpszAppTopicList; + LONG fSharedFlag; + LONG fService; + LONG fStartAppFlag; + LONG nCmdShow; + LONG[2] qModifyId; + LONG cNumItems; + LPTSTR lpszItemList; +} +extern (C) { // huh? + NDdeShareInfo_tag NDDESHAREINFO; + NDdeShareInfo_tag* PNDDESHAREINFO; +} + +extern (Windows) { + UINT NDdeGetErrorStringA(UINT, LPSTR, DWORD); + UINT NDdeGetErrorStringW(UINT, LPWSTR, DWORD); + UINT NDdeGetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, PDWORD); + UINT NDdeGetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, PDWORD); + UINT NDdeGetTrustedShareA(LPSTR, LPSTR, PDWORD, PDWORD, PDWORD); + UINT NDdeGetTrustedShareW(LPWSTR, LPWSTR, PDWORD, PDWORD, PDWORD); + BOOL NDdeIsValidShareNameA(LPSTR); + BOOL NDdeIsValidShareNameW(LPWSTR); + BOOL NDdeIsValidAppTopicListA(LPSTR); + BOOL NDdeIsValidAppTopicListW(LPWSTR); + UINT NDdeSetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + UINT NDdeSetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + UINT NDdeSetTrustedShareA(LPSTR, LPSTR, DWORD); + UINT NDdeSetTrustedShareW(LPWSTR, LPWSTR, DWORD); + UINT NDdeShareAddA(LPSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); + UINT NDdeShareAddW(LPWSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); + UINT NDdeShareDelA(LPSTR, LPSTR, UINT); + UINT NDdeShareDelW(LPWSTR, LPWSTR, UINT); + UINT NDdeShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeShareGetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); + UINT NDdeShareGetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); + UINT NDdeShareSetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, WORD); + UINT NDdeShareSetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, WORD); + UINT NDdeTrustedShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeTrustedShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); +} + +version (Unicode) { + alias NDdeShareAddW NDdeShareAdd; + alias NDdeShareDelW NDdeShareDel; + alias NDdeSetShareSecurityW NDdeSetShareSecurity; + alias NDdeGetShareSecurityW NDdeGetShareSecurity; + alias NDdeShareEnumW NDdeShareEnum; + alias NDdeShareGetInfoW NDdeShareGetInfo; + alias NDdeShareSetInfoW NDdeShareSetInfo; + alias NDdeGetErrorStringW NDdeGetErrorString; + alias NDdeIsValidShareNameW NDdeIsValidShareName; + alias NDdeIsValidAppTopicListW NDdeIsValidAppTopicList; + alias NDdeSetTrustedShareW NDdeSetTrustedShare; + alias NDdeGetTrustedShareW NDdeGetTrustedShare; + alias NDdeTrustedShareEnumW NDdeTrustedShareEnum; +} else { + alias NDdeShareAddA NDdeShareAdd; + alias NDdeShareDelA NDdeShareDel; + alias NDdeSetShareSecurityA NDdeSetShareSecurity; + alias NDdeGetShareSecurityA NDdeGetShareSecurity; + alias NDdeShareEnumA NDdeShareEnum; + alias NDdeShareGetInfoA NDdeShareGetInfo; + alias NDdeShareSetInfoA NDdeShareSetInfo; + alias NDdeGetErrorStringA NDdeGetErrorString; + alias NDdeIsValidShareNameA NDdeIsValidShareName; + alias NDdeIsValidAppTopicListA NDdeIsValidAppTopicList; + alias NDdeSetTrustedShareA NDdeSetTrustedShare; + alias NDdeGetTrustedShareA NDdeGetTrustedShare; + alias NDdeTrustedShareEnumA NDdeTrustedShareEnum; +} diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d index f540d58ee2..f0050ba9aa 100644 --- a/src/core/sys/windows/nspapi.d +++ b/src/core/sys/windows/nspapi.d @@ -1,147 +1,147 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_nspapi.d) - */ -module core.sys.windows.nspapi; - -private import core.sys.windows.basetyps, core.sys.windows.windef; - -// FIXME: check types of constants - -enum { - NS_ALL = 0, - - NS_SAP, - NS_NDS, - NS_PEER_BROWSE, - - NS_TCPIP_LOCAL = 10, - NS_TCPIP_HOSTS, - NS_DNS, - NS_NETBT, - NS_WINS, - - NS_NBP = 20, - - NS_MS = 30, - NS_STDA, - NS_NTDS, - - NS_X500 = 40, - NS_NIS, - NS_NISPLUS, - - NS_WRQ = 50 -} - -enum { - SERVICE_REGISTER = 1, - SERVICE_DEREGISTER = 2, - SERVICE_FLUSH = 3, - SERVICE_FLAG_HARD = 2 -} - -/* MinGW makes the next section conditional on winsock.h or winsock2.h - * being included. But that doesn't translate well into D. - */ -version (Win32_Winsock1) { - import core.sys.windows.winsock; -} else { - import core.sys.windows.winsock2; -} - -struct SOCKET_ADDRESS { - LPSOCKADDR lpSockaddr; - INT iSockaddrLength; -} -alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; - -struct CSADDR_INFO { - SOCKET_ADDRESS LocalAddr; - SOCKET_ADDRESS RemoteAddr; - INT iSocketType; - INT iProtocol; -} -alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; - -struct BLOB { - ULONG cbSize; - BYTE* pBlobData; -} -alias BLOB* PBLOB, LPBLOB; - -struct SERVICE_ADDRESS { - DWORD dwAddressType; - DWORD dwAddressFlags; - DWORD dwAddressLength; - DWORD dwPrincipalLength; - BYTE* lpAddress; - BYTE* lpPrincipal; -} - -struct SERVICE_ADDRESSES { - DWORD dwAddressCount; - SERVICE_ADDRESS _Addresses; - - SERVICE_ADDRESS* Addresses() { return &_Addresses; } -} -alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES; - -struct SERVICE_INFOA { - LPGUID lpServiceType; - LPSTR lpServiceName; - LPSTR lpComment; - LPSTR lpLocale; - DWORD dwDisplayHint; - DWORD dwVersion; - DWORD dwTime; - LPSTR lpMachineName; - LPSERVICE_ADDRESSES lpServiceAddress; - BLOB ServiceSpecificInfo; -} -alias SERVICE_INFOA* LPSERVICE_INFOA; - -struct SERVICE_INFOW { - LPGUID lpServiceType; - LPWSTR lpServiceName; - LPWSTR lpComment; - LPWSTR lpLocale; - DWORD dwDisplayHint; - DWORD dwVersion; - DWORD dwTime; - LPWSTR lpMachineName; - LPSERVICE_ADDRESSES lpServiceAddress; - BLOB ServiceSpecificInfo; -} -alias SERVICE_INFOW* LPSERVICE_INFOW; - -alias void* LPSERVICE_ASYNC_INFO; - -extern (Windows) { - INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA, - LPSERVICE_ASYNC_INFO, LPDWORD); - INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW, - LPSERVICE_ASYNC_INFO, LPDWORD); - INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD, - LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD); - INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD, - LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD); -} - -version (Unicode) { - alias SERVICE_INFOW SERVICE_INFO; - alias SetServiceW SetService; - alias GetAddressByNameW GetAddressByName; -} else { - alias SERVICE_INFOA SERVICE_INFO; - alias SetServiceA SetService; - alias GetAddressByNameA GetAddressByName; -} - -alias SERVICE_INFO _SERVICE_INFO; -alias SERVICE_INFO* LPSERVICE_INFO; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_nspapi.d) + */ +module core.sys.windows.nspapi; + +private import core.sys.windows.basetyps, core.sys.windows.windef; + +// FIXME: check types of constants + +enum { + NS_ALL = 0, + + NS_SAP, + NS_NDS, + NS_PEER_BROWSE, + + NS_TCPIP_LOCAL = 10, + NS_TCPIP_HOSTS, + NS_DNS, + NS_NETBT, + NS_WINS, + + NS_NBP = 20, + + NS_MS = 30, + NS_STDA, + NS_NTDS, + + NS_X500 = 40, + NS_NIS, + NS_NISPLUS, + + NS_WRQ = 50 +} + +enum { + SERVICE_REGISTER = 1, + SERVICE_DEREGISTER = 2, + SERVICE_FLUSH = 3, + SERVICE_FLAG_HARD = 2 +} + +/* MinGW makes the next section conditional on winsock.h or winsock2.h + * being included. But that doesn't translate well into D. + */ +version (Win32_Winsock1) { + import core.sys.windows.winsock; +} else { + import core.sys.windows.winsock2; +} + +struct SOCKET_ADDRESS { + LPSOCKADDR lpSockaddr; + INT iSockaddrLength; +} +alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; + +struct CSADDR_INFO { + SOCKET_ADDRESS LocalAddr; + SOCKET_ADDRESS RemoteAddr; + INT iSocketType; + INT iProtocol; +} +alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; + +struct BLOB { + ULONG cbSize; + BYTE* pBlobData; +} +alias BLOB* PBLOB, LPBLOB; + +struct SERVICE_ADDRESS { + DWORD dwAddressType; + DWORD dwAddressFlags; + DWORD dwAddressLength; + DWORD dwPrincipalLength; + BYTE* lpAddress; + BYTE* lpPrincipal; +} + +struct SERVICE_ADDRESSES { + DWORD dwAddressCount; + SERVICE_ADDRESS _Addresses; + + SERVICE_ADDRESS* Addresses() { return &_Addresses; } +} +alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES; + +struct SERVICE_INFOA { + LPGUID lpServiceType; + LPSTR lpServiceName; + LPSTR lpComment; + LPSTR lpLocale; + DWORD dwDisplayHint; + DWORD dwVersion; + DWORD dwTime; + LPSTR lpMachineName; + LPSERVICE_ADDRESSES lpServiceAddress; + BLOB ServiceSpecificInfo; +} +alias SERVICE_INFOA* LPSERVICE_INFOA; + +struct SERVICE_INFOW { + LPGUID lpServiceType; + LPWSTR lpServiceName; + LPWSTR lpComment; + LPWSTR lpLocale; + DWORD dwDisplayHint; + DWORD dwVersion; + DWORD dwTime; + LPWSTR lpMachineName; + LPSERVICE_ADDRESSES lpServiceAddress; + BLOB ServiceSpecificInfo; +} +alias SERVICE_INFOW* LPSERVICE_INFOW; + +alias void* LPSERVICE_ASYNC_INFO; + +extern (Windows) { + INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA, + LPSERVICE_ASYNC_INFO, LPDWORD); + INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW, + LPSERVICE_ASYNC_INFO, LPDWORD); + INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD, + LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD); + INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD, + LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD); +} + +version (Unicode) { + alias SERVICE_INFOW SERVICE_INFO; + alias SetServiceW SetService; + alias GetAddressByNameW GetAddressByName; +} else { + alias SERVICE_INFOA SERVICE_INFO; + alias SetServiceA SetService; + alias GetAddressByNameA GetAddressByName; +} + +alias SERVICE_INFO _SERVICE_INFO; +alias SERVICE_INFO* LPSERVICE_INFO; diff --git a/src/core/sys/windows/ntdef.d b/src/core/sys/windows/ntdef.d index f1854b74c8..c081d6971e 100644 --- a/src/core/sys/windows/ntdef.d +++ b/src/core/sys/windows/ntdef.d @@ -1,79 +1,79 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ntdef.d) - */ -module core.sys.windows.ntdef; - -private import core.sys.windows.basetsd, core.sys.windows.subauth, core.sys.windows.windef, core.sys.windows.winnt; - -const uint - OBJ_INHERIT = 0x0002, - OBJ_PERMANENT = 0x0010, - OBJ_EXCLUSIVE = 0x0020, - OBJ_CASE_INSENSITIVE = 0x0040, - OBJ_OPENIF = 0x0080, - OBJ_OPENLINK = 0x0100, - OBJ_VALID_ATTRIBUTES = 0x01F2; - -void InitializeObjectAttributes(OBJECT_ATTRIBUTES* p, UNICODE_STRING* n, - uint a, HANDLE r, void* s) { - with (*p) { - Length = OBJECT_ATTRIBUTES.sizeof; - RootDirectory = r; - Attributes = a; - ObjectName = n; - SecurityDescriptor = s; - SecurityQualityOfService = null; - } -} - -bool NT_SUCCESS(int x) { return x >= 0; } - -/* In MinGW, NTSTATUS, UNICODE_STRING, STRING and their associated pointer - * type aliases are defined in ntdef.h, ntsecapi.h and subauth.h, each of - * which checks that none of the others is already included. - */ -alias int NTSTATUS; -alias int* PNTSTATUS; - -struct UNICODE_STRING { - USHORT Length; - USHORT MaximumLength; - PWSTR Buffer; -} -alias UNICODE_STRING* PUNICODE_STRING; -alias const(UNICODE_STRING)* PCUNICODE_STRING; - -struct STRING { - USHORT Length; - USHORT MaximumLength; - PCHAR Buffer; -} -alias STRING ANSI_STRING, OEM_STRING; -alias STRING* PSTRING, PANSI_STRING, POEM_STRING; - -alias LARGE_INTEGER PHYSICAL_ADDRESS; -alias LARGE_INTEGER* PPHYSICAL_ADDRESS; - -enum SECTION_INHERIT { - ViewShare = 1, - ViewUnmap -} - -/* In MinGW, this is defined in ntdef.h and ntsecapi.h, each of which checks - * that the other isn't already included. - */ -struct OBJECT_ATTRIBUTES { - ULONG Length = OBJECT_ATTRIBUTES.sizeof; - HANDLE RootDirectory; - PUNICODE_STRING ObjectName; - ULONG Attributes; - PVOID SecurityDescriptor; - PVOID SecurityQualityOfService; -} -alias OBJECT_ATTRIBUTES* POBJECT_ATTRIBUTES; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ntdef.d) + */ +module core.sys.windows.ntdef; + +private import core.sys.windows.basetsd, core.sys.windows.subauth, core.sys.windows.windef, core.sys.windows.winnt; + +const uint + OBJ_INHERIT = 0x0002, + OBJ_PERMANENT = 0x0010, + OBJ_EXCLUSIVE = 0x0020, + OBJ_CASE_INSENSITIVE = 0x0040, + OBJ_OPENIF = 0x0080, + OBJ_OPENLINK = 0x0100, + OBJ_VALID_ATTRIBUTES = 0x01F2; + +void InitializeObjectAttributes(OBJECT_ATTRIBUTES* p, UNICODE_STRING* n, + uint a, HANDLE r, void* s) { + with (*p) { + Length = OBJECT_ATTRIBUTES.sizeof; + RootDirectory = r; + Attributes = a; + ObjectName = n; + SecurityDescriptor = s; + SecurityQualityOfService = null; + } +} + +bool NT_SUCCESS(int x) { return x >= 0; } + +/* In MinGW, NTSTATUS, UNICODE_STRING, STRING and their associated pointer + * type aliases are defined in ntdef.h, ntsecapi.h and subauth.h, each of + * which checks that none of the others is already included. + */ +alias int NTSTATUS; +alias int* PNTSTATUS; + +struct UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} +alias UNICODE_STRING* PUNICODE_STRING; +alias const(UNICODE_STRING)* PCUNICODE_STRING; + +struct STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} +alias STRING ANSI_STRING, OEM_STRING; +alias STRING* PSTRING, PANSI_STRING, POEM_STRING; + +alias LARGE_INTEGER PHYSICAL_ADDRESS; +alias LARGE_INTEGER* PPHYSICAL_ADDRESS; + +enum SECTION_INHERIT { + ViewShare = 1, + ViewUnmap +} + +/* In MinGW, this is defined in ntdef.h and ntsecapi.h, each of which checks + * that the other isn't already included. + */ +struct OBJECT_ATTRIBUTES { + ULONG Length = OBJECT_ATTRIBUTES.sizeof; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +} +alias OBJECT_ATTRIBUTES* POBJECT_ATTRIBUTES; diff --git a/src/core/sys/windows/ntdll.d b/src/core/sys/windows/ntdll.d index cc06276870..9e06c58c7c 100644 --- a/src/core/sys/windows/ntdll.d +++ b/src/core/sys/windows/ntdll.d @@ -1,21 +1,21 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ntdll.d) - */ -module core.sys.windows.ntdll; - -private import core.sys.windows.w32api; - - -enum SHUTDOWN_ACTION { - ShutdownNoReboot, - ShutdownReboot, - ShutdownPowerOff -} - -extern (Windows) uint NtShutdownSystem(SHUTDOWN_ACTION Action); +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ntdll.d) + */ +module core.sys.windows.ntdll; + +private import core.sys.windows.w32api; + + +enum SHUTDOWN_ACTION { + ShutdownNoReboot, + ShutdownReboot, + ShutdownPowerOff +} + +extern (Windows) uint NtShutdownSystem(SHUTDOWN_ACTION Action); diff --git a/src/core/sys/windows/ntldap.d b/src/core/sys/windows/ntldap.d index 801af62f46..16947e0e57 100644 --- a/src/core/sys/windows/ntldap.d +++ b/src/core/sys/windows/ntldap.d @@ -1,57 +1,57 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ntldap.d) - */ -module core.sys.windows.ntldap; - -/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned - * aliases. Should we merge them anyway? - */ - -const char[] - LDAP_SERVER_ASQ_OID = "1.2.840.113556.1.4.1504", - LDAP_SERVER_DIRSYNC_OID = "1.2.840.113556.1.4.841", - LDAP_SERVER_SD_FLAGS_OID = "1.2.840.113556.1.4.801", - LDAP_SERVER_FAST_BIND_OID = "1.2.840.113556.1.4.1781", - LDAP_MATCHING_RULE_BIT_OR = "1.2.840.113556.1.4.804", - LDAP_MATCHING_RULE_BIT_AND = "1.2.840.113556.1.4.803", - LDAP_SERVER_EXTENDED_DN_OID = "1.2.840.113556.1.4.529", - LDAP_SERVER_LAZY_COMMIT_OID = "1.2.840.113556.1.4.619", - LDAP_SERVER_TREE_DELETE_OID = "1.2.840.113556.1.4.805", - LDAP_SERVER_VERIFY_NAME_OID = "1.2.840.113556.1.4.1338", - LDAP_SERVER_SHOW_DELETED_OID = "1.2.840.113556.1.4.417", - LDAP_SERVER_NOTIFICATION_OID = "1.2.840.113556.1.4.528", - LDAP_SERVER_DOMAIN_SCOPE_OID = "1.2.840.113556.1.4.1339", - LDAP_CAP_ACTIVE_DIRECTORY_OID = "1.2.840.113556.1.4.800", - LDAP_SERVER_SEARCH_OPTIONS_OID = "1.2.840.113556.1.4.1340", - LDAP_CAP_ACTIVE_DIRECTORY_V51_OID = "1.2.840.113556.1.4.1670", - LDAP_SERVER_PERMISSIVE_MODIFY_OID = "1.2.840.113556.1.4.1413", - LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID = "1.2.840.113556.1.4.521"; - -const wchar[] - LDAP_SERVER_ASQ_OID_W = "1.2.840.113556.1.4.1504", - LDAP_SERVER_DIRSYNC_OID_W = "1.2.840.113556.1.4.841", - LDAP_SERVER_SD_FLAGS_OID_W = "1.2.840.113556.1.4.801", - LDAP_SERVER_FAST_BIND_OID_W = "1.2.840.113556.1.4.1781", - LDAP_MATCHING_RULE_BIT_OR_W = "1.2.840.113556.1.4.804", - LDAP_MATCHING_RULE_BIT_AND_W = "1.2.840.113556.1.4.803", - LDAP_SERVER_EXTENDED_DN_OID_W = "1.2.840.113556.1.4.529", - LDAP_SERVER_LAZY_COMMIT_OID_W = "1.2.840.113556.1.4.619", - LDAP_SERVER_TREE_DELETE_OID_W = "1.2.840.113556.1.4.805", - LDAP_SERVER_VERIFY_NAME_OID_W = "1.2.840.113556.1.4.1338", - LDAP_SERVER_SHOW_DELETED_OID_W = "1.2.840.113556.1.4.417", - LDAP_SERVER_NOTIFICATION_OID_W = "1.2.840.113556.1.4.528", - LDAP_SERVER_DOMAIN_SCOPE_OID_W = "1.2.840.113556.1.4.1339", - LDAP_CAP_ACTIVE_DIRECTORY_OID_W = "1.2.840.113556.1.4.800", - LDAP_SERVER_SEARCH_OPTIONS_OID_W = "1.2.840.113556.1.4.1340", - LDAP_CAP_ACTIVE_DIRECTORY_V51_OID_W = "1.2.840.113556.1.4.1670", - LDAP_SERVER_PERMISSIVE_MODIFY_OID_W = "1.2.840.113556.1.4.1413", - LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID_W = "1.2.840.113556.1.4.521"; - -const SERVER_SEARCH_FLAG_DOMAIN_SCOPE = 1; -const SERVER_SEARCH_FLAG_PHANTOM_ROOT = 2; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ntldap.d) + */ +module core.sys.windows.ntldap; + +/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned + * aliases. Should we merge them anyway? + */ + +const char[] + LDAP_SERVER_ASQ_OID = "1.2.840.113556.1.4.1504", + LDAP_SERVER_DIRSYNC_OID = "1.2.840.113556.1.4.841", + LDAP_SERVER_SD_FLAGS_OID = "1.2.840.113556.1.4.801", + LDAP_SERVER_FAST_BIND_OID = "1.2.840.113556.1.4.1781", + LDAP_MATCHING_RULE_BIT_OR = "1.2.840.113556.1.4.804", + LDAP_MATCHING_RULE_BIT_AND = "1.2.840.113556.1.4.803", + LDAP_SERVER_EXTENDED_DN_OID = "1.2.840.113556.1.4.529", + LDAP_SERVER_LAZY_COMMIT_OID = "1.2.840.113556.1.4.619", + LDAP_SERVER_TREE_DELETE_OID = "1.2.840.113556.1.4.805", + LDAP_SERVER_VERIFY_NAME_OID = "1.2.840.113556.1.4.1338", + LDAP_SERVER_SHOW_DELETED_OID = "1.2.840.113556.1.4.417", + LDAP_SERVER_NOTIFICATION_OID = "1.2.840.113556.1.4.528", + LDAP_SERVER_DOMAIN_SCOPE_OID = "1.2.840.113556.1.4.1339", + LDAP_CAP_ACTIVE_DIRECTORY_OID = "1.2.840.113556.1.4.800", + LDAP_SERVER_SEARCH_OPTIONS_OID = "1.2.840.113556.1.4.1340", + LDAP_CAP_ACTIVE_DIRECTORY_V51_OID = "1.2.840.113556.1.4.1670", + LDAP_SERVER_PERMISSIVE_MODIFY_OID = "1.2.840.113556.1.4.1413", + LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID = "1.2.840.113556.1.4.521"; + +const wchar[] + LDAP_SERVER_ASQ_OID_W = "1.2.840.113556.1.4.1504", + LDAP_SERVER_DIRSYNC_OID_W = "1.2.840.113556.1.4.841", + LDAP_SERVER_SD_FLAGS_OID_W = "1.2.840.113556.1.4.801", + LDAP_SERVER_FAST_BIND_OID_W = "1.2.840.113556.1.4.1781", + LDAP_MATCHING_RULE_BIT_OR_W = "1.2.840.113556.1.4.804", + LDAP_MATCHING_RULE_BIT_AND_W = "1.2.840.113556.1.4.803", + LDAP_SERVER_EXTENDED_DN_OID_W = "1.2.840.113556.1.4.529", + LDAP_SERVER_LAZY_COMMIT_OID_W = "1.2.840.113556.1.4.619", + LDAP_SERVER_TREE_DELETE_OID_W = "1.2.840.113556.1.4.805", + LDAP_SERVER_VERIFY_NAME_OID_W = "1.2.840.113556.1.4.1338", + LDAP_SERVER_SHOW_DELETED_OID_W = "1.2.840.113556.1.4.417", + LDAP_SERVER_NOTIFICATION_OID_W = "1.2.840.113556.1.4.528", + LDAP_SERVER_DOMAIN_SCOPE_OID_W = "1.2.840.113556.1.4.1339", + LDAP_CAP_ACTIVE_DIRECTORY_OID_W = "1.2.840.113556.1.4.800", + LDAP_SERVER_SEARCH_OPTIONS_OID_W = "1.2.840.113556.1.4.1340", + LDAP_CAP_ACTIVE_DIRECTORY_V51_OID_W = "1.2.840.113556.1.4.1670", + LDAP_SERVER_PERMISSIVE_MODIFY_OID_W = "1.2.840.113556.1.4.1413", + LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID_W = "1.2.840.113556.1.4.521"; + +const SERVER_SEARCH_FLAG_DOMAIN_SCOPE = 1; +const SERVER_SEARCH_FLAG_PHANTOM_ROOT = 2; diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index fc411ed9f7..5afb4bada0 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -1,792 +1,792 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ntsecapi.d) - */ -module core.sys.windows.ntsecapi; - -private import - core.sys.windows.basetyps, core.sys.windows.ntdef, core.sys.windows.windef, core.sys.windows.winnt, core.sys.windows.w32api; - -// FIXME: check types and grouping of constants -// FIXME: check Windows version support - -const KERB_WRAP_NO_ENCRYPT = 0x80000001; - -const LOGON_GUEST = 0x00000001; -const LOGON_NOENCRYPTION = 0x00000002; -const LOGON_CACHED_ACCOUNT = 0x00000004; -const LOGON_USED_LM_PASSWORD = 0x00000008; -const LOGON_EXTRA_SIDS = 0x00000020; -const LOGON_SUBAUTH_SESSION_KEY = 0x00000040; -const LOGON_SERVER_TRUST_ACCOUNT = 0x00000080; -const LOGON_NTLMV2_ENABLED = 0x00000100; -const LOGON_RESOURCE_GROUPS = 0x00000200; -const LOGON_PROFILE_PATH_RETURNED = 0x00000400; -const LOGON_GRACE_LOGON = 0x01000000; - -enum { - LSA_MODE_PASSWORD_PROTECTED = 1, - LSA_MODE_INDIVIDUAL_ACCOUNTS, - LSA_MODE_MANDATORY_ACCESS, - LSA_MODE_LOG_FULL -} - -bool LSA_SUCCESS(int x) { return x >= 0; } - -/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned - * aliases. Should we merge them anyway? - */ -const char[] MICROSOFT_KERBEROS_NAME_A = "Kerberos"; -const wchar[] MICROSOFT_KERBEROS_NAME_W = "Kerberos"; -const char[] MSV1_0_PACKAGE_NAME = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; -const wchar[] MSV1_0_PACKAGE_NAMEW = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; - -const MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT = 32; -const MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT = 2048; -const MSV1_0_CLEARTEXT_PASSWORD_ALLOWED = 2; -const MSV1_0_CRED_LM_PRESENT = 1; -const MSV1_0_CRED_NT_PRESENT = 2; -const MSV1_0_CRED_VERSION = 0; -const MSV1_0_DONT_TRY_GUEST_ACCOUNT = 16; -const MSV1_0_MAX_NTLM3_LIFE = 1800; -const MSV1_0_MAX_AVL_SIZE = 64000; -const MSV1_0_MNS_LOGON = 16777216; - -const size_t - MSV1_0_CHALLENGE_LENGTH = 8, - MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8, - MSV1_0_NTLM3_RESPONSE_LENGTH = 16, - MSV1_0_NTLM3_OWF_LENGTH = 16, - MSV1_0_NTLM3_INPUT_LENGTH = MSV1_0_NTLM3_RESPONSE.sizeof - - MSV1_0_NTLM3_RESPONSE_LENGTH, - MSV1_0_OWF_PASSWORD_LENGTH = 16, - MSV1_0_PACKAGE_NAMEW_LENGTH = MSV1_0_PACKAGE_NAMEW.sizeof - - WCHAR.sizeof; - -const MSV1_0_RETURN_USER_PARAMETERS = 8; -const MSV1_0_RETURN_PASSWORD_EXPIRY = 64; -const MSV1_0_RETURN_PROFILE_PATH = 512; -const MSV1_0_SUBAUTHENTICATION_DLL_EX = 1048576; -const MSV1_0_SUBAUTHENTICATION_DLL = 0xff000000; -const MSV1_0_SUBAUTHENTICATION_DLL_SHIFT = 24; -const MSV1_0_SUBAUTHENTICATION_DLL_RAS = 2; -const MSV1_0_SUBAUTHENTICATION_DLL_IIS = 132; -const MSV1_0_SUBAUTHENTICATION_FLAGS = 0xff000000; -const MSV1_0_TRY_GUEST_ACCOUNT_ONLY = 256; -const MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY = 1024; -const MSV1_0_UPDATE_LOGON_STATISTICS = 4; -const MSV1_0_USE_CLIENT_CHALLENGE = 128; -const MSV1_0_USER_SESSION_KEY_LENGTH = 16; - -const char[] - MSV1_0_SUBAUTHENTICATION_KEY - = `System\CurrentControlSet\Control\Lsa\MSV1_0`, - MSV1_0_SUBAUTHENTICATION_VALUE = "Auth"; - -const ACCESS_MASK - POLICY_VIEW_LOCAL_INFORMATION = 0x0001, - POLICY_VIEW_AUDIT_INFORMATION = 0x0002, - POLICY_GET_PRIVATE_INFORMATION = 0x0004, - POLICY_TRUST_ADMIN = 0x0008, - POLICY_CREATE_ACCOUNT = 0x0010, - POLICY_CREATE_SECRET = 0x0020, - POLICY_CREATE_PRIVILEGE = 0x0040, - POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x0080, - POLICY_SET_AUDIT_REQUIREMENTS = 0x0100, - POLICY_AUDIT_LOG_ADMIN = 0x0200, - POLICY_SERVER_ADMIN = 0x0400, - POLICY_LOOKUP_NAMES = 0x0800, - - POLICY_READ = STANDARD_RIGHTS_READ | 0x0006, - POLICY_WRITE = STANDARD_RIGHTS_WRITE | 0x07F8, - POLICY_EXECUTE = STANDARD_RIGHTS_EXECUTE | 0x0801, - POLICY_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 0x0FFF; - -const POLICY_AUDIT_EVENT_UNCHANGED = 0; -const POLICY_AUDIT_EVENT_SUCCESS = 1; -const POLICY_AUDIT_EVENT_FAILURE = 2; -const POLICY_AUDIT_EVENT_NONE = 4; -const POLICY_AUDIT_EVENT_MASK = 7; - -enum { - POLICY_LOCATION_LOCAL = 1, - POLICY_LOCATION_DS -} - -enum : uint { - POLICY_MACHINE_POLICY_LOCAL = 0, - POLICY_MACHINE_POLICY_DEFAULTED, - POLICY_MACHINE_POLICY_EXPLICIT, - POLICY_MACHINE_POLICY_UNKNOWN = 0xFFFFFFFF -} - - -const POLICY_QOS_SCHANEL_REQUIRED = 0x0001; -const POLICY_QOS_OUTBOUND_INTEGRITY = 0x0002; -const POLICY_QOS_OUTBOUND_CONFIDENTIALITY = 0x0004; -const POLICY_QOS_INBOUND_INTEGREITY = 0x0008; -const POLICY_QOS_INBOUND_CONFIDENTIALITY = 0x0010; -const POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE = 0x0020; -const POLICY_QOS_RAS_SERVER_ALLOWED = 0x0040; -const POLICY_QOS_DHCP_SERVER_ALLOWD = 0x0080; - -const POLICY_KERBEROS_FORWARDABLE = 1; -const POLICY_KERBEROS_PROXYABLE = 2; -const POLICY_KERBEROS_RENEWABLE = 4; -const POLICY_KERBEROS_POSTDATEABLE = 8; - -const char[] - SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = "PasswordChangeNotify", - SAM_INIT_NOTIFICATION_ROUTINE = "InitializeChangeNotify", - SAM_PASSWORD_FILTER_ROUTINE = "PasswordFilter"; - -const TCHAR[] - SE_INTERACTIVE_LOGON_NAME = "SeInteractiveLogonRight", - SE_NETWORK_LOGON_NAME = "SeNetworkLogonRight", - SE_BATCH_LOGON_NAME = "SeBatchLogonRight", - SE_SERVICE_LOGON_NAME = "SeServiceLogonRight"; - -enum { - TRUST_ATTRIBUTE_NON_TRANSITIVE = 1, - TRUST_ATTRIBUTE_UPLEVEL_ONLY = 2, - TRUST_ATTRIBUTE_TREE_PARENT = 4194304, - TRUST_ATTRIBUTES_VALID = -16580609 -} - -enum { - TRUST_AUTH_TYPE_NONE, - TRUST_AUTH_TYPE_NT4OWF, - TRUST_AUTH_TYPE_CLEAR -} - -enum { - TRUST_DIRECTION_DISABLED, - TRUST_DIRECTION_INBOUND, - TRUST_DIRECTION_OUTBOUND, - TRUST_DIRECTION_BIDIRECTIONAL -} - -enum { - TRUST_TYPE_DOWNLEVEL = 1, - TRUST_TYPE_UPLEVEL, - TRUST_TYPE_MIT, - TRUST_TYPE_DCE -} - -alias UNICODE_STRING LSA_UNICODE_STRING; -alias UNICODE_STRING* PLSA_UNICODE_STRING; -alias STRING LSA_STRING; -alias STRING* PLSA_STRING; - -enum MSV1_0_LOGON_SUBMIT_TYPE { - MsV1_0InteractiveLogon = 2, - MsV1_0Lm20Logon, - MsV1_0NetworkLogon, - MsV1_0SubAuthLogon, - MsV1_0WorkstationUnlockLogon = 7 -} -alias MSV1_0_LOGON_SUBMIT_TYPE* PMSV1_0_LOGON_SUBMIT_TYPE; - -enum MSV1_0_PROFILE_BUFFER_TYPE { - MsV1_0InteractiveProfile = 2, - MsV1_0Lm20LogonProfile, - MsV1_0SmartCardProfile -} -alias MSV1_0_PROFILE_BUFFER_TYPE* PMSV1_0_PROFILE_BUFFER_TYPE; - - -enum MSV1_0_AVID { - MsvAvEOL, - MsvAvNbComputerName, - MsvAvNbDomainName, - MsvAvDnsComputerName, - MsvAvDnsDomainName -} - -enum MSV1_0_PROTOCOL_MESSAGE_TYPE { - MsV1_0Lm20ChallengeRequest = 0, - MsV1_0Lm20GetChallengeResponse, - MsV1_0EnumerateUsers, - MsV1_0GetUserInfo, - MsV1_0ReLogonUsers, - MsV1_0ChangePassword, - MsV1_0ChangeCachedPassword, - MsV1_0GenericPassthrough, - MsV1_0CacheLogon, - MsV1_0SubAuth, - MsV1_0DeriveCredential, - MsV1_0CacheLookup -} -alias MSV1_0_PROTOCOL_MESSAGE_TYPE* PMSV1_0_PROTOCOL_MESSAGE_TYPE; - -enum POLICY_LSA_SERVER_ROLE { - PolicyServerRoleBackup = 2, - PolicyServerRolePrimary -} -alias POLICY_LSA_SERVER_ROLE* PPOLICY_LSA_SERVER_ROLE; - -enum POLICY_SERVER_ENABLE_STATE { - PolicyServerEnabled = 2, - PolicyServerDisabled -} -alias POLICY_SERVER_ENABLE_STATE* PPOLICY_SERVER_ENABLE_STATE; - -enum POLICY_INFORMATION_CLASS { - PolicyAuditLogInformation = 1, - PolicyAuditEventsInformation, - PolicyPrimaryDomainInformation, - PolicyPdAccountInformation, - PolicyAccountDomainInformation, - PolicyLsaServerRoleInformation, - PolicyReplicaSourceInformation, - PolicyDefaultQuotaInformation, - PolicyModificationInformation, - PolicyAuditFullSetInformation, - PolicyAuditFullQueryInformation, - PolicyDnsDomainInformation, - PolicyEfsInformation -} -alias POLICY_INFORMATION_CLASS* PPOLICY_INFORMATION_CLASS; - -enum POLICY_AUDIT_EVENT_TYPE { - AuditCategorySystem, - AuditCategoryLogon, - AuditCategoryObjectAccess, - AuditCategoryPrivilegeUse, - AuditCategoryDetailedTracking, - AuditCategoryPolicyChange, - AuditCategoryAccountManagement, - AuditCategoryDirectoryServiceAccess, - AuditCategoryAccountLogon -} -alias POLICY_AUDIT_EVENT_TYPE* PPOLICY_AUDIT_EVENT_TYPE; - -enum POLICY_LOCAL_INFORMATION_CLASS { - PolicyLocalAuditEventsInformation = 1, - PolicyLocalPdAccountInformation, - PolicyLocalAccountDomainInformation, - PolicyLocalLsaServerRoleInformation, - PolicyLocalReplicaSourceInformation, - PolicyLocalModificationInformation, - PolicyLocalAuditFullSetInformation, - PolicyLocalAuditFullQueryInformation, - PolicyLocalDnsDomainInformation, - PolicyLocalIPSecReferenceInformation, - PolicyLocalMachinePasswordInformation, - PolicyLocalQualityOfServiceInformation, - PolicyLocalPolicyLocationInformation -} -alias POLICY_LOCAL_INFORMATION_CLASS* PPOLICY_LOCAL_INFORMATION_CLASS; - -enum POLICY_DOMAIN_INFORMATION_CLASS { - PolicyDomainIPSecReferenceInformation = 1, - PolicyDomainQualityOfServiceInformation, - PolicyDomainEfsInformation, - PolicyDomainPublicKeyInformation, - PolicyDomainPasswordPolicyInformation, - PolicyDomainLockoutInformation, - PolicyDomainKerberosTicketInformation -} -alias POLICY_DOMAIN_INFORMATION_CLASS* PPOLICY_DOMAIN_INFORMATION_CLASS; - -enum SECURITY_LOGON_TYPE { - Interactive = 2, - Network, - Batch, - Service, - Proxy, - Unlock -} -alias SECURITY_LOGON_TYPE* PSECURITY_LOGON_TYPE; - -enum TRUSTED_INFORMATION_CLASS { - TrustedDomainNameInformation = 1, - TrustedControllersInformation, - TrustedPosixOffsetInformation, - TrustedPasswordInformation, - TrustedDomainInformationBasic, - TrustedDomainInformationEx, - TrustedDomainAuthInformation, - TrustedDomainFullInformation -} -alias TRUSTED_INFORMATION_CLASS* PTRUSTED_INFORMATION_CLASS; - -struct DOMAIN_PASSWORD_INFORMATION { - USHORT MinPasswordLength; - USHORT PasswordHistoryLength; - ULONG PasswordProperties; - LARGE_INTEGER MaxPasswordAge; - LARGE_INTEGER MinPasswordAge; -} -alias DOMAIN_PASSWORD_INFORMATION* PDOMAIN_PASSWORD_INFORMATION; - -struct LSA_ENUMERATION_INFORMATION { - PSID Sid; -} -alias LSA_ENUMERATION_INFORMATION* PLSA_ENUMERATION_INFORMATION; - -alias OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES; -alias OBJECT_ATTRIBUTES* PLSA_OBJECT_ATTRIBUTES; - -struct LSA_TRUST_INFORMATION { - LSA_UNICODE_STRING Name; - PSID Sid; -} -alias LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; -alias LSA_TRUST_INFORMATION* PLSA_TRUST_INFORMATION; -/* in MinGW (further down the code): - * typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; - * but it doesn't look right.... - */ -alias LSA_TRUST_INFORMATION** PTRUSTED_DOMAIN_INFORMATION_BASIC; - -struct LSA_REFERENCED_DOMAIN_LIST { - ULONG Entries; - PLSA_TRUST_INFORMATION Domains; -} -alias LSA_REFERENCED_DOMAIN_LIST* PLSA_REFERENCED_DOMAIN_LIST; - -struct LSA_TRANSLATED_SID { - SID_NAME_USE Use; - ULONG RelativeId; - LONG DomainIndex; -} -alias LSA_TRANSLATED_SID* PLSA_TRANSLATED_SID; - -struct LSA_TRANSLATED_NAME { - SID_NAME_USE Use; - LSA_UNICODE_STRING Name; - LONG DomainIndex; -} -alias LSA_TRANSLATED_NAME* PLSA_TRANSLATED_NAME; - -struct MSV1_0_INTERACTIVE_LOGON { - MSV1_0_LOGON_SUBMIT_TYPE MessageType; - UNICODE_STRING LogonDomainName; - UNICODE_STRING UserName; - UNICODE_STRING Password; -} -alias MSV1_0_INTERACTIVE_LOGON* PMSV1_0_INTERACTIVE_LOGON; - -struct MSV1_0_INTERACTIVE_PROFILE { - MSV1_0_PROFILE_BUFFER_TYPE MessageType; - USHORT LogonCount; - USHORT BadPasswordCount; - LARGE_INTEGER LogonTime; - LARGE_INTEGER LogoffTime; - LARGE_INTEGER KickOffTime; - LARGE_INTEGER PasswordLastSet; - LARGE_INTEGER PasswordCanChange; - LARGE_INTEGER PasswordMustChange; - UNICODE_STRING LogonScript; - UNICODE_STRING HomeDirectory; - UNICODE_STRING FullName; - UNICODE_STRING ProfilePath; - UNICODE_STRING HomeDirectoryDrive; - UNICODE_STRING LogonServer; - ULONG UserFlags; -} -alias MSV1_0_INTERACTIVE_PROFILE* PMSV1_0_INTERACTIVE_PROFILE; - -struct MSV1_0_LM20_LOGON { - MSV1_0_LOGON_SUBMIT_TYPE MessageType; - UNICODE_STRING LogonDomainName; - UNICODE_STRING UserName; - UNICODE_STRING Workstation; - UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; - STRING CaseSensitiveChallengeResponse; - STRING CaseInsensitiveChallengeResponse; - ULONG ParameterControl; -} -alias MSV1_0_LM20_LOGON* PMSV1_0_LM20_LOGON; - -//static if (_WIN32_WINNT >= 0x500) { - struct MSV1_0_SUBAUTH_LOGON { - MSV1_0_LOGON_SUBMIT_TYPE MessageType; - UNICODE_STRING LogonDomainName; - UNICODE_STRING UserName; - UNICODE_STRING Workstation; - UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; - STRING AuthenticationInfo1; - STRING AuthenticationInfo2; - ULONG ParameterControl; - ULONG SubAuthPackageId; - } - alias MSV1_0_SUBAUTH_LOGON* PMSV1_0_SUBAUTH_LOGON; -//} - -struct MSV1_0_LM20_LOGON_PROFILE { - MSV1_0_PROFILE_BUFFER_TYPE MessageType; - LARGE_INTEGER KickOffTime; - LARGE_INTEGER LogoffTime; - ULONG UserFlags; - UCHAR[MSV1_0_USER_SESSION_KEY_LENGTH] UserSessionKey; - UNICODE_STRING LogonDomainName; - UCHAR[MSV1_0_LANMAN_SESSION_KEY_LENGTH] LanmanSessionKey; - UNICODE_STRING LogonServer; - UNICODE_STRING UserParameters; -} -alias MSV1_0_LM20_LOGON_PROFILE* PMSV1_0_LM20_LOGON_PROFILE; - -struct MSV1_0_SUPPLEMENTAL_CREDENTIAL { - ULONG Version; - ULONG Flags; - UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] LmPassword; - UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] NtPassword; -} -alias MSV1_0_SUPPLEMENTAL_CREDENTIAL* PMSV1_0_SUPPLEMENTAL_CREDENTIAL; - -struct MSV1_0_NTLM3_RESPONSE { - UCHAR[MSV1_0_NTLM3_RESPONSE_LENGTH] Response; - UCHAR RespType; - UCHAR HiRespType; - USHORT Flags; - ULONG MsgWord; - ULONGLONG TimeStamp; - UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeFromClient; - ULONG AvPairsOff; - UCHAR _Buffer; - UCHAR* Buffer() { return &_Buffer; } -} -alias MSV1_0_NTLM3_RESPONSE* PMSV1_0_NTLM3_RESPONSE; - -struct MSV1_0_AV_PAIR { - USHORT AvId; - USHORT AvLen; -} -alias MSV1_0_AV_PAIR* PMSV1_0_AV_PAIR; - -struct MSV1_0_CHANGEPASSWORD_REQUEST { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - UNICODE_STRING DomainName; - UNICODE_STRING AccountName; - UNICODE_STRING OldPassword; - UNICODE_STRING NewPassword; - BOOLEAN Impersonating; -} -alias MSV1_0_CHANGEPASSWORD_REQUEST* PMSV1_0_CHANGEPASSWORD_REQUEST; - -struct MSV1_0_CHANGEPASSWORD_RESPONSE { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - BOOLEAN PasswordInfoValid; - DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; -} -alias MSV1_0_CHANGEPASSWORD_RESPONSE* PMSV1_0_CHANGEPASSWORD_RESPONSE; - -struct MSV1_0_SUBAUTH_REQUEST { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - ULONG SubAuthPackageId; - ULONG SubAuthInfoLength; - PUCHAR SubAuthSubmitBuffer; -} -alias MSV1_0_SUBAUTH_REQUEST* PMSV1_0_SUBAUTH_REQUEST; - -struct MSV1_0_SUBAUTH_RESPONSE { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - ULONG SubAuthInfoLength; - PUCHAR SubAuthReturnBuffer; -} -alias MSV1_0_SUBAUTH_RESPONSE* PMSV1_0_SUBAUTH_RESPONSE; - -const MSV1_0_DERIVECRED_TYPE_SHA1 = 0; - -struct MSV1_0_DERIVECRED_REQUEST { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - LUID LogonId; - ULONG DeriveCredType; - ULONG DeriveCredInfoLength; - UCHAR _DeriveCredSubmitBuffer; - UCHAR* DeriveCredSubmitBuffer() { return &_DeriveCredSubmitBuffer; } -} -alias MSV1_0_DERIVECRED_REQUEST* PMSV1_0_DERIVECRED_REQUEST; - -struct MSV1_0_DERIVECRED_RESPONSE { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - ULONG DeriveCredInfoLength; - UCHAR _DeriveCredReturnBuffer; - UCHAR* DeriveCredReturnBuffer() { return &_DeriveCredReturnBuffer; } -} -alias MSV1_0_DERIVECRED_RESPONSE* PMSV1_0_DERIVECRED_RESPONSE; - -alias uint LSA_ENUMERATION_HANDLE, LSA_OPERATIONAL_MODE, - POLICY_AUDIT_EVENT_OPTIONS; -alias uint* PLSA_ENUMERATION_HANDLE, PLSA_OPERATIONAL_MODE, - PPOLICY_AUDIT_EVENT_OPTIONS; - -struct POLICY_PRIVILEGE_DEFINITION { - LSA_UNICODE_STRING Name; - LUID LocalValue; -} -alias POLICY_PRIVILEGE_DEFINITION* PPOLICY_PRIVILEGE_DEFINITION; - -struct POLICY_AUDIT_LOG_INFO { - ULONG AuditLogPercentFull; - ULONG MaximumLogSize; - LARGE_INTEGER AuditRetentionPeriod; - BOOLEAN AuditLogFullShutdownInProgress; - LARGE_INTEGER TimeToShutdown; - ULONG NextAuditRecordId; -} -alias POLICY_AUDIT_LOG_INFO* PPOLICY_AUDIT_LOG_INFO; - -struct POLICY_AUDIT_EVENTS_INFO { - BOOLEAN AuditingMode; - PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; - ULONG MaximumAuditEventCount; -} -alias POLICY_AUDIT_EVENTS_INFO* PPOLICY_AUDIT_EVENTS_INFO; - -struct POLICY_ACCOUNT_DOMAIN_INFO { - LSA_UNICODE_STRING DomainName; - PSID DomainSid; -} -alias POLICY_ACCOUNT_DOMAIN_INFO* PPOLICY_ACCOUNT_DOMAIN_INFO; - -struct POLICY_PRIMARY_DOMAIN_INFO { - LSA_UNICODE_STRING Name; - PSID Sid; -} -alias POLICY_PRIMARY_DOMAIN_INFO* PPOLICY_PRIMARY_DOMAIN_INFO; - -struct POLICY_DNS_DOMAIN_INFO { - LSA_UNICODE_STRING Name; - LSA_UNICODE_STRING DnsDomainName; - LSA_UNICODE_STRING DnsTreeName; - GUID DomainGuid; - PSID Sid; -} -alias POLICY_DNS_DOMAIN_INFO* PPOLICY_DNS_DOMAIN_INFO; - -struct POLICY_PD_ACCOUNT_INFO { - LSA_UNICODE_STRING Name; -} -alias POLICY_PD_ACCOUNT_INFO* PPOLICY_PD_ACCOUNT_INFO; - -struct POLICY_LSA_SERVER_ROLE_INFO { - POLICY_LSA_SERVER_ROLE LsaServerRole; -} -alias POLICY_LSA_SERVER_ROLE_INFO* PPOLICY_LSA_SERVER_ROLE_INFO; - -struct POLICY_REPLICA_SOURCE_INFO { - LSA_UNICODE_STRING ReplicaSource; - LSA_UNICODE_STRING ReplicaAccountName; -} -alias POLICY_REPLICA_SOURCE_INFO* PPOLICY_REPLICA_SOURCE_INFO; - -struct POLICY_DEFAULT_QUOTA_INFO { - QUOTA_LIMITS QuotaLimits; -} -alias POLICY_DEFAULT_QUOTA_INFO* PPOLICY_DEFAULT_QUOTA_INFO; - -struct POLICY_MODIFICATION_INFO { - LARGE_INTEGER ModifiedId; - LARGE_INTEGER DatabaseCreationTime; -} -alias POLICY_MODIFICATION_INFO* PPOLICY_MODIFICATION_INFO; - -struct POLICY_AUDIT_FULL_SET_INFO { - BOOLEAN ShutDownOnFull; -} -alias POLICY_AUDIT_FULL_SET_INFO* PPOLICY_AUDIT_FULL_SET_INFO; - -struct POLICY_AUDIT_FULL_QUERY_INFO { - BOOLEAN ShutDownOnFull; - BOOLEAN LogIsFull; -} -alias POLICY_AUDIT_FULL_QUERY_INFO* PPOLICY_AUDIT_FULL_QUERY_INFO; - -struct POLICY_EFS_INFO { - ULONG InfoLength; - PUCHAR EfsBlob; -} -alias POLICY_EFS_INFO* PPOLICY_EFS_INFO; - -struct POLICY_LOCAL_IPSEC_REFERENCE_INFO { - LSA_UNICODE_STRING ObjectPath; -} -alias POLICY_LOCAL_IPSEC_REFERENCE_INFO* PPOLICY_LOCAL_IPSEC_REFERENCE_INFO; - -struct POLICY_LOCAL_MACHINE_PASSWORD_INFO { - LARGE_INTEGER PasswordChangeInterval; -} -alias POLICY_LOCAL_MACHINE_PASSWORD_INFO* PPOLICY_LOCAL_MACHINE_PASSWORD_INFO; - -struct POLICY_LOCAL_POLICY_LOCATION_INFO { - ULONG PolicyLocation; -} -alias POLICY_LOCAL_POLICY_LOCATION_INFO* PPOLICY_LOCAL_POLICY_LOCATION_INFO; - -struct POLICY_LOCAL_QUALITY_OF_SERVICE_INFO{ - ULONG QualityOfService; -} -alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO - POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; -alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO* - PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO, - PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; - -struct POLICY_DOMAIN_PUBLIC_KEY_INFO { - ULONG InfoLength; - PUCHAR PublicKeyInfo; -} -alias POLICY_DOMAIN_PUBLIC_KEY_INFO* PPOLICY_DOMAIN_PUBLIC_KEY_INFO; - -struct POLICY_DOMAIN_LOCKOUT_INFO { - LARGE_INTEGER LockoutDuration; - LARGE_INTEGER LockoutObservationWindow; - USHORT LockoutThreshold; -} -alias POLICY_DOMAIN_LOCKOUT_INFO* PPOLICY_DOMAIN_LOCKOUT_INFO; - -struct POLICY_DOMAIN_PASSWORD_INFO { - USHORT MinPasswordLength; - USHORT PasswordHistoryLength; - ULONG PasswordProperties; - LARGE_INTEGER MaxPasswordAge; - LARGE_INTEGER MinPasswordAge; -} -alias POLICY_DOMAIN_PASSWORD_INFO* PPOLICY_DOMAIN_PASSWORD_INFO; - -struct POLICY_DOMAIN_KERBEROS_TICKET_INFO { - ULONG AuthenticationOptions; - LARGE_INTEGER MinTicketAge; - LARGE_INTEGER MaxTicketAge; - LARGE_INTEGER MaxRenewAge; - LARGE_INTEGER ProxyLifetime; - LARGE_INTEGER ForceLogoff; -} -alias POLICY_DOMAIN_KERBEROS_TICKET_INFO* PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; - -mixin DECLARE_HANDLE!("LSA_HANDLE"); -alias LSA_HANDLE* PLSA_HANDLE; - -struct TRUSTED_DOMAIN_NAME_INFO { - LSA_UNICODE_STRING Name; -} -alias TRUSTED_DOMAIN_NAME_INFO* PTRUSTED_DOMAIN_NAME_INFO; - -struct TRUSTED_CONTROLLERS_INFO { - ULONG Entries; - PLSA_UNICODE_STRING Names; -} -alias TRUSTED_CONTROLLERS_INFO* PTRUSTED_CONTROLLERS_INFO; - -struct TRUSTED_POSIX_OFFSET_INFO { - ULONG Offset; -} -alias TRUSTED_POSIX_OFFSET_INFO* PTRUSTED_POSIX_OFFSET_INFO; - -struct TRUSTED_PASSWORD_INFO { - LSA_UNICODE_STRING Password; - LSA_UNICODE_STRING OldPassword; -} -alias TRUSTED_PASSWORD_INFO* PTRUSTED_PASSWORD_INFO; - -struct TRUSTED_DOMAIN_INFORMATION_EX { - LSA_UNICODE_STRING Name; - LSA_UNICODE_STRING FlatName; - PSID Sid; - ULONG TrustDirection; - ULONG TrustType; - ULONG TrustAttributes; -} -alias TRUSTED_DOMAIN_INFORMATION_EX* PTRUSTED_DOMAIN_INFORMATION_EX; - -struct LSA_AUTH_INFORMATION { - LARGE_INTEGER LastUpdateTime; - ULONG AuthType; - ULONG AuthInfoLength; - PUCHAR AuthInfo; -} -alias LSA_AUTH_INFORMATION* PLSA_AUTH_INFORMATION; - -struct TRUSTED_DOMAIN_AUTH_INFORMATION { - ULONG IncomingAuthInfos; - PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; - PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; - ULONG OutgoingAuthInfos; - PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; - PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; -} -alias TRUSTED_DOMAIN_AUTH_INFORMATION* PTRUSTED_DOMAIN_AUTH_INFORMATION; - -struct TRUSTED_DOMAIN_FULL_INFORMATION { - TRUSTED_DOMAIN_INFORMATION_EX Information; - TRUSTED_POSIX_OFFSET_INFO PosixOffset; - TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; -} -alias TRUSTED_DOMAIN_FULL_INFORMATION* PTRUSTED_DOMAIN_FULL_INFORMATION; - -extern (Windows) { - NTSTATUS LsaAddAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING, - ULONG); - NTSTATUS LsaCallAuthenticationPackage(HANDLE, ULONG, PVOID, ULONG, - PVOID*, PULONG, PNTSTATUS); - NTSTATUS LsaClose(LSA_HANDLE); - NTSTATUS LsaConnectUntrusted(PHANDLE); - NTSTATUS LsaCreateTrustedDomainEx(LSA_HANDLE, - PTRUSTED_DOMAIN_INFORMATION_EX, PTRUSTED_DOMAIN_AUTH_INFORMATION, - ACCESS_MASK, PLSA_HANDLE); - NTSTATUS LsaDeleteTrustedDomain(LSA_HANDLE, PSID); - NTSTATUS LsaDeregisterLogonProcess(HANDLE); - NTSTATUS LsaEnumerateAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING*, - PULONG); - NTSTATUS LsaEnumerateAccountsWithUserRight(LSA_HANDLE, - PLSA_UNICODE_STRING, PVOID*, PULONG); - NTSTATUS LsaEnumerateTrustedDomains(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, - PVOID*, ULONG, PULONG); - NTSTATUS LsaEnumerateTrustedDomainsEx(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, - TRUSTED_INFORMATION_CLASS, PVOID*, ULONG, PULONG); - NTSTATUS LsaFreeMemory(PVOID); - NTSTATUS LsaFreeReturnBuffer(PVOID); - NTSTATUS LsaLogonUser(HANDLE, PLSA_STRING, SECURITY_LOGON_TYPE, ULONG, - PVOID, ULONG, PTOKEN_GROUPS, PTOKEN_SOURCE, PVOID*, PULONG, PLUID, - PHANDLE, PQUOTA_LIMITS, PNTSTATUS); - NTSTATUS LsaLookupAuthenticationPackage(HANDLE, PLSA_STRING, PULONG); - NTSTATUS LsaLookupNames(LSA_HANDLE, ULONG, PLSA_UNICODE_STRING, - PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_SID*); - NTSTATUS LsaLookupSids(LSA_HANDLE, ULONG, PSID*, - PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_NAME*); - ULONG LsaNtStatusToWinError(NTSTATUS); - NTSTATUS LsaOpenPolicy(PLSA_UNICODE_STRING, PLSA_OBJECT_ATTRIBUTES, - ACCESS_MASK, PLSA_HANDLE); - NTSTATUS LsaQueryDomainInformationPolicy(LSA_HANDLE, - POLICY_DOMAIN_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaQueryInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, - PVOID*); - NTSTATUS LsaQueryLocalInformationPolicy(LSA_HANDLE, - POLICY_LOCAL_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaQueryTrustedDomainInfo(LSA_HANDLE, PSID, - TRUSTED_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaQueryTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, - TRUSTED_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaRegisterLogonProcess(PLSA_STRING, PHANDLE, - PLSA_OPERATIONAL_MODE); - NTSTATUS LsaRemoveAccountRights(LSA_HANDLE, PSID, BOOLEAN, - PLSA_UNICODE_STRING, ULONG); - NTSTATUS LsaRetrievePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, - PLSA_UNICODE_STRING*); - NTSTATUS LsaSetDomainInformationPolicy(LSA_HANDLE, - POLICY_DOMAIN_INFORMATION_CLASS, PVOID); - NTSTATUS LsaSetInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, - PVOID); - NTSTATUS LsaSetLocalInformationPolicy(LSA_HANDLE, - POLICY_LOCAL_INFORMATION_CLASS, PVOID); - NTSTATUS LsaSetTrustedDomainInformation(LSA_HANDLE, PSID, - TRUSTED_INFORMATION_CLASS, PVOID); - NTSTATUS LsaSetTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, - TRUSTED_INFORMATION_CLASS, PVOID); - NTSTATUS LsaStorePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, - PLSA_UNICODE_STRING); -} - -alias NTSTATUS function(PUNICODE_STRING, ULONG, PUNICODE_STRING) - PSAM_PASSWORD_NOTIFICATION_ROUTINE; -alias BOOLEAN function() PSAM_INIT_NOTIFICATION_ROUTINE; -alias BOOLEAN function(PUNICODE_STRING, PUNICODE_STRING, - PUNICODE_STRING, BOOLEAN) PSAM_PASSWORD_FILTER_ROUTINE; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ntsecapi.d) + */ +module core.sys.windows.ntsecapi; + +private import + core.sys.windows.basetyps, core.sys.windows.ntdef, core.sys.windows.windef, core.sys.windows.winnt, core.sys.windows.w32api; + +// FIXME: check types and grouping of constants +// FIXME: check Windows version support + +const KERB_WRAP_NO_ENCRYPT = 0x80000001; + +const LOGON_GUEST = 0x00000001; +const LOGON_NOENCRYPTION = 0x00000002; +const LOGON_CACHED_ACCOUNT = 0x00000004; +const LOGON_USED_LM_PASSWORD = 0x00000008; +const LOGON_EXTRA_SIDS = 0x00000020; +const LOGON_SUBAUTH_SESSION_KEY = 0x00000040; +const LOGON_SERVER_TRUST_ACCOUNT = 0x00000080; +const LOGON_NTLMV2_ENABLED = 0x00000100; +const LOGON_RESOURCE_GROUPS = 0x00000200; +const LOGON_PROFILE_PATH_RETURNED = 0x00000400; +const LOGON_GRACE_LOGON = 0x01000000; + +enum { + LSA_MODE_PASSWORD_PROTECTED = 1, + LSA_MODE_INDIVIDUAL_ACCOUNTS, + LSA_MODE_MANDATORY_ACCESS, + LSA_MODE_LOG_FULL +} + +bool LSA_SUCCESS(int x) { return x >= 0; } + +/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned + * aliases. Should we merge them anyway? + */ +const char[] MICROSOFT_KERBEROS_NAME_A = "Kerberos"; +const wchar[] MICROSOFT_KERBEROS_NAME_W = "Kerberos"; +const char[] MSV1_0_PACKAGE_NAME = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; +const wchar[] MSV1_0_PACKAGE_NAMEW = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; + +const MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT = 32; +const MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT = 2048; +const MSV1_0_CLEARTEXT_PASSWORD_ALLOWED = 2; +const MSV1_0_CRED_LM_PRESENT = 1; +const MSV1_0_CRED_NT_PRESENT = 2; +const MSV1_0_CRED_VERSION = 0; +const MSV1_0_DONT_TRY_GUEST_ACCOUNT = 16; +const MSV1_0_MAX_NTLM3_LIFE = 1800; +const MSV1_0_MAX_AVL_SIZE = 64000; +const MSV1_0_MNS_LOGON = 16777216; + +const size_t + MSV1_0_CHALLENGE_LENGTH = 8, + MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8, + MSV1_0_NTLM3_RESPONSE_LENGTH = 16, + MSV1_0_NTLM3_OWF_LENGTH = 16, + MSV1_0_NTLM3_INPUT_LENGTH = MSV1_0_NTLM3_RESPONSE.sizeof + - MSV1_0_NTLM3_RESPONSE_LENGTH, + MSV1_0_OWF_PASSWORD_LENGTH = 16, + MSV1_0_PACKAGE_NAMEW_LENGTH = MSV1_0_PACKAGE_NAMEW.sizeof + - WCHAR.sizeof; + +const MSV1_0_RETURN_USER_PARAMETERS = 8; +const MSV1_0_RETURN_PASSWORD_EXPIRY = 64; +const MSV1_0_RETURN_PROFILE_PATH = 512; +const MSV1_0_SUBAUTHENTICATION_DLL_EX = 1048576; +const MSV1_0_SUBAUTHENTICATION_DLL = 0xff000000; +const MSV1_0_SUBAUTHENTICATION_DLL_SHIFT = 24; +const MSV1_0_SUBAUTHENTICATION_DLL_RAS = 2; +const MSV1_0_SUBAUTHENTICATION_DLL_IIS = 132; +const MSV1_0_SUBAUTHENTICATION_FLAGS = 0xff000000; +const MSV1_0_TRY_GUEST_ACCOUNT_ONLY = 256; +const MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY = 1024; +const MSV1_0_UPDATE_LOGON_STATISTICS = 4; +const MSV1_0_USE_CLIENT_CHALLENGE = 128; +const MSV1_0_USER_SESSION_KEY_LENGTH = 16; + +const char[] + MSV1_0_SUBAUTHENTICATION_KEY + = `System\CurrentControlSet\Control\Lsa\MSV1_0`, + MSV1_0_SUBAUTHENTICATION_VALUE = "Auth"; + +const ACCESS_MASK + POLICY_VIEW_LOCAL_INFORMATION = 0x0001, + POLICY_VIEW_AUDIT_INFORMATION = 0x0002, + POLICY_GET_PRIVATE_INFORMATION = 0x0004, + POLICY_TRUST_ADMIN = 0x0008, + POLICY_CREATE_ACCOUNT = 0x0010, + POLICY_CREATE_SECRET = 0x0020, + POLICY_CREATE_PRIVILEGE = 0x0040, + POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x0080, + POLICY_SET_AUDIT_REQUIREMENTS = 0x0100, + POLICY_AUDIT_LOG_ADMIN = 0x0200, + POLICY_SERVER_ADMIN = 0x0400, + POLICY_LOOKUP_NAMES = 0x0800, + + POLICY_READ = STANDARD_RIGHTS_READ | 0x0006, + POLICY_WRITE = STANDARD_RIGHTS_WRITE | 0x07F8, + POLICY_EXECUTE = STANDARD_RIGHTS_EXECUTE | 0x0801, + POLICY_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 0x0FFF; + +const POLICY_AUDIT_EVENT_UNCHANGED = 0; +const POLICY_AUDIT_EVENT_SUCCESS = 1; +const POLICY_AUDIT_EVENT_FAILURE = 2; +const POLICY_AUDIT_EVENT_NONE = 4; +const POLICY_AUDIT_EVENT_MASK = 7; + +enum { + POLICY_LOCATION_LOCAL = 1, + POLICY_LOCATION_DS +} + +enum : uint { + POLICY_MACHINE_POLICY_LOCAL = 0, + POLICY_MACHINE_POLICY_DEFAULTED, + POLICY_MACHINE_POLICY_EXPLICIT, + POLICY_MACHINE_POLICY_UNKNOWN = 0xFFFFFFFF +} + + +const POLICY_QOS_SCHANEL_REQUIRED = 0x0001; +const POLICY_QOS_OUTBOUND_INTEGRITY = 0x0002; +const POLICY_QOS_OUTBOUND_CONFIDENTIALITY = 0x0004; +const POLICY_QOS_INBOUND_INTEGREITY = 0x0008; +const POLICY_QOS_INBOUND_CONFIDENTIALITY = 0x0010; +const POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE = 0x0020; +const POLICY_QOS_RAS_SERVER_ALLOWED = 0x0040; +const POLICY_QOS_DHCP_SERVER_ALLOWD = 0x0080; + +const POLICY_KERBEROS_FORWARDABLE = 1; +const POLICY_KERBEROS_PROXYABLE = 2; +const POLICY_KERBEROS_RENEWABLE = 4; +const POLICY_KERBEROS_POSTDATEABLE = 8; + +const char[] + SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = "PasswordChangeNotify", + SAM_INIT_NOTIFICATION_ROUTINE = "InitializeChangeNotify", + SAM_PASSWORD_FILTER_ROUTINE = "PasswordFilter"; + +const TCHAR[] + SE_INTERACTIVE_LOGON_NAME = "SeInteractiveLogonRight", + SE_NETWORK_LOGON_NAME = "SeNetworkLogonRight", + SE_BATCH_LOGON_NAME = "SeBatchLogonRight", + SE_SERVICE_LOGON_NAME = "SeServiceLogonRight"; + +enum { + TRUST_ATTRIBUTE_NON_TRANSITIVE = 1, + TRUST_ATTRIBUTE_UPLEVEL_ONLY = 2, + TRUST_ATTRIBUTE_TREE_PARENT = 4194304, + TRUST_ATTRIBUTES_VALID = -16580609 +} + +enum { + TRUST_AUTH_TYPE_NONE, + TRUST_AUTH_TYPE_NT4OWF, + TRUST_AUTH_TYPE_CLEAR +} + +enum { + TRUST_DIRECTION_DISABLED, + TRUST_DIRECTION_INBOUND, + TRUST_DIRECTION_OUTBOUND, + TRUST_DIRECTION_BIDIRECTIONAL +} + +enum { + TRUST_TYPE_DOWNLEVEL = 1, + TRUST_TYPE_UPLEVEL, + TRUST_TYPE_MIT, + TRUST_TYPE_DCE +} + +alias UNICODE_STRING LSA_UNICODE_STRING; +alias UNICODE_STRING* PLSA_UNICODE_STRING; +alias STRING LSA_STRING; +alias STRING* PLSA_STRING; + +enum MSV1_0_LOGON_SUBMIT_TYPE { + MsV1_0InteractiveLogon = 2, + MsV1_0Lm20Logon, + MsV1_0NetworkLogon, + MsV1_0SubAuthLogon, + MsV1_0WorkstationUnlockLogon = 7 +} +alias MSV1_0_LOGON_SUBMIT_TYPE* PMSV1_0_LOGON_SUBMIT_TYPE; + +enum MSV1_0_PROFILE_BUFFER_TYPE { + MsV1_0InteractiveProfile = 2, + MsV1_0Lm20LogonProfile, + MsV1_0SmartCardProfile +} +alias MSV1_0_PROFILE_BUFFER_TYPE* PMSV1_0_PROFILE_BUFFER_TYPE; + + +enum MSV1_0_AVID { + MsvAvEOL, + MsvAvNbComputerName, + MsvAvNbDomainName, + MsvAvDnsComputerName, + MsvAvDnsDomainName +} + +enum MSV1_0_PROTOCOL_MESSAGE_TYPE { + MsV1_0Lm20ChallengeRequest = 0, + MsV1_0Lm20GetChallengeResponse, + MsV1_0EnumerateUsers, + MsV1_0GetUserInfo, + MsV1_0ReLogonUsers, + MsV1_0ChangePassword, + MsV1_0ChangeCachedPassword, + MsV1_0GenericPassthrough, + MsV1_0CacheLogon, + MsV1_0SubAuth, + MsV1_0DeriveCredential, + MsV1_0CacheLookup +} +alias MSV1_0_PROTOCOL_MESSAGE_TYPE* PMSV1_0_PROTOCOL_MESSAGE_TYPE; + +enum POLICY_LSA_SERVER_ROLE { + PolicyServerRoleBackup = 2, + PolicyServerRolePrimary +} +alias POLICY_LSA_SERVER_ROLE* PPOLICY_LSA_SERVER_ROLE; + +enum POLICY_SERVER_ENABLE_STATE { + PolicyServerEnabled = 2, + PolicyServerDisabled +} +alias POLICY_SERVER_ENABLE_STATE* PPOLICY_SERVER_ENABLE_STATE; + +enum POLICY_INFORMATION_CLASS { + PolicyAuditLogInformation = 1, + PolicyAuditEventsInformation, + PolicyPrimaryDomainInformation, + PolicyPdAccountInformation, + PolicyAccountDomainInformation, + PolicyLsaServerRoleInformation, + PolicyReplicaSourceInformation, + PolicyDefaultQuotaInformation, + PolicyModificationInformation, + PolicyAuditFullSetInformation, + PolicyAuditFullQueryInformation, + PolicyDnsDomainInformation, + PolicyEfsInformation +} +alias POLICY_INFORMATION_CLASS* PPOLICY_INFORMATION_CLASS; + +enum POLICY_AUDIT_EVENT_TYPE { + AuditCategorySystem, + AuditCategoryLogon, + AuditCategoryObjectAccess, + AuditCategoryPrivilegeUse, + AuditCategoryDetailedTracking, + AuditCategoryPolicyChange, + AuditCategoryAccountManagement, + AuditCategoryDirectoryServiceAccess, + AuditCategoryAccountLogon +} +alias POLICY_AUDIT_EVENT_TYPE* PPOLICY_AUDIT_EVENT_TYPE; + +enum POLICY_LOCAL_INFORMATION_CLASS { + PolicyLocalAuditEventsInformation = 1, + PolicyLocalPdAccountInformation, + PolicyLocalAccountDomainInformation, + PolicyLocalLsaServerRoleInformation, + PolicyLocalReplicaSourceInformation, + PolicyLocalModificationInformation, + PolicyLocalAuditFullSetInformation, + PolicyLocalAuditFullQueryInformation, + PolicyLocalDnsDomainInformation, + PolicyLocalIPSecReferenceInformation, + PolicyLocalMachinePasswordInformation, + PolicyLocalQualityOfServiceInformation, + PolicyLocalPolicyLocationInformation +} +alias POLICY_LOCAL_INFORMATION_CLASS* PPOLICY_LOCAL_INFORMATION_CLASS; + +enum POLICY_DOMAIN_INFORMATION_CLASS { + PolicyDomainIPSecReferenceInformation = 1, + PolicyDomainQualityOfServiceInformation, + PolicyDomainEfsInformation, + PolicyDomainPublicKeyInformation, + PolicyDomainPasswordPolicyInformation, + PolicyDomainLockoutInformation, + PolicyDomainKerberosTicketInformation +} +alias POLICY_DOMAIN_INFORMATION_CLASS* PPOLICY_DOMAIN_INFORMATION_CLASS; + +enum SECURITY_LOGON_TYPE { + Interactive = 2, + Network, + Batch, + Service, + Proxy, + Unlock +} +alias SECURITY_LOGON_TYPE* PSECURITY_LOGON_TYPE; + +enum TRUSTED_INFORMATION_CLASS { + TrustedDomainNameInformation = 1, + TrustedControllersInformation, + TrustedPosixOffsetInformation, + TrustedPasswordInformation, + TrustedDomainInformationBasic, + TrustedDomainInformationEx, + TrustedDomainAuthInformation, + TrustedDomainFullInformation +} +alias TRUSTED_INFORMATION_CLASS* PTRUSTED_INFORMATION_CLASS; + +struct DOMAIN_PASSWORD_INFORMATION { + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; +} +alias DOMAIN_PASSWORD_INFORMATION* PDOMAIN_PASSWORD_INFORMATION; + +struct LSA_ENUMERATION_INFORMATION { + PSID Sid; +} +alias LSA_ENUMERATION_INFORMATION* PLSA_ENUMERATION_INFORMATION; + +alias OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES; +alias OBJECT_ATTRIBUTES* PLSA_OBJECT_ATTRIBUTES; + +struct LSA_TRUST_INFORMATION { + LSA_UNICODE_STRING Name; + PSID Sid; +} +alias LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; +alias LSA_TRUST_INFORMATION* PLSA_TRUST_INFORMATION; +/* in MinGW (further down the code): + * typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; + * but it doesn't look right.... + */ +alias LSA_TRUST_INFORMATION** PTRUSTED_DOMAIN_INFORMATION_BASIC; + +struct LSA_REFERENCED_DOMAIN_LIST { + ULONG Entries; + PLSA_TRUST_INFORMATION Domains; +} +alias LSA_REFERENCED_DOMAIN_LIST* PLSA_REFERENCED_DOMAIN_LIST; + +struct LSA_TRANSLATED_SID { + SID_NAME_USE Use; + ULONG RelativeId; + LONG DomainIndex; +} +alias LSA_TRANSLATED_SID* PLSA_TRANSLATED_SID; + +struct LSA_TRANSLATED_NAME { + SID_NAME_USE Use; + LSA_UNICODE_STRING Name; + LONG DomainIndex; +} +alias LSA_TRANSLATED_NAME* PLSA_TRANSLATED_NAME; + +struct MSV1_0_INTERACTIVE_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Password; +} +alias MSV1_0_INTERACTIVE_LOGON* PMSV1_0_INTERACTIVE_LOGON; + +struct MSV1_0_INTERACTIVE_PROFILE { + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + USHORT LogonCount; + USHORT BadPasswordCount; + LARGE_INTEGER LogonTime; + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING LogonScript; + UNICODE_STRING HomeDirectory; + UNICODE_STRING FullName; + UNICODE_STRING ProfilePath; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING LogonServer; + ULONG UserFlags; +} +alias MSV1_0_INTERACTIVE_PROFILE* PMSV1_0_INTERACTIVE_PROFILE; + +struct MSV1_0_LM20_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; + STRING CaseSensitiveChallengeResponse; + STRING CaseInsensitiveChallengeResponse; + ULONG ParameterControl; +} +alias MSV1_0_LM20_LOGON* PMSV1_0_LM20_LOGON; + +//static if (_WIN32_WINNT >= 0x500) { + struct MSV1_0_SUBAUTH_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; + STRING AuthenticationInfo1; + STRING AuthenticationInfo2; + ULONG ParameterControl; + ULONG SubAuthPackageId; + } + alias MSV1_0_SUBAUTH_LOGON* PMSV1_0_SUBAUTH_LOGON; +//} + +struct MSV1_0_LM20_LOGON_PROFILE { + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER LogoffTime; + ULONG UserFlags; + UCHAR[MSV1_0_USER_SESSION_KEY_LENGTH] UserSessionKey; + UNICODE_STRING LogonDomainName; + UCHAR[MSV1_0_LANMAN_SESSION_KEY_LENGTH] LanmanSessionKey; + UNICODE_STRING LogonServer; + UNICODE_STRING UserParameters; +} +alias MSV1_0_LM20_LOGON_PROFILE* PMSV1_0_LM20_LOGON_PROFILE; + +struct MSV1_0_SUPPLEMENTAL_CREDENTIAL { + ULONG Version; + ULONG Flags; + UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] LmPassword; + UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] NtPassword; +} +alias MSV1_0_SUPPLEMENTAL_CREDENTIAL* PMSV1_0_SUPPLEMENTAL_CREDENTIAL; + +struct MSV1_0_NTLM3_RESPONSE { + UCHAR[MSV1_0_NTLM3_RESPONSE_LENGTH] Response; + UCHAR RespType; + UCHAR HiRespType; + USHORT Flags; + ULONG MsgWord; + ULONGLONG TimeStamp; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeFromClient; + ULONG AvPairsOff; + UCHAR _Buffer; + UCHAR* Buffer() { return &_Buffer; } +} +alias MSV1_0_NTLM3_RESPONSE* PMSV1_0_NTLM3_RESPONSE; + +struct MSV1_0_AV_PAIR { + USHORT AvId; + USHORT AvLen; +} +alias MSV1_0_AV_PAIR* PMSV1_0_AV_PAIR; + +struct MSV1_0_CHANGEPASSWORD_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + UNICODE_STRING DomainName; + UNICODE_STRING AccountName; + UNICODE_STRING OldPassword; + UNICODE_STRING NewPassword; + BOOLEAN Impersonating; +} +alias MSV1_0_CHANGEPASSWORD_REQUEST* PMSV1_0_CHANGEPASSWORD_REQUEST; + +struct MSV1_0_CHANGEPASSWORD_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + BOOLEAN PasswordInfoValid; + DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; +} +alias MSV1_0_CHANGEPASSWORD_RESPONSE* PMSV1_0_CHANGEPASSWORD_RESPONSE; + +struct MSV1_0_SUBAUTH_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthPackageId; + ULONG SubAuthInfoLength; + PUCHAR SubAuthSubmitBuffer; +} +alias MSV1_0_SUBAUTH_REQUEST* PMSV1_0_SUBAUTH_REQUEST; + +struct MSV1_0_SUBAUTH_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthInfoLength; + PUCHAR SubAuthReturnBuffer; +} +alias MSV1_0_SUBAUTH_RESPONSE* PMSV1_0_SUBAUTH_RESPONSE; + +const MSV1_0_DERIVECRED_TYPE_SHA1 = 0; + +struct MSV1_0_DERIVECRED_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + LUID LogonId; + ULONG DeriveCredType; + ULONG DeriveCredInfoLength; + UCHAR _DeriveCredSubmitBuffer; + UCHAR* DeriveCredSubmitBuffer() { return &_DeriveCredSubmitBuffer; } +} +alias MSV1_0_DERIVECRED_REQUEST* PMSV1_0_DERIVECRED_REQUEST; + +struct MSV1_0_DERIVECRED_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG DeriveCredInfoLength; + UCHAR _DeriveCredReturnBuffer; + UCHAR* DeriveCredReturnBuffer() { return &_DeriveCredReturnBuffer; } +} +alias MSV1_0_DERIVECRED_RESPONSE* PMSV1_0_DERIVECRED_RESPONSE; + +alias uint LSA_ENUMERATION_HANDLE, LSA_OPERATIONAL_MODE, + POLICY_AUDIT_EVENT_OPTIONS; +alias uint* PLSA_ENUMERATION_HANDLE, PLSA_OPERATIONAL_MODE, + PPOLICY_AUDIT_EVENT_OPTIONS; + +struct POLICY_PRIVILEGE_DEFINITION { + LSA_UNICODE_STRING Name; + LUID LocalValue; +} +alias POLICY_PRIVILEGE_DEFINITION* PPOLICY_PRIVILEGE_DEFINITION; + +struct POLICY_AUDIT_LOG_INFO { + ULONG AuditLogPercentFull; + ULONG MaximumLogSize; + LARGE_INTEGER AuditRetentionPeriod; + BOOLEAN AuditLogFullShutdownInProgress; + LARGE_INTEGER TimeToShutdown; + ULONG NextAuditRecordId; +} +alias POLICY_AUDIT_LOG_INFO* PPOLICY_AUDIT_LOG_INFO; + +struct POLICY_AUDIT_EVENTS_INFO { + BOOLEAN AuditingMode; + PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; + ULONG MaximumAuditEventCount; +} +alias POLICY_AUDIT_EVENTS_INFO* PPOLICY_AUDIT_EVENTS_INFO; + +struct POLICY_ACCOUNT_DOMAIN_INFO { + LSA_UNICODE_STRING DomainName; + PSID DomainSid; +} +alias POLICY_ACCOUNT_DOMAIN_INFO* PPOLICY_ACCOUNT_DOMAIN_INFO; + +struct POLICY_PRIMARY_DOMAIN_INFO { + LSA_UNICODE_STRING Name; + PSID Sid; +} +alias POLICY_PRIMARY_DOMAIN_INFO* PPOLICY_PRIMARY_DOMAIN_INFO; + +struct POLICY_DNS_DOMAIN_INFO { + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING DnsDomainName; + LSA_UNICODE_STRING DnsTreeName; + GUID DomainGuid; + PSID Sid; +} +alias POLICY_DNS_DOMAIN_INFO* PPOLICY_DNS_DOMAIN_INFO; + +struct POLICY_PD_ACCOUNT_INFO { + LSA_UNICODE_STRING Name; +} +alias POLICY_PD_ACCOUNT_INFO* PPOLICY_PD_ACCOUNT_INFO; + +struct POLICY_LSA_SERVER_ROLE_INFO { + POLICY_LSA_SERVER_ROLE LsaServerRole; +} +alias POLICY_LSA_SERVER_ROLE_INFO* PPOLICY_LSA_SERVER_ROLE_INFO; + +struct POLICY_REPLICA_SOURCE_INFO { + LSA_UNICODE_STRING ReplicaSource; + LSA_UNICODE_STRING ReplicaAccountName; +} +alias POLICY_REPLICA_SOURCE_INFO* PPOLICY_REPLICA_SOURCE_INFO; + +struct POLICY_DEFAULT_QUOTA_INFO { + QUOTA_LIMITS QuotaLimits; +} +alias POLICY_DEFAULT_QUOTA_INFO* PPOLICY_DEFAULT_QUOTA_INFO; + +struct POLICY_MODIFICATION_INFO { + LARGE_INTEGER ModifiedId; + LARGE_INTEGER DatabaseCreationTime; +} +alias POLICY_MODIFICATION_INFO* PPOLICY_MODIFICATION_INFO; + +struct POLICY_AUDIT_FULL_SET_INFO { + BOOLEAN ShutDownOnFull; +} +alias POLICY_AUDIT_FULL_SET_INFO* PPOLICY_AUDIT_FULL_SET_INFO; + +struct POLICY_AUDIT_FULL_QUERY_INFO { + BOOLEAN ShutDownOnFull; + BOOLEAN LogIsFull; +} +alias POLICY_AUDIT_FULL_QUERY_INFO* PPOLICY_AUDIT_FULL_QUERY_INFO; + +struct POLICY_EFS_INFO { + ULONG InfoLength; + PUCHAR EfsBlob; +} +alias POLICY_EFS_INFO* PPOLICY_EFS_INFO; + +struct POLICY_LOCAL_IPSEC_REFERENCE_INFO { + LSA_UNICODE_STRING ObjectPath; +} +alias POLICY_LOCAL_IPSEC_REFERENCE_INFO* PPOLICY_LOCAL_IPSEC_REFERENCE_INFO; + +struct POLICY_LOCAL_MACHINE_PASSWORD_INFO { + LARGE_INTEGER PasswordChangeInterval; +} +alias POLICY_LOCAL_MACHINE_PASSWORD_INFO* PPOLICY_LOCAL_MACHINE_PASSWORD_INFO; + +struct POLICY_LOCAL_POLICY_LOCATION_INFO { + ULONG PolicyLocation; +} +alias POLICY_LOCAL_POLICY_LOCATION_INFO* PPOLICY_LOCAL_POLICY_LOCATION_INFO; + +struct POLICY_LOCAL_QUALITY_OF_SERVICE_INFO{ + ULONG QualityOfService; +} +alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO + POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; +alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO* + PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO, + PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; + +struct POLICY_DOMAIN_PUBLIC_KEY_INFO { + ULONG InfoLength; + PUCHAR PublicKeyInfo; +} +alias POLICY_DOMAIN_PUBLIC_KEY_INFO* PPOLICY_DOMAIN_PUBLIC_KEY_INFO; + +struct POLICY_DOMAIN_LOCKOUT_INFO { + LARGE_INTEGER LockoutDuration; + LARGE_INTEGER LockoutObservationWindow; + USHORT LockoutThreshold; +} +alias POLICY_DOMAIN_LOCKOUT_INFO* PPOLICY_DOMAIN_LOCKOUT_INFO; + +struct POLICY_DOMAIN_PASSWORD_INFO { + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; +} +alias POLICY_DOMAIN_PASSWORD_INFO* PPOLICY_DOMAIN_PASSWORD_INFO; + +struct POLICY_DOMAIN_KERBEROS_TICKET_INFO { + ULONG AuthenticationOptions; + LARGE_INTEGER MinTicketAge; + LARGE_INTEGER MaxTicketAge; + LARGE_INTEGER MaxRenewAge; + LARGE_INTEGER ProxyLifetime; + LARGE_INTEGER ForceLogoff; +} +alias POLICY_DOMAIN_KERBEROS_TICKET_INFO* PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; + +mixin DECLARE_HANDLE!("LSA_HANDLE"); +alias LSA_HANDLE* PLSA_HANDLE; + +struct TRUSTED_DOMAIN_NAME_INFO { + LSA_UNICODE_STRING Name; +} +alias TRUSTED_DOMAIN_NAME_INFO* PTRUSTED_DOMAIN_NAME_INFO; + +struct TRUSTED_CONTROLLERS_INFO { + ULONG Entries; + PLSA_UNICODE_STRING Names; +} +alias TRUSTED_CONTROLLERS_INFO* PTRUSTED_CONTROLLERS_INFO; + +struct TRUSTED_POSIX_OFFSET_INFO { + ULONG Offset; +} +alias TRUSTED_POSIX_OFFSET_INFO* PTRUSTED_POSIX_OFFSET_INFO; + +struct TRUSTED_PASSWORD_INFO { + LSA_UNICODE_STRING Password; + LSA_UNICODE_STRING OldPassword; +} +alias TRUSTED_PASSWORD_INFO* PTRUSTED_PASSWORD_INFO; + +struct TRUSTED_DOMAIN_INFORMATION_EX { + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING FlatName; + PSID Sid; + ULONG TrustDirection; + ULONG TrustType; + ULONG TrustAttributes; +} +alias TRUSTED_DOMAIN_INFORMATION_EX* PTRUSTED_DOMAIN_INFORMATION_EX; + +struct LSA_AUTH_INFORMATION { + LARGE_INTEGER LastUpdateTime; + ULONG AuthType; + ULONG AuthInfoLength; + PUCHAR AuthInfo; +} +alias LSA_AUTH_INFORMATION* PLSA_AUTH_INFORMATION; + +struct TRUSTED_DOMAIN_AUTH_INFORMATION { + ULONG IncomingAuthInfos; + PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; + PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; + ULONG OutgoingAuthInfos; + PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; + PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; +} +alias TRUSTED_DOMAIN_AUTH_INFORMATION* PTRUSTED_DOMAIN_AUTH_INFORMATION; + +struct TRUSTED_DOMAIN_FULL_INFORMATION { + TRUSTED_DOMAIN_INFORMATION_EX Information; + TRUSTED_POSIX_OFFSET_INFO PosixOffset; + TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; +} +alias TRUSTED_DOMAIN_FULL_INFORMATION* PTRUSTED_DOMAIN_FULL_INFORMATION; + +extern (Windows) { + NTSTATUS LsaAddAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING, + ULONG); + NTSTATUS LsaCallAuthenticationPackage(HANDLE, ULONG, PVOID, ULONG, + PVOID*, PULONG, PNTSTATUS); + NTSTATUS LsaClose(LSA_HANDLE); + NTSTATUS LsaConnectUntrusted(PHANDLE); + NTSTATUS LsaCreateTrustedDomainEx(LSA_HANDLE, + PTRUSTED_DOMAIN_INFORMATION_EX, PTRUSTED_DOMAIN_AUTH_INFORMATION, + ACCESS_MASK, PLSA_HANDLE); + NTSTATUS LsaDeleteTrustedDomain(LSA_HANDLE, PSID); + NTSTATUS LsaDeregisterLogonProcess(HANDLE); + NTSTATUS LsaEnumerateAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING*, + PULONG); + NTSTATUS LsaEnumerateAccountsWithUserRight(LSA_HANDLE, + PLSA_UNICODE_STRING, PVOID*, PULONG); + NTSTATUS LsaEnumerateTrustedDomains(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, + PVOID*, ULONG, PULONG); + NTSTATUS LsaEnumerateTrustedDomainsEx(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, + TRUSTED_INFORMATION_CLASS, PVOID*, ULONG, PULONG); + NTSTATUS LsaFreeMemory(PVOID); + NTSTATUS LsaFreeReturnBuffer(PVOID); + NTSTATUS LsaLogonUser(HANDLE, PLSA_STRING, SECURITY_LOGON_TYPE, ULONG, + PVOID, ULONG, PTOKEN_GROUPS, PTOKEN_SOURCE, PVOID*, PULONG, PLUID, + PHANDLE, PQUOTA_LIMITS, PNTSTATUS); + NTSTATUS LsaLookupAuthenticationPackage(HANDLE, PLSA_STRING, PULONG); + NTSTATUS LsaLookupNames(LSA_HANDLE, ULONG, PLSA_UNICODE_STRING, + PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_SID*); + NTSTATUS LsaLookupSids(LSA_HANDLE, ULONG, PSID*, + PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_NAME*); + ULONG LsaNtStatusToWinError(NTSTATUS); + NTSTATUS LsaOpenPolicy(PLSA_UNICODE_STRING, PLSA_OBJECT_ATTRIBUTES, + ACCESS_MASK, PLSA_HANDLE); + NTSTATUS LsaQueryDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, + PVOID*); + NTSTATUS LsaQueryLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryTrustedDomainInfo(LSA_HANDLE, PSID, + TRUSTED_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaRegisterLogonProcess(PLSA_STRING, PHANDLE, + PLSA_OPERATIONAL_MODE); + NTSTATUS LsaRemoveAccountRights(LSA_HANDLE, PSID, BOOLEAN, + PLSA_UNICODE_STRING, ULONG); + NTSTATUS LsaRetrievePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING*); + NTSTATUS LsaSetDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, + PVOID); + NTSTATUS LsaSetLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetTrustedDomainInformation(LSA_HANDLE, PSID, + TRUSTED_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS, PVOID); + NTSTATUS LsaStorePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING); +} + +alias NTSTATUS function(PUNICODE_STRING, ULONG, PUNICODE_STRING) + PSAM_PASSWORD_NOTIFICATION_ROUTINE; +alias BOOLEAN function() PSAM_INIT_NOTIFICATION_ROUTINE; +alias BOOLEAN function(PUNICODE_STRING, PUNICODE_STRING, + PUNICODE_STRING, BOOLEAN) PSAM_PASSWORD_FILTER_ROUTINE; diff --git a/src/core/sys/windows/ntsecpkg.d b/src/core/sys/windows/ntsecpkg.d index 158c6f9e22..5c64b88f48 100644 --- a/src/core/sys/windows/ntsecpkg.d +++ b/src/core/sys/windows/ntsecpkg.d @@ -1,445 +1,445 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Ellery Newcomer - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ntsecpkg.d) - */ -module core.sys.windows.ntsecpkg; - -import core.sys.windows.windef, core.sys.windows.ntsecapi, core.sys.windows.security, core.sys.windows.ntdef, core.sys.windows.sspi; -import core.sys.windows.winnt: GUID; -import core.sys.windows.winbase; - -extern(Windows): - -enum :ULONG{ - ISC_REQ_DELEGATE = 1, - ISC_REQ_MUTUAL_AUTH = 2, - ISC_REQ_REPLAY_DETECT = 4, - ISC_REQ_SEQUENCE_DETECT = 8, - ISC_REQ_CONFIDENTIALITY = 16, - ISC_REQ_USE_SESSION_KEY = 32, - ISC_REQ_PROMPT_FOR_CREDS = 64, - ISC_REQ_USE_SUPPLIED_CREDS = 128, - ISC_REQ_ALLOCATE_MEMORY = 256, - ISC_REQ_USE_DCE_STYLE = 512, - ISC_REQ_DATAGRAM = 1024, - ISC_REQ_CONNECTION = 2048, - ISC_REQ_EXTENDED_ERROR = 16384, - ISC_REQ_STREAM = 32768, - ISC_REQ_INTEGRITY = 65536, - ISC_REQ_MANUAL_CRED_VALIDATION = 524288, - ISC_REQ_HTTP = 268435456, -} - -enum ISC_RET_EXTENDED_ERROR = 16384; - -enum :ULONG{ - ASC_REQ_DELEGATE = 1, - ASC_REQ_MUTUAL_AUTH = 2, - ASC_REQ_REPLAY_DETECT = 4, - ASC_REQ_SEQUENCE_DETECT = 8, - ASC_REQ_CONFIDENTIALITY = 16, - ASC_REQ_USE_SESSION_KEY = 32, - ASC_REQ_ALLOCATE_MEMORY = 256, - ASC_REQ_USE_DCE_STYLE = 512, - ASC_REQ_DATAGRAM = 1024, - ASC_REQ_CONNECTION = 2048, - ASC_REQ_EXTENDED_ERROR = 32768, - ASC_REQ_STREAM = 65536, - ASC_REQ_INTEGRITY = 131072, -} - -enum SECURITY_NATIVE_DREP = 16; -enum SECURITY_NETWORK_DREP = 0; - -enum :ULONG{ - SECPKG_STATE_ENCRYPTION_PERMITTED = 0x01, - SECPKG_STATE_STRONG_ENCRYPTION_PERMITTED = 0x02, - SECPKG_STATE_DOMAIN_CONTROLLER = 0x04, - SECPKG_STATE_WORKSTATION = 0x08, - SECPKG_STATE_STANDALONE = 0x10, -} - -/* enum definitions for Secure Service Provider/Authentication Packages */ -enum LSA_TOKEN_INFORMATION_TYPE { - LsaTokenInformationNull, - LsaTokenInformationV1 -} -alias LSA_TOKEN_INFORMATION_TYPE* PLSA_TOKEN_INFORMATION_TYPE; -enum SECPKG_EXTENDED_INFORMATION_CLASS -{ - SecpkgGssInfo = 1, - SecpkgContextThunks, - SecpkgMutualAuthLevel, - SecpkgMaxInfo -} -enum SECPKG_NAME_TYPE { - SecNameSamCompatible, - SecNameAlternateId, - SecNameFlat, - SecNameDN -} - -/* struct definitions for SSP/AP */ -struct SECPKG_PRIMARY_CRED { - LUID LogonId; - UNICODE_STRING DownlevelName; - UNICODE_STRING DomainName; - UNICODE_STRING Password; - UNICODE_STRING OldPassword; - PSID UserSid; - ULONG Flags; - UNICODE_STRING DnsDomainName; - UNICODE_STRING Upn; - UNICODE_STRING LogonServer; - UNICODE_STRING Spare1; - UNICODE_STRING Spare2; - UNICODE_STRING Spare3; - UNICODE_STRING Spare4; -} -alias SECPKG_PRIMARY_CRED* PSECPKG_PRIMARY_CRED; -struct SECPKG_SUPPLEMENTAL_CRED { - UNICODE_STRING PackageName; - ULONG CredentialSize; - PUCHAR Credentials; -} -alias SECPKG_SUPPLEMENTAL_CRED* PSECPKG_SUPPLEMENTAL_CRED; -struct SECPKG_SUPPLEMENTAL_CRED_ARRAY { - ULONG CredentialCount; - SECPKG_SUPPLEMENTAL_CRED[1] Credentials; -} -alias SECPKG_SUPPLEMENTAL_CRED_ARRAY* PSECPKG_SUPPLEMENTAL_CRED_ARRAY; -struct SECPKG_PARAMETERS { - ULONG Version; - ULONG MachineState; - ULONG SetupMode; - PSID DomainSid; - UNICODE_STRING DomainName; - UNICODE_STRING DnsDomainName; - GUID DomainGuid; -} -alias SECPKG_PARAMETERS* PSECPKG_PARAMETERS,PSECPKG_EVENT_DOMAIN_CHANGE; -alias SECPKG_PARAMETERS SECPKG_EVENT_DOMAIN_CHANGE; -struct SECPKG_CLIENT_INFO { - LUID LogonId; - ULONG ProcessID; - ULONG ThreadID; - BOOLEAN HasTcbPrivilege; - BOOLEAN Impersonating; - BOOLEAN Restricted; -} -alias SECPKG_CLIENT_INFO* PSECPKG_CLIENT_INFO; -struct SECURITY_USER_DATA { - SECURITY_STRING UserName; - SECURITY_STRING LogonDomainName; - SECURITY_STRING LogonServer; - PSID pSid; -} -alias SECURITY_USER_DATA* PSECURITY_USER_DATA,PSecurityUserData; -alias SECURITY_USER_DATA SecurityUserData; -struct SECPKG_GSS_INFO { - ULONG EncodedIdLength; - UCHAR[4] EncodedId; -} -alias SECPKG_GSS_INFO* PSECPKG_GSS_INFO; -struct SECPKG_CONTEXT_THUNKS { - ULONG InfoLevelCount; - ULONG[1] Levels; -} -alias SECPKG_CONTEXT_THUNKS* PSECPKG_CONTEXT_THUNKS; -struct SECPKG_MUTUAL_AUTH_LEVEL { - ULONG MutualAuthLevel; -} -alias SECPKG_MUTUAL_AUTH_LEVEL* PSECPKG_MUTUAL_AUTH_LEVEL; -struct SECPKG_CALL_INFO { - ULONG ProcessId; - ULONG ThreadId; - ULONG Attributes; - ULONG CallCount; -} -alias SECPKG_CALL_INFO* PSECPKG_CALL_INFO; -struct SECPKG_EXTENDED_INFORMATION { - SECPKG_EXTENDED_INFORMATION_CLASS Class; - union _Info{ - SECPKG_GSS_INFO GssInfo; - SECPKG_CONTEXT_THUNKS ContextThunks; - SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel; - } - _Info Info; -} -alias SECPKG_EXTENDED_INFORMATION* PSECPKG_EXTENDED_INFORMATION; - -/* callbacks implemented by SSP/AP dlls and called by the LSA */ -alias void function(ULONG_PTR, ULONG_PTR, PSecBuffer, - PSecBuffer) PLSA_CALLBACK_FUNCTION; - -/* misc typedefs used in the below prototypes */ -alias PVOID* PLSA_CLIENT_REQUEST; -alias ULONG LSA_SEC_HANDLE; -alias ULONG* PLSA_SEC_HANDLE; -alias LPTHREAD_START_ROUTINE SEC_THREAD_START; -alias PSECURITY_ATTRIBUTES SEC_ATTRS; - -/* functions used by SSP/AP obtainable by dispatch tables */ -alias NTSTATUS function(ULONG, PLSA_CALLBACK_FUNCTION) PLSA_REGISTER_CALLBACK; -alias NTSTATUS function(PLUID) PLSA_CREATE_LOGON_SESSION; -alias NTSTATUS function(PLUID) PLSA_DELETE_LOGON_SESSION; -alias NTSTATUS function(PLUID, ULONG, PLSA_STRING, - PLSA_STRING) PLSA_ADD_CREDENTIAL; -alias NTSTATUS function(PLUID, ULONG, PULONG, BOOLEAN, - PLSA_STRING, PULONG, PLSA_STRING) PLSA_GET_CREDENTIALS; -alias NTSTATUS function(PLUID, ULONG, PLSA_STRING) PLSA_DELETE_CREDENTIAL; -alias PVOID function(ULONG) PLSA_ALLOCATE_LSA_HEAP; -alias void function(PVOID) PLSA_FREE_LSA_HEAP; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, - ULONG, PVOID*) PLSA_ALLOCATE_CLIENT_BUFFER; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, PVOID) PLSA_FREE_CLIENT_BUFFER; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, ULONG, - PVOID, PVOID) PLSA_COPY_TO_CLIENT_BUFFER; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, - ULONG, PVOID, PVOID) PLSA_COPY_FROM_CLIENT_BUFFER; -alias NTSTATUS function() PLSA_IMPERSONATE_CLIENT; -alias NTSTATUS function() PLSA_UNLOAD_PACKAGE; -alias NTSTATUS function(HANDLE, PHANDLE) PLSA_DUPLICATE_HANDLE; -alias NTSTATUS function(PLUID, ULONG, - PVOID, BOOLEAN) PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS; -alias HANDLE function(SEC_ATTRS, ULONG, SEC_THREAD_START, - PVOID, ULONG, PULONG) PLSA_CREATE_THREAD; -alias NTSTATUS function(PSECPKG_CLIENT_INFO) PLSA_GET_CLIENT_INFO; -alias HANDLE function(SEC_THREAD_START, PVOID, - ULONG, ULONG, ULONG, ULONG, HANDLE) PLSA_REGISTER_NOTIFICATION; -alias NTSTATUS function(HANDLE) PLSA_CANCEL_NOTIFICATION; -alias NTSTATUS function(PSecBuffer, PSecBuffer) PLSA_MAP_BUFFER; -alias NTSTATUS function(PLUID, PTOKEN_SOURCE, - SECURITY_LOGON_TYPE, SECURITY_IMPERSONATION_LEVEL, LSA_TOKEN_INFORMATION_TYPE, - PVOID, PTOKEN_GROUPS, PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, - PUNICODE_STRING, PHANDLE, PNTSTATUS) PLSA_CREATE_TOKEN; -alias void function(NTSTATUS, NTSTATUS, PUNICODE_STRING, - PUNICODE_STRING, PUNICODE_STRING, PSID, SECURITY_LOGON_TYPE, - PTOKEN_SOURCE, PLUID) PLSA_AUDIT_LOGON; -alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, - PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE; -alias BOOLEAN function(PSECPKG_CALL_INFO) PLSA_GET_CALL_INFO; -alias NTSTATUS function(PUNICODE_STRING, PVOID, PVOID, - ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGEEX; -alias PVOID function(ULONG, ULONG) PLSA_CREATE_SHARED_MEMORY; -alias PVOID function(PVOID, ULONG) PLSA_ALLOCATE_SHARED_MEMORY; -alias void function(PVOID, PVOID) PLSA_FREE_SHARED_MEMORY; -alias BOOLEAN function(PVOID) PLSA_DELETE_SHARED_MEMORY; -alias NTSTATUS function(PSECURITY_STRING, SECPKG_NAME_TYPE, - PSECURITY_STRING, BOOLEAN, ULONG, PVOID*) PLSA_OPEN_SAM_USER; -alias NTSTATUS function(PVOID, PVOID *, PULONG, - PVOID *, PULONG) PLSA_GET_USER_CREDENTIALS; -alias NTSTATUS function(PVOID, PUCHAR *, PULONG) PLSA_GET_USER_AUTH_DATA; -alias NTSTATUS function(PVOID) PLSA_CLOSE_SAM_USER; -alias NTSTATUS function(PVOID, ULONG, - SECURITY_IMPERSONATION_LEVEL, PTOKEN_SOURCE, SECURITY_LOGON_TYPE, - PUNICODE_STRING, PHANDLE, PLUID, PUNICODE_STRING, PNTSTATUS) PLSA_CONVERT_AUTH_DATA_TO_TOKEN; -alias NTSTATUS function(PCHAR, ULONG_PTR, ULONG_PTR, - PSecBuffer, PSecBuffer) PLSA_CLIENT_CALLBACK; -alias NTSTATUS function(PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY) PLSA_UPDATE_PRIMARY_CREDENTIALS; -alias NTSTATUS function(PSECURITY_STRING, - SECPKG_NAME_TYPE, PSECURITY_STRING, PUCHAR *, PULONG, PUNICODE_STRING) PLSA_GET_AUTH_DATA_FOR_USER; -alias NTSTATUS function(ULONG, BOOLEAN, - PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING, - PULONG) PLSA_CRACK_SINGLE_NAME; -alias NTSTATUS function(ULONG, BOOLEAN, - PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS) PLSA_AUDIT_ACCOUNT_LOGON; -alias NTSTATUS function(PUNICODE_STRING, PVOID, - PVOID, ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE_PASSTHROUGH; - -/* Dispatch tables of functions used by SSP/AP */ -struct SECPKG_DLL_FUNCTIONS { - PLSA_ALLOCATE_LSA_HEAP AllocateHeap; - PLSA_FREE_LSA_HEAP FreeHeap; - PLSA_REGISTER_CALLBACK RegisterCallback; -} -alias SECPKG_DLL_FUNCTIONS* PSECPKG_DLL_FUNCTIONS; -struct LSA_DISPATCH_TABLE { - PLSA_CREATE_LOGON_SESSION CreateLogonSession; - PLSA_DELETE_LOGON_SESSION DeleteLogonSession; - PLSA_ADD_CREDENTIAL AddCredential; - PLSA_GET_CREDENTIALS GetCredentials; - PLSA_DELETE_CREDENTIAL DeleteCredential; - PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; - PLSA_FREE_LSA_HEAP FreeLsaHeap; - PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; - PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; - PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; - PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; -} -alias LSA_DISPATCH_TABLE* PLSA_DISPATCH_TABLE; -struct LSA_SECPKG_FUNCTION_TABLE { - PLSA_CREATE_LOGON_SESSION CreateLogonSession; - PLSA_DELETE_LOGON_SESSION DeleteLogonSession; - PLSA_ADD_CREDENTIAL AddCredential; - PLSA_GET_CREDENTIALS GetCredentials; - PLSA_DELETE_CREDENTIAL DeleteCredential; - PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; - PLSA_FREE_LSA_HEAP FreeLsaHeap; - PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; - PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; - PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; - PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; - PLSA_IMPERSONATE_CLIENT ImpersonateClient; - PLSA_UNLOAD_PACKAGE UnloadPackage; - PLSA_DUPLICATE_HANDLE DuplicateHandle; - PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials; - PLSA_CREATE_THREAD CreateThread; - PLSA_GET_CLIENT_INFO GetClientInfo; - PLSA_REGISTER_NOTIFICATION RegisterNotification; - PLSA_CANCEL_NOTIFICATION CancelNotification; - PLSA_MAP_BUFFER MapBuffer; - PLSA_CREATE_TOKEN CreateToken; - PLSA_AUDIT_LOGON AuditLogon; - PLSA_CALL_PACKAGE CallPackage; - PLSA_FREE_LSA_HEAP FreeReturnBuffer; - PLSA_GET_CALL_INFO GetCallInfo; - PLSA_CALL_PACKAGEEX CallPackageEx; - PLSA_CREATE_SHARED_MEMORY CreateSharedMemory; - PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory; - PLSA_FREE_SHARED_MEMORY FreeSharedMemory; - PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory; - PLSA_OPEN_SAM_USER OpenSamUser; - PLSA_GET_USER_CREDENTIALS GetUserCredentials; - PLSA_GET_USER_AUTH_DATA GetUserAuthData; - PLSA_CLOSE_SAM_USER CloseSamUser; - PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken; - PLSA_CLIENT_CALLBACK ClientCallback; - PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials; - PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser; - PLSA_CRACK_SINGLE_NAME CrackSingleName; - PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; - PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; -} -alias LSA_SECPKG_FUNCTION_TABLE* PLSA_SECPKG_FUNCTION_TABLE; - -/* functions implemented by SSP/AP obtainable by dispatch tables */ -alias NTSTATUS function(ULONG, PLSA_DISPATCH_TABLE, - PLSA_STRING, PLSA_STRING, PLSA_STRING *) PLSA_AP_INITIALIZE_PACKAGE; -alias NTSTATUS function(LPWSTR, LPWSTR, LPWSTR, LPWSTR, - DWORD, DWORD, PHANDLE) PLSA_AP_LOGON_USER; -alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, - PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE; -alias void function(PLUID) PLSA_AP_LOGON_TERMINATED; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, - PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_UNTRUSTED; -alias NTSTATUS function(PUNICODE_STRING, - PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_PASSTHROUGH; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, - SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, - PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, - PUNICODE_STRING *) PLSA_AP_LOGON_USER_EX; -alias NTSTATUS function(PLSA_CLIENT_REQUEST, - SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, - PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, - PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *) PLSA_AP_LOGON_USER_EX2; -alias NTSTATUS function(ULONG_PTR, PSECPKG_PARAMETERS, - PLSA_SECPKG_FUNCTION_TABLE) SpInitializeFn; -alias NTSTATUS function() SpShutDownFn; -alias NTSTATUS function(PSecPkgInfoW) SpGetInfoFn; -alias NTSTATUS function(SECURITY_LOGON_TYPE, - PUNICODE_STRING, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED) SpAcceptCredentialsFn; -alias NTSTATUS function(PUNICODE_STRING, ULONG, - PLUID, PVOID, PVOID, PVOID, PLSA_SEC_HANDLE, PTimeStamp) SpAcquireCredentialsHandleFn; -alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryCredentialsAttributesFn; -alias NTSTATUS function(LSA_SEC_HANDLE) SpFreeCredentialsHandleFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpSaveCredentialsFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpGetCredentialsFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpDeleteCredentialsFn; -alias NTSTATUS function(LSA_SEC_HANDLE, LSA_SEC_HANDLE, - PUNICODE_STRING, ULONG, ULONG, PSecBufferDesc, PLSA_SEC_HANDLE, PSecBufferDesc, - PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpInitLsaModeContextFn; -alias NTSTATUS function(LSA_SEC_HANDLE, - LSA_SEC_HANDLE, PSecBufferDesc, ULONG, ULONG, PLSA_SEC_HANDLE, PSecBufferDesc, - PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpAcceptLsaModeContextFn; -alias NTSTATUS function(LSA_SEC_HANDLE) SpDeleteContextFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpApplyControlTokenFn; -alias NTSTATUS function(PLUID, ULONG, PSecurityUserData *) SpGetUserInfoFn; -alias NTSTATUS function(SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION *) SpGetExtendedInformationFn; -alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryContextAttributesFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PUNICODE_STRING, - PUNICODE_STRING, ULONG, PVOID, PVOID, PVOID, PTimeStamp) SpAddCredentialsFn; -alias NTSTATUS function( - SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION) SpSetExtendedInformationFn; -alias NTSTATUS function(ULONG, PSECPKG_DLL_FUNCTIONS, - PVOID *) SpInstanceInitFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpInitUserModeContextFn; -alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, - PSecBufferDesc, ULONG) SpMakeSignatureFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, - ULONG, PULONG) SpVerifySignatureFn; -alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PSecBufferDesc, - ULONG) SpSealMessageFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, - ULONG, PULONG) SpUnsealMessageFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PHANDLE) SpGetContextTokenFn; -alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpCompleteAuthTokenFn; -alias NTSTATUS function(PSecBuffer, PSecBuffer) SpFormatCredentialsFn; -alias NTSTATUS function(ULONG, PUCHAR, PULONG, - PVOID *) SpMarshallSupplementalCredsFn; -alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, - PSecBuffer, PHANDLE) SpExportSecurityContextFn; -alias NTSTATUS function(PSecBuffer, HANDLE, - PLSA_SEC_HANDLE) SpImportSecurityContextFn; - -/* Dispatch tables of functions implemented by SSP/AP */ -struct SECPKG_FUNCTION_TABLE { - PLSA_AP_INITIALIZE_PACKAGE InitializePackage; - PLSA_AP_LOGON_USER LogonUser; - PLSA_AP_CALL_PACKAGE CallPackage; - PLSA_AP_LOGON_TERMINATED LogonTerminated; - PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted; - PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; - PLSA_AP_LOGON_USER_EX LogonUserEx; - PLSA_AP_LOGON_USER_EX2 LogonUserEx2; - SpInitializeFn *Initialize; - SpShutDownFn *Shutdown; - SpGetInfoFn *GetInfo; - SpAcceptCredentialsFn *AcceptCredentials; - SpAcquireCredentialsHandleFn *AcquireCredentialsHandle; - SpQueryCredentialsAttributesFn *QueryCredentialsAttributes; - SpFreeCredentialsHandleFn *FreeCredentialsHandle; - SpSaveCredentialsFn *SaveCredentials; - SpGetCredentialsFn *GetCredentials; - SpDeleteCredentialsFn *DeleteCredentials; - SpInitLsaModeContextFn *InitLsaModeContext; - SpAcceptLsaModeContextFn *AcceptLsaModeContext; - SpDeleteContextFn *DeleteContext; - SpApplyControlTokenFn *ApplyControlToken; - SpGetUserInfoFn *GetUserInfo; - SpGetExtendedInformationFn *GetExtendedInformation; - SpQueryContextAttributesFn *QueryContextAttributes; - SpAddCredentialsFn *AddCredentials; - SpSetExtendedInformationFn *SetExtendedInformation; -} -alias SECPKG_FUNCTION_TABLE* PSECPKG_FUNCTION_TABLE; - -struct SECPKG_USER_FUNCTION_TABLE { - SpInstanceInitFn *InstanceInit; - SpInitUserModeContextFn *InitUserModeContext; - SpMakeSignatureFn *MakeSignature; - SpVerifySignatureFn *VerifySignature; - SpSealMessageFn *SealMessage; - SpUnsealMessageFn *UnsealMessage; - SpGetContextTokenFn *GetContextToken; - SpQueryContextAttributesFn *QueryContextAttributes; - SpCompleteAuthTokenFn *CompleteAuthToken; - SpDeleteContextFn *DeleteUserModeContext; - SpFormatCredentialsFn *FormatCredentials; - SpMarshallSupplementalCredsFn *MarshallSupplementalCreds; - SpExportSecurityContextFn *ExportContext; - SpImportSecurityContextFn *ImportContext; -} -alias SECPKG_USER_FUNCTION_TABLE* PSECPKG_USER_FUNCTION_TABLE; - -/* Entry points to SSP/AP */ -alias NTSTATUS function(ULONG, PULONG, - PSECPKG_FUNCTION_TABLE *, PULONG) SpLsaModeInitializeFn; -alias NTSTATUS function(ULONG, PULONG, - PSECPKG_USER_FUNCTION_TABLE *, PULONG) SpUserModeInitializeFn; - +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Ellery Newcomer + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ntsecpkg.d) + */ +module core.sys.windows.ntsecpkg; + +import core.sys.windows.windef, core.sys.windows.ntsecapi, core.sys.windows.security, core.sys.windows.ntdef, core.sys.windows.sspi; +import core.sys.windows.winnt: GUID; +import core.sys.windows.winbase; + +extern(Windows): + +enum :ULONG{ + ISC_REQ_DELEGATE = 1, + ISC_REQ_MUTUAL_AUTH = 2, + ISC_REQ_REPLAY_DETECT = 4, + ISC_REQ_SEQUENCE_DETECT = 8, + ISC_REQ_CONFIDENTIALITY = 16, + ISC_REQ_USE_SESSION_KEY = 32, + ISC_REQ_PROMPT_FOR_CREDS = 64, + ISC_REQ_USE_SUPPLIED_CREDS = 128, + ISC_REQ_ALLOCATE_MEMORY = 256, + ISC_REQ_USE_DCE_STYLE = 512, + ISC_REQ_DATAGRAM = 1024, + ISC_REQ_CONNECTION = 2048, + ISC_REQ_EXTENDED_ERROR = 16384, + ISC_REQ_STREAM = 32768, + ISC_REQ_INTEGRITY = 65536, + ISC_REQ_MANUAL_CRED_VALIDATION = 524288, + ISC_REQ_HTTP = 268435456, +} + +enum ISC_RET_EXTENDED_ERROR = 16384; + +enum :ULONG{ + ASC_REQ_DELEGATE = 1, + ASC_REQ_MUTUAL_AUTH = 2, + ASC_REQ_REPLAY_DETECT = 4, + ASC_REQ_SEQUENCE_DETECT = 8, + ASC_REQ_CONFIDENTIALITY = 16, + ASC_REQ_USE_SESSION_KEY = 32, + ASC_REQ_ALLOCATE_MEMORY = 256, + ASC_REQ_USE_DCE_STYLE = 512, + ASC_REQ_DATAGRAM = 1024, + ASC_REQ_CONNECTION = 2048, + ASC_REQ_EXTENDED_ERROR = 32768, + ASC_REQ_STREAM = 65536, + ASC_REQ_INTEGRITY = 131072, +} + +enum SECURITY_NATIVE_DREP = 16; +enum SECURITY_NETWORK_DREP = 0; + +enum :ULONG{ + SECPKG_STATE_ENCRYPTION_PERMITTED = 0x01, + SECPKG_STATE_STRONG_ENCRYPTION_PERMITTED = 0x02, + SECPKG_STATE_DOMAIN_CONTROLLER = 0x04, + SECPKG_STATE_WORKSTATION = 0x08, + SECPKG_STATE_STANDALONE = 0x10, +} + +/* enum definitions for Secure Service Provider/Authentication Packages */ +enum LSA_TOKEN_INFORMATION_TYPE { + LsaTokenInformationNull, + LsaTokenInformationV1 +} +alias LSA_TOKEN_INFORMATION_TYPE* PLSA_TOKEN_INFORMATION_TYPE; +enum SECPKG_EXTENDED_INFORMATION_CLASS +{ + SecpkgGssInfo = 1, + SecpkgContextThunks, + SecpkgMutualAuthLevel, + SecpkgMaxInfo +} +enum SECPKG_NAME_TYPE { + SecNameSamCompatible, + SecNameAlternateId, + SecNameFlat, + SecNameDN +} + +/* struct definitions for SSP/AP */ +struct SECPKG_PRIMARY_CRED { + LUID LogonId; + UNICODE_STRING DownlevelName; + UNICODE_STRING DomainName; + UNICODE_STRING Password; + UNICODE_STRING OldPassword; + PSID UserSid; + ULONG Flags; + UNICODE_STRING DnsDomainName; + UNICODE_STRING Upn; + UNICODE_STRING LogonServer; + UNICODE_STRING Spare1; + UNICODE_STRING Spare2; + UNICODE_STRING Spare3; + UNICODE_STRING Spare4; +} +alias SECPKG_PRIMARY_CRED* PSECPKG_PRIMARY_CRED; +struct SECPKG_SUPPLEMENTAL_CRED { + UNICODE_STRING PackageName; + ULONG CredentialSize; + PUCHAR Credentials; +} +alias SECPKG_SUPPLEMENTAL_CRED* PSECPKG_SUPPLEMENTAL_CRED; +struct SECPKG_SUPPLEMENTAL_CRED_ARRAY { + ULONG CredentialCount; + SECPKG_SUPPLEMENTAL_CRED[1] Credentials; +} +alias SECPKG_SUPPLEMENTAL_CRED_ARRAY* PSECPKG_SUPPLEMENTAL_CRED_ARRAY; +struct SECPKG_PARAMETERS { + ULONG Version; + ULONG MachineState; + ULONG SetupMode; + PSID DomainSid; + UNICODE_STRING DomainName; + UNICODE_STRING DnsDomainName; + GUID DomainGuid; +} +alias SECPKG_PARAMETERS* PSECPKG_PARAMETERS,PSECPKG_EVENT_DOMAIN_CHANGE; +alias SECPKG_PARAMETERS SECPKG_EVENT_DOMAIN_CHANGE; +struct SECPKG_CLIENT_INFO { + LUID LogonId; + ULONG ProcessID; + ULONG ThreadID; + BOOLEAN HasTcbPrivilege; + BOOLEAN Impersonating; + BOOLEAN Restricted; +} +alias SECPKG_CLIENT_INFO* PSECPKG_CLIENT_INFO; +struct SECURITY_USER_DATA { + SECURITY_STRING UserName; + SECURITY_STRING LogonDomainName; + SECURITY_STRING LogonServer; + PSID pSid; +} +alias SECURITY_USER_DATA* PSECURITY_USER_DATA,PSecurityUserData; +alias SECURITY_USER_DATA SecurityUserData; +struct SECPKG_GSS_INFO { + ULONG EncodedIdLength; + UCHAR[4] EncodedId; +} +alias SECPKG_GSS_INFO* PSECPKG_GSS_INFO; +struct SECPKG_CONTEXT_THUNKS { + ULONG InfoLevelCount; + ULONG[1] Levels; +} +alias SECPKG_CONTEXT_THUNKS* PSECPKG_CONTEXT_THUNKS; +struct SECPKG_MUTUAL_AUTH_LEVEL { + ULONG MutualAuthLevel; +} +alias SECPKG_MUTUAL_AUTH_LEVEL* PSECPKG_MUTUAL_AUTH_LEVEL; +struct SECPKG_CALL_INFO { + ULONG ProcessId; + ULONG ThreadId; + ULONG Attributes; + ULONG CallCount; +} +alias SECPKG_CALL_INFO* PSECPKG_CALL_INFO; +struct SECPKG_EXTENDED_INFORMATION { + SECPKG_EXTENDED_INFORMATION_CLASS Class; + union _Info{ + SECPKG_GSS_INFO GssInfo; + SECPKG_CONTEXT_THUNKS ContextThunks; + SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel; + } + _Info Info; +} +alias SECPKG_EXTENDED_INFORMATION* PSECPKG_EXTENDED_INFORMATION; + +/* callbacks implemented by SSP/AP dlls and called by the LSA */ +alias void function(ULONG_PTR, ULONG_PTR, PSecBuffer, + PSecBuffer) PLSA_CALLBACK_FUNCTION; + +/* misc typedefs used in the below prototypes */ +alias PVOID* PLSA_CLIENT_REQUEST; +alias ULONG LSA_SEC_HANDLE; +alias ULONG* PLSA_SEC_HANDLE; +alias LPTHREAD_START_ROUTINE SEC_THREAD_START; +alias PSECURITY_ATTRIBUTES SEC_ATTRS; + +/* functions used by SSP/AP obtainable by dispatch tables */ +alias NTSTATUS function(ULONG, PLSA_CALLBACK_FUNCTION) PLSA_REGISTER_CALLBACK; +alias NTSTATUS function(PLUID) PLSA_CREATE_LOGON_SESSION; +alias NTSTATUS function(PLUID) PLSA_DELETE_LOGON_SESSION; +alias NTSTATUS function(PLUID, ULONG, PLSA_STRING, + PLSA_STRING) PLSA_ADD_CREDENTIAL; +alias NTSTATUS function(PLUID, ULONG, PULONG, BOOLEAN, + PLSA_STRING, PULONG, PLSA_STRING) PLSA_GET_CREDENTIALS; +alias NTSTATUS function(PLUID, ULONG, PLSA_STRING) PLSA_DELETE_CREDENTIAL; +alias PVOID function(ULONG) PLSA_ALLOCATE_LSA_HEAP; +alias void function(PVOID) PLSA_FREE_LSA_HEAP; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + ULONG, PVOID*) PLSA_ALLOCATE_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, PVOID) PLSA_FREE_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, ULONG, + PVOID, PVOID) PLSA_COPY_TO_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + ULONG, PVOID, PVOID) PLSA_COPY_FROM_CLIENT_BUFFER; +alias NTSTATUS function() PLSA_IMPERSONATE_CLIENT; +alias NTSTATUS function() PLSA_UNLOAD_PACKAGE; +alias NTSTATUS function(HANDLE, PHANDLE) PLSA_DUPLICATE_HANDLE; +alias NTSTATUS function(PLUID, ULONG, + PVOID, BOOLEAN) PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS; +alias HANDLE function(SEC_ATTRS, ULONG, SEC_THREAD_START, + PVOID, ULONG, PULONG) PLSA_CREATE_THREAD; +alias NTSTATUS function(PSECPKG_CLIENT_INFO) PLSA_GET_CLIENT_INFO; +alias HANDLE function(SEC_THREAD_START, PVOID, + ULONG, ULONG, ULONG, ULONG, HANDLE) PLSA_REGISTER_NOTIFICATION; +alias NTSTATUS function(HANDLE) PLSA_CANCEL_NOTIFICATION; +alias NTSTATUS function(PSecBuffer, PSecBuffer) PLSA_MAP_BUFFER; +alias NTSTATUS function(PLUID, PTOKEN_SOURCE, + SECURITY_LOGON_TYPE, SECURITY_IMPERSONATION_LEVEL, LSA_TOKEN_INFORMATION_TYPE, + PVOID, PTOKEN_GROUPS, PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, + PUNICODE_STRING, PHANDLE, PNTSTATUS) PLSA_CREATE_TOKEN; +alias void function(NTSTATUS, NTSTATUS, PUNICODE_STRING, + PUNICODE_STRING, PUNICODE_STRING, PSID, SECURITY_LOGON_TYPE, + PTOKEN_SOURCE, PLUID) PLSA_AUDIT_LOGON; +alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, + PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE; +alias BOOLEAN function(PSECPKG_CALL_INFO) PLSA_GET_CALL_INFO; +alias NTSTATUS function(PUNICODE_STRING, PVOID, PVOID, + ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGEEX; +alias PVOID function(ULONG, ULONG) PLSA_CREATE_SHARED_MEMORY; +alias PVOID function(PVOID, ULONG) PLSA_ALLOCATE_SHARED_MEMORY; +alias void function(PVOID, PVOID) PLSA_FREE_SHARED_MEMORY; +alias BOOLEAN function(PVOID) PLSA_DELETE_SHARED_MEMORY; +alias NTSTATUS function(PSECURITY_STRING, SECPKG_NAME_TYPE, + PSECURITY_STRING, BOOLEAN, ULONG, PVOID*) PLSA_OPEN_SAM_USER; +alias NTSTATUS function(PVOID, PVOID *, PULONG, + PVOID *, PULONG) PLSA_GET_USER_CREDENTIALS; +alias NTSTATUS function(PVOID, PUCHAR *, PULONG) PLSA_GET_USER_AUTH_DATA; +alias NTSTATUS function(PVOID) PLSA_CLOSE_SAM_USER; +alias NTSTATUS function(PVOID, ULONG, + SECURITY_IMPERSONATION_LEVEL, PTOKEN_SOURCE, SECURITY_LOGON_TYPE, + PUNICODE_STRING, PHANDLE, PLUID, PUNICODE_STRING, PNTSTATUS) PLSA_CONVERT_AUTH_DATA_TO_TOKEN; +alias NTSTATUS function(PCHAR, ULONG_PTR, ULONG_PTR, + PSecBuffer, PSecBuffer) PLSA_CLIENT_CALLBACK; +alias NTSTATUS function(PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY) PLSA_UPDATE_PRIMARY_CREDENTIALS; +alias NTSTATUS function(PSECURITY_STRING, + SECPKG_NAME_TYPE, PSECURITY_STRING, PUCHAR *, PULONG, PUNICODE_STRING) PLSA_GET_AUTH_DATA_FOR_USER; +alias NTSTATUS function(ULONG, BOOLEAN, + PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING, + PULONG) PLSA_CRACK_SINGLE_NAME; +alias NTSTATUS function(ULONG, BOOLEAN, + PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS) PLSA_AUDIT_ACCOUNT_LOGON; +alias NTSTATUS function(PUNICODE_STRING, PVOID, + PVOID, ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE_PASSTHROUGH; + +/* Dispatch tables of functions used by SSP/AP */ +struct SECPKG_DLL_FUNCTIONS { + PLSA_ALLOCATE_LSA_HEAP AllocateHeap; + PLSA_FREE_LSA_HEAP FreeHeap; + PLSA_REGISTER_CALLBACK RegisterCallback; +} +alias SECPKG_DLL_FUNCTIONS* PSECPKG_DLL_FUNCTIONS; +struct LSA_DISPATCH_TABLE { + PLSA_CREATE_LOGON_SESSION CreateLogonSession; + PLSA_DELETE_LOGON_SESSION DeleteLogonSession; + PLSA_ADD_CREDENTIAL AddCredential; + PLSA_GET_CREDENTIALS GetCredentials; + PLSA_DELETE_CREDENTIAL DeleteCredential; + PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; + PLSA_FREE_LSA_HEAP FreeLsaHeap; + PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; + PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; + PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; + PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; +} +alias LSA_DISPATCH_TABLE* PLSA_DISPATCH_TABLE; +struct LSA_SECPKG_FUNCTION_TABLE { + PLSA_CREATE_LOGON_SESSION CreateLogonSession; + PLSA_DELETE_LOGON_SESSION DeleteLogonSession; + PLSA_ADD_CREDENTIAL AddCredential; + PLSA_GET_CREDENTIALS GetCredentials; + PLSA_DELETE_CREDENTIAL DeleteCredential; + PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; + PLSA_FREE_LSA_HEAP FreeLsaHeap; + PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; + PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; + PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; + PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; + PLSA_IMPERSONATE_CLIENT ImpersonateClient; + PLSA_UNLOAD_PACKAGE UnloadPackage; + PLSA_DUPLICATE_HANDLE DuplicateHandle; + PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials; + PLSA_CREATE_THREAD CreateThread; + PLSA_GET_CLIENT_INFO GetClientInfo; + PLSA_REGISTER_NOTIFICATION RegisterNotification; + PLSA_CANCEL_NOTIFICATION CancelNotification; + PLSA_MAP_BUFFER MapBuffer; + PLSA_CREATE_TOKEN CreateToken; + PLSA_AUDIT_LOGON AuditLogon; + PLSA_CALL_PACKAGE CallPackage; + PLSA_FREE_LSA_HEAP FreeReturnBuffer; + PLSA_GET_CALL_INFO GetCallInfo; + PLSA_CALL_PACKAGEEX CallPackageEx; + PLSA_CREATE_SHARED_MEMORY CreateSharedMemory; + PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory; + PLSA_FREE_SHARED_MEMORY FreeSharedMemory; + PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory; + PLSA_OPEN_SAM_USER OpenSamUser; + PLSA_GET_USER_CREDENTIALS GetUserCredentials; + PLSA_GET_USER_AUTH_DATA GetUserAuthData; + PLSA_CLOSE_SAM_USER CloseSamUser; + PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken; + PLSA_CLIENT_CALLBACK ClientCallback; + PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials; + PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser; + PLSA_CRACK_SINGLE_NAME CrackSingleName; + PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; + PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; +} +alias LSA_SECPKG_FUNCTION_TABLE* PLSA_SECPKG_FUNCTION_TABLE; + +/* functions implemented by SSP/AP obtainable by dispatch tables */ +alias NTSTATUS function(ULONG, PLSA_DISPATCH_TABLE, + PLSA_STRING, PLSA_STRING, PLSA_STRING *) PLSA_AP_INITIALIZE_PACKAGE; +alias NTSTATUS function(LPWSTR, LPWSTR, LPWSTR, LPWSTR, + DWORD, DWORD, PHANDLE) PLSA_AP_LOGON_USER; +alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, + PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE; +alias void function(PLUID) PLSA_AP_LOGON_TERMINATED; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_UNTRUSTED; +alias NTSTATUS function(PUNICODE_STRING, + PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_PASSTHROUGH; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, + PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, + PUNICODE_STRING *) PLSA_AP_LOGON_USER_EX; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, + PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, + PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *) PLSA_AP_LOGON_USER_EX2; +alias NTSTATUS function(ULONG_PTR, PSECPKG_PARAMETERS, + PLSA_SECPKG_FUNCTION_TABLE) SpInitializeFn; +alias NTSTATUS function() SpShutDownFn; +alias NTSTATUS function(PSecPkgInfoW) SpGetInfoFn; +alias NTSTATUS function(SECURITY_LOGON_TYPE, + PUNICODE_STRING, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED) SpAcceptCredentialsFn; +alias NTSTATUS function(PUNICODE_STRING, ULONG, + PLUID, PVOID, PVOID, PVOID, PLSA_SEC_HANDLE, PTimeStamp) SpAcquireCredentialsHandleFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryCredentialsAttributesFn; +alias NTSTATUS function(LSA_SEC_HANDLE) SpFreeCredentialsHandleFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpSaveCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpGetCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpDeleteCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, LSA_SEC_HANDLE, + PUNICODE_STRING, ULONG, ULONG, PSecBufferDesc, PLSA_SEC_HANDLE, PSecBufferDesc, + PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpInitLsaModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, + LSA_SEC_HANDLE, PSecBufferDesc, ULONG, ULONG, PLSA_SEC_HANDLE, PSecBufferDesc, + PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpAcceptLsaModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE) SpDeleteContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpApplyControlTokenFn; +alias NTSTATUS function(PLUID, ULONG, PSecurityUserData *) SpGetUserInfoFn; +alias NTSTATUS function(SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION *) SpGetExtendedInformationFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryContextAttributesFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PUNICODE_STRING, + PUNICODE_STRING, ULONG, PVOID, PVOID, PVOID, PTimeStamp) SpAddCredentialsFn; +alias NTSTATUS function( + SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION) SpSetExtendedInformationFn; +alias NTSTATUS function(ULONG, PSECPKG_DLL_FUNCTIONS, + PVOID *) SpInstanceInitFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpInitUserModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, + PSecBufferDesc, ULONG) SpMakeSignatureFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, + ULONG, PULONG) SpVerifySignatureFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PSecBufferDesc, + ULONG) SpSealMessageFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, + ULONG, PULONG) SpUnsealMessageFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PHANDLE) SpGetContextTokenFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpCompleteAuthTokenFn; +alias NTSTATUS function(PSecBuffer, PSecBuffer) SpFormatCredentialsFn; +alias NTSTATUS function(ULONG, PUCHAR, PULONG, + PVOID *) SpMarshallSupplementalCredsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, + PSecBuffer, PHANDLE) SpExportSecurityContextFn; +alias NTSTATUS function(PSecBuffer, HANDLE, + PLSA_SEC_HANDLE) SpImportSecurityContextFn; + +/* Dispatch tables of functions implemented by SSP/AP */ +struct SECPKG_FUNCTION_TABLE { + PLSA_AP_INITIALIZE_PACKAGE InitializePackage; + PLSA_AP_LOGON_USER LogonUser; + PLSA_AP_CALL_PACKAGE CallPackage; + PLSA_AP_LOGON_TERMINATED LogonTerminated; + PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted; + PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; + PLSA_AP_LOGON_USER_EX LogonUserEx; + PLSA_AP_LOGON_USER_EX2 LogonUserEx2; + SpInitializeFn *Initialize; + SpShutDownFn *Shutdown; + SpGetInfoFn *GetInfo; + SpAcceptCredentialsFn *AcceptCredentials; + SpAcquireCredentialsHandleFn *AcquireCredentialsHandle; + SpQueryCredentialsAttributesFn *QueryCredentialsAttributes; + SpFreeCredentialsHandleFn *FreeCredentialsHandle; + SpSaveCredentialsFn *SaveCredentials; + SpGetCredentialsFn *GetCredentials; + SpDeleteCredentialsFn *DeleteCredentials; + SpInitLsaModeContextFn *InitLsaModeContext; + SpAcceptLsaModeContextFn *AcceptLsaModeContext; + SpDeleteContextFn *DeleteContext; + SpApplyControlTokenFn *ApplyControlToken; + SpGetUserInfoFn *GetUserInfo; + SpGetExtendedInformationFn *GetExtendedInformation; + SpQueryContextAttributesFn *QueryContextAttributes; + SpAddCredentialsFn *AddCredentials; + SpSetExtendedInformationFn *SetExtendedInformation; +} +alias SECPKG_FUNCTION_TABLE* PSECPKG_FUNCTION_TABLE; + +struct SECPKG_USER_FUNCTION_TABLE { + SpInstanceInitFn *InstanceInit; + SpInitUserModeContextFn *InitUserModeContext; + SpMakeSignatureFn *MakeSignature; + SpVerifySignatureFn *VerifySignature; + SpSealMessageFn *SealMessage; + SpUnsealMessageFn *UnsealMessage; + SpGetContextTokenFn *GetContextToken; + SpQueryContextAttributesFn *QueryContextAttributes; + SpCompleteAuthTokenFn *CompleteAuthToken; + SpDeleteContextFn *DeleteUserModeContext; + SpFormatCredentialsFn *FormatCredentials; + SpMarshallSupplementalCredsFn *MarshallSupplementalCreds; + SpExportSecurityContextFn *ExportContext; + SpImportSecurityContextFn *ImportContext; +} +alias SECPKG_USER_FUNCTION_TABLE* PSECPKG_USER_FUNCTION_TABLE; + +/* Entry points to SSP/AP */ +alias NTSTATUS function(ULONG, PULONG, + PSECPKG_FUNCTION_TABLE *, PULONG) SpLsaModeInitializeFn; +alias NTSTATUS function(ULONG, PULONG, + PSECPKG_USER_FUNCTION_TABLE *, PULONG) SpUserModeInitializeFn; + diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d index 6b67245a22..91e8aadf1c 100644 --- a/src/core/sys/windows/oaidl.d +++ b/src/core/sys/windows/oaidl.d @@ -1,671 +1,671 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_oaidl.d) - */ -module core.sys.windows.oaidl; - -private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; - -const DISPID_UNKNOWN = -1; -const DISPID_VALUE = 0; -const DISPID_PROPERTYPUT = -3; -const DISPID_NEWENUM = -4; -const DISPID_EVALUATE = -5; -const DISPID_CONSTRUCTOR = -6; -const DISPID_DESTRUCTOR = -7; -const DISPID_COLLECT = -8; - -const FADF_AUTO = 1; -const FADF_STATIC = 2; -const FADF_EMBEDDED = 4; -const FADF_FIXEDSIZE = 16; -const FADF_RECORD = 32; -const FADF_HAVEIID = 64; -const FADF_HAVEVARTYPE = 128; -const FADF_BSTR = 256; -const FADF_UNKNOWN = 512; -const FADF_DISPATCH = 1024; -const FADF_VARIANT = 2048; -const FADF_RESERVED = 0xf0e8; -const FADF_DATADELETED = 0x1000; -const FADF_CREATEVECTOR = 0x2000; - -const PARAMFLAG_NONE = 0; -const PARAMFLAG_FIN = 1; -const PARAMFLAG_FOUT = 2; -const PARAMFLAG_FLCID = 4; -const PARAMFLAG_FRETVAL = 8; -const PARAMFLAG_FOPT = 16; -const PARAMFLAG_FHASDEFAULT = 32; - -const IDLFLAG_NONE = PARAMFLAG_NONE; -const IDLFLAG_FIN = PARAMFLAG_FIN; -const IDLFLAG_FOUT = PARAMFLAG_FOUT; -const IDLFLAG_FLCID = PARAMFLAG_FLCID; -const IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; - -const IMPLTYPEFLAG_FDEFAULT = 1; -const IMPLTYPEFLAG_FSOURCE = 2; -const IMPLTYPEFLAG_FRESTRICTED = 4; -const IMPLTYPEFLAG_FDEFAULTVTABLE = 8; - - -enum SYSKIND { - SYS_WIN16, - SYS_WIN32, - SYS_MAC -} - -enum LIBFLAGS { - LIBFLAG_FRESTRICTED = 1, - LIBFLAG_FCONTROL = 2, - LIBFLAG_FHIDDEN = 4, - LIBFLAG_FHASDISKIMAGE = 8 -} - -struct TLIBATTR { - GUID guid; - LCID lcid; - SYSKIND syskind; - WORD wMajorVerNum; - WORD wMinorVerNum; - WORD wLibFlags; -} -alias TLIBATTR* LPTLIBATTR; - -alias CY CURRENCY; - -struct SAFEARRAYBOUND { - ULONG cElements; - LONG lLbound; -} -alias SAFEARRAYBOUND* LPSAFEARRAYBOUND; - -struct SAFEARR_BSTR { - ULONG Size; - wireBSTR* aBstr; -} - -struct SAFEARR_UNKNOWN { - ULONG Size; - IUnknown* apUnknown; -} - -struct SAFEARR_DISPATCH { - ULONG Size; - LPDISPATCH* apDispatch; -} - -struct SAFEARR_VARIANT { - ULONG Size; - _wireVARIANT* aVariant; -} - -enum SF_TYPE { - SF_ERROR=VARENUM.VT_ERROR, - SF_I1=VARENUM.VT_I1, - SF_I2=VARENUM.VT_I2, - SF_I4=VARENUM.VT_I4, - SF_I8=VARENUM.VT_I8, - SF_BSTR=VARENUM.VT_BSTR, - SF_UNKNOWN=VARENUM.VT_UNKNOWN, - SF_DISPATCH=VARENUM.VT_DISPATCH, - SF_VARIANT=VARENUM.VT_VARIANT -} - -struct _wireBRECORD { - ULONG fFlags; - ULONG clSize; - LPRECORDINFO* pRecInfo; - byte* pRecord; -} -alias _wireBRECORD* wireBRECORD; - -struct SAFEARR_BRECORD { - ULONG Size; - wireBRECORD* aRecord; -} - -struct SAFEARR_HAVEIID { - ULONG Size; - IUnknown* apUnknown; - IID iid; -} - -struct SAFEARRAYUNION { - ULONG sfType; - union _u { - SAFEARR_BSTR BstrStr; - SAFEARR_UNKNOWN UnknownStr; - SAFEARR_DISPATCH DispatchStr; - SAFEARR_VARIANT VariantStr; - SAFEARR_BRECORD RecordStr; - SAFEARR_HAVEIID HaveIidStr; - BYTE_SIZEDARR ByteStr; - WORD_SIZEDARR WordStr; - DWORD_SIZEDARR LongStr; - HYPER_SIZEDARR HyperStr; - } - _u u; -} - -struct _wireSAFEARRAY { - USHORT cDims; - USHORT fFeatures; - ULONG cbElements; - ULONG cLocks; - SAFEARRAYUNION uArrayStructs; - SAFEARRAYBOUND[1] rgsabound; -} -alias _wireSAFEARRAY* wireSAFEARRAY; - -alias wireSAFEARRAY* wirePSAFEARRAY; - -struct SAFEARRAY { - USHORT cDims; - USHORT fFeatures; - ULONG cbElements; - ULONG cLocks; - PVOID pvData; - SAFEARRAYBOUND[1] rgsabound; -} -alias SAFEARRAY* LPSAFEARRAY; - -struct VARIANT { - union { - struct { - VARTYPE vt; - WORD wReserved1; - WORD wReserved2; - WORD wReserved3; - union { - int lVal; - LONGLONG llVal; - ubyte bVal; - short iVal; - float fltVal; - double dblVal; - VARIANT_BOOL boolVal; - SCODE scode; - CY cyVal; - DATE date; - BSTR bstrVal; - IUnknown punkVal; - IDispatch pdispVal; - SAFEARRAY* parray; - ubyte* pbVal; - short* piVal; - int* plVal; - float* pfltVal; - double* pdblVal; - VARIANT_BOOL* pboolVal; - _VARIANT_BOOL* pbool; - SCODE* pscode; - CY* pcyVal; - DATE* pdate; - BSTR* pbstrVal; - IUnknown* ppunkVal; - IDispatch* ppdispVal; - SAFEARRAY** pparray; - VARIANT* pvarVal; - void* byref; - CHAR cVal; - USHORT uiVal; - ULONG ulVal; - ULONGLONG ullVal; - INT intVal; - UINT uintVal; - DECIMAL* pdecVal; - CHAR* pcVal; - USHORT* puiVal; - ULONG* pulVal; - INT* pintVal; - UINT* puintVal; - struct { - PVOID pvRecord; - IRecordInfo pRecInfo; - } - } - } - DECIMAL decVal; - } -} -alias VARIANT* LPVARIANT; - -alias VARIANT VARIANTARG; -alias VARIANT* LPVARIANTARG; - -struct _wireVARIANT { - DWORD clSize; - DWORD rpcReserved; - USHORT vt; - USHORT wReserved1; - USHORT wReserved2; - USHORT wReserved3; - union { - LONG lVal; - LONGLONG llVal; - BYTE bVal; - SHORT iVal; - FLOAT fltVal; - DOUBLE dblVal; - VARIANT_BOOL boolVal; - SCODE scode; - CY cyVal; - DATE date; - wireBSTR bstrVal; - IUnknown punkVal; - LPDISPATCH pdispVal; - wirePSAFEARRAY parray; - wireBRECORD brecVal; - BYTE* pbVal; - SHORT* piVal; - LONG* plVal; - FLOAT* pfltVal; - DOUBLE* pdblVal; - VARIANT_BOOL* pboolVal; - SCODE* pscode; - CY* pcyVal; - DATE* pdate; - wireBSTR* pbstrVal; - IUnknown* ppunkVal; - LPDISPATCH* ppdispVal; - wirePSAFEARRAY* pparray; - wireVARIANT* pvarVal; - CHAR cVal; - USHORT uiVal; - ULONG ulVal; - ULONGLONG ullVal; - INT intVal; - UINT uintVal; - DECIMAL decVal; - DECIMAL* pdecVal; - CHAR* pcVal; - USHORT* puiVal; - ULONG* pulVal; - INT* pintVal; - UINT* puintVal; - } -} -alias _wireVARIANT* wireVARIANT; - -alias LONG DISPID; -alias DISPID MEMBERID; -alias DWORD HREFTYPE; - -enum TYPEKIND { - TKIND_ENUM, TKIND_RECORD, TKIND_MODULE, TKIND_INTERFACE, TKIND_DISPATCH, - TKIND_COCLASS, TKIND_ALIAS, TKIND_UNION, TKIND_MAX -} - -struct TYPEDESC { - union { - TYPEDESC* lptdesc; - ARRAYDESC* lpadesc; - HREFTYPE hreftype; - } - VARTYPE vt; -} - -struct ARRAYDESC { - TYPEDESC tdescElem; - USHORT cDims; - SAFEARRAYBOUND[1] rgbounds; -} - -struct PARAMDESCEX { - ULONG cBytes; - VARIANTARG varDefaultValue; -} -alias PARAMDESCEX* LPPARAMDESCEX; - -struct PARAMDESC { - LPPARAMDESCEX pparamdescex; - USHORT wParamFlags; -} -alias PARAMDESC* LPPARAMDESC; - -struct IDLDESC { - ULONG dwReserved; - USHORT wIDLFlags; -} -alias IDLDESC* LPIDLDESC; - -struct ELEMDESC { - TYPEDESC tdesc; - union { - IDLDESC idldesc; - PARAMDESC paramdesc; - } -} -alias ELEMDESC* LPELEMDESC; - -struct TYPEATTR { - GUID guid; - LCID lcid; - DWORD dwReserved; - MEMBERID memidConstructor; - MEMBERID memidDestructor; - LPOLESTR lpstrSchema; - ULONG cbSizeInstance; - TYPEKIND typekind; - WORD cFuncs; - WORD cVars; - WORD cImplTypes; - WORD cbSizeVft; - WORD cbAlignment; - WORD wTypeFlags; - WORD wMajorVerNum; - WORD wMinorVerNum; - TYPEDESC tdescAlias; - IDLDESC idldescType; -} -alias TYPEATTR* LPTYPEATTR; - -struct DISPPARAMS { - VARIANTARG* rgvarg; - DISPID* rgdispidNamedArgs; - UINT cArgs; - UINT cNamedArgs; -} - -struct EXCEPINFO { - WORD wCode; - WORD wReserved; - BSTR bstrSource; - BSTR bstrDescription; - BSTR bstrHelpFile; - DWORD dwHelpContext; - PVOID pvReserved; - extern (Windows) { - HRESULT function (EXCEPINFO* ) pfnDeferredFillIn; - } - SCODE scode; -} -alias EXCEPINFO* LPEXCEPINFO; - -enum CALLCONV { - CC_FASTCALL, - CC_CDECL, - CC_MSCPASCAL, - CC_PASCAL=CC_MSCPASCAL, - CC_MACPASCAL, - CC_STDCALL, - CC_FPFASTCALL, - CC_SYSCALL, - CC_MPWCDECL, - CC_MPWPASCAL, - CC_MAX=CC_MPWPASCAL -} - -enum FUNCKIND { - FUNC_VIRTUAL, - FUNC_PUREVIRTUAL, - FUNC_NONVIRTUAL, - FUNC_STATIC, - FUNC_DISPATCH -} - -enum INVOKEKIND { - INVOKE_FUNC = 1, - INVOKE_PROPERTYGET = 2, - INVOKE_PROPERTYPUT = 4, - INVOKE_PROPERTYPUTREF = 8 -} - -struct FUNCDESC { - MEMBERID memid; - SCODE* lprgscode; - ELEMDESC* lprgelemdescParam; - FUNCKIND funckind; - INVOKEKIND invkind; - CALLCONV callconv; - SHORT cParams; - SHORT cParamsOpt; - SHORT oVft; - SHORT cScodes; - ELEMDESC elemdescFunc; - WORD wFuncFlags; -} -alias FUNCDESC* LPFUNCDESC; - -enum VARKIND { - VAR_PERINSTANCE, VAR_STATIC, VAR_CONST, VAR_DISPATCH -} - -struct VARDESC { - MEMBERID memid; - LPOLESTR lpstrSchema; - union { - ULONG oInst; - VARIANT* lpvarValue; - } - ELEMDESC elemdescVar; - WORD wVarFlags; - VARKIND varkind; -} -alias VARDESC* LPVARDESC; - -enum TYPEFLAGS { - TYPEFLAG_FAPPOBJECT = 1, - TYPEFLAG_FCANCREATE = 2, - TYPEFLAG_FLICENSED = 4, - TYPEFLAG_FPREDECLID = 8, - TYPEFLAG_FHIDDEN = 16, - TYPEFLAG_FCONTROL = 32, - TYPEFLAG_FDUAL = 64, - TYPEFLAG_FNONEXTENSIBLE = 128, - TYPEFLAG_FOLEAUTOMATION = 256, - TYPEFLAG_FRESTRICTED = 512, - TYPEFLAG_FAGGREGATABLE = 1024, - TYPEFLAG_FREPLACEABLE = 2048, - TYPEFLAG_FDISPATCHABLE = 4096, - TYPEFLAG_FREVERSEBIND = 8192 -} - -enum FUNCFLAGS { - FUNCFLAG_FRESTRICTED = 1, - FUNCFLAG_FSOURCE = 2, - FUNCFLAG_FBINDABLE = 4, - FUNCFLAG_FREQUESTEDIT = 8, - FUNCFLAG_FDISPLAYBIND = 16, - FUNCFLAG_FDEFAULTBIND = 32, - FUNCFLAG_FHIDDEN = 64, - FUNCFLAG_FUSESGETLASTERROR = 128, - FUNCFLAG_FDEFAULTCOLLELEM = 256, - FUNCFLAG_FUIDEFAULT = 512, - FUNCFLAG_FNONBROWSABLE = 1024, - FUNCFLAG_FREPLACEABLE = 2048, - FUNCFLAG_FIMMEDIATEBIND = 4096 -} - -enum VARFLAGS { - VARFLAG_FREADONLY = 1, - VARFLAG_FSOURCE = 2, - VARFLAG_FBINDABLE = 4, - VARFLAG_FREQUESTEDIT = 8, - VARFLAG_FDISPLAYBIND = 16, - VARFLAG_FDEFAULTBIND = 32, - VARFLAG_FHIDDEN = 64, - VARFLAG_FRESTRICTED = 128, - VARFLAG_FDEFAULTCOLLELEM = 256, - VARFLAG_FUIDEFAULT = 512, - VARFLAG_FNONBROWSABLE = 1024, - VARFLAG_FREPLACEABLE = 2048, - VARFLAG_FIMMEDIATEBIND = 4096 -} - -struct CLEANLOCALSTORAGE { - IUnknown pInterface; - PVOID pStorage; - DWORD flags; -} - -struct CUSTDATAITEM { - GUID guid; - VARIANTARG varValue; -} -alias CUSTDATAITEM* LPCUSTDATAITEM; - -struct CUSTDATA { - DWORD cCustData; - LPCUSTDATAITEM prgCustData; -} -alias CUSTDATA* LPCUSTDATA; - -enum DESCKIND { - DESCKIND_NONE = 0, - DESCKIND_FUNCDESC = DESCKIND_NONE+1, - DESCKIND_VARDESC = DESCKIND_FUNCDESC+1, - DESCKIND_TYPECOMP = DESCKIND_VARDESC+1, - DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP+1, - DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ+1 -} - -union BINDPTR { - LPFUNCDESC lpfuncdesc; - LPVARDESC lpvardesc; - LPTYPECOMP lptcomp; -} -alias BINDPTR* LPBINDPTR; - -interface IDispatch : IUnknown { - HRESULT GetTypeInfoCount(UINT*); - HRESULT GetTypeInfo(UINT, LCID, LPTYPEINFO*); - HRESULT GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*); - HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); -} -alias IDispatch LPDISPATCH; - -interface IEnumVARIANT : IUnknown { - HRESULT Next(ULONG, VARIANT*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumVARIANT*); -} -alias IEnumVARIANT LPENUMVARIANT; - -interface ITypeComp : IUnknown { - HRESULT Bind(LPOLESTR, ULONG, WORD, LPTYPEINFO*, DESCKIND*, LPBINDPTR); - HRESULT BindType(LPOLESTR, ULONG, LPTYPEINFO*, LPTYPECOMP*); -} -alias ITypeComp LPTYPECOMP; - -interface ITypeInfo : IUnknown { - HRESULT GetTypeAttr(LPTYPEATTR*); - HRESULT GetTypeComp(LPTYPECOMP*); - HRESULT GetFuncDesc(UINT, LPFUNCDESC*); - HRESULT GetVarDesc(UINT, LPVARDESC*); - HRESULT GetNames(MEMBERID, BSTR*, UINT, UINT*); - HRESULT GetRefTypeOfImplType(UINT, HREFTYPE*); - HRESULT GetImplTypeFlags(UINT, INT*); - HRESULT GetIDsOfNames(LPOLESTR*, UINT, MEMBERID*); - HRESULT Invoke(PVOID, MEMBERID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, - UINT*); - HRESULT GetDocumentation(MEMBERID, BSTR*, BSTR*, DWORD*, BSTR*); - HRESULT GetDllEntry(MEMBERID, INVOKEKIND, BSTR*, BSTR*, WORD*); - HRESULT GetRefTypeInfo(HREFTYPE, LPTYPEINFO*); - HRESULT AddressOfMember(MEMBERID, INVOKEKIND, PVOID*); - HRESULT CreateInstance(LPUNKNOWN, REFIID, PVOID*); - HRESULT GetMops(MEMBERID, BSTR*); - HRESULT GetContainingTypeLib(LPTYPELIB*, UINT*); - void ReleaseTypeAttr(LPTYPEATTR); - void ReleaseFuncDesc(LPFUNCDESC); - void ReleaseVarDesc(LPVARDESC); -} -alias ITypeInfo LPTYPEINFO; - -interface ITypeInfo2 : ITypeInfo { - HRESULT GetTypeKind(TYPEKIND*); - HRESULT GetTypeFlags(ULONG*); - HRESULT GetFuncIndexOfMemId(MEMBERID, INVOKEKIND, UINT*); - HRESULT GetVarIndexOfMemId(MEMBERID, UINT*); - HRESULT GetCustData(REFGUID, VARIANT*); - HRESULT GetFuncCustData(UINT, REFGUID, VARIANT*); - HRESULT GetParamCustData(UINT, UINT, REFGUID, VARIANT*); - HRESULT GetVarCustData(UINT, REFGUID, VARIANT*); - HRESULT GetImplTypeCustData(UINT, REFGUID, VARIANT*); - HRESULT GetDocumentation2(MEMBERID, LCID, BSTR*, DWORD*, BSTR*); - HRESULT GetAllCustData(CUSTDATA*); - HRESULT GetAllFuncCustData(UINT, CUSTDATA*); - HRESULT GetAllParamCustData(UINT, UINT, CUSTDATA*); - HRESULT GetAllVarCustData(UINT, CUSTDATA*); - HRESULT GetAllImplTypeCustData(UINT, CUSTDATA*); -} -alias ITypeInfo2 LPTYPEINFO2; - -interface ITypeLib : IUnknown { - UINT GetTypeInfoCount(); - HRESULT GetTypeInfo(UINT, ITypeInfo*); - HRESULT GetTypeInfoType(UINT, TYPEKIND*); - HRESULT GetTypeInfoOfGuid(REFGUID, ITypeInfo*); - HRESULT GetLibAttr(TLIBATTR**); - HRESULT GetTypeComp(ITypeComp); - HRESULT GetDocumentation(INT, BSTR*, BSTR*, DWORD*, BSTR*); - HRESULT IsName(LPOLESTR, ULONG, BOOL*); - HRESULT FindName(LPOLESTR, ULONG, ITypeInfo*, MEMBERID*, USHORT*); - void ReleaseTLibAttr(TLIBATTR*); -} -alias ITypeLib LPTYPELIB; - -interface ITypeLib2 : ITypeLib { - HRESULT GetCustData(REFGUID, VARIANT*); - HRESULT GetLibStatistics(ULONG*, ULONG*); - HRESULT GetDocumentation2(INT, LCID, BSTR*, DWORD*, BSTR*); - HRESULT GetAllCustData(CUSTDATA*); -} -alias ITypeLib2 LPTYPELIB2; - -interface IErrorInfo : IUnknown { - HRESULT GetGUID(GUID*); - HRESULT GetSource(BSTR*); - HRESULT GetDescription(BSTR*); - HRESULT GetHelpFile(BSTR*); - HRESULT GetHelpContext(DWORD*); -} -alias IErrorInfo LPERRORINFO; - -interface ICreateErrorInfo : IUnknown { - HRESULT SetGUID(REFGUID); - HRESULT SetSource(LPOLESTR); - HRESULT SetDescription(LPOLESTR); - HRESULT SetHelpFile(LPOLESTR); - HRESULT SetHelpContext(DWORD); -} -alias ICreateErrorInfo LPCREATEERRORINFO; - -interface ISupportErrorInfo : IUnknown { - HRESULT InterfaceSupportsErrorInfo(REFIID); -} -alias ISupportErrorInfo LPSUPPORTERRORINFO; - -interface IRecordInfo : IUnknown { - HRESULT RecordInit(PVOID); - HRESULT RecordClear(PVOID); - HRESULT RecordCopy(PVOID, PVOID); - HRESULT GetGuid(GUID*); - HRESULT GetName(BSTR*); - HRESULT GetSize(ULONG*); - HRESULT GetTypeInfo(ITypeInfo*); - HRESULT GetField(PVOID, LPCOLESTR, VARIANT*); - HRESULT GetFieldNoCopy(PVOID, LPCOLESTR, VARIANT*, PVOID*); - HRESULT PutField (ULONG, PVOID, LPCOLESTR, VARIANT*); - HRESULT PutFieldNoCopy(ULONG, PVOID, LPCOLESTR, VARIANT*); - HRESULT GetFieldNames(ULONG*, BSTR*); - BOOL IsMatchingType(); - PVOID RecordCreate(); - HRESULT RecordCreateCopy(PVOID, PVOID*); - HRESULT RecordDestroy (PVOID); -} -alias IRecordInfo LPRECORDINFO; - -interface ITypeMarshal : IUnknown { - HRESULT Size(PVOID, DWORD, PVOID, ULONG*); - HRESULT Marshal(PVOID, DWORD, PVOID, ULONG, BYTE*, ULONG*); - HRESULT Unmarshal(PVOID, DWORD, ULONG, BYTE*, ULONG*); - HRESULT Free(PVOID); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_oaidl.d) + */ +module core.sys.windows.oaidl; + +private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; + +const DISPID_UNKNOWN = -1; +const DISPID_VALUE = 0; +const DISPID_PROPERTYPUT = -3; +const DISPID_NEWENUM = -4; +const DISPID_EVALUATE = -5; +const DISPID_CONSTRUCTOR = -6; +const DISPID_DESTRUCTOR = -7; +const DISPID_COLLECT = -8; + +const FADF_AUTO = 1; +const FADF_STATIC = 2; +const FADF_EMBEDDED = 4; +const FADF_FIXEDSIZE = 16; +const FADF_RECORD = 32; +const FADF_HAVEIID = 64; +const FADF_HAVEVARTYPE = 128; +const FADF_BSTR = 256; +const FADF_UNKNOWN = 512; +const FADF_DISPATCH = 1024; +const FADF_VARIANT = 2048; +const FADF_RESERVED = 0xf0e8; +const FADF_DATADELETED = 0x1000; +const FADF_CREATEVECTOR = 0x2000; + +const PARAMFLAG_NONE = 0; +const PARAMFLAG_FIN = 1; +const PARAMFLAG_FOUT = 2; +const PARAMFLAG_FLCID = 4; +const PARAMFLAG_FRETVAL = 8; +const PARAMFLAG_FOPT = 16; +const PARAMFLAG_FHASDEFAULT = 32; + +const IDLFLAG_NONE = PARAMFLAG_NONE; +const IDLFLAG_FIN = PARAMFLAG_FIN; +const IDLFLAG_FOUT = PARAMFLAG_FOUT; +const IDLFLAG_FLCID = PARAMFLAG_FLCID; +const IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; + +const IMPLTYPEFLAG_FDEFAULT = 1; +const IMPLTYPEFLAG_FSOURCE = 2; +const IMPLTYPEFLAG_FRESTRICTED = 4; +const IMPLTYPEFLAG_FDEFAULTVTABLE = 8; + + +enum SYSKIND { + SYS_WIN16, + SYS_WIN32, + SYS_MAC +} + +enum LIBFLAGS { + LIBFLAG_FRESTRICTED = 1, + LIBFLAG_FCONTROL = 2, + LIBFLAG_FHIDDEN = 4, + LIBFLAG_FHASDISKIMAGE = 8 +} + +struct TLIBATTR { + GUID guid; + LCID lcid; + SYSKIND syskind; + WORD wMajorVerNum; + WORD wMinorVerNum; + WORD wLibFlags; +} +alias TLIBATTR* LPTLIBATTR; + +alias CY CURRENCY; + +struct SAFEARRAYBOUND { + ULONG cElements; + LONG lLbound; +} +alias SAFEARRAYBOUND* LPSAFEARRAYBOUND; + +struct SAFEARR_BSTR { + ULONG Size; + wireBSTR* aBstr; +} + +struct SAFEARR_UNKNOWN { + ULONG Size; + IUnknown* apUnknown; +} + +struct SAFEARR_DISPATCH { + ULONG Size; + LPDISPATCH* apDispatch; +} + +struct SAFEARR_VARIANT { + ULONG Size; + _wireVARIANT* aVariant; +} + +enum SF_TYPE { + SF_ERROR=VARENUM.VT_ERROR, + SF_I1=VARENUM.VT_I1, + SF_I2=VARENUM.VT_I2, + SF_I4=VARENUM.VT_I4, + SF_I8=VARENUM.VT_I8, + SF_BSTR=VARENUM.VT_BSTR, + SF_UNKNOWN=VARENUM.VT_UNKNOWN, + SF_DISPATCH=VARENUM.VT_DISPATCH, + SF_VARIANT=VARENUM.VT_VARIANT +} + +struct _wireBRECORD { + ULONG fFlags; + ULONG clSize; + LPRECORDINFO* pRecInfo; + byte* pRecord; +} +alias _wireBRECORD* wireBRECORD; + +struct SAFEARR_BRECORD { + ULONG Size; + wireBRECORD* aRecord; +} + +struct SAFEARR_HAVEIID { + ULONG Size; + IUnknown* apUnknown; + IID iid; +} + +struct SAFEARRAYUNION { + ULONG sfType; + union _u { + SAFEARR_BSTR BstrStr; + SAFEARR_UNKNOWN UnknownStr; + SAFEARR_DISPATCH DispatchStr; + SAFEARR_VARIANT VariantStr; + SAFEARR_BRECORD RecordStr; + SAFEARR_HAVEIID HaveIidStr; + BYTE_SIZEDARR ByteStr; + WORD_SIZEDARR WordStr; + DWORD_SIZEDARR LongStr; + HYPER_SIZEDARR HyperStr; + } + _u u; +} + +struct _wireSAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + SAFEARRAYUNION uArrayStructs; + SAFEARRAYBOUND[1] rgsabound; +} +alias _wireSAFEARRAY* wireSAFEARRAY; + +alias wireSAFEARRAY* wirePSAFEARRAY; + +struct SAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + PVOID pvData; + SAFEARRAYBOUND[1] rgsabound; +} +alias SAFEARRAY* LPSAFEARRAY; + +struct VARIANT { + union { + struct { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + union { + int lVal; + LONGLONG llVal; + ubyte bVal; + short iVal; + float fltVal; + double dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + BSTR bstrVal; + IUnknown punkVal; + IDispatch pdispVal; + SAFEARRAY* parray; + ubyte* pbVal; + short* piVal; + int* plVal; + float* pfltVal; + double* pdblVal; + VARIANT_BOOL* pboolVal; + _VARIANT_BOOL* pbool; + SCODE* pscode; + CY* pcyVal; + DATE* pdate; + BSTR* pbstrVal; + IUnknown* ppunkVal; + IDispatch* ppdispVal; + SAFEARRAY** pparray; + VARIANT* pvarVal; + void* byref; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + ULONGLONG ullVal; + INT intVal; + UINT uintVal; + DECIMAL* pdecVal; + CHAR* pcVal; + USHORT* puiVal; + ULONG* pulVal; + INT* pintVal; + UINT* puintVal; + struct { + PVOID pvRecord; + IRecordInfo pRecInfo; + } + } + } + DECIMAL decVal; + } +} +alias VARIANT* LPVARIANT; + +alias VARIANT VARIANTARG; +alias VARIANT* LPVARIANTARG; + +struct _wireVARIANT { + DWORD clSize; + DWORD rpcReserved; + USHORT vt; + USHORT wReserved1; + USHORT wReserved2; + USHORT wReserved3; + union { + LONG lVal; + LONGLONG llVal; + BYTE bVal; + SHORT iVal; + FLOAT fltVal; + DOUBLE dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + wireBSTR bstrVal; + IUnknown punkVal; + LPDISPATCH pdispVal; + wirePSAFEARRAY parray; + wireBRECORD brecVal; + BYTE* pbVal; + SHORT* piVal; + LONG* plVal; + FLOAT* pfltVal; + DOUBLE* pdblVal; + VARIANT_BOOL* pboolVal; + SCODE* pscode; + CY* pcyVal; + DATE* pdate; + wireBSTR* pbstrVal; + IUnknown* ppunkVal; + LPDISPATCH* ppdispVal; + wirePSAFEARRAY* pparray; + wireVARIANT* pvarVal; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + ULONGLONG ullVal; + INT intVal; + UINT uintVal; + DECIMAL decVal; + DECIMAL* pdecVal; + CHAR* pcVal; + USHORT* puiVal; + ULONG* pulVal; + INT* pintVal; + UINT* puintVal; + } +} +alias _wireVARIANT* wireVARIANT; + +alias LONG DISPID; +alias DISPID MEMBERID; +alias DWORD HREFTYPE; + +enum TYPEKIND { + TKIND_ENUM, TKIND_RECORD, TKIND_MODULE, TKIND_INTERFACE, TKIND_DISPATCH, + TKIND_COCLASS, TKIND_ALIAS, TKIND_UNION, TKIND_MAX +} + +struct TYPEDESC { + union { + TYPEDESC* lptdesc; + ARRAYDESC* lpadesc; + HREFTYPE hreftype; + } + VARTYPE vt; +} + +struct ARRAYDESC { + TYPEDESC tdescElem; + USHORT cDims; + SAFEARRAYBOUND[1] rgbounds; +} + +struct PARAMDESCEX { + ULONG cBytes; + VARIANTARG varDefaultValue; +} +alias PARAMDESCEX* LPPARAMDESCEX; + +struct PARAMDESC { + LPPARAMDESCEX pparamdescex; + USHORT wParamFlags; +} +alias PARAMDESC* LPPARAMDESC; + +struct IDLDESC { + ULONG dwReserved; + USHORT wIDLFlags; +} +alias IDLDESC* LPIDLDESC; + +struct ELEMDESC { + TYPEDESC tdesc; + union { + IDLDESC idldesc; + PARAMDESC paramdesc; + } +} +alias ELEMDESC* LPELEMDESC; + +struct TYPEATTR { + GUID guid; + LCID lcid; + DWORD dwReserved; + MEMBERID memidConstructor; + MEMBERID memidDestructor; + LPOLESTR lpstrSchema; + ULONG cbSizeInstance; + TYPEKIND typekind; + WORD cFuncs; + WORD cVars; + WORD cImplTypes; + WORD cbSizeVft; + WORD cbAlignment; + WORD wTypeFlags; + WORD wMajorVerNum; + WORD wMinorVerNum; + TYPEDESC tdescAlias; + IDLDESC idldescType; +} +alias TYPEATTR* LPTYPEATTR; + +struct DISPPARAMS { + VARIANTARG* rgvarg; + DISPID* rgdispidNamedArgs; + UINT cArgs; + UINT cNamedArgs; +} + +struct EXCEPINFO { + WORD wCode; + WORD wReserved; + BSTR bstrSource; + BSTR bstrDescription; + BSTR bstrHelpFile; + DWORD dwHelpContext; + PVOID pvReserved; + extern (Windows) { + HRESULT function (EXCEPINFO* ) pfnDeferredFillIn; + } + SCODE scode; +} +alias EXCEPINFO* LPEXCEPINFO; + +enum CALLCONV { + CC_FASTCALL, + CC_CDECL, + CC_MSCPASCAL, + CC_PASCAL=CC_MSCPASCAL, + CC_MACPASCAL, + CC_STDCALL, + CC_FPFASTCALL, + CC_SYSCALL, + CC_MPWCDECL, + CC_MPWPASCAL, + CC_MAX=CC_MPWPASCAL +} + +enum FUNCKIND { + FUNC_VIRTUAL, + FUNC_PUREVIRTUAL, + FUNC_NONVIRTUAL, + FUNC_STATIC, + FUNC_DISPATCH +} + +enum INVOKEKIND { + INVOKE_FUNC = 1, + INVOKE_PROPERTYGET = 2, + INVOKE_PROPERTYPUT = 4, + INVOKE_PROPERTYPUTREF = 8 +} + +struct FUNCDESC { + MEMBERID memid; + SCODE* lprgscode; + ELEMDESC* lprgelemdescParam; + FUNCKIND funckind; + INVOKEKIND invkind; + CALLCONV callconv; + SHORT cParams; + SHORT cParamsOpt; + SHORT oVft; + SHORT cScodes; + ELEMDESC elemdescFunc; + WORD wFuncFlags; +} +alias FUNCDESC* LPFUNCDESC; + +enum VARKIND { + VAR_PERINSTANCE, VAR_STATIC, VAR_CONST, VAR_DISPATCH +} + +struct VARDESC { + MEMBERID memid; + LPOLESTR lpstrSchema; + union { + ULONG oInst; + VARIANT* lpvarValue; + } + ELEMDESC elemdescVar; + WORD wVarFlags; + VARKIND varkind; +} +alias VARDESC* LPVARDESC; + +enum TYPEFLAGS { + TYPEFLAG_FAPPOBJECT = 1, + TYPEFLAG_FCANCREATE = 2, + TYPEFLAG_FLICENSED = 4, + TYPEFLAG_FPREDECLID = 8, + TYPEFLAG_FHIDDEN = 16, + TYPEFLAG_FCONTROL = 32, + TYPEFLAG_FDUAL = 64, + TYPEFLAG_FNONEXTENSIBLE = 128, + TYPEFLAG_FOLEAUTOMATION = 256, + TYPEFLAG_FRESTRICTED = 512, + TYPEFLAG_FAGGREGATABLE = 1024, + TYPEFLAG_FREPLACEABLE = 2048, + TYPEFLAG_FDISPATCHABLE = 4096, + TYPEFLAG_FREVERSEBIND = 8192 +} + +enum FUNCFLAGS { + FUNCFLAG_FRESTRICTED = 1, + FUNCFLAG_FSOURCE = 2, + FUNCFLAG_FBINDABLE = 4, + FUNCFLAG_FREQUESTEDIT = 8, + FUNCFLAG_FDISPLAYBIND = 16, + FUNCFLAG_FDEFAULTBIND = 32, + FUNCFLAG_FHIDDEN = 64, + FUNCFLAG_FUSESGETLASTERROR = 128, + FUNCFLAG_FDEFAULTCOLLELEM = 256, + FUNCFLAG_FUIDEFAULT = 512, + FUNCFLAG_FNONBROWSABLE = 1024, + FUNCFLAG_FREPLACEABLE = 2048, + FUNCFLAG_FIMMEDIATEBIND = 4096 +} + +enum VARFLAGS { + VARFLAG_FREADONLY = 1, + VARFLAG_FSOURCE = 2, + VARFLAG_FBINDABLE = 4, + VARFLAG_FREQUESTEDIT = 8, + VARFLAG_FDISPLAYBIND = 16, + VARFLAG_FDEFAULTBIND = 32, + VARFLAG_FHIDDEN = 64, + VARFLAG_FRESTRICTED = 128, + VARFLAG_FDEFAULTCOLLELEM = 256, + VARFLAG_FUIDEFAULT = 512, + VARFLAG_FNONBROWSABLE = 1024, + VARFLAG_FREPLACEABLE = 2048, + VARFLAG_FIMMEDIATEBIND = 4096 +} + +struct CLEANLOCALSTORAGE { + IUnknown pInterface; + PVOID pStorage; + DWORD flags; +} + +struct CUSTDATAITEM { + GUID guid; + VARIANTARG varValue; +} +alias CUSTDATAITEM* LPCUSTDATAITEM; + +struct CUSTDATA { + DWORD cCustData; + LPCUSTDATAITEM prgCustData; +} +alias CUSTDATA* LPCUSTDATA; + +enum DESCKIND { + DESCKIND_NONE = 0, + DESCKIND_FUNCDESC = DESCKIND_NONE+1, + DESCKIND_VARDESC = DESCKIND_FUNCDESC+1, + DESCKIND_TYPECOMP = DESCKIND_VARDESC+1, + DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP+1, + DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ+1 +} + +union BINDPTR { + LPFUNCDESC lpfuncdesc; + LPVARDESC lpvardesc; + LPTYPECOMP lptcomp; +} +alias BINDPTR* LPBINDPTR; + +interface IDispatch : IUnknown { + HRESULT GetTypeInfoCount(UINT*); + HRESULT GetTypeInfo(UINT, LCID, LPTYPEINFO*); + HRESULT GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*); + HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); +} +alias IDispatch LPDISPATCH; + +interface IEnumVARIANT : IUnknown { + HRESULT Next(ULONG, VARIANT*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumVARIANT*); +} +alias IEnumVARIANT LPENUMVARIANT; + +interface ITypeComp : IUnknown { + HRESULT Bind(LPOLESTR, ULONG, WORD, LPTYPEINFO*, DESCKIND*, LPBINDPTR); + HRESULT BindType(LPOLESTR, ULONG, LPTYPEINFO*, LPTYPECOMP*); +} +alias ITypeComp LPTYPECOMP; + +interface ITypeInfo : IUnknown { + HRESULT GetTypeAttr(LPTYPEATTR*); + HRESULT GetTypeComp(LPTYPECOMP*); + HRESULT GetFuncDesc(UINT, LPFUNCDESC*); + HRESULT GetVarDesc(UINT, LPVARDESC*); + HRESULT GetNames(MEMBERID, BSTR*, UINT, UINT*); + HRESULT GetRefTypeOfImplType(UINT, HREFTYPE*); + HRESULT GetImplTypeFlags(UINT, INT*); + HRESULT GetIDsOfNames(LPOLESTR*, UINT, MEMBERID*); + HRESULT Invoke(PVOID, MEMBERID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, + UINT*); + HRESULT GetDocumentation(MEMBERID, BSTR*, BSTR*, DWORD*, BSTR*); + HRESULT GetDllEntry(MEMBERID, INVOKEKIND, BSTR*, BSTR*, WORD*); + HRESULT GetRefTypeInfo(HREFTYPE, LPTYPEINFO*); + HRESULT AddressOfMember(MEMBERID, INVOKEKIND, PVOID*); + HRESULT CreateInstance(LPUNKNOWN, REFIID, PVOID*); + HRESULT GetMops(MEMBERID, BSTR*); + HRESULT GetContainingTypeLib(LPTYPELIB*, UINT*); + void ReleaseTypeAttr(LPTYPEATTR); + void ReleaseFuncDesc(LPFUNCDESC); + void ReleaseVarDesc(LPVARDESC); +} +alias ITypeInfo LPTYPEINFO; + +interface ITypeInfo2 : ITypeInfo { + HRESULT GetTypeKind(TYPEKIND*); + HRESULT GetTypeFlags(ULONG*); + HRESULT GetFuncIndexOfMemId(MEMBERID, INVOKEKIND, UINT*); + HRESULT GetVarIndexOfMemId(MEMBERID, UINT*); + HRESULT GetCustData(REFGUID, VARIANT*); + HRESULT GetFuncCustData(UINT, REFGUID, VARIANT*); + HRESULT GetParamCustData(UINT, UINT, REFGUID, VARIANT*); + HRESULT GetVarCustData(UINT, REFGUID, VARIANT*); + HRESULT GetImplTypeCustData(UINT, REFGUID, VARIANT*); + HRESULT GetDocumentation2(MEMBERID, LCID, BSTR*, DWORD*, BSTR*); + HRESULT GetAllCustData(CUSTDATA*); + HRESULT GetAllFuncCustData(UINT, CUSTDATA*); + HRESULT GetAllParamCustData(UINT, UINT, CUSTDATA*); + HRESULT GetAllVarCustData(UINT, CUSTDATA*); + HRESULT GetAllImplTypeCustData(UINT, CUSTDATA*); +} +alias ITypeInfo2 LPTYPEINFO2; + +interface ITypeLib : IUnknown { + UINT GetTypeInfoCount(); + HRESULT GetTypeInfo(UINT, ITypeInfo*); + HRESULT GetTypeInfoType(UINT, TYPEKIND*); + HRESULT GetTypeInfoOfGuid(REFGUID, ITypeInfo*); + HRESULT GetLibAttr(TLIBATTR**); + HRESULT GetTypeComp(ITypeComp); + HRESULT GetDocumentation(INT, BSTR*, BSTR*, DWORD*, BSTR*); + HRESULT IsName(LPOLESTR, ULONG, BOOL*); + HRESULT FindName(LPOLESTR, ULONG, ITypeInfo*, MEMBERID*, USHORT*); + void ReleaseTLibAttr(TLIBATTR*); +} +alias ITypeLib LPTYPELIB; + +interface ITypeLib2 : ITypeLib { + HRESULT GetCustData(REFGUID, VARIANT*); + HRESULT GetLibStatistics(ULONG*, ULONG*); + HRESULT GetDocumentation2(INT, LCID, BSTR*, DWORD*, BSTR*); + HRESULT GetAllCustData(CUSTDATA*); +} +alias ITypeLib2 LPTYPELIB2; + +interface IErrorInfo : IUnknown { + HRESULT GetGUID(GUID*); + HRESULT GetSource(BSTR*); + HRESULT GetDescription(BSTR*); + HRESULT GetHelpFile(BSTR*); + HRESULT GetHelpContext(DWORD*); +} +alias IErrorInfo LPERRORINFO; + +interface ICreateErrorInfo : IUnknown { + HRESULT SetGUID(REFGUID); + HRESULT SetSource(LPOLESTR); + HRESULT SetDescription(LPOLESTR); + HRESULT SetHelpFile(LPOLESTR); + HRESULT SetHelpContext(DWORD); +} +alias ICreateErrorInfo LPCREATEERRORINFO; + +interface ISupportErrorInfo : IUnknown { + HRESULT InterfaceSupportsErrorInfo(REFIID); +} +alias ISupportErrorInfo LPSUPPORTERRORINFO; + +interface IRecordInfo : IUnknown { + HRESULT RecordInit(PVOID); + HRESULT RecordClear(PVOID); + HRESULT RecordCopy(PVOID, PVOID); + HRESULT GetGuid(GUID*); + HRESULT GetName(BSTR*); + HRESULT GetSize(ULONG*); + HRESULT GetTypeInfo(ITypeInfo*); + HRESULT GetField(PVOID, LPCOLESTR, VARIANT*); + HRESULT GetFieldNoCopy(PVOID, LPCOLESTR, VARIANT*, PVOID*); + HRESULT PutField (ULONG, PVOID, LPCOLESTR, VARIANT*); + HRESULT PutFieldNoCopy(ULONG, PVOID, LPCOLESTR, VARIANT*); + HRESULT GetFieldNames(ULONG*, BSTR*); + BOOL IsMatchingType(); + PVOID RecordCreate(); + HRESULT RecordCreateCopy(PVOID, PVOID*); + HRESULT RecordDestroy (PVOID); +} +alias IRecordInfo LPRECORDINFO; + +interface ITypeMarshal : IUnknown { + HRESULT Size(PVOID, DWORD, PVOID, ULONG*); + HRESULT Marshal(PVOID, DWORD, PVOID, ULONG, BYTE*, ULONG*); + HRESULT Unmarshal(PVOID, DWORD, ULONG, BYTE*, ULONG*); + HRESULT Free(PVOID); +} diff --git a/src/core/sys/windows/objbase.d b/src/core/sys/windows/objbase.d index 46c18d0ef5..ef8d71b83d 100644 --- a/src/core/sys/windows/objbase.d +++ b/src/core/sys/windows/objbase.d @@ -1,206 +1,206 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_objbase.d) - */ -module core.sys.windows.objbase; -pragma(lib, "ole32"); - -import core.sys.windows.cguid, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.wtypes; -private import core.sys.windows.basetyps, core.sys.windows.objfwd, core.sys.windows.rpcdce, core.sys.windows.winbase, - core.sys.windows.windef; - -// DAC: Not needed for D? -//MACRO #define LISet32(li, v) ((li).HighPart=(v)<0?-1:0, (li).LowPart=(v)) -//MACRO #define ULISet32(li, v) ((li).HighPart=0, (li).LowPart=(v)) - -const CLSCTX_ALL = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER|CLSCTX.CLSCTX_LOCAL_SERVER; -const CLSCTX_INPROC = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER; -const CLSCTX_SERVER = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_LOCAL_SERVER|CLSCTX.CLSCTX_REMOTE_SERVER; -const MARSHALINTERFACE_MIN=500; -const CWCSTORAGENAME=32; - -const STGM_DIRECT = 0; -const STGM_TRANSACTED = 0x10000L; -const STGM_SIMPLE = 0x8000000L; -const STGM_READ = 0; -const STGM_WRITE = 1; -const STGM_READWRITE = 2; -const STGM_SHARE_DENY_NONE = 0x40; -const STGM_SHARE_DENY_READ = 0x30; -const STGM_SHARE_DENY_WRITE = 0x20; -const STGM_SHARE_EXCLUSIVE = 0x10; -const STGM_PRIORITY = 0x40000L; -const STGM_DELETEONRELEASE = 0x4000000; -const STGM_NOSCRATCH = 0x100000; -const STGM_CREATE = 0x1000; -const STGM_CONVERT = 0x20000; -const STGM_NOSNAPSHOT = 0x200000; -const STGM_FAILIFTHERE = 0; - -const ASYNC_MODE_COMPATIBILITY = 1; -const ASYNC_MODE_DEFAULT = 0; - -const STGTY_REPEAT = 256; -const STG_TOEND = 0xFFFFFFFF; -const STG_LAYOUT_SEQUENTIAL = 0; -const STG_LAYOUT_INTERLEAVED = 1; - -const COM_RIGHTS_EXECUTE = 1; -const COM_RIGHTS_SAFE_FOR_SCRIPTING = 2; - -const STGOPTIONS_VERSION = 2; - -enum STGFMT { - STGFMT_STORAGE = 0, - STGFMT_FILE = 3, - STGFMT_ANY = 4, - STGFMT_DOCFILE = 5 -} - -struct STGOPTIONS { - USHORT usVersion; - USHORT reserved; - ULONG ulSectorSize; - const(WCHAR)* pwcsTemplateFile; -} - -enum REGCLS { - REGCLS_SINGLEUSE = 0, - REGCLS_MULTIPLEUSE = 1, - REGCLS_MULTI_SEPARATE = 2 -} - -/* -BOOL IsEqualGUID(GUID rguid1, GUID rguid2) { - return rguid1 == rguid2; -} -*/ - -extern (Windows) BOOL IsEqualGUID( - REFGUID rguid1, - REFGUID rguid2 -); - -alias IsEqualGUID IsEqualIID; -alias IsEqualGUID IsEqualCLSID; - -enum COINIT { - COINIT_APARTMENTTHREADED = 2, - COINIT_MULTITHREADED = 0, - COINIT_DISABLE_OLE1DDE = 4, - COINIT_SPEED_OVER_MEMORY = 8 -} - -enum STDMSHLFLAGS { - SMEXF_SERVER = 1, - SMEXF_HANDLER -} - -extern(Windows) { - alias HRESULT function(REFCLSID, REFIID, PVOID*) LPFNGETCLASSOBJECT; - alias HRESULT function() LPFNCANUNLOADNOW; - - DWORD CoBuildVersion(); - HRESULT CoInitialize(PVOID); - HRESULT CoInitializeEx(LPVOID, DWORD); - void CoUninitialize(); - HRESULT CoGetMalloc(DWORD, LPMALLOC*); - DWORD CoGetCurrentProcess(); - HRESULT CoRegisterMallocSpy(LPMALLOCSPY); - HRESULT CoRevokeMallocSpy(); - HRESULT CoCreateStandardMalloc(DWORD, IMalloc*); - //#ifdef DBG - ULONG DebugCoGetRpcFault(); - void DebugCoSetRpcFault(ULONG); - //#endif - HRESULT CoGetClassObject(REFCLSID, DWORD, COSERVERINFO*, REFIID, PVOID*); - HRESULT CoRegisterClassObject(REFCLSID, LPUNKNOWN, DWORD, DWORD, PDWORD); - HRESULT CoRevokeClassObject(DWORD); - HRESULT CoGetMarshalSizeMax(ULONG*, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); - HRESULT CoMarshalInterface(LPSTREAM, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); - HRESULT CoUnmarshalInterface(LPSTREAM, REFIID, PVOID*); - HRESULT CoMarshalHresult(LPSTREAM, HRESULT); - HRESULT CoUnmarshalHresult(LPSTREAM, HRESULT*); - HRESULT CoReleaseMarshalData(LPSTREAM); - HRESULT CoDisconnectObject(LPUNKNOWN, DWORD); - HRESULT CoLockObjectExternal(LPUNKNOWN, BOOL, BOOL); - HRESULT CoGetStandardMarshal(REFIID, LPUNKNOWN, DWORD, PVOID, DWORD, LPMARSHAL*); - HRESULT CoGetStdMarshalEx(LPUNKNOWN, DWORD, LPUNKNOWN*); - BOOL CoIsHandlerConnected(LPUNKNOWN); - BOOL CoHasStrongExternalConnections(LPUNKNOWN); - HRESULT CoMarshalInterThreadInterfaceInStream(REFIID, LPUNKNOWN, LPSTREAM*); - HRESULT CoGetInterfaceAndReleaseStream(LPSTREAM, REFIID, PVOID*); - HRESULT CoCreateFreeThreadedMarshaler(LPUNKNOWN, LPUNKNOWN*); - HINSTANCE CoLoadLibrary(LPOLESTR, BOOL); - void CoFreeLibrary(HINSTANCE); - void CoFreeAllLibraries(); - void CoFreeUnusedLibraries(); - HRESULT CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, PVOID*); - HRESULT CoCreateInstanceEx(REFCLSID, IUnknown, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); - HRESULT StringFromCLSID(REFCLSID, LPOLESTR*); - HRESULT CLSIDFromString(LPOLESTR, LPCLSID); - HRESULT StringFromIID(REFIID, LPOLESTR*); - HRESULT IIDFromString(LPOLESTR, LPIID); - BOOL CoIsOle1Class(REFCLSID); - HRESULT ProgIDFromCLSID(REFCLSID, LPOLESTR*); - HRESULT CLSIDFromProgID(LPCOLESTR, LPCLSID); - int StringFromGUID2(REFGUID, LPOLESTR, int); - HRESULT CoCreateGuid(GUID*); - BOOL CoFileTimeToDosDateTime(FILETIME*, LPWORD, LPWORD); - BOOL CoDosDateTimeToFileTime(WORD, WORD, FILETIME*); - HRESULT CoFileTimeNow(FILETIME*); - HRESULT CoRegisterMessageFilter(LPMESSAGEFILTER, LPMESSAGEFILTER*); - HRESULT CoGetTreatAsClass(REFCLSID, LPCLSID); - HRESULT CoTreatAsClass(REFCLSID, REFCLSID); - HRESULT DllGetClassObject(REFCLSID, REFIID, PVOID*); - HRESULT DllCanUnloadNow(); - PVOID CoTaskMemAlloc(ULONG); - PVOID CoTaskMemRealloc(PVOID, ULONG); - void CoTaskMemFree(PVOID); - HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); - HRESULT CreateDataCache(LPUNKNOWN, REFCLSID, REFIID, PVOID*); - HRESULT StgCreateDocfile(const(OLECHAR)*, DWORD, DWORD, IStorage*); - HRESULT StgCreateDocfileOnILockBytes(ILockBytes, DWORD, DWORD, IStorage*); - HRESULT StgOpenStorage(const(OLECHAR)*, IStorage, DWORD, SNB, DWORD, IStorage*); - HRESULT StgOpenStorageOnILockBytes(ILockBytes, IStorage, DWORD, SNB, DWORD, IStorage*); - HRESULT StgIsStorageFile(const(OLECHAR)*); - HRESULT StgIsStorageILockBytes(ILockBytes); - HRESULT StgSetTimes(OLECHAR *, FILETIME *, FILETIME *, FILETIME *); - HRESULT StgCreateStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); - HRESULT StgOpenStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); - HRESULT BindMoniker(LPMONIKER, DWORD, REFIID, PVOID*); - HRESULT CoGetObject(LPCWSTR, BIND_OPTS*, REFIID, void**); - HRESULT MkParseDisplayName(LPBC, LPCOLESTR, ULONG*, LPMONIKER*); - HRESULT MonikerRelativePathTo(LPMONIKER, LPMONIKER, LPMONIKER*, BOOL); - HRESULT MonikerCommonPrefixWith(LPMONIKER, LPMONIKER, LPMONIKER*); - HRESULT CreateBindCtx(DWORD, LPBC*); - HRESULT CreateGenericComposite(LPMONIKER, LPMONIKER, LPMONIKER*); - HRESULT GetClassFile (LPCOLESTR, CLSID*); - HRESULT CreateFileMoniker(LPCOLESTR, LPMONIKER*); - HRESULT CreateItemMoniker(LPCOLESTR, LPCOLESTR, LPMONIKER*); - HRESULT CreateAntiMoniker(LPMONIKER*); - HRESULT CreatePointerMoniker(LPUNKNOWN, LPMONIKER*); - HRESULT GetRunningObjectTable(DWORD, LPRUNNINGOBJECTTABLE*); - HRESULT CoInitializeSecurity(PSECURITY_DESCRIPTOR, LONG, SOLE_AUTHENTICATION_SERVICE*, void*, DWORD, DWORD, void*, DWORD, void*); - HRESULT CoGetCallContext(REFIID, void**); - HRESULT CoQueryProxyBlanket(IUnknown*, DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTH_IDENTITY_HANDLE*, DWORD*); - HRESULT CoSetProxyBlanket(IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE, DWORD); - HRESULT CoCopyProxy(IUnknown*, IUnknown**); - HRESULT CoQueryClientBlanket(DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTHZ_HANDLE*, DWORD*); - HRESULT CoImpersonateClient(); - HRESULT CoRevertToSelf(); - HRESULT CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**); - HRESULT CoSwitchCallContext(IUnknown*, IUnknown**); - HRESULT CoGetInstanceFromFile(COSERVERINFO*, CLSID*, IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, MULTI_QI*); - HRESULT CoGetInstanceFromIStorage(COSERVERINFO*, CLSID*, IUnknown*, DWORD, IStorage*, DWORD, MULTI_QI*); - ULONG CoAddRefServerProcess(); - ULONG CoReleaseServerProcess(); - HRESULT CoResumeClassObjects(); - HRESULT CoSuspendClassObjects(); - HRESULT CoGetPSClsid(REFIID, CLSID*); - HRESULT CoRegisterPSClsid(REFIID, REFCLSID); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_objbase.d) + */ +module core.sys.windows.objbase; +pragma(lib, "ole32"); + +import core.sys.windows.cguid, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.wtypes; +private import core.sys.windows.basetyps, core.sys.windows.objfwd, core.sys.windows.rpcdce, core.sys.windows.winbase, + core.sys.windows.windef; + +// DAC: Not needed for D? +//MACRO #define LISet32(li, v) ((li).HighPart=(v)<0?-1:0, (li).LowPart=(v)) +//MACRO #define ULISet32(li, v) ((li).HighPart=0, (li).LowPart=(v)) + +const CLSCTX_ALL = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER|CLSCTX.CLSCTX_LOCAL_SERVER; +const CLSCTX_INPROC = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER; +const CLSCTX_SERVER = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_LOCAL_SERVER|CLSCTX.CLSCTX_REMOTE_SERVER; +const MARSHALINTERFACE_MIN=500; +const CWCSTORAGENAME=32; + +const STGM_DIRECT = 0; +const STGM_TRANSACTED = 0x10000L; +const STGM_SIMPLE = 0x8000000L; +const STGM_READ = 0; +const STGM_WRITE = 1; +const STGM_READWRITE = 2; +const STGM_SHARE_DENY_NONE = 0x40; +const STGM_SHARE_DENY_READ = 0x30; +const STGM_SHARE_DENY_WRITE = 0x20; +const STGM_SHARE_EXCLUSIVE = 0x10; +const STGM_PRIORITY = 0x40000L; +const STGM_DELETEONRELEASE = 0x4000000; +const STGM_NOSCRATCH = 0x100000; +const STGM_CREATE = 0x1000; +const STGM_CONVERT = 0x20000; +const STGM_NOSNAPSHOT = 0x200000; +const STGM_FAILIFTHERE = 0; + +const ASYNC_MODE_COMPATIBILITY = 1; +const ASYNC_MODE_DEFAULT = 0; + +const STGTY_REPEAT = 256; +const STG_TOEND = 0xFFFFFFFF; +const STG_LAYOUT_SEQUENTIAL = 0; +const STG_LAYOUT_INTERLEAVED = 1; + +const COM_RIGHTS_EXECUTE = 1; +const COM_RIGHTS_SAFE_FOR_SCRIPTING = 2; + +const STGOPTIONS_VERSION = 2; + +enum STGFMT { + STGFMT_STORAGE = 0, + STGFMT_FILE = 3, + STGFMT_ANY = 4, + STGFMT_DOCFILE = 5 +} + +struct STGOPTIONS { + USHORT usVersion; + USHORT reserved; + ULONG ulSectorSize; + const(WCHAR)* pwcsTemplateFile; +} + +enum REGCLS { + REGCLS_SINGLEUSE = 0, + REGCLS_MULTIPLEUSE = 1, + REGCLS_MULTI_SEPARATE = 2 +} + +/* +BOOL IsEqualGUID(GUID rguid1, GUID rguid2) { + return rguid1 == rguid2; +} +*/ + +extern (Windows) BOOL IsEqualGUID( + REFGUID rguid1, + REFGUID rguid2 +); + +alias IsEqualGUID IsEqualIID; +alias IsEqualGUID IsEqualCLSID; + +enum COINIT { + COINIT_APARTMENTTHREADED = 2, + COINIT_MULTITHREADED = 0, + COINIT_DISABLE_OLE1DDE = 4, + COINIT_SPEED_OVER_MEMORY = 8 +} + +enum STDMSHLFLAGS { + SMEXF_SERVER = 1, + SMEXF_HANDLER +} + +extern(Windows) { + alias HRESULT function(REFCLSID, REFIID, PVOID*) LPFNGETCLASSOBJECT; + alias HRESULT function() LPFNCANUNLOADNOW; + + DWORD CoBuildVersion(); + HRESULT CoInitialize(PVOID); + HRESULT CoInitializeEx(LPVOID, DWORD); + void CoUninitialize(); + HRESULT CoGetMalloc(DWORD, LPMALLOC*); + DWORD CoGetCurrentProcess(); + HRESULT CoRegisterMallocSpy(LPMALLOCSPY); + HRESULT CoRevokeMallocSpy(); + HRESULT CoCreateStandardMalloc(DWORD, IMalloc*); + //#ifdef DBG + ULONG DebugCoGetRpcFault(); + void DebugCoSetRpcFault(ULONG); + //#endif + HRESULT CoGetClassObject(REFCLSID, DWORD, COSERVERINFO*, REFIID, PVOID*); + HRESULT CoRegisterClassObject(REFCLSID, LPUNKNOWN, DWORD, DWORD, PDWORD); + HRESULT CoRevokeClassObject(DWORD); + HRESULT CoGetMarshalSizeMax(ULONG*, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); + HRESULT CoMarshalInterface(LPSTREAM, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); + HRESULT CoUnmarshalInterface(LPSTREAM, REFIID, PVOID*); + HRESULT CoMarshalHresult(LPSTREAM, HRESULT); + HRESULT CoUnmarshalHresult(LPSTREAM, HRESULT*); + HRESULT CoReleaseMarshalData(LPSTREAM); + HRESULT CoDisconnectObject(LPUNKNOWN, DWORD); + HRESULT CoLockObjectExternal(LPUNKNOWN, BOOL, BOOL); + HRESULT CoGetStandardMarshal(REFIID, LPUNKNOWN, DWORD, PVOID, DWORD, LPMARSHAL*); + HRESULT CoGetStdMarshalEx(LPUNKNOWN, DWORD, LPUNKNOWN*); + BOOL CoIsHandlerConnected(LPUNKNOWN); + BOOL CoHasStrongExternalConnections(LPUNKNOWN); + HRESULT CoMarshalInterThreadInterfaceInStream(REFIID, LPUNKNOWN, LPSTREAM*); + HRESULT CoGetInterfaceAndReleaseStream(LPSTREAM, REFIID, PVOID*); + HRESULT CoCreateFreeThreadedMarshaler(LPUNKNOWN, LPUNKNOWN*); + HINSTANCE CoLoadLibrary(LPOLESTR, BOOL); + void CoFreeLibrary(HINSTANCE); + void CoFreeAllLibraries(); + void CoFreeUnusedLibraries(); + HRESULT CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, PVOID*); + HRESULT CoCreateInstanceEx(REFCLSID, IUnknown, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); + HRESULT StringFromCLSID(REFCLSID, LPOLESTR*); + HRESULT CLSIDFromString(LPOLESTR, LPCLSID); + HRESULT StringFromIID(REFIID, LPOLESTR*); + HRESULT IIDFromString(LPOLESTR, LPIID); + BOOL CoIsOle1Class(REFCLSID); + HRESULT ProgIDFromCLSID(REFCLSID, LPOLESTR*); + HRESULT CLSIDFromProgID(LPCOLESTR, LPCLSID); + int StringFromGUID2(REFGUID, LPOLESTR, int); + HRESULT CoCreateGuid(GUID*); + BOOL CoFileTimeToDosDateTime(FILETIME*, LPWORD, LPWORD); + BOOL CoDosDateTimeToFileTime(WORD, WORD, FILETIME*); + HRESULT CoFileTimeNow(FILETIME*); + HRESULT CoRegisterMessageFilter(LPMESSAGEFILTER, LPMESSAGEFILTER*); + HRESULT CoGetTreatAsClass(REFCLSID, LPCLSID); + HRESULT CoTreatAsClass(REFCLSID, REFCLSID); + HRESULT DllGetClassObject(REFCLSID, REFIID, PVOID*); + HRESULT DllCanUnloadNow(); + PVOID CoTaskMemAlloc(ULONG); + PVOID CoTaskMemRealloc(PVOID, ULONG); + void CoTaskMemFree(PVOID); + HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); + HRESULT CreateDataCache(LPUNKNOWN, REFCLSID, REFIID, PVOID*); + HRESULT StgCreateDocfile(const(OLECHAR)*, DWORD, DWORD, IStorage*); + HRESULT StgCreateDocfileOnILockBytes(ILockBytes, DWORD, DWORD, IStorage*); + HRESULT StgOpenStorage(const(OLECHAR)*, IStorage, DWORD, SNB, DWORD, IStorage*); + HRESULT StgOpenStorageOnILockBytes(ILockBytes, IStorage, DWORD, SNB, DWORD, IStorage*); + HRESULT StgIsStorageFile(const(OLECHAR)*); + HRESULT StgIsStorageILockBytes(ILockBytes); + HRESULT StgSetTimes(OLECHAR *, FILETIME *, FILETIME *, FILETIME *); + HRESULT StgCreateStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); + HRESULT StgOpenStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); + HRESULT BindMoniker(LPMONIKER, DWORD, REFIID, PVOID*); + HRESULT CoGetObject(LPCWSTR, BIND_OPTS*, REFIID, void**); + HRESULT MkParseDisplayName(LPBC, LPCOLESTR, ULONG*, LPMONIKER*); + HRESULT MonikerRelativePathTo(LPMONIKER, LPMONIKER, LPMONIKER*, BOOL); + HRESULT MonikerCommonPrefixWith(LPMONIKER, LPMONIKER, LPMONIKER*); + HRESULT CreateBindCtx(DWORD, LPBC*); + HRESULT CreateGenericComposite(LPMONIKER, LPMONIKER, LPMONIKER*); + HRESULT GetClassFile (LPCOLESTR, CLSID*); + HRESULT CreateFileMoniker(LPCOLESTR, LPMONIKER*); + HRESULT CreateItemMoniker(LPCOLESTR, LPCOLESTR, LPMONIKER*); + HRESULT CreateAntiMoniker(LPMONIKER*); + HRESULT CreatePointerMoniker(LPUNKNOWN, LPMONIKER*); + HRESULT GetRunningObjectTable(DWORD, LPRUNNINGOBJECTTABLE*); + HRESULT CoInitializeSecurity(PSECURITY_DESCRIPTOR, LONG, SOLE_AUTHENTICATION_SERVICE*, void*, DWORD, DWORD, void*, DWORD, void*); + HRESULT CoGetCallContext(REFIID, void**); + HRESULT CoQueryProxyBlanket(IUnknown*, DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTH_IDENTITY_HANDLE*, DWORD*); + HRESULT CoSetProxyBlanket(IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE, DWORD); + HRESULT CoCopyProxy(IUnknown*, IUnknown**); + HRESULT CoQueryClientBlanket(DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTHZ_HANDLE*, DWORD*); + HRESULT CoImpersonateClient(); + HRESULT CoRevertToSelf(); + HRESULT CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**); + HRESULT CoSwitchCallContext(IUnknown*, IUnknown**); + HRESULT CoGetInstanceFromFile(COSERVERINFO*, CLSID*, IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, MULTI_QI*); + HRESULT CoGetInstanceFromIStorage(COSERVERINFO*, CLSID*, IUnknown*, DWORD, IStorage*, DWORD, MULTI_QI*); + ULONG CoAddRefServerProcess(); + ULONG CoReleaseServerProcess(); + HRESULT CoResumeClassObjects(); + HRESULT CoSuspendClassObjects(); + HRESULT CoGetPSClsid(REFIID, CLSID*); + HRESULT CoRegisterPSClsid(REFIID, REFCLSID); +} diff --git a/src/core/sys/windows/objfwd.d b/src/core/sys/windows/objfwd.d index 11974001b5..fc666275a2 100644 --- a/src/core/sys/windows/objfwd.d +++ b/src/core/sys/windows/objfwd.d @@ -1,102 +1,102 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_objfwd.d) - */ -module core.sys.windows.objfwd; - -private import core.sys.windows.objidl; - -/+ -// Forward declararions are not necessary in D. -extern(Windows) { - interface IMoniker; - interface IStream; - interface IMarshal; - interface IMalloc; - interface IMallocSpy; - interface IMessageFilter; - interface IPersist; - interface IPersistStream; - interface IRunningObjectTable; - interface IBindCtx; - interface IAdviseSink; - interface IAdviseSink2; - interface IDataObject; - interface IDataAdviseHolder; - - interface IEnumMoniker; - interface IEnumFORMATETC; - interface IEnumSTATDATA; - interface IEnumSTATSTG; - interface IEnumSTATPROPSTG; - interface IEnumString; - interface IEnumUnknown; - interface IStorage; - interface IPersistStorage; - interface ILockBytes; - interface IStdMarshalInfo; - interface IExternalConnection; - interface IRunnableObject; - interface IROTData; - interface IPersistFile; - interface IRootStorage; - interface IPropertyStorage; - interface IEnumSTATPROPSETSTG; - interface IPropertySetStorage; - interface IClientSecurity; - interface IServerSecurity; - interface IClassActivator; - interface IFillLockBytes; - interface IProgressNotify; - interface ILayoutStorage; - interface IRpcProxyBuffer; - interface IRpcChannelBuffer; - interface IRpcStubBuffer; -} -+/ -alias IMoniker LPMONIKER; -alias IStream LPSTREAM; -alias IMarshal LPMARSHAL; -alias IMalloc LPMALLOC; -alias IMallocSpy LPMALLOCSPY; -alias IMessageFilter LPMESSAGEFILTER; -alias IPersist LPPERSIST; -alias IPersistStream LPPERSISTSTREAM; -alias IRunningObjectTable LPRUNNINGOBJECTTABLE; -alias IBindCtx LPBINDCTX, LPBC; -alias IAdviseSink LPADVISESINK; -alias IAdviseSink2 LPADVISESINK2; -alias IDataObject LPDATAOBJECT; -alias IDataAdviseHolder LPDATAADVISEHOLDER; -alias IEnumMoniker LPENUMMONIKER; -alias IEnumFORMATETC LPENUMFORMATETC; -alias IEnumSTATDATA LPENUMSTATDATA; -alias IEnumSTATSTG LPENUMSTATSTG; -alias IEnumSTATPROPSTG LPENUMSTATPROPSTG; -alias IEnumString LPENUMSTRING; -alias IEnumUnknown LPENUMUNKNOWN; -alias IStorage LPSTORAGE; -alias IPersistStorage LPPERSISTSTORAGE; -alias ILockBytes LPLOCKBYTES; -alias IStdMarshalInfo LPSTDMARSHALINFO; -alias IExternalConnection LPEXTERNALCONNECTION; -alias IRunnableObject LPRUNNABLEOBJECT; -alias IROTData LPROTDATA; -alias IPersistFile LPPERSISTFILE; -alias IRootStorage LPROOTSTORAGE; -alias IRpcChannelBuffer LPRPCCHANNELBUFFER; -alias IRpcProxyBuffer LPRPCPROXYBUFFER; -alias IRpcStubBuffer LPRPCSTUBBUFFER; -alias IPropertyStorage LPPROPERTYSTORAGE; -alias IEnumSTATPROPSETSTG LPENUMSTATPROPSETSTG; -alias IPropertySetStorage LPPROPERTYSETSTORAGE; -alias IClientSecurity LPCLIENTSECURITY; -alias IServerSecurity LPSERVERSECURITY; -alias IClassActivator LPCLASSACTIVATOR; -alias IFillLockBytes LPFILLLOCKBYTES; -alias IProgressNotify LPPROGRESSNOTIFY; -alias ILayoutStorage LPLAYOUTSTORAGE; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_objfwd.d) + */ +module core.sys.windows.objfwd; + +private import core.sys.windows.objidl; + +/+ +// Forward declararions are not necessary in D. +extern(Windows) { + interface IMoniker; + interface IStream; + interface IMarshal; + interface IMalloc; + interface IMallocSpy; + interface IMessageFilter; + interface IPersist; + interface IPersistStream; + interface IRunningObjectTable; + interface IBindCtx; + interface IAdviseSink; + interface IAdviseSink2; + interface IDataObject; + interface IDataAdviseHolder; + + interface IEnumMoniker; + interface IEnumFORMATETC; + interface IEnumSTATDATA; + interface IEnumSTATSTG; + interface IEnumSTATPROPSTG; + interface IEnumString; + interface IEnumUnknown; + interface IStorage; + interface IPersistStorage; + interface ILockBytes; + interface IStdMarshalInfo; + interface IExternalConnection; + interface IRunnableObject; + interface IROTData; + interface IPersistFile; + interface IRootStorage; + interface IPropertyStorage; + interface IEnumSTATPROPSETSTG; + interface IPropertySetStorage; + interface IClientSecurity; + interface IServerSecurity; + interface IClassActivator; + interface IFillLockBytes; + interface IProgressNotify; + interface ILayoutStorage; + interface IRpcProxyBuffer; + interface IRpcChannelBuffer; + interface IRpcStubBuffer; +} ++/ +alias IMoniker LPMONIKER; +alias IStream LPSTREAM; +alias IMarshal LPMARSHAL; +alias IMalloc LPMALLOC; +alias IMallocSpy LPMALLOCSPY; +alias IMessageFilter LPMESSAGEFILTER; +alias IPersist LPPERSIST; +alias IPersistStream LPPERSISTSTREAM; +alias IRunningObjectTable LPRUNNINGOBJECTTABLE; +alias IBindCtx LPBINDCTX, LPBC; +alias IAdviseSink LPADVISESINK; +alias IAdviseSink2 LPADVISESINK2; +alias IDataObject LPDATAOBJECT; +alias IDataAdviseHolder LPDATAADVISEHOLDER; +alias IEnumMoniker LPENUMMONIKER; +alias IEnumFORMATETC LPENUMFORMATETC; +alias IEnumSTATDATA LPENUMSTATDATA; +alias IEnumSTATSTG LPENUMSTATSTG; +alias IEnumSTATPROPSTG LPENUMSTATPROPSTG; +alias IEnumString LPENUMSTRING; +alias IEnumUnknown LPENUMUNKNOWN; +alias IStorage LPSTORAGE; +alias IPersistStorage LPPERSISTSTORAGE; +alias ILockBytes LPLOCKBYTES; +alias IStdMarshalInfo LPSTDMARSHALINFO; +alias IExternalConnection LPEXTERNALCONNECTION; +alias IRunnableObject LPRUNNABLEOBJECT; +alias IROTData LPROTDATA; +alias IPersistFile LPPERSISTFILE; +alias IRootStorage LPROOTSTORAGE; +alias IRpcChannelBuffer LPRPCCHANNELBUFFER; +alias IRpcProxyBuffer LPRPCPROXYBUFFER; +alias IRpcStubBuffer LPRPCSTUBBUFFER; +alias IPropertyStorage LPPROPERTYSTORAGE; +alias IEnumSTATPROPSETSTG LPENUMSTATPROPSETSTG; +alias IPropertySetStorage LPPROPERTYSETSTORAGE; +alias IClientSecurity LPCLIENTSECURITY; +alias IServerSecurity LPSERVERSECURITY; +alias IClassActivator LPCLASSACTIVATOR; +alias IFillLockBytes LPFILLLOCKBYTES; +alias IProgressNotify LPPROGRESSNOTIFY; +alias ILayoutStorage LPLAYOUTSTORAGE; diff --git a/src/core/sys/windows/objidl.d b/src/core/sys/windows/objidl.d index 96d7986894..8f6336cf06 100644 --- a/src/core/sys/windows/objidl.d +++ b/src/core/sys/windows/objidl.d @@ -1,1306 +1,1306 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_objidl.d) - */ -// TODO (Don): -// # why is "alias IPSFactoryBuffer* LPPSFACTORYBUFFER;" in this file, -// rather than in objfwd ? -// # do we need the proxies that are defined in this file? -module core.sys.windows.objidl; - -import core.sys.windows.unknwn; -import core.sys.windows.objfwd; -private import core.sys.windows.windef; -private import core.sys.windows.basetyps; -private import core.sys.windows.oleidl; -private import core.sys.windows.wtypes; -private import core.sys.windows.winbase; // for FILETIME -private import core.sys.windows.rpcdce; - -struct STATSTG { - LPOLESTR pwcsName; - DWORD type; - ULARGE_INTEGER cbSize; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; - DWORD grfMode; - DWORD grfLocksSupported; - CLSID clsid; - DWORD grfStateBits; - DWORD reserved; -} - -enum STGTY { - STGTY_STORAGE = 1, - STGTY_STREAM, - STGTY_LOCKBYTES, - STGTY_PROPERTY -} - -enum STREAM_SEEK { - STREAM_SEEK_SET, - STREAM_SEEK_CUR, - STREAM_SEEK_END -} - -struct INTERFACEINFO { - LPUNKNOWN pUnk; - IID iid; - WORD wMethod; -} -alias INTERFACEINFO* LPINTERFACEINFO; - -enum CALLTYPE { - CALLTYPE_TOPLEVEL = 1, - CALLTYPE_NESTED, - CALLTYPE_ASYNC, - CALLTYPE_TOPLEVEL_CALLPENDING, - CALLTYPE_ASYNC_CALLPENDING -} - -enum PENDINGTYPE { - PENDINGTYPE_TOPLEVEL = 1, - PENDINGTYPE_NESTED -} - -enum PENDINGMSG { - PENDINGMSG_CANCELCALL = 0, - PENDINGMSG_WAITNOPROCESS, - PENDINGMSG_WAITDEFPROCESS -} - -alias OLECHAR** SNB; - -enum DATADIR { - DATADIR_GET = 1, - DATADIR_SET -} -alias WORD CLIPFORMAT; -alias CLIPFORMAT* LPCLIPFORMAT; - -struct DVTARGETDEVICE { - DWORD tdSize; - WORD tdDriverNameOffset; - WORD tdDeviceNameOffset; - WORD tdPortNameOffset; - WORD tdExtDevmodeOffset; - BYTE[1] tdData; -} - -struct FORMATETC { - CLIPFORMAT cfFormat; - DVTARGETDEVICE* ptd; - DWORD dwAspect; - LONG lindex; - DWORD tymed; -} -alias FORMATETC* LPFORMATETC; - -struct RemSTGMEDIUM { - DWORD tymed; - DWORD dwHandleType; - ULONG pData; - uint pUnkForRelease; - uint cbData; - BYTE[1] data; -} - -struct HLITEM { - ULONG uHLID; - LPWSTR pwzFriendlyName; -} - -struct STATDATA { - FORMATETC formatetc; - DWORD grfAdvf; - IAdviseSink pAdvSink; - DWORD dwConnection; -} - -struct STATPROPSETSTG { - FMTID fmtid; - CLSID clsid; - DWORD grfFlags; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; -} - -enum EXTCONN { - EXTCONN_STRONG = 1, - EXTCONN_WEAK = 2, - EXTCONN_CALLABLE = 4 -} - -struct MULTI_QI { - const(IID)* pIID; - IUnknown pItf; - HRESULT hr; -} - -struct AUTH_IDENTITY { - USHORT* User; - ULONG UserLength; - USHORT* Domain; - ULONG DomainLength; - USHORT* Password; - ULONG PasswordLength; - ULONG Flags; -} - -struct COAUTHINFO { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - LPWSTR pwszServerPrincName; - DWORD dwAuthnLevel; - DWORD dwImpersonationLevel; - AUTH_IDENTITY* pAuthIdentityData; - DWORD dwCapabilities; -} - -struct COSERVERINFO { - DWORD dwReserved1; - LPWSTR pwszName; - COAUTHINFO* pAuthInfo; - DWORD dwReserved2; -} - -struct BIND_OPTS { - DWORD cbStruct; - DWORD grfFlags; - DWORD grfMode; - DWORD dwTickCountDeadline; -} -alias BIND_OPTS* LPBIND_OPTS; - -struct BIND_OPTS2 { - DWORD cbStruct; - DWORD grfFlags; - DWORD grfMode; - DWORD dwTickCountDeadline; - DWORD dwTrackFlags; - DWORD dwClassContext; - LCID locale; - COSERVERINFO* pServerInfo; -} -alias BIND_OPTS2* LPBIND_OPTS2; - -enum BIND_FLAGS { - BIND_MAYBOTHERUSER = 1, - BIND_JUSTTESTEXISTENCE -} - -struct STGMEDIUM { - DWORD tymed; - union { - HBITMAP hBitmap; - PVOID hMetaFilePict; - HENHMETAFILE hEnhMetaFile; - HGLOBAL hGlobal; - LPWSTR lpszFileName; - LPSTREAM pstm; - LPSTORAGE pstg; - } - LPUNKNOWN pUnkForRelease; -} -alias STGMEDIUM* LPSTGMEDIUM; - -enum LOCKTYPE { - LOCK_WRITE = 1, - LOCK_EXCLUSIVE = 2, - LOCK_ONLYONCE = 4 -} - -alias uint RPCOLEDATAREP; - -struct RPCOLEMESSAGE { - PVOID reserved1; - RPCOLEDATAREP dataRepresentation; - PVOID Buffer; - ULONG cbBuffer; - ULONG iMethod; - PVOID[5] reserved2; - ULONG rpcFlags; -} -alias RPCOLEMESSAGE* PRPCOLEMESSAGE; - -enum MKSYS { - MKSYS_NONE, - MKSYS_GENERICCOMPOSITE, - MKSYS_FILEMONIKER, - MKSYS_ANTIMONIKER, - MKSYS_ITEMMONIKER, - MKSYS_POINTERMONIKER -} - -enum MKREDUCE { - MKRREDUCE_ALL, - MKRREDUCE_ONE = 196608, - MKRREDUCE_TOUSER = 131072, - MKRREDUCE_THROUGHUSER = 65536 -} - -struct RemSNB { - uint ulCntStr; - uint ulCntChar; - OLECHAR[1] rgString; -} - -enum ADVF { - ADVF_NODATA = 1, - ADVF_PRIMEFIRST = 2, - ADVF_ONLYONCE = 4, - ADVFCACHE_NOHANDLER = 8, - ADVFCACHE_FORCEBUILTIN = 16, - ADVFCACHE_ONSAVE = 32, - ADVF_DATAONSTOP = 64 -} - -enum TYMED { - TYMED_HGLOBAL = 1, - TYMED_FILE = 2, - TYMED_ISTREAM = 4, - TYMED_ISTORAGE = 8, - TYMED_GDI = 16, - TYMED_MFPICT = 32, - TYMED_ENHMF = 64, - TYMED_NULL = 0 -} - -enum SERVERCALL { - SERVERCALL_ISHANDLED, - SERVERCALL_REJECTED, - SERVERCALL_RETRYLATER -} - -struct CAUB { - ULONG cElems; - ubyte* pElems; -} - -struct CAI { - ULONG cElems; - short* pElems; -} - -struct CAUI { - ULONG cElems; - USHORT* pElems; -} - -struct CAL { - ULONG cElems; - int* pElems; -} - -struct CAUL { - ULONG cElems; - ULONG* pElems; -} - -struct CAFLT { - ULONG cElems; - float* pElems; -} - -struct CADBL { - ULONG cElems; - double* pElems; -} - -struct CACY { - ULONG cElems; - CY* pElems; -} - -struct CADATE { - ULONG cElems; - DATE* pElems; -} - -struct CABSTR { - ULONG cElems; - BSTR* pElems; -} - -struct CABSTRBLOB { - ULONG cElems; - BSTRBLOB* pElems; -} - -struct CABOOL { - ULONG cElems; - VARIANT_BOOL* pElems; -} - -struct CASCODE { - ULONG cElems; - SCODE* pElems; -} - -struct CAH { - ULONG cElems; - LARGE_INTEGER* pElems; -} - -struct CAUH { - ULONG cElems; - ULARGE_INTEGER* pElems; -} - -struct CALPSTR { - ULONG cElems; - LPSTR* pElems; -} - -struct CALPWSTR { - ULONG cElems; - LPWSTR* pElems; -} - -struct CAFILETIME { - ULONG cElems; - FILETIME* pElems; -} - -struct CACLIPDATA { - ULONG cElems; - CLIPDATA* pElems; -} - -struct CACLSID { - ULONG cElems; - CLSID* pElems; -} -alias PROPVARIANT* LPPROPVARIANT; - -struct CAPROPVARIANT { - ULONG cElems; - LPPROPVARIANT pElems; -} - -struct PROPVARIANT { - VARTYPE vt; - WORD wReserved1; - WORD wReserved2; - WORD wReserved3; - union { - CHAR cVal; - UCHAR bVal; - short iVal; - USHORT uiVal; - VARIANT_BOOL boolVal; - int lVal; - ULONG ulVal; - float fltVal; - SCODE scode; - LARGE_INTEGER hVal; - ULARGE_INTEGER uhVal; - double dblVal; - CY cyVal; - DATE date; - FILETIME filetime; - CLSID* puuid; - BLOB blob; - CLIPDATA* pclipdata; - LPSTREAM pStream; - LPSTORAGE pStorage; - BSTR bstrVal; - BSTRBLOB bstrblobVal; - LPSTR pszVal; - LPWSTR pwszVal; - CAUB caub; - CAI cai; - CAUI caui; - CABOOL cabool; - CAL cal; - CAUL caul; - CAFLT caflt; - CASCODE cascode; - CAH cah; - CAUH cauh; - CADBL cadbl; - CACY cacy; - CADATE cadate; - CAFILETIME cafiletime; - CACLSID cauuid; - CACLIPDATA caclipdata; - CABSTR cabstr; - CABSTRBLOB cabstrblob; - CALPSTR calpstr; - CALPWSTR calpwstr; - CAPROPVARIANT capropvar; - } -} - -struct PROPSPEC { - ULONG ulKind; - union { - PROPID propid; - LPOLESTR lpwstr; - } -} - -struct STATPROPSTG { - LPOLESTR lpwstrName; - PROPID propid; - VARTYPE vt; -} - -enum PROPSETFLAG { - PROPSETFLAG_DEFAULT, - PROPSETFLAG_NONSIMPLE, - PROPSETFLAG_ANSI, - PROPSETFLAG_UNBUFFERED = 4 -} - -struct STORAGELAYOUT { - DWORD LayoutType; - OLECHAR* pwcsElementName; - LARGE_INTEGER cOffset; - LARGE_INTEGER cBytes; -} - -struct SOLE_AUTHENTICATION_SERVICE { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - OLECHAR* pPrincipalName; - HRESULT hr; -} - -const OLECHAR* COLE_DEFAULT_PRINCIPAL = cast ( OLECHAR* )(-1); - -enum EOLE_AUTHENTICATION_CAPABILITIES { - EOAC_NONE = 0, - EOAC_MUTUAL_AUTH = 0x1, - EOAC_SECURE_REFS = 0x2, - EOAC_ACCESS_CONTROL = 0x4, - EOAC_APPID = 0x8, - EOAC_DYNAMIC = 0x10, - EOAC_STATIC_CLOAKING = 0x20, - EOAC_DYNAMIC_CLOAKING = 0x40, - EOAC_ANY_AUTHORITY = 0x80, - EOAC_MAKE_FULLSIC = 0x100, - EOAC_REQUIRE_FULLSIC = 0x200, - EOAC_AUTO_IMPERSONATE = 0x400, - EOAC_DEFAULT = 0x800, - EOAC_DISABLE_AAA = 0x1000, - EOAC_NO_CUSTOM_MARSHAL = 0x2000 -} - -struct SOLE_AUTHENTICATION_INFO { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - void* pAuthInfo; -} - -const void* COLE_DEFAULT_AUTHINFO = cast( void* )(-1 ); - -struct SOLE_AUTHENTICATION_LIST { - DWORD cAuthInfo; - SOLE_AUTHENTICATION_INFO* aAuthInfo; -} - -interface IEnumFORMATETC : IUnknown { - HRESULT Next(ULONG, FORMATETC*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumFORMATETC*); -} - -interface IEnumHLITEM : IUnknown { - HRESULT Next(ULONG, HLITEM*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumHLITEM*); -} - -interface IEnumSTATDATA : IUnknown { - HRESULT Next(ULONG, STATDATA*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATDATA*); -} - -interface IEnumSTATPROPSETSTG : IUnknown { - HRESULT Next(ULONG, STATPROPSETSTG*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATPROPSETSTG*); -} - -interface IEnumSTATPROPSTG : IUnknown { - HRESULT Next(ULONG, STATPROPSTG*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATPROPSTG*); -} - -interface IEnumSTATSTG : IUnknown { - HRESULT Next(ULONG, STATSTG*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATSTG*); -} - -interface IEnumString : IUnknown { - HRESULT Next(ULONG, LPOLESTR*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumString*); -} - -interface IEnumMoniker : IUnknown { - HRESULT Next(ULONG, IMoniker*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumMoniker*); -} - - -interface IEnumUnknown : IUnknown { - HRESULT Next(ULONG, IUnknown*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumUnknown*); -} - -interface ISequentialStream : IUnknown { - HRESULT Read(void*, ULONG, ULONG*); - HRESULT Write(void* , ULONG, ULONG*); -} - -interface IStream : ISequentialStream { - HRESULT Seek(LARGE_INTEGER, DWORD, ULARGE_INTEGER*); - HRESULT SetSize(ULARGE_INTEGER); - HRESULT CopyTo(IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); - HRESULT Commit(DWORD); - HRESULT Revert(); - HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT Stat(STATSTG*, DWORD); - HRESULT Clone(LPSTREAM*); -} - -interface IMarshal : IUnknown { - HRESULT GetUnmarshalClass(REFIID, PVOID, DWORD, PVOID, DWORD, CLSID*); - HRESULT GetMarshalSizeMax(REFIID, PVOID, DWORD, PVOID, PDWORD, ULONG*); - HRESULT MarshalInterface(IStream, REFIID, PVOID, DWORD, PVOID, DWORD); - HRESULT UnmarshalInterface(IStream, REFIID, void**); - HRESULT ReleaseMarshalData(IStream); - HRESULT DisconnectObject(DWORD); -} - -interface IStdMarshalInfo : IUnknown { - HRESULT GetClassForHandler(DWORD, PVOID, CLSID*); -} - -interface IMalloc : IUnknown { - void* Alloc(ULONG); - void* Realloc(void*, ULONG); - void Free(void*); - ULONG GetSize(void*); - int DidAlloc(void*); - void HeapMinimize(); -} - -interface IMallocSpy : IUnknown { - ULONG PreAlloc(ULONG); - void* PostAlloc(void*); - void* PreFree(void*, BOOL); - void PostFree(BOOL); - ULONG PreRealloc(void*, ULONG, void**, BOOL); - void* PostRealloc(void*, BOOL); - void* PreGetSize(void*, BOOL); - ULONG PostGetSize(ULONG, BOOL); - void* PreDidAlloc(void*, BOOL); - int PostDidAlloc(void*, BOOL, int); - void PreHeapMinimize(); - void PostHeapMinimize(); -} - -interface IMessageFilter : IUnknown { - DWORD HandleInComingCall(DWORD, HTASK, DWORD, LPINTERFACEINFO); - DWORD RetryRejectedCall(HTASK, DWORD, DWORD); - DWORD MessagePending(HTASK, DWORD, DWORD); -} - - -interface IPersist : IUnknown { - HRESULT GetClassID(CLSID*); -} - -interface IPersistStream : IPersist { - HRESULT IsDirty(); - HRESULT Load(IStream); - HRESULT Save(IStream, BOOL); - HRESULT GetSizeMax(PULARGE_INTEGER); -} - -interface IRunningObjectTable : IUnknown { - HRESULT Register(DWORD, LPUNKNOWN, LPMONIKER, PDWORD); - HRESULT Revoke(DWORD); - HRESULT IsRunning(LPMONIKER); - HRESULT GetObject(LPMONIKER, LPUNKNOWN*); - HRESULT NoteChangeTime(DWORD, LPFILETIME); - HRESULT GetTimeOfLastChange(LPMONIKER, LPFILETIME); - HRESULT EnumRunning(IEnumMoniker*); -} - -interface IBindCtx : IUnknown { - HRESULT RegisterObjectBound(LPUNKNOWN); - HRESULT RevokeObjectBound(LPUNKNOWN); - HRESULT ReleaseBoundObjects(); - HRESULT SetBindOptions(LPBIND_OPTS); - HRESULT GetBindOptions(LPBIND_OPTS); - HRESULT GetRunningObjectTable(IRunningObjectTable*); - HRESULT RegisterObjectParam(LPOLESTR, IUnknown); - HRESULT GetObjectParam(LPOLESTR, IUnknown*); - HRESULT EnumObjectParam(IEnumString*); - HRESULT RevokeObjectParam(LPOLESTR); -} - -interface IMoniker: IPersistStream { - HRESULT BindToObject(IBindCtx, IMoniker, REFIID, PVOID*); - HRESULT BindToStorage(IBindCtx, IMoniker, REFIID, PVOID*); - HRESULT Reduce(IBindCtx, DWORD, IMoniker*, IMoniker*); - HRESULT ComposeWith(IMoniker, BOOL, IMoniker*); - HRESULT Enum(BOOL, IEnumMoniker*); - HRESULT IsEqual(IMoniker); - HRESULT Hash(PDWORD); - HRESULT IsRunning(IBindCtx, IMoniker, IMoniker); - HRESULT GetTimeOfLastChange(IBindCtx, IMoniker, LPFILETIME); - HRESULT Inverse(IMoniker*); - HRESULT CommonPrefixWith(IMoniker, IMoniker*); - HRESULT RelativePathTo(IMoniker, IMoniker*); - HRESULT GetDisplayName(IBindCtx, IMoniker, LPOLESTR*); - HRESULT ParseDisplayName(IBindCtx, IMoniker, LPOLESTR, ULONG*, IMoniker*); - HRESULT IsSystemMoniker(PDWORD); -} - -interface IPersistStorage : IPersist -{ - HRESULT IsDirty(); - HRESULT InitNew(LPSTORAGE); - HRESULT Load(LPSTORAGE); - HRESULT Save(LPSTORAGE, BOOL); - HRESULT SaveCompleted(LPSTORAGE); - HRESULT HandsOffStorage(); -} - -interface IPersistFile : IPersist -{ - HRESULT IsDirty(); - HRESULT Load(LPCOLESTR, DWORD); - HRESULT Save(LPCOLESTR, BOOL); - HRESULT SaveCompleted(LPCOLESTR); - HRESULT GetCurFile(LPOLESTR*); -} - -interface IAdviseSink : IUnknown { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - void OnDataChange(FORMATETC*, STGMEDIUM*); - void OnViewChange(DWORD, LONG); - void OnRename(IMoniker); - void OnSave(); - void OnClose(); -} - -interface IAdviseSink2 : IAdviseSink -{ - void OnLinkSrcChange(IMoniker); -} - -interface IDataObject : IUnknown { - HRESULT GetData(FORMATETC*, STGMEDIUM*); - HRESULT GetDataHere(FORMATETC*, STGMEDIUM*); - HRESULT QueryGetData(FORMATETC*); - HRESULT GetCanonicalFormatEtc(FORMATETC*, FORMATETC*); - HRESULT SetData(FORMATETC*, STGMEDIUM*, BOOL); - HRESULT EnumFormatEtc(DWORD, IEnumFORMATETC*); - HRESULT DAdvise(FORMATETC*, DWORD, IAdviseSink, PDWORD); - HRESULT DUnadvise(DWORD); - HRESULT EnumDAdvise(IEnumSTATDATA*); -} - -interface IDataAdviseHolder : IUnknown { - HRESULT Advise(IDataObject, FORMATETC*, DWORD, IAdviseSink, PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumAdvise(IEnumSTATDATA*); - HRESULT SendOnDataChange(IDataObject, DWORD, DWORD); -} - -interface IStorage : IUnknown { - HRESULT CreateStream(LPCWSTR, DWORD, DWORD, DWORD, IStream); - HRESULT OpenStream(LPCWSTR, PVOID, DWORD, DWORD, IStream); - HRESULT CreateStorage(LPCWSTR, DWORD, DWORD, DWORD, IStorage); - HRESULT OpenStorage(LPCWSTR, IStorage, DWORD, SNB, DWORD, IStorage); - HRESULT CopyTo(DWORD, IID* , SNB, IStorage); - HRESULT MoveElementTo(LPCWSTR, IStorage, LPCWSTR, DWORD); - HRESULT Commit(DWORD); - HRESULT Revert(); - HRESULT EnumElements(DWORD, PVOID, DWORD, IEnumSTATSTG); - HRESULT DestroyElement(LPCWSTR); - HRESULT RenameElement(LPCWSTR, LPCWSTR); - HRESULT SetElementTimes(LPCWSTR, FILETIME* , FILETIME* , FILETIME* ); - HRESULT SetClass(REFCLSID); - HRESULT SetStateBits(DWORD, DWORD); - HRESULT Stat(STATSTG*, DWORD); -} - -// FIXME: GetClassID from IPersist not there - what to do about it? -interface IRootStorage : IPersist { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT SwitchToFile(LPOLESTR); -} - -interface IRpcChannelBuffer : IUnknown { - HRESULT GetBuffer(RPCOLEMESSAGE*, REFIID); - HRESULT SendReceive(RPCOLEMESSAGE*, PULONG); - HRESULT FreeBuffer(RPCOLEMESSAGE*); - HRESULT GetDestCtx(PDWORD, PVOID*); - HRESULT IsConnected(); -} - -interface IRpcProxyBuffer : IUnknown { - HRESULT Connect(IRpcChannelBuffer); - void Disconnect(); -} - -interface IRpcStubBuffer : IUnknown { - HRESULT Connect(LPUNKNOWN); - void Disconnect(); - HRESULT Invoke(RPCOLEMESSAGE*, LPRPCSTUBBUFFER); - LPRPCSTUBBUFFER IsIIDSupported(REFIID); - ULONG CountRefs(); - HRESULT DebugServerQueryInterface(PVOID*); - HRESULT DebugServerRelease(PVOID); -} - -interface IPSFactoryBuffer : IUnknown { - HRESULT CreateProxy(LPUNKNOWN, REFIID, LPRPCPROXYBUFFER*, PVOID*); - HRESULT CreateStub(REFIID, LPUNKNOWN, LPRPCSTUBBUFFER*); -} -alias IPSFactoryBuffer LPPSFACTORYBUFFER; - -interface ILockBytes : IUnknown { - HRESULT ReadAt(ULARGE_INTEGER, PVOID, ULONG, ULONG*); - HRESULT WriteAt(ULARGE_INTEGER, PCVOID, ULONG, ULONG*); - HRESULT Flush(); - HRESULT SetSize(ULARGE_INTEGER); - HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT Stat(STATSTG*, DWORD); -} - -interface IExternalConnection : IUnknown { - HRESULT AddConnection(DWORD, DWORD); - HRESULT ReleaseConnection(DWORD, DWORD, BOOL); -} - -interface IRunnableObject : IUnknown { - HRESULT GetRunningClass(LPCLSID); - HRESULT Run(LPBC); - BOOL IsRunning(); - HRESULT LockRunning(BOOL, BOOL); - HRESULT SetContainedObject(BOOL); -} - -interface IROTData : IUnknown { - HRESULT GetComparisonData(PVOID, ULONG, PULONG); -} - -interface IChannelHook : IUnknown { - void ClientGetSize(REFGUID, REFIID, PULONG); - void ClientFillBuffer(REFGUID, REFIID, PULONG, PVOID); - void ClientNotify(REFGUID, REFIID, ULONG, PVOID, DWORD, HRESULT); - void ServerNotify(REFGUID, REFIID, ULONG, PVOID, DWORD); - void ServerGetSize(REFGUID, REFIID, HRESULT, PULONG); - void ServerFillBuffer(REFGUID, REFIID, PULONG, PVOID, HRESULT); -} - -interface IPropertyStorage : IUnknown { - HRESULT ReadMultiple(ULONG, PROPSPEC* , PROPVARIANT*); - HRESULT WriteMultiple(ULONG, PROPSPEC* , PROPVARIANT*, PROPID); - HRESULT DeleteMultiple(ULONG, PROPSPEC* ); - HRESULT ReadPropertyNames(ULONG, PROPID* , LPWSTR*); - HRESULT WritePropertyNames(ULONG, PROPID* , LPWSTR* ); - HRESULT DeletePropertyNames(ULONG, PROPID* ); - HRESULT SetClass(REFCLSID); - HRESULT Commit(DWORD); - HRESULT Revert(); - HRESULT Enum(IEnumSTATPROPSTG*); - HRESULT Stat(STATPROPSTG*); - HRESULT SetTimes(FILETIME* , FILETIME* , FILETIME* ); -} - -interface IPropertySetStorage : IUnknown { - HRESULT Create(REFFMTID, CLSID*, DWORD, DWORD, LPPROPERTYSTORAGE*); - HRESULT Open(REFFMTID, DWORD, LPPROPERTYSTORAGE*); - HRESULT Delete(REFFMTID); - HRESULT Enum(IEnumSTATPROPSETSTG*); -} - -interface IClientSecurity : IUnknown { - HRESULT QueryBlanket(PVOID, PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTH_IDENTITY_HANDLE**, PDWORD*); - HRESULT SetBlanket(PVOID, DWORD, DWORD, LPWSTR, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE*, DWORD); - HRESULT CopyProxy(LPUNKNOWN, LPUNKNOWN*); -} - -interface IServerSecurity : IUnknown { - HRESULT QueryBlanket(PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTHZ_HANDLE*, PDWORD*); - HRESULT ImpersonateClient(); - HRESULT RevertToSelf(); - HRESULT IsImpersonating(); -} - -interface IClassActivator : IUnknown { - HRESULT GetClassObject(REFCLSID, DWORD, LCID, REFIID, PVOID*); -} - -interface IFillLockBytes : IUnknown { - HRESULT FillAppend(void* , ULONG, PULONG); - HRESULT FillAt(ULARGE_INTEGER, void* , ULONG, PULONG); - HRESULT SetFillSize(ULARGE_INTEGER); - HRESULT Terminate(BOOL); -} - -interface IProgressNotify : IUnknown { - HRESULT OnProgress(DWORD, DWORD, BOOL, BOOL); -} - -interface ILayoutStorage : IUnknown { - HRESULT LayoutScript(STORAGELAYOUT*, DWORD, DWORD); - HRESULT BeginMonitor(); - HRESULT EndMonitor(); - HRESULT ReLayoutDocfile(OLECHAR*); -} - -interface IGlobalInterfaceTable : IUnknown { - HRESULT RegisterInterfaceInGlobal(IUnknown, REFIID, DWORD*); - HRESULT RevokeInterfaceFromGlobal(DWORD); - HRESULT GetInterfaceFromGlobal(DWORD, REFIID, void**); -} - -/+ -// These are probably unnecessary for D. -extern (Windows) { -HRESULT IMarshal_GetUnmarshalClass_Proxy(IMarshal, REFIID, void*, DWORD, void*, DWORD, CLSID*); -void IMarshal_GetUnmarshalClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMarshal_GetMarshalSizeMax_Proxy(IMarshal, REFIID, void*, DWORD, void*, DWORD, DWORD*); -void IMarshal_GetMarshalSizeMax_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMarshal_MarshalInterface_Proxy(IMarshal, IStream, REFIID, void*, DWORD, void*, DWORD); -void IMarshal_MarshalInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMarshal_UnmarshalInterface_Proxy(IMarshal, IStream, REFIID, void**); -void IMarshal_UnmarshalInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMarshal_ReleaseMarshalData_Proxy(IMarshal, IStream); -void IMarshal_ReleaseMarshalData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMarshal_DisconnectObject_Proxy(IMarshal, DWORD); -void IMarshal_DisconnectObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void* IMalloc_Alloc_Proxy(IMalloc, ULONG); -void IMalloc_Alloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void* IMalloc_Realloc_Proxy(IMalloc, void*, ULONG); -void IMalloc_Realloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IMalloc_Free_Proxy(IMalloc, void*); -void IMalloc_Free_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -ULONG IMalloc_GetSize_Proxy(IMalloc, void*); -void IMalloc_GetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -int IMalloc_DidAlloc_Proxy(IMalloc, void*); -void IMalloc_DidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IMalloc_HeapMinimize_Proxy(IMalloc); -void IMalloc_HeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -ULONG IMallocSpy_PreAlloc_Proxy(IMallocSpy, ULONG cbRequest); -void IMallocSpy_PreAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void* IMallocSpy_PostAlloc_Proxy(IMallocSpy, void*); -void IMallocSpy_PostAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void* IMallocSpy_PreFree_Proxy(IMallocSpy, void*, BOOL); -void IMallocSpy_PreFree_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IMallocSpy_PostFree_Proxy(IMallocSpy, BOOL); -void IMallocSpy_PostFree_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -ULONG IMallocSpy_PreRealloc_Proxy(IMallocSpy, void*, ULONG, void**, BOOL); -void IMallocSpy_PreRealloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void* IMallocSpy_PostRealloc_Proxy(IMallocSpy, void*, BOOL); -void IMallocSpy_PostRealloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void* IMallocSpy_PreGetSize_Proxy(IMallocSpy, void*, BOOL); -void IMallocSpy_PreGetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -ULONG IMallocSpy_PostGetSize_Proxy(IMallocSpy, ULONG, BOOL); -void IMallocSpy_PostGetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void* IMallocSpy_PreDidAlloc_Proxy(IMallocSpy, void*, BOOL); -void IMallocSpy_PreDidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -int IMallocSpy_PostDidAlloc_Proxy(IMallocSpy, void*, BOOL, int); -void IMallocSpy_PostDidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IMallocSpy_PreHeapMinimize_Proxy(IMallocSpy ); -void IMallocSpy_PreHeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IMallocSpy_PostHeapMinimize_Proxy(IMallocSpy); -void IMallocSpy_PostHeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStdMarshalInfo_GetClassForHandler_Proxy(IStdMarshalInfo, DWORD, void*, CLSID*); -void IStdMarshalInfo_GetClassForHandler_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -DWORD IExternalConnection_AddConnection_Proxy(IExternalConnection, DWORD, DWORD); -void IExternalConnection_AddConnection_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -DWORD IExternalConnection_ReleaseConnection_Proxy(IExternalConnection, DWORD, DWORD, BOOL); -void IExternalConnection_ReleaseConnection_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumUnknown_RemoteNext_Proxy(IEnumUnknown, ULONG, IUnknown*, ULONG*); -void IEnumUnknown_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumUnknown_Skip_Proxy(IEnumUnknown, ULONG); -void IEnumUnknown_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumUnknown_Reset_Proxy(IEnumUnknown ); -void IEnumUnknown_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumUnknown_Clone_Proxy(IEnumUnknown, IEnumUnknown*); -void IEnumUnknown_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_RegisterObjectBound_Proxy(IBindCtx, IUnknownpunk); -void IBindCtx_RegisterObjectBound_Stub(IRpcStubBuffer, IRpcChannelBuffer_pRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_RevokeObjectBound_Proxy(IBindCtx, IUnknownpunk); -void IBindCtx_RevokeObjectBound_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_ReleaseBoundObjects_Proxy(IBindCtx); -void IBindCtx_ReleaseBoundObjects_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_SetBindOptions_Proxy(IBindCtx, BIND_OPTS*); -void IBindCtx_SetBindOptions_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_GetBindOptions_Proxy(IBindCtx, BIND_OPTS*pbindopts); -void IBindCtx_GetBindOptions_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_GetRunningObjectTable_Proxy(IBindCtx, IRunningObjectTable*); -void IBindCtx_GetRunningObjectTable_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_RegisterObjectParam_Proxy(IBindCtx, LPCSTR, IUnknown); -void IBindCtx_RegisterObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_GetObjectParam_Proxy(IBindCtx, LPCSTR, IUnknown*); -void IBindCtx_GetObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_EnumObjectParam_Proxy(IBindCtx, IEnumString*); -void IBindCtx_EnumObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_RevokeObjectParam_Proxy(IBindCtx, LPCSTR); -void IBindCtx_RevokeObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumMoniker_RemoteNext_Proxy(IEnumMoniker, ULONG, IMoniker*, ULONG*); -void IEnumMoniker_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumMoniker_Skip_Proxy(IEnumMoniker, ULONG); -void IEnumMoniker_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumMoniker_Reset_Proxy(IEnumMoniker); -void IEnumMoniker_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumMoniker_Clone_Proxy(IEnumMoniker, IEnumMoniker*); -void IEnumMoniker_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunnableObject_GetRunningClass_Proxy(IRunnableObject, LPCLSID); -void IRunnableObject_GetRunningClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunnableObject_Run_Proxy(IRunnableObject, LPBINDCTX); -void IRunnableObject_Run_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -BOOL IRunnableObject_IsRunning_Proxy(IRunnableObject); -void IRunnableObject_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunnableObject_LockRunning_Proxy(IRunnableObject, BOOL, BOOL); -void IRunnableObject_LockRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunnableObject_SetContainedObject_Proxy(IRunnableObject, BOOL); -void IRunnableObject_SetContainedObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_Register_Proxy(IRunningObjectTable, DWORD, IUnknown, IMoniker, DWORD*); -void IRunningObjectTable_Register_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_Revoke_Proxy(IRunningObjectTable, DWORD); -void IRunningObjectTable_Revoke_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_IsRunning_Proxy(IRunningObjectTable, IMoniker); -void IRunningObjectTable_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_GetObject_Proxy(IRunningObjectTable, IMoniker, IUnknown*); -void IRunningObjectTable_GetObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_NoteChangeTime_Proxy(IRunningObjectTable, DWORD, FILETIME*); -void IRunningObjectTable_NoteChangeTime_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_GetTimeOfLastChange_Proxy(IRunningObjectTable, IMoniker, FILETIME*); -void IRunningObjectTable_GetTimeOfLastChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_EnumRunning_Proxy(IRunningObjectTable, IEnumMoniker*); -void IRunningObjectTable_EnumRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersist_GetClassID_Proxy(IPersist, CLSID*); -void IPersist_GetClassID_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStream_IsDirty_Proxy(IPersistStream); -void IPersistStream_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStream_Load_Proxy(IPersistStream, IStream); -void IPersistStream_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStream_Save_Proxy(IPersistStream, IStream, BOOL); -void IPersistStream_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStream_GetSizeMax_Proxy(IPersistStream, ULARGE_INTEGER*); -void IPersistStream_GetSizeMax_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_RemoteBindToObject_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); -void IMoniker_RemoteBindToObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_RemoteBindToStorage_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); -void IMoniker_RemoteBindToStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_Reduce_Proxy(IMoniker, IBindCtx, DWORD, IMoniker*, IMoniker*); -void IMoniker_Reduce_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_ComposeWith_Proxy(IMoniker, IMoniker, BOOL, IMoniker*); -void IMoniker_ComposeWith_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_Enum_Proxy(IMoniker, BOOL, IEnumMoniker*); -void IMoniker_Enum_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_IsEqual_Proxy(IMoniker, IMoniker); -void IMoniker_IsEqual_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_Hash_Proxy(IMoniker, DWORD*); -void IMoniker_Hash_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_IsRunning_Proxy(IMoniker, IBindCtx, IMoniker, IMoniker); -void IMoniker_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_GetTimeOfLastChange_Proxy(IMoniker, IBindCtx, IMoniker, FILETIME*); -void IMoniker_GetTimeOfLastChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_Inverse_Proxy(IMoniker, IMoniker*); -void IMoniker_Inverse_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_CommonPrefixWith_Proxy(IMoniker, IMoniker, IMoniker*); -void IMoniker_CommonPrefixWith_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_RelativePathTo_Proxy(IMoniker, IMoniker, IMoniker*); -void IMoniker_RelativePathTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_GetDisplayName_Proxy(IMoniker, IBindCtx, IMoniker, LPCSTR*); -void IMoniker_GetDisplayName_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_ParseDisplayName_Proxy(IMoniker, IBindCtx, IMoniker, LPCSTR, ULONG*, IMoniker*); -void IMoniker_ParseDisplayName_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_IsSystemMoniker_Proxy(IMoniker, DWORD*); -void IMoniker_IsSystemMoniker_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IROTData_GetComparisonData_Proxy(IROTData, BYTE*, ULONG cbMax, ULONG*); -void IROTData_GetComparisonData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumString_RemoteNext_Proxy(IEnumString, ULONG, LPCSTR*rgelt, ULONG*); -void IEnumString_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumString_Skip_Proxy(IEnumString, ULONG); -void IEnumString_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumString_Reset_Proxy(IEnumString); -void IEnumString_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumString_Clone_Proxy(IEnumString, IEnumString*); -void IEnumString_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_RemoteRead_Proxy(IStream, BYTE*, ULONG, ULONG*); -void IStream_RemoteRead_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_RemoteWrite_Proxy(IStream, BYTE*pv, ULONG, ULONG*); -void IStream_RemoteWrite_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_RemoteSeek_Proxy(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); -void IStream_RemoteSeek_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_SetSize_Proxy(IStream, ULARGE_INTEGER); -void IStream_SetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_RemoteCopyTo_Proxy(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); -void IStream_RemoteCopyTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_Commit_Proxy(IStream, DWORD); -void IStream_Commit_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_Revert_Proxy(IStream); -void IStream_Revert_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_LockRegion_Proxy(IStream, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); -void IStream_LockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_UnlockRegion_Proxy(IStream, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); -void IStream_UnlockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_Stat_Proxy(IStream, STATSTG*, DWORD); -void IStream_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStream_Clone_Proxy(IStream, IStream*); -void IStream_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATSTG_RemoteNext_Proxy(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); -void IEnumSTATSTG_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATSTG_Skip_Proxy(IEnumSTATSTG, ULONG celt); -void IEnumSTATSTG_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATSTG_Reset_Proxy(IEnumSTATSTG); -void IEnumSTATSTG_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATSTG_Clone_Proxy(IEnumSTATSTG, IEnumSTATSTG*); -void IEnumSTATSTG_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_CreateStream_Proxy(IStorage, OLECHAR*, DWORD, DWORD, DWORD, IStream*); -void IStorage_CreateStream_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_RemoteOpenStream_Proxy(IStorage, const(OLECHAR)*, uint, BYTE*, DWORD, DWORD, IStream*); -void IStorage_RemoteOpenStream_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_CreateStorage_Proxy(IStorage, OLECHAR*, DWORD, DWORD, DWORD, IStorage*); -void IStorage_CreateStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_OpenStorage_Proxy(IStorage, OLECHAR*, IStorage, DWORD, SNB, DWORD, IStorage*); -void IStorage_OpenStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_CopyTo_Proxy(IStorage, DWORD, const(IID)*, SNB, IStorage); -void IStorage_CopyTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_MoveElementTo_Proxy(IStorage, const(OLECHAR)*, IStorage, const(OLECHAR)*, DWORD); -void IStorage_MoveElementTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_Commit_Proxy(IStorage, DWORD); -void IStorage_Commit_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_Revert_Proxy(IStorage); -void IStorage_Revert_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_RemoteEnumElements_Proxy(IStorage, DWORD, uint, BYTE*, DWORD, IEnumSTATSTG*); -void IStorage_RemoteEnumElements_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_DestroyElement_Proxy(IStorage, OLECHAR*); -void IStorage_DestroyElement_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_RenameElement_Proxy(IStorage, const(OLECHAR)*, const(OLECHAR)*); -void IStorage_RenameElement_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_SetElementTimes_Proxy(IStorage, const(OLECHAR)*, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); -void IStorage_SetElementTimes_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_SetClass_Proxy(IStorage, REFCLSID); -void IStorage_SetClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_SetStateBits_Proxy(IStorage, DWORD, DWORD); -void IStorage_SetStateBits_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_Stat_Proxy(IStorage, STATSTG*, DWORD); -void IStorage_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistFile_IsDirty_Proxy(IPersistFile); -void IPersistFile_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistFile_Load_Proxy(IPersistFile, LPCOLESTR, DWORD); -void IPersistFile_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistFile_Save_Proxy(IPersistFile, LPCOLESTR pszFileName, BOOL); -void IPersistFile_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistFile_SaveCompleted_Proxy(IPersistFile, LPCOLESTR); -void IPersistFile_SaveCompleted_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistFile_GetCurFile_Proxy(IPersistFile, LPCSTR*); -void IPersistFile_GetCurFile_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_IsDirty_Proxy(IPersistStorage); -void IPersistStorage_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_InitNew_Proxy(IPersistStorage, IStorage); -void IPersistStorage_InitNew_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_Load_Proxy(IPersistStorage, IStorage); -void IPersistStorage_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_Save_Proxy(IPersistStorage, IStorage, BOOL); -void IPersistStorage_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_SaveCompleted_Proxy(IPersistStorage, IStorage); -void IPersistStorage_SaveCompleted_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_HandsOffStorage_Proxy(IPersistStorage); -void IPersistStorage_HandsOffStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_RemoteReadAt_Proxy(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); -void ILockBytes_RemoteReadAt_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_RemoteWriteAt_Proxy(ILockBytes, ULARGE_INTEGER, BYTE*pv, ULONG, ULONG*); -void ILockBytes_RemoteWriteAt_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_Flush_Proxy(ILockBytes); -void ILockBytes_Flush_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_SetSize_Proxy(ILockBytes, ULARGE_INTEGER); -void ILockBytes_SetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_LockRegion_Proxy(ILockBytes, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); -void ILockBytes_LockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_UnlockRegion_Proxy(ILockBytes, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); -void ILockBytes_UnlockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_Stat_Proxy(ILockBytes, STATSTG*, DWORD); -void ILockBytes_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); -void IEnumFORMATETC_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumFORMATETC_Skip_Proxy(IEnumFORMATETC, ULONG); -void IEnumFORMATETC_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumFORMATETC_Reset_Proxy(IEnumFORMATETC); -void IEnumFORMATETC_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumFORMATETC_Clone_Proxy(IEnumFORMATETC, IEnumFORMATETC*); -void IEnumFORMATETC_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumFORMATETC_Next_Proxy(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); -HRESULT IEnumFORMATETC_Next_Stub(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); -HRESULT IEnumSTATDATA_RemoteNext_Proxy(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); -void IEnumSTATDATA_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATDATA_Skip_Proxy(IEnumSTATDATA, ULONG); -void IEnumSTATDATA_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATDATA_Reset_Proxy(IEnumSTATDATA); -void IEnumSTATDATA_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATDATA_Clone_Proxy(IEnumSTATDATA, IEnumSTATDATA*); -void IEnumSTATDATA_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATDATA_Next_Proxy(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); -HRESULT IEnumSTATDATA_Next_Stub(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); -HRESULT IRootStorage_SwitchToFile_Proxy(IRootStorage, LPCSTR); -void IRootStorage_SwitchToFile_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IAdviseSink_RemoteOnDataChange_Proxy(IAdviseSink, FORMATETC*, RemSTGMEDIUM*); -void IAdviseSink_RemoteOnDataChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IAdviseSink_RemoteOnViewChange_Proxy(IAdviseSink, DWORD, LONG); -void IAdviseSink_RemoteOnViewChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IAdviseSink_RemoteOnRename_Proxy(IAdviseSink, IMoniker); -void IAdviseSink_RemoteOnRename_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IAdviseSink_RemoteOnSave_Proxy(IAdviseSink); -void IAdviseSink_RemoteOnSave_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IAdviseSink_RemoteOnClose_Proxy(IAdviseSink); -void IAdviseSink_RemoteOnClose_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IAdviseSink_OnDataChange_Proxy(IAdviseSink, FORMATETC*, STGMEDIUM*); -void IAdviseSink_OnDataChange_Stub(IAdviseSink, FORMATETC*, RemSTGMEDIUM*); -void IAdviseSink_OnViewChange_Proxy(IAdviseSink, DWORD, LONG); -void IAdviseSink_OnViewChange_Stub(IAdviseSink, DWORD, LONG); -void IAdviseSink_OnRename_Proxy(IAdviseSink, IMoniker); -void IAdviseSink_OnRename_Stub(IAdviseSink, IMoniker); -void IAdviseSink_OnSave_Proxy(IAdviseSink); -void IAdviseSink_OnSave_Stub(IAdviseSink); -void IAdviseSink_OnClose_Proxy(IAdviseSink); -HRESULT IAdviseSink_OnClose_Stub(IAdviseSink); -void IAdviseSink2_RemoteOnLinkSrcChange_Proxy(IAdviseSink2, IMoniker); -void IAdviseSink2_RemoteOnLinkSrcChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IAdviseSink2_OnLinkSrcChange_Proxy(IAdviseSink2, IMoniker); -void IAdviseSink2_OnLinkSrcChange_Stub(IAdviseSink2, IMoniker); -HRESULT IDataObject_RemoteGetData_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM**); -void IDataObject_RemoteGetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_RemoteGetDataHere_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM**); -void IDataObject_RemoteGetDataHere_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_QueryGetData_Proxy(IDataObject, FORMATETC*); -void IDataObject_QueryGetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_GetCanonicalFormatEtc_Proxy(IDataObject, FORMATETC*, FORMATETC*); -void IDataObject_GetCanonicalFormatEtc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_RemoteSetData_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM*, BOOL); -void IDataObject_RemoteSetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_EnumFormatEtc_Proxy(IDataObject, DWORD, IEnumFORMATETC*); -void IDataObject_EnumFormatEtc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_DAdvise_Proxy(IDataObject, FORMATETC*, DWORD, IAdviseSink, DWORD*); -void IDataObject_DAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_DUnadvise_Proxy(IDataObject, DWORD); -void IDataObject_DUnadvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_EnumDAdvise_Proxy(IDataObject, IEnumSTATDATA*); -void IDataObject_EnumDAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_GetData_Proxy(IDataObject, FORMATETC*, STGMEDIUM*); -HRESULT IDataObject_GetData_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM**); -HRESULT IDataObject_GetDataHere_Proxy(IDataObject, FORMATETC*, STGMEDIUM*); -HRESULT IDataObject_GetDataHere_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM**); -HRESULT IDataObject_SetData_Proxy(IDataObject, FORMATETC*, STGMEDIUM*, BOOL); -HRESULT IDataObject_SetData_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM*, BOOL); -HRESULT IDataAdviseHolder_Advise_Proxy(IDataAdviseHolder, IDataObject, FORMATETC*, DWORD, IAdviseSink, DWORD*); -void IDataAdviseHolder_Advise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataAdviseHolder_Unadvise_Proxy(IDataAdviseHolder, DWORD); -void IDataAdviseHolder_Unadvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataAdviseHolder_EnumAdvise_Proxy(IDataAdviseHolder, IEnumSTATDATA*); -void IDataAdviseHolder_EnumAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IDataAdviseHolder_SendOnDataChange_Proxy(IDataAdviseHolder, IDataObject, DWORD, DWORD); -void IDataAdviseHolder_SendOnDataChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -DWORD IMessageFilter_HandleInComingCall_Proxy(IMessageFilter, DWORD, HTASK, DWORD, LPINTERFACEINFO); -void IMessageFilter_HandleInComingCall_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -DWORD IMessageFilter_RetryRejectedCall_Proxy(IMessageFilter, HTASK, DWORD, DWORD); -void IMessageFilter_RetryRejectedCall_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -DWORD IMessageFilter_MessagePending_Proxy(IMessageFilter, HTASK, DWORD, DWORD); -void IMessageFilter_MessagePending_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRpcChannelBuffer_GetBuffer_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*, REFIID); -void IRpcChannelBuffer_GetBuffer_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRpcChannelBuffer_SendReceive_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*, ULONG*); -void IRpcChannelBuffer_SendReceive_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRpcChannelBuffer_FreeBuffer_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*); -void IRpcChannelBuffer_FreeBuffer_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRpcChannelBuffer_GetDestCtx_Proxy(IRpcChannelBuffer, DWORD*, void**); -void IRpcChannelBuffer_GetDestCtx_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRpcChannelBuffer_IsConnected_Proxy(IRpcChannelBuffer); -void IRpcChannelBuffer_IsConnected_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRpcProxyBuffer_Connect_Proxy(IRpcProxyBuffer, IRpcChannelBufferpRpcChannelBuffer); -void IRpcProxyBuffer_Connect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IRpcProxyBuffer_Disconnect_Proxy(IRpcProxyBuffer); -void IRpcProxyBuffer_Disconnect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRpcStubBuffer_Connect_Proxy(IRpcStubBuffer, IUnknown); -void IRpcStubBuffer_Connect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IRpcStubBuffer_Disconnect_Proxy(IRpcStubBuffer); -void IRpcStubBuffer_Disconnect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRpcStubBuffer_Invoke_Proxy(IRpcStubBuffer, RPCOLEMESSAGE*, IRpcChannelBuffer); -void IRpcStubBuffer_Invoke_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -IRpcStubBufferIRpcStubBuffer_IsIIDSupported_Proxy(IRpcStubBuffer, REFIID); -void IRpcStubBuffer_IsIIDSupported_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -ULONG IRpcStubBuffer_CountRefs_Proxy(IRpcStubBuffer); -void IRpcStubBuffer_CountRefs_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IRpcStubBuffer_DebugServerQueryInterface_Proxy(IRpcStubBuffer, void**); -void IRpcStubBuffer_DebugServerQueryInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void IRpcStubBuffer_DebugServerRelease_Proxy(IRpcStubBuffer, void*); -void IRpcStubBuffer_DebugServerRelease_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPSFactoryBuffer_CreateProxy_Proxy(IPSFactoryBuffer, IUnknown, REFIID, IRpcProxyBuffer*, void**); -void IPSFactoryBuffer_CreateProxy_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IPSFactoryBuffer_CreateStub_Proxy(IPSFactoryBuffer, REFIID, IUnknown, IRpcStubBuffer*); -void IPSFactoryBuffer_CreateStub_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -void SNB_to_xmit(SNB*, RemSNB**); -void SNB_from_xmit(RemSNB*, SNB*); -void SNB_free_inst(SNB*); -void SNB_free_xmit(RemSNB*); -HRESULT IEnumUnknown_Next_Proxy(IEnumUnknown, ULONG, IUnknown*, ULONG*); -HRESULT IEnumUnknown_Next_Stub(IEnumUnknown, ULONG, IUnknown*, ULONG*); -HRESULT IEnumMoniker_Next_Proxy(IEnumMoniker, ULONG, IMoniker*, ULONG*); -HRESULT IEnumMoniker_Next_Stub(IEnumMoniker, ULONG, IMoniker*, ULONG*); -HRESULT IMoniker_BindToObject_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, void**); -HRESULT IMoniker_BindToObject_Stub(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); -HRESULT IMoniker_BindToStorage_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, void**); -HRESULT IMoniker_BindToStorage_Stub(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); -HRESULT IEnumString_Next_Proxy(IEnumString, ULONG, LPCSTR*, ULONG*); -HRESULT IEnumString_Next_Stub(IEnumString, ULONG, LPCSTR*, ULONG*); -HRESULT IStream_Read_Proxy(IStream, void*, ULONG, ULONG*); -HRESULT IStream_Read_Stub(IStream, BYTE*, ULONG, ULONG*); -HRESULT IStream_Write_Proxy(IStream, void*, ULONG, ULONG*); -HRESULT IStream_Write_Stub(IStream, BYTE*, ULONG, ULONG*); -HRESULT IStream_Seek_Proxy(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); -HRESULT IStream_Seek_Stub(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); -HRESULT IStream_CopyTo_Proxy(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); -HRESULT IStream_CopyTo_Stub(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); -HRESULT IEnumSTATSTG_Next_Proxy(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); -HRESULT IEnumSTATSTG_Next_Stub(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); -HRESULT IStorage_OpenStream_Proxy(IStorage, OLECHAR*, void*, DWORD, DWORD, IStream*); -HRESULT IStorage_OpenStream_Stub(IStorage, OLECHAR*, uint, BYTE*, DWORD, DWORD, IStream* ); -HRESULT IStorage_EnumElements_Proxy(IStorage, DWORD, void*, DWORD, IEnumSTATSTG*); -HRESULT IStorage_EnumElements_Stub(IStorage, DWORD, uint, BYTE*, DWORD, IEnumSTATSTG*); -HRESULT ILockBytes_ReadAt_Proxy(ILockBytes, ULARGE_INTEGER, void*, ULONG, ULONG*); -HRESULT ILockBytes_ReadAt_Stub(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); -HRESULT ILockBytes_WriteAt_Proxy(ILockBytes, ULARGE_INTEGER, const(void)*, ULONG, ULONG*); -HRESULT ILockBytes_WriteAt_Stub(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); -} -+/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_objidl.d) + */ +// TODO (Don): +// # why is "alias IPSFactoryBuffer* LPPSFACTORYBUFFER;" in this file, +// rather than in objfwd ? +// # do we need the proxies that are defined in this file? +module core.sys.windows.objidl; + +import core.sys.windows.unknwn; +import core.sys.windows.objfwd; +private import core.sys.windows.windef; +private import core.sys.windows.basetyps; +private import core.sys.windows.oleidl; +private import core.sys.windows.wtypes; +private import core.sys.windows.winbase; // for FILETIME +private import core.sys.windows.rpcdce; + +struct STATSTG { + LPOLESTR pwcsName; + DWORD type; + ULARGE_INTEGER cbSize; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD grfMode; + DWORD grfLocksSupported; + CLSID clsid; + DWORD grfStateBits; + DWORD reserved; +} + +enum STGTY { + STGTY_STORAGE = 1, + STGTY_STREAM, + STGTY_LOCKBYTES, + STGTY_PROPERTY +} + +enum STREAM_SEEK { + STREAM_SEEK_SET, + STREAM_SEEK_CUR, + STREAM_SEEK_END +} + +struct INTERFACEINFO { + LPUNKNOWN pUnk; + IID iid; + WORD wMethod; +} +alias INTERFACEINFO* LPINTERFACEINFO; + +enum CALLTYPE { + CALLTYPE_TOPLEVEL = 1, + CALLTYPE_NESTED, + CALLTYPE_ASYNC, + CALLTYPE_TOPLEVEL_CALLPENDING, + CALLTYPE_ASYNC_CALLPENDING +} + +enum PENDINGTYPE { + PENDINGTYPE_TOPLEVEL = 1, + PENDINGTYPE_NESTED +} + +enum PENDINGMSG { + PENDINGMSG_CANCELCALL = 0, + PENDINGMSG_WAITNOPROCESS, + PENDINGMSG_WAITDEFPROCESS +} + +alias OLECHAR** SNB; + +enum DATADIR { + DATADIR_GET = 1, + DATADIR_SET +} +alias WORD CLIPFORMAT; +alias CLIPFORMAT* LPCLIPFORMAT; + +struct DVTARGETDEVICE { + DWORD tdSize; + WORD tdDriverNameOffset; + WORD tdDeviceNameOffset; + WORD tdPortNameOffset; + WORD tdExtDevmodeOffset; + BYTE[1] tdData; +} + +struct FORMATETC { + CLIPFORMAT cfFormat; + DVTARGETDEVICE* ptd; + DWORD dwAspect; + LONG lindex; + DWORD tymed; +} +alias FORMATETC* LPFORMATETC; + +struct RemSTGMEDIUM { + DWORD tymed; + DWORD dwHandleType; + ULONG pData; + uint pUnkForRelease; + uint cbData; + BYTE[1] data; +} + +struct HLITEM { + ULONG uHLID; + LPWSTR pwzFriendlyName; +} + +struct STATDATA { + FORMATETC formatetc; + DWORD grfAdvf; + IAdviseSink pAdvSink; + DWORD dwConnection; +} + +struct STATPROPSETSTG { + FMTID fmtid; + CLSID clsid; + DWORD grfFlags; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; +} + +enum EXTCONN { + EXTCONN_STRONG = 1, + EXTCONN_WEAK = 2, + EXTCONN_CALLABLE = 4 +} + +struct MULTI_QI { + const(IID)* pIID; + IUnknown pItf; + HRESULT hr; +} + +struct AUTH_IDENTITY { + USHORT* User; + ULONG UserLength; + USHORT* Domain; + ULONG DomainLength; + USHORT* Password; + ULONG PasswordLength; + ULONG Flags; +} + +struct COAUTHINFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + LPWSTR pwszServerPrincName; + DWORD dwAuthnLevel; + DWORD dwImpersonationLevel; + AUTH_IDENTITY* pAuthIdentityData; + DWORD dwCapabilities; +} + +struct COSERVERINFO { + DWORD dwReserved1; + LPWSTR pwszName; + COAUTHINFO* pAuthInfo; + DWORD dwReserved2; +} + +struct BIND_OPTS { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; +} +alias BIND_OPTS* LPBIND_OPTS; + +struct BIND_OPTS2 { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; + DWORD dwTrackFlags; + DWORD dwClassContext; + LCID locale; + COSERVERINFO* pServerInfo; +} +alias BIND_OPTS2* LPBIND_OPTS2; + +enum BIND_FLAGS { + BIND_MAYBOTHERUSER = 1, + BIND_JUSTTESTEXISTENCE +} + +struct STGMEDIUM { + DWORD tymed; + union { + HBITMAP hBitmap; + PVOID hMetaFilePict; + HENHMETAFILE hEnhMetaFile; + HGLOBAL hGlobal; + LPWSTR lpszFileName; + LPSTREAM pstm; + LPSTORAGE pstg; + } + LPUNKNOWN pUnkForRelease; +} +alias STGMEDIUM* LPSTGMEDIUM; + +enum LOCKTYPE { + LOCK_WRITE = 1, + LOCK_EXCLUSIVE = 2, + LOCK_ONLYONCE = 4 +} + +alias uint RPCOLEDATAREP; + +struct RPCOLEMESSAGE { + PVOID reserved1; + RPCOLEDATAREP dataRepresentation; + PVOID Buffer; + ULONG cbBuffer; + ULONG iMethod; + PVOID[5] reserved2; + ULONG rpcFlags; +} +alias RPCOLEMESSAGE* PRPCOLEMESSAGE; + +enum MKSYS { + MKSYS_NONE, + MKSYS_GENERICCOMPOSITE, + MKSYS_FILEMONIKER, + MKSYS_ANTIMONIKER, + MKSYS_ITEMMONIKER, + MKSYS_POINTERMONIKER +} + +enum MKREDUCE { + MKRREDUCE_ALL, + MKRREDUCE_ONE = 196608, + MKRREDUCE_TOUSER = 131072, + MKRREDUCE_THROUGHUSER = 65536 +} + +struct RemSNB { + uint ulCntStr; + uint ulCntChar; + OLECHAR[1] rgString; +} + +enum ADVF { + ADVF_NODATA = 1, + ADVF_PRIMEFIRST = 2, + ADVF_ONLYONCE = 4, + ADVFCACHE_NOHANDLER = 8, + ADVFCACHE_FORCEBUILTIN = 16, + ADVFCACHE_ONSAVE = 32, + ADVF_DATAONSTOP = 64 +} + +enum TYMED { + TYMED_HGLOBAL = 1, + TYMED_FILE = 2, + TYMED_ISTREAM = 4, + TYMED_ISTORAGE = 8, + TYMED_GDI = 16, + TYMED_MFPICT = 32, + TYMED_ENHMF = 64, + TYMED_NULL = 0 +} + +enum SERVERCALL { + SERVERCALL_ISHANDLED, + SERVERCALL_REJECTED, + SERVERCALL_RETRYLATER +} + +struct CAUB { + ULONG cElems; + ubyte* pElems; +} + +struct CAI { + ULONG cElems; + short* pElems; +} + +struct CAUI { + ULONG cElems; + USHORT* pElems; +} + +struct CAL { + ULONG cElems; + int* pElems; +} + +struct CAUL { + ULONG cElems; + ULONG* pElems; +} + +struct CAFLT { + ULONG cElems; + float* pElems; +} + +struct CADBL { + ULONG cElems; + double* pElems; +} + +struct CACY { + ULONG cElems; + CY* pElems; +} + +struct CADATE { + ULONG cElems; + DATE* pElems; +} + +struct CABSTR { + ULONG cElems; + BSTR* pElems; +} + +struct CABSTRBLOB { + ULONG cElems; + BSTRBLOB* pElems; +} + +struct CABOOL { + ULONG cElems; + VARIANT_BOOL* pElems; +} + +struct CASCODE { + ULONG cElems; + SCODE* pElems; +} + +struct CAH { + ULONG cElems; + LARGE_INTEGER* pElems; +} + +struct CAUH { + ULONG cElems; + ULARGE_INTEGER* pElems; +} + +struct CALPSTR { + ULONG cElems; + LPSTR* pElems; +} + +struct CALPWSTR { + ULONG cElems; + LPWSTR* pElems; +} + +struct CAFILETIME { + ULONG cElems; + FILETIME* pElems; +} + +struct CACLIPDATA { + ULONG cElems; + CLIPDATA* pElems; +} + +struct CACLSID { + ULONG cElems; + CLSID* pElems; +} +alias PROPVARIANT* LPPROPVARIANT; + +struct CAPROPVARIANT { + ULONG cElems; + LPPROPVARIANT pElems; +} + +struct PROPVARIANT { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + union { + CHAR cVal; + UCHAR bVal; + short iVal; + USHORT uiVal; + VARIANT_BOOL boolVal; + int lVal; + ULONG ulVal; + float fltVal; + SCODE scode; + LARGE_INTEGER hVal; + ULARGE_INTEGER uhVal; + double dblVal; + CY cyVal; + DATE date; + FILETIME filetime; + CLSID* puuid; + BLOB blob; + CLIPDATA* pclipdata; + LPSTREAM pStream; + LPSTORAGE pStorage; + BSTR bstrVal; + BSTRBLOB bstrblobVal; + LPSTR pszVal; + LPWSTR pwszVal; + CAUB caub; + CAI cai; + CAUI caui; + CABOOL cabool; + CAL cal; + CAUL caul; + CAFLT caflt; + CASCODE cascode; + CAH cah; + CAUH cauh; + CADBL cadbl; + CACY cacy; + CADATE cadate; + CAFILETIME cafiletime; + CACLSID cauuid; + CACLIPDATA caclipdata; + CABSTR cabstr; + CABSTRBLOB cabstrblob; + CALPSTR calpstr; + CALPWSTR calpwstr; + CAPROPVARIANT capropvar; + } +} + +struct PROPSPEC { + ULONG ulKind; + union { + PROPID propid; + LPOLESTR lpwstr; + } +} + +struct STATPROPSTG { + LPOLESTR lpwstrName; + PROPID propid; + VARTYPE vt; +} + +enum PROPSETFLAG { + PROPSETFLAG_DEFAULT, + PROPSETFLAG_NONSIMPLE, + PROPSETFLAG_ANSI, + PROPSETFLAG_UNBUFFERED = 4 +} + +struct STORAGELAYOUT { + DWORD LayoutType; + OLECHAR* pwcsElementName; + LARGE_INTEGER cOffset; + LARGE_INTEGER cBytes; +} + +struct SOLE_AUTHENTICATION_SERVICE { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + OLECHAR* pPrincipalName; + HRESULT hr; +} + +const OLECHAR* COLE_DEFAULT_PRINCIPAL = cast ( OLECHAR* )(-1); + +enum EOLE_AUTHENTICATION_CAPABILITIES { + EOAC_NONE = 0, + EOAC_MUTUAL_AUTH = 0x1, + EOAC_SECURE_REFS = 0x2, + EOAC_ACCESS_CONTROL = 0x4, + EOAC_APPID = 0x8, + EOAC_DYNAMIC = 0x10, + EOAC_STATIC_CLOAKING = 0x20, + EOAC_DYNAMIC_CLOAKING = 0x40, + EOAC_ANY_AUTHORITY = 0x80, + EOAC_MAKE_FULLSIC = 0x100, + EOAC_REQUIRE_FULLSIC = 0x200, + EOAC_AUTO_IMPERSONATE = 0x400, + EOAC_DEFAULT = 0x800, + EOAC_DISABLE_AAA = 0x1000, + EOAC_NO_CUSTOM_MARSHAL = 0x2000 +} + +struct SOLE_AUTHENTICATION_INFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + void* pAuthInfo; +} + +const void* COLE_DEFAULT_AUTHINFO = cast( void* )(-1 ); + +struct SOLE_AUTHENTICATION_LIST { + DWORD cAuthInfo; + SOLE_AUTHENTICATION_INFO* aAuthInfo; +} + +interface IEnumFORMATETC : IUnknown { + HRESULT Next(ULONG, FORMATETC*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumFORMATETC*); +} + +interface IEnumHLITEM : IUnknown { + HRESULT Next(ULONG, HLITEM*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumHLITEM*); +} + +interface IEnumSTATDATA : IUnknown { + HRESULT Next(ULONG, STATDATA*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATDATA*); +} + +interface IEnumSTATPROPSETSTG : IUnknown { + HRESULT Next(ULONG, STATPROPSETSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATPROPSETSTG*); +} + +interface IEnumSTATPROPSTG : IUnknown { + HRESULT Next(ULONG, STATPROPSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATPROPSTG*); +} + +interface IEnumSTATSTG : IUnknown { + HRESULT Next(ULONG, STATSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATSTG*); +} + +interface IEnumString : IUnknown { + HRESULT Next(ULONG, LPOLESTR*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumString*); +} + +interface IEnumMoniker : IUnknown { + HRESULT Next(ULONG, IMoniker*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumMoniker*); +} + + +interface IEnumUnknown : IUnknown { + HRESULT Next(ULONG, IUnknown*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumUnknown*); +} + +interface ISequentialStream : IUnknown { + HRESULT Read(void*, ULONG, ULONG*); + HRESULT Write(void* , ULONG, ULONG*); +} + +interface IStream : ISequentialStream { + HRESULT Seek(LARGE_INTEGER, DWORD, ULARGE_INTEGER*); + HRESULT SetSize(ULARGE_INTEGER); + HRESULT CopyTo(IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT Stat(STATSTG*, DWORD); + HRESULT Clone(LPSTREAM*); +} + +interface IMarshal : IUnknown { + HRESULT GetUnmarshalClass(REFIID, PVOID, DWORD, PVOID, DWORD, CLSID*); + HRESULT GetMarshalSizeMax(REFIID, PVOID, DWORD, PVOID, PDWORD, ULONG*); + HRESULT MarshalInterface(IStream, REFIID, PVOID, DWORD, PVOID, DWORD); + HRESULT UnmarshalInterface(IStream, REFIID, void**); + HRESULT ReleaseMarshalData(IStream); + HRESULT DisconnectObject(DWORD); +} + +interface IStdMarshalInfo : IUnknown { + HRESULT GetClassForHandler(DWORD, PVOID, CLSID*); +} + +interface IMalloc : IUnknown { + void* Alloc(ULONG); + void* Realloc(void*, ULONG); + void Free(void*); + ULONG GetSize(void*); + int DidAlloc(void*); + void HeapMinimize(); +} + +interface IMallocSpy : IUnknown { + ULONG PreAlloc(ULONG); + void* PostAlloc(void*); + void* PreFree(void*, BOOL); + void PostFree(BOOL); + ULONG PreRealloc(void*, ULONG, void**, BOOL); + void* PostRealloc(void*, BOOL); + void* PreGetSize(void*, BOOL); + ULONG PostGetSize(ULONG, BOOL); + void* PreDidAlloc(void*, BOOL); + int PostDidAlloc(void*, BOOL, int); + void PreHeapMinimize(); + void PostHeapMinimize(); +} + +interface IMessageFilter : IUnknown { + DWORD HandleInComingCall(DWORD, HTASK, DWORD, LPINTERFACEINFO); + DWORD RetryRejectedCall(HTASK, DWORD, DWORD); + DWORD MessagePending(HTASK, DWORD, DWORD); +} + + +interface IPersist : IUnknown { + HRESULT GetClassID(CLSID*); +} + +interface IPersistStream : IPersist { + HRESULT IsDirty(); + HRESULT Load(IStream); + HRESULT Save(IStream, BOOL); + HRESULT GetSizeMax(PULARGE_INTEGER); +} + +interface IRunningObjectTable : IUnknown { + HRESULT Register(DWORD, LPUNKNOWN, LPMONIKER, PDWORD); + HRESULT Revoke(DWORD); + HRESULT IsRunning(LPMONIKER); + HRESULT GetObject(LPMONIKER, LPUNKNOWN*); + HRESULT NoteChangeTime(DWORD, LPFILETIME); + HRESULT GetTimeOfLastChange(LPMONIKER, LPFILETIME); + HRESULT EnumRunning(IEnumMoniker*); +} + +interface IBindCtx : IUnknown { + HRESULT RegisterObjectBound(LPUNKNOWN); + HRESULT RevokeObjectBound(LPUNKNOWN); + HRESULT ReleaseBoundObjects(); + HRESULT SetBindOptions(LPBIND_OPTS); + HRESULT GetBindOptions(LPBIND_OPTS); + HRESULT GetRunningObjectTable(IRunningObjectTable*); + HRESULT RegisterObjectParam(LPOLESTR, IUnknown); + HRESULT GetObjectParam(LPOLESTR, IUnknown*); + HRESULT EnumObjectParam(IEnumString*); + HRESULT RevokeObjectParam(LPOLESTR); +} + +interface IMoniker: IPersistStream { + HRESULT BindToObject(IBindCtx, IMoniker, REFIID, PVOID*); + HRESULT BindToStorage(IBindCtx, IMoniker, REFIID, PVOID*); + HRESULT Reduce(IBindCtx, DWORD, IMoniker*, IMoniker*); + HRESULT ComposeWith(IMoniker, BOOL, IMoniker*); + HRESULT Enum(BOOL, IEnumMoniker*); + HRESULT IsEqual(IMoniker); + HRESULT Hash(PDWORD); + HRESULT IsRunning(IBindCtx, IMoniker, IMoniker); + HRESULT GetTimeOfLastChange(IBindCtx, IMoniker, LPFILETIME); + HRESULT Inverse(IMoniker*); + HRESULT CommonPrefixWith(IMoniker, IMoniker*); + HRESULT RelativePathTo(IMoniker, IMoniker*); + HRESULT GetDisplayName(IBindCtx, IMoniker, LPOLESTR*); + HRESULT ParseDisplayName(IBindCtx, IMoniker, LPOLESTR, ULONG*, IMoniker*); + HRESULT IsSystemMoniker(PDWORD); +} + +interface IPersistStorage : IPersist +{ + HRESULT IsDirty(); + HRESULT InitNew(LPSTORAGE); + HRESULT Load(LPSTORAGE); + HRESULT Save(LPSTORAGE, BOOL); + HRESULT SaveCompleted(LPSTORAGE); + HRESULT HandsOffStorage(); +} + +interface IPersistFile : IPersist +{ + HRESULT IsDirty(); + HRESULT Load(LPCOLESTR, DWORD); + HRESULT Save(LPCOLESTR, BOOL); + HRESULT SaveCompleted(LPCOLESTR); + HRESULT GetCurFile(LPOLESTR*); +} + +interface IAdviseSink : IUnknown { + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + void OnDataChange(FORMATETC*, STGMEDIUM*); + void OnViewChange(DWORD, LONG); + void OnRename(IMoniker); + void OnSave(); + void OnClose(); +} + +interface IAdviseSink2 : IAdviseSink +{ + void OnLinkSrcChange(IMoniker); +} + +interface IDataObject : IUnknown { + HRESULT GetData(FORMATETC*, STGMEDIUM*); + HRESULT GetDataHere(FORMATETC*, STGMEDIUM*); + HRESULT QueryGetData(FORMATETC*); + HRESULT GetCanonicalFormatEtc(FORMATETC*, FORMATETC*); + HRESULT SetData(FORMATETC*, STGMEDIUM*, BOOL); + HRESULT EnumFormatEtc(DWORD, IEnumFORMATETC*); + HRESULT DAdvise(FORMATETC*, DWORD, IAdviseSink, PDWORD); + HRESULT DUnadvise(DWORD); + HRESULT EnumDAdvise(IEnumSTATDATA*); +} + +interface IDataAdviseHolder : IUnknown { + HRESULT Advise(IDataObject, FORMATETC*, DWORD, IAdviseSink, PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(IEnumSTATDATA*); + HRESULT SendOnDataChange(IDataObject, DWORD, DWORD); +} + +interface IStorage : IUnknown { + HRESULT CreateStream(LPCWSTR, DWORD, DWORD, DWORD, IStream); + HRESULT OpenStream(LPCWSTR, PVOID, DWORD, DWORD, IStream); + HRESULT CreateStorage(LPCWSTR, DWORD, DWORD, DWORD, IStorage); + HRESULT OpenStorage(LPCWSTR, IStorage, DWORD, SNB, DWORD, IStorage); + HRESULT CopyTo(DWORD, IID* , SNB, IStorage); + HRESULT MoveElementTo(LPCWSTR, IStorage, LPCWSTR, DWORD); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT EnumElements(DWORD, PVOID, DWORD, IEnumSTATSTG); + HRESULT DestroyElement(LPCWSTR); + HRESULT RenameElement(LPCWSTR, LPCWSTR); + HRESULT SetElementTimes(LPCWSTR, FILETIME* , FILETIME* , FILETIME* ); + HRESULT SetClass(REFCLSID); + HRESULT SetStateBits(DWORD, DWORD); + HRESULT Stat(STATSTG*, DWORD); +} + +// FIXME: GetClassID from IPersist not there - what to do about it? +interface IRootStorage : IPersist { + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT SwitchToFile(LPOLESTR); +} + +interface IRpcChannelBuffer : IUnknown { + HRESULT GetBuffer(RPCOLEMESSAGE*, REFIID); + HRESULT SendReceive(RPCOLEMESSAGE*, PULONG); + HRESULT FreeBuffer(RPCOLEMESSAGE*); + HRESULT GetDestCtx(PDWORD, PVOID*); + HRESULT IsConnected(); +} + +interface IRpcProxyBuffer : IUnknown { + HRESULT Connect(IRpcChannelBuffer); + void Disconnect(); +} + +interface IRpcStubBuffer : IUnknown { + HRESULT Connect(LPUNKNOWN); + void Disconnect(); + HRESULT Invoke(RPCOLEMESSAGE*, LPRPCSTUBBUFFER); + LPRPCSTUBBUFFER IsIIDSupported(REFIID); + ULONG CountRefs(); + HRESULT DebugServerQueryInterface(PVOID*); + HRESULT DebugServerRelease(PVOID); +} + +interface IPSFactoryBuffer : IUnknown { + HRESULT CreateProxy(LPUNKNOWN, REFIID, LPRPCPROXYBUFFER*, PVOID*); + HRESULT CreateStub(REFIID, LPUNKNOWN, LPRPCSTUBBUFFER*); +} +alias IPSFactoryBuffer LPPSFACTORYBUFFER; + +interface ILockBytes : IUnknown { + HRESULT ReadAt(ULARGE_INTEGER, PVOID, ULONG, ULONG*); + HRESULT WriteAt(ULARGE_INTEGER, PCVOID, ULONG, ULONG*); + HRESULT Flush(); + HRESULT SetSize(ULARGE_INTEGER); + HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT Stat(STATSTG*, DWORD); +} + +interface IExternalConnection : IUnknown { + HRESULT AddConnection(DWORD, DWORD); + HRESULT ReleaseConnection(DWORD, DWORD, BOOL); +} + +interface IRunnableObject : IUnknown { + HRESULT GetRunningClass(LPCLSID); + HRESULT Run(LPBC); + BOOL IsRunning(); + HRESULT LockRunning(BOOL, BOOL); + HRESULT SetContainedObject(BOOL); +} + +interface IROTData : IUnknown { + HRESULT GetComparisonData(PVOID, ULONG, PULONG); +} + +interface IChannelHook : IUnknown { + void ClientGetSize(REFGUID, REFIID, PULONG); + void ClientFillBuffer(REFGUID, REFIID, PULONG, PVOID); + void ClientNotify(REFGUID, REFIID, ULONG, PVOID, DWORD, HRESULT); + void ServerNotify(REFGUID, REFIID, ULONG, PVOID, DWORD); + void ServerGetSize(REFGUID, REFIID, HRESULT, PULONG); + void ServerFillBuffer(REFGUID, REFIID, PULONG, PVOID, HRESULT); +} + +interface IPropertyStorage : IUnknown { + HRESULT ReadMultiple(ULONG, PROPSPEC* , PROPVARIANT*); + HRESULT WriteMultiple(ULONG, PROPSPEC* , PROPVARIANT*, PROPID); + HRESULT DeleteMultiple(ULONG, PROPSPEC* ); + HRESULT ReadPropertyNames(ULONG, PROPID* , LPWSTR*); + HRESULT WritePropertyNames(ULONG, PROPID* , LPWSTR* ); + HRESULT DeletePropertyNames(ULONG, PROPID* ); + HRESULT SetClass(REFCLSID); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT Enum(IEnumSTATPROPSTG*); + HRESULT Stat(STATPROPSTG*); + HRESULT SetTimes(FILETIME* , FILETIME* , FILETIME* ); +} + +interface IPropertySetStorage : IUnknown { + HRESULT Create(REFFMTID, CLSID*, DWORD, DWORD, LPPROPERTYSTORAGE*); + HRESULT Open(REFFMTID, DWORD, LPPROPERTYSTORAGE*); + HRESULT Delete(REFFMTID); + HRESULT Enum(IEnumSTATPROPSETSTG*); +} + +interface IClientSecurity : IUnknown { + HRESULT QueryBlanket(PVOID, PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTH_IDENTITY_HANDLE**, PDWORD*); + HRESULT SetBlanket(PVOID, DWORD, DWORD, LPWSTR, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE*, DWORD); + HRESULT CopyProxy(LPUNKNOWN, LPUNKNOWN*); +} + +interface IServerSecurity : IUnknown { + HRESULT QueryBlanket(PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTHZ_HANDLE*, PDWORD*); + HRESULT ImpersonateClient(); + HRESULT RevertToSelf(); + HRESULT IsImpersonating(); +} + +interface IClassActivator : IUnknown { + HRESULT GetClassObject(REFCLSID, DWORD, LCID, REFIID, PVOID*); +} + +interface IFillLockBytes : IUnknown { + HRESULT FillAppend(void* , ULONG, PULONG); + HRESULT FillAt(ULARGE_INTEGER, void* , ULONG, PULONG); + HRESULT SetFillSize(ULARGE_INTEGER); + HRESULT Terminate(BOOL); +} + +interface IProgressNotify : IUnknown { + HRESULT OnProgress(DWORD, DWORD, BOOL, BOOL); +} + +interface ILayoutStorage : IUnknown { + HRESULT LayoutScript(STORAGELAYOUT*, DWORD, DWORD); + HRESULT BeginMonitor(); + HRESULT EndMonitor(); + HRESULT ReLayoutDocfile(OLECHAR*); +} + +interface IGlobalInterfaceTable : IUnknown { + HRESULT RegisterInterfaceInGlobal(IUnknown, REFIID, DWORD*); + HRESULT RevokeInterfaceFromGlobal(DWORD); + HRESULT GetInterfaceFromGlobal(DWORD, REFIID, void**); +} + +/+ +// These are probably unnecessary for D. +extern (Windows) { +HRESULT IMarshal_GetUnmarshalClass_Proxy(IMarshal, REFIID, void*, DWORD, void*, DWORD, CLSID*); +void IMarshal_GetUnmarshalClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_GetMarshalSizeMax_Proxy(IMarshal, REFIID, void*, DWORD, void*, DWORD, DWORD*); +void IMarshal_GetMarshalSizeMax_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_MarshalInterface_Proxy(IMarshal, IStream, REFIID, void*, DWORD, void*, DWORD); +void IMarshal_MarshalInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_UnmarshalInterface_Proxy(IMarshal, IStream, REFIID, void**); +void IMarshal_UnmarshalInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_ReleaseMarshalData_Proxy(IMarshal, IStream); +void IMarshal_ReleaseMarshalData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_DisconnectObject_Proxy(IMarshal, DWORD); +void IMarshal_DisconnectObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMalloc_Alloc_Proxy(IMalloc, ULONG); +void IMalloc_Alloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMalloc_Realloc_Proxy(IMalloc, void*, ULONG); +void IMalloc_Realloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMalloc_Free_Proxy(IMalloc, void*); +void IMalloc_Free_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMalloc_GetSize_Proxy(IMalloc, void*); +void IMalloc_GetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +int IMalloc_DidAlloc_Proxy(IMalloc, void*); +void IMalloc_DidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMalloc_HeapMinimize_Proxy(IMalloc); +void IMalloc_HeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMallocSpy_PreAlloc_Proxy(IMallocSpy, ULONG cbRequest); +void IMallocSpy_PreAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PostAlloc_Proxy(IMallocSpy, void*); +void IMallocSpy_PostAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PreFree_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PreFree_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMallocSpy_PostFree_Proxy(IMallocSpy, BOOL); +void IMallocSpy_PostFree_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMallocSpy_PreRealloc_Proxy(IMallocSpy, void*, ULONG, void**, BOOL); +void IMallocSpy_PreRealloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PostRealloc_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PostRealloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PreGetSize_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PreGetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMallocSpy_PostGetSize_Proxy(IMallocSpy, ULONG, BOOL); +void IMallocSpy_PostGetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PreDidAlloc_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PreDidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +int IMallocSpy_PostDidAlloc_Proxy(IMallocSpy, void*, BOOL, int); +void IMallocSpy_PostDidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMallocSpy_PreHeapMinimize_Proxy(IMallocSpy ); +void IMallocSpy_PreHeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMallocSpy_PostHeapMinimize_Proxy(IMallocSpy); +void IMallocSpy_PostHeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStdMarshalInfo_GetClassForHandler_Proxy(IStdMarshalInfo, DWORD, void*, CLSID*); +void IStdMarshalInfo_GetClassForHandler_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IExternalConnection_AddConnection_Proxy(IExternalConnection, DWORD, DWORD); +void IExternalConnection_AddConnection_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IExternalConnection_ReleaseConnection_Proxy(IExternalConnection, DWORD, DWORD, BOOL); +void IExternalConnection_ReleaseConnection_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_RemoteNext_Proxy(IEnumUnknown, ULONG, IUnknown*, ULONG*); +void IEnumUnknown_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_Skip_Proxy(IEnumUnknown, ULONG); +void IEnumUnknown_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_Reset_Proxy(IEnumUnknown ); +void IEnumUnknown_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_Clone_Proxy(IEnumUnknown, IEnumUnknown*); +void IEnumUnknown_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RegisterObjectBound_Proxy(IBindCtx, IUnknownpunk); +void IBindCtx_RegisterObjectBound_Stub(IRpcStubBuffer, IRpcChannelBuffer_pRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RevokeObjectBound_Proxy(IBindCtx, IUnknownpunk); +void IBindCtx_RevokeObjectBound_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_ReleaseBoundObjects_Proxy(IBindCtx); +void IBindCtx_ReleaseBoundObjects_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_SetBindOptions_Proxy(IBindCtx, BIND_OPTS*); +void IBindCtx_SetBindOptions_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_GetBindOptions_Proxy(IBindCtx, BIND_OPTS*pbindopts); +void IBindCtx_GetBindOptions_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_GetRunningObjectTable_Proxy(IBindCtx, IRunningObjectTable*); +void IBindCtx_GetRunningObjectTable_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RegisterObjectParam_Proxy(IBindCtx, LPCSTR, IUnknown); +void IBindCtx_RegisterObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_GetObjectParam_Proxy(IBindCtx, LPCSTR, IUnknown*); +void IBindCtx_GetObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_EnumObjectParam_Proxy(IBindCtx, IEnumString*); +void IBindCtx_EnumObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RevokeObjectParam_Proxy(IBindCtx, LPCSTR); +void IBindCtx_RevokeObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_RemoteNext_Proxy(IEnumMoniker, ULONG, IMoniker*, ULONG*); +void IEnumMoniker_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_Skip_Proxy(IEnumMoniker, ULONG); +void IEnumMoniker_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_Reset_Proxy(IEnumMoniker); +void IEnumMoniker_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_Clone_Proxy(IEnumMoniker, IEnumMoniker*); +void IEnumMoniker_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_GetRunningClass_Proxy(IRunnableObject, LPCLSID); +void IRunnableObject_GetRunningClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_Run_Proxy(IRunnableObject, LPBINDCTX); +void IRunnableObject_Run_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +BOOL IRunnableObject_IsRunning_Proxy(IRunnableObject); +void IRunnableObject_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_LockRunning_Proxy(IRunnableObject, BOOL, BOOL); +void IRunnableObject_LockRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_SetContainedObject_Proxy(IRunnableObject, BOOL); +void IRunnableObject_SetContainedObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_Register_Proxy(IRunningObjectTable, DWORD, IUnknown, IMoniker, DWORD*); +void IRunningObjectTable_Register_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_Revoke_Proxy(IRunningObjectTable, DWORD); +void IRunningObjectTable_Revoke_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_IsRunning_Proxy(IRunningObjectTable, IMoniker); +void IRunningObjectTable_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_GetObject_Proxy(IRunningObjectTable, IMoniker, IUnknown*); +void IRunningObjectTable_GetObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_NoteChangeTime_Proxy(IRunningObjectTable, DWORD, FILETIME*); +void IRunningObjectTable_NoteChangeTime_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_GetTimeOfLastChange_Proxy(IRunningObjectTable, IMoniker, FILETIME*); +void IRunningObjectTable_GetTimeOfLastChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_EnumRunning_Proxy(IRunningObjectTable, IEnumMoniker*); +void IRunningObjectTable_EnumRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersist_GetClassID_Proxy(IPersist, CLSID*); +void IPersist_GetClassID_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_IsDirty_Proxy(IPersistStream); +void IPersistStream_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_Load_Proxy(IPersistStream, IStream); +void IPersistStream_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_Save_Proxy(IPersistStream, IStream, BOOL); +void IPersistStream_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_GetSizeMax_Proxy(IPersistStream, ULARGE_INTEGER*); +void IPersistStream_GetSizeMax_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_RemoteBindToObject_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +void IMoniker_RemoteBindToObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_RemoteBindToStorage_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +void IMoniker_RemoteBindToStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Reduce_Proxy(IMoniker, IBindCtx, DWORD, IMoniker*, IMoniker*); +void IMoniker_Reduce_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_ComposeWith_Proxy(IMoniker, IMoniker, BOOL, IMoniker*); +void IMoniker_ComposeWith_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Enum_Proxy(IMoniker, BOOL, IEnumMoniker*); +void IMoniker_Enum_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_IsEqual_Proxy(IMoniker, IMoniker); +void IMoniker_IsEqual_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Hash_Proxy(IMoniker, DWORD*); +void IMoniker_Hash_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_IsRunning_Proxy(IMoniker, IBindCtx, IMoniker, IMoniker); +void IMoniker_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_GetTimeOfLastChange_Proxy(IMoniker, IBindCtx, IMoniker, FILETIME*); +void IMoniker_GetTimeOfLastChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Inverse_Proxy(IMoniker, IMoniker*); +void IMoniker_Inverse_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_CommonPrefixWith_Proxy(IMoniker, IMoniker, IMoniker*); +void IMoniker_CommonPrefixWith_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_RelativePathTo_Proxy(IMoniker, IMoniker, IMoniker*); +void IMoniker_RelativePathTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_GetDisplayName_Proxy(IMoniker, IBindCtx, IMoniker, LPCSTR*); +void IMoniker_GetDisplayName_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_ParseDisplayName_Proxy(IMoniker, IBindCtx, IMoniker, LPCSTR, ULONG*, IMoniker*); +void IMoniker_ParseDisplayName_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_IsSystemMoniker_Proxy(IMoniker, DWORD*); +void IMoniker_IsSystemMoniker_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IROTData_GetComparisonData_Proxy(IROTData, BYTE*, ULONG cbMax, ULONG*); +void IROTData_GetComparisonData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_RemoteNext_Proxy(IEnumString, ULONG, LPCSTR*rgelt, ULONG*); +void IEnumString_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_Skip_Proxy(IEnumString, ULONG); +void IEnumString_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_Reset_Proxy(IEnumString); +void IEnumString_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_Clone_Proxy(IEnumString, IEnumString*); +void IEnumString_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteRead_Proxy(IStream, BYTE*, ULONG, ULONG*); +void IStream_RemoteRead_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteWrite_Proxy(IStream, BYTE*pv, ULONG, ULONG*); +void IStream_RemoteWrite_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteSeek_Proxy(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); +void IStream_RemoteSeek_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_SetSize_Proxy(IStream, ULARGE_INTEGER); +void IStream_SetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteCopyTo_Proxy(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); +void IStream_RemoteCopyTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Commit_Proxy(IStream, DWORD); +void IStream_Commit_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Revert_Proxy(IStream); +void IStream_Revert_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_LockRegion_Proxy(IStream, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void IStream_LockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_UnlockRegion_Proxy(IStream, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void IStream_UnlockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Stat_Proxy(IStream, STATSTG*, DWORD); +void IStream_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Clone_Proxy(IStream, IStream*); +void IStream_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_RemoteNext_Proxy(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); +void IEnumSTATSTG_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_Skip_Proxy(IEnumSTATSTG, ULONG celt); +void IEnumSTATSTG_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_Reset_Proxy(IEnumSTATSTG); +void IEnumSTATSTG_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_Clone_Proxy(IEnumSTATSTG, IEnumSTATSTG*); +void IEnumSTATSTG_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_CreateStream_Proxy(IStorage, OLECHAR*, DWORD, DWORD, DWORD, IStream*); +void IStorage_CreateStream_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_RemoteOpenStream_Proxy(IStorage, const(OLECHAR)*, uint, BYTE*, DWORD, DWORD, IStream*); +void IStorage_RemoteOpenStream_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_CreateStorage_Proxy(IStorage, OLECHAR*, DWORD, DWORD, DWORD, IStorage*); +void IStorage_CreateStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_OpenStorage_Proxy(IStorage, OLECHAR*, IStorage, DWORD, SNB, DWORD, IStorage*); +void IStorage_OpenStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_CopyTo_Proxy(IStorage, DWORD, const(IID)*, SNB, IStorage); +void IStorage_CopyTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_MoveElementTo_Proxy(IStorage, const(OLECHAR)*, IStorage, const(OLECHAR)*, DWORD); +void IStorage_MoveElementTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_Commit_Proxy(IStorage, DWORD); +void IStorage_Commit_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_Revert_Proxy(IStorage); +void IStorage_Revert_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_RemoteEnumElements_Proxy(IStorage, DWORD, uint, BYTE*, DWORD, IEnumSTATSTG*); +void IStorage_RemoteEnumElements_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_DestroyElement_Proxy(IStorage, OLECHAR*); +void IStorage_DestroyElement_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_RenameElement_Proxy(IStorage, const(OLECHAR)*, const(OLECHAR)*); +void IStorage_RenameElement_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_SetElementTimes_Proxy(IStorage, const(OLECHAR)*, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); +void IStorage_SetElementTimes_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_SetClass_Proxy(IStorage, REFCLSID); +void IStorage_SetClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_SetStateBits_Proxy(IStorage, DWORD, DWORD); +void IStorage_SetStateBits_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_Stat_Proxy(IStorage, STATSTG*, DWORD); +void IStorage_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_IsDirty_Proxy(IPersistFile); +void IPersistFile_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_Load_Proxy(IPersistFile, LPCOLESTR, DWORD); +void IPersistFile_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_Save_Proxy(IPersistFile, LPCOLESTR pszFileName, BOOL); +void IPersistFile_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_SaveCompleted_Proxy(IPersistFile, LPCOLESTR); +void IPersistFile_SaveCompleted_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_GetCurFile_Proxy(IPersistFile, LPCSTR*); +void IPersistFile_GetCurFile_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_IsDirty_Proxy(IPersistStorage); +void IPersistStorage_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_InitNew_Proxy(IPersistStorage, IStorage); +void IPersistStorage_InitNew_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_Load_Proxy(IPersistStorage, IStorage); +void IPersistStorage_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_Save_Proxy(IPersistStorage, IStorage, BOOL); +void IPersistStorage_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_SaveCompleted_Proxy(IPersistStorage, IStorage); +void IPersistStorage_SaveCompleted_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_HandsOffStorage_Proxy(IPersistStorage); +void IPersistStorage_HandsOffStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_RemoteReadAt_Proxy(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); +void ILockBytes_RemoteReadAt_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_RemoteWriteAt_Proxy(ILockBytes, ULARGE_INTEGER, BYTE*pv, ULONG, ULONG*); +void ILockBytes_RemoteWriteAt_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_Flush_Proxy(ILockBytes); +void ILockBytes_Flush_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_SetSize_Proxy(ILockBytes, ULARGE_INTEGER); +void ILockBytes_SetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_LockRegion_Proxy(ILockBytes, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void ILockBytes_LockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_UnlockRegion_Proxy(ILockBytes, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void ILockBytes_UnlockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_Stat_Proxy(ILockBytes, STATSTG*, DWORD); +void ILockBytes_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); +void IEnumFORMATETC_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Skip_Proxy(IEnumFORMATETC, ULONG); +void IEnumFORMATETC_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Reset_Proxy(IEnumFORMATETC); +void IEnumFORMATETC_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Clone_Proxy(IEnumFORMATETC, IEnumFORMATETC*); +void IEnumFORMATETC_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Next_Proxy(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); +HRESULT IEnumFORMATETC_Next_Stub(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); +HRESULT IEnumSTATDATA_RemoteNext_Proxy(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); +void IEnumSTATDATA_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Skip_Proxy(IEnumSTATDATA, ULONG); +void IEnumSTATDATA_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Reset_Proxy(IEnumSTATDATA); +void IEnumSTATDATA_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Clone_Proxy(IEnumSTATDATA, IEnumSTATDATA*); +void IEnumSTATDATA_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Next_Proxy(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); +HRESULT IEnumSTATDATA_Next_Stub(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); +HRESULT IRootStorage_SwitchToFile_Proxy(IRootStorage, LPCSTR); +void IRootStorage_SwitchToFile_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnDataChange_Proxy(IAdviseSink, FORMATETC*, RemSTGMEDIUM*); +void IAdviseSink_RemoteOnDataChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnViewChange_Proxy(IAdviseSink, DWORD, LONG); +void IAdviseSink_RemoteOnViewChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnRename_Proxy(IAdviseSink, IMoniker); +void IAdviseSink_RemoteOnRename_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnSave_Proxy(IAdviseSink); +void IAdviseSink_RemoteOnSave_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IAdviseSink_RemoteOnClose_Proxy(IAdviseSink); +void IAdviseSink_RemoteOnClose_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_OnDataChange_Proxy(IAdviseSink, FORMATETC*, STGMEDIUM*); +void IAdviseSink_OnDataChange_Stub(IAdviseSink, FORMATETC*, RemSTGMEDIUM*); +void IAdviseSink_OnViewChange_Proxy(IAdviseSink, DWORD, LONG); +void IAdviseSink_OnViewChange_Stub(IAdviseSink, DWORD, LONG); +void IAdviseSink_OnRename_Proxy(IAdviseSink, IMoniker); +void IAdviseSink_OnRename_Stub(IAdviseSink, IMoniker); +void IAdviseSink_OnSave_Proxy(IAdviseSink); +void IAdviseSink_OnSave_Stub(IAdviseSink); +void IAdviseSink_OnClose_Proxy(IAdviseSink); +HRESULT IAdviseSink_OnClose_Stub(IAdviseSink); +void IAdviseSink2_RemoteOnLinkSrcChange_Proxy(IAdviseSink2, IMoniker); +void IAdviseSink2_RemoteOnLinkSrcChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink2_OnLinkSrcChange_Proxy(IAdviseSink2, IMoniker); +void IAdviseSink2_OnLinkSrcChange_Stub(IAdviseSink2, IMoniker); +HRESULT IDataObject_RemoteGetData_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM**); +void IDataObject_RemoteGetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_RemoteGetDataHere_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM**); +void IDataObject_RemoteGetDataHere_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_QueryGetData_Proxy(IDataObject, FORMATETC*); +void IDataObject_QueryGetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_GetCanonicalFormatEtc_Proxy(IDataObject, FORMATETC*, FORMATETC*); +void IDataObject_GetCanonicalFormatEtc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_RemoteSetData_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM*, BOOL); +void IDataObject_RemoteSetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_EnumFormatEtc_Proxy(IDataObject, DWORD, IEnumFORMATETC*); +void IDataObject_EnumFormatEtc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_DAdvise_Proxy(IDataObject, FORMATETC*, DWORD, IAdviseSink, DWORD*); +void IDataObject_DAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_DUnadvise_Proxy(IDataObject, DWORD); +void IDataObject_DUnadvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_EnumDAdvise_Proxy(IDataObject, IEnumSTATDATA*); +void IDataObject_EnumDAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_GetData_Proxy(IDataObject, FORMATETC*, STGMEDIUM*); +HRESULT IDataObject_GetData_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM**); +HRESULT IDataObject_GetDataHere_Proxy(IDataObject, FORMATETC*, STGMEDIUM*); +HRESULT IDataObject_GetDataHere_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM**); +HRESULT IDataObject_SetData_Proxy(IDataObject, FORMATETC*, STGMEDIUM*, BOOL); +HRESULT IDataObject_SetData_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM*, BOOL); +HRESULT IDataAdviseHolder_Advise_Proxy(IDataAdviseHolder, IDataObject, FORMATETC*, DWORD, IAdviseSink, DWORD*); +void IDataAdviseHolder_Advise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataAdviseHolder_Unadvise_Proxy(IDataAdviseHolder, DWORD); +void IDataAdviseHolder_Unadvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataAdviseHolder_EnumAdvise_Proxy(IDataAdviseHolder, IEnumSTATDATA*); +void IDataAdviseHolder_EnumAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataAdviseHolder_SendOnDataChange_Proxy(IDataAdviseHolder, IDataObject, DWORD, DWORD); +void IDataAdviseHolder_SendOnDataChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IMessageFilter_HandleInComingCall_Proxy(IMessageFilter, DWORD, HTASK, DWORD, LPINTERFACEINFO); +void IMessageFilter_HandleInComingCall_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IMessageFilter_RetryRejectedCall_Proxy(IMessageFilter, HTASK, DWORD, DWORD); +void IMessageFilter_RetryRejectedCall_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IMessageFilter_MessagePending_Proxy(IMessageFilter, HTASK, DWORD, DWORD); +void IMessageFilter_MessagePending_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_GetBuffer_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*, REFIID); +void IRpcChannelBuffer_GetBuffer_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_SendReceive_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*, ULONG*); +void IRpcChannelBuffer_SendReceive_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_FreeBuffer_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*); +void IRpcChannelBuffer_FreeBuffer_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_GetDestCtx_Proxy(IRpcChannelBuffer, DWORD*, void**); +void IRpcChannelBuffer_GetDestCtx_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_IsConnected_Proxy(IRpcChannelBuffer); +void IRpcChannelBuffer_IsConnected_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcProxyBuffer_Connect_Proxy(IRpcProxyBuffer, IRpcChannelBufferpRpcChannelBuffer); +void IRpcProxyBuffer_Connect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IRpcProxyBuffer_Disconnect_Proxy(IRpcProxyBuffer); +void IRpcProxyBuffer_Disconnect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcStubBuffer_Connect_Proxy(IRpcStubBuffer, IUnknown); +void IRpcStubBuffer_Connect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IRpcStubBuffer_Disconnect_Proxy(IRpcStubBuffer); +void IRpcStubBuffer_Disconnect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcStubBuffer_Invoke_Proxy(IRpcStubBuffer, RPCOLEMESSAGE*, IRpcChannelBuffer); +void IRpcStubBuffer_Invoke_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +IRpcStubBufferIRpcStubBuffer_IsIIDSupported_Proxy(IRpcStubBuffer, REFIID); +void IRpcStubBuffer_IsIIDSupported_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IRpcStubBuffer_CountRefs_Proxy(IRpcStubBuffer); +void IRpcStubBuffer_CountRefs_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcStubBuffer_DebugServerQueryInterface_Proxy(IRpcStubBuffer, void**); +void IRpcStubBuffer_DebugServerQueryInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IRpcStubBuffer_DebugServerRelease_Proxy(IRpcStubBuffer, void*); +void IRpcStubBuffer_DebugServerRelease_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPSFactoryBuffer_CreateProxy_Proxy(IPSFactoryBuffer, IUnknown, REFIID, IRpcProxyBuffer*, void**); +void IPSFactoryBuffer_CreateProxy_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPSFactoryBuffer_CreateStub_Proxy(IPSFactoryBuffer, REFIID, IUnknown, IRpcStubBuffer*); +void IPSFactoryBuffer_CreateStub_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void SNB_to_xmit(SNB*, RemSNB**); +void SNB_from_xmit(RemSNB*, SNB*); +void SNB_free_inst(SNB*); +void SNB_free_xmit(RemSNB*); +HRESULT IEnumUnknown_Next_Proxy(IEnumUnknown, ULONG, IUnknown*, ULONG*); +HRESULT IEnumUnknown_Next_Stub(IEnumUnknown, ULONG, IUnknown*, ULONG*); +HRESULT IEnumMoniker_Next_Proxy(IEnumMoniker, ULONG, IMoniker*, ULONG*); +HRESULT IEnumMoniker_Next_Stub(IEnumMoniker, ULONG, IMoniker*, ULONG*); +HRESULT IMoniker_BindToObject_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, void**); +HRESULT IMoniker_BindToObject_Stub(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +HRESULT IMoniker_BindToStorage_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, void**); +HRESULT IMoniker_BindToStorage_Stub(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +HRESULT IEnumString_Next_Proxy(IEnumString, ULONG, LPCSTR*, ULONG*); +HRESULT IEnumString_Next_Stub(IEnumString, ULONG, LPCSTR*, ULONG*); +HRESULT IStream_Read_Proxy(IStream, void*, ULONG, ULONG*); +HRESULT IStream_Read_Stub(IStream, BYTE*, ULONG, ULONG*); +HRESULT IStream_Write_Proxy(IStream, void*, ULONG, ULONG*); +HRESULT IStream_Write_Stub(IStream, BYTE*, ULONG, ULONG*); +HRESULT IStream_Seek_Proxy(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); +HRESULT IStream_Seek_Stub(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); +HRESULT IStream_CopyTo_Proxy(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); +HRESULT IStream_CopyTo_Stub(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); +HRESULT IEnumSTATSTG_Next_Proxy(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); +HRESULT IEnumSTATSTG_Next_Stub(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); +HRESULT IStorage_OpenStream_Proxy(IStorage, OLECHAR*, void*, DWORD, DWORD, IStream*); +HRESULT IStorage_OpenStream_Stub(IStorage, OLECHAR*, uint, BYTE*, DWORD, DWORD, IStream* ); +HRESULT IStorage_EnumElements_Proxy(IStorage, DWORD, void*, DWORD, IEnumSTATSTG*); +HRESULT IStorage_EnumElements_Stub(IStorage, DWORD, uint, BYTE*, DWORD, IEnumSTATSTG*); +HRESULT ILockBytes_ReadAt_Proxy(ILockBytes, ULARGE_INTEGER, void*, ULONG, ULONG*); +HRESULT ILockBytes_ReadAt_Stub(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); +HRESULT ILockBytes_WriteAt_Proxy(ILockBytes, ULARGE_INTEGER, const(void)*, ULONG, ULONG*); +HRESULT ILockBytes_WriteAt_Stub(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); +} ++/ diff --git a/src/core/sys/windows/objsafe.d b/src/core/sys/windows/objsafe.d index 9f4925433d..9302dfd97a 100644 --- a/src/core/sys/windows/objsafe.d +++ b/src/core/sys/windows/objsafe.d @@ -1,22 +1,22 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_objsafe.d) - */ -module core.sys.windows.objsafe; - -private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef; - -enum { - INTERFACESAFE_FOR_UNTRUSTED_CALLER = 1, - INTERFACESAFE_FOR_UNTRUSTED_DATA -} - -interface IObjectSafety : IUnknown { - HRESULT GetInterfaceSafetyOptions(REFIID, DWORD*, DWORD*); - HRESULT SetInterfaceSafetyOptions(REFIID, DWORD, DWORD); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_objsafe.d) + */ +module core.sys.windows.objsafe; + +private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef; + +enum { + INTERFACESAFE_FOR_UNTRUSTED_CALLER = 1, + INTERFACESAFE_FOR_UNTRUSTED_DATA +} + +interface IObjectSafety : IUnknown { + HRESULT GetInterfaceSafetyOptions(REFIID, DWORD*, DWORD*); + HRESULT SetInterfaceSafetyOptions(REFIID, DWORD, DWORD); +} diff --git a/src/core/sys/windows/ocidl.d b/src/core/sys/windows/ocidl.d index 32097e6eef..cf3c140696 100644 --- a/src/core/sys/windows/ocidl.d +++ b/src/core/sys/windows/ocidl.d @@ -1,471 +1,471 @@ -/** - * Windows API header module - * - * Part of the Internet Development SDK - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ocidl.d) - */ -module core.sys.windows.ocidl; - -private import core.sys.windows.ole2, core.sys.windows.oleidl, core.sys.windows.oaidl, core.sys.windows.objfwd, - core.sys.windows.windef, core.sys.windows.wtypes; -private import core.sys.windows.objidl; // for CLIPFORMAT -private import core.sys.windows.wingdi; // for TEXTMETRICW -private import core.sys.windows.winuser; // for LPMSG - -interface IBindHost : IUnknown {} - -interface IServiceProvider : IUnknown{ - HRESULT QueryService(REFGUID,REFIID,void**); -} - -/* -// TODO: -//private import core.sys.windows.servprov; // for IServiceProvider -// private import core.sys.windows.urlmon; // for IBindHost. This is not included in MinGW. - -// core.sys.windows.urlmon should contain: -interface IBindHost : IUnknown -{ - HRESULT CreateMoniker(LPOLESTR szName, IBindCtx pBC, IMoniker* ppmk, DWORD); - HRESULT MonikerBindToObject(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); - HRESULT MonikerBindToStorage(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); -} -*/ - - - - -//[Yes] #ifndef OLE2ANSI -alias TEXTMETRICW TEXTMETRICOLE; -//} else { -//alias TEXTMETRIC TEXTMETRICOLE; -//} -alias TEXTMETRICOLE* LPTEXTMETRICOLE; - -alias DWORD OLE_COLOR; -alias UINT OLE_HANDLE; -alias int OLE_XPOS_HIMETRIC; -alias int OLE_YPOS_HIMETRIC; -alias int OLE_XSIZE_HIMETRIC; -alias int OLE_YSIZE_HIMETRIC; - -enum READYSTATE { - READYSTATE_UNINITIALIZED = 0, - READYSTATE_LOADING = 1, - READYSTATE_LOADED = 2, - READYSTATE_INTERACTIVE = 3, - READYSTATE_COMPLETE = 4 -} - -enum PROPBAG2_TYPE { - PROPBAG2_TYPE_UNDEFINED, - PROPBAG2_TYPE_DATA, - PROPBAG2_TYPE_URL, - PROPBAG2_TYPE_OBJECT, - PROPBAG2_TYPE_STREAM, - PROPBAG2_TYPE_STORAGE, - PROPBAG2_TYPE_MONIKER // = 6 -} - -struct PROPBAG2 { - DWORD dwType; - VARTYPE vt; - CLIPFORMAT cfType; - DWORD dwHint; - LPOLESTR pstrName; - CLSID clsid; -} - -enum QACONTAINERFLAGS { - QACONTAINER_SHOWHATCHING = 1, - QACONTAINER_SHOWGRABHANDLES = 2, - QACONTAINER_USERMODE = 4, - QACONTAINER_DISPLAYASDEFAULT = 8, - QACONTAINER_UIDEAD = 16, - QACONTAINER_AUTOCLIP = 32, - QACONTAINER_MESSAGEREFLECT = 64, - QACONTAINER_SUPPORTSMNEMONICS = 128 -} - -struct QACONTAINER { - ULONG cbSize = this.sizeof; - IOleClientSite pClientSite; - IAdviseSinkEx pAdviseSink; - IPropertyNotifySink pPropertyNotifySink; - IUnknown pUnkEventSink; - DWORD dwAmbientFlags; - OLE_COLOR colorFore; - OLE_COLOR colorBack; - IFont pFont; - IOleUndoManager pUndoMgr; - DWORD dwAppearance; - LONG lcid; - HPALETTE hpal; - IBindHost pBindHost; - IOleControlSite pOleControlSite; - IServiceProvider pServiceProvider; -} - -struct QACONTROL { - ULONG cbSize = this.sizeof; - DWORD dwMiscStatus; - DWORD dwViewStatus; - DWORD dwEventCookie; - DWORD dwPropNotifyCookie; - DWORD dwPointerActivationPolicy; -} - -struct POINTF { - float x; - float y; -} -alias POINTF* LPPOINTF; - -struct CONTROLINFO { - ULONG cb; - HACCEL hAccel; - USHORT cAccel; - DWORD dwFlags; -} -alias CONTROLINFO* LPCONTROLINFO; - -struct CONNECTDATA { - LPUNKNOWN pUnk; - DWORD dwCookie; -} -alias CONNECTDATA* LPCONNECTDATA; - -struct LICINFO { - int cbLicInfo; - BOOL fRuntimeKeyAvail; - BOOL fLicVerified; -} -alias LICINFO* LPLICINFO; - -struct CAUUID { - ULONG cElems; - GUID* pElems; -} -alias CAUUID* LPCAUUID; - -struct CALPOLESTR { - ULONG cElems; - LPOLESTR* pElems; -} -alias CALPOLESTR* LPCALPOLESTR; - -struct CADWORD { - ULONG cElems; - DWORD* pElems; -} -alias CADWORD* LPCADWORD; - -struct PROPPAGEINFO { - ULONG cb; - LPOLESTR pszTitle; - SIZE size; - LPOLESTR pszDocString; - LPOLESTR pszHelpFile; - DWORD dwHelpContext; -} -alias PROPPAGEINFO* LPPROPPAGEINFO; - -interface IOleControl : IUnknown { - HRESULT GetControlInfo(LPCONTROLINFO); - HRESULT OnMnemonic(LPMSG); - HRESULT OnAmbientPropertyChange(DISPID); - HRESULT FreezeEvents(BOOL); -} - -interface IOleControlSite : IUnknown { - HRESULT OnControlInfoChanged(); - HRESULT LockInPlaceActive(BOOL); - HRESULT GetExtendedControl(LPDISPATCH*); - HRESULT TransformCoords(POINTL*, POINTF*, DWORD); - HRESULT TranslateAccelerator(LPMSG, DWORD); - HRESULT OnFocus(BOOL); - HRESULT ShowPropertyFrame(); -} - -interface ISimpleFrameSite : IUnknown { - HRESULT PreMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, PDWORD); - HRESULT PostMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, DWORD); -} - -interface IErrorLog : IUnknown { - HRESULT AddError(LPCOLESTR, LPEXCEPINFO); -} -alias IErrorLog LPERRORLOG; - -interface IPropertyBag : IUnknown { - HRESULT Read(LPCOLESTR, LPVARIANT, LPERRORLOG); - HRESULT Write(LPCOLESTR, LPVARIANT); -} -alias IPropertyBag LPPROPERTYBAG; - -interface IPropertyBag2 : IUnknown { - HRESULT Read(ULONG, PROPBAG2*, LPERRORLOG, VARIANT*, HRESULT*); - HRESULT Write(ULONG, PROPBAG2*, VARIANT*); - HRESULT CountProperties(ULONG*); - HRESULT GetPropertyInfo(ULONG, ULONG, PROPBAG2*, ULONG*); - HRESULT LoadObject(LPCOLESTR, DWORD, IUnknown, LPERRORLOG); -} -alias IPropertyBag2 LPPROPERTYBAG2; - -interface IPersistPropertyBag : IPersist { - HRESULT InitNew(); - HRESULT Load(LPPROPERTYBAG, LPERRORLOG); - HRESULT Save(LPPROPERTYBAG, BOOL, BOOL); -} - -interface IPersistPropertyBag2 : IPersist { - HRESULT InitNew(); - HRESULT Load(LPPROPERTYBAG2, LPERRORLOG); - HRESULT Save(LPPROPERTYBAG2, BOOL, BOOL); - HRESULT IsDirty(); -} - -interface IPersistStreamInit : IPersist { - HRESULT IsDirty(); - HRESULT Load(LPSTREAM); - HRESULT Save(LPSTREAM, BOOL); - HRESULT GetSizeMax(PULARGE_INTEGER); - HRESULT InitNew(); -} - -interface IPersistMemory : IPersist { - HRESULT IsDirty(); - HRESULT Load(PVOID, ULONG); - HRESULT Save(PVOID, BOOL, ULONG); - HRESULT GetSizeMax(PULONG); - HRESULT InitNew(); -} - -interface IPropertyNotifySink : IUnknown { - HRESULT OnChanged(DISPID); - HRESULT OnRequestEdit(DISPID); -} - -interface IProvideClassInfo : IUnknown { - HRESULT GetClassInfo(LPTYPEINFO*); -} - -interface IProvideClassInfo2 : IProvideClassInfo { - HRESULT GetGUID(DWORD, GUID*); -} - -interface IConnectionPointContainer : IUnknown { - HRESULT EnumConnectionPoints(LPENUMCONNECTIONPOINTS*); - HRESULT FindConnectionPoint(REFIID, LPCONNECTIONPOINT*); -} - -interface IEnumConnectionPoints : IUnknown { - HRESULT Next(ULONG, LPCONNECTIONPOINT*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMCONNECTIONPOINTS*); -} -alias IEnumConnectionPoints LPENUMCONNECTIONPOINTS; - -interface IConnectionPoint : IUnknown { - HRESULT GetConnectionInterface(IID*); - HRESULT GetConnectionPointContainer(IConnectionPointContainer*); - HRESULT Advise(LPUNKNOWN, PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumConnections(LPENUMCONNECTIONS*); -} -alias IConnectionPoint LPCONNECTIONPOINT; - -interface IEnumConnections : IUnknown { - HRESULT Next(ULONG, LPCONNECTDATA, PULONG); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMCONNECTIONS*); -} -alias IEnumConnections LPENUMCONNECTIONS; - -interface IClassFactory2 : IClassFactory { - HRESULT GetLicInfo(LPLICINFO); - HRESULT RequestLicKey(DWORD, BSTR*); - HRESULT CreateInstanceLic(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR, PVOID*); -} - -interface ISpecifyPropertyPages : IUnknown { - HRESULT GetPages(CAUUID*); -} - -interface IPerPropertyBrowsing : IUnknown { - HRESULT GetDisplayString(DISPID, BSTR*); - HRESULT MapPropertyToPage(DISPID, LPCLSID); - HRESULT GetPredefinedStrings(DISPID, CALPOLESTR*, CADWORD*); - HRESULT GetPredefinedValue(DISPID, DWORD, VARIANT*); -} - -interface IPropertyPageSite : IUnknown { - HRESULT OnStatusChange(DWORD); - HRESULT GetLocaleID(LCID*); - HRESULT GetPageContainer(LPUNKNOWN*); - HRESULT TranslateAccelerator(LPMSG); -} -alias IPropertyPageSite LPPROPERTYPAGESITE; - -interface IPropertyPage : IUnknown { - HRESULT SetPageSite(LPPROPERTYPAGESITE); - HRESULT Activate(HWND, LPCRECT, BOOL); - HRESULT Deactivate(); - HRESULT GetPageInfo(LPPROPPAGEINFO); - HRESULT SetObjects(ULONG, LPUNKNOWN*); - HRESULT Show(UINT); - HRESULT Move(LPCRECT); - HRESULT IsPageDirty(); - HRESULT Apply(); - HRESULT Help(LPCOLESTR); - HRESULT TranslateAccelerator(LPMSG); -} - - -interface IPropertyPage2 : IPropertyPage -{ HRESULT EditProperty(DISPID); -} - -interface IFont : IUnknown { - HRESULT get_Name(BSTR*); - HRESULT put_Name(BSTR); - HRESULT get_Size(CY*); - HRESULT put_Size(CY); - HRESULT get_Bold(BOOL*); - HRESULT put_Bold(BOOL); - HRESULT get_Italic(BOOL*); - HRESULT put_Italic(BOOL); - HRESULT get_Underline(BOOL*); - HRESULT put_Underline(BOOL); - HRESULT get_Strikethrough(BOOL*); - HRESULT put_Strikethrough(BOOL); - HRESULT get_Weight(short*); - HRESULT put_Weight(short); - HRESULT get_Charset(short*); - HRESULT put_Charset(short); - HRESULT get_hFont(HFONT*); - HRESULT Clone(IFont*); - HRESULT IsEqual(IFont); - HRESULT SetRatio(int, int); - HRESULT QueryTextMetrics(LPTEXTMETRICOLE); - HRESULT AddRefHfont(HFONT); - HRESULT ReleaseHfont(HFONT); - HRESULT SetHdc(HDC); -} -alias IFont LPFONT; - -interface IFontDisp : IDispatch { -} -alias IFontDisp LPFONTDISP; - -interface IPicture : IUnknown { - HRESULT get_Handle(OLE_HANDLE*); - HRESULT get_hPal(OLE_HANDLE*); - HRESULT get_Type(short*); - HRESULT get_Width(OLE_XSIZE_HIMETRIC*); - HRESULT get_Height(OLE_YSIZE_HIMETRIC*); - HRESULT Render(HDC, int, int, int, int, OLE_XPOS_HIMETRIC, - OLE_YPOS_HIMETRIC, OLE_XSIZE_HIMETRIC, OLE_YSIZE_HIMETRIC, LPCRECT); - HRESULT set_hPal(OLE_HANDLE); - HRESULT get_CurDC(HDC*); - HRESULT SelectPicture(HDC, HDC*, OLE_HANDLE*); - HRESULT get_KeepOriginalFormat(BOOL*); - HRESULT put_KeepOriginalFormat(BOOL); - HRESULT PictureChanged(); - HRESULT SaveAsFile(LPSTREAM, BOOL, LONG*); - HRESULT get_Attributes(PDWORD); -} - -interface IPictureDisp : IDispatch { -} - -interface IOleInPlaceSiteEx : IOleInPlaceSite { - HRESULT OnInPlaceActivateEx(BOOL*, DWORD); - HRESULT OnInPlaceDeactivateEx(BOOL); - HRESULT RequestUIActivate(); -} - -interface IObjectWithSite : IUnknown { - HRESULT SetSite(IUnknown); - HRESULT GetSite(REFIID, void**); -} - -interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx { - HRESULT CanWindowlessActivate(); - HRESULT GetCapture(); - HRESULT SetCapture(BOOL); - HRESULT GetFocus(); - HRESULT SetFocus(BOOL); - HRESULT GetDC(LPCRECT, DWORD, HDC*); - HRESULT ReleaseDC(HDC); - HRESULT InvalidateRect(LPCRECT, BOOL); - HRESULT InvalidateRgn(HRGN, BOOL); - HRESULT ScrollRect(INT, INT, LPCRECT, LPCRECT); - HRESULT AdjustRect(LPCRECT); - HRESULT OnDefWindowMessage(UINT, WPARAM, LPARAM, LRESULT*); -} - -interface IAdviseSinkEx : IUnknown { - void OnDataChange(FORMATETC*, STGMEDIUM*); - void OnViewChange(DWORD, LONG); - void OnRename(IMoniker); - void OnSave(); - void OnClose(); - HRESULT OnViewStatusChange(DWORD); -} - -interface IPointerInactive : IUnknown { - HRESULT GetActivationPolicy(DWORD*); - HRESULT OnInactiveMouseMove(LPCRECT, LONG, LONG, DWORD); - HRESULT OnInactiveSetCursor(LPCRECT, LONG, LONG, DWORD, BOOL); -} - -interface IOleUndoUnit : IUnknown { - HRESULT Do(LPOLEUNDOMANAGER); - HRESULT GetDescription(BSTR*); - HRESULT GetUnitType(CLSID*, LONG*); - HRESULT OnNextAdd(); -} - -interface IOleParentUndoUnit : IOleUndoUnit { - HRESULT Open(IOleParentUndoUnit); - HRESULT Close(IOleParentUndoUnit, BOOL); - HRESULT Add(IOleUndoUnit); - HRESULT FindUnit(IOleUndoUnit); - HRESULT GetParentState(DWORD*); -} - -interface IEnumOleUndoUnits : IUnknown { - HRESULT Next(ULONG, IOleUndoUnit*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumOleUndoUnits*); -} - -interface IOleUndoManager : IUnknown { - HRESULT Open(IOleParentUndoUnit); - HRESULT Close(IOleParentUndoUnit, BOOL); - HRESULT Add(IOleUndoUnit); - HRESULT GetOpenParentState(DWORD*); - HRESULT DiscardFrom(IOleUndoUnit); - HRESULT UndoTo(IOleUndoUnit); - HRESULT RedoTo(IOleUndoUnit); - HRESULT EnumUndoable(IEnumOleUndoUnits*); - HRESULT EnumRedoable(IEnumOleUndoUnits*); - HRESULT GetLastUndoDescription(BSTR*); - HRESULT GetLastRedoDescription(BSTR*); - HRESULT Enable(BOOL); -} -alias IOleUndoManager LPOLEUNDOMANAGER; - -interface IQuickActivate : IUnknown { - HRESULT QuickActivate(QACONTAINER*, QACONTROL*); - HRESULT SetContentExtent(LPSIZEL); - HRESULT GetContentExtent(LPSIZEL); -} +/** + * Windows API header module + * + * Part of the Internet Development SDK + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ocidl.d) + */ +module core.sys.windows.ocidl; + +private import core.sys.windows.ole2, core.sys.windows.oleidl, core.sys.windows.oaidl, core.sys.windows.objfwd, + core.sys.windows.windef, core.sys.windows.wtypes; +private import core.sys.windows.objidl; // for CLIPFORMAT +private import core.sys.windows.wingdi; // for TEXTMETRICW +private import core.sys.windows.winuser; // for LPMSG + +interface IBindHost : IUnknown {} + +interface IServiceProvider : IUnknown{ + HRESULT QueryService(REFGUID,REFIID,void**); +} + +/* +// TODO: +//private import core.sys.windows.servprov; // for IServiceProvider +// private import core.sys.windows.urlmon; // for IBindHost. This is not included in MinGW. + +// core.sys.windows.urlmon should contain: +interface IBindHost : IUnknown +{ + HRESULT CreateMoniker(LPOLESTR szName, IBindCtx pBC, IMoniker* ppmk, DWORD); + HRESULT MonikerBindToObject(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); + HRESULT MonikerBindToStorage(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); +} +*/ + + + + +//[Yes] #ifndef OLE2ANSI +alias TEXTMETRICW TEXTMETRICOLE; +//} else { +//alias TEXTMETRIC TEXTMETRICOLE; +//} +alias TEXTMETRICOLE* LPTEXTMETRICOLE; + +alias DWORD OLE_COLOR; +alias UINT OLE_HANDLE; +alias int OLE_XPOS_HIMETRIC; +alias int OLE_YPOS_HIMETRIC; +alias int OLE_XSIZE_HIMETRIC; +alias int OLE_YSIZE_HIMETRIC; + +enum READYSTATE { + READYSTATE_UNINITIALIZED = 0, + READYSTATE_LOADING = 1, + READYSTATE_LOADED = 2, + READYSTATE_INTERACTIVE = 3, + READYSTATE_COMPLETE = 4 +} + +enum PROPBAG2_TYPE { + PROPBAG2_TYPE_UNDEFINED, + PROPBAG2_TYPE_DATA, + PROPBAG2_TYPE_URL, + PROPBAG2_TYPE_OBJECT, + PROPBAG2_TYPE_STREAM, + PROPBAG2_TYPE_STORAGE, + PROPBAG2_TYPE_MONIKER // = 6 +} + +struct PROPBAG2 { + DWORD dwType; + VARTYPE vt; + CLIPFORMAT cfType; + DWORD dwHint; + LPOLESTR pstrName; + CLSID clsid; +} + +enum QACONTAINERFLAGS { + QACONTAINER_SHOWHATCHING = 1, + QACONTAINER_SHOWGRABHANDLES = 2, + QACONTAINER_USERMODE = 4, + QACONTAINER_DISPLAYASDEFAULT = 8, + QACONTAINER_UIDEAD = 16, + QACONTAINER_AUTOCLIP = 32, + QACONTAINER_MESSAGEREFLECT = 64, + QACONTAINER_SUPPORTSMNEMONICS = 128 +} + +struct QACONTAINER { + ULONG cbSize = this.sizeof; + IOleClientSite pClientSite; + IAdviseSinkEx pAdviseSink; + IPropertyNotifySink pPropertyNotifySink; + IUnknown pUnkEventSink; + DWORD dwAmbientFlags; + OLE_COLOR colorFore; + OLE_COLOR colorBack; + IFont pFont; + IOleUndoManager pUndoMgr; + DWORD dwAppearance; + LONG lcid; + HPALETTE hpal; + IBindHost pBindHost; + IOleControlSite pOleControlSite; + IServiceProvider pServiceProvider; +} + +struct QACONTROL { + ULONG cbSize = this.sizeof; + DWORD dwMiscStatus; + DWORD dwViewStatus; + DWORD dwEventCookie; + DWORD dwPropNotifyCookie; + DWORD dwPointerActivationPolicy; +} + +struct POINTF { + float x; + float y; +} +alias POINTF* LPPOINTF; + +struct CONTROLINFO { + ULONG cb; + HACCEL hAccel; + USHORT cAccel; + DWORD dwFlags; +} +alias CONTROLINFO* LPCONTROLINFO; + +struct CONNECTDATA { + LPUNKNOWN pUnk; + DWORD dwCookie; +} +alias CONNECTDATA* LPCONNECTDATA; + +struct LICINFO { + int cbLicInfo; + BOOL fRuntimeKeyAvail; + BOOL fLicVerified; +} +alias LICINFO* LPLICINFO; + +struct CAUUID { + ULONG cElems; + GUID* pElems; +} +alias CAUUID* LPCAUUID; + +struct CALPOLESTR { + ULONG cElems; + LPOLESTR* pElems; +} +alias CALPOLESTR* LPCALPOLESTR; + +struct CADWORD { + ULONG cElems; + DWORD* pElems; +} +alias CADWORD* LPCADWORD; + +struct PROPPAGEINFO { + ULONG cb; + LPOLESTR pszTitle; + SIZE size; + LPOLESTR pszDocString; + LPOLESTR pszHelpFile; + DWORD dwHelpContext; +} +alias PROPPAGEINFO* LPPROPPAGEINFO; + +interface IOleControl : IUnknown { + HRESULT GetControlInfo(LPCONTROLINFO); + HRESULT OnMnemonic(LPMSG); + HRESULT OnAmbientPropertyChange(DISPID); + HRESULT FreezeEvents(BOOL); +} + +interface IOleControlSite : IUnknown { + HRESULT OnControlInfoChanged(); + HRESULT LockInPlaceActive(BOOL); + HRESULT GetExtendedControl(LPDISPATCH*); + HRESULT TransformCoords(POINTL*, POINTF*, DWORD); + HRESULT TranslateAccelerator(LPMSG, DWORD); + HRESULT OnFocus(BOOL); + HRESULT ShowPropertyFrame(); +} + +interface ISimpleFrameSite : IUnknown { + HRESULT PreMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, PDWORD); + HRESULT PostMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, DWORD); +} + +interface IErrorLog : IUnknown { + HRESULT AddError(LPCOLESTR, LPEXCEPINFO); +} +alias IErrorLog LPERRORLOG; + +interface IPropertyBag : IUnknown { + HRESULT Read(LPCOLESTR, LPVARIANT, LPERRORLOG); + HRESULT Write(LPCOLESTR, LPVARIANT); +} +alias IPropertyBag LPPROPERTYBAG; + +interface IPropertyBag2 : IUnknown { + HRESULT Read(ULONG, PROPBAG2*, LPERRORLOG, VARIANT*, HRESULT*); + HRESULT Write(ULONG, PROPBAG2*, VARIANT*); + HRESULT CountProperties(ULONG*); + HRESULT GetPropertyInfo(ULONG, ULONG, PROPBAG2*, ULONG*); + HRESULT LoadObject(LPCOLESTR, DWORD, IUnknown, LPERRORLOG); +} +alias IPropertyBag2 LPPROPERTYBAG2; + +interface IPersistPropertyBag : IPersist { + HRESULT InitNew(); + HRESULT Load(LPPROPERTYBAG, LPERRORLOG); + HRESULT Save(LPPROPERTYBAG, BOOL, BOOL); +} + +interface IPersistPropertyBag2 : IPersist { + HRESULT InitNew(); + HRESULT Load(LPPROPERTYBAG2, LPERRORLOG); + HRESULT Save(LPPROPERTYBAG2, BOOL, BOOL); + HRESULT IsDirty(); +} + +interface IPersistStreamInit : IPersist { + HRESULT IsDirty(); + HRESULT Load(LPSTREAM); + HRESULT Save(LPSTREAM, BOOL); + HRESULT GetSizeMax(PULARGE_INTEGER); + HRESULT InitNew(); +} + +interface IPersistMemory : IPersist { + HRESULT IsDirty(); + HRESULT Load(PVOID, ULONG); + HRESULT Save(PVOID, BOOL, ULONG); + HRESULT GetSizeMax(PULONG); + HRESULT InitNew(); +} + +interface IPropertyNotifySink : IUnknown { + HRESULT OnChanged(DISPID); + HRESULT OnRequestEdit(DISPID); +} + +interface IProvideClassInfo : IUnknown { + HRESULT GetClassInfo(LPTYPEINFO*); +} + +interface IProvideClassInfo2 : IProvideClassInfo { + HRESULT GetGUID(DWORD, GUID*); +} + +interface IConnectionPointContainer : IUnknown { + HRESULT EnumConnectionPoints(LPENUMCONNECTIONPOINTS*); + HRESULT FindConnectionPoint(REFIID, LPCONNECTIONPOINT*); +} + +interface IEnumConnectionPoints : IUnknown { + HRESULT Next(ULONG, LPCONNECTIONPOINT*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCONNECTIONPOINTS*); +} +alias IEnumConnectionPoints LPENUMCONNECTIONPOINTS; + +interface IConnectionPoint : IUnknown { + HRESULT GetConnectionInterface(IID*); + HRESULT GetConnectionPointContainer(IConnectionPointContainer*); + HRESULT Advise(LPUNKNOWN, PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumConnections(LPENUMCONNECTIONS*); +} +alias IConnectionPoint LPCONNECTIONPOINT; + +interface IEnumConnections : IUnknown { + HRESULT Next(ULONG, LPCONNECTDATA, PULONG); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCONNECTIONS*); +} +alias IEnumConnections LPENUMCONNECTIONS; + +interface IClassFactory2 : IClassFactory { + HRESULT GetLicInfo(LPLICINFO); + HRESULT RequestLicKey(DWORD, BSTR*); + HRESULT CreateInstanceLic(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR, PVOID*); +} + +interface ISpecifyPropertyPages : IUnknown { + HRESULT GetPages(CAUUID*); +} + +interface IPerPropertyBrowsing : IUnknown { + HRESULT GetDisplayString(DISPID, BSTR*); + HRESULT MapPropertyToPage(DISPID, LPCLSID); + HRESULT GetPredefinedStrings(DISPID, CALPOLESTR*, CADWORD*); + HRESULT GetPredefinedValue(DISPID, DWORD, VARIANT*); +} + +interface IPropertyPageSite : IUnknown { + HRESULT OnStatusChange(DWORD); + HRESULT GetLocaleID(LCID*); + HRESULT GetPageContainer(LPUNKNOWN*); + HRESULT TranslateAccelerator(LPMSG); +} +alias IPropertyPageSite LPPROPERTYPAGESITE; + +interface IPropertyPage : IUnknown { + HRESULT SetPageSite(LPPROPERTYPAGESITE); + HRESULT Activate(HWND, LPCRECT, BOOL); + HRESULT Deactivate(); + HRESULT GetPageInfo(LPPROPPAGEINFO); + HRESULT SetObjects(ULONG, LPUNKNOWN*); + HRESULT Show(UINT); + HRESULT Move(LPCRECT); + HRESULT IsPageDirty(); + HRESULT Apply(); + HRESULT Help(LPCOLESTR); + HRESULT TranslateAccelerator(LPMSG); +} + + +interface IPropertyPage2 : IPropertyPage +{ HRESULT EditProperty(DISPID); +} + +interface IFont : IUnknown { + HRESULT get_Name(BSTR*); + HRESULT put_Name(BSTR); + HRESULT get_Size(CY*); + HRESULT put_Size(CY); + HRESULT get_Bold(BOOL*); + HRESULT put_Bold(BOOL); + HRESULT get_Italic(BOOL*); + HRESULT put_Italic(BOOL); + HRESULT get_Underline(BOOL*); + HRESULT put_Underline(BOOL); + HRESULT get_Strikethrough(BOOL*); + HRESULT put_Strikethrough(BOOL); + HRESULT get_Weight(short*); + HRESULT put_Weight(short); + HRESULT get_Charset(short*); + HRESULT put_Charset(short); + HRESULT get_hFont(HFONT*); + HRESULT Clone(IFont*); + HRESULT IsEqual(IFont); + HRESULT SetRatio(int, int); + HRESULT QueryTextMetrics(LPTEXTMETRICOLE); + HRESULT AddRefHfont(HFONT); + HRESULT ReleaseHfont(HFONT); + HRESULT SetHdc(HDC); +} +alias IFont LPFONT; + +interface IFontDisp : IDispatch { +} +alias IFontDisp LPFONTDISP; + +interface IPicture : IUnknown { + HRESULT get_Handle(OLE_HANDLE*); + HRESULT get_hPal(OLE_HANDLE*); + HRESULT get_Type(short*); + HRESULT get_Width(OLE_XSIZE_HIMETRIC*); + HRESULT get_Height(OLE_YSIZE_HIMETRIC*); + HRESULT Render(HDC, int, int, int, int, OLE_XPOS_HIMETRIC, + OLE_YPOS_HIMETRIC, OLE_XSIZE_HIMETRIC, OLE_YSIZE_HIMETRIC, LPCRECT); + HRESULT set_hPal(OLE_HANDLE); + HRESULT get_CurDC(HDC*); + HRESULT SelectPicture(HDC, HDC*, OLE_HANDLE*); + HRESULT get_KeepOriginalFormat(BOOL*); + HRESULT put_KeepOriginalFormat(BOOL); + HRESULT PictureChanged(); + HRESULT SaveAsFile(LPSTREAM, BOOL, LONG*); + HRESULT get_Attributes(PDWORD); +} + +interface IPictureDisp : IDispatch { +} + +interface IOleInPlaceSiteEx : IOleInPlaceSite { + HRESULT OnInPlaceActivateEx(BOOL*, DWORD); + HRESULT OnInPlaceDeactivateEx(BOOL); + HRESULT RequestUIActivate(); +} + +interface IObjectWithSite : IUnknown { + HRESULT SetSite(IUnknown); + HRESULT GetSite(REFIID, void**); +} + +interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx { + HRESULT CanWindowlessActivate(); + HRESULT GetCapture(); + HRESULT SetCapture(BOOL); + HRESULT GetFocus(); + HRESULT SetFocus(BOOL); + HRESULT GetDC(LPCRECT, DWORD, HDC*); + HRESULT ReleaseDC(HDC); + HRESULT InvalidateRect(LPCRECT, BOOL); + HRESULT InvalidateRgn(HRGN, BOOL); + HRESULT ScrollRect(INT, INT, LPCRECT, LPCRECT); + HRESULT AdjustRect(LPCRECT); + HRESULT OnDefWindowMessage(UINT, WPARAM, LPARAM, LRESULT*); +} + +interface IAdviseSinkEx : IUnknown { + void OnDataChange(FORMATETC*, STGMEDIUM*); + void OnViewChange(DWORD, LONG); + void OnRename(IMoniker); + void OnSave(); + void OnClose(); + HRESULT OnViewStatusChange(DWORD); +} + +interface IPointerInactive : IUnknown { + HRESULT GetActivationPolicy(DWORD*); + HRESULT OnInactiveMouseMove(LPCRECT, LONG, LONG, DWORD); + HRESULT OnInactiveSetCursor(LPCRECT, LONG, LONG, DWORD, BOOL); +} + +interface IOleUndoUnit : IUnknown { + HRESULT Do(LPOLEUNDOMANAGER); + HRESULT GetDescription(BSTR*); + HRESULT GetUnitType(CLSID*, LONG*); + HRESULT OnNextAdd(); +} + +interface IOleParentUndoUnit : IOleUndoUnit { + HRESULT Open(IOleParentUndoUnit); + HRESULT Close(IOleParentUndoUnit, BOOL); + HRESULT Add(IOleUndoUnit); + HRESULT FindUnit(IOleUndoUnit); + HRESULT GetParentState(DWORD*); +} + +interface IEnumOleUndoUnits : IUnknown { + HRESULT Next(ULONG, IOleUndoUnit*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOleUndoUnits*); +} + +interface IOleUndoManager : IUnknown { + HRESULT Open(IOleParentUndoUnit); + HRESULT Close(IOleParentUndoUnit, BOOL); + HRESULT Add(IOleUndoUnit); + HRESULT GetOpenParentState(DWORD*); + HRESULT DiscardFrom(IOleUndoUnit); + HRESULT UndoTo(IOleUndoUnit); + HRESULT RedoTo(IOleUndoUnit); + HRESULT EnumUndoable(IEnumOleUndoUnits*); + HRESULT EnumRedoable(IEnumOleUndoUnits*); + HRESULT GetLastUndoDescription(BSTR*); + HRESULT GetLastRedoDescription(BSTR*); + HRESULT Enable(BOOL); +} +alias IOleUndoManager LPOLEUNDOMANAGER; + +interface IQuickActivate : IUnknown { + HRESULT QuickActivate(QACONTAINER*, QACONTROL*); + HRESULT SetContentExtent(LPSIZEL); + HRESULT GetContentExtent(LPSIZEL); +} diff --git a/src/core/sys/windows/odbcinst.d b/src/core/sys/windows/odbcinst.d index 856adc6e0e..e9051f858b 100644 --- a/src/core/sys/windows/odbcinst.d +++ b/src/core/sys/windows/odbcinst.d @@ -1,165 +1,165 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_odbcinst.d) - */ -module core.sys.windows.odbcinst; - -import core.sys.windows.sql; -private import core.sys.windows.windef; - -/* FIXME: The Unicode/Ansi functions situation is a mess. How do the xxxA - * versions of these functions fit into the scheme? - */ - -// SQLConfigDataSource() -enum : WORD { - ODBC_ADD_DSN = 1, - ODBC_CONFIG_DSN = 2, - ODBC_REMOVE_DSN = 3, - ODBC_ADD_SYS_DSN = 4, - ODBC_CONFIG_SYS_DSN = 5, - ODBC_REMOVE_SYS_DSN = 6, - ODBC_REMOVE_DEFAULT_DSN = 7 -} - -// ODBC 3.0+ -enum : WORD { - ODBC_INSTALL_INQUIRY = 1, - ODBC_INSTALL_COMPLETE = 2 -} - -// ODBC 2.5+ -enum : WORD { - ODBC_INSTALL_DRIVER = 1, - ODBC_REMOVE_DRIVER = 2, - ODBC_CONFIG_DRIVER = 3, - ODBC_CONFIG_DRIVER_MAX = 100 -} - -// ODBC 3.0+ -// SQLSetConfigMode() -enum : UWORD { - ODBC_BOTH_DSN = 0, - ODBC_USER_DSN = 1, - ODBC_SYSTEM_DSN = 2 -} - -enum : DWORD { - ODBC_ERROR_GENERAL_ERR = 1, - ODBC_ERROR_INVALID_BUFF_LEN = 2, - ODBC_ERROR_INVALID_HWND = 3, - ODBC_ERROR_INVALID_STR = 4, - ODBC_ERROR_INVALID_REQUEST_TYPE = 5, - ODBC_ERROR_COMPONENT_NOT_FOUND = 6, - ODBC_ERROR_INVALID_NAME = 7, - ODBC_ERROR_INVALID_KEYWORD_VALUE = 8, - ODBC_ERROR_INVALID_DSN = 9, - ODBC_ERROR_INVALID_INF = 10, - ODBC_ERROR_REQUEST_FAILED = 11, - ODBC_ERROR_INVALID_PATH = 12, - ODBC_ERROR_LOAD_LIB_FAILED = 13, - ODBC_ERROR_INVALID_PARAM_SEQUENCE = 14, - ODBC_ERROR_INVALID_LOG_FILE = 15, - ODBC_ERROR_USER_CANCELED = 16, - ODBC_ERROR_USAGE_UPDATE_FAILED = 17, - ODBC_ERROR_CREATE_DSN_FAILED = 18, - ODBC_ERROR_WRITING_SYSINFO_FAILED = 19, - ODBC_ERROR_REMOVE_DSN_FAILED = 20, - ODBC_ERROR_OUT_OF_MEM = 21, - ODBC_ERROR_OUTPUT_STRING_TRUNCATED = 22 -} - -extern (Windows): -BOOL ConfigDSN(HWND,WORD,LPCSTR,LPCSTR); -BOOL ConfigDSNW(HWND,WORD,LPCWSTR,LPCWSTR); -BOOL ConfigTranslator(HWND,DWORD*); -BOOL SQLConfigDataSource(HWND,WORD,LPCSTR,LPCSTR); -BOOL SQLConfigDataSourceW(HWND,WORD,LPCWSTR,LPCWSTR); -BOOL SQLCreateDataSource(HWND,LPCSTR); -BOOL SQLCreateDataSourceW(HWND,LPCWSTR); -BOOL SQLGetAvailableDrivers(LPCSTR,LPSTR,WORD,WORD*); -BOOL SQLGetAvailableDriversW(LPCWSTR,LPWSTR,WORD,WORD*); -BOOL SQLGetInstalledDrivers(LPSTR,WORD,WORD*); -BOOL SQLGetInstalledDriversW(LPWSTR,WORD,WORD*); -int SQLGetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,int,LPCSTR); -int SQLGetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,int,LPCWSTR); -BOOL SQLGetTranslator(HWND,LPSTR,WORD,WORD*,LPSTR,WORD,WORD*,DWORD*); -BOOL SQLGetTranslatorW(HWND,LPWSTR,WORD,WORD*,LPWSTR,WORD,WORD*,DWORD*); -BOOL SQLInstallDriver(LPCSTR,LPCSTR,LPSTR,WORD,WORD*); -BOOL SQLInstallDriverManager(LPSTR,WORD,WORD*); -BOOL SQLInstallDriverManagerW(LPWSTR,WORD,WORD*); -BOOL SQLInstallDriverW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); -BOOL SQLInstallODBC(HWND,LPCSTR,LPCSTR,LPCSTR); -BOOL SQLInstallODBCW(HWND,LPCWSTR,LPCWSTR,LPCWSTR); -BOOL SQLManageDataSources(HWND); -BOOL SQLRemoveDefaultDataSource(); -BOOL SQLRemoveDSNFromIni(LPCSTR); -BOOL SQLRemoveDSNFromIniW(LPCWSTR); -BOOL SQLValidDSN(LPCSTR); -BOOL SQLValidDSNW(LPCWSTR); -BOOL SQLWriteDSNToIni(LPCSTR,LPCSTR); -BOOL SQLWriteDSNToIniW(LPCWSTR,LPCWSTR); -BOOL SQLWritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR); -BOOL SQLWritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); - -static if (ODBCVER >= 0x0250) { - BOOL ConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); - BOOL ConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); - BOOL SQLConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); - BOOL SQLConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); - deprecated { - BOOL SQLInstallTranslator(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); - BOOL SQLInstallTranslatorW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); - } - BOOL SQLRemoveDriver(LPCSTR,BOOL,LPDWORD); - BOOL SQLRemoveDriverManager(LPDWORD); - BOOL SQLRemoveDriverW(LPCWSTR,BOOL,LPDWORD); - BOOL SQLRemoveTranslator(LPCSTR,LPDWORD); - BOOL SQLRemoveTranslatorW(LPCWSTR,LPDWORD); -} -static if (ODBCVER >= 0x0300) { - BOOL SQLGetConfigMode(UWORD*); - BOOL SQLInstallDriverEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); - BOOL SQLInstallDriverExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); - SQLRETURN SQLInstallerError(WORD,DWORD*,LPSTR,WORD,WORD*); - SQLRETURN SQLInstallerErrorW(WORD,DWORD*,LPWSTR,WORD,WORD*); - BOOL SQLInstallTranslatorEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); - BOOL SQLInstallTranslatorExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); - SQLRETURN SQLPostInstallerError(DWORD,LPCSTR); - SQLRETURN SQLPostInstallerErrorW(DWORD,LPCWSTR); - BOOL SQLReadFileDSN(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); - BOOL SQLReadFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); - BOOL SQLSetConfigMode(UWORD); - BOOL SQLWriteFileDSN(LPCSTR,LPCSTR,LPCSTR,LPCSTR); - BOOL SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); -} - -version (Unicode) { - alias SQLConfigDataSourceW SQLConfigDataSource; - alias SQLConfigDriverW SQLConfigDriver; - alias SQLCreateDataSourceW SQLCreateDataSource; - alias SQLGetAvailableDriversW SQLGetAvailableDrivers; - alias SQLGetInstalledDriversW SQLGetInstalledDrivers; - alias SQLGetPrivateProfileStringW SQLGetPrivateProfileString; - alias SQLGetTranslatorW SQLGetTranslator; - alias SQLInstallDriverW SQLInstallDriver; - alias SQLInstallDriverExW SQLInstallDriverEx; - alias SQLInstallDriverManagerW SQLInstallDriverManager; - alias SQLInstallerErrorW SQLInstallerError; - alias SQLInstallODBCW SQLInstallODBC; - deprecated alias SQLInstallTranslatorW SQLInstallTranslator; - alias SQLInstallTranslatorExW SQLInstallTranslatorEx; - alias SQLPostInstallerErrorW SQLPostInstallerError; - alias SQLReadFileDSNW SQLReadFileDSN; - alias SQLRemoveDriverW SQLRemoveDriver; - alias SQLRemoveDSNFromIniW SQLRemoveDSNFromIni; - alias SQLRemoveTranslatorW SQLRemoveTranslator; - alias SQLValidDSNW SQLValidDSN; - alias SQLWriteDSNToIniW SQLWriteDSNToIni; - alias SQLWriteFileDSNW SQLWriteFileDSN; - alias SQLWritePrivateProfileStringW SQLWritePrivateProfileString; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_odbcinst.d) + */ +module core.sys.windows.odbcinst; + +import core.sys.windows.sql; +private import core.sys.windows.windef; + +/* FIXME: The Unicode/Ansi functions situation is a mess. How do the xxxA + * versions of these functions fit into the scheme? + */ + +// SQLConfigDataSource() +enum : WORD { + ODBC_ADD_DSN = 1, + ODBC_CONFIG_DSN = 2, + ODBC_REMOVE_DSN = 3, + ODBC_ADD_SYS_DSN = 4, + ODBC_CONFIG_SYS_DSN = 5, + ODBC_REMOVE_SYS_DSN = 6, + ODBC_REMOVE_DEFAULT_DSN = 7 +} + +// ODBC 3.0+ +enum : WORD { + ODBC_INSTALL_INQUIRY = 1, + ODBC_INSTALL_COMPLETE = 2 +} + +// ODBC 2.5+ +enum : WORD { + ODBC_INSTALL_DRIVER = 1, + ODBC_REMOVE_DRIVER = 2, + ODBC_CONFIG_DRIVER = 3, + ODBC_CONFIG_DRIVER_MAX = 100 +} + +// ODBC 3.0+ +// SQLSetConfigMode() +enum : UWORD { + ODBC_BOTH_DSN = 0, + ODBC_USER_DSN = 1, + ODBC_SYSTEM_DSN = 2 +} + +enum : DWORD { + ODBC_ERROR_GENERAL_ERR = 1, + ODBC_ERROR_INVALID_BUFF_LEN = 2, + ODBC_ERROR_INVALID_HWND = 3, + ODBC_ERROR_INVALID_STR = 4, + ODBC_ERROR_INVALID_REQUEST_TYPE = 5, + ODBC_ERROR_COMPONENT_NOT_FOUND = 6, + ODBC_ERROR_INVALID_NAME = 7, + ODBC_ERROR_INVALID_KEYWORD_VALUE = 8, + ODBC_ERROR_INVALID_DSN = 9, + ODBC_ERROR_INVALID_INF = 10, + ODBC_ERROR_REQUEST_FAILED = 11, + ODBC_ERROR_INVALID_PATH = 12, + ODBC_ERROR_LOAD_LIB_FAILED = 13, + ODBC_ERROR_INVALID_PARAM_SEQUENCE = 14, + ODBC_ERROR_INVALID_LOG_FILE = 15, + ODBC_ERROR_USER_CANCELED = 16, + ODBC_ERROR_USAGE_UPDATE_FAILED = 17, + ODBC_ERROR_CREATE_DSN_FAILED = 18, + ODBC_ERROR_WRITING_SYSINFO_FAILED = 19, + ODBC_ERROR_REMOVE_DSN_FAILED = 20, + ODBC_ERROR_OUT_OF_MEM = 21, + ODBC_ERROR_OUTPUT_STRING_TRUNCATED = 22 +} + +extern (Windows): +BOOL ConfigDSN(HWND,WORD,LPCSTR,LPCSTR); +BOOL ConfigDSNW(HWND,WORD,LPCWSTR,LPCWSTR); +BOOL ConfigTranslator(HWND,DWORD*); +BOOL SQLConfigDataSource(HWND,WORD,LPCSTR,LPCSTR); +BOOL SQLConfigDataSourceW(HWND,WORD,LPCWSTR,LPCWSTR); +BOOL SQLCreateDataSource(HWND,LPCSTR); +BOOL SQLCreateDataSourceW(HWND,LPCWSTR); +BOOL SQLGetAvailableDrivers(LPCSTR,LPSTR,WORD,WORD*); +BOOL SQLGetAvailableDriversW(LPCWSTR,LPWSTR,WORD,WORD*); +BOOL SQLGetInstalledDrivers(LPSTR,WORD,WORD*); +BOOL SQLGetInstalledDriversW(LPWSTR,WORD,WORD*); +int SQLGetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,int,LPCSTR); +int SQLGetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,int,LPCWSTR); +BOOL SQLGetTranslator(HWND,LPSTR,WORD,WORD*,LPSTR,WORD,WORD*,DWORD*); +BOOL SQLGetTranslatorW(HWND,LPWSTR,WORD,WORD*,LPWSTR,WORD,WORD*,DWORD*); +BOOL SQLInstallDriver(LPCSTR,LPCSTR,LPSTR,WORD,WORD*); +BOOL SQLInstallDriverManager(LPSTR,WORD,WORD*); +BOOL SQLInstallDriverManagerW(LPWSTR,WORD,WORD*); +BOOL SQLInstallDriverW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); +BOOL SQLInstallODBC(HWND,LPCSTR,LPCSTR,LPCSTR); +BOOL SQLInstallODBCW(HWND,LPCWSTR,LPCWSTR,LPCWSTR); +BOOL SQLManageDataSources(HWND); +BOOL SQLRemoveDefaultDataSource(); +BOOL SQLRemoveDSNFromIni(LPCSTR); +BOOL SQLRemoveDSNFromIniW(LPCWSTR); +BOOL SQLValidDSN(LPCSTR); +BOOL SQLValidDSNW(LPCWSTR); +BOOL SQLWriteDSNToIni(LPCSTR,LPCSTR); +BOOL SQLWriteDSNToIniW(LPCWSTR,LPCWSTR); +BOOL SQLWritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR); +BOOL SQLWritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); + +static if (ODBCVER >= 0x0250) { + BOOL ConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL ConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + BOOL SQLConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL SQLConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + deprecated { + BOOL SQLInstallTranslator(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallTranslatorW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + } + BOOL SQLRemoveDriver(LPCSTR,BOOL,LPDWORD); + BOOL SQLRemoveDriverManager(LPDWORD); + BOOL SQLRemoveDriverW(LPCWSTR,BOOL,LPDWORD); + BOOL SQLRemoveTranslator(LPCSTR,LPDWORD); + BOOL SQLRemoveTranslatorW(LPCWSTR,LPDWORD); +} +static if (ODBCVER >= 0x0300) { + BOOL SQLGetConfigMode(UWORD*); + BOOL SQLInstallDriverEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallDriverExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + SQLRETURN SQLInstallerError(WORD,DWORD*,LPSTR,WORD,WORD*); + SQLRETURN SQLInstallerErrorW(WORD,DWORD*,LPWSTR,WORD,WORD*); + BOOL SQLInstallTranslatorEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallTranslatorExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + SQLRETURN SQLPostInstallerError(DWORD,LPCSTR); + SQLRETURN SQLPostInstallerErrorW(DWORD,LPCWSTR); + BOOL SQLReadFileDSN(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL SQLReadFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + BOOL SQLSetConfigMode(UWORD); + BOOL SQLWriteFileDSN(LPCSTR,LPCSTR,LPCSTR,LPCSTR); + BOOL SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +} + +version (Unicode) { + alias SQLConfigDataSourceW SQLConfigDataSource; + alias SQLConfigDriverW SQLConfigDriver; + alias SQLCreateDataSourceW SQLCreateDataSource; + alias SQLGetAvailableDriversW SQLGetAvailableDrivers; + alias SQLGetInstalledDriversW SQLGetInstalledDrivers; + alias SQLGetPrivateProfileStringW SQLGetPrivateProfileString; + alias SQLGetTranslatorW SQLGetTranslator; + alias SQLInstallDriverW SQLInstallDriver; + alias SQLInstallDriverExW SQLInstallDriverEx; + alias SQLInstallDriverManagerW SQLInstallDriverManager; + alias SQLInstallerErrorW SQLInstallerError; + alias SQLInstallODBCW SQLInstallODBC; + deprecated alias SQLInstallTranslatorW SQLInstallTranslator; + alias SQLInstallTranslatorExW SQLInstallTranslatorEx; + alias SQLPostInstallerErrorW SQLPostInstallerError; + alias SQLReadFileDSNW SQLReadFileDSN; + alias SQLRemoveDriverW SQLRemoveDriver; + alias SQLRemoveDSNFromIniW SQLRemoveDSNFromIni; + alias SQLRemoveTranslatorW SQLRemoveTranslator; + alias SQLValidDSNW SQLValidDSN; + alias SQLWriteDSNToIniW SQLWriteDSNToIni; + alias SQLWriteFileDSNW SQLWriteFileDSN; + alias SQLWritePrivateProfileStringW SQLWritePrivateProfileString; +} diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index be818f0eb6..b0f6e3c27f 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -1,361 +1,361 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ole.d) - */ -module core.sys.windows.ole; - -private import core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.uuid; - -alias LPCSTR OLE_LPCSTR; - -/+#define LRESULT LONG -#define HGLOBAL HANDLE+/ - -enum { - OT_LINK = 1, - OT_EMBEDDED, - OT_STATIC -} - -const OLEVERB_PRIMARY = 0; -const OF_SET = 1; -const OF_GET = 2; -const OF_HANDLER = 4; - -struct OLETARGETDEVICE { - USHORT otdDeviceNameOffset; - USHORT otdDriverNameOffset; - USHORT otdPortNameOffset; - USHORT otdExtDevmodeOffset; - USHORT otdExtDevmodeSize; - USHORT otdEnvironmentOffset; - USHORT otdEnvironmentSize; - BYTE _otdData; - BYTE* otdData() { return &_otdData; } -} -alias OLETARGETDEVICE* LPOLETARGETDEVICE; - -enum OLESTATUS { - OLE_OK, - OLE_WAIT_FOR_RELEASE, - OLE_BUSY, - OLE_ERROR_PROTECT_ONLY, - OLE_ERROR_MEMORY, - OLE_ERROR_STREAM, - OLE_ERROR_STATIC, - OLE_ERROR_BLANK, - OLE_ERROR_DRAW, - OLE_ERROR_METAFILE, - OLE_ERROR_ABORT, - OLE_ERROR_CLIPBOARD, - OLE_ERROR_FORMAT, - OLE_ERROR_OBJECT, - OLE_ERROR_OPTION, - OLE_ERROR_PROTOCOL, - OLE_ERROR_ADDRESS, - OLE_ERROR_NOT_EQUAL, - OLE_ERROR_HANDLE, - OLE_ERROR_GENERIC, - OLE_ERROR_CLASS, - OLE_ERROR_SYNTAX, - OLE_ERROR_DATATYPE, - OLE_ERROR_PALETTE, - OLE_ERROR_NOT_LINK, - OLE_ERROR_NOT_EMPTY, - OLE_ERROR_SIZE, - OLE_ERROR_DRIVE, - OLE_ERROR_NETWORK, - OLE_ERROR_NAME, - OLE_ERROR_TEMPLATE, - OLE_ERROR_NEW, - OLE_ERROR_EDIT, - OLE_ERROR_OPEN, - OLE_ERROR_NOT_OPEN, - OLE_ERROR_LAUNCH, - OLE_ERROR_COMM, - OLE_ERROR_TERMINATE, - OLE_ERROR_COMMAND, - OLE_ERROR_SHOW, - OLE_ERROR_DOVERB, - OLE_ERROR_ADVISE_NATIVE, - OLE_ERROR_ADVISE_PICT, - OLE_ERROR_ADVISE_RENAME, - OLE_ERROR_POKE_NATIVE, - OLE_ERROR_REQUEST_NATIVE, - OLE_ERROR_REQUEST_PICT, - OLE_ERROR_SERVER_BLOCKED, - OLE_ERROR_REGISTRATION, - OLE_ERROR_ALREADY_REGISTERED, - OLE_ERROR_TASK, - OLE_ERROR_OUTOFDATE, - OLE_ERROR_CANT_UPDATE_CLIENT, - OLE_ERROR_UPDATE, - OLE_ERROR_SETDATA_FORMAT, - OLE_ERROR_STATIC_FROM_OTHER_OS, - OLE_ERROR_FILE_VER, - OLE_WARN_DELETE_DATA = 1000 -} - -enum OLE_NOTIFICATION { - OLE_CHANGED, - OLE_SAVED, - OLE_CLOSED, - OLE_RENAMED, - OLE_QUERY_PAINT, - OLE_RELEASE, - OLE_QUERY_RETRY -} - -enum OLE_RELEASE_METHOD { - OLE_NONE, - OLE_DELETE, - OLE_LNKPASTE, - OLE_EMBPASTE, - OLE_SHOW, - OLE_RUN, - OLE_ACTIVATE, - OLE_UPDATE, - OLE_CLOSE, - OLE_RECONNECT, - OLE_SETUPDATEOPTIONS, - OLE_SERVERUNLAUNCH, - OLE_LOADFROMSTREAM, - OLE_SETDATA, - OLE_REQUESTDATA, - OLE_OTHER, - OLE_CREATE, - OLE_CREATEFROMTEMPLATE, - OLE_CREATELINKFROMFILE, - OLE_COPYFROMLNK, - OLE_CREATEFROMFILE, - OLE_CREATEINVISIBLE -} - -enum OLEOPT_RENDER { - olerender_none, - olerender_draw, - olerender_format -} - -alias WORD OLECLIPFORMAT; - -enum OLEOPT_UPDATE { - oleupdate_always, - oleupdate_onsave, - oleupdate_oncall, -// #ifdef OLE_INTERNAL - oleupdate_onclose -// #endif -} - -mixin DECLARE_HANDLE!("HOBJECT"); -alias LONG LHSERVER, LHCLIENTDOC, LHSERVERDOC; - -struct OLEOBJECTVTBL { - extern (Windows) { - void* function(LPOLEOBJECT, OLE_LPCSTR) QueryProtocol; - OLESTATUS function(LPOLEOBJECT) Release; - OLESTATUS function(LPOLEOBJECT, BOOL) Show; - OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL) DoVerb; - OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*) GetData; - OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE) SetData; - OLESTATUS function(LPOLEOBJECT, HGLOBAL) SetTargetDevice; - OLESTATUS function(LPOLEOBJECT, RECT*) SetBounds; - OLECLIPFORMAT function(LPOLEOBJECT, OLECLIPFORMAT) EnumFormats; - OLESTATUS function(LPOLEOBJECT, LOGPALETTE*) SetColorScheme; -//#ifndef SERVERONLY - OLESTATUS function(LPOLEOBJECT) Delete; - OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; - OLESTATUS function(LPOLEOBJECT, LPOLESTREAM) SaveToStream; - OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, - LPOLEOBJECT*) Clone; - OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, - LPOLEOBJECT*) CopyFromLink; - OLESTATUS function(LPOLEOBJECT, LPOLEOBJECT) Equal; - OLESTATUS function(LPOLEOBJECT) CopyToClipboard; - OLESTATUS function(LPOLEOBJECT, HDC, RECT*, RECT*, HDC) Draw; - OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, RECT*) - Activate; - OLESTATUS function(LPOLEOBJECT, HGLOBAL, UINT) Execute; - OLESTATUS function(LPOLEOBJECT) Close; - OLESTATUS function(LPOLEOBJECT) Update; - OLESTATUS function(LPOLEOBJECT) Reconnect; - OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, - OLE_LPCSTR, LPOLEOBJECT*) ObjectConvert; - OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE*) GetLinkUpdateOptions; - OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE) SetLinkUpdateOptions; - OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR) Rename; - OLESTATUS function(LPOLEOBJECT, LPSTR, UINT*) QueryName; - OLESTATUS function(LPOLEOBJECT, LONG*) QueryType; - OLESTATUS function(LPOLEOBJECT, RECT*) QueryBounds; - OLESTATUS function(LPOLEOBJECT, DWORD*) QuerySize; - OLESTATUS function(LPOLEOBJECT) QueryOpen; - OLESTATUS function(LPOLEOBJECT) QueryOutOfDate; - OLESTATUS function(LPOLEOBJECT) QueryReleaseStatus; - OLESTATUS function(LPOLEOBJECT) QueryReleaseError; - OLE_RELEASE_METHOD function(LPOLEOBJECT) QueryReleaseMethod; - OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT) RequestData; - OLESTATUS function(LPOLEOBJECT, UINT, LONG*) ObjectLong; - OLESTATUS function(LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL) ChangeData; -//#endif - } -} -alias OLEOBJECTVTBL* LPOLEOBJECTVTBL; - -//#ifndef OLE_INTERNAL -struct OLEOBJECT { - LPOLEOBJECTVTBL lpvtbl; -} -alias OLEOBJECT* LPOLEOBJECT; -//#endif - -struct OLECLIENTVTBL { - int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack; -} -alias OLECLIENTVTBL* LPOLECLIENTVTBL; - -struct OLECLIENT { - LPOLECLIENTVTBL lpvtbl; -} -alias OLECLIENT* LPOLECLIENT; - -struct OLESTREAMVTBL { - DWORD function(LPOLESTREAM, void*, DWORD) Get; - DWORD function(LPOLESTREAM, void*, DWORD) Put; -} -alias OLESTREAMVTBL* LPOLESTREAMVTBL; - -struct OLESTREAM { - LPOLESTREAMVTBL lpstbl; -} -alias OLESTREAM* LPOLESTREAM; - -enum OLE_SERVER_USE { - OLE_SERVER_MULTI, - OLE_SERVER_SINGLE -} - -struct OLESERVERVTBL { - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC*) - Open; - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, - LPOLESERVERDOC*) Create; - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, - OLE_LPCSTR, LPOLESERVERDOC*) CreateFromTemplate; - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, - LPOLESERVERDOC*) Edit; - OLESTATUS function(LPOLESERVER) Exit; - OLESTATUS function(LPOLESERVER) Release; - OLESTATUS function(LPOLESERVER, HGLOBAL) Execute; -} -alias TypeDef!(OLESERVERVTBL*) LPOLESERVERVTBL; - -struct OLESERVER { - LPOLESERVERVTBL lpvtbl; -} -alias OLESERVER* LPOLESERVER; - -struct OLESERVERDOCVTBL { - OLESTATUS function(LPOLESERVERDOC) Save; - OLESTATUS function(LPOLESERVERDOC) Close; - OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; - OLESTATUS function(LPOLESERVERDOC, RECT*) SetDocDimensions; - OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT*, LPOLECLIENT) - GetObject; - OLESTATUS function(LPOLESERVERDOC) Release; - OLESTATUS function(LPOLESERVERDOC, LOGPALETTE*) SetColorScheme; - OLESTATUS function(LPOLESERVERDOC, HGLOBAL) Execute; -} -alias OLESERVERDOCVTBL* LPOLESERVERDOCVTBL; - -struct OLESERVERDOC { - LPOLESERVERDOCVTBL lpvtbl; -} -alias OLESERVERDOC* LPOLESERVERDOC; - -extern (Windows) { - OLESTATUS OleDelete(LPOLEOBJECT); - OLESTATUS OleRelease(LPOLEOBJECT); - OLESTATUS OleSaveToStream(LPOLEOBJECT, LPOLESTREAM); - OLESTATUS OleEqual(LPOLEOBJECT, LPOLEOBJECT); - OLESTATUS OleCopyToClipboard(LPOLEOBJECT); - OLESTATUS OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR); - OLESTATUS OleSetTargetDevice(LPOLEOBJECT, HGLOBAL); - OLESTATUS OleSetBounds(LPOLEOBJECT, LPCRECT); - OLESTATUS OleSetColorScheme(LPOLEOBJECT, const(LOGPALETTE)*); - OLESTATUS OleQueryBounds(LPOLEOBJECT, RECT*); - OLESTATUS OleQuerySize(LPOLEOBJECT, DWORD*); - OLESTATUS OleDraw(LPOLEOBJECT, HDC, LPCRECT, LPCRECT, HDC); - OLESTATUS OleQueryOpen(LPOLEOBJECT); - OLESTATUS OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPCRECT); - OLESTATUS OleExecute(LPOLEOBJECT, HGLOBAL, UINT); - OLESTATUS OleClose(LPOLEOBJECT); - OLESTATUS OleUpdate(LPOLEOBJECT); - OLESTATUS OleReconnect(LPOLEOBJECT); - OLESTATUS OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE*); - OLESTATUS OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE); - void* OleQueryProtocol(LPOLEOBJECT, LPCSTR); - OLESTATUS OleQueryReleaseStatus(LPOLEOBJECT); - OLESTATUS OleQueryReleaseError(LPOLEOBJECT); - OLE_RELEASE_METHOD OleQueryReleaseMethod(LPOLEOBJECT); - OLESTATUS OleQueryType(LPOLEOBJECT, LONG*); - DWORD OleQueryClientVersion(); - DWORD OleQueryServerVersion(); - OLECLIPFORMAT OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT); - OLESTATUS OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*); - OLESTATUS OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE); - OLESTATUS OleQueryOutOfDate(LPOLEOBJECT); - OLESTATUS OleRequestData(LPOLEOBJECT, OLECLIPFORMAT); - OLESTATUS OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, - LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, - LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*); - OLESTATUS OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL); - OLESTATUS OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*); - OLESTATUS OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*); - OLESTATUS OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*); - OLESTATUS OleRename(LPOLEOBJECT, LPCSTR); - OLESTATUS OleQueryName(LPOLEOBJECT, LPSTR, UINT*); - OLESTATUS OleRevokeObject(LPOLECLIENT); - BOOL OleIsDcMeta(HDC); - OLESTATUS OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC*); - OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); - OLESTATUS OleRenameClientDoc(LHCLIENTDOC, LPCSTR); - OLESTATUS OleRevertClientDoc(LHCLIENTDOC); - OLESTATUS OleSavedClientDoc(LHCLIENTDOC); - OLESTATUS OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT*); - OLESTATUS OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER*, HINSTANCE, - OLE_SERVER_USE); - OLESTATUS OleRevokeServer(LHSERVER); - OLESTATUS OleBlockServer(LHSERVER); - OLESTATUS OleUnblockServer(LHSERVER, BOOL*); - OLESTATUS OleLockServer(LPOLEOBJECT, LHSERVER*); - OLESTATUS OleUnlockServer(LHSERVER); - OLESTATUS OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC, - LHSERVERDOC*); - OLESTATUS OleRevokeServerDoc(LHSERVERDOC); - OLESTATUS OleRenameServerDoc(LHSERVERDOC, LPCSTR); - OLESTATUS OleRevertServerDoc(LHSERVERDOC); - OLESTATUS OleSavedServerDoc(LHSERVERDOC); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ole.d) + */ +module core.sys.windows.ole; + +private import core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.uuid; + +alias LPCSTR OLE_LPCSTR; + +/+#define LRESULT LONG +#define HGLOBAL HANDLE+/ + +enum { + OT_LINK = 1, + OT_EMBEDDED, + OT_STATIC +} + +const OLEVERB_PRIMARY = 0; +const OF_SET = 1; +const OF_GET = 2; +const OF_HANDLER = 4; + +struct OLETARGETDEVICE { + USHORT otdDeviceNameOffset; + USHORT otdDriverNameOffset; + USHORT otdPortNameOffset; + USHORT otdExtDevmodeOffset; + USHORT otdExtDevmodeSize; + USHORT otdEnvironmentOffset; + USHORT otdEnvironmentSize; + BYTE _otdData; + BYTE* otdData() { return &_otdData; } +} +alias OLETARGETDEVICE* LPOLETARGETDEVICE; + +enum OLESTATUS { + OLE_OK, + OLE_WAIT_FOR_RELEASE, + OLE_BUSY, + OLE_ERROR_PROTECT_ONLY, + OLE_ERROR_MEMORY, + OLE_ERROR_STREAM, + OLE_ERROR_STATIC, + OLE_ERROR_BLANK, + OLE_ERROR_DRAW, + OLE_ERROR_METAFILE, + OLE_ERROR_ABORT, + OLE_ERROR_CLIPBOARD, + OLE_ERROR_FORMAT, + OLE_ERROR_OBJECT, + OLE_ERROR_OPTION, + OLE_ERROR_PROTOCOL, + OLE_ERROR_ADDRESS, + OLE_ERROR_NOT_EQUAL, + OLE_ERROR_HANDLE, + OLE_ERROR_GENERIC, + OLE_ERROR_CLASS, + OLE_ERROR_SYNTAX, + OLE_ERROR_DATATYPE, + OLE_ERROR_PALETTE, + OLE_ERROR_NOT_LINK, + OLE_ERROR_NOT_EMPTY, + OLE_ERROR_SIZE, + OLE_ERROR_DRIVE, + OLE_ERROR_NETWORK, + OLE_ERROR_NAME, + OLE_ERROR_TEMPLATE, + OLE_ERROR_NEW, + OLE_ERROR_EDIT, + OLE_ERROR_OPEN, + OLE_ERROR_NOT_OPEN, + OLE_ERROR_LAUNCH, + OLE_ERROR_COMM, + OLE_ERROR_TERMINATE, + OLE_ERROR_COMMAND, + OLE_ERROR_SHOW, + OLE_ERROR_DOVERB, + OLE_ERROR_ADVISE_NATIVE, + OLE_ERROR_ADVISE_PICT, + OLE_ERROR_ADVISE_RENAME, + OLE_ERROR_POKE_NATIVE, + OLE_ERROR_REQUEST_NATIVE, + OLE_ERROR_REQUEST_PICT, + OLE_ERROR_SERVER_BLOCKED, + OLE_ERROR_REGISTRATION, + OLE_ERROR_ALREADY_REGISTERED, + OLE_ERROR_TASK, + OLE_ERROR_OUTOFDATE, + OLE_ERROR_CANT_UPDATE_CLIENT, + OLE_ERROR_UPDATE, + OLE_ERROR_SETDATA_FORMAT, + OLE_ERROR_STATIC_FROM_OTHER_OS, + OLE_ERROR_FILE_VER, + OLE_WARN_DELETE_DATA = 1000 +} + +enum OLE_NOTIFICATION { + OLE_CHANGED, + OLE_SAVED, + OLE_CLOSED, + OLE_RENAMED, + OLE_QUERY_PAINT, + OLE_RELEASE, + OLE_QUERY_RETRY +} + +enum OLE_RELEASE_METHOD { + OLE_NONE, + OLE_DELETE, + OLE_LNKPASTE, + OLE_EMBPASTE, + OLE_SHOW, + OLE_RUN, + OLE_ACTIVATE, + OLE_UPDATE, + OLE_CLOSE, + OLE_RECONNECT, + OLE_SETUPDATEOPTIONS, + OLE_SERVERUNLAUNCH, + OLE_LOADFROMSTREAM, + OLE_SETDATA, + OLE_REQUESTDATA, + OLE_OTHER, + OLE_CREATE, + OLE_CREATEFROMTEMPLATE, + OLE_CREATELINKFROMFILE, + OLE_COPYFROMLNK, + OLE_CREATEFROMFILE, + OLE_CREATEINVISIBLE +} + +enum OLEOPT_RENDER { + olerender_none, + olerender_draw, + olerender_format +} + +alias WORD OLECLIPFORMAT; + +enum OLEOPT_UPDATE { + oleupdate_always, + oleupdate_onsave, + oleupdate_oncall, +// #ifdef OLE_INTERNAL + oleupdate_onclose +// #endif +} + +mixin DECLARE_HANDLE!("HOBJECT"); +alias LONG LHSERVER, LHCLIENTDOC, LHSERVERDOC; + +struct OLEOBJECTVTBL { + extern (Windows) { + void* function(LPOLEOBJECT, OLE_LPCSTR) QueryProtocol; + OLESTATUS function(LPOLEOBJECT) Release; + OLESTATUS function(LPOLEOBJECT, BOOL) Show; + OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL) DoVerb; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*) GetData; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE) SetData; + OLESTATUS function(LPOLEOBJECT, HGLOBAL) SetTargetDevice; + OLESTATUS function(LPOLEOBJECT, RECT*) SetBounds; + OLECLIPFORMAT function(LPOLEOBJECT, OLECLIPFORMAT) EnumFormats; + OLESTATUS function(LPOLEOBJECT, LOGPALETTE*) SetColorScheme; +//#ifndef SERVERONLY + OLESTATUS function(LPOLEOBJECT) Delete; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; + OLESTATUS function(LPOLEOBJECT, LPOLESTREAM) SaveToStream; + OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, + LPOLEOBJECT*) Clone; + OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, + LPOLEOBJECT*) CopyFromLink; + OLESTATUS function(LPOLEOBJECT, LPOLEOBJECT) Equal; + OLESTATUS function(LPOLEOBJECT) CopyToClipboard; + OLESTATUS function(LPOLEOBJECT, HDC, RECT*, RECT*, HDC) Draw; + OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, RECT*) + Activate; + OLESTATUS function(LPOLEOBJECT, HGLOBAL, UINT) Execute; + OLESTATUS function(LPOLEOBJECT) Close; + OLESTATUS function(LPOLEOBJECT) Update; + OLESTATUS function(LPOLEOBJECT) Reconnect; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, + OLE_LPCSTR, LPOLEOBJECT*) ObjectConvert; + OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE*) GetLinkUpdateOptions; + OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE) SetLinkUpdateOptions; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR) Rename; + OLESTATUS function(LPOLEOBJECT, LPSTR, UINT*) QueryName; + OLESTATUS function(LPOLEOBJECT, LONG*) QueryType; + OLESTATUS function(LPOLEOBJECT, RECT*) QueryBounds; + OLESTATUS function(LPOLEOBJECT, DWORD*) QuerySize; + OLESTATUS function(LPOLEOBJECT) QueryOpen; + OLESTATUS function(LPOLEOBJECT) QueryOutOfDate; + OLESTATUS function(LPOLEOBJECT) QueryReleaseStatus; + OLESTATUS function(LPOLEOBJECT) QueryReleaseError; + OLE_RELEASE_METHOD function(LPOLEOBJECT) QueryReleaseMethod; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT) RequestData; + OLESTATUS function(LPOLEOBJECT, UINT, LONG*) ObjectLong; + OLESTATUS function(LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL) ChangeData; +//#endif + } +} +alias OLEOBJECTVTBL* LPOLEOBJECTVTBL; + +//#ifndef OLE_INTERNAL +struct OLEOBJECT { + LPOLEOBJECTVTBL lpvtbl; +} +alias OLEOBJECT* LPOLEOBJECT; +//#endif + +struct OLECLIENTVTBL { + int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack; +} +alias OLECLIENTVTBL* LPOLECLIENTVTBL; + +struct OLECLIENT { + LPOLECLIENTVTBL lpvtbl; +} +alias OLECLIENT* LPOLECLIENT; + +struct OLESTREAMVTBL { + DWORD function(LPOLESTREAM, void*, DWORD) Get; + DWORD function(LPOLESTREAM, void*, DWORD) Put; +} +alias OLESTREAMVTBL* LPOLESTREAMVTBL; + +struct OLESTREAM { + LPOLESTREAMVTBL lpstbl; +} +alias OLESTREAM* LPOLESTREAM; + +enum OLE_SERVER_USE { + OLE_SERVER_MULTI, + OLE_SERVER_SINGLE +} + +struct OLESERVERVTBL { + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC*) + Open; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + LPOLESERVERDOC*) Create; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + OLE_LPCSTR, LPOLESERVERDOC*) CreateFromTemplate; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + LPOLESERVERDOC*) Edit; + OLESTATUS function(LPOLESERVER) Exit; + OLESTATUS function(LPOLESERVER) Release; + OLESTATUS function(LPOLESERVER, HGLOBAL) Execute; +} +alias TypeDef!(OLESERVERVTBL*) LPOLESERVERVTBL; + +struct OLESERVER { + LPOLESERVERVTBL lpvtbl; +} +alias OLESERVER* LPOLESERVER; + +struct OLESERVERDOCVTBL { + OLESTATUS function(LPOLESERVERDOC) Save; + OLESTATUS function(LPOLESERVERDOC) Close; + OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; + OLESTATUS function(LPOLESERVERDOC, RECT*) SetDocDimensions; + OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT*, LPOLECLIENT) + GetObject; + OLESTATUS function(LPOLESERVERDOC) Release; + OLESTATUS function(LPOLESERVERDOC, LOGPALETTE*) SetColorScheme; + OLESTATUS function(LPOLESERVERDOC, HGLOBAL) Execute; +} +alias OLESERVERDOCVTBL* LPOLESERVERDOCVTBL; + +struct OLESERVERDOC { + LPOLESERVERDOCVTBL lpvtbl; +} +alias OLESERVERDOC* LPOLESERVERDOC; + +extern (Windows) { + OLESTATUS OleDelete(LPOLEOBJECT); + OLESTATUS OleRelease(LPOLEOBJECT); + OLESTATUS OleSaveToStream(LPOLEOBJECT, LPOLESTREAM); + OLESTATUS OleEqual(LPOLEOBJECT, LPOLEOBJECT); + OLESTATUS OleCopyToClipboard(LPOLEOBJECT); + OLESTATUS OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR); + OLESTATUS OleSetTargetDevice(LPOLEOBJECT, HGLOBAL); + OLESTATUS OleSetBounds(LPOLEOBJECT, LPCRECT); + OLESTATUS OleSetColorScheme(LPOLEOBJECT, const(LOGPALETTE)*); + OLESTATUS OleQueryBounds(LPOLEOBJECT, RECT*); + OLESTATUS OleQuerySize(LPOLEOBJECT, DWORD*); + OLESTATUS OleDraw(LPOLEOBJECT, HDC, LPCRECT, LPCRECT, HDC); + OLESTATUS OleQueryOpen(LPOLEOBJECT); + OLESTATUS OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPCRECT); + OLESTATUS OleExecute(LPOLEOBJECT, HGLOBAL, UINT); + OLESTATUS OleClose(LPOLEOBJECT); + OLESTATUS OleUpdate(LPOLEOBJECT); + OLESTATUS OleReconnect(LPOLEOBJECT); + OLESTATUS OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE*); + OLESTATUS OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE); + void* OleQueryProtocol(LPOLEOBJECT, LPCSTR); + OLESTATUS OleQueryReleaseStatus(LPOLEOBJECT); + OLESTATUS OleQueryReleaseError(LPOLEOBJECT); + OLE_RELEASE_METHOD OleQueryReleaseMethod(LPOLEOBJECT); + OLESTATUS OleQueryType(LPOLEOBJECT, LONG*); + DWORD OleQueryClientVersion(); + DWORD OleQueryServerVersion(); + OLECLIPFORMAT OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT); + OLESTATUS OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*); + OLESTATUS OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE); + OLESTATUS OleQueryOutOfDate(LPOLEOBJECT); + OLESTATUS OleRequestData(LPOLEOBJECT, OLECLIPFORMAT); + OLESTATUS OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, + LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, + LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL); + OLESTATUS OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*); + OLESTATUS OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleRename(LPOLEOBJECT, LPCSTR); + OLESTATUS OleQueryName(LPOLEOBJECT, LPSTR, UINT*); + OLESTATUS OleRevokeObject(LPOLECLIENT); + BOOL OleIsDcMeta(HDC); + OLESTATUS OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC*); + OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); + OLESTATUS OleRenameClientDoc(LHCLIENTDOC, LPCSTR); + OLESTATUS OleRevertClientDoc(LHCLIENTDOC); + OLESTATUS OleSavedClientDoc(LHCLIENTDOC); + OLESTATUS OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT*); + OLESTATUS OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER*, HINSTANCE, + OLE_SERVER_USE); + OLESTATUS OleRevokeServer(LHSERVER); + OLESTATUS OleBlockServer(LHSERVER); + OLESTATUS OleUnblockServer(LHSERVER, BOOL*); + OLESTATUS OleLockServer(LPOLEOBJECT, LHSERVER*); + OLESTATUS OleUnlockServer(LHSERVER); + OLESTATUS OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC, + LHSERVERDOC*); + OLESTATUS OleRevokeServerDoc(LHSERVERDOC); + OLESTATUS OleRenameServerDoc(LHSERVERDOC, LPCSTR); + OLESTATUS OleRevertServerDoc(LHSERVERDOC); + OLESTATUS OleSavedServerDoc(LHSERVERDOC); +} diff --git a/src/core/sys/windows/ole2.d b/src/core/sys/windows/ole2.d index 7211e9c796..60308c0411 100644 --- a/src/core/sys/windows/ole2.d +++ b/src/core/sys/windows/ole2.d @@ -1,117 +1,117 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ole2.d) - */ -module core.sys.windows.ole2; -pragma(lib, "ole32"); - -public import core.sys.windows.basetyps, core.sys.windows.objbase, core.sys.windows.oleauto, core.sys.windows.olectlid, - core.sys.windows.oleidl, core.sys.windows.unknwn, core.sys.windows.winerror, core.sys.windows.uuid; -private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.windows.windef, core.sys.windows.wtypes; -private import core.sys.windows.winuser; // for LPMSG - -const E_DRAW = VIEW_E_DRAW; - -const DATA_E_FORMATETC = DV_E_FORMATETC; - -enum { - OLEIVERB_PRIMARY = 0, - OLEIVERB_SHOW = -1, - OLEIVERB_OPEN = -2, - OLEIVERB_HIDE = -3, - OLEIVERB_UIACTIVATE = -4, - OLEIVERB_INPLACEACTIVATE = -5, - OLEIVERB_DISCARDUNDOSTATE = -6 -} - -const EMBDHLP_INPROC_HANDLER = 0x0000L; -const EMBDHLP_INPROC_SERVER = 0x0001L; -const EMBDHLP_CREATENOW = 0x00000000L; -const EMBDHLP_DELAYCREATE = 0x00010000L; - -align(8): -struct OLESTREAM { - LPOLESTREAMVTBL lpstbl; -} -alias OLESTREAM* LPOLESTREAM; - -extern (Windows) { - struct OLESTREAMVTBL { - DWORD function (LPOLESTREAM, void*, DWORD) Get; - DWORD function (LPOLESTREAM, const(void)*, DWORD) Put; - } -} -alias OLESTREAMVTBL* LPOLESTREAMVTBL; - -extern (Windows) { - HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); - DWORD OleBuildVersion(); - HRESULT ReadClassStg(LPSTORAGE, CLSID*); - HRESULT WriteClassStg(LPSTORAGE, REFCLSID); - HRESULT ReadClassStm(LPSTREAM, CLSID*); - HRESULT WriteClassStm(LPSTREAM, REFCLSID); - HRESULT WriteFmtUserTypeStg(LPSTORAGE, CLIPFORMAT, LPOLESTR); - HRESULT ReadFmtUserTypeStg(LPSTORAGE, CLIPFORMAT*, LPOLESTR*); - HRESULT OleInitialize(PVOID); - void OleUninitialize(); - HRESULT OleQueryLinkFromData(LPDATAOBJECT); - HRESULT OleQueryCreateFromData(LPDATAOBJECT); - HRESULT OleCreate(REFCLSID, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateLinkFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateStaticFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateLink(LPMONIKER, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateLinkToFile(LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateFromFile(REFCLSID, LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleLoad(LPSTORAGE, REFIID, LPOLECLIENTSITE, PVOID*); - HRESULT OleSave(LPPERSISTSTORAGE, LPSTORAGE, BOOL); - HRESULT OleLoadFromStream(LPSTREAM, REFIID, PVOID*); - HRESULT OleSaveToStream(LPPERSISTSTREAM, LPSTREAM); - HRESULT OleSetContainedObject(LPUNKNOWN, BOOL); - HRESULT OleNoteObjectVisible(LPUNKNOWN, BOOL); - HRESULT RegisterDragDrop(HWND, LPDROPTARGET); - HRESULT RevokeDragDrop(HWND); - HRESULT DoDragDrop(LPDATAOBJECT, LPDROPSOURCE, DWORD, PDWORD); - HRESULT OleSetClipboard(LPDATAOBJECT); - HRESULT OleGetClipboard(LPDATAOBJECT*); - HRESULT OleFlushClipboard(); - HRESULT OleIsCurrentClipboard(LPDATAOBJECT); - HOLEMENU OleCreateMenuDescriptor(HMENU, LPOLEMENUGROUPWIDTHS); - HRESULT OleSetMenuDescriptor(HOLEMENU, HWND, HWND, LPOLEINPLACEFRAME, LPOLEINPLACEACTIVEOBJECT); - HRESULT OleDestroyMenuDescriptor(HOLEMENU); - HRESULT OleTranslateAccelerator(LPOLEINPLACEFRAME, LPOLEINPLACEFRAMEINFO, LPMSG); - HANDLE OleDuplicateData(HANDLE, CLIPFORMAT, UINT); - HRESULT OleDraw(LPUNKNOWN, DWORD, HDC, LPCRECT); - HRESULT OleRun(LPUNKNOWN); - BOOL OleIsRunning(LPOLEOBJECT); - HRESULT OleLockRunning(LPUNKNOWN, BOOL, BOOL); - void ReleaseStgMedium(LPSTGMEDIUM); - HRESULT CreateOleAdviseHolder(LPOLEADVISEHOLDER*); - HRESULT OleCreateDefaultHandler(REFCLSID, LPUNKNOWN, REFIID, PVOID*); - HRESULT OleCreateEmbeddingHelper(REFCLSID, LPUNKNOWN, DWORD, LPCLASSFACTORY, REFIID, PVOID*); - BOOL IsAccelerator(HACCEL, int, LPMSG, WORD*); - HGLOBAL OleGetIconOfFile(LPOLESTR, BOOL); - HGLOBAL OleGetIconOfClass(REFCLSID, LPOLESTR, BOOL); - HGLOBAL OleMetafilePictFromIconAndLabel(HICON, LPOLESTR, LPOLESTR, UINT); - HRESULT OleRegGetUserType(REFCLSID, DWORD, LPOLESTR*); - HRESULT OleRegGetMiscStatus(REFCLSID, DWORD, DWORD*); - HRESULT OleRegEnumFormatEtc (REFCLSID, DWORD, LPENUMFORMATETC*); - HRESULT OleRegEnumVerbs (REFCLSID, LPENUMOLEVERB*); - HRESULT OleConvertOLESTREAMToIStorage(LPOLESTREAM, LPSTORAGE, const(DVTARGETDEVICE)*); - HRESULT OleConvertIStorageToOLESTREAM(LPSTORAGE, LPOLESTREAM); - HRESULT GetHGlobalFromILockBytes(LPLOCKBYTES, HGLOBAL*); - HRESULT CreateILockBytesOnHGlobal(HGLOBAL, BOOL, LPLOCKBYTES*); - HRESULT GetHGlobalFromStream(LPSTREAM, HGLOBAL*); - HRESULT CreateStreamOnHGlobal(HGLOBAL, BOOL, LPSTREAM*); - HRESULT OleDoAutoConvert(LPSTORAGE, LPCLSID); - HRESULT OleGetAutoConvert(REFCLSID, LPCLSID); - HRESULT OleSetAutoConvert(REFCLSID, REFCLSID); - HRESULT GetConvertStg(LPSTORAGE); - HRESULT SetConvertStg(LPSTORAGE, BOOL); - HRESULT OleConvertIStorageToOLESTREAMEx(LPSTORAGE, CLIPFORMAT, LONG, LONG, DWORD, LPSTGMEDIUM, LPOLESTREAM); - HRESULT OleConvertOLESTREAMToIStorageEx(LPOLESTREAM, LPSTORAGE, CLIPFORMAT*, LONG*, LONG*, DWORD*, LPSTGMEDIUM); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ole2.d) + */ +module core.sys.windows.ole2; +pragma(lib, "ole32"); + +public import core.sys.windows.basetyps, core.sys.windows.objbase, core.sys.windows.oleauto, core.sys.windows.olectlid, + core.sys.windows.oleidl, core.sys.windows.unknwn, core.sys.windows.winerror, core.sys.windows.uuid; +private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.windows.windef, core.sys.windows.wtypes; +private import core.sys.windows.winuser; // for LPMSG + +const E_DRAW = VIEW_E_DRAW; + +const DATA_E_FORMATETC = DV_E_FORMATETC; + +enum { + OLEIVERB_PRIMARY = 0, + OLEIVERB_SHOW = -1, + OLEIVERB_OPEN = -2, + OLEIVERB_HIDE = -3, + OLEIVERB_UIACTIVATE = -4, + OLEIVERB_INPLACEACTIVATE = -5, + OLEIVERB_DISCARDUNDOSTATE = -6 +} + +const EMBDHLP_INPROC_HANDLER = 0x0000L; +const EMBDHLP_INPROC_SERVER = 0x0001L; +const EMBDHLP_CREATENOW = 0x00000000L; +const EMBDHLP_DELAYCREATE = 0x00010000L; + +align(8): +struct OLESTREAM { + LPOLESTREAMVTBL lpstbl; +} +alias OLESTREAM* LPOLESTREAM; + +extern (Windows) { + struct OLESTREAMVTBL { + DWORD function (LPOLESTREAM, void*, DWORD) Get; + DWORD function (LPOLESTREAM, const(void)*, DWORD) Put; + } +} +alias OLESTREAMVTBL* LPOLESTREAMVTBL; + +extern (Windows) { + HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); + DWORD OleBuildVersion(); + HRESULT ReadClassStg(LPSTORAGE, CLSID*); + HRESULT WriteClassStg(LPSTORAGE, REFCLSID); + HRESULT ReadClassStm(LPSTREAM, CLSID*); + HRESULT WriteClassStm(LPSTREAM, REFCLSID); + HRESULT WriteFmtUserTypeStg(LPSTORAGE, CLIPFORMAT, LPOLESTR); + HRESULT ReadFmtUserTypeStg(LPSTORAGE, CLIPFORMAT*, LPOLESTR*); + HRESULT OleInitialize(PVOID); + void OleUninitialize(); + HRESULT OleQueryLinkFromData(LPDATAOBJECT); + HRESULT OleQueryCreateFromData(LPDATAOBJECT); + HRESULT OleCreate(REFCLSID, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLinkFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateStaticFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLink(LPMONIKER, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLinkToFile(LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateFromFile(REFCLSID, LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleLoad(LPSTORAGE, REFIID, LPOLECLIENTSITE, PVOID*); + HRESULT OleSave(LPPERSISTSTORAGE, LPSTORAGE, BOOL); + HRESULT OleLoadFromStream(LPSTREAM, REFIID, PVOID*); + HRESULT OleSaveToStream(LPPERSISTSTREAM, LPSTREAM); + HRESULT OleSetContainedObject(LPUNKNOWN, BOOL); + HRESULT OleNoteObjectVisible(LPUNKNOWN, BOOL); + HRESULT RegisterDragDrop(HWND, LPDROPTARGET); + HRESULT RevokeDragDrop(HWND); + HRESULT DoDragDrop(LPDATAOBJECT, LPDROPSOURCE, DWORD, PDWORD); + HRESULT OleSetClipboard(LPDATAOBJECT); + HRESULT OleGetClipboard(LPDATAOBJECT*); + HRESULT OleFlushClipboard(); + HRESULT OleIsCurrentClipboard(LPDATAOBJECT); + HOLEMENU OleCreateMenuDescriptor(HMENU, LPOLEMENUGROUPWIDTHS); + HRESULT OleSetMenuDescriptor(HOLEMENU, HWND, HWND, LPOLEINPLACEFRAME, LPOLEINPLACEACTIVEOBJECT); + HRESULT OleDestroyMenuDescriptor(HOLEMENU); + HRESULT OleTranslateAccelerator(LPOLEINPLACEFRAME, LPOLEINPLACEFRAMEINFO, LPMSG); + HANDLE OleDuplicateData(HANDLE, CLIPFORMAT, UINT); + HRESULT OleDraw(LPUNKNOWN, DWORD, HDC, LPCRECT); + HRESULT OleRun(LPUNKNOWN); + BOOL OleIsRunning(LPOLEOBJECT); + HRESULT OleLockRunning(LPUNKNOWN, BOOL, BOOL); + void ReleaseStgMedium(LPSTGMEDIUM); + HRESULT CreateOleAdviseHolder(LPOLEADVISEHOLDER*); + HRESULT OleCreateDefaultHandler(REFCLSID, LPUNKNOWN, REFIID, PVOID*); + HRESULT OleCreateEmbeddingHelper(REFCLSID, LPUNKNOWN, DWORD, LPCLASSFACTORY, REFIID, PVOID*); + BOOL IsAccelerator(HACCEL, int, LPMSG, WORD*); + HGLOBAL OleGetIconOfFile(LPOLESTR, BOOL); + HGLOBAL OleGetIconOfClass(REFCLSID, LPOLESTR, BOOL); + HGLOBAL OleMetafilePictFromIconAndLabel(HICON, LPOLESTR, LPOLESTR, UINT); + HRESULT OleRegGetUserType(REFCLSID, DWORD, LPOLESTR*); + HRESULT OleRegGetMiscStatus(REFCLSID, DWORD, DWORD*); + HRESULT OleRegEnumFormatEtc (REFCLSID, DWORD, LPENUMFORMATETC*); + HRESULT OleRegEnumVerbs (REFCLSID, LPENUMOLEVERB*); + HRESULT OleConvertOLESTREAMToIStorage(LPOLESTREAM, LPSTORAGE, const(DVTARGETDEVICE)*); + HRESULT OleConvertIStorageToOLESTREAM(LPSTORAGE, LPOLESTREAM); + HRESULT GetHGlobalFromILockBytes(LPLOCKBYTES, HGLOBAL*); + HRESULT CreateILockBytesOnHGlobal(HGLOBAL, BOOL, LPLOCKBYTES*); + HRESULT GetHGlobalFromStream(LPSTREAM, HGLOBAL*); + HRESULT CreateStreamOnHGlobal(HGLOBAL, BOOL, LPSTREAM*); + HRESULT OleDoAutoConvert(LPSTORAGE, LPCLSID); + HRESULT OleGetAutoConvert(REFCLSID, LPCLSID); + HRESULT OleSetAutoConvert(REFCLSID, REFCLSID); + HRESULT GetConvertStg(LPSTORAGE); + HRESULT SetConvertStg(LPSTORAGE, BOOL); + HRESULT OleConvertIStorageToOLESTREAMEx(LPSTORAGE, CLIPFORMAT, LONG, LONG, DWORD, LPSTGMEDIUM, LPOLESTREAM); + HRESULT OleConvertOLESTREAMToIStorageEx(LPOLESTREAM, LPSTORAGE, CLIPFORMAT*, LONG*, LONG*, DWORD*, LPSTGMEDIUM); +} diff --git a/src/core/sys/windows/ole2ver.d b/src/core/sys/windows/ole2ver.d index 8a2a880a7f..675a8e5ceb 100644 --- a/src/core/sys/windows/ole2ver.d +++ b/src/core/sys/windows/ole2ver.d @@ -1,13 +1,13 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ole2ver.d) - */ -module core.sys.windows.ole2ver; - -// These are apparently not documented on the MSDN site -const rmm = 23; -const rup = 639; +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ole2ver.d) + */ +module core.sys.windows.ole2ver; + +// These are apparently not documented on the MSDN site +const rmm = 23; +const rup = 639; diff --git a/src/core/sys/windows/oleacc.d b/src/core/sys/windows/oleacc.d index 07c9fc3e16..b4720c4871 100644 --- a/src/core/sys/windows/oleacc.d +++ b/src/core/sys/windows/oleacc.d @@ -1,213 +1,213 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_oleacc.d) - */ -module core.sys.windows.oleacc; -pragma(lib, "oleacc"); - -private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.unknwn, core.sys.windows.wtypes, - core.sys.windows.windef; - -enum { - DISPID_ACC_PARENT = -5000, - DISPID_ACC_CHILDCOUNT = -5001, - DISPID_ACC_CHILD = -5002, - DISPID_ACC_NAME = -5003, - DISPID_ACC_VALUE = -5004, - DISPID_ACC_DESCRIPTION = -5005, - DISPID_ACC_ROLE = -5006, - DISPID_ACC_STATE = -5007, - DISPID_ACC_HELP = -5008, - DISPID_ACC_HELPTOPIC = -5009, - DISPID_ACC_KEYBOARDSHORTCUT = -5010, - DISPID_ACC_FOCUS = -5011, - DISPID_ACC_SELECTION = -5012, - DISPID_ACC_DEFAULTACTION = -5013, - DISPID_ACC_SELECT = -5014, - DISPID_ACC_LOCATION = -5015, - DISPID_ACC_NAVIGATE = -5016, - DISPID_ACC_HITTEST = -5017, - DISPID_ACC_DODEFAULTACTION = -5018 -} - -enum { - NAVDIR_UP = 1, - NAVDIR_DOWN, - NAVDIR_LEFT, - NAVDIR_RIGHT, - NAVDIR_NEXT, - NAVDIR_PREVIOUS, - NAVDIR_FIRSTCHILD, - NAVDIR_LASTCHILD // = 8 -} - -enum { - ROLE_SYSTEM_TITLEBAR = 1, - ROLE_SYSTEM_MENUBAR, - ROLE_SYSTEM_SCROLLBAR, - ROLE_SYSTEM_GRIP, - ROLE_SYSTEM_SOUND, - ROLE_SYSTEM_CURSOR, - ROLE_SYSTEM_CARET, - ROLE_SYSTEM_ALERT, - ROLE_SYSTEM_WINDOW, - ROLE_SYSTEM_CLIENT, - ROLE_SYSTEM_MENUPOPUP, - ROLE_SYSTEM_MENUITEM, - ROLE_SYSTEM_TOOLTIP, - ROLE_SYSTEM_APPLICATION, - ROLE_SYSTEM_DOCUMENT, - ROLE_SYSTEM_PANE, - ROLE_SYSTEM_CHART, - ROLE_SYSTEM_DIALOG, - ROLE_SYSTEM_BORDER, - ROLE_SYSTEM_GROUPING, - ROLE_SYSTEM_SEPARATOR, - ROLE_SYSTEM_TOOLBAR, - ROLE_SYSTEM_STATUSBAR, - ROLE_SYSTEM_TABLE, - ROLE_SYSTEM_COLUMNHEADER, - ROLE_SYSTEM_ROWHEADER, - ROLE_SYSTEM_COLUMN, - ROLE_SYSTEM_ROW, - ROLE_SYSTEM_CELL, - ROLE_SYSTEM_LINK, - ROLE_SYSTEM_HELPBALLOON, - ROLE_SYSTEM_CHARACTER, - ROLE_SYSTEM_LIST, - ROLE_SYSTEM_LISTITEM, - ROLE_SYSTEM_OUTLINE, - ROLE_SYSTEM_OUTLINEITEM, - ROLE_SYSTEM_PAGETAB, - ROLE_SYSTEM_PROPERTYPAGE, - ROLE_SYSTEM_INDICATOR, - ROLE_SYSTEM_GRAPHIC, - ROLE_SYSTEM_STATICTEXT, - ROLE_SYSTEM_TEXT, - ROLE_SYSTEM_PUSHBUTTON, - ROLE_SYSTEM_CHECKBUTTON, - ROLE_SYSTEM_RADIOBUTTON, - ROLE_SYSTEM_COMBOBOX, - ROLE_SYSTEM_DROPLIST, - ROLE_SYSTEM_PROGRESSBAR, - ROLE_SYSTEM_DIAL, - ROLE_SYSTEM_HOTKEYFIELD, - ROLE_SYSTEM_SLIDER, - ROLE_SYSTEM_SPINBUTTON, - ROLE_SYSTEM_DIAGRAM, - ROLE_SYSTEM_ANIMATION, - ROLE_SYSTEM_EQUATION, - ROLE_SYSTEM_BUTTONDROPDOWN, - ROLE_SYSTEM_BUTTONMENU, - ROLE_SYSTEM_BUTTONDROPDOWNGRID, - ROLE_SYSTEM_WHITESPACE, - ROLE_SYSTEM_PAGETABLIST, - ROLE_SYSTEM_CLOCK // = 61 -} - -enum { - STATE_SYSTEM_UNAVAILABLE = 0x00000001, - STATE_SYSTEM_SELECTED = 0x00000002, - STATE_SYSTEM_FOCUSED = 0x00000004, - STATE_SYSTEM_PRESSED = 0x00000008, - STATE_SYSTEM_CHECKED = 0x00000010, - STATE_SYSTEM_MIXED = 0x00000020, - STATE_SYSTEM_READONLY = 0x00000040, - STATE_SYSTEM_HOTTRACKED = 0x00000080, - STATE_SYSTEM_DEFAULT = 0x00000100, - STATE_SYSTEM_EXPANDED = 0x00000200, - STATE_SYSTEM_COLLAPSED = 0x00000400, - STATE_SYSTEM_BUSY = 0x00000800, - STATE_SYSTEM_FLOATING = 0x00001000, - STATE_SYSTEM_MARQUEED = 0x00002000, - STATE_SYSTEM_ANIMATED = 0x00004000, - STATE_SYSTEM_INVISIBLE = 0x00008000, - STATE_SYSTEM_OFFSCREEN = 0x00010000, - STATE_SYSTEM_SIZEABLE = 0x00020000, - STATE_SYSTEM_MOVEABLE = 0x00040000, - STATE_SYSTEM_SELFVOICING = 0x00080000, - STATE_SYSTEM_FOCUSABLE = 0x00100000, - STATE_SYSTEM_SELECTABLE = 0x00200000, - STATE_SYSTEM_LINKED = 0x00400000, - STATE_SYSTEM_TRAVERSED = 0x00800000, - STATE_SYSTEM_MULTISELECTABLE = 0x01000000, - STATE_SYSTEM_EXTSELECTABLE = 0x02000000, - STATE_SYSTEM_ALERT_LOW = 0x04000000, - STATE_SYSTEM_ALERT_MEDIUM = 0x08000000, - STATE_SYSTEM_ALERT_HIGH = 0x10000000, - STATE_SYSTEM_VALID = 0x1fffffff -} - -enum SELFLAG -{ - SELFLAG_NONE = 0, - SELFLAG_TAKEFOCUS = 1, - SELFLAG_TAKESELECTION = 2, - SELFLAG_EXTENDSELECTION = 4, - SELFLAG_ADDSELECTION = 8, - SELFLAG_REMOVESELECTION = 16 -} - -const SELFLAG_VALID = 0x0000001F; - - -interface IAccessible : IDispatch { - HRESULT get_accParent(IDispatch*); - HRESULT get_accChildCount(int*); - HRESULT get_accChild(VARIANT, IDispatch*); - HRESULT get_accName(VARIANT, BSTR*); - HRESULT get_accValue(VARIANT, BSTR*); - HRESULT get_accDescription(VARIANT, BSTR*); - HRESULT get_accRole(VARIANT, VARIANT*); - HRESULT get_accState(VARIANT, VARIANT*); - HRESULT get_accHelp(VARIANT, BSTR*); - HRESULT get_accHelpTopic(BSTR*, VARIANT, int*); - HRESULT get_accKeyboardShortcut(VARIANT, BSTR*); - HRESULT get_accFocus(VARIANT*); - HRESULT get_accSelection(VARIANT*); - HRESULT get_accDefaultAction(VARIANT, BSTR*); - - HRESULT accSelect(int, VARIANT); - HRESULT accLocation(int*, int*, int*, int*, VARIANT); - HRESULT accNavigate(int, VARIANT, VARIANT*); - HRESULT accHitTest(int, int, VARIANT*); - HRESULT accDoDefaultAction(VARIANT); - - HRESULT put_accName(VARIANT, BSTR); - HRESULT put_accValue(VARIANT, BSTR); -} - -alias IAccessible LPACCESSIBLE; - -extern (Windows) { - HRESULT AccessibleChildren(IAccessible, LONG, LONG, VARIANT*, LONG*); - HRESULT AccessibleObjectFromEvent(HWND, DWORD, DWORD, IAccessible, VARIANT*); - HRESULT AccessibleObjectFromPoint(POINT, IAccessible*, VARIANT*); - HRESULT AccessibleObjectFromWindow(HWND, DWORD, REFIID, void**); - HRESULT CreateStdAccessibleObject(HWND, LONG, REFIID, void**); - HRESULT CreateStdAccessibleProxyA(HWND, LPCSTR, LONG, REFIID, void**); - HRESULT CreateStdAccessibleProxyW(HWND, LPCWSTR, LONG, REFIID, void**); - - void GetOleaccVersionInfo(DWORD*, DWORD*); - UINT GetRoleTextA(DWORD, LPSTR, UINT); - UINT GetRoleTextW(DWORD, LPWSTR, UINT); - UINT GetStateTextA(DWORD, LPSTR, UINT); - UINT GetStateTextW(DWORD, LPWSTR, UINT); - LRESULT LresultFromObject(REFIID, WPARAM, LPUNKNOWN); - HRESULT ObjectFromLresult(LRESULT, REFIID, WPARAM, void**); - HRESULT WindowFromAccessibleObject(IAccessible, HWND*); -} - -version(Unicode) { - alias CreateStdAccessibleProxyW CreateStdAccessibleProxy; - alias GetRoleTextW GetRoleText; - alias GetStateTextW GetStateText; -} else { - alias CreateStdAccessibleProxyA CreateStdAccessibleProxy; - alias GetRoleTextA GetRoleText; - alias GetStateTextA GetStateText; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_oleacc.d) + */ +module core.sys.windows.oleacc; +pragma(lib, "oleacc"); + +private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.unknwn, core.sys.windows.wtypes, + core.sys.windows.windef; + +enum { + DISPID_ACC_PARENT = -5000, + DISPID_ACC_CHILDCOUNT = -5001, + DISPID_ACC_CHILD = -5002, + DISPID_ACC_NAME = -5003, + DISPID_ACC_VALUE = -5004, + DISPID_ACC_DESCRIPTION = -5005, + DISPID_ACC_ROLE = -5006, + DISPID_ACC_STATE = -5007, + DISPID_ACC_HELP = -5008, + DISPID_ACC_HELPTOPIC = -5009, + DISPID_ACC_KEYBOARDSHORTCUT = -5010, + DISPID_ACC_FOCUS = -5011, + DISPID_ACC_SELECTION = -5012, + DISPID_ACC_DEFAULTACTION = -5013, + DISPID_ACC_SELECT = -5014, + DISPID_ACC_LOCATION = -5015, + DISPID_ACC_NAVIGATE = -5016, + DISPID_ACC_HITTEST = -5017, + DISPID_ACC_DODEFAULTACTION = -5018 +} + +enum { + NAVDIR_UP = 1, + NAVDIR_DOWN, + NAVDIR_LEFT, + NAVDIR_RIGHT, + NAVDIR_NEXT, + NAVDIR_PREVIOUS, + NAVDIR_FIRSTCHILD, + NAVDIR_LASTCHILD // = 8 +} + +enum { + ROLE_SYSTEM_TITLEBAR = 1, + ROLE_SYSTEM_MENUBAR, + ROLE_SYSTEM_SCROLLBAR, + ROLE_SYSTEM_GRIP, + ROLE_SYSTEM_SOUND, + ROLE_SYSTEM_CURSOR, + ROLE_SYSTEM_CARET, + ROLE_SYSTEM_ALERT, + ROLE_SYSTEM_WINDOW, + ROLE_SYSTEM_CLIENT, + ROLE_SYSTEM_MENUPOPUP, + ROLE_SYSTEM_MENUITEM, + ROLE_SYSTEM_TOOLTIP, + ROLE_SYSTEM_APPLICATION, + ROLE_SYSTEM_DOCUMENT, + ROLE_SYSTEM_PANE, + ROLE_SYSTEM_CHART, + ROLE_SYSTEM_DIALOG, + ROLE_SYSTEM_BORDER, + ROLE_SYSTEM_GROUPING, + ROLE_SYSTEM_SEPARATOR, + ROLE_SYSTEM_TOOLBAR, + ROLE_SYSTEM_STATUSBAR, + ROLE_SYSTEM_TABLE, + ROLE_SYSTEM_COLUMNHEADER, + ROLE_SYSTEM_ROWHEADER, + ROLE_SYSTEM_COLUMN, + ROLE_SYSTEM_ROW, + ROLE_SYSTEM_CELL, + ROLE_SYSTEM_LINK, + ROLE_SYSTEM_HELPBALLOON, + ROLE_SYSTEM_CHARACTER, + ROLE_SYSTEM_LIST, + ROLE_SYSTEM_LISTITEM, + ROLE_SYSTEM_OUTLINE, + ROLE_SYSTEM_OUTLINEITEM, + ROLE_SYSTEM_PAGETAB, + ROLE_SYSTEM_PROPERTYPAGE, + ROLE_SYSTEM_INDICATOR, + ROLE_SYSTEM_GRAPHIC, + ROLE_SYSTEM_STATICTEXT, + ROLE_SYSTEM_TEXT, + ROLE_SYSTEM_PUSHBUTTON, + ROLE_SYSTEM_CHECKBUTTON, + ROLE_SYSTEM_RADIOBUTTON, + ROLE_SYSTEM_COMBOBOX, + ROLE_SYSTEM_DROPLIST, + ROLE_SYSTEM_PROGRESSBAR, + ROLE_SYSTEM_DIAL, + ROLE_SYSTEM_HOTKEYFIELD, + ROLE_SYSTEM_SLIDER, + ROLE_SYSTEM_SPINBUTTON, + ROLE_SYSTEM_DIAGRAM, + ROLE_SYSTEM_ANIMATION, + ROLE_SYSTEM_EQUATION, + ROLE_SYSTEM_BUTTONDROPDOWN, + ROLE_SYSTEM_BUTTONMENU, + ROLE_SYSTEM_BUTTONDROPDOWNGRID, + ROLE_SYSTEM_WHITESPACE, + ROLE_SYSTEM_PAGETABLIST, + ROLE_SYSTEM_CLOCK // = 61 +} + +enum { + STATE_SYSTEM_UNAVAILABLE = 0x00000001, + STATE_SYSTEM_SELECTED = 0x00000002, + STATE_SYSTEM_FOCUSED = 0x00000004, + STATE_SYSTEM_PRESSED = 0x00000008, + STATE_SYSTEM_CHECKED = 0x00000010, + STATE_SYSTEM_MIXED = 0x00000020, + STATE_SYSTEM_READONLY = 0x00000040, + STATE_SYSTEM_HOTTRACKED = 0x00000080, + STATE_SYSTEM_DEFAULT = 0x00000100, + STATE_SYSTEM_EXPANDED = 0x00000200, + STATE_SYSTEM_COLLAPSED = 0x00000400, + STATE_SYSTEM_BUSY = 0x00000800, + STATE_SYSTEM_FLOATING = 0x00001000, + STATE_SYSTEM_MARQUEED = 0x00002000, + STATE_SYSTEM_ANIMATED = 0x00004000, + STATE_SYSTEM_INVISIBLE = 0x00008000, + STATE_SYSTEM_OFFSCREEN = 0x00010000, + STATE_SYSTEM_SIZEABLE = 0x00020000, + STATE_SYSTEM_MOVEABLE = 0x00040000, + STATE_SYSTEM_SELFVOICING = 0x00080000, + STATE_SYSTEM_FOCUSABLE = 0x00100000, + STATE_SYSTEM_SELECTABLE = 0x00200000, + STATE_SYSTEM_LINKED = 0x00400000, + STATE_SYSTEM_TRAVERSED = 0x00800000, + STATE_SYSTEM_MULTISELECTABLE = 0x01000000, + STATE_SYSTEM_EXTSELECTABLE = 0x02000000, + STATE_SYSTEM_ALERT_LOW = 0x04000000, + STATE_SYSTEM_ALERT_MEDIUM = 0x08000000, + STATE_SYSTEM_ALERT_HIGH = 0x10000000, + STATE_SYSTEM_VALID = 0x1fffffff +} + +enum SELFLAG +{ + SELFLAG_NONE = 0, + SELFLAG_TAKEFOCUS = 1, + SELFLAG_TAKESELECTION = 2, + SELFLAG_EXTENDSELECTION = 4, + SELFLAG_ADDSELECTION = 8, + SELFLAG_REMOVESELECTION = 16 +} + +const SELFLAG_VALID = 0x0000001F; + + +interface IAccessible : IDispatch { + HRESULT get_accParent(IDispatch*); + HRESULT get_accChildCount(int*); + HRESULT get_accChild(VARIANT, IDispatch*); + HRESULT get_accName(VARIANT, BSTR*); + HRESULT get_accValue(VARIANT, BSTR*); + HRESULT get_accDescription(VARIANT, BSTR*); + HRESULT get_accRole(VARIANT, VARIANT*); + HRESULT get_accState(VARIANT, VARIANT*); + HRESULT get_accHelp(VARIANT, BSTR*); + HRESULT get_accHelpTopic(BSTR*, VARIANT, int*); + HRESULT get_accKeyboardShortcut(VARIANT, BSTR*); + HRESULT get_accFocus(VARIANT*); + HRESULT get_accSelection(VARIANT*); + HRESULT get_accDefaultAction(VARIANT, BSTR*); + + HRESULT accSelect(int, VARIANT); + HRESULT accLocation(int*, int*, int*, int*, VARIANT); + HRESULT accNavigate(int, VARIANT, VARIANT*); + HRESULT accHitTest(int, int, VARIANT*); + HRESULT accDoDefaultAction(VARIANT); + + HRESULT put_accName(VARIANT, BSTR); + HRESULT put_accValue(VARIANT, BSTR); +} + +alias IAccessible LPACCESSIBLE; + +extern (Windows) { + HRESULT AccessibleChildren(IAccessible, LONG, LONG, VARIANT*, LONG*); + HRESULT AccessibleObjectFromEvent(HWND, DWORD, DWORD, IAccessible, VARIANT*); + HRESULT AccessibleObjectFromPoint(POINT, IAccessible*, VARIANT*); + HRESULT AccessibleObjectFromWindow(HWND, DWORD, REFIID, void**); + HRESULT CreateStdAccessibleObject(HWND, LONG, REFIID, void**); + HRESULT CreateStdAccessibleProxyA(HWND, LPCSTR, LONG, REFIID, void**); + HRESULT CreateStdAccessibleProxyW(HWND, LPCWSTR, LONG, REFIID, void**); + + void GetOleaccVersionInfo(DWORD*, DWORD*); + UINT GetRoleTextA(DWORD, LPSTR, UINT); + UINT GetRoleTextW(DWORD, LPWSTR, UINT); + UINT GetStateTextA(DWORD, LPSTR, UINT); + UINT GetStateTextW(DWORD, LPWSTR, UINT); + LRESULT LresultFromObject(REFIID, WPARAM, LPUNKNOWN); + HRESULT ObjectFromLresult(LRESULT, REFIID, WPARAM, void**); + HRESULT WindowFromAccessibleObject(IAccessible, HWND*); +} + +version(Unicode) { + alias CreateStdAccessibleProxyW CreateStdAccessibleProxy; + alias GetRoleTextW GetRoleText; + alias GetStateTextW GetStateText; +} else { + alias CreateStdAccessibleProxyA CreateStdAccessibleProxy; + alias GetRoleTextA GetRoleText; + alias GetStateTextA GetStateText; +} diff --git a/src/core/sys/windows/oleauto.d b/src/core/sys/windows/oleauto.d index 5cbfc1f50c..83e415ef27 100644 --- a/src/core/sys/windows/oleauto.d +++ b/src/core/sys/windows/oleauto.d @@ -1,683 +1,683 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_oleauto.d) - */ -module core.sys.windows.oleauto; -pragma(lib, "oleaut32"); - -import core.sys.windows.oaidl; -private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; -private import core.sys.windows.winbase; // for SYSTEMTIME - -align(8): -const STDOLE_MAJORVERNUM = 1; -const STDOLE_MINORVERNUM = 0; -const STDOLE_LCID = 0; - -const VARIANT_NOVALUEPROP = 0x01; -const VARIANT_ALPHABOOL = 0x02; -const VARIANT_NOUSEOVERRIDE = 0x04; -const VARIANT_LOCALBOOL = 0x08; - -const VAR_TIMEVALUEONLY = 0x0001; -const VAR_DATEVALUEONLY = 0x0002; -const VAR_VALIDDATE = 0x0004; -const VAR_CALENDAR_HIJRI = 0x0008; -const VAR_LOCALBOOL = 0x0010; -const VAR_FORMAT_NOSUBSTITUTE = 0x0020; -const VAR_FOURDIGITYEARS = 0x0040; -const VAR_CALENDAR_THAI = 0x0080; -const VAR_CALENDAR_GREGORIAN = 0x0100; - -const MEMBERID_NIL = DISPID_UNKNOWN; -const ID_DEFAULTINST = -2; -const DISPATCH_METHOD = 1; -const DISPATCH_PROPERTYGET = 2; -const DISPATCH_PROPERTYPUT = 4; -const DISPATCH_PROPERTYPUTREF = 8; - -//ULONG LHashValOfName(LCID l, OLECHAR* n) { return LHashValOfNameSys(SYSKIND.SYS_WIN32, l, n); } - -// DAC: These aren't in the 2003 SDK. -//MACRO #define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h))) -//MACRO #define IsHashValCompatible(h1, h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2)))) - -enum { - ACTIVEOBJECT_STRONG = 0, - ACTIVEOBJECT_WEAK = 1 -} - -// DAC: These seem to be irrelevant for D. -//#define V_UNION(X, Y) ((X)->Y) -//#define V_VT(X) ((X)->vt) -//#define V_BOOL(X) V_UNION(X, boolVal) -//#define V_ISBYREF(X) (V_VT(X)&VT_BYREF) -//#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY) -//#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR) -//#define V_NONE(X) V_I2(X) -//#define V_UI1(X) V_UNION(X, bVal) -//#define V_UI1REF(X) V_UNION(X, pbVal) -//#define V_I2(X) V_UNION(X, iVal) -//#define V_UI2(X) V_UNION(X, uiVal) -//#define V_I2REF(X) V_UNION(X, piVal) -//#define V_I4(X) V_UNION(X, lVal) -//#define V_UI4(X) V_UNION(X, ulVal) -//#define V_I4REF(X) V_UNION(X, plVal) -//#define V_UI4REF(X) V_UNION(X, pulVal) -//#define V_I8(X) V_UNION(X, llVal) -//#define V_UI8(X) V_UNION(X, ullVal) -//#define V_I8REF(X) V_UNION(X, pllVal) -//#define V_UI8REF(X) V_UNION(X, pullVal) -//#define V_R4(X) V_UNION(X, fltVal) -//#define V_R4REF(X) V_UNION(X, pfltVal) -//#define V_R8(X) V_UNION(X, dblVal) -//#define V_R8REF(X) V_UNION(X, pdblVal) -//#define V_CY(X) V_UNION(X, cyVal) -//#define V_CYREF(X) V_UNION(X, pcyVal) -//#define V_DATE(X) V_UNION(X, date) -//#define V_DATEREF(X) V_UNION(X, pdate) -//#define V_BSTR(X) V_UNION(X, bstrVal) -//#define V_BSTRREF(X) V_UNION(X, pbstrVal) -//#define V_DISPATCH(X) V_UNION(X, pdispVal) -//#define V_DISPATCHREF(X) V_UNION(X, ppdispVal) -//#define V_ERROR(X) V_UNION(X, scode) -//#define V_ERRORREF(X) V_UNION(X, pscode) -//#define V_BOOLREF(X) V_UNION(X, pboolVal) -//#define V_UNKNOWN(X) V_UNION(X, punkVal) -//#define V_UNKNOWNREF(X) V_UNION(X, ppunkVal) -//#define V_VARIANTREF(X) V_UNION(X, pvarVal) -//#define V_LPSTR(X) V_UNION(X, pszVal) -//#define V_LPSTRREF(X) V_UNION(X, ppszVal) -//#define V_LPWSTR(X) V_UNION(X, pwszVal) -//#define V_LPWSTRREF(X) V_UNION(X, ppwszVal) -//#define V_FILETIME(X) V_UNION(X, filetime) -//#define V_FILETIMEREF(X) V_UNION(X, pfiletime) -//#define V_BLOB(X) V_UNION(X, blob) -//#define V_UUID(X) V_UNION(X, puuid) -//#define V_CLSID(X) V_UNION(X, puuid) -//#define V_ARRAY(X) V_UNION(X, parray) -//#define V_ARRAYREF(X) V_UNION(X, pparray) -//#define V_BYREF(X) V_UNION(X, byref) -//#define V_DECIMAL(X) ((X)->decVal) -//#define V_DECIMALREF(X) V_UNION(X, pdecVal) -//#define V_I1(X) V_UNION(X, cVal) - -//#ifdef _WIN64 -//#define V_INT_PTR(X) V_I8(X) -//#define V_UINT_PTR(X) V_UI8(X) -//#define V_INT_PTRREF(X) V_I8REF(X) -//#define V_UINT_PTRREF(X) V_UI8REF(X) -//#else -//#define V_INT_PTR(X) V_I4(X) -//#define V_UINT_PTR(X) V_UI4(X) -//#define V_INT_PTRREF(X) V_I4REF(X) -//#define V_UINT_PTRREF(X) V_UI4REF(X) -//#endif - -enum { - VARCMP_LT = 0, - VARCMP_EQ, - VARCMP_GT, - VARCMP_NULL // = 3 -} - -const LOCALE_USE_NLS = 0x10000000; - -const VARIANT_NOUSEROVERRIDE = 0x04; -const VARIANT_CALENDAR_HIJRI = 0x08; -const VARIANT_CALENDAR_THAI = 0x20; -const VARIANT_CALENDAR_GREGORIAN = 0x40; -const VARIANT_USE_NLS = 0x80; - -const NUMPRS_LEADING_WHITE = 0x00001; -const NUMPRS_TRAILING_WHITE = 0x00002; -const NUMPRS_LEADING_PLUS = 0x00004; -const NUMPRS_TRAILING_PLUS = 0x00008; -const NUMPRS_LEADING_MINUS = 0x00010; -const NUMPRS_TRAILING_MINUS = 0x00020; -const NUMPRS_HEX_OCT = 0x00040; -const NUMPRS_PARENS = 0x00080; -const NUMPRS_DECIMAL = 0x00100; -const NUMPRS_THOUSANDS = 0x00200; -const NUMPRS_CURRENCY = 0x00400; -const NUMPRS_EXPONENT = 0x00800; -const NUMPRS_USE_ALL = 0x01000; -const NUMPRS_STD = 0x01FFF; -const NUMPRS_NEG = 0x10000; -const NUMPRS_INEXACT = 0x20000; - -const VTBIT_I1 = 1 << VARENUM.VT_I1; -const VTBIT_UI1 = 1 << VARENUM.VT_UI1; -const VTBIT_I2 = 1 << VARENUM.VT_I2; -const VTBIT_UI2 = 1 << VARENUM.VT_UI2; -const VTBIT_I4 = 1 << VARENUM.VT_I4; -const VTBIT_UI4 = 1 << VARENUM.VT_UI4; -const VTBIT_I8 = 1 << VARENUM.VT_I8; -const VTBIT_UI8 = 1 << VARENUM.VT_UI8; -const VTBIT_R4 = 1 << VARENUM.VT_R4; -const VTBIT_R8 = 1 << VARENUM.VT_R8; -const VTBIT_CY = 1 << VARENUM.VT_CY; -const VTBIT_DECIMAL = 1 << VARENUM.VT_DECIMAL; - - -enum REGKIND{ - REGKIND_DEFAULT, - REGKIND_REGISTER, - REGKIND_NONE -} - -struct PARAMDATA{ - OLECHAR* szName; - VARTYPE vt; -} -alias PARAMDATA* LPPARAMDATA; - -struct METHODDATA{ - OLECHAR* szName; - PARAMDATA* ppdata; - DISPID dispid; - UINT iMeth; - CALLCONV cc; - UINT cArgs; - WORD wFlags; - VARTYPE vtReturn; -} -alias METHODDATA* LPMETHODDATA; - -struct INTERFACEDATA{ - METHODDATA* pmethdata; - UINT cMembers; -} -alias INTERFACEDATA* LPINTERFACEDATA; - -struct UDATE { - SYSTEMTIME st; - USHORT wDayOfYear; -} - -struct NUMPARSE { - int cDig; - uint dwInFlags; - uint dwOutFlags; - int cchUsed; - int nBaseShift; - int nPwr10; -} - - -// DAC: In MinGW, these were declared but not defined in oaidl. -// The SDK docs suggest they belong in this file instead. - -deprecated { // not actually deprecated, but they aren't converted yet. - // (will need to reinstate CreateTypeLib as well) - interface ICreateTypeInfo {}; - interface ICreateTypeInfo2 {}; - interface ICreateTypeLib {}; - interface ICreateTypeLib2 {}; - - alias ICreateTypeInfo LPCREATETYPEINFO; - alias ICreateTypeInfo2 LPCREATETYPEINFO2; - alias ICreateTypeLib LPCREATETYPELIB; - alias ICreateTypeLib2 LPCREATETYPELIB2; -} - -extern (Windows) { - BSTR SysAllocString(const(OLECHAR)*); - int SysReAllocString(BSTR*, const(OLECHAR)*); - BSTR SysAllocStringLen(const(OLECHAR)*, uint); - int SysReAllocStringLen(BSTR*, const(OLECHAR)*, uint); - void SysFreeString(BSTR); - uint SysStringLen(BSTR); - uint SysStringByteLen(BSTR); - BSTR SysAllocStringByteLen(const(char)*, uint); - int DosDateTimeToVariantTime(ushort, ushort, double*); - int VariantTimeToDosDateTime(double, ushort*, ushort*); - int VariantTimeToSystemTime(double, LPSYSTEMTIME); - int SystemTimeToVariantTime(LPSYSTEMTIME, double*); - HRESULT VarDateFromUdate(UDATE*, ULONG, DATE*); - HRESULT VarDateFromUdateEx(UDATE*, LCID, ULONG, DATE*); - HRESULT VarUdateFromDate(DATE, ULONG, UDATE*); - HRESULT SafeArrayAllocDescriptor(uint, SAFEARRAY**); - HRESULT SafeArrayAllocData(SAFEARRAY*); - SAFEARRAY* SafeArrayCreate(VARTYPE, uint, SAFEARRAYBOUND*); - HRESULT SafeArrayDestroyDescriptor(SAFEARRAY*); - HRESULT SafeArrayDestroyData(SAFEARRAY*); - HRESULT SafeArrayDestroy(SAFEARRAY*); - HRESULT SafeArrayRedim(SAFEARRAY*, SAFEARRAYBOUND*); - uint SafeArrayGetDim(SAFEARRAY*); - uint SafeArrayGetElemsize(SAFEARRAY*); - HRESULT SafeArrayGetUBound(SAFEARRAY*, uint, int*); - HRESULT SafeArrayGetLBound(SAFEARRAY*, uint, int*); - HRESULT SafeArrayLock(SAFEARRAY*); - HRESULT SafeArrayUnlock(SAFEARRAY*); - HRESULT SafeArrayAccessData(SAFEARRAY*, void**); - HRESULT SafeArrayUnaccessData(SAFEARRAY*); - HRESULT SafeArrayGetElement(SAFEARRAY*, int*, void*); - HRESULT SafeArrayPutElement(SAFEARRAY*, int*, void*); - HRESULT SafeArrayCopy(SAFEARRAY*, SAFEARRAY**); - HRESULT SafeArrayPtrOfIndex(SAFEARRAY*, int*, void**); - SAFEARRAY* SafeArrayCreateVector(VARTYPE, LONG, ULONG); - SAFEARRAY* SafeArrayCreateVectorEx(VARTYPE, LONG, ULONG, LPVOID); - HRESULT SafeArrayAllocDescriptorEx(VARTYPE, UINT, SAFEARRAY**); - HRESULT SafeArrayGetVartype(SAFEARRAY*, VARTYPE*); - HRESULT SafeArraySetRecordInfo(SAFEARRAY*, IRecordInfo); - HRESULT SafeArrayGetRecordInfo(SAFEARRAY*, IRecordInfo*); - HRESULT SafeArraySetIID(SAFEARRAY*, REFGUID); - HRESULT SafeArrayGetIID(SAFEARRAY*, GUID*); - void VariantInit(VARIANTARG*); - HRESULT VariantClear(VARIANTARG*); - HRESULT VariantCopy(VARIANTARG*, VARIANTARG*); - HRESULT VariantCopyInd(VARIANT*, VARIANTARG*); - HRESULT VariantChangeType(VARIANTARG*, VARIANTARG*, ushort, VARTYPE); - HRESULT VariantChangeTypeEx(VARIANTARG*, VARIANTARG*, LCID, ushort, VARTYPE); - HRESULT VarUI1FromI2(short, ubyte*); - HRESULT VarUI1FromI4(int, ubyte*); - HRESULT VarUI1FromR4(float, ubyte*); - HRESULT VarUI1FromR8(double, ubyte*); - HRESULT VarUI1FromCy(CY, ubyte*); - HRESULT VarUI1FromDate(DATE, ubyte*); - HRESULT VarUI1FromStr(OLECHAR*, LCID, uint, ubyte*); - HRESULT VarUI1FromDisp(LPDISPATCH, LCID, ubyte*); - HRESULT VarUI1FromBool(VARIANT_BOOL, ubyte*); - HRESULT VarI2FromUI1(ubyte, short*); - HRESULT VarI2FromI4(int, short*); - HRESULT VarI2FromR4(float, short*); - HRESULT VarI2FromR8(double, short*); - HRESULT VarI2FromCy(CY cyIn, short*); - HRESULT VarI2FromDate(DATE, short*); - HRESULT VarI2FromStr(OLECHAR*, LCID, uint, short*); - HRESULT VarI2FromDisp(LPDISPATCH, LCID, short*); - HRESULT VarI2FromBool(VARIANT_BOOL, short*); - HRESULT VarI4FromUI1(ubyte, int*); - HRESULT VarI4FromI2(short, int*); - HRESULT VarI4FromR4(float, int*); - HRESULT VarI4FromR8(double, int*); - HRESULT VarI4FromCy(CY, int*); - HRESULT VarI4FromDate(DATE, int*); - HRESULT VarI4FromStr(OLECHAR*, LCID, uint, int*); - HRESULT VarI4FromDisp(LPDISPATCH, LCID, int*); - HRESULT VarI4FromBool(VARIANT_BOOL, int*); - HRESULT VarR4FromUI1(ubyte, float*); - HRESULT VarR4FromI2(short, float*); - HRESULT VarR4FromI4(int, float*); - HRESULT VarR4FromR8(double, float*); - HRESULT VarR4FromCy(CY, float*); - HRESULT VarR4FromDate(DATE, float*); - HRESULT VarR4FromStr(OLECHAR*, LCID, uint, float*); - HRESULT VarR4FromDisp(LPDISPATCH, LCID, float*); - HRESULT VarR4FromBool(VARIANT_BOOL, float*); - HRESULT VarR8FromUI1(ubyte, double*); - HRESULT VarR8FromI2(short, double*); - HRESULT VarR8FromI4(int, double*); - HRESULT VarR8FromR4(float, double*); - HRESULT VarR8FromCy(CY, double*); - HRESULT VarR8FromDate(DATE, double*); - HRESULT VarR8FromStr(OLECHAR*, LCID, uint, double*); - HRESULT VarR8FromDisp(LPDISPATCH, LCID, double*); - HRESULT VarR8FromBool(VARIANT_BOOL, double*); - HRESULT VarR8FromDec(DECIMAL*, double*); - HRESULT VarDateFromUI1(ubyte, DATE*); - HRESULT VarDateFromI2(short, DATE*); - HRESULT VarDateFromI4(int, DATE*); - HRESULT VarDateFromR4(float, DATE*); - HRESULT VarDateFromR8(double, DATE*); - HRESULT VarDateFromCy(CY, DATE*); - HRESULT VarDateFromStr(OLECHAR*, LCID, uint, DATE*); - HRESULT VarDateFromDisp(LPDISPATCH, LCID, DATE*); - HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); - HRESULT VarCyFromUI1(ubyte, CY*); - HRESULT VarCyFromI2(short, CY*); - HRESULT VarCyFromI4(int, CY*); - HRESULT VarCyFromR4(float, CY*); - HRESULT VarCyFromR8(double, CY*); - HRESULT VarCyFromDate(DATE, CY*); - HRESULT VarCyFromStr(OLECHAR*, LCID, uint, CY*); - HRESULT VarCyFromDisp(LPDISPATCH, LCID, CY*); - HRESULT VarCyFromBool(VARIANT_BOOL, CY*); - HRESULT VarBstrFromUI1(ubyte, LCID, uint, BSTR*); - HRESULT VarBstrFromI2(short, LCID, uint, BSTR*); - HRESULT VarBstrFromI4(int, LCID, uint, BSTR*); - HRESULT VarBstrFromR4(float, LCID, uint, BSTR*); - HRESULT VarBstrFromR8(double, LCID, uint, BSTR*); - HRESULT VarBstrFromCy(CY, LCID, uint, BSTR*); - HRESULT VarBstrFromDate(DATE, LCID, uint, BSTR*); - HRESULT VarBstrFromDisp(LPDISPATCH, LCID, uint, BSTR*); - HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, uint, BSTR*); - HRESULT VarBoolFromUI1(ubyte, VARIANT_BOOL*); - HRESULT VarBoolFromI2(short, VARIANT_BOOL*); - HRESULT VarBoolFromI4(int, VARIANT_BOOL*); - HRESULT VarBoolFromR4(float, VARIANT_BOOL*); - HRESULT VarBoolFromR8(double, VARIANT_BOOL*); - HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); - HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); - HRESULT VarBoolFromStr(OLECHAR*, LCID, uint, VARIANT_BOOL*); - HRESULT VarBoolFromDisp(LPDISPATCH, LCID, VARIANT_BOOL*); - HRESULT VarDecFromR8(double, DECIMAL*); - ULONG LHashValOfNameSysA(SYSKIND, LCID, const(char)*); - ULONG LHashValOfNameSys(SYSKIND, LCID, const(OLECHAR)*); - HRESULT LoadTypeLib(const(OLECHAR)*, LPTYPELIB*); - HRESULT LoadTypeLibEx(LPCOLESTR, REGKIND, LPTYPELIB*); - HRESULT LoadRegTypeLib(REFGUID, WORD, WORD, LCID, LPTYPELIB*); - HRESULT QueryPathOfRegTypeLib(REFGUID, ushort, ushort, LCID, LPBSTR); - HRESULT RegisterTypeLib(LPTYPELIB, OLECHAR*, OLECHAR*); - HRESULT UnRegisterTypeLib(REFGUID, WORD, WORD, LCID, SYSKIND); - // not actually deprecated, but depends on unconverted ICreateTypeLib - deprecated HRESULT CreateTypeLib(SYSKIND, const(OLECHAR)*, LPCREATETYPELIB*); - HRESULT DispGetParam(DISPPARAMS*, UINT, VARTYPE, VARIANT*, UINT*); - HRESULT DispGetIDsOfNames(LPTYPEINFO, OLECHAR**, UINT, DISPID*); - HRESULT DispInvoke(void*, LPTYPEINFO, DISPID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); - HRESULT CreateDispTypeInfo(INTERFACEDATA*, LCID, LPTYPEINFO*); - HRESULT CreateStdDispatch(IUnknown, void*, LPTYPEINFO, IUnknown*); - HRESULT RegisterActiveObject(IUnknown, REFCLSID, DWORD, DWORD*); - HRESULT RevokeActiveObject(DWORD, void*); - HRESULT GetActiveObject(REFCLSID, void*, IUnknown*); - HRESULT SetErrorInfo(uint, LPERRORINFO); - HRESULT GetErrorInfo(uint, LPERRORINFO*); - HRESULT CreateErrorInfo(LPCREATEERRORINFO*); - uint OaBuildVersion(); - HRESULT VectorFromBstr (BSTR, SAFEARRAY**); - HRESULT BstrFromVector (SAFEARRAY*, BSTR*); - HRESULT VarParseNumFromStr(OLECHAR*, LCID, ULONG, NUMPARSE*, BYTE*); - HRESULT VarNumFromParseNum(NUMPARSE*, BYTE*, ULONG, VARIANT*); - - HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); - - HRESULT VarUI1FromI2(SHORT, BYTE*); - HRESULT VarUI1FromI4(LONG, BYTE*); - HRESULT VarUI1FromI8(LONG64, BYTE*); - HRESULT VarUI1FromR4(FLOAT, BYTE*); - HRESULT VarUI1FromR8(DOUBLE, BYTE*); - HRESULT VarUI1FromDate(DATE, BYTE*); - HRESULT VarUI1FromBool(VARIANT_BOOL, BYTE*); - HRESULT VarUI1FromI1(byte, BYTE*); - HRESULT VarUI1FromUI2(USHORT, BYTE*); - HRESULT VarUI1FromUI4(ULONG, BYTE*); - HRESULT VarUI1FromUI8(ULONG64, BYTE*); - HRESULT VarUI1FromStr(OLECHAR*, LCID, ULONG, BYTE*); - HRESULT VarUI1FromCy(CY, BYTE*); - HRESULT VarUI1FromDec(DECIMAL*, BYTE*); - HRESULT VarUI1FromDisp(IDispatch, LCID, BYTE*); - - HRESULT VarI2FromUI1(BYTE, SHORT*); - HRESULT VarI2FromI4(LONG, SHORT*); - HRESULT VarI2FromI8(LONG64, SHORT*); - HRESULT VarI2FromR4(FLOAT, SHORT*); - HRESULT VarI2FromR8(DOUBLE, SHORT*); - HRESULT VarI2FromDate(DATE, SHORT*); - HRESULT VarI2FromBool(VARIANT_BOOL, SHORT*); - HRESULT VarI2FromI1(byte, SHORT*); - HRESULT VarI2FromUI2(USHORT, SHORT*); - HRESULT VarI2FromUI4(ULONG, SHORT*); - HRESULT VarI2FromUI8(ULONG64, SHORT*); - HRESULT VarI2FromStr(OLECHAR*, LCID, ULONG, SHORT*); - HRESULT VarI2FromCy(CY, SHORT*); - HRESULT VarI2FromDec(DECIMAL*, SHORT*); - HRESULT VarI2FromDisp(IDispatch, LCID, SHORT*); - - HRESULT VarI4FromUI1(BYTE, LONG*); - HRESULT VarI4FromI2(SHORT, LONG*); - HRESULT VarI4FromI8(LONG64, LONG*); - HRESULT VarI4FromR4(FLOAT, LONG*); - HRESULT VarI4FromR8(DOUBLE, LONG*); - HRESULT VarI4FromDate(DATE, LONG*); - HRESULT VarI4FromBool(VARIANT_BOOL, LONG*); - HRESULT VarI4FromI1(byte, LONG*); - HRESULT VarI4FromUI2(USHORT, LONG*); - HRESULT VarI4FromUI4(ULONG, LONG*); - HRESULT VarI4FromUI8(ULONG64, LONG*); - HRESULT VarI4FromStr(OLECHAR*, LCID, ULONG, LONG*); - HRESULT VarI4FromCy(CY, LONG*); - HRESULT VarI4FromDec(DECIMAL*, LONG*); - HRESULT VarI4FromDisp(IDispatch, LCID, LONG*); - - HRESULT VarI8FromUI1(BYTE, LONG64*); - HRESULT VarI8FromI2(SHORT, LONG64*); - HRESULT VarI8FromI4(LONG, LONG64*); - HRESULT VarI8FromR4(FLOAT, LONG64*); - HRESULT VarI8FromR8(DOUBLE, LONG64*); - HRESULT VarI8FromDate(DATE, LONG64*); - HRESULT VarI8FromStr(OLECHAR*, LCID, ULONG, LONG64*); - HRESULT VarI8FromBool(VARIANT_BOOL, LONG64*); - HRESULT VarI8FromI1(byte, LONG64*); - HRESULT VarI8FromUI2(USHORT, LONG64*); - HRESULT VarI8FromUI4(ULONG, LONG64*); - HRESULT VarI8FromUI8(ULONG64, LONG64*); - HRESULT VarI8FromDec(DECIMAL* pdecIn, LONG64*); - HRESULT VarI8FromInt(INT intIn, LONG64*); - HRESULT VarI8FromCy(CY, LONG64*); - HRESULT VarI8FromDisp(IDispatch, LCID, LONG64*); - - HRESULT VarR4FromUI1(BYTE, FLOAT*); - HRESULT VarR4FromI2(SHORT, FLOAT*); - HRESULT VarR4FromI4(LONG, FLOAT*); - HRESULT VarR4FromI8(LONG64, FLOAT*); - HRESULT VarR4FromR8(DOUBLE, FLOAT*); - HRESULT VarR4FromDate(DATE, FLOAT*); - HRESULT VarR4FromBool(VARIANT_BOOL, FLOAT*); - HRESULT VarR4FromI1(byte, FLOAT*); - HRESULT VarR4FromUI2(USHORT, FLOAT*); - HRESULT VarR4FromUI4(ULONG, FLOAT*); - HRESULT VarR4FromUI8(ULONG64, FLOAT*); - HRESULT VarR4FromStr(OLECHAR*, LCID, ULONG, FLOAT*); - HRESULT VarR4FromCy(CY, FLOAT*); - HRESULT VarR4FromDec(DECIMAL*, FLOAT*); - HRESULT VarR4FromDisp(IDispatch, LCID, FLOAT*); - - HRESULT VarR8FromUI1(BYTE, double*); - HRESULT VarR8FromI2(SHORT, double*); - HRESULT VarR8FromI4(LONG, double*); - HRESULT VarR8FromI8(LONG64, double*); - HRESULT VarR8FromR4(FLOAT, double*); - HRESULT VarR8FromDate(DATE, double*); - HRESULT VarR8FromBool(VARIANT_BOOL, double*); - HRESULT VarR8FromI1(byte, double*); - HRESULT VarR8FromUI2(USHORT, double*); - HRESULT VarR8FromUI4(ULONG, double*); - HRESULT VarR8FromUI8(ULONG64, double*); - HRESULT VarR8FromStr(OLECHAR*, LCID, ULONG, double*); - HRESULT VarR8FromCy(CY, double*); - HRESULT VarR8FromDec(DECIMAL*, double*); - HRESULT VarR8FromDisp(IDispatch, LCID, double*); - - HRESULT VarDateFromUI1(BYTE, DATE*); - HRESULT VarDateFromI2(SHORT, DATE*); - HRESULT VarDateFromI4(LONG, DATE*); - HRESULT VarDateFromI8(LONG64, DATE*); - HRESULT VarDateFromR4(FLOAT, DATE*); - HRESULT VarDateFromR8(DOUBLE, DATE*); - HRESULT VarDateFromStr(OLECHAR*, LCID, ULONG, DATE*); - HRESULT VarDateFromI1(byte, DATE*); - HRESULT VarDateFromUI2(USHORT, DATE*); - HRESULT VarDateFromUI4(ULONG, DATE*); - HRESULT VarDateFromUI8(ULONG64, DATE*); - HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); - HRESULT VarDateFromCy(CY, DATE*); - HRESULT VarDateFromDec(DECIMAL*, DATE*); - HRESULT VarDateFromDisp(IDispatch, LCID, DATE*); - - HRESULT VarCyFromUI1(BYTE, CY*); - HRESULT VarCyFromI2(SHORT sIn, CY*); - HRESULT VarCyFromI4(LONG, CY*); - HRESULT VarCyFromI8(LONG64, CY*); - HRESULT VarCyFromR4(FLOAT, CY*); - HRESULT VarCyFromR8(DOUBLE, CY*); - HRESULT VarCyFromDate(DATE, CY*); - HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); - HRESULT VarCyFromBool(VARIANT_BOOL, CY*); - HRESULT VarCyFromI1(byte, CY*); - HRESULT VarCyFromUI2(USHORT, CY*); - HRESULT VarCyFromUI4(ULONG, CY*); - HRESULT VarCyFromUI8(ULONG64, CY*); - HRESULT VarCyFromDec(DECIMAL*, CY*); - HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); - HRESULT VarCyFromDisp(IDispatch, LCID, CY*); - - HRESULT VarBstrFromUI1(BYTE, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI2(SHORT, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI4(LONG, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI8(LONG64, LCID, ULONG, BSTR*); - HRESULT VarBstrFromR4(FLOAT, LCID, ULONG, BSTR*); - HRESULT VarBstrFromR8(DOUBLE, LCID, ULONG, BSTR*); - HRESULT VarBstrFromDate(DATE, LCID, ULONG, BSTR*); - HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI1(byte, LCID, ULONG, BSTR*); - HRESULT VarBstrFromUI2(USHORT, LCID, ULONG, BSTR*); - HRESULT VarBstrFromUI8(ULONG64, LCID, ULONG, BSTR*); - HRESULT VarBstrFromUI4(ULONG, LCID, ULONG, BSTR*); - HRESULT VarBstrFromCy(CY, LCID, ULONG, BSTR*); - HRESULT VarBstrFromDec(DECIMAL*, LCID, ULONG, BSTR*); - HRESULT VarBstrFromDisp(IDispatch, LCID, ULONG, BSTR*); - - HRESULT VarBoolFromUI1(BYTE, VARIANT_BOOL*); - HRESULT VarBoolFromI2(SHORT, VARIANT_BOOL*); - HRESULT VarBoolFromI4(LONG, VARIANT_BOOL*); - HRESULT VarBoolFromI8(LONG64, VARIANT_BOOL*); - HRESULT VarBoolFromR4(FLOAT, VARIANT_BOOL*); - HRESULT VarBoolFromR8(DOUBLE, VARIANT_BOOL*); - HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); - HRESULT VarBoolFromStr(OLECHAR*, LCID, ULONG, VARIANT_BOOL*); - HRESULT VarBoolFromI1(byte, VARIANT_BOOL*); - HRESULT VarBoolFromUI2(USHORT, VARIANT_BOOL*); - HRESULT VarBoolFromUI4(ULONG, VARIANT_BOOL*); - HRESULT VarBoolFromUI8(ULONG64, VARIANT_BOOL*); - HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); - HRESULT VarBoolFromDec(DECIMAL*, VARIANT_BOOL*); - HRESULT VarBoolFromDisp(IDispatch, LCID, VARIANT_BOOL*); - - HRESULT VarI1FromUI1(BYTE, byte*); - HRESULT VarI1FromI2(SHORT, byte*); - HRESULT VarI1FromI4(LONG, byte*); - HRESULT VarI1FromI8(LONG64, byte*); - HRESULT VarI1FromR4(FLOAT, byte*); - HRESULT VarI1FromR8(DOUBLE, byte*); - HRESULT VarI1FromDate(DATE, byte*); - HRESULT VarI1FromStr(OLECHAR*, LCID, ULONG, byte*); - HRESULT VarI1FromBool(VARIANT_BOOL, byte*); - HRESULT VarI1FromUI2(USHORT, byte*); - HRESULT VarI1FromUI4(ULONG, byte*); - HRESULT VarI1FromUI8(ULONG64, byte*); - HRESULT VarI1FromCy(CY, byte*); - HRESULT VarI1FromDec(DECIMAL*, byte*); - HRESULT VarI1FromDisp(IDispatch, LCID, byte*); - - HRESULT VarUI2FromUI1(BYTE, USHORT*); - HRESULT VarUI2FromI2(SHORT, USHORT*); - HRESULT VarUI2FromI4(LONG, USHORT*); - HRESULT VarUI2FromI8(LONG64, USHORT*); - HRESULT VarUI2FromR4(FLOAT, USHORT*); - HRESULT VarUI2FromR8(DOUBLE, USHORT*); - HRESULT VarUI2FromDate(DATE, USHORT*); - HRESULT VarUI2FromStr(OLECHAR*, LCID, ULONG, USHORT*); - HRESULT VarUI2FromBool(VARIANT_BOOL, USHORT*); - HRESULT VarUI2FromI1(byte, USHORT*); - HRESULT VarUI2FromUI4(ULONG, USHORT*); - HRESULT VarUI2FromUI8(ULONG64, USHORT*); - HRESULT VarUI2FromCy(CY, USHORT*); - HRESULT VarUI2FromDec(DECIMAL*, USHORT*); - HRESULT VarUI2FromDisp(IDispatch, LCID, USHORT*); - - HRESULT VarUI4FromStr(OLECHAR*, LCID, ULONG, ULONG*); - HRESULT VarUI4FromUI1(BYTE, ULONG*); - HRESULT VarUI4FromI2(SHORT, ULONG*); - HRESULT VarUI4FromI4(LONG, ULONG*); - HRESULT VarUI4FromI8(LONG64, ULONG*); - HRESULT VarUI4FromR4(FLOAT, ULONG*); - HRESULT VarUI4FromR8(DOUBLE, ULONG*); - HRESULT VarUI4FromDate(DATE, ULONG*); - HRESULT VarUI4FromBool(VARIANT_BOOL, ULONG*); - HRESULT VarUI4FromI1(byte, ULONG*); - HRESULT VarUI4FromUI2(USHORT, ULONG*); - HRESULT VarUI4FromUI8(ULONG64, ULONG*); - HRESULT VarUI4FromCy(CY, ULONG*); - HRESULT VarUI4FromDec(DECIMAL*, ULONG*); - HRESULT VarUI4FromDisp(IDispatch, LCID, ULONG*); - - HRESULT VarUI8FromUI1(BYTE, ULONG64*); - HRESULT VarUI8FromI2(SHORT, ULONG64*); - HRESULT VarUI8FromI4(LONG, ULONG64*); - HRESULT VarUI8FromI8(LONG64, ULONG64*); - HRESULT VarUI8FromR4(FLOAT, ULONG64*); - HRESULT VarUI8FromR8(DOUBLE, ULONG64*); - HRESULT VarUI8FromDate(DATE, ULONG64*); - HRESULT VarUI8FromStr(OLECHAR*, LCID, ULONG, ULONG64*); - HRESULT VarUI8FromBool(VARIANT_BOOL, ULONG64*); - HRESULT VarUI8FromI1(byte, ULONG64*); - HRESULT VarUI8FromUI2(USHORT, ULONG64*); - HRESULT VarUI8FromUI4(ULONG, ULONG64*); - HRESULT VarUI8FromDec(DECIMAL*, ULONG64*); - HRESULT VarUI8FromInt(INT, ULONG64*); - HRESULT VarUI8FromCy(CY, ULONG64*); - HRESULT VarUI8FromDisp(IDispatch, LCID, ULONG64*); - - HRESULT VarDecFromUI1(BYTE, DECIMAL*); - HRESULT VarDecFromI2(SHORT, DECIMAL*); - HRESULT VarDecFromI4(LONG, DECIMAL*); - HRESULT VarDecFromI8(LONG64, DECIMAL*); - HRESULT VarDecFromR4(FLOAT, DECIMAL*); - HRESULT VarDecFromR8(DOUBLE, DECIMAL*); - HRESULT VarDecFromDate(DATE, DECIMAL*); - HRESULT VarDecFromStr(OLECHAR*, LCID, ULONG, DECIMAL*); - HRESULT VarDecFromBool(VARIANT_BOOL, DECIMAL*); - HRESULT VarDecFromI1(byte, DECIMAL*); - HRESULT VarDecFromUI2(USHORT, DECIMAL*); - HRESULT VarDecFromUI4(ULONG, DECIMAL*); - HRESULT VarDecFromUI8(ULONG64, DECIMAL*); - HRESULT VarDecFromCy(CY, DECIMAL*); - HRESULT VarDecFromDisp(IDispatch, LCID, DECIMAL*); - - HRESULT VarDecNeg(const(DECIMAL)*, DECIMAL*); - HRESULT VarR4CmpR8(float, double); - HRESULT VarR8Pow(double, double, double*); - HRESULT VarR8Round(double, int, double*); - HRESULT VarDecAbs(const(DECIMAL)*, DECIMAL*); - HRESULT VarDecAdd(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); - HRESULT VarDecCmp(const(DECIMAL)*, const(DECIMAL)*); - HRESULT VarDecCmpR8(const(DECIMAL)*, DOUBLE); - HRESULT VarDecDiv(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); - HRESULT VarDecFix(const(DECIMAL)*, DECIMAL*); - HRESULT VarDecInt(const(DECIMAL)*, DECIMAL*); - HRESULT VarDecMul(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); - HRESULT VarDecRound(const(DECIMAL)*, int, DECIMAL*); - HRESULT VarDecSub(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); - HRESULT VarCyAbs(CY, CY*); - HRESULT VarCyAdd(CY, CY, CY*); - HRESULT VarCyCmp(CY, CY); - HRESULT VarCyCmpR8(CY, DOUBLE); - HRESULT VarCyFix(CY, CY*); - HRESULT VarCyInt(CY, CY*); - HRESULT VarCyMul(CY, CY, CY*); - HRESULT VarCyMulI4(CY, LONG, CY*); - HRESULT VarCyMulI8(CY, LONG64, CY*); - HRESULT VarCyNeg(CY, CY*); - HRESULT VarCyRound(CY, INT, CY*); - HRESULT VarCySub(CY, CY, CY*); - HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarAnd(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarCat(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarEqv(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarIdiv(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarImp(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarMod(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarOr(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarPow(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarXor(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarAbs(LPVARIANT, LPVARIANT); - HRESULT VarFix(LPVARIANT, LPVARIANT); - HRESULT VarInt(LPVARIANT, LPVARIANT); - HRESULT VarNeg(LPVARIANT, LPVARIANT); - HRESULT VarNot(LPVARIANT, LPVARIANT); - HRESULT VarRound(LPVARIANT, int, LPVARIANT); - HRESULT VarCmp(LPVARIANT, LPVARIANT, LCID, ULONG); - HRESULT VarBstrCmp(BSTR, BSTR, LCID, ULONG); - HRESULT VarBstrCat(BSTR, BSTR, BSTR*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_oleauto.d) + */ +module core.sys.windows.oleauto; +pragma(lib, "oleaut32"); + +import core.sys.windows.oaidl; +private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; +private import core.sys.windows.winbase; // for SYSTEMTIME + +align(8): +const STDOLE_MAJORVERNUM = 1; +const STDOLE_MINORVERNUM = 0; +const STDOLE_LCID = 0; + +const VARIANT_NOVALUEPROP = 0x01; +const VARIANT_ALPHABOOL = 0x02; +const VARIANT_NOUSEOVERRIDE = 0x04; +const VARIANT_LOCALBOOL = 0x08; + +const VAR_TIMEVALUEONLY = 0x0001; +const VAR_DATEVALUEONLY = 0x0002; +const VAR_VALIDDATE = 0x0004; +const VAR_CALENDAR_HIJRI = 0x0008; +const VAR_LOCALBOOL = 0x0010; +const VAR_FORMAT_NOSUBSTITUTE = 0x0020; +const VAR_FOURDIGITYEARS = 0x0040; +const VAR_CALENDAR_THAI = 0x0080; +const VAR_CALENDAR_GREGORIAN = 0x0100; + +const MEMBERID_NIL = DISPID_UNKNOWN; +const ID_DEFAULTINST = -2; +const DISPATCH_METHOD = 1; +const DISPATCH_PROPERTYGET = 2; +const DISPATCH_PROPERTYPUT = 4; +const DISPATCH_PROPERTYPUTREF = 8; + +//ULONG LHashValOfName(LCID l, OLECHAR* n) { return LHashValOfNameSys(SYSKIND.SYS_WIN32, l, n); } + +// DAC: These aren't in the 2003 SDK. +//MACRO #define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h))) +//MACRO #define IsHashValCompatible(h1, h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2)))) + +enum { + ACTIVEOBJECT_STRONG = 0, + ACTIVEOBJECT_WEAK = 1 +} + +// DAC: These seem to be irrelevant for D. +//#define V_UNION(X, Y) ((X)->Y) +//#define V_VT(X) ((X)->vt) +//#define V_BOOL(X) V_UNION(X, boolVal) +//#define V_ISBYREF(X) (V_VT(X)&VT_BYREF) +//#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY) +//#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR) +//#define V_NONE(X) V_I2(X) +//#define V_UI1(X) V_UNION(X, bVal) +//#define V_UI1REF(X) V_UNION(X, pbVal) +//#define V_I2(X) V_UNION(X, iVal) +//#define V_UI2(X) V_UNION(X, uiVal) +//#define V_I2REF(X) V_UNION(X, piVal) +//#define V_I4(X) V_UNION(X, lVal) +//#define V_UI4(X) V_UNION(X, ulVal) +//#define V_I4REF(X) V_UNION(X, plVal) +//#define V_UI4REF(X) V_UNION(X, pulVal) +//#define V_I8(X) V_UNION(X, llVal) +//#define V_UI8(X) V_UNION(X, ullVal) +//#define V_I8REF(X) V_UNION(X, pllVal) +//#define V_UI8REF(X) V_UNION(X, pullVal) +//#define V_R4(X) V_UNION(X, fltVal) +//#define V_R4REF(X) V_UNION(X, pfltVal) +//#define V_R8(X) V_UNION(X, dblVal) +//#define V_R8REF(X) V_UNION(X, pdblVal) +//#define V_CY(X) V_UNION(X, cyVal) +//#define V_CYREF(X) V_UNION(X, pcyVal) +//#define V_DATE(X) V_UNION(X, date) +//#define V_DATEREF(X) V_UNION(X, pdate) +//#define V_BSTR(X) V_UNION(X, bstrVal) +//#define V_BSTRREF(X) V_UNION(X, pbstrVal) +//#define V_DISPATCH(X) V_UNION(X, pdispVal) +//#define V_DISPATCHREF(X) V_UNION(X, ppdispVal) +//#define V_ERROR(X) V_UNION(X, scode) +//#define V_ERRORREF(X) V_UNION(X, pscode) +//#define V_BOOLREF(X) V_UNION(X, pboolVal) +//#define V_UNKNOWN(X) V_UNION(X, punkVal) +//#define V_UNKNOWNREF(X) V_UNION(X, ppunkVal) +//#define V_VARIANTREF(X) V_UNION(X, pvarVal) +//#define V_LPSTR(X) V_UNION(X, pszVal) +//#define V_LPSTRREF(X) V_UNION(X, ppszVal) +//#define V_LPWSTR(X) V_UNION(X, pwszVal) +//#define V_LPWSTRREF(X) V_UNION(X, ppwszVal) +//#define V_FILETIME(X) V_UNION(X, filetime) +//#define V_FILETIMEREF(X) V_UNION(X, pfiletime) +//#define V_BLOB(X) V_UNION(X, blob) +//#define V_UUID(X) V_UNION(X, puuid) +//#define V_CLSID(X) V_UNION(X, puuid) +//#define V_ARRAY(X) V_UNION(X, parray) +//#define V_ARRAYREF(X) V_UNION(X, pparray) +//#define V_BYREF(X) V_UNION(X, byref) +//#define V_DECIMAL(X) ((X)->decVal) +//#define V_DECIMALREF(X) V_UNION(X, pdecVal) +//#define V_I1(X) V_UNION(X, cVal) + +//#ifdef _WIN64 +//#define V_INT_PTR(X) V_I8(X) +//#define V_UINT_PTR(X) V_UI8(X) +//#define V_INT_PTRREF(X) V_I8REF(X) +//#define V_UINT_PTRREF(X) V_UI8REF(X) +//#else +//#define V_INT_PTR(X) V_I4(X) +//#define V_UINT_PTR(X) V_UI4(X) +//#define V_INT_PTRREF(X) V_I4REF(X) +//#define V_UINT_PTRREF(X) V_UI4REF(X) +//#endif + +enum { + VARCMP_LT = 0, + VARCMP_EQ, + VARCMP_GT, + VARCMP_NULL // = 3 +} + +const LOCALE_USE_NLS = 0x10000000; + +const VARIANT_NOUSEROVERRIDE = 0x04; +const VARIANT_CALENDAR_HIJRI = 0x08; +const VARIANT_CALENDAR_THAI = 0x20; +const VARIANT_CALENDAR_GREGORIAN = 0x40; +const VARIANT_USE_NLS = 0x80; + +const NUMPRS_LEADING_WHITE = 0x00001; +const NUMPRS_TRAILING_WHITE = 0x00002; +const NUMPRS_LEADING_PLUS = 0x00004; +const NUMPRS_TRAILING_PLUS = 0x00008; +const NUMPRS_LEADING_MINUS = 0x00010; +const NUMPRS_TRAILING_MINUS = 0x00020; +const NUMPRS_HEX_OCT = 0x00040; +const NUMPRS_PARENS = 0x00080; +const NUMPRS_DECIMAL = 0x00100; +const NUMPRS_THOUSANDS = 0x00200; +const NUMPRS_CURRENCY = 0x00400; +const NUMPRS_EXPONENT = 0x00800; +const NUMPRS_USE_ALL = 0x01000; +const NUMPRS_STD = 0x01FFF; +const NUMPRS_NEG = 0x10000; +const NUMPRS_INEXACT = 0x20000; + +const VTBIT_I1 = 1 << VARENUM.VT_I1; +const VTBIT_UI1 = 1 << VARENUM.VT_UI1; +const VTBIT_I2 = 1 << VARENUM.VT_I2; +const VTBIT_UI2 = 1 << VARENUM.VT_UI2; +const VTBIT_I4 = 1 << VARENUM.VT_I4; +const VTBIT_UI4 = 1 << VARENUM.VT_UI4; +const VTBIT_I8 = 1 << VARENUM.VT_I8; +const VTBIT_UI8 = 1 << VARENUM.VT_UI8; +const VTBIT_R4 = 1 << VARENUM.VT_R4; +const VTBIT_R8 = 1 << VARENUM.VT_R8; +const VTBIT_CY = 1 << VARENUM.VT_CY; +const VTBIT_DECIMAL = 1 << VARENUM.VT_DECIMAL; + + +enum REGKIND{ + REGKIND_DEFAULT, + REGKIND_REGISTER, + REGKIND_NONE +} + +struct PARAMDATA{ + OLECHAR* szName; + VARTYPE vt; +} +alias PARAMDATA* LPPARAMDATA; + +struct METHODDATA{ + OLECHAR* szName; + PARAMDATA* ppdata; + DISPID dispid; + UINT iMeth; + CALLCONV cc; + UINT cArgs; + WORD wFlags; + VARTYPE vtReturn; +} +alias METHODDATA* LPMETHODDATA; + +struct INTERFACEDATA{ + METHODDATA* pmethdata; + UINT cMembers; +} +alias INTERFACEDATA* LPINTERFACEDATA; + +struct UDATE { + SYSTEMTIME st; + USHORT wDayOfYear; +} + +struct NUMPARSE { + int cDig; + uint dwInFlags; + uint dwOutFlags; + int cchUsed; + int nBaseShift; + int nPwr10; +} + + +// DAC: In MinGW, these were declared but not defined in oaidl. +// The SDK docs suggest they belong in this file instead. + +deprecated { // not actually deprecated, but they aren't converted yet. + // (will need to reinstate CreateTypeLib as well) + interface ICreateTypeInfo {}; + interface ICreateTypeInfo2 {}; + interface ICreateTypeLib {}; + interface ICreateTypeLib2 {}; + + alias ICreateTypeInfo LPCREATETYPEINFO; + alias ICreateTypeInfo2 LPCREATETYPEINFO2; + alias ICreateTypeLib LPCREATETYPELIB; + alias ICreateTypeLib2 LPCREATETYPELIB2; +} + +extern (Windows) { + BSTR SysAllocString(const(OLECHAR)*); + int SysReAllocString(BSTR*, const(OLECHAR)*); + BSTR SysAllocStringLen(const(OLECHAR)*, uint); + int SysReAllocStringLen(BSTR*, const(OLECHAR)*, uint); + void SysFreeString(BSTR); + uint SysStringLen(BSTR); + uint SysStringByteLen(BSTR); + BSTR SysAllocStringByteLen(const(char)*, uint); + int DosDateTimeToVariantTime(ushort, ushort, double*); + int VariantTimeToDosDateTime(double, ushort*, ushort*); + int VariantTimeToSystemTime(double, LPSYSTEMTIME); + int SystemTimeToVariantTime(LPSYSTEMTIME, double*); + HRESULT VarDateFromUdate(UDATE*, ULONG, DATE*); + HRESULT VarDateFromUdateEx(UDATE*, LCID, ULONG, DATE*); + HRESULT VarUdateFromDate(DATE, ULONG, UDATE*); + HRESULT SafeArrayAllocDescriptor(uint, SAFEARRAY**); + HRESULT SafeArrayAllocData(SAFEARRAY*); + SAFEARRAY* SafeArrayCreate(VARTYPE, uint, SAFEARRAYBOUND*); + HRESULT SafeArrayDestroyDescriptor(SAFEARRAY*); + HRESULT SafeArrayDestroyData(SAFEARRAY*); + HRESULT SafeArrayDestroy(SAFEARRAY*); + HRESULT SafeArrayRedim(SAFEARRAY*, SAFEARRAYBOUND*); + uint SafeArrayGetDim(SAFEARRAY*); + uint SafeArrayGetElemsize(SAFEARRAY*); + HRESULT SafeArrayGetUBound(SAFEARRAY*, uint, int*); + HRESULT SafeArrayGetLBound(SAFEARRAY*, uint, int*); + HRESULT SafeArrayLock(SAFEARRAY*); + HRESULT SafeArrayUnlock(SAFEARRAY*); + HRESULT SafeArrayAccessData(SAFEARRAY*, void**); + HRESULT SafeArrayUnaccessData(SAFEARRAY*); + HRESULT SafeArrayGetElement(SAFEARRAY*, int*, void*); + HRESULT SafeArrayPutElement(SAFEARRAY*, int*, void*); + HRESULT SafeArrayCopy(SAFEARRAY*, SAFEARRAY**); + HRESULT SafeArrayPtrOfIndex(SAFEARRAY*, int*, void**); + SAFEARRAY* SafeArrayCreateVector(VARTYPE, LONG, ULONG); + SAFEARRAY* SafeArrayCreateVectorEx(VARTYPE, LONG, ULONG, LPVOID); + HRESULT SafeArrayAllocDescriptorEx(VARTYPE, UINT, SAFEARRAY**); + HRESULT SafeArrayGetVartype(SAFEARRAY*, VARTYPE*); + HRESULT SafeArraySetRecordInfo(SAFEARRAY*, IRecordInfo); + HRESULT SafeArrayGetRecordInfo(SAFEARRAY*, IRecordInfo*); + HRESULT SafeArraySetIID(SAFEARRAY*, REFGUID); + HRESULT SafeArrayGetIID(SAFEARRAY*, GUID*); + void VariantInit(VARIANTARG*); + HRESULT VariantClear(VARIANTARG*); + HRESULT VariantCopy(VARIANTARG*, VARIANTARG*); + HRESULT VariantCopyInd(VARIANT*, VARIANTARG*); + HRESULT VariantChangeType(VARIANTARG*, VARIANTARG*, ushort, VARTYPE); + HRESULT VariantChangeTypeEx(VARIANTARG*, VARIANTARG*, LCID, ushort, VARTYPE); + HRESULT VarUI1FromI2(short, ubyte*); + HRESULT VarUI1FromI4(int, ubyte*); + HRESULT VarUI1FromR4(float, ubyte*); + HRESULT VarUI1FromR8(double, ubyte*); + HRESULT VarUI1FromCy(CY, ubyte*); + HRESULT VarUI1FromDate(DATE, ubyte*); + HRESULT VarUI1FromStr(OLECHAR*, LCID, uint, ubyte*); + HRESULT VarUI1FromDisp(LPDISPATCH, LCID, ubyte*); + HRESULT VarUI1FromBool(VARIANT_BOOL, ubyte*); + HRESULT VarI2FromUI1(ubyte, short*); + HRESULT VarI2FromI4(int, short*); + HRESULT VarI2FromR4(float, short*); + HRESULT VarI2FromR8(double, short*); + HRESULT VarI2FromCy(CY cyIn, short*); + HRESULT VarI2FromDate(DATE, short*); + HRESULT VarI2FromStr(OLECHAR*, LCID, uint, short*); + HRESULT VarI2FromDisp(LPDISPATCH, LCID, short*); + HRESULT VarI2FromBool(VARIANT_BOOL, short*); + HRESULT VarI4FromUI1(ubyte, int*); + HRESULT VarI4FromI2(short, int*); + HRESULT VarI4FromR4(float, int*); + HRESULT VarI4FromR8(double, int*); + HRESULT VarI4FromCy(CY, int*); + HRESULT VarI4FromDate(DATE, int*); + HRESULT VarI4FromStr(OLECHAR*, LCID, uint, int*); + HRESULT VarI4FromDisp(LPDISPATCH, LCID, int*); + HRESULT VarI4FromBool(VARIANT_BOOL, int*); + HRESULT VarR4FromUI1(ubyte, float*); + HRESULT VarR4FromI2(short, float*); + HRESULT VarR4FromI4(int, float*); + HRESULT VarR4FromR8(double, float*); + HRESULT VarR4FromCy(CY, float*); + HRESULT VarR4FromDate(DATE, float*); + HRESULT VarR4FromStr(OLECHAR*, LCID, uint, float*); + HRESULT VarR4FromDisp(LPDISPATCH, LCID, float*); + HRESULT VarR4FromBool(VARIANT_BOOL, float*); + HRESULT VarR8FromUI1(ubyte, double*); + HRESULT VarR8FromI2(short, double*); + HRESULT VarR8FromI4(int, double*); + HRESULT VarR8FromR4(float, double*); + HRESULT VarR8FromCy(CY, double*); + HRESULT VarR8FromDate(DATE, double*); + HRESULT VarR8FromStr(OLECHAR*, LCID, uint, double*); + HRESULT VarR8FromDisp(LPDISPATCH, LCID, double*); + HRESULT VarR8FromBool(VARIANT_BOOL, double*); + HRESULT VarR8FromDec(DECIMAL*, double*); + HRESULT VarDateFromUI1(ubyte, DATE*); + HRESULT VarDateFromI2(short, DATE*); + HRESULT VarDateFromI4(int, DATE*); + HRESULT VarDateFromR4(float, DATE*); + HRESULT VarDateFromR8(double, DATE*); + HRESULT VarDateFromCy(CY, DATE*); + HRESULT VarDateFromStr(OLECHAR*, LCID, uint, DATE*); + HRESULT VarDateFromDisp(LPDISPATCH, LCID, DATE*); + HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); + HRESULT VarCyFromUI1(ubyte, CY*); + HRESULT VarCyFromI2(short, CY*); + HRESULT VarCyFromI4(int, CY*); + HRESULT VarCyFromR4(float, CY*); + HRESULT VarCyFromR8(double, CY*); + HRESULT VarCyFromDate(DATE, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, uint, CY*); + HRESULT VarCyFromDisp(LPDISPATCH, LCID, CY*); + HRESULT VarCyFromBool(VARIANT_BOOL, CY*); + HRESULT VarBstrFromUI1(ubyte, LCID, uint, BSTR*); + HRESULT VarBstrFromI2(short, LCID, uint, BSTR*); + HRESULT VarBstrFromI4(int, LCID, uint, BSTR*); + HRESULT VarBstrFromR4(float, LCID, uint, BSTR*); + HRESULT VarBstrFromR8(double, LCID, uint, BSTR*); + HRESULT VarBstrFromCy(CY, LCID, uint, BSTR*); + HRESULT VarBstrFromDate(DATE, LCID, uint, BSTR*); + HRESULT VarBstrFromDisp(LPDISPATCH, LCID, uint, BSTR*); + HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, uint, BSTR*); + HRESULT VarBoolFromUI1(ubyte, VARIANT_BOOL*); + HRESULT VarBoolFromI2(short, VARIANT_BOOL*); + HRESULT VarBoolFromI4(int, VARIANT_BOOL*); + HRESULT VarBoolFromR4(float, VARIANT_BOOL*); + HRESULT VarBoolFromR8(double, VARIANT_BOOL*); + HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); + HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); + HRESULT VarBoolFromStr(OLECHAR*, LCID, uint, VARIANT_BOOL*); + HRESULT VarBoolFromDisp(LPDISPATCH, LCID, VARIANT_BOOL*); + HRESULT VarDecFromR8(double, DECIMAL*); + ULONG LHashValOfNameSysA(SYSKIND, LCID, const(char)*); + ULONG LHashValOfNameSys(SYSKIND, LCID, const(OLECHAR)*); + HRESULT LoadTypeLib(const(OLECHAR)*, LPTYPELIB*); + HRESULT LoadTypeLibEx(LPCOLESTR, REGKIND, LPTYPELIB*); + HRESULT LoadRegTypeLib(REFGUID, WORD, WORD, LCID, LPTYPELIB*); + HRESULT QueryPathOfRegTypeLib(REFGUID, ushort, ushort, LCID, LPBSTR); + HRESULT RegisterTypeLib(LPTYPELIB, OLECHAR*, OLECHAR*); + HRESULT UnRegisterTypeLib(REFGUID, WORD, WORD, LCID, SYSKIND); + // not actually deprecated, but depends on unconverted ICreateTypeLib + deprecated HRESULT CreateTypeLib(SYSKIND, const(OLECHAR)*, LPCREATETYPELIB*); + HRESULT DispGetParam(DISPPARAMS*, UINT, VARTYPE, VARIANT*, UINT*); + HRESULT DispGetIDsOfNames(LPTYPEINFO, OLECHAR**, UINT, DISPID*); + HRESULT DispInvoke(void*, LPTYPEINFO, DISPID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); + HRESULT CreateDispTypeInfo(INTERFACEDATA*, LCID, LPTYPEINFO*); + HRESULT CreateStdDispatch(IUnknown, void*, LPTYPEINFO, IUnknown*); + HRESULT RegisterActiveObject(IUnknown, REFCLSID, DWORD, DWORD*); + HRESULT RevokeActiveObject(DWORD, void*); + HRESULT GetActiveObject(REFCLSID, void*, IUnknown*); + HRESULT SetErrorInfo(uint, LPERRORINFO); + HRESULT GetErrorInfo(uint, LPERRORINFO*); + HRESULT CreateErrorInfo(LPCREATEERRORINFO*); + uint OaBuildVersion(); + HRESULT VectorFromBstr (BSTR, SAFEARRAY**); + HRESULT BstrFromVector (SAFEARRAY*, BSTR*); + HRESULT VarParseNumFromStr(OLECHAR*, LCID, ULONG, NUMPARSE*, BYTE*); + HRESULT VarNumFromParseNum(NUMPARSE*, BYTE*, ULONG, VARIANT*); + + HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); + + HRESULT VarUI1FromI2(SHORT, BYTE*); + HRESULT VarUI1FromI4(LONG, BYTE*); + HRESULT VarUI1FromI8(LONG64, BYTE*); + HRESULT VarUI1FromR4(FLOAT, BYTE*); + HRESULT VarUI1FromR8(DOUBLE, BYTE*); + HRESULT VarUI1FromDate(DATE, BYTE*); + HRESULT VarUI1FromBool(VARIANT_BOOL, BYTE*); + HRESULT VarUI1FromI1(byte, BYTE*); + HRESULT VarUI1FromUI2(USHORT, BYTE*); + HRESULT VarUI1FromUI4(ULONG, BYTE*); + HRESULT VarUI1FromUI8(ULONG64, BYTE*); + HRESULT VarUI1FromStr(OLECHAR*, LCID, ULONG, BYTE*); + HRESULT VarUI1FromCy(CY, BYTE*); + HRESULT VarUI1FromDec(DECIMAL*, BYTE*); + HRESULT VarUI1FromDisp(IDispatch, LCID, BYTE*); + + HRESULT VarI2FromUI1(BYTE, SHORT*); + HRESULT VarI2FromI4(LONG, SHORT*); + HRESULT VarI2FromI8(LONG64, SHORT*); + HRESULT VarI2FromR4(FLOAT, SHORT*); + HRESULT VarI2FromR8(DOUBLE, SHORT*); + HRESULT VarI2FromDate(DATE, SHORT*); + HRESULT VarI2FromBool(VARIANT_BOOL, SHORT*); + HRESULT VarI2FromI1(byte, SHORT*); + HRESULT VarI2FromUI2(USHORT, SHORT*); + HRESULT VarI2FromUI4(ULONG, SHORT*); + HRESULT VarI2FromUI8(ULONG64, SHORT*); + HRESULT VarI2FromStr(OLECHAR*, LCID, ULONG, SHORT*); + HRESULT VarI2FromCy(CY, SHORT*); + HRESULT VarI2FromDec(DECIMAL*, SHORT*); + HRESULT VarI2FromDisp(IDispatch, LCID, SHORT*); + + HRESULT VarI4FromUI1(BYTE, LONG*); + HRESULT VarI4FromI2(SHORT, LONG*); + HRESULT VarI4FromI8(LONG64, LONG*); + HRESULT VarI4FromR4(FLOAT, LONG*); + HRESULT VarI4FromR8(DOUBLE, LONG*); + HRESULT VarI4FromDate(DATE, LONG*); + HRESULT VarI4FromBool(VARIANT_BOOL, LONG*); + HRESULT VarI4FromI1(byte, LONG*); + HRESULT VarI4FromUI2(USHORT, LONG*); + HRESULT VarI4FromUI4(ULONG, LONG*); + HRESULT VarI4FromUI8(ULONG64, LONG*); + HRESULT VarI4FromStr(OLECHAR*, LCID, ULONG, LONG*); + HRESULT VarI4FromCy(CY, LONG*); + HRESULT VarI4FromDec(DECIMAL*, LONG*); + HRESULT VarI4FromDisp(IDispatch, LCID, LONG*); + + HRESULT VarI8FromUI1(BYTE, LONG64*); + HRESULT VarI8FromI2(SHORT, LONG64*); + HRESULT VarI8FromI4(LONG, LONG64*); + HRESULT VarI8FromR4(FLOAT, LONG64*); + HRESULT VarI8FromR8(DOUBLE, LONG64*); + HRESULT VarI8FromDate(DATE, LONG64*); + HRESULT VarI8FromStr(OLECHAR*, LCID, ULONG, LONG64*); + HRESULT VarI8FromBool(VARIANT_BOOL, LONG64*); + HRESULT VarI8FromI1(byte, LONG64*); + HRESULT VarI8FromUI2(USHORT, LONG64*); + HRESULT VarI8FromUI4(ULONG, LONG64*); + HRESULT VarI8FromUI8(ULONG64, LONG64*); + HRESULT VarI8FromDec(DECIMAL* pdecIn, LONG64*); + HRESULT VarI8FromInt(INT intIn, LONG64*); + HRESULT VarI8FromCy(CY, LONG64*); + HRESULT VarI8FromDisp(IDispatch, LCID, LONG64*); + + HRESULT VarR4FromUI1(BYTE, FLOAT*); + HRESULT VarR4FromI2(SHORT, FLOAT*); + HRESULT VarR4FromI4(LONG, FLOAT*); + HRESULT VarR4FromI8(LONG64, FLOAT*); + HRESULT VarR4FromR8(DOUBLE, FLOAT*); + HRESULT VarR4FromDate(DATE, FLOAT*); + HRESULT VarR4FromBool(VARIANT_BOOL, FLOAT*); + HRESULT VarR4FromI1(byte, FLOAT*); + HRESULT VarR4FromUI2(USHORT, FLOAT*); + HRESULT VarR4FromUI4(ULONG, FLOAT*); + HRESULT VarR4FromUI8(ULONG64, FLOAT*); + HRESULT VarR4FromStr(OLECHAR*, LCID, ULONG, FLOAT*); + HRESULT VarR4FromCy(CY, FLOAT*); + HRESULT VarR4FromDec(DECIMAL*, FLOAT*); + HRESULT VarR4FromDisp(IDispatch, LCID, FLOAT*); + + HRESULT VarR8FromUI1(BYTE, double*); + HRESULT VarR8FromI2(SHORT, double*); + HRESULT VarR8FromI4(LONG, double*); + HRESULT VarR8FromI8(LONG64, double*); + HRESULT VarR8FromR4(FLOAT, double*); + HRESULT VarR8FromDate(DATE, double*); + HRESULT VarR8FromBool(VARIANT_BOOL, double*); + HRESULT VarR8FromI1(byte, double*); + HRESULT VarR8FromUI2(USHORT, double*); + HRESULT VarR8FromUI4(ULONG, double*); + HRESULT VarR8FromUI8(ULONG64, double*); + HRESULT VarR8FromStr(OLECHAR*, LCID, ULONG, double*); + HRESULT VarR8FromCy(CY, double*); + HRESULT VarR8FromDec(DECIMAL*, double*); + HRESULT VarR8FromDisp(IDispatch, LCID, double*); + + HRESULT VarDateFromUI1(BYTE, DATE*); + HRESULT VarDateFromI2(SHORT, DATE*); + HRESULT VarDateFromI4(LONG, DATE*); + HRESULT VarDateFromI8(LONG64, DATE*); + HRESULT VarDateFromR4(FLOAT, DATE*); + HRESULT VarDateFromR8(DOUBLE, DATE*); + HRESULT VarDateFromStr(OLECHAR*, LCID, ULONG, DATE*); + HRESULT VarDateFromI1(byte, DATE*); + HRESULT VarDateFromUI2(USHORT, DATE*); + HRESULT VarDateFromUI4(ULONG, DATE*); + HRESULT VarDateFromUI8(ULONG64, DATE*); + HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); + HRESULT VarDateFromCy(CY, DATE*); + HRESULT VarDateFromDec(DECIMAL*, DATE*); + HRESULT VarDateFromDisp(IDispatch, LCID, DATE*); + + HRESULT VarCyFromUI1(BYTE, CY*); + HRESULT VarCyFromI2(SHORT sIn, CY*); + HRESULT VarCyFromI4(LONG, CY*); + HRESULT VarCyFromI8(LONG64, CY*); + HRESULT VarCyFromR4(FLOAT, CY*); + HRESULT VarCyFromR8(DOUBLE, CY*); + HRESULT VarCyFromDate(DATE, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); + HRESULT VarCyFromBool(VARIANT_BOOL, CY*); + HRESULT VarCyFromI1(byte, CY*); + HRESULT VarCyFromUI2(USHORT, CY*); + HRESULT VarCyFromUI4(ULONG, CY*); + HRESULT VarCyFromUI8(ULONG64, CY*); + HRESULT VarCyFromDec(DECIMAL*, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); + HRESULT VarCyFromDisp(IDispatch, LCID, CY*); + + HRESULT VarBstrFromUI1(BYTE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI2(SHORT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI4(LONG, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI8(LONG64, LCID, ULONG, BSTR*); + HRESULT VarBstrFromR4(FLOAT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromR8(DOUBLE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDate(DATE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI1(byte, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI2(USHORT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI8(ULONG64, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI4(ULONG, LCID, ULONG, BSTR*); + HRESULT VarBstrFromCy(CY, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDec(DECIMAL*, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDisp(IDispatch, LCID, ULONG, BSTR*); + + HRESULT VarBoolFromUI1(BYTE, VARIANT_BOOL*); + HRESULT VarBoolFromI2(SHORT, VARIANT_BOOL*); + HRESULT VarBoolFromI4(LONG, VARIANT_BOOL*); + HRESULT VarBoolFromI8(LONG64, VARIANT_BOOL*); + HRESULT VarBoolFromR4(FLOAT, VARIANT_BOOL*); + HRESULT VarBoolFromR8(DOUBLE, VARIANT_BOOL*); + HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); + HRESULT VarBoolFromStr(OLECHAR*, LCID, ULONG, VARIANT_BOOL*); + HRESULT VarBoolFromI1(byte, VARIANT_BOOL*); + HRESULT VarBoolFromUI2(USHORT, VARIANT_BOOL*); + HRESULT VarBoolFromUI4(ULONG, VARIANT_BOOL*); + HRESULT VarBoolFromUI8(ULONG64, VARIANT_BOOL*); + HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); + HRESULT VarBoolFromDec(DECIMAL*, VARIANT_BOOL*); + HRESULT VarBoolFromDisp(IDispatch, LCID, VARIANT_BOOL*); + + HRESULT VarI1FromUI1(BYTE, byte*); + HRESULT VarI1FromI2(SHORT, byte*); + HRESULT VarI1FromI4(LONG, byte*); + HRESULT VarI1FromI8(LONG64, byte*); + HRESULT VarI1FromR4(FLOAT, byte*); + HRESULT VarI1FromR8(DOUBLE, byte*); + HRESULT VarI1FromDate(DATE, byte*); + HRESULT VarI1FromStr(OLECHAR*, LCID, ULONG, byte*); + HRESULT VarI1FromBool(VARIANT_BOOL, byte*); + HRESULT VarI1FromUI2(USHORT, byte*); + HRESULT VarI1FromUI4(ULONG, byte*); + HRESULT VarI1FromUI8(ULONG64, byte*); + HRESULT VarI1FromCy(CY, byte*); + HRESULT VarI1FromDec(DECIMAL*, byte*); + HRESULT VarI1FromDisp(IDispatch, LCID, byte*); + + HRESULT VarUI2FromUI1(BYTE, USHORT*); + HRESULT VarUI2FromI2(SHORT, USHORT*); + HRESULT VarUI2FromI4(LONG, USHORT*); + HRESULT VarUI2FromI8(LONG64, USHORT*); + HRESULT VarUI2FromR4(FLOAT, USHORT*); + HRESULT VarUI2FromR8(DOUBLE, USHORT*); + HRESULT VarUI2FromDate(DATE, USHORT*); + HRESULT VarUI2FromStr(OLECHAR*, LCID, ULONG, USHORT*); + HRESULT VarUI2FromBool(VARIANT_BOOL, USHORT*); + HRESULT VarUI2FromI1(byte, USHORT*); + HRESULT VarUI2FromUI4(ULONG, USHORT*); + HRESULT VarUI2FromUI8(ULONG64, USHORT*); + HRESULT VarUI2FromCy(CY, USHORT*); + HRESULT VarUI2FromDec(DECIMAL*, USHORT*); + HRESULT VarUI2FromDisp(IDispatch, LCID, USHORT*); + + HRESULT VarUI4FromStr(OLECHAR*, LCID, ULONG, ULONG*); + HRESULT VarUI4FromUI1(BYTE, ULONG*); + HRESULT VarUI4FromI2(SHORT, ULONG*); + HRESULT VarUI4FromI4(LONG, ULONG*); + HRESULT VarUI4FromI8(LONG64, ULONG*); + HRESULT VarUI4FromR4(FLOAT, ULONG*); + HRESULT VarUI4FromR8(DOUBLE, ULONG*); + HRESULT VarUI4FromDate(DATE, ULONG*); + HRESULT VarUI4FromBool(VARIANT_BOOL, ULONG*); + HRESULT VarUI4FromI1(byte, ULONG*); + HRESULT VarUI4FromUI2(USHORT, ULONG*); + HRESULT VarUI4FromUI8(ULONG64, ULONG*); + HRESULT VarUI4FromCy(CY, ULONG*); + HRESULT VarUI4FromDec(DECIMAL*, ULONG*); + HRESULT VarUI4FromDisp(IDispatch, LCID, ULONG*); + + HRESULT VarUI8FromUI1(BYTE, ULONG64*); + HRESULT VarUI8FromI2(SHORT, ULONG64*); + HRESULT VarUI8FromI4(LONG, ULONG64*); + HRESULT VarUI8FromI8(LONG64, ULONG64*); + HRESULT VarUI8FromR4(FLOAT, ULONG64*); + HRESULT VarUI8FromR8(DOUBLE, ULONG64*); + HRESULT VarUI8FromDate(DATE, ULONG64*); + HRESULT VarUI8FromStr(OLECHAR*, LCID, ULONG, ULONG64*); + HRESULT VarUI8FromBool(VARIANT_BOOL, ULONG64*); + HRESULT VarUI8FromI1(byte, ULONG64*); + HRESULT VarUI8FromUI2(USHORT, ULONG64*); + HRESULT VarUI8FromUI4(ULONG, ULONG64*); + HRESULT VarUI8FromDec(DECIMAL*, ULONG64*); + HRESULT VarUI8FromInt(INT, ULONG64*); + HRESULT VarUI8FromCy(CY, ULONG64*); + HRESULT VarUI8FromDisp(IDispatch, LCID, ULONG64*); + + HRESULT VarDecFromUI1(BYTE, DECIMAL*); + HRESULT VarDecFromI2(SHORT, DECIMAL*); + HRESULT VarDecFromI4(LONG, DECIMAL*); + HRESULT VarDecFromI8(LONG64, DECIMAL*); + HRESULT VarDecFromR4(FLOAT, DECIMAL*); + HRESULT VarDecFromR8(DOUBLE, DECIMAL*); + HRESULT VarDecFromDate(DATE, DECIMAL*); + HRESULT VarDecFromStr(OLECHAR*, LCID, ULONG, DECIMAL*); + HRESULT VarDecFromBool(VARIANT_BOOL, DECIMAL*); + HRESULT VarDecFromI1(byte, DECIMAL*); + HRESULT VarDecFromUI2(USHORT, DECIMAL*); + HRESULT VarDecFromUI4(ULONG, DECIMAL*); + HRESULT VarDecFromUI8(ULONG64, DECIMAL*); + HRESULT VarDecFromCy(CY, DECIMAL*); + HRESULT VarDecFromDisp(IDispatch, LCID, DECIMAL*); + + HRESULT VarDecNeg(const(DECIMAL)*, DECIMAL*); + HRESULT VarR4CmpR8(float, double); + HRESULT VarR8Pow(double, double, double*); + HRESULT VarR8Round(double, int, double*); + HRESULT VarDecAbs(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecAdd(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecCmp(const(DECIMAL)*, const(DECIMAL)*); + HRESULT VarDecCmpR8(const(DECIMAL)*, DOUBLE); + HRESULT VarDecDiv(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecFix(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecInt(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecMul(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecRound(const(DECIMAL)*, int, DECIMAL*); + HRESULT VarDecSub(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarCyAbs(CY, CY*); + HRESULT VarCyAdd(CY, CY, CY*); + HRESULT VarCyCmp(CY, CY); + HRESULT VarCyCmpR8(CY, DOUBLE); + HRESULT VarCyFix(CY, CY*); + HRESULT VarCyInt(CY, CY*); + HRESULT VarCyMul(CY, CY, CY*); + HRESULT VarCyMulI4(CY, LONG, CY*); + HRESULT VarCyMulI8(CY, LONG64, CY*); + HRESULT VarCyNeg(CY, CY*); + HRESULT VarCyRound(CY, INT, CY*); + HRESULT VarCySub(CY, CY, CY*); + HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarAnd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarCat(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarEqv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarIdiv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarImp(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMod(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarOr(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarPow(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarXor(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarAbs(LPVARIANT, LPVARIANT); + HRESULT VarFix(LPVARIANT, LPVARIANT); + HRESULT VarInt(LPVARIANT, LPVARIANT); + HRESULT VarNeg(LPVARIANT, LPVARIANT); + HRESULT VarNot(LPVARIANT, LPVARIANT); + HRESULT VarRound(LPVARIANT, int, LPVARIANT); + HRESULT VarCmp(LPVARIANT, LPVARIANT, LCID, ULONG); + HRESULT VarBstrCmp(BSTR, BSTR, LCID, ULONG); + HRESULT VarBstrCat(BSTR, BSTR, BSTR*); +} diff --git a/src/core/sys/windows/olectl.d b/src/core/sys/windows/olectl.d index 5580d74c86..f964dda84d 100644 --- a/src/core/sys/windows/olectl.d +++ b/src/core/sys/windows/olectl.d @@ -1,397 +1,397 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_olectl.d) - */ -module core.sys.windows.olectl; - -// In conversion from MinGW, the following was deleted: -//#define FONTSIZE(n) {n##0000, 0} - -import core.sys.windows.ocidl, core.sys.windows.olectlid; -private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.oleauto, core.sys.windows.unknwn, - core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.winuser, core.sys.windows.wtypes; -private import core.sys.windows.ntdef; // for NTSTATUS -private import core.sys.windows.objfwd; // for LPSTREAM -private import core.sys.windows.winerror; // for SCODE - - -private { - // These replace C macros. - template ITF_ERROR_SCODE_FOR_D(int c) - { - const SCODE ITF_ERROR_SCODE_FOR_D - = (SEVERITY_ERROR << 31) | (FACILITY_ITF << 16) | c; - } - - template ITF_SUCCESS_SCODE_FOR_D(int c) - { - const SCODE ITF_SUCCESS_SCODE_FOR_D - = (SEVERITY_SUCCESS << 31) | (FACILITY_ITF << 16) | c; - } - - template STD_CTL_SCODE(int c) - { - const SCODE STD_CTL_SCODE - = (SEVERITY_ERROR << 31) | (FACILITY_CONTROL << 16) | c; - } -} - -enum : SCODE { - CTL_E_ILLEGALFUNCTIONCALL = STD_CTL_SCODE!(5), - CTL_E_OVERFLOW = STD_CTL_SCODE!(6), - CTL_E_OUTOFMEMORY = STD_CTL_SCODE!(7), - CTL_E_DIVISIONBYZERO = STD_CTL_SCODE!(11), - CTL_E_OUTOFSTRINGSPACE = STD_CTL_SCODE!(14), - CTL_E_OUTOFSTACKSPACE = STD_CTL_SCODE!(28), - CTL_E_BADFILENAMEORNUMBER = STD_CTL_SCODE!(52), - CTL_E_FILENOTFOUND = STD_CTL_SCODE!(53), - CTL_E_BADFILEMODE = STD_CTL_SCODE!(54), - CTL_E_FILEALREADYOPEN = STD_CTL_SCODE!(55), - CTL_E_DEVICEIOERROR = STD_CTL_SCODE!(57), - CTL_E_FILEALREADYEXISTS = STD_CTL_SCODE!(58), - CTL_E_BADRECORDLENGTH = STD_CTL_SCODE!(59), - CTL_E_DISKFULL = STD_CTL_SCODE!(61), - CTL_E_BADRECORDNUMBER = STD_CTL_SCODE!(63), - CTL_E_BADFILENAME = STD_CTL_SCODE!(64), - CTL_E_TOOMANYFILES = STD_CTL_SCODE!(67), - CTL_E_DEVICEUNAVAILABLE = STD_CTL_SCODE!(68), - CTL_E_PERMISSIONDENIED = STD_CTL_SCODE!(70), - CTL_E_DISKNOTREADY = STD_CTL_SCODE!(71), - CTL_E_PATHFILEACCESSERROR = STD_CTL_SCODE!(75), - CTL_E_PATHNOTFOUND = STD_CTL_SCODE!(76), - CTL_E_INVALIDPATTERNSTRING = STD_CTL_SCODE!(93), - CTL_E_INVALIDUSEOFNULL = STD_CTL_SCODE!(94), - CTL_E_INVALIDFILEFORMAT = STD_CTL_SCODE!(321), - CTL_E_INVALIDPROPERTYVALUE = STD_CTL_SCODE!(380), - CTL_E_INVALIDPROPERTYARRAYINDEX = STD_CTL_SCODE!(381), - CTL_E_SETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(382), - CTL_E_SETNOTSUPPORTED = STD_CTL_SCODE!(383), - CTL_E_NEEDPROPERTYARRAYINDEX = STD_CTL_SCODE!(385), - CTL_E_SETNOTPERMITTED = STD_CTL_SCODE!(387), - CTL_E_GETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(393), - CTL_E_GETNOTSUPPORTED = STD_CTL_SCODE!(394), - CTL_E_PROPERTYNOTFOUND = STD_CTL_SCODE!(422), - CTL_E_INVALIDCLIPBOARDFORMAT = STD_CTL_SCODE!(460), - CTL_E_INVALIDPICTURE = STD_CTL_SCODE!(481), - CTL_E_PRINTERERROR = STD_CTL_SCODE!(482), - CTL_E_CANTSAVEFILETOTEMP = STD_CTL_SCODE!(735), - CTL_E_SEARCHTEXTNOTFOUND = STD_CTL_SCODE!(744), - CTL_E_REPLACEMENTSTOOLONG = STD_CTL_SCODE!(746), - CTL_E_CUSTOM_FIRST = STD_CTL_SCODE!(600) -} - -const SCODE CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST+2; - -enum : SCODE { - CONNECT_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), - CONNECT_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), - CONNECT_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), - CONNECT_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), - CONNECT_E_NOCONNECTION = CONNECT_E_FIRST + 0, - CONNECT_E_ADVISELIMIT = CONNECT_E_FIRST + 1, - CONNECT_E_CANNOTCONNECT = CONNECT_E_FIRST + 2, - CONNECT_E_OVERRIDDEN = CONNECT_E_FIRST + 3, - - SELFREG_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), - SELFREG_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), - SELFREG_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), - SELFREG_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), - SELFREG_E_TYPELIB = SELFREG_E_FIRST + 0, - SELFREG_E_CLASS = SELFREG_E_FIRST + 1, - - PERPROP_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), - PERPROP_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), - PERPROP_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), - PERPROP_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), - PERPROP_E_NOPAGEAVAILABLE = PERPROP_E_FIRST -} - -enum { - OLEMISC_RECOMPOSEONRESIZE = 0x1, - OLEMISC_ONLYICONIC = 0x2, - OLEMISC_INSERTNOTREPLACE = 0x4, - OLEMISC_STATIC = 0x8, - OLEMISC_CANTLINKINSIDE = 0x10, - OLEMISC_CANLINKBYOLE1 = 0x20, - OLEMISC_ISLINKOBJECT = 0x40, - OLEMISC_INSIDEOUT = 0x80, - OLEMISC_ACTIVATEWHENVISIBLE = 0x100, - OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200, - OLEMISC_INVISIBLEATRUNTIME = 0x400, - OLEMISC_ALWAYSRUN = 0x800, - OLEMISC_ACTSLIKEBUTTON = 0x1000, - OLEMISC_ACTSLIKELABEL = 0x2000, - OLEMISC_NOUIACTIVATE = 0x4000, - OLEMISC_ALIGNABLE = 0x8000, - OLEMISC_SIMPLEFRAME = 0x10000, - OLEMISC_SETCLIENTSITEFIRST = 0x20000, - OLEMISC_IMEMODE = 0x40000, - OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000, - OLEMISC_WANTSTOMENUMERGE = 0x100000, - OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 -} -const OLEIVERB_PROPERTIES = -7; - -const VT_STREAMED_PROPSET = 73; -const VT_STORED_PROPSET = 74; -const VT_BLOB_PROPSET = 75; -const VT_VERBOSE_ENUM = 76; -const VT_COLOR = VARENUM.VT_I4; -const VT_XPOS_PIXELS = VARENUM.VT_I4; -const VT_YPOS_PIXELS = VARENUM.VT_I4; -const VT_XSIZE_PIXELS = VARENUM.VT_I4; -const VT_YSIZE_PIXELS = VARENUM.VT_I4; -const VT_XPOS_HIMETRIC = VARENUM.VT_I4; -const VT_YPOS_HIMETRIC = VARENUM.VT_I4; -const VT_XSIZE_HIMETRIC = VARENUM.VT_I4; -const VT_YSIZE_HIMETRIC = VARENUM.VT_I4; -const VT_TRISTATE = VARENUM.VT_I2; -const VT_OPTEXCLUSIVE = VARENUM.VT_BOOL; -const VT_FONT = VARENUM.VT_DISPATCH; -const VT_PICTURE = VARENUM.VT_DISPATCH; -const VT_HANDLE = VARENUM.VT_I4; - -enum { - OCM__BASE = WM_USER + 0x1c00, - OCM_COMMAND = OCM__BASE + WM_COMMAND, - OCM_CTLCOLORBTN = OCM__BASE + WM_CTLCOLORBTN, - OCM_CTLCOLOREDIT = OCM__BASE + WM_CTLCOLOREDIT, - OCM_CTLCOLORDLG = OCM__BASE + WM_CTLCOLORDLG, - OCM_CTLCOLORLISTBOX = OCM__BASE + WM_CTLCOLORLISTBOX, - OCM_CTLCOLORMSGBOX = OCM__BASE + WM_CTLCOLORMSGBOX, - OCM_CTLCOLORSCROLLBAR = OCM__BASE + WM_CTLCOLORSCROLLBAR, - OCM_CTLCOLORSTATIC = OCM__BASE + WM_CTLCOLORSTATIC, - OCM_DRAWITEM = OCM__BASE + WM_DRAWITEM, - OCM_MEASUREITEM = OCM__BASE + WM_MEASUREITEM, - OCM_DELETEITEM = OCM__BASE + WM_DELETEITEM, - OCM_VKEYTOITEM = OCM__BASE + WM_VKEYTOITEM, - OCM_CHARTOITEM = OCM__BASE + WM_CHARTOITEM, - OCM_COMPAREITEM = OCM__BASE + WM_COMPAREITEM, - OCM_HSCROLL = OCM__BASE + WM_HSCROLL, - OCM_VSCROLL = OCM__BASE + WM_VSCROLL, - OCM_PARENTNOTIFY = OCM__BASE + WM_PARENTNOTIFY, - OCM_NOTIFY = OCM__BASE + WM_NOTIFY -} - -enum { - CTRLINFO_EATS_RETURN = 1, - CTRLINFO_EATS_ESCAPE -} - -enum { - XFORMCOORDS_POSITION = 1, - XFORMCOORDS_SIZE = 2, - XFORMCOORDS_HIMETRICTOCONTAINER = 4, - XFORMCOORDS_CONTAINERTOHIMETRIC = 8 -} - -const GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1; - -enum { - PROPPAGESTATUS_DIRTY = 1, - PROPPAGESTATUS_VALIDATE = 2 -} - -enum { - PICTURE_SCALABLE = 1, - PICTURE_TRANSPARENT = 2 -} - -enum { - PICTYPE_UNINITIALIZED = -1, - PICTYPE_NONE, // = 0 - PICTYPE_BITMAP, - PICTYPE_METAFILE, - PICTYPE_ICON, - PICTYPE_ENHMETAFILE // = 4 -} - -enum { - DISPID_AUTOSIZE = -500, - DISPID_BACKCOLOR = -501, - DISPID_BACKSTYLE = -502, - DISPID_BORDERCOLOR = -503, - DISPID_BORDERSTYLE = -504, - DISPID_BORDERWIDTH = -505, - DISPID_DRAWMODE = -507, - DISPID_DRAWSTYLE = -508, - DISPID_DRAWWIDTH = -509, - DISPID_FILLCOLOR = -510, - DISPID_FILLSTYLE = -511, - DISPID_FONT = -512, - DISPID_FORECOLOR = -513, - DISPID_ENABLED = -514, - DISPID_HWND = -515, - DISPID_TABSTOP = -516, - DISPID_TEXT = -517, - DISPID_CAPTION = -518, - DISPID_BORDERVISIBLE = -519, - DISPID_APPEARANCE = -520, - DISPID_MOUSEPOINTER = -521, - DISPID_MOUSEICON = -522, - DISPID_PICTURE = -523, - DISPID_VALID = -524, - DISPID_REFRESH = -550, - DISPID_DOCLICK = -551, - DISPID_ABOUTBOX = -552, - DISPID_CLICK = -600, - DISPID_DBLCLICK = -601, - DISPID_KEYDOWN = -602, - DISPID_KEYPRESS = -603, - DISPID_KEYUP = -604, - DISPID_MOUSEDOWN = -605, - DISPID_MOUSEMOVE = -606, - DISPID_MOUSEUP = -607, - DISPID_ERROREVENT = -608, - DISPID_AMBIENT_BACKCOLOR = -701, - DISPID_AMBIENT_DISPLAYNAME = -702, - DISPID_AMBIENT_FONT = -703, - DISPID_AMBIENT_FORECOLOR = -704, - DISPID_AMBIENT_LOCALEID = -705, - DISPID_AMBIENT_MESSAGEREFLECT = -706, - DISPID_AMBIENT_SCALEUNITS = -707, - DISPID_AMBIENT_TEXTALIGN = -708, - DISPID_AMBIENT_USERMODE = -709, - DISPID_AMBIENT_UIDEAD = -710, - DISPID_AMBIENT_SHOWGRABHANDLES = -711, - DISPID_AMBIENT_SHOWHATCHING = -712, - DISPID_AMBIENT_DISPLAYASDEFAULT = -713, - DISPID_AMBIENT_SUPPORTSMNEMONICS = -714, - DISPID_AMBIENT_AUTOCLIP = -715, - DISPID_AMBIENT_APPEARANCE = -716, - DISPID_AMBIENT_CODEPAGE = -725, - DISPID_AMBIENT_PALETTE = -726, - DISPID_AMBIENT_CHARSET = -727, - DISPID_AMBIENT_RIGHTTOLEFT = -732, - DISPID_AMBIENT_TOPTOBOTTOM = -733 -} - -enum { - DISPID_FONT_NAME = 0, - DISPID_FONT_SIZE = 2, - DISPID_FONT_BOLD, - DISPID_FONT_ITALIC, - DISPID_FONT_UNDER, - DISPID_FONT_STRIKE, - DISPID_FONT_WEIGHT, - DISPID_FONT_CHARSET // = 8 -} - -enum { - DISPID_PICT_HANDLE = 0, - DISPID_PICT_HPAL = 2, - DISPID_PICT_TYPE, - DISPID_PICT_WIDTH, - DISPID_PICT_HEIGHT, - DISPID_PICT_RENDER // = 6 -} - -alias IOleControl LPOLECONTROL; -alias IOleControlSite LPOLECONTROLSITE; -alias ISimpleFrameSite LPSIMPLEFRAMESITE; -alias IPersistPropertyBag LPPERSISTPROPERTYBAG; -alias IPersistStreamInit LPPERSISTSTREAMINIT; -alias IPersistMemory LPPERSISTMEMORY; -alias IPropertyNotifySink LPPROPERTYNOTIFYSINK; -alias IProvideClassInfo LPPROVIDECLASSINFO; -alias IProvideClassInfo2 LPPROVIDECLASSINFO2; -alias IConnectionPointContainer LPCONNECTIONPOINTCONTAINER; -alias IClassFactory2 LPCLASSFACTORY2; -alias ISpecifyPropertyPages LPSPECIFYPROPERTYPAGES; -alias IPerPropertyBrowsing LPPERPROPERTYBROWSING; -alias IPropertyPage LPPROPERTYPAGE; -alias IPropertyPage2 LPPROPERTYPAGE2; - -alias IPicture LPPICTURE; -alias IPictureDisp LPPICTUREDISP; -alias int OLE_XPOS_PIXELS; -alias int OLE_YPOS_PIXELS; -alias int OLE_XSIZE_PIXELS; -alias int OLE_YSIZE_PIXELS; -alias float OLE_XPOS_CONTAINER; -alias float OLE_YPOS_CONTAINER; -alias float OLE_XSIZE_CONTAINER; - -alias VARIANT_BOOL OLE_OPTEXCLUSIVE; -alias VARIANT_BOOL OLE_CANCELBOOL; -alias VARIANT_BOOL OLE_ENABLEDEFAULTBOOL; - -align(8): - -enum OLE_TRISTATE { - triUnchecked, - triChecked1, - triGray -} - -struct OCPFIPARAMS { - ULONG cbStructSize; - HWND hWndOwner; - int x; - int y; - LPCOLESTR lpszCaption; - ULONG cObjects; - LPUNKNOWN *lplpUnk; - ULONG cPages; - CLSID *lpPages; - LCID lcid; - DISPID dispidInitialProperty; -} -alias OCPFIPARAMS* LPOCPFIPARAMS; - -struct FONTDESC { - UINT cbSizeofstruct; - LPOLESTR lpstrName; - CY cySize; - SHORT sWeight; - SHORT sCharset; - BOOL fItalic; - BOOL fUnderline; - BOOL fStrikethrough; -} -alias FONTDESC* LPFONTDESC; - -struct PICTDESC -{ - UINT cbSizeofstruct; - UINT picType; - union { - struct bmp { - HBITMAP hbitmap; - HPALETTE hpal; - } - struct wmf { - HMETAFILE hmeta; - int xExt; - int yExt; - } - struct icon { - HICON hicon; - } - struct emf { - HENHMETAFILE hemf; - } - } -} -alias PICTDESC* LPPICTDESC; - -extern(Windows) { - HRESULT DllRegisterServer(); - HRESULT DllUnregisterServer(); - HRESULT OleCreateFontIndirect(LPFONTDESC, REFIID, PVOID*); - HRESULT OleCreatePictureIndirect(LPPICTDESC, REFIID, BOOL, PVOID*); - HRESULT OleCreatePropertyFrame(HWND, UINT, UINT, LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, PVOID); - HRESULT OleCreatePropertyFrameIndirect(LPOCPFIPARAMS); - HCURSOR OleIconToCursor(HINSTANCE, HICON); - HRESULT OleLoadPicture(LPSTREAM, LONG, BOOL, REFIID, PVOID*); - HRESULT OleLoadPictureEx(LPSTREAM, LONG, BOOL, REFIID, DWORD, DWORD, DWORD, LPVOID*); - HRESULT OleLoadPicturePath(LPOLESTR, LPUNKNOWN, DWORD, OLE_COLOR, REFIID, LPVOID*); - HRESULT OleLoadPictureFile(VARIANT, LPDISPATCH*); - HRESULT OleLoadPictureFileEx(VARIANT, DWORD, DWORD, DWORD, LPDISPATCH*); - HRESULT OleSavePictureFile(LPDISPATCH, BSTR); - HRESULT OleTranslateColor(OLE_COLOR, HPALETTE, COLORREF*); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_olectl.d) + */ +module core.sys.windows.olectl; + +// In conversion from MinGW, the following was deleted: +//#define FONTSIZE(n) {n##0000, 0} + +import core.sys.windows.ocidl, core.sys.windows.olectlid; +private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.oleauto, core.sys.windows.unknwn, + core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.winuser, core.sys.windows.wtypes; +private import core.sys.windows.ntdef; // for NTSTATUS +private import core.sys.windows.objfwd; // for LPSTREAM +private import core.sys.windows.winerror; // for SCODE + + +private { + // These replace C macros. + template ITF_ERROR_SCODE_FOR_D(int c) + { + const SCODE ITF_ERROR_SCODE_FOR_D + = (SEVERITY_ERROR << 31) | (FACILITY_ITF << 16) | c; + } + + template ITF_SUCCESS_SCODE_FOR_D(int c) + { + const SCODE ITF_SUCCESS_SCODE_FOR_D + = (SEVERITY_SUCCESS << 31) | (FACILITY_ITF << 16) | c; + } + + template STD_CTL_SCODE(int c) + { + const SCODE STD_CTL_SCODE + = (SEVERITY_ERROR << 31) | (FACILITY_CONTROL << 16) | c; + } +} + +enum : SCODE { + CTL_E_ILLEGALFUNCTIONCALL = STD_CTL_SCODE!(5), + CTL_E_OVERFLOW = STD_CTL_SCODE!(6), + CTL_E_OUTOFMEMORY = STD_CTL_SCODE!(7), + CTL_E_DIVISIONBYZERO = STD_CTL_SCODE!(11), + CTL_E_OUTOFSTRINGSPACE = STD_CTL_SCODE!(14), + CTL_E_OUTOFSTACKSPACE = STD_CTL_SCODE!(28), + CTL_E_BADFILENAMEORNUMBER = STD_CTL_SCODE!(52), + CTL_E_FILENOTFOUND = STD_CTL_SCODE!(53), + CTL_E_BADFILEMODE = STD_CTL_SCODE!(54), + CTL_E_FILEALREADYOPEN = STD_CTL_SCODE!(55), + CTL_E_DEVICEIOERROR = STD_CTL_SCODE!(57), + CTL_E_FILEALREADYEXISTS = STD_CTL_SCODE!(58), + CTL_E_BADRECORDLENGTH = STD_CTL_SCODE!(59), + CTL_E_DISKFULL = STD_CTL_SCODE!(61), + CTL_E_BADRECORDNUMBER = STD_CTL_SCODE!(63), + CTL_E_BADFILENAME = STD_CTL_SCODE!(64), + CTL_E_TOOMANYFILES = STD_CTL_SCODE!(67), + CTL_E_DEVICEUNAVAILABLE = STD_CTL_SCODE!(68), + CTL_E_PERMISSIONDENIED = STD_CTL_SCODE!(70), + CTL_E_DISKNOTREADY = STD_CTL_SCODE!(71), + CTL_E_PATHFILEACCESSERROR = STD_CTL_SCODE!(75), + CTL_E_PATHNOTFOUND = STD_CTL_SCODE!(76), + CTL_E_INVALIDPATTERNSTRING = STD_CTL_SCODE!(93), + CTL_E_INVALIDUSEOFNULL = STD_CTL_SCODE!(94), + CTL_E_INVALIDFILEFORMAT = STD_CTL_SCODE!(321), + CTL_E_INVALIDPROPERTYVALUE = STD_CTL_SCODE!(380), + CTL_E_INVALIDPROPERTYARRAYINDEX = STD_CTL_SCODE!(381), + CTL_E_SETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(382), + CTL_E_SETNOTSUPPORTED = STD_CTL_SCODE!(383), + CTL_E_NEEDPROPERTYARRAYINDEX = STD_CTL_SCODE!(385), + CTL_E_SETNOTPERMITTED = STD_CTL_SCODE!(387), + CTL_E_GETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(393), + CTL_E_GETNOTSUPPORTED = STD_CTL_SCODE!(394), + CTL_E_PROPERTYNOTFOUND = STD_CTL_SCODE!(422), + CTL_E_INVALIDCLIPBOARDFORMAT = STD_CTL_SCODE!(460), + CTL_E_INVALIDPICTURE = STD_CTL_SCODE!(481), + CTL_E_PRINTERERROR = STD_CTL_SCODE!(482), + CTL_E_CANTSAVEFILETOTEMP = STD_CTL_SCODE!(735), + CTL_E_SEARCHTEXTNOTFOUND = STD_CTL_SCODE!(744), + CTL_E_REPLACEMENTSTOOLONG = STD_CTL_SCODE!(746), + CTL_E_CUSTOM_FIRST = STD_CTL_SCODE!(600) +} + +const SCODE CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST+2; + +enum : SCODE { + CONNECT_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + CONNECT_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + CONNECT_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + CONNECT_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + CONNECT_E_NOCONNECTION = CONNECT_E_FIRST + 0, + CONNECT_E_ADVISELIMIT = CONNECT_E_FIRST + 1, + CONNECT_E_CANNOTCONNECT = CONNECT_E_FIRST + 2, + CONNECT_E_OVERRIDDEN = CONNECT_E_FIRST + 3, + + SELFREG_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + SELFREG_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + SELFREG_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + SELFREG_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + SELFREG_E_TYPELIB = SELFREG_E_FIRST + 0, + SELFREG_E_CLASS = SELFREG_E_FIRST + 1, + + PERPROP_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + PERPROP_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + PERPROP_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + PERPROP_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + PERPROP_E_NOPAGEAVAILABLE = PERPROP_E_FIRST +} + +enum { + OLEMISC_RECOMPOSEONRESIZE = 0x1, + OLEMISC_ONLYICONIC = 0x2, + OLEMISC_INSERTNOTREPLACE = 0x4, + OLEMISC_STATIC = 0x8, + OLEMISC_CANTLINKINSIDE = 0x10, + OLEMISC_CANLINKBYOLE1 = 0x20, + OLEMISC_ISLINKOBJECT = 0x40, + OLEMISC_INSIDEOUT = 0x80, + OLEMISC_ACTIVATEWHENVISIBLE = 0x100, + OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200, + OLEMISC_INVISIBLEATRUNTIME = 0x400, + OLEMISC_ALWAYSRUN = 0x800, + OLEMISC_ACTSLIKEBUTTON = 0x1000, + OLEMISC_ACTSLIKELABEL = 0x2000, + OLEMISC_NOUIACTIVATE = 0x4000, + OLEMISC_ALIGNABLE = 0x8000, + OLEMISC_SIMPLEFRAME = 0x10000, + OLEMISC_SETCLIENTSITEFIRST = 0x20000, + OLEMISC_IMEMODE = 0x40000, + OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000, + OLEMISC_WANTSTOMENUMERGE = 0x100000, + OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 +} +const OLEIVERB_PROPERTIES = -7; + +const VT_STREAMED_PROPSET = 73; +const VT_STORED_PROPSET = 74; +const VT_BLOB_PROPSET = 75; +const VT_VERBOSE_ENUM = 76; +const VT_COLOR = VARENUM.VT_I4; +const VT_XPOS_PIXELS = VARENUM.VT_I4; +const VT_YPOS_PIXELS = VARENUM.VT_I4; +const VT_XSIZE_PIXELS = VARENUM.VT_I4; +const VT_YSIZE_PIXELS = VARENUM.VT_I4; +const VT_XPOS_HIMETRIC = VARENUM.VT_I4; +const VT_YPOS_HIMETRIC = VARENUM.VT_I4; +const VT_XSIZE_HIMETRIC = VARENUM.VT_I4; +const VT_YSIZE_HIMETRIC = VARENUM.VT_I4; +const VT_TRISTATE = VARENUM.VT_I2; +const VT_OPTEXCLUSIVE = VARENUM.VT_BOOL; +const VT_FONT = VARENUM.VT_DISPATCH; +const VT_PICTURE = VARENUM.VT_DISPATCH; +const VT_HANDLE = VARENUM.VT_I4; + +enum { + OCM__BASE = WM_USER + 0x1c00, + OCM_COMMAND = OCM__BASE + WM_COMMAND, + OCM_CTLCOLORBTN = OCM__BASE + WM_CTLCOLORBTN, + OCM_CTLCOLOREDIT = OCM__BASE + WM_CTLCOLOREDIT, + OCM_CTLCOLORDLG = OCM__BASE + WM_CTLCOLORDLG, + OCM_CTLCOLORLISTBOX = OCM__BASE + WM_CTLCOLORLISTBOX, + OCM_CTLCOLORMSGBOX = OCM__BASE + WM_CTLCOLORMSGBOX, + OCM_CTLCOLORSCROLLBAR = OCM__BASE + WM_CTLCOLORSCROLLBAR, + OCM_CTLCOLORSTATIC = OCM__BASE + WM_CTLCOLORSTATIC, + OCM_DRAWITEM = OCM__BASE + WM_DRAWITEM, + OCM_MEASUREITEM = OCM__BASE + WM_MEASUREITEM, + OCM_DELETEITEM = OCM__BASE + WM_DELETEITEM, + OCM_VKEYTOITEM = OCM__BASE + WM_VKEYTOITEM, + OCM_CHARTOITEM = OCM__BASE + WM_CHARTOITEM, + OCM_COMPAREITEM = OCM__BASE + WM_COMPAREITEM, + OCM_HSCROLL = OCM__BASE + WM_HSCROLL, + OCM_VSCROLL = OCM__BASE + WM_VSCROLL, + OCM_PARENTNOTIFY = OCM__BASE + WM_PARENTNOTIFY, + OCM_NOTIFY = OCM__BASE + WM_NOTIFY +} + +enum { + CTRLINFO_EATS_RETURN = 1, + CTRLINFO_EATS_ESCAPE +} + +enum { + XFORMCOORDS_POSITION = 1, + XFORMCOORDS_SIZE = 2, + XFORMCOORDS_HIMETRICTOCONTAINER = 4, + XFORMCOORDS_CONTAINERTOHIMETRIC = 8 +} + +const GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1; + +enum { + PROPPAGESTATUS_DIRTY = 1, + PROPPAGESTATUS_VALIDATE = 2 +} + +enum { + PICTURE_SCALABLE = 1, + PICTURE_TRANSPARENT = 2 +} + +enum { + PICTYPE_UNINITIALIZED = -1, + PICTYPE_NONE, // = 0 + PICTYPE_BITMAP, + PICTYPE_METAFILE, + PICTYPE_ICON, + PICTYPE_ENHMETAFILE // = 4 +} + +enum { + DISPID_AUTOSIZE = -500, + DISPID_BACKCOLOR = -501, + DISPID_BACKSTYLE = -502, + DISPID_BORDERCOLOR = -503, + DISPID_BORDERSTYLE = -504, + DISPID_BORDERWIDTH = -505, + DISPID_DRAWMODE = -507, + DISPID_DRAWSTYLE = -508, + DISPID_DRAWWIDTH = -509, + DISPID_FILLCOLOR = -510, + DISPID_FILLSTYLE = -511, + DISPID_FONT = -512, + DISPID_FORECOLOR = -513, + DISPID_ENABLED = -514, + DISPID_HWND = -515, + DISPID_TABSTOP = -516, + DISPID_TEXT = -517, + DISPID_CAPTION = -518, + DISPID_BORDERVISIBLE = -519, + DISPID_APPEARANCE = -520, + DISPID_MOUSEPOINTER = -521, + DISPID_MOUSEICON = -522, + DISPID_PICTURE = -523, + DISPID_VALID = -524, + DISPID_REFRESH = -550, + DISPID_DOCLICK = -551, + DISPID_ABOUTBOX = -552, + DISPID_CLICK = -600, + DISPID_DBLCLICK = -601, + DISPID_KEYDOWN = -602, + DISPID_KEYPRESS = -603, + DISPID_KEYUP = -604, + DISPID_MOUSEDOWN = -605, + DISPID_MOUSEMOVE = -606, + DISPID_MOUSEUP = -607, + DISPID_ERROREVENT = -608, + DISPID_AMBIENT_BACKCOLOR = -701, + DISPID_AMBIENT_DISPLAYNAME = -702, + DISPID_AMBIENT_FONT = -703, + DISPID_AMBIENT_FORECOLOR = -704, + DISPID_AMBIENT_LOCALEID = -705, + DISPID_AMBIENT_MESSAGEREFLECT = -706, + DISPID_AMBIENT_SCALEUNITS = -707, + DISPID_AMBIENT_TEXTALIGN = -708, + DISPID_AMBIENT_USERMODE = -709, + DISPID_AMBIENT_UIDEAD = -710, + DISPID_AMBIENT_SHOWGRABHANDLES = -711, + DISPID_AMBIENT_SHOWHATCHING = -712, + DISPID_AMBIENT_DISPLAYASDEFAULT = -713, + DISPID_AMBIENT_SUPPORTSMNEMONICS = -714, + DISPID_AMBIENT_AUTOCLIP = -715, + DISPID_AMBIENT_APPEARANCE = -716, + DISPID_AMBIENT_CODEPAGE = -725, + DISPID_AMBIENT_PALETTE = -726, + DISPID_AMBIENT_CHARSET = -727, + DISPID_AMBIENT_RIGHTTOLEFT = -732, + DISPID_AMBIENT_TOPTOBOTTOM = -733 +} + +enum { + DISPID_FONT_NAME = 0, + DISPID_FONT_SIZE = 2, + DISPID_FONT_BOLD, + DISPID_FONT_ITALIC, + DISPID_FONT_UNDER, + DISPID_FONT_STRIKE, + DISPID_FONT_WEIGHT, + DISPID_FONT_CHARSET // = 8 +} + +enum { + DISPID_PICT_HANDLE = 0, + DISPID_PICT_HPAL = 2, + DISPID_PICT_TYPE, + DISPID_PICT_WIDTH, + DISPID_PICT_HEIGHT, + DISPID_PICT_RENDER // = 6 +} + +alias IOleControl LPOLECONTROL; +alias IOleControlSite LPOLECONTROLSITE; +alias ISimpleFrameSite LPSIMPLEFRAMESITE; +alias IPersistPropertyBag LPPERSISTPROPERTYBAG; +alias IPersistStreamInit LPPERSISTSTREAMINIT; +alias IPersistMemory LPPERSISTMEMORY; +alias IPropertyNotifySink LPPROPERTYNOTIFYSINK; +alias IProvideClassInfo LPPROVIDECLASSINFO; +alias IProvideClassInfo2 LPPROVIDECLASSINFO2; +alias IConnectionPointContainer LPCONNECTIONPOINTCONTAINER; +alias IClassFactory2 LPCLASSFACTORY2; +alias ISpecifyPropertyPages LPSPECIFYPROPERTYPAGES; +alias IPerPropertyBrowsing LPPERPROPERTYBROWSING; +alias IPropertyPage LPPROPERTYPAGE; +alias IPropertyPage2 LPPROPERTYPAGE2; + +alias IPicture LPPICTURE; +alias IPictureDisp LPPICTUREDISP; +alias int OLE_XPOS_PIXELS; +alias int OLE_YPOS_PIXELS; +alias int OLE_XSIZE_PIXELS; +alias int OLE_YSIZE_PIXELS; +alias float OLE_XPOS_CONTAINER; +alias float OLE_YPOS_CONTAINER; +alias float OLE_XSIZE_CONTAINER; + +alias VARIANT_BOOL OLE_OPTEXCLUSIVE; +alias VARIANT_BOOL OLE_CANCELBOOL; +alias VARIANT_BOOL OLE_ENABLEDEFAULTBOOL; + +align(8): + +enum OLE_TRISTATE { + triUnchecked, + triChecked1, + triGray +} + +struct OCPFIPARAMS { + ULONG cbStructSize; + HWND hWndOwner; + int x; + int y; + LPCOLESTR lpszCaption; + ULONG cObjects; + LPUNKNOWN *lplpUnk; + ULONG cPages; + CLSID *lpPages; + LCID lcid; + DISPID dispidInitialProperty; +} +alias OCPFIPARAMS* LPOCPFIPARAMS; + +struct FONTDESC { + UINT cbSizeofstruct; + LPOLESTR lpstrName; + CY cySize; + SHORT sWeight; + SHORT sCharset; + BOOL fItalic; + BOOL fUnderline; + BOOL fStrikethrough; +} +alias FONTDESC* LPFONTDESC; + +struct PICTDESC +{ + UINT cbSizeofstruct; + UINT picType; + union { + struct bmp { + HBITMAP hbitmap; + HPALETTE hpal; + } + struct wmf { + HMETAFILE hmeta; + int xExt; + int yExt; + } + struct icon { + HICON hicon; + } + struct emf { + HENHMETAFILE hemf; + } + } +} +alias PICTDESC* LPPICTDESC; + +extern(Windows) { + HRESULT DllRegisterServer(); + HRESULT DllUnregisterServer(); + HRESULT OleCreateFontIndirect(LPFONTDESC, REFIID, PVOID*); + HRESULT OleCreatePictureIndirect(LPPICTDESC, REFIID, BOOL, PVOID*); + HRESULT OleCreatePropertyFrame(HWND, UINT, UINT, LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, PVOID); + HRESULT OleCreatePropertyFrameIndirect(LPOCPFIPARAMS); + HCURSOR OleIconToCursor(HINSTANCE, HICON); + HRESULT OleLoadPicture(LPSTREAM, LONG, BOOL, REFIID, PVOID*); + HRESULT OleLoadPictureEx(LPSTREAM, LONG, BOOL, REFIID, DWORD, DWORD, DWORD, LPVOID*); + HRESULT OleLoadPicturePath(LPOLESTR, LPUNKNOWN, DWORD, OLE_COLOR, REFIID, LPVOID*); + HRESULT OleLoadPictureFile(VARIANT, LPDISPATCH*); + HRESULT OleLoadPictureFileEx(VARIANT, DWORD, DWORD, DWORD, LPDISPATCH*); + HRESULT OleSavePictureFile(LPDISPATCH, BSTR); + HRESULT OleTranslateColor(OLE_COLOR, HPALETTE, COLORREF*); +} diff --git a/src/core/sys/windows/olectlid.d b/src/core/sys/windows/olectlid.d index 9c712b3a1c..842f0a00ca 100644 --- a/src/core/sys/windows/olectlid.d +++ b/src/core/sys/windows/olectlid.d @@ -1,12 +1,12 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_olectlid.d) - */ -module core.sys.windows.olectlid; - -private import core.sys.windows.basetyps; - +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_olectlid.d) + */ +module core.sys.windows.olectlid; + +private import core.sys.windows.basetyps; + diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d index 3671778089..2e3bfff516 100644 --- a/src/core/sys/windows/oledlg.d +++ b/src/core/sys/windows/oledlg.d @@ -1,989 +1,989 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_oledlg.d) - */ -module core.sys.windows.oledlg; - -import core.sys.windows.commdlg, core.sys.windows.dlgs, core.sys.windows.ole2, core.sys.windows.prsht, core.sys.windows.shellapi, - core.sys.windows.windows; -private import core.sys.windows.winbase, core.sys.windows.objidl, core.sys.windows.objfwd, core.sys.windows.winnt; - -// FIXME: remove inherited methods from interface definitions - -const PS_MAXLINKTYPES=8; - -const TCHAR[] OLESTDDELIM = "\\"; -const TCHAR[] SZOLEUI_MSG_HELP = "OLEUI_MSG_HELP"; -const TCHAR[] SZOLEUI_MSG_ENDDIALOG = "OLEUI_MSG_ENDDIALOG"; -const TCHAR[] SZOLEUI_MSG_BROWSE = "OLEUI_MSG_BROWSE"; -const TCHAR[] SZOLEUI_MSG_CHANGEICON = "OLEUI_MSG_CHANGEICON"; -const TCHAR[] SZOLEUI_MSG_CLOSEBUSYDIALOG = "OLEUI_MSG_CLOSEBUSYDIALOG"; -const TCHAR[] SZOLEUI_MSG_CONVERT = "OLEUI_MSG_CONVERT"; -const TCHAR[] SZOLEUI_MSG_CHANGESOURCE = "OLEUI_MSG_CHANGESOURCE"; -const TCHAR[] SZOLEUI_MSG_ADDCONTROL = "OLEUI_MSG_ADDCONTROL"; -const TCHAR[] SZOLEUI_MSG_BROWSE_OFN = "OLEUI_MSG_BROWSE_OFN"; - -const TCHAR[] PROP_HWND_CHGICONDLG = "HWND_CIDLG"; - -const IDC_OLEUIHELP=99; - -enum { - IDC_IO_CREATENEW = 2100, - IDC_IO_CREATEFROMFILE, - IDC_IO_LINKFILE, - IDC_IO_OBJECTTYPELIST, - IDC_IO_DISPLAYASICON, - IDC_IO_CHANGEICON, - IDC_IO_FILE, - IDC_IO_FILEDISPLAY, - IDC_IO_RESULTIMAGE, - IDC_IO_RESULTTEXT, - IDC_IO_ICONDISPLAY, - IDC_IO_OBJECTTYPETEXT, - IDC_IO_FILETEXT, - IDC_IO_FILETYPE, - IDC_IO_INSERTCONTROL, - IDC_IO_ADDCONTROL, - IDC_IO_CONTROLTYPELIST // = 2116 -} - -const IDC_PS_PASTE=500; -const IDC_PS_PASTELINK=501; -const IDC_PS_SOURCETEXT=502; -const IDC_PS_PASTELIST=503; -const IDC_PS_PASTELINKLIST=504; -const IDC_PS_DISPLAYLIST=505; -const IDC_PS_DISPLAYASICON=506; -const IDC_PS_ICONDISPLAY=507; -const IDC_PS_CHANGEICON=508; -const IDC_PS_RESULTIMAGE=509; -const IDC_PS_RESULTTEXT=510; - -const IDC_CI_GROUP=120; -const IDC_CI_CURRENT=121; -const IDC_CI_CURRENTICON=122; -const IDC_CI_DEFAULT=123; -const IDC_CI_DEFAULTICON=124; -const IDC_CI_FROMFILE=125; -const IDC_CI_FROMFILEEDIT=126; -const IDC_CI_ICONLIST=127; -const IDC_CI_LABEL=128; -const IDC_CI_LABELEDIT=129; -const IDC_CI_BROWSE=130; -const IDC_CI_ICONDISPLAY=131; - -const IDC_CV_OBJECTTYPE=150; -const IDC_CV_DISPLAYASICON=152; -const IDC_CV_CHANGEICON=153; -const IDC_CV_ACTIVATELIST=154; -const IDC_CV_CONVERTTO=155; -const IDC_CV_ACTIVATEAS=156; -const IDC_CV_RESULTTEXT=157; -const IDC_CV_CONVERTLIST=158; -const IDC_CV_ICONDISPLAY=165; - -const IDC_EL_CHANGESOURCE=201; -const IDC_EL_AUTOMATIC=202; -const IDC_EL_CANCELLINK=209; -const IDC_EL_UPDATENOW=210; -const IDC_EL_OPENSOURCE=211; -const IDC_EL_MANUAL=212; -const IDC_EL_LINKSOURCE=216; -const IDC_EL_LINKTYPE=217; -const IDC_EL_LINKSLISTBOX=206; -const IDC_EL_COL1=220; -const IDC_EL_COL2=221; -const IDC_EL_COL3=222; - -const IDC_BZ_RETRY=600; -const IDC_BZ_ICON=601; -const IDC_BZ_MESSAGE1=602; -const IDC_BZ_SWITCHTO=604; - -const IDC_UL_METER=1029; -const IDC_UL_STOP=1030; -const IDC_UL_PERCENT=1031; -const IDC_UL_PROGRESS=1032; - -const IDC_PU_LINKS=900; -const IDC_PU_TEXT=901; -const IDC_PU_CONVERT=902; -const IDC_PU_ICON=908; - -const IDC_GP_OBJECTNAME=1009; -const IDC_GP_OBJECTTYPE=1010; -const IDC_GP_OBJECTSIZE=1011; -const IDC_GP_CONVERT=1013; -const IDC_GP_OBJECTICON=1014; -const IDC_GP_OBJECTLOCATION=1022; - -const IDC_VP_PERCENT=1000; -const IDC_VP_CHANGEICON=1001; -const IDC_VP_EDITABLE=1002; -const IDC_VP_ASICON=1003; -const IDC_VP_RELATIVE=1005; -const IDC_VP_SPIN=1006; -const IDC_VP_SCALETXT=1034; -const IDC_VP_ICONDISPLAY=1021; -const IDC_VP_RESULTIMAGE=1033; - -const IDC_LP_OPENSOURCE=1006; -const IDC_LP_UPDATENOW=1007; -const IDC_LP_BREAKLINK=1008; -const IDC_LP_LINKSOURCE=1012; -const IDC_LP_CHANGESOURCE=1015; -const IDC_LP_AUTOMATIC=1016; -const IDC_LP_MANUAL=1017; -const IDC_LP_DATE=1018; -const IDC_LP_TIME=1019; - -const IDD_INSERTOBJECT=1000; -const IDD_CHANGEICON=1001; -const IDD_CONVERT=1002; -const IDD_PASTESPECIAL=1003; -const IDD_EDITLINKS=1004; -const IDD_BUSY=1006; -const IDD_UPDATELINKS=1007; -const IDD_CHANGESOURCE=1009; -const IDD_INSERTFILEBROWSE=1010; -const IDD_CHANGEICONBROWSE=1011; -const IDD_CONVERTONLY=1012; -const IDD_CHANGESOURCE4=1013; -const IDD_GNRLPROPS=1100; -const IDD_VIEWPROPS=1101; -const IDD_LINKPROPS=1102; -const IDD_CANNOTUPDATELINK=1008; -const IDD_LINKSOURCEUNAVAILABLE=1020; -const IDD_SERVERNOTFOUND=1023; -const IDD_OUTOFMEMORY=1024; -const IDD_SERVERNOTREGW=1021; -const IDD_LINKTYPECHANGEDW=1022; -const IDD_SERVERNOTREGA=1025; -const IDD_LINKTYPECHANGEDA=1026; - -const ID_BROWSE_CHANGEICON=1; -const ID_BROWSE_INSERTFILE=2; -const ID_BROWSE_ADDCONTROL=3; -const ID_BROWSE_CHANGESOURCE=4; - -const OLEUI_FALSE=0; -const OLEUI_SUCCESS=1; -const OLEUI_OK=1; -const OLEUI_CANCEL=2; - -const OLEUI_ERR_STANDARDMIN=100; -const OLEUI_ERR_STRUCTURENULL=101; -const OLEUI_ERR_STRUCTUREINVALID=102; -const OLEUI_ERR_CBSTRUCTINCORRECT=103; -const OLEUI_ERR_HWNDOWNERINVALID=104; -const OLEUI_ERR_LPSZCAPTIONINVALID=105; -const OLEUI_ERR_LPFNHOOKINVALID=106; -const OLEUI_ERR_HINSTANCEINVALID=107; -const OLEUI_ERR_LPSZTEMPLATEINVALID=108; -const OLEUI_ERR_HRESOURCEINVALID=109; -const OLEUI_ERR_FINDTEMPLATEFAILURE=110; -const OLEUI_ERR_LOADTEMPLATEFAILURE=111; -const OLEUI_ERR_DIALOGFAILURE=112; -const OLEUI_ERR_LOCALMEMALLOC=113; -const OLEUI_ERR_GLOBALMEMALLOC=114; -const OLEUI_ERR_LOADSTRING=115; -const OLEUI_ERR_OLEMEMALLOC=116; -const OLEUI_ERR_STANDARDMAX=116; - -const OPF_OBJECTISLINK=1; -const OPF_NOFILLDEFAULT=2; -const OPF_SHOWHELP=4; -const OPF_DISABLECONVERT=8; - -const OLEUI_OPERR_SUBPROPNULL=OLEUI_ERR_STANDARDMAX; -const OLEUI_OPERR_SUBPROPINVALID=(OLEUI_ERR_STANDARDMAX+1); -const OLEUI_OPERR_PROPSHEETNULL=(OLEUI_ERR_STANDARDMAX+2); -const OLEUI_OPERR_PROPSHEETINVALID=(OLEUI_ERR_STANDARDMAX+3); -const OLEUI_OPERR_SUPPROP=(OLEUI_ERR_STANDARDMAX+4); -const OLEUI_OPERR_PROPSINVALID=(OLEUI_ERR_STANDARDMAX+5); -const OLEUI_OPERR_PAGESINCORRECT=(OLEUI_ERR_STANDARDMAX+6); -const OLEUI_OPERR_INVALIDPAGES=(OLEUI_ERR_STANDARDMAX+7); -const OLEUI_OPERR_NOTSUPPORTED=(OLEUI_ERR_STANDARDMAX+8); -const OLEUI_OPERR_DLGPROCNOTNULL=(OLEUI_ERR_STANDARDMAX+9); -const OLEUI_OPERR_LPARAMNOTZERO=(OLEUI_ERR_STANDARDMAX+10); -const OLEUI_GPERR_STRINGINVALID=(OLEUI_ERR_STANDARDMAX+11); -const OLEUI_GPERR_CLASSIDINVALID=(OLEUI_ERR_STANDARDMAX+12); -const OLEUI_GPERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+13); -const OLEUI_GPERR_CBFORMATINVALID=(OLEUI_ERR_STANDARDMAX+14); -const OLEUI_VPERR_METAPICTINVALID=(OLEUI_ERR_STANDARDMAX+15); -const OLEUI_VPERR_DVASPECTINVALID=(OLEUI_ERR_STANDARDMAX+16); -const OLEUI_LPERR_LINKCNTRNULL=(OLEUI_ERR_STANDARDMAX+17); -const OLEUI_LPERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+18); -const OLEUI_OPERR_PROPERTYSHEET=(OLEUI_ERR_STANDARDMAX+19); -const OLEUI_OPERR_OBJINFOINVALID=(OLEUI_ERR_STANDARDMAX+20); -const OLEUI_OPERR_LINKINFOINVALID=(OLEUI_ERR_STANDARDMAX+21); - -const OLEUI_QUERY_GETCLASSID=65280; -const OLEUI_QUERY_LINKBROKEN=65281; - -const IOF_SHOWHELP=1; -const IOF_SELECTCREATENEW=2; -const IOF_SELECTCREATEFROMFILE=4; -const IOF_CHECKLINK=8; -const IOF_CHECKDISPLAYASICON=16; -const IOF_CREATENEWOBJECT=32; -const IOF_CREATEFILEOBJECT=64; -const IOF_CREATELINKOBJECT=128; -const IOF_DISABLELINK=256; -const IOF_VERIFYSERVERSEXIST=512; -const IOF_DISABLEDISPLAYASICON=1024; -const IOF_HIDECHANGEICON=2048; -const IOF_SHOWINSERTCONTROL=4096; -const IOF_SELECTCREATECONTROL=8192; - -const OLEUI_IOERR_LPSZFILEINVALID=OLEUI_ERR_STANDARDMAX; -const OLEUI_IOERR_LPSZLABELINVALID=(OLEUI_ERR_STANDARDMAX+1); -const OLEUI_IOERR_HICONINVALID=(OLEUI_ERR_STANDARDMAX+2); -const OLEUI_IOERR_LPFORMATETCINVALID=(OLEUI_ERR_STANDARDMAX+3); -const OLEUI_IOERR_PPVOBJINVALID=(OLEUI_ERR_STANDARDMAX+4); -const OLEUI_IOERR_LPIOLECLIENTSITEINVALID=(OLEUI_ERR_STANDARDMAX+5); -const OLEUI_IOERR_LPISTORAGEINVALID=(OLEUI_ERR_STANDARDMAX+6); -const OLEUI_IOERR_SCODEHASERROR=(OLEUI_ERR_STANDARDMAX+7); -const OLEUI_IOERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+8); -const OLEUI_IOERR_CCHFILEINVALID=(OLEUI_ERR_STANDARDMAX+9); - -const PSF_SHOWHELP=1; -const PSF_SELECTPASTE=2; -const PSF_SELECTPASTELINK=4; -const PSF_CHECKDISPLAYASICON=8; -const PSF_DISABLEDISPLAYASICON=16; -const PSF_HIDECHANGEICON=32; -const PSF_STAYONCLIPBOARDCHANGE=64; -const PSF_NOREFRESHDATAOBJECT=128; - -const OLEUI_IOERR_SRCDATAOBJECTINVALID=OLEUI_ERR_STANDARDMAX; -const OLEUI_IOERR_ARRPASTEENTRIESINVALID=(OLEUI_ERR_STANDARDMAX+1); -const OLEUI_IOERR_ARRLINKTYPESINVALID=(OLEUI_ERR_STANDARDMAX+2); -const OLEUI_PSERR_CLIPBOARDCHANGED=(OLEUI_ERR_STANDARDMAX+3); -const OLEUI_PSERR_GETCLIPBOARDFAILED=(OLEUI_ERR_STANDARDMAX+4); -const OLEUI_ELERR_LINKCNTRNULL=OLEUI_ERR_STANDARDMAX; -const OLEUI_ELERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+1); - -const ELF_SHOWHELP=1; -const ELF_DISABLEUPDATENOW=2; -const ELF_DISABLEOPENSOURCE=4; -const ELF_DISABLECHANGESOURCE=8; -const ELF_DISABLECANCELLINK=16; - -const CIF_SHOWHELP=1; -const CIF_SELECTCURRENT=2; -const CIF_SELECTDEFAULT=4; -const CIF_SELECTFROMFILE=8; -const CIF_USEICONEXE=16; - -const OLEUI_CIERR_MUSTHAVECLSID=OLEUI_ERR_STANDARDMAX; -const OLEUI_CIERR_MUSTHAVECURRENTMETAFILE=OLEUI_ERR_STANDARDMAX+1; -const OLEUI_CIERR_SZICONEXEINVALID=OLEUI_ERR_STANDARDMAX+2; - -const CF_SHOWHELPBUTTON=1; -const CF_SETCONVERTDEFAULT=2; -const CF_SETACTIVATEDEFAULT=4; -const CF_SELECTCONVERTTO=8; -const CF_SELECTACTIVATEAS=16; -const CF_DISABLEDISPLAYASICON=32; -const CF_DISABLEACTIVATEAS=64; -const CF_HIDECHANGEICON=128; -const CF_CONVERTONLY=256; - -const OLEUI_CTERR_CLASSIDINVALID = OLEUI_ERR_STANDARDMAX+1; -const OLEUI_CTERR_DVASPECTINVALID = OLEUI_ERR_STANDARDMAX+2; -const OLEUI_CTERR_CBFORMATINVALID = OLEUI_ERR_STANDARDMAX+3; -const OLEUI_CTERR_HMETAPICTINVALID = OLEUI_ERR_STANDARDMAX+4; -const OLEUI_CTERR_STRINGINVALID = OLEUI_ERR_STANDARDMAX+5; - -const BZ_DISABLECANCELBUTTON = 1; -const BZ_DISABLESWITCHTOBUTTON = 2; -const BZ_DISABLERETRYBUTTON = 4; -const BZ_NOTRESPONDINGDIALOG = 8; - -const OLEUI_BZERR_HTASKINVALID = OLEUI_ERR_STANDARDMAX; -const OLEUI_BZ_SWITCHTOSELECTED = OLEUI_ERR_STANDARDMAX+1; -const OLEUI_BZ_RETRYSELECTED = OLEUI_ERR_STANDARDMAX+2; -const OLEUI_BZ_CALLUNBLOCKED = OLEUI_ERR_STANDARDMAX+3; - -const CSF_SHOWHELP = 1; -const CSF_VALIDSOURCE = 2; -const CSF_ONLYGETSOURCE = 4; -const CSF_EXPLORER = 8; - -const OLEUI_CSERR_LINKCNTRNULL = OLEUI_ERR_STANDARDMAX; -const OLEUI_CSERR_LINKCNTRINVALID = OLEUI_ERR_STANDARDMAX+1; -const OLEUI_CSERR_FROMNOTNULL = OLEUI_ERR_STANDARDMAX+2; -const OLEUI_CSERR_TONOTNULL = OLEUI_ERR_STANDARDMAX+3; -const OLEUI_CSERR_SOURCENULL = OLEUI_ERR_STANDARDMAX+4; -const OLEUI_CSERR_SOURCEINVALID = OLEUI_ERR_STANDARDMAX+5; -const OLEUI_CSERR_SOURCEPARSERROR = OLEUI_ERR_STANDARDMAX+6; -const OLEUI_CSERR_SOURCEPARSEERROR = OLEUI_ERR_STANDARDMAX+7; - -const VPF_SELECTRELATIVE=1; -const VPF_DISABLERELATIVE=2; -const VPF_DISABLESCALE=4; - -align(8): -extern (Windows) { - alias UINT function(HWND, UINT, WPARAM, LPARAM) LPFNOLEUIHOOK; -} - -struct OLEUIINSERTOBJECTW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - LPWSTR lpszFile; - UINT cchFile; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - IID iid; - DWORD oleRender; - LPFORMATETC lpFormatEtc; - LPOLECLIENTSITE lpIOleClientSite; - LPSTORAGE lpIStorage; - PVOID *ppvObj; - SCODE sc; - HGLOBAL hMetaPict; -} -alias OLEUIINSERTOBJECTW* POLEUIINSERTOBJECTW, LPOLEUIINSERTOBJECTW; - -struct OLEUIINSERTOBJECTA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - LPSTR lpszFile; - UINT cchFile; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - IID iid; - DWORD oleRender; - LPFORMATETC lpFormatEtc; - LPOLECLIENTSITE lpIOleClientSite; - LPSTORAGE lpIStorage; - PVOID *ppvObj; - SCODE sc; - HGLOBAL hMetaPict; -} -alias OLEUIINSERTOBJECTA* POLEUIINSERTOBJECTA, LPOLEUIINSERTOBJECTA; - -UINT OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); -UINT OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); - -enum OLEUIPASTEFLAG { - OLEUIPASTE_PASTEONLY, - OLEUIPASTE_LINKTYPE1, - OLEUIPASTE_LINKTYPE2, - OLEUIPASTE_LINKTYPE3 = 4, - OLEUIPASTE_LINKTYPE4 = 8, - OLEUIPASTE_LINKTYPE5 = 16, - OLEUIPASTE_LINKTYPE6 = 32, - OLEUIPASTE_LINKTYPE7 = 64, - OLEUIPASTE_LINKTYPE8 = 128, - OLEUIPASTE_PASTE = 512, - OLEUIPASTE_LINKANYTYPE = 1024, - OLEUIPASTE_ENABLEICON = 2048 -} - -struct OLEUIPASTEENTRYW { - FORMATETC fmtetc; - LPCWSTR lpstrFormatName; - LPCWSTR lpstrResultText; - DWORD dwFlags; - DWORD dwScratchSpace; -} -alias OLEUIPASTEENTRYW* POLEUIPASTEENTRYW, LPOLEUIPASTEENTRYW; - -struct OLEUIPASTEENTRYA { - FORMATETC fmtetc; - LPCSTR lpstrFormatName; - LPCSTR lpstrResultText; - DWORD dwFlags; - DWORD dwScratchSpace; -} -alias OLEUIPASTEENTRYA* POLEUIPASTEENTRYA, LPOLEUIPASTEENTRYA; - -struct OLEUIPASTESPECIALW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - LPDATAOBJECT lpSrcDataObj; - LPOLEUIPASTEENTRYW arrPasteEntries; - int cPasteEntries; - UINT *arrLinkTypes; - int cLinkTypes; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - int nSelectedIndex; - BOOL fLink; - HGLOBAL hMetaPict; - SIZEL sizel; -} -alias OLEUIPASTESPECIALW* POLEUIPASTESPECIALW, LPOLEUIPASTESPECIALW; - -struct OLEUIPASTESPECIALA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - LPDATAOBJECT lpSrcDataObj; - LPOLEUIPASTEENTRYA arrPasteEntries; - int cPasteEntries; - UINT* arrLinkTypes; - int cLinkTypes; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - int nSelectedIndex; - BOOL fLink; - HGLOBAL hMetaPict; - SIZEL sizel; -} -alias OLEUIPASTESPECIALA* POLEUIPASTESPECIALA, LPOLEUIPASTESPECIALA; - -interface IOleUILinkContainerW : IUnknown -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD dwLink); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, PDWORD); - HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); -} -alias IOleUILinkContainerW LPOLEUILINKCONTAINERW; - -interface IOleUILinkContainerA : IUnknown -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, PDWORD); - HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); -} -alias IOleUILinkContainerA LPOLEUILINKCONTAINERA; - -struct OLEUIEDITLINKSW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - LPOLEUILINKCONTAINERW lpOleUILinkContainer; -} -alias OLEUIEDITLINKSW* POLEUIEDITLINKSW, LPOLEUIEDITLINKSW; - -struct OLEUIEDITLINKSA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - LPOLEUILINKCONTAINERA lpOleUILinkContainer; -} -alias OLEUIEDITLINKSA* POLEUIEDITLINKSA, LPOLEUIEDITLINKSA; - -struct OLEUICHANGEICONW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - HGLOBAL hMetaPict; - CLSID clsid; - WCHAR[MAX_PATH] szIconExe; - int cchIconExe; -} -alias OLEUICHANGEICONW* POLEUICHANGEICONW, LPOLEUICHANGEICONW; - -struct OLEUICHANGEICONA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - HGLOBAL hMetaPict; - CLSID clsid; - CHAR[MAX_PATH] szIconExe; - int cchIconExe; -} -alias OLEUICHANGEICONA* POLEUICHANGEICONA, LPOLEUICHANGEICONA; - -struct OLEUICONVERTW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - CLSID clsidConvertDefault; - CLSID clsidActivateDefault; - CLSID clsidNew; - DWORD dvAspect; - WORD wFormat; - BOOL fIsLinkedObject; - HGLOBAL hMetaPict; - LPWSTR lpszUserType; - BOOL fObjectsIconChanged; - LPWSTR lpszDefLabel; - UINT cClsidExclude; - LPCLSID lpClsidExclude; -} -alias OLEUICONVERTW* POLEUICONVERTW, LPOLEUICONVERTW; - -struct OLEUICONVERTA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - CLSID clsidConvertDefault; - CLSID clsidActivateDefault; - CLSID clsidNew; - DWORD dvAspect; - WORD wFormat; - BOOL fIsLinkedObject; - HGLOBAL hMetaPict; - LPSTR lpszUserType; - BOOL fObjectsIconChanged; - LPSTR lpszDefLabel; - UINT cClsidExclude; - LPCLSID lpClsidExclude; -} -alias OLEUICONVERTA* POLEUICONVERTA, LPOLEUICONVERTA; - -struct OLEUIBUSYW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - HTASK hTask; - HWND *lphWndDialog; -} -alias OLEUIBUSYW* POLEUIBUSYW, LPOLEUIBUSYW; - -struct OLEUIBUSYA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - HTASK hTask; - HWND *lphWndDialog; -} -alias OLEUIBUSYA* POLEUIBUSYA, LPOLEUIBUSYA; - -struct OLEUICHANGESOURCEW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - OPENFILENAMEW* lpOFN; - DWORD[4] dwReserved1; - LPOLEUILINKCONTAINERW lpOleUILinkContainer; - DWORD dwLink; - LPWSTR lpszDisplayName; - ULONG nFileLength; - LPWSTR lpszFrom; - LPWSTR lpszTo; -} -alias OLEUICHANGESOURCEW* POLEUICHANGESOURCEW, LPOLEUICHANGESOURCEW; - -struct OLEUICHANGESOURCEA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - OPENFILENAMEA *lpOFN; - DWORD[4] dwReserved1; - LPOLEUILINKCONTAINERA lpOleUILinkContainer; - DWORD dwLink; - LPSTR lpszDisplayName; - ULONG nFileLength; - LPSTR lpszFrom; - LPSTR lpszTo; -} -alias OLEUICHANGESOURCEA* POLEUICHANGESOURCEA, LPOLEUICHANGESOURCEA; - -interface IOleUIObjInfoW : IUnknown -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetObjectInfo(DWORD, PDWORD, LPWSTR*, LPWSTR*, LPWSTR*, LPWSTR*); - HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); - HRESULT ConvertObject(DWORD, REFCLSID); - HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); - HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); -} -alias IOleUIObjInfoW LPOLEUIOBJINFOW; - -interface IOleUIObjInfoA : IUnknown -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetObjectInfo(DWORD, PDWORD, LPSTR*, LPSTR*, LPSTR*, LPSTR*); - HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); - HRESULT ConvertObject(DWORD, REFCLSID); - HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); - HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); -} -alias IOleUIObjInfoA LPOLEUIOBJINFOA; - -interface IOleUILinkInfoW : IOleUILinkContainerW -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, DWORD*); - HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); - HRESULT GetLastUpdate(DWORD, FILETIME*); -} -alias IOleUILinkInfoW LPOLEUILINKINFOW; - -interface IOleUILinkInfoA : IOleUILinkContainerA -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, DWORD*); - HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); - HRESULT GetLastUpdate(DWORD, FILETIME*); -} -alias IOleUILinkInfoA LPOLEUILINKINFOA; - -struct OLEUIGNRLPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSW* lpOP; -} -alias OLEUIGNRLPROPSW* POLEUIGNRLPROPSW, LPOLEUIGNRLPROPSW; - -struct OLEUIGNRLPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSA* lpOP; -} -alias OLEUIGNRLPROPSA* POLEUIGNRLPROPSA, LPOLEUIGNRLPROPSA; - -struct OLEUIVIEWPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSW* lpOP; - int nScaleMin; - int nScaleMax; -} -alias OLEUIVIEWPROPSW* POLEUIVIEWPROPSW, LPOLEUIVIEWPROPSW; - -struct OLEUIVIEWPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSA *lpOP; - int nScaleMin; - int nScaleMax; -} -alias OLEUIVIEWPROPSA* POLEUIVIEWPROPSA, LPOLEUIVIEWPROPSA; - -struct OLEUILINKPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSW *lpOP; -} -alias OLEUILINKPROPSW* POLEUILINKPROPSW, LPOLEUILINKPROPSW; - -struct OLEUILINKPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSA* lpOP; -} -alias OLEUILINKPROPSA* POLEUILINKPROPSA, LPOLEUILINKPROPSA; - -struct OLEUIOBJECTPROPSW { - DWORD cbStruct; - DWORD dwFlags; - LPPROPSHEETHEADERW lpPS; - DWORD dwObject; - LPOLEUIOBJINFOW lpObjInfo; - DWORD dwLink; - LPOLEUILINKINFOW lpLinkInfo; - LPOLEUIGNRLPROPSW lpGP; - LPOLEUIVIEWPROPSW lpVP; - LPOLEUILINKPROPSW lpLP; -} -alias OLEUIOBJECTPROPSW* POLEUIOBJECTPROPSW, LPOLEUIOBJECTPROPSW; - -struct OLEUIOBJECTPROPSA { - DWORD cbStruct; - DWORD dwFlags; - LPPROPSHEETHEADERA lpPS; - DWORD dwObject; - LPOLEUIOBJINFOA lpObjInfo; - DWORD dwLink; - LPOLEUILINKINFOA lpLinkInfo; - LPOLEUIGNRLPROPSA lpGP; - LPOLEUIVIEWPROPSA lpVP; - LPOLEUILINKPROPSA lpLP; -} -alias OLEUIOBJECTPROPSA* POLEUIOBJECTPROPSA, LPOLEUIOBJECTPROPSA; - -extern (Windows) { - BOOL OleUIAddVerbMenuW(LPOLEOBJECT, LPCWSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); - BOOL OleUIAddVerbMenuA(LPOLEOBJECT, LPCSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); - UINT OleUIBusyW(LPOLEUIBUSYW); - UINT OleUIBusyA(LPOLEUIBUSYA); - BOOL OleUICanConvertOrActivateAs(REFCLSID, BOOL, WORD); - UINT OleUIChangeIconW(LPOLEUICHANGEICONW); - UINT OleUIChangeIconA(LPOLEUICHANGEICONA); - UINT OleUIChangeSourceW(LPOLEUICHANGESOURCEW); - UINT OleUIChangeSourceA(LPOLEUICHANGESOURCEA); - UINT OleUIConvertW(LPOLEUICONVERTW); - UINT OleUIConvertA(LPOLEUICONVERTA); - UINT OleUIEditLinksW(LPOLEUIEDITLINKSW); - UINT OleUIEditLinksA(LPOLEUIEDITLINKSA); - UINT OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW); - UINT OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA); - UINT OleUIPasteSpecialW(LPOLEUIPASTESPECIALW); - UINT OleUIPasteSpecialA(LPOLEUIPASTESPECIALA); - BOOL OleUIUpdateLinksW(LPOLEUILINKCONTAINERW, HWND, LPWSTR, int); - BOOL OleUIUpdateLinksA(LPOLEUILINKCONTAINERA, HWND, LPSTR, int); -} - -extern (C) { - int OleUIPromptUserW(int, HWND, ...); - int OleUIPromptUserA(int, HWND, ...); -} - -version(Unicode) { - alias IDD_SERVERNOTREGW IDD_SERVERNOTREG; - alias IDD_LINKTYPECHANGEDW IDD_LINKTYPECHANGED; - alias OleUIUpdateLinksW OleUIUpdateLinks; - alias OleUIAddVerbMenuW OleUIAddVerbMenu; - alias OLEUIOBJECTPROPSW OLEUIOBJECTPROPS; - alias POLEUIOBJECTPROPSW POLEUIOBJECTPROPS; - alias LPOLEUIOBJECTPROPSW LPOLEUIOBJECTPROPS; - alias OleUIObjectPropertiesW OleUIObjectProperties; - alias OLEUIINSERTOBJECTW OLEUIINSERTOBJECT; - alias POLEUIINSERTOBJECTW POLEUIINSERTOBJECT; - alias LPOLEUIINSERTOBJECTW LPOLEUIINSERTOBJECT; - alias OleUIInsertObjectW OleUIInsertObject; - alias OleUIPromptUserW OleUIPromptUser; - alias OLEUIPASTEENTRYW OLEUIPASTEENTRY; - alias POLEUIPASTEENTRYW POLEUIPASTEENTRY; - alias LPOLEUIPASTEENTRYW LPOLEUIPASTEENTRY; - alias OLEUIPASTESPECIALW OLEUIPASTESPECIAL; - alias POLEUIPASTESPECIALW POLEUIPASTESPECIAL; - alias LPOLEUIPASTESPECIALW LPOLEUIPASTESPECIAL; - alias OleUIPasteSpecialW OleUIPasteSpecial; - alias IOleUILinkContainerW IOleUILinkContainer; - alias LPOLEUILINKCONTAINERW LPOLEUILINKCONTAINER; - alias OLEUIEDITLINKSW OLEUIEDITLINKS; - alias POLEUIEDITLINKSW POLEUIEDITLINKS; - alias LPOLEUIEDITLINKSW LPOLEUIEDITLINKS; - alias OleUIEditLinksW OleUIEditLinks; - alias OLEUICHANGEICONW OLEUICHANGEICON; - alias POLEUICHANGEICONW POLEUICHANGEICON; - alias LPOLEUICHANGEICONW LPOLEUICHANGEICON; - alias OleUIChangeIconW OleUIChangeIcon; - alias OLEUICONVERTW OLEUICONVERT; - alias POLEUICONVERTW POLEUICONVERT; - alias LPOLEUICONVERTW LPOLEUICONVERT; - alias OleUIConvertW OleUIConvert; - alias OLEUIBUSYW OLEUIBUSY; - alias POLEUIBUSYW POLEUIBUSY; - alias LPOLEUIBUSYW LPOLEUIBUSY; - alias OleUIBusyW OleUIBusy; - alias OLEUICHANGESOURCEW OLEUICHANGESOURCE; - alias POLEUICHANGESOURCEW POLEUICHANGESOURCE; - alias LPOLEUICHANGESOURCEW LPOLEUICHANGESOURCE; - alias OleUIChangeSourceW OleUIChangeSource; - alias IOleUIObjInfoW IOleUIObjInfo; - alias LPOLEUIOBJINFOW LPOLEUIOBJINFO; - alias IOleUILinkInfoW IOleUILinkInfo; - //alias IOleUILinkInfoWVtbl IOleUILinkInfoVtbl; - alias LPOLEUILINKINFOW LPOLEUILINKINFO; - alias OLEUIGNRLPROPSW OLEUIGNRLPROPS; - alias POLEUIGNRLPROPSW POLEUIGNRLPROPS; - alias LPOLEUIGNRLPROPSW LPOLEUIGNRLPROPS; - alias OLEUIVIEWPROPSW OLEUIVIEWPROPS; - alias POLEUIVIEWPROPSW POLEUIVIEWPROPS; - alias LPOLEUIVIEWPROPSW LPOLEUIVIEWPROPS; - alias OLEUILINKPROPSW OLEUILINKPROPS; - alias POLEUILINKPROPSW POLEUILINKPROPS; - alias LPOLEUILINKPROPSW LPOLEUILINKPROPS; -} else { - alias IDD_SERVERNOTREGA IDD_SERVERNOTREG; - alias IDD_LINKTYPECHANGEDA IDD_LINKTYPECHANGED; - alias OleUIUpdateLinksA OleUIUpdateLinks; - alias OleUIAddVerbMenuA OleUIAddVerbMenu; - alias OLEUIOBJECTPROPSA OLEUIOBJECTPROPS; - alias POLEUIOBJECTPROPSA POLEUIOBJECTPROPS; - alias LPOLEUIOBJECTPROPSA LPOLEUIOBJECTPROPS; - alias OleUIObjectPropertiesA OleUIObjectProperties; - alias OLEUIINSERTOBJECTA OLEUIINSERTOBJECT; - alias POLEUIINSERTOBJECTA POLEUIINSERTOBJECT; - alias LPOLEUIINSERTOBJECTA LPOLEUIINSERTOBJECT; - alias OleUIInsertObjectA OleUIInsertObject; - alias OleUIPromptUserA OleUIPromptUser; - alias OLEUIPASTEENTRYA OLEUIPASTEENTRY; - alias POLEUIPASTEENTRYA POLEUIPASTEENTRY; - alias LPOLEUIPASTEENTRYA LPOLEUIPASTEENTRY; - alias OLEUIPASTESPECIALA OLEUIPASTESPECIAL; - alias POLEUIPASTESPECIALA POLEUIPASTESPECIAL; - alias LPOLEUIPASTESPECIALA LPOLEUIPASTESPECIAL; - alias OleUIPasteSpecialA OleUIPasteSpecial; - alias IOleUILinkContainerA IOleUILinkContainer; - alias LPOLEUILINKCONTAINERA LPOLEUILINKCONTAINER; - alias OLEUIEDITLINKSA OLEUIEDITLINKS; - alias POLEUIEDITLINKSA POLEUIEDITLINKS; - alias LPOLEUIEDITLINKSA LPOLEUIEDITLINKS; - alias OleUIEditLinksA OleUIEditLinks; - alias OLEUICHANGEICONA OLEUICHANGEICON; - alias POLEUICHANGEICONA POLEUICHANGEICON; - alias LPOLEUICHANGEICONA LPOLEUICHANGEICON; - alias OleUIChangeIconA OleUIChangeIcon; - alias OLEUICONVERTA OLEUICONVERT; - alias POLEUICONVERTA POLEUICONVERT; - alias LPOLEUICONVERTA LPOLEUICONVERT; - alias OleUIConvertA OleUIConvert; - alias OLEUIBUSYA OLEUIBUSY; - alias POLEUIBUSYA POLEUIBUSY; - alias LPOLEUIBUSYA LPOLEUIBUSY; - alias OleUIBusyA OleUIBusy; - alias OLEUICHANGESOURCEA OLEUICHANGESOURCE; - alias POLEUICHANGESOURCEA POLEUICHANGESOURCE; - alias LPOLEUICHANGESOURCEA LPOLEUICHANGESOURCE; - alias OleUIChangeSourceA OleUIChangeSource; - alias IOleUIObjInfoA IOleUIObjInfo; - alias LPOLEUIOBJINFOA LPOLEUIOBJINFO; - alias IOleUILinkInfoA IOleUILinkInfo; - //alias IOleUILinkInfoAVtbl IOleUILinkInfoVtbl; - alias LPOLEUILINKINFOA LPOLEUILINKINFO; - alias OLEUIGNRLPROPSA OLEUIGNRLPROPS; - alias POLEUIGNRLPROPSA POLEUIGNRLPROPS; - alias LPOLEUIGNRLPROPSA LPOLEUIGNRLPROPS; - alias OLEUIVIEWPROPSA OLEUIVIEWPROPS; - alias POLEUIVIEWPROPSA POLEUIVIEWPROPS; - alias LPOLEUIVIEWPROPSA LPOLEUIVIEWPROPS; - alias OLEUILINKPROPSA OLEUILINKPROPS; - alias POLEUILINKPROPSA POLEUILINKPROPS; - alias LPOLEUILINKPROPSA LPOLEUILINKPROPS; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_oledlg.d) + */ +module core.sys.windows.oledlg; + +import core.sys.windows.commdlg, core.sys.windows.dlgs, core.sys.windows.ole2, core.sys.windows.prsht, core.sys.windows.shellapi, + core.sys.windows.windows; +private import core.sys.windows.winbase, core.sys.windows.objidl, core.sys.windows.objfwd, core.sys.windows.winnt; + +// FIXME: remove inherited methods from interface definitions + +const PS_MAXLINKTYPES=8; + +const TCHAR[] OLESTDDELIM = "\\"; +const TCHAR[] SZOLEUI_MSG_HELP = "OLEUI_MSG_HELP"; +const TCHAR[] SZOLEUI_MSG_ENDDIALOG = "OLEUI_MSG_ENDDIALOG"; +const TCHAR[] SZOLEUI_MSG_BROWSE = "OLEUI_MSG_BROWSE"; +const TCHAR[] SZOLEUI_MSG_CHANGEICON = "OLEUI_MSG_CHANGEICON"; +const TCHAR[] SZOLEUI_MSG_CLOSEBUSYDIALOG = "OLEUI_MSG_CLOSEBUSYDIALOG"; +const TCHAR[] SZOLEUI_MSG_CONVERT = "OLEUI_MSG_CONVERT"; +const TCHAR[] SZOLEUI_MSG_CHANGESOURCE = "OLEUI_MSG_CHANGESOURCE"; +const TCHAR[] SZOLEUI_MSG_ADDCONTROL = "OLEUI_MSG_ADDCONTROL"; +const TCHAR[] SZOLEUI_MSG_BROWSE_OFN = "OLEUI_MSG_BROWSE_OFN"; + +const TCHAR[] PROP_HWND_CHGICONDLG = "HWND_CIDLG"; + +const IDC_OLEUIHELP=99; + +enum { + IDC_IO_CREATENEW = 2100, + IDC_IO_CREATEFROMFILE, + IDC_IO_LINKFILE, + IDC_IO_OBJECTTYPELIST, + IDC_IO_DISPLAYASICON, + IDC_IO_CHANGEICON, + IDC_IO_FILE, + IDC_IO_FILEDISPLAY, + IDC_IO_RESULTIMAGE, + IDC_IO_RESULTTEXT, + IDC_IO_ICONDISPLAY, + IDC_IO_OBJECTTYPETEXT, + IDC_IO_FILETEXT, + IDC_IO_FILETYPE, + IDC_IO_INSERTCONTROL, + IDC_IO_ADDCONTROL, + IDC_IO_CONTROLTYPELIST // = 2116 +} + +const IDC_PS_PASTE=500; +const IDC_PS_PASTELINK=501; +const IDC_PS_SOURCETEXT=502; +const IDC_PS_PASTELIST=503; +const IDC_PS_PASTELINKLIST=504; +const IDC_PS_DISPLAYLIST=505; +const IDC_PS_DISPLAYASICON=506; +const IDC_PS_ICONDISPLAY=507; +const IDC_PS_CHANGEICON=508; +const IDC_PS_RESULTIMAGE=509; +const IDC_PS_RESULTTEXT=510; + +const IDC_CI_GROUP=120; +const IDC_CI_CURRENT=121; +const IDC_CI_CURRENTICON=122; +const IDC_CI_DEFAULT=123; +const IDC_CI_DEFAULTICON=124; +const IDC_CI_FROMFILE=125; +const IDC_CI_FROMFILEEDIT=126; +const IDC_CI_ICONLIST=127; +const IDC_CI_LABEL=128; +const IDC_CI_LABELEDIT=129; +const IDC_CI_BROWSE=130; +const IDC_CI_ICONDISPLAY=131; + +const IDC_CV_OBJECTTYPE=150; +const IDC_CV_DISPLAYASICON=152; +const IDC_CV_CHANGEICON=153; +const IDC_CV_ACTIVATELIST=154; +const IDC_CV_CONVERTTO=155; +const IDC_CV_ACTIVATEAS=156; +const IDC_CV_RESULTTEXT=157; +const IDC_CV_CONVERTLIST=158; +const IDC_CV_ICONDISPLAY=165; + +const IDC_EL_CHANGESOURCE=201; +const IDC_EL_AUTOMATIC=202; +const IDC_EL_CANCELLINK=209; +const IDC_EL_UPDATENOW=210; +const IDC_EL_OPENSOURCE=211; +const IDC_EL_MANUAL=212; +const IDC_EL_LINKSOURCE=216; +const IDC_EL_LINKTYPE=217; +const IDC_EL_LINKSLISTBOX=206; +const IDC_EL_COL1=220; +const IDC_EL_COL2=221; +const IDC_EL_COL3=222; + +const IDC_BZ_RETRY=600; +const IDC_BZ_ICON=601; +const IDC_BZ_MESSAGE1=602; +const IDC_BZ_SWITCHTO=604; + +const IDC_UL_METER=1029; +const IDC_UL_STOP=1030; +const IDC_UL_PERCENT=1031; +const IDC_UL_PROGRESS=1032; + +const IDC_PU_LINKS=900; +const IDC_PU_TEXT=901; +const IDC_PU_CONVERT=902; +const IDC_PU_ICON=908; + +const IDC_GP_OBJECTNAME=1009; +const IDC_GP_OBJECTTYPE=1010; +const IDC_GP_OBJECTSIZE=1011; +const IDC_GP_CONVERT=1013; +const IDC_GP_OBJECTICON=1014; +const IDC_GP_OBJECTLOCATION=1022; + +const IDC_VP_PERCENT=1000; +const IDC_VP_CHANGEICON=1001; +const IDC_VP_EDITABLE=1002; +const IDC_VP_ASICON=1003; +const IDC_VP_RELATIVE=1005; +const IDC_VP_SPIN=1006; +const IDC_VP_SCALETXT=1034; +const IDC_VP_ICONDISPLAY=1021; +const IDC_VP_RESULTIMAGE=1033; + +const IDC_LP_OPENSOURCE=1006; +const IDC_LP_UPDATENOW=1007; +const IDC_LP_BREAKLINK=1008; +const IDC_LP_LINKSOURCE=1012; +const IDC_LP_CHANGESOURCE=1015; +const IDC_LP_AUTOMATIC=1016; +const IDC_LP_MANUAL=1017; +const IDC_LP_DATE=1018; +const IDC_LP_TIME=1019; + +const IDD_INSERTOBJECT=1000; +const IDD_CHANGEICON=1001; +const IDD_CONVERT=1002; +const IDD_PASTESPECIAL=1003; +const IDD_EDITLINKS=1004; +const IDD_BUSY=1006; +const IDD_UPDATELINKS=1007; +const IDD_CHANGESOURCE=1009; +const IDD_INSERTFILEBROWSE=1010; +const IDD_CHANGEICONBROWSE=1011; +const IDD_CONVERTONLY=1012; +const IDD_CHANGESOURCE4=1013; +const IDD_GNRLPROPS=1100; +const IDD_VIEWPROPS=1101; +const IDD_LINKPROPS=1102; +const IDD_CANNOTUPDATELINK=1008; +const IDD_LINKSOURCEUNAVAILABLE=1020; +const IDD_SERVERNOTFOUND=1023; +const IDD_OUTOFMEMORY=1024; +const IDD_SERVERNOTREGW=1021; +const IDD_LINKTYPECHANGEDW=1022; +const IDD_SERVERNOTREGA=1025; +const IDD_LINKTYPECHANGEDA=1026; + +const ID_BROWSE_CHANGEICON=1; +const ID_BROWSE_INSERTFILE=2; +const ID_BROWSE_ADDCONTROL=3; +const ID_BROWSE_CHANGESOURCE=4; + +const OLEUI_FALSE=0; +const OLEUI_SUCCESS=1; +const OLEUI_OK=1; +const OLEUI_CANCEL=2; + +const OLEUI_ERR_STANDARDMIN=100; +const OLEUI_ERR_STRUCTURENULL=101; +const OLEUI_ERR_STRUCTUREINVALID=102; +const OLEUI_ERR_CBSTRUCTINCORRECT=103; +const OLEUI_ERR_HWNDOWNERINVALID=104; +const OLEUI_ERR_LPSZCAPTIONINVALID=105; +const OLEUI_ERR_LPFNHOOKINVALID=106; +const OLEUI_ERR_HINSTANCEINVALID=107; +const OLEUI_ERR_LPSZTEMPLATEINVALID=108; +const OLEUI_ERR_HRESOURCEINVALID=109; +const OLEUI_ERR_FINDTEMPLATEFAILURE=110; +const OLEUI_ERR_LOADTEMPLATEFAILURE=111; +const OLEUI_ERR_DIALOGFAILURE=112; +const OLEUI_ERR_LOCALMEMALLOC=113; +const OLEUI_ERR_GLOBALMEMALLOC=114; +const OLEUI_ERR_LOADSTRING=115; +const OLEUI_ERR_OLEMEMALLOC=116; +const OLEUI_ERR_STANDARDMAX=116; + +const OPF_OBJECTISLINK=1; +const OPF_NOFILLDEFAULT=2; +const OPF_SHOWHELP=4; +const OPF_DISABLECONVERT=8; + +const OLEUI_OPERR_SUBPROPNULL=OLEUI_ERR_STANDARDMAX; +const OLEUI_OPERR_SUBPROPINVALID=(OLEUI_ERR_STANDARDMAX+1); +const OLEUI_OPERR_PROPSHEETNULL=(OLEUI_ERR_STANDARDMAX+2); +const OLEUI_OPERR_PROPSHEETINVALID=(OLEUI_ERR_STANDARDMAX+3); +const OLEUI_OPERR_SUPPROP=(OLEUI_ERR_STANDARDMAX+4); +const OLEUI_OPERR_PROPSINVALID=(OLEUI_ERR_STANDARDMAX+5); +const OLEUI_OPERR_PAGESINCORRECT=(OLEUI_ERR_STANDARDMAX+6); +const OLEUI_OPERR_INVALIDPAGES=(OLEUI_ERR_STANDARDMAX+7); +const OLEUI_OPERR_NOTSUPPORTED=(OLEUI_ERR_STANDARDMAX+8); +const OLEUI_OPERR_DLGPROCNOTNULL=(OLEUI_ERR_STANDARDMAX+9); +const OLEUI_OPERR_LPARAMNOTZERO=(OLEUI_ERR_STANDARDMAX+10); +const OLEUI_GPERR_STRINGINVALID=(OLEUI_ERR_STANDARDMAX+11); +const OLEUI_GPERR_CLASSIDINVALID=(OLEUI_ERR_STANDARDMAX+12); +const OLEUI_GPERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+13); +const OLEUI_GPERR_CBFORMATINVALID=(OLEUI_ERR_STANDARDMAX+14); +const OLEUI_VPERR_METAPICTINVALID=(OLEUI_ERR_STANDARDMAX+15); +const OLEUI_VPERR_DVASPECTINVALID=(OLEUI_ERR_STANDARDMAX+16); +const OLEUI_LPERR_LINKCNTRNULL=(OLEUI_ERR_STANDARDMAX+17); +const OLEUI_LPERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+18); +const OLEUI_OPERR_PROPERTYSHEET=(OLEUI_ERR_STANDARDMAX+19); +const OLEUI_OPERR_OBJINFOINVALID=(OLEUI_ERR_STANDARDMAX+20); +const OLEUI_OPERR_LINKINFOINVALID=(OLEUI_ERR_STANDARDMAX+21); + +const OLEUI_QUERY_GETCLASSID=65280; +const OLEUI_QUERY_LINKBROKEN=65281; + +const IOF_SHOWHELP=1; +const IOF_SELECTCREATENEW=2; +const IOF_SELECTCREATEFROMFILE=4; +const IOF_CHECKLINK=8; +const IOF_CHECKDISPLAYASICON=16; +const IOF_CREATENEWOBJECT=32; +const IOF_CREATEFILEOBJECT=64; +const IOF_CREATELINKOBJECT=128; +const IOF_DISABLELINK=256; +const IOF_VERIFYSERVERSEXIST=512; +const IOF_DISABLEDISPLAYASICON=1024; +const IOF_HIDECHANGEICON=2048; +const IOF_SHOWINSERTCONTROL=4096; +const IOF_SELECTCREATECONTROL=8192; + +const OLEUI_IOERR_LPSZFILEINVALID=OLEUI_ERR_STANDARDMAX; +const OLEUI_IOERR_LPSZLABELINVALID=(OLEUI_ERR_STANDARDMAX+1); +const OLEUI_IOERR_HICONINVALID=(OLEUI_ERR_STANDARDMAX+2); +const OLEUI_IOERR_LPFORMATETCINVALID=(OLEUI_ERR_STANDARDMAX+3); +const OLEUI_IOERR_PPVOBJINVALID=(OLEUI_ERR_STANDARDMAX+4); +const OLEUI_IOERR_LPIOLECLIENTSITEINVALID=(OLEUI_ERR_STANDARDMAX+5); +const OLEUI_IOERR_LPISTORAGEINVALID=(OLEUI_ERR_STANDARDMAX+6); +const OLEUI_IOERR_SCODEHASERROR=(OLEUI_ERR_STANDARDMAX+7); +const OLEUI_IOERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+8); +const OLEUI_IOERR_CCHFILEINVALID=(OLEUI_ERR_STANDARDMAX+9); + +const PSF_SHOWHELP=1; +const PSF_SELECTPASTE=2; +const PSF_SELECTPASTELINK=4; +const PSF_CHECKDISPLAYASICON=8; +const PSF_DISABLEDISPLAYASICON=16; +const PSF_HIDECHANGEICON=32; +const PSF_STAYONCLIPBOARDCHANGE=64; +const PSF_NOREFRESHDATAOBJECT=128; + +const OLEUI_IOERR_SRCDATAOBJECTINVALID=OLEUI_ERR_STANDARDMAX; +const OLEUI_IOERR_ARRPASTEENTRIESINVALID=(OLEUI_ERR_STANDARDMAX+1); +const OLEUI_IOERR_ARRLINKTYPESINVALID=(OLEUI_ERR_STANDARDMAX+2); +const OLEUI_PSERR_CLIPBOARDCHANGED=(OLEUI_ERR_STANDARDMAX+3); +const OLEUI_PSERR_GETCLIPBOARDFAILED=(OLEUI_ERR_STANDARDMAX+4); +const OLEUI_ELERR_LINKCNTRNULL=OLEUI_ERR_STANDARDMAX; +const OLEUI_ELERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+1); + +const ELF_SHOWHELP=1; +const ELF_DISABLEUPDATENOW=2; +const ELF_DISABLEOPENSOURCE=4; +const ELF_DISABLECHANGESOURCE=8; +const ELF_DISABLECANCELLINK=16; + +const CIF_SHOWHELP=1; +const CIF_SELECTCURRENT=2; +const CIF_SELECTDEFAULT=4; +const CIF_SELECTFROMFILE=8; +const CIF_USEICONEXE=16; + +const OLEUI_CIERR_MUSTHAVECLSID=OLEUI_ERR_STANDARDMAX; +const OLEUI_CIERR_MUSTHAVECURRENTMETAFILE=OLEUI_ERR_STANDARDMAX+1; +const OLEUI_CIERR_SZICONEXEINVALID=OLEUI_ERR_STANDARDMAX+2; + +const CF_SHOWHELPBUTTON=1; +const CF_SETCONVERTDEFAULT=2; +const CF_SETACTIVATEDEFAULT=4; +const CF_SELECTCONVERTTO=8; +const CF_SELECTACTIVATEAS=16; +const CF_DISABLEDISPLAYASICON=32; +const CF_DISABLEACTIVATEAS=64; +const CF_HIDECHANGEICON=128; +const CF_CONVERTONLY=256; + +const OLEUI_CTERR_CLASSIDINVALID = OLEUI_ERR_STANDARDMAX+1; +const OLEUI_CTERR_DVASPECTINVALID = OLEUI_ERR_STANDARDMAX+2; +const OLEUI_CTERR_CBFORMATINVALID = OLEUI_ERR_STANDARDMAX+3; +const OLEUI_CTERR_HMETAPICTINVALID = OLEUI_ERR_STANDARDMAX+4; +const OLEUI_CTERR_STRINGINVALID = OLEUI_ERR_STANDARDMAX+5; + +const BZ_DISABLECANCELBUTTON = 1; +const BZ_DISABLESWITCHTOBUTTON = 2; +const BZ_DISABLERETRYBUTTON = 4; +const BZ_NOTRESPONDINGDIALOG = 8; + +const OLEUI_BZERR_HTASKINVALID = OLEUI_ERR_STANDARDMAX; +const OLEUI_BZ_SWITCHTOSELECTED = OLEUI_ERR_STANDARDMAX+1; +const OLEUI_BZ_RETRYSELECTED = OLEUI_ERR_STANDARDMAX+2; +const OLEUI_BZ_CALLUNBLOCKED = OLEUI_ERR_STANDARDMAX+3; + +const CSF_SHOWHELP = 1; +const CSF_VALIDSOURCE = 2; +const CSF_ONLYGETSOURCE = 4; +const CSF_EXPLORER = 8; + +const OLEUI_CSERR_LINKCNTRNULL = OLEUI_ERR_STANDARDMAX; +const OLEUI_CSERR_LINKCNTRINVALID = OLEUI_ERR_STANDARDMAX+1; +const OLEUI_CSERR_FROMNOTNULL = OLEUI_ERR_STANDARDMAX+2; +const OLEUI_CSERR_TONOTNULL = OLEUI_ERR_STANDARDMAX+3; +const OLEUI_CSERR_SOURCENULL = OLEUI_ERR_STANDARDMAX+4; +const OLEUI_CSERR_SOURCEINVALID = OLEUI_ERR_STANDARDMAX+5; +const OLEUI_CSERR_SOURCEPARSERROR = OLEUI_ERR_STANDARDMAX+6; +const OLEUI_CSERR_SOURCEPARSEERROR = OLEUI_ERR_STANDARDMAX+7; + +const VPF_SELECTRELATIVE=1; +const VPF_DISABLERELATIVE=2; +const VPF_DISABLESCALE=4; + +align(8): +extern (Windows) { + alias UINT function(HWND, UINT, WPARAM, LPARAM) LPFNOLEUIHOOK; +} + +struct OLEUIINSERTOBJECTW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + LPWSTR lpszFile; + UINT cchFile; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + IID iid; + DWORD oleRender; + LPFORMATETC lpFormatEtc; + LPOLECLIENTSITE lpIOleClientSite; + LPSTORAGE lpIStorage; + PVOID *ppvObj; + SCODE sc; + HGLOBAL hMetaPict; +} +alias OLEUIINSERTOBJECTW* POLEUIINSERTOBJECTW, LPOLEUIINSERTOBJECTW; + +struct OLEUIINSERTOBJECTA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + LPSTR lpszFile; + UINT cchFile; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + IID iid; + DWORD oleRender; + LPFORMATETC lpFormatEtc; + LPOLECLIENTSITE lpIOleClientSite; + LPSTORAGE lpIStorage; + PVOID *ppvObj; + SCODE sc; + HGLOBAL hMetaPict; +} +alias OLEUIINSERTOBJECTA* POLEUIINSERTOBJECTA, LPOLEUIINSERTOBJECTA; + +UINT OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); +UINT OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); + +enum OLEUIPASTEFLAG { + OLEUIPASTE_PASTEONLY, + OLEUIPASTE_LINKTYPE1, + OLEUIPASTE_LINKTYPE2, + OLEUIPASTE_LINKTYPE3 = 4, + OLEUIPASTE_LINKTYPE4 = 8, + OLEUIPASTE_LINKTYPE5 = 16, + OLEUIPASTE_LINKTYPE6 = 32, + OLEUIPASTE_LINKTYPE7 = 64, + OLEUIPASTE_LINKTYPE8 = 128, + OLEUIPASTE_PASTE = 512, + OLEUIPASTE_LINKANYTYPE = 1024, + OLEUIPASTE_ENABLEICON = 2048 +} + +struct OLEUIPASTEENTRYW { + FORMATETC fmtetc; + LPCWSTR lpstrFormatName; + LPCWSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; +} +alias OLEUIPASTEENTRYW* POLEUIPASTEENTRYW, LPOLEUIPASTEENTRYW; + +struct OLEUIPASTEENTRYA { + FORMATETC fmtetc; + LPCSTR lpstrFormatName; + LPCSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; +} +alias OLEUIPASTEENTRYA* POLEUIPASTEENTRYA, LPOLEUIPASTEENTRYA; + +struct OLEUIPASTESPECIALW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPDATAOBJECT lpSrcDataObj; + LPOLEUIPASTEENTRYW arrPasteEntries; + int cPasteEntries; + UINT *arrLinkTypes; + int cLinkTypes; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + int nSelectedIndex; + BOOL fLink; + HGLOBAL hMetaPict; + SIZEL sizel; +} +alias OLEUIPASTESPECIALW* POLEUIPASTESPECIALW, LPOLEUIPASTESPECIALW; + +struct OLEUIPASTESPECIALA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPDATAOBJECT lpSrcDataObj; + LPOLEUIPASTEENTRYA arrPasteEntries; + int cPasteEntries; + UINT* arrLinkTypes; + int cLinkTypes; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + int nSelectedIndex; + BOOL fLink; + HGLOBAL hMetaPict; + SIZEL sizel; +} +alias OLEUIPASTESPECIALA* POLEUIPASTESPECIALA, LPOLEUIPASTESPECIALA; + +interface IOleUILinkContainerW : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD dwLink); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, PDWORD); + HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); +} +alias IOleUILinkContainerW LPOLEUILINKCONTAINERW; + +interface IOleUILinkContainerA : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, PDWORD); + HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); +} +alias IOleUILinkContainerA LPOLEUILINKCONTAINERA; + +struct OLEUIEDITLINKSW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; +} +alias OLEUIEDITLINKSW* POLEUIEDITLINKSW, LPOLEUIEDITLINKSW; + +struct OLEUIEDITLINKSA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; +} +alias OLEUIEDITLINKSA* POLEUIEDITLINKSA, LPOLEUIEDITLINKSA; + +struct OLEUICHANGEICONW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + WCHAR[MAX_PATH] szIconExe; + int cchIconExe; +} +alias OLEUICHANGEICONW* POLEUICHANGEICONW, LPOLEUICHANGEICONW; + +struct OLEUICHANGEICONA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + CHAR[MAX_PATH] szIconExe; + int cchIconExe; +} +alias OLEUICHANGEICONA* POLEUICHANGEICONA, LPOLEUICHANGEICONA; + +struct OLEUICONVERTW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + CLSID clsidConvertDefault; + CLSID clsidActivateDefault; + CLSID clsidNew; + DWORD dvAspect; + WORD wFormat; + BOOL fIsLinkedObject; + HGLOBAL hMetaPict; + LPWSTR lpszUserType; + BOOL fObjectsIconChanged; + LPWSTR lpszDefLabel; + UINT cClsidExclude; + LPCLSID lpClsidExclude; +} +alias OLEUICONVERTW* POLEUICONVERTW, LPOLEUICONVERTW; + +struct OLEUICONVERTA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + CLSID clsidConvertDefault; + CLSID clsidActivateDefault; + CLSID clsidNew; + DWORD dvAspect; + WORD wFormat; + BOOL fIsLinkedObject; + HGLOBAL hMetaPict; + LPSTR lpszUserType; + BOOL fObjectsIconChanged; + LPSTR lpszDefLabel; + UINT cClsidExclude; + LPCLSID lpClsidExclude; +} +alias OLEUICONVERTA* POLEUICONVERTA, LPOLEUICONVERTA; + +struct OLEUIBUSYW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND *lphWndDialog; +} +alias OLEUIBUSYW* POLEUIBUSYW, LPOLEUIBUSYW; + +struct OLEUIBUSYA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND *lphWndDialog; +} +alias OLEUIBUSYA* POLEUIBUSYA, LPOLEUIBUSYA; + +struct OLEUICHANGESOURCEW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEW* lpOFN; + DWORD[4] dwReserved1; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; + DWORD dwLink; + LPWSTR lpszDisplayName; + ULONG nFileLength; + LPWSTR lpszFrom; + LPWSTR lpszTo; +} +alias OLEUICHANGESOURCEW* POLEUICHANGESOURCEW, LPOLEUICHANGESOURCEW; + +struct OLEUICHANGESOURCEA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEA *lpOFN; + DWORD[4] dwReserved1; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; + DWORD dwLink; + LPSTR lpszDisplayName; + ULONG nFileLength; + LPSTR lpszFrom; + LPSTR lpszTo; +} +alias OLEUICHANGESOURCEA* POLEUICHANGESOURCEA, LPOLEUICHANGESOURCEA; + +interface IOleUIObjInfoW : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT GetObjectInfo(DWORD, PDWORD, LPWSTR*, LPWSTR*, LPWSTR*, LPWSTR*); + HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); + HRESULT ConvertObject(DWORD, REFCLSID); + HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); + HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); +} +alias IOleUIObjInfoW LPOLEUIOBJINFOW; + +interface IOleUIObjInfoA : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT GetObjectInfo(DWORD, PDWORD, LPSTR*, LPSTR*, LPSTR*, LPSTR*); + HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); + HRESULT ConvertObject(DWORD, REFCLSID); + HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); + HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); +} +alias IOleUIObjInfoA LPOLEUIOBJINFOA; + +interface IOleUILinkInfoW : IOleUILinkContainerW +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, DWORD*); + HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); + HRESULT GetLastUpdate(DWORD, FILETIME*); +} +alias IOleUILinkInfoW LPOLEUILINKINFOW; + +interface IOleUILinkInfoA : IOleUILinkContainerA +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, DWORD*); + HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); + HRESULT GetLastUpdate(DWORD, FILETIME*); +} +alias IOleUILinkInfoA LPOLEUILINKINFOA; + +struct OLEUIGNRLPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW* lpOP; +} +alias OLEUIGNRLPROPSW* POLEUIGNRLPROPSW, LPOLEUIGNRLPROPSW; + +struct OLEUIGNRLPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA* lpOP; +} +alias OLEUIGNRLPROPSA* POLEUIGNRLPROPSA, LPOLEUIGNRLPROPSA; + +struct OLEUIVIEWPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW* lpOP; + int nScaleMin; + int nScaleMax; +} +alias OLEUIVIEWPROPSW* POLEUIVIEWPROPSW, LPOLEUIVIEWPROPSW; + +struct OLEUIVIEWPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA *lpOP; + int nScaleMin; + int nScaleMax; +} +alias OLEUIVIEWPROPSA* POLEUIVIEWPROPSA, LPOLEUIVIEWPROPSA; + +struct OLEUILINKPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW *lpOP; +} +alias OLEUILINKPROPSW* POLEUILINKPROPSW, LPOLEUILINKPROPSW; + +struct OLEUILINKPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA* lpOP; +} +alias OLEUILINKPROPSA* POLEUILINKPROPSA, LPOLEUILINKPROPSA; + +struct OLEUIOBJECTPROPSW { + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERW lpPS; + DWORD dwObject; + LPOLEUIOBJINFOW lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOW lpLinkInfo; + LPOLEUIGNRLPROPSW lpGP; + LPOLEUIVIEWPROPSW lpVP; + LPOLEUILINKPROPSW lpLP; +} +alias OLEUIOBJECTPROPSW* POLEUIOBJECTPROPSW, LPOLEUIOBJECTPROPSW; + +struct OLEUIOBJECTPROPSA { + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERA lpPS; + DWORD dwObject; + LPOLEUIOBJINFOA lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOA lpLinkInfo; + LPOLEUIGNRLPROPSA lpGP; + LPOLEUIVIEWPROPSA lpVP; + LPOLEUILINKPROPSA lpLP; +} +alias OLEUIOBJECTPROPSA* POLEUIOBJECTPROPSA, LPOLEUIOBJECTPROPSA; + +extern (Windows) { + BOOL OleUIAddVerbMenuW(LPOLEOBJECT, LPCWSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); + BOOL OleUIAddVerbMenuA(LPOLEOBJECT, LPCSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); + UINT OleUIBusyW(LPOLEUIBUSYW); + UINT OleUIBusyA(LPOLEUIBUSYA); + BOOL OleUICanConvertOrActivateAs(REFCLSID, BOOL, WORD); + UINT OleUIChangeIconW(LPOLEUICHANGEICONW); + UINT OleUIChangeIconA(LPOLEUICHANGEICONA); + UINT OleUIChangeSourceW(LPOLEUICHANGESOURCEW); + UINT OleUIChangeSourceA(LPOLEUICHANGESOURCEA); + UINT OleUIConvertW(LPOLEUICONVERTW); + UINT OleUIConvertA(LPOLEUICONVERTA); + UINT OleUIEditLinksW(LPOLEUIEDITLINKSW); + UINT OleUIEditLinksA(LPOLEUIEDITLINKSA); + UINT OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW); + UINT OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA); + UINT OleUIPasteSpecialW(LPOLEUIPASTESPECIALW); + UINT OleUIPasteSpecialA(LPOLEUIPASTESPECIALA); + BOOL OleUIUpdateLinksW(LPOLEUILINKCONTAINERW, HWND, LPWSTR, int); + BOOL OleUIUpdateLinksA(LPOLEUILINKCONTAINERA, HWND, LPSTR, int); +} + +extern (C) { + int OleUIPromptUserW(int, HWND, ...); + int OleUIPromptUserA(int, HWND, ...); +} + +version(Unicode) { + alias IDD_SERVERNOTREGW IDD_SERVERNOTREG; + alias IDD_LINKTYPECHANGEDW IDD_LINKTYPECHANGED; + alias OleUIUpdateLinksW OleUIUpdateLinks; + alias OleUIAddVerbMenuW OleUIAddVerbMenu; + alias OLEUIOBJECTPROPSW OLEUIOBJECTPROPS; + alias POLEUIOBJECTPROPSW POLEUIOBJECTPROPS; + alias LPOLEUIOBJECTPROPSW LPOLEUIOBJECTPROPS; + alias OleUIObjectPropertiesW OleUIObjectProperties; + alias OLEUIINSERTOBJECTW OLEUIINSERTOBJECT; + alias POLEUIINSERTOBJECTW POLEUIINSERTOBJECT; + alias LPOLEUIINSERTOBJECTW LPOLEUIINSERTOBJECT; + alias OleUIInsertObjectW OleUIInsertObject; + alias OleUIPromptUserW OleUIPromptUser; + alias OLEUIPASTEENTRYW OLEUIPASTEENTRY; + alias POLEUIPASTEENTRYW POLEUIPASTEENTRY; + alias LPOLEUIPASTEENTRYW LPOLEUIPASTEENTRY; + alias OLEUIPASTESPECIALW OLEUIPASTESPECIAL; + alias POLEUIPASTESPECIALW POLEUIPASTESPECIAL; + alias LPOLEUIPASTESPECIALW LPOLEUIPASTESPECIAL; + alias OleUIPasteSpecialW OleUIPasteSpecial; + alias IOleUILinkContainerW IOleUILinkContainer; + alias LPOLEUILINKCONTAINERW LPOLEUILINKCONTAINER; + alias OLEUIEDITLINKSW OLEUIEDITLINKS; + alias POLEUIEDITLINKSW POLEUIEDITLINKS; + alias LPOLEUIEDITLINKSW LPOLEUIEDITLINKS; + alias OleUIEditLinksW OleUIEditLinks; + alias OLEUICHANGEICONW OLEUICHANGEICON; + alias POLEUICHANGEICONW POLEUICHANGEICON; + alias LPOLEUICHANGEICONW LPOLEUICHANGEICON; + alias OleUIChangeIconW OleUIChangeIcon; + alias OLEUICONVERTW OLEUICONVERT; + alias POLEUICONVERTW POLEUICONVERT; + alias LPOLEUICONVERTW LPOLEUICONVERT; + alias OleUIConvertW OleUIConvert; + alias OLEUIBUSYW OLEUIBUSY; + alias POLEUIBUSYW POLEUIBUSY; + alias LPOLEUIBUSYW LPOLEUIBUSY; + alias OleUIBusyW OleUIBusy; + alias OLEUICHANGESOURCEW OLEUICHANGESOURCE; + alias POLEUICHANGESOURCEW POLEUICHANGESOURCE; + alias LPOLEUICHANGESOURCEW LPOLEUICHANGESOURCE; + alias OleUIChangeSourceW OleUIChangeSource; + alias IOleUIObjInfoW IOleUIObjInfo; + alias LPOLEUIOBJINFOW LPOLEUIOBJINFO; + alias IOleUILinkInfoW IOleUILinkInfo; + //alias IOleUILinkInfoWVtbl IOleUILinkInfoVtbl; + alias LPOLEUILINKINFOW LPOLEUILINKINFO; + alias OLEUIGNRLPROPSW OLEUIGNRLPROPS; + alias POLEUIGNRLPROPSW POLEUIGNRLPROPS; + alias LPOLEUIGNRLPROPSW LPOLEUIGNRLPROPS; + alias OLEUIVIEWPROPSW OLEUIVIEWPROPS; + alias POLEUIVIEWPROPSW POLEUIVIEWPROPS; + alias LPOLEUIVIEWPROPSW LPOLEUIVIEWPROPS; + alias OLEUILINKPROPSW OLEUILINKPROPS; + alias POLEUILINKPROPSW POLEUILINKPROPS; + alias LPOLEUILINKPROPSW LPOLEUILINKPROPS; +} else { + alias IDD_SERVERNOTREGA IDD_SERVERNOTREG; + alias IDD_LINKTYPECHANGEDA IDD_LINKTYPECHANGED; + alias OleUIUpdateLinksA OleUIUpdateLinks; + alias OleUIAddVerbMenuA OleUIAddVerbMenu; + alias OLEUIOBJECTPROPSA OLEUIOBJECTPROPS; + alias POLEUIOBJECTPROPSA POLEUIOBJECTPROPS; + alias LPOLEUIOBJECTPROPSA LPOLEUIOBJECTPROPS; + alias OleUIObjectPropertiesA OleUIObjectProperties; + alias OLEUIINSERTOBJECTA OLEUIINSERTOBJECT; + alias POLEUIINSERTOBJECTA POLEUIINSERTOBJECT; + alias LPOLEUIINSERTOBJECTA LPOLEUIINSERTOBJECT; + alias OleUIInsertObjectA OleUIInsertObject; + alias OleUIPromptUserA OleUIPromptUser; + alias OLEUIPASTEENTRYA OLEUIPASTEENTRY; + alias POLEUIPASTEENTRYA POLEUIPASTEENTRY; + alias LPOLEUIPASTEENTRYA LPOLEUIPASTEENTRY; + alias OLEUIPASTESPECIALA OLEUIPASTESPECIAL; + alias POLEUIPASTESPECIALA POLEUIPASTESPECIAL; + alias LPOLEUIPASTESPECIALA LPOLEUIPASTESPECIAL; + alias OleUIPasteSpecialA OleUIPasteSpecial; + alias IOleUILinkContainerA IOleUILinkContainer; + alias LPOLEUILINKCONTAINERA LPOLEUILINKCONTAINER; + alias OLEUIEDITLINKSA OLEUIEDITLINKS; + alias POLEUIEDITLINKSA POLEUIEDITLINKS; + alias LPOLEUIEDITLINKSA LPOLEUIEDITLINKS; + alias OleUIEditLinksA OleUIEditLinks; + alias OLEUICHANGEICONA OLEUICHANGEICON; + alias POLEUICHANGEICONA POLEUICHANGEICON; + alias LPOLEUICHANGEICONA LPOLEUICHANGEICON; + alias OleUIChangeIconA OleUIChangeIcon; + alias OLEUICONVERTA OLEUICONVERT; + alias POLEUICONVERTA POLEUICONVERT; + alias LPOLEUICONVERTA LPOLEUICONVERT; + alias OleUIConvertA OleUIConvert; + alias OLEUIBUSYA OLEUIBUSY; + alias POLEUIBUSYA POLEUIBUSY; + alias LPOLEUIBUSYA LPOLEUIBUSY; + alias OleUIBusyA OleUIBusy; + alias OLEUICHANGESOURCEA OLEUICHANGESOURCE; + alias POLEUICHANGESOURCEA POLEUICHANGESOURCE; + alias LPOLEUICHANGESOURCEA LPOLEUICHANGESOURCE; + alias OleUIChangeSourceA OleUIChangeSource; + alias IOleUIObjInfoA IOleUIObjInfo; + alias LPOLEUIOBJINFOA LPOLEUIOBJINFO; + alias IOleUILinkInfoA IOleUILinkInfo; + //alias IOleUILinkInfoAVtbl IOleUILinkInfoVtbl; + alias LPOLEUILINKINFOA LPOLEUILINKINFO; + alias OLEUIGNRLPROPSA OLEUIGNRLPROPS; + alias POLEUIGNRLPROPSA POLEUIGNRLPROPS; + alias LPOLEUIGNRLPROPSA LPOLEUIGNRLPROPS; + alias OLEUIVIEWPROPSA OLEUIVIEWPROPS; + alias POLEUIVIEWPROPSA POLEUIVIEWPROPS; + alias LPOLEUIVIEWPROPSA LPOLEUIVIEWPROPS; + alias OLEUILINKPROPSA OLEUILINKPROPS; + alias POLEUILINKPROPSA POLEUILINKPROPS; + alias LPOLEUILINKPROPSA LPOLEUILINKPROPS; +} diff --git a/src/core/sys/windows/oleidl.d b/src/core/sys/windows/oleidl.d index 1cd4eec806..98e8b413f8 100644 --- a/src/core/sys/windows/oleidl.d +++ b/src/core/sys/windows/oleidl.d @@ -1,269 +1,269 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_oleidl.d) - */ -module core.sys.windows.oleidl; - -// DAC: This is defined in ocidl !! -// what is it doing in here? -//alias IEnumOleUndoUnits LPENUMOLEUNDOUNITS; - -private import core.sys.windows.basetyps, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.windef, - core.sys.windows.winuser, core.sys.windows.wtypes; -private import core.sys.windows.objfwd; // for LPMONIKER -private import core.sys.windows.wingdi; // for LPLOGPALETTE - -const MK_ALT = 32; - -enum BINDSPEED { - BINDSPEED_INDEFINITE = 1, - BINDSPEED_MODERATE, - BINDSPEED_IMMEDIATE -} - -enum OLEWHICHMK { - OLEWHICHMK_CONTAINER = 1, - OLEWHICHMK_OBJREL, - OLEWHICHMK_OBJFULL -} - -enum OLEGETMONIKER { - OLEGETMONIKER_ONLYIFTHERE = 1, - OLEGETMONIKER_FORCEASSIGN, - OLEGETMONIKER_UNASSIGN, - OLEGETMONIKER_TEMPFORUSER -} - -enum USERCLASSTYPE { - USERCLASSTYPE_FULL = 1, - USERCLASSTYPE_SHORT, - USERCLASSTYPE_APPNAME -} - -enum DROPEFFECT { - DROPEFFECT_NONE = 0, - DROPEFFECT_COPY = 1, - DROPEFFECT_MOVE = 2, - DROPEFFECT_LINK = 4, - DROPEFFECT_SCROLL = 0x80000000 -} - -struct OLEMENUGROUPWIDTHS { - LONG[6] width; -} -alias OLEMENUGROUPWIDTHS* LPOLEMENUGROUPWIDTHS; - -alias HGLOBAL HOLEMENU; - -enum OLECLOSE { - OLECLOSE_SAVEIFDIRTY, - OLECLOSE_NOSAVE, - OLECLOSE_PROMPTSAVE -} - -struct OLEVERB { - LONG lVerb; - LPWSTR lpszVerbName; - DWORD fuFlags; - DWORD grfAttribs; -} -alias OLEVERB* LPOLEVERB; - -alias RECT BORDERWIDTHS; -alias LPRECT LPBORDERWIDTHS; -alias LPCRECT LPCBORDERWIDTHS; - -struct OLEINPLACEFRAMEINFO { - UINT cb; - BOOL fMDIApp; - HWND hwndFrame; - HACCEL haccel; - UINT cAccelEntries; -} -alias OLEINPLACEFRAMEINFO* LPOLEINPLACEFRAMEINFO; - -interface IEnumOLEVERB : IUnknown -{ - HRESULT Next(ULONG,OLEVERB*,ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumOLEVERB*); -} -//alias IEnumOLEVERB IEnumOleVerb; -alias IEnumOLEVERB LPENUMOLEVERB; - - -interface IParseDisplayName : IUnknown { - HRESULT ParseDisplayName(IBindCtx,LPOLESTR,ULONG*,IMoniker*); -} -alias IParseDisplayName LPPARSEDISPLAYNAME; - -interface IOleContainer : IParseDisplayName { - HRESULT EnumObjects(DWORD,IEnumUnknown*); - HRESULT LockContainer(BOOL); -} -alias IOleContainer LPOLECONTAINER; - -interface IOleItemContainer : IOleContainer { - HRESULT GetObject(LPOLESTR,DWORD,IBindCtx,REFIID,void**); - HRESULT GetObjectStorage(LPOLESTR,IBindCtx,REFIID,void**); - HRESULT IsRunning(LPOLESTR); -} - - -interface IOleClientSite : IUnknown { - HRESULT SaveObject(); - HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); - HRESULT GetContainer(LPOLECONTAINER*); - HRESULT ShowObject(); - HRESULT OnShowWindow(BOOL); - HRESULT RequestNewObjectLayout(); -} -alias IOleClientSite LPOLECLIENTSITE; - -interface IOleObject : IUnknown { - HRESULT SetClientSite(LPOLECLIENTSITE); - HRESULT GetClientSite(LPOLECLIENTSITE*); - HRESULT SetHostNames(LPCOLESTR,LPCOLESTR); - HRESULT Close(DWORD); - HRESULT SetMoniker(DWORD,LPMONIKER); - HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); - HRESULT InitFromData(LPDATAOBJECT,BOOL,DWORD); - HRESULT GetClipboardData(DWORD,LPDATAOBJECT*); - HRESULT DoVerb(LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT); - HRESULT EnumVerbs(LPENUMOLEVERB*); - HRESULT Update(); - HRESULT IsUpToDate(); - HRESULT GetUserClassID(LPCLSID); - HRESULT GetUserType(DWORD,LPOLESTR*); - HRESULT SetExtent(DWORD,SIZEL*); - HRESULT GetExtent(DWORD,SIZEL*); - HRESULT Advise(LPADVISESINK,PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumAdvise(LPENUMSTATDATA*); - HRESULT GetMiscStatus(DWORD,PDWORD); - HRESULT SetColorScheme(LPLOGPALETTE); -} -alias IOleObject LPOLEOBJECT; - -interface IOleWindow : IUnknown { - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); -} -alias IOleWindow LPOLEWINDOW; - -interface IOleInPlaceUIWindow : IOleWindow { - HRESULT GetBorder(LPRECT); - HRESULT RequestBorderSpace(LPCBORDERWIDTHS); - HRESULT SetBorderSpace(LPCBORDERWIDTHS); - HRESULT SetActiveObject(LPOLEINPLACEACTIVEOBJECT,LPCOLESTR); -} -alias IOleInPlaceUIWindow LPOLEINPLACEUIWINDOW; - -interface IOleInPlaceObject : IOleWindow { - HRESULT InPlaceDeactivate(); - HRESULT UIDeactivate(); - HRESULT SetObjectRects(LPCRECT,LPCRECT); - HRESULT ReactivateAndUndo(); -} - - -interface IOleInPlaceActiveObject : IOleWindow { - HRESULT TranslateAccelerator(LPMSG); - HRESULT OnFrameWindowActivate(BOOL); - HRESULT OnDocWindowActivate(BOOL); - HRESULT ResizeBorder(LPCRECT,LPOLEINPLACEUIWINDOW,BOOL); - HRESULT EnableModeless(BOOL); -} -alias IOleInPlaceActiveObject LPOLEINPLACEACTIVEOBJECT; - -interface IOleInPlaceFrame : IOleInPlaceUIWindow { - HRESULT InsertMenus(HMENU,LPOLEMENUGROUPWIDTHS); - HRESULT SetMenu(HMENU,HOLEMENU,HWND); - HRESULT RemoveMenus(HMENU); - HRESULT SetStatusText(LPCOLESTR); - HRESULT EnableModeless(BOOL); - HRESULT TranslateAccelerator(LPMSG,WORD); -} -alias IOleInPlaceFrame LPOLEINPLACEFRAME; - -interface IOleInPlaceSite : IOleWindow { - HRESULT CanInPlaceActivate(); - HRESULT OnInPlaceActivate(); - HRESULT OnUIActivate(); - HRESULT GetWindowContext(IOleInPlaceFrame,IOleInPlaceUIWindow,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO); - HRESULT Scroll(SIZE); - HRESULT OnUIDeactivate(BOOL); - HRESULT OnInPlaceDeactivate(); - HRESULT DiscardUndoState(); - HRESULT DeactivateAndUndo(); - HRESULT OnPosRectChange(LPCRECT); -} - -interface IOleAdviseHolder : IUnknown { - HRESULT Advise(LPADVISESINK,PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumAdvise(LPENUMSTATDATA*); - HRESULT SendOnRename(LPMONIKER); - HRESULT SendOnSave(); - HRESULT SendOnClose(); -} -alias IOleAdviseHolder LPOLEADVISEHOLDER; - -interface IDropSource : IUnknown { - HRESULT QueryContinueDrag(BOOL,DWORD); - HRESULT GiveFeedback(DWORD); -} -alias IDropSource LPDROPSOURCE; - -interface IDropTarget : IUnknown { - HRESULT DragEnter(LPDATAOBJECT,DWORD,POINTL,PDWORD); - HRESULT DragOver(DWORD,POINTL,PDWORD); - HRESULT DragLeave(); - HRESULT Drop(LPDATAOBJECT,DWORD,POINTL,PDWORD); -} -alias IDropTarget LPDROPTARGET; - -extern (Windows) { - alias BOOL function(DWORD) __IView_pfncont; -} - -interface IViewObject : IUnknown { - HRESULT Draw(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD); - HRESULT GetColorSet(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*); - HRESULT Freeze(DWORD,LONG,PVOID,PDWORD); - HRESULT Unfreeze(DWORD); - HRESULT SetAdvise(DWORD,DWORD,IAdviseSink); - HRESULT GetAdvise(PDWORD,PDWORD,IAdviseSink*); -} -alias IViewObject LPVIEWOBJECT; - -interface IViewObject2 : IViewObject { - HRESULT GetExtent(DWORD,LONG,DVTARGETDEVICE*,LPSIZEL); -} -alias IViewObject2 LPVIEWOBJECT2; - -interface IOleCache : IUnknown { - HRESULT Cache(FORMATETC*,DWORD,DWORD*); - HRESULT Uncache(DWORD); - HRESULT EnumCache(IEnumSTATDATA*); - HRESULT InitCache(LPDATAOBJECT); - HRESULT SetData(FORMATETC*,STGMEDIUM*,BOOL); -} -alias IOleCache LPOLECACHE; - -interface IOleCache2 : IOleCache { - HRESULT UpdateCache(LPDATAOBJECT,DWORD,LPVOID); - HRESULT DiscardCache(DWORD); -} -alias IOleCache2 LPOLECACHE2; - -interface IOleCacheControl : IUnknown { - HRESULT OnRun(LPDATAOBJECT); - HRESULT OnStop(); -} -alias IOleCacheControl LPOLECACHECONTROL; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_oleidl.d) + */ +module core.sys.windows.oleidl; + +// DAC: This is defined in ocidl !! +// what is it doing in here? +//alias IEnumOleUndoUnits LPENUMOLEUNDOUNITS; + +private import core.sys.windows.basetyps, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.windef, + core.sys.windows.winuser, core.sys.windows.wtypes; +private import core.sys.windows.objfwd; // for LPMONIKER +private import core.sys.windows.wingdi; // for LPLOGPALETTE + +const MK_ALT = 32; + +enum BINDSPEED { + BINDSPEED_INDEFINITE = 1, + BINDSPEED_MODERATE, + BINDSPEED_IMMEDIATE +} + +enum OLEWHICHMK { + OLEWHICHMK_CONTAINER = 1, + OLEWHICHMK_OBJREL, + OLEWHICHMK_OBJFULL +} + +enum OLEGETMONIKER { + OLEGETMONIKER_ONLYIFTHERE = 1, + OLEGETMONIKER_FORCEASSIGN, + OLEGETMONIKER_UNASSIGN, + OLEGETMONIKER_TEMPFORUSER +} + +enum USERCLASSTYPE { + USERCLASSTYPE_FULL = 1, + USERCLASSTYPE_SHORT, + USERCLASSTYPE_APPNAME +} + +enum DROPEFFECT { + DROPEFFECT_NONE = 0, + DROPEFFECT_COPY = 1, + DROPEFFECT_MOVE = 2, + DROPEFFECT_LINK = 4, + DROPEFFECT_SCROLL = 0x80000000 +} + +struct OLEMENUGROUPWIDTHS { + LONG[6] width; +} +alias OLEMENUGROUPWIDTHS* LPOLEMENUGROUPWIDTHS; + +alias HGLOBAL HOLEMENU; + +enum OLECLOSE { + OLECLOSE_SAVEIFDIRTY, + OLECLOSE_NOSAVE, + OLECLOSE_PROMPTSAVE +} + +struct OLEVERB { + LONG lVerb; + LPWSTR lpszVerbName; + DWORD fuFlags; + DWORD grfAttribs; +} +alias OLEVERB* LPOLEVERB; + +alias RECT BORDERWIDTHS; +alias LPRECT LPBORDERWIDTHS; +alias LPCRECT LPCBORDERWIDTHS; + +struct OLEINPLACEFRAMEINFO { + UINT cb; + BOOL fMDIApp; + HWND hwndFrame; + HACCEL haccel; + UINT cAccelEntries; +} +alias OLEINPLACEFRAMEINFO* LPOLEINPLACEFRAMEINFO; + +interface IEnumOLEVERB : IUnknown +{ + HRESULT Next(ULONG,OLEVERB*,ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOLEVERB*); +} +//alias IEnumOLEVERB IEnumOleVerb; +alias IEnumOLEVERB LPENUMOLEVERB; + + +interface IParseDisplayName : IUnknown { + HRESULT ParseDisplayName(IBindCtx,LPOLESTR,ULONG*,IMoniker*); +} +alias IParseDisplayName LPPARSEDISPLAYNAME; + +interface IOleContainer : IParseDisplayName { + HRESULT EnumObjects(DWORD,IEnumUnknown*); + HRESULT LockContainer(BOOL); +} +alias IOleContainer LPOLECONTAINER; + +interface IOleItemContainer : IOleContainer { + HRESULT GetObject(LPOLESTR,DWORD,IBindCtx,REFIID,void**); + HRESULT GetObjectStorage(LPOLESTR,IBindCtx,REFIID,void**); + HRESULT IsRunning(LPOLESTR); +} + + +interface IOleClientSite : IUnknown { + HRESULT SaveObject(); + HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); + HRESULT GetContainer(LPOLECONTAINER*); + HRESULT ShowObject(); + HRESULT OnShowWindow(BOOL); + HRESULT RequestNewObjectLayout(); +} +alias IOleClientSite LPOLECLIENTSITE; + +interface IOleObject : IUnknown { + HRESULT SetClientSite(LPOLECLIENTSITE); + HRESULT GetClientSite(LPOLECLIENTSITE*); + HRESULT SetHostNames(LPCOLESTR,LPCOLESTR); + HRESULT Close(DWORD); + HRESULT SetMoniker(DWORD,LPMONIKER); + HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); + HRESULT InitFromData(LPDATAOBJECT,BOOL,DWORD); + HRESULT GetClipboardData(DWORD,LPDATAOBJECT*); + HRESULT DoVerb(LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT); + HRESULT EnumVerbs(LPENUMOLEVERB*); + HRESULT Update(); + HRESULT IsUpToDate(); + HRESULT GetUserClassID(LPCLSID); + HRESULT GetUserType(DWORD,LPOLESTR*); + HRESULT SetExtent(DWORD,SIZEL*); + HRESULT GetExtent(DWORD,SIZEL*); + HRESULT Advise(LPADVISESINK,PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(LPENUMSTATDATA*); + HRESULT GetMiscStatus(DWORD,PDWORD); + HRESULT SetColorScheme(LPLOGPALETTE); +} +alias IOleObject LPOLEOBJECT; + +interface IOleWindow : IUnknown { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); +} +alias IOleWindow LPOLEWINDOW; + +interface IOleInPlaceUIWindow : IOleWindow { + HRESULT GetBorder(LPRECT); + HRESULT RequestBorderSpace(LPCBORDERWIDTHS); + HRESULT SetBorderSpace(LPCBORDERWIDTHS); + HRESULT SetActiveObject(LPOLEINPLACEACTIVEOBJECT,LPCOLESTR); +} +alias IOleInPlaceUIWindow LPOLEINPLACEUIWINDOW; + +interface IOleInPlaceObject : IOleWindow { + HRESULT InPlaceDeactivate(); + HRESULT UIDeactivate(); + HRESULT SetObjectRects(LPCRECT,LPCRECT); + HRESULT ReactivateAndUndo(); +} + + +interface IOleInPlaceActiveObject : IOleWindow { + HRESULT TranslateAccelerator(LPMSG); + HRESULT OnFrameWindowActivate(BOOL); + HRESULT OnDocWindowActivate(BOOL); + HRESULT ResizeBorder(LPCRECT,LPOLEINPLACEUIWINDOW,BOOL); + HRESULT EnableModeless(BOOL); +} +alias IOleInPlaceActiveObject LPOLEINPLACEACTIVEOBJECT; + +interface IOleInPlaceFrame : IOleInPlaceUIWindow { + HRESULT InsertMenus(HMENU,LPOLEMENUGROUPWIDTHS); + HRESULT SetMenu(HMENU,HOLEMENU,HWND); + HRESULT RemoveMenus(HMENU); + HRESULT SetStatusText(LPCOLESTR); + HRESULT EnableModeless(BOOL); + HRESULT TranslateAccelerator(LPMSG,WORD); +} +alias IOleInPlaceFrame LPOLEINPLACEFRAME; + +interface IOleInPlaceSite : IOleWindow { + HRESULT CanInPlaceActivate(); + HRESULT OnInPlaceActivate(); + HRESULT OnUIActivate(); + HRESULT GetWindowContext(IOleInPlaceFrame,IOleInPlaceUIWindow,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO); + HRESULT Scroll(SIZE); + HRESULT OnUIDeactivate(BOOL); + HRESULT OnInPlaceDeactivate(); + HRESULT DiscardUndoState(); + HRESULT DeactivateAndUndo(); + HRESULT OnPosRectChange(LPCRECT); +} + +interface IOleAdviseHolder : IUnknown { + HRESULT Advise(LPADVISESINK,PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(LPENUMSTATDATA*); + HRESULT SendOnRename(LPMONIKER); + HRESULT SendOnSave(); + HRESULT SendOnClose(); +} +alias IOleAdviseHolder LPOLEADVISEHOLDER; + +interface IDropSource : IUnknown { + HRESULT QueryContinueDrag(BOOL,DWORD); + HRESULT GiveFeedback(DWORD); +} +alias IDropSource LPDROPSOURCE; + +interface IDropTarget : IUnknown { + HRESULT DragEnter(LPDATAOBJECT,DWORD,POINTL,PDWORD); + HRESULT DragOver(DWORD,POINTL,PDWORD); + HRESULT DragLeave(); + HRESULT Drop(LPDATAOBJECT,DWORD,POINTL,PDWORD); +} +alias IDropTarget LPDROPTARGET; + +extern (Windows) { + alias BOOL function(DWORD) __IView_pfncont; +} + +interface IViewObject : IUnknown { + HRESULT Draw(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD); + HRESULT GetColorSet(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*); + HRESULT Freeze(DWORD,LONG,PVOID,PDWORD); + HRESULT Unfreeze(DWORD); + HRESULT SetAdvise(DWORD,DWORD,IAdviseSink); + HRESULT GetAdvise(PDWORD,PDWORD,IAdviseSink*); +} +alias IViewObject LPVIEWOBJECT; + +interface IViewObject2 : IViewObject { + HRESULT GetExtent(DWORD,LONG,DVTARGETDEVICE*,LPSIZEL); +} +alias IViewObject2 LPVIEWOBJECT2; + +interface IOleCache : IUnknown { + HRESULT Cache(FORMATETC*,DWORD,DWORD*); + HRESULT Uncache(DWORD); + HRESULT EnumCache(IEnumSTATDATA*); + HRESULT InitCache(LPDATAOBJECT); + HRESULT SetData(FORMATETC*,STGMEDIUM*,BOOL); +} +alias IOleCache LPOLECACHE; + +interface IOleCache2 : IOleCache { + HRESULT UpdateCache(LPDATAOBJECT,DWORD,LPVOID); + HRESULT DiscardCache(DWORD); +} +alias IOleCache2 LPOLECACHE2; + +interface IOleCacheControl : IUnknown { + HRESULT OnRun(LPDATAOBJECT); + HRESULT OnStop(); +} +alias IOleCacheControl LPOLECACHECONTROL; diff --git a/src/core/sys/windows/pbt.d b/src/core/sys/windows/pbt.d index ab374c582a..aad9240375 100644 --- a/src/core/sys/windows/pbt.d +++ b/src/core/sys/windows/pbt.d @@ -1,29 +1,29 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_pbt.d) - */ -module core.sys.windows.pbt; - -private import core.sys.windows.windef; - -enum : WPARAM { - PBT_APMQUERYSUSPEND, - PBT_APMQUERYSTANDBY, - PBT_APMQUERYSUSPENDFAILED, - PBT_APMQUERYSTANDBYFAILED, - PBT_APMSUSPEND, - PBT_APMSTANDBY, - PBT_APMRESUMECRITICAL, - PBT_APMRESUMESUSPEND, - PBT_APMRESUMESTANDBY, - PBT_APMBATTERYLOW, - PBT_APMPOWERSTATUSCHANGE, - PBT_APMOEMEVENT // = 11 -} - -const LPARAM PBTF_APMRESUMEFROMFAILURE = 1; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_pbt.d) + */ +module core.sys.windows.pbt; + +private import core.sys.windows.windef; + +enum : WPARAM { + PBT_APMQUERYSUSPEND, + PBT_APMQUERYSTANDBY, + PBT_APMQUERYSUSPENDFAILED, + PBT_APMQUERYSTANDBYFAILED, + PBT_APMSUSPEND, + PBT_APMSTANDBY, + PBT_APMRESUMECRITICAL, + PBT_APMRESUMESUSPEND, + PBT_APMRESUMESTANDBY, + PBT_APMBATTERYLOW, + PBT_APMPOWERSTATUSCHANGE, + PBT_APMOEMEVENT // = 11 +} + +const LPARAM PBTF_APMRESUMEFROMFAILURE = 1; diff --git a/src/core/sys/windows/powrprof.d b/src/core/sys/windows/powrprof.d index d5c5577c3d..a1423dd9c8 100644 --- a/src/core/sys/windows/powrprof.d +++ b/src/core/sys/windows/powrprof.d @@ -1,139 +1,139 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_powrprof.d) - */ -module core.sys.windows.powrprof; -pragma(lib, "powrprof"); - -private import core.sys.windows.windef; -private import core.sys.windows.ntdef; - -// FIXME: look up Windows version support - -const ULONG - EnableSysTrayBatteryMeter = 1, - EnableMultiBatteryDisplay = 2, - EnablePasswordLogon = 4, - EnableWakeOnRing = 8, - EnableVideoDimDisplay = 16; - -const UINT NEWSCHEME = -1; - -struct GLOBAL_MACHINE_POWER_POLICY { - ULONG Revision; - SYSTEM_POWER_STATE LidOpenWakeAc; - SYSTEM_POWER_STATE LidOpenWakeDc; - ULONG BroadcastCapacityResolution; -} -alias GLOBAL_MACHINE_POWER_POLICY* PGLOBAL_MACHINE_POWER_POLICY; - -struct GLOBAL_USER_POWER_POLICY { - ULONG Revision; - POWER_ACTION_POLICY PowerButtonAc; - POWER_ACTION_POLICY PowerButtonDc; - POWER_ACTION_POLICY SleepButtonAc; - POWER_ACTION_POLICY SleepButtonDc; - POWER_ACTION_POLICY LidCloseAc; - POWER_ACTION_POLICY LidCloseDc; - SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; - ULONG GlobalFlags; -} -alias GLOBAL_USER_POWER_POLICY* PGLOBAL_USER_POWER_POLICY; - -struct GLOBAL_POWER_POLICY { - GLOBAL_USER_POWER_POLICY user; - GLOBAL_MACHINE_POWER_POLICY mach; -} -alias GLOBAL_POWER_POLICY* PGLOBAL_POWER_POLICY; - -struct MACHINE_POWER_POLICY { - ULONG Revision; - SYSTEM_POWER_STATE MinSleepAc; - SYSTEM_POWER_STATE MinSleepDc; - SYSTEM_POWER_STATE ReducedLatencySleepAc; - SYSTEM_POWER_STATE ReducedLatencySleepDc; - ULONG DozeTimeoutAc; - ULONG DozeTimeoutDc; - ULONG DozeS4TimeoutAc; - ULONG DozeS4TimeoutDc; - UCHAR MinThrottleAc; - UCHAR MinThrottleDc; - UCHAR[2] pad1; - POWER_ACTION_POLICY OverThrottledAc; - POWER_ACTION_POLICY OverThrottledDc; -} -alias MACHINE_POWER_POLICY* PMACHINE_POWER_POLICY; - -struct MACHINE_PROCESSOR_POWER_POLICY { - ULONG Revision; - PROCESSOR_POWER_POLICY ProcessorPolicyAc; - PROCESSOR_POWER_POLICY ProcessorPolicyDc; -} -alias MACHINE_PROCESSOR_POWER_POLICY* PMACHINE_PROCESSOR_POWER_POLICY; - -struct USER_POWER_POLICY { - ULONG Revision; - POWER_ACTION_POLICY IdleAc; - POWER_ACTION_POLICY IdleDc; - ULONG IdleTimeoutAc; - ULONG IdleTimeoutDc; - UCHAR IdleSensitivityAc; - UCHAR IdleSensitivityDc; - UCHAR ThrottlePolicyAc; - UCHAR ThrottlePolicyDc; - SYSTEM_POWER_STATE MaxSleepAc; - SYSTEM_POWER_STATE MaxSleepDc; - ULONG[2] Reserved; - ULONG VideoTimeoutAc; - ULONG VideoTimeoutDc; - ULONG SpindownTimeoutAc; - ULONG SpindownTimeoutDc; - BOOLEAN OptimizeForPowerAc; - BOOLEAN OptimizeForPowerDc; - UCHAR FanThrottleToleranceAc; - UCHAR FanThrottleToleranceDc; - UCHAR ForcedThrottleAc; - UCHAR ForcedThrottleDc; -} -alias USER_POWER_POLICY* PUSER_POWER_POLICY; - -struct POWER_POLICY { - USER_POWER_POLICY user; - MACHINE_POWER_POLICY mach; -} -alias POWER_POLICY* PPOWER_POLICY; - -extern (Windows) { - alias BOOLEAN function(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, - LPARAM) PWRSCHEMESENUMPROC; - alias BOOLEAN function(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN) - PFNNTINITIATEPWRACTION; - - NTSTATUS CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, - PVOID, ULONG); - BOOLEAN CanUserWritePwrScheme(); - BOOLEAN DeletePwrScheme(UINT); - BOOLEAN EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM); - BOOLEAN GetActivePwrScheme(PUINT); - BOOLEAN GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); - BOOLEAN GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES); - BOOLEAN GetPwrDiskSpindownRange(PUINT, PUINT); - BOOLEAN IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY); - BOOLEAN IsPwrHibernateAllowed(); - BOOLEAN IsPwrShutdownAllowed(); - BOOLEAN IsPwrSuspendAllowed(); - BOOLEAN ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY); - BOOLEAN ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); - BOOLEAN ReadPwrScheme(UINT, PPOWER_POLICY); - BOOLEAN SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY); - BOOLEAN SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN); - BOOLEAN WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY); - BOOLEAN WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); - BOOLEAN ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); - BOOLEAN WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_powrprof.d) + */ +module core.sys.windows.powrprof; +pragma(lib, "powrprof"); + +private import core.sys.windows.windef; +private import core.sys.windows.ntdef; + +// FIXME: look up Windows version support + +const ULONG + EnableSysTrayBatteryMeter = 1, + EnableMultiBatteryDisplay = 2, + EnablePasswordLogon = 4, + EnableWakeOnRing = 8, + EnableVideoDimDisplay = 16; + +const UINT NEWSCHEME = -1; + +struct GLOBAL_MACHINE_POWER_POLICY { + ULONG Revision; + SYSTEM_POWER_STATE LidOpenWakeAc; + SYSTEM_POWER_STATE LidOpenWakeDc; + ULONG BroadcastCapacityResolution; +} +alias GLOBAL_MACHINE_POWER_POLICY* PGLOBAL_MACHINE_POWER_POLICY; + +struct GLOBAL_USER_POWER_POLICY { + ULONG Revision; + POWER_ACTION_POLICY PowerButtonAc; + POWER_ACTION_POLICY PowerButtonDc; + POWER_ACTION_POLICY SleepButtonAc; + POWER_ACTION_POLICY SleepButtonDc; + POWER_ACTION_POLICY LidCloseAc; + POWER_ACTION_POLICY LidCloseDc; + SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; + ULONG GlobalFlags; +} +alias GLOBAL_USER_POWER_POLICY* PGLOBAL_USER_POWER_POLICY; + +struct GLOBAL_POWER_POLICY { + GLOBAL_USER_POWER_POLICY user; + GLOBAL_MACHINE_POWER_POLICY mach; +} +alias GLOBAL_POWER_POLICY* PGLOBAL_POWER_POLICY; + +struct MACHINE_POWER_POLICY { + ULONG Revision; + SYSTEM_POWER_STATE MinSleepAc; + SYSTEM_POWER_STATE MinSleepDc; + SYSTEM_POWER_STATE ReducedLatencySleepAc; + SYSTEM_POWER_STATE ReducedLatencySleepDc; + ULONG DozeTimeoutAc; + ULONG DozeTimeoutDc; + ULONG DozeS4TimeoutAc; + ULONG DozeS4TimeoutDc; + UCHAR MinThrottleAc; + UCHAR MinThrottleDc; + UCHAR[2] pad1; + POWER_ACTION_POLICY OverThrottledAc; + POWER_ACTION_POLICY OverThrottledDc; +} +alias MACHINE_POWER_POLICY* PMACHINE_POWER_POLICY; + +struct MACHINE_PROCESSOR_POWER_POLICY { + ULONG Revision; + PROCESSOR_POWER_POLICY ProcessorPolicyAc; + PROCESSOR_POWER_POLICY ProcessorPolicyDc; +} +alias MACHINE_PROCESSOR_POWER_POLICY* PMACHINE_PROCESSOR_POWER_POLICY; + +struct USER_POWER_POLICY { + ULONG Revision; + POWER_ACTION_POLICY IdleAc; + POWER_ACTION_POLICY IdleDc; + ULONG IdleTimeoutAc; + ULONG IdleTimeoutDc; + UCHAR IdleSensitivityAc; + UCHAR IdleSensitivityDc; + UCHAR ThrottlePolicyAc; + UCHAR ThrottlePolicyDc; + SYSTEM_POWER_STATE MaxSleepAc; + SYSTEM_POWER_STATE MaxSleepDc; + ULONG[2] Reserved; + ULONG VideoTimeoutAc; + ULONG VideoTimeoutDc; + ULONG SpindownTimeoutAc; + ULONG SpindownTimeoutDc; + BOOLEAN OptimizeForPowerAc; + BOOLEAN OptimizeForPowerDc; + UCHAR FanThrottleToleranceAc; + UCHAR FanThrottleToleranceDc; + UCHAR ForcedThrottleAc; + UCHAR ForcedThrottleDc; +} +alias USER_POWER_POLICY* PUSER_POWER_POLICY; + +struct POWER_POLICY { + USER_POWER_POLICY user; + MACHINE_POWER_POLICY mach; +} +alias POWER_POLICY* PPOWER_POLICY; + +extern (Windows) { + alias BOOLEAN function(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, + LPARAM) PWRSCHEMESENUMPROC; + alias BOOLEAN function(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN) + PFNNTINITIATEPWRACTION; + + NTSTATUS CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, + PVOID, ULONG); + BOOLEAN CanUserWritePwrScheme(); + BOOLEAN DeletePwrScheme(UINT); + BOOLEAN EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM); + BOOLEAN GetActivePwrScheme(PUINT); + BOOLEAN GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES); + BOOLEAN GetPwrDiskSpindownRange(PUINT, PUINT); + BOOLEAN IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY); + BOOLEAN IsPwrHibernateAllowed(); + BOOLEAN IsPwrShutdownAllowed(); + BOOLEAN IsPwrSuspendAllowed(); + BOOLEAN ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY); + BOOLEAN ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); + BOOLEAN ReadPwrScheme(UINT, PPOWER_POLICY); + BOOLEAN SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN); + BOOLEAN WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY); + BOOLEAN WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); + BOOLEAN ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY); +} diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d index 5b931751d1..386a0d38f6 100644 --- a/src/core/sys/windows/prsht.d +++ b/src/core/sys/windows/prsht.d @@ -1,441 +1,441 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Vladimir Vlasov - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_prsht.d) - */ -module core.sys.windows.prsht; -pragma(lib, "comctl32"); - -private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; - -const MAXPROPPAGES = 100; - -enum { - PSP_DEFAULT = 0x00000000, - PSP_DLGINDIRECT = 0x00000001, - PSP_USEHICON = 0x00000002, - PSP_USEICONID = 0x00000004, - PSP_USETITLE = 0x00000008, - PSP_RTLREADING = 0x00000010, - PSP_HASHELP = 0x00000020, - PSP_USEREFPARENT = 0x00000040, - PSP_USECALLBACK = 0x00000080, - PSP_PREMATURE = 0x00000400 -} - -static if (_WIN32_IE >= 0x400) { - enum { - PSP_HIDEHEADER = 0x00000800, - PSP_USEHEADERTITLE = 0x00001000, - PSP_USEHEADERSUBTITLE = 0x00002000 - } -} - -enum { - PSPCB_RELEASE = 1, - PSPCB_CREATE -} - -enum { - PSH_DEFAULT = 0x00000000, - PSH_PROPTITLE = 0x00000001, - PSH_USEHICON = 0x00000002, - PSH_USEICONID = 0x00000004, - PSH_PROPSHEETPAGE = 0x00000008, - PSH_WIZARDHASFINISH = 0x00000010, - PSH_WIZARD = 0x00000020, - PSH_USEPSTARTPAGE = 0x00000040, - PSH_NOAPPLYNOW = 0x00000080, - PSH_USECALLBACK = 0x00000100, - PSH_HASHELP = 0x00000200, - PSH_MODELESS = 0x00000400, - PSH_RTLREADING = 0x00000800, - PSH_WIZARDCONTEXTHELP = 0x00001000 -} - -static if (_WIN32_IE >= 0x400) { - enum { - PSH_WATERMARK = 0x00008000, - PSH_USEHBMWATERMARK = 0x00010000, - PSH_USEHPLWATERMARK = 0x00020000, - PSH_STRETCHWATERMARK = 0x00040000, - PSH_HEADER = 0x00080000, - PSH_USEHBMHEADER = 0x00100000, - PSH_USEPAGELANG = 0x00200000 - } - static if (_WIN32_IE < 0x0500) { - enum { - PSH_WIZARD97 = 0x00002000 - } - } else { - enum { - PSH_WIZARD97 = 0x01000000 - } - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - PSH_WIZARD_LITE = 0x00400000, - PSH_NOCONTEXTHELP = 0x02000000 - } -} - -enum { - PSCB_INITIALIZED = 1, - PSCB_PRECREATE -} - -enum { - PSN_FIRST = (-200), - PSN_LAST = (-299), - PSN_SETACTIVE = (-200), - PSN_KILLACTIVE = (-201), - PSN_APPLY = (-202), - PSN_RESET = (-203), - PSN_HELP = (-205), - PSN_WIZBACK = (-206), - PSN_WIZNEXT = (-207), - PSN_WIZFINISH = (-208), - PSN_QUERYCANCEL = (-209) -} -static if (_WIN32_IE >= 0x400) { - enum { - PSN_GETOBJECT = (-210) - } -} -static if (_WIN32_IE >= 0x500) { - enum { - PSN_TRANSLATEACCELERATOR = (-212), - PSN_QUERYINITIALFOCUS = (-213) - } -} - -enum { - PSNRET_NOERROR, - PSNRET_INVALID, - PSNRET_INVALID_NOCHANGEPAGE, - PSNRET_MESSAGEHANDLED -} - -enum { - ID_PSRESTARTWINDOWS = 0x2, - ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 -} - -enum { - WIZ_CXDLG = 276, - WIZ_CYDLG = 140, - WIZ_CXBMP = 80, - WIZ_BODYX = 92, - WIZ_BODYCX = 184 -} - -enum { - PROP_SM_CXDLG = 212, - PROP_SM_CYDLG = 188, - PROP_MED_CXDLG = 227, - PROP_MED_CYDLG = 215, - PROP_LG_CXDLG = 252, - PROP_LG_CYDLG = 218 -} - -enum { - PSBTN_BACK, - PSBTN_NEXT, - PSBTN_FINISH, - PSBTN_OK, - PSBTN_APPLYNOW, - PSBTN_CANCEL, - PSBTN_HELP, - PSBTN_MAX = 6 -} - -enum { - PSWIZB_BACK = 1, - PSWIZB_NEXT = 2, - PSWIZB_FINISH = 4, - PSWIZB_DISABLEDFINISH = 8 -} - -enum { - PSM_SETCURSEL = WM_USER + 101, - PSM_REMOVEPAGE, - PSM_ADDPAGE, - PSM_CHANGED, - PSM_RESTARTWINDOWS, - PSM_REBOOTSYSTEM, - PSM_CANCELTOCLOSE, - PSM_QUERYSIBLINGS, - PSM_UNCHANGED, - PSM_APPLY, - PSM_SETTITLEA, - PSM_SETWIZBUTTONS, - PSM_PRESSBUTTON, - PSM_SETCURSELID, - PSM_SETFINISHTEXTA, - PSM_GETTABCONTROL, - PSM_ISDIALOGMESSAGE, - PSM_GETCURRENTPAGEHWND, - PSM_INSERTPAGE, - PSM_SETTITLEW, - PSM_SETFINISHTEXTW // = WM_USER + 121, -} - -alias UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA; -alias UINT function(HWND, UINT, LPPROPSHEETPAGEW) LPFNPSPCALLBACKW; -alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; - -align(4): - -struct PROPSHEETPAGEA { - DWORD dwSize = PROPSHEETPAGEA.sizeof; - DWORD dwFlags; - HINSTANCE hInstance; - union { - LPCSTR pszTemplate; - LPCDLGTEMPLATE pResource; - } - union { - HICON hIcon; - LPCSTR pszIcon; - } - LPCSTR pszTitle; - DLGPROC pfnDlgProc; - LPARAM lParam; - LPFNPSPCALLBACKA pfnCallback; - UINT* pcRefParent; - static if (_WIN32_IE >= 0x400) { - LPCSTR pszHeaderTitle; - LPCSTR pszHeaderSubTitle; - } -} -alias PROPSHEETPAGEA* LPPROPSHEETPAGEA; -alias const(PROPSHEETPAGEA)* LPCPROPSHEETPAGEA; - -struct PROPSHEETPAGEW { - DWORD dwSize = PROPSHEETPAGEW.sizeof; - DWORD dwFlags; - HINSTANCE hInstance; - union { - LPCWSTR pszTemplate; - LPCDLGTEMPLATE pResource; - } - union { - HICON hIcon; - LPCWSTR pszIcon; - } - LPCWSTR pszTitle; - DLGPROC pfnDlgProc; - LPARAM lParam; - LPFNPSPCALLBACKW pfnCallback; - UINT* pcRefParent; - static if (_WIN32_IE >= 0x400) { - LPCWSTR pszHeaderTitle; - LPCWSTR pszHeaderSubTitle; - } -} -alias PROPSHEETPAGEW* LPPROPSHEETPAGEW; -alias const(PROPSHEETPAGEW)* LPCPROPSHEETPAGEW; - -mixin DECLARE_HANDLE!("HPROPSHEETPAGE"); - -struct PROPSHEETHEADERA { - DWORD dwSize = PROPSHEETHEADERA.sizeof; - DWORD dwFlags; - HWND hwndParent; - HINSTANCE hInstance; - union { - HICON hIcon; - LPCSTR pszIcon; - } - LPCSTR pszCaption; - UINT nPages; - union { - UINT nStartPage; - LPCSTR pStartPage; - } - union { - LPCPROPSHEETPAGEA ppsp; - HPROPSHEETPAGE* phpage; - } - PFNPROPSHEETCALLBACK pfnCallback; - static if (_WIN32_IE >= 0x400) { - union { - HBITMAP hbmWatermark; - LPCSTR pszbmWatermark; - } - HPALETTE hplWatermark; - union { - HBITMAP hbmHeader; - LPCSTR pszbmHeader; - } - } -} -alias PROPSHEETHEADERA* LPPROPSHEETHEADERA; -alias const(PROPSHEETHEADERA)* LPCPROPSHEETHEADERA; - -struct PROPSHEETHEADERW { - DWORD dwSize = PROPSHEETHEADERW.sizeof; - DWORD dwFlags; - HWND hwndParent; - HINSTANCE hInstance; - union { - HICON hIcon; - LPCWSTR pszIcon; - } - LPCWSTR pszCaption; - UINT nPages; - union { - UINT nStartPage; - LPCWSTR pStartPage; - } - union { - LPCPROPSHEETPAGEW ppsp; - HPROPSHEETPAGE* phpage; - } - PFNPROPSHEETCALLBACK pfnCallback; - static if (_WIN32_IE >= 0x400) { - union { - HBITMAP hbmWatermark; - LPCWSTR pszbmWatermark; - } - HPALETTE hplWatermark; - union { - HBITMAP hbmHeader; - LPCWSTR pszbmHeader; - } - } -} -alias PROPSHEETHEADERW* LPPROPSHEETHEADERW; -alias const(PROPSHEETHEADERW)* LPCPROPSHEETHEADERW; - -alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE; -alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) - LPFNADDPROPSHEETPAGES; - -struct PSHNOTIFY { - NMHDR hdr; - LPARAM lParam; -} -alias PSHNOTIFY* LPPSHNOTIFY; - -extern (Windows) { - HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA); - HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW); - BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); - int PropertySheetA(LPCPROPSHEETHEADERA); - int PropertySheetW(LPCPROPSHEETHEADERW); -} - -version (Unicode) { - alias LPFNPSPCALLBACKW LPFNPSPCALLBACK; - alias PROPSHEETPAGEW PROPSHEETPAGE; - alias LPPROPSHEETPAGEW LPPROPSHEETPAGE; - alias LPCPROPSHEETPAGEW LPCPROPSHEETPAGE; - alias PROPSHEETHEADERW PROPSHEETHEADER; - alias LPPROPSHEETHEADERW LPPROPSHEETHEADER; - alias LPCPROPSHEETHEADERW LPCPROPSHEETHEADER; - alias PSM_SETTITLEW PSM_SETTITLE; - alias PSM_SETFINISHTEXTW PSM_SETFINISHTEXT; - alias CreatePropertySheetPageW CreatePropertySheetPage; - alias PropertySheetW PropertySheet; -} else { - alias LPFNPSPCALLBACKA LPFNPSPCALLBACK; - alias PROPSHEETPAGEA PROPSHEETPAGE; - alias LPPROPSHEETPAGEA LPPROPSHEETPAGE; - alias LPCPROPSHEETPAGEA LPCPROPSHEETPAGE; - alias PROPSHEETHEADERA PROPSHEETHEADER; - alias LPPROPSHEETHEADERA LPPROPSHEETHEADER; - alias LPCPROPSHEETHEADERA LPCPROPSHEETHEADER; - alias PSM_SETTITLEA PSM_SETTITLE; - alias PSM_SETFINISHTEXTA PSM_SETFINISHTEXT; - alias CreatePropertySheetPageA CreatePropertySheetPage; - alias PropertySheetA PropertySheet; -} - -BOOL PropSheet_SetCurSel(HWND hPropSheetDlg, HPROPSHEETPAGE hpage, - HPROPSHEETPAGE index) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSEL, - cast(WPARAM) index, cast(LPARAM) hpage); -} - -VOID PropSheet_RemovePage(HWND hPropSheetDlg, int index, HPROPSHEETPAGE hpage) { - SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, index, cast(LPARAM) hpage); -} - -BOOL PropSheet_AddPage(HWND hPropSheetDlg, HPROPSHEETPAGE hpage) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_ADDPAGE, - 0, cast(LPARAM) hpage); -} - -VOID PropSheet_Changed(HWND hPropSheetDlg, HWND hwndPage) { - SendMessage(hPropSheetDlg, PSM_CHANGED, cast(WPARAM) hwndPage, 0); -} - -VOID PropSheet_RestartWindows(HWND hPropSheetDlg) { - SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0); -} - -VOID PropSheet_RebootSystem(HWND hPropSheetDlg) { - SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0); -} - -VOID PropSheet_CancelToClose(HWND hPropSheetDlg) { - SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0); -} - -int PropSheet_QuerySiblings(HWND hPropSheetDlg, WPARAM param1, LPARAM param2) { - return cast(int) SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, param1, param2); -} - -VOID PropSheet_UnChanged(HWND hPropSheetDlg, HWND hwndPage) { - SendMessage(hPropSheetDlg, PSM_UNCHANGED, cast(WPARAM) hwndPage, 0); -} - -BOOL PropSheet_Apply(HWND hPropSheetDlg) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0); -} - -VOID PropSheet_SetTitle(HWND hPropSheetDlg, DWORD wStyle, LPTSTR lpszText) { - SendMessage(hPropSheetDlg, PSM_SETTITLE, wStyle, cast(LPARAM) lpszText); -} - -VOID PropSheet_SetWizButtons(HWND hPropSheetDlg, DWORD dwFlags) { - PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, cast(LPARAM) dwFlags); -} - -BOOL PropSheet_PressButton(HWND hPropSheetDlg, int iButton) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, iButton, 0); -} - -BOOL PropSheet_SetCurSelByID(HWND hPropSheetDlg, int id) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, id); -} - -VOID PropSheet_SetFinishText(HWND hPropSheetDlg, LPTSTR lpszText) { - SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast(LPARAM) lpszText); -} - -HWND PropSheet_GetTabControl(HWND hPropSheetDlg) { - return cast(HWND) SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0); -} - -BOOL PropSheet_IsDialogMessage(HWND hDlg, LPMSG pMsg) { - return cast(BOOL) SendMessage(hDlg, PSM_ISDIALOGMESSAGE, - 0, cast(LPARAM) pMsg); -} - -HWND PropSheet_GetCurrentPageHwnd(HWND hDlg) { - return cast(HWND) SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0); -} - -BOOL PropSheet_InsertPage(HWND hPropSheetDlg, WPARAM wInsertAfter, - HPROPSHEETPAGE hpage) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_INSERTPAGE, - wInsertAfter, cast(LPARAM) hpage); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Vladimir Vlasov + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_prsht.d) + */ +module core.sys.windows.prsht; +pragma(lib, "comctl32"); + +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; + +const MAXPROPPAGES = 100; + +enum { + PSP_DEFAULT = 0x00000000, + PSP_DLGINDIRECT = 0x00000001, + PSP_USEHICON = 0x00000002, + PSP_USEICONID = 0x00000004, + PSP_USETITLE = 0x00000008, + PSP_RTLREADING = 0x00000010, + PSP_HASHELP = 0x00000020, + PSP_USEREFPARENT = 0x00000040, + PSP_USECALLBACK = 0x00000080, + PSP_PREMATURE = 0x00000400 +} + +static if (_WIN32_IE >= 0x400) { + enum { + PSP_HIDEHEADER = 0x00000800, + PSP_USEHEADERTITLE = 0x00001000, + PSP_USEHEADERSUBTITLE = 0x00002000 + } +} + +enum { + PSPCB_RELEASE = 1, + PSPCB_CREATE +} + +enum { + PSH_DEFAULT = 0x00000000, + PSH_PROPTITLE = 0x00000001, + PSH_USEHICON = 0x00000002, + PSH_USEICONID = 0x00000004, + PSH_PROPSHEETPAGE = 0x00000008, + PSH_WIZARDHASFINISH = 0x00000010, + PSH_WIZARD = 0x00000020, + PSH_USEPSTARTPAGE = 0x00000040, + PSH_NOAPPLYNOW = 0x00000080, + PSH_USECALLBACK = 0x00000100, + PSH_HASHELP = 0x00000200, + PSH_MODELESS = 0x00000400, + PSH_RTLREADING = 0x00000800, + PSH_WIZARDCONTEXTHELP = 0x00001000 +} + +static if (_WIN32_IE >= 0x400) { + enum { + PSH_WATERMARK = 0x00008000, + PSH_USEHBMWATERMARK = 0x00010000, + PSH_USEHPLWATERMARK = 0x00020000, + PSH_STRETCHWATERMARK = 0x00040000, + PSH_HEADER = 0x00080000, + PSH_USEHBMHEADER = 0x00100000, + PSH_USEPAGELANG = 0x00200000 + } + static if (_WIN32_IE < 0x0500) { + enum { + PSH_WIZARD97 = 0x00002000 + } + } else { + enum { + PSH_WIZARD97 = 0x01000000 + } + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + PSH_WIZARD_LITE = 0x00400000, + PSH_NOCONTEXTHELP = 0x02000000 + } +} + +enum { + PSCB_INITIALIZED = 1, + PSCB_PRECREATE +} + +enum { + PSN_FIRST = (-200), + PSN_LAST = (-299), + PSN_SETACTIVE = (-200), + PSN_KILLACTIVE = (-201), + PSN_APPLY = (-202), + PSN_RESET = (-203), + PSN_HELP = (-205), + PSN_WIZBACK = (-206), + PSN_WIZNEXT = (-207), + PSN_WIZFINISH = (-208), + PSN_QUERYCANCEL = (-209) +} +static if (_WIN32_IE >= 0x400) { + enum { + PSN_GETOBJECT = (-210) + } +} +static if (_WIN32_IE >= 0x500) { + enum { + PSN_TRANSLATEACCELERATOR = (-212), + PSN_QUERYINITIALFOCUS = (-213) + } +} + +enum { + PSNRET_NOERROR, + PSNRET_INVALID, + PSNRET_INVALID_NOCHANGEPAGE, + PSNRET_MESSAGEHANDLED +} + +enum { + ID_PSRESTARTWINDOWS = 0x2, + ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 +} + +enum { + WIZ_CXDLG = 276, + WIZ_CYDLG = 140, + WIZ_CXBMP = 80, + WIZ_BODYX = 92, + WIZ_BODYCX = 184 +} + +enum { + PROP_SM_CXDLG = 212, + PROP_SM_CYDLG = 188, + PROP_MED_CXDLG = 227, + PROP_MED_CYDLG = 215, + PROP_LG_CXDLG = 252, + PROP_LG_CYDLG = 218 +} + +enum { + PSBTN_BACK, + PSBTN_NEXT, + PSBTN_FINISH, + PSBTN_OK, + PSBTN_APPLYNOW, + PSBTN_CANCEL, + PSBTN_HELP, + PSBTN_MAX = 6 +} + +enum { + PSWIZB_BACK = 1, + PSWIZB_NEXT = 2, + PSWIZB_FINISH = 4, + PSWIZB_DISABLEDFINISH = 8 +} + +enum { + PSM_SETCURSEL = WM_USER + 101, + PSM_REMOVEPAGE, + PSM_ADDPAGE, + PSM_CHANGED, + PSM_RESTARTWINDOWS, + PSM_REBOOTSYSTEM, + PSM_CANCELTOCLOSE, + PSM_QUERYSIBLINGS, + PSM_UNCHANGED, + PSM_APPLY, + PSM_SETTITLEA, + PSM_SETWIZBUTTONS, + PSM_PRESSBUTTON, + PSM_SETCURSELID, + PSM_SETFINISHTEXTA, + PSM_GETTABCONTROL, + PSM_ISDIALOGMESSAGE, + PSM_GETCURRENTPAGEHWND, + PSM_INSERTPAGE, + PSM_SETTITLEW, + PSM_SETFINISHTEXTW // = WM_USER + 121, +} + +alias UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA; +alias UINT function(HWND, UINT, LPPROPSHEETPAGEW) LPFNPSPCALLBACKW; +alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; + +align(4): + +struct PROPSHEETPAGEA { + DWORD dwSize = PROPSHEETPAGEA.sizeof; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCSTR pszTemplate; + LPCDLGTEMPLATE pResource; + } + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKA pfnCallback; + UINT* pcRefParent; + static if (_WIN32_IE >= 0x400) { + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; + } +} +alias PROPSHEETPAGEA* LPPROPSHEETPAGEA; +alias const(PROPSHEETPAGEA)* LPCPROPSHEETPAGEA; + +struct PROPSHEETPAGEW { + DWORD dwSize = PROPSHEETPAGEW.sizeof; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCWSTR pszTemplate; + LPCDLGTEMPLATE pResource; + } + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKW pfnCallback; + UINT* pcRefParent; + static if (_WIN32_IE >= 0x400) { + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; + } +} +alias PROPSHEETPAGEW* LPPROPSHEETPAGEW; +alias const(PROPSHEETPAGEW)* LPCPROPSHEETPAGEW; + +mixin DECLARE_HANDLE!("HPROPSHEETPAGE"); + +struct PROPSHEETHEADERA { + DWORD dwSize = PROPSHEETHEADERA.sizeof; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszCaption; + UINT nPages; + union { + UINT nStartPage; + LPCSTR pStartPage; + } + union { + LPCPROPSHEETPAGEA ppsp; + HPROPSHEETPAGE* phpage; + } + PFNPROPSHEETCALLBACK pfnCallback; + static if (_WIN32_IE >= 0x400) { + union { + HBITMAP hbmWatermark; + LPCSTR pszbmWatermark; + } + HPALETTE hplWatermark; + union { + HBITMAP hbmHeader; + LPCSTR pszbmHeader; + } + } +} +alias PROPSHEETHEADERA* LPPROPSHEETHEADERA; +alias const(PROPSHEETHEADERA)* LPCPROPSHEETHEADERA; + +struct PROPSHEETHEADERW { + DWORD dwSize = PROPSHEETHEADERW.sizeof; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszCaption; + UINT nPages; + union { + UINT nStartPage; + LPCWSTR pStartPage; + } + union { + LPCPROPSHEETPAGEW ppsp; + HPROPSHEETPAGE* phpage; + } + PFNPROPSHEETCALLBACK pfnCallback; + static if (_WIN32_IE >= 0x400) { + union { + HBITMAP hbmWatermark; + LPCWSTR pszbmWatermark; + } + HPALETTE hplWatermark; + union { + HBITMAP hbmHeader; + LPCWSTR pszbmHeader; + } + } +} +alias PROPSHEETHEADERW* LPPROPSHEETHEADERW; +alias const(PROPSHEETHEADERW)* LPCPROPSHEETHEADERW; + +alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE; +alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) + LPFNADDPROPSHEETPAGES; + +struct PSHNOTIFY { + NMHDR hdr; + LPARAM lParam; +} +alias PSHNOTIFY* LPPSHNOTIFY; + +extern (Windows) { + HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA); + HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW); + BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); + int PropertySheetA(LPCPROPSHEETHEADERA); + int PropertySheetW(LPCPROPSHEETHEADERW); +} + +version (Unicode) { + alias LPFNPSPCALLBACKW LPFNPSPCALLBACK; + alias PROPSHEETPAGEW PROPSHEETPAGE; + alias LPPROPSHEETPAGEW LPPROPSHEETPAGE; + alias LPCPROPSHEETPAGEW LPCPROPSHEETPAGE; + alias PROPSHEETHEADERW PROPSHEETHEADER; + alias LPPROPSHEETHEADERW LPPROPSHEETHEADER; + alias LPCPROPSHEETHEADERW LPCPROPSHEETHEADER; + alias PSM_SETTITLEW PSM_SETTITLE; + alias PSM_SETFINISHTEXTW PSM_SETFINISHTEXT; + alias CreatePropertySheetPageW CreatePropertySheetPage; + alias PropertySheetW PropertySheet; +} else { + alias LPFNPSPCALLBACKA LPFNPSPCALLBACK; + alias PROPSHEETPAGEA PROPSHEETPAGE; + alias LPPROPSHEETPAGEA LPPROPSHEETPAGE; + alias LPCPROPSHEETPAGEA LPCPROPSHEETPAGE; + alias PROPSHEETHEADERA PROPSHEETHEADER; + alias LPPROPSHEETHEADERA LPPROPSHEETHEADER; + alias LPCPROPSHEETHEADERA LPCPROPSHEETHEADER; + alias PSM_SETTITLEA PSM_SETTITLE; + alias PSM_SETFINISHTEXTA PSM_SETFINISHTEXT; + alias CreatePropertySheetPageA CreatePropertySheetPage; + alias PropertySheetA PropertySheet; +} + +BOOL PropSheet_SetCurSel(HWND hPropSheetDlg, HPROPSHEETPAGE hpage, + HPROPSHEETPAGE index) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSEL, + cast(WPARAM) index, cast(LPARAM) hpage); +} + +VOID PropSheet_RemovePage(HWND hPropSheetDlg, int index, HPROPSHEETPAGE hpage) { + SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, index, cast(LPARAM) hpage); +} + +BOOL PropSheet_AddPage(HWND hPropSheetDlg, HPROPSHEETPAGE hpage) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_ADDPAGE, + 0, cast(LPARAM) hpage); +} + +VOID PropSheet_Changed(HWND hPropSheetDlg, HWND hwndPage) { + SendMessage(hPropSheetDlg, PSM_CHANGED, cast(WPARAM) hwndPage, 0); +} + +VOID PropSheet_RestartWindows(HWND hPropSheetDlg) { + SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0); +} + +VOID PropSheet_RebootSystem(HWND hPropSheetDlg) { + SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0); +} + +VOID PropSheet_CancelToClose(HWND hPropSheetDlg) { + SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0); +} + +int PropSheet_QuerySiblings(HWND hPropSheetDlg, WPARAM param1, LPARAM param2) { + return cast(int) SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, param1, param2); +} + +VOID PropSheet_UnChanged(HWND hPropSheetDlg, HWND hwndPage) { + SendMessage(hPropSheetDlg, PSM_UNCHANGED, cast(WPARAM) hwndPage, 0); +} + +BOOL PropSheet_Apply(HWND hPropSheetDlg) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0); +} + +VOID PropSheet_SetTitle(HWND hPropSheetDlg, DWORD wStyle, LPTSTR lpszText) { + SendMessage(hPropSheetDlg, PSM_SETTITLE, wStyle, cast(LPARAM) lpszText); +} + +VOID PropSheet_SetWizButtons(HWND hPropSheetDlg, DWORD dwFlags) { + PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, cast(LPARAM) dwFlags); +} + +BOOL PropSheet_PressButton(HWND hPropSheetDlg, int iButton) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, iButton, 0); +} + +BOOL PropSheet_SetCurSelByID(HWND hPropSheetDlg, int id) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, id); +} + +VOID PropSheet_SetFinishText(HWND hPropSheetDlg, LPTSTR lpszText) { + SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast(LPARAM) lpszText); +} + +HWND PropSheet_GetTabControl(HWND hPropSheetDlg) { + return cast(HWND) SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0); +} + +BOOL PropSheet_IsDialogMessage(HWND hDlg, LPMSG pMsg) { + return cast(BOOL) SendMessage(hDlg, PSM_ISDIALOGMESSAGE, + 0, cast(LPARAM) pMsg); +} + +HWND PropSheet_GetCurrentPageHwnd(HWND hDlg) { + return cast(HWND) SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0); +} + +BOOL PropSheet_InsertPage(HWND hPropSheetDlg, WPARAM wInsertAfter, + HPROPSHEETPAGE hpage) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_INSERTPAGE, + wInsertAfter, cast(LPARAM) hpage); +} diff --git a/src/core/sys/windows/psapi.d b/src/core/sys/windows/psapi.d index 58818301d4..6874c9e5bd 100644 --- a/src/core/sys/windows/psapi.d +++ b/src/core/sys/windows/psapi.d @@ -1,157 +1,157 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_psapi.d) - */ -/* Comment from MinGW - * Process status API (PSAPI) - * http://windowssdk.msdn.microsoft.com/library/ms684884.aspx - */ - -module core.sys.windows.psapi; - -private import core.sys.windows.w32api; -private import core.sys.windows.winbase; -private import core.sys.windows.windef; - -struct MODULEINFO { - LPVOID lpBaseOfDll; - DWORD SizeOfImage; - LPVOID EntryPoint; -} -alias MODULEINFO* LPMODULEINFO; - -struct PSAPI_WS_WATCH_INFORMATION { - LPVOID FaultingPc; - LPVOID FaultingVa; -} -alias PSAPI_WS_WATCH_INFORMATION* PPSAPI_WS_WATCH_INFORMATION; - -struct PSAPI_WS_WATCH_INFORMATION_EX { - PSAPI_WS_WATCH_INFORMATION BasicInfo; - ULONG_PTR FaultingThreadId; - ULONG_PTR Flags; -} -alias PSAPI_WS_WATCH_INFORMATION_EX* PPSAPI_WS_WATCH_INFORMATION_EX; - -struct PROCESS_MEMORY_COUNTERS { - DWORD cb; - DWORD PageFaultCount; - DWORD PeakWorkingSetSize; - DWORD WorkingSetSize; - DWORD QuotaPeakPagedPoolUsage; - DWORD QuotaPagedPoolUsage; - DWORD QuotaPeakNonPagedPoolUsage; - DWORD QuotaNonPagedPoolUsage; - DWORD PagefileUsage; - DWORD PeakPagefileUsage; -} -alias PROCESS_MEMORY_COUNTERS* PPROCESS_MEMORY_COUNTERS; - -struct PERFORMANCE_INFORMATION { - DWORD cb; - SIZE_T CommitTotal; - SIZE_T CommitLimit; - SIZE_T CommitPeak; - SIZE_T PhysicalTotal; - SIZE_T PhysicalAvailable; - SIZE_T SystemCache; - SIZE_T KernelTotal; - SIZE_T KernelPaged; - SIZE_T KernelNonpaged; - SIZE_T PageSize; - DWORD HandleCount; - DWORD ProcessCount; - DWORD ThreadCount; -} -alias PERFORMANCE_INFORMATION* PPERFORMANCE_INFORMATION; - -struct ENUM_PAGE_FILE_INFORMATION { - DWORD cb; - DWORD Reserved; - SIZE_T TotalSize; - SIZE_T TotalInUse; - SIZE_T PeakUsage; -} -alias ENUM_PAGE_FILE_INFORMATION* PENUM_PAGE_FILE_INFORMATION; - -/* application-defined callback function used with the EnumPageFiles() - * http://windowssdk.msdn.microsoft.com/library/ms682627.aspx */ -version (Unicode) { - alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR) - PENUM_PAGE_FILE_CALLBACK; -} else { - alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR) - PENUM_PAGE_FILE_CALLBACK; -} - -// Grouped by application, not in alphabetical order. -extern (Windows) { - /* Process Information - * http://windowssdk.msdn.microsoft.com/library/ms684870.aspx */ - BOOL EnumProcesses(DWORD*, DWORD, DWORD*); /* NT/2000/XP/Server2003/Vista/Longhorn */ - DWORD GetProcessImageFileNameA(HANDLE, LPSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ - DWORD GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ - - /* Module Information - * http://windowssdk.msdn.microsoft.com/library/ms684232.aspx */ - BOOL EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD); - BOOL EnumProcessModulesEx(HANDLE, HMODULE*, DWORD, LPDWORD, DWORD); /* Vista/Longhorn */ - DWORD GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD); - DWORD GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD); - DWORD GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD); - DWORD GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD); - BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD); - - /* Device Driver Information - * http://windowssdk.msdn.microsoft.com/library/ms682578.aspx */ - BOOL EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD); - DWORD GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD); - DWORD GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD); - DWORD GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD); - DWORD GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD); - - /* Process Memory Usage Information - * http://windowssdk.msdn.microsoft.com/library/ms684879.aspx */ - BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD); - - /* Working Set Information - * http://windowssdk.msdn.microsoft.com/library/ms687398.aspx */ - BOOL EmptyWorkingSet(HANDLE); - BOOL GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD); - BOOL GetWsChangesEx(HANDLE, PPSAPI_WS_WATCH_INFORMATION_EX, DWORD); /* Vista/Longhorn */ - BOOL InitializeProcessForWsWatch(HANDLE); - BOOL QueryWorkingSet(HANDLE, PVOID, DWORD); - BOOL QueryWorkingSetEx(HANDLE, PVOID, DWORD); - - /* Memory-Mapped File Information - * http://windowssdk.msdn.microsoft.com/library/ms684212.aspx */ - DWORD GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD); - DWORD GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD); - - /* Resources Information */ - BOOL GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD); /* XP/Server2003/Vista/Longhorn */ - BOOL EnumPageFilesW(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ - BOOL EnumPageFilesA(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ -} - -version (Unicode) { - alias GetModuleBaseNameW GetModuleBaseName; - alias GetModuleFileNameExW GetModuleFileNameEx; - alias GetMappedFileNameW GetMappedFileName; - alias GetDeviceDriverBaseNameW GetDeviceDriverBaseName; - alias GetDeviceDriverFileNameW GetDeviceDriverFileName; - alias EnumPageFilesW EnumPageFiles; - alias GetProcessImageFileNameW GetProcessImageFileName; -} else { - alias GetModuleBaseNameA GetModuleBaseName; - alias GetModuleFileNameExA GetModuleFileNameEx; - alias GetMappedFileNameA GetMappedFileName; - alias GetDeviceDriverBaseNameA GetDeviceDriverBaseName; - alias GetDeviceDriverFileNameA GetDeviceDriverFileName; - alias EnumPageFilesA EnumPageFiles; - alias GetProcessImageFileNameA GetProcessImageFileName; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_psapi.d) + */ +/* Comment from MinGW + * Process status API (PSAPI) + * http://windowssdk.msdn.microsoft.com/library/ms684884.aspx + */ + +module core.sys.windows.psapi; + +private import core.sys.windows.w32api; +private import core.sys.windows.winbase; +private import core.sys.windows.windef; + +struct MODULEINFO { + LPVOID lpBaseOfDll; + DWORD SizeOfImage; + LPVOID EntryPoint; +} +alias MODULEINFO* LPMODULEINFO; + +struct PSAPI_WS_WATCH_INFORMATION { + LPVOID FaultingPc; + LPVOID FaultingVa; +} +alias PSAPI_WS_WATCH_INFORMATION* PPSAPI_WS_WATCH_INFORMATION; + +struct PSAPI_WS_WATCH_INFORMATION_EX { + PSAPI_WS_WATCH_INFORMATION BasicInfo; + ULONG_PTR FaultingThreadId; + ULONG_PTR Flags; +} +alias PSAPI_WS_WATCH_INFORMATION_EX* PPSAPI_WS_WATCH_INFORMATION_EX; + +struct PROCESS_MEMORY_COUNTERS { + DWORD cb; + DWORD PageFaultCount; + DWORD PeakWorkingSetSize; + DWORD WorkingSetSize; + DWORD QuotaPeakPagedPoolUsage; + DWORD QuotaPagedPoolUsage; + DWORD QuotaPeakNonPagedPoolUsage; + DWORD QuotaNonPagedPoolUsage; + DWORD PagefileUsage; + DWORD PeakPagefileUsage; +} +alias PROCESS_MEMORY_COUNTERS* PPROCESS_MEMORY_COUNTERS; + +struct PERFORMANCE_INFORMATION { + DWORD cb; + SIZE_T CommitTotal; + SIZE_T CommitLimit; + SIZE_T CommitPeak; + SIZE_T PhysicalTotal; + SIZE_T PhysicalAvailable; + SIZE_T SystemCache; + SIZE_T KernelTotal; + SIZE_T KernelPaged; + SIZE_T KernelNonpaged; + SIZE_T PageSize; + DWORD HandleCount; + DWORD ProcessCount; + DWORD ThreadCount; +} +alias PERFORMANCE_INFORMATION* PPERFORMANCE_INFORMATION; + +struct ENUM_PAGE_FILE_INFORMATION { + DWORD cb; + DWORD Reserved; + SIZE_T TotalSize; + SIZE_T TotalInUse; + SIZE_T PeakUsage; +} +alias ENUM_PAGE_FILE_INFORMATION* PENUM_PAGE_FILE_INFORMATION; + +/* application-defined callback function used with the EnumPageFiles() + * http://windowssdk.msdn.microsoft.com/library/ms682627.aspx */ +version (Unicode) { + alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR) + PENUM_PAGE_FILE_CALLBACK; +} else { + alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR) + PENUM_PAGE_FILE_CALLBACK; +} + +// Grouped by application, not in alphabetical order. +extern (Windows) { + /* Process Information + * http://windowssdk.msdn.microsoft.com/library/ms684870.aspx */ + BOOL EnumProcesses(DWORD*, DWORD, DWORD*); /* NT/2000/XP/Server2003/Vista/Longhorn */ + DWORD GetProcessImageFileNameA(HANDLE, LPSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ + DWORD GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ + + /* Module Information + * http://windowssdk.msdn.microsoft.com/library/ms684232.aspx */ + BOOL EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD); + BOOL EnumProcessModulesEx(HANDLE, HMODULE*, DWORD, LPDWORD, DWORD); /* Vista/Longhorn */ + DWORD GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD); + DWORD GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD); + DWORD GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD); + DWORD GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD); + BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD); + + /* Device Driver Information + * http://windowssdk.msdn.microsoft.com/library/ms682578.aspx */ + BOOL EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD); + DWORD GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD); + DWORD GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD); + DWORD GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD); + DWORD GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD); + + /* Process Memory Usage Information + * http://windowssdk.msdn.microsoft.com/library/ms684879.aspx */ + BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD); + + /* Working Set Information + * http://windowssdk.msdn.microsoft.com/library/ms687398.aspx */ + BOOL EmptyWorkingSet(HANDLE); + BOOL GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD); + BOOL GetWsChangesEx(HANDLE, PPSAPI_WS_WATCH_INFORMATION_EX, DWORD); /* Vista/Longhorn */ + BOOL InitializeProcessForWsWatch(HANDLE); + BOOL QueryWorkingSet(HANDLE, PVOID, DWORD); + BOOL QueryWorkingSetEx(HANDLE, PVOID, DWORD); + + /* Memory-Mapped File Information + * http://windowssdk.msdn.microsoft.com/library/ms684212.aspx */ + DWORD GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD); + DWORD GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD); + + /* Resources Information */ + BOOL GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD); /* XP/Server2003/Vista/Longhorn */ + BOOL EnumPageFilesW(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ + BOOL EnumPageFilesA(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ +} + +version (Unicode) { + alias GetModuleBaseNameW GetModuleBaseName; + alias GetModuleFileNameExW GetModuleFileNameEx; + alias GetMappedFileNameW GetMappedFileName; + alias GetDeviceDriverBaseNameW GetDeviceDriverBaseName; + alias GetDeviceDriverFileNameW GetDeviceDriverFileName; + alias EnumPageFilesW EnumPageFiles; + alias GetProcessImageFileNameW GetProcessImageFileName; +} else { + alias GetModuleBaseNameA GetModuleBaseName; + alias GetModuleFileNameExA GetModuleFileNameEx; + alias GetMappedFileNameA GetMappedFileName; + alias GetDeviceDriverBaseNameA GetDeviceDriverBaseName; + alias GetDeviceDriverFileNameA GetDeviceDriverFileName; + alias EnumPageFilesA EnumPageFiles; + alias GetProcessImageFileNameA GetProcessImageFileName; +} diff --git a/src/core/sys/windows/rapi.d b/src/core/sys/windows/rapi.d index 2251a4c521..afa18f0a55 100644 --- a/src/core/sys/windows/rapi.d +++ b/src/core/sys/windows/rapi.d @@ -1,53 +1,53 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rapi.d) - */ -module core.sys.windows.rapi; - -/* Comment from MinGW - NOTE: This strictly does not belong in the Win32 API since it's - really part of Platform SDK. - */ - -private import core.sys.windows.winbase, core.sys.windows.windef; - -extern (Windows): - -enum RAPISTREAMFLAG -{ - STREAM_TIMEOUT_READ -} - -interface IRAPIStream -{ - HRESULT SetRapiStat(RAPISTREAMFLAG, DWORD); - HRESULT GetRapiStat(RAPISTREAMFLAG, DWORD*); -} - -alias HRESULT function(DWORD, BYTE, DWORD, BYTE, IRAPIStream) RAPIEXT; - -struct RAPIINIT -{ - DWORD cbSize = this.sizeof; - HANDLE heRapiInit; - HRESULT hrRapiInit; -} - -HRESULT CeRapiInit(); -HRESULT CeRapiInitEx(RAPIINIT*); -BOOL CeCreateProcess(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES, - LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPWSTR, LPSTARTUPINFO, - LPPROCESS_INFORMATION); -HRESULT CeRapiUninit(); -BOOL CeWriteFile(HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED); -HANDLE CeCreateFile(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, - DWORD, HANDLE); -BOOL CeCreateDirectory(LPCWSTR, LPSECURITY_ATTRIBUTES); -DWORD CeGetLastError(); -BOOL CeGetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); -BOOL CeCloseHandle(HANDLE); +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rapi.d) + */ +module core.sys.windows.rapi; + +/* Comment from MinGW + NOTE: This strictly does not belong in the Win32 API since it's + really part of Platform SDK. + */ + +private import core.sys.windows.winbase, core.sys.windows.windef; + +extern (Windows): + +enum RAPISTREAMFLAG +{ + STREAM_TIMEOUT_READ +} + +interface IRAPIStream +{ + HRESULT SetRapiStat(RAPISTREAMFLAG, DWORD); + HRESULT GetRapiStat(RAPISTREAMFLAG, DWORD*); +} + +alias HRESULT function(DWORD, BYTE, DWORD, BYTE, IRAPIStream) RAPIEXT; + +struct RAPIINIT +{ + DWORD cbSize = this.sizeof; + HANDLE heRapiInit; + HRESULT hrRapiInit; +} + +HRESULT CeRapiInit(); +HRESULT CeRapiInitEx(RAPIINIT*); +BOOL CeCreateProcess(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES, + LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPWSTR, LPSTARTUPINFO, + LPPROCESS_INFORMATION); +HRESULT CeRapiUninit(); +BOOL CeWriteFile(HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED); +HANDLE CeCreateFile(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, + DWORD, HANDLE); +BOOL CeCreateDirectory(LPCWSTR, LPSECURITY_ATTRIBUTES); +DWORD CeGetLastError(); +BOOL CeGetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); +BOOL CeCloseHandle(HANDLE); diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index 34afaea045..fbbd5b005b 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -1,1005 +1,1005 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ras.d) - */ -module core.sys.windows.ras; -pragma(lib, "rasapi32"); - -private import core.sys.windows.basetyps, core.sys.windows.lmcons, core.sys.windows.w32api, core.sys.windows.windef; - -align(4): - -const RAS_MaxDeviceType = 16; -const RAS_MaxPhoneNumber = 128; -const RAS_MaxIpAddress = 15; -const RAS_MaxIpxAddress = 21; -const RAS_MaxEntryName = 256; -const RAS_MaxDeviceName = 128; -const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber; -const RAS_MaxAreaCode = 10; -const RAS_MaxPadType = 32; -const RAS_MaxX25Address = 200; -const RAS_MaxFacilities = 200; -const RAS_MaxUserData = 200; -const RAS_MaxReplyMessage = 1024; - -const RDEOPT_UsePrefixSuffix = 0x00000001; -const RDEOPT_PausedStates = 0x00000002; -const RDEOPT_IgnoreModemSpeaker = 0x00000004; -const RDEOPT_SetModemSpeaker = 0x00000008; -const RDEOPT_IgnoreSoftwareCompression = 0x00000010; -const RDEOPT_SetSoftwareCompression = 0x00000020; -const RDEOPT_DisableConnectedUI = 0x00000040; -const RDEOPT_DisableReconnectUI = 0x00000080; -const RDEOPT_DisableReconnect = 0x00000100; -const RDEOPT_NoUser = 0x00000200; -const RDEOPT_PauseOnScript = 0x00000400; -const RDEOPT_Router = 0x00000800; - -const REN_User = 0x00000000; -const REN_AllUsers = 0x00000001; -const VS_Default = 0; -const VS_PptpOnly = 1; -const VS_PptpFirst = 2; -const VS_L2tpOnly = 3; -const VS_L2tpFirst = 4; - -const RASDIALEVENT = "RasDialEvent"; -const WM_RASDIALEVENT = 0xCCCD; - -const RASEO_UseCountryAndAreaCodes = 0x00000001; -const RASEO_SpecificIpAddr = 0x00000002; -const RASEO_SpecificNameServers = 0x00000004; -const RASEO_IpHeaderCompression = 0x00000008; -const RASEO_RemoteDefaultGateway = 0x00000010; -const RASEO_DisableLcpExtensions = 0x00000020; -const RASEO_TerminalBeforeDial = 0x00000040; -const RASEO_TerminalAfterDial = 0x00000080; -const RASEO_ModemLights = 0x00000100; -const RASEO_SwCompression = 0x00000200; -const RASEO_RequireEncryptedPw = 0x00000400; -const RASEO_RequireMsEncryptedPw = 0x00000800; -const RASEO_RequireDataEncryption = 0x00001000; -const RASEO_NetworkLogon = 0x00002000; -const RASEO_UseLogonCredentials = 0x00004000; -const RASEO_PromoteAlternates = 0x00008000; -const RASNP_NetBEUI = 0x00000001; -const RASNP_Ipx = 0x00000002; -const RASNP_Ip = 0x00000004; -const RASFP_Ppp = 0x00000001; -const RASFP_Slip = 0x00000002; -const RASFP_Ras = 0x00000004; - -const TCHAR[] - RASDT_Modem = "modem", - RASDT_Isdn = "isdn", - RASDT_X25 = "x25", - RASDT_Vpn = "vpn", - RASDT_Pad = "pad", - RASDT_Generic = "GENERIC", - RASDT_Serial = "SERIAL", - RASDT_FrameRelay = "FRAMERELAY", - RASDT_Atm = "ATM", - RASDT_Sonet = "SONET", - RASDT_SW56 = "SW56", - RASDT_Irda = "IRDA", - RASDT_Parallel = "PARALLEL"; - -const RASET_Phone = 1; -const RASET_Vpn = 2; -const RASET_Direct = 3; -const RASET_Internet = 4; - -static if (_WIN32_WINNT >= 0x401) { - const RASEO_SecureLocalFiles = 0x00010000; - const RASCN_Connection = 0x00000001; - const RASCN_Disconnection = 0x00000002; - const RASCN_BandwidthAdded = 0x00000004; - const RASCN_BandwidthRemoved = 0x00000008; - const RASEDM_DialAll = 1; - const RASEDM_DialAsNeeded = 2; - const RASIDS_Disabled = 0xffffffff; - const RASIDS_UseGlobalValue = 0; - const RASADFLG_PositionDlg = 0x00000001; - const RASCM_UserName = 0x00000001; - const RASCM_Password = 0x00000002; - const RASCM_Domain = 0x00000004; - const RASADP_DisableConnectionQuery = 0; - const RASADP_LoginSessionDisable = 1; - const RASADP_SavedAddressesLimit = 2; - const RASADP_FailedConnectionTimeout = 3; - const RASADP_ConnectionQueryTimeout = 4; -} -//static if (_WIN32_WINNT >= 0x500) { - const RDEOPT_CustomDial = 0x00001000; - const RASLCPAP_PAP = 0xC023; - const RASLCPAP_SPAP = 0xC027; - const RASLCPAP_CHAP = 0xC223; - const RASLCPAP_EAP = 0xC227; - const RASLCPAD_CHAP_MD5 = 0x05; - const RASLCPAD_CHAP_MS = 0x80; - const RASLCPAD_CHAP_MSV2 = 0x81; - const RASLCPO_PFC = 0x00000001; - const RASLCPO_ACFC = 0x00000002; - const RASLCPO_SSHF = 0x00000004; - const RASLCPO_DES_56 = 0x00000008; - const RASLCPO_3_DES = 0x00000010; - - const RASCCPCA_MPPC = 0x00000006; - const RASCCPCA_STAC = 0x00000005; - - const RASCCPO_Compression = 0x00000001; - const RASCCPO_HistoryLess = 0x00000002; - const RASCCPO_Encryption56bit = 0x00000010; - const RASCCPO_Encryption40bit = 0x00000020; - const RASCCPO_Encryption128bit = 0x00000040; - - const RASEO_RequireEAP = 0x00020000; - const RASEO_RequirePAP = 0x00040000; - const RASEO_RequireSPAP = 0x00080000; - const RASEO_Custom = 0x00100000; - const RASEO_PreviewPhoneNumber = 0x00200000; - const RASEO_SharedPhoneNumbers = 0x00800000; - const RASEO_PreviewUserPw = 0x01000000; - const RASEO_PreviewDomain = 0x02000000; - const RASEO_ShowDialingProgress = 0x04000000; - const RASEO_RequireCHAP = 0x08000000; - const RASEO_RequireMsCHAP = 0x10000000; - const RASEO_RequireMsCHAP2 = 0x20000000; - const RASEO_RequireW95MSCHAP = 0x40000000; - const RASEO_CustomScript = 0x80000000; - - const RASIPO_VJ = 0x00000001; - const RCD_SingleUser = 0; - const RCD_AllUsers = 0x00000001; - const RCD_Eap = 0x00000002; - const RASEAPF_NonInteractive = 0x00000002; - const RASEAPF_Logon = 0x00000004; - const RASEAPF_Preview = 0x00000008; - const ET_40Bit = 1; - const ET_128Bit = 2; - const ET_None = 0; - const ET_Require = 1; - const ET_RequireMax = 2; - const ET_Optional = 3; -//} - -const RASCS_PAUSED = 0x1000; -const RASCS_DONE = 0x2000; -enum RASCONNSTATE { - RASCS_OpenPort = 0, - RASCS_PortOpened, - RASCS_ConnectDevice, - RASCS_DeviceConnected, - RASCS_AllDevicesConnected, - RASCS_Authenticate, - RASCS_AuthNotify, - RASCS_AuthRetry, - RASCS_AuthCallback, - RASCS_AuthChangePassword, - RASCS_AuthProject, - RASCS_AuthLinkSpeed, - RASCS_AuthAck, - RASCS_ReAuthenticate, - RASCS_Authenticated, - RASCS_PrepareForCallback, - RASCS_WaitForModemReset, - RASCS_WaitForCallback, - RASCS_Projected, - RASCS_StartAuthentication, - RASCS_CallbackComplete, - RASCS_LogonNetwork, - RASCS_SubEntryConnected, - RASCS_SubEntryDisconnected, - RASCS_Interactive = RASCS_PAUSED, - RASCS_RetryAuthentication, - RASCS_CallbackSetByCaller, - RASCS_PasswordExpired, -// static if (_WIN32_WINNT >= 0x500) { - RASCS_InvokeEapUI, -// } - RASCS_Connected = RASCS_DONE, - RASCS_Disconnected -} -alias RASCONNSTATE* LPRASCONNSTATE; - -enum RASPROJECTION { - RASP_Amb = 0x10000, - RASP_PppNbf = 0x803F, - RASP_PppIpx = 0x802B, - RASP_PppIp = 0x8021, -// static if (_WIN32_WINNT >= 0x500) { - RASP_PppCcp = 0x80FD, -// } - RASP_PppLcp = 0xC021, - RASP_Slip = 0x20000 -} -alias RASPROJECTION* LPRASPROJECTION; - -alias TypeDef!(HANDLE) HRASCONN; -alias HRASCONN* LPHRASCONN; - -struct RASCONNW { - DWORD dwSize; - HRASCONN hrasconn; - WCHAR[RAS_MaxEntryName + 1] szEntryName; - WCHAR[RAS_MaxDeviceType + 1] szDeviceType; - WCHAR[RAS_MaxDeviceName + 1] szDeviceName; - //static if (_WIN32_WINNT >= 0x401) { - WCHAR[MAX_PATH] szPhonebook; - DWORD dwSubEntry; - //} - //static if (_WIN32_WINNT >= 0x500) { - GUID guidEntry; - //} - static if (_WIN32_WINNT >= 0x501) { - DWORD dwFlags; - LUID luid; - } -} -alias RASCONNW* LPRASCONNW; - -struct RASCONNA { - DWORD dwSize; - HRASCONN hrasconn; - CHAR[RAS_MaxEntryName + 1] szEntryName; - CHAR[RAS_MaxDeviceType + 1] szDeviceType; - CHAR[RAS_MaxDeviceName + 1] szDeviceName; - //static if (_WIN32_WINNT >= 0x401) { - CHAR[MAX_PATH] szPhonebook; - DWORD dwSubEntry; - //} - //static if (_WIN32_WINNT >= 0x500) { - GUID guidEntry; - //} - static if (_WIN32_WINNT >= 0x501) { - DWORD dwFlags; - LUID luid; - } -} -alias RASCONNA* LPRASCONNA; - -struct RASCONNSTATUSW { - DWORD dwSize; - RASCONNSTATE rasconnstate; - DWORD dwError; - WCHAR[RAS_MaxDeviceType + 1] szDeviceType; - WCHAR[RAS_MaxDeviceName + 1] szDeviceName; - static if (_WIN32_WINNT >= 0x401) { - WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; - } -} -alias RASCONNSTATUSW* LPRASCONNSTATUSW; - -struct RASCONNSTATUSA { - DWORD dwSize; - RASCONNSTATE rasconnstate; - DWORD dwError; - CHAR[RAS_MaxDeviceType + 1] szDeviceType; - CHAR[RAS_MaxDeviceName + 1] szDeviceName; - static if (_WIN32_WINNT >= 0x401) { - CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; - } -} -alias RASCONNSTATUSA* LPRASCONNSTATUSA; - -struct RASDIALPARAMSW { - DWORD dwSize; - WCHAR[RAS_MaxEntryName + 1] szEntryName; - WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; - WCHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; - WCHAR[UNLEN + 1] szUserName; - WCHAR[PWLEN + 1] szPassword; - WCHAR[DNLEN + 1] szDomain; - static if (_WIN32_WINNT >= 0x401) { - DWORD dwSubEntry; - ULONG_PTR dwCallbackId; - } -} -alias RASDIALPARAMSW* LPRASDIALPARAMSW; - -struct RASDIALPARAMSA{ - DWORD dwSize; - CHAR[RAS_MaxEntryName + 1] szEntryName; - CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; - CHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; - CHAR[UNLEN + 1] szUserName; - CHAR[PWLEN + 1] szPassword; - CHAR[DNLEN + 1] szDomain; - static if (_WIN32_WINNT >= 0x401) { - DWORD dwSubEntry; - ULONG_PTR dwCallbackId; - } -} -alias RASDIALPARAMSA* LPRASDIALPARAMSA; - -//static if (_WIN32_WINNT >= 0x500) { - struct RASEAPINFO { - DWORD dwSizeofEapInfo; - BYTE *pbEapInfo; - } -//} - -struct RASDIALEXTENSIONS { - DWORD dwSize; - DWORD dwfOptions; - HWND hwndParent; - ULONG_PTR reserved; - //static if (_WIN32_WINNT >= 0x500) { - ULONG_PTR reserved1; - RASEAPINFO RasEapInfo; - //} -} -alias RASDIALEXTENSIONS* LPRASDIALEXTENSIONS; - -struct RASENTRYNAMEW { - DWORD dwSize; - WCHAR[RAS_MaxEntryName + 1] szEntryName; - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwFlags; - WCHAR[MAX_PATH + 1] szPhonebookPath; - //} -} -alias RASENTRYNAMEW* LPRASENTRYNAMEW; - -struct RASENTRYNAMEA{ - DWORD dwSize; - CHAR[RAS_MaxEntryName + 1] szEntryName; - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwFlags; - CHAR[MAX_PATH + 1] szPhonebookPath; - //} -} -alias RASENTRYNAMEA* LPRASENTRYNAMEA; - -struct RASAMBW{ - DWORD dwSize; - DWORD dwError; - WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; - BYTE bLana; -} -alias RASAMBW* LPRASAMBW; - -struct RASAMBA{ - DWORD dwSize; - DWORD dwError; - CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; - BYTE bLana; -} -alias RASAMBA* LPRASAMBA; - -struct RASPPPNBFW{ - DWORD dwSize; - DWORD dwError; - DWORD dwNetBiosError; - WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; - WCHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; - BYTE bLana; -} -alias RASPPPNBFW* LPRASPPPNBFW; - -struct RASPPPNBFA{ - DWORD dwSize; - DWORD dwError; - DWORD dwNetBiosError; - CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; - CHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; - BYTE bLana; -} -alias RASPPPNBFA* LPRASPPPNBFA; - -struct RASPPPIPXW { - DWORD dwSize; - DWORD dwError; - WCHAR[RAS_MaxIpxAddress + 1] szIpxAddress; -} -alias RASPPPIPXW* LPRASPPPIPXW; - -struct RASPPPIPXA { - DWORD dwSize; - DWORD dwError; - CHAR[RAS_MaxIpxAddress + 1] szIpxAddress; -} -alias RASPPPIPXA* LPRASPPPIPXA; - -struct RASPPPIPW{ - DWORD dwSize; - DWORD dwError; - WCHAR[RAS_MaxIpAddress + 1] szIpAddress; - //#ifndef WINNT35COMPATIBLE - WCHAR[RAS_MaxIpAddress + 1] szServerIpAddress; - //#endif - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwOptions; - DWORD dwServerOptions; - //} -} -alias RASPPPIPW* LPRASPPPIPW; - -struct RASPPPIPA{ - DWORD dwSize; - DWORD dwError; - CHAR[RAS_MaxIpAddress + 1] szIpAddress; - //#ifndef WINNT35COMPATIBLE - CHAR[RAS_MaxIpAddress + 1] szServerIpAddress; - //#endif - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwOptions; - DWORD dwServerOptions; - //} -} -alias RASPPPIPA* LPRASPPPIPA; - -struct RASPPPLCPW{ - DWORD dwSize; - BOOL fBundled; - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwError; - DWORD dwAuthenticationProtocol; - DWORD dwAuthenticationData; - DWORD dwEapTypeId; - DWORD dwServerAuthenticationProtocol; - DWORD dwServerAuthenticationData; - DWORD dwServerEapTypeId; - BOOL fMultilink; - DWORD dwTerminateReason; - DWORD dwServerTerminateReason; - WCHAR[RAS_MaxReplyMessage] szReplyMessage; - DWORD dwOptions; - DWORD dwServerOptions; - //} -} -alias RASPPPLCPW* LPRASPPPLCPW; - -struct RASPPPLCPA{ - DWORD dwSize; - BOOL fBundled; - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwError; - DWORD dwAuthenticationProtocol; - DWORD dwAuthenticationData; - DWORD dwEapTypeId; - DWORD dwServerAuthenticationProtocol; - DWORD dwServerAuthenticationData; - DWORD dwServerEapTypeId; - BOOL fMultilink; - DWORD dwTerminateReason; - DWORD dwServerTerminateReason; - CHAR[RAS_MaxReplyMessage] szReplyMessage; - DWORD dwOptions; - DWORD dwServerOptions; - //} -} -alias RASPPPLCPA* LPRASPPPLCPA; - -struct RASSLIPW{ - DWORD dwSize; - DWORD dwError; - WCHAR[RAS_MaxIpAddress + 1] szIpAddress; -} -alias RASSLIPW* LPRASSLIPW; - -struct RASSLIPA{ - DWORD dwSize; - DWORD dwError; - CHAR[RAS_MaxIpAddress + 1] szIpAddress; -} -alias RASSLIPA* LPRASSLIPA; - -struct RASDEVINFOW{ - DWORD dwSize; - WCHAR[RAS_MaxDeviceType + 1] szDeviceType; - WCHAR[RAS_MaxDeviceName + 1] szDeviceName; -} -alias RASDEVINFOW* LPRASDEVINFOW; - -struct RASDEVINFOA{ - DWORD dwSize; - CHAR[RAS_MaxDeviceType + 1] szDeviceType; - CHAR[RAS_MaxDeviceName + 1] szDeviceName; -} -alias RASDEVINFOA* LPRASDEVINFOA; - -struct RASCTRYINFO { - DWORD dwSize; - DWORD dwCountryID; - DWORD dwNextCountryID; - DWORD dwCountryCode; - DWORD dwCountryNameOffset; -} -alias RASCTRYINFO* LPRASCTRYINFO; -alias RASCTRYINFO RASCTRYINFOW, RASCTRYINFOA; -alias RASCTRYINFOW* LPRASCTRYINFOW; -alias RASCTRYINFOA* LPRASCTRYINFOA; - -struct RASIPADDR { - BYTE a; - BYTE b; - BYTE c; - BYTE d; -} - -struct RASENTRYW { - DWORD dwSize; - DWORD dwfOptions; - DWORD dwCountryID; - DWORD dwCountryCode; - WCHAR[RAS_MaxAreaCode + 1] szAreaCode; - WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; - DWORD dwAlternateOffset; - RASIPADDR ipaddr; - RASIPADDR ipaddrDns; - RASIPADDR ipaddrDnsAlt; - RASIPADDR ipaddrWins; - RASIPADDR ipaddrWinsAlt; - DWORD dwFrameSize; - DWORD dwfNetProtocols; - DWORD dwFramingProtocol; - WCHAR[MAX_PATH] szScript; - WCHAR[MAX_PATH] szAutodialDll; - WCHAR[MAX_PATH] szAutodialFunc; - WCHAR[RAS_MaxDeviceType + 1] szDeviceType; - WCHAR[RAS_MaxDeviceName + 1] szDeviceName; - WCHAR[RAS_MaxPadType + 1] szX25PadType; - WCHAR[RAS_MaxX25Address + 1] szX25Address; - WCHAR[RAS_MaxFacilities + 1] szX25Facilities; - WCHAR[RAS_MaxUserData + 1] szX25UserData; - DWORD dwChannels; - DWORD dwReserved1; - DWORD dwReserved2; - //static if (_WIN32_WINNT >= 0x401) { - DWORD dwSubEntries; - DWORD dwDialMode; - DWORD dwDialExtraPercent; - DWORD dwDialExtraSampleSeconds; - DWORD dwHangUpExtraPercent; - DWORD dwHangUpExtraSampleSeconds; - DWORD dwIdleDisconnectSeconds; - //} - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwType; - DWORD dwEncryptionType; - DWORD dwCustomAuthKey; - GUID guidId; - WCHAR[MAX_PATH] szCustomDialDll; - DWORD dwVpnStrategy; - //} -} -alias RASENTRYW* LPRASENTRYW; - -struct RASENTRYA { - DWORD dwSize; - DWORD dwfOptions; - DWORD dwCountryID; - DWORD dwCountryCode; - CHAR[RAS_MaxAreaCode + 1] szAreaCode; - CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; - DWORD dwAlternateOffset; - RASIPADDR ipaddr; - RASIPADDR ipaddrDns; - RASIPADDR ipaddrDnsAlt; - RASIPADDR ipaddrWins; - RASIPADDR ipaddrWinsAlt; - DWORD dwFrameSize; - DWORD dwfNetProtocols; - DWORD dwFramingProtocol; - CHAR[MAX_PATH] szScript; - CHAR[MAX_PATH] szAutodialDll; - CHAR[MAX_PATH] szAutodialFunc; - CHAR[RAS_MaxDeviceType + 1] szDeviceType; - CHAR[RAS_MaxDeviceName + 1] szDeviceName; - CHAR[RAS_MaxPadType + 1] szX25PadType; - CHAR[RAS_MaxX25Address + 1] szX25Address; - CHAR[RAS_MaxFacilities + 1] szX25Facilities; - CHAR[RAS_MaxUserData + 1] szX25UserData; - DWORD dwChannels; - DWORD dwReserved1; - DWORD dwReserved2; - //static if (_WIN32_WINNT >= 0x401) { - DWORD dwSubEntries; - DWORD dwDialMode; - DWORD dwDialExtraPercent; - DWORD dwDialExtraSampleSeconds; - DWORD dwHangUpExtraPercent; - DWORD dwHangUpExtraSampleSeconds; - DWORD dwIdleDisconnectSeconds; - //} - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwType; - DWORD dwEncryptionType; - DWORD dwCustomAuthKey; - GUID guidId; - CHAR[MAX_PATH] szCustomDialDll; - DWORD dwVpnStrategy; - //} -} -alias RASENTRYA* LPRASENTRYA; - - -//static if (_WIN32_WINNT >= 0x401) { - struct RASADPARAMS { - DWORD dwSize; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - } - alias RASADPARAMS* LPRASADPARAMS; - - struct RASSUBENTRYW{ - DWORD dwSize; - DWORD dwfFlags; - WCHAR[RAS_MaxDeviceType + 1] szDeviceType; - WCHAR[RAS_MaxDeviceName + 1] szDeviceName; - WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; - DWORD dwAlternateOffset; - } - alias RASSUBENTRYW* LPRASSUBENTRYW; - - struct RASSUBENTRYA{ - DWORD dwSize; - DWORD dwfFlags; - CHAR[RAS_MaxDeviceType + 1] szDeviceType; - CHAR[RAS_MaxDeviceName + 1] szDeviceName; - CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; - DWORD dwAlternateOffset; - } - alias RASSUBENTRYA* LPRASSUBENTRYA; - - struct RASCREDENTIALSW{ - DWORD dwSize; - DWORD dwMask; - WCHAR[UNLEN + 1] szUserName; - WCHAR[PWLEN + 1] szPassword; - WCHAR[DNLEN + 1] szDomain; - } - alias RASCREDENTIALSW* LPRASCREDENTIALSW; - - struct RASCREDENTIALSA{ - DWORD dwSize; - DWORD dwMask; - CHAR[UNLEN + 1] szUserName; - CHAR[PWLEN + 1] szPassword; - CHAR[DNLEN + 1] szDomain; - } - alias RASCREDENTIALSA* LPRASCREDENTIALSA; - - struct RASAUTODIALENTRYW{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwDialingLocation; - WCHAR[RAS_MaxEntryName + 1] szEntry; - } - alias RASAUTODIALENTRYW* LPRASAUTODIALENTRYW; - - struct RASAUTODIALENTRYA{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwDialingLocation; - CHAR[RAS_MaxEntryName + 1] szEntry; - } - alias RASAUTODIALENTRYA* LPRASAUTODIALENTRYA; -//} - -//static if (_WIN32_WINNT >= 0x500) { - struct RASPPPCCP{ - DWORD dwSize; - DWORD dwError; - DWORD dwCompressionAlgorithm; - DWORD dwOptions; - DWORD dwServerCompressionAlgorithm; - DWORD dwServerOptions; - } - alias RASPPPCCP* LPRASPPPCCP; - - struct RASEAPUSERIDENTITYW{ - WCHAR[UNLEN + 1] szUserName; - DWORD dwSizeofEapInfo; - BYTE[1] pbEapInfo; - } - alias RASEAPUSERIDENTITYW* LPRASEAPUSERIDENTITYW; - - struct RASEAPUSERIDENTITYA{ - CHAR[UNLEN + 1] szUserName; - DWORD dwSizeofEapInfo; - BYTE[1] pbEapInfo; - } - alias RASEAPUSERIDENTITYA* LPRASEAPUSERIDENTITYA; - - struct RAS_STATS{ - DWORD dwSize; - DWORD dwBytesXmited; - DWORD dwBytesRcved; - DWORD dwFramesXmited; - DWORD dwFramesRcved; - DWORD dwCrcErr; - DWORD dwTimeoutErr; - DWORD dwAlignmentErr; - DWORD dwHardwareOverrunErr; - DWORD dwFramingErr; - DWORD dwBufferOverrunErr; - DWORD dwCompressionRatioIn; - DWORD dwCompressionRatioOut; - DWORD dwBps; - DWORD dwConnectDuration; - } - alias RAS_STATS* PRAS_STATS; -//} - - -/* UNICODE typedefs for structures*/ -version (Unicode) { - alias RASCONNW RASCONN; - alias RASENTRYW RASENTRY; - alias RASCONNSTATUSW RASCONNSTATUS; - alias RASDIALPARAMSW RASDIALPARAMS; - alias RASAMBW RASAMB; - alias RASPPPNBFW RASPPPNBF; - alias RASPPPIPXW RASPPPIPX; - alias RASPPPIPW RASPPPIP; - alias RASPPPLCPW RASPPPLCP; - alias RASSLIPW RASSLIP; - alias RASDEVINFOW RASDEVINFO; - alias RASENTRYNAMEW RASENTRYNAME; - - //static if (_WIN32_WINNT >= 0x401) { - alias RASSUBENTRYW RASSUBENTRY; - alias RASCREDENTIALSW RASCREDENTIALS; - alias RASAUTODIALENTRYW RASAUTODIALENTRY; - //} - - //static if (_WIN32_WINNT >= 0x500) { - alias RASEAPUSERIDENTITYW RASEAPUSERIDENTITY; - //} - -} else { // ! defined UNICODE - - alias RASCONNA RASCONN; - alias RASENTRYA RASENTRY; - alias RASCONNSTATUSA RASCONNSTATUS; - alias RASDIALPARAMSA RASDIALPARAMS; - alias RASAMBA RASAMB; - alias RASPPPNBFA RASPPPNBF; - alias RASPPPIPXA RASPPPIPX; - alias RASPPPIPA RASPPPIP; - alias RASPPPLCPA RASPPPLCP; - alias RASSLIPA RASSLIP; - alias RASDEVINFOA RASDEVINFO; - alias RASENTRYNAMEA RASENTRYNAME; - - //static if (_WIN32_WINNT >= 0x401) { - alias RASSUBENTRYA RASSUBENTRY; - alias RASCREDENTIALSA RASCREDENTIALS; - alias RASAUTODIALENTRYA RASAUTODIALENTRY; - //} - //static if (_WIN32_WINNT >= 0x500) { - alias RASEAPUSERIDENTITYA RASEAPUSERIDENTITY; - //} -}// ! UNICODE - - -alias RASCONN* LPRASCONN; -alias RASENTRY* LPRASENTRY; -alias RASCONNSTATUS* LPRASCONNSTATUS; -alias RASDIALPARAMS* LPRASDIALPARAMS; -alias RASAMB* LPRASAM; -alias RASPPPNBF* LPRASPPPNBF; -alias RASPPPIPX* LPRASPPPIPX; -alias RASPPPIP* LPRASPPPIP; -alias RASPPPLCP* LPRASPPPLCP; -alias RASSLIP* LPRASSLIP; -alias RASDEVINFO* LPRASDEVINFO; -alias RASENTRYNAME* LPRASENTRYNAME; - -//static if (_WIN32_WINNT >= 0x401) { - alias RASSUBENTRY* LPRASSUBENTRY; - alias RASCREDENTIALS* LPRASCREDENTIALS; - alias RASAUTODIALENTRY* LPRASAUTODIALENTRY; -//} -//static if (_WIN32_WINNT >= 0x500) { - alias RASEAPUSERIDENTITY* LPRASEAPUSERIDENTITY; -//} - -/* Callback prototypes */ -deprecated { - alias BOOL function (HWND, LPSTR, DWORD, LPDWORD) ORASADFUNC; -} - -alias void function (UINT, RASCONNSTATE, DWORD) RASDIALFUNC; -alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD) RASDIALFUNC1; -alias DWORD function (ULONG_PTR, DWORD, HRASCONN, UINT, -RASCONNSTATE, DWORD, DWORD) RASDIALFUNC2; - -/* External functions */ -DWORD RasDialA(LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, DWORD, LPVOID, LPHRASCONN); -DWORD RasDialW(LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, DWORD, LPVOID, LPHRASCONN); -DWORD RasEnumConnectionsA(LPRASCONNA, LPDWORD, LPDWORD); -DWORD RasEnumConnectionsW(LPRASCONNW, LPDWORD, LPDWORD); -DWORD RasEnumEntriesA(LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, LPDWORD); -DWORD RasEnumEntriesW(LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD, LPDWORD); -DWORD RasGetConnectStatusA(HRASCONN, LPRASCONNSTATUSA); -DWORD RasGetConnectStatusW(HRASCONN, LPRASCONNSTATUSW); -DWORD RasGetErrorStringA(UINT, LPSTR, DWORD); -DWORD RasGetErrorStringW(UINT, LPWSTR, DWORD); -DWORD RasHangUpA(HRASCONN); -DWORD RasHangUpW(HRASCONN); -DWORD RasGetProjectionInfoA(HRASCONN, RASPROJECTION, LPVOID, LPDWORD); -DWORD RasGetProjectionInfoW(HRASCONN, RASPROJECTION, LPVOID, LPDWORD); -DWORD RasCreatePhonebookEntryA(HWND, LPCSTR); -DWORD RasCreatePhonebookEntryW(HWND, LPCWSTR); -DWORD RasEditPhonebookEntryA(HWND, LPCSTR, LPCSTR); -DWORD RasEditPhonebookEntryW(HWND, LPCWSTR, LPCWSTR); -DWORD RasSetEntryDialParamsA(LPCSTR, LPRASDIALPARAMSA, BOOL); -DWORD RasSetEntryDialParamsW(LPCWSTR, LPRASDIALPARAMSW, BOOL); -DWORD RasGetEntryDialParamsA(LPCSTR, LPRASDIALPARAMSA, LPBOOL); -DWORD RasGetEntryDialParamsW(LPCWSTR, LPRASDIALPARAMSW, LPBOOL); -DWORD RasEnumDevicesA(LPRASDEVINFOA, LPDWORD, LPDWORD); -DWORD RasEnumDevicesW(LPRASDEVINFOW, LPDWORD, LPDWORD); -DWORD RasGetCountryInfoA(LPRASCTRYINFOA, LPDWORD); -DWORD RasGetCountryInfoW(LPRASCTRYINFOW, LPDWORD); -DWORD RasGetEntryPropertiesA(LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, LPBYTE, LPDWORD); -DWORD RasGetEntryPropertiesW(LPCWSTR, LPCWSTR, LPRASENTRYW, LPDWORD, LPBYTE, LPDWORD); -DWORD RasSetEntryPropertiesA(LPCSTR, LPCSTR, LPRASENTRYA, DWORD, LPBYTE, DWORD); -DWORD RasSetEntryPropertiesW(LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, LPBYTE, DWORD); -DWORD RasRenameEntryA(LPCSTR, LPCSTR, LPCSTR); -DWORD RasRenameEntryW(LPCWSTR, LPCWSTR, LPCWSTR); -DWORD RasDeleteEntryA(LPCSTR, LPCSTR); -DWORD RasDeleteEntryW(LPCWSTR, LPCWSTR); -DWORD RasValidateEntryNameA(LPCSTR, LPCSTR); -DWORD RasValidateEntryNameW(LPCWSTR, LPCWSTR); - -//static if(_WIN32_WINNT >= 0x401) { - alias BOOL function(LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; - alias BOOL function(LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; - - DWORD RasGetSubEntryHandleA(HRASCONN, DWORD, LPHRASCONN); - DWORD RasGetSubEntryHandleW(HRASCONN, DWORD, LPHRASCONN); - DWORD RasGetCredentialsA(LPCSTR, LPCSTR, LPRASCREDENTIALSA); - DWORD RasGetCredentialsW(LPCWSTR, LPCWSTR, LPRASCREDENTIALSW); - DWORD RasSetCredentialsA(LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL); - DWORD RasSetCredentialsW(LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL); - DWORD RasConnectionNotificationA(HRASCONN, HANDLE, DWORD); - DWORD RasConnectionNotificationW(HRASCONN, HANDLE, DWORD); - DWORD RasGetSubEntryPropertiesA(LPCSTR, LPCSTR, DWORD, LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD); - DWORD RasGetSubEntryPropertiesW(LPCWSTR, LPCWSTR, DWORD, LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD); - DWORD RasSetSubEntryPropertiesA(LPCSTR, LPCSTR, DWORD, LPRASSUBENTRYA, DWORD, LPBYTE, DWORD); - DWORD RasSetSubEntryPropertiesW(LPCWSTR, LPCWSTR, DWORD, LPRASSUBENTRYW, DWORD, LPBYTE, DWORD); - DWORD RasGetAutodialAddressA(LPCSTR, LPDWORD, LPRASAUTODIALENTRYA, LPDWORD, LPDWORD); - DWORD RasGetAutodialAddressW(LPCWSTR, LPDWORD, LPRASAUTODIALENTRYW, LPDWORD, LPDWORD); - DWORD RasSetAutodialAddressA(LPCSTR, DWORD, LPRASAUTODIALENTRYA, DWORD, DWORD); - DWORD RasSetAutodialAddressW(LPCWSTR, DWORD, LPRASAUTODIALENTRYW, DWORD, DWORD); - DWORD RasEnumAutodialAddressesA(LPSTR*, LPDWORD, LPDWORD); - DWORD RasEnumAutodialAddressesW(LPWSTR*, LPDWORD, LPDWORD); - DWORD RasGetAutodialEnableA(DWORD, LPBOOL); - DWORD RasGetAutodialEnableW(DWORD, LPBOOL); - DWORD RasSetAutodialEnableA(DWORD, BOOL); - DWORD RasSetAutodialEnableW(DWORD, BOOL); - DWORD RasGetAutodialParamA(DWORD, LPVOID, LPDWORD); - DWORD RasGetAutodialParamW(DWORD, LPVOID, LPDWORD); - DWORD RasSetAutodialParamA(DWORD, LPVOID, DWORD); - DWORD RasSetAutodialParamW(DWORD, LPVOID, DWORD); -//} - -static if (_WIN32_WINNT >= 0x500) { - alias DWORD function(HRASCONN) RasCustomHangUpFn; - alias DWORD function(LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; - alias DWORD function(HINSTANCE, LPRASDIALEXTENSIONS, LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, - LPHRASCONN, DWORD) RasCustomDialFn; - - DWORD RasInvokeEapUI(HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); - DWORD RasGetLinkStatistics(HRASCONN, DWORD, RAS_STATS*); - DWORD RasGetConnectionStatistics(HRASCONN, RAS_STATS*); - DWORD RasClearLinkStatistics(HRASCONN, DWORD); - DWORD RasClearConnectionStatistics(HRASCONN); - DWORD RasGetEapUserDataA(HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*); - DWORD RasGetEapUserDataW(HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*); - DWORD RasSetEapUserDataA(HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD); - DWORD RasSetEapUserDataW(HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD); - DWORD RasGetCustomAuthDataA(LPCSTR, LPCSTR, BYTE*, DWORD*); - DWORD RasGetCustomAuthDataW(LPCWSTR, LPCWSTR, BYTE*, DWORD*); - DWORD RasSetCustomAuthDataA(LPCSTR, LPCSTR, BYTE*, DWORD); - DWORD RasSetCustomAuthDataW(LPCWSTR, LPCWSTR, BYTE*, DWORD); - DWORD RasGetEapUserIdentityW(LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*); - DWORD RasGetEapUserIdentityA(LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*); - void RasFreeEapUserIdentityW(LPRASEAPUSERIDENTITYW); - void RasFreeEapUserIdentityA(LPRASEAPUSERIDENTITYA); -} - - -/* UNICODE defines for functions */ -version(Unicode) { - alias RasDialW RasDial; - alias RasEnumConnectionsW RasEnumConnections; - alias RasEnumEntriesW RasEnumEntries; - alias RasGetConnectStatusW RasGetConnectStatus; - alias RasGetErrorStringW RasGetErrorString; - alias RasHangUpW RasHangUp; - alias RasGetProjectionInfoW RasGetProjectionInfo; - alias RasCreatePhonebookEntryW RasCreatePhonebookEntry; - alias RasEditPhonebookEntryW RasEditPhonebookEntry; - alias RasSetEntryDialParamsW RasSetEntryDialParams; - alias RasGetEntryDialParamsW RasGetEntryDialParams; - alias RasEnumDevicesW RasEnumDevices; - alias RasGetCountryInfoW RasGetCountryInfo; - alias RasGetEntryPropertiesW RasGetEntryProperties; - alias RasSetEntryPropertiesW RasSetEntryProperties; - alias RasRenameEntryW RasRenameEntry; - alias RasDeleteEntryW RasDeleteEntry; - alias RasValidateEntryNameW RasValidateEntryName; - - //static if (_WIN32_WINNT >= 0x401) { - alias RASADFUNCW RASADFUNC; - alias RasGetSubEntryHandleW RasGetSubEntryHandle; - alias RasConnectionNotificationW RasConnectionNotification; - alias RasGetSubEntryPropertiesW RasGetSubEntryProperties; - alias RasSetSubEntryPropertiesW RasSetSubEntryProperties; - alias RasGetCredentialsW RasGetCredentials; - alias RasSetCredentialsW RasSetCredentials; - alias RasGetAutodialAddressW RasGetAutodialAddress; - alias RasSetAutodialAddressW RasSetAutodialAddress; - alias RasEnumAutodialAddressesW RasEnumAutodialAddresses; - alias RasGetAutodialEnableW RasGetAutodialEnable; - alias RasSetAutodialEnableW RasSetAutodialEnable; - alias RasGetAutodialParamW RasGetAutodialParam; - alias RasSetAutodialParamW RasSetAutodialParam; - //} - - //static if (_WIN32_WINNT >= 0x500) { - alias RasGetEapUserDataW RasGetEapUserData; - alias RasSetEapUserDataW RasSetEapUserData; - alias RasGetCustomAuthDataW RasGetCustomAuthData; - alias RasSetCustomAuthDataW RasSetCustomAuthData; - alias RasGetEapUserIdentityW RasGetEapUserIdentity; - alias RasFreeEapUserIdentityW RasFreeEapUserIdentity; - //} - -} else { // !Unicode - alias RasDialA RasDial; - alias RasEnumConnectionsA RasEnumConnections; - alias RasEnumEntriesA RasEnumEntries; - alias RasGetConnectStatusA RasGetConnectStatus; - alias RasGetErrorStringA RasGetErrorString; - alias RasHangUpA RasHangUp; - alias RasGetProjectionInfoA RasGetProjectionInfo; - alias RasCreatePhonebookEntryA RasCreatePhonebookEntry; - alias RasEditPhonebookEntryA RasEditPhonebookEntry; - alias RasSetEntryDialParamsA RasSetEntryDialParams; - alias RasGetEntryDialParamsA RasGetEntryDialParams; - alias RasEnumDevicesA RasEnumDevices; - alias RasGetCountryInfoA RasGetCountryInfo; - alias RasGetEntryPropertiesA RasGetEntryProperties; - alias RasSetEntryPropertiesA RasSetEntryProperties; - alias RasRenameEntryA RasRenameEntry; - alias RasDeleteEntryA RasDeleteEntry; - alias RasValidateEntryNameA RasValidateEntryName; - - //static if (_WIN32_WINNT >= 0x401) { - alias RASADFUNCA RASADFUNC; - alias RasGetSubEntryHandleA RasGetSubEntryHandle; - alias RasConnectionNotificationA RasConnectionNotification; - alias RasGetSubEntryPropertiesA RasGetSubEntryProperties; - alias RasSetSubEntryPropertiesA RasSetSubEntryProperties; - alias RasGetCredentialsA RasGetCredentials; - alias RasSetCredentialsA RasSetCredentials; - alias RasGetAutodialAddressA RasGetAutodialAddress; - alias RasSetAutodialAddressA RasSetAutodialAddress; - alias RasEnumAutodialAddressesA RasEnumAutodialAddresses; - alias RasGetAutodialEnableA RasGetAutodialEnable; - alias RasSetAutodialEnableA RasSetAutodialEnable; - alias RasGetAutodialParamA RasGetAutodialParam; - alias RasSetAutodialParamA RasSetAutodialParam; - //} - - //static if (_WIN32_WINNT >= 0x500) { - alias RasGetEapUserDataA RasGetEapUserData; - alias RasSetEapUserDataA RasSetEapUserData; - alias RasGetCustomAuthDataA RasGetCustomAuthData; - alias RasSetCustomAuthDataA RasSetCustomAuthData; - alias RasGetEapUserIdentityA RasGetEapUserIdentity; - alias RasFreeEapUserIdentityA RasFreeEapUserIdentity; - //} -} //#endif // !Unicode +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ras.d) + */ +module core.sys.windows.ras; +pragma(lib, "rasapi32"); + +private import core.sys.windows.basetyps, core.sys.windows.lmcons, core.sys.windows.w32api, core.sys.windows.windef; + +align(4): + +const RAS_MaxDeviceType = 16; +const RAS_MaxPhoneNumber = 128; +const RAS_MaxIpAddress = 15; +const RAS_MaxIpxAddress = 21; +const RAS_MaxEntryName = 256; +const RAS_MaxDeviceName = 128; +const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber; +const RAS_MaxAreaCode = 10; +const RAS_MaxPadType = 32; +const RAS_MaxX25Address = 200; +const RAS_MaxFacilities = 200; +const RAS_MaxUserData = 200; +const RAS_MaxReplyMessage = 1024; + +const RDEOPT_UsePrefixSuffix = 0x00000001; +const RDEOPT_PausedStates = 0x00000002; +const RDEOPT_IgnoreModemSpeaker = 0x00000004; +const RDEOPT_SetModemSpeaker = 0x00000008; +const RDEOPT_IgnoreSoftwareCompression = 0x00000010; +const RDEOPT_SetSoftwareCompression = 0x00000020; +const RDEOPT_DisableConnectedUI = 0x00000040; +const RDEOPT_DisableReconnectUI = 0x00000080; +const RDEOPT_DisableReconnect = 0x00000100; +const RDEOPT_NoUser = 0x00000200; +const RDEOPT_PauseOnScript = 0x00000400; +const RDEOPT_Router = 0x00000800; + +const REN_User = 0x00000000; +const REN_AllUsers = 0x00000001; +const VS_Default = 0; +const VS_PptpOnly = 1; +const VS_PptpFirst = 2; +const VS_L2tpOnly = 3; +const VS_L2tpFirst = 4; + +const RASDIALEVENT = "RasDialEvent"; +const WM_RASDIALEVENT = 0xCCCD; + +const RASEO_UseCountryAndAreaCodes = 0x00000001; +const RASEO_SpecificIpAddr = 0x00000002; +const RASEO_SpecificNameServers = 0x00000004; +const RASEO_IpHeaderCompression = 0x00000008; +const RASEO_RemoteDefaultGateway = 0x00000010; +const RASEO_DisableLcpExtensions = 0x00000020; +const RASEO_TerminalBeforeDial = 0x00000040; +const RASEO_TerminalAfterDial = 0x00000080; +const RASEO_ModemLights = 0x00000100; +const RASEO_SwCompression = 0x00000200; +const RASEO_RequireEncryptedPw = 0x00000400; +const RASEO_RequireMsEncryptedPw = 0x00000800; +const RASEO_RequireDataEncryption = 0x00001000; +const RASEO_NetworkLogon = 0x00002000; +const RASEO_UseLogonCredentials = 0x00004000; +const RASEO_PromoteAlternates = 0x00008000; +const RASNP_NetBEUI = 0x00000001; +const RASNP_Ipx = 0x00000002; +const RASNP_Ip = 0x00000004; +const RASFP_Ppp = 0x00000001; +const RASFP_Slip = 0x00000002; +const RASFP_Ras = 0x00000004; + +const TCHAR[] + RASDT_Modem = "modem", + RASDT_Isdn = "isdn", + RASDT_X25 = "x25", + RASDT_Vpn = "vpn", + RASDT_Pad = "pad", + RASDT_Generic = "GENERIC", + RASDT_Serial = "SERIAL", + RASDT_FrameRelay = "FRAMERELAY", + RASDT_Atm = "ATM", + RASDT_Sonet = "SONET", + RASDT_SW56 = "SW56", + RASDT_Irda = "IRDA", + RASDT_Parallel = "PARALLEL"; + +const RASET_Phone = 1; +const RASET_Vpn = 2; +const RASET_Direct = 3; +const RASET_Internet = 4; + +static if (_WIN32_WINNT >= 0x401) { + const RASEO_SecureLocalFiles = 0x00010000; + const RASCN_Connection = 0x00000001; + const RASCN_Disconnection = 0x00000002; + const RASCN_BandwidthAdded = 0x00000004; + const RASCN_BandwidthRemoved = 0x00000008; + const RASEDM_DialAll = 1; + const RASEDM_DialAsNeeded = 2; + const RASIDS_Disabled = 0xffffffff; + const RASIDS_UseGlobalValue = 0; + const RASADFLG_PositionDlg = 0x00000001; + const RASCM_UserName = 0x00000001; + const RASCM_Password = 0x00000002; + const RASCM_Domain = 0x00000004; + const RASADP_DisableConnectionQuery = 0; + const RASADP_LoginSessionDisable = 1; + const RASADP_SavedAddressesLimit = 2; + const RASADP_FailedConnectionTimeout = 3; + const RASADP_ConnectionQueryTimeout = 4; +} +//static if (_WIN32_WINNT >= 0x500) { + const RDEOPT_CustomDial = 0x00001000; + const RASLCPAP_PAP = 0xC023; + const RASLCPAP_SPAP = 0xC027; + const RASLCPAP_CHAP = 0xC223; + const RASLCPAP_EAP = 0xC227; + const RASLCPAD_CHAP_MD5 = 0x05; + const RASLCPAD_CHAP_MS = 0x80; + const RASLCPAD_CHAP_MSV2 = 0x81; + const RASLCPO_PFC = 0x00000001; + const RASLCPO_ACFC = 0x00000002; + const RASLCPO_SSHF = 0x00000004; + const RASLCPO_DES_56 = 0x00000008; + const RASLCPO_3_DES = 0x00000010; + + const RASCCPCA_MPPC = 0x00000006; + const RASCCPCA_STAC = 0x00000005; + + const RASCCPO_Compression = 0x00000001; + const RASCCPO_HistoryLess = 0x00000002; + const RASCCPO_Encryption56bit = 0x00000010; + const RASCCPO_Encryption40bit = 0x00000020; + const RASCCPO_Encryption128bit = 0x00000040; + + const RASEO_RequireEAP = 0x00020000; + const RASEO_RequirePAP = 0x00040000; + const RASEO_RequireSPAP = 0x00080000; + const RASEO_Custom = 0x00100000; + const RASEO_PreviewPhoneNumber = 0x00200000; + const RASEO_SharedPhoneNumbers = 0x00800000; + const RASEO_PreviewUserPw = 0x01000000; + const RASEO_PreviewDomain = 0x02000000; + const RASEO_ShowDialingProgress = 0x04000000; + const RASEO_RequireCHAP = 0x08000000; + const RASEO_RequireMsCHAP = 0x10000000; + const RASEO_RequireMsCHAP2 = 0x20000000; + const RASEO_RequireW95MSCHAP = 0x40000000; + const RASEO_CustomScript = 0x80000000; + + const RASIPO_VJ = 0x00000001; + const RCD_SingleUser = 0; + const RCD_AllUsers = 0x00000001; + const RCD_Eap = 0x00000002; + const RASEAPF_NonInteractive = 0x00000002; + const RASEAPF_Logon = 0x00000004; + const RASEAPF_Preview = 0x00000008; + const ET_40Bit = 1; + const ET_128Bit = 2; + const ET_None = 0; + const ET_Require = 1; + const ET_RequireMax = 2; + const ET_Optional = 3; +//} + +const RASCS_PAUSED = 0x1000; +const RASCS_DONE = 0x2000; +enum RASCONNSTATE { + RASCS_OpenPort = 0, + RASCS_PortOpened, + RASCS_ConnectDevice, + RASCS_DeviceConnected, + RASCS_AllDevicesConnected, + RASCS_Authenticate, + RASCS_AuthNotify, + RASCS_AuthRetry, + RASCS_AuthCallback, + RASCS_AuthChangePassword, + RASCS_AuthProject, + RASCS_AuthLinkSpeed, + RASCS_AuthAck, + RASCS_ReAuthenticate, + RASCS_Authenticated, + RASCS_PrepareForCallback, + RASCS_WaitForModemReset, + RASCS_WaitForCallback, + RASCS_Projected, + RASCS_StartAuthentication, + RASCS_CallbackComplete, + RASCS_LogonNetwork, + RASCS_SubEntryConnected, + RASCS_SubEntryDisconnected, + RASCS_Interactive = RASCS_PAUSED, + RASCS_RetryAuthentication, + RASCS_CallbackSetByCaller, + RASCS_PasswordExpired, +// static if (_WIN32_WINNT >= 0x500) { + RASCS_InvokeEapUI, +// } + RASCS_Connected = RASCS_DONE, + RASCS_Disconnected +} +alias RASCONNSTATE* LPRASCONNSTATE; + +enum RASPROJECTION { + RASP_Amb = 0x10000, + RASP_PppNbf = 0x803F, + RASP_PppIpx = 0x802B, + RASP_PppIp = 0x8021, +// static if (_WIN32_WINNT >= 0x500) { + RASP_PppCcp = 0x80FD, +// } + RASP_PppLcp = 0xC021, + RASP_Slip = 0x20000 +} +alias RASPROJECTION* LPRASPROJECTION; + +alias TypeDef!(HANDLE) HRASCONN; +alias HRASCONN* LPHRASCONN; + +struct RASCONNW { + DWORD dwSize; + HRASCONN hrasconn; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + //static if (_WIN32_WINNT >= 0x401) { + WCHAR[MAX_PATH] szPhonebook; + DWORD dwSubEntry; + //} + //static if (_WIN32_WINNT >= 0x500) { + GUID guidEntry; + //} + static if (_WIN32_WINNT >= 0x501) { + DWORD dwFlags; + LUID luid; + } +} +alias RASCONNW* LPRASCONNW; + +struct RASCONNA { + DWORD dwSize; + HRASCONN hrasconn; + CHAR[RAS_MaxEntryName + 1] szEntryName; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + //static if (_WIN32_WINNT >= 0x401) { + CHAR[MAX_PATH] szPhonebook; + DWORD dwSubEntry; + //} + //static if (_WIN32_WINNT >= 0x500) { + GUID guidEntry; + //} + static if (_WIN32_WINNT >= 0x501) { + DWORD dwFlags; + LUID luid; + } +} +alias RASCONNA* LPRASCONNA; + +struct RASCONNSTATUSW { + DWORD dwSize; + RASCONNSTATE rasconnstate; + DWORD dwError; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + } +} +alias RASCONNSTATUSW* LPRASCONNSTATUSW; + +struct RASCONNSTATUSA { + DWORD dwSize; + RASCONNSTATE rasconnstate; + DWORD dwError; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + } +} +alias RASCONNSTATUSA* LPRASCONNSTATUSA; + +struct RASDIALPARAMSW { + DWORD dwSize; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + WCHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; + } +} +alias RASDIALPARAMSW* LPRASDIALPARAMSW; + +struct RASDIALPARAMSA{ + DWORD dwSize; + CHAR[RAS_MaxEntryName + 1] szEntryName; + CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + CHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; + } +} +alias RASDIALPARAMSA* LPRASDIALPARAMSA; + +//static if (_WIN32_WINNT >= 0x500) { + struct RASEAPINFO { + DWORD dwSizeofEapInfo; + BYTE *pbEapInfo; + } +//} + +struct RASDIALEXTENSIONS { + DWORD dwSize; + DWORD dwfOptions; + HWND hwndParent; + ULONG_PTR reserved; + //static if (_WIN32_WINNT >= 0x500) { + ULONG_PTR reserved1; + RASEAPINFO RasEapInfo; + //} +} +alias RASDIALEXTENSIONS* LPRASDIALEXTENSIONS; + +struct RASENTRYNAMEW { + DWORD dwSize; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwFlags; + WCHAR[MAX_PATH + 1] szPhonebookPath; + //} +} +alias RASENTRYNAMEW* LPRASENTRYNAMEW; + +struct RASENTRYNAMEA{ + DWORD dwSize; + CHAR[RAS_MaxEntryName + 1] szEntryName; + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwFlags; + CHAR[MAX_PATH + 1] szPhonebookPath; + //} +} +alias RASENTRYNAMEA* LPRASENTRYNAMEA; + +struct RASAMBW{ + DWORD dwSize; + DWORD dwError; + WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + BYTE bLana; +} +alias RASAMBW* LPRASAMBW; + +struct RASAMBA{ + DWORD dwSize; + DWORD dwError; + CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + BYTE bLana; +} +alias RASAMBA* LPRASAMBA; + +struct RASPPPNBFW{ + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + WCHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; + BYTE bLana; +} +alias RASPPPNBFW* LPRASPPPNBFW; + +struct RASPPPNBFA{ + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; + BYTE bLana; +} +alias RASPPPNBFA* LPRASPPPNBFA; + +struct RASPPPIPXW { + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpxAddress + 1] szIpxAddress; +} +alias RASPPPIPXW* LPRASPPPIPXW; + +struct RASPPPIPXA { + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpxAddress + 1] szIpxAddress; +} +alias RASPPPIPXA* LPRASPPPIPXA; + +struct RASPPPIPW{ + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpAddress + 1] szIpAddress; + //#ifndef WINNT35COMPATIBLE + WCHAR[RAS_MaxIpAddress + 1] szServerIpAddress; + //#endif + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwOptions; + DWORD dwServerOptions; + //} +} +alias RASPPPIPW* LPRASPPPIPW; + +struct RASPPPIPA{ + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpAddress + 1] szIpAddress; + //#ifndef WINNT35COMPATIBLE + CHAR[RAS_MaxIpAddress + 1] szServerIpAddress; + //#endif + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwOptions; + DWORD dwServerOptions; + //} +} +alias RASPPPIPA* LPRASPPPIPA; + +struct RASPPPLCPW{ + DWORD dwSize; + BOOL fBundled; + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + BOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + WCHAR[RAS_MaxReplyMessage] szReplyMessage; + DWORD dwOptions; + DWORD dwServerOptions; + //} +} +alias RASPPPLCPW* LPRASPPPLCPW; + +struct RASPPPLCPA{ + DWORD dwSize; + BOOL fBundled; + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + BOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + CHAR[RAS_MaxReplyMessage] szReplyMessage; + DWORD dwOptions; + DWORD dwServerOptions; + //} +} +alias RASPPPLCPA* LPRASPPPLCPA; + +struct RASSLIPW{ + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpAddress + 1] szIpAddress; +} +alias RASSLIPW* LPRASSLIPW; + +struct RASSLIPA{ + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpAddress + 1] szIpAddress; +} +alias RASSLIPA* LPRASSLIPA; + +struct RASDEVINFOW{ + DWORD dwSize; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; +} +alias RASDEVINFOW* LPRASDEVINFOW; + +struct RASDEVINFOA{ + DWORD dwSize; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; +} +alias RASDEVINFOA* LPRASDEVINFOA; + +struct RASCTRYINFO { + DWORD dwSize; + DWORD dwCountryID; + DWORD dwNextCountryID; + DWORD dwCountryCode; + DWORD dwCountryNameOffset; +} +alias RASCTRYINFO* LPRASCTRYINFO; +alias RASCTRYINFO RASCTRYINFOW, RASCTRYINFOA; +alias RASCTRYINFOW* LPRASCTRYINFOW; +alias RASCTRYINFOA* LPRASCTRYINFOA; + +struct RASIPADDR { + BYTE a; + BYTE b; + BYTE c; + BYTE d; +} + +struct RASENTRYW { + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + WCHAR[RAS_MaxAreaCode + 1] szAreaCode; + WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + WCHAR[MAX_PATH] szScript; + WCHAR[MAX_PATH] szAutodialDll; + WCHAR[MAX_PATH] szAutodialFunc; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + WCHAR[RAS_MaxPadType + 1] szX25PadType; + WCHAR[RAS_MaxX25Address + 1] szX25Address; + WCHAR[RAS_MaxFacilities + 1] szX25Facilities; + WCHAR[RAS_MaxUserData + 1] szX25UserData; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; + //static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + //} + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + WCHAR[MAX_PATH] szCustomDialDll; + DWORD dwVpnStrategy; + //} +} +alias RASENTRYW* LPRASENTRYW; + +struct RASENTRYA { + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + CHAR[RAS_MaxAreaCode + 1] szAreaCode; + CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + CHAR[MAX_PATH] szScript; + CHAR[MAX_PATH] szAutodialDll; + CHAR[MAX_PATH] szAutodialFunc; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + CHAR[RAS_MaxPadType + 1] szX25PadType; + CHAR[RAS_MaxX25Address + 1] szX25Address; + CHAR[RAS_MaxFacilities + 1] szX25Facilities; + CHAR[RAS_MaxUserData + 1] szX25UserData; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; + //static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + //} + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + CHAR[MAX_PATH] szCustomDialDll; + DWORD dwVpnStrategy; + //} +} +alias RASENTRYA* LPRASENTRYA; + + +//static if (_WIN32_WINNT >= 0x401) { + struct RASADPARAMS { + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + } + alias RASADPARAMS* LPRASADPARAMS; + + struct RASSUBENTRYW{ + DWORD dwSize; + DWORD dwfFlags; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + } + alias RASSUBENTRYW* LPRASSUBENTRYW; + + struct RASSUBENTRYA{ + DWORD dwSize; + DWORD dwfFlags; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + } + alias RASSUBENTRYA* LPRASSUBENTRYA; + + struct RASCREDENTIALSW{ + DWORD dwSize; + DWORD dwMask; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; + } + alias RASCREDENTIALSW* LPRASCREDENTIALSW; + + struct RASCREDENTIALSA{ + DWORD dwSize; + DWORD dwMask; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; + } + alias RASCREDENTIALSA* LPRASCREDENTIALSA; + + struct RASAUTODIALENTRYW{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + WCHAR[RAS_MaxEntryName + 1] szEntry; + } + alias RASAUTODIALENTRYW* LPRASAUTODIALENTRYW; + + struct RASAUTODIALENTRYA{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + CHAR[RAS_MaxEntryName + 1] szEntry; + } + alias RASAUTODIALENTRYA* LPRASAUTODIALENTRYA; +//} + +//static if (_WIN32_WINNT >= 0x500) { + struct RASPPPCCP{ + DWORD dwSize; + DWORD dwError; + DWORD dwCompressionAlgorithm; + DWORD dwOptions; + DWORD dwServerCompressionAlgorithm; + DWORD dwServerOptions; + } + alias RASPPPCCP* LPRASPPPCCP; + + struct RASEAPUSERIDENTITYW{ + WCHAR[UNLEN + 1] szUserName; + DWORD dwSizeofEapInfo; + BYTE[1] pbEapInfo; + } + alias RASEAPUSERIDENTITYW* LPRASEAPUSERIDENTITYW; + + struct RASEAPUSERIDENTITYA{ + CHAR[UNLEN + 1] szUserName; + DWORD dwSizeofEapInfo; + BYTE[1] pbEapInfo; + } + alias RASEAPUSERIDENTITYA* LPRASEAPUSERIDENTITYA; + + struct RAS_STATS{ + DWORD dwSize; + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwCompressionRatioIn; + DWORD dwCompressionRatioOut; + DWORD dwBps; + DWORD dwConnectDuration; + } + alias RAS_STATS* PRAS_STATS; +//} + + +/* UNICODE typedefs for structures*/ +version (Unicode) { + alias RASCONNW RASCONN; + alias RASENTRYW RASENTRY; + alias RASCONNSTATUSW RASCONNSTATUS; + alias RASDIALPARAMSW RASDIALPARAMS; + alias RASAMBW RASAMB; + alias RASPPPNBFW RASPPPNBF; + alias RASPPPIPXW RASPPPIPX; + alias RASPPPIPW RASPPPIP; + alias RASPPPLCPW RASPPPLCP; + alias RASSLIPW RASSLIP; + alias RASDEVINFOW RASDEVINFO; + alias RASENTRYNAMEW RASENTRYNAME; + + //static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRYW RASSUBENTRY; + alias RASCREDENTIALSW RASCREDENTIALS; + alias RASAUTODIALENTRYW RASAUTODIALENTRY; + //} + + //static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITYW RASEAPUSERIDENTITY; + //} + +} else { // ! defined UNICODE + + alias RASCONNA RASCONN; + alias RASENTRYA RASENTRY; + alias RASCONNSTATUSA RASCONNSTATUS; + alias RASDIALPARAMSA RASDIALPARAMS; + alias RASAMBA RASAMB; + alias RASPPPNBFA RASPPPNBF; + alias RASPPPIPXA RASPPPIPX; + alias RASPPPIPA RASPPPIP; + alias RASPPPLCPA RASPPPLCP; + alias RASSLIPA RASSLIP; + alias RASDEVINFOA RASDEVINFO; + alias RASENTRYNAMEA RASENTRYNAME; + + //static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRYA RASSUBENTRY; + alias RASCREDENTIALSA RASCREDENTIALS; + alias RASAUTODIALENTRYA RASAUTODIALENTRY; + //} + //static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITYA RASEAPUSERIDENTITY; + //} +}// ! UNICODE + + +alias RASCONN* LPRASCONN; +alias RASENTRY* LPRASENTRY; +alias RASCONNSTATUS* LPRASCONNSTATUS; +alias RASDIALPARAMS* LPRASDIALPARAMS; +alias RASAMB* LPRASAM; +alias RASPPPNBF* LPRASPPPNBF; +alias RASPPPIPX* LPRASPPPIPX; +alias RASPPPIP* LPRASPPPIP; +alias RASPPPLCP* LPRASPPPLCP; +alias RASSLIP* LPRASSLIP; +alias RASDEVINFO* LPRASDEVINFO; +alias RASENTRYNAME* LPRASENTRYNAME; + +//static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRY* LPRASSUBENTRY; + alias RASCREDENTIALS* LPRASCREDENTIALS; + alias RASAUTODIALENTRY* LPRASAUTODIALENTRY; +//} +//static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITY* LPRASEAPUSERIDENTITY; +//} + +/* Callback prototypes */ +deprecated { + alias BOOL function (HWND, LPSTR, DWORD, LPDWORD) ORASADFUNC; +} + +alias void function (UINT, RASCONNSTATE, DWORD) RASDIALFUNC; +alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD) RASDIALFUNC1; +alias DWORD function (ULONG_PTR, DWORD, HRASCONN, UINT, +RASCONNSTATE, DWORD, DWORD) RASDIALFUNC2; + +/* External functions */ +DWORD RasDialA(LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, DWORD, LPVOID, LPHRASCONN); +DWORD RasDialW(LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, DWORD, LPVOID, LPHRASCONN); +DWORD RasEnumConnectionsA(LPRASCONNA, LPDWORD, LPDWORD); +DWORD RasEnumConnectionsW(LPRASCONNW, LPDWORD, LPDWORD); +DWORD RasEnumEntriesA(LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, LPDWORD); +DWORD RasEnumEntriesW(LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD, LPDWORD); +DWORD RasGetConnectStatusA(HRASCONN, LPRASCONNSTATUSA); +DWORD RasGetConnectStatusW(HRASCONN, LPRASCONNSTATUSW); +DWORD RasGetErrorStringA(UINT, LPSTR, DWORD); +DWORD RasGetErrorStringW(UINT, LPWSTR, DWORD); +DWORD RasHangUpA(HRASCONN); +DWORD RasHangUpW(HRASCONN); +DWORD RasGetProjectionInfoA(HRASCONN, RASPROJECTION, LPVOID, LPDWORD); +DWORD RasGetProjectionInfoW(HRASCONN, RASPROJECTION, LPVOID, LPDWORD); +DWORD RasCreatePhonebookEntryA(HWND, LPCSTR); +DWORD RasCreatePhonebookEntryW(HWND, LPCWSTR); +DWORD RasEditPhonebookEntryA(HWND, LPCSTR, LPCSTR); +DWORD RasEditPhonebookEntryW(HWND, LPCWSTR, LPCWSTR); +DWORD RasSetEntryDialParamsA(LPCSTR, LPRASDIALPARAMSA, BOOL); +DWORD RasSetEntryDialParamsW(LPCWSTR, LPRASDIALPARAMSW, BOOL); +DWORD RasGetEntryDialParamsA(LPCSTR, LPRASDIALPARAMSA, LPBOOL); +DWORD RasGetEntryDialParamsW(LPCWSTR, LPRASDIALPARAMSW, LPBOOL); +DWORD RasEnumDevicesA(LPRASDEVINFOA, LPDWORD, LPDWORD); +DWORD RasEnumDevicesW(LPRASDEVINFOW, LPDWORD, LPDWORD); +DWORD RasGetCountryInfoA(LPRASCTRYINFOA, LPDWORD); +DWORD RasGetCountryInfoW(LPRASCTRYINFOW, LPDWORD); +DWORD RasGetEntryPropertiesA(LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, LPBYTE, LPDWORD); +DWORD RasGetEntryPropertiesW(LPCWSTR, LPCWSTR, LPRASENTRYW, LPDWORD, LPBYTE, LPDWORD); +DWORD RasSetEntryPropertiesA(LPCSTR, LPCSTR, LPRASENTRYA, DWORD, LPBYTE, DWORD); +DWORD RasSetEntryPropertiesW(LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, LPBYTE, DWORD); +DWORD RasRenameEntryA(LPCSTR, LPCSTR, LPCSTR); +DWORD RasRenameEntryW(LPCWSTR, LPCWSTR, LPCWSTR); +DWORD RasDeleteEntryA(LPCSTR, LPCSTR); +DWORD RasDeleteEntryW(LPCWSTR, LPCWSTR); +DWORD RasValidateEntryNameA(LPCSTR, LPCSTR); +DWORD RasValidateEntryNameW(LPCWSTR, LPCWSTR); + +//static if(_WIN32_WINNT >= 0x401) { + alias BOOL function(LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; + alias BOOL function(LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; + + DWORD RasGetSubEntryHandleA(HRASCONN, DWORD, LPHRASCONN); + DWORD RasGetSubEntryHandleW(HRASCONN, DWORD, LPHRASCONN); + DWORD RasGetCredentialsA(LPCSTR, LPCSTR, LPRASCREDENTIALSA); + DWORD RasGetCredentialsW(LPCWSTR, LPCWSTR, LPRASCREDENTIALSW); + DWORD RasSetCredentialsA(LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL); + DWORD RasSetCredentialsW(LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL); + DWORD RasConnectionNotificationA(HRASCONN, HANDLE, DWORD); + DWORD RasConnectionNotificationW(HRASCONN, HANDLE, DWORD); + DWORD RasGetSubEntryPropertiesA(LPCSTR, LPCSTR, DWORD, LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD); + DWORD RasGetSubEntryPropertiesW(LPCWSTR, LPCWSTR, DWORD, LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD); + DWORD RasSetSubEntryPropertiesA(LPCSTR, LPCSTR, DWORD, LPRASSUBENTRYA, DWORD, LPBYTE, DWORD); + DWORD RasSetSubEntryPropertiesW(LPCWSTR, LPCWSTR, DWORD, LPRASSUBENTRYW, DWORD, LPBYTE, DWORD); + DWORD RasGetAutodialAddressA(LPCSTR, LPDWORD, LPRASAUTODIALENTRYA, LPDWORD, LPDWORD); + DWORD RasGetAutodialAddressW(LPCWSTR, LPDWORD, LPRASAUTODIALENTRYW, LPDWORD, LPDWORD); + DWORD RasSetAutodialAddressA(LPCSTR, DWORD, LPRASAUTODIALENTRYA, DWORD, DWORD); + DWORD RasSetAutodialAddressW(LPCWSTR, DWORD, LPRASAUTODIALENTRYW, DWORD, DWORD); + DWORD RasEnumAutodialAddressesA(LPSTR*, LPDWORD, LPDWORD); + DWORD RasEnumAutodialAddressesW(LPWSTR*, LPDWORD, LPDWORD); + DWORD RasGetAutodialEnableA(DWORD, LPBOOL); + DWORD RasGetAutodialEnableW(DWORD, LPBOOL); + DWORD RasSetAutodialEnableA(DWORD, BOOL); + DWORD RasSetAutodialEnableW(DWORD, BOOL); + DWORD RasGetAutodialParamA(DWORD, LPVOID, LPDWORD); + DWORD RasGetAutodialParamW(DWORD, LPVOID, LPDWORD); + DWORD RasSetAutodialParamA(DWORD, LPVOID, DWORD); + DWORD RasSetAutodialParamW(DWORD, LPVOID, DWORD); +//} + +static if (_WIN32_WINNT >= 0x500) { + alias DWORD function(HRASCONN) RasCustomHangUpFn; + alias DWORD function(LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; + alias DWORD function(HINSTANCE, LPRASDIALEXTENSIONS, LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, + LPHRASCONN, DWORD) RasCustomDialFn; + + DWORD RasInvokeEapUI(HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); + DWORD RasGetLinkStatistics(HRASCONN, DWORD, RAS_STATS*); + DWORD RasGetConnectionStatistics(HRASCONN, RAS_STATS*); + DWORD RasClearLinkStatistics(HRASCONN, DWORD); + DWORD RasClearConnectionStatistics(HRASCONN); + DWORD RasGetEapUserDataA(HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*); + DWORD RasGetEapUserDataW(HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*); + DWORD RasSetEapUserDataA(HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD); + DWORD RasSetEapUserDataW(HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD); + DWORD RasGetCustomAuthDataA(LPCSTR, LPCSTR, BYTE*, DWORD*); + DWORD RasGetCustomAuthDataW(LPCWSTR, LPCWSTR, BYTE*, DWORD*); + DWORD RasSetCustomAuthDataA(LPCSTR, LPCSTR, BYTE*, DWORD); + DWORD RasSetCustomAuthDataW(LPCWSTR, LPCWSTR, BYTE*, DWORD); + DWORD RasGetEapUserIdentityW(LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*); + DWORD RasGetEapUserIdentityA(LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*); + void RasFreeEapUserIdentityW(LPRASEAPUSERIDENTITYW); + void RasFreeEapUserIdentityA(LPRASEAPUSERIDENTITYA); +} + + +/* UNICODE defines for functions */ +version(Unicode) { + alias RasDialW RasDial; + alias RasEnumConnectionsW RasEnumConnections; + alias RasEnumEntriesW RasEnumEntries; + alias RasGetConnectStatusW RasGetConnectStatus; + alias RasGetErrorStringW RasGetErrorString; + alias RasHangUpW RasHangUp; + alias RasGetProjectionInfoW RasGetProjectionInfo; + alias RasCreatePhonebookEntryW RasCreatePhonebookEntry; + alias RasEditPhonebookEntryW RasEditPhonebookEntry; + alias RasSetEntryDialParamsW RasSetEntryDialParams; + alias RasGetEntryDialParamsW RasGetEntryDialParams; + alias RasEnumDevicesW RasEnumDevices; + alias RasGetCountryInfoW RasGetCountryInfo; + alias RasGetEntryPropertiesW RasGetEntryProperties; + alias RasSetEntryPropertiesW RasSetEntryProperties; + alias RasRenameEntryW RasRenameEntry; + alias RasDeleteEntryW RasDeleteEntry; + alias RasValidateEntryNameW RasValidateEntryName; + + //static if (_WIN32_WINNT >= 0x401) { + alias RASADFUNCW RASADFUNC; + alias RasGetSubEntryHandleW RasGetSubEntryHandle; + alias RasConnectionNotificationW RasConnectionNotification; + alias RasGetSubEntryPropertiesW RasGetSubEntryProperties; + alias RasSetSubEntryPropertiesW RasSetSubEntryProperties; + alias RasGetCredentialsW RasGetCredentials; + alias RasSetCredentialsW RasSetCredentials; + alias RasGetAutodialAddressW RasGetAutodialAddress; + alias RasSetAutodialAddressW RasSetAutodialAddress; + alias RasEnumAutodialAddressesW RasEnumAutodialAddresses; + alias RasGetAutodialEnableW RasGetAutodialEnable; + alias RasSetAutodialEnableW RasSetAutodialEnable; + alias RasGetAutodialParamW RasGetAutodialParam; + alias RasSetAutodialParamW RasSetAutodialParam; + //} + + //static if (_WIN32_WINNT >= 0x500) { + alias RasGetEapUserDataW RasGetEapUserData; + alias RasSetEapUserDataW RasSetEapUserData; + alias RasGetCustomAuthDataW RasGetCustomAuthData; + alias RasSetCustomAuthDataW RasSetCustomAuthData; + alias RasGetEapUserIdentityW RasGetEapUserIdentity; + alias RasFreeEapUserIdentityW RasFreeEapUserIdentity; + //} + +} else { // !Unicode + alias RasDialA RasDial; + alias RasEnumConnectionsA RasEnumConnections; + alias RasEnumEntriesA RasEnumEntries; + alias RasGetConnectStatusA RasGetConnectStatus; + alias RasGetErrorStringA RasGetErrorString; + alias RasHangUpA RasHangUp; + alias RasGetProjectionInfoA RasGetProjectionInfo; + alias RasCreatePhonebookEntryA RasCreatePhonebookEntry; + alias RasEditPhonebookEntryA RasEditPhonebookEntry; + alias RasSetEntryDialParamsA RasSetEntryDialParams; + alias RasGetEntryDialParamsA RasGetEntryDialParams; + alias RasEnumDevicesA RasEnumDevices; + alias RasGetCountryInfoA RasGetCountryInfo; + alias RasGetEntryPropertiesA RasGetEntryProperties; + alias RasSetEntryPropertiesA RasSetEntryProperties; + alias RasRenameEntryA RasRenameEntry; + alias RasDeleteEntryA RasDeleteEntry; + alias RasValidateEntryNameA RasValidateEntryName; + + //static if (_WIN32_WINNT >= 0x401) { + alias RASADFUNCA RASADFUNC; + alias RasGetSubEntryHandleA RasGetSubEntryHandle; + alias RasConnectionNotificationA RasConnectionNotification; + alias RasGetSubEntryPropertiesA RasGetSubEntryProperties; + alias RasSetSubEntryPropertiesA RasSetSubEntryProperties; + alias RasGetCredentialsA RasGetCredentials; + alias RasSetCredentialsA RasSetCredentials; + alias RasGetAutodialAddressA RasGetAutodialAddress; + alias RasSetAutodialAddressA RasSetAutodialAddress; + alias RasEnumAutodialAddressesA RasEnumAutodialAddresses; + alias RasGetAutodialEnableA RasGetAutodialEnable; + alias RasSetAutodialEnableA RasSetAutodialEnable; + alias RasGetAutodialParamA RasGetAutodialParam; + alias RasSetAutodialParamA RasSetAutodialParam; + //} + + //static if (_WIN32_WINNT >= 0x500) { + alias RasGetEapUserDataA RasGetEapUserData; + alias RasSetEapUserDataA RasSetEapUserData; + alias RasGetCustomAuthDataA RasGetCustomAuthData; + alias RasSetCustomAuthDataA RasSetCustomAuthData; + alias RasGetEapUserIdentityA RasGetEapUserIdentity; + alias RasFreeEapUserIdentityA RasFreeEapUserIdentity; + //} +} //#endif // !Unicode diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d index 54246e680c..ff6e87bcc5 100644 --- a/src/core/sys/windows/rasdlg.d +++ b/src/core/sys/windows/rasdlg.d @@ -1,158 +1,158 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rasdlg.d) - */ -module core.sys.windows.rasdlg; - -import core.sys.windows.ras; -private import core.sys.windows.lmcons, core.sys.windows.windef; - -enum { - RASPBDEVENT_AddEntry = 1, - RASPBDEVENT_EditEntry, - RASPBDEVENT_RemoveEntry, - RASPBDEVENT_DialEntry, - RASPBDEVENT_EditGlobals, - RASPBDEVENT_NoUser, - RASPBDEVENT_NoUserEdit -} - -const RASPBDFLAG_PositionDlg = 1; -const RASPBDFLAG_ForceCloseOnDial = 2; -const RASPBDFLAG_NoUser = 16; - -const RASEDFLAG_PositionDlg = 1; -const RASEDFLAG_NewEntry = 2; -const RASEDFLAG_CloneEntry = 4; - -const RASDDFLAG_PositionDlg = 1; - -align(4): - -struct RASENTRYDLGA { - DWORD dwSize = RASENTRYDLGA.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - CHAR[RAS_MaxEntryName + 1] szEntry; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; -} -alias RASENTRYDLGA* LPRASENTRYDLGA; - -struct RASENTRYDLGW { - DWORD dwSize = RASENTRYDLGW.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - WCHAR[RAS_MaxEntryName + 1] szEntry; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; -} -alias RASENTRYDLGW* LPRASENTRYDLGW; - -struct RASDIALDLG { - DWORD dwSize; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - DWORD dwSubEntry; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; -} -alias RASDIALDLG* LPRASDIALDLG; - -// Application-defined callback functions -extern (Windows) { - alias VOID function(DWORD, DWORD, LPWSTR, LPVOID) RASPBDLGFUNCW; - alias VOID function(DWORD, DWORD, LPSTR, LPVOID) RASPBDLGFUNCA; -} - -struct RASPBDLGA { - DWORD dwSize = RASPBDLGA.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - ULONG_PTR dwCallbackId; - RASPBDLGFUNCA pCallback; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; -} -alias RASPBDLGA* LPRASPBDLGA; - -struct RASPBDLGW { - DWORD dwSize = RASPBDLGW.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - ULONG_PTR dwCallbackId; - RASPBDLGFUNCW pCallback; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; -} -alias RASPBDLGW* LPRASPBDLGW; - -struct RASNOUSERA -{ - DWORD dwSize = RASNOUSERA.sizeof; - DWORD dwFlags; - DWORD dwTimeoutMs; - CHAR[UNLEN + 1] szUserName; - CHAR[PWLEN + 1] szPassword; - CHAR[DNLEN + 1] szDomain; -} -alias RASNOUSERA* LPRASNOUSERA; - -struct RASNOUSERW { - DWORD dwSize = RASNOUSERW.sizeof; - DWORD dwFlags; - DWORD dwTimeoutMs; - WCHAR[UNLEN + 1] szUserName; - WCHAR[PWLEN + 1] szPassword; - WCHAR[DNLEN + 1] szDomain; -} -alias RASNOUSERW* LPRASNOUSERW; - -extern (Windows) { - BOOL RasDialDlgA(LPSTR, LPSTR, LPSTR, LPRASDIALDLG); - BOOL RasDialDlgW(LPWSTR, LPWSTR, LPWSTR, LPRASDIALDLG); - BOOL RasEntryDlgA(LPSTR, LPSTR, LPRASENTRYDLGA); - BOOL RasEntryDlgW(LPWSTR, LPWSTR, LPRASENTRYDLGW); - BOOL RasPhonebookDlgA(LPSTR, LPSTR, LPRASPBDLGA); - BOOL RasPhonebookDlgW(LPWSTR, LPWSTR, LPRASPBDLGW); -} - -version (Unicode) { - alias RASENTRYDLGW RASENTRYDLG; - alias RASPBDLGW RASPBDLG; - alias RASNOUSERW RASNOUSER; - alias RasDialDlgW RasDialDlg; - alias RasEntryDlgW RasEntryDlg; - alias RasPhonebookDlgW RasPhonebookDlg; -} else { - alias RASENTRYDLGA RASENTRYDLG; - alias RASPBDLGA RASPBDLG; - alias RASNOUSERA RASNOUSER; - alias RasDialDlgA RasDialDlg; - alias RasEntryDlgA RasEntryDlg; - alias RasPhonebookDlgA RasPhonebookDlg; -} - -alias RASENTRYDLG* LPRASENTRYDLG; -alias RASPBDLG* LPRASPBDLG; -alias RASNOUSER* LPRASNOUSER; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rasdlg.d) + */ +module core.sys.windows.rasdlg; + +import core.sys.windows.ras; +private import core.sys.windows.lmcons, core.sys.windows.windef; + +enum { + RASPBDEVENT_AddEntry = 1, + RASPBDEVENT_EditEntry, + RASPBDEVENT_RemoveEntry, + RASPBDEVENT_DialEntry, + RASPBDEVENT_EditGlobals, + RASPBDEVENT_NoUser, + RASPBDEVENT_NoUserEdit +} + +const RASPBDFLAG_PositionDlg = 1; +const RASPBDFLAG_ForceCloseOnDial = 2; +const RASPBDFLAG_NoUser = 16; + +const RASEDFLAG_PositionDlg = 1; +const RASEDFLAG_NewEntry = 2; +const RASEDFLAG_CloneEntry = 4; + +const RASDDFLAG_PositionDlg = 1; + +align(4): + +struct RASENTRYDLGA { + DWORD dwSize = RASENTRYDLGA.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + CHAR[RAS_MaxEntryName + 1] szEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASENTRYDLGA* LPRASENTRYDLGA; + +struct RASENTRYDLGW { + DWORD dwSize = RASENTRYDLGW.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + WCHAR[RAS_MaxEntryName + 1] szEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASENTRYDLGW* LPRASENTRYDLGW; + +struct RASDIALDLG { + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + DWORD dwSubEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASDIALDLG* LPRASDIALDLG; + +// Application-defined callback functions +extern (Windows) { + alias VOID function(DWORD, DWORD, LPWSTR, LPVOID) RASPBDLGFUNCW; + alias VOID function(DWORD, DWORD, LPSTR, LPVOID) RASPBDLGFUNCA; +} + +struct RASPBDLGA { + DWORD dwSize = RASPBDLGA.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + ULONG_PTR dwCallbackId; + RASPBDLGFUNCA pCallback; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASPBDLGA* LPRASPBDLGA; + +struct RASPBDLGW { + DWORD dwSize = RASPBDLGW.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + ULONG_PTR dwCallbackId; + RASPBDLGFUNCW pCallback; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASPBDLGW* LPRASPBDLGW; + +struct RASNOUSERA +{ + DWORD dwSize = RASNOUSERA.sizeof; + DWORD dwFlags; + DWORD dwTimeoutMs; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; +} +alias RASNOUSERA* LPRASNOUSERA; + +struct RASNOUSERW { + DWORD dwSize = RASNOUSERW.sizeof; + DWORD dwFlags; + DWORD dwTimeoutMs; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; +} +alias RASNOUSERW* LPRASNOUSERW; + +extern (Windows) { + BOOL RasDialDlgA(LPSTR, LPSTR, LPSTR, LPRASDIALDLG); + BOOL RasDialDlgW(LPWSTR, LPWSTR, LPWSTR, LPRASDIALDLG); + BOOL RasEntryDlgA(LPSTR, LPSTR, LPRASENTRYDLGA); + BOOL RasEntryDlgW(LPWSTR, LPWSTR, LPRASENTRYDLGW); + BOOL RasPhonebookDlgA(LPSTR, LPSTR, LPRASPBDLGA); + BOOL RasPhonebookDlgW(LPWSTR, LPWSTR, LPRASPBDLGW); +} + +version (Unicode) { + alias RASENTRYDLGW RASENTRYDLG; + alias RASPBDLGW RASPBDLG; + alias RASNOUSERW RASNOUSER; + alias RasDialDlgW RasDialDlg; + alias RasEntryDlgW RasEntryDlg; + alias RasPhonebookDlgW RasPhonebookDlg; +} else { + alias RASENTRYDLGA RASENTRYDLG; + alias RASPBDLGA RASPBDLG; + alias RASNOUSERA RASNOUSER; + alias RasDialDlgA RasDialDlg; + alias RasEntryDlgA RasEntryDlg; + alias RasPhonebookDlgA RasPhonebookDlg; +} + +alias RASENTRYDLG* LPRASENTRYDLG; +alias RASPBDLG* LPRASPBDLG; +alias RASNOUSER* LPRASNOUSER; diff --git a/src/core/sys/windows/raserror.d b/src/core/sys/windows/raserror.d index d0403e3a47..e23011f0fe 100644 --- a/src/core/sys/windows/raserror.d +++ b/src/core/sys/windows/raserror.d @@ -1,214 +1,214 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_raserror.d) - */ -module core.sys.windows.raserror; - -enum { - SUCCESS = 0, - RASBASE = 600, - PENDING = RASBASE, - ERROR_INVALID_PORT_HANDLE, - ERROR_PORT_ALREADY_OPEN, - ERROR_BUFFER_TOO_SMALL, - ERROR_WRONG_INFO_SPECIFIED, - ERROR_CANNOT_SET_PORT_INFO, - ERROR_PORT_NOT_CONNECTED, - ERROR_EVENT_INVALID, - ERROR_DEVICE_DOES_NOT_EXIST, - ERROR_DEVICETYPE_DOES_NOT_EXIST, - ERROR_BUFFER_INVALID, - ERROR_ROUTE_NOT_AVAILABLE, - ERROR_ROUTE_NOT_ALLOCATED, - ERROR_INVALID_COMPRESSION_SPECIFIED, - ERROR_OUT_OF_BUFFERS, - ERROR_PORT_NOT_FOUND, - ERROR_ASYNC_REQUEST_PENDING, - ERROR_ALREADY_DISCONNECTING, - ERROR_PORT_NOT_OPEN, - ERROR_PORT_DISCONNECTED, - ERROR_NO_ENDPOINTS, - ERROR_CANNOT_OPEN_PHONEBOOK, - ERROR_CANNOT_LOAD_PHONEBOOK, - ERROR_CANNOT_FIND_PHONEBOOK_ENTRY, - ERROR_CANNOT_WRITE_PHONEBOOK, - ERROR_CORRUPT_PHONEBOOK, - ERROR_CANNOT_LOAD_STRING, - ERROR_KEY_NOT_FOUND, - ERROR_DISCONNECTION, - ERROR_REMOTE_DISCONNECTION, - ERROR_HARDWARE_FAILURE, - ERROR_USER_DISCONNECTION, - ERROR_INVALID_SIZE, - ERROR_PORT_NOT_AVAILABLE, - ERROR_CANNOT_PROJECT_CLIENT, - ERROR_UNKNOWN, - ERROR_WRONG_DEVICE_ATTACHED, - ERROR_BAD_STRING, - ERROR_REQUEST_TIMEOUT, - ERROR_CANNOT_GET_LANA, - ERROR_NETBIOS_ERROR, - ERROR_SERVER_OUT_OF_RESOURCES, - ERROR_NAME_EXISTS_ON_NET, - ERROR_SERVER_GENERAL_NET_FAILURE, - WARNING_MSG_ALIAS_NOT_ADDED, - ERROR_AUTH_INTERNAL, - ERROR_RESTRICTED_LOGON_HOURS, - ERROR_ACCT_DISABLED, - ERROR_PASSWD_EXPIRED, - ERROR_NO_DIALIN_PERMISSION, - ERROR_SERVER_NOT_RESPONDING, - ERROR_FROM_DEVICE, - ERROR_UNRECOGNIZED_RESPONSE, - ERROR_MACRO_NOT_FOUND, - ERROR_MACRO_NOT_DEFINED, - ERROR_MESSAGE_MACRO_NOT_FOUND, - ERROR_DEFAULTOFF_MACRO_NOT_FOUND, - ERROR_FILE_COULD_NOT_BE_OPENED, - ERROR_DEVICENAME_TOO_LONG, - ERROR_DEVICENAME_NOT_FOUND, - ERROR_NO_RESPONSES, - ERROR_NO_COMMAND_FOUND, - ERROR_WRONG_KEY_SPECIFIED, - ERROR_UNKNOWN_DEVICE_TYPE, - ERROR_ALLOCATING_MEMORY, - ERROR_PORT_NOT_CONFIGURED, - ERROR_DEVICE_NOT_READY, - ERROR_READING_INI_FILE, - ERROR_NO_CONNECTION, - ERROR_BAD_USAGE_IN_INI_FILE, - ERROR_READING_SECTIONNAME, - ERROR_READING_DEVICETYPE, - ERROR_READING_DEVICENAME, - ERROR_READING_USAGE, - ERROR_READING_MAXCONNECTBPS, - ERROR_READING_MAXCARRIERBPS, - ERROR_LINE_BUSY, - ERROR_VOICE_ANSWER, - ERROR_NO_ANSWER, - ERROR_NO_CARRIER, - ERROR_NO_DIALTONE, - ERROR_IN_COMMAND, - ERROR_WRITING_SECTIONNAME, - ERROR_WRITING_DEVICETYPE, - ERROR_WRITING_DEVICENAME, - ERROR_WRITING_MAXCONNECTBPS, - ERROR_WRITING_MAXCARRIERBPS, - ERROR_WRITING_USAGE, - ERROR_WRITING_DEFAULTOFF, - ERROR_READING_DEFAULTOFF, - ERROR_EMPTY_INI_FILE, - ERROR_AUTHENTICATION_FAILURE, - ERROR_PORT_OR_DEVICE, - ERROR_NOT_BINARY_MACRO, - ERROR_DCB_NOT_FOUND, - ERROR_STATE_MACHINES_NOT_STARTED, - ERROR_STATE_MACHINES_ALREADY_STARTED, - ERROR_PARTIAL_RESPONSE_LOOPING, - ERROR_UNKNOWN_RESPONSE_KEY, - ERROR_RECV_BUF_FULL, - ERROR_CMD_TOO_LONG, - ERROR_UNSUPPORTED_BPS, - ERROR_UNEXPECTED_RESPONSE, - ERROR_INTERACTIVE_MODE, - ERROR_BAD_CALLBACK_NUMBER, - ERROR_INVALID_AUTH_STATE, - ERROR_WRITING_INITBPS, - ERROR_X25_DIAGNOSTIC, - ERROR_ACCT_EXPIRED, - ERROR_CHANGING_PASSWORD, - ERROR_OVERRUN, - ERROR_RASMAN_CANNOT_INITIALIZE, - ERROR_BIPLEX_PORT_NOT_AVAILABLE, - ERROR_NO_ACTIVE_ISDN_LINES, - ERROR_NO_ISDN_CHANNELS_AVAILABLE, - ERROR_TOO_MANY_LINE_ERRORS, - ERROR_IP_CONFIGURATION, - ERROR_NO_IP_ADDRESSES, - ERROR_PPP_TIMEOUT, - ERROR_PPP_REMOTE_TERMINATED, - ERROR_PPP_NO_PROTOCOLS_CONFIGURED, - ERROR_PPP_NO_RESPONSE, - ERROR_PPP_INVALID_PACKET, - ERROR_PHONE_NUMBER_TOO_LONG, - ERROR_IPXCP_NO_DIALOUT_CONFIGURED, - ERROR_IPXCP_NO_DIALIN_CONFIGURED, - ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE, - ERROR_ACCESSING_TCPCFGDLL, - ERROR_NO_IP_RAS_ADAPTER, - ERROR_SLIP_REQUIRES_IP, - ERROR_PROJECTION_NOT_COMPLETE, - ERROR_PROTOCOL_NOT_CONFIGURED, - ERROR_PPP_NOT_CONVERGING, - ERROR_PPP_CP_REJECTED, - ERROR_PPP_LCP_TERMINATED, - ERROR_PPP_REQUIRED_ADDRESS_REJECTED, - ERROR_PPP_NCP_TERMINATED, - ERROR_PPP_LOOPBACK_DETECTED, - ERROR_PPP_NO_ADDRESS_ASSIGNED, - ERROR_CANNOT_USE_LOGON_CREDENTIALS, - ERROR_TAPI_CONFIGURATION, - ERROR_NO_LOCAL_ENCRYPTION, - ERROR_NO_REMOTE_ENCRYPTION, - ERROR_REMOTE_REQUIRES_ENCRYPTION, - ERROR_IPXCP_NET_NUMBER_CONFLICT, - ERROR_INVALID_SMM, - ERROR_SMM_UNINITIALIZED, - ERROR_NO_MAC_FOR_PORT, - ERROR_SMM_TIMEOUT, - ERROR_BAD_PHONE_NUMBER, - ERROR_WRONG_MODULE, - ERROR_INVALID_CALLBACK_NUMBER, - ERROR_SCRIPT_SYNTAX, - ERROR_HANGUP_FAILED, - ERROR_BUNDLE_NOT_FOUND, - ERROR_CANNOT_DO_CUSTOMDIAL, - ERROR_DIAL_ALREADY_IN_PROGRESS, - ERROR_RASAUTO_CANNOT_INITIALIZE, - ERROR_CONNECTION_ALREADY_SHARED, - ERROR_SHARING_CHANGE_FAILED, - ERROR_SHARING_ROUTER_INSTALL, - ERROR_SHARE_CONNECTION_FAILED, - ERROR_SHARING_PRIVATE_INSTALL, - ERROR_CANNOT_SHARE_CONNECTION, - ERROR_NO_SMART_CARD_READER, - ERROR_SHARING_ADDRESS_EXISTS, - ERROR_NO_CERTIFICATE, - ERROR_SHARING_MULTIPLE_ADDRESSES, - ERROR_FAILED_TO_ENCRYPT, - ERROR_BAD_ADDRESS_SPECIFIED, - ERROR_CONNECTION_REJECT, - ERROR_CONGESTION, - ERROR_INCOMPATIBLE, - ERROR_NUMBERCHANGED, - ERROR_TEMPFAILURE, - ERROR_BLOCKED, - ERROR_DONOTDISTURB, - ERROR_OUTOFORDER, - ERROR_UNABLE_TO_AUTHENTICATE_SERVER, - ERROR_SMART_CARD_REQUIRED, - ERROR_INVALID_FUNCTION_FOR_ENTRY, - ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND, - ERROR_SHARING_RRAS_CONFLICT, - ERROR_SHARING_NO_PRIVATE_LAN, - ERROR_NO_DIFF_USER_AT_LOGON, - ERROR_NO_REG_CERT_AT_LOGON, - ERROR_OAKLEY_NO_CERT, - ERROR_OAKLEY_AUTH_FAIL, - ERROR_OAKLEY_ATTRIB_FAIL, - ERROR_OAKLEY_GENERAL_PROCESSING, - ERROR_OAKLEY_NO_PEER_CERT, - ERROR_OAKLEY_NO_POLICY, - ERROR_OAKLEY_TIMED_OUT, - ERROR_OAKLEY_ERROR, - ERROR_UNKNOWN_FRAMED_PROTOCOL, - ERROR_WRONG_TUNNEL_TYPE, - ERROR_UNKNOWN_SERVICE_TYPE, - ERROR_CONNECTING_DEVICE_NOT_FOUND, - ERROR_NO_EAPTLS_CERTIFICATE, // = RASBASE+198 - RASBASEEND = ERROR_NO_EAPTLS_CERTIFICATE -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_raserror.d) + */ +module core.sys.windows.raserror; + +enum { + SUCCESS = 0, + RASBASE = 600, + PENDING = RASBASE, + ERROR_INVALID_PORT_HANDLE, + ERROR_PORT_ALREADY_OPEN, + ERROR_BUFFER_TOO_SMALL, + ERROR_WRONG_INFO_SPECIFIED, + ERROR_CANNOT_SET_PORT_INFO, + ERROR_PORT_NOT_CONNECTED, + ERROR_EVENT_INVALID, + ERROR_DEVICE_DOES_NOT_EXIST, + ERROR_DEVICETYPE_DOES_NOT_EXIST, + ERROR_BUFFER_INVALID, + ERROR_ROUTE_NOT_AVAILABLE, + ERROR_ROUTE_NOT_ALLOCATED, + ERROR_INVALID_COMPRESSION_SPECIFIED, + ERROR_OUT_OF_BUFFERS, + ERROR_PORT_NOT_FOUND, + ERROR_ASYNC_REQUEST_PENDING, + ERROR_ALREADY_DISCONNECTING, + ERROR_PORT_NOT_OPEN, + ERROR_PORT_DISCONNECTED, + ERROR_NO_ENDPOINTS, + ERROR_CANNOT_OPEN_PHONEBOOK, + ERROR_CANNOT_LOAD_PHONEBOOK, + ERROR_CANNOT_FIND_PHONEBOOK_ENTRY, + ERROR_CANNOT_WRITE_PHONEBOOK, + ERROR_CORRUPT_PHONEBOOK, + ERROR_CANNOT_LOAD_STRING, + ERROR_KEY_NOT_FOUND, + ERROR_DISCONNECTION, + ERROR_REMOTE_DISCONNECTION, + ERROR_HARDWARE_FAILURE, + ERROR_USER_DISCONNECTION, + ERROR_INVALID_SIZE, + ERROR_PORT_NOT_AVAILABLE, + ERROR_CANNOT_PROJECT_CLIENT, + ERROR_UNKNOWN, + ERROR_WRONG_DEVICE_ATTACHED, + ERROR_BAD_STRING, + ERROR_REQUEST_TIMEOUT, + ERROR_CANNOT_GET_LANA, + ERROR_NETBIOS_ERROR, + ERROR_SERVER_OUT_OF_RESOURCES, + ERROR_NAME_EXISTS_ON_NET, + ERROR_SERVER_GENERAL_NET_FAILURE, + WARNING_MSG_ALIAS_NOT_ADDED, + ERROR_AUTH_INTERNAL, + ERROR_RESTRICTED_LOGON_HOURS, + ERROR_ACCT_DISABLED, + ERROR_PASSWD_EXPIRED, + ERROR_NO_DIALIN_PERMISSION, + ERROR_SERVER_NOT_RESPONDING, + ERROR_FROM_DEVICE, + ERROR_UNRECOGNIZED_RESPONSE, + ERROR_MACRO_NOT_FOUND, + ERROR_MACRO_NOT_DEFINED, + ERROR_MESSAGE_MACRO_NOT_FOUND, + ERROR_DEFAULTOFF_MACRO_NOT_FOUND, + ERROR_FILE_COULD_NOT_BE_OPENED, + ERROR_DEVICENAME_TOO_LONG, + ERROR_DEVICENAME_NOT_FOUND, + ERROR_NO_RESPONSES, + ERROR_NO_COMMAND_FOUND, + ERROR_WRONG_KEY_SPECIFIED, + ERROR_UNKNOWN_DEVICE_TYPE, + ERROR_ALLOCATING_MEMORY, + ERROR_PORT_NOT_CONFIGURED, + ERROR_DEVICE_NOT_READY, + ERROR_READING_INI_FILE, + ERROR_NO_CONNECTION, + ERROR_BAD_USAGE_IN_INI_FILE, + ERROR_READING_SECTIONNAME, + ERROR_READING_DEVICETYPE, + ERROR_READING_DEVICENAME, + ERROR_READING_USAGE, + ERROR_READING_MAXCONNECTBPS, + ERROR_READING_MAXCARRIERBPS, + ERROR_LINE_BUSY, + ERROR_VOICE_ANSWER, + ERROR_NO_ANSWER, + ERROR_NO_CARRIER, + ERROR_NO_DIALTONE, + ERROR_IN_COMMAND, + ERROR_WRITING_SECTIONNAME, + ERROR_WRITING_DEVICETYPE, + ERROR_WRITING_DEVICENAME, + ERROR_WRITING_MAXCONNECTBPS, + ERROR_WRITING_MAXCARRIERBPS, + ERROR_WRITING_USAGE, + ERROR_WRITING_DEFAULTOFF, + ERROR_READING_DEFAULTOFF, + ERROR_EMPTY_INI_FILE, + ERROR_AUTHENTICATION_FAILURE, + ERROR_PORT_OR_DEVICE, + ERROR_NOT_BINARY_MACRO, + ERROR_DCB_NOT_FOUND, + ERROR_STATE_MACHINES_NOT_STARTED, + ERROR_STATE_MACHINES_ALREADY_STARTED, + ERROR_PARTIAL_RESPONSE_LOOPING, + ERROR_UNKNOWN_RESPONSE_KEY, + ERROR_RECV_BUF_FULL, + ERROR_CMD_TOO_LONG, + ERROR_UNSUPPORTED_BPS, + ERROR_UNEXPECTED_RESPONSE, + ERROR_INTERACTIVE_MODE, + ERROR_BAD_CALLBACK_NUMBER, + ERROR_INVALID_AUTH_STATE, + ERROR_WRITING_INITBPS, + ERROR_X25_DIAGNOSTIC, + ERROR_ACCT_EXPIRED, + ERROR_CHANGING_PASSWORD, + ERROR_OVERRUN, + ERROR_RASMAN_CANNOT_INITIALIZE, + ERROR_BIPLEX_PORT_NOT_AVAILABLE, + ERROR_NO_ACTIVE_ISDN_LINES, + ERROR_NO_ISDN_CHANNELS_AVAILABLE, + ERROR_TOO_MANY_LINE_ERRORS, + ERROR_IP_CONFIGURATION, + ERROR_NO_IP_ADDRESSES, + ERROR_PPP_TIMEOUT, + ERROR_PPP_REMOTE_TERMINATED, + ERROR_PPP_NO_PROTOCOLS_CONFIGURED, + ERROR_PPP_NO_RESPONSE, + ERROR_PPP_INVALID_PACKET, + ERROR_PHONE_NUMBER_TOO_LONG, + ERROR_IPXCP_NO_DIALOUT_CONFIGURED, + ERROR_IPXCP_NO_DIALIN_CONFIGURED, + ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE, + ERROR_ACCESSING_TCPCFGDLL, + ERROR_NO_IP_RAS_ADAPTER, + ERROR_SLIP_REQUIRES_IP, + ERROR_PROJECTION_NOT_COMPLETE, + ERROR_PROTOCOL_NOT_CONFIGURED, + ERROR_PPP_NOT_CONVERGING, + ERROR_PPP_CP_REJECTED, + ERROR_PPP_LCP_TERMINATED, + ERROR_PPP_REQUIRED_ADDRESS_REJECTED, + ERROR_PPP_NCP_TERMINATED, + ERROR_PPP_LOOPBACK_DETECTED, + ERROR_PPP_NO_ADDRESS_ASSIGNED, + ERROR_CANNOT_USE_LOGON_CREDENTIALS, + ERROR_TAPI_CONFIGURATION, + ERROR_NO_LOCAL_ENCRYPTION, + ERROR_NO_REMOTE_ENCRYPTION, + ERROR_REMOTE_REQUIRES_ENCRYPTION, + ERROR_IPXCP_NET_NUMBER_CONFLICT, + ERROR_INVALID_SMM, + ERROR_SMM_UNINITIALIZED, + ERROR_NO_MAC_FOR_PORT, + ERROR_SMM_TIMEOUT, + ERROR_BAD_PHONE_NUMBER, + ERROR_WRONG_MODULE, + ERROR_INVALID_CALLBACK_NUMBER, + ERROR_SCRIPT_SYNTAX, + ERROR_HANGUP_FAILED, + ERROR_BUNDLE_NOT_FOUND, + ERROR_CANNOT_DO_CUSTOMDIAL, + ERROR_DIAL_ALREADY_IN_PROGRESS, + ERROR_RASAUTO_CANNOT_INITIALIZE, + ERROR_CONNECTION_ALREADY_SHARED, + ERROR_SHARING_CHANGE_FAILED, + ERROR_SHARING_ROUTER_INSTALL, + ERROR_SHARE_CONNECTION_FAILED, + ERROR_SHARING_PRIVATE_INSTALL, + ERROR_CANNOT_SHARE_CONNECTION, + ERROR_NO_SMART_CARD_READER, + ERROR_SHARING_ADDRESS_EXISTS, + ERROR_NO_CERTIFICATE, + ERROR_SHARING_MULTIPLE_ADDRESSES, + ERROR_FAILED_TO_ENCRYPT, + ERROR_BAD_ADDRESS_SPECIFIED, + ERROR_CONNECTION_REJECT, + ERROR_CONGESTION, + ERROR_INCOMPATIBLE, + ERROR_NUMBERCHANGED, + ERROR_TEMPFAILURE, + ERROR_BLOCKED, + ERROR_DONOTDISTURB, + ERROR_OUTOFORDER, + ERROR_UNABLE_TO_AUTHENTICATE_SERVER, + ERROR_SMART_CARD_REQUIRED, + ERROR_INVALID_FUNCTION_FOR_ENTRY, + ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND, + ERROR_SHARING_RRAS_CONFLICT, + ERROR_SHARING_NO_PRIVATE_LAN, + ERROR_NO_DIFF_USER_AT_LOGON, + ERROR_NO_REG_CERT_AT_LOGON, + ERROR_OAKLEY_NO_CERT, + ERROR_OAKLEY_AUTH_FAIL, + ERROR_OAKLEY_ATTRIB_FAIL, + ERROR_OAKLEY_GENERAL_PROCESSING, + ERROR_OAKLEY_NO_PEER_CERT, + ERROR_OAKLEY_NO_POLICY, + ERROR_OAKLEY_TIMED_OUT, + ERROR_OAKLEY_ERROR, + ERROR_UNKNOWN_FRAMED_PROTOCOL, + ERROR_WRONG_TUNNEL_TYPE, + ERROR_UNKNOWN_SERVICE_TYPE, + ERROR_CONNECTING_DEVICE_NOT_FOUND, + ERROR_NO_EAPTLS_CERTIFICATE, // = RASBASE+198 + RASBASEEND = ERROR_NO_EAPTLS_CERTIFICATE +} diff --git a/src/core/sys/windows/rassapi.d b/src/core/sys/windows/rassapi.d index d3d4cd5fd3..785dbfbc03 100644 --- a/src/core/sys/windows/rassapi.d +++ b/src/core/sys/windows/rassapi.d @@ -1,219 +1,219 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rassapi.d) - */ -module core.sys.windows.rassapi; - -private import core.sys.windows.lmcons, core.sys.windows.windef; - -// FIXME: check types of constants - -const size_t - RASSAPI_MAX_PHONENUMBER_SIZE = 128, - RASSAPI_MAX_MEDIA_NAME = 16, - RASSAPI_MAX_PORT_NAME = 16, - RASSAPI_MAX_DEVICE_NAME = 128, - RASSAPI_MAX_DEVICETYPE_NAME = 16, - RASSAPI_MAX_PARAM_KEY_SIZE = 32; - -const RASPRIV_NoCallback = 0x01; -const RASPRIV_AdminSetCallback = 0x02; -const RASPRIV_CallerSetCallback = 0x04; -const RASPRIV_DialinPrivilege = 0x08; -const RASPRIV_CallbackType = 0x07; - -enum { - RAS_MODEM_OPERATIONAL = 1, - RAS_MODEM_NOT_RESPONDING, - RAS_MODEM_HARDWARE_FAILURE, - RAS_MODEM_INCORRECT_RESPONSE, - RAS_MODEM_UNKNOWN // = 5 -} - -enum { - RAS_PORT_NON_OPERATIONAL = 1, - RAS_PORT_DISCONNECTED, - RAS_PORT_CALLING_BACK, - RAS_PORT_LISTENING, - RAS_PORT_AUTHENTICATING, - RAS_PORT_AUTHENTICATED, - RAS_PORT_INITIALIZING // = 7 -} - -enum { - MEDIA_UNKNOWN, - MEDIA_SERIAL, - MEDIA_RAS10_SERIAL, - MEDIA_X25, - MEDIA_ISDN -} - -const USER_AUTHENTICATED = 0x0001; -const MESSENGER_PRESENT = 0x0002; -const PPP_CLIENT = 0x0004; -const GATEWAY_ACTIVE = 0x0008; -const REMOTE_LISTEN = 0x0010; -const PORT_MULTILINKED = 0x0020; - -const size_t - RAS_IPADDRESSLEN = 15, - RAS_IPXADDRESSLEN = 22, - RAS_ATADDRESSLEN = 32; - -// FIXME: should these be grouped together? -enum { - RASDOWNLEVEL = 10, - RASADMIN_35 = 35, - RASADMIN_CURRENT = 40 -} - -alias ULONG IPADDR; - -enum RAS_PARAMS_FORMAT { - ParamNumber = 0, - ParamString -} - -union RAS_PARAMS_VALUE { - DWORD Number; - struct _String { - DWORD Length; - PCHAR Data; - } - _String String; -} - -struct RAS_PARAMETERS { - CHAR[RASSAPI_MAX_PARAM_KEY_SIZE] P_Key; - RAS_PARAMS_FORMAT P_Type; - BYTE P_Attributes; - RAS_PARAMS_VALUE P_Value; -} - -struct RAS_USER_0 { - BYTE bfPrivilege; - WCHAR[RASSAPI_MAX_PHONENUMBER_SIZE + 1] szPhoneNumber; -} -alias RAS_USER_0* PRAS_USER_0; - -struct RAS_PORT_0 { - WCHAR[RASSAPI_MAX_PORT_NAME] wszPortName; - WCHAR[RASSAPI_MAX_DEVICETYPE_NAME] wszDeviceType; - WCHAR[RASSAPI_MAX_DEVICE_NAME] wszDeviceName; - WCHAR[RASSAPI_MAX_MEDIA_NAME] wszMediaName; - DWORD reserved; - DWORD Flags; - WCHAR[UNLEN + 1] wszUserName; - WCHAR[NETBIOS_NAME_LEN] wszComputer; - DWORD dwStartSessionTime; // seconds from 1/1/1970 - WCHAR[DNLEN + 1] wszLogonDomain; - BOOL fAdvancedServer; -} -alias RAS_PORT_0* PRAS_PORT_0; - -struct RAS_PPP_NBFCP_RESULT { - DWORD dwError; - DWORD dwNetBiosError; - CHAR[NETBIOS_NAME_LEN + 1] szName; - WCHAR[NETBIOS_NAME_LEN + 1] wszWksta; -} - -struct RAS_PPP_IPCP_RESULT { - DWORD dwError; - WCHAR[RAS_IPADDRESSLEN + 1] wszAddress; -} - -struct RAS_PPP_IPXCP_RESULT { - DWORD dwError; - WCHAR[RAS_IPXADDRESSLEN + 1] wszAddress; -} - -struct RAS_PPP_ATCP_RESULT { - DWORD dwError; - WCHAR[RAS_ATADDRESSLEN + 1] wszAddress; -} - -struct RAS_PPP_PROJECTION_RESULT { - RAS_PPP_NBFCP_RESULT nbf; - RAS_PPP_IPCP_RESULT ip; - RAS_PPP_IPXCP_RESULT ipx; - RAS_PPP_ATCP_RESULT at; -} - -struct RAS_PORT_1 { - RAS_PORT_0 rasport0; - DWORD LineCondition; - DWORD HardwareCondition; - DWORD LineSpeed; - WORD NumStatistics; - WORD NumMediaParms; - DWORD SizeMediaParms; - RAS_PPP_PROJECTION_RESULT ProjResult; -} -alias RAS_PORT_1* PRAS_PORT_1; - -struct RAS_PORT_STATISTICS { - DWORD dwBytesXmited; - DWORD dwBytesRcved; - DWORD dwFramesXmited; - DWORD dwFramesRcved; - DWORD dwCrcErr; - DWORD dwTimeoutErr; - DWORD dwAlignmentErr; - DWORD dwHardwareOverrunErr; - DWORD dwFramingErr; - DWORD dwBufferOverrunErr; - DWORD dwBytesXmitedUncompressed; - DWORD dwBytesRcvedUncompressed; - DWORD dwBytesXmitedCompressed; - DWORD dwBytesRcvedCompressed; - DWORD dwPortBytesXmited; - DWORD dwPortBytesRcved; - DWORD dwPortFramesXmited; - DWORD dwPortFramesRcved; - DWORD dwPortCrcErr; - DWORD dwPortTimeoutErr; - DWORD dwPortAlignmentErr; - DWORD dwPortHardwareOverrunErr; - DWORD dwPortFramingErr; - DWORD dwPortBufferOverrunErr; - DWORD dwPortBytesXmitedUncompressed; - DWORD dwPortBytesRcvedUncompressed; - DWORD dwPortBytesXmitedCompressed; - DWORD dwPortBytesRcvedCompressed; -} -alias RAS_PORT_STATISTICS* PRAS_PORT_STATISTICS; - -struct RAS_SERVER_0 { - WORD TotalPorts; - WORD PortsInUse; - DWORD RasVersion; -} -alias RAS_SERVER_0* PRAS_SERVER_0; - -extern (Windows) { - DWORD RasAdminServerGetInfo(const(WCHAR)*, PRAS_SERVER_0); - DWORD RasAdminGetUserAccountServer(const(WCHAR)*, const(WCHAR)*, LPWSTR); - DWORD RasAdminUserGetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); - DWORD RasAdminUserSetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); - DWORD RasAdminPortEnum(WCHAR*, PRAS_PORT_0*, WORD*); - DWORD RasAdminPortGetInfo(const(WCHAR)*, const(WCHAR)*, RAS_PORT_1*, - RAS_PORT_STATISTICS*, RAS_PARAMETERS**); - DWORD RasAdminPortClearStatistics(const(WCHAR)*, const(WCHAR)*); - DWORD RasAdminPortDisconnect(const(WCHAR)*, const(WCHAR)*); - DWORD RasAdminFreeBuffer(PVOID); - DWORD RasAdminGetErrorString(UINT, WCHAR*, DWORD); - BOOL RasAdminAcceptNewConnection(RAS_PORT_1*, RAS_PORT_STATISTICS*, - RAS_PARAMETERS*); - VOID RasAdminConnectionHangupNotification(RAS_PORT_1*, - RAS_PORT_STATISTICS*, RAS_PARAMETERS*); - DWORD RasAdminGetIpAddressForUser (WCHAR*, WCHAR*, IPADDR*, BOOL*); - VOID RasAdminReleaseIpAddress (WCHAR*, WCHAR*,IPADDR*); - DWORD RasAdminGetUserParms(WCHAR*, PRAS_USER_0); - DWORD RasAdminSetUserParms(WCHAR*, DWORD, PRAS_USER_0); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rassapi.d) + */ +module core.sys.windows.rassapi; + +private import core.sys.windows.lmcons, core.sys.windows.windef; + +// FIXME: check types of constants + +const size_t + RASSAPI_MAX_PHONENUMBER_SIZE = 128, + RASSAPI_MAX_MEDIA_NAME = 16, + RASSAPI_MAX_PORT_NAME = 16, + RASSAPI_MAX_DEVICE_NAME = 128, + RASSAPI_MAX_DEVICETYPE_NAME = 16, + RASSAPI_MAX_PARAM_KEY_SIZE = 32; + +const RASPRIV_NoCallback = 0x01; +const RASPRIV_AdminSetCallback = 0x02; +const RASPRIV_CallerSetCallback = 0x04; +const RASPRIV_DialinPrivilege = 0x08; +const RASPRIV_CallbackType = 0x07; + +enum { + RAS_MODEM_OPERATIONAL = 1, + RAS_MODEM_NOT_RESPONDING, + RAS_MODEM_HARDWARE_FAILURE, + RAS_MODEM_INCORRECT_RESPONSE, + RAS_MODEM_UNKNOWN // = 5 +} + +enum { + RAS_PORT_NON_OPERATIONAL = 1, + RAS_PORT_DISCONNECTED, + RAS_PORT_CALLING_BACK, + RAS_PORT_LISTENING, + RAS_PORT_AUTHENTICATING, + RAS_PORT_AUTHENTICATED, + RAS_PORT_INITIALIZING // = 7 +} + +enum { + MEDIA_UNKNOWN, + MEDIA_SERIAL, + MEDIA_RAS10_SERIAL, + MEDIA_X25, + MEDIA_ISDN +} + +const USER_AUTHENTICATED = 0x0001; +const MESSENGER_PRESENT = 0x0002; +const PPP_CLIENT = 0x0004; +const GATEWAY_ACTIVE = 0x0008; +const REMOTE_LISTEN = 0x0010; +const PORT_MULTILINKED = 0x0020; + +const size_t + RAS_IPADDRESSLEN = 15, + RAS_IPXADDRESSLEN = 22, + RAS_ATADDRESSLEN = 32; + +// FIXME: should these be grouped together? +enum { + RASDOWNLEVEL = 10, + RASADMIN_35 = 35, + RASADMIN_CURRENT = 40 +} + +alias ULONG IPADDR; + +enum RAS_PARAMS_FORMAT { + ParamNumber = 0, + ParamString +} + +union RAS_PARAMS_VALUE { + DWORD Number; + struct _String { + DWORD Length; + PCHAR Data; + } + _String String; +} + +struct RAS_PARAMETERS { + CHAR[RASSAPI_MAX_PARAM_KEY_SIZE] P_Key; + RAS_PARAMS_FORMAT P_Type; + BYTE P_Attributes; + RAS_PARAMS_VALUE P_Value; +} + +struct RAS_USER_0 { + BYTE bfPrivilege; + WCHAR[RASSAPI_MAX_PHONENUMBER_SIZE + 1] szPhoneNumber; +} +alias RAS_USER_0* PRAS_USER_0; + +struct RAS_PORT_0 { + WCHAR[RASSAPI_MAX_PORT_NAME] wszPortName; + WCHAR[RASSAPI_MAX_DEVICETYPE_NAME] wszDeviceType; + WCHAR[RASSAPI_MAX_DEVICE_NAME] wszDeviceName; + WCHAR[RASSAPI_MAX_MEDIA_NAME] wszMediaName; + DWORD reserved; + DWORD Flags; + WCHAR[UNLEN + 1] wszUserName; + WCHAR[NETBIOS_NAME_LEN] wszComputer; + DWORD dwStartSessionTime; // seconds from 1/1/1970 + WCHAR[DNLEN + 1] wszLogonDomain; + BOOL fAdvancedServer; +} +alias RAS_PORT_0* PRAS_PORT_0; + +struct RAS_PPP_NBFCP_RESULT { + DWORD dwError; + DWORD dwNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szName; + WCHAR[NETBIOS_NAME_LEN + 1] wszWksta; +} + +struct RAS_PPP_IPCP_RESULT { + DWORD dwError; + WCHAR[RAS_IPADDRESSLEN + 1] wszAddress; +} + +struct RAS_PPP_IPXCP_RESULT { + DWORD dwError; + WCHAR[RAS_IPXADDRESSLEN + 1] wszAddress; +} + +struct RAS_PPP_ATCP_RESULT { + DWORD dwError; + WCHAR[RAS_ATADDRESSLEN + 1] wszAddress; +} + +struct RAS_PPP_PROJECTION_RESULT { + RAS_PPP_NBFCP_RESULT nbf; + RAS_PPP_IPCP_RESULT ip; + RAS_PPP_IPXCP_RESULT ipx; + RAS_PPP_ATCP_RESULT at; +} + +struct RAS_PORT_1 { + RAS_PORT_0 rasport0; + DWORD LineCondition; + DWORD HardwareCondition; + DWORD LineSpeed; + WORD NumStatistics; + WORD NumMediaParms; + DWORD SizeMediaParms; + RAS_PPP_PROJECTION_RESULT ProjResult; +} +alias RAS_PORT_1* PRAS_PORT_1; + +struct RAS_PORT_STATISTICS { + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwBytesXmitedUncompressed; + DWORD dwBytesRcvedUncompressed; + DWORD dwBytesXmitedCompressed; + DWORD dwBytesRcvedCompressed; + DWORD dwPortBytesXmited; + DWORD dwPortBytesRcved; + DWORD dwPortFramesXmited; + DWORD dwPortFramesRcved; + DWORD dwPortCrcErr; + DWORD dwPortTimeoutErr; + DWORD dwPortAlignmentErr; + DWORD dwPortHardwareOverrunErr; + DWORD dwPortFramingErr; + DWORD dwPortBufferOverrunErr; + DWORD dwPortBytesXmitedUncompressed; + DWORD dwPortBytesRcvedUncompressed; + DWORD dwPortBytesXmitedCompressed; + DWORD dwPortBytesRcvedCompressed; +} +alias RAS_PORT_STATISTICS* PRAS_PORT_STATISTICS; + +struct RAS_SERVER_0 { + WORD TotalPorts; + WORD PortsInUse; + DWORD RasVersion; +} +alias RAS_SERVER_0* PRAS_SERVER_0; + +extern (Windows) { + DWORD RasAdminServerGetInfo(const(WCHAR)*, PRAS_SERVER_0); + DWORD RasAdminGetUserAccountServer(const(WCHAR)*, const(WCHAR)*, LPWSTR); + DWORD RasAdminUserGetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); + DWORD RasAdminUserSetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); + DWORD RasAdminPortEnum(WCHAR*, PRAS_PORT_0*, WORD*); + DWORD RasAdminPortGetInfo(const(WCHAR)*, const(WCHAR)*, RAS_PORT_1*, + RAS_PORT_STATISTICS*, RAS_PARAMETERS**); + DWORD RasAdminPortClearStatistics(const(WCHAR)*, const(WCHAR)*); + DWORD RasAdminPortDisconnect(const(WCHAR)*, const(WCHAR)*); + DWORD RasAdminFreeBuffer(PVOID); + DWORD RasAdminGetErrorString(UINT, WCHAR*, DWORD); + BOOL RasAdminAcceptNewConnection(RAS_PORT_1*, RAS_PORT_STATISTICS*, + RAS_PARAMETERS*); + VOID RasAdminConnectionHangupNotification(RAS_PORT_1*, + RAS_PORT_STATISTICS*, RAS_PARAMETERS*); + DWORD RasAdminGetIpAddressForUser (WCHAR*, WCHAR*, IPADDR*, BOOL*); + VOID RasAdminReleaseIpAddress (WCHAR*, WCHAR*,IPADDR*); + DWORD RasAdminGetUserParms(WCHAR*, PRAS_USER_0); + DWORD RasAdminSetUserParms(WCHAR*, DWORD, PRAS_USER_0); +} diff --git a/src/core/sys/windows/reason.d b/src/core/sys/windows/reason.d index 58591eaec4..ccf68484f7 100644 --- a/src/core/sys/windows/reason.d +++ b/src/core/sys/windows/reason.d @@ -1,62 +1,62 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_reason.d) - */ -module core.sys.windows.reason; - -private import core.sys.windows.w32api, core.sys.windows.windef; - -static assert (_WIN32_WINNT >= 0x501, - "core.sys.windows.reason is only available on WindowsXP and later"); - - -enum : DWORD { - SHTDN_REASON_MAJOR_OTHER = 0x00000000, - SHTDN_REASON_MAJOR_HARDWARE = 0x00010000, - SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000, - SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000, - SHTDN_REASON_MAJOR_APPLICATION = 0x00040000, - SHTDN_REASON_MAJOR_SYSTEM = 0x00050000, - SHTDN_REASON_MAJOR_POWER = 0x00060000, - SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 -} - -enum : DWORD { - SHTDN_REASON_MINOR_OTHER, - SHTDN_REASON_MINOR_MAINTENANCE, - SHTDN_REASON_MINOR_INSTALLATION, - SHTDN_REASON_MINOR_UPGRADE, - SHTDN_REASON_MINOR_RECONFIG, - SHTDN_REASON_MINOR_HUNG, - SHTDN_REASON_MINOR_UNSTABLE, - SHTDN_REASON_MINOR_DISK, - SHTDN_REASON_MINOR_PROCESSOR, - SHTDN_REASON_MINOR_NETWORKCARD, - SHTDN_REASON_MINOR_POWER_SUPPLY, - SHTDN_REASON_MINOR_CORDUNPLUGGED, - SHTDN_REASON_MINOR_ENVIRONMENT, - SHTDN_REASON_MINOR_HARDWARE_DRIVER, - SHTDN_REASON_MINOR_OTHERDRIVER, - SHTDN_REASON_MINOR_BLUESCREEN, - SHTDN_REASON_MINOR_SERVICEPACK, - SHTDN_REASON_MINOR_HOTFIX, - SHTDN_REASON_MINOR_SECURITYFIX, - SHTDN_REASON_MINOR_SECURITY, - SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY, - SHTDN_REASON_MINOR_WMI, - SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL, - SHTDN_REASON_MINOR_HOTFIX_UNINSTALL, - SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL, - SHTDN_REASON_MINOR_MMC, // = 0x00000019 - SHTDN_REASON_MINOR_TERMSRV = 0x00000020 -} - -enum : DWORD { - SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000, - SHTDN_REASON_FLAG_PLANNED = 0x80000000 -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_reason.d) + */ +module core.sys.windows.reason; + +private import core.sys.windows.w32api, core.sys.windows.windef; + +static assert (_WIN32_WINNT >= 0x501, + "core.sys.windows.reason is only available on WindowsXP and later"); + + +enum : DWORD { + SHTDN_REASON_MAJOR_OTHER = 0x00000000, + SHTDN_REASON_MAJOR_HARDWARE = 0x00010000, + SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000, + SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000, + SHTDN_REASON_MAJOR_APPLICATION = 0x00040000, + SHTDN_REASON_MAJOR_SYSTEM = 0x00050000, + SHTDN_REASON_MAJOR_POWER = 0x00060000, + SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 +} + +enum : DWORD { + SHTDN_REASON_MINOR_OTHER, + SHTDN_REASON_MINOR_MAINTENANCE, + SHTDN_REASON_MINOR_INSTALLATION, + SHTDN_REASON_MINOR_UPGRADE, + SHTDN_REASON_MINOR_RECONFIG, + SHTDN_REASON_MINOR_HUNG, + SHTDN_REASON_MINOR_UNSTABLE, + SHTDN_REASON_MINOR_DISK, + SHTDN_REASON_MINOR_PROCESSOR, + SHTDN_REASON_MINOR_NETWORKCARD, + SHTDN_REASON_MINOR_POWER_SUPPLY, + SHTDN_REASON_MINOR_CORDUNPLUGGED, + SHTDN_REASON_MINOR_ENVIRONMENT, + SHTDN_REASON_MINOR_HARDWARE_DRIVER, + SHTDN_REASON_MINOR_OTHERDRIVER, + SHTDN_REASON_MINOR_BLUESCREEN, + SHTDN_REASON_MINOR_SERVICEPACK, + SHTDN_REASON_MINOR_HOTFIX, + SHTDN_REASON_MINOR_SECURITYFIX, + SHTDN_REASON_MINOR_SECURITY, + SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY, + SHTDN_REASON_MINOR_WMI, + SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL, + SHTDN_REASON_MINOR_HOTFIX_UNINSTALL, + SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL, + SHTDN_REASON_MINOR_MMC, // = 0x00000019 + SHTDN_REASON_MINOR_TERMSRV = 0x00000020 +} + +enum : DWORD { + SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000, + SHTDN_REASON_FLAG_PLANNED = 0x80000000 +} diff --git a/src/core/sys/windows/regstr.d b/src/core/sys/windows/regstr.d index 17bbd816bd..de56eb5bdc 100644 --- a/src/core/sys/windows/regstr.d +++ b/src/core/sys/windows/regstr.d @@ -1,815 +1,815 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_regstr.d) - */ -module core.sys.windows.regstr; - -// TODO: fix possible conflict with shloj. Sort out NEC_98 issue. - -private import core.sys.windows.windef; - -const REGSTR_MAX_VALUE_LENGTH = 256; - -enum { - IT_COMPACT = 0, - IT_TYPICAL, - IT_PORTABLE, - IT_CUSTOM // = 3 -} - -const DOSOPTGF_DEFCLEAN = 1; - -const DOSOPTF_DEFAULT = 0x01; -const DOSOPTF_SUPPORTED = 0x02; -const DOSOPTF_ALWAYSUSE = 0x04; -const DOSOPTF_USESPMODE = 0x08; -const DOSOPTF_PROVIDESUMB = 0x10; -const DOSOPTF_NEEDSETUP = 0x20; -const DOSOPTF_INDOSSTART = 0x40; -const DOSOPTF_MULTIPLE = 0x80; - -const SUF_FIRSTTIME = 0x0001; -const SUF_EXPRESS = 0x0002; -const SUF_BATCHINF = 0x0004; -const SUF_CLEAN = 0x0008; -const SUF_INSETUP = 0x0010; -const SUF_NETSETUP = 0x0020; -const SUF_NETHDBOOT = 0x0040; -const SUF_NETRPLBOOT = 0x0080; -const SUF_SBSCOPYOK = 0x0100; - -const VPDF_DISABLEPWRMGMT = 1; -const VPDF_FORCEAPM10MODE = 2; -const VPDF_SKIPINTELSLCHECK = 4; -const VPDF_DISABLEPWRSTATUSPOLL = 8; - -const PCMCIA_OPT_HAVE_SOCKET = 0x01; -const PCMCIA_OPT_AUTOMEM = 0x04; -const PCMCIA_OPT_NO_SOUND = 0x08; -const PCMCIA_OPT_NO_AUDIO = 0x10; -const PCMCIA_OPT_NO_APMREMOVE = 0x20; - -const PCMCIA_DEF_MEMBEGIN = 0x0C0000; -const PCMCIA_DEF_MEMEND = 0xFFFFFF; -const PCMCIA_DEF_MEMLEN = 0x001000; -const PCMCIA_DEF_MIN_REGION = 0x010000; - -enum { - PCI_OPTIONS_USE_BIOS = 1, - PCI_OPTIONS_USE_IRQ_STEERING = 2 -} - -const PCI_FLAG_NO_VIDEO_IRQ = 0x0001; -const PCI_FLAG_PCMCIA_WANT_IRQ = 0x0002; -const PCI_FLAG_DUAL_IDE = 0x0004; -const PCI_FLAG_NO_ENUM_AT_ALL = 0x0008; -const PCI_FLAG_ENUM_NO_RESOURCE = 0x0010; -const PCI_FLAG_NEED_DWORD_ACCESS = 0x0020; -const PCI_FLAG_SINGLE_FUNCTION = 0x0040; -const PCI_FLAG_ALWAYS_ENABLED = 0x0080; -const PCI_FLAG_IS_IDE = 0x0100; -const PCI_FLAG_IS_VIDEO = 0x0200; -const PCI_FLAG_FAIL_START = 0x0400; - -const size_t REGSTR_VAL_MAX_HCID_LEN = 1024; - -const REGDF_NOTDETIO = 0x00000001; -const REGDF_NOTDETMEM = 0x00000002; -const REGDF_NOTDETIRQ = 0x00000004; -const REGDF_NOTDETDMA = 0x00000008; -const REGDF_NOTDETALL = REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA; -const REGDF_NEEDFULLCONFIG = 0x00000010; -const REGDF_GENFORCEDCONFIG = 0x00000020; -const REGDF_NODETCONFIG = 0x00008000; -const REGDF_CONFLICTIO = 0x00010000; -const REGDF_CONFLICTMEM = 0x00020000; -const REGDF_CONFLICTIRQ = 0x00040000; -const REGDF_CONFLICTDMA = 0x00080000; -const REGDF_CONFLICTALL = REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA; -const REGDF_MAPIRQ2TO9 = 0x00100000; -const REGDF_NOTVERIFIED = 0x80000000; - -const CONFIGFLAG_DISABLED = 0x0001; -const CONFIGFLAG_REMOVED = 0x0002; -const CONFIGFLAG_MANUAL_INSTALL = 0x0004; -const CONFIGFLAG_IGNORE_BOOT_LC = 0x0008; -const CONFIGFLAG_NET_BOOT = 0x0010; -const CONFIGFLAG_REINSTALL = 0x0020; -const CONFIGFLAG_FAILEDINSTALL = 0x0040; -const CONFIGFLAG_CANTSTOPACHILD = 0x0080; -const CONFIGFLAG_OKREMOVEROM = 0x0100; -const CONFIGFLAG_NOREMOVEEXIT = 0x0200; - -const CSCONFIGFLAG_DISABLED = 1; -const CSCONFIGFLAG_DO_NOT_CREATE = 2; -const CSCONFIGFLAG_DO_NOT_START = 4; -const CSCONFIGFLAG_BITS = 7; - -const DMSTATEFLAG_APPLYTOALL = 1; - -const NUM_RESOURCE_MAP = 256; - -const MF_FLAGS_EVEN_IF_NO_RESOURCE = 1; -const MF_FLAGS_NO_CREATE_IF_NO_RESOURCE = 2; -const MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE = 4; -const MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED = 8; - -const EISAFLAG_NO_IO_MERGE = 1; -const EISAFLAG_SLOT_IO_FIRST = 2; - -const EISA_NO_MAX_FUNCTION = 0xFF; - -const NUM_EISA_RANGES = 4; - -const APMMENUSUSPEND_DISABLED = 0; -const APMMENUSUSPEND_ENABLED = 1; -const APMMENUSUSPEND_UNDOCKED = 2; -const APMMENUSUSPEND_NOCHANGE = 128; - -//#ifndef NEC_98 -const TCHAR[] - REGSTR_KEY_ISAENUM = "ISAPnP", - REGSTR_KEY_EISAENUM = "EISA", - REGSTR_VAL_EISA_RANGES = "EISARanges", - REGSTR_VAL_EISA_FUNCTIONS = "EISAFunctions", - REGSTR_VAL_EISA_FUNCTIONS_MASK = "EISAFunctionsMask", - REGSTR_VAL_EISA_FLAGS = "EISAFlags", - REGSTR_VAL_EISA_SIMULATE_INT15 = "EISASimulateInt15"; -// #else -// #define REGSTR_KEY_ISAENUM TEXT("C98PnP") -// #define REGSTR_KEY_EISAENUM TEXT("NESA") -// #define REGSTR_VAL_EISA_RANGES TEXT("NESARanges") -// #define REGSTR_VAL_EISA_FUNCTIONS TEXT("NESAFunctions") -// #define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("NESAFunctionsMask") -// #define REGSTR_VAL_EISA_FLAGS TEXT("NESAFlags") -// #define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("NESASimulateInt15") -// #endif - -const TCHAR[] - REGSTR_KEY_CLASS = `Class`, - REGSTR_KEY_CONFIG = `Config`, - REGSTR_KEY_ENUM = `Enum`, - REGSTR_KEY_ROOTENUM = `Root`, - REGSTR_KEY_BIOSENUM = `BIOS`, - REGSTR_KEY_PCMCIAENUM = `PCMCIA`, - REGSTR_KEY_PCIENUM = `PCI`, - REGSTR_KEY_LOGCONFIG = `LogConfig`, - REGSTR_KEY_SYSTEMBOARD = `*PNP0C01`, - REGSTR_KEY_APM = `*PNP0C05`, - REGSTR_KEY_INIUPDATE = `IniUpdate`, - REG_KEY_INSTDEV = `Installed`, - REGSTR_KEY_DOSOPTCDROM = `CD-ROM`, - REGSTR_KEY_DOSOPTMOUSE = `MOUSE`, - REGSTR_DEFAULT_INSTANCE = `0000`, - REGSTR_PATH_MOTHERBOARD = REGSTR_KEY_SYSTEMBOARD ~ `\` ~ REGSTR_DEFAULT_INSTANCE, - REGSTR_PATH_SETUP = `Software\Microsoft\Windows\CurrentVersion`, - REGSTR_PATH_PIFCONVERT = `Software\Microsoft\Windows\CurrentVersion\PIFConvert`, - REGSTR_PATH_MSDOSOPTS = `Software\Microsoft\Windows\CurrentVersion\MS-DOSOptions`, - REGSTR_PATH_MSDOSEMU = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation`, - REGSTR_PATH_NEWDOSBOX = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\AppCompat`, - REGSTR_PATH_RUNONCE = `Software\Microsoft\Windows\CurrentVersion\RunOnce`, - REGSTR_PATH_RUN = `Software\Microsoft\Windows\CurrentVersion\Run`, - REGSTR_PATH_RUNSERVICESONCE = `Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`, - REGSTR_PATH_RUNSERVICES = `Software\Microsoft\Windows\CurrentVersion\RunServices`, - -//#ifndef REGSTR_PATH_EXPLORER /* also in shlobj.h */ - REGSTR_PATH_EXPLORER = `Software\Microsoft\Windows\CurrentVersion\Explorer`, -//#endif - - REGSTR_PATH_DETECT = `Software\Microsoft\Windows\CurrentVersion\Detect`, - REGSTR_PATH_APPPATHS = `Software\Microsoft\Windows\CurrentVersion\App Paths`, - REGSTR_PATH_UNINSTALL = `Software\Microsoft\Windows\CurrentVersion\Uninstall`, - REGSTR_PATH_REALMODENET = `Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net`, - REGSTR_PATH_NETEQUIV = `Software\Microsoft\Windows\CurrentVersion\Network\Equivalent`, - REGSTR_PATH_CVNETWORK = `Software\Microsoft\Windows\CurrentVersion\Network`, - REGSTR_PATH_IDCONFIGDB = `System\CurrentControlSet\Control\IDConfigDB`, - REGSTR_PATH_CLASS = `System\CurrentControlSet\Services\Class`, - REGSTR_PATH_DISPLAYSETTINGS = `Display\Settings`, - REGSTR_PATH_FONTS = `Display\Fonts`, - REGSTR_PATH_ENUM = `Enum`, - REGSTR_PATH_ROOT = `Enum\Root`, - REGSTR_PATH_SERVICES = `System\CurrentControlSet\Services`, - REGSTR_PATH_VXD = `System\CurrentControlSet\Services\VxD`, - REGSTR_PATH_IOS = `System\CurrentControlSet\Services\VxD\IOS`, - REGSTR_PATH_VMM = `System\CurrentControlSet\Services\VxD\VMM`, - REGSTR_PATH_VPOWERD = `System\CurrentControlSet\Services\VxD\VPOWERD`, - REGSTR_PATH_VNETSUP = `System\CurrentControlSet\Services\VxD\VNETSUP`, - REGSTR_PATH_NWREDIR = `System\CurrentControlSet\Services\VxD\NWREDIR`, - REGSTR_PATH_NCPSERVER = `System\CurrentControlSet\Services\NcpServer\Parameters`, - REGSTR_PATH_IOARB = `System\CurrentControlSet\Services\Arbitrators\IOArb`, - REGSTR_PATH_ADDRARB = `System\CurrentControlSet\Services\Arbitrators\AddrArb`, - REGSTR_PATH_DMAARB = `System\CurrentControlSet\Services\Arbitrators\DMAArb`, - REGSTR_PATH_IRQARB = `System\CurrentControlSet\Services\Arbitrators\IRQArb`, - REGSTR_PATH_CODEPAGE = `System\CurrentControlSet\Control\Nls\Codepage`, - REGSTR_PATH_FILESYSTEM = `System\CurrentControlSet\Control\FileSystem`, - REGSTR_PATH_FILESYSTEM_NOVOLTRACK = `System\CurrentControlSet\Control\FileSystem\NoVolTrack`, - REGSTR_PATH_CDFS = `System\CurrentControlSet\Control\FileSystem\CDFS`, - REGSTR_PATH_WINBOOT = `System\CurrentControlSet\Control\WinBoot`, - REGSTR_PATH_INSTALLEDFILES = `System\CurrentControlSet\Control\InstalledFiles`, - REGSTR_PATH_VMM32FILES = `System\CurrentControlSet\Control\VMM32Files`, - - REGSTR_VAL_BITSPERPIXEL = `BitsPerPixel`, - REGSTR_VAL_RESOLUTION = `Resolution`, - REGSTR_VAL_DPILOGICALX = `DPILogicalX`, - REGSTR_VAL_DPILOGICALY = `DPILogicalY`, - REGSTR_VAL_DPIPHYSICALX = `DPIPhysicalX`, - REGSTR_VAL_DPIPHYSICALY = `DPIPhysicalY`, - REGSTR_VAL_REFRESHRATE = `RefreshRate`, - REGSTR_VAL_DISPLAYFLAGS = `DisplayFlags`, - REGSTR_PATH_CONTROLPANEL = `Control Panel`, - REGSTR_PATH_CONTROLSFOLDER = `Software\Microsoft\Windows\CurrentVersion\Controls Folder`, - REGSTR_VAL_DOSCP = `OEMCP`, - REGSTR_VAL_WINCP = `ACP`, - REGSTR_PATH_DYNA_ENUM = `Config Manager\Enum`, - REGSTR_VAL_HARDWARE_KEY = `HardWareKey`, - REGSTR_VAL_ALLOCATION = `Allocation`, - REGSTR_VAL_PROBLEM = `Problem`, - REGSTR_VAL_STATUS = `Status`, - REGSTR_VAL_DONTUSEMEM = `DontAllocLastMem`, - REGSTR_VAL_SYSTEMROOT = `SystemRoot`, - REGSTR_VAL_BOOTCOUNT = `BootCount`, - REGSTR_VAL_REALNETSTART = `RealNetStart`, - REGSTR_VAL_MEDIA = `MediaPath`, - REGSTR_VAL_CONFIG = `ConfigPath`, - REGSTR_VAL_DEVICEPATH = `DevicePath`, - REGSTR_VAL_SRCPATH = `SourcePath`, - REGSTR_VAL_OLDWINDIR = `OldWinDir`, - REGSTR_VAL_SETUPFLAGS = `SetupFlags`, - REGSTR_VAL_REGOWNER = `RegisteredOwner`, - REGSTR_VAL_REGORGANIZATION = `RegisteredOrganization`, - REGSTR_VAL_LICENSINGINFO = `LicensingInfo`, - REGSTR_VAL_OLDMSDOSVER = `OldMSDOSVer`, - REGSTR_VAL_FIRSTINSTALLDATETIME = `FirstInstallDateTime`, - REGSTR_VAL_INSTALLTYPE = `InstallType`, - REGSTR_VAL_WRAPPER = `Wrapper`, - - REGSTR_KEY_SETUP = `\Setup`, - REGSTR_VAL_BOOTDIR = `BootDir`, - REGSTR_VAL_WINBOOTDIR = `WinbootDir`, - REGSTR_VAL_WINDIR = `WinDir`, - REGSTR_VAL_APPINSTPATH = `AppInstallPath`, - REGSTR_PATH_EBD = REGSTR_PATH_SETUP ~ REGSTR_KEY_SETUP ~ `\EBD`, - REGSTR_KEY_EBDFILESLOCAL = `EBDFilesLocale`, - REGSTR_KEY_EBDFILESKEYBOARD = `EBDFilesKeyboard`, - REGSTR_KEY_EBDAUTOEXECBATLOCAL = `EBDAutoexecBatLocale`, - REGSTR_KEY_EBDAUTOEXECBATKEYBOARD = `EBDAutoexecBatKeyboard`, - REGSTR_KEY_EBDCONFIGSYSLOCAL = `EBDConfigSysLocale`, - REGSTR_KEY_EBDCONFIGSYSKEYBOARD = `EBDConfigSysKeyboard`, - REGSTR_VAL_MSDOSMODE = `MSDOSMode`, - REGSTR_VAL_MSDOSMODEDISCARD = `Discard`, - REGSTR_VAL_DOSOPTGLOBALFLAGS = `GlobalFlags`, - REGSTR_VAL_DOSOPTFLAGS = `Flags`, - REGSTR_VAL_OPTORDER = `Order`, - REGSTR_VAL_CONFIGSYS = `Config.Sys`, - REGSTR_VAL_AUTOEXEC = `Autoexec.Bat`, - REGSTR_VAL_STDDOSOPTION = `StdOption`, - REGSTR_VAL_DOSOPTTIP = `TipText`, - - REGSTR_VAL_DOSPAGER = `DOSPager`, - REGSTR_VAL_VXDGROUPS = `VXDGroups`, - REGSTR_VAL_VPOWERDFLAGS = `Flags`, - - REGSTR_VAL_WORKGROUP = `Workgroup`, - REGSTR_VAL_DIRECTHOST = `DirectHost`, - REGSTR_VAL_FILESHARING = `FileSharing`, - REGSTR_VAL_PRINTSHARING = `PrintSharing`, - REGSTR_VAL_FIRSTNETDRIVE = `FirstNetworkDrive`, - REGSTR_VAL_MAXCONNECTIONS = `MaxConnections`, - REGSTR_VAL_APISUPPORT = `APISupport`, - REGSTR_VAL_MAXRETRY = `MaxRetry`, - REGSTR_VAL_MINRETRY = `MinRetry`, - REGSTR_VAL_SUPPORTLFN = `SupportLFN`, - REGSTR_VAL_SUPPORTBURST = `SupportBurst`, - REGSTR_VAL_SUPPORTTUNNELLING = `SupportTunnelling`, - REGSTR_VAL_FULLTRACE = `FullTrace`, - REGSTR_VAL_READCACHING = `ReadCaching`, - REGSTR_VAL_SHOWDOTS = `ShowDots`, - REGSTR_VAL_GAPTIME = `GapTime`, - REGSTR_VAL_SEARCHMODE = `SearchMode`, - REGSTR_VAL_SHELLVERSION = `ShellVersion`, - REGSTR_VAL_MAXLIP = `MaxLIP`, - REGSTR_VAL_PRESERVECASE = `PreserveCase`, - REGSTR_VAL_OPTIMIZESFN = `OptimizeSFN`, - REGSTR_VAL_NCP_BROWSEMASTER = `BrowseMaster`, - REGSTR_VAL_NCP_USEPEERBROWSING = `Use_PeerBrowsing`, - REGSTR_VAL_NCP_USESAP = `Use_Sap`, - REGSTR_VAL_WIN31FILESYSTEM = `Win31FileSystem`, - REGSTR_VAL_PRESERVELONGNAMES = `PreserveLongNames`, - REGSTR_VAL_DRIVEWRITEBEHIND = `DriveWriteBehind`, - REGSTR_VAL_ASYNCFILECOMMIT = `AsyncFileCommit`, - REGSTR_VAL_PATHCACHECOUNT = `PathCache`, - REGSTR_VAL_NAMECACHECOUNT = `NameCache`, - REGSTR_VAL_CONTIGFILEALLOC = `ContigFileAllocSize`, - REGSTR_VAL_VOLIDLETIMEOUT = `VolumeIdleTimeout`, - REGSTR_VAL_BUFFIDLETIMEOUT = `BufferIdleTimeout`, - REGSTR_VAL_BUFFAGETIMEOUT = `BufferAgeTimeout`, - REGSTR_VAL_NAMENUMERICTAIL = `NameNumericTail`, - REGSTR_VAL_READAHEADTHRESHOLD = `ReadAheadThreshold`, - REGSTR_VAL_DOUBLEBUFFER = `DoubleBuffer`, - REGSTR_VAL_SOFTCOMPATMODE = `SoftCompatMode`, - REGSTR_VAL_DRIVESPINDOWN = `DriveSpinDown`, - REGSTR_VAL_FORCEPMIO = `ForcePMIO`, - REGSTR_VAL_FORCERMIO = `ForceRMIO`, - REGSTR_VAL_LASTBOOTPMDRVS = `LastBootPMDrvs`, - REGSTR_VAL_VIRTUALHDIRQ = `VirtualHDIRQ`, - REGSTR_VAL_SRVNAMECACHECOUNT = `ServerNameCacheMax`, - REGSTR_VAL_SRVNAMECACHE = `ServerNameCache`, - REGSTR_VAL_SRVNAMECACHENETPROV = `ServerNameCacheNumNets`, - REGSTR_VAL_AUTOMOUNT = `AutoMountDrives`, - REGSTR_VAL_COMPRESSIONMETHOD = `CompressionAlgorithm`, - REGSTR_VAL_COMPRESSIONTHRESHOLD = `CompressionThreshold`, - REGSTR_VAL_CDCACHESIZE = `CacheSize`, - REGSTR_VAL_CDPREFETCH = `Prefetch`, - REGSTR_VAL_CDPREFETCHTAIL = `PrefetchTail`, - REGSTR_VAL_CDRAWCACHE = `RawCache`, - REGSTR_VAL_CDEXTERRORS = `ExtendedErrors`, - REGSTR_VAL_CDSVDSENSE = `SVDSense`, - REGSTR_VAL_CDSHOWVERSIONS = `ShowVersions`, - REGSTR_VAL_CDCOMPATNAMES = `MSCDEXCompatNames`, - REGSTR_VAL_CDNOREADAHEAD = `NoReadAhead`, - REGSTR_VAL_SCSI = `SCSI\`, - REGSTR_VAL_ESDI = `ESDI\`, - REGSTR_VAL_FLOP = `FLOP\`, - REGSTR_VAL_DISK = `GenDisk`, - REGSTR_VAL_CDROM = `GenCD`, - REGSTR_VAL_TAPE = `TAPE`, - REGSTR_VAL_SCANNER = `SCANNER`, - REGSTR_VAL_FLOPPY = `FLOPPY`, - REGSTR_VAL_SCSITID = `SCSITargetID`, - REGSTR_VAL_SCSILUN = `SCSILUN`, - REGSTR_VAL_REVLEVEL = `RevisionLevel`, - REGSTR_VAL_PRODUCTID = `ProductId`, - REGSTR_VAL_PRODUCTTYPE = `ProductType`, - REGSTR_VAL_DEVTYPE = `DeviceType`, - REGSTR_VAL_REMOVABLE = `Removable`, - REGSTR_VAL_CURDRVLET = `CurrentDriveLetterAssignment`, - REGSTR_VAL_USRDRVLET = `UserDriveLetterAssignment`, - REGSTR_VAL_SYNCDATAXFER = `SyncDataXfer`, - REGSTR_VAL_AUTOINSNOTE = `AutoInsertNotification`, - REGSTR_VAL_DISCONNECT = `Disconnect`, - REGSTR_VAL_INT13 = `Int13`, - REGSTR_VAL_PMODE_INT13 = `PModeInt13`, - REGSTR_VAL_USERSETTINGS = `AdapterSettings`, - REGSTR_VAL_NOIDE = `NoIDE`, - REGSTR_VAL_DISKCLASSNAME = `DiskDrive`, - REGSTR_VAL_CDROMCLASSNAME = `CDROM`, - REGSTR_VAL_FORCELOAD = `ForceLoadPD`, - REGSTR_VAL_FORCEFIFO = `ForceFIFO`, - REGSTR_VAL_FORCECL = `ForceChangeLine`, - REGSTR_VAL_NOUSECLASS = `NoUseClass`, - REGSTR_VAL_NOINSTALLCLASS = `NoInstallClass`, - REGSTR_VAL_NODISPLAYCLASS = `NoDisplayClass`, - REGSTR_VAL_SILENTINSTALL = `SilentInstall`, - REGSTR_KEY_PCMCIA_CLASS = `PCMCIA`, - REGSTR_KEY_SCSI_CLASS = `SCSIAdapter`, - REGSTR_KEY_PORTS_CLASS = `ports`, - REGSTR_KEY_MEDIA_CLASS = `MEDIA`, - REGSTR_KEY_DISPLAY_CLASS = `Display`, - REGSTR_KEY_KEYBOARD_CLASS = `Keyboard`, - REGSTR_KEY_MOUSE_CLASS = `Mouse`, - REGSTR_KEY_MONITOR_CLASS = `Monitor`, - REGSTR_VAL_PCMCIA_OPT = `Options`, - REGSTR_VAL_PCMCIA_MEM = `Memory`, - REGSTR_VAL_PCMCIA_ALLOC = `AllocMemWin`, - REGSTR_VAL_PCMCIA_ATAD = `ATADelay`, - REGSTR_VAL_PCMCIA_SIZ = `MinRegionSize`, - REGSTR_VAL_P1284MDL = `Model`, - REGSTR_VAL_P1284MFG = `Manufacturer`, - REGSTR_VAL_ISAPNP = `ISAPNP`, - REGSTR_VAL_ISAPNP_RDP_OVERRIDE = `RDPOverRide`, - REGSTR_VAL_PCI = `PCI`, - REGSTR_PCI_OPTIONS = `Options`, - REGSTR_PCI_DUAL_IDE = `PCIDualIDE`, - - REGSTR_KEY_CRASHES = `Crashes`, - REGSTR_KEY_DANGERS = `Dangers`, - REGSTR_KEY_DETMODVARS = `DetModVars`, - REGSTR_KEY_NDISINFO = `NDISInfo`, - REGSTR_VAL_PROTINIPATH = `ProtIniPath`, - REGSTR_VAL_RESOURCES = `Resources`, - REGSTR_VAL_CRASHFUNCS = `CrashFuncs`, - REGSTR_VAL_CLASS = `Class`, - REGSTR_VAL_DEVDESC = `DeviceDesc`, - REGSTR_VAL_BOOTCONFIG = `BootConfig`, - REGSTR_VAL_DETFUNC = `DetFunc`, - REGSTR_VAL_DETFLAGS = `DetFlags`, - REGSTR_VAL_COMPATIBLEIDS = `CompatibleIDs`, - REGSTR_VAL_DETCONFIG = `DetConfig`, - REGSTR_VAL_VERIFYKEY = `VerifyKey`, - REGSTR_VAL_COMINFO = `ComInfo`, - REGSTR_VAL_INFNAME = `InfName`, - REGSTR_VAL_CARDSPECIFIC = `CardSpecific`, - REGSTR_VAL_NETOSTYPE = `NetOSType`, - REGSTR_DATA_NETOS_NDIS = `NDIS`, - REGSTR_DATA_NETOS_ODI = `ODI`, - REGSTR_DATA_NETOS_IPX = `IPX`, - REGSTR_VAL_MFG = `Mfg`, - REGSTR_VAL_SCAN_ONLY_FIRST = `ScanOnlyFirstDrive`, - REGSTR_VAL_SHARE_IRQ = `ForceIRQSharing`, - REGSTR_VAL_NONSTANDARD_ATAPI = `NonStandardATAPI`, - REGSTR_VAL_IDE_FORCE_SERIALIZE = `ForceSerialization`, - REGSTR_VAL_HWREV = `HWRevision`, - REGSTR_VAL_ENABLEINTS = `EnableInts`, - - REGSTR_VAL_APMBIOSVER = `APMBiosVer`, - REGSTR_VAL_APMFLAGS = `APMFlags`, - REGSTR_VAL_SLSUPPORT = `SLSupport`, - REGSTR_VAL_MACHINETYPE = `MachineType`, - REGSTR_VAL_SETUPMACHINETYPE = `SetupMachineType`, - REGSTR_MACHTYPE_UNKNOWN = `Unknown`, - REGSTR_MACHTYPE_IBMPC = `IBM PC`, - REGSTR_MACHTYPE_IBMPCJR = `IBM PCjr`, - REGSTR_MACHTYPE_IBMPCCONV = `IBM PC Convertible`, - REGSTR_MACHTYPE_IBMPCXT = `IBM PC/XT`, - REGSTR_MACHTYPE_IBMPCXT_286 = `IBM PC/XT 286`, - REGSTR_MACHTYPE_IBMPCAT = `IBM PC/AT`, - REGSTR_MACHTYPE_IBMPS2_25 = `IBM PS/2-25`, - REGSTR_MACHTYPE_IBMPS2_30_286 = `IBM PS/2-30 286`, - REGSTR_MACHTYPE_IBMPS2_30 = `IBM PS/2-30`, - REGSTR_MACHTYPE_IBMPS2_50 = `IBM PS/2-50`, - REGSTR_MACHTYPE_IBMPS2_50Z = `IBM PS/2-50Z`, - REGSTR_MACHTYPE_IBMPS2_55SX = `IBM PS/2-55SX`, - REGSTR_MACHTYPE_IBMPS2_60 = `IBM PS/2-60`, - REGSTR_MACHTYPE_IBMPS2_65SX = `IBM PS/2-65SX`, - REGSTR_MACHTYPE_IBMPS2_70 = `IBM PS/2-70`, - REGSTR_MACHTYPE_IBMPS2_P70 = `IBM PS/2-P70`, - REGSTR_MACHTYPE_IBMPS2_70_80 = `IBM PS/2-70/80`, - REGSTR_MACHTYPE_IBMPS2_80 = `IBM PS/2-80`, - REGSTR_MACHTYPE_IBMPS2_90 = `IBM PS/2-90`, - REGSTR_MACHTYPE_IBMPS1 = `IBM PS/1`, - REGSTR_MACHTYPE_PHOENIX_PCAT = `Phoenix PC/AT Compatible`, - REGSTR_MACHTYPE_HP_VECTRA = `HP Vectra`, - REGSTR_MACHTYPE_ATT_PC = `AT&T PC`, - REGSTR_MACHTYPE_ZENITH_PC = `Zenith PC`, - REGSTR_VAL_APMMENUSUSPEND = `APMMenuSuspend`, - - REGSTR_VAL_BUSTYPE = `BusType`, - REGSTR_VAL_CPU = `CPU`, - REGSTR_VAL_NDP = `NDP`, - REGSTR_VAL_PNPBIOSVER = `PnPBIOSVer`, - REGSTR_VAL_PNPSTRUCOFFSET = `PnPStrucOffset`, - REGSTR_VAL_PCIBIOSVER = `PCIBIOSVer`, - REGSTR_VAL_HWMECHANISM = `HWMechanism`, - REGSTR_VAL_LASTPCIBUSNUM = `LastPCIBusNum`, - REGSTR_VAL_CONVMEM = `ConvMem`, - REGSTR_VAL_EXTMEM = `ExtMem`, - REGSTR_VAL_COMPUTERNAME = `ComputerName`, - REGSTR_VAL_BIOSNAME = `BIOSName`, - REGSTR_VAL_BIOSVERSION = `BIOSVersion`, - REGSTR_VAL_BIOSDATE = `BIOSDate`, - REGSTR_VAL_MODEL = `Model`, - REGSTR_VAL_SUBMODEL = `Submodel`, - REGSTR_VAL_REVISION = `Revision`, - REGSTR_VAL_FIFODEPTH = `FIFODepth`, - REGSTR_VAL_RDINTTHRESHOLD = `RDIntThreshold`, - REGSTR_VAL_WRINTTHRESHOLD = `WRIntThreshold`, - REGSTR_VAL_PRIORITY = `Priority`, - REGSTR_VAL_DRIVER = `Driver`, - REGSTR_VAL_FUNCDESC = `FunctionDesc`, - REGSTR_VAL_FORCEDCONFIG = `ForcedConfig`, - REGSTR_VAL_CONFIGFLAGS = `ConfigFlags`, - REGSTR_VAL_CSCONFIGFLAGS = `CSConfigFlags`, - - REGSTR_VAL_ROOT_DEVNODE = `HTREE\ROOT\0`, - REGSTR_VAL_RESERVED_DEVNODE = `HTREE\RESERVED\0`, - REGSTR_PATH_READDATAPORT = REGSTR_KEY_ISAENUM ~ `\ReadDataPort\0`, - REGSTR_PATH_MULTI_FUNCTION = `MF`, - REGSTR_VAL_RESOURCE_MAP = `ResourceMap`, - REGSTR_PATH_CHILD_PREFIX = `Child`, - REGSTR_VAL_MF_FLAGS = `MFFlags`, - REGSTR_VAL_DRVDESC = `DriverDesc`, - REGSTR_VAL_DEVLOADER = `DevLoader`, - REGSTR_VAL_STATICVXD = `StaticVxD`, - REGSTR_VAL_PROPERTIES = `Properties`, - REGSTR_VAL_MANUFACTURER = `Manufacturer`, - REGSTR_VAL_EXISTS = `Exists`, - REGSTR_VAL_CMENUMFLAGS = `CMEnumFlags`, - REGSTR_VAL_CMDRIVFLAGS = `CMDrivFlags`, - REGSTR_VAL_ENUMERATOR = `Enumerator`, - REGSTR_VAL_DEVICEDRIVER = `DeviceDriver`, - REGSTR_VAL_PORTNAME = `PortName`, - REGSTR_VAL_INFPATH = `InfPath`, - REGSTR_VAL_INFSECTION = `InfSection`, - REGSTR_VAL_POLLING = `Polling`, - REGSTR_VAL_DONTLOADIFCONFLICT = `DontLoadIfConflict`, - REGSTR_VAL_PORTSUBCLASS = `PortSubClass`, - REGSTR_VAL_NETCLEAN = `NetClean`, - REGSTR_VAL_IDE_NO_SERIALIZE = `IDENoSerialize`, - REGSTR_VAL_NOCMOSORFDPT = `NoCMOSorFDPT`, - REGSTR_VAL_COMVERIFYBASE = `COMVerifyBase`, - REGSTR_KEY_OVERRIDE = `Override`, - REGSTR_VAL_CONFIGMG = `CONFIGMG`, - REGSTR_VAL_SYSDM = `SysDM`, - REGSTR_VAL_SYSDMFUNC = `SysDMFunc`, - REGSTR_VAL_PRIVATE = `Private`, - REGSTR_VAL_PRIVATEFUNC = `PrivateFunc`, - REGSTR_VAL_DETECT = `Detect`, - REGSTR_VAL_DETECTFUNC = `DetectFunc`, - REGSTR_VAL_ASKFORCONFIG = `AskForConfig`, - REGSTR_VAL_ASKFORCONFIGFUNC = `AskForConfigFunc`, - REGSTR_VAL_WAITFORUNDOCK = `WaitForUndock`, - REGSTR_VAL_WAITFORUNDOCKFUNC = `WaitForUndockFunc`, - REGSTR_VAL_REMOVEROMOKAY = `RemoveRomOkay`, - REGSTR_VAL_REMOVEROMOKAYFUNC = `RemoveRomOkayFunc`, - REGSTR_VAL_CURCONFIG = `CurrentConfig`, - REGSTR_VAL_FRIENDLYNAME = `FriendlyName`, - REGSTR_VAL_CURRENTCONFIG = `CurrentConfig`, - REGSTR_VAL_MAP = `Map`, - REGSTR_VAL_ID = `CurrentID`, - REGSTR_VAL_DOCKED = `CurrentDockedState`, - REGSTR_VAL_CHECKSUM = `CurrentChecksum`, - REGSTR_VAL_HWDETECT = `HardwareDetect`, - REGSTR_VAL_INHIBITRESULTS = `InhibitResults`, - REGSTR_VAL_PROFILEFLAGS = `ProfileFlags`, - REGSTR_KEY_PCMCIA = `PCMCIA\`, - REGSTR_KEY_PCUNKNOWN = `UNKNOWN_MANUFACTURER`, - REGSTR_VAL_PCSSDRIVER = `Driver`, - REGSTR_KEY_PCMTD = `MTD-`, - REGSTR_VAL_PCMTDRIVER = `MTD`, - REGSTR_VAL_HARDWAREID = `HardwareID`, - REGSTR_VAL_INSTALLER = `Installer`, - REGSTR_VAL_INSICON = `Icon`, - REGSTR_VAL_ENUMPROPPAGES = `EnumPropPages`, - REGSTR_VAL_BASICPROPERTIES = `BasicProperties`, - REGSTR_VAL_PRIVATEPROBLEM = `PrivateProblem`, - REGSTR_KEY_CURRENT = `Current`, - REGSTR_KEY_DEFAULT = `Default`, - REGSTR_KEY_MODES = `Modes`, - REGSTR_VAL_MODE = `Mode`, - REGSTR_VAL_BPP = `BPP`, - REGSTR_VAL_HRES = `HRes`, - REGSTR_VAL_VRES = `VRes`, - REGSTR_VAL_FONTSIZE = `FontSize`, - REGSTR_VAL_DRV = `drv`, - REGSTR_VAL_GRB = `grb`, - REGSTR_VAL_VDD = `vdd`, - REGSTR_VAL_VER = `Ver`, - REGSTR_VAL_MAXRES = `MaxResolution`, - REGSTR_VAL_DPMS = `DPMS`, - REGSTR_VAL_RESUMERESET = `ResumeReset`, - REGSTR_VAL_DESCRIPTION = `Description`, - REGSTR_KEY_SYSTEM = `System`, - REGSTR_KEY_USER = `User`, - REGSTR_VAL_DPI = `dpi`, - REGSTR_VAL_PCICOPTIONS = `PCICOptions`, - - REGSTR_VAL_PCICIRQMAP = `PCICIRQMap`, - REGSTR_PATH_APPEARANCE = `Control Panel\Appearance`, - REGSTR_PATH_LOOKSCHEMES = `Control Panel\Appearance\Schemes`, - REGSTR_VAL_CUSTOMCOLORS = `CustomColors`, - REGSTR_PATH_SCREENSAVE = `Control Panel\Desktop`, - REGSTR_VALUE_USESCRPASSWORD = `ScreenSaveUsePassword`, - REGSTR_VALUE_SCRPASSWORD = `ScreenSave_Data`, - REGSTR_VALUE_LOWPOWERTIMEOUT = `ScreenSaveLowPowerTimeout`, - REGSTR_VALUE_POWEROFFTIMEOUT = `ScreenSavePowerOffTimeout`, - REGSTR_VALUE_LOWPOWERACTIVE = `ScreenSaveLowPowerActive`, - REGSTR_VALUE_POWEROFFACTIVE = `ScreenSavePowerOffActive`, - REGSTR_PATH_WINDOWSAPPLETS = `Software\Microsoft\Windows\CurrentVersion\Applets`, - REGSTR_PATH_SYSTRAY = `Software\Microsoft\Windows\CurrentVersion\Applets\SysTray`, - REGSTR_VAL_SYSTRAYSVCS = `Services`, - REGSTR_VAL_SYSTRAYBATFLAGS = `PowerFlags`, - REGSTR_VAL_SYSTRAYPCCARDFLAGS = `PCMCIAFlags`, - REGSTR_PATH_NETWORK_USERSETTINGS = `Network`, - REGSTR_KEY_NETWORK_PERSISTENT = `\Persistent`, - REGSTR_KEY_NETWORK_RECENT = `\Recent`, - REGSTR_VAL_REMOTE_PATH = `RemotePath`, - REGSTR_VAL_USER_NAME = `UserName`, - REGSTR_VAL_PROVIDER_NAME = `ProviderName`, - REGSTR_VAL_CONNECTION_TYPE = `ConnectionType`, - REGSTR_VAL_UPGRADE = `Upgrade`, - REGSTR_KEY_LOGON = `\Logon`, - REGSTR_VAL_MUSTBEVALIDATED = `MustBeValidated`, - REGSTR_VAL_RUNLOGINSCRIPT = `ProcessLoginScript`, - REGSTR_KEY_NETWORKPROVIDER = `\NetworkProvider`, - REGSTR_PATH_NW32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\NWNP32` ~ REGSTR_KEY_NETWORKPROVIDER, - REGSTR_PATH_MS32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\MSNP32` ~ REGSTR_KEY_NETWORKPROVIDER, - REGSTR_VAL_AUTHENT_AGENT = `AuthenticatingAgent`, - REGSTR_VAL_PREFREDIR = `PreferredRedir`, - REGSTR_VAL_AUTOSTART = `AutoStart`, - REGSTR_VAL_AUTOLOGON = `AutoLogon`, - REGSTR_VAL_NETCARD = `Netcard`, - REGSTR_VAL_TRANSPORT = `Transport`, - REGSTR_VAL_DYNAMIC = `Dynamic`, - REGSTR_VAL_TRANSITION = `Transition`, - REGSTR_VAL_STATICDRIVE = `StaticDrive`, - REGSTR_VAL_LOADHI = `LoadHi`, - REGSTR_VAL_LOADRMDRIVERS = `LoadRMDrivers`, - REGSTR_VAL_SETUPN = `SetupN`, - REGSTR_VAL_SETUPNPATH = `SetupNPath`, - REGSTR_VAL_WRKGRP_FORCEMAPPING = `WrkgrpForceMapping`, - REGSTR_VAL_WRKGRP_REQUIRED = `WrkgrpRequired`, - REGSTR_PATH_CURRENT_CONTROL_SET = `System\CurrentControlSet\Control`, - REGSTR_VAL_CURRENT_USER = `Current User`, - REGSTR_PATH_PWDPROVIDER = `System\CurrentControlSet\Control\PwdProvider`, - REGSTR_VAL_PWDPROVIDER_PATH = `ProviderPath`, - REGSTR_VAL_PWDPROVIDER_DESC = `Description`, - REGSTR_VAL_PWDPROVIDER_CHANGEPWD = `ChangePassword`, - REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND = `ChangePasswordHwnd`, - REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS = `GetPasswordStatus`, - REGSTR_VAL_PWDPROVIDER_ISNP = `NetworkProvider`, - REGSTR_VAL_PWDPROVIDER_CHANGEORDER = `ChangeOrder`, - REGSTR_PATH_POLICIES = `Software\Microsoft\Windows\CurrentVersion\Policies`, - REGSTR_PATH_UPDATE = `System\CurrentControlSet\Control\Update`, - REGSTR_VALUE_ENABLE = `Enable`, - REGSTR_VALUE_VERBOSE = `Verbose`, - REGSTR_VALUE_NETPATH = `NetworkPath`, - REGSTR_VALUE_DEFAULTLOC = `UseDefaultNetLocation`, - REGSTR_KEY_NETWORK = `Network`, -// [Redefined] REGSTR_KEY_SYSTEM = `System`) - REGSTR_KEY_PRINTERS = `Printers`, - REGSTR_KEY_WINOLDAPP = `WinOldApp`, - REGSTR_VAL_NOFILESHARING = `NoFileSharing`, - REGSTR_VAL_NOPRINTSHARING = `NoPrintSharing`, - REGSTR_VAL_NOFILESHARINGCTRL = `NoFileSharingControl`, - REGSTR_VAL_NOPRINTSHARINGCTRL = `NoPrintSharingControl`, - REGSTR_VAL_HIDESHAREPWDS = `HideSharePwds`, - REGSTR_VAL_DISABLEPWDCACHING = `DisablePwdCaching`, - REGSTR_VAL_ALPHANUMPWDS = `AlphanumPwds`, - REGSTR_VAL_NETSETUP_DISABLE = `NoNetSetup`, - REGSTR_VAL_NETSETUP_NOCONFIGPAGE = `NoNetSetupConfigPage`, - REGSTR_VAL_NETSETUP_NOIDPAGE = `NoNetSetupIDPage`, - REGSTR_VAL_NETSETUP_NOSECURITYPAGE = `NoNetSetupSecurityPage`, - REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE = `NoVirtMemPage`, - REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE = `NoDevMgrPage`, - REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE = `NoConfigPage`, - REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE = `NoFileSysPage`, - REGSTR_VAL_DISPCPL_NODISPCPL = `NoDispCPL`, - REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE = `NoDispBackgroundPage`, - REGSTR_VAL_DISPCPL_NOSCRSAVPAGE = `NoDispScrSavPage`, - REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE = `NoDispAppearancePage`, - REGSTR_VAL_DISPCPL_NOSETTINGSPAGE = `NoDispSettingsPage`, - REGSTR_VAL_SECCPL_NOSECCPL = `NoSecCPL`, - REGSTR_VAL_SECCPL_NOPWDPAGE = `NoPwdPage`, - REGSTR_VAL_SECCPL_NOADMINPAGE = `NoAdminPage`, - REGSTR_VAL_SECCPL_NOPROFILEPAGE = `NoProfilePage`, - REGSTR_VAL_PRINTERS_HIDETABS = `NoPrinterTabs`, - REGSTR_VAL_PRINTERS_NODELETE = `NoDeletePrinter`, - REGSTR_VAL_PRINTERS_NOADD = `NoAddPrinter`, - REGSTR_VAL_WINOLDAPP_DISABLED = `Disabled`, - REGSTR_VAL_WINOLDAPP_NOREALMODE = `NoRealMode`, - REGSTR_VAL_NOENTIRENETWORK = `NoEntireNetwork`, - REGSTR_VAL_NOWORKGROUPCONTENTS = `NoWorkgroupContents`, - REGSTR_VAL_MINPWDLEN = `MinPwdLen`, - REGSTR_VAL_PWDEXPIRATION = `PwdExpiration`, - REGSTR_VAL_WIN31PROVIDER = `Win31Provider`, - REGSTR_VAL_DISABLEREGTOOLS = `DisableRegistryTools`, - REGSTR_PATH_WINLOGON = `Software\Microsoft\Windows\CurrentVersion\Winlogon`, - REGSTR_VAL_LEGALNOTICECAPTION = `LegalNoticeCaption`, - REGSTR_VAL_LEGALNOTICETEXT = `LegalNoticeText`, - REGSTR_VAL_RESTRICTRUN = `RestrictRun`, - REGSTR_KEY_POL_USERS = `Users`, - REGSTR_KEY_POL_COMPUTERS = `Computers`, - REGSTR_KEY_POL_USERGROUPS = `UserGroups`, - REGSTR_KEY_POL_DEFAULT = `.default`, - REGSTR_KEY_POL_USERGROUPDATA = `GroupData\UserGroups\Priority`, - REGSTR_PATH_TIMEZONE = `System\CurrentControlSet\Control\TimeZoneInformation`, - REGSTR_VAL_TZBIAS = `Bias`, - REGSTR_VAL_TZDLTBIAS = `DaylightBias`, - REGSTR_VAL_TZSTDBIAS = `StandardBias`, - REGSTR_VAL_TZACTBIAS = `ActiveTimeBias`, - REGSTR_VAL_TZDLTFLAG = `DaylightFlag`, - REGSTR_VAL_TZSTDSTART = `StandardStart`, - REGSTR_VAL_TZDLTSTART = `DaylightStart`, - REGSTR_VAL_TZDLTNAME = `DaylightName`, - REGSTR_VAL_TZSTDNAME = `StandardName`, - REGSTR_VAL_TZNOCHANGESTART = `NoChangeStart`, - REGSTR_VAL_TZNOCHANGEEND = `NoChangeEnd`, - REGSTR_VAL_TZNOAUTOTIME = `DisableAutoDaylightTimeSet`, - REGSTR_PATH_FLOATINGPOINTPROCESSOR = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor`, - REGSTR_PATH_FLOATINGPOINTPROCESSOR0 = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0`, - REGSTR_PATH_COMPUTRNAME = `System\CurrentControlSet\Control\ComputerName\ComputerName`, - REGSTR_VAL_COMPUTRNAME = `ComputerName`, - REGSTR_PATH_SHUTDOWN = `System\CurrentControlSet\Control\Shutdown`, - REGSTR_VAL_FORCEREBOOT = `ForceReboot`, - REGSTR_VAL_SETUPPROGRAMRAN = `SetupProgramRan`, - REGSTR_VAL_DOES_POLLING = `PollingSupportNeeded`, - REGSTR_PATH_KNOWNDLLS = `System\CurrentControlSet\Control\SessionManager\KnownDLLs`, - REGSTR_PATH_KNOWN16DLLS = `System\CurrentControlSet\Control\SessionManager\Known16DLLs`, - REGSTR_PATH_CHECKVERDLLS = `System\CurrentControlSet\Control\SessionManager\CheckVerDLLs`, - REGSTR_PATH_WARNVERDLLS = `System\CurrentControlSet\Control\SessionManager\WarnVerDLLs`, - REGSTR_PATH_HACKINIFILE = `System\CurrentControlSet\Control\SessionManager\HackIniFiles`, - REGSTR_PATH_CHECKBADAPPS = `System\CurrentControlSet\Control\SessionManager\CheckBadApps`, - REGSTR_PATH_APPPATCH = `System\CurrentControlSet\Control\SessionManager\AppPatches`, - REGSTR_PATH_KNOWNVXDS = `System\CurrentControlSet\Control\SessionManager\KnownVxDs`, - REGSTR_VAL_UNINSTALLER_DISPLAYNAME = `DisplayName`, - REGSTR_VAL_UNINSTALLER_COMMANDLINE = `UninstallString`, - REGSTR_PATH_DESKTOP = REGSTR_PATH_SCREENSAVE, - REGSTR_PATH_MOUSE = `Control Panel\Mouse`, - REGSTR_PATH_KEYBOARD = `Control Panel\Keyboard`, - REGSTR_PATH_COLORS = `Control Panel\Colors`, - REGSTR_PATH_SOUND = `Control Panel\Sound`, - REGSTR_PATH_METRICS = `Control Panel\Desktop\WindowMetrics`, - REGSTR_PATH_ICONS = `Control Panel\Icons`, - REGSTR_PATH_CURSORS = `Control Panel\Cursors`, - REGSTR_PATH_CHECKDISK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive`, - REGSTR_PATH_CHECKDISKSET = `Settings`, - REGSTR_PATH_CHECKDISKUDRVS = `NoUnknownDDErrDrvs`, - REGSTR_PATH_FAULT = `Software\Microsoft\Windows\CurrentVersion\Fault`, - REGSTR_VAL_FAULT_LOGFILE = `LogFile`, - REGSTR_PATH_AEDEBUG = `Software\Microsoft\Windows NT\CurrentVersion\AeDebug`, - REGSTR_VAL_AEDEBUG_DEBUGGER = `Debugger`, - REGSTR_VAL_AEDEBUG_AUTO = `Auto`, - REGSTR_PATH_GRPCONV = `Software\Microsoft\Windows\CurrentVersion\GrpConv`, - REGSTR_VAL_REGITEMDELETEMESSAGE = `Removal Message`, - REGSTR_PATH_LASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastCheck`, - REGSTR_PATH_LASTOPTIMIZE = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastOptimize`, - REGSTR_PATH_LASTBACKUP = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastBackup`, - REGSTR_PATH_CHKLASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastCheck`, - REGSTR_PATH_CHKLASTSURFAN = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastSurfaceAnalysis`, - REGSTR_KEY_SHARES = `Software\Microsoft\Windows\CurrentVersion\Network\LanMan`, - REGSTR_VAL_SHARES_FLAGS = `Flags`, - REGSTR_VAL_SHARES_TYPE = `Type`, - REGSTR_VAL_SHARES_PATH = `Path`, - REGSTR_VAL_SHARES_REMARK = `Remark`, - REGSTR_VAL_SHARES_RW_PASS = `Parm1`, - REGSTR_VAL_SHARES_RO_PASS = `Parm2`, - REGSTR_PATH_PRINT = `System\CurrentControlSet\Control\Print`, - REGSTR_PATH_PRINTERS = `System\CurrentControlSet\Control\Print\Printers`, - REGSTR_PATH_PROVIDERS = `System\CurrentControlSet\Control\Print\Providers`, - REGSTR_PATH_MONITORS = `System\CurrentControlSet\Control\Print\Monitors`, - REGSTR_PATH_ENVIRONMENTS = `System\CurrentControlSet\Control\Print\Environments`, - REGSTR_VAL_START_ON_BOOT = `StartOnBoot`, - REGSTR_VAL_PRINTERS_MASK = `PrintersMask`, - REGSTR_VAL_DOS_SPOOL_MASK = `DOSSpoolMask`, - REGSTR_KEY_CURRENT_ENV = `\Windows 4.0`, - REGSTR_KEY_DRIVERS = `\Drivers`, - REGSTR_KEY_PRINT_PROC = `\Print Processors`, - REGSTR_PATH_EVENTLABELS = `AppEvents\EventLabels`, - REGSTR_PATH_SCHEMES = `AppEvents\Schemes`, - REGSTR_PATH_APPS = REGSTR_PATH_SCHEMES ~ `\Apps`, - REGSTR_PATH_APPS_DEFAULT = REGSTR_PATH_SCHEMES ~ `\Apps\.Default`, - REGSTR_PATH_NAMES = REGSTR_PATH_SCHEMES ~ `\Names`, - REGSTR_PATH_MULTIMEDIA = REGSTR_PATH_SETUP ~ `\Multimedia`, - REGSTR_PATH_MULTIMEDIA_AUDIO = `Software\Microsoft\Multimedia\Audio`, - REGSTR_PATH_MEDIARESOURCES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaResources`, - REGSTR_PATH_MEDIAPROPERTIES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaProperties`, - REGSTR_PATH_PRIVATEPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PrivateProperties`, - REGSTR_PATH_PUBLICPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PublicProperties`, - REGSTR_PATH_JOYOEM = REGSTR_PATH_PRIVATEPROPERTIES ~ `\Joystick\OEM`, - REGSTR_PATH_JOYCONFIG = REGSTR_PATH_MEDIARESOURCES ~ `\Joystick`, - REGSTR_KEY_JOYCURR = `CurrentJoystickSettings`, - REGSTR_KEY_JOYSETTINGS = `JoystickSettings`, - REGSTR_VAL_JOYUSERVALUES = `JoystickUserValues`, - REGSTR_VAL_JOYCALLOUT = `JoystickCallout`, - REGSTR_VAL_JOYNCONFIG = `Joystick%dConfiguration`, - REGSTR_VAL_JOYNOEMNAME = `Joystick%dOEMName`, - REGSTR_VAL_JOYNOEMCALLOUT = `Joystick%dOEMCallout`, - REGSTR_VAL_JOYOEMCALLOUT = `OEMCallout`, - REGSTR_VAL_JOYOEMNAME = `OEMName`, - REGSTR_VAL_JOYOEMDATA = `OEMData`, - REGSTR_VAL_JOYOEMXYLABEL = `OEMXYLabel`, - REGSTR_VAL_JOYOEMZLABEL = `OEMZLabel`, - REGSTR_VAL_JOYOEMRLABEL = `OEMRLabel`, - REGSTR_VAL_JOYOEMPOVLABEL = `OEMPOVLabel`, - REGSTR_VAL_JOYOEMULABEL = `OEMULabel`, - REGSTR_VAL_JOYOEMVLABEL = `OEMVLabel`, - REGSTR_VAL_JOYOEMTESTMOVEDESC = `OEMTestMoveDesc`, - REGSTR_VAL_JOYOEMTESTBUTTONDESC = `OEMTestButtonDesc`, - REGSTR_VAL_JOYOEMTESTMOVECAP = `OEMTestMoveCap`, - REGSTR_VAL_JOYOEMTESTBUTTONCAP = `OEMTestButtonCap`, - REGSTR_VAL_JOYOEMTESTWINCAP = `OEMTestWinCap`, - REGSTR_VAL_JOYOEMCALCAP = `OEMCalCap`, - REGSTR_VAL_JOYOEMCALWINCAP = `OEMCalWinCap`, - REGSTR_VAL_JOYOEMCAL1 = `OEMCal1`, - REGSTR_VAL_JOYOEMCAL2 = `OEMCal2`, - REGSTR_VAL_JOYOEMCAL3 = `OEMCal3`, - REGSTR_VAL_JOYOEMCAL4 = `OEMCal4`, - REGSTR_VAL_JOYOEMCAL5 = `OEMCal5`, - REGSTR_VAL_JOYOEMCAL6 = `OEMCal6`, - REGSTR_VAL_JOYOEMCAL7 = `OEMCal7`, - REGSTR_VAL_JOYOEMCAL8 = `OEMCal8`, - REGSTR_VAL_JOYOEMCAL9 = `OEMCal9`, - REGSTR_VAL_JOYOEMCAL10 = `OEMCal10`, - REGSTR_VAL_JOYOEMCAL11 = `OEMCal11`, - REGSTR_VAL_JOYOEMCAL12 = `OEMCal12`; - -enum { - DTRESULTOK, - DTRESULTFIX, - DTRESULTPROB, - DTRESULTPART -} - -//#ifndef NEC_98 -const PCIC_DEFAULT_IRQMASK = 0x4EB8; -//#else -//#define PCIC_DEFAULT_IRQMASK 0x1468 -//#endif -const PCIC_DEFAULT_NUMSOCKETS = 0; - -struct DSKTLSYSTEMTIME { - WORD wYear; - WORD wMonth; - WORD wDayOfWeek; - WORD wDay; - WORD wHour; - WORD wMinute; - WORD wSecond; - WORD wMilliseconds; - WORD wResult; -} -alias DSKTLSYSTEMTIME* PDSKTLSYSTEMTIME, LPDSKTLSYSTEMTIME; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_regstr.d) + */ +module core.sys.windows.regstr; + +// TODO: fix possible conflict with shloj. Sort out NEC_98 issue. + +private import core.sys.windows.windef; + +const REGSTR_MAX_VALUE_LENGTH = 256; + +enum { + IT_COMPACT = 0, + IT_TYPICAL, + IT_PORTABLE, + IT_CUSTOM // = 3 +} + +const DOSOPTGF_DEFCLEAN = 1; + +const DOSOPTF_DEFAULT = 0x01; +const DOSOPTF_SUPPORTED = 0x02; +const DOSOPTF_ALWAYSUSE = 0x04; +const DOSOPTF_USESPMODE = 0x08; +const DOSOPTF_PROVIDESUMB = 0x10; +const DOSOPTF_NEEDSETUP = 0x20; +const DOSOPTF_INDOSSTART = 0x40; +const DOSOPTF_MULTIPLE = 0x80; + +const SUF_FIRSTTIME = 0x0001; +const SUF_EXPRESS = 0x0002; +const SUF_BATCHINF = 0x0004; +const SUF_CLEAN = 0x0008; +const SUF_INSETUP = 0x0010; +const SUF_NETSETUP = 0x0020; +const SUF_NETHDBOOT = 0x0040; +const SUF_NETRPLBOOT = 0x0080; +const SUF_SBSCOPYOK = 0x0100; + +const VPDF_DISABLEPWRMGMT = 1; +const VPDF_FORCEAPM10MODE = 2; +const VPDF_SKIPINTELSLCHECK = 4; +const VPDF_DISABLEPWRSTATUSPOLL = 8; + +const PCMCIA_OPT_HAVE_SOCKET = 0x01; +const PCMCIA_OPT_AUTOMEM = 0x04; +const PCMCIA_OPT_NO_SOUND = 0x08; +const PCMCIA_OPT_NO_AUDIO = 0x10; +const PCMCIA_OPT_NO_APMREMOVE = 0x20; + +const PCMCIA_DEF_MEMBEGIN = 0x0C0000; +const PCMCIA_DEF_MEMEND = 0xFFFFFF; +const PCMCIA_DEF_MEMLEN = 0x001000; +const PCMCIA_DEF_MIN_REGION = 0x010000; + +enum { + PCI_OPTIONS_USE_BIOS = 1, + PCI_OPTIONS_USE_IRQ_STEERING = 2 +} + +const PCI_FLAG_NO_VIDEO_IRQ = 0x0001; +const PCI_FLAG_PCMCIA_WANT_IRQ = 0x0002; +const PCI_FLAG_DUAL_IDE = 0x0004; +const PCI_FLAG_NO_ENUM_AT_ALL = 0x0008; +const PCI_FLAG_ENUM_NO_RESOURCE = 0x0010; +const PCI_FLAG_NEED_DWORD_ACCESS = 0x0020; +const PCI_FLAG_SINGLE_FUNCTION = 0x0040; +const PCI_FLAG_ALWAYS_ENABLED = 0x0080; +const PCI_FLAG_IS_IDE = 0x0100; +const PCI_FLAG_IS_VIDEO = 0x0200; +const PCI_FLAG_FAIL_START = 0x0400; + +const size_t REGSTR_VAL_MAX_HCID_LEN = 1024; + +const REGDF_NOTDETIO = 0x00000001; +const REGDF_NOTDETMEM = 0x00000002; +const REGDF_NOTDETIRQ = 0x00000004; +const REGDF_NOTDETDMA = 0x00000008; +const REGDF_NOTDETALL = REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA; +const REGDF_NEEDFULLCONFIG = 0x00000010; +const REGDF_GENFORCEDCONFIG = 0x00000020; +const REGDF_NODETCONFIG = 0x00008000; +const REGDF_CONFLICTIO = 0x00010000; +const REGDF_CONFLICTMEM = 0x00020000; +const REGDF_CONFLICTIRQ = 0x00040000; +const REGDF_CONFLICTDMA = 0x00080000; +const REGDF_CONFLICTALL = REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA; +const REGDF_MAPIRQ2TO9 = 0x00100000; +const REGDF_NOTVERIFIED = 0x80000000; + +const CONFIGFLAG_DISABLED = 0x0001; +const CONFIGFLAG_REMOVED = 0x0002; +const CONFIGFLAG_MANUAL_INSTALL = 0x0004; +const CONFIGFLAG_IGNORE_BOOT_LC = 0x0008; +const CONFIGFLAG_NET_BOOT = 0x0010; +const CONFIGFLAG_REINSTALL = 0x0020; +const CONFIGFLAG_FAILEDINSTALL = 0x0040; +const CONFIGFLAG_CANTSTOPACHILD = 0x0080; +const CONFIGFLAG_OKREMOVEROM = 0x0100; +const CONFIGFLAG_NOREMOVEEXIT = 0x0200; + +const CSCONFIGFLAG_DISABLED = 1; +const CSCONFIGFLAG_DO_NOT_CREATE = 2; +const CSCONFIGFLAG_DO_NOT_START = 4; +const CSCONFIGFLAG_BITS = 7; + +const DMSTATEFLAG_APPLYTOALL = 1; + +const NUM_RESOURCE_MAP = 256; + +const MF_FLAGS_EVEN_IF_NO_RESOURCE = 1; +const MF_FLAGS_NO_CREATE_IF_NO_RESOURCE = 2; +const MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE = 4; +const MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED = 8; + +const EISAFLAG_NO_IO_MERGE = 1; +const EISAFLAG_SLOT_IO_FIRST = 2; + +const EISA_NO_MAX_FUNCTION = 0xFF; + +const NUM_EISA_RANGES = 4; + +const APMMENUSUSPEND_DISABLED = 0; +const APMMENUSUSPEND_ENABLED = 1; +const APMMENUSUSPEND_UNDOCKED = 2; +const APMMENUSUSPEND_NOCHANGE = 128; + +//#ifndef NEC_98 +const TCHAR[] + REGSTR_KEY_ISAENUM = "ISAPnP", + REGSTR_KEY_EISAENUM = "EISA", + REGSTR_VAL_EISA_RANGES = "EISARanges", + REGSTR_VAL_EISA_FUNCTIONS = "EISAFunctions", + REGSTR_VAL_EISA_FUNCTIONS_MASK = "EISAFunctionsMask", + REGSTR_VAL_EISA_FLAGS = "EISAFlags", + REGSTR_VAL_EISA_SIMULATE_INT15 = "EISASimulateInt15"; +// #else +// #define REGSTR_KEY_ISAENUM TEXT("C98PnP") +// #define REGSTR_KEY_EISAENUM TEXT("NESA") +// #define REGSTR_VAL_EISA_RANGES TEXT("NESARanges") +// #define REGSTR_VAL_EISA_FUNCTIONS TEXT("NESAFunctions") +// #define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("NESAFunctionsMask") +// #define REGSTR_VAL_EISA_FLAGS TEXT("NESAFlags") +// #define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("NESASimulateInt15") +// #endif + +const TCHAR[] + REGSTR_KEY_CLASS = `Class`, + REGSTR_KEY_CONFIG = `Config`, + REGSTR_KEY_ENUM = `Enum`, + REGSTR_KEY_ROOTENUM = `Root`, + REGSTR_KEY_BIOSENUM = `BIOS`, + REGSTR_KEY_PCMCIAENUM = `PCMCIA`, + REGSTR_KEY_PCIENUM = `PCI`, + REGSTR_KEY_LOGCONFIG = `LogConfig`, + REGSTR_KEY_SYSTEMBOARD = `*PNP0C01`, + REGSTR_KEY_APM = `*PNP0C05`, + REGSTR_KEY_INIUPDATE = `IniUpdate`, + REG_KEY_INSTDEV = `Installed`, + REGSTR_KEY_DOSOPTCDROM = `CD-ROM`, + REGSTR_KEY_DOSOPTMOUSE = `MOUSE`, + REGSTR_DEFAULT_INSTANCE = `0000`, + REGSTR_PATH_MOTHERBOARD = REGSTR_KEY_SYSTEMBOARD ~ `\` ~ REGSTR_DEFAULT_INSTANCE, + REGSTR_PATH_SETUP = `Software\Microsoft\Windows\CurrentVersion`, + REGSTR_PATH_PIFCONVERT = `Software\Microsoft\Windows\CurrentVersion\PIFConvert`, + REGSTR_PATH_MSDOSOPTS = `Software\Microsoft\Windows\CurrentVersion\MS-DOSOptions`, + REGSTR_PATH_MSDOSEMU = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation`, + REGSTR_PATH_NEWDOSBOX = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\AppCompat`, + REGSTR_PATH_RUNONCE = `Software\Microsoft\Windows\CurrentVersion\RunOnce`, + REGSTR_PATH_RUN = `Software\Microsoft\Windows\CurrentVersion\Run`, + REGSTR_PATH_RUNSERVICESONCE = `Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`, + REGSTR_PATH_RUNSERVICES = `Software\Microsoft\Windows\CurrentVersion\RunServices`, + +//#ifndef REGSTR_PATH_EXPLORER /* also in shlobj.h */ + REGSTR_PATH_EXPLORER = `Software\Microsoft\Windows\CurrentVersion\Explorer`, +//#endif + + REGSTR_PATH_DETECT = `Software\Microsoft\Windows\CurrentVersion\Detect`, + REGSTR_PATH_APPPATHS = `Software\Microsoft\Windows\CurrentVersion\App Paths`, + REGSTR_PATH_UNINSTALL = `Software\Microsoft\Windows\CurrentVersion\Uninstall`, + REGSTR_PATH_REALMODENET = `Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net`, + REGSTR_PATH_NETEQUIV = `Software\Microsoft\Windows\CurrentVersion\Network\Equivalent`, + REGSTR_PATH_CVNETWORK = `Software\Microsoft\Windows\CurrentVersion\Network`, + REGSTR_PATH_IDCONFIGDB = `System\CurrentControlSet\Control\IDConfigDB`, + REGSTR_PATH_CLASS = `System\CurrentControlSet\Services\Class`, + REGSTR_PATH_DISPLAYSETTINGS = `Display\Settings`, + REGSTR_PATH_FONTS = `Display\Fonts`, + REGSTR_PATH_ENUM = `Enum`, + REGSTR_PATH_ROOT = `Enum\Root`, + REGSTR_PATH_SERVICES = `System\CurrentControlSet\Services`, + REGSTR_PATH_VXD = `System\CurrentControlSet\Services\VxD`, + REGSTR_PATH_IOS = `System\CurrentControlSet\Services\VxD\IOS`, + REGSTR_PATH_VMM = `System\CurrentControlSet\Services\VxD\VMM`, + REGSTR_PATH_VPOWERD = `System\CurrentControlSet\Services\VxD\VPOWERD`, + REGSTR_PATH_VNETSUP = `System\CurrentControlSet\Services\VxD\VNETSUP`, + REGSTR_PATH_NWREDIR = `System\CurrentControlSet\Services\VxD\NWREDIR`, + REGSTR_PATH_NCPSERVER = `System\CurrentControlSet\Services\NcpServer\Parameters`, + REGSTR_PATH_IOARB = `System\CurrentControlSet\Services\Arbitrators\IOArb`, + REGSTR_PATH_ADDRARB = `System\CurrentControlSet\Services\Arbitrators\AddrArb`, + REGSTR_PATH_DMAARB = `System\CurrentControlSet\Services\Arbitrators\DMAArb`, + REGSTR_PATH_IRQARB = `System\CurrentControlSet\Services\Arbitrators\IRQArb`, + REGSTR_PATH_CODEPAGE = `System\CurrentControlSet\Control\Nls\Codepage`, + REGSTR_PATH_FILESYSTEM = `System\CurrentControlSet\Control\FileSystem`, + REGSTR_PATH_FILESYSTEM_NOVOLTRACK = `System\CurrentControlSet\Control\FileSystem\NoVolTrack`, + REGSTR_PATH_CDFS = `System\CurrentControlSet\Control\FileSystem\CDFS`, + REGSTR_PATH_WINBOOT = `System\CurrentControlSet\Control\WinBoot`, + REGSTR_PATH_INSTALLEDFILES = `System\CurrentControlSet\Control\InstalledFiles`, + REGSTR_PATH_VMM32FILES = `System\CurrentControlSet\Control\VMM32Files`, + + REGSTR_VAL_BITSPERPIXEL = `BitsPerPixel`, + REGSTR_VAL_RESOLUTION = `Resolution`, + REGSTR_VAL_DPILOGICALX = `DPILogicalX`, + REGSTR_VAL_DPILOGICALY = `DPILogicalY`, + REGSTR_VAL_DPIPHYSICALX = `DPIPhysicalX`, + REGSTR_VAL_DPIPHYSICALY = `DPIPhysicalY`, + REGSTR_VAL_REFRESHRATE = `RefreshRate`, + REGSTR_VAL_DISPLAYFLAGS = `DisplayFlags`, + REGSTR_PATH_CONTROLPANEL = `Control Panel`, + REGSTR_PATH_CONTROLSFOLDER = `Software\Microsoft\Windows\CurrentVersion\Controls Folder`, + REGSTR_VAL_DOSCP = `OEMCP`, + REGSTR_VAL_WINCP = `ACP`, + REGSTR_PATH_DYNA_ENUM = `Config Manager\Enum`, + REGSTR_VAL_HARDWARE_KEY = `HardWareKey`, + REGSTR_VAL_ALLOCATION = `Allocation`, + REGSTR_VAL_PROBLEM = `Problem`, + REGSTR_VAL_STATUS = `Status`, + REGSTR_VAL_DONTUSEMEM = `DontAllocLastMem`, + REGSTR_VAL_SYSTEMROOT = `SystemRoot`, + REGSTR_VAL_BOOTCOUNT = `BootCount`, + REGSTR_VAL_REALNETSTART = `RealNetStart`, + REGSTR_VAL_MEDIA = `MediaPath`, + REGSTR_VAL_CONFIG = `ConfigPath`, + REGSTR_VAL_DEVICEPATH = `DevicePath`, + REGSTR_VAL_SRCPATH = `SourcePath`, + REGSTR_VAL_OLDWINDIR = `OldWinDir`, + REGSTR_VAL_SETUPFLAGS = `SetupFlags`, + REGSTR_VAL_REGOWNER = `RegisteredOwner`, + REGSTR_VAL_REGORGANIZATION = `RegisteredOrganization`, + REGSTR_VAL_LICENSINGINFO = `LicensingInfo`, + REGSTR_VAL_OLDMSDOSVER = `OldMSDOSVer`, + REGSTR_VAL_FIRSTINSTALLDATETIME = `FirstInstallDateTime`, + REGSTR_VAL_INSTALLTYPE = `InstallType`, + REGSTR_VAL_WRAPPER = `Wrapper`, + + REGSTR_KEY_SETUP = `\Setup`, + REGSTR_VAL_BOOTDIR = `BootDir`, + REGSTR_VAL_WINBOOTDIR = `WinbootDir`, + REGSTR_VAL_WINDIR = `WinDir`, + REGSTR_VAL_APPINSTPATH = `AppInstallPath`, + REGSTR_PATH_EBD = REGSTR_PATH_SETUP ~ REGSTR_KEY_SETUP ~ `\EBD`, + REGSTR_KEY_EBDFILESLOCAL = `EBDFilesLocale`, + REGSTR_KEY_EBDFILESKEYBOARD = `EBDFilesKeyboard`, + REGSTR_KEY_EBDAUTOEXECBATLOCAL = `EBDAutoexecBatLocale`, + REGSTR_KEY_EBDAUTOEXECBATKEYBOARD = `EBDAutoexecBatKeyboard`, + REGSTR_KEY_EBDCONFIGSYSLOCAL = `EBDConfigSysLocale`, + REGSTR_KEY_EBDCONFIGSYSKEYBOARD = `EBDConfigSysKeyboard`, + REGSTR_VAL_MSDOSMODE = `MSDOSMode`, + REGSTR_VAL_MSDOSMODEDISCARD = `Discard`, + REGSTR_VAL_DOSOPTGLOBALFLAGS = `GlobalFlags`, + REGSTR_VAL_DOSOPTFLAGS = `Flags`, + REGSTR_VAL_OPTORDER = `Order`, + REGSTR_VAL_CONFIGSYS = `Config.Sys`, + REGSTR_VAL_AUTOEXEC = `Autoexec.Bat`, + REGSTR_VAL_STDDOSOPTION = `StdOption`, + REGSTR_VAL_DOSOPTTIP = `TipText`, + + REGSTR_VAL_DOSPAGER = `DOSPager`, + REGSTR_VAL_VXDGROUPS = `VXDGroups`, + REGSTR_VAL_VPOWERDFLAGS = `Flags`, + + REGSTR_VAL_WORKGROUP = `Workgroup`, + REGSTR_VAL_DIRECTHOST = `DirectHost`, + REGSTR_VAL_FILESHARING = `FileSharing`, + REGSTR_VAL_PRINTSHARING = `PrintSharing`, + REGSTR_VAL_FIRSTNETDRIVE = `FirstNetworkDrive`, + REGSTR_VAL_MAXCONNECTIONS = `MaxConnections`, + REGSTR_VAL_APISUPPORT = `APISupport`, + REGSTR_VAL_MAXRETRY = `MaxRetry`, + REGSTR_VAL_MINRETRY = `MinRetry`, + REGSTR_VAL_SUPPORTLFN = `SupportLFN`, + REGSTR_VAL_SUPPORTBURST = `SupportBurst`, + REGSTR_VAL_SUPPORTTUNNELLING = `SupportTunnelling`, + REGSTR_VAL_FULLTRACE = `FullTrace`, + REGSTR_VAL_READCACHING = `ReadCaching`, + REGSTR_VAL_SHOWDOTS = `ShowDots`, + REGSTR_VAL_GAPTIME = `GapTime`, + REGSTR_VAL_SEARCHMODE = `SearchMode`, + REGSTR_VAL_SHELLVERSION = `ShellVersion`, + REGSTR_VAL_MAXLIP = `MaxLIP`, + REGSTR_VAL_PRESERVECASE = `PreserveCase`, + REGSTR_VAL_OPTIMIZESFN = `OptimizeSFN`, + REGSTR_VAL_NCP_BROWSEMASTER = `BrowseMaster`, + REGSTR_VAL_NCP_USEPEERBROWSING = `Use_PeerBrowsing`, + REGSTR_VAL_NCP_USESAP = `Use_Sap`, + REGSTR_VAL_WIN31FILESYSTEM = `Win31FileSystem`, + REGSTR_VAL_PRESERVELONGNAMES = `PreserveLongNames`, + REGSTR_VAL_DRIVEWRITEBEHIND = `DriveWriteBehind`, + REGSTR_VAL_ASYNCFILECOMMIT = `AsyncFileCommit`, + REGSTR_VAL_PATHCACHECOUNT = `PathCache`, + REGSTR_VAL_NAMECACHECOUNT = `NameCache`, + REGSTR_VAL_CONTIGFILEALLOC = `ContigFileAllocSize`, + REGSTR_VAL_VOLIDLETIMEOUT = `VolumeIdleTimeout`, + REGSTR_VAL_BUFFIDLETIMEOUT = `BufferIdleTimeout`, + REGSTR_VAL_BUFFAGETIMEOUT = `BufferAgeTimeout`, + REGSTR_VAL_NAMENUMERICTAIL = `NameNumericTail`, + REGSTR_VAL_READAHEADTHRESHOLD = `ReadAheadThreshold`, + REGSTR_VAL_DOUBLEBUFFER = `DoubleBuffer`, + REGSTR_VAL_SOFTCOMPATMODE = `SoftCompatMode`, + REGSTR_VAL_DRIVESPINDOWN = `DriveSpinDown`, + REGSTR_VAL_FORCEPMIO = `ForcePMIO`, + REGSTR_VAL_FORCERMIO = `ForceRMIO`, + REGSTR_VAL_LASTBOOTPMDRVS = `LastBootPMDrvs`, + REGSTR_VAL_VIRTUALHDIRQ = `VirtualHDIRQ`, + REGSTR_VAL_SRVNAMECACHECOUNT = `ServerNameCacheMax`, + REGSTR_VAL_SRVNAMECACHE = `ServerNameCache`, + REGSTR_VAL_SRVNAMECACHENETPROV = `ServerNameCacheNumNets`, + REGSTR_VAL_AUTOMOUNT = `AutoMountDrives`, + REGSTR_VAL_COMPRESSIONMETHOD = `CompressionAlgorithm`, + REGSTR_VAL_COMPRESSIONTHRESHOLD = `CompressionThreshold`, + REGSTR_VAL_CDCACHESIZE = `CacheSize`, + REGSTR_VAL_CDPREFETCH = `Prefetch`, + REGSTR_VAL_CDPREFETCHTAIL = `PrefetchTail`, + REGSTR_VAL_CDRAWCACHE = `RawCache`, + REGSTR_VAL_CDEXTERRORS = `ExtendedErrors`, + REGSTR_VAL_CDSVDSENSE = `SVDSense`, + REGSTR_VAL_CDSHOWVERSIONS = `ShowVersions`, + REGSTR_VAL_CDCOMPATNAMES = `MSCDEXCompatNames`, + REGSTR_VAL_CDNOREADAHEAD = `NoReadAhead`, + REGSTR_VAL_SCSI = `SCSI\`, + REGSTR_VAL_ESDI = `ESDI\`, + REGSTR_VAL_FLOP = `FLOP\`, + REGSTR_VAL_DISK = `GenDisk`, + REGSTR_VAL_CDROM = `GenCD`, + REGSTR_VAL_TAPE = `TAPE`, + REGSTR_VAL_SCANNER = `SCANNER`, + REGSTR_VAL_FLOPPY = `FLOPPY`, + REGSTR_VAL_SCSITID = `SCSITargetID`, + REGSTR_VAL_SCSILUN = `SCSILUN`, + REGSTR_VAL_REVLEVEL = `RevisionLevel`, + REGSTR_VAL_PRODUCTID = `ProductId`, + REGSTR_VAL_PRODUCTTYPE = `ProductType`, + REGSTR_VAL_DEVTYPE = `DeviceType`, + REGSTR_VAL_REMOVABLE = `Removable`, + REGSTR_VAL_CURDRVLET = `CurrentDriveLetterAssignment`, + REGSTR_VAL_USRDRVLET = `UserDriveLetterAssignment`, + REGSTR_VAL_SYNCDATAXFER = `SyncDataXfer`, + REGSTR_VAL_AUTOINSNOTE = `AutoInsertNotification`, + REGSTR_VAL_DISCONNECT = `Disconnect`, + REGSTR_VAL_INT13 = `Int13`, + REGSTR_VAL_PMODE_INT13 = `PModeInt13`, + REGSTR_VAL_USERSETTINGS = `AdapterSettings`, + REGSTR_VAL_NOIDE = `NoIDE`, + REGSTR_VAL_DISKCLASSNAME = `DiskDrive`, + REGSTR_VAL_CDROMCLASSNAME = `CDROM`, + REGSTR_VAL_FORCELOAD = `ForceLoadPD`, + REGSTR_VAL_FORCEFIFO = `ForceFIFO`, + REGSTR_VAL_FORCECL = `ForceChangeLine`, + REGSTR_VAL_NOUSECLASS = `NoUseClass`, + REGSTR_VAL_NOINSTALLCLASS = `NoInstallClass`, + REGSTR_VAL_NODISPLAYCLASS = `NoDisplayClass`, + REGSTR_VAL_SILENTINSTALL = `SilentInstall`, + REGSTR_KEY_PCMCIA_CLASS = `PCMCIA`, + REGSTR_KEY_SCSI_CLASS = `SCSIAdapter`, + REGSTR_KEY_PORTS_CLASS = `ports`, + REGSTR_KEY_MEDIA_CLASS = `MEDIA`, + REGSTR_KEY_DISPLAY_CLASS = `Display`, + REGSTR_KEY_KEYBOARD_CLASS = `Keyboard`, + REGSTR_KEY_MOUSE_CLASS = `Mouse`, + REGSTR_KEY_MONITOR_CLASS = `Monitor`, + REGSTR_VAL_PCMCIA_OPT = `Options`, + REGSTR_VAL_PCMCIA_MEM = `Memory`, + REGSTR_VAL_PCMCIA_ALLOC = `AllocMemWin`, + REGSTR_VAL_PCMCIA_ATAD = `ATADelay`, + REGSTR_VAL_PCMCIA_SIZ = `MinRegionSize`, + REGSTR_VAL_P1284MDL = `Model`, + REGSTR_VAL_P1284MFG = `Manufacturer`, + REGSTR_VAL_ISAPNP = `ISAPNP`, + REGSTR_VAL_ISAPNP_RDP_OVERRIDE = `RDPOverRide`, + REGSTR_VAL_PCI = `PCI`, + REGSTR_PCI_OPTIONS = `Options`, + REGSTR_PCI_DUAL_IDE = `PCIDualIDE`, + + REGSTR_KEY_CRASHES = `Crashes`, + REGSTR_KEY_DANGERS = `Dangers`, + REGSTR_KEY_DETMODVARS = `DetModVars`, + REGSTR_KEY_NDISINFO = `NDISInfo`, + REGSTR_VAL_PROTINIPATH = `ProtIniPath`, + REGSTR_VAL_RESOURCES = `Resources`, + REGSTR_VAL_CRASHFUNCS = `CrashFuncs`, + REGSTR_VAL_CLASS = `Class`, + REGSTR_VAL_DEVDESC = `DeviceDesc`, + REGSTR_VAL_BOOTCONFIG = `BootConfig`, + REGSTR_VAL_DETFUNC = `DetFunc`, + REGSTR_VAL_DETFLAGS = `DetFlags`, + REGSTR_VAL_COMPATIBLEIDS = `CompatibleIDs`, + REGSTR_VAL_DETCONFIG = `DetConfig`, + REGSTR_VAL_VERIFYKEY = `VerifyKey`, + REGSTR_VAL_COMINFO = `ComInfo`, + REGSTR_VAL_INFNAME = `InfName`, + REGSTR_VAL_CARDSPECIFIC = `CardSpecific`, + REGSTR_VAL_NETOSTYPE = `NetOSType`, + REGSTR_DATA_NETOS_NDIS = `NDIS`, + REGSTR_DATA_NETOS_ODI = `ODI`, + REGSTR_DATA_NETOS_IPX = `IPX`, + REGSTR_VAL_MFG = `Mfg`, + REGSTR_VAL_SCAN_ONLY_FIRST = `ScanOnlyFirstDrive`, + REGSTR_VAL_SHARE_IRQ = `ForceIRQSharing`, + REGSTR_VAL_NONSTANDARD_ATAPI = `NonStandardATAPI`, + REGSTR_VAL_IDE_FORCE_SERIALIZE = `ForceSerialization`, + REGSTR_VAL_HWREV = `HWRevision`, + REGSTR_VAL_ENABLEINTS = `EnableInts`, + + REGSTR_VAL_APMBIOSVER = `APMBiosVer`, + REGSTR_VAL_APMFLAGS = `APMFlags`, + REGSTR_VAL_SLSUPPORT = `SLSupport`, + REGSTR_VAL_MACHINETYPE = `MachineType`, + REGSTR_VAL_SETUPMACHINETYPE = `SetupMachineType`, + REGSTR_MACHTYPE_UNKNOWN = `Unknown`, + REGSTR_MACHTYPE_IBMPC = `IBM PC`, + REGSTR_MACHTYPE_IBMPCJR = `IBM PCjr`, + REGSTR_MACHTYPE_IBMPCCONV = `IBM PC Convertible`, + REGSTR_MACHTYPE_IBMPCXT = `IBM PC/XT`, + REGSTR_MACHTYPE_IBMPCXT_286 = `IBM PC/XT 286`, + REGSTR_MACHTYPE_IBMPCAT = `IBM PC/AT`, + REGSTR_MACHTYPE_IBMPS2_25 = `IBM PS/2-25`, + REGSTR_MACHTYPE_IBMPS2_30_286 = `IBM PS/2-30 286`, + REGSTR_MACHTYPE_IBMPS2_30 = `IBM PS/2-30`, + REGSTR_MACHTYPE_IBMPS2_50 = `IBM PS/2-50`, + REGSTR_MACHTYPE_IBMPS2_50Z = `IBM PS/2-50Z`, + REGSTR_MACHTYPE_IBMPS2_55SX = `IBM PS/2-55SX`, + REGSTR_MACHTYPE_IBMPS2_60 = `IBM PS/2-60`, + REGSTR_MACHTYPE_IBMPS2_65SX = `IBM PS/2-65SX`, + REGSTR_MACHTYPE_IBMPS2_70 = `IBM PS/2-70`, + REGSTR_MACHTYPE_IBMPS2_P70 = `IBM PS/2-P70`, + REGSTR_MACHTYPE_IBMPS2_70_80 = `IBM PS/2-70/80`, + REGSTR_MACHTYPE_IBMPS2_80 = `IBM PS/2-80`, + REGSTR_MACHTYPE_IBMPS2_90 = `IBM PS/2-90`, + REGSTR_MACHTYPE_IBMPS1 = `IBM PS/1`, + REGSTR_MACHTYPE_PHOENIX_PCAT = `Phoenix PC/AT Compatible`, + REGSTR_MACHTYPE_HP_VECTRA = `HP Vectra`, + REGSTR_MACHTYPE_ATT_PC = `AT&T PC`, + REGSTR_MACHTYPE_ZENITH_PC = `Zenith PC`, + REGSTR_VAL_APMMENUSUSPEND = `APMMenuSuspend`, + + REGSTR_VAL_BUSTYPE = `BusType`, + REGSTR_VAL_CPU = `CPU`, + REGSTR_VAL_NDP = `NDP`, + REGSTR_VAL_PNPBIOSVER = `PnPBIOSVer`, + REGSTR_VAL_PNPSTRUCOFFSET = `PnPStrucOffset`, + REGSTR_VAL_PCIBIOSVER = `PCIBIOSVer`, + REGSTR_VAL_HWMECHANISM = `HWMechanism`, + REGSTR_VAL_LASTPCIBUSNUM = `LastPCIBusNum`, + REGSTR_VAL_CONVMEM = `ConvMem`, + REGSTR_VAL_EXTMEM = `ExtMem`, + REGSTR_VAL_COMPUTERNAME = `ComputerName`, + REGSTR_VAL_BIOSNAME = `BIOSName`, + REGSTR_VAL_BIOSVERSION = `BIOSVersion`, + REGSTR_VAL_BIOSDATE = `BIOSDate`, + REGSTR_VAL_MODEL = `Model`, + REGSTR_VAL_SUBMODEL = `Submodel`, + REGSTR_VAL_REVISION = `Revision`, + REGSTR_VAL_FIFODEPTH = `FIFODepth`, + REGSTR_VAL_RDINTTHRESHOLD = `RDIntThreshold`, + REGSTR_VAL_WRINTTHRESHOLD = `WRIntThreshold`, + REGSTR_VAL_PRIORITY = `Priority`, + REGSTR_VAL_DRIVER = `Driver`, + REGSTR_VAL_FUNCDESC = `FunctionDesc`, + REGSTR_VAL_FORCEDCONFIG = `ForcedConfig`, + REGSTR_VAL_CONFIGFLAGS = `ConfigFlags`, + REGSTR_VAL_CSCONFIGFLAGS = `CSConfigFlags`, + + REGSTR_VAL_ROOT_DEVNODE = `HTREE\ROOT\0`, + REGSTR_VAL_RESERVED_DEVNODE = `HTREE\RESERVED\0`, + REGSTR_PATH_READDATAPORT = REGSTR_KEY_ISAENUM ~ `\ReadDataPort\0`, + REGSTR_PATH_MULTI_FUNCTION = `MF`, + REGSTR_VAL_RESOURCE_MAP = `ResourceMap`, + REGSTR_PATH_CHILD_PREFIX = `Child`, + REGSTR_VAL_MF_FLAGS = `MFFlags`, + REGSTR_VAL_DRVDESC = `DriverDesc`, + REGSTR_VAL_DEVLOADER = `DevLoader`, + REGSTR_VAL_STATICVXD = `StaticVxD`, + REGSTR_VAL_PROPERTIES = `Properties`, + REGSTR_VAL_MANUFACTURER = `Manufacturer`, + REGSTR_VAL_EXISTS = `Exists`, + REGSTR_VAL_CMENUMFLAGS = `CMEnumFlags`, + REGSTR_VAL_CMDRIVFLAGS = `CMDrivFlags`, + REGSTR_VAL_ENUMERATOR = `Enumerator`, + REGSTR_VAL_DEVICEDRIVER = `DeviceDriver`, + REGSTR_VAL_PORTNAME = `PortName`, + REGSTR_VAL_INFPATH = `InfPath`, + REGSTR_VAL_INFSECTION = `InfSection`, + REGSTR_VAL_POLLING = `Polling`, + REGSTR_VAL_DONTLOADIFCONFLICT = `DontLoadIfConflict`, + REGSTR_VAL_PORTSUBCLASS = `PortSubClass`, + REGSTR_VAL_NETCLEAN = `NetClean`, + REGSTR_VAL_IDE_NO_SERIALIZE = `IDENoSerialize`, + REGSTR_VAL_NOCMOSORFDPT = `NoCMOSorFDPT`, + REGSTR_VAL_COMVERIFYBASE = `COMVerifyBase`, + REGSTR_KEY_OVERRIDE = `Override`, + REGSTR_VAL_CONFIGMG = `CONFIGMG`, + REGSTR_VAL_SYSDM = `SysDM`, + REGSTR_VAL_SYSDMFUNC = `SysDMFunc`, + REGSTR_VAL_PRIVATE = `Private`, + REGSTR_VAL_PRIVATEFUNC = `PrivateFunc`, + REGSTR_VAL_DETECT = `Detect`, + REGSTR_VAL_DETECTFUNC = `DetectFunc`, + REGSTR_VAL_ASKFORCONFIG = `AskForConfig`, + REGSTR_VAL_ASKFORCONFIGFUNC = `AskForConfigFunc`, + REGSTR_VAL_WAITFORUNDOCK = `WaitForUndock`, + REGSTR_VAL_WAITFORUNDOCKFUNC = `WaitForUndockFunc`, + REGSTR_VAL_REMOVEROMOKAY = `RemoveRomOkay`, + REGSTR_VAL_REMOVEROMOKAYFUNC = `RemoveRomOkayFunc`, + REGSTR_VAL_CURCONFIG = `CurrentConfig`, + REGSTR_VAL_FRIENDLYNAME = `FriendlyName`, + REGSTR_VAL_CURRENTCONFIG = `CurrentConfig`, + REGSTR_VAL_MAP = `Map`, + REGSTR_VAL_ID = `CurrentID`, + REGSTR_VAL_DOCKED = `CurrentDockedState`, + REGSTR_VAL_CHECKSUM = `CurrentChecksum`, + REGSTR_VAL_HWDETECT = `HardwareDetect`, + REGSTR_VAL_INHIBITRESULTS = `InhibitResults`, + REGSTR_VAL_PROFILEFLAGS = `ProfileFlags`, + REGSTR_KEY_PCMCIA = `PCMCIA\`, + REGSTR_KEY_PCUNKNOWN = `UNKNOWN_MANUFACTURER`, + REGSTR_VAL_PCSSDRIVER = `Driver`, + REGSTR_KEY_PCMTD = `MTD-`, + REGSTR_VAL_PCMTDRIVER = `MTD`, + REGSTR_VAL_HARDWAREID = `HardwareID`, + REGSTR_VAL_INSTALLER = `Installer`, + REGSTR_VAL_INSICON = `Icon`, + REGSTR_VAL_ENUMPROPPAGES = `EnumPropPages`, + REGSTR_VAL_BASICPROPERTIES = `BasicProperties`, + REGSTR_VAL_PRIVATEPROBLEM = `PrivateProblem`, + REGSTR_KEY_CURRENT = `Current`, + REGSTR_KEY_DEFAULT = `Default`, + REGSTR_KEY_MODES = `Modes`, + REGSTR_VAL_MODE = `Mode`, + REGSTR_VAL_BPP = `BPP`, + REGSTR_VAL_HRES = `HRes`, + REGSTR_VAL_VRES = `VRes`, + REGSTR_VAL_FONTSIZE = `FontSize`, + REGSTR_VAL_DRV = `drv`, + REGSTR_VAL_GRB = `grb`, + REGSTR_VAL_VDD = `vdd`, + REGSTR_VAL_VER = `Ver`, + REGSTR_VAL_MAXRES = `MaxResolution`, + REGSTR_VAL_DPMS = `DPMS`, + REGSTR_VAL_RESUMERESET = `ResumeReset`, + REGSTR_VAL_DESCRIPTION = `Description`, + REGSTR_KEY_SYSTEM = `System`, + REGSTR_KEY_USER = `User`, + REGSTR_VAL_DPI = `dpi`, + REGSTR_VAL_PCICOPTIONS = `PCICOptions`, + + REGSTR_VAL_PCICIRQMAP = `PCICIRQMap`, + REGSTR_PATH_APPEARANCE = `Control Panel\Appearance`, + REGSTR_PATH_LOOKSCHEMES = `Control Panel\Appearance\Schemes`, + REGSTR_VAL_CUSTOMCOLORS = `CustomColors`, + REGSTR_PATH_SCREENSAVE = `Control Panel\Desktop`, + REGSTR_VALUE_USESCRPASSWORD = `ScreenSaveUsePassword`, + REGSTR_VALUE_SCRPASSWORD = `ScreenSave_Data`, + REGSTR_VALUE_LOWPOWERTIMEOUT = `ScreenSaveLowPowerTimeout`, + REGSTR_VALUE_POWEROFFTIMEOUT = `ScreenSavePowerOffTimeout`, + REGSTR_VALUE_LOWPOWERACTIVE = `ScreenSaveLowPowerActive`, + REGSTR_VALUE_POWEROFFACTIVE = `ScreenSavePowerOffActive`, + REGSTR_PATH_WINDOWSAPPLETS = `Software\Microsoft\Windows\CurrentVersion\Applets`, + REGSTR_PATH_SYSTRAY = `Software\Microsoft\Windows\CurrentVersion\Applets\SysTray`, + REGSTR_VAL_SYSTRAYSVCS = `Services`, + REGSTR_VAL_SYSTRAYBATFLAGS = `PowerFlags`, + REGSTR_VAL_SYSTRAYPCCARDFLAGS = `PCMCIAFlags`, + REGSTR_PATH_NETWORK_USERSETTINGS = `Network`, + REGSTR_KEY_NETWORK_PERSISTENT = `\Persistent`, + REGSTR_KEY_NETWORK_RECENT = `\Recent`, + REGSTR_VAL_REMOTE_PATH = `RemotePath`, + REGSTR_VAL_USER_NAME = `UserName`, + REGSTR_VAL_PROVIDER_NAME = `ProviderName`, + REGSTR_VAL_CONNECTION_TYPE = `ConnectionType`, + REGSTR_VAL_UPGRADE = `Upgrade`, + REGSTR_KEY_LOGON = `\Logon`, + REGSTR_VAL_MUSTBEVALIDATED = `MustBeValidated`, + REGSTR_VAL_RUNLOGINSCRIPT = `ProcessLoginScript`, + REGSTR_KEY_NETWORKPROVIDER = `\NetworkProvider`, + REGSTR_PATH_NW32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\NWNP32` ~ REGSTR_KEY_NETWORKPROVIDER, + REGSTR_PATH_MS32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\MSNP32` ~ REGSTR_KEY_NETWORKPROVIDER, + REGSTR_VAL_AUTHENT_AGENT = `AuthenticatingAgent`, + REGSTR_VAL_PREFREDIR = `PreferredRedir`, + REGSTR_VAL_AUTOSTART = `AutoStart`, + REGSTR_VAL_AUTOLOGON = `AutoLogon`, + REGSTR_VAL_NETCARD = `Netcard`, + REGSTR_VAL_TRANSPORT = `Transport`, + REGSTR_VAL_DYNAMIC = `Dynamic`, + REGSTR_VAL_TRANSITION = `Transition`, + REGSTR_VAL_STATICDRIVE = `StaticDrive`, + REGSTR_VAL_LOADHI = `LoadHi`, + REGSTR_VAL_LOADRMDRIVERS = `LoadRMDrivers`, + REGSTR_VAL_SETUPN = `SetupN`, + REGSTR_VAL_SETUPNPATH = `SetupNPath`, + REGSTR_VAL_WRKGRP_FORCEMAPPING = `WrkgrpForceMapping`, + REGSTR_VAL_WRKGRP_REQUIRED = `WrkgrpRequired`, + REGSTR_PATH_CURRENT_CONTROL_SET = `System\CurrentControlSet\Control`, + REGSTR_VAL_CURRENT_USER = `Current User`, + REGSTR_PATH_PWDPROVIDER = `System\CurrentControlSet\Control\PwdProvider`, + REGSTR_VAL_PWDPROVIDER_PATH = `ProviderPath`, + REGSTR_VAL_PWDPROVIDER_DESC = `Description`, + REGSTR_VAL_PWDPROVIDER_CHANGEPWD = `ChangePassword`, + REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND = `ChangePasswordHwnd`, + REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS = `GetPasswordStatus`, + REGSTR_VAL_PWDPROVIDER_ISNP = `NetworkProvider`, + REGSTR_VAL_PWDPROVIDER_CHANGEORDER = `ChangeOrder`, + REGSTR_PATH_POLICIES = `Software\Microsoft\Windows\CurrentVersion\Policies`, + REGSTR_PATH_UPDATE = `System\CurrentControlSet\Control\Update`, + REGSTR_VALUE_ENABLE = `Enable`, + REGSTR_VALUE_VERBOSE = `Verbose`, + REGSTR_VALUE_NETPATH = `NetworkPath`, + REGSTR_VALUE_DEFAULTLOC = `UseDefaultNetLocation`, + REGSTR_KEY_NETWORK = `Network`, +// [Redefined] REGSTR_KEY_SYSTEM = `System`) + REGSTR_KEY_PRINTERS = `Printers`, + REGSTR_KEY_WINOLDAPP = `WinOldApp`, + REGSTR_VAL_NOFILESHARING = `NoFileSharing`, + REGSTR_VAL_NOPRINTSHARING = `NoPrintSharing`, + REGSTR_VAL_NOFILESHARINGCTRL = `NoFileSharingControl`, + REGSTR_VAL_NOPRINTSHARINGCTRL = `NoPrintSharingControl`, + REGSTR_VAL_HIDESHAREPWDS = `HideSharePwds`, + REGSTR_VAL_DISABLEPWDCACHING = `DisablePwdCaching`, + REGSTR_VAL_ALPHANUMPWDS = `AlphanumPwds`, + REGSTR_VAL_NETSETUP_DISABLE = `NoNetSetup`, + REGSTR_VAL_NETSETUP_NOCONFIGPAGE = `NoNetSetupConfigPage`, + REGSTR_VAL_NETSETUP_NOIDPAGE = `NoNetSetupIDPage`, + REGSTR_VAL_NETSETUP_NOSECURITYPAGE = `NoNetSetupSecurityPage`, + REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE = `NoVirtMemPage`, + REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE = `NoDevMgrPage`, + REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE = `NoConfigPage`, + REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE = `NoFileSysPage`, + REGSTR_VAL_DISPCPL_NODISPCPL = `NoDispCPL`, + REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE = `NoDispBackgroundPage`, + REGSTR_VAL_DISPCPL_NOSCRSAVPAGE = `NoDispScrSavPage`, + REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE = `NoDispAppearancePage`, + REGSTR_VAL_DISPCPL_NOSETTINGSPAGE = `NoDispSettingsPage`, + REGSTR_VAL_SECCPL_NOSECCPL = `NoSecCPL`, + REGSTR_VAL_SECCPL_NOPWDPAGE = `NoPwdPage`, + REGSTR_VAL_SECCPL_NOADMINPAGE = `NoAdminPage`, + REGSTR_VAL_SECCPL_NOPROFILEPAGE = `NoProfilePage`, + REGSTR_VAL_PRINTERS_HIDETABS = `NoPrinterTabs`, + REGSTR_VAL_PRINTERS_NODELETE = `NoDeletePrinter`, + REGSTR_VAL_PRINTERS_NOADD = `NoAddPrinter`, + REGSTR_VAL_WINOLDAPP_DISABLED = `Disabled`, + REGSTR_VAL_WINOLDAPP_NOREALMODE = `NoRealMode`, + REGSTR_VAL_NOENTIRENETWORK = `NoEntireNetwork`, + REGSTR_VAL_NOWORKGROUPCONTENTS = `NoWorkgroupContents`, + REGSTR_VAL_MINPWDLEN = `MinPwdLen`, + REGSTR_VAL_PWDEXPIRATION = `PwdExpiration`, + REGSTR_VAL_WIN31PROVIDER = `Win31Provider`, + REGSTR_VAL_DISABLEREGTOOLS = `DisableRegistryTools`, + REGSTR_PATH_WINLOGON = `Software\Microsoft\Windows\CurrentVersion\Winlogon`, + REGSTR_VAL_LEGALNOTICECAPTION = `LegalNoticeCaption`, + REGSTR_VAL_LEGALNOTICETEXT = `LegalNoticeText`, + REGSTR_VAL_RESTRICTRUN = `RestrictRun`, + REGSTR_KEY_POL_USERS = `Users`, + REGSTR_KEY_POL_COMPUTERS = `Computers`, + REGSTR_KEY_POL_USERGROUPS = `UserGroups`, + REGSTR_KEY_POL_DEFAULT = `.default`, + REGSTR_KEY_POL_USERGROUPDATA = `GroupData\UserGroups\Priority`, + REGSTR_PATH_TIMEZONE = `System\CurrentControlSet\Control\TimeZoneInformation`, + REGSTR_VAL_TZBIAS = `Bias`, + REGSTR_VAL_TZDLTBIAS = `DaylightBias`, + REGSTR_VAL_TZSTDBIAS = `StandardBias`, + REGSTR_VAL_TZACTBIAS = `ActiveTimeBias`, + REGSTR_VAL_TZDLTFLAG = `DaylightFlag`, + REGSTR_VAL_TZSTDSTART = `StandardStart`, + REGSTR_VAL_TZDLTSTART = `DaylightStart`, + REGSTR_VAL_TZDLTNAME = `DaylightName`, + REGSTR_VAL_TZSTDNAME = `StandardName`, + REGSTR_VAL_TZNOCHANGESTART = `NoChangeStart`, + REGSTR_VAL_TZNOCHANGEEND = `NoChangeEnd`, + REGSTR_VAL_TZNOAUTOTIME = `DisableAutoDaylightTimeSet`, + REGSTR_PATH_FLOATINGPOINTPROCESSOR = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor`, + REGSTR_PATH_FLOATINGPOINTPROCESSOR0 = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0`, + REGSTR_PATH_COMPUTRNAME = `System\CurrentControlSet\Control\ComputerName\ComputerName`, + REGSTR_VAL_COMPUTRNAME = `ComputerName`, + REGSTR_PATH_SHUTDOWN = `System\CurrentControlSet\Control\Shutdown`, + REGSTR_VAL_FORCEREBOOT = `ForceReboot`, + REGSTR_VAL_SETUPPROGRAMRAN = `SetupProgramRan`, + REGSTR_VAL_DOES_POLLING = `PollingSupportNeeded`, + REGSTR_PATH_KNOWNDLLS = `System\CurrentControlSet\Control\SessionManager\KnownDLLs`, + REGSTR_PATH_KNOWN16DLLS = `System\CurrentControlSet\Control\SessionManager\Known16DLLs`, + REGSTR_PATH_CHECKVERDLLS = `System\CurrentControlSet\Control\SessionManager\CheckVerDLLs`, + REGSTR_PATH_WARNVERDLLS = `System\CurrentControlSet\Control\SessionManager\WarnVerDLLs`, + REGSTR_PATH_HACKINIFILE = `System\CurrentControlSet\Control\SessionManager\HackIniFiles`, + REGSTR_PATH_CHECKBADAPPS = `System\CurrentControlSet\Control\SessionManager\CheckBadApps`, + REGSTR_PATH_APPPATCH = `System\CurrentControlSet\Control\SessionManager\AppPatches`, + REGSTR_PATH_KNOWNVXDS = `System\CurrentControlSet\Control\SessionManager\KnownVxDs`, + REGSTR_VAL_UNINSTALLER_DISPLAYNAME = `DisplayName`, + REGSTR_VAL_UNINSTALLER_COMMANDLINE = `UninstallString`, + REGSTR_PATH_DESKTOP = REGSTR_PATH_SCREENSAVE, + REGSTR_PATH_MOUSE = `Control Panel\Mouse`, + REGSTR_PATH_KEYBOARD = `Control Panel\Keyboard`, + REGSTR_PATH_COLORS = `Control Panel\Colors`, + REGSTR_PATH_SOUND = `Control Panel\Sound`, + REGSTR_PATH_METRICS = `Control Panel\Desktop\WindowMetrics`, + REGSTR_PATH_ICONS = `Control Panel\Icons`, + REGSTR_PATH_CURSORS = `Control Panel\Cursors`, + REGSTR_PATH_CHECKDISK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive`, + REGSTR_PATH_CHECKDISKSET = `Settings`, + REGSTR_PATH_CHECKDISKUDRVS = `NoUnknownDDErrDrvs`, + REGSTR_PATH_FAULT = `Software\Microsoft\Windows\CurrentVersion\Fault`, + REGSTR_VAL_FAULT_LOGFILE = `LogFile`, + REGSTR_PATH_AEDEBUG = `Software\Microsoft\Windows NT\CurrentVersion\AeDebug`, + REGSTR_VAL_AEDEBUG_DEBUGGER = `Debugger`, + REGSTR_VAL_AEDEBUG_AUTO = `Auto`, + REGSTR_PATH_GRPCONV = `Software\Microsoft\Windows\CurrentVersion\GrpConv`, + REGSTR_VAL_REGITEMDELETEMESSAGE = `Removal Message`, + REGSTR_PATH_LASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastCheck`, + REGSTR_PATH_LASTOPTIMIZE = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastOptimize`, + REGSTR_PATH_LASTBACKUP = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastBackup`, + REGSTR_PATH_CHKLASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastCheck`, + REGSTR_PATH_CHKLASTSURFAN = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastSurfaceAnalysis`, + REGSTR_KEY_SHARES = `Software\Microsoft\Windows\CurrentVersion\Network\LanMan`, + REGSTR_VAL_SHARES_FLAGS = `Flags`, + REGSTR_VAL_SHARES_TYPE = `Type`, + REGSTR_VAL_SHARES_PATH = `Path`, + REGSTR_VAL_SHARES_REMARK = `Remark`, + REGSTR_VAL_SHARES_RW_PASS = `Parm1`, + REGSTR_VAL_SHARES_RO_PASS = `Parm2`, + REGSTR_PATH_PRINT = `System\CurrentControlSet\Control\Print`, + REGSTR_PATH_PRINTERS = `System\CurrentControlSet\Control\Print\Printers`, + REGSTR_PATH_PROVIDERS = `System\CurrentControlSet\Control\Print\Providers`, + REGSTR_PATH_MONITORS = `System\CurrentControlSet\Control\Print\Monitors`, + REGSTR_PATH_ENVIRONMENTS = `System\CurrentControlSet\Control\Print\Environments`, + REGSTR_VAL_START_ON_BOOT = `StartOnBoot`, + REGSTR_VAL_PRINTERS_MASK = `PrintersMask`, + REGSTR_VAL_DOS_SPOOL_MASK = `DOSSpoolMask`, + REGSTR_KEY_CURRENT_ENV = `\Windows 4.0`, + REGSTR_KEY_DRIVERS = `\Drivers`, + REGSTR_KEY_PRINT_PROC = `\Print Processors`, + REGSTR_PATH_EVENTLABELS = `AppEvents\EventLabels`, + REGSTR_PATH_SCHEMES = `AppEvents\Schemes`, + REGSTR_PATH_APPS = REGSTR_PATH_SCHEMES ~ `\Apps`, + REGSTR_PATH_APPS_DEFAULT = REGSTR_PATH_SCHEMES ~ `\Apps\.Default`, + REGSTR_PATH_NAMES = REGSTR_PATH_SCHEMES ~ `\Names`, + REGSTR_PATH_MULTIMEDIA = REGSTR_PATH_SETUP ~ `\Multimedia`, + REGSTR_PATH_MULTIMEDIA_AUDIO = `Software\Microsoft\Multimedia\Audio`, + REGSTR_PATH_MEDIARESOURCES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaResources`, + REGSTR_PATH_MEDIAPROPERTIES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaProperties`, + REGSTR_PATH_PRIVATEPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PrivateProperties`, + REGSTR_PATH_PUBLICPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PublicProperties`, + REGSTR_PATH_JOYOEM = REGSTR_PATH_PRIVATEPROPERTIES ~ `\Joystick\OEM`, + REGSTR_PATH_JOYCONFIG = REGSTR_PATH_MEDIARESOURCES ~ `\Joystick`, + REGSTR_KEY_JOYCURR = `CurrentJoystickSettings`, + REGSTR_KEY_JOYSETTINGS = `JoystickSettings`, + REGSTR_VAL_JOYUSERVALUES = `JoystickUserValues`, + REGSTR_VAL_JOYCALLOUT = `JoystickCallout`, + REGSTR_VAL_JOYNCONFIG = `Joystick%dConfiguration`, + REGSTR_VAL_JOYNOEMNAME = `Joystick%dOEMName`, + REGSTR_VAL_JOYNOEMCALLOUT = `Joystick%dOEMCallout`, + REGSTR_VAL_JOYOEMCALLOUT = `OEMCallout`, + REGSTR_VAL_JOYOEMNAME = `OEMName`, + REGSTR_VAL_JOYOEMDATA = `OEMData`, + REGSTR_VAL_JOYOEMXYLABEL = `OEMXYLabel`, + REGSTR_VAL_JOYOEMZLABEL = `OEMZLabel`, + REGSTR_VAL_JOYOEMRLABEL = `OEMRLabel`, + REGSTR_VAL_JOYOEMPOVLABEL = `OEMPOVLabel`, + REGSTR_VAL_JOYOEMULABEL = `OEMULabel`, + REGSTR_VAL_JOYOEMVLABEL = `OEMVLabel`, + REGSTR_VAL_JOYOEMTESTMOVEDESC = `OEMTestMoveDesc`, + REGSTR_VAL_JOYOEMTESTBUTTONDESC = `OEMTestButtonDesc`, + REGSTR_VAL_JOYOEMTESTMOVECAP = `OEMTestMoveCap`, + REGSTR_VAL_JOYOEMTESTBUTTONCAP = `OEMTestButtonCap`, + REGSTR_VAL_JOYOEMTESTWINCAP = `OEMTestWinCap`, + REGSTR_VAL_JOYOEMCALCAP = `OEMCalCap`, + REGSTR_VAL_JOYOEMCALWINCAP = `OEMCalWinCap`, + REGSTR_VAL_JOYOEMCAL1 = `OEMCal1`, + REGSTR_VAL_JOYOEMCAL2 = `OEMCal2`, + REGSTR_VAL_JOYOEMCAL3 = `OEMCal3`, + REGSTR_VAL_JOYOEMCAL4 = `OEMCal4`, + REGSTR_VAL_JOYOEMCAL5 = `OEMCal5`, + REGSTR_VAL_JOYOEMCAL6 = `OEMCal6`, + REGSTR_VAL_JOYOEMCAL7 = `OEMCal7`, + REGSTR_VAL_JOYOEMCAL8 = `OEMCal8`, + REGSTR_VAL_JOYOEMCAL9 = `OEMCal9`, + REGSTR_VAL_JOYOEMCAL10 = `OEMCal10`, + REGSTR_VAL_JOYOEMCAL11 = `OEMCal11`, + REGSTR_VAL_JOYOEMCAL12 = `OEMCal12`; + +enum { + DTRESULTOK, + DTRESULTFIX, + DTRESULTPROB, + DTRESULTPART +} + +//#ifndef NEC_98 +const PCIC_DEFAULT_IRQMASK = 0x4EB8; +//#else +//#define PCIC_DEFAULT_IRQMASK 0x1468 +//#endif +const PCIC_DEFAULT_NUMSOCKETS = 0; + +struct DSKTLSYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; + WORD wResult; +} +alias DSKTLSYSTEMTIME* PDSKTLSYSTEMTIME, LPDSKTLSYSTEMTIME; diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d index 4b05f2834d..073e31344f 100644 --- a/src/core/sys/windows/richedit.d +++ b/src/core/sys/windows/richedit.d @@ -1,589 +1,589 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_richedit.d) - */ -module core.sys.windows.richedit; - -private import core.sys.windows.windef, core.sys.windows.winuser; -private import core.sys.windows.wingdi; // for LF_FACESIZE - -align(4): - -version(Unicode) { - const wchar[] RICHEDIT_CLASS = "RichEdit20W"; -} else { - const char[] RICHEDIT_CLASS = "RichEdit20A"; -} - -const RICHEDIT_CLASS10A = "RICHEDIT"; - -const TCHAR[] - CF_RTF = "Rich Text Format", - CF_RTFNOOBJS = "Rich Text Format Without Objects", - CF_RETEXTOBJ = "RichEdit Text and Objects"; - -const DWORD - CFM_BOLD = 1, - CFM_ITALIC = 2, - CFM_UNDERLINE = 4, - CFM_STRIKEOUT = 8, - CFM_PROTECTED = 16, - CFM_LINK = 32, - CFM_SIZE = 0x80000000, - CFM_COLOR = 0x40000000, - CFM_FACE = 0x20000000, - CFM_OFFSET = 0x10000000, - CFM_CHARSET = 0x08000000, - CFM_SUBSCRIPT = 0x00030000, - CFM_SUPERSCRIPT = 0x00030000; - -const DWORD - CFE_BOLD = 1, - CFE_ITALIC = 2, - CFE_UNDERLINE = 4, - CFE_STRIKEOUT = 8, - CFE_PROTECTED = 16, - CFE_SUBSCRIPT = 0x00010000, - CFE_SUPERSCRIPT = 0x00020000, - CFE_AUTOCOLOR = 0x40000000; - -const CFM_EFFECTS = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR - | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK; - -// flags for EM_SETIMEOPTIONS -const LPARAM - IMF_FORCENONE = 1, - IMF_FORCEENABLE = 2, - IMF_FORCEDISABLE = 4, - IMF_CLOSESTATUSWINDOW = 8, - IMF_VERTICAL = 32, - IMF_FORCEACTIVE = 64, - IMF_FORCEINACTIVE = 128, - IMF_FORCEREMEMBER = 256; - -const SEL_EMPTY=0; -const SEL_TEXT=1; -const SEL_OBJECT=2; -const SEL_MULTICHAR=4; -const SEL_MULTIOBJECT=8; - -const MAX_TAB_STOPS=32; - -const PFM_ALIGNMENT=8; -const PFM_NUMBERING=32; -const PFM_OFFSET=4; -const PFM_OFFSETINDENT=0x80000000; -const PFM_RIGHTINDENT=2; -const PFM_STARTINDENT=1; -const PFM_TABSTOPS=16; -const PFM_BORDER=2048; -const PFM_LINESPACING=256; -const PFM_NUMBERINGSTART=32768; -const PFM_NUMBERINGSTYLE=8192; -const PFM_NUMBERINGTAB=16384; -const PFM_SHADING=4096; -const PFM_SPACEAFTER=128; -const PFM_SPACEBEFORE=64; -const PFM_STYLE=1024; -const PFM_DONOTHYPHEN=4194304; -const PFM_KEEP=131072; -const PFM_KEEPNEXT=262144; -const PFM_NOLINENUMBER=1048576; -const PFM_NOWIDOWCONTROL=2097152; -const PFM_PAGEBREAKBEFORE=524288; -const PFM_RTLPARA=65536; -const PFM_SIDEBYSIDE=8388608; -const PFM_TABLE=1073741824; -const PFN_BULLET=1; - -const PFE_DONOTHYPHEN=64; -const PFE_KEEP=2; -const PFE_KEEPNEXT=4; -const PFE_NOLINENUMBER=16; -const PFE_NOWIDOWCONTROL=32; -const PFE_PAGEBREAKBEFORE=8; -const PFE_RTLPARA=1; -const PFE_SIDEBYSIDE=128; -const PFE_TABLE=16384; -const PFA_LEFT=1; -const PFA_RIGHT=2; -const PFA_CENTER=3; -const PFA_JUSTIFY=4; -const PFA_FULL_INTERWORD=4; - -const SF_TEXT=1; -const SF_RTF=2; -const SF_RTFNOOBJS=3; -const SF_TEXTIZED=4; -const SF_UNICODE=16; -const SF_USECODEPAGE=32; -const SF_NCRFORNONASCII=64; -const SF_RTFVAL=0x0700; - -const SFF_PWD=0x0800; -const SFF_KEEPDOCINFO=0x1000; -const SFF_PERSISTVIEWSCALE=0x2000; -const SFF_PLAINRTF=0x4000; -const SFF_SELECTION=0x8000; - -const WB_CLASSIFY = 3; -const WB_MOVEWORDLEFT = 4; -const WB_MOVEWORDRIGHT = 5; -const WB_LEFTBREAK = 6; -const WB_RIGHTBREAK = 7; -const WB_MOVEWORDPREV = 4; -const WB_MOVEWORDNEXT = 5; -const WB_PREVBREAK = 6; -const WB_NEXTBREAK = 7; - -const WBF_WORDWRAP = 16; -const WBF_WORDBREAK = 32; -const WBF_OVERFLOW = 64; -const WBF_LEVEL1 = 128; -const WBF_LEVEL2 = 256; -const WBF_CUSTOM = 512; - -const ES_DISABLENOSCROLL = 8192; -const ES_SUNKEN = 16384; -const ES_SAVESEL = 32768; -const ES_EX_NOCALLOLEINIT = 16777216; -const ES_NOIME = 524288; -const ES_NOOLEDRAGDROP = 8; -const ES_SELECTIONBAR = 16777216; -const ES_SELFIME = 262144; -const ES_VERTICAL = 4194304; - -const EM_CANPASTE = WM_USER+50; -const EM_DISPLAYBAND = WM_USER+51; -const EM_EXGETSEL = WM_USER+52; -const EM_EXLIMITTEXT = WM_USER+53; -const EM_EXLINEFROMCHAR = WM_USER+54; -const EM_EXSETSEL = WM_USER+55; -const EM_FINDTEXT = WM_USER+56; -const EM_FORMATRANGE = WM_USER+57; -const EM_GETCHARFORMAT = WM_USER+58; -const EM_GETEVENTMASK = WM_USER+59; -const EM_GETOLEINTERFACE = WM_USER+60; -const EM_GETPARAFORMAT = WM_USER+61; -const EM_GETSELTEXT = WM_USER+62; -const EM_HIDESELECTION = WM_USER+63; -const EM_PASTESPECIAL = WM_USER+64; -const EM_REQUESTRESIZE = WM_USER+65; -const EM_SELECTIONTYPE = WM_USER+66; -const EM_SETBKGNDCOLOR = WM_USER+67; -const EM_SETCHARFORMAT = WM_USER+68; -const EM_SETEVENTMASK = WM_USER+69; -const EM_SETOLECALLBACK = WM_USER+70; -const EM_SETPARAFORMAT = WM_USER+71; -const EM_SETTARGETDEVICE = WM_USER+72; -const EM_STREAMIN = WM_USER+73; -const EM_STREAMOUT = WM_USER+74; -const EM_GETTEXTRANGE = WM_USER+75; -const EM_FINDWORDBREAK = WM_USER+76; -const EM_SETOPTIONS = WM_USER+77; -const EM_GETOPTIONS = WM_USER+78; -const EM_FINDTEXTEX = WM_USER+79; -const EM_GETWORDBREAKPROCEX = WM_USER+80; -const EM_SETWORDBREAKPROCEX = WM_USER+81; -/* RichEdit 2.0 messages */ -const EM_SETUNDOLIMIT = WM_USER+82; -const EM_REDO = WM_USER+84; -const EM_CANREDO = WM_USER+85; -const EM_GETUNDONAME = WM_USER+86; -const EM_GETREDONAME = WM_USER+87; -const EM_STOPGROUPTYPING = WM_USER+88; -const EM_SETTEXTMODE = WM_USER+89; -const EM_GETTEXTMODE = WM_USER+90; -const EM_AUTOURLDETECT = WM_USER+91; -const EM_GETAUTOURLDETECT = WM_USER + 92; -const EM_SETPALETTE = WM_USER + 93; -const EM_GETTEXTEX = WM_USER+94; -const EM_GETTEXTLENGTHEX = WM_USER+95; -const EM_SHOWSCROLLBAR = WM_USER+96; -const EM_SETTEXTEX = WM_USER + 97; -const EM_SETPUNCTUATION = WM_USER + 100; -const EM_GETPUNCTUATION = WM_USER + 101; -const EM_SETWORDWRAPMODE = WM_USER + 102; -const EM_GETWORDWRAPMODE = WM_USER + 103; -const EM_SETIMECOLOR = WM_USER + 104; -const EM_GETIMECOLOR = WM_USER + 105; -const EM_SETIMEOPTIONS = WM_USER + 106; -const EM_GETIMEOPTIONS = WM_USER + 107; -const EM_SETLANGOPTIONS = WM_USER+120; -const EM_GETLANGOPTIONS = WM_USER+121; -const EM_GETIMECOMPMODE = WM_USER+122; -const EM_FINDTEXTW = WM_USER + 123; -const EM_FINDTEXTEXW = WM_USER + 124; -const EM_RECONVERSION = WM_USER + 125; -const EM_SETBIDIOPTIONS = WM_USER + 200; -const EM_GETBIDIOPTIONS = WM_USER + 201; -const EM_SETTYPOGRAPHYOPTIONS = WM_USER+202; -const EM_GETTYPOGRAPHYOPTIONS = WM_USER+203; -const EM_SETEDITSTYLE = WM_USER + 204; -const EM_GETEDITSTYLE = WM_USER + 205; -const EM_GETSCROLLPOS = WM_USER+221; -const EM_SETSCROLLPOS = WM_USER+222; -const EM_SETFONTSIZE = WM_USER+223; -const EM_GETZOOM = WM_USER+224; -const EM_SETZOOM = WM_USER+225; - -const EN_MSGFILTER = 1792; -const EN_REQUESTRESIZE = 1793; -const EN_SELCHANGE = 1794; -const EN_DROPFILES = 1795; -const EN_PROTECTED = 1796; -const EN_CORRECTTEXT = 1797; -const EN_STOPNOUNDO = 1798; -const EN_IMECHANGE = 1799; -const EN_SAVECLIPBOARD = 1800; -const EN_OLEOPFAILED = 1801; -const EN_LINK = 1803; - -const ENM_NONE = 0; -const ENM_CHANGE = 1; -const ENM_UPDATE = 2; -const ENM_SCROLL = 4; -const ENM_SCROLLEVENTS = 8; -const ENM_DRAGDROPDONE = 16; -const ENM_KEYEVENTS = 65536; -const ENM_MOUSEEVENTS = 131072; -const ENM_REQUESTRESIZE = 262144; -const ENM_SELCHANGE = 524288; -const ENM_DROPFILES = 1048576; -const ENM_PROTECTED = 2097152; -const ENM_CORRECTTEXT = 4194304; -const ENM_IMECHANGE = 8388608; -const ENM_LANGCHANGE = 16777216; -const ENM_OBJECTPOSITIONS = 33554432; -const ENM_LINK = 67108864; - -const ECO_AUTOWORDSELECTION=1; -const ECO_AUTOVSCROLL=64; -const ECO_AUTOHSCROLL=128; -const ECO_NOHIDESEL=256; -const ECO_READONLY=2048; -const ECO_WANTRETURN=4096; -const ECO_SAVESEL=0x8000; -const ECO_SELECTIONBAR=0x1000000; -const ECO_VERTICAL=0x400000; - -enum { - ECOOP_SET = 1, - ECOOP_OR, - ECOOP_AND, - ECOOP_XOR -} - -const SCF_DEFAULT = 0; -const SCF_SELECTION = 1; -const SCF_WORD = 2; -const SCF_ALL = 4; -const SCF_USEUIRULES = 8; - -alias DWORD TEXTMODE; -const TM_PLAINTEXT=1; -const TM_RICHTEXT=2; -const TM_SINGLELEVELUNDO=4; -const TM_MULTILEVELUNDO=8; -const TM_SINGLECODEPAGE=16; -const TM_MULTICODEPAGE=32; - -const GT_DEFAULT=0; -const GT_USECRLF=1; - -const yHeightCharPtsMost=1638; -const lDefaultTab=720; - -alias DWORD UNDONAMEID; -const UID_UNKNOWN = 0; -const UID_TYPING = 1; -const UID_DELETE = 2; -const UID_DRAGDROP = 3; -const UID_CUT = 4; -const UID_PASTE = 5; - -struct CHARFORMATA { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - char[LF_FACESIZE] szFaceName; -} -struct CHARFORMATW { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - WCHAR[LF_FACESIZE] szFaceName; -} - -struct CHARFORMAT2A { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - char[LF_FACESIZE] szFaceName; - WORD wWeight; - SHORT sSpacing; - COLORREF crBackColor; - LCID lcid; - DWORD dwReserved; - SHORT sStyle; - WORD wKerning; - BYTE bUnderlineType; - BYTE bAnimation; - BYTE bRevAuthor; -} - -struct CHARFORMAT2W { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - WCHAR[LF_FACESIZE] szFaceName; - WORD wWeight; - SHORT sSpacing; - COLORREF crBackColor; - LCID lcid; - DWORD dwReserved; - SHORT sStyle; - WORD wKerning; - BYTE bUnderlineType; - BYTE bAnimation; - BYTE bRevAuthor; -} - -struct CHARRANGE { - LONG cpMin; - LONG cpMax; -} - -struct COMPCOLOR { - COLORREF crText; - COLORREF crBackground; - DWORD dwEffects; -} - -extern (Windows) { - alias DWORD function(DWORD,PBYTE,LONG,LONG*) EDITSTREAMCALLBACK; -} - -struct EDITSTREAM { - DWORD dwCookie; - DWORD dwError; - EDITSTREAMCALLBACK pfnCallback; -} - -struct ENCORRECTTEXT { - NMHDR nmhdr; - CHARRANGE chrg; - WORD seltyp; -} - -struct ENDROPFILES { - NMHDR nmhdr; - HANDLE hDrop; - LONG cp; - BOOL fProtected; -} - -struct ENLINK { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; - CHARRANGE chrg; -} - -struct ENOLEOPFAILED { - NMHDR nmhdr; - LONG iob; - LONG lOper; - HRESULT hr; -} - -struct ENPROTECTED { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; - CHARRANGE chrg; -} -alias ENPROTECTED* LPENPROTECTED; - -struct ENSAVECLIPBOARD { - NMHDR nmhdr; - LONG cObjectCount; - LONG cch; -} - -struct FINDTEXTA { - CHARRANGE chrg; - LPSTR lpstrText; -} - -struct FINDTEXTW { - CHARRANGE chrg; - LPWSTR lpstrText; -} - -struct FINDTEXTEXA { - CHARRANGE chrg; - LPSTR lpstrText; - CHARRANGE chrgText; -} - -struct FINDTEXTEXW { - CHARRANGE chrg; - LPWSTR lpstrText; - CHARRANGE chrgText; -} - -struct FORMATRANGE { - HDC hdc; - HDC hdcTarget; - RECT rc; - RECT rcPage; - CHARRANGE chrg; -} - -struct MSGFILTER { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; -} - -struct PARAFORMAT { - UINT cbSize = this.sizeof; - DWORD dwMask; - WORD wNumbering; - WORD wReserved; - LONG dxStartIndent; - LONG dxRightIndent; - LONG dxOffset; - WORD wAlignment; - SHORT cTabCount; - LONG[MAX_TAB_STOPS] rgxTabs; -} - -struct PARAFORMAT2 { - UINT cbSize = this.sizeof; - DWORD dwMask; - WORD wNumbering; - WORD wEffects; - LONG dxStartIndent; - LONG dxRightIndent; - LONG dxOffset; - WORD wAlignment; - SHORT cTabCount; - LONG[MAX_TAB_STOPS] rgxTabs; - LONG dySpaceBefore; - LONG dySpaceAfter; - LONG dyLineSpacing; - SHORT sStype; - BYTE bLineSpacingRule; - BYTE bOutlineLevel; - WORD wShadingWeight; - WORD wShadingStyle; - WORD wNumberingStart; - WORD wNumberingStyle; - WORD wNumberingTab; - WORD wBorderSpace; - WORD wBorderWidth; - WORD wBorders; -} - -struct SELCHANGE { - NMHDR nmhdr; - CHARRANGE chrg; - WORD seltyp; -} - -struct TEXTRANGEA { - CHARRANGE chrg; - LPSTR lpstrText; -} - -struct TEXTRANGEW { - CHARRANGE chrg; - LPWSTR lpstrText; -} - -struct REQRESIZE { - NMHDR nmhdr; - RECT rc; -} - -struct REPASTESPECIAL { - DWORD dwAspect; - DWORD dwParam; -} - -struct PUNCTUATION { - UINT iSize; - LPSTR szPunctuation; -} - -struct GETTEXTEX { - DWORD cb; - DWORD flags; - UINT codepage; - LPCSTR lpDefaultChar; - LPBOOL lpUsedDefChar; -} - -extern (Windows) { -alias LONG function(char*,LONG,BYTE,INT) EDITWORDBREAKPROCEX; -} - -/* Defines for EM_SETTYPOGRAPHYOPTIONS */ -const TO_ADVANCEDTYPOGRAPHY = 1; -const TO_SIMPLELINEBREAK = 2; - -/* Defines for GETTEXTLENGTHEX */ -const GTL_DEFAULT = 0; -const GTL_USECRLF = 1; -const GTL_PRECISE = 2; -const GTL_CLOSE = 4; -const GTL_NUMCHARS = 8; -const GTL_NUMBYTES = 16; - -struct GETTEXTLENGTHEX { - DWORD flags; - UINT codepage; -} - -version(Unicode) { - alias CHARFORMATW CHARFORMAT; - alias CHARFORMAT2W CHARFORMAT2; - alias FINDTEXTW FINDTEXT; - alias FINDTEXTEXW FINDTEXTEX; - alias TEXTRANGEW TEXTRANGE; -} else { - alias CHARFORMATA CHARFORMAT; - alias CHARFORMAT2A CHARFORMAT2; - alias FINDTEXTA FINDTEXT; - alias FINDTEXTEXA FINDTEXTEX; - alias TEXTRANGEA TEXTRANGE; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_richedit.d) + */ +module core.sys.windows.richedit; + +private import core.sys.windows.windef, core.sys.windows.winuser; +private import core.sys.windows.wingdi; // for LF_FACESIZE + +align(4): + +version(Unicode) { + const wchar[] RICHEDIT_CLASS = "RichEdit20W"; +} else { + const char[] RICHEDIT_CLASS = "RichEdit20A"; +} + +const RICHEDIT_CLASS10A = "RICHEDIT"; + +const TCHAR[] + CF_RTF = "Rich Text Format", + CF_RTFNOOBJS = "Rich Text Format Without Objects", + CF_RETEXTOBJ = "RichEdit Text and Objects"; + +const DWORD + CFM_BOLD = 1, + CFM_ITALIC = 2, + CFM_UNDERLINE = 4, + CFM_STRIKEOUT = 8, + CFM_PROTECTED = 16, + CFM_LINK = 32, + CFM_SIZE = 0x80000000, + CFM_COLOR = 0x40000000, + CFM_FACE = 0x20000000, + CFM_OFFSET = 0x10000000, + CFM_CHARSET = 0x08000000, + CFM_SUBSCRIPT = 0x00030000, + CFM_SUPERSCRIPT = 0x00030000; + +const DWORD + CFE_BOLD = 1, + CFE_ITALIC = 2, + CFE_UNDERLINE = 4, + CFE_STRIKEOUT = 8, + CFE_PROTECTED = 16, + CFE_SUBSCRIPT = 0x00010000, + CFE_SUPERSCRIPT = 0x00020000, + CFE_AUTOCOLOR = 0x40000000; + +const CFM_EFFECTS = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR + | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK; + +// flags for EM_SETIMEOPTIONS +const LPARAM + IMF_FORCENONE = 1, + IMF_FORCEENABLE = 2, + IMF_FORCEDISABLE = 4, + IMF_CLOSESTATUSWINDOW = 8, + IMF_VERTICAL = 32, + IMF_FORCEACTIVE = 64, + IMF_FORCEINACTIVE = 128, + IMF_FORCEREMEMBER = 256; + +const SEL_EMPTY=0; +const SEL_TEXT=1; +const SEL_OBJECT=2; +const SEL_MULTICHAR=4; +const SEL_MULTIOBJECT=8; + +const MAX_TAB_STOPS=32; + +const PFM_ALIGNMENT=8; +const PFM_NUMBERING=32; +const PFM_OFFSET=4; +const PFM_OFFSETINDENT=0x80000000; +const PFM_RIGHTINDENT=2; +const PFM_STARTINDENT=1; +const PFM_TABSTOPS=16; +const PFM_BORDER=2048; +const PFM_LINESPACING=256; +const PFM_NUMBERINGSTART=32768; +const PFM_NUMBERINGSTYLE=8192; +const PFM_NUMBERINGTAB=16384; +const PFM_SHADING=4096; +const PFM_SPACEAFTER=128; +const PFM_SPACEBEFORE=64; +const PFM_STYLE=1024; +const PFM_DONOTHYPHEN=4194304; +const PFM_KEEP=131072; +const PFM_KEEPNEXT=262144; +const PFM_NOLINENUMBER=1048576; +const PFM_NOWIDOWCONTROL=2097152; +const PFM_PAGEBREAKBEFORE=524288; +const PFM_RTLPARA=65536; +const PFM_SIDEBYSIDE=8388608; +const PFM_TABLE=1073741824; +const PFN_BULLET=1; + +const PFE_DONOTHYPHEN=64; +const PFE_KEEP=2; +const PFE_KEEPNEXT=4; +const PFE_NOLINENUMBER=16; +const PFE_NOWIDOWCONTROL=32; +const PFE_PAGEBREAKBEFORE=8; +const PFE_RTLPARA=1; +const PFE_SIDEBYSIDE=128; +const PFE_TABLE=16384; +const PFA_LEFT=1; +const PFA_RIGHT=2; +const PFA_CENTER=3; +const PFA_JUSTIFY=4; +const PFA_FULL_INTERWORD=4; + +const SF_TEXT=1; +const SF_RTF=2; +const SF_RTFNOOBJS=3; +const SF_TEXTIZED=4; +const SF_UNICODE=16; +const SF_USECODEPAGE=32; +const SF_NCRFORNONASCII=64; +const SF_RTFVAL=0x0700; + +const SFF_PWD=0x0800; +const SFF_KEEPDOCINFO=0x1000; +const SFF_PERSISTVIEWSCALE=0x2000; +const SFF_PLAINRTF=0x4000; +const SFF_SELECTION=0x8000; + +const WB_CLASSIFY = 3; +const WB_MOVEWORDLEFT = 4; +const WB_MOVEWORDRIGHT = 5; +const WB_LEFTBREAK = 6; +const WB_RIGHTBREAK = 7; +const WB_MOVEWORDPREV = 4; +const WB_MOVEWORDNEXT = 5; +const WB_PREVBREAK = 6; +const WB_NEXTBREAK = 7; + +const WBF_WORDWRAP = 16; +const WBF_WORDBREAK = 32; +const WBF_OVERFLOW = 64; +const WBF_LEVEL1 = 128; +const WBF_LEVEL2 = 256; +const WBF_CUSTOM = 512; + +const ES_DISABLENOSCROLL = 8192; +const ES_SUNKEN = 16384; +const ES_SAVESEL = 32768; +const ES_EX_NOCALLOLEINIT = 16777216; +const ES_NOIME = 524288; +const ES_NOOLEDRAGDROP = 8; +const ES_SELECTIONBAR = 16777216; +const ES_SELFIME = 262144; +const ES_VERTICAL = 4194304; + +const EM_CANPASTE = WM_USER+50; +const EM_DISPLAYBAND = WM_USER+51; +const EM_EXGETSEL = WM_USER+52; +const EM_EXLIMITTEXT = WM_USER+53; +const EM_EXLINEFROMCHAR = WM_USER+54; +const EM_EXSETSEL = WM_USER+55; +const EM_FINDTEXT = WM_USER+56; +const EM_FORMATRANGE = WM_USER+57; +const EM_GETCHARFORMAT = WM_USER+58; +const EM_GETEVENTMASK = WM_USER+59; +const EM_GETOLEINTERFACE = WM_USER+60; +const EM_GETPARAFORMAT = WM_USER+61; +const EM_GETSELTEXT = WM_USER+62; +const EM_HIDESELECTION = WM_USER+63; +const EM_PASTESPECIAL = WM_USER+64; +const EM_REQUESTRESIZE = WM_USER+65; +const EM_SELECTIONTYPE = WM_USER+66; +const EM_SETBKGNDCOLOR = WM_USER+67; +const EM_SETCHARFORMAT = WM_USER+68; +const EM_SETEVENTMASK = WM_USER+69; +const EM_SETOLECALLBACK = WM_USER+70; +const EM_SETPARAFORMAT = WM_USER+71; +const EM_SETTARGETDEVICE = WM_USER+72; +const EM_STREAMIN = WM_USER+73; +const EM_STREAMOUT = WM_USER+74; +const EM_GETTEXTRANGE = WM_USER+75; +const EM_FINDWORDBREAK = WM_USER+76; +const EM_SETOPTIONS = WM_USER+77; +const EM_GETOPTIONS = WM_USER+78; +const EM_FINDTEXTEX = WM_USER+79; +const EM_GETWORDBREAKPROCEX = WM_USER+80; +const EM_SETWORDBREAKPROCEX = WM_USER+81; +/* RichEdit 2.0 messages */ +const EM_SETUNDOLIMIT = WM_USER+82; +const EM_REDO = WM_USER+84; +const EM_CANREDO = WM_USER+85; +const EM_GETUNDONAME = WM_USER+86; +const EM_GETREDONAME = WM_USER+87; +const EM_STOPGROUPTYPING = WM_USER+88; +const EM_SETTEXTMODE = WM_USER+89; +const EM_GETTEXTMODE = WM_USER+90; +const EM_AUTOURLDETECT = WM_USER+91; +const EM_GETAUTOURLDETECT = WM_USER + 92; +const EM_SETPALETTE = WM_USER + 93; +const EM_GETTEXTEX = WM_USER+94; +const EM_GETTEXTLENGTHEX = WM_USER+95; +const EM_SHOWSCROLLBAR = WM_USER+96; +const EM_SETTEXTEX = WM_USER + 97; +const EM_SETPUNCTUATION = WM_USER + 100; +const EM_GETPUNCTUATION = WM_USER + 101; +const EM_SETWORDWRAPMODE = WM_USER + 102; +const EM_GETWORDWRAPMODE = WM_USER + 103; +const EM_SETIMECOLOR = WM_USER + 104; +const EM_GETIMECOLOR = WM_USER + 105; +const EM_SETIMEOPTIONS = WM_USER + 106; +const EM_GETIMEOPTIONS = WM_USER + 107; +const EM_SETLANGOPTIONS = WM_USER+120; +const EM_GETLANGOPTIONS = WM_USER+121; +const EM_GETIMECOMPMODE = WM_USER+122; +const EM_FINDTEXTW = WM_USER + 123; +const EM_FINDTEXTEXW = WM_USER + 124; +const EM_RECONVERSION = WM_USER + 125; +const EM_SETBIDIOPTIONS = WM_USER + 200; +const EM_GETBIDIOPTIONS = WM_USER + 201; +const EM_SETTYPOGRAPHYOPTIONS = WM_USER+202; +const EM_GETTYPOGRAPHYOPTIONS = WM_USER+203; +const EM_SETEDITSTYLE = WM_USER + 204; +const EM_GETEDITSTYLE = WM_USER + 205; +const EM_GETSCROLLPOS = WM_USER+221; +const EM_SETSCROLLPOS = WM_USER+222; +const EM_SETFONTSIZE = WM_USER+223; +const EM_GETZOOM = WM_USER+224; +const EM_SETZOOM = WM_USER+225; + +const EN_MSGFILTER = 1792; +const EN_REQUESTRESIZE = 1793; +const EN_SELCHANGE = 1794; +const EN_DROPFILES = 1795; +const EN_PROTECTED = 1796; +const EN_CORRECTTEXT = 1797; +const EN_STOPNOUNDO = 1798; +const EN_IMECHANGE = 1799; +const EN_SAVECLIPBOARD = 1800; +const EN_OLEOPFAILED = 1801; +const EN_LINK = 1803; + +const ENM_NONE = 0; +const ENM_CHANGE = 1; +const ENM_UPDATE = 2; +const ENM_SCROLL = 4; +const ENM_SCROLLEVENTS = 8; +const ENM_DRAGDROPDONE = 16; +const ENM_KEYEVENTS = 65536; +const ENM_MOUSEEVENTS = 131072; +const ENM_REQUESTRESIZE = 262144; +const ENM_SELCHANGE = 524288; +const ENM_DROPFILES = 1048576; +const ENM_PROTECTED = 2097152; +const ENM_CORRECTTEXT = 4194304; +const ENM_IMECHANGE = 8388608; +const ENM_LANGCHANGE = 16777216; +const ENM_OBJECTPOSITIONS = 33554432; +const ENM_LINK = 67108864; + +const ECO_AUTOWORDSELECTION=1; +const ECO_AUTOVSCROLL=64; +const ECO_AUTOHSCROLL=128; +const ECO_NOHIDESEL=256; +const ECO_READONLY=2048; +const ECO_WANTRETURN=4096; +const ECO_SAVESEL=0x8000; +const ECO_SELECTIONBAR=0x1000000; +const ECO_VERTICAL=0x400000; + +enum { + ECOOP_SET = 1, + ECOOP_OR, + ECOOP_AND, + ECOOP_XOR +} + +const SCF_DEFAULT = 0; +const SCF_SELECTION = 1; +const SCF_WORD = 2; +const SCF_ALL = 4; +const SCF_USEUIRULES = 8; + +alias DWORD TEXTMODE; +const TM_PLAINTEXT=1; +const TM_RICHTEXT=2; +const TM_SINGLELEVELUNDO=4; +const TM_MULTILEVELUNDO=8; +const TM_SINGLECODEPAGE=16; +const TM_MULTICODEPAGE=32; + +const GT_DEFAULT=0; +const GT_USECRLF=1; + +const yHeightCharPtsMost=1638; +const lDefaultTab=720; + +alias DWORD UNDONAMEID; +const UID_UNKNOWN = 0; +const UID_TYPING = 1; +const UID_DELETE = 2; +const UID_DRAGDROP = 3; +const UID_CUT = 4; +const UID_PASTE = 5; + +struct CHARFORMATA { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char[LF_FACESIZE] szFaceName; +} +struct CHARFORMATW { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR[LF_FACESIZE] szFaceName; +} + +struct CHARFORMAT2A { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char[LF_FACESIZE] szFaceName; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; +} + +struct CHARFORMAT2W { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR[LF_FACESIZE] szFaceName; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; +} + +struct CHARRANGE { + LONG cpMin; + LONG cpMax; +} + +struct COMPCOLOR { + COLORREF crText; + COLORREF crBackground; + DWORD dwEffects; +} + +extern (Windows) { + alias DWORD function(DWORD,PBYTE,LONG,LONG*) EDITSTREAMCALLBACK; +} + +struct EDITSTREAM { + DWORD dwCookie; + DWORD dwError; + EDITSTREAMCALLBACK pfnCallback; +} + +struct ENCORRECTTEXT { + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; +} + +struct ENDROPFILES { + NMHDR nmhdr; + HANDLE hDrop; + LONG cp; + BOOL fProtected; +} + +struct ENLINK { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; +} + +struct ENOLEOPFAILED { + NMHDR nmhdr; + LONG iob; + LONG lOper; + HRESULT hr; +} + +struct ENPROTECTED { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; +} +alias ENPROTECTED* LPENPROTECTED; + +struct ENSAVECLIPBOARD { + NMHDR nmhdr; + LONG cObjectCount; + LONG cch; +} + +struct FINDTEXTA { + CHARRANGE chrg; + LPSTR lpstrText; +} + +struct FINDTEXTW { + CHARRANGE chrg; + LPWSTR lpstrText; +} + +struct FINDTEXTEXA { + CHARRANGE chrg; + LPSTR lpstrText; + CHARRANGE chrgText; +} + +struct FINDTEXTEXW { + CHARRANGE chrg; + LPWSTR lpstrText; + CHARRANGE chrgText; +} + +struct FORMATRANGE { + HDC hdc; + HDC hdcTarget; + RECT rc; + RECT rcPage; + CHARRANGE chrg; +} + +struct MSGFILTER { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; +} + +struct PARAFORMAT { + UINT cbSize = this.sizeof; + DWORD dwMask; + WORD wNumbering; + WORD wReserved; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG[MAX_TAB_STOPS] rgxTabs; +} + +struct PARAFORMAT2 { + UINT cbSize = this.sizeof; + DWORD dwMask; + WORD wNumbering; + WORD wEffects; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG[MAX_TAB_STOPS] rgxTabs; + LONG dySpaceBefore; + LONG dySpaceAfter; + LONG dyLineSpacing; + SHORT sStype; + BYTE bLineSpacingRule; + BYTE bOutlineLevel; + WORD wShadingWeight; + WORD wShadingStyle; + WORD wNumberingStart; + WORD wNumberingStyle; + WORD wNumberingTab; + WORD wBorderSpace; + WORD wBorderWidth; + WORD wBorders; +} + +struct SELCHANGE { + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; +} + +struct TEXTRANGEA { + CHARRANGE chrg; + LPSTR lpstrText; +} + +struct TEXTRANGEW { + CHARRANGE chrg; + LPWSTR lpstrText; +} + +struct REQRESIZE { + NMHDR nmhdr; + RECT rc; +} + +struct REPASTESPECIAL { + DWORD dwAspect; + DWORD dwParam; +} + +struct PUNCTUATION { + UINT iSize; + LPSTR szPunctuation; +} + +struct GETTEXTEX { + DWORD cb; + DWORD flags; + UINT codepage; + LPCSTR lpDefaultChar; + LPBOOL lpUsedDefChar; +} + +extern (Windows) { +alias LONG function(char*,LONG,BYTE,INT) EDITWORDBREAKPROCEX; +} + +/* Defines for EM_SETTYPOGRAPHYOPTIONS */ +const TO_ADVANCEDTYPOGRAPHY = 1; +const TO_SIMPLELINEBREAK = 2; + +/* Defines for GETTEXTLENGTHEX */ +const GTL_DEFAULT = 0; +const GTL_USECRLF = 1; +const GTL_PRECISE = 2; +const GTL_CLOSE = 4; +const GTL_NUMCHARS = 8; +const GTL_NUMBYTES = 16; + +struct GETTEXTLENGTHEX { + DWORD flags; + UINT codepage; +} + +version(Unicode) { + alias CHARFORMATW CHARFORMAT; + alias CHARFORMAT2W CHARFORMAT2; + alias FINDTEXTW FINDTEXT; + alias FINDTEXTEXW FINDTEXTEX; + alias TEXTRANGEW TEXTRANGE; +} else { + alias CHARFORMATA CHARFORMAT; + alias CHARFORMAT2A CHARFORMAT2; + alias FINDTEXTA FINDTEXT; + alias FINDTEXTEXA FINDTEXTEX; + alias TEXTRANGEA TEXTRANGE; +} diff --git a/src/core/sys/windows/richole.d b/src/core/sys/windows/richole.d index b120661cf5..12f4bd7c5a 100644 --- a/src/core/sys/windows/richole.d +++ b/src/core/sys/windows/richole.d @@ -1,100 +1,100 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_richole.d) - */ -module core.sys.windows.richole; - -private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.windows.ole2, core.sys.windows.unknwn, - core.sys.windows.windef; -private import core.sys.windows.richedit; // for CHARRANGE - -align(4): - -const ULONG - REO_GETOBJ_NO_INTERFACES = 0, - REO_GETOBJ_POLEOBJ = 1, - REO_GETOBJ_PSTG = 2, - REO_GETOBJ_POLESITE = 4, - REO_GETOBJ_ALL_INTERFACES = 7, - REO_CP_SELECTION = -1, - REO_IOB_SELECTION = -1, - REO_IOB_USE_CP = -2, - REO_NULL = 0, - REO_READWRITEMASK = 0x3F, - REO_DONTNEEDPALETTE = 32, - REO_BLANK = 16, - REO_DYNAMICSIZE = 8, - REO_INVERTEDSELECT = 4, - REO_BELOWBASELINE = 2, - REO_RESIZABLE = 1, - REO_LINK = 0x80000000, - REO_STATIC = 0x40000000, - REO_SELECTED = 0x08000000, - REO_OPEN = 0x4000000, - REO_INPLACEACTIVE = 0x2000000, - REO_HILITED = 0x1000000, - REO_LINKAVAILABLE = 0x800000, - REO_GETMETAFILE = 0x400000; - -enum { - RECO_PASTE = 0, - RECO_DROP, - RECO_COPY, - RECO_CUT, - RECO_DRAG // = 4 -} - -extern (C) extern const GUID - IID_IRichEditOle, - IID_IRichEditOleCallback; - -struct REOBJECT { - DWORD cbStruct = REOBJECT.sizeof; - LONG cp; - CLSID clsid; - LPOLEOBJECT poleobj; - LPSTORAGE pstg; - LPOLECLIENTSITE polesite; - SIZEL sizel; - DWORD dvaspect; - DWORD dwFlags; - DWORD dwUser; -} - -interface IRichEditOle : IUnknown { - HRESULT GetClientSite(LPOLECLIENTSITE*); - LONG GetObjectCount(); - LONG GetLinkCount(); - HRESULT GetObject(LONG, REOBJECT*, DWORD); - HRESULT InsertObject(REOBJECT*); - HRESULT ConvertObject(LONG, REFCLSID, LPCSTR); - HRESULT ActivateAs(REFCLSID, REFCLSID); - HRESULT SetHostNames(LPCSTR, LPCSTR); - HRESULT SetLinkAvailable(LONG, BOOL); - HRESULT SetDvaspect(LONG, DWORD); - HRESULT HandsOffStorage(LONG); - HRESULT SaveCompleted(LONG, LPSTORAGE); - HRESULT InPlaceDeactivate(); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); - HRESULT ImportDataObject(LPDATAOBJECT, CLIPFORMAT, HGLOBAL); -}; -alias IRichEditOle LPRICHEDITOLE; - -interface IRichEditOleCallback : IUnknown { - HRESULT GetNewStorage(LPSTORAGE*); - HRESULT GetInPlaceContext(LPOLEINPLACEFRAME*, LPOLEINPLACEUIWINDOW*, LPOLEINPLACEFRAMEINFO); - HRESULT ShowContainerUI(BOOL); - HRESULT QueryInsertObject(LPCLSID, LPSTORAGE, LONG); - HRESULT DeleteObject(LPOLEOBJECT); - HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD, BOOL, HGLOBAL); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); - HRESULT GetDragDropEffect(BOOL, DWORD, PDWORD); - HRESULT GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE*, HMENU*); -}; -alias IRichEditOleCallback LPRICHEDITOLECALLBACK; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_richole.d) + */ +module core.sys.windows.richole; + +private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.windows.ole2, core.sys.windows.unknwn, + core.sys.windows.windef; +private import core.sys.windows.richedit; // for CHARRANGE + +align(4): + +const ULONG + REO_GETOBJ_NO_INTERFACES = 0, + REO_GETOBJ_POLEOBJ = 1, + REO_GETOBJ_PSTG = 2, + REO_GETOBJ_POLESITE = 4, + REO_GETOBJ_ALL_INTERFACES = 7, + REO_CP_SELECTION = -1, + REO_IOB_SELECTION = -1, + REO_IOB_USE_CP = -2, + REO_NULL = 0, + REO_READWRITEMASK = 0x3F, + REO_DONTNEEDPALETTE = 32, + REO_BLANK = 16, + REO_DYNAMICSIZE = 8, + REO_INVERTEDSELECT = 4, + REO_BELOWBASELINE = 2, + REO_RESIZABLE = 1, + REO_LINK = 0x80000000, + REO_STATIC = 0x40000000, + REO_SELECTED = 0x08000000, + REO_OPEN = 0x4000000, + REO_INPLACEACTIVE = 0x2000000, + REO_HILITED = 0x1000000, + REO_LINKAVAILABLE = 0x800000, + REO_GETMETAFILE = 0x400000; + +enum { + RECO_PASTE = 0, + RECO_DROP, + RECO_COPY, + RECO_CUT, + RECO_DRAG // = 4 +} + +extern (C) extern const GUID + IID_IRichEditOle, + IID_IRichEditOleCallback; + +struct REOBJECT { + DWORD cbStruct = REOBJECT.sizeof; + LONG cp; + CLSID clsid; + LPOLEOBJECT poleobj; + LPSTORAGE pstg; + LPOLECLIENTSITE polesite; + SIZEL sizel; + DWORD dvaspect; + DWORD dwFlags; + DWORD dwUser; +} + +interface IRichEditOle : IUnknown { + HRESULT GetClientSite(LPOLECLIENTSITE*); + LONG GetObjectCount(); + LONG GetLinkCount(); + HRESULT GetObject(LONG, REOBJECT*, DWORD); + HRESULT InsertObject(REOBJECT*); + HRESULT ConvertObject(LONG, REFCLSID, LPCSTR); + HRESULT ActivateAs(REFCLSID, REFCLSID); + HRESULT SetHostNames(LPCSTR, LPCSTR); + HRESULT SetLinkAvailable(LONG, BOOL); + HRESULT SetDvaspect(LONG, DWORD); + HRESULT HandsOffStorage(LONG); + HRESULT SaveCompleted(LONG, LPSTORAGE); + HRESULT InPlaceDeactivate(); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); + HRESULT ImportDataObject(LPDATAOBJECT, CLIPFORMAT, HGLOBAL); +}; +alias IRichEditOle LPRICHEDITOLE; + +interface IRichEditOleCallback : IUnknown { + HRESULT GetNewStorage(LPSTORAGE*); + HRESULT GetInPlaceContext(LPOLEINPLACEFRAME*, LPOLEINPLACEUIWINDOW*, LPOLEINPLACEFRAMEINFO); + HRESULT ShowContainerUI(BOOL); + HRESULT QueryInsertObject(LPCLSID, LPSTORAGE, LONG); + HRESULT DeleteObject(LPOLEOBJECT); + HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD, BOOL, HGLOBAL); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); + HRESULT GetDragDropEffect(BOOL, DWORD, PDWORD); + HRESULT GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE*, HMENU*); +}; +alias IRichEditOleCallback LPRICHEDITOLECALLBACK; diff --git a/src/core/sys/windows/rpc.d b/src/core/sys/windows/rpc.d index 43149c5625..c133a133cf 100644 --- a/src/core/sys/windows/rpc.d +++ b/src/core/sys/windows/rpc.d @@ -1,30 +1,30 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rpc.d) - */ -module core.sys.windows.rpc; - -/* Moved to rpcdecp (duplicate definition). - typedef void *I_RPC_HANDLE; - alias long RPC_STATUS; - // Moved to rpcdce: - RpcImpersonateClient - RpcRevertToSelf -*/ - -public import core.sys.windows.unknwn; -public import core.sys.windows.rpcdce; // also pulls in rpcdcep -public import core.sys.windows.rpcnsi; -public import core.sys.windows.rpcnterr; -public import core.sys.windows.winerror; - -alias MIDL_user_allocate midl_user_allocate; -alias MIDL_user_free midl_user_free; - -extern (Windows) { - int I_RpcMapWin32Status(RPC_STATUS); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpc.d) + */ +module core.sys.windows.rpc; + +/* Moved to rpcdecp (duplicate definition). + typedef void *I_RPC_HANDLE; + alias long RPC_STATUS; + // Moved to rpcdce: + RpcImpersonateClient + RpcRevertToSelf +*/ + +public import core.sys.windows.unknwn; +public import core.sys.windows.rpcdce; // also pulls in rpcdcep +public import core.sys.windows.rpcnsi; +public import core.sys.windows.rpcnterr; +public import core.sys.windows.winerror; + +alias MIDL_user_allocate midl_user_allocate; +alias MIDL_user_free midl_user_free; + +extern (Windows) { + int I_RpcMapWin32Status(RPC_STATUS); +} diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d index f3017e4f61..ad55df306b 100644 --- a/src/core/sys/windows/rpcdce.d +++ b/src/core/sys/windows/rpcdce.d @@ -1,410 +1,410 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdce.d) - */ -module core.sys.windows.rpcdce; -pragma(lib, "Rpcrt4"); - -// TODO: I think MinGW got this wrong. RPC_UNICODE_SUPPORTED should be -// replaced aliases for version(Unicode) - -public import core.sys.windows.rpcdcep; -private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.windef; - -// FIXME: clean up Windows version support - -alias UUID uuid_t; -alias UUID_VECTOR uuid_vector_t; -alias void RPC_MGR_EPV; - -// for RpcMgmtSetComTimeout() -enum : uint { - RPC_C_BINDING_MIN_TIMEOUT = 0, - RPC_C_BINDING_DEFAULT_TIMEOUT = 5, - RPC_C_BINDING_MAX_TIMEOUT = 9, - RPC_C_BINDING_INFINITE_TIMEOUT = 10 -} - -const RPC_C_CANCEL_INFINITE_TIMEOUT= -1; -const RPC_C_LISTEN_MAX_CALLS_DEFAULT=1234; -const RPC_C_PROTSEQ_MAX_REQS_DEFAULT=10; -const RPC_C_BIND_TO_ALL_NICS=1; -const RPC_C_USE_INTERNET_PORT=1; -const RPC_C_USE_INTRANET_PORT=2; - -// for RPC_STATS_VECTOR, used by RpcMgmyInqStats -enum : uint { - RPC_C_STATS_CALLS_IN = 0, - RPC_C_STATS_CALLS_OUT, - RPC_C_STATS_PKTS_IN, - RPC_C_STATS_PKTS_OUT -} - -const RPC_IF_AUTOLISTEN=0x0001; -const RPC_IF_OLE=2; -const RPC_C_MGMT_INQ_IF_IDS=0; -const RPC_C_MGMT_INQ_PRINC_NAME=1; -const RPC_C_MGMT_INQ_STATS=2; -const RPC_C_MGMT_IS_SERVER_LISTEN=3; -const RPC_C_MGMT_STOP_SERVER_LISTEN=4; - -// Inquiry Type for RpcMgmtEpEltInqBegin() -enum : uint { - RPC_C_EP_ALL_ELTS = 0, - RPC_C_EP_MATCH_BY_IF, - RPC_C_EP_MATCH_BY_OBJ, - RPC_C_EP_MATCH_BY_BOTH -} - -// for RpcMgmtEpEltInqNext() -enum : uint { - RPC_C_VERS_ALL = 1, - RPC_C_VERS_COMPATIBLE, - RPC_C_VERS_EXACT, - RPC_C_VERS_MAJOR_ONLY, - RPC_C_VERS_UPTO -} - -const DCE_C_ERROR_STRING_LEN=256; -const RPC_C_PARM_MAX_PACKET_LENGTH=1; -const RPC_C_PARM_BUFFER_LENGTH=2; -const RPC_C_AUTHN_LEVEL_DEFAULT=0; -const RPC_C_AUTHN_LEVEL_NONE=1; -const RPC_C_AUTHN_LEVEL_CONNECT=2; -const RPC_C_AUTHN_LEVEL_CALL=3; -const RPC_C_AUTHN_LEVEL_PKT=4; -const RPC_C_AUTHN_LEVEL_PKT_INTEGRITY=5; -const RPC_C_AUTHN_LEVEL_PKT_PRIVACY=6; -const RPC_C_IMP_LEVEL_ANONYMOUS=1; -const RPC_C_IMP_LEVEL_IDENTIFY=2; -const RPC_C_IMP_LEVEL_IMPERSONATE=3; -const RPC_C_IMP_LEVEL_DELEGATE=4; -const RPC_C_QOS_IDENTITY_STATIC=0; -const RPC_C_QOS_IDENTITY_DYNAMIC=1; -const RPC_C_QOS_CAPABILITIES_DEFAULT=0; -const RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH=1; - -// These enums were buggy in MinGW ! -const RPC_C_PROTECT_LEVEL_DEFAULT = RPC_C_AUTHN_LEVEL_DEFAULT; -const RPC_C_PROTECT_LEVEL_NONE = RPC_C_AUTHN_LEVEL_NONE; -const RPC_C_PROTECT_LEVEL_CONNECT = RPC_C_AUTHN_LEVEL_CONNECT; -const RPC_C_PROTECT_LEVEL_CALL = RPC_C_AUTHN_LEVEL_CALL; -const RPC_C_PROTECT_LEVEL_PKT = RPC_C_AUTHN_LEVEL_PKT; -const RPC_C_PROTECT_LEVEL_PKT_INTEGRITY = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY; -const RPC_C_PROTECT_LEVEL_PKT_PRIVACY = RPC_C_AUTHN_LEVEL_PKT_PRIVACY; - -const RPC_C_AUTHN_NONE=0; -const RPC_C_AUTHN_DCE_PRIVATE=1; -const RPC_C_AUTHN_DCE_PUBLIC=2; -const RPC_C_AUTHN_DEC_PUBLIC=4; -const RPC_C_AUTHN_WINNT=10; -const RPC_C_AUTHN_DEFAULT=0xFFFFFFFF; -//const RPC_C_SECURITY_QOS_VERSION=L; // FIXME(MinGW): This is nonsense! -const SEC_WINNT_AUTH_IDENTITY_ANSI=0x1; -const SEC_WINNT_AUTH_IDENTITY_UNICODE=0x2; -const RPC_C_AUTHZ_NONE=0; -const RPC_C_AUTHZ_NAME=1; -const RPC_C_AUTHZ_DCE=2; -const RPC_C_AUTHZ_DEFAULT=0xFFFFFFFF; - -alias I_RPC_HANDLE RPC_BINDING_HANDLE; -alias RPC_BINDING_HANDLE handle_t; - -struct RPC_BINDING_VECTOR { - uint Count; - RPC_BINDING_HANDLE[1] BindingH; -} - -alias RPC_BINDING_HANDLE rpc_binding_handle_t; -alias RPC_BINDING_VECTOR rpc_binding_vector_t; - - -struct UUID_VECTOR { - uint Count; - UUID*[1] Uuid; -} - -alias void* RPC_IF_HANDLE; - -struct RPC_IF_ID { - UUID Uuid; - ushort VersMajor; - ushort VersMinor; -} - -struct RPC_POLICY { - uint Length; - uint EndpointFlags; - uint NICFlags; -} -alias RPC_POLICY* PRPC_POLICY; - -extern (Windows) { - alias void function(UUID*, UUID*, RPC_STATUS*) RPC_OBJECT_INQ_FN; - alias RPC_STATUS function(RPC_IF_HANDLE, void*) RPC_IF_CALLBACK_FN; -} - -struct RPC_STATS_VECTOR { - uint Count; - uint[1] Stats; -} - -struct RPC_IF_ID_VECTOR { - uint Count; - RPC_IF_ID*[1] IfId; -} -mixin DECLARE_HANDLE!("RPC_AUTH_IDENTITY_HANDLE"); -mixin DECLARE_HANDLE!("RPC_AUTHZ_HANDLE"); - -struct RPC_SECURITY_QOS { - uint Version; - uint Capabilities; - uint IdentityTracking; - uint ImpersonationType; -} -alias RPC_SECURITY_QOS* PRPC_SECURITY_QOS; - -struct SEC_WINNT_AUTH_IDENTITY_W { - ushort* User; - uint UserLength; - ushort* Domain; - uint DomainLength; - ushort* Password; - uint PasswordLength; - uint Flags; -} -alias SEC_WINNT_AUTH_IDENTITY_W* PSEC_WINNT_AUTH_IDENTITY_W; - -struct SEC_WINNT_AUTH_IDENTITY_A { - ubyte* User; - uint UserLength; - ubyte* Domain; - uint DomainLength; - ubyte* Password; - uint PasswordLength; - uint Flags; -} -alias SEC_WINNT_AUTH_IDENTITY_A* PSEC_WINNT_AUTH_IDENTITY_A; - -struct RPC_CLIENT_INFORMATION1 { - ubyte* UserName; - ubyte* ComputerName; - ushort Privilege; - uint AuthFlags; -} -alias RPC_CLIENT_INFORMATION1* PRPC_CLIENT_INFORMATION1; -alias I_RPC_HANDLE* RPC_EP_INQ_HANDLE; -extern (Windows) { - alias int function(RPC_BINDING_HANDLE, uint, RPC_STATUS*) RPC_MGMT_AUTHORIZATION_FN; -} - -struct RPC_PROTSEQ_VECTORA { - uint Count; - ubyte*[1] Protseq; -} - -struct RPC_PROTSEQ_VECTORW { - uint Count; - ushort*[1] Protseq; -} - -extern (Windows) { - RPC_STATUS RpcBindingFromStringBindingA(char*, RPC_BINDING_HANDLE*); - RPC_STATUS RpcBindingFromStringBindingW(wchar*, RPC_BINDING_HANDLE*); - RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE, char**); - RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE, wchar**); - RPC_STATUS RpcStringBindingComposeA(char*, char*, char*, char*, char*, char**); - RPC_STATUS RpcStringBindingComposeW(wchar*, wchar*, wchar*, wchar*, wchar*, wchar**); - RPC_STATUS RpcStringBindingParseA(char*, char**, char**, char**, char**, char**); - RPC_STATUS RpcStringBindingParseW(wchar*, wchar**, wchar**, wchar**, wchar**, wchar**); - RPC_STATUS RpcStringFreeA(char**); - RPC_STATUS RpcStringFreeW(wchar**); - RPC_STATUS RpcNetworkIsProtseqValidA(char*); - RPC_STATUS RpcNetworkIsProtseqValidW(wchar*); - RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**); - RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**); - RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**); - RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**); - RPC_STATUS RpcServerUseProtseqA(char*, uint, void*); - RPC_STATUS RpcServerUseProtseqW(wchar*, uint, void*); - RPC_STATUS RpcServerUseProtseqExA(char*, uint MaxCalls, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqExW(wchar*, uint, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqEpA(char*, uint, char*, void*); - RPC_STATUS RpcServerUseProtseqEpExA(char*, uint, char*, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqEpW(wchar*, uint, wchar*, void*); - RPC_STATUS RpcServerUseProtseqEpExW(wchar*, uint, wchar*, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqIfA(char*, uint, RPC_IF_HANDLE, void*); - RPC_STATUS RpcServerUseProtseqIfExA(char*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqIfW(wchar*, uint, RPC_IF_HANDLE, void*); - RPC_STATUS RpcServerUseProtseqIfExW(wchar*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); - RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE, uint, char**); - RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE, uint, wchar**); - RPC_STATUS RpcServerInqDefaultPrincNameA(uint, char**); - RPC_STATUS RpcServerInqDefaultPrincNameW(uint, wchar**); - RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE, uint, char**); - RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE, uint, wchar**); - RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, char**, uint*, uint*, uint*); - RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, wchar**, uint*, uint*, uint*); - RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); - RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); - RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); - RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); - RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); - RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); - RPC_STATUS RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); - RPC_STATUS RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); - alias void function(void*, wchar*, uint, void**, RPC_STATUS*) RPC_AUTH_KEY_RETRIEVAL_FN; - RPC_STATUS RpcServerRegisterAuthInfoA(char*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); - RPC_STATUS RpcServerRegisterAuthInfoW(wchar*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); - RPC_STATUS UuidToStringA(UUID*, char**); - RPC_STATUS UuidFromStringA(char*, UUID*); - RPC_STATUS UuidToStringW(UUID*, wchar**); - RPC_STATUS UuidFromStringW(wchar*, UUID*); - RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); - RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); - RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); - RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); - RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); - RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); - RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, char**); - RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, wchar**); - - // MinGW erroneously had these in rpc.h - RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE); - RPC_STATUS RpcRevertToSelf(); -} - -version (Unicode) { - alias RPC_PROTSEQ_VECTORW RPC_PROTSEQ_VECTOR; - alias SEC_WINNT_AUTH_IDENTITY_W SEC_WINNT_AUTH_IDENTITY; - alias PSEC_WINNT_AUTH_IDENTITY_W PSEC_WINNT_AUTH_IDENTITY; - alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; - alias RpcBindingFromStringBindingW RpcBindingFromStringBinding; - alias RpcBindingToStringBindingW RpcBindingToStringBinding; - alias RpcStringBindingComposeW RpcStringBindingCompose; - alias RpcStringBindingParseW RpcStringBindingParse; - alias RpcStringFreeW RpcStringFree; - alias RpcNetworkIsProtseqValidW RpcNetworkIsProtseqValid; - alias RpcNetworkInqProtseqsW RpcNetworkInqProtseqs; - alias RpcProtseqVectorFreeW RpcProtseqVectorFree; - alias RpcServerUseProtseqW RpcServerUseProtseq; - alias RpcServerUseProtseqExW RpcServerUseProtseqEx; - alias RpcServerUseProtseqEpW RpcServerUseProtseqEp; - alias RpcServerUseProtseqEpExW RpcServerUseProtseqEpEx; - alias RpcServerUseProtseqIfW RpcServerUseProtseqIf; - alias RpcServerUseProtseqIfExW RpcServerUseProtseqIfEx; - alias RpcMgmtInqServerPrincNameW RpcMgmtInqServerPrincName; - alias RpcServerInqDefaultPrincNameW RpcServerInqDefaultPrincName; - alias RpcNsBindingInqEntryNameW RpcNsBindingInqEntryName; - alias RpcBindingInqAuthClientW RpcBindingInqAuthClient; - alias RpcBindingInqAuthInfoW RpcBindingInqAuthInfo; - alias RpcBindingSetAuthInfoW RpcBindingSetAuthInfo; - alias RpcServerRegisterAuthInfoW RpcServerRegisterAuthInfo; - alias RpcBindingInqAuthInfoExW RpcBindingInqAuthInfoEx; - alias RpcBindingSetAuthInfoExW RpcBindingSetAuthInfoEx; - alias UuidFromStringW UuidFromString; - alias UuidToStringW UuidToString; - alias RpcEpRegisterNoReplaceW RpcEpRegisterNoReplace; - alias RpcEpRegisterW RpcEpRegister; - alias DceErrorInqTextW DceErrorInqText; -} else { // Ansi - alias RPC_PROTSEQ_VECTORA RPC_PROTSEQ_VECTOR; - alias SEC_WINNT_AUTH_IDENTITY_A SEC_WINNT_AUTH_IDENTITY; - alias PSEC_WINNT_AUTH_IDENTITY_A PSEC_WINNT_AUTH_IDENTITY; - alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; - alias RpcBindingFromStringBindingA RpcBindingFromStringBinding; - alias RpcBindingToStringBindingA RpcBindingToStringBinding; - alias RpcStringBindingComposeA RpcStringBindingCompose; - alias RpcStringBindingParseA RpcStringBindingParse; - alias RpcStringFreeA RpcStringFree; - alias RpcNetworkIsProtseqValidA RpcNetworkIsProtseqValid; - alias RpcNetworkInqProtseqsA RpcNetworkInqProtseqs; - alias RpcProtseqVectorFreeA RpcProtseqVectorFree; - alias RpcServerUseProtseqA RpcServerUseProtseq; - alias RpcServerUseProtseqExA RpcServerUseProtseqEx; - alias RpcServerUseProtseqEpA RpcServerUseProtseqEp; - alias RpcServerUseProtseqEpExA RpcServerUseProtseqEpEx; - alias RpcServerUseProtseqIfA RpcServerUseProtseqIf; - alias RpcServerUseProtseqIfExA RpcServerUseProtseqIfEx; - alias RpcMgmtInqServerPrincNameA RpcMgmtInqServerPrincName; - alias RpcServerInqDefaultPrincNameA RpcServerInqDefaultPrincName; - alias RpcNsBindingInqEntryNameA RpcNsBindingInqEntryName; - alias RpcBindingInqAuthClientA RpcBindingInqAuthClient; - alias RpcBindingInqAuthInfoA RpcBindingInqAuthInfo; - alias RpcBindingSetAuthInfoA RpcBindingSetAuthInfo; - alias RpcServerRegisterAuthInfoA RpcServerRegisterAuthInfo; - alias RpcBindingInqAuthInfoExA RpcBindingInqAuthInfoEx; - alias RpcBindingSetAuthInfoExA RpcBindingSetAuthInfoEx; - alias UuidFromStringA UuidFromString; - alias UuidToStringA UuidToString; - alias RpcEpRegisterNoReplaceA RpcEpRegisterNoReplace; - alias RpcEpRegisterA RpcEpRegister; - alias DceErrorInqTextA DceErrorInqText; -} //#endif // UNICODE - - -RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); -RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE*); -RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE, UUID*); -RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE); -RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE, UUID*); -RPC_STATUS RpcMgmtInqDefaultProtectLevel(uint, uint*); -RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR**); -RPC_STATUS RpcIfInqId(RPC_IF_HANDLE, RPC_IF_ID*); -RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE, uint*); -RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE, uint); -RPC_STATUS RpcMgmtSetCancelTimeout(int Timeout); -RPC_STATUS RpcObjectInqType(UUID*, UUID*); -RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN*); -RPC_STATUS RpcObjectSetType(UUID*, UUID*); -RPC_STATUS RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR**); -RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV**); -RPC_STATUS RpcServerListen(uint, uint, uint); -RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*); -RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, RPC_IF_CALLBACK_FN*); -RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, uint, RPC_IF_CALLBACK_FN*); -RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE, UUID*, uint); -RPC_STATUS RpcServerUseAllProtseqs(uint, void*); -RPC_STATUS RpcServerUseAllProtseqsEx(uint, void*, PRPC_POLICY); -RPC_STATUS RpcServerUseAllProtseqsIf(uint, RPC_IF_HANDLE, void*); -RPC_STATUS RpcServerUseAllProtseqsIfEx(uint, RPC_IF_HANDLE, void*, PRPC_POLICY); -RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**); -RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE, RPC_STATS_VECTOR**); -RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE); -RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE); -RPC_STATUS RpcMgmtWaitServerListen(); -RPC_STATUS RpcMgmtSetServerStackSize(uint); -void RpcSsDontSerializeContext(); -RPC_STATUS RpcMgmtEnableIdleCleanup(); -RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE, RPC_IF_ID_VECTOR**); -RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR**); -RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE, RPC_IF_HANDLE); -RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); - -// never returns -void RpcRaiseException(RPC_STATUS); -RPC_STATUS RpcTestCancel(); -RPC_STATUS RpcCancelThread(void*); -RPC_STATUS UuidCreate(UUID*); -int UuidCompare(UUID*, UUID*, RPC_STATUS*); -RPC_STATUS UuidCreateNil(UUID*); -int UuidEqual(UUID*, UUID*, RPC_STATUS*); -ushort UuidHash(UUID*, RPC_STATUS*); -int UuidIsNil(UUID*, RPC_STATUS*); -RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*); -RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, uint, UUID*, RPC_EP_INQ_HANDLE*); -RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); -RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE, UUID*); -RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); -RPC_STATUS RpcMgmtInqParameter(uint, uint*); -RPC_STATUS RpcMgmtSetParameter(uint, uint); -RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*); -RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint); - -//static if (_WIN32_WINNT >= 0x500) { - RPC_STATUS UuidCreateSequential(UUID*); -//} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdce.d) + */ +module core.sys.windows.rpcdce; +pragma(lib, "Rpcrt4"); + +// TODO: I think MinGW got this wrong. RPC_UNICODE_SUPPORTED should be +// replaced aliases for version(Unicode) + +public import core.sys.windows.rpcdcep; +private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.windef; + +// FIXME: clean up Windows version support + +alias UUID uuid_t; +alias UUID_VECTOR uuid_vector_t; +alias void RPC_MGR_EPV; + +// for RpcMgmtSetComTimeout() +enum : uint { + RPC_C_BINDING_MIN_TIMEOUT = 0, + RPC_C_BINDING_DEFAULT_TIMEOUT = 5, + RPC_C_BINDING_MAX_TIMEOUT = 9, + RPC_C_BINDING_INFINITE_TIMEOUT = 10 +} + +const RPC_C_CANCEL_INFINITE_TIMEOUT= -1; +const RPC_C_LISTEN_MAX_CALLS_DEFAULT=1234; +const RPC_C_PROTSEQ_MAX_REQS_DEFAULT=10; +const RPC_C_BIND_TO_ALL_NICS=1; +const RPC_C_USE_INTERNET_PORT=1; +const RPC_C_USE_INTRANET_PORT=2; + +// for RPC_STATS_VECTOR, used by RpcMgmyInqStats +enum : uint { + RPC_C_STATS_CALLS_IN = 0, + RPC_C_STATS_CALLS_OUT, + RPC_C_STATS_PKTS_IN, + RPC_C_STATS_PKTS_OUT +} + +const RPC_IF_AUTOLISTEN=0x0001; +const RPC_IF_OLE=2; +const RPC_C_MGMT_INQ_IF_IDS=0; +const RPC_C_MGMT_INQ_PRINC_NAME=1; +const RPC_C_MGMT_INQ_STATS=2; +const RPC_C_MGMT_IS_SERVER_LISTEN=3; +const RPC_C_MGMT_STOP_SERVER_LISTEN=4; + +// Inquiry Type for RpcMgmtEpEltInqBegin() +enum : uint { + RPC_C_EP_ALL_ELTS = 0, + RPC_C_EP_MATCH_BY_IF, + RPC_C_EP_MATCH_BY_OBJ, + RPC_C_EP_MATCH_BY_BOTH +} + +// for RpcMgmtEpEltInqNext() +enum : uint { + RPC_C_VERS_ALL = 1, + RPC_C_VERS_COMPATIBLE, + RPC_C_VERS_EXACT, + RPC_C_VERS_MAJOR_ONLY, + RPC_C_VERS_UPTO +} + +const DCE_C_ERROR_STRING_LEN=256; +const RPC_C_PARM_MAX_PACKET_LENGTH=1; +const RPC_C_PARM_BUFFER_LENGTH=2; +const RPC_C_AUTHN_LEVEL_DEFAULT=0; +const RPC_C_AUTHN_LEVEL_NONE=1; +const RPC_C_AUTHN_LEVEL_CONNECT=2; +const RPC_C_AUTHN_LEVEL_CALL=3; +const RPC_C_AUTHN_LEVEL_PKT=4; +const RPC_C_AUTHN_LEVEL_PKT_INTEGRITY=5; +const RPC_C_AUTHN_LEVEL_PKT_PRIVACY=6; +const RPC_C_IMP_LEVEL_ANONYMOUS=1; +const RPC_C_IMP_LEVEL_IDENTIFY=2; +const RPC_C_IMP_LEVEL_IMPERSONATE=3; +const RPC_C_IMP_LEVEL_DELEGATE=4; +const RPC_C_QOS_IDENTITY_STATIC=0; +const RPC_C_QOS_IDENTITY_DYNAMIC=1; +const RPC_C_QOS_CAPABILITIES_DEFAULT=0; +const RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH=1; + +// These enums were buggy in MinGW ! +const RPC_C_PROTECT_LEVEL_DEFAULT = RPC_C_AUTHN_LEVEL_DEFAULT; +const RPC_C_PROTECT_LEVEL_NONE = RPC_C_AUTHN_LEVEL_NONE; +const RPC_C_PROTECT_LEVEL_CONNECT = RPC_C_AUTHN_LEVEL_CONNECT; +const RPC_C_PROTECT_LEVEL_CALL = RPC_C_AUTHN_LEVEL_CALL; +const RPC_C_PROTECT_LEVEL_PKT = RPC_C_AUTHN_LEVEL_PKT; +const RPC_C_PROTECT_LEVEL_PKT_INTEGRITY = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY; +const RPC_C_PROTECT_LEVEL_PKT_PRIVACY = RPC_C_AUTHN_LEVEL_PKT_PRIVACY; + +const RPC_C_AUTHN_NONE=0; +const RPC_C_AUTHN_DCE_PRIVATE=1; +const RPC_C_AUTHN_DCE_PUBLIC=2; +const RPC_C_AUTHN_DEC_PUBLIC=4; +const RPC_C_AUTHN_WINNT=10; +const RPC_C_AUTHN_DEFAULT=0xFFFFFFFF; +//const RPC_C_SECURITY_QOS_VERSION=L; // FIXME(MinGW): This is nonsense! +const SEC_WINNT_AUTH_IDENTITY_ANSI=0x1; +const SEC_WINNT_AUTH_IDENTITY_UNICODE=0x2; +const RPC_C_AUTHZ_NONE=0; +const RPC_C_AUTHZ_NAME=1; +const RPC_C_AUTHZ_DCE=2; +const RPC_C_AUTHZ_DEFAULT=0xFFFFFFFF; + +alias I_RPC_HANDLE RPC_BINDING_HANDLE; +alias RPC_BINDING_HANDLE handle_t; + +struct RPC_BINDING_VECTOR { + uint Count; + RPC_BINDING_HANDLE[1] BindingH; +} + +alias RPC_BINDING_HANDLE rpc_binding_handle_t; +alias RPC_BINDING_VECTOR rpc_binding_vector_t; + + +struct UUID_VECTOR { + uint Count; + UUID*[1] Uuid; +} + +alias void* RPC_IF_HANDLE; + +struct RPC_IF_ID { + UUID Uuid; + ushort VersMajor; + ushort VersMinor; +} + +struct RPC_POLICY { + uint Length; + uint EndpointFlags; + uint NICFlags; +} +alias RPC_POLICY* PRPC_POLICY; + +extern (Windows) { + alias void function(UUID*, UUID*, RPC_STATUS*) RPC_OBJECT_INQ_FN; + alias RPC_STATUS function(RPC_IF_HANDLE, void*) RPC_IF_CALLBACK_FN; +} + +struct RPC_STATS_VECTOR { + uint Count; + uint[1] Stats; +} + +struct RPC_IF_ID_VECTOR { + uint Count; + RPC_IF_ID*[1] IfId; +} +mixin DECLARE_HANDLE!("RPC_AUTH_IDENTITY_HANDLE"); +mixin DECLARE_HANDLE!("RPC_AUTHZ_HANDLE"); + +struct RPC_SECURITY_QOS { + uint Version; + uint Capabilities; + uint IdentityTracking; + uint ImpersonationType; +} +alias RPC_SECURITY_QOS* PRPC_SECURITY_QOS; + +struct SEC_WINNT_AUTH_IDENTITY_W { + ushort* User; + uint UserLength; + ushort* Domain; + uint DomainLength; + ushort* Password; + uint PasswordLength; + uint Flags; +} +alias SEC_WINNT_AUTH_IDENTITY_W* PSEC_WINNT_AUTH_IDENTITY_W; + +struct SEC_WINNT_AUTH_IDENTITY_A { + ubyte* User; + uint UserLength; + ubyte* Domain; + uint DomainLength; + ubyte* Password; + uint PasswordLength; + uint Flags; +} +alias SEC_WINNT_AUTH_IDENTITY_A* PSEC_WINNT_AUTH_IDENTITY_A; + +struct RPC_CLIENT_INFORMATION1 { + ubyte* UserName; + ubyte* ComputerName; + ushort Privilege; + uint AuthFlags; +} +alias RPC_CLIENT_INFORMATION1* PRPC_CLIENT_INFORMATION1; +alias I_RPC_HANDLE* RPC_EP_INQ_HANDLE; +extern (Windows) { + alias int function(RPC_BINDING_HANDLE, uint, RPC_STATUS*) RPC_MGMT_AUTHORIZATION_FN; +} + +struct RPC_PROTSEQ_VECTORA { + uint Count; + ubyte*[1] Protseq; +} + +struct RPC_PROTSEQ_VECTORW { + uint Count; + ushort*[1] Protseq; +} + +extern (Windows) { + RPC_STATUS RpcBindingFromStringBindingA(char*, RPC_BINDING_HANDLE*); + RPC_STATUS RpcBindingFromStringBindingW(wchar*, RPC_BINDING_HANDLE*); + RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE, char**); + RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE, wchar**); + RPC_STATUS RpcStringBindingComposeA(char*, char*, char*, char*, char*, char**); + RPC_STATUS RpcStringBindingComposeW(wchar*, wchar*, wchar*, wchar*, wchar*, wchar**); + RPC_STATUS RpcStringBindingParseA(char*, char**, char**, char**, char**, char**); + RPC_STATUS RpcStringBindingParseW(wchar*, wchar**, wchar**, wchar**, wchar**, wchar**); + RPC_STATUS RpcStringFreeA(char**); + RPC_STATUS RpcStringFreeW(wchar**); + RPC_STATUS RpcNetworkIsProtseqValidA(char*); + RPC_STATUS RpcNetworkIsProtseqValidW(wchar*); + RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**); + RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**); + RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**); + RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**); + RPC_STATUS RpcServerUseProtseqA(char*, uint, void*); + RPC_STATUS RpcServerUseProtseqW(wchar*, uint, void*); + RPC_STATUS RpcServerUseProtseqExA(char*, uint MaxCalls, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqExW(wchar*, uint, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqEpA(char*, uint, char*, void*); + RPC_STATUS RpcServerUseProtseqEpExA(char*, uint, char*, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqEpW(wchar*, uint, wchar*, void*); + RPC_STATUS RpcServerUseProtseqEpExW(wchar*, uint, wchar*, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqIfA(char*, uint, RPC_IF_HANDLE, void*); + RPC_STATUS RpcServerUseProtseqIfExA(char*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqIfW(wchar*, uint, RPC_IF_HANDLE, void*); + RPC_STATUS RpcServerUseProtseqIfExW(wchar*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); + RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE, uint, char**); + RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE, uint, wchar**); + RPC_STATUS RpcServerInqDefaultPrincNameA(uint, char**); + RPC_STATUS RpcServerInqDefaultPrincNameW(uint, wchar**); + RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE, uint, char**); + RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE, uint, wchar**); + RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, char**, uint*, uint*, uint*); + RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, wchar**, uint*, uint*, uint*); + RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); + RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); + RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); + RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); + RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); + alias void function(void*, wchar*, uint, void**, RPC_STATUS*) RPC_AUTH_KEY_RETRIEVAL_FN; + RPC_STATUS RpcServerRegisterAuthInfoA(char*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); + RPC_STATUS RpcServerRegisterAuthInfoW(wchar*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); + RPC_STATUS UuidToStringA(UUID*, char**); + RPC_STATUS UuidFromStringA(char*, UUID*); + RPC_STATUS UuidToStringW(UUID*, wchar**); + RPC_STATUS UuidFromStringW(wchar*, UUID*); + RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); + RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); + RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); + RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); + RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); + RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); + RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, char**); + RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, wchar**); + + // MinGW erroneously had these in rpc.h + RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE); + RPC_STATUS RpcRevertToSelf(); +} + +version (Unicode) { + alias RPC_PROTSEQ_VECTORW RPC_PROTSEQ_VECTOR; + alias SEC_WINNT_AUTH_IDENTITY_W SEC_WINNT_AUTH_IDENTITY; + alias PSEC_WINNT_AUTH_IDENTITY_W PSEC_WINNT_AUTH_IDENTITY; + alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; + alias RpcBindingFromStringBindingW RpcBindingFromStringBinding; + alias RpcBindingToStringBindingW RpcBindingToStringBinding; + alias RpcStringBindingComposeW RpcStringBindingCompose; + alias RpcStringBindingParseW RpcStringBindingParse; + alias RpcStringFreeW RpcStringFree; + alias RpcNetworkIsProtseqValidW RpcNetworkIsProtseqValid; + alias RpcNetworkInqProtseqsW RpcNetworkInqProtseqs; + alias RpcProtseqVectorFreeW RpcProtseqVectorFree; + alias RpcServerUseProtseqW RpcServerUseProtseq; + alias RpcServerUseProtseqExW RpcServerUseProtseqEx; + alias RpcServerUseProtseqEpW RpcServerUseProtseqEp; + alias RpcServerUseProtseqEpExW RpcServerUseProtseqEpEx; + alias RpcServerUseProtseqIfW RpcServerUseProtseqIf; + alias RpcServerUseProtseqIfExW RpcServerUseProtseqIfEx; + alias RpcMgmtInqServerPrincNameW RpcMgmtInqServerPrincName; + alias RpcServerInqDefaultPrincNameW RpcServerInqDefaultPrincName; + alias RpcNsBindingInqEntryNameW RpcNsBindingInqEntryName; + alias RpcBindingInqAuthClientW RpcBindingInqAuthClient; + alias RpcBindingInqAuthInfoW RpcBindingInqAuthInfo; + alias RpcBindingSetAuthInfoW RpcBindingSetAuthInfo; + alias RpcServerRegisterAuthInfoW RpcServerRegisterAuthInfo; + alias RpcBindingInqAuthInfoExW RpcBindingInqAuthInfoEx; + alias RpcBindingSetAuthInfoExW RpcBindingSetAuthInfoEx; + alias UuidFromStringW UuidFromString; + alias UuidToStringW UuidToString; + alias RpcEpRegisterNoReplaceW RpcEpRegisterNoReplace; + alias RpcEpRegisterW RpcEpRegister; + alias DceErrorInqTextW DceErrorInqText; +} else { // Ansi + alias RPC_PROTSEQ_VECTORA RPC_PROTSEQ_VECTOR; + alias SEC_WINNT_AUTH_IDENTITY_A SEC_WINNT_AUTH_IDENTITY; + alias PSEC_WINNT_AUTH_IDENTITY_A PSEC_WINNT_AUTH_IDENTITY; + alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; + alias RpcBindingFromStringBindingA RpcBindingFromStringBinding; + alias RpcBindingToStringBindingA RpcBindingToStringBinding; + alias RpcStringBindingComposeA RpcStringBindingCompose; + alias RpcStringBindingParseA RpcStringBindingParse; + alias RpcStringFreeA RpcStringFree; + alias RpcNetworkIsProtseqValidA RpcNetworkIsProtseqValid; + alias RpcNetworkInqProtseqsA RpcNetworkInqProtseqs; + alias RpcProtseqVectorFreeA RpcProtseqVectorFree; + alias RpcServerUseProtseqA RpcServerUseProtseq; + alias RpcServerUseProtseqExA RpcServerUseProtseqEx; + alias RpcServerUseProtseqEpA RpcServerUseProtseqEp; + alias RpcServerUseProtseqEpExA RpcServerUseProtseqEpEx; + alias RpcServerUseProtseqIfA RpcServerUseProtseqIf; + alias RpcServerUseProtseqIfExA RpcServerUseProtseqIfEx; + alias RpcMgmtInqServerPrincNameA RpcMgmtInqServerPrincName; + alias RpcServerInqDefaultPrincNameA RpcServerInqDefaultPrincName; + alias RpcNsBindingInqEntryNameA RpcNsBindingInqEntryName; + alias RpcBindingInqAuthClientA RpcBindingInqAuthClient; + alias RpcBindingInqAuthInfoA RpcBindingInqAuthInfo; + alias RpcBindingSetAuthInfoA RpcBindingSetAuthInfo; + alias RpcServerRegisterAuthInfoA RpcServerRegisterAuthInfo; + alias RpcBindingInqAuthInfoExA RpcBindingInqAuthInfoEx; + alias RpcBindingSetAuthInfoExA RpcBindingSetAuthInfoEx; + alias UuidFromStringA UuidFromString; + alias UuidToStringA UuidToString; + alias RpcEpRegisterNoReplaceA RpcEpRegisterNoReplace; + alias RpcEpRegisterA RpcEpRegister; + alias DceErrorInqTextA DceErrorInqText; +} //#endif // UNICODE + + +RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); +RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE*); +RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE, UUID*); +RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE); +RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE, UUID*); +RPC_STATUS RpcMgmtInqDefaultProtectLevel(uint, uint*); +RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR**); +RPC_STATUS RpcIfInqId(RPC_IF_HANDLE, RPC_IF_ID*); +RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE, uint*); +RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE, uint); +RPC_STATUS RpcMgmtSetCancelTimeout(int Timeout); +RPC_STATUS RpcObjectInqType(UUID*, UUID*); +RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN*); +RPC_STATUS RpcObjectSetType(UUID*, UUID*); +RPC_STATUS RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR**); +RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV**); +RPC_STATUS RpcServerListen(uint, uint, uint); +RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*); +RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, RPC_IF_CALLBACK_FN*); +RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, uint, RPC_IF_CALLBACK_FN*); +RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE, UUID*, uint); +RPC_STATUS RpcServerUseAllProtseqs(uint, void*); +RPC_STATUS RpcServerUseAllProtseqsEx(uint, void*, PRPC_POLICY); +RPC_STATUS RpcServerUseAllProtseqsIf(uint, RPC_IF_HANDLE, void*); +RPC_STATUS RpcServerUseAllProtseqsIfEx(uint, RPC_IF_HANDLE, void*, PRPC_POLICY); +RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**); +RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE, RPC_STATS_VECTOR**); +RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE); +RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE); +RPC_STATUS RpcMgmtWaitServerListen(); +RPC_STATUS RpcMgmtSetServerStackSize(uint); +void RpcSsDontSerializeContext(); +RPC_STATUS RpcMgmtEnableIdleCleanup(); +RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE, RPC_IF_ID_VECTOR**); +RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR**); +RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE, RPC_IF_HANDLE); +RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); + +// never returns +void RpcRaiseException(RPC_STATUS); +RPC_STATUS RpcTestCancel(); +RPC_STATUS RpcCancelThread(void*); +RPC_STATUS UuidCreate(UUID*); +int UuidCompare(UUID*, UUID*, RPC_STATUS*); +RPC_STATUS UuidCreateNil(UUID*); +int UuidEqual(UUID*, UUID*, RPC_STATUS*); +ushort UuidHash(UUID*, RPC_STATUS*); +int UuidIsNil(UUID*, RPC_STATUS*); +RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*); +RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, uint, UUID*, RPC_EP_INQ_HANDLE*); +RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); +RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE, UUID*); +RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); +RPC_STATUS RpcMgmtInqParameter(uint, uint*); +RPC_STATUS RpcMgmtSetParameter(uint, uint); +RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*); +RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint); + +//static if (_WIN32_WINNT >= 0x500) { + RPC_STATUS UuidCreateSequential(UUID*); +//} diff --git a/src/core/sys/windows/rpcdce2.d b/src/core/sys/windows/rpcdce2.d index ef85ab31bb..ff9e8bf219 100644 --- a/src/core/sys/windows/rpcdce2.d +++ b/src/core/sys/windows/rpcdce2.d @@ -1,77 +1,77 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdce2.d) - */ -module core.sys.windows.rpcdce2; - -import core.sys.windows.rpcdce; -private import core.sys.windows.basetyps; - -// FIXME: deal with RPC_UNICODE_SUPPORTED -// FIXME: check types of constants - -enum { - RPC_C_EP_ALL_ELTS, - RPC_C_EP_MATCH_BY_IF, - RPC_C_EP_MATCH_BY_OBJ, - RPC_C_EP_MATCH_BY_BOTH -} - -enum { - RPC_C_VERS_ALL = 1, - RPC_C_VERS_COMPATIBLE, - RPC_C_VERS_EXACT, - RPC_C_VERS_MAJOR_ONLY, - RPC_C_VERS_UPTO -} - -const size_t DCE_C_ERROR_STRING_LEN = 256; - -enum { - RPC_C_MGMT_INQ_IF_IDS, - RPC_C_MGMT_INQ_PRINC_NAME, - RPC_C_MGMT_INQ_STATS, - RPC_C_MGMT_IS_SERVER_LISTEN, - RPC_C_MGMT_STOP_SERVER_LISTEN -} - -extern (Windows) { - int UuidCompare(UUID*, UUID*, RPC_STATUS*); - RPC_STATUS UuidCreateNil(UUID*); - int UuidEqual(UUID*, UUID*, RPC_STATUS*); - ushort UuidHash(UUID*, RPC_STATUS*); - int UuidIsNil(UUID*, RPC_STATUS*); - - RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, - uint, UUID*, RPC_EP_INQ_HANDLE*); - RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); - RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, - RPC_BINDING_HANDLE, UUID*); - RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); -} - - -//#ifdef RPC_UNICODE_SUPPORTED -RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); -RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); -RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, - RPC_BINDING_HANDLE*, UUID*, char**); -RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, - RPC_BINDING_HANDLE*, UUID*, wchar**); -version (Unicode) { - alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; - alias DceErrorInqTextW DceErrorInqText; -} else { - alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; - alias DceErrorInqTextA DceErrorInqText; -} -/+ -#else /* RPC_UNICODE_SUPPORTED */ - RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*); - RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**); -#endif -+/ +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdce2.d) + */ +module core.sys.windows.rpcdce2; + +import core.sys.windows.rpcdce; +private import core.sys.windows.basetyps; + +// FIXME: deal with RPC_UNICODE_SUPPORTED +// FIXME: check types of constants + +enum { + RPC_C_EP_ALL_ELTS, + RPC_C_EP_MATCH_BY_IF, + RPC_C_EP_MATCH_BY_OBJ, + RPC_C_EP_MATCH_BY_BOTH +} + +enum { + RPC_C_VERS_ALL = 1, + RPC_C_VERS_COMPATIBLE, + RPC_C_VERS_EXACT, + RPC_C_VERS_MAJOR_ONLY, + RPC_C_VERS_UPTO +} + +const size_t DCE_C_ERROR_STRING_LEN = 256; + +enum { + RPC_C_MGMT_INQ_IF_IDS, + RPC_C_MGMT_INQ_PRINC_NAME, + RPC_C_MGMT_INQ_STATS, + RPC_C_MGMT_IS_SERVER_LISTEN, + RPC_C_MGMT_STOP_SERVER_LISTEN +} + +extern (Windows) { + int UuidCompare(UUID*, UUID*, RPC_STATUS*); + RPC_STATUS UuidCreateNil(UUID*); + int UuidEqual(UUID*, UUID*, RPC_STATUS*); + ushort UuidHash(UUID*, RPC_STATUS*); + int UuidIsNil(UUID*, RPC_STATUS*); + + RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, + uint, UUID*, RPC_EP_INQ_HANDLE*); + RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); + RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE, UUID*); + RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); +} + + +//#ifdef RPC_UNICODE_SUPPORTED +RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); +RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); +RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE*, UUID*, char**); +RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE*, UUID*, wchar**); +version (Unicode) { + alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; + alias DceErrorInqTextW DceErrorInqText; +} else { + alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; + alias DceErrorInqTextA DceErrorInqText; +} +/+ +#else /* RPC_UNICODE_SUPPORTED */ + RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*); + RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**); +#endif ++/ diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d index 9c91b6a55c..cc7b0f534b 100644 --- a/src/core/sys/windows/rpcdcep.d +++ b/src/core/sys/windows/rpcdcep.d @@ -1,150 +1,150 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdcep.d) - */ -module core.sys.windows.rpcdcep; - -private import core.sys.windows.basetyps; -private import core.sys.windows.w32api; -private import core.sys.windows.windef; - -mixin DECLARE_HANDLE!("I_RPC_HANDLE"); -alias long RPC_STATUS; - -const RPC_NCA_FLAGS_DEFAULT=0; -const RPC_NCA_FLAGS_IDEMPOTENT=1; -const RPC_NCA_FLAGS_BROADCAST=2; -const RPC_NCA_FLAGS_MAYBE=4; -const RPCFLG_ASYNCHRONOUS=0x40000000; -const RPCFLG_INPUT_SYNCHRONOUS=0x20000000; -const RPC_FLAGS_VALID_BIT=0x8000; - -const TRANSPORT_TYPE_CN=1; -const TRANSPORT_TYPE_DG=2; -const TRANSPORT_TYPE_LPC=4; -const TRANSPORT_TYPE_WMSG=8; - -struct RPC_VERSION { - ushort MajorVersion; - ushort MinorVersion; -} -struct RPC_SYNTAX_IDENTIFIER { - GUID SyntaxGUID; - RPC_VERSION SyntaxVersion; -} -alias RPC_SYNTAX_IDENTIFIER* PRPC_SYNTAX_IDENTIFIER; - -struct RPC_MESSAGE { - HANDLE Handle; - uint DataRepresentation; - void* Buffer; - uint BufferLength; - uint ProcNum; - PRPC_SYNTAX_IDENTIFIER TransferSyntax; - void* RpcInterfaceInformation; - void* ReservedForRuntime; - void* ManagerEpv; - void* ImportContext; - uint RpcFlags; -} -alias RPC_MESSAGE* PRPC_MESSAGE; - -extern (Windows) { -alias void function (PRPC_MESSAGE Message) RPC_DISPATCH_FUNCTION; -} - -struct RPC_DISPATCH_TABLE { - uint DispatchTableCount; - RPC_DISPATCH_FUNCTION* DispatchTable; - int Reserved; -} -alias RPC_DISPATCH_TABLE* PRPC_DISPATCH_TABLE; - -struct RPC_PROTSEQ_ENDPOINT { - ubyte* RpcProtocolSequence; - ubyte* Endpoint; -} -alias RPC_PROTSEQ_ENDPOINT* PRPC_PROTSEQ_ENDPOINT; - -struct RPC_SERVER_INTERFACE { - uint Length; - RPC_SYNTAX_IDENTIFIER InterfaceId; - RPC_SYNTAX_IDENTIFIER TransferSyntax; - PRPC_DISPATCH_TABLE DispatchTable; - uint RpcProtseqEndpointCount; - PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; - void* DefaultManagerEpv; - const(void)* InterpreterInfo; -} -alias RPC_SERVER_INTERFACE* PRPC_SERVER_INTERFACE; - -struct RPC_CLIENT_INTERFACE { - uint Length; - RPC_SYNTAX_IDENTIFIER InterfaceId; - RPC_SYNTAX_IDENTIFIER TransferSyntax; - PRPC_DISPATCH_TABLE DispatchTable; - uint RpcProtseqEndpointCount; - PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; - uint Reserved; - const(void)* InterpreterInfo; -} -alias RPC_CLIENT_INTERFACE* PRPC_CLIENT_INTERFACE; - -alias TypeDef!(void*) I_RPC_MUTEX; - -struct RPC_TRANSFER_SYNTAX { - GUID Uuid; - ushort VersMajor; - ushort VersMinor; -} -alias RPC_STATUS function(void*, void*, void*) RPC_BLOCKING_FN; - -extern (Windows) { - alias void function(void*) PRPC_RUNDOWN; - - int I_RpcGetBuffer(RPC_MESSAGE*); - int I_RpcSendReceive(RPC_MESSAGE*); - int I_RpcSend(RPC_MESSAGE*); - int I_RpcFreeBuffer(RPC_MESSAGE*); - void I_RpcRequestMutex(I_RPC_MUTEX*); - void I_RpcClearMutex(I_RPC_MUTEX); - void I_RpcDeleteMutex(I_RPC_MUTEX); - void* I_RpcAllocate(uint); - void I_RpcFree(void*); - void I_RpcPauseExecution(uint); - int I_RpcMonitorAssociation(HANDLE, PRPC_RUNDOWN, void*); - int I_RpcStopMonitorAssociation(HANDLE); - HANDLE I_RpcGetCurrentCallHandle(); - int I_RpcGetAssociationContext(void**); - int I_RpcSetAssociationContext(void*); - int I_RpcNsBindingSetEntryName(HANDLE, uint, wchar*); - int I_RpcBindingInqDynamicEndpoint(HANDLE, wchar**); - int I_RpcBindingInqTransportType(HANDLE, uint*); - int I_RpcIfInqTransferSyntaxes(HANDLE, RPC_TRANSFER_SYNTAX*, uint, - uint*); - int I_UuidCreate(GUID*); - int I_RpcBindingCopy(HANDLE, HANDLE*); - int I_RpcBindingIsClientLocal(HANDLE, uint*); - void I_RpcSsDontSerializeContext(); - int I_RpcServerRegisterForwardFunction(int function (GUID*, - RPC_VERSION*, GUID*, ubyte*, void**)); - int I_RpcConnectionInqSockBuffSize(uint*, uint*); - int I_RpcConnectionSetSockBuffSize(uint, uint); - int I_RpcBindingSetAsync(HANDLE, RPC_BLOCKING_FN); - int I_RpcAsyncSendReceive(RPC_MESSAGE*, void*); - int I_RpcGetThreadWindowHandle(void**); - int I_RpcServerThreadPauseListening(); - int I_RpcServerThreadContinueListening(); - int I_RpcServerUnregisterEndpointA(ubyte*, ubyte*); - int I_RpcServerUnregisterEndpointW(ushort*, ushort*); -} - -version(Unicode) { - alias I_RpcServerUnregisterEndpointW I_RpcServerUnregisterEndpoint; -} else { - alias I_RpcServerUnregisterEndpointA I_RpcServerUnregisterEndpoint; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdcep.d) + */ +module core.sys.windows.rpcdcep; + +private import core.sys.windows.basetyps; +private import core.sys.windows.w32api; +private import core.sys.windows.windef; + +mixin DECLARE_HANDLE!("I_RPC_HANDLE"); +alias long RPC_STATUS; + +const RPC_NCA_FLAGS_DEFAULT=0; +const RPC_NCA_FLAGS_IDEMPOTENT=1; +const RPC_NCA_FLAGS_BROADCAST=2; +const RPC_NCA_FLAGS_MAYBE=4; +const RPCFLG_ASYNCHRONOUS=0x40000000; +const RPCFLG_INPUT_SYNCHRONOUS=0x20000000; +const RPC_FLAGS_VALID_BIT=0x8000; + +const TRANSPORT_TYPE_CN=1; +const TRANSPORT_TYPE_DG=2; +const TRANSPORT_TYPE_LPC=4; +const TRANSPORT_TYPE_WMSG=8; + +struct RPC_VERSION { + ushort MajorVersion; + ushort MinorVersion; +} +struct RPC_SYNTAX_IDENTIFIER { + GUID SyntaxGUID; + RPC_VERSION SyntaxVersion; +} +alias RPC_SYNTAX_IDENTIFIER* PRPC_SYNTAX_IDENTIFIER; + +struct RPC_MESSAGE { + HANDLE Handle; + uint DataRepresentation; + void* Buffer; + uint BufferLength; + uint ProcNum; + PRPC_SYNTAX_IDENTIFIER TransferSyntax; + void* RpcInterfaceInformation; + void* ReservedForRuntime; + void* ManagerEpv; + void* ImportContext; + uint RpcFlags; +} +alias RPC_MESSAGE* PRPC_MESSAGE; + +extern (Windows) { +alias void function (PRPC_MESSAGE Message) RPC_DISPATCH_FUNCTION; +} + +struct RPC_DISPATCH_TABLE { + uint DispatchTableCount; + RPC_DISPATCH_FUNCTION* DispatchTable; + int Reserved; +} +alias RPC_DISPATCH_TABLE* PRPC_DISPATCH_TABLE; + +struct RPC_PROTSEQ_ENDPOINT { + ubyte* RpcProtocolSequence; + ubyte* Endpoint; +} +alias RPC_PROTSEQ_ENDPOINT* PRPC_PROTSEQ_ENDPOINT; + +struct RPC_SERVER_INTERFACE { + uint Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + uint RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + void* DefaultManagerEpv; + const(void)* InterpreterInfo; +} +alias RPC_SERVER_INTERFACE* PRPC_SERVER_INTERFACE; + +struct RPC_CLIENT_INTERFACE { + uint Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + uint RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + uint Reserved; + const(void)* InterpreterInfo; +} +alias RPC_CLIENT_INTERFACE* PRPC_CLIENT_INTERFACE; + +alias TypeDef!(void*) I_RPC_MUTEX; + +struct RPC_TRANSFER_SYNTAX { + GUID Uuid; + ushort VersMajor; + ushort VersMinor; +} +alias RPC_STATUS function(void*, void*, void*) RPC_BLOCKING_FN; + +extern (Windows) { + alias void function(void*) PRPC_RUNDOWN; + + int I_RpcGetBuffer(RPC_MESSAGE*); + int I_RpcSendReceive(RPC_MESSAGE*); + int I_RpcSend(RPC_MESSAGE*); + int I_RpcFreeBuffer(RPC_MESSAGE*); + void I_RpcRequestMutex(I_RPC_MUTEX*); + void I_RpcClearMutex(I_RPC_MUTEX); + void I_RpcDeleteMutex(I_RPC_MUTEX); + void* I_RpcAllocate(uint); + void I_RpcFree(void*); + void I_RpcPauseExecution(uint); + int I_RpcMonitorAssociation(HANDLE, PRPC_RUNDOWN, void*); + int I_RpcStopMonitorAssociation(HANDLE); + HANDLE I_RpcGetCurrentCallHandle(); + int I_RpcGetAssociationContext(void**); + int I_RpcSetAssociationContext(void*); + int I_RpcNsBindingSetEntryName(HANDLE, uint, wchar*); + int I_RpcBindingInqDynamicEndpoint(HANDLE, wchar**); + int I_RpcBindingInqTransportType(HANDLE, uint*); + int I_RpcIfInqTransferSyntaxes(HANDLE, RPC_TRANSFER_SYNTAX*, uint, + uint*); + int I_UuidCreate(GUID*); + int I_RpcBindingCopy(HANDLE, HANDLE*); + int I_RpcBindingIsClientLocal(HANDLE, uint*); + void I_RpcSsDontSerializeContext(); + int I_RpcServerRegisterForwardFunction(int function (GUID*, + RPC_VERSION*, GUID*, ubyte*, void**)); + int I_RpcConnectionInqSockBuffSize(uint*, uint*); + int I_RpcConnectionSetSockBuffSize(uint, uint); + int I_RpcBindingSetAsync(HANDLE, RPC_BLOCKING_FN); + int I_RpcAsyncSendReceive(RPC_MESSAGE*, void*); + int I_RpcGetThreadWindowHandle(void**); + int I_RpcServerThreadPauseListening(); + int I_RpcServerThreadContinueListening(); + int I_RpcServerUnregisterEndpointA(ubyte*, ubyte*); + int I_RpcServerUnregisterEndpointW(ushort*, ushort*); +} + +version(Unicode) { + alias I_RpcServerUnregisterEndpointW I_RpcServerUnregisterEndpoint; +} else { + alias I_RpcServerUnregisterEndpointA I_RpcServerUnregisterEndpoint; +} diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index e09bd18e66..361f6c23f0 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -1,572 +1,572 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcndr.d) - */ -module core.sys.windows.rpcndr; -pragma(lib, "rpcrt4"); - -/* Translation notes: - RPC_CLIENT_ALLOC*, RPC_CLIENT_FREE* were replaced with PRPC_CLIENT_ALLOC, PRPC_CLIENT_FREE -*/ - -// TODO: Bitfields in MIDL_STUB_MESSAGE. -// Macros need to be converted. -const __RPCNDR_H_VERSION__= 450; - -import core.sys.windows.rpcnsip; -private import core.sys.windows.rpc, core.sys.windows.rpcdce, core.sys.windows.unknwn, core.sys.windows.windef; -private import core.sys.windows.objidl; // for IRpcChannelBuffer, IRpcStubBuffer -private import core.sys.windows.basetyps; - -extern (Windows): - -const uint NDR_CHAR_REP_MASK = 0xF, - NDR_INT_REP_MASK = 0xF0, - NDR_FLOAT_REP_MASK = 0xFF00, - NDR_LITTLE_ENDIAN = 0x10, - NDR_BIG_ENDIAN = 0, - NDR_IEEE_FLOAT = 0, - NDR_VAX_FLOAT = 0x100, - NDR_ASCII_CHAR = 0, - NDR_EBCDIC_CHAR = 1, - NDR_LOCAL_DATA_REPRESENTATION = 0x10, - NDR_LOCAL_ENDIAN = NDR_LITTLE_ENDIAN; - -alias MIDL_user_allocate midl_user_allocate; -alias MIDL_user_free midl_user_free; - -alias long hyper; -alias ulong MIDL_uhyper; -alias char small; - -const cbNDRContext=20; -//MACRO #define NDRSContextValue(hContext) (&(hContext)->userContext) -//MACRO #define byte_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } - -//MACRO #define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } - -//MACRO #define boolean_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } - -//MACRO #define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } - -//MACRO #define small_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } - -//MACRO #define small_from_ndr_temp(source, target, format) { *(target) = *(*(char**)(source))++; } - -//MACRO #define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } - -//MACRO #define MIDL_ascii_strlen(string) strlen(string) - -//MACRO #define MIDL_ascii_strcpy(target,source) strcpy(target,source) - -//MACRO #define MIDL_memset(s,c,n) memset(s,c,n) - -//MACRO #define _midl_ma1( p, cast ) *(*( cast **)&p)++ -//MACRO #define _midl_ma2( p, cast ) *(*( cast **)&p)++ -//MACRO #define _midl_ma4( p, cast ) *(*( cast **)&p)++ -//MACRO #define _midl_ma8( p, cast ) *(*( cast **)&p)++ -//MACRO #define _midl_unma1( p, cast ) *(( cast *)p)++ -//MACRO #define _midl_unma2( p, cast ) *(( cast *)p)++ -//MACRO #define _midl_unma3( p, cast ) *(( cast *)p)++ -//MACRO #define _midl_unma4( p, cast ) *(( cast *)p)++ -//MACRO #define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe)) -//MACRO #define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc)) -//MACRO #define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8)) -//MACRO #define _midl_addp( p, n ) (p += n) -//MACRO #define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++ -//MACRO #define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p -//MACRO #define _midl_advmp( mp ) *(*(unsigned long **)&mp)++ -//MACRO #define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++) - -//MACRO #define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, _midl_ma4( p, unsigned long) = 0, _midl_ma4( p, unsigned long) = l) - -//MACRO #define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long), (_midl_addp(p,4)), (l=_midl_unma4(p,unsigned long)) - -//MACRO #define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20) -//MACRO #define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20) -//MACRO #define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep )) -//MACRO #define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd) - -//MACRO #define NdrFieldOffset(s,f) (long)(& (((s *)0)->f)) -//MACRO #define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t)) -//MACRO #define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8) -//MACRO #define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24) - -alias void * NDR_CCONTEXT; -struct tagNDR_SCONTEXT { - void*[2] pad; - void *userContext; -} -alias tagNDR_SCONTEXT * NDR_SCONTEXT; - -struct SCONTEXT_QUEUE { - uint NumberOfObjects; - NDR_SCONTEXT *ArrayOfObjects; -} -alias SCONTEXT_QUEUE * PSCONTEXT_QUEUE; - -struct _MIDL_STUB_MESSAGE; -struct _MIDL_STUB_DESC; -struct _FULL_PTR_XLAT_TABLES; - -alias ubyte *RPC_BUFPTR; -alias uint RPC_LENGTH; - -alias const(char)* PFORMAT_STRING; - -struct ARRAY_INFO { - int Dimension; - uint *BufferConformanceMark; - uint *BufferVarianceMark; - uint *MaxCountArray; - uint *OffsetArray; - uint *ActualCountArray; -} -alias ARRAY_INFO * PARRAY_INFO; - -RPC_BINDING_HANDLE NDRCContextBinding(NDR_CCONTEXT); -void NDRCContextMarshall(NDR_CCONTEXT,void*); -void NDRCContextUnmarshall(NDR_CCONTEXT*,RPC_BINDING_HANDLE,void*,uint); -void NDRSContextMarshall(NDR_SCONTEXT,void*,NDR_RUNDOWN); -NDR_SCONTEXT NDRSContextUnmarshall(void*pBuff,uint); -void RpcSsDestroyClientContext(void**); -void NDRcopy(void*,void*,uint); -uint MIDL_wchar_strlen(wchar *); -void MIDL_wchar_strcpy(void*,wchar *); -void char_from_ndr(PRPC_MESSAGE,ubyte*); -void char_array_from_ndr(PRPC_MESSAGE,uint,uint,ubyte*); -void short_from_ndr(PRPC_MESSAGE,ushort*); -void short_array_from_ndr(PRPC_MESSAGE,uint,uint,ushort*); -void short_from_ndr_temp(ubyte**,ushort*,uint); -void int_from_ndr(PRPC_MESSAGE,uint*); -void int_array_from_ndr(PRPC_MESSAGE,uint,uint,uint*); -void int_from_ndr_temp(ubyte**,uint*,uint); -void enum_from_ndr(PRPC_MESSAGE,uint*); -void float_from_ndr(PRPC_MESSAGE,void*); -void float_array_from_ndr(PRPC_MESSAGE,uint,uint,void*); -void double_from_ndr(PRPC_MESSAGE,void*); -void double_array_from_ndr(PRPC_MESSAGE,uint,uint,void*); -void hyper_from_ndr(PRPC_MESSAGE,hyper*); -void hyper_array_from_ndr(PRPC_MESSAGE,uint,uint,hyper*); -void hyper_from_ndr_temp(ubyte**,hyper*,uint); -void data_from_ndr(PRPC_MESSAGE,void*,char*,ubyte); -void data_into_ndr(void*,PRPC_MESSAGE,char*,ubyte); -void tree_into_ndr(void*,PRPC_MESSAGE,char*,ubyte); -void data_size_ndr(void*,PRPC_MESSAGE,char*,ubyte); -void tree_size_ndr(void*,PRPC_MESSAGE,char*,ubyte); -void tree_peek_ndr(PRPC_MESSAGE,ubyte**,char*,ubyte); -void * midl_allocate(int); - -align(4): -struct MIDL_STUB_MESSAGE { - PRPC_MESSAGE RpcMsg; - ubyte *Buffer; - ubyte *BufferStart; - ubyte *BufferEnd; - ubyte *BufferMark; - uint BufferLength; - uint MemorySize; - ubyte *Memory; - int IsClient; - int ReuseBuffer; - ubyte *AllocAllNodesMemory; - ubyte *AllocAllNodesMemoryEnd; - int IgnoreEmbeddedPointers; - ubyte *PointerBufferMark; - ubyte fBufferValid; - ubyte Unused; - uint MaxCount; - uint Offset; - uint ActualCount; - void* function (uint) pfnAllocate; - void function (void*) pfnFree; - ubyte * StackTop; - ubyte * pPresentedType; - ubyte * pTransmitType; - handle_t SavedHandle; - const(_MIDL_STUB_DESC)* StubDesc; - _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; - uint FullPtrRefId; - int fCheckBounds; - // FIXME: - byte bit_fields_for_D; // FIXME: Bitfields -// int fInDontFree :1; -// int fDontCallFreeInst :1; -// int fInOnlyParam :1; -// int fHasReturn :1; - uint dwDestContext; - void* pvDestContext; - NDR_SCONTEXT * SavedContextHandles; - int ParamNumber; - IRpcChannelBuffer pRpcChannelBuffer; - PARRAY_INFO pArrayInfo; - uint * SizePtrCountArray; - uint * SizePtrOffsetArray; - uint * SizePtrLengthArray; - void* pArgQueue; - uint dwStubPhase; - uint[5] w2kReserved; -} -alias MIDL_STUB_MESSAGE * PMIDL_STUB_MESSAGE; - -extern (Windows) { - alias void* function (void*) GENERIC_BINDING_ROUTINE; - alias void function (void*,ubyte*) GENERIC_UNBIND_ROUTINE; - alias uint function (uint *,uint,void *) USER_MARSHAL_SIZING_ROUTINE; - alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_MARSHALLING_ROUTINE; - alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_UNMARSHALLING_ROUTINE; - alias void function (uint *,void *) USER_MARSHAL_FREEING_ROUTINE; - alias void function () NDR_NOTIFY_ROUTINE; -} - -align: -struct GENERIC_BINDING_ROUTINE_PAIR { - GENERIC_BINDING_ROUTINE pfnBind; - GENERIC_UNBIND_ROUTINE pfnUnbind; -} -alias GENERIC_BINDING_ROUTINE_PAIR * PGENERIC_BINDING_ROUTINE_PAIR; - -struct GENERIC_BINDING_INFO { - void *pObj; - uint Size; - GENERIC_BINDING_ROUTINE pfnBind; - GENERIC_UNBIND_ROUTINE pfnUnbind; -} -alias GENERIC_BINDING_INFO * PGENERIC_BINDING_INFO; - - -struct XMIT_ROUTINE_QUINTUPLE { - XMIT_HELPER_ROUTINE pfnTranslateToXmit; - XMIT_HELPER_ROUTINE pfnTranslateFromXmit; - XMIT_HELPER_ROUTINE pfnFreeXmit; - XMIT_HELPER_ROUTINE pfnFreeInst; -} -alias XMIT_ROUTINE_QUINTUPLE * PXMIT_ROUTINE_QUINTUPLE; - -struct MALLOC_FREE_STRUCT { - void* function (uint) pfnAllocate; - void function (void*) pfnFree; -} - -struct COMM_FAULT_OFFSETS { - short CommOffset; - short FaultOffset; -} - -struct USER_MARSHAL_ROUTINE_QUADRUPLE { - USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; - USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; - USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; - USER_MARSHAL_FREEING_ROUTINE pfnFree; -} - -enum IDL_CS_CONVERT { - IDL_CS_NO_CONVERT, - IDL_CS_IN_PLACE_CONVERT, - IDL_CS_NEW_BUFFER_CONVERT -} - -struct NDR_CS_SIZE_CONVERT_ROUTINES { - CS_TYPE_NET_SIZE_ROUTINE pfnNetSize; - CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs; - CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize; - CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs; -} - -struct NDR_CS_ROUTINES { - NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines; - CS_TAG_GETTING_ROUTINE *pTagGettingRoutines; -} - -struct MIDL_STUB_DESC { - void* RpcInterfaceInformation; - void* function(uint) pfnAllocate; - void function (void*) pfnFree; - union _IMPLICIT_HANDLE_INFO { - handle_t *pAutoHandle; - handle_t *pPrimitiveHandle; - PGENERIC_BINDING_INFO pGenericBindingInfo; - } - _IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO; - const(NDR_RUNDOWN)* apfnNdrRundownRoutines; - const(GENERIC_BINDING_ROUTINE_PAIR)* aGenericBindingRoutinePairs; - const(EXPR_EVAL)* apfnExprEval; - const(XMIT_ROUTINE_QUINTUPLE)* aXmitQuintuple; - const(char)* *pFormatTypes; - int fCheckBounds; - uint Version; - MALLOC_FREE_STRUCT *pMallocFreeStruct; - int MIDLVersion; - const(COMM_FAULT_OFFSETS)* CommFaultOffsets; - const(USER_MARSHAL_ROUTINE_QUADRUPLE)* aUserMarshalQuadruple; - const(NDR_NOTIFY_ROUTINE)* NotifyRoutineTable; - ULONG_PTR mFlags; - const(NDR_CS_ROUTINES)* CsRoutineTables; - void *Reserved4; - ULONG_PTR Reserved5; -} -alias const(MIDL_STUB_DESC)* PMIDL_STUB_DESC; - -alias void * PMIDL_XMIT_TYPE; - -struct MIDL_FORMAT_STRING { - short Pad; - ubyte[1] Format; -} - -struct MIDL_SERVER_INFO { - PMIDL_STUB_DESC pStubDesc; - const(SERVER_ROUTINE)* DispatchTable; - PFORMAT_STRING ProcString; - const(ushort)* FmtStringOffset; - const(STUB_THUNK)* ThunkTable; -} -alias MIDL_SERVER_INFO * PMIDL_SERVER_INFO; - -struct MIDL_STUBLESS_PROXY_INFO { - PMIDL_STUB_DESC pStubDesc; - PFORMAT_STRING ProcFormatString; - const(ushort)* FormatStringOffset; -} -alias MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO; - -union CLIENT_CALL_RETURN { - void *Pointer; - int Simple; -} - -enum XLAT_SIDE { - XLAT_SERVER = 1, - XLAT_CLIENT -} -struct FULL_PTR_TO_REFID_ELEMENT { - FULL_PTR_TO_REFID_ELEMENT * Next; - void* Pointer; - uint RefId; - ubyte State; -} -alias FULL_PTR_TO_REFID_ELEMENT * PFULL_PTR_TO_REFID_ELEMENT; - -struct FULL_PTR_XLAT_TABLES { - struct RefIdToPointer { - void **XlatTable; - ubyte *StateTable; - uint NumberOfEntries; - } - struct PointerToRefId { - PFULL_PTR_TO_REFID_ELEMENT *XlatTable; - uint NumberOfBuckets; - uint HashMask; - } - uint NextRefId; - XLAT_SIDE XlatSide; -} -alias FULL_PTR_XLAT_TABLES * PFULL_PTR_XLAT_TABLES; - - -enum STUB_PHASE { - STUB_UNMARSHAL, - STUB_CALL_SERVER, - STUB_MARSHAL, - STUB_CALL_SERVER_NO_HRESULT -} - -enum PROXY_PHASE { - PROXY_CALCSIZE, - PROXY_GETBUFFER, - PROXY_MARSHAL, - PROXY_SENDRECEIVE, - PROXY_UNMARSHAL -} - -alias TypeDef!(void *) RPC_SS_THREAD_HANDLE; - -extern (Windows) { -alias void function (void*) NDR_RUNDOWN; -alias void function (_MIDL_STUB_MESSAGE*) EXPR_EVAL; -alias void function(PMIDL_STUB_MESSAGE) XMIT_HELPER_ROUTINE; -alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_NET_SIZE_ROUTINE; -alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_LOCAL_SIZE_ROUTINE; -alias void function (RPC_BINDING_HANDLE,uint,void*,uint,byte*,uint*,error_status_t*) CS_TYPE_TO_NETCS_ROUTINE; -alias void function (RPC_BINDING_HANDLE,uint,byte*,uint,uint,void*,uint*,error_status_t*) CS_TYPE_FROM_NETCS_ROUTINE; -alias void function (RPC_BINDING_HANDLE,int,uint*,uint*,uint*,error_status_t*) CS_TAG_GETTING_ROUTINE; - -//alias void* RPC_CLIENT_ALLOC(uint); -//alias void RPC_CLIENT_FREE(void*); -alias void* function(uint) PRPC_CLIENT_ALLOC; -alias void function(void*) PRPC_CLIENT_FREE; - - alias void function (PMIDL_STUB_MESSAGE) STUB_THUNK; - alias int function() SERVER_ROUTINE; -} - -void NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); -ubyte * NdrPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING pFormat); -ubyte * NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrConformantStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrHardStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrComplexStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrClientContextMarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT,int); -void NdrServerContextMarshall(PMIDL_STUB_MESSAGE,NDR_SCONTEXT,NDR_RUNDOWN); -void NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); -ubyte * NdrPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrHardStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -void NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT*,RPC_BINDING_HANDLE); -NDR_SCONTEXT NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE); -void NdrPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrHardStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrContextHandleSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -uint NdrPointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrHardStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -void NdrPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrSimpleStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrHardStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrComplexStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrFixedArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrComplexArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrByteCountPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrInterfacePointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConvert(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -void NdrClientInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint); -ubyte * NdrServerInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); -void NdrClientInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint); -ubyte * NdrServerInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); -ubyte * NdrServerInitializeUnmarshall(PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PRPC_MESSAGE); -void NdrServerInitializeMarshall(PRPC_MESSAGE,PMIDL_STUB_MESSAGE); -ubyte * NdrGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE); -ubyte * NdrNsGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE); -ubyte * NdrSendReceive(PMIDL_STUB_MESSAGE,ubyte*); -ubyte * NdrNsSendReceive(PMIDL_STUB_MESSAGE,ubyte*,RPC_BINDING_HANDLE*); -void NdrFreeBuffer(PMIDL_STUB_MESSAGE); - -CLIENT_CALL_RETURN NdrClientCall(PMIDL_STUB_DESC,PFORMAT_STRING,...); - -int NdrStubCall(IRpcStubBuffer, IRpcChannelBuffer,PRPC_MESSAGE,uint*); -void NdrServerCall(PRPC_MESSAGE); -int NdrServerUnmarshall(IRpcChannelBuffer, PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PFORMAT_STRING,void*); -void NdrServerMarshall(IRpcStubBuffer, IRpcChannelBuffer,PMIDL_STUB_MESSAGE,PFORMAT_STRING); -RPC_STATUS NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE,uint*,uint*,RPC_STATUS); -int NdrSH_UPDecision(PMIDL_STUB_MESSAGE,ubyte**,RPC_BUFPTR); -int NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE,ubyte**); -int NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE,ubyte**); -int NdrSH_IfAlloc(PMIDL_STUB_MESSAGE,ubyte**,uint); -int NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE,ubyte**,uint); -int NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE,ubyte**,uint); -RPC_BUFPTR NdrSH_IfCopy(PMIDL_STUB_MESSAGE,ubyte**,uint); -RPC_BUFPTR NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE,ubyte**,uint); -uint NdrSH_Copy(ubyte*,ubyte*,uint); -void NdrSH_IfFree(PMIDL_STUB_MESSAGE,ubyte*); -RPC_BUFPTR NdrSH_StringMarshall(PMIDL_STUB_MESSAGE,ubyte*,uint,int); -RPC_BUFPTR NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE,ubyte**,int); -void* RpcSsAllocate(uint); -void RpcSsDisableAllocate(); -void RpcSsEnableAllocate(); -void RpcSsFree(void*); -RPC_SS_THREAD_HANDLE RpcSsGetThreadHandle(); -void RpcSsSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE); -void RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE); -void RpcSsSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*); -void* RpcSmAllocate(uint,RPC_STATUS*); -RPC_STATUS RpcSmClientFree(void*); -RPC_STATUS RpcSmDestroyClientContext(void**); -RPC_STATUS RpcSmDisableAllocate(); -RPC_STATUS RpcSmEnableAllocate(); -RPC_STATUS RpcSmFree(void*); -RPC_SS_THREAD_HANDLE RpcSmGetThreadHandle(RPC_STATUS*); -RPC_STATUS RpcSmSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE); -RPC_STATUS RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE); -RPC_STATUS RpcSmSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*); -void NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE); -void NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE); -void NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE); -void* NdrRpcSmClientAllocate(uint); -void NdrRpcSmClientFree(void*); -void* NdrRpcSsDefaultAllocate(uint); -void NdrRpcSsDefaultFree(void*); -PFULL_PTR_XLAT_TABLES NdrFullPointerXlatInit(uint,XLAT_SIDE); -void NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES); -int NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES,void*,ubyte,uint*); -int NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES,uint,ubyte,void**); -void NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES,uint,void*); -int NdrFullPointerFree(PFULL_PTR_XLAT_TABLES,void*); -void* NdrAllocate(PMIDL_STUB_MESSAGE,uint); -void NdrClearOutParameters(PMIDL_STUB_MESSAGE,PFORMAT_STRING,void*); -void* NdrOleAllocate(uint); -void NdrOleFree(void*); -ubyte* NdrUserMarshalMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte* NdrUserMarshalUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -void NdrUserMarshalBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -uint NdrUserMarshalMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -void NdrUserMarshalFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcndr.d) + */ +module core.sys.windows.rpcndr; +pragma(lib, "rpcrt4"); + +/* Translation notes: + RPC_CLIENT_ALLOC*, RPC_CLIENT_FREE* were replaced with PRPC_CLIENT_ALLOC, PRPC_CLIENT_FREE +*/ + +// TODO: Bitfields in MIDL_STUB_MESSAGE. +// Macros need to be converted. +const __RPCNDR_H_VERSION__= 450; + +import core.sys.windows.rpcnsip; +private import core.sys.windows.rpc, core.sys.windows.rpcdce, core.sys.windows.unknwn, core.sys.windows.windef; +private import core.sys.windows.objidl; // for IRpcChannelBuffer, IRpcStubBuffer +private import core.sys.windows.basetyps; + +extern (Windows): + +const uint NDR_CHAR_REP_MASK = 0xF, + NDR_INT_REP_MASK = 0xF0, + NDR_FLOAT_REP_MASK = 0xFF00, + NDR_LITTLE_ENDIAN = 0x10, + NDR_BIG_ENDIAN = 0, + NDR_IEEE_FLOAT = 0, + NDR_VAX_FLOAT = 0x100, + NDR_ASCII_CHAR = 0, + NDR_EBCDIC_CHAR = 1, + NDR_LOCAL_DATA_REPRESENTATION = 0x10, + NDR_LOCAL_ENDIAN = NDR_LITTLE_ENDIAN; + +alias MIDL_user_allocate midl_user_allocate; +alias MIDL_user_free midl_user_free; + +alias long hyper; +alias ulong MIDL_uhyper; +alias char small; + +const cbNDRContext=20; +//MACRO #define NDRSContextValue(hContext) (&(hContext)->userContext) +//MACRO #define byte_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } + +//MACRO #define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } + +//MACRO #define boolean_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } + +//MACRO #define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } + +//MACRO #define small_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } + +//MACRO #define small_from_ndr_temp(source, target, format) { *(target) = *(*(char**)(source))++; } + +//MACRO #define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } + +//MACRO #define MIDL_ascii_strlen(string) strlen(string) + +//MACRO #define MIDL_ascii_strcpy(target,source) strcpy(target,source) + +//MACRO #define MIDL_memset(s,c,n) memset(s,c,n) + +//MACRO #define _midl_ma1( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_ma2( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_ma4( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_ma8( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_unma1( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_unma2( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_unma3( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_unma4( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe)) +//MACRO #define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc)) +//MACRO #define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8)) +//MACRO #define _midl_addp( p, n ) (p += n) +//MACRO #define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p +//MACRO #define _midl_advmp( mp ) *(*(unsigned long **)&mp)++ +//MACRO #define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++) + +//MACRO #define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, _midl_ma4( p, unsigned long) = 0, _midl_ma4( p, unsigned long) = l) + +//MACRO #define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long), (_midl_addp(p,4)), (l=_midl_unma4(p,unsigned long)) + +//MACRO #define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20) +//MACRO #define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20) +//MACRO #define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep )) +//MACRO #define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd) + +//MACRO #define NdrFieldOffset(s,f) (long)(& (((s *)0)->f)) +//MACRO #define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t)) +//MACRO #define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8) +//MACRO #define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24) + +alias void * NDR_CCONTEXT; +struct tagNDR_SCONTEXT { + void*[2] pad; + void *userContext; +} +alias tagNDR_SCONTEXT * NDR_SCONTEXT; + +struct SCONTEXT_QUEUE { + uint NumberOfObjects; + NDR_SCONTEXT *ArrayOfObjects; +} +alias SCONTEXT_QUEUE * PSCONTEXT_QUEUE; + +struct _MIDL_STUB_MESSAGE; +struct _MIDL_STUB_DESC; +struct _FULL_PTR_XLAT_TABLES; + +alias ubyte *RPC_BUFPTR; +alias uint RPC_LENGTH; + +alias const(char)* PFORMAT_STRING; + +struct ARRAY_INFO { + int Dimension; + uint *BufferConformanceMark; + uint *BufferVarianceMark; + uint *MaxCountArray; + uint *OffsetArray; + uint *ActualCountArray; +} +alias ARRAY_INFO * PARRAY_INFO; + +RPC_BINDING_HANDLE NDRCContextBinding(NDR_CCONTEXT); +void NDRCContextMarshall(NDR_CCONTEXT,void*); +void NDRCContextUnmarshall(NDR_CCONTEXT*,RPC_BINDING_HANDLE,void*,uint); +void NDRSContextMarshall(NDR_SCONTEXT,void*,NDR_RUNDOWN); +NDR_SCONTEXT NDRSContextUnmarshall(void*pBuff,uint); +void RpcSsDestroyClientContext(void**); +void NDRcopy(void*,void*,uint); +uint MIDL_wchar_strlen(wchar *); +void MIDL_wchar_strcpy(void*,wchar *); +void char_from_ndr(PRPC_MESSAGE,ubyte*); +void char_array_from_ndr(PRPC_MESSAGE,uint,uint,ubyte*); +void short_from_ndr(PRPC_MESSAGE,ushort*); +void short_array_from_ndr(PRPC_MESSAGE,uint,uint,ushort*); +void short_from_ndr_temp(ubyte**,ushort*,uint); +void int_from_ndr(PRPC_MESSAGE,uint*); +void int_array_from_ndr(PRPC_MESSAGE,uint,uint,uint*); +void int_from_ndr_temp(ubyte**,uint*,uint); +void enum_from_ndr(PRPC_MESSAGE,uint*); +void float_from_ndr(PRPC_MESSAGE,void*); +void float_array_from_ndr(PRPC_MESSAGE,uint,uint,void*); +void double_from_ndr(PRPC_MESSAGE,void*); +void double_array_from_ndr(PRPC_MESSAGE,uint,uint,void*); +void hyper_from_ndr(PRPC_MESSAGE,hyper*); +void hyper_array_from_ndr(PRPC_MESSAGE,uint,uint,hyper*); +void hyper_from_ndr_temp(ubyte**,hyper*,uint); +void data_from_ndr(PRPC_MESSAGE,void*,char*,ubyte); +void data_into_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void tree_into_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void data_size_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void tree_size_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void tree_peek_ndr(PRPC_MESSAGE,ubyte**,char*,ubyte); +void * midl_allocate(int); + +align(4): +struct MIDL_STUB_MESSAGE { + PRPC_MESSAGE RpcMsg; + ubyte *Buffer; + ubyte *BufferStart; + ubyte *BufferEnd; + ubyte *BufferMark; + uint BufferLength; + uint MemorySize; + ubyte *Memory; + int IsClient; + int ReuseBuffer; + ubyte *AllocAllNodesMemory; + ubyte *AllocAllNodesMemoryEnd; + int IgnoreEmbeddedPointers; + ubyte *PointerBufferMark; + ubyte fBufferValid; + ubyte Unused; + uint MaxCount; + uint Offset; + uint ActualCount; + void* function (uint) pfnAllocate; + void function (void*) pfnFree; + ubyte * StackTop; + ubyte * pPresentedType; + ubyte * pTransmitType; + handle_t SavedHandle; + const(_MIDL_STUB_DESC)* StubDesc; + _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; + uint FullPtrRefId; + int fCheckBounds; + // FIXME: + byte bit_fields_for_D; // FIXME: Bitfields +// int fInDontFree :1; +// int fDontCallFreeInst :1; +// int fInOnlyParam :1; +// int fHasReturn :1; + uint dwDestContext; + void* pvDestContext; + NDR_SCONTEXT * SavedContextHandles; + int ParamNumber; + IRpcChannelBuffer pRpcChannelBuffer; + PARRAY_INFO pArrayInfo; + uint * SizePtrCountArray; + uint * SizePtrOffsetArray; + uint * SizePtrLengthArray; + void* pArgQueue; + uint dwStubPhase; + uint[5] w2kReserved; +} +alias MIDL_STUB_MESSAGE * PMIDL_STUB_MESSAGE; + +extern (Windows) { + alias void* function (void*) GENERIC_BINDING_ROUTINE; + alias void function (void*,ubyte*) GENERIC_UNBIND_ROUTINE; + alias uint function (uint *,uint,void *) USER_MARSHAL_SIZING_ROUTINE; + alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_MARSHALLING_ROUTINE; + alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_UNMARSHALLING_ROUTINE; + alias void function (uint *,void *) USER_MARSHAL_FREEING_ROUTINE; + alias void function () NDR_NOTIFY_ROUTINE; +} + +align: +struct GENERIC_BINDING_ROUTINE_PAIR { + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; +} +alias GENERIC_BINDING_ROUTINE_PAIR * PGENERIC_BINDING_ROUTINE_PAIR; + +struct GENERIC_BINDING_INFO { + void *pObj; + uint Size; + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; +} +alias GENERIC_BINDING_INFO * PGENERIC_BINDING_INFO; + + +struct XMIT_ROUTINE_QUINTUPLE { + XMIT_HELPER_ROUTINE pfnTranslateToXmit; + XMIT_HELPER_ROUTINE pfnTranslateFromXmit; + XMIT_HELPER_ROUTINE pfnFreeXmit; + XMIT_HELPER_ROUTINE pfnFreeInst; +} +alias XMIT_ROUTINE_QUINTUPLE * PXMIT_ROUTINE_QUINTUPLE; + +struct MALLOC_FREE_STRUCT { + void* function (uint) pfnAllocate; + void function (void*) pfnFree; +} + +struct COMM_FAULT_OFFSETS { + short CommOffset; + short FaultOffset; +} + +struct USER_MARSHAL_ROUTINE_QUADRUPLE { + USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; + USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; + USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; + USER_MARSHAL_FREEING_ROUTINE pfnFree; +} + +enum IDL_CS_CONVERT { + IDL_CS_NO_CONVERT, + IDL_CS_IN_PLACE_CONVERT, + IDL_CS_NEW_BUFFER_CONVERT +} + +struct NDR_CS_SIZE_CONVERT_ROUTINES { + CS_TYPE_NET_SIZE_ROUTINE pfnNetSize; + CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs; + CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize; + CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs; +} + +struct NDR_CS_ROUTINES { + NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines; + CS_TAG_GETTING_ROUTINE *pTagGettingRoutines; +} + +struct MIDL_STUB_DESC { + void* RpcInterfaceInformation; + void* function(uint) pfnAllocate; + void function (void*) pfnFree; + union _IMPLICIT_HANDLE_INFO { + handle_t *pAutoHandle; + handle_t *pPrimitiveHandle; + PGENERIC_BINDING_INFO pGenericBindingInfo; + } + _IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO; + const(NDR_RUNDOWN)* apfnNdrRundownRoutines; + const(GENERIC_BINDING_ROUTINE_PAIR)* aGenericBindingRoutinePairs; + const(EXPR_EVAL)* apfnExprEval; + const(XMIT_ROUTINE_QUINTUPLE)* aXmitQuintuple; + const(char)* *pFormatTypes; + int fCheckBounds; + uint Version; + MALLOC_FREE_STRUCT *pMallocFreeStruct; + int MIDLVersion; + const(COMM_FAULT_OFFSETS)* CommFaultOffsets; + const(USER_MARSHAL_ROUTINE_QUADRUPLE)* aUserMarshalQuadruple; + const(NDR_NOTIFY_ROUTINE)* NotifyRoutineTable; + ULONG_PTR mFlags; + const(NDR_CS_ROUTINES)* CsRoutineTables; + void *Reserved4; + ULONG_PTR Reserved5; +} +alias const(MIDL_STUB_DESC)* PMIDL_STUB_DESC; + +alias void * PMIDL_XMIT_TYPE; + +struct MIDL_FORMAT_STRING { + short Pad; + ubyte[1] Format; +} + +struct MIDL_SERVER_INFO { + PMIDL_STUB_DESC pStubDesc; + const(SERVER_ROUTINE)* DispatchTable; + PFORMAT_STRING ProcString; + const(ushort)* FmtStringOffset; + const(STUB_THUNK)* ThunkTable; +} +alias MIDL_SERVER_INFO * PMIDL_SERVER_INFO; + +struct MIDL_STUBLESS_PROXY_INFO { + PMIDL_STUB_DESC pStubDesc; + PFORMAT_STRING ProcFormatString; + const(ushort)* FormatStringOffset; +} +alias MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO; + +union CLIENT_CALL_RETURN { + void *Pointer; + int Simple; +} + +enum XLAT_SIDE { + XLAT_SERVER = 1, + XLAT_CLIENT +} +struct FULL_PTR_TO_REFID_ELEMENT { + FULL_PTR_TO_REFID_ELEMENT * Next; + void* Pointer; + uint RefId; + ubyte State; +} +alias FULL_PTR_TO_REFID_ELEMENT * PFULL_PTR_TO_REFID_ELEMENT; + +struct FULL_PTR_XLAT_TABLES { + struct RefIdToPointer { + void **XlatTable; + ubyte *StateTable; + uint NumberOfEntries; + } + struct PointerToRefId { + PFULL_PTR_TO_REFID_ELEMENT *XlatTable; + uint NumberOfBuckets; + uint HashMask; + } + uint NextRefId; + XLAT_SIDE XlatSide; +} +alias FULL_PTR_XLAT_TABLES * PFULL_PTR_XLAT_TABLES; + + +enum STUB_PHASE { + STUB_UNMARSHAL, + STUB_CALL_SERVER, + STUB_MARSHAL, + STUB_CALL_SERVER_NO_HRESULT +} + +enum PROXY_PHASE { + PROXY_CALCSIZE, + PROXY_GETBUFFER, + PROXY_MARSHAL, + PROXY_SENDRECEIVE, + PROXY_UNMARSHAL +} + +alias TypeDef!(void *) RPC_SS_THREAD_HANDLE; + +extern (Windows) { +alias void function (void*) NDR_RUNDOWN; +alias void function (_MIDL_STUB_MESSAGE*) EXPR_EVAL; +alias void function(PMIDL_STUB_MESSAGE) XMIT_HELPER_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_NET_SIZE_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_LOCAL_SIZE_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,void*,uint,byte*,uint*,error_status_t*) CS_TYPE_TO_NETCS_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,byte*,uint,uint,void*,uint*,error_status_t*) CS_TYPE_FROM_NETCS_ROUTINE; +alias void function (RPC_BINDING_HANDLE,int,uint*,uint*,uint*,error_status_t*) CS_TAG_GETTING_ROUTINE; + +//alias void* RPC_CLIENT_ALLOC(uint); +//alias void RPC_CLIENT_FREE(void*); +alias void* function(uint) PRPC_CLIENT_ALLOC; +alias void function(void*) PRPC_CLIENT_FREE; + + alias void function (PMIDL_STUB_MESSAGE) STUB_THUNK; + alias int function() SERVER_ROUTINE; +} + +void NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); +ubyte * NdrPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING pFormat); +ubyte * NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrHardStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrComplexStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrClientContextMarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT,int); +void NdrServerContextMarshall(PMIDL_STUB_MESSAGE,NDR_SCONTEXT,NDR_RUNDOWN); +void NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); +ubyte * NdrPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrHardStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +void NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT*,RPC_BINDING_HANDLE); +NDR_SCONTEXT NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE); +void NdrPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrHardStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrContextHandleSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +uint NdrPointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrHardStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void NdrPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrSimpleStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrHardStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrFixedArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrByteCountPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrInterfacePointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConvert(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void NdrClientInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint); +ubyte * NdrServerInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); +void NdrClientInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint); +ubyte * NdrServerInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); +ubyte * NdrServerInitializeUnmarshall(PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PRPC_MESSAGE); +void NdrServerInitializeMarshall(PRPC_MESSAGE,PMIDL_STUB_MESSAGE); +ubyte * NdrGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE); +ubyte * NdrNsGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE); +ubyte * NdrSendReceive(PMIDL_STUB_MESSAGE,ubyte*); +ubyte * NdrNsSendReceive(PMIDL_STUB_MESSAGE,ubyte*,RPC_BINDING_HANDLE*); +void NdrFreeBuffer(PMIDL_STUB_MESSAGE); + +CLIENT_CALL_RETURN NdrClientCall(PMIDL_STUB_DESC,PFORMAT_STRING,...); + +int NdrStubCall(IRpcStubBuffer, IRpcChannelBuffer,PRPC_MESSAGE,uint*); +void NdrServerCall(PRPC_MESSAGE); +int NdrServerUnmarshall(IRpcChannelBuffer, PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PFORMAT_STRING,void*); +void NdrServerMarshall(IRpcStubBuffer, IRpcChannelBuffer,PMIDL_STUB_MESSAGE,PFORMAT_STRING); +RPC_STATUS NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE,uint*,uint*,RPC_STATUS); +int NdrSH_UPDecision(PMIDL_STUB_MESSAGE,ubyte**,RPC_BUFPTR); +int NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE,ubyte**); +int NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE,ubyte**); +int NdrSH_IfAlloc(PMIDL_STUB_MESSAGE,ubyte**,uint); +int NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE,ubyte**,uint); +int NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE,ubyte**,uint); +RPC_BUFPTR NdrSH_IfCopy(PMIDL_STUB_MESSAGE,ubyte**,uint); +RPC_BUFPTR NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE,ubyte**,uint); +uint NdrSH_Copy(ubyte*,ubyte*,uint); +void NdrSH_IfFree(PMIDL_STUB_MESSAGE,ubyte*); +RPC_BUFPTR NdrSH_StringMarshall(PMIDL_STUB_MESSAGE,ubyte*,uint,int); +RPC_BUFPTR NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE,ubyte**,int); +void* RpcSsAllocate(uint); +void RpcSsDisableAllocate(); +void RpcSsEnableAllocate(); +void RpcSsFree(void*); +RPC_SS_THREAD_HANDLE RpcSsGetThreadHandle(); +void RpcSsSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE); +void RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE); +void RpcSsSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*); +void* RpcSmAllocate(uint,RPC_STATUS*); +RPC_STATUS RpcSmClientFree(void*); +RPC_STATUS RpcSmDestroyClientContext(void**); +RPC_STATUS RpcSmDisableAllocate(); +RPC_STATUS RpcSmEnableAllocate(); +RPC_STATUS RpcSmFree(void*); +RPC_SS_THREAD_HANDLE RpcSmGetThreadHandle(RPC_STATUS*); +RPC_STATUS RpcSmSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE); +RPC_STATUS RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE); +RPC_STATUS RpcSmSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*); +void NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE); +void NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE); +void NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE); +void* NdrRpcSmClientAllocate(uint); +void NdrRpcSmClientFree(void*); +void* NdrRpcSsDefaultAllocate(uint); +void NdrRpcSsDefaultFree(void*); +PFULL_PTR_XLAT_TABLES NdrFullPointerXlatInit(uint,XLAT_SIDE); +void NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES); +int NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES,void*,ubyte,uint*); +int NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES,uint,ubyte,void**); +void NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES,uint,void*); +int NdrFullPointerFree(PFULL_PTR_XLAT_TABLES,void*); +void* NdrAllocate(PMIDL_STUB_MESSAGE,uint); +void NdrClearOutParameters(PMIDL_STUB_MESSAGE,PFORMAT_STRING,void*); +void* NdrOleAllocate(uint); +void NdrOleFree(void*); +ubyte* NdrUserMarshalMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte* NdrUserMarshalUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +void NdrUserMarshalBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +uint NdrUserMarshalMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void NdrUserMarshalFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d index 1a10a37454..c3837067d1 100644 --- a/src/core/sys/windows/rpcnsi.d +++ b/src/core/sys/windows/rpcnsi.d @@ -1,149 +1,149 @@ -/** - * Windows API header module - * - * RPC Name Service (RpcNs APIs) - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnsi.d) - */ -module core.sys.windows.rpcnsi; -pragma(lib, "rpcns4"); - -private import core.sys.windows.basetyps, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi, core.sys.windows.rpcdce, - core.sys.windows.w32api; -private import core.sys.windows.windef; // for HANDLE - -mixin DECLARE_HANDLE!("RPC_NS_HANDLE"); - -const RPC_C_NS_SYNTAX_DEFAULT=0; -const RPC_C_NS_SYNTAX_DCE=3; -const RPC_C_PROFILE_DEFAULT_ELT=0; -const RPC_C_PROFILE_ALL_ELT=1; -const RPC_C_PROFILE_MATCH_BY_IF=2; -const RPC_C_PROFILE_MATCH_BY_MBR=3; -const RPC_C_PROFILE_MATCH_BY_BOTH=4; -const RPC_C_NS_DEFAULT_EXP_AGE=-1; - -extern (Windows) { - RPC_STATUS RpcNsBindingExportA(uint, ubyte*, RPC_IF_HANDLE, - RPC_BINDING_VECTOR*, UUID_VECTOR*); - RPC_STATUS RpcNsBindingUnexportA(uint, ubyte*, RPC_IF_HANDLE, - UUID_VECTOR*); - RPC_STATUS RpcNsBindingLookupBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, - uint, RPC_NS_HANDLE*); - RPC_STATUS RpcNsBindingLookupNext(RPC_NS_HANDLE, RPC_BINDING_VECTOR**); - RPC_STATUS RpcNsBindingLookupDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsGroupDeleteA(uint, ubyte*); - RPC_STATUS RpcNsGroupMbrAddA(uint, ubyte*, uint, ubyte*); - RPC_STATUS RpcNsGroupMbrRemoveA(uint, ubyte*, uint, ubyte*); - RPC_STATUS RpcNsGroupMbrInqBeginA(uint, ubyte*, uint, RPC_NS_HANDLE*); - RPC_STATUS RpcNsGroupMbrInqNextA(RPC_NS_HANDLE, ubyte**); - RPC_STATUS RpcNsGroupMbrInqDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsProfileDeleteA(uint, ubyte*); - RPC_STATUS RpcNsProfileEltAddA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*, - uint, ubyte*); - RPC_STATUS RpcNsProfileEltRemoveA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*); - RPC_STATUS RpcNsProfileEltInqBeginA(uint, ubyte*, uint, RPC_IF_ID*, uint, - uint, ubyte*, RPC_NS_HANDLE*); - RPC_STATUS RpcNsProfileEltInqNextA(RPC_NS_HANDLE, RPC_IF_ID*, ubyte**, - uint*, ubyte**); - RPC_STATUS RpcNsProfileEltInqDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsEntryObjectInqNext(in RPC_NS_HANDLE, out UUID*); - RPC_STATUS RpcNsEntryObjectInqDone(ref RPC_NS_HANDLE*); - RPC_STATUS RpcNsEntryExpandNameA(uint, ubyte*, ubyte**); - RPC_STATUS RpcNsMgmtBindingUnexportA(uint, ubyte*, RPC_IF_ID*, uint, - UUID_VECTOR*); - RPC_STATUS RpcNsMgmtEntryCreateA(uint, ubyte*); - RPC_STATUS RpcNsMgmtEntryDeleteA(uint, ubyte*); - RPC_STATUS RpcNsMgmtEntryInqIfIdsA(uint, ubyte*, RPC_IF_ID_VECTOR**); - RPC_STATUS RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE, uint); - RPC_STATUS RpcNsMgmtInqExpAge(uint*); - RPC_STATUS RpcNsMgmtSetExpAge(uint); - RPC_STATUS RpcNsBindingImportNext(RPC_NS_HANDLE, RPC_BINDING_HANDLE*); - RPC_STATUS RpcNsBindingImportDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsBindingSelect(RPC_BINDING_VECTOR*, RPC_BINDING_HANDLE*); -} - - -version (Unicode) { -} else { - RPC_STATUS RpcNsEntryObjectInqBeginA(uint, ubyte*, RPC_NS_HANDLE*); - RPC_STATUS RpcNsBindingImportBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, - RPC_NS_HANDLE*); -} - -RPC_STATUS RpcNsBindingExportW(uint, ushort*, RPC_IF_HANDLE, - RPC_BINDING_VECTOR*, UUID_VECTOR*); -RPC_STATUS RpcNsBindingUnexportW(uint, ushort*, RPC_IF_HANDLE, - UUID_VECTOR*); -RPC_STATUS RpcNsBindingLookupBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, - uint, RPC_NS_HANDLE*); -RPC_STATUS RpcNsGroupDeleteW(uint, ushort*); -RPC_STATUS RpcNsGroupMbrAddW(uint, ushort*, uint, ushort*); -RPC_STATUS RpcNsGroupMbrRemoveW(uint, ushort*, uint, ushort*); -RPC_STATUS RpcNsGroupMbrInqBeginW(uint, ushort*, uint, RPC_NS_HANDLE*); -RPC_STATUS RpcNsGroupMbrInqNextW(RPC_NS_HANDLE, ushort**); -RPC_STATUS RpcNsProfileDeleteW(uint, ushort*); -RPC_STATUS RpcNsProfileEltAddW(uint, ushort*, RPC_IF_ID*, uint, ushort*, - uint, ushort*); -RPC_STATUS RpcNsProfileEltRemoveW(uint, ushort*, RPC_IF_ID*, uint, - ushort*); -RPC_STATUS RpcNsProfileEltInqBeginW(uint, ushort*, uint, RPC_IF_ID*, - uint, uint, ushort*, RPC_NS_HANDLE*); -RPC_STATUS RpcNsProfileEltInqNextW(RPC_NS_HANDLE, RPC_IF_ID*, ushort**, - uint*, ushort**); -RPC_STATUS RpcNsEntryObjectInqBeginW(uint, ushort*, RPC_NS_HANDLE*); -RPC_STATUS RpcNsEntryExpandNameW(uint, ushort*, ushort**); -RPC_STATUS RpcNsMgmtBindingUnexportW(uint, ushort*, RPC_IF_ID*, uint, - UUID_VECTOR*); -RPC_STATUS RpcNsMgmtEntryCreateW(uint, ushort*); -RPC_STATUS RpcNsMgmtEntryDeleteW(uint, ushort*); -RPC_STATUS RpcNsMgmtEntryInqIfIdsW(uint, ushort , RPC_IF_ID_VECTOR**); -RPC_STATUS RpcNsBindingImportBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, - RPC_NS_HANDLE*); - -version (Unicode) { - alias RpcNsBindingLookupBeginW RpcNsBindingLookupBegin; - alias RpcNsBindingImportBeginW RpcNsBindingImportBegin; - alias RpcNsBindingExportW RpcNsBindingExport; - alias RpcNsBindingUnexportW RpcNsBindingUnexport; - alias RpcNsGroupDeleteW RpcNsGroupDelete; - alias RpcNsGroupMbrAddW RpcNsGroupMbrAdd; - alias RpcNsGroupMbrRemoveW RpcNsGroupMbrRemove; - alias RpcNsGroupMbrInqBeginW RpcNsGroupMbrInqBegin; - alias RpcNsGroupMbrInqNextW RpcNsGroupMbrInqNext; - alias RpcNsEntryExpandNameW RpcNsEntryExpandName; - alias RpcNsEntryObjectInqBeginW RpcNsEntryObjectInqBegin; - alias RpcNsMgmtBindingUnexportW RpcNsMgmtBindingUnexport; - alias RpcNsMgmtEntryCreateW RpcNsMgmtEntryCreate; - alias RpcNsMgmtEntryDeleteW RpcNsMgmtEntryDelete; - alias RpcNsMgmtEntryInqIfIdsW RpcNsMgmtEntryInqIfIds; - alias RpcNsProfileDeleteW RpcNsProfileDelete; - alias RpcNsProfileEltAddW RpcNsProfileEltAdd; - alias RpcNsProfileEltRemoveW RpcNsProfileEltRemove; - alias RpcNsProfileEltInqBeginW RpcNsProfileEltInqBegin; - alias RpcNsProfileEltInqNextW RpcNsProfileEltInqNext; -} else { - alias RpcNsBindingLookupBeginA RpcNsBindingLookupBegin; - alias RpcNsBindingImportBeginA RpcNsBindingImportBegin; - alias RpcNsBindingExportA RpcNsBindingExport; - alias RpcNsBindingUnexportA RpcNsBindingUnexport; - alias RpcNsGroupDeleteA RpcNsGroupDelete; - alias RpcNsGroupMbrAddA RpcNsGroupMbrAdd; - alias RpcNsGroupMbrRemoveA RpcNsGroupMbrRemove; - alias RpcNsGroupMbrInqBeginA RpcNsGroupMbrInqBegin; - alias RpcNsGroupMbrInqNextA RpcNsGroupMbrInqNext; - alias RpcNsEntryExpandNameA RpcNsEntryExpandName; - alias RpcNsEntryObjectInqBeginA RpcNsEntryObjectInqBegin; - alias RpcNsMgmtBindingUnexportA RpcNsMgmtBindingUnexport; - alias RpcNsMgmtEntryCreateA RpcNsMgmtEntryCreate; - alias RpcNsMgmtEntryDeleteA RpcNsMgmtEntryDelete; - alias RpcNsMgmtEntryInqIfIdsA RpcNsMgmtEntryInqIfIds; - alias RpcNsProfileDeleteA RpcNsProfileDelete; - alias RpcNsProfileEltAddA RpcNsProfileEltAdd; - alias RpcNsProfileEltRemoveA RpcNsProfileEltRemove; - alias RpcNsProfileEltInqBeginA RpcNsProfileEltInqBegin; - alias RpcNsProfileEltInqNextA RpcNsProfileEltInqNext; -} +/** + * Windows API header module + * + * RPC Name Service (RpcNs APIs) + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnsi.d) + */ +module core.sys.windows.rpcnsi; +pragma(lib, "rpcns4"); + +private import core.sys.windows.basetyps, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi, core.sys.windows.rpcdce, + core.sys.windows.w32api; +private import core.sys.windows.windef; // for HANDLE + +mixin DECLARE_HANDLE!("RPC_NS_HANDLE"); + +const RPC_C_NS_SYNTAX_DEFAULT=0; +const RPC_C_NS_SYNTAX_DCE=3; +const RPC_C_PROFILE_DEFAULT_ELT=0; +const RPC_C_PROFILE_ALL_ELT=1; +const RPC_C_PROFILE_MATCH_BY_IF=2; +const RPC_C_PROFILE_MATCH_BY_MBR=3; +const RPC_C_PROFILE_MATCH_BY_BOTH=4; +const RPC_C_NS_DEFAULT_EXP_AGE=-1; + +extern (Windows) { + RPC_STATUS RpcNsBindingExportA(uint, ubyte*, RPC_IF_HANDLE, + RPC_BINDING_VECTOR*, UUID_VECTOR*); + RPC_STATUS RpcNsBindingUnexportA(uint, ubyte*, RPC_IF_HANDLE, + UUID_VECTOR*); + RPC_STATUS RpcNsBindingLookupBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, + uint, RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingLookupNext(RPC_NS_HANDLE, RPC_BINDING_VECTOR**); + RPC_STATUS RpcNsBindingLookupDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsGroupDeleteA(uint, ubyte*); + RPC_STATUS RpcNsGroupMbrAddA(uint, ubyte*, uint, ubyte*); + RPC_STATUS RpcNsGroupMbrRemoveA(uint, ubyte*, uint, ubyte*); + RPC_STATUS RpcNsGroupMbrInqBeginA(uint, ubyte*, uint, RPC_NS_HANDLE*); + RPC_STATUS RpcNsGroupMbrInqNextA(RPC_NS_HANDLE, ubyte**); + RPC_STATUS RpcNsGroupMbrInqDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsProfileDeleteA(uint, ubyte*); + RPC_STATUS RpcNsProfileEltAddA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*, + uint, ubyte*); + RPC_STATUS RpcNsProfileEltRemoveA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*); + RPC_STATUS RpcNsProfileEltInqBeginA(uint, ubyte*, uint, RPC_IF_ID*, uint, + uint, ubyte*, RPC_NS_HANDLE*); + RPC_STATUS RpcNsProfileEltInqNextA(RPC_NS_HANDLE, RPC_IF_ID*, ubyte**, + uint*, ubyte**); + RPC_STATUS RpcNsProfileEltInqDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryObjectInqNext(in RPC_NS_HANDLE, out UUID*); + RPC_STATUS RpcNsEntryObjectInqDone(ref RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryExpandNameA(uint, ubyte*, ubyte**); + RPC_STATUS RpcNsMgmtBindingUnexportA(uint, ubyte*, RPC_IF_ID*, uint, + UUID_VECTOR*); + RPC_STATUS RpcNsMgmtEntryCreateA(uint, ubyte*); + RPC_STATUS RpcNsMgmtEntryDeleteA(uint, ubyte*); + RPC_STATUS RpcNsMgmtEntryInqIfIdsA(uint, ubyte*, RPC_IF_ID_VECTOR**); + RPC_STATUS RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE, uint); + RPC_STATUS RpcNsMgmtInqExpAge(uint*); + RPC_STATUS RpcNsMgmtSetExpAge(uint); + RPC_STATUS RpcNsBindingImportNext(RPC_NS_HANDLE, RPC_BINDING_HANDLE*); + RPC_STATUS RpcNsBindingImportDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingSelect(RPC_BINDING_VECTOR*, RPC_BINDING_HANDLE*); +} + + +version (Unicode) { +} else { + RPC_STATUS RpcNsEntryObjectInqBeginA(uint, ubyte*, RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingImportBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, + RPC_NS_HANDLE*); +} + +RPC_STATUS RpcNsBindingExportW(uint, ushort*, RPC_IF_HANDLE, + RPC_BINDING_VECTOR*, UUID_VECTOR*); +RPC_STATUS RpcNsBindingUnexportW(uint, ushort*, RPC_IF_HANDLE, + UUID_VECTOR*); +RPC_STATUS RpcNsBindingLookupBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, + uint, RPC_NS_HANDLE*); +RPC_STATUS RpcNsGroupDeleteW(uint, ushort*); +RPC_STATUS RpcNsGroupMbrAddW(uint, ushort*, uint, ushort*); +RPC_STATUS RpcNsGroupMbrRemoveW(uint, ushort*, uint, ushort*); +RPC_STATUS RpcNsGroupMbrInqBeginW(uint, ushort*, uint, RPC_NS_HANDLE*); +RPC_STATUS RpcNsGroupMbrInqNextW(RPC_NS_HANDLE, ushort**); +RPC_STATUS RpcNsProfileDeleteW(uint, ushort*); +RPC_STATUS RpcNsProfileEltAddW(uint, ushort*, RPC_IF_ID*, uint, ushort*, + uint, ushort*); +RPC_STATUS RpcNsProfileEltRemoveW(uint, ushort*, RPC_IF_ID*, uint, + ushort*); +RPC_STATUS RpcNsProfileEltInqBeginW(uint, ushort*, uint, RPC_IF_ID*, + uint, uint, ushort*, RPC_NS_HANDLE*); +RPC_STATUS RpcNsProfileEltInqNextW(RPC_NS_HANDLE, RPC_IF_ID*, ushort**, + uint*, ushort**); +RPC_STATUS RpcNsEntryObjectInqBeginW(uint, ushort*, RPC_NS_HANDLE*); +RPC_STATUS RpcNsEntryExpandNameW(uint, ushort*, ushort**); +RPC_STATUS RpcNsMgmtBindingUnexportW(uint, ushort*, RPC_IF_ID*, uint, + UUID_VECTOR*); +RPC_STATUS RpcNsMgmtEntryCreateW(uint, ushort*); +RPC_STATUS RpcNsMgmtEntryDeleteW(uint, ushort*); +RPC_STATUS RpcNsMgmtEntryInqIfIdsW(uint, ushort , RPC_IF_ID_VECTOR**); +RPC_STATUS RpcNsBindingImportBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, + RPC_NS_HANDLE*); + +version (Unicode) { + alias RpcNsBindingLookupBeginW RpcNsBindingLookupBegin; + alias RpcNsBindingImportBeginW RpcNsBindingImportBegin; + alias RpcNsBindingExportW RpcNsBindingExport; + alias RpcNsBindingUnexportW RpcNsBindingUnexport; + alias RpcNsGroupDeleteW RpcNsGroupDelete; + alias RpcNsGroupMbrAddW RpcNsGroupMbrAdd; + alias RpcNsGroupMbrRemoveW RpcNsGroupMbrRemove; + alias RpcNsGroupMbrInqBeginW RpcNsGroupMbrInqBegin; + alias RpcNsGroupMbrInqNextW RpcNsGroupMbrInqNext; + alias RpcNsEntryExpandNameW RpcNsEntryExpandName; + alias RpcNsEntryObjectInqBeginW RpcNsEntryObjectInqBegin; + alias RpcNsMgmtBindingUnexportW RpcNsMgmtBindingUnexport; + alias RpcNsMgmtEntryCreateW RpcNsMgmtEntryCreate; + alias RpcNsMgmtEntryDeleteW RpcNsMgmtEntryDelete; + alias RpcNsMgmtEntryInqIfIdsW RpcNsMgmtEntryInqIfIds; + alias RpcNsProfileDeleteW RpcNsProfileDelete; + alias RpcNsProfileEltAddW RpcNsProfileEltAdd; + alias RpcNsProfileEltRemoveW RpcNsProfileEltRemove; + alias RpcNsProfileEltInqBeginW RpcNsProfileEltInqBegin; + alias RpcNsProfileEltInqNextW RpcNsProfileEltInqNext; +} else { + alias RpcNsBindingLookupBeginA RpcNsBindingLookupBegin; + alias RpcNsBindingImportBeginA RpcNsBindingImportBegin; + alias RpcNsBindingExportA RpcNsBindingExport; + alias RpcNsBindingUnexportA RpcNsBindingUnexport; + alias RpcNsGroupDeleteA RpcNsGroupDelete; + alias RpcNsGroupMbrAddA RpcNsGroupMbrAdd; + alias RpcNsGroupMbrRemoveA RpcNsGroupMbrRemove; + alias RpcNsGroupMbrInqBeginA RpcNsGroupMbrInqBegin; + alias RpcNsGroupMbrInqNextA RpcNsGroupMbrInqNext; + alias RpcNsEntryExpandNameA RpcNsEntryExpandName; + alias RpcNsEntryObjectInqBeginA RpcNsEntryObjectInqBegin; + alias RpcNsMgmtBindingUnexportA RpcNsMgmtBindingUnexport; + alias RpcNsMgmtEntryCreateA RpcNsMgmtEntryCreate; + alias RpcNsMgmtEntryDeleteA RpcNsMgmtEntryDelete; + alias RpcNsMgmtEntryInqIfIdsA RpcNsMgmtEntryInqIfIds; + alias RpcNsProfileDeleteA RpcNsProfileDelete; + alias RpcNsProfileEltAddA RpcNsProfileEltAdd; + alias RpcNsProfileEltRemoveA RpcNsProfileEltRemove; + alias RpcNsProfileEltInqBeginA RpcNsProfileEltInqBegin; + alias RpcNsProfileEltInqNextA RpcNsProfileEltInqNext; +} diff --git a/src/core/sys/windows/rpcnsip.d b/src/core/sys/windows/rpcnsip.d index d56bdc3c0d..a64495743d 100644 --- a/src/core/sys/windows/rpcnsip.d +++ b/src/core/sys/windows/rpcnsip.d @@ -1,28 +1,28 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnsip.d) - */ -module core.sys.windows.rpcnsip; - -private import core.sys.windows.rpcdce, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi; - -struct RPC_IMPORT_CONTEXT_P { - RPC_NS_HANDLE LookupContext; - RPC_BINDING_HANDLE ProposedHandle; - RPC_BINDING_VECTOR* Bindings; -} -alias RPC_IMPORT_CONTEXT_P* PRPC_IMPORT_CONTEXT_P; - -extern(Windows) { - RPC_STATUS I_RpcNsGetBuffer(PRPC_MESSAGE); - RPC_STATUS I_RpcNsSendReceive(PRPC_MESSAGE, RPC_BINDING_HANDLE*); - void I_RpcNsRaiseException(PRPC_MESSAGE, RPC_STATUS); - RPC_STATUS I_RpcReBindBuffer(PRPC_MESSAGE); - RPC_STATUS I_NsServerBindSearch(); - RPC_STATUS I_NsClientBindSearch(); - void I_NsClientBindDone(); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnsip.d) + */ +module core.sys.windows.rpcnsip; + +private import core.sys.windows.rpcdce, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi; + +struct RPC_IMPORT_CONTEXT_P { + RPC_NS_HANDLE LookupContext; + RPC_BINDING_HANDLE ProposedHandle; + RPC_BINDING_VECTOR* Bindings; +} +alias RPC_IMPORT_CONTEXT_P* PRPC_IMPORT_CONTEXT_P; + +extern(Windows) { + RPC_STATUS I_RpcNsGetBuffer(PRPC_MESSAGE); + RPC_STATUS I_RpcNsSendReceive(PRPC_MESSAGE, RPC_BINDING_HANDLE*); + void I_RpcNsRaiseException(PRPC_MESSAGE, RPC_STATUS); + RPC_STATUS I_RpcReBindBuffer(PRPC_MESSAGE); + RPC_STATUS I_NsServerBindSearch(); + RPC_STATUS I_NsClientBindSearch(); + void I_NsClientBindDone(); +} diff --git a/src/core/sys/windows/rpcnterr.d b/src/core/sys/windows/rpcnterr.d index 7dda50bf1e..ea50f23af7 100644 --- a/src/core/sys/windows/rpcnterr.d +++ b/src/core/sys/windows/rpcnterr.d @@ -1,30 +1,30 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnterr.d) - */ -module core.sys.windows.rpcnterr; - -import core.sys.windows.winerror; - -enum : uint { - RPC_S_OK = ERROR_SUCCESS, - RPC_S_INVALID_ARG = ERROR_INVALID_PARAMETER, - RPC_S_OUT_OF_MEMORY = ERROR_OUTOFMEMORY, - RPC_S_OUT_OF_THREADS = ERROR_MAX_THRDS_REACHED, - RPC_S_INVALID_LEVEL = ERROR_INVALID_PARAMETER, - RPC_S_BUFFER_TOO_SMALL = ERROR_INSUFFICIENT_BUFFER, - RPC_S_INVALID_SECURITY_DESC = ERROR_INVALID_SECURITY_DESCR, - RPC_S_ACCESS_DENIED = ERROR_ACCESS_DENIED, - RPC_S_SERVER_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_SERVER_MEMORY, - RPC_X_NO_MEMORY = RPC_S_OUT_OF_MEMORY, - RPC_X_INVALID_BOUND = RPC_S_INVALID_BOUND, - RPC_X_INVALID_TAG = RPC_S_INVALID_TAG, - RPC_X_ENUM_VALUE_TOO_LARGE = RPC_X_ENUM_VALUE_OUT_OF_RANGE, - RPC_X_SS_CONTEXT_MISMATCH = ERROR_INVALID_HANDLE, - RPC_X_INVALID_BUFFER = ERROR_INVALID_USER_BUFFER, - RPC_X_INVALID_PIPE_OPERATION = RPC_X_WRONG_PIPE_ORDER -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnterr.d) + */ +module core.sys.windows.rpcnterr; + +import core.sys.windows.winerror; + +enum : uint { + RPC_S_OK = ERROR_SUCCESS, + RPC_S_INVALID_ARG = ERROR_INVALID_PARAMETER, + RPC_S_OUT_OF_MEMORY = ERROR_OUTOFMEMORY, + RPC_S_OUT_OF_THREADS = ERROR_MAX_THRDS_REACHED, + RPC_S_INVALID_LEVEL = ERROR_INVALID_PARAMETER, + RPC_S_BUFFER_TOO_SMALL = ERROR_INSUFFICIENT_BUFFER, + RPC_S_INVALID_SECURITY_DESC = ERROR_INVALID_SECURITY_DESCR, + RPC_S_ACCESS_DENIED = ERROR_ACCESS_DENIED, + RPC_S_SERVER_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_SERVER_MEMORY, + RPC_X_NO_MEMORY = RPC_S_OUT_OF_MEMORY, + RPC_X_INVALID_BOUND = RPC_S_INVALID_BOUND, + RPC_X_INVALID_TAG = RPC_S_INVALID_TAG, + RPC_X_ENUM_VALUE_TOO_LARGE = RPC_X_ENUM_VALUE_OUT_OF_RANGE, + RPC_X_SS_CONTEXT_MISMATCH = ERROR_INVALID_HANDLE, + RPC_X_INVALID_BUFFER = ERROR_INVALID_USER_BUFFER, + RPC_X_INVALID_PIPE_OPERATION = RPC_X_WRONG_PIPE_ORDER +} diff --git a/src/core/sys/windows/schannel.d b/src/core/sys/windows/schannel.d index a5a3e721c3..841609bb24 100644 --- a/src/core/sys/windows/schannel.d +++ b/src/core/sys/windows/schannel.d @@ -1,105 +1,105 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_schannel.d) - */ -module core.sys.windows.schannel; - -import core.sys.windows.wincrypt; -private import core.sys.windows.windef; - -const DWORD SCHANNEL_CRED_VERSION = 4; -const SCHANNEL_SHUTDOWN = 1; -/* Comment from MinGW - ? Do these belong here or in wincrypt.h - */ -enum : DWORD { - AUTHTYPE_CLIENT = 1, - AUTHTYPE_SERVER = 2 -} - -const DWORD - SP_PROT_PCT1_SERVER = 0x01, - SP_PROT_PCT1_CLIENT = 0x02, - SP_PROT_SSL2_SERVER = 0x04, - SP_PROT_SSL2_CLIENT = 0x08, - SP_PROT_SSL3_SERVER = 0x10, - SP_PROT_SSL3_CLIENT = 0x20, - SP_PROT_TLS1_SERVER = 0x40, - SP_PROT_TLS1_CLIENT = 0x80, - SP_PROT_PCT1 = SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER, - SP_PROT_TLS1 = SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER, - SP_PROT_SSL2 = SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER, - SP_PROT_SSL3 = SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER; - -const DWORD - SCH_CRED_NO_SYSTEM_MAPPER = 0x0002, - SCH_CRED_NO_SERVERNAME_CHECK = 0x0004, - SCH_CRED_MANUAL_CRED_VALIDATION = 0x0008, - SCH_CRED_NO_DEFAULT_CREDS = 0x0010, - SCH_CRED_AUTO_CRED_VALIDATION = 0x0020, - SCH_CRED_USE_DEFAULT_CREDS = 0x0040, - SCH_CRED_REVOCATION_CHECK_END_CERT = 0x0100, - SCH_CRED_REVOCATION_CHECK_CHAIN = 0x0200, - SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x0400, - SCH_CRED_IGNORE_NO_REVOCATION_CHECK = 0x0800, - SCH_CRED_IGNORE_REVOCATION_OFFLINE = 0x1000; - -// No definition - presumably an opaque structure -struct _HMAPPER; - -struct SCHANNEL_CRED { - DWORD dwVersion = SCHANNEL_CRED_VERSION; - DWORD cCreds; - PCCERT_CONTEXT* paCred; - HCERTSTORE hRootStore; - DWORD cMappers; - _HMAPPER** aphMappers; - DWORD cSupportedAlgs; - ALG_ID* palgSupportedAlgs; - DWORD grbitEnabledProtocols; - DWORD dwMinimumCypherStrength; - DWORD dwMaximumCypherStrength; - DWORD dwSessionLifespan; - DWORD dwFlags; - DWORD reserved; -} -alias SCHANNEL_CRED* PSCHANNEL_CRED; - -struct SecPkgCred_SupportedAlgs { - DWORD cSupportedAlgs; - ALG_ID* palgSupportedAlgs; -} -alias SecPkgCred_SupportedAlgs* PSecPkgCred_SupportedAlgs; - -struct SecPkgCred_CypherStrengths { - DWORD dwMinimumCypherStrength; - DWORD dwMaximumCypherStrength; -} -alias SecPkgCred_CypherStrengths* PSecPkgCred_CypherStrengths; - -struct SecPkgCred_SupportedProtocols { - DWORD grbitProtocol; -} -alias SecPkgCred_SupportedProtocols* PSecPkgCred_SupportedProtocols; - -struct SecPkgContext_IssuerListInfoEx { - PCERT_NAME_BLOB aIssuers; - DWORD cIssuers; -} -alias SecPkgContext_IssuerListInfoEx* PSecPkgContext_IssuerListInfoEx; - -struct SecPkgContext_ConnectionInfo { - DWORD dwProtocol; - ALG_ID aiCipher; - DWORD dwCipherStrength; - ALG_ID aiHash; - DWORD dwHashStrength; - ALG_ID aiExch; - DWORD dwExchStrength; -} -alias SecPkgContext_ConnectionInfo* PSecPkgContext_ConnectionInfo; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_schannel.d) + */ +module core.sys.windows.schannel; + +import core.sys.windows.wincrypt; +private import core.sys.windows.windef; + +const DWORD SCHANNEL_CRED_VERSION = 4; +const SCHANNEL_SHUTDOWN = 1; +/* Comment from MinGW + ? Do these belong here or in wincrypt.h + */ +enum : DWORD { + AUTHTYPE_CLIENT = 1, + AUTHTYPE_SERVER = 2 +} + +const DWORD + SP_PROT_PCT1_SERVER = 0x01, + SP_PROT_PCT1_CLIENT = 0x02, + SP_PROT_SSL2_SERVER = 0x04, + SP_PROT_SSL2_CLIENT = 0x08, + SP_PROT_SSL3_SERVER = 0x10, + SP_PROT_SSL3_CLIENT = 0x20, + SP_PROT_TLS1_SERVER = 0x40, + SP_PROT_TLS1_CLIENT = 0x80, + SP_PROT_PCT1 = SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER, + SP_PROT_TLS1 = SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER, + SP_PROT_SSL2 = SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER, + SP_PROT_SSL3 = SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER; + +const DWORD + SCH_CRED_NO_SYSTEM_MAPPER = 0x0002, + SCH_CRED_NO_SERVERNAME_CHECK = 0x0004, + SCH_CRED_MANUAL_CRED_VALIDATION = 0x0008, + SCH_CRED_NO_DEFAULT_CREDS = 0x0010, + SCH_CRED_AUTO_CRED_VALIDATION = 0x0020, + SCH_CRED_USE_DEFAULT_CREDS = 0x0040, + SCH_CRED_REVOCATION_CHECK_END_CERT = 0x0100, + SCH_CRED_REVOCATION_CHECK_CHAIN = 0x0200, + SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x0400, + SCH_CRED_IGNORE_NO_REVOCATION_CHECK = 0x0800, + SCH_CRED_IGNORE_REVOCATION_OFFLINE = 0x1000; + +// No definition - presumably an opaque structure +struct _HMAPPER; + +struct SCHANNEL_CRED { + DWORD dwVersion = SCHANNEL_CRED_VERSION; + DWORD cCreds; + PCCERT_CONTEXT* paCred; + HCERTSTORE hRootStore; + DWORD cMappers; + _HMAPPER** aphMappers; + DWORD cSupportedAlgs; + ALG_ID* palgSupportedAlgs; + DWORD grbitEnabledProtocols; + DWORD dwMinimumCypherStrength; + DWORD dwMaximumCypherStrength; + DWORD dwSessionLifespan; + DWORD dwFlags; + DWORD reserved; +} +alias SCHANNEL_CRED* PSCHANNEL_CRED; + +struct SecPkgCred_SupportedAlgs { + DWORD cSupportedAlgs; + ALG_ID* palgSupportedAlgs; +} +alias SecPkgCred_SupportedAlgs* PSecPkgCred_SupportedAlgs; + +struct SecPkgCred_CypherStrengths { + DWORD dwMinimumCypherStrength; + DWORD dwMaximumCypherStrength; +} +alias SecPkgCred_CypherStrengths* PSecPkgCred_CypherStrengths; + +struct SecPkgCred_SupportedProtocols { + DWORD grbitProtocol; +} +alias SecPkgCred_SupportedProtocols* PSecPkgCred_SupportedProtocols; + +struct SecPkgContext_IssuerListInfoEx { + PCERT_NAME_BLOB aIssuers; + DWORD cIssuers; +} +alias SecPkgContext_IssuerListInfoEx* PSecPkgContext_IssuerListInfoEx; + +struct SecPkgContext_ConnectionInfo { + DWORD dwProtocol; + ALG_ID aiCipher; + DWORD dwCipherStrength; + ALG_ID aiHash; + DWORD dwHashStrength; + ALG_ID aiExch; + DWORD dwExchStrength; +} +alias SecPkgContext_ConnectionInfo* PSecPkgContext_ConnectionInfo; diff --git a/src/core/sys/windows/secext.d b/src/core/sys/windows/secext.d index 5bc438cffd..566c6cb13c 100644 --- a/src/core/sys/windows/secext.d +++ b/src/core/sys/windows/secext.d @@ -1,51 +1,51 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_secext.d) - */ -// Don't include this file directly, use core.sys.windows.security instead. -module core.sys.windows.secext; -pragma(lib, "secur32"); - -private import core.sys.windows.w32api, core.sys.windows.windef; - -static assert (_WIN32_WINNT >= 0x501, - "SecExt is only available on WindowsXP and later"); - -enum EXTENDED_NAME_FORMAT { - NameUnknown, - NameFullyQualifiedDN, - NameSamCompatible, - NameDisplay, // = 3 - NameUniqueId = 6, - NameCanonical, - NameUserPrincipal, - NameCanonicalEx, - NameServicePrincipal, // = 10 - NameDnsDomain = 12 -} -alias EXTENDED_NAME_FORMAT* PEXTENDED_NAME_FORMAT; - -extern (Windows) { - BOOLEAN GetComputerObjectNameA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); - BOOLEAN GetComputerObjectNameW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); - BOOLEAN GetUserNameExA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); - BOOLEAN GetUserNameExW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); - BOOLEAN TranslateNameA(LPCSTR, EXTENDED_NAME_FORMAT, - EXTENDED_NAME_FORMAT, LPSTR, PULONG); - BOOLEAN TranslateNameW(LPCWSTR, EXTENDED_NAME_FORMAT, - EXTENDED_NAME_FORMAT, LPWSTR, PULONG); -} - -version (Unicode) { - alias GetComputerObjectNameW GetComputerObjectName; - alias GetUserNameExW GetUserNameEx; - alias TranslateNameW TranslateName; -} else { - alias GetComputerObjectNameA GetComputerObjectName; - alias GetUserNameExA GetUserNameEx; - alias TranslateNameA TranslateName; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_secext.d) + */ +// Don't include this file directly, use core.sys.windows.security instead. +module core.sys.windows.secext; +pragma(lib, "secur32"); + +private import core.sys.windows.w32api, core.sys.windows.windef; + +static assert (_WIN32_WINNT >= 0x501, + "SecExt is only available on WindowsXP and later"); + +enum EXTENDED_NAME_FORMAT { + NameUnknown, + NameFullyQualifiedDN, + NameSamCompatible, + NameDisplay, // = 3 + NameUniqueId = 6, + NameCanonical, + NameUserPrincipal, + NameCanonicalEx, + NameServicePrincipal, // = 10 + NameDnsDomain = 12 +} +alias EXTENDED_NAME_FORMAT* PEXTENDED_NAME_FORMAT; + +extern (Windows) { + BOOLEAN GetComputerObjectNameA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN GetComputerObjectNameW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); + BOOLEAN GetUserNameExA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN GetUserNameExW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); + BOOLEAN TranslateNameA(LPCSTR, EXTENDED_NAME_FORMAT, + EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN TranslateNameW(LPCWSTR, EXTENDED_NAME_FORMAT, + EXTENDED_NAME_FORMAT, LPWSTR, PULONG); +} + +version (Unicode) { + alias GetComputerObjectNameW GetComputerObjectName; + alias GetUserNameExW GetUserNameEx; + alias TranslateNameW TranslateName; +} else { + alias GetComputerObjectNameA GetComputerObjectName; + alias GetUserNameExA GetUserNameEx; + alias TranslateNameA TranslateName; +} diff --git a/src/core/sys/windows/security.d b/src/core/sys/windows/security.d index 4f8568d9ae..bcd5eee21c 100644 --- a/src/core/sys/windows/security.d +++ b/src/core/sys/windows/security.d @@ -1,45 +1,45 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Ellery Newcomer - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_security.d) - */ -module core.sys.windows.security; - -enum :SECURITY_STATUS{ - SEC_E_OK = 0, - SEC_E_CERT_EXPIRED = (-2146893016), - SEC_E_INCOMPLETE_MESSAGE = (-2146893032), - SEC_E_INSUFFICIENT_MEMORY = (-2146893056), - SEC_E_INTERNAL_ERROR = (-2146893052), - SEC_E_INVALID_HANDLE = (-2146893055), - SEC_E_INVALID_TOKEN = (-2146893048), - SEC_E_LOGON_DENIED = (-2146893044), - SEC_E_NO_AUTHENTICATING_AUTHORITY = (-2146893039), - SEC_E_NO_CREDENTIALS = (-2146893042), - SEC_E_TARGET_UNKNOWN = (-2146893053), - SEC_E_UNSUPPORTED_FUNCTION = (-2146893054), - SEC_E_UNTRUSTED_ROOT = (-2146893019), - SEC_E_WRONG_PRINCIPAL = (-2146893022), - SEC_E_SECPKG_NOT_FOUND = (-2146893051), - SEC_E_QOP_NOT_SUPPORTED = (-2146893046), - SEC_E_UNKNOWN_CREDENTIALS = (-2146893043), - SEC_E_NOT_OWNER = (-2146893050), -} -enum :SECURITY_STATUS { - SEC_I_RENEGOTIATE = 590625, - SEC_I_COMPLETE_AND_CONTINUE = 590612, - SEC_I_COMPLETE_NEEDED = 590611, - SEC_I_CONTINUE_NEEDED = 590610, - SEC_I_INCOMPLETE_CREDENTIALS = 590624, -} - -/* always a char */ -alias char SEC_CHAR; -alias wchar SEC_WCHAR; - -alias int SECURITY_STATUS; - +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Ellery Newcomer + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_security.d) + */ +module core.sys.windows.security; + +enum :SECURITY_STATUS{ + SEC_E_OK = 0, + SEC_E_CERT_EXPIRED = (-2146893016), + SEC_E_INCOMPLETE_MESSAGE = (-2146893032), + SEC_E_INSUFFICIENT_MEMORY = (-2146893056), + SEC_E_INTERNAL_ERROR = (-2146893052), + SEC_E_INVALID_HANDLE = (-2146893055), + SEC_E_INVALID_TOKEN = (-2146893048), + SEC_E_LOGON_DENIED = (-2146893044), + SEC_E_NO_AUTHENTICATING_AUTHORITY = (-2146893039), + SEC_E_NO_CREDENTIALS = (-2146893042), + SEC_E_TARGET_UNKNOWN = (-2146893053), + SEC_E_UNSUPPORTED_FUNCTION = (-2146893054), + SEC_E_UNTRUSTED_ROOT = (-2146893019), + SEC_E_WRONG_PRINCIPAL = (-2146893022), + SEC_E_SECPKG_NOT_FOUND = (-2146893051), + SEC_E_QOP_NOT_SUPPORTED = (-2146893046), + SEC_E_UNKNOWN_CREDENTIALS = (-2146893043), + SEC_E_NOT_OWNER = (-2146893050), +} +enum :SECURITY_STATUS { + SEC_I_RENEGOTIATE = 590625, + SEC_I_COMPLETE_AND_CONTINUE = 590612, + SEC_I_COMPLETE_NEEDED = 590611, + SEC_I_CONTINUE_NEEDED = 590610, + SEC_I_INCOMPLETE_CREDENTIALS = 590624, +} + +/* always a char */ +alias char SEC_CHAR; +alias wchar SEC_WCHAR; + +alias int SECURITY_STATUS; + diff --git a/src/core/sys/windows/servprov.d b/src/core/sys/windows/servprov.d index 1c33164557..bd323db981 100644 --- a/src/core/sys/windows/servprov.d +++ b/src/core/sys/windows/servprov.d @@ -1,15 +1,15 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_servprov.d) - */ -module core.sys.windows.servprov; - -private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; - -interface IServiceProvider : IUnknown { - HRESULT QueryService(REFGUID, REFIID, void**); -} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_servprov.d) + */ +module core.sys.windows.servprov; + +private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; + +interface IServiceProvider : IUnknown { + HRESULT QueryService(REFGUID, REFIID, void**); +} diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d index ed5325c588..784a863daa 100644 --- a/src/core/sys/windows/setupapi.d +++ b/src/core/sys/windows/setupapi.d @@ -1,1978 +1,1978 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Vladimir Vlasov - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_setupapi.d) - */ -module core.sys.windows.setupapi; -pragma(lib, "setupapi"); - -private import core.sys.windows.basetyps, core.sys.windows.commctrl, core.sys.windows.prsht, core.sys.windows.w32api, - core.sys.windows.winreg, core.sys.windows.windef; -private import core.sys.windows.winbase; // for SYSTEMTIME - -/*static if(_WIN32_WINNT < _WIN32_WINDOWS) { - const UINT _SETUPAPI_VER = _WIN32_WINNT; // SetupAPI version follows Windows NT version -} else static if(_WIN32_WINDOWS) { - static if(_WIN32_WINDOWS >= 0x0490) { - const UINT _SETUPAPI_VER = 0x0500; // WinME uses same version of SetupAPI as Win2k - } else static if(_WIN32_WINDOWS >= 0x0410) { - const UINT _SETUPAPI_VER = 0x0410; // Indicates version of SetupAPI shipped with Win98 - } else { - const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version - } -} else { - const UINT _SETUPAPI_VER = 0x0501; -} - -version (WindowsNTonly) { - static if (_WIN32_WINNT >= 0x500) { - const UINT USE_SP_DRVINFO_DATA_V1 = 0; - } else { - const UINT USE_SP_DRVINFO_DATA_V1 = 1; - } -} else { - const UINT USE_SP_DRVINFO_DATA_V1 = 1; -}*/ -/+ -const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version -const UINT USE_SP_DRVINFO_DATA_V1 = 1; -+/ -const UINT _SETUPAPI_VER = _WIN32_WINNT; -const bool USE_SP_DRVINFO_DATA_V1 = _WIN32_WINNT < 0x500; - -enum : uint { - LINE_LEN = 256, - MAX_INF_STRING_LENGTH = 4096, - MAX_TITLE_LEN = 60, - MAX_INSTRUCTION_LEN = 256, - MAX_LABEL_LEN = 30, - MAX_SERVICE_NAME_LEN = 256, - MAX_SUBTITLE_LEN = 256, - SP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3 -} - -enum : DWORD { - COPYFLG_WARN_IF_SKIP = 0x00000001, - COPYFLG_NOSKIP = 0x00000002, - COPYFLG_NOVERSIONCHECK = 0x00000004, - COPYFLG_FORCE_FILE_IN_USE = 0x00000008, - COPYFLG_NO_OVERWRITE = 0x00000010, - COPYFLG_NO_VERSION_DIALOG = 0x00000020, - COPYFLG_OVERWRITE_OLDER_ONLY = 0x00000040, - COPYFLG_REPLACEONLY = 0x00000400, - COPYFLG_NODECOMP = 0x00000800, - COPYFLG_REPLACE_BOOT_FILE = 0x00001000, - COPYFLG_NOPRUNE = 0x00002000 -} - -enum : DWORD { - DELFLG_IN_USE = 0x00000001, - DELFLG_IN_USE1 = 0x00010000 -} - -enum : DWORD { - DI_REMOVEDEVICE_GLOBAL = 0x00000001, - DI_REMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, - DI_UNREMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, - DI_SHOWOEM = 0x00000001, - DI_SHOWCOMPAT = 0x00000002, - DI_SHOWCLASS = 0x00000004, - DI_SHOWALL = 0x00000007, - DI_NOVCP = 0x00000008, - DI_DIDCOMPAT = 0x00000010, - DI_DIDCLASS = 0x00000020, - DI_AUTOASSIGNRES = 0x00000040, - DI_NEEDRESTART = 0x00000080, - DI_NEEDREBOOT = 0x00000100, - DI_NOBROWSE = 0x00000200, - DI_MULTMFGS = 0x00000400, - DI_DISABLED = 0x00000800, - DI_GENERALPAGE_ADDED = 0x00001000, - DI_RESOURCEPAGE_ADDED = 0x00002000, - DI_PROPERTIES_CHANGE = 0x00004000, - DI_INF_IS_SORTED = 0x00008000, - DI_ENUMSINGLEINF = 0x00010000, - DI_DONOTCALLCONFIGMG = 0x00020000, - DI_INSTALLDISABLED = 0x00040000, - DI_COMPAT_FROM_CLASS = 0x00080000, - DI_CLASSINSTALLPARAMS = 0x00100000, - DI_NODI_DEFAULTACTION = 0x00200000, - DI_QUIETINSTALL = 0x00800000, - DI_NOFILECOPY = 0x01000000, - DI_FORCECOPY = 0x02000000, - DI_DRIVERPAGE_ADDED = 0x04000000, - DI_USECI_SELECTSTRINGS = 0x08000000, - DI_OVERRIDE_INFFLAGS = 0x10000000, - DI_PROPS_NOCHANGEUSAGE = 0x20000000, - DI_NOSELECTICONS = 0x40000000, - DI_NOWRITE_IDS = 0x80000000, - DI_FLAGSEX_USEOLDINFSEARCH = 0x00000001, - DI_FLAGSEX_AUTOSELECTRANK0 = 0x00000002, - DI_FLAGSEX_CI_FAILED = 0x00000004, - DI_FLAGSEX_DIDINFOLIST = 0x00000010, - DI_FLAGSEX_DIDCOMPATINFO = 0x00000020, - DI_FLAGSEX_FILTERCLASSES = 0x00000040, - DI_FLAGSEX_SETFAILEDINSTALL = 0x00000080, - DI_FLAGSEX_DEVICECHANGE = 0x00000100, - DI_FLAGSEX_ALWAYSWRITEIDS = 0x00000200, - DI_FLAGSEX_PROPCHANGE_PENDING = 0x00000400, - DI_FLAGSEX_ALLOWEXCLUDEDDRVS = 0x00000800, - DI_FLAGSEX_NOUIONQUERYREMOVE = 0x00001000, - DI_FLAGSEX_USECLASSFORCOMPAT = 0x00002000, - DI_FLAGSEX_OLDINF_IN_CLASSLIST = 0x00004000, - DI_FLAGSEX_NO_DRVREG_MODIFY = 0x00008000, - DI_FLAGSEX_IN_SYSTEM_SETUP = 0x00010000, - DI_FLAGSEX_INET_DRIVER = 0x00020000, - DI_FLAGSEX_APPENDDRIVERLIST = 0x00040000, - DI_FLAGSEX_PREINSTALLBACKUP = 0x00080000, - DI_FLAGSEX_BACKUPONREPLACE = 0x00100000, - DI_FLAGSEX_DRIVERLIST_FROM_URL = 0x00200000, - DI_FLAGSEX_RESERVED1 = 0x00400000, - DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS = 0x00800000, - DI_FLAGSEX_POWERPAGE_ADDED = 0x01000000 -} - -enum : DWORD { - DIBCI_NOINSTALLCLASS = 0x00000001, - DIBCI_NODISPLAYCLASS = 0x00000002 -} - -enum : DWORD { - DICD_GENERATE_ID = 0x00000001, - DICD_INHERIT_CLASSDRVS = 0x00000002 -} - -enum : DWORD { - DICS_ENABLE = 1, - DICS_DISABLE, - DICS_PROPCHANGE, - DICS_START, - DICS_STOP // = 5 -} - -enum : DWORD { - DICS_FLAG_GLOBAL = 1, - DICS_FLAG_CONFIGSPECIFIC = 2, - DICS_FLAG_CONFIGGENERAL = 4 -} - -alias UINT DI_FUNCTION; - -enum : DI_FUNCTION { - DIF_SELECTDEVICE = 1, - DIF_INSTALLDEVICE, - DIF_ASSIGNRESOURCES, - DIF_PROPERTIES, - DIF_REMOVE, - DIF_FIRSTTIMESETUP, - DIF_FOUNDDEVICE, - DIF_SELECTCLASSDRIVERS, - DIF_VALIDATECLASSDRIVERS, - DIF_INSTALLCLASSDRIVERS, - DIF_CALCDISKSPACE, - DIF_DESTROYPRIVATEDATA, - DIF_VALIDATEDRIVER, - DIF_MOVEDEVICE, - DIF_DETECT, - DIF_INSTALLWIZARD, - DIF_DESTROYWIZARDDATA, - DIF_PROPERTYCHANGE, - DIF_ENABLECLASS, - DIF_DETECTVERIFY, - DIF_INSTALLDEVICEFILES, - DIF_UNREMOVE, - DIF_SELECTBESTCOMPATDRV, - DIF_ALLOW_INSTALL, - DIF_REGISTERDEVICE, - DIF_NEWDEVICEWIZARD_PRESELECT, - DIF_NEWDEVICEWIZARD_SELECT, - DIF_NEWDEVICEWIZARD_PREANALYZE, - DIF_NEWDEVICEWIZARD_POSTANALYZE, - DIF_NEWDEVICEWIZARD_FINISHINSTALL, - DIF_UNUSED1, - DIF_INSTALLINTERFACES, - DIF_DETECTCANCEL, - DIF_REGISTER_COINSTALLERS, - DIF_ADDPROPERTYPAGE_ADVANCED, - DIF_ADDPROPERTYPAGE_BASIC, - DIF_RESERVED1, - DIF_TROUBLESHOOTER, - DIF_POWERMESSAGEWAKE // = 39 -} - -enum : DWORD { - DIGCF_DEFAULT = 0x00000001, - DIGCF_PRESENT = 0x00000002, - DIGCF_ALLCLASSES = 0x00000004, - DIGCF_PROFILE = 0x00000008, - DIGCF_DEVICEINTERFACE = 0x00000010 -} - -deprecated enum : DWORD { - DIGCF_INTERFACEDEVICE = DIGCF_DEVICEINTERFACE -} - -enum : DWORD { - DIGCDP_FLAG_BASIC = 0x00000001, - DIGCDP_FLAG_ADVANCED = 0x00000002 -} - -enum : DWORD { - DIOCR_INSTALLER = 0x00000001, - DIOCR_INTERFACE = 0x00000002 -} - -enum : DWORD { - DIODI_NO_ADD = 0x00000001 -} - -enum : DWORD { - DIOD_INHERIT_CLASSDRVS = 0x00000002, - DIOD_CANCEL_REMOVE = 0x00000004 -} - -enum : DWORD { - DIREG_DEV = 0x00000001, - DIREG_DRV = 0x00000002, - DIREG_BOTH = 0x00000004 -} - -enum : int { - DIRID_ABSOLUTE = -1, - DIRID_NULL = 0, - DIRID_SRCPATH = 1, - DIRID_WINDOWS = 10, - DIRID_SYSTEM = 11, - DIRID_DRIVERS = 12, - DIRID_IOSUBSYS = DIRID_DRIVERS, - DIRID_INF = 17, - DIRID_HELP = 18, - DIRID_FONTS = 20, - DIRID_VIEWERS = 21, - DIRID_COLOR = 23, - DIRID_APPS = 24, - DIRID_SHARED = 25, - DIRID_BOOT = 30, - DIRID_SYSTEM16 = 50, - DIRID_SPOOL = 51, - DIRID_SPOOLDRIVERS = 52, - DIRID_USERPROFILE = 53, - DIRID_LOADER = 54, - DIRID_PRINTPROCESSOR = 55, - DIRID_DEFAULT = DIRID_SYSTEM -} - -enum : int { - DIRID_COMMON_STARTMENU = 16406, - DIRID_COMMON_PROGRAMS = 16407, - DIRID_COMMON_STARTUP = 16408, - DIRID_COMMON_DESKTOPDIRECTORY = 16409, - DIRID_COMMON_FAVORITES = 16415, - DIRID_COMMON_APPDATA = 16419, - DIRID_PROGRAM_FILES = 16422, - DIRID_SYSTEM_X86 = 16425, - DIRID_PROGRAM_FILES_X86 = 16426, - DIRID_PROGRAM_FILES_COMMON = 16427, - DIRID_PROGRAM_FILES_COMMONX86 = 16428, - DIRID_COMMON_TEMPLATES = 16429, - DIRID_COMMON_DOCUMENTS = 16430, - DIRID_USER = 0x8000, - DIRID_ABSOLUTE_16BIT = 0xffff -} - -enum : DWORD { - DMI_MASK = 0x00000001, - DMI_BKCOLOR = 0x00000002, - DMI_USERECT = 0x00000004 -} - -enum : DWORD { - DNF_DUPDESC = 0x00000001, - DNF_OLDDRIVER = 0x00000002, - DNF_EXCLUDEFROMLIST = 0x00000004, - DNF_NODRIVER = 0x00000008, - DNF_LEGACYINF = 0x00000010, - DNF_CLASS_DRIVER = 0x00000020, - DNF_COMPATIBLE_DRIVER = 0x00000040, - DNF_INET_DRIVER = 0x00000080, - DNF_UNUSED1 = 0x00000100, - DNF_INDEXED_DRIVER = 0x00000200, - DNF_OLD_INET_DRIVER = 0x00000400, - DNF_BAD_DRIVER = 0x00000800, - DNF_DUPPROVIDER = 0x00001000 -} - -enum : UINT { - DPROMPT_SUCCESS, - DPROMPT_CANCEL, - DPROMPT_SKIPFILE, - DPROMPT_BUFFERTOOSMALL, - DPROMPT_OUTOFMEMORY // = 4 -} - -enum : DWORD { - DRIVER_HARDWAREID_RANK = 0x00000FFF, - DRIVER_COMPATID_RANK = 0x00003FFF, - DRIVER_UNTRUSTED_RANK = 0x00008000, - DRIVER_UNTRUSTED_HARDWAREID_RANK = 0x00008FFF, - DRIVER_UNTRUSTED_COMPATID_RANK = 0x0000BFFF, - DRIVER_W9X_SUSPECT_RANK = 0x0000C000, - DRIVER_W9X_SUSPECT_HARDWAREID_RANK = 0x0000CFFF, - DRIVER_W9X_SUSPECT_COMPATID_RANK = 0x0000FFFF -} - -enum : DWORD { - DYNAWIZ_FLAG_PAGESADDED = 0x00000001, - DYNAWIZ_FLAG_INSTALLDET_NEXT = 0x00000002, - DYNAWIZ_FLAG_INSTALLDET_PREV = 0x00000004, - DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT = 0x00000008 -} - -enum : WORD { - ENABLECLASS_QUERY, - ENABLECLASS_SUCCESS, - ENABLECLASS_FAILURE // = 2 -} - -enum : DWORD { - ERROR_EXPECTED_SECTION_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0, - ERROR_BAD_SECTION_NAME_LINE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 1, - ERROR_SECTION_NAME_TOO_LONG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 2, - ERROR_GENERAL_SYNTAX = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 3, - ERROR_WRONG_INF_STYLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x100, - ERROR_NOT_INSTALLED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x1000, - ERROR_SECTION_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x101, - ERROR_LINE_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x102, - ERROR_NO_BACKUP = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x103, - ERROR_NO_ASSOCIATED_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x200, - ERROR_CLASS_MISMATCH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x201, - ERROR_DUPLICATE_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x202, - ERROR_NO_DRIVER_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x203, - ERROR_KEY_DOES_NOT_EXIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x204, - ERROR_INVALID_DEVINST_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x205, - ERROR_INVALID_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x206, - ERROR_DEVINST_ALREADY_EXISTS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x207, - ERROR_DEVINFO_NOT_REGISTERED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x208, - ERROR_INVALID_REG_PROPERTY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x209, - ERROR_NO_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20A, - ERROR_NO_SUCH_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20B, - ERROR_CANT_LOAD_CLASS_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20C, - ERROR_INVALID_CLASS_INSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20D, - ERROR_DI_DO_DEFAULT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20E, - ERROR_DI_NOFILECOPY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20F, - ERROR_INVALID_HWPROFILE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x210, - ERROR_NO_DEVICE_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x211, - ERROR_DEVINFO_LIST_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x212, - ERROR_DEVINFO_DATA_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x213, - ERROR_DI_BAD_PATH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x214, - ERROR_NO_CLASSINSTALL_PARAMS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x215, - ERROR_FILEQUEUE_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x216, - ERROR_BAD_SERVICE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x217, - ERROR_NO_CLASS_DRIVER_LIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x218, - ERROR_NO_ASSOCIATED_SERVICE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x219, - ERROR_NO_DEFAULT_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21A, - ERROR_DEVICE_INTERFACE_ACTIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21B, - ERROR_DEVICE_INTERFACE_REMOVED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21C, - ERROR_BAD_INTERFACE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21D, - ERROR_NO_SUCH_INTERFACE_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21E, - ERROR_INVALID_REFERENCE_STRING = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21F, - ERROR_INVALID_MACHINENAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x220, - ERROR_REMOTE_COMM_FAILURE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x221, - ERROR_MACHINE_UNAVAILABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x222, - ERROR_NO_CONFIGMGR_SERVICES = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x223, - ERROR_INVALID_PROPPAGE_PROVIDER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x224, - ERROR_NO_SUCH_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x225, - ERROR_DI_POSTPROCESSING_REQUIRED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x226, - ERROR_INVALID_COINSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x227, - ERROR_NO_COMPAT_DRIVERS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x228, - ERROR_NO_DEVICE_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x229, - ERROR_INVALID_INF_LOGCONFIG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22A, - ERROR_DI_DONT_INSTALL = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22B, - ERROR_INVALID_FILTER_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22C, - ERROR_NON_WINDOWS_NT_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22D, - ERROR_NON_WINDOWS_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22E, - ERROR_NO_CATALOG_FOR_OEM_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22F, - ERROR_DEVINSTALL_QUEUE_NONNATIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x230, - ERROR_NOT_DISABLEABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x231, - ERROR_CANT_REMOVE_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x232 -} - -deprecated enum : DWORD { - ERROR_NO_DEFAULT_INTERFACE_DEVICE = ERROR_NO_DEFAULT_DEVICE_INTERFACE, - ERROR_INTERFACE_DEVICE_ACTIVE = ERROR_DEVICE_INTERFACE_ACTIVE, - ERROR_INTERFACE_DEVICE_REMOVED = ERROR_DEVICE_INTERFACE_REMOVED, - ERROR_NO_SUCH_INTERFACE_DEVICE = ERROR_NO_SUCH_DEVICE_INTERFACE, -} - -enum : UINT { - FILEOP_COPY, - FILEOP_RENAME, - FILEOP_DELETE, - FILEOP_BACKUP, - FILEOP_NEWPATH, // = 4 - FILEOP_ABORT = 0, - FILEOP_DOIT, - FILEOP_SKIP, // = 2 - FILEOP_RETRY = FILEOP_DOIT -} - -enum : UINT { - FILE_COMPRESSION_NONE, - FILE_COMPRESSION_WINLZA, - FILE_COMPRESSION_MSZIP, - FILE_COMPRESSION_NTCAB // = 3 -} - -enum : DWORD { - FLG_ADDREG_TYPE_SZ = 0x00000000, - FLG_ADDREG_BINVALUETYPE = 0x00000001, - FLG_ADDREG_NOCLOBBER = 0x00000002, - FLG_ADDREG_DELVAL = 0x00000004, - FLG_ADDREG_APPEND = 0x00000008, - FLG_ADDREG_KEYONLY = 0x00000010, - FLG_ADDREG_OVERWRITEONLY = 0x00000020, - FLG_ADDREG_TYPE_MULTI_SZ = 0x00010000, - FLG_ADDREG_TYPE_EXPAND_SZ = 0x00020000, - FLG_ADDREG_TYPE_BINARY = 0x00000000 | FLG_ADDREG_BINVALUETYPE, - FLG_ADDREG_TYPE_DWORD = 0x00010000 | FLG_ADDREG_BINVALUETYPE, - FLG_ADDREG_TYPE_NONE = 0x00020000 | FLG_ADDREG_BINVALUETYPE, - FLG_ADDREG_TYPE_MASK = 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - FLG_ADDREG_64BITKEY = 0x00001000, - FLG_ADDREG_KEYONLY_COMMON = 0x00002000, - FLG_ADDREG_32BITKEY = 0x00004000, - FLG_ADDREG_DELREG_BIT = 0x00008000 - } -} - -enum : DWORD { - FLG_DELREG_VALUE = 0x00000000 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - FLG_DELREG_TYPE_MASK = FLG_ADDREG_TYPE_MASK, - FLG_DELREG_TYPE_SZ = FLG_ADDREG_TYPE_SZ, - FLG_DELREG_TYPE_MULTI_SZ = FLG_ADDREG_TYPE_MULTI_SZ, - FLG_DELREG_TYPE_EXPAND_SZ = FLG_ADDREG_TYPE_EXPAND_SZ, - FLG_DELREG_TYPE_BINARY = FLG_ADDREG_TYPE_BINARY, - FLG_DELREG_TYPE_DWORD = FLG_ADDREG_TYPE_DWORD, - FLG_DELREG_TYPE_NONE = FLG_ADDREG_TYPE_NONE, - FLG_DELREG_64BITKEY = FLG_ADDREG_64BITKEY, - FLG_DELREG_KEYONLY_COMMON = FLG_ADDREG_KEYONLY_COMMON, - FLG_DELREG_32BITKEY = FLG_ADDREG_32BITKEY, - FLG_DELREG_OPERATION_MASK = 0x000000FE, - FLG_DELREG_MULTI_SZ_DELSTRING = 0x00000002 | FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT - } -} - -enum : DWORD { - FLG_BITREG_CLEARBITS = 0x00000000, - FLG_BITREG_SETBITS = 0x00000001 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - FLG_BITREG_64BITKEY = 0x00001000, - FLG_BITREG_32BITKEY = 0x00004000 - } -} - -enum : DWORD { - FLG_PROFITEM_CURRENTUSER = 0x00000001, - FLG_PROFITEM_DELETE = 0x00000002, - FLG_PROFITEM_GROUP = 0x00000004, - FLG_PROFITEM_CSIDL = 0x00000008 -} - -enum : DWORD { - FLG_REGSVR_DLLREGISTER = 0x00000001, - FLG_REGSVR_DLLINSTALL = 0x00000002 -} - -enum { - IDD_DYNAWIZ_FIRSTPAGE = 10000, - IDD_DYNAWIZ_SELECT_PREVPAGE, - IDD_DYNAWIZ_SELECT_NEXTPAGE, - IDD_DYNAWIZ_ANALYZE_PREVPAGE, - IDD_DYNAWIZ_ANALYZE_NEXTPAGE, // = 1004 - IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE = 10006, - IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE, - IDD_DYNAWIZ_INSTALLDETECTED_NODEVS, - IDD_DYNAWIZ_SELECTDEV_PAGE, - IDD_DYNAWIZ_ANALYZEDEV_PAGE, - IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE, - IDD_DYNAWIZ_SELECTCLASS_PAGE, // = 10012 - MIN_IDD_DYNAWIZ_RESOURCE_ID = 10000, - MAX_IDD_DYNAWIZ_RESOURCE_ID = 11000 -} - -enum : DWORD { - IDF_NOBROWSE = 0x00000001, - IDF_NOSKIP = 0x00000002, - IDF_NODETAILS = 0x00000004, - IDF_NOCOMPRESSED = 0x00000008, - IDF_CHECKFIRST = 0x00000100, - IDF_NOBEEP = 0x00000200, - IDF_NOFOREGROUND = 0x00000400, - IDF_WARNIFSKIP = 0x00000800 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - IDF_NOREMOVABLEMEDIAPROMPT = 0x00001000, - IDF_USEDISKNAMEASPROMPT = 0x00002000, - IDF_OEMDISK = 0x80000000 - } -} - -enum { - IDI_RESOURCEFIRST = 159, - IDI_RESOURCE = 159, - IDI_RESOURCELAST = 161, - IDI_RESOURCEOVERLAYFIRST = 161, - IDI_RESOURCEOVERLAYLAST = 161, - IDI_CONFLICT = 161, - IDI_PROBLEM_OVL = 500, - IDI_DISABLED_OVL = 501, - IDI_FORCED_OVL = 502, - IDI_CLASSICON_OVERLAYFIRST = 500, - IDI_CLASSICON_OVERLAYLAST = 502 -} - -enum : DWORD { - INF_STYLE_NONE = 0x00000000, - INF_STYLE_OLDNT = 0x00000001, - INF_STYLE_WIN4 = 0x00000002, - INF_STYLE_CACHE_ENABLE = 0x00000010, - INF_STYLE_CACHE_DISABLE = 0x00000020 -} - -enum : DWORD { - INFINFO_INF_SPEC_IS_HINF = 1, - INFINFO_INF_NAME_IS_ABSOLUTE, - INFINFO_DEFAULT_SEARCH, - INFINFO_REVERSE_DEFAULT_SEARCH, - INFINFO_INF_PATH_LIST_SEARCH // = 5 -} - -alias DWORD LogSeverity; -enum : LogSeverity { - LogSevInformation, - LogSevWarning, - LogSevError, - LogSevFatalError, - LogSevMaximum // = 4 -} - -const MAX_INSTALLWIZARD_DYNAPAGES = 20; - -enum : DWORD { - NDW_INSTALLFLAG_DIDFACTDEFS = 0x00000001, - NDW_INSTALLFLAG_HARDWAREALLREADYIN = 0x00000002, - NDW_INSTALLFLAG_NEEDSHUTDOWN = 0x00000200, - NDW_INSTALLFLAG_EXPRESSINTRO = 0x00000400, - NDW_INSTALLFLAG_SKIPISDEVINSTALLED = 0x00000800, - NDW_INSTALLFLAG_NODETECTEDDEVS = 0x00001000, - NDW_INSTALLFLAG_INSTALLSPECIFIC = 0x00002000, - NDW_INSTALLFLAG_SKIPCLASSLIST = 0x00004000, - NDW_INSTALLFLAG_CI_PICKED_OEM = 0x00008000, - NDW_INSTALLFLAG_PCMCIAMODE = 0x00010000, - NDW_INSTALLFLAG_PCMCIADEVICE = 0x00020000, - NDW_INSTALLFLAG_USERCANCEL = 0x00040000, - NDW_INSTALLFLAG_KNOWNCLASS = 0x00080000, - NDW_INSTALLFLAG_NEEDRESTART = 0x00000080, - NDW_INSTALLFLAG_NEEDREBOOT = 0x00000100 -} - -enum : DWORD { - SETDIRID_NOT_FULL_PATH = 0x00000001 -} - -enum : DWORD { - SP_COPY_DELETESOURCE = 0x0000001, - SP_COPY_REPLACEONLY = 0x0000002, - SP_COPY_NEWER = 0x0000004, - SP_COPY_NEWER_OR_SAME = 0x0000004, - SP_COPY_NOOVERWRITE = 0x0000008, - SP_COPY_NODECOMP = 0x0000010, - SP_COPY_LANGUAGEAWARE = 0x0000020, - SP_COPY_SOURCE_ABSOLUTE = 0x0000040, - SP_COPY_SOURCEPATH_ABSOLUTE = 0x0000080, - SP_COPY_IN_USE_NEEDS_REBOOT = 0x0000100, - SP_COPY_FORCE_IN_USE = 0x0000200, - SP_COPY_NOSKIP = 0x0000400, - SP_FLAG_CABINETCONTINUATION = 0x0000800, - SP_COPY_FORCE_NOOVERWRITE = 0x0001000, - SP_COPY_FORCE_NEWER = 0x0002000, - SP_COPY_WARNIFSKIP = 0x0004000, - SP_COPY_NOBROWSE = 0x0008000, - SP_COPY_NEWER_ONLY = 0x0010000, - SP_COPY_SOURCE_SIS_MASTER = 0x0020000, - SP_COPY_OEMINF_CATALOG_ONLY = 0x0040000, - SP_COPY_REPLACE_BOOT_FILE = 0x0080000, - SP_COPY_NOPRUNE = 0x0100000 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - SP_COPY_OEM_F6_INF = 0x0200000 - } -} - -enum : DWORD { - SPCRP_SECURITY = 23, - SPCRP_SECURITY_SDS, - SPCRP_DEVTYPE, - SPCRP_EXCLUSIVE, - SPCRP_CHARACTERISTICS, - SPCRP_MAXIMUM_PROPERTY // = 28 -} - -enum : DWORD { - SPDIT_NODRIVER, - SPDIT_CLASSDRIVER, - SPDIT_COMPATDRIVER // = 2 -} - -enum : DWORD { - SPDRP_DEVICEDESC, - SPDRP_HARDWAREID, - SPDRP_COMPATIBLEIDS, - SPDRP_UNUSED0, - SPDRP_SERVICE, - SPDRP_UNUSED1, - SPDRP_UNUSED2, - SPDRP_CLASS, - SPDRP_CLASSGUID, - SPDRP_DRIVER, - SPDRP_CONFIGFLAGS, - SPDRP_MFG, - SPDRP_FRIENDLYNAME, - SPDRP_LOCATION_INFORMATION, - SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, - SPDRP_CAPABILITIES, - SPDRP_UI_NUMBER, - SPDRP_UPPERFILTERS, - SPDRP_LOWERFILTERS, - SPDRP_BUSTYPEGUID, - SPDRP_LEGACYBUSTYPE, - SPDRP_BUSNUMBER, - SPDRP_ENUMERATOR_NAME, - SPDRP_SECURITY, - SPDRP_SECURITY_SDS, - SPDRP_DEVTYPE, - SPDRP_EXCLUSIVE, - SPDRP_CHARACTERISTICS, - SPDRP_ADDRESS, // = 28 - SPDRP_UI_NUMBER_DESC_FORMAT = 30, - SPDRP_MAXIMUM_PROPERTY = 31 -} - -enum : UINT { - SPDSL_IGNORE_DISK = 1, - SPDSL_DISALLOW_NEGATIVE_ADJUST -} - -enum : UINT { - SPFILENOTIFY_STARTQUEUE = 1, - SPFILENOTIFY_ENDQUEUE, - SPFILENOTIFY_STARTSUBQUEUE, - SPFILENOTIFY_ENDSUBQUEUE, - SPFILENOTIFY_STARTDELETE, - SPFILENOTIFY_ENDDELETE, - SPFILENOTIFY_DELETEERROR, - SPFILENOTIFY_STARTRENAME, - SPFILENOTIFY_ENDRENAME, - SPFILENOTIFY_RENAMEERROR, - SPFILENOTIFY_STARTCOPY, - SPFILENOTIFY_ENDCOPY, - SPFILENOTIFY_COPYERROR, - SPFILENOTIFY_NEEDMEDIA, - SPFILENOTIFY_QUEUESCAN, - SPFILENOTIFY_CABINETINFO, - SPFILENOTIFY_FILEINCABINET, - SPFILENOTIFY_NEEDNEWCABINET, - SPFILENOTIFY_FILEEXTRACTED, - SPFILENOTIFY_FILEOPDELAYED, - SPFILENOTIFY_STARTBACKUP, - SPFILENOTIFY_BACKUPERROR, - SPFILENOTIFY_ENDBACKUP, - SPFILENOTIFY_QUEUESCAN_EX, - SPFILENOTIFY_STARTREGISTRATION, // = 25 - SPFILENOTIFY_ENDREGISTRATION = 32, - SPFILENOTIFY_LANGMISMATCH = 0x00010000, - SPFILENOTIFY_TARGETEXISTS = 0x00020000, - SPFILENOTIFY_TARGETNEWER = 0x00040000 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : UINT { - SPFILENOTIFY_QUEUESCAN_SIGNERINFO = 0x00000040 - } -} - -enum : DWORD { - SPFILELOG_SYSTEMLOG = 0x00000001, - SPFILELOG_OEMFILE = 0x00000001, - SPFILELOG_FORCENEW = 0x00000002, - SPFILELOG_QUERYONLY = 0x00000004 -} - -enum : INT { - SPFILEQ_FILE_IN_USE = 0x00000001, - SPFILEQ_REBOOT_RECOMMENDED = 0x00000002, - SPFILEQ_REBOOT_IN_PROGRESS = 0x00000004 -} - -enum : DWORD { - SPINT_ACTIVE = 0x00000001, - SPINT_DEFAULT = 0x00000002, - SPINT_REMOVED = 0x00000004 -} - -deprecated enum : DWORD { - SPID_ACTIVE = SPINT_ACTIVE, - SPID_DEFAULT = SPINT_DEFAULT, - SPID_REMOVED = SPINT_REMOVED -} - -enum : UINT { - SPINST_LOGCONFIG = 0x00000001, - SPINST_INIFILES = 0x00000002, - SPINST_REGISTRY = 0x00000004, - SPINST_INI2REG = 0x00000008, - SPINST_FILES = 0x00000010, - SPINST_BITREG = 0x00000020, - SPINST_REGSVR = 0x00000040, - SPINST_UNREGSVR = 0x00000080, - SPINST_PROFILEITEMS = 0x00000100, - SPINST_SINGLESECTION = 0x00010000, - SPINST_LOGCONFIG_IS_FORCED = 0x00020000, - SPINST_LOGCONFIGS_ARE_OVERRIDES = 0x00040000 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : UINT { - SPINST_COPYINF = 0x00000200, - SPINST_ALL = 0x000003ff, - SPINST_REGISTERCALLBACKAWARE = 0x00080000 - } -} else { - enum : UINT { - SPINST_ALL = 0x000001ff - } -} - -enum : DWORD { - SPOST_NONE, - SPOST_PATH, - SPOST_URL, - SPOST_MAX // = 3 -} - -enum : DWORD { - SPPSR_SELECT_DEVICE_RESOURCES = 1, - SPPSR_ENUM_BASIC_DEVICE_PROPERTIES, - SPPSR_ENUM_ADV_DEVICE_PROPERTIES -} - -enum : DWORD { - SPQ_SCAN_FILE_PRESENCE = 0x00000001, - SPQ_SCAN_FILE_VALIDITY = 0x00000002, - SPQ_SCAN_USE_CALLBACK = 0x00000004, - SPQ_SCAN_USE_CALLBACKEX = 0x00000008, - SPQ_SCAN_INFORM_USER = 0x00000010, - SPQ_SCAN_PRUNE_COPY_QUEUE = 0x00000020 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - SPQ_SCAN_USE_CALLBACK_SIGNERINFO = 0x00000040, - SPQ_SCAN_PRUNE_DELREN = 0x00000080 - } -} - -enum : UINT_PTR { - SPQ_DELAYED_COPY = 0x00000001 -} - -enum : DWORD { - SPRDI_FIND_DUPS = 0x00000001, -} - -enum : DWORD { - SPSVCINST_TAGTOFRONT = 0x00000001, - SPSVCINST_ASSOCSERVICE = 0x00000002, - SPSVCINST_DELETEEVENTLOGENTRY = 0x00000004, - SPSVCINST_NOCLOBBER_DISPLAYNAME = 0x00000008, - SPSVCINST_NOCLOBBER_STARTTYPE = 0x00000010, - SPSVCINST_NOCLOBBER_ERRORCONTROL = 0x00000020, - SPSVCINST_NOCLOBBER_LOADORDERGROUP = 0x00000040, - SPSVCINST_NOCLOBBER_DEPENDENCIES = 0x00000080, - SPSVCINST_NOCLOBBER_DESCRIPTION = 0x00000100, - SPSVCINST_STOPSERVICE = 0x00000200 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - SPSVCINST_CLOBBER_SECURITY = 0x00000400 - } -} - -enum : DWORD { - SPWPT_SELECTDEVICE = 0x00000001 -} - -enum : DWORD { - SPWP_USE_DEVINFO_DATA = 0x00000001 -} - -enum : UINT { - SRCINFO_PATH = 1, - SRCINFO_TAGFILE, - SRCINFO_DESCRIPTION, - SRCINFO_FLAGS // = 4 -} - -enum : DWORD { - SRCLIST_TEMPORARY = 0x00000001, - SRCLIST_NOBROWSE = 0x00000002, - SRCLIST_SYSTEM = 0x00000010, - SRCLIST_USER = 0x00000020, - SRCLIST_SYSIFADMIN = 0x00000040, - SRCLIST_SUBDIRS = 0x00000100, - SRCLIST_APPEND = 0x00000200, - SRCLIST_NOSTRIPPLATFORM = 0x00000400 -} - -alias PVOID HINF; -alias PVOID HDSKSPC; -mixin DECLARE_HANDLE!("HDEVINFO"); -alias PVOID HSPFILEQ; -alias PVOID HSPFILELOG; - -enum SetupFileLogInfo { - SetupFileLogSourceFilename, - SetupFileLogChecksum, - SetupFileLogDiskTagfile, - SetupFileLogDiskDescription, - SetupFileLogOtherInfo, - SetupFileLogMax -} - -align(1): - -struct INFCONTEXT { - PVOID Inf; - PVOID CurrentInf; - UINT Section; - UINT Line; -} -alias INFCONTEXT* PINFCONTEXT; - -struct SP_INF_INFORMATION { - DWORD InfStyle; - DWORD InfCount; - BYTE[1] _VersionData; - BYTE* VersionData() { return _VersionData.ptr; } -} -alias SP_INF_INFORMATION* PSP_INF_INFORMATION; - -struct SP_ALTPLATFORM_INFO { - DWORD cbSize = SP_ALTPLATFORM_INFO.sizeof; - DWORD Platform; - DWORD MajorVersion; - DWORD MinorVersion; - WORD ProcessorArchitecture; - WORD Reserved; -} -alias SP_ALTPLATFORM_INFO* PSP_ALTPLATFORM_INFO; - -struct SP_ORIGINAL_FILE_INFO_A { - DWORD cbSize = SP_ORIGINAL_FILE_INFO_A.sizeof; - CHAR[MAX_PATH] OriginalInfName; - CHAR[MAX_PATH] OriginalCatalogName; -} -alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO_A; - -struct SP_ORIGINAL_FILE_INFO_W { - DWORD cbSize = SP_ORIGINAL_FILE_INFO_W.sizeof; - WCHAR[MAX_PATH] OriginalInfName; - WCHAR[MAX_PATH] OriginalCatalogName; -} -alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO_W; - -struct FILEPATHS_A { - PCSTR Target; - PCSTR Source; - UINT Win32Error; - DWORD Flags; -} -alias FILEPATHS_A* PFILEPATHS_A; - -struct FILEPATHS_W { - PCWSTR Target; - PCWSTR Source; - UINT Win32Error; - DWORD Flags; -} -alias FILEPATHS_W* PFILEPATHS_W; - -struct SOURCE_MEDIA_A { - PCSTR Reserved; - PCSTR Tagfile; - PCSTR Description; - PCSTR SourcePath; - PCSTR SourceFile; - DWORD Flags; -} -alias SOURCE_MEDIA_A* PSOURCE_MEDIA_A; - -struct SOURCE_MEDIA_W { - PCWSTR Reserved; - PCWSTR Tagfile; - PCWSTR Description; - PCWSTR SourcePath; - PCWSTR SourceFile; - DWORD Flags; -} -alias SOURCE_MEDIA_W* PSOURCE_MEDIA_W; - -struct CABINET_INFO_A { - PCSTR CabinetPath; - PCSTR CabinetFile; - PCSTR DiskName; - USHORT SetId; - USHORT CabinetNumber; -} -alias CABINET_INFO_A* PCABINET_INFO_A; - -struct CABINET_INFO_W { - PCWSTR CabinetPath; - PCWSTR CabinetFile; - PCWSTR DiskName; - USHORT SetId; - USHORT CabinetNumber; -} -alias CABINET_INFO_W* PCABINET_INFO_W; - -struct FILE_IN_CABINET_INFO_A { - PCSTR NameInCabinet; - DWORD FileSize; - DWORD Win32Error; - WORD DosDate; - WORD DosTime; - WORD DosAttribs; - CHAR[MAX_PATH] FullTargetName; -} -alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO_A; - -struct FILE_IN_CABINET_INFO_W { - PCWSTR NameInCabinet; - DWORD FileSize; - DWORD Win32Error; - WORD DosDate; - WORD DosTime; - WORD DosAttribs; - WCHAR[MAX_PATH] FullTargetName; -} -alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO_W; - -struct SP_FILE_COPY_PARAMS_A { - DWORD cbSize = SP_FILE_COPY_PARAMS_A.sizeof; - HSPFILEQ QueueHandle; - PCSTR SourceRootPath; - PCSTR SourcePath; - PCSTR SourceFilename; - PCSTR SourceDescription; - PCSTR SourceTagfile; - PCSTR TargetDirectory; - PCSTR TargetFilename; - DWORD CopyStyle; - HINF LayoutInf; - PCSTR SecurityDescriptor; -} -alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS_A; - -struct SP_FILE_COPY_PARAMS_W { - DWORD cbSize = SP_FILE_COPY_PARAMS_W.sizeof; - HSPFILEQ QueueHandle; - PCWSTR SourceRootPath; - PCWSTR SourcePath; - PCWSTR SourceFilename; - PCWSTR SourceDescription; - PCWSTR SourceTagfile; - PCWSTR TargetDirectory; - PCWSTR TargetFilename; - DWORD CopyStyle; - HINF LayoutInf; - PCWSTR SecurityDescriptor; -} -alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS_W; - -struct SP_DEVINFO_DATA { - DWORD cbSize = SP_DEVINFO_DATA.sizeof; - GUID ClassGuid; - DWORD DevInst; - ULONG_PTR Reserved; -} -alias SP_DEVINFO_DATA* PSP_DEVINFO_DATA; - -struct SP_DEVICE_INTERFACE_DATA { - DWORD cbSize = SP_DEVICE_INTERFACE_DATA.sizeof; - GUID InterfaceClassGuid; - DWORD Flags; - ULONG_PTR Reserved; -} -alias SP_DEVICE_INTERFACE_DATA* PSP_DEVICE_INTERFACE_DATA; -deprecated alias SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA; -deprecated alias SP_DEVICE_INTERFACE_DATA* PSP_INTERFACE_DEVICE_DATA; - -struct SP_DEVICE_INTERFACE_DETAIL_DATA_A { - DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_A.sizeof; - CHAR[1] _DevicePath; - CHAR* DevicePath() { return _DevicePath.ptr; } -} -alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA_A; - -struct SP_DEVICE_INTERFACE_DETAIL_DATA_W { - DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_W.sizeof; - WCHAR[1] _DevicePath; - WCHAR* DevicePath() { return _DevicePath.ptr; } -} -alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA_W; - -deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A; -deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA_A; -deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W; -deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA_W; - -struct SP_DEVINFO_LIST_DETAIL_DATA_A { - DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_A.sizeof; - GUID ClassGuid; - HANDLE RemoteMachineHandle; - CHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; -} -alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA_A; - -struct SP_DEVINFO_LIST_DETAIL_DATA_W { - DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_W.sizeof; - GUID ClassGuid; - HANDLE RemoteMachineHandle; - WCHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; -} -alias SP_DEVINFO_LIST_DETAIL_DATA_W* PSP_DEVINFO_LIST_DETAIL_DATA_W; - -extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_A; -extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_W; - -struct SP_DEVINSTALL_PARAMS_A { - DWORD cbSize = SP_DEVINSTALL_PARAMS_A.sizeof; - DWORD Flags; - DWORD FlagsEx; - HWND hwndParent; - PSP_FILE_CALLBACK_A InstallMsgHandler; - PVOID InstallMsgHandlerContext; - HSPFILEQ FileQueue; - ULONG_PTR ClassInstallReserved; - DWORD Reserved; - CHAR[MAX_PATH] DriverPath; -} -alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS_A; - -struct SP_DEVINSTALL_PARAMS_W { - DWORD cbSize = SP_DEVINSTALL_PARAMS_W.sizeof; - DWORD Flags; - DWORD FlagsEx; - HWND hwndParent; - PSP_FILE_CALLBACK_W InstallMsgHandler; - PVOID InstallMsgHandlerContext; - HSPFILEQ FileQueue; - ULONG_PTR ClassInstallReserved; - DWORD Reserved; - WCHAR[MAX_PATH] DriverPath; -} -alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS_W; - -struct SP_CLASSINSTALL_HEADER { - DWORD cbSize = SP_CLASSINSTALL_HEADER.sizeof; - DI_FUNCTION InstallFunction; -} -alias SP_CLASSINSTALL_HEADER* PSP_CLASSINSTALL_HEADER; - -struct SP_ENABLECLASS_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - GUID ClassGuid; - DWORD EnableMessage; -} -alias SP_ENABLECLASS_PARAMS* PSP_ENABLECLASS_PARAMS; - -struct SP_MOVEDEV_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - SP_DEVINFO_DATA SourceDeviceInfoData; -} -alias SP_MOVEDEV_PARAMS* PSP_MOVEDEV_PARAMS; - -struct SP_PROPCHANGE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD StateChange; - DWORD Scope; - DWORD HwProfile; -} -alias SP_PROPCHANGE_PARAMS* PSP_PROPCHANGE_PARAMS; - -struct SP_REMOVEDEVICE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Scope; - DWORD HwProfile; -} -alias SP_REMOVEDEVICE_PARAMS* PSP_REMOVEDEVICE_PARAMS; - -struct SP_UNREMOVEDEVICE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Scope; - DWORD HwProfile; -} -alias SP_UNREMOVEDEVICE_PARAMS* PSP_UNREMOVEDEVICE_PARAMS; - -struct SP_SELECTDEVICE_PARAMS_A { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - CHAR[MAX_TITLE_LEN] Title; - CHAR[MAX_INSTRUCTION_LEN] Instructions; - CHAR[MAX_LABEL_LEN] ListLabel; - CHAR[MAX_SUBTITLE_LEN] SubTitle; - BYTE[2] Reserved; -} -alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS_A; - -struct SP_SELECTDEVICE_PARAMS_W { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - WCHAR[MAX_TITLE_LEN] Title; - WCHAR[MAX_INSTRUCTION_LEN] Instructions; - WCHAR[MAX_LABEL_LEN] ListLabel; - WCHAR[MAX_SUBTITLE_LEN] SubTitle; -} -alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS_W; - -extern(Windows) alias BOOL function(PVOID, DWORD) PDETECT_PROGRESS_NOTIFY; - -struct SP_DETECTDEVICE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - PDETECT_PROGRESS_NOTIFY DetectProgressNotify; - PVOID ProgressNotifyParam; -} -alias SP_DETECTDEVICE_PARAMS* PSP_DETECTDEVICE_PARAMS; - -struct SP_INSTALLWIZARD_DATA { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Flags; - HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; - DWORD NumDynamicPages; - DWORD DynamicPageFlags; - DWORD PrivateFlags; - LPARAM PrivateData; - HWND hwndWizardDlg; -} -alias SP_INSTALLWIZARD_DATA* PSP_INSTALLWIZARD_DATA; - -struct SP_NEWDEVICEWIZARD_DATA { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Flags; - HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; - DWORD NumDynamicPages; - HWND hwndWizardDlg; -} -alias SP_NEWDEVICEWIZARD_DATA* PSP_NEWDEVICEWIZARD_DATA; -alias SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA; -alias SP_NEWDEVICEWIZARD_DATA* PSP_ADDPROPERTYPAGE_DATA; - -struct SP_TROUBLESHOOTER_PARAMS_A { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - CHAR[MAX_PATH] ChmFile; - CHAR[MAX_PATH] HtmlTroubleShooter; -} -alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS_A; - -struct SP_TROUBLESHOOTER_PARAMS_W { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - WCHAR[MAX_PATH] ChmFile; - WCHAR[MAX_PATH] HtmlTroubleShooter; -} -alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS_W; - -struct SP_POWERMESSAGEWAKE_PARAMS_A { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - CHAR[LINE_LEN*2] PowerMessageWake; -} -alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS_A; - -struct SP_POWERMESSAGEWAKE_PARAMS_W { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - WCHAR[LINE_LEN*2] PowerMessageWake; -} -alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS_W; - -struct SP_DRVINFO_DATA_V2_A { - DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - CHAR[LINE_LEN] Description; - CHAR[LINE_LEN] MfgName; - CHAR[LINE_LEN] ProviderName; - FILETIME DriverDate; - DWORDLONG DriverVersion; -} -alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_V2_A; - -struct SP_DRVINFO_DATA_V2_W { - DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - WCHAR[LINE_LEN] Description; - WCHAR[LINE_LEN] MfgName; - WCHAR[LINE_LEN] ProviderName; - FILETIME DriverDate; - DWORDLONG DriverVersion; -} -alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_V2_W; - -struct SP_DRVINFO_DATA_V1_A { - DWORD cbSize = SP_DRVINFO_DATA_V1_A.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - CHAR[LINE_LEN] Description; - CHAR[LINE_LEN] MfgName; - CHAR[LINE_LEN] ProviderName; -} -alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_V1_A; - -struct SP_DRVINFO_DATA_V1_W { - DWORD cbSize = SP_DRVINFO_DATA_V1_W.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - WCHAR[LINE_LEN] Description; - WCHAR[LINE_LEN] MfgName; - WCHAR[LINE_LEN] ProviderName; -} -alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_V1_W; - -version (Unicode) { - alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1; - alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2; -} else { - alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1; - alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2; -} -alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA_V1; -alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA_V2; - -static if(USE_SP_DRVINFO_DATA_V1) { - alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA; - alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA; -} else { - alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA; - alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA; -} - -extern(Windows) alias DWORD function(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINFO_DATA, PVOID) PSP_DETSIG_CMPPROC; - -struct SP_DRVINFO_DETAIL_DATA_A { - DWORD cbSize = SP_DRVINFO_DETAIL_DATA_A.sizeof; - FILETIME InfDate; - DWORD CompatIDsOffset; - DWORD CompatIDsLength; - ULONG_PTR Reserved; - CHAR[LINE_LEN] SectionName; - CHAR[MAX_PATH] InfFileName; - CHAR[LINE_LEN] DrvDescription; - CHAR[1] _HardwareID; - CHAR* HardwareID() { return _HardwareID.ptr; } -} -alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA_A; - -struct SP_DRVINFO_DETAIL_DATA_W { - DWORD cbSize = SP_DRVINFO_DETAIL_DATA_W.sizeof; - FILETIME InfDate; - DWORD CompatIDsOffset; - DWORD CompatIDsLength; - ULONG_PTR Reserved; - WCHAR[LINE_LEN] SectionName; - WCHAR[MAX_PATH] InfFileName; - WCHAR[LINE_LEN] DrvDescription; - WCHAR[1] _HardwareID; - WCHAR* HardwareID() { return _HardwareID.ptr; } -} -alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA_W; - -struct SP_DRVINSTALL_PARAMS { - DWORD cbSize = SP_DRVINSTALL_PARAMS.sizeof; - DWORD Rank; - DWORD Flags; - DWORD_PTR PrivateData; - DWORD Reserved; -} -alias SP_DRVINSTALL_PARAMS* PSP_DRVINSTALL_PARAMS; - -struct COINSTALLER_CONTEXT_DATA { - BOOL PostProcessing; - DWORD InstallResult; - PVOID PrivateData; -} -alias COINSTALLER_CONTEXT_DATA* PCOINSTALLER_CONTEXT_DATA; - -struct SP_CLASSIMAGELIST_DATA { - DWORD cbSize = SP_CLASSIMAGELIST_DATA.sizeof; - HIMAGELIST ImageList; - ULONG_PTR Reserved; -} -alias SP_CLASSIMAGELIST_DATA* PSP_CLASSIMAGELIST_DATA; - -struct SP_PROPSHEETPAGE_REQUEST { - DWORD cbSize = SP_PROPSHEETPAGE_REQUEST.sizeof; - DWORD PageRequested; - HDEVINFO DeviceInfoSet; - PSP_DEVINFO_DATA DeviceInfoData; -} -alias SP_PROPSHEETPAGE_REQUEST* PSP_PROPSHEETPAGE_REQUEST; - -struct SP_BACKUP_QUEUE_PARAMS_A { - DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_A.sizeof; - CHAR[MAX_PATH] FullInfPath; - INT FilenameOffset; -} -alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS_A; - -struct SP_BACKUP_QUEUE_PARAMS_W { - DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_W.sizeof; - WCHAR[MAX_PATH] FullInfPath; - INT FilenameOffset; -} -alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS_W; - -version (Unicode) { - alias SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO; - alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO; - alias FILEPATHS_W FILEPATHS; - alias FILEPATHS_W* PFILEPATHS; - alias SOURCE_MEDIA_W SOURCE_MEDIA; - alias SOURCE_MEDIA_W* PSOURCE_MEDIA; - alias CABINET_INFO_W CABINET_INFO; - alias CABINET_INFO_W* PCABINET_INFO; - alias FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO; - alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO; - alias SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS; - alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA; - deprecated { - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA; - } - alias SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINFO_LIST_DETAIL_DATA_W *PSP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS; - alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS; - alias SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS; - alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS; - alias SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA; - alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA; - alias SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS; - alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS; -} else { - alias SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO; - alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO; - alias FILEPATHS_A FILEPATHS; - alias FILEPATHS_A* PFILEPATHS; - alias SOURCE_MEDIA_A SOURCE_MEDIA; - alias SOURCE_MEDIA_A* PSOURCE_MEDIA; - alias CABINET_INFO_A CABINET_INFO; - alias CABINET_INFO_A* PCABINET_INFO; - alias FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO; - alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO; - alias SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS; - alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA; - deprecated { - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA; - } - alias SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS; - alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS; - alias SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS; - alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS; - alias SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA; - alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA; - alias SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS; - alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS; -} - -extern (Windows) { - BOOL SetupAddInstallSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); - BOOL SetupAddInstallSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); - BOOL SetupAddSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); - BOOL SetupAddSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); - BOOL SetupAddToDiskSpaceListA(HDSKSPC, PCSTR, LONGLONG, UINT, PVOID, UINT); - BOOL SetupAddToDiskSpaceListW(HDSKSPC, PCWSTR, LONGLONG, UINT, PVOID, UINT); - BOOL SetupAddToSourceListA(DWORD, PCSTR); - BOOL SetupAddToSourceListW(DWORD, PCWSTR); - BOOL SetupQuerySourceListA(DWORD, PCSTR**List, PUINT); - BOOL SetupQuerySourceListW(DWORD, PCWSTR**List, PUINT); - BOOL SetupFreeSourceListA(PCSTR**List, UINT); - BOOL SetupFreeSourceListW(PCWSTR**List, UINT); - BOOL SetupAdjustDiskSpaceListA(HDSKSPC, LPCSTR, LONGLONG, PVOID, UINT); - BOOL SetupAdjustDiskSpaceListW(HDSKSPC, LPCWSTR, LONGLONG, PVOID, UINT); - UINT SetupBackupErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); - UINT SetupBackupErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); - BOOL SetupCancelTemporary(); - BOOL SetupCloseFileQueue(HSPFILEQ); - VOID SetupCloseInfFile(HINF); - VOID SetupCloseLog(); - BOOL SetupCommitFileQueueA(HWND, HSPFILEQ, PSP_FILE_CALLBACK_A, PVOID); - BOOL SetupCommitFileQueueW(HWND, HSPFILEQ, PSP_FILE_CALLBACK_W, PVOID); - UINT SetupCopyErrorA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, UINT, DWORD, PSTR, DWORD, PDWORD); - UINT SetupCopyErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD, PWSTR, DWORD, PDWORD); - BOOL SetupCopyOEMInfA(PCSTR, PCSTR, DWORD, DWORD, PSTR, DWORD, PDWORD, PSTR*); - BOOL SetupCopyOEMInfW(PCWSTR, PCWSTR, DWORD, DWORD, PWSTR, DWORD, PDWORD, PWSTR*); - HDSKSPC SetupCreateDiskSpaceListA(PVOID, DWORD, UINT); - HDSKSPC SetupCreateDiskSpaceListW(PVOID, DWORD, UINT); - DWORD SetupDecompressOrCopyFileA(PCSTR, PCSTR, PUINT); - DWORD SetupDecompressOrCopyFileW(PCWSTR, PCWSTR, PUINT); - UINT SetupDefaultQueueCallbackA(PVOID, UINT, UINT_PTR, UINT_PTR); - UINT SetupDefaultQueueCallbackW(PVOID, UINT, UINT_PTR, UINT_PTR); - UINT SetupDeleteErrorA(HWND, PCSTR, PCSTR, UINT, DWORD); - UINT SetupDeleteErrorW(HWND, PCWSTR, PCWSTR, UINT, DWORD); - BOOL SetupDestroyDiskSpaceList(HDSKSPC); - BOOL SetupDiAskForOEMDisk(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiBuildClassInfoList(DWORD, LPGUID, DWORD, PDWORD); - BOOL SetupDiBuildClassInfoListExA(DWORD, LPGUID, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiBuildClassInfoListExW(DWORD, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiBuildDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); - BOOL SetupDiCallClassInstaller(DI_FUNCTION, HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiCancelDriverInfoSearch(HDEVINFO); - BOOL SetupDiChangeState(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiClassGuidsFromNameA(PCSTR, LPGUID, DWORD, PDWORD); - BOOL SetupDiClassGuidsFromNameW(PCWSTR, LPGUID, DWORD, PDWORD); - BOOL SetupDiClassGuidsFromNameExA(PCSTR, LPGUID, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiClassGuidsFromNameExW(PCWSTR, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiClassNameFromGuidA(const(GUID)*, PSTR, DWORD, PDWORD); - BOOL SetupDiClassNameFromGuidW(const(GUID)*, PWSTR, DWORD, PDWORD); - BOOL SetupDiClassNameFromGuidExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiClassNameFromGuidExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiCreateDeviceInfoA(HDEVINFO, PCSTR, const(GUID)*, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); - BOOL SetupDiCreateDeviceInfoW(HDEVINFO, PCWSTR, const(GUID)*, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); - HDEVINFO SetupDiCreateDeviceInfoList(const(GUID)*, HWND); - HDEVINFO SetupDiCreateDeviceInfoListExA(const(GUID)*, HWND, PCSTR, PVOID); - HDEVINFO SetupDiCreateDeviceInfoListExW(const(GUID)*, HWND, PCWSTR, PVOID); - BOOL SetupDiCreateDeviceInterfaceA(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiCreateDeviceInterfaceW(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); - HKEY SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCSTR); - HKEY SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCWSTR); - HKEY SetupDiCreateDevRegKeyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCSTR); - HKEY SetupDiCreateDevRegKeyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCWSTR); - BOOL SetupDiDeleteDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiDeleteDeviceInterfaceData(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD); - BOOL SetupDiDeleteDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD); - BOOL SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA); - BOOL SetupDiDestroyDeviceInfoList(HDEVINFO); - BOOL SetupDiDestroyDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); - INT SetupDiDrawMiniIcon(HDC, RECT, INT, DWORD); - BOOL SetupDiEnumDeviceInfo(HDEVINFO, DWORD, PSP_DEVINFO_DATA); - BOOL SetupDiEnumDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, DWORD, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiEnumDriverInfoA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_A); - BOOL SetupDiEnumDriverInfoW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_W); - BOOL SetupDiGetActualSectionToInstallA(HINF, PCSTR, PSTR, DWORD, PDWORD, PSTR*); - BOOL SetupDiGetActualSectionToInstallW(HINF, PCWSTR, PWSTR, DWORD, PDWORD, PWSTR*); - BOOL SetupDiGetClassBitmapIndex(const(GUID)*, PINT); - BOOL SetupDiGetClassDescriptionA(const(GUID)*, PSTR, DWORD, PDWORD); - BOOL SetupDiGetClassDescriptionW(const(GUID)*, PWSTR, DWORD, PDWORD); - BOOL SetupDiGetClassDescriptionExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiGetClassDescriptionExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiGetClassDevPropertySheetsA(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERA, DWORD, PDWORD, DWORD); - BOOL SetupDiGetClassDevPropertySheetsW(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERW, DWORD, PDWORD, DWORD); - HDEVINFO SetupDiGetClassDevsA(const(GUID)*, PCSTR, HWND, DWORD); - HDEVINFO SetupDiGetClassDevsW(const(GUID)*, PCWSTR, HWND, DWORD); - HDEVINFO SetupDiGetClassDevsExA(const(GUID)*, PCSTR, HWND, DWORD, HDEVINFO, PCSTR, PVOID); - HDEVINFO SetupDiGetClassDevsExW(const(GUID)*, PCWSTR, HWND, DWORD, HDEVINFO, PCWSTR, PVOID); - BOOL SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA, const(GUID)*, PINT); - BOOL SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA); - BOOL SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA, PCSTR, PVOID); - BOOL SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA, PCWSTR, PVOID); - BOOL SetupDiGetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); - BOOL SetupDiGetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); - BOOL SetupDiGetClassRegistryPropertyA(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiGetClassRegistryPropertyW(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiGetDeviceInfoListClass(HDEVINFO, LPGUID); - BOOL SetupDiGetDeviceInfoListDetailA(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_A); - BOOL SetupDiGetDeviceInfoListDetailW(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_W); - BOOL SetupDiGetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); - BOOL SetupDiGetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); - BOOL SetupDiGetDeviceInstanceIdA(HDEVINFO, PSP_DEVINFO_DATA, PSTR, DWORD, PDWORD); - BOOL SetupDiGetDeviceInstanceIdW(HDEVINFO, PSP_DEVINFO_DATA, PWSTR, DWORD, PDWORD); - BOOL SetupDiGetDeviceInterfaceAlias(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, const(GUID)*, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiGetDeviceInterfaceDetailA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DWORD, PDWORD, PSP_DEVINFO_DATA); - BOOL SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DWORD, PDWORD, PSP_DEVINFO_DATA); - BOOL SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); - BOOL SetupDiGetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); - BOOL SetupDiGetDriverInfoDetailA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINFO_DETAIL_DATA_A, DWORD, PDWORD); - BOOL SetupDiGetDriverInfoDetailW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINFO_DETAIL_DATA_W, DWORD, PDWORD); - BOOL SetupDiGetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); - BOOL SetupDiGetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); - BOOL SetupDiGetHwProfileFriendlyNameA(DWORD, PSTR, DWORD, PDWORD); - BOOL SetupDiGetHwProfileFriendlyNameExA(DWORD, PSTR, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiGetHwProfileFriendlyNameExW(DWORD, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiGetHwProfileFriendlyNameW(DWORD, PWSTR, DWORD, PDWORD); - BOOL SetupDiGetHwProfileList(PDWORD, DWORD, PDWORD, PDWORD); - BOOL SetupDiGetHwProfileListExA(PDWORD, DWORD, PDWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiGetHwProfileListExW(PDWORD, DWORD, PDWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiGetINFClassA(PCSTR, LPGUID, PSTR, DWORD, PDWORD); - BOOL SetupDiGetINFClassW(PCWSTR, LPGUID, PWSTR, DWORD, PDWORD); - BOOL SetupDiGetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiGetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); - BOOL SetupDiGetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); - HPROPSHEETPAGE SetupDiGetWizardage(HDEVINFO, PSP_DEVINFO_DATA, PSP_INSTALLWIZARD_DATA, DWORD, DWORD); - BOOL SetupDiInstallClassA(HWND, PCSTR, DWORD, HSPFILEQ); - BOOL SetupDiInstallClassW(HWND, PCWSTR, DWORD, HSPFILEQ); - BOOL SetupDiInstallClassExA(HWND, PCSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); - BOOL SetupDiInstallClassExW(HWND, PCWSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); - BOOL SetupDiInstallDevice(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiInstallDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiInstallDriverFiles(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiLoadClassIcon(const(GUID)*, HICON*, PINT); - BOOL SetupDiMoveDuplicateDevice(HDEVINFO, PSP_DEVINFO_DATA); - HKEY SetupDiOpenClassRegKey(const(GUID)*, REGSAM); - HKEY SetupDiOpenClassRegKeyExA(const(GUID)*, REGSAM, DWORD, PCSTR, PVOID); - HKEY SetupDiOpenClassRegKeyExW(const(GUID)*, REGSAM, DWORD, PCWSTR, PVOID); - BOOL SetupDiOpenDeviceInfoA(HDEVINFO, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); - BOOL SetupDiOpenDeviceInfoW(HDEVINFO, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); - BOOL SetupDiOpenDeviceInterfaceA(HDEVINFO, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiOpenDeviceInterfaceW(HDEVINFO, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); - HKEY SetupDiOpenDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM); - HKEY SetupDiOpenDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM); - BOOL SetupDiRegisterCoDeviceInstallers(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiRegisterDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PSP_DETSIG_CMPPROC, PVOID, PSP_DEVINFO_DATA); - BOOL SetupDiRemoveDevice(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiRemoveDeviceInterface(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiSelectBestCompatDrv(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiSelectDevice(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiSelectOEMDrv(HWND, HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiSetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); - BOOL SetupDiSetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); - BOOL SetupDiSetClassRegistryPropertyA(LPGUID, DWORD, const(BYTE)*, DWORD, PCSTR, PVOID); - BOOL SetupDiSetClassRegistryPropertyW(LPGUID, DWORD, const(BYTE)*, DWORD, PCWSTR, PVOID); - BOOL SetupDiSetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); - BOOL SetupDiSetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); - BOOL SetupDiSetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); - BOOL SetupDiSetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); - BOOL SetupDiSetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); - BOOL SetupDiSetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); - BOOL SetupDiSetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiSetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); - BOOL SetupDiSetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); - BOOL SetupDiUnremoveDevice(HDEVINFO, PSP_DEVINFO_DATA); - HDSKSPC SetupDuplicateDiskSpaceListA(HDSKSPC, PVOID, DWORD, UINT); - HDSKSPC SetupDuplicateDiskSpaceListW(HDSKSPC, PVOID, DWORD, UINT); - BOOL SetupFindFirstLineA(HINF, PCSTR, PCSTR, PINFCONTEXT); - BOOL SetupFindFirstLineW(HINF, PCWSTR, PCWSTR, PINFCONTEXT); - BOOL SetupFindNextLine(PINFCONTEXT, PINFCONTEXT); - BOOL SetupFindNextMatchLineA(PINFCONTEXT, PCSTR, PINFCONTEXT); - BOOL SetupFindNextMatchLineW(PINFCONTEXT, PCWSTR, PINFCONTEXT); - BOOL SetupFreeA(PCSTR**, UINT); - BOOL SetupFreeW(PCWSTR**, UINT); - BOOL SetupGetBackupInformationA(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_A); - BOOL SetupGetBackupInformationW(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_W); - BOOL SetupGetBinaryField(PINFCONTEXT, DWORD, PBYTE, DWORD, LPDWORD); - DWORD SetupGetFieldCount(PINFCONTEXT); - DWORD SetupGetFileCompressionInfoA(PCSTR, PSTR*, PDWORD, PDWORD, PUINT); - DWORD SetupGetFileCompressionInfoW(PCWSTR, PWSTR*, PDWORD, PDWORD, PUINT); - BOOL SetupGetInfFileListA(PCSTR, DWORD, PSTR, DWORD, PDWORD); - BOOL SetupGetInfFileListW(PCWSTR, DWORD, PWSTR, DWORD, PDWORD); - BOOL SetupGetInfInformationA(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); - BOOL SetupGetInfInformationW(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); - BOOL SetupGetIntField(PINFCONTEXT, DWORD, PINT); - BOOL SetupGetLineByIndexA(HINF, PCSTR, DWORD, PINFCONTEXT); - BOOL SetupGetLineByIndexW(HINF, PCWSTR, DWORD, PINFCONTEXT); - LONG SetupGetLineCountA(HINF, PCSTR); - LONG SetupGetLineCountW(HINF, PCWSTR); - BOOL SetupGetLineTextA(PINFCONTEXT, HINF, PCSTR, PCSTR, PSTR, DWORD, PDWORD); - BOOL SetupGetLineTextW(PINFCONTEXT, HINF, PCWSTR, PCWSTR, PWSTR, DWORD, PDWORD); - BOOL SetupGetMultiSzFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, LPDWORD); - BOOL SetupGetMultiSzFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, LPDWORD); - BOOL SetupGetSourceFileLocationA(HINF, PINFCONTEXT, PCSTR, PUINT, PSTR, DWORD, PDWORD); - BOOL SetupGetSourceFileLocationW(HINF, PINFCONTEXT, PCWSTR, PUINT, PWSTR, DWORD, PDWORD); - BOOL SetupGetSourceFileSizeA(HINF, PINFCONTEXT, PCSTR, PCSTR, PDWORD, UINT); - BOOL SetupGetSourceFileSizeW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PDWORD, UINT); - BOOL SetupGetSourceInfoA(HINF, UINT, UINT, PSTR, DWORD, PDWORD); - BOOL SetupGetSourceInfoW(HINF, UINT, UINT, PWSTR, DWORD, PDWORD); - BOOL SetupGetStringFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, PDWORD); - BOOL SetupGetStringFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, PDWORD); - BOOL SetupGetTargetPathA(HINF, PINFCONTEXT, PCSTR, PSTR, DWORD, PDWORD); - BOOL SetupGetTargetPathW(HINF, PINFCONTEXT, PCWSTR, PWSTR, DWORD, PDWORD); - PVOID SetupInitDefaultQueueCallback(HWND); - PVOID SetupInitDefaultQueueCallbackEx(HWND, HWND, UINT, DWORD, PVOID); - HSPFILELOG SetupInitializeFileLogA(PCSTR, DWORD); - HSPFILELOG SetupInitializeFileLogW(PCWSTR, DWORD); - BOOL SetupInstallFileA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); - BOOL SetupInstallFileW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); - BOOL SetupInstallFileExA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID, PBOOL); - BOOL SetupInstallFileExW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID, PBOOL); - BOOL SetupInstallFilesFromInfSectionA(HINF, HINF, HSPFILEQ, PCSTR, PCSTR, UINT); - BOOL SetupInstallFilesFromInfSectionW(HINF, HINF, HSPFILEQ, PCWSTR, PCWSTR, UINT); - BOOL SetupInstallFromInfSectionA(HWND, HINF, PCSTR, UINT, HKEY, PCSTR, UINT, PSP_FILE_CALLBACK_A, PVOID, HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupInstallFromInfSectionW(HWND, HINF, PCWSTR, UINT, HKEY, PCWSTR, UINT, PSP_FILE_CALLBACK_W, PVOID, HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupInstallServicesFromInfSectionA(HINF, PCSTR, DWORD); - BOOL SetupInstallServicesFromInfSectionW(HINF, PCWSTR, DWORD); - BOOL SetupInstallServicesFromInfSectionExA(HINF, PCSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); - BOOL SetupInstallServicesFromInfSectionExW(HINF, PCWSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); - BOOL SetupIterateCabinetA(PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); - BOOL SetupIterateCabinetW(PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); - BOOL SetupLogErrorA(LPCSTR, LogSeverity); - BOOL SetupLogErrorW(LPCWSTR, LogSeverity); - BOOL SetupLogFileA(HSPFILELOG, PCSTR, PCSTR, PCSTR, DWORD, PCSTR, PCSTR, PCSTR, DWORD); - BOOL SetupLogFileW(HSPFILELOG, PCWSTR, PCWSTR, PCWSTR, DWORD, PCWSTR, PCWSTR, PCWSTR, DWORD); - BOOL SetupOpenAppendInfFileA(PCSTR, HINF, PUINT); - BOOL SetupOpenAppendInfFileW(PCWSTR, HINF, PUINT); - HSPFILEQ SetupOpenFileQueue(); - HINF SetupOpenInfFileA(PCSTR, PCSTR, DWORD, PUINT); - HINF SetupOpenInfFileW(PCWSTR, PCWSTR, DWORD, PUINT); - BOOL SetupOpenLog(BOOL); - HINF SetupOpenMasterInf(); - UINT SetupPromptForDiskA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD, PSTR, DWORD, PDWORD); - UINT SetupPromptForDiskW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD, PWSTR, DWORD, PDWORD); - INT SetupPromptReboot(HSPFILEQ, HWND, BOOL); - BOOL SetupQueryA(DWORD, PCSTR**, PUINT); - BOOL SetupQueryW(DWORD, PCWSTR**, PUINT); - BOOL SetupQueryDrivesInDiskSpaceListA(HDSKSPC, PSTR, DWORD, PDWORD); - BOOL SetupQueryDrivesInDiskSpaceListW(HDSKSPC, PWSTR, DWORD, PDWORD); - BOOL SetupQueryFileLogA(HSPFILELOG, PCSTR, PCSTR, SetupFileLogInfo, PSTR, DWORD, PDWORD); - BOOL SetupQueryFileLogW(HSPFILELOG, PCWSTR, PCWSTR, SetupFileLogInfo, PWSTR, DWORD, PDWORD); - BOOL SetupQueryInfFileInformationA(PSP_INF_INFORMATION, UINT, PSTR, DWORD, PDWORD); - BOOL SetupQueryInfFileInformationW(PSP_INF_INFORMATION, UINT, PWSTR, DWORD, PDWORD); - BOOL SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_A); - BOOL SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_W); - BOOL SetupQueryInfVersionInformationA(PSP_INF_INFORMATION, UINT, PSTR, PSTR, DWORD, PDWORD); - BOOL SetupQueryInfVersionInformationW(PSP_INF_INFORMATION, UINT, PCWSTR, PWSTR, DWORD, PDWORD); - BOOL SetupQuerySpaceRequiredOnDriveA(HDSKSPC, PCSTR, LONGLONG*, PVOID, UINT); - BOOL SetupQuerySpaceRequiredOnDriveW(HDSKSPC, PCWSTR, LONGLONG*, PVOID, UINT); - BOOL SetupQueueCopyA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD); - BOOL SetupQueueCopyW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD); - BOOL SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A); - BOOL SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W); - BOOL SetupQueueCopySectionA(HSPFILEQ, PCSTR, HINF, HINF, PCSTR, DWORD); - BOOL SetupQueueCopySectionW(HSPFILEQ, PCWSTR, HINF, HINF, PCWSTR, DWORD); - BOOL SetupQueueDefaultCopyA(HSPFILEQ, HINF, PCSTR, PCSTR, PCSTR, DWORD); - BOOL SetupQueueDefaultCopyW(HSPFILEQ, HINF, PCWSTR, PCWSTR, PCWSTR, DWORD); - BOOL SetupQueueDeleteA(HSPFILEQ, PCSTR, PCSTR); - BOOL SetupQueueDeleteW(HSPFILEQ, PCWSTR, PCWSTR); - BOOL SetupQueueDeleteSectionA(HSPFILEQ, HINF, HINF, PCSTR); - BOOL SetupQueueDeleteSectionW(HSPFILEQ, HINF, HINF, PCWSTR); - BOOL SetupQueueRenameA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR); - BOOL SetupQueueRenameW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR); - BOOL SetupQueueRenameSectionA(HSPFILEQ, HINF, HINF, PCSTR); - BOOL SetupQueueRenameSectionW(HSPFILEQ, HINF, HINF, PCWSTR); - BOOL SetupRemoveFileLogEntryA(HSPFILELOG, PCSTR, PCSTR); - BOOL SetupRemoveFileLogEntryW(HSPFILELOG, PCWSTR, PCWSTR); - BOOL SetupRemoveFromDiskSpaceListA(HDSKSPC, PCSTR, UINT, PVOID, UINT); - BOOL SetupRemoveFromDiskSpaceListW(HDSKSPC, PCWSTR, UINT, PVOID, UINT); - BOOL SetupRemoveFromSourceListA(DWORD, PCSTR); - BOOL SetupRemoveFromSourceListW(DWORD, PCWSTR); - BOOL SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); - BOOL SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); - BOOL SetupRemoveSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); - BOOL SetupRemoveSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); - UINT SetupRenameErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); - UINT SetupRenameErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); - BOOL SetupScanFileQueueA(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_A, PVOID, PDWORD); - BOOL SetupScanFileQueueW(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_W, PVOID, PDWORD); - BOOL SetupSetDirectoryIdA(HINF, DWORD, PCSTR); - BOOL SetupSetDirectoryIdW(HINF, DWORD, PCWSTR); - BOOL SetupSetDirectoryIdExA(HINF, DWORD, PCSTR, DWORD, DWORD, PVOID); - BOOL SetupSetDirectoryIdExW(HINF, DWORD, PCWSTR, DWORD, DWORD, PVOID); - BOOL SetupSetFileQueueAlternatePlatformA(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCSTR); - BOOL SetupSetFileQueueAlternatePlatformW(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCWSTR); - BOOL SetupSetPlatformPathOverrideA(PCSTR); - BOOL SetupSetPlatformPathOverrideW(PCWSTR); - BOOL SetupSetSourceListA(DWORD, PCSTR*, UINT); - BOOL SetupSetSourceListW(DWORD, PCWSTR*, UINT); - VOID SetupTermDefaultQueueCallback(PVOID); - BOOL SetupTerminateFileLog(HSPFILELOG); -} - -deprecated { - alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDeviceW; - alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKeyW; - alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDeviceW; - alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetailW; - alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDeviceA; - alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKeyA; - alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDeviceA; - alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetailA; -} - -version (Unicode) { - alias PSP_FILE_CALLBACK_W PSP_FILE_CALLBACK; - alias SetupAddInstallSectionToDiskSpaceListW SetupAddInstallSectionToDiskSpaceList; - alias SetupAddSectionToDiskSpaceListW SetupAddSectionToDiskSpaceList; - alias SetupAddToDiskSpaceListW SetupAddToDiskSpaceList; - alias SetupAddToSourceListW SetupAddToSourceList; - alias SetupAdjustDiskSpaceListW SetupAdjustDiskSpaceList; - alias SetupBackupErrorW SetupBackupError; - alias SetupCommitFileQueueW SetupCommitFileQueue; - alias SetupCopyErrorW SetupCopyError; - alias SetupCopyOEMInfW SetupCopyOEMInf; - alias SetupCreateDiskSpaceListW SetupCreateDiskSpaceList; - alias SetupDecompressOrCopyFileW SetupDecompressOrCopyFile; - alias SetupDefaultQueueCallbackW SetupDefaultQueueCallback; - alias SetupDeleteErrorW SetupDeleteError; - alias SetupDiBuildClassInfoListExW SetupDiBuildClassInfoListEx; - alias SetupDiClassGuidsFromNameExW SetupDiClassGuidsFromNameEx; - alias SetupDiClassGuidsFromNameW SetupDiClassGuidsFromName; - alias SetupDiClassNameFromGuidExW SetupDiClassNameFromGuidEx; - alias SetupDiClassNameFromGuidW SetupDiClassNameFromGuid; - alias SetupDiCreateDeviceInfoListExW SetupDiCreateDeviceInfoListEx; - alias SetupDiCreateDeviceInfoW SetupDiCreateDeviceInfo; - alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateDeviceInterfaceRegKey; - deprecated alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKey; - alias SetupDiCreateDeviceInterfaceW SetupDiCreateDeviceInterface; - deprecated alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDevice; - alias SetupDiCreateDevRegKeyW SetupDiCreateDevRegKey; - alias SetupDiEnumDriverInfoW SetupDiEnumDriverInfo; - alias SetupDiGetActualSectionToInstallW SetupDiGetActualSectionToInstall; - alias SetupDiGetClassDescriptionExW SetupDiGetClassDescriptionEx; - alias SetupDiGetClassDescriptionW SetupDiGetClassDescription; - alias SetupDiGetClassDevPropertySheetsW SetupDiGetClassDevPropertySheets; - alias SetupDiGetClassDevsExW SetupDiGetClassDevsEx; - alias SetupDiGetClassDevsW SetupDiGetClassDevs; - alias SetupDiGetClassImageListExW SetupDiGetClassImageListEx; - alias SetupDiGetClassInstallParamsW SetupDiGetClassInstallParams; - alias SetupDiGetClassRegistryPropertyW SetupDiGetClassRegistryProperty; - alias SetupDiGetDeviceInfoListDetailW SetupDiGetDeviceInfoListDetail; - alias SetupDiGetDeviceInstallParamsW SetupDiGetDeviceInstallParams; - alias SetupDiGetDeviceInstanceIdW SetupDiGetDeviceInstanceId; - alias SetupDiGetDeviceInterfaceDetailW SetupDiGetDeviceInterfaceDetail; - deprecated alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetail; - alias SetupDiGetDeviceRegistryPropertyW SetupDiGetDeviceRegistryProperty; - alias SetupDiGetDriverInfoDetailW SetupDiGetDriverInfoDetail; - alias SetupDiGetDriverInstallParamsW SetupDiGetDriverInstallParams; - alias SetupDiGetHwProfileFriendlyNameExW SetupDiGetHwProfileFriendlyNameEx; - alias SetupDiGetHwProfileFriendlyNameW SetupDiGetHwProfileFriendlyName; - alias SetupDiGetHwProfileListExW SetupDiGetHwProfileListEx; - alias SetupDiGetINFClassW SetupDiGetINFClass; - alias SetupDiGetSelectedDriverW SetupDiGetSelectedDriver; - alias SetupDiInstallClassExW SetupDiInstallClassEx; - alias SetupDiInstallClassW SetupDiInstallClass; - alias SetupDiOpenClassRegKeyExW SetupDiOpenClassRegKeyEx; - alias SetupDiOpenDeviceInfoW SetupDiOpenDeviceInfo; - alias SetupDiOpenDeviceInterfaceW SetupDiOpenDeviceInterface; - deprecated alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDevice; - alias SetupDiSetClassInstallParamsW SetupDiSetClassInstallParams; - alias SetupDiSetClassRegistryPropertyW SetupDiSetClassRegistryProperty; - alias SetupDiSetDeviceInstallParamsW SetupDiSetDeviceInstallParams; - alias SetupDiSetDeviceRegistryPropertyW SetupDiSetDeviceRegistryProperty; - alias SetupDiSetDriverInstallParamsW SetupDiSetDriverInstallParams; - alias SetupDiSetSelectedDriverW SetupDiSetSelectedDriver; - alias SetupDuplicateDiskSpaceListW SetupDuplicateDiskSpaceList; - alias SetupFindFirstLineW SetupFindFirstLine; - alias SetupFindNextMatchLineW SetupFindNextMatchLine; - alias SetupFreeSourceListW SetupFreeSourceList; - alias SetupGetBackupInformationW SetupGetBackupInformation; - alias SetupGetFileCompressionInfoW SetupGetFileCompressionInfo; - alias SetupGetInfFileListW SetupGetInfFileList; - alias SetupGetInfInformationW SetupGetInfInformation; - alias SetupGetLineByIndexW SetupGetLineByIndex; - alias SetupGetLineCountW SetupGetLineCount; - alias SetupGetLineTextW SetupGetLineText; - alias SetupGetMultiSzFieldW SetupGetMultiSzField; - alias SetupGetSourceFileLocationW SetupGetSourceFileLocation; - alias SetupGetSourceFileSizeW SetupGetSourceFileSize; - alias SetupGetSourceInfoW SetupGetSourceInfo; - alias SetupGetStringFieldW SetupGetStringField; - alias SetupGetTargetPathW SetupGetTargetPath; - alias SetupInitializeFileLogW SetupInitializeFileLog; - alias SetupInstallFileExW SetupInstallFileEx; - alias SetupInstallFilesFromInfSectionW SetupInstallFilesFromInfSection; - alias SetupInstallFileW SetupInstallFile; - alias SetupInstallFromInfSectionW SetupInstallFromInfSection; - alias SetupInstallServicesFromInfSectionExW SetupInstallServicesFromInfSectionEx; - alias SetupInstallServicesFromInfSectionW SetupInstallServicesFromInfSection; - alias SetupIterateCabinetW SetupIterateCabinet; - alias SetupLogErrorW SetupLogError; - alias SetupLogFileW SetupLogFile; - alias SetupOpenAppendInfFileW SetupOpenAppendInfFile; - alias SetupOpenInfFileW SetupOpenInfFile; - alias SetupPromptForDiskW SetupPromptForDisk; - alias SetupQueryDrivesInDiskSpaceListW SetupQueryDrivesInDiskSpaceList; - alias SetupQueryFileLogW SetupQueryFileLog; - alias SetupQueryInfFileInformationW SetupQueryInfFileInformation; - alias SetupQueryInfOriginalFileInformationW SetupQueryInfOriginalFileInformation; - alias SetupQueryInfVersionInformationW SetupQueryInfVersionInformation; - alias SetupQuerySourceListW SetupQuerySourceList; - alias SetupQuerySpaceRequiredOnDriveW SetupQuerySpaceRequiredOnDrive; - alias SetupQueueCopyIndirectW SetupQueueCopyIndirect; - alias SetupQueueCopySectionW SetupQueueCopySection; - alias SetupQueueCopyW SetupQueueCopy; - alias SetupQueueDefaultCopyW SetupQueueDefaultCopy; - alias SetupQueueDeleteSectionW SetupQueueDeleteSection; - alias SetupQueueDeleteW SetupQueueDelete; - alias SetupQueueRenameSectionW SetupQueueRenameSection; - alias SetupQueueRenameW SetupQueueRename; - alias SetupRemoveFileLogEntryW SetupRemoveFileLogEntry; - alias SetupRemoveFromDiskSpaceListW SetupRemoveFromDiskSpaceList; - alias SetupRemoveFromSourceListW SetupRemoveFromSourceList; - alias SetupRemoveInstallSectionFromDiskSpaceListW SetupRemoveInstallSectionFromDiskSpaceList; - alias SetupRemoveSectionFromDiskSpaceListW SetupRemoveSectionFromDiskSpaceList; - alias SetupRenameErrorW SetupRenameError; - alias SetupScanFileQueueW SetupScanFileQueue; - alias SetupSetDirectoryIdExW SetupSetDirectoryIdEx; - alias SetupSetDirectoryIdW SetupSetDirectoryId; - alias SetupSetFileQueueAlternatePlatformW SetupSetFileQueueAlternatePlatform; - alias SetupSetPlatformPathOverrideW SetupSetPlatformPathOverride; - alias SetupSetSourceListW SetupSetSourceList; -} else { - alias PSP_FILE_CALLBACK_A PSP_FILE_CALLBACK; - alias SetupAddInstallSectionToDiskSpaceListA SetupAddInstallSectionToDiskSpaceList; - alias SetupAddSectionToDiskSpaceListA SetupAddSectionToDiskSpaceList; - alias SetupAddToDiskSpaceListA SetupAddToDiskSpaceList; - alias SetupAddToSourceListA SetupAddToSourceList; - alias SetupAdjustDiskSpaceListA SetupAdjustDiskSpaceList; - alias SetupBackupErrorA SetupBackupError; - alias SetupCommitFileQueueA SetupCommitFileQueue; - alias SetupCopyErrorA SetupCopyError; - alias SetupCopyOEMInfA SetupCopyOEMInf; - alias SetupCreateDiskSpaceListA SetupCreateDiskSpaceList; - alias SetupDecompressOrCopyFileA SetupDecompressOrCopyFile; - alias SetupDefaultQueueCallbackA SetupDefaultQueueCallback; - alias SetupDeleteErrorA SetupDeleteError; - alias SetupDiBuildClassInfoListExA SetupDiBuildClassInfoListEx; - alias SetupDiClassGuidsFromNameA SetupDiClassGuidsFromName; - alias SetupDiClassGuidsFromNameExA SetupDiClassGuidsFromNameEx; - alias SetupDiClassNameFromGuidA SetupDiClassNameFromGuid; - alias SetupDiClassNameFromGuidExA SetupDiClassNameFromGuidEx; - alias SetupDiCreateDeviceInfoA SetupDiCreateDeviceInfo; - alias SetupDiCreateDeviceInfoListExA SetupDiCreateDeviceInfoListEx; - alias SetupDiCreateDeviceInterfaceA SetupDiCreateDeviceInterface; - deprecated alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDevice; - alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateDeviceInterfaceRegKey; - deprecated alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKey; - alias SetupDiCreateDevRegKeyA SetupDiCreateDevRegKey; - alias SetupDiDeleteDeviceInterfaceData SetupDiDeleteInterfaceDeviceData; - alias SetupDiEnumDriverInfoA SetupDiEnumDriverInfo; - alias SetupDiGetActualSectionToInstallA SetupDiGetActualSectionToInstall; - alias SetupDiGetClassDescriptionA SetupDiGetClassDescription; - alias SetupDiGetClassDescriptionExA SetupDiGetClassDescriptionEx; - alias SetupDiGetClassDevPropertySheetsA SetupDiGetClassDevPropertySheets; - alias SetupDiGetClassDevsA SetupDiGetClassDevs; - alias SetupDiGetClassDevsExA SetupDiGetClassDevsEx; - alias SetupDiGetClassImageListExA SetupDiGetClassImageListEx; - alias SetupDiGetClassInstallParamsA SetupDiGetClassInstallParams; - alias SetupDiGetClassRegistryPropertyA SetupDiGetClassRegistryProperty; - alias SetupDiGetDeviceInfoListDetailA SetupDiGetDeviceInfoListDetail; - alias SetupDiGetDeviceInstallParamsA SetupDiGetDeviceInstallParams; - alias SetupDiGetDeviceInstanceIdA SetupDiGetDeviceInstanceId; - alias SetupDiGetDeviceInterfaceDetailA SetupDiGetDeviceInterfaceDetail; - deprecated alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetail; - alias SetupDiGetDeviceRegistryPropertyA SetupDiGetDeviceRegistryProperty; - alias SetupDiGetDriverInfoDetailA SetupDiGetDriverInfoDetail; - alias SetupDiGetDriverInstallParamsA SetupDiGetDriverInstallParams; - alias SetupDiGetHwProfileFriendlyNameA SetupDiGetHwProfileFriendlyName; - alias SetupDiGetHwProfileFriendlyNameExA SetupDiGetHwProfileFriendlyNameEx; - alias SetupDiGetHwProfileListExA SetupDiGetHwProfileListEx; - alias SetupDiGetINFClassA SetupDiGetINFClass; - alias SetupDiGetSelectedDriverA SetupDiGetSelectedDriver; - alias SetupDiInstallClassA SetupDiInstallClass; - alias SetupDiInstallClassExA SetupDiInstallClassEx; - alias SetupDiOpenClassRegKeyExA SetupDiOpenClassRegKeyEx; - alias SetupDiOpenDeviceInfoA SetupDiOpenDeviceInfo; - alias SetupDiOpenDeviceInterfaceA SetupDiOpenDeviceInterface; - deprecated alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDevice; - alias SetupDiSetClassInstallParamsA SetupDiSetClassInstallParams; - alias SetupDiSetClassRegistryPropertyA SetupDiSetClassRegistryProperty; - alias SetupDiSetDeviceInstallParamsA SetupDiSetDeviceInstallParams; - alias SetupDiSetDeviceRegistryPropertyA SetupDiSetDeviceRegistryProperty; - alias SetupDiSetDriverInstallParamsA SetupDiSetDriverInstallParams; - alias SetupDiSetSelectedDriverA SetupDiSetSelectedDriver; - alias SetupDuplicateDiskSpaceListA SetupDuplicateDiskSpaceList; - alias SetupFindFirstLineA SetupFindFirstLine; - alias SetupFindNextMatchLineA SetupFindNextMatchLine; - alias SetupFreeSourceListA SetupFreeSourceList; - alias SetupGetBackupInformationA SetupGetBackupInformation; - alias SetupGetFileCompressionInfoA SetupGetFileCompressionInfo; - alias SetupGetInfFileListA SetupGetInfFileList; - alias SetupGetInfInformationA SetupGetInfInformation; - alias SetupGetLineByIndexA SetupGetLineByIndex; - alias SetupGetLineCountA SetupGetLineCount; - alias SetupGetLineTextA SetupGetLineText; - alias SetupGetMultiSzFieldA SetupGetMultiSzField; - alias SetupGetSourceFileLocationA SetupGetSourceFileLocation; - alias SetupGetSourceFileSizeA SetupGetSourceFileSize; - alias SetupGetSourceInfoA SetupGetSourceInfo; - alias SetupGetStringFieldA SetupGetStringField; - alias SetupGetTargetPathA SetupGetTargetPath; - alias SetupInitializeFileLogA SetupInitializeFileLog; - alias SetupInstallFileA SetupInstallFile; - alias SetupInstallFileExA SetupInstallFileEx; - alias SetupInstallFilesFromInfSectionA SetupInstallFilesFromInfSection; - alias SetupInstallFromInfSectionA SetupInstallFromInfSection; - alias SetupInstallServicesFromInfSectionA SetupInstallServicesFromInfSection; - alias SetupInstallServicesFromInfSectionExA SetupInstallServicesFromInfSectionEx; - alias SetupIterateCabinetA SetupIterateCabinet; - alias SetupLogErrorA SetupLogError; - alias SetupLogFileA SetupLogFile; - alias SetupOpenAppendInfFileA SetupOpenAppendInfFile; - alias SetupOpenInfFileA SetupOpenInfFile; - alias SetupPromptForDiskA SetupPromptForDisk; - alias SetupQueryDrivesInDiskSpaceListA SetupQueryDrivesInDiskSpaceList; - alias SetupQueryFileLogA SetupQueryFileLog; - alias SetupQueryInfFileInformationA SetupQueryInfFileInformation; - alias SetupQueryInfOriginalFileInformationA SetupQueryInfOriginalFileInformation; - alias SetupQueryInfVersionInformationA SetupQueryInfVersionInformation; - alias SetupQuerySourceListA SetupQuerySourceList; - alias SetupQuerySpaceRequiredOnDriveA SetupQuerySpaceRequiredOnDrive; - alias SetupQueueCopyA SetupQueueCopy; - alias SetupQueueCopyIndirectA SetupQueueCopyIndirect; - alias SetupQueueCopySectionA SetupQueueCopySection; - alias SetupQueueDefaultCopyA SetupQueueDefaultCopy; - alias SetupQueueDeleteA SetupQueueDelete; - alias SetupQueueDeleteSectionA SetupQueueDeleteSection; - alias SetupQueueRenameA SetupQueueRename; - alias SetupQueueRenameSectionA SetupQueueRenameSection; - alias SetupRemoveFileLogEntryA SetupRemoveFileLogEntry; - alias SetupRemoveFromDiskSpaceListA SetupRemoveFromDiskSpaceList; - alias SetupRemoveFromSourceListA SetupRemoveFromSourceList; - alias SetupRemoveInstallSectionFromDiskSpaceListA SetupRemoveInstallSectionFromDiskSpaceList; - alias SetupRemoveSectionFromDiskSpaceListA SetupRemoveSectionFromDiskSpaceList; - alias SetupRenameErrorA SetupRenameError; - alias SetupScanFileQueueA SetupScanFileQueue; - alias SetupSetDirectoryIdA SetupSetDirectoryId; - alias SetupSetDirectoryIdExA SetupSetDirectoryIdEx; - alias SetupSetFileQueueAlternatePlatformA SetupSetFileQueueAlternatePlatform; - alias SetupSetPlatformPathOverrideA SetupSetPlatformPathOverride; - alias SetupSetSourceListA SetupSetSourceList; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Vladimir Vlasov + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_setupapi.d) + */ +module core.sys.windows.setupapi; +pragma(lib, "setupapi"); + +private import core.sys.windows.basetyps, core.sys.windows.commctrl, core.sys.windows.prsht, core.sys.windows.w32api, + core.sys.windows.winreg, core.sys.windows.windef; +private import core.sys.windows.winbase; // for SYSTEMTIME + +/*static if(_WIN32_WINNT < _WIN32_WINDOWS) { + const UINT _SETUPAPI_VER = _WIN32_WINNT; // SetupAPI version follows Windows NT version +} else static if(_WIN32_WINDOWS) { + static if(_WIN32_WINDOWS >= 0x0490) { + const UINT _SETUPAPI_VER = 0x0500; // WinME uses same version of SetupAPI as Win2k + } else static if(_WIN32_WINDOWS >= 0x0410) { + const UINT _SETUPAPI_VER = 0x0410; // Indicates version of SetupAPI shipped with Win98 + } else { + const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version + } +} else { + const UINT _SETUPAPI_VER = 0x0501; +} + +version (WindowsNTonly) { + static if (_WIN32_WINNT >= 0x500) { + const UINT USE_SP_DRVINFO_DATA_V1 = 0; + } else { + const UINT USE_SP_DRVINFO_DATA_V1 = 1; + } +} else { + const UINT USE_SP_DRVINFO_DATA_V1 = 1; +}*/ +/+ +const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version +const UINT USE_SP_DRVINFO_DATA_V1 = 1; ++/ +const UINT _SETUPAPI_VER = _WIN32_WINNT; +const bool USE_SP_DRVINFO_DATA_V1 = _WIN32_WINNT < 0x500; + +enum : uint { + LINE_LEN = 256, + MAX_INF_STRING_LENGTH = 4096, + MAX_TITLE_LEN = 60, + MAX_INSTRUCTION_LEN = 256, + MAX_LABEL_LEN = 30, + MAX_SERVICE_NAME_LEN = 256, + MAX_SUBTITLE_LEN = 256, + SP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3 +} + +enum : DWORD { + COPYFLG_WARN_IF_SKIP = 0x00000001, + COPYFLG_NOSKIP = 0x00000002, + COPYFLG_NOVERSIONCHECK = 0x00000004, + COPYFLG_FORCE_FILE_IN_USE = 0x00000008, + COPYFLG_NO_OVERWRITE = 0x00000010, + COPYFLG_NO_VERSION_DIALOG = 0x00000020, + COPYFLG_OVERWRITE_OLDER_ONLY = 0x00000040, + COPYFLG_REPLACEONLY = 0x00000400, + COPYFLG_NODECOMP = 0x00000800, + COPYFLG_REPLACE_BOOT_FILE = 0x00001000, + COPYFLG_NOPRUNE = 0x00002000 +} + +enum : DWORD { + DELFLG_IN_USE = 0x00000001, + DELFLG_IN_USE1 = 0x00010000 +} + +enum : DWORD { + DI_REMOVEDEVICE_GLOBAL = 0x00000001, + DI_REMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, + DI_UNREMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, + DI_SHOWOEM = 0x00000001, + DI_SHOWCOMPAT = 0x00000002, + DI_SHOWCLASS = 0x00000004, + DI_SHOWALL = 0x00000007, + DI_NOVCP = 0x00000008, + DI_DIDCOMPAT = 0x00000010, + DI_DIDCLASS = 0x00000020, + DI_AUTOASSIGNRES = 0x00000040, + DI_NEEDRESTART = 0x00000080, + DI_NEEDREBOOT = 0x00000100, + DI_NOBROWSE = 0x00000200, + DI_MULTMFGS = 0x00000400, + DI_DISABLED = 0x00000800, + DI_GENERALPAGE_ADDED = 0x00001000, + DI_RESOURCEPAGE_ADDED = 0x00002000, + DI_PROPERTIES_CHANGE = 0x00004000, + DI_INF_IS_SORTED = 0x00008000, + DI_ENUMSINGLEINF = 0x00010000, + DI_DONOTCALLCONFIGMG = 0x00020000, + DI_INSTALLDISABLED = 0x00040000, + DI_COMPAT_FROM_CLASS = 0x00080000, + DI_CLASSINSTALLPARAMS = 0x00100000, + DI_NODI_DEFAULTACTION = 0x00200000, + DI_QUIETINSTALL = 0x00800000, + DI_NOFILECOPY = 0x01000000, + DI_FORCECOPY = 0x02000000, + DI_DRIVERPAGE_ADDED = 0x04000000, + DI_USECI_SELECTSTRINGS = 0x08000000, + DI_OVERRIDE_INFFLAGS = 0x10000000, + DI_PROPS_NOCHANGEUSAGE = 0x20000000, + DI_NOSELECTICONS = 0x40000000, + DI_NOWRITE_IDS = 0x80000000, + DI_FLAGSEX_USEOLDINFSEARCH = 0x00000001, + DI_FLAGSEX_AUTOSELECTRANK0 = 0x00000002, + DI_FLAGSEX_CI_FAILED = 0x00000004, + DI_FLAGSEX_DIDINFOLIST = 0x00000010, + DI_FLAGSEX_DIDCOMPATINFO = 0x00000020, + DI_FLAGSEX_FILTERCLASSES = 0x00000040, + DI_FLAGSEX_SETFAILEDINSTALL = 0x00000080, + DI_FLAGSEX_DEVICECHANGE = 0x00000100, + DI_FLAGSEX_ALWAYSWRITEIDS = 0x00000200, + DI_FLAGSEX_PROPCHANGE_PENDING = 0x00000400, + DI_FLAGSEX_ALLOWEXCLUDEDDRVS = 0x00000800, + DI_FLAGSEX_NOUIONQUERYREMOVE = 0x00001000, + DI_FLAGSEX_USECLASSFORCOMPAT = 0x00002000, + DI_FLAGSEX_OLDINF_IN_CLASSLIST = 0x00004000, + DI_FLAGSEX_NO_DRVREG_MODIFY = 0x00008000, + DI_FLAGSEX_IN_SYSTEM_SETUP = 0x00010000, + DI_FLAGSEX_INET_DRIVER = 0x00020000, + DI_FLAGSEX_APPENDDRIVERLIST = 0x00040000, + DI_FLAGSEX_PREINSTALLBACKUP = 0x00080000, + DI_FLAGSEX_BACKUPONREPLACE = 0x00100000, + DI_FLAGSEX_DRIVERLIST_FROM_URL = 0x00200000, + DI_FLAGSEX_RESERVED1 = 0x00400000, + DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS = 0x00800000, + DI_FLAGSEX_POWERPAGE_ADDED = 0x01000000 +} + +enum : DWORD { + DIBCI_NOINSTALLCLASS = 0x00000001, + DIBCI_NODISPLAYCLASS = 0x00000002 +} + +enum : DWORD { + DICD_GENERATE_ID = 0x00000001, + DICD_INHERIT_CLASSDRVS = 0x00000002 +} + +enum : DWORD { + DICS_ENABLE = 1, + DICS_DISABLE, + DICS_PROPCHANGE, + DICS_START, + DICS_STOP // = 5 +} + +enum : DWORD { + DICS_FLAG_GLOBAL = 1, + DICS_FLAG_CONFIGSPECIFIC = 2, + DICS_FLAG_CONFIGGENERAL = 4 +} + +alias UINT DI_FUNCTION; + +enum : DI_FUNCTION { + DIF_SELECTDEVICE = 1, + DIF_INSTALLDEVICE, + DIF_ASSIGNRESOURCES, + DIF_PROPERTIES, + DIF_REMOVE, + DIF_FIRSTTIMESETUP, + DIF_FOUNDDEVICE, + DIF_SELECTCLASSDRIVERS, + DIF_VALIDATECLASSDRIVERS, + DIF_INSTALLCLASSDRIVERS, + DIF_CALCDISKSPACE, + DIF_DESTROYPRIVATEDATA, + DIF_VALIDATEDRIVER, + DIF_MOVEDEVICE, + DIF_DETECT, + DIF_INSTALLWIZARD, + DIF_DESTROYWIZARDDATA, + DIF_PROPERTYCHANGE, + DIF_ENABLECLASS, + DIF_DETECTVERIFY, + DIF_INSTALLDEVICEFILES, + DIF_UNREMOVE, + DIF_SELECTBESTCOMPATDRV, + DIF_ALLOW_INSTALL, + DIF_REGISTERDEVICE, + DIF_NEWDEVICEWIZARD_PRESELECT, + DIF_NEWDEVICEWIZARD_SELECT, + DIF_NEWDEVICEWIZARD_PREANALYZE, + DIF_NEWDEVICEWIZARD_POSTANALYZE, + DIF_NEWDEVICEWIZARD_FINISHINSTALL, + DIF_UNUSED1, + DIF_INSTALLINTERFACES, + DIF_DETECTCANCEL, + DIF_REGISTER_COINSTALLERS, + DIF_ADDPROPERTYPAGE_ADVANCED, + DIF_ADDPROPERTYPAGE_BASIC, + DIF_RESERVED1, + DIF_TROUBLESHOOTER, + DIF_POWERMESSAGEWAKE // = 39 +} + +enum : DWORD { + DIGCF_DEFAULT = 0x00000001, + DIGCF_PRESENT = 0x00000002, + DIGCF_ALLCLASSES = 0x00000004, + DIGCF_PROFILE = 0x00000008, + DIGCF_DEVICEINTERFACE = 0x00000010 +} + +deprecated enum : DWORD { + DIGCF_INTERFACEDEVICE = DIGCF_DEVICEINTERFACE +} + +enum : DWORD { + DIGCDP_FLAG_BASIC = 0x00000001, + DIGCDP_FLAG_ADVANCED = 0x00000002 +} + +enum : DWORD { + DIOCR_INSTALLER = 0x00000001, + DIOCR_INTERFACE = 0x00000002 +} + +enum : DWORD { + DIODI_NO_ADD = 0x00000001 +} + +enum : DWORD { + DIOD_INHERIT_CLASSDRVS = 0x00000002, + DIOD_CANCEL_REMOVE = 0x00000004 +} + +enum : DWORD { + DIREG_DEV = 0x00000001, + DIREG_DRV = 0x00000002, + DIREG_BOTH = 0x00000004 +} + +enum : int { + DIRID_ABSOLUTE = -1, + DIRID_NULL = 0, + DIRID_SRCPATH = 1, + DIRID_WINDOWS = 10, + DIRID_SYSTEM = 11, + DIRID_DRIVERS = 12, + DIRID_IOSUBSYS = DIRID_DRIVERS, + DIRID_INF = 17, + DIRID_HELP = 18, + DIRID_FONTS = 20, + DIRID_VIEWERS = 21, + DIRID_COLOR = 23, + DIRID_APPS = 24, + DIRID_SHARED = 25, + DIRID_BOOT = 30, + DIRID_SYSTEM16 = 50, + DIRID_SPOOL = 51, + DIRID_SPOOLDRIVERS = 52, + DIRID_USERPROFILE = 53, + DIRID_LOADER = 54, + DIRID_PRINTPROCESSOR = 55, + DIRID_DEFAULT = DIRID_SYSTEM +} + +enum : int { + DIRID_COMMON_STARTMENU = 16406, + DIRID_COMMON_PROGRAMS = 16407, + DIRID_COMMON_STARTUP = 16408, + DIRID_COMMON_DESKTOPDIRECTORY = 16409, + DIRID_COMMON_FAVORITES = 16415, + DIRID_COMMON_APPDATA = 16419, + DIRID_PROGRAM_FILES = 16422, + DIRID_SYSTEM_X86 = 16425, + DIRID_PROGRAM_FILES_X86 = 16426, + DIRID_PROGRAM_FILES_COMMON = 16427, + DIRID_PROGRAM_FILES_COMMONX86 = 16428, + DIRID_COMMON_TEMPLATES = 16429, + DIRID_COMMON_DOCUMENTS = 16430, + DIRID_USER = 0x8000, + DIRID_ABSOLUTE_16BIT = 0xffff +} + +enum : DWORD { + DMI_MASK = 0x00000001, + DMI_BKCOLOR = 0x00000002, + DMI_USERECT = 0x00000004 +} + +enum : DWORD { + DNF_DUPDESC = 0x00000001, + DNF_OLDDRIVER = 0x00000002, + DNF_EXCLUDEFROMLIST = 0x00000004, + DNF_NODRIVER = 0x00000008, + DNF_LEGACYINF = 0x00000010, + DNF_CLASS_DRIVER = 0x00000020, + DNF_COMPATIBLE_DRIVER = 0x00000040, + DNF_INET_DRIVER = 0x00000080, + DNF_UNUSED1 = 0x00000100, + DNF_INDEXED_DRIVER = 0x00000200, + DNF_OLD_INET_DRIVER = 0x00000400, + DNF_BAD_DRIVER = 0x00000800, + DNF_DUPPROVIDER = 0x00001000 +} + +enum : UINT { + DPROMPT_SUCCESS, + DPROMPT_CANCEL, + DPROMPT_SKIPFILE, + DPROMPT_BUFFERTOOSMALL, + DPROMPT_OUTOFMEMORY // = 4 +} + +enum : DWORD { + DRIVER_HARDWAREID_RANK = 0x00000FFF, + DRIVER_COMPATID_RANK = 0x00003FFF, + DRIVER_UNTRUSTED_RANK = 0x00008000, + DRIVER_UNTRUSTED_HARDWAREID_RANK = 0x00008FFF, + DRIVER_UNTRUSTED_COMPATID_RANK = 0x0000BFFF, + DRIVER_W9X_SUSPECT_RANK = 0x0000C000, + DRIVER_W9X_SUSPECT_HARDWAREID_RANK = 0x0000CFFF, + DRIVER_W9X_SUSPECT_COMPATID_RANK = 0x0000FFFF +} + +enum : DWORD { + DYNAWIZ_FLAG_PAGESADDED = 0x00000001, + DYNAWIZ_FLAG_INSTALLDET_NEXT = 0x00000002, + DYNAWIZ_FLAG_INSTALLDET_PREV = 0x00000004, + DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT = 0x00000008 +} + +enum : WORD { + ENABLECLASS_QUERY, + ENABLECLASS_SUCCESS, + ENABLECLASS_FAILURE // = 2 +} + +enum : DWORD { + ERROR_EXPECTED_SECTION_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0, + ERROR_BAD_SECTION_NAME_LINE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 1, + ERROR_SECTION_NAME_TOO_LONG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 2, + ERROR_GENERAL_SYNTAX = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 3, + ERROR_WRONG_INF_STYLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x100, + ERROR_NOT_INSTALLED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x1000, + ERROR_SECTION_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x101, + ERROR_LINE_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x102, + ERROR_NO_BACKUP = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x103, + ERROR_NO_ASSOCIATED_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x200, + ERROR_CLASS_MISMATCH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x201, + ERROR_DUPLICATE_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x202, + ERROR_NO_DRIVER_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x203, + ERROR_KEY_DOES_NOT_EXIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x204, + ERROR_INVALID_DEVINST_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x205, + ERROR_INVALID_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x206, + ERROR_DEVINST_ALREADY_EXISTS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x207, + ERROR_DEVINFO_NOT_REGISTERED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x208, + ERROR_INVALID_REG_PROPERTY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x209, + ERROR_NO_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20A, + ERROR_NO_SUCH_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20B, + ERROR_CANT_LOAD_CLASS_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20C, + ERROR_INVALID_CLASS_INSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20D, + ERROR_DI_DO_DEFAULT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20E, + ERROR_DI_NOFILECOPY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20F, + ERROR_INVALID_HWPROFILE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x210, + ERROR_NO_DEVICE_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x211, + ERROR_DEVINFO_LIST_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x212, + ERROR_DEVINFO_DATA_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x213, + ERROR_DI_BAD_PATH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x214, + ERROR_NO_CLASSINSTALL_PARAMS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x215, + ERROR_FILEQUEUE_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x216, + ERROR_BAD_SERVICE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x217, + ERROR_NO_CLASS_DRIVER_LIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x218, + ERROR_NO_ASSOCIATED_SERVICE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x219, + ERROR_NO_DEFAULT_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21A, + ERROR_DEVICE_INTERFACE_ACTIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21B, + ERROR_DEVICE_INTERFACE_REMOVED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21C, + ERROR_BAD_INTERFACE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21D, + ERROR_NO_SUCH_INTERFACE_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21E, + ERROR_INVALID_REFERENCE_STRING = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21F, + ERROR_INVALID_MACHINENAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x220, + ERROR_REMOTE_COMM_FAILURE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x221, + ERROR_MACHINE_UNAVAILABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x222, + ERROR_NO_CONFIGMGR_SERVICES = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x223, + ERROR_INVALID_PROPPAGE_PROVIDER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x224, + ERROR_NO_SUCH_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x225, + ERROR_DI_POSTPROCESSING_REQUIRED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x226, + ERROR_INVALID_COINSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x227, + ERROR_NO_COMPAT_DRIVERS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x228, + ERROR_NO_DEVICE_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x229, + ERROR_INVALID_INF_LOGCONFIG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22A, + ERROR_DI_DONT_INSTALL = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22B, + ERROR_INVALID_FILTER_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22C, + ERROR_NON_WINDOWS_NT_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22D, + ERROR_NON_WINDOWS_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22E, + ERROR_NO_CATALOG_FOR_OEM_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22F, + ERROR_DEVINSTALL_QUEUE_NONNATIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x230, + ERROR_NOT_DISABLEABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x231, + ERROR_CANT_REMOVE_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x232 +} + +deprecated enum : DWORD { + ERROR_NO_DEFAULT_INTERFACE_DEVICE = ERROR_NO_DEFAULT_DEVICE_INTERFACE, + ERROR_INTERFACE_DEVICE_ACTIVE = ERROR_DEVICE_INTERFACE_ACTIVE, + ERROR_INTERFACE_DEVICE_REMOVED = ERROR_DEVICE_INTERFACE_REMOVED, + ERROR_NO_SUCH_INTERFACE_DEVICE = ERROR_NO_SUCH_DEVICE_INTERFACE, +} + +enum : UINT { + FILEOP_COPY, + FILEOP_RENAME, + FILEOP_DELETE, + FILEOP_BACKUP, + FILEOP_NEWPATH, // = 4 + FILEOP_ABORT = 0, + FILEOP_DOIT, + FILEOP_SKIP, // = 2 + FILEOP_RETRY = FILEOP_DOIT +} + +enum : UINT { + FILE_COMPRESSION_NONE, + FILE_COMPRESSION_WINLZA, + FILE_COMPRESSION_MSZIP, + FILE_COMPRESSION_NTCAB // = 3 +} + +enum : DWORD { + FLG_ADDREG_TYPE_SZ = 0x00000000, + FLG_ADDREG_BINVALUETYPE = 0x00000001, + FLG_ADDREG_NOCLOBBER = 0x00000002, + FLG_ADDREG_DELVAL = 0x00000004, + FLG_ADDREG_APPEND = 0x00000008, + FLG_ADDREG_KEYONLY = 0x00000010, + FLG_ADDREG_OVERWRITEONLY = 0x00000020, + FLG_ADDREG_TYPE_MULTI_SZ = 0x00010000, + FLG_ADDREG_TYPE_EXPAND_SZ = 0x00020000, + FLG_ADDREG_TYPE_BINARY = 0x00000000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_DWORD = 0x00010000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_NONE = 0x00020000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_MASK = 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + FLG_ADDREG_64BITKEY = 0x00001000, + FLG_ADDREG_KEYONLY_COMMON = 0x00002000, + FLG_ADDREG_32BITKEY = 0x00004000, + FLG_ADDREG_DELREG_BIT = 0x00008000 + } +} + +enum : DWORD { + FLG_DELREG_VALUE = 0x00000000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + FLG_DELREG_TYPE_MASK = FLG_ADDREG_TYPE_MASK, + FLG_DELREG_TYPE_SZ = FLG_ADDREG_TYPE_SZ, + FLG_DELREG_TYPE_MULTI_SZ = FLG_ADDREG_TYPE_MULTI_SZ, + FLG_DELREG_TYPE_EXPAND_SZ = FLG_ADDREG_TYPE_EXPAND_SZ, + FLG_DELREG_TYPE_BINARY = FLG_ADDREG_TYPE_BINARY, + FLG_DELREG_TYPE_DWORD = FLG_ADDREG_TYPE_DWORD, + FLG_DELREG_TYPE_NONE = FLG_ADDREG_TYPE_NONE, + FLG_DELREG_64BITKEY = FLG_ADDREG_64BITKEY, + FLG_DELREG_KEYONLY_COMMON = FLG_ADDREG_KEYONLY_COMMON, + FLG_DELREG_32BITKEY = FLG_ADDREG_32BITKEY, + FLG_DELREG_OPERATION_MASK = 0x000000FE, + FLG_DELREG_MULTI_SZ_DELSTRING = 0x00000002 | FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT + } +} + +enum : DWORD { + FLG_BITREG_CLEARBITS = 0x00000000, + FLG_BITREG_SETBITS = 0x00000001 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + FLG_BITREG_64BITKEY = 0x00001000, + FLG_BITREG_32BITKEY = 0x00004000 + } +} + +enum : DWORD { + FLG_PROFITEM_CURRENTUSER = 0x00000001, + FLG_PROFITEM_DELETE = 0x00000002, + FLG_PROFITEM_GROUP = 0x00000004, + FLG_PROFITEM_CSIDL = 0x00000008 +} + +enum : DWORD { + FLG_REGSVR_DLLREGISTER = 0x00000001, + FLG_REGSVR_DLLINSTALL = 0x00000002 +} + +enum { + IDD_DYNAWIZ_FIRSTPAGE = 10000, + IDD_DYNAWIZ_SELECT_PREVPAGE, + IDD_DYNAWIZ_SELECT_NEXTPAGE, + IDD_DYNAWIZ_ANALYZE_PREVPAGE, + IDD_DYNAWIZ_ANALYZE_NEXTPAGE, // = 1004 + IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE = 10006, + IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE, + IDD_DYNAWIZ_INSTALLDETECTED_NODEVS, + IDD_DYNAWIZ_SELECTDEV_PAGE, + IDD_DYNAWIZ_ANALYZEDEV_PAGE, + IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE, + IDD_DYNAWIZ_SELECTCLASS_PAGE, // = 10012 + MIN_IDD_DYNAWIZ_RESOURCE_ID = 10000, + MAX_IDD_DYNAWIZ_RESOURCE_ID = 11000 +} + +enum : DWORD { + IDF_NOBROWSE = 0x00000001, + IDF_NOSKIP = 0x00000002, + IDF_NODETAILS = 0x00000004, + IDF_NOCOMPRESSED = 0x00000008, + IDF_CHECKFIRST = 0x00000100, + IDF_NOBEEP = 0x00000200, + IDF_NOFOREGROUND = 0x00000400, + IDF_WARNIFSKIP = 0x00000800 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + IDF_NOREMOVABLEMEDIAPROMPT = 0x00001000, + IDF_USEDISKNAMEASPROMPT = 0x00002000, + IDF_OEMDISK = 0x80000000 + } +} + +enum { + IDI_RESOURCEFIRST = 159, + IDI_RESOURCE = 159, + IDI_RESOURCELAST = 161, + IDI_RESOURCEOVERLAYFIRST = 161, + IDI_RESOURCEOVERLAYLAST = 161, + IDI_CONFLICT = 161, + IDI_PROBLEM_OVL = 500, + IDI_DISABLED_OVL = 501, + IDI_FORCED_OVL = 502, + IDI_CLASSICON_OVERLAYFIRST = 500, + IDI_CLASSICON_OVERLAYLAST = 502 +} + +enum : DWORD { + INF_STYLE_NONE = 0x00000000, + INF_STYLE_OLDNT = 0x00000001, + INF_STYLE_WIN4 = 0x00000002, + INF_STYLE_CACHE_ENABLE = 0x00000010, + INF_STYLE_CACHE_DISABLE = 0x00000020 +} + +enum : DWORD { + INFINFO_INF_SPEC_IS_HINF = 1, + INFINFO_INF_NAME_IS_ABSOLUTE, + INFINFO_DEFAULT_SEARCH, + INFINFO_REVERSE_DEFAULT_SEARCH, + INFINFO_INF_PATH_LIST_SEARCH // = 5 +} + +alias DWORD LogSeverity; +enum : LogSeverity { + LogSevInformation, + LogSevWarning, + LogSevError, + LogSevFatalError, + LogSevMaximum // = 4 +} + +const MAX_INSTALLWIZARD_DYNAPAGES = 20; + +enum : DWORD { + NDW_INSTALLFLAG_DIDFACTDEFS = 0x00000001, + NDW_INSTALLFLAG_HARDWAREALLREADYIN = 0x00000002, + NDW_INSTALLFLAG_NEEDSHUTDOWN = 0x00000200, + NDW_INSTALLFLAG_EXPRESSINTRO = 0x00000400, + NDW_INSTALLFLAG_SKIPISDEVINSTALLED = 0x00000800, + NDW_INSTALLFLAG_NODETECTEDDEVS = 0x00001000, + NDW_INSTALLFLAG_INSTALLSPECIFIC = 0x00002000, + NDW_INSTALLFLAG_SKIPCLASSLIST = 0x00004000, + NDW_INSTALLFLAG_CI_PICKED_OEM = 0x00008000, + NDW_INSTALLFLAG_PCMCIAMODE = 0x00010000, + NDW_INSTALLFLAG_PCMCIADEVICE = 0x00020000, + NDW_INSTALLFLAG_USERCANCEL = 0x00040000, + NDW_INSTALLFLAG_KNOWNCLASS = 0x00080000, + NDW_INSTALLFLAG_NEEDRESTART = 0x00000080, + NDW_INSTALLFLAG_NEEDREBOOT = 0x00000100 +} + +enum : DWORD { + SETDIRID_NOT_FULL_PATH = 0x00000001 +} + +enum : DWORD { + SP_COPY_DELETESOURCE = 0x0000001, + SP_COPY_REPLACEONLY = 0x0000002, + SP_COPY_NEWER = 0x0000004, + SP_COPY_NEWER_OR_SAME = 0x0000004, + SP_COPY_NOOVERWRITE = 0x0000008, + SP_COPY_NODECOMP = 0x0000010, + SP_COPY_LANGUAGEAWARE = 0x0000020, + SP_COPY_SOURCE_ABSOLUTE = 0x0000040, + SP_COPY_SOURCEPATH_ABSOLUTE = 0x0000080, + SP_COPY_IN_USE_NEEDS_REBOOT = 0x0000100, + SP_COPY_FORCE_IN_USE = 0x0000200, + SP_COPY_NOSKIP = 0x0000400, + SP_FLAG_CABINETCONTINUATION = 0x0000800, + SP_COPY_FORCE_NOOVERWRITE = 0x0001000, + SP_COPY_FORCE_NEWER = 0x0002000, + SP_COPY_WARNIFSKIP = 0x0004000, + SP_COPY_NOBROWSE = 0x0008000, + SP_COPY_NEWER_ONLY = 0x0010000, + SP_COPY_SOURCE_SIS_MASTER = 0x0020000, + SP_COPY_OEMINF_CATALOG_ONLY = 0x0040000, + SP_COPY_REPLACE_BOOT_FILE = 0x0080000, + SP_COPY_NOPRUNE = 0x0100000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + SP_COPY_OEM_F6_INF = 0x0200000 + } +} + +enum : DWORD { + SPCRP_SECURITY = 23, + SPCRP_SECURITY_SDS, + SPCRP_DEVTYPE, + SPCRP_EXCLUSIVE, + SPCRP_CHARACTERISTICS, + SPCRP_MAXIMUM_PROPERTY // = 28 +} + +enum : DWORD { + SPDIT_NODRIVER, + SPDIT_CLASSDRIVER, + SPDIT_COMPATDRIVER // = 2 +} + +enum : DWORD { + SPDRP_DEVICEDESC, + SPDRP_HARDWAREID, + SPDRP_COMPATIBLEIDS, + SPDRP_UNUSED0, + SPDRP_SERVICE, + SPDRP_UNUSED1, + SPDRP_UNUSED2, + SPDRP_CLASS, + SPDRP_CLASSGUID, + SPDRP_DRIVER, + SPDRP_CONFIGFLAGS, + SPDRP_MFG, + SPDRP_FRIENDLYNAME, + SPDRP_LOCATION_INFORMATION, + SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, + SPDRP_CAPABILITIES, + SPDRP_UI_NUMBER, + SPDRP_UPPERFILTERS, + SPDRP_LOWERFILTERS, + SPDRP_BUSTYPEGUID, + SPDRP_LEGACYBUSTYPE, + SPDRP_BUSNUMBER, + SPDRP_ENUMERATOR_NAME, + SPDRP_SECURITY, + SPDRP_SECURITY_SDS, + SPDRP_DEVTYPE, + SPDRP_EXCLUSIVE, + SPDRP_CHARACTERISTICS, + SPDRP_ADDRESS, // = 28 + SPDRP_UI_NUMBER_DESC_FORMAT = 30, + SPDRP_MAXIMUM_PROPERTY = 31 +} + +enum : UINT { + SPDSL_IGNORE_DISK = 1, + SPDSL_DISALLOW_NEGATIVE_ADJUST +} + +enum : UINT { + SPFILENOTIFY_STARTQUEUE = 1, + SPFILENOTIFY_ENDQUEUE, + SPFILENOTIFY_STARTSUBQUEUE, + SPFILENOTIFY_ENDSUBQUEUE, + SPFILENOTIFY_STARTDELETE, + SPFILENOTIFY_ENDDELETE, + SPFILENOTIFY_DELETEERROR, + SPFILENOTIFY_STARTRENAME, + SPFILENOTIFY_ENDRENAME, + SPFILENOTIFY_RENAMEERROR, + SPFILENOTIFY_STARTCOPY, + SPFILENOTIFY_ENDCOPY, + SPFILENOTIFY_COPYERROR, + SPFILENOTIFY_NEEDMEDIA, + SPFILENOTIFY_QUEUESCAN, + SPFILENOTIFY_CABINETINFO, + SPFILENOTIFY_FILEINCABINET, + SPFILENOTIFY_NEEDNEWCABINET, + SPFILENOTIFY_FILEEXTRACTED, + SPFILENOTIFY_FILEOPDELAYED, + SPFILENOTIFY_STARTBACKUP, + SPFILENOTIFY_BACKUPERROR, + SPFILENOTIFY_ENDBACKUP, + SPFILENOTIFY_QUEUESCAN_EX, + SPFILENOTIFY_STARTREGISTRATION, // = 25 + SPFILENOTIFY_ENDREGISTRATION = 32, + SPFILENOTIFY_LANGMISMATCH = 0x00010000, + SPFILENOTIFY_TARGETEXISTS = 0x00020000, + SPFILENOTIFY_TARGETNEWER = 0x00040000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : UINT { + SPFILENOTIFY_QUEUESCAN_SIGNERINFO = 0x00000040 + } +} + +enum : DWORD { + SPFILELOG_SYSTEMLOG = 0x00000001, + SPFILELOG_OEMFILE = 0x00000001, + SPFILELOG_FORCENEW = 0x00000002, + SPFILELOG_QUERYONLY = 0x00000004 +} + +enum : INT { + SPFILEQ_FILE_IN_USE = 0x00000001, + SPFILEQ_REBOOT_RECOMMENDED = 0x00000002, + SPFILEQ_REBOOT_IN_PROGRESS = 0x00000004 +} + +enum : DWORD { + SPINT_ACTIVE = 0x00000001, + SPINT_DEFAULT = 0x00000002, + SPINT_REMOVED = 0x00000004 +} + +deprecated enum : DWORD { + SPID_ACTIVE = SPINT_ACTIVE, + SPID_DEFAULT = SPINT_DEFAULT, + SPID_REMOVED = SPINT_REMOVED +} + +enum : UINT { + SPINST_LOGCONFIG = 0x00000001, + SPINST_INIFILES = 0x00000002, + SPINST_REGISTRY = 0x00000004, + SPINST_INI2REG = 0x00000008, + SPINST_FILES = 0x00000010, + SPINST_BITREG = 0x00000020, + SPINST_REGSVR = 0x00000040, + SPINST_UNREGSVR = 0x00000080, + SPINST_PROFILEITEMS = 0x00000100, + SPINST_SINGLESECTION = 0x00010000, + SPINST_LOGCONFIG_IS_FORCED = 0x00020000, + SPINST_LOGCONFIGS_ARE_OVERRIDES = 0x00040000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : UINT { + SPINST_COPYINF = 0x00000200, + SPINST_ALL = 0x000003ff, + SPINST_REGISTERCALLBACKAWARE = 0x00080000 + } +} else { + enum : UINT { + SPINST_ALL = 0x000001ff + } +} + +enum : DWORD { + SPOST_NONE, + SPOST_PATH, + SPOST_URL, + SPOST_MAX // = 3 +} + +enum : DWORD { + SPPSR_SELECT_DEVICE_RESOURCES = 1, + SPPSR_ENUM_BASIC_DEVICE_PROPERTIES, + SPPSR_ENUM_ADV_DEVICE_PROPERTIES +} + +enum : DWORD { + SPQ_SCAN_FILE_PRESENCE = 0x00000001, + SPQ_SCAN_FILE_VALIDITY = 0x00000002, + SPQ_SCAN_USE_CALLBACK = 0x00000004, + SPQ_SCAN_USE_CALLBACKEX = 0x00000008, + SPQ_SCAN_INFORM_USER = 0x00000010, + SPQ_SCAN_PRUNE_COPY_QUEUE = 0x00000020 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + SPQ_SCAN_USE_CALLBACK_SIGNERINFO = 0x00000040, + SPQ_SCAN_PRUNE_DELREN = 0x00000080 + } +} + +enum : UINT_PTR { + SPQ_DELAYED_COPY = 0x00000001 +} + +enum : DWORD { + SPRDI_FIND_DUPS = 0x00000001, +} + +enum : DWORD { + SPSVCINST_TAGTOFRONT = 0x00000001, + SPSVCINST_ASSOCSERVICE = 0x00000002, + SPSVCINST_DELETEEVENTLOGENTRY = 0x00000004, + SPSVCINST_NOCLOBBER_DISPLAYNAME = 0x00000008, + SPSVCINST_NOCLOBBER_STARTTYPE = 0x00000010, + SPSVCINST_NOCLOBBER_ERRORCONTROL = 0x00000020, + SPSVCINST_NOCLOBBER_LOADORDERGROUP = 0x00000040, + SPSVCINST_NOCLOBBER_DEPENDENCIES = 0x00000080, + SPSVCINST_NOCLOBBER_DESCRIPTION = 0x00000100, + SPSVCINST_STOPSERVICE = 0x00000200 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + SPSVCINST_CLOBBER_SECURITY = 0x00000400 + } +} + +enum : DWORD { + SPWPT_SELECTDEVICE = 0x00000001 +} + +enum : DWORD { + SPWP_USE_DEVINFO_DATA = 0x00000001 +} + +enum : UINT { + SRCINFO_PATH = 1, + SRCINFO_TAGFILE, + SRCINFO_DESCRIPTION, + SRCINFO_FLAGS // = 4 +} + +enum : DWORD { + SRCLIST_TEMPORARY = 0x00000001, + SRCLIST_NOBROWSE = 0x00000002, + SRCLIST_SYSTEM = 0x00000010, + SRCLIST_USER = 0x00000020, + SRCLIST_SYSIFADMIN = 0x00000040, + SRCLIST_SUBDIRS = 0x00000100, + SRCLIST_APPEND = 0x00000200, + SRCLIST_NOSTRIPPLATFORM = 0x00000400 +} + +alias PVOID HINF; +alias PVOID HDSKSPC; +mixin DECLARE_HANDLE!("HDEVINFO"); +alias PVOID HSPFILEQ; +alias PVOID HSPFILELOG; + +enum SetupFileLogInfo { + SetupFileLogSourceFilename, + SetupFileLogChecksum, + SetupFileLogDiskTagfile, + SetupFileLogDiskDescription, + SetupFileLogOtherInfo, + SetupFileLogMax +} + +align(1): + +struct INFCONTEXT { + PVOID Inf; + PVOID CurrentInf; + UINT Section; + UINT Line; +} +alias INFCONTEXT* PINFCONTEXT; + +struct SP_INF_INFORMATION { + DWORD InfStyle; + DWORD InfCount; + BYTE[1] _VersionData; + BYTE* VersionData() { return _VersionData.ptr; } +} +alias SP_INF_INFORMATION* PSP_INF_INFORMATION; + +struct SP_ALTPLATFORM_INFO { + DWORD cbSize = SP_ALTPLATFORM_INFO.sizeof; + DWORD Platform; + DWORD MajorVersion; + DWORD MinorVersion; + WORD ProcessorArchitecture; + WORD Reserved; +} +alias SP_ALTPLATFORM_INFO* PSP_ALTPLATFORM_INFO; + +struct SP_ORIGINAL_FILE_INFO_A { + DWORD cbSize = SP_ORIGINAL_FILE_INFO_A.sizeof; + CHAR[MAX_PATH] OriginalInfName; + CHAR[MAX_PATH] OriginalCatalogName; +} +alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO_A; + +struct SP_ORIGINAL_FILE_INFO_W { + DWORD cbSize = SP_ORIGINAL_FILE_INFO_W.sizeof; + WCHAR[MAX_PATH] OriginalInfName; + WCHAR[MAX_PATH] OriginalCatalogName; +} +alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO_W; + +struct FILEPATHS_A { + PCSTR Target; + PCSTR Source; + UINT Win32Error; + DWORD Flags; +} +alias FILEPATHS_A* PFILEPATHS_A; + +struct FILEPATHS_W { + PCWSTR Target; + PCWSTR Source; + UINT Win32Error; + DWORD Flags; +} +alias FILEPATHS_W* PFILEPATHS_W; + +struct SOURCE_MEDIA_A { + PCSTR Reserved; + PCSTR Tagfile; + PCSTR Description; + PCSTR SourcePath; + PCSTR SourceFile; + DWORD Flags; +} +alias SOURCE_MEDIA_A* PSOURCE_MEDIA_A; + +struct SOURCE_MEDIA_W { + PCWSTR Reserved; + PCWSTR Tagfile; + PCWSTR Description; + PCWSTR SourcePath; + PCWSTR SourceFile; + DWORD Flags; +} +alias SOURCE_MEDIA_W* PSOURCE_MEDIA_W; + +struct CABINET_INFO_A { + PCSTR CabinetPath; + PCSTR CabinetFile; + PCSTR DiskName; + USHORT SetId; + USHORT CabinetNumber; +} +alias CABINET_INFO_A* PCABINET_INFO_A; + +struct CABINET_INFO_W { + PCWSTR CabinetPath; + PCWSTR CabinetFile; + PCWSTR DiskName; + USHORT SetId; + USHORT CabinetNumber; +} +alias CABINET_INFO_W* PCABINET_INFO_W; + +struct FILE_IN_CABINET_INFO_A { + PCSTR NameInCabinet; + DWORD FileSize; + DWORD Win32Error; + WORD DosDate; + WORD DosTime; + WORD DosAttribs; + CHAR[MAX_PATH] FullTargetName; +} +alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO_A; + +struct FILE_IN_CABINET_INFO_W { + PCWSTR NameInCabinet; + DWORD FileSize; + DWORD Win32Error; + WORD DosDate; + WORD DosTime; + WORD DosAttribs; + WCHAR[MAX_PATH] FullTargetName; +} +alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO_W; + +struct SP_FILE_COPY_PARAMS_A { + DWORD cbSize = SP_FILE_COPY_PARAMS_A.sizeof; + HSPFILEQ QueueHandle; + PCSTR SourceRootPath; + PCSTR SourcePath; + PCSTR SourceFilename; + PCSTR SourceDescription; + PCSTR SourceTagfile; + PCSTR TargetDirectory; + PCSTR TargetFilename; + DWORD CopyStyle; + HINF LayoutInf; + PCSTR SecurityDescriptor; +} +alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS_A; + +struct SP_FILE_COPY_PARAMS_W { + DWORD cbSize = SP_FILE_COPY_PARAMS_W.sizeof; + HSPFILEQ QueueHandle; + PCWSTR SourceRootPath; + PCWSTR SourcePath; + PCWSTR SourceFilename; + PCWSTR SourceDescription; + PCWSTR SourceTagfile; + PCWSTR TargetDirectory; + PCWSTR TargetFilename; + DWORD CopyStyle; + HINF LayoutInf; + PCWSTR SecurityDescriptor; +} +alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS_W; + +struct SP_DEVINFO_DATA { + DWORD cbSize = SP_DEVINFO_DATA.sizeof; + GUID ClassGuid; + DWORD DevInst; + ULONG_PTR Reserved; +} +alias SP_DEVINFO_DATA* PSP_DEVINFO_DATA; + +struct SP_DEVICE_INTERFACE_DATA { + DWORD cbSize = SP_DEVICE_INTERFACE_DATA.sizeof; + GUID InterfaceClassGuid; + DWORD Flags; + ULONG_PTR Reserved; +} +alias SP_DEVICE_INTERFACE_DATA* PSP_DEVICE_INTERFACE_DATA; +deprecated alias SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA; +deprecated alias SP_DEVICE_INTERFACE_DATA* PSP_INTERFACE_DEVICE_DATA; + +struct SP_DEVICE_INTERFACE_DETAIL_DATA_A { + DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_A.sizeof; + CHAR[1] _DevicePath; + CHAR* DevicePath() { return _DevicePath.ptr; } +} +alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA_A; + +struct SP_DEVICE_INTERFACE_DETAIL_DATA_W { + DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_W.sizeof; + WCHAR[1] _DevicePath; + WCHAR* DevicePath() { return _DevicePath.ptr; } +} +alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA_W; + +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A; +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA_A; +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W; +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA_W; + +struct SP_DEVINFO_LIST_DETAIL_DATA_A { + DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_A.sizeof; + GUID ClassGuid; + HANDLE RemoteMachineHandle; + CHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; +} +alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA_A; + +struct SP_DEVINFO_LIST_DETAIL_DATA_W { + DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_W.sizeof; + GUID ClassGuid; + HANDLE RemoteMachineHandle; + WCHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; +} +alias SP_DEVINFO_LIST_DETAIL_DATA_W* PSP_DEVINFO_LIST_DETAIL_DATA_W; + +extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_A; +extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_W; + +struct SP_DEVINSTALL_PARAMS_A { + DWORD cbSize = SP_DEVINSTALL_PARAMS_A.sizeof; + DWORD Flags; + DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK_A InstallMsgHandler; + PVOID InstallMsgHandlerContext; + HSPFILEQ FileQueue; + ULONG_PTR ClassInstallReserved; + DWORD Reserved; + CHAR[MAX_PATH] DriverPath; +} +alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS_A; + +struct SP_DEVINSTALL_PARAMS_W { + DWORD cbSize = SP_DEVINSTALL_PARAMS_W.sizeof; + DWORD Flags; + DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK_W InstallMsgHandler; + PVOID InstallMsgHandlerContext; + HSPFILEQ FileQueue; + ULONG_PTR ClassInstallReserved; + DWORD Reserved; + WCHAR[MAX_PATH] DriverPath; +} +alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS_W; + +struct SP_CLASSINSTALL_HEADER { + DWORD cbSize = SP_CLASSINSTALL_HEADER.sizeof; + DI_FUNCTION InstallFunction; +} +alias SP_CLASSINSTALL_HEADER* PSP_CLASSINSTALL_HEADER; + +struct SP_ENABLECLASS_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + GUID ClassGuid; + DWORD EnableMessage; +} +alias SP_ENABLECLASS_PARAMS* PSP_ENABLECLASS_PARAMS; + +struct SP_MOVEDEV_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + SP_DEVINFO_DATA SourceDeviceInfoData; +} +alias SP_MOVEDEV_PARAMS* PSP_MOVEDEV_PARAMS; + +struct SP_PROPCHANGE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD StateChange; + DWORD Scope; + DWORD HwProfile; +} +alias SP_PROPCHANGE_PARAMS* PSP_PROPCHANGE_PARAMS; + +struct SP_REMOVEDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Scope; + DWORD HwProfile; +} +alias SP_REMOVEDEVICE_PARAMS* PSP_REMOVEDEVICE_PARAMS; + +struct SP_UNREMOVEDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Scope; + DWORD HwProfile; +} +alias SP_UNREMOVEDEVICE_PARAMS* PSP_UNREMOVEDEVICE_PARAMS; + +struct SP_SELECTDEVICE_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[MAX_TITLE_LEN] Title; + CHAR[MAX_INSTRUCTION_LEN] Instructions; + CHAR[MAX_LABEL_LEN] ListLabel; + CHAR[MAX_SUBTITLE_LEN] SubTitle; + BYTE[2] Reserved; +} +alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS_A; + +struct SP_SELECTDEVICE_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[MAX_TITLE_LEN] Title; + WCHAR[MAX_INSTRUCTION_LEN] Instructions; + WCHAR[MAX_LABEL_LEN] ListLabel; + WCHAR[MAX_SUBTITLE_LEN] SubTitle; +} +alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS_W; + +extern(Windows) alias BOOL function(PVOID, DWORD) PDETECT_PROGRESS_NOTIFY; + +struct SP_DETECTDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + PDETECT_PROGRESS_NOTIFY DetectProgressNotify; + PVOID ProgressNotifyParam; +} +alias SP_DETECTDEVICE_PARAMS* PSP_DETECTDEVICE_PARAMS; + +struct SP_INSTALLWIZARD_DATA { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Flags; + HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; + DWORD NumDynamicPages; + DWORD DynamicPageFlags; + DWORD PrivateFlags; + LPARAM PrivateData; + HWND hwndWizardDlg; +} +alias SP_INSTALLWIZARD_DATA* PSP_INSTALLWIZARD_DATA; + +struct SP_NEWDEVICEWIZARD_DATA { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Flags; + HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; + DWORD NumDynamicPages; + HWND hwndWizardDlg; +} +alias SP_NEWDEVICEWIZARD_DATA* PSP_NEWDEVICEWIZARD_DATA; +alias SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA; +alias SP_NEWDEVICEWIZARD_DATA* PSP_ADDPROPERTYPAGE_DATA; + +struct SP_TROUBLESHOOTER_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[MAX_PATH] ChmFile; + CHAR[MAX_PATH] HtmlTroubleShooter; +} +alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS_A; + +struct SP_TROUBLESHOOTER_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[MAX_PATH] ChmFile; + WCHAR[MAX_PATH] HtmlTroubleShooter; +} +alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS_W; + +struct SP_POWERMESSAGEWAKE_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[LINE_LEN*2] PowerMessageWake; +} +alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS_A; + +struct SP_POWERMESSAGEWAKE_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[LINE_LEN*2] PowerMessageWake; +} +alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS_W; + +struct SP_DRVINFO_DATA_V2_A { + DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + CHAR[LINE_LEN] Description; + CHAR[LINE_LEN] MfgName; + CHAR[LINE_LEN] ProviderName; + FILETIME DriverDate; + DWORDLONG DriverVersion; +} +alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_V2_A; + +struct SP_DRVINFO_DATA_V2_W { + DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] Description; + WCHAR[LINE_LEN] MfgName; + WCHAR[LINE_LEN] ProviderName; + FILETIME DriverDate; + DWORDLONG DriverVersion; +} +alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_V2_W; + +struct SP_DRVINFO_DATA_V1_A { + DWORD cbSize = SP_DRVINFO_DATA_V1_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + CHAR[LINE_LEN] Description; + CHAR[LINE_LEN] MfgName; + CHAR[LINE_LEN] ProviderName; +} +alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_V1_A; + +struct SP_DRVINFO_DATA_V1_W { + DWORD cbSize = SP_DRVINFO_DATA_V1_W.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] Description; + WCHAR[LINE_LEN] MfgName; + WCHAR[LINE_LEN] ProviderName; +} +alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_V1_W; + +version (Unicode) { + alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1; + alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2; +} else { + alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1; + alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2; +} +alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA_V1; +alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA_V2; + +static if(USE_SP_DRVINFO_DATA_V1) { + alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA; + alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA; +} else { + alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA; + alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA; +} + +extern(Windows) alias DWORD function(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINFO_DATA, PVOID) PSP_DETSIG_CMPPROC; + +struct SP_DRVINFO_DETAIL_DATA_A { + DWORD cbSize = SP_DRVINFO_DETAIL_DATA_A.sizeof; + FILETIME InfDate; + DWORD CompatIDsOffset; + DWORD CompatIDsLength; + ULONG_PTR Reserved; + CHAR[LINE_LEN] SectionName; + CHAR[MAX_PATH] InfFileName; + CHAR[LINE_LEN] DrvDescription; + CHAR[1] _HardwareID; + CHAR* HardwareID() { return _HardwareID.ptr; } +} +alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA_A; + +struct SP_DRVINFO_DETAIL_DATA_W { + DWORD cbSize = SP_DRVINFO_DETAIL_DATA_W.sizeof; + FILETIME InfDate; + DWORD CompatIDsOffset; + DWORD CompatIDsLength; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] SectionName; + WCHAR[MAX_PATH] InfFileName; + WCHAR[LINE_LEN] DrvDescription; + WCHAR[1] _HardwareID; + WCHAR* HardwareID() { return _HardwareID.ptr; } +} +alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA_W; + +struct SP_DRVINSTALL_PARAMS { + DWORD cbSize = SP_DRVINSTALL_PARAMS.sizeof; + DWORD Rank; + DWORD Flags; + DWORD_PTR PrivateData; + DWORD Reserved; +} +alias SP_DRVINSTALL_PARAMS* PSP_DRVINSTALL_PARAMS; + +struct COINSTALLER_CONTEXT_DATA { + BOOL PostProcessing; + DWORD InstallResult; + PVOID PrivateData; +} +alias COINSTALLER_CONTEXT_DATA* PCOINSTALLER_CONTEXT_DATA; + +struct SP_CLASSIMAGELIST_DATA { + DWORD cbSize = SP_CLASSIMAGELIST_DATA.sizeof; + HIMAGELIST ImageList; + ULONG_PTR Reserved; +} +alias SP_CLASSIMAGELIST_DATA* PSP_CLASSIMAGELIST_DATA; + +struct SP_PROPSHEETPAGE_REQUEST { + DWORD cbSize = SP_PROPSHEETPAGE_REQUEST.sizeof; + DWORD PageRequested; + HDEVINFO DeviceInfoSet; + PSP_DEVINFO_DATA DeviceInfoData; +} +alias SP_PROPSHEETPAGE_REQUEST* PSP_PROPSHEETPAGE_REQUEST; + +struct SP_BACKUP_QUEUE_PARAMS_A { + DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_A.sizeof; + CHAR[MAX_PATH] FullInfPath; + INT FilenameOffset; +} +alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS_A; + +struct SP_BACKUP_QUEUE_PARAMS_W { + DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_W.sizeof; + WCHAR[MAX_PATH] FullInfPath; + INT FilenameOffset; +} +alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS_W; + +version (Unicode) { + alias SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO; + alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO; + alias FILEPATHS_W FILEPATHS; + alias FILEPATHS_W* PFILEPATHS; + alias SOURCE_MEDIA_W SOURCE_MEDIA; + alias SOURCE_MEDIA_W* PSOURCE_MEDIA; + alias CABINET_INFO_W CABINET_INFO; + alias CABINET_INFO_W* PCABINET_INFO; + alias FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO; + alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO; + alias SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS; + alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA; + deprecated { + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA; + } + alias SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINFO_LIST_DETAIL_DATA_W *PSP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS; + alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS; + alias SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS; + alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS; + alias SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA; + alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA; + alias SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS; + alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS; +} else { + alias SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO; + alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO; + alias FILEPATHS_A FILEPATHS; + alias FILEPATHS_A* PFILEPATHS; + alias SOURCE_MEDIA_A SOURCE_MEDIA; + alias SOURCE_MEDIA_A* PSOURCE_MEDIA; + alias CABINET_INFO_A CABINET_INFO; + alias CABINET_INFO_A* PCABINET_INFO; + alias FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO; + alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO; + alias SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS; + alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA; + deprecated { + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA; + } + alias SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS; + alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS; + alias SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS; + alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS; + alias SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA; + alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA; + alias SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS; + alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS; +} + +extern (Windows) { + BOOL SetupAddInstallSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); + BOOL SetupAddInstallSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); + BOOL SetupAddSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); + BOOL SetupAddSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); + BOOL SetupAddToDiskSpaceListA(HDSKSPC, PCSTR, LONGLONG, UINT, PVOID, UINT); + BOOL SetupAddToDiskSpaceListW(HDSKSPC, PCWSTR, LONGLONG, UINT, PVOID, UINT); + BOOL SetupAddToSourceListA(DWORD, PCSTR); + BOOL SetupAddToSourceListW(DWORD, PCWSTR); + BOOL SetupQuerySourceListA(DWORD, PCSTR**List, PUINT); + BOOL SetupQuerySourceListW(DWORD, PCWSTR**List, PUINT); + BOOL SetupFreeSourceListA(PCSTR**List, UINT); + BOOL SetupFreeSourceListW(PCWSTR**List, UINT); + BOOL SetupAdjustDiskSpaceListA(HDSKSPC, LPCSTR, LONGLONG, PVOID, UINT); + BOOL SetupAdjustDiskSpaceListW(HDSKSPC, LPCWSTR, LONGLONG, PVOID, UINT); + UINT SetupBackupErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); + UINT SetupBackupErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupCancelTemporary(); + BOOL SetupCloseFileQueue(HSPFILEQ); + VOID SetupCloseInfFile(HINF); + VOID SetupCloseLog(); + BOOL SetupCommitFileQueueA(HWND, HSPFILEQ, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupCommitFileQueueW(HWND, HSPFILEQ, PSP_FILE_CALLBACK_W, PVOID); + UINT SetupCopyErrorA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, UINT, DWORD, PSTR, DWORD, PDWORD); + UINT SetupCopyErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupCopyOEMInfA(PCSTR, PCSTR, DWORD, DWORD, PSTR, DWORD, PDWORD, PSTR*); + BOOL SetupCopyOEMInfW(PCWSTR, PCWSTR, DWORD, DWORD, PWSTR, DWORD, PDWORD, PWSTR*); + HDSKSPC SetupCreateDiskSpaceListA(PVOID, DWORD, UINT); + HDSKSPC SetupCreateDiskSpaceListW(PVOID, DWORD, UINT); + DWORD SetupDecompressOrCopyFileA(PCSTR, PCSTR, PUINT); + DWORD SetupDecompressOrCopyFileW(PCWSTR, PCWSTR, PUINT); + UINT SetupDefaultQueueCallbackA(PVOID, UINT, UINT_PTR, UINT_PTR); + UINT SetupDefaultQueueCallbackW(PVOID, UINT, UINT_PTR, UINT_PTR); + UINT SetupDeleteErrorA(HWND, PCSTR, PCSTR, UINT, DWORD); + UINT SetupDeleteErrorW(HWND, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupDestroyDiskSpaceList(HDSKSPC); + BOOL SetupDiAskForOEMDisk(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiBuildClassInfoList(DWORD, LPGUID, DWORD, PDWORD); + BOOL SetupDiBuildClassInfoListExA(DWORD, LPGUID, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiBuildClassInfoListExW(DWORD, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiBuildDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); + BOOL SetupDiCallClassInstaller(DI_FUNCTION, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiCancelDriverInfoSearch(HDEVINFO); + BOOL SetupDiChangeState(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiClassGuidsFromNameA(PCSTR, LPGUID, DWORD, PDWORD); + BOOL SetupDiClassGuidsFromNameW(PCWSTR, LPGUID, DWORD, PDWORD); + BOOL SetupDiClassGuidsFromNameExA(PCSTR, LPGUID, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiClassGuidsFromNameExW(PCWSTR, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiClassNameFromGuidA(const(GUID)*, PSTR, DWORD, PDWORD); + BOOL SetupDiClassNameFromGuidW(const(GUID)*, PWSTR, DWORD, PDWORD); + BOOL SetupDiClassNameFromGuidExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiClassNameFromGuidExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiCreateDeviceInfoA(HDEVINFO, PCSTR, const(GUID)*, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiCreateDeviceInfoW(HDEVINFO, PCWSTR, const(GUID)*, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); + HDEVINFO SetupDiCreateDeviceInfoList(const(GUID)*, HWND); + HDEVINFO SetupDiCreateDeviceInfoListExA(const(GUID)*, HWND, PCSTR, PVOID); + HDEVINFO SetupDiCreateDeviceInfoListExW(const(GUID)*, HWND, PCWSTR, PVOID); + BOOL SetupDiCreateDeviceInterfaceA(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiCreateDeviceInterfaceW(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + HKEY SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCSTR); + HKEY SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCWSTR); + HKEY SetupDiCreateDevRegKeyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCSTR); + HKEY SetupDiCreateDevRegKeyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCWSTR); + BOOL SetupDiDeleteDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiDeleteDeviceInterfaceData(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD); + BOOL SetupDiDeleteDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD); + BOOL SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA); + BOOL SetupDiDestroyDeviceInfoList(HDEVINFO); + BOOL SetupDiDestroyDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); + INT SetupDiDrawMiniIcon(HDC, RECT, INT, DWORD); + BOOL SetupDiEnumDeviceInfo(HDEVINFO, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiEnumDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiEnumDriverInfoA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_A); + BOOL SetupDiEnumDriverInfoW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_W); + BOOL SetupDiGetActualSectionToInstallA(HINF, PCSTR, PSTR, DWORD, PDWORD, PSTR*); + BOOL SetupDiGetActualSectionToInstallW(HINF, PCWSTR, PWSTR, DWORD, PDWORD, PWSTR*); + BOOL SetupDiGetClassBitmapIndex(const(GUID)*, PINT); + BOOL SetupDiGetClassDescriptionA(const(GUID)*, PSTR, DWORD, PDWORD); + BOOL SetupDiGetClassDescriptionW(const(GUID)*, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetClassDescriptionExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetClassDescriptionExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetClassDevPropertySheetsA(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERA, DWORD, PDWORD, DWORD); + BOOL SetupDiGetClassDevPropertySheetsW(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERW, DWORD, PDWORD, DWORD); + HDEVINFO SetupDiGetClassDevsA(const(GUID)*, PCSTR, HWND, DWORD); + HDEVINFO SetupDiGetClassDevsW(const(GUID)*, PCWSTR, HWND, DWORD); + HDEVINFO SetupDiGetClassDevsExA(const(GUID)*, PCSTR, HWND, DWORD, HDEVINFO, PCSTR, PVOID); + HDEVINFO SetupDiGetClassDevsExW(const(GUID)*, PCWSTR, HWND, DWORD, HDEVINFO, PCWSTR, PVOID); + BOOL SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA, const(GUID)*, PINT); + BOOL SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA); + BOOL SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA, PCSTR, PVOID); + BOOL SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA, PCWSTR, PVOID); + BOOL SetupDiGetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); + BOOL SetupDiGetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); + BOOL SetupDiGetClassRegistryPropertyA(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetClassRegistryPropertyW(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetDeviceInfoListClass(HDEVINFO, LPGUID); + BOOL SetupDiGetDeviceInfoListDetailA(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_A); + BOOL SetupDiGetDeviceInfoListDetailW(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_W); + BOOL SetupDiGetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); + BOOL SetupDiGetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); + BOOL SetupDiGetDeviceInstanceIdA(HDEVINFO, PSP_DEVINFO_DATA, PSTR, DWORD, PDWORD); + BOOL SetupDiGetDeviceInstanceIdW(HDEVINFO, PSP_DEVINFO_DATA, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetDeviceInterfaceAlias(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, const(GUID)*, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiGetDeviceInterfaceDetailA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DWORD, PDWORD, PSP_DEVINFO_DATA); + BOOL SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DWORD, PDWORD, PSP_DEVINFO_DATA); + BOOL SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); + BOOL SetupDiGetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); + BOOL SetupDiGetDriverInfoDetailA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINFO_DETAIL_DATA_A, DWORD, PDWORD); + BOOL SetupDiGetDriverInfoDetailW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINFO_DETAIL_DATA_W, DWORD, PDWORD); + BOOL SetupDiGetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiGetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiGetHwProfileFriendlyNameA(DWORD, PSTR, DWORD, PDWORD); + BOOL SetupDiGetHwProfileFriendlyNameExA(DWORD, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetHwProfileFriendlyNameExW(DWORD, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetHwProfileFriendlyNameW(DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetHwProfileList(PDWORD, DWORD, PDWORD, PDWORD); + BOOL SetupDiGetHwProfileListExA(PDWORD, DWORD, PDWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetHwProfileListExW(PDWORD, DWORD, PDWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetINFClassA(PCSTR, LPGUID, PSTR, DWORD, PDWORD); + BOOL SetupDiGetINFClassW(PCWSTR, LPGUID, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiGetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); + BOOL SetupDiGetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); + HPROPSHEETPAGE SetupDiGetWizardage(HDEVINFO, PSP_DEVINFO_DATA, PSP_INSTALLWIZARD_DATA, DWORD, DWORD); + BOOL SetupDiInstallClassA(HWND, PCSTR, DWORD, HSPFILEQ); + BOOL SetupDiInstallClassW(HWND, PCWSTR, DWORD, HSPFILEQ); + BOOL SetupDiInstallClassExA(HWND, PCSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); + BOOL SetupDiInstallClassExW(HWND, PCWSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); + BOOL SetupDiInstallDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiInstallDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiInstallDriverFiles(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiLoadClassIcon(const(GUID)*, HICON*, PINT); + BOOL SetupDiMoveDuplicateDevice(HDEVINFO, PSP_DEVINFO_DATA); + HKEY SetupDiOpenClassRegKey(const(GUID)*, REGSAM); + HKEY SetupDiOpenClassRegKeyExA(const(GUID)*, REGSAM, DWORD, PCSTR, PVOID); + HKEY SetupDiOpenClassRegKeyExW(const(GUID)*, REGSAM, DWORD, PCWSTR, PVOID); + BOOL SetupDiOpenDeviceInfoA(HDEVINFO, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiOpenDeviceInfoW(HDEVINFO, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiOpenDeviceInterfaceA(HDEVINFO, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiOpenDeviceInterfaceW(HDEVINFO, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + HKEY SetupDiOpenDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM); + HKEY SetupDiOpenDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM); + BOOL SetupDiRegisterCoDeviceInstallers(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiRegisterDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PSP_DETSIG_CMPPROC, PVOID, PSP_DEVINFO_DATA); + BOOL SetupDiRemoveDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiRemoveDeviceInterface(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiSelectBestCompatDrv(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSelectDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSelectOEMDrv(HWND, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); + BOOL SetupDiSetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); + BOOL SetupDiSetClassRegistryPropertyA(LPGUID, DWORD, const(BYTE)*, DWORD, PCSTR, PVOID); + BOOL SetupDiSetClassRegistryPropertyW(LPGUID, DWORD, const(BYTE)*, DWORD, PCWSTR, PVOID); + BOOL SetupDiSetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); + BOOL SetupDiSetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); + BOOL SetupDiSetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); + BOOL SetupDiSetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); + BOOL SetupDiSetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiSetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiSetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); + BOOL SetupDiSetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); + BOOL SetupDiUnremoveDevice(HDEVINFO, PSP_DEVINFO_DATA); + HDSKSPC SetupDuplicateDiskSpaceListA(HDSKSPC, PVOID, DWORD, UINT); + HDSKSPC SetupDuplicateDiskSpaceListW(HDSKSPC, PVOID, DWORD, UINT); + BOOL SetupFindFirstLineA(HINF, PCSTR, PCSTR, PINFCONTEXT); + BOOL SetupFindFirstLineW(HINF, PCWSTR, PCWSTR, PINFCONTEXT); + BOOL SetupFindNextLine(PINFCONTEXT, PINFCONTEXT); + BOOL SetupFindNextMatchLineA(PINFCONTEXT, PCSTR, PINFCONTEXT); + BOOL SetupFindNextMatchLineW(PINFCONTEXT, PCWSTR, PINFCONTEXT); + BOOL SetupFreeA(PCSTR**, UINT); + BOOL SetupFreeW(PCWSTR**, UINT); + BOOL SetupGetBackupInformationA(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_A); + BOOL SetupGetBackupInformationW(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_W); + BOOL SetupGetBinaryField(PINFCONTEXT, DWORD, PBYTE, DWORD, LPDWORD); + DWORD SetupGetFieldCount(PINFCONTEXT); + DWORD SetupGetFileCompressionInfoA(PCSTR, PSTR*, PDWORD, PDWORD, PUINT); + DWORD SetupGetFileCompressionInfoW(PCWSTR, PWSTR*, PDWORD, PDWORD, PUINT); + BOOL SetupGetInfFileListA(PCSTR, DWORD, PSTR, DWORD, PDWORD); + BOOL SetupGetInfFileListW(PCWSTR, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupGetInfInformationA(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); + BOOL SetupGetInfInformationW(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); + BOOL SetupGetIntField(PINFCONTEXT, DWORD, PINT); + BOOL SetupGetLineByIndexA(HINF, PCSTR, DWORD, PINFCONTEXT); + BOOL SetupGetLineByIndexW(HINF, PCWSTR, DWORD, PINFCONTEXT); + LONG SetupGetLineCountA(HINF, PCSTR); + LONG SetupGetLineCountW(HINF, PCWSTR); + BOOL SetupGetLineTextA(PINFCONTEXT, HINF, PCSTR, PCSTR, PSTR, DWORD, PDWORD); + BOOL SetupGetLineTextW(PINFCONTEXT, HINF, PCWSTR, PCWSTR, PWSTR, DWORD, PDWORD); + BOOL SetupGetMultiSzFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, LPDWORD); + BOOL SetupGetMultiSzFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, LPDWORD); + BOOL SetupGetSourceFileLocationA(HINF, PINFCONTEXT, PCSTR, PUINT, PSTR, DWORD, PDWORD); + BOOL SetupGetSourceFileLocationW(HINF, PINFCONTEXT, PCWSTR, PUINT, PWSTR, DWORD, PDWORD); + BOOL SetupGetSourceFileSizeA(HINF, PINFCONTEXT, PCSTR, PCSTR, PDWORD, UINT); + BOOL SetupGetSourceFileSizeW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PDWORD, UINT); + BOOL SetupGetSourceInfoA(HINF, UINT, UINT, PSTR, DWORD, PDWORD); + BOOL SetupGetSourceInfoW(HINF, UINT, UINT, PWSTR, DWORD, PDWORD); + BOOL SetupGetStringFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, PDWORD); + BOOL SetupGetStringFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupGetTargetPathA(HINF, PINFCONTEXT, PCSTR, PSTR, DWORD, PDWORD); + BOOL SetupGetTargetPathW(HINF, PINFCONTEXT, PCWSTR, PWSTR, DWORD, PDWORD); + PVOID SetupInitDefaultQueueCallback(HWND); + PVOID SetupInitDefaultQueueCallbackEx(HWND, HWND, UINT, DWORD, PVOID); + HSPFILELOG SetupInitializeFileLogA(PCSTR, DWORD); + HSPFILELOG SetupInitializeFileLogW(PCWSTR, DWORD); + BOOL SetupInstallFileA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupInstallFileW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); + BOOL SetupInstallFileExA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID, PBOOL); + BOOL SetupInstallFileExW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID, PBOOL); + BOOL SetupInstallFilesFromInfSectionA(HINF, HINF, HSPFILEQ, PCSTR, PCSTR, UINT); + BOOL SetupInstallFilesFromInfSectionW(HINF, HINF, HSPFILEQ, PCWSTR, PCWSTR, UINT); + BOOL SetupInstallFromInfSectionA(HWND, HINF, PCSTR, UINT, HKEY, PCSTR, UINT, PSP_FILE_CALLBACK_A, PVOID, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupInstallFromInfSectionW(HWND, HINF, PCWSTR, UINT, HKEY, PCWSTR, UINT, PSP_FILE_CALLBACK_W, PVOID, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupInstallServicesFromInfSectionA(HINF, PCSTR, DWORD); + BOOL SetupInstallServicesFromInfSectionW(HINF, PCWSTR, DWORD); + BOOL SetupInstallServicesFromInfSectionExA(HINF, PCSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); + BOOL SetupInstallServicesFromInfSectionExW(HINF, PCWSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); + BOOL SetupIterateCabinetA(PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupIterateCabinetW(PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); + BOOL SetupLogErrorA(LPCSTR, LogSeverity); + BOOL SetupLogErrorW(LPCWSTR, LogSeverity); + BOOL SetupLogFileA(HSPFILELOG, PCSTR, PCSTR, PCSTR, DWORD, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupLogFileW(HSPFILELOG, PCWSTR, PCWSTR, PCWSTR, DWORD, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupOpenAppendInfFileA(PCSTR, HINF, PUINT); + BOOL SetupOpenAppendInfFileW(PCWSTR, HINF, PUINT); + HSPFILEQ SetupOpenFileQueue(); + HINF SetupOpenInfFileA(PCSTR, PCSTR, DWORD, PUINT); + HINF SetupOpenInfFileW(PCWSTR, PCWSTR, DWORD, PUINT); + BOOL SetupOpenLog(BOOL); + HINF SetupOpenMasterInf(); + UINT SetupPromptForDiskA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD, PSTR, DWORD, PDWORD); + UINT SetupPromptForDiskW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD, PWSTR, DWORD, PDWORD); + INT SetupPromptReboot(HSPFILEQ, HWND, BOOL); + BOOL SetupQueryA(DWORD, PCSTR**, PUINT); + BOOL SetupQueryW(DWORD, PCWSTR**, PUINT); + BOOL SetupQueryDrivesInDiskSpaceListA(HDSKSPC, PSTR, DWORD, PDWORD); + BOOL SetupQueryDrivesInDiskSpaceListW(HDSKSPC, PWSTR, DWORD, PDWORD); + BOOL SetupQueryFileLogA(HSPFILELOG, PCSTR, PCSTR, SetupFileLogInfo, PSTR, DWORD, PDWORD); + BOOL SetupQueryFileLogW(HSPFILELOG, PCWSTR, PCWSTR, SetupFileLogInfo, PWSTR, DWORD, PDWORD); + BOOL SetupQueryInfFileInformationA(PSP_INF_INFORMATION, UINT, PSTR, DWORD, PDWORD); + BOOL SetupQueryInfFileInformationW(PSP_INF_INFORMATION, UINT, PWSTR, DWORD, PDWORD); + BOOL SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_A); + BOOL SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_W); + BOOL SetupQueryInfVersionInformationA(PSP_INF_INFORMATION, UINT, PSTR, PSTR, DWORD, PDWORD); + BOOL SetupQueryInfVersionInformationW(PSP_INF_INFORMATION, UINT, PCWSTR, PWSTR, DWORD, PDWORD); + BOOL SetupQuerySpaceRequiredOnDriveA(HDSKSPC, PCSTR, LONGLONG*, PVOID, UINT); + BOOL SetupQuerySpaceRequiredOnDriveW(HDSKSPC, PCWSTR, LONGLONG*, PVOID, UINT); + BOOL SetupQueueCopyA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupQueueCopyW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A); + BOOL SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W); + BOOL SetupQueueCopySectionA(HSPFILEQ, PCSTR, HINF, HINF, PCSTR, DWORD); + BOOL SetupQueueCopySectionW(HSPFILEQ, PCWSTR, HINF, HINF, PCWSTR, DWORD); + BOOL SetupQueueDefaultCopyA(HSPFILEQ, HINF, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupQueueDefaultCopyW(HSPFILEQ, HINF, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupQueueDeleteA(HSPFILEQ, PCSTR, PCSTR); + BOOL SetupQueueDeleteW(HSPFILEQ, PCWSTR, PCWSTR); + BOOL SetupQueueDeleteSectionA(HSPFILEQ, HINF, HINF, PCSTR); + BOOL SetupQueueDeleteSectionW(HSPFILEQ, HINF, HINF, PCWSTR); + BOOL SetupQueueRenameA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR); + BOOL SetupQueueRenameW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR); + BOOL SetupQueueRenameSectionA(HSPFILEQ, HINF, HINF, PCSTR); + BOOL SetupQueueRenameSectionW(HSPFILEQ, HINF, HINF, PCWSTR); + BOOL SetupRemoveFileLogEntryA(HSPFILELOG, PCSTR, PCSTR); + BOOL SetupRemoveFileLogEntryW(HSPFILELOG, PCWSTR, PCWSTR); + BOOL SetupRemoveFromDiskSpaceListA(HDSKSPC, PCSTR, UINT, PVOID, UINT); + BOOL SetupRemoveFromDiskSpaceListW(HDSKSPC, PCWSTR, UINT, PVOID, UINT); + BOOL SetupRemoveFromSourceListA(DWORD, PCSTR); + BOOL SetupRemoveFromSourceListW(DWORD, PCWSTR); + BOOL SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); + BOOL SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); + BOOL SetupRemoveSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); + BOOL SetupRemoveSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); + UINT SetupRenameErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); + UINT SetupRenameErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupScanFileQueueA(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_A, PVOID, PDWORD); + BOOL SetupScanFileQueueW(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_W, PVOID, PDWORD); + BOOL SetupSetDirectoryIdA(HINF, DWORD, PCSTR); + BOOL SetupSetDirectoryIdW(HINF, DWORD, PCWSTR); + BOOL SetupSetDirectoryIdExA(HINF, DWORD, PCSTR, DWORD, DWORD, PVOID); + BOOL SetupSetDirectoryIdExW(HINF, DWORD, PCWSTR, DWORD, DWORD, PVOID); + BOOL SetupSetFileQueueAlternatePlatformA(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCSTR); + BOOL SetupSetFileQueueAlternatePlatformW(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCWSTR); + BOOL SetupSetPlatformPathOverrideA(PCSTR); + BOOL SetupSetPlatformPathOverrideW(PCWSTR); + BOOL SetupSetSourceListA(DWORD, PCSTR*, UINT); + BOOL SetupSetSourceListW(DWORD, PCWSTR*, UINT); + VOID SetupTermDefaultQueueCallback(PVOID); + BOOL SetupTerminateFileLog(HSPFILELOG); +} + +deprecated { + alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDeviceW; + alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKeyW; + alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDeviceW; + alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetailW; + alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDeviceA; + alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKeyA; + alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDeviceA; + alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetailA; +} + +version (Unicode) { + alias PSP_FILE_CALLBACK_W PSP_FILE_CALLBACK; + alias SetupAddInstallSectionToDiskSpaceListW SetupAddInstallSectionToDiskSpaceList; + alias SetupAddSectionToDiskSpaceListW SetupAddSectionToDiskSpaceList; + alias SetupAddToDiskSpaceListW SetupAddToDiskSpaceList; + alias SetupAddToSourceListW SetupAddToSourceList; + alias SetupAdjustDiskSpaceListW SetupAdjustDiskSpaceList; + alias SetupBackupErrorW SetupBackupError; + alias SetupCommitFileQueueW SetupCommitFileQueue; + alias SetupCopyErrorW SetupCopyError; + alias SetupCopyOEMInfW SetupCopyOEMInf; + alias SetupCreateDiskSpaceListW SetupCreateDiskSpaceList; + alias SetupDecompressOrCopyFileW SetupDecompressOrCopyFile; + alias SetupDefaultQueueCallbackW SetupDefaultQueueCallback; + alias SetupDeleteErrorW SetupDeleteError; + alias SetupDiBuildClassInfoListExW SetupDiBuildClassInfoListEx; + alias SetupDiClassGuidsFromNameExW SetupDiClassGuidsFromNameEx; + alias SetupDiClassGuidsFromNameW SetupDiClassGuidsFromName; + alias SetupDiClassNameFromGuidExW SetupDiClassNameFromGuidEx; + alias SetupDiClassNameFromGuidW SetupDiClassNameFromGuid; + alias SetupDiCreateDeviceInfoListExW SetupDiCreateDeviceInfoListEx; + alias SetupDiCreateDeviceInfoW SetupDiCreateDeviceInfo; + alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateDeviceInterfaceRegKey; + deprecated alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKey; + alias SetupDiCreateDeviceInterfaceW SetupDiCreateDeviceInterface; + deprecated alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDevice; + alias SetupDiCreateDevRegKeyW SetupDiCreateDevRegKey; + alias SetupDiEnumDriverInfoW SetupDiEnumDriverInfo; + alias SetupDiGetActualSectionToInstallW SetupDiGetActualSectionToInstall; + alias SetupDiGetClassDescriptionExW SetupDiGetClassDescriptionEx; + alias SetupDiGetClassDescriptionW SetupDiGetClassDescription; + alias SetupDiGetClassDevPropertySheetsW SetupDiGetClassDevPropertySheets; + alias SetupDiGetClassDevsExW SetupDiGetClassDevsEx; + alias SetupDiGetClassDevsW SetupDiGetClassDevs; + alias SetupDiGetClassImageListExW SetupDiGetClassImageListEx; + alias SetupDiGetClassInstallParamsW SetupDiGetClassInstallParams; + alias SetupDiGetClassRegistryPropertyW SetupDiGetClassRegistryProperty; + alias SetupDiGetDeviceInfoListDetailW SetupDiGetDeviceInfoListDetail; + alias SetupDiGetDeviceInstallParamsW SetupDiGetDeviceInstallParams; + alias SetupDiGetDeviceInstanceIdW SetupDiGetDeviceInstanceId; + alias SetupDiGetDeviceInterfaceDetailW SetupDiGetDeviceInterfaceDetail; + deprecated alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetail; + alias SetupDiGetDeviceRegistryPropertyW SetupDiGetDeviceRegistryProperty; + alias SetupDiGetDriverInfoDetailW SetupDiGetDriverInfoDetail; + alias SetupDiGetDriverInstallParamsW SetupDiGetDriverInstallParams; + alias SetupDiGetHwProfileFriendlyNameExW SetupDiGetHwProfileFriendlyNameEx; + alias SetupDiGetHwProfileFriendlyNameW SetupDiGetHwProfileFriendlyName; + alias SetupDiGetHwProfileListExW SetupDiGetHwProfileListEx; + alias SetupDiGetINFClassW SetupDiGetINFClass; + alias SetupDiGetSelectedDriverW SetupDiGetSelectedDriver; + alias SetupDiInstallClassExW SetupDiInstallClassEx; + alias SetupDiInstallClassW SetupDiInstallClass; + alias SetupDiOpenClassRegKeyExW SetupDiOpenClassRegKeyEx; + alias SetupDiOpenDeviceInfoW SetupDiOpenDeviceInfo; + alias SetupDiOpenDeviceInterfaceW SetupDiOpenDeviceInterface; + deprecated alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDevice; + alias SetupDiSetClassInstallParamsW SetupDiSetClassInstallParams; + alias SetupDiSetClassRegistryPropertyW SetupDiSetClassRegistryProperty; + alias SetupDiSetDeviceInstallParamsW SetupDiSetDeviceInstallParams; + alias SetupDiSetDeviceRegistryPropertyW SetupDiSetDeviceRegistryProperty; + alias SetupDiSetDriverInstallParamsW SetupDiSetDriverInstallParams; + alias SetupDiSetSelectedDriverW SetupDiSetSelectedDriver; + alias SetupDuplicateDiskSpaceListW SetupDuplicateDiskSpaceList; + alias SetupFindFirstLineW SetupFindFirstLine; + alias SetupFindNextMatchLineW SetupFindNextMatchLine; + alias SetupFreeSourceListW SetupFreeSourceList; + alias SetupGetBackupInformationW SetupGetBackupInformation; + alias SetupGetFileCompressionInfoW SetupGetFileCompressionInfo; + alias SetupGetInfFileListW SetupGetInfFileList; + alias SetupGetInfInformationW SetupGetInfInformation; + alias SetupGetLineByIndexW SetupGetLineByIndex; + alias SetupGetLineCountW SetupGetLineCount; + alias SetupGetLineTextW SetupGetLineText; + alias SetupGetMultiSzFieldW SetupGetMultiSzField; + alias SetupGetSourceFileLocationW SetupGetSourceFileLocation; + alias SetupGetSourceFileSizeW SetupGetSourceFileSize; + alias SetupGetSourceInfoW SetupGetSourceInfo; + alias SetupGetStringFieldW SetupGetStringField; + alias SetupGetTargetPathW SetupGetTargetPath; + alias SetupInitializeFileLogW SetupInitializeFileLog; + alias SetupInstallFileExW SetupInstallFileEx; + alias SetupInstallFilesFromInfSectionW SetupInstallFilesFromInfSection; + alias SetupInstallFileW SetupInstallFile; + alias SetupInstallFromInfSectionW SetupInstallFromInfSection; + alias SetupInstallServicesFromInfSectionExW SetupInstallServicesFromInfSectionEx; + alias SetupInstallServicesFromInfSectionW SetupInstallServicesFromInfSection; + alias SetupIterateCabinetW SetupIterateCabinet; + alias SetupLogErrorW SetupLogError; + alias SetupLogFileW SetupLogFile; + alias SetupOpenAppendInfFileW SetupOpenAppendInfFile; + alias SetupOpenInfFileW SetupOpenInfFile; + alias SetupPromptForDiskW SetupPromptForDisk; + alias SetupQueryDrivesInDiskSpaceListW SetupQueryDrivesInDiskSpaceList; + alias SetupQueryFileLogW SetupQueryFileLog; + alias SetupQueryInfFileInformationW SetupQueryInfFileInformation; + alias SetupQueryInfOriginalFileInformationW SetupQueryInfOriginalFileInformation; + alias SetupQueryInfVersionInformationW SetupQueryInfVersionInformation; + alias SetupQuerySourceListW SetupQuerySourceList; + alias SetupQuerySpaceRequiredOnDriveW SetupQuerySpaceRequiredOnDrive; + alias SetupQueueCopyIndirectW SetupQueueCopyIndirect; + alias SetupQueueCopySectionW SetupQueueCopySection; + alias SetupQueueCopyW SetupQueueCopy; + alias SetupQueueDefaultCopyW SetupQueueDefaultCopy; + alias SetupQueueDeleteSectionW SetupQueueDeleteSection; + alias SetupQueueDeleteW SetupQueueDelete; + alias SetupQueueRenameSectionW SetupQueueRenameSection; + alias SetupQueueRenameW SetupQueueRename; + alias SetupRemoveFileLogEntryW SetupRemoveFileLogEntry; + alias SetupRemoveFromDiskSpaceListW SetupRemoveFromDiskSpaceList; + alias SetupRemoveFromSourceListW SetupRemoveFromSourceList; + alias SetupRemoveInstallSectionFromDiskSpaceListW SetupRemoveInstallSectionFromDiskSpaceList; + alias SetupRemoveSectionFromDiskSpaceListW SetupRemoveSectionFromDiskSpaceList; + alias SetupRenameErrorW SetupRenameError; + alias SetupScanFileQueueW SetupScanFileQueue; + alias SetupSetDirectoryIdExW SetupSetDirectoryIdEx; + alias SetupSetDirectoryIdW SetupSetDirectoryId; + alias SetupSetFileQueueAlternatePlatformW SetupSetFileQueueAlternatePlatform; + alias SetupSetPlatformPathOverrideW SetupSetPlatformPathOverride; + alias SetupSetSourceListW SetupSetSourceList; +} else { + alias PSP_FILE_CALLBACK_A PSP_FILE_CALLBACK; + alias SetupAddInstallSectionToDiskSpaceListA SetupAddInstallSectionToDiskSpaceList; + alias SetupAddSectionToDiskSpaceListA SetupAddSectionToDiskSpaceList; + alias SetupAddToDiskSpaceListA SetupAddToDiskSpaceList; + alias SetupAddToSourceListA SetupAddToSourceList; + alias SetupAdjustDiskSpaceListA SetupAdjustDiskSpaceList; + alias SetupBackupErrorA SetupBackupError; + alias SetupCommitFileQueueA SetupCommitFileQueue; + alias SetupCopyErrorA SetupCopyError; + alias SetupCopyOEMInfA SetupCopyOEMInf; + alias SetupCreateDiskSpaceListA SetupCreateDiskSpaceList; + alias SetupDecompressOrCopyFileA SetupDecompressOrCopyFile; + alias SetupDefaultQueueCallbackA SetupDefaultQueueCallback; + alias SetupDeleteErrorA SetupDeleteError; + alias SetupDiBuildClassInfoListExA SetupDiBuildClassInfoListEx; + alias SetupDiClassGuidsFromNameA SetupDiClassGuidsFromName; + alias SetupDiClassGuidsFromNameExA SetupDiClassGuidsFromNameEx; + alias SetupDiClassNameFromGuidA SetupDiClassNameFromGuid; + alias SetupDiClassNameFromGuidExA SetupDiClassNameFromGuidEx; + alias SetupDiCreateDeviceInfoA SetupDiCreateDeviceInfo; + alias SetupDiCreateDeviceInfoListExA SetupDiCreateDeviceInfoListEx; + alias SetupDiCreateDeviceInterfaceA SetupDiCreateDeviceInterface; + deprecated alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDevice; + alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateDeviceInterfaceRegKey; + deprecated alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKey; + alias SetupDiCreateDevRegKeyA SetupDiCreateDevRegKey; + alias SetupDiDeleteDeviceInterfaceData SetupDiDeleteInterfaceDeviceData; + alias SetupDiEnumDriverInfoA SetupDiEnumDriverInfo; + alias SetupDiGetActualSectionToInstallA SetupDiGetActualSectionToInstall; + alias SetupDiGetClassDescriptionA SetupDiGetClassDescription; + alias SetupDiGetClassDescriptionExA SetupDiGetClassDescriptionEx; + alias SetupDiGetClassDevPropertySheetsA SetupDiGetClassDevPropertySheets; + alias SetupDiGetClassDevsA SetupDiGetClassDevs; + alias SetupDiGetClassDevsExA SetupDiGetClassDevsEx; + alias SetupDiGetClassImageListExA SetupDiGetClassImageListEx; + alias SetupDiGetClassInstallParamsA SetupDiGetClassInstallParams; + alias SetupDiGetClassRegistryPropertyA SetupDiGetClassRegistryProperty; + alias SetupDiGetDeviceInfoListDetailA SetupDiGetDeviceInfoListDetail; + alias SetupDiGetDeviceInstallParamsA SetupDiGetDeviceInstallParams; + alias SetupDiGetDeviceInstanceIdA SetupDiGetDeviceInstanceId; + alias SetupDiGetDeviceInterfaceDetailA SetupDiGetDeviceInterfaceDetail; + deprecated alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetail; + alias SetupDiGetDeviceRegistryPropertyA SetupDiGetDeviceRegistryProperty; + alias SetupDiGetDriverInfoDetailA SetupDiGetDriverInfoDetail; + alias SetupDiGetDriverInstallParamsA SetupDiGetDriverInstallParams; + alias SetupDiGetHwProfileFriendlyNameA SetupDiGetHwProfileFriendlyName; + alias SetupDiGetHwProfileFriendlyNameExA SetupDiGetHwProfileFriendlyNameEx; + alias SetupDiGetHwProfileListExA SetupDiGetHwProfileListEx; + alias SetupDiGetINFClassA SetupDiGetINFClass; + alias SetupDiGetSelectedDriverA SetupDiGetSelectedDriver; + alias SetupDiInstallClassA SetupDiInstallClass; + alias SetupDiInstallClassExA SetupDiInstallClassEx; + alias SetupDiOpenClassRegKeyExA SetupDiOpenClassRegKeyEx; + alias SetupDiOpenDeviceInfoA SetupDiOpenDeviceInfo; + alias SetupDiOpenDeviceInterfaceA SetupDiOpenDeviceInterface; + deprecated alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDevice; + alias SetupDiSetClassInstallParamsA SetupDiSetClassInstallParams; + alias SetupDiSetClassRegistryPropertyA SetupDiSetClassRegistryProperty; + alias SetupDiSetDeviceInstallParamsA SetupDiSetDeviceInstallParams; + alias SetupDiSetDeviceRegistryPropertyA SetupDiSetDeviceRegistryProperty; + alias SetupDiSetDriverInstallParamsA SetupDiSetDriverInstallParams; + alias SetupDiSetSelectedDriverA SetupDiSetSelectedDriver; + alias SetupDuplicateDiskSpaceListA SetupDuplicateDiskSpaceList; + alias SetupFindFirstLineA SetupFindFirstLine; + alias SetupFindNextMatchLineA SetupFindNextMatchLine; + alias SetupFreeSourceListA SetupFreeSourceList; + alias SetupGetBackupInformationA SetupGetBackupInformation; + alias SetupGetFileCompressionInfoA SetupGetFileCompressionInfo; + alias SetupGetInfFileListA SetupGetInfFileList; + alias SetupGetInfInformationA SetupGetInfInformation; + alias SetupGetLineByIndexA SetupGetLineByIndex; + alias SetupGetLineCountA SetupGetLineCount; + alias SetupGetLineTextA SetupGetLineText; + alias SetupGetMultiSzFieldA SetupGetMultiSzField; + alias SetupGetSourceFileLocationA SetupGetSourceFileLocation; + alias SetupGetSourceFileSizeA SetupGetSourceFileSize; + alias SetupGetSourceInfoA SetupGetSourceInfo; + alias SetupGetStringFieldA SetupGetStringField; + alias SetupGetTargetPathA SetupGetTargetPath; + alias SetupInitializeFileLogA SetupInitializeFileLog; + alias SetupInstallFileA SetupInstallFile; + alias SetupInstallFileExA SetupInstallFileEx; + alias SetupInstallFilesFromInfSectionA SetupInstallFilesFromInfSection; + alias SetupInstallFromInfSectionA SetupInstallFromInfSection; + alias SetupInstallServicesFromInfSectionA SetupInstallServicesFromInfSection; + alias SetupInstallServicesFromInfSectionExA SetupInstallServicesFromInfSectionEx; + alias SetupIterateCabinetA SetupIterateCabinet; + alias SetupLogErrorA SetupLogError; + alias SetupLogFileA SetupLogFile; + alias SetupOpenAppendInfFileA SetupOpenAppendInfFile; + alias SetupOpenInfFileA SetupOpenInfFile; + alias SetupPromptForDiskA SetupPromptForDisk; + alias SetupQueryDrivesInDiskSpaceListA SetupQueryDrivesInDiskSpaceList; + alias SetupQueryFileLogA SetupQueryFileLog; + alias SetupQueryInfFileInformationA SetupQueryInfFileInformation; + alias SetupQueryInfOriginalFileInformationA SetupQueryInfOriginalFileInformation; + alias SetupQueryInfVersionInformationA SetupQueryInfVersionInformation; + alias SetupQuerySourceListA SetupQuerySourceList; + alias SetupQuerySpaceRequiredOnDriveA SetupQuerySpaceRequiredOnDrive; + alias SetupQueueCopyA SetupQueueCopy; + alias SetupQueueCopyIndirectA SetupQueueCopyIndirect; + alias SetupQueueCopySectionA SetupQueueCopySection; + alias SetupQueueDefaultCopyA SetupQueueDefaultCopy; + alias SetupQueueDeleteA SetupQueueDelete; + alias SetupQueueDeleteSectionA SetupQueueDeleteSection; + alias SetupQueueRenameA SetupQueueRename; + alias SetupQueueRenameSectionA SetupQueueRenameSection; + alias SetupRemoveFileLogEntryA SetupRemoveFileLogEntry; + alias SetupRemoveFromDiskSpaceListA SetupRemoveFromDiskSpaceList; + alias SetupRemoveFromSourceListA SetupRemoveFromSourceList; + alias SetupRemoveInstallSectionFromDiskSpaceListA SetupRemoveInstallSectionFromDiskSpaceList; + alias SetupRemoveSectionFromDiskSpaceListA SetupRemoveSectionFromDiskSpaceList; + alias SetupRenameErrorA SetupRenameError; + alias SetupScanFileQueueA SetupScanFileQueue; + alias SetupSetDirectoryIdA SetupSetDirectoryId; + alias SetupSetDirectoryIdExA SetupSetDirectoryIdEx; + alias SetupSetFileQueueAlternatePlatformA SetupSetFileQueueAlternatePlatform; + alias SetupSetPlatformPathOverrideA SetupSetPlatformPathOverride; + alias SetupSetSourceListA SetupSetSourceList; +} diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index e072de4ea9..73992fd3d2 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -1,417 +1,417 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_shellapi.d) - */ -module core.sys.windows.shellapi; -pragma(lib, "shell32"); - -private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.basetyps; - -enum : UINT { - ABE_LEFT, - ABE_TOP, - ABE_RIGHT, - ABE_BOTTOM // = 3 -} - -enum : UINT { - ABS_AUTOHIDE = 1, - ABS_ALWAYSONTOP -} - -const ULONG - SEE_MASK_CLASSNAME = 1, - SEE_MASK_CLASSKEY = 3, - SEE_MASK_IDLIST = 4, - SEE_MASK_INVOKEIDLIST = 12, - SEE_MASK_ICON = 0x000010, - SEE_MASK_HOTKEY = 0x000020, - SEE_MASK_NOCLOSEPROCESS = 0x000040, - SEE_MASK_CONNECTNETDRV = 0x000080, - SEE_MASK_FLAG_DDEWAIT = 0x000100, - SEE_MASK_DOENVSUBST = 0x000200, - SEE_MASK_FLAG_NO_UI = 0x000400, - SEE_MASK_NO_CONSOLE = 0x008000, - SEE_MASK_UNICODE = 0x010000, - SEE_MASK_ASYNCOK = 0x100000, - SEE_MASK_HMONITOR = 0x200000; - -enum : DWORD { - ABM_NEW, - ABM_REMOVE, - ABM_QUERYPOS, - ABM_SETPOS, - ABM_GETSTATE, - ABM_GETTASKBARPOS, - ABM_ACTIVATE, - ABM_GETAUTOHIDEBAR, - ABM_SETAUTOHIDEBAR, - ABM_WINDOWPOSCHANGED // = 9 -} - -static if (_WIN32_WINNT >= 0x501) { - const DWORD ABM_SETSTATE = 10; -} - -enum : UINT { - ABN_STATECHANGE, - ABN_POSCHANGED, - ABN_FULLSCREENAPP, - ABN_WINDOWARRANGE -} - -enum : DWORD { - NIM_ADD, - NIM_MODIFY, - NIM_DELETE -} - -static if (_WIN32_IE >= 0x500) { - const NOTIFYICON_VERSION = 3; - - enum : DWORD { - NIM_SETFOCUS = 3, - NIM_SETVERSION - } -} - -const UINT - NIF_MESSAGE = 1, - NIF_ICON = 2, - NIF_TIP = 4, - NIF_STATE = 8; - -static if (_WIN32_IE >= 0x500) { - const UINT NIF_INFO = 0x00000010; -} - -static if (_WIN32_IE >= 0x600) { - const UINT NIF_GUID = 0x00000020; -} - -static if (_WIN32_IE >= 0x500) { - enum : DWORD { - NIIF_NONE, - NIIF_INFO, - NIIF_WARNING, - NIIF_ERROR - } -} - -static if (_WIN32_IE >= 0x600) { - enum : DWORD { - NIIF_ICON_MASK = 15, - NIIF_NOSOUND - } -} - -const DWORD - NIS_HIDDEN = 1, - NIS_SHAREDICON = 2; - -const HINSTANCE - SE_ERR_FNF = cast(HINSTANCE) 2, - SE_ERR_PNF = cast(HINSTANCE) 3, - SE_ERR_ACCESSDENIED = cast(HINSTANCE) 5, - SE_ERR_OOM = cast(HINSTANCE) 8, - SE_ERR_DLLNOTFOUND = cast(HINSTANCE) 32, - SE_ERR_SHARE = cast(HINSTANCE) 26, - SE_ERR_ASSOCINCOMPLETE = cast(HINSTANCE) 27, - SE_ERR_DDETIMEOUT = cast(HINSTANCE) 28, - SE_ERR_DDEFAIL = cast(HINSTANCE) 29, - SE_ERR_DDEBUSY = cast(HINSTANCE) 30, - SE_ERR_NOASSOC = cast(HINSTANCE) 31; - -enum : UINT { - FO_MOVE = 1, - FO_COPY, - FO_DELETE, - FO_RENAME -} - -const FILEOP_FLAGS - FOF_MULTIDESTFILES = 0x0001, - FOF_CONFIRMMOUSE = 0x0002, - FOF_SILENT = 0x0004, - FOF_RENAMEONCOLLISION = 0x0008, - FOF_NOCONFIRMATION = 0x0010, - FOF_WANTMAPPINGHANDLE = 0x0020, - FOF_ALLOWUNDO = 0x0040, - FOF_FILESONLY = 0x0080, - FOF_SIMPLEPROGRESS = 0x0100, - FOF_NOCONFIRMMKDIR = 0x0200, - FOF_NOERRORUI = 0x0400, - FOF_NOCOPYSECURITYATTRIBS = 0x0800; - -// these are not documented on the MSDN site -enum { - PO_DELETE = 19, - PO_RENAME = 20, - PO_PORTCHANGE = 32, - PO_REN_PORT = 52 -} - -const UINT - SHGFI_LARGEICON = 0x000000, - SHGFI_SMALLICON = 0x000001, - SHGFI_OPENICON = 0x000002, - SHGFI_SHELLICONSIZE = 0x000004, - SHGFI_PIDL = 0x000008, - SHGFI_USEFILEATTRIBUTES = 0x000010, - SHGFI_ICON = 0x000100, - SHGFI_DISPLAYNAME = 0x000200, - SHGFI_TYPENAME = 0x000400, - SHGFI_ATTRIBUTES = 0x000800, - SHGFI_ICONLOCATION = 0x001000, - SHGFI_EXETYPE = 0x002000, - SHGFI_SYSICONINDEX = 0x004000, - SHGFI_LINKOVERLAY = 0x008000, - SHGFI_SELECTED = 0x010000, - SHGFI_ATTR_SPECIFIED = 0x020000; - -static if (_WIN32_IE >= 0x500) { - const uint - SHGFI_ADDOVERLAYS = 0x000020, - SHGFI_OVERLAYINDEX = 0x000040; -} - -const SHERB_NOCONFIRMATION = 1; -const SHERB_NOPROGRESSUI = 2; -const SHERB_NOSOUND = 4; - -alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS; -mixin DECLARE_HANDLE!("HDROP"); - -align(2): - -struct APPBARDATA { - DWORD cbSize = APPBARDATA.sizeof; - HWND hWnd; - UINT uCallbackMessage; - UINT uEdge; - RECT rc; - LPARAM lParam; -} -alias APPBARDATA* PAPPBARDATA; - -struct NOTIFYICONDATAA { - DWORD cbSize = NOTIFYICONDATAA.sizeof; - HWND hWnd; - UINT uID; - UINT uFlags; - UINT uCallbackMessage; - HICON hIcon; - static if (_WIN32_IE >= 0x500) { - CHAR[128] szTip; - DWORD dwState; - DWORD dwStateMask; - CHAR[256] szInfo; - union { - UINT uTimeout; - UINT uVersion; - } - CHAR[64] szInfoTitle; - DWORD dwInfoFlags; - } else { - CHAR[64] szTip; - } - static if (_WIN32_IE >= 0x600) { - GUID guidItem; - } -} -alias NOTIFYICONDATAA* PNOTIFYICONDATAA; - -struct NOTIFYICONDATAW { - DWORD cbSize = NOTIFYICONDATAW.sizeof; - HWND hWnd; - UINT uID; - UINT uFlags; - UINT uCallbackMessage; - HICON hIcon; - static if (_WIN32_IE >= 0x500) { - WCHAR[128] szTip; - DWORD dwState; - DWORD dwStateMask; - WCHAR[256] szInfo; - union { - UINT uTimeout; - UINT uVersion; - } - WCHAR[64] szInfoTitle; - DWORD dwInfoFlags; - } else { - WCHAR[64] szTip; - } - static if (_WIN32_IE >= 0x600) { - GUID guidItem; - } -} -alias NOTIFYICONDATAW* PNOTIFYICONDATAW; - -struct SHELLEXECUTEINFOA { - DWORD cbSize = SHELLEXECUTEINFOA.sizeof; - ULONG fMask; - HWND hwnd; - LPCSTR lpVerb; - LPCSTR lpFile; - LPCSTR lpParameters; - LPCSTR lpDirectory; - int nShow; - HINSTANCE hInstApp; - PVOID lpIDList; - LPCSTR lpClass; - HKEY hkeyClass; - DWORD dwHotKey; - HANDLE hIcon; - HANDLE hProcess; -} -alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA; - -struct SHELLEXECUTEINFOW { - DWORD cbSize = SHELLEXECUTEINFOW.sizeof; - ULONG fMask; - HWND hwnd; - LPCWSTR lpVerb; - LPCWSTR lpFile; - LPCWSTR lpParameters; - LPCWSTR lpDirectory; - int nShow; - HINSTANCE hInstApp; - PVOID lpIDList; - LPCWSTR lpClass; - HKEY hkeyClass; - DWORD dwHotKey; - HANDLE hIcon; - HANDLE hProcess; -} -alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; - -struct SHFILEOPSTRUCTA { - HWND hwnd; - UINT wFunc; - LPCSTR pFrom; - LPCSTR pTo; - FILEOP_FLAGS fFlags; - BOOL fAnyOperationsAborted; - PVOID hNameMappings; - LPCSTR lpszProgressTitle; -} -alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; - -struct SHFILEOPSTRUCTW { - HWND hwnd; - UINT wFunc; - LPCWSTR pFrom; - LPCWSTR pTo; - FILEOP_FLAGS fFlags; - BOOL fAnyOperationsAborted; - PVOID hNameMappings; - LPCWSTR lpszProgressTitle; -} -alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; - -struct SHFILEINFOA { - HICON hIcon; - int iIcon; - DWORD dwAttributes; - CHAR[MAX_PATH] szDisplayName; - CHAR[80] szTypeName; -} - -struct SHFILEINFOW { - HICON hIcon; - int iIcon; - DWORD dwAttributes; - WCHAR[MAX_PATH] szDisplayName; - WCHAR[80] szTypeName; -} - -align(1) struct SHQUERYRBINFO { - DWORD cbSize = SHQUERYRBINFO.sizeof; - long i64Size; - long i64NumItems; -} -alias SHQUERYRBINFO* LPSHQUERYRBINFO; - -extern (Windows) { - LPWSTR* CommandLineToArgvW(LPCWSTR, int*); - void DragAcceptFiles(HWND, BOOL); - void DragFinish(HDROP); - UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT); - UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT); - BOOL DragQueryPoint(HDROP, LPPOINT); - HICON DuplicateIcon(HINSTANCE, HICON); - HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD); - HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD); - HICON ExtractIconA(HINSTANCE, LPCSTR, UINT); - HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT); - UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT); - UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT); - HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR); - HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR); - UINT SHAppBarMessage(DWORD, PAPPBARDATA); - BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA); - BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW); - int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON); - int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON); - HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT); - HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT); - BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA); - BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW); - int SHFileOperationA(LPSHFILEOPSTRUCTA); - int SHFileOperationW(LPSHFILEOPSTRUCTW); - void SHFreeNameMappings(HANDLE); - DWORD SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); - DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); - HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); - HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); - HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD); - HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD); -} - -version (Unicode) { - alias NOTIFYICONDATAW NOTIFYICONDATA; - alias SHELLEXECUTEINFOW SHELLEXECUTEINFO; - alias SHFILEOPSTRUCTW SHFILEOPSTRUCT; - alias SHFILEINFOW SHFILEINFO; - alias DragQueryFileW DragQueryFile; - alias ExtractAssociatedIconW ExtractAssociatedIcon; - alias ExtractIconW ExtractIcon; - alias ExtractIconExW ExtractIconEx; - alias FindExecutableW FindExecutable; - alias Shell_NotifyIconW Shell_NotifyIcon; - alias ShellAboutW ShellAbout; - alias ShellExecuteW ShellExecute; - alias ShellExecuteExW ShellExecuteEx; - alias SHFileOperationW SHFileOperation; - alias SHGetFileInfoW SHGetFileInfo; - alias SHQueryRecycleBinW SHQueryRecycleBin; - alias SHEmptyRecycleBinW SHEmptyRecycleBin; -} else { - alias NOTIFYICONDATAA NOTIFYICONDATA; - alias SHELLEXECUTEINFOA SHELLEXECUTEINFO; - alias SHFILEOPSTRUCTA SHFILEOPSTRUCT; - alias SHFILEINFOA SHFILEINFO; - alias DragQueryFileA DragQueryFile; - alias ExtractAssociatedIconA ExtractAssociatedIcon; - alias ExtractIconA ExtractIcon; - alias ExtractIconExA ExtractIconEx; - alias FindExecutableA FindExecutable; - alias Shell_NotifyIconA Shell_NotifyIcon; - alias ShellAboutA ShellAbout; - alias ShellExecuteA ShellExecute; - alias ShellExecuteExA ShellExecuteEx; - alias SHFileOperationA SHFileOperation; - alias SHGetFileInfoA SHGetFileInfo; - alias SHQueryRecycleBinA SHQueryRecycleBin; - alias SHEmptyRecycleBinA SHEmptyRecycleBin; -} - -alias NOTIFYICONDATA* PNOTIFYICONDATA; -alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO; -alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_shellapi.d) + */ +module core.sys.windows.shellapi; +pragma(lib, "shell32"); + +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.basetyps; + +enum : UINT { + ABE_LEFT, + ABE_TOP, + ABE_RIGHT, + ABE_BOTTOM // = 3 +} + +enum : UINT { + ABS_AUTOHIDE = 1, + ABS_ALWAYSONTOP +} + +const ULONG + SEE_MASK_CLASSNAME = 1, + SEE_MASK_CLASSKEY = 3, + SEE_MASK_IDLIST = 4, + SEE_MASK_INVOKEIDLIST = 12, + SEE_MASK_ICON = 0x000010, + SEE_MASK_HOTKEY = 0x000020, + SEE_MASK_NOCLOSEPROCESS = 0x000040, + SEE_MASK_CONNECTNETDRV = 0x000080, + SEE_MASK_FLAG_DDEWAIT = 0x000100, + SEE_MASK_DOENVSUBST = 0x000200, + SEE_MASK_FLAG_NO_UI = 0x000400, + SEE_MASK_NO_CONSOLE = 0x008000, + SEE_MASK_UNICODE = 0x010000, + SEE_MASK_ASYNCOK = 0x100000, + SEE_MASK_HMONITOR = 0x200000; + +enum : DWORD { + ABM_NEW, + ABM_REMOVE, + ABM_QUERYPOS, + ABM_SETPOS, + ABM_GETSTATE, + ABM_GETTASKBARPOS, + ABM_ACTIVATE, + ABM_GETAUTOHIDEBAR, + ABM_SETAUTOHIDEBAR, + ABM_WINDOWPOSCHANGED // = 9 +} + +static if (_WIN32_WINNT >= 0x501) { + const DWORD ABM_SETSTATE = 10; +} + +enum : UINT { + ABN_STATECHANGE, + ABN_POSCHANGED, + ABN_FULLSCREENAPP, + ABN_WINDOWARRANGE +} + +enum : DWORD { + NIM_ADD, + NIM_MODIFY, + NIM_DELETE +} + +static if (_WIN32_IE >= 0x500) { + const NOTIFYICON_VERSION = 3; + + enum : DWORD { + NIM_SETFOCUS = 3, + NIM_SETVERSION + } +} + +const UINT + NIF_MESSAGE = 1, + NIF_ICON = 2, + NIF_TIP = 4, + NIF_STATE = 8; + +static if (_WIN32_IE >= 0x500) { + const UINT NIF_INFO = 0x00000010; +} + +static if (_WIN32_IE >= 0x600) { + const UINT NIF_GUID = 0x00000020; +} + +static if (_WIN32_IE >= 0x500) { + enum : DWORD { + NIIF_NONE, + NIIF_INFO, + NIIF_WARNING, + NIIF_ERROR + } +} + +static if (_WIN32_IE >= 0x600) { + enum : DWORD { + NIIF_ICON_MASK = 15, + NIIF_NOSOUND + } +} + +const DWORD + NIS_HIDDEN = 1, + NIS_SHAREDICON = 2; + +const HINSTANCE + SE_ERR_FNF = cast(HINSTANCE) 2, + SE_ERR_PNF = cast(HINSTANCE) 3, + SE_ERR_ACCESSDENIED = cast(HINSTANCE) 5, + SE_ERR_OOM = cast(HINSTANCE) 8, + SE_ERR_DLLNOTFOUND = cast(HINSTANCE) 32, + SE_ERR_SHARE = cast(HINSTANCE) 26, + SE_ERR_ASSOCINCOMPLETE = cast(HINSTANCE) 27, + SE_ERR_DDETIMEOUT = cast(HINSTANCE) 28, + SE_ERR_DDEFAIL = cast(HINSTANCE) 29, + SE_ERR_DDEBUSY = cast(HINSTANCE) 30, + SE_ERR_NOASSOC = cast(HINSTANCE) 31; + +enum : UINT { + FO_MOVE = 1, + FO_COPY, + FO_DELETE, + FO_RENAME +} + +const FILEOP_FLAGS + FOF_MULTIDESTFILES = 0x0001, + FOF_CONFIRMMOUSE = 0x0002, + FOF_SILENT = 0x0004, + FOF_RENAMEONCOLLISION = 0x0008, + FOF_NOCONFIRMATION = 0x0010, + FOF_WANTMAPPINGHANDLE = 0x0020, + FOF_ALLOWUNDO = 0x0040, + FOF_FILESONLY = 0x0080, + FOF_SIMPLEPROGRESS = 0x0100, + FOF_NOCONFIRMMKDIR = 0x0200, + FOF_NOERRORUI = 0x0400, + FOF_NOCOPYSECURITYATTRIBS = 0x0800; + +// these are not documented on the MSDN site +enum { + PO_DELETE = 19, + PO_RENAME = 20, + PO_PORTCHANGE = 32, + PO_REN_PORT = 52 +} + +const UINT + SHGFI_LARGEICON = 0x000000, + SHGFI_SMALLICON = 0x000001, + SHGFI_OPENICON = 0x000002, + SHGFI_SHELLICONSIZE = 0x000004, + SHGFI_PIDL = 0x000008, + SHGFI_USEFILEATTRIBUTES = 0x000010, + SHGFI_ICON = 0x000100, + SHGFI_DISPLAYNAME = 0x000200, + SHGFI_TYPENAME = 0x000400, + SHGFI_ATTRIBUTES = 0x000800, + SHGFI_ICONLOCATION = 0x001000, + SHGFI_EXETYPE = 0x002000, + SHGFI_SYSICONINDEX = 0x004000, + SHGFI_LINKOVERLAY = 0x008000, + SHGFI_SELECTED = 0x010000, + SHGFI_ATTR_SPECIFIED = 0x020000; + +static if (_WIN32_IE >= 0x500) { + const uint + SHGFI_ADDOVERLAYS = 0x000020, + SHGFI_OVERLAYINDEX = 0x000040; +} + +const SHERB_NOCONFIRMATION = 1; +const SHERB_NOPROGRESSUI = 2; +const SHERB_NOSOUND = 4; + +alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS; +mixin DECLARE_HANDLE!("HDROP"); + +align(2): + +struct APPBARDATA { + DWORD cbSize = APPBARDATA.sizeof; + HWND hWnd; + UINT uCallbackMessage; + UINT uEdge; + RECT rc; + LPARAM lParam; +} +alias APPBARDATA* PAPPBARDATA; + +struct NOTIFYICONDATAA { + DWORD cbSize = NOTIFYICONDATAA.sizeof; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + static if (_WIN32_IE >= 0x500) { + CHAR[128] szTip; + DWORD dwState; + DWORD dwStateMask; + CHAR[256] szInfo; + union { + UINT uTimeout; + UINT uVersion; + } + CHAR[64] szInfoTitle; + DWORD dwInfoFlags; + } else { + CHAR[64] szTip; + } + static if (_WIN32_IE >= 0x600) { + GUID guidItem; + } +} +alias NOTIFYICONDATAA* PNOTIFYICONDATAA; + +struct NOTIFYICONDATAW { + DWORD cbSize = NOTIFYICONDATAW.sizeof; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + static if (_WIN32_IE >= 0x500) { + WCHAR[128] szTip; + DWORD dwState; + DWORD dwStateMask; + WCHAR[256] szInfo; + union { + UINT uTimeout; + UINT uVersion; + } + WCHAR[64] szInfoTitle; + DWORD dwInfoFlags; + } else { + WCHAR[64] szTip; + } + static if (_WIN32_IE >= 0x600) { + GUID guidItem; + } +} +alias NOTIFYICONDATAW* PNOTIFYICONDATAW; + +struct SHELLEXECUTEINFOA { + DWORD cbSize = SHELLEXECUTEINFOA.sizeof; + ULONG fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpFile; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + PVOID lpIDList; + LPCSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; + HANDLE hIcon; + HANDLE hProcess; +} +alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA; + +struct SHELLEXECUTEINFOW { + DWORD cbSize = SHELLEXECUTEINFOW.sizeof; + ULONG fMask; + HWND hwnd; + LPCWSTR lpVerb; + LPCWSTR lpFile; + LPCWSTR lpParameters; + LPCWSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + PVOID lpIDList; + LPCWSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; + HANDLE hIcon; + HANDLE hProcess; +} +alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; + +struct SHFILEOPSTRUCTA { + HWND hwnd; + UINT wFunc; + LPCSTR pFrom; + LPCSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + PVOID hNameMappings; + LPCSTR lpszProgressTitle; +} +alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; + +struct SHFILEOPSTRUCTW { + HWND hwnd; + UINT wFunc; + LPCWSTR pFrom; + LPCWSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + PVOID hNameMappings; + LPCWSTR lpszProgressTitle; +} +alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; + +struct SHFILEINFOA { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + CHAR[MAX_PATH] szDisplayName; + CHAR[80] szTypeName; +} + +struct SHFILEINFOW { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + WCHAR[MAX_PATH] szDisplayName; + WCHAR[80] szTypeName; +} + +align(1) struct SHQUERYRBINFO { + DWORD cbSize = SHQUERYRBINFO.sizeof; + long i64Size; + long i64NumItems; +} +alias SHQUERYRBINFO* LPSHQUERYRBINFO; + +extern (Windows) { + LPWSTR* CommandLineToArgvW(LPCWSTR, int*); + void DragAcceptFiles(HWND, BOOL); + void DragFinish(HDROP); + UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT); + UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT); + BOOL DragQueryPoint(HDROP, LPPOINT); + HICON DuplicateIcon(HINSTANCE, HICON); + HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD); + HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD); + HICON ExtractIconA(HINSTANCE, LPCSTR, UINT); + HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT); + UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT); + UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT); + HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR); + HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR); + UINT SHAppBarMessage(DWORD, PAPPBARDATA); + BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA); + BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW); + int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON); + int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON); + HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT); + HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT); + BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA); + BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW); + int SHFileOperationA(LPSHFILEOPSTRUCTA); + int SHFileOperationW(LPSHFILEOPSTRUCTW); + void SHFreeNameMappings(HANDLE); + DWORD SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); + DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); + HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); + HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); + HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD); + HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD); +} + +version (Unicode) { + alias NOTIFYICONDATAW NOTIFYICONDATA; + alias SHELLEXECUTEINFOW SHELLEXECUTEINFO; + alias SHFILEOPSTRUCTW SHFILEOPSTRUCT; + alias SHFILEINFOW SHFILEINFO; + alias DragQueryFileW DragQueryFile; + alias ExtractAssociatedIconW ExtractAssociatedIcon; + alias ExtractIconW ExtractIcon; + alias ExtractIconExW ExtractIconEx; + alias FindExecutableW FindExecutable; + alias Shell_NotifyIconW Shell_NotifyIcon; + alias ShellAboutW ShellAbout; + alias ShellExecuteW ShellExecute; + alias ShellExecuteExW ShellExecuteEx; + alias SHFileOperationW SHFileOperation; + alias SHGetFileInfoW SHGetFileInfo; + alias SHQueryRecycleBinW SHQueryRecycleBin; + alias SHEmptyRecycleBinW SHEmptyRecycleBin; +} else { + alias NOTIFYICONDATAA NOTIFYICONDATA; + alias SHELLEXECUTEINFOA SHELLEXECUTEINFO; + alias SHFILEOPSTRUCTA SHFILEOPSTRUCT; + alias SHFILEINFOA SHFILEINFO; + alias DragQueryFileA DragQueryFile; + alias ExtractAssociatedIconA ExtractAssociatedIcon; + alias ExtractIconA ExtractIcon; + alias ExtractIconExA ExtractIconEx; + alias FindExecutableA FindExecutable; + alias Shell_NotifyIconA Shell_NotifyIcon; + alias ShellAboutA ShellAbout; + alias ShellExecuteA ShellExecute; + alias ShellExecuteExA ShellExecuteEx; + alias SHFileOperationA SHFileOperation; + alias SHGetFileInfoA SHGetFileInfo; + alias SHQueryRecycleBinA SHQueryRecycleBin; + alias SHEmptyRecycleBinA SHEmptyRecycleBin; +} + +alias NOTIFYICONDATA* PNOTIFYICONDATA; +alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO; +alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT; diff --git a/src/core/sys/windows/shldisp.d b/src/core/sys/windows/shldisp.d index 6d9cfe396f..3021d685aa 100644 --- a/src/core/sys/windows/shldisp.d +++ b/src/core/sys/windows/shldisp.d @@ -1,26 +1,26 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_shldisp.d) - */ -module core.sys.windows.shldisp; - -private import core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; - -// options for IAutoComplete2 -const DWORD ACO_AUTOSUGGEST = 0x01; - -interface IAutoComplete : IUnknown { - HRESULT Init(HWND, IUnknown, LPCOLESTR, LPCOLESTR); - HRESULT Enable(BOOL); -} -alias IAutoComplete LPAUTOCOMPLETE; - -interface IAutoComplete2 : IAutoComplete { - HRESULT SetOptions(DWORD); - HRESULT GetOptions(DWORD*); -} -alias IAutoComplete2 LPAUTOCOMPLETE2; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_shldisp.d) + */ +module core.sys.windows.shldisp; + +private import core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; + +// options for IAutoComplete2 +const DWORD ACO_AUTOSUGGEST = 0x01; + +interface IAutoComplete : IUnknown { + HRESULT Init(HWND, IUnknown, LPCOLESTR, LPCOLESTR); + HRESULT Enable(BOOL); +} +alias IAutoComplete LPAUTOCOMPLETE; + +interface IAutoComplete2 : IAutoComplete { + HRESULT SetOptions(DWORD); + HRESULT GetOptions(DWORD*); +} +alias IAutoComplete2 LPAUTOCOMPLETE2; diff --git a/src/core/sys/windows/shlguid.d b/src/core/sys/windows/shlguid.d index 480964896c..d980842cb3 100644 --- a/src/core/sys/windows/shlguid.d +++ b/src/core/sys/windows/shlguid.d @@ -1,17 +1,17 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_shlguid.d) - */ -module core.sys.windows.shlguid; - -private import core.sys.windows.basetyps, core.sys.windows.w32api; - -// FIXME: clean up Windows version support - -// I think this is just a helper macro for other win32 headers? -//MACRO #define DEFINE_SHLGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) - +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_shlguid.d) + */ +module core.sys.windows.shlguid; + +private import core.sys.windows.basetyps, core.sys.windows.w32api; + +// FIXME: clean up Windows version support + +// I think this is just a helper macro for other win32 headers? +//MACRO #define DEFINE_SHLGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) + diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index 332d2be914..bcc6e15eea 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -1,1352 +1,1352 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 4.0 - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_shlobj.d) - */ -module core.sys.windows.shlobj; -pragma(lib, "shell32"); - -// TODO: fix bitfields -// TODO: CMIC_VALID_SEE_FLAGS -// SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K - -import core.sys.windows.commctrl, core.sys.windows.ole2, core.sys.windows.shlguid, core.sys.windows.shellapi; -private import core.sys.windows.prsht, core.sys.windows.unknwn, core.sys.windows.w32api, core.sys.windows.winbase, - core.sys.windows.winnt, core.sys.windows.winuser, core.sys.windows.wtypes, core.sys.windows.objfwd, core.sys.windows.objidl; -private import core.sys.windows.winnetwk; // for NETRESOURCE -private import core.sys.windows.oaidl : VARIANT; - - -// FIXME: clean up Windows version support - -align(1): - -const BIF_RETURNONLYFSDIRS = 1; -const BIF_DONTGOBELOWDOMAIN = 2; -const BIF_STATUSTEXT = 4; -const BIF_RETURNFSANCESTORS = 8; -const BIF_EDITBOX = 16; -const BIF_VALIDATE = 32; -const BIF_NEWDIALOGSTYLE = 64; -const BIF_BROWSEINCLUDEURLS = 128; -const BIF_USENEWUI = BIF_EDITBOX | BIF_NEWDIALOGSTYLE; -const BIF_BROWSEFORCOMPUTER = 0x1000; -const BIF_BROWSEFORPRINTER = 0x2000; -const BIF_BROWSEINCLUDEFILES = 0x4000; -const BIF_SHAREABLE = 0x8000; -const BFFM_INITIALIZED = 1; -const BFFM_SELCHANGED = 2; -const BFFM_VALIDATEFAILEDA = 3; -const BFFM_VALIDATEFAILEDW = 4; -const BFFM_SETSTATUSTEXTA = WM_USER + 100; -const BFFM_ENABLEOK = WM_USER + 101; -const BFFM_SETSELECTIONA = WM_USER + 102; -const BFFM_SETSELECTIONW = WM_USER + 103; -const BFFM_SETSTATUSTEXTW = WM_USER + 104; -const BFFM_SETOKTEXT = WM_USER + 105; -const BFFM_SETEXPANDED = WM_USER + 106; - -version(Unicode) { - alias BFFM_SETSTATUSTEXTW BFFM_SETSTATUSTEXT; - alias BFFM_SETSELECTIONW BFFM_SETSELECTION; - alias BFFM_VALIDATEFAILEDW BFFM_VALIDATEFAILED; -} else { - alias BFFM_SETSTATUSTEXTA BFFM_SETSTATUSTEXT; - alias BFFM_SETSELECTIONA BFFM_SETSELECTION; - alias BFFM_VALIDATEFAILEDA BFFM_VALIDATEFAILED; -} - -const DVASPECT_SHORTNAME = 2; - -enum SHARD { - SHARD_PIDL = 1, - SHARD_PATHA, - SHARD_PATHW, - SHARD_APPIDINFO, - SHARD_APPIDINFOIDLIST, - SHARD_LINK, - SHARD_APPIDINFOLINK, - SHARD_SHELLITEM, // = 8 - SHARD_PATH = (_WIN32_UNICODE ? SHARD_PATHW : SHARD_PATHA) -} - -const SHCNE_RENAMEITEM = 1; -const SHCNE_CREATE = 2; -const SHCNE_DELETE = 4; -const SHCNE_MKDIR = 8; -const SHCNE_RMDIR = 16; -const SHCNE_MEDIAINSERTED = 32; -const SHCNE_MEDIAREMOVED = 64; -const SHCNE_DRIVEREMOVED = 128; -const SHCNE_DRIVEADD = 256; -const SHCNE_NETSHARE = 512; -const SHCNE_NETUNSHARE = 1024; -const SHCNE_ATTRIBUTES = 2048; -const SHCNE_UPDATEDIR = 4096; -const SHCNE_UPDATEITEM = 8192; -const SHCNE_SERVERDISCONNECT = 16384; -const SHCNE_UPDATEIMAGE = 32768; -const SHCNE_DRIVEADDGUI = 65536; -const SHCNE_RENAMEFOLDER = 0x20000; -const SHCNE_FREESPACE = 0x40000; -const SHCNE_ASSOCCHANGED = 0x8000000; -const SHCNE_DISKEVENTS = 0x2381F; -const SHCNE_GLOBALEVENTS = 0xC0581E0; -const SHCNE_ALLEVENTS = 0x7FFFFFFF; -const SHCNE_INTERRUPT = 0x80000000; - -const SHCNF_IDLIST = 0; -const SHCNF_PATHA = 1; -const SHCNF_PRINTERA = 2; -const SHCNF_DWORD = 3; -const SHCNF_PATHW = 5; -const SHCNF_PRINTERW = 6; -const SHCNF_TYPE = 0xFF; -const SHCNF_FLUSH = 0x1000; -const SHCNF_FLUSHNOWAIT = 0x2000; - -version(Unicode) { - alias SHCNF_PATHW SHCNF_PATH; - alias SHCNF_PRINTERW SHCNF_PRINTER; -} else { - alias SHCNF_PATHA SHCNF_PATH; - alias SHCNF_PRINTERA SHCNF_PRINTER; -} - -enum SFGAOF : DWORD { - SFGAO_CANCOPY = DROPEFFECT.DROPEFFECT_COPY, - SFGAO_CANMOVE = DROPEFFECT.DROPEFFECT_MOVE, - SFGAO_CANLINK = DROPEFFECT.DROPEFFECT_LINK, - SFGAO_CANRENAME = 0x00000010L, - SFGAO_CANDELETE = 0x00000020L, - SFGAO_HASPROPSHEET = 0x00000040L, - SFGAO_DROPTARGET = 0x00000100L, - SFGAO_CAPABILITYMASK = 0x00000177L, - SFGAO_ISSLOW = 0x00004000L, - SFGAO_GHOSTED = 0x00008000L, - SFGAO_LINK = 0x00010000L, - SFGAO_SHARE = 0x00020000L, - SFGAO_READONLY = 0x00040000L, - SFGAO_HIDDEN = 0x00080000L, - SFGAO_DISPLAYATTRMASK = (SFGAO_ISSLOW | SFGAO_GHOSTED | SFGAO_LINK - | SFGAO_SHARE | SFGAO_READONLY | SFGAO_HIDDEN), - SFGAO_FILESYSANCESTOR = 0x10000000L, - SFGAO_FOLDER = 0x20000000L, - SFGAO_FILESYSTEM = 0x40000000L, - SFGAO_HASSUBFOLDER = 0x80000000L, - SFGAO_CONTENTSMASK = 0x80000000L, - SFGAO_VALIDATE = 0x01000000L, - SFGAO_REMOVABLE = 0x02000000L, - SFGAO_COMPRESSED = 0x04000000L -} -const STRRET_WSTR = 0; -const STRRET_OFFSET = 1; -const STRRET_CSTR = 2; - -enum { - SHGDFIL_FINDDATA = 1, - SHGDFIL_NETRESOURCE, - SHGDFIL_DESCRIPTIONID -} - -enum { - SHDID_ROOT_REGITEM = 1, - SHDID_FS_FILE, - SHDID_FS_DIRECTORY, - SHDID_FS_OTHER, - SHDID_COMPUTER_DRIVE35, - SHDID_COMPUTER_DRIVE525, - SHDID_COMPUTER_REMOVABLE, - SHDID_COMPUTER_FIXED, - SHDID_COMPUTER_NETDRIVE, - SHDID_COMPUTER_CDROM, - SHDID_COMPUTER_RAMDISK, - SHDID_COMPUTER_OTHER, - SHDID_NET_DOMAIN, - SHDID_NET_SERVER, - SHDID_NET_SHARE, - SHDID_NET_RESTOFNET, - SHDID_NET_OTHER -} - -const TCHAR[] REGSTR_PATH_EXPLORER = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"; -const TCHAR[] REGSTR_PATH_SPECIAL_FOLDERS=REGSTR_PATH_EXPLORER ~ "\\Shell Folders"; - -enum { - CSIDL_DESKTOP = 0, - CSIDL_INTERNET, - CSIDL_PROGRAMS, - CSIDL_CONTROLS, - CSIDL_PRINTERS, - CSIDL_PERSONAL, - CSIDL_FAVORITES, - CSIDL_STARTUP, - CSIDL_RECENT, - CSIDL_SENDTO, - CSIDL_BITBUCKET, - CSIDL_STARTMENU, // = 11 - CSIDL_MYMUSIC = 13, - CSIDL_MYVIDEO, // = 14 - CSIDL_DESKTOPDIRECTORY = 16, - CSIDL_DRIVES, - CSIDL_NETWORK, - CSIDL_NETHOOD, - CSIDL_FONTS, - CSIDL_TEMPLATES, - CSIDL_COMMON_STARTMENU, - CSIDL_COMMON_PROGRAMS, - CSIDL_COMMON_STARTUP, - CSIDL_COMMON_DESKTOPDIRECTORY, - CSIDL_APPDATA, - CSIDL_PRINTHOOD, - CSIDL_LOCAL_APPDATA, - CSIDL_ALTSTARTUP, - CSIDL_COMMON_ALTSTARTUP, - CSIDL_COMMON_FAVORITES, - CSIDL_INTERNET_CACHE, - CSIDL_COOKIES, - CSIDL_HISTORY, - CSIDL_COMMON_APPDATA, - CSIDL_WINDOWS, - CSIDL_SYSTEM, - CSIDL_PROGRAM_FILES, - CSIDL_MYPICTURES, - CSIDL_PROFILE, - CSIDL_SYSTEMX86, - CSIDL_PROGRAM_FILESX86, - CSIDL_PROGRAM_FILES_COMMON, - CSIDL_PROGRAM_FILES_COMMONX86, - CSIDL_COMMON_TEMPLATES, - CSIDL_COMMON_DOCUMENTS, - CSIDL_COMMON_ADMINTOOLS, - CSIDL_ADMINTOOLS, - CSIDL_CONNECTIONS, // = 49 - CSIDL_COMMON_MUSIC = 53, - CSIDL_COMMON_PICTURES, - CSIDL_COMMON_VIDEO, - CSIDL_RESOURCES, - CSIDL_RESOURCES_LOCALIZED, - CSIDL_COMMON_OEM_LINKS, - CSIDL_CDBURN_AREA, // = 59 - CSIDL_COMPUTERSNEARME = 61, - CSIDL_FLAG_DONT_VERIFY = 0x4000, - CSIDL_FLAG_CREATE = 0x8000, - CSIDL_FLAG_MASK = 0xFF00 -} - -const TCHAR[] - CFSTR_SHELLIDLIST = "Shell IDList Array", - CFSTR_SHELLIDLISTOFFSET = "Shell Object Offsets", - CFSTR_NETRESOURCES = "Net Resource", - CFSTR_FILECONTENTS = "FileContents", - CFSTR_FILENAMEA = "FileName", - CFSTR_FILENAMEMAPA = "FileNameMap", - CFSTR_FILEDESCRIPTORA = "FileGroupDescriptor", - CFSTR_INETURLA = "UniformResourceLocator", - CFSTR_SHELLURL = CFSTR_INETURLA, - CFSTR_FILENAMEW = "FileNameW", - CFSTR_FILENAMEMAPW = "FileNameMapW", - CFSTR_FILEDESCRIPTORW = "FileGroupDescriptorW", - CFSTR_INETURLW = "UniformResourceLocatorW"; - -version(Unicode) { - alias CFSTR_FILENAMEW CFSTR_FILENAME; - alias CFSTR_FILENAMEMAPW CFSTR_FILENAMEMAP; - alias CFSTR_FILEDESCRIPTORW CFSTR_FILEDESCRIPTOR; - alias CFSTR_INETURLW CFSTR_INETURL; -} else { - alias CFSTR_FILENAMEA CFSTR_FILENAME; - alias CFSTR_FILENAMEMAPA CFSTR_FILENAMEMAP; - alias CFSTR_FILEDESCRIPTORA CFSTR_FILEDESCRIPTOR; - alias CFSTR_INETURLA CFSTR_INETURL; -} -const TCHAR[] - CFSTR_PRINTERGROUP = "PrinterFriendlyName", - CFSTR_INDRAGLOOP = "InShellDragLoop", - CFSTR_PASTESUCCEEDED = "Paste Succeeded", - CFSTR_PERFORMEDDROPEFFECT = "Performed DropEffect", - CFSTR_PREFERREDDROPEFFECT = "Preferred DropEffect"; - -const CMF_NORMAL=0; -const CMF_DEFAULTONLY=1; -const CMF_VERBSONLY=2; -const CMF_EXPLORE=4; -const CMF_NOVERBS=8; -const CMF_CANRENAME=16; -const CMF_NODEFAULT=32; -const CMF_INCLUDESTATIC=64; -const CMF_RESERVED=0xffff0000; -const GCS_VERBA=0; -const GCS_HELPTEXTA=1; -const GCS_VALIDATEA=2; -const GCS_VERBW=4; -const GCS_HELPTEXTW=5; -const GCS_VALIDATEW=6; -const GCS_UNICODE=4; - -version(Unicode) { - alias GCS_VERBW GCS_VERB; - alias GCS_HELPTEXTW GCS_HELPTEXT; - alias GCS_VALIDATEW GCS_VALIDATE; -} else { - alias GCS_VERBA GCS_VERB; - alias GCS_HELPTEXTA GCS_HELPTEXT; - alias GCS_VALIDATEA GCS_VALIDATE; -} - -const TCHAR[] - CMDSTR_NEWFOLDER = "NewFolder", - CMDSTR_VIEWLIST = "ViewList", - CMDSTR_VIEWDETAILS = "ViewDetails"; - -const CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY; -const CMIC_MASK_ICON = SEE_MASK_ICON; -const CMIC_MASK_FLAG_NO_UI = SEE_MASK_FLAG_NO_UI; -const CMIC_MASK_MODAL = 0x80000000; -// TODO: This isn't defined anywhere in MinGW. -//const CMIC_VALID_SEE_FLAGS=SEE_VALID_CMIC_FLAGS; - -const GIL_OPENICON = 1; -const GIL_FORSHELL = 2; -const GIL_SIMULATEDOC = 1; -const GIL_PERINSTANCE = 2; -const GIL_PERCLASS = 4; -const GIL_NOTFILENAME = 8; -const GIL_DONTCACHE = 16; - -const FVSIF_RECT = 1; -const FVSIF_PINNED = 2; -const FVSIF_NEWFAILED = 0x8000000; -const FVSIF_NEWFILE = 0x80000000; -const FVSIF_CANVIEWIT = 0x40000000; - -const CDBOSC_SETFOCUS = 0; -const CDBOSC_KILLFOCUS = 1; -const CDBOSC_SELCHANGE = 2; -const CDBOSC_RENAME = 3; - -const FCIDM_SHVIEWFIRST = 0; -const FCIDM_SHVIEWLAST = 0x7fff; -const FCIDM_BROWSERFIRST = 0xa000; -const FCIDM_BROWSERLAST = 0xbf00; -const FCIDM_GLOBALFIRST = 0x8000; -const FCIDM_GLOBALLAST = 0x9fff; -const FCIDM_MENU_FILE = FCIDM_GLOBALFIRST; -const FCIDM_MENU_EDIT = FCIDM_GLOBALFIRST+0x0040; -const FCIDM_MENU_VIEW = FCIDM_GLOBALFIRST+0x0080; -const FCIDM_MENU_VIEW_SEP_OPTIONS = FCIDM_GLOBALFIRST+0x0081; -const FCIDM_MENU_TOOLS = FCIDM_GLOBALFIRST+0x00c0; -const FCIDM_MENU_TOOLS_SEP_GOTO = FCIDM_GLOBALFIRST+0x00c1; -const FCIDM_MENU_HELP = FCIDM_GLOBALFIRST+0x0100; -const FCIDM_MENU_FIND = FCIDM_GLOBALFIRST+0x0140; -const FCIDM_MENU_EXPLORE = FCIDM_GLOBALFIRST+0x0150; -const FCIDM_MENU_FAVORITES = FCIDM_GLOBALFIRST+0x0170; -const FCIDM_TOOLBAR = FCIDM_BROWSERFIRST; -const FCIDM_STATUS = FCIDM_BROWSERFIRST+1; - -const SBSP_DEFBROWSER = 0; -const SBSP_SAMEBROWSER = 1; -const SBSP_NEWBROWSER = 2; -const SBSP_DEFMODE = 0; -const SBSP_OPENMODE = 16; -const SBSP_EXPLOREMODE = 32; -const SBSP_ABSOLUTE = 0; -const SBSP_RELATIVE = 0x1000; -const SBSP_PARENT = 0x2000; -const SBSP_INITIATEDBYHLINKFRAME = 0x80000000; -const SBSP_REDIRECT = 0x40000000; - -enum { - FCW_STATUS=1, - FCW_TOOLBAR, - FCW_TREE -} - -const FCT_MERGE=1; -const FCT_CONFIGABLE=2; -const FCT_ADDTOEND=4; - -const SVSI_DESELECT=0; -const SVSI_SELECT=1; -const SVSI_EDIT=3; -const SVSI_DESELECTOTHERS=4; -const SVSI_ENSUREVISIBLE=8; -const SVSI_FOCUSED=16; - -const SVGIO_BACKGROUND=0; -const SVGIO_SELECTION=1; -const SVGIO_ALLVIEW=2; - -const UINT SV2GV_CURRENTVIEW=-1; -const UINT SV2GV_DEFAULTVIEW=-2; - -alias DWORD SHGDNF; - -struct CIDA { - UINT cidl; - UINT[1] aoffset; -} -alias CIDA* LPIDA; - -struct SHITEMID { - USHORT cb; - BYTE[1] abID; -} -alias SHITEMID* LPSHITEMID; -alias const(SHITEMID)* LPCSHITEMID; - -struct ITEMIDLIST { - SHITEMID mkid; -} -alias ITEMIDLIST* LPITEMIDLIST; -alias const(ITEMIDLIST)* LPCITEMIDLIST; - -alias int function(HWND, UINT, LPARAM, LPARAM) BFFCALLBACK; - -struct BROWSEINFOA { - HWND hwndOwner; - LPCITEMIDLIST pidlRoot; - LPSTR pszDisplayName; - LPCSTR lpszTitle; - UINT ulFlags; - BFFCALLBACK lpfn; - LPARAM lParam; - int iImage; -} -alias BROWSEINFOA* PBROWSEINFOA, LPBROWSEINFOA; - -struct BROWSEINFOW { - HWND hwndOwner; - LPCITEMIDLIST pidlRoot; - LPWSTR pszDisplayName; - LPCWSTR lpszTitle; - UINT ulFlags; - BFFCALLBACK lpfn; - LPARAM lParam; - int iImage; -} -alias BROWSEINFOW* PBROWSEINFOW, LPBROWSEINFOW; - -struct CMINVOKECOMMANDINFO { - DWORD cbSize = this.sizeof; - DWORD fMask; - HWND hwnd; - LPCSTR lpVerb; - LPCSTR lpParameters; - LPCSTR lpDirectory; - int nShow; - DWORD dwHotKey; - HANDLE hIcon; -} -alias CMINVOKECOMMANDINFO* LPCMINVOKECOMMANDINFO; - -struct DROPFILES { - DWORD pFiles; - POINT pt; - BOOL fNC; - BOOL fWide; -} -alias DROPFILES* LPDROPFILES; - -enum SHGNO { - SHGDN_NORMAL = 0, - SHGDN_INFOLDER, - SHGDN_FOREDITING = 0x1000, - SHGDN_INCLUDE_NONFILESYS = 0x2000, - SHGDN_FORADDRESSBAR = 0x4000, - SHGDN_FORPARSING = 0x8000 -} - -enum SHCONTF { - SHCONTF_FOLDERS = 32, - SHCONTF_NONFOLDERS = 64, - SHCONTF_INCLUDEHIDDEN = 128, - SHCONTF_INIT_ON_FIRST_NEXT = 256, - SHCONTF_NETPRINTERSRCH = 512, - SHCONTF_SHAREABLE = 1024, - SHCONTF_STORAGE = 2048 -} - -struct STRRET { - UINT uType; - union { - LPWSTR pOleStr; - UINT uOffset; - char[MAX_PATH] cStr; - } -} -alias STRRET* LPSTRRET; - -enum FD_FLAGS { - FD_CLSID = 1, - FD_SIZEPOINT = 2, - FD_ATTRIBUTES = 4, - FD_CREATETIME = 8, - FD_ACCESSTIME = 16, - FD_WRITESTIME = 32, - FD_FILESIZE = 64, - FD_LINKUI = 0x8000 -} - -struct FILEDESCRIPTORA { - DWORD dwFlags; - CLSID clsid; - SIZEL sizel; - POINTL pointl; - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - CHAR[MAX_PATH] cFileName; -} -alias FILEDESCRIPTORA* LPFILEDESCRIPTORA; - -struct FILEDESCRIPTORW { - DWORD dwFlags; - CLSID clsid; - SIZEL sizel; - POINTL pointl; - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - WCHAR[MAX_PATH] cFileName; -} -alias FILEDESCRIPTORW* LPFILEDESCRIPTORW; - -struct FILEGROUPDESCRIPTORA { - UINT cItems; - FILEDESCRIPTORA[1] fgd; -} -alias FILEGROUPDESCRIPTORA* LPFILEGROUPDESCRIPTORA; - -struct FILEGROUPDESCRIPTORW { - UINT cItems; - FILEDESCRIPTORW[1] fgd; -} -alias FILEGROUPDESCRIPTORW* LPFILEGROUPDESCRIPTORW; - -enum SLR_FLAGS { - SLR_NO_UI = 1, - SLR_ANY_MATCH = 2, - SLR_UPDATE = 4, - SLR_NOUPDATE = 8, - SLR_NOSEARCH = 16, - SLR_NOTRACK = 32, - SLR_NOLINKINFO = 64, - SLR_INVOKE_MSI = 128 -} - -enum SLGP_FLAGS { - SLGP_SHORTPATH=1, - SLGP_UNCPRIORITY=2, - SLGP_RAWPATH=4 -} - -alias PBYTE LPVIEWSETTINGS; - -enum FOLDERFLAGS { - FWF_AUTOARRANGE = 1, - FWF_ABBREVIATEDNAMES = 2, - FWF_SNAPTOGRID = 4, - FWF_OWNERDATA = 8, - FWF_BESTFITWINDOW = 16, - FWF_DESKTOP = 32, - FWF_SINGLESEL = 64, - FWF_NOSUBFOLDERS = 128, - FWF_TRANSPARENT = 256, - FWF_NOCLIENTEDGE = 512, - FWF_NOSCROLL = 0x400, - FWF_ALIGNLEFT = 0x800, - FWF_SINGLECLICKACTIVATE = 0x8000 -} - -enum FOLDERVIEWMODE { - FVM_ICON = 1, - FVM_SMALLICON, - FVM_LIST, - FVM_DETAILS -} - -struct FOLDERSETTINGS { - UINT ViewMode; - UINT fFlags; -} -alias FOLDERSETTINGS* LPFOLDERSETTINGS; -alias const(FOLDERSETTINGS)* LPCFOLDERSETTINGS; - -struct FVSHOWINFO { - DWORD cbSize = this.sizeof; - HWND hwndOwner; - int iShow; - DWORD dwFlags; - RECT rect; - LPUNKNOWN punkRel; - OLECHAR[MAX_PATH] strNewFile; -} -alias FVSHOWINFO* LPFVSHOWINFO; - -struct NRESARRAY { - UINT cItems; - NETRESOURCE[1] nr; -} -alias NRESARRAY* LPNRESARRAY; - -enum { - SBSC_HIDE, - SBSC_SHOW, - SBSC_TOGGLE, - SBSC_QUERY -} - -enum { - SBCMDID_ENABLESHOWTREE, - SBCMDID_SHOWCONTROL, - SBCMDID_CANCELNAVIGATION, - SBCMDID_MAYSAVECHANGES, - SBCMDID_SETHLINKFRAME, - SBCMDID_ENABLESTOP, - SBCMDID_OPTIONS -} -enum SVUIA_STATUS { - SVUIA_DEACTIVATE, - SVUIA_ACTIVATE_NOFOCUS, - SVUIA_ACTIVATE_FOCUS, - SVUIA_INPLACEACTIVATE -} - -static if (_WIN32_IE >= 0x500) { - - struct EXTRASEARCH - { - GUID guidSearch; - WCHAR[80] wszFriendlyName; - WCHAR[2084] wszUrl; - } - alias EXTRASEARCH* LPEXTRASEARCH; - - alias DWORD SHCOLSTATEF; - - struct SHCOLUMNID { - GUID fmtid; - DWORD pid; - } - alias SHCOLUMNID* LPSHCOLUMNID; - alias const(SHCOLUMNID)* LPCSHCOLUMNID; - - struct SHELLDETAILS { - int fmt; - int cxChar; - STRRET str; - } - alias SHELLDETAILS* LPSHELLDETAILS; - - struct PERSIST_FOLDER_TARGET_INFO - { - LPITEMIDLIST pidlTargetFolder; - WCHAR[MAX_PATH] szTargetParsingName; - WCHAR[MAX_PATH] szNetworkProvider; - DWORD dwAttributes; - int csidl; - } - - enum SHGFP_TYPE { - SHGFP_TYPE_CURRENT = 0, - SHGFP_TYPE_DEFAULT = 1, - } - -} - -interface IEnumIDList : IUnknown { - HRESULT Next(ULONG, LPITEMIDLIST*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumIDList*); -} -alias IEnumIDList LPENUMIDLIST; - -interface IObjMgr : IUnknown { - HRESULT Append(IUnknown); - HRESULT Remove(IUnknown); -} - -interface IContextMenu : IUnknown { - HRESULT QueryContextMenu(HMENU, UINT, UINT, UINT, UINT); - HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); - HRESULT GetCommandString(UINT, UINT, PUINT, LPSTR, UINT); -} -alias IContextMenu LPCONTEXTMENU; - -interface IContextMenu2 : IContextMenu { - HRESULT HandleMenuMsg(UINT, WPARAM, LPARAM); -}; -alias IContextMenu2 LPCONTEXTMENU2; - -static if (_WIN32_IE >= 0x500) { - align(8) { - struct SHCOLUMNINIT { - ULONG dwFlags; - ULONG dwReserved; - WCHAR[MAX_PATH] wszFolder; - } - alias SHCOLUMNINIT* LPSHCOLUMNINIT; - alias const(SHCOLUMNINIT)* LPCSHCOLUMNINIT; - - struct SHCOLUMNDATA { - ULONG dwFlags; - DWORD dwFileAttributes; - ULONG dwReserved; - WCHAR *pwszExt; - WCHAR[MAX_PATH] wszFile; - } - alias SHCOLUMNDATA* LPSHCOLUMNDATA; - alias const(SHCOLUMNDATA)* LPCSHCOLUMNDATA; - } - - const MAX_COLUMN_NAME_LEN = 80; - const MAX_COLUMN_DESC_LEN = 128; - - align(1) struct SHCOLUMNINFO { - SHCOLUMNID scid; - VARTYPE vt; - DWORD fmt; - UINT cChars; - DWORD csFlags; - WCHAR[MAX_COLUMN_NAME_LEN] wszTitle; - WCHAR[MAX_COLUMN_DESC_LEN] wszDescription; - } - alias SHCOLUMNINFO* LPSHCOLUMNINFO; - alias const(SHCOLUMNINFO)* LPCSHCOLUMNINFO; - - enum SHCOLSTATE { - SHCOLSTATE_TYPE_STR = 0x00000001, - SHCOLSTATE_TYPE_INT = 0x00000002, - SHCOLSTATE_TYPE_DATE = 0x00000003, - SHCOLSTATE_TYPEMASK = 0x0000000f, - SHCOLSTATE_ONBYDEFAULT = 0x00000010, - SHCOLSTATE_SLOW = 0x00000020, - SHCOLSTATE_EXTENDED = 0x00000040, - SHCOLSTATE_SECONDARYUI = 0x00000080, - SHCOLSTATE_HIDDEN = 0x00000100, - SHCOLSTATE_PREFER_VARCMP = 0x00000200 - } - - interface IColumnProvider : IUnknown { - HRESULT Initialize(LPCSHCOLUMNINIT); - HRESULT GetColumnInfo(DWORD, SHCOLUMNINFO*); - HRESULT GetItemData(LPCSHCOLUMNID, LPCSHCOLUMNDATA, VARIANT*); - } -}/* _WIN32_IE >= 0x500 */ - -interface IQueryInfo : IUnknown { - HRESULT GetInfoTip(DWORD, WCHAR**); - HRESULT GetInfoFlags(DWORD*); -} - -interface IShellExtInit : IUnknown { - HRESULT Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY); -} -alias IShellExtInit LPSHELLEXTINIT; - -interface IShellPropSheetExt : IUnknown { - HRESULT AddPages(LPFNADDPROPSHEETPAGE, LPARAM); - HRESULT ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM); -} -alias IShellPropSheetExt LPSHELLPROPSHEETEXT; - -interface IExtractIconA : IUnknown { - HRESULT GetIconLocation(UINT, LPSTR, UINT, int*, PUINT); - HRESULT Extract(LPCSTR, UINT, HICON*, HICON*, UINT); -}; -alias IExtractIconA LPEXTRACTICONA; - -interface IExtractIconW : IUnknown { - HRESULT GetIconLocation(UINT, LPWSTR, UINT, int*, PUINT); - HRESULT Extract(LPCWSTR, UINT, HICON*, HICON*, UINT); -} -alias IExtractIconW LPEXTRACTICONW; - -version(Unicode) { - alias IExtractIconW IExtractIcon; - alias LPEXTRACTICONW LPEXTRACTICON; -} else { - alias IExtractIconA IExtractIcon; - alias LPEXTRACTICONA LPEXTRACTICON; -} - -interface IShellLinkA : IUnknown { - HRESULT GetPath(LPSTR, int, WIN32_FIND_DATAA*, DWORD); - HRESULT GetIDList(LPITEMIDLIST*); - HRESULT SetIDList(LPCITEMIDLIST); - HRESULT GetDescription(LPSTR, int); - HRESULT SetDescription(LPCSTR); - HRESULT GetWorkingDirectory(LPSTR, int); - HRESULT SetWorkingDirectory(LPCSTR); - HRESULT GetArguments(LPSTR, int); - HRESULT SetArguments(LPCSTR); - HRESULT GetHotkey(PWORD); - HRESULT SetHotkey(WORD); - HRESULT GetShowCmd(int*); - HRESULT SetShowCmd(int); - HRESULT GetIconLocation(LPSTR, int, int*); - HRESULT SetIconLocation(LPCSTR, int); - HRESULT SetRelativePath(LPCSTR , DWORD); - HRESULT Resolve(HWND, DWORD); - HRESULT SetPath(LPCSTR); -} - -interface IShellLinkW : IUnknown { - HRESULT GetPath(LPWSTR, int, WIN32_FIND_DATAW*, DWORD); - HRESULT GetIDList(LPITEMIDLIST*); - HRESULT SetIDList(LPCITEMIDLIST); - HRESULT GetDescription(LPWSTR, int); - HRESULT SetDescription(LPCWSTR); - HRESULT GetWorkingDirectory(LPWSTR, int); - HRESULT SetWorkingDirectory(LPCWSTR); - HRESULT GetArguments(LPWSTR, int); - HRESULT SetArguments(LPCWSTR); - HRESULT GetHotkey(PWORD); - HRESULT SetHotkey(WORD); - HRESULT GetShowCmd(int*); - HRESULT SetShowCmd(int); - HRESULT GetIconLocation(LPWSTR, int, int*); - HRESULT SetIconLocation(LPCWSTR, int); - HRESULT SetRelativePath(LPCWSTR , DWORD); - HRESULT Resolve(HWND, DWORD); - HRESULT SetPath(LPCWSTR); -} - - -interface IShellFolder : IUnknown { - HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); - HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); - HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); - HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); - HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); - HRESULT CreateViewObject(HWND, REFIID, PVOID*); - HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); - HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); - HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); - HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); -} -alias IShellFolder LPSHELLFOLDER; - -static if (_WIN32_IE >= 0x500) { - -interface IEnumExtraSearch: IUnknown { - HRESULT Next(ULONG, LPEXTRASEARCH*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumExtraSearch*); -} -alias IEnumExtraSearch LPENUMEXTRASEARCH; - -interface IShellFolder2 : IShellFolder { - HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); - HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); - HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); - HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); - HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); - HRESULT CreateViewObject(HWND, REFIID, PVOID*); - HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); - HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); - HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); - HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); - HRESULT GetDefaultSearchGUID(GUID*); - HRESULT EnumSearches(IEnumExtraSearch*); - HRESULT GetDefaultColumn(DWORD, ULONG*, ULONG*); - HRESULT GetDefaultColumnState(UINT, SHCOLSTATEF*); - HRESULT GetDetailsEx(LPCITEMIDLIST, const(SHCOLUMNID)*, VARIANT*); - HRESULT GetDetailsOf(LPCITEMIDLIST, UINT, SHELLDETAILS*); - HRESULT MapColumnToSCID(UINT, SHCOLUMNID*); -} -alias IShellFolder2 LPSHELLFOLDER2; - -} /* _WIN32_IE >= 0x500 */ - -interface ICopyHook : IUnknown { - UINT CopyCallback(HWND, UINT, UINT, LPCSTR, DWORD, LPCSTR, DWORD); -} -alias ICopyHook LPCOPYHOOK; - -interface IFileViewerSite : IUnknown { - HRESULT SetPinnedWindow(HWND); - HRESULT GetPinnedWindow(HWND*); -} -alias IFileViewerSite LPFILEVIEWERSITE; - -interface IFileViewer : IUnknown { - HRESULT ShowInitialize(LPFILEVIEWERSITE); - HRESULT Show(LPFVSHOWINFO); - HRESULT PrintTo(LPSTR, BOOL); -} -alias IFileViewer LPFILEVIEWER; - -interface IFileSystemBindData : IUnknown { - HRESULT SetFindData(const(WIN32_FIND_DATAW)*); - HRESULT GetFindData(WIN32_FIND_DATAW*); -} - -interface IPersistFolder : IPersist { - HRESULT GetClassID(CLSID*); - HRESULT Initialize(LPCITEMIDLIST); -} -alias IPersistFolder LPPERSISTFOLDER; - -static if (_WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500) { - -interface IPersistFolder2 : IPersistFolder { - HRESULT GetClassID(CLSID*); - HRESULT Initialize(LPCITEMIDLIST); - HRESULT GetCurFolder(LPITEMIDLIST*); -} -alias IPersistFolder2 LPPERSISTFOLDER2; - -}/* _WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500 */ - -static if (_WIN32_IE >= 0x500) { - -interface IPersistFolder3 : IPersistFolder2 { - HRESULT GetClassID(CLSID*); - HRESULT Initialize(LPCITEMIDLIST); - HRESULT GetCurFolder(LPITEMIDLIST*); - HRESULT InitializeEx(IBindCtx, LPCITEMIDLIST, const(PERSIST_FOLDER_TARGET_INFO)*); - HRESULT GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO*); -} -alias IPersistFolder3 LPPERSISTFOLDER3; - -} /* _WIN32_IE >= 0x500 */ - -alias IShellBrowser LPSHELLBROWSER; -alias IShellView LPSHELLVIEW; - -interface IShellBrowser : IOleWindow { - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT InsertMenusSB(HMENU, LPOLEMENUGROUPWIDTHS); - HRESULT SetMenuSB(HMENU, HOLEMENU, HWND); - HRESULT RemoveMenusSB(HMENU); - HRESULT SetStatusTextSB(LPCOLESTR); - HRESULT EnableModelessSB(BOOL); - HRESULT TranslateAcceleratorSB(LPMSG, WORD); - HRESULT BrowseObject(LPCITEMIDLIST, UINT); - HRESULT GetViewStateStream(DWORD, LPSTREAM*); - HRESULT GetControlWindow(UINT, HWND*); - HRESULT SendControlMsg(UINT, UINT, WPARAM, LPARAM, LRESULT*); - HRESULT QueryActiveShellView(LPSHELLVIEW*); - HRESULT OnViewWindowActive(LPSHELLVIEW); - HRESULT SetToolbarItems(LPTBBUTTON, UINT, UINT); -} - -interface IShellView : IOleWindow { - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT TranslateAccelerator(LPMSG); -//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT -//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; -//[Yes] #else - HRESULT EnableModeless(BOOL); -//[Yes] #endif - HRESULT UIActivate(UINT); - HRESULT Refresh(); - HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); - HRESULT DestroyViewWindow(); - HRESULT GetCurrentInfo(LPFOLDERSETTINGS); - HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); - HRESULT SaveViewState(); - HRESULT SelectItem(LPCITEMIDLIST, UINT); - HRESULT GetItemObject(UINT, REFIID, PVOID*); -} - -interface ICommDlgBrowser : IUnknown { - HRESULT OnDefaultCommand(IShellView); - HRESULT OnStateChange(IShellView, ULONG); - HRESULT IncludeObject(IShellView, LPCITEMIDLIST); -} -alias ICommDlgBrowser LPCOMMDLGBROWSER; - -alias GUID SHELLVIEWID; - -struct SV2CVW2_PARAMS { - DWORD cbSize = this.sizeof; - IShellView psvPrev; - FOLDERSETTINGS *pfs; - IShellBrowser psbOwner; - RECT *prcView; - const(SHELLVIEWID)* pvid; - HWND hwndView; -} -alias SV2CVW2_PARAMS* LPSV2CVW2_PARAMS; - -interface IShellView2 : IShellView { - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT TranslateAccelerator(LPMSG); -//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT -//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; -//[Yes] #else - HRESULT EnableModeless(BOOL); -//[Yes] #endif - HRESULT UIActivate(UINT); - HRESULT Refresh(); - HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); - HRESULT DestroyViewWindow(); - HRESULT GetCurrentInfo(LPFOLDERSETTINGS); - HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); - HRESULT SaveViewState(); - HRESULT SelectItem(LPCITEMIDLIST, UINT); - HRESULT GetItemObject(UINT, REFIID, PVOID*); - HRESULT GetView(SHELLVIEWID*, ULONG); - HRESULT CreateViewWindow2(LPSV2CVW2_PARAMS); -} - -interface IShellExecuteHookA : IUnknown { - HRESULT Execute(LPSHELLEXECUTEINFOA); -} - -interface IShellExecuteHookW : IUnknown { - HRESULT Execute(LPSHELLEXECUTEINFOW); -} - -interface IShellIcon : IUnknown { - HRESULT GetIconOf(LPCITEMIDLIST, UINT, PINT); -} -alias IShellIcon LPSHELLICON; - -struct SHELLFLAGSTATE { - short _bf; -/* - BOOL fShowAllObjects : 1; - BOOL fShowExtensions : 1; - BOOL fNoConfirmRecycle : 1; - BOOL fShowSysFiles : 1; - BOOL fShowCompColor : 1; - BOOL fDoubleClickInWebView : 1; - BOOL fDesktopHTML : 1; - BOOL fWin95Classic : 1; - BOOL fDontPrettyPath : 1; - BOOL fShowAttribCol : 1; - BOOL fMapNetDrvBtn : 1; - BOOL fShowInfoTip : 1; - BOOL fHideIcons : 1; - UINT fRestFlags : 3; -*/ - @property bool fShowAllObjects() { return cast(bool) (_bf & 0x0001); } - @property bool fShowExtensions() { return cast(bool) (_bf & 0x0002); } - @property bool fNoConfirmRecycle() { return cast(bool) (_bf & 0x0004); } - @property bool fShowSysFiles() { return cast(bool) (_bf & 0x0008); } - @property bool fShowCompColor() { return cast(bool) (_bf & 0x0010); } - @property bool fDoubleClickInWebView() { return cast(bool) (_bf & 0x0020); } - @property bool fDesktopHTML() { return cast(bool) (_bf & 0x0040); } - @property bool fWin95Classic() { return cast(bool) (_bf & 0x0080); } - @property bool fDontPrettyPath() { return cast(bool) (_bf & 0x0100); } - @property bool fShowAttribCol() { return cast(bool) (_bf & 0x0200); } - @property bool fMapNetDrvBtn() { return cast(bool) (_bf & 0x0400); } - @property bool fShowInfoTip() { return cast(bool) (_bf & 0x0800); } - @property bool fHideIcons() { return cast(bool) (_bf & 0x1000); } - @property ubyte fRestFlags() { return cast(ubyte) (_bf >> 13); } - - @property bool fShowAllObjects(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFE) | f); return f; } - @property bool fShowExtensions(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFD) | (f << 1)); return f; } - @property bool fNoConfirmRecycle(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFB) | (f << 2)); return f; } - @property bool fShowSysFiles(bool f) { _bf = cast(ushort) ((_bf & ~0xFFF8) | (f << 3)); return f; } - @property bool fShowCompColor(bool f) { _bf = cast(ushort) ((_bf & ~0xFFEF) | (f << 4)); return f; } - @property bool fDoubleClickInWebView(bool f) { _bf = cast(ushort) ((_bf & ~0xFFDF) | (f << 5)); return f; } - @property bool fDesktopHTML(bool f) { _bf = cast(ushort) ((_bf & ~0xFFBF) | (f << 6)); return f; } - @property bool fWin95Classic(bool f) { _bf = cast(ushort) ((_bf & ~0xFF8F) | (f << 7)); return f; } - @property bool fDontPrettyPath(bool f) { _bf = cast(ushort) ((_bf & ~0xFEFF) | (f << 8)); return f; } - @property bool fShowAttribCol(bool f) { _bf = cast(ushort) ((_bf & ~0xFDFF) | (f << 9)); return f; } - @property bool fMapNetDrvBtn(bool f) { _bf = cast(ushort) ((_bf & ~0xFBFF) | (f << 10)); return f; } - @property bool fShowInfoTip(bool f) { _bf = cast(ushort) ((_bf & ~0xF8FF) | (f << 11)); return f; } - @property bool fHideIcons(bool f) { _bf = cast(ushort) ((_bf & ~0xEFFF) | (f << 12)); return f; } - @property ubyte fRestFlags(ubyte f) { _bf = cast(ushort) ((_bf & ~0x1FFF) | (f << 13)); return cast(ubyte) (f & 7); } -} -alias SHELLFLAGSTATE* LPSHELLFLAGSTATE; - -const SSF_SHOWALLOBJECTS = 0x1; -const SSF_SHOWEXTENSIONS = 0x2; -const SSF_SHOWCOMPCOLOR = 0x8; -const SSF_SHOWSYSFILES = 0x20; -const SSF_DOUBLECLICKINWEBVIEW = 0x80; -const SSF_SHOWATTRIBCOL = 0x100; -const SSF_DESKTOPHTML = 0x200; -const SSF_WIN95CLASSIC = 0x400; -const SSF_DONTPRETTYPATH = 0x800; -const SSF_MAPNETDRVBUTTON = 0x1000; -const SSF_SHOWINFOTIP = 0x2000; -const SSF_HIDEICONS = 0x4000; -const SSF_NOCONFIRMRECYCLE = 0x8000; - -interface IShellIconOverlayIdentifier : IUnknown { - HRESULT IsMemberOf(LPCWSTR, DWORD); - HRESULT GetOverlayInfo(LPWSTR, int, int*, DWORD*); - HRESULT GetPriority(int*); -} - -const ISIOI_ICONFILE = 0x00000001; -const ISIOI_ICONINDEX = 0x00000002; - -static if (_WIN32_WINNT >= 0x500) { - struct SHELLSTATE { - uint _bf1; - DWORD dwWin95Unused; - UINT uWin95Unused; - LONG lParamSort; - int iSortDirection; - UINT _version; - UINT uNotUsed; - uint _bf2; - /* - BOOL fShowAllObjects : 1; - BOOL fShowExtensions : 1; - BOOL fNoConfirmRecycle : 1; - BOOL fShowSysFiles : 1; - BOOL fShowCompColor : 1; - BOOL fDoubleClickInWebView : 1; - BOOL fDesktopHTML : 1; - BOOL fWin95Classic : 1; - BOOL fDontPrettyPath : 1; - BOOL fShowAttribCol : 1; - BOOL fMapNetDrvBtn : 1; - BOOL fShowInfoTip : 1; - BOOL fHideIcons : 1; - BOOL fWebView : 1; - BOOL fFilter : 1; - BOOL fShowSuperHidden : 1; - BOOL fNoNetCrawling : 1; - */ - @property bool fShowAllObjects() { return cast(bool) (_bf1 & 0x00000001); } - @property bool fShowExtensions() { return cast(bool) (_bf1 & 0x00000002); } - @property bool fNoConfirmRecycle() { return cast(bool) (_bf1 & 0x00000004); } - @property bool fShowSysFiles() { return cast(bool) (_bf1 & 0x00000008); } - @property bool fShowCompColor() { return cast(bool) (_bf1 & 0x00000010); } - @property bool fDoubleClickInWebView() { return cast(bool) (_bf1 & 0x00000020); } - @property bool fDesktopHTML() { return cast(bool) (_bf1 & 0x00000040); } - @property bool fWin95Classic() { return cast(bool) (_bf1 & 0x00000080); } - @property bool fDontPrettyPath() { return cast(bool) (_bf1 & 0x00000100); } - @property bool fShowAttribCol() { return cast(bool) (_bf1 & 0x00000200); } - @property bool fMapNetDrvBtn() { return cast(bool) (_bf1 & 0x00000400); } - @property bool fShowInfoTip() { return cast(bool) (_bf1 & 0x00000800); } - @property bool fHideIcons() { return cast(bool) (_bf1 & 0x00001000); } - @property bool fWebView() { return cast(bool) (_bf1 & 0x00002000); } - @property bool fFilter() { return cast(bool) (_bf1 & 0x00004000); } - @property bool fShowSuperHidden() { return cast(bool) (_bf1 & 0x00008000); } - @property bool fNoNetCrawling() { return cast(bool) (_bf1 & 0x00010000); } - - @property bool fShowAllObjects(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFE) | f); return f; } - @property bool fShowExtensions(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFD) | (f << 1)); return f; } - @property bool fNoConfirmRecycle(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFB) | (f << 2)); return f; } - @property bool fShowSysFiles(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFF8) | (f << 3)); return f; } - @property bool fShowCompColor(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFEF) | (f << 4)); return f; } - @property bool fDoubleClickInWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFDF) | (f << 5)); return f; } - @property bool fDesktopHTML(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFBF) | (f << 6)); return f; } - @property bool fWin95Classic(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFF8F) | (f << 7)); return f; } - @property bool fDontPrettyPath(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFEFF) | (f << 8)); return f; } - @property bool fShowAttribCol(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFDFF) | (f << 9)); return f; } - @property bool fMapNetDrvBtn(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFBFF) | (f << 10)); return f; } - @property bool fShowInfoTip(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFF8FF) | (f << 11)); return f; } - @property bool fHideIcons(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFEFFF) | (f << 12)); return f; } - @property bool fWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFDFFF) | (f << 13)); return f; } - @property bool fFilter(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFBFFF) | (f << 14)); return f; } - @property bool fShowSuperHidden(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFF8FFF) | (f << 15)); return f; } - @property bool fNoNetCrawling(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFEFFFF) | (f << 16)); return f; } - /* - BOOL fSepProcess : 1; - BOOL fStartPanelOn : 1; - BOOL fShowStartPage : 1; - UINT fSpareFlags : 13; - */ - @property bool fSepProcess() { return cast(bool) (_bf2 & 0x00000001); } - @property bool fStartPanelOn() { return cast(bool) (_bf2 & 0x00000002); } - @property bool fShowStartPage() { return cast(bool) (_bf2 & 0x00000004); } - @property ushort fSpareFlags() { return cast(ushort) ((_bf2 & 0x0000FFF8) >> 3); } - - @property bool fSepProcess(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFE) | f); return f; } - @property bool fStartPanelOn(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFD) | (f << 1)); return f; } - @property bool fShowStartPage(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFB) | (f << 2)); return f; } - @property ushort fSpareFlags(ushort f) { - _bf2 = cast(ushort) ((_bf2 & ~0xFFFF0007) | ((f & 0x1FFF) << 3)); - return cast(ushort) (f & 0x1FFF); - } - } - alias SHELLSTATE* LPSHELLSTATE; -} - -static if (_WIN32_IE >= 0x500) { - align(8) { - struct SHDRAGIMAGE { - SIZE sizeDragImage; - POINT ptOffset; - HBITMAP hbmpDragImage; - COLORREF crColorKey; - } - alias SHDRAGIMAGE* LPSHDRAGIMAGE; - } - - interface IDragSourceHelper : IUnknown { - HRESULT InitializeFromBitmap(LPSHDRAGIMAGE pshdi, IDataObject pDataObject); - HRESULT InitializeFromWindow(HWND hwnd, POINT* ppt, IDataObject pDataObject); - } - - interface IDropTargetHelper : IUnknown { - HRESULT DragEnter(HWND hwndTarget, IDataObject pDataObject, POINT* ppt, DWORD dwEffect); - HRESULT DragLeave(); - HRESULT DragOver(POINT* ppt, DWORD dwEffect); - HRESULT Drop(IDataObject pDataObject, POINT* ppt, DWORD dwEffect); - HRESULT Show(BOOL fShow); - } -} - -extern (Windows): -void SHAddToRecentDocs(UINT, PCVOID); -LPITEMIDLIST SHBrowseForFolderA(PBROWSEINFOA); -LPITEMIDLIST SHBrowseForFolderW(PBROWSEINFOW); -void SHChangeNotify(LONG, UINT, PCVOID, PCVOID); -HRESULT SHGetDataFromIDListA(LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int); -HRESULT SHGetDataFromIDListW(LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int); -HRESULT SHGetDesktopFolder(LPSHELLFOLDER*); -HRESULT SHGetInstanceExplorer(IUnknown*); -HRESULT SHGetMalloc(LPMALLOC*); -BOOL SHGetPathFromIDListA(LPCITEMIDLIST, LPSTR); -BOOL SHGetPathFromIDListW(LPCITEMIDLIST, LPWSTR); -HRESULT SHGetSpecialFolderLocation(HWND, int, LPITEMIDLIST*); -HRESULT SHLoadInProc(REFCLSID); - -static if (_WIN32_IE >= 0x400) { - BOOL SHGetSpecialFolderPathA(HWND, LPSTR, int, BOOL); - BOOL SHGetSpecialFolderPathW(HWND, LPWSTR, int, BOOL); -} - -/* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */ -HRESULT SHGetFolderPathA(HWND, int, HANDLE, DWORD, LPSTR); -HRESULT SHGetFolderPathW(HWND, int, HANDLE, DWORD, LPWSTR); - -static if (_WIN32_WINNT >= 0x500) { - INT SHGetIconOverlayIndexW(LPCWSTR pszIconPath, int iIconIndex); - INT SHGetIconOverlayIndexA(LPCSTR pszIconPath, int iIconIndex); - HRESULT SHGetFolderLocation(HWND, int, HANDLE, DWORD, LPITEMIDLIST*); - INT SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES); - INT SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES); - HRESULT SHBindToParent(LPCITEMIDLIST, REFIID, VOID**, LPCITEMIDLIST*); -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - PRF_VERIFYEXISTS = 0x0001, - PRF_TRYPROGRAMEXTENSIONS = (0x0002 | PRF_VERIFYEXISTS), - PRF_FIRSTDIRDEF = 0x0004, - PRF_DONTFINDLNK = 0x0008, - IDO_SHGIOI_SHARE = 0x0FFFFFFF, - IDO_SHGIOI_LINK = 0x0FFFFFFE, - IDO_SHGIOI_SLOWFILE = 0x0FFFFFFD, - IDO_SHGIOI_DEFAULT = 0x0FFFFFFC - } - - struct SHDESCRIPTIONID { - DWORD dwDescriptionId; - CLSID clsid; - } - alias SHDESCRIPTIONID* LPSHDESCRIPTIONID; - - BOOL PathResolve(LPWSTR, LPCWSTR*, UINT); - HRESULT SHGetFolderPathAndSubDirA(HWND, int, HANDLE, DWORD, LPCSTR, LPSTR); - HRESULT SHGetFolderPathAndSubDirW(HWND, int, HANDLE, DWORD, LPCWSTR, LPWSTR); - HRESULT SHParseDisplayName(LPCWSTR, IBindCtx, LPITEMIDLIST, SFGAOF, SFGAOF*); -} - -void SHGetSettings(LPSHELLFLAGSTATE, DWORD); - -static if (_WIN32_WINNT >= 0x500) { - void SHGetSetSettings(LPSHELLSTATE, DWORD, BOOL); - BOOL ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); - BOOL ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); - BOOL ILRemoveLastID(LPITEMIDLIST); - HRESULT ILLoadFromStream(IStream, LPITEMIDLIST*); - HRESULT ILSaveToStream(IStream, LPCITEMIDLIST); - LPITEMIDLIST ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); - LPITEMIDLIST ILClone(LPCITEMIDLIST); - LPITEMIDLIST ILCloneFirst(LPCITEMIDLIST); - LPITEMIDLIST ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); - LPITEMIDLIST ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); - LPITEMIDLIST ILFindLastID(LPCITEMIDLIST); - LPITEMIDLIST ILGetNext(LPCITEMIDLIST); - UINT ILGetSize(LPCITEMIDLIST); - void ILFree(LPITEMIDLIST); - - HRESULT SHCoCreateInstance(LPCWSTR, REFCLSID, IUnknown, REFIID, void**); -} - -version(Unicode) { - alias IShellExecuteHookW IShellExecuteHook; - alias IShellLinkW IShellLink; - alias BROWSEINFOW BROWSEINFO; - alias SHBrowseForFolderW SHBrowseForFolder; - alias SHGetDataFromIDListW SHGetDataFromIDList; - alias SHGetPathFromIDListW SHGetPathFromIDList; - static if (_WIN32_IE >= 0x400) { - alias SHGetSpecialFolderPathW SHGetSpecialFolderPath; - } - alias SHGetFolderPathW SHGetFolderPath; - static if (_WIN32_WINNT >= 0x500) { - alias SHGetIconOverlayIndexW SHGetIconOverlayIndex; - alias SHCreateDirectoryExW SHCreateDirectoryEx; - } - static if (_WIN32_WINNT >= 0x501) { - alias SHGetFolderPathAndSubDirW SHGetFolderPathAndSubDir; - } - alias FILEDESCRIPTORW FILEDESCRIPTOR; - alias LPFILEDESCRIPTORW LPFILEDESCRIPTOR; - alias FILEGROUPDESCRIPTORW FILEGROUPDESCRIPTOR; - alias LPFILEGROUPDESCRIPTORW LPFILEGROUPDESCRIPTOR; - -} else { - alias IShellExecuteHookA IShellExecuteHook; - alias IShellLinkA IShellLink; - alias BROWSEINFOA BROWSEINFO; - alias SHBrowseForFolderA SHBrowseForFolder; - alias SHGetDataFromIDListA SHGetDataFromIDList; - alias SHGetPathFromIDListA SHGetPathFromIDList; - static if (_WIN32_IE >= 0x400) { - alias SHGetSpecialFolderPathA SHGetSpecialFolderPath; - } - alias SHGetFolderPathA SHGetFolderPath; - static if (_WIN32_WINNT >= 0x500) { - alias SHGetIconOverlayIndexA SHGetIconOverlayIndex; - alias SHCreateDirectoryExA SHCreateDirectoryEx; - } - static if (_WIN32_WINNT >= 0x501) { - alias SHGetFolderPathAndSubDirA SHGetFolderPathAndSubDir; - } - alias FILEDESCRIPTORA FILEDESCRIPTOR; - alias LPFILEDESCRIPTORA LPFILEDESCRIPTOR; - alias FILEGROUPDESCRIPTORA FILEGROUPDESCRIPTOR; - alias LPFILEGROUPDESCRIPTORA LPFILEGROUPDESCRIPTOR; -} -alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO; - -static if (_WIN32_WINNT >= 0x501) { - interface IFolderView : IUnknown { - HRESULT GetAutoArrange(); - HRESULT GetCurrentViewMode(UINT); - HRESULT GetDefaultSpacing(POINT*); - HRESULT GetFocusedItem(int*); - HRESULT GetFolder(REFIID, PVOID*); - HRESULT GetItemPosition(LPCITEMIDLIST, POINT*); - HRESULT GetSelectionMarkedItem(int*); - HRESULT GetSpacing(POINT*); - HRESULT Item(int, LPITEMIDLIST*); - HRESULT ItemCount(UINT, int*); - HRESULT Items(UINT, REFIID, PVOID*); - HRESULT SelectAndPositionItems(UINT, LPCITEMIDLIST*, POINT*, DWORD); - HRESULT SelectItem(int, DWORD); - HRESULT SetCurrentViewMode(UINT); - } - alias IFolderView LPFOLDERVIEW; -} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 4.0 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_shlobj.d) + */ +module core.sys.windows.shlobj; +pragma(lib, "shell32"); + +// TODO: fix bitfields +// TODO: CMIC_VALID_SEE_FLAGS +// SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K + +import core.sys.windows.commctrl, core.sys.windows.ole2, core.sys.windows.shlguid, core.sys.windows.shellapi; +private import core.sys.windows.prsht, core.sys.windows.unknwn, core.sys.windows.w32api, core.sys.windows.winbase, + core.sys.windows.winnt, core.sys.windows.winuser, core.sys.windows.wtypes, core.sys.windows.objfwd, core.sys.windows.objidl; +private import core.sys.windows.winnetwk; // for NETRESOURCE +private import core.sys.windows.oaidl : VARIANT; + + +// FIXME: clean up Windows version support + +align(1): + +const BIF_RETURNONLYFSDIRS = 1; +const BIF_DONTGOBELOWDOMAIN = 2; +const BIF_STATUSTEXT = 4; +const BIF_RETURNFSANCESTORS = 8; +const BIF_EDITBOX = 16; +const BIF_VALIDATE = 32; +const BIF_NEWDIALOGSTYLE = 64; +const BIF_BROWSEINCLUDEURLS = 128; +const BIF_USENEWUI = BIF_EDITBOX | BIF_NEWDIALOGSTYLE; +const BIF_BROWSEFORCOMPUTER = 0x1000; +const BIF_BROWSEFORPRINTER = 0x2000; +const BIF_BROWSEINCLUDEFILES = 0x4000; +const BIF_SHAREABLE = 0x8000; +const BFFM_INITIALIZED = 1; +const BFFM_SELCHANGED = 2; +const BFFM_VALIDATEFAILEDA = 3; +const BFFM_VALIDATEFAILEDW = 4; +const BFFM_SETSTATUSTEXTA = WM_USER + 100; +const BFFM_ENABLEOK = WM_USER + 101; +const BFFM_SETSELECTIONA = WM_USER + 102; +const BFFM_SETSELECTIONW = WM_USER + 103; +const BFFM_SETSTATUSTEXTW = WM_USER + 104; +const BFFM_SETOKTEXT = WM_USER + 105; +const BFFM_SETEXPANDED = WM_USER + 106; + +version(Unicode) { + alias BFFM_SETSTATUSTEXTW BFFM_SETSTATUSTEXT; + alias BFFM_SETSELECTIONW BFFM_SETSELECTION; + alias BFFM_VALIDATEFAILEDW BFFM_VALIDATEFAILED; +} else { + alias BFFM_SETSTATUSTEXTA BFFM_SETSTATUSTEXT; + alias BFFM_SETSELECTIONA BFFM_SETSELECTION; + alias BFFM_VALIDATEFAILEDA BFFM_VALIDATEFAILED; +} + +const DVASPECT_SHORTNAME = 2; + +enum SHARD { + SHARD_PIDL = 1, + SHARD_PATHA, + SHARD_PATHW, + SHARD_APPIDINFO, + SHARD_APPIDINFOIDLIST, + SHARD_LINK, + SHARD_APPIDINFOLINK, + SHARD_SHELLITEM, // = 8 + SHARD_PATH = (_WIN32_UNICODE ? SHARD_PATHW : SHARD_PATHA) +} + +const SHCNE_RENAMEITEM = 1; +const SHCNE_CREATE = 2; +const SHCNE_DELETE = 4; +const SHCNE_MKDIR = 8; +const SHCNE_RMDIR = 16; +const SHCNE_MEDIAINSERTED = 32; +const SHCNE_MEDIAREMOVED = 64; +const SHCNE_DRIVEREMOVED = 128; +const SHCNE_DRIVEADD = 256; +const SHCNE_NETSHARE = 512; +const SHCNE_NETUNSHARE = 1024; +const SHCNE_ATTRIBUTES = 2048; +const SHCNE_UPDATEDIR = 4096; +const SHCNE_UPDATEITEM = 8192; +const SHCNE_SERVERDISCONNECT = 16384; +const SHCNE_UPDATEIMAGE = 32768; +const SHCNE_DRIVEADDGUI = 65536; +const SHCNE_RENAMEFOLDER = 0x20000; +const SHCNE_FREESPACE = 0x40000; +const SHCNE_ASSOCCHANGED = 0x8000000; +const SHCNE_DISKEVENTS = 0x2381F; +const SHCNE_GLOBALEVENTS = 0xC0581E0; +const SHCNE_ALLEVENTS = 0x7FFFFFFF; +const SHCNE_INTERRUPT = 0x80000000; + +const SHCNF_IDLIST = 0; +const SHCNF_PATHA = 1; +const SHCNF_PRINTERA = 2; +const SHCNF_DWORD = 3; +const SHCNF_PATHW = 5; +const SHCNF_PRINTERW = 6; +const SHCNF_TYPE = 0xFF; +const SHCNF_FLUSH = 0x1000; +const SHCNF_FLUSHNOWAIT = 0x2000; + +version(Unicode) { + alias SHCNF_PATHW SHCNF_PATH; + alias SHCNF_PRINTERW SHCNF_PRINTER; +} else { + alias SHCNF_PATHA SHCNF_PATH; + alias SHCNF_PRINTERA SHCNF_PRINTER; +} + +enum SFGAOF : DWORD { + SFGAO_CANCOPY = DROPEFFECT.DROPEFFECT_COPY, + SFGAO_CANMOVE = DROPEFFECT.DROPEFFECT_MOVE, + SFGAO_CANLINK = DROPEFFECT.DROPEFFECT_LINK, + SFGAO_CANRENAME = 0x00000010L, + SFGAO_CANDELETE = 0x00000020L, + SFGAO_HASPROPSHEET = 0x00000040L, + SFGAO_DROPTARGET = 0x00000100L, + SFGAO_CAPABILITYMASK = 0x00000177L, + SFGAO_ISSLOW = 0x00004000L, + SFGAO_GHOSTED = 0x00008000L, + SFGAO_LINK = 0x00010000L, + SFGAO_SHARE = 0x00020000L, + SFGAO_READONLY = 0x00040000L, + SFGAO_HIDDEN = 0x00080000L, + SFGAO_DISPLAYATTRMASK = (SFGAO_ISSLOW | SFGAO_GHOSTED | SFGAO_LINK + | SFGAO_SHARE | SFGAO_READONLY | SFGAO_HIDDEN), + SFGAO_FILESYSANCESTOR = 0x10000000L, + SFGAO_FOLDER = 0x20000000L, + SFGAO_FILESYSTEM = 0x40000000L, + SFGAO_HASSUBFOLDER = 0x80000000L, + SFGAO_CONTENTSMASK = 0x80000000L, + SFGAO_VALIDATE = 0x01000000L, + SFGAO_REMOVABLE = 0x02000000L, + SFGAO_COMPRESSED = 0x04000000L +} +const STRRET_WSTR = 0; +const STRRET_OFFSET = 1; +const STRRET_CSTR = 2; + +enum { + SHGDFIL_FINDDATA = 1, + SHGDFIL_NETRESOURCE, + SHGDFIL_DESCRIPTIONID +} + +enum { + SHDID_ROOT_REGITEM = 1, + SHDID_FS_FILE, + SHDID_FS_DIRECTORY, + SHDID_FS_OTHER, + SHDID_COMPUTER_DRIVE35, + SHDID_COMPUTER_DRIVE525, + SHDID_COMPUTER_REMOVABLE, + SHDID_COMPUTER_FIXED, + SHDID_COMPUTER_NETDRIVE, + SHDID_COMPUTER_CDROM, + SHDID_COMPUTER_RAMDISK, + SHDID_COMPUTER_OTHER, + SHDID_NET_DOMAIN, + SHDID_NET_SERVER, + SHDID_NET_SHARE, + SHDID_NET_RESTOFNET, + SHDID_NET_OTHER +} + +const TCHAR[] REGSTR_PATH_EXPLORER = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"; +const TCHAR[] REGSTR_PATH_SPECIAL_FOLDERS=REGSTR_PATH_EXPLORER ~ "\\Shell Folders"; + +enum { + CSIDL_DESKTOP = 0, + CSIDL_INTERNET, + CSIDL_PROGRAMS, + CSIDL_CONTROLS, + CSIDL_PRINTERS, + CSIDL_PERSONAL, + CSIDL_FAVORITES, + CSIDL_STARTUP, + CSIDL_RECENT, + CSIDL_SENDTO, + CSIDL_BITBUCKET, + CSIDL_STARTMENU, // = 11 + CSIDL_MYMUSIC = 13, + CSIDL_MYVIDEO, // = 14 + CSIDL_DESKTOPDIRECTORY = 16, + CSIDL_DRIVES, + CSIDL_NETWORK, + CSIDL_NETHOOD, + CSIDL_FONTS, + CSIDL_TEMPLATES, + CSIDL_COMMON_STARTMENU, + CSIDL_COMMON_PROGRAMS, + CSIDL_COMMON_STARTUP, + CSIDL_COMMON_DESKTOPDIRECTORY, + CSIDL_APPDATA, + CSIDL_PRINTHOOD, + CSIDL_LOCAL_APPDATA, + CSIDL_ALTSTARTUP, + CSIDL_COMMON_ALTSTARTUP, + CSIDL_COMMON_FAVORITES, + CSIDL_INTERNET_CACHE, + CSIDL_COOKIES, + CSIDL_HISTORY, + CSIDL_COMMON_APPDATA, + CSIDL_WINDOWS, + CSIDL_SYSTEM, + CSIDL_PROGRAM_FILES, + CSIDL_MYPICTURES, + CSIDL_PROFILE, + CSIDL_SYSTEMX86, + CSIDL_PROGRAM_FILESX86, + CSIDL_PROGRAM_FILES_COMMON, + CSIDL_PROGRAM_FILES_COMMONX86, + CSIDL_COMMON_TEMPLATES, + CSIDL_COMMON_DOCUMENTS, + CSIDL_COMMON_ADMINTOOLS, + CSIDL_ADMINTOOLS, + CSIDL_CONNECTIONS, // = 49 + CSIDL_COMMON_MUSIC = 53, + CSIDL_COMMON_PICTURES, + CSIDL_COMMON_VIDEO, + CSIDL_RESOURCES, + CSIDL_RESOURCES_LOCALIZED, + CSIDL_COMMON_OEM_LINKS, + CSIDL_CDBURN_AREA, // = 59 + CSIDL_COMPUTERSNEARME = 61, + CSIDL_FLAG_DONT_VERIFY = 0x4000, + CSIDL_FLAG_CREATE = 0x8000, + CSIDL_FLAG_MASK = 0xFF00 +} + +const TCHAR[] + CFSTR_SHELLIDLIST = "Shell IDList Array", + CFSTR_SHELLIDLISTOFFSET = "Shell Object Offsets", + CFSTR_NETRESOURCES = "Net Resource", + CFSTR_FILECONTENTS = "FileContents", + CFSTR_FILENAMEA = "FileName", + CFSTR_FILENAMEMAPA = "FileNameMap", + CFSTR_FILEDESCRIPTORA = "FileGroupDescriptor", + CFSTR_INETURLA = "UniformResourceLocator", + CFSTR_SHELLURL = CFSTR_INETURLA, + CFSTR_FILENAMEW = "FileNameW", + CFSTR_FILENAMEMAPW = "FileNameMapW", + CFSTR_FILEDESCRIPTORW = "FileGroupDescriptorW", + CFSTR_INETURLW = "UniformResourceLocatorW"; + +version(Unicode) { + alias CFSTR_FILENAMEW CFSTR_FILENAME; + alias CFSTR_FILENAMEMAPW CFSTR_FILENAMEMAP; + alias CFSTR_FILEDESCRIPTORW CFSTR_FILEDESCRIPTOR; + alias CFSTR_INETURLW CFSTR_INETURL; +} else { + alias CFSTR_FILENAMEA CFSTR_FILENAME; + alias CFSTR_FILENAMEMAPA CFSTR_FILENAMEMAP; + alias CFSTR_FILEDESCRIPTORA CFSTR_FILEDESCRIPTOR; + alias CFSTR_INETURLA CFSTR_INETURL; +} +const TCHAR[] + CFSTR_PRINTERGROUP = "PrinterFriendlyName", + CFSTR_INDRAGLOOP = "InShellDragLoop", + CFSTR_PASTESUCCEEDED = "Paste Succeeded", + CFSTR_PERFORMEDDROPEFFECT = "Performed DropEffect", + CFSTR_PREFERREDDROPEFFECT = "Preferred DropEffect"; + +const CMF_NORMAL=0; +const CMF_DEFAULTONLY=1; +const CMF_VERBSONLY=2; +const CMF_EXPLORE=4; +const CMF_NOVERBS=8; +const CMF_CANRENAME=16; +const CMF_NODEFAULT=32; +const CMF_INCLUDESTATIC=64; +const CMF_RESERVED=0xffff0000; +const GCS_VERBA=0; +const GCS_HELPTEXTA=1; +const GCS_VALIDATEA=2; +const GCS_VERBW=4; +const GCS_HELPTEXTW=5; +const GCS_VALIDATEW=6; +const GCS_UNICODE=4; + +version(Unicode) { + alias GCS_VERBW GCS_VERB; + alias GCS_HELPTEXTW GCS_HELPTEXT; + alias GCS_VALIDATEW GCS_VALIDATE; +} else { + alias GCS_VERBA GCS_VERB; + alias GCS_HELPTEXTA GCS_HELPTEXT; + alias GCS_VALIDATEA GCS_VALIDATE; +} + +const TCHAR[] + CMDSTR_NEWFOLDER = "NewFolder", + CMDSTR_VIEWLIST = "ViewList", + CMDSTR_VIEWDETAILS = "ViewDetails"; + +const CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY; +const CMIC_MASK_ICON = SEE_MASK_ICON; +const CMIC_MASK_FLAG_NO_UI = SEE_MASK_FLAG_NO_UI; +const CMIC_MASK_MODAL = 0x80000000; +// TODO: This isn't defined anywhere in MinGW. +//const CMIC_VALID_SEE_FLAGS=SEE_VALID_CMIC_FLAGS; + +const GIL_OPENICON = 1; +const GIL_FORSHELL = 2; +const GIL_SIMULATEDOC = 1; +const GIL_PERINSTANCE = 2; +const GIL_PERCLASS = 4; +const GIL_NOTFILENAME = 8; +const GIL_DONTCACHE = 16; + +const FVSIF_RECT = 1; +const FVSIF_PINNED = 2; +const FVSIF_NEWFAILED = 0x8000000; +const FVSIF_NEWFILE = 0x80000000; +const FVSIF_CANVIEWIT = 0x40000000; + +const CDBOSC_SETFOCUS = 0; +const CDBOSC_KILLFOCUS = 1; +const CDBOSC_SELCHANGE = 2; +const CDBOSC_RENAME = 3; + +const FCIDM_SHVIEWFIRST = 0; +const FCIDM_SHVIEWLAST = 0x7fff; +const FCIDM_BROWSERFIRST = 0xa000; +const FCIDM_BROWSERLAST = 0xbf00; +const FCIDM_GLOBALFIRST = 0x8000; +const FCIDM_GLOBALLAST = 0x9fff; +const FCIDM_MENU_FILE = FCIDM_GLOBALFIRST; +const FCIDM_MENU_EDIT = FCIDM_GLOBALFIRST+0x0040; +const FCIDM_MENU_VIEW = FCIDM_GLOBALFIRST+0x0080; +const FCIDM_MENU_VIEW_SEP_OPTIONS = FCIDM_GLOBALFIRST+0x0081; +const FCIDM_MENU_TOOLS = FCIDM_GLOBALFIRST+0x00c0; +const FCIDM_MENU_TOOLS_SEP_GOTO = FCIDM_GLOBALFIRST+0x00c1; +const FCIDM_MENU_HELP = FCIDM_GLOBALFIRST+0x0100; +const FCIDM_MENU_FIND = FCIDM_GLOBALFIRST+0x0140; +const FCIDM_MENU_EXPLORE = FCIDM_GLOBALFIRST+0x0150; +const FCIDM_MENU_FAVORITES = FCIDM_GLOBALFIRST+0x0170; +const FCIDM_TOOLBAR = FCIDM_BROWSERFIRST; +const FCIDM_STATUS = FCIDM_BROWSERFIRST+1; + +const SBSP_DEFBROWSER = 0; +const SBSP_SAMEBROWSER = 1; +const SBSP_NEWBROWSER = 2; +const SBSP_DEFMODE = 0; +const SBSP_OPENMODE = 16; +const SBSP_EXPLOREMODE = 32; +const SBSP_ABSOLUTE = 0; +const SBSP_RELATIVE = 0x1000; +const SBSP_PARENT = 0x2000; +const SBSP_INITIATEDBYHLINKFRAME = 0x80000000; +const SBSP_REDIRECT = 0x40000000; + +enum { + FCW_STATUS=1, + FCW_TOOLBAR, + FCW_TREE +} + +const FCT_MERGE=1; +const FCT_CONFIGABLE=2; +const FCT_ADDTOEND=4; + +const SVSI_DESELECT=0; +const SVSI_SELECT=1; +const SVSI_EDIT=3; +const SVSI_DESELECTOTHERS=4; +const SVSI_ENSUREVISIBLE=8; +const SVSI_FOCUSED=16; + +const SVGIO_BACKGROUND=0; +const SVGIO_SELECTION=1; +const SVGIO_ALLVIEW=2; + +const UINT SV2GV_CURRENTVIEW=-1; +const UINT SV2GV_DEFAULTVIEW=-2; + +alias DWORD SHGDNF; + +struct CIDA { + UINT cidl; + UINT[1] aoffset; +} +alias CIDA* LPIDA; + +struct SHITEMID { + USHORT cb; + BYTE[1] abID; +} +alias SHITEMID* LPSHITEMID; +alias const(SHITEMID)* LPCSHITEMID; + +struct ITEMIDLIST { + SHITEMID mkid; +} +alias ITEMIDLIST* LPITEMIDLIST; +alias const(ITEMIDLIST)* LPCITEMIDLIST; + +alias int function(HWND, UINT, LPARAM, LPARAM) BFFCALLBACK; + +struct BROWSEINFOA { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPSTR pszDisplayName; + LPCSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; +} +alias BROWSEINFOA* PBROWSEINFOA, LPBROWSEINFOA; + +struct BROWSEINFOW { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPWSTR pszDisplayName; + LPCWSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; +} +alias BROWSEINFOW* PBROWSEINFOW, LPBROWSEINFOW; + +struct CMINVOKECOMMANDINFO { + DWORD cbSize = this.sizeof; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + DWORD dwHotKey; + HANDLE hIcon; +} +alias CMINVOKECOMMANDINFO* LPCMINVOKECOMMANDINFO; + +struct DROPFILES { + DWORD pFiles; + POINT pt; + BOOL fNC; + BOOL fWide; +} +alias DROPFILES* LPDROPFILES; + +enum SHGNO { + SHGDN_NORMAL = 0, + SHGDN_INFOLDER, + SHGDN_FOREDITING = 0x1000, + SHGDN_INCLUDE_NONFILESYS = 0x2000, + SHGDN_FORADDRESSBAR = 0x4000, + SHGDN_FORPARSING = 0x8000 +} + +enum SHCONTF { + SHCONTF_FOLDERS = 32, + SHCONTF_NONFOLDERS = 64, + SHCONTF_INCLUDEHIDDEN = 128, + SHCONTF_INIT_ON_FIRST_NEXT = 256, + SHCONTF_NETPRINTERSRCH = 512, + SHCONTF_SHAREABLE = 1024, + SHCONTF_STORAGE = 2048 +} + +struct STRRET { + UINT uType; + union { + LPWSTR pOleStr; + UINT uOffset; + char[MAX_PATH] cStr; + } +} +alias STRRET* LPSTRRET; + +enum FD_FLAGS { + FD_CLSID = 1, + FD_SIZEPOINT = 2, + FD_ATTRIBUTES = 4, + FD_CREATETIME = 8, + FD_ACCESSTIME = 16, + FD_WRITESTIME = 32, + FD_FILESIZE = 64, + FD_LINKUI = 0x8000 +} + +struct FILEDESCRIPTORA { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + CHAR[MAX_PATH] cFileName; +} +alias FILEDESCRIPTORA* LPFILEDESCRIPTORA; + +struct FILEDESCRIPTORW { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + WCHAR[MAX_PATH] cFileName; +} +alias FILEDESCRIPTORW* LPFILEDESCRIPTORW; + +struct FILEGROUPDESCRIPTORA { + UINT cItems; + FILEDESCRIPTORA[1] fgd; +} +alias FILEGROUPDESCRIPTORA* LPFILEGROUPDESCRIPTORA; + +struct FILEGROUPDESCRIPTORW { + UINT cItems; + FILEDESCRIPTORW[1] fgd; +} +alias FILEGROUPDESCRIPTORW* LPFILEGROUPDESCRIPTORW; + +enum SLR_FLAGS { + SLR_NO_UI = 1, + SLR_ANY_MATCH = 2, + SLR_UPDATE = 4, + SLR_NOUPDATE = 8, + SLR_NOSEARCH = 16, + SLR_NOTRACK = 32, + SLR_NOLINKINFO = 64, + SLR_INVOKE_MSI = 128 +} + +enum SLGP_FLAGS { + SLGP_SHORTPATH=1, + SLGP_UNCPRIORITY=2, + SLGP_RAWPATH=4 +} + +alias PBYTE LPVIEWSETTINGS; + +enum FOLDERFLAGS { + FWF_AUTOARRANGE = 1, + FWF_ABBREVIATEDNAMES = 2, + FWF_SNAPTOGRID = 4, + FWF_OWNERDATA = 8, + FWF_BESTFITWINDOW = 16, + FWF_DESKTOP = 32, + FWF_SINGLESEL = 64, + FWF_NOSUBFOLDERS = 128, + FWF_TRANSPARENT = 256, + FWF_NOCLIENTEDGE = 512, + FWF_NOSCROLL = 0x400, + FWF_ALIGNLEFT = 0x800, + FWF_SINGLECLICKACTIVATE = 0x8000 +} + +enum FOLDERVIEWMODE { + FVM_ICON = 1, + FVM_SMALLICON, + FVM_LIST, + FVM_DETAILS +} + +struct FOLDERSETTINGS { + UINT ViewMode; + UINT fFlags; +} +alias FOLDERSETTINGS* LPFOLDERSETTINGS; +alias const(FOLDERSETTINGS)* LPCFOLDERSETTINGS; + +struct FVSHOWINFO { + DWORD cbSize = this.sizeof; + HWND hwndOwner; + int iShow; + DWORD dwFlags; + RECT rect; + LPUNKNOWN punkRel; + OLECHAR[MAX_PATH] strNewFile; +} +alias FVSHOWINFO* LPFVSHOWINFO; + +struct NRESARRAY { + UINT cItems; + NETRESOURCE[1] nr; +} +alias NRESARRAY* LPNRESARRAY; + +enum { + SBSC_HIDE, + SBSC_SHOW, + SBSC_TOGGLE, + SBSC_QUERY +} + +enum { + SBCMDID_ENABLESHOWTREE, + SBCMDID_SHOWCONTROL, + SBCMDID_CANCELNAVIGATION, + SBCMDID_MAYSAVECHANGES, + SBCMDID_SETHLINKFRAME, + SBCMDID_ENABLESTOP, + SBCMDID_OPTIONS +} +enum SVUIA_STATUS { + SVUIA_DEACTIVATE, + SVUIA_ACTIVATE_NOFOCUS, + SVUIA_ACTIVATE_FOCUS, + SVUIA_INPLACEACTIVATE +} + +static if (_WIN32_IE >= 0x500) { + + struct EXTRASEARCH + { + GUID guidSearch; + WCHAR[80] wszFriendlyName; + WCHAR[2084] wszUrl; + } + alias EXTRASEARCH* LPEXTRASEARCH; + + alias DWORD SHCOLSTATEF; + + struct SHCOLUMNID { + GUID fmtid; + DWORD pid; + } + alias SHCOLUMNID* LPSHCOLUMNID; + alias const(SHCOLUMNID)* LPCSHCOLUMNID; + + struct SHELLDETAILS { + int fmt; + int cxChar; + STRRET str; + } + alias SHELLDETAILS* LPSHELLDETAILS; + + struct PERSIST_FOLDER_TARGET_INFO + { + LPITEMIDLIST pidlTargetFolder; + WCHAR[MAX_PATH] szTargetParsingName; + WCHAR[MAX_PATH] szNetworkProvider; + DWORD dwAttributes; + int csidl; + } + + enum SHGFP_TYPE { + SHGFP_TYPE_CURRENT = 0, + SHGFP_TYPE_DEFAULT = 1, + } + +} + +interface IEnumIDList : IUnknown { + HRESULT Next(ULONG, LPITEMIDLIST*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumIDList*); +} +alias IEnumIDList LPENUMIDLIST; + +interface IObjMgr : IUnknown { + HRESULT Append(IUnknown); + HRESULT Remove(IUnknown); +} + +interface IContextMenu : IUnknown { + HRESULT QueryContextMenu(HMENU, UINT, UINT, UINT, UINT); + HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); + HRESULT GetCommandString(UINT, UINT, PUINT, LPSTR, UINT); +} +alias IContextMenu LPCONTEXTMENU; + +interface IContextMenu2 : IContextMenu { + HRESULT HandleMenuMsg(UINT, WPARAM, LPARAM); +}; +alias IContextMenu2 LPCONTEXTMENU2; + +static if (_WIN32_IE >= 0x500) { + align(8) { + struct SHCOLUMNINIT { + ULONG dwFlags; + ULONG dwReserved; + WCHAR[MAX_PATH] wszFolder; + } + alias SHCOLUMNINIT* LPSHCOLUMNINIT; + alias const(SHCOLUMNINIT)* LPCSHCOLUMNINIT; + + struct SHCOLUMNDATA { + ULONG dwFlags; + DWORD dwFileAttributes; + ULONG dwReserved; + WCHAR *pwszExt; + WCHAR[MAX_PATH] wszFile; + } + alias SHCOLUMNDATA* LPSHCOLUMNDATA; + alias const(SHCOLUMNDATA)* LPCSHCOLUMNDATA; + } + + const MAX_COLUMN_NAME_LEN = 80; + const MAX_COLUMN_DESC_LEN = 128; + + align(1) struct SHCOLUMNINFO { + SHCOLUMNID scid; + VARTYPE vt; + DWORD fmt; + UINT cChars; + DWORD csFlags; + WCHAR[MAX_COLUMN_NAME_LEN] wszTitle; + WCHAR[MAX_COLUMN_DESC_LEN] wszDescription; + } + alias SHCOLUMNINFO* LPSHCOLUMNINFO; + alias const(SHCOLUMNINFO)* LPCSHCOLUMNINFO; + + enum SHCOLSTATE { + SHCOLSTATE_TYPE_STR = 0x00000001, + SHCOLSTATE_TYPE_INT = 0x00000002, + SHCOLSTATE_TYPE_DATE = 0x00000003, + SHCOLSTATE_TYPEMASK = 0x0000000f, + SHCOLSTATE_ONBYDEFAULT = 0x00000010, + SHCOLSTATE_SLOW = 0x00000020, + SHCOLSTATE_EXTENDED = 0x00000040, + SHCOLSTATE_SECONDARYUI = 0x00000080, + SHCOLSTATE_HIDDEN = 0x00000100, + SHCOLSTATE_PREFER_VARCMP = 0x00000200 + } + + interface IColumnProvider : IUnknown { + HRESULT Initialize(LPCSHCOLUMNINIT); + HRESULT GetColumnInfo(DWORD, SHCOLUMNINFO*); + HRESULT GetItemData(LPCSHCOLUMNID, LPCSHCOLUMNDATA, VARIANT*); + } +}/* _WIN32_IE >= 0x500 */ + +interface IQueryInfo : IUnknown { + HRESULT GetInfoTip(DWORD, WCHAR**); + HRESULT GetInfoFlags(DWORD*); +} + +interface IShellExtInit : IUnknown { + HRESULT Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY); +} +alias IShellExtInit LPSHELLEXTINIT; + +interface IShellPropSheetExt : IUnknown { + HRESULT AddPages(LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM); +} +alias IShellPropSheetExt LPSHELLPROPSHEETEXT; + +interface IExtractIconA : IUnknown { + HRESULT GetIconLocation(UINT, LPSTR, UINT, int*, PUINT); + HRESULT Extract(LPCSTR, UINT, HICON*, HICON*, UINT); +}; +alias IExtractIconA LPEXTRACTICONA; + +interface IExtractIconW : IUnknown { + HRESULT GetIconLocation(UINT, LPWSTR, UINT, int*, PUINT); + HRESULT Extract(LPCWSTR, UINT, HICON*, HICON*, UINT); +} +alias IExtractIconW LPEXTRACTICONW; + +version(Unicode) { + alias IExtractIconW IExtractIcon; + alias LPEXTRACTICONW LPEXTRACTICON; +} else { + alias IExtractIconA IExtractIcon; + alias LPEXTRACTICONA LPEXTRACTICON; +} + +interface IShellLinkA : IUnknown { + HRESULT GetPath(LPSTR, int, WIN32_FIND_DATAA*, DWORD); + HRESULT GetIDList(LPITEMIDLIST*); + HRESULT SetIDList(LPCITEMIDLIST); + HRESULT GetDescription(LPSTR, int); + HRESULT SetDescription(LPCSTR); + HRESULT GetWorkingDirectory(LPSTR, int); + HRESULT SetWorkingDirectory(LPCSTR); + HRESULT GetArguments(LPSTR, int); + HRESULT SetArguments(LPCSTR); + HRESULT GetHotkey(PWORD); + HRESULT SetHotkey(WORD); + HRESULT GetShowCmd(int*); + HRESULT SetShowCmd(int); + HRESULT GetIconLocation(LPSTR, int, int*); + HRESULT SetIconLocation(LPCSTR, int); + HRESULT SetRelativePath(LPCSTR , DWORD); + HRESULT Resolve(HWND, DWORD); + HRESULT SetPath(LPCSTR); +} + +interface IShellLinkW : IUnknown { + HRESULT GetPath(LPWSTR, int, WIN32_FIND_DATAW*, DWORD); + HRESULT GetIDList(LPITEMIDLIST*); + HRESULT SetIDList(LPCITEMIDLIST); + HRESULT GetDescription(LPWSTR, int); + HRESULT SetDescription(LPCWSTR); + HRESULT GetWorkingDirectory(LPWSTR, int); + HRESULT SetWorkingDirectory(LPCWSTR); + HRESULT GetArguments(LPWSTR, int); + HRESULT SetArguments(LPCWSTR); + HRESULT GetHotkey(PWORD); + HRESULT SetHotkey(WORD); + HRESULT GetShowCmd(int*); + HRESULT SetShowCmd(int); + HRESULT GetIconLocation(LPWSTR, int, int*); + HRESULT SetIconLocation(LPCWSTR, int); + HRESULT SetRelativePath(LPCWSTR , DWORD); + HRESULT Resolve(HWND, DWORD); + HRESULT SetPath(LPCWSTR); +} + + +interface IShellFolder : IUnknown { + HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); + HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); + HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); + HRESULT CreateViewObject(HWND, REFIID, PVOID*); + HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); + HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); + HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); + HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); +} +alias IShellFolder LPSHELLFOLDER; + +static if (_WIN32_IE >= 0x500) { + +interface IEnumExtraSearch: IUnknown { + HRESULT Next(ULONG, LPEXTRASEARCH*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumExtraSearch*); +} +alias IEnumExtraSearch LPENUMEXTRASEARCH; + +interface IShellFolder2 : IShellFolder { + HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); + HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); + HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); + HRESULT CreateViewObject(HWND, REFIID, PVOID*); + HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); + HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); + HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); + HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); + HRESULT GetDefaultSearchGUID(GUID*); + HRESULT EnumSearches(IEnumExtraSearch*); + HRESULT GetDefaultColumn(DWORD, ULONG*, ULONG*); + HRESULT GetDefaultColumnState(UINT, SHCOLSTATEF*); + HRESULT GetDetailsEx(LPCITEMIDLIST, const(SHCOLUMNID)*, VARIANT*); + HRESULT GetDetailsOf(LPCITEMIDLIST, UINT, SHELLDETAILS*); + HRESULT MapColumnToSCID(UINT, SHCOLUMNID*); +} +alias IShellFolder2 LPSHELLFOLDER2; + +} /* _WIN32_IE >= 0x500 */ + +interface ICopyHook : IUnknown { + UINT CopyCallback(HWND, UINT, UINT, LPCSTR, DWORD, LPCSTR, DWORD); +} +alias ICopyHook LPCOPYHOOK; + +interface IFileViewerSite : IUnknown { + HRESULT SetPinnedWindow(HWND); + HRESULT GetPinnedWindow(HWND*); +} +alias IFileViewerSite LPFILEVIEWERSITE; + +interface IFileViewer : IUnknown { + HRESULT ShowInitialize(LPFILEVIEWERSITE); + HRESULT Show(LPFVSHOWINFO); + HRESULT PrintTo(LPSTR, BOOL); +} +alias IFileViewer LPFILEVIEWER; + +interface IFileSystemBindData : IUnknown { + HRESULT SetFindData(const(WIN32_FIND_DATAW)*); + HRESULT GetFindData(WIN32_FIND_DATAW*); +} + +interface IPersistFolder : IPersist { + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); +} +alias IPersistFolder LPPERSISTFOLDER; + +static if (_WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500) { + +interface IPersistFolder2 : IPersistFolder { + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); + HRESULT GetCurFolder(LPITEMIDLIST*); +} +alias IPersistFolder2 LPPERSISTFOLDER2; + +}/* _WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500 */ + +static if (_WIN32_IE >= 0x500) { + +interface IPersistFolder3 : IPersistFolder2 { + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); + HRESULT GetCurFolder(LPITEMIDLIST*); + HRESULT InitializeEx(IBindCtx, LPCITEMIDLIST, const(PERSIST_FOLDER_TARGET_INFO)*); + HRESULT GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO*); +} +alias IPersistFolder3 LPPERSISTFOLDER3; + +} /* _WIN32_IE >= 0x500 */ + +alias IShellBrowser LPSHELLBROWSER; +alias IShellView LPSHELLVIEW; + +interface IShellBrowser : IOleWindow { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT InsertMenusSB(HMENU, LPOLEMENUGROUPWIDTHS); + HRESULT SetMenuSB(HMENU, HOLEMENU, HWND); + HRESULT RemoveMenusSB(HMENU); + HRESULT SetStatusTextSB(LPCOLESTR); + HRESULT EnableModelessSB(BOOL); + HRESULT TranslateAcceleratorSB(LPMSG, WORD); + HRESULT BrowseObject(LPCITEMIDLIST, UINT); + HRESULT GetViewStateStream(DWORD, LPSTREAM*); + HRESULT GetControlWindow(UINT, HWND*); + HRESULT SendControlMsg(UINT, UINT, WPARAM, LPARAM, LRESULT*); + HRESULT QueryActiveShellView(LPSHELLVIEW*); + HRESULT OnViewWindowActive(LPSHELLVIEW); + HRESULT SetToolbarItems(LPTBBUTTON, UINT, UINT); +} + +interface IShellView : IOleWindow { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT TranslateAccelerator(LPMSG); +//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT +//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +//[Yes] #else + HRESULT EnableModeless(BOOL); +//[Yes] #endif + HRESULT UIActivate(UINT); + HRESULT Refresh(); + HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); + HRESULT DestroyViewWindow(); + HRESULT GetCurrentInfo(LPFOLDERSETTINGS); + HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT SaveViewState(); + HRESULT SelectItem(LPCITEMIDLIST, UINT); + HRESULT GetItemObject(UINT, REFIID, PVOID*); +} + +interface ICommDlgBrowser : IUnknown { + HRESULT OnDefaultCommand(IShellView); + HRESULT OnStateChange(IShellView, ULONG); + HRESULT IncludeObject(IShellView, LPCITEMIDLIST); +} +alias ICommDlgBrowser LPCOMMDLGBROWSER; + +alias GUID SHELLVIEWID; + +struct SV2CVW2_PARAMS { + DWORD cbSize = this.sizeof; + IShellView psvPrev; + FOLDERSETTINGS *pfs; + IShellBrowser psbOwner; + RECT *prcView; + const(SHELLVIEWID)* pvid; + HWND hwndView; +} +alias SV2CVW2_PARAMS* LPSV2CVW2_PARAMS; + +interface IShellView2 : IShellView { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT TranslateAccelerator(LPMSG); +//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT +//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +//[Yes] #else + HRESULT EnableModeless(BOOL); +//[Yes] #endif + HRESULT UIActivate(UINT); + HRESULT Refresh(); + HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); + HRESULT DestroyViewWindow(); + HRESULT GetCurrentInfo(LPFOLDERSETTINGS); + HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT SaveViewState(); + HRESULT SelectItem(LPCITEMIDLIST, UINT); + HRESULT GetItemObject(UINT, REFIID, PVOID*); + HRESULT GetView(SHELLVIEWID*, ULONG); + HRESULT CreateViewWindow2(LPSV2CVW2_PARAMS); +} + +interface IShellExecuteHookA : IUnknown { + HRESULT Execute(LPSHELLEXECUTEINFOA); +} + +interface IShellExecuteHookW : IUnknown { + HRESULT Execute(LPSHELLEXECUTEINFOW); +} + +interface IShellIcon : IUnknown { + HRESULT GetIconOf(LPCITEMIDLIST, UINT, PINT); +} +alias IShellIcon LPSHELLICON; + +struct SHELLFLAGSTATE { + short _bf; +/* + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + UINT fRestFlags : 3; +*/ + @property bool fShowAllObjects() { return cast(bool) (_bf & 0x0001); } + @property bool fShowExtensions() { return cast(bool) (_bf & 0x0002); } + @property bool fNoConfirmRecycle() { return cast(bool) (_bf & 0x0004); } + @property bool fShowSysFiles() { return cast(bool) (_bf & 0x0008); } + @property bool fShowCompColor() { return cast(bool) (_bf & 0x0010); } + @property bool fDoubleClickInWebView() { return cast(bool) (_bf & 0x0020); } + @property bool fDesktopHTML() { return cast(bool) (_bf & 0x0040); } + @property bool fWin95Classic() { return cast(bool) (_bf & 0x0080); } + @property bool fDontPrettyPath() { return cast(bool) (_bf & 0x0100); } + @property bool fShowAttribCol() { return cast(bool) (_bf & 0x0200); } + @property bool fMapNetDrvBtn() { return cast(bool) (_bf & 0x0400); } + @property bool fShowInfoTip() { return cast(bool) (_bf & 0x0800); } + @property bool fHideIcons() { return cast(bool) (_bf & 0x1000); } + @property ubyte fRestFlags() { return cast(ubyte) (_bf >> 13); } + + @property bool fShowAllObjects(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFE) | f); return f; } + @property bool fShowExtensions(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFD) | (f << 1)); return f; } + @property bool fNoConfirmRecycle(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFB) | (f << 2)); return f; } + @property bool fShowSysFiles(bool f) { _bf = cast(ushort) ((_bf & ~0xFFF8) | (f << 3)); return f; } + @property bool fShowCompColor(bool f) { _bf = cast(ushort) ((_bf & ~0xFFEF) | (f << 4)); return f; } + @property bool fDoubleClickInWebView(bool f) { _bf = cast(ushort) ((_bf & ~0xFFDF) | (f << 5)); return f; } + @property bool fDesktopHTML(bool f) { _bf = cast(ushort) ((_bf & ~0xFFBF) | (f << 6)); return f; } + @property bool fWin95Classic(bool f) { _bf = cast(ushort) ((_bf & ~0xFF8F) | (f << 7)); return f; } + @property bool fDontPrettyPath(bool f) { _bf = cast(ushort) ((_bf & ~0xFEFF) | (f << 8)); return f; } + @property bool fShowAttribCol(bool f) { _bf = cast(ushort) ((_bf & ~0xFDFF) | (f << 9)); return f; } + @property bool fMapNetDrvBtn(bool f) { _bf = cast(ushort) ((_bf & ~0xFBFF) | (f << 10)); return f; } + @property bool fShowInfoTip(bool f) { _bf = cast(ushort) ((_bf & ~0xF8FF) | (f << 11)); return f; } + @property bool fHideIcons(bool f) { _bf = cast(ushort) ((_bf & ~0xEFFF) | (f << 12)); return f; } + @property ubyte fRestFlags(ubyte f) { _bf = cast(ushort) ((_bf & ~0x1FFF) | (f << 13)); return cast(ubyte) (f & 7); } +} +alias SHELLFLAGSTATE* LPSHELLFLAGSTATE; + +const SSF_SHOWALLOBJECTS = 0x1; +const SSF_SHOWEXTENSIONS = 0x2; +const SSF_SHOWCOMPCOLOR = 0x8; +const SSF_SHOWSYSFILES = 0x20; +const SSF_DOUBLECLICKINWEBVIEW = 0x80; +const SSF_SHOWATTRIBCOL = 0x100; +const SSF_DESKTOPHTML = 0x200; +const SSF_WIN95CLASSIC = 0x400; +const SSF_DONTPRETTYPATH = 0x800; +const SSF_MAPNETDRVBUTTON = 0x1000; +const SSF_SHOWINFOTIP = 0x2000; +const SSF_HIDEICONS = 0x4000; +const SSF_NOCONFIRMRECYCLE = 0x8000; + +interface IShellIconOverlayIdentifier : IUnknown { + HRESULT IsMemberOf(LPCWSTR, DWORD); + HRESULT GetOverlayInfo(LPWSTR, int, int*, DWORD*); + HRESULT GetPriority(int*); +} + +const ISIOI_ICONFILE = 0x00000001; +const ISIOI_ICONINDEX = 0x00000002; + +static if (_WIN32_WINNT >= 0x500) { + struct SHELLSTATE { + uint _bf1; + DWORD dwWin95Unused; + UINT uWin95Unused; + LONG lParamSort; + int iSortDirection; + UINT _version; + UINT uNotUsed; + uint _bf2; + /* + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + BOOL fWebView : 1; + BOOL fFilter : 1; + BOOL fShowSuperHidden : 1; + BOOL fNoNetCrawling : 1; + */ + @property bool fShowAllObjects() { return cast(bool) (_bf1 & 0x00000001); } + @property bool fShowExtensions() { return cast(bool) (_bf1 & 0x00000002); } + @property bool fNoConfirmRecycle() { return cast(bool) (_bf1 & 0x00000004); } + @property bool fShowSysFiles() { return cast(bool) (_bf1 & 0x00000008); } + @property bool fShowCompColor() { return cast(bool) (_bf1 & 0x00000010); } + @property bool fDoubleClickInWebView() { return cast(bool) (_bf1 & 0x00000020); } + @property bool fDesktopHTML() { return cast(bool) (_bf1 & 0x00000040); } + @property bool fWin95Classic() { return cast(bool) (_bf1 & 0x00000080); } + @property bool fDontPrettyPath() { return cast(bool) (_bf1 & 0x00000100); } + @property bool fShowAttribCol() { return cast(bool) (_bf1 & 0x00000200); } + @property bool fMapNetDrvBtn() { return cast(bool) (_bf1 & 0x00000400); } + @property bool fShowInfoTip() { return cast(bool) (_bf1 & 0x00000800); } + @property bool fHideIcons() { return cast(bool) (_bf1 & 0x00001000); } + @property bool fWebView() { return cast(bool) (_bf1 & 0x00002000); } + @property bool fFilter() { return cast(bool) (_bf1 & 0x00004000); } + @property bool fShowSuperHidden() { return cast(bool) (_bf1 & 0x00008000); } + @property bool fNoNetCrawling() { return cast(bool) (_bf1 & 0x00010000); } + + @property bool fShowAllObjects(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFE) | f); return f; } + @property bool fShowExtensions(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFD) | (f << 1)); return f; } + @property bool fNoConfirmRecycle(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFB) | (f << 2)); return f; } + @property bool fShowSysFiles(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFF8) | (f << 3)); return f; } + @property bool fShowCompColor(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFEF) | (f << 4)); return f; } + @property bool fDoubleClickInWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFDF) | (f << 5)); return f; } + @property bool fDesktopHTML(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFBF) | (f << 6)); return f; } + @property bool fWin95Classic(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFF8F) | (f << 7)); return f; } + @property bool fDontPrettyPath(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFEFF) | (f << 8)); return f; } + @property bool fShowAttribCol(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFDFF) | (f << 9)); return f; } + @property bool fMapNetDrvBtn(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFBFF) | (f << 10)); return f; } + @property bool fShowInfoTip(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFF8FF) | (f << 11)); return f; } + @property bool fHideIcons(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFEFFF) | (f << 12)); return f; } + @property bool fWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFDFFF) | (f << 13)); return f; } + @property bool fFilter(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFBFFF) | (f << 14)); return f; } + @property bool fShowSuperHidden(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFF8FFF) | (f << 15)); return f; } + @property bool fNoNetCrawling(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFEFFFF) | (f << 16)); return f; } + /* + BOOL fSepProcess : 1; + BOOL fStartPanelOn : 1; + BOOL fShowStartPage : 1; + UINT fSpareFlags : 13; + */ + @property bool fSepProcess() { return cast(bool) (_bf2 & 0x00000001); } + @property bool fStartPanelOn() { return cast(bool) (_bf2 & 0x00000002); } + @property bool fShowStartPage() { return cast(bool) (_bf2 & 0x00000004); } + @property ushort fSpareFlags() { return cast(ushort) ((_bf2 & 0x0000FFF8) >> 3); } + + @property bool fSepProcess(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFE) | f); return f; } + @property bool fStartPanelOn(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFD) | (f << 1)); return f; } + @property bool fShowStartPage(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFB) | (f << 2)); return f; } + @property ushort fSpareFlags(ushort f) { + _bf2 = cast(ushort) ((_bf2 & ~0xFFFF0007) | ((f & 0x1FFF) << 3)); + return cast(ushort) (f & 0x1FFF); + } + } + alias SHELLSTATE* LPSHELLSTATE; +} + +static if (_WIN32_IE >= 0x500) { + align(8) { + struct SHDRAGIMAGE { + SIZE sizeDragImage; + POINT ptOffset; + HBITMAP hbmpDragImage; + COLORREF crColorKey; + } + alias SHDRAGIMAGE* LPSHDRAGIMAGE; + } + + interface IDragSourceHelper : IUnknown { + HRESULT InitializeFromBitmap(LPSHDRAGIMAGE pshdi, IDataObject pDataObject); + HRESULT InitializeFromWindow(HWND hwnd, POINT* ppt, IDataObject pDataObject); + } + + interface IDropTargetHelper : IUnknown { + HRESULT DragEnter(HWND hwndTarget, IDataObject pDataObject, POINT* ppt, DWORD dwEffect); + HRESULT DragLeave(); + HRESULT DragOver(POINT* ppt, DWORD dwEffect); + HRESULT Drop(IDataObject pDataObject, POINT* ppt, DWORD dwEffect); + HRESULT Show(BOOL fShow); + } +} + +extern (Windows): +void SHAddToRecentDocs(UINT, PCVOID); +LPITEMIDLIST SHBrowseForFolderA(PBROWSEINFOA); +LPITEMIDLIST SHBrowseForFolderW(PBROWSEINFOW); +void SHChangeNotify(LONG, UINT, PCVOID, PCVOID); +HRESULT SHGetDataFromIDListA(LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int); +HRESULT SHGetDataFromIDListW(LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int); +HRESULT SHGetDesktopFolder(LPSHELLFOLDER*); +HRESULT SHGetInstanceExplorer(IUnknown*); +HRESULT SHGetMalloc(LPMALLOC*); +BOOL SHGetPathFromIDListA(LPCITEMIDLIST, LPSTR); +BOOL SHGetPathFromIDListW(LPCITEMIDLIST, LPWSTR); +HRESULT SHGetSpecialFolderLocation(HWND, int, LPITEMIDLIST*); +HRESULT SHLoadInProc(REFCLSID); + +static if (_WIN32_IE >= 0x400) { + BOOL SHGetSpecialFolderPathA(HWND, LPSTR, int, BOOL); + BOOL SHGetSpecialFolderPathW(HWND, LPWSTR, int, BOOL); +} + +/* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */ +HRESULT SHGetFolderPathA(HWND, int, HANDLE, DWORD, LPSTR); +HRESULT SHGetFolderPathW(HWND, int, HANDLE, DWORD, LPWSTR); + +static if (_WIN32_WINNT >= 0x500) { + INT SHGetIconOverlayIndexW(LPCWSTR pszIconPath, int iIconIndex); + INT SHGetIconOverlayIndexA(LPCSTR pszIconPath, int iIconIndex); + HRESULT SHGetFolderLocation(HWND, int, HANDLE, DWORD, LPITEMIDLIST*); + INT SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES); + INT SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES); + HRESULT SHBindToParent(LPCITEMIDLIST, REFIID, VOID**, LPCITEMIDLIST*); +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + PRF_VERIFYEXISTS = 0x0001, + PRF_TRYPROGRAMEXTENSIONS = (0x0002 | PRF_VERIFYEXISTS), + PRF_FIRSTDIRDEF = 0x0004, + PRF_DONTFINDLNK = 0x0008, + IDO_SHGIOI_SHARE = 0x0FFFFFFF, + IDO_SHGIOI_LINK = 0x0FFFFFFE, + IDO_SHGIOI_SLOWFILE = 0x0FFFFFFD, + IDO_SHGIOI_DEFAULT = 0x0FFFFFFC + } + + struct SHDESCRIPTIONID { + DWORD dwDescriptionId; + CLSID clsid; + } + alias SHDESCRIPTIONID* LPSHDESCRIPTIONID; + + BOOL PathResolve(LPWSTR, LPCWSTR*, UINT); + HRESULT SHGetFolderPathAndSubDirA(HWND, int, HANDLE, DWORD, LPCSTR, LPSTR); + HRESULT SHGetFolderPathAndSubDirW(HWND, int, HANDLE, DWORD, LPCWSTR, LPWSTR); + HRESULT SHParseDisplayName(LPCWSTR, IBindCtx, LPITEMIDLIST, SFGAOF, SFGAOF*); +} + +void SHGetSettings(LPSHELLFLAGSTATE, DWORD); + +static if (_WIN32_WINNT >= 0x500) { + void SHGetSetSettings(LPSHELLSTATE, DWORD, BOOL); + BOOL ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); + BOOL ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); + BOOL ILRemoveLastID(LPITEMIDLIST); + HRESULT ILLoadFromStream(IStream, LPITEMIDLIST*); + HRESULT ILSaveToStream(IStream, LPCITEMIDLIST); + LPITEMIDLIST ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); + LPITEMIDLIST ILClone(LPCITEMIDLIST); + LPITEMIDLIST ILCloneFirst(LPCITEMIDLIST); + LPITEMIDLIST ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); + LPITEMIDLIST ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); + LPITEMIDLIST ILFindLastID(LPCITEMIDLIST); + LPITEMIDLIST ILGetNext(LPCITEMIDLIST); + UINT ILGetSize(LPCITEMIDLIST); + void ILFree(LPITEMIDLIST); + + HRESULT SHCoCreateInstance(LPCWSTR, REFCLSID, IUnknown, REFIID, void**); +} + +version(Unicode) { + alias IShellExecuteHookW IShellExecuteHook; + alias IShellLinkW IShellLink; + alias BROWSEINFOW BROWSEINFO; + alias SHBrowseForFolderW SHBrowseForFolder; + alias SHGetDataFromIDListW SHGetDataFromIDList; + alias SHGetPathFromIDListW SHGetPathFromIDList; + static if (_WIN32_IE >= 0x400) { + alias SHGetSpecialFolderPathW SHGetSpecialFolderPath; + } + alias SHGetFolderPathW SHGetFolderPath; + static if (_WIN32_WINNT >= 0x500) { + alias SHGetIconOverlayIndexW SHGetIconOverlayIndex; + alias SHCreateDirectoryExW SHCreateDirectoryEx; + } + static if (_WIN32_WINNT >= 0x501) { + alias SHGetFolderPathAndSubDirW SHGetFolderPathAndSubDir; + } + alias FILEDESCRIPTORW FILEDESCRIPTOR; + alias LPFILEDESCRIPTORW LPFILEDESCRIPTOR; + alias FILEGROUPDESCRIPTORW FILEGROUPDESCRIPTOR; + alias LPFILEGROUPDESCRIPTORW LPFILEGROUPDESCRIPTOR; + +} else { + alias IShellExecuteHookA IShellExecuteHook; + alias IShellLinkA IShellLink; + alias BROWSEINFOA BROWSEINFO; + alias SHBrowseForFolderA SHBrowseForFolder; + alias SHGetDataFromIDListA SHGetDataFromIDList; + alias SHGetPathFromIDListA SHGetPathFromIDList; + static if (_WIN32_IE >= 0x400) { + alias SHGetSpecialFolderPathA SHGetSpecialFolderPath; + } + alias SHGetFolderPathA SHGetFolderPath; + static if (_WIN32_WINNT >= 0x500) { + alias SHGetIconOverlayIndexA SHGetIconOverlayIndex; + alias SHCreateDirectoryExA SHCreateDirectoryEx; + } + static if (_WIN32_WINNT >= 0x501) { + alias SHGetFolderPathAndSubDirA SHGetFolderPathAndSubDir; + } + alias FILEDESCRIPTORA FILEDESCRIPTOR; + alias LPFILEDESCRIPTORA LPFILEDESCRIPTOR; + alias FILEGROUPDESCRIPTORA FILEGROUPDESCRIPTOR; + alias LPFILEGROUPDESCRIPTORA LPFILEGROUPDESCRIPTOR; +} +alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO; + +static if (_WIN32_WINNT >= 0x501) { + interface IFolderView : IUnknown { + HRESULT GetAutoArrange(); + HRESULT GetCurrentViewMode(UINT); + HRESULT GetDefaultSpacing(POINT*); + HRESULT GetFocusedItem(int*); + HRESULT GetFolder(REFIID, PVOID*); + HRESULT GetItemPosition(LPCITEMIDLIST, POINT*); + HRESULT GetSelectionMarkedItem(int*); + HRESULT GetSpacing(POINT*); + HRESULT Item(int, LPITEMIDLIST*); + HRESULT ItemCount(UINT, int*); + HRESULT Items(UINT, REFIID, PVOID*); + HRESULT SelectAndPositionItems(UINT, LPCITEMIDLIST*, POINT*, DWORD); + HRESULT SelectItem(int, DWORD); + HRESULT SetCurrentViewMode(UINT); + } + alias IFolderView LPFOLDERVIEW; +} diff --git a/src/core/sys/windows/shlwapi.d b/src/core/sys/windows/shlwapi.d index a751d547a2..ef4686a11e 100644 --- a/src/core/sys/windows/shlwapi.d +++ b/src/core/sys/windows/shlwapi.d @@ -1,729 +1,729 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_shlwapi.d) - */ -module core.sys.windows.shlwapi; -pragma(lib, "shlwapi"); - -/* Changes compared to MinGW: -wnsprintf functions are not included. -// Macros unneeded for D -#define StrCmpIA lstrcmpiA; -#define StrCmpA lstrcmpA; -#define StrCpyA lstrcpyA; -#define StrCpyNA lstrcpynA; -#define MAKEDLLVERULL(major, minor, build, qfe) \ - (((ULONGLONG)(major) << 48) | \ - ((ULONGLONG)(minor) << 32) | \ - ((ULONGLONG)(build) << 16) | \ - ((ULONGLONG)( qfe) << 0)) -*/ - -import core.sys.windows.objbase, core.sys.windows.shlobj; -private import core.sys.windows.basetyps, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.windef, - core.sys.windows.winbase, core.sys.windows.winreg; - -const DLLVER_PLATFORM_WINDOWS = 0x00000001; -const DLLVER_PLATFORM_NT = 0x00000002; - -const URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000; -const URL_DONT_SIMPLIFY = 0x08000000; -const URL_ESCAPE_PERCENT = 0x00001000; -const URL_ESCAPE_SEGMENT_ONLY = 0x00002000; -const URL_ESCAPE_SPACES_ONLY = 0x04000000; -const URL_ESCAPE_UNSAFE = 0x20000000; -const URL_INTERNAL_PATH = 0x00800000; -const URL_PARTFLAG_KEEPSCHEME = 0x00000001; -const URL_PLUGGABLE_PROTOCOL = 0x40000000; -const URL_UNESCAPE = 0x10000000; -const URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000; -const URL_UNESCAPE_INPLACE = 0x00100000; - -align(1): -struct DLLVERSIONINFO -{ - DWORD cbSize = this.sizeof; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformID; -} - -struct DLLVERSIONINFO2 -{ - DLLVERSIONINFO info1; - DWORD dwFlags; - ULONGLONG ullVersion; -} - -enum ASSOCSTR { - ASSOCSTR_COMMAND, - ASSOCSTR_EXECUTABLE, - ASSOCSTR_FRIENDLYDOCNAME, - ASSOCSTR_FRIENDLYAPPNAME, - ASSOCSTR_NOOPEN, - ASSOCSTR_SHELLNEWVALUE, - ASSOCSTR_DDECOMMAND, - ASSOCSTR_DDEIFEXEC, - ASSOCSTR_DDEAPPLICATION, - ASSOCSTR_DDETOPIC -} - -enum ASSOCKEY -{ - ASSOCKEY_SHELLEXECCLASS = 1, - ASSOCKEY_APP, - ASSOCKEY_CLASS, - ASSOCKEY_BASECLASS -} - -enum ASSOCDATA -{ - ASSOCDATA_MSIDESCRIPTOR = 1, - ASSOCDATA_NOACTIVATEHANDLER, - ASSOCDATA_QUERYCLASSSTORE -} - -alias DWORD ASSOCF; - -enum SHREGDEL_FLAGS -{ - SHREGDEL_DEFAULT = 0x00000000, - SHREGDEL_HKCU = 0x00000001, - SHREGDEL_HKLM = 0x00000010, - SHREGDEL_BOTH = 0x00000011 -} - -enum SHREGENUM_FLAGS -{ - SHREGENUM_DEFAULT = 0x00000000, - SHREGENUM_HKCU = 0x00000001, - SHREGENUM_HKLM = 0x00000010, - SHREGENUM_BOTH = 0x00000011 -} - -enum URLIS -{ - URLIS_URL, - URLIS_OPAQUE, - URLIS_NOHISTORY, - URLIS_FILEURL, - URLIS_APPLIABLE, - URLIS_DIRECTORY, - URLIS_HASQUERY -} - -mixin DECLARE_HANDLE!("HUSKEY"); -alias HUSKEY* PHUSKEY; - -extern (Windows) -{ - alias HRESULT function (DLLVERSIONINFO *) DLLGETVERSIONPROC; -} - - -BOOL IntlStrEqNA(LPCSTR pStr1, LPCSTR pStr2, int nChar) -{ - return IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar); -} - -BOOL IntlStrEqNW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) -{ - return IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar); -} - -BOOL IntlStrEqNIA(LPCSTR pStr1, LPCSTR pStr2, int nChar) -{ - return IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar); -} - -BOOL IntlStrEqNIW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) -{ - return IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar); -} - -BOOL UrlIsFileUrlA(LPCSTR pszURL) -{ - return UrlIsA(pszURL, URLIS.URLIS_FILEURL); -} - -BOOL UrlIsFileUrlW(LPCWSTR pszURL) -{ - return UrlIsW(pszURL, URLIS.URLIS_FILEURL); -} - -HRESULT UrlUnescapeInPlaceA(LPSTR pszUrl, DWORD dwFlags) -{ - return UrlUnescapeA(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); -} -HRESULT UrlUnescapeInPlaceW(LPWSTR pszUrl, DWORD dwFlags) -{ - return UrlUnescapeW(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); -} - -extern (Windows): -BOOL ChrCmpIA(WORD, WORD); -BOOL ChrCmpIW(WCHAR, WCHAR); -BOOL IntlStrEqWorkerA(BOOL, LPCSTR, LPCSTR, int); -BOOL IntlStrEqWorkerW(BOOL, LPCWSTR, LPCWSTR, int); -HRESULT SHStrDupA(LPCSTR, LPWSTR*); -HRESULT SHStrDupW(LPCWSTR, LPWSTR*); -LPSTR StrCatA(LPSTR, LPCSTR); -LPWSTR StrCatW(LPWSTR, LPCWSTR); -LPSTR StrCatBuffA(LPSTR, LPCSTR, int); -LPWSTR StrCatBuffW(LPWSTR, LPCWSTR, int); -DWORD StrCatChainW(LPWSTR, DWORD, DWORD, LPCWSTR); -LPSTR StrChrA(LPCSTR, WORD); -LPWSTR StrChrW(LPCWSTR, WCHAR); -LPSTR StrChrIA(LPCSTR, WORD); -LPWSTR StrChrIW(LPCWSTR, WCHAR); -int StrCmpIW(LPCWSTR, LPCWSTR); -int StrCmpW(LPCWSTR, LPCWSTR); -LPWSTR StrCpyW(LPWSTR, LPCWSTR); -LPWSTR StrCpyNW(LPWSTR, LPCWSTR, int); -int StrCmpNA(LPCSTR, LPCSTR, int); -int StrCmpNW(LPCWSTR, LPCWSTR, int); -int StrCmpNIA(LPCSTR, LPCSTR, int); -int StrCmpNIW(LPCWSTR, LPCWSTR, int); -int StrCSpnA(LPCSTR, LPCSTR); -int StrCSpnW(LPCWSTR, LPCWSTR); -int StrCSpnIA(LPCSTR, LPCSTR); -int StrCSpnIW(LPCWSTR, LPCWSTR); -LPSTR StrDupA(LPCSTR); -LPWSTR StrDupW(LPCWSTR); -LPSTR StrFormatByteSize64A(LONGLONG, LPSTR, UINT); -LPSTR StrFormatByteSizeA(DWORD, LPSTR, UINT); -LPWSTR StrFormatByteSizeW(LONGLONG, LPWSTR, UINT); -LPSTR StrFormatKBSizeA(LONGLONG, LPSTR, UINT); -LPWSTR StrFormatKBSizeW(LONGLONG, LPWSTR, UINT); -int StrFromTimeIntervalA(LPSTR, UINT, DWORD, int); -int StrFromTimeIntervalW(LPWSTR, UINT, DWORD, int); -BOOL StrIsIntlEqualA(BOOL, LPCSTR, LPCSTR, int); -BOOL StrIsIntlEqualW(BOOL, LPCWSTR, LPCWSTR, int); -LPSTR StrNCatA(LPSTR, LPCSTR, int); -LPWSTR StrNCatW(LPWSTR, LPCWSTR, int); -LPSTR StrPBrkA(LPCSTR, LPCSTR); -LPWSTR StrPBrkW(LPCWSTR, LPCWSTR); -LPSTR StrRChrA(LPCSTR, LPCSTR, WORD); -LPWSTR StrRChrW(LPCWSTR, LPCWSTR, WCHAR); -LPSTR StrRChrIA(LPCSTR, LPCSTR, WORD); -LPWSTR StrRChrIW(LPCWSTR, LPCWSTR, WCHAR); -LPSTR StrRStrIA(LPCSTR, LPCSTR, LPCSTR); -LPWSTR StrRStrIW(LPCWSTR, LPCWSTR, LPCWSTR); -int StrSpnA(LPCSTR, LPCSTR); -int StrSpnW(LPCWSTR, LPCWSTR); -LPSTR StrStrA(LPCSTR, LPCSTR); -LPSTR StrStrIA(LPCSTR, LPCSTR); -LPWSTR StrStrIW(LPCWSTR, LPCWSTR); -LPWSTR StrStrW(LPCWSTR, LPCWSTR); -int StrToIntA(LPCSTR); -int StrToIntW(LPCWSTR); -BOOL StrToIntExA(LPCSTR, DWORD, int*); -BOOL StrToIntExW(LPCWSTR, DWORD, int*); -BOOL StrTrimA(LPSTR, LPCSTR); -BOOL StrTrimW(LPWSTR, LPCWSTR); -LPSTR PathAddBackslashA(LPSTR); -LPWSTR PathAddBackslashW(LPWSTR); -BOOL PathAddExtensionA(LPSTR, LPCSTR); -BOOL PathAddExtensionW(LPWSTR, LPCWSTR); -BOOL PathAppendA(LPSTR, LPCSTR); -BOOL PathAppendW(LPWSTR, LPCWSTR); -LPSTR PathBuildRootA(LPSTR, int); -LPWSTR PathBuildRootW(LPWSTR, int); -BOOL PathCanonicalizeA(LPSTR, LPCSTR); -BOOL PathCanonicalizeW(LPWSTR, LPCWSTR); -LPSTR PathCombineA(LPSTR, LPCSTR, LPCSTR); -LPWSTR PathCombineW(LPWSTR, LPCWSTR, LPCWSTR); -int PathCommonPrefixA(LPCSTR, LPCSTR, LPSTR); -int PathCommonPrefixW(LPCWSTR, LPCWSTR, LPWSTR); -BOOL PathCompactPathA(HDC, LPSTR, UINT); -BOOL PathCompactPathW(HDC, LPWSTR, UINT); -BOOL PathCompactPathExA(LPSTR, LPCSTR, UINT, DWORD); -BOOL PathCompactPathExW(LPWSTR, LPCWSTR, UINT, DWORD); -HRESULT PathCreateFromUrlA(LPCSTR, LPSTR, LPDWORD, DWORD); -HRESULT PathCreateFromUrlW(LPCWSTR, LPWSTR, LPDWORD, DWORD); -BOOL PathFileExistsA(LPCSTR); -BOOL PathFileExistsW(LPCWSTR); -LPSTR PathFindExtensionA(LPCSTR); -LPWSTR PathFindExtensionW(LPCWSTR); -LPSTR PathFindFileNameA(LPCSTR); -LPWSTR PathFindFileNameW(LPCWSTR); -LPSTR PathFindNextComponentA(LPCSTR); -LPWSTR PathFindNextComponentW(LPCWSTR); -BOOL PathFindOnPathA(LPSTR, LPCSTR*); -BOOL PathFindOnPathW(LPWSTR, LPCWSTR*); -LPCSTR PathFindSuffixArrayA(LPCSTR, LPCSTR*, int); -LPCWSTR PathFindSuffixArrayW(LPCWSTR, LPCWSTR*, int); -LPSTR PathGetArgsA(LPCSTR); -LPWSTR PathGetArgsW(LPCWSTR); -UINT PathGetCharTypeA(UCHAR); -UINT PathGetCharTypeW(WCHAR); -int PathGetDriveNumberA(LPCSTR); -int PathGetDriveNumberW(LPCWSTR); -BOOL PathIsContentTypeA(LPCSTR, LPCSTR); -BOOL PathIsContentTypeW(LPCWSTR, LPCWSTR); -BOOL PathIsDirectoryA(LPCSTR); -BOOL PathIsDirectoryEmptyA(LPCSTR); -BOOL PathIsDirectoryEmptyW(LPCWSTR); -BOOL PathIsDirectoryW(LPCWSTR); -BOOL PathIsFileSpecA(LPCSTR); -BOOL PathIsFileSpecW(LPCWSTR); -BOOL PathIsLFNFileSpecA(LPCSTR); -BOOL PathIsLFNFileSpecW(LPCWSTR); -BOOL PathIsNetworkPathA(LPCSTR); -BOOL PathIsNetworkPathW(LPCWSTR); -BOOL PathIsPrefixA(LPCSTR, LPCSTR); -BOOL PathIsPrefixW(LPCWSTR, LPCWSTR); -BOOL PathIsRelativeA(LPCSTR); -BOOL PathIsRelativeW(LPCWSTR); -BOOL PathIsRootA(LPCSTR); -BOOL PathIsRootW(LPCWSTR); -BOOL PathIsSameRootA(LPCSTR, LPCSTR); -BOOL PathIsSameRootW(LPCWSTR, LPCWSTR); -BOOL PathIsSystemFolderA(LPCSTR, DWORD); -BOOL PathIsSystemFolderW(LPCWSTR, DWORD); -BOOL PathIsUNCA(LPCSTR); -BOOL PathIsUNCServerA(LPCSTR); -BOOL PathIsUNCServerShareA(LPCSTR); -BOOL PathIsUNCServerShareW(LPCWSTR); -BOOL PathIsUNCServerW(LPCWSTR); -BOOL PathIsUNCW(LPCWSTR); -BOOL PathIsURLA(LPCSTR); -BOOL PathIsURLW(LPCWSTR); -BOOL PathMakePrettyA(LPSTR); -BOOL PathMakePrettyW(LPWSTR); -BOOL PathMakeSystemFolderA(LPSTR); -BOOL PathMakeSystemFolderW(LPWSTR); -BOOL PathMatchSpecA(LPCSTR, LPCSTR); -BOOL PathMatchSpecW(LPCWSTR, LPCWSTR); -int PathParseIconLocationA(LPSTR); -int PathParseIconLocationW(LPWSTR); -void PathQuoteSpacesA(LPSTR); -void PathQuoteSpacesW(LPWSTR); -BOOL PathRelativePathToA(LPSTR, LPCSTR, DWORD, LPCSTR, DWORD); -BOOL PathRelativePathToW(LPWSTR, LPCWSTR, DWORD, LPCWSTR, DWORD); -void PathRemoveArgsA(LPSTR); -void PathRemoveArgsW(LPWSTR); -LPSTR PathRemoveBackslashA(LPSTR); -LPWSTR PathRemoveBackslashW(LPWSTR); -void PathRemoveBlanksA(LPSTR); -void PathRemoveBlanksW(LPWSTR); -void PathRemoveExtensionA(LPSTR); -void PathRemoveExtensionW(LPWSTR); -BOOL PathRemoveFileSpecA(LPSTR); -BOOL PathRemoveFileSpecW(LPWSTR); -BOOL PathRenameExtensionA(LPSTR, LPCSTR); -BOOL PathRenameExtensionW(LPWSTR, LPCWSTR); -BOOL PathSearchAndQualifyA(LPCSTR, LPSTR, UINT); -BOOL PathSearchAndQualifyW(LPCWSTR, LPWSTR, UINT); -void PathSetDlgItemPathA(HWND, int, LPCSTR); -void PathSetDlgItemPathW(HWND, int, LPCWSTR); -LPSTR PathSkipRootA(LPCSTR); -LPWSTR PathSkipRootW(LPCWSTR); -void PathStripPathA(LPSTR); -void PathStripPathW(LPWSTR); -BOOL PathStripToRootA(LPSTR); -BOOL PathStripToRootW(LPWSTR); -void PathUndecorateA(LPSTR); -void PathUndecorateW(LPWSTR); -BOOL PathUnExpandEnvStringsA(LPCSTR, LPSTR, UINT); -BOOL PathUnExpandEnvStringsW(LPCWSTR, LPWSTR, UINT); -BOOL PathUnmakeSystemFolderA(LPSTR); -BOOL PathUnmakeSystemFolderW(LPWSTR); -void PathUnquoteSpacesA(LPSTR); -void PathUnquoteSpacesW(LPWSTR); -HRESULT SHAutoComplete(HWND, DWORD); -BOOL SHCreateThread(LPTHREAD_START_ROUTINE, void*, DWORD, LPTHREAD_START_ROUTINE); -DWORD SHCopyKeyA(HKEY, LPCSTR, HKEY, DWORD); -DWORD SHCopyKeyW(HKEY, LPCWSTR, HKEY, DWORD); -DWORD SHDeleteEmptyKeyA(HKEY, LPCSTR); -DWORD SHDeleteEmptyKeyW(HKEY, LPCWSTR); -DWORD SHDeleteKeyA(HKEY, LPCSTR); -DWORD SHDeleteKeyW(HKEY, LPCWSTR); -DWORD SHEnumKeyExA(HKEY, DWORD, LPSTR, LPDWORD); -DWORD SHEnumKeyExW(HKEY, DWORD, LPWSTR, LPDWORD); -DWORD SHQueryInfoKeyA(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD); -DWORD SHQueryInfoKeyW(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD); -DWORD SHQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); -DWORD SHQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); -HRESULT SHGetThreadRef(IUnknown*); -HRESULT SHSetThreadRef(IUnknown); -BOOL SHSkipJunction(IBindCtx, const(CLSID)*); -DWORD SHEnumValueA(HKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); -DWORD SHEnumValueW(HKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); -DWORD SHGetValueA(HKEY, LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD); -DWORD SHGetValueW(HKEY, LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD); -DWORD SHSetValueA(HKEY, LPCSTR, LPCSTR, DWORD, LPCVOID, DWORD); -DWORD SHSetValueW(HKEY, LPCWSTR, LPCWSTR, DWORD, LPCVOID, DWORD); -DWORD SHDeleteValueA(HKEY, LPCSTR, LPCSTR); -DWORD SHDeleteValueW(HKEY, LPCWSTR, LPCWSTR); -HRESULT AssocCreate(CLSID, const(IID)* , const(LPVOID)*); -HRESULT AssocQueryKeyA(ASSOCF, ASSOCKEY, LPCSTR, LPCSTR, HKEY*); -HRESULT AssocQueryKeyW(ASSOCF, ASSOCKEY, LPCWSTR, LPCWSTR, HKEY*); -HRESULT AssocQueryStringA(ASSOCF, ASSOCSTR, LPCSTR, LPCSTR, LPSTR, DWORD*); -HRESULT AssocQueryStringByKeyA(ASSOCF, ASSOCSTR, HKEY, LPCSTR, LPSTR, DWORD*); -HRESULT AssocQueryStringByKeyW(ASSOCF, ASSOCSTR, HKEY, LPCWSTR, LPWSTR, DWORD*); -HRESULT AssocQueryStringW(ASSOCF, ASSOCSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD*); -HRESULT UrlApplySchemeA(LPCSTR, LPSTR, LPDWORD, DWORD); -HRESULT UrlApplySchemeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); -HRESULT UrlCanonicalizeA(LPCSTR, LPSTR, LPDWORD, DWORD); -HRESULT UrlCanonicalizeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); -HRESULT UrlCombineA(LPCSTR, LPCSTR, LPSTR, LPDWORD, DWORD); -HRESULT UrlCombineW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD, DWORD); -int UrlCompareA(LPCSTR, LPCSTR, BOOL); -int UrlCompareW(LPCWSTR, LPCWSTR, BOOL); -HRESULT UrlCreateFromPathA(LPCSTR, LPSTR, LPDWORD, DWORD); -HRESULT UrlCreateFromPathW(LPCWSTR, LPWSTR, LPDWORD, DWORD); -HRESULT UrlEscapeA(LPCSTR, LPSTR, LPDWORD, DWORD); -HRESULT UrlEscapeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); -LPCSTR UrlGetLocationA(LPCSTR); -LPCWSTR UrlGetLocationW(LPCWSTR); -HRESULT UrlGetPartA(LPCSTR, LPSTR, LPDWORD, DWORD, DWORD); -HRESULT UrlGetPartW(LPCWSTR, LPWSTR, LPDWORD, DWORD, DWORD); -HRESULT UrlHashA(LPCSTR, LPBYTE, DWORD); -HRESULT UrlHashW(LPCWSTR, LPBYTE, DWORD); -BOOL UrlIsA(LPCSTR, URLIS); -BOOL UrlIsW(LPCWSTR, URLIS); -BOOL UrlIsNoHistoryA(LPCSTR); -BOOL UrlIsNoHistoryW(LPCWSTR); -BOOL UrlIsOpaqueA(LPCSTR); -BOOL UrlIsOpaqueW(LPCWSTR); -HRESULT UrlUnescapeA(LPSTR, LPSTR, LPDWORD, DWORD); -HRESULT UrlUnescapeW(LPWSTR, LPWSTR, LPDWORD, DWORD); -DWORD SHRegCloseUSKey(HUSKEY); -LONG SHRegCreateUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, DWORD); -LONG SHRegCreateUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, DWORD); -LONG SHRegDeleteEmptyUSKeyA(HUSKEY, LPCSTR, SHREGDEL_FLAGS); -LONG SHRegDeleteEmptyUSKeyW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS); -LONG SHRegDeleteUSValueA(HUSKEY, LPCSTR, SHREGDEL_FLAGS); -LONG SHRegDeleteUSValueW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS); -HKEY SHRegDuplicateHKey(HKEY); -DWORD SHRegEnumUSKeyA(HUSKEY, DWORD, LPSTR, LPDWORD, SHREGENUM_FLAGS); -DWORD SHRegEnumUSKeyW(HUSKEY, DWORD, LPWSTR, LPDWORD, SHREGENUM_FLAGS); -DWORD SHRegEnumUSValueA(HUSKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS); -DWORD SHRegEnumUSValueW(HUSKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS); -BOOL SHRegGetBoolUSValueA(LPCSTR, LPCSTR, BOOL, BOOL); -BOOL SHRegGetBoolUSValueW(LPCWSTR, LPCWSTR, BOOL, BOOL); -DWORD SHRegGetPathA(HKEY, LPCSTR, LPCSTR, LPSTR, DWORD); -DWORD SHRegGetPathW(HKEY, LPCWSTR, LPCWSTR, LPWSTR, DWORD); -LONG SHRegGetUSValueA(LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); -LONG SHRegGetUSValueW(LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); -LONG SHRegOpenUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, BOOL); -LONG SHRegOpenUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, BOOL); -DWORD SHRegQueryInfoUSKeyA(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS); -DWORD SHRegQueryInfoUSKeyW(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS); -LONG SHRegQueryUSValueA(HUSKEY, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); -LONG SHRegQueryUSValueW(HUSKEY, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); -DWORD SHRegSetPathA(HKEY, LPCSTR, LPCSTR, LPCSTR, DWORD); -DWORD SHRegSetPathW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR, DWORD); -LONG SHRegSetUSValueA(LPCSTR, LPCSTR, DWORD, LPVOID, DWORD, DWORD); -LONG SHRegSetUSValueW(LPCWSTR, LPCWSTR, DWORD, LPVOID, DWORD, DWORD); -LONG SHRegWriteUSValueA(HUSKEY, LPCSTR, DWORD, LPVOID, DWORD, DWORD); -LONG SHRegWriteUSValueW(HUSKEY, LPCWSTR, DWORD, LPVOID, DWORD, DWORD); -HRESULT HashData(LPBYTE, DWORD, LPBYTE, DWORD); -HPALETTE SHCreateShellPalette(HDC); -COLORREF ColorHLSToRGB(WORD, WORD, WORD); -COLORREF ColorAdjustLuma(COLORREF, int, BOOL); -void ColorRGBToHLS(COLORREF, WORD*, WORD*, WORD*); -/** Should not be necessary for D? -extern (C): -int wnsprintfA(LPSTR, int, LPCSTR, ...); -int wnsprintfW(LPWSTR, int, LPCWSTR, ...); -extern (Windows): -int wvnsprintfA(LPSTR, int, LPCSTR, va_list); -int wvnsprintfW(LPWSTR, int, LPCWSTR, va_list); -*/ - -HINSTANCE MLLoadLibraryA(LPCSTR, HANDLE, DWORD, LPCSTR, BOOL); -HINSTANCE MLLoadLibraryW(LPCWSTR, HANDLE, DWORD, LPCWSTR, BOOL); - -HRESULT DllInstall(BOOL, LPCWSTR); - -HRESULT StrRetToBufA(LPSTRRET, LPCITEMIDLIST, LPSTR, UINT); -HRESULT StrRetToBufW(LPSTRRET, LPCITEMIDLIST, LPWSTR, UINT); -HRESULT StrRetToStrA(LPSTRRET, LPCITEMIDLIST, LPSTR*); -HRESULT StrRetToStrW(LPSTRRET, LPCITEMIDLIST, LPWSTR*); -HRESULT SHCreateStreamOnFileA(LPCSTR, DWORD, IStream*); -HRESULT SHCreateStreamOnFileW(LPCWSTR, DWORD, IStream*); -IStream SHOpenRegStream2A(HKEY, LPCSTR, LPCSTR, DWORD); -IStream SHOpenRegStream2W(HKEY, LPCWSTR, LPCWSTR, DWORD); -IStream SHOpenRegStreamA(HKEY, LPCSTR, LPCSTR, DWORD); -IStream SHOpenRegStreamW(HKEY, LPCWSTR, LPCWSTR, DWORD); - -version(Unicode) { -alias ChrCmpIW ChrCmpI; -alias IntlStrEqNW IntlStrEqN; -alias IntlStrEqNIW IntlStrEqNI; -alias IntlStrEqWorkerW IntlStrEqWorker; -alias SHStrDupW SHStrDup; -alias StrCatW StrCat; -alias StrCatBuffW StrCatBuff; -alias StrChrW StrChr; -alias StrChrIW StrChrI; -alias StrCmpW StrCmp; -alias StrCmpIW StrCmpI; -alias StrCmpNIW StrCmpNI; -alias StrCmpNW StrCmpN; -alias StrCpyNW StrCpyN; -alias StrCpyW StrCpy; -alias StrCSpnIW StrCSpnI; -alias StrCSpnW StrCSpn; -alias StrDupW StrDup; -alias StrFormatByteSizeW StrFormatByteSize; -alias StrFormatKBSizeW StrFormatKBSize; -alias StrFromTimeIntervalW StrFromTimeInterval; -alias StrIsIntlEqualW StrIsIntlEqual; -alias StrNCatW StrNCat; -alias StrPBrkW StrPBrk; -alias StrRChrW StrRChr; -alias StrRChrIW StrRChrI; -alias StrRetToBufW StrRetToBuf; -alias StrRetToStrW StrRetToStr; -alias StrRStrIW StrRStrI; -alias StrSpnW StrSpn; -alias StrStrIW StrStrI; -alias StrStrW StrStr; -alias StrToIntW StrToInt; -alias StrToIntExW StrToIntEx; -alias StrTrimW StrTrim; -alias PathAddBackslashW PathAddBackslash; -alias PathAddExtensionW PathAddExtension; -alias PathAppendW PathAppend; -alias PathBuildRootW PathBuildRoot; -alias PathCanonicalizeW PathCanonicalize; -alias PathCombineW PathCombine; -alias PathCommonPrefixW PathCommonPrefix; -alias PathCompactPathW PathCompactPath; -alias PathCompactPathExW PathCompactPathEx; -alias PathCreateFromUrlW PathCreateFromUrl; -alias PathFileExistsW PathFileExists; -alias PathFindExtensionW PathFindExtension; -alias PathFindFileNameW PathFindFileName; -alias PathFindNextComponentW PathFindNextComponent; -alias PathFindOnPathW PathFindOnPath; -alias PathFindSuffixArrayW PathFindSuffixArray; -alias PathGetArgsW PathGetArgs; -alias PathGetCharTypeW PathGetCharType; -alias PathGetDriveNumberW PathGetDriveNumber; -alias PathIsContentTypeW PathIsContentType; -alias PathIsDirectoryEmptyW PathIsDirectoryEmpty; -alias PathIsDirectoryW PathIsDirectory; -alias PathIsFileSpecW PathIsFileSpec; -alias PathIsLFNFileSpecW PathIsLFNFileSpec; -alias PathIsNetworkPathW PathIsNetworkPath; -alias PathIsPrefixW PathIsPrefix; -alias PathIsRelativeW PathIsRelative; -alias PathIsRootW PathIsRoot; -alias PathIsSameRootW PathIsSameRoot; -alias PathIsSystemFolderW PathIsSystemFolder; -alias PathIsUNCServerShareW PathIsUNCServerShare; -alias PathIsUNCServerW PathIsUNCServer; -alias PathIsUNCW PathIsUNC; -alias PathIsURLW PathIsURL; -alias PathMakePrettyW PathMakePretty; -alias PathMakeSystemFolderW PathMakeSystemFolder; -alias PathMatchSpecW PathMatchSpec; -alias PathParseIconLocationW PathParseIconLocation; -alias PathQuoteSpacesW PathQuoteSpaces; -alias PathRelativePathToW PathRelativePathTo; -alias PathRemoveArgsW PathRemoveArgs; -alias PathRemoveBackslashW PathRemoveBackslash; -alias PathRemoveBlanksW PathRemoveBlanks; -alias PathRemoveExtensionW PathRemoveExtension; -alias PathRemoveFileSpecW PathRemoveFileSpec; -alias PathRenameExtensionW PathRenameExtension; -alias PathSearchAndQualifyW PathSearchAndQualify; -alias PathSetDlgItemPathW PathSetDlgItemPath; -alias PathSkipRootW PathSkipRoot; -alias PathStripPathW PathStripPath; -alias PathStripToRootW PathStripToRoot; -alias PathUndecorateW PathUndecorate; -alias PathUnExpandEnvStringsW PathUnExpandEnvStrings; -alias PathUnmakeSystemFolderW PathUnmakeSystemFolder; -alias PathUnquoteSpacesW PathUnquoteSpaces; -alias SHCreateStreamOnFileW SHCreateStreamOnFile; -alias SHOpenRegStreamW SHOpenRegStream; -alias SHOpenRegStream2W SHOpenRegStream2; -alias SHCopyKeyW SHCopyKey; -alias SHDeleteEmptyKeyW SHDeleteEmptyKey; -alias SHDeleteKeyW SHDeleteKey; -alias SHEnumKeyExW SHEnumKeyEx; -alias SHQueryInfoKeyW SHQueryInfoKey; -alias SHQueryValueExW SHQueryValueEx; -alias SHEnumValueW SHEnumValue; -alias SHGetValueW SHGetValue; -alias SHSetValueW SHSetValue; -alias SHDeleteValueW SHDeleteValue; -alias AssocQueryKeyW AssocQueryKey; -alias AssocQueryStringByKeyW AssocQueryStringByKey; -alias AssocQueryStringW AssocQueryString; -alias UrlApplySchemeW UrlApplyScheme; -alias UrlCanonicalizeW UrlCanonicalize; -alias UrlCombineW UrlCombine; -alias UrlCompareW UrlCompare; -alias UrlCreateFromPathW UrlCreateFromPath; -alias UrlEscapeW UrlEscape; -alias UrlGetLocationW UrlGetLocation; -alias UrlGetPartW UrlGetPart; -alias UrlHashW UrlHash; -alias UrlIsW UrlIs; -alias UrlIsFileUrlW UrlIsFileUrl; -alias UrlIsNoHistoryW UrlIsNoHistory; -alias UrlIsOpaqueW UrlIsOpaque; -alias UrlUnescapeW UrlUnescape; -alias UrlUnescapeInPlaceW UrlUnescapeInPlace; -alias SHRegCreateUSKeyW SHRegCreateUSKey; -alias SHRegDeleteEmptyUSKeyW SHRegDeleteEmptyUSKey; -alias SHRegDeleteUSValueW SHRegDeleteUSValue; -alias SHRegEnumUSKeyW SHRegEnumUSKey; -alias SHRegEnumUSValueW SHRegEnumUSValue; -alias SHRegGetBoolUSValueW SHRegGetBoolUSValue; -alias SHRegGetPathW SHRegGetPath; -alias SHRegGetUSValueW SHRegGetUSValue; -alias SHRegOpenUSKeyW SHRegOpenUSKey; -alias SHRegQueryInfoUSKeyW SHRegQueryInfoUSKey; -alias SHRegQueryUSValueW SHRegQueryUSValue; -alias SHRegSetPathW SHRegSetPath; -alias SHRegSetUSValueW SHRegSetUSValue; -alias SHRegWriteUSValueW SHRegWriteUSValue; -//alias wnsprintfW wnsprintf; -//alias wvnsprintfW wvnsprintf; -} else { -alias ChrCmpIA ChrCmpI; -alias IntlStrEqNA IntlStrEqN; -alias IntlStrEqNIA IntlStrEqNI; -alias IntlStrEqWorkerA IntlStrEqWorker; -alias SHStrDupA SHStrDup; -alias StrCatBuffA StrCatBuff; -alias StrChrA StrChr; -alias StrChrIA StrChrI; -alias StrCmpNIA StrCmpNI; -alias StrCmpNA StrCmpN; -alias StrCSpnIA StrCSpnI; -alias StrCSpnA StrCSpn; -alias StrDupA StrDup; -alias StrFormatByteSizeA StrFormatByteSize; -alias StrFormatKBSizeA StrFormatKBSize; -alias StrFromTimeIntervalA StrFromTimeInterval; -alias StrIsIntlEqualA StrIsIntlEqual; -alias StrNCatA StrNCat; -alias StrPBrkA StrPBrk; -alias StrRChrA StrRChr; -alias StrRChrIA StrRChrI; -alias StrRetToBufA StrRetToBuf; -alias StrRetToStrA StrRetToStr; -alias StrRStrIA StrRStrI; -alias StrSpnA StrSpn; -alias StrStrIA StrStrI; -alias StrStrA StrStr; -alias StrToIntA StrToInt; -alias StrToIntExA StrToIntEx; -alias StrTrimA StrTrim; -alias PathAddBackslashA PathAddBackslash; -alias PathAddExtensionA PathAddExtension; -alias PathAppendA PathAppend; -alias PathBuildRootA PathBuildRoot; -alias PathCanonicalizeA PathCanonicalize; -alias PathCombineA PathCombine; -alias PathCommonPrefixA PathCommonPrefix; -alias PathCompactPathA PathCompactPath; -alias PathCompactPathExA PathCompactPathEx; -alias PathCreateFromUrlA PathCreateFromUrl; -alias PathFileExistsA PathFileExists; -alias PathFindExtensionA PathFindExtension; -alias PathFindFileNameA PathFindFileName; -alias PathFindNextComponentA PathFindNextComponent; -alias PathFindOnPathA PathFindOnPath; -alias PathFindSuffixArrayA PathFindSuffixArray; -alias PathGetArgsA PathGetArgs; -alias PathGetCharTypeA PathGetCharType; -alias PathGetDriveNumberA PathGetDriveNumber; -alias PathIsContentTypeA PathIsContentType; -alias PathIsDirectoryEmptyA PathIsDirectoryEmpty; -alias PathIsDirectoryA PathIsDirectory; -alias PathIsFileSpecA PathIsFileSpec; -alias PathIsLFNFileSpecA PathIsLFNFileSpec; -alias PathIsNetworkPathA PathIsNetworkPath; -alias PathIsPrefixA PathIsPrefix; -alias PathIsRelativeA PathIsRelative; -alias PathIsRootA PathIsRoot; -alias PathIsSameRootA PathIsSameRoot; -alias PathIsSystemFolderA PathIsSystemFolder; -alias PathIsUNCServerShareA PathIsUNCServerShare; -alias PathIsUNCServerA PathIsUNCServer; -alias PathIsUNCA PathIsUNC; -alias PathIsURLA PathIsURL; -alias PathMakePrettyA PathMakePretty; -alias PathMakeSystemFolderA PathMakeSystemFolder; -alias PathMatchSpecA PathMatchSpec; -alias PathParseIconLocationA PathParseIconLocation; -alias PathQuoteSpacesA PathQuoteSpaces; -alias PathRelativePathToA PathRelativePathTo; -alias PathRemoveArgsA PathRemoveArgs; -alias PathRemoveBackslashA PathRemoveBackslash; -alias PathRemoveBlanksA PathRemoveBlanks; -alias PathRemoveExtensionA PathRemoveExtension; -alias PathRemoveFileSpecA PathRemoveFileSpec; -alias PathRenameExtensionA PathRenameExtension; -alias PathSearchAndQualifyA PathSearchAndQualify; -alias PathSetDlgItemPathA PathSetDlgItemPath; -alias PathSkipRootA PathSkipRoot; -alias PathStripPathA PathStripPath; -alias PathStripToRootA PathStripToRoot; -alias PathUndecorateA PathUndecorate; -alias PathUnExpandEnvStringsA PathUnExpandEnvStrings; -alias PathUnmakeSystemFolderA PathUnmakeSystemFolder; -alias PathUnquoteSpacesA PathUnquoteSpaces; -alias SHCreateStreamOnFileA SHCreateStreamOnFile; -alias SHOpenRegStreamA SHOpenRegStream; -alias SHOpenRegStream2A SHOpenRegStream2; -alias SHCopyKeyA SHCopyKey; -alias SHDeleteEmptyKeyA SHDeleteEmptyKey; -alias SHDeleteKeyA SHDeleteKey; -alias SHEnumKeyExA SHEnumKeyEx; -alias SHQueryInfoKeyA SHQueryInfoKey; -alias SHQueryValueExA SHQueryValueEx; -alias SHEnumValueA SHEnumValue; -alias SHGetValueA SHGetValue; -alias SHSetValueA SHSetValue; -alias SHDeleteValueA SHDeleteValue; -alias AssocQueryKeyA AssocQueryKey; -alias AssocQueryStringByKeyA AssocQueryStringByKey; -alias AssocQueryStringA AssocQueryString; -alias UrlApplySchemeA UrlApplyScheme; -alias UrlCanonicalizeA UrlCanonicalize; -alias UrlCombineA UrlCombine; -alias UrlCompareA UrlCompare; -alias UrlCreateFromPathA UrlCreateFromPath; -alias UrlEscapeA UrlEscape; -alias UrlGetLocationA UrlGetLocation; -alias UrlGetPartA UrlGetPart; -alias UrlHashA UrlHash; -alias UrlIsA UrlIs; -alias UrlIsNoHistoryA UrlIsNoHistory; -alias UrlIsOpaqueA UrlIsOpaque; -alias UrlUnescapeA UrlUnescape; -alias UrlUnescapeInPlaceA UrlUnescapeInPlace; -alias SHRegCreateUSKeyA SHRegCreateUSKey; -alias SHRegDeleteEmptyUSKeyA SHRegDeleteEmptyUSKey; -alias SHRegDeleteUSValueA SHRegDeleteUSValue; -alias SHRegEnumUSKeyA SHRegEnumUSKey; -alias SHRegEnumUSValueA SHRegEnumUSValue; -alias SHRegGetBoolUSValueA SHRegGetBoolUSValue; -alias SHRegGetPathA SHRegGetPath; -alias SHRegGetUSValueA SHRegGetUSValue; -alias SHRegOpenUSKeyA SHRegOpenUSKey; -alias SHRegQueryInfoUSKeyA SHRegQueryInfoUSKey; -alias SHRegQueryUSValueA SHRegQueryUSValue; -alias SHRegSetPathA SHRegSetPath; -alias SHRegSetUSValueA SHRegSetUSValue; -alias SHRegWriteUSValueA SHRegWriteUSValue; -//alias wnsprintfA wnsprintf; -//alias wvnsprintfA wvnsprintf; -} - -alias StrToInt StrToLong; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_shlwapi.d) + */ +module core.sys.windows.shlwapi; +pragma(lib, "shlwapi"); + +/* Changes compared to MinGW: +wnsprintf functions are not included. +// Macros unneeded for D +#define StrCmpIA lstrcmpiA; +#define StrCmpA lstrcmpA; +#define StrCpyA lstrcpyA; +#define StrCpyNA lstrcpynA; +#define MAKEDLLVERULL(major, minor, build, qfe) \ + (((ULONGLONG)(major) << 48) | \ + ((ULONGLONG)(minor) << 32) | \ + ((ULONGLONG)(build) << 16) | \ + ((ULONGLONG)( qfe) << 0)) +*/ + +import core.sys.windows.objbase, core.sys.windows.shlobj; +private import core.sys.windows.basetyps, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.windef, + core.sys.windows.winbase, core.sys.windows.winreg; + +const DLLVER_PLATFORM_WINDOWS = 0x00000001; +const DLLVER_PLATFORM_NT = 0x00000002; + +const URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000; +const URL_DONT_SIMPLIFY = 0x08000000; +const URL_ESCAPE_PERCENT = 0x00001000; +const URL_ESCAPE_SEGMENT_ONLY = 0x00002000; +const URL_ESCAPE_SPACES_ONLY = 0x04000000; +const URL_ESCAPE_UNSAFE = 0x20000000; +const URL_INTERNAL_PATH = 0x00800000; +const URL_PARTFLAG_KEEPSCHEME = 0x00000001; +const URL_PLUGGABLE_PROTOCOL = 0x40000000; +const URL_UNESCAPE = 0x10000000; +const URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000; +const URL_UNESCAPE_INPLACE = 0x00100000; + +align(1): +struct DLLVERSIONINFO +{ + DWORD cbSize = this.sizeof; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformID; +} + +struct DLLVERSIONINFO2 +{ + DLLVERSIONINFO info1; + DWORD dwFlags; + ULONGLONG ullVersion; +} + +enum ASSOCSTR { + ASSOCSTR_COMMAND, + ASSOCSTR_EXECUTABLE, + ASSOCSTR_FRIENDLYDOCNAME, + ASSOCSTR_FRIENDLYAPPNAME, + ASSOCSTR_NOOPEN, + ASSOCSTR_SHELLNEWVALUE, + ASSOCSTR_DDECOMMAND, + ASSOCSTR_DDEIFEXEC, + ASSOCSTR_DDEAPPLICATION, + ASSOCSTR_DDETOPIC +} + +enum ASSOCKEY +{ + ASSOCKEY_SHELLEXECCLASS = 1, + ASSOCKEY_APP, + ASSOCKEY_CLASS, + ASSOCKEY_BASECLASS +} + +enum ASSOCDATA +{ + ASSOCDATA_MSIDESCRIPTOR = 1, + ASSOCDATA_NOACTIVATEHANDLER, + ASSOCDATA_QUERYCLASSSTORE +} + +alias DWORD ASSOCF; + +enum SHREGDEL_FLAGS +{ + SHREGDEL_DEFAULT = 0x00000000, + SHREGDEL_HKCU = 0x00000001, + SHREGDEL_HKLM = 0x00000010, + SHREGDEL_BOTH = 0x00000011 +} + +enum SHREGENUM_FLAGS +{ + SHREGENUM_DEFAULT = 0x00000000, + SHREGENUM_HKCU = 0x00000001, + SHREGENUM_HKLM = 0x00000010, + SHREGENUM_BOTH = 0x00000011 +} + +enum URLIS +{ + URLIS_URL, + URLIS_OPAQUE, + URLIS_NOHISTORY, + URLIS_FILEURL, + URLIS_APPLIABLE, + URLIS_DIRECTORY, + URLIS_HASQUERY +} + +mixin DECLARE_HANDLE!("HUSKEY"); +alias HUSKEY* PHUSKEY; + +extern (Windows) +{ + alias HRESULT function (DLLVERSIONINFO *) DLLGETVERSIONPROC; +} + + +BOOL IntlStrEqNA(LPCSTR pStr1, LPCSTR pStr2, int nChar) +{ + return IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar); +} + +BOOL IntlStrEqNW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) +{ + return IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar); +} + +BOOL IntlStrEqNIA(LPCSTR pStr1, LPCSTR pStr2, int nChar) +{ + return IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar); +} + +BOOL IntlStrEqNIW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) +{ + return IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar); +} + +BOOL UrlIsFileUrlA(LPCSTR pszURL) +{ + return UrlIsA(pszURL, URLIS.URLIS_FILEURL); +} + +BOOL UrlIsFileUrlW(LPCWSTR pszURL) +{ + return UrlIsW(pszURL, URLIS.URLIS_FILEURL); +} + +HRESULT UrlUnescapeInPlaceA(LPSTR pszUrl, DWORD dwFlags) +{ + return UrlUnescapeA(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); +} +HRESULT UrlUnescapeInPlaceW(LPWSTR pszUrl, DWORD dwFlags) +{ + return UrlUnescapeW(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); +} + +extern (Windows): +BOOL ChrCmpIA(WORD, WORD); +BOOL ChrCmpIW(WCHAR, WCHAR); +BOOL IntlStrEqWorkerA(BOOL, LPCSTR, LPCSTR, int); +BOOL IntlStrEqWorkerW(BOOL, LPCWSTR, LPCWSTR, int); +HRESULT SHStrDupA(LPCSTR, LPWSTR*); +HRESULT SHStrDupW(LPCWSTR, LPWSTR*); +LPSTR StrCatA(LPSTR, LPCSTR); +LPWSTR StrCatW(LPWSTR, LPCWSTR); +LPSTR StrCatBuffA(LPSTR, LPCSTR, int); +LPWSTR StrCatBuffW(LPWSTR, LPCWSTR, int); +DWORD StrCatChainW(LPWSTR, DWORD, DWORD, LPCWSTR); +LPSTR StrChrA(LPCSTR, WORD); +LPWSTR StrChrW(LPCWSTR, WCHAR); +LPSTR StrChrIA(LPCSTR, WORD); +LPWSTR StrChrIW(LPCWSTR, WCHAR); +int StrCmpIW(LPCWSTR, LPCWSTR); +int StrCmpW(LPCWSTR, LPCWSTR); +LPWSTR StrCpyW(LPWSTR, LPCWSTR); +LPWSTR StrCpyNW(LPWSTR, LPCWSTR, int); +int StrCmpNA(LPCSTR, LPCSTR, int); +int StrCmpNW(LPCWSTR, LPCWSTR, int); +int StrCmpNIA(LPCSTR, LPCSTR, int); +int StrCmpNIW(LPCWSTR, LPCWSTR, int); +int StrCSpnA(LPCSTR, LPCSTR); +int StrCSpnW(LPCWSTR, LPCWSTR); +int StrCSpnIA(LPCSTR, LPCSTR); +int StrCSpnIW(LPCWSTR, LPCWSTR); +LPSTR StrDupA(LPCSTR); +LPWSTR StrDupW(LPCWSTR); +LPSTR StrFormatByteSize64A(LONGLONG, LPSTR, UINT); +LPSTR StrFormatByteSizeA(DWORD, LPSTR, UINT); +LPWSTR StrFormatByteSizeW(LONGLONG, LPWSTR, UINT); +LPSTR StrFormatKBSizeA(LONGLONG, LPSTR, UINT); +LPWSTR StrFormatKBSizeW(LONGLONG, LPWSTR, UINT); +int StrFromTimeIntervalA(LPSTR, UINT, DWORD, int); +int StrFromTimeIntervalW(LPWSTR, UINT, DWORD, int); +BOOL StrIsIntlEqualA(BOOL, LPCSTR, LPCSTR, int); +BOOL StrIsIntlEqualW(BOOL, LPCWSTR, LPCWSTR, int); +LPSTR StrNCatA(LPSTR, LPCSTR, int); +LPWSTR StrNCatW(LPWSTR, LPCWSTR, int); +LPSTR StrPBrkA(LPCSTR, LPCSTR); +LPWSTR StrPBrkW(LPCWSTR, LPCWSTR); +LPSTR StrRChrA(LPCSTR, LPCSTR, WORD); +LPWSTR StrRChrW(LPCWSTR, LPCWSTR, WCHAR); +LPSTR StrRChrIA(LPCSTR, LPCSTR, WORD); +LPWSTR StrRChrIW(LPCWSTR, LPCWSTR, WCHAR); +LPSTR StrRStrIA(LPCSTR, LPCSTR, LPCSTR); +LPWSTR StrRStrIW(LPCWSTR, LPCWSTR, LPCWSTR); +int StrSpnA(LPCSTR, LPCSTR); +int StrSpnW(LPCWSTR, LPCWSTR); +LPSTR StrStrA(LPCSTR, LPCSTR); +LPSTR StrStrIA(LPCSTR, LPCSTR); +LPWSTR StrStrIW(LPCWSTR, LPCWSTR); +LPWSTR StrStrW(LPCWSTR, LPCWSTR); +int StrToIntA(LPCSTR); +int StrToIntW(LPCWSTR); +BOOL StrToIntExA(LPCSTR, DWORD, int*); +BOOL StrToIntExW(LPCWSTR, DWORD, int*); +BOOL StrTrimA(LPSTR, LPCSTR); +BOOL StrTrimW(LPWSTR, LPCWSTR); +LPSTR PathAddBackslashA(LPSTR); +LPWSTR PathAddBackslashW(LPWSTR); +BOOL PathAddExtensionA(LPSTR, LPCSTR); +BOOL PathAddExtensionW(LPWSTR, LPCWSTR); +BOOL PathAppendA(LPSTR, LPCSTR); +BOOL PathAppendW(LPWSTR, LPCWSTR); +LPSTR PathBuildRootA(LPSTR, int); +LPWSTR PathBuildRootW(LPWSTR, int); +BOOL PathCanonicalizeA(LPSTR, LPCSTR); +BOOL PathCanonicalizeW(LPWSTR, LPCWSTR); +LPSTR PathCombineA(LPSTR, LPCSTR, LPCSTR); +LPWSTR PathCombineW(LPWSTR, LPCWSTR, LPCWSTR); +int PathCommonPrefixA(LPCSTR, LPCSTR, LPSTR); +int PathCommonPrefixW(LPCWSTR, LPCWSTR, LPWSTR); +BOOL PathCompactPathA(HDC, LPSTR, UINT); +BOOL PathCompactPathW(HDC, LPWSTR, UINT); +BOOL PathCompactPathExA(LPSTR, LPCSTR, UINT, DWORD); +BOOL PathCompactPathExW(LPWSTR, LPCWSTR, UINT, DWORD); +HRESULT PathCreateFromUrlA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT PathCreateFromUrlW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +BOOL PathFileExistsA(LPCSTR); +BOOL PathFileExistsW(LPCWSTR); +LPSTR PathFindExtensionA(LPCSTR); +LPWSTR PathFindExtensionW(LPCWSTR); +LPSTR PathFindFileNameA(LPCSTR); +LPWSTR PathFindFileNameW(LPCWSTR); +LPSTR PathFindNextComponentA(LPCSTR); +LPWSTR PathFindNextComponentW(LPCWSTR); +BOOL PathFindOnPathA(LPSTR, LPCSTR*); +BOOL PathFindOnPathW(LPWSTR, LPCWSTR*); +LPCSTR PathFindSuffixArrayA(LPCSTR, LPCSTR*, int); +LPCWSTR PathFindSuffixArrayW(LPCWSTR, LPCWSTR*, int); +LPSTR PathGetArgsA(LPCSTR); +LPWSTR PathGetArgsW(LPCWSTR); +UINT PathGetCharTypeA(UCHAR); +UINT PathGetCharTypeW(WCHAR); +int PathGetDriveNumberA(LPCSTR); +int PathGetDriveNumberW(LPCWSTR); +BOOL PathIsContentTypeA(LPCSTR, LPCSTR); +BOOL PathIsContentTypeW(LPCWSTR, LPCWSTR); +BOOL PathIsDirectoryA(LPCSTR); +BOOL PathIsDirectoryEmptyA(LPCSTR); +BOOL PathIsDirectoryEmptyW(LPCWSTR); +BOOL PathIsDirectoryW(LPCWSTR); +BOOL PathIsFileSpecA(LPCSTR); +BOOL PathIsFileSpecW(LPCWSTR); +BOOL PathIsLFNFileSpecA(LPCSTR); +BOOL PathIsLFNFileSpecW(LPCWSTR); +BOOL PathIsNetworkPathA(LPCSTR); +BOOL PathIsNetworkPathW(LPCWSTR); +BOOL PathIsPrefixA(LPCSTR, LPCSTR); +BOOL PathIsPrefixW(LPCWSTR, LPCWSTR); +BOOL PathIsRelativeA(LPCSTR); +BOOL PathIsRelativeW(LPCWSTR); +BOOL PathIsRootA(LPCSTR); +BOOL PathIsRootW(LPCWSTR); +BOOL PathIsSameRootA(LPCSTR, LPCSTR); +BOOL PathIsSameRootW(LPCWSTR, LPCWSTR); +BOOL PathIsSystemFolderA(LPCSTR, DWORD); +BOOL PathIsSystemFolderW(LPCWSTR, DWORD); +BOOL PathIsUNCA(LPCSTR); +BOOL PathIsUNCServerA(LPCSTR); +BOOL PathIsUNCServerShareA(LPCSTR); +BOOL PathIsUNCServerShareW(LPCWSTR); +BOOL PathIsUNCServerW(LPCWSTR); +BOOL PathIsUNCW(LPCWSTR); +BOOL PathIsURLA(LPCSTR); +BOOL PathIsURLW(LPCWSTR); +BOOL PathMakePrettyA(LPSTR); +BOOL PathMakePrettyW(LPWSTR); +BOOL PathMakeSystemFolderA(LPSTR); +BOOL PathMakeSystemFolderW(LPWSTR); +BOOL PathMatchSpecA(LPCSTR, LPCSTR); +BOOL PathMatchSpecW(LPCWSTR, LPCWSTR); +int PathParseIconLocationA(LPSTR); +int PathParseIconLocationW(LPWSTR); +void PathQuoteSpacesA(LPSTR); +void PathQuoteSpacesW(LPWSTR); +BOOL PathRelativePathToA(LPSTR, LPCSTR, DWORD, LPCSTR, DWORD); +BOOL PathRelativePathToW(LPWSTR, LPCWSTR, DWORD, LPCWSTR, DWORD); +void PathRemoveArgsA(LPSTR); +void PathRemoveArgsW(LPWSTR); +LPSTR PathRemoveBackslashA(LPSTR); +LPWSTR PathRemoveBackslashW(LPWSTR); +void PathRemoveBlanksA(LPSTR); +void PathRemoveBlanksW(LPWSTR); +void PathRemoveExtensionA(LPSTR); +void PathRemoveExtensionW(LPWSTR); +BOOL PathRemoveFileSpecA(LPSTR); +BOOL PathRemoveFileSpecW(LPWSTR); +BOOL PathRenameExtensionA(LPSTR, LPCSTR); +BOOL PathRenameExtensionW(LPWSTR, LPCWSTR); +BOOL PathSearchAndQualifyA(LPCSTR, LPSTR, UINT); +BOOL PathSearchAndQualifyW(LPCWSTR, LPWSTR, UINT); +void PathSetDlgItemPathA(HWND, int, LPCSTR); +void PathSetDlgItemPathW(HWND, int, LPCWSTR); +LPSTR PathSkipRootA(LPCSTR); +LPWSTR PathSkipRootW(LPCWSTR); +void PathStripPathA(LPSTR); +void PathStripPathW(LPWSTR); +BOOL PathStripToRootA(LPSTR); +BOOL PathStripToRootW(LPWSTR); +void PathUndecorateA(LPSTR); +void PathUndecorateW(LPWSTR); +BOOL PathUnExpandEnvStringsA(LPCSTR, LPSTR, UINT); +BOOL PathUnExpandEnvStringsW(LPCWSTR, LPWSTR, UINT); +BOOL PathUnmakeSystemFolderA(LPSTR); +BOOL PathUnmakeSystemFolderW(LPWSTR); +void PathUnquoteSpacesA(LPSTR); +void PathUnquoteSpacesW(LPWSTR); +HRESULT SHAutoComplete(HWND, DWORD); +BOOL SHCreateThread(LPTHREAD_START_ROUTINE, void*, DWORD, LPTHREAD_START_ROUTINE); +DWORD SHCopyKeyA(HKEY, LPCSTR, HKEY, DWORD); +DWORD SHCopyKeyW(HKEY, LPCWSTR, HKEY, DWORD); +DWORD SHDeleteEmptyKeyA(HKEY, LPCSTR); +DWORD SHDeleteEmptyKeyW(HKEY, LPCWSTR); +DWORD SHDeleteKeyA(HKEY, LPCSTR); +DWORD SHDeleteKeyW(HKEY, LPCWSTR); +DWORD SHEnumKeyExA(HKEY, DWORD, LPSTR, LPDWORD); +DWORD SHEnumKeyExW(HKEY, DWORD, LPWSTR, LPDWORD); +DWORD SHQueryInfoKeyA(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD); +DWORD SHQueryInfoKeyW(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD); +DWORD SHQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +DWORD SHQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +HRESULT SHGetThreadRef(IUnknown*); +HRESULT SHSetThreadRef(IUnknown); +BOOL SHSkipJunction(IBindCtx, const(CLSID)*); +DWORD SHEnumValueA(HKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +DWORD SHEnumValueW(HKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +DWORD SHGetValueA(HKEY, LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD); +DWORD SHGetValueW(HKEY, LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD); +DWORD SHSetValueA(HKEY, LPCSTR, LPCSTR, DWORD, LPCVOID, DWORD); +DWORD SHSetValueW(HKEY, LPCWSTR, LPCWSTR, DWORD, LPCVOID, DWORD); +DWORD SHDeleteValueA(HKEY, LPCSTR, LPCSTR); +DWORD SHDeleteValueW(HKEY, LPCWSTR, LPCWSTR); +HRESULT AssocCreate(CLSID, const(IID)* , const(LPVOID)*); +HRESULT AssocQueryKeyA(ASSOCF, ASSOCKEY, LPCSTR, LPCSTR, HKEY*); +HRESULT AssocQueryKeyW(ASSOCF, ASSOCKEY, LPCWSTR, LPCWSTR, HKEY*); +HRESULT AssocQueryStringA(ASSOCF, ASSOCSTR, LPCSTR, LPCSTR, LPSTR, DWORD*); +HRESULT AssocQueryStringByKeyA(ASSOCF, ASSOCSTR, HKEY, LPCSTR, LPSTR, DWORD*); +HRESULT AssocQueryStringByKeyW(ASSOCF, ASSOCSTR, HKEY, LPCWSTR, LPWSTR, DWORD*); +HRESULT AssocQueryStringW(ASSOCF, ASSOCSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD*); +HRESULT UrlApplySchemeA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlApplySchemeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +HRESULT UrlCanonicalizeA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlCanonicalizeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +HRESULT UrlCombineA(LPCSTR, LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlCombineW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD, DWORD); +int UrlCompareA(LPCSTR, LPCSTR, BOOL); +int UrlCompareW(LPCWSTR, LPCWSTR, BOOL); +HRESULT UrlCreateFromPathA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlCreateFromPathW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +HRESULT UrlEscapeA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlEscapeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +LPCSTR UrlGetLocationA(LPCSTR); +LPCWSTR UrlGetLocationW(LPCWSTR); +HRESULT UrlGetPartA(LPCSTR, LPSTR, LPDWORD, DWORD, DWORD); +HRESULT UrlGetPartW(LPCWSTR, LPWSTR, LPDWORD, DWORD, DWORD); +HRESULT UrlHashA(LPCSTR, LPBYTE, DWORD); +HRESULT UrlHashW(LPCWSTR, LPBYTE, DWORD); +BOOL UrlIsA(LPCSTR, URLIS); +BOOL UrlIsW(LPCWSTR, URLIS); +BOOL UrlIsNoHistoryA(LPCSTR); +BOOL UrlIsNoHistoryW(LPCWSTR); +BOOL UrlIsOpaqueA(LPCSTR); +BOOL UrlIsOpaqueW(LPCWSTR); +HRESULT UrlUnescapeA(LPSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlUnescapeW(LPWSTR, LPWSTR, LPDWORD, DWORD); +DWORD SHRegCloseUSKey(HUSKEY); +LONG SHRegCreateUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, DWORD); +LONG SHRegCreateUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, DWORD); +LONG SHRegDeleteEmptyUSKeyA(HUSKEY, LPCSTR, SHREGDEL_FLAGS); +LONG SHRegDeleteEmptyUSKeyW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS); +LONG SHRegDeleteUSValueA(HUSKEY, LPCSTR, SHREGDEL_FLAGS); +LONG SHRegDeleteUSValueW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS); +HKEY SHRegDuplicateHKey(HKEY); +DWORD SHRegEnumUSKeyA(HUSKEY, DWORD, LPSTR, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegEnumUSKeyW(HUSKEY, DWORD, LPWSTR, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegEnumUSValueA(HUSKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegEnumUSValueW(HUSKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS); +BOOL SHRegGetBoolUSValueA(LPCSTR, LPCSTR, BOOL, BOOL); +BOOL SHRegGetBoolUSValueW(LPCWSTR, LPCWSTR, BOOL, BOOL); +DWORD SHRegGetPathA(HKEY, LPCSTR, LPCSTR, LPSTR, DWORD); +DWORD SHRegGetPathW(HKEY, LPCWSTR, LPCWSTR, LPWSTR, DWORD); +LONG SHRegGetUSValueA(LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +LONG SHRegGetUSValueW(LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +LONG SHRegOpenUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, BOOL); +LONG SHRegOpenUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, BOOL); +DWORD SHRegQueryInfoUSKeyA(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegQueryInfoUSKeyW(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS); +LONG SHRegQueryUSValueA(HUSKEY, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +LONG SHRegQueryUSValueW(HUSKEY, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +DWORD SHRegSetPathA(HKEY, LPCSTR, LPCSTR, LPCSTR, DWORD); +DWORD SHRegSetPathW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR, DWORD); +LONG SHRegSetUSValueA(LPCSTR, LPCSTR, DWORD, LPVOID, DWORD, DWORD); +LONG SHRegSetUSValueW(LPCWSTR, LPCWSTR, DWORD, LPVOID, DWORD, DWORD); +LONG SHRegWriteUSValueA(HUSKEY, LPCSTR, DWORD, LPVOID, DWORD, DWORD); +LONG SHRegWriteUSValueW(HUSKEY, LPCWSTR, DWORD, LPVOID, DWORD, DWORD); +HRESULT HashData(LPBYTE, DWORD, LPBYTE, DWORD); +HPALETTE SHCreateShellPalette(HDC); +COLORREF ColorHLSToRGB(WORD, WORD, WORD); +COLORREF ColorAdjustLuma(COLORREF, int, BOOL); +void ColorRGBToHLS(COLORREF, WORD*, WORD*, WORD*); +/** Should not be necessary for D? +extern (C): +int wnsprintfA(LPSTR, int, LPCSTR, ...); +int wnsprintfW(LPWSTR, int, LPCWSTR, ...); +extern (Windows): +int wvnsprintfA(LPSTR, int, LPCSTR, va_list); +int wvnsprintfW(LPWSTR, int, LPCWSTR, va_list); +*/ + +HINSTANCE MLLoadLibraryA(LPCSTR, HANDLE, DWORD, LPCSTR, BOOL); +HINSTANCE MLLoadLibraryW(LPCWSTR, HANDLE, DWORD, LPCWSTR, BOOL); + +HRESULT DllInstall(BOOL, LPCWSTR); + +HRESULT StrRetToBufA(LPSTRRET, LPCITEMIDLIST, LPSTR, UINT); +HRESULT StrRetToBufW(LPSTRRET, LPCITEMIDLIST, LPWSTR, UINT); +HRESULT StrRetToStrA(LPSTRRET, LPCITEMIDLIST, LPSTR*); +HRESULT StrRetToStrW(LPSTRRET, LPCITEMIDLIST, LPWSTR*); +HRESULT SHCreateStreamOnFileA(LPCSTR, DWORD, IStream*); +HRESULT SHCreateStreamOnFileW(LPCWSTR, DWORD, IStream*); +IStream SHOpenRegStream2A(HKEY, LPCSTR, LPCSTR, DWORD); +IStream SHOpenRegStream2W(HKEY, LPCWSTR, LPCWSTR, DWORD); +IStream SHOpenRegStreamA(HKEY, LPCSTR, LPCSTR, DWORD); +IStream SHOpenRegStreamW(HKEY, LPCWSTR, LPCWSTR, DWORD); + +version(Unicode) { +alias ChrCmpIW ChrCmpI; +alias IntlStrEqNW IntlStrEqN; +alias IntlStrEqNIW IntlStrEqNI; +alias IntlStrEqWorkerW IntlStrEqWorker; +alias SHStrDupW SHStrDup; +alias StrCatW StrCat; +alias StrCatBuffW StrCatBuff; +alias StrChrW StrChr; +alias StrChrIW StrChrI; +alias StrCmpW StrCmp; +alias StrCmpIW StrCmpI; +alias StrCmpNIW StrCmpNI; +alias StrCmpNW StrCmpN; +alias StrCpyNW StrCpyN; +alias StrCpyW StrCpy; +alias StrCSpnIW StrCSpnI; +alias StrCSpnW StrCSpn; +alias StrDupW StrDup; +alias StrFormatByteSizeW StrFormatByteSize; +alias StrFormatKBSizeW StrFormatKBSize; +alias StrFromTimeIntervalW StrFromTimeInterval; +alias StrIsIntlEqualW StrIsIntlEqual; +alias StrNCatW StrNCat; +alias StrPBrkW StrPBrk; +alias StrRChrW StrRChr; +alias StrRChrIW StrRChrI; +alias StrRetToBufW StrRetToBuf; +alias StrRetToStrW StrRetToStr; +alias StrRStrIW StrRStrI; +alias StrSpnW StrSpn; +alias StrStrIW StrStrI; +alias StrStrW StrStr; +alias StrToIntW StrToInt; +alias StrToIntExW StrToIntEx; +alias StrTrimW StrTrim; +alias PathAddBackslashW PathAddBackslash; +alias PathAddExtensionW PathAddExtension; +alias PathAppendW PathAppend; +alias PathBuildRootW PathBuildRoot; +alias PathCanonicalizeW PathCanonicalize; +alias PathCombineW PathCombine; +alias PathCommonPrefixW PathCommonPrefix; +alias PathCompactPathW PathCompactPath; +alias PathCompactPathExW PathCompactPathEx; +alias PathCreateFromUrlW PathCreateFromUrl; +alias PathFileExistsW PathFileExists; +alias PathFindExtensionW PathFindExtension; +alias PathFindFileNameW PathFindFileName; +alias PathFindNextComponentW PathFindNextComponent; +alias PathFindOnPathW PathFindOnPath; +alias PathFindSuffixArrayW PathFindSuffixArray; +alias PathGetArgsW PathGetArgs; +alias PathGetCharTypeW PathGetCharType; +alias PathGetDriveNumberW PathGetDriveNumber; +alias PathIsContentTypeW PathIsContentType; +alias PathIsDirectoryEmptyW PathIsDirectoryEmpty; +alias PathIsDirectoryW PathIsDirectory; +alias PathIsFileSpecW PathIsFileSpec; +alias PathIsLFNFileSpecW PathIsLFNFileSpec; +alias PathIsNetworkPathW PathIsNetworkPath; +alias PathIsPrefixW PathIsPrefix; +alias PathIsRelativeW PathIsRelative; +alias PathIsRootW PathIsRoot; +alias PathIsSameRootW PathIsSameRoot; +alias PathIsSystemFolderW PathIsSystemFolder; +alias PathIsUNCServerShareW PathIsUNCServerShare; +alias PathIsUNCServerW PathIsUNCServer; +alias PathIsUNCW PathIsUNC; +alias PathIsURLW PathIsURL; +alias PathMakePrettyW PathMakePretty; +alias PathMakeSystemFolderW PathMakeSystemFolder; +alias PathMatchSpecW PathMatchSpec; +alias PathParseIconLocationW PathParseIconLocation; +alias PathQuoteSpacesW PathQuoteSpaces; +alias PathRelativePathToW PathRelativePathTo; +alias PathRemoveArgsW PathRemoveArgs; +alias PathRemoveBackslashW PathRemoveBackslash; +alias PathRemoveBlanksW PathRemoveBlanks; +alias PathRemoveExtensionW PathRemoveExtension; +alias PathRemoveFileSpecW PathRemoveFileSpec; +alias PathRenameExtensionW PathRenameExtension; +alias PathSearchAndQualifyW PathSearchAndQualify; +alias PathSetDlgItemPathW PathSetDlgItemPath; +alias PathSkipRootW PathSkipRoot; +alias PathStripPathW PathStripPath; +alias PathStripToRootW PathStripToRoot; +alias PathUndecorateW PathUndecorate; +alias PathUnExpandEnvStringsW PathUnExpandEnvStrings; +alias PathUnmakeSystemFolderW PathUnmakeSystemFolder; +alias PathUnquoteSpacesW PathUnquoteSpaces; +alias SHCreateStreamOnFileW SHCreateStreamOnFile; +alias SHOpenRegStreamW SHOpenRegStream; +alias SHOpenRegStream2W SHOpenRegStream2; +alias SHCopyKeyW SHCopyKey; +alias SHDeleteEmptyKeyW SHDeleteEmptyKey; +alias SHDeleteKeyW SHDeleteKey; +alias SHEnumKeyExW SHEnumKeyEx; +alias SHQueryInfoKeyW SHQueryInfoKey; +alias SHQueryValueExW SHQueryValueEx; +alias SHEnumValueW SHEnumValue; +alias SHGetValueW SHGetValue; +alias SHSetValueW SHSetValue; +alias SHDeleteValueW SHDeleteValue; +alias AssocQueryKeyW AssocQueryKey; +alias AssocQueryStringByKeyW AssocQueryStringByKey; +alias AssocQueryStringW AssocQueryString; +alias UrlApplySchemeW UrlApplyScheme; +alias UrlCanonicalizeW UrlCanonicalize; +alias UrlCombineW UrlCombine; +alias UrlCompareW UrlCompare; +alias UrlCreateFromPathW UrlCreateFromPath; +alias UrlEscapeW UrlEscape; +alias UrlGetLocationW UrlGetLocation; +alias UrlGetPartW UrlGetPart; +alias UrlHashW UrlHash; +alias UrlIsW UrlIs; +alias UrlIsFileUrlW UrlIsFileUrl; +alias UrlIsNoHistoryW UrlIsNoHistory; +alias UrlIsOpaqueW UrlIsOpaque; +alias UrlUnescapeW UrlUnescape; +alias UrlUnescapeInPlaceW UrlUnescapeInPlace; +alias SHRegCreateUSKeyW SHRegCreateUSKey; +alias SHRegDeleteEmptyUSKeyW SHRegDeleteEmptyUSKey; +alias SHRegDeleteUSValueW SHRegDeleteUSValue; +alias SHRegEnumUSKeyW SHRegEnumUSKey; +alias SHRegEnumUSValueW SHRegEnumUSValue; +alias SHRegGetBoolUSValueW SHRegGetBoolUSValue; +alias SHRegGetPathW SHRegGetPath; +alias SHRegGetUSValueW SHRegGetUSValue; +alias SHRegOpenUSKeyW SHRegOpenUSKey; +alias SHRegQueryInfoUSKeyW SHRegQueryInfoUSKey; +alias SHRegQueryUSValueW SHRegQueryUSValue; +alias SHRegSetPathW SHRegSetPath; +alias SHRegSetUSValueW SHRegSetUSValue; +alias SHRegWriteUSValueW SHRegWriteUSValue; +//alias wnsprintfW wnsprintf; +//alias wvnsprintfW wvnsprintf; +} else { +alias ChrCmpIA ChrCmpI; +alias IntlStrEqNA IntlStrEqN; +alias IntlStrEqNIA IntlStrEqNI; +alias IntlStrEqWorkerA IntlStrEqWorker; +alias SHStrDupA SHStrDup; +alias StrCatBuffA StrCatBuff; +alias StrChrA StrChr; +alias StrChrIA StrChrI; +alias StrCmpNIA StrCmpNI; +alias StrCmpNA StrCmpN; +alias StrCSpnIA StrCSpnI; +alias StrCSpnA StrCSpn; +alias StrDupA StrDup; +alias StrFormatByteSizeA StrFormatByteSize; +alias StrFormatKBSizeA StrFormatKBSize; +alias StrFromTimeIntervalA StrFromTimeInterval; +alias StrIsIntlEqualA StrIsIntlEqual; +alias StrNCatA StrNCat; +alias StrPBrkA StrPBrk; +alias StrRChrA StrRChr; +alias StrRChrIA StrRChrI; +alias StrRetToBufA StrRetToBuf; +alias StrRetToStrA StrRetToStr; +alias StrRStrIA StrRStrI; +alias StrSpnA StrSpn; +alias StrStrIA StrStrI; +alias StrStrA StrStr; +alias StrToIntA StrToInt; +alias StrToIntExA StrToIntEx; +alias StrTrimA StrTrim; +alias PathAddBackslashA PathAddBackslash; +alias PathAddExtensionA PathAddExtension; +alias PathAppendA PathAppend; +alias PathBuildRootA PathBuildRoot; +alias PathCanonicalizeA PathCanonicalize; +alias PathCombineA PathCombine; +alias PathCommonPrefixA PathCommonPrefix; +alias PathCompactPathA PathCompactPath; +alias PathCompactPathExA PathCompactPathEx; +alias PathCreateFromUrlA PathCreateFromUrl; +alias PathFileExistsA PathFileExists; +alias PathFindExtensionA PathFindExtension; +alias PathFindFileNameA PathFindFileName; +alias PathFindNextComponentA PathFindNextComponent; +alias PathFindOnPathA PathFindOnPath; +alias PathFindSuffixArrayA PathFindSuffixArray; +alias PathGetArgsA PathGetArgs; +alias PathGetCharTypeA PathGetCharType; +alias PathGetDriveNumberA PathGetDriveNumber; +alias PathIsContentTypeA PathIsContentType; +alias PathIsDirectoryEmptyA PathIsDirectoryEmpty; +alias PathIsDirectoryA PathIsDirectory; +alias PathIsFileSpecA PathIsFileSpec; +alias PathIsLFNFileSpecA PathIsLFNFileSpec; +alias PathIsNetworkPathA PathIsNetworkPath; +alias PathIsPrefixA PathIsPrefix; +alias PathIsRelativeA PathIsRelative; +alias PathIsRootA PathIsRoot; +alias PathIsSameRootA PathIsSameRoot; +alias PathIsSystemFolderA PathIsSystemFolder; +alias PathIsUNCServerShareA PathIsUNCServerShare; +alias PathIsUNCServerA PathIsUNCServer; +alias PathIsUNCA PathIsUNC; +alias PathIsURLA PathIsURL; +alias PathMakePrettyA PathMakePretty; +alias PathMakeSystemFolderA PathMakeSystemFolder; +alias PathMatchSpecA PathMatchSpec; +alias PathParseIconLocationA PathParseIconLocation; +alias PathQuoteSpacesA PathQuoteSpaces; +alias PathRelativePathToA PathRelativePathTo; +alias PathRemoveArgsA PathRemoveArgs; +alias PathRemoveBackslashA PathRemoveBackslash; +alias PathRemoveBlanksA PathRemoveBlanks; +alias PathRemoveExtensionA PathRemoveExtension; +alias PathRemoveFileSpecA PathRemoveFileSpec; +alias PathRenameExtensionA PathRenameExtension; +alias PathSearchAndQualifyA PathSearchAndQualify; +alias PathSetDlgItemPathA PathSetDlgItemPath; +alias PathSkipRootA PathSkipRoot; +alias PathStripPathA PathStripPath; +alias PathStripToRootA PathStripToRoot; +alias PathUndecorateA PathUndecorate; +alias PathUnExpandEnvStringsA PathUnExpandEnvStrings; +alias PathUnmakeSystemFolderA PathUnmakeSystemFolder; +alias PathUnquoteSpacesA PathUnquoteSpaces; +alias SHCreateStreamOnFileA SHCreateStreamOnFile; +alias SHOpenRegStreamA SHOpenRegStream; +alias SHOpenRegStream2A SHOpenRegStream2; +alias SHCopyKeyA SHCopyKey; +alias SHDeleteEmptyKeyA SHDeleteEmptyKey; +alias SHDeleteKeyA SHDeleteKey; +alias SHEnumKeyExA SHEnumKeyEx; +alias SHQueryInfoKeyA SHQueryInfoKey; +alias SHQueryValueExA SHQueryValueEx; +alias SHEnumValueA SHEnumValue; +alias SHGetValueA SHGetValue; +alias SHSetValueA SHSetValue; +alias SHDeleteValueA SHDeleteValue; +alias AssocQueryKeyA AssocQueryKey; +alias AssocQueryStringByKeyA AssocQueryStringByKey; +alias AssocQueryStringA AssocQueryString; +alias UrlApplySchemeA UrlApplyScheme; +alias UrlCanonicalizeA UrlCanonicalize; +alias UrlCombineA UrlCombine; +alias UrlCompareA UrlCompare; +alias UrlCreateFromPathA UrlCreateFromPath; +alias UrlEscapeA UrlEscape; +alias UrlGetLocationA UrlGetLocation; +alias UrlGetPartA UrlGetPart; +alias UrlHashA UrlHash; +alias UrlIsA UrlIs; +alias UrlIsNoHistoryA UrlIsNoHistory; +alias UrlIsOpaqueA UrlIsOpaque; +alias UrlUnescapeA UrlUnescape; +alias UrlUnescapeInPlaceA UrlUnescapeInPlace; +alias SHRegCreateUSKeyA SHRegCreateUSKey; +alias SHRegDeleteEmptyUSKeyA SHRegDeleteEmptyUSKey; +alias SHRegDeleteUSValueA SHRegDeleteUSValue; +alias SHRegEnumUSKeyA SHRegEnumUSKey; +alias SHRegEnumUSValueA SHRegEnumUSValue; +alias SHRegGetBoolUSValueA SHRegGetBoolUSValue; +alias SHRegGetPathA SHRegGetPath; +alias SHRegGetUSValueA SHRegGetUSValue; +alias SHRegOpenUSKeyA SHRegOpenUSKey; +alias SHRegQueryInfoUSKeyA SHRegQueryInfoUSKey; +alias SHRegQueryUSValueA SHRegQueryUSValue; +alias SHRegSetPathA SHRegSetPath; +alias SHRegSetUSValueA SHRegSetUSValue; +alias SHRegWriteUSValueA SHRegWriteUSValue; +//alias wnsprintfA wnsprintf; +//alias wvnsprintfA wvnsprintf; +} + +alias StrToInt StrToLong; diff --git a/src/core/sys/windows/snmp.d b/src/core/sys/windows/snmp.d index ea9b8dcc80..ffb0d74300 100644 --- a/src/core/sys/windows/snmp.d +++ b/src/core/sys/windows/snmp.d @@ -1,268 +1,268 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_snmp.d) - */ -module core.sys.windows.snmp; - -private import core.sys.windows.windows; - -// These are not documented on MSDN -enum { - DEFAULT_SNMP_PORT_UDP = 161, - DEFAULT_SNMP_PORT_IPX = 36879, - DEFAULT_SNMPTRAP_PORT_UDP = 162, - DEFAULT_SNMPTRAP_PORT_IPX = 36880 -} - -enum : BYTE { - ASN_UNIVERSAL = 0x00, - ASN_PRIMITIVE = 0x00, - ASN_CONSTRUCTOR = 0x20, - ASN_APPLICATION = 0x40, - ASN_CONTEXT = 0x80, - ASN_PRIVATE = 0xC0, - - SNMP_PDU_GET = ASN_CONTEXT | ASN_CONSTRUCTOR, - SNMP_PDU_GETNEXT, - SNMP_PDU_RESPONSE, - SNMP_PDU_SET, - SNMP_PDU_GETBULK, // = ASN_CONTEXT | ASN_CONSTRUCTOR | 4 - SNMP_PDU_V1TRAP = ASN_CONTEXT | ASN_CONSTRUCTOR | 4, - SNMP_PDU_INFORM = ASN_CONTEXT | ASN_CONSTRUCTOR | 6, - SNMP_PDU_TRAP, - SNMP_PDU_REPORT, - ASN_INTEGER = ASN_UNIVERSAL | ASN_PRIMITIVE | 2, - ASN_BITS, - ASN_OCTETSTRING, - ASN_NULL, - ASN_OBJECTIDENTIFIER, // = ASN_UNIVERSAL | ASN_PRIMITIVE | 6 - ASN_INTEGER32 = ASN_INTEGER, - ASN_SEQUENCE = ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10, - ASN_SEQUENCEOF = ASN_SEQUENCE, - ASN_IPADDRESS = ASN_APPLICATION | ASN_PRIMITIVE, - ASN_COUNTER32, - ASN_GAUGE32, - ASN_TIMETICKS, - ASN_OPAQUE, // = ASN_APPLICATION | ASN_PRIMITIVE | 4 - ASN_COUNTER64 = ASN_APPLICATION | ASN_PRIMITIVE | 6, - ASN_UNSIGNED32, // = ASN_APPLICATION | ASN_PRIMITIVE | 7 - SNMP_EXCEPTION_NOSUCHOBJECT = ASN_CONTEXT | ASN_PRIMITIVE, - SNMP_EXCEPTION_NOSUCHINSTANCE, - SNMP_EXCEPTION_ENDOFMIBVIEW, - SNMP_EXTENSION_GET = SNMP_PDU_GET, - SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT, - SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK, - SNMP_EXTENSION_SET_TEST = ASN_PRIVATE | ASN_CONSTRUCTOR, - SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET, - SNMP_EXTENSION_SET_UNDO = ASN_PRIVATE | ASN_CONSTRUCTOR | 1, - SNMP_EXTENSION_SET_CLEANUP -} - - -enum : AsnInteger { - SNMP_ERRORSTATUS_NOERROR, - SNMP_ERRORSTATUS_TOOBIG, - SNMP_ERRORSTATUS_NOSUCHNAME, - SNMP_ERRORSTATUS_BADVALUE, - SNMP_ERRORSTATUS_READONLY, - SNMP_ERRORSTATUS_GENERR, - SNMP_ERRORSTATUS_NOACCESS, - SNMP_ERRORSTATUS_WRONGTYPE, - SNMP_ERRORSTATUS_WRONGLENGTH, - SNMP_ERRORSTATUS_WRONGENCODING, - SNMP_ERRORSTATUS_WRONGVALUE, - SNMP_ERRORSTATUS_NOCREATION, - SNMP_ERRORSTATUS_INCONSISTENTVALUE, - SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE, - SNMP_ERRORSTATUS_COMMITFAILED, - SNMP_ERRORSTATUS_UNDOFAILED, - SNMP_ERRORSTATUS_AUTHORIZATIONERROR, - SNMP_ERRORSTATUS_NOTWRITABLE, - SNMP_ERRORSTATUS_INCONSISTENTNAME -} - -enum : AsnInteger { - SNMP_GENERICTRAP_COLDSTART, - SNMP_GENERICTRAP_WARMSTART, - SNMP_GENERICTRAP_LINKDOWN, - SNMP_GENERICTRAP_LINKUP, - SNMP_GENERICTRAP_AUTHFAILURE, - SNMP_GENERICTRAP_EGPNEIGHLOSS, - SNMP_GENERICTRAP_ENTERSPECIFIC -} - -// These are not documented on MSDN -enum { - SNMP_ACCESS_NONE, - SNMP_ACCESS_NOTIFY, - SNMP_ACCESS_READ_ONLY, - SNMP_ACCESS_READ_WRITE, - SNMP_ACCESS_READ_CREATE -} - -enum : BOOL { - SNMPAPI_ERROR = false, - SNMPAPI_NOERROR = true -} - -enum : INT { - SNMP_LOG_SILENT, - SNMP_LOG_FATAL, - SNMP_LOG_ERROR, - SNMP_LOG_WARNING, - SNMP_LOG_TRACE, - SNMP_LOG_VERBOSE -} - -const INT - SNMP_OUTPUT_TO_CONSOLE = 1, - SNMP_OUTPUT_TO_LOGFILE = 2, - SNMP_OUTPUT_TO_EVENTLOG = 4, - SNMP_OUTPUT_TO_DEBUGGER = 8; - -const size_t SNMP_MAX_OID_LEN = 128; - -enum : DWORD { - SNMP_MEM_ALLOC_ERROR = 1, - SNMP_BERAPI_INVALID_LENGTH = 10, - SNMP_BERAPI_INVALID_TAG, - SNMP_BERAPI_OVERFLOW, - SNMP_BERAPI_SHORT_BUFFER, - SNMP_BERAPI_INVALID_OBJELEM, - SNMP_PDUAPI_UNRECOGNIZED_PDU = 20, - SNMP_PDUAPI_INVALID_ES, - SNMP_PDUAPI_INVALID_GT, - SNMP_AUTHAPI_INVALID_VERSION = 30, - SNMP_AUTHAPI_INVALID_MSG_TYPE, - SNMP_AUTHAPI_TRIV_AUTH_FAILED, -} - -alias INT SNMPAPI; -alias LONG AsnInteger32; -alias ULONG AsnUnsigned32, AsnCounter32, AsnGauge32, AsnTimeticks; -alias ULARGE_INTEGER AsnCounter64; - -align (4): - -struct AsnOctetString { - BYTE* stream; - UINT length; - BOOL dynamic; -} -alias AsnOctetString AsnBits, AsnSequence, AsnImplicitSequence, - AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; - -struct AsnObjectIdentifier { - UINT idLength; - UINT* ids; -} -alias AsnObjectIdentifier AsnObjectName; - -struct AsnAny { - BYTE asnType; - union _asnValue { - AsnInteger32 number; - AsnUnsigned32 unsigned32; - AsnCounter64 counter64; - AsnOctetString string; - AsnBits bits; - AsnObjectIdentifier object; - AsnSequence sequence; - AsnIPAddress address; - AsnCounter32 counter; - AsnGauge32 gauge; - AsnTimeticks ticks; - AsnOpaque arbitrary; - } - _asnValue asnValue; -} -alias AsnAny AsnObjectSyntax; - -struct SnmpVarBind { - AsnObjectName name; - AsnObjectSyntax value; -} - -struct SnmpVarBindList { - SnmpVarBind* list; - UINT len; -} - -extern (Windows) { - VOID SnmpExtensionClose(); - BOOL SnmpExtensionInit(DWORD, HANDLE*, AsnObjectIdentifier*); - BOOL SnmpExtensionInitEx(AsnObjectIdentifier*); - BOOL SnmpExtensionMonitor(LPVOID); - BOOL SnmpExtensionQuery(BYTE, SnmpVarBindList*, AsnInteger32*, - AsnInteger32*); - BOOL SnmpExtensionQueryEx(DWORD, DWORD, SnmpVarBindList*, AsnOctetString*, - AsnInteger32*, AsnInteger32*); - BOOL SnmpExtensionTrap(AsnObjectIdentifier*, AsnInteger32*, AsnInteger32*, - AsnTimeticks*, SnmpVarBindList*); - DWORD SnmpSvcGetUptime(); - VOID SnmpSvcSetLogLevel(INT); - VOID SnmpSvcSetLogType(INT); - SNMPAPI SnmpUtilAsnAnyCpy(AsnAny*, AsnAny*); - VOID SnmpUtilAsnAnyFree(AsnAny*); - VOID SnmpUtilDbgPrint(INT, LPSTR, ...); - LPSTR SnmpUtilIdsToA(UINT*, UINT); - LPVOID SnmpUtilMemAlloc(UINT); - VOID SnmpUtilMemFree(LPVOID); - LPVOID SnmpUtilMemReAlloc(LPVOID, UINT); - SNMPAPI SnmpUtilOctetsCmp(AsnOctetString*, AsnOctetString*); - SNMPAPI SnmpUtilOctetsCpy(AsnOctetString*, AsnOctetString*); - VOID SnmpUtilOctetsFree(AsnOctetString*); - SNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*, AsnOctetString*, UINT); - SNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*, AsnObjectIdentifier*); - SNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*, AsnObjectIdentifier*); - SNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*, AsnObjectIdentifier*); - VOID SnmpUtilOidFree(AsnObjectIdentifier*); - SNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*, AsnObjectIdentifier*, UINT); - LPSTR SnmpUtilOidToA(AsnObjectIdentifier*); - VOID SnmpUtilPrintAsnAny(AsnAny*); - VOID SnmpUtilPrintOid(AsnObjectIdentifier*); - SNMPAPI SnmpUtilVarBindCpy(SnmpVarBind*, SnmpVarBind*); - SNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*, SnmpVarBindList*); - VOID SnmpUtilVarBindFree(SnmpVarBind*); - VOID SnmpUtilVarBindListFree(SnmpVarBindList*); -} - -alias SnmpUtilMemAlloc SNMP_malloc; -alias SnmpUtilMemFree SNMP_free; -alias SnmpUtilMemReAlloc SNMP_realloc; -alias SnmpUtilMemAlloc SNMP_DBG_malloc; -alias SnmpUtilMemFree SNMP_DBG_free; -alias SnmpUtilMemReAlloc SNMP_DBG_realloc; -alias SnmpUtilOidAppend SNMP_oidappend; -alias SnmpUtilOidCmp SNMP_oidcmp; -alias SnmpUtilOidCpy SNMP_oidcpy; -alias SnmpUtilOidFree SNMP_oidfree; -alias SnmpUtilOidNCmp SNMP_oidncmp; -alias SnmpUtilPrintAsnAny SNMP_printany; -alias SnmpUtilVarBindCpy SNMP_CopyVarBind; -alias SnmpUtilVarBindListCpy SNMP_CopyVarBindList; -alias SnmpUtilVarBindFree SNMP_FreeVarBind; -alias SnmpUtilVarBindListFree SNMP_FreeVarBindList; -alias ASN_IPADDRESS ASN_RFC1155_IPADDRESS; -alias ASN_COUNTER32 ASN_RFC1155_COUNTER; -alias ASN_GAUGE32 ASN_RFC1155_GAUGE; -alias ASN_TIMETICKS ASN_RFC1155_TIMETICKS; -alias ASN_OPAQUE ASN_RFC1155_OPAQUE; -alias ASN_OCTETSTRING ASN_RFC1213_DISPSTRING; -alias SNMP_PDU_GET ASN_RFC1157_GETREQUEST; -alias SNMP_PDU_GETNEXT ASN_RFC1157_GETNEXTREQUEST; -alias SNMP_PDU_RESPONSE ASN_RFC1157_GETRESPONSE; -alias SNMP_PDU_SET ASN_RFC1157_SETREQUEST; -alias SNMP_PDU_V1TRAP ASN_RFC1157_TRAP; -alias ASN_CONTEXT ASN_CONTEXTSPECIFIC; -alias ASN_PRIMITIVE ASN_PRIMATIVE; -alias SnmpVarBindList RFC1157VarBindList; -alias SnmpVarBind RFC1157VarBind; -alias AsnInteger32 AsnInteger; -alias AsnCounter32 AsnCounter; -alias AsnGauge32 AsnGauge; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_snmp.d) + */ +module core.sys.windows.snmp; + +private import core.sys.windows.windows; + +// These are not documented on MSDN +enum { + DEFAULT_SNMP_PORT_UDP = 161, + DEFAULT_SNMP_PORT_IPX = 36879, + DEFAULT_SNMPTRAP_PORT_UDP = 162, + DEFAULT_SNMPTRAP_PORT_IPX = 36880 +} + +enum : BYTE { + ASN_UNIVERSAL = 0x00, + ASN_PRIMITIVE = 0x00, + ASN_CONSTRUCTOR = 0x20, + ASN_APPLICATION = 0x40, + ASN_CONTEXT = 0x80, + ASN_PRIVATE = 0xC0, + + SNMP_PDU_GET = ASN_CONTEXT | ASN_CONSTRUCTOR, + SNMP_PDU_GETNEXT, + SNMP_PDU_RESPONSE, + SNMP_PDU_SET, + SNMP_PDU_GETBULK, // = ASN_CONTEXT | ASN_CONSTRUCTOR | 4 + SNMP_PDU_V1TRAP = ASN_CONTEXT | ASN_CONSTRUCTOR | 4, + SNMP_PDU_INFORM = ASN_CONTEXT | ASN_CONSTRUCTOR | 6, + SNMP_PDU_TRAP, + SNMP_PDU_REPORT, + ASN_INTEGER = ASN_UNIVERSAL | ASN_PRIMITIVE | 2, + ASN_BITS, + ASN_OCTETSTRING, + ASN_NULL, + ASN_OBJECTIDENTIFIER, // = ASN_UNIVERSAL | ASN_PRIMITIVE | 6 + ASN_INTEGER32 = ASN_INTEGER, + ASN_SEQUENCE = ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10, + ASN_SEQUENCEOF = ASN_SEQUENCE, + ASN_IPADDRESS = ASN_APPLICATION | ASN_PRIMITIVE, + ASN_COUNTER32, + ASN_GAUGE32, + ASN_TIMETICKS, + ASN_OPAQUE, // = ASN_APPLICATION | ASN_PRIMITIVE | 4 + ASN_COUNTER64 = ASN_APPLICATION | ASN_PRIMITIVE | 6, + ASN_UNSIGNED32, // = ASN_APPLICATION | ASN_PRIMITIVE | 7 + SNMP_EXCEPTION_NOSUCHOBJECT = ASN_CONTEXT | ASN_PRIMITIVE, + SNMP_EXCEPTION_NOSUCHINSTANCE, + SNMP_EXCEPTION_ENDOFMIBVIEW, + SNMP_EXTENSION_GET = SNMP_PDU_GET, + SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT, + SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK, + SNMP_EXTENSION_SET_TEST = ASN_PRIVATE | ASN_CONSTRUCTOR, + SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET, + SNMP_EXTENSION_SET_UNDO = ASN_PRIVATE | ASN_CONSTRUCTOR | 1, + SNMP_EXTENSION_SET_CLEANUP +} + + +enum : AsnInteger { + SNMP_ERRORSTATUS_NOERROR, + SNMP_ERRORSTATUS_TOOBIG, + SNMP_ERRORSTATUS_NOSUCHNAME, + SNMP_ERRORSTATUS_BADVALUE, + SNMP_ERRORSTATUS_READONLY, + SNMP_ERRORSTATUS_GENERR, + SNMP_ERRORSTATUS_NOACCESS, + SNMP_ERRORSTATUS_WRONGTYPE, + SNMP_ERRORSTATUS_WRONGLENGTH, + SNMP_ERRORSTATUS_WRONGENCODING, + SNMP_ERRORSTATUS_WRONGVALUE, + SNMP_ERRORSTATUS_NOCREATION, + SNMP_ERRORSTATUS_INCONSISTENTVALUE, + SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE, + SNMP_ERRORSTATUS_COMMITFAILED, + SNMP_ERRORSTATUS_UNDOFAILED, + SNMP_ERRORSTATUS_AUTHORIZATIONERROR, + SNMP_ERRORSTATUS_NOTWRITABLE, + SNMP_ERRORSTATUS_INCONSISTENTNAME +} + +enum : AsnInteger { + SNMP_GENERICTRAP_COLDSTART, + SNMP_GENERICTRAP_WARMSTART, + SNMP_GENERICTRAP_LINKDOWN, + SNMP_GENERICTRAP_LINKUP, + SNMP_GENERICTRAP_AUTHFAILURE, + SNMP_GENERICTRAP_EGPNEIGHLOSS, + SNMP_GENERICTRAP_ENTERSPECIFIC +} + +// These are not documented on MSDN +enum { + SNMP_ACCESS_NONE, + SNMP_ACCESS_NOTIFY, + SNMP_ACCESS_READ_ONLY, + SNMP_ACCESS_READ_WRITE, + SNMP_ACCESS_READ_CREATE +} + +enum : BOOL { + SNMPAPI_ERROR = false, + SNMPAPI_NOERROR = true +} + +enum : INT { + SNMP_LOG_SILENT, + SNMP_LOG_FATAL, + SNMP_LOG_ERROR, + SNMP_LOG_WARNING, + SNMP_LOG_TRACE, + SNMP_LOG_VERBOSE +} + +const INT + SNMP_OUTPUT_TO_CONSOLE = 1, + SNMP_OUTPUT_TO_LOGFILE = 2, + SNMP_OUTPUT_TO_EVENTLOG = 4, + SNMP_OUTPUT_TO_DEBUGGER = 8; + +const size_t SNMP_MAX_OID_LEN = 128; + +enum : DWORD { + SNMP_MEM_ALLOC_ERROR = 1, + SNMP_BERAPI_INVALID_LENGTH = 10, + SNMP_BERAPI_INVALID_TAG, + SNMP_BERAPI_OVERFLOW, + SNMP_BERAPI_SHORT_BUFFER, + SNMP_BERAPI_INVALID_OBJELEM, + SNMP_PDUAPI_UNRECOGNIZED_PDU = 20, + SNMP_PDUAPI_INVALID_ES, + SNMP_PDUAPI_INVALID_GT, + SNMP_AUTHAPI_INVALID_VERSION = 30, + SNMP_AUTHAPI_INVALID_MSG_TYPE, + SNMP_AUTHAPI_TRIV_AUTH_FAILED, +} + +alias INT SNMPAPI; +alias LONG AsnInteger32; +alias ULONG AsnUnsigned32, AsnCounter32, AsnGauge32, AsnTimeticks; +alias ULARGE_INTEGER AsnCounter64; + +align (4): + +struct AsnOctetString { + BYTE* stream; + UINT length; + BOOL dynamic; +} +alias AsnOctetString AsnBits, AsnSequence, AsnImplicitSequence, + AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; + +struct AsnObjectIdentifier { + UINT idLength; + UINT* ids; +} +alias AsnObjectIdentifier AsnObjectName; + +struct AsnAny { + BYTE asnType; + union _asnValue { + AsnInteger32 number; + AsnUnsigned32 unsigned32; + AsnCounter64 counter64; + AsnOctetString string; + AsnBits bits; + AsnObjectIdentifier object; + AsnSequence sequence; + AsnIPAddress address; + AsnCounter32 counter; + AsnGauge32 gauge; + AsnTimeticks ticks; + AsnOpaque arbitrary; + } + _asnValue asnValue; +} +alias AsnAny AsnObjectSyntax; + +struct SnmpVarBind { + AsnObjectName name; + AsnObjectSyntax value; +} + +struct SnmpVarBindList { + SnmpVarBind* list; + UINT len; +} + +extern (Windows) { + VOID SnmpExtensionClose(); + BOOL SnmpExtensionInit(DWORD, HANDLE*, AsnObjectIdentifier*); + BOOL SnmpExtensionInitEx(AsnObjectIdentifier*); + BOOL SnmpExtensionMonitor(LPVOID); + BOOL SnmpExtensionQuery(BYTE, SnmpVarBindList*, AsnInteger32*, + AsnInteger32*); + BOOL SnmpExtensionQueryEx(DWORD, DWORD, SnmpVarBindList*, AsnOctetString*, + AsnInteger32*, AsnInteger32*); + BOOL SnmpExtensionTrap(AsnObjectIdentifier*, AsnInteger32*, AsnInteger32*, + AsnTimeticks*, SnmpVarBindList*); + DWORD SnmpSvcGetUptime(); + VOID SnmpSvcSetLogLevel(INT); + VOID SnmpSvcSetLogType(INT); + SNMPAPI SnmpUtilAsnAnyCpy(AsnAny*, AsnAny*); + VOID SnmpUtilAsnAnyFree(AsnAny*); + VOID SnmpUtilDbgPrint(INT, LPSTR, ...); + LPSTR SnmpUtilIdsToA(UINT*, UINT); + LPVOID SnmpUtilMemAlloc(UINT); + VOID SnmpUtilMemFree(LPVOID); + LPVOID SnmpUtilMemReAlloc(LPVOID, UINT); + SNMPAPI SnmpUtilOctetsCmp(AsnOctetString*, AsnOctetString*); + SNMPAPI SnmpUtilOctetsCpy(AsnOctetString*, AsnOctetString*); + VOID SnmpUtilOctetsFree(AsnOctetString*); + SNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*, AsnOctetString*, UINT); + SNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*, AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*, AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*, AsnObjectIdentifier*); + VOID SnmpUtilOidFree(AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*, AsnObjectIdentifier*, UINT); + LPSTR SnmpUtilOidToA(AsnObjectIdentifier*); + VOID SnmpUtilPrintAsnAny(AsnAny*); + VOID SnmpUtilPrintOid(AsnObjectIdentifier*); + SNMPAPI SnmpUtilVarBindCpy(SnmpVarBind*, SnmpVarBind*); + SNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*, SnmpVarBindList*); + VOID SnmpUtilVarBindFree(SnmpVarBind*); + VOID SnmpUtilVarBindListFree(SnmpVarBindList*); +} + +alias SnmpUtilMemAlloc SNMP_malloc; +alias SnmpUtilMemFree SNMP_free; +alias SnmpUtilMemReAlloc SNMP_realloc; +alias SnmpUtilMemAlloc SNMP_DBG_malloc; +alias SnmpUtilMemFree SNMP_DBG_free; +alias SnmpUtilMemReAlloc SNMP_DBG_realloc; +alias SnmpUtilOidAppend SNMP_oidappend; +alias SnmpUtilOidCmp SNMP_oidcmp; +alias SnmpUtilOidCpy SNMP_oidcpy; +alias SnmpUtilOidFree SNMP_oidfree; +alias SnmpUtilOidNCmp SNMP_oidncmp; +alias SnmpUtilPrintAsnAny SNMP_printany; +alias SnmpUtilVarBindCpy SNMP_CopyVarBind; +alias SnmpUtilVarBindListCpy SNMP_CopyVarBindList; +alias SnmpUtilVarBindFree SNMP_FreeVarBind; +alias SnmpUtilVarBindListFree SNMP_FreeVarBindList; +alias ASN_IPADDRESS ASN_RFC1155_IPADDRESS; +alias ASN_COUNTER32 ASN_RFC1155_COUNTER; +alias ASN_GAUGE32 ASN_RFC1155_GAUGE; +alias ASN_TIMETICKS ASN_RFC1155_TIMETICKS; +alias ASN_OPAQUE ASN_RFC1155_OPAQUE; +alias ASN_OCTETSTRING ASN_RFC1213_DISPSTRING; +alias SNMP_PDU_GET ASN_RFC1157_GETREQUEST; +alias SNMP_PDU_GETNEXT ASN_RFC1157_GETNEXTREQUEST; +alias SNMP_PDU_RESPONSE ASN_RFC1157_GETRESPONSE; +alias SNMP_PDU_SET ASN_RFC1157_SETREQUEST; +alias SNMP_PDU_V1TRAP ASN_RFC1157_TRAP; +alias ASN_CONTEXT ASN_CONTEXTSPECIFIC; +alias ASN_PRIMITIVE ASN_PRIMATIVE; +alias SnmpVarBindList RFC1157VarBindList; +alias SnmpVarBind RFC1157VarBind; +alias AsnInteger32 AsnInteger; +alias AsnCounter32 AsnCounter; +alias AsnGauge32 AsnGauge; diff --git a/src/core/sys/windows/sql.d b/src/core/sys/windows/sql.d index 7f13106ace..c3593f5643 100644 --- a/src/core/sys/windows/sql.d +++ b/src/core/sys/windows/sql.d @@ -1,433 +1,433 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_sql.d) - */ -module core.sys.windows.sql; - -public import core.sys.windows.sqltypes; -private import core.sys.windows.windef; - -const ODBCVER = 0x0351; - -const SQL_ACCESSIBLE_PROCEDURES=20; -const SQL_ACCESSIBLE_TABLES=19; -const SQL_ALL_TYPES=0; -const SQL_ALTER_TABLE=86; -const SQL_API_SQLALLOCCONNECT=1; -const SQL_API_SQLALLOCENV=2; -const SQL_API_SQLALLOCSTMT=3; -const SQL_API_SQLBINDCOL=4; -const SQL_API_SQLCANCEL=5; -const SQL_API_SQLCOLUMNS=40; -const SQL_API_SQLCONNECT=7; -const SQL_API_SQLDATASOURCES=57; -const SQL_API_SQLDESCRIBECOL=8; -const SQL_API_SQLDISCONNECT=9; -const SQL_API_SQLERROR=10; -const SQL_API_SQLEXECDIRECT=11; -const SQL_API_SQLEXECUTE=12; -const SQL_API_SQLFETCH=13; -const SQL_API_SQLFREECONNECT=14; -const SQL_API_SQLFREEENV=15; -const SQL_API_SQLFREESTMT=16; -const SQL_API_SQLGETCONNECTOPTION=42; -const SQL_API_SQLGETCURSORNAME=17; -const SQL_API_SQLGETDATA=43; -const SQL_API_SQLGETFUNCTIONS=44; -const SQL_API_SQLGETINFO=45; -const SQL_API_SQLGETSTMTOPTION=46; -const SQL_API_SQLGETTYPEINFO=47; -const SQL_API_SQLNUMRESULTCOLS=18; -const SQL_API_SQLPARAMDATA=48; -const SQL_API_SQLPREPARE=19; -const SQL_API_SQLPUTDATA=49; -const SQL_API_SQLROWCOUNT=20; -const SQL_API_SQLSETCONNECTOPTION=50; -const SQL_API_SQLSETCURSORNAME=21; -const SQL_API_SQLSETPARAM=22; -const SQL_API_SQLSETSTMTOPTION=51; -const SQL_API_SQLSPECIALCOLUMNS=52; -const SQL_API_SQLSTATISTICS=53; -const SQL_API_SQLTABLES=54; -const SQL_API_SQLTRANSACT=23; - -const SQL_CB_DELETE=0; -const SQL_CB_CLOSE=1; -const SQL_CB_PRESERVE=2; - -const SQL_CHAR=1; -const SQL_CLOSE=0; -const SQL_COMMIT=0; -const SQL_CURSOR_COMMIT_BEHAVIOR=23; -const SQL_DATA_AT_EXEC=-2; -const SQL_DATA_SOURCE_NAME=2; -const SQL_DATA_SOURCE_READ_ONLY=25; -const SQL_DBMS_NAME=17; -const SQL_DBMS_VER=18; -const SQL_DECIMAL=3; -const SQL_DEFAULT_TXN_ISOLATION=26; -const SQL_DOUBLE=8; -const SQL_DROP=1; -const SQL_ERROR=-1; - -const SQL_FD_FETCH_NEXT=1; -const SQL_FD_FETCH_FIRST=2; -const SQL_FD_FETCH_LAST=4; -const SQL_FD_FETCH_PRIOR=8; -const SQL_FD_FETCH_ABSOLUTE=16; -const SQL_FD_FETCH_RELATIVE=32; - -const SQL_FETCH_ABSOLUTE=5; -const SQL_FETCH_DIRECTION=8; -const SQL_FETCH_FIRST=2; -const SQL_FETCH_LAST=3; -const SQL_FETCH_NEXT=1; -const SQL_FETCH_PRIOR=4; -const SQL_FETCH_RELATIVE=6; -const SQL_FLOAT=6; -const SQL_GD_ANY_COLUMN=1; -const SQL_GD_ANY_ORDER=2; -const SQL_GETDATA_EXTENSIONS=81; -const SQL_IC_LOWER=2; -const SQL_IC_MIXED=4; -const SQL_IC_SENSITIVE=3; -const SQL_IC_UPPER=1; -const SQL_IDENTIFIER_CASE=28; -const SQL_IDENTIFIER_QUOTE_CHAR=29; - -const SQL_INDEX_ALL=1; -const SQL_INDEX_CLUSTERED=1; -const SQL_INDEX_HASHED=2; -const SQL_INDEX_OTHER=3; -const SQL_INDEX_UNIQUE=0; - -const SQL_INTEGER=4; -const SQL_INTEGRITY=73; -const SQL_INVALID_HANDLE=-2; - -const SQL_MAX_CATALOG_NAME_LEN=34; -const SQL_MAX_COLUMN_NAME_LEN=30; -const SQL_MAX_COLUMNS_IN_GROUP_BY=97; -const SQL_MAX_COLUMNS_IN_INDEX=98; -const SQL_MAX_COLUMNS_IN_ORDER_BY=99; -const SQL_MAX_COLUMNS_IN_SELECT=100; -const SQL_MAX_COLUMNS_IN_TABLE=101; -const SQL_MAX_CURSOR_NAME_LEN=31; -const SQL_MAX_INDEX_SIZE=102; -const SQL_MAX_MESSAGE_LENGTH=512; -const SQL_MAX_ROW_SIZE=104; -const SQL_MAX_SCHEMA_NAME_LEN=32; -const SQL_MAX_STATEMENT_LEN=105; -const SQL_MAX_TABLE_NAME_LEN=35; -const SQL_MAX_TABLES_IN_SELECT=106; -const SQL_MAX_USER_NAME_LEN=107; - -const SQL_MAXIMUM_CATALOG_NAME_LENGTH=SQL_MAX_CATALOG_NAME_LEN; -const SQL_MAXIMUM_COLUMN_NAME_LENGTH=SQL_MAX_COLUMN_NAME_LEN; -const SQL_MAXIMUM_COLUMNS_IN_GROUP_BY=SQL_MAX_COLUMNS_IN_GROUP_BY; -const SQL_MAXIMUM_COLUMNS_IN_INDEX=SQL_MAX_COLUMNS_IN_INDEX; -const SQL_MAXIMUM_COLUMNS_IN_ORDER_BY=SQL_MAX_COLUMNS_IN_ORDER_BY; -const SQL_MAXIMUM_COLUMNS_IN_SELECT=SQL_MAX_COLUMNS_IN_SELECT; -const SQL_MAXIMUM_CURSOR_NAME_LENGTH=SQL_MAX_CURSOR_NAME_LEN; -const SQL_MAXIMUM_INDEX_SIZE=SQL_MAX_INDEX_SIZE; -const SQL_MAXIMUM_ROW_SIZE=SQL_MAX_ROW_SIZE; -const SQL_MAXIMUM_SCHEMA_NAME_LENGTH=SQL_MAX_SCHEMA_NAME_LEN; -const SQL_MAXIMUM_STATEMENT_LENGTH=SQL_MAX_STATEMENT_LEN; -const SQL_MAXIMUM_TABLES_IN_SELECT=SQL_MAX_TABLES_IN_SELECT; -const SQL_MAXIMUM_USER_NAME_LENGTH=SQL_MAX_USER_NAME_LEN; - -const SQL_NC_HIGH=0; -const SQL_NC_LOW=1; -const SQL_NEED_DATA=99; -const SQL_NO_NULLS=0; -const SQL_NTS=-3; -const LONG SQL_NTSL=-3; -const SQL_NULL_COLLATION=85; -const SQL_NULL_DATA=-1; -const SQL_NULL_HDBC=0; -const SQL_NULL_HENV=0; -const SQL_NULL_HSTMT=0; -const SQL_NULLABLE=1; -const SQL_NULLABLE_UNKNOWN=2; -const SQL_NUMERIC=2; -const SQL_ORDER_BY_COLUMNS_IN_SELECT=90; -const SQL_PC_PSEUDO=2; -const SQL_PC_UNKNOWN=0; -const SQL_REAL=7; -const SQL_RESET_PARAMS=3; -const SQL_ROLLBACK=1; -const SQL_SCCO_LOCK=2; -const SQL_SCCO_OPT_ROWVER=4; -const SQL_SCCO_OPT_VALUES=8; -const SQL_SCCO_READ_ONLY=1; -const SQL_SCOPE_CURROW=0; -const SQL_SCOPE_SESSION=2; -const SQL_SCOPE_TRANSACTION=1; -const SQL_SCROLL_CONCURRENCY=43; -const SQL_SEARCH_PATTERN_ESCAPE=14; -const SQL_SERVER_NAME=13; -const SQL_SMALLINT=5; -const SQL_SPECIAL_CHARACTERS=94; -const SQL_STILL_EXECUTING=2; -//MACRO #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) - -const SQL_SUCCESS=0; -const SQL_SUCCESS_WITH_INFO=1; - -const SQL_TC_ALL=2; -const SQL_TC_DDL_COMMIT=3; -const SQL_TC_DDL_IGNORE=4; -const SQL_TC_DML=1; -const SQL_TC_NONE=0; - - -const SQL_TXN_CAPABLE=46; -const SQL_TXN_ISOLATION_OPTION=72; -const SQL_TXN_READ_COMMITTED=2; -const SQL_TXN_READ_UNCOMMITTED=1; -const SQL_TXN_REPEATABLE_READ=4; -const SQL_TXN_SERIALIZABLE=8; - -const SQL_TRANSACTION_CAPABLE=SQL_TXN_CAPABLE; -const SQL_TRANSACTION_ISOLATION_OPTION=SQL_TXN_ISOLATION_OPTION; -const SQL_TRANSACTION_READ_COMMITTED=SQL_TXN_READ_COMMITTED; -const SQL_TRANSACTION_READ_UNCOMMITTED=SQL_TXN_READ_UNCOMMITTED; -const SQL_TRANSACTION_REPEATABLE_READ=SQL_TXN_REPEATABLE_READ; -const SQL_TRANSACTION_SERIALIZABLE=SQL_TXN_SERIALIZABLE; - -const SQL_UNBIND=2; -const SQL_UNKNOWN_TYPE=0; -const SQL_USER_NAME=47; -const SQL_VARCHAR=12; - -static if (ODBCVER >= 0x0200) { - const SQL_AT_ADD_COLUMN = 1; - const SQL_AT_DROP_COLUMN = 2; -} - -static if (ODBCVER >= 0x0201) { - const SQL_OJ_LEFT = 1; - const SQL_OJ_RIGHT = 2; - const SQL_OJ_FULL = 4; - const SQL_OJ_NESTED = 8; - const SQL_OJ_NOT_ORDERED = 16; - const SQL_OJ_INNER = 32; - const SQL_OJ_ALL_COMPARISON_OPS = 64; -} - -static if (ODBCVER >= 0x0300) { - const SQL_AM_CONNECTION=1; - const SQL_AM_NONE=0; - const SQL_AM_STATEMENT=2; - const SQL_API_SQLALLOCHANDLE=1001; - const SQL_API_SQLBINDPARAM=1002; - const SQL_API_SQLCLOSECURSOR=1003; - const SQL_API_SQLCOLATTRIBUTE=6; - const SQL_API_SQLCOPYDESC=1004; - const SQL_API_SQLENDTRAN=1005; - const SQL_API_SQLFETCHSCROLL=1021; - const SQL_API_SQLFREEHANDLE=1006; - const SQL_API_SQLGETCONNECTATTR=1007; - const SQL_API_SQLGETDESCFIELD=1008; - const SQL_API_SQLGETDESCREC=1009; - const SQL_API_SQLGETDIAGFIELD=1010; - const SQL_API_SQLGETDIAGREC=1011; - const SQL_API_SQLGETENVATTR=1012; - const SQL_API_SQLGETSTMTATTR=1014; - const SQL_API_SQLSETCONNECTATTR=1016; - const SQL_API_SQLSETDESCFIELD=1017; - const SQL_API_SQLSETDESCREC=1018; - const SQL_API_SQLSETENVATTR=1019; - const SQL_API_SQLSETSTMTATTR=1020; - const SQL_ARD_TYPE=-99; - const SQL_AT_ADD_CONSTRAINT=8; - const SQL_ATTR_APP_PARAM_DESC=10011; - const SQL_ATTR_APP_ROW_DESC=10010; - const SQL_ATTR_AUTO_IPD=10001; - const SQL_ATTR_CURSOR_SCROLLABLE=-1; - const SQL_ATTR_CURSOR_SENSITIVITY=-2; - const SQL_ATTR_IMP_PARAM_DESC=10013; - const SQL_ATTR_IMP_ROW_DESC=10012; - const SQL_ATTR_METADATA_ID=10014; - const SQL_ATTR_OUTPUT_NTS=10001; - const SQL_CATALOG_NAME=10003; - const SQL_CODE_DATE=1; - const SQL_CODE_TIME=2; - const SQL_CODE_TIMESTAMP=3; - const SQL_COLLATION_SEQ=10004; - const SQL_CURSOR_SENSITIVITY=10001; - const SQL_DATE_LEN=10; - const SQL_DATETIME=9; - const SQL_DEFAULT=99; - - const SQL_DESC_ALLOC_AUTO=1; - const SQL_DESC_ALLOC_USER=2; - const SQL_DESC_ALLOC_TYPE=1099; - const SQL_DESC_COUNT=1001; - const SQL_DESC_TYPE=1002; - const SQL_DESC_LENGTH=1003; - const SQL_DESC_OCTET_LENGTH_PTR=1004; - const SQL_DESC_PRECISION=1005; - const SQL_DESC_SCALE=1006; - const SQL_DESC_DATETIME_INTERVAL_CODE=1007; - const SQL_DESC_NULLABLE=1008; - const SQL_DESC_INDICATOR_PTR=1009; - const SQL_DESC_DATA_PTR=1010; - const SQL_DESC_NAME=1011; - const SQL_DESC_UNNAMED=1012; - const SQL_DESC_OCTET_LENGTH=1013; - - const SQL_DESCRIBE_PARAMETER=10002; - - const SQL_DIAG_ALTER_DOMAIN=3; - const SQL_DIAG_ALTER_TABLE=4; - const SQL_DIAG_CALL=7; - const SQL_DIAG_CLASS_ORIGIN=8; - const SQL_DIAG_CONNECTION_NAME=10; - const SQL_DIAG_CREATE_ASSERTION=6; - const SQL_DIAG_CREATE_CHARACTER_SET=8; - const SQL_DIAG_CREATE_COLLATION=10; - const SQL_DIAG_CREATE_DOMAIN=23; - const SQL_DIAG_CREATE_INDEX=-1; - const SQL_DIAG_CREATE_SCHEMA=64; - const SQL_DIAG_CREATE_TABLE=77; - const SQL_DIAG_CREATE_TRANSLATION=79; - const SQL_DIAG_CREATE_VIEW=84; - const SQL_DIAG_DELETE_WHERE=19; - const SQL_DIAG_DROP_ASSERTION=24; - const SQL_DIAG_DROP_CHARACTER_SET=25; - const SQL_DIAG_DROP_COLLATION=26; - const SQL_DIAG_DROP_DOMAIN=27; - const SQL_DIAG_DROP_INDEX=(-2); - const SQL_DIAG_DROP_SCHEMA=31; - const SQL_DIAG_DROP_TABLE=32; - const SQL_DIAG_DROP_TRANSLATION=33; - const SQL_DIAG_DROP_VIEW=36; - const SQL_DIAG_DYNAMIC_DELETE_CURSOR=38; - const SQL_DIAG_DYNAMIC_FUNCTION=7; - const SQL_DIAG_DYNAMIC_FUNCTION_CODE=12; - const SQL_DIAG_DYNAMIC_UPDATE_CURSOR=81; - const SQL_DIAG_GRANT=48; - const SQL_DIAG_INSERT=50; - const SQL_DIAG_MESSAGE_TEXT=6; - const SQL_DIAG_NATIVE=5; - const SQL_DIAG_NUMBER=2; - const SQL_DIAG_RETURNCODE=1; - const SQL_DIAG_REVOKE=59; - const SQL_DIAG_ROW_COUNT=3; - const SQL_DIAG_SELECT_CURSOR=85; - const SQL_DIAG_SERVER_NAME=11; - const SQL_DIAG_SQLSTATE=4; - const SQL_DIAG_SUBCLASS_ORIGIN=9; - const SQL_DIAG_UNKNOWN_STATEMENT=0; - const SQL_DIAG_UPDATE_WHERE=82; - - const SQL_FALSE=0; - const SQL_HANDLE_DBC=2; - const SQL_HANDLE_DESC=4; - const SQL_HANDLE_ENV=1; - const SQL_HANDLE_STMT=3; - const SQL_INSENSITIVE=1; - const SQL_MAX_CONCURRENT_ACTIVITIES=1; - const SQL_MAX_DRIVER_CONNECTIONS=0; - const SQL_MAX_IDENTIFIER_LEN=10005; - const SQL_MAXIMUM_CONCURRENT_ACTIVITIES=SQL_MAX_CONCURRENT_ACTIVITIES; - const SQL_MAXIMUM_DRIVER_CONNECTIONS=SQL_MAX_DRIVER_CONNECTIONS; - const SQL_MAXIMUM_IDENTIFIER_LENGTH=SQL_MAX_IDENTIFIER_LEN; - const SQL_NAMED=0; - const SQL_NO_DATA=100; - const SQL_NONSCROLLABLE=0; - const SQL_NULL_HANDLE=0L; - const SQL_NULL_HDESC=0; - const SQL_OJ_CAPABILITIES=115; - const SQL_OUTER_JOIN_CAPABILITIES=SQL_OJ_CAPABILITIES; - const SQL_PC_NON_PSEUDO=1; - - const SQL_PRED_NONE=0; - const SQL_PRED_CHAR=1; - const SQL_PRED_BASIC=2; - - const SQL_ROW_IDENTIFIER=1; - const SQL_SCROLLABLE=1; - const SQL_SENSITIVE=2; - const SQL_TIME_LEN=8; - const SQL_TIMESTAMP_LEN=19; - const SQL_TRUE=1; - const SQL_TYPE_DATE=91; - const SQL_TYPE_TIME=92; - const SQL_TYPE_TIMESTAMP=93; - const SQL_UNNAMED=1; - const SQL_UNSPECIFIED=0; - const SQL_XOPEN_CLI_YEAR=10000; -}//#endif /* ODBCVER >= 0x0300 */ - -extern (Windows) { - deprecated { - SQLRETURN SQLAllocConnect(SQLHENV, SQLHDBC*); - SQLRETURN SQLAllocEnv(SQLHENV*); - SQLRETURN SQLAllocStmt(SQLHDBC, SQLHSTMT*); - SQLRETURN SQLError(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLFreeConnect(SQLHDBC); - SQLRETURN SQLFreeEnv(SQLHENV); - SQLRETURN SQLSetParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); - SQLRETURN SQLGetConnectOption(SQLHDBC, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLGetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLSetConnectOption(SQLHDBC, SQLUSMALLINT, SQLULEN); - SQLRETURN SQLSetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLROWCOUNT); - } - SQLRETURN SQLBindCol(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); - SQLRETURN SQLCancel(SQLHSTMT); - SQLRETURN SQLConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLDescribeCol(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLDisconnect(SQLHDBC); - SQLRETURN SQLExecDirect(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLExecute(SQLHSTMT); - SQLRETURN SQLFetch(SQLHSTMT); - SQLRETURN SQLFreeStmt(SQLHSTMT, SQLUSMALLINT); - SQLRETURN SQLGetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLNumResultCols(SQLHSTMT, SQLSMALLINT*); - SQLRETURN SQLPrepare(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLRowCount(SQLHSTMT, SQLLEN*); - SQLRETURN SQLSetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLTransact(SQLHENV, SQLHDBC, SQLUSMALLINT); - SQLRETURN SQLColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLGetData(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); - SQLRETURN SQLGetFunctions(SQLHDBC, SQLUSMALLINT, SQLUSMALLINT*); - SQLRETURN SQLGetInfo(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetTypeInfo(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLParamData(SQLHSTMT, SQLPOINTER*); - SQLRETURN SQLPutData(SQLHSTMT, SQLPOINTER, SQLLEN); - SQLRETURN SQLSpecialColumns(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLStatistics(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLTables(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLDataSources(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - - static if (ODBCVER >= 0x0300) { - SQLRETURN SQLAllocHandle(SQLSMALLINT, SQLHANDLE, SQLHANDLE*); - SQLRETURN SQLBindParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); - SQLRETURN SQLCloseCursor(SQLHSTMT); - SQLRETURN SQLColAttribute(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); - SQLRETURN SQLCopyDesc(SQLHDESC, SQLHDESC); - SQLRETURN SQLEndTran(SQLSMALLINT, SQLHANDLE, SQLSMALLINT); - SQLRETURN SQLFetchScroll(SQLHSTMT, SQLSMALLINT, SQLROWOFFSET); - SQLRETURN SQLFreeHandle(SQLSMALLINT, SQLHANDLE); - SQLRETURN SQLGetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetDescRec(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, - SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLGetDiagField(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagRec(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLSetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetDescRec(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLLEN, SQLSMALLINT, - SQLSMALLINT, SQLPOINTER, SQLLEN*, SQLLEN*); - SQLRETURN SQLSetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); - }/* (ODBCVER >= 0x0300) */ -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_sql.d) + */ +module core.sys.windows.sql; + +public import core.sys.windows.sqltypes; +private import core.sys.windows.windef; + +const ODBCVER = 0x0351; + +const SQL_ACCESSIBLE_PROCEDURES=20; +const SQL_ACCESSIBLE_TABLES=19; +const SQL_ALL_TYPES=0; +const SQL_ALTER_TABLE=86; +const SQL_API_SQLALLOCCONNECT=1; +const SQL_API_SQLALLOCENV=2; +const SQL_API_SQLALLOCSTMT=3; +const SQL_API_SQLBINDCOL=4; +const SQL_API_SQLCANCEL=5; +const SQL_API_SQLCOLUMNS=40; +const SQL_API_SQLCONNECT=7; +const SQL_API_SQLDATASOURCES=57; +const SQL_API_SQLDESCRIBECOL=8; +const SQL_API_SQLDISCONNECT=9; +const SQL_API_SQLERROR=10; +const SQL_API_SQLEXECDIRECT=11; +const SQL_API_SQLEXECUTE=12; +const SQL_API_SQLFETCH=13; +const SQL_API_SQLFREECONNECT=14; +const SQL_API_SQLFREEENV=15; +const SQL_API_SQLFREESTMT=16; +const SQL_API_SQLGETCONNECTOPTION=42; +const SQL_API_SQLGETCURSORNAME=17; +const SQL_API_SQLGETDATA=43; +const SQL_API_SQLGETFUNCTIONS=44; +const SQL_API_SQLGETINFO=45; +const SQL_API_SQLGETSTMTOPTION=46; +const SQL_API_SQLGETTYPEINFO=47; +const SQL_API_SQLNUMRESULTCOLS=18; +const SQL_API_SQLPARAMDATA=48; +const SQL_API_SQLPREPARE=19; +const SQL_API_SQLPUTDATA=49; +const SQL_API_SQLROWCOUNT=20; +const SQL_API_SQLSETCONNECTOPTION=50; +const SQL_API_SQLSETCURSORNAME=21; +const SQL_API_SQLSETPARAM=22; +const SQL_API_SQLSETSTMTOPTION=51; +const SQL_API_SQLSPECIALCOLUMNS=52; +const SQL_API_SQLSTATISTICS=53; +const SQL_API_SQLTABLES=54; +const SQL_API_SQLTRANSACT=23; + +const SQL_CB_DELETE=0; +const SQL_CB_CLOSE=1; +const SQL_CB_PRESERVE=2; + +const SQL_CHAR=1; +const SQL_CLOSE=0; +const SQL_COMMIT=0; +const SQL_CURSOR_COMMIT_BEHAVIOR=23; +const SQL_DATA_AT_EXEC=-2; +const SQL_DATA_SOURCE_NAME=2; +const SQL_DATA_SOURCE_READ_ONLY=25; +const SQL_DBMS_NAME=17; +const SQL_DBMS_VER=18; +const SQL_DECIMAL=3; +const SQL_DEFAULT_TXN_ISOLATION=26; +const SQL_DOUBLE=8; +const SQL_DROP=1; +const SQL_ERROR=-1; + +const SQL_FD_FETCH_NEXT=1; +const SQL_FD_FETCH_FIRST=2; +const SQL_FD_FETCH_LAST=4; +const SQL_FD_FETCH_PRIOR=8; +const SQL_FD_FETCH_ABSOLUTE=16; +const SQL_FD_FETCH_RELATIVE=32; + +const SQL_FETCH_ABSOLUTE=5; +const SQL_FETCH_DIRECTION=8; +const SQL_FETCH_FIRST=2; +const SQL_FETCH_LAST=3; +const SQL_FETCH_NEXT=1; +const SQL_FETCH_PRIOR=4; +const SQL_FETCH_RELATIVE=6; +const SQL_FLOAT=6; +const SQL_GD_ANY_COLUMN=1; +const SQL_GD_ANY_ORDER=2; +const SQL_GETDATA_EXTENSIONS=81; +const SQL_IC_LOWER=2; +const SQL_IC_MIXED=4; +const SQL_IC_SENSITIVE=3; +const SQL_IC_UPPER=1; +const SQL_IDENTIFIER_CASE=28; +const SQL_IDENTIFIER_QUOTE_CHAR=29; + +const SQL_INDEX_ALL=1; +const SQL_INDEX_CLUSTERED=1; +const SQL_INDEX_HASHED=2; +const SQL_INDEX_OTHER=3; +const SQL_INDEX_UNIQUE=0; + +const SQL_INTEGER=4; +const SQL_INTEGRITY=73; +const SQL_INVALID_HANDLE=-2; + +const SQL_MAX_CATALOG_NAME_LEN=34; +const SQL_MAX_COLUMN_NAME_LEN=30; +const SQL_MAX_COLUMNS_IN_GROUP_BY=97; +const SQL_MAX_COLUMNS_IN_INDEX=98; +const SQL_MAX_COLUMNS_IN_ORDER_BY=99; +const SQL_MAX_COLUMNS_IN_SELECT=100; +const SQL_MAX_COLUMNS_IN_TABLE=101; +const SQL_MAX_CURSOR_NAME_LEN=31; +const SQL_MAX_INDEX_SIZE=102; +const SQL_MAX_MESSAGE_LENGTH=512; +const SQL_MAX_ROW_SIZE=104; +const SQL_MAX_SCHEMA_NAME_LEN=32; +const SQL_MAX_STATEMENT_LEN=105; +const SQL_MAX_TABLE_NAME_LEN=35; +const SQL_MAX_TABLES_IN_SELECT=106; +const SQL_MAX_USER_NAME_LEN=107; + +const SQL_MAXIMUM_CATALOG_NAME_LENGTH=SQL_MAX_CATALOG_NAME_LEN; +const SQL_MAXIMUM_COLUMN_NAME_LENGTH=SQL_MAX_COLUMN_NAME_LEN; +const SQL_MAXIMUM_COLUMNS_IN_GROUP_BY=SQL_MAX_COLUMNS_IN_GROUP_BY; +const SQL_MAXIMUM_COLUMNS_IN_INDEX=SQL_MAX_COLUMNS_IN_INDEX; +const SQL_MAXIMUM_COLUMNS_IN_ORDER_BY=SQL_MAX_COLUMNS_IN_ORDER_BY; +const SQL_MAXIMUM_COLUMNS_IN_SELECT=SQL_MAX_COLUMNS_IN_SELECT; +const SQL_MAXIMUM_CURSOR_NAME_LENGTH=SQL_MAX_CURSOR_NAME_LEN; +const SQL_MAXIMUM_INDEX_SIZE=SQL_MAX_INDEX_SIZE; +const SQL_MAXIMUM_ROW_SIZE=SQL_MAX_ROW_SIZE; +const SQL_MAXIMUM_SCHEMA_NAME_LENGTH=SQL_MAX_SCHEMA_NAME_LEN; +const SQL_MAXIMUM_STATEMENT_LENGTH=SQL_MAX_STATEMENT_LEN; +const SQL_MAXIMUM_TABLES_IN_SELECT=SQL_MAX_TABLES_IN_SELECT; +const SQL_MAXIMUM_USER_NAME_LENGTH=SQL_MAX_USER_NAME_LEN; + +const SQL_NC_HIGH=0; +const SQL_NC_LOW=1; +const SQL_NEED_DATA=99; +const SQL_NO_NULLS=0; +const SQL_NTS=-3; +const LONG SQL_NTSL=-3; +const SQL_NULL_COLLATION=85; +const SQL_NULL_DATA=-1; +const SQL_NULL_HDBC=0; +const SQL_NULL_HENV=0; +const SQL_NULL_HSTMT=0; +const SQL_NULLABLE=1; +const SQL_NULLABLE_UNKNOWN=2; +const SQL_NUMERIC=2; +const SQL_ORDER_BY_COLUMNS_IN_SELECT=90; +const SQL_PC_PSEUDO=2; +const SQL_PC_UNKNOWN=0; +const SQL_REAL=7; +const SQL_RESET_PARAMS=3; +const SQL_ROLLBACK=1; +const SQL_SCCO_LOCK=2; +const SQL_SCCO_OPT_ROWVER=4; +const SQL_SCCO_OPT_VALUES=8; +const SQL_SCCO_READ_ONLY=1; +const SQL_SCOPE_CURROW=0; +const SQL_SCOPE_SESSION=2; +const SQL_SCOPE_TRANSACTION=1; +const SQL_SCROLL_CONCURRENCY=43; +const SQL_SEARCH_PATTERN_ESCAPE=14; +const SQL_SERVER_NAME=13; +const SQL_SMALLINT=5; +const SQL_SPECIAL_CHARACTERS=94; +const SQL_STILL_EXECUTING=2; +//MACRO #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) + +const SQL_SUCCESS=0; +const SQL_SUCCESS_WITH_INFO=1; + +const SQL_TC_ALL=2; +const SQL_TC_DDL_COMMIT=3; +const SQL_TC_DDL_IGNORE=4; +const SQL_TC_DML=1; +const SQL_TC_NONE=0; + + +const SQL_TXN_CAPABLE=46; +const SQL_TXN_ISOLATION_OPTION=72; +const SQL_TXN_READ_COMMITTED=2; +const SQL_TXN_READ_UNCOMMITTED=1; +const SQL_TXN_REPEATABLE_READ=4; +const SQL_TXN_SERIALIZABLE=8; + +const SQL_TRANSACTION_CAPABLE=SQL_TXN_CAPABLE; +const SQL_TRANSACTION_ISOLATION_OPTION=SQL_TXN_ISOLATION_OPTION; +const SQL_TRANSACTION_READ_COMMITTED=SQL_TXN_READ_COMMITTED; +const SQL_TRANSACTION_READ_UNCOMMITTED=SQL_TXN_READ_UNCOMMITTED; +const SQL_TRANSACTION_REPEATABLE_READ=SQL_TXN_REPEATABLE_READ; +const SQL_TRANSACTION_SERIALIZABLE=SQL_TXN_SERIALIZABLE; + +const SQL_UNBIND=2; +const SQL_UNKNOWN_TYPE=0; +const SQL_USER_NAME=47; +const SQL_VARCHAR=12; + +static if (ODBCVER >= 0x0200) { + const SQL_AT_ADD_COLUMN = 1; + const SQL_AT_DROP_COLUMN = 2; +} + +static if (ODBCVER >= 0x0201) { + const SQL_OJ_LEFT = 1; + const SQL_OJ_RIGHT = 2; + const SQL_OJ_FULL = 4; + const SQL_OJ_NESTED = 8; + const SQL_OJ_NOT_ORDERED = 16; + const SQL_OJ_INNER = 32; + const SQL_OJ_ALL_COMPARISON_OPS = 64; +} + +static if (ODBCVER >= 0x0300) { + const SQL_AM_CONNECTION=1; + const SQL_AM_NONE=0; + const SQL_AM_STATEMENT=2; + const SQL_API_SQLALLOCHANDLE=1001; + const SQL_API_SQLBINDPARAM=1002; + const SQL_API_SQLCLOSECURSOR=1003; + const SQL_API_SQLCOLATTRIBUTE=6; + const SQL_API_SQLCOPYDESC=1004; + const SQL_API_SQLENDTRAN=1005; + const SQL_API_SQLFETCHSCROLL=1021; + const SQL_API_SQLFREEHANDLE=1006; + const SQL_API_SQLGETCONNECTATTR=1007; + const SQL_API_SQLGETDESCFIELD=1008; + const SQL_API_SQLGETDESCREC=1009; + const SQL_API_SQLGETDIAGFIELD=1010; + const SQL_API_SQLGETDIAGREC=1011; + const SQL_API_SQLGETENVATTR=1012; + const SQL_API_SQLGETSTMTATTR=1014; + const SQL_API_SQLSETCONNECTATTR=1016; + const SQL_API_SQLSETDESCFIELD=1017; + const SQL_API_SQLSETDESCREC=1018; + const SQL_API_SQLSETENVATTR=1019; + const SQL_API_SQLSETSTMTATTR=1020; + const SQL_ARD_TYPE=-99; + const SQL_AT_ADD_CONSTRAINT=8; + const SQL_ATTR_APP_PARAM_DESC=10011; + const SQL_ATTR_APP_ROW_DESC=10010; + const SQL_ATTR_AUTO_IPD=10001; + const SQL_ATTR_CURSOR_SCROLLABLE=-1; + const SQL_ATTR_CURSOR_SENSITIVITY=-2; + const SQL_ATTR_IMP_PARAM_DESC=10013; + const SQL_ATTR_IMP_ROW_DESC=10012; + const SQL_ATTR_METADATA_ID=10014; + const SQL_ATTR_OUTPUT_NTS=10001; + const SQL_CATALOG_NAME=10003; + const SQL_CODE_DATE=1; + const SQL_CODE_TIME=2; + const SQL_CODE_TIMESTAMP=3; + const SQL_COLLATION_SEQ=10004; + const SQL_CURSOR_SENSITIVITY=10001; + const SQL_DATE_LEN=10; + const SQL_DATETIME=9; + const SQL_DEFAULT=99; + + const SQL_DESC_ALLOC_AUTO=1; + const SQL_DESC_ALLOC_USER=2; + const SQL_DESC_ALLOC_TYPE=1099; + const SQL_DESC_COUNT=1001; + const SQL_DESC_TYPE=1002; + const SQL_DESC_LENGTH=1003; + const SQL_DESC_OCTET_LENGTH_PTR=1004; + const SQL_DESC_PRECISION=1005; + const SQL_DESC_SCALE=1006; + const SQL_DESC_DATETIME_INTERVAL_CODE=1007; + const SQL_DESC_NULLABLE=1008; + const SQL_DESC_INDICATOR_PTR=1009; + const SQL_DESC_DATA_PTR=1010; + const SQL_DESC_NAME=1011; + const SQL_DESC_UNNAMED=1012; + const SQL_DESC_OCTET_LENGTH=1013; + + const SQL_DESCRIBE_PARAMETER=10002; + + const SQL_DIAG_ALTER_DOMAIN=3; + const SQL_DIAG_ALTER_TABLE=4; + const SQL_DIAG_CALL=7; + const SQL_DIAG_CLASS_ORIGIN=8; + const SQL_DIAG_CONNECTION_NAME=10; + const SQL_DIAG_CREATE_ASSERTION=6; + const SQL_DIAG_CREATE_CHARACTER_SET=8; + const SQL_DIAG_CREATE_COLLATION=10; + const SQL_DIAG_CREATE_DOMAIN=23; + const SQL_DIAG_CREATE_INDEX=-1; + const SQL_DIAG_CREATE_SCHEMA=64; + const SQL_DIAG_CREATE_TABLE=77; + const SQL_DIAG_CREATE_TRANSLATION=79; + const SQL_DIAG_CREATE_VIEW=84; + const SQL_DIAG_DELETE_WHERE=19; + const SQL_DIAG_DROP_ASSERTION=24; + const SQL_DIAG_DROP_CHARACTER_SET=25; + const SQL_DIAG_DROP_COLLATION=26; + const SQL_DIAG_DROP_DOMAIN=27; + const SQL_DIAG_DROP_INDEX=(-2); + const SQL_DIAG_DROP_SCHEMA=31; + const SQL_DIAG_DROP_TABLE=32; + const SQL_DIAG_DROP_TRANSLATION=33; + const SQL_DIAG_DROP_VIEW=36; + const SQL_DIAG_DYNAMIC_DELETE_CURSOR=38; + const SQL_DIAG_DYNAMIC_FUNCTION=7; + const SQL_DIAG_DYNAMIC_FUNCTION_CODE=12; + const SQL_DIAG_DYNAMIC_UPDATE_CURSOR=81; + const SQL_DIAG_GRANT=48; + const SQL_DIAG_INSERT=50; + const SQL_DIAG_MESSAGE_TEXT=6; + const SQL_DIAG_NATIVE=5; + const SQL_DIAG_NUMBER=2; + const SQL_DIAG_RETURNCODE=1; + const SQL_DIAG_REVOKE=59; + const SQL_DIAG_ROW_COUNT=3; + const SQL_DIAG_SELECT_CURSOR=85; + const SQL_DIAG_SERVER_NAME=11; + const SQL_DIAG_SQLSTATE=4; + const SQL_DIAG_SUBCLASS_ORIGIN=9; + const SQL_DIAG_UNKNOWN_STATEMENT=0; + const SQL_DIAG_UPDATE_WHERE=82; + + const SQL_FALSE=0; + const SQL_HANDLE_DBC=2; + const SQL_HANDLE_DESC=4; + const SQL_HANDLE_ENV=1; + const SQL_HANDLE_STMT=3; + const SQL_INSENSITIVE=1; + const SQL_MAX_CONCURRENT_ACTIVITIES=1; + const SQL_MAX_DRIVER_CONNECTIONS=0; + const SQL_MAX_IDENTIFIER_LEN=10005; + const SQL_MAXIMUM_CONCURRENT_ACTIVITIES=SQL_MAX_CONCURRENT_ACTIVITIES; + const SQL_MAXIMUM_DRIVER_CONNECTIONS=SQL_MAX_DRIVER_CONNECTIONS; + const SQL_MAXIMUM_IDENTIFIER_LENGTH=SQL_MAX_IDENTIFIER_LEN; + const SQL_NAMED=0; + const SQL_NO_DATA=100; + const SQL_NONSCROLLABLE=0; + const SQL_NULL_HANDLE=0L; + const SQL_NULL_HDESC=0; + const SQL_OJ_CAPABILITIES=115; + const SQL_OUTER_JOIN_CAPABILITIES=SQL_OJ_CAPABILITIES; + const SQL_PC_NON_PSEUDO=1; + + const SQL_PRED_NONE=0; + const SQL_PRED_CHAR=1; + const SQL_PRED_BASIC=2; + + const SQL_ROW_IDENTIFIER=1; + const SQL_SCROLLABLE=1; + const SQL_SENSITIVE=2; + const SQL_TIME_LEN=8; + const SQL_TIMESTAMP_LEN=19; + const SQL_TRUE=1; + const SQL_TYPE_DATE=91; + const SQL_TYPE_TIME=92; + const SQL_TYPE_TIMESTAMP=93; + const SQL_UNNAMED=1; + const SQL_UNSPECIFIED=0; + const SQL_XOPEN_CLI_YEAR=10000; +}//#endif /* ODBCVER >= 0x0300 */ + +extern (Windows) { + deprecated { + SQLRETURN SQLAllocConnect(SQLHENV, SQLHDBC*); + SQLRETURN SQLAllocEnv(SQLHENV*); + SQLRETURN SQLAllocStmt(SQLHDBC, SQLHSTMT*); + SQLRETURN SQLError(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLFreeConnect(SQLHDBC); + SQLRETURN SQLFreeEnv(SQLHENV); + SQLRETURN SQLSetParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); + SQLRETURN SQLGetConnectOption(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLSetConnectOption(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLROWCOUNT); + } + SQLRETURN SQLBindCol(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLCancel(SQLHSTMT); + SQLRETURN SQLConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDescribeCol(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDisconnect(SQLHDBC); + SQLRETURN SQLExecDirect(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLExecute(SQLHSTMT); + SQLRETURN SQLFetch(SQLHSTMT); + SQLRETURN SQLFreeStmt(SQLHSTMT, SQLUSMALLINT); + SQLRETURN SQLGetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLNumResultCols(SQLHSTMT, SQLSMALLINT*); + SQLRETURN SQLPrepare(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLRowCount(SQLHSTMT, SQLLEN*); + SQLRETURN SQLSetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTransact(SQLHENV, SQLHDBC, SQLUSMALLINT); + SQLRETURN SQLColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLGetData(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLGetFunctions(SQLHDBC, SQLUSMALLINT, SQLUSMALLINT*); + SQLRETURN SQLGetInfo(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetTypeInfo(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLParamData(SQLHSTMT, SQLPOINTER*); + SQLRETURN SQLPutData(SQLHSTMT, SQLPOINTER, SQLLEN); + SQLRETURN SQLSpecialColumns(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatistics(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTables(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDataSources(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + + static if (ODBCVER >= 0x0300) { + SQLRETURN SQLAllocHandle(SQLSMALLINT, SQLHANDLE, SQLHANDLE*); + SQLRETURN SQLBindParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); + SQLRETURN SQLCloseCursor(SQLHSTMT); + SQLRETURN SQLColAttribute(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLCopyDesc(SQLHDESC, SQLHDESC); + SQLRETURN SQLEndTran(SQLSMALLINT, SQLHANDLE, SQLSMALLINT); + SQLRETURN SQLFetchScroll(SQLHSTMT, SQLSMALLINT, SQLROWOFFSET); + SQLRETURN SQLFreeHandle(SQLSMALLINT, SQLHANDLE); + SQLRETURN SQLGetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescRec(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, + SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDiagField(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRec(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescRec(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLLEN, SQLSMALLINT, + SQLSMALLINT, SQLPOINTER, SQLLEN*, SQLLEN*); + SQLRETURN SQLSetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + }/* (ODBCVER >= 0x0300) */ +} diff --git a/src/core/sys/windows/sqlext.d b/src/core/sys/windows/sqlext.d index 0c498d1bb4..d73eac000c 100644 --- a/src/core/sys/windows/sqlext.d +++ b/src/core/sys/windows/sqlext.d @@ -1,1294 +1,1294 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_sqlext.d) - */ -module core.sys.windows.sqlext; - -/* Conversion notes: - The MinGW file was a horrible mess. All of the #defines were sorted alphabetically, - which is crazy. This file needs a lot of work. - In MinGW, sqlext #includes sqlucode, but sqlucode #includes sqlext, - creating a circular dependency! -*/ - -public import core.sys.windows.sql; -private import core.sys.windows.windef; - -const SQL_SPEC_MAJOR = 3; -const SQL_SPEC_MINOR = 51; -const char[] SQL_SPEC_STRING = "03.51"; -const SQL_ACCESS_MODE = 101; -const SQL_ACTIVE_CONNECTIONS = 0; -const SQL_ACTIVE_STATEMENTS = 1; - -const SQL_DATE = 9; -const SQL_TIME = 10; -const SQL_SIGNED_OFFSET = -20; -const SQL_TINYINT = -6; -const SQL_TIMESTAMP = 11; -const SQL_UNSIGNED_OFFSET = -22; - -const SQL_ADD = 4; -const SQL_ALL_EXCEPT_LIKE = 2; - -const SQL_API_ALL_FUNCTIONS = 0; -const SQL_API_SQLCOLATTRIBUTES = 6; -const SQL_API_SQLDRIVERCONNECT = 41; -const SQL_API_SQLBROWSECONNECT = 55; -const SQL_API_SQLCOLUMNPRIVILEGES = 56; -const SQL_API_SQLDESCRIBEPARAM = 58; -const SQL_API_SQLEXTENDEDFETCH = 59; -const SQL_API_SQLFOREIGNKEYS = 60; -const SQL_API_SQLMORERESULTS = 61; -const SQL_API_SQLNATIVESQL = 62; -const SQL_API_SQLNUMPARAMS = 63; -const SQL_API_SQLPARAMOPTIONS = 64; -const SQL_API_SQLPRIMARYKEYS = 65; -const SQL_API_SQLPROCEDURECOLUMNS = 66; -const SQL_API_SQLPROCEDURES = 67; -const SQL_API_SQLSETPOS = 68; -const SQL_API_SQLSETSCROLLOPTIONS = 69; -const SQL_API_SQLTABLEPRIVILEGES = 70; -const SQL_API_SQLDRIVERS = 71; -const SQL_API_SQLBINDPARAMETER = 72; -const SQL_API_LOADBYORDINAL = 199; - -const SQL_ASYNC_ENABLE = 4; -const SQL_ASYNC_ENABLE_OFF = 0UL; -const SQL_ASYNC_ENABLE_ON = 1UL; -const SQL_ASYNC_ENABLE_DEFAULT = SQL_ASYNC_ENABLE_OFF; - -const SQL_ATTR_CONNECTION_DEAD = 1209; -const SQL_ATTR_READONLY = 0; -const SQL_ATTR_READWRITE_UNKNOWN = 2; -const SQL_ATTR_WRITE = 1; - -const SQL_AUTOCOMMIT = 102; -const SQL_AUTOCOMMIT_OFF = 0UL; -const SQL_AUTOCOMMIT_ON = 1UL; -const SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON; -const SQL_BEST_ROWID = 1; -const SQL_BIGINT = -5; -const SQL_BINARY = -2; -const SQL_BIND_BY_COLUMN = 0UL; -const SQL_BIND_TYPE = 5; -const SQL_BIND_TYPE_DEFAULT = SQL_BIND_BY_COLUMN; -const SQL_BIT = -7; - -const SQL_BOOKMARK_PERSISTENCE = 82; - -// for BOOKMARK_PERSISTENCE -const SQL_BP_CLOSE = 1; -const SQL_BP_DELETE = 2; -const SQL_BP_DROP = 4; -const SQL_BP_TRANSACTION = 8; -const SQL_BP_UPDATE = 16; -const SQL_BP_OTHER_HSTMT = 32; -const SQL_BP_SCROLL = 64; - -const SQL_C_BINARY = SQL_BINARY; -const SQL_C_BIT = SQL_BIT; -const SQL_C_CHAR = SQL_CHAR; -const SQL_C_DATE = SQL_DATE; -const SQL_C_DOUBLE = SQL_DOUBLE; -const SQL_C_FLOAT = SQL_REAL; -const SQL_C_LONG = SQL_INTEGER; -const SQL_C_SHORT = SQL_SMALLINT; -const SQL_C_SLONG = SQL_C_LONG+SQL_SIGNED_OFFSET; -const SQL_C_SSHORT = SQL_C_SHORT+SQL_SIGNED_OFFSET; -const SQL_C_STINYINT = SQL_TINYINT+SQL_SIGNED_OFFSET; -const SQL_C_TIME = SQL_TIME; -const SQL_C_TIMESTAMP = SQL_TIMESTAMP; -const SQL_C_TINYINT = SQL_TINYINT; -const SQL_C_ULONG = SQL_C_LONG+SQL_UNSIGNED_OFFSET; -const SQL_C_USHORT = SQL_C_SHORT+SQL_UNSIGNED_OFFSET; -const SQL_C_UTINYINT = SQL_TINYINT+SQL_UNSIGNED_OFFSET; -const SQL_C_BOOKMARK = SQL_C_ULONG; -const SQL_C_DEFAULT = 99; - -const SQL_CASCADE = 0; -const SQL_CB_NON_NULL = 1; -const SQL_CB_NULL = 0; -deprecated { -const SQL_CC_CLOSE = SQL_CB_CLOSE;/* deprecated */ -const SQL_CC_DELETE = SQL_CB_DELETE;/* deprecated */ -const SQL_CC_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ -} -const SQL_CD_FALSE = 0L; -const SQL_CD_TRUE = 1L; - -const SQL_CN_ANY = 2; -const SQL_CN_DIFFERENT = 1; -const SQL_CN_NONE = 0; - -const SQL_COLUMN_ALIAS = 87; - -const SQL_COLUMN_COUNT = 0; -const SQL_COLUMN_NAME = 1; -const SQL_COLUMN_DISPLAY_SIZE = 6; -const SQL_COLUMN_LABEL = 18; -const SQL_COLUMN_LENGTH = 3; -const SQL_COLUMN_MONEY = 9; -const SQL_COLUMN_NULLABLE = 7; -const SQL_COLUMN_OWNER_NAME = 16; -const SQL_COLUMN_PRECISION = 4; -const SQL_COLUMN_QUALIFIER_NAME = 17; -const SQL_COLUMN_SCALE = 5; -const SQL_COLUMN_UNSIGNED = 8; -const SQL_COLUMN_UPDATABLE = 10; -const SQL_COLUMN_AUTO_INCREMENT = 11; -const SQL_COLUMN_CASE_SENSITIVE = 12; -const SQL_COLUMN_SEARCHABLE = 13; -const SQL_COLUMN_TYPE = 2; -const SQL_COLUMN_TYPE_NAME = 14; -const SQL_COLUMN_TABLE_NAME = 15; - -const SQL_CONCAT_NULL_BEHAVIOR = 22; - -const SQL_CONCUR_READ_ONLY = 1; -const SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; -const SQL_CONCUR_LOCK = 2; -const SQL_CONCUR_ROWVER = 3; -const SQL_CONCUR_TIMESTAMP = SQL_CONCUR_ROWVER;/* deprecated */ -const SQL_CONCUR_VALUES = 4; - -const SQL_CONCURRENCY = 7; -const SQL_CONVERT_BIGINT = 53; -const SQL_CONVERT_BINARY = 54; -const SQL_CONVERT_BIT = 55; -const SQL_CONVERT_CHAR = 56; -const SQL_CONVERT_DATE = 57; -const SQL_CONVERT_DECIMAL = 58; -const SQL_CONVERT_DOUBLE = 59; -const SQL_CONVERT_FLOAT = 60; -const SQL_CONVERT_FUNCTIONS = 48; -const SQL_CONVERT_INTEGER = 61; -const SQL_CONVERT_LONGVARBINARY = 71; -const SQL_CONVERT_LONGVARCHAR = 62; -const SQL_CONVERT_NUMERIC = 63; -const SQL_CONVERT_REAL = 64; -const SQL_CONVERT_SMALLINT = 65; -const SQL_CONVERT_TIME = 66; -const SQL_CONVERT_TIMESTAMP = 67; -const SQL_CONVERT_TINYINT = 68; -const SQL_CONVERT_VARBINARY = 69; -const SQL_CONVERT_VARCHAR = 70; -const SQL_CORRELATION_NAME = 74; -const SQL_CR_CLOSE = SQL_CB_CLOSE;/* deprecated */ -const SQL_CR_DELETE = SQL_CB_DELETE;/* deprecated */ -const SQL_CR_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ - -enum : ULONG { - SQL_CUR_USE_IF_NEEDED = 0, - SQL_CUR_USE_ODBC, - SQL_CUR_USE_DRIVER, - SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER -} - -const SQL_CURRENT_QUALIFIER = 109; -const SQL_CURSOR_DYNAMIC = 2UL; -const SQL_CURSOR_FORWARD_ONLY = 0UL; -const SQL_CURSOR_KEYSET_DRIVEN = 1UL; -const SQL_CURSOR_ROLLBACK_BEHAVIOR = 24; -const SQL_CURSOR_STATIC = 3UL; -const SQL_CURSOR_TYPE = 6; -const SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY; - -const SQL_CV_CASCADED = 0x00000004L; -const SQL_CV_CHECK_OPTION = 0x00000002L; -const SQL_CV_CREATE_VIEW = 0x00000001L; -const SQL_CV_LOCAL = 0x00000008L; -const SQL_CVT_BIGINT = 0x00004000L; -const SQL_CVT_BINARY = 0x00000400L; -const SQL_CVT_BIT = 0x00001000L; -const SQL_CVT_CHAR = 0x00000001L; -const SQL_CVT_DATE = 0x00008000L; -const SQL_CVT_DECIMAL = 0x00000004L; -const SQL_CVT_DOUBLE = 0x00000080L; -const SQL_CVT_FLOAT = 0x00000020L; -const SQL_CVT_INTEGER = 0x00000008L; -const SQL_CVT_LONGVARBINARY = 0x00040000L; -const SQL_CVT_LONGVARCHAR = 0x00000200L; -const SQL_CVT_NUMERIC = 0x00000002L; -const SQL_CVT_REAL = 0x00000040L; -const SQL_CVT_SMALLINT = 0x00000010L; -const SQL_CVT_TIME = 0x00010000L; -const SQL_CVT_TIMESTAMP = 0x00020000L; -const SQL_CVT_TINYINT = 0x00002000L; -const SQL_CVT_VARBINARY = 0x00000800L; -const SQL_CVT_VARCHAR = 0x00000100L; -const SQL_DATABASE_NAME = 16;/* deprecated */ - -const SQL_DEFAULT_PARAM = -5; -const SQL_DELETE = 3; - -const SQL_DRIVER_COMPLETE = 1; -const SQL_DRIVER_COMPLETE_REQUIRED = 3; -const SQL_DRIVER_HDBC = 3; -const SQL_DRIVER_HENV = 4; -const SQL_DRIVER_HLIB = 76; -const SQL_DRIVER_HSTMT = 5; -const SQL_DRIVER_NAME = 6; -const SQL_DRIVER_NOPROMPT = 0; -const SQL_DRIVER_ODBC_VER = 77; -const SQL_DRIVER_PROMPT = 2; -const SQL_DRIVER_VER = 7; - -const SQL_DTC_ENLIST_EXPENSIVE = 1; -const SQL_DTC_UNENLIST_EXPENSIVE = 2; -const SQL_DTC_TRANSITION_COST = 1750; -const SQL_ENSURE = 1; -const SQL_ENTIRE_ROWSET = 0; -const SQL_EXPRESSIONS_IN_ORDERBY = 27; -const SQL_FD_FETCH_BOOKMARK = 128; -const SQL_FD_FETCH_PREV = SQL_FD_FETCH_PRIOR;/* deprecated */ -const SQL_FD_FETCH_RESUME = 64; -const SQL_FETCH_BOOKMARK = 8; -const SQL_FETCH_PREV = SQL_FETCH_PRIOR;/* deprecated */ -const SQL_FETCH_RESUME = 7;/* deprecated */ - -const SQL_FILE_NOT_SUPPORTED = 0x0000; -const SQL_FILE_TABLE = 0x0001; -const SQL_FILE_QUALIFIER = 0x0002; -const SQL_FILE_CATALOG = SQL_FILE_QUALIFIER; -const SQL_FILE_USAGE = 84; - -const SQL_FN_CVT_CONVERT = 0x00000001L; -const SQL_FN_NUM_ABS = 0x00000001L; -const SQL_FN_NUM_ACOS = 0x00000002L; -const SQL_FN_NUM_ASIN = 0x00000004L; -const SQL_FN_NUM_ATAN = 0x00000008L; -const SQL_FN_NUM_ATAN2 = 0x00000010L; -const SQL_FN_NUM_CEILING = 0x00000020L; -const SQL_FN_NUM_COS = 0x00000040L; -const SQL_FN_NUM_COT = 0x00000080L; -const SQL_FN_NUM_DEGREES = 0x00040000L; -const SQL_FN_NUM_EXP = 0x00000100L; -const SQL_FN_NUM_FLOOR = 0x00000200L; -const SQL_FN_NUM_LOG = 0x00000400L; -const SQL_FN_NUM_LOG10 = 0x00080000L; -const SQL_FN_NUM_MOD = 0x00000800L; -const SQL_FN_NUM_PI = 0x00010000L; -const SQL_FN_NUM_POWER = 0x00100000L; -const SQL_FN_NUM_RADIANS = 0x00200000L; -const SQL_FN_NUM_RAND = 0x00020000L; -const SQL_FN_NUM_ROUND = 0x00400000L; -const SQL_FN_NUM_SIGN = 0x00001000L; -const SQL_FN_NUM_SIN = 0x00002000L; -const SQL_FN_NUM_SQRT = 0x00004000L; -const SQL_FN_NUM_TAN = 0x00008000L; -const SQL_FN_NUM_TRUNCATE = 0x00800000L; -const SQL_FN_STR_ASCII = 0x00002000L; -const SQL_FN_STR_CHAR = 0x00004000L; -const SQL_FN_STR_CONCAT = 0x00000001L; -const SQL_FN_STR_DIFFERENCE = 0x00008000L; -const SQL_FN_STR_INSERT = 0x00000002L; -const SQL_FN_STR_LCASE = 0x00000040L; -const SQL_FN_STR_LEFT = 0x00000004L; -const SQL_FN_STR_LENGTH = 0x00000010L; -const SQL_FN_STR_LOCATE = 0x00000020L; -const SQL_FN_STR_LOCATE_2 = 0x00010000L; -const SQL_FN_STR_LTRIM = 0x00000008L; -const SQL_FN_STR_REPEAT = 0x00000080L; -const SQL_FN_STR_REPLACE = 0x00000100L; -const SQL_FN_STR_RIGHT = 0x00000200L; -const SQL_FN_STR_RTRIM = 0x00000400L; -const SQL_FN_STR_SOUNDEX = 0x00020000L; -const SQL_FN_STR_SPACE = 0x00040000L; -const SQL_FN_STR_SUBSTRING = 0x00000800L; -const SQL_FN_STR_UCASE = 0x00001000L; -const SQL_FN_SYS_DBNAME = 0x00000002L; -const SQL_FN_SYS_IFNULL = 0x00000004L; -const SQL_FN_SYS_USERNAME = 0x00000001L; -const SQL_FN_TD_CURDATE = 0x00000002L; -const SQL_FN_TD_CURTIME = 0x00000200L; -const SQL_FN_TD_DAYNAME = 0x00008000L; -const SQL_FN_TD_DAYOFMONTH = 0x00000004L; -const SQL_FN_TD_DAYOFWEEK = 0x00000008L; -const SQL_FN_TD_DAYOFYEAR = 0x00000010L; -const SQL_FN_TD_HOUR = 0x00000400L; -const SQL_FN_TD_MINUTE = 0x00000800L; -const SQL_FN_TD_MONTH = 0x00000020L; -const SQL_FN_TD_MONTHNAME = 0x00010000L; -const SQL_FN_TD_NOW = 0x00000001L; -const SQL_FN_TD_QUARTER = 0x00000040L; -const SQL_FN_TD_SECOND = 0x00001000L; -const SQL_FN_TD_TIMESTAMPADD = 0x00002000L; -const SQL_FN_TD_TIMESTAMPDIFF = 0x00004000L; -const SQL_FN_TD_WEEK = 0x00000080L; -const SQL_FN_TD_YEAR = 0x00000100L; -const SQL_FN_TSI_DAY = 0x00000010L; -const SQL_FN_TSI_FRAC_SECOND = 0x00000001L; -const SQL_FN_TSI_HOUR = 0x00000008L; -const SQL_FN_TSI_MINUTE = 0x00000004L; -const SQL_FN_TSI_MONTH = 0x00000040L; -const SQL_FN_TSI_QUARTER = 0x00000080L; -const SQL_FN_TSI_SECOND = 0x00000002L; -const SQL_FN_TSI_WEEK = 0x00000020L; -const SQL_FN_TSI_YEAR = 0x00000100L; -const SQL_GB_GROUP_BY_CONTAINS_SELECT = 2; -const SQL_GB_GROUP_BY_EQUALS_SELECT = 1; -const SQL_GB_NO_RELATION = 3; -const SQL_GB_NOT_SUPPORTED = 0; -const SQL_GD_BLOCK = 4; -const SQL_GD_BOUND = 8; -const SQL_GET_BOOKMARK = 13; -const SQL_GROUP_BY = 88; -const SQL_IGNORE = -6; -const SQL_INFO_FIRST = 0; -const SQL_KEYSET_SIZE = 8; -const SQL_KEYSET_SIZE_DEFAULT = 0UL; -const SQL_KEYWORDS = 89; -const SQL_LCK_EXCLUSIVE = 2; -const SQL_LCK_NO_CHANGE = 1; -const SQL_LCK_UNLOCK = 4; - -const SQL_LEN_BINARY_ATTR_OFFSET = -100; -const SQL_LEN_DATA_AT_EXEC_OFFSET = -100; -//MACRO #define SQL_LEN_BINARY_ATTR(length) (-(length)+SQL_LEN_BINARY_ATTR_OFFSET) -//MACRO #define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) - -const SQL_LIKE_ESCAPE_CLAUSE = 113; -const SQL_LIKE_ONLY = 1; -const SQL_LOCK_EXCLUSIVE = 1; -const SQL_LOCK_NO_CHANGE = 0; -const SQL_LOCK_TYPES = 78; -const SQL_LOCK_UNLOCK = 2; -const SQL_LOGIN_TIMEOUT = 103; -const SQL_LOGIN_TIMEOUT_DEFAULT = 15UL; -const SQL_LONGVARBINARY = -4; -const SQL_LONGVARCHAR = -1; -const SQL_MAX_BINARY_LITERAL_LEN = 112; -const SQL_MAX_CHAR_LITERAL_LEN = 108; -const SQL_MAX_DSN_LENGTH = 32; -const SQL_MAX_LENGTH = 3; -const SQL_MAX_LENGTH_DEFAULT = 0UL; -const SQL_MAX_OPTION_STRING_LENGTH = 256; -const SQL_MAX_OWNER_NAME_LEN = 32; -const SQL_MAX_PROCEDURE_NAME_LEN = 33; -const SQL_MAX_QUALIFIER_NAME_LEN = 34; -const SQL_MAX_ROW_SIZE_INCLUDES_LONG = 103; -const SQL_MAX_ROWS = 1; -const SQL_MAX_ROWS_DEFAULT = 0UL; - -const SQL_MODE_READ_WRITE = 0UL; -const SQL_MODE_READ_ONLY = 1UL; -const SQL_MODE_DEFAULT = SQL_MODE_READ_WRITE; - -const SQL_MULT_RESULT_SETS = 36; -const SQL_MULTIPLE_ACTIVE_TXN = 37; -const SQL_NC_END = 0x0004; -const SQL_NC_START = 0x0002; -const SQL_NEED_LONG_DATA_LEN = 111; -const SQL_NNC_NON_NULL = 0x0001; -const SQL_NNC_NULL = 0x0000; -const SQL_NO_TOTAL = -4; -const SQL_NON_NULLABLE_COLUMNS = 75; - -const SQL_NOSCAN_OFF = 0UL; -const SQL_NOSCAN_ON = 1UL; -const SQL_NOSCAN = 2; -const SQL_NOSCAN_DEFAULT = SQL_NOSCAN_OFF; - -const SQL_NUMERIC_FUNCTIONS = 49; -const SQL_OAC_LEVEL1 = 0x0001; -const SQL_OAC_LEVEL2 = 0x0002; -const SQL_OAC_NONE = 0x0000; -const SQL_ODBC_API_CONFORMANCE = 9; -const SQL_ODBC_CURSORS = 110; -const SQL_ODBC_SAG_CLI_CONFORMANCE = 12; -const SQL_ODBC_SQL_CONFORMANCE = 15; -const SQL_ODBC_SQL_OPT_IEF = 73; -const SQL_ODBC_VER = 10; -const SQL_OPT_TRACE = 104; - -const SQL_OPT_TRACE_FILE_DEFAULT = "\\SQL.LOG"; -const SQL_OPT_TRACE_OFF = 0UL; -const SQL_OPT_TRACE_DEFAULT = SQL_OPT_TRACE_OFF; -const SQL_OPT_TRACE_ON = 1UL; - -const SQL_OPT_TRACEFILE = 105; -const SQL_OSC_CORE = 1; -const SQL_OSC_EXTENDED = 2; -const SQL_OSC_MINIMUM = 0; -const SQL_OSCC_COMPLIANT = 1; -const SQL_OSCC_NOT_COMPLIANT = 0; -const SQL_OU_DML_STATEMENTS = 1; -const SQL_OU_INDEX_DEFINITION = 8; -const SQL_OU_PRIVILEGE_DEFINITION = 16; -const SQL_OU_PROCEDURE_INVOCATION = 2; -const SQL_OU_TABLE_DEFINITION = 4; -const SQL_OUTER_JOINS = 38; -const SQL_OWNER_TERM = 39; -const SQL_OWNER_USAGE = 91; -const SQL_PACKET_SIZE = 112; -const SQL_PARAM_INPUT = 1; -const SQL_PARAM_INPUT_OUTPUT = 2; -const SQL_PARAM_OUTPUT = 4; -const SQL_PARAM_TYPE_DEFAULT = SQL_PARAM_INPUT_OUTPUT; -const SQL_PARAM_TYPE_UNKNOWN = 0; -const SQL_PC_NOT_PSEUDO = 1; -const SQL_POS_ADD = 16; -const SQL_POS_DELETE = 8; -const SQL_POS_OPERATIONS = 79; -const SQL_POS_POSITION = 1; -const SQL_POS_REFRESH = 2; -const SQL_POS_UPDATE = 4; -const SQL_POSITION = 0; -const SQL_POSITIONED_STATEMENTS = 80; -const SQL_PROCEDURE_TERM = 40; -const SQL_PROCEDURES = 21; -const SQL_PS_POSITIONED_DELETE = 1; -const SQL_PS_POSITIONED_UPDATE = 2; -const SQL_PS_SELECT_FOR_UPDATE = 4; -const SQL_PT_FUNCTION = 2; -const SQL_PT_PROCEDURE = 1; -const SQL_PT_UNKNOWN = 0; -const SQL_QL_END = 0x0002; -const SQL_QL_START = 0x0001; -const SQL_QU_DML_STATEMENTS = 1; -const SQL_QU_INDEX_DEFINITION = 8; -const SQL_QU_PRIVILEGE_DEFINITION = 16; -const SQL_QU_PROCEDURE_INVOCATION = 2; -const SQL_QU_TABLE_DEFINITION = 4; -const SQL_QUALIFIER_LOCATION = 114; -const SQL_QUALIFIER_NAME_SEPARATOR = 41; -const SQL_QUALIFIER_TERM = 42; -const SQL_QUALIFIER_USAGE = 92; -const SQL_QUERY_TIMEOUT = 0; -const SQL_QUERY_TIMEOUT_DEFAULT = 0UL; -const SQL_QUICK = 0; -const SQL_QUIET_MODE = 111; -const SQL_QUOTED_IDENTIFIER_CASE = 93; - -const SQL_RD_OFF = 0UL; -const SQL_RD_ON = 1UL; -const SQL_RD_DEFAULT = SQL_RD_ON; - -const SQL_REFRESH = 1; -const SQL_RESTRICT = 1; -const SQL_RESULT_COL = 3; -const SQL_RETRIEVE_DATA = 11; -const SQL_RETURN_VALUE = 5; -const SQL_ROW_ADDED = 4; -const SQL_ROW_DELETED = 1; -const SQL_ROW_ERROR = 5; -const SQL_ROW_NOROW = 3; -const SQL_ROW_NUMBER = 14; -const SQL_ROW_SUCCESS = 0; -const SQL_ROW_UPDATED = 2; -const SQL_ROW_UPDATES = 11; -const SQL_ROWSET_SIZE = 9; -const SQL_ROWSET_SIZE_DEFAULT = 1UL; -const SQL_ROWVER = 2; -const SQL_SC_NON_UNIQUE = 0UL; -const SQL_SC_TRY_UNIQUE = 1UL; -const SQL_SC_UNIQUE = 2UL; -const SQL_SCCO_OPT_TIMESTAMP = SQL_SCCO_OPT_ROWVER;/* deprecated */ -const SQL_SCROLL_DYNAMIC = -2L;/* deprecated */ -const SQL_SCROLL_FORWARD_ONLY = 0L;/* deprecated */ -const SQL_SCROLL_KEYSET_DRIVEN = -1L;/* deprecated */ -const SQL_SCROLL_OPTIONS = 44; -const SQL_SCROLL_STATIC = -3L;/* deprecated */ -const SQL_SEARCHABLE = 3; -const SQL_SET_NULL = 2; -const SQL_SETPARAM_VALUE_MAX = -1L; -const SQL_SETPOS_MAX_LOCK_VALUE = SQL_LOCK_UNLOCK; -const SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD; -const SQL_SIMULATE_CURSOR = 10; -const SQL_SO_DYNAMIC = 4; -const SQL_SO_FORWARD_ONLY = 1; -const SQL_SO_KEYSET_DRIVEN = 2; -const SQL_SO_MIXED = 8; -const SQL_SO_STATIC = 16; -const SQL_SQ_COMPARISON = 1; -const SQL_SQ_CORRELATED_SUBQUERIES = 16; -const SQL_SQ_EXISTS = 2; -const SQL_SQ_IN = 4; -const SQL_SQ_QUANTIFIED = 8; -const SQL_SQLSTATE_SIZE = 5; -const SQL_SS_ADDITIONS = 1; -const SQL_SS_DELETIONS = 2; -const SQL_SS_UPDATES = 4; -const SQL_STATIC_SENSITIVITY = 83; -const SQL_STRING_FUNCTIONS = 50; -const SQL_SUBQUERIES = 95; -const SQL_SYSTEM_FUNCTIONS = 51; -const SQL_TABLE_STAT = 0; -const SQL_TABLE_TERM = 45; -const SQL_TIMEDATE_ADD_INTERVALS = 109; -const SQL_TIMEDATE_DIFF_INTERVALS = 110; -const SQL_TIMEDATE_FUNCTIONS = 52; -const SQL_TRANSLATE_DLL = 106; -const SQL_TRANSLATE_OPTION = 107; -const SQL_TXN_ISOLATION = 108; -const SQL_TXN_VERSIONING = 16; -const SQL_TYPE_NULL = 0; -const SQL_U_UNION = 1; -const SQL_U_UNION_ALL = 2; - -const SQL_UB_OFF = 0UL; -const SQL_UB_DEFAULT = SQL_UB_OFF; -const SQL_UB_ON = 01UL; - -const SQL_UNION = 96; -const SQL_UNSEARCHABLE = 0; -const SQL_UPDATE = 2; -const SQL_USE_BOOKMARKS = 12; -const SQL_VARBINARY = -3; - -const SQL_COLATT_OPT_MAX = SQL_COLUMN_LABEL; -const SQL_COLATT_OPT_MIN = SQL_COLUMN_COUNT; -const SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; - -//MACRO #define SQL_POSITION_TO(s, r) SQLSetPos(s, r, SQL_POSITION, SQL_LOCK_NO_CHANGE) - -//MACRO #define SQL_LOCK_RECORD(s, r, l) SQLSetPos(s, r, SQL_POSITION, l) - -//MACRO #define SQL_REFRESH_RECORD(s, r, l) SQLSetPos(s, r, SQL_REFRESH, l) - -//MACRO #define SQL_UPDATE_RECORD(s, r) SQLSetPos(s, r, SQL_UPDATE, SQL_LOCK_NO_CHANGE) - -//MACRO #define SQL_DELETE_RECORD(s, r) SQLSetPos(s, r, SQL_DELETE, SQL_LOCK_NO_CHANGE) - -//MACRO #define SQL_ADD_RECORD(s, r) SQLSetPos(s, r, SQL_ADD, SQL_LOCK_NO_CHANGE) - - -static if (ODBCVER < 0x0300) { - const SQL_CONNECT_OPT_DRVR_START = 1000; - const SQL_CONN_OPT_MAX = SQL_PACKET_SIZE; - const SQL_CONN_OPT_MIN = SQL_ACCESS_MODE; - const SQL_STMT_OPT_MAX = SQL_ROW_NUMBER; - const SQL_STMT_OPT_MIN = SQL_QUERY_TIMEOUT; - const SQL_TYPE_DRIVER_START = SQL_INTERVAL_YEAR; - const SQL_TYPE_DRIVER_END = SQL_UNICODE_LONGVARCHAR; - const SQL_TYPE_MIN = SQL_BIT; - const SQL_TYPE_MAX = SQL_VARCHAR; -} - -static if (ODBCVER < 0x0300) { - const SQL_NO_DATA_FOUND = 100; - const SQL_INTERVAL_YEAR = -80; - const SQL_INTERVAL_MONTH = -81; - const SQL_INTERVAL_YEAR_TO_MONTH = -82; - const SQL_INTERVAL_DAY = -83; - const SQL_INTERVAL_HOUR = -84; - const SQL_INTERVAL_MINUTE = -85; - const SQL_INTERVAL_SECOND = -86; - const SQL_INTERVAL_DAY_TO_HOUR = -87; - const SQL_INTERVAL_DAY_TO_MINUTE = -88; - const SQL_INTERVAL_DAY_TO_SECOND = -89; - const SQL_INTERVAL_HOUR_TO_MINUTE = -90; - const SQL_INTERVAL_HOUR_TO_SECOND = -91; - const SQL_INTERVAL_MINUTE_TO_SECOND = -92; -} else { - const SQL_NO_DATA_FOUND = SQL_NO_DATA; - const SQL_CODE_YEAR = 1; - const SQL_CODE_MONTH = 2; - const SQL_CODE_DAY = 3; - const SQL_CODE_HOUR = 4; - const SQL_CODE_MINUTE = 5; - const SQL_CODE_SECOND = 6; - const SQL_CODE_YEAR_TO_MONTH = 7; - const SQL_CODE_DAY_TO_HOUR = 8; - const SQL_CODE_DAY_TO_MINUTE = 9; - const SQL_CODE_DAY_TO_SECOND = 10; - const SQL_CODE_HOUR_TO_MINUTE = 11; - const SQL_CODE_HOUR_TO_SECOND = 12; - const SQL_CODE_MINUTE_TO_SECOND = 13; - const SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR; - const SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH; - const SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY; - const SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR; - const SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE; - const SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND; - const SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH; - const SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR; - const SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE; - const SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND; - const SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE; - const SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND; - const SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND; -}//[Yes] #endif - - -static if ((ODBCVER >= 0x0201) && (ODBCVER < 0x0300)) { - const SQL_OJ_CAPABILITIES = 65003; -} - -static if (ODBCVER >= 0x0250) { - const SQL_NO_ACTION = 3; - const SQL_SET_DEFAULT = 4; -} - -static if (ODBCVER >= 0x0300) { - const SQL_ACTIVE_ENVIRONMENTS = 116; - const SQL_AD_ADD_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_AD_ADD_DOMAIN_CONSTRAINT = 0x00000002L; - const SQL_AD_ADD_DOMAIN_DEFAULT = 0x00000008L; - const SQL_AD_CONSTRAINT_NAME_DEFINITION = 0x00000001L; - const SQL_AD_DROP_DOMAIN_CONSTRAINT = 0x00000004L; - const SQL_AD_DROP_DOMAIN_DEFAULT = 0x00000010L; - const SQL_AF_ALL = 0x00000040L; - const SQL_AF_AVG = 0x00000001L; - const SQL_AF_COUNT = 0x00000002L; - const SQL_AF_DISTINCT = 0x00000020L; - const SQL_AF_MAX = 0x00000004L; - const SQL_AF_MIN = 0x00000008L; - const SQL_AF_SUM = 0x00000010L; - const SQL_AGGREGATE_FUNCTIONS = 169; - const SQL_ALL_CATALOGS = "%"; - const SQL_ALL_SCHEMAS = "%"; - const SQL_ALL_TABLE_TYPES = "%"; - const SQL_ALTER_DOMAIN = 117; - const SQL_AM_CONNECTION = 1; - const SQL_AM_NONE = 0; - const SQL_AM_STATEMENT = 2; - const SQL_API_ODBC3_ALL_FUNCTIONS = 999; - const SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; - const SQL_API_SQLALLOCHANDLESTD = 73; - const SQL_API_SQLBULKOPERATIONS = 24; - const SQL_ASYNC_MODE = 10021; - const SQL_AT_ADD_COLUMN_COLLATION = 0x00000080L; - const SQL_AT_ADD_COLUMN_DEFAULT = 0x00000040L; - const SQL_AT_ADD_COLUMN_SINGLE = 0x00000020L; - const SQL_AT_ADD_TABLE_CONSTRAINT = 0x00001000L; - const SQL_AT_CONSTRAINT_DEFERRABLE = 0x00040000L; - const SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = 0x00010000L; - const SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00020000L; - const SQL_AT_CONSTRAINT_NAME_DEFINITION = 0x00008000L; - const SQL_AT_CONSTRAINT_NON_DEFERRABLE = 0x00080000L; - const SQL_AT_DROP_COLUMN_CASCADE = 0x00000400L; - const SQL_AT_DROP_COLUMN_DEFAULT = 0x00000200L; - const SQL_AT_DROP_COLUMN_RESTRICT = 0x00000800L; - const SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = 0x00002000L; - const SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = 0x00004000L; - const SQL_AT_SET_COLUMN_DEFAULT = 0x00000100L; - const SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; - const SQL_ATTR_ASYNC_ENABLE = 4; - const SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; - const SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; - const SQL_ATTR_CONNECTION_POOLING = 201; - const SQL_ATTR_CONNECTION_TIMEOUT = 113; - const SQL_ATTR_CP_MATCH = 202; - const SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; - const SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; - const SQL_ATTR_DISCONNECT_BEHAVIOR = 114; - const SQL_ATTR_ENABLE_AUTO_IPD = 15; - const SQL_ATTR_ENLIST_IN_DTC = 1207; - const SQL_ATTR_ENLIST_IN_XA = 1208; - const SQL_ATTR_FETCH_BOOKMARK_PTR = 16; - const SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; - const SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; - const SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; - const SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; - const SQL_ATTR_NOSCAN = SQL_NOSCAN; - const SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; - const SQL_ATTR_ODBC_VERSION = 200; - const SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; - const SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; - const SQL_ATTR_PARAM_BIND_TYPE = 18; - const SQL_ATTR_PARAM_OPERATION_PTR = 19; - const SQL_ATTR_PARAM_STATUS_PTR = 20; - const SQL_ATTR_PARAMS_PROCESSED_PTR = 21; - const SQL_ATTR_PARAMSET_SIZE = 22; - const SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; - const SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; - const SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; - const SQL_ATTR_ROW_ARRAY_SIZE = 27; - const SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; - const SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; - const SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; - const SQL_ATTR_ROW_OPERATION_PTR = 24; - const SQL_ATTR_ROW_STATUS_PTR = 25; - const SQL_ATTR_ROWS_FETCHED_PTR = 26; - const SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; - const SQL_ATTR_TRACE = SQL_OPT_TRACE; - const SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; - const SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; - const SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; - const SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; - const SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; - const SQL_BATCH_ROW_COUNT = 120; - const SQL_BATCH_SUPPORT = 121; - const SQL_BRC_EXPLICIT = 0x0000002; - const SQL_BRC_PROCEDURES = 0x0000001; - const SQL_BRC_ROLLED_UP = 0x0000004; - const SQL_BS_ROW_COUNT_EXPLICIT = 0x00000002L; - const SQL_BS_ROW_COUNT_PROC = 0x00000008L; - const SQL_BS_SELECT_EXPLICIT = 0x00000001L; - const SQL_BS_SELECT_PROC = 0x00000004L; - const SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; - const SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; - const SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; - const SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; - const SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; - const SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; - const SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; - const SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; - const SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; - const SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; - const SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; - const SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; - const SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; - const SQL_C_NUMERIC = SQL_NUMERIC; - const SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; - const SQL_C_TYPE_DATE = SQL_TYPE_DATE; - const SQL_C_TYPE_TIME = SQL_TYPE_TIME; - const SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; - const SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; - const SQL_C_VARBOOKMARK = SQL_C_BINARY; - const SQL_CA_CONSTRAINT_DEFERRABLE = 0x00000040L; - const SQL_CA_CONSTRAINT_INITIALLY_DEFERRED = 0x00000010L; - const SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000020L; - const SQL_CA_CONSTRAINT_NON_DEFERRABLE = 0x00000080L; - const SQL_CA_CREATE_ASSERTION = 0x00000001L; - const SQL_CA1_ABSOLUTE = 0x00000002L; - const SQL_CA1_BOOKMARK = 0x00000008L; - const SQL_CA1_BULK_ADD = 0x00010000L; - const SQL_CA1_BULK_DELETE_BY_BOOKMARK = 0x00040000L; - const SQL_CA1_BULK_FETCH_BY_BOOKMARK = 0x00080000L; - const SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 0x00020000L; - const SQL_CA1_LOCK_EXCLUSIVE = 0x00000080L; - const SQL_CA1_LOCK_NO_CHANGE = 0x00000040L; - const SQL_CA1_LOCK_UNLOCK = 0x00000100L; - const SQL_CA1_NEXT = 0x00000001L; - const SQL_CA1_POS_DELETE = 0x00000800L; - const SQL_CA1_POS_POSITION = 0x00000200L; - const SQL_CA1_POS_REFRESH = 0x00001000L; - const SQL_CA1_POS_UPDATE = 0x00000400L; - const SQL_CA1_POSITIONED_DELETE = 0x00004000L; - const SQL_CA1_POSITIONED_UPDATE = 0x00002000L; - const SQL_CA1_RELATIVE = 0x00000004L; - const SQL_CA1_SELECT_FOR_UPDATE = 0x00008000L; - const SQL_CA2_CRC_APPROXIMATE = 0x00002000L; - const SQL_CA2_CRC_EXACT = 0x00001000L; - const SQL_CA2_LOCK_CONCURRENCY = 0x00000002L; - - const SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L; - const SQL_CA2_MAX_ROWS_DELETE = 0x00000200L; - const SQL_CA2_MAX_ROWS_INSERT = 0x00000100L; - const SQL_CA2_MAX_ROWS_SELECT = 0x00000080L; - const SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L; - const SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | - SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG; - - const SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L; - const SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L; - const SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L; - const SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L; - const SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L; - const SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L; - const SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L; - const SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L; - const SQL_CA2_SIMULATE_UNIQUE = 0x00010000L; - const SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; - const SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; - const SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; - const SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; - const SQL_CCOL_CREATE_COLLATION = 0x00000001L; - const SQL_CCS_COLLATE_CLAUSE = 0x00000002L; - const SQL_CCS_CREATE_CHARACTER_SET = 0x00000001L; - const SQL_CCS_LIMITED_COLLATION = 0x00000004L; - const SQL_CDO_COLLATION = 0x00000008L; - const SQL_CDO_CONSTRAINT = 0x00000004L; - const SQL_CDO_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_CDO_CONSTRAINT_NAME_DEFINITION = 0x00000010L; - const SQL_CDO_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_CDO_CREATE_DOMAIN = 0x00000001L; - const SQL_CDO_DEFAULT = 0x00000002L; - const SQL_CL_END = SQL_QL_END; - const SQL_CL_START = SQL_QL_START; - const SQL_COL_PRED_BASIC = SQL_ALL_EXCEPT_LIKE; - const SQL_COL_PRED_CHAR = SQL_LIKE_ONLY; - const SQL_COLUMN_DRIVER_START = 1000; - const SQL_COLUMN_IGNORE = SQL_IGNORE; - const SQL_COLUMN_NUMBER_UNKNOWN = -2; - const SQL_CONVERT_GUID = 173; - - const SQL_CONVERT_WCHAR = 122; - const SQL_CONVERT_INTERVAL_DAY_TIME = 123; - const SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; - const SQL_CONVERT_WLONGVARCHAR = 125; - const SQL_CONVERT_WVARCHAR = 126; - - const SQL_CREATE_ASSERTION = 127; - const SQL_CREATE_CHARACTER_SET = 128; - const SQL_CREATE_COLLATION = 129; - const SQL_CREATE_DOMAIN = 130; - const SQL_CREATE_SCHEMA = 131; - const SQL_CREATE_TABLE = 132; - const SQL_CREATE_TRANSLATION = 133; - const SQL_CREATE_VIEW = 134; - - - const SQL_CP_OFF = 0UL; - const SQL_CP_DEFAULT = SQL_CP_OFF; - const SQL_CP_ONE_PER_DRIVER = 1UL; - const SQL_CP_ONE_PER_HENV = 2UL; - - const SQL_CP_STRICT_MATCH = 0UL; - const SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; - const SQL_CP_RELAXED_MATCH = 1UL; - - const SQL_CS_CREATE_SCHEMA = 0x00000001L; - const SQL_CS_AUTHORIZATION = 0x00000002L; - const SQL_CS_DEFAULT_CHARACTER_SET = 0x00000004L; - - const SQL_CT_COLUMN_COLLATION = 0x00000800L; - const SQL_CT_COLUMN_CONSTRAINT = 0x00000200L; - const SQL_CT_COLUMN_DEFAULT = 0x00000400L; - const SQL_CT_COMMIT_DELETE = 0x00000004L; - const SQL_CT_COMMIT_PRESERVE = 0x00000002L; - const SQL_CT_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_CT_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_CT_CONSTRAINT_NAME_DEFINITION = 0x00002000L; - const SQL_CT_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_CT_CREATE_TABLE = 0x00000001L; - const SQL_CT_GLOBAL_TEMPORARY = 0x00000008L; - const SQL_CT_LOCAL_TEMPORARY = 0x00000010L; - const SQL_CT_TABLE_CONSTRAINT = 0x00001000L; - - const SQL_CTR_CREATE_TRANSLATION = 0x00000001L; - - const SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; - const SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; - const SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; - const SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; - const SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; - - const SQL_CVT_INTERVAL_YEAR_MONTH = 0x00080000L; - const SQL_CVT_INTERVAL_DAY_TIME = 0x00100000L; - const SQL_CVT_WCHAR = 0x00200000L; - const SQL_CVT_WLONGVARCHAR = 0x00400000L; - const SQL_CVT_WVARCHAR = 0x00800000L; - const SQL_CVT_GUID = 0x01000000L; - - const SQL_DA_DROP_ASSERTION = 0x00000001L; - const SQL_DATETIME_LITERALS = 119; - - const SQL_DB_DISCONNECT = 1UL; - const SQL_DB_RETURN_TO_POOL = 0UL; - const SQL_DB_DEFAULT = SQL_DB_RETURN_TO_POOL; - - const SQL_DC_DROP_COLLATION = 0x00000001L; - const SQL_DCS_DROP_CHARACTER_SET = 0x00000001L; - const SQL_DD_CASCADE = 0x00000004L; - const SQL_DD_DROP_DOMAIN = 0x00000001L; - const SQL_DD_RESTRICT = 0x00000002L; - const SQL_DDL_INDEX = 170; - const SQL_DELETE_BY_BOOKMARK = 6; - const SQL_DESC_ARRAY_SIZE = 20; - const SQL_DESC_ARRAY_STATUS_PTR = 21; - const SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; - const SQL_DESC_BASE_COLUMN_NAME = 22; - const SQL_DESC_BASE_TABLE_NAME = 23; - const SQL_DESC_BIND_OFFSET_PTR = 24; - const SQL_DESC_BIND_TYPE = 25; - const SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; - const SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; - const SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; - const SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; - const SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; - const SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; - const SQL_DESC_LABEL = SQL_COLUMN_LABEL; - const SQL_DESC_LITERAL_PREFIX = 27; - const SQL_DESC_LITERAL_SUFFIX = 28; - const SQL_DESC_LOCAL_TYPE_NAME = 29; - const SQL_DESC_MAXIMUM_SCALE = 30; - const SQL_DESC_MINIMUM_SCALE = 31; - const SQL_DESC_NUM_PREC_RADIX = 32; - const SQL_DESC_PARAMETER_TYPE = 33; - const SQL_DESC_ROWS_PROCESSED_PTR = 34; - const SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; - const SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; - const SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; - const SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; - const SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; - const SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; - const SQL_DI_CREATE_INDEX = 0x00000001L; - const SQL_DI_DROP_INDEX = 0x00000002L; - - const SQL_DIAG_COLUMN_NUMBER = -1247; - const SQL_DIAG_ROW_NUMBER = -1248; - const SQL_DIAG_CURSOR_ROW_COUNT = -1249; - - const SQL_DL_SQL92_DATE = 0x00000001L; - const SQL_DL_SQL92_INTERVAL_DAY = 0x00000020L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000L; - const SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040L; - const SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000L; - const SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000L; - const SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080L; - const SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000L; - const SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010L; - const SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100L; - const SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008L; - const SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200L; - const SQL_DL_SQL92_TIME = 0x00000002L; - const SQL_DL_SQL92_TIMESTAMP = 0x00000004L; - const SQL_DM_VER = 171; - const SQL_DRIVER_HDESC = 135; - const SQL_DROP_ASSERTION = 136; - const SQL_DROP_CHARACTER_SET = 137; - const SQL_DROP_COLLATION = 138; - const SQL_DROP_DOMAIN = 139; - const SQL_DROP_SCHEMA = 140; - const SQL_DROP_TABLE = 141; - const SQL_DROP_TRANSLATION = 142; - const SQL_DROP_VIEW = 143; - const SQL_DS_CASCADE = 0x00000004L; - const SQL_DS_DROP_SCHEMA = 0x00000001L; - const SQL_DS_RESTRICT = 0x00000002L; - const SQL_DT_CASCADE = 0x00000004L; - const SQL_DT_DROP_TABLE = 0x00000001L; - const SQL_DT_RESTRICT = 0x00000002L; - const SQL_DTC_DONE = 0L; - const SQL_DTR_DROP_TRANSLATION = 0x00000001L; - const SQL_DV_CASCADE = 0x00000004L; - const SQL_DV_DROP_VIEW = 0x00000001L; - const SQL_DV_RESTRICT = 0x00000002L; - const SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; - const SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; - const SQL_EXT_API_LAST = SQL_API_SQLBINDPARAMETER; - const SQL_EXT_API_START = 40; - const SQL_FETCH_BY_BOOKMARK = 7; - const SQL_FETCH_FIRST_SYSTEM = 32; - const SQL_FETCH_FIRST_USER = 31; - const SQL_FN_CVT_CAST = 0x00000002L; - const SQL_FN_STR_BIT_LENGTH = 0x00080000L; - const SQL_FN_STR_CHAR_LENGTH = 0x00100000L; - const SQL_FN_STR_CHARACTER_LENGTH = 0x00200000L; - const SQL_FN_STR_OCTET_LENGTH = 0x00400000L; - const SQL_FN_STR_POSITION = 0x00800000L; - const SQL_FN_TD_CURRENT_DATE = 0x00020000L; - const SQL_FN_TD_CURRENT_TIME = 0x00040000L; - const SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000L; - const SQL_FN_TD_EXTRACT = 0x00100000L; - const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; - const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; - /* #define SQL_FUNC_EXISTS(exists, api) - ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? - SQL_TRUE : SQL_FALSE ) - */ - const SQL_GB_COLLATE = 0x0004; - const SQL_HANDLE_SENV = 5; - - const SQL_IK_NONE = 0; - const SQL_IK_ASC = 1; - const SQL_IK_DESC = 2; - const SQL_IK_ALL = SQL_IK_ASC | SQL_IK_DESC; - - const SQL_INDEX_KEYWORDS = 148; - const SQL_INFO_DRIVER_START = 1000; - const SQL_INFO_LAST = SQL_QUALIFIER_LOCATION; - const SQL_INFO_SCHEMA_VIEWS = 149; - const SQL_INITIALLY_DEFERRED = 5; - const SQL_INITIALLY_IMMEDIATE = 6; - const SQL_INSERT_STATEMENT = 172; - const SQL_INTERVAL = 10; - const SQL_IS_INSERT_LITERALS = 0x00000001L; - const SQL_IS_INSERT_SEARCHED = 0x00000002L; - const SQL_IS_INTEGER = -6; - const SQL_IS_POINTER = -4; - const SQL_IS_SELECT_INTO = 0x00000004L; - const SQL_IS_SMALLINT = -8; - const SQL_IS_UINTEGER = -5; - const SQL_IS_USMALLINT = -7; - const SQL_ISV_ASSERTIONS = 0x00000001L; - const SQL_ISV_CHARACTER_SETS = 0x00000002L; - const SQL_ISV_CHECK_CONSTRAINTS = 0x00000004L; - const SQL_ISV_COLLATIONS = 0x00000008L; - const SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010L; - const SQL_ISV_COLUMN_PRIVILEGES = 0x00000020L; - const SQL_ISV_COLUMNS = 0x00000040L; - const SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080L; - const SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100L; - const SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200L; - const SQL_ISV_DOMAINS = 0x00000400L; - const SQL_ISV_KEY_COLUMN_USAGE = 0x00000800L; - const SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000L; - const SQL_ISV_SCHEMATA = 0x00002000L; - const SQL_ISV_SQL_LANGUAGES = 0x00004000L; - const SQL_ISV_TABLE_CONSTRAINTS = 0x00008000L; - const SQL_ISV_TABLE_PRIVILEGES = 0x00010000L; - const SQL_ISV_TABLES = 0x00020000L; - const SQL_ISV_TRANSLATIONS = 0x00040000L; - const SQL_ISV_USAGE_PRIVILEGES = 0x00080000L; - const SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000L; - const SQL_ISV_VIEW_TABLE_USAGE = 0x00200000L; - const SQL_ISV_VIEWS = 0x00400000L; - const SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; - const SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; - const SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; - const SQL_NO_COLUMN_NUMBER = -1; - const SQL_NO_ROW_NUMBER = -1; - const SQL_NOT_DEFERRABLE = 7; - const SQL_NUM_EXTENSIONS = SQL_EXT_API_LAST-SQL_EXT_API_START+1; - const SQL_NUM_FUNCTIONS = 23; - const SQL_ODBC_INTERFACE_CONFORMANCE = 152; - - enum : ULONG { - SQL_OIC_CORE = 1, - SQL_OIC_LEVEL1, - SQL_OIC_LEVEL2 - } - enum : ULONG { - SQL_OV_ODBC2 = 2, - SQL_OV_ODBC3 = 3 - } - - const ULONG - SQL_PARAM_BIND_BY_COLUMN = 0, - SQL_PARAM_BIND_TYPE_DEFAULT = SQL_PARAM_BIND_BY_COLUMN; - - const SQL_PARAM_ARRAY_ROW_COUNTS = 153; - const SQL_PARAM_ARRAY_SELECTS = 154; - const SQL_PARAM_DIAG_UNAVAILABLE = 1; - const SQL_PARAM_ERROR = 5; - const SQL_PARAM_IGNORE = 1; - const SQL_PARAM_PROCEED = 0; - const SQL_PARAM_SUCCESS = 0; - const SQL_PARAM_SUCCESS_WITH_INFO = 6; - const SQL_PARAM_UNUSED = 7; - - const SQL_PARC_BATCH = 1; - const SQL_PARC_NO_BATCH = 2; - const SQL_PAS_BATCH = 1; - const SQL_PAS_NO_BATCH = 2; - const SQL_PAS_NO_SELECT = 3; - - const SQL_ROW_IGNORE = 1; - const SQL_ROW_NUMBER_UNKNOWN = -2; - const SQL_ROW_PROCEED = 0; - const SQL_ROW_SUCCESS_WITH_INFO = 6; - - const SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002L; - const SQL_SC_SQL92_ENTRY = 0x00000001L; - const SQL_SC_SQL92_FULL = 0x00000008L; - const SQL_SC_SQL92_INTERMEDIATE = 0x00000004L; - - const SQL_SCC_ISO92_CLI = 0x00000002L; - const SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001L; - - const SQL_SCHEMA_TERM = SQL_OWNER_TERM; - const SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; - const SQL_SDF_CURRENT_DATE = 0x00000001L; - const SQL_SDF_CURRENT_TIME = 0x00000002L; - const SQL_SDF_CURRENT_TIMESTAMP = 0x00000004L; - const SQL_SFKD_CASCADE = 0x00000001L; - const SQL_SFKD_NO_ACTION = 0x00000002L; - const SQL_SFKD_SET_DEFAULT = 0x00000004L; - const SQL_SFKD_SET_NULL = 0x00000008L; - const SQL_SFKU_CASCADE = 0x00000001L; - const SQL_SFKU_NO_ACTION = 0x00000002L; - const SQL_SFKU_SET_DEFAULT = 0x00000004L; - const SQL_SFKU_SET_NULL = 0x00000008L; - const SQL_SG_DELETE_TABLE = 0x00000020L; - const SQL_SG_INSERT_COLUMN = 0x00000080L; - const SQL_SG_INSERT_TABLE = 0x00000040L; - const SQL_SG_REFERENCES_COLUMN = 0x00000200L; - const SQL_SG_REFERENCES_TABLE = 0x00000100L; - const SQL_SG_SELECT_TABLE = 0x00000400L; - const SQL_SG_UPDATE_COLUMN = 0x00001000L; - const SQL_SG_UPDATE_TABLE = 0x00000800L; - const SQL_SG_USAGE_ON_CHARACTER_SET = 0x00000002L; - const SQL_SG_USAGE_ON_COLLATION = 0x00000004L; - const SQL_SG_USAGE_ON_DOMAIN = 0x00000001L; - const SQL_SG_USAGE_ON_TRANSLATION = 0x00000008L; - const SQL_SG_WITH_GRANT_OPTION = 0x00000010L; - const SQL_SNVF_BIT_LENGTH = 0x00000001L; - const SQL_SNVF_CHAR_LENGTH = 0x00000002L; - const SQL_SNVF_CHARACTER_LENGTH = 0x00000004L; - const SQL_SNVF_EXTRACT = 0x00000008L; - const SQL_SNVF_OCTET_LENGTH = 0x00000010L; - const SQL_SNVF_POSITION = 0x00000020L; - const SQL_SP_BETWEEN = 0x00000800L; - const SQL_SP_COMPARISON = 0x00001000L; - const SQL_SP_EXISTS = 0x00000001L; - const SQL_SP_IN = 0x00000400L; - const SQL_SP_ISNOTNULL = 0x00000002L; - const SQL_SP_ISNULL = 0x00000004L; - const SQL_SP_LIKE = 0x00000200L; - const SQL_SP_MATCH_FULL = 0x00000008L; - const SQL_SP_MATCH_PARTIAL = 0x00000010L; - const SQL_SP_MATCH_UNIQUE_FULL = 0x00000020L; - const SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040L; - const SQL_SP_OVERLAPS = 0x00000080L; - const SQL_SP_QUANTIFIED_COMPARISON = 0x00002000L; - const SQL_SP_UNIQUE = 0x00000100L; - const SQL_SQL_CONFORMANCE = 118; - const SQL_SQL92_DATETIME_FUNCTIONS = 155; - const SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; - const SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; - const SQL_SQL92_GRANT = 158; - const SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; - const SQL_SQL92_PREDICATES = 160; - const SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; - const SQL_SQL92_REVOKE = 162; - const SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; - const SQL_SQL92_STRING_FUNCTIONS = 164; - const SQL_SQL92_VALUE_EXPRESSIONS = 165; - const SQL_SR_CASCADE = 0x00000020L; - const SQL_SR_DELETE_TABLE = 0x00000080L; - const SQL_SR_GRANT_OPTION_FOR = 0x00000010L; - const SQL_SR_INSERT_COLUMN = 0x00000200L; - const SQL_SR_INSERT_TABLE = 0x00000100L; - const SQL_SR_REFERENCES_COLUMN = 0x00000800L; - const SQL_SR_REFERENCES_TABLE = 0x00000400L; - const SQL_SR_RESTRICT = 0x00000040L; - const SQL_SR_SELECT_TABLE = 0x00001000L; - const SQL_SR_UPDATE_COLUMN = 0x00004000L; - const SQL_SR_UPDATE_TABLE = 0x00002000L; - const SQL_SR_USAGE_ON_CHARACTER_SET = 0x00000002L; - const SQL_SR_USAGE_ON_COLLATION = 0x00000004L; - const SQL_SR_USAGE_ON_DOMAIN = 0x00000001L; - const SQL_SR_USAGE_ON_TRANSLATION = 0x00000008L; - const SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001L; - const SQL_SRJO_CROSS_JOIN = 0x00000002L; - const SQL_SRJO_EXCEPT_JOIN = 0x00000004L; - const SQL_SRJO_FULL_OUTER_JOIN = 0x00000008L; - const SQL_SRJO_INNER_JOIN = 0x00000010L; - const SQL_SRJO_INTERSECT_JOIN = 0x00000020L; - const SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040L; - const SQL_SRJO_NATURAL_JOIN = 0x00000080L; - const SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100L; - const SQL_SRJO_UNION_JOIN = 0x00000200L; - const SQL_SRVC_DEFAULT = 0x00000004L; - const SQL_SRVC_NULL = 0x00000002L; - const SQL_SRVC_ROW_SUBQUERY = 0x00000008L; - const SQL_SRVC_VALUE_EXPRESSION = 0x00000001L; - const SQL_SSF_CONVERT = 0x00000001L; - const SQL_SSF_LOWER = 0x00000002L; - const SQL_SSF_SUBSTRING = 0x00000008L; - const SQL_SSF_TRANSLATE = 0x00000010L; - const SQL_SSF_TRIM_BOTH = 0x00000020L; - const SQL_SSF_TRIM_LEADING = 0x00000040L; - const SQL_SSF_TRIM_TRAILING = 0x00000080L; - const SQL_SSF_UPPER = 0x00000004L; - const SQL_STANDARD_CLI_CONFORMANCE = 166; - const SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; - const SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; - const SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; - const SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; - const SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; - const SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; - const SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; - const SQL_SVE_CASE = 0x00000001L; - const SQL_SVE_CAST = 0x00000002L; - const SQL_SVE_COALESCE = 0x00000004L; - const SQL_SVE_NULLIF = 0x00000008L; - const SQL_UB_FIXED = SQL_UB_ON; - const SQL_UB_VARIABLE = 2UL; - const SQL_UNION_STATEMENT = SQL_UNION; - const SQL_UPDATE_BY_BOOKMARK = 5; - const SQL_US_UNION = SQL_U_UNION; - const SQL_US_UNION_ALL = SQL_U_UNION_ALL; -}//[Yes] #endif /* ODBCVER >= 0x300 */ -static if (ODBCVER >= 0x0350) { - const SQL_DESC_ROWVER = 35; - const SQL_GUID = -11; - const SQL_C_GUID = SQL_GUID; - //#ifdef ODBC_STD - //#define SQLAllocHandle SQLAllocHandleStd - //#define SQLAllocEnv(p) SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, p) - //#define SQL_YEAR SQL_CODE_YEAR - //#define SQL_MONTH SQL_CODE_MONTH - //#define SQL_DAY SQL_CODE_DAY - //#define SQL_HOUR SQL_CODE_HOUR - //#define SQL_MINUTE SQL_CODE_MINUTE - //#define SQL_SECOND SQL_CODE_SECOND - //#define SQL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH - //#define SQL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR - //#define SQL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE - //#define SQL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND - //#define SQL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE - //#define SQL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND - //#define SQL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND - //#endif /* ODBC_STD */ -}//#endif /* ODBCVER >= 0x0350 */ - -//static if (ODBCVER >= 0x0351) { -const SQL_ATTR_ANSI_APP=115; -const SQL_AA_TRUE=1L; -const SQL_AA_FALSE=0L; -//}//[Yes] #endif - -const TRACE_VERSION=1000; -const TRACE_ON=1; - -const char [] SQL_ODBC_KEYWORDS = - "ABSOLUTE, ACTION, ADA, ADD, ALL, ALLOCATE, ALTER, AND, ANY, ARE, AS, " - ~ "ASC, ASSERTION, AT, AUTHORIZATION, AVG, " - ~ "BEGIN, BETWEEN, BIT, BIT_LENGTH, BOTH, BY, CASCADE, CASCADED, CASE, CAST, CATALOG, " - ~ "CHAR, CHAR_LENGTH, CHARACTER, CHARACTER_LENGTH, CHECK, CLOSE, COALESCE, " - ~ "COLLATE, COLLATION, COLUMN, COMMIT, CONNECT, CONNECTION, CONSTRAINT, " - ~ "CONSTRAINTS, CONTINUE, CONVERT, CORRESPONDING, COUNT, CREATE, CROSS, CURRENT, " - ~ "CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, " - ~ "DATE, DAY, DEALLOCATE, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, " - ~ "DEFERRED, DELETE, DESC, DESCRIBE, DESCRIPTOR, DIAGNOSTICS, DISCONNECT, " - ~ "DISTINCT, DOMAIN, DOUBLE, DROP, " - ~ "ELSE, END, END-EXEC, ESCAPE, EXCEPT, EXCEPTION, EXEC, EXECUTE, " - ~ "EXISTS, EXTERNAL, EXTRACT, " - ~ "FALSE, FETCH, FIRST, FLOAT, FOR, FOREIGN, FORTRAN, FOUND, FROM, FULL, " - ~ "GET, GLOBAL, GO, GOTO, GRANT, GROUP, HAVING, HOUR, " - ~ "IDENTITY, IMMEDIATE, IN, INCLUDE, INDEX, INDICATOR, INITIALLY, INNER, " - ~ "INPUT, INSENSITIVE, INSERT, INT, INTEGER, INTERSECT, INTERVAL, INTO, IS, ISOLATION, " - ~ "JOIN, KEY, LANGUAGE, LAST, LEADING, LEFT, LEVEL, LIKE, LOCAL, LOWER, " - ~ "MATCH, MAX, MIN, MINUTE, MODULE, MONTH, " - ~ "NAMES, NATIONAL, NATURAL, NCHAR, NEXT, NO, NONE, NOT, NULL, NULLIF, NUMERIC, " - ~ "OCTET_LENGTH, OF, ON, ONLY, OPEN, OPTION, OR, ORDER, OUTER, OUTPUT, OVERLAPS, " - ~ "PAD, PARTIAL, PASCAL, PLI, POSITION, PRECISION, PREPARE, PRESERVE, " - ~ "PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC, " - ~ "READ, REAL, REFERENCES, RELATIVE, RESTRICT, REVOKE, RIGHT, ROLLBACK, ROWS" - ~ "SCHEMA, SCROLL, SECOND, SECTION, SELECT, SESSION, SESSION_USER, SET, SIZE, " - ~ "SMALLINT, SOME, SPACE, SQL, SQLCA, SQLCODE, SQLERROR, SQLSTATE, SQLWARNING, " - ~ "SUBSTRING, SUM, SYSTEM_USER, " - ~ "TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, " - ~ "TO, TRAILING, TRANSACTION, TRANSLATE, TRANSLATION, TRIM, TRUE, " - ~ "UNION, UNIQUE, UNKNOWN, UPDATE, UPPER, USAGE, USER, USING, " - ~ "VALUE, VALUES, VARCHAR, VARYING, VIEW, WHEN, WHENEVER, WHERE, WITH, WORK, WRITE, " - ~ "YEAR, ZONE"; -extern (Windows) { - SQLRETURN SQLDriverConnect(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); - SQLRETURN SQLBrowseConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLColumnPrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLColAttributes(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); - SQLRETURN SQLDescribeParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLExtendedFetch(SQLHSTMT, SQLUSMALLINT, SQLINTEGER, SQLUINTEGER*, SQLUSMALLINT*); - SQLRETURN SQLForeignKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLMoreResults(SQLHSTMT); - SQLRETURN SQLNativeSql(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLNumParams(SQLHSTMT, SQLSMALLINT*); - SQLRETURN SQLParamOptions(SQLHSTMT, SQLUINTEGER, SQLUINTEGER*); - SQLRETURN SQLPrimaryKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedureColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedures(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLSetPos(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLTablePrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLDrivers(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLBindParameter(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); - SQLRETURN SQLSetScrollOptions(SQLHSTMT, SQLUSMALLINT, SQLLEN, SQLUSMALLINT);/* deprecated */ - DWORD ODBCGetTryWaitValue(); - BOOL ODBCSetTryWaitValue(DWORD); - RETCODE TraceOpenLogFile(LPWSTR, LPWSTR, DWORD); - RETCODE TraceCloseLogFile(); - VOID TraceReturn(RETCODE, RETCODE); - DWORD TraceVersion(); - //static if (ODBCVER >= 0x0300) { - SQLRETURN SQLBulkOperations(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLAllocHandleStd( SQLSMALLINT, SQLHANDLE, SQLHANDLE*); - //} -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_sqlext.d) + */ +module core.sys.windows.sqlext; + +/* Conversion notes: + The MinGW file was a horrible mess. All of the #defines were sorted alphabetically, + which is crazy. This file needs a lot of work. + In MinGW, sqlext #includes sqlucode, but sqlucode #includes sqlext, + creating a circular dependency! +*/ + +public import core.sys.windows.sql; +private import core.sys.windows.windef; + +const SQL_SPEC_MAJOR = 3; +const SQL_SPEC_MINOR = 51; +const char[] SQL_SPEC_STRING = "03.51"; +const SQL_ACCESS_MODE = 101; +const SQL_ACTIVE_CONNECTIONS = 0; +const SQL_ACTIVE_STATEMENTS = 1; + +const SQL_DATE = 9; +const SQL_TIME = 10; +const SQL_SIGNED_OFFSET = -20; +const SQL_TINYINT = -6; +const SQL_TIMESTAMP = 11; +const SQL_UNSIGNED_OFFSET = -22; + +const SQL_ADD = 4; +const SQL_ALL_EXCEPT_LIKE = 2; + +const SQL_API_ALL_FUNCTIONS = 0; +const SQL_API_SQLCOLATTRIBUTES = 6; +const SQL_API_SQLDRIVERCONNECT = 41; +const SQL_API_SQLBROWSECONNECT = 55; +const SQL_API_SQLCOLUMNPRIVILEGES = 56; +const SQL_API_SQLDESCRIBEPARAM = 58; +const SQL_API_SQLEXTENDEDFETCH = 59; +const SQL_API_SQLFOREIGNKEYS = 60; +const SQL_API_SQLMORERESULTS = 61; +const SQL_API_SQLNATIVESQL = 62; +const SQL_API_SQLNUMPARAMS = 63; +const SQL_API_SQLPARAMOPTIONS = 64; +const SQL_API_SQLPRIMARYKEYS = 65; +const SQL_API_SQLPROCEDURECOLUMNS = 66; +const SQL_API_SQLPROCEDURES = 67; +const SQL_API_SQLSETPOS = 68; +const SQL_API_SQLSETSCROLLOPTIONS = 69; +const SQL_API_SQLTABLEPRIVILEGES = 70; +const SQL_API_SQLDRIVERS = 71; +const SQL_API_SQLBINDPARAMETER = 72; +const SQL_API_LOADBYORDINAL = 199; + +const SQL_ASYNC_ENABLE = 4; +const SQL_ASYNC_ENABLE_OFF = 0UL; +const SQL_ASYNC_ENABLE_ON = 1UL; +const SQL_ASYNC_ENABLE_DEFAULT = SQL_ASYNC_ENABLE_OFF; + +const SQL_ATTR_CONNECTION_DEAD = 1209; +const SQL_ATTR_READONLY = 0; +const SQL_ATTR_READWRITE_UNKNOWN = 2; +const SQL_ATTR_WRITE = 1; + +const SQL_AUTOCOMMIT = 102; +const SQL_AUTOCOMMIT_OFF = 0UL; +const SQL_AUTOCOMMIT_ON = 1UL; +const SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON; +const SQL_BEST_ROWID = 1; +const SQL_BIGINT = -5; +const SQL_BINARY = -2; +const SQL_BIND_BY_COLUMN = 0UL; +const SQL_BIND_TYPE = 5; +const SQL_BIND_TYPE_DEFAULT = SQL_BIND_BY_COLUMN; +const SQL_BIT = -7; + +const SQL_BOOKMARK_PERSISTENCE = 82; + +// for BOOKMARK_PERSISTENCE +const SQL_BP_CLOSE = 1; +const SQL_BP_DELETE = 2; +const SQL_BP_DROP = 4; +const SQL_BP_TRANSACTION = 8; +const SQL_BP_UPDATE = 16; +const SQL_BP_OTHER_HSTMT = 32; +const SQL_BP_SCROLL = 64; + +const SQL_C_BINARY = SQL_BINARY; +const SQL_C_BIT = SQL_BIT; +const SQL_C_CHAR = SQL_CHAR; +const SQL_C_DATE = SQL_DATE; +const SQL_C_DOUBLE = SQL_DOUBLE; +const SQL_C_FLOAT = SQL_REAL; +const SQL_C_LONG = SQL_INTEGER; +const SQL_C_SHORT = SQL_SMALLINT; +const SQL_C_SLONG = SQL_C_LONG+SQL_SIGNED_OFFSET; +const SQL_C_SSHORT = SQL_C_SHORT+SQL_SIGNED_OFFSET; +const SQL_C_STINYINT = SQL_TINYINT+SQL_SIGNED_OFFSET; +const SQL_C_TIME = SQL_TIME; +const SQL_C_TIMESTAMP = SQL_TIMESTAMP; +const SQL_C_TINYINT = SQL_TINYINT; +const SQL_C_ULONG = SQL_C_LONG+SQL_UNSIGNED_OFFSET; +const SQL_C_USHORT = SQL_C_SHORT+SQL_UNSIGNED_OFFSET; +const SQL_C_UTINYINT = SQL_TINYINT+SQL_UNSIGNED_OFFSET; +const SQL_C_BOOKMARK = SQL_C_ULONG; +const SQL_C_DEFAULT = 99; + +const SQL_CASCADE = 0; +const SQL_CB_NON_NULL = 1; +const SQL_CB_NULL = 0; +deprecated { +const SQL_CC_CLOSE = SQL_CB_CLOSE;/* deprecated */ +const SQL_CC_DELETE = SQL_CB_DELETE;/* deprecated */ +const SQL_CC_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ +} +const SQL_CD_FALSE = 0L; +const SQL_CD_TRUE = 1L; + +const SQL_CN_ANY = 2; +const SQL_CN_DIFFERENT = 1; +const SQL_CN_NONE = 0; + +const SQL_COLUMN_ALIAS = 87; + +const SQL_COLUMN_COUNT = 0; +const SQL_COLUMN_NAME = 1; +const SQL_COLUMN_DISPLAY_SIZE = 6; +const SQL_COLUMN_LABEL = 18; +const SQL_COLUMN_LENGTH = 3; +const SQL_COLUMN_MONEY = 9; +const SQL_COLUMN_NULLABLE = 7; +const SQL_COLUMN_OWNER_NAME = 16; +const SQL_COLUMN_PRECISION = 4; +const SQL_COLUMN_QUALIFIER_NAME = 17; +const SQL_COLUMN_SCALE = 5; +const SQL_COLUMN_UNSIGNED = 8; +const SQL_COLUMN_UPDATABLE = 10; +const SQL_COLUMN_AUTO_INCREMENT = 11; +const SQL_COLUMN_CASE_SENSITIVE = 12; +const SQL_COLUMN_SEARCHABLE = 13; +const SQL_COLUMN_TYPE = 2; +const SQL_COLUMN_TYPE_NAME = 14; +const SQL_COLUMN_TABLE_NAME = 15; + +const SQL_CONCAT_NULL_BEHAVIOR = 22; + +const SQL_CONCUR_READ_ONLY = 1; +const SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; +const SQL_CONCUR_LOCK = 2; +const SQL_CONCUR_ROWVER = 3; +const SQL_CONCUR_TIMESTAMP = SQL_CONCUR_ROWVER;/* deprecated */ +const SQL_CONCUR_VALUES = 4; + +const SQL_CONCURRENCY = 7; +const SQL_CONVERT_BIGINT = 53; +const SQL_CONVERT_BINARY = 54; +const SQL_CONVERT_BIT = 55; +const SQL_CONVERT_CHAR = 56; +const SQL_CONVERT_DATE = 57; +const SQL_CONVERT_DECIMAL = 58; +const SQL_CONVERT_DOUBLE = 59; +const SQL_CONVERT_FLOAT = 60; +const SQL_CONVERT_FUNCTIONS = 48; +const SQL_CONVERT_INTEGER = 61; +const SQL_CONVERT_LONGVARBINARY = 71; +const SQL_CONVERT_LONGVARCHAR = 62; +const SQL_CONVERT_NUMERIC = 63; +const SQL_CONVERT_REAL = 64; +const SQL_CONVERT_SMALLINT = 65; +const SQL_CONVERT_TIME = 66; +const SQL_CONVERT_TIMESTAMP = 67; +const SQL_CONVERT_TINYINT = 68; +const SQL_CONVERT_VARBINARY = 69; +const SQL_CONVERT_VARCHAR = 70; +const SQL_CORRELATION_NAME = 74; +const SQL_CR_CLOSE = SQL_CB_CLOSE;/* deprecated */ +const SQL_CR_DELETE = SQL_CB_DELETE;/* deprecated */ +const SQL_CR_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ + +enum : ULONG { + SQL_CUR_USE_IF_NEEDED = 0, + SQL_CUR_USE_ODBC, + SQL_CUR_USE_DRIVER, + SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER +} + +const SQL_CURRENT_QUALIFIER = 109; +const SQL_CURSOR_DYNAMIC = 2UL; +const SQL_CURSOR_FORWARD_ONLY = 0UL; +const SQL_CURSOR_KEYSET_DRIVEN = 1UL; +const SQL_CURSOR_ROLLBACK_BEHAVIOR = 24; +const SQL_CURSOR_STATIC = 3UL; +const SQL_CURSOR_TYPE = 6; +const SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY; + +const SQL_CV_CASCADED = 0x00000004L; +const SQL_CV_CHECK_OPTION = 0x00000002L; +const SQL_CV_CREATE_VIEW = 0x00000001L; +const SQL_CV_LOCAL = 0x00000008L; +const SQL_CVT_BIGINT = 0x00004000L; +const SQL_CVT_BINARY = 0x00000400L; +const SQL_CVT_BIT = 0x00001000L; +const SQL_CVT_CHAR = 0x00000001L; +const SQL_CVT_DATE = 0x00008000L; +const SQL_CVT_DECIMAL = 0x00000004L; +const SQL_CVT_DOUBLE = 0x00000080L; +const SQL_CVT_FLOAT = 0x00000020L; +const SQL_CVT_INTEGER = 0x00000008L; +const SQL_CVT_LONGVARBINARY = 0x00040000L; +const SQL_CVT_LONGVARCHAR = 0x00000200L; +const SQL_CVT_NUMERIC = 0x00000002L; +const SQL_CVT_REAL = 0x00000040L; +const SQL_CVT_SMALLINT = 0x00000010L; +const SQL_CVT_TIME = 0x00010000L; +const SQL_CVT_TIMESTAMP = 0x00020000L; +const SQL_CVT_TINYINT = 0x00002000L; +const SQL_CVT_VARBINARY = 0x00000800L; +const SQL_CVT_VARCHAR = 0x00000100L; +const SQL_DATABASE_NAME = 16;/* deprecated */ + +const SQL_DEFAULT_PARAM = -5; +const SQL_DELETE = 3; + +const SQL_DRIVER_COMPLETE = 1; +const SQL_DRIVER_COMPLETE_REQUIRED = 3; +const SQL_DRIVER_HDBC = 3; +const SQL_DRIVER_HENV = 4; +const SQL_DRIVER_HLIB = 76; +const SQL_DRIVER_HSTMT = 5; +const SQL_DRIVER_NAME = 6; +const SQL_DRIVER_NOPROMPT = 0; +const SQL_DRIVER_ODBC_VER = 77; +const SQL_DRIVER_PROMPT = 2; +const SQL_DRIVER_VER = 7; + +const SQL_DTC_ENLIST_EXPENSIVE = 1; +const SQL_DTC_UNENLIST_EXPENSIVE = 2; +const SQL_DTC_TRANSITION_COST = 1750; +const SQL_ENSURE = 1; +const SQL_ENTIRE_ROWSET = 0; +const SQL_EXPRESSIONS_IN_ORDERBY = 27; +const SQL_FD_FETCH_BOOKMARK = 128; +const SQL_FD_FETCH_PREV = SQL_FD_FETCH_PRIOR;/* deprecated */ +const SQL_FD_FETCH_RESUME = 64; +const SQL_FETCH_BOOKMARK = 8; +const SQL_FETCH_PREV = SQL_FETCH_PRIOR;/* deprecated */ +const SQL_FETCH_RESUME = 7;/* deprecated */ + +const SQL_FILE_NOT_SUPPORTED = 0x0000; +const SQL_FILE_TABLE = 0x0001; +const SQL_FILE_QUALIFIER = 0x0002; +const SQL_FILE_CATALOG = SQL_FILE_QUALIFIER; +const SQL_FILE_USAGE = 84; + +const SQL_FN_CVT_CONVERT = 0x00000001L; +const SQL_FN_NUM_ABS = 0x00000001L; +const SQL_FN_NUM_ACOS = 0x00000002L; +const SQL_FN_NUM_ASIN = 0x00000004L; +const SQL_FN_NUM_ATAN = 0x00000008L; +const SQL_FN_NUM_ATAN2 = 0x00000010L; +const SQL_FN_NUM_CEILING = 0x00000020L; +const SQL_FN_NUM_COS = 0x00000040L; +const SQL_FN_NUM_COT = 0x00000080L; +const SQL_FN_NUM_DEGREES = 0x00040000L; +const SQL_FN_NUM_EXP = 0x00000100L; +const SQL_FN_NUM_FLOOR = 0x00000200L; +const SQL_FN_NUM_LOG = 0x00000400L; +const SQL_FN_NUM_LOG10 = 0x00080000L; +const SQL_FN_NUM_MOD = 0x00000800L; +const SQL_FN_NUM_PI = 0x00010000L; +const SQL_FN_NUM_POWER = 0x00100000L; +const SQL_FN_NUM_RADIANS = 0x00200000L; +const SQL_FN_NUM_RAND = 0x00020000L; +const SQL_FN_NUM_ROUND = 0x00400000L; +const SQL_FN_NUM_SIGN = 0x00001000L; +const SQL_FN_NUM_SIN = 0x00002000L; +const SQL_FN_NUM_SQRT = 0x00004000L; +const SQL_FN_NUM_TAN = 0x00008000L; +const SQL_FN_NUM_TRUNCATE = 0x00800000L; +const SQL_FN_STR_ASCII = 0x00002000L; +const SQL_FN_STR_CHAR = 0x00004000L; +const SQL_FN_STR_CONCAT = 0x00000001L; +const SQL_FN_STR_DIFFERENCE = 0x00008000L; +const SQL_FN_STR_INSERT = 0x00000002L; +const SQL_FN_STR_LCASE = 0x00000040L; +const SQL_FN_STR_LEFT = 0x00000004L; +const SQL_FN_STR_LENGTH = 0x00000010L; +const SQL_FN_STR_LOCATE = 0x00000020L; +const SQL_FN_STR_LOCATE_2 = 0x00010000L; +const SQL_FN_STR_LTRIM = 0x00000008L; +const SQL_FN_STR_REPEAT = 0x00000080L; +const SQL_FN_STR_REPLACE = 0x00000100L; +const SQL_FN_STR_RIGHT = 0x00000200L; +const SQL_FN_STR_RTRIM = 0x00000400L; +const SQL_FN_STR_SOUNDEX = 0x00020000L; +const SQL_FN_STR_SPACE = 0x00040000L; +const SQL_FN_STR_SUBSTRING = 0x00000800L; +const SQL_FN_STR_UCASE = 0x00001000L; +const SQL_FN_SYS_DBNAME = 0x00000002L; +const SQL_FN_SYS_IFNULL = 0x00000004L; +const SQL_FN_SYS_USERNAME = 0x00000001L; +const SQL_FN_TD_CURDATE = 0x00000002L; +const SQL_FN_TD_CURTIME = 0x00000200L; +const SQL_FN_TD_DAYNAME = 0x00008000L; +const SQL_FN_TD_DAYOFMONTH = 0x00000004L; +const SQL_FN_TD_DAYOFWEEK = 0x00000008L; +const SQL_FN_TD_DAYOFYEAR = 0x00000010L; +const SQL_FN_TD_HOUR = 0x00000400L; +const SQL_FN_TD_MINUTE = 0x00000800L; +const SQL_FN_TD_MONTH = 0x00000020L; +const SQL_FN_TD_MONTHNAME = 0x00010000L; +const SQL_FN_TD_NOW = 0x00000001L; +const SQL_FN_TD_QUARTER = 0x00000040L; +const SQL_FN_TD_SECOND = 0x00001000L; +const SQL_FN_TD_TIMESTAMPADD = 0x00002000L; +const SQL_FN_TD_TIMESTAMPDIFF = 0x00004000L; +const SQL_FN_TD_WEEK = 0x00000080L; +const SQL_FN_TD_YEAR = 0x00000100L; +const SQL_FN_TSI_DAY = 0x00000010L; +const SQL_FN_TSI_FRAC_SECOND = 0x00000001L; +const SQL_FN_TSI_HOUR = 0x00000008L; +const SQL_FN_TSI_MINUTE = 0x00000004L; +const SQL_FN_TSI_MONTH = 0x00000040L; +const SQL_FN_TSI_QUARTER = 0x00000080L; +const SQL_FN_TSI_SECOND = 0x00000002L; +const SQL_FN_TSI_WEEK = 0x00000020L; +const SQL_FN_TSI_YEAR = 0x00000100L; +const SQL_GB_GROUP_BY_CONTAINS_SELECT = 2; +const SQL_GB_GROUP_BY_EQUALS_SELECT = 1; +const SQL_GB_NO_RELATION = 3; +const SQL_GB_NOT_SUPPORTED = 0; +const SQL_GD_BLOCK = 4; +const SQL_GD_BOUND = 8; +const SQL_GET_BOOKMARK = 13; +const SQL_GROUP_BY = 88; +const SQL_IGNORE = -6; +const SQL_INFO_FIRST = 0; +const SQL_KEYSET_SIZE = 8; +const SQL_KEYSET_SIZE_DEFAULT = 0UL; +const SQL_KEYWORDS = 89; +const SQL_LCK_EXCLUSIVE = 2; +const SQL_LCK_NO_CHANGE = 1; +const SQL_LCK_UNLOCK = 4; + +const SQL_LEN_BINARY_ATTR_OFFSET = -100; +const SQL_LEN_DATA_AT_EXEC_OFFSET = -100; +//MACRO #define SQL_LEN_BINARY_ATTR(length) (-(length)+SQL_LEN_BINARY_ATTR_OFFSET) +//MACRO #define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) + +const SQL_LIKE_ESCAPE_CLAUSE = 113; +const SQL_LIKE_ONLY = 1; +const SQL_LOCK_EXCLUSIVE = 1; +const SQL_LOCK_NO_CHANGE = 0; +const SQL_LOCK_TYPES = 78; +const SQL_LOCK_UNLOCK = 2; +const SQL_LOGIN_TIMEOUT = 103; +const SQL_LOGIN_TIMEOUT_DEFAULT = 15UL; +const SQL_LONGVARBINARY = -4; +const SQL_LONGVARCHAR = -1; +const SQL_MAX_BINARY_LITERAL_LEN = 112; +const SQL_MAX_CHAR_LITERAL_LEN = 108; +const SQL_MAX_DSN_LENGTH = 32; +const SQL_MAX_LENGTH = 3; +const SQL_MAX_LENGTH_DEFAULT = 0UL; +const SQL_MAX_OPTION_STRING_LENGTH = 256; +const SQL_MAX_OWNER_NAME_LEN = 32; +const SQL_MAX_PROCEDURE_NAME_LEN = 33; +const SQL_MAX_QUALIFIER_NAME_LEN = 34; +const SQL_MAX_ROW_SIZE_INCLUDES_LONG = 103; +const SQL_MAX_ROWS = 1; +const SQL_MAX_ROWS_DEFAULT = 0UL; + +const SQL_MODE_READ_WRITE = 0UL; +const SQL_MODE_READ_ONLY = 1UL; +const SQL_MODE_DEFAULT = SQL_MODE_READ_WRITE; + +const SQL_MULT_RESULT_SETS = 36; +const SQL_MULTIPLE_ACTIVE_TXN = 37; +const SQL_NC_END = 0x0004; +const SQL_NC_START = 0x0002; +const SQL_NEED_LONG_DATA_LEN = 111; +const SQL_NNC_NON_NULL = 0x0001; +const SQL_NNC_NULL = 0x0000; +const SQL_NO_TOTAL = -4; +const SQL_NON_NULLABLE_COLUMNS = 75; + +const SQL_NOSCAN_OFF = 0UL; +const SQL_NOSCAN_ON = 1UL; +const SQL_NOSCAN = 2; +const SQL_NOSCAN_DEFAULT = SQL_NOSCAN_OFF; + +const SQL_NUMERIC_FUNCTIONS = 49; +const SQL_OAC_LEVEL1 = 0x0001; +const SQL_OAC_LEVEL2 = 0x0002; +const SQL_OAC_NONE = 0x0000; +const SQL_ODBC_API_CONFORMANCE = 9; +const SQL_ODBC_CURSORS = 110; +const SQL_ODBC_SAG_CLI_CONFORMANCE = 12; +const SQL_ODBC_SQL_CONFORMANCE = 15; +const SQL_ODBC_SQL_OPT_IEF = 73; +const SQL_ODBC_VER = 10; +const SQL_OPT_TRACE = 104; + +const SQL_OPT_TRACE_FILE_DEFAULT = "\\SQL.LOG"; +const SQL_OPT_TRACE_OFF = 0UL; +const SQL_OPT_TRACE_DEFAULT = SQL_OPT_TRACE_OFF; +const SQL_OPT_TRACE_ON = 1UL; + +const SQL_OPT_TRACEFILE = 105; +const SQL_OSC_CORE = 1; +const SQL_OSC_EXTENDED = 2; +const SQL_OSC_MINIMUM = 0; +const SQL_OSCC_COMPLIANT = 1; +const SQL_OSCC_NOT_COMPLIANT = 0; +const SQL_OU_DML_STATEMENTS = 1; +const SQL_OU_INDEX_DEFINITION = 8; +const SQL_OU_PRIVILEGE_DEFINITION = 16; +const SQL_OU_PROCEDURE_INVOCATION = 2; +const SQL_OU_TABLE_DEFINITION = 4; +const SQL_OUTER_JOINS = 38; +const SQL_OWNER_TERM = 39; +const SQL_OWNER_USAGE = 91; +const SQL_PACKET_SIZE = 112; +const SQL_PARAM_INPUT = 1; +const SQL_PARAM_INPUT_OUTPUT = 2; +const SQL_PARAM_OUTPUT = 4; +const SQL_PARAM_TYPE_DEFAULT = SQL_PARAM_INPUT_OUTPUT; +const SQL_PARAM_TYPE_UNKNOWN = 0; +const SQL_PC_NOT_PSEUDO = 1; +const SQL_POS_ADD = 16; +const SQL_POS_DELETE = 8; +const SQL_POS_OPERATIONS = 79; +const SQL_POS_POSITION = 1; +const SQL_POS_REFRESH = 2; +const SQL_POS_UPDATE = 4; +const SQL_POSITION = 0; +const SQL_POSITIONED_STATEMENTS = 80; +const SQL_PROCEDURE_TERM = 40; +const SQL_PROCEDURES = 21; +const SQL_PS_POSITIONED_DELETE = 1; +const SQL_PS_POSITIONED_UPDATE = 2; +const SQL_PS_SELECT_FOR_UPDATE = 4; +const SQL_PT_FUNCTION = 2; +const SQL_PT_PROCEDURE = 1; +const SQL_PT_UNKNOWN = 0; +const SQL_QL_END = 0x0002; +const SQL_QL_START = 0x0001; +const SQL_QU_DML_STATEMENTS = 1; +const SQL_QU_INDEX_DEFINITION = 8; +const SQL_QU_PRIVILEGE_DEFINITION = 16; +const SQL_QU_PROCEDURE_INVOCATION = 2; +const SQL_QU_TABLE_DEFINITION = 4; +const SQL_QUALIFIER_LOCATION = 114; +const SQL_QUALIFIER_NAME_SEPARATOR = 41; +const SQL_QUALIFIER_TERM = 42; +const SQL_QUALIFIER_USAGE = 92; +const SQL_QUERY_TIMEOUT = 0; +const SQL_QUERY_TIMEOUT_DEFAULT = 0UL; +const SQL_QUICK = 0; +const SQL_QUIET_MODE = 111; +const SQL_QUOTED_IDENTIFIER_CASE = 93; + +const SQL_RD_OFF = 0UL; +const SQL_RD_ON = 1UL; +const SQL_RD_DEFAULT = SQL_RD_ON; + +const SQL_REFRESH = 1; +const SQL_RESTRICT = 1; +const SQL_RESULT_COL = 3; +const SQL_RETRIEVE_DATA = 11; +const SQL_RETURN_VALUE = 5; +const SQL_ROW_ADDED = 4; +const SQL_ROW_DELETED = 1; +const SQL_ROW_ERROR = 5; +const SQL_ROW_NOROW = 3; +const SQL_ROW_NUMBER = 14; +const SQL_ROW_SUCCESS = 0; +const SQL_ROW_UPDATED = 2; +const SQL_ROW_UPDATES = 11; +const SQL_ROWSET_SIZE = 9; +const SQL_ROWSET_SIZE_DEFAULT = 1UL; +const SQL_ROWVER = 2; +const SQL_SC_NON_UNIQUE = 0UL; +const SQL_SC_TRY_UNIQUE = 1UL; +const SQL_SC_UNIQUE = 2UL; +const SQL_SCCO_OPT_TIMESTAMP = SQL_SCCO_OPT_ROWVER;/* deprecated */ +const SQL_SCROLL_DYNAMIC = -2L;/* deprecated */ +const SQL_SCROLL_FORWARD_ONLY = 0L;/* deprecated */ +const SQL_SCROLL_KEYSET_DRIVEN = -1L;/* deprecated */ +const SQL_SCROLL_OPTIONS = 44; +const SQL_SCROLL_STATIC = -3L;/* deprecated */ +const SQL_SEARCHABLE = 3; +const SQL_SET_NULL = 2; +const SQL_SETPARAM_VALUE_MAX = -1L; +const SQL_SETPOS_MAX_LOCK_VALUE = SQL_LOCK_UNLOCK; +const SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD; +const SQL_SIMULATE_CURSOR = 10; +const SQL_SO_DYNAMIC = 4; +const SQL_SO_FORWARD_ONLY = 1; +const SQL_SO_KEYSET_DRIVEN = 2; +const SQL_SO_MIXED = 8; +const SQL_SO_STATIC = 16; +const SQL_SQ_COMPARISON = 1; +const SQL_SQ_CORRELATED_SUBQUERIES = 16; +const SQL_SQ_EXISTS = 2; +const SQL_SQ_IN = 4; +const SQL_SQ_QUANTIFIED = 8; +const SQL_SQLSTATE_SIZE = 5; +const SQL_SS_ADDITIONS = 1; +const SQL_SS_DELETIONS = 2; +const SQL_SS_UPDATES = 4; +const SQL_STATIC_SENSITIVITY = 83; +const SQL_STRING_FUNCTIONS = 50; +const SQL_SUBQUERIES = 95; +const SQL_SYSTEM_FUNCTIONS = 51; +const SQL_TABLE_STAT = 0; +const SQL_TABLE_TERM = 45; +const SQL_TIMEDATE_ADD_INTERVALS = 109; +const SQL_TIMEDATE_DIFF_INTERVALS = 110; +const SQL_TIMEDATE_FUNCTIONS = 52; +const SQL_TRANSLATE_DLL = 106; +const SQL_TRANSLATE_OPTION = 107; +const SQL_TXN_ISOLATION = 108; +const SQL_TXN_VERSIONING = 16; +const SQL_TYPE_NULL = 0; +const SQL_U_UNION = 1; +const SQL_U_UNION_ALL = 2; + +const SQL_UB_OFF = 0UL; +const SQL_UB_DEFAULT = SQL_UB_OFF; +const SQL_UB_ON = 01UL; + +const SQL_UNION = 96; +const SQL_UNSEARCHABLE = 0; +const SQL_UPDATE = 2; +const SQL_USE_BOOKMARKS = 12; +const SQL_VARBINARY = -3; + +const SQL_COLATT_OPT_MAX = SQL_COLUMN_LABEL; +const SQL_COLATT_OPT_MIN = SQL_COLUMN_COUNT; +const SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; + +//MACRO #define SQL_POSITION_TO(s, r) SQLSetPos(s, r, SQL_POSITION, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_LOCK_RECORD(s, r, l) SQLSetPos(s, r, SQL_POSITION, l) + +//MACRO #define SQL_REFRESH_RECORD(s, r, l) SQLSetPos(s, r, SQL_REFRESH, l) + +//MACRO #define SQL_UPDATE_RECORD(s, r) SQLSetPos(s, r, SQL_UPDATE, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_DELETE_RECORD(s, r) SQLSetPos(s, r, SQL_DELETE, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_ADD_RECORD(s, r) SQLSetPos(s, r, SQL_ADD, SQL_LOCK_NO_CHANGE) + + +static if (ODBCVER < 0x0300) { + const SQL_CONNECT_OPT_DRVR_START = 1000; + const SQL_CONN_OPT_MAX = SQL_PACKET_SIZE; + const SQL_CONN_OPT_MIN = SQL_ACCESS_MODE; + const SQL_STMT_OPT_MAX = SQL_ROW_NUMBER; + const SQL_STMT_OPT_MIN = SQL_QUERY_TIMEOUT; + const SQL_TYPE_DRIVER_START = SQL_INTERVAL_YEAR; + const SQL_TYPE_DRIVER_END = SQL_UNICODE_LONGVARCHAR; + const SQL_TYPE_MIN = SQL_BIT; + const SQL_TYPE_MAX = SQL_VARCHAR; +} + +static if (ODBCVER < 0x0300) { + const SQL_NO_DATA_FOUND = 100; + const SQL_INTERVAL_YEAR = -80; + const SQL_INTERVAL_MONTH = -81; + const SQL_INTERVAL_YEAR_TO_MONTH = -82; + const SQL_INTERVAL_DAY = -83; + const SQL_INTERVAL_HOUR = -84; + const SQL_INTERVAL_MINUTE = -85; + const SQL_INTERVAL_SECOND = -86; + const SQL_INTERVAL_DAY_TO_HOUR = -87; + const SQL_INTERVAL_DAY_TO_MINUTE = -88; + const SQL_INTERVAL_DAY_TO_SECOND = -89; + const SQL_INTERVAL_HOUR_TO_MINUTE = -90; + const SQL_INTERVAL_HOUR_TO_SECOND = -91; + const SQL_INTERVAL_MINUTE_TO_SECOND = -92; +} else { + const SQL_NO_DATA_FOUND = SQL_NO_DATA; + const SQL_CODE_YEAR = 1; + const SQL_CODE_MONTH = 2; + const SQL_CODE_DAY = 3; + const SQL_CODE_HOUR = 4; + const SQL_CODE_MINUTE = 5; + const SQL_CODE_SECOND = 6; + const SQL_CODE_YEAR_TO_MONTH = 7; + const SQL_CODE_DAY_TO_HOUR = 8; + const SQL_CODE_DAY_TO_MINUTE = 9; + const SQL_CODE_DAY_TO_SECOND = 10; + const SQL_CODE_HOUR_TO_MINUTE = 11; + const SQL_CODE_HOUR_TO_SECOND = 12; + const SQL_CODE_MINUTE_TO_SECOND = 13; + const SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR; + const SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH; + const SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY; + const SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR; + const SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE; + const SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND; + const SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH; + const SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR; + const SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE; + const SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND; + const SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE; + const SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND; + const SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND; +}//[Yes] #endif + + +static if ((ODBCVER >= 0x0201) && (ODBCVER < 0x0300)) { + const SQL_OJ_CAPABILITIES = 65003; +} + +static if (ODBCVER >= 0x0250) { + const SQL_NO_ACTION = 3; + const SQL_SET_DEFAULT = 4; +} + +static if (ODBCVER >= 0x0300) { + const SQL_ACTIVE_ENVIRONMENTS = 116; + const SQL_AD_ADD_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_AD_ADD_DOMAIN_CONSTRAINT = 0x00000002L; + const SQL_AD_ADD_DOMAIN_DEFAULT = 0x00000008L; + const SQL_AD_CONSTRAINT_NAME_DEFINITION = 0x00000001L; + const SQL_AD_DROP_DOMAIN_CONSTRAINT = 0x00000004L; + const SQL_AD_DROP_DOMAIN_DEFAULT = 0x00000010L; + const SQL_AF_ALL = 0x00000040L; + const SQL_AF_AVG = 0x00000001L; + const SQL_AF_COUNT = 0x00000002L; + const SQL_AF_DISTINCT = 0x00000020L; + const SQL_AF_MAX = 0x00000004L; + const SQL_AF_MIN = 0x00000008L; + const SQL_AF_SUM = 0x00000010L; + const SQL_AGGREGATE_FUNCTIONS = 169; + const SQL_ALL_CATALOGS = "%"; + const SQL_ALL_SCHEMAS = "%"; + const SQL_ALL_TABLE_TYPES = "%"; + const SQL_ALTER_DOMAIN = 117; + const SQL_AM_CONNECTION = 1; + const SQL_AM_NONE = 0; + const SQL_AM_STATEMENT = 2; + const SQL_API_ODBC3_ALL_FUNCTIONS = 999; + const SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; + const SQL_API_SQLALLOCHANDLESTD = 73; + const SQL_API_SQLBULKOPERATIONS = 24; + const SQL_ASYNC_MODE = 10021; + const SQL_AT_ADD_COLUMN_COLLATION = 0x00000080L; + const SQL_AT_ADD_COLUMN_DEFAULT = 0x00000040L; + const SQL_AT_ADD_COLUMN_SINGLE = 0x00000020L; + const SQL_AT_ADD_TABLE_CONSTRAINT = 0x00001000L; + const SQL_AT_CONSTRAINT_DEFERRABLE = 0x00040000L; + const SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = 0x00010000L; + const SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00020000L; + const SQL_AT_CONSTRAINT_NAME_DEFINITION = 0x00008000L; + const SQL_AT_CONSTRAINT_NON_DEFERRABLE = 0x00080000L; + const SQL_AT_DROP_COLUMN_CASCADE = 0x00000400L; + const SQL_AT_DROP_COLUMN_DEFAULT = 0x00000200L; + const SQL_AT_DROP_COLUMN_RESTRICT = 0x00000800L; + const SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = 0x00002000L; + const SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = 0x00004000L; + const SQL_AT_SET_COLUMN_DEFAULT = 0x00000100L; + const SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; + const SQL_ATTR_ASYNC_ENABLE = 4; + const SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; + const SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; + const SQL_ATTR_CONNECTION_POOLING = 201; + const SQL_ATTR_CONNECTION_TIMEOUT = 113; + const SQL_ATTR_CP_MATCH = 202; + const SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; + const SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; + const SQL_ATTR_DISCONNECT_BEHAVIOR = 114; + const SQL_ATTR_ENABLE_AUTO_IPD = 15; + const SQL_ATTR_ENLIST_IN_DTC = 1207; + const SQL_ATTR_ENLIST_IN_XA = 1208; + const SQL_ATTR_FETCH_BOOKMARK_PTR = 16; + const SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; + const SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; + const SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; + const SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; + const SQL_ATTR_NOSCAN = SQL_NOSCAN; + const SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; + const SQL_ATTR_ODBC_VERSION = 200; + const SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; + const SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; + const SQL_ATTR_PARAM_BIND_TYPE = 18; + const SQL_ATTR_PARAM_OPERATION_PTR = 19; + const SQL_ATTR_PARAM_STATUS_PTR = 20; + const SQL_ATTR_PARAMS_PROCESSED_PTR = 21; + const SQL_ATTR_PARAMSET_SIZE = 22; + const SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; + const SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; + const SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; + const SQL_ATTR_ROW_ARRAY_SIZE = 27; + const SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; + const SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; + const SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; + const SQL_ATTR_ROW_OPERATION_PTR = 24; + const SQL_ATTR_ROW_STATUS_PTR = 25; + const SQL_ATTR_ROWS_FETCHED_PTR = 26; + const SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; + const SQL_ATTR_TRACE = SQL_OPT_TRACE; + const SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; + const SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; + const SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; + const SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; + const SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; + const SQL_BATCH_ROW_COUNT = 120; + const SQL_BATCH_SUPPORT = 121; + const SQL_BRC_EXPLICIT = 0x0000002; + const SQL_BRC_PROCEDURES = 0x0000001; + const SQL_BRC_ROLLED_UP = 0x0000004; + const SQL_BS_ROW_COUNT_EXPLICIT = 0x00000002L; + const SQL_BS_ROW_COUNT_PROC = 0x00000008L; + const SQL_BS_SELECT_EXPLICIT = 0x00000001L; + const SQL_BS_SELECT_PROC = 0x00000004L; + const SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; + const SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; + const SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; + const SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; + const SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; + const SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; + const SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; + const SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; + const SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; + const SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; + const SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; + const SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; + const SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; + const SQL_C_NUMERIC = SQL_NUMERIC; + const SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; + const SQL_C_TYPE_DATE = SQL_TYPE_DATE; + const SQL_C_TYPE_TIME = SQL_TYPE_TIME; + const SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; + const SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; + const SQL_C_VARBOOKMARK = SQL_C_BINARY; + const SQL_CA_CONSTRAINT_DEFERRABLE = 0x00000040L; + const SQL_CA_CONSTRAINT_INITIALLY_DEFERRED = 0x00000010L; + const SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000020L; + const SQL_CA_CONSTRAINT_NON_DEFERRABLE = 0x00000080L; + const SQL_CA_CREATE_ASSERTION = 0x00000001L; + const SQL_CA1_ABSOLUTE = 0x00000002L; + const SQL_CA1_BOOKMARK = 0x00000008L; + const SQL_CA1_BULK_ADD = 0x00010000L; + const SQL_CA1_BULK_DELETE_BY_BOOKMARK = 0x00040000L; + const SQL_CA1_BULK_FETCH_BY_BOOKMARK = 0x00080000L; + const SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 0x00020000L; + const SQL_CA1_LOCK_EXCLUSIVE = 0x00000080L; + const SQL_CA1_LOCK_NO_CHANGE = 0x00000040L; + const SQL_CA1_LOCK_UNLOCK = 0x00000100L; + const SQL_CA1_NEXT = 0x00000001L; + const SQL_CA1_POS_DELETE = 0x00000800L; + const SQL_CA1_POS_POSITION = 0x00000200L; + const SQL_CA1_POS_REFRESH = 0x00001000L; + const SQL_CA1_POS_UPDATE = 0x00000400L; + const SQL_CA1_POSITIONED_DELETE = 0x00004000L; + const SQL_CA1_POSITIONED_UPDATE = 0x00002000L; + const SQL_CA1_RELATIVE = 0x00000004L; + const SQL_CA1_SELECT_FOR_UPDATE = 0x00008000L; + const SQL_CA2_CRC_APPROXIMATE = 0x00002000L; + const SQL_CA2_CRC_EXACT = 0x00001000L; + const SQL_CA2_LOCK_CONCURRENCY = 0x00000002L; + + const SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L; + const SQL_CA2_MAX_ROWS_DELETE = 0x00000200L; + const SQL_CA2_MAX_ROWS_INSERT = 0x00000100L; + const SQL_CA2_MAX_ROWS_SELECT = 0x00000080L; + const SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L; + const SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | + SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG; + + const SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L; + const SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L; + const SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L; + const SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L; + const SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L; + const SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L; + const SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L; + const SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L; + const SQL_CA2_SIMULATE_UNIQUE = 0x00010000L; + const SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; + const SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; + const SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; + const SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; + const SQL_CCOL_CREATE_COLLATION = 0x00000001L; + const SQL_CCS_COLLATE_CLAUSE = 0x00000002L; + const SQL_CCS_CREATE_CHARACTER_SET = 0x00000001L; + const SQL_CCS_LIMITED_COLLATION = 0x00000004L; + const SQL_CDO_COLLATION = 0x00000008L; + const SQL_CDO_CONSTRAINT = 0x00000004L; + const SQL_CDO_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_CDO_CONSTRAINT_NAME_DEFINITION = 0x00000010L; + const SQL_CDO_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_CDO_CREATE_DOMAIN = 0x00000001L; + const SQL_CDO_DEFAULT = 0x00000002L; + const SQL_CL_END = SQL_QL_END; + const SQL_CL_START = SQL_QL_START; + const SQL_COL_PRED_BASIC = SQL_ALL_EXCEPT_LIKE; + const SQL_COL_PRED_CHAR = SQL_LIKE_ONLY; + const SQL_COLUMN_DRIVER_START = 1000; + const SQL_COLUMN_IGNORE = SQL_IGNORE; + const SQL_COLUMN_NUMBER_UNKNOWN = -2; + const SQL_CONVERT_GUID = 173; + + const SQL_CONVERT_WCHAR = 122; + const SQL_CONVERT_INTERVAL_DAY_TIME = 123; + const SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; + const SQL_CONVERT_WLONGVARCHAR = 125; + const SQL_CONVERT_WVARCHAR = 126; + + const SQL_CREATE_ASSERTION = 127; + const SQL_CREATE_CHARACTER_SET = 128; + const SQL_CREATE_COLLATION = 129; + const SQL_CREATE_DOMAIN = 130; + const SQL_CREATE_SCHEMA = 131; + const SQL_CREATE_TABLE = 132; + const SQL_CREATE_TRANSLATION = 133; + const SQL_CREATE_VIEW = 134; + + + const SQL_CP_OFF = 0UL; + const SQL_CP_DEFAULT = SQL_CP_OFF; + const SQL_CP_ONE_PER_DRIVER = 1UL; + const SQL_CP_ONE_PER_HENV = 2UL; + + const SQL_CP_STRICT_MATCH = 0UL; + const SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; + const SQL_CP_RELAXED_MATCH = 1UL; + + const SQL_CS_CREATE_SCHEMA = 0x00000001L; + const SQL_CS_AUTHORIZATION = 0x00000002L; + const SQL_CS_DEFAULT_CHARACTER_SET = 0x00000004L; + + const SQL_CT_COLUMN_COLLATION = 0x00000800L; + const SQL_CT_COLUMN_CONSTRAINT = 0x00000200L; + const SQL_CT_COLUMN_DEFAULT = 0x00000400L; + const SQL_CT_COMMIT_DELETE = 0x00000004L; + const SQL_CT_COMMIT_PRESERVE = 0x00000002L; + const SQL_CT_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_CT_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_CT_CONSTRAINT_NAME_DEFINITION = 0x00002000L; + const SQL_CT_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_CT_CREATE_TABLE = 0x00000001L; + const SQL_CT_GLOBAL_TEMPORARY = 0x00000008L; + const SQL_CT_LOCAL_TEMPORARY = 0x00000010L; + const SQL_CT_TABLE_CONSTRAINT = 0x00001000L; + + const SQL_CTR_CREATE_TRANSLATION = 0x00000001L; + + const SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; + const SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; + const SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; + const SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; + const SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; + + const SQL_CVT_INTERVAL_YEAR_MONTH = 0x00080000L; + const SQL_CVT_INTERVAL_DAY_TIME = 0x00100000L; + const SQL_CVT_WCHAR = 0x00200000L; + const SQL_CVT_WLONGVARCHAR = 0x00400000L; + const SQL_CVT_WVARCHAR = 0x00800000L; + const SQL_CVT_GUID = 0x01000000L; + + const SQL_DA_DROP_ASSERTION = 0x00000001L; + const SQL_DATETIME_LITERALS = 119; + + const SQL_DB_DISCONNECT = 1UL; + const SQL_DB_RETURN_TO_POOL = 0UL; + const SQL_DB_DEFAULT = SQL_DB_RETURN_TO_POOL; + + const SQL_DC_DROP_COLLATION = 0x00000001L; + const SQL_DCS_DROP_CHARACTER_SET = 0x00000001L; + const SQL_DD_CASCADE = 0x00000004L; + const SQL_DD_DROP_DOMAIN = 0x00000001L; + const SQL_DD_RESTRICT = 0x00000002L; + const SQL_DDL_INDEX = 170; + const SQL_DELETE_BY_BOOKMARK = 6; + const SQL_DESC_ARRAY_SIZE = 20; + const SQL_DESC_ARRAY_STATUS_PTR = 21; + const SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; + const SQL_DESC_BASE_COLUMN_NAME = 22; + const SQL_DESC_BASE_TABLE_NAME = 23; + const SQL_DESC_BIND_OFFSET_PTR = 24; + const SQL_DESC_BIND_TYPE = 25; + const SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; + const SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; + const SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; + const SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; + const SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; + const SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; + const SQL_DESC_LABEL = SQL_COLUMN_LABEL; + const SQL_DESC_LITERAL_PREFIX = 27; + const SQL_DESC_LITERAL_SUFFIX = 28; + const SQL_DESC_LOCAL_TYPE_NAME = 29; + const SQL_DESC_MAXIMUM_SCALE = 30; + const SQL_DESC_MINIMUM_SCALE = 31; + const SQL_DESC_NUM_PREC_RADIX = 32; + const SQL_DESC_PARAMETER_TYPE = 33; + const SQL_DESC_ROWS_PROCESSED_PTR = 34; + const SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; + const SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; + const SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; + const SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; + const SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; + const SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; + const SQL_DI_CREATE_INDEX = 0x00000001L; + const SQL_DI_DROP_INDEX = 0x00000002L; + + const SQL_DIAG_COLUMN_NUMBER = -1247; + const SQL_DIAG_ROW_NUMBER = -1248; + const SQL_DIAG_CURSOR_ROW_COUNT = -1249; + + const SQL_DL_SQL92_DATE = 0x00000001L; + const SQL_DL_SQL92_INTERVAL_DAY = 0x00000020L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000L; + const SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040L; + const SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000L; + const SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000L; + const SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080L; + const SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000L; + const SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010L; + const SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100L; + const SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008L; + const SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200L; + const SQL_DL_SQL92_TIME = 0x00000002L; + const SQL_DL_SQL92_TIMESTAMP = 0x00000004L; + const SQL_DM_VER = 171; + const SQL_DRIVER_HDESC = 135; + const SQL_DROP_ASSERTION = 136; + const SQL_DROP_CHARACTER_SET = 137; + const SQL_DROP_COLLATION = 138; + const SQL_DROP_DOMAIN = 139; + const SQL_DROP_SCHEMA = 140; + const SQL_DROP_TABLE = 141; + const SQL_DROP_TRANSLATION = 142; + const SQL_DROP_VIEW = 143; + const SQL_DS_CASCADE = 0x00000004L; + const SQL_DS_DROP_SCHEMA = 0x00000001L; + const SQL_DS_RESTRICT = 0x00000002L; + const SQL_DT_CASCADE = 0x00000004L; + const SQL_DT_DROP_TABLE = 0x00000001L; + const SQL_DT_RESTRICT = 0x00000002L; + const SQL_DTC_DONE = 0L; + const SQL_DTR_DROP_TRANSLATION = 0x00000001L; + const SQL_DV_CASCADE = 0x00000004L; + const SQL_DV_DROP_VIEW = 0x00000001L; + const SQL_DV_RESTRICT = 0x00000002L; + const SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; + const SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; + const SQL_EXT_API_LAST = SQL_API_SQLBINDPARAMETER; + const SQL_EXT_API_START = 40; + const SQL_FETCH_BY_BOOKMARK = 7; + const SQL_FETCH_FIRST_SYSTEM = 32; + const SQL_FETCH_FIRST_USER = 31; + const SQL_FN_CVT_CAST = 0x00000002L; + const SQL_FN_STR_BIT_LENGTH = 0x00080000L; + const SQL_FN_STR_CHAR_LENGTH = 0x00100000L; + const SQL_FN_STR_CHARACTER_LENGTH = 0x00200000L; + const SQL_FN_STR_OCTET_LENGTH = 0x00400000L; + const SQL_FN_STR_POSITION = 0x00800000L; + const SQL_FN_TD_CURRENT_DATE = 0x00020000L; + const SQL_FN_TD_CURRENT_TIME = 0x00040000L; + const SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000L; + const SQL_FN_TD_EXTRACT = 0x00100000L; + const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; + const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; + /* #define SQL_FUNC_EXISTS(exists, api) + ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? + SQL_TRUE : SQL_FALSE ) + */ + const SQL_GB_COLLATE = 0x0004; + const SQL_HANDLE_SENV = 5; + + const SQL_IK_NONE = 0; + const SQL_IK_ASC = 1; + const SQL_IK_DESC = 2; + const SQL_IK_ALL = SQL_IK_ASC | SQL_IK_DESC; + + const SQL_INDEX_KEYWORDS = 148; + const SQL_INFO_DRIVER_START = 1000; + const SQL_INFO_LAST = SQL_QUALIFIER_LOCATION; + const SQL_INFO_SCHEMA_VIEWS = 149; + const SQL_INITIALLY_DEFERRED = 5; + const SQL_INITIALLY_IMMEDIATE = 6; + const SQL_INSERT_STATEMENT = 172; + const SQL_INTERVAL = 10; + const SQL_IS_INSERT_LITERALS = 0x00000001L; + const SQL_IS_INSERT_SEARCHED = 0x00000002L; + const SQL_IS_INTEGER = -6; + const SQL_IS_POINTER = -4; + const SQL_IS_SELECT_INTO = 0x00000004L; + const SQL_IS_SMALLINT = -8; + const SQL_IS_UINTEGER = -5; + const SQL_IS_USMALLINT = -7; + const SQL_ISV_ASSERTIONS = 0x00000001L; + const SQL_ISV_CHARACTER_SETS = 0x00000002L; + const SQL_ISV_CHECK_CONSTRAINTS = 0x00000004L; + const SQL_ISV_COLLATIONS = 0x00000008L; + const SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010L; + const SQL_ISV_COLUMN_PRIVILEGES = 0x00000020L; + const SQL_ISV_COLUMNS = 0x00000040L; + const SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080L; + const SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100L; + const SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200L; + const SQL_ISV_DOMAINS = 0x00000400L; + const SQL_ISV_KEY_COLUMN_USAGE = 0x00000800L; + const SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000L; + const SQL_ISV_SCHEMATA = 0x00002000L; + const SQL_ISV_SQL_LANGUAGES = 0x00004000L; + const SQL_ISV_TABLE_CONSTRAINTS = 0x00008000L; + const SQL_ISV_TABLE_PRIVILEGES = 0x00010000L; + const SQL_ISV_TABLES = 0x00020000L; + const SQL_ISV_TRANSLATIONS = 0x00040000L; + const SQL_ISV_USAGE_PRIVILEGES = 0x00080000L; + const SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000L; + const SQL_ISV_VIEW_TABLE_USAGE = 0x00200000L; + const SQL_ISV_VIEWS = 0x00400000L; + const SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; + const SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; + const SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; + const SQL_NO_COLUMN_NUMBER = -1; + const SQL_NO_ROW_NUMBER = -1; + const SQL_NOT_DEFERRABLE = 7; + const SQL_NUM_EXTENSIONS = SQL_EXT_API_LAST-SQL_EXT_API_START+1; + const SQL_NUM_FUNCTIONS = 23; + const SQL_ODBC_INTERFACE_CONFORMANCE = 152; + + enum : ULONG { + SQL_OIC_CORE = 1, + SQL_OIC_LEVEL1, + SQL_OIC_LEVEL2 + } + enum : ULONG { + SQL_OV_ODBC2 = 2, + SQL_OV_ODBC3 = 3 + } + + const ULONG + SQL_PARAM_BIND_BY_COLUMN = 0, + SQL_PARAM_BIND_TYPE_DEFAULT = SQL_PARAM_BIND_BY_COLUMN; + + const SQL_PARAM_ARRAY_ROW_COUNTS = 153; + const SQL_PARAM_ARRAY_SELECTS = 154; + const SQL_PARAM_DIAG_UNAVAILABLE = 1; + const SQL_PARAM_ERROR = 5; + const SQL_PARAM_IGNORE = 1; + const SQL_PARAM_PROCEED = 0; + const SQL_PARAM_SUCCESS = 0; + const SQL_PARAM_SUCCESS_WITH_INFO = 6; + const SQL_PARAM_UNUSED = 7; + + const SQL_PARC_BATCH = 1; + const SQL_PARC_NO_BATCH = 2; + const SQL_PAS_BATCH = 1; + const SQL_PAS_NO_BATCH = 2; + const SQL_PAS_NO_SELECT = 3; + + const SQL_ROW_IGNORE = 1; + const SQL_ROW_NUMBER_UNKNOWN = -2; + const SQL_ROW_PROCEED = 0; + const SQL_ROW_SUCCESS_WITH_INFO = 6; + + const SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002L; + const SQL_SC_SQL92_ENTRY = 0x00000001L; + const SQL_SC_SQL92_FULL = 0x00000008L; + const SQL_SC_SQL92_INTERMEDIATE = 0x00000004L; + + const SQL_SCC_ISO92_CLI = 0x00000002L; + const SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001L; + + const SQL_SCHEMA_TERM = SQL_OWNER_TERM; + const SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; + const SQL_SDF_CURRENT_DATE = 0x00000001L; + const SQL_SDF_CURRENT_TIME = 0x00000002L; + const SQL_SDF_CURRENT_TIMESTAMP = 0x00000004L; + const SQL_SFKD_CASCADE = 0x00000001L; + const SQL_SFKD_NO_ACTION = 0x00000002L; + const SQL_SFKD_SET_DEFAULT = 0x00000004L; + const SQL_SFKD_SET_NULL = 0x00000008L; + const SQL_SFKU_CASCADE = 0x00000001L; + const SQL_SFKU_NO_ACTION = 0x00000002L; + const SQL_SFKU_SET_DEFAULT = 0x00000004L; + const SQL_SFKU_SET_NULL = 0x00000008L; + const SQL_SG_DELETE_TABLE = 0x00000020L; + const SQL_SG_INSERT_COLUMN = 0x00000080L; + const SQL_SG_INSERT_TABLE = 0x00000040L; + const SQL_SG_REFERENCES_COLUMN = 0x00000200L; + const SQL_SG_REFERENCES_TABLE = 0x00000100L; + const SQL_SG_SELECT_TABLE = 0x00000400L; + const SQL_SG_UPDATE_COLUMN = 0x00001000L; + const SQL_SG_UPDATE_TABLE = 0x00000800L; + const SQL_SG_USAGE_ON_CHARACTER_SET = 0x00000002L; + const SQL_SG_USAGE_ON_COLLATION = 0x00000004L; + const SQL_SG_USAGE_ON_DOMAIN = 0x00000001L; + const SQL_SG_USAGE_ON_TRANSLATION = 0x00000008L; + const SQL_SG_WITH_GRANT_OPTION = 0x00000010L; + const SQL_SNVF_BIT_LENGTH = 0x00000001L; + const SQL_SNVF_CHAR_LENGTH = 0x00000002L; + const SQL_SNVF_CHARACTER_LENGTH = 0x00000004L; + const SQL_SNVF_EXTRACT = 0x00000008L; + const SQL_SNVF_OCTET_LENGTH = 0x00000010L; + const SQL_SNVF_POSITION = 0x00000020L; + const SQL_SP_BETWEEN = 0x00000800L; + const SQL_SP_COMPARISON = 0x00001000L; + const SQL_SP_EXISTS = 0x00000001L; + const SQL_SP_IN = 0x00000400L; + const SQL_SP_ISNOTNULL = 0x00000002L; + const SQL_SP_ISNULL = 0x00000004L; + const SQL_SP_LIKE = 0x00000200L; + const SQL_SP_MATCH_FULL = 0x00000008L; + const SQL_SP_MATCH_PARTIAL = 0x00000010L; + const SQL_SP_MATCH_UNIQUE_FULL = 0x00000020L; + const SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040L; + const SQL_SP_OVERLAPS = 0x00000080L; + const SQL_SP_QUANTIFIED_COMPARISON = 0x00002000L; + const SQL_SP_UNIQUE = 0x00000100L; + const SQL_SQL_CONFORMANCE = 118; + const SQL_SQL92_DATETIME_FUNCTIONS = 155; + const SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; + const SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; + const SQL_SQL92_GRANT = 158; + const SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; + const SQL_SQL92_PREDICATES = 160; + const SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; + const SQL_SQL92_REVOKE = 162; + const SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; + const SQL_SQL92_STRING_FUNCTIONS = 164; + const SQL_SQL92_VALUE_EXPRESSIONS = 165; + const SQL_SR_CASCADE = 0x00000020L; + const SQL_SR_DELETE_TABLE = 0x00000080L; + const SQL_SR_GRANT_OPTION_FOR = 0x00000010L; + const SQL_SR_INSERT_COLUMN = 0x00000200L; + const SQL_SR_INSERT_TABLE = 0x00000100L; + const SQL_SR_REFERENCES_COLUMN = 0x00000800L; + const SQL_SR_REFERENCES_TABLE = 0x00000400L; + const SQL_SR_RESTRICT = 0x00000040L; + const SQL_SR_SELECT_TABLE = 0x00001000L; + const SQL_SR_UPDATE_COLUMN = 0x00004000L; + const SQL_SR_UPDATE_TABLE = 0x00002000L; + const SQL_SR_USAGE_ON_CHARACTER_SET = 0x00000002L; + const SQL_SR_USAGE_ON_COLLATION = 0x00000004L; + const SQL_SR_USAGE_ON_DOMAIN = 0x00000001L; + const SQL_SR_USAGE_ON_TRANSLATION = 0x00000008L; + const SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001L; + const SQL_SRJO_CROSS_JOIN = 0x00000002L; + const SQL_SRJO_EXCEPT_JOIN = 0x00000004L; + const SQL_SRJO_FULL_OUTER_JOIN = 0x00000008L; + const SQL_SRJO_INNER_JOIN = 0x00000010L; + const SQL_SRJO_INTERSECT_JOIN = 0x00000020L; + const SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040L; + const SQL_SRJO_NATURAL_JOIN = 0x00000080L; + const SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100L; + const SQL_SRJO_UNION_JOIN = 0x00000200L; + const SQL_SRVC_DEFAULT = 0x00000004L; + const SQL_SRVC_NULL = 0x00000002L; + const SQL_SRVC_ROW_SUBQUERY = 0x00000008L; + const SQL_SRVC_VALUE_EXPRESSION = 0x00000001L; + const SQL_SSF_CONVERT = 0x00000001L; + const SQL_SSF_LOWER = 0x00000002L; + const SQL_SSF_SUBSTRING = 0x00000008L; + const SQL_SSF_TRANSLATE = 0x00000010L; + const SQL_SSF_TRIM_BOTH = 0x00000020L; + const SQL_SSF_TRIM_LEADING = 0x00000040L; + const SQL_SSF_TRIM_TRAILING = 0x00000080L; + const SQL_SSF_UPPER = 0x00000004L; + const SQL_STANDARD_CLI_CONFORMANCE = 166; + const SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; + const SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; + const SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; + const SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; + const SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; + const SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; + const SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; + const SQL_SVE_CASE = 0x00000001L; + const SQL_SVE_CAST = 0x00000002L; + const SQL_SVE_COALESCE = 0x00000004L; + const SQL_SVE_NULLIF = 0x00000008L; + const SQL_UB_FIXED = SQL_UB_ON; + const SQL_UB_VARIABLE = 2UL; + const SQL_UNION_STATEMENT = SQL_UNION; + const SQL_UPDATE_BY_BOOKMARK = 5; + const SQL_US_UNION = SQL_U_UNION; + const SQL_US_UNION_ALL = SQL_U_UNION_ALL; +}//[Yes] #endif /* ODBCVER >= 0x300 */ +static if (ODBCVER >= 0x0350) { + const SQL_DESC_ROWVER = 35; + const SQL_GUID = -11; + const SQL_C_GUID = SQL_GUID; + //#ifdef ODBC_STD + //#define SQLAllocHandle SQLAllocHandleStd + //#define SQLAllocEnv(p) SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, p) + //#define SQL_YEAR SQL_CODE_YEAR + //#define SQL_MONTH SQL_CODE_MONTH + //#define SQL_DAY SQL_CODE_DAY + //#define SQL_HOUR SQL_CODE_HOUR + //#define SQL_MINUTE SQL_CODE_MINUTE + //#define SQL_SECOND SQL_CODE_SECOND + //#define SQL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH + //#define SQL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR + //#define SQL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE + //#define SQL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND + //#define SQL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE + //#define SQL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND + //#define SQL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND + //#endif /* ODBC_STD */ +}//#endif /* ODBCVER >= 0x0350 */ + +//static if (ODBCVER >= 0x0351) { +const SQL_ATTR_ANSI_APP=115; +const SQL_AA_TRUE=1L; +const SQL_AA_FALSE=0L; +//}//[Yes] #endif + +const TRACE_VERSION=1000; +const TRACE_ON=1; + +const char [] SQL_ODBC_KEYWORDS = + "ABSOLUTE, ACTION, ADA, ADD, ALL, ALLOCATE, ALTER, AND, ANY, ARE, AS, " + ~ "ASC, ASSERTION, AT, AUTHORIZATION, AVG, " + ~ "BEGIN, BETWEEN, BIT, BIT_LENGTH, BOTH, BY, CASCADE, CASCADED, CASE, CAST, CATALOG, " + ~ "CHAR, CHAR_LENGTH, CHARACTER, CHARACTER_LENGTH, CHECK, CLOSE, COALESCE, " + ~ "COLLATE, COLLATION, COLUMN, COMMIT, CONNECT, CONNECTION, CONSTRAINT, " + ~ "CONSTRAINTS, CONTINUE, CONVERT, CORRESPONDING, COUNT, CREATE, CROSS, CURRENT, " + ~ "CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, " + ~ "DATE, DAY, DEALLOCATE, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, " + ~ "DEFERRED, DELETE, DESC, DESCRIBE, DESCRIPTOR, DIAGNOSTICS, DISCONNECT, " + ~ "DISTINCT, DOMAIN, DOUBLE, DROP, " + ~ "ELSE, END, END-EXEC, ESCAPE, EXCEPT, EXCEPTION, EXEC, EXECUTE, " + ~ "EXISTS, EXTERNAL, EXTRACT, " + ~ "FALSE, FETCH, FIRST, FLOAT, FOR, FOREIGN, FORTRAN, FOUND, FROM, FULL, " + ~ "GET, GLOBAL, GO, GOTO, GRANT, GROUP, HAVING, HOUR, " + ~ "IDENTITY, IMMEDIATE, IN, INCLUDE, INDEX, INDICATOR, INITIALLY, INNER, " + ~ "INPUT, INSENSITIVE, INSERT, INT, INTEGER, INTERSECT, INTERVAL, INTO, IS, ISOLATION, " + ~ "JOIN, KEY, LANGUAGE, LAST, LEADING, LEFT, LEVEL, LIKE, LOCAL, LOWER, " + ~ "MATCH, MAX, MIN, MINUTE, MODULE, MONTH, " + ~ "NAMES, NATIONAL, NATURAL, NCHAR, NEXT, NO, NONE, NOT, NULL, NULLIF, NUMERIC, " + ~ "OCTET_LENGTH, OF, ON, ONLY, OPEN, OPTION, OR, ORDER, OUTER, OUTPUT, OVERLAPS, " + ~ "PAD, PARTIAL, PASCAL, PLI, POSITION, PRECISION, PREPARE, PRESERVE, " + ~ "PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC, " + ~ "READ, REAL, REFERENCES, RELATIVE, RESTRICT, REVOKE, RIGHT, ROLLBACK, ROWS" + ~ "SCHEMA, SCROLL, SECOND, SECTION, SELECT, SESSION, SESSION_USER, SET, SIZE, " + ~ "SMALLINT, SOME, SPACE, SQL, SQLCA, SQLCODE, SQLERROR, SQLSTATE, SQLWARNING, " + ~ "SUBSTRING, SUM, SYSTEM_USER, " + ~ "TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, " + ~ "TO, TRAILING, TRANSACTION, TRANSLATE, TRANSLATION, TRIM, TRUE, " + ~ "UNION, UNIQUE, UNKNOWN, UPDATE, UPPER, USAGE, USER, USING, " + ~ "VALUE, VALUES, VARCHAR, VARYING, VIEW, WHEN, WHENEVER, WHERE, WITH, WORK, WRITE, " + ~ "YEAR, ZONE"; +extern (Windows) { + SQLRETURN SQLDriverConnect(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLBrowseConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLColumnPrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLColAttributes(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLDescribeParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLExtendedFetch(SQLHSTMT, SQLUSMALLINT, SQLINTEGER, SQLUINTEGER*, SQLUSMALLINT*); + SQLRETURN SQLForeignKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLMoreResults(SQLHSTMT); + SQLRETURN SQLNativeSql(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLNumParams(SQLHSTMT, SQLSMALLINT*); + SQLRETURN SQLParamOptions(SQLHSTMT, SQLUINTEGER, SQLUINTEGER*); + SQLRETURN SQLPrimaryKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedures(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLSetPos(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTablePrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDrivers(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLBindParameter(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLSetScrollOptions(SQLHSTMT, SQLUSMALLINT, SQLLEN, SQLUSMALLINT);/* deprecated */ + DWORD ODBCGetTryWaitValue(); + BOOL ODBCSetTryWaitValue(DWORD); + RETCODE TraceOpenLogFile(LPWSTR, LPWSTR, DWORD); + RETCODE TraceCloseLogFile(); + VOID TraceReturn(RETCODE, RETCODE); + DWORD TraceVersion(); + //static if (ODBCVER >= 0x0300) { + SQLRETURN SQLBulkOperations(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLAllocHandleStd( SQLSMALLINT, SQLHANDLE, SQLHANDLE*); + //} +} diff --git a/src/core/sys/windows/sqltypes.d b/src/core/sys/windows/sqltypes.d index cf8494969e..fbad39597f 100644 --- a/src/core/sys/windows/sqltypes.d +++ b/src/core/sys/windows/sqltypes.d @@ -1,141 +1,141 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_sqltypes.d) - */ -module core.sys.windows.sqltypes; - -/* Conversion notes: - It's assumed that ODBC >= 0x0300. -*/ - -private import core.sys.windows.windef; -private import core.sys.windows.basetyps; // for GUID - -alias byte SCHAR, SQLSCHAR; -alias int SDWORD, SLONG, SQLINTEGER; -alias short SWORD, SSHORT, RETCODE, SQLSMALLINT; -alias ULONG UDWORD; -alias USHORT UWORD, SQLUSMALLINT; -alias double SDOUBLE, LDOUBLE; -alias float SFLOAT; -alias PVOID PTR, HENV, HDBC, HSTMT, SQLPOINTER; -alias UCHAR SQLCHAR; -// #ifndef _WIN64 -alias UDWORD SQLUINTEGER; -// #endif - -//static if (ODBCVER >= 0x0300) { -alias TypeDef!(HANDLE) SQLHANDLE; -alias SQLHANDLE SQLHENV, SQLHDBC, SQLHSTMT, SQLHDESC; -/* -} else { -alias void* SQLHENV; -alias void* SQLHDBC; -alias void* SQLHSTMT; -} -*/ -alias SQLSMALLINT SQLRETURN; -alias HWND SQLHWND; -alias ULONG BOOKMARK; - -alias SQLINTEGER SQLLEN, SQLROWOFFSET; -alias SQLUINTEGER SQLROWCOUNT, SQLULEN; -alias DWORD SQLTRANSID; -alias SQLUSMALLINT SQLSETPOSIROW; -alias wchar SQLWCHAR; - -version(Unicode) { - alias SQLWCHAR SQLTCHAR; -} else { - alias SQLCHAR SQLTCHAR; -} -//static if (ODBCVER >= 0x0300) { -alias ubyte SQLDATE, SQLDECIMAL; -alias double SQLDOUBLE, SQLFLOAT; -alias ubyte SQLNUMERIC; -alias float SQLREAL; -alias ubyte SQLTIME, SQLTIMESTAMP, SQLVARCHAR; -alias long ODBCINT64, SQLBIGINT; -alias ulong SQLUBIGINT; -//} - -struct DATE_STRUCT { - SQLSMALLINT year; - SQLUSMALLINT month; - SQLUSMALLINT day; -} - -struct TIME_STRUCT { - SQLUSMALLINT hour; - SQLUSMALLINT minute; - SQLUSMALLINT second; -} - -struct TIMESTAMP_STRUCT { - SQLSMALLINT year; - SQLUSMALLINT month; - SQLUSMALLINT day; - SQLUSMALLINT hour; - SQLUSMALLINT minute; - SQLUSMALLINT second; - SQLUINTEGER fraction; -} - -//static if (ODBCVER >= 0x0300) { -alias DATE_STRUCT SQL_DATE_STRUCT; -alias TIME_STRUCT SQL_TIME_STRUCT; -alias TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT; - -enum SQLINTERVAL { - SQL_IS_YEAR = 1, - SQL_IS_MONTH, - SQL_IS_DAY, - SQL_IS_HOUR, - SQL_IS_MINUTE, - SQL_IS_SECOND, - SQL_IS_YEAR_TO_MONTH, - SQL_IS_DAY_TO_HOUR, - SQL_IS_DAY_TO_MINUTE, - SQL_IS_DAY_TO_SECOND, - SQL_IS_HOUR_TO_MINUTE, - SQL_IS_HOUR_TO_SECOND, - SQL_IS_MINUTE_TO_SECOND -} - -struct SQL_YEAR_MONTH_STRUCT { - SQLUINTEGER year; - SQLUINTEGER month; -} - -struct SQL_DAY_SECOND_STRUCT { - SQLUINTEGER day; - SQLUINTEGER hour; - SQLUINTEGER minute; - SQLUINTEGER second; - SQLUINTEGER fraction; -} - -struct SQL_INTERVAL_STRUCT { - SQLINTERVAL interval_type; - SQLSMALLINT interval_sign; - union _intval { - SQL_YEAR_MONTH_STRUCT year_month; - SQL_DAY_SECOND_STRUCT day_second; - } - _intval intval; -} - -const SQL_MAX_NUMERIC_LEN = 16; - -struct SQL_NUMERIC_STRUCT { - SQLCHAR precision; - SQLSCHAR scale; - SQLCHAR sign; - SQLCHAR[SQL_MAX_NUMERIC_LEN] val; -} -// } ODBCVER >= 0x0300 -alias GUID SQLGUID; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_sqltypes.d) + */ +module core.sys.windows.sqltypes; + +/* Conversion notes: + It's assumed that ODBC >= 0x0300. +*/ + +private import core.sys.windows.windef; +private import core.sys.windows.basetyps; // for GUID + +alias byte SCHAR, SQLSCHAR; +alias int SDWORD, SLONG, SQLINTEGER; +alias short SWORD, SSHORT, RETCODE, SQLSMALLINT; +alias ULONG UDWORD; +alias USHORT UWORD, SQLUSMALLINT; +alias double SDOUBLE, LDOUBLE; +alias float SFLOAT; +alias PVOID PTR, HENV, HDBC, HSTMT, SQLPOINTER; +alias UCHAR SQLCHAR; +// #ifndef _WIN64 +alias UDWORD SQLUINTEGER; +// #endif + +//static if (ODBCVER >= 0x0300) { +alias TypeDef!(HANDLE) SQLHANDLE; +alias SQLHANDLE SQLHENV, SQLHDBC, SQLHSTMT, SQLHDESC; +/* +} else { +alias void* SQLHENV; +alias void* SQLHDBC; +alias void* SQLHSTMT; +} +*/ +alias SQLSMALLINT SQLRETURN; +alias HWND SQLHWND; +alias ULONG BOOKMARK; + +alias SQLINTEGER SQLLEN, SQLROWOFFSET; +alias SQLUINTEGER SQLROWCOUNT, SQLULEN; +alias DWORD SQLTRANSID; +alias SQLUSMALLINT SQLSETPOSIROW; +alias wchar SQLWCHAR; + +version(Unicode) { + alias SQLWCHAR SQLTCHAR; +} else { + alias SQLCHAR SQLTCHAR; +} +//static if (ODBCVER >= 0x0300) { +alias ubyte SQLDATE, SQLDECIMAL; +alias double SQLDOUBLE, SQLFLOAT; +alias ubyte SQLNUMERIC; +alias float SQLREAL; +alias ubyte SQLTIME, SQLTIMESTAMP, SQLVARCHAR; +alias long ODBCINT64, SQLBIGINT; +alias ulong SQLUBIGINT; +//} + +struct DATE_STRUCT { + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; +} + +struct TIME_STRUCT { + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; +} + +struct TIMESTAMP_STRUCT { + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; + SQLUINTEGER fraction; +} + +//static if (ODBCVER >= 0x0300) { +alias DATE_STRUCT SQL_DATE_STRUCT; +alias TIME_STRUCT SQL_TIME_STRUCT; +alias TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT; + +enum SQLINTERVAL { + SQL_IS_YEAR = 1, + SQL_IS_MONTH, + SQL_IS_DAY, + SQL_IS_HOUR, + SQL_IS_MINUTE, + SQL_IS_SECOND, + SQL_IS_YEAR_TO_MONTH, + SQL_IS_DAY_TO_HOUR, + SQL_IS_DAY_TO_MINUTE, + SQL_IS_DAY_TO_SECOND, + SQL_IS_HOUR_TO_MINUTE, + SQL_IS_HOUR_TO_SECOND, + SQL_IS_MINUTE_TO_SECOND +} + +struct SQL_YEAR_MONTH_STRUCT { + SQLUINTEGER year; + SQLUINTEGER month; +} + +struct SQL_DAY_SECOND_STRUCT { + SQLUINTEGER day; + SQLUINTEGER hour; + SQLUINTEGER minute; + SQLUINTEGER second; + SQLUINTEGER fraction; +} + +struct SQL_INTERVAL_STRUCT { + SQLINTERVAL interval_type; + SQLSMALLINT interval_sign; + union _intval { + SQL_YEAR_MONTH_STRUCT year_month; + SQL_DAY_SECOND_STRUCT day_second; + } + _intval intval; +} + +const SQL_MAX_NUMERIC_LEN = 16; + +struct SQL_NUMERIC_STRUCT { + SQLCHAR precision; + SQLSCHAR scale; + SQLCHAR sign; + SQLCHAR[SQL_MAX_NUMERIC_LEN] val; +} +// } ODBCVER >= 0x0300 +alias GUID SQLGUID; diff --git a/src/core/sys/windows/sqlucode.d b/src/core/sys/windows/sqlucode.d index 2f173e2c67..a5a43345c8 100644 --- a/src/core/sys/windows/sqlucode.d +++ b/src/core/sys/windows/sqlucode.d @@ -1,155 +1,155 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_sqlucode.d) - */ -module core.sys.windows.sqlucode; - -private import core.sys.windows.sqlext; - -const SQL_WCHAR = -8; -const SQL_WVARCHAR = -9; -const SQL_WLONGVARCHAR = -10; -const SQL_C_WCHAR = SQL_WCHAR; - -const SQL_SQLSTATE_SIZEW = 10; -version(Unicode) { - const SQL_C_TCHAR = SQL_C_WCHAR; -} else { - const SQL_C_TCHAR = SQL_C_CHAR; -} - -// Moved from sqlext -static if (ODBCVER <= 0x0300) { - const SQL_UNICODE = -95; - const SQL_UNICODE_VARCHAR = -96; - const SQL_UNICODE_LONGVARCHAR = -97; - const SQL_UNICODE_CHAR = SQL_UNICODE; -} else { - const SQL_UNICODE = SQL_WCHAR; - const SQL_UNICODE_VARCHAR = SQL_WVARCHAR; - const SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR; - const SQL_UNICODE_CHAR = SQL_WCHAR; -} - -extern (Windows) { - SQLRETURN SQLBrowseConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLBrowseConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLColAttributeA(SQLHSTMT, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); - SQLRETURN SQLColAttributeW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); - SQLRETURN SQLColAttributesA(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); - SQLRETURN SQLColAttributesW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); - SQLRETURN SQLColumnPrivilegesA( SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); - SQLRETURN SQLColumnPrivilegesW( SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); - SQLRETURN SQLColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); - SQLRETURN SQLColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLWCHAR*, SQLSMALLINT ); - SQLRETURN SQLConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLDataSourcesA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLDataSourcesW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLDescribeColA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLDescribeColW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLDriverConnectA(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); - SQLRETURN SQLDriverConnectW(SQLHDBC, SQLHWND, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); - SQLRETURN SQLDriversA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLDriversW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLErrorA(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLErrorW(SQLHENV, SQLHDBC, SQLHSTMT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLExecDirectA(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLExecDirectW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); - SQLRETURN SQLForeignKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLForeignKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLGetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLGetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLGetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetInfoA(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetInfoW(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetTypeInfoA(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLGetTypeInfoW(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLNativeSqlA(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLNativeSqlW(SQLHDBC, SQLWCHAR*, SQLINTEGER, SQLWCHAR*, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLPrepareA(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLPrepareW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); - SQLRETURN SQLPrimaryKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT ); - SQLRETURN SQLPrimaryKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedureColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedureColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLProceduresA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProceduresW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLSetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLULEN); - SQLRETURN SQLSetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLULEN); - SQLRETURN SQLSetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLSetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLSpecialColumnsA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLSpecialColumnsW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLStatisticsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLStatisticsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLTablePrivilegesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLTablePrivilegesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); - SQLRETURN SQLTablesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLTablesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - static if (ODBCVER >= 0x0300) { - SQLRETURN SQLGetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLSetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLGetDescRecA(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLGetDescRecW(SQLHDESC, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLGetDiagFieldA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagFieldW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagRecA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagRecW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLSetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); - } // #endif /* (ODBCVER >= 0x0300) */ -} - -version (Unicode) { - alias SQLBrowseConnectW SQLBrowseConnect; - alias SQLColAttributeW SQLColAttribute; - alias SQLColAttributesW SQLColAttributes; - alias SQLColumnPrivilegesW SQLColumnPrivileges; - alias SQLColumnsW SQLColumns; - alias SQLConnectW SQLConnect; - alias SQLDataSourcesW SQLDataSources; - alias SQLDescribeColW SQLDescribeCol; - alias SQLDriverConnectW SQLDriverConnect; - alias SQLDriversW SQLDrivers; - alias SQLErrorW SQLError; - alias SQLExecDirectW SQLExecDirect; - alias SQLForeignKeysW SQLForeignKeys; - alias SQLGetConnectAttrW SQLGetConnectAttr; - alias SQLGetConnectOptionW SQLGetConnectOption; - alias SQLGetCursorNameW SQLGetCursorName; - alias SQLGetDescFieldW SQLGetDescField; - alias SQLGetDescRecW SQLGetDescRec; - alias SQLGetDiagFieldW SQLGetDiagField; - alias SQLGetDiagRecW SQLGetDiagRec; - alias SQLGetInfoW SQLGetInfo; - alias SQLGetStmtAttrW SQLGetStmtAttr; - alias SQLGetTypeInfoW SQLGetTypeInfo; - alias SQLNativeSqlW SQLNativeSql; - alias SQLPrepareW SQLPrepare; - alias SQLPrimaryKeysW SQLPrimaryKeys; - alias SQLProcedureColumnsW SQLProcedureColumns; - alias SQLProceduresW SQLProcedures; - alias SQLSetConnectAttrW SQLSetConnectAttr; - alias SQLSetConnectOptionW SQLSetConnectOption; - alias SQLSetCursorNameW SQLSetCursorName; - alias SQLSetDescFieldW SQLSetDescField; - alias SQLSetStmtAttrW SQLSetStmtAttr; - alias SQLSpecialColumnsW SQLSpecialColumns; - alias SQLStatisticsW SQLStatistics; - alias SQLTablePrivilegesW SQLTablePrivileges; - alias SQLTablesW SQLTables; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_sqlucode.d) + */ +module core.sys.windows.sqlucode; + +private import core.sys.windows.sqlext; + +const SQL_WCHAR = -8; +const SQL_WVARCHAR = -9; +const SQL_WLONGVARCHAR = -10; +const SQL_C_WCHAR = SQL_WCHAR; + +const SQL_SQLSTATE_SIZEW = 10; +version(Unicode) { + const SQL_C_TCHAR = SQL_C_WCHAR; +} else { + const SQL_C_TCHAR = SQL_C_CHAR; +} + +// Moved from sqlext +static if (ODBCVER <= 0x0300) { + const SQL_UNICODE = -95; + const SQL_UNICODE_VARCHAR = -96; + const SQL_UNICODE_LONGVARCHAR = -97; + const SQL_UNICODE_CHAR = SQL_UNICODE; +} else { + const SQL_UNICODE = SQL_WCHAR; + const SQL_UNICODE_VARCHAR = SQL_WVARCHAR; + const SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR; + const SQL_UNICODE_CHAR = SQL_WCHAR; +} + +extern (Windows) { + SQLRETURN SQLBrowseConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLBrowseConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLColAttributeA(SQLHSTMT, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLColAttributeW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLColAttributesA(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLColAttributesW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLColumnPrivilegesA( SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnPrivilegesW( SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLDataSourcesA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDataSourcesW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDescribeColA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDescribeColW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDriverConnectA(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLDriverConnectW(SQLHDBC, SQLHWND, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLDriversA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDriversW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLErrorA(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLErrorW(SQLHENV, SQLHDBC, SQLHSTMT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLExecDirectA(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLExecDirectW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); + SQLRETURN SQLForeignKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLForeignKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLGetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetInfoA(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetInfoW(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetTypeInfoA(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLGetTypeInfoW(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLNativeSqlA(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLNativeSqlW(SQLHDBC, SQLWCHAR*, SQLINTEGER, SQLWCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLPrepareA(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLPrepareW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); + SQLRETURN SQLPrimaryKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLPrimaryKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLProceduresA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProceduresW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLSetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLSetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLSpecialColumnsA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLSpecialColumnsW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatisticsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatisticsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTablePrivilegesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTablePrivilegesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLTablesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTablesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + static if (ODBCVER >= 0x0300) { + SQLRETURN SQLGetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLGetDescRecA(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDescRecW(SQLHDESC, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDiagFieldA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagFieldW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRecA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRecW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + } // #endif /* (ODBCVER >= 0x0300) */ +} + +version (Unicode) { + alias SQLBrowseConnectW SQLBrowseConnect; + alias SQLColAttributeW SQLColAttribute; + alias SQLColAttributesW SQLColAttributes; + alias SQLColumnPrivilegesW SQLColumnPrivileges; + alias SQLColumnsW SQLColumns; + alias SQLConnectW SQLConnect; + alias SQLDataSourcesW SQLDataSources; + alias SQLDescribeColW SQLDescribeCol; + alias SQLDriverConnectW SQLDriverConnect; + alias SQLDriversW SQLDrivers; + alias SQLErrorW SQLError; + alias SQLExecDirectW SQLExecDirect; + alias SQLForeignKeysW SQLForeignKeys; + alias SQLGetConnectAttrW SQLGetConnectAttr; + alias SQLGetConnectOptionW SQLGetConnectOption; + alias SQLGetCursorNameW SQLGetCursorName; + alias SQLGetDescFieldW SQLGetDescField; + alias SQLGetDescRecW SQLGetDescRec; + alias SQLGetDiagFieldW SQLGetDiagField; + alias SQLGetDiagRecW SQLGetDiagRec; + alias SQLGetInfoW SQLGetInfo; + alias SQLGetStmtAttrW SQLGetStmtAttr; + alias SQLGetTypeInfoW SQLGetTypeInfo; + alias SQLNativeSqlW SQLNativeSql; + alias SQLPrepareW SQLPrepare; + alias SQLPrimaryKeysW SQLPrimaryKeys; + alias SQLProcedureColumnsW SQLProcedureColumns; + alias SQLProceduresW SQLProcedures; + alias SQLSetConnectAttrW SQLSetConnectAttr; + alias SQLSetConnectOptionW SQLSetConnectOption; + alias SQLSetCursorNameW SQLSetCursorName; + alias SQLSetDescFieldW SQLSetDescField; + alias SQLSetStmtAttrW SQLSetStmtAttr; + alias SQLSpecialColumnsW SQLSpecialColumns; + alias SQLStatisticsW SQLStatistics; + alias SQLTablePrivilegesW SQLTablePrivileges; + alias SQLTablesW SQLTables; +} diff --git a/src/core/sys/windows/sspi.d b/src/core/sys/windows/sspi.d index 5a3dbc8923..8992d721ff 100644 --- a/src/core/sys/windows/sspi.d +++ b/src/core/sys/windows/sspi.d @@ -1,379 +1,379 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Ellery Newcomer - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_sspi.d) - */ -module core.sys.windows.sspi; - -import core.sys.windows.windef; -import core.sys.windows.ntdef; -import core.sys.windows.w32api; -import core.sys.windows.security; -import core.sys.windows.ntsecapi; -import core.sys.windows.subauth; - -enum :ULONG{ - SECPKG_CRED_INBOUND = 1, - SECPKG_CRED_OUTBOUND = 2, - SECPKG_CRED_BOTH = (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND), - SECPKG_CRED_ATTR_NAMES = 1, -} - -enum :ULONG{ - SECPKG_FLAG_INTEGRITY = 1, - SECPKG_FLAG_PRIVACY = 2, - SECPKG_FLAG_TOKEN_ONLY = 4, - SECPKG_FLAG_DATAGRAM = 8, - SECPKG_FLAG_CONNECTION = 16, - SECPKG_FLAG_MULTI_REQUIRED = 32, - SECPKG_FLAG_CLIENT_ONLY = 64, - SECPKG_FLAG_EXTENDED_ERROR = 128, - SECPKG_FLAG_IMPERSONATION = 256, - SECPKG_FLAG_ACCEPT_WIN32_NAME = 512, - SECPKG_FLAG_STREAM = 1024, -} - -enum :ULONG{ - SECPKG_ATTR_AUTHORITY = 6, - SECPKG_ATTR_CONNECTION_INFO = 90, - SECPKG_ATTR_ISSUER_LIST = 80, - SECPKG_ATTR_ISSUER_LIST_EX = 89, - SECPKG_ATTR_KEY_INFO = 5, - SECPKG_ATTR_LIFESPAN = 2, - SECPKG_ATTR_LOCAL_CERT_CONTEXT = 84, - SECPKG_ATTR_LOCAL_CRED = 82, - SECPKG_ATTR_NAMES = 1, - SECPKG_ATTR_PROTO_INFO = 7, - SECPKG_ATTR_REMOTE_CERT_CONTEXT = 83, - SECPKG_ATTR_REMOTE_CRED = 81, - SECPKG_ATTR_SIZES = 0, - SECPKG_ATTR_STREAM_SIZES = 4, -} - -enum :ULONG{ - SECBUFFER_EMPTY = 0, - SECBUFFER_DATA = 1, - SECBUFFER_TOKEN = 2, - SECBUFFER_PKG_PARAMS = 3, - SECBUFFER_MISSING = 4, - SECBUFFER_EXTRA = 5, - SECBUFFER_STREAM_TRAILER = 6, - SECBUFFER_STREAM_HEADER = 7, - SECBUFFER_PADDING = 9, - SECBUFFER_STREAM = 10, - SECBUFFER_READONLY = 0x80000000, - SECBUFFER_ATTRMASK = 0xf0000000, -} - -enum UNISP_NAME_A = "Microsoft Unified Security Protocol Provider"; -enum UNISP_NAME_W = "Microsoft Unified Security Protocol Provider"w; -enum SECBUFFER_VERSION = 0; - -alias UNICODE_STRING SECURITY_STRING; -alias UNICODE_STRING* PSECURITY_STRING; - -extern(Windows): - -struct SecHandle { - ULONG_PTR dwLower; - ULONG_PTR dwUpper; -} -alias SecHandle* PSecHandle; -struct SecBuffer { - ULONG cbBuffer; - ULONG BufferType; - PVOID pvBuffer; -} -alias SecBuffer* PSecBuffer; -alias SecHandle CredHandle; -alias PSecHandle PCredHandle; -alias SecHandle CtxtHandle; -alias PSecHandle PCtxtHandle; -struct SECURITY_INTEGER { - uint LowPart; - int HighPart; -} -alias SECURITY_INTEGER TimeStamp; -alias SECURITY_INTEGER* PTimeStamp; -struct SecBufferDesc { - ULONG ulVersion; - ULONG cBuffers; - PSecBuffer pBuffers; -} -alias SecBufferDesc* PSecBufferDesc; -struct SecPkgContext_StreamSizes { - ULONG cbHeader; - ULONG cbTrailer; - ULONG cbMaximumMessage; - ULONG cBuffers; - ULONG cbBlockSize; -} -alias SecPkgContext_StreamSizes* PSecPkgContext_StreamSizes; -struct SecPkgContext_Sizes { - ULONG cbMaxToken; - ULONG cbMaxSignature; - ULONG cbBlockSize; - ULONG cbSecurityTrailer; -} -alias SecPkgContext_Sizes* PSecPkgContext_Sizes; -struct SecPkgContext_AuthorityW { - SEC_WCHAR* sAuthorityName; -} -alias SecPkgContext_AuthorityW* PSecPkgContext_AuthorityW; -struct SecPkgContext_AuthorityA { - SEC_CHAR* sAuthorityName; -} -alias SecPkgContext_AuthorityA* PSecPkgContext_AuthorityA; -struct SecPkgContext_KeyInfoW { - SEC_WCHAR* sSignatureAlgorithmName; - SEC_WCHAR* sEncryptAlgorithmName; - ULONG KeySize; - ULONG SignatureAlgorithm; - ULONG EncryptAlgorithm; -} -alias SecPkgContext_KeyInfoW* PSecPkgContext_KeyInfoW; -struct SecPkgContext_KeyInfoA { - SEC_CHAR* sSignatureAlgorithmName; - SEC_CHAR* sEncryptAlgorithmName; - ULONG KeySize; - ULONG SignatureAlgorithm; - ULONG EncryptAlgorithm; -} -alias SecPkgContext_KeyInfoA* PSecPkgContext_KeyInfoA; -struct SecPkgContext_LifeSpan { - TimeStamp tsStart; - TimeStamp tsExpiry; -} -alias SecPkgContext_LifeSpan* PSecPkgContext_LifeSpan; -struct SecPkgContext_NamesW { - SEC_WCHAR* sUserName; -} -alias SecPkgContext_NamesW* PSecPkgContext_NamesW; -struct SecPkgContext_NamesA { - SEC_CHAR* sUserName; -} -alias SecPkgContext_NamesA* PSecPkgContext_NamesA; -struct SecPkgInfoW { - ULONG fCapabilities; - USHORT wVersion; - USHORT wRPCID; - ULONG cbMaxToken; - SEC_WCHAR* Name; - SEC_WCHAR* Comment; -} -alias SecPkgInfoW* PSecPkgInfoW; -struct SecPkgInfoA { - ULONG fCapabilities; - USHORT wVersion; - USHORT wRPCID; - ULONG cbMaxToken; - SEC_CHAR* Name; - SEC_CHAR* Comment; -} -alias SecPkgInfoA* PSecPkgInfoA; -/* supported only in win2k+, so it should be a PSecPkgInfoW */ -/* PSDK does not say it has ANSI/Unicode versions */ -struct SecPkgContext_PackageInfo { - PSecPkgInfoW PackageInfo; -} -alias SecPkgContext_PackageInfo* PSecPkgContext_PackageInfo; -struct SecPkgCredentials_NamesW { - SEC_WCHAR* sUserName; -} -alias SecPkgCredentials_NamesW* PSecPkgCredentials_NamesW; -struct SecPkgCredentials_NamesA { - SEC_CHAR* sUserName; -} -alias SecPkgCredentials_NamesA* PSecPkgCredentials_NamesA; - -/* TODO: missing type in SDK */ -alias void function() SEC_GET_KEY_FN; - -alias SECURITY_STATUS function(PULONG,PSecPkgInfoW*) ENUMERATE_SECURITY_PACKAGES_FN_W; -alias SECURITY_STATUS function(PULONG,PSecPkgInfoA*) ENUMERATE_SECURITY_PACKAGES_FN_A; -alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_W; -alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_A; -alias SECURITY_STATUS function(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_W; -alias SECURITY_STATUS function(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_A; -alias SECURITY_STATUS function(PCredHandle) FREE_CREDENTIALS_HANDLE_FN; -alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_W; -alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_A; -alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) ACCEPT_SECURITY_CONTEXT_FN; -alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) COMPLETE_AUTH_TOKEN_FN; -alias SECURITY_STATUS function(PCtxtHandle) DELETE_SECURITY_CONTEXT_FN; -alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_W; -alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_A; -alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_A; -alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_W; -alias SECURITY_STATUS function(PCtxtHandle) IMPERSONATE_SECURITY_CONTEXT_FN; -alias SECURITY_STATUS function(PCtxtHandle) REVERT_SECURITY_CONTEXT_FN; -alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) MAKE_SIGNATURE_FN; -alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) VERIFY_SIGNATURE_FN; -alias SECURITY_STATUS function(PVOID) FREE_CONTEXT_BUFFER_FN; -alias SECURITY_STATUS function(SEC_CHAR*,PSecPkgInfoA*) QUERY_SECURITY_PACKAGE_INFO_FN_A; -alias SECURITY_STATUS function(PCtxtHandle,HANDLE*) QUERY_SECURITY_CONTEXT_TOKEN_FN; -alias SECURITY_STATUS function(SEC_WCHAR*,PSecPkgInfoW*) QUERY_SECURITY_PACKAGE_INFO_FN_W; -alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) ENCRYPT_MESSAGE_FN; -alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) DECRYPT_MESSAGE_FN; - -/* No, it really is FreeCredentialsHandle, see the thread beginning - * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a - * discovery discussion. */ -struct SecurityFunctionTableW{ - uint dwVersion; - ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; - QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; - ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; - FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; - void* Reserved2; - INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; - ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; - COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; - DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; - APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW; - QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; - IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; - REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; - MAKE_SIGNATURE_FN MakeSignature; - VERIFY_SIGNATURE_FN VerifySignature; - FREE_CONTEXT_BUFFER_FN FreeContextBuffer; - QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; - void* Reserved3; - void* Reserved4; - void* Reserved5; - void* Reserved6; - void* Reserved7; - void* Reserved8; - QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; - ENCRYPT_MESSAGE_FN EncryptMessage; - DECRYPT_MESSAGE_FN DecryptMessage; -} -alias SecurityFunctionTableW* PSecurityFunctionTableW; -struct SecurityFunctionTableA{ - uint dwVersion; - ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; - QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; - ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; - FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; - void* Reserved2; - INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; - ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; - COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; - DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; - APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA; - QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; - IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; - REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; - MAKE_SIGNATURE_FN MakeSignature; - VERIFY_SIGNATURE_FN VerifySignature; - FREE_CONTEXT_BUFFER_FN FreeContextBuffer; - QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; - void* Reserved3; - void* Reserved4; - void* Unknown1; - void* Unknown2; - void* Unknown3; - void* Unknown4; - void* Unknown5; - ENCRYPT_MESSAGE_FN EncryptMessage; - DECRYPT_MESSAGE_FN DecryptMessage; -} -alias SecurityFunctionTableA* PSecurityFunctionTableA; -alias PSecurityFunctionTableA function() INIT_SECURITY_INTERFACE_A; -alias PSecurityFunctionTableW function() INIT_SECURITY_INTERFACE_W; - -SECURITY_STATUS FreeCredentialsHandle(PCredHandle); -SECURITY_STATUS EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*); -SECURITY_STATUS EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*); -SECURITY_STATUS AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); -SECURITY_STATUS AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); -SECURITY_STATUS AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); -SECURITY_STATUS InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); -SECURITY_STATUS InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); -SECURITY_STATUS FreeContextBuffer(PVOID); -SECURITY_STATUS QueryContextAttributesA(PCtxtHandle,ULONG,PVOID); -SECURITY_STATUS QueryContextAttributesW(PCtxtHandle,ULONG,PVOID); -SECURITY_STATUS QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID); -SECURITY_STATUS QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID); -static if(_WIN32_WINNT >= 0x500){ - SECURITY_STATUS QuerySecurityContextToken(PCtxtHandle,HANDLE*); -} -SECURITY_STATUS DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); -SECURITY_STATUS EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); -SECURITY_STATUS DeleteSecurityContext(PCtxtHandle); -SECURITY_STATUS CompleteAuthToken(PCtxtHandle,PSecBufferDesc); -SECURITY_STATUS ApplyControlTokenA(PCtxtHandle,PSecBufferDesc); -SECURITY_STATUS ApplyControlTokenW(PCtxtHandle,PSecBufferDesc); -SECURITY_STATUS ImpersonateSecurityContext(PCtxtHandle); -SECURITY_STATUS RevertSecurityContext(PCtxtHandle); -SECURITY_STATUS MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); -SECURITY_STATUS VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); -SECURITY_STATUS QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*); -SECURITY_STATUS QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*); -PSecurityFunctionTableA InitSecurityInterfaceA(); -PSecurityFunctionTableW InitSecurityInterfaceW(); - -version(Unicode) { - alias UNISP_NAME_W UNISP_NAME; - alias SecPkgInfoW SecPkgInfo; - alias PSecPkgInfoW PSecPkgInfo; - alias SecPkgCredentials_NamesW SecPkgCredentials_Names; - alias PSecPkgCredentials_NamesW PSecPkgCredentials_Names; - alias SecPkgContext_AuthorityW SecPkgContext_Authority; - alias PSecPkgContext_AuthorityW PSecPkgContext_Authority; - alias SecPkgContext_KeyInfoW SecPkgContext_KeyInfo; - alias PSecPkgContext_KeyInfoW PSecPkgContext_KeyInfo; - alias SecPkgContext_NamesW SecPkgContext_Names; - alias PSecPkgContext_NamesW PSecPkgContext_Names; - alias SecurityFunctionTableW SecurityFunctionTable; - alias PSecurityFunctionTableW PSecurityFunctionTable; - alias AcquireCredentialsHandleW AcquireCredentialsHandle; - alias EnumerateSecurityPackagesW EnumerateSecurityPackages; - alias InitializeSecurityContextW InitializeSecurityContext; - alias QueryContextAttributesW QueryContextAttributes; - alias QueryCredentialsAttributesW QueryCredentialsAttributes; - alias QuerySecurityPackageInfoW QuerySecurityPackageInfo; - alias ApplyControlTokenW ApplyControlToken; - alias ENUMERATE_SECURITY_PACKAGES_FN_W ENUMERATE_SECURITY_PACKAGES_FN; - alias QUERY_CREDENTIALS_ATTRIBUTES_FN_W QUERY_CREDENTIALS_ATTRIBUTES_FN; - alias ACQUIRE_CREDENTIALS_HANDLE_FN_W ACQUIRE_CREDENTIALS_HANDLE_FN; - alias INITIALIZE_SECURITY_CONTEXT_FN_W INITIALIZE_SECURITY_CONTEXT_FN; - alias APPLY_CONTROL_TOKEN_FN_W APPLY_CONTROL_TOKEN_FN; - alias QUERY_CONTEXT_ATTRIBUTES_FN_W QUERY_CONTEXT_ATTRIBUTES_FN; - alias QUERY_SECURITY_PACKAGE_INFO_FN_W QUERY_SECURITY_PACKAGE_INFO_FN; - alias INIT_SECURITY_INTERFACE_W INIT_SECURITY_INTERFACE; -}else{ - alias UNISP_NAME_A UNISP_NAME; - alias SecPkgInfoA SecPkgInfo; - alias PSecPkgInfoA PSecPkgInfo; - alias SecPkgCredentials_NamesA SecPkgCredentials_Names; - alias PSecPkgCredentials_NamesA PSecPkgCredentials_Names; - alias SecPkgContext_AuthorityA SecPkgContext_Authority; - alias PSecPkgContext_AuthorityA PSecPkgContext_Authority; - alias SecPkgContext_KeyInfoA SecPkgContext_KeyInfo; - alias PSecPkgContext_KeyInfoA PSecPkgContext_KeyInfo; - alias SecPkgContext_NamesA SecPkgContext_Names; - alias PSecPkgContext_NamesA PSecPkgContext_Names; - alias SecurityFunctionTableA SecurityFunctionTable; - alias PSecurityFunctionTableA PSecurityFunctionTable; - alias AcquireCredentialsHandleA AcquireCredentialsHandle; - alias EnumerateSecurityPackagesA EnumerateSecurityPackages; - alias InitializeSecurityContextA InitializeSecurityContext; - alias QueryContextAttributesA QueryContextAttributes; - alias QueryCredentialsAttributesA QueryCredentialsAttributes; - alias QuerySecurityPackageInfoA QuerySecurityPackageInfo; - alias ApplyControlTokenA ApplyControlToken; - alias ENUMERATE_SECURITY_PACKAGES_FN_A ENUMERATE_SECURITY_PACKAGES_FN; - alias QUERY_CREDENTIALS_ATTRIBUTES_FN_A QUERY_CREDENTIALS_ATTRIBUTES_FN; - alias ACQUIRE_CREDENTIALS_HANDLE_FN_A ACQUIRE_CREDENTIALS_HANDLE_FN; - alias INITIALIZE_SECURITY_CONTEXT_FN_A INITIALIZE_SECURITY_CONTEXT_FN; - alias APPLY_CONTROL_TOKEN_FN_A APPLY_CONTROL_TOKEN_FN; - alias QUERY_CONTEXT_ATTRIBUTES_FN_A QUERY_CONTEXT_ATTRIBUTES_FN; - alias QUERY_SECURITY_PACKAGE_INFO_FN_A QUERY_SECURITY_PACKAGE_INFO_FN; - alias INIT_SECURITY_INTERFACE_A INIT_SECURITY_INTERFACE; -} - +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Ellery Newcomer + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_sspi.d) + */ +module core.sys.windows.sspi; + +import core.sys.windows.windef; +import core.sys.windows.ntdef; +import core.sys.windows.w32api; +import core.sys.windows.security; +import core.sys.windows.ntsecapi; +import core.sys.windows.subauth; + +enum :ULONG{ + SECPKG_CRED_INBOUND = 1, + SECPKG_CRED_OUTBOUND = 2, + SECPKG_CRED_BOTH = (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND), + SECPKG_CRED_ATTR_NAMES = 1, +} + +enum :ULONG{ + SECPKG_FLAG_INTEGRITY = 1, + SECPKG_FLAG_PRIVACY = 2, + SECPKG_FLAG_TOKEN_ONLY = 4, + SECPKG_FLAG_DATAGRAM = 8, + SECPKG_FLAG_CONNECTION = 16, + SECPKG_FLAG_MULTI_REQUIRED = 32, + SECPKG_FLAG_CLIENT_ONLY = 64, + SECPKG_FLAG_EXTENDED_ERROR = 128, + SECPKG_FLAG_IMPERSONATION = 256, + SECPKG_FLAG_ACCEPT_WIN32_NAME = 512, + SECPKG_FLAG_STREAM = 1024, +} + +enum :ULONG{ + SECPKG_ATTR_AUTHORITY = 6, + SECPKG_ATTR_CONNECTION_INFO = 90, + SECPKG_ATTR_ISSUER_LIST = 80, + SECPKG_ATTR_ISSUER_LIST_EX = 89, + SECPKG_ATTR_KEY_INFO = 5, + SECPKG_ATTR_LIFESPAN = 2, + SECPKG_ATTR_LOCAL_CERT_CONTEXT = 84, + SECPKG_ATTR_LOCAL_CRED = 82, + SECPKG_ATTR_NAMES = 1, + SECPKG_ATTR_PROTO_INFO = 7, + SECPKG_ATTR_REMOTE_CERT_CONTEXT = 83, + SECPKG_ATTR_REMOTE_CRED = 81, + SECPKG_ATTR_SIZES = 0, + SECPKG_ATTR_STREAM_SIZES = 4, +} + +enum :ULONG{ + SECBUFFER_EMPTY = 0, + SECBUFFER_DATA = 1, + SECBUFFER_TOKEN = 2, + SECBUFFER_PKG_PARAMS = 3, + SECBUFFER_MISSING = 4, + SECBUFFER_EXTRA = 5, + SECBUFFER_STREAM_TRAILER = 6, + SECBUFFER_STREAM_HEADER = 7, + SECBUFFER_PADDING = 9, + SECBUFFER_STREAM = 10, + SECBUFFER_READONLY = 0x80000000, + SECBUFFER_ATTRMASK = 0xf0000000, +} + +enum UNISP_NAME_A = "Microsoft Unified Security Protocol Provider"; +enum UNISP_NAME_W = "Microsoft Unified Security Protocol Provider"w; +enum SECBUFFER_VERSION = 0; + +alias UNICODE_STRING SECURITY_STRING; +alias UNICODE_STRING* PSECURITY_STRING; + +extern(Windows): + +struct SecHandle { + ULONG_PTR dwLower; + ULONG_PTR dwUpper; +} +alias SecHandle* PSecHandle; +struct SecBuffer { + ULONG cbBuffer; + ULONG BufferType; + PVOID pvBuffer; +} +alias SecBuffer* PSecBuffer; +alias SecHandle CredHandle; +alias PSecHandle PCredHandle; +alias SecHandle CtxtHandle; +alias PSecHandle PCtxtHandle; +struct SECURITY_INTEGER { + uint LowPart; + int HighPart; +} +alias SECURITY_INTEGER TimeStamp; +alias SECURITY_INTEGER* PTimeStamp; +struct SecBufferDesc { + ULONG ulVersion; + ULONG cBuffers; + PSecBuffer pBuffers; +} +alias SecBufferDesc* PSecBufferDesc; +struct SecPkgContext_StreamSizes { + ULONG cbHeader; + ULONG cbTrailer; + ULONG cbMaximumMessage; + ULONG cBuffers; + ULONG cbBlockSize; +} +alias SecPkgContext_StreamSizes* PSecPkgContext_StreamSizes; +struct SecPkgContext_Sizes { + ULONG cbMaxToken; + ULONG cbMaxSignature; + ULONG cbBlockSize; + ULONG cbSecurityTrailer; +} +alias SecPkgContext_Sizes* PSecPkgContext_Sizes; +struct SecPkgContext_AuthorityW { + SEC_WCHAR* sAuthorityName; +} +alias SecPkgContext_AuthorityW* PSecPkgContext_AuthorityW; +struct SecPkgContext_AuthorityA { + SEC_CHAR* sAuthorityName; +} +alias SecPkgContext_AuthorityA* PSecPkgContext_AuthorityA; +struct SecPkgContext_KeyInfoW { + SEC_WCHAR* sSignatureAlgorithmName; + SEC_WCHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; +} +alias SecPkgContext_KeyInfoW* PSecPkgContext_KeyInfoW; +struct SecPkgContext_KeyInfoA { + SEC_CHAR* sSignatureAlgorithmName; + SEC_CHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; +} +alias SecPkgContext_KeyInfoA* PSecPkgContext_KeyInfoA; +struct SecPkgContext_LifeSpan { + TimeStamp tsStart; + TimeStamp tsExpiry; +} +alias SecPkgContext_LifeSpan* PSecPkgContext_LifeSpan; +struct SecPkgContext_NamesW { + SEC_WCHAR* sUserName; +} +alias SecPkgContext_NamesW* PSecPkgContext_NamesW; +struct SecPkgContext_NamesA { + SEC_CHAR* sUserName; +} +alias SecPkgContext_NamesA* PSecPkgContext_NamesA; +struct SecPkgInfoW { + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_WCHAR* Name; + SEC_WCHAR* Comment; +} +alias SecPkgInfoW* PSecPkgInfoW; +struct SecPkgInfoA { + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_CHAR* Name; + SEC_CHAR* Comment; +} +alias SecPkgInfoA* PSecPkgInfoA; +/* supported only in win2k+, so it should be a PSecPkgInfoW */ +/* PSDK does not say it has ANSI/Unicode versions */ +struct SecPkgContext_PackageInfo { + PSecPkgInfoW PackageInfo; +} +alias SecPkgContext_PackageInfo* PSecPkgContext_PackageInfo; +struct SecPkgCredentials_NamesW { + SEC_WCHAR* sUserName; +} +alias SecPkgCredentials_NamesW* PSecPkgCredentials_NamesW; +struct SecPkgCredentials_NamesA { + SEC_CHAR* sUserName; +} +alias SecPkgCredentials_NamesA* PSecPkgCredentials_NamesA; + +/* TODO: missing type in SDK */ +alias void function() SEC_GET_KEY_FN; + +alias SECURITY_STATUS function(PULONG,PSecPkgInfoW*) ENUMERATE_SECURITY_PACKAGES_FN_W; +alias SECURITY_STATUS function(PULONG,PSecPkgInfoA*) ENUMERATE_SECURITY_PACKAGES_FN_A; +alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_W; +alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_A; +alias SECURITY_STATUS function(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_W; +alias SECURITY_STATUS function(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_A; +alias SECURITY_STATUS function(PCredHandle) FREE_CREDENTIALS_HANDLE_FN; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_W; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_A; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) ACCEPT_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) COMPLETE_AUTH_TOKEN_FN; +alias SECURITY_STATUS function(PCtxtHandle) DELETE_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_W; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_W; +alias SECURITY_STATUS function(PCtxtHandle) IMPERSONATE_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle) REVERT_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) MAKE_SIGNATURE_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) VERIFY_SIGNATURE_FN; +alias SECURITY_STATUS function(PVOID) FREE_CONTEXT_BUFFER_FN; +alias SECURITY_STATUS function(SEC_CHAR*,PSecPkgInfoA*) QUERY_SECURITY_PACKAGE_INFO_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,HANDLE*) QUERY_SECURITY_CONTEXT_TOKEN_FN; +alias SECURITY_STATUS function(SEC_WCHAR*,PSecPkgInfoW*) QUERY_SECURITY_PACKAGE_INFO_FN_W; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) ENCRYPT_MESSAGE_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) DECRYPT_MESSAGE_FN; + +/* No, it really is FreeCredentialsHandle, see the thread beginning + * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a + * discovery discussion. */ +struct SecurityFunctionTableW{ + uint dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; + QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; + ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW; + QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; + void* Reserved3; + void* Reserved4; + void* Reserved5; + void* Reserved6; + void* Reserved7; + void* Reserved8; + QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} +alias SecurityFunctionTableW* PSecurityFunctionTableW; +struct SecurityFunctionTableA{ + uint dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; + QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; + ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA; + QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; + void* Reserved3; + void* Reserved4; + void* Unknown1; + void* Unknown2; + void* Unknown3; + void* Unknown4; + void* Unknown5; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} +alias SecurityFunctionTableA* PSecurityFunctionTableA; +alias PSecurityFunctionTableA function() INIT_SECURITY_INTERFACE_A; +alias PSecurityFunctionTableW function() INIT_SECURITY_INTERFACE_W; + +SECURITY_STATUS FreeCredentialsHandle(PCredHandle); +SECURITY_STATUS EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*); +SECURITY_STATUS EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*); +SECURITY_STATUS AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +SECURITY_STATUS AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +SECURITY_STATUS AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS FreeContextBuffer(PVOID); +SECURITY_STATUS QueryContextAttributesA(PCtxtHandle,ULONG,PVOID); +SECURITY_STATUS QueryContextAttributesW(PCtxtHandle,ULONG,PVOID); +SECURITY_STATUS QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID); +SECURITY_STATUS QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID); +static if(_WIN32_WINNT >= 0x500){ + SECURITY_STATUS QuerySecurityContextToken(PCtxtHandle,HANDLE*); +} +SECURITY_STATUS DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +SECURITY_STATUS EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +SECURITY_STATUS DeleteSecurityContext(PCtxtHandle); +SECURITY_STATUS CompleteAuthToken(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ApplyControlTokenA(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ApplyControlTokenW(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ImpersonateSecurityContext(PCtxtHandle); +SECURITY_STATUS RevertSecurityContext(PCtxtHandle); +SECURITY_STATUS MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +SECURITY_STATUS VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +SECURITY_STATUS QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*); +SECURITY_STATUS QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*); +PSecurityFunctionTableA InitSecurityInterfaceA(); +PSecurityFunctionTableW InitSecurityInterfaceW(); + +version(Unicode) { + alias UNISP_NAME_W UNISP_NAME; + alias SecPkgInfoW SecPkgInfo; + alias PSecPkgInfoW PSecPkgInfo; + alias SecPkgCredentials_NamesW SecPkgCredentials_Names; + alias PSecPkgCredentials_NamesW PSecPkgCredentials_Names; + alias SecPkgContext_AuthorityW SecPkgContext_Authority; + alias PSecPkgContext_AuthorityW PSecPkgContext_Authority; + alias SecPkgContext_KeyInfoW SecPkgContext_KeyInfo; + alias PSecPkgContext_KeyInfoW PSecPkgContext_KeyInfo; + alias SecPkgContext_NamesW SecPkgContext_Names; + alias PSecPkgContext_NamesW PSecPkgContext_Names; + alias SecurityFunctionTableW SecurityFunctionTable; + alias PSecurityFunctionTableW PSecurityFunctionTable; + alias AcquireCredentialsHandleW AcquireCredentialsHandle; + alias EnumerateSecurityPackagesW EnumerateSecurityPackages; + alias InitializeSecurityContextW InitializeSecurityContext; + alias QueryContextAttributesW QueryContextAttributes; + alias QueryCredentialsAttributesW QueryCredentialsAttributes; + alias QuerySecurityPackageInfoW QuerySecurityPackageInfo; + alias ApplyControlTokenW ApplyControlToken; + alias ENUMERATE_SECURITY_PACKAGES_FN_W ENUMERATE_SECURITY_PACKAGES_FN; + alias QUERY_CREDENTIALS_ATTRIBUTES_FN_W QUERY_CREDENTIALS_ATTRIBUTES_FN; + alias ACQUIRE_CREDENTIALS_HANDLE_FN_W ACQUIRE_CREDENTIALS_HANDLE_FN; + alias INITIALIZE_SECURITY_CONTEXT_FN_W INITIALIZE_SECURITY_CONTEXT_FN; + alias APPLY_CONTROL_TOKEN_FN_W APPLY_CONTROL_TOKEN_FN; + alias QUERY_CONTEXT_ATTRIBUTES_FN_W QUERY_CONTEXT_ATTRIBUTES_FN; + alias QUERY_SECURITY_PACKAGE_INFO_FN_W QUERY_SECURITY_PACKAGE_INFO_FN; + alias INIT_SECURITY_INTERFACE_W INIT_SECURITY_INTERFACE; +}else{ + alias UNISP_NAME_A UNISP_NAME; + alias SecPkgInfoA SecPkgInfo; + alias PSecPkgInfoA PSecPkgInfo; + alias SecPkgCredentials_NamesA SecPkgCredentials_Names; + alias PSecPkgCredentials_NamesA PSecPkgCredentials_Names; + alias SecPkgContext_AuthorityA SecPkgContext_Authority; + alias PSecPkgContext_AuthorityA PSecPkgContext_Authority; + alias SecPkgContext_KeyInfoA SecPkgContext_KeyInfo; + alias PSecPkgContext_KeyInfoA PSecPkgContext_KeyInfo; + alias SecPkgContext_NamesA SecPkgContext_Names; + alias PSecPkgContext_NamesA PSecPkgContext_Names; + alias SecurityFunctionTableA SecurityFunctionTable; + alias PSecurityFunctionTableA PSecurityFunctionTable; + alias AcquireCredentialsHandleA AcquireCredentialsHandle; + alias EnumerateSecurityPackagesA EnumerateSecurityPackages; + alias InitializeSecurityContextA InitializeSecurityContext; + alias QueryContextAttributesA QueryContextAttributes; + alias QueryCredentialsAttributesA QueryCredentialsAttributes; + alias QuerySecurityPackageInfoA QuerySecurityPackageInfo; + alias ApplyControlTokenA ApplyControlToken; + alias ENUMERATE_SECURITY_PACKAGES_FN_A ENUMERATE_SECURITY_PACKAGES_FN; + alias QUERY_CREDENTIALS_ATTRIBUTES_FN_A QUERY_CREDENTIALS_ATTRIBUTES_FN; + alias ACQUIRE_CREDENTIALS_HANDLE_FN_A ACQUIRE_CREDENTIALS_HANDLE_FN; + alias INITIALIZE_SECURITY_CONTEXT_FN_A INITIALIZE_SECURITY_CONTEXT_FN; + alias APPLY_CONTROL_TOKEN_FN_A APPLY_CONTROL_TOKEN_FN; + alias QUERY_CONTEXT_ATTRIBUTES_FN_A QUERY_CONTEXT_ATTRIBUTES_FN; + alias QUERY_SECURITY_PACKAGE_INFO_FN_A QUERY_SECURITY_PACKAGE_INFO_FN; + alias INIT_SECURITY_INTERFACE_A INIT_SECURITY_INTERFACE; +} + diff --git a/src/core/sys/windows/subauth.d b/src/core/sys/windows/subauth.d index c42145653e..48263bfc36 100644 --- a/src/core/sys/windows/subauth.d +++ b/src/core/sys/windows/subauth.d @@ -1,274 +1,274 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_subauth.d) - */ -module core.sys.windows.subauth; - -private import core.sys.windows.ntdef, core.sys.windows.windef; - -/+ -alias LONG NTSTATUS; -alias NTSTATUS* PNTSTATUS; -+/ - -enum : ULONG { - MSV1_0_PASSTHRU = 1, - MSV1_0_GUEST_LOGON = 2 -} - -// USER_ALL_INFORMATION.WhichFields (Undocumented) -const ULONG - MSV1_0_VALIDATION_LOGOFF_TIME = 1, - MSV1_0_VALIDATION_KICKOFF_TIME = 2, - MSV1_0_VALIDATION_LOGON_SERVER = 4, - MSV1_0_VALIDATION_LOGON_DOMAIN = 8, - MSV1_0_VALIDATION_SESSION_KEY = 16, - MSV1_0_VALIDATION_USER_FLAGS = 32, - MSV1_0_VALIDATION_USER_ID = 64; - -// ?ActionsPerformed? (Undocumented) -const MSV1_0_SUBAUTH_ACCOUNT_DISABLED = 1; -const MSV1_0_SUBAUTH_PASSWORD = 2; -const MSV1_0_SUBAUTH_WORKSTATIONS = 4; -const MSV1_0_SUBAUTH_LOGON_HOURS = 8; -const MSV1_0_SUBAUTH_ACCOUNT_EXPIRY = 16; -const MSV1_0_SUBAUTH_PASSWORD_EXPIRY = 32; -const MSV1_0_SUBAUTH_ACCOUNT_TYPE = 64; -const MSV1_0_SUBAUTH_LOCKOUT = 128; - -const NEXT_FREE_ACCOUNT_CONTROL_BIT = 131072; - -const SAM_DAYS_PER_WEEK = 7; -const SAM_HOURS_PER_WEEK = 168; -const SAM_MINUTES_PER_WEEK = 10080; - -enum : NTSTATUS { - STATUS_SUCCESS = 0, - STATUS_INVALID_INFO_CLASS = 0xC0000003, - STATUS_NO_SUCH_USER = 0xC0000064, - STATUS_WRONG_PASSWORD = 0xC000006A, - STATUS_PASSWORD_RESTRICTION = 0xC000006C, - STATUS_LOGON_FAILURE = 0xC000006D, - STATUS_ACCOUNT_RESTRICTION = 0xC000006E, - STATUS_INVALID_LOGON_HOURS = 0xC000006F, - STATUS_INVALID_WORKSTATION = 0xC0000070, - STATUS_PASSWORD_EXPIRED = 0xC0000071, - STATUS_ACCOUNT_DISABLED = 0xC0000072, - STATUS_INSUFFICIENT_RESOURCES = 0xC000009A, - STATUS_ACCOUNT_EXPIRED = 0xC0000193, - STATUS_PASSWORD_MUST_CHANGE = 0xC0000224, - STATUS_ACCOUNT_LOCKED_OUT = 0xC0000234 -} - -// Note: undocumented in MSDN -// USER_ALL_INFORMATION.UserAccountControl -const ULONG - USER_ACCOUNT_DISABLED = 1, - USER_HOME_DIRECTORY_REQUIRED = 2, - USER_PASSWORD_NOT_REQUIRED = 4, - USER_TEMP_DUPLICATE_ACCOUNT = 8, - USER_NORMAL_ACCOUNT = 16, - USER_MNS_LOGON_ACCOUNT = 32, - USER_INTERDOMAIN_TRUST_ACCOUNT = 64, - USER_WORKSTATION_TRUST_ACCOUNT = 128, - USER_SERVER_TRUST_ACCOUNT = 256, - USER_DONT_EXPIRE_PASSWORD = 512, - USER_ACCOUNT_AUTO_LOCKED = 1024, - USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 2048, - USER_SMARTCARD_REQUIRED = 4096, - USER_TRUSTED_FOR_DELEGATION = 8192, - USER_NOT_DELEGATED = 16384, - USER_USE_DES_KEY_ONLY = 32768, - USER_DONT_REQUIRE_PREAUTH = 65536, - - USER_MACHINE_ACCOUNT_MASK = 448, - USER_ACCOUNT_TYPE_MASK = 472, - USER_ALL_PARAMETERS = 2097152; - -/+ -struct UNICODE_STRING { - USHORT Length; - USHORT MaximumLength; - PWSTR Buffer; -} -alias UNICODE_STRING* PUNICODE_STRING; - -struct STRING { - USHORT Length; - USHORT MaximumLength; - PCHAR Buffer; -} -alias STRING* PSTRING; -+/ - -mixin DECLARE_HANDLE!("SAM_HANDLE"); -alias SAM_HANDLE* PSAM_HANDLE; - -struct OLD_LARGE_INTEGER { - ULONG LowPart; - LONG HighPart; -} -alias OLD_LARGE_INTEGER* POLD_LARGE_INTEGER; - -enum NETLOGON_LOGON_INFO_CLASS { - NetlogonInteractiveInformation = 1, - NetlogonNetworkInformation, - NetlogonServiceInformation, - NetlogonGenericInformation, - NetlogonInteractiveTransitiveInformation, - NetlogonNetworkTransitiveInformation, - NetlogonServiceTransitiveInformation -} - - -const CYPHER_BLOCK_LENGTH = 8; -const USER_SESSION_KEY_LENGTH = CYPHER_BLOCK_LENGTH * 2; -const CLEAR_BLOCK_LENGTH = 8; - -struct CYPHER_BLOCK { - CHAR[CYPHER_BLOCK_LENGTH] data; -} -alias CYPHER_BLOCK* PCYPHER_BLOCK; - -struct CLEAR_BLOCK { - CHAR[CLEAR_BLOCK_LENGTH] data; -} -alias CLEAR_BLOCK* PCLEAR_BLOCK; - -struct LM_OWF_PASSWORD { - CYPHER_BLOCK[2] data; -} -alias LM_OWF_PASSWORD* PLM_OWF_PASSWORD; - -struct USER_SESSION_KEY { - CYPHER_BLOCK[2] data; -} -alias USER_SESSION_KEY* PUSER_SESSION_KEY; - -alias CLEAR_BLOCK LM_CHALLENGE; -alias LM_CHALLENGE* PLM_CHALLENGE; - -alias LM_OWF_PASSWORD NT_OWF_PASSWORD; -alias NT_OWF_PASSWORD* PNT_OWF_PASSWORD; -alias LM_CHALLENGE NT_CHALLENGE; -alias NT_CHALLENGE* PNT_CHALLENGE; - -struct LOGON_HOURS { - USHORT UnitsPerWeek; - PUCHAR LogonHours; -} -alias LOGON_HOURS* PLOGON_HOURS; - -struct SR_SECURITY_DESCRIPTOR { - ULONG Length; - PUCHAR SecurityDescriptor; -} -alias SR_SECURITY_DESCRIPTOR* PSR_SECURITY_DESCRIPTOR; - -align(4): -struct USER_ALL_INFORMATION { - LARGE_INTEGER LastLogon; - LARGE_INTEGER LastLogoff; - LARGE_INTEGER PasswordLastSet; - LARGE_INTEGER AccountExpires; - LARGE_INTEGER PasswordCanChange; - LARGE_INTEGER PasswordMustChange; - UNICODE_STRING UserName; - UNICODE_STRING FullName; - UNICODE_STRING HomeDirectory; - UNICODE_STRING HomeDirectoryDrive; - UNICODE_STRING ScriptPath; - UNICODE_STRING ProfilePath; - UNICODE_STRING AdminComment; - UNICODE_STRING WorkStations; - UNICODE_STRING UserComment; - UNICODE_STRING Parameters; - UNICODE_STRING LmPassword; - UNICODE_STRING NtPassword; - UNICODE_STRING PrivateData; - SR_SECURITY_DESCRIPTOR SecurityDescriptor; - ULONG UserId; - ULONG PrimaryGroupId; - ULONG UserAccountControl; - ULONG WhichFields; - LOGON_HOURS LogonHours; - USHORT BadPasswordCount; - USHORT LogonCount; - USHORT CountryCode; - USHORT CodePage; - BOOLEAN LmPasswordPresent; - BOOLEAN NtPasswordPresent; - BOOLEAN PasswordExpired; - BOOLEAN PrivateDataSensitive; -} -alias USER_ALL_INFORMATION* PUSER_ALL_INFORMATION; -align: - -struct MSV1_0_VALIDATION_INFO { - LARGE_INTEGER LogoffTime; - LARGE_INTEGER KickoffTime; - UNICODE_STRING LogonServer; - UNICODE_STRING LogonDomainName; - USER_SESSION_KEY SessionKey; - BOOLEAN Authoritative; - ULONG UserFlags; - ULONG WhichFields; - ULONG UserId; -} -alias MSV1_0_VALIDATION_INFO* PMSV1_0_VALIDATION_INFO; - -struct NETLOGON_LOGON_IDENTITY_INFO { - UNICODE_STRING LogonDomainName; - ULONG ParameterControl; - OLD_LARGE_INTEGER LogonId; - UNICODE_STRING UserName; - UNICODE_STRING Workstation; -} -alias NETLOGON_LOGON_IDENTITY_INFO* PNETLOGON_LOGON_IDENTITY_INFO; - -struct NETLOGON_INTERACTIVE_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - LM_OWF_PASSWORD LmOwfPassword; - NT_OWF_PASSWORD NtOwfPassword; -} -alias NETLOGON_INTERACTIVE_INFO* PNETLOGON_INTERACTIVE_INFO; - -struct NETLOGON_GENERIC_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - UNICODE_STRING PackageName; - ULONG DataLength; - PUCHAR LogonData; -} -alias NETLOGON_GENERIC_INFO* PNETLOGON_GENERIC_INFO; - -struct NETLOGON_NETWORK_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - LM_CHALLENGE LmChallenge; - STRING NtChallengeResponse; - STRING LmChallengeResponse; -} -alias NETLOGON_NETWORK_INFO* PNETLOGON_NETWORK_INFO; - -struct NETLOGON_SERVICE_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - LM_OWF_PASSWORD LmOwfPassword; - NT_OWF_PASSWORD NtOwfPassword; -} -alias NETLOGON_SERVICE_INFO* PNETLOGON_SERVICE_INFO; - -extern (Windows) { -NTSTATUS Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID, - ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, - PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); -NTSTATUS Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID, - ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, - PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); -NTSTATUS Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*); -NTSTATUS Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID, - ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, - PMSV1_0_VALIDATION_INFO,PULONG); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_subauth.d) + */ +module core.sys.windows.subauth; + +private import core.sys.windows.ntdef, core.sys.windows.windef; + +/+ +alias LONG NTSTATUS; +alias NTSTATUS* PNTSTATUS; ++/ + +enum : ULONG { + MSV1_0_PASSTHRU = 1, + MSV1_0_GUEST_LOGON = 2 +} + +// USER_ALL_INFORMATION.WhichFields (Undocumented) +const ULONG + MSV1_0_VALIDATION_LOGOFF_TIME = 1, + MSV1_0_VALIDATION_KICKOFF_TIME = 2, + MSV1_0_VALIDATION_LOGON_SERVER = 4, + MSV1_0_VALIDATION_LOGON_DOMAIN = 8, + MSV1_0_VALIDATION_SESSION_KEY = 16, + MSV1_0_VALIDATION_USER_FLAGS = 32, + MSV1_0_VALIDATION_USER_ID = 64; + +// ?ActionsPerformed? (Undocumented) +const MSV1_0_SUBAUTH_ACCOUNT_DISABLED = 1; +const MSV1_0_SUBAUTH_PASSWORD = 2; +const MSV1_0_SUBAUTH_WORKSTATIONS = 4; +const MSV1_0_SUBAUTH_LOGON_HOURS = 8; +const MSV1_0_SUBAUTH_ACCOUNT_EXPIRY = 16; +const MSV1_0_SUBAUTH_PASSWORD_EXPIRY = 32; +const MSV1_0_SUBAUTH_ACCOUNT_TYPE = 64; +const MSV1_0_SUBAUTH_LOCKOUT = 128; + +const NEXT_FREE_ACCOUNT_CONTROL_BIT = 131072; + +const SAM_DAYS_PER_WEEK = 7; +const SAM_HOURS_PER_WEEK = 168; +const SAM_MINUTES_PER_WEEK = 10080; + +enum : NTSTATUS { + STATUS_SUCCESS = 0, + STATUS_INVALID_INFO_CLASS = 0xC0000003, + STATUS_NO_SUCH_USER = 0xC0000064, + STATUS_WRONG_PASSWORD = 0xC000006A, + STATUS_PASSWORD_RESTRICTION = 0xC000006C, + STATUS_LOGON_FAILURE = 0xC000006D, + STATUS_ACCOUNT_RESTRICTION = 0xC000006E, + STATUS_INVALID_LOGON_HOURS = 0xC000006F, + STATUS_INVALID_WORKSTATION = 0xC0000070, + STATUS_PASSWORD_EXPIRED = 0xC0000071, + STATUS_ACCOUNT_DISABLED = 0xC0000072, + STATUS_INSUFFICIENT_RESOURCES = 0xC000009A, + STATUS_ACCOUNT_EXPIRED = 0xC0000193, + STATUS_PASSWORD_MUST_CHANGE = 0xC0000224, + STATUS_ACCOUNT_LOCKED_OUT = 0xC0000234 +} + +// Note: undocumented in MSDN +// USER_ALL_INFORMATION.UserAccountControl +const ULONG + USER_ACCOUNT_DISABLED = 1, + USER_HOME_DIRECTORY_REQUIRED = 2, + USER_PASSWORD_NOT_REQUIRED = 4, + USER_TEMP_DUPLICATE_ACCOUNT = 8, + USER_NORMAL_ACCOUNT = 16, + USER_MNS_LOGON_ACCOUNT = 32, + USER_INTERDOMAIN_TRUST_ACCOUNT = 64, + USER_WORKSTATION_TRUST_ACCOUNT = 128, + USER_SERVER_TRUST_ACCOUNT = 256, + USER_DONT_EXPIRE_PASSWORD = 512, + USER_ACCOUNT_AUTO_LOCKED = 1024, + USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 2048, + USER_SMARTCARD_REQUIRED = 4096, + USER_TRUSTED_FOR_DELEGATION = 8192, + USER_NOT_DELEGATED = 16384, + USER_USE_DES_KEY_ONLY = 32768, + USER_DONT_REQUIRE_PREAUTH = 65536, + + USER_MACHINE_ACCOUNT_MASK = 448, + USER_ACCOUNT_TYPE_MASK = 472, + USER_ALL_PARAMETERS = 2097152; + +/+ +struct UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} +alias UNICODE_STRING* PUNICODE_STRING; + +struct STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} +alias STRING* PSTRING; ++/ + +mixin DECLARE_HANDLE!("SAM_HANDLE"); +alias SAM_HANDLE* PSAM_HANDLE; + +struct OLD_LARGE_INTEGER { + ULONG LowPart; + LONG HighPart; +} +alias OLD_LARGE_INTEGER* POLD_LARGE_INTEGER; + +enum NETLOGON_LOGON_INFO_CLASS { + NetlogonInteractiveInformation = 1, + NetlogonNetworkInformation, + NetlogonServiceInformation, + NetlogonGenericInformation, + NetlogonInteractiveTransitiveInformation, + NetlogonNetworkTransitiveInformation, + NetlogonServiceTransitiveInformation +} + + +const CYPHER_BLOCK_LENGTH = 8; +const USER_SESSION_KEY_LENGTH = CYPHER_BLOCK_LENGTH * 2; +const CLEAR_BLOCK_LENGTH = 8; + +struct CYPHER_BLOCK { + CHAR[CYPHER_BLOCK_LENGTH] data; +} +alias CYPHER_BLOCK* PCYPHER_BLOCK; + +struct CLEAR_BLOCK { + CHAR[CLEAR_BLOCK_LENGTH] data; +} +alias CLEAR_BLOCK* PCLEAR_BLOCK; + +struct LM_OWF_PASSWORD { + CYPHER_BLOCK[2] data; +} +alias LM_OWF_PASSWORD* PLM_OWF_PASSWORD; + +struct USER_SESSION_KEY { + CYPHER_BLOCK[2] data; +} +alias USER_SESSION_KEY* PUSER_SESSION_KEY; + +alias CLEAR_BLOCK LM_CHALLENGE; +alias LM_CHALLENGE* PLM_CHALLENGE; + +alias LM_OWF_PASSWORD NT_OWF_PASSWORD; +alias NT_OWF_PASSWORD* PNT_OWF_PASSWORD; +alias LM_CHALLENGE NT_CHALLENGE; +alias NT_CHALLENGE* PNT_CHALLENGE; + +struct LOGON_HOURS { + USHORT UnitsPerWeek; + PUCHAR LogonHours; +} +alias LOGON_HOURS* PLOGON_HOURS; + +struct SR_SECURITY_DESCRIPTOR { + ULONG Length; + PUCHAR SecurityDescriptor; +} +alias SR_SECURITY_DESCRIPTOR* PSR_SECURITY_DESCRIPTOR; + +align(4): +struct USER_ALL_INFORMATION { + LARGE_INTEGER LastLogon; + LARGE_INTEGER LastLogoff; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER AccountExpires; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING UserName; + UNICODE_STRING FullName; + UNICODE_STRING HomeDirectory; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING ScriptPath; + UNICODE_STRING ProfilePath; + UNICODE_STRING AdminComment; + UNICODE_STRING WorkStations; + UNICODE_STRING UserComment; + UNICODE_STRING Parameters; + UNICODE_STRING LmPassword; + UNICODE_STRING NtPassword; + UNICODE_STRING PrivateData; + SR_SECURITY_DESCRIPTOR SecurityDescriptor; + ULONG UserId; + ULONG PrimaryGroupId; + ULONG UserAccountControl; + ULONG WhichFields; + LOGON_HOURS LogonHours; + USHORT BadPasswordCount; + USHORT LogonCount; + USHORT CountryCode; + USHORT CodePage; + BOOLEAN LmPasswordPresent; + BOOLEAN NtPasswordPresent; + BOOLEAN PasswordExpired; + BOOLEAN PrivateDataSensitive; +} +alias USER_ALL_INFORMATION* PUSER_ALL_INFORMATION; +align: + +struct MSV1_0_VALIDATION_INFO { + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickoffTime; + UNICODE_STRING LogonServer; + UNICODE_STRING LogonDomainName; + USER_SESSION_KEY SessionKey; + BOOLEAN Authoritative; + ULONG UserFlags; + ULONG WhichFields; + ULONG UserId; +} +alias MSV1_0_VALIDATION_INFO* PMSV1_0_VALIDATION_INFO; + +struct NETLOGON_LOGON_IDENTITY_INFO { + UNICODE_STRING LogonDomainName; + ULONG ParameterControl; + OLD_LARGE_INTEGER LogonId; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; +} +alias NETLOGON_LOGON_IDENTITY_INFO* PNETLOGON_LOGON_IDENTITY_INFO; + +struct NETLOGON_INTERACTIVE_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; +} +alias NETLOGON_INTERACTIVE_INFO* PNETLOGON_INTERACTIVE_INFO; + +struct NETLOGON_GENERIC_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + UNICODE_STRING PackageName; + ULONG DataLength; + PUCHAR LogonData; +} +alias NETLOGON_GENERIC_INFO* PNETLOGON_GENERIC_INFO; + +struct NETLOGON_NETWORK_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_CHALLENGE LmChallenge; + STRING NtChallengeResponse; + STRING LmChallengeResponse; +} +alias NETLOGON_NETWORK_INFO* PNETLOGON_NETWORK_INFO; + +struct NETLOGON_SERVICE_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; +} +alias NETLOGON_SERVICE_INFO* PNETLOGON_SERVICE_INFO; + +extern (Windows) { +NTSTATUS Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); +NTSTATUS Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); +NTSTATUS Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*); +NTSTATUS Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, + PMSV1_0_VALIDATION_INFO,PULONG); +} diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index a26f685ab7..524e361d2a 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -1,168 +1,168 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_tlhelp32.d) - */ -module core.sys.windows.tlhelp32; - -private import core.sys.windows.windef; - -enum : uint { - HF32_DEFAULT = 1, - HF32_SHARED -} - -enum : uint { - LF32_FIXED = 0x1, - LF32_FREE = 0x2, - LF32_MOVEABLE = 0x4 -} - -const MAX_MODULE_NAME32 = 255; - -enum : uint { - TH32CS_SNAPHEAPLIST = 0x1, - TH32CS_SNAPPROCESS = 0x2, - TH32CS_SNAPTHREAD = 0x4, - TH32CS_SNAPMODULE = 0x8, - TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE), - TH32CS_INHERIT = 0x80000000 -} - -struct HEAPLIST32 { - SIZE_T dwSize; - DWORD th32ProcessID; - ULONG_PTR th32HeapID; - DWORD dwFlags; -} -alias HEAPLIST32* PHEAPLIST32; -alias HEAPLIST32* LPHEAPLIST32; - -struct HEAPENTRY32 { - SIZE_T dwSize; - HANDLE hHandle; - ULONG_PTR dwAddress; - SIZE_T dwBlockSize; - DWORD dwFlags; - DWORD dwLockCount; - DWORD dwResvd; - DWORD th32ProcessID; - ULONG_PTR th32HeapID; -} -alias HEAPENTRY32* PHEAPENTRY32; -alias HEAPENTRY32* LPHEAPENTRY32; - -struct PROCESSENTRY32W { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ProcessID; - ULONG_PTR th32DefaultHeapID; - DWORD th32ModuleID; - DWORD cntThreads; - DWORD th32ParentProcessID; - LONG pcPriClassBase; - DWORD dwFlags; - WCHAR[MAX_PATH] szExeFile; -} -alias PROCESSENTRY32W* PPROCESSENTRY32W; -alias PROCESSENTRY32W* LPPROCESSENTRY32W; - -struct THREADENTRY32 { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ThreadID; - DWORD th32OwnerProcessID; - LONG tpBasePri; - LONG tpDeltaPri; - DWORD dwFlags; -} -alias THREADENTRY32* PTHREADENTRY32; -alias THREADENTRY32* LPTHREADENTRY32; - -struct MODULEENTRY32W { - DWORD dwSize; - DWORD th32ModuleID; - DWORD th32ProcessID; - DWORD GlblcntUsage; - DWORD ProccntUsage; - BYTE *modBaseAddr; - DWORD modBaseSize; - HMODULE hModule; - WCHAR[MAX_MODULE_NAME32 + 1] szModule; - WCHAR[MAX_PATH] szExePath; -} -alias MODULEENTRY32W* PMODULEENTRY32W; -alias MODULEENTRY32W* LPMODULEENTRY32W; - -version(Unicode) { - alias PROCESSENTRY32W PROCESSENTRY32; - alias PPROCESSENTRY32W PPROCESSENTRY32; - alias LPPROCESSENTRY32W LPPROCESSENTRY32; - - alias MODULEENTRY32W MODULEENTRY32; - alias PMODULEENTRY32W PMODULEENTRY32; - alias LPMODULEENTRY32W LPMODULEENTRY32; -} else { - struct PROCESSENTRY32 { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ProcessID; - ULONG_PTR th32DefaultHeapID; - DWORD th32ModuleID; - DWORD cntThreads; - DWORD th32ParentProcessID; - LONG pcPriClassBase; - DWORD dwFlags; - CHAR[MAX_PATH] szExeFile; - } - alias PROCESSENTRY32* PPROCESSENTRY32; - alias PROCESSENTRY32* LPPROCESSENTRY32; - - struct MODULEENTRY32 { - DWORD dwSize; - DWORD th32ModuleID; - DWORD th32ProcessID; - DWORD GlblcntUsage; - DWORD ProccntUsage; - BYTE *modBaseAddr; - DWORD modBaseSize; - HMODULE hModule; - char[MAX_MODULE_NAME32 + 1] szModule; - char[MAX_PATH] szExePath; - } - alias MODULEENTRY32* PMODULEENTRY32; - alias MODULEENTRY32* LPMODULEENTRY32; -} - - -extern(Windows) { - BOOL Heap32First(LPHEAPENTRY32,DWORD,DWORD); - BOOL Heap32ListFirst(HANDLE,LPHEAPLIST32); - BOOL Heap32ListNext(HANDLE,LPHEAPLIST32); - BOOL Heap32Next(LPHEAPENTRY32); - BOOL Thread32First(HANDLE,LPTHREADENTRY32); - BOOL Thread32Next(HANDLE,LPTHREADENTRY32); - BOOL Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD); - HANDLE CreateToolhelp32Snapshot(DWORD,DWORD); - BOOL Module32FirstW(HANDLE,LPMODULEENTRY32W); - BOOL Module32NextW(HANDLE,LPMODULEENTRY32W); - BOOL Process32FirstW(HANDLE,LPPROCESSENTRY32W); - BOOL Process32NextW(HANDLE,LPPROCESSENTRY32W); -} - -version(Unicode) { - alias Module32FirstW Module32First; - alias Module32NextW Module32Next; - alias Process32FirstW Process32First; - alias Process32NextW Process32Next; -} else { - extern(Windows) { - BOOL Module32First(HANDLE,LPMODULEENTRY32); - BOOL Module32Next(HANDLE,LPMODULEENTRY32); - BOOL Process32First(HANDLE,LPPROCESSENTRY32); - BOOL Process32Next(HANDLE,LPPROCESSENTRY32); - } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_tlhelp32.d) + */ +module core.sys.windows.tlhelp32; + +private import core.sys.windows.windef; + +enum : uint { + HF32_DEFAULT = 1, + HF32_SHARED +} + +enum : uint { + LF32_FIXED = 0x1, + LF32_FREE = 0x2, + LF32_MOVEABLE = 0x4 +} + +const MAX_MODULE_NAME32 = 255; + +enum : uint { + TH32CS_SNAPHEAPLIST = 0x1, + TH32CS_SNAPPROCESS = 0x2, + TH32CS_SNAPTHREAD = 0x4, + TH32CS_SNAPMODULE = 0x8, + TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE), + TH32CS_INHERIT = 0x80000000 +} + +struct HEAPLIST32 { + SIZE_T dwSize; + DWORD th32ProcessID; + ULONG_PTR th32HeapID; + DWORD dwFlags; +} +alias HEAPLIST32* PHEAPLIST32; +alias HEAPLIST32* LPHEAPLIST32; + +struct HEAPENTRY32 { + SIZE_T dwSize; + HANDLE hHandle; + ULONG_PTR dwAddress; + SIZE_T dwBlockSize; + DWORD dwFlags; + DWORD dwLockCount; + DWORD dwResvd; + DWORD th32ProcessID; + ULONG_PTR th32HeapID; +} +alias HEAPENTRY32* PHEAPENTRY32; +alias HEAPENTRY32* LPHEAPENTRY32; + +struct PROCESSENTRY32W { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ProcessID; + ULONG_PTR th32DefaultHeapID; + DWORD th32ModuleID; + DWORD cntThreads; + DWORD th32ParentProcessID; + LONG pcPriClassBase; + DWORD dwFlags; + WCHAR[MAX_PATH] szExeFile; +} +alias PROCESSENTRY32W* PPROCESSENTRY32W; +alias PROCESSENTRY32W* LPPROCESSENTRY32W; + +struct THREADENTRY32 { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ThreadID; + DWORD th32OwnerProcessID; + LONG tpBasePri; + LONG tpDeltaPri; + DWORD dwFlags; +} +alias THREADENTRY32* PTHREADENTRY32; +alias THREADENTRY32* LPTHREADENTRY32; + +struct MODULEENTRY32W { + DWORD dwSize; + DWORD th32ModuleID; + DWORD th32ProcessID; + DWORD GlblcntUsage; + DWORD ProccntUsage; + BYTE *modBaseAddr; + DWORD modBaseSize; + HMODULE hModule; + WCHAR[MAX_MODULE_NAME32 + 1] szModule; + WCHAR[MAX_PATH] szExePath; +} +alias MODULEENTRY32W* PMODULEENTRY32W; +alias MODULEENTRY32W* LPMODULEENTRY32W; + +version(Unicode) { + alias PROCESSENTRY32W PROCESSENTRY32; + alias PPROCESSENTRY32W PPROCESSENTRY32; + alias LPPROCESSENTRY32W LPPROCESSENTRY32; + + alias MODULEENTRY32W MODULEENTRY32; + alias PMODULEENTRY32W PMODULEENTRY32; + alias LPMODULEENTRY32W LPMODULEENTRY32; +} else { + struct PROCESSENTRY32 { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ProcessID; + ULONG_PTR th32DefaultHeapID; + DWORD th32ModuleID; + DWORD cntThreads; + DWORD th32ParentProcessID; + LONG pcPriClassBase; + DWORD dwFlags; + CHAR[MAX_PATH] szExeFile; + } + alias PROCESSENTRY32* PPROCESSENTRY32; + alias PROCESSENTRY32* LPPROCESSENTRY32; + + struct MODULEENTRY32 { + DWORD dwSize; + DWORD th32ModuleID; + DWORD th32ProcessID; + DWORD GlblcntUsage; + DWORD ProccntUsage; + BYTE *modBaseAddr; + DWORD modBaseSize; + HMODULE hModule; + char[MAX_MODULE_NAME32 + 1] szModule; + char[MAX_PATH] szExePath; + } + alias MODULEENTRY32* PMODULEENTRY32; + alias MODULEENTRY32* LPMODULEENTRY32; +} + + +extern(Windows) { + BOOL Heap32First(LPHEAPENTRY32,DWORD,DWORD); + BOOL Heap32ListFirst(HANDLE,LPHEAPLIST32); + BOOL Heap32ListNext(HANDLE,LPHEAPLIST32); + BOOL Heap32Next(LPHEAPENTRY32); + BOOL Thread32First(HANDLE,LPTHREADENTRY32); + BOOL Thread32Next(HANDLE,LPTHREADENTRY32); + BOOL Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD); + HANDLE CreateToolhelp32Snapshot(DWORD,DWORD); + BOOL Module32FirstW(HANDLE,LPMODULEENTRY32W); + BOOL Module32NextW(HANDLE,LPMODULEENTRY32W); + BOOL Process32FirstW(HANDLE,LPPROCESSENTRY32W); + BOOL Process32NextW(HANDLE,LPPROCESSENTRY32W); +} + +version(Unicode) { + alias Module32FirstW Module32First; + alias Module32NextW Module32Next; + alias Process32FirstW Process32First; + alias Process32NextW Process32Next; +} else { + extern(Windows) { + BOOL Module32First(HANDLE,LPMODULEENTRY32); + BOOL Module32Next(HANDLE,LPMODULEENTRY32); + BOOL Process32First(HANDLE,LPPROCESSENTRY32); + BOOL Process32Next(HANDLE,LPPROCESSENTRY32); + } +} diff --git a/src/core/sys/windows/tmschema.d b/src/core/sys/windows/tmschema.d index b03869457a..de182a8849 100644 --- a/src/core/sys/windows/tmschema.d +++ b/src/core/sys/windows/tmschema.d @@ -1,757 +1,757 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_tmschema.d) - */ -module core.sys.windows.tmschema; - -/* BUTTON parts */ -enum { - BP_PUSHBUTTON = 1, - BP_RADIOBUTTON = 2, - BP_CHECKBOX = 3, - BP_GROUPBOX = 4, - BP_USERBUTTON = 5 -} - -enum { - CBS_UNCHECKEDNORMAL = 1, - CBS_UNCHECKEDHOT = 2, - CBS_UNCHECKEDPRESSED = 3, - CBS_UNCHECKEDDISABLED = 4, - CBS_CHECKEDNORMAL = 5, - CBS_CHECKEDHOT = 6, - CBS_CHECKEDPRESSED = 7, - CBS_CHECKEDDISABLED = 8, - CBS_MIXEDNORMAL = 9, - CBS_MIXEDHOT = 10, - CBS_MIXEDPRESSED = 11, - CBS_MIXEDDISABLED = 12 -} - -enum { - GBS_NORMAL = 1, - GBS_DISABLED = 2 -} - -enum { - PBS_NORMAL = 1, - PBS_HOT = 2, - PBS_PRESSED = 3, - PBS_DISABLED = 4, - PBS_DEFAULTED = 5 -} - -enum { - RBS_UNCHECKEDNORMAL = 1, - RBS_UNCHECKEDHOT = 2, - RBS_UNCHECKEDPRESSED = 3, - RBS_UNCHECKEDDISABLED = 4, - RBS_CHECKEDNORMAL = 5, - RBS_CHECKEDHOT = 6, - RBS_CHECKEDPRESSED = 7, - RBS_CHECKEDDISABLED = 8 -} - -/* CLOCK parts */ -enum { - CLP_TIME = 1 -} - -enum { - CLS_NORMAL = 1 -} - -/* COMBOBOX parts */ -enum { - CP_DROPDOWNBUTTON = 1 -} - -enum { - CBXS_NORMAL = 1, - CBXS_HOT = 2, - CBXS_PRESSED = 3, - CBXS_DISABLED = 4 -} - -/* EDIT parts */ -enum { - EP_EDITTEXT = 1, - EP_CARET = 2 -} - -enum { - ETS_NORMAL = 1, - ETS_HOT = 2, - ETS_SELECTED = 3, - ETS_DISABLED = 4, - ETS_FOCUSED = 5, - ETS_READONLY = 6, - ETS_ASSIST = 7 -} -/* EXPLORERBAR parts */ -enum { - EBP_HEADERBACKGROUND = 1, - EBP_HEADERCLOSE = 2, - EBP_HEADERPIN = 3, - EBP_IEBARMENU = 4, - EBP_NORMALGROUPBACKGROUND = 5, - EBP_NORMALGROUPCOLLAPSE = 6, - EBP_NORMALGROUPEXPAND = 7, - EBP_NORMALGROUPHEAD = 8, - EBP_SPECIALGROUPBACKGROUND = 9, - EBP_SPECIALGROUPCOLLAPSE = 10, - EBP_SPECIALGROUPEXPAND = 11, - EBP_SPECIALGROUPHEAD = 12 -} - -enum { - EBHC_NORMAL = 1, - EBHC_HOT = 2, - EBHC_PRESSED = 3 -} - -enum { - EBHP_NORMAL = 1, - EBHP_HOT = 2, - EBHP_PRESSED = 3, - EBHP_SELECTEDNORMAL = 4, - EBHP_SELECTEDHOT = 5, - EBHP_SELECTEDPRESSED = 6 -} - -enum { - EBM_NORMAL = 1, - EBM_HOT = 2, - EBM_PRESSED = 3 -} - -enum { - EBNGC_NORMAL = 1, - EBNGC_HOT = 2, - EBNGC_PRESSED = 3 -} - -enum { - EBNGE_NORMAL = 1, - EBNGE_HOT = 2, - EBNGE_PRESSED = 3 -} - -enum { - EBSGC_NORMAL = 1, - EBSGC_HOT = 2, - EBSGC_PRESSED = 3 -} - -enum { - EBSGE_NORMAL = 1, - EBSGE_HOT = 2, - EBSGE_PRESSED = 3 -} - -/* HEADER parts */ -enum { - HP_HEADERITEM = 1, - HP_HEADERITEMLEFT = 2, - HP_HEADERITEMRIGHT = 3, - HP_HEADERSORTARROW = 4 -} - -enum { - HIS_NORMAL = 1, - HIS_HOT = 2, - HIS_PRESSED = 3 -} - -enum { - HILS_NORMAL = 1, - HILS_HOT = 2, - HILS_PRESSED = 3 -} - -enum { - HIRS_NORMAL = 1, - HIRS_HOT = 2, - HIRS_PRESSED = 3 -} - -enum { - HSAS_SORTEDUP = 1, - HSAS_SORTEDDOWN = 2 -} - -/* LISTVIEW parts */ -enum { - LVP_LISTITEM = 1, - LVP_LISTGROUP = 2, - LVP_LISTDETAIL = 3, - LVP_LISTSORTEDDETAIL = 4, - LVP_EMPTYTEXT = 5 -} - -enum { - LIS_NORMAL = 1, - LIS_HOT = 2, - LIS_SELECTED = 3, - LIS_DISABLED = 4, - LIS_SELECTEDNOTFOCUS = 5 -} - -/* MENU parts */ -enum { - MP_MENUITEM = 1, - MP_MENUDROPDOWN = 2, - MP_MENUBARITEM = 3, - MP_MENUBARDROPDOWN = 4, - MP_CHEVRON = 5, - MP_SEPARATOR = 6 -} - -enum { - MS_NORMAL = 1, - MS_SELECTED = 2, - MS_DEMOTED = 3 -} -/* MENUBAND parts */ -enum { - MDP_NEWAPPBUTTON = 1, - MDP_SEPERATOR = 2 -} - -enum { - MDS_NORMAL = 1, - MDS_HOT = 2, - MDS_PRESSED = 3, - MDS_DISABLED = 4, - MDS_CHECKED = 5, - MDS_HOTCHECKED = 6 -} - -/* PAGE parts */ -enum { - PGRP_UP = 1, - PGRP_DOWN = 2, - PGRP_UPHORZ = 3, - PGRP_DOWNHORZ = 4 -} - -enum { - DNS_NORMAL = 1, - DNS_HOT = 2, - DNS_PRESSED = 3, - DNS_DISABLED = 4 -} - -enum { - DNHZS_NORMAL = 1, - DNHZS_HOT = 2, - DNHZS_PRESSED = 3, - DNHZS_DISABLED = 4 -} - -enum { - UPS_NORMAL = 1, - UPS_HOT = 2, - UPS_PRESSED = 3, - UPS_DISABLED = 4 -} - -enum { - UPHZS_NORMAL = 1, - UPHZS_HOT = 2, - UPHZS_PRESSED = 3, - UPHZS_DISABLED = 4 -} - -/* PROGRESS parts */ -enum { - PP_BAR = 1, - PP_BARVERT = 2, - PP_CHUNK = 3, - PP_CHUNKVERT = 4 -} - -/* REBAR parts */ -enum { - RP_GRIPPER = 1, - RP_GRIPPERVERT = 2, - RP_BAND = 3, - RP_CHEVRON = 4, - RP_CHEVRONVERT = 5 -} - -enum { - CHEVS_NORMAL = 1, - CHEVS_HOT = 2, - CHEVS_PRESSED = 3 -} - -/* SCROLLBAR parts */ -enum { - SBP_ARROWBTN = 1, - SBP_THUMBBTNHORZ = 2, - SBP_THUMBBTNVERT = 3, - SBP_LOWERTRACKHORZ = 4, - SBP_UPPERTRACKHORZ = 5, - SBP_LOWERTRACKVERT = 6, - SBP_UPPERTRACKVERT = 7, - SBP_GRIPPERHORZ = 8, - SBP_GRIPPERVERT = 9, - SBP_SIZEBOX = 10 -} - -enum { - ABS_UPNORMAL = 1, - ABS_UPHOT = 2, - ABS_UPPRESSED = 3, - ABS_UPDISABLED = 4, - ABS_DOWNNORMAL = 5, - ABS_DOWNHOT = 6, - ABS_DOWNPRESSED = 7, - ABS_DOWNDISABLED = 8, - ABS_LEFTNORMAL = 9, - ABS_LEFTHOT = 10, - ABS_LEFTPRESSED = 11, - ABS_LEFTDISABLED = 12, - ABS_RIGHTNORMAL = 13, - ABS_RIGHTHOT = 14, - ABS_RIGHTPRESSED = 15, - ABS_RIGHTDISABLED = 16 -} - -enum { - SCRBS_NORMAL = 1, - SCRBS_HOT = 2, - SCRBS_PRESSED = 3, - SCRBS_DISABLED = 4 -} - -enum { - SZB_RIGHTALIGN = 1, - SZB_LEFTALIGN = 2 -} - -/* SPIN parts */ -enum { - SPNP_UP = 1, - SPNP_DOWN = 2, - SPNP_UPHORZ = 3, - SPNP_DOWNHORZ = 4 -} - -/* STARTPANEL parts */ -enum { - SPP_USERPANE = 1, - SPP_MOREPROGRAMS = 2, - SPP_MOREPROGRAMSARROW = 3, - SPP_PROGLIST = 4, - SPP_PROGLISTSEPARATOR = 5, - SPP_PLACESLIST = 6, - SPP_PLACESLISTSEPARATOR = 7, - SPP_LOGOFF = 8, - SPP_LOGOFFBUTTONS = 9, - SPP_USERPICTURE = 10, - SPP_PREVIEW = 11 -} - -enum { - SPLS_NORMAL = 1, - SPLS_HOT = 2, - SPLS_PRESSED = 3 -} - -enum { - SPS_NORMAL = 1, - SPS_HOT = 2, - SPS_PRESSED = 3 -} - -/* STATUS parts */ -enum { - SP_PANE = 1, - SP_GRIPPERPANE = 2, - SP_GRIPPER = 3 -} - -/* TAB parts */ -enum { - TABP_TABITEM = 1, - TABP_TABITEMLEFTEDGE = 2, - TABP_TABITEMRIGHTEDGE = 3, - TABP_TABITEMBOTHEDGE = 4, - TABP_TOPTABITEM = 5, - TABP_TOPTABITEMLEFTEDGE = 6, - TABP_TOPTABITEMRIGHTEDGE = 7, - TABP_TOPTABITEMBOTHEDGE = 8, - TABP_PANE = 9, - TABP_BODY = 10 -} - -enum { - TIS_NORMAL = 1, - TIS_HOT = 2, - TIS_SELECTED = 3, - TIS_DISABLED = 4, - TIS_FOCUSED = 5 -} - -enum { - TIBES_NORMAL = 1, - TIBES_HOT = 2, - TIBES_SELECTED = 3, - TIBES_DISABLED = 4, - TIBES_FOCUSED = 5 -} - -enum { - TILES_NORMAL = 1, - TILES_HOT = 2, - TILES_SELECTED = 3, - TILES_DISABLED = 4, - TILES_FOCUSED = 5 -} - -enum { - TIRES_NORMAL = 1, - TIRES_HOT = 2, - TIRES_SELECTED = 3, - TIRES_DISABLED = 4, - TIRES_FOCUSED = 5 -} - -enum { - TTIS_NORMAL = 1, - TTIS_HOT = 2, - TTIS_SELECTED = 3, - TTIS_DISABLED = 4, - TTIS_FOCUSED = 5 -} - -enum { - TTIBES_NORMAL = 1, - TTIBES_HOT = 2, - TTIBES_SELECTED = 3, - TTIBES_DISABLED = 4, - TTIBES_FOCUSED = 5 -} - -enum { - TTILES_NORMAL = 1, - TTILES_HOT = 2, - TTILES_SELECTED = 3, - TTILES_DISABLED = 4, - TTILES_FOCUSED = 5 -} - -enum { - TTIRES_NORMAL = 1, - TTIRES_HOT = 2, - TTIRES_SELECTED = 3, - TTIRES_DISABLED = 4, - TTIRES_FOCUSED = 5 -} - -/* TASKBAND parts */ -enum { - TDP_GROUPCOUNT = 1, - TDP_FLASHBUTTON = 2, - TDP_FLASHBUTTONGROUPMENU = 3 -} - -/* TASKBAR parts */ -enum { - TBP_BACKGROUNDBOTTOM = 1, - TBP_BACKGROUNDRIGHT = 2, - TBP_BACKGROUNDTOP = 3, - TBP_BACKGROUNDLEFT = 4, - TBP_SIZINGBARBOTTOM = 5, - TBP_SIZINGBARRIGHT = 6, - TBP_SIZINGBARTOP = 7, - TBP_SIZINGBARLEFT = 8 -} - -/* TOOLBAR parts */ -enum { - TP_BUTTON = 1, - TP_DROPDOWNBUTTON = 2, - TP_SPLITBUTTON = 3, - TP_SPLITBUTTONDROPDOWN = 4, - TP_SEPARATOR = 5, - TP_SEPARATORVERT = 6 -} - -enum { - TS_NORMAL = 1, - TS_HOT = 2, - TS_PRESSED = 3, - TS_DISABLED = 4, - TS_CHECKED = 5, - TS_HOTCHECKED = 6 -} - -/* TOOLTIP parts */ -enum { - TTP_STANDARD = 1, - TTP_STANDARDTITLE = 2, - TTP_BALLOON = 3, - TTP_BALLOONTITLE = 4, - TTP_CLOSE = 5 -} - -enum { - TTBS_NORMAL = 1, - TTBS_LINK = 2 -} - -enum { - TTCS_NORMAL = 1, - TTCS_HOT = 2, - TTCS_PRESSED = 3 -} - -enum { - TTSS_NORMAL = 1, - TTSS_LINK = 2 -} - -/* TRACKBAR parts */ -enum { - TKP_TRACK = 1, - TKP_TRACKVERT = 2, - TKP_THUMB = 3, - TKP_THUMBBOTTOM = 4, - TKP_THUMBTOP = 5, - TKP_THUMBVERT = 6, - TKP_THUMBLEFT = 7, - TKP_THUMBRIGHT = 8, - TKP_TICS = 9, - TKP_TICSVERT = 10 -} - -enum { - TUS_NORMAL = 1, - TUS_HOT = 2, - TUS_PRESSED = 3, - TUS_FOCUSED = 4, - TUS_DISABLED = 5 -} - -enum { - TUBS_NORMAL = 1, - TUBS_HOT = 2, - TUBS_PRESSED = 3, - TUBS_FOCUSED = 4, - TUBS_DISABLED = 5 -} - -enum { - TUVLS_NORMAL = 1, - TUVLS_HOT = 2, - TUVLS_PRESSED = 3, - TUVLS_FOCUSED = 4, - TUVLS_DISABLED = 5 -} - -enum { - TUVRS_NORMAL = 1, - TUVRS_HOT = 2, - TUVRS_PRESSED = 3, - TUVRS_FOCUSED = 4, - TUVRS_DISABLED = 5 -} - -enum { - TUTS_NORMAL = 1, - TUTS_HOT = 2, - TUTS_PRESSED = 3, - TUTS_FOCUSED = 4, - TUTS_DISABLED = 5 -} - -enum { - TUVS_NORMAL = 1, - TUVS_HOT = 2, - TUVS_PRESSED = 3, - TUVS_FOCUSED = 4, - TUVS_DISABLED = 5 -} - -enum { - TSS_NORMAL = 1 -} - -enum { - TSVS_NORMAL = 1 -} - -enum { - TRS_NORMAL = 1 -} - -enum { - TRVS_NORMAL = 1 -} - -/* TRAYNOTIFY parts */ -enum { - TNP_BACKGROUND = 1, - TNP_ANIMBACKGROUND = 2 -} - -/* TREEVIEW parts */ -enum { - TVP_TREEITEM = 1, - TVP_GLYPH = 2, - TVP_BRANCH = 3 -} - -enum { - GLPS_CLOSED = 1, - GLPS_OPENED = 2 -} - -enum { - TREIS_NORMAL = 1, - TREIS_HOT = 2, - TREIS_SELECTED = 3, - TREIS_DISABLED = 4, - TREIS_SELECTEDNOTFOCUS = 5 -} - -/* WINDOW parts */ -enum { - WP_CAPTION = 1, - WP_SMALLCAPTION = 2, - WP_MINCAPTION = 3, - WP_SMALLMINCAPTION = 4, - WP_MAXCAPTION = 5, - WP_SMALLMAXCAPTION = 6, - WP_FRAMELEFT = 7, - WP_FRAMERIGHT = 8, - WP_FRAMEBOTTOM = 9, - WP_SMALLFRAMELEFT = 10, - WP_SMALLFRAMERIGHT = 11, - WP_SMALLFRAMEBOTTOM = 12, - WP_SYSBUTTON = 13, - WP_MDISYSBUTTON = 14, - WP_MINBUTTON = 15, - WP_MDIMINBUTTON = 16, - WP_MAXBUTTON = 17, - WP_CLOSEBUTTON = 18, - WP_SMALLCLOSEBUTTON = 19, - WP_MDICLOSEBUTTON = 20, - WP_RESTOREBUTTON = 21, - WP_MDIRESTOREBUTTON = 22, - WP_HELPBUTTON = 23, - WP_MDIHELPBUTTON = 24, - WP_HORZSCROLL = 25, - WP_HORZTHUMB = 26, - WP_VERTSCROLL = 27, - WP_VERTTHUMB = 28, - WP_DIALOG = 29, - WP_CAPTIONSIZINGTEMPLATE = 30, - WP_SMALLCAPTIONSIZINGTEMPLATE = 31, - WP_FRAMELEFTSIZINGTEMPLATE = 32, - WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33, - WP_FRAMERIGHTSIZINGTEMPLATE = 34, - WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35, - WP_FRAMEBOTTOMSIZINGTEMPLATE = 36, - WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37 -} - -enum { - CS_ACTIVE = 1, - CS_INACTIVE = 2, - CS_DISABLED = 3 -} - -enum { - CBS_NORMAL = 1, - CBS_HOT = 2, - CBS_PUSHED = 3, - CBS_DISABLED = 4 -} - -enum { - FS_ACTIVE = 1, - FS_INACTIVE = 2 -} - -enum { - HBS_NORMAL = 1, - HBS_HOT = 2, - HBS_PUSHED = 3, - HBS_DISABLED = 4 -} - -enum { - HSS_NORMAL = 1, - HSS_HOT = 2, - HSS_PUSHED = 3, - HSS_DISABLED = 4 -} - -enum { - HTS_NORMAL = 1, - HTS_HOT = 2, - HTS_PUSHED = 3, - HTS_DISABLED = 4 -} - -enum { - MAXBS_NORMAL = 1, - MAXBS_HOT = 2, - MAXBS_PUSHED = 3, - MAXBS_DISABLED = 4 -} - -enum { - MXCS_ACTIVE = 1, - MXCS_INACTIVE = 2, - MXCS_DISABLED = 3 -} - -enum { - MINBS_NORMAL = 1, - MINBS_HOT = 2, - MINBS_PUSHED = 3, - MINBS_DISABLED = 4 -} - -enum { - RBS_NORMAL = 1, - RBS_HOT = 2, - RBS_PUSHED = 3, - RBS_DISABLED = 4 -} - -enum { - SBS_NORMAL = 1, - SBS_HOT = 2, - SBS_PUSHED = 3, - SBS_DISABLED = 4 -} - -enum { - MNCS_ACTIVE = 1, - MNCS_INACTIVE = 2, - MNCS_DISABLED = 3 -} - -enum { - VSS_NORMAL = 1, - VSS_HOT = 2, - VSS_PUSHED = 3, - VSS_DISABLED = 4 -} - -enum { - VTS_NORMAL = 1, - VTS_HOT = 2, - VTS_PUSHED = 3, - VTS_DISABLED = 4 -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_tmschema.d) + */ +module core.sys.windows.tmschema; + +/* BUTTON parts */ +enum { + BP_PUSHBUTTON = 1, + BP_RADIOBUTTON = 2, + BP_CHECKBOX = 3, + BP_GROUPBOX = 4, + BP_USERBUTTON = 5 +} + +enum { + CBS_UNCHECKEDNORMAL = 1, + CBS_UNCHECKEDHOT = 2, + CBS_UNCHECKEDPRESSED = 3, + CBS_UNCHECKEDDISABLED = 4, + CBS_CHECKEDNORMAL = 5, + CBS_CHECKEDHOT = 6, + CBS_CHECKEDPRESSED = 7, + CBS_CHECKEDDISABLED = 8, + CBS_MIXEDNORMAL = 9, + CBS_MIXEDHOT = 10, + CBS_MIXEDPRESSED = 11, + CBS_MIXEDDISABLED = 12 +} + +enum { + GBS_NORMAL = 1, + GBS_DISABLED = 2 +} + +enum { + PBS_NORMAL = 1, + PBS_HOT = 2, + PBS_PRESSED = 3, + PBS_DISABLED = 4, + PBS_DEFAULTED = 5 +} + +enum { + RBS_UNCHECKEDNORMAL = 1, + RBS_UNCHECKEDHOT = 2, + RBS_UNCHECKEDPRESSED = 3, + RBS_UNCHECKEDDISABLED = 4, + RBS_CHECKEDNORMAL = 5, + RBS_CHECKEDHOT = 6, + RBS_CHECKEDPRESSED = 7, + RBS_CHECKEDDISABLED = 8 +} + +/* CLOCK parts */ +enum { + CLP_TIME = 1 +} + +enum { + CLS_NORMAL = 1 +} + +/* COMBOBOX parts */ +enum { + CP_DROPDOWNBUTTON = 1 +} + +enum { + CBXS_NORMAL = 1, + CBXS_HOT = 2, + CBXS_PRESSED = 3, + CBXS_DISABLED = 4 +} + +/* EDIT parts */ +enum { + EP_EDITTEXT = 1, + EP_CARET = 2 +} + +enum { + ETS_NORMAL = 1, + ETS_HOT = 2, + ETS_SELECTED = 3, + ETS_DISABLED = 4, + ETS_FOCUSED = 5, + ETS_READONLY = 6, + ETS_ASSIST = 7 +} +/* EXPLORERBAR parts */ +enum { + EBP_HEADERBACKGROUND = 1, + EBP_HEADERCLOSE = 2, + EBP_HEADERPIN = 3, + EBP_IEBARMENU = 4, + EBP_NORMALGROUPBACKGROUND = 5, + EBP_NORMALGROUPCOLLAPSE = 6, + EBP_NORMALGROUPEXPAND = 7, + EBP_NORMALGROUPHEAD = 8, + EBP_SPECIALGROUPBACKGROUND = 9, + EBP_SPECIALGROUPCOLLAPSE = 10, + EBP_SPECIALGROUPEXPAND = 11, + EBP_SPECIALGROUPHEAD = 12 +} + +enum { + EBHC_NORMAL = 1, + EBHC_HOT = 2, + EBHC_PRESSED = 3 +} + +enum { + EBHP_NORMAL = 1, + EBHP_HOT = 2, + EBHP_PRESSED = 3, + EBHP_SELECTEDNORMAL = 4, + EBHP_SELECTEDHOT = 5, + EBHP_SELECTEDPRESSED = 6 +} + +enum { + EBM_NORMAL = 1, + EBM_HOT = 2, + EBM_PRESSED = 3 +} + +enum { + EBNGC_NORMAL = 1, + EBNGC_HOT = 2, + EBNGC_PRESSED = 3 +} + +enum { + EBNGE_NORMAL = 1, + EBNGE_HOT = 2, + EBNGE_PRESSED = 3 +} + +enum { + EBSGC_NORMAL = 1, + EBSGC_HOT = 2, + EBSGC_PRESSED = 3 +} + +enum { + EBSGE_NORMAL = 1, + EBSGE_HOT = 2, + EBSGE_PRESSED = 3 +} + +/* HEADER parts */ +enum { + HP_HEADERITEM = 1, + HP_HEADERITEMLEFT = 2, + HP_HEADERITEMRIGHT = 3, + HP_HEADERSORTARROW = 4 +} + +enum { + HIS_NORMAL = 1, + HIS_HOT = 2, + HIS_PRESSED = 3 +} + +enum { + HILS_NORMAL = 1, + HILS_HOT = 2, + HILS_PRESSED = 3 +} + +enum { + HIRS_NORMAL = 1, + HIRS_HOT = 2, + HIRS_PRESSED = 3 +} + +enum { + HSAS_SORTEDUP = 1, + HSAS_SORTEDDOWN = 2 +} + +/* LISTVIEW parts */ +enum { + LVP_LISTITEM = 1, + LVP_LISTGROUP = 2, + LVP_LISTDETAIL = 3, + LVP_LISTSORTEDDETAIL = 4, + LVP_EMPTYTEXT = 5 +} + +enum { + LIS_NORMAL = 1, + LIS_HOT = 2, + LIS_SELECTED = 3, + LIS_DISABLED = 4, + LIS_SELECTEDNOTFOCUS = 5 +} + +/* MENU parts */ +enum { + MP_MENUITEM = 1, + MP_MENUDROPDOWN = 2, + MP_MENUBARITEM = 3, + MP_MENUBARDROPDOWN = 4, + MP_CHEVRON = 5, + MP_SEPARATOR = 6 +} + +enum { + MS_NORMAL = 1, + MS_SELECTED = 2, + MS_DEMOTED = 3 +} +/* MENUBAND parts */ +enum { + MDP_NEWAPPBUTTON = 1, + MDP_SEPERATOR = 2 +} + +enum { + MDS_NORMAL = 1, + MDS_HOT = 2, + MDS_PRESSED = 3, + MDS_DISABLED = 4, + MDS_CHECKED = 5, + MDS_HOTCHECKED = 6 +} + +/* PAGE parts */ +enum { + PGRP_UP = 1, + PGRP_DOWN = 2, + PGRP_UPHORZ = 3, + PGRP_DOWNHORZ = 4 +} + +enum { + DNS_NORMAL = 1, + DNS_HOT = 2, + DNS_PRESSED = 3, + DNS_DISABLED = 4 +} + +enum { + DNHZS_NORMAL = 1, + DNHZS_HOT = 2, + DNHZS_PRESSED = 3, + DNHZS_DISABLED = 4 +} + +enum { + UPS_NORMAL = 1, + UPS_HOT = 2, + UPS_PRESSED = 3, + UPS_DISABLED = 4 +} + +enum { + UPHZS_NORMAL = 1, + UPHZS_HOT = 2, + UPHZS_PRESSED = 3, + UPHZS_DISABLED = 4 +} + +/* PROGRESS parts */ +enum { + PP_BAR = 1, + PP_BARVERT = 2, + PP_CHUNK = 3, + PP_CHUNKVERT = 4 +} + +/* REBAR parts */ +enum { + RP_GRIPPER = 1, + RP_GRIPPERVERT = 2, + RP_BAND = 3, + RP_CHEVRON = 4, + RP_CHEVRONVERT = 5 +} + +enum { + CHEVS_NORMAL = 1, + CHEVS_HOT = 2, + CHEVS_PRESSED = 3 +} + +/* SCROLLBAR parts */ +enum { + SBP_ARROWBTN = 1, + SBP_THUMBBTNHORZ = 2, + SBP_THUMBBTNVERT = 3, + SBP_LOWERTRACKHORZ = 4, + SBP_UPPERTRACKHORZ = 5, + SBP_LOWERTRACKVERT = 6, + SBP_UPPERTRACKVERT = 7, + SBP_GRIPPERHORZ = 8, + SBP_GRIPPERVERT = 9, + SBP_SIZEBOX = 10 +} + +enum { + ABS_UPNORMAL = 1, + ABS_UPHOT = 2, + ABS_UPPRESSED = 3, + ABS_UPDISABLED = 4, + ABS_DOWNNORMAL = 5, + ABS_DOWNHOT = 6, + ABS_DOWNPRESSED = 7, + ABS_DOWNDISABLED = 8, + ABS_LEFTNORMAL = 9, + ABS_LEFTHOT = 10, + ABS_LEFTPRESSED = 11, + ABS_LEFTDISABLED = 12, + ABS_RIGHTNORMAL = 13, + ABS_RIGHTHOT = 14, + ABS_RIGHTPRESSED = 15, + ABS_RIGHTDISABLED = 16 +} + +enum { + SCRBS_NORMAL = 1, + SCRBS_HOT = 2, + SCRBS_PRESSED = 3, + SCRBS_DISABLED = 4 +} + +enum { + SZB_RIGHTALIGN = 1, + SZB_LEFTALIGN = 2 +} + +/* SPIN parts */ +enum { + SPNP_UP = 1, + SPNP_DOWN = 2, + SPNP_UPHORZ = 3, + SPNP_DOWNHORZ = 4 +} + +/* STARTPANEL parts */ +enum { + SPP_USERPANE = 1, + SPP_MOREPROGRAMS = 2, + SPP_MOREPROGRAMSARROW = 3, + SPP_PROGLIST = 4, + SPP_PROGLISTSEPARATOR = 5, + SPP_PLACESLIST = 6, + SPP_PLACESLISTSEPARATOR = 7, + SPP_LOGOFF = 8, + SPP_LOGOFFBUTTONS = 9, + SPP_USERPICTURE = 10, + SPP_PREVIEW = 11 +} + +enum { + SPLS_NORMAL = 1, + SPLS_HOT = 2, + SPLS_PRESSED = 3 +} + +enum { + SPS_NORMAL = 1, + SPS_HOT = 2, + SPS_PRESSED = 3 +} + +/* STATUS parts */ +enum { + SP_PANE = 1, + SP_GRIPPERPANE = 2, + SP_GRIPPER = 3 +} + +/* TAB parts */ +enum { + TABP_TABITEM = 1, + TABP_TABITEMLEFTEDGE = 2, + TABP_TABITEMRIGHTEDGE = 3, + TABP_TABITEMBOTHEDGE = 4, + TABP_TOPTABITEM = 5, + TABP_TOPTABITEMLEFTEDGE = 6, + TABP_TOPTABITEMRIGHTEDGE = 7, + TABP_TOPTABITEMBOTHEDGE = 8, + TABP_PANE = 9, + TABP_BODY = 10 +} + +enum { + TIS_NORMAL = 1, + TIS_HOT = 2, + TIS_SELECTED = 3, + TIS_DISABLED = 4, + TIS_FOCUSED = 5 +} + +enum { + TIBES_NORMAL = 1, + TIBES_HOT = 2, + TIBES_SELECTED = 3, + TIBES_DISABLED = 4, + TIBES_FOCUSED = 5 +} + +enum { + TILES_NORMAL = 1, + TILES_HOT = 2, + TILES_SELECTED = 3, + TILES_DISABLED = 4, + TILES_FOCUSED = 5 +} + +enum { + TIRES_NORMAL = 1, + TIRES_HOT = 2, + TIRES_SELECTED = 3, + TIRES_DISABLED = 4, + TIRES_FOCUSED = 5 +} + +enum { + TTIS_NORMAL = 1, + TTIS_HOT = 2, + TTIS_SELECTED = 3, + TTIS_DISABLED = 4, + TTIS_FOCUSED = 5 +} + +enum { + TTIBES_NORMAL = 1, + TTIBES_HOT = 2, + TTIBES_SELECTED = 3, + TTIBES_DISABLED = 4, + TTIBES_FOCUSED = 5 +} + +enum { + TTILES_NORMAL = 1, + TTILES_HOT = 2, + TTILES_SELECTED = 3, + TTILES_DISABLED = 4, + TTILES_FOCUSED = 5 +} + +enum { + TTIRES_NORMAL = 1, + TTIRES_HOT = 2, + TTIRES_SELECTED = 3, + TTIRES_DISABLED = 4, + TTIRES_FOCUSED = 5 +} + +/* TASKBAND parts */ +enum { + TDP_GROUPCOUNT = 1, + TDP_FLASHBUTTON = 2, + TDP_FLASHBUTTONGROUPMENU = 3 +} + +/* TASKBAR parts */ +enum { + TBP_BACKGROUNDBOTTOM = 1, + TBP_BACKGROUNDRIGHT = 2, + TBP_BACKGROUNDTOP = 3, + TBP_BACKGROUNDLEFT = 4, + TBP_SIZINGBARBOTTOM = 5, + TBP_SIZINGBARRIGHT = 6, + TBP_SIZINGBARTOP = 7, + TBP_SIZINGBARLEFT = 8 +} + +/* TOOLBAR parts */ +enum { + TP_BUTTON = 1, + TP_DROPDOWNBUTTON = 2, + TP_SPLITBUTTON = 3, + TP_SPLITBUTTONDROPDOWN = 4, + TP_SEPARATOR = 5, + TP_SEPARATORVERT = 6 +} + +enum { + TS_NORMAL = 1, + TS_HOT = 2, + TS_PRESSED = 3, + TS_DISABLED = 4, + TS_CHECKED = 5, + TS_HOTCHECKED = 6 +} + +/* TOOLTIP parts */ +enum { + TTP_STANDARD = 1, + TTP_STANDARDTITLE = 2, + TTP_BALLOON = 3, + TTP_BALLOONTITLE = 4, + TTP_CLOSE = 5 +} + +enum { + TTBS_NORMAL = 1, + TTBS_LINK = 2 +} + +enum { + TTCS_NORMAL = 1, + TTCS_HOT = 2, + TTCS_PRESSED = 3 +} + +enum { + TTSS_NORMAL = 1, + TTSS_LINK = 2 +} + +/* TRACKBAR parts */ +enum { + TKP_TRACK = 1, + TKP_TRACKVERT = 2, + TKP_THUMB = 3, + TKP_THUMBBOTTOM = 4, + TKP_THUMBTOP = 5, + TKP_THUMBVERT = 6, + TKP_THUMBLEFT = 7, + TKP_THUMBRIGHT = 8, + TKP_TICS = 9, + TKP_TICSVERT = 10 +} + +enum { + TUS_NORMAL = 1, + TUS_HOT = 2, + TUS_PRESSED = 3, + TUS_FOCUSED = 4, + TUS_DISABLED = 5 +} + +enum { + TUBS_NORMAL = 1, + TUBS_HOT = 2, + TUBS_PRESSED = 3, + TUBS_FOCUSED = 4, + TUBS_DISABLED = 5 +} + +enum { + TUVLS_NORMAL = 1, + TUVLS_HOT = 2, + TUVLS_PRESSED = 3, + TUVLS_FOCUSED = 4, + TUVLS_DISABLED = 5 +} + +enum { + TUVRS_NORMAL = 1, + TUVRS_HOT = 2, + TUVRS_PRESSED = 3, + TUVRS_FOCUSED = 4, + TUVRS_DISABLED = 5 +} + +enum { + TUTS_NORMAL = 1, + TUTS_HOT = 2, + TUTS_PRESSED = 3, + TUTS_FOCUSED = 4, + TUTS_DISABLED = 5 +} + +enum { + TUVS_NORMAL = 1, + TUVS_HOT = 2, + TUVS_PRESSED = 3, + TUVS_FOCUSED = 4, + TUVS_DISABLED = 5 +} + +enum { + TSS_NORMAL = 1 +} + +enum { + TSVS_NORMAL = 1 +} + +enum { + TRS_NORMAL = 1 +} + +enum { + TRVS_NORMAL = 1 +} + +/* TRAYNOTIFY parts */ +enum { + TNP_BACKGROUND = 1, + TNP_ANIMBACKGROUND = 2 +} + +/* TREEVIEW parts */ +enum { + TVP_TREEITEM = 1, + TVP_GLYPH = 2, + TVP_BRANCH = 3 +} + +enum { + GLPS_CLOSED = 1, + GLPS_OPENED = 2 +} + +enum { + TREIS_NORMAL = 1, + TREIS_HOT = 2, + TREIS_SELECTED = 3, + TREIS_DISABLED = 4, + TREIS_SELECTEDNOTFOCUS = 5 +} + +/* WINDOW parts */ +enum { + WP_CAPTION = 1, + WP_SMALLCAPTION = 2, + WP_MINCAPTION = 3, + WP_SMALLMINCAPTION = 4, + WP_MAXCAPTION = 5, + WP_SMALLMAXCAPTION = 6, + WP_FRAMELEFT = 7, + WP_FRAMERIGHT = 8, + WP_FRAMEBOTTOM = 9, + WP_SMALLFRAMELEFT = 10, + WP_SMALLFRAMERIGHT = 11, + WP_SMALLFRAMEBOTTOM = 12, + WP_SYSBUTTON = 13, + WP_MDISYSBUTTON = 14, + WP_MINBUTTON = 15, + WP_MDIMINBUTTON = 16, + WP_MAXBUTTON = 17, + WP_CLOSEBUTTON = 18, + WP_SMALLCLOSEBUTTON = 19, + WP_MDICLOSEBUTTON = 20, + WP_RESTOREBUTTON = 21, + WP_MDIRESTOREBUTTON = 22, + WP_HELPBUTTON = 23, + WP_MDIHELPBUTTON = 24, + WP_HORZSCROLL = 25, + WP_HORZTHUMB = 26, + WP_VERTSCROLL = 27, + WP_VERTTHUMB = 28, + WP_DIALOG = 29, + WP_CAPTIONSIZINGTEMPLATE = 30, + WP_SMALLCAPTIONSIZINGTEMPLATE = 31, + WP_FRAMELEFTSIZINGTEMPLATE = 32, + WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33, + WP_FRAMERIGHTSIZINGTEMPLATE = 34, + WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35, + WP_FRAMEBOTTOMSIZINGTEMPLATE = 36, + WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37 +} + +enum { + CS_ACTIVE = 1, + CS_INACTIVE = 2, + CS_DISABLED = 3 +} + +enum { + CBS_NORMAL = 1, + CBS_HOT = 2, + CBS_PUSHED = 3, + CBS_DISABLED = 4 +} + +enum { + FS_ACTIVE = 1, + FS_INACTIVE = 2 +} + +enum { + HBS_NORMAL = 1, + HBS_HOT = 2, + HBS_PUSHED = 3, + HBS_DISABLED = 4 +} + +enum { + HSS_NORMAL = 1, + HSS_HOT = 2, + HSS_PUSHED = 3, + HSS_DISABLED = 4 +} + +enum { + HTS_NORMAL = 1, + HTS_HOT = 2, + HTS_PUSHED = 3, + HTS_DISABLED = 4 +} + +enum { + MAXBS_NORMAL = 1, + MAXBS_HOT = 2, + MAXBS_PUSHED = 3, + MAXBS_DISABLED = 4 +} + +enum { + MXCS_ACTIVE = 1, + MXCS_INACTIVE = 2, + MXCS_DISABLED = 3 +} + +enum { + MINBS_NORMAL = 1, + MINBS_HOT = 2, + MINBS_PUSHED = 3, + MINBS_DISABLED = 4 +} + +enum { + RBS_NORMAL = 1, + RBS_HOT = 2, + RBS_PUSHED = 3, + RBS_DISABLED = 4 +} + +enum { + SBS_NORMAL = 1, + SBS_HOT = 2, + SBS_PUSHED = 3, + SBS_DISABLED = 4 +} + +enum { + MNCS_ACTIVE = 1, + MNCS_INACTIVE = 2, + MNCS_DISABLED = 3 +} + +enum { + VSS_NORMAL = 1, + VSS_HOT = 2, + VSS_PUSHED = 3, + VSS_DISABLED = 4 +} + +enum { + VTS_NORMAL = 1, + VTS_HOT = 2, + VTS_PUSHED = 3, + VTS_DISABLED = 4 +} diff --git a/src/core/sys/windows/unknwn.d b/src/core/sys/windows/unknwn.d index 09c6f7ef12..6147637d0a 100644 --- a/src/core/sys/windows/unknwn.d +++ b/src/core/sys/windows/unknwn.d @@ -1,54 +1,54 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_unknwn.d) - */ -module core.sys.windows.unknwn; - -import core.sys.windows.objfwd, core.sys.windows.windef, core.sys.windows.wtypes; -private import core.sys.windows.basetyps; - -extern (Windows) { - void* MIDL_user_allocate(size_t); - void MIDL_user_free(void*); -} - - -extern (Windows) { - - interface IUnknown { - HRESULT QueryInterface(IID* riid, void** pvObject); - ULONG AddRef(); - ULONG Release(); - } - - alias IUnknown LPUNKNOWN; - - interface IClassFactory : IUnknown { - HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject); - HRESULT LockServer(BOOL fLock); - } - alias IClassFactory LPCLASSFACTORY; - - /+ - // These do not seem to be necessary (or desirable) for D. - HRESULT IUnknown_QueryInterface_Proxy(IUnknown,REFIID,void**); - ULONG IUnknown_AddRef_Proxy(IUnknown); - ULONG IUnknown_Release_Proxy(IUnknown); - HRESULT IClassFactory_RemoteCreateInstance_Proxy(IClassFactory,REFIID,IUnknown*); - HRESULT IClassFactory_RemoteLockServer_Proxy(IClassFactory,BOOL); - HRESULT IClassFactory_CreateInstance_Proxy(IClassFactory,IUnknown,REFIID,void**); - HRESULT IClassFactory_CreateInstance_Stub(IClassFactory,REFIID,IUnknown*); - HRESULT IClassFactory_LockServer_Proxy(IClassFactory,BOOL); - HRESULT IClassFactory_LockServer_Stub(IClassFactory,BOOL); - - void IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - +/ -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_unknwn.d) + */ +module core.sys.windows.unknwn; + +import core.sys.windows.objfwd, core.sys.windows.windef, core.sys.windows.wtypes; +private import core.sys.windows.basetyps; + +extern (Windows) { + void* MIDL_user_allocate(size_t); + void MIDL_user_free(void*); +} + + +extern (Windows) { + + interface IUnknown { + HRESULT QueryInterface(IID* riid, void** pvObject); + ULONG AddRef(); + ULONG Release(); + } + + alias IUnknown LPUNKNOWN; + + interface IClassFactory : IUnknown { + HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject); + HRESULT LockServer(BOOL fLock); + } + alias IClassFactory LPCLASSFACTORY; + + /+ + // These do not seem to be necessary (or desirable) for D. + HRESULT IUnknown_QueryInterface_Proxy(IUnknown,REFIID,void**); + ULONG IUnknown_AddRef_Proxy(IUnknown); + ULONG IUnknown_Release_Proxy(IUnknown); + HRESULT IClassFactory_RemoteCreateInstance_Proxy(IClassFactory,REFIID,IUnknown*); + HRESULT IClassFactory_RemoteLockServer_Proxy(IClassFactory,BOOL); + HRESULT IClassFactory_CreateInstance_Proxy(IClassFactory,IUnknown,REFIID,void**); + HRESULT IClassFactory_CreateInstance_Stub(IClassFactory,REFIID,IUnknown*); + HRESULT IClassFactory_LockServer_Proxy(IClassFactory,BOOL); + HRESULT IClassFactory_LockServer_Stub(IClassFactory,BOOL); + + void IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + +/ +} diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index 9707ca4668..faadc1ff14 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -1,2395 +1,2395 @@ -/** - * Windows API header module - * - * written in the D programming language - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_vfw.d) - */ - -module core.sys.windows.vfw; -pragma(lib, "vfw32"); - -private import - core.sys.windows.commdlg, - core.sys.windows.wingdi, - core.sys.windows.mmsystem, - core.sys.windows.unknwn, - core.sys.windows.w32api, - core.sys.windows.windef, - core.sys.windows.winuser; - -extern(Windows) { - DWORD VideoForWindowsVersion(); - LONG InitVFW(); - LONG TermVFW(); -} - -DWORD MKFOURCC(char ch0, char ch1, char ch2, char ch3) { - return (cast(DWORD)ch0) | ((cast(DWORD)ch1) << 8) | ((cast(DWORD)ch2) << 16) | ((cast(DWORD)ch3) << 24); -} - -/** - * COMPMAN - Installable Compression Manager. - */ - -const ICVERSION = 0x0104; - -alias TypeDef!(HANDLE) HIC; - -const BI_1632 = 0x32333631; - -template aviTWOCC(char c0, char c1) { - const WORD aviTWOCC = c0 | (c1 << 8); -} - -const ICTYPE_VIDEO = mmioFOURCC!('v', 'i', 'd', 'c'); -const ICTYPE_AUDIO = mmioFOURCC!('a', 'u', 'd', 'c'); - -enum { - ICERR_OK = 0, - ICERR_DONTDRAW = 1, - ICERR_NEWPALETTE = 2, - ICERR_GOTOKEYFRAME = 3, - ICERR_STOPDRAWING = 4, -} - -const ICERR_UNSUPPORTED = -1; -const ICERR_BADFORMAT = -2; -const ICERR_MEMORY = -3; -const ICERR_INTERNAL = -4; -const ICERR_BADFLAGS = -5; -const ICERR_BADPARAM = -6; -const ICERR_BADSIZE = -7; -const ICERR_BADHANDLE = -8; -const ICERR_CANTUPDATE = -9; -const ICERR_ABORT = -10; -const ICERR_ERROR = -100; -const ICERR_BADBITDEPTH = -200; -const ICERR_BADIMAGESIZE = -201; - -const ICERR_CUSTOM = -400; - -enum { - ICMODE_COMPRESS = 1, - ICMODE_DECOMPRESS, - ICMODE_FASTDECOMPRESS, - ICMODE_QUERY, - ICMODE_FASTCOMPRESS, - ICMODE_DRAW = 8, -} - -const ICMODE_INTERNALF_FUNCTION32 = 0x8000; -const ICMODE_INTERNALF_MASK = 0x8000; - -enum { - AVIIF_LIST = 0x00000001, - AVIIF_TWOCC = 0x00000002, - AVIIF_KEYFRAME = 0x00000010, -} - -const ICQUALITY_LOW = 0; -const ICQUALITY_HIGH = 10000; -const ICQUALITY_DEFAULT = -1; - -enum { - ICM_USER = DRV_USER + 0x0000, - ICM_RESERVED_LOW = DRV_USER + 0x1000, - ICM_RESERVED_HIGH = DRV_USER + 0x2000, - ICM_RESERVED = ICM_RESERVED_LOW, -} - -// messages - -enum { - ICM_GETSTATE = ICM_RESERVED + 0, - ICM_SETSTATE = ICM_RESERVED + 1, - ICM_GETINFO = ICM_RESERVED + 2, - ICM_CONFIGURE = ICM_RESERVED + 10, - ICM_ABOUT = ICM_RESERVED + 11, - ICM_GETERRORTEXT = ICM_RESERVED + 12, - ICM_GETFORMATNAME = ICM_RESERVED + 20, - ICM_ENUMFORMATS = ICM_RESERVED + 21, - ICM_GETDEFAULTQUALITY = ICM_RESERVED + 30, - ICM_GETQUALITY = ICM_RESERVED + 31, - ICM_SETQUALITY = ICM_RESERVED + 32, - ICM_SET = ICM_RESERVED + 40, - ICM_GET = ICM_RESERVED + 41, -} - -const ICM_FRAMERATE = mmioFOURCC!('F','r','m','R'); -const ICM_KEYFRAMERATE = mmioFOURCC!('K','e','y','R'); - -// ICM specific messages. - -enum { - ICM_COMPRESS_GET_FORMAT = ICM_USER + 4, - ICM_COMPRESS_GET_SIZE = ICM_USER + 5, - ICM_COMPRESS_QUERY = ICM_USER + 6, - ICM_COMPRESS_BEGIN = ICM_USER + 7, - ICM_COMPRESS = ICM_USER + 8, - ICM_COMPRESS_END = ICM_USER + 9, - ICM_DECOMPRESS_GET_FORMAT = ICM_USER + 10, - ICM_DECOMPRESS_QUERY = ICM_USER + 11, - ICM_DECOMPRESS_BEGIN = ICM_USER + 12, - ICM_DECOMPRESS = ICM_USER + 13, - ICM_DECOMPRESS_END = ICM_USER + 14, - ICM_DECOMPRESS_SET_PALETTE = ICM_USER + 29, - ICM_DECOMPRESS_GET_PALETTE = ICM_USER + 30, - ICM_DRAW_QUERY = ICM_USER + 31, - ICM_DRAW_BEGIN = ICM_USER + 15, - ICM_DRAW_GET_PALETTE = ICM_USER + 16, - ICM_DRAW_UPDATE = ICM_USER + 17, - ICM_DRAW_START = ICM_USER + 18, - ICM_DRAW_STOP = ICM_USER + 19, - ICM_DRAW_BITS = ICM_USER + 20, - ICM_DRAW_END = ICM_USER + 21, - ICM_DRAW_GETTIME = ICM_USER + 32, - ICM_DRAW = ICM_USER + 33, - ICM_DRAW_WINDOW = ICM_USER + 34, - ICM_DRAW_SETTIME = ICM_USER + 35, - ICM_DRAW_REALIZE = ICM_USER + 36, - ICM_DRAW_FLUSH = ICM_USER + 37, - ICM_DRAW_RENDERBUFFER = ICM_USER + 38, - ICM_DRAW_START_PLAY = ICM_USER + 39, - ICM_DRAW_STOP_PLAY = ICM_USER + 40, - ICM_DRAW_SUGGESTFORMAT = ICM_USER + 50, - ICM_DRAW_CHANGEPALETTE = ICM_USER + 51, - ICM_DRAW_IDLE = ICM_USER + 52, - ICM_GETBUFFERSWANTED = ICM_USER + 41, - ICM_GETDEFAULTKEYFRAMERATE = ICM_USER + 42, - ICM_DECOMPRESSEX_BEGIN = ICM_USER + 60, - ICM_DECOMPRESSEX_QUERY = ICM_USER + 61, - ICM_DECOMPRESSEX = ICM_USER + 62, - ICM_DECOMPRESSEX_END = ICM_USER + 63, - ICM_COMPRESS_FRAMES_INFO = ICM_USER + 70, - ICM_COMPRESS_FRAMES = ICM_USER + 71, - ICM_SET_STATUS_PROC = ICM_USER + 72, -} - -struct ICOPEN { - DWORD dwSize; - DWORD fccType; - DWORD fccHandler; - DWORD dwVersion; - DWORD dwFlags; - LRESULT dwError; - LPVOID pV1Reserved; - LPVOID pV2Reserved; - DWORD dnDevNode; -} - -struct ICINFO { - DWORD dwSize; - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwVersion; - DWORD dwVersionICM; - WCHAR[16] szName; - WCHAR[128] szDescription; - WCHAR[128] szDriver; -} - -enum { - VIDCF_QUALITY = 0x0001, - VIDCF_CRUNCH = 0x0002, - VIDCF_TEMPORAL = 0x0004, - VIDCF_COMPRESSFRAMES = 0x0008, - VIDCF_DRAW = 0x0010, - VIDCF_FASTTEMPORALC = 0x0020, - VIDCF_FASTTEMPORALD = 0x0080, -} - -const ICCOMPRESS_KEYFRAME = 0x00000001L; - -struct ICCOMPRESS { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiOutput; - LPVOID lpOutput; - LPBITMAPINFOHEADER lpbiInput; - LPVOID lpInput; - LPDWORD lpckid; - LPDWORD lpdwFlags; - LONG lFrameNum; - DWORD dwFrameSize; - DWORD dwQuality; - LPBITMAPINFOHEADER lpbiPrev; - LPVOID lpPrev; -} - -const ICCOMPRESSFRAMES_PADDING = 0x00000001; - -struct ICCOMPRESSFRAMES { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiOutput; - LPARAM lOutput; - LPBITMAPINFOHEADER lpbiInput; - LPARAM lInput; - LONG lStartFrame; - LONG lFrameCount; - LONG lQuality; - LONG lDataRate; - LONG lKeyRate; - DWORD dwRate; - DWORD dwScale; DWORD dwOverheadPerFrame; - DWORD dwReserved2; - - LONG function(LPARAM lInput, LONG lFrame, LPVOID lpBits, LONG len) GetData; - LONG function(LPARAM lOutput, LONG lFrame, LPVOID lpBits, LONG len) PutData; -} - -enum { - ICSTATUS_START = 0, - ICSTATUS_STATUS = 1, - ICSTATUS_END = 2, - ICSTATUS_ERROR = 3, - ICSTATUS_YIELD = 4, -} - -struct ICSETSTATUSPROC { - DWORD dwFlags; - LPARAM lParam; - LONG function(LPARAM lParam, UINT message, LONG l) Status; -} - -enum { - ICDECOMPRESS_NOTKEYFRAME = 0x08000000, - ICDECOMPRESS_NULLFRAME = 0x10000000, - ICDECOMPRESS_PREROLL = 0x20000000, - ICDECOMPRESS_UPDATE = 0x40000000, - ICDECOMPRESS_HURRYUP = 0x80000000, -} - -struct ICDECOMPRESS { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiInput; - LPVOID lpInput; - LPBITMAPINFOHEADER lpbiOutput; - LPVOID lpOutput; - DWORD ckid; -} - -struct ICDECOMPRESSEX { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiSrc; - LPVOID lpSrc; - LPBITMAPINFOHEADER lpbiDst; - LPVOID lpDst; - int xDst; - int yDst; - int dxDst; - int dyDst; - int xSrc; - int ySrc; - int dxSrc; - int dySrc; -} - -enum { - ICDRAW_QUERY = 0x00000001, - ICDRAW_FULLSCREEN = 0x00000002, - ICDRAW_HDC = 0x00000004, - ICDRAW_ANIMATE = 0x00000008, - ICDRAW_CONTINUE = 0x00000010, - ICDRAW_MEMORYDC = 0x00000020, - ICDRAW_UPDATING = 0x00000040, - ICDRAW_RENDER = 0x00000080, - ICDRAW_BUFFER = 0x00000100, -} - -struct ICDRAWBEGIN { - DWORD dwFlags; - HPALETTE hpal; - HWND hwnd; - HDC hdc; - int xDst; - int yDst; - int dxDst; - int dyDst; - LPBITMAPINFOHEADER lpbi; - int xSrc; - int ySrc; - int dxSrc; - int dySrc; - DWORD dwRate; - DWORD dwScale; -} - -enum { - ICDRAW_NOTKEYFRAME = 0x08000000, - ICDRAW_NULLFRAME = 0x10000000, - ICDRAW_PREROLL = 0x20000000, - ICDRAW_UPDATE = 0x40000000, - ICDRAW_HURRYUP = 0x80000000, -} - -struct ICDRAW { - DWORD dwFlags; - LPVOID lpFormat; - LPVOID lpData; - DWORD cbData; - LONG lTime; -} - -struct ICDRAWSUGGEST { - LPBITMAPINFOHEADER lpbiIn; - LPBITMAPINFOHEADER lpbiSuggest; - int dxSrc; - int dySrc; - int dxDst; - int dyDst; - HIC hicDecompressor; -} - -struct ICPALETTE { - DWORD dwFlags; - int iStart; - int iLen; - LPPALETTEENTRY lppe; -} - - -/** - * ICM function declarations - */ - -extern (Windows) { - BOOL ICInfo(DWORD fccType, DWORD fccHandler, ICINFO *lpicinfo); - BOOL ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags); - BOOL ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags); - LRESULT ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb); - HIC ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode); - HIC ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler); - LRESULT ICClose(HIC hic); - LRESULT ICSendMessage(HIC hic, UINT msg, DWORD_PTR dw1, DWORD_PTR dw2); -} - -enum { - ICINSTALL_FUNCTION = 0x0001, - ICINSTALL_DRIVER = 0x0002, - ICINSTALL_HDRV = 0x0004, - ICINSTALL_UNICODE = 0x8000, - ICINSTALL_DRIVERW = 0x8002, -} - -// query macros - -const ICMF_CONFIGURE_QUERY = 0x00000001; -const ICMF_ABOUT_QUERY = 0x00000001; - -DWORD ICQueryAbout(HIC hic) { - return ICSendMessage(hic, ICM_ABOUT, -1, ICMF_ABOUT_QUERY) == ICERR_OK; -} - -DWORD ICAbout(HIC hic, HWND hwnd) { - return cast(DWORD) ICSendMessage(hic, ICM_ABOUT, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); -} - -DWORD ICQueryConfigure(HIC hic) { - return (ICSendMessage(hic, ICM_CONFIGURE, -1, ICMF_CONFIGURE_QUERY) == ICERR_OK); -} - -DWORD ICConfigure(HIC hic, HWND hwnd) { - return cast(DWORD) ICSendMessage(hic, ICM_CONFIGURE, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); -} - -DWORD ICGetState(HIC hic, LPVOID pv, DWORD_PTR cb) { - return cast(DWORD) ICSendMessage(hic, ICM_GETSTATE, cast(DWORD_PTR) pv, cb); -} - -DWORD ICSetState(HIC hic, LPVOID pv, DWORD_PTR cb) { - return cast(DWORD) ICSendMessage(hic, ICM_SETSTATE, cast(DWORD_PTR) pv, cb); -} - -DWORD ICGetStateSize(HIC hic) { - return ICGetState(hic, null, 0); -} - -DWORD dwICValue; - -DWORD ICGetDefaultQuality(HIC hic) { - ICSendMessage(hic, ICM_GETDEFAULTQUALITY, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); - return dwICValue; -} - -DWORD ICGetDefaultKeyFrameRate(HIC hic) { - ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); - return dwICValue; -} - -DWORD ICDrawWindow(HIC hic, LPVOID prc) { - return cast(DWORD) ICSendMessage(hic, ICM_DRAW_WINDOW, cast(DWORD_PTR) prc, RECT.sizeof); -} - -extern (Windows) { - DWORD ICCompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiOutput, LPVOID lpData, - LPBITMAPINFOHEADER lpbiInput, LPVOID lpBits, LPDWORD lpckid, LPDWORD lpdwFlags, - LONG lFrameNum, DWORD dwFrameSize, DWORD dwQuality, LPBITMAPINFOHEADER lpbiPrev, LPVOID lpPrev); -} - -LRESULT ICCompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_COMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LRESULT ICCompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_COMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LRESULT ICCompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -DWORD ICCompressGetFormatSize(HIC hic, LPVOID lpbi) { - return cast(DWORD)ICCompressGetFormat(hic, lpbi, null); -} -DWORD ICCompressGetSize(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return cast(DWORD)ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LRESULT ICCompressEnd(HIC hic) { - return ICSendMessage(hic, ICM_COMPRESS_END, 0, 0); -} - -extern (Windows) { - DWORD ICDecompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiFormat, LPVOID lpData, LPBITMAPINFOHEADER lpbi, LPVOID lpBits); -} - -LRESULT ICDecompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LRESULT ICDecompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_DECOMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LONG ICDecompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return cast(LONG)ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LONG ICDecompressGetFormatSize(HIC hic, LPVOID lpbi) { - return ICDecompressGetFormat(hic, lpbi, null); -} -LRESULT ICDecompressGetPalette(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LRESULT ICDecompressSetPalette(HIC hic, LPVOID lpbiPalette) { - return ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, cast(DWORD_PTR)lpbiPalette, 0); -} -LRESULT ICDecompressEnd(HIC hic) { - return ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0); -} - -LRESULT ICDecompressEx(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, - LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, - LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { - ICDECOMPRESSEX ic; - - ic.dwFlags = dwFlags; - ic.lpbiSrc = lpbiSrc; - ic.lpSrc = lpSrc; - ic.xSrc = xSrc; - ic.ySrc = ySrc; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.lpbiDst = lpbiDst; - ic.lpDst = lpDst; - ic.xDst = xDst; - ic.yDst = yDst; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - - return ICSendMessage(hic, ICM_DECOMPRESSEX, cast(DWORD_PTR)&ic, ic.sizeof); -} - -LRESULT ICDecompressExBegin(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, - LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, - LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { - ICDECOMPRESSEX ic; - - ic.dwFlags = dwFlags; - ic.lpbiSrc = lpbiSrc; - ic.lpSrc = lpSrc; - ic.xSrc = xSrc; - ic.ySrc = ySrc; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.lpbiDst = lpbiDst; - ic.lpDst = lpDst; - ic.xDst = xDst; - ic.yDst = yDst; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - - return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, cast(DWORD_PTR)&ic, ic.sizeof); -} - -LRESULT ICDecompressExQuery(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, - LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, - LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { - ICDECOMPRESSEX ic; - - ic.dwFlags = dwFlags; - ic.lpbiSrc = lpbiSrc; - ic.lpSrc = lpSrc; - ic.xSrc = xSrc; - ic.ySrc = ySrc; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.lpbiDst = lpbiDst; - ic.lpDst = lpDst; - ic.xDst = xDst; - ic.yDst = yDst; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - - return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, cast(DWORD_PTR)&ic, ic.sizeof); -} - -LRESULT ICDecompressExEnd(HIC hic) { - return ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0); -} - -extern (Windows) { - DWORD ICDrawBegin(HIC hic, DWORD dwFlags, HPALETTE hpal, HWND hwnd, HDC hdc, - int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, - int xSrc, int ySrc, int dxSrc, int dySrc, DWORD dwRate, DWORD dwScale); -} - -extern (Windows) { - DWORD ICDraw(HIC hic, DWORD dwFlags, LPVOID lpFormat, LPVOID lpData, DWORD cbData, LONG lTime); -} - -LRESULT ICDrawSuggestFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, - int dxSrc, int dySrc, int dxDst, int dyDst, HIC hicDecomp) { - ICDRAWSUGGEST ic; - - ic.lpbiIn = lpbiIn; - ic.lpbiSuggest = lpbiOut; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - ic.hicDecompressor = hicDecomp; - - return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, cast(DWORD_PTR)&ic, ic.sizeof); -} - -LRESULT ICDrawQuery(HIC hic, LPVOID lpbiInput) { - return ICSendMessage(hic, ICM_DRAW_QUERY, cast(DWORD_PTR)lpbiInput, 0L); -} -LRESULT ICDrawChangePalette(HIC hic, LPVOID lpbiInput) { - return ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, cast(DWORD_PTR)lpbiInput, 0L); -} -LRESULT ICGetBuffersWanted(HIC hic, LPVOID lpdwBuffers) { - return ICSendMessage(hic, ICM_GETBUFFERSWANTED, cast(DWORD_PTR)lpdwBuffers, 0); -} -LRESULT ICDrawEnd(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_END, 0, 0); -} -LRESULT ICDrawStart(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_START, 0, 0); -} -LRESULT ICDrawStartPlay(HIC hic, DWORD lFrom, DWORD lTo) { - return ICSendMessage(hic, ICM_DRAW_START_PLAY, cast(DWORD_PTR)lFrom, cast(DWORD_PTR)lTo); -} -LRESULT ICDrawStop(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_STOP, 0, 0); -} -LRESULT ICDrawStopPlay(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0); -} -LRESULT ICDrawGetTime(HIC hic, LPVOID lplTime) { - return ICSendMessage(hic, ICM_DRAW_GETTIME, cast(DWORD_PTR)lplTime, 0); -} -LRESULT ICDrawSetTime(HIC hic, DWORD lTime) { - return ICSendMessage(hic, ICM_DRAW_SETTIME, cast(DWORD_PTR)lTime, 0); -} -LRESULT ICDrawRealize(HIC hic, HDC hdc, BOOL fBackground) { - return ICSendMessage(hic, ICM_DRAW_REALIZE, cast(DWORD_PTR)hdc, cast(DWORD_PTR)fBackground); -} -LRESULT ICDrawFlush(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0); -} -LRESULT ICDrawRenderBuffer(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0); -} - -LRESULT ICSetStatusProc(HIC hic, DWORD dwFlags, LRESULT lParam, LONG function(LPARAM, UINT, LONG) fpfnStatus) { - ICSETSTATUSPROC ic; - - ic.dwFlags = dwFlags; - ic.lParam = lParam; - ic.Status = fpfnStatus; - - return ICSendMessage(hic, ICM_SET_STATUS_PROC, cast(DWORD_PTR)&ic, ic.sizeof); -} - -HIC ICDecompressOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut) { - return ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS); -} - -HIC ICDrawOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn) { - return ICLocate(fccType, fccHandler, lpbiIn, null, ICMODE_DRAW); -} - -extern (Windows) { - HIC ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags); - HIC ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy); - HANDLE ICImageCompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut, LONG lQuality, LONG* plSize); - HANDLE ICImageDecompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut); -} - -struct COMPVARS { - LONG cbSize = this.sizeof; - DWORD dwFlags; - HIC hic; - DWORD fccType; - DWORD fccHandler; - LPBITMAPINFO lpbiIn; - LPBITMAPINFO lpbiOut; - LPVOID lpBitsOut; - LPVOID lpBitsPrev; - LONG lFrame; - LONG lKey; - LONG lDataRate; - LONG lQ; - LONG lKeyCount; - LPVOID lpState; - LONG cbState; -} -alias COMPVARS* PCOMPVARS; - -const ICMF_COMPVARS_VALID = 0x00000001; - -extern (Windows) { - BOOL ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData, PCOMPVARS pc, LPSTR lpszTitle); -} - -enum { - ICMF_CHOOSE_KEYFRAME = 0x0001, - ICMF_CHOOSE_DATARATE = 0x0002, - ICMF_CHOOSE_PREVIEW = 0x0004, - ICMF_CHOOSE_ALLCOMPRESSORS = 0x0008, -} - -extern (Windows) { - BOOL ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn); - void ICSeqCompressFrameEnd(PCOMPVARS pc); - LPVOID ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits, BOOL* pfKey, LONG* plSize); - void ICCompressorFree(PCOMPVARS pc); -} - -mixin DECLARE_HANDLE!("HDRAWDIB"); - -enum { - DDF_0001 = 0x0001, - DDF_UPDATE = 0x0002, - DDF_SAME_HDC = 0x0004, - DDF_SAME_DRAW = 0x0008, - DDF_DONTDRAW = 0x0010, - DDF_ANIMATE = 0x0020, - DDF_BUFFER = 0x0040, - DDF_JUSTDRAWIT = 0x0080, - DDF_FULLSCREEN = 0x0100, - DDF_BACKGROUNDPAL = 0x0200, - DDF_NOTKEYFRAME = 0x0400, - DDF_HURRYUP = 0x0800, - DDF_HALFTONE = 0x1000, - DDF_2000 = 0x2000, - DDF_PREROLL = DDF_DONTDRAW, - DDF_SAME_DIB = DDF_SAME_DRAW, - DDF_SAME_SIZE = DDF_SAME_DRAW, -} - -extern (Windows) { - BOOL DrawDibInit(); - HDRAWDIB DrawDibOpen(); - BOOL DrawDibClose(HDRAWDIB hdd); - LPVOID DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags); - UINT DrawDibError(HDRAWDIB hdd); - HPALETTE DrawDibGetPalette(HDRAWDIB hdd); - BOOL DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal); - BOOL DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe); - UINT DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground); - BOOL DrawDibStart(HDRAWDIB hdd, DWORD rate); - BOOL DrawDibStop(HDRAWDIB hdd); - BOOL DrawDibBegin(HDRAWDIB hdd, HDC hdc, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, int dxSrc, int dySrc, UINT wFlags); - BOOL DrawDibDraw(HDRAWDIB hdd, HDC hdc, int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, - LPVOID lpBits, int xSrc, int ySrc, int dxSrc, int dySrc, UINT wFlags); -} - -BOOL DrawDibUpdate(HDRAWDIB hdd, HDC hdc, int x, int y) { - return DrawDibDraw(hdd, hdc, x, y, 0, 0, null, null, 0, 0, 0, 0, DDF_UPDATE); -} - -extern (Windows) { - BOOL DrawDibEnd(HDRAWDIB hdd); -} - -struct DRAWDIBTIME { - LONG timeCount; - LONG timeDraw; - LONG timeDecompress; - LONG timeDither; - LONG timeStretch; - LONG timeBlt; - LONG timeSetDIBits; -} -alias DRAWDIBTIME* LPDRAWDIBTIME; - -extern (Windows) { - BOOL DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime); -} - -enum { - PD_CAN_DRAW_DIB = 0x0001, - PD_CAN_STRETCHDIB = 0x0002, - PD_STRETCHDIB_1_1_OK = 0x0004, - PD_STRETCHDIB_1_2_OK = 0x0008, - PD_STRETCHDIB_1_N_OK = 0x0010, -} - -extern (Windows) { - LRESULT DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi); - void StretchDIB(LPBITMAPINFOHEADER biDst, LPVOID lpDst, int DstX, int DstY, - int DstXE, int DstYE, LPBITMAPINFOHEADER biSrc, LPVOID lpSrc, - int SrcX, int SrcY, int SrcXE, int SrcYE); -} - -alias DWORD FOURCC; - -alias WORD TWOCC; - -const formtypeAVI = mmioFOURCC!('A', 'V', 'I', ' '); -const listtypeAVIHEADER = mmioFOURCC!('h', 'd', 'r', 'l'); -const ckidAVIMAINHDR = mmioFOURCC!('a', 'v', 'i', 'h'); -const listtypeSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'l'); -const ckidSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'h'); -const ckidSTREAMFORMAT = mmioFOURCC!('s', 't', 'r', 'f'); -const ckidSTREAMHANDLERDATA = mmioFOURCC!('s', 't', 'r', 'd'); -const ckidSTREAMNAME = mmioFOURCC!('s', 't', 'r', 'n'); -const listtypeAVIMOVIE = mmioFOURCC!('m', 'o', 'v', 'i'); -const listtypeAVIRECORD = mmioFOURCC!('r', 'e', 'c', ' '); -const ckidAVINEWINDEX = mmioFOURCC!('i', 'd', 'x', '1'); -const streamtypeVIDEO = mmioFOURCC!('v', 'i', 'd', 's'); -const streamtypeAUDIO = mmioFOURCC!('a', 'u', 'd', 's'); -const streamtypeMIDI = mmioFOURCC!('m', 'i', 'd', 's'); -const streamtypeTEXT = mmioFOURCC!('t', 'x', 't', 's'); - -const cktypeDIBbits = aviTWOCC!('d', 'b'); -const cktypeDIBcompressed = aviTWOCC!('d', 'c'); -const cktypePALchange = aviTWOCC!('p', 'c'); -const cktypeWAVEbytes = aviTWOCC!('w', 'b'); - -const ckidAVIPADDING = mmioFOURCC!('J', 'U', 'N', 'K'); - -DWORD FromHex(char n) { - return (n >= 'A') ? n + 10 - 'A' : n - '0'; -} - -WORD StreamFromFOURCC(DWORD fcc) { - return cast(WORD)((FromHex(LOBYTE(LOWORD(fcc))) << 4) + (FromHex(HIBYTE(LOWORD(fcc))))); -} - -WORD TWOCCFromFOURCC(DWORD fcc) { - return HIWORD(fcc); -} - -BYTE ToHex(DWORD n) { - return cast(BYTE)((n > 9) ? n - 10 + 'A' : n + '0'); -} - -DWORD MAKEAVICKID(WORD tcc, WORD stream) { - return MAKELONG(cast(WORD)((ToHex(stream & 0x0f) << 8) | (ToHex((stream & 0xf0) >> 4))), tcc); -} - -enum { - AVIF_HASINDEX = 0x00000010, - AVIF_MUSTUSEINDEX = 0x00000020, - AVIF_ISINTERLEAVED = 0x00000100, - AVIF_WASCAPTUREFILE = 0x00010000, - AVIF_COPYRIGHTED = 0x00020000, -} - -const AVI_HEADERSIZE = 2048; - -struct MainAVIHeader { - DWORD dwMicroSecPerFrame; - DWORD dwMaxBytesPerSec; - DWORD dwPaddingGranularity; - DWORD dwFlags; - DWORD dwTotalFrames; - DWORD dwInitialFrames; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD[4] dwReserved; -} - -const AVISF_DISABLED = 0x00000001; - -const AVISF_VIDEO_PALCHANGES = 0x00010000; - -struct AVIStreamHeader { - FOURCC fccType; - FOURCC fccHandler; - DWORD dwFlags; - WORD wPriority; - WORD wLanguage; - DWORD dwInitialFrames; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; -} - -enum { - AVIIF_FIRSTPART = 0x00000020L, - AVIIF_LASTPART = 0x00000040L, - AVIIF_MIDPART = (AVIIF_LASTPART|AVIIF_FIRSTPART), - AVIIF_NOTIME = 0x00000100L, - AVIIF_COMPUSE = 0x0FFF0000L, -} - -struct AVIINDEXENTRY { - DWORD ckid; - DWORD dwFlags; - DWORD dwChunkOffset; - DWORD dwChunkLength; -} - -struct AVIPALCHANGE { - BYTE bFirstEntry; - BYTE bNumEntries; - WORD wFlags; - PALETTEENTRY[1] _peNew; - PALETTEENTRY* peNew() { return _peNew.ptr; } -} - -const AVIGETFRAMEF_BESTDISPLAYFMT = 1; - -struct AVISTREAMINFOW { - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwCaps; - WORD wPriority; - WORD wLanguage; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwInitialFrames; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; - DWORD dwEditCount; - DWORD dwFormatChangeCount; - WCHAR[64] szName; -} -alias AVISTREAMINFOW* LPAVISTREAMINFOW; - -struct AVISTREAMINFOA { - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwCaps; - WORD wPriority; - WORD wLanguage; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwInitialFrames; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; - DWORD dwEditCount; - DWORD dwFormatChangeCount; - char[64] szName; -} -alias AVISTREAMINFOA* LPAVISTREAMINFOA; - -version(Unicode) { - alias AVISTREAMINFOW AVISTREAMINFO; - alias LPAVISTREAMINFOW LPAVISTREAMINFO; -} else { // Unicode - alias AVISTREAMINFOA AVISTREAMINFO; - alias LPAVISTREAMINFOA LPAVISTREAMINFO; -} - -const AVISTREAMINFO_DISABLED = 0x00000001; -const AVISTREAMINFO_FORMATCHANGES = 0x00010000; - -struct AVIFILEINFOW { - DWORD dwMaxBytesPerSec; - DWORD dwFlags; - DWORD dwCaps; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwScale; - DWORD dwRate; - DWORD dwLength; - DWORD dwEditCount; - WCHAR[64] szFileType; -} -alias AVIFILEINFOW* LPAVIFILEINFOW; - -struct AVIFILEINFOA { - DWORD dwMaxBytesPerSec; - DWORD dwFlags; - DWORD dwCaps; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwScale; - DWORD dwRate; - DWORD dwLength; - DWORD dwEditCount; - char[64] szFileType; -} -alias AVIFILEINFOA* LPAVIFILEINFOA; - -version(Unicode) { - alias AVIFILEINFOW AVIFILEINFO; - alias LPAVIFILEINFOW LPAVIFILEINFO; -} else { // Unicode - alias AVIFILEINFOA AVIFILEINFO; - alias LPAVIFILEINFOA LPAVIFILEINFO; -} - -enum { - AVIFILEINFO_HASINDEX = 0x00000010, - AVIFILEINFO_MUSTUSEINDEX = 0x00000020, - AVIFILEINFO_ISINTERLEAVED = 0x00000100, - AVIFILEINFO_WASCAPTUREFILE = 0x00010000, - AVIFILEINFO_COPYRIGHTED = 0x00020000, -} - -enum { - AVIFILECAPS_CANREAD = 0x00000001, - AVIFILECAPS_CANWRITE = 0x00000002, - AVIFILECAPS_ALLKEYFRAMES = 0x00000010, - AVIFILECAPS_NOCOMPRESSION = 0x00000020, -} - -extern (Windows) { - alias BOOL function(int) AVISAVECALLBACK; -} - -struct AVICOMPRESSOPTIONS { - DWORD fccType; - DWORD fccHandler; - DWORD dwKeyFrameEvery; - DWORD dwQuality; - DWORD dwBytesPerSecond; - DWORD dwFlags; - LPVOID lpFormat; - DWORD cbFormat; - LPVOID lpParms; - DWORD cbParms; - DWORD dwInterleaveEvery; -} -alias AVICOMPRESSOPTIONS* LPAVICOMPRESSOPTIONS; - -enum { - AVICOMPRESSF_INTERLEAVE = 0x00000001, - AVICOMPRESSF_DATARATE = 0x00000002, - AVICOMPRESSF_KEYFRAMES = 0x00000004, - AVICOMPRESSF_VALID = 0x00000008, -} - -/+ TODO: -DECLARE_INTERFACE_(IAVIStream, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - STDMETHOD(Create) (THIS_ LPARAM lParam1, LPARAM lParam2) PURE ; - STDMETHOD(Info) (THIS_ AVISTREAMINFOW FAR * psi, LONG lSize) PURE ; - STDMETHOD_(LONG, FindSample)(THIS_ LONG lPos, LONG lFlags) PURE ; - STDMETHOD(ReadFormat) (THIS_ LONG lPos, - LPVOID lpFormat, LONG FAR *lpcbFormat) PURE ; - STDMETHOD(SetFormat) (THIS_ LONG lPos, - LPVOID lpFormat, LONG cbFormat) PURE ; - STDMETHOD(Read) (THIS_ LONG lStart, LONG lSamples, - LPVOID lpBuffer, LONG cbBuffer, - LONG FAR * plBytes, LONG FAR * plSamples) PURE ; - STDMETHOD(Write) (THIS_ LONG lStart, LONG lSamples, - LPVOID lpBuffer, LONG cbBuffer, - DWORD dwFlags, - LONG FAR *plSampWritten, - LONG FAR *plBytesWritten) PURE ; - STDMETHOD(Delete) (THIS_ LONG lStart, LONG lSamples) PURE; - STDMETHOD(ReadData) (THIS_ DWORD fcc, LPVOID lp, LONG FAR *lpcb) PURE ; - STDMETHOD(WriteData) (THIS_ DWORD fcc, LPVOID lp, LONG cb) PURE ; -#ifdef _WIN32 - STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, - LONG cbInfo) PURE; -#else - STDMETHOD(Reserved1) (THIS) PURE; - STDMETHOD(Reserved2) (THIS) PURE; - STDMETHOD(Reserved3) (THIS) PURE; - STDMETHOD(Reserved4) (THIS) PURE; - STDMETHOD(Reserved5) (THIS) PURE; -#endif -}; - -alias TypeDef!(IAVIStream FAR*) PAVISTREAM; - -#undef INTERFACE -#define INTERFACE IAVIStreaming - -DECLARE_INTERFACE_(IAVIStreaming, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - STDMETHOD(Begin) (THIS_ - LONG lStart, - LONG lEnd, - LONG lRate) PURE; - STDMETHOD(End) (THIS) PURE; -}; - -alias TypeDef!(IAVIStreaming FAR*) PAVISTREAMING; - - -#undef INTERFACE -#define INTERFACE IAVIEditStream - -DECLARE_INTERFACE_(IAVIEditStream, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - STDMETHOD(Cut) (THIS_ LONG FAR *plStart, - LONG FAR *plLength, - PAVISTREAM FAR * ppResult) PURE; - STDMETHOD(Copy) (THIS_ LONG FAR *plStart, - LONG FAR *plLength, - PAVISTREAM FAR * ppResult) PURE; - STDMETHOD(Paste) (THIS_ LONG FAR *plPos, - LONG FAR *plLength, - PAVISTREAM pstream, - LONG lStart, - LONG lEnd) PURE; - STDMETHOD(Clone) (THIS_ PAVISTREAM FAR *ppResult) PURE; - STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, - LONG cbInfo) PURE; -}; - -alias TypeDef!(IAVIEditStream FAR*) PAVIEDITSTREAM; - -#undef INTERFACE -#define INTERFACE IAVIPersistFile - -DECLARE_INTERFACE_(IAVIPersistFile, IPersistFile) -{ - STDMETHOD(Reserved1)(THIS) PURE; -}; - -alias TypeDef!(IAVIPersistFile FAR*) PAVIPERSISTFILE; - -#undef INTERFACE -#define INTERFACE IAVIFile -#define PAVIFILE IAVIFile FAR* - -DECLARE_INTERFACE_(IAVIFile, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - STDMETHOD(Info) (THIS_ - AVIFILEINFOW FAR * pfi, - LONG lSize) PURE; - STDMETHOD(GetStream) (THIS_ - PAVISTREAM FAR * ppStream, - DWORD fccType, - LONG lParam) PURE; - STDMETHOD(CreateStream) (THIS_ - PAVISTREAM FAR * ppStream, - AVISTREAMINFOW FAR * psi) PURE; - STDMETHOD(WriteData) (THIS_ - DWORD ckid, - LPVOID lpData, - LONG cbData) PURE; - STDMETHOD(ReadData) (THIS_ - DWORD ckid, - LPVOID lpData, - LONG FAR *lpcbData) PURE; - STDMETHOD(EndRecord) (THIS) PURE; - STDMETHOD(DeleteStream) (THIS_ - DWORD fccType, - LONG lParam) PURE; -}; - -#undef PAVIFILE -alias TypeDef!(IAVIFile FAR*) PAVIFILE; - -#undef INTERFACE -#define INTERFACE IGetFrame -#define PGETFRAME IGetFrame FAR* - -DECLARE_INTERFACE_(IGetFrame, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - STDMETHOD_(LPVOID,GetFrame) (THIS_ LONG lPos) PURE; - - STDMETHOD(Begin) (THIS_ LONG lStart, LONG lEnd, LONG lRate) PURE; - STDMETHOD(End) (THIS) PURE; - - STDMETHOD(SetFormat) (THIS_ LPBITMAPINFOHEADER lpbi, LPVOID lpBits, int x, int y, int dx, int dy) PURE; -}; - -#undef PGETFRAME -alias TypeDef!(IGetFrame FAR*) PGETFRAME; - -#define DEFINE_AVIGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46) - -DEFINE_AVIGUID(IID_IAVIFile, 0x00020020, 0, 0); -DEFINE_AVIGUID(IID_IAVIStream, 0x00020021, 0, 0); -DEFINE_AVIGUID(IID_IAVIStreaming, 0x00020022, 0, 0); -DEFINE_AVIGUID(IID_IGetFrame, 0x00020023, 0, 0); -DEFINE_AVIGUID(IID_IAVIEditStream, 0x00020024, 0, 0); -DEFINE_AVIGUID(IID_IAVIPersistFile, 0x00020025, 0, 0); -#ifndef UNICODE -DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal, 0x00020009, 0, 0); -#endif - -DEFINE_AVIGUID(CLSID_AVIFile, 0x00020000, 0, 0); - -#define AVIFILEHANDLER_CANREAD 0x0001 -#define AVIFILEHANDLER_CANWRITE 0x0002 -#define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004 - -STDAPI_(void) AVIFileInit(void); -STDAPI_(void) AVIFileExit(void); - -STDAPI_(ULONG) AVIFileAddRef (PAVIFILE pfile); -STDAPI_(ULONG) AVIFileRelease (PAVIFILE pfile); - -#ifdef _WIN32 -STDAPI AVIFileOpenA (PAVIFILE FAR * ppfile, LPCSTR szFile, - UINT uMode, LPCLSID lpHandler); -STDAPI AVIFileOpenW (PAVIFILE FAR * ppfile, LPCWSTR szFile, - UINT uMode, LPCLSID lpHandler); -#ifdef UNICODE -#define AVIFileOpen AVIFileOpenW -#else -#define AVIFileOpen AVIFileOpenA -#endif -#else -STDAPI AVIFileOpen (PAVIFILE FAR * ppfile, LPCSTR szFile, - UINT uMode, LPCLSID lpHandler); -#define AVIFileOpenW AVIFileOpen -#endif - -#ifdef _WIN32 -STDAPI AVIFileInfoW (PAVIFILE pfile, LPAVIFILEINFOW pfi, LONG lSize); -STDAPI AVIFileInfoA (PAVIFILE pfile, LPAVIFILEINFOA pfi, LONG lSize); -#ifdef UNICODE -#define AVIFileInfo AVIFileInfoW -#else -#define AVIFileInfo AVIFileInfoA -#endif -#else -STDAPI AVIFileInfo (PAVIFILE pfile, LPAVIFILEINFO pfi, LONG lSize); -#define AVIFileInfoW AVIFileInfo -#endif - - -STDAPI AVIFileGetStream (PAVIFILE pfile, PAVISTREAM FAR * ppavi, DWORD fccType, LONG lParam); - - -#ifdef _WIN32 -STDAPI AVIFileCreateStreamW (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOW FAR * psi); -STDAPI AVIFileCreateStreamA (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOA FAR * psi); -#ifdef UNICODE -#define AVIFileCreateStream AVIFileCreateStreamW -#else -#define AVIFileCreateStream AVIFileCreateStreamA -#endif -#else -STDAPI AVIFileCreateStream(PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFO FAR * psi); -#define AVIFileCreateStreamW AVIFileCreateStream -#endif - -STDAPI AVIFileWriteData (PAVIFILE pfile, - DWORD ckid, - LPVOID lpData, - LONG cbData); -STDAPI AVIFileReadData (PAVIFILE pfile, - DWORD ckid, - LPVOID lpData, - LONG FAR *lpcbData); -STDAPI AVIFileEndRecord (PAVIFILE pfile); - -STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi); -STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi); - -STDAPI AVIStreamInfoW (PAVISTREAM pavi, LPAVISTREAMINFOW psi, LONG lSize); -STDAPI AVIStreamInfoA (PAVISTREAM pavi, LPAVISTREAMINFOA psi, LONG lSize); -#ifdef UNICODE -#define AVIStreamInfo AVIStreamInfoW -#else -#define AVIStreamInfo AVIStreamInfoA -#endif - -STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi, LONG lPos, LONG lFlags); -STDAPI AVIStreamReadFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG FAR *lpcbFormat); -STDAPI AVIStreamSetFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG cbFormat); -STDAPI AVIStreamReadData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG FAR *lpcb); -STDAPI AVIStreamWriteData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG cb); - -STDAPI AVIStreamRead (PAVISTREAM pavi, - LONG lStart, - LONG lSamples, - LPVOID lpBuffer, - LONG cbBuffer, - LONG FAR * plBytes, - LONG FAR * plSamples); -#define AVISTREAMREAD_CONVENIENT (-1L) - -STDAPI AVIStreamWrite (PAVISTREAM pavi, - LONG lStart, LONG lSamples, - LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags, - LONG FAR *plSampWritten, - LONG FAR *plBytesWritten); - -STDAPI_(LONG) AVIStreamStart (PAVISTREAM pavi); -STDAPI_(LONG) AVIStreamLength (PAVISTREAM pavi); -STDAPI_(LONG) AVIStreamTimeToSample (PAVISTREAM pavi, LONG lTime); -STDAPI_(LONG) AVIStreamSampleToTime (PAVISTREAM pavi, LONG lSample); - - -STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart, LONG lEnd, LONG lRate); -STDAPI AVIStreamEndStreaming(PAVISTREAM pavi); - -STDAPI_(PGETFRAME) AVIStreamGetFrameOpen(PAVISTREAM pavi, - LPBITMAPINFOHEADER lpbiWanted); -STDAPI_(LPVOID) AVIStreamGetFrame(PGETFRAME pg, LONG lPos); -STDAPI AVIStreamGetFrameClose(PGETFRAME pg); - -STDAPI AVIStreamOpenFromFileA(PAVISTREAM FAR *ppavi, LPCSTR szFile, - DWORD fccType, LONG lParam, - UINT mode, CLSID FAR *pclsidHandler); -STDAPI AVIStreamOpenFromFileW(PAVISTREAM FAR *ppavi, LPCWSTR szFile, - DWORD fccType, LONG lParam, - UINT mode, CLSID FAR *pclsidHandler); -#ifdef UNICODE -#define AVIStreamOpenFromFile AVIStreamOpenFromFileW -#else -#define AVIStreamOpenFromFile AVIStreamOpenFromFileA -#endif - -STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, - CLSID FAR *pclsidHandler); - - - -#define FIND_DIR 0x0000000FL -#define FIND_NEXT 0x00000001L -#define FIND_PREV 0x00000004L -#define FIND_FROM_START 0x00000008L - -#define FIND_TYPE 0x000000F0L -#define FIND_KEY 0x00000010L -#define FIND_ANY 0x00000020L -#define FIND_FORMAT 0x00000040L - -#define FIND_RET 0x0000F000L -#define FIND_POS 0x00000000L -#define FIND_LENGTH 0x00001000L -#define FIND_OFFSET 0x00002000L -#define FIND_SIZE 0x00003000L -#define FIND_INDEX 0x00004000L - -#define AVIStreamFindKeyFrame AVIStreamFindSample -#define FindKeyFrame FindSample - -#define AVIStreamClose AVIStreamRelease -#define AVIFileClose AVIFileRelease -#define AVIStreamInit AVIFileInit -#define AVIStreamExit AVIFileExit - -#define SEARCH_NEAREST FIND_PREV -#define SEARCH_BACKWARD FIND_PREV -#define SEARCH_FORWARD FIND_NEXT -#define SEARCH_KEY FIND_KEY -#define SEARCH_ANY FIND_ANY - -#define AVIStreamSampleToSample(pavi1, pavi2, l) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2, l)) - -#define AVIStreamNextSample(pavi, l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_ANY) - -#define AVIStreamPrevSample(pavi, l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_ANY) - -#define AVIStreamNearestSample(pavi, l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_ANY) - -#define AVIStreamNextKeyFrame(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_KEY) - -#define AVIStreamPrevKeyFrame(pavi, l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_KEY) - -#define AVIStreamNearestKeyFrame(pavi, l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_KEY) - -#define AVIStreamIsKeyFrame(pavi, l) (AVIStreamNearestKeyFrame(pavi,l) == l) - -#define AVIStreamPrevSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamPrevSample(pavi,AVIStreamTimeToSample(pavi,t))) - -#define AVIStreamNextSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNextSample(pavi,AVIStreamTimeToSample(pavi,t))) - -#define AVIStreamNearestSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNearestSample(pavi,AVIStreamTimeToSample(pavi,t))) - -#define AVIStreamNextKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNextKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) - -#define AVIStreamPrevKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamPrevKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) - -#define AVIStreamNearestKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNearestKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) - -#define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamStart(pavi)) - -#define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamLength(pavi)) - -#define AVIStreamEnd(pavi) (AVIStreamStart(pavi) + AVIStreamLength(pavi)) - -#define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi)) - -#define AVIStreamSampleSize(pavi, lPos, plSize) AVIStreamRead(pavi,lPos,1,NULL,0,plSize,NULL) - -#define AVIStreamFormatSize(pavi, lPos, plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize) - -#define AVIStreamDataSize(pavi, fcc, plSize) AVIStreamReadData(pavi,fcc,NULL,plSize) - -#ifndef comptypeDIB -#define comptypeDIB mmioFOURCC('D', 'I', 'B', ' ') -#endif - -STDAPI AVIMakeCompressedStream( - PAVISTREAM FAR * ppsCompressed, - PAVISTREAM ppsSource, - AVICOMPRESSOPTIONS FAR * lpOptions, - CLSID FAR *pclsidHandler); - -EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM pfile, - LPAVICOMPRESSOPTIONS lpOptions, - ...); - -STDAPI AVISaveVA(LPCSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM FAR * ppavi, - LPAVICOMPRESSOPTIONS FAR *plpOptions); -EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM pfile, - LPAVICOMPRESSOPTIONS lpOptions, - ...); - -STDAPI AVISaveVW(LPCWSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM FAR * ppavi, - LPAVICOMPRESSOPTIONS FAR *plpOptions); -#ifdef UNICODE -#define AVISave AVISaveW -#define AVISaveV AVISaveVW -#else -#define AVISave AVISaveA -#define AVISaveV AVISaveVA -#endif - - - -STDAPI_(INT_PTR) AVISaveOptions(HWND hwnd, - UINT uiFlags, - int nStreams, - PAVISTREAM FAR *ppavi, - LPAVICOMPRESSOPTIONS FAR *plpOptions); - -STDAPI AVISaveOptionsFree(int nStreams, - LPAVICOMPRESSOPTIONS FAR *plpOptions); - -STDAPI AVIBuildFilterW(LPWSTR lpszFilter, LONG cbFilter, BOOL fSaving); -STDAPI AVIBuildFilterA(LPSTR lpszFilter, LONG cbFilter, BOOL fSaving); -#ifdef UNICODE -#define AVIBuildFilter AVIBuildFilterW -#else -#define AVIBuildFilter AVIBuildFilterA -#endif -STDAPI AVIMakeFileFromStreams(PAVIFILE FAR * ppfile, - int nStreams, - PAVISTREAM FAR * papStreams); - -STDAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal, PAVISTREAM FAR *ppstream); - -STDAPI AVIPutFileOnClipboard(PAVIFILE pf); - -STDAPI AVIGetFromClipboard(PAVIFILE FAR * lppf); - -STDAPI AVIClearClipboard(void); - -STDAPI CreateEditableStream( - PAVISTREAM FAR * ppsEditable, - PAVISTREAM psSource); - -STDAPI EditStreamCut(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); - -STDAPI EditStreamCopy(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); - -STDAPI EditStreamPaste(PAVISTREAM pavi, LONG FAR *plPos, LONG FAR *plLength, PAVISTREAM pstream, LONG lStart, LONG lEnd); - -STDAPI EditStreamClone(PAVISTREAM pavi, PAVISTREAM FAR *ppResult); - - -STDAPI EditStreamSetNameA(PAVISTREAM pavi, LPCSTR lpszName); -STDAPI EditStreamSetNameW(PAVISTREAM pavi, LPCWSTR lpszName); -STDAPI EditStreamSetInfoW(PAVISTREAM pavi, LPAVISTREAMINFOW lpInfo, LONG cbInfo); -STDAPI EditStreamSetInfoA(PAVISTREAM pavi, LPAVISTREAMINFOA lpInfo, LONG cbInfo); -#ifdef UNICODE -#define EditStreamSetInfo EditStreamSetInfoW -#define EditStreamSetName EditStreamSetNameW -#else -#define EditStreamSetInfo EditStreamSetInfoA -#define EditStreamSetName EditStreamSetNameA -#endif -+/ -const AVIERR_OK = 0L; - -SCODE MAKE_AVIERR(DWORD error) { - return MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x4000 + error); -} - -const AVIERR_UNSUPPORTED = MAKE_AVIERR(101); -const AVIERR_BADFORMAT = MAKE_AVIERR(102); -const AVIERR_MEMORY = MAKE_AVIERR(103); -const AVIERR_INTERNAL = MAKE_AVIERR(104); -const AVIERR_BADFLAGS = MAKE_AVIERR(105); -const AVIERR_BADPARAM = MAKE_AVIERR(106); -const AVIERR_BADSIZE = MAKE_AVIERR(107); -const AVIERR_BADHANDLE = MAKE_AVIERR(108); -const AVIERR_FILEREAD = MAKE_AVIERR(109); -const AVIERR_FILEWRITE = MAKE_AVIERR(110); -const AVIERR_FILEOPEN = MAKE_AVIERR(111); -const AVIERR_COMPRESSOR = MAKE_AVIERR(112); -const AVIERR_NOCOMPRESSOR = MAKE_AVIERR(113); -const AVIERR_READONLY = MAKE_AVIERR(114); -const AVIERR_NODATA = MAKE_AVIERR(115); -const AVIERR_BUFFERTOOSMALL = MAKE_AVIERR(116); -const AVIERR_CANTCOMPRESS = MAKE_AVIERR(117); -const AVIERR_USERABORT = MAKE_AVIERR(198); -const AVIERR_ERROR = MAKE_AVIERR(199); - -const TCHAR[] MCIWND_WINDOW_CLASS = "MCIWndClass"; - -extern (Windows) { - HWND MCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCSTR szFile); - HWND MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCWSTR szFile); -} - -version(Unicode) { - alias MCIWndCreateW MCIWndCreate; -} else { // Unicode - alias MCIWndCreateA MCIWndCreate; -} - -extern(Windows) { - BOOL MCIWndRegisterClass(); -} - -enum { - MCIWNDOPENF_NEW = 0x0001, - MCIWNDF_NOAUTOSIZEWINDOW = 0x0001, - MCIWNDF_NOPLAYBAR = 0x0002, - MCIWNDF_NOAUTOSIZEMOVIE = 0x0004, - MCIWNDF_NOMENU = 0x0008, - MCIWNDF_SHOWNAME = 0x0010, - MCIWNDF_SHOWPOS = 0x0020, - MCIWNDF_SHOWMODE = 0x0040, - MCIWNDF_SHOWALL = 0x0070, - MCIWNDF_NOTIFYMODE = 0x0100, - MCIWNDF_NOTIFYPOS = 0x0200, - MCIWNDF_NOTIFYSIZE = 0x0400, - MCIWNDF_NOTIFYERROR = 0x1000, - MCIWNDF_NOTIFYALL = 0x1F00, - MCIWNDF_NOTIFYANSI = 0x0080, - MCIWNDF_NOTIFYMEDIAA = 0x0880, - MCIWNDF_NOTIFYMEDIAW = 0x0800, -} - -version(Unicode) { - alias MCIWNDF_NOTIFYMEDIAW MCIWNDF_NOTIFYMEDIA; -} else { // Unicode - alias MCIWNDF_NOTIFYMEDIAA MCIWNDF_NOTIFYMEDIA; -} - -enum { - MCIWNDF_RECORD = 0x2000, - MCIWNDF_NOERRORDLG = 0x4000, - MCIWNDF_NOOPEN = 0x8000, -} - -// can macros - -BOOL MCIWndCanPlay(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_PLAY, 0, 0); } -BOOL MCIWndCanRecord(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_RECORD, 0, 0); } -BOOL MCIWndCanSave(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_SAVE, 0, 0); } -BOOL MCIWndCanWindow(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_WINDOW, 0, 0); } -BOOL MCIWndCanEject(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_EJECT, 0, 0); } -BOOL MCIWndCanConfig(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_CONFIG, 0, 0); } -BOOL MCIWndPaletteKick(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_PALETTEKICK, 0, 0); } -LONG MCIWndSave(HWND hwnd, LPVOID szFile) - { return cast(LONG)SendMessage(hwnd, MCI_SAVE, 0, cast(LPARAM)szFile); } -LONG MCIWndSaveDialog(HWND hwnd) - { return MCIWndSave(hwnd, cast(LPVOID)-1); } -LONG MCIWndNew(HWND hwnd, LPVOID lp) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_NEW, 0, cast(LPARAM)lp); } -LONG MCIWndRecord(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_RECORD, 0, 0); } -LONG MCIWndOpen(HWND hwnd, LPVOID sz, UINT f) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_OPEN, cast(WPARAM)f, cast(LPARAM)sz); } -LONG MCIWndOpenDialog(HWND hwnd) - { return MCIWndOpen(hwnd, cast(LPVOID)-1, 0); } -LONG MCIWndClose(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_CLOSE, 0, 0); } -LONG MCIWndPlay(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_PLAY, 0, 0); } -LONG MCIWndStop(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_STOP, 0, 0); } -LONG MCIWndPause(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_PAUSE, 0, 0); } -LONG MCIWndResume(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_RESUME, 0, 0); } -LONG MCIWndSeek(HWND hwnd, LONG lPos) - { return cast(LONG)SendMessage(hwnd, MCI_SEEK, 0, cast(LPARAM)lPos); } -LONG MCIWndHome(HWND hwnd) - { return MCIWndSeek(hwnd, MCIWND_START); } -LONG MCIWndEnd(HWND hwnd) - { return MCIWndSeek(hwnd, MCIWND_END); } -LONG MCIWndEject(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_EJECT, 0, 0); } -LONG MCIWndGetSource(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_SOURCE, 0, cast(LPARAM)prc); } -LONG MCIWndPutSource(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_SOURCE, 0, cast(LPARAM)prc); } -LONG MCIWndGetDest(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_DEST, 0, cast(LPARAM)prc); } -LONG MCIWndPutDest(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_DEST, 0, cast(LPARAM)prc); } -LONG MCIWndPlayReverse(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYREVERSE, 0, 0); } -LONG MCIWndPlayFrom(HWND hwnd, LONG lPos) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, cast(LPARAM)lPos); } -LONG MCIWndPlayTo(HWND hwnd, LONG lPos) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYTO, 0, cast(LPARAM)lPos); } -LONG MCIWndPlayFromTo(HWND hwnd, LONG lStart, LONG lEnd) - { MCIWndSeek(hwnd, lStart); return MCIWndPlayTo(hwnd, lEnd); } -UINT MCIWndGetDeviceID(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0); } -UINT MCIWndGetAlias(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETALIAS, 0, 0); } -LONG MCIWndGetMode(HWND hwnd, LPTSTR lp, UINT len) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETMODE, cast(WPARAM)len, cast(LPARAM)lp); } -LONG MCIWndGetPosition(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0); } -LONG MCIWndGetPositionString(HWND hwnd, LPTSTR lp, UINT len) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, cast(WPARAM)len, cast(LPARAM)lp); } -LONG MCIWndGetStart(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0); } -LONG MCIWndGetLength(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0); } -LONG MCIWndGetEnd(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETEND, 0, 0); } -LONG MCIWndStep(HWND hwnd, LONG n) - { return cast(LONG)SendMessage(hwnd, MCI_STEP, 0, cast(LPARAM)n); } -void MCIWndDestroy(HWND hwnd) - { SendMessage(hwnd, WM_CLOSE, 0, 0); } -void MCIWndSetZoom(HWND hwnd, UINT iZoom) - { SendMessage(hwnd, MCIWNDM_SETZOOM, 0, cast(LPARAM)iZoom); } -UINT MCIWndGetZoom(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETZOOM, 0, 0); } -LONG MCIWndSetVolume(HWND hwnd, UINT iVol) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, cast(LPARAM)iVol); } -LONG MCIWndGetVolume(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0); } -LONG MCIWndSetSpeed(HWND hwnd, UINT iSpeed) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETSPEED, 0, cast(LPARAM)iSpeed); } -LONG MCIWndGetSpeed(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0); } -LONG MCIWndSetTimeFormat(HWND hwnd, LPTSTR lp) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, cast(LPARAM)lp); } -LONG MCIWndUseFrames(HWND hwnd) - { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"frames").ptr); } -LONG MCIWndUseTime(HWND hwnd) - { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"ms").ptr); } -LONG MCIWndGetTimeFormat(HWND hwnd, LPTSTR lp, UINT len) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETTIMEFORMAT, cast(WPARAM)len, cast(LPARAM)lp); } -void MCIWndValidateMedia(HWND hwnd) - { SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0); } -void MCIWndSetRepeat(HWND hwnd, BOOL f) - { SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, cast(LPARAM)f); } -BOOL MCIWndGetRepeat(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0); } -void MCIWndSetActiveTimer(HWND hwnd, UINT active) - { SendMessage(hwnd, MCIWNDM_SETACTIVETIMER, cast(WPARAM)active, 0); } -void MCIWndSetInactiveTimer(HWND hwnd, UINT inactive) - { SendMessage(hwnd, MCIWNDM_SETINACTIVETIMER, cast(WPARAM)inactive, 0); } -void MCIWndSetTimers(HWND hwnd, UINT active, UINT inactive) - { SendMessage(hwnd, MCIWNDM_SETTIMERS, cast(WPARAM)active, cast(LPARAM)inactive); } -UINT MCIWndGetActiveTimer(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0); } -UINT MCIWndGetInactiveTimer(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0); } -LONG MCIWndRealize(HWND hwnd, BOOL fBkgnd) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_REALIZE, cast(WPARAM)fBkgnd, 0); } -LONG MCIWndSendString(HWND hwnd, LPTSTR sz) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, cast(LPARAM)sz); } -LONG MCIWndReturnString(HWND hwnd, LPVOID lp, UINT len) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_RETURNSTRING, cast(WPARAM)len, cast(LPARAM)lp); } -LONG MCIWndGetError(HWND hwnd, LPVOID lp, UINT len) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETERROR, cast(WPARAM)len, cast(LPARAM)lp); } -HPALETTE MCIWndGetPalette(HWND hwnd) - { return cast(HPALETTE)SendMessage(hwnd, MCIWNDM_GETPALETTE, 0, 0); } -LONG MCIWndSetPalette(HWND hwnd, HPALETTE hpal) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETPALETTE, cast(WPARAM)hpal, 0); } -LONG MCIWndGetFileName(HWND hwnd, LPVOID lp, UINT len) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETFILENAME, cast(WPARAM)len, cast(LPARAM)lp); } -LONG MCIWndGetDevice(HWND hwnd, LPVOID lp, UINT len) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETDEVICE, cast(WPARAM)len, cast(LPARAM)lp); } -UINT MCIWndGetStyles(HWND hwnd) - { return cast(UINT) SendMessage(hwnd, MCIWNDM_GETSTYLES, 0, 0); } -LONG MCIWndChangeStyles(HWND hwnd, UINT mask, LONG value) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_CHANGESTYLES, cast(WPARAM)mask, cast(LPARAM)value); } -LONG MCIWndOpenInterface(HWND hwnd, LPUNKNOWN pUnk) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_OPENINTERFACE, 0, cast(LPARAM)cast(void*)pUnk); } -LONG MCIWndSetOwner(HWND hwnd, HWND hwndP) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETOWNER, cast(WPARAM)hwndP, 0); } - -enum { - MCIWNDM_GETDEVICEID = WM_USER + 100, - MCIWNDM_SENDSTRINGA = WM_USER + 101, - MCIWNDM_GETPOSITIONA = WM_USER + 102, - MCIWNDM_GETSTART = WM_USER + 103, - MCIWNDM_GETLENGTH = WM_USER + 104, - MCIWNDM_GETEND = WM_USER + 105, - MCIWNDM_GETMODEA = WM_USER + 106, - MCIWNDM_EJECT = WM_USER + 107, - MCIWNDM_SETZOOM = WM_USER + 108, - MCIWNDM_GETZOOM = WM_USER + 109, - MCIWNDM_SETVOLUME = WM_USER + 110, - MCIWNDM_GETVOLUME = WM_USER + 111, - MCIWNDM_SETSPEED = WM_USER + 112, - MCIWNDM_GETSPEED = WM_USER + 113, - MCIWNDM_SETREPEAT = WM_USER + 114, - MCIWNDM_GETREPEAT = WM_USER + 115, - MCIWNDM_REALIZE = WM_USER + 118, - MCIWNDM_SETTIMEFORMATA = WM_USER + 119, - MCIWNDM_GETTIMEFORMATA = WM_USER + 120, - MCIWNDM_VALIDATEMEDIA = WM_USER + 121, - MCIWNDM_PLAYFROM = WM_USER + 122, - MCIWNDM_PLAYTO = WM_USER + 123, - MCIWNDM_GETFILENAMEA = WM_USER + 124, - MCIWNDM_GETDEVICEA = WM_USER + 125, - MCIWNDM_GETPALETTE = WM_USER + 126, - MCIWNDM_SETPALETTE = WM_USER + 127, - MCIWNDM_GETERRORA = WM_USER + 128, - MCIWNDM_SETTIMERS = WM_USER + 129, - MCIWNDM_SETACTIVETIMER = WM_USER + 130, - MCIWNDM_SETINACTIVETIMER = WM_USER + 131, - MCIWNDM_GETACTIVETIMER = WM_USER + 132, - MCIWNDM_GETINACTIVETIMER = WM_USER + 133, - MCIWNDM_NEWA = WM_USER + 134, - MCIWNDM_CHANGESTYLES = WM_USER + 135, - MCIWNDM_GETSTYLES = WM_USER + 136, - MCIWNDM_GETALIAS = WM_USER + 137, - MCIWNDM_RETURNSTRINGA = WM_USER + 138, - MCIWNDM_PLAYREVERSE = WM_USER + 139, - MCIWNDM_GET_SOURCE = WM_USER + 140, - MCIWNDM_PUT_SOURCE = WM_USER + 141, - MCIWNDM_GET_DEST = WM_USER + 142, - MCIWNDM_PUT_DEST = WM_USER + 143, - MCIWNDM_CAN_PLAY = WM_USER + 144, - MCIWNDM_CAN_WINDOW = WM_USER + 145, - MCIWNDM_CAN_RECORD = WM_USER + 146, - MCIWNDM_CAN_SAVE = WM_USER + 147, - MCIWNDM_CAN_EJECT = WM_USER + 148, - MCIWNDM_CAN_CONFIG = WM_USER + 149, - MCIWNDM_PALETTEKICK = WM_USER + 150, - MCIWNDM_OPENINTERFACE = WM_USER + 151, - MCIWNDM_SETOWNER = WM_USER + 152, - MCIWNDM_OPENA = WM_USER + 153, - MCIWNDM_SENDSTRINGW = WM_USER + 201, - MCIWNDM_GETPOSITIONW = WM_USER + 202, - MCIWNDM_GETMODEW = WM_USER + 206, - MCIWNDM_SETTIMEFORMATW = WM_USER + 219, - MCIWNDM_GETTIMEFORMATW = WM_USER + 220, - MCIWNDM_GETFILENAMEW = WM_USER + 224, - MCIWNDM_GETDEVICEW = WM_USER + 225, - MCIWNDM_GETERRORW = WM_USER + 228, - MCIWNDM_NEWW = WM_USER + 234, - MCIWNDM_RETURNSTRINGW = WM_USER + 238, - MCIWNDM_OPENW = WM_USER + 252, -} - -version(Unicode) { - alias MCIWNDM_SENDSTRINGW MCIWNDM_SENDSTRING; - alias MCIWNDM_GETPOSITIONW MCIWNDM_GETPOSITION; - alias MCIWNDM_GETMODEW MCIWNDM_GETMODE; - alias MCIWNDM_SETTIMEFORMATW MCIWNDM_SETTIMEFORMAT; - alias MCIWNDM_GETTIMEFORMATW MCIWNDM_GETTIMEFORMAT; - alias MCIWNDM_GETFILENAMEW MCIWNDM_GETFILENAME; - alias MCIWNDM_GETDEVICEW MCIWNDM_GETDEVICE; - alias MCIWNDM_GETERRORW MCIWNDM_GETERROR; - alias MCIWNDM_NEWW MCIWNDM_NEW; - alias MCIWNDM_RETURNSTRINGW MCIWNDM_RETURNSTRING; - alias MCIWNDM_OPENW MCIWNDM_OPEN; -} else { // Unicode - alias MCIWNDM_SENDSTRINGA MCIWNDM_SENDSTRING; - alias MCIWNDM_GETPOSITIONA MCIWNDM_GETPOSITION; - alias MCIWNDM_GETMODEA MCIWNDM_GETMODE; - alias MCIWNDM_SETTIMEFORMATA MCIWNDM_SETTIMEFORMAT; - alias MCIWNDM_GETTIMEFORMATA MCIWNDM_GETTIMEFORMAT; - alias MCIWNDM_GETFILENAMEA MCIWNDM_GETFILENAME; - alias MCIWNDM_GETDEVICEA MCIWNDM_GETDEVICE; - alias MCIWNDM_GETERRORA MCIWNDM_GETERROR; - alias MCIWNDM_NEWA MCIWNDM_NEW; - alias MCIWNDM_RETURNSTRINGA MCIWNDM_RETURNSTRING; - alias MCIWNDM_OPENA MCIWNDM_OPEN; -} - -enum { - MCIWNDM_NOTIFYMODE = WM_USER + 200, - MCIWNDM_NOTIFYPOS = WM_USER + 201, - MCIWNDM_NOTIFYSIZE = WM_USER + 202, - MCIWNDM_NOTIFYMEDIA = WM_USER + 203, - MCIWNDM_NOTIFYERROR = WM_USER + 205, -} - -const MCIWND_START = -1; -const MCIWND_END = -2; - -enum { - MCI_CLOSE = 0x0804, - MCI_PLAY = 0x0806, - MCI_SEEK = 0x0807, - MCI_STOP = 0x0808, - MCI_PAUSE = 0x0809, - MCI_STEP = 0x080E, - MCI_RECORD = 0x080F, - MCI_SAVE = 0x0813, - MCI_CUT = 0x0851, - MCI_COPY = 0x0852, - MCI_PASTE = 0x0853, - MCI_RESUME = 0x0855, - MCI_DELETE = 0x0856, -} - -enum { - MCI_MODE_NOT_READY = 524, - MCI_MODE_STOP, - MCI_MODE_PLAY, - MCI_MODE_RECORD, - MCI_MODE_SEEK, - MCI_MODE_PAUSE, - MCI_MODE_OPEN, -} - -alias TypeDef!(HANDLE) HVIDEO; -alias HVIDEO* LPHVIDEO; - -// Error Return Values - -enum { - DV_ERR_OK = 0, - DV_ERR_BASE = 1, - DV_ERR_NONSPECIFIC = DV_ERR_BASE, - DV_ERR_BADFORMAT = DV_ERR_BASE + 1, - DV_ERR_STILLPLAYING = DV_ERR_BASE + 2, - DV_ERR_UNPREPARED = DV_ERR_BASE + 3, - DV_ERR_SYNC = DV_ERR_BASE + 4, - DV_ERR_TOOMANYCHANNELS = DV_ERR_BASE + 5, - DV_ERR_NOTDETECTED = DV_ERR_BASE + 6, - DV_ERR_BADINSTALL = DV_ERR_BASE + 7, - DV_ERR_CREATEPALETTE = DV_ERR_BASE + 8, - DV_ERR_SIZEFIELD = DV_ERR_BASE + 9, - DV_ERR_PARAM1 = DV_ERR_BASE + 10, - DV_ERR_PARAM2 = DV_ERR_BASE + 11, - DV_ERR_CONFIG1 = DV_ERR_BASE + 12, - DV_ERR_CONFIG2 = DV_ERR_BASE + 13, - DV_ERR_FLAGS = DV_ERR_BASE + 14, - DV_ERR_13 = DV_ERR_BASE + 15, - DV_ERR_NOTSUPPORTED = DV_ERR_BASE + 16, - DV_ERR_NOMEM = DV_ERR_BASE + 17, - DV_ERR_ALLOCATED = DV_ERR_BASE + 18, - DV_ERR_BADDEVICEID = DV_ERR_BASE + 19, - DV_ERR_INVALHANDLE = DV_ERR_BASE + 20, - DV_ERR_BADERRNUM = DV_ERR_BASE + 21, - DV_ERR_NO_BUFFERS = DV_ERR_BASE + 22, - DV_ERR_MEM_CONFLICT = DV_ERR_BASE + 23, - DV_ERR_IO_CONFLICT = DV_ERR_BASE + 24, - DV_ERR_DMA_CONFLICT = DV_ERR_BASE + 25, - DV_ERR_INT_CONFLICT = DV_ERR_BASE + 26, - DV_ERR_PROTECT_ONLY = DV_ERR_BASE + 27, - DV_ERR_LASTERROR = DV_ERR_BASE + 27, - DV_ERR_USER_MSG = DV_ERR_BASE + 1000, -} - -// Callback Messages - -enum { - MM_DRVM_OPEN = 0x3D0, - MM_DRVM_CLOSE, - MM_DRVM_DATA, - MM_DRVM_ERROR, -} - -enum { - DV_VM_OPEN = MM_DRVM_OPEN, - DV_VM_CLOSE = MM_DRVM_CLOSE, - DV_VM_DATA = MM_DRVM_DATA, - DV_VM_ERROR = MM_DRVM_ERROR, -} - -/** - * Structures - */ - -struct VIDEOHDR { - LPBYTE lpData; - DWORD dwBufferLength; - DWORD dwBytesUsed; - DWORD dwTimeCaptured; - DWORD_PTR dwUser; - DWORD dwFlags; - DWORD_PTR[4]dwReserved; -} -alias VIDEOHDR* PVIDEOHDR, LPVIDEOHDR; - -enum { - VHDR_DONE = 0x00000001, - VHDR_PREPARED = 0x00000002, - VHDR_INQUEUE = 0x00000004, - VHDR_KEYFRAME = 0x00000008, - VHDR_VALID = 0x0000000F, -} - -struct CHANNEL_CAPS { - DWORD dwFlags; - DWORD dwSrcRectXMod; - DWORD dwSrcRectYMod; - DWORD dwSrcRectWidthMod; - DWORD dwSrcRectHeightMod; - DWORD dwDstRectXMod; - DWORD dwDstRectYMod; - DWORD dwDstRectWidthMod; - DWORD dwDstRectHeightMod; -} -alias CHANNEL_CAPS* PCHANNEL_CAPS, LPCHANNEL_CAPS; - -enum { - VCAPS_OVERLAY = 0x00000001, - VCAPS_SRC_CAN_CLIP = 0x00000002, - VCAPS_DST_CAN_CLIP = 0x00000004, - VCAPS_CAN_SCALE = 0x00000008, -} - -/** - * API Flags - */ - -enum { - VIDEO_EXTERNALIN = 0x0001, - VIDEO_EXTERNALOUT = 0x0002, - VIDEO_IN = 0x0004, - VIDEO_OUT = 0x0008, - VIDEO_DLG_QUERY = 0x0010, -} - -enum { - VIDEO_CONFIGURE_QUERYSIZE = 0x0001, - VIDEO_CONFIGURE_CURRENT = 0x0010, - VIDEO_CONFIGURE_NOMINAL = 0x0020, - VIDEO_CONFIGURE_MIN = 0x0040, - VIDEO_CONFIGURE_MAX = 0x0080, - VIDEO_CONFIGURE_SET = 0x1000, - VIDEO_CONFIGURE_GET = 0x2000, - VIDEO_CONFIGURE_QUERY = 0x8000, -} - -/** - * CONFIGURE MESSAGES - */ - -enum { - DVM_USER = 0x4000, - DVM_CONFIGURE_START = 0x1000, - DVM_CONFIGURE_END = 0x1FFF, - DVM_PALETTE = DVM_CONFIGURE_START + 1, - DVM_FORMAT = DVM_CONFIGURE_START + 2, - DVM_PALETTERGB555 = DVM_CONFIGURE_START + 3, - DVM_SRC_RECT = DVM_CONFIGURE_START + 4, - DVM_DST_RECT = DVM_CONFIGURE_START + 5, -} - -/** - * AVICap window class - */ - -LRESULT AVICapSM(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { - if (IsWindow(hWnd)) { - return SendMessage(hWnd, msg, wParam, lParam); - } - return 0; -} - -enum { - WM_CAP_START = WM_USER, - WM_CAP_UNICODE_START = WM_USER + 100, - - WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1, - WM_CAP_SET_CALLBACK_ERRORA = WM_CAP_START + 2, - WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3, - - WM_CAP_SET_CALLBACK_ERRORW = WM_CAP_UNICODE_START + 2, - WM_CAP_SET_CALLBACK_STATUSW = WM_CAP_UNICODE_START + 3, -} - -version(Unicode) { - alias WM_CAP_SET_CALLBACK_ERRORW WM_CAP_SET_CALLBACK_ERROR; - alias WM_CAP_SET_CALLBACK_STATUSW WM_CAP_SET_CALLBACK_STATUS; -} else { // Unicode - alias WM_CAP_SET_CALLBACK_ERRORA WM_CAP_SET_CALLBACK_ERROR; - alias WM_CAP_SET_CALLBACK_STATUSA WM_CAP_SET_CALLBACK_STATUS; -} - -enum { - WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4, - WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5, - WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6, - WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7, - WM_CAP_GET_USER_DATA = WM_CAP_START + 8, - WM_CAP_SET_USER_DATA = WM_CAP_START + 9, - WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10, - WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11, - WM_CAP_DRIVER_GET_NAMEA = WM_CAP_START + 12, - WM_CAP_DRIVER_GET_VERSIONA = WM_CAP_START + 13, - - WM_CAP_DRIVER_GET_NAMEW = WM_CAP_UNICODE_START + 12, - WM_CAP_DRIVER_GET_VERSIONW = WM_CAP_UNICODE_START + 13, -} - -version(Unicode) { - alias WM_CAP_DRIVER_GET_NAMEW WM_CAP_DRIVER_GET_NAME; - alias WM_CAP_DRIVER_GET_VERSIONW WM_CAP_DRIVER_GET_VERSION; -} else { // Unicode - alias WM_CAP_DRIVER_GET_NAMEA WM_CAP_DRIVER_GET_NAME; - alias WM_CAP_DRIVER_GET_VERSIONA WM_CAP_DRIVER_GET_VERSION; -} - -enum { - WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14, - WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20, - WM_CAP_FILE_GET_CAPTURE_FILEA = WM_CAP_START + 21, - WM_CAP_FILE_SAVEASA = WM_CAP_START + 23, - WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25, - - WM_CAP_FILE_SET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 20, - WM_CAP_FILE_GET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 21, - WM_CAP_FILE_SAVEASW = WM_CAP_UNICODE_START + 23, - WM_CAP_FILE_SAVEDIBW = WM_CAP_UNICODE_START + 25, -} - -version(Unicode) { - alias WM_CAP_FILE_SET_CAPTURE_FILEW WM_CAP_FILE_SET_CAPTURE_FILE; - alias WM_CAP_FILE_GET_CAPTURE_FILEW WM_CAP_FILE_GET_CAPTURE_FILE; - alias WM_CAP_FILE_SAVEASW WM_CAP_FILE_SAVEAS; - alias WM_CAP_FILE_SAVEDIBW WM_CAP_FILE_SAVEDIB; -} else { // Unicode - alias WM_CAP_FILE_SET_CAPTURE_FILEA WM_CAP_FILE_SET_CAPTURE_FILE; - alias WM_CAP_FILE_GET_CAPTURE_FILEA WM_CAP_FILE_GET_CAPTURE_FILE; - alias WM_CAP_FILE_SAVEASA WM_CAP_FILE_SAVEAS; - alias WM_CAP_FILE_SAVEDIBA WM_CAP_FILE_SAVEDIB; -} - -enum { - WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22, - WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24, - WM_CAP_EDIT_COPY = WM_CAP_START + 30, - WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35, - WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36, - WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41, - WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42, - WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43, - WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44, - WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45, - WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46, - WM_CAP_SET_PREVIEW = WM_CAP_START + 50, - WM_CAP_SET_OVERLAY = WM_CAP_START + 51, - WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52, - WM_CAP_SET_SCALE = WM_CAP_START + 53, - WM_CAP_GET_STATUS = WM_CAP_START + 54, - WM_CAP_SET_SCROLL = WM_CAP_START + 55, - WM_CAP_GRAB_FRAME = WM_CAP_START + 60, - WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61, - WM_CAP_SEQUENCE = WM_CAP_START + 62, - WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63, - WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64, - WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65, - WM_CAP_SET_MCI_DEVICEA = WM_CAP_START + 66, - WM_CAP_GET_MCI_DEVICEA = WM_CAP_START + 67, - - WM_CAP_SET_MCI_DEVICEW = WM_CAP_UNICODE_START + 66, - WM_CAP_GET_MCI_DEVICEW = WM_CAP_UNICODE_START + 67, -} - -version(Unicode) { - alias WM_CAP_SET_MCI_DEVICEW WM_CAP_SET_MCI_DEVICE; - alias WM_CAP_GET_MCI_DEVICEW WM_CAP_GET_MCI_DEVICE; -} else { // Unicode - alias WM_CAP_SET_MCI_DEVICEA WM_CAP_SET_MCI_DEVICE; - alias WM_CAP_GET_MCI_DEVICEA WM_CAP_GET_MCI_DEVICE; -} - -enum { - WM_CAP_STOP = WM_CAP_START + 68, - WM_CAP_ABORT = WM_CAP_START + 69, - WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70, - WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71, - WM_CAP_SINGLE_FRAME = WM_CAP_START + 72, - WM_CAP_PAL_OPENA = WM_CAP_START + 80, - WM_CAP_PAL_SAVEA = WM_CAP_START + 81, - - WM_CAP_PAL_OPENW = WM_CAP_UNICODE_START + 80, - WM_CAP_PAL_SAVEW = WM_CAP_UNICODE_START + 81, -} - -version(Unicode) { - alias WM_CAP_PAL_OPENW WM_CAP_PAL_OPEN; - alias WM_CAP_PAL_SAVEW WM_CAP_PAL_SAVE; -} else { // Unicode - alias WM_CAP_PAL_OPENA WM_CAP_PAL_OPEN; - alias WM_CAP_PAL_SAVEA WM_CAP_PAL_SAVE; -} - -enum { - WM_CAP_PAL_PASTE = WM_CAP_START + 82, - WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83, - WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84, - WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85, - WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW, - WM_CAP_END = WM_CAP_UNICODE_END, -} - -/** - * message wrapper - */ - -BOOL capSetCallbackOnError(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_ERROR, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnStatus(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_STATUS, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnYield(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_YIELD, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnFrame(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_FRAME, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnVideoStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnWaveStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnCapControl(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, cast(LPARAM)fpProc); } - -BOOL capSetUserData(HWND hWnd, LPARAM lUser) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_USER_DATA, 0, lUser); } -BOOL capGetUserData(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_USER_DATA, 0, 0); } - -BOOL capDriverConnect(HWND hWnd, WPARAM i) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_CONNECT, i, 0); } -BOOL capDriverDisconnect(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_DISCONNECT, 0, 0); } -BOOL capDriverGetName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_NAME, wSize, cast(LPARAM)szName); } -BOOL capDriverGetVersion(HWND hWnd, LPTSTR szVer, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_VERSION, wSize, cast(LPARAM)szVer); } -BOOL capDriverGetCaps(HWND hWnd, LPCAPDRIVERCAPS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_CAPS, wSize, cast(LPARAM)s); } - -BOOL capFileSetCaptureFile(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, cast(LPARAM)szName); } -BOOL capFileGetCaptureFile(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_GET_CAPTURE_FILE, wSize, cast(LPARAM)szName); } -BOOL capFileAlloc(HWND hWnd, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_ALLOCATE, wSize, 0); } -BOOL capFileSaveAs(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEAS, 0, cast(LPARAM)szName); } -BOOL capFileSetInfoChunk(HWND hWnd, LPCAPINFOCHUNK lpInfoChunk) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_INFOCHUNK, 0, cast(LPARAM)lpInfoChunk); } -BOOL capFileSaveDIB(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEDIB, 0, cast(LPARAM)szName); } - -BOOL capEditCopy(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_EDIT_COPY, 0, 0); } - -BOOL capSetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_AUDIOFORMAT, wSize, cast(LPARAM)s); } -DWORD capGetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, wSize, cast(LPARAM)s); } -DWORD capGetAudioFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, 0, 0); } - -BOOL capDlgVideoFormat(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0); } -BOOL capDlgVideoSource(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0); } -BOOL capDlgVideoDisplay(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0); } -BOOL capDlgVideoCompression(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0); } - -DWORD capGetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, wSize, cast(LPARAM)s); } -DWORD capGetVideoFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, 0, 0); } -BOOL capSetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_VIDEOFORMAT, wSize, cast(LPARAM)s); } - -BOOL capPreview(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEW, cast(WPARAM)f, 0); } -BOOL capPreviewRate(HWND hWnd, WPARAM wMS) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEWRATE, wMS, 0); } -BOOL capOverlay(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_OVERLAY, cast(WPARAM)f, 0); } -BOOL capPreviewScale(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCALE, cast(WPARAM)f, 0); } -BOOL capGetStatus(HWND hWnd, LPCAPSTATUS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_STATUS, wSize, cast(LPARAM)s); } -BOOL capSetScrollPos(HWND hWnd, LPPOINT lpP) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCROLL, 0, cast(LPARAM)lpP); } - -BOOL capGrabFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME, 0, 0); } -BOOL capGrabFrameNoStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0); } - -BOOL capCaptureSequence(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE, 0, 0); } -BOOL capCaptureSequenceNoFile(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE_NOFILE, 0, 0); } -BOOL capCaptureStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_STOP, 0, 0); } -BOOL capCaptureAbort(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_ABORT, 0, 0); } - -BOOL capCaptureSingleFrameOpen(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0); } -BOOL capCaptureSingleFrameClose(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0); } -BOOL capCaptureSingleFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME, 0, 0); } - -BOOL capCaptureGetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } -BOOL capCaptureSetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } - -BOOL capSetMCIDeviceName(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_MCI_DEVICE, 0, cast(LPARAM)szName); } -BOOL capGetMCIDeviceName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_MCI_DEVICE, wSize, cast(LPARAM)szName); } - -BOOL capPaletteOpen(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_OPEN, 0, cast(LPARAM)szName); } -BOOL capPaletteSave(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_SAVE, 0, cast(LPARAM)szName); } -BOOL capPalettePaste(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_PASTE, 0, 0); } -BOOL capPaletteAuto(HWND hWnd, WPARAM iFrames, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors); } -BOOL capPaletteManual(HWND hWnd, WPARAM fGrab, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors); } - -/** - * structs - */ - -struct CAPDRIVERCAPS { - UINT wDeviceIndex; - BOOL fHasOverlay; - BOOL fHasDlgVideoSource; - BOOL fHasDlgVideoFormat; - BOOL fHasDlgVideoDisplay; - BOOL fCaptureInitialized; - BOOL fDriverSuppliesPalettes; - HANDLE hVideoIn; - HANDLE hVideoOut; - HANDLE hVideoExtIn; - HANDLE hVideoExtOut; -} -alias CAPDRIVERCAPS* PCAPDRIVERCAPS, LPCAPDRIVERCAPS; - -struct CAPSTATUS { - UINT uiImageWidth; - UINT uiImageHeight; - BOOL fLiveWindow; - BOOL fOverlayWindow; - BOOL fScale; - POINT ptScroll; - BOOL fUsingDefaultPalette; - BOOL fAudioHardware; - BOOL fCapFileExists; - DWORD dwCurrentVideoFrame; - DWORD dwCurrentVideoFramesDropped; - DWORD dwCurrentWaveSamples; - DWORD dwCurrentTimeElapsedMS; - HPALETTE hPalCurrent; - BOOL fCapturingNow; - DWORD dwReturn; - UINT wNumVideoAllocated; - UINT wNumAudioAllocated; -} -alias CAPSTATUS* PCAPSTATUS, LPCAPSTATUS; - -struct CAPTUREPARMS { - DWORD dwRequestMicroSecPerFrame; - BOOL fMakeUserHitOKToCapture; - UINT wPercentDropForError; - BOOL fYield; - DWORD dwIndexSize; - UINT wChunkGranularity; - BOOL fUsingDOSMemory; - UINT wNumVideoRequested; - BOOL fCaptureAudio; - UINT wNumAudioRequested; - UINT vKeyAbort; - BOOL fAbortLeftMouse; - BOOL fAbortRightMouse; - BOOL fLimitEnabled; - UINT wTimeLimit; - BOOL fMCIControl; - BOOL fStepMCIDevice; - DWORD dwMCIStartTime; - DWORD dwMCIStopTime; - BOOL fStepCaptureAt2x; - UINT wStepCaptureAverageFrames; - DWORD dwAudioBufferSize; - BOOL fDisableWriteCache; - UINT AVStreamMaster; -} -alias CAPTUREPARMS* PCAPTUREPARMS, LPCAPTUREPARMS; - -const AVSTREAMMASTER_AUDIO = 0; -const AVSTREAMMASTER_NONE = 1; - -struct CAPINFOCHUNK { - FOURCC fccInfoID; - LPVOID lpData; - LONG cbData; -} -alias CAPINFOCHUNK* PCAPINFOCHUNK, LPCAPINFOCHUNK; - -// Callback Definitions - -extern (Windows) { - alias LRESULT function(HWND hWnd) CAPYIELDCALLBACK; - alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPSTATUSCALLBACKW; - alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPERRORCALLBACKW; - alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPSTATUSCALLBACKA; - alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPERRORCALLBACKA; -} - -version(Unicode) { - alias CAPSTATUSCALLBACKW CAPSTATUSCALLBACK; - alias CAPERRORCALLBACKW CAPERRORCALLBACK; -} else { // Unicode - alias CAPSTATUSCALLBACKA CAPSTATUSCALLBACK; - alias CAPERRORCALLBACKA CAPERRORCALLBACK; -} - -extern (Windows) { - alias LRESULT function(HWND hWnd, LPVIDEOHDR lpVHdr) CAPVIDEOCALLBACK; - alias LRESULT function(HWND hWnd, LPWAVEHDR lpWHdr) CAPWAVECALLBACK; - alias LRESULT function(HWND hWnd, int nState) CAPCONTROLCALLBACK; -} - -// CapControlCallback states -const CONTROLCALLBACK_PREROLL = 1; -const CONTROLCALLBACK_CAPTURING = 2; - -extern (Windows) { - HWND capCreateCaptureWindowA(LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); - BOOL capGetDriverDescriptionA(UINT wDriverIndex, LPSTR lpszName, int cbName, LPSTR lpszVer, int cbVer); - HWND capCreateCaptureWindowW(LPCWSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); - BOOL capGetDriverDescriptionW(UINT wDriverIndex, LPWSTR lpszName, int cbName, LPWSTR lpszVer, int cbVer); -} - -version(Unicode) { - alias capCreateCaptureWindowW capCreateCaptureWindow; - alias capGetDriverDescriptionW capGetDriverDescription; -} else { // Unicode - alias capCreateCaptureWindowA capCreateCaptureWindow; - alias capGetDriverDescriptionA capGetDriverDescription; -} - -// New Information chunk IDs -const infotypeDIGITIZATION_TIME = mmioFOURCC!('I', 'D', 'I', 'T'); -const infotypeSMPTE_TIME = mmioFOURCC!('I', 'S', 'M', 'P'); - -// status and error callbacks -enum { - IDS_CAP_BEGIN = 300, - IDS_CAP_END = 301, - - IDS_CAP_INFO = 401, - IDS_CAP_OUTOFMEM = 402, - IDS_CAP_FILEEXISTS = 403, - IDS_CAP_ERRORPALOPEN = 404, - IDS_CAP_ERRORPALSAVE = 405, - IDS_CAP_ERRORDIBSAVE = 406, - IDS_CAP_DEFAVIEXT = 407, - IDS_CAP_DEFPALEXT = 408, - IDS_CAP_CANTOPEN = 409, - IDS_CAP_SEQ_MSGSTART = 410, - IDS_CAP_SEQ_MSGSTOP = 411, - - IDS_CAP_VIDEDITERR = 412, - IDS_CAP_READONLYFILE = 413, - IDS_CAP_WRITEERROR = 414, - IDS_CAP_NODISKSPACE = 415, - IDS_CAP_SETFILESIZE = 416, - IDS_CAP_SAVEASPERCENT = 417, - - IDS_CAP_DRIVER_ERROR = 418, - - IDS_CAP_WAVE_OPEN_ERROR = 419, - IDS_CAP_WAVE_ALLOC_ERROR = 420, - IDS_CAP_WAVE_PREPARE_ERROR = 421, - IDS_CAP_WAVE_ADD_ERROR = 422, - IDS_CAP_WAVE_SIZE_ERROR = 423, - - IDS_CAP_VIDEO_OPEN_ERROR = 424, - IDS_CAP_VIDEO_ALLOC_ERROR = 425, - IDS_CAP_VIDEO_PREPARE_ERROR = 426, - IDS_CAP_VIDEO_ADD_ERROR = 427, - IDS_CAP_VIDEO_SIZE_ERROR = 428, - - IDS_CAP_FILE_OPEN_ERROR = 429, - IDS_CAP_FILE_WRITE_ERROR = 430, - IDS_CAP_RECORDING_ERROR = 431, - IDS_CAP_RECORDING_ERROR2 = 432, - IDS_CAP_AVI_INIT_ERROR = 433, - IDS_CAP_NO_FRAME_CAP_ERROR = 434, - IDS_CAP_NO_PALETTE_WARN = 435, - IDS_CAP_MCI_CONTROL_ERROR = 436, - IDS_CAP_MCI_CANT_STEP_ERROR = 437, - IDS_CAP_NO_AUDIO_CAP_ERROR = 438, - IDS_CAP_AVI_DRAWDIB_ERROR = 439, - IDS_CAP_COMPRESSOR_ERROR = 440, - IDS_CAP_AUDIO_DROP_ERROR = 441, - IDS_CAP_AUDIO_DROP_COMPERROR = 442, - - IDS_CAP_STAT_LIVE_MODE = 500, - IDS_CAP_STAT_OVERLAY_MODE = 501, - IDS_CAP_STAT_CAP_INIT = 502, - IDS_CAP_STAT_CAP_FINI = 503, - IDS_CAP_STAT_PALETTE_BUILD = 504, - IDS_CAP_STAT_OPTPAL_BUILD = 505, - IDS_CAP_STAT_I_FRAMES = 506, - IDS_CAP_STAT_L_FRAMES = 507, - IDS_CAP_STAT_CAP_L_FRAMES = 508, - IDS_CAP_STAT_CAP_AUDIO = 509, - IDS_CAP_STAT_VIDEOCURRENT = 510, - IDS_CAP_STAT_VIDEOAUDIO = 511, - IDS_CAP_STAT_VIDEOONLY = 512, - IDS_CAP_STAT_FRAMESDROPPED = 513, -} - -/** - * FilePreview dialog. - */ - -extern (Windows) { - BOOL GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn); - BOOL GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn); - BOOL GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn); - BOOL GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn); -} - -version(Unicode) { - alias GetOpenFileNamePreviewW GetOpenFileNamePreview; - alias GetSaveFileNamePreviewW GetSaveFileNamePreview; -} else { // Unicode - alias GetOpenFileNamePreviewA GetOpenFileNamePreview; - alias GetSaveFileNamePreviewA GetSaveFileNamePreview; -} +/** + * Windows API header module + * + * written in the D programming language + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_vfw.d) + */ + +module core.sys.windows.vfw; +pragma(lib, "vfw32"); + +private import + core.sys.windows.commdlg, + core.sys.windows.wingdi, + core.sys.windows.mmsystem, + core.sys.windows.unknwn, + core.sys.windows.w32api, + core.sys.windows.windef, + core.sys.windows.winuser; + +extern(Windows) { + DWORD VideoForWindowsVersion(); + LONG InitVFW(); + LONG TermVFW(); +} + +DWORD MKFOURCC(char ch0, char ch1, char ch2, char ch3) { + return (cast(DWORD)ch0) | ((cast(DWORD)ch1) << 8) | ((cast(DWORD)ch2) << 16) | ((cast(DWORD)ch3) << 24); +} + +/** + * COMPMAN - Installable Compression Manager. + */ + +const ICVERSION = 0x0104; + +alias TypeDef!(HANDLE) HIC; + +const BI_1632 = 0x32333631; + +template aviTWOCC(char c0, char c1) { + const WORD aviTWOCC = c0 | (c1 << 8); +} + +const ICTYPE_VIDEO = mmioFOURCC!('v', 'i', 'd', 'c'); +const ICTYPE_AUDIO = mmioFOURCC!('a', 'u', 'd', 'c'); + +enum { + ICERR_OK = 0, + ICERR_DONTDRAW = 1, + ICERR_NEWPALETTE = 2, + ICERR_GOTOKEYFRAME = 3, + ICERR_STOPDRAWING = 4, +} + +const ICERR_UNSUPPORTED = -1; +const ICERR_BADFORMAT = -2; +const ICERR_MEMORY = -3; +const ICERR_INTERNAL = -4; +const ICERR_BADFLAGS = -5; +const ICERR_BADPARAM = -6; +const ICERR_BADSIZE = -7; +const ICERR_BADHANDLE = -8; +const ICERR_CANTUPDATE = -9; +const ICERR_ABORT = -10; +const ICERR_ERROR = -100; +const ICERR_BADBITDEPTH = -200; +const ICERR_BADIMAGESIZE = -201; + +const ICERR_CUSTOM = -400; + +enum { + ICMODE_COMPRESS = 1, + ICMODE_DECOMPRESS, + ICMODE_FASTDECOMPRESS, + ICMODE_QUERY, + ICMODE_FASTCOMPRESS, + ICMODE_DRAW = 8, +} + +const ICMODE_INTERNALF_FUNCTION32 = 0x8000; +const ICMODE_INTERNALF_MASK = 0x8000; + +enum { + AVIIF_LIST = 0x00000001, + AVIIF_TWOCC = 0x00000002, + AVIIF_KEYFRAME = 0x00000010, +} + +const ICQUALITY_LOW = 0; +const ICQUALITY_HIGH = 10000; +const ICQUALITY_DEFAULT = -1; + +enum { + ICM_USER = DRV_USER + 0x0000, + ICM_RESERVED_LOW = DRV_USER + 0x1000, + ICM_RESERVED_HIGH = DRV_USER + 0x2000, + ICM_RESERVED = ICM_RESERVED_LOW, +} + +// messages + +enum { + ICM_GETSTATE = ICM_RESERVED + 0, + ICM_SETSTATE = ICM_RESERVED + 1, + ICM_GETINFO = ICM_RESERVED + 2, + ICM_CONFIGURE = ICM_RESERVED + 10, + ICM_ABOUT = ICM_RESERVED + 11, + ICM_GETERRORTEXT = ICM_RESERVED + 12, + ICM_GETFORMATNAME = ICM_RESERVED + 20, + ICM_ENUMFORMATS = ICM_RESERVED + 21, + ICM_GETDEFAULTQUALITY = ICM_RESERVED + 30, + ICM_GETQUALITY = ICM_RESERVED + 31, + ICM_SETQUALITY = ICM_RESERVED + 32, + ICM_SET = ICM_RESERVED + 40, + ICM_GET = ICM_RESERVED + 41, +} + +const ICM_FRAMERATE = mmioFOURCC!('F','r','m','R'); +const ICM_KEYFRAMERATE = mmioFOURCC!('K','e','y','R'); + +// ICM specific messages. + +enum { + ICM_COMPRESS_GET_FORMAT = ICM_USER + 4, + ICM_COMPRESS_GET_SIZE = ICM_USER + 5, + ICM_COMPRESS_QUERY = ICM_USER + 6, + ICM_COMPRESS_BEGIN = ICM_USER + 7, + ICM_COMPRESS = ICM_USER + 8, + ICM_COMPRESS_END = ICM_USER + 9, + ICM_DECOMPRESS_GET_FORMAT = ICM_USER + 10, + ICM_DECOMPRESS_QUERY = ICM_USER + 11, + ICM_DECOMPRESS_BEGIN = ICM_USER + 12, + ICM_DECOMPRESS = ICM_USER + 13, + ICM_DECOMPRESS_END = ICM_USER + 14, + ICM_DECOMPRESS_SET_PALETTE = ICM_USER + 29, + ICM_DECOMPRESS_GET_PALETTE = ICM_USER + 30, + ICM_DRAW_QUERY = ICM_USER + 31, + ICM_DRAW_BEGIN = ICM_USER + 15, + ICM_DRAW_GET_PALETTE = ICM_USER + 16, + ICM_DRAW_UPDATE = ICM_USER + 17, + ICM_DRAW_START = ICM_USER + 18, + ICM_DRAW_STOP = ICM_USER + 19, + ICM_DRAW_BITS = ICM_USER + 20, + ICM_DRAW_END = ICM_USER + 21, + ICM_DRAW_GETTIME = ICM_USER + 32, + ICM_DRAW = ICM_USER + 33, + ICM_DRAW_WINDOW = ICM_USER + 34, + ICM_DRAW_SETTIME = ICM_USER + 35, + ICM_DRAW_REALIZE = ICM_USER + 36, + ICM_DRAW_FLUSH = ICM_USER + 37, + ICM_DRAW_RENDERBUFFER = ICM_USER + 38, + ICM_DRAW_START_PLAY = ICM_USER + 39, + ICM_DRAW_STOP_PLAY = ICM_USER + 40, + ICM_DRAW_SUGGESTFORMAT = ICM_USER + 50, + ICM_DRAW_CHANGEPALETTE = ICM_USER + 51, + ICM_DRAW_IDLE = ICM_USER + 52, + ICM_GETBUFFERSWANTED = ICM_USER + 41, + ICM_GETDEFAULTKEYFRAMERATE = ICM_USER + 42, + ICM_DECOMPRESSEX_BEGIN = ICM_USER + 60, + ICM_DECOMPRESSEX_QUERY = ICM_USER + 61, + ICM_DECOMPRESSEX = ICM_USER + 62, + ICM_DECOMPRESSEX_END = ICM_USER + 63, + ICM_COMPRESS_FRAMES_INFO = ICM_USER + 70, + ICM_COMPRESS_FRAMES = ICM_USER + 71, + ICM_SET_STATUS_PROC = ICM_USER + 72, +} + +struct ICOPEN { + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwVersion; + DWORD dwFlags; + LRESULT dwError; + LPVOID pV1Reserved; + LPVOID pV2Reserved; + DWORD dnDevNode; +} + +struct ICINFO { + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwVersion; + DWORD dwVersionICM; + WCHAR[16] szName; + WCHAR[128] szDescription; + WCHAR[128] szDriver; +} + +enum { + VIDCF_QUALITY = 0x0001, + VIDCF_CRUNCH = 0x0002, + VIDCF_TEMPORAL = 0x0004, + VIDCF_COMPRESSFRAMES = 0x0008, + VIDCF_DRAW = 0x0010, + VIDCF_FASTTEMPORALC = 0x0020, + VIDCF_FASTTEMPORALD = 0x0080, +} + +const ICCOMPRESS_KEYFRAME = 0x00000001L; + +struct ICCOMPRESS { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPDWORD lpckid; + LPDWORD lpdwFlags; + LONG lFrameNum; + DWORD dwFrameSize; + DWORD dwQuality; + LPBITMAPINFOHEADER lpbiPrev; + LPVOID lpPrev; +} + +const ICCOMPRESSFRAMES_PADDING = 0x00000001; + +struct ICCOMPRESSFRAMES { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPARAM lOutput; + LPBITMAPINFOHEADER lpbiInput; + LPARAM lInput; + LONG lStartFrame; + LONG lFrameCount; + LONG lQuality; + LONG lDataRate; + LONG lKeyRate; + DWORD dwRate; + DWORD dwScale; DWORD dwOverheadPerFrame; + DWORD dwReserved2; + + LONG function(LPARAM lInput, LONG lFrame, LPVOID lpBits, LONG len) GetData; + LONG function(LPARAM lOutput, LONG lFrame, LPVOID lpBits, LONG len) PutData; +} + +enum { + ICSTATUS_START = 0, + ICSTATUS_STATUS = 1, + ICSTATUS_END = 2, + ICSTATUS_ERROR = 3, + ICSTATUS_YIELD = 4, +} + +struct ICSETSTATUSPROC { + DWORD dwFlags; + LPARAM lParam; + LONG function(LPARAM lParam, UINT message, LONG l) Status; +} + +enum { + ICDECOMPRESS_NOTKEYFRAME = 0x08000000, + ICDECOMPRESS_NULLFRAME = 0x10000000, + ICDECOMPRESS_PREROLL = 0x20000000, + ICDECOMPRESS_UPDATE = 0x40000000, + ICDECOMPRESS_HURRYUP = 0x80000000, +} + +struct ICDECOMPRESS { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + DWORD ckid; +} + +struct ICDECOMPRESSEX { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiSrc; + LPVOID lpSrc; + LPBITMAPINFOHEADER lpbiDst; + LPVOID lpDst; + int xDst; + int yDst; + int dxDst; + int dyDst; + int xSrc; + int ySrc; + int dxSrc; + int dySrc; +} + +enum { + ICDRAW_QUERY = 0x00000001, + ICDRAW_FULLSCREEN = 0x00000002, + ICDRAW_HDC = 0x00000004, + ICDRAW_ANIMATE = 0x00000008, + ICDRAW_CONTINUE = 0x00000010, + ICDRAW_MEMORYDC = 0x00000020, + ICDRAW_UPDATING = 0x00000040, + ICDRAW_RENDER = 0x00000080, + ICDRAW_BUFFER = 0x00000100, +} + +struct ICDRAWBEGIN { + DWORD dwFlags; + HPALETTE hpal; + HWND hwnd; + HDC hdc; + int xDst; + int yDst; + int dxDst; + int dyDst; + LPBITMAPINFOHEADER lpbi; + int xSrc; + int ySrc; + int dxSrc; + int dySrc; + DWORD dwRate; + DWORD dwScale; +} + +enum { + ICDRAW_NOTKEYFRAME = 0x08000000, + ICDRAW_NULLFRAME = 0x10000000, + ICDRAW_PREROLL = 0x20000000, + ICDRAW_UPDATE = 0x40000000, + ICDRAW_HURRYUP = 0x80000000, +} + +struct ICDRAW { + DWORD dwFlags; + LPVOID lpFormat; + LPVOID lpData; + DWORD cbData; + LONG lTime; +} + +struct ICDRAWSUGGEST { + LPBITMAPINFOHEADER lpbiIn; + LPBITMAPINFOHEADER lpbiSuggest; + int dxSrc; + int dySrc; + int dxDst; + int dyDst; + HIC hicDecompressor; +} + +struct ICPALETTE { + DWORD dwFlags; + int iStart; + int iLen; + LPPALETTEENTRY lppe; +} + + +/** + * ICM function declarations + */ + +extern (Windows) { + BOOL ICInfo(DWORD fccType, DWORD fccHandler, ICINFO *lpicinfo); + BOOL ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags); + BOOL ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags); + LRESULT ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb); + HIC ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode); + HIC ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler); + LRESULT ICClose(HIC hic); + LRESULT ICSendMessage(HIC hic, UINT msg, DWORD_PTR dw1, DWORD_PTR dw2); +} + +enum { + ICINSTALL_FUNCTION = 0x0001, + ICINSTALL_DRIVER = 0x0002, + ICINSTALL_HDRV = 0x0004, + ICINSTALL_UNICODE = 0x8000, + ICINSTALL_DRIVERW = 0x8002, +} + +// query macros + +const ICMF_CONFIGURE_QUERY = 0x00000001; +const ICMF_ABOUT_QUERY = 0x00000001; + +DWORD ICQueryAbout(HIC hic) { + return ICSendMessage(hic, ICM_ABOUT, -1, ICMF_ABOUT_QUERY) == ICERR_OK; +} + +DWORD ICAbout(HIC hic, HWND hwnd) { + return cast(DWORD) ICSendMessage(hic, ICM_ABOUT, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); +} + +DWORD ICQueryConfigure(HIC hic) { + return (ICSendMessage(hic, ICM_CONFIGURE, -1, ICMF_CONFIGURE_QUERY) == ICERR_OK); +} + +DWORD ICConfigure(HIC hic, HWND hwnd) { + return cast(DWORD) ICSendMessage(hic, ICM_CONFIGURE, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); +} + +DWORD ICGetState(HIC hic, LPVOID pv, DWORD_PTR cb) { + return cast(DWORD) ICSendMessage(hic, ICM_GETSTATE, cast(DWORD_PTR) pv, cb); +} + +DWORD ICSetState(HIC hic, LPVOID pv, DWORD_PTR cb) { + return cast(DWORD) ICSendMessage(hic, ICM_SETSTATE, cast(DWORD_PTR) pv, cb); +} + +DWORD ICGetStateSize(HIC hic) { + return ICGetState(hic, null, 0); +} + +DWORD dwICValue; + +DWORD ICGetDefaultQuality(HIC hic) { + ICSendMessage(hic, ICM_GETDEFAULTQUALITY, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); + return dwICValue; +} + +DWORD ICGetDefaultKeyFrameRate(HIC hic) { + ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); + return dwICValue; +} + +DWORD ICDrawWindow(HIC hic, LPVOID prc) { + return cast(DWORD) ICSendMessage(hic, ICM_DRAW_WINDOW, cast(DWORD_PTR) prc, RECT.sizeof); +} + +extern (Windows) { + DWORD ICCompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiOutput, LPVOID lpData, + LPBITMAPINFOHEADER lpbiInput, LPVOID lpBits, LPDWORD lpckid, LPDWORD lpdwFlags, + LONG lFrameNum, DWORD dwFrameSize, DWORD dwQuality, LPBITMAPINFOHEADER lpbiPrev, LPVOID lpPrev); +} + +LRESULT ICCompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_COMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICCompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_COMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICCompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +DWORD ICCompressGetFormatSize(HIC hic, LPVOID lpbi) { + return cast(DWORD)ICCompressGetFormat(hic, lpbi, null); +} +DWORD ICCompressGetSize(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return cast(DWORD)ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICCompressEnd(HIC hic) { + return ICSendMessage(hic, ICM_COMPRESS_END, 0, 0); +} + +extern (Windows) { + DWORD ICDecompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiFormat, LPVOID lpData, LPBITMAPINFOHEADER lpbi, LPVOID lpBits); +} + +LRESULT ICDecompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICDecompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_DECOMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LONG ICDecompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return cast(LONG)ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LONG ICDecompressGetFormatSize(HIC hic, LPVOID lpbi) { + return ICDecompressGetFormat(hic, lpbi, null); +} +LRESULT ICDecompressGetPalette(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICDecompressSetPalette(HIC hic, LPVOID lpbiPalette) { + return ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, cast(DWORD_PTR)lpbiPalette, 0); +} +LRESULT ICDecompressEnd(HIC hic) { + return ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0); +} + +LRESULT ICDecompressEx(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDecompressExBegin(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDecompressExQuery(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDecompressExEnd(HIC hic) { + return ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0); +} + +extern (Windows) { + DWORD ICDrawBegin(HIC hic, DWORD dwFlags, HPALETTE hpal, HWND hwnd, HDC hdc, + int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, + int xSrc, int ySrc, int dxSrc, int dySrc, DWORD dwRate, DWORD dwScale); +} + +extern (Windows) { + DWORD ICDraw(HIC hic, DWORD dwFlags, LPVOID lpFormat, LPVOID lpData, DWORD cbData, LONG lTime); +} + +LRESULT ICDrawSuggestFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, + int dxSrc, int dySrc, int dxDst, int dyDst, HIC hicDecomp) { + ICDRAWSUGGEST ic; + + ic.lpbiIn = lpbiIn; + ic.lpbiSuggest = lpbiOut; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + ic.hicDecompressor = hicDecomp; + + return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDrawQuery(HIC hic, LPVOID lpbiInput) { + return ICSendMessage(hic, ICM_DRAW_QUERY, cast(DWORD_PTR)lpbiInput, 0L); +} +LRESULT ICDrawChangePalette(HIC hic, LPVOID lpbiInput) { + return ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, cast(DWORD_PTR)lpbiInput, 0L); +} +LRESULT ICGetBuffersWanted(HIC hic, LPVOID lpdwBuffers) { + return ICSendMessage(hic, ICM_GETBUFFERSWANTED, cast(DWORD_PTR)lpdwBuffers, 0); +} +LRESULT ICDrawEnd(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_END, 0, 0); +} +LRESULT ICDrawStart(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_START, 0, 0); +} +LRESULT ICDrawStartPlay(HIC hic, DWORD lFrom, DWORD lTo) { + return ICSendMessage(hic, ICM_DRAW_START_PLAY, cast(DWORD_PTR)lFrom, cast(DWORD_PTR)lTo); +} +LRESULT ICDrawStop(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_STOP, 0, 0); +} +LRESULT ICDrawStopPlay(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0); +} +LRESULT ICDrawGetTime(HIC hic, LPVOID lplTime) { + return ICSendMessage(hic, ICM_DRAW_GETTIME, cast(DWORD_PTR)lplTime, 0); +} +LRESULT ICDrawSetTime(HIC hic, DWORD lTime) { + return ICSendMessage(hic, ICM_DRAW_SETTIME, cast(DWORD_PTR)lTime, 0); +} +LRESULT ICDrawRealize(HIC hic, HDC hdc, BOOL fBackground) { + return ICSendMessage(hic, ICM_DRAW_REALIZE, cast(DWORD_PTR)hdc, cast(DWORD_PTR)fBackground); +} +LRESULT ICDrawFlush(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0); +} +LRESULT ICDrawRenderBuffer(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0); +} + +LRESULT ICSetStatusProc(HIC hic, DWORD dwFlags, LRESULT lParam, LONG function(LPARAM, UINT, LONG) fpfnStatus) { + ICSETSTATUSPROC ic; + + ic.dwFlags = dwFlags; + ic.lParam = lParam; + ic.Status = fpfnStatus; + + return ICSendMessage(hic, ICM_SET_STATUS_PROC, cast(DWORD_PTR)&ic, ic.sizeof); +} + +HIC ICDecompressOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut) { + return ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS); +} + +HIC ICDrawOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn) { + return ICLocate(fccType, fccHandler, lpbiIn, null, ICMODE_DRAW); +} + +extern (Windows) { + HIC ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags); + HIC ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy); + HANDLE ICImageCompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut, LONG lQuality, LONG* plSize); + HANDLE ICImageDecompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut); +} + +struct COMPVARS { + LONG cbSize = this.sizeof; + DWORD dwFlags; + HIC hic; + DWORD fccType; + DWORD fccHandler; + LPBITMAPINFO lpbiIn; + LPBITMAPINFO lpbiOut; + LPVOID lpBitsOut; + LPVOID lpBitsPrev; + LONG lFrame; + LONG lKey; + LONG lDataRate; + LONG lQ; + LONG lKeyCount; + LPVOID lpState; + LONG cbState; +} +alias COMPVARS* PCOMPVARS; + +const ICMF_COMPVARS_VALID = 0x00000001; + +extern (Windows) { + BOOL ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData, PCOMPVARS pc, LPSTR lpszTitle); +} + +enum { + ICMF_CHOOSE_KEYFRAME = 0x0001, + ICMF_CHOOSE_DATARATE = 0x0002, + ICMF_CHOOSE_PREVIEW = 0x0004, + ICMF_CHOOSE_ALLCOMPRESSORS = 0x0008, +} + +extern (Windows) { + BOOL ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn); + void ICSeqCompressFrameEnd(PCOMPVARS pc); + LPVOID ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits, BOOL* pfKey, LONG* plSize); + void ICCompressorFree(PCOMPVARS pc); +} + +mixin DECLARE_HANDLE!("HDRAWDIB"); + +enum { + DDF_0001 = 0x0001, + DDF_UPDATE = 0x0002, + DDF_SAME_HDC = 0x0004, + DDF_SAME_DRAW = 0x0008, + DDF_DONTDRAW = 0x0010, + DDF_ANIMATE = 0x0020, + DDF_BUFFER = 0x0040, + DDF_JUSTDRAWIT = 0x0080, + DDF_FULLSCREEN = 0x0100, + DDF_BACKGROUNDPAL = 0x0200, + DDF_NOTKEYFRAME = 0x0400, + DDF_HURRYUP = 0x0800, + DDF_HALFTONE = 0x1000, + DDF_2000 = 0x2000, + DDF_PREROLL = DDF_DONTDRAW, + DDF_SAME_DIB = DDF_SAME_DRAW, + DDF_SAME_SIZE = DDF_SAME_DRAW, +} + +extern (Windows) { + BOOL DrawDibInit(); + HDRAWDIB DrawDibOpen(); + BOOL DrawDibClose(HDRAWDIB hdd); + LPVOID DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags); + UINT DrawDibError(HDRAWDIB hdd); + HPALETTE DrawDibGetPalette(HDRAWDIB hdd); + BOOL DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal); + BOOL DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe); + UINT DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground); + BOOL DrawDibStart(HDRAWDIB hdd, DWORD rate); + BOOL DrawDibStop(HDRAWDIB hdd); + BOOL DrawDibBegin(HDRAWDIB hdd, HDC hdc, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, int dxSrc, int dySrc, UINT wFlags); + BOOL DrawDibDraw(HDRAWDIB hdd, HDC hdc, int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, + LPVOID lpBits, int xSrc, int ySrc, int dxSrc, int dySrc, UINT wFlags); +} + +BOOL DrawDibUpdate(HDRAWDIB hdd, HDC hdc, int x, int y) { + return DrawDibDraw(hdd, hdc, x, y, 0, 0, null, null, 0, 0, 0, 0, DDF_UPDATE); +} + +extern (Windows) { + BOOL DrawDibEnd(HDRAWDIB hdd); +} + +struct DRAWDIBTIME { + LONG timeCount; + LONG timeDraw; + LONG timeDecompress; + LONG timeDither; + LONG timeStretch; + LONG timeBlt; + LONG timeSetDIBits; +} +alias DRAWDIBTIME* LPDRAWDIBTIME; + +extern (Windows) { + BOOL DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime); +} + +enum { + PD_CAN_DRAW_DIB = 0x0001, + PD_CAN_STRETCHDIB = 0x0002, + PD_STRETCHDIB_1_1_OK = 0x0004, + PD_STRETCHDIB_1_2_OK = 0x0008, + PD_STRETCHDIB_1_N_OK = 0x0010, +} + +extern (Windows) { + LRESULT DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi); + void StretchDIB(LPBITMAPINFOHEADER biDst, LPVOID lpDst, int DstX, int DstY, + int DstXE, int DstYE, LPBITMAPINFOHEADER biSrc, LPVOID lpSrc, + int SrcX, int SrcY, int SrcXE, int SrcYE); +} + +alias DWORD FOURCC; + +alias WORD TWOCC; + +const formtypeAVI = mmioFOURCC!('A', 'V', 'I', ' '); +const listtypeAVIHEADER = mmioFOURCC!('h', 'd', 'r', 'l'); +const ckidAVIMAINHDR = mmioFOURCC!('a', 'v', 'i', 'h'); +const listtypeSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'l'); +const ckidSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'h'); +const ckidSTREAMFORMAT = mmioFOURCC!('s', 't', 'r', 'f'); +const ckidSTREAMHANDLERDATA = mmioFOURCC!('s', 't', 'r', 'd'); +const ckidSTREAMNAME = mmioFOURCC!('s', 't', 'r', 'n'); +const listtypeAVIMOVIE = mmioFOURCC!('m', 'o', 'v', 'i'); +const listtypeAVIRECORD = mmioFOURCC!('r', 'e', 'c', ' '); +const ckidAVINEWINDEX = mmioFOURCC!('i', 'd', 'x', '1'); +const streamtypeVIDEO = mmioFOURCC!('v', 'i', 'd', 's'); +const streamtypeAUDIO = mmioFOURCC!('a', 'u', 'd', 's'); +const streamtypeMIDI = mmioFOURCC!('m', 'i', 'd', 's'); +const streamtypeTEXT = mmioFOURCC!('t', 'x', 't', 's'); + +const cktypeDIBbits = aviTWOCC!('d', 'b'); +const cktypeDIBcompressed = aviTWOCC!('d', 'c'); +const cktypePALchange = aviTWOCC!('p', 'c'); +const cktypeWAVEbytes = aviTWOCC!('w', 'b'); + +const ckidAVIPADDING = mmioFOURCC!('J', 'U', 'N', 'K'); + +DWORD FromHex(char n) { + return (n >= 'A') ? n + 10 - 'A' : n - '0'; +} + +WORD StreamFromFOURCC(DWORD fcc) { + return cast(WORD)((FromHex(LOBYTE(LOWORD(fcc))) << 4) + (FromHex(HIBYTE(LOWORD(fcc))))); +} + +WORD TWOCCFromFOURCC(DWORD fcc) { + return HIWORD(fcc); +} + +BYTE ToHex(DWORD n) { + return cast(BYTE)((n > 9) ? n - 10 + 'A' : n + '0'); +} + +DWORD MAKEAVICKID(WORD tcc, WORD stream) { + return MAKELONG(cast(WORD)((ToHex(stream & 0x0f) << 8) | (ToHex((stream & 0xf0) >> 4))), tcc); +} + +enum { + AVIF_HASINDEX = 0x00000010, + AVIF_MUSTUSEINDEX = 0x00000020, + AVIF_ISINTERLEAVED = 0x00000100, + AVIF_WASCAPTUREFILE = 0x00010000, + AVIF_COPYRIGHTED = 0x00020000, +} + +const AVI_HEADERSIZE = 2048; + +struct MainAVIHeader { + DWORD dwMicroSecPerFrame; + DWORD dwMaxBytesPerSec; + DWORD dwPaddingGranularity; + DWORD dwFlags; + DWORD dwTotalFrames; + DWORD dwInitialFrames; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD[4] dwReserved; +} + +const AVISF_DISABLED = 0x00000001; + +const AVISF_VIDEO_PALCHANGES = 0x00010000; + +struct AVIStreamHeader { + FOURCC fccType; + FOURCC fccHandler; + DWORD dwFlags; + WORD wPriority; + WORD wLanguage; + DWORD dwInitialFrames; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; +} + +enum { + AVIIF_FIRSTPART = 0x00000020L, + AVIIF_LASTPART = 0x00000040L, + AVIIF_MIDPART = (AVIIF_LASTPART|AVIIF_FIRSTPART), + AVIIF_NOTIME = 0x00000100L, + AVIIF_COMPUSE = 0x0FFF0000L, +} + +struct AVIINDEXENTRY { + DWORD ckid; + DWORD dwFlags; + DWORD dwChunkOffset; + DWORD dwChunkLength; +} + +struct AVIPALCHANGE { + BYTE bFirstEntry; + BYTE bNumEntries; + WORD wFlags; + PALETTEENTRY[1] _peNew; + PALETTEENTRY* peNew() { return _peNew.ptr; } +} + +const AVIGETFRAMEF_BESTDISPLAYFMT = 1; + +struct AVISTREAMINFOW { + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + WCHAR[64] szName; +} +alias AVISTREAMINFOW* LPAVISTREAMINFOW; + +struct AVISTREAMINFOA { + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + char[64] szName; +} +alias AVISTREAMINFOA* LPAVISTREAMINFOA; + +version(Unicode) { + alias AVISTREAMINFOW AVISTREAMINFO; + alias LPAVISTREAMINFOW LPAVISTREAMINFO; +} else { // Unicode + alias AVISTREAMINFOA AVISTREAMINFO; + alias LPAVISTREAMINFOA LPAVISTREAMINFO; +} + +const AVISTREAMINFO_DISABLED = 0x00000001; +const AVISTREAMINFO_FORMATCHANGES = 0x00010000; + +struct AVIFILEINFOW { + DWORD dwMaxBytesPerSec; + DWORD dwFlags; + DWORD dwCaps; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwScale; + DWORD dwRate; + DWORD dwLength; + DWORD dwEditCount; + WCHAR[64] szFileType; +} +alias AVIFILEINFOW* LPAVIFILEINFOW; + +struct AVIFILEINFOA { + DWORD dwMaxBytesPerSec; + DWORD dwFlags; + DWORD dwCaps; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwScale; + DWORD dwRate; + DWORD dwLength; + DWORD dwEditCount; + char[64] szFileType; +} +alias AVIFILEINFOA* LPAVIFILEINFOA; + +version(Unicode) { + alias AVIFILEINFOW AVIFILEINFO; + alias LPAVIFILEINFOW LPAVIFILEINFO; +} else { // Unicode + alias AVIFILEINFOA AVIFILEINFO; + alias LPAVIFILEINFOA LPAVIFILEINFO; +} + +enum { + AVIFILEINFO_HASINDEX = 0x00000010, + AVIFILEINFO_MUSTUSEINDEX = 0x00000020, + AVIFILEINFO_ISINTERLEAVED = 0x00000100, + AVIFILEINFO_WASCAPTUREFILE = 0x00010000, + AVIFILEINFO_COPYRIGHTED = 0x00020000, +} + +enum { + AVIFILECAPS_CANREAD = 0x00000001, + AVIFILECAPS_CANWRITE = 0x00000002, + AVIFILECAPS_ALLKEYFRAMES = 0x00000010, + AVIFILECAPS_NOCOMPRESSION = 0x00000020, +} + +extern (Windows) { + alias BOOL function(int) AVISAVECALLBACK; +} + +struct AVICOMPRESSOPTIONS { + DWORD fccType; + DWORD fccHandler; + DWORD dwKeyFrameEvery; + DWORD dwQuality; + DWORD dwBytesPerSecond; + DWORD dwFlags; + LPVOID lpFormat; + DWORD cbFormat; + LPVOID lpParms; + DWORD cbParms; + DWORD dwInterleaveEvery; +} +alias AVICOMPRESSOPTIONS* LPAVICOMPRESSOPTIONS; + +enum { + AVICOMPRESSF_INTERLEAVE = 0x00000001, + AVICOMPRESSF_DATARATE = 0x00000002, + AVICOMPRESSF_KEYFRAMES = 0x00000004, + AVICOMPRESSF_VALID = 0x00000008, +} + +/+ TODO: +DECLARE_INTERFACE_(IAVIStream, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Create) (THIS_ LPARAM lParam1, LPARAM lParam2) PURE ; + STDMETHOD(Info) (THIS_ AVISTREAMINFOW FAR * psi, LONG lSize) PURE ; + STDMETHOD_(LONG, FindSample)(THIS_ LONG lPos, LONG lFlags) PURE ; + STDMETHOD(ReadFormat) (THIS_ LONG lPos, + LPVOID lpFormat, LONG FAR *lpcbFormat) PURE ; + STDMETHOD(SetFormat) (THIS_ LONG lPos, + LPVOID lpFormat, LONG cbFormat) PURE ; + STDMETHOD(Read) (THIS_ LONG lStart, LONG lSamples, + LPVOID lpBuffer, LONG cbBuffer, + LONG FAR * plBytes, LONG FAR * plSamples) PURE ; + STDMETHOD(Write) (THIS_ LONG lStart, LONG lSamples, + LPVOID lpBuffer, LONG cbBuffer, + DWORD dwFlags, + LONG FAR *plSampWritten, + LONG FAR *plBytesWritten) PURE ; + STDMETHOD(Delete) (THIS_ LONG lStart, LONG lSamples) PURE; + STDMETHOD(ReadData) (THIS_ DWORD fcc, LPVOID lp, LONG FAR *lpcb) PURE ; + STDMETHOD(WriteData) (THIS_ DWORD fcc, LPVOID lp, LONG cb) PURE ; +#ifdef _WIN32 + STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, + LONG cbInfo) PURE; +#else + STDMETHOD(Reserved1) (THIS) PURE; + STDMETHOD(Reserved2) (THIS) PURE; + STDMETHOD(Reserved3) (THIS) PURE; + STDMETHOD(Reserved4) (THIS) PURE; + STDMETHOD(Reserved5) (THIS) PURE; +#endif +}; + +alias TypeDef!(IAVIStream FAR*) PAVISTREAM; + +#undef INTERFACE +#define INTERFACE IAVIStreaming + +DECLARE_INTERFACE_(IAVIStreaming, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Begin) (THIS_ + LONG lStart, + LONG lEnd, + LONG lRate) PURE; + STDMETHOD(End) (THIS) PURE; +}; + +alias TypeDef!(IAVIStreaming FAR*) PAVISTREAMING; + + +#undef INTERFACE +#define INTERFACE IAVIEditStream + +DECLARE_INTERFACE_(IAVIEditStream, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Cut) (THIS_ LONG FAR *plStart, + LONG FAR *plLength, + PAVISTREAM FAR * ppResult) PURE; + STDMETHOD(Copy) (THIS_ LONG FAR *plStart, + LONG FAR *plLength, + PAVISTREAM FAR * ppResult) PURE; + STDMETHOD(Paste) (THIS_ LONG FAR *plPos, + LONG FAR *plLength, + PAVISTREAM pstream, + LONG lStart, + LONG lEnd) PURE; + STDMETHOD(Clone) (THIS_ PAVISTREAM FAR *ppResult) PURE; + STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, + LONG cbInfo) PURE; +}; + +alias TypeDef!(IAVIEditStream FAR*) PAVIEDITSTREAM; + +#undef INTERFACE +#define INTERFACE IAVIPersistFile + +DECLARE_INTERFACE_(IAVIPersistFile, IPersistFile) +{ + STDMETHOD(Reserved1)(THIS) PURE; +}; + +alias TypeDef!(IAVIPersistFile FAR*) PAVIPERSISTFILE; + +#undef INTERFACE +#define INTERFACE IAVIFile +#define PAVIFILE IAVIFile FAR* + +DECLARE_INTERFACE_(IAVIFile, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Info) (THIS_ + AVIFILEINFOW FAR * pfi, + LONG lSize) PURE; + STDMETHOD(GetStream) (THIS_ + PAVISTREAM FAR * ppStream, + DWORD fccType, + LONG lParam) PURE; + STDMETHOD(CreateStream) (THIS_ + PAVISTREAM FAR * ppStream, + AVISTREAMINFOW FAR * psi) PURE; + STDMETHOD(WriteData) (THIS_ + DWORD ckid, + LPVOID lpData, + LONG cbData) PURE; + STDMETHOD(ReadData) (THIS_ + DWORD ckid, + LPVOID lpData, + LONG FAR *lpcbData) PURE; + STDMETHOD(EndRecord) (THIS) PURE; + STDMETHOD(DeleteStream) (THIS_ + DWORD fccType, + LONG lParam) PURE; +}; + +#undef PAVIFILE +alias TypeDef!(IAVIFile FAR*) PAVIFILE; + +#undef INTERFACE +#define INTERFACE IGetFrame +#define PGETFRAME IGetFrame FAR* + +DECLARE_INTERFACE_(IGetFrame, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD_(LPVOID,GetFrame) (THIS_ LONG lPos) PURE; + + STDMETHOD(Begin) (THIS_ LONG lStart, LONG lEnd, LONG lRate) PURE; + STDMETHOD(End) (THIS) PURE; + + STDMETHOD(SetFormat) (THIS_ LPBITMAPINFOHEADER lpbi, LPVOID lpBits, int x, int y, int dx, int dy) PURE; +}; + +#undef PGETFRAME +alias TypeDef!(IGetFrame FAR*) PGETFRAME; + +#define DEFINE_AVIGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46) + +DEFINE_AVIGUID(IID_IAVIFile, 0x00020020, 0, 0); +DEFINE_AVIGUID(IID_IAVIStream, 0x00020021, 0, 0); +DEFINE_AVIGUID(IID_IAVIStreaming, 0x00020022, 0, 0); +DEFINE_AVIGUID(IID_IGetFrame, 0x00020023, 0, 0); +DEFINE_AVIGUID(IID_IAVIEditStream, 0x00020024, 0, 0); +DEFINE_AVIGUID(IID_IAVIPersistFile, 0x00020025, 0, 0); +#ifndef UNICODE +DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal, 0x00020009, 0, 0); +#endif + +DEFINE_AVIGUID(CLSID_AVIFile, 0x00020000, 0, 0); + +#define AVIFILEHANDLER_CANREAD 0x0001 +#define AVIFILEHANDLER_CANWRITE 0x0002 +#define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004 + +STDAPI_(void) AVIFileInit(void); +STDAPI_(void) AVIFileExit(void); + +STDAPI_(ULONG) AVIFileAddRef (PAVIFILE pfile); +STDAPI_(ULONG) AVIFileRelease (PAVIFILE pfile); + +#ifdef _WIN32 +STDAPI AVIFileOpenA (PAVIFILE FAR * ppfile, LPCSTR szFile, + UINT uMode, LPCLSID lpHandler); +STDAPI AVIFileOpenW (PAVIFILE FAR * ppfile, LPCWSTR szFile, + UINT uMode, LPCLSID lpHandler); +#ifdef UNICODE +#define AVIFileOpen AVIFileOpenW +#else +#define AVIFileOpen AVIFileOpenA +#endif +#else +STDAPI AVIFileOpen (PAVIFILE FAR * ppfile, LPCSTR szFile, + UINT uMode, LPCLSID lpHandler); +#define AVIFileOpenW AVIFileOpen +#endif + +#ifdef _WIN32 +STDAPI AVIFileInfoW (PAVIFILE pfile, LPAVIFILEINFOW pfi, LONG lSize); +STDAPI AVIFileInfoA (PAVIFILE pfile, LPAVIFILEINFOA pfi, LONG lSize); +#ifdef UNICODE +#define AVIFileInfo AVIFileInfoW +#else +#define AVIFileInfo AVIFileInfoA +#endif +#else +STDAPI AVIFileInfo (PAVIFILE pfile, LPAVIFILEINFO pfi, LONG lSize); +#define AVIFileInfoW AVIFileInfo +#endif + + +STDAPI AVIFileGetStream (PAVIFILE pfile, PAVISTREAM FAR * ppavi, DWORD fccType, LONG lParam); + + +#ifdef _WIN32 +STDAPI AVIFileCreateStreamW (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOW FAR * psi); +STDAPI AVIFileCreateStreamA (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOA FAR * psi); +#ifdef UNICODE +#define AVIFileCreateStream AVIFileCreateStreamW +#else +#define AVIFileCreateStream AVIFileCreateStreamA +#endif +#else +STDAPI AVIFileCreateStream(PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFO FAR * psi); +#define AVIFileCreateStreamW AVIFileCreateStream +#endif + +STDAPI AVIFileWriteData (PAVIFILE pfile, + DWORD ckid, + LPVOID lpData, + LONG cbData); +STDAPI AVIFileReadData (PAVIFILE pfile, + DWORD ckid, + LPVOID lpData, + LONG FAR *lpcbData); +STDAPI AVIFileEndRecord (PAVIFILE pfile); + +STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi); +STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi); + +STDAPI AVIStreamInfoW (PAVISTREAM pavi, LPAVISTREAMINFOW psi, LONG lSize); +STDAPI AVIStreamInfoA (PAVISTREAM pavi, LPAVISTREAMINFOA psi, LONG lSize); +#ifdef UNICODE +#define AVIStreamInfo AVIStreamInfoW +#else +#define AVIStreamInfo AVIStreamInfoA +#endif + +STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi, LONG lPos, LONG lFlags); +STDAPI AVIStreamReadFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG FAR *lpcbFormat); +STDAPI AVIStreamSetFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG cbFormat); +STDAPI AVIStreamReadData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG FAR *lpcb); +STDAPI AVIStreamWriteData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG cb); + +STDAPI AVIStreamRead (PAVISTREAM pavi, + LONG lStart, + LONG lSamples, + LPVOID lpBuffer, + LONG cbBuffer, + LONG FAR * plBytes, + LONG FAR * plSamples); +#define AVISTREAMREAD_CONVENIENT (-1L) + +STDAPI AVIStreamWrite (PAVISTREAM pavi, + LONG lStart, LONG lSamples, + LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags, + LONG FAR *plSampWritten, + LONG FAR *plBytesWritten); + +STDAPI_(LONG) AVIStreamStart (PAVISTREAM pavi); +STDAPI_(LONG) AVIStreamLength (PAVISTREAM pavi); +STDAPI_(LONG) AVIStreamTimeToSample (PAVISTREAM pavi, LONG lTime); +STDAPI_(LONG) AVIStreamSampleToTime (PAVISTREAM pavi, LONG lSample); + + +STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart, LONG lEnd, LONG lRate); +STDAPI AVIStreamEndStreaming(PAVISTREAM pavi); + +STDAPI_(PGETFRAME) AVIStreamGetFrameOpen(PAVISTREAM pavi, + LPBITMAPINFOHEADER lpbiWanted); +STDAPI_(LPVOID) AVIStreamGetFrame(PGETFRAME pg, LONG lPos); +STDAPI AVIStreamGetFrameClose(PGETFRAME pg); + +STDAPI AVIStreamOpenFromFileA(PAVISTREAM FAR *ppavi, LPCSTR szFile, + DWORD fccType, LONG lParam, + UINT mode, CLSID FAR *pclsidHandler); +STDAPI AVIStreamOpenFromFileW(PAVISTREAM FAR *ppavi, LPCWSTR szFile, + DWORD fccType, LONG lParam, + UINT mode, CLSID FAR *pclsidHandler); +#ifdef UNICODE +#define AVIStreamOpenFromFile AVIStreamOpenFromFileW +#else +#define AVIStreamOpenFromFile AVIStreamOpenFromFileA +#endif + +STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, + CLSID FAR *pclsidHandler); + + + +#define FIND_DIR 0x0000000FL +#define FIND_NEXT 0x00000001L +#define FIND_PREV 0x00000004L +#define FIND_FROM_START 0x00000008L + +#define FIND_TYPE 0x000000F0L +#define FIND_KEY 0x00000010L +#define FIND_ANY 0x00000020L +#define FIND_FORMAT 0x00000040L + +#define FIND_RET 0x0000F000L +#define FIND_POS 0x00000000L +#define FIND_LENGTH 0x00001000L +#define FIND_OFFSET 0x00002000L +#define FIND_SIZE 0x00003000L +#define FIND_INDEX 0x00004000L + +#define AVIStreamFindKeyFrame AVIStreamFindSample +#define FindKeyFrame FindSample + +#define AVIStreamClose AVIStreamRelease +#define AVIFileClose AVIFileRelease +#define AVIStreamInit AVIFileInit +#define AVIStreamExit AVIFileExit + +#define SEARCH_NEAREST FIND_PREV +#define SEARCH_BACKWARD FIND_PREV +#define SEARCH_FORWARD FIND_NEXT +#define SEARCH_KEY FIND_KEY +#define SEARCH_ANY FIND_ANY + +#define AVIStreamSampleToSample(pavi1, pavi2, l) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2, l)) + +#define AVIStreamNextSample(pavi, l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_ANY) + +#define AVIStreamPrevSample(pavi, l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_ANY) + +#define AVIStreamNearestSample(pavi, l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_ANY) + +#define AVIStreamNextKeyFrame(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_KEY) + +#define AVIStreamPrevKeyFrame(pavi, l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_KEY) + +#define AVIStreamNearestKeyFrame(pavi, l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_KEY) + +#define AVIStreamIsKeyFrame(pavi, l) (AVIStreamNearestKeyFrame(pavi,l) == l) + +#define AVIStreamPrevSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamPrevSample(pavi,AVIStreamTimeToSample(pavi,t))) + +#define AVIStreamNextSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNextSample(pavi,AVIStreamTimeToSample(pavi,t))) + +#define AVIStreamNearestSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNearestSample(pavi,AVIStreamTimeToSample(pavi,t))) + +#define AVIStreamNextKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNextKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) + +#define AVIStreamPrevKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamPrevKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) + +#define AVIStreamNearestKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNearestKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) + +#define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamStart(pavi)) + +#define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamLength(pavi)) + +#define AVIStreamEnd(pavi) (AVIStreamStart(pavi) + AVIStreamLength(pavi)) + +#define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi)) + +#define AVIStreamSampleSize(pavi, lPos, plSize) AVIStreamRead(pavi,lPos,1,NULL,0,plSize,NULL) + +#define AVIStreamFormatSize(pavi, lPos, plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize) + +#define AVIStreamDataSize(pavi, fcc, plSize) AVIStreamReadData(pavi,fcc,NULL,plSize) + +#ifndef comptypeDIB +#define comptypeDIB mmioFOURCC('D', 'I', 'B', ' ') +#endif + +STDAPI AVIMakeCompressedStream( + PAVISTREAM FAR * ppsCompressed, + PAVISTREAM ppsSource, + AVICOMPRESSOPTIONS FAR * lpOptions, + CLSID FAR *pclsidHandler); + +EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM pfile, + LPAVICOMPRESSOPTIONS lpOptions, + ...); + +STDAPI AVISaveVA(LPCSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM FAR * ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); +EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM pfile, + LPAVICOMPRESSOPTIONS lpOptions, + ...); + +STDAPI AVISaveVW(LPCWSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM FAR * ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); +#ifdef UNICODE +#define AVISave AVISaveW +#define AVISaveV AVISaveVW +#else +#define AVISave AVISaveA +#define AVISaveV AVISaveVA +#endif + + + +STDAPI_(INT_PTR) AVISaveOptions(HWND hwnd, + UINT uiFlags, + int nStreams, + PAVISTREAM FAR *ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); + +STDAPI AVISaveOptionsFree(int nStreams, + LPAVICOMPRESSOPTIONS FAR *plpOptions); + +STDAPI AVIBuildFilterW(LPWSTR lpszFilter, LONG cbFilter, BOOL fSaving); +STDAPI AVIBuildFilterA(LPSTR lpszFilter, LONG cbFilter, BOOL fSaving); +#ifdef UNICODE +#define AVIBuildFilter AVIBuildFilterW +#else +#define AVIBuildFilter AVIBuildFilterA +#endif +STDAPI AVIMakeFileFromStreams(PAVIFILE FAR * ppfile, + int nStreams, + PAVISTREAM FAR * papStreams); + +STDAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal, PAVISTREAM FAR *ppstream); + +STDAPI AVIPutFileOnClipboard(PAVIFILE pf); + +STDAPI AVIGetFromClipboard(PAVIFILE FAR * lppf); + +STDAPI AVIClearClipboard(void); + +STDAPI CreateEditableStream( + PAVISTREAM FAR * ppsEditable, + PAVISTREAM psSource); + +STDAPI EditStreamCut(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); + +STDAPI EditStreamCopy(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); + +STDAPI EditStreamPaste(PAVISTREAM pavi, LONG FAR *plPos, LONG FAR *plLength, PAVISTREAM pstream, LONG lStart, LONG lEnd); + +STDAPI EditStreamClone(PAVISTREAM pavi, PAVISTREAM FAR *ppResult); + + +STDAPI EditStreamSetNameA(PAVISTREAM pavi, LPCSTR lpszName); +STDAPI EditStreamSetNameW(PAVISTREAM pavi, LPCWSTR lpszName); +STDAPI EditStreamSetInfoW(PAVISTREAM pavi, LPAVISTREAMINFOW lpInfo, LONG cbInfo); +STDAPI EditStreamSetInfoA(PAVISTREAM pavi, LPAVISTREAMINFOA lpInfo, LONG cbInfo); +#ifdef UNICODE +#define EditStreamSetInfo EditStreamSetInfoW +#define EditStreamSetName EditStreamSetNameW +#else +#define EditStreamSetInfo EditStreamSetInfoA +#define EditStreamSetName EditStreamSetNameA +#endif ++/ +const AVIERR_OK = 0L; + +SCODE MAKE_AVIERR(DWORD error) { + return MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x4000 + error); +} + +const AVIERR_UNSUPPORTED = MAKE_AVIERR(101); +const AVIERR_BADFORMAT = MAKE_AVIERR(102); +const AVIERR_MEMORY = MAKE_AVIERR(103); +const AVIERR_INTERNAL = MAKE_AVIERR(104); +const AVIERR_BADFLAGS = MAKE_AVIERR(105); +const AVIERR_BADPARAM = MAKE_AVIERR(106); +const AVIERR_BADSIZE = MAKE_AVIERR(107); +const AVIERR_BADHANDLE = MAKE_AVIERR(108); +const AVIERR_FILEREAD = MAKE_AVIERR(109); +const AVIERR_FILEWRITE = MAKE_AVIERR(110); +const AVIERR_FILEOPEN = MAKE_AVIERR(111); +const AVIERR_COMPRESSOR = MAKE_AVIERR(112); +const AVIERR_NOCOMPRESSOR = MAKE_AVIERR(113); +const AVIERR_READONLY = MAKE_AVIERR(114); +const AVIERR_NODATA = MAKE_AVIERR(115); +const AVIERR_BUFFERTOOSMALL = MAKE_AVIERR(116); +const AVIERR_CANTCOMPRESS = MAKE_AVIERR(117); +const AVIERR_USERABORT = MAKE_AVIERR(198); +const AVIERR_ERROR = MAKE_AVIERR(199); + +const TCHAR[] MCIWND_WINDOW_CLASS = "MCIWndClass"; + +extern (Windows) { + HWND MCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCSTR szFile); + HWND MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCWSTR szFile); +} + +version(Unicode) { + alias MCIWndCreateW MCIWndCreate; +} else { // Unicode + alias MCIWndCreateA MCIWndCreate; +} + +extern(Windows) { + BOOL MCIWndRegisterClass(); +} + +enum { + MCIWNDOPENF_NEW = 0x0001, + MCIWNDF_NOAUTOSIZEWINDOW = 0x0001, + MCIWNDF_NOPLAYBAR = 0x0002, + MCIWNDF_NOAUTOSIZEMOVIE = 0x0004, + MCIWNDF_NOMENU = 0x0008, + MCIWNDF_SHOWNAME = 0x0010, + MCIWNDF_SHOWPOS = 0x0020, + MCIWNDF_SHOWMODE = 0x0040, + MCIWNDF_SHOWALL = 0x0070, + MCIWNDF_NOTIFYMODE = 0x0100, + MCIWNDF_NOTIFYPOS = 0x0200, + MCIWNDF_NOTIFYSIZE = 0x0400, + MCIWNDF_NOTIFYERROR = 0x1000, + MCIWNDF_NOTIFYALL = 0x1F00, + MCIWNDF_NOTIFYANSI = 0x0080, + MCIWNDF_NOTIFYMEDIAA = 0x0880, + MCIWNDF_NOTIFYMEDIAW = 0x0800, +} + +version(Unicode) { + alias MCIWNDF_NOTIFYMEDIAW MCIWNDF_NOTIFYMEDIA; +} else { // Unicode + alias MCIWNDF_NOTIFYMEDIAA MCIWNDF_NOTIFYMEDIA; +} + +enum { + MCIWNDF_RECORD = 0x2000, + MCIWNDF_NOERRORDLG = 0x4000, + MCIWNDF_NOOPEN = 0x8000, +} + +// can macros + +BOOL MCIWndCanPlay(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_PLAY, 0, 0); } +BOOL MCIWndCanRecord(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_RECORD, 0, 0); } +BOOL MCIWndCanSave(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_SAVE, 0, 0); } +BOOL MCIWndCanWindow(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_WINDOW, 0, 0); } +BOOL MCIWndCanEject(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_EJECT, 0, 0); } +BOOL MCIWndCanConfig(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_CONFIG, 0, 0); } +BOOL MCIWndPaletteKick(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_PALETTEKICK, 0, 0); } +LONG MCIWndSave(HWND hwnd, LPVOID szFile) + { return cast(LONG)SendMessage(hwnd, MCI_SAVE, 0, cast(LPARAM)szFile); } +LONG MCIWndSaveDialog(HWND hwnd) + { return MCIWndSave(hwnd, cast(LPVOID)-1); } +LONG MCIWndNew(HWND hwnd, LPVOID lp) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_NEW, 0, cast(LPARAM)lp); } +LONG MCIWndRecord(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_RECORD, 0, 0); } +LONG MCIWndOpen(HWND hwnd, LPVOID sz, UINT f) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_OPEN, cast(WPARAM)f, cast(LPARAM)sz); } +LONG MCIWndOpenDialog(HWND hwnd) + { return MCIWndOpen(hwnd, cast(LPVOID)-1, 0); } +LONG MCIWndClose(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_CLOSE, 0, 0); } +LONG MCIWndPlay(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_PLAY, 0, 0); } +LONG MCIWndStop(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_STOP, 0, 0); } +LONG MCIWndPause(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_PAUSE, 0, 0); } +LONG MCIWndResume(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_RESUME, 0, 0); } +LONG MCIWndSeek(HWND hwnd, LONG lPos) + { return cast(LONG)SendMessage(hwnd, MCI_SEEK, 0, cast(LPARAM)lPos); } +LONG MCIWndHome(HWND hwnd) + { return MCIWndSeek(hwnd, MCIWND_START); } +LONG MCIWndEnd(HWND hwnd) + { return MCIWndSeek(hwnd, MCIWND_END); } +LONG MCIWndEject(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_EJECT, 0, 0); } +LONG MCIWndGetSource(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_SOURCE, 0, cast(LPARAM)prc); } +LONG MCIWndPutSource(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_SOURCE, 0, cast(LPARAM)prc); } +LONG MCIWndGetDest(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_DEST, 0, cast(LPARAM)prc); } +LONG MCIWndPutDest(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_DEST, 0, cast(LPARAM)prc); } +LONG MCIWndPlayReverse(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYREVERSE, 0, 0); } +LONG MCIWndPlayFrom(HWND hwnd, LONG lPos) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, cast(LPARAM)lPos); } +LONG MCIWndPlayTo(HWND hwnd, LONG lPos) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYTO, 0, cast(LPARAM)lPos); } +LONG MCIWndPlayFromTo(HWND hwnd, LONG lStart, LONG lEnd) + { MCIWndSeek(hwnd, lStart); return MCIWndPlayTo(hwnd, lEnd); } +UINT MCIWndGetDeviceID(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0); } +UINT MCIWndGetAlias(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETALIAS, 0, 0); } +LONG MCIWndGetMode(HWND hwnd, LPTSTR lp, UINT len) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETMODE, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetPosition(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0); } +LONG MCIWndGetPositionString(HWND hwnd, LPTSTR lp, UINT len) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetStart(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0); } +LONG MCIWndGetLength(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0); } +LONG MCIWndGetEnd(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETEND, 0, 0); } +LONG MCIWndStep(HWND hwnd, LONG n) + { return cast(LONG)SendMessage(hwnd, MCI_STEP, 0, cast(LPARAM)n); } +void MCIWndDestroy(HWND hwnd) + { SendMessage(hwnd, WM_CLOSE, 0, 0); } +void MCIWndSetZoom(HWND hwnd, UINT iZoom) + { SendMessage(hwnd, MCIWNDM_SETZOOM, 0, cast(LPARAM)iZoom); } +UINT MCIWndGetZoom(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETZOOM, 0, 0); } +LONG MCIWndSetVolume(HWND hwnd, UINT iVol) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, cast(LPARAM)iVol); } +LONG MCIWndGetVolume(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0); } +LONG MCIWndSetSpeed(HWND hwnd, UINT iSpeed) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETSPEED, 0, cast(LPARAM)iSpeed); } +LONG MCIWndGetSpeed(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0); } +LONG MCIWndSetTimeFormat(HWND hwnd, LPTSTR lp) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, cast(LPARAM)lp); } +LONG MCIWndUseFrames(HWND hwnd) + { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"frames").ptr); } +LONG MCIWndUseTime(HWND hwnd) + { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"ms").ptr); } +LONG MCIWndGetTimeFormat(HWND hwnd, LPTSTR lp, UINT len) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETTIMEFORMAT, cast(WPARAM)len, cast(LPARAM)lp); } +void MCIWndValidateMedia(HWND hwnd) + { SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0); } +void MCIWndSetRepeat(HWND hwnd, BOOL f) + { SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, cast(LPARAM)f); } +BOOL MCIWndGetRepeat(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0); } +void MCIWndSetActiveTimer(HWND hwnd, UINT active) + { SendMessage(hwnd, MCIWNDM_SETACTIVETIMER, cast(WPARAM)active, 0); } +void MCIWndSetInactiveTimer(HWND hwnd, UINT inactive) + { SendMessage(hwnd, MCIWNDM_SETINACTIVETIMER, cast(WPARAM)inactive, 0); } +void MCIWndSetTimers(HWND hwnd, UINT active, UINT inactive) + { SendMessage(hwnd, MCIWNDM_SETTIMERS, cast(WPARAM)active, cast(LPARAM)inactive); } +UINT MCIWndGetActiveTimer(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0); } +UINT MCIWndGetInactiveTimer(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0); } +LONG MCIWndRealize(HWND hwnd, BOOL fBkgnd) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_REALIZE, cast(WPARAM)fBkgnd, 0); } +LONG MCIWndSendString(HWND hwnd, LPTSTR sz) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, cast(LPARAM)sz); } +LONG MCIWndReturnString(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_RETURNSTRING, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetError(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETERROR, cast(WPARAM)len, cast(LPARAM)lp); } +HPALETTE MCIWndGetPalette(HWND hwnd) + { return cast(HPALETTE)SendMessage(hwnd, MCIWNDM_GETPALETTE, 0, 0); } +LONG MCIWndSetPalette(HWND hwnd, HPALETTE hpal) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETPALETTE, cast(WPARAM)hpal, 0); } +LONG MCIWndGetFileName(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETFILENAME, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetDevice(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETDEVICE, cast(WPARAM)len, cast(LPARAM)lp); } +UINT MCIWndGetStyles(HWND hwnd) + { return cast(UINT) SendMessage(hwnd, MCIWNDM_GETSTYLES, 0, 0); } +LONG MCIWndChangeStyles(HWND hwnd, UINT mask, LONG value) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_CHANGESTYLES, cast(WPARAM)mask, cast(LPARAM)value); } +LONG MCIWndOpenInterface(HWND hwnd, LPUNKNOWN pUnk) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_OPENINTERFACE, 0, cast(LPARAM)cast(void*)pUnk); } +LONG MCIWndSetOwner(HWND hwnd, HWND hwndP) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETOWNER, cast(WPARAM)hwndP, 0); } + +enum { + MCIWNDM_GETDEVICEID = WM_USER + 100, + MCIWNDM_SENDSTRINGA = WM_USER + 101, + MCIWNDM_GETPOSITIONA = WM_USER + 102, + MCIWNDM_GETSTART = WM_USER + 103, + MCIWNDM_GETLENGTH = WM_USER + 104, + MCIWNDM_GETEND = WM_USER + 105, + MCIWNDM_GETMODEA = WM_USER + 106, + MCIWNDM_EJECT = WM_USER + 107, + MCIWNDM_SETZOOM = WM_USER + 108, + MCIWNDM_GETZOOM = WM_USER + 109, + MCIWNDM_SETVOLUME = WM_USER + 110, + MCIWNDM_GETVOLUME = WM_USER + 111, + MCIWNDM_SETSPEED = WM_USER + 112, + MCIWNDM_GETSPEED = WM_USER + 113, + MCIWNDM_SETREPEAT = WM_USER + 114, + MCIWNDM_GETREPEAT = WM_USER + 115, + MCIWNDM_REALIZE = WM_USER + 118, + MCIWNDM_SETTIMEFORMATA = WM_USER + 119, + MCIWNDM_GETTIMEFORMATA = WM_USER + 120, + MCIWNDM_VALIDATEMEDIA = WM_USER + 121, + MCIWNDM_PLAYFROM = WM_USER + 122, + MCIWNDM_PLAYTO = WM_USER + 123, + MCIWNDM_GETFILENAMEA = WM_USER + 124, + MCIWNDM_GETDEVICEA = WM_USER + 125, + MCIWNDM_GETPALETTE = WM_USER + 126, + MCIWNDM_SETPALETTE = WM_USER + 127, + MCIWNDM_GETERRORA = WM_USER + 128, + MCIWNDM_SETTIMERS = WM_USER + 129, + MCIWNDM_SETACTIVETIMER = WM_USER + 130, + MCIWNDM_SETINACTIVETIMER = WM_USER + 131, + MCIWNDM_GETACTIVETIMER = WM_USER + 132, + MCIWNDM_GETINACTIVETIMER = WM_USER + 133, + MCIWNDM_NEWA = WM_USER + 134, + MCIWNDM_CHANGESTYLES = WM_USER + 135, + MCIWNDM_GETSTYLES = WM_USER + 136, + MCIWNDM_GETALIAS = WM_USER + 137, + MCIWNDM_RETURNSTRINGA = WM_USER + 138, + MCIWNDM_PLAYREVERSE = WM_USER + 139, + MCIWNDM_GET_SOURCE = WM_USER + 140, + MCIWNDM_PUT_SOURCE = WM_USER + 141, + MCIWNDM_GET_DEST = WM_USER + 142, + MCIWNDM_PUT_DEST = WM_USER + 143, + MCIWNDM_CAN_PLAY = WM_USER + 144, + MCIWNDM_CAN_WINDOW = WM_USER + 145, + MCIWNDM_CAN_RECORD = WM_USER + 146, + MCIWNDM_CAN_SAVE = WM_USER + 147, + MCIWNDM_CAN_EJECT = WM_USER + 148, + MCIWNDM_CAN_CONFIG = WM_USER + 149, + MCIWNDM_PALETTEKICK = WM_USER + 150, + MCIWNDM_OPENINTERFACE = WM_USER + 151, + MCIWNDM_SETOWNER = WM_USER + 152, + MCIWNDM_OPENA = WM_USER + 153, + MCIWNDM_SENDSTRINGW = WM_USER + 201, + MCIWNDM_GETPOSITIONW = WM_USER + 202, + MCIWNDM_GETMODEW = WM_USER + 206, + MCIWNDM_SETTIMEFORMATW = WM_USER + 219, + MCIWNDM_GETTIMEFORMATW = WM_USER + 220, + MCIWNDM_GETFILENAMEW = WM_USER + 224, + MCIWNDM_GETDEVICEW = WM_USER + 225, + MCIWNDM_GETERRORW = WM_USER + 228, + MCIWNDM_NEWW = WM_USER + 234, + MCIWNDM_RETURNSTRINGW = WM_USER + 238, + MCIWNDM_OPENW = WM_USER + 252, +} + +version(Unicode) { + alias MCIWNDM_SENDSTRINGW MCIWNDM_SENDSTRING; + alias MCIWNDM_GETPOSITIONW MCIWNDM_GETPOSITION; + alias MCIWNDM_GETMODEW MCIWNDM_GETMODE; + alias MCIWNDM_SETTIMEFORMATW MCIWNDM_SETTIMEFORMAT; + alias MCIWNDM_GETTIMEFORMATW MCIWNDM_GETTIMEFORMAT; + alias MCIWNDM_GETFILENAMEW MCIWNDM_GETFILENAME; + alias MCIWNDM_GETDEVICEW MCIWNDM_GETDEVICE; + alias MCIWNDM_GETERRORW MCIWNDM_GETERROR; + alias MCIWNDM_NEWW MCIWNDM_NEW; + alias MCIWNDM_RETURNSTRINGW MCIWNDM_RETURNSTRING; + alias MCIWNDM_OPENW MCIWNDM_OPEN; +} else { // Unicode + alias MCIWNDM_SENDSTRINGA MCIWNDM_SENDSTRING; + alias MCIWNDM_GETPOSITIONA MCIWNDM_GETPOSITION; + alias MCIWNDM_GETMODEA MCIWNDM_GETMODE; + alias MCIWNDM_SETTIMEFORMATA MCIWNDM_SETTIMEFORMAT; + alias MCIWNDM_GETTIMEFORMATA MCIWNDM_GETTIMEFORMAT; + alias MCIWNDM_GETFILENAMEA MCIWNDM_GETFILENAME; + alias MCIWNDM_GETDEVICEA MCIWNDM_GETDEVICE; + alias MCIWNDM_GETERRORA MCIWNDM_GETERROR; + alias MCIWNDM_NEWA MCIWNDM_NEW; + alias MCIWNDM_RETURNSTRINGA MCIWNDM_RETURNSTRING; + alias MCIWNDM_OPENA MCIWNDM_OPEN; +} + +enum { + MCIWNDM_NOTIFYMODE = WM_USER + 200, + MCIWNDM_NOTIFYPOS = WM_USER + 201, + MCIWNDM_NOTIFYSIZE = WM_USER + 202, + MCIWNDM_NOTIFYMEDIA = WM_USER + 203, + MCIWNDM_NOTIFYERROR = WM_USER + 205, +} + +const MCIWND_START = -1; +const MCIWND_END = -2; + +enum { + MCI_CLOSE = 0x0804, + MCI_PLAY = 0x0806, + MCI_SEEK = 0x0807, + MCI_STOP = 0x0808, + MCI_PAUSE = 0x0809, + MCI_STEP = 0x080E, + MCI_RECORD = 0x080F, + MCI_SAVE = 0x0813, + MCI_CUT = 0x0851, + MCI_COPY = 0x0852, + MCI_PASTE = 0x0853, + MCI_RESUME = 0x0855, + MCI_DELETE = 0x0856, +} + +enum { + MCI_MODE_NOT_READY = 524, + MCI_MODE_STOP, + MCI_MODE_PLAY, + MCI_MODE_RECORD, + MCI_MODE_SEEK, + MCI_MODE_PAUSE, + MCI_MODE_OPEN, +} + +alias TypeDef!(HANDLE) HVIDEO; +alias HVIDEO* LPHVIDEO; + +// Error Return Values + +enum { + DV_ERR_OK = 0, + DV_ERR_BASE = 1, + DV_ERR_NONSPECIFIC = DV_ERR_BASE, + DV_ERR_BADFORMAT = DV_ERR_BASE + 1, + DV_ERR_STILLPLAYING = DV_ERR_BASE + 2, + DV_ERR_UNPREPARED = DV_ERR_BASE + 3, + DV_ERR_SYNC = DV_ERR_BASE + 4, + DV_ERR_TOOMANYCHANNELS = DV_ERR_BASE + 5, + DV_ERR_NOTDETECTED = DV_ERR_BASE + 6, + DV_ERR_BADINSTALL = DV_ERR_BASE + 7, + DV_ERR_CREATEPALETTE = DV_ERR_BASE + 8, + DV_ERR_SIZEFIELD = DV_ERR_BASE + 9, + DV_ERR_PARAM1 = DV_ERR_BASE + 10, + DV_ERR_PARAM2 = DV_ERR_BASE + 11, + DV_ERR_CONFIG1 = DV_ERR_BASE + 12, + DV_ERR_CONFIG2 = DV_ERR_BASE + 13, + DV_ERR_FLAGS = DV_ERR_BASE + 14, + DV_ERR_13 = DV_ERR_BASE + 15, + DV_ERR_NOTSUPPORTED = DV_ERR_BASE + 16, + DV_ERR_NOMEM = DV_ERR_BASE + 17, + DV_ERR_ALLOCATED = DV_ERR_BASE + 18, + DV_ERR_BADDEVICEID = DV_ERR_BASE + 19, + DV_ERR_INVALHANDLE = DV_ERR_BASE + 20, + DV_ERR_BADERRNUM = DV_ERR_BASE + 21, + DV_ERR_NO_BUFFERS = DV_ERR_BASE + 22, + DV_ERR_MEM_CONFLICT = DV_ERR_BASE + 23, + DV_ERR_IO_CONFLICT = DV_ERR_BASE + 24, + DV_ERR_DMA_CONFLICT = DV_ERR_BASE + 25, + DV_ERR_INT_CONFLICT = DV_ERR_BASE + 26, + DV_ERR_PROTECT_ONLY = DV_ERR_BASE + 27, + DV_ERR_LASTERROR = DV_ERR_BASE + 27, + DV_ERR_USER_MSG = DV_ERR_BASE + 1000, +} + +// Callback Messages + +enum { + MM_DRVM_OPEN = 0x3D0, + MM_DRVM_CLOSE, + MM_DRVM_DATA, + MM_DRVM_ERROR, +} + +enum { + DV_VM_OPEN = MM_DRVM_OPEN, + DV_VM_CLOSE = MM_DRVM_CLOSE, + DV_VM_DATA = MM_DRVM_DATA, + DV_VM_ERROR = MM_DRVM_ERROR, +} + +/** + * Structures + */ + +struct VIDEOHDR { + LPBYTE lpData; + DWORD dwBufferLength; + DWORD dwBytesUsed; + DWORD dwTimeCaptured; + DWORD_PTR dwUser; + DWORD dwFlags; + DWORD_PTR[4]dwReserved; +} +alias VIDEOHDR* PVIDEOHDR, LPVIDEOHDR; + +enum { + VHDR_DONE = 0x00000001, + VHDR_PREPARED = 0x00000002, + VHDR_INQUEUE = 0x00000004, + VHDR_KEYFRAME = 0x00000008, + VHDR_VALID = 0x0000000F, +} + +struct CHANNEL_CAPS { + DWORD dwFlags; + DWORD dwSrcRectXMod; + DWORD dwSrcRectYMod; + DWORD dwSrcRectWidthMod; + DWORD dwSrcRectHeightMod; + DWORD dwDstRectXMod; + DWORD dwDstRectYMod; + DWORD dwDstRectWidthMod; + DWORD dwDstRectHeightMod; +} +alias CHANNEL_CAPS* PCHANNEL_CAPS, LPCHANNEL_CAPS; + +enum { + VCAPS_OVERLAY = 0x00000001, + VCAPS_SRC_CAN_CLIP = 0x00000002, + VCAPS_DST_CAN_CLIP = 0x00000004, + VCAPS_CAN_SCALE = 0x00000008, +} + +/** + * API Flags + */ + +enum { + VIDEO_EXTERNALIN = 0x0001, + VIDEO_EXTERNALOUT = 0x0002, + VIDEO_IN = 0x0004, + VIDEO_OUT = 0x0008, + VIDEO_DLG_QUERY = 0x0010, +} + +enum { + VIDEO_CONFIGURE_QUERYSIZE = 0x0001, + VIDEO_CONFIGURE_CURRENT = 0x0010, + VIDEO_CONFIGURE_NOMINAL = 0x0020, + VIDEO_CONFIGURE_MIN = 0x0040, + VIDEO_CONFIGURE_MAX = 0x0080, + VIDEO_CONFIGURE_SET = 0x1000, + VIDEO_CONFIGURE_GET = 0x2000, + VIDEO_CONFIGURE_QUERY = 0x8000, +} + +/** + * CONFIGURE MESSAGES + */ + +enum { + DVM_USER = 0x4000, + DVM_CONFIGURE_START = 0x1000, + DVM_CONFIGURE_END = 0x1FFF, + DVM_PALETTE = DVM_CONFIGURE_START + 1, + DVM_FORMAT = DVM_CONFIGURE_START + 2, + DVM_PALETTERGB555 = DVM_CONFIGURE_START + 3, + DVM_SRC_RECT = DVM_CONFIGURE_START + 4, + DVM_DST_RECT = DVM_CONFIGURE_START + 5, +} + +/** + * AVICap window class + */ + +LRESULT AVICapSM(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { + if (IsWindow(hWnd)) { + return SendMessage(hWnd, msg, wParam, lParam); + } + return 0; +} + +enum { + WM_CAP_START = WM_USER, + WM_CAP_UNICODE_START = WM_USER + 100, + + WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1, + WM_CAP_SET_CALLBACK_ERRORA = WM_CAP_START + 2, + WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3, + + WM_CAP_SET_CALLBACK_ERRORW = WM_CAP_UNICODE_START + 2, + WM_CAP_SET_CALLBACK_STATUSW = WM_CAP_UNICODE_START + 3, +} + +version(Unicode) { + alias WM_CAP_SET_CALLBACK_ERRORW WM_CAP_SET_CALLBACK_ERROR; + alias WM_CAP_SET_CALLBACK_STATUSW WM_CAP_SET_CALLBACK_STATUS; +} else { // Unicode + alias WM_CAP_SET_CALLBACK_ERRORA WM_CAP_SET_CALLBACK_ERROR; + alias WM_CAP_SET_CALLBACK_STATUSA WM_CAP_SET_CALLBACK_STATUS; +} + +enum { + WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4, + WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5, + WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6, + WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7, + WM_CAP_GET_USER_DATA = WM_CAP_START + 8, + WM_CAP_SET_USER_DATA = WM_CAP_START + 9, + WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10, + WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11, + WM_CAP_DRIVER_GET_NAMEA = WM_CAP_START + 12, + WM_CAP_DRIVER_GET_VERSIONA = WM_CAP_START + 13, + + WM_CAP_DRIVER_GET_NAMEW = WM_CAP_UNICODE_START + 12, + WM_CAP_DRIVER_GET_VERSIONW = WM_CAP_UNICODE_START + 13, +} + +version(Unicode) { + alias WM_CAP_DRIVER_GET_NAMEW WM_CAP_DRIVER_GET_NAME; + alias WM_CAP_DRIVER_GET_VERSIONW WM_CAP_DRIVER_GET_VERSION; +} else { // Unicode + alias WM_CAP_DRIVER_GET_NAMEA WM_CAP_DRIVER_GET_NAME; + alias WM_CAP_DRIVER_GET_VERSIONA WM_CAP_DRIVER_GET_VERSION; +} + +enum { + WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14, + WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20, + WM_CAP_FILE_GET_CAPTURE_FILEA = WM_CAP_START + 21, + WM_CAP_FILE_SAVEASA = WM_CAP_START + 23, + WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25, + + WM_CAP_FILE_SET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 20, + WM_CAP_FILE_GET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 21, + WM_CAP_FILE_SAVEASW = WM_CAP_UNICODE_START + 23, + WM_CAP_FILE_SAVEDIBW = WM_CAP_UNICODE_START + 25, +} + +version(Unicode) { + alias WM_CAP_FILE_SET_CAPTURE_FILEW WM_CAP_FILE_SET_CAPTURE_FILE; + alias WM_CAP_FILE_GET_CAPTURE_FILEW WM_CAP_FILE_GET_CAPTURE_FILE; + alias WM_CAP_FILE_SAVEASW WM_CAP_FILE_SAVEAS; + alias WM_CAP_FILE_SAVEDIBW WM_CAP_FILE_SAVEDIB; +} else { // Unicode + alias WM_CAP_FILE_SET_CAPTURE_FILEA WM_CAP_FILE_SET_CAPTURE_FILE; + alias WM_CAP_FILE_GET_CAPTURE_FILEA WM_CAP_FILE_GET_CAPTURE_FILE; + alias WM_CAP_FILE_SAVEASA WM_CAP_FILE_SAVEAS; + alias WM_CAP_FILE_SAVEDIBA WM_CAP_FILE_SAVEDIB; +} + +enum { + WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22, + WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24, + WM_CAP_EDIT_COPY = WM_CAP_START + 30, + WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35, + WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36, + WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41, + WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42, + WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43, + WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44, + WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45, + WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46, + WM_CAP_SET_PREVIEW = WM_CAP_START + 50, + WM_CAP_SET_OVERLAY = WM_CAP_START + 51, + WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52, + WM_CAP_SET_SCALE = WM_CAP_START + 53, + WM_CAP_GET_STATUS = WM_CAP_START + 54, + WM_CAP_SET_SCROLL = WM_CAP_START + 55, + WM_CAP_GRAB_FRAME = WM_CAP_START + 60, + WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61, + WM_CAP_SEQUENCE = WM_CAP_START + 62, + WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63, + WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64, + WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65, + WM_CAP_SET_MCI_DEVICEA = WM_CAP_START + 66, + WM_CAP_GET_MCI_DEVICEA = WM_CAP_START + 67, + + WM_CAP_SET_MCI_DEVICEW = WM_CAP_UNICODE_START + 66, + WM_CAP_GET_MCI_DEVICEW = WM_CAP_UNICODE_START + 67, +} + +version(Unicode) { + alias WM_CAP_SET_MCI_DEVICEW WM_CAP_SET_MCI_DEVICE; + alias WM_CAP_GET_MCI_DEVICEW WM_CAP_GET_MCI_DEVICE; +} else { // Unicode + alias WM_CAP_SET_MCI_DEVICEA WM_CAP_SET_MCI_DEVICE; + alias WM_CAP_GET_MCI_DEVICEA WM_CAP_GET_MCI_DEVICE; +} + +enum { + WM_CAP_STOP = WM_CAP_START + 68, + WM_CAP_ABORT = WM_CAP_START + 69, + WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70, + WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71, + WM_CAP_SINGLE_FRAME = WM_CAP_START + 72, + WM_CAP_PAL_OPENA = WM_CAP_START + 80, + WM_CAP_PAL_SAVEA = WM_CAP_START + 81, + + WM_CAP_PAL_OPENW = WM_CAP_UNICODE_START + 80, + WM_CAP_PAL_SAVEW = WM_CAP_UNICODE_START + 81, +} + +version(Unicode) { + alias WM_CAP_PAL_OPENW WM_CAP_PAL_OPEN; + alias WM_CAP_PAL_SAVEW WM_CAP_PAL_SAVE; +} else { // Unicode + alias WM_CAP_PAL_OPENA WM_CAP_PAL_OPEN; + alias WM_CAP_PAL_SAVEA WM_CAP_PAL_SAVE; +} + +enum { + WM_CAP_PAL_PASTE = WM_CAP_START + 82, + WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83, + WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84, + WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85, + WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW, + WM_CAP_END = WM_CAP_UNICODE_END, +} + +/** + * message wrapper + */ + +BOOL capSetCallbackOnError(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_ERROR, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnStatus(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_STATUS, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnYield(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_YIELD, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnFrame(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_FRAME, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnVideoStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnWaveStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnCapControl(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, cast(LPARAM)fpProc); } + +BOOL capSetUserData(HWND hWnd, LPARAM lUser) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_USER_DATA, 0, lUser); } +BOOL capGetUserData(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_USER_DATA, 0, 0); } + +BOOL capDriverConnect(HWND hWnd, WPARAM i) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_CONNECT, i, 0); } +BOOL capDriverDisconnect(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_DISCONNECT, 0, 0); } +BOOL capDriverGetName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_NAME, wSize, cast(LPARAM)szName); } +BOOL capDriverGetVersion(HWND hWnd, LPTSTR szVer, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_VERSION, wSize, cast(LPARAM)szVer); } +BOOL capDriverGetCaps(HWND hWnd, LPCAPDRIVERCAPS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_CAPS, wSize, cast(LPARAM)s); } + +BOOL capFileSetCaptureFile(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, cast(LPARAM)szName); } +BOOL capFileGetCaptureFile(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_GET_CAPTURE_FILE, wSize, cast(LPARAM)szName); } +BOOL capFileAlloc(HWND hWnd, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_ALLOCATE, wSize, 0); } +BOOL capFileSaveAs(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEAS, 0, cast(LPARAM)szName); } +BOOL capFileSetInfoChunk(HWND hWnd, LPCAPINFOCHUNK lpInfoChunk) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_INFOCHUNK, 0, cast(LPARAM)lpInfoChunk); } +BOOL capFileSaveDIB(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEDIB, 0, cast(LPARAM)szName); } + +BOOL capEditCopy(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_EDIT_COPY, 0, 0); } + +BOOL capSetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_AUDIOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetAudioFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, 0, 0); } + +BOOL capDlgVideoFormat(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0); } +BOOL capDlgVideoSource(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0); } +BOOL capDlgVideoDisplay(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0); } +BOOL capDlgVideoCompression(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0); } + +DWORD capGetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetVideoFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, 0, 0); } +BOOL capSetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_VIDEOFORMAT, wSize, cast(LPARAM)s); } + +BOOL capPreview(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEW, cast(WPARAM)f, 0); } +BOOL capPreviewRate(HWND hWnd, WPARAM wMS) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEWRATE, wMS, 0); } +BOOL capOverlay(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_OVERLAY, cast(WPARAM)f, 0); } +BOOL capPreviewScale(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCALE, cast(WPARAM)f, 0); } +BOOL capGetStatus(HWND hWnd, LPCAPSTATUS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_STATUS, wSize, cast(LPARAM)s); } +BOOL capSetScrollPos(HWND hWnd, LPPOINT lpP) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCROLL, 0, cast(LPARAM)lpP); } + +BOOL capGrabFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME, 0, 0); } +BOOL capGrabFrameNoStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0); } + +BOOL capCaptureSequence(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE, 0, 0); } +BOOL capCaptureSequenceNoFile(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE_NOFILE, 0, 0); } +BOOL capCaptureStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_STOP, 0, 0); } +BOOL capCaptureAbort(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_ABORT, 0, 0); } + +BOOL capCaptureSingleFrameOpen(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0); } +BOOL capCaptureSingleFrameClose(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0); } +BOOL capCaptureSingleFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME, 0, 0); } + +BOOL capCaptureGetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } +BOOL capCaptureSetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } + +BOOL capSetMCIDeviceName(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_MCI_DEVICE, 0, cast(LPARAM)szName); } +BOOL capGetMCIDeviceName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_MCI_DEVICE, wSize, cast(LPARAM)szName); } + +BOOL capPaletteOpen(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_OPEN, 0, cast(LPARAM)szName); } +BOOL capPaletteSave(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_SAVE, 0, cast(LPARAM)szName); } +BOOL capPalettePaste(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_PASTE, 0, 0); } +BOOL capPaletteAuto(HWND hWnd, WPARAM iFrames, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors); } +BOOL capPaletteManual(HWND hWnd, WPARAM fGrab, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors); } + +/** + * structs + */ + +struct CAPDRIVERCAPS { + UINT wDeviceIndex; + BOOL fHasOverlay; + BOOL fHasDlgVideoSource; + BOOL fHasDlgVideoFormat; + BOOL fHasDlgVideoDisplay; + BOOL fCaptureInitialized; + BOOL fDriverSuppliesPalettes; + HANDLE hVideoIn; + HANDLE hVideoOut; + HANDLE hVideoExtIn; + HANDLE hVideoExtOut; +} +alias CAPDRIVERCAPS* PCAPDRIVERCAPS, LPCAPDRIVERCAPS; + +struct CAPSTATUS { + UINT uiImageWidth; + UINT uiImageHeight; + BOOL fLiveWindow; + BOOL fOverlayWindow; + BOOL fScale; + POINT ptScroll; + BOOL fUsingDefaultPalette; + BOOL fAudioHardware; + BOOL fCapFileExists; + DWORD dwCurrentVideoFrame; + DWORD dwCurrentVideoFramesDropped; + DWORD dwCurrentWaveSamples; + DWORD dwCurrentTimeElapsedMS; + HPALETTE hPalCurrent; + BOOL fCapturingNow; + DWORD dwReturn; + UINT wNumVideoAllocated; + UINT wNumAudioAllocated; +} +alias CAPSTATUS* PCAPSTATUS, LPCAPSTATUS; + +struct CAPTUREPARMS { + DWORD dwRequestMicroSecPerFrame; + BOOL fMakeUserHitOKToCapture; + UINT wPercentDropForError; + BOOL fYield; + DWORD dwIndexSize; + UINT wChunkGranularity; + BOOL fUsingDOSMemory; + UINT wNumVideoRequested; + BOOL fCaptureAudio; + UINT wNumAudioRequested; + UINT vKeyAbort; + BOOL fAbortLeftMouse; + BOOL fAbortRightMouse; + BOOL fLimitEnabled; + UINT wTimeLimit; + BOOL fMCIControl; + BOOL fStepMCIDevice; + DWORD dwMCIStartTime; + DWORD dwMCIStopTime; + BOOL fStepCaptureAt2x; + UINT wStepCaptureAverageFrames; + DWORD dwAudioBufferSize; + BOOL fDisableWriteCache; + UINT AVStreamMaster; +} +alias CAPTUREPARMS* PCAPTUREPARMS, LPCAPTUREPARMS; + +const AVSTREAMMASTER_AUDIO = 0; +const AVSTREAMMASTER_NONE = 1; + +struct CAPINFOCHUNK { + FOURCC fccInfoID; + LPVOID lpData; + LONG cbData; +} +alias CAPINFOCHUNK* PCAPINFOCHUNK, LPCAPINFOCHUNK; + +// Callback Definitions + +extern (Windows) { + alias LRESULT function(HWND hWnd) CAPYIELDCALLBACK; + alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPSTATUSCALLBACKW; + alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPERRORCALLBACKW; + alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPSTATUSCALLBACKA; + alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPERRORCALLBACKA; +} + +version(Unicode) { + alias CAPSTATUSCALLBACKW CAPSTATUSCALLBACK; + alias CAPERRORCALLBACKW CAPERRORCALLBACK; +} else { // Unicode + alias CAPSTATUSCALLBACKA CAPSTATUSCALLBACK; + alias CAPERRORCALLBACKA CAPERRORCALLBACK; +} + +extern (Windows) { + alias LRESULT function(HWND hWnd, LPVIDEOHDR lpVHdr) CAPVIDEOCALLBACK; + alias LRESULT function(HWND hWnd, LPWAVEHDR lpWHdr) CAPWAVECALLBACK; + alias LRESULT function(HWND hWnd, int nState) CAPCONTROLCALLBACK; +} + +// CapControlCallback states +const CONTROLCALLBACK_PREROLL = 1; +const CONTROLCALLBACK_CAPTURING = 2; + +extern (Windows) { + HWND capCreateCaptureWindowA(LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); + BOOL capGetDriverDescriptionA(UINT wDriverIndex, LPSTR lpszName, int cbName, LPSTR lpszVer, int cbVer); + HWND capCreateCaptureWindowW(LPCWSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); + BOOL capGetDriverDescriptionW(UINT wDriverIndex, LPWSTR lpszName, int cbName, LPWSTR lpszVer, int cbVer); +} + +version(Unicode) { + alias capCreateCaptureWindowW capCreateCaptureWindow; + alias capGetDriverDescriptionW capGetDriverDescription; +} else { // Unicode + alias capCreateCaptureWindowA capCreateCaptureWindow; + alias capGetDriverDescriptionA capGetDriverDescription; +} + +// New Information chunk IDs +const infotypeDIGITIZATION_TIME = mmioFOURCC!('I', 'D', 'I', 'T'); +const infotypeSMPTE_TIME = mmioFOURCC!('I', 'S', 'M', 'P'); + +// status and error callbacks +enum { + IDS_CAP_BEGIN = 300, + IDS_CAP_END = 301, + + IDS_CAP_INFO = 401, + IDS_CAP_OUTOFMEM = 402, + IDS_CAP_FILEEXISTS = 403, + IDS_CAP_ERRORPALOPEN = 404, + IDS_CAP_ERRORPALSAVE = 405, + IDS_CAP_ERRORDIBSAVE = 406, + IDS_CAP_DEFAVIEXT = 407, + IDS_CAP_DEFPALEXT = 408, + IDS_CAP_CANTOPEN = 409, + IDS_CAP_SEQ_MSGSTART = 410, + IDS_CAP_SEQ_MSGSTOP = 411, + + IDS_CAP_VIDEDITERR = 412, + IDS_CAP_READONLYFILE = 413, + IDS_CAP_WRITEERROR = 414, + IDS_CAP_NODISKSPACE = 415, + IDS_CAP_SETFILESIZE = 416, + IDS_CAP_SAVEASPERCENT = 417, + + IDS_CAP_DRIVER_ERROR = 418, + + IDS_CAP_WAVE_OPEN_ERROR = 419, + IDS_CAP_WAVE_ALLOC_ERROR = 420, + IDS_CAP_WAVE_PREPARE_ERROR = 421, + IDS_CAP_WAVE_ADD_ERROR = 422, + IDS_CAP_WAVE_SIZE_ERROR = 423, + + IDS_CAP_VIDEO_OPEN_ERROR = 424, + IDS_CAP_VIDEO_ALLOC_ERROR = 425, + IDS_CAP_VIDEO_PREPARE_ERROR = 426, + IDS_CAP_VIDEO_ADD_ERROR = 427, + IDS_CAP_VIDEO_SIZE_ERROR = 428, + + IDS_CAP_FILE_OPEN_ERROR = 429, + IDS_CAP_FILE_WRITE_ERROR = 430, + IDS_CAP_RECORDING_ERROR = 431, + IDS_CAP_RECORDING_ERROR2 = 432, + IDS_CAP_AVI_INIT_ERROR = 433, + IDS_CAP_NO_FRAME_CAP_ERROR = 434, + IDS_CAP_NO_PALETTE_WARN = 435, + IDS_CAP_MCI_CONTROL_ERROR = 436, + IDS_CAP_MCI_CANT_STEP_ERROR = 437, + IDS_CAP_NO_AUDIO_CAP_ERROR = 438, + IDS_CAP_AVI_DRAWDIB_ERROR = 439, + IDS_CAP_COMPRESSOR_ERROR = 440, + IDS_CAP_AUDIO_DROP_ERROR = 441, + IDS_CAP_AUDIO_DROP_COMPERROR = 442, + + IDS_CAP_STAT_LIVE_MODE = 500, + IDS_CAP_STAT_OVERLAY_MODE = 501, + IDS_CAP_STAT_CAP_INIT = 502, + IDS_CAP_STAT_CAP_FINI = 503, + IDS_CAP_STAT_PALETTE_BUILD = 504, + IDS_CAP_STAT_OPTPAL_BUILD = 505, + IDS_CAP_STAT_I_FRAMES = 506, + IDS_CAP_STAT_L_FRAMES = 507, + IDS_CAP_STAT_CAP_L_FRAMES = 508, + IDS_CAP_STAT_CAP_AUDIO = 509, + IDS_CAP_STAT_VIDEOCURRENT = 510, + IDS_CAP_STAT_VIDEOAUDIO = 511, + IDS_CAP_STAT_VIDEOONLY = 512, + IDS_CAP_STAT_FRAMESDROPPED = 513, +} + +/** + * FilePreview dialog. + */ + +extern (Windows) { + BOOL GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn); + BOOL GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn); + BOOL GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn); + BOOL GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn); +} + +version(Unicode) { + alias GetOpenFileNamePreviewW GetOpenFileNamePreview; + alias GetSaveFileNamePreviewW GetSaveFileNamePreview; +} else { // Unicode + alias GetOpenFileNamePreviewA GetOpenFileNamePreview; + alias GetSaveFileNamePreviewA GetSaveFileNamePreview; +} diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index d79c0b4fb9..eb966679fd 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -1,2798 +1,2798 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.10 - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winbase.d) - */ -module core.sys.windows.winbase; -pragma(lib, "kernel32"); - -/** -Translation Notes: -The following macros are obsolete, and have no effect. - -LockSegment(w), MakeProcInstance(p, i), UnlockResource(h), UnlockSegment(w) -FreeModule(m), FreeProcInstance(p), GetFreeSpace(w), DefineHandleTable(w) -SetSwapAreaSize(w), LimitEmsPages(n), Yield() - -// The following Win16 functions are obselete in Win32. - - int _hread(HFILE, LPVOID, int); - int _hwrite(HFILE, LPCSTR, int); - HFILE _lclose(HFILE); - HFILE _lcreat(LPCSTR, int); - LONG _llseek(HFILE, LONG, int); - HFILE _lopen(LPCSTR, int); - UINT _lread(HFILE, LPVOID, UINT); - UINT _lwrite(HFILE, LPCSTR, UINT); - SIZE_T GlobalCompact(DWORD); - VOID GlobalFix(HGLOBAL); -* MSDN contradicts itself on GlobalFlags: -* "This function is provided only for compatibility with 16-bit versions of Windows." -* but also requires Windows 2000 or above - UINT GlobalFlags(HGLOBAL); - VOID GlobalUnfix(HGLOBAL); - BOOL GlobalUnWire(HGLOBAL); - PVOID GlobalWire(HGLOBAL); - SIZE_T LocalCompact(UINT); - UINT LocalFlags(HLOCAL); - SIZE_T LocalShrink(HLOCAL, UINT); - -// These are not required for DMD. - -//FIXME: -// #ifndef UNDER_CE - int WinMain(HINSTANCE, HINSTANCE, LPSTR, int); -#else - int WinMain(HINSTANCE, HINSTANCE, LPWSTR, int); -#endif -int wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); - -*/ - -import core.sys.windows.windef, core.sys.windows.winver; -private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winnt; - -// FIXME: -alias void va_list; - - -/+ -//-------------------------------------- -// These functions are problematic - -version(UseNtoSKernel) {}else { - /* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h - as __fastcall functions, but are exported from kernel32.dll as __stdcall */ - static if (_WIN32_WINNT >= 0x501) { - VOID InitializeSListHead(PSLIST_HEADER); - } - LONG InterlockedCompareExchange(LPLONG, LONG, LONG); - // PVOID WINAPI InterlockedCompareExchangePointer(PVOID*, PVOID, PVOID); - (PVOID)InterlockedCompareExchange((LPLONG)(d) (PVOID)InterlockedCompareExchange((LPLONG)(d), (LONG)(e), (LONG)(c)) - LONG InterlockedDecrement(LPLONG); - LONG InterlockedExchange(LPLONG, LONG); - // PVOID WINAPI InterlockedExchangePointer(PVOID*, PVOID); - (PVOID)InterlockedExchange((LPLONG)((PVOID)InterlockedExchange((LPLONG)(t), (LONG)(v)) - LONG InterlockedExchangeAdd(LPLONG, LONG); - - static if (_WIN32_WINNT >= 0x501) { - PSLIST_ENTRY InterlockedFlushSList(PSLIST_HEADER); - } - LONG InterlockedIncrement(LPLONG); - static if (_WIN32_WINNT >= 0x501) { - PSLIST_ENTRY InterlockedPopEntrySList(PSLIST_HEADER); - PSLIST_ENTRY InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); - } -} // #endif // __USE_NTOSKRNL__ -//-------------------------------------- -+/ - -// COMMPROP structure, used by GetCommProperties() -// ----------------------------------------------- - -// Communications provider type -enum : DWORD { - PST_UNSPECIFIED, - PST_RS232, - PST_PARALLELPORT, - PST_RS422, - PST_RS423, - PST_RS449, - PST_MODEM, // = 6 - PST_FAX = 0x0021, - PST_SCANNER = 0x0022, - PST_NETWORK_BRIDGE = 0x0100, - PST_LAT = 0x0101, - PST_TCPIP_TELNET = 0x0102, - PST_X25 = 0x0103 -} - -// Max baud rate -enum : DWORD { - BAUD_075 = 0x00000001, - BAUD_110 = 0x00000002, - BAUD_134_5 = 0x00000004, - BAUD_150 = 0x00000008, - BAUD_300 = 0x00000010, - BAUD_600 = 0x00000020, - BAUD_1200 = 0x00000040, - BAUD_1800 = 0x00000080, - BAUD_2400 = 0x00000100, - BAUD_4800 = 0x00000200, - BAUD_7200 = 0x00000400, - BAUD_9600 = 0x00000800, - BAUD_14400 = 0x00001000, - BAUD_19200 = 0x00002000, - BAUD_38400 = 0x00004000, - BAUD_56K = 0x00008000, - BAUD_128K = 0x00010000, - BAUD_115200 = 0x00020000, - BAUD_57600 = 0x00040000, - BAUD_USER = 0x10000000 -} - -// Comm capabilities -enum : DWORD { - PCF_DTRDSR = 0x0001, - PCF_RTSCTS = 0x0002, - PCF_RLSD = 0x0004, - PCF_PARITY_CHECK = 0x0008, - PCF_XONXOFF = 0x0010, - PCF_SETXCHAR = 0x0020, - PCF_TOTALTIMEOUTS = 0x0040, - PCF_INTTIMEOUTS = 0x0080, - PCF_SPECIALCHARS = 0x0100, - PCF_16BITMODE = 0x0200 -} - -enum : DWORD { - SP_PARITY = 1, - SP_BAUD = 2, - SP_DATABITS = 4, - SP_STOPBITS = 8, - SP_HANDSHAKING = 16, - SP_PARITY_CHECK = 32, - SP_RLSD = 64 -} - -enum : DWORD { - DATABITS_5 = 1, - DATABITS_6 = 2, - DATABITS_7 = 4, - DATABITS_8 = 8, - DATABITS_16 = 16, - DATABITS_16X = 32 -} - -enum : WORD { - STOPBITS_10 = 0x0001, - STOPBITS_15 = 0x0002, - STOPBITS_20 = 0x0004, - PARITY_NONE = 0x0100, - PARITY_ODD = 0x0200, - PARITY_EVEN = 0x0400, - PARITY_MARK = 0x0800, - PARITY_SPACE = 0x1000 -} - -// used by dwServiceMask -enum SP_SERIALCOMM = 1; - -struct COMMPROP { - WORD wPacketLength; - WORD wPacketVersion; - DWORD dwServiceMask; - DWORD dwReserved1; - DWORD dwMaxTxQueue; - DWORD dwMaxRxQueue; - DWORD dwMaxBaud; - DWORD dwProvSubType; - DWORD dwProvCapabilities; - DWORD dwSettableParams; - DWORD dwSettableBaud; - WORD wSettableData; - WORD wSettableStopParity; - DWORD dwCurrentTxQueue; - DWORD dwCurrentRxQueue; - DWORD dwProvSpec1; - DWORD dwProvSpec2; - WCHAR _wcProvChar; - - WCHAR* wcProvChar() { return &_wcProvChar; } -} -alias COMMPROP* LPCOMMPROP; - -// ---------- - -// for DEBUG_EVENT -enum : DWORD { - EXCEPTION_DEBUG_EVENT = 1, - CREATE_THREAD_DEBUG_EVENT, - CREATE_PROCESS_DEBUG_EVENT, - EXIT_THREAD_DEBUG_EVENT, - EXIT_PROCESS_DEBUG_EVENT, - LOAD_DLL_DEBUG_EVENT, - UNLOAD_DLL_DEBUG_EVENT, - OUTPUT_DEBUG_STRING_EVENT, - RIP_EVENT -} - -const HFILE HFILE_ERROR = cast(HFILE) (-1); - -// for SetFilePointer() -enum : DWORD { - FILE_BEGIN = 0, - FILE_CURRENT = 1, - FILE_END = 2 -} -const DWORD INVALID_SET_FILE_POINTER = -1; - - -// for OpenFile() -deprecated enum : UINT { - OF_READ = 0, - OF_WRITE = 0x0001, - OF_READWRITE = 0x0002, - OF_SHARE_COMPAT = 0, - OF_SHARE_EXCLUSIVE = 0x0010, - OF_SHARE_DENY_WRITE = 0x0020, - OF_SHARE_DENY_READ = 0x0030, - OF_SHARE_DENY_NONE = 0x0040, - OF_PARSE = 0x0100, - OF_DELETE = 0x0200, - OF_VERIFY = 0x0400, - OF_CANCEL = 0x0800, - OF_CREATE = 0x1000, - OF_PROMPT = 0x2000, - OF_EXIST = 0x4000, - OF_REOPEN = 0x8000 -} - -enum : DWORD { - NMPWAIT_NOWAIT = 1, - NMPWAIT_WAIT_FOREVER = -1, - NMPWAIT_USE_DEFAULT_WAIT = 0 -} - -// for ClearCommError() -const DWORD - CE_RXOVER = 0x0001, - CE_OVERRUN = 0x0002, - CE_RXPARITY = 0x0004, - CE_FRAME = 0x0008, - CE_BREAK = 0x0010, - CE_TXFULL = 0x0100, - CE_PTO = 0x0200, - CE_IOE = 0x0400, - CE_DNS = 0x0800, - CE_OOP = 0x1000, - CE_MODE = 0x8000; - -// for CopyProgressRoutine callback. -enum : DWORD { - PROGRESS_CONTINUE = 0, - PROGRESS_CANCEL = 1, - PROGRESS_STOP = 2, - PROGRESS_QUIET = 3 -} - -enum : DWORD { - CALLBACK_CHUNK_FINISHED = 0, - CALLBACK_STREAM_SWITCH = 1 -} - -// CopyFileEx() -enum : DWORD { - COPY_FILE_FAIL_IF_EXISTS = 1, - COPY_FILE_RESTARTABLE = 2 -} - -enum : DWORD { - FILE_MAP_COPY = 1, - FILE_MAP_WRITE = 2, - FILE_MAP_READ = 4, - FILE_MAP_ALL_ACCESS = 0x000F001F -} - -enum : DWORD { - MUTEX_ALL_ACCESS = 0x001f0001, - MUTEX_MODIFY_STATE = 0x00000001, - SEMAPHORE_ALL_ACCESS = 0x001f0003, - SEMAPHORE_MODIFY_STATE = 0x00000002, - EVENT_ALL_ACCESS = 0x001f0003, - EVENT_MODIFY_STATE = 0x00000002 -} - -// CreateNamedPipe() -enum : DWORD { - PIPE_ACCESS_INBOUND = 1, - PIPE_ACCESS_OUTBOUND = 2, - PIPE_ACCESS_DUPLEX = 3 -} - -const DWORD - PIPE_TYPE_BYTE = 0, - PIPE_TYPE_MESSAGE = 4, - PIPE_READMODE_BYTE = 0, - PIPE_READMODE_MESSAGE = 2, - PIPE_WAIT = 0, - PIPE_NOWAIT = 1; - -// GetNamedPipeInfo() -const DWORD - PIPE_CLIENT_END = 0, - PIPE_SERVER_END = 1; - -const DWORD PIPE_UNLIMITED_INSTANCES = 255; - -// dwCreationFlags for CreateProcess() and CreateProcessAsUser() -enum : DWORD { - DEBUG_PROCESS = 0x00000001, - DEBUG_ONLY_THIS_PROCESS = 0x00000002, - CREATE_SUSPENDED = 0x00000004, - DETACHED_PROCESS = 0x00000008, - CREATE_NEW_CONSOLE = 0x00000010, - NORMAL_PRIORITY_CLASS = 0x00000020, - IDLE_PRIORITY_CLASS = 0x00000040, - HIGH_PRIORITY_CLASS = 0x00000080, - REALTIME_PRIORITY_CLASS = 0x00000100, - CREATE_NEW_PROCESS_GROUP = 0x00000200, - CREATE_UNICODE_ENVIRONMENT = 0x00000400, - CREATE_SEPARATE_WOW_VDM = 0x00000800, - CREATE_SHARED_WOW_VDM = 0x00001000, - CREATE_FORCEDOS = 0x00002000, - BELOW_NORMAL_PRIORITY_CLASS = 0x00004000, - ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000, - CREATE_BREAKAWAY_FROM_JOB = 0x01000000, - CREATE_WITH_USERPROFILE = 0x02000000, - CREATE_DEFAULT_ERROR_MODE = 0x04000000, - CREATE_NO_WINDOW = 0x08000000, - PROFILE_USER = 0x10000000, - PROFILE_KERNEL = 0x20000000, - PROFILE_SERVER = 0x40000000 -} - -const DWORD CONSOLE_TEXTMODE_BUFFER = 1; - -// CreateFile() -enum : DWORD { - CREATE_NEW = 1, - CREATE_ALWAYS, - OPEN_EXISTING, - OPEN_ALWAYS, - TRUNCATE_EXISTING -} - -// CreateFile() -const DWORD - FILE_FLAG_WRITE_THROUGH = 0x80000000, - FILE_FLAG_OVERLAPPED = 0x40000000, - FILE_FLAG_NO_BUFFERING = 0x20000000, - FILE_FLAG_RANDOM_ACCESS = 0x10000000, - FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000, - FILE_FLAG_DELETE_ON_CLOSE = 0x04000000, - FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, - FILE_FLAG_POSIX_SEMANTICS = 0x01000000, - FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000, - FILE_FLAG_OPEN_NO_RECALL = 0x00100000; - -static if (_WIN32_WINNT >= 0x500) { - const DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; -} - -// for CreateFile() -const DWORD - SECURITY_ANONYMOUS = SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16, - SECURITY_IDENTIFICATION = SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16, - SECURITY_IMPERSONATION = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16, - SECURITY_DELEGATION = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation<<16, - SECURITY_CONTEXT_TRACKING = 0x00040000, - SECURITY_EFFECTIVE_ONLY = 0x00080000, - SECURITY_SQOS_PRESENT = 0x00100000, - SECURITY_VALID_SQOS_FLAGS = 0x001F0000; - - -// Thread exit code -const DWORD STILL_ACTIVE = 0x103; - -/* ??? The only documentation of this seems to be about Windows CE and to - * state what _doesn't_ support it. - */ -const DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; - -// GetBinaryType() -enum : DWORD { - SCS_32BIT_BINARY = 0, - SCS_DOS_BINARY, - SCS_WOW_BINARY, - SCS_PIF_BINARY, - SCS_POSIX_BINARY, - SCS_OS216_BINARY -} - -const size_t - MAX_COMPUTERNAME_LENGTH = 15, - HW_PROFILE_GUIDLEN = 39, - MAX_PROFILE_LEN = 80; - -// HW_PROFILE_INFO -const DWORD - DOCKINFO_UNDOCKED = 1, - DOCKINFO_DOCKED = 2, - DOCKINFO_USER_SUPPLIED = 4, - DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED, - DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED; - -// DriveType(), RealDriveType() -enum : int { - DRIVE_UNKNOWN = 0, - DRIVE_NO_ROOT_DIR, - DRIVE_REMOVABLE, - DRIVE_FIXED, - DRIVE_REMOTE, - DRIVE_CDROM, - DRIVE_RAMDISK -} - -// GetFileType() -enum : DWORD { - FILE_TYPE_UNKNOWN = 0, - FILE_TYPE_DISK, - FILE_TYPE_CHAR, - FILE_TYPE_PIPE, - FILE_TYPE_REMOTE = 0x8000 -} - -// Get/SetHandleInformation() -const DWORD - HANDLE_FLAG_INHERIT = 0x01, - HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x02; - -enum : DWORD { - STD_INPUT_HANDLE = 0xFFFFFFF6, - STD_OUTPUT_HANDLE = 0xFFFFFFF5, - STD_ERROR_HANDLE = 0xFFFFFFF4 -} - -enum HANDLE INVALID_HANDLE_VALUE = cast(HANDLE) (-1); - -enum : DWORD { - GET_TAPE_MEDIA_INFORMATION = 0, - GET_TAPE_DRIVE_INFORMATION = 1 -} - -enum : DWORD { - SET_TAPE_MEDIA_INFORMATION = 0, - SET_TAPE_DRIVE_INFORMATION = 1 -} - -// SetThreadPriority()/GetThreadPriority() -enum : int { - THREAD_PRIORITY_IDLE = -15, - THREAD_PRIORITY_LOWEST = -2, - THREAD_PRIORITY_BELOW_NORMAL = -1, - THREAD_PRIORITY_NORMAL = 0, - THREAD_PRIORITY_ABOVE_NORMAL = 1, - THREAD_PRIORITY_HIGHEST = 2, - THREAD_PRIORITY_TIME_CRITICAL = 15, - THREAD_PRIORITY_ERROR_RETURN = 2147483647 -} - -enum : DWORD { - TIME_ZONE_ID_UNKNOWN, - TIME_ZONE_ID_STANDARD, - TIME_ZONE_ID_DAYLIGHT, - TIME_ZONE_ID_INVALID = 0xFFFFFFFF -} - -const DWORD - FS_CASE_SENSITIVE = 1, - FS_CASE_IS_PRESERVED = 2, - FS_UNICODE_STORED_ON_DISK = 4, - FS_PERSISTENT_ACLS = 8, - FS_FILE_COMPRESSION = 16, - FS_VOL_IS_COMPRESSED = 32768; - -// Flags for GlobalAlloc -const UINT - GMEM_FIXED = 0, - GMEM_MOVEABLE = 0x0002, - GMEM_ZEROINIT = 0x0040, - GPTR = 0x0040, - GHND = 0x0042, - GMEM_MODIFY = 0x0080, // used only for GlobalRealloc - GMEM_VALID_FLAGS = 0x7F72; - -/+ // Obselete flags (Win16 only) - GMEM_NOCOMPACT=16; - GMEM_NODISCARD=32; - GMEM_DISCARDABLE=256; - GMEM_NOT_BANKED=4096; - GMEM_LOWER=4096; - GMEM_SHARE=8192; - GMEM_DDESHARE=8192; - - GMEM_LOCKCOUNT=255; - -// for GlobalFlags() - GMEM_DISCARDED = 16384; - GMEM_INVALID_HANDLE = 32768; - - GMEM_NOTIFY = 16384; -+/ - -const UINT - LMEM_FIXED = 0, - LMEM_MOVEABLE = 0x0002, - LMEM_NONZEROLPTR = 0, - NONZEROLPTR = 0, - LMEM_NONZEROLHND = 0x0002, - NONZEROLHND = 0x0002, - LMEM_DISCARDABLE = 0x0F00, - LMEM_NOCOMPACT = 0x0010, - LMEM_NODISCARD = 0x0020, - LMEM_ZEROINIT = 0x0040, - LPTR = 0x0040, - LHND = 0x0042, - LMEM_MODIFY = 0x0080, - LMEM_LOCKCOUNT = 0x00FF, - LMEM_DISCARDED = 0x4000, - LMEM_INVALID_HANDLE = 0x8000; - - - -// used in EXCEPTION_RECORD -enum : DWORD { - STATUS_WAIT_0 = 0, - STATUS_ABANDONED_WAIT_0 = 0x00000080, - STATUS_USER_APC = 0x000000C0, - STATUS_TIMEOUT = 0x00000102, - STATUS_PENDING = 0x00000103, - - STATUS_SEGMENT_NOTIFICATION = 0x40000005, - STATUS_GUARD_PAGE_VIOLATION = 0x80000001, - STATUS_DATATYPE_MISALIGNMENT = 0x80000002, - STATUS_BREAKPOINT = 0x80000003, - STATUS_SINGLE_STEP = 0x80000004, - - STATUS_ACCESS_VIOLATION = 0xC0000005, - STATUS_IN_PAGE_ERROR = 0xC0000006, - STATUS_INVALID_HANDLE = 0xC0000008, - - STATUS_NO_MEMORY = 0xC0000017, - STATUS_ILLEGAL_INSTRUCTION = 0xC000001D, - STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025, - STATUS_INVALID_DISPOSITION = 0xC0000026, - STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C, - STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D, - STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E, - STATUS_FLOAT_INEXACT_RESULT = 0xC000008F, - STATUS_FLOAT_INVALID_OPERATION = 0xC0000090, - STATUS_FLOAT_OVERFLOW = 0xC0000091, - STATUS_FLOAT_STACK_CHECK = 0xC0000092, - STATUS_FLOAT_UNDERFLOW = 0xC0000093, - STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094, - STATUS_INTEGER_OVERFLOW = 0xC0000095, - STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096, - STATUS_STACK_OVERFLOW = 0xC00000FD, - STATUS_CONTROL_C_EXIT = 0xC000013A, - STATUS_DLL_INIT_FAILED = 0xC0000142, - STATUS_DLL_INIT_FAILED_LOGOFF = 0xC000026B, - - CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT, - - EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION, - EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT, - EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT, - EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP, - EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED, - EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND, - EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO, - EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT, - EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION, - EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW, - EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK, - EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW, - EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO, - EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW, - EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION, - EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR, - EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION, - EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION, - EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW, - EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION, - EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION, - EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE -} - -// for PROCESS_HEAP_ENTRY -const WORD - PROCESS_HEAP_REGION = 1, - PROCESS_HEAP_UNCOMMITTED_RANGE = 2, - PROCESS_HEAP_ENTRY_BUSY = 4, - PROCESS_HEAP_ENTRY_MOVEABLE = 16, - PROCESS_HEAP_ENTRY_DDESHARE = 32; - -// for LoadLibraryEx() -const DWORD - DONT_RESOLVE_DLL_REFERENCES = 0x01, // not for WinME and earlier - LOAD_LIBRARY_AS_DATAFILE = 0x02, - LOAD_WITH_ALTERED_SEARCH_PATH = 0x08, - LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10; // only for XP and later - -// for LockFile() -const DWORD - LOCKFILE_FAIL_IMMEDIATELY = 1, - LOCKFILE_EXCLUSIVE_LOCK = 2; - -const MAXIMUM_WAIT_OBJECTS = 64; -const MAXIMUM_SUSPEND_COUNT = 0x7F; - -const WAIT_OBJECT_0 = 0; -const WAIT_ABANDONED_0 = 128; - -//const WAIT_TIMEOUT=258; // also in winerror.h - -enum : DWORD { - WAIT_IO_COMPLETION = 0x000000C0, - WAIT_ABANDONED = 0x00000080, - WAIT_FAILED = 0xFFFFFFFF -} - -// PurgeComm() -const DWORD - PURGE_TXABORT = 1, - PURGE_RXABORT = 2, - PURGE_TXCLEAR = 4, - PURGE_RXCLEAR = 8; - -// ReadEventLog() -const DWORD - EVENTLOG_SEQUENTIAL_READ = 1, - EVENTLOG_SEEK_READ = 2, - EVENTLOG_FORWARDS_READ = 4, - EVENTLOG_BACKWARDS_READ = 8; - -// ReportEvent() -enum : WORD { - EVENTLOG_SUCCESS = 0, - EVENTLOG_ERROR_TYPE = 1, - EVENTLOG_WARNING_TYPE = 2, - EVENTLOG_INFORMATION_TYPE = 4, - EVENTLOG_AUDIT_SUCCESS = 8, - EVENTLOG_AUDIT_FAILURE = 16 -} - -// FormatMessage() -const DWORD - FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100, - FORMAT_MESSAGE_IGNORE_INSERTS = 0x0200, - FORMAT_MESSAGE_FROM_STRING = 0x0400, - FORMAT_MESSAGE_FROM_HMODULE = 0x0800, - FORMAT_MESSAGE_FROM_SYSTEM = 0x1000, - FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x2000; - -const DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; - -// also in ddk/ntapi.h -// To restore default error mode, call SetErrorMode(0) -enum { - SEM_FAILCRITICALERRORS = 0x0001, - SEM_NOGPFAULTERRORBOX = 0x0002, - SEM_NOALIGNMENTFAULTEXCEPT = 0x0004, - SEM_NOOPENFILEERRORBOX = 0x8000 -} -// end ntapi.h - -enum { - SLE_ERROR = 1, - SLE_MINORERROR, - SLE_WARNING -} - -const SHUTDOWN_NORETRY = 1; - -// Return type for exception filters. -enum : LONG { - EXCEPTION_EXECUTE_HANDLER = 1, - EXCEPTION_CONTINUE_EXECUTION = -1, - EXCEPTION_CONTINUE_SEARCH = 0 -} - -enum : ATOM { - MAXINTATOM = 0xC000, - INVALID_ATOM = 0 -} - -const IGNORE = 0; -const INFINITE = 0xFFFFFFFF; - -// EscapeCommFunction() -enum { - SETXOFF = 1, - SETXON, - SETRTS, - CLRRTS, - SETDTR, - CLRDTR, // = 6 - SETBREAK = 8, - CLRBREAK = 9 -} - - -// for SetCommMask() -const DWORD - EV_RXCHAR = 0x0001, - EV_RXFLAG = 0x0002, - EV_TXEMPTY = 0x0004, - EV_CTS = 0x0008, - EV_DSR = 0x0010, - EV_RLSD = 0x0020, - EV_BREAK = 0x0040, - EV_ERR = 0x0080, - EV_RING = 0x0100, - EV_PERR = 0x0200, - EV_RX80FULL = 0x0400, - EV_EVENT1 = 0x0800, - EV_EVENT2 = 0x1000; - -// GetCommModemStatus() -const DWORD - MS_CTS_ON = 0x0010, - MS_DSR_ON = 0x0020, - MS_RING_ON = 0x0040, - MS_RLSD_ON = 0x0080; - - -// DCB -enum : BYTE { - NOPARITY = 0, - ODDPARITY, - EVENPARITY, - MARKPARITY, - SPACEPARITY -} -// DCB -enum : BYTE { - ONESTOPBIT = 0, - ONE5STOPBITS, - TWOSTOPBITS -} -// DCB -enum : DWORD { - CBR_110 = 110, - CBR_300 = 300, - CBR_600 = 600, - CBR_1200 = 1200, - CBR_2400 = 2400, - CBR_4800 = 4800, - CBR_9600 = 9600, - CBR_14400 = 14400, - CBR_19200 = 19200, - CBR_38400 = 38400, - CBR_56000 = 56000, - CBR_57600 = 57600, - CBR_115200 = 115200, - CBR_128000 = 128000, - CBR_256000 = 256000 -} -// DCB, 2-bit bitfield -enum { - DTR_CONTROL_DISABLE = 0, - DTR_CONTROL_ENABLE, - DTR_CONTROL_HANDSHAKE -} - -// DCB, 2-bit bitfield -enum { - RTS_CONTROL_DISABLE = 0, - RTS_CONTROL_ENABLE, - RTS_CONTROL_HANDSHAKE, - RTS_CONTROL_TOGGLE, -} - -// WIN32_STREAM_ID -enum : DWORD { - BACKUP_INVALID = 0, - BACKUP_DATA, - BACKUP_EA_DATA, - BACKUP_SECURITY_DATA, - BACKUP_ALTERNATE_DATA, - BACKUP_LINK, - BACKUP_PROPERTY_DATA, - BACKUP_OBJECT_ID, - BACKUP_REPARSE_DATA, - BACKUP_SPARSE_BLOCK -} - -// WIN32_STREAM_ID -enum : DWORD { - STREAM_NORMAL_ATTRIBUTE = 0, - STREAM_MODIFIED_WHEN_READ = 1, - STREAM_CONTAINS_SECURITY = 2, - STREAM_CONTAINS_PROPERTIES = 4 -} - -// STARTUPINFO -const DWORD - STARTF_USESHOWWINDOW = 0x0001, - STARTF_USESIZE = 0x0002, - STARTF_USEPOSITION = 0x0004, - STARTF_USECOUNTCHARS = 0x0008, - STARTF_USEFILLATTRIBUTE = 0x0010, - STARTF_RUNFULLSCREEN = 0x0020, - STARTF_FORCEONFEEDBACK = 0x0040, - STARTF_FORCEOFFFEEDBACK = 0x0080, - STARTF_USESTDHANDLES = 0x0100, - STARTF_USEHOTKEY = 0x0200; - -// ??? -enum { - TC_NORMAL = 0, - TC_HARDERR = 1, - TC_GP_TRAP = 2, - TC_SIGNAL = 3 -} - -/+ These seem to be Windows CE-specific -enum { - AC_LINE_OFFLINE = 0, - AC_LINE_ONLINE = 1, - AC_LINE_BACKUP_POWER = 2, - AC_LINE_UNKNOWN = 255 -} - -enum { - BATTERY_FLAG_HIGH = 1, - BATTERY_FLAG_LOW = 2, - BATTERY_FLAG_CRITICAL = 4, - BATTERY_FLAG_CHARGING = 8, - BATTERY_FLAG_NO_BATTERY = 128, - BATTERY_FLAG_UNKNOWN = 255, - BATTERY_PERCENTAGE_UNKNOWN = 255, - BATTERY_LIFE_UNKNOWN = 0xFFFFFFFF -} -+/ - -// ??? -const HINSTANCE_ERROR = 32; - -// returned from GetFileSize() -const DWORD INVALID_FILE_SIZE = 0xFFFFFFFF; - -const DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; - -// GetWriteWatch() -const DWORD WRITE_WATCH_FLAG_RESET = 1; - -// for LogonUser() -enum : DWORD { - LOGON32_LOGON_INTERACTIVE = 2, - LOGON32_LOGON_NETWORK = 3, - LOGON32_LOGON_BATCH = 4, - LOGON32_LOGON_SERVICE = 5, - LOGON32_LOGON_UNLOCK = 7 -} - -// for LogonUser() -enum : DWORD { - LOGON32_PROVIDER_DEFAULT, - LOGON32_PROVIDER_WINNT35, - LOGON32_PROVIDER_WINNT40, - LOGON32_PROVIDER_WINNT50 -} - -// for MoveFileEx() -const DWORD - MOVEFILE_REPLACE_EXISTING = 1, - MOVEFILE_COPY_ALLOWED = 2, - MOVEFILE_DELAY_UNTIL_REBOOT = 4, - MOVEFILE_WRITE_THROUGH = 8; - -// DefineDosDevice() -const DWORD - DDD_RAW_TARGET_PATH = 1, - DDD_REMOVE_DEFINITION = 2, - DDD_EXACT_MATCH_ON_REMOVE = 4; - -static if (_WIN32_WINNT >= 0x500) { - enum : DWORD { - LOGON32_LOGON_NETWORK_CLEARTEXT = 8, - LOGON32_LOGON_NEW_CREDENTIALS = 9 - } - - // ReplaceFile() - const DWORD - REPLACEFILE_WRITE_THROUGH = 1, - REPLACEFILE_IGNORE_MERGE_ERRORS = 2; -} - -static if (_WIN32_WINNT >= 0x501) { - const DWORD - GET_MODULE_HANDLE_EX_FLAG_PIN = 1, - GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, - GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4; - - // for ACTCTX - const DWORD - ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x01, - ACTCTX_FLAG_LANGID_VALID = 0x02, - ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x04, - ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x08, - ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x10, - ACTCTX_FLAG_APPLICATION_NAME_VALID = 0x20, - ACTCTX_FLAG_HMODULE_VALID = 0x80; - - // DeactivateActCtx() - const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; - // FindActCtxSectionString() - const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 1; - // QueryActCtxW() - const DWORD - QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x04, - QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x08, - QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x10; - - enum { - LOGON_WITH_PROFILE = 1, - LOGON_NETCREDENTIALS_ONLY - } -} - -// ---- - -struct FILETIME { - DWORD dwLowDateTime; - DWORD dwHighDateTime; -} -alias FILETIME* PFILETIME, LPFILETIME; - -struct BY_HANDLE_FILE_INFORMATION { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD dwVolumeSerialNumber; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - DWORD nNumberOfLinks; - DWORD nFileIndexHigh; - DWORD nFileIndexLow; -} -alias BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION; - -struct DCB { - DWORD DCBlength = DCB.sizeof; - DWORD BaudRate; -/+ - DWORD fBinary:1; // Binary Mode (skip EOF check) - DWORD fParity:1; // Enable parity checking - DWORD fOutxCtsFlow:1; // CTS handshaking on output - DWORD fOutxDsrFlow:1; // DSR handshaking on output - DWORD fDtrControl:2; // DTR Flow control - DWORD fDsrSensitivity:1; // DSR Sensitivity - DWORD fTXContinueOnXoff:1; // Continue TX when Xoff sent - DWORD fOutX:1; // Enable output X-ON/X-OFF - DWORD fInX:1; // Enable input X-ON/X-OFF - DWORD fErrorChar:1; // Enable Err Replacement - DWORD fNull:1; // Enable Null stripping - DWORD fRtsControl:2; // Rts Flow control - DWORD fAbortOnError:1; // Abort all reads and writes on Error - DWORD fDummy2:17; // Reserved -+/ - uint _bf; - bool fBinary(bool f) { _bf = (_bf & ~0x0001) | f; return f; } - bool fParity(bool f) { _bf = (_bf & ~0x0002) | (f<<1); return f; } - bool fOutxCtsFlow(bool f) { _bf = (_bf & ~0x0004) | (f<<2); return f; } - bool fOutxDsrFlow(bool f) { _bf = (_bf & ~0x0008) | (f<<3); return f; } - byte fDtrControl(byte x) { _bf = (_bf & ~0x0030) | (x<<4); return cast(byte)(x & 3); } - bool fDsrSensitivity(bool f) { _bf = (_bf & ~0x0040) | (f<<6); return f; } - bool fTXContinueOnXoff(bool f) { _bf = (_bf & ~0x0080) | (f<<7); return f; } - bool fOutX(bool f) { _bf = (_bf & ~0x0100) | (f<<8); return f; } - bool fInX(bool f) { _bf = (_bf & ~0x0200) | (f<<9); return f; } - bool fErrorChar(bool f) { _bf = (_bf & ~0x0400) | (f<<10); return f; } - bool fNull(bool f) { _bf = (_bf & ~0x0800) | (f<<11); return f; } - byte fRtsControl(byte x) { _bf = (_bf & ~0x3000) | (x<<12); return cast(byte)(x & 3); } - bool fAbortOnError(bool f) { _bf = (_bf & ~0x4000) | (f<<14); return f; } - - bool fBinary() { return cast(bool) (_bf & 1); } - bool fParity() { return cast(bool) (_bf & 2); } - bool fOutxCtsFlow() { return cast(bool) (_bf & 4); } - bool fOutxDsrFlow() { return cast(bool) (_bf & 8); } - byte fDtrControl() { return cast(byte) ((_bf & (32+16))>>4); } - bool fDsrSensitivity() { return cast(bool) (_bf & 64); } - bool fTXContinueOnXoff() { return cast(bool) (_bf & 128); } - bool fOutX() { return cast(bool) (_bf & 256); } - bool fInX() { return cast(bool) (_bf & 512); } - bool fErrorChar() { return cast(bool) (_bf & 1024); } - bool fNull() { return cast(bool) (_bf & 2048); } - byte fRtsControl() { return cast(byte) ((_bf & (4096+8192))>>12); } - bool fAbortOnError() { return cast(bool) (_bf & 16384); } - - WORD wReserved; - WORD XonLim; - WORD XoffLim; - BYTE ByteSize; - BYTE Parity; - BYTE StopBits; - char XonChar; - char XoffChar; - char ErrorChar; - char EofChar; - char EvtChar; - WORD wReserved1; -} -alias DCB* LPDCB; - -struct COMMCONFIG { - DWORD dwSize = COMMCONFIG.sizeof; - WORD wVersion; - WORD wReserved; - DCB dcb; - DWORD dwProviderSubType; - DWORD dwProviderOffset; - DWORD dwProviderSize; - WCHAR _wcProviderData; - - WCHAR* wcProviderData() { return &_wcProviderData; } -} -alias COMMCONFIG* LPCOMMCONFIG; - -struct COMMTIMEOUTS { - DWORD ReadIntervalTimeout; - DWORD ReadTotalTimeoutMultiplier; - DWORD ReadTotalTimeoutConstant; - DWORD WriteTotalTimeoutMultiplier; - DWORD WriteTotalTimeoutConstant; -} -alias COMMTIMEOUTS* LPCOMMTIMEOUTS; - -struct COMSTAT { -/+ - DWORD fCtsHold:1; - DWORD fDsrHold:1; - DWORD fRlsdHold:1; - DWORD fXoffHold:1; - DWORD fXoffSent:1; - DWORD fEof:1; - DWORD fTxim:1; - DWORD fReserved:25; -+/ - DWORD _bf; - bool fCtsHold(bool f) { _bf = (_bf & ~1) | f; return f; } - bool fDsrHold(bool f) { _bf = (_bf & ~2) | (f<<1); return f; } - bool fRlsdHold(bool f) { _bf = (_bf & ~4) | (f<<2); return f; } - bool fXoffHold(bool f) { _bf = (_bf & ~8) | (f<<3); return f; } - bool fXoffSent(bool f) { _bf = (_bf & ~16) | (f<<4); return f; } - bool fEof(bool f) { _bf = (_bf & ~32) | (f<<5); return f; } - bool fTxim(bool f) { _bf = (_bf & ~64) | (f<<6); return f; } - - bool fCtsHold() { return cast(bool) (_bf & 1); } - bool fDsrHold() { return cast(bool) (_bf & 2); } - bool fRlsdHold() { return cast(bool) (_bf & 4); } - bool fXoffHold() { return cast(bool) (_bf & 8); } - bool fXoffSent() { return cast(bool) (_bf & 16); } - bool fEof() { return cast(bool) (_bf & 32); } - bool fTxim() { return cast(bool) (_bf & 64); } - - DWORD cbInQue; - DWORD cbOutQue; -} -alias COMSTAT* LPCOMSTAT; - -struct CREATE_PROCESS_DEBUG_INFO { - HANDLE hFile; - HANDLE hProcess; - HANDLE hThread; - LPVOID lpBaseOfImage; - DWORD dwDebugInfoFileOffset; - DWORD nDebugInfoSize; - LPVOID lpThreadLocalBase; - LPTHREAD_START_ROUTINE lpStartAddress; - LPVOID lpImageName; - WORD fUnicode; -} -alias CREATE_PROCESS_DEBUG_INFO* LPCREATE_PROCESS_DEBUG_INFO; - -struct CREATE_THREAD_DEBUG_INFO { - HANDLE hThread; - LPVOID lpThreadLocalBase; - LPTHREAD_START_ROUTINE lpStartAddress; -} -alias CREATE_THREAD_DEBUG_INFO* LPCREATE_THREAD_DEBUG_INFO; - -struct EXCEPTION_DEBUG_INFO { - EXCEPTION_RECORD ExceptionRecord; - DWORD dwFirstChance; -} -alias EXCEPTION_DEBUG_INFO* LPEXCEPTION_DEBUG_INFO; - -struct EXIT_THREAD_DEBUG_INFO { - DWORD dwExitCode; -} -alias EXIT_THREAD_DEBUG_INFO* LPEXIT_THREAD_DEBUG_INFO; - -struct EXIT_PROCESS_DEBUG_INFO { - DWORD dwExitCode; -} -alias EXIT_PROCESS_DEBUG_INFO* LPEXIT_PROCESS_DEBUG_INFO; - -struct LOAD_DLL_DEBUG_INFO { - HANDLE hFile; - LPVOID lpBaseOfDll; - DWORD dwDebugInfoFileOffset; - DWORD nDebugInfoSize; - LPVOID lpImageName; - WORD fUnicode; -} -alias LOAD_DLL_DEBUG_INFO* LPLOAD_DLL_DEBUG_INFO; - -struct UNLOAD_DLL_DEBUG_INFO { - LPVOID lpBaseOfDll; -} -alias UNLOAD_DLL_DEBUG_INFO* LPUNLOAD_DLL_DEBUG_INFO; - -struct OUTPUT_DEBUG_STRING_INFO { - LPSTR lpDebugStringData; - WORD fUnicode; - WORD nDebugStringLength; -} -alias OUTPUT_DEBUG_STRING_INFO* LPOUTPUT_DEBUG_STRING_INFO; - -struct RIP_INFO { - DWORD dwError; - DWORD dwType; -} -alias RIP_INFO* LPRIP_INFO; - -struct DEBUG_EVENT { - DWORD dwDebugEventCode; - DWORD dwProcessId; - DWORD dwThreadId; - union { - EXCEPTION_DEBUG_INFO Exception; - CREATE_THREAD_DEBUG_INFO CreateThread; - CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; - EXIT_THREAD_DEBUG_INFO ExitThread; - EXIT_PROCESS_DEBUG_INFO ExitProcess; - LOAD_DLL_DEBUG_INFO LoadDll; - UNLOAD_DLL_DEBUG_INFO UnloadDll; - OUTPUT_DEBUG_STRING_INFO DebugString; - RIP_INFO RipInfo; - } -} -alias DEBUG_EVENT* LPDEBUG_EVENT; - -struct OVERLAPPED { - ULONG_PTR Internal; - ULONG_PTR InternalHigh; - union { - struct { - DWORD Offset; - DWORD OffsetHigh; - } - PVOID Pointer; - } - HANDLE hEvent; -} -alias OVERLAPPED* POVERLAPPED, LPOVERLAPPED; - -struct STARTUPINFOA { - DWORD cb = STARTUPINFOA.sizeof; - LPSTR lpReserved; - LPSTR lpDesktop; - LPSTR lpTitle; - DWORD dwX; - DWORD dwY; - DWORD dwXSize; - DWORD dwYSize; - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; - DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - PBYTE lpReserved2; - HANDLE hStdInput; - HANDLE hStdOutput; - HANDLE hStdError; -} -alias STARTUPINFOA* LPSTARTUPINFOA; - -struct STARTUPINFOW { - DWORD cb = STARTUPINFOW.sizeof; - LPWSTR lpReserved; - LPWSTR lpDesktop; - LPWSTR lpTitle; - DWORD dwX; - DWORD dwY; - DWORD dwXSize; - DWORD dwYSize; - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; - DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - PBYTE lpReserved2; - HANDLE hStdInput; - HANDLE hStdOutput; - HANDLE hStdError; -} -alias STARTUPINFOW* LPSTARTUPINFOW; - -struct PROCESS_INFORMATION { - HANDLE hProcess; - HANDLE hThread; - DWORD dwProcessId; - DWORD dwThreadId; -} -alias PROCESS_INFORMATION* PPROCESS_INFORMATION, LPPROCESS_INFORMATION; - -struct CRITICAL_SECTION_DEBUG { - WORD Type; - WORD CreatorBackTraceIndex; - CRITICAL_SECTION* CriticalSection; - LIST_ENTRY ProcessLocksList; - DWORD EntryCount; - DWORD ContentionCount; - DWORD[2] Spare; -} -alias CRITICAL_SECTION_DEBUG* PCRITICAL_SECTION_DEBUG; - -struct CRITICAL_SECTION { - PCRITICAL_SECTION_DEBUG DebugInfo; - LONG LockCount; - LONG RecursionCount; - HANDLE OwningThread; - HANDLE LockSemaphore; - DWORD SpinCount; -} -alias CRITICAL_SECTION* PCRITICAL_SECTION, LPCRITICAL_SECTION; - -struct SYSTEMTIME { - WORD wYear; - WORD wMonth; - WORD wDayOfWeek; - WORD wDay; - WORD wHour; - WORD wMinute; - WORD wSecond; - WORD wMilliseconds; -} -alias SYSTEMTIME* LPSYSTEMTIME; - -struct WIN32_FILE_ATTRIBUTE_DATA { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; -} -alias WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; - -struct WIN32_FIND_DATAA { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; -// #ifdef _WIN32_WCE -// DWORD dwOID; -// #else - DWORD dwReserved0; - DWORD dwReserved1; -// #endif - CHAR[MAX_PATH] cFileName; -// #ifndef _WIN32_WCE - CHAR[14] cAlternateFileName; -// #endif -} -alias WIN32_FIND_DATAA* PWIN32_FIND_DATAA, LPWIN32_FIND_DATAA; - -struct WIN32_FIND_DATAW { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; -// #ifdef _WIN32_WCE -// DWORD dwOID; -// #else - DWORD dwReserved0; - DWORD dwReserved1; -// #endif - WCHAR[MAX_PATH] cFileName; -// #ifndef _WIN32_WCE - WCHAR[14] cAlternateFileName; -// #endif -} -alias WIN32_FIND_DATAW* PWIN32_FIND_DATAW, LPWIN32_FIND_DATAW; - -struct WIN32_STREAM_ID { - DWORD dwStreamId; - DWORD dwStreamAttributes; - LARGE_INTEGER Size; - DWORD dwStreamNameSize; - WCHAR _cStreamName; - - WCHAR* cStreamName() { return &_cStreamName; } -} -alias WIN32_STREAM_ID* LPWIN32_STREAM_ID; - -enum FINDEX_INFO_LEVELS { - FindExInfoStandard, - FindExInfoMaxInfoLevel -} - -enum FINDEX_SEARCH_OPS { - FindExSearchNameMatch, - FindExSearchLimitToDirectories, - FindExSearchLimitToDevices, - FindExSearchMaxSearchOp -} - -enum ACL_INFORMATION_CLASS { - AclRevisionInformation = 1, - AclSizeInformation -} - -struct HW_PROFILE_INFOA { - DWORD dwDockInfo; - CHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; - CHAR[MAX_PROFILE_LEN] szHwProfileName; -} -alias HW_PROFILE_INFOA* LPHW_PROFILE_INFOA; - -struct HW_PROFILE_INFOW { - DWORD dwDockInfo; - WCHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; - WCHAR[MAX_PROFILE_LEN] szHwProfileName; -} -alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; - -/* ??? MSDN documents this only for Windows CE/Mobile, but it's used by - * GetFileAttributesEx, which is in desktop Windows. - */ -enum GET_FILEEX_INFO_LEVELS { - GetFileExInfoStandard, - GetFileExMaxInfoLevel -} - -struct SYSTEM_INFO { - union { - DWORD dwOemId; - struct { - WORD wProcessorArchitecture; - WORD wReserved; - } - } - DWORD dwPageSize; - PVOID lpMinimumApplicationAddress; - PVOID lpMaximumApplicationAddress; - DWORD_PTR dwActiveProcessorMask; - DWORD dwNumberOfProcessors; - DWORD dwProcessorType; - DWORD dwAllocationGranularity; - WORD wProcessorLevel; - WORD wProcessorRevision; -} -alias SYSTEM_INFO* LPSYSTEM_INFO; - -static if (_WIN32_WINNT >= 0x500) { - struct SYSTEM_POWER_STATUS { - BYTE ACLineStatus; - BYTE BatteryFlag; - BYTE BatteryLifePercent; - BYTE Reserved1; - DWORD BatteryLifeTime; - DWORD BatteryFullLifeTime; - } - alias SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; -} - -struct TIME_ZONE_INFORMATION { - LONG Bias; - WCHAR[32] StandardName; - SYSTEMTIME StandardDate; - LONG StandardBias; - WCHAR[32] DaylightName; - SYSTEMTIME DaylightDate; - LONG DaylightBias; -} -alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; - -// MSDN documents this, possibly erroneously, as Win2000+. -struct MEMORYSTATUS { - DWORD dwLength; - DWORD dwMemoryLoad; - DWORD dwTotalPhys; - DWORD dwAvailPhys; - DWORD dwTotalPageFile; - DWORD dwAvailPageFile; - DWORD dwTotalVirtual; - DWORD dwAvailVirtual; -} -alias MEMORYSTATUS* LPMEMORYSTATUS; - -static if (_WIN32_WINNT >= 0x500) { - struct MEMORYSTATUSEX { - DWORD dwLength; - DWORD dwMemoryLoad; - DWORDLONG ullTotalPhys; - DWORDLONG ullAvailPhys; - DWORDLONG ullTotalPageFile; - DWORDLONG ullAvailPageFile; - DWORDLONG ullTotalVirtual; - DWORDLONG ullAvailVirtual; - DWORDLONG ullAvailExtendedVirtual; - } - alias MEMORYSTATUSEX* LPMEMORYSTATUSEX; -} - -struct LDT_ENTRY { - WORD LimitLow; - WORD BaseLow; - struct { - BYTE BaseMid; - BYTE Flags1; - BYTE Flags2; - BYTE BaseHi; - - byte Type(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0xE0) | f); return cast(byte)(f & 0x1F); } - byte Dpl(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0x9F) | (f<<5)); return cast(byte)(f & 3); } - bool Pres(bool f) { Flags1 = cast(BYTE) ((Flags1 & 0x7F) | (f<<7)); return f; } - - byte LimitHi(byte f) { Flags2 = cast(BYTE) ((Flags2 & 0xF0) | (f&0x0F)); return cast(byte)(f & 0x0F); } - bool Sys(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xEF) | (f<<4)); return f; } - // Next bit is reserved - bool Default_Big(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xBF) | (f<<6)); return f; } - bool Granularity(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0x7F) | (f<<7)); return f; } - - byte Type() { return cast(byte) (Flags1 & 0x1F); } - byte Dpl() { return cast(byte) ((Flags1 & 0x60)>>5); } - bool Pres() { return cast(bool) (Flags1 & 0x80); } - - byte LimitHi() { return cast(byte) (Flags2 & 0x0F); } - bool Sys() { return cast(bool) (Flags2 & 0x10); } - bool Default_Big() { return cast(bool) (Flags2 & 0x40); } - bool Granularity() { return cast(bool) (Flags2 & 0x80); } - } -/+ - union HighWord { - struct Bytes { - BYTE BaseMid; - BYTE Flags1; - BYTE Flags2; - BYTE BaseHi; - } - struct Bits { - DWORD BaseMid:8; - DWORD Type:5; - DWORD Dpl:2; - DWORD Pres:1; - DWORD LimitHi:4; - DWORD Sys:1; - DWORD Reserved_0:1; - DWORD Default_Big:1; - DWORD Granularity:1; - DWORD BaseHi:8; - } - } -+/ -} -alias LDT_ENTRY* PLDT_ENTRY, LPLDT_ENTRY; - -/* As with the other memory management functions and structures, MSDN's - * Windows version info shall be taken with a cup of salt. - */ -struct PROCESS_HEAP_ENTRY { - PVOID lpData; - DWORD cbData; - BYTE cbOverhead; - BYTE iRegionIndex; - WORD wFlags; - union { - struct Block { - HANDLE hMem; - DWORD[3] dwReserved; - } - struct Region { - DWORD dwCommittedSize; - DWORD dwUnCommittedSize; - LPVOID lpFirstBlock; - LPVOID lpLastBlock; - } - } -} -alias PROCESS_HEAP_ENTRY* LPPROCESS_HEAP_ENTRY; - -struct OFSTRUCT { - BYTE cBytes = OFSTRUCT.sizeof; - BYTE fFixedDisk; - WORD nErrCode; - WORD Reserved1; - WORD Reserved2; - CHAR[128] szPathName; // const OFS_MAXPATHNAME = 128; -} -alias OFSTRUCT* LPOFSTRUCT, POFSTRUCT; - -/* ??? MSDN documents this only for Windows CE, but it's used by - * ImageGetCertificateData, which is in desktop Windows. - */ -struct WIN_CERTIFICATE { - DWORD dwLength; - WORD wRevision; - WORD wCertificateType; - BYTE _bCertificate; - - BYTE* bCertificate() { return &_bCertificate; } -} -alias WIN_CERTIFICATE* LPWIN_CERTIFICATE; - -static if (_WIN32_WINNT >= 0x500) { - enum COMPUTER_NAME_FORMAT { - ComputerNameNetBIOS, - ComputerNameDnsHostname, - ComputerNameDnsDomain, - ComputerNameDnsFullyQualified, - ComputerNamePhysicalNetBIOS, - ComputerNamePhysicalDnsHostname, - ComputerNamePhysicalDnsDomain, - ComputerNamePhysicalDnsFullyQualified, - ComputerNameMax - } -} - -static if (_WIN32_WINNT >= 0x501) { - struct ACTCTXA { - ULONG cbSize = this.sizeof; - DWORD dwFlags; - LPCSTR lpSource; - USHORT wProcessorArchitecture; - LANGID wLangId; - LPCSTR lpAssemblyDirectory; - LPCSTR lpResourceName; - LPCSTR lpApplicationName; - HMODULE hModule; - } - alias ACTCTXA* PACTCTXA; - alias const(ACTCTXA)* PCACTCTXA; - - struct ACTCTXW { - ULONG cbSize = this.sizeof; - DWORD dwFlags; - LPCWSTR lpSource; - USHORT wProcessorArchitecture; - LANGID wLangId; - LPCWSTR lpAssemblyDirectory; - LPCWSTR lpResourceName; - LPCWSTR lpApplicationName; - HMODULE hModule; - } - alias ACTCTXW* PACTCTXW; - alias const(ACTCTXW)* PCACTCTXW; - - struct ACTCTX_SECTION_KEYED_DATA { - ULONG cbSize = this.sizeof; - ULONG ulDataFormatVersion; - PVOID lpData; - ULONG ulLength; - PVOID lpSectionGlobalData; - ULONG ulSectionGlobalDataLength; - PVOID lpSectionBase; - ULONG ulSectionTotalLength; - HANDLE hActCtx; - HANDLE ulAssemblyRosterIndex; - } - alias ACTCTX_SECTION_KEYED_DATA* PACTCTX_SECTION_KEYED_DATA; - alias const(ACTCTX_SECTION_KEYED_DATA)* PCACTCTX_SECTION_KEYED_DATA; - - enum MEMORY_RESOURCE_NOTIFICATION_TYPE { - LowMemoryResourceNotification, - HighMemoryResourceNotification - } - -} // (_WIN32_WINNT >= 0x501) - -static if (_WIN32_WINNT >= 0x410) { - /* apparently used only by SetThreadExecutionState (Win2000+) - * and DDK functions (version compatibility not established) - */ - alias DWORD EXECUTION_STATE; -} - -// Callbacks -extern (Windows) { - alias DWORD function(LPVOID) LPTHREAD_START_ROUTINE; - alias DWORD function(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, - DWORD, DWORD, HANDLE, HANDLE, LPVOID) LPPROGRESS_ROUTINE; - alias void function(PVOID) LPFIBER_START_ROUTINE; - - alias BOOL function(HMODULE, LPCSTR, LPCSTR, WORD, LONG) ENUMRESLANGPROCA; - alias BOOL function(HMODULE, LPCWSTR, LPCWSTR, WORD, LONG) ENUMRESLANGPROCW; - alias BOOL function(HMODULE, LPCSTR, LPSTR, LONG) ENUMRESNAMEPROCA; - alias BOOL function(HMODULE, LPCWSTR, LPWSTR, LONG) ENUMRESNAMEPROCW; - alias BOOL function(HMODULE, LPSTR, LONG) ENUMRESTYPEPROCA; - alias BOOL function(HMODULE, LPWSTR, LONG) ENUMRESTYPEPROCW; - alias void function(DWORD, DWORD, LPOVERLAPPED) LPOVERLAPPED_COMPLETION_ROUTINE; - alias LONG function(LPEXCEPTION_POINTERS) PTOP_LEVEL_EXCEPTION_FILTER; - alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; - - alias void function(ULONG_PTR) PAPCFUNC; - alias void function(PVOID, DWORD, DWORD) PTIMERAPCROUTINE; - - static if (_WIN32_WINNT >= 0x500) { - alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACK; - } -} - -LPTSTR MAKEINTATOM()(ushort i) { - return cast(LPTSTR) cast(size_t) i; -} - -extern (Windows) { - ATOM AddAtomA(LPCSTR); - ATOM AddAtomW(LPCWSTR); - BOOL AreFileApisANSI(); - BOOL Beep(DWORD, DWORD); - HANDLE BeginUpdateResourceA(LPCSTR, BOOL); - HANDLE BeginUpdateResourceW(LPCWSTR, BOOL); - BOOL BuildCommDCBA(LPCSTR, LPDCB); - BOOL BuildCommDCBW(LPCWSTR, LPDCB); - BOOL BuildCommDCBAndTimeoutsA(LPCSTR, LPDCB, LPCOMMTIMEOUTS); - BOOL BuildCommDCBAndTimeoutsW(LPCWSTR, LPDCB, LPCOMMTIMEOUTS); - BOOL CallNamedPipeA(LPCSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); - BOOL CallNamedPipeW(LPCWSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); - BOOL CancelDeviceWakeupRequest(HANDLE); - BOOL CheckTokenMembership(HANDLE, PSID, PBOOL); - BOOL ClearCommBreak(HANDLE); - BOOL ClearCommError(HANDLE, PDWORD, LPCOMSTAT); - BOOL CloseHandle(HANDLE); - BOOL CommConfigDialogA(LPCSTR, HWND, LPCOMMCONFIG); - BOOL CommConfigDialogW(LPCWSTR, HWND, LPCOMMCONFIG); - LONG CompareFileTime(const(FILETIME)*, const(FILETIME)*); - BOOL ContinueDebugEvent(DWORD, DWORD, DWORD); - BOOL CopyFileA(LPCSTR, LPCSTR, BOOL); - BOOL CopyFileW(LPCWSTR, LPCWSTR, BOOL); - BOOL CopyFileExA(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); - BOOL CopyFileExW(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); - - /+ FIXME - alias memmove RtlMoveMemory; - alias memcpy RtlCopyMemory; - - void RtlFillMemory(PVOID dest, SIZE_T len, BYTE fill) { - memset(dest, fill, len); - } - - void RtlZeroMemory(PVOID dest, SIZE_T len) { - RtlFillMemory(dest, len, 0); - } - - alias RtlMoveMemory MoveMemory; - alias RtlCopyMemory CopyMemory; - alias RtlFillMemory FillMemory; - alias RtlZeroMemory ZeroMemory; - +/ - BOOL CreateDirectoryA(LPCSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateDirectoryW(LPCWSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateDirectoryExA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateDirectoryExW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); - HANDLE CreateEventA(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR); - HANDLE CreateEventW(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR); - HANDLE CreateFileA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); - HANDLE CreateFileW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); - HANDLE CreateIoCompletionPort(HANDLE, HANDLE, ULONG_PTR, DWORD); - HANDLE CreateMailslotA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HANDLE CreateMailslotW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); - HANDLE CreateMutexW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); - BOOL CreatePipe(PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD); - BOOL CreateProcessA(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); - BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR); - HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR); - HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); - BOOL DebugActiveProcess(DWORD); - void DebugBreak(); - ATOM DeleteAtom(ATOM); - void DeleteCriticalSection(PCRITICAL_SECTION); - BOOL DeleteFileA(LPCSTR); - BOOL DeleteFileW(LPCWSTR); - BOOL DisableThreadLibraryCalls(HMODULE); - BOOL DosDateTimeToFileTime(WORD, WORD, LPFILETIME); - BOOL DuplicateHandle(HANDLE, HANDLE, HANDLE, PHANDLE, DWORD, BOOL, DWORD); - BOOL EndUpdateResourceA(HANDLE, BOOL); - BOOL EndUpdateResourceW(HANDLE, BOOL); - void EnterCriticalSection(LPCRITICAL_SECTION); - BOOL EnumResourceLanguagesA(HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROC, LONG_PTR); - BOOL EnumResourceLanguagesW(HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROC, LONG_PTR); - BOOL EnumResourceNamesA(HMODULE, LPCSTR, ENUMRESNAMEPROC, LONG_PTR); - BOOL EnumResourceNamesW(HMODULE, LPCWSTR, ENUMRESNAMEPROC, LONG_PTR); - BOOL EnumResourceTypesA(HMODULE, ENUMRESTYPEPROC, LONG_PTR); - BOOL EnumResourceTypesW(HMODULE, ENUMRESTYPEPROC, LONG_PTR); - BOOL EscapeCommFunction(HANDLE, DWORD); - void ExitProcess(UINT); // Never returns - void ExitThread(DWORD); // Never returns - DWORD ExpandEnvironmentStringsA(LPCSTR, LPSTR, DWORD); - DWORD ExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD); - void FatalAppExitA(UINT, LPCSTR); - void FatalAppExitW(UINT, LPCWSTR); - void FatalExit(int); - BOOL FileTimeToDosDateTime(const(FILETIME)*, LPWORD, LPWORD); - BOOL FileTimeToLocalFileTime(const(FILETIME)*, LPFILETIME); - BOOL FileTimeToSystemTime(const(FILETIME)*, LPSYSTEMTIME); - ATOM FindAtomA(LPCSTR); - ATOM FindAtomW(LPCWSTR); - BOOL FindClose(HANDLE); - BOOL FindCloseChangeNotification(HANDLE); - HANDLE FindFirstChangeNotificationA(LPCSTR, BOOL, DWORD); - HANDLE FindFirstChangeNotificationW(LPCWSTR, BOOL, DWORD); - HANDLE FindFirstFileA(LPCSTR, LPWIN32_FIND_DATAA); - HANDLE FindFirstFileW(LPCWSTR, LPWIN32_FIND_DATAW); - BOOL FindNextChangeNotification(HANDLE); - BOOL FindNextFileA(HANDLE, LPWIN32_FIND_DATAA); - BOOL FindNextFileW(HANDLE, LPWIN32_FIND_DATAW); - HRSRC FindResourceA(HMODULE, LPCSTR, LPCSTR); - HRSRC FindResourceW(HINSTANCE, LPCWSTR, LPCWSTR); - HRSRC FindResourceExA(HINSTANCE, LPCSTR, LPCSTR, WORD); - HRSRC FindResourceExW(HINSTANCE, LPCWSTR, LPCWSTR, WORD); - BOOL FlushFileBuffers(HANDLE); - BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD); - DWORD FormatMessageA(DWORD, PCVOID, DWORD, DWORD, LPSTR, DWORD, va_list*); - DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); - BOOL FreeEnvironmentStringsA(LPSTR); - BOOL FreeEnvironmentStringsW(LPWSTR); - BOOL FreeLibrary(HMODULE); - void FreeLibraryAndExitThread(HMODULE, DWORD); // never returns - BOOL FreeResource(HGLOBAL); - UINT GetAtomNameA(ATOM, LPSTR, int); - UINT GetAtomNameW(ATOM, LPWSTR, int); - LPSTR GetCommandLineA(); - LPWSTR GetCommandLineW(); - BOOL GetCommConfig(HANDLE, LPCOMMCONFIG, PDWORD); - BOOL GetCommMask(HANDLE, PDWORD); - BOOL GetCommModemStatus(HANDLE, PDWORD); - BOOL GetCommProperties(HANDLE, LPCOMMPROP); - BOOL GetCommState(HANDLE, LPDCB); - BOOL GetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); - BOOL GetComputerNameA(LPSTR, PDWORD); - BOOL GetComputerNameW(LPWSTR, PDWORD); - DWORD GetCurrentDirectoryA(DWORD, LPSTR); - DWORD GetCurrentDirectoryW(DWORD, LPWSTR); - HANDLE GetCurrentProcess(); - DWORD GetCurrentProcessId(); - HANDLE GetCurrentThread(); -/* In MinGW: -#ifdef _WIN32_WCE -extern DWORD GetCurrentThreadId(void); -#else -WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); -#endif -*/ - DWORD GetCurrentThreadId(); - - alias GetTickCount GetCurrentTime; - - BOOL GetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, PDWORD); - BOOL GetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, PDWORD); - BOOL GetDiskFreeSpaceA(LPCSTR, PDWORD, PDWORD, PDWORD, PDWORD); - BOOL GetDiskFreeSpaceW(LPCWSTR, PDWORD, PDWORD, PDWORD, PDWORD); - BOOL GetDiskFreeSpaceExA(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); - BOOL GetDiskFreeSpaceExW(LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); - UINT GetDriveTypeA(LPCSTR); - UINT GetDriveTypeW(LPCWSTR); - LPSTR GetEnvironmentStrings(); // ??? - LPSTR GetEnvironmentStringsA(); - LPWSTR GetEnvironmentStringsW(); - DWORD GetEnvironmentVariableA(LPCSTR, LPSTR, DWORD); - DWORD GetEnvironmentVariableW(LPCWSTR, LPWSTR, DWORD); - BOOL GetExitCodeProcess(HANDLE, PDWORD); - BOOL GetExitCodeThread(HANDLE, PDWORD); - DWORD GetFileAttributesA(LPCSTR); - DWORD GetFileAttributesW(LPCWSTR); - BOOL GetFileInformationByHandle(HANDLE, LPBY_HANDLE_FILE_INFORMATION); - DWORD GetFileSize(HANDLE, PDWORD); - BOOL GetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); - DWORD GetFileType(HANDLE); - DWORD GetFullPathNameA(LPCSTR, DWORD, LPSTR, LPSTR*); - DWORD GetFullPathNameW(LPCWSTR, DWORD, LPWSTR, LPWSTR*); - DWORD GetLastError(); - void GetLocalTime(LPSYSTEMTIME); - DWORD GetLogicalDrives(); - DWORD GetLogicalDriveStringsA(DWORD, LPSTR); - DWORD GetLogicalDriveStringsW(DWORD, LPWSTR); - BOOL GetMailslotInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); - DWORD GetModuleFileNameA(HINSTANCE, LPSTR, DWORD); - DWORD GetModuleFileNameW(HINSTANCE, LPWSTR, DWORD); - HMODULE GetModuleHandleA(LPCSTR); - HMODULE GetModuleHandleW(LPCWSTR); - BOOL GetNamedPipeHandleStateA(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); - BOOL GetNamedPipeHandleStateW(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); - BOOL GetNamedPipeInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); - BOOL GetOverlappedResult(HANDLE, LPOVERLAPPED, PDWORD, BOOL); - DWORD GetPriorityClass(HANDLE); - UINT GetPrivateProfileIntA(LPCSTR, LPCSTR, INT, LPCSTR); - UINT GetPrivateProfileIntW(LPCWSTR, LPCWSTR, INT, LPCWSTR); - DWORD GetPrivateProfileSectionA(LPCSTR, LPSTR, DWORD, LPCSTR); - DWORD GetPrivateProfileSectionW(LPCWSTR, LPWSTR, DWORD, LPCWSTR); - DWORD GetPrivateProfileSectionNamesA(LPSTR, DWORD, LPCSTR); - DWORD GetPrivateProfileSectionNamesW(LPWSTR, DWORD, LPCWSTR); - DWORD GetPrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD, LPCSTR); - DWORD GetPrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPCWSTR); - BOOL GetPrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); - BOOL GetPrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); - FARPROC GetProcAddress(HMODULE, LPCSTR); // 1st param wrongly HINSTANCE in MinGW - BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); - DWORD GetProcessVersion(DWORD); - UINT GetProfileIntA(LPCSTR, LPCSTR, INT); - UINT GetProfileIntW(LPCWSTR, LPCWSTR, INT); - DWORD GetProfileSectionA(LPCSTR, LPSTR, DWORD); - DWORD GetProfileSectionW(LPCWSTR, LPWSTR, DWORD); - DWORD GetProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD); - DWORD GetProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD); - DWORD GetShortPathNameA(LPCSTR, LPSTR, DWORD); - DWORD GetShortPathNameW(LPCWSTR, LPWSTR, DWORD); - VOID GetStartupInfoA(LPSTARTUPINFOA); - VOID GetStartupInfoW(LPSTARTUPINFOW); - HANDLE GetStdHandle(DWORD); - UINT GetSystemDirectoryA(LPSTR, UINT); - UINT GetSystemDirectoryW(LPWSTR, UINT); - VOID GetSystemInfo(LPSYSTEM_INFO); - VOID GetSystemTime(LPSYSTEMTIME); - BOOL GetSystemTimeAdjustment(PDWORD, PDWORD, PBOOL); - void GetSystemTimeAsFileTime(LPFILETIME); - UINT GetTempFileNameA(LPCSTR, LPCSTR, UINT, LPSTR); - UINT GetTempFileNameW(LPCWSTR, LPCWSTR, UINT, LPWSTR); - DWORD GetTempPathA(DWORD, LPSTR); - DWORD GetTempPathW(DWORD, LPWSTR); - BOOL GetThreadContext(HANDLE, LPCONTEXT); - int GetThreadPriority(HANDLE); - BOOL GetThreadSelectorEntry(HANDLE, DWORD, LPLDT_ENTRY); - DWORD GetTickCount(); - DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION); - BOOL GetUserNameA (LPSTR, PDWORD); - BOOL GetUserNameW(LPWSTR, PDWORD); - DWORD GetVersion(); - BOOL GetVersionExA(LPOSVERSIONINFOA); - BOOL GetVersionExW(LPOSVERSIONINFOW); - BOOL GetVolumeInformationA(LPCSTR, LPSTR, DWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); - BOOL GetVolumeInformationW(LPCWSTR, LPWSTR, DWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); - UINT GetWindowsDirectoryA(LPSTR, UINT); - UINT GetWindowsDirectoryW(LPWSTR, UINT); - DWORD GetWindowThreadProcessId(HWND, PDWORD); - ATOM GlobalAddAtomA(LPCSTR); - ATOM GlobalAddAtomW(LPCWSTR); - ATOM GlobalDeleteAtom(ATOM); - ATOM GlobalFindAtomA(LPCSTR); - ATOM GlobalFindAtomW(LPCWSTR); - UINT GlobalGetAtomNameA(ATOM, LPSTR, int); - UINT GlobalGetAtomNameW(ATOM, LPWSTR, int); - - bool HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped) { - return lpOverlapped.Internal != STATUS_PENDING; - } - - BOOL InitAtomTable(DWORD); - VOID InitializeCriticalSection(LPCRITICAL_SECTION); - /* ??? The next two are allegedly obsolete and "supported only for - * backward compatibility with the 16-bit Windows API". Yet the - * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ - * only. Where's the mistake? - */ - BOOL IsBadHugeReadPtr(PCVOID, UINT_PTR); - BOOL IsBadHugeWritePtr(PVOID, UINT_PTR); - BOOL IsBadReadPtr(PCVOID, UINT_PTR); - BOOL IsBadStringPtrA(LPCSTR, UINT_PTR); - BOOL IsBadStringPtrW(LPCWSTR, UINT_PTR); - BOOL IsBadWritePtr(PVOID, UINT_PTR); - void LeaveCriticalSection(LPCRITICAL_SECTION); - HINSTANCE LoadLibraryA(LPCSTR); - HINSTANCE LoadLibraryW(LPCWSTR); - HINSTANCE LoadLibraryExA(LPCSTR, HANDLE, DWORD); - HINSTANCE LoadLibraryExW(LPCWSTR, HANDLE, DWORD); - DWORD LoadModule(LPCSTR, PVOID); - HGLOBAL LoadResource(HINSTANCE, HRSRC); - BOOL LocalFileTimeToFileTime(const(FILETIME)*, LPFILETIME); - BOOL LockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); - PVOID LockResource(HGLOBAL); - - LPSTR lstrcatA(LPSTR, LPCSTR); - LPWSTR lstrcatW(LPWSTR, LPCWSTR); - int lstrcmpA(LPCSTR, LPCSTR); - int lstrcmpiA(LPCSTR, LPCSTR); - int lstrcmpiW(LPCWSTR, LPCWSTR); - int lstrcmpW(LPCWSTR, LPCWSTR); - LPSTR lstrcpyA(LPSTR, LPCSTR); - LPSTR lstrcpynA(LPSTR, LPCSTR, int); - LPWSTR lstrcpynW(LPWSTR, LPCWSTR, int); - LPWSTR lstrcpyW(LPWSTR, LPCWSTR); - int lstrlenA(LPCSTR); - int lstrlenW(LPCWSTR); - - BOOL MoveFileA(LPCSTR, LPCSTR); - BOOL MoveFileW(LPCWSTR, LPCWSTR); - int MulDiv(int, int, int); - HANDLE OpenEventA(DWORD, BOOL, LPCSTR); - HANDLE OpenEventW(DWORD, BOOL, LPCWSTR); - deprecated HFILE OpenFile(LPCSTR, LPOFSTRUCT, UINT); - HANDLE OpenMutexA(DWORD, BOOL, LPCSTR); - HANDLE OpenMutexW(DWORD, BOOL, LPCWSTR); - HANDLE OpenProcess(DWORD, BOOL, DWORD); - HANDLE OpenSemaphoreA(DWORD, BOOL, LPCSTR); - HANDLE OpenSemaphoreW(DWORD, BOOL, LPCWSTR); - void OutputDebugStringA(LPCSTR); - void OutputDebugStringW(LPCWSTR); - BOOL PeekNamedPipe(HANDLE, PVOID, DWORD, PDWORD, PDWORD, PDWORD); - BOOL PulseEvent(HANDLE); - BOOL PurgeComm(HANDLE, DWORD); - BOOL QueryPerformanceCounter(PLARGE_INTEGER); - BOOL QueryPerformanceFrequency(PLARGE_INTEGER); - DWORD QueueUserAPC(PAPCFUNC, HANDLE, ULONG_PTR); - void RaiseException(DWORD, DWORD, DWORD, const(DWORD)*); - BOOL ReadFile(HANDLE, PVOID, DWORD, PDWORD, LPOVERLAPPED); - BOOL ReadFileEx(HANDLE, PVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); - BOOL ReadProcessMemory(HANDLE, PCVOID, PVOID, SIZE_T, SIZE_T*); - BOOL ReleaseMutex(HANDLE); - BOOL ReleaseSemaphore(HANDLE, LONG, LPLONG); - BOOL RemoveDirectoryA(LPCSTR); - BOOL RemoveDirectoryW(LPCWSTR); -/* In MinGW: -#ifdef _WIN32_WCE -extern BOOL ResetEvent(HANDLE); -#else -WINBASEAPI BOOL WINAPI ResetEvent(HANDLE); -#endif -*/ - BOOL ResetEvent(HANDLE); - DWORD ResumeThread(HANDLE); - DWORD SearchPathA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR*); - DWORD SearchPathW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR*); - BOOL SetCommBreak(HANDLE); - BOOL SetCommConfig(HANDLE, LPCOMMCONFIG, DWORD); - BOOL SetCommMask(HANDLE, DWORD); - BOOL SetCommState(HANDLE, LPDCB); - BOOL SetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); - BOOL SetComputerNameA(LPCSTR); - BOOL SetComputerNameW(LPCWSTR); - BOOL SetCurrentDirectoryA(LPCSTR); - BOOL SetCurrentDirectoryW(LPCWSTR); - BOOL SetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, DWORD); - BOOL SetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, DWORD); - BOOL SetEndOfFile(HANDLE); - BOOL SetEnvironmentVariableA(LPCSTR, LPCSTR); - BOOL SetEnvironmentVariableW(LPCWSTR, LPCWSTR); - UINT SetErrorMode(UINT); -/* In MinGW: -#ifdef _WIN32_WCE -extern BOOL SetEvent(HANDLE); -#else -WINBASEAPI BOOL WINAPI SetEvent(HANDLE); -#endif -*/ - BOOL SetEvent(HANDLE); - VOID SetFileApisToANSI(); - VOID SetFileApisToOEM(); - BOOL SetFileAttributesA(LPCSTR, DWORD); - BOOL SetFileAttributesW(LPCWSTR, DWORD); - DWORD SetFilePointer(HANDLE, LONG, PLONG, DWORD); - BOOL SetFileTime(HANDLE, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); - deprecated UINT SetHandleCount(UINT); - void SetLastError(DWORD); - void SetLastErrorEx(DWORD, DWORD); - BOOL SetLocalTime(const(SYSTEMTIME)*); - BOOL SetMailslotInfo(HANDLE, DWORD); - BOOL SetNamedPipeHandleState(HANDLE, PDWORD, PDWORD, PDWORD); - BOOL SetPriorityClass(HANDLE, DWORD); - BOOL SetStdHandle(DWORD, HANDLE); - BOOL SetSystemTime(const(SYSTEMTIME)*); - DWORD SetThreadAffinityMask(HANDLE, DWORD); - BOOL SetThreadContext(HANDLE, const(CONTEXT)*); - BOOL SetThreadPriority(HANDLE, int); - BOOL SetTimeZoneInformation(const(TIME_ZONE_INFORMATION)*); - LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER); - BOOL SetupComm(HANDLE, DWORD, DWORD); - BOOL SetVolumeLabelA(LPCSTR, LPCSTR); - BOOL SetVolumeLabelW(LPCWSTR, LPCWSTR); - - DWORD SizeofResource(HINSTANCE, HRSRC); - void Sleep(DWORD); - DWORD SleepEx(DWORD, BOOL); - DWORD SuspendThread(HANDLE); - BOOL SystemTimeToFileTime(const(SYSTEMTIME)*, LPFILETIME); - BOOL TerminateProcess(HANDLE, UINT); - BOOL TerminateThread(HANDLE, DWORD); - DWORD TlsAlloc(); - BOOL TlsFree(DWORD); - PVOID TlsGetValue(DWORD); - BOOL TlsSetValue(DWORD, PVOID); - BOOL TransactNamedPipe(HANDLE, PVOID, DWORD, PVOID, DWORD, PDWORD, LPOVERLAPPED); - BOOL TransmitCommChar(HANDLE, char); - LONG UnhandledExceptionFilter(LPEXCEPTION_POINTERS); - BOOL UnlockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); - BOOL WaitCommEvent(HANDLE, PDWORD, LPOVERLAPPED); - BOOL WaitForDebugEvent(LPDEBUG_EVENT, DWORD); - DWORD WaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD); - DWORD WaitForMultipleObjectsEx(DWORD, const(HANDLE)*, BOOL, DWORD, BOOL); - DWORD WaitForSingleObject(HANDLE, DWORD); - DWORD WaitForSingleObjectEx(HANDLE, DWORD, BOOL); - BOOL WaitNamedPipeA(LPCSTR, DWORD); - BOOL WaitNamedPipeW(LPCWSTR, DWORD); - // undocumented on MSDN - BOOL WinLoadTrustProvider(GUID*); - BOOL WriteFile(HANDLE, PCVOID, DWORD, PDWORD, LPOVERLAPPED); - BOOL WriteFileEx(HANDLE, PCVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); - BOOL WritePrivateProfileSectionA(LPCSTR, LPCSTR, LPCSTR); - BOOL WritePrivateProfileSectionW(LPCWSTR, LPCWSTR, LPCWSTR); - BOOL WritePrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPCSTR); - BOOL WritePrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); - BOOL WritePrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); - BOOL WritePrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); - BOOL WriteProcessMemory(HANDLE, LPVOID, LPCVOID, SIZE_T, SIZE_T*); - BOOL WriteProfileSectionA(LPCSTR, LPCSTR); - BOOL WriteProfileSectionW(LPCWSTR, LPCWSTR); - BOOL WriteProfileStringA(LPCSTR, LPCSTR, LPCSTR); - BOOL WriteProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR); - - /* Memory allocation functions. - * MSDN documents these erroneously as Win2000+; thus it is uncertain what - * version compatibility they really have. - */ - HGLOBAL GlobalAlloc(UINT, DWORD); - HGLOBAL GlobalDiscard(HGLOBAL); - HGLOBAL GlobalFree(HGLOBAL); - HGLOBAL GlobalHandle(PCVOID); - LPVOID GlobalLock(HGLOBAL); - VOID GlobalMemoryStatus(LPMEMORYSTATUS); - HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); - DWORD GlobalSize(HGLOBAL); - BOOL GlobalUnlock(HGLOBAL); - PVOID HeapAlloc(HANDLE, DWORD, DWORD); - SIZE_T HeapCompact(HANDLE, DWORD); - HANDLE HeapCreate(DWORD, DWORD, DWORD); - BOOL HeapDestroy(HANDLE); - BOOL HeapFree(HANDLE, DWORD, PVOID); - BOOL HeapLock(HANDLE); - PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); - DWORD HeapSize(HANDLE, DWORD, PCVOID); - BOOL HeapUnlock(HANDLE); - BOOL HeapValidate(HANDLE, DWORD, PCVOID); - BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); - HLOCAL LocalAlloc(UINT, SIZE_T); - HLOCAL LocalDiscard(HLOCAL); - HLOCAL LocalFree(HLOCAL); - HLOCAL LocalHandle(LPCVOID); - PVOID LocalLock(HLOCAL); - HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); - UINT LocalSize(HLOCAL); - BOOL LocalUnlock(HLOCAL); - PVOID VirtualAlloc(PVOID, DWORD, DWORD, DWORD); - PVOID VirtualAllocEx(HANDLE, PVOID, DWORD, DWORD, DWORD); - BOOL VirtualFree(PVOID, DWORD, DWORD); - BOOL VirtualFreeEx(HANDLE, PVOID, DWORD, DWORD); - BOOL VirtualLock(PVOID, DWORD); - BOOL VirtualProtect(PVOID, DWORD, DWORD, PDWORD); - BOOL VirtualProtectEx(HANDLE, PVOID, DWORD, DWORD, PDWORD); - DWORD VirtualQuery(LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); - DWORD VirtualQueryEx(HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); - BOOL VirtualUnlock(PVOID, DWORD); -// not in MinGW 4.0 - ??? - static if (_WIN32_WINNT >= 0x600) { - BOOL CancelIoEx(HANDLE, LPOVERLAPPED); - } - - BOOL CancelIo(HANDLE); - BOOL CancelWaitableTimer(HANDLE); - PVOID ConvertThreadToFiber(PVOID); - LPVOID CreateFiber(SIZE_T, LPFIBER_START_ROUTINE, LPVOID); - HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); - HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); - void DeleteFiber(PVOID); - BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); - BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); - DWORD GetLongPathNameA(LPCSTR, LPSTR, DWORD); - DWORD GetLongPathNameW(LPCWSTR, LPWSTR, DWORD); - BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION, DWORD); - BOOL IsDebuggerPresent(); - HANDLE OpenWaitableTimerA(DWORD, BOOL, LPCSTR); - HANDLE OpenWaitableTimerW(DWORD, BOOL, LPCWSTR); - DWORD QueryDosDeviceA(LPCSTR, LPSTR, DWORD); - DWORD QueryDosDeviceW(LPCWSTR, LPWSTR, DWORD); - BOOL SetWaitableTimer(HANDLE, const(LARGE_INTEGER)*, LONG, PTIMERAPCROUTINE, PVOID, BOOL); - void SwitchToFiber(PVOID); - - static if (_WIN32_WINNT >= 0x500) { - HANDLE OpenThread(DWORD, BOOL, DWORD); - } - - BOOL AccessCheck(PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, PDWORD, PDWORD, PBOOL); - BOOL AccessCheckAndAuditAlarmA(LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); - BOOL AccessCheckAndAuditAlarmW(LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); - BOOL AddAccessAllowedAce(PACL, DWORD, DWORD, PSID); - BOOL AddAccessDeniedAce(PACL, DWORD, DWORD, PSID); - BOOL AddAce(PACL, DWORD, DWORD, PVOID, DWORD); - BOOL AddAuditAccessAce(PACL, DWORD, DWORD, PSID, BOOL, BOOL); - BOOL AdjustTokenGroups(HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD); - BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); - BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); - BOOL AllocateLocallyUniqueId(PLUID); - BOOL AreAllAccessesGranted(DWORD, DWORD); - BOOL AreAnyAccessesGranted(DWORD, DWORD); - BOOL BackupEventLogA(HANDLE, LPCSTR); - BOOL BackupEventLogW(HANDLE, LPCWSTR); - BOOL BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); - BOOL BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID*); - BOOL BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); - BOOL ClearEventLogA(HANDLE, LPCSTR); - BOOL ClearEventLogW(HANDLE, LPCWSTR); - BOOL CloseEventLog(HANDLE); - BOOL ConnectNamedPipe(HANDLE, LPOVERLAPPED); - BOOL CopySid(DWORD, PSID, PSID); - HANDLE CreateNamedPipeA(LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HANDLE CreateNamedPipeW(LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); - BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); - BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); - DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); - BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); - BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); - BOOL DeleteAce(PACL, DWORD); - BOOL DeregisterEventSource(HANDLE); - BOOL DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); - BOOL DeviceIoControl(HANDLE, DWORD, PVOID, DWORD, PVOID, DWORD, PDWORD, POVERLAPPED); - BOOL DisconnectNamedPipe(HANDLE); - BOOL DuplicateToken(HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE); - BOOL DuplicateTokenEx(HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE); - BOOL EqualPrefixSid(PSID, PSID); - BOOL EqualSid(PSID, PSID); - DWORD EraseTape(HANDLE, DWORD, BOOL); - HANDLE FindFirstFileExA(LPCSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); - HANDLE FindFirstFileExW(LPCWSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); - BOOL FindFirstFreeAce(PACL, PVOID*); - PVOID FreeSid(PSID); - BOOL GetAce(PACL, DWORD, LPVOID*); - BOOL GetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); - BOOL GetBinaryTypeA(LPCSTR, PDWORD); - BOOL GetBinaryTypeW(LPCWSTR, PDWORD); - DWORD GetCompressedFileSizeA(LPCSTR, PDWORD); - DWORD GetCompressedFileSizeW(LPCWSTR, PDWORD); - BOOL GetCurrentHwProfileA(LPHW_PROFILE_INFOA); - BOOL GetCurrentHwProfileW(LPHW_PROFILE_INFOW); - BOOL GetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - BOOL GetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - BOOL GetHandleInformation(HANDLE, PDWORD); - BOOL GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - DWORD GetLengthSid(PSID); - BOOL GetNumberOfEventLogRecords(HANDLE, PDWORD); - BOOL GetOldestEventLogRecord(HANDLE, PDWORD); - BOOL GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - BOOL GetProcessPriorityBoost(HANDLE, PBOOL); - BOOL GetProcessShutdownParameters(PDWORD, PDWORD); - BOOL GetProcessTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); - HWINSTA GetProcessWindowStation(); - BOOL GetProcessWorkingSetSize(HANDLE, PSIZE_T, PSIZE_T); - BOOL GetQueuedCompletionStatus(HANDLE, PDWORD, PULONG_PTR, LPOVERLAPPED*, DWORD); - BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, PDWORD); - BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); - BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); - DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); - BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); - BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); - PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority(PSID); - DWORD GetSidLengthRequired(UCHAR); - PDWORD GetSidSubAuthority(PSID, DWORD); - PUCHAR GetSidSubAuthorityCount(PSID); - DWORD GetTapeParameters(HANDLE, DWORD, PDWORD, PVOID); - DWORD GetTapePosition(HANDLE, DWORD, PDWORD, PDWORD, PDWORD); - DWORD GetTapeStatus(HANDLE); - BOOL GetThreadPriorityBoost(HANDLE, PBOOL); - BOOL GetThreadTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); - BOOL GetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD, PDWORD); - BOOL ImpersonateLoggedOnUser(HANDLE); - BOOL ImpersonateNamedPipeClient(HANDLE); - BOOL ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); - BOOL InitializeAcl(PACL, DWORD, DWORD); - DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION, DWORD); - BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR, DWORD); - BOOL InitializeSid(PSID, PSID_IDENTIFIER_AUTHORITY, BYTE); - BOOL IsProcessorFeaturePresent(DWORD); - BOOL IsTextUnicode(PCVOID, int, LPINT); - BOOL IsValidAcl(PACL); - BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); - BOOL IsValidSid(PSID); - BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED); - BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE); - BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); - BOOL LookupAccountNameA(LPCSTR, LPCSTR, PSID, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); - BOOL LookupAccountNameW(LPCWSTR, LPCWSTR, PSID, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); - BOOL LookupAccountSidA(LPCSTR, PSID, LPSTR, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); - BOOL LookupAccountSidW(LPCWSTR, PSID, LPWSTR, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); - BOOL LookupPrivilegeDisplayNameA(LPCSTR, LPCSTR, LPSTR, PDWORD, PDWORD); - BOOL LookupPrivilegeDisplayNameW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, PDWORD); - BOOL LookupPrivilegeNameA(LPCSTR, PLUID, LPSTR, PDWORD); - BOOL LookupPrivilegeNameW(LPCWSTR, PLUID, LPWSTR, PDWORD); - BOOL LookupPrivilegeValueA(LPCSTR, LPCSTR, PLUID); - BOOL LookupPrivilegeValueW(LPCWSTR, LPCWSTR, PLUID); - BOOL MakeAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD); - BOOL MakeSelfRelativeSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD); - VOID MapGenericMask(PDWORD, PGENERIC_MAPPING); - BOOL MoveFileExA(LPCSTR, LPCSTR, DWORD); - BOOL MoveFileExW(LPCWSTR, LPCWSTR, DWORD); - BOOL NotifyChangeEventLog(HANDLE, HANDLE); - BOOL ObjectCloseAuditAlarmA(LPCSTR, PVOID, BOOL); - BOOL ObjectCloseAuditAlarmW(LPCWSTR, PVOID, BOOL); - BOOL ObjectDeleteAuditAlarmA(LPCSTR, PVOID, BOOL); - BOOL ObjectDeleteAuditAlarmW(LPCWSTR, PVOID, BOOL); - BOOL ObjectOpenAuditAlarmA(LPCSTR, PVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); - BOOL ObjectOpenAuditAlarmW(LPCWSTR, PVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); - BOOL ObjectPrivilegeAuditAlarmA(LPCSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); - BOOL ObjectPrivilegeAuditAlarmW(LPCWSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); - HANDLE OpenBackupEventLogA(LPCSTR, LPCSTR); - HANDLE OpenBackupEventLogW(LPCWSTR, LPCWSTR); - HANDLE OpenEventLogA(LPCSTR, LPCSTR); - HANDLE OpenEventLogW(LPCWSTR, LPCWSTR); - BOOL OpenProcessToken(HANDLE, DWORD, PHANDLE); - BOOL OpenThreadToken(HANDLE, DWORD, BOOL, PHANDLE); - BOOL PostQueuedCompletionStatus(HANDLE, DWORD, ULONG_PTR, LPOVERLAPPED); - DWORD PrepareTape(HANDLE, DWORD, BOOL); - BOOL PrivilegeCheck(HANDLE, PPRIVILEGE_SET, PBOOL); - BOOL PrivilegedServiceAuditAlarmA(LPCSTR, LPCSTR, HANDLE, PPRIVILEGE_SET, BOOL); - BOOL PrivilegedServiceAuditAlarmW(LPCWSTR, LPCWSTR, HANDLE, PPRIVILEGE_SET, BOOL); - BOOL ReadDirectoryChangesW(HANDLE, PVOID, DWORD, BOOL, DWORD, PDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); - BOOL ReadEventLogA(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); - BOOL ReadEventLogW(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); - BOOL ReadFileScatter(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); - HANDLE RegisterEventSourceA (LPCSTR, LPCSTR); - HANDLE RegisterEventSourceW(LPCWSTR, LPCWSTR); - BOOL ReportEventA(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCSTR*, PVOID); - BOOL ReportEventW(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR*, PVOID); - BOOL RevertToSelf(); - BOOL SetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); - BOOL SetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - BOOL SetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - BOOL SetHandleInformation(HANDLE, DWORD, DWORD); - BOOL SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - BOOL SetPrivateObjectSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, PGENERIC_MAPPING, HANDLE); - BOOL SetProcessAffinityMask(HANDLE, DWORD); - BOOL SetProcessPriorityBoost(HANDLE, BOOL); - BOOL SetProcessShutdownParameters(DWORD, DWORD); - BOOL SetProcessWorkingSetSize(HANDLE, SIZE_T, SIZE_T); - BOOL SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); - BOOL SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID, BOOL); - BOOL SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID, BOOL); - BOOL SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); - BOOL SetSystemTimeAdjustment(DWORD, BOOL); - DWORD SetTapeParameters(HANDLE, DWORD, PVOID); - DWORD SetTapePosition(HANDLE, DWORD, DWORD, DWORD, DWORD, BOOL); - BOOL SetThreadPriorityBoost(HANDLE, BOOL); - BOOL SetThreadToken(PHANDLE, HANDLE); - BOOL SetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD); - DWORD SignalObjectAndWait(HANDLE, HANDLE, DWORD, BOOL); - BOOL SwitchToThread(); - BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); - BOOL TryEnterCriticalSection(LPCRITICAL_SECTION); - BOOL UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED); - BOOL UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, PVOID, DWORD); - BOOL UpdateResourceW(HANDLE, LPCWSTR, LPCWSTR, WORD, PVOID, DWORD); - BOOL WriteFileGather(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); - DWORD WriteTapemark(HANDLE, DWORD, DWORD, BOOL); - - static if (_WIN32_WINNT >= 0x500) { - BOOL AddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID); - BOOL AddAccessDeniedAceEx(PACL, DWORD, DWORD, DWORD, PSID); - PVOID AddVectoredExceptionHandler(ULONG, PVECTORED_EXCEPTION_HANDLER); - BOOL AllocateUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); - BOOL AssignProcessToJobObject(HANDLE, HANDLE); - BOOL ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG); - LPVOID CreateFiberEx(SIZE_T, SIZE_T, DWORD, LPFIBER_START_ROUTINE, LPVOID); - HANDLE CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR); - HANDLE CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR); - BOOL CreateHardLinkA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateHardLinkW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); - HANDLE CreateJobObjectA(LPSECURITY_ATTRIBUTES, LPCSTR); - HANDLE CreateJobObjectW(LPSECURITY_ATTRIBUTES, LPCWSTR); - BOOL CreateProcessWithLogonW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateTimerQueue(); - BOOL CreateTimerQueueTimer(PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, DWORD, DWORD, ULONG); - BOOL DeleteTimerQueue(HANDLE); - BOOL DeleteTimerQueueEx(HANDLE, HANDLE); - BOOL DeleteTimerQueueTimer(HANDLE, HANDLE, HANDLE); - BOOL DeleteVolumeMountPointA(LPCSTR); - BOOL DeleteVolumeMountPointW(LPCWSTR); - BOOL DnsHostnameToComputerNameA(LPCSTR, LPSTR, LPDWORD); - BOOL DnsHostnameToComputerNameW(LPCWSTR, LPWSTR, LPDWORD); - BOOL EncryptFileA(LPCSTR); - BOOL EncryptFileW(LPCWSTR); - BOOL FileEncryptionStatusA(LPCSTR, LPDWORD); - BOOL FileEncryptionStatusW(LPCWSTR, LPDWORD); - HANDLE FindFirstVolumeA(LPCSTR, DWORD); - HANDLE FindFirstVolumeMountPointA(LPSTR, LPSTR, DWORD); - HANDLE FindFirstVolumeMountPointW(LPWSTR, LPWSTR, DWORD); - HANDLE FindFirstVolumeW(LPCWSTR, DWORD); - BOOL FindNextVolumeA(HANDLE, LPCSTR, DWORD); - BOOL FindNextVolumeW(HANDLE, LPWSTR, DWORD); - BOOL FindNextVolumeMountPointA(HANDLE, LPSTR, DWORD); - BOOL FindNextVolumeMountPointW(HANDLE, LPWSTR, DWORD); - BOOL FindVolumeClose(HANDLE); - BOOL FindVolumeMountPointClose(HANDLE); - BOOL FlushViewOfFile(PCVOID, DWORD); - BOOL FreeUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); - BOOL GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD); - BOOL GetComputerNameExW(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD); - BOOL GetFileSizeEx(HANDLE, PLARGE_INTEGER); - BOOL GetModuleHandleExA(DWORD, LPCSTR, HMODULE*); - BOOL GetModuleHandleExW(DWORD, LPCWSTR, HMODULE*); - HANDLE GetProcessHeap(); - DWORD GetProcessHeaps(DWORD, PHANDLE); - BOOL GetProcessIoCounters(HANDLE, PIO_COUNTERS); - BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); - UINT GetSystemWindowsDirectoryA(LPSTR, UINT); - UINT GetSystemWindowsDirectoryW(LPWSTR, UINT); - BOOL GetVolumeNameForVolumeMountPointA(LPCSTR, LPSTR, DWORD); - BOOL GetVolumeNameForVolumeMountPointW(LPCWSTR, LPWSTR, DWORD); - BOOL GetVolumePathNameA(LPCSTR, LPSTR, DWORD); - BOOL GetVolumePathNameW(LPCWSTR, LPWSTR, DWORD); - BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX); - BOOL IsBadCodePtr(FARPROC); - BOOL IsSystemResumeAutomatic(); - BOOL MapUserPhysicalPages(PVOID, ULONG_PTR, PULONG_PTR); - BOOL MapUserPhysicalPagesScatter(PVOID*, ULONG_PTR, PULONG_PTR); - PVOID MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, DWORD); - PVOID MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, PVOID); - HANDLE OpenFileMappingA(DWORD, BOOL, LPCSTR); - HANDLE OpenFileMappingW(DWORD, BOOL, LPCWSTR); - BOOL ProcessIdToSessionId(DWORD, DWORD*); - BOOL QueryInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD); - ULONG RemoveVectoredExceptionHandler(PVOID); - BOOL ReplaceFileA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID); - BOOL ReplaceFileW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPVOID, LPVOID); - BOOL SetComputerNameExA(COMPUTER_NAME_FORMAT, LPCSTR); - BOOL SetComputerNameExW(COMPUTER_NAME_FORMAT, LPCWSTR); - BOOL SetFilePointerEx(HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD); - BOOL SetInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD); - BOOL SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, SECURITY_DESCRIPTOR_CONTROL); - BOOL SetSystemPowerState(BOOL, BOOL); - EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE); - DWORD SetThreadIdealProcessor(HANDLE, DWORD); - BOOL SetVolumeMountPointA(LPCSTR, LPCSTR); - BOOL SetVolumeMountPointW(LPCWSTR, LPCWSTR); - BOOL TerminateJobObject(HANDLE, UINT); - BOOL UnmapViewOfFile(PVOID); - BOOL UnregisterWait(HANDLE); - BOOL UnregisterWaitEx(HANDLE, HANDLE); - BOOL VerifyVersionInfoA(LPOSVERSIONINFOEXA, DWORD, DWORDLONG); - BOOL VerifyVersionInfoW(LPOSVERSIONINFOEXW, DWORD, DWORDLONG); - } - - static if (_WIN32_WINNT >= 0x501) { - BOOL ActivateActCtx(HANDLE, ULONG_PTR*); - void AddRefActCtx(HANDLE); - BOOL CheckNameLegalDOS8Dot3A(LPCSTR, LPSTR, DWORD, PBOOL, PBOOL); - BOOL CheckNameLegalDOS8Dot3W(LPCWSTR, LPSTR, DWORD, PBOOL, PBOOL); - BOOL CheckRemoteDebuggerPresent(HANDLE, PBOOL); - BOOL ConvertFiberToThread(); - HANDLE CreateActCtxA(PCACTCTXA); - HANDLE CreateActCtxW(PCACTCTXW); - HANDLE CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE); - BOOL DeactivateActCtx(DWORD, ULONG_PTR); - BOOL DebugActiveProcessStop(DWORD); - BOOL DebugBreakProcess(HANDLE); - BOOL DebugSetProcessKillOnExit(BOOL); - BOOL FindActCtxSectionGuid(DWORD, const(GUID)*, ULONG, const(GUID)*, - PACTCTX_SECTION_KEYED_DATA); - BOOL FindActCtxSectionStringA(DWORD, const(GUID)*, ULONG, LPCSTR, - PACTCTX_SECTION_KEYED_DATA); - BOOL FindActCtxSectionStringW(DWORD, const(GUID)*, ULONG, LPCWSTR, - PACTCTX_SECTION_KEYED_DATA); - BOOL GetCurrentActCtx(HANDLE*); - VOID GetNativeSystemInfo(LPSYSTEM_INFO); - BOOL GetProcessHandleCount(HANDLE, PDWORD); - BOOL GetSystemRegistryQuota(PDWORD, PDWORD); - BOOL GetSystemTimes(LPFILETIME, LPFILETIME, LPFILETIME); - UINT GetSystemWow64DirectoryA(LPSTR, UINT); - UINT GetSystemWow64DirectoryW(LPWSTR, UINT); - BOOL GetThreadIOPendingFlag(HANDLE, PBOOL); - BOOL GetVolumePathNamesForVolumeNameA(LPCSTR, LPSTR, DWORD, PDWORD); - BOOL GetVolumePathNamesForVolumeNameW(LPCWSTR, LPWSTR, DWORD, PDWORD); - UINT GetWriteWatch(DWORD, PVOID, SIZE_T, PVOID*, PULONG_PTR, PULONG); - BOOL HeapQueryInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T); - BOOL HeapSetInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T); - BOOL IsProcessInJob(HANDLE, HANDLE, PBOOL); - BOOL IsWow64Process(HANDLE, PBOOL); - BOOL QueryActCtxW(DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T*); - BOOL QueryMemoryResourceNotification(HANDLE, PBOOL); - void ReleaseActCtx(HANDLE); - UINT ResetWriteWatch(LPVOID, SIZE_T); - BOOL SetFileShortNameA(HANDLE, LPCSTR); - BOOL SetFileShortNameW(HANDLE, LPCWSTR); - BOOL SetFileValidData(HANDLE, LONGLONG); - BOOL ZombifyActCtx(HANDLE); - } - - static if (_WIN32_WINNT >= 0x502) { - DWORD GetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); - DWORD GetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); - DWORD GetDllDirectoryA(DWORD, LPSTR); - DWORD GetDllDirectoryW(DWORD, LPWSTR); - DWORD GetThreadId(HANDLE); - DWORD GetProcessId(HANDLE); - HANDLE ReOpenFile(HANDLE, DWORD, DWORD, DWORD); - BOOL SetDllDirectoryA(LPCSTR); - BOOL SetDllDirectoryW(LPCWSTR); - BOOL SetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); - BOOL SetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); - } - - // ??? - static if (_WIN32_WINNT >= 0x510) { - VOID RestoreLastError(DWORD); - } -} - -mixin DECLARE_AW!("STARTUPINFO"); -version (Unicode) { - //alias STARTUPINFOW STARTUPINFO; - alias WIN32_FIND_DATAW WIN32_FIND_DATA; - alias ENUMRESLANGPROCW ENUMRESLANGPROC; - alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; - alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; - alias AddAtomW AddAtom; - alias BeginUpdateResourceW BeginUpdateResource; - alias BuildCommDCBW BuildCommDCB; - alias BuildCommDCBAndTimeoutsW BuildCommDCBAndTimeouts; - alias CallNamedPipeW CallNamedPipe; - alias CommConfigDialogW CommConfigDialog; - alias CopyFileW CopyFile; - alias CopyFileExW CopyFileEx; - alias CreateDirectoryW CreateDirectory; - alias CreateDirectoryExW CreateDirectoryEx; - alias CreateEventW CreateEvent; - alias CreateFileW CreateFile; - alias CreateMailslotW CreateMailslot; - alias CreateMutexW CreateMutex; - alias CreateProcessW CreateProcess; - alias CreateSemaphoreW CreateSemaphore; - alias DeleteFileW DeleteFile; - alias EndUpdateResourceW EndUpdateResource; - alias EnumResourceLanguagesW EnumResourceLanguages; - alias EnumResourceNamesW EnumResourceNames; - alias EnumResourceTypesW EnumResourceTypes; - alias ExpandEnvironmentStringsW ExpandEnvironmentStrings; - alias FatalAppExitW FatalAppExit; - alias FindAtomW FindAtom; - alias FindFirstChangeNotificationW FindFirstChangeNotification; - alias FindFirstFileW FindFirstFile; - alias FindNextFileW FindNextFile; - alias FindResourceW FindResource; - alias FindResourceExW FindResourceEx; - alias FormatMessageW FormatMessage; - alias FreeEnvironmentStringsW FreeEnvironmentStrings; - alias GetAtomNameW GetAtomName; - alias GetCommandLineW GetCommandLine; - alias GetComputerNameW GetComputerName; - alias GetCurrentDirectoryW GetCurrentDirectory; - alias GetDefaultCommConfigW GetDefaultCommConfig; - alias GetDiskFreeSpaceW GetDiskFreeSpace; - alias GetDiskFreeSpaceExW GetDiskFreeSpaceEx; - alias GetDriveTypeW GetDriveType; - alias GetEnvironmentStringsW GetEnvironmentStrings; - alias GetEnvironmentVariableW GetEnvironmentVariable; - alias GetFileAttributesW GetFileAttributes; - alias GetFullPathNameW GetFullPathName; - alias GetLogicalDriveStringsW GetLogicalDriveStrings; - alias GetModuleFileNameW GetModuleFileName; - alias GetModuleHandleW GetModuleHandle; - alias GetNamedPipeHandleStateW GetNamedPipeHandleState; - alias GetPrivateProfileIntW GetPrivateProfileInt; - alias GetPrivateProfileSectionW GetPrivateProfileSection; - alias GetPrivateProfileSectionNamesW GetPrivateProfileSectionNames; - alias GetPrivateProfileStringW GetPrivateProfileString; - alias GetPrivateProfileStructW GetPrivateProfileStruct; - alias GetProfileIntW GetProfileInt; - alias GetProfileSectionW GetProfileSection; - alias GetProfileStringW GetProfileString; - alias GetShortPathNameW GetShortPathName; - alias GetStartupInfoW GetStartupInfo; - alias GetSystemDirectoryW GetSystemDirectory; - alias GetTempFileNameW GetTempFileName; - alias GetTempPathW GetTempPath; - alias GetUserNameW GetUserName; - alias GetVersionExW GetVersionEx; - alias GetVolumeInformationW GetVolumeInformation; - alias GetWindowsDirectoryW GetWindowsDirectory; - alias GlobalAddAtomW GlobalAddAtom; - alias GlobalFindAtomW GlobalFindAtom; - alias GlobalGetAtomNameW GlobalGetAtomName; - alias IsBadStringPtrW IsBadStringPtr; - alias LoadLibraryW LoadLibrary; - alias LoadLibraryExW LoadLibraryEx; - alias lstrcatW lstrcat; - alias lstrcmpW lstrcmp; - alias lstrcmpiW lstrcmpi; - alias lstrcpyW lstrcpy; - alias lstrcpynW lstrcpyn; - alias lstrlenW lstrlen; - alias MoveFileW MoveFile; - alias OpenEventW OpenEvent; - alias OpenMutexW OpenMutex; - alias OpenSemaphoreW OpenSemaphore; - alias OutputDebugStringW OutputDebugString; - alias RemoveDirectoryW RemoveDirectory; - alias SearchPathW SearchPath; - alias SetComputerNameW SetComputerName; - alias SetCurrentDirectoryW SetCurrentDirectory; - alias SetDefaultCommConfigW SetDefaultCommConfig; - alias SetEnvironmentVariableW SetEnvironmentVariable; - alias SetFileAttributesW SetFileAttributes; - alias SetVolumeLabelW SetVolumeLabel; - alias WaitNamedPipeW WaitNamedPipe; - alias WritePrivateProfileSectionW WritePrivateProfileSection; - alias WritePrivateProfileStringW WritePrivateProfileString; - alias WritePrivateProfileStructW WritePrivateProfileStruct; - alias WriteProfileSectionW WriteProfileSection; - alias WriteProfileStringW WriteProfileString; - alias CreateWaitableTimerW CreateWaitableTimer; - alias GetFileAttributesExW GetFileAttributesEx; - alias GetLongPathNameW GetLongPathName; - alias QueryDosDeviceW QueryDosDevice; - - alias HW_PROFILE_INFOW HW_PROFILE_INFO; - alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; - alias BackupEventLogW BackupEventLog; - alias ClearEventLogW ClearEventLog; - alias CreateNamedPipeW CreateNamedPipe; - alias CreateProcessAsUserW CreateProcessAsUser; - alias DefineDosDeviceW DefineDosDevice; - alias FindFirstFileExW FindFirstFileEx; - alias GetBinaryTypeW GetBinaryType; - alias GetCompressedFileSizeW GetCompressedFileSize; - alias GetFileSecurityW GetFileSecurity; - alias LogonUserW LogonUser; - alias LookupAccountNameW LookupAccountName; - alias LookupAccountSidW LookupAccountSid; - alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; - alias LookupPrivilegeNameW LookupPrivilegeName; - alias LookupPrivilegeValueW LookupPrivilegeValue; - alias MoveFileExW MoveFileEx; - alias ObjectCloseAuditAlarmW ObjectCloseAuditAlarm; - alias ObjectDeleteAuditAlarmW ObjectDeleteAuditAlarm; - alias ObjectOpenAuditAlarmW ObjectOpenAuditAlarm; - alias ObjectPrivilegeAuditAlarmW ObjectPrivilegeAuditAlarm; - alias OpenBackupEventLogW OpenBackupEventLog; - alias OpenEventLogW OpenEventLog; - alias PrivilegedServiceAuditAlarmW PrivilegedServiceAuditAlarm; - alias ReadEventLogW ReadEventLog; - alias RegisterEventSourceW RegisterEventSource; - alias ReportEventW ReportEvent; - alias SetFileSecurityW SetFileSecurity; - alias UpdateResourceW UpdateResource; - - static if (_WIN32_WINNT >= 0x500) { - alias CreateFileMappingW CreateFileMapping; - alias CreateHardLinkW CreateHardLink; - alias CreateJobObjectW CreateJobObject; - alias DeleteVolumeMountPointW DeleteVolumeMountPoint; - alias DnsHostnameToComputerNameW DnsHostnameToComputerName; - alias EncryptFileW EncryptFile; - alias FileEncryptionStatusW FileEncryptionStatus; - alias FindFirstVolumeW FindFirstVolume; - alias FindFirstVolumeMountPointW FindFirstVolumeMountPoint; - alias FindNextVolumeW FindNextVolume; - alias FindNextVolumeMountPointW FindNextVolumeMountPoint; - alias GetModuleHandleExW GetModuleHandleEx; - alias GetSystemWindowsDirectoryW GetSystemWindowsDirectory; - alias GetVolumeNameForVolumeMountPointW GetVolumeNameForVolumeMountPoint; - alias GetVolumePathNameW GetVolumePathName; - alias OpenFileMappingW OpenFileMapping; - alias ReplaceFileW ReplaceFile; - alias SetVolumeMountPointW SetVolumeMountPoint; - alias VerifyVersionInfoW VerifyVersionInfo; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ACTCTXW ACTCTX; - alias CheckNameLegalDOS8Dot3W CheckNameLegalDOS8Dot3; - alias CreateActCtxW CreateActCtx; - alias FindActCtxSectionStringW FindActCtxSectionString; - alias GetSystemWow64DirectoryW GetSystemWow64Directory; - alias GetVolumePathNamesForVolumeNameW GetVolumePathNamesForVolumeName; - alias SetFileShortNameW SetFileShortName; - } - - static if (_WIN32_WINNT >= 0x502) { - alias SetFirmwareEnvironmentVariableW SetFirmwareEnvironmentVariable; - alias SetDllDirectoryW SetDllDirectory; - alias GetDllDirectoryW GetDllDirectory; - } - -} else { - //alias STARTUPINFOA STARTUPINFO; - alias WIN32_FIND_DATAA WIN32_FIND_DATA; - alias ENUMRESLANGPROCW ENUMRESLANGPROC; - alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; - alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; - alias AddAtomA AddAtom; - alias BeginUpdateResourceA BeginUpdateResource; - alias BuildCommDCBA BuildCommDCB; - alias BuildCommDCBAndTimeoutsA BuildCommDCBAndTimeouts; - alias CallNamedPipeA CallNamedPipe; - alias CommConfigDialogA CommConfigDialog; - alias CopyFileA CopyFile; - alias CopyFileExA CopyFileEx; - alias CreateDirectoryA CreateDirectory; - alias CreateDirectoryExA CreateDirectoryEx; - alias CreateEventA CreateEvent; - alias CreateFileA CreateFile; - alias CreateMailslotA CreateMailslot; - alias CreateMutexA CreateMutex; - alias CreateProcessA CreateProcess; - alias CreateSemaphoreA CreateSemaphore; - alias DeleteFileA DeleteFile; - alias EndUpdateResourceA EndUpdateResource; - alias EnumResourceLanguagesA EnumResourceLanguages; - alias EnumResourceNamesA EnumResourceNames; - alias EnumResourceTypesA EnumResourceTypes; - alias ExpandEnvironmentStringsA ExpandEnvironmentStrings; - alias FatalAppExitA FatalAppExit; - alias FindAtomA FindAtom; - alias FindFirstChangeNotificationA FindFirstChangeNotification; - alias FindFirstFileA FindFirstFile; - alias FindNextFileA FindNextFile; - alias FindResourceA FindResource; - alias FindResourceExA FindResourceEx; - alias FormatMessageA FormatMessage; - alias FreeEnvironmentStringsA FreeEnvironmentStrings; - alias GetAtomNameA GetAtomName; - alias GetCommandLineA GetCommandLine; - alias GetComputerNameA GetComputerName; - alias GetCurrentDirectoryA GetCurrentDirectory; - alias GetDefaultCommConfigA GetDefaultCommConfig; - alias GetDiskFreeSpaceA GetDiskFreeSpace; - alias GetDiskFreeSpaceExA GetDiskFreeSpaceEx; - alias GetDriveTypeA GetDriveType; - alias GetEnvironmentVariableA GetEnvironmentVariable; - alias GetFileAttributesA GetFileAttributes; - alias GetFullPathNameA GetFullPathName; - alias GetLogicalDriveStringsA GetLogicalDriveStrings; - alias GetNamedPipeHandleStateA GetNamedPipeHandleState; - alias GetModuleHandleA GetModuleHandle; - alias GetModuleFileNameA GetModuleFileName; - alias GetPrivateProfileIntA GetPrivateProfileInt; - alias GetPrivateProfileSectionA GetPrivateProfileSection; - alias GetPrivateProfileSectionNamesA GetPrivateProfileSectionNames; - alias GetPrivateProfileStringA GetPrivateProfileString; - alias GetPrivateProfileStructA GetPrivateProfileStruct; - alias GetProfileIntA GetProfileInt; - alias GetProfileSectionA GetProfileSection; - alias GetProfileStringA GetProfileString; - alias GetShortPathNameA GetShortPathName; - alias GetStartupInfoA GetStartupInfo; - alias GetSystemDirectoryA GetSystemDirectory; - alias GetTempFileNameA GetTempFileName; - alias GetTempPathA GetTempPath; - alias GetUserNameA GetUserName; - alias GetVersionExA GetVersionEx; - alias GetVolumeInformationA GetVolumeInformation; - alias GetWindowsDirectoryA GetWindowsDirectory; - alias GlobalAddAtomA GlobalAddAtom; - alias GlobalFindAtomA GlobalFindAtom; - alias GlobalGetAtomNameA GlobalGetAtomName; - alias IsBadStringPtrA IsBadStringPtr; - alias LoadLibraryA LoadLibrary; - alias LoadLibraryExA LoadLibraryEx; - alias lstrcatA lstrcat; - alias lstrcmpA lstrcmp; - alias lstrcmpiA lstrcmpi; - alias lstrcpyA lstrcpy; - alias lstrcpynA lstrcpyn; - alias lstrlenA lstrlen; - alias MoveFileA MoveFile; - alias OpenEventA OpenEvent; - alias OpenMutexA OpenMutex; - alias OpenSemaphoreA OpenSemaphore; - alias OutputDebugStringA OutputDebugString; - alias RemoveDirectoryA RemoveDirectory; - alias SearchPathA SearchPath; - alias SetComputerNameA SetComputerName; - alias SetCurrentDirectoryA SetCurrentDirectory; - alias SetDefaultCommConfigA SetDefaultCommConfig; - alias SetEnvironmentVariableA SetEnvironmentVariable; - alias SetFileAttributesA SetFileAttributes; - alias SetVolumeLabelA SetVolumeLabel; - alias WaitNamedPipeA WaitNamedPipe; - alias WritePrivateProfileSectionA WritePrivateProfileSection; - alias WritePrivateProfileStringA WritePrivateProfileString; - alias WritePrivateProfileStructA WritePrivateProfileStruct; - alias WriteProfileSectionA WriteProfileSection; - alias WriteProfileStringA WriteProfileString; - alias CreateWaitableTimerA CreateWaitableTimer; - alias GetFileAttributesExA GetFileAttributesEx; - alias GetLongPathNameA GetLongPathName; - alias QueryDosDeviceA QueryDosDevice; - - alias HW_PROFILE_INFOA HW_PROFILE_INFO; - alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; - alias BackupEventLogA BackupEventLog; - alias ClearEventLogA ClearEventLog; - alias CreateNamedPipeA CreateNamedPipe; - alias CreateProcessAsUserA CreateProcessAsUser; - alias DefineDosDeviceA DefineDosDevice; - alias FindFirstFileExA FindFirstFileEx; - alias GetBinaryTypeA GetBinaryType; - alias GetCompressedFileSizeA GetCompressedFileSize; - alias GetFileSecurityA GetFileSecurity; - alias LogonUserA LogonUser; - alias LookupAccountNameA LookupAccountName; - alias LookupAccountSidA LookupAccountSid; - alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; - alias LookupPrivilegeNameA LookupPrivilegeName; - alias LookupPrivilegeValueA LookupPrivilegeValue; - alias MoveFileExA MoveFileEx; - alias ObjectCloseAuditAlarmA ObjectCloseAuditAlarm; - alias ObjectDeleteAuditAlarmA ObjectDeleteAuditAlarm; - alias ObjectOpenAuditAlarmA ObjectOpenAuditAlarm; - alias ObjectPrivilegeAuditAlarmA ObjectPrivilegeAuditAlarm; - alias OpenBackupEventLogA OpenBackupEventLog; - alias OpenEventLogA OpenEventLog; - alias PrivilegedServiceAuditAlarmA PrivilegedServiceAuditAlarm; - alias ReadEventLogA ReadEventLog; - alias RegisterEventSourceA RegisterEventSource; - alias ReportEventA ReportEvent; - alias SetFileSecurityA SetFileSecurity; - alias UpdateResourceA UpdateResource; - - static if (_WIN32_WINNT >= 0x500) { - alias CreateFileMappingA CreateFileMapping; - alias CreateHardLinkA CreateHardLink; - alias CreateJobObjectA CreateJobObject; - alias DeleteVolumeMountPointA DeleteVolumeMountPoint; - alias DnsHostnameToComputerNameA DnsHostnameToComputerName; - alias EncryptFileA EncryptFile; - alias FileEncryptionStatusA FileEncryptionStatus; - alias FindFirstVolumeA FindFirstVolume; - alias FindFirstVolumeMountPointA FindFirstVolumeMountPoint; - alias FindNextVolumeA FindNextVolume; - alias FindNextVolumeMountPointA FindNextVolumeMountPoint; - alias GetModuleHandleExA GetModuleHandleEx; - alias GetSystemWindowsDirectoryA GetSystemWindowsDirectory; - alias GetVolumeNameForVolumeMountPointA GetVolumeNameForVolumeMountPoint; - alias GetVolumePathNameA GetVolumePathName; - alias OpenFileMappingA OpenFileMapping; - alias ReplaceFileA ReplaceFile; - alias SetVolumeMountPointA SetVolumeMountPoint; - alias VerifyVersionInfoA VerifyVersionInfo; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ACTCTXA ACTCTX; - alias CheckNameLegalDOS8Dot3A CheckNameLegalDOS8Dot3; - alias CreateActCtxA CreateActCtx; - alias FindActCtxSectionStringA FindActCtxSectionString; - alias GetSystemWow64DirectoryA GetSystemWow64Directory; - alias GetVolumePathNamesForVolumeNameA GetVolumePathNamesForVolumeName; - alias SetFileShortNameA SetFileShortName; - } - - static if (_WIN32_WINNT >= 0x502) { - alias GetDllDirectoryA GetDllDirectory; - alias SetDllDirectoryA SetDllDirectory; - alias SetFirmwareEnvironmentVariableA SetFirmwareEnvironmentVariable; - } -} - -alias STARTUPINFO* LPSTARTUPINFO; -alias WIN32_FIND_DATA* LPWIN32_FIND_DATA; - -alias HW_PROFILE_INFO* LPHW_PROFILE_INFO; - -static if (_WIN32_WINNT >= 0x501) { - alias ACTCTX* PACTCTX, PCACTCTX; -} +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.10 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winbase.d) + */ +module core.sys.windows.winbase; +pragma(lib, "kernel32"); + +/** +Translation Notes: +The following macros are obsolete, and have no effect. + +LockSegment(w), MakeProcInstance(p, i), UnlockResource(h), UnlockSegment(w) +FreeModule(m), FreeProcInstance(p), GetFreeSpace(w), DefineHandleTable(w) +SetSwapAreaSize(w), LimitEmsPages(n), Yield() + +// The following Win16 functions are obselete in Win32. + + int _hread(HFILE, LPVOID, int); + int _hwrite(HFILE, LPCSTR, int); + HFILE _lclose(HFILE); + HFILE _lcreat(LPCSTR, int); + LONG _llseek(HFILE, LONG, int); + HFILE _lopen(LPCSTR, int); + UINT _lread(HFILE, LPVOID, UINT); + UINT _lwrite(HFILE, LPCSTR, UINT); + SIZE_T GlobalCompact(DWORD); + VOID GlobalFix(HGLOBAL); +* MSDN contradicts itself on GlobalFlags: +* "This function is provided only for compatibility with 16-bit versions of Windows." +* but also requires Windows 2000 or above + UINT GlobalFlags(HGLOBAL); + VOID GlobalUnfix(HGLOBAL); + BOOL GlobalUnWire(HGLOBAL); + PVOID GlobalWire(HGLOBAL); + SIZE_T LocalCompact(UINT); + UINT LocalFlags(HLOCAL); + SIZE_T LocalShrink(HLOCAL, UINT); + +// These are not required for DMD. + +//FIXME: +// #ifndef UNDER_CE + int WinMain(HINSTANCE, HINSTANCE, LPSTR, int); +#else + int WinMain(HINSTANCE, HINSTANCE, LPWSTR, int); +#endif +int wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); + +*/ + +import core.sys.windows.windef, core.sys.windows.winver; +private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winnt; + +// FIXME: +alias void va_list; + + +/+ +//-------------------------------------- +// These functions are problematic + +version(UseNtoSKernel) {}else { + /* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h + as __fastcall functions, but are exported from kernel32.dll as __stdcall */ + static if (_WIN32_WINNT >= 0x501) { + VOID InitializeSListHead(PSLIST_HEADER); + } + LONG InterlockedCompareExchange(LPLONG, LONG, LONG); + // PVOID WINAPI InterlockedCompareExchangePointer(PVOID*, PVOID, PVOID); + (PVOID)InterlockedCompareExchange((LPLONG)(d) (PVOID)InterlockedCompareExchange((LPLONG)(d), (LONG)(e), (LONG)(c)) + LONG InterlockedDecrement(LPLONG); + LONG InterlockedExchange(LPLONG, LONG); + // PVOID WINAPI InterlockedExchangePointer(PVOID*, PVOID); + (PVOID)InterlockedExchange((LPLONG)((PVOID)InterlockedExchange((LPLONG)(t), (LONG)(v)) + LONG InterlockedExchangeAdd(LPLONG, LONG); + + static if (_WIN32_WINNT >= 0x501) { + PSLIST_ENTRY InterlockedFlushSList(PSLIST_HEADER); + } + LONG InterlockedIncrement(LPLONG); + static if (_WIN32_WINNT >= 0x501) { + PSLIST_ENTRY InterlockedPopEntrySList(PSLIST_HEADER); + PSLIST_ENTRY InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); + } +} // #endif // __USE_NTOSKRNL__ +//-------------------------------------- ++/ + +// COMMPROP structure, used by GetCommProperties() +// ----------------------------------------------- + +// Communications provider type +enum : DWORD { + PST_UNSPECIFIED, + PST_RS232, + PST_PARALLELPORT, + PST_RS422, + PST_RS423, + PST_RS449, + PST_MODEM, // = 6 + PST_FAX = 0x0021, + PST_SCANNER = 0x0022, + PST_NETWORK_BRIDGE = 0x0100, + PST_LAT = 0x0101, + PST_TCPIP_TELNET = 0x0102, + PST_X25 = 0x0103 +} + +// Max baud rate +enum : DWORD { + BAUD_075 = 0x00000001, + BAUD_110 = 0x00000002, + BAUD_134_5 = 0x00000004, + BAUD_150 = 0x00000008, + BAUD_300 = 0x00000010, + BAUD_600 = 0x00000020, + BAUD_1200 = 0x00000040, + BAUD_1800 = 0x00000080, + BAUD_2400 = 0x00000100, + BAUD_4800 = 0x00000200, + BAUD_7200 = 0x00000400, + BAUD_9600 = 0x00000800, + BAUD_14400 = 0x00001000, + BAUD_19200 = 0x00002000, + BAUD_38400 = 0x00004000, + BAUD_56K = 0x00008000, + BAUD_128K = 0x00010000, + BAUD_115200 = 0x00020000, + BAUD_57600 = 0x00040000, + BAUD_USER = 0x10000000 +} + +// Comm capabilities +enum : DWORD { + PCF_DTRDSR = 0x0001, + PCF_RTSCTS = 0x0002, + PCF_RLSD = 0x0004, + PCF_PARITY_CHECK = 0x0008, + PCF_XONXOFF = 0x0010, + PCF_SETXCHAR = 0x0020, + PCF_TOTALTIMEOUTS = 0x0040, + PCF_INTTIMEOUTS = 0x0080, + PCF_SPECIALCHARS = 0x0100, + PCF_16BITMODE = 0x0200 +} + +enum : DWORD { + SP_PARITY = 1, + SP_BAUD = 2, + SP_DATABITS = 4, + SP_STOPBITS = 8, + SP_HANDSHAKING = 16, + SP_PARITY_CHECK = 32, + SP_RLSD = 64 +} + +enum : DWORD { + DATABITS_5 = 1, + DATABITS_6 = 2, + DATABITS_7 = 4, + DATABITS_8 = 8, + DATABITS_16 = 16, + DATABITS_16X = 32 +} + +enum : WORD { + STOPBITS_10 = 0x0001, + STOPBITS_15 = 0x0002, + STOPBITS_20 = 0x0004, + PARITY_NONE = 0x0100, + PARITY_ODD = 0x0200, + PARITY_EVEN = 0x0400, + PARITY_MARK = 0x0800, + PARITY_SPACE = 0x1000 +} + +// used by dwServiceMask +enum SP_SERIALCOMM = 1; + +struct COMMPROP { + WORD wPacketLength; + WORD wPacketVersion; + DWORD dwServiceMask; + DWORD dwReserved1; + DWORD dwMaxTxQueue; + DWORD dwMaxRxQueue; + DWORD dwMaxBaud; + DWORD dwProvSubType; + DWORD dwProvCapabilities; + DWORD dwSettableParams; + DWORD dwSettableBaud; + WORD wSettableData; + WORD wSettableStopParity; + DWORD dwCurrentTxQueue; + DWORD dwCurrentRxQueue; + DWORD dwProvSpec1; + DWORD dwProvSpec2; + WCHAR _wcProvChar; + + WCHAR* wcProvChar() { return &_wcProvChar; } +} +alias COMMPROP* LPCOMMPROP; + +// ---------- + +// for DEBUG_EVENT +enum : DWORD { + EXCEPTION_DEBUG_EVENT = 1, + CREATE_THREAD_DEBUG_EVENT, + CREATE_PROCESS_DEBUG_EVENT, + EXIT_THREAD_DEBUG_EVENT, + EXIT_PROCESS_DEBUG_EVENT, + LOAD_DLL_DEBUG_EVENT, + UNLOAD_DLL_DEBUG_EVENT, + OUTPUT_DEBUG_STRING_EVENT, + RIP_EVENT +} + +const HFILE HFILE_ERROR = cast(HFILE) (-1); + +// for SetFilePointer() +enum : DWORD { + FILE_BEGIN = 0, + FILE_CURRENT = 1, + FILE_END = 2 +} +const DWORD INVALID_SET_FILE_POINTER = -1; + + +// for OpenFile() +deprecated enum : UINT { + OF_READ = 0, + OF_WRITE = 0x0001, + OF_READWRITE = 0x0002, + OF_SHARE_COMPAT = 0, + OF_SHARE_EXCLUSIVE = 0x0010, + OF_SHARE_DENY_WRITE = 0x0020, + OF_SHARE_DENY_READ = 0x0030, + OF_SHARE_DENY_NONE = 0x0040, + OF_PARSE = 0x0100, + OF_DELETE = 0x0200, + OF_VERIFY = 0x0400, + OF_CANCEL = 0x0800, + OF_CREATE = 0x1000, + OF_PROMPT = 0x2000, + OF_EXIST = 0x4000, + OF_REOPEN = 0x8000 +} + +enum : DWORD { + NMPWAIT_NOWAIT = 1, + NMPWAIT_WAIT_FOREVER = -1, + NMPWAIT_USE_DEFAULT_WAIT = 0 +} + +// for ClearCommError() +const DWORD + CE_RXOVER = 0x0001, + CE_OVERRUN = 0x0002, + CE_RXPARITY = 0x0004, + CE_FRAME = 0x0008, + CE_BREAK = 0x0010, + CE_TXFULL = 0x0100, + CE_PTO = 0x0200, + CE_IOE = 0x0400, + CE_DNS = 0x0800, + CE_OOP = 0x1000, + CE_MODE = 0x8000; + +// for CopyProgressRoutine callback. +enum : DWORD { + PROGRESS_CONTINUE = 0, + PROGRESS_CANCEL = 1, + PROGRESS_STOP = 2, + PROGRESS_QUIET = 3 +} + +enum : DWORD { + CALLBACK_CHUNK_FINISHED = 0, + CALLBACK_STREAM_SWITCH = 1 +} + +// CopyFileEx() +enum : DWORD { + COPY_FILE_FAIL_IF_EXISTS = 1, + COPY_FILE_RESTARTABLE = 2 +} + +enum : DWORD { + FILE_MAP_COPY = 1, + FILE_MAP_WRITE = 2, + FILE_MAP_READ = 4, + FILE_MAP_ALL_ACCESS = 0x000F001F +} + +enum : DWORD { + MUTEX_ALL_ACCESS = 0x001f0001, + MUTEX_MODIFY_STATE = 0x00000001, + SEMAPHORE_ALL_ACCESS = 0x001f0003, + SEMAPHORE_MODIFY_STATE = 0x00000002, + EVENT_ALL_ACCESS = 0x001f0003, + EVENT_MODIFY_STATE = 0x00000002 +} + +// CreateNamedPipe() +enum : DWORD { + PIPE_ACCESS_INBOUND = 1, + PIPE_ACCESS_OUTBOUND = 2, + PIPE_ACCESS_DUPLEX = 3 +} + +const DWORD + PIPE_TYPE_BYTE = 0, + PIPE_TYPE_MESSAGE = 4, + PIPE_READMODE_BYTE = 0, + PIPE_READMODE_MESSAGE = 2, + PIPE_WAIT = 0, + PIPE_NOWAIT = 1; + +// GetNamedPipeInfo() +const DWORD + PIPE_CLIENT_END = 0, + PIPE_SERVER_END = 1; + +const DWORD PIPE_UNLIMITED_INSTANCES = 255; + +// dwCreationFlags for CreateProcess() and CreateProcessAsUser() +enum : DWORD { + DEBUG_PROCESS = 0x00000001, + DEBUG_ONLY_THIS_PROCESS = 0x00000002, + CREATE_SUSPENDED = 0x00000004, + DETACHED_PROCESS = 0x00000008, + CREATE_NEW_CONSOLE = 0x00000010, + NORMAL_PRIORITY_CLASS = 0x00000020, + IDLE_PRIORITY_CLASS = 0x00000040, + HIGH_PRIORITY_CLASS = 0x00000080, + REALTIME_PRIORITY_CLASS = 0x00000100, + CREATE_NEW_PROCESS_GROUP = 0x00000200, + CREATE_UNICODE_ENVIRONMENT = 0x00000400, + CREATE_SEPARATE_WOW_VDM = 0x00000800, + CREATE_SHARED_WOW_VDM = 0x00001000, + CREATE_FORCEDOS = 0x00002000, + BELOW_NORMAL_PRIORITY_CLASS = 0x00004000, + ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000, + CREATE_BREAKAWAY_FROM_JOB = 0x01000000, + CREATE_WITH_USERPROFILE = 0x02000000, + CREATE_DEFAULT_ERROR_MODE = 0x04000000, + CREATE_NO_WINDOW = 0x08000000, + PROFILE_USER = 0x10000000, + PROFILE_KERNEL = 0x20000000, + PROFILE_SERVER = 0x40000000 +} + +const DWORD CONSOLE_TEXTMODE_BUFFER = 1; + +// CreateFile() +enum : DWORD { + CREATE_NEW = 1, + CREATE_ALWAYS, + OPEN_EXISTING, + OPEN_ALWAYS, + TRUNCATE_EXISTING +} + +// CreateFile() +const DWORD + FILE_FLAG_WRITE_THROUGH = 0x80000000, + FILE_FLAG_OVERLAPPED = 0x40000000, + FILE_FLAG_NO_BUFFERING = 0x20000000, + FILE_FLAG_RANDOM_ACCESS = 0x10000000, + FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000, + FILE_FLAG_DELETE_ON_CLOSE = 0x04000000, + FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, + FILE_FLAG_POSIX_SEMANTICS = 0x01000000, + FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000, + FILE_FLAG_OPEN_NO_RECALL = 0x00100000; + +static if (_WIN32_WINNT >= 0x500) { + const DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; +} + +// for CreateFile() +const DWORD + SECURITY_ANONYMOUS = SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16, + SECURITY_IDENTIFICATION = SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16, + SECURITY_IMPERSONATION = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16, + SECURITY_DELEGATION = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation<<16, + SECURITY_CONTEXT_TRACKING = 0x00040000, + SECURITY_EFFECTIVE_ONLY = 0x00080000, + SECURITY_SQOS_PRESENT = 0x00100000, + SECURITY_VALID_SQOS_FLAGS = 0x001F0000; + + +// Thread exit code +const DWORD STILL_ACTIVE = 0x103; + +/* ??? The only documentation of this seems to be about Windows CE and to + * state what _doesn't_ support it. + */ +const DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; + +// GetBinaryType() +enum : DWORD { + SCS_32BIT_BINARY = 0, + SCS_DOS_BINARY, + SCS_WOW_BINARY, + SCS_PIF_BINARY, + SCS_POSIX_BINARY, + SCS_OS216_BINARY +} + +const size_t + MAX_COMPUTERNAME_LENGTH = 15, + HW_PROFILE_GUIDLEN = 39, + MAX_PROFILE_LEN = 80; + +// HW_PROFILE_INFO +const DWORD + DOCKINFO_UNDOCKED = 1, + DOCKINFO_DOCKED = 2, + DOCKINFO_USER_SUPPLIED = 4, + DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED, + DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED; + +// DriveType(), RealDriveType() +enum : int { + DRIVE_UNKNOWN = 0, + DRIVE_NO_ROOT_DIR, + DRIVE_REMOVABLE, + DRIVE_FIXED, + DRIVE_REMOTE, + DRIVE_CDROM, + DRIVE_RAMDISK +} + +// GetFileType() +enum : DWORD { + FILE_TYPE_UNKNOWN = 0, + FILE_TYPE_DISK, + FILE_TYPE_CHAR, + FILE_TYPE_PIPE, + FILE_TYPE_REMOTE = 0x8000 +} + +// Get/SetHandleInformation() +const DWORD + HANDLE_FLAG_INHERIT = 0x01, + HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x02; + +enum : DWORD { + STD_INPUT_HANDLE = 0xFFFFFFF6, + STD_OUTPUT_HANDLE = 0xFFFFFFF5, + STD_ERROR_HANDLE = 0xFFFFFFF4 +} + +enum HANDLE INVALID_HANDLE_VALUE = cast(HANDLE) (-1); + +enum : DWORD { + GET_TAPE_MEDIA_INFORMATION = 0, + GET_TAPE_DRIVE_INFORMATION = 1 +} + +enum : DWORD { + SET_TAPE_MEDIA_INFORMATION = 0, + SET_TAPE_DRIVE_INFORMATION = 1 +} + +// SetThreadPriority()/GetThreadPriority() +enum : int { + THREAD_PRIORITY_IDLE = -15, + THREAD_PRIORITY_LOWEST = -2, + THREAD_PRIORITY_BELOW_NORMAL = -1, + THREAD_PRIORITY_NORMAL = 0, + THREAD_PRIORITY_ABOVE_NORMAL = 1, + THREAD_PRIORITY_HIGHEST = 2, + THREAD_PRIORITY_TIME_CRITICAL = 15, + THREAD_PRIORITY_ERROR_RETURN = 2147483647 +} + +enum : DWORD { + TIME_ZONE_ID_UNKNOWN, + TIME_ZONE_ID_STANDARD, + TIME_ZONE_ID_DAYLIGHT, + TIME_ZONE_ID_INVALID = 0xFFFFFFFF +} + +const DWORD + FS_CASE_SENSITIVE = 1, + FS_CASE_IS_PRESERVED = 2, + FS_UNICODE_STORED_ON_DISK = 4, + FS_PERSISTENT_ACLS = 8, + FS_FILE_COMPRESSION = 16, + FS_VOL_IS_COMPRESSED = 32768; + +// Flags for GlobalAlloc +const UINT + GMEM_FIXED = 0, + GMEM_MOVEABLE = 0x0002, + GMEM_ZEROINIT = 0x0040, + GPTR = 0x0040, + GHND = 0x0042, + GMEM_MODIFY = 0x0080, // used only for GlobalRealloc + GMEM_VALID_FLAGS = 0x7F72; + +/+ // Obselete flags (Win16 only) + GMEM_NOCOMPACT=16; + GMEM_NODISCARD=32; + GMEM_DISCARDABLE=256; + GMEM_NOT_BANKED=4096; + GMEM_LOWER=4096; + GMEM_SHARE=8192; + GMEM_DDESHARE=8192; + + GMEM_LOCKCOUNT=255; + +// for GlobalFlags() + GMEM_DISCARDED = 16384; + GMEM_INVALID_HANDLE = 32768; + + GMEM_NOTIFY = 16384; ++/ + +const UINT + LMEM_FIXED = 0, + LMEM_MOVEABLE = 0x0002, + LMEM_NONZEROLPTR = 0, + NONZEROLPTR = 0, + LMEM_NONZEROLHND = 0x0002, + NONZEROLHND = 0x0002, + LMEM_DISCARDABLE = 0x0F00, + LMEM_NOCOMPACT = 0x0010, + LMEM_NODISCARD = 0x0020, + LMEM_ZEROINIT = 0x0040, + LPTR = 0x0040, + LHND = 0x0042, + LMEM_MODIFY = 0x0080, + LMEM_LOCKCOUNT = 0x00FF, + LMEM_DISCARDED = 0x4000, + LMEM_INVALID_HANDLE = 0x8000; + + + +// used in EXCEPTION_RECORD +enum : DWORD { + STATUS_WAIT_0 = 0, + STATUS_ABANDONED_WAIT_0 = 0x00000080, + STATUS_USER_APC = 0x000000C0, + STATUS_TIMEOUT = 0x00000102, + STATUS_PENDING = 0x00000103, + + STATUS_SEGMENT_NOTIFICATION = 0x40000005, + STATUS_GUARD_PAGE_VIOLATION = 0x80000001, + STATUS_DATATYPE_MISALIGNMENT = 0x80000002, + STATUS_BREAKPOINT = 0x80000003, + STATUS_SINGLE_STEP = 0x80000004, + + STATUS_ACCESS_VIOLATION = 0xC0000005, + STATUS_IN_PAGE_ERROR = 0xC0000006, + STATUS_INVALID_HANDLE = 0xC0000008, + + STATUS_NO_MEMORY = 0xC0000017, + STATUS_ILLEGAL_INSTRUCTION = 0xC000001D, + STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025, + STATUS_INVALID_DISPOSITION = 0xC0000026, + STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C, + STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D, + STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E, + STATUS_FLOAT_INEXACT_RESULT = 0xC000008F, + STATUS_FLOAT_INVALID_OPERATION = 0xC0000090, + STATUS_FLOAT_OVERFLOW = 0xC0000091, + STATUS_FLOAT_STACK_CHECK = 0xC0000092, + STATUS_FLOAT_UNDERFLOW = 0xC0000093, + STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094, + STATUS_INTEGER_OVERFLOW = 0xC0000095, + STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096, + STATUS_STACK_OVERFLOW = 0xC00000FD, + STATUS_CONTROL_C_EXIT = 0xC000013A, + STATUS_DLL_INIT_FAILED = 0xC0000142, + STATUS_DLL_INIT_FAILED_LOGOFF = 0xC000026B, + + CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT, + + EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION, + EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT, + EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT, + EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP, + EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED, + EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND, + EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO, + EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT, + EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION, + EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW, + EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK, + EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW, + EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO, + EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW, + EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION, + EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR, + EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION, + EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION, + EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW, + EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION, + EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION, + EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE +} + +// for PROCESS_HEAP_ENTRY +const WORD + PROCESS_HEAP_REGION = 1, + PROCESS_HEAP_UNCOMMITTED_RANGE = 2, + PROCESS_HEAP_ENTRY_BUSY = 4, + PROCESS_HEAP_ENTRY_MOVEABLE = 16, + PROCESS_HEAP_ENTRY_DDESHARE = 32; + +// for LoadLibraryEx() +const DWORD + DONT_RESOLVE_DLL_REFERENCES = 0x01, // not for WinME and earlier + LOAD_LIBRARY_AS_DATAFILE = 0x02, + LOAD_WITH_ALTERED_SEARCH_PATH = 0x08, + LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10; // only for XP and later + +// for LockFile() +const DWORD + LOCKFILE_FAIL_IMMEDIATELY = 1, + LOCKFILE_EXCLUSIVE_LOCK = 2; + +const MAXIMUM_WAIT_OBJECTS = 64; +const MAXIMUM_SUSPEND_COUNT = 0x7F; + +const WAIT_OBJECT_0 = 0; +const WAIT_ABANDONED_0 = 128; + +//const WAIT_TIMEOUT=258; // also in winerror.h + +enum : DWORD { + WAIT_IO_COMPLETION = 0x000000C0, + WAIT_ABANDONED = 0x00000080, + WAIT_FAILED = 0xFFFFFFFF +} + +// PurgeComm() +const DWORD + PURGE_TXABORT = 1, + PURGE_RXABORT = 2, + PURGE_TXCLEAR = 4, + PURGE_RXCLEAR = 8; + +// ReadEventLog() +const DWORD + EVENTLOG_SEQUENTIAL_READ = 1, + EVENTLOG_SEEK_READ = 2, + EVENTLOG_FORWARDS_READ = 4, + EVENTLOG_BACKWARDS_READ = 8; + +// ReportEvent() +enum : WORD { + EVENTLOG_SUCCESS = 0, + EVENTLOG_ERROR_TYPE = 1, + EVENTLOG_WARNING_TYPE = 2, + EVENTLOG_INFORMATION_TYPE = 4, + EVENTLOG_AUDIT_SUCCESS = 8, + EVENTLOG_AUDIT_FAILURE = 16 +} + +// FormatMessage() +const DWORD + FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100, + FORMAT_MESSAGE_IGNORE_INSERTS = 0x0200, + FORMAT_MESSAGE_FROM_STRING = 0x0400, + FORMAT_MESSAGE_FROM_HMODULE = 0x0800, + FORMAT_MESSAGE_FROM_SYSTEM = 0x1000, + FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x2000; + +const DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; + +// also in ddk/ntapi.h +// To restore default error mode, call SetErrorMode(0) +enum { + SEM_FAILCRITICALERRORS = 0x0001, + SEM_NOGPFAULTERRORBOX = 0x0002, + SEM_NOALIGNMENTFAULTEXCEPT = 0x0004, + SEM_NOOPENFILEERRORBOX = 0x8000 +} +// end ntapi.h + +enum { + SLE_ERROR = 1, + SLE_MINORERROR, + SLE_WARNING +} + +const SHUTDOWN_NORETRY = 1; + +// Return type for exception filters. +enum : LONG { + EXCEPTION_EXECUTE_HANDLER = 1, + EXCEPTION_CONTINUE_EXECUTION = -1, + EXCEPTION_CONTINUE_SEARCH = 0 +} + +enum : ATOM { + MAXINTATOM = 0xC000, + INVALID_ATOM = 0 +} + +const IGNORE = 0; +const INFINITE = 0xFFFFFFFF; + +// EscapeCommFunction() +enum { + SETXOFF = 1, + SETXON, + SETRTS, + CLRRTS, + SETDTR, + CLRDTR, // = 6 + SETBREAK = 8, + CLRBREAK = 9 +} + + +// for SetCommMask() +const DWORD + EV_RXCHAR = 0x0001, + EV_RXFLAG = 0x0002, + EV_TXEMPTY = 0x0004, + EV_CTS = 0x0008, + EV_DSR = 0x0010, + EV_RLSD = 0x0020, + EV_BREAK = 0x0040, + EV_ERR = 0x0080, + EV_RING = 0x0100, + EV_PERR = 0x0200, + EV_RX80FULL = 0x0400, + EV_EVENT1 = 0x0800, + EV_EVENT2 = 0x1000; + +// GetCommModemStatus() +const DWORD + MS_CTS_ON = 0x0010, + MS_DSR_ON = 0x0020, + MS_RING_ON = 0x0040, + MS_RLSD_ON = 0x0080; + + +// DCB +enum : BYTE { + NOPARITY = 0, + ODDPARITY, + EVENPARITY, + MARKPARITY, + SPACEPARITY +} +// DCB +enum : BYTE { + ONESTOPBIT = 0, + ONE5STOPBITS, + TWOSTOPBITS +} +// DCB +enum : DWORD { + CBR_110 = 110, + CBR_300 = 300, + CBR_600 = 600, + CBR_1200 = 1200, + CBR_2400 = 2400, + CBR_4800 = 4800, + CBR_9600 = 9600, + CBR_14400 = 14400, + CBR_19200 = 19200, + CBR_38400 = 38400, + CBR_56000 = 56000, + CBR_57600 = 57600, + CBR_115200 = 115200, + CBR_128000 = 128000, + CBR_256000 = 256000 +} +// DCB, 2-bit bitfield +enum { + DTR_CONTROL_DISABLE = 0, + DTR_CONTROL_ENABLE, + DTR_CONTROL_HANDSHAKE +} + +// DCB, 2-bit bitfield +enum { + RTS_CONTROL_DISABLE = 0, + RTS_CONTROL_ENABLE, + RTS_CONTROL_HANDSHAKE, + RTS_CONTROL_TOGGLE, +} + +// WIN32_STREAM_ID +enum : DWORD { + BACKUP_INVALID = 0, + BACKUP_DATA, + BACKUP_EA_DATA, + BACKUP_SECURITY_DATA, + BACKUP_ALTERNATE_DATA, + BACKUP_LINK, + BACKUP_PROPERTY_DATA, + BACKUP_OBJECT_ID, + BACKUP_REPARSE_DATA, + BACKUP_SPARSE_BLOCK +} + +// WIN32_STREAM_ID +enum : DWORD { + STREAM_NORMAL_ATTRIBUTE = 0, + STREAM_MODIFIED_WHEN_READ = 1, + STREAM_CONTAINS_SECURITY = 2, + STREAM_CONTAINS_PROPERTIES = 4 +} + +// STARTUPINFO +const DWORD + STARTF_USESHOWWINDOW = 0x0001, + STARTF_USESIZE = 0x0002, + STARTF_USEPOSITION = 0x0004, + STARTF_USECOUNTCHARS = 0x0008, + STARTF_USEFILLATTRIBUTE = 0x0010, + STARTF_RUNFULLSCREEN = 0x0020, + STARTF_FORCEONFEEDBACK = 0x0040, + STARTF_FORCEOFFFEEDBACK = 0x0080, + STARTF_USESTDHANDLES = 0x0100, + STARTF_USEHOTKEY = 0x0200; + +// ??? +enum { + TC_NORMAL = 0, + TC_HARDERR = 1, + TC_GP_TRAP = 2, + TC_SIGNAL = 3 +} + +/+ These seem to be Windows CE-specific +enum { + AC_LINE_OFFLINE = 0, + AC_LINE_ONLINE = 1, + AC_LINE_BACKUP_POWER = 2, + AC_LINE_UNKNOWN = 255 +} + +enum { + BATTERY_FLAG_HIGH = 1, + BATTERY_FLAG_LOW = 2, + BATTERY_FLAG_CRITICAL = 4, + BATTERY_FLAG_CHARGING = 8, + BATTERY_FLAG_NO_BATTERY = 128, + BATTERY_FLAG_UNKNOWN = 255, + BATTERY_PERCENTAGE_UNKNOWN = 255, + BATTERY_LIFE_UNKNOWN = 0xFFFFFFFF +} ++/ + +// ??? +const HINSTANCE_ERROR = 32; + +// returned from GetFileSize() +const DWORD INVALID_FILE_SIZE = 0xFFFFFFFF; + +const DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; + +// GetWriteWatch() +const DWORD WRITE_WATCH_FLAG_RESET = 1; + +// for LogonUser() +enum : DWORD { + LOGON32_LOGON_INTERACTIVE = 2, + LOGON32_LOGON_NETWORK = 3, + LOGON32_LOGON_BATCH = 4, + LOGON32_LOGON_SERVICE = 5, + LOGON32_LOGON_UNLOCK = 7 +} + +// for LogonUser() +enum : DWORD { + LOGON32_PROVIDER_DEFAULT, + LOGON32_PROVIDER_WINNT35, + LOGON32_PROVIDER_WINNT40, + LOGON32_PROVIDER_WINNT50 +} + +// for MoveFileEx() +const DWORD + MOVEFILE_REPLACE_EXISTING = 1, + MOVEFILE_COPY_ALLOWED = 2, + MOVEFILE_DELAY_UNTIL_REBOOT = 4, + MOVEFILE_WRITE_THROUGH = 8; + +// DefineDosDevice() +const DWORD + DDD_RAW_TARGET_PATH = 1, + DDD_REMOVE_DEFINITION = 2, + DDD_EXACT_MATCH_ON_REMOVE = 4; + +static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + LOGON32_LOGON_NETWORK_CLEARTEXT = 8, + LOGON32_LOGON_NEW_CREDENTIALS = 9 + } + + // ReplaceFile() + const DWORD + REPLACEFILE_WRITE_THROUGH = 1, + REPLACEFILE_IGNORE_MERGE_ERRORS = 2; +} + +static if (_WIN32_WINNT >= 0x501) { + const DWORD + GET_MODULE_HANDLE_EX_FLAG_PIN = 1, + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, + GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4; + + // for ACTCTX + const DWORD + ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x01, + ACTCTX_FLAG_LANGID_VALID = 0x02, + ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x04, + ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x08, + ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x10, + ACTCTX_FLAG_APPLICATION_NAME_VALID = 0x20, + ACTCTX_FLAG_HMODULE_VALID = 0x80; + + // DeactivateActCtx() + const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; + // FindActCtxSectionString() + const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 1; + // QueryActCtxW() + const DWORD + QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x04, + QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x08, + QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x10; + + enum { + LOGON_WITH_PROFILE = 1, + LOGON_NETCREDENTIALS_ONLY + } +} + +// ---- + +struct FILETIME { + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} +alias FILETIME* PFILETIME, LPFILETIME; + +struct BY_HANDLE_FILE_INFORMATION { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD dwVolumeSerialNumber; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD nNumberOfLinks; + DWORD nFileIndexHigh; + DWORD nFileIndexLow; +} +alias BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION; + +struct DCB { + DWORD DCBlength = DCB.sizeof; + DWORD BaudRate; +/+ + DWORD fBinary:1; // Binary Mode (skip EOF check) + DWORD fParity:1; // Enable parity checking + DWORD fOutxCtsFlow:1; // CTS handshaking on output + DWORD fOutxDsrFlow:1; // DSR handshaking on output + DWORD fDtrControl:2; // DTR Flow control + DWORD fDsrSensitivity:1; // DSR Sensitivity + DWORD fTXContinueOnXoff:1; // Continue TX when Xoff sent + DWORD fOutX:1; // Enable output X-ON/X-OFF + DWORD fInX:1; // Enable input X-ON/X-OFF + DWORD fErrorChar:1; // Enable Err Replacement + DWORD fNull:1; // Enable Null stripping + DWORD fRtsControl:2; // Rts Flow control + DWORD fAbortOnError:1; // Abort all reads and writes on Error + DWORD fDummy2:17; // Reserved ++/ + uint _bf; + bool fBinary(bool f) { _bf = (_bf & ~0x0001) | f; return f; } + bool fParity(bool f) { _bf = (_bf & ~0x0002) | (f<<1); return f; } + bool fOutxCtsFlow(bool f) { _bf = (_bf & ~0x0004) | (f<<2); return f; } + bool fOutxDsrFlow(bool f) { _bf = (_bf & ~0x0008) | (f<<3); return f; } + byte fDtrControl(byte x) { _bf = (_bf & ~0x0030) | (x<<4); return cast(byte)(x & 3); } + bool fDsrSensitivity(bool f) { _bf = (_bf & ~0x0040) | (f<<6); return f; } + bool fTXContinueOnXoff(bool f) { _bf = (_bf & ~0x0080) | (f<<7); return f; } + bool fOutX(bool f) { _bf = (_bf & ~0x0100) | (f<<8); return f; } + bool fInX(bool f) { _bf = (_bf & ~0x0200) | (f<<9); return f; } + bool fErrorChar(bool f) { _bf = (_bf & ~0x0400) | (f<<10); return f; } + bool fNull(bool f) { _bf = (_bf & ~0x0800) | (f<<11); return f; } + byte fRtsControl(byte x) { _bf = (_bf & ~0x3000) | (x<<12); return cast(byte)(x & 3); } + bool fAbortOnError(bool f) { _bf = (_bf & ~0x4000) | (f<<14); return f; } + + bool fBinary() { return cast(bool) (_bf & 1); } + bool fParity() { return cast(bool) (_bf & 2); } + bool fOutxCtsFlow() { return cast(bool) (_bf & 4); } + bool fOutxDsrFlow() { return cast(bool) (_bf & 8); } + byte fDtrControl() { return cast(byte) ((_bf & (32+16))>>4); } + bool fDsrSensitivity() { return cast(bool) (_bf & 64); } + bool fTXContinueOnXoff() { return cast(bool) (_bf & 128); } + bool fOutX() { return cast(bool) (_bf & 256); } + bool fInX() { return cast(bool) (_bf & 512); } + bool fErrorChar() { return cast(bool) (_bf & 1024); } + bool fNull() { return cast(bool) (_bf & 2048); } + byte fRtsControl() { return cast(byte) ((_bf & (4096+8192))>>12); } + bool fAbortOnError() { return cast(bool) (_bf & 16384); } + + WORD wReserved; + WORD XonLim; + WORD XoffLim; + BYTE ByteSize; + BYTE Parity; + BYTE StopBits; + char XonChar; + char XoffChar; + char ErrorChar; + char EofChar; + char EvtChar; + WORD wReserved1; +} +alias DCB* LPDCB; + +struct COMMCONFIG { + DWORD dwSize = COMMCONFIG.sizeof; + WORD wVersion; + WORD wReserved; + DCB dcb; + DWORD dwProviderSubType; + DWORD dwProviderOffset; + DWORD dwProviderSize; + WCHAR _wcProviderData; + + WCHAR* wcProviderData() { return &_wcProviderData; } +} +alias COMMCONFIG* LPCOMMCONFIG; + +struct COMMTIMEOUTS { + DWORD ReadIntervalTimeout; + DWORD ReadTotalTimeoutMultiplier; + DWORD ReadTotalTimeoutConstant; + DWORD WriteTotalTimeoutMultiplier; + DWORD WriteTotalTimeoutConstant; +} +alias COMMTIMEOUTS* LPCOMMTIMEOUTS; + +struct COMSTAT { +/+ + DWORD fCtsHold:1; + DWORD fDsrHold:1; + DWORD fRlsdHold:1; + DWORD fXoffHold:1; + DWORD fXoffSent:1; + DWORD fEof:1; + DWORD fTxim:1; + DWORD fReserved:25; ++/ + DWORD _bf; + bool fCtsHold(bool f) { _bf = (_bf & ~1) | f; return f; } + bool fDsrHold(bool f) { _bf = (_bf & ~2) | (f<<1); return f; } + bool fRlsdHold(bool f) { _bf = (_bf & ~4) | (f<<2); return f; } + bool fXoffHold(bool f) { _bf = (_bf & ~8) | (f<<3); return f; } + bool fXoffSent(bool f) { _bf = (_bf & ~16) | (f<<4); return f; } + bool fEof(bool f) { _bf = (_bf & ~32) | (f<<5); return f; } + bool fTxim(bool f) { _bf = (_bf & ~64) | (f<<6); return f; } + + bool fCtsHold() { return cast(bool) (_bf & 1); } + bool fDsrHold() { return cast(bool) (_bf & 2); } + bool fRlsdHold() { return cast(bool) (_bf & 4); } + bool fXoffHold() { return cast(bool) (_bf & 8); } + bool fXoffSent() { return cast(bool) (_bf & 16); } + bool fEof() { return cast(bool) (_bf & 32); } + bool fTxim() { return cast(bool) (_bf & 64); } + + DWORD cbInQue; + DWORD cbOutQue; +} +alias COMSTAT* LPCOMSTAT; + +struct CREATE_PROCESS_DEBUG_INFO { + HANDLE hFile; + HANDLE hProcess; + HANDLE hThread; + LPVOID lpBaseOfImage; + DWORD dwDebugInfoFileOffset; + DWORD nDebugInfoSize; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; + LPVOID lpImageName; + WORD fUnicode; +} +alias CREATE_PROCESS_DEBUG_INFO* LPCREATE_PROCESS_DEBUG_INFO; + +struct CREATE_THREAD_DEBUG_INFO { + HANDLE hThread; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; +} +alias CREATE_THREAD_DEBUG_INFO* LPCREATE_THREAD_DEBUG_INFO; + +struct EXCEPTION_DEBUG_INFO { + EXCEPTION_RECORD ExceptionRecord; + DWORD dwFirstChance; +} +alias EXCEPTION_DEBUG_INFO* LPEXCEPTION_DEBUG_INFO; + +struct EXIT_THREAD_DEBUG_INFO { + DWORD dwExitCode; +} +alias EXIT_THREAD_DEBUG_INFO* LPEXIT_THREAD_DEBUG_INFO; + +struct EXIT_PROCESS_DEBUG_INFO { + DWORD dwExitCode; +} +alias EXIT_PROCESS_DEBUG_INFO* LPEXIT_PROCESS_DEBUG_INFO; + +struct LOAD_DLL_DEBUG_INFO { + HANDLE hFile; + LPVOID lpBaseOfDll; + DWORD dwDebugInfoFileOffset; + DWORD nDebugInfoSize; + LPVOID lpImageName; + WORD fUnicode; +} +alias LOAD_DLL_DEBUG_INFO* LPLOAD_DLL_DEBUG_INFO; + +struct UNLOAD_DLL_DEBUG_INFO { + LPVOID lpBaseOfDll; +} +alias UNLOAD_DLL_DEBUG_INFO* LPUNLOAD_DLL_DEBUG_INFO; + +struct OUTPUT_DEBUG_STRING_INFO { + LPSTR lpDebugStringData; + WORD fUnicode; + WORD nDebugStringLength; +} +alias OUTPUT_DEBUG_STRING_INFO* LPOUTPUT_DEBUG_STRING_INFO; + +struct RIP_INFO { + DWORD dwError; + DWORD dwType; +} +alias RIP_INFO* LPRIP_INFO; + +struct DEBUG_EVENT { + DWORD dwDebugEventCode; + DWORD dwProcessId; + DWORD dwThreadId; + union { + EXCEPTION_DEBUG_INFO Exception; + CREATE_THREAD_DEBUG_INFO CreateThread; + CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; + EXIT_THREAD_DEBUG_INFO ExitThread; + EXIT_PROCESS_DEBUG_INFO ExitProcess; + LOAD_DLL_DEBUG_INFO LoadDll; + UNLOAD_DLL_DEBUG_INFO UnloadDll; + OUTPUT_DEBUG_STRING_INFO DebugString; + RIP_INFO RipInfo; + } +} +alias DEBUG_EVENT* LPDEBUG_EVENT; + +struct OVERLAPPED { + ULONG_PTR Internal; + ULONG_PTR InternalHigh; + union { + struct { + DWORD Offset; + DWORD OffsetHigh; + } + PVOID Pointer; + } + HANDLE hEvent; +} +alias OVERLAPPED* POVERLAPPED, LPOVERLAPPED; + +struct STARTUPINFOA { + DWORD cb = STARTUPINFOA.sizeof; + LPSTR lpReserved; + LPSTR lpDesktop; + LPSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + PBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} +alias STARTUPINFOA* LPSTARTUPINFOA; + +struct STARTUPINFOW { + DWORD cb = STARTUPINFOW.sizeof; + LPWSTR lpReserved; + LPWSTR lpDesktop; + LPWSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + PBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} +alias STARTUPINFOW* LPSTARTUPINFOW; + +struct PROCESS_INFORMATION { + HANDLE hProcess; + HANDLE hThread; + DWORD dwProcessId; + DWORD dwThreadId; +} +alias PROCESS_INFORMATION* PPROCESS_INFORMATION, LPPROCESS_INFORMATION; + +struct CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + CRITICAL_SECTION* CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD[2] Spare; +} +alias CRITICAL_SECTION_DEBUG* PCRITICAL_SECTION_DEBUG; + +struct CRITICAL_SECTION { + PCRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + DWORD SpinCount; +} +alias CRITICAL_SECTION* PCRITICAL_SECTION, LPCRITICAL_SECTION; + +struct SYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; +} +alias SYSTEMTIME* LPSYSTEMTIME; + +struct WIN32_FILE_ATTRIBUTE_DATA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +} +alias WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; + +struct WIN32_FIND_DATAA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +// #ifdef _WIN32_WCE +// DWORD dwOID; +// #else + DWORD dwReserved0; + DWORD dwReserved1; +// #endif + CHAR[MAX_PATH] cFileName; +// #ifndef _WIN32_WCE + CHAR[14] cAlternateFileName; +// #endif +} +alias WIN32_FIND_DATAA* PWIN32_FIND_DATAA, LPWIN32_FIND_DATAA; + +struct WIN32_FIND_DATAW { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +// #ifdef _WIN32_WCE +// DWORD dwOID; +// #else + DWORD dwReserved0; + DWORD dwReserved1; +// #endif + WCHAR[MAX_PATH] cFileName; +// #ifndef _WIN32_WCE + WCHAR[14] cAlternateFileName; +// #endif +} +alias WIN32_FIND_DATAW* PWIN32_FIND_DATAW, LPWIN32_FIND_DATAW; + +struct WIN32_STREAM_ID { + DWORD dwStreamId; + DWORD dwStreamAttributes; + LARGE_INTEGER Size; + DWORD dwStreamNameSize; + WCHAR _cStreamName; + + WCHAR* cStreamName() { return &_cStreamName; } +} +alias WIN32_STREAM_ID* LPWIN32_STREAM_ID; + +enum FINDEX_INFO_LEVELS { + FindExInfoStandard, + FindExInfoMaxInfoLevel +} + +enum FINDEX_SEARCH_OPS { + FindExSearchNameMatch, + FindExSearchLimitToDirectories, + FindExSearchLimitToDevices, + FindExSearchMaxSearchOp +} + +enum ACL_INFORMATION_CLASS { + AclRevisionInformation = 1, + AclSizeInformation +} + +struct HW_PROFILE_INFOA { + DWORD dwDockInfo; + CHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; + CHAR[MAX_PROFILE_LEN] szHwProfileName; +} +alias HW_PROFILE_INFOA* LPHW_PROFILE_INFOA; + +struct HW_PROFILE_INFOW { + DWORD dwDockInfo; + WCHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; + WCHAR[MAX_PROFILE_LEN] szHwProfileName; +} +alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; + +/* ??? MSDN documents this only for Windows CE/Mobile, but it's used by + * GetFileAttributesEx, which is in desktop Windows. + */ +enum GET_FILEEX_INFO_LEVELS { + GetFileExInfoStandard, + GetFileExMaxInfoLevel +} + +struct SYSTEM_INFO { + union { + DWORD dwOemId; + struct { + WORD wProcessorArchitecture; + WORD wReserved; + } + } + DWORD dwPageSize; + PVOID lpMinimumApplicationAddress; + PVOID lpMaximumApplicationAddress; + DWORD_PTR dwActiveProcessorMask; + DWORD dwNumberOfProcessors; + DWORD dwProcessorType; + DWORD dwAllocationGranularity; + WORD wProcessorLevel; + WORD wProcessorRevision; +} +alias SYSTEM_INFO* LPSYSTEM_INFO; + +static if (_WIN32_WINNT >= 0x500) { + struct SYSTEM_POWER_STATUS { + BYTE ACLineStatus; + BYTE BatteryFlag; + BYTE BatteryLifePercent; + BYTE Reserved1; + DWORD BatteryLifeTime; + DWORD BatteryFullLifeTime; + } + alias SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; +} + +struct TIME_ZONE_INFORMATION { + LONG Bias; + WCHAR[32] StandardName; + SYSTEMTIME StandardDate; + LONG StandardBias; + WCHAR[32] DaylightName; + SYSTEMTIME DaylightDate; + LONG DaylightBias; +} +alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; + +// MSDN documents this, possibly erroneously, as Win2000+. +struct MEMORYSTATUS { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORD dwTotalPhys; + DWORD dwAvailPhys; + DWORD dwTotalPageFile; + DWORD dwAvailPageFile; + DWORD dwTotalVirtual; + DWORD dwAvailVirtual; +} +alias MEMORYSTATUS* LPMEMORYSTATUS; + +static if (_WIN32_WINNT >= 0x500) { + struct MEMORYSTATUSEX { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORDLONG ullTotalPhys; + DWORDLONG ullAvailPhys; + DWORDLONG ullTotalPageFile; + DWORDLONG ullAvailPageFile; + DWORDLONG ullTotalVirtual; + DWORDLONG ullAvailVirtual; + DWORDLONG ullAvailExtendedVirtual; + } + alias MEMORYSTATUSEX* LPMEMORYSTATUSEX; +} + +struct LDT_ENTRY { + WORD LimitLow; + WORD BaseLow; + struct { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + + byte Type(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0xE0) | f); return cast(byte)(f & 0x1F); } + byte Dpl(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0x9F) | (f<<5)); return cast(byte)(f & 3); } + bool Pres(bool f) { Flags1 = cast(BYTE) ((Flags1 & 0x7F) | (f<<7)); return f; } + + byte LimitHi(byte f) { Flags2 = cast(BYTE) ((Flags2 & 0xF0) | (f&0x0F)); return cast(byte)(f & 0x0F); } + bool Sys(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xEF) | (f<<4)); return f; } + // Next bit is reserved + bool Default_Big(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xBF) | (f<<6)); return f; } + bool Granularity(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0x7F) | (f<<7)); return f; } + + byte Type() { return cast(byte) (Flags1 & 0x1F); } + byte Dpl() { return cast(byte) ((Flags1 & 0x60)>>5); } + bool Pres() { return cast(bool) (Flags1 & 0x80); } + + byte LimitHi() { return cast(byte) (Flags2 & 0x0F); } + bool Sys() { return cast(bool) (Flags2 & 0x10); } + bool Default_Big() { return cast(bool) (Flags2 & 0x40); } + bool Granularity() { return cast(bool) (Flags2 & 0x80); } + } +/+ + union HighWord { + struct Bytes { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + } + struct Bits { + DWORD BaseMid:8; + DWORD Type:5; + DWORD Dpl:2; + DWORD Pres:1; + DWORD LimitHi:4; + DWORD Sys:1; + DWORD Reserved_0:1; + DWORD Default_Big:1; + DWORD Granularity:1; + DWORD BaseHi:8; + } + } ++/ +} +alias LDT_ENTRY* PLDT_ENTRY, LPLDT_ENTRY; + +/* As with the other memory management functions and structures, MSDN's + * Windows version info shall be taken with a cup of salt. + */ +struct PROCESS_HEAP_ENTRY { + PVOID lpData; + DWORD cbData; + BYTE cbOverhead; + BYTE iRegionIndex; + WORD wFlags; + union { + struct Block { + HANDLE hMem; + DWORD[3] dwReserved; + } + struct Region { + DWORD dwCommittedSize; + DWORD dwUnCommittedSize; + LPVOID lpFirstBlock; + LPVOID lpLastBlock; + } + } +} +alias PROCESS_HEAP_ENTRY* LPPROCESS_HEAP_ENTRY; + +struct OFSTRUCT { + BYTE cBytes = OFSTRUCT.sizeof; + BYTE fFixedDisk; + WORD nErrCode; + WORD Reserved1; + WORD Reserved2; + CHAR[128] szPathName; // const OFS_MAXPATHNAME = 128; +} +alias OFSTRUCT* LPOFSTRUCT, POFSTRUCT; + +/* ??? MSDN documents this only for Windows CE, but it's used by + * ImageGetCertificateData, which is in desktop Windows. + */ +struct WIN_CERTIFICATE { + DWORD dwLength; + WORD wRevision; + WORD wCertificateType; + BYTE _bCertificate; + + BYTE* bCertificate() { return &_bCertificate; } +} +alias WIN_CERTIFICATE* LPWIN_CERTIFICATE; + +static if (_WIN32_WINNT >= 0x500) { + enum COMPUTER_NAME_FORMAT { + ComputerNameNetBIOS, + ComputerNameDnsHostname, + ComputerNameDnsDomain, + ComputerNameDnsFullyQualified, + ComputerNamePhysicalNetBIOS, + ComputerNamePhysicalDnsHostname, + ComputerNamePhysicalDnsDomain, + ComputerNamePhysicalDnsFullyQualified, + ComputerNameMax + } +} + +static if (_WIN32_WINNT >= 0x501) { + struct ACTCTXA { + ULONG cbSize = this.sizeof; + DWORD dwFlags; + LPCSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCSTR lpAssemblyDirectory; + LPCSTR lpResourceName; + LPCSTR lpApplicationName; + HMODULE hModule; + } + alias ACTCTXA* PACTCTXA; + alias const(ACTCTXA)* PCACTCTXA; + + struct ACTCTXW { + ULONG cbSize = this.sizeof; + DWORD dwFlags; + LPCWSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCWSTR lpAssemblyDirectory; + LPCWSTR lpResourceName; + LPCWSTR lpApplicationName; + HMODULE hModule; + } + alias ACTCTXW* PACTCTXW; + alias const(ACTCTXW)* PCACTCTXW; + + struct ACTCTX_SECTION_KEYED_DATA { + ULONG cbSize = this.sizeof; + ULONG ulDataFormatVersion; + PVOID lpData; + ULONG ulLength; + PVOID lpSectionGlobalData; + ULONG ulSectionGlobalDataLength; + PVOID lpSectionBase; + ULONG ulSectionTotalLength; + HANDLE hActCtx; + HANDLE ulAssemblyRosterIndex; + } + alias ACTCTX_SECTION_KEYED_DATA* PACTCTX_SECTION_KEYED_DATA; + alias const(ACTCTX_SECTION_KEYED_DATA)* PCACTCTX_SECTION_KEYED_DATA; + + enum MEMORY_RESOURCE_NOTIFICATION_TYPE { + LowMemoryResourceNotification, + HighMemoryResourceNotification + } + +} // (_WIN32_WINNT >= 0x501) + +static if (_WIN32_WINNT >= 0x410) { + /* apparently used only by SetThreadExecutionState (Win2000+) + * and DDK functions (version compatibility not established) + */ + alias DWORD EXECUTION_STATE; +} + +// Callbacks +extern (Windows) { + alias DWORD function(LPVOID) LPTHREAD_START_ROUTINE; + alias DWORD function(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, + DWORD, DWORD, HANDLE, HANDLE, LPVOID) LPPROGRESS_ROUTINE; + alias void function(PVOID) LPFIBER_START_ROUTINE; + + alias BOOL function(HMODULE, LPCSTR, LPCSTR, WORD, LONG) ENUMRESLANGPROCA; + alias BOOL function(HMODULE, LPCWSTR, LPCWSTR, WORD, LONG) ENUMRESLANGPROCW; + alias BOOL function(HMODULE, LPCSTR, LPSTR, LONG) ENUMRESNAMEPROCA; + alias BOOL function(HMODULE, LPCWSTR, LPWSTR, LONG) ENUMRESNAMEPROCW; + alias BOOL function(HMODULE, LPSTR, LONG) ENUMRESTYPEPROCA; + alias BOOL function(HMODULE, LPWSTR, LONG) ENUMRESTYPEPROCW; + alias void function(DWORD, DWORD, LPOVERLAPPED) LPOVERLAPPED_COMPLETION_ROUTINE; + alias LONG function(LPEXCEPTION_POINTERS) PTOP_LEVEL_EXCEPTION_FILTER; + alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; + + alias void function(ULONG_PTR) PAPCFUNC; + alias void function(PVOID, DWORD, DWORD) PTIMERAPCROUTINE; + + static if (_WIN32_WINNT >= 0x500) { + alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACK; + } +} + +LPTSTR MAKEINTATOM()(ushort i) { + return cast(LPTSTR) cast(size_t) i; +} + +extern (Windows) { + ATOM AddAtomA(LPCSTR); + ATOM AddAtomW(LPCWSTR); + BOOL AreFileApisANSI(); + BOOL Beep(DWORD, DWORD); + HANDLE BeginUpdateResourceA(LPCSTR, BOOL); + HANDLE BeginUpdateResourceW(LPCWSTR, BOOL); + BOOL BuildCommDCBA(LPCSTR, LPDCB); + BOOL BuildCommDCBW(LPCWSTR, LPDCB); + BOOL BuildCommDCBAndTimeoutsA(LPCSTR, LPDCB, LPCOMMTIMEOUTS); + BOOL BuildCommDCBAndTimeoutsW(LPCWSTR, LPDCB, LPCOMMTIMEOUTS); + BOOL CallNamedPipeA(LPCSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); + BOOL CallNamedPipeW(LPCWSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); + BOOL CancelDeviceWakeupRequest(HANDLE); + BOOL CheckTokenMembership(HANDLE, PSID, PBOOL); + BOOL ClearCommBreak(HANDLE); + BOOL ClearCommError(HANDLE, PDWORD, LPCOMSTAT); + BOOL CloseHandle(HANDLE); + BOOL CommConfigDialogA(LPCSTR, HWND, LPCOMMCONFIG); + BOOL CommConfigDialogW(LPCWSTR, HWND, LPCOMMCONFIG); + LONG CompareFileTime(const(FILETIME)*, const(FILETIME)*); + BOOL ContinueDebugEvent(DWORD, DWORD, DWORD); + BOOL CopyFileA(LPCSTR, LPCSTR, BOOL); + BOOL CopyFileW(LPCWSTR, LPCWSTR, BOOL); + BOOL CopyFileExA(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); + BOOL CopyFileExW(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); + + /+ FIXME + alias memmove RtlMoveMemory; + alias memcpy RtlCopyMemory; + + void RtlFillMemory(PVOID dest, SIZE_T len, BYTE fill) { + memset(dest, fill, len); + } + + void RtlZeroMemory(PVOID dest, SIZE_T len) { + RtlFillMemory(dest, len, 0); + } + + alias RtlMoveMemory MoveMemory; + alias RtlCopyMemory CopyMemory; + alias RtlFillMemory FillMemory; + alias RtlZeroMemory ZeroMemory; + +/ + BOOL CreateDirectoryA(LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryW(LPCWSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryExA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryExW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); + HANDLE CreateEventA(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR); + HANDLE CreateEventW(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR); + HANDLE CreateFileA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); + HANDLE CreateFileW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); + HANDLE CreateIoCompletionPort(HANDLE, HANDLE, ULONG_PTR, DWORD); + HANDLE CreateMailslotA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateMailslotW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); + HANDLE CreateMutexW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); + BOOL CreatePipe(PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD); + BOOL CreateProcessA(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); + BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR); + HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR); + HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); + BOOL DebugActiveProcess(DWORD); + void DebugBreak(); + ATOM DeleteAtom(ATOM); + void DeleteCriticalSection(PCRITICAL_SECTION); + BOOL DeleteFileA(LPCSTR); + BOOL DeleteFileW(LPCWSTR); + BOOL DisableThreadLibraryCalls(HMODULE); + BOOL DosDateTimeToFileTime(WORD, WORD, LPFILETIME); + BOOL DuplicateHandle(HANDLE, HANDLE, HANDLE, PHANDLE, DWORD, BOOL, DWORD); + BOOL EndUpdateResourceA(HANDLE, BOOL); + BOOL EndUpdateResourceW(HANDLE, BOOL); + void EnterCriticalSection(LPCRITICAL_SECTION); + BOOL EnumResourceLanguagesA(HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROC, LONG_PTR); + BOOL EnumResourceLanguagesW(HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROC, LONG_PTR); + BOOL EnumResourceNamesA(HMODULE, LPCSTR, ENUMRESNAMEPROC, LONG_PTR); + BOOL EnumResourceNamesW(HMODULE, LPCWSTR, ENUMRESNAMEPROC, LONG_PTR); + BOOL EnumResourceTypesA(HMODULE, ENUMRESTYPEPROC, LONG_PTR); + BOOL EnumResourceTypesW(HMODULE, ENUMRESTYPEPROC, LONG_PTR); + BOOL EscapeCommFunction(HANDLE, DWORD); + void ExitProcess(UINT); // Never returns + void ExitThread(DWORD); // Never returns + DWORD ExpandEnvironmentStringsA(LPCSTR, LPSTR, DWORD); + DWORD ExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD); + void FatalAppExitA(UINT, LPCSTR); + void FatalAppExitW(UINT, LPCWSTR); + void FatalExit(int); + BOOL FileTimeToDosDateTime(const(FILETIME)*, LPWORD, LPWORD); + BOOL FileTimeToLocalFileTime(const(FILETIME)*, LPFILETIME); + BOOL FileTimeToSystemTime(const(FILETIME)*, LPSYSTEMTIME); + ATOM FindAtomA(LPCSTR); + ATOM FindAtomW(LPCWSTR); + BOOL FindClose(HANDLE); + BOOL FindCloseChangeNotification(HANDLE); + HANDLE FindFirstChangeNotificationA(LPCSTR, BOOL, DWORD); + HANDLE FindFirstChangeNotificationW(LPCWSTR, BOOL, DWORD); + HANDLE FindFirstFileA(LPCSTR, LPWIN32_FIND_DATAA); + HANDLE FindFirstFileW(LPCWSTR, LPWIN32_FIND_DATAW); + BOOL FindNextChangeNotification(HANDLE); + BOOL FindNextFileA(HANDLE, LPWIN32_FIND_DATAA); + BOOL FindNextFileW(HANDLE, LPWIN32_FIND_DATAW); + HRSRC FindResourceA(HMODULE, LPCSTR, LPCSTR); + HRSRC FindResourceW(HINSTANCE, LPCWSTR, LPCWSTR); + HRSRC FindResourceExA(HINSTANCE, LPCSTR, LPCSTR, WORD); + HRSRC FindResourceExW(HINSTANCE, LPCWSTR, LPCWSTR, WORD); + BOOL FlushFileBuffers(HANDLE); + BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD); + DWORD FormatMessageA(DWORD, PCVOID, DWORD, DWORD, LPSTR, DWORD, va_list*); + DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); + BOOL FreeEnvironmentStringsA(LPSTR); + BOOL FreeEnvironmentStringsW(LPWSTR); + BOOL FreeLibrary(HMODULE); + void FreeLibraryAndExitThread(HMODULE, DWORD); // never returns + BOOL FreeResource(HGLOBAL); + UINT GetAtomNameA(ATOM, LPSTR, int); + UINT GetAtomNameW(ATOM, LPWSTR, int); + LPSTR GetCommandLineA(); + LPWSTR GetCommandLineW(); + BOOL GetCommConfig(HANDLE, LPCOMMCONFIG, PDWORD); + BOOL GetCommMask(HANDLE, PDWORD); + BOOL GetCommModemStatus(HANDLE, PDWORD); + BOOL GetCommProperties(HANDLE, LPCOMMPROP); + BOOL GetCommState(HANDLE, LPDCB); + BOOL GetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); + BOOL GetComputerNameA(LPSTR, PDWORD); + BOOL GetComputerNameW(LPWSTR, PDWORD); + DWORD GetCurrentDirectoryA(DWORD, LPSTR); + DWORD GetCurrentDirectoryW(DWORD, LPWSTR); + HANDLE GetCurrentProcess(); + DWORD GetCurrentProcessId(); + HANDLE GetCurrentThread(); +/* In MinGW: +#ifdef _WIN32_WCE +extern DWORD GetCurrentThreadId(void); +#else +WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); +#endif +*/ + DWORD GetCurrentThreadId(); + + alias GetTickCount GetCurrentTime; + + BOOL GetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, PDWORD); + BOOL GetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, PDWORD); + BOOL GetDiskFreeSpaceA(LPCSTR, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetDiskFreeSpaceW(LPCWSTR, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetDiskFreeSpaceExA(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); + BOOL GetDiskFreeSpaceExW(LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); + UINT GetDriveTypeA(LPCSTR); + UINT GetDriveTypeW(LPCWSTR); + LPSTR GetEnvironmentStrings(); // ??? + LPSTR GetEnvironmentStringsA(); + LPWSTR GetEnvironmentStringsW(); + DWORD GetEnvironmentVariableA(LPCSTR, LPSTR, DWORD); + DWORD GetEnvironmentVariableW(LPCWSTR, LPWSTR, DWORD); + BOOL GetExitCodeProcess(HANDLE, PDWORD); + BOOL GetExitCodeThread(HANDLE, PDWORD); + DWORD GetFileAttributesA(LPCSTR); + DWORD GetFileAttributesW(LPCWSTR); + BOOL GetFileInformationByHandle(HANDLE, LPBY_HANDLE_FILE_INFORMATION); + DWORD GetFileSize(HANDLE, PDWORD); + BOOL GetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); + DWORD GetFileType(HANDLE); + DWORD GetFullPathNameA(LPCSTR, DWORD, LPSTR, LPSTR*); + DWORD GetFullPathNameW(LPCWSTR, DWORD, LPWSTR, LPWSTR*); + DWORD GetLastError(); + void GetLocalTime(LPSYSTEMTIME); + DWORD GetLogicalDrives(); + DWORD GetLogicalDriveStringsA(DWORD, LPSTR); + DWORD GetLogicalDriveStringsW(DWORD, LPWSTR); + BOOL GetMailslotInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); + DWORD GetModuleFileNameA(HINSTANCE, LPSTR, DWORD); + DWORD GetModuleFileNameW(HINSTANCE, LPWSTR, DWORD); + HMODULE GetModuleHandleA(LPCSTR); + HMODULE GetModuleHandleW(LPCWSTR); + BOOL GetNamedPipeHandleStateA(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); + BOOL GetNamedPipeHandleStateW(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); + BOOL GetNamedPipeInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetOverlappedResult(HANDLE, LPOVERLAPPED, PDWORD, BOOL); + DWORD GetPriorityClass(HANDLE); + UINT GetPrivateProfileIntA(LPCSTR, LPCSTR, INT, LPCSTR); + UINT GetPrivateProfileIntW(LPCWSTR, LPCWSTR, INT, LPCWSTR); + DWORD GetPrivateProfileSectionA(LPCSTR, LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileSectionW(LPCWSTR, LPWSTR, DWORD, LPCWSTR); + DWORD GetPrivateProfileSectionNamesA(LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileSectionNamesW(LPWSTR, DWORD, LPCWSTR); + DWORD GetPrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPCWSTR); + BOOL GetPrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); + BOOL GetPrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); + FARPROC GetProcAddress(HMODULE, LPCSTR); // 1st param wrongly HINSTANCE in MinGW + BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); + DWORD GetProcessVersion(DWORD); + UINT GetProfileIntA(LPCSTR, LPCSTR, INT); + UINT GetProfileIntW(LPCWSTR, LPCWSTR, INT); + DWORD GetProfileSectionA(LPCSTR, LPSTR, DWORD); + DWORD GetProfileSectionW(LPCWSTR, LPWSTR, DWORD); + DWORD GetProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD); + DWORD GetProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD); + DWORD GetShortPathNameA(LPCSTR, LPSTR, DWORD); + DWORD GetShortPathNameW(LPCWSTR, LPWSTR, DWORD); + VOID GetStartupInfoA(LPSTARTUPINFOA); + VOID GetStartupInfoW(LPSTARTUPINFOW); + HANDLE GetStdHandle(DWORD); + UINT GetSystemDirectoryA(LPSTR, UINT); + UINT GetSystemDirectoryW(LPWSTR, UINT); + VOID GetSystemInfo(LPSYSTEM_INFO); + VOID GetSystemTime(LPSYSTEMTIME); + BOOL GetSystemTimeAdjustment(PDWORD, PDWORD, PBOOL); + void GetSystemTimeAsFileTime(LPFILETIME); + UINT GetTempFileNameA(LPCSTR, LPCSTR, UINT, LPSTR); + UINT GetTempFileNameW(LPCWSTR, LPCWSTR, UINT, LPWSTR); + DWORD GetTempPathA(DWORD, LPSTR); + DWORD GetTempPathW(DWORD, LPWSTR); + BOOL GetThreadContext(HANDLE, LPCONTEXT); + int GetThreadPriority(HANDLE); + BOOL GetThreadSelectorEntry(HANDLE, DWORD, LPLDT_ENTRY); + DWORD GetTickCount(); + DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION); + BOOL GetUserNameA (LPSTR, PDWORD); + BOOL GetUserNameW(LPWSTR, PDWORD); + DWORD GetVersion(); + BOOL GetVersionExA(LPOSVERSIONINFOA); + BOOL GetVersionExW(LPOSVERSIONINFOW); + BOOL GetVolumeInformationA(LPCSTR, LPSTR, DWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); + BOOL GetVolumeInformationW(LPCWSTR, LPWSTR, DWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); + UINT GetWindowsDirectoryA(LPSTR, UINT); + UINT GetWindowsDirectoryW(LPWSTR, UINT); + DWORD GetWindowThreadProcessId(HWND, PDWORD); + ATOM GlobalAddAtomA(LPCSTR); + ATOM GlobalAddAtomW(LPCWSTR); + ATOM GlobalDeleteAtom(ATOM); + ATOM GlobalFindAtomA(LPCSTR); + ATOM GlobalFindAtomW(LPCWSTR); + UINT GlobalGetAtomNameA(ATOM, LPSTR, int); + UINT GlobalGetAtomNameW(ATOM, LPWSTR, int); + + bool HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped) { + return lpOverlapped.Internal != STATUS_PENDING; + } + + BOOL InitAtomTable(DWORD); + VOID InitializeCriticalSection(LPCRITICAL_SECTION); + /* ??? The next two are allegedly obsolete and "supported only for + * backward compatibility with the 16-bit Windows API". Yet the + * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ + * only. Where's the mistake? + */ + BOOL IsBadHugeReadPtr(PCVOID, UINT_PTR); + BOOL IsBadHugeWritePtr(PVOID, UINT_PTR); + BOOL IsBadReadPtr(PCVOID, UINT_PTR); + BOOL IsBadStringPtrA(LPCSTR, UINT_PTR); + BOOL IsBadStringPtrW(LPCWSTR, UINT_PTR); + BOOL IsBadWritePtr(PVOID, UINT_PTR); + void LeaveCriticalSection(LPCRITICAL_SECTION); + HINSTANCE LoadLibraryA(LPCSTR); + HINSTANCE LoadLibraryW(LPCWSTR); + HINSTANCE LoadLibraryExA(LPCSTR, HANDLE, DWORD); + HINSTANCE LoadLibraryExW(LPCWSTR, HANDLE, DWORD); + DWORD LoadModule(LPCSTR, PVOID); + HGLOBAL LoadResource(HINSTANCE, HRSRC); + BOOL LocalFileTimeToFileTime(const(FILETIME)*, LPFILETIME); + BOOL LockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + PVOID LockResource(HGLOBAL); + + LPSTR lstrcatA(LPSTR, LPCSTR); + LPWSTR lstrcatW(LPWSTR, LPCWSTR); + int lstrcmpA(LPCSTR, LPCSTR); + int lstrcmpiA(LPCSTR, LPCSTR); + int lstrcmpiW(LPCWSTR, LPCWSTR); + int lstrcmpW(LPCWSTR, LPCWSTR); + LPSTR lstrcpyA(LPSTR, LPCSTR); + LPSTR lstrcpynA(LPSTR, LPCSTR, int); + LPWSTR lstrcpynW(LPWSTR, LPCWSTR, int); + LPWSTR lstrcpyW(LPWSTR, LPCWSTR); + int lstrlenA(LPCSTR); + int lstrlenW(LPCWSTR); + + BOOL MoveFileA(LPCSTR, LPCSTR); + BOOL MoveFileW(LPCWSTR, LPCWSTR); + int MulDiv(int, int, int); + HANDLE OpenEventA(DWORD, BOOL, LPCSTR); + HANDLE OpenEventW(DWORD, BOOL, LPCWSTR); + deprecated HFILE OpenFile(LPCSTR, LPOFSTRUCT, UINT); + HANDLE OpenMutexA(DWORD, BOOL, LPCSTR); + HANDLE OpenMutexW(DWORD, BOOL, LPCWSTR); + HANDLE OpenProcess(DWORD, BOOL, DWORD); + HANDLE OpenSemaphoreA(DWORD, BOOL, LPCSTR); + HANDLE OpenSemaphoreW(DWORD, BOOL, LPCWSTR); + void OutputDebugStringA(LPCSTR); + void OutputDebugStringW(LPCWSTR); + BOOL PeekNamedPipe(HANDLE, PVOID, DWORD, PDWORD, PDWORD, PDWORD); + BOOL PulseEvent(HANDLE); + BOOL PurgeComm(HANDLE, DWORD); + BOOL QueryPerformanceCounter(PLARGE_INTEGER); + BOOL QueryPerformanceFrequency(PLARGE_INTEGER); + DWORD QueueUserAPC(PAPCFUNC, HANDLE, ULONG_PTR); + void RaiseException(DWORD, DWORD, DWORD, const(DWORD)*); + BOOL ReadFile(HANDLE, PVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL ReadFileEx(HANDLE, PVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL ReadProcessMemory(HANDLE, PCVOID, PVOID, SIZE_T, SIZE_T*); + BOOL ReleaseMutex(HANDLE); + BOOL ReleaseSemaphore(HANDLE, LONG, LPLONG); + BOOL RemoveDirectoryA(LPCSTR); + BOOL RemoveDirectoryW(LPCWSTR); +/* In MinGW: +#ifdef _WIN32_WCE +extern BOOL ResetEvent(HANDLE); +#else +WINBASEAPI BOOL WINAPI ResetEvent(HANDLE); +#endif +*/ + BOOL ResetEvent(HANDLE); + DWORD ResumeThread(HANDLE); + DWORD SearchPathA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR*); + DWORD SearchPathW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR*); + BOOL SetCommBreak(HANDLE); + BOOL SetCommConfig(HANDLE, LPCOMMCONFIG, DWORD); + BOOL SetCommMask(HANDLE, DWORD); + BOOL SetCommState(HANDLE, LPDCB); + BOOL SetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); + BOOL SetComputerNameA(LPCSTR); + BOOL SetComputerNameW(LPCWSTR); + BOOL SetCurrentDirectoryA(LPCSTR); + BOOL SetCurrentDirectoryW(LPCWSTR); + BOOL SetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, DWORD); + BOOL SetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, DWORD); + BOOL SetEndOfFile(HANDLE); + BOOL SetEnvironmentVariableA(LPCSTR, LPCSTR); + BOOL SetEnvironmentVariableW(LPCWSTR, LPCWSTR); + UINT SetErrorMode(UINT); +/* In MinGW: +#ifdef _WIN32_WCE +extern BOOL SetEvent(HANDLE); +#else +WINBASEAPI BOOL WINAPI SetEvent(HANDLE); +#endif +*/ + BOOL SetEvent(HANDLE); + VOID SetFileApisToANSI(); + VOID SetFileApisToOEM(); + BOOL SetFileAttributesA(LPCSTR, DWORD); + BOOL SetFileAttributesW(LPCWSTR, DWORD); + DWORD SetFilePointer(HANDLE, LONG, PLONG, DWORD); + BOOL SetFileTime(HANDLE, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); + deprecated UINT SetHandleCount(UINT); + void SetLastError(DWORD); + void SetLastErrorEx(DWORD, DWORD); + BOOL SetLocalTime(const(SYSTEMTIME)*); + BOOL SetMailslotInfo(HANDLE, DWORD); + BOOL SetNamedPipeHandleState(HANDLE, PDWORD, PDWORD, PDWORD); + BOOL SetPriorityClass(HANDLE, DWORD); + BOOL SetStdHandle(DWORD, HANDLE); + BOOL SetSystemTime(const(SYSTEMTIME)*); + DWORD SetThreadAffinityMask(HANDLE, DWORD); + BOOL SetThreadContext(HANDLE, const(CONTEXT)*); + BOOL SetThreadPriority(HANDLE, int); + BOOL SetTimeZoneInformation(const(TIME_ZONE_INFORMATION)*); + LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER); + BOOL SetupComm(HANDLE, DWORD, DWORD); + BOOL SetVolumeLabelA(LPCSTR, LPCSTR); + BOOL SetVolumeLabelW(LPCWSTR, LPCWSTR); + + DWORD SizeofResource(HINSTANCE, HRSRC); + void Sleep(DWORD); + DWORD SleepEx(DWORD, BOOL); + DWORD SuspendThread(HANDLE); + BOOL SystemTimeToFileTime(const(SYSTEMTIME)*, LPFILETIME); + BOOL TerminateProcess(HANDLE, UINT); + BOOL TerminateThread(HANDLE, DWORD); + DWORD TlsAlloc(); + BOOL TlsFree(DWORD); + PVOID TlsGetValue(DWORD); + BOOL TlsSetValue(DWORD, PVOID); + BOOL TransactNamedPipe(HANDLE, PVOID, DWORD, PVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL TransmitCommChar(HANDLE, char); + LONG UnhandledExceptionFilter(LPEXCEPTION_POINTERS); + BOOL UnlockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + BOOL WaitCommEvent(HANDLE, PDWORD, LPOVERLAPPED); + BOOL WaitForDebugEvent(LPDEBUG_EVENT, DWORD); + DWORD WaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD); + DWORD WaitForMultipleObjectsEx(DWORD, const(HANDLE)*, BOOL, DWORD, BOOL); + DWORD WaitForSingleObject(HANDLE, DWORD); + DWORD WaitForSingleObjectEx(HANDLE, DWORD, BOOL); + BOOL WaitNamedPipeA(LPCSTR, DWORD); + BOOL WaitNamedPipeW(LPCWSTR, DWORD); + // undocumented on MSDN + BOOL WinLoadTrustProvider(GUID*); + BOOL WriteFile(HANDLE, PCVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL WriteFileEx(HANDLE, PCVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL WritePrivateProfileSectionA(LPCSTR, LPCSTR, LPCSTR); + BOOL WritePrivateProfileSectionW(LPCWSTR, LPCWSTR, LPCWSTR); + BOOL WritePrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPCSTR); + BOOL WritePrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL WritePrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); + BOOL WritePrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); + BOOL WriteProcessMemory(HANDLE, LPVOID, LPCVOID, SIZE_T, SIZE_T*); + BOOL WriteProfileSectionA(LPCSTR, LPCSTR); + BOOL WriteProfileSectionW(LPCWSTR, LPCWSTR); + BOOL WriteProfileStringA(LPCSTR, LPCSTR, LPCSTR); + BOOL WriteProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR); + + /* Memory allocation functions. + * MSDN documents these erroneously as Win2000+; thus it is uncertain what + * version compatibility they really have. + */ + HGLOBAL GlobalAlloc(UINT, DWORD); + HGLOBAL GlobalDiscard(HGLOBAL); + HGLOBAL GlobalFree(HGLOBAL); + HGLOBAL GlobalHandle(PCVOID); + LPVOID GlobalLock(HGLOBAL); + VOID GlobalMemoryStatus(LPMEMORYSTATUS); + HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); + DWORD GlobalSize(HGLOBAL); + BOOL GlobalUnlock(HGLOBAL); + PVOID HeapAlloc(HANDLE, DWORD, DWORD); + SIZE_T HeapCompact(HANDLE, DWORD); + HANDLE HeapCreate(DWORD, DWORD, DWORD); + BOOL HeapDestroy(HANDLE); + BOOL HeapFree(HANDLE, DWORD, PVOID); + BOOL HeapLock(HANDLE); + PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); + DWORD HeapSize(HANDLE, DWORD, PCVOID); + BOOL HeapUnlock(HANDLE); + BOOL HeapValidate(HANDLE, DWORD, PCVOID); + BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); + HLOCAL LocalAlloc(UINT, SIZE_T); + HLOCAL LocalDiscard(HLOCAL); + HLOCAL LocalFree(HLOCAL); + HLOCAL LocalHandle(LPCVOID); + PVOID LocalLock(HLOCAL); + HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); + UINT LocalSize(HLOCAL); + BOOL LocalUnlock(HLOCAL); + PVOID VirtualAlloc(PVOID, DWORD, DWORD, DWORD); + PVOID VirtualAllocEx(HANDLE, PVOID, DWORD, DWORD, DWORD); + BOOL VirtualFree(PVOID, DWORD, DWORD); + BOOL VirtualFreeEx(HANDLE, PVOID, DWORD, DWORD); + BOOL VirtualLock(PVOID, DWORD); + BOOL VirtualProtect(PVOID, DWORD, DWORD, PDWORD); + BOOL VirtualProtectEx(HANDLE, PVOID, DWORD, DWORD, PDWORD); + DWORD VirtualQuery(LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); + DWORD VirtualQueryEx(HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); + BOOL VirtualUnlock(PVOID, DWORD); +// not in MinGW 4.0 - ??? + static if (_WIN32_WINNT >= 0x600) { + BOOL CancelIoEx(HANDLE, LPOVERLAPPED); + } + + BOOL CancelIo(HANDLE); + BOOL CancelWaitableTimer(HANDLE); + PVOID ConvertThreadToFiber(PVOID); + LPVOID CreateFiber(SIZE_T, LPFIBER_START_ROUTINE, LPVOID); + HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); + HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); + void DeleteFiber(PVOID); + BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); + BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); + DWORD GetLongPathNameA(LPCSTR, LPSTR, DWORD); + DWORD GetLongPathNameW(LPCWSTR, LPWSTR, DWORD); + BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION, DWORD); + BOOL IsDebuggerPresent(); + HANDLE OpenWaitableTimerA(DWORD, BOOL, LPCSTR); + HANDLE OpenWaitableTimerW(DWORD, BOOL, LPCWSTR); + DWORD QueryDosDeviceA(LPCSTR, LPSTR, DWORD); + DWORD QueryDosDeviceW(LPCWSTR, LPWSTR, DWORD); + BOOL SetWaitableTimer(HANDLE, const(LARGE_INTEGER)*, LONG, PTIMERAPCROUTINE, PVOID, BOOL); + void SwitchToFiber(PVOID); + + static if (_WIN32_WINNT >= 0x500) { + HANDLE OpenThread(DWORD, BOOL, DWORD); + } + + BOOL AccessCheck(PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, PDWORD, PDWORD, PBOOL); + BOOL AccessCheckAndAuditAlarmA(LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); + BOOL AccessCheckAndAuditAlarmW(LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); + BOOL AddAccessAllowedAce(PACL, DWORD, DWORD, PSID); + BOOL AddAccessDeniedAce(PACL, DWORD, DWORD, PSID); + BOOL AddAce(PACL, DWORD, DWORD, PVOID, DWORD); + BOOL AddAuditAccessAce(PACL, DWORD, DWORD, PSID, BOOL, BOOL); + BOOL AdjustTokenGroups(HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD); + BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); + BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); + BOOL AllocateLocallyUniqueId(PLUID); + BOOL AreAllAccessesGranted(DWORD, DWORD); + BOOL AreAnyAccessesGranted(DWORD, DWORD); + BOOL BackupEventLogA(HANDLE, LPCSTR); + BOOL BackupEventLogW(HANDLE, LPCWSTR); + BOOL BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); + BOOL BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID*); + BOOL BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); + BOOL ClearEventLogA(HANDLE, LPCSTR); + BOOL ClearEventLogW(HANDLE, LPCWSTR); + BOOL CloseEventLog(HANDLE); + BOOL ConnectNamedPipe(HANDLE, LPOVERLAPPED); + BOOL CopySid(DWORD, PSID, PSID); + HANDLE CreateNamedPipeA(LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateNamedPipeW(LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); + BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); + BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); + DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); + BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); + BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); + BOOL DeleteAce(PACL, DWORD); + BOOL DeregisterEventSource(HANDLE); + BOOL DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); + BOOL DeviceIoControl(HANDLE, DWORD, PVOID, DWORD, PVOID, DWORD, PDWORD, POVERLAPPED); + BOOL DisconnectNamedPipe(HANDLE); + BOOL DuplicateToken(HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE); + BOOL DuplicateTokenEx(HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE); + BOOL EqualPrefixSid(PSID, PSID); + BOOL EqualSid(PSID, PSID); + DWORD EraseTape(HANDLE, DWORD, BOOL); + HANDLE FindFirstFileExA(LPCSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); + HANDLE FindFirstFileExW(LPCWSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); + BOOL FindFirstFreeAce(PACL, PVOID*); + PVOID FreeSid(PSID); + BOOL GetAce(PACL, DWORD, LPVOID*); + BOOL GetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); + BOOL GetBinaryTypeA(LPCSTR, PDWORD); + BOOL GetBinaryTypeW(LPCWSTR, PDWORD); + DWORD GetCompressedFileSizeA(LPCSTR, PDWORD); + DWORD GetCompressedFileSizeW(LPCWSTR, PDWORD); + BOOL GetCurrentHwProfileA(LPHW_PROFILE_INFOA); + BOOL GetCurrentHwProfileW(LPHW_PROFILE_INFOW); + BOOL GetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetHandleInformation(HANDLE, PDWORD); + BOOL GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + DWORD GetLengthSid(PSID); + BOOL GetNumberOfEventLogRecords(HANDLE, PDWORD); + BOOL GetOldestEventLogRecord(HANDLE, PDWORD); + BOOL GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetProcessPriorityBoost(HANDLE, PBOOL); + BOOL GetProcessShutdownParameters(PDWORD, PDWORD); + BOOL GetProcessTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); + HWINSTA GetProcessWindowStation(); + BOOL GetProcessWorkingSetSize(HANDLE, PSIZE_T, PSIZE_T); + BOOL GetQueuedCompletionStatus(HANDLE, PDWORD, PULONG_PTR, LPOVERLAPPED*, DWORD); + BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, PDWORD); + BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); + BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); + DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); + BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); + BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); + PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority(PSID); + DWORD GetSidLengthRequired(UCHAR); + PDWORD GetSidSubAuthority(PSID, DWORD); + PUCHAR GetSidSubAuthorityCount(PSID); + DWORD GetTapeParameters(HANDLE, DWORD, PDWORD, PVOID); + DWORD GetTapePosition(HANDLE, DWORD, PDWORD, PDWORD, PDWORD); + DWORD GetTapeStatus(HANDLE); + BOOL GetThreadPriorityBoost(HANDLE, PBOOL); + BOOL GetThreadTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); + BOOL GetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD, PDWORD); + BOOL ImpersonateLoggedOnUser(HANDLE); + BOOL ImpersonateNamedPipeClient(HANDLE); + BOOL ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); + BOOL InitializeAcl(PACL, DWORD, DWORD); + DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION, DWORD); + BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR, DWORD); + BOOL InitializeSid(PSID, PSID_IDENTIFIER_AUTHORITY, BYTE); + BOOL IsProcessorFeaturePresent(DWORD); + BOOL IsTextUnicode(PCVOID, int, LPINT); + BOOL IsValidAcl(PACL); + BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); + BOOL IsValidSid(PSID); + BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED); + BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE); + BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); + BOOL LookupAccountNameA(LPCSTR, LPCSTR, PSID, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountNameW(LPCWSTR, LPCWSTR, PSID, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountSidA(LPCSTR, PSID, LPSTR, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountSidW(LPCWSTR, PSID, LPWSTR, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); + BOOL LookupPrivilegeDisplayNameA(LPCSTR, LPCSTR, LPSTR, PDWORD, PDWORD); + BOOL LookupPrivilegeDisplayNameW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, PDWORD); + BOOL LookupPrivilegeNameA(LPCSTR, PLUID, LPSTR, PDWORD); + BOOL LookupPrivilegeNameW(LPCWSTR, PLUID, LPWSTR, PDWORD); + BOOL LookupPrivilegeValueA(LPCSTR, LPCSTR, PLUID); + BOOL LookupPrivilegeValueW(LPCWSTR, LPCWSTR, PLUID); + BOOL MakeAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD); + BOOL MakeSelfRelativeSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD); + VOID MapGenericMask(PDWORD, PGENERIC_MAPPING); + BOOL MoveFileExA(LPCSTR, LPCSTR, DWORD); + BOOL MoveFileExW(LPCWSTR, LPCWSTR, DWORD); + BOOL NotifyChangeEventLog(HANDLE, HANDLE); + BOOL ObjectCloseAuditAlarmA(LPCSTR, PVOID, BOOL); + BOOL ObjectCloseAuditAlarmW(LPCWSTR, PVOID, BOOL); + BOOL ObjectDeleteAuditAlarmA(LPCSTR, PVOID, BOOL); + BOOL ObjectDeleteAuditAlarmW(LPCWSTR, PVOID, BOOL); + BOOL ObjectOpenAuditAlarmA(LPCSTR, PVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); + BOOL ObjectOpenAuditAlarmW(LPCWSTR, PVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); + BOOL ObjectPrivilegeAuditAlarmA(LPCSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); + BOOL ObjectPrivilegeAuditAlarmW(LPCWSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); + HANDLE OpenBackupEventLogA(LPCSTR, LPCSTR); + HANDLE OpenBackupEventLogW(LPCWSTR, LPCWSTR); + HANDLE OpenEventLogA(LPCSTR, LPCSTR); + HANDLE OpenEventLogW(LPCWSTR, LPCWSTR); + BOOL OpenProcessToken(HANDLE, DWORD, PHANDLE); + BOOL OpenThreadToken(HANDLE, DWORD, BOOL, PHANDLE); + BOOL PostQueuedCompletionStatus(HANDLE, DWORD, ULONG_PTR, LPOVERLAPPED); + DWORD PrepareTape(HANDLE, DWORD, BOOL); + BOOL PrivilegeCheck(HANDLE, PPRIVILEGE_SET, PBOOL); + BOOL PrivilegedServiceAuditAlarmA(LPCSTR, LPCSTR, HANDLE, PPRIVILEGE_SET, BOOL); + BOOL PrivilegedServiceAuditAlarmW(LPCWSTR, LPCWSTR, HANDLE, PPRIVILEGE_SET, BOOL); + BOOL ReadDirectoryChangesW(HANDLE, PVOID, DWORD, BOOL, DWORD, PDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL ReadEventLogA(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); + BOOL ReadEventLogW(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); + BOOL ReadFileScatter(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); + HANDLE RegisterEventSourceA (LPCSTR, LPCSTR); + HANDLE RegisterEventSourceW(LPCWSTR, LPCWSTR); + BOOL ReportEventA(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCSTR*, PVOID); + BOOL ReportEventW(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR*, PVOID); + BOOL RevertToSelf(); + BOOL SetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); + BOOL SetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetHandleInformation(HANDLE, DWORD, DWORD); + BOOL SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetPrivateObjectSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, PGENERIC_MAPPING, HANDLE); + BOOL SetProcessAffinityMask(HANDLE, DWORD); + BOOL SetProcessPriorityBoost(HANDLE, BOOL); + BOOL SetProcessShutdownParameters(DWORD, DWORD); + BOOL SetProcessWorkingSetSize(HANDLE, SIZE_T, SIZE_T); + BOOL SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); + BOOL SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID, BOOL); + BOOL SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID, BOOL); + BOOL SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); + BOOL SetSystemTimeAdjustment(DWORD, BOOL); + DWORD SetTapeParameters(HANDLE, DWORD, PVOID); + DWORD SetTapePosition(HANDLE, DWORD, DWORD, DWORD, DWORD, BOOL); + BOOL SetThreadPriorityBoost(HANDLE, BOOL); + BOOL SetThreadToken(PHANDLE, HANDLE); + BOOL SetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD); + DWORD SignalObjectAndWait(HANDLE, HANDLE, DWORD, BOOL); + BOOL SwitchToThread(); + BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); + BOOL TryEnterCriticalSection(LPCRITICAL_SECTION); + BOOL UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED); + BOOL UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, PVOID, DWORD); + BOOL UpdateResourceW(HANDLE, LPCWSTR, LPCWSTR, WORD, PVOID, DWORD); + BOOL WriteFileGather(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); + DWORD WriteTapemark(HANDLE, DWORD, DWORD, BOOL); + + static if (_WIN32_WINNT >= 0x500) { + BOOL AddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID); + BOOL AddAccessDeniedAceEx(PACL, DWORD, DWORD, DWORD, PSID); + PVOID AddVectoredExceptionHandler(ULONG, PVECTORED_EXCEPTION_HANDLER); + BOOL AllocateUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); + BOOL AssignProcessToJobObject(HANDLE, HANDLE); + BOOL ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG); + LPVOID CreateFiberEx(SIZE_T, SIZE_T, DWORD, LPFIBER_START_ROUTINE, LPVOID); + HANDLE CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR); + HANDLE CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR); + BOOL CreateHardLinkA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateHardLinkW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); + HANDLE CreateJobObjectA(LPSECURITY_ATTRIBUTES, LPCSTR); + HANDLE CreateJobObjectW(LPSECURITY_ATTRIBUTES, LPCWSTR); + BOOL CreateProcessWithLogonW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateTimerQueue(); + BOOL CreateTimerQueueTimer(PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, DWORD, DWORD, ULONG); + BOOL DeleteTimerQueue(HANDLE); + BOOL DeleteTimerQueueEx(HANDLE, HANDLE); + BOOL DeleteTimerQueueTimer(HANDLE, HANDLE, HANDLE); + BOOL DeleteVolumeMountPointA(LPCSTR); + BOOL DeleteVolumeMountPointW(LPCWSTR); + BOOL DnsHostnameToComputerNameA(LPCSTR, LPSTR, LPDWORD); + BOOL DnsHostnameToComputerNameW(LPCWSTR, LPWSTR, LPDWORD); + BOOL EncryptFileA(LPCSTR); + BOOL EncryptFileW(LPCWSTR); + BOOL FileEncryptionStatusA(LPCSTR, LPDWORD); + BOOL FileEncryptionStatusW(LPCWSTR, LPDWORD); + HANDLE FindFirstVolumeA(LPCSTR, DWORD); + HANDLE FindFirstVolumeMountPointA(LPSTR, LPSTR, DWORD); + HANDLE FindFirstVolumeMountPointW(LPWSTR, LPWSTR, DWORD); + HANDLE FindFirstVolumeW(LPCWSTR, DWORD); + BOOL FindNextVolumeA(HANDLE, LPCSTR, DWORD); + BOOL FindNextVolumeW(HANDLE, LPWSTR, DWORD); + BOOL FindNextVolumeMountPointA(HANDLE, LPSTR, DWORD); + BOOL FindNextVolumeMountPointW(HANDLE, LPWSTR, DWORD); + BOOL FindVolumeClose(HANDLE); + BOOL FindVolumeMountPointClose(HANDLE); + BOOL FlushViewOfFile(PCVOID, DWORD); + BOOL FreeUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); + BOOL GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD); + BOOL GetComputerNameExW(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD); + BOOL GetFileSizeEx(HANDLE, PLARGE_INTEGER); + BOOL GetModuleHandleExA(DWORD, LPCSTR, HMODULE*); + BOOL GetModuleHandleExW(DWORD, LPCWSTR, HMODULE*); + HANDLE GetProcessHeap(); + DWORD GetProcessHeaps(DWORD, PHANDLE); + BOOL GetProcessIoCounters(HANDLE, PIO_COUNTERS); + BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); + UINT GetSystemWindowsDirectoryA(LPSTR, UINT); + UINT GetSystemWindowsDirectoryW(LPWSTR, UINT); + BOOL GetVolumeNameForVolumeMountPointA(LPCSTR, LPSTR, DWORD); + BOOL GetVolumeNameForVolumeMountPointW(LPCWSTR, LPWSTR, DWORD); + BOOL GetVolumePathNameA(LPCSTR, LPSTR, DWORD); + BOOL GetVolumePathNameW(LPCWSTR, LPWSTR, DWORD); + BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX); + BOOL IsBadCodePtr(FARPROC); + BOOL IsSystemResumeAutomatic(); + BOOL MapUserPhysicalPages(PVOID, ULONG_PTR, PULONG_PTR); + BOOL MapUserPhysicalPagesScatter(PVOID*, ULONG_PTR, PULONG_PTR); + PVOID MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + PVOID MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, PVOID); + HANDLE OpenFileMappingA(DWORD, BOOL, LPCSTR); + HANDLE OpenFileMappingW(DWORD, BOOL, LPCWSTR); + BOOL ProcessIdToSessionId(DWORD, DWORD*); + BOOL QueryInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD); + ULONG RemoveVectoredExceptionHandler(PVOID); + BOOL ReplaceFileA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID); + BOOL ReplaceFileW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPVOID, LPVOID); + BOOL SetComputerNameExA(COMPUTER_NAME_FORMAT, LPCSTR); + BOOL SetComputerNameExW(COMPUTER_NAME_FORMAT, LPCWSTR); + BOOL SetFilePointerEx(HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD); + BOOL SetInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD); + BOOL SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, SECURITY_DESCRIPTOR_CONTROL); + BOOL SetSystemPowerState(BOOL, BOOL); + EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE); + DWORD SetThreadIdealProcessor(HANDLE, DWORD); + BOOL SetVolumeMountPointA(LPCSTR, LPCSTR); + BOOL SetVolumeMountPointW(LPCWSTR, LPCWSTR); + BOOL TerminateJobObject(HANDLE, UINT); + BOOL UnmapViewOfFile(PVOID); + BOOL UnregisterWait(HANDLE); + BOOL UnregisterWaitEx(HANDLE, HANDLE); + BOOL VerifyVersionInfoA(LPOSVERSIONINFOEXA, DWORD, DWORDLONG); + BOOL VerifyVersionInfoW(LPOSVERSIONINFOEXW, DWORD, DWORDLONG); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL ActivateActCtx(HANDLE, ULONG_PTR*); + void AddRefActCtx(HANDLE); + BOOL CheckNameLegalDOS8Dot3A(LPCSTR, LPSTR, DWORD, PBOOL, PBOOL); + BOOL CheckNameLegalDOS8Dot3W(LPCWSTR, LPSTR, DWORD, PBOOL, PBOOL); + BOOL CheckRemoteDebuggerPresent(HANDLE, PBOOL); + BOOL ConvertFiberToThread(); + HANDLE CreateActCtxA(PCACTCTXA); + HANDLE CreateActCtxW(PCACTCTXW); + HANDLE CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE); + BOOL DeactivateActCtx(DWORD, ULONG_PTR); + BOOL DebugActiveProcessStop(DWORD); + BOOL DebugBreakProcess(HANDLE); + BOOL DebugSetProcessKillOnExit(BOOL); + BOOL FindActCtxSectionGuid(DWORD, const(GUID)*, ULONG, const(GUID)*, + PACTCTX_SECTION_KEYED_DATA); + BOOL FindActCtxSectionStringA(DWORD, const(GUID)*, ULONG, LPCSTR, + PACTCTX_SECTION_KEYED_DATA); + BOOL FindActCtxSectionStringW(DWORD, const(GUID)*, ULONG, LPCWSTR, + PACTCTX_SECTION_KEYED_DATA); + BOOL GetCurrentActCtx(HANDLE*); + VOID GetNativeSystemInfo(LPSYSTEM_INFO); + BOOL GetProcessHandleCount(HANDLE, PDWORD); + BOOL GetSystemRegistryQuota(PDWORD, PDWORD); + BOOL GetSystemTimes(LPFILETIME, LPFILETIME, LPFILETIME); + UINT GetSystemWow64DirectoryA(LPSTR, UINT); + UINT GetSystemWow64DirectoryW(LPWSTR, UINT); + BOOL GetThreadIOPendingFlag(HANDLE, PBOOL); + BOOL GetVolumePathNamesForVolumeNameA(LPCSTR, LPSTR, DWORD, PDWORD); + BOOL GetVolumePathNamesForVolumeNameW(LPCWSTR, LPWSTR, DWORD, PDWORD); + UINT GetWriteWatch(DWORD, PVOID, SIZE_T, PVOID*, PULONG_PTR, PULONG); + BOOL HeapQueryInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T); + BOOL HeapSetInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T); + BOOL IsProcessInJob(HANDLE, HANDLE, PBOOL); + BOOL IsWow64Process(HANDLE, PBOOL); + BOOL QueryActCtxW(DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T*); + BOOL QueryMemoryResourceNotification(HANDLE, PBOOL); + void ReleaseActCtx(HANDLE); + UINT ResetWriteWatch(LPVOID, SIZE_T); + BOOL SetFileShortNameA(HANDLE, LPCSTR); + BOOL SetFileShortNameW(HANDLE, LPCWSTR); + BOOL SetFileValidData(HANDLE, LONGLONG); + BOOL ZombifyActCtx(HANDLE); + } + + static if (_WIN32_WINNT >= 0x502) { + DWORD GetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); + DWORD GetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); + DWORD GetDllDirectoryA(DWORD, LPSTR); + DWORD GetDllDirectoryW(DWORD, LPWSTR); + DWORD GetThreadId(HANDLE); + DWORD GetProcessId(HANDLE); + HANDLE ReOpenFile(HANDLE, DWORD, DWORD, DWORD); + BOOL SetDllDirectoryA(LPCSTR); + BOOL SetDllDirectoryW(LPCWSTR); + BOOL SetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); + BOOL SetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); + } + + // ??? + static if (_WIN32_WINNT >= 0x510) { + VOID RestoreLastError(DWORD); + } +} + +mixin DECLARE_AW!("STARTUPINFO"); +version (Unicode) { + //alias STARTUPINFOW STARTUPINFO; + alias WIN32_FIND_DATAW WIN32_FIND_DATA; + alias ENUMRESLANGPROCW ENUMRESLANGPROC; + alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; + alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; + alias AddAtomW AddAtom; + alias BeginUpdateResourceW BeginUpdateResource; + alias BuildCommDCBW BuildCommDCB; + alias BuildCommDCBAndTimeoutsW BuildCommDCBAndTimeouts; + alias CallNamedPipeW CallNamedPipe; + alias CommConfigDialogW CommConfigDialog; + alias CopyFileW CopyFile; + alias CopyFileExW CopyFileEx; + alias CreateDirectoryW CreateDirectory; + alias CreateDirectoryExW CreateDirectoryEx; + alias CreateEventW CreateEvent; + alias CreateFileW CreateFile; + alias CreateMailslotW CreateMailslot; + alias CreateMutexW CreateMutex; + alias CreateProcessW CreateProcess; + alias CreateSemaphoreW CreateSemaphore; + alias DeleteFileW DeleteFile; + alias EndUpdateResourceW EndUpdateResource; + alias EnumResourceLanguagesW EnumResourceLanguages; + alias EnumResourceNamesW EnumResourceNames; + alias EnumResourceTypesW EnumResourceTypes; + alias ExpandEnvironmentStringsW ExpandEnvironmentStrings; + alias FatalAppExitW FatalAppExit; + alias FindAtomW FindAtom; + alias FindFirstChangeNotificationW FindFirstChangeNotification; + alias FindFirstFileW FindFirstFile; + alias FindNextFileW FindNextFile; + alias FindResourceW FindResource; + alias FindResourceExW FindResourceEx; + alias FormatMessageW FormatMessage; + alias FreeEnvironmentStringsW FreeEnvironmentStrings; + alias GetAtomNameW GetAtomName; + alias GetCommandLineW GetCommandLine; + alias GetComputerNameW GetComputerName; + alias GetCurrentDirectoryW GetCurrentDirectory; + alias GetDefaultCommConfigW GetDefaultCommConfig; + alias GetDiskFreeSpaceW GetDiskFreeSpace; + alias GetDiskFreeSpaceExW GetDiskFreeSpaceEx; + alias GetDriveTypeW GetDriveType; + alias GetEnvironmentStringsW GetEnvironmentStrings; + alias GetEnvironmentVariableW GetEnvironmentVariable; + alias GetFileAttributesW GetFileAttributes; + alias GetFullPathNameW GetFullPathName; + alias GetLogicalDriveStringsW GetLogicalDriveStrings; + alias GetModuleFileNameW GetModuleFileName; + alias GetModuleHandleW GetModuleHandle; + alias GetNamedPipeHandleStateW GetNamedPipeHandleState; + alias GetPrivateProfileIntW GetPrivateProfileInt; + alias GetPrivateProfileSectionW GetPrivateProfileSection; + alias GetPrivateProfileSectionNamesW GetPrivateProfileSectionNames; + alias GetPrivateProfileStringW GetPrivateProfileString; + alias GetPrivateProfileStructW GetPrivateProfileStruct; + alias GetProfileIntW GetProfileInt; + alias GetProfileSectionW GetProfileSection; + alias GetProfileStringW GetProfileString; + alias GetShortPathNameW GetShortPathName; + alias GetStartupInfoW GetStartupInfo; + alias GetSystemDirectoryW GetSystemDirectory; + alias GetTempFileNameW GetTempFileName; + alias GetTempPathW GetTempPath; + alias GetUserNameW GetUserName; + alias GetVersionExW GetVersionEx; + alias GetVolumeInformationW GetVolumeInformation; + alias GetWindowsDirectoryW GetWindowsDirectory; + alias GlobalAddAtomW GlobalAddAtom; + alias GlobalFindAtomW GlobalFindAtom; + alias GlobalGetAtomNameW GlobalGetAtomName; + alias IsBadStringPtrW IsBadStringPtr; + alias LoadLibraryW LoadLibrary; + alias LoadLibraryExW LoadLibraryEx; + alias lstrcatW lstrcat; + alias lstrcmpW lstrcmp; + alias lstrcmpiW lstrcmpi; + alias lstrcpyW lstrcpy; + alias lstrcpynW lstrcpyn; + alias lstrlenW lstrlen; + alias MoveFileW MoveFile; + alias OpenEventW OpenEvent; + alias OpenMutexW OpenMutex; + alias OpenSemaphoreW OpenSemaphore; + alias OutputDebugStringW OutputDebugString; + alias RemoveDirectoryW RemoveDirectory; + alias SearchPathW SearchPath; + alias SetComputerNameW SetComputerName; + alias SetCurrentDirectoryW SetCurrentDirectory; + alias SetDefaultCommConfigW SetDefaultCommConfig; + alias SetEnvironmentVariableW SetEnvironmentVariable; + alias SetFileAttributesW SetFileAttributes; + alias SetVolumeLabelW SetVolumeLabel; + alias WaitNamedPipeW WaitNamedPipe; + alias WritePrivateProfileSectionW WritePrivateProfileSection; + alias WritePrivateProfileStringW WritePrivateProfileString; + alias WritePrivateProfileStructW WritePrivateProfileStruct; + alias WriteProfileSectionW WriteProfileSection; + alias WriteProfileStringW WriteProfileString; + alias CreateWaitableTimerW CreateWaitableTimer; + alias GetFileAttributesExW GetFileAttributesEx; + alias GetLongPathNameW GetLongPathName; + alias QueryDosDeviceW QueryDosDevice; + + alias HW_PROFILE_INFOW HW_PROFILE_INFO; + alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; + alias BackupEventLogW BackupEventLog; + alias ClearEventLogW ClearEventLog; + alias CreateNamedPipeW CreateNamedPipe; + alias CreateProcessAsUserW CreateProcessAsUser; + alias DefineDosDeviceW DefineDosDevice; + alias FindFirstFileExW FindFirstFileEx; + alias GetBinaryTypeW GetBinaryType; + alias GetCompressedFileSizeW GetCompressedFileSize; + alias GetFileSecurityW GetFileSecurity; + alias LogonUserW LogonUser; + alias LookupAccountNameW LookupAccountName; + alias LookupAccountSidW LookupAccountSid; + alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; + alias LookupPrivilegeNameW LookupPrivilegeName; + alias LookupPrivilegeValueW LookupPrivilegeValue; + alias MoveFileExW MoveFileEx; + alias ObjectCloseAuditAlarmW ObjectCloseAuditAlarm; + alias ObjectDeleteAuditAlarmW ObjectDeleteAuditAlarm; + alias ObjectOpenAuditAlarmW ObjectOpenAuditAlarm; + alias ObjectPrivilegeAuditAlarmW ObjectPrivilegeAuditAlarm; + alias OpenBackupEventLogW OpenBackupEventLog; + alias OpenEventLogW OpenEventLog; + alias PrivilegedServiceAuditAlarmW PrivilegedServiceAuditAlarm; + alias ReadEventLogW ReadEventLog; + alias RegisterEventSourceW RegisterEventSource; + alias ReportEventW ReportEvent; + alias SetFileSecurityW SetFileSecurity; + alias UpdateResourceW UpdateResource; + + static if (_WIN32_WINNT >= 0x500) { + alias CreateFileMappingW CreateFileMapping; + alias CreateHardLinkW CreateHardLink; + alias CreateJobObjectW CreateJobObject; + alias DeleteVolumeMountPointW DeleteVolumeMountPoint; + alias DnsHostnameToComputerNameW DnsHostnameToComputerName; + alias EncryptFileW EncryptFile; + alias FileEncryptionStatusW FileEncryptionStatus; + alias FindFirstVolumeW FindFirstVolume; + alias FindFirstVolumeMountPointW FindFirstVolumeMountPoint; + alias FindNextVolumeW FindNextVolume; + alias FindNextVolumeMountPointW FindNextVolumeMountPoint; + alias GetModuleHandleExW GetModuleHandleEx; + alias GetSystemWindowsDirectoryW GetSystemWindowsDirectory; + alias GetVolumeNameForVolumeMountPointW GetVolumeNameForVolumeMountPoint; + alias GetVolumePathNameW GetVolumePathName; + alias OpenFileMappingW OpenFileMapping; + alias ReplaceFileW ReplaceFile; + alias SetVolumeMountPointW SetVolumeMountPoint; + alias VerifyVersionInfoW VerifyVersionInfo; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ACTCTXW ACTCTX; + alias CheckNameLegalDOS8Dot3W CheckNameLegalDOS8Dot3; + alias CreateActCtxW CreateActCtx; + alias FindActCtxSectionStringW FindActCtxSectionString; + alias GetSystemWow64DirectoryW GetSystemWow64Directory; + alias GetVolumePathNamesForVolumeNameW GetVolumePathNamesForVolumeName; + alias SetFileShortNameW SetFileShortName; + } + + static if (_WIN32_WINNT >= 0x502) { + alias SetFirmwareEnvironmentVariableW SetFirmwareEnvironmentVariable; + alias SetDllDirectoryW SetDllDirectory; + alias GetDllDirectoryW GetDllDirectory; + } + +} else { + //alias STARTUPINFOA STARTUPINFO; + alias WIN32_FIND_DATAA WIN32_FIND_DATA; + alias ENUMRESLANGPROCW ENUMRESLANGPROC; + alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; + alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; + alias AddAtomA AddAtom; + alias BeginUpdateResourceA BeginUpdateResource; + alias BuildCommDCBA BuildCommDCB; + alias BuildCommDCBAndTimeoutsA BuildCommDCBAndTimeouts; + alias CallNamedPipeA CallNamedPipe; + alias CommConfigDialogA CommConfigDialog; + alias CopyFileA CopyFile; + alias CopyFileExA CopyFileEx; + alias CreateDirectoryA CreateDirectory; + alias CreateDirectoryExA CreateDirectoryEx; + alias CreateEventA CreateEvent; + alias CreateFileA CreateFile; + alias CreateMailslotA CreateMailslot; + alias CreateMutexA CreateMutex; + alias CreateProcessA CreateProcess; + alias CreateSemaphoreA CreateSemaphore; + alias DeleteFileA DeleteFile; + alias EndUpdateResourceA EndUpdateResource; + alias EnumResourceLanguagesA EnumResourceLanguages; + alias EnumResourceNamesA EnumResourceNames; + alias EnumResourceTypesA EnumResourceTypes; + alias ExpandEnvironmentStringsA ExpandEnvironmentStrings; + alias FatalAppExitA FatalAppExit; + alias FindAtomA FindAtom; + alias FindFirstChangeNotificationA FindFirstChangeNotification; + alias FindFirstFileA FindFirstFile; + alias FindNextFileA FindNextFile; + alias FindResourceA FindResource; + alias FindResourceExA FindResourceEx; + alias FormatMessageA FormatMessage; + alias FreeEnvironmentStringsA FreeEnvironmentStrings; + alias GetAtomNameA GetAtomName; + alias GetCommandLineA GetCommandLine; + alias GetComputerNameA GetComputerName; + alias GetCurrentDirectoryA GetCurrentDirectory; + alias GetDefaultCommConfigA GetDefaultCommConfig; + alias GetDiskFreeSpaceA GetDiskFreeSpace; + alias GetDiskFreeSpaceExA GetDiskFreeSpaceEx; + alias GetDriveTypeA GetDriveType; + alias GetEnvironmentVariableA GetEnvironmentVariable; + alias GetFileAttributesA GetFileAttributes; + alias GetFullPathNameA GetFullPathName; + alias GetLogicalDriveStringsA GetLogicalDriveStrings; + alias GetNamedPipeHandleStateA GetNamedPipeHandleState; + alias GetModuleHandleA GetModuleHandle; + alias GetModuleFileNameA GetModuleFileName; + alias GetPrivateProfileIntA GetPrivateProfileInt; + alias GetPrivateProfileSectionA GetPrivateProfileSection; + alias GetPrivateProfileSectionNamesA GetPrivateProfileSectionNames; + alias GetPrivateProfileStringA GetPrivateProfileString; + alias GetPrivateProfileStructA GetPrivateProfileStruct; + alias GetProfileIntA GetProfileInt; + alias GetProfileSectionA GetProfileSection; + alias GetProfileStringA GetProfileString; + alias GetShortPathNameA GetShortPathName; + alias GetStartupInfoA GetStartupInfo; + alias GetSystemDirectoryA GetSystemDirectory; + alias GetTempFileNameA GetTempFileName; + alias GetTempPathA GetTempPath; + alias GetUserNameA GetUserName; + alias GetVersionExA GetVersionEx; + alias GetVolumeInformationA GetVolumeInformation; + alias GetWindowsDirectoryA GetWindowsDirectory; + alias GlobalAddAtomA GlobalAddAtom; + alias GlobalFindAtomA GlobalFindAtom; + alias GlobalGetAtomNameA GlobalGetAtomName; + alias IsBadStringPtrA IsBadStringPtr; + alias LoadLibraryA LoadLibrary; + alias LoadLibraryExA LoadLibraryEx; + alias lstrcatA lstrcat; + alias lstrcmpA lstrcmp; + alias lstrcmpiA lstrcmpi; + alias lstrcpyA lstrcpy; + alias lstrcpynA lstrcpyn; + alias lstrlenA lstrlen; + alias MoveFileA MoveFile; + alias OpenEventA OpenEvent; + alias OpenMutexA OpenMutex; + alias OpenSemaphoreA OpenSemaphore; + alias OutputDebugStringA OutputDebugString; + alias RemoveDirectoryA RemoveDirectory; + alias SearchPathA SearchPath; + alias SetComputerNameA SetComputerName; + alias SetCurrentDirectoryA SetCurrentDirectory; + alias SetDefaultCommConfigA SetDefaultCommConfig; + alias SetEnvironmentVariableA SetEnvironmentVariable; + alias SetFileAttributesA SetFileAttributes; + alias SetVolumeLabelA SetVolumeLabel; + alias WaitNamedPipeA WaitNamedPipe; + alias WritePrivateProfileSectionA WritePrivateProfileSection; + alias WritePrivateProfileStringA WritePrivateProfileString; + alias WritePrivateProfileStructA WritePrivateProfileStruct; + alias WriteProfileSectionA WriteProfileSection; + alias WriteProfileStringA WriteProfileString; + alias CreateWaitableTimerA CreateWaitableTimer; + alias GetFileAttributesExA GetFileAttributesEx; + alias GetLongPathNameA GetLongPathName; + alias QueryDosDeviceA QueryDosDevice; + + alias HW_PROFILE_INFOA HW_PROFILE_INFO; + alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; + alias BackupEventLogA BackupEventLog; + alias ClearEventLogA ClearEventLog; + alias CreateNamedPipeA CreateNamedPipe; + alias CreateProcessAsUserA CreateProcessAsUser; + alias DefineDosDeviceA DefineDosDevice; + alias FindFirstFileExA FindFirstFileEx; + alias GetBinaryTypeA GetBinaryType; + alias GetCompressedFileSizeA GetCompressedFileSize; + alias GetFileSecurityA GetFileSecurity; + alias LogonUserA LogonUser; + alias LookupAccountNameA LookupAccountName; + alias LookupAccountSidA LookupAccountSid; + alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; + alias LookupPrivilegeNameA LookupPrivilegeName; + alias LookupPrivilegeValueA LookupPrivilegeValue; + alias MoveFileExA MoveFileEx; + alias ObjectCloseAuditAlarmA ObjectCloseAuditAlarm; + alias ObjectDeleteAuditAlarmA ObjectDeleteAuditAlarm; + alias ObjectOpenAuditAlarmA ObjectOpenAuditAlarm; + alias ObjectPrivilegeAuditAlarmA ObjectPrivilegeAuditAlarm; + alias OpenBackupEventLogA OpenBackupEventLog; + alias OpenEventLogA OpenEventLog; + alias PrivilegedServiceAuditAlarmA PrivilegedServiceAuditAlarm; + alias ReadEventLogA ReadEventLog; + alias RegisterEventSourceA RegisterEventSource; + alias ReportEventA ReportEvent; + alias SetFileSecurityA SetFileSecurity; + alias UpdateResourceA UpdateResource; + + static if (_WIN32_WINNT >= 0x500) { + alias CreateFileMappingA CreateFileMapping; + alias CreateHardLinkA CreateHardLink; + alias CreateJobObjectA CreateJobObject; + alias DeleteVolumeMountPointA DeleteVolumeMountPoint; + alias DnsHostnameToComputerNameA DnsHostnameToComputerName; + alias EncryptFileA EncryptFile; + alias FileEncryptionStatusA FileEncryptionStatus; + alias FindFirstVolumeA FindFirstVolume; + alias FindFirstVolumeMountPointA FindFirstVolumeMountPoint; + alias FindNextVolumeA FindNextVolume; + alias FindNextVolumeMountPointA FindNextVolumeMountPoint; + alias GetModuleHandleExA GetModuleHandleEx; + alias GetSystemWindowsDirectoryA GetSystemWindowsDirectory; + alias GetVolumeNameForVolumeMountPointA GetVolumeNameForVolumeMountPoint; + alias GetVolumePathNameA GetVolumePathName; + alias OpenFileMappingA OpenFileMapping; + alias ReplaceFileA ReplaceFile; + alias SetVolumeMountPointA SetVolumeMountPoint; + alias VerifyVersionInfoA VerifyVersionInfo; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ACTCTXA ACTCTX; + alias CheckNameLegalDOS8Dot3A CheckNameLegalDOS8Dot3; + alias CreateActCtxA CreateActCtx; + alias FindActCtxSectionStringA FindActCtxSectionString; + alias GetSystemWow64DirectoryA GetSystemWow64Directory; + alias GetVolumePathNamesForVolumeNameA GetVolumePathNamesForVolumeName; + alias SetFileShortNameA SetFileShortName; + } + + static if (_WIN32_WINNT >= 0x502) { + alias GetDllDirectoryA GetDllDirectory; + alias SetDllDirectoryA SetDllDirectory; + alias SetFirmwareEnvironmentVariableA SetFirmwareEnvironmentVariable; + } +} + +alias STARTUPINFO* LPSTARTUPINFO; +alias WIN32_FIND_DATA* LPWIN32_FIND_DATA; + +alias HW_PROFILE_INFO* LPHW_PROFILE_INFO; + +static if (_WIN32_WINNT >= 0x501) { + alias ACTCTX* PACTCTX, PCACTCTX; +} diff --git a/src/core/sys/windows/winber.d b/src/core/sys/windows/winber.d index 55562b748b..1efe5e7302 100644 --- a/src/core/sys/windows/winber.d +++ b/src/core/sys/windows/winber.d @@ -1,69 +1,69 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winber.d) - */ -module core.sys.windows.winber; - -/* Comment from MinGW - winber.h - Header file for the Windows LDAP Basic Encoding Rules API - - Written by Filip Navara - - References: - The C LDAP Application Program Interface - http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt - - Lightweight Directory Access Protocol Reference - http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ - - import core.sys.windows.basetsd; - -/* Opaque structure - * http://msdn.microsoft.com/library/en-us/ldap/ldap/berelement.asp - */ -struct BerElement; - -alias int ber_int_t, ber_slen_t; -alias uint ber_uint_t, ber_len_t, ber_tag_t; - -align(4): -struct BerValue { - ber_len_t bv_len; - char* bv_val; -} -alias BerValue LDAP_BERVAL, BERVAL; -alias BerValue* PLDAP_BERVAL, PBERVAL; - -const ber_tag_t - LBER_ERROR = -1, - LBER_DEFAULT = -1, - LBER_USE_DER = 1; - -/* FIXME: In MinGW, these are WINBERAPI == DECLSPEC_IMPORT. Linkage - * attribute? - */ -extern (C) { - BerElement* ber_init(const(BerValue)*); - int ber_printf(BerElement*, const(char)*, ...); - int ber_flatten(BerElement*, BerValue**); - ber_tag_t ber_scanf(BerElement*, const(char)*, ...); - ber_tag_t ber_peek_tag(BerElement*, ber_len_t*); - ber_tag_t ber_skip_tag(BerElement*, ber_len_t*); - ber_tag_t ber_first_element(BerElement*, ber_len_t*, char**); - ber_tag_t ber_next_element(BerElement*, ber_len_t*, char*); - void ber_bvfree(BerValue*); - void ber_bvecfree(BerValue**); - void ber_free(BerElement*, int); - BerValue* ber_bvdup(BerValue*); - BerElement* ber_alloc_t(int); -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winber.d) + */ +module core.sys.windows.winber; + +/* Comment from MinGW + winber.h - Header file for the Windows LDAP Basic Encoding Rules API + + Written by Filip Navara + + References: + The C LDAP Application Program Interface + http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt + + Lightweight Directory Access Protocol Reference + http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ + + import core.sys.windows.basetsd; + +/* Opaque structure + * http://msdn.microsoft.com/library/en-us/ldap/ldap/berelement.asp + */ +struct BerElement; + +alias int ber_int_t, ber_slen_t; +alias uint ber_uint_t, ber_len_t, ber_tag_t; + +align(4): +struct BerValue { + ber_len_t bv_len; + char* bv_val; +} +alias BerValue LDAP_BERVAL, BERVAL; +alias BerValue* PLDAP_BERVAL, PBERVAL; + +const ber_tag_t + LBER_ERROR = -1, + LBER_DEFAULT = -1, + LBER_USE_DER = 1; + +/* FIXME: In MinGW, these are WINBERAPI == DECLSPEC_IMPORT. Linkage + * attribute? + */ +extern (C) { + BerElement* ber_init(const(BerValue)*); + int ber_printf(BerElement*, const(char)*, ...); + int ber_flatten(BerElement*, BerValue**); + ber_tag_t ber_scanf(BerElement*, const(char)*, ...); + ber_tag_t ber_peek_tag(BerElement*, ber_len_t*); + ber_tag_t ber_skip_tag(BerElement*, ber_len_t*); + ber_tag_t ber_first_element(BerElement*, ber_len_t*, char**); + ber_tag_t ber_next_element(BerElement*, ber_len_t*, char*); + void ber_bvfree(BerValue*); + void ber_bvecfree(BerValue**); + void ber_free(BerElement*, int); + BerValue* ber_bvdup(BerValue*); + BerElement* ber_alloc_t(int); +} diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index ddf5359ba0..30e5cc3848 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -1,276 +1,276 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_wincon.d) - */ -module core.sys.windows.wincon; -pragma(lib, "kernel32"); - -private import core.sys.windows.w32api, core.sys.windows.windef; - -// FIXME: clean up Windows version support - -enum { - FOREGROUND_BLUE = 1, - FOREGROUND_GREEN = 2, - FOREGROUND_RED = 4, - FOREGROUND_INTENSITY = 8, - BACKGROUND_BLUE = 16, - BACKGROUND_GREEN = 32, - BACKGROUND_RED = 64, - BACKGROUND_INTENSITY = 128 -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - CONSOLE_FULLSCREEN_MODE = 1, - CONSOLE_WINDOWED_MODE = 0 - } -} - -enum { - CTRL_C_EVENT = 0, - CTRL_BREAK_EVENT = 1, - CTRL_CLOSE_EVENT = 2, - CTRL_LOGOFF_EVENT = 5, - CTRL_SHUTDOWN_EVENT = 6 -} - -enum { - ENABLE_PROCESSED_INPUT = 1, - ENABLE_LINE_INPUT = 2, - ENABLE_ECHO_INPUT = 4, - ENABLE_WINDOW_INPUT = 8, - ENABLE_MOUSE_INPUT = 16 -} - -enum { - ENABLE_PROCESSED_OUTPUT = 1, - ENABLE_WRAP_AT_EOL_OUTPUT = 2 -} - -enum { - KEY_EVENT = 1, - MOUSE_EVENT = 2, - WINDOW_BUFFER_SIZE_EVENT = 4, - MENU_EVENT = 8, - FOCUS_EVENT = 16 -} -enum { - RIGHT_ALT_PRESSED = 1, - LEFT_ALT_PRESSED = 2, - RIGHT_CTRL_PRESSED = 4, - LEFT_CTRL_PRESSED = 8, - SHIFT_PRESSED = 16, - NUMLOCK_ON = 32, - SCROLLLOCK_ON = 64, - CAPSLOCK_ON = 128, - ENHANCED_KEY = 256 -} -enum { - FROM_LEFT_1ST_BUTTON_PRESSED = 1, - RIGHTMOST_BUTTON_PRESSED = 2, - FROM_LEFT_2ND_BUTTON_PRESSED = 4, - FROM_LEFT_3RD_BUTTON_PRESSED = 8, - FROM_LEFT_4TH_BUTTON_PRESSED = 16 -} - -enum { - MOUSE_MOVED = 1, - DOUBLE_CLICK = 2, - MOUSE_WHEELED = 4 -} - -struct CHAR_INFO { - union _Char { - WCHAR UnicodeChar; - CHAR AsciiChar; - } - _Char Char; - WORD Attributes; -} -alias CHAR_INFO* PCHAR_INFO; - -struct SMALL_RECT { - SHORT Left; - SHORT Top; - SHORT Right; - SHORT Bottom; -} -alias SMALL_RECT* PSMALL_RECT; - -struct CONSOLE_CURSOR_INFO { - DWORD dwSize; - BOOL bVisible; -} -alias CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO; - -struct COORD { - SHORT X; - SHORT Y; -} -alias COORD* PCOORD; - -struct CONSOLE_FONT_INFO { - DWORD nFont; - COORD dwFontSize; -} -alias CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO; - -struct CONSOLE_SCREEN_BUFFER_INFO { - COORD dwSize; - COORD dwCursorPosition; - WORD wAttributes; - SMALL_RECT srWindow; - COORD dwMaximumWindowSize; -} -alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO; - -alias BOOL function(DWORD) PHANDLER_ROUTINE; - -struct KEY_EVENT_RECORD { - BOOL bKeyDown; - WORD wRepeatCount; - WORD wVirtualKeyCode; - WORD wVirtualScanCode; - union _uChar { - WCHAR UnicodeChar; - CHAR AsciiChar; - } - _uChar uChar; - DWORD dwControlKeyState; -} - -struct MOUSE_EVENT_RECORD { - COORD dwMousePosition; - DWORD dwButtonState; - DWORD dwControlKeyState; - DWORD dwEventFlags; -} - -struct WINDOW_BUFFER_SIZE_RECORD { - COORD dwSize; -} - -struct MENU_EVENT_RECORD { - UINT dwCommandId; -} -alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD; - -struct FOCUS_EVENT_RECORD { - BOOL bSetFocus; -} - -struct INPUT_RECORD { - WORD EventType; - union _Event { - KEY_EVENT_RECORD KeyEvent; - MOUSE_EVENT_RECORD MouseEvent; - WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; - MENU_EVENT_RECORD MenuEvent; - FOCUS_EVENT_RECORD FocusEvent; - } - _Event Event; -} -alias INPUT_RECORD* PINPUT_RECORD; - -extern (Windows): - -BOOL AllocConsole(); -HANDLE CreateConsoleScreenBuffer(DWORD, DWORD, SECURITY_ATTRIBUTES*, DWORD, LPVOID); -BOOL FillConsoleOutputAttribute(HANDLE, WORD, DWORD, COORD, PDWORD); -BOOL FillConsoleOutputCharacterA(HANDLE, CHAR, DWORD, COORD, PDWORD); -BOOL FillConsoleOutputCharacterW(HANDLE, WCHAR, DWORD, COORD, PDWORD); -BOOL FlushConsoleInputBuffer(HANDLE); -BOOL FreeConsole(); -BOOL GenerateConsoleCtrlEvent(DWORD, DWORD); -UINT GetConsoleCP(); -BOOL GetConsoleCursorInfo(HANDLE, PCONSOLE_CURSOR_INFO); -BOOL GetConsoleMode(HANDLE,PDWORD); -UINT GetConsoleOutputCP(); -BOOL GetConsoleScreenBufferInfo(HANDLE, PCONSOLE_SCREEN_BUFFER_INFO); -DWORD GetConsoleTitleA(LPSTR, DWORD); -DWORD GetConsoleTitleW(LPWSTR, DWORD); -COORD GetLargestConsoleWindowSize(HANDLE); -BOOL GetNumberOfConsoleInputEvents(HANDLE, PDWORD); -BOOL GetNumberOfConsoleMouseButtons(PDWORD); -BOOL PeekConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD); -BOOL PeekConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD); -BOOL ReadConsoleA(HANDLE, PVOID, DWORD, PDWORD, PVOID); -BOOL ReadConsoleW(HANDLE, PVOID, DWORD, PDWORD, PVOID); -BOOL ReadConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD); -BOOL ReadConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD); -BOOL ReadConsoleOutputAttribute(HANDLE, LPWORD, DWORD, COORD, LPDWORD); -BOOL ReadConsoleOutputCharacterA(HANDLE, LPSTR, DWORD, COORD, PDWORD); -BOOL ReadConsoleOutputCharacterW(HANDLE, LPWSTR, DWORD, COORD, PDWORD); -BOOL ReadConsoleOutputA(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); -BOOL ReadConsoleOutputW(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); -BOOL ScrollConsoleScreenBufferA(HANDLE, const(SMALL_RECT)*, const(SMALL_RECT)*, COORD, const(CHAR_INFO)*); -BOOL ScrollConsoleScreenBufferW(HANDLE, const(SMALL_RECT)*, const(SMALL_RECT)*, COORD, const(CHAR_INFO)*); -BOOL SetConsoleActiveScreenBuffer(HANDLE); -BOOL SetConsoleCP(UINT); -BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE, BOOL); -BOOL SetConsoleCursorInfo(HANDLE, const(CONSOLE_CURSOR_INFO)*); -BOOL SetConsoleCursorPosition(HANDLE, COORD); - - -static if (_WIN32_WINNT >= 0x500) { -BOOL GetConsoleDisplayMode(LPDWORD); -HWND GetConsoleWindow(); -} - -static if (_WIN32_WINNT >= 0x501) { -BOOL AttachConsole(DWORD); -BOOL SetConsoleDisplayMode(HANDLE, DWORD, PCOORD); -const DWORD ATTACH_PARENT_PROCESS = cast(DWORD)-1; -} - -BOOL SetConsoleMode(HANDLE, DWORD); -BOOL SetConsoleOutputCP(UINT); -BOOL SetConsoleScreenBufferSize(HANDLE, COORD); -BOOL SetConsoleTextAttribute(HANDLE, WORD); -BOOL SetConsoleTitleA(LPCSTR); -BOOL SetConsoleTitleW(LPCWSTR); -BOOL SetConsoleWindowInfo(HANDLE, BOOL, const(SMALL_RECT)*); -BOOL WriteConsoleA(HANDLE, PCVOID, DWORD, PDWORD, PVOID); -BOOL WriteConsoleW(HANDLE, PCVOID, DWORD, PDWORD, PVOID); -BOOL WriteConsoleInputA(HANDLE, const(INPUT_RECORD)*, DWORD, PDWORD); -BOOL WriteConsoleInputW(HANDLE, const(INPUT_RECORD)*, DWORD, PDWORD); -BOOL WriteConsoleOutputA(HANDLE, const(CHAR_INFO)*, COORD, COORD, PSMALL_RECT); -BOOL WriteConsoleOutputW(HANDLE, const(CHAR_INFO)*, COORD, COORD, PSMALL_RECT); -BOOL WriteConsoleOutputAttribute(HANDLE, const(WORD)*, DWORD, COORD, PDWORD); -BOOL WriteConsoleOutputCharacterA(HANDLE, LPCSTR, DWORD, COORD, PDWORD); -BOOL WriteConsoleOutputCharacterW(HANDLE, LPCWSTR, DWORD, COORD, PDWORD); - -version (Unicode) { - alias FillConsoleOutputCharacterW FillConsoleOutputCharacter; - alias GetConsoleTitleW GetConsoleTitle; - alias PeekConsoleInputW PeekConsoleInput; - alias ReadConsoleW ReadConsole; - alias ReadConsoleInputW ReadConsoleInput; - alias ReadConsoleOutputW ReadConsoleOutput; - alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter; - alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer; - alias SetConsoleTitleW SetConsoleTitle; - alias WriteConsoleW WriteConsole; - alias WriteConsoleInputW WriteConsoleInput; - alias WriteConsoleOutputW WriteConsoleOutput; - alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter; -} else { - alias FillConsoleOutputCharacterA FillConsoleOutputCharacter; - alias GetConsoleTitleA GetConsoleTitle; - alias PeekConsoleInputA PeekConsoleInput; - alias ReadConsoleA ReadConsole; - alias ReadConsoleInputA ReadConsoleInput; - alias ReadConsoleOutputA ReadConsoleOutput; - alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter; - alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer; - alias SetConsoleTitleA SetConsoleTitle; - alias WriteConsoleA WriteConsole; - alias WriteConsoleInputA WriteConsoleInput; - alias WriteConsoleOutputA WriteConsoleOutput; - alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wincon.d) + */ +module core.sys.windows.wincon; +pragma(lib, "kernel32"); + +private import core.sys.windows.w32api, core.sys.windows.windef; + +// FIXME: clean up Windows version support + +enum { + FOREGROUND_BLUE = 1, + FOREGROUND_GREEN = 2, + FOREGROUND_RED = 4, + FOREGROUND_INTENSITY = 8, + BACKGROUND_BLUE = 16, + BACKGROUND_GREEN = 32, + BACKGROUND_RED = 64, + BACKGROUND_INTENSITY = 128 +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + CONSOLE_FULLSCREEN_MODE = 1, + CONSOLE_WINDOWED_MODE = 0 + } +} + +enum { + CTRL_C_EVENT = 0, + CTRL_BREAK_EVENT = 1, + CTRL_CLOSE_EVENT = 2, + CTRL_LOGOFF_EVENT = 5, + CTRL_SHUTDOWN_EVENT = 6 +} + +enum { + ENABLE_PROCESSED_INPUT = 1, + ENABLE_LINE_INPUT = 2, + ENABLE_ECHO_INPUT = 4, + ENABLE_WINDOW_INPUT = 8, + ENABLE_MOUSE_INPUT = 16 +} + +enum { + ENABLE_PROCESSED_OUTPUT = 1, + ENABLE_WRAP_AT_EOL_OUTPUT = 2 +} + +enum { + KEY_EVENT = 1, + MOUSE_EVENT = 2, + WINDOW_BUFFER_SIZE_EVENT = 4, + MENU_EVENT = 8, + FOCUS_EVENT = 16 +} +enum { + RIGHT_ALT_PRESSED = 1, + LEFT_ALT_PRESSED = 2, + RIGHT_CTRL_PRESSED = 4, + LEFT_CTRL_PRESSED = 8, + SHIFT_PRESSED = 16, + NUMLOCK_ON = 32, + SCROLLLOCK_ON = 64, + CAPSLOCK_ON = 128, + ENHANCED_KEY = 256 +} +enum { + FROM_LEFT_1ST_BUTTON_PRESSED = 1, + RIGHTMOST_BUTTON_PRESSED = 2, + FROM_LEFT_2ND_BUTTON_PRESSED = 4, + FROM_LEFT_3RD_BUTTON_PRESSED = 8, + FROM_LEFT_4TH_BUTTON_PRESSED = 16 +} + +enum { + MOUSE_MOVED = 1, + DOUBLE_CLICK = 2, + MOUSE_WHEELED = 4 +} + +struct CHAR_INFO { + union _Char { + WCHAR UnicodeChar; + CHAR AsciiChar; + } + _Char Char; + WORD Attributes; +} +alias CHAR_INFO* PCHAR_INFO; + +struct SMALL_RECT { + SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; +} +alias SMALL_RECT* PSMALL_RECT; + +struct CONSOLE_CURSOR_INFO { + DWORD dwSize; + BOOL bVisible; +} +alias CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO; + +struct COORD { + SHORT X; + SHORT Y; +} +alias COORD* PCOORD; + +struct CONSOLE_FONT_INFO { + DWORD nFont; + COORD dwFontSize; +} +alias CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO; + +struct CONSOLE_SCREEN_BUFFER_INFO { + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; +} +alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO; + +alias BOOL function(DWORD) PHANDLER_ROUTINE; + +struct KEY_EVENT_RECORD { + BOOL bKeyDown; + WORD wRepeatCount; + WORD wVirtualKeyCode; + WORD wVirtualScanCode; + union _uChar { + WCHAR UnicodeChar; + CHAR AsciiChar; + } + _uChar uChar; + DWORD dwControlKeyState; +} + +struct MOUSE_EVENT_RECORD { + COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; +} + +struct WINDOW_BUFFER_SIZE_RECORD { + COORD dwSize; +} + +struct MENU_EVENT_RECORD { + UINT dwCommandId; +} +alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD; + +struct FOCUS_EVENT_RECORD { + BOOL bSetFocus; +} + +struct INPUT_RECORD { + WORD EventType; + union _Event { + KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; + } + _Event Event; +} +alias INPUT_RECORD* PINPUT_RECORD; + +extern (Windows): + +BOOL AllocConsole(); +HANDLE CreateConsoleScreenBuffer(DWORD, DWORD, SECURITY_ATTRIBUTES*, DWORD, LPVOID); +BOOL FillConsoleOutputAttribute(HANDLE, WORD, DWORD, COORD, PDWORD); +BOOL FillConsoleOutputCharacterA(HANDLE, CHAR, DWORD, COORD, PDWORD); +BOOL FillConsoleOutputCharacterW(HANDLE, WCHAR, DWORD, COORD, PDWORD); +BOOL FlushConsoleInputBuffer(HANDLE); +BOOL FreeConsole(); +BOOL GenerateConsoleCtrlEvent(DWORD, DWORD); +UINT GetConsoleCP(); +BOOL GetConsoleCursorInfo(HANDLE, PCONSOLE_CURSOR_INFO); +BOOL GetConsoleMode(HANDLE,PDWORD); +UINT GetConsoleOutputCP(); +BOOL GetConsoleScreenBufferInfo(HANDLE, PCONSOLE_SCREEN_BUFFER_INFO); +DWORD GetConsoleTitleA(LPSTR, DWORD); +DWORD GetConsoleTitleW(LPWSTR, DWORD); +COORD GetLargestConsoleWindowSize(HANDLE); +BOOL GetNumberOfConsoleInputEvents(HANDLE, PDWORD); +BOOL GetNumberOfConsoleMouseButtons(PDWORD); +BOOL PeekConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL PeekConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL ReadConsoleA(HANDLE, PVOID, DWORD, PDWORD, PVOID); +BOOL ReadConsoleW(HANDLE, PVOID, DWORD, PDWORD, PVOID); +BOOL ReadConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL ReadConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL ReadConsoleOutputAttribute(HANDLE, LPWORD, DWORD, COORD, LPDWORD); +BOOL ReadConsoleOutputCharacterA(HANDLE, LPSTR, DWORD, COORD, PDWORD); +BOOL ReadConsoleOutputCharacterW(HANDLE, LPWSTR, DWORD, COORD, PDWORD); +BOOL ReadConsoleOutputA(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); +BOOL ReadConsoleOutputW(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); +BOOL ScrollConsoleScreenBufferA(HANDLE, const(SMALL_RECT)*, const(SMALL_RECT)*, COORD, const(CHAR_INFO)*); +BOOL ScrollConsoleScreenBufferW(HANDLE, const(SMALL_RECT)*, const(SMALL_RECT)*, COORD, const(CHAR_INFO)*); +BOOL SetConsoleActiveScreenBuffer(HANDLE); +BOOL SetConsoleCP(UINT); +BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE, BOOL); +BOOL SetConsoleCursorInfo(HANDLE, const(CONSOLE_CURSOR_INFO)*); +BOOL SetConsoleCursorPosition(HANDLE, COORD); + + +static if (_WIN32_WINNT >= 0x500) { +BOOL GetConsoleDisplayMode(LPDWORD); +HWND GetConsoleWindow(); +} + +static if (_WIN32_WINNT >= 0x501) { +BOOL AttachConsole(DWORD); +BOOL SetConsoleDisplayMode(HANDLE, DWORD, PCOORD); +const DWORD ATTACH_PARENT_PROCESS = cast(DWORD)-1; +} + +BOOL SetConsoleMode(HANDLE, DWORD); +BOOL SetConsoleOutputCP(UINT); +BOOL SetConsoleScreenBufferSize(HANDLE, COORD); +BOOL SetConsoleTextAttribute(HANDLE, WORD); +BOOL SetConsoleTitleA(LPCSTR); +BOOL SetConsoleTitleW(LPCWSTR); +BOOL SetConsoleWindowInfo(HANDLE, BOOL, const(SMALL_RECT)*); +BOOL WriteConsoleA(HANDLE, PCVOID, DWORD, PDWORD, PVOID); +BOOL WriteConsoleW(HANDLE, PCVOID, DWORD, PDWORD, PVOID); +BOOL WriteConsoleInputA(HANDLE, const(INPUT_RECORD)*, DWORD, PDWORD); +BOOL WriteConsoleInputW(HANDLE, const(INPUT_RECORD)*, DWORD, PDWORD); +BOOL WriteConsoleOutputA(HANDLE, const(CHAR_INFO)*, COORD, COORD, PSMALL_RECT); +BOOL WriteConsoleOutputW(HANDLE, const(CHAR_INFO)*, COORD, COORD, PSMALL_RECT); +BOOL WriteConsoleOutputAttribute(HANDLE, const(WORD)*, DWORD, COORD, PDWORD); +BOOL WriteConsoleOutputCharacterA(HANDLE, LPCSTR, DWORD, COORD, PDWORD); +BOOL WriteConsoleOutputCharacterW(HANDLE, LPCWSTR, DWORD, COORD, PDWORD); + +version (Unicode) { + alias FillConsoleOutputCharacterW FillConsoleOutputCharacter; + alias GetConsoleTitleW GetConsoleTitle; + alias PeekConsoleInputW PeekConsoleInput; + alias ReadConsoleW ReadConsole; + alias ReadConsoleInputW ReadConsoleInput; + alias ReadConsoleOutputW ReadConsoleOutput; + alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter; + alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer; + alias SetConsoleTitleW SetConsoleTitle; + alias WriteConsoleW WriteConsole; + alias WriteConsoleInputW WriteConsoleInput; + alias WriteConsoleOutputW WriteConsoleOutput; + alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter; +} else { + alias FillConsoleOutputCharacterA FillConsoleOutputCharacter; + alias GetConsoleTitleA GetConsoleTitle; + alias PeekConsoleInputA PeekConsoleInput; + alias ReadConsoleA ReadConsole; + alias ReadConsoleInputA ReadConsoleInput; + alias ReadConsoleOutputA ReadConsoleOutput; + alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter; + alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer; + alias SetConsoleTitleA SetConsoleTitle; + alias WriteConsoleA WriteConsole; + alias WriteConsoleInputA WriteConsoleInput; + alias WriteConsoleOutputA WriteConsoleOutput; + alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter; +} diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index ecc930448c..27ecfbb220 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -1,898 +1,898 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_wincrypt.d) - */ -module core.sys.windows.wincrypt; - -private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; - -/* FIXME: - * Types of some constants - * Types of macros - * Inits of various "size" and "version" members - * Why are some #ifdefs commented out? - */ - -const TCHAR[] - MS_DEF_PROV = "Microsoft Base Cryptographic Provider v1.0", - MS_ENHANCED_PROV = "Microsoft Enhanced Cryptographic Provider v1.0", - MS_STRONG_PROV = "Microsoft Strong Cryptographic Provider", - MS_DEF_RSA_SIG_PROV = "Microsoft RSA Signature Cryptographic Provider", - MS_DEF_RSA_SCHANNEL_PROV = "Microsoft RSA SChannel Cryptographic Provider", - MS_DEF_DSS_PROV = "Microsoft Base DSS Cryptographic Provider", - MS_DEF_DSS_DH_PROV - = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider", - MS_ENH_DSS_DH_PROV - = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider", - MS_DEF_DH_SCHANNEL_PROV = "Microsoft DH SChannel Cryptographic Provider", - MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider"; - -static if (_WIN32_WINNT > 0x501) { - const TCHAR[] MS_ENH_RSA_AES_PROV - = "Microsoft Enhanced RSA and AES Cryptographic Provider"; -} else static if (_WIN32_WINNT == 0x501) { - const TCHAR[] MS_ENH_RSA_AES_PROV - = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; -} - -ALG_ID GET_ALG_CLASS(ALG_ID x) { return x & 0xE000; } -ALG_ID GET_ALG_TYPE (ALG_ID x) { return x & 0x1E00; } -ALG_ID GET_ALG_SID (ALG_ID x) { return x & 0x01FF; } - -enum : ALG_ID { - ALG_CLASS_ANY = 0, - ALG_CLASS_SIGNATURE = 0x2000, - ALG_CLASS_MSG_ENCRYPT = 0x4000, - ALG_CLASS_DATA_ENCRYPT = 0x6000, - ALG_CLASS_HASH = 0x8000, - ALG_CLASS_KEY_EXCHANGE = 0xA000, - ALG_CLASS_ALL = 0xE000 -} - -enum : ALG_ID { - ALG_TYPE_ANY = 0, - ALG_TYPE_DSS = 0x0200, - ALG_TYPE_RSA = 0x0400, - ALG_TYPE_BLOCK = 0x0600, - ALG_TYPE_STREAM = 0x0800, - ALG_TYPE_DH = 0x0A00, - ALG_TYPE_SECURECHANNEL = 0x0C00 -} - -enum : ALG_ID { - ALG_SID_ANY = 0, - ALG_SID_RSA_ANY = 0, - ALG_SID_RSA_PKCS, - ALG_SID_RSA_MSATWORK, - ALG_SID_RSA_ENTRUST, - ALG_SID_RSA_PGP, // = 4 - ALG_SID_DSS_ANY = 0, - ALG_SID_DSS_PKCS, - ALG_SID_DSS_DMS, // = 2 - ALG_SID_DES = 1, - ALG_SID_3DES = 3, - ALG_SID_DESX, - ALG_SID_IDEA, - ALG_SID_CAST, - ALG_SID_SAFERSK64, - ALG_SID_SAFERSK128, - ALG_SID_3DES_112, - ALG_SID_SKIPJACK, - ALG_SID_TEK, - ALG_SID_CYLINK_MEK, - ALG_SID_RC5, // = 13 - ALG_SID_RC2 = 2, - ALG_SID_RC4 = 1, - ALG_SID_SEAL = 2, - ALG_SID_MD2 = 1, - ALG_SID_MD4, - ALG_SID_MD5, - ALG_SID_SHA, - ALG_SID_MAC, - ALG_SID_RIPEMD, - ALG_SID_RIPEMD160, - ALG_SID_SSL3SHAMD5, - ALG_SID_HMAC, - ALG_SID_TLS1PRF, // = 10 - ALG_SID_AES_128 = 14, - ALG_SID_AES_192, - ALG_SID_AES_256, - ALG_SID_AES, // = 17 - ALG_SID_EXAMPLE = 80 -} - -enum : ALG_ID { - CALG_MD2 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2, - CALG_MD4 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4, - CALG_MD5 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5, - CALG_SHA = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA, - CALG_SHA1 = CALG_SHA, - CALG_MAC = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC, - CALG_3DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 3, - CALG_CYLINK_MEK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 12, - CALG_SKIPJACK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 10, - CALG_KEA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS | 4, - CALG_RSA_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, - CALG_DSS_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY, - CALG_RSA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, - CALG_DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES, - CALG_RC2 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2, - CALG_RC4 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4, - CALG_SEAL = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL, - CALG_DH_EPHEM = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS - | ALG_SID_DSS_DMS, - CALG_DESX = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX, -// is undefined ALG_CLASS_DHASH in MinGW - presuming typo - CALG_TLS1PRF = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF, - CALG_AES_128 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128, - CALG_AES_192 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192, - CALG_AES_256 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256, - CALG_AES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES, -} - -enum { - CRYPT_VERIFYCONTEXT = 0xF0000000, -} - -enum { - CRYPT_NEWKEYSET = 8, - CRYPT_DELETEKEYSET = 16, - CRYPT_MACHINE_KEYSET = 32, - CRYPT_SILENT = 64, -} - -enum { - CRYPT_EXPORTABLE = 1, - CRYPT_USER_PROTECTED = 2, - CRYPT_CREATE_SALT = 4, - CRYPT_UPDATE_KEY = 8, -} - -enum { - SIMPLEBLOB = 1, - PUBLICKEYBLOB = 6, - PRIVATEKEYBLOB = 7, - PLAINTEXTKEYBLOB = 8, - OPAQUEKEYBLOB = 9, - PUBLICKEYBLOBEX = 10, - SYMMETRICWRAPKEYBLOB = 11, -} - -enum { - AT_KEYEXCHANGE = 1, - AT_SIGNATURE = 2, -} - -enum { - CRYPT_USERDATA = 1, -} - -enum { - PKCS5_PADDING = 1, -} - -enum { - CRYPT_MODE_CBC = 1, - CRYPT_MODE_ECB = 2, - CRYPT_MODE_OFB = 3, - CRYPT_MODE_CFB = 4, - CRYPT_MODE_CTS = 5, - CRYPT_MODE_CBCI = 6, - CRYPT_MODE_CFBP = 7, - CRYPT_MODE_OFBP = 8, - CRYPT_MODE_CBCOFM = 9, - CRYPT_MODE_CBCOFMI = 10, -} - -enum { - CRYPT_ENCRYPT = 1, - CRYPT_DECRYPT = 2, - CRYPT_EXPORT = 4, - CRYPT_READ = 8, - CRYPT_WRITE = 16, - CRYPT_MAC = 32, -} - -enum { - HP_ALGID = 1, - HP_HASHVAL = 2, - HP_HASHSIZE = 4, - HP_HMAC_INFO = 5, -} - -enum { - CRYPT_FAILED = FALSE, - CRYPT_SUCCEED = TRUE, -} - -bool RCRYPT_SUCCEEDED(BOOL r) { return r==CRYPT_SUCCEED; } -bool RCRYPT_FAILED(BOOL r) { return r==CRYPT_FAILED; } - -enum { - PP_ENUMALGS = 1, - PP_ENUMCONTAINERS = 2, - PP_IMPTYPE = 3, - PP_NAME = 4, - PP_VERSION = 5, - PP_CONTAINER = 6, - PP_CHANGE_PASSWORD = 7, - PP_KEYSET_SEC_DESCR = 8, - PP_CERTCHAIN = 9, - PP_KEY_TYPE_SUBTYPE = 10, - PP_PROVTYPE = 16, - PP_KEYSTORAGE = 17, - PP_APPLI_CERT = 18, - PP_SYM_KEYSIZE = 19, - PP_SESSION_KEYSIZE = 20, - PP_UI_PROMPT = 21, - PP_ENUMALGS_EX = 22, - PP_ENUMMANDROOTS = 25, - PP_ENUMELECTROOTS = 26, - PP_KEYSET_TYPE = 27, - PP_ADMIN_PIN = 31, - PP_KEYEXCHANGE_PIN = 32, - PP_SIGNATURE_PIN = 33, - PP_SIG_KEYSIZE_INC = 34, - PP_KEYX_KEYSIZE_INC = 35, - PP_UNIQUE_CONTAINER = 36, - PP_SGC_INFO = 37, - PP_USE_HARDWARE_RNG = 38, - PP_KEYSPEC = 39, - PP_ENUMEX_SIGNING_PROT = 40, -} - -enum { - CRYPT_FIRST = 1, - CRYPT_NEXT = 2, -} - -enum { - CRYPT_IMPL_HARDWARE = 1, - CRYPT_IMPL_SOFTWARE = 2, - CRYPT_IMPL_MIXED = 3, - CRYPT_IMPL_UNKNOWN = 4, -} - -enum { - PROV_RSA_FULL = 1, - PROV_RSA_SIG = 2, - PROV_DSS = 3, - PROV_FORTEZZA = 4, - PROV_MS_MAIL = 5, - PROV_SSL = 6, - PROV_STT_MER = 7, - PROV_STT_ACQ = 8, - PROV_STT_BRND = 9, - PROV_STT_ROOT = 10, - PROV_STT_ISS = 11, - PROV_RSA_SCHANNEL = 12, - PROV_DSS_DH = 13, - PROV_EC_ECDSA_SIG = 14, - PROV_EC_ECNRA_SIG = 15, - PROV_EC_ECDSA_FULL = 16, - PROV_EC_ECNRA_FULL = 17, - PROV_DH_SCHANNEL = 18, - PROV_SPYRUS_LYNKS = 20, - PROV_RNG = 21, - PROV_INTEL_SEC = 22, - PROV_RSA_AES = 24, - MAXUIDLEN = 64, -} - -enum { - CUR_BLOB_VERSION = 2, -} - -enum { - X509_ASN_ENCODING = 1, - PKCS_7_ASN_ENCODING = 65536, -} - -enum { - CERT_V1 = 0, - CERT_V2 = 1, - CERT_V3 = 2, -} - -enum { - CERT_E_CHAINING = (-2146762486), - CERT_E_CN_NO_MATCH = (-2146762481), - CERT_E_EXPIRED = (-2146762495), - CERT_E_PURPOSE = (-2146762490), - CERT_E_REVOCATION_FAILURE = (-2146762482), - CERT_E_REVOKED = (-2146762484), - CERT_E_ROLE = (-2146762493), - CERT_E_UNTRUSTEDROOT = (-2146762487), - CERT_E_UNTRUSTEDTESTROOT = (-2146762483), - CERT_E_VALIDITYPERIODNESTING = (-2146762494), - CERT_E_WRONG_USAGE = (-2146762480), - CERT_E_PATHLENCONST = (-2146762492), - CERT_E_CRITICAL = (-2146762491), - CERT_E_ISSUERCHAINING = (-2146762489), - CERT_E_MALFORMED = (-2146762488), - CRYPT_E_REVOCATION_OFFLINE = (-2146885613), - CRYPT_E_REVOKED = (-2146885616), - TRUST_E_BASIC_CONSTRAINTS = (-2146869223), - TRUST_E_CERT_SIGNATURE = (-2146869244), - TRUST_E_FAIL = (-2146762485), -} - -enum { - CERT_TRUST_NO_ERROR = 0, - CERT_TRUST_IS_NOT_TIME_VALID = 1, - CERT_TRUST_IS_NOT_TIME_NESTED = 2, - CERT_TRUST_IS_REVOKED = 4, - CERT_TRUST_IS_NOT_SIGNATURE_VALID = 8, - CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 16, - CERT_TRUST_IS_UNTRUSTED_ROOT = 32, - CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 64, - CERT_TRUST_IS_CYCLIC = 128, - CERT_TRUST_IS_PARTIAL_CHAIN = 65536, - CERT_TRUST_CTL_IS_NOT_TIME_VALID = 131072, - CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144, - CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288, -} - -enum { - CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 1, - CERT_TRUST_HAS_KEY_MATCH_ISSUER = 2, - CERT_TRUST_HAS_NAME_MATCH_ISSUER = 4, - CERT_TRUST_IS_SELF_SIGNED = 8, - CERT_TRUST_IS_COMPLEX_CHAIN = 65536, -} - -enum { - CERT_CHAIN_POLICY_BASE = cast(LPCSTR) 1, - CERT_CHAIN_POLICY_AUTHENTICODE = cast(LPCSTR) 2, - CERT_CHAIN_POLICY_AUTHENTICODE_TS = cast(LPCSTR) 3, - CERT_CHAIN_POLICY_SSL = cast(LPCSTR) 4, - CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = cast(LPCSTR) 5, - CERT_CHAIN_POLICY_NT_AUTH = cast(LPCSTR) 6, -} - -enum { - USAGE_MATCH_TYPE_AND = 0, - USAGE_MATCH_TYPE_OR = 1, -} - -enum { - CERT_SIMPLE_NAME_STR = 1, - CERT_OID_NAME_STR = 2, - CERT_X500_NAME_STR = 3, -} -enum { - CERT_NAME_STR_SEMICOLON_FLAG = 1073741824, - CERT_NAME_STR_CRLF_FLAG = 134217728, - CERT_NAME_STR_NO_PLUS_FLAG = 536870912, - CERT_NAME_STR_NO_QUOTING_FLAG = 268435456, - CERT_NAME_STR_REVERSE_FLAG = 33554432, - CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG = 131072, -} - -enum { - CERT_FIND_ANY = 0, - CERT_FIND_CERT_ID = 1048576, - CERT_FIND_CTL_USAGE = 655360, - CERT_FIND_ENHKEY_USAGE = 655360, - CERT_FIND_EXISTING = 851968, - CERT_FIND_HASH = 65536, - CERT_FIND_ISSUER_ATTR = 196612, - CERT_FIND_ISSUER_NAME = 131076, - CERT_FIND_ISSUER_OF = 786432, - CERT_FIND_KEY_IDENTIFIER = 983040, - CERT_FIND_KEY_SPEC = 589824, - CERT_FIND_MD5_HASH = 262144, - CERT_FIND_PROPERTY = 327680, - CERT_FIND_PUBLIC_KEY = 393216, - CERT_FIND_SHA1_HASH = 65536, - CERT_FIND_SIGNATURE_HASH = 917504, - CERT_FIND_SUBJECT_ATTR = 196615, - CERT_FIND_SUBJECT_CERT = 720896, - CERT_FIND_SUBJECT_NAME = 131079, - CERT_FIND_SUBJECT_STR_A = 458759, - CERT_FIND_SUBJECT_STR_W = 524295, - CERT_FIND_ISSUER_STR_A = 458756, - CERT_FIND_ISSUER_STR_W = 524292, -} - -enum { - CERT_FIND_OR_ENHKEY_USAGE_FLAG = 16, - CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = 1, - CERT_FIND_NO_ENHKEY_USAGE_FLAG = 8, - CERT_FIND_VALID_ENHKEY_USAGE_FLAG = 32, - CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = 2, -} - -enum { - CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG = 2, - CERT_UNICODE_IS_RDN_ATTRS_FLAG = 1, - CERT_CHAIN_FIND_BY_ISSUER = 1, -} - -enum { - CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG = 1, - CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG = 2, - CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 4, - CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG = 8, - CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG = 16384, - CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG = 32768, -} - -enum { - CERT_STORE_PROV_SYSTEM = 10, - CERT_SYSTEM_STORE_LOCAL_MACHINE = 131072, -} - -enum { - szOID_PKIX_KP_SERVER_AUTH = "4235600", - szOID_SERVER_GATED_CRYPTO = "4235658", - szOID_SGC_NETSCAPE = "2.16.840.1.113730.4.1", - szOID_PKIX_KP_CLIENT_AUTH = "1.3.6.1.5.5.7.3.2", -} - -enum { - CRYPT_NOHASHOID = 0x00000001, - CRYPT_NO_SALT = 0x10, - CRYPT_PREGEN = 0x40, -} - -enum { - CRYPT_RECIPIENT = 0x10, - CRYPT_INITIATOR = 0x40, - CRYPT_ONLINE = 0x80, - CRYPT_SF = 0x100, - CRYPT_CREATE_IV = 0x200, - CRYPT_KEK = 0x400, - CRYPT_DATA_KEY = 0x800, - CRYPT_VOLATILE = 0x1000, - CRYPT_SGCKEY = 0x2000, -} - -enum { - KP_IV = 0x00000001, - KP_SALT = 0x00000002, - KP_PADDING = 0x00000003, - KP_MODE = 0x00000004, - KP_MODE_BITS = 0x00000005, - KP_PERMISSIONS = 0x00000006, - KP_ALGID = 0x00000007, - KP_BLOCKLEN = 0x00000008, - KP_KEYLEN = 0x00000009, - KP_SALT_EX = 0x0000000a, - KP_P = 0x0000000b, - KP_G = 0x0000000c, - KP_Q = 0x0000000d, - KP_X = 0x0000000e, - KP_Y = 0x0000000f, - KP_RA = 0x00000010, - KP_RB = 0x00000011, - KP_INFO = 0x00000012, - KP_EFFECTIVE_KEYLEN = 0x00000013, - KP_SCHANNEL_ALG = 0x00000014, - KP_PUB_PARAMS = 0x00000027, -} - -enum { - CRYPT_FLAG_PCT1 = 0x0001, - CRYPT_FLAG_SSL2 = 0x0002, - CRYPT_FLAG_SSL3 = 0x0004, - CRYPT_FLAG_TLS1 = 0x0008, - CRYPT_FLAG_IPSEC = 0x0010, - CRYPT_FLAG_SIGNING = 0x0020, -} - -enum { - SCHANNEL_MAC_KEY = 0x00000000, - SCHANNEL_ENC_KEY = 0x00000001, -} - -enum { - INTERNATIONAL_USAGE = 0x00000001, -} - - -alias UINT ALG_ID; -alias ULONG HCRYPTPROV, HCRYPTKEY, HCRYPTHASH; -alias PVOID HCERTSTORE, HCRYPTMSG, HCERTCHAINENGINE; - -struct VTableProvStruc { - FARPROC FuncVerifyImage; -} -alias VTableProvStruc* PVTableProvStruc; - -struct _CRYPTOAPI_BLOB { - DWORD cbData; - BYTE* pbData; -} -alias _CRYPTOAPI_BLOB CRYPT_INTEGER_BLOB, CRYPT_UINT_BLOB, - CRYPT_OBJID_BLOB, CERT_NAME_BLOB, CERT_RDN_VALUE_BLOB, CERT_BLOB, - CRL_BLOB, DATA_BLOB, CRYPT_DATA_BLOB, CRYPT_HASH_BLOB, - CRYPT_DIGEST_BLOB, CRYPT_DER_BLOB, CRYPT_ATTR_BLOB; -alias _CRYPTOAPI_BLOB* PCRYPT_INTEGER_BLOB, PCRYPT_UINT_BLOB, - PCRYPT_OBJID_BLOB, PCERT_NAME_BLOB, PCERT_RDN_VALUE_BLOB, PCERT_BLOB, - PCRL_BLOB, PDATA_BLOB, PCRYPT_DATA_BLOB, PCRYPT_HASH_BLOB, - PCRYPT_DIGEST_BLOB, PCRYPT_DER_BLOB, PCRYPT_ATTR_BLOB; - -// not described in SDK; has the same layout as HTTPSPolicyCallbackData -struct SSL_EXTRA_CERT_CHAIN_POLICY_PARA { - DWORD cbStruct; - DWORD dwAuthType; - DWORD fdwChecks; - LPWSTR pwszServerName; -} -alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA HTTPSPolicyCallbackData; -alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA* PSSL_EXTRA_CERT_CHAIN_POLICY_PARA, - PHTTPSPolicyCallbackData; - -/* #if (_WIN32_WINNT>=0x500) */ -struct CERT_CHAIN_POLICY_PARA { - DWORD cbSize = CERT_CHAIN_POLICY_PARA.sizeof; - DWORD dwFlags; - void* pvExtraPolicyPara; -} -alias CERT_CHAIN_POLICY_PARA* PCERT_CHAIN_POLICY_PARA; - -struct CERT_CHAIN_POLICY_STATUS { - DWORD cbSize = CERT_CHAIN_POLICY_STATUS.sizeof; - DWORD dwError; - LONG lChainIndex; - LONG lElementIndex; - void* pvExtraPolicyStatus; -} -alias CERT_CHAIN_POLICY_STATUS* PCERT_CHAIN_POLICY_STATUS; -/* #endif */ - -struct CRYPT_ALGORITHM_IDENTIFIER { - LPSTR pszObjId; - CRYPT_OBJID_BLOB Parameters; -} -alias CRYPT_ALGORITHM_IDENTIFIER* PCRYPT_ALGORITHM_IDENTIFIER; - -struct CRYPT_BIT_BLOB { - DWORD cbData; - BYTE* pbData; - DWORD cUnusedBits; -} -alias CRYPT_BIT_BLOB* PCRYPT_BIT_BLOB; - -struct CERT_PUBLIC_KEY_INFO { - CRYPT_ALGORITHM_IDENTIFIER Algorithm; - CRYPT_BIT_BLOB PublicKey; -} -alias CERT_PUBLIC_KEY_INFO* PCERT_PUBLIC_KEY_INFO; - -struct CERT_EXTENSION { - LPSTR pszObjId; - BOOL fCritical; - CRYPT_OBJID_BLOB Value; -} -alias CERT_EXTENSION* PCERT_EXTENSION; - -struct CERT_INFO { - DWORD dwVersion; - CRYPT_INTEGER_BLOB SerialNumber; - CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; - CERT_NAME_BLOB Issuer; - FILETIME NotBefore; - FILETIME NotAfter; - CERT_NAME_BLOB Subject; - CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; - CRYPT_BIT_BLOB IssuerUniqueId; - CRYPT_BIT_BLOB SubjectUniqueId; - DWORD cExtension; - PCERT_EXTENSION rgExtension; -} -alias CERT_INFO* PCERT_INFO; - -struct CERT_CONTEXT { - DWORD dwCertEncodingType; - BYTE* pbCertEncoded; - DWORD cbCertEncoded; - PCERT_INFO pCertInfo; - HCERTSTORE hCertStore; -} -alias CERT_CONTEXT* PCERT_CONTEXT; -alias const(CERT_CONTEXT)* PCCERT_CONTEXT; - -struct CTL_USAGE { - DWORD cUsageIdentifier; - LPSTR* rgpszUsageIdentifier; -} -alias CTL_USAGE CERT_ENHKEY_USAGE; -alias CTL_USAGE* PCTRL_USAGE, PCERT_ENHKEY_USAGE; - -struct CERT_USAGE_MATCH { - DWORD dwType; - CERT_ENHKEY_USAGE Usage; -} -alias CERT_USAGE_MATCH* PCERT_USAGE_MATCH; -/* #if (_WIN32_WINNT>=0x500) */ - -struct CERT_CHAIN_PARA { - DWORD cbSize = CERT_CHAIN_PARA.sizeof; - CERT_USAGE_MATCH RequestedUsage; -//#if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS - CERT_USAGE_MATCH RequestedIssuancePolicy; - DWORD dwUrlRetrievalTimeout; - BOOL fCheckRevocationFreshnessTime; - DWORD dwRevocationFreshnessTime; -//#endif -} -alias CERT_CHAIN_PARA* PCERT_CHAIN_PARA; - -extern (Windows) alias BOOL function(PCCERT_CONTEXT, void*) - PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK; - -struct CERT_CHAIN_FIND_BY_ISSUER_PARA { - DWORD cbSize = CERT_CHAIN_FIND_BY_ISSUER_PARA.sizeof; - LPCSTR pszUsageIdentifier; - DWORD dwKeySpec; - DWORD dwAcquirePrivateKeyFlags; - DWORD cIssuer; - CERT_NAME_BLOB* rgIssuer; - PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback; - void* pvFindArg; - DWORD* pdwIssuerChainIndex; - DWORD* pdwIssuerElementIndex; -} -alias CERT_CHAIN_FIND_BY_ISSUER_PARA* PCERT_CHAIN_FIND_BY_ISSUER_PARA; -/* #endif */ - -struct CERT_TRUST_STATUS { - DWORD dwErrorStatus; - DWORD dwInfoStatus; -} -alias CERT_TRUST_STATUS* PCERT_TRUST_STATUS; - -struct CRL_ENTRY { - CRYPT_INTEGER_BLOB SerialNumber; - FILETIME RevocationDate; - DWORD cExtension; - PCERT_EXTENSION rgExtension; -} -alias CRL_ENTRY* PCRL_ENTRY; - -struct CRL_INFO { - DWORD dwVersion; - CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; - CERT_NAME_BLOB Issuer; - FILETIME ThisUpdate; - FILETIME NextUpdate; - DWORD cCRLEntry; - PCRL_ENTRY rgCRLEntry; - DWORD cExtension; - PCERT_EXTENSION rgExtension; -} -alias CRL_INFO* PCRL_INFO; - -struct CRL_CONTEXT { - DWORD dwCertEncodingType; - BYTE* pbCrlEncoded; - DWORD cbCrlEncoded; - PCRL_INFO pCrlInfo; - HCERTSTORE hCertStore; -} -alias CRL_CONTEXT* PCRL_CONTEXT; -alias const(CRL_CONTEXT)* PCCRL_CONTEXT; - -struct CERT_REVOCATION_CRL_INFO { - DWORD cbSize = CERT_REVOCATION_CRL_INFO.sizeof; - PCCRL_CONTEXT pBaseCRLContext; - PCCRL_CONTEXT pDeltaCRLContext; - PCRL_ENTRY pCrlEntry; - BOOL fDeltaCrlEntry; -} -alias CERT_REVOCATION_CRL_INFO* PCERT_REVOCATION_CRL_INFO; - -struct CERT_REVOCATION_INFO { - DWORD cbSize = CERT_REVOCATION_INFO.sizeof; - DWORD dwRevocationResult; - LPCSTR pszRevocationOid; - LPVOID pvOidSpecificInfo; - BOOL fHasFreshnessTime; - DWORD dwFreshnessTime; - PCERT_REVOCATION_CRL_INFO pCrlInfo; -} -alias CERT_REVOCATION_INFO* PCERT_REVOCATION_INFO; - -/* #if (_WIN32_WINNT>=0x500) */ -struct CERT_CHAIN_ELEMENT { - DWORD cbSize = CERT_CHAIN_ELEMENT.sizeof; - PCCERT_CONTEXT pCertContext; - CERT_TRUST_STATUS TrustStatus; - PCERT_REVOCATION_INFO pRevocationInfo; - PCERT_ENHKEY_USAGE pIssuanceUsage; - PCERT_ENHKEY_USAGE pApplicationUsage; -} -alias CERT_CHAIN_ELEMENT* PCERT_CHAIN_ELEMENT; -/* #endif */ - -struct CRYPT_ATTRIBUTE { - LPSTR pszObjId; - DWORD cValue; - PCRYPT_ATTR_BLOB rgValue; -} -alias CRYPT_ATTRIBUTE* PCRYPT_ATTRIBUTE; - -struct CTL_ENTRY { - CRYPT_DATA_BLOB SubjectIdentifier; - DWORD cAttribute; - PCRYPT_ATTRIBUTE rgAttribute; -} -alias CTL_ENTRY* PCTL_ENTRY; - -struct CTL_INFO { - DWORD dwVersion; - CTL_USAGE SubjectUsage; - CRYPT_DATA_BLOB ListIdentifier; - CRYPT_INTEGER_BLOB SequenceNumber; - FILETIME ThisUpdate; - FILETIME NextUpdate; - CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; - DWORD cCTLEntry; - PCTL_ENTRY rgCTLEntry; - DWORD cExtension; - PCERT_EXTENSION rgExtension; -} -alias CTL_INFO* PCTL_INFO; - -struct CTL_CONTEXT { - DWORD dwMsgAndCertEncodingType; - BYTE* pbCtlEncoded; - DWORD cbCtlEncoded; - PCTL_INFO pCtlInfo; - HCERTSTORE hCertStore; - HCRYPTMSG hCryptMsg; - BYTE* pbCtlContent; - DWORD cbCtlContent; -} -alias CTL_CONTEXT* PCTL_CONTEXT; -alias const(CTL_CONTEXT)* PCCTL_CONTEXT; - -struct CERT_TRUST_LIST_INFO { - DWORD cbSize = CERT_TRUST_LIST_INFO.sizeof; - PCTL_ENTRY pCtlEntry; - PCCTL_CONTEXT pCtlContext; -} -alias CERT_TRUST_LIST_INFO* PCERT_TRUST_LIST_INFO; - -struct CERT_SIMPLE_CHAIN { - DWORD cbSize = CERT_SIMPLE_CHAIN.sizeof; - CERT_TRUST_STATUS TrustStatus; - DWORD cElement; - PCERT_CHAIN_ELEMENT* rgpElement; - PCERT_TRUST_LIST_INFO pTrustListInfo; - BOOL fHasRevocationFreshnessTime; - DWORD dwRevocationFreshnessTime; -} -alias CERT_SIMPLE_CHAIN* PCERT_SIMPLE_CHAIN; - -/* #if (_WIN32_WINNT>=0x500) */ -alias const(CERT_CHAIN_CONTEXT)* PCCERT_CHAIN_CONTEXT; -struct CERT_CHAIN_CONTEXT { - DWORD cbSize = CERT_CHAIN_CONTEXT.sizeof; - CERT_TRUST_STATUS TrustStatus; - DWORD cChain; - PCERT_SIMPLE_CHAIN* rgpChain; - DWORD cLowerQualityChainContext; - PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; - BOOL fHasRevocationFreshnessTime; - DWORD dwRevocationFreshnessTime; -} -alias CERT_CHAIN_CONTEXT* PCERT_CHAIN_CONTEXT; -/* #endif */ - -struct PROV_ENUMALGS { - ALG_ID aiAlgid; - DWORD dwBitLen; - DWORD dwNameLen; - CHAR[20] szName; -} - -struct PUBLICKEYSTRUC { - BYTE bType; - BYTE bVersion; - WORD reserved; - ALG_ID aiKeyAlg; -} -alias PUBLICKEYSTRUC BLOBHEADER; - -struct RSAPUBKEY { - DWORD magic; - DWORD bitlen; - DWORD pubexp; -} - -struct HMAC_INFO { - ALG_ID HashAlgid; - BYTE* pbInnerString; - DWORD cbInnerString; - BYTE* pbOuterString; - DWORD cbOuterString; -} -alias HMAC_INFO* PHMAC_INFO; - -extern (Windows) { - BOOL CertCloseStore(HCERTSTORE, DWORD); - BOOL CertGetCertificateChain(HCERTCHAINENGINE, PCCERT_CONTEXT, LPFILETIME, - HCERTSTORE, PCERT_CHAIN_PARA, DWORD, LPVOID, PCCERT_CHAIN_CONTEXT*); - BOOL CertVerifyCertificateChainPolicy(LPCSTR, PCCERT_CHAIN_CONTEXT, - PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS); - void CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT); - DWORD CertNameToStrA(DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD); - DWORD CertNameToStrW(DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD); - HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV, LPCSTR); - HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR); - HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, const(void)*); - PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWORD, - const(void)*, PCCERT_CONTEXT); - BOOL CertFreeCertificateContext(PCCERT_CONTEXT); - PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE, - PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*); - PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWORD, - const(void)*, PCCERT_CHAIN_CONTEXT); - - BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); - BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); - BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD); - BOOL CryptReleaseContext(HCRYPTPROV, DWORD); - BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*); - BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*); - BOOL CryptDestroyKey(HCRYPTKEY); - static if (_WIN32_WINNT >= 0x500) { - BOOL CryptDuplicateHash(HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*); - BOOL CryptDuplicateKey(HCRYPTKEY, DWORD*, DWORD, HCRYPTKEY*); - } - BOOL CryptSetKeyParam(HCRYPTKEY, DWORD, PBYTE, DWORD); - BOOL CryptGetKeyParam(HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD); - BOOL CryptSetHashParam(HCRYPTHASH, DWORD, PBYTE, DWORD); - BOOL CryptGetHashParam(HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD); - BOOL CryptSetProvParam(HCRYPTPROV, DWORD, PBYTE, DWORD); - BOOL CryptGetProvParam(HCRYPTPROV, DWORD, PBYTE, PDWORD, DWORD); - BOOL CryptGenRandom(HCRYPTPROV, DWORD, PBYTE); - BOOL CryptGetUserKey(HCRYPTPROV, DWORD, HCRYPTKEY*); - BOOL CryptExportKey(HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, PBYTE, PDWORD); - BOOL CryptImportKey(HCRYPTPROV, PBYTE, DWORD, HCRYPTKEY, DWORD, - HCRYPTKEY*); - BOOL CryptEncrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD, - DWORD); - BOOL CryptDecrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD); - BOOL CryptCreateHash(HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH*); - BOOL CryptHashData(HCRYPTHASH, PBYTE, DWORD, DWORD); - BOOL CryptHashSessionKey(HCRYPTHASH, HCRYPTKEY, DWORD); - BOOL CryptGetHashValue(HCRYPTHASH, DWORD, PBYTE, PDWORD); - BOOL CryptDestroyHash(HCRYPTHASH); - BOOL CryptSignHashA(HCRYPTHASH, DWORD, LPCSTR, DWORD, PBYTE, PDWORD); - BOOL CryptSignHashW(HCRYPTHASH, DWORD, LPCWSTR, DWORD, PBYTE, PDWORD); - BOOL CryptVerifySignatureA(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCSTR, - DWORD); - BOOL CryptVerifySignatureW(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCWSTR, - DWORD); - BOOL CryptSetProviderA(LPCSTR, DWORD); - BOOL CryptSetProviderW(LPCWSTR, DWORD); -} - -version (Unicode) { - alias CertNameToStrW CertNameToStr; - alias CryptAcquireContextW CryptAcquireContext; - alias CryptSignHashW CryptSignHash; - alias CryptVerifySignatureW CryptVerifySignature; - alias CryptSetProviderW CryptSetProvider; - alias CertOpenSystemStoreW CertOpenSystemStore; - /+alias CERT_FIND_SUBJECT_STR_W CERT_FIND_SUBJECT_STR; - alias CERT_FIND_ISSUER_STR_W CERT_FIND_ISSUER_STR;+/ -} else { - alias CertNameToStrA CertNameToStr; - alias CryptAcquireContextA CryptAcquireContext; - alias CryptSignHashA CryptSignHash; - alias CryptVerifySignatureA CryptVerifySignature; - alias CryptSetProviderA CryptSetProvider; - alias CertOpenSystemStoreA CertOpenSystemStore; - /+alias CERT_FIND_SUBJECT_STR_A CERT_FIND_SUBJECT_STR; - alias CERT_FIND_ISSUER_STR_A CERT_FIND_ISSUER_STR;+/ -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wincrypt.d) + */ +module core.sys.windows.wincrypt; + +private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; + +/* FIXME: + * Types of some constants + * Types of macros + * Inits of various "size" and "version" members + * Why are some #ifdefs commented out? + */ + +const TCHAR[] + MS_DEF_PROV = "Microsoft Base Cryptographic Provider v1.0", + MS_ENHANCED_PROV = "Microsoft Enhanced Cryptographic Provider v1.0", + MS_STRONG_PROV = "Microsoft Strong Cryptographic Provider", + MS_DEF_RSA_SIG_PROV = "Microsoft RSA Signature Cryptographic Provider", + MS_DEF_RSA_SCHANNEL_PROV = "Microsoft RSA SChannel Cryptographic Provider", + MS_DEF_DSS_PROV = "Microsoft Base DSS Cryptographic Provider", + MS_DEF_DSS_DH_PROV + = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider", + MS_ENH_DSS_DH_PROV + = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider", + MS_DEF_DH_SCHANNEL_PROV = "Microsoft DH SChannel Cryptographic Provider", + MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider"; + +static if (_WIN32_WINNT > 0x501) { + const TCHAR[] MS_ENH_RSA_AES_PROV + = "Microsoft Enhanced RSA and AES Cryptographic Provider"; +} else static if (_WIN32_WINNT == 0x501) { + const TCHAR[] MS_ENH_RSA_AES_PROV + = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; +} + +ALG_ID GET_ALG_CLASS(ALG_ID x) { return x & 0xE000; } +ALG_ID GET_ALG_TYPE (ALG_ID x) { return x & 0x1E00; } +ALG_ID GET_ALG_SID (ALG_ID x) { return x & 0x01FF; } + +enum : ALG_ID { + ALG_CLASS_ANY = 0, + ALG_CLASS_SIGNATURE = 0x2000, + ALG_CLASS_MSG_ENCRYPT = 0x4000, + ALG_CLASS_DATA_ENCRYPT = 0x6000, + ALG_CLASS_HASH = 0x8000, + ALG_CLASS_KEY_EXCHANGE = 0xA000, + ALG_CLASS_ALL = 0xE000 +} + +enum : ALG_ID { + ALG_TYPE_ANY = 0, + ALG_TYPE_DSS = 0x0200, + ALG_TYPE_RSA = 0x0400, + ALG_TYPE_BLOCK = 0x0600, + ALG_TYPE_STREAM = 0x0800, + ALG_TYPE_DH = 0x0A00, + ALG_TYPE_SECURECHANNEL = 0x0C00 +} + +enum : ALG_ID { + ALG_SID_ANY = 0, + ALG_SID_RSA_ANY = 0, + ALG_SID_RSA_PKCS, + ALG_SID_RSA_MSATWORK, + ALG_SID_RSA_ENTRUST, + ALG_SID_RSA_PGP, // = 4 + ALG_SID_DSS_ANY = 0, + ALG_SID_DSS_PKCS, + ALG_SID_DSS_DMS, // = 2 + ALG_SID_DES = 1, + ALG_SID_3DES = 3, + ALG_SID_DESX, + ALG_SID_IDEA, + ALG_SID_CAST, + ALG_SID_SAFERSK64, + ALG_SID_SAFERSK128, + ALG_SID_3DES_112, + ALG_SID_SKIPJACK, + ALG_SID_TEK, + ALG_SID_CYLINK_MEK, + ALG_SID_RC5, // = 13 + ALG_SID_RC2 = 2, + ALG_SID_RC4 = 1, + ALG_SID_SEAL = 2, + ALG_SID_MD2 = 1, + ALG_SID_MD4, + ALG_SID_MD5, + ALG_SID_SHA, + ALG_SID_MAC, + ALG_SID_RIPEMD, + ALG_SID_RIPEMD160, + ALG_SID_SSL3SHAMD5, + ALG_SID_HMAC, + ALG_SID_TLS1PRF, // = 10 + ALG_SID_AES_128 = 14, + ALG_SID_AES_192, + ALG_SID_AES_256, + ALG_SID_AES, // = 17 + ALG_SID_EXAMPLE = 80 +} + +enum : ALG_ID { + CALG_MD2 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2, + CALG_MD4 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4, + CALG_MD5 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5, + CALG_SHA = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA, + CALG_SHA1 = CALG_SHA, + CALG_MAC = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC, + CALG_3DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 3, + CALG_CYLINK_MEK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 12, + CALG_SKIPJACK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 10, + CALG_KEA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS | 4, + CALG_RSA_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, + CALG_DSS_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY, + CALG_RSA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, + CALG_DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES, + CALG_RC2 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2, + CALG_RC4 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4, + CALG_SEAL = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL, + CALG_DH_EPHEM = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS + | ALG_SID_DSS_DMS, + CALG_DESX = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX, +// is undefined ALG_CLASS_DHASH in MinGW - presuming typo + CALG_TLS1PRF = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF, + CALG_AES_128 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128, + CALG_AES_192 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192, + CALG_AES_256 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256, + CALG_AES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES, +} + +enum { + CRYPT_VERIFYCONTEXT = 0xF0000000, +} + +enum { + CRYPT_NEWKEYSET = 8, + CRYPT_DELETEKEYSET = 16, + CRYPT_MACHINE_KEYSET = 32, + CRYPT_SILENT = 64, +} + +enum { + CRYPT_EXPORTABLE = 1, + CRYPT_USER_PROTECTED = 2, + CRYPT_CREATE_SALT = 4, + CRYPT_UPDATE_KEY = 8, +} + +enum { + SIMPLEBLOB = 1, + PUBLICKEYBLOB = 6, + PRIVATEKEYBLOB = 7, + PLAINTEXTKEYBLOB = 8, + OPAQUEKEYBLOB = 9, + PUBLICKEYBLOBEX = 10, + SYMMETRICWRAPKEYBLOB = 11, +} + +enum { + AT_KEYEXCHANGE = 1, + AT_SIGNATURE = 2, +} + +enum { + CRYPT_USERDATA = 1, +} + +enum { + PKCS5_PADDING = 1, +} + +enum { + CRYPT_MODE_CBC = 1, + CRYPT_MODE_ECB = 2, + CRYPT_MODE_OFB = 3, + CRYPT_MODE_CFB = 4, + CRYPT_MODE_CTS = 5, + CRYPT_MODE_CBCI = 6, + CRYPT_MODE_CFBP = 7, + CRYPT_MODE_OFBP = 8, + CRYPT_MODE_CBCOFM = 9, + CRYPT_MODE_CBCOFMI = 10, +} + +enum { + CRYPT_ENCRYPT = 1, + CRYPT_DECRYPT = 2, + CRYPT_EXPORT = 4, + CRYPT_READ = 8, + CRYPT_WRITE = 16, + CRYPT_MAC = 32, +} + +enum { + HP_ALGID = 1, + HP_HASHVAL = 2, + HP_HASHSIZE = 4, + HP_HMAC_INFO = 5, +} + +enum { + CRYPT_FAILED = FALSE, + CRYPT_SUCCEED = TRUE, +} + +bool RCRYPT_SUCCEEDED(BOOL r) { return r==CRYPT_SUCCEED; } +bool RCRYPT_FAILED(BOOL r) { return r==CRYPT_FAILED; } + +enum { + PP_ENUMALGS = 1, + PP_ENUMCONTAINERS = 2, + PP_IMPTYPE = 3, + PP_NAME = 4, + PP_VERSION = 5, + PP_CONTAINER = 6, + PP_CHANGE_PASSWORD = 7, + PP_KEYSET_SEC_DESCR = 8, + PP_CERTCHAIN = 9, + PP_KEY_TYPE_SUBTYPE = 10, + PP_PROVTYPE = 16, + PP_KEYSTORAGE = 17, + PP_APPLI_CERT = 18, + PP_SYM_KEYSIZE = 19, + PP_SESSION_KEYSIZE = 20, + PP_UI_PROMPT = 21, + PP_ENUMALGS_EX = 22, + PP_ENUMMANDROOTS = 25, + PP_ENUMELECTROOTS = 26, + PP_KEYSET_TYPE = 27, + PP_ADMIN_PIN = 31, + PP_KEYEXCHANGE_PIN = 32, + PP_SIGNATURE_PIN = 33, + PP_SIG_KEYSIZE_INC = 34, + PP_KEYX_KEYSIZE_INC = 35, + PP_UNIQUE_CONTAINER = 36, + PP_SGC_INFO = 37, + PP_USE_HARDWARE_RNG = 38, + PP_KEYSPEC = 39, + PP_ENUMEX_SIGNING_PROT = 40, +} + +enum { + CRYPT_FIRST = 1, + CRYPT_NEXT = 2, +} + +enum { + CRYPT_IMPL_HARDWARE = 1, + CRYPT_IMPL_SOFTWARE = 2, + CRYPT_IMPL_MIXED = 3, + CRYPT_IMPL_UNKNOWN = 4, +} + +enum { + PROV_RSA_FULL = 1, + PROV_RSA_SIG = 2, + PROV_DSS = 3, + PROV_FORTEZZA = 4, + PROV_MS_MAIL = 5, + PROV_SSL = 6, + PROV_STT_MER = 7, + PROV_STT_ACQ = 8, + PROV_STT_BRND = 9, + PROV_STT_ROOT = 10, + PROV_STT_ISS = 11, + PROV_RSA_SCHANNEL = 12, + PROV_DSS_DH = 13, + PROV_EC_ECDSA_SIG = 14, + PROV_EC_ECNRA_SIG = 15, + PROV_EC_ECDSA_FULL = 16, + PROV_EC_ECNRA_FULL = 17, + PROV_DH_SCHANNEL = 18, + PROV_SPYRUS_LYNKS = 20, + PROV_RNG = 21, + PROV_INTEL_SEC = 22, + PROV_RSA_AES = 24, + MAXUIDLEN = 64, +} + +enum { + CUR_BLOB_VERSION = 2, +} + +enum { + X509_ASN_ENCODING = 1, + PKCS_7_ASN_ENCODING = 65536, +} + +enum { + CERT_V1 = 0, + CERT_V2 = 1, + CERT_V3 = 2, +} + +enum { + CERT_E_CHAINING = (-2146762486), + CERT_E_CN_NO_MATCH = (-2146762481), + CERT_E_EXPIRED = (-2146762495), + CERT_E_PURPOSE = (-2146762490), + CERT_E_REVOCATION_FAILURE = (-2146762482), + CERT_E_REVOKED = (-2146762484), + CERT_E_ROLE = (-2146762493), + CERT_E_UNTRUSTEDROOT = (-2146762487), + CERT_E_UNTRUSTEDTESTROOT = (-2146762483), + CERT_E_VALIDITYPERIODNESTING = (-2146762494), + CERT_E_WRONG_USAGE = (-2146762480), + CERT_E_PATHLENCONST = (-2146762492), + CERT_E_CRITICAL = (-2146762491), + CERT_E_ISSUERCHAINING = (-2146762489), + CERT_E_MALFORMED = (-2146762488), + CRYPT_E_REVOCATION_OFFLINE = (-2146885613), + CRYPT_E_REVOKED = (-2146885616), + TRUST_E_BASIC_CONSTRAINTS = (-2146869223), + TRUST_E_CERT_SIGNATURE = (-2146869244), + TRUST_E_FAIL = (-2146762485), +} + +enum { + CERT_TRUST_NO_ERROR = 0, + CERT_TRUST_IS_NOT_TIME_VALID = 1, + CERT_TRUST_IS_NOT_TIME_NESTED = 2, + CERT_TRUST_IS_REVOKED = 4, + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 8, + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 16, + CERT_TRUST_IS_UNTRUSTED_ROOT = 32, + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 64, + CERT_TRUST_IS_CYCLIC = 128, + CERT_TRUST_IS_PARTIAL_CHAIN = 65536, + CERT_TRUST_CTL_IS_NOT_TIME_VALID = 131072, + CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144, + CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288, +} + +enum { + CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 1, + CERT_TRUST_HAS_KEY_MATCH_ISSUER = 2, + CERT_TRUST_HAS_NAME_MATCH_ISSUER = 4, + CERT_TRUST_IS_SELF_SIGNED = 8, + CERT_TRUST_IS_COMPLEX_CHAIN = 65536, +} + +enum { + CERT_CHAIN_POLICY_BASE = cast(LPCSTR) 1, + CERT_CHAIN_POLICY_AUTHENTICODE = cast(LPCSTR) 2, + CERT_CHAIN_POLICY_AUTHENTICODE_TS = cast(LPCSTR) 3, + CERT_CHAIN_POLICY_SSL = cast(LPCSTR) 4, + CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = cast(LPCSTR) 5, + CERT_CHAIN_POLICY_NT_AUTH = cast(LPCSTR) 6, +} + +enum { + USAGE_MATCH_TYPE_AND = 0, + USAGE_MATCH_TYPE_OR = 1, +} + +enum { + CERT_SIMPLE_NAME_STR = 1, + CERT_OID_NAME_STR = 2, + CERT_X500_NAME_STR = 3, +} +enum { + CERT_NAME_STR_SEMICOLON_FLAG = 1073741824, + CERT_NAME_STR_CRLF_FLAG = 134217728, + CERT_NAME_STR_NO_PLUS_FLAG = 536870912, + CERT_NAME_STR_NO_QUOTING_FLAG = 268435456, + CERT_NAME_STR_REVERSE_FLAG = 33554432, + CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG = 131072, +} + +enum { + CERT_FIND_ANY = 0, + CERT_FIND_CERT_ID = 1048576, + CERT_FIND_CTL_USAGE = 655360, + CERT_FIND_ENHKEY_USAGE = 655360, + CERT_FIND_EXISTING = 851968, + CERT_FIND_HASH = 65536, + CERT_FIND_ISSUER_ATTR = 196612, + CERT_FIND_ISSUER_NAME = 131076, + CERT_FIND_ISSUER_OF = 786432, + CERT_FIND_KEY_IDENTIFIER = 983040, + CERT_FIND_KEY_SPEC = 589824, + CERT_FIND_MD5_HASH = 262144, + CERT_FIND_PROPERTY = 327680, + CERT_FIND_PUBLIC_KEY = 393216, + CERT_FIND_SHA1_HASH = 65536, + CERT_FIND_SIGNATURE_HASH = 917504, + CERT_FIND_SUBJECT_ATTR = 196615, + CERT_FIND_SUBJECT_CERT = 720896, + CERT_FIND_SUBJECT_NAME = 131079, + CERT_FIND_SUBJECT_STR_A = 458759, + CERT_FIND_SUBJECT_STR_W = 524295, + CERT_FIND_ISSUER_STR_A = 458756, + CERT_FIND_ISSUER_STR_W = 524292, +} + +enum { + CERT_FIND_OR_ENHKEY_USAGE_FLAG = 16, + CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = 1, + CERT_FIND_NO_ENHKEY_USAGE_FLAG = 8, + CERT_FIND_VALID_ENHKEY_USAGE_FLAG = 32, + CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = 2, +} + +enum { + CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG = 2, + CERT_UNICODE_IS_RDN_ATTRS_FLAG = 1, + CERT_CHAIN_FIND_BY_ISSUER = 1, +} + +enum { + CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG = 1, + CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG = 2, + CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 4, + CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG = 8, + CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG = 16384, + CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG = 32768, +} + +enum { + CERT_STORE_PROV_SYSTEM = 10, + CERT_SYSTEM_STORE_LOCAL_MACHINE = 131072, +} + +enum { + szOID_PKIX_KP_SERVER_AUTH = "4235600", + szOID_SERVER_GATED_CRYPTO = "4235658", + szOID_SGC_NETSCAPE = "2.16.840.1.113730.4.1", + szOID_PKIX_KP_CLIENT_AUTH = "1.3.6.1.5.5.7.3.2", +} + +enum { + CRYPT_NOHASHOID = 0x00000001, + CRYPT_NO_SALT = 0x10, + CRYPT_PREGEN = 0x40, +} + +enum { + CRYPT_RECIPIENT = 0x10, + CRYPT_INITIATOR = 0x40, + CRYPT_ONLINE = 0x80, + CRYPT_SF = 0x100, + CRYPT_CREATE_IV = 0x200, + CRYPT_KEK = 0x400, + CRYPT_DATA_KEY = 0x800, + CRYPT_VOLATILE = 0x1000, + CRYPT_SGCKEY = 0x2000, +} + +enum { + KP_IV = 0x00000001, + KP_SALT = 0x00000002, + KP_PADDING = 0x00000003, + KP_MODE = 0x00000004, + KP_MODE_BITS = 0x00000005, + KP_PERMISSIONS = 0x00000006, + KP_ALGID = 0x00000007, + KP_BLOCKLEN = 0x00000008, + KP_KEYLEN = 0x00000009, + KP_SALT_EX = 0x0000000a, + KP_P = 0x0000000b, + KP_G = 0x0000000c, + KP_Q = 0x0000000d, + KP_X = 0x0000000e, + KP_Y = 0x0000000f, + KP_RA = 0x00000010, + KP_RB = 0x00000011, + KP_INFO = 0x00000012, + KP_EFFECTIVE_KEYLEN = 0x00000013, + KP_SCHANNEL_ALG = 0x00000014, + KP_PUB_PARAMS = 0x00000027, +} + +enum { + CRYPT_FLAG_PCT1 = 0x0001, + CRYPT_FLAG_SSL2 = 0x0002, + CRYPT_FLAG_SSL3 = 0x0004, + CRYPT_FLAG_TLS1 = 0x0008, + CRYPT_FLAG_IPSEC = 0x0010, + CRYPT_FLAG_SIGNING = 0x0020, +} + +enum { + SCHANNEL_MAC_KEY = 0x00000000, + SCHANNEL_ENC_KEY = 0x00000001, +} + +enum { + INTERNATIONAL_USAGE = 0x00000001, +} + + +alias UINT ALG_ID; +alias ULONG HCRYPTPROV, HCRYPTKEY, HCRYPTHASH; +alias PVOID HCERTSTORE, HCRYPTMSG, HCERTCHAINENGINE; + +struct VTableProvStruc { + FARPROC FuncVerifyImage; +} +alias VTableProvStruc* PVTableProvStruc; + +struct _CRYPTOAPI_BLOB { + DWORD cbData; + BYTE* pbData; +} +alias _CRYPTOAPI_BLOB CRYPT_INTEGER_BLOB, CRYPT_UINT_BLOB, + CRYPT_OBJID_BLOB, CERT_NAME_BLOB, CERT_RDN_VALUE_BLOB, CERT_BLOB, + CRL_BLOB, DATA_BLOB, CRYPT_DATA_BLOB, CRYPT_HASH_BLOB, + CRYPT_DIGEST_BLOB, CRYPT_DER_BLOB, CRYPT_ATTR_BLOB; +alias _CRYPTOAPI_BLOB* PCRYPT_INTEGER_BLOB, PCRYPT_UINT_BLOB, + PCRYPT_OBJID_BLOB, PCERT_NAME_BLOB, PCERT_RDN_VALUE_BLOB, PCERT_BLOB, + PCRL_BLOB, PDATA_BLOB, PCRYPT_DATA_BLOB, PCRYPT_HASH_BLOB, + PCRYPT_DIGEST_BLOB, PCRYPT_DER_BLOB, PCRYPT_ATTR_BLOB; + +// not described in SDK; has the same layout as HTTPSPolicyCallbackData +struct SSL_EXTRA_CERT_CHAIN_POLICY_PARA { + DWORD cbStruct; + DWORD dwAuthType; + DWORD fdwChecks; + LPWSTR pwszServerName; +} +alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA HTTPSPolicyCallbackData; +alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA* PSSL_EXTRA_CERT_CHAIN_POLICY_PARA, + PHTTPSPolicyCallbackData; + +/* #if (_WIN32_WINNT>=0x500) */ +struct CERT_CHAIN_POLICY_PARA { + DWORD cbSize = CERT_CHAIN_POLICY_PARA.sizeof; + DWORD dwFlags; + void* pvExtraPolicyPara; +} +alias CERT_CHAIN_POLICY_PARA* PCERT_CHAIN_POLICY_PARA; + +struct CERT_CHAIN_POLICY_STATUS { + DWORD cbSize = CERT_CHAIN_POLICY_STATUS.sizeof; + DWORD dwError; + LONG lChainIndex; + LONG lElementIndex; + void* pvExtraPolicyStatus; +} +alias CERT_CHAIN_POLICY_STATUS* PCERT_CHAIN_POLICY_STATUS; +/* #endif */ + +struct CRYPT_ALGORITHM_IDENTIFIER { + LPSTR pszObjId; + CRYPT_OBJID_BLOB Parameters; +} +alias CRYPT_ALGORITHM_IDENTIFIER* PCRYPT_ALGORITHM_IDENTIFIER; + +struct CRYPT_BIT_BLOB { + DWORD cbData; + BYTE* pbData; + DWORD cUnusedBits; +} +alias CRYPT_BIT_BLOB* PCRYPT_BIT_BLOB; + +struct CERT_PUBLIC_KEY_INFO { + CRYPT_ALGORITHM_IDENTIFIER Algorithm; + CRYPT_BIT_BLOB PublicKey; +} +alias CERT_PUBLIC_KEY_INFO* PCERT_PUBLIC_KEY_INFO; + +struct CERT_EXTENSION { + LPSTR pszObjId; + BOOL fCritical; + CRYPT_OBJID_BLOB Value; +} +alias CERT_EXTENSION* PCERT_EXTENSION; + +struct CERT_INFO { + DWORD dwVersion; + CRYPT_INTEGER_BLOB SerialNumber; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CERT_NAME_BLOB Issuer; + FILETIME NotBefore; + FILETIME NotAfter; + CERT_NAME_BLOB Subject; + CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; + CRYPT_BIT_BLOB IssuerUniqueId; + CRYPT_BIT_BLOB SubjectUniqueId; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CERT_INFO* PCERT_INFO; + +struct CERT_CONTEXT { + DWORD dwCertEncodingType; + BYTE* pbCertEncoded; + DWORD cbCertEncoded; + PCERT_INFO pCertInfo; + HCERTSTORE hCertStore; +} +alias CERT_CONTEXT* PCERT_CONTEXT; +alias const(CERT_CONTEXT)* PCCERT_CONTEXT; + +struct CTL_USAGE { + DWORD cUsageIdentifier; + LPSTR* rgpszUsageIdentifier; +} +alias CTL_USAGE CERT_ENHKEY_USAGE; +alias CTL_USAGE* PCTRL_USAGE, PCERT_ENHKEY_USAGE; + +struct CERT_USAGE_MATCH { + DWORD dwType; + CERT_ENHKEY_USAGE Usage; +} +alias CERT_USAGE_MATCH* PCERT_USAGE_MATCH; +/* #if (_WIN32_WINNT>=0x500) */ + +struct CERT_CHAIN_PARA { + DWORD cbSize = CERT_CHAIN_PARA.sizeof; + CERT_USAGE_MATCH RequestedUsage; +//#if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS + CERT_USAGE_MATCH RequestedIssuancePolicy; + DWORD dwUrlRetrievalTimeout; + BOOL fCheckRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +//#endif +} +alias CERT_CHAIN_PARA* PCERT_CHAIN_PARA; + +extern (Windows) alias BOOL function(PCCERT_CONTEXT, void*) + PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK; + +struct CERT_CHAIN_FIND_BY_ISSUER_PARA { + DWORD cbSize = CERT_CHAIN_FIND_BY_ISSUER_PARA.sizeof; + LPCSTR pszUsageIdentifier; + DWORD dwKeySpec; + DWORD dwAcquirePrivateKeyFlags; + DWORD cIssuer; + CERT_NAME_BLOB* rgIssuer; + PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback; + void* pvFindArg; + DWORD* pdwIssuerChainIndex; + DWORD* pdwIssuerElementIndex; +} +alias CERT_CHAIN_FIND_BY_ISSUER_PARA* PCERT_CHAIN_FIND_BY_ISSUER_PARA; +/* #endif */ + +struct CERT_TRUST_STATUS { + DWORD dwErrorStatus; + DWORD dwInfoStatus; +} +alias CERT_TRUST_STATUS* PCERT_TRUST_STATUS; + +struct CRL_ENTRY { + CRYPT_INTEGER_BLOB SerialNumber; + FILETIME RevocationDate; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CRL_ENTRY* PCRL_ENTRY; + +struct CRL_INFO { + DWORD dwVersion; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CERT_NAME_BLOB Issuer; + FILETIME ThisUpdate; + FILETIME NextUpdate; + DWORD cCRLEntry; + PCRL_ENTRY rgCRLEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CRL_INFO* PCRL_INFO; + +struct CRL_CONTEXT { + DWORD dwCertEncodingType; + BYTE* pbCrlEncoded; + DWORD cbCrlEncoded; + PCRL_INFO pCrlInfo; + HCERTSTORE hCertStore; +} +alias CRL_CONTEXT* PCRL_CONTEXT; +alias const(CRL_CONTEXT)* PCCRL_CONTEXT; + +struct CERT_REVOCATION_CRL_INFO { + DWORD cbSize = CERT_REVOCATION_CRL_INFO.sizeof; + PCCRL_CONTEXT pBaseCRLContext; + PCCRL_CONTEXT pDeltaCRLContext; + PCRL_ENTRY pCrlEntry; + BOOL fDeltaCrlEntry; +} +alias CERT_REVOCATION_CRL_INFO* PCERT_REVOCATION_CRL_INFO; + +struct CERT_REVOCATION_INFO { + DWORD cbSize = CERT_REVOCATION_INFO.sizeof; + DWORD dwRevocationResult; + LPCSTR pszRevocationOid; + LPVOID pvOidSpecificInfo; + BOOL fHasFreshnessTime; + DWORD dwFreshnessTime; + PCERT_REVOCATION_CRL_INFO pCrlInfo; +} +alias CERT_REVOCATION_INFO* PCERT_REVOCATION_INFO; + +/* #if (_WIN32_WINNT>=0x500) */ +struct CERT_CHAIN_ELEMENT { + DWORD cbSize = CERT_CHAIN_ELEMENT.sizeof; + PCCERT_CONTEXT pCertContext; + CERT_TRUST_STATUS TrustStatus; + PCERT_REVOCATION_INFO pRevocationInfo; + PCERT_ENHKEY_USAGE pIssuanceUsage; + PCERT_ENHKEY_USAGE pApplicationUsage; +} +alias CERT_CHAIN_ELEMENT* PCERT_CHAIN_ELEMENT; +/* #endif */ + +struct CRYPT_ATTRIBUTE { + LPSTR pszObjId; + DWORD cValue; + PCRYPT_ATTR_BLOB rgValue; +} +alias CRYPT_ATTRIBUTE* PCRYPT_ATTRIBUTE; + +struct CTL_ENTRY { + CRYPT_DATA_BLOB SubjectIdentifier; + DWORD cAttribute; + PCRYPT_ATTRIBUTE rgAttribute; +} +alias CTL_ENTRY* PCTL_ENTRY; + +struct CTL_INFO { + DWORD dwVersion; + CTL_USAGE SubjectUsage; + CRYPT_DATA_BLOB ListIdentifier; + CRYPT_INTEGER_BLOB SequenceNumber; + FILETIME ThisUpdate; + FILETIME NextUpdate; + CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; + DWORD cCTLEntry; + PCTL_ENTRY rgCTLEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CTL_INFO* PCTL_INFO; + +struct CTL_CONTEXT { + DWORD dwMsgAndCertEncodingType; + BYTE* pbCtlEncoded; + DWORD cbCtlEncoded; + PCTL_INFO pCtlInfo; + HCERTSTORE hCertStore; + HCRYPTMSG hCryptMsg; + BYTE* pbCtlContent; + DWORD cbCtlContent; +} +alias CTL_CONTEXT* PCTL_CONTEXT; +alias const(CTL_CONTEXT)* PCCTL_CONTEXT; + +struct CERT_TRUST_LIST_INFO { + DWORD cbSize = CERT_TRUST_LIST_INFO.sizeof; + PCTL_ENTRY pCtlEntry; + PCCTL_CONTEXT pCtlContext; +} +alias CERT_TRUST_LIST_INFO* PCERT_TRUST_LIST_INFO; + +struct CERT_SIMPLE_CHAIN { + DWORD cbSize = CERT_SIMPLE_CHAIN.sizeof; + CERT_TRUST_STATUS TrustStatus; + DWORD cElement; + PCERT_CHAIN_ELEMENT* rgpElement; + PCERT_TRUST_LIST_INFO pTrustListInfo; + BOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +} +alias CERT_SIMPLE_CHAIN* PCERT_SIMPLE_CHAIN; + +/* #if (_WIN32_WINNT>=0x500) */ +alias const(CERT_CHAIN_CONTEXT)* PCCERT_CHAIN_CONTEXT; +struct CERT_CHAIN_CONTEXT { + DWORD cbSize = CERT_CHAIN_CONTEXT.sizeof; + CERT_TRUST_STATUS TrustStatus; + DWORD cChain; + PCERT_SIMPLE_CHAIN* rgpChain; + DWORD cLowerQualityChainContext; + PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; + BOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +} +alias CERT_CHAIN_CONTEXT* PCERT_CHAIN_CONTEXT; +/* #endif */ + +struct PROV_ENUMALGS { + ALG_ID aiAlgid; + DWORD dwBitLen; + DWORD dwNameLen; + CHAR[20] szName; +} + +struct PUBLICKEYSTRUC { + BYTE bType; + BYTE bVersion; + WORD reserved; + ALG_ID aiKeyAlg; +} +alias PUBLICKEYSTRUC BLOBHEADER; + +struct RSAPUBKEY { + DWORD magic; + DWORD bitlen; + DWORD pubexp; +} + +struct HMAC_INFO { + ALG_ID HashAlgid; + BYTE* pbInnerString; + DWORD cbInnerString; + BYTE* pbOuterString; + DWORD cbOuterString; +} +alias HMAC_INFO* PHMAC_INFO; + +extern (Windows) { + BOOL CertCloseStore(HCERTSTORE, DWORD); + BOOL CertGetCertificateChain(HCERTCHAINENGINE, PCCERT_CONTEXT, LPFILETIME, + HCERTSTORE, PCERT_CHAIN_PARA, DWORD, LPVOID, PCCERT_CHAIN_CONTEXT*); + BOOL CertVerifyCertificateChainPolicy(LPCSTR, PCCERT_CHAIN_CONTEXT, + PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS); + void CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT); + DWORD CertNameToStrA(DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD); + DWORD CertNameToStrW(DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD); + HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV, LPCSTR); + HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR); + HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, const(void)*); + PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWORD, + const(void)*, PCCERT_CONTEXT); + BOOL CertFreeCertificateContext(PCCERT_CONTEXT); + PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE, + PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*); + PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWORD, + const(void)*, PCCERT_CHAIN_CONTEXT); + + BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); + BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD); + BOOL CryptReleaseContext(HCRYPTPROV, DWORD); + BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*); + BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*); + BOOL CryptDestroyKey(HCRYPTKEY); + static if (_WIN32_WINNT >= 0x500) { + BOOL CryptDuplicateHash(HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*); + BOOL CryptDuplicateKey(HCRYPTKEY, DWORD*, DWORD, HCRYPTKEY*); + } + BOOL CryptSetKeyParam(HCRYPTKEY, DWORD, PBYTE, DWORD); + BOOL CryptGetKeyParam(HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptSetHashParam(HCRYPTHASH, DWORD, PBYTE, DWORD); + BOOL CryptGetHashParam(HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptSetProvParam(HCRYPTPROV, DWORD, PBYTE, DWORD); + BOOL CryptGetProvParam(HCRYPTPROV, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptGenRandom(HCRYPTPROV, DWORD, PBYTE); + BOOL CryptGetUserKey(HCRYPTPROV, DWORD, HCRYPTKEY*); + BOOL CryptExportKey(HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, PBYTE, PDWORD); + BOOL CryptImportKey(HCRYPTPROV, PBYTE, DWORD, HCRYPTKEY, DWORD, + HCRYPTKEY*); + BOOL CryptEncrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD, + DWORD); + BOOL CryptDecrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD); + BOOL CryptCreateHash(HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH*); + BOOL CryptHashData(HCRYPTHASH, PBYTE, DWORD, DWORD); + BOOL CryptHashSessionKey(HCRYPTHASH, HCRYPTKEY, DWORD); + BOOL CryptGetHashValue(HCRYPTHASH, DWORD, PBYTE, PDWORD); + BOOL CryptDestroyHash(HCRYPTHASH); + BOOL CryptSignHashA(HCRYPTHASH, DWORD, LPCSTR, DWORD, PBYTE, PDWORD); + BOOL CryptSignHashW(HCRYPTHASH, DWORD, LPCWSTR, DWORD, PBYTE, PDWORD); + BOOL CryptVerifySignatureA(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCSTR, + DWORD); + BOOL CryptVerifySignatureW(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCWSTR, + DWORD); + BOOL CryptSetProviderA(LPCSTR, DWORD); + BOOL CryptSetProviderW(LPCWSTR, DWORD); +} + +version (Unicode) { + alias CertNameToStrW CertNameToStr; + alias CryptAcquireContextW CryptAcquireContext; + alias CryptSignHashW CryptSignHash; + alias CryptVerifySignatureW CryptVerifySignature; + alias CryptSetProviderW CryptSetProvider; + alias CertOpenSystemStoreW CertOpenSystemStore; + /+alias CERT_FIND_SUBJECT_STR_W CERT_FIND_SUBJECT_STR; + alias CERT_FIND_ISSUER_STR_W CERT_FIND_ISSUER_STR;+/ +} else { + alias CertNameToStrA CertNameToStr; + alias CryptAcquireContextA CryptAcquireContext; + alias CryptSignHashA CryptSignHash; + alias CryptVerifySignatureA CryptVerifySignature; + alias CryptSetProviderA CryptSetProvider; + alias CertOpenSystemStoreA CertOpenSystemStore; + /+alias CERT_FIND_SUBJECT_STR_A CERT_FIND_SUBJECT_STR; + alias CERT_FIND_ISSUER_STR_A CERT_FIND_ISSUER_STR;+/ +} diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index 361292ec1c..f7ad7909e3 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -1,155 +1,155 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_windef.d) - */ -module core.sys.windows.windef; - -public import core.sys.windows.winnt; -private import core.sys.windows.w32api; - -const size_t MAX_PATH = 260; - -ushort MAKEWORD(ubyte a, ubyte b) { - return cast(ushort) ((b << 8) | a); -} - -ushort MAKEWORD(ushort a, ushort b) { - assert((a & 0xFF00) == 0); - assert((b & 0xFF00) == 0); - return MAKEWORD(cast(ubyte)a, cast(ubyte)b); -} - -uint MAKELONG(ushort a, ushort b) { - return cast(uint) ((b << 16) | a); -} - -uint MAKELONG(uint a, uint b) { - assert((a & 0xFFFF0000) == 0); - assert((b & 0xFFFF0000) == 0); - return MAKELONG(cast(ushort)a, cast(ushort)b); -} - -ushort LOWORD(ulong l) { - return cast(ushort) l; -} - -ushort HIWORD(ulong l) { - return cast(ushort) (l >>> 16); -} - -ubyte LOBYTE(ushort w) { - return cast(ubyte) w; -} - -ubyte HIBYTE(ushort w) { - return cast(ubyte) (w >>> 8); -} - -template max(T) { - T max(T a, T b) { - return a > b ? a : b; - } -} - -template min(T) { - T min(T a, T b) { - return a < b ? a : b; - } -} - -enum void* NULL = null; -alias ubyte BYTE; -alias ubyte* PBYTE, LPBYTE; -alias ushort USHORT, WORD, ATOM; -alias ushort* PUSHORT, PWORD, LPWORD; -alias uint ULONG, DWORD, UINT, COLORREF; -alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT; -alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT; -alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG; -alias float FLOAT; -alias float* PFLOAT; -alias const(void)* PCVOID, LPCVOID; - -alias UINT_PTR WPARAM; -alias LONG_PTR LPARAM, LRESULT; - -mixin DECLARE_HANDLE!("HHOOK"); -mixin DECLARE_HANDLE!("HGLOBAL"); -mixin DECLARE_HANDLE!("HLOCAL"); -mixin DECLARE_HANDLE!("GLOBALHANDLE"); -mixin DECLARE_HANDLE!("LOCALHANDLE"); -mixin DECLARE_HANDLE!("HGDIOBJ"); -mixin DECLARE_HANDLE!("HACCEL"); -mixin DECLARE_HANDLE!("HBITMAP", HGDIOBJ); -mixin DECLARE_HANDLE!("HBRUSH", HGDIOBJ); -mixin DECLARE_HANDLE!("HCOLORSPACE"); -mixin DECLARE_HANDLE!("HDC"); -mixin DECLARE_HANDLE!("HGLRC"); -mixin DECLARE_HANDLE!("HDESK"); -mixin DECLARE_HANDLE!("HENHMETAFILE"); -mixin DECLARE_HANDLE!("HFONT", HGDIOBJ); -mixin DECLARE_HANDLE!("HICON"); -mixin DECLARE_HANDLE!("HINSTANCE"); -mixin DECLARE_HANDLE!("HKEY"); -mixin DECLARE_HANDLE!("HMENU"); -mixin DECLARE_HANDLE!("HMETAFILE"); -mixin DECLARE_HANDLE!("HMODULE"); -mixin DECLARE_HANDLE!("HMONITOR"); -mixin DECLARE_HANDLE!("HPALETTE"); -mixin DECLARE_HANDLE!("HPEN", HGDIOBJ); -mixin DECLARE_HANDLE!("HRGN", HGDIOBJ); -mixin DECLARE_HANDLE!("HRSRC"); -mixin DECLARE_HANDLE!("HSTR"); -mixin DECLARE_HANDLE!("HTASK"); -mixin DECLARE_HANDLE!("HWND"); -mixin DECLARE_HANDLE!("HWINSTA"); -mixin DECLARE_HANDLE!("HKL"); -mixin DECLARE_HANDLE!("HCURSOR"); -alias HKEY* PHKEY; - -static if (_WIN32_WINNT >= 0x500) { - mixin DECLARE_HANDLE!("HTERMINAL"); - mixin DECLARE_HANDLE!("HWINEVENTHOOK"); -} - -alias extern (Windows) INT_PTR function() FARPROC, NEARPROC, PROC; - -struct RECT { - LONG left; - LONG top; - LONG right; - LONG bottom; -} -alias RECT RECTL; -alias RECT* PRECT, LPRECT, PRECTL, LPRECTL; -alias const(RECT)* LPCRECT, LPCRECTL; - -struct POINT { - LONG x; - LONG y; -} -alias POINT POINTL; -alias POINT* PPOINT, LPPOINT, PPOINTL, LPPOINTL; - -struct SIZE { - LONG cx; - LONG cy; -} -alias SIZE SIZEL; -alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL; - -struct POINTS { - SHORT x; - SHORT y; -} -alias POINTS* PPOINTS, LPPOINTS; - -enum : BOOL { - FALSE = 0, - TRUE = 1 -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_windef.d) + */ +module core.sys.windows.windef; + +public import core.sys.windows.winnt; +private import core.sys.windows.w32api; + +const size_t MAX_PATH = 260; + +ushort MAKEWORD(ubyte a, ubyte b) { + return cast(ushort) ((b << 8) | a); +} + +ushort MAKEWORD(ushort a, ushort b) { + assert((a & 0xFF00) == 0); + assert((b & 0xFF00) == 0); + return MAKEWORD(cast(ubyte)a, cast(ubyte)b); +} + +uint MAKELONG(ushort a, ushort b) { + return cast(uint) ((b << 16) | a); +} + +uint MAKELONG(uint a, uint b) { + assert((a & 0xFFFF0000) == 0); + assert((b & 0xFFFF0000) == 0); + return MAKELONG(cast(ushort)a, cast(ushort)b); +} + +ushort LOWORD(ulong l) { + return cast(ushort) l; +} + +ushort HIWORD(ulong l) { + return cast(ushort) (l >>> 16); +} + +ubyte LOBYTE(ushort w) { + return cast(ubyte) w; +} + +ubyte HIBYTE(ushort w) { + return cast(ubyte) (w >>> 8); +} + +template max(T) { + T max(T a, T b) { + return a > b ? a : b; + } +} + +template min(T) { + T min(T a, T b) { + return a < b ? a : b; + } +} + +enum void* NULL = null; +alias ubyte BYTE; +alias ubyte* PBYTE, LPBYTE; +alias ushort USHORT, WORD, ATOM; +alias ushort* PUSHORT, PWORD, LPWORD; +alias uint ULONG, DWORD, UINT, COLORREF; +alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT; +alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT; +alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG; +alias float FLOAT; +alias float* PFLOAT; +alias const(void)* PCVOID, LPCVOID; + +alias UINT_PTR WPARAM; +alias LONG_PTR LPARAM, LRESULT; + +mixin DECLARE_HANDLE!("HHOOK"); +mixin DECLARE_HANDLE!("HGLOBAL"); +mixin DECLARE_HANDLE!("HLOCAL"); +mixin DECLARE_HANDLE!("GLOBALHANDLE"); +mixin DECLARE_HANDLE!("LOCALHANDLE"); +mixin DECLARE_HANDLE!("HGDIOBJ"); +mixin DECLARE_HANDLE!("HACCEL"); +mixin DECLARE_HANDLE!("HBITMAP", HGDIOBJ); +mixin DECLARE_HANDLE!("HBRUSH", HGDIOBJ); +mixin DECLARE_HANDLE!("HCOLORSPACE"); +mixin DECLARE_HANDLE!("HDC"); +mixin DECLARE_HANDLE!("HGLRC"); +mixin DECLARE_HANDLE!("HDESK"); +mixin DECLARE_HANDLE!("HENHMETAFILE"); +mixin DECLARE_HANDLE!("HFONT", HGDIOBJ); +mixin DECLARE_HANDLE!("HICON"); +mixin DECLARE_HANDLE!("HINSTANCE"); +mixin DECLARE_HANDLE!("HKEY"); +mixin DECLARE_HANDLE!("HMENU"); +mixin DECLARE_HANDLE!("HMETAFILE"); +mixin DECLARE_HANDLE!("HMODULE"); +mixin DECLARE_HANDLE!("HMONITOR"); +mixin DECLARE_HANDLE!("HPALETTE"); +mixin DECLARE_HANDLE!("HPEN", HGDIOBJ); +mixin DECLARE_HANDLE!("HRGN", HGDIOBJ); +mixin DECLARE_HANDLE!("HRSRC"); +mixin DECLARE_HANDLE!("HSTR"); +mixin DECLARE_HANDLE!("HTASK"); +mixin DECLARE_HANDLE!("HWND"); +mixin DECLARE_HANDLE!("HWINSTA"); +mixin DECLARE_HANDLE!("HKL"); +mixin DECLARE_HANDLE!("HCURSOR"); +alias HKEY* PHKEY; + +static if (_WIN32_WINNT >= 0x500) { + mixin DECLARE_HANDLE!("HTERMINAL"); + mixin DECLARE_HANDLE!("HWINEVENTHOOK"); +} + +alias extern (Windows) INT_PTR function() FARPROC, NEARPROC, PROC; + +struct RECT { + LONG left; + LONG top; + LONG right; + LONG bottom; +} +alias RECT RECTL; +alias RECT* PRECT, LPRECT, PRECTL, LPRECTL; +alias const(RECT)* LPCRECT, LPCRECTL; + +struct POINT { + LONG x; + LONG y; +} +alias POINT POINTL; +alias POINT* PPOINT, LPPOINT, PPOINTL, LPPOINTL; + +struct SIZE { + LONG cx; + LONG cy; +} +alias SIZE SIZEL; +alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL; + +struct POINTS { + SHORT x; + SHORT y; +} +alias POINTS* PPOINTS, LPPOINTS; + +enum : BOOL { + FALSE = 0, + TRUE = 1 +} diff --git a/src/core/sys/windows/windows.d b/src/core/sys/windows/windows.d index a1942b0e3d..69470b59c3 100644 --- a/src/core/sys/windows/windows.d +++ b/src/core/sys/windows/windows.d @@ -1,64 +1,64 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 4.0 - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_windows.d) - */ -module core.sys.windows.windows; - -/* - windows.h - main header file for the Win32 API - - Written by Anders Norlander - - This file is part of a free library for the Win32 API. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -*/ - -public import core.sys.windows.w32api; -public import core.sys.windows.core; - -public import core.sys.windows.cderr; -public import core.sys.windows.dde; -public import core.sys.windows.ddeml; -public import core.sys.windows.dlgs; -public import core.sys.windows.imm; -public import core.sys.windows.lzexpand; -public import core.sys.windows.mmsystem; -public import core.sys.windows.nb30; -public import core.sys.windows.winsvc; - -public import core.sys.windows.rpc; -public import core.sys.windows.shellapi; -public import core.sys.windows.winperf; -public import core.sys.windows.commdlg; -public import core.sys.windows.winspool; -public import core.sys.windows.ole2; - -// Select correct version of winsock. Importing the incorrect -// module will cause a static assert to prevent problems later on. -version (Win32_Winsock1) { - public import core.sys.windows.winsock; -} else { - public import core.sys.windows.winsock2; - public import core.sys.windows.ws2tcpip; -} - -/+ -#if (_WIN32_WINNT >= 0x400) -#include -/* - * MS likes to include mswsock.h here as well, - * but that can cause undefined symbols if - * winsock2.h is included before windows.h - */ -#else -#include -#endif /* (_WIN32_WINNT >= 0x400) */ -+/ +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 4.0 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_windows.d) + */ +module core.sys.windows.windows; + +/* + windows.h - main header file for the Win32 API + + Written by Anders Norlander + + This file is part of a free library for the Win32 API. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +*/ + +public import core.sys.windows.w32api; +public import core.sys.windows.core; + +public import core.sys.windows.cderr; +public import core.sys.windows.dde; +public import core.sys.windows.ddeml; +public import core.sys.windows.dlgs; +public import core.sys.windows.imm; +public import core.sys.windows.lzexpand; +public import core.sys.windows.mmsystem; +public import core.sys.windows.nb30; +public import core.sys.windows.winsvc; + +public import core.sys.windows.rpc; +public import core.sys.windows.shellapi; +public import core.sys.windows.winperf; +public import core.sys.windows.commdlg; +public import core.sys.windows.winspool; +public import core.sys.windows.ole2; + +// Select correct version of winsock. Importing the incorrect +// module will cause a static assert to prevent problems later on. +version (Win32_Winsock1) { + public import core.sys.windows.winsock; +} else { + public import core.sys.windows.winsock2; + public import core.sys.windows.ws2tcpip; +} + +/+ +#if (_WIN32_WINNT >= 0x400) +#include +/* + * MS likes to include mswsock.h here as well, + * but that can cause undefined symbols if + * winsock2.h is included before windows.h + */ +#else +#include +#endif /* (_WIN32_WINNT >= 0x400) */ ++/ diff --git a/src/core/sys/windows/winerror.d b/src/core/sys/windows/winerror.d index aa9652b975..c84643ab2a 100644 --- a/src/core/sys/windows/winerror.d +++ b/src/core/sys/windows/winerror.d @@ -1,2309 +1,2309 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winerror.d) - */ -module core.sys.windows.winerror; - -/* Comments from the Mingw header: - * WAIT_TIMEOUT is also defined in winbase.h - */ - -private import core.sys.windows.windef; - -alias int SCODE; // was in core.sys.windows.wtypes. - -enum : uint { - ERROR_SUCCESS = 0, - NO_ERROR = 0, - ERROR_INVALID_FUNCTION, - ERROR_FILE_NOT_FOUND, - ERROR_PATH_NOT_FOUND, - ERROR_TOO_MANY_OPEN_FILES, - ERROR_ACCESS_DENIED, - ERROR_INVALID_HANDLE, - ERROR_ARENA_TRASHED, - ERROR_NOT_ENOUGH_MEMORY, - ERROR_INVALID_BLOCK, - ERROR_BAD_ENVIRONMENT, - ERROR_BAD_FORMAT, - ERROR_INVALID_ACCESS, - ERROR_INVALID_DATA, - ERROR_OUTOFMEMORY, - ERROR_INVALID_DRIVE, - ERROR_CURRENT_DIRECTORY, - ERROR_NOT_SAME_DEVICE, - ERROR_NO_MORE_FILES, - ERROR_WRITE_PROTECT, - ERROR_BAD_UNIT, - ERROR_NOT_READY, - ERROR_BAD_COMMAND, - ERROR_CRC, - ERROR_BAD_LENGTH, - ERROR_SEEK, - ERROR_NOT_DOS_DISK, - ERROR_SECTOR_NOT_FOUND, - ERROR_OUT_OF_PAPER, - ERROR_WRITE_FAULT, - ERROR_READ_FAULT, - ERROR_GEN_FAILURE, - ERROR_SHARING_VIOLATION, - ERROR_LOCK_VIOLATION, - ERROR_WRONG_DISK, // = 34 - ERROR_SHARING_BUFFER_EXCEEDED = 36, - ERROR_HANDLE_EOF = 38, - ERROR_HANDLE_DISK_FULL, // = 39 - ERROR_NOT_SUPPORTED = 50, - ERROR_REM_NOT_LIST, - ERROR_DUP_NAME, - ERROR_BAD_NETPATH, - ERROR_NETWORK_BUSY, - ERROR_DEV_NOT_EXIST, - ERROR_TOO_MANY_CMDS, - ERROR_ADAP_HDW_ERR, - ERROR_BAD_NET_RESP, - ERROR_UNEXP_NET_ERR, - ERROR_BAD_REM_ADAP, - ERROR_PRINTQ_FULL, - ERROR_NO_SPOOL_SPACE, - ERROR_PRINT_CANCELLED, - ERROR_NETNAME_DELETED, - ERROR_NETWORK_ACCESS_DENIED, - ERROR_BAD_DEV_TYPE, - ERROR_BAD_NET_NAME, - ERROR_TOO_MANY_NAMES, - ERROR_TOO_MANY_SESS, - ERROR_SHARING_PAUSED, - ERROR_REQ_NOT_ACCEP, - ERROR_REDIR_PAUSED, // = 72 - ERROR_FILE_EXISTS = 80, - ERROR_CANNOT_MAKE = 82, - ERROR_FAIL_I24, - ERROR_OUT_OF_STRUCTURES, - ERROR_ALREADY_ASSIGNED, - ERROR_INVALID_PASSWORD, - ERROR_INVALID_PARAMETER, - ERROR_NET_WRITE_FAULT, - ERROR_NO_PROC_SLOTS, // = 89 - ERROR_TOO_MANY_SEMAPHORES = 100, - ERROR_EXCL_SEM_ALREADY_OWNED, - ERROR_SEM_IS_SET, - ERROR_TOO_MANY_SEM_REQUESTS, - ERROR_INVALID_AT_INTERRUPT_TIME, - ERROR_SEM_OWNER_DIED, - ERROR_SEM_USER_LIMIT, - ERROR_DISK_CHANGE, - ERROR_DRIVE_LOCKED, - ERROR_BROKEN_PIPE, - ERROR_OPEN_FAILED, - ERROR_BUFFER_OVERFLOW, - ERROR_DISK_FULL, - ERROR_NO_MORE_SEARCH_HANDLES, - ERROR_INVALID_TARGET_HANDLE, // = 114 - ERROR_INVALID_CATEGORY = 117, - ERROR_INVALID_VERIFY_SWITCH, - ERROR_BAD_DRIVER_LEVEL, - ERROR_CALL_NOT_IMPLEMENTED, - ERROR_SEM_TIMEOUT, - ERROR_INSUFFICIENT_BUFFER, - ERROR_INVALID_NAME, - ERROR_INVALID_LEVEL, - ERROR_NO_VOLUME_LABEL, - ERROR_MOD_NOT_FOUND, - ERROR_PROC_NOT_FOUND, - ERROR_WAIT_NO_CHILDREN, - ERROR_CHILD_NOT_COMPLETE, - ERROR_DIRECT_ACCESS_HANDLE, - ERROR_NEGATIVE_SEEK, - ERROR_SEEK_ON_DEVICE, - ERROR_IS_JOIN_TARGET, - ERROR_IS_JOINED, - ERROR_IS_SUBSTED, - ERROR_NOT_JOINED, - ERROR_NOT_SUBSTED, - ERROR_JOIN_TO_JOIN, - ERROR_SUBST_TO_SUBST, - ERROR_JOIN_TO_SUBST, - ERROR_SUBST_TO_JOIN, - ERROR_BUSY_DRIVE, - ERROR_SAME_DRIVE, - ERROR_DIR_NOT_ROOT, - ERROR_DIR_NOT_EMPTY, - ERROR_IS_SUBST_PATH, - ERROR_IS_JOIN_PATH, - ERROR_PATH_BUSY, - ERROR_IS_SUBST_TARGET, - ERROR_SYSTEM_TRACE, - ERROR_INVALID_EVENT_COUNT, - ERROR_TOO_MANY_MUXWAITERS, - ERROR_INVALID_LIST_FORMAT, - ERROR_LABEL_TOO_LONG, - ERROR_TOO_MANY_TCBS, - ERROR_SIGNAL_REFUSED, - ERROR_DISCARDED, - ERROR_NOT_LOCKED, - ERROR_BAD_THREADID_ADDR, - ERROR_BAD_ARGUMENTS, - ERROR_BAD_PATHNAME, - ERROR_SIGNAL_PENDING, // = 162 - ERROR_MAX_THRDS_REACHED = 164, - ERROR_LOCK_FAILED = 167, - ERROR_BUSY = 170, - ERROR_CANCEL_VIOLATION = 173, - ERROR_ATOMIC_LOCKS_NOT_SUPPORTED, // = 174 - ERROR_INVALID_SEGMENT_NUMBER = 180, - ERROR_INVALID_ORDINAL = 182, - ERROR_ALREADY_EXISTS, // = 183 - ERROR_INVALID_FLAG_NUMBER = 186, - ERROR_SEM_NOT_FOUND, - ERROR_INVALID_STARTING_CODESEG, - ERROR_INVALID_STACKSEG, - ERROR_INVALID_MODULETYPE, - ERROR_INVALID_EXE_SIGNATURE, - ERROR_EXE_MARKED_INVALID, - ERROR_BAD_EXE_FORMAT, - ERROR_ITERATED_DATA_EXCEEDS_64k, - ERROR_INVALID_MINALLOCSIZE, - ERROR_DYNLINK_FROM_INVALID_RING, - ERROR_IOPL_NOT_ENABLED, - ERROR_INVALID_SEGDPL, - ERROR_AUTODATASEG_EXCEEDS_64k, - ERROR_RING2SEG_MUST_BE_MOVABLE, - ERROR_RELOC_CHAIN_XEEDS_SEGLIM, - ERROR_INFLOOP_IN_RELOC_CHAIN, - ERROR_ENVVAR_NOT_FOUND, // = 203 - ERROR_NO_SIGNAL_SENT = 205, - ERROR_FILENAME_EXCED_RANGE, - ERROR_RING2_STACK_IN_USE, - ERROR_META_EXPANSION_TOO_LONG, - ERROR_INVALID_SIGNAL_NUMBER, - ERROR_THREAD_1_INACTIVE, // = 210 - ERROR_LOCKED = 212, - ERROR_TOO_MANY_MODULES = 214, - ERROR_NESTING_NOT_ALLOWED, - ERROR_EXE_MACHINE_TYPE_MISMATCH, - ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY, - ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY, // = 218 - ERROR_BAD_PIPE = 230, - ERROR_PIPE_BUSY, - ERROR_NO_DATA, - ERROR_PIPE_NOT_CONNECTED, - ERROR_MORE_DATA, // = 234 - ERROR_VC_DISCONNECTED = 240, - ERROR_INVALID_EA_NAME = 254, - ERROR_EA_LIST_INCONSISTENT, // = 255 - WAIT_TIMEOUT = 258, - ERROR_NO_MORE_ITEMS, // = 259 - ERROR_CANNOT_COPY = 266, - ERROR_DIRECTORY, // = 267 - ERROR_EAS_DIDNT_FIT = 275, - ERROR_EA_FILE_CORRUPT, - ERROR_EA_TABLE_FULL, - ERROR_INVALID_EA_HANDLE, // = 278 - ERROR_EAS_NOT_SUPPORTED = 282, - ERROR_NOT_OWNER = 288, - ERROR_TOO_MANY_POSTS = 298, - ERROR_PARTIAL_COPY, - ERROR_OPLOCK_NOT_GRANTED, - ERROR_INVALID_OPLOCK_PROTOCOL, - ERROR_DISK_TOO_FRAGMENTED, - ERROR_DELETE_PENDING, // = 303 - ERROR_MR_MID_NOT_FOUND = 317, - ERROR_SCOPE_NOT_FOUND, // = 318 - ERROR_INVALID_ADDRESS = 487, - ERROR_ARITHMETIC_OVERFLOW = 534, - ERROR_PIPE_CONNECTED, - ERROR_PIPE_LISTENING, // = 536 - ERROR_EA_ACCESS_DENIED = 994, - ERROR_OPERATION_ABORTED, - ERROR_IO_INCOMPLETE, - ERROR_IO_PENDING, - ERROR_NOACCESS, - ERROR_SWAPERROR, // = 999 - ERROR_STACK_OVERFLOW = 1001, - ERROR_INVALID_MESSAGE, - ERROR_CAN_NOT_COMPLETE, - ERROR_INVALID_FLAGS, - ERROR_UNRECOGNIZED_VOLUME, - ERROR_FILE_INVALID, - ERROR_FULLSCREEN_MODE, - ERROR_NO_TOKEN, - ERROR_BADDB, - ERROR_BADKEY, - ERROR_CANTOPEN, - ERROR_CANTREAD, - ERROR_CANTWRITE, - ERROR_REGISTRY_RECOVERED, - ERROR_REGISTRY_CORRUPT, - ERROR_REGISTRY_IO_FAILED, - ERROR_NOT_REGISTRY_FILE, - ERROR_KEY_DELETED, - ERROR_NO_LOG_SPACE, - ERROR_KEY_HAS_CHILDREN, - ERROR_CHILD_MUST_BE_VOLATILE, - ERROR_NOTIFY_ENUM_DIR, // = 1022 - ERROR_DEPENDENT_SERVICES_RUNNING = 1051, - ERROR_INVALID_SERVICE_CONTROL, - ERROR_SERVICE_REQUEST_TIMEOUT, - ERROR_SERVICE_NO_THREAD, - ERROR_SERVICE_DATABASE_LOCKED, - ERROR_SERVICE_ALREADY_RUNNING, - ERROR_INVALID_SERVICE_ACCOUNT, - ERROR_SERVICE_DISABLED, - ERROR_CIRCULAR_DEPENDENCY, - ERROR_SERVICE_DOES_NOT_EXIST, - ERROR_SERVICE_CANNOT_ACCEPT_CTRL, - ERROR_SERVICE_NOT_ACTIVE, - ERROR_FAILED_SERVICE_CONTROLLER_CONNECT, - ERROR_EXCEPTION_IN_SERVICE, - ERROR_DATABASE_DOES_NOT_EXIST, - ERROR_SERVICE_SPECIFIC_ERROR, - ERROR_PROCESS_ABORTED, - ERROR_SERVICE_DEPENDENCY_FAIL, - ERROR_SERVICE_LOGON_FAILED, - ERROR_SERVICE_START_HANG, - ERROR_INVALID_SERVICE_LOCK, - ERROR_SERVICE_MARKED_FOR_DELETE, - ERROR_SERVICE_EXISTS, - ERROR_ALREADY_RUNNING_LKG, - ERROR_SERVICE_DEPENDENCY_DELETED, - ERROR_BOOT_ALREADY_ACCEPTED, - ERROR_SERVICE_NEVER_STARTED, - ERROR_DUPLICATE_SERVICE_NAME, - ERROR_DIFFERENT_SERVICE_ACCOUNT, - ERROR_CANNOT_DETECT_DRIVER_FAILURE, - ERROR_CANNOT_DETECT_PROCESS_ABORT, - ERROR_NO_RECOVERY_PROGRAM, - ERROR_SERVICE_NOT_IN_EXE, - ERROR_NOT_SAFEBOOT_SERVICE, // = 1084 - ERROR_END_OF_MEDIA = 1100, - ERROR_FILEMARK_DETECTED, - ERROR_BEGINNING_OF_MEDIA, - ERROR_SETMARK_DETECTED, - ERROR_NO_DATA_DETECTED, - ERROR_PARTITION_FAILURE, - ERROR_INVALID_BLOCK_LENGTH, - ERROR_DEVICE_NOT_PARTITIONED, - ERROR_UNABLE_TO_LOCK_MEDIA, - ERROR_UNABLE_TO_UNLOAD_MEDIA, - ERROR_MEDIA_CHANGED, - ERROR_BUS_RESET, - ERROR_NO_MEDIA_IN_DRIVE, - ERROR_NO_UNICODE_TRANSLATION, - ERROR_DLL_INIT_FAILED, - ERROR_SHUTDOWN_IN_PROGRESS, - ERROR_NO_SHUTDOWN_IN_PROGRESS, - ERROR_IO_DEVICE, - ERROR_SERIAL_NO_DEVICE, - ERROR_IRQ_BUSY, - ERROR_MORE_WRITES, - ERROR_COUNTER_TIMEOUT, - ERROR_FLOPPY_ID_MARK_NOT_FOUND, - ERROR_FLOPPY_WRONG_CYLINDER, - ERROR_FLOPPY_UNKNOWN_ERROR, - ERROR_FLOPPY_BAD_REGISTERS, - ERROR_DISK_RECALIBRATE_FAILED, - ERROR_DISK_OPERATION_FAILED, - ERROR_DISK_RESET_FAILED, - ERROR_EOM_OVERFLOW, - ERROR_NOT_ENOUGH_SERVER_MEMORY, - ERROR_POSSIBLE_DEADLOCK, - ERROR_MAPPED_ALIGNMENT, // = 1132 - ERROR_SET_POWER_STATE_VETOED = 1140, - ERROR_SET_POWER_STATE_FAILED, - ERROR_TOO_MANY_LINKS, // = 1142 - ERROR_OLD_WIN_VERSION = 1150, - ERROR_APP_WRONG_OS, - ERROR_SINGLE_INSTANCE_APP, - ERROR_RMODE_APP, - ERROR_INVALID_DLL, - ERROR_NO_ASSOCIATION, - ERROR_DDE_FAIL, - ERROR_DLL_NOT_FOUND, - ERROR_NO_MORE_USER_HANDLES, - ERROR_MESSAGE_SYNC_ONLY, - ERROR_SOURCE_ELEMENT_EMPTY, - ERROR_DESTINATION_ELEMENT_FULL, - ERROR_ILLEGAL_ELEMENT_ADDRESS, - ERROR_MAGAZINE_NOT_PRESENT, - ERROR_DEVICE_REINITIALIZATION_NEEDED, - ERROR_DEVICE_REQUIRES_CLEANING, - ERROR_DEVICE_DOOR_OPEN, - ERROR_DEVICE_NOT_CONNECTED, - ERROR_NOT_FOUND, - ERROR_NO_MATCH, - ERROR_SET_NOT_FOUND, - ERROR_POINT_NOT_FOUND, - ERROR_NO_TRACKING_SERVICE, - ERROR_NO_VOLUME_ID, // = 1173 - ERROR_UNABLE_TO_REMOVE_REPLACED = 1175, - ERROR_UNABLE_TO_MOVE_REPLACEMENT, - ERROR_UNABLE_TO_MOVE_REPLACEMENT_2, - ERROR_JOURNAL_DELETE_IN_PROGRESS, - ERROR_JOURNAL_NOT_ACTIVE, - ERROR_POTENTIAL_FILE_FOUND, - ERROR_JOURNAL_ENTRY_DELETED, // = 1181 - ERROR_BAD_DEVICE = 1200, - ERROR_CONNECTION_UNAVAIL, - ERROR_DEVICE_ALREADY_REMEMBERED, - ERROR_NO_NET_OR_BAD_PATH, - ERROR_BAD_PROVIDER, - ERROR_CANNOT_OPEN_PROFILE, - ERROR_BAD_PROFILE, - ERROR_NOT_CONTAINER, - ERROR_EXTENDED_ERROR, - ERROR_INVALID_GROUPNAME, - ERROR_INVALID_COMPUTERNAME, - ERROR_INVALID_EVENTNAME, - ERROR_INVALID_DOMAINNAME, - ERROR_INVALID_SERVICENAME, - ERROR_INVALID_NETNAME, - ERROR_INVALID_SHARENAME, - ERROR_INVALID_PASSWORDNAME, - ERROR_INVALID_MESSAGENAME, - ERROR_INVALID_MESSAGEDEST, - ERROR_SESSION_CREDENTIAL_CONFLICT, - ERROR_REMOTE_SESSION_LIMIT_EXCEEDED, - ERROR_DUP_DOMAINNAME, - ERROR_NO_NETWORK, - ERROR_CANCELLED, - ERROR_USER_MAPPED_FILE, - ERROR_CONNECTION_REFUSED, - ERROR_GRACEFUL_DISCONNECT, - ERROR_ADDRESS_ALREADY_ASSOCIATED, - ERROR_ADDRESS_NOT_ASSOCIATED, - ERROR_CONNECTION_INVALID, - ERROR_CONNECTION_ACTIVE, - ERROR_NETWORK_UNREACHABLE, - ERROR_HOST_UNREACHABLE, - ERROR_PROTOCOL_UNREACHABLE, - ERROR_PORT_UNREACHABLE, - ERROR_REQUEST_ABORTED, - ERROR_CONNECTION_ABORTED, - ERROR_RETRY, - ERROR_CONNECTION_COUNT_LIMIT, - ERROR_LOGIN_TIME_RESTRICTION, - ERROR_LOGIN_WKSTA_RESTRICTION, - ERROR_INCORRECT_ADDRESS, - ERROR_ALREADY_REGISTERED, - ERROR_SERVICE_NOT_FOUND, - ERROR_NOT_AUTHENTICATED, - ERROR_NOT_LOGGED_ON, - ERROR_CONTINUE, - ERROR_ALREADY_INITIALIZED, - ERROR_NO_MORE_DEVICES, - ERROR_NO_SUCH_SITE, - ERROR_DOMAIN_CONTROLLER_EXISTS, - ERROR_ONLY_IF_CONNECTED, - ERROR_OVERRIDE_NOCHANGES, - ERROR_BAD_USER_PROFILE, - ERROR_NOT_SUPPORTED_ON_SBS, - ERROR_SERVER_SHUTDOWN_IN_PROGRESS, - ERROR_HOST_DOWN, - ERROR_NON_ACCOUNT_SID, - ERROR_NON_DOMAIN_SID, - ERROR_APPHELP_BLOCK, - ERROR_ACCESS_DISABLED_BY_POLICY, - ERROR_REG_NAT_CONSUMPTION, - ERROR_CSCSHARE_OFFLINE, - ERROR_PKINIT_FAILURE, - ERROR_SMARTCARD_SUBSYSTEM_FAILURE, - ERROR_DOWNGRADE_DETECTED, - SEC_E_SMARTCARD_CERT_REVOKED, - SEC_E_ISSUING_CA_UNTRUSTED, - SEC_E_REVOCATION_OFFLINE_C, - SEC_E_PKINIT_CLIENT_FAILUR, - SEC_E_SMARTCARD_CERT_EXPIRED, - ERROR_MACHINE_LOCKED, // = 1271 - ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273, - ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED, - ERROR_DRIVER_BLOCKED, - ERROR_INVALID_IMPORT_OF_NON_DLL, - ERROR_ACCESS_DISABLED_WEBBLADE, - ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER, - ERROR_RECOVERY_FAILURE, - ERROR_ALREADY_FIBER, - ERROR_ALREADY_THREAD, - ERROR_STACK_BUFFER_OVERRUN, - ERROR_PARAMETER_QUOTA_EXCEEDED, - ERROR_DEBUGGER_INACTIVE, // = 1284 - ERROR_NOT_ALL_ASSIGNED = 1300, - ERROR_SOME_NOT_MAPPED, - ERROR_NO_QUOTAS_FOR_ACCOUNT, - ERROR_LOCAL_USER_SESSION_KEY, - ERROR_NULL_LM_PASSWORD, - ERROR_UNKNOWN_REVISION, - ERROR_REVISION_MISMATCH, - ERROR_INVALID_OWNER, - ERROR_INVALID_PRIMARY_GROUP, - ERROR_NO_IMPERSONATION_TOKEN, - ERROR_CANT_DISABLE_MANDATORY, - ERROR_NO_LOGON_SERVERS, - ERROR_NO_SUCH_LOGON_SESSION, - ERROR_NO_SUCH_PRIVILEGE, - ERROR_PRIVILEGE_NOT_HELD, - ERROR_INVALID_ACCOUNT_NAME, - ERROR_USER_EXISTS, - ERROR_NO_SUCH_USER, - ERROR_GROUP_EXISTS, - ERROR_NO_SUCH_GROUP, - ERROR_MEMBER_IN_GROUP, - ERROR_MEMBER_NOT_IN_GROUP, - ERROR_LAST_ADMIN, - ERROR_WRONG_PASSWORD, - ERROR_ILL_FORMED_PASSWORD, - ERROR_PASSWORD_RESTRICTION, - ERROR_LOGON_FAILURE, - ERROR_ACCOUNT_RESTRICTION, - ERROR_INVALID_LOGON_HOURS, - ERROR_INVALID_WORKSTATION, - ERROR_PASSWORD_EXPIRED, - ERROR_ACCOUNT_DISABLED, - ERROR_NONE_MAPPED, - ERROR_TOO_MANY_LUIDS_REQUESTED, - ERROR_LUIDS_EXHAUSTED, - ERROR_INVALID_SUB_AUTHORITY, - ERROR_INVALID_ACL, - ERROR_INVALID_SID, - ERROR_INVALID_SECURITY_DESCR, // = 1338 - ERROR_BAD_INHERITANCE_ACL = 1340, - ERROR_SERVER_DISABLED, - ERROR_SERVER_NOT_DISABLED, - ERROR_INVALID_ID_AUTHORITY, - ERROR_ALLOTTED_SPACE_EXCEEDED, - ERROR_INVALID_GROUP_ATTRIBUTES, - ERROR_BAD_IMPERSONATION_LEVEL, - ERROR_CANT_OPEN_ANONYMOUS, - ERROR_BAD_VALIDATION_CLASS, - ERROR_BAD_TOKEN_TYPE, - ERROR_NO_SECURITY_ON_OBJECT, - ERROR_CANT_ACCESS_DOMAIN_INFO, - ERROR_INVALID_SERVER_STATE, - ERROR_INVALID_DOMAIN_STATE, - ERROR_INVALID_DOMAIN_ROLE, - ERROR_NO_SUCH_DOMAIN, - ERROR_DOMAIN_EXISTS, - ERROR_DOMAIN_LIMIT_EXCEEDED, - ERROR_INTERNAL_DB_CORRUPTION, - ERROR_INTERNAL_ERROR, - ERROR_GENERIC_NOT_MAPPED, - ERROR_BAD_DESCRIPTOR_FORMAT, - ERROR_NOT_LOGON_PROCESS, - ERROR_LOGON_SESSION_EXISTS, - ERROR_NO_SUCH_PACKAGE, - ERROR_BAD_LOGON_SESSION_STATE, - ERROR_LOGON_SESSION_COLLISION, - ERROR_INVALID_LOGON_TYPE, - ERROR_CANNOT_IMPERSONATE, - ERROR_RXACT_INVALID_STATE, - ERROR_RXACT_COMMIT_FAILURE, - ERROR_SPECIAL_ACCOUNT, - ERROR_SPECIAL_GROUP, - ERROR_SPECIAL_USER, - ERROR_MEMBERS_PRIMARY_GROUP, - ERROR_TOKEN_ALREADY_IN_USE, - ERROR_NO_SUCH_ALIAS, - ERROR_MEMBER_NOT_IN_ALIAS, - ERROR_MEMBER_IN_ALIAS, - ERROR_ALIAS_EXISTS, - ERROR_LOGON_NOT_GRANTED, - ERROR_TOO_MANY_SECRETS, - ERROR_SECRET_TOO_LONG, - ERROR_INTERNAL_DB_ERROR, - ERROR_TOO_MANY_CONTEXT_IDS, - ERROR_LOGON_TYPE_NOT_GRANTED, - ERROR_NT_CROSS_ENCRYPTION_REQUIRED, - ERROR_NO_SUCH_MEMBER, - ERROR_INVALID_MEMBER, - ERROR_TOO_MANY_SIDS, - ERROR_LM_CROSS_ENCRYPTION_REQUIRED, - ERROR_NO_INHERITANCE, - ERROR_FILE_CORRUPT, - ERROR_DISK_CORRUPT, - ERROR_NO_USER_SESSION_KEY, - ERROR_LICENSE_QUOTA_EXCEEDED, - ERROR_WRONG_TARGET_NAME, - ERROR_MUTUAL_AUTH_FAILED, - ERROR_TIME_SKEW, - ERROR_CURRENT_DOMAIN_NOT_ALLOWED, - ERROR_INVALID_WINDOW_HANDLE, - ERROR_INVALID_MENU_HANDLE, - ERROR_INVALID_CURSOR_HANDLE, - ERROR_INVALID_ACCEL_HANDLE, - ERROR_INVALID_HOOK_HANDLE, - ERROR_INVALID_DWP_HANDLE, - ERROR_TLW_WITH_WSCHILD, - ERROR_CANNOT_FIND_WND_CLASS, - ERROR_WINDOW_OF_OTHER_THREAD, - ERROR_HOTKEY_ALREADY_REGISTERED, - ERROR_CLASS_ALREADY_EXISTS, - ERROR_CLASS_DOES_NOT_EXIST, - ERROR_CLASS_HAS_WINDOWS, - ERROR_INVALID_INDEX, - ERROR_INVALID_ICON_HANDLE, - ERROR_PRIVATE_DIALOG_INDEX, - ERROR_LISTBOX_ID_NOT_FOUND, - ERROR_NO_WILDCARD_CHARACTERS, - ERROR_CLIPBOARD_NOT_OPEN, - ERROR_HOTKEY_NOT_REGISTERED, - ERROR_WINDOW_NOT_DIALOG, - ERROR_CONTROL_ID_NOT_FOUND, - ERROR_INVALID_COMBOBOX_MESSAGE, - ERROR_WINDOW_NOT_COMBOBOX, - ERROR_INVALID_EDIT_HEIGHT, - ERROR_DC_NOT_FOUND, - ERROR_INVALID_HOOK_FILTER, - ERROR_INVALID_FILTER_PROC, - ERROR_HOOK_NEEDS_HMOD, - ERROR_GLOBAL_ONLY_HOOK, - ERROR_JOURNAL_HOOK_SET, - ERROR_HOOK_NOT_INSTALLED, - ERROR_INVALID_LB_MESSAGE, - ERROR_SETCOUNT_ON_BAD_LB, - ERROR_LB_WITHOUT_TABSTOPS, - ERROR_DESTROY_OBJECT_OF_OTHER_THREAD, - ERROR_CHILD_WINDOW_MENU, - ERROR_NO_SYSTEM_MENU, - ERROR_INVALID_MSGBOX_STYLE, - ERROR_INVALID_SPI_VALUE, - ERROR_SCREEN_ALREADY_LOCKED, - ERROR_HWNDS_HAVE_DIFF_PARENT, - ERROR_NOT_CHILD_WINDOW, - ERROR_INVALID_GW_COMMAND, - ERROR_INVALID_THREAD_ID, - ERROR_NON_MDICHILD_WINDOW, - ERROR_POPUP_ALREADY_ACTIVE, - ERROR_NO_SCROLLBARS, - ERROR_INVALID_SCROLLBAR_RANGE, - ERROR_INVALID_SHOWWIN_COMMAND, - ERROR_NO_SYSTEM_RESOURCES, - ERROR_NONPAGED_SYSTEM_RESOURCES, - ERROR_PAGED_SYSTEM_RESOURCES, - ERROR_WORKING_SET_QUOTA, - ERROR_PAGEFILE_QUOTA, - ERROR_COMMITMENT_LIMIT, - ERROR_MENU_ITEM_NOT_FOUND, - ERROR_INVALID_KEYBOARD_HANDLE, - ERROR_HOOK_TYPE_NOT_ALLOWED, - ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION, - ERROR_TIMEOUT, - ERROR_INVALID_MONITOR_HANDLE, // = 1461 - ERROR_EVENTLOG_FILE_CORRUPT = 1500, - ERROR_EVENTLOG_CANT_START, - ERROR_LOG_FILE_FULL, - ERROR_EVENTLOG_FILE_CHANGED, // = 1503 - ERROR_INSTALL_SERVICE_FAILURE = 1601, - ERROR_INSTALL_USEREXIT, - ERROR_INSTALL_FAILURE, - ERROR_INSTALL_SUSPEND, - ERROR_UNKNOWN_PRODUCT, - ERROR_UNKNOWN_FEATURE, - ERROR_UNKNOWN_COMPONENT, - ERROR_UNKNOWN_PROPERTY, - ERROR_INVALID_HANDLE_STATE, - ERROR_BAD_CONFIGURATION, - ERROR_INDEX_ABSENT, - ERROR_INSTALL_SOURCE_ABSENT, - ERROR_INSTALL_PACKAGE_VERSION, - ERROR_PRODUCT_UNINSTALLED, - ERROR_BAD_QUERY_SYNTAX, - ERROR_INVALID_FIELD, - ERROR_DEVICE_REMOVED, - ERROR_INSTALL_ALREADY_RUNNING, - ERROR_INSTALL_PACKAGE_OPEN_FAILED, - ERROR_INSTALL_PACKAGE_INVALID, - ERROR_INSTALL_UI_FAILURE, - ERROR_INSTALL_LOG_FAILURE, - ERROR_INSTALL_LANGUAGE_UNSUPPORTED, - ERROR_INSTALL_TRANSFORM_FAILURE, - ERROR_INSTALL_PACKAGE_REJECTED, - ERROR_FUNCTION_NOT_CALLED, - ERROR_FUNCTION_FAILED, - ERROR_INVALID_TABLE, - ERROR_DATATYPE_MISMATCH, - ERROR_UNSUPPORTED_TYPE, - ERROR_CREATE_FAILED, - ERROR_INSTALL_TEMP_UNWRITABLE, - ERROR_INSTALL_PLATFORM_UNSUPPORTED, - ERROR_INSTALL_NOTUSED, - ERROR_PATCH_PACKAGE_OPEN_FAILED, - ERROR_PATCH_PACKAGE_INVALID, - ERROR_PATCH_PACKAGE_UNSUPPORTED, - ERROR_PRODUCT_VERSION, - ERROR_INVALID_COMMAND_LINE, - ERROR_INSTALL_REMOTE_DISALLOWED, - ERROR_SUCCESS_REBOOT_INITIATED, - ERROR_PATCH_TARGET_NOT_FOUND, - ERROR_PATCH_PACKAGE_REJECTED, - ERROR_INSTALL_TRANSFORM_REJECTED, - ERROR_INSTALL_REMOTE_PROHIBITED, // = 1645 - RPC_S_INVALID_STRING_BINDING = 1700, - RPC_S_WRONG_KIND_OF_BINDING, - RPC_S_INVALID_BINDING, - RPC_S_PROTSEQ_NOT_SUPPORTED, - RPC_S_INVALID_RPC_PROTSEQ, - RPC_S_INVALID_STRING_UUID, - RPC_S_INVALID_ENDPOINT_FORMAT, - RPC_S_INVALID_NET_ADDR, - RPC_S_NO_ENDPOINT_FOUND, - RPC_S_INVALID_TIMEOUT, - RPC_S_OBJECT_NOT_FOUND, - RPC_S_ALREADY_REGISTERED, - RPC_S_TYPE_ALREADY_REGISTERED, - RPC_S_ALREADY_LISTENING, - RPC_S_NO_PROTSEQS_REGISTERED, - RPC_S_NOT_LISTENING, - RPC_S_UNKNOWN_MGR_TYPE, - RPC_S_UNKNOWN_IF, - RPC_S_NO_BINDINGS, - RPC_S_NO_PROTSEQS, - RPC_S_CANT_CREATE_ENDPOINT, - RPC_S_OUT_OF_RESOURCES, - RPC_S_SERVER_UNAVAILABLE, - RPC_S_SERVER_TOO_BUSY, - RPC_S_INVALID_NETWORK_OPTIONS, - RPC_S_NO_CALL_ACTIVE, - RPC_S_CALL_FAILED, - RPC_S_CALL_FAILED_DNE, - RPC_S_PROTOCOL_ERROR, // = 1728 - RPC_S_UNSUPPORTED_TRANS_SYN = 1730, - RPC_S_UNSUPPORTED_TYPE = 1732, - RPC_S_INVALID_TAG, - RPC_S_INVALID_BOUND, - RPC_S_NO_ENTRY_NAME, - RPC_S_INVALID_NAME_SYNTAX, - RPC_S_UNSUPPORTED_NAME_SYNTAX, // = 1737 - RPC_S_UUID_NO_ADDRESS = 1739, - RPC_S_DUPLICATE_ENDPOINT, - RPC_S_UNKNOWN_AUTHN_TYPE, - RPC_S_MAX_CALLS_TOO_SMALL, - RPC_S_STRING_TOO_LONG, - RPC_S_PROTSEQ_NOT_FOUND, - RPC_S_PROCNUM_OUT_OF_RANGE, - RPC_S_BINDING_HAS_NO_AUTH, - RPC_S_UNKNOWN_AUTHN_SERVICE, - RPC_S_UNKNOWN_AUTHN_LEVEL, - RPC_S_INVALID_AUTH_IDENTITY, - RPC_S_UNKNOWN_AUTHZ_SERVICE, - EPT_S_INVALID_ENTRY, - EPT_S_CANT_PERFORM_OP, - EPT_S_NOT_REGISTERED, - RPC_S_NOTHING_TO_EXPORT, - RPC_S_INCOMPLETE_NAME, - RPC_S_INVALID_VERS_OPTION, - RPC_S_NO_MORE_MEMBERS, - RPC_S_NOT_ALL_OBJS_UNEXPORTED, - RPC_S_INTERFACE_NOT_FOUND, - RPC_S_ENTRY_ALREADY_EXISTS, - RPC_S_ENTRY_NOT_FOUND, - RPC_S_NAME_SERVICE_UNAVAILABLE, - RPC_S_INVALID_NAF_ID, - RPC_S_CANNOT_SUPPORT, - RPC_S_NO_CONTEXT_AVAILABLE, - RPC_S_INTERNAL_ERROR, - RPC_S_ZERO_DIVIDE, - RPC_S_ADDRESS_ERROR, - RPC_S_FP_DIV_ZERO, - RPC_S_FP_UNDERFLOW, - RPC_S_FP_OVERFLOW, - RPC_X_NO_MORE_ENTRIES, - RPC_X_SS_CHAR_TRANS_OPEN_FAIL, - RPC_X_SS_CHAR_TRANS_SHORT_FILE, - RPC_X_SS_IN_NULL_CONTEXT, // = 1775 - RPC_X_SS_CONTEXT_DAMAGED = 1777, - RPC_X_SS_HANDLES_MISMATCH, - RPC_X_SS_CANNOT_GET_CALL_HANDLE, - RPC_X_NULL_REF_POINTER, - RPC_X_ENUM_VALUE_OUT_OF_RANGE, - RPC_X_BYTE_COUNT_TOO_SMALL, - RPC_X_BAD_STUB_DATA, - ERROR_INVALID_USER_BUFFER, - ERROR_UNRECOGNIZED_MEDIA, - ERROR_NO_TRUST_LSA_SECRET, - ERROR_NO_TRUST_SAM_ACCOUNT, - ERROR_TRUSTED_DOMAIN_FAILURE, - ERROR_TRUSTED_RELATIONSHIP_FAILURE, - ERROR_TRUST_FAILURE, - RPC_S_CALL_IN_PROGRESS, - ERROR_NETLOGON_NOT_STARTED, - ERROR_ACCOUNT_EXPIRED, - ERROR_REDIRECTOR_HAS_OPEN_HANDLES, - ERROR_PRINTER_DRIVER_ALREADY_INSTALLED, - ERROR_UNKNOWN_PORT, - ERROR_UNKNOWN_PRINTER_DRIVER, - ERROR_UNKNOWN_PRINTPROCESSOR, - ERROR_INVALID_SEPARATOR_FILE, - ERROR_INVALID_PRIORITY, - ERROR_INVALID_PRINTER_NAME, - ERROR_PRINTER_ALREADY_EXISTS, - ERROR_INVALID_PRINTER_COMMAND, - ERROR_INVALID_DATATYPE, - ERROR_INVALID_ENVIRONMENT, - RPC_S_NO_MORE_BINDINGS, - ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, - ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT, - ERROR_NOLOGON_SERVER_TRUST_ACCOUNT, - ERROR_DOMAIN_TRUST_INCONSISTENT, - ERROR_SERVER_HAS_OPEN_HANDLES, - ERROR_RESOURCE_DATA_NOT_FOUND, - ERROR_RESOURCE_TYPE_NOT_FOUND, - ERROR_RESOURCE_NAME_NOT_FOUND, - ERROR_RESOURCE_LANG_NOT_FOUND, - ERROR_NOT_ENOUGH_QUOTA, - RPC_S_NO_INTERFACES, - RPC_S_CALL_CANCELLED, - RPC_S_BINDING_INCOMPLETE, - RPC_S_COMM_FAILURE, - RPC_S_UNSUPPORTED_AUTHN_LEVEL, - RPC_S_NO_PRINC_NAME, - RPC_S_NOT_RPC_ERROR, - RPC_S_UUID_LOCAL_ONLY, - RPC_S_SEC_PKG_ERROR, - RPC_S_NOT_CANCELLED, - RPC_X_INVALID_ES_ACTION, - RPC_X_WRONG_ES_VERSION, - RPC_X_WRONG_STUB_VERSION, - RPC_X_INVALID_PIPE_OBJECT, - RPC_X_WRONG_PIPE_ORDER, - RPC_X_WRONG_PIPE_VERSION, // = 1832 - RPC_S_GROUP_MEMBER_NOT_FOUND = 1898, - EPT_S_CANT_CREATE, - RPC_S_INVALID_OBJECT, - ERROR_INVALID_TIME, - ERROR_INVALID_FORM_NAME, - ERROR_INVALID_FORM_SIZE, - ERROR_ALREADY_WAITING, - ERROR_PRINTER_DELETED, - ERROR_INVALID_PRINTER_STATE, - ERROR_PASSWORD_MUST_CHANGE, - ERROR_DOMAIN_CONTROLLER_NOT_FOUND, - ERROR_ACCOUNT_LOCKED_OUT, - OR_INVALID_OXID, - OR_INVALID_OID, - OR_INVALID_SET, - RPC_S_SEND_INCOMPLETE, - RPC_S_INVALID_ASYNC_HANDLE, - RPC_S_INVALID_ASYNC_CALL, - RPC_X_PIPE_CLOSED, - RPC_X_PIPE_DISCIPLINE_ERROR, - RPC_X_PIPE_EMPTY, - ERROR_NO_SITENAME, - ERROR_CANT_ACCESS_FILE, - ERROR_CANT_RESOLVE_FILENAME, - RPC_S_ENTRY_TYPE_MISMATCH, - RPC_S_NOT_ALL_OBJS_EXPORTED, - RPC_S_INTERFACE_NOT_EXPORTED, - RPC_S_PROFILE_NOT_ADDED, - RPC_S_PRF_ELT_NOT_ADDED, - RPC_S_PRF_ELT_NOT_REMOVED, - RPC_S_GRP_ELT_NOT_ADDED, - RPC_S_GRP_ELT_NOT_REMOVED, - ERROR_KM_DRIVER_BLOCKED, - ERROR_CONTEXT_EXPIRED, - ERROR_PER_USER_TRUST_QUOTA_EXCEEDED, - ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED, - ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED, // = 1934 - ERROR_INVALID_PIXEL_FORMAT = 2000, - ERROR_BAD_DRIVER, - ERROR_INVALID_WINDOW_STYLE, - ERROR_METAFILE_NOT_SUPPORTED, - ERROR_TRANSFORM_NOT_SUPPORTED, - ERROR_CLIPPING_NOT_SUPPORTED, // = 2005 - ERROR_INVALID_CMM = 2010, - ERROR_INVALID_PROFILE, - ERROR_TAG_NOT_FOUND, - ERROR_TAG_NOT_PRESENT, - ERROR_DUPLICATE_TAG, - ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE, - ERROR_PROFILE_NOT_FOUND, - ERROR_INVALID_COLORSPACE, - ERROR_ICM_NOT_ENABLED, - ERROR_DELETING_ICM_XFORM, - ERROR_INVALID_TRANSFORM, - ERROR_COLORSPACE_MISMATCH, - ERROR_INVALID_COLORINDEX, // = 2022 - ERROR_CONNECTED_OTHER_PASSWORD = 2108, - ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT, // = 2109 - ERROR_BAD_USERNAME = 2202, - ERROR_NOT_CONNECTED = 2250, - ERROR_OPEN_FILES = 2401, - ERROR_ACTIVE_CONNECTIONS, // = 2402 - ERROR_DEVICE_IN_USE = 2404, - ERROR_UNKNOWN_PRINT_MONITOR = 3000, - ERROR_PRINTER_DRIVER_IN_USE, - ERROR_SPOOL_FILE_NOT_FOUND, - ERROR_SPL_NO_STARTDOC, - ERROR_SPL_NO_ADDJOB, - ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED, - ERROR_PRINT_MONITOR_ALREADY_INSTALLED, - ERROR_INVALID_PRINT_MONITOR, - ERROR_PRINT_MONITOR_IN_USE, - ERROR_PRINTER_HAS_JOBS_QUEUED, - ERROR_SUCCESS_REBOOT_REQUIRED, - ERROR_SUCCESS_RESTART_REQUIRED, - ERROR_PRINTER_NOT_FOUND, - ERROR_PRINTER_DRIVER_WARNED, - ERROR_PRINTER_DRIVER_BLOCKED, // = 3014 - ERROR_WINS_INTERNAL = 4000, - ERROR_CAN_NOT_DEL_LOCAL_WINS, - ERROR_STATIC_INIT, - ERROR_INC_BACKUP, - ERROR_FULL_BACKUP, - ERROR_REC_NON_EXISTENT, - ERROR_RPL_NOT_ALLOWED, // = 4006 - ERROR_DHCP_ADDRESS_CONFLICT = 4100, - ERROR_WMI_GUID_NOT_FOUND = 4200, - ERROR_WMI_INSTANCE_NOT_FOUND, - ERROR_WMI_ITEMID_NOT_FOUND, - ERROR_WMI_TRY_AGAIN, - ERROR_WMI_DP_NOT_FOUND, - ERROR_WMI_UNRESOLVED_INSTANCE_REF, - ERROR_WMI_ALREADY_ENABLED, - ERROR_WMI_GUID_DISCONNECTED, - ERROR_WMI_SERVER_UNAVAILABLE, - ERROR_WMI_DP_FAILED, - ERROR_WMI_INVALID_MOF, - ERROR_WMI_INVALID_REGINFO, - ERROR_WMI_ALREADY_DISABLED, - ERROR_WMI_READ_ONLY, - ERROR_WMI_SET_FAILURE, // = 4214 - ERROR_INVALID_MEDIA = 4300, - ERROR_INVALID_LIBRARY, - ERROR_INVALID_MEDIA_POOL, - ERROR_DRIVE_MEDIA_MISMATCH, - ERROR_MEDIA_OFFLINE, - ERROR_LIBRARY_OFFLINE, - ERROR_EMPTY, - ERROR_NOT_EMPTY, - ERROR_MEDIA_UNAVAILABLE, - ERROR_RESOURCE_DISABLED, - ERROR_INVALID_CLEANER, - ERROR_UNABLE_TO_CLEAN, - ERROR_OBJECT_NOT_FOUND, - ERROR_DATABASE_FAILURE, - ERROR_DATABASE_FULL, - ERROR_MEDIA_INCOMPATIBLE, - ERROR_RESOURCE_NOT_PRESENT, - ERROR_INVALID_OPERATION, - ERROR_MEDIA_NOT_AVAILABLE, - ERROR_DEVICE_NOT_AVAILABLE, - ERROR_REQUEST_REFUSED, - ERROR_INVALID_DRIVE_OBJECT, - ERROR_LIBRARY_FULL, - ERROR_MEDIUM_NOT_ACCESSIBLE, - ERROR_UNABLE_TO_LOAD_MEDIUM, - ERROR_UNABLE_TO_INVENTORY_DRIVE, - ERROR_UNABLE_TO_INVENTORY_SLOT, - ERROR_UNABLE_TO_INVENTORY_TRANSPORT, - ERROR_TRANSPORT_FULL, - ERROR_CONTROLLING_IEPORT, - ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA, - ERROR_CLEANER_SLOT_SET, - ERROR_CLEANER_SLOT_NOT_SET, - ERROR_CLEANER_CARTRIDGE_SPENT, - ERROR_UNEXPECTED_OMID, - ERROR_CANT_DELETE_LAST_ITEM, - ERROR_MESSAGE_EXCEEDS_MAX_SIZE, - ERROR_VOLUME_CONTAINS_SYS_FILES, - ERROR_INDIGENOUS_TYPE, - ERROR_NO_SUPPORTING_DRIVES, - ERROR_CLEANER_CARTRIDGE_INSTALLED, // = 4340 - ERROR_FILE_OFFLINE = 4350, - ERROR_REMOTE_STORAGE_NOT_ACTIVE, - ERROR_REMOTE_STORAGE_MEDIA_ERROR, // = 4352 - ERROR_NOT_A_REPARSE_POINT = 4390, - ERROR_REPARSE_ATTRIBUTE_CONFLICT, - ERROR_INVALID_REPARSE_DATA, - ERROR_REPARSE_TAG_INVALID, - ERROR_REPARSE_TAG_MISMATCH, // = 4394 - ERROR_VOLUME_NOT_SIS_ENABLED = 4500, - ERROR_DEPENDENT_RESOURCE_EXISTS = 5001, - ERROR_DEPENDENCY_NOT_FOUND, - ERROR_DEPENDENCY_ALREADY_EXISTS, - ERROR_RESOURCE_NOT_ONLINE, - ERROR_HOST_NODE_NOT_AVAILABLE, - ERROR_RESOURCE_NOT_AVAILABLE, - ERROR_RESOURCE_NOT_FOUND, - ERROR_SHUTDOWN_CLUSTER, - ERROR_CANT_EVICT_ACTIVE_NODE, - ERROR_OBJECT_ALREADY_EXISTS, - ERROR_OBJECT_IN_LIST, - ERROR_GROUP_NOT_AVAILABLE, - ERROR_GROUP_NOT_FOUND, - ERROR_GROUP_NOT_ONLINE, - ERROR_HOST_NODE_NOT_RESOURCE_OWNER, - ERROR_HOST_NODE_NOT_GROUP_OWNER, - ERROR_RESMON_CREATE_FAILED, - ERROR_RESMON_ONLINE_FAILED, - ERROR_RESOURCE_ONLINE, - ERROR_QUORUM_RESOURCE, - ERROR_NOT_QUORUM_CAPABLE, - ERROR_CLUSTER_SHUTTING_DOWN, - ERROR_INVALID_STATE, - ERROR_RESOURCE_PROPERTIES_STORED, - ERROR_NOT_QUORUM_CLASS, - ERROR_CORE_RESOURCE, - ERROR_QUORUM_RESOURCE_ONLINE_FAILED, - ERROR_QUORUMLOG_OPEN_FAILED, - ERROR_CLUSTERLOG_CORRUPT, - ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE, - ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE, - ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND, - ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE, - ERROR_QUORUM_OWNER_ALIVE, - ERROR_NETWORK_NOT_AVAILABLE, - ERROR_NODE_NOT_AVAILABLE, - ERROR_ALL_NODES_NOT_AVAILABLE, - ERROR_RESOURCE_FAILED, - ERROR_CLUSTER_INVALID_NODE, - ERROR_CLUSTER_NODE_EXISTS, - ERROR_CLUSTER_JOIN_IN_PROGRESS, - ERROR_CLUSTER_NODE_NOT_FOUND, - ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND, - ERROR_CLUSTER_NETWORK_EXISTS, - ERROR_CLUSTER_NETWORK_NOT_FOUND, - ERROR_CLUSTER_NETINTERFACE_EXISTS, - ERROR_CLUSTER_NETINTERFACE_NOT_FOUND, - ERROR_CLUSTER_INVALID_REQUEST, - ERROR_CLUSTER_INVALID_NETWORK_PROVIDER, - ERROR_CLUSTER_NODE_DOWN, - ERROR_CLUSTER_NODE_UNREACHABLE, - ERROR_CLUSTER_NODE_NOT_MEMBER, - ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS, - ERROR_CLUSTER_INVALID_NETWORK, // = 5054 - ERROR_CLUSTER_NODE_UP = 5056, - ERROR_CLUSTER_IPADDR_IN_USE, - ERROR_CLUSTER_NODE_NOT_PAUSED, - ERROR_CLUSTER_NO_SECURITY_CONTEXT, - ERROR_CLUSTER_NETWORK_NOT_INTERNAL, - ERROR_CLUSTER_NODE_ALREADY_UP, - ERROR_CLUSTER_NODE_ALREADY_DOWN, - ERROR_CLUSTER_NETWORK_ALREADY_ONLINE, - ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE, - ERROR_CLUSTER_NODE_ALREADY_MEMBER, - ERROR_CLUSTER_LAST_INTERNAL_NETWORK, - ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS, - ERROR_INVALID_OPERATION_ON_QUORUM, - ERROR_DEPENDENCY_NOT_ALLOWED, - ERROR_CLUSTER_NODE_PAUSED, - ERROR_NODE_CANT_HOST_RESOURCE, - ERROR_CLUSTER_NODE_NOT_READY, - ERROR_CLUSTER_NODE_SHUTTING_DOWN, - ERROR_CLUSTER_JOIN_ABORTED, - ERROR_CLUSTER_INCOMPATIBLE_VERSIONS, - ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED, - ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED, - ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND, - ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED, - ERROR_CLUSTER_RESNAME_NOT_FOUND, - ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED, - ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST, - ERROR_CLUSTER_DATABASE_SEQMISMATCH, - ERROR_RESMON_INVALID_STATE, - ERROR_CLUSTER_GUM_NOT_LOCKER, - ERROR_QUORUM_DISK_NOT_FOUND, - ERROR_DATABASE_BACKUP_CORRUPT, - ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT, - ERROR_RESOURCE_PROPERTY_UNCHANGEABLE, // = 5089 - ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890, - ERROR_CLUSTER_QUORUMLOG_NOT_FOUND, - ERROR_CLUSTER_MEMBERSHIP_HALT, - ERROR_CLUSTER_INSTANCE_ID_MISMATCH, - ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP, - ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH, - ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP, - ERROR_CLUSTER_PARAMETER_MISMATCH, - ERROR_NODE_CANNOT_BE_CLUSTERED, - ERROR_CLUSTER_WRONG_OS_VERSION, - ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME, - ERROR_CLUSCFG_ALREADY_COMMITTED, - ERROR_CLUSCFG_ROLLBACK_FAILED, - ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT, - ERROR_CLUSTER_OLD_VERSION, - ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME, // = 5905 - ERROR_ENCRYPTION_FAILED = 6000, - ERROR_DECRYPTION_FAILED, - ERROR_FILE_ENCRYPTED, - ERROR_NO_RECOVERY_POLICY, - ERROR_NO_EFS, - ERROR_WRONG_EFS, - ERROR_NO_USER_KEYS, - ERROR_FILE_NOT_ENCRYPTED, - ERROR_NOT_EXPORT_FORMAT, - ERROR_FILE_READ_ONLY, - ERROR_DIR_EFS_DISALLOWED, - ERROR_EFS_SERVER_NOT_TRUSTED, - ERROR_BAD_RECOVERY_POLICY, - ERROR_EFS_ALG_BLOB_TOO_BIG, - ERROR_VOLUME_NOT_SUPPORT_EFS, - ERROR_EFS_DISABLED, - ERROR_EFS_VERSION_NOT_SUPPORT, // = 6016 - ERROR_NO_BROWSER_SERVERS_FOUND = 6118, - SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200, - - ERROR_CTX_WINSTATION_NAME_INVALID = 7001, - ERROR_CTX_INVALID_PD, - ERROR_CTX_PD_NOT_FOUND, - ERROR_CTX_WD_NOT_FOUND, - ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY, - ERROR_CTX_SERVICE_NAME_COLLISION, - ERROR_CTX_CLOSE_PENDING, - ERROR_CTX_NO_OUTBUF, - ERROR_CTX_MODEM_INF_NOT_FOUND, - ERROR_CTX_INVALID_MODEMNAME, - ERROR_CTX_MODEM_RESPONSE_ERROR, - ERROR_CTX_MODEM_RESPONSE_TIMEOUT, - ERROR_CTX_MODEM_RESPONSE_NO_CARRIER, - ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE, - ERROR_CTX_MODEM_RESPONSE_BUSY, - ERROR_CTX_MODEM_RESPONSE_VOICE, - ERROR_CTX_TD_ERROR, // = 7017 - ERROR_CTX_WINSTATION_NOT_FOUND = 7022, - ERROR_CTX_WINSTATION_ALREADY_EXISTS, - ERROR_CTX_WINSTATION_BUSY, - ERROR_CTX_BAD_VIDEO_MODE, // = 7025 - ERROR_CTX_GRAPHICS_INVALID = 7035, - ERROR_CTX_LOGON_DISABLED = 7037, - ERROR_CTX_NOT_CONSOLE, // = 7038 - ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040, - ERROR_CTX_CONSOLE_DISCONNECT, - ERROR_CTX_CONSOLE_CONNECT, // = 7042 - ERROR_CTX_SHADOW_DENIED = 7044, - ERROR_CTX_WINSTATION_ACCESS_DENIED, // = 7045 - ERROR_CTX_INVALID_WD = 7049, - ERROR_CTX_SHADOW_INVALID, - ERROR_CTX_SHADOW_DISABLED, - ERROR_CTX_CLIENT_LICENSE_IN_USE, - ERROR_CTX_CLIENT_LICENSE_NOT_SET, - ERROR_CTX_LICENSE_NOT_AVAILABLE, - ERROR_CTX_LICENSE_CLIENT_INVALID, - ERROR_CTX_LICENSE_EXPIRED, - ERROR_CTX_SHADOW_NOT_RUNNING, - ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE, - ERROR_ACTIVATION_COUNT_EXCEEDED, // = 7059 - - FRS_ERR_INVALID_API_SEQUENCE = 8001, - FRS_ERR_STARTING_SERVICE, - FRS_ERR_STOPPING_SERVICE, - FRS_ERR_INTERNAL_API, - FRS_ERR_INTERNAL, - FRS_ERR_SERVICE_COMM, - FRS_ERR_INSUFFICIENT_PRIV, - FRS_ERR_AUTHENTICATION, - FRS_ERR_PARENT_INSUFFICIENT_PRIV, - FRS_ERR_PARENT_AUTHENTICATION, - FRS_ERR_CHILD_TO_PARENT_COMM, - FRS_ERR_PARENT_TO_CHILD_COMM, - FRS_ERR_SYSVOL_POPULATE, - FRS_ERR_SYSVOL_POPULATE_TIMEOUT, - FRS_ERR_SYSVOL_IS_BUSY, - FRS_ERR_SYSVOL_DEMOTE, - FRS_ERR_INVALID_SERVICE_PARAMETER, // = 8017 - ERROR_DS_NOT_INSTALLED = 8200, - ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY, - ERROR_DS_NO_ATTRIBUTE_OR_VALUE, - ERROR_DS_INVALID_ATTRIBUTE_SYNTAX, - ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED, - ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS, - ERROR_DS_BUSY, - ERROR_DS_UNAVAILABLE, - ERROR_DS_NO_RIDS_ALLOCATED, - ERROR_DS_NO_MORE_RIDS, - ERROR_DS_INCORRECT_ROLE_OWNER, - ERROR_DS_RIDMGR_INIT_ERROR, - ERROR_DS_OBJ_CLASS_VIOLATION, - ERROR_DS_CANT_ON_NON_LEAF, - ERROR_DS_CANT_ON_RDN, - ERROR_DS_CANT_MOD_OBJ_CLASS, - ERROR_DS_CROSS_DOM_MOVE_ERROR, - ERROR_DS_GC_NOT_AVAILABLE, - ERROR_SHARED_POLICY, - ERROR_POLICY_OBJECT_NOT_FOUND, - ERROR_POLICY_ONLY_IN_DS, - ERROR_PROMOTION_ACTIVE, - ERROR_NO_PROMOTION_ACTIVE, // = 8222 - ERROR_DS_OPERATIONS_ERROR = 8224, - ERROR_DS_PROTOCOL_ERROR, - ERROR_DS_TIMELIMIT_EXCEEDED, - ERROR_DS_SIZELIMIT_EXCEEDED, - ERROR_DS_ADMIN_LIMIT_EXCEEDED, - ERROR_DS_COMPARE_FALSE, - ERROR_DS_COMPARE_TRUE, - ERROR_DS_AUTH_METHOD_NOT_SUPPORTED, - ERROR_DS_STRONG_AUTH_REQUIRED, - ERROR_DS_INAPPROPRIATE_AUTH, - ERROR_DS_AUTH_UNKNOWN, - ERROR_DS_REFERRAL, - ERROR_DS_UNAVAILABLE_CRIT_EXTENSION, - ERROR_DS_CONFIDENTIALITY_REQUIRED, - ERROR_DS_INAPPROPRIATE_MATCHING, - ERROR_DS_CONSTRAINT_VIOLATION, - ERROR_DS_NO_SUCH_OBJECT, - ERROR_DS_ALIAS_PROBLEM, - ERROR_DS_INVALID_DN_SYNTAX, - ERROR_DS_IS_LEAF, - ERROR_DS_ALIAS_DEREF_PROBLEM, - ERROR_DS_UNWILLING_TO_PERFORM, - ERROR_DS_LOOP_DETECT, - ERROR_DS_NAMING_VIOLATION, - ERROR_DS_OBJECT_RESULTS_TOO_LARGE, - ERROR_DS_AFFECTS_MULTIPLE_DSAS, - ERROR_DS_SERVER_DOWN, - ERROR_DS_LOCAL_ERROR, - ERROR_DS_ENCODING_ERROR, - ERROR_DS_DECODING_ERROR, - ERROR_DS_FILTER_UNKNOWN, - ERROR_DS_PARAM_ERROR, - ERROR_DS_NOT_SUPPORTED, - ERROR_DS_NO_RESULTS_RETURNED, - ERROR_DS_CONTROL_NOT_FOUND, - ERROR_DS_CLIENT_LOOP, - ERROR_DS_REFERRAL_LIMIT_EXCEEDED, - ERROR_DS_SORT_CONTROL_MISSING, - ERROR_DS_OFFSET_RANGE_ERROR, // = 8262 - ERROR_DS_ROOT_MUST_BE_NC = 8301, - ERROR_DS_ADD_REPLICA_INHIBITED, - ERROR_DS_ATT_NOT_DEF_IN_SCHEMA, - ERROR_DS_MAX_OBJ_SIZE_EXCEEDED, - ERROR_DS_OBJ_STRING_NAME_EXISTS, - ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA, - ERROR_DS_RDN_DOESNT_MATCH_SCHEMA, - ERROR_DS_NO_REQUESTED_ATTS_FOUND, - ERROR_DS_USER_BUFFER_TO_SMALL, - ERROR_DS_ATT_IS_NOT_ON_OBJ, - ERROR_DS_ILLEGAL_MOD_OPERATION, - ERROR_DS_OBJ_TOO_LARGE, - ERROR_DS_BAD_INSTANCE_TYPE, - ERROR_DS_MASTERDSA_REQUIRED, - ERROR_DS_OBJECT_CLASS_REQUIRED, - ERROR_DS_MISSING_REQUIRED_ATT, - ERROR_DS_ATT_NOT_DEF_FOR_CLASS, - ERROR_DS_ATT_ALREADY_EXISTS, // = 8318 - ERROR_DS_CANT_ADD_ATT_VALUES = 8320, - ERROR_DS_SINGLE_VALUE_CONSTRAINT, - ERROR_DS_RANGE_CONSTRAINT, - ERROR_DS_ATT_VAL_ALREADY_EXISTS, - ERROR_DS_CANT_REM_MISSING_ATT, - ERROR_DS_CANT_REM_MISSING_ATT_VAL, - ERROR_DS_ROOT_CANT_BE_SUBREF, - ERROR_DS_NO_CHAINING, - ERROR_DS_NO_CHAINED_EVAL, - ERROR_DS_NO_PARENT_OBJECT, - ERROR_DS_PARENT_IS_AN_ALIAS, - ERROR_DS_CANT_MIX_MASTER_AND_REPS, - ERROR_DS_CHILDREN_EXIST, - ERROR_DS_OBJ_NOT_FOUND, - ERROR_DS_ALIASED_OBJ_MISSING, - ERROR_DS_BAD_NAME_SYNTAX, - ERROR_DS_ALIAS_POINTS_TO_ALIAS, - ERROR_DS_CANT_DEREF_ALIAS, - ERROR_DS_OUT_OF_SCOPE, - ERROR_DS_OBJECT_BEING_REMOVED, - ERROR_DS_CANT_DELETE_DSA_OBJ, - ERROR_DS_GENERIC_ERROR, - ERROR_DS_DSA_MUST_BE_INT_MASTER, - ERROR_DS_CLASS_NOT_DSA, - ERROR_DS_INSUFF_ACCESS_RIGHTS, - ERROR_DS_ILLEGAL_SUPERIOR, - ERROR_DS_ATTRIBUTE_OWNED_BY_SAM, - ERROR_DS_NAME_TOO_MANY_PARTS, - ERROR_DS_NAME_TOO_LONG, - ERROR_DS_NAME_VALUE_TOO_LONG, - ERROR_DS_NAME_UNPARSEABLE, - ERROR_DS_NAME_TYPE_UNKNOWN, - ERROR_DS_NOT_AN_OBJECT, - ERROR_DS_SEC_DESC_TOO_SHORT, - ERROR_DS_SEC_DESC_INVALID, - ERROR_DS_NO_DELETED_NAME, - ERROR_DS_SUBREF_MUST_HAVE_PARENT, - ERROR_DS_NCNAME_MUST_BE_NC, - ERROR_DS_CANT_ADD_SYSTEM_ONLY, - ERROR_DS_CLASS_MUST_BE_CONCRETE, - ERROR_DS_INVALID_DMD, - ERROR_DS_OBJ_GUID_EXISTS, - ERROR_DS_NOT_ON_BACKLINK, - ERROR_DS_NO_CROSSREF_FOR_NC, - ERROR_DS_SHUTTING_DOWN, - ERROR_DS_UNKNOWN_OPERATION, - ERROR_DS_INVALID_ROLE_OWNER, - ERROR_DS_COULDNT_CONTACT_FSMO, - ERROR_DS_CROSS_NC_DN_RENAME, - ERROR_DS_CANT_MOD_SYSTEM_ONLY, - ERROR_DS_REPLICATOR_ONLY, - ERROR_DS_OBJ_CLASS_NOT_DEFINED, - ERROR_DS_OBJ_CLASS_NOT_SUBCLASS, - ERROR_DS_NAME_REFERENCE_INVALID, - ERROR_DS_CROSS_REF_EXISTS, - ERROR_DS_CANT_DEL_MASTER_CROSSREF, - ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD, - ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX, - ERROR_DS_DUP_RDN, - ERROR_DS_DUP_OID, - ERROR_DS_DUP_MAPI_ID, - ERROR_DS_DUP_SCHEMA_ID_GUID, - ERROR_DS_DUP_LDAP_DISPLAY_NAME, - ERROR_DS_SEMANTIC_ATT_TEST, - ERROR_DS_SYNTAX_MISMATCH, - ERROR_DS_EXISTS_IN_MUST_HAVE, - ERROR_DS_EXISTS_IN_MAY_HAVE, - ERROR_DS_NONEXISTENT_MAY_HAVE, - ERROR_DS_NONEXISTENT_MUST_HAVE, - ERROR_DS_AUX_CLS_TEST_FAIL, - ERROR_DS_NONEXISTENT_POSS_SUP, - ERROR_DS_SUB_CLS_TEST_FAIL, - ERROR_DS_BAD_RDN_ATT_ID_SYNTAX, - ERROR_DS_EXISTS_IN_AUX_CLS, - ERROR_DS_EXISTS_IN_SUB_CLS, - ERROR_DS_EXISTS_IN_POSS_SUP, - ERROR_DS_RECALCSCHEMA_FAILED, - ERROR_DS_TREE_DELETE_NOT_FINISHED, - ERROR_DS_CANT_DELETE, - ERROR_DS_ATT_SCHEMA_REQ_ID, - ERROR_DS_BAD_ATT_SCHEMA_SYNTAX, - ERROR_DS_CANT_CACHE_ATT, - ERROR_DS_CANT_CACHE_CLASS, - ERROR_DS_CANT_REMOVE_ATT_CACHE, - ERROR_DS_CANT_REMOVE_CLASS_CACHE, - ERROR_DS_CANT_RETRIEVE_DN, - ERROR_DS_MISSING_SUPREF, - ERROR_DS_CANT_RETRIEVE_INSTANCE, - ERROR_DS_CODE_INCONSISTENCY, - ERROR_DS_DATABASE_ERROR, - ERROR_DS_GOVERNSID_MISSING, - ERROR_DS_MISSING_EXPECTED_ATT, - ERROR_DS_NCNAME_MISSING_CR_REF, - ERROR_DS_SECURITY_CHECKING_ERROR, - ERROR_DS_SCHEMA_NOT_LOADED, - ERROR_DS_SCHEMA_ALLOC_FAILED, - ERROR_DS_ATT_SCHEMA_REQ_SYNTAX, - ERROR_DS_GCVERIFY_ERROR, - ERROR_DS_DRA_SCHEMA_MISMATCH, - ERROR_DS_CANT_FIND_DSA_OBJ, - ERROR_DS_CANT_FIND_EXPECTED_NC, - ERROR_DS_CANT_FIND_NC_IN_CACHE, - ERROR_DS_CANT_RETRIEVE_CHILD, - ERROR_DS_SECURITY_ILLEGAL_MODIFY, - ERROR_DS_CANT_REPLACE_HIDDEN_REC, - ERROR_DS_BAD_HIERARCHY_FILE, - ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED, - ERROR_DS_CONFIG_PARAM_MISSING, - ERROR_DS_COUNTING_AB_INDICES_FAILED, - ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED, - ERROR_DS_INTERNAL_FAILURE, - ERROR_DS_UNKNOWN_ERROR, - ERROR_DS_ROOT_REQUIRES_CLASS_TOP, - ERROR_DS_REFUSING_FSMO_ROLES, - ERROR_DS_MISSING_FSMO_SETTINGS, - ERROR_DS_UNABLE_TO_SURRENDER_ROLES, - ERROR_DS_DRA_GENERIC, - ERROR_DS_DRA_INVALID_PARAMETER, - ERROR_DS_DRA_BUSY, - ERROR_DS_DRA_BAD_DN, - ERROR_DS_DRA_BAD_NC, - ERROR_DS_DRA_DN_EXISTS, - ERROR_DS_DRA_INTERNAL_ERROR, - ERROR_DS_DRA_INCONSISTENT_DIT, - ERROR_DS_DRA_CONNECTION_FAILED, - ERROR_DS_DRA_BAD_INSTANCE_TYPE, - ERROR_DS_DRA_OUT_OF_MEM, - ERROR_DS_DRA_MAIL_PROBLEM, - ERROR_DS_DRA_REF_ALREADY_EXISTS, - ERROR_DS_DRA_REF_NOT_FOUND, - ERROR_DS_DRA_OBJ_IS_REP_SOURCE, - ERROR_DS_DRA_DB_ERROR, - ERROR_DS_DRA_NO_REPLICA, - ERROR_DS_DRA_ACCESS_DENIED, - ERROR_DS_DRA_NOT_SUPPORTED, - ERROR_DS_DRA_RPC_CANCELLED, - ERROR_DS_DRA_SOURCE_DISABLED, - ERROR_DS_DRA_SINK_DISABLED, - ERROR_DS_DRA_NAME_COLLISION, - ERROR_DS_DRA_SOURCE_REINSTALLED, - ERROR_DS_DRA_MISSING_PARENT, - ERROR_DS_DRA_PREEMPTED, - ERROR_DS_DRA_ABANDON_SYNC, - ERROR_DS_DRA_SHUTDOWN, - ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET, - ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA, - ERROR_DS_DRA_EXTN_CONNECTION_FAILED, - ERROR_DS_INSTALL_SCHEMA_MISMATCH, - ERROR_DS_DUP_LINK_ID, - ERROR_DS_NAME_ERROR_RESOLVING, - ERROR_DS_NAME_ERROR_NOT_FOUND, - ERROR_DS_NAME_ERROR_NOT_UNIQUE, - ERROR_DS_NAME_ERROR_NO_MAPPING, - ERROR_DS_NAME_ERROR_DOMAIN_ONLY, - ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING, - ERROR_DS_CONSTRUCTED_ATT_MOD, - ERROR_DS_WRONG_OM_OBJ_CLASS, - ERROR_DS_DRA_REPL_PENDING, - ERROR_DS_DS_REQUIRED, - ERROR_DS_INVALID_LDAP_DISPLAY_NAME, - ERROR_DS_NON_BASE_SEARCH, - ERROR_DS_CANT_RETRIEVE_ATTS, - ERROR_DS_BACKLINK_WITHOUT_LINK, - ERROR_DS_EPOCH_MISMATCH, - ERROR_DS_SRC_NAME_MISMATCH, - ERROR_DS_SRC_AND_DST_NC_IDENTICAL, - ERROR_DS_DST_NC_MISMATCH, - ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC, - ERROR_DS_SRC_GUID_MISMATCH, - ERROR_DS_CANT_MOVE_DELETED_OBJECT, - ERROR_DS_PDC_OPERATION_IN_PROGRESS, - ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD, - ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION, - ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS, - ERROR_DS_NC_MUST_HAVE_NC_PARENT, - ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE, - ERROR_DS_DST_DOMAIN_NOT_NATIVE, - ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER, - ERROR_DS_CANT_MOVE_ACCOUNT_GROUP, - ERROR_DS_CANT_MOVE_RESOURCE_GROUP, - ERROR_DS_INVALID_SEARCH_FLAG, - ERROR_DS_NO_TREE_DELETE_ABOVE_NC, - ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE, - ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE, - ERROR_DS_SAM_INIT_FAILURE, - ERROR_DS_SENSITIVE_GROUP_VIOLATION, - ERROR_DS_CANT_MOD_PRIMARYGROUPID, - ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD, - ERROR_DS_NONSAFE_SCHEMA_CHANGE, - ERROR_DS_SCHEMA_UPDATE_DISALLOWED, - ERROR_DS_CANT_CREATE_UNDER_SCHEMA, - ERROR_DS_INSTALL_NO_SRC_SCH_VERSION, - ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE, - ERROR_DS_INVALID_GROUP_TYPE, - ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN, - ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN, - ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER, - ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER, - ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER, - ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER, - ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER, - ERROR_DS_HAVE_PRIMARY_MEMBERS, - ERROR_DS_STRING_SD_CONVERSION_FAILED, - ERROR_DS_NAMING_MASTER_GC, - ERROR_DS_LOOKUP_FAILURE, - ERROR_DS_COULDNT_UPDATE_SPNS, - ERROR_DS_CANT_RETRIEVE_SD, - ERROR_DS_KEY_NOT_UNIQUE, - ERROR_DS_WRONG_LINKED_ATT_SYNTAX, - ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD, - ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY, - ERROR_DS_CANT_START, - ERROR_DS_INIT_FAILURE, - ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION, - ERROR_DS_SOURCE_DOMAIN_IN_FOREST, - ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST, - ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED, - ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN, - ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER, - ERROR_DS_SRC_SID_EXISTS_IN_FOREST, - ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH, - ERROR_SAM_INIT_FAILURE, - ERROR_DS_DRA_SCHEMA_INFO_SHIP, - ERROR_DS_DRA_SCHEMA_CONFLICT, - ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT, - ERROR_DS_DRA_OBJ_NC_MISMATCH, - ERROR_DS_NC_STILL_HAS_DSAS, - ERROR_DS_GC_REQUIRED, - ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY, - ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS, - ERROR_DS_CANT_ADD_TO_GC, - ERROR_DS_NO_CHECKPOINT_WITH_PDC, - ERROR_DS_SOURCE_AUDITING_NOT_ENABLED, - ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC, - ERROR_DS_INVALID_NAME_FOR_SPN, - ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS, - ERROR_DS_UNICODEPWD_NOT_IN_QUOTES, - ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED, - ERROR_DS_MUST_BE_RUN_ON_DST_DC, - ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER, - ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ, - ERROR_DS_INIT_FAILURE_CONSOLE, - ERROR_DS_SAM_INIT_FAILURE_CONSOLE, - ERROR_DS_FOREST_VERSION_TOO_HIGH, - ERROR_DS_DOMAIN_VERSION_TOO_HIGH, - ERROR_DS_FOREST_VERSION_TOO_LOW, - ERROR_DS_DOMAIN_VERSION_TOO_LOW, - ERROR_DS_INCOMPATIBLE_VERSION, - ERROR_DS_LOW_DSA_VERSION, - ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN, - ERROR_DS_NOT_SUPPORTED_SORT_ORDER, - ERROR_DS_NAME_NOT_UNIQUE, - ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4, - ERROR_DS_OUT_OF_VERSION_STORE, - ERROR_DS_INCOMPATIBLE_CONTROLS_USED, - ERROR_DS_NO_REF_DOMAIN, - ERROR_DS_RESERVED_LINK_ID, - ERROR_DS_LINK_ID_NOT_AVAILABLE, - ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER, - ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE, - ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC, - ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG, - ERROR_DS_MODIFYDN_WRONG_GRANDPARENT, - ERROR_DS_NAME_ERROR_TRUST_REFERRAL, - ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER, - ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD, - ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2, - ERROR_DS_THREAD_LIMIT_EXCEEDED, - ERROR_DS_NOT_CLOSEST, - ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF, - ERROR_DS_SINGLE_USER_MODE_FAILED, - ERROR_DS_NTDSCRIPT_SYNTAX_ERROR, - ERROR_DS_NTDSCRIPT_PROCESS_ERROR, - ERROR_DS_DIFFERENT_REPL_EPOCHS, - ERROR_DS_DRS_EXTENSIONS_CHANGED, - ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR, - ERROR_DS_NO_MSDS_INTID, - ERROR_DS_DUP_MSDS_INTID, - ERROR_DS_EXISTS_IN_RDNATTID, - ERROR_DS_AUTHORIZATION_FAILED, - ERROR_DS_INVALID_SCRIPT, - ERROR_DS_REMOTE_CROSSREF_OP_FAILED, - ERROR_DS_CROSS_REF_BUSY, - ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN, - ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC, - ERROR_DS_DUPLICATE_ID_FOUND, - ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT, - ERROR_DS_GROUP_CONVERSION_ERROR, - ERROR_DS_CANT_MOVE_APP_BASIC_GROUP, - ERROR_DS_CANT_MOVE_APP_QUERY_GROUP, - ERROR_DS_ROLE_NOT_VERIFIED, - ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL, - ERROR_DS_DOMAIN_RENAME_IN_PROGRESS, - ERROR_DS_EXISTING_AD_CHILD_NC, // = 8613 - DNS_ERROR_RCODE_FORMAT_ERROR = 9001, - DNS_ERROR_RCODE_SERVER_FAILURE, - DNS_ERROR_RCODE_NAME_ERROR, - DNS_ERROR_RCODE_NOT_IMPLEMENTED, - DNS_ERROR_RCODE_REFUSED, - DNS_ERROR_RCODE_YXDOMAIN, - DNS_ERROR_RCODE_YXRRSET, - DNS_ERROR_RCODE_NXRRSET, - DNS_ERROR_RCODE_NOTAUTH, - DNS_ERROR_RCODE_NOTZONE, // = 9010 - DNS_ERROR_RCODE_BADSIG = 9016, - DNS_ERROR_RCODE_BADKEY, - DNS_ERROR_RCODE_BADTIME, // = 9018 - DNS_INFO_NO_RECORDS = 9501, - DNS_ERROR_BAD_PACKET, - DNS_ERROR_NO_PACKET, - DNS_ERROR_RCODE, - DNS_ERROR_UNSECURE_PACKET, // = 9505 - DNS_ERROR_INVALID_TYPE = 9551, - DNS_ERROR_INVALID_IP_ADDRESS, - DNS_ERROR_INVALID_PROPERTY, - DNS_ERROR_TRY_AGAIN_LATER, - DNS_ERROR_NOT_UNIQUE, - DNS_ERROR_NON_RFC_NAME, - DNS_STATUS_FQDN, - DNS_STATUS_DOTTED_NAME, - DNS_STATUS_SINGLE_PART_NAME, - DNS_ERROR_INVALID_NAME_CHAR, - DNS_ERROR_NUMERIC_NAME, - DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER, - DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION, - DNS_ERROR_CANNOT_FIND_ROOT_HINTS, - DNS_ERROR_INCONSISTENT_ROOT_HINTS, // = 9565 - DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601, - DNS_ERROR_NO_ZONE_INFO, - DNS_ERROR_INVALID_ZONE_OPERATION, - DNS_ERROR_ZONE_CONFIGURATION_ERROR, - DNS_ERROR_ZONE_HAS_NO_SOA_RECORD, - DNS_ERROR_ZONE_HAS_NO_NS_RECORDS, - DNS_ERROR_ZONE_LOCKED, - DNS_ERROR_ZONE_CREATION_FAILED, - DNS_ERROR_ZONE_ALREADY_EXISTS, - DNS_ERROR_AUTOZONE_ALREADY_EXISTS, - DNS_ERROR_INVALID_ZONE_TYPE, - DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP, - DNS_ERROR_ZONE_NOT_SECONDARY, - DNS_ERROR_NEED_SECONDARY_ADDRESSES, - DNS_ERROR_WINS_INIT_FAILED, - DNS_ERROR_NEED_WINS_SERVERS, - DNS_ERROR_NBSTAT_INIT_FAILED, - DNS_ERROR_SOA_DELETE_INVALID, - DNS_ERROR_FORWARDER_ALREADY_EXISTS, - DNS_ERROR_ZONE_REQUIRES_MASTER_IP, - DNS_ERROR_ZONE_IS_SHUTDOWN, // = 9621 - DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651, - DNS_ERROR_INVALID_DATAFILE_NAME, - DNS_ERROR_DATAFILE_OPEN_FAILURE, - DNS_ERROR_FILE_WRITEBACK_FAILED, - DNS_ERROR_DATAFILE_PARSING, // = 9655 - DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701, - DNS_ERROR_RECORD_FORMAT, - DNS_ERROR_NODE_CREATION_FAILED, - DNS_ERROR_UNKNOWN_RECORD_TYPE, - DNS_ERROR_RECORD_TIMED_OUT, - DNS_ERROR_NAME_NOT_IN_ZONE, - DNS_ERROR_CNAME_LOOP, - DNS_ERROR_NODE_IS_CNAME, - DNS_ERROR_CNAME_COLLISION, - DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT, - DNS_ERROR_RECORD_ALREADY_EXISTS, - DNS_ERROR_SECONDARY_DATA, - DNS_ERROR_NO_CREATE_CACHE_DATA, - DNS_ERROR_NAME_DOES_NOT_EXIST, - DNS_WARNING_PTR_CREATE_FAILED, - DNS_WARNING_DOMAIN_UNDELETED, - DNS_ERROR_DS_UNAVAILABLE, - DNS_ERROR_DS_ZONE_ALREADY_EXISTS, - DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE, // = 9719 - DNS_INFO_AXFR_COMPLETE = 9751, - DNS_ERROR_AXFR, - DNS_INFO_ADDED_LOCAL_WINS, // = 9753 - DNS_STATUS_CONTINUE_NEEDED = 9801, - DNS_ERROR_NO_TCPIP = 9851, - DNS_ERROR_NO_DNS_SERVERS, // = 9852 - DNS_ERROR_DP_DOES_NOT_EXIST = 9901, - DNS_ERROR_DP_ALREADY_EXISTS, - DNS_ERROR_DP_NOT_ENLISTED, - DNS_ERROR_DP_ALREADY_ENLISTED, - DNS_ERROR_DP_NOT_AVAILABLE, // = 9905 - -/+ already in winsock2.d defined! - - WSABASEERR = 10000, - WSAEINTR = 10004, - WSAEBADF = 10009, - WSAEACCES = 10013, - WSAEFAULT, // = 10014 - WSAEINVAL = 10022, - WSAEMFILE = 10024, - WSAEWOULDBLOCK = 10035, - WSAEINPROGRESS, - WSAEALREADY, - WSAENOTSOCK, - WSAEDESTADDRREQ, - WSAEMSGSIZE, - WSAEPROTOTYPE, - WSAENOPROTOOPT, - WSAEPROTONOSUPPORT, - WSAESOCKTNOSUPPORT, - WSAEOPNOTSUPP, - WSAEPFNOSUPPORT, - WSAEAFNOSUPPORT, - WSAEADDRINUSE, - WSAEADDRNOTAVAIL, - WSAENETDOWN, - WSAENETUNREACH, - WSAENETRESET, - WSAECONNABORTED, - WSAECONNRESET, - WSAENOBUFS, - WSAEISCONN, - WSAENOTCONN, - WSAESHUTDOWN, - WSAETOOMANYREFS, - WSAETIMEDOUT, - WSAECONNREFUSED, - WSAELOOP, - WSAENAMETOOLONG, - WSAEHOSTDOWN, - WSAEHOSTUNREACH, - WSAENOTEMPTY, - WSAEPROCLIM, - WSAEUSERS, - WSAEDQUOT, - WSAESTALE, - WSAEREMOTE, // = 10071 - WSASYSNOTREADY = 10091, - WSAVERNOTSUPPORTED, - WSANOTINITIALISED, // = 10093 - WSAEDISCON = 10101, - WSAENOMORE, - WSAECANCELLED, - WSAEINVALIDPROCTABLE, - WSAEINVALIDPROVIDER, - WSAEPROVIDERFAILEDINIT, - WSASYSCALLFAILURE, - WSASERVICE_NOT_FOUND, - WSATYPE_NOT_FOUND, - WSA_E_NO_MORE, - WSA_E_CANCELLED, - WSAEREFUSED, // = 10112 - WSAHOST_NOT_FOUND = 11001, - WSATRY_AGAIN, - WSANO_RECOVERY, - WSANO_DATA, - WSA_QOS_RECEIVERS, - WSA_QOS_SENDERS, - WSA_QOS_NO_SENDERS, - WSA_QOS_NO_RECEIVERS, - WSA_QOS_REQUEST_CONFIRMED, - WSA_QOS_ADMISSION_FAILURE, - WSA_QOS_POLICY_FAILURE, - WSA_QOS_BAD_STYLE, - WSA_QOS_BAD_OBJECT, - WSA_QOS_TRAFFIC_CTRL_ERROR, - WSA_QOS_GENERIC_ERROR, - WSA_QOS_ESERVICETYPE, - WSA_QOS_EFLOWSPEC, - WSA_QOS_EPROVSPECBUF, - WSA_QOS_EFILTERSTYLE, - WSA_QOS_EFILTERTYPE, - WSA_QOS_EFILTERCOUNT, - WSA_QOS_EOBJLENGTH, - WSA_QOS_EFLOWCOUNT, - WSA_QOS_EUNKNOWNPSOBJ, - WSA_QOS_EPOLICYOBJ, - WSA_QOS_EFLOWDESC, - WSA_QOS_EPSFLOWSPEC, - WSA_QOS_EPSFILTERSPEC, - WSA_QOS_ESDMODEOBJ, - WSA_QOS_ESHAPERATEOBJ, - WSA_QOS_RESERVED_PETYPE, // = 11031 - -+/ - - ERROR_IPSEC_QM_POLICY_EXISTS = 13000, - ERROR_IPSEC_QM_POLICY_NOT_FOUND, - ERROR_IPSEC_QM_POLICY_IN_USE, - ERROR_IPSEC_MM_POLICY_EXISTS, - ERROR_IPSEC_MM_POLICY_NOT_FOUND, - ERROR_IPSEC_MM_POLICY_IN_USE, - ERROR_IPSEC_MM_FILTER_EXISTS, - ERROR_IPSEC_MM_FILTER_NOT_FOUND, - ERROR_IPSEC_TRANSPORT_FILTER_EXISTS, - ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND, - ERROR_IPSEC_MM_AUTH_EXISTS, - ERROR_IPSEC_MM_AUTH_NOT_FOUND, - ERROR_IPSEC_MM_AUTH_IN_USE, - ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND, - ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND, - ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND, - ERROR_IPSEC_TUNNEL_FILTER_EXISTS, - ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND, - ERROR_IPSEC_MM_FILTER_PENDING_DELETION, - ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION, - ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION, - ERROR_IPSEC_MM_POLICY_PENDING_DELETION, - ERROR_IPSEC_MM_AUTH_PENDING_DELETION, - ERROR_IPSEC_QM_POLICY_PENDING_DELETION, - WARNING_IPSEC_MM_POLICY_PRUNED, - WARNING_IPSEC_QM_POLICY_PRUNED, // = 13025 - ERROR_IPSEC_IKE_AUTH_FAIL = 13801, - ERROR_IPSEC_IKE_ATTRIB_FAIL, - ERROR_IPSEC_IKE_NEGOTIATION_PENDING, - ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR, - ERROR_IPSEC_IKE_TIMED_OUT, - ERROR_IPSEC_IKE_NO_CERT, - ERROR_IPSEC_IKE_SA_DELETED, - ERROR_IPSEC_IKE_SA_REAPED, - ERROR_IPSEC_IKE_MM_ACQUIRE_DROP, - ERROR_IPSEC_IKE_QM_ACQUIRE_DROP, - ERROR_IPSEC_IKE_QUEUE_DROP_MM, - ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM, - ERROR_IPSEC_IKE_DROP_NO_RESPONSE, - ERROR_IPSEC_IKE_MM_DELAY_DROP, - ERROR_IPSEC_IKE_QM_DELAY_DROP, - ERROR_IPSEC_IKE_ERROR, - ERROR_IPSEC_IKE_CRL_FAILED, - ERROR_IPSEC_IKE_INVALID_KEY_USAGE, - ERROR_IPSEC_IKE_INVALID_CERT_TYPE, - ERROR_IPSEC_IKE_NO_PRIVATE_KEY, // = 13820 - ERROR_IPSEC_IKE_DH_FAIL = 13822, - ERROR_IPSEC_IKE_INVALID_HEADER = 13824, - ERROR_IPSEC_IKE_NO_POLICY, - ERROR_IPSEC_IKE_INVALID_SIGNATURE, - ERROR_IPSEC_IKE_KERBEROS_ERROR, - ERROR_IPSEC_IKE_NO_PUBLIC_KEY, - ERROR_IPSEC_IKE_PROCESS_ERR, - ERROR_IPSEC_IKE_PROCESS_ERR_SA, - ERROR_IPSEC_IKE_PROCESS_ERR_PROP, - ERROR_IPSEC_IKE_PROCESS_ERR_TRANS, - ERROR_IPSEC_IKE_PROCESS_ERR_KE, - ERROR_IPSEC_IKE_PROCESS_ERR_ID, - ERROR_IPSEC_IKE_PROCESS_ERR_CERT, - ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ, - ERROR_IPSEC_IKE_PROCESS_ERR_HASH, - ERROR_IPSEC_IKE_PROCESS_ERR_SIG, - ERROR_IPSEC_IKE_PROCESS_ERR_NONCE, - ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY, - ERROR_IPSEC_IKE_PROCESS_ERR_DELETE, - ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR, - ERROR_IPSEC_IKE_INVALID_PAYLOAD, - ERROR_IPSEC_IKE_LOAD_SOFT_SA, - ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN, - ERROR_IPSEC_IKE_INVALID_COOKIE, - ERROR_IPSEC_IKE_NO_PEER_CERT, - ERROR_IPSEC_IKE_PEER_CRL_FAILED, - ERROR_IPSEC_IKE_POLICY_CHANGE, - ERROR_IPSEC_IKE_NO_MM_POLICY, - ERROR_IPSEC_IKE_NOTCBPRIV, - ERROR_IPSEC_IKE_SECLOADFAIL, - ERROR_IPSEC_IKE_FAILSSPINIT, - ERROR_IPSEC_IKE_FAILQUERYSSP, - ERROR_IPSEC_IKE_SRVACQFAIL, - ERROR_IPSEC_IKE_SRVQUERYCRED, - ERROR_IPSEC_IKE_GETSPIFAIL, - ERROR_IPSEC_IKE_INVALID_FILTER, - ERROR_IPSEC_IKE_OUT_OF_MEMORY, - ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED, - ERROR_IPSEC_IKE_INVALID_POLICY, - ERROR_IPSEC_IKE_UNKNOWN_DOI, - ERROR_IPSEC_IKE_INVALID_SITUATION, - ERROR_IPSEC_IKE_DH_FAILURE, - ERROR_IPSEC_IKE_INVALID_GROUP, - ERROR_IPSEC_IKE_ENCRYPT, - ERROR_IPSEC_IKE_DECRYPT, - ERROR_IPSEC_IKE_POLICY_MATCH, - ERROR_IPSEC_IKE_UNSUPPORTED_ID, - ERROR_IPSEC_IKE_INVALID_HASH, - ERROR_IPSEC_IKE_INVALID_HASH_ALG, - ERROR_IPSEC_IKE_INVALID_HASH_SIZE, - ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG, - ERROR_IPSEC_IKE_INVALID_AUTH_ALG, - ERROR_IPSEC_IKE_INVALID_SIG, - ERROR_IPSEC_IKE_LOAD_FAILED, - ERROR_IPSEC_IKE_RPC_DELETE, - ERROR_IPSEC_IKE_BENIGN_REINIT, - ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY, // = 13879 - ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881, - ERROR_IPSEC_IKE_MM_LIMIT, - ERROR_IPSEC_IKE_NEGOTIATION_DISABLED, - ERROR_IPSEC_IKE_NEG_STATUS_END, - ERROR_SXS_SECTION_NOT_FOUND, - ERROR_SXS_CANT_GEN_ACTCTX, - ERROR_SXS_INVALID_ACTCTXDATA_FORMAT, - ERROR_SXS_ASSEMBLY_NOT_FOUND, - ERROR_SXS_MANIFEST_FORMAT_ERROR, - ERROR_SXS_MANIFEST_PARSE_ERROR, - ERROR_SXS_ACTIVATION_CONTEXT_DISABLED, - ERROR_SXS_KEY_NOT_FOUND, - ERROR_SXS_VERSION_CONFLICT, - ERROR_SXS_WRONG_SECTION_TYPE, - ERROR_SXS_THREAD_QUERIES_DISABLED, - ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET, - ERROR_SXS_UNKNOWN_ENCODING_GROUP, - ERROR_SXS_UNKNOWN_ENCODING, - ERROR_SXS_INVALID_XML_NAMESPACE_URI, - ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED, - ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED, - ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE, - ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE, - ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE, - ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT, - ERROR_SXS_DUPLICATE_DLL_NAME, - ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME, - ERROR_SXS_DUPLICATE_CLSID, - ERROR_SXS_DUPLICATE_IID, - ERROR_SXS_DUPLICATE_TLBID, - ERROR_SXS_DUPLICATE_PROGID, - ERROR_SXS_DUPLICATE_ASSEMBLY_NAME, - ERROR_SXS_FILE_HASH_MISMATCH, - ERROR_SXS_POLICY_PARSE_ERROR, - ERROR_SXS_XML_E_MISSINGQUOTE, - ERROR_SXS_XML_E_COMMENTSYNTAX, - ERROR_SXS_XML_E_BADSTARTNAMECHAR, - ERROR_SXS_XML_E_BADNAMECHAR, - ERROR_SXS_XML_E_BADCHARINSTRING, - ERROR_SXS_XML_E_XMLDECLSYNTAX, - ERROR_SXS_XML_E_BADCHARDATA, - ERROR_SXS_XML_E_MISSINGWHITESPACE, - ERROR_SXS_XML_E_EXPECTINGTAGEND, - ERROR_SXS_XML_E_MISSINGSEMICOLON, - ERROR_SXS_XML_E_UNBALANCEDPAREN, - ERROR_SXS_XML_E_INTERNALERROR, - ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE, - ERROR_SXS_XML_E_INCOMPLETE_ENCODING, - ERROR_SXS_XML_E_MISSING_PAREN, - ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE, - ERROR_SXS_XML_E_MULTIPLE_COLONS, - ERROR_SXS_XML_E_INVALID_DECIMAL, - ERROR_SXS_XML_E_INVALID_HEXIDECIMAL, - ERROR_SXS_XML_E_INVALID_UNICODE, - ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK, - ERROR_SXS_XML_E_UNEXPECTEDENDTAG, - ERROR_SXS_XML_E_UNCLOSEDTAG, - ERROR_SXS_XML_E_DUPLICATEATTRIBUTE, - ERROR_SXS_XML_E_MULTIPLEROOTS, - ERROR_SXS_XML_E_INVALIDATROOTLEVEL, - ERROR_SXS_XML_E_BADXMLDECL, - ERROR_SXS_XML_E_MISSINGROOT, - ERROR_SXS_XML_E_UNEXPECTEDEOF, - ERROR_SXS_XML_E_BADPEREFINSUBSET, - ERROR_SXS_XML_E_UNCLOSEDSTARTTAG, - ERROR_SXS_XML_E_UNCLOSEDENDTAG, - ERROR_SXS_XML_E_UNCLOSEDSTRING, - ERROR_SXS_XML_E_UNCLOSEDCOMMENT, - ERROR_SXS_XML_E_UNCLOSEDDECL, - ERROR_SXS_XML_E_UNCLOSEDCDATA, - ERROR_SXS_XML_E_RESERVEDNAMESPACE, - ERROR_SXS_XML_E_INVALIDENCODING, - ERROR_SXS_XML_E_INVALIDSWITCH, - ERROR_SXS_XML_E_BADXMLCASE, - ERROR_SXS_XML_E_INVALID_STANDALONE, - ERROR_SXS_XML_E_UNEXPECTED_STANDALONE, - ERROR_SXS_XML_E_INVALID_VERSION, - ERROR_SXS_XML_E_MISSINGEQUALS, - ERROR_SXS_PROTECTION_RECOVERY_FAILED, - ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT, - ERROR_SXS_PROTECTION_CATALOG_NOT_VALID, - ERROR_SXS_UNTRANSLATABLE_HRESULT, - ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING, - ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE, - ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME // = 14080 -} - -enum : HRESULT { - S_OK = 0x00000000, - S_FALSE = 0x00000001, - - NOERROR = 0x00000000, - - E_PENDING = 0x8000000A, - E_NOTIMPL = 0x80004001, - E_NOINTERFACE = 0x80004002, - E_POINTER = 0x80004003, - E_ABORT = 0x80004004, - E_FAIL = 0x80004005, - E_ACCESSDENIED = 0x80070005, - E_HANDLE = 0x80070006, - E_OUTOFMEMORY = 0x8007000E, - E_INVALIDARG = 0x80070057, - E_UNEXPECTED = 0x8000FFFF, - - CO_E_INIT_TLS = 0x80004006, - CO_E_INIT_SHARED_ALLOCATOR = 0x80004007, - CO_E_INIT_MEMORY_ALLOCATOR = 0x80004008, - CO_E_INIT_CLASS_CACHE = 0x80004009, - CO_E_INIT_RPC_CHANNEL = 0x8000400A, - CO_E_INIT_TLS_SET_CHANNEL_CONTROL = 0x8000400B, - CO_E_INIT_TLS_CHANNEL_CONTROL = 0x8000400C, - CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = 0x8000400D, - CO_E_INIT_SCM_MUTEX_EXISTS = 0x8000400E, - CO_E_INIT_SCM_FILE_MAPPING_EXISTS = 0x8000400F, - CO_E_INIT_SCM_MAP_VIEW_OF_FILE = 0x80004010, - CO_E_INIT_SCM_EXEC_FAILURE = 0x80004011, - CO_E_INIT_ONLY_SINGLE_THREADED = 0x80004012, - - RPC_E_CALL_REJECTED = 0x80010001, - RPC_E_CALL_CANCELED = 0x80010002, - RPC_E_CANTPOST_INSENDCALL = 0x80010003, - RPC_E_CANTCALLOUT_INASYNCCALL = 0x80010004, - RPC_E_CANTCALLOUT_INEXTERNALCALL = 0x80010005, - RPC_E_CONNECTION_TERMINATED = 0x80010006, - RPC_E_SERVER_DIED = 0x80010007, - RPC_E_CLIENT_DIED = 0x80010008, - RPC_E_INVALID_DATAPACKET = 0x80010009, - RPC_E_CANTTRANSMIT_CALL = 0x8001000A, - RPC_E_CLIENT_CANTMARSHAL_DATA = 0x8001000B, - RPC_E_CLIENT_CANTUNMARSHAL_DATA = 0x8001000C, - RPC_E_SERVER_CANTMARSHAL_DATA = 0x8001000D, - RPC_E_SERVER_CANTUNMARSHAL_DATA = 0x8001000E, - RPC_E_INVALID_DATA = 0x8001000F, - RPC_E_INVALID_PARAMETER = 0x80010010, - RPC_E_CANTCALLOUT_AGAIN = 0x80010011, - RPC_E_SERVER_DIED_DNE = 0x80010012, - RPC_E_SYS_CALL_FAILED = 0x80010100, - RPC_E_OUT_OF_RESOURCES = 0x80010101, - RPC_E_ATTEMPTED_MULTITHREAD = 0x80010102, - RPC_E_NOT_REGISTERED = 0x80010103, - RPC_E_FAULT = 0x80010104, - RPC_E_SERVERFAULT = 0x80010105, - RPC_E_CHANGED_MODE = 0x80010106, - RPC_E_INVALIDMETHOD = 0x80010107, - RPC_E_DISCONNECTED = 0x80010108, - RPC_E_RETRY = 0x80010109, - RPC_E_SERVERCALL_RETRYLATER = 0x8001010A, - RPC_E_SERVERCALL_REJECTED = 0x8001010B, - RPC_E_INVALID_CALLDATA = 0x8001010C, - RPC_E_CANTCALLOUT_ININPUTSYNCCALL = 0x8001010D, - RPC_E_WRONG_THREAD = 0x8001010E, - RPC_E_THREAD_NOT_INIT = 0x8001010F, - RPC_E_UNEXPECTED = 0x8001FFFF, - - DISP_E_UNKNOWNINTERFACE = 0x80020001, - DISP_E_MEMBERNOTFOUND = 0x80020003, - DISP_E_PARAMNOTFOUND = 0x80020004, - DISP_E_TYPEMISMATCH = 0x80020005, - DISP_E_UNKNOWNNAME = 0x80020006, - DISP_E_NONAMEDARGS = 0x80020007, - DISP_E_BADVARTYPE = 0x80020008, - DISP_E_EXCEPTION = 0x80020009, - DISP_E_OVERFLOW = 0x8002000A, - DISP_E_BADINDEX = 0x8002000B, - DISP_E_UNKNOWNLCID = 0x8002000C, - DISP_E_ARRAYISLOCKED = 0x8002000D, - DISP_E_BADPARAMCOUNT = 0x8002000E, - DISP_E_PARAMNOTOPTIONAL = 0x8002000F, - DISP_E_BADCALLEE = 0x80020010, - DISP_E_NOTACOLLECTION = 0x80020011, - DISP_E_DIVBYZERO = 0x80020012, - - TYPE_E_BUFFERTOOSMALL = 0x80028016, - TYPE_E_INVDATAREAD = 0x80028018, - TYPE_E_UNSUPFORMAT = 0x80028019, - TYPE_E_REGISTRYACCESS = 0x8002801C, - TYPE_E_LIBNOTREGISTERED = 0x8002801D, - TYPE_E_UNDEFINEDTYPE = 0x80028027, - TYPE_E_QUALIFIEDNAMEDISALLOWED = 0x80028028, - TYPE_E_INVALIDSTATE = 0x80028029, - TYPE_E_WRONGTYPEKIND = 0x8002802A, - TYPE_E_ELEMENTNOTFOUND = 0x8002802B, - TYPE_E_AMBIGUOUSNAME = 0x8002802C, - TYPE_E_NAMECONFLICT = 0x8002802D, - TYPE_E_UNKNOWNLCID = 0x8002802E, - TYPE_E_DLLFUNCTIONNOTFOUND = 0x8002802F, - TYPE_E_BADMODULEKIND = 0x800288BD, - TYPE_E_SIZETOOBIG = 0x800288C5, - TYPE_E_DUPLICATEID = 0x800288C6, - TYPE_E_INVALIDID = 0x800288CF, - TYPE_E_TYPEMISMATCH = 0x80028CA0, - TYPE_E_OUTOFBOUNDS = 0x80028CA1, - TYPE_E_IOERROR = 0x80028CA2, - TYPE_E_CANTCREATETMPFILE = 0x80028CA3, - TYPE_E_CANTLOADLIBRARY = 0x80029C4A, - TYPE_E_INCONSISTENTPROPFUNCS = 0x80029C83, - TYPE_E_CIRCULARTYPE = 0x80029C84, - - STG_E_INVALIDFUNCTION = 0x80030001, - STG_E_FILENOTFOUND = 0x80030002, - STG_E_PATHNOTFOUND = 0x80030003, - STG_E_TOOMANYOPENFILES = 0x80030004, - STG_E_ACCESSDENIED = 0x80030005, - STG_E_INVALIDHANDLE = 0x80030006, - STG_E_INSUFFICIENTMEMORY = 0x80030008, - STG_E_INVALIDPOINTER = 0x80030009, - STG_E_NOMOREFILES = 0x80030012, - STG_E_DISKISWRITEPROTECTED = 0x80030013, - STG_E_SEEKERROR = 0x80030019, - STG_E_WRITEFAULT = 0x8003001D, - STG_E_READFAULT = 0x8003001E, - STG_E_SHAREVIOLATION = 0x80030020, - STG_E_LOCKVIOLATION = 0x80030021, - STG_E_FILEALREADYEXISTS = 0x80030050, - STG_E_INVALIDPARAMETER = 0x80030057, - STG_E_MEDIUMFULL = 0x80030070, - STG_E_ABNORMALAPIEXIT = 0x800300FA, - STG_E_INVALIDHEADER = 0x800300FB, - STG_E_INVALIDNAME = 0x800300FC, - STG_E_UNKNOWN = 0x800300FD, - STG_E_UNIMPLEMENTEDFUNCTION = 0x800300FE, - STG_E_INVALIDFLAG = 0x800300FF, - STG_E_INUSE = 0x80030100, - STG_E_NOTCURRENT = 0x80030101, - STG_E_REVERTED = 0x80030102, - STG_E_CANTSAVE = 0x80030103, - STG_E_OLDFORMAT = 0x80030104, - STG_E_OLDDLL = 0x80030105, - STG_E_SHAREREQUIRED = 0x80030106, - STG_E_NOTFILEBASEDSTORAGE = 0x80030107, - STG_E_EXTANTMARSHALLINGS = 0x80030108, - STG_S_CONVERTED = 0x00030200, - - OLE_E_FIRST = 0x80040000, - OLE_S_FIRST = 0x00040000, - OLE_E_OLEVERB = 0x80040000, - OLE_S_USEREG = 0x00040000, - OLE_E_ADVF = 0x80040001, - OLE_S_STATIC = 0x00040001, - OLE_E_ENUM_NOMORE = 0x80040002, - OLE_S_MAC_CLIPFORMAT = 0x00040002, - OLE_E_ADVISENOTSUPPORTED = 0x80040003, - OLE_E_NOCONNECTION = 0x80040004, - OLE_E_NOTRUNNING = 0x80040005, - OLE_E_NOCACHE = 0x80040006, - OLE_E_BLANK = 0x80040007, - OLE_E_CLASSDIFF = 0x80040008, - OLE_E_CANT_GETMONIKER = 0x80040009, - OLE_E_CANT_BINDTOSOURCE = 0x8004000A, - OLE_E_STATIC = 0x8004000B, - OLE_E_PROMPTSAVECANCELLED = 0x8004000C, - OLE_E_INVALIDRECT = 0x8004000D, - OLE_E_WRONGCOMPOBJ = 0x8004000E, - OLE_E_INVALIDHWND = 0x8004000F, - OLE_E_NOT_INPLACEACTIVE = 0x80040010, - OLE_E_CANTCONVERT = 0x80040011, - OLE_E_NOSTORAGE = 0x80040012, - - DV_E_FORMATETC = 0x80040064, - DV_E_DVTARGETDEVICE = 0x80040065, - DV_E_STGMEDIUM = 0x80040066, - DV_E_STATDATA = 0x80040067, - DV_E_LINDEX = 0x80040068, - DV_E_TYMED = 0x80040069, - DV_E_CLIPFORMAT = 0x8004006A, - DV_E_DVASPECT = 0x8004006B, - DV_E_DVTARGETDEVICE_SIZE = 0x8004006C, - DV_E_NOIVIEWOBJECT = 0x8004006D, - - OLE_E_LAST = 0x800400FF, - OLE_S_LAST = 0x000400FF, - DRAGDROP_E_FIRST = 0x80040100, - DRAGDROP_S_FIRST = 0x00040100, - DRAGDROP_E_NOTREGISTERED = 0x80040100, - DRAGDROP_S_DROP = 0x00040100, - DRAGDROP_E_ALREADYREGISTERED = 0x80040101, - DRAGDROP_S_CANCEL = 0x00040101, - DRAGDROP_E_INVALIDHWND = 0x80040102, - DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102, - DRAGDROP_E_LAST = 0x8004010F, - DRAGDROP_S_LAST = 0x0004010F, - CLASSFACTORY_E_FIRST = 0x80040110, - CLASSFACTORY_S_FIRST = 0x00040110, - CLASS_E_NOAGGREGATION = 0x80040110, - CLASS_E_CLASSNOTAVAILABLE = 0x80040111, - CLASSFACTORY_E_LAST = 0x8004011F, - CLASSFACTORY_S_LAST = 0x0004011F, - MARSHAL_E_FIRST = 0x80040120, - MARSHAL_S_FIRST = 0x00040120, - MARSHAL_E_LAST = 0x8004012F, - MARSHAL_S_LAST = 0x0004012F, - DATA_E_FIRST = 0x80040130, - DATA_S_FIRST = 0x00040130, - DATA_S_SAMEFORMATETC = 0x00040130, - DATA_E_LAST = 0x8004013F, - DATA_S_LAST = 0x0004013F, - VIEW_E_FIRST = 0x80040140, - VIEW_S_FIRST = 0x00040140, - VIEW_E_DRAW = 0x80040140, - VIEW_S_ALREADY_FROZEN = 0x00040140, - VIEW_E_LAST = 0x8004014F, - VIEW_S_LAST = 0x0004014F, - REGDB_E_FIRST = 0x80040150, - REGDB_S_FIRST = 0x00040150, - REGDB_E_READREGDB = 0x80040150, - REGDB_E_WRITEREGDB = 0x80040151, - REGDB_E_KEYMISSING = 0x80040152, - REGDB_E_INVALIDVALUE = 0x80040153, - REGDB_E_CLASSNOTREG = 0x80040154, - REGDB_E_IIDNOTREG = 0x80040155, - REGDB_E_LAST = 0x8004015F, - REGDB_S_LAST = 0x0004015F, - CACHE_E_FIRST = 0x80040170, - CACHE_S_FIRST = 0x00040170, - CACHE_E_NOCACHE_UPDATED = 0x80040170, - CACHE_S_FORMATETC_NOTSUPPORTED = 0x00040170, - CACHE_S_SAMECACHE = 0x00040171, - CACHE_S_SOMECACHES_NOTUPDATED = 0x00040172, - CACHE_E_LAST = 0x8004017F, - CACHE_S_LAST = 0x0004017F, - OLEOBJ_E_FIRST = 0x80040180, - OLEOBJ_S_FIRST = 0x00040180, - OLEOBJ_E_NOVERBS = 0x80040180, - OLEOBJ_S_INVALIDVERB = 0x00040180, - OLEOBJ_E_INVALIDVERB = 0x80040181, - OLEOBJ_S_CANNOT_DOVERB_NOW = 0x00040181, - OLEOBJ_S_INVALIDHWND = 0x00040182, - OLEOBJ_E_LAST = 0x8004018F, - OLEOBJ_S_LAST = 0x0004018F, - CLIENTSITE_E_FIRST = 0x80040190, - CLIENTSITE_S_FIRST = 0x00040190, - CLIENTSITE_E_LAST = 0x8004019F, - CLIENTSITE_S_LAST = 0x0004019F, - INPLACE_E_NOTUNDOABLE = 0x800401A0, - INPLACE_E_FIRST = 0x800401A0, - INPLACE_S_FIRST = 0x000401A0, - INPLACE_S_TRUNCATED = 0x000401A0, - INPLACE_E_NOTOOLSPACE = 0x800401A1, - INPLACE_E_LAST = 0x800401AF, - INPLACE_S_LAST = 0x000401AF, - ENUM_E_FIRST = 0x800401B0, - ENUM_S_FIRST = 0x000401B0, - ENUM_E_LAST = 0x800401BF, - ENUM_S_LAST = 0x000401BF, - CONVERT10_E_FIRST = 0x800401C0, - CONVERT10_S_FIRST = 0x000401C0, - CONVERT10_E_OLESTREAM_GET = 0x800401C0, - CONVERT10_S_NO_PRESENTATION = 0x000401C0, - CONVERT10_E_OLESTREAM_PUT = 0x800401C1, - CONVERT10_E_OLESTREAM_FMT = 0x800401C2, - CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = 0x800401C3, - CONVERT10_E_STG_FMT = 0x800401C4, - CONVERT10_E_STG_NO_STD_STREAM = 0x800401C5, - CONVERT10_E_STG_DIB_TO_BITMAP = 0x800401C6, - CONVERT10_E_LAST = 0x800401CF, - CONVERT10_S_LAST = 0x000401CF, - CLIPBRD_E_FIRST = 0x800401D0, - CLIPBRD_S_FIRST = 0x000401D0, - CLIPBRD_E_CANT_OPEN = 0x800401D0, - CLIPBRD_E_CANT_EMPTY = 0x800401D1, - CLIPBRD_E_CANT_SET = 0x800401D2, - CLIPBRD_E_BAD_DATA = 0x800401D3, - CLIPBRD_E_CANT_CLOSE = 0x800401D4, - CLIPBRD_E_LAST = 0x800401DF, - CLIPBRD_S_LAST = 0x000401DF, - MK_E_FIRST = 0x800401E0, - MK_S_FIRST = 0x000401E0, - MK_E_CONNECTMANUALLY = 0x800401E0, - MK_E_EXCEEDEDDEADLINE = 0x800401E1, - MK_E_NEEDGENERIC = 0x800401E2, - MK_S_REDUCED_TO_SELF = 0x000401E2, - MK_E_UNAVAILABLE = 0x800401E3, - MK_E_SYNTAX = 0x800401E4, - MK_S_ME = 0x000401E4, - MK_E_NOOBJECT = 0x800401E5, - MK_S_HIM = 0x000401E5, - MK_E_INVALIDEXTENSION = 0x800401E6, - MK_S_US = 0x000401E6, - MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = 0x800401E7, - MK_S_MONIKERALREADYREGISTERED = 0x000401E7, - MK_E_NOTBINDABLE = 0x800401E8, - MK_E_NOTBOUND = 0x800401E9, - MK_E_CANTOPENFILE = 0x800401EA, - MK_E_MUSTBOTHERUSER = 0x800401EB, - MK_E_NOINVERSE = 0x800401EC, - MK_E_NOSTORAGE = 0x800401ED, - MK_E_NOPREFIX = 0x800401EE, - MK_E_LAST = 0x800401EF, - MK_S_LAST = 0x000401EF, - MK_E_ENUMERATION_FAILED = 0x800401EF, - CO_E_FIRST = 0x800401F0, - CO_S_FIRST = 0x000401F0, - CO_E_NOTINITIALIZED = 0x800401F0, - CO_E_ALREADYINITIALIZED = 0x800401F1, - CO_E_CANTDETERMINECLASS = 0x800401F2, - CO_E_CLASSSTRING = 0x800401F3, - CO_E_IIDSTRING = 0x800401F4, - CO_E_APPNOTFOUND = 0x800401F5, - CO_E_APPSINGLEUSE = 0x800401F6, - CO_E_ERRORINAPP = 0x800401F7, - CO_E_DLLNOTFOUND = 0x800401F8, - CO_E_ERRORINDLL = 0x800401F9, - CO_E_WRONGOSFORAPP = 0x800401FA, - CO_E_OBJNOTREG = 0x800401FB, - CO_E_OBJISREG = 0x800401FC, - CO_E_OBJNOTCONNECTED = 0x800401FD, - CO_E_APPDIDNTREG = 0x800401FE, - CO_E_LAST = 0x800401FF, - CO_S_LAST = 0x000401FF, - CO_E_RELEASED = 0x800401FF, - - CO_E_CLASS_CREATE_FAILED = 0x80080001, - CO_E_SCM_ERROR = 0x80080002, - CO_E_SCM_RPC_FAILURE = 0x80080003, - CO_E_BAD_PATH = 0x80080004, - CO_E_SERVER_EXEC_FAILURE = 0x80080005, - CO_E_OBJSRV_RPC_FAILURE = 0x80080006, - MK_E_NO_NORMALIZED = 0x80080007, - CO_E_SERVER_STOPPING = 0x80080008, - MEM_E_INVALID_ROOT = 0x80080009, - MEM_E_INVALID_LINK = 0x80080010, - MEM_E_INVALID_SIZE = 0x80080011, - CO_S_NOTALLINTERFACES = 0x00080012, - - NTE_BAD_UID = 0x80090001, - NTE_BAD_HASH = 0x80090002, - NTE_BAD_KEY = 0x80090003, - NTE_BAD_LEN = 0x80090004, - NTE_BAD_DATA = 0x80090005, - NTE_BAD_SIGNATURE = 0x80090006, - NTE_BAD_VER = 0x80090007, - NTE_BAD_ALGID = 0x80090008, - NTE_BAD_FLAGS = 0x80090009, - NTE_BAD_TYPE = 0x8009000A, - NTE_BAD_KEY_STATE = 0x8009000B, - NTE_BAD_HASH_STATE = 0x8009000C, - NTE_NO_KEY = 0x8009000D, - NTE_NO_MEMORY = 0x8009000E, - NTE_EXISTS = 0x8009000F, - NTE_PERM = 0x80090010, - NTE_NOT_FOUND = 0x80090011, - NTE_DOUBLE_ENCRYPT = 0x80090012, - NTE_BAD_PROVIDER = 0x80090013, - NTE_BAD_PROV_TYPE = 0x80090014, - NTE_BAD_PUBLIC_KEY = 0x80090015, - NTE_BAD_KEYSET = 0x80090016, - NTE_PROV_TYPE_NOT_DEF = 0x80090017, - NTE_PROV_TYPE_ENTRY_BAD = 0x80090018, - NTE_KEYSET_NOT_DEF = 0x80090019, - NTE_KEYSET_ENTRY_BAD = 0x8009001A, - NTE_PROV_TYPE_NO_MATCH = 0x8009001B, - NTE_SIGNATURE_FILE_BAD = 0x8009001C, - NTE_PROVIDER_DLL_FAIL = 0x8009001D, - NTE_PROV_DLL_NOT_FOUND = 0x8009001E, - NTE_BAD_KEYSET_PARAM = 0x8009001F, - NTE_FAIL = 0x80090020, - NTE_SYS_ERR = 0x80090021 -} - - -enum : bool { - SEVERITY_SUCCESS = 0, - SEVERITY_ERROR = 1 -} - -enum : uint { - FACILITY_NULL = 0, - FACILITY_RPC, - FACILITY_DISPATCH, - FACILITY_STORAGE, - FACILITY_ITF, // = 4 - FACILITY_WIN32 = 7, - FACILITY_WINDOWS = 8, - FACILITY_CONTROL = 10, - FACILITY_NT_BIT = 0x10000000 -} - -// C Macros - -bool SUCCEEDED(HRESULT Status) { - return Status >= 0; -} - -bool FAILED(HRESULT Status) { - return Status < 0; -} - -bool IS_ERROR(HRESULT Status) { - return (Status >>> 31) == SEVERITY_ERROR; -} - -ushort HRESULT_CODE(HRESULT r) { - return cast(ushort) (r & 0xFFFF); -} - -ushort SCODE_CODE(SCODE r) { - return cast(ushort) (r & 0xFFFF); -} - -ushort HRESULT_FACILITY(HRESULT r) { - return cast(ushort) ((r>>16) & 0x1fff); -} - -ushort SCODE_FACILITY(SCODE r) { - return cast(ushort) ((r>>16) & 0x1fff); -} - -ushort HRESULT_SEVERITY(HRESULT r) { - return cast(ushort) ((r>>31) & 0x1); -} - -ushort SCODE_SEVERITY(SCODE r) { - return cast(ushort) ((r>>31) & 0x1); -} - -HRESULT MAKE_HRESULT(bool s, uint f, uint c) { - return (s << 31) | (f << 16) | c; -} - -SCODE MAKE_SCODE(bool s, uint f, uint c) { - return (s << 31) | (f << 16) | c; -} - -SCODE GetScode(HRESULT hr) { - return hr; -} - -HRESULT ResultFromScode(SCODE c) { - return c; -} - -HRESULT HRESULT_FROM_NT(HRESULT x) { - return x | FACILITY_NT_BIT; -} - -HRESULT HRESULT_FROM_WIN32(HRESULT x) { - return x ? (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000 : 0; -} - -HRESULT PropagateResult(HRESULT hrPrevious, SCODE scBase) { - return scBase; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winerror.d) + */ +module core.sys.windows.winerror; + +/* Comments from the Mingw header: + * WAIT_TIMEOUT is also defined in winbase.h + */ + +private import core.sys.windows.windef; + +alias int SCODE; // was in core.sys.windows.wtypes. + +enum : uint { + ERROR_SUCCESS = 0, + NO_ERROR = 0, + ERROR_INVALID_FUNCTION, + ERROR_FILE_NOT_FOUND, + ERROR_PATH_NOT_FOUND, + ERROR_TOO_MANY_OPEN_FILES, + ERROR_ACCESS_DENIED, + ERROR_INVALID_HANDLE, + ERROR_ARENA_TRASHED, + ERROR_NOT_ENOUGH_MEMORY, + ERROR_INVALID_BLOCK, + ERROR_BAD_ENVIRONMENT, + ERROR_BAD_FORMAT, + ERROR_INVALID_ACCESS, + ERROR_INVALID_DATA, + ERROR_OUTOFMEMORY, + ERROR_INVALID_DRIVE, + ERROR_CURRENT_DIRECTORY, + ERROR_NOT_SAME_DEVICE, + ERROR_NO_MORE_FILES, + ERROR_WRITE_PROTECT, + ERROR_BAD_UNIT, + ERROR_NOT_READY, + ERROR_BAD_COMMAND, + ERROR_CRC, + ERROR_BAD_LENGTH, + ERROR_SEEK, + ERROR_NOT_DOS_DISK, + ERROR_SECTOR_NOT_FOUND, + ERROR_OUT_OF_PAPER, + ERROR_WRITE_FAULT, + ERROR_READ_FAULT, + ERROR_GEN_FAILURE, + ERROR_SHARING_VIOLATION, + ERROR_LOCK_VIOLATION, + ERROR_WRONG_DISK, // = 34 + ERROR_SHARING_BUFFER_EXCEEDED = 36, + ERROR_HANDLE_EOF = 38, + ERROR_HANDLE_DISK_FULL, // = 39 + ERROR_NOT_SUPPORTED = 50, + ERROR_REM_NOT_LIST, + ERROR_DUP_NAME, + ERROR_BAD_NETPATH, + ERROR_NETWORK_BUSY, + ERROR_DEV_NOT_EXIST, + ERROR_TOO_MANY_CMDS, + ERROR_ADAP_HDW_ERR, + ERROR_BAD_NET_RESP, + ERROR_UNEXP_NET_ERR, + ERROR_BAD_REM_ADAP, + ERROR_PRINTQ_FULL, + ERROR_NO_SPOOL_SPACE, + ERROR_PRINT_CANCELLED, + ERROR_NETNAME_DELETED, + ERROR_NETWORK_ACCESS_DENIED, + ERROR_BAD_DEV_TYPE, + ERROR_BAD_NET_NAME, + ERROR_TOO_MANY_NAMES, + ERROR_TOO_MANY_SESS, + ERROR_SHARING_PAUSED, + ERROR_REQ_NOT_ACCEP, + ERROR_REDIR_PAUSED, // = 72 + ERROR_FILE_EXISTS = 80, + ERROR_CANNOT_MAKE = 82, + ERROR_FAIL_I24, + ERROR_OUT_OF_STRUCTURES, + ERROR_ALREADY_ASSIGNED, + ERROR_INVALID_PASSWORD, + ERROR_INVALID_PARAMETER, + ERROR_NET_WRITE_FAULT, + ERROR_NO_PROC_SLOTS, // = 89 + ERROR_TOO_MANY_SEMAPHORES = 100, + ERROR_EXCL_SEM_ALREADY_OWNED, + ERROR_SEM_IS_SET, + ERROR_TOO_MANY_SEM_REQUESTS, + ERROR_INVALID_AT_INTERRUPT_TIME, + ERROR_SEM_OWNER_DIED, + ERROR_SEM_USER_LIMIT, + ERROR_DISK_CHANGE, + ERROR_DRIVE_LOCKED, + ERROR_BROKEN_PIPE, + ERROR_OPEN_FAILED, + ERROR_BUFFER_OVERFLOW, + ERROR_DISK_FULL, + ERROR_NO_MORE_SEARCH_HANDLES, + ERROR_INVALID_TARGET_HANDLE, // = 114 + ERROR_INVALID_CATEGORY = 117, + ERROR_INVALID_VERIFY_SWITCH, + ERROR_BAD_DRIVER_LEVEL, + ERROR_CALL_NOT_IMPLEMENTED, + ERROR_SEM_TIMEOUT, + ERROR_INSUFFICIENT_BUFFER, + ERROR_INVALID_NAME, + ERROR_INVALID_LEVEL, + ERROR_NO_VOLUME_LABEL, + ERROR_MOD_NOT_FOUND, + ERROR_PROC_NOT_FOUND, + ERROR_WAIT_NO_CHILDREN, + ERROR_CHILD_NOT_COMPLETE, + ERROR_DIRECT_ACCESS_HANDLE, + ERROR_NEGATIVE_SEEK, + ERROR_SEEK_ON_DEVICE, + ERROR_IS_JOIN_TARGET, + ERROR_IS_JOINED, + ERROR_IS_SUBSTED, + ERROR_NOT_JOINED, + ERROR_NOT_SUBSTED, + ERROR_JOIN_TO_JOIN, + ERROR_SUBST_TO_SUBST, + ERROR_JOIN_TO_SUBST, + ERROR_SUBST_TO_JOIN, + ERROR_BUSY_DRIVE, + ERROR_SAME_DRIVE, + ERROR_DIR_NOT_ROOT, + ERROR_DIR_NOT_EMPTY, + ERROR_IS_SUBST_PATH, + ERROR_IS_JOIN_PATH, + ERROR_PATH_BUSY, + ERROR_IS_SUBST_TARGET, + ERROR_SYSTEM_TRACE, + ERROR_INVALID_EVENT_COUNT, + ERROR_TOO_MANY_MUXWAITERS, + ERROR_INVALID_LIST_FORMAT, + ERROR_LABEL_TOO_LONG, + ERROR_TOO_MANY_TCBS, + ERROR_SIGNAL_REFUSED, + ERROR_DISCARDED, + ERROR_NOT_LOCKED, + ERROR_BAD_THREADID_ADDR, + ERROR_BAD_ARGUMENTS, + ERROR_BAD_PATHNAME, + ERROR_SIGNAL_PENDING, // = 162 + ERROR_MAX_THRDS_REACHED = 164, + ERROR_LOCK_FAILED = 167, + ERROR_BUSY = 170, + ERROR_CANCEL_VIOLATION = 173, + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED, // = 174 + ERROR_INVALID_SEGMENT_NUMBER = 180, + ERROR_INVALID_ORDINAL = 182, + ERROR_ALREADY_EXISTS, // = 183 + ERROR_INVALID_FLAG_NUMBER = 186, + ERROR_SEM_NOT_FOUND, + ERROR_INVALID_STARTING_CODESEG, + ERROR_INVALID_STACKSEG, + ERROR_INVALID_MODULETYPE, + ERROR_INVALID_EXE_SIGNATURE, + ERROR_EXE_MARKED_INVALID, + ERROR_BAD_EXE_FORMAT, + ERROR_ITERATED_DATA_EXCEEDS_64k, + ERROR_INVALID_MINALLOCSIZE, + ERROR_DYNLINK_FROM_INVALID_RING, + ERROR_IOPL_NOT_ENABLED, + ERROR_INVALID_SEGDPL, + ERROR_AUTODATASEG_EXCEEDS_64k, + ERROR_RING2SEG_MUST_BE_MOVABLE, + ERROR_RELOC_CHAIN_XEEDS_SEGLIM, + ERROR_INFLOOP_IN_RELOC_CHAIN, + ERROR_ENVVAR_NOT_FOUND, // = 203 + ERROR_NO_SIGNAL_SENT = 205, + ERROR_FILENAME_EXCED_RANGE, + ERROR_RING2_STACK_IN_USE, + ERROR_META_EXPANSION_TOO_LONG, + ERROR_INVALID_SIGNAL_NUMBER, + ERROR_THREAD_1_INACTIVE, // = 210 + ERROR_LOCKED = 212, + ERROR_TOO_MANY_MODULES = 214, + ERROR_NESTING_NOT_ALLOWED, + ERROR_EXE_MACHINE_TYPE_MISMATCH, + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY, + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY, // = 218 + ERROR_BAD_PIPE = 230, + ERROR_PIPE_BUSY, + ERROR_NO_DATA, + ERROR_PIPE_NOT_CONNECTED, + ERROR_MORE_DATA, // = 234 + ERROR_VC_DISCONNECTED = 240, + ERROR_INVALID_EA_NAME = 254, + ERROR_EA_LIST_INCONSISTENT, // = 255 + WAIT_TIMEOUT = 258, + ERROR_NO_MORE_ITEMS, // = 259 + ERROR_CANNOT_COPY = 266, + ERROR_DIRECTORY, // = 267 + ERROR_EAS_DIDNT_FIT = 275, + ERROR_EA_FILE_CORRUPT, + ERROR_EA_TABLE_FULL, + ERROR_INVALID_EA_HANDLE, // = 278 + ERROR_EAS_NOT_SUPPORTED = 282, + ERROR_NOT_OWNER = 288, + ERROR_TOO_MANY_POSTS = 298, + ERROR_PARTIAL_COPY, + ERROR_OPLOCK_NOT_GRANTED, + ERROR_INVALID_OPLOCK_PROTOCOL, + ERROR_DISK_TOO_FRAGMENTED, + ERROR_DELETE_PENDING, // = 303 + ERROR_MR_MID_NOT_FOUND = 317, + ERROR_SCOPE_NOT_FOUND, // = 318 + ERROR_INVALID_ADDRESS = 487, + ERROR_ARITHMETIC_OVERFLOW = 534, + ERROR_PIPE_CONNECTED, + ERROR_PIPE_LISTENING, // = 536 + ERROR_EA_ACCESS_DENIED = 994, + ERROR_OPERATION_ABORTED, + ERROR_IO_INCOMPLETE, + ERROR_IO_PENDING, + ERROR_NOACCESS, + ERROR_SWAPERROR, // = 999 + ERROR_STACK_OVERFLOW = 1001, + ERROR_INVALID_MESSAGE, + ERROR_CAN_NOT_COMPLETE, + ERROR_INVALID_FLAGS, + ERROR_UNRECOGNIZED_VOLUME, + ERROR_FILE_INVALID, + ERROR_FULLSCREEN_MODE, + ERROR_NO_TOKEN, + ERROR_BADDB, + ERROR_BADKEY, + ERROR_CANTOPEN, + ERROR_CANTREAD, + ERROR_CANTWRITE, + ERROR_REGISTRY_RECOVERED, + ERROR_REGISTRY_CORRUPT, + ERROR_REGISTRY_IO_FAILED, + ERROR_NOT_REGISTRY_FILE, + ERROR_KEY_DELETED, + ERROR_NO_LOG_SPACE, + ERROR_KEY_HAS_CHILDREN, + ERROR_CHILD_MUST_BE_VOLATILE, + ERROR_NOTIFY_ENUM_DIR, // = 1022 + ERROR_DEPENDENT_SERVICES_RUNNING = 1051, + ERROR_INVALID_SERVICE_CONTROL, + ERROR_SERVICE_REQUEST_TIMEOUT, + ERROR_SERVICE_NO_THREAD, + ERROR_SERVICE_DATABASE_LOCKED, + ERROR_SERVICE_ALREADY_RUNNING, + ERROR_INVALID_SERVICE_ACCOUNT, + ERROR_SERVICE_DISABLED, + ERROR_CIRCULAR_DEPENDENCY, + ERROR_SERVICE_DOES_NOT_EXIST, + ERROR_SERVICE_CANNOT_ACCEPT_CTRL, + ERROR_SERVICE_NOT_ACTIVE, + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT, + ERROR_EXCEPTION_IN_SERVICE, + ERROR_DATABASE_DOES_NOT_EXIST, + ERROR_SERVICE_SPECIFIC_ERROR, + ERROR_PROCESS_ABORTED, + ERROR_SERVICE_DEPENDENCY_FAIL, + ERROR_SERVICE_LOGON_FAILED, + ERROR_SERVICE_START_HANG, + ERROR_INVALID_SERVICE_LOCK, + ERROR_SERVICE_MARKED_FOR_DELETE, + ERROR_SERVICE_EXISTS, + ERROR_ALREADY_RUNNING_LKG, + ERROR_SERVICE_DEPENDENCY_DELETED, + ERROR_BOOT_ALREADY_ACCEPTED, + ERROR_SERVICE_NEVER_STARTED, + ERROR_DUPLICATE_SERVICE_NAME, + ERROR_DIFFERENT_SERVICE_ACCOUNT, + ERROR_CANNOT_DETECT_DRIVER_FAILURE, + ERROR_CANNOT_DETECT_PROCESS_ABORT, + ERROR_NO_RECOVERY_PROGRAM, + ERROR_SERVICE_NOT_IN_EXE, + ERROR_NOT_SAFEBOOT_SERVICE, // = 1084 + ERROR_END_OF_MEDIA = 1100, + ERROR_FILEMARK_DETECTED, + ERROR_BEGINNING_OF_MEDIA, + ERROR_SETMARK_DETECTED, + ERROR_NO_DATA_DETECTED, + ERROR_PARTITION_FAILURE, + ERROR_INVALID_BLOCK_LENGTH, + ERROR_DEVICE_NOT_PARTITIONED, + ERROR_UNABLE_TO_LOCK_MEDIA, + ERROR_UNABLE_TO_UNLOAD_MEDIA, + ERROR_MEDIA_CHANGED, + ERROR_BUS_RESET, + ERROR_NO_MEDIA_IN_DRIVE, + ERROR_NO_UNICODE_TRANSLATION, + ERROR_DLL_INIT_FAILED, + ERROR_SHUTDOWN_IN_PROGRESS, + ERROR_NO_SHUTDOWN_IN_PROGRESS, + ERROR_IO_DEVICE, + ERROR_SERIAL_NO_DEVICE, + ERROR_IRQ_BUSY, + ERROR_MORE_WRITES, + ERROR_COUNTER_TIMEOUT, + ERROR_FLOPPY_ID_MARK_NOT_FOUND, + ERROR_FLOPPY_WRONG_CYLINDER, + ERROR_FLOPPY_UNKNOWN_ERROR, + ERROR_FLOPPY_BAD_REGISTERS, + ERROR_DISK_RECALIBRATE_FAILED, + ERROR_DISK_OPERATION_FAILED, + ERROR_DISK_RESET_FAILED, + ERROR_EOM_OVERFLOW, + ERROR_NOT_ENOUGH_SERVER_MEMORY, + ERROR_POSSIBLE_DEADLOCK, + ERROR_MAPPED_ALIGNMENT, // = 1132 + ERROR_SET_POWER_STATE_VETOED = 1140, + ERROR_SET_POWER_STATE_FAILED, + ERROR_TOO_MANY_LINKS, // = 1142 + ERROR_OLD_WIN_VERSION = 1150, + ERROR_APP_WRONG_OS, + ERROR_SINGLE_INSTANCE_APP, + ERROR_RMODE_APP, + ERROR_INVALID_DLL, + ERROR_NO_ASSOCIATION, + ERROR_DDE_FAIL, + ERROR_DLL_NOT_FOUND, + ERROR_NO_MORE_USER_HANDLES, + ERROR_MESSAGE_SYNC_ONLY, + ERROR_SOURCE_ELEMENT_EMPTY, + ERROR_DESTINATION_ELEMENT_FULL, + ERROR_ILLEGAL_ELEMENT_ADDRESS, + ERROR_MAGAZINE_NOT_PRESENT, + ERROR_DEVICE_REINITIALIZATION_NEEDED, + ERROR_DEVICE_REQUIRES_CLEANING, + ERROR_DEVICE_DOOR_OPEN, + ERROR_DEVICE_NOT_CONNECTED, + ERROR_NOT_FOUND, + ERROR_NO_MATCH, + ERROR_SET_NOT_FOUND, + ERROR_POINT_NOT_FOUND, + ERROR_NO_TRACKING_SERVICE, + ERROR_NO_VOLUME_ID, // = 1173 + ERROR_UNABLE_TO_REMOVE_REPLACED = 1175, + ERROR_UNABLE_TO_MOVE_REPLACEMENT, + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2, + ERROR_JOURNAL_DELETE_IN_PROGRESS, + ERROR_JOURNAL_NOT_ACTIVE, + ERROR_POTENTIAL_FILE_FOUND, + ERROR_JOURNAL_ENTRY_DELETED, // = 1181 + ERROR_BAD_DEVICE = 1200, + ERROR_CONNECTION_UNAVAIL, + ERROR_DEVICE_ALREADY_REMEMBERED, + ERROR_NO_NET_OR_BAD_PATH, + ERROR_BAD_PROVIDER, + ERROR_CANNOT_OPEN_PROFILE, + ERROR_BAD_PROFILE, + ERROR_NOT_CONTAINER, + ERROR_EXTENDED_ERROR, + ERROR_INVALID_GROUPNAME, + ERROR_INVALID_COMPUTERNAME, + ERROR_INVALID_EVENTNAME, + ERROR_INVALID_DOMAINNAME, + ERROR_INVALID_SERVICENAME, + ERROR_INVALID_NETNAME, + ERROR_INVALID_SHARENAME, + ERROR_INVALID_PASSWORDNAME, + ERROR_INVALID_MESSAGENAME, + ERROR_INVALID_MESSAGEDEST, + ERROR_SESSION_CREDENTIAL_CONFLICT, + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED, + ERROR_DUP_DOMAINNAME, + ERROR_NO_NETWORK, + ERROR_CANCELLED, + ERROR_USER_MAPPED_FILE, + ERROR_CONNECTION_REFUSED, + ERROR_GRACEFUL_DISCONNECT, + ERROR_ADDRESS_ALREADY_ASSOCIATED, + ERROR_ADDRESS_NOT_ASSOCIATED, + ERROR_CONNECTION_INVALID, + ERROR_CONNECTION_ACTIVE, + ERROR_NETWORK_UNREACHABLE, + ERROR_HOST_UNREACHABLE, + ERROR_PROTOCOL_UNREACHABLE, + ERROR_PORT_UNREACHABLE, + ERROR_REQUEST_ABORTED, + ERROR_CONNECTION_ABORTED, + ERROR_RETRY, + ERROR_CONNECTION_COUNT_LIMIT, + ERROR_LOGIN_TIME_RESTRICTION, + ERROR_LOGIN_WKSTA_RESTRICTION, + ERROR_INCORRECT_ADDRESS, + ERROR_ALREADY_REGISTERED, + ERROR_SERVICE_NOT_FOUND, + ERROR_NOT_AUTHENTICATED, + ERROR_NOT_LOGGED_ON, + ERROR_CONTINUE, + ERROR_ALREADY_INITIALIZED, + ERROR_NO_MORE_DEVICES, + ERROR_NO_SUCH_SITE, + ERROR_DOMAIN_CONTROLLER_EXISTS, + ERROR_ONLY_IF_CONNECTED, + ERROR_OVERRIDE_NOCHANGES, + ERROR_BAD_USER_PROFILE, + ERROR_NOT_SUPPORTED_ON_SBS, + ERROR_SERVER_SHUTDOWN_IN_PROGRESS, + ERROR_HOST_DOWN, + ERROR_NON_ACCOUNT_SID, + ERROR_NON_DOMAIN_SID, + ERROR_APPHELP_BLOCK, + ERROR_ACCESS_DISABLED_BY_POLICY, + ERROR_REG_NAT_CONSUMPTION, + ERROR_CSCSHARE_OFFLINE, + ERROR_PKINIT_FAILURE, + ERROR_SMARTCARD_SUBSYSTEM_FAILURE, + ERROR_DOWNGRADE_DETECTED, + SEC_E_SMARTCARD_CERT_REVOKED, + SEC_E_ISSUING_CA_UNTRUSTED, + SEC_E_REVOCATION_OFFLINE_C, + SEC_E_PKINIT_CLIENT_FAILUR, + SEC_E_SMARTCARD_CERT_EXPIRED, + ERROR_MACHINE_LOCKED, // = 1271 + ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273, + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED, + ERROR_DRIVER_BLOCKED, + ERROR_INVALID_IMPORT_OF_NON_DLL, + ERROR_ACCESS_DISABLED_WEBBLADE, + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER, + ERROR_RECOVERY_FAILURE, + ERROR_ALREADY_FIBER, + ERROR_ALREADY_THREAD, + ERROR_STACK_BUFFER_OVERRUN, + ERROR_PARAMETER_QUOTA_EXCEEDED, + ERROR_DEBUGGER_INACTIVE, // = 1284 + ERROR_NOT_ALL_ASSIGNED = 1300, + ERROR_SOME_NOT_MAPPED, + ERROR_NO_QUOTAS_FOR_ACCOUNT, + ERROR_LOCAL_USER_SESSION_KEY, + ERROR_NULL_LM_PASSWORD, + ERROR_UNKNOWN_REVISION, + ERROR_REVISION_MISMATCH, + ERROR_INVALID_OWNER, + ERROR_INVALID_PRIMARY_GROUP, + ERROR_NO_IMPERSONATION_TOKEN, + ERROR_CANT_DISABLE_MANDATORY, + ERROR_NO_LOGON_SERVERS, + ERROR_NO_SUCH_LOGON_SESSION, + ERROR_NO_SUCH_PRIVILEGE, + ERROR_PRIVILEGE_NOT_HELD, + ERROR_INVALID_ACCOUNT_NAME, + ERROR_USER_EXISTS, + ERROR_NO_SUCH_USER, + ERROR_GROUP_EXISTS, + ERROR_NO_SUCH_GROUP, + ERROR_MEMBER_IN_GROUP, + ERROR_MEMBER_NOT_IN_GROUP, + ERROR_LAST_ADMIN, + ERROR_WRONG_PASSWORD, + ERROR_ILL_FORMED_PASSWORD, + ERROR_PASSWORD_RESTRICTION, + ERROR_LOGON_FAILURE, + ERROR_ACCOUNT_RESTRICTION, + ERROR_INVALID_LOGON_HOURS, + ERROR_INVALID_WORKSTATION, + ERROR_PASSWORD_EXPIRED, + ERROR_ACCOUNT_DISABLED, + ERROR_NONE_MAPPED, + ERROR_TOO_MANY_LUIDS_REQUESTED, + ERROR_LUIDS_EXHAUSTED, + ERROR_INVALID_SUB_AUTHORITY, + ERROR_INVALID_ACL, + ERROR_INVALID_SID, + ERROR_INVALID_SECURITY_DESCR, // = 1338 + ERROR_BAD_INHERITANCE_ACL = 1340, + ERROR_SERVER_DISABLED, + ERROR_SERVER_NOT_DISABLED, + ERROR_INVALID_ID_AUTHORITY, + ERROR_ALLOTTED_SPACE_EXCEEDED, + ERROR_INVALID_GROUP_ATTRIBUTES, + ERROR_BAD_IMPERSONATION_LEVEL, + ERROR_CANT_OPEN_ANONYMOUS, + ERROR_BAD_VALIDATION_CLASS, + ERROR_BAD_TOKEN_TYPE, + ERROR_NO_SECURITY_ON_OBJECT, + ERROR_CANT_ACCESS_DOMAIN_INFO, + ERROR_INVALID_SERVER_STATE, + ERROR_INVALID_DOMAIN_STATE, + ERROR_INVALID_DOMAIN_ROLE, + ERROR_NO_SUCH_DOMAIN, + ERROR_DOMAIN_EXISTS, + ERROR_DOMAIN_LIMIT_EXCEEDED, + ERROR_INTERNAL_DB_CORRUPTION, + ERROR_INTERNAL_ERROR, + ERROR_GENERIC_NOT_MAPPED, + ERROR_BAD_DESCRIPTOR_FORMAT, + ERROR_NOT_LOGON_PROCESS, + ERROR_LOGON_SESSION_EXISTS, + ERROR_NO_SUCH_PACKAGE, + ERROR_BAD_LOGON_SESSION_STATE, + ERROR_LOGON_SESSION_COLLISION, + ERROR_INVALID_LOGON_TYPE, + ERROR_CANNOT_IMPERSONATE, + ERROR_RXACT_INVALID_STATE, + ERROR_RXACT_COMMIT_FAILURE, + ERROR_SPECIAL_ACCOUNT, + ERROR_SPECIAL_GROUP, + ERROR_SPECIAL_USER, + ERROR_MEMBERS_PRIMARY_GROUP, + ERROR_TOKEN_ALREADY_IN_USE, + ERROR_NO_SUCH_ALIAS, + ERROR_MEMBER_NOT_IN_ALIAS, + ERROR_MEMBER_IN_ALIAS, + ERROR_ALIAS_EXISTS, + ERROR_LOGON_NOT_GRANTED, + ERROR_TOO_MANY_SECRETS, + ERROR_SECRET_TOO_LONG, + ERROR_INTERNAL_DB_ERROR, + ERROR_TOO_MANY_CONTEXT_IDS, + ERROR_LOGON_TYPE_NOT_GRANTED, + ERROR_NT_CROSS_ENCRYPTION_REQUIRED, + ERROR_NO_SUCH_MEMBER, + ERROR_INVALID_MEMBER, + ERROR_TOO_MANY_SIDS, + ERROR_LM_CROSS_ENCRYPTION_REQUIRED, + ERROR_NO_INHERITANCE, + ERROR_FILE_CORRUPT, + ERROR_DISK_CORRUPT, + ERROR_NO_USER_SESSION_KEY, + ERROR_LICENSE_QUOTA_EXCEEDED, + ERROR_WRONG_TARGET_NAME, + ERROR_MUTUAL_AUTH_FAILED, + ERROR_TIME_SKEW, + ERROR_CURRENT_DOMAIN_NOT_ALLOWED, + ERROR_INVALID_WINDOW_HANDLE, + ERROR_INVALID_MENU_HANDLE, + ERROR_INVALID_CURSOR_HANDLE, + ERROR_INVALID_ACCEL_HANDLE, + ERROR_INVALID_HOOK_HANDLE, + ERROR_INVALID_DWP_HANDLE, + ERROR_TLW_WITH_WSCHILD, + ERROR_CANNOT_FIND_WND_CLASS, + ERROR_WINDOW_OF_OTHER_THREAD, + ERROR_HOTKEY_ALREADY_REGISTERED, + ERROR_CLASS_ALREADY_EXISTS, + ERROR_CLASS_DOES_NOT_EXIST, + ERROR_CLASS_HAS_WINDOWS, + ERROR_INVALID_INDEX, + ERROR_INVALID_ICON_HANDLE, + ERROR_PRIVATE_DIALOG_INDEX, + ERROR_LISTBOX_ID_NOT_FOUND, + ERROR_NO_WILDCARD_CHARACTERS, + ERROR_CLIPBOARD_NOT_OPEN, + ERROR_HOTKEY_NOT_REGISTERED, + ERROR_WINDOW_NOT_DIALOG, + ERROR_CONTROL_ID_NOT_FOUND, + ERROR_INVALID_COMBOBOX_MESSAGE, + ERROR_WINDOW_NOT_COMBOBOX, + ERROR_INVALID_EDIT_HEIGHT, + ERROR_DC_NOT_FOUND, + ERROR_INVALID_HOOK_FILTER, + ERROR_INVALID_FILTER_PROC, + ERROR_HOOK_NEEDS_HMOD, + ERROR_GLOBAL_ONLY_HOOK, + ERROR_JOURNAL_HOOK_SET, + ERROR_HOOK_NOT_INSTALLED, + ERROR_INVALID_LB_MESSAGE, + ERROR_SETCOUNT_ON_BAD_LB, + ERROR_LB_WITHOUT_TABSTOPS, + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD, + ERROR_CHILD_WINDOW_MENU, + ERROR_NO_SYSTEM_MENU, + ERROR_INVALID_MSGBOX_STYLE, + ERROR_INVALID_SPI_VALUE, + ERROR_SCREEN_ALREADY_LOCKED, + ERROR_HWNDS_HAVE_DIFF_PARENT, + ERROR_NOT_CHILD_WINDOW, + ERROR_INVALID_GW_COMMAND, + ERROR_INVALID_THREAD_ID, + ERROR_NON_MDICHILD_WINDOW, + ERROR_POPUP_ALREADY_ACTIVE, + ERROR_NO_SCROLLBARS, + ERROR_INVALID_SCROLLBAR_RANGE, + ERROR_INVALID_SHOWWIN_COMMAND, + ERROR_NO_SYSTEM_RESOURCES, + ERROR_NONPAGED_SYSTEM_RESOURCES, + ERROR_PAGED_SYSTEM_RESOURCES, + ERROR_WORKING_SET_QUOTA, + ERROR_PAGEFILE_QUOTA, + ERROR_COMMITMENT_LIMIT, + ERROR_MENU_ITEM_NOT_FOUND, + ERROR_INVALID_KEYBOARD_HANDLE, + ERROR_HOOK_TYPE_NOT_ALLOWED, + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION, + ERROR_TIMEOUT, + ERROR_INVALID_MONITOR_HANDLE, // = 1461 + ERROR_EVENTLOG_FILE_CORRUPT = 1500, + ERROR_EVENTLOG_CANT_START, + ERROR_LOG_FILE_FULL, + ERROR_EVENTLOG_FILE_CHANGED, // = 1503 + ERROR_INSTALL_SERVICE_FAILURE = 1601, + ERROR_INSTALL_USEREXIT, + ERROR_INSTALL_FAILURE, + ERROR_INSTALL_SUSPEND, + ERROR_UNKNOWN_PRODUCT, + ERROR_UNKNOWN_FEATURE, + ERROR_UNKNOWN_COMPONENT, + ERROR_UNKNOWN_PROPERTY, + ERROR_INVALID_HANDLE_STATE, + ERROR_BAD_CONFIGURATION, + ERROR_INDEX_ABSENT, + ERROR_INSTALL_SOURCE_ABSENT, + ERROR_INSTALL_PACKAGE_VERSION, + ERROR_PRODUCT_UNINSTALLED, + ERROR_BAD_QUERY_SYNTAX, + ERROR_INVALID_FIELD, + ERROR_DEVICE_REMOVED, + ERROR_INSTALL_ALREADY_RUNNING, + ERROR_INSTALL_PACKAGE_OPEN_FAILED, + ERROR_INSTALL_PACKAGE_INVALID, + ERROR_INSTALL_UI_FAILURE, + ERROR_INSTALL_LOG_FAILURE, + ERROR_INSTALL_LANGUAGE_UNSUPPORTED, + ERROR_INSTALL_TRANSFORM_FAILURE, + ERROR_INSTALL_PACKAGE_REJECTED, + ERROR_FUNCTION_NOT_CALLED, + ERROR_FUNCTION_FAILED, + ERROR_INVALID_TABLE, + ERROR_DATATYPE_MISMATCH, + ERROR_UNSUPPORTED_TYPE, + ERROR_CREATE_FAILED, + ERROR_INSTALL_TEMP_UNWRITABLE, + ERROR_INSTALL_PLATFORM_UNSUPPORTED, + ERROR_INSTALL_NOTUSED, + ERROR_PATCH_PACKAGE_OPEN_FAILED, + ERROR_PATCH_PACKAGE_INVALID, + ERROR_PATCH_PACKAGE_UNSUPPORTED, + ERROR_PRODUCT_VERSION, + ERROR_INVALID_COMMAND_LINE, + ERROR_INSTALL_REMOTE_DISALLOWED, + ERROR_SUCCESS_REBOOT_INITIATED, + ERROR_PATCH_TARGET_NOT_FOUND, + ERROR_PATCH_PACKAGE_REJECTED, + ERROR_INSTALL_TRANSFORM_REJECTED, + ERROR_INSTALL_REMOTE_PROHIBITED, // = 1645 + RPC_S_INVALID_STRING_BINDING = 1700, + RPC_S_WRONG_KIND_OF_BINDING, + RPC_S_INVALID_BINDING, + RPC_S_PROTSEQ_NOT_SUPPORTED, + RPC_S_INVALID_RPC_PROTSEQ, + RPC_S_INVALID_STRING_UUID, + RPC_S_INVALID_ENDPOINT_FORMAT, + RPC_S_INVALID_NET_ADDR, + RPC_S_NO_ENDPOINT_FOUND, + RPC_S_INVALID_TIMEOUT, + RPC_S_OBJECT_NOT_FOUND, + RPC_S_ALREADY_REGISTERED, + RPC_S_TYPE_ALREADY_REGISTERED, + RPC_S_ALREADY_LISTENING, + RPC_S_NO_PROTSEQS_REGISTERED, + RPC_S_NOT_LISTENING, + RPC_S_UNKNOWN_MGR_TYPE, + RPC_S_UNKNOWN_IF, + RPC_S_NO_BINDINGS, + RPC_S_NO_PROTSEQS, + RPC_S_CANT_CREATE_ENDPOINT, + RPC_S_OUT_OF_RESOURCES, + RPC_S_SERVER_UNAVAILABLE, + RPC_S_SERVER_TOO_BUSY, + RPC_S_INVALID_NETWORK_OPTIONS, + RPC_S_NO_CALL_ACTIVE, + RPC_S_CALL_FAILED, + RPC_S_CALL_FAILED_DNE, + RPC_S_PROTOCOL_ERROR, // = 1728 + RPC_S_UNSUPPORTED_TRANS_SYN = 1730, + RPC_S_UNSUPPORTED_TYPE = 1732, + RPC_S_INVALID_TAG, + RPC_S_INVALID_BOUND, + RPC_S_NO_ENTRY_NAME, + RPC_S_INVALID_NAME_SYNTAX, + RPC_S_UNSUPPORTED_NAME_SYNTAX, // = 1737 + RPC_S_UUID_NO_ADDRESS = 1739, + RPC_S_DUPLICATE_ENDPOINT, + RPC_S_UNKNOWN_AUTHN_TYPE, + RPC_S_MAX_CALLS_TOO_SMALL, + RPC_S_STRING_TOO_LONG, + RPC_S_PROTSEQ_NOT_FOUND, + RPC_S_PROCNUM_OUT_OF_RANGE, + RPC_S_BINDING_HAS_NO_AUTH, + RPC_S_UNKNOWN_AUTHN_SERVICE, + RPC_S_UNKNOWN_AUTHN_LEVEL, + RPC_S_INVALID_AUTH_IDENTITY, + RPC_S_UNKNOWN_AUTHZ_SERVICE, + EPT_S_INVALID_ENTRY, + EPT_S_CANT_PERFORM_OP, + EPT_S_NOT_REGISTERED, + RPC_S_NOTHING_TO_EXPORT, + RPC_S_INCOMPLETE_NAME, + RPC_S_INVALID_VERS_OPTION, + RPC_S_NO_MORE_MEMBERS, + RPC_S_NOT_ALL_OBJS_UNEXPORTED, + RPC_S_INTERFACE_NOT_FOUND, + RPC_S_ENTRY_ALREADY_EXISTS, + RPC_S_ENTRY_NOT_FOUND, + RPC_S_NAME_SERVICE_UNAVAILABLE, + RPC_S_INVALID_NAF_ID, + RPC_S_CANNOT_SUPPORT, + RPC_S_NO_CONTEXT_AVAILABLE, + RPC_S_INTERNAL_ERROR, + RPC_S_ZERO_DIVIDE, + RPC_S_ADDRESS_ERROR, + RPC_S_FP_DIV_ZERO, + RPC_S_FP_UNDERFLOW, + RPC_S_FP_OVERFLOW, + RPC_X_NO_MORE_ENTRIES, + RPC_X_SS_CHAR_TRANS_OPEN_FAIL, + RPC_X_SS_CHAR_TRANS_SHORT_FILE, + RPC_X_SS_IN_NULL_CONTEXT, // = 1775 + RPC_X_SS_CONTEXT_DAMAGED = 1777, + RPC_X_SS_HANDLES_MISMATCH, + RPC_X_SS_CANNOT_GET_CALL_HANDLE, + RPC_X_NULL_REF_POINTER, + RPC_X_ENUM_VALUE_OUT_OF_RANGE, + RPC_X_BYTE_COUNT_TOO_SMALL, + RPC_X_BAD_STUB_DATA, + ERROR_INVALID_USER_BUFFER, + ERROR_UNRECOGNIZED_MEDIA, + ERROR_NO_TRUST_LSA_SECRET, + ERROR_NO_TRUST_SAM_ACCOUNT, + ERROR_TRUSTED_DOMAIN_FAILURE, + ERROR_TRUSTED_RELATIONSHIP_FAILURE, + ERROR_TRUST_FAILURE, + RPC_S_CALL_IN_PROGRESS, + ERROR_NETLOGON_NOT_STARTED, + ERROR_ACCOUNT_EXPIRED, + ERROR_REDIRECTOR_HAS_OPEN_HANDLES, + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED, + ERROR_UNKNOWN_PORT, + ERROR_UNKNOWN_PRINTER_DRIVER, + ERROR_UNKNOWN_PRINTPROCESSOR, + ERROR_INVALID_SEPARATOR_FILE, + ERROR_INVALID_PRIORITY, + ERROR_INVALID_PRINTER_NAME, + ERROR_PRINTER_ALREADY_EXISTS, + ERROR_INVALID_PRINTER_COMMAND, + ERROR_INVALID_DATATYPE, + ERROR_INVALID_ENVIRONMENT, + RPC_S_NO_MORE_BINDINGS, + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT, + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT, + ERROR_DOMAIN_TRUST_INCONSISTENT, + ERROR_SERVER_HAS_OPEN_HANDLES, + ERROR_RESOURCE_DATA_NOT_FOUND, + ERROR_RESOURCE_TYPE_NOT_FOUND, + ERROR_RESOURCE_NAME_NOT_FOUND, + ERROR_RESOURCE_LANG_NOT_FOUND, + ERROR_NOT_ENOUGH_QUOTA, + RPC_S_NO_INTERFACES, + RPC_S_CALL_CANCELLED, + RPC_S_BINDING_INCOMPLETE, + RPC_S_COMM_FAILURE, + RPC_S_UNSUPPORTED_AUTHN_LEVEL, + RPC_S_NO_PRINC_NAME, + RPC_S_NOT_RPC_ERROR, + RPC_S_UUID_LOCAL_ONLY, + RPC_S_SEC_PKG_ERROR, + RPC_S_NOT_CANCELLED, + RPC_X_INVALID_ES_ACTION, + RPC_X_WRONG_ES_VERSION, + RPC_X_WRONG_STUB_VERSION, + RPC_X_INVALID_PIPE_OBJECT, + RPC_X_WRONG_PIPE_ORDER, + RPC_X_WRONG_PIPE_VERSION, // = 1832 + RPC_S_GROUP_MEMBER_NOT_FOUND = 1898, + EPT_S_CANT_CREATE, + RPC_S_INVALID_OBJECT, + ERROR_INVALID_TIME, + ERROR_INVALID_FORM_NAME, + ERROR_INVALID_FORM_SIZE, + ERROR_ALREADY_WAITING, + ERROR_PRINTER_DELETED, + ERROR_INVALID_PRINTER_STATE, + ERROR_PASSWORD_MUST_CHANGE, + ERROR_DOMAIN_CONTROLLER_NOT_FOUND, + ERROR_ACCOUNT_LOCKED_OUT, + OR_INVALID_OXID, + OR_INVALID_OID, + OR_INVALID_SET, + RPC_S_SEND_INCOMPLETE, + RPC_S_INVALID_ASYNC_HANDLE, + RPC_S_INVALID_ASYNC_CALL, + RPC_X_PIPE_CLOSED, + RPC_X_PIPE_DISCIPLINE_ERROR, + RPC_X_PIPE_EMPTY, + ERROR_NO_SITENAME, + ERROR_CANT_ACCESS_FILE, + ERROR_CANT_RESOLVE_FILENAME, + RPC_S_ENTRY_TYPE_MISMATCH, + RPC_S_NOT_ALL_OBJS_EXPORTED, + RPC_S_INTERFACE_NOT_EXPORTED, + RPC_S_PROFILE_NOT_ADDED, + RPC_S_PRF_ELT_NOT_ADDED, + RPC_S_PRF_ELT_NOT_REMOVED, + RPC_S_GRP_ELT_NOT_ADDED, + RPC_S_GRP_ELT_NOT_REMOVED, + ERROR_KM_DRIVER_BLOCKED, + ERROR_CONTEXT_EXPIRED, + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED, + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED, + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED, // = 1934 + ERROR_INVALID_PIXEL_FORMAT = 2000, + ERROR_BAD_DRIVER, + ERROR_INVALID_WINDOW_STYLE, + ERROR_METAFILE_NOT_SUPPORTED, + ERROR_TRANSFORM_NOT_SUPPORTED, + ERROR_CLIPPING_NOT_SUPPORTED, // = 2005 + ERROR_INVALID_CMM = 2010, + ERROR_INVALID_PROFILE, + ERROR_TAG_NOT_FOUND, + ERROR_TAG_NOT_PRESENT, + ERROR_DUPLICATE_TAG, + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE, + ERROR_PROFILE_NOT_FOUND, + ERROR_INVALID_COLORSPACE, + ERROR_ICM_NOT_ENABLED, + ERROR_DELETING_ICM_XFORM, + ERROR_INVALID_TRANSFORM, + ERROR_COLORSPACE_MISMATCH, + ERROR_INVALID_COLORINDEX, // = 2022 + ERROR_CONNECTED_OTHER_PASSWORD = 2108, + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT, // = 2109 + ERROR_BAD_USERNAME = 2202, + ERROR_NOT_CONNECTED = 2250, + ERROR_OPEN_FILES = 2401, + ERROR_ACTIVE_CONNECTIONS, // = 2402 + ERROR_DEVICE_IN_USE = 2404, + ERROR_UNKNOWN_PRINT_MONITOR = 3000, + ERROR_PRINTER_DRIVER_IN_USE, + ERROR_SPOOL_FILE_NOT_FOUND, + ERROR_SPL_NO_STARTDOC, + ERROR_SPL_NO_ADDJOB, + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED, + ERROR_PRINT_MONITOR_ALREADY_INSTALLED, + ERROR_INVALID_PRINT_MONITOR, + ERROR_PRINT_MONITOR_IN_USE, + ERROR_PRINTER_HAS_JOBS_QUEUED, + ERROR_SUCCESS_REBOOT_REQUIRED, + ERROR_SUCCESS_RESTART_REQUIRED, + ERROR_PRINTER_NOT_FOUND, + ERROR_PRINTER_DRIVER_WARNED, + ERROR_PRINTER_DRIVER_BLOCKED, // = 3014 + ERROR_WINS_INTERNAL = 4000, + ERROR_CAN_NOT_DEL_LOCAL_WINS, + ERROR_STATIC_INIT, + ERROR_INC_BACKUP, + ERROR_FULL_BACKUP, + ERROR_REC_NON_EXISTENT, + ERROR_RPL_NOT_ALLOWED, // = 4006 + ERROR_DHCP_ADDRESS_CONFLICT = 4100, + ERROR_WMI_GUID_NOT_FOUND = 4200, + ERROR_WMI_INSTANCE_NOT_FOUND, + ERROR_WMI_ITEMID_NOT_FOUND, + ERROR_WMI_TRY_AGAIN, + ERROR_WMI_DP_NOT_FOUND, + ERROR_WMI_UNRESOLVED_INSTANCE_REF, + ERROR_WMI_ALREADY_ENABLED, + ERROR_WMI_GUID_DISCONNECTED, + ERROR_WMI_SERVER_UNAVAILABLE, + ERROR_WMI_DP_FAILED, + ERROR_WMI_INVALID_MOF, + ERROR_WMI_INVALID_REGINFO, + ERROR_WMI_ALREADY_DISABLED, + ERROR_WMI_READ_ONLY, + ERROR_WMI_SET_FAILURE, // = 4214 + ERROR_INVALID_MEDIA = 4300, + ERROR_INVALID_LIBRARY, + ERROR_INVALID_MEDIA_POOL, + ERROR_DRIVE_MEDIA_MISMATCH, + ERROR_MEDIA_OFFLINE, + ERROR_LIBRARY_OFFLINE, + ERROR_EMPTY, + ERROR_NOT_EMPTY, + ERROR_MEDIA_UNAVAILABLE, + ERROR_RESOURCE_DISABLED, + ERROR_INVALID_CLEANER, + ERROR_UNABLE_TO_CLEAN, + ERROR_OBJECT_NOT_FOUND, + ERROR_DATABASE_FAILURE, + ERROR_DATABASE_FULL, + ERROR_MEDIA_INCOMPATIBLE, + ERROR_RESOURCE_NOT_PRESENT, + ERROR_INVALID_OPERATION, + ERROR_MEDIA_NOT_AVAILABLE, + ERROR_DEVICE_NOT_AVAILABLE, + ERROR_REQUEST_REFUSED, + ERROR_INVALID_DRIVE_OBJECT, + ERROR_LIBRARY_FULL, + ERROR_MEDIUM_NOT_ACCESSIBLE, + ERROR_UNABLE_TO_LOAD_MEDIUM, + ERROR_UNABLE_TO_INVENTORY_DRIVE, + ERROR_UNABLE_TO_INVENTORY_SLOT, + ERROR_UNABLE_TO_INVENTORY_TRANSPORT, + ERROR_TRANSPORT_FULL, + ERROR_CONTROLLING_IEPORT, + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA, + ERROR_CLEANER_SLOT_SET, + ERROR_CLEANER_SLOT_NOT_SET, + ERROR_CLEANER_CARTRIDGE_SPENT, + ERROR_UNEXPECTED_OMID, + ERROR_CANT_DELETE_LAST_ITEM, + ERROR_MESSAGE_EXCEEDS_MAX_SIZE, + ERROR_VOLUME_CONTAINS_SYS_FILES, + ERROR_INDIGENOUS_TYPE, + ERROR_NO_SUPPORTING_DRIVES, + ERROR_CLEANER_CARTRIDGE_INSTALLED, // = 4340 + ERROR_FILE_OFFLINE = 4350, + ERROR_REMOTE_STORAGE_NOT_ACTIVE, + ERROR_REMOTE_STORAGE_MEDIA_ERROR, // = 4352 + ERROR_NOT_A_REPARSE_POINT = 4390, + ERROR_REPARSE_ATTRIBUTE_CONFLICT, + ERROR_INVALID_REPARSE_DATA, + ERROR_REPARSE_TAG_INVALID, + ERROR_REPARSE_TAG_MISMATCH, // = 4394 + ERROR_VOLUME_NOT_SIS_ENABLED = 4500, + ERROR_DEPENDENT_RESOURCE_EXISTS = 5001, + ERROR_DEPENDENCY_NOT_FOUND, + ERROR_DEPENDENCY_ALREADY_EXISTS, + ERROR_RESOURCE_NOT_ONLINE, + ERROR_HOST_NODE_NOT_AVAILABLE, + ERROR_RESOURCE_NOT_AVAILABLE, + ERROR_RESOURCE_NOT_FOUND, + ERROR_SHUTDOWN_CLUSTER, + ERROR_CANT_EVICT_ACTIVE_NODE, + ERROR_OBJECT_ALREADY_EXISTS, + ERROR_OBJECT_IN_LIST, + ERROR_GROUP_NOT_AVAILABLE, + ERROR_GROUP_NOT_FOUND, + ERROR_GROUP_NOT_ONLINE, + ERROR_HOST_NODE_NOT_RESOURCE_OWNER, + ERROR_HOST_NODE_NOT_GROUP_OWNER, + ERROR_RESMON_CREATE_FAILED, + ERROR_RESMON_ONLINE_FAILED, + ERROR_RESOURCE_ONLINE, + ERROR_QUORUM_RESOURCE, + ERROR_NOT_QUORUM_CAPABLE, + ERROR_CLUSTER_SHUTTING_DOWN, + ERROR_INVALID_STATE, + ERROR_RESOURCE_PROPERTIES_STORED, + ERROR_NOT_QUORUM_CLASS, + ERROR_CORE_RESOURCE, + ERROR_QUORUM_RESOURCE_ONLINE_FAILED, + ERROR_QUORUMLOG_OPEN_FAILED, + ERROR_CLUSTERLOG_CORRUPT, + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE, + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE, + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND, + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE, + ERROR_QUORUM_OWNER_ALIVE, + ERROR_NETWORK_NOT_AVAILABLE, + ERROR_NODE_NOT_AVAILABLE, + ERROR_ALL_NODES_NOT_AVAILABLE, + ERROR_RESOURCE_FAILED, + ERROR_CLUSTER_INVALID_NODE, + ERROR_CLUSTER_NODE_EXISTS, + ERROR_CLUSTER_JOIN_IN_PROGRESS, + ERROR_CLUSTER_NODE_NOT_FOUND, + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND, + ERROR_CLUSTER_NETWORK_EXISTS, + ERROR_CLUSTER_NETWORK_NOT_FOUND, + ERROR_CLUSTER_NETINTERFACE_EXISTS, + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND, + ERROR_CLUSTER_INVALID_REQUEST, + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER, + ERROR_CLUSTER_NODE_DOWN, + ERROR_CLUSTER_NODE_UNREACHABLE, + ERROR_CLUSTER_NODE_NOT_MEMBER, + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS, + ERROR_CLUSTER_INVALID_NETWORK, // = 5054 + ERROR_CLUSTER_NODE_UP = 5056, + ERROR_CLUSTER_IPADDR_IN_USE, + ERROR_CLUSTER_NODE_NOT_PAUSED, + ERROR_CLUSTER_NO_SECURITY_CONTEXT, + ERROR_CLUSTER_NETWORK_NOT_INTERNAL, + ERROR_CLUSTER_NODE_ALREADY_UP, + ERROR_CLUSTER_NODE_ALREADY_DOWN, + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE, + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE, + ERROR_CLUSTER_NODE_ALREADY_MEMBER, + ERROR_CLUSTER_LAST_INTERNAL_NETWORK, + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS, + ERROR_INVALID_OPERATION_ON_QUORUM, + ERROR_DEPENDENCY_NOT_ALLOWED, + ERROR_CLUSTER_NODE_PAUSED, + ERROR_NODE_CANT_HOST_RESOURCE, + ERROR_CLUSTER_NODE_NOT_READY, + ERROR_CLUSTER_NODE_SHUTTING_DOWN, + ERROR_CLUSTER_JOIN_ABORTED, + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS, + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED, + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED, + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND, + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED, + ERROR_CLUSTER_RESNAME_NOT_FOUND, + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED, + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST, + ERROR_CLUSTER_DATABASE_SEQMISMATCH, + ERROR_RESMON_INVALID_STATE, + ERROR_CLUSTER_GUM_NOT_LOCKER, + ERROR_QUORUM_DISK_NOT_FOUND, + ERROR_DATABASE_BACKUP_CORRUPT, + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT, + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE, // = 5089 + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890, + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND, + ERROR_CLUSTER_MEMBERSHIP_HALT, + ERROR_CLUSTER_INSTANCE_ID_MISMATCH, + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP, + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH, + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP, + ERROR_CLUSTER_PARAMETER_MISMATCH, + ERROR_NODE_CANNOT_BE_CLUSTERED, + ERROR_CLUSTER_WRONG_OS_VERSION, + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME, + ERROR_CLUSCFG_ALREADY_COMMITTED, + ERROR_CLUSCFG_ROLLBACK_FAILED, + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT, + ERROR_CLUSTER_OLD_VERSION, + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME, // = 5905 + ERROR_ENCRYPTION_FAILED = 6000, + ERROR_DECRYPTION_FAILED, + ERROR_FILE_ENCRYPTED, + ERROR_NO_RECOVERY_POLICY, + ERROR_NO_EFS, + ERROR_WRONG_EFS, + ERROR_NO_USER_KEYS, + ERROR_FILE_NOT_ENCRYPTED, + ERROR_NOT_EXPORT_FORMAT, + ERROR_FILE_READ_ONLY, + ERROR_DIR_EFS_DISALLOWED, + ERROR_EFS_SERVER_NOT_TRUSTED, + ERROR_BAD_RECOVERY_POLICY, + ERROR_EFS_ALG_BLOB_TOO_BIG, + ERROR_VOLUME_NOT_SUPPORT_EFS, + ERROR_EFS_DISABLED, + ERROR_EFS_VERSION_NOT_SUPPORT, // = 6016 + ERROR_NO_BROWSER_SERVERS_FOUND = 6118, + SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200, + + ERROR_CTX_WINSTATION_NAME_INVALID = 7001, + ERROR_CTX_INVALID_PD, + ERROR_CTX_PD_NOT_FOUND, + ERROR_CTX_WD_NOT_FOUND, + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY, + ERROR_CTX_SERVICE_NAME_COLLISION, + ERROR_CTX_CLOSE_PENDING, + ERROR_CTX_NO_OUTBUF, + ERROR_CTX_MODEM_INF_NOT_FOUND, + ERROR_CTX_INVALID_MODEMNAME, + ERROR_CTX_MODEM_RESPONSE_ERROR, + ERROR_CTX_MODEM_RESPONSE_TIMEOUT, + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER, + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE, + ERROR_CTX_MODEM_RESPONSE_BUSY, + ERROR_CTX_MODEM_RESPONSE_VOICE, + ERROR_CTX_TD_ERROR, // = 7017 + ERROR_CTX_WINSTATION_NOT_FOUND = 7022, + ERROR_CTX_WINSTATION_ALREADY_EXISTS, + ERROR_CTX_WINSTATION_BUSY, + ERROR_CTX_BAD_VIDEO_MODE, // = 7025 + ERROR_CTX_GRAPHICS_INVALID = 7035, + ERROR_CTX_LOGON_DISABLED = 7037, + ERROR_CTX_NOT_CONSOLE, // = 7038 + ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040, + ERROR_CTX_CONSOLE_DISCONNECT, + ERROR_CTX_CONSOLE_CONNECT, // = 7042 + ERROR_CTX_SHADOW_DENIED = 7044, + ERROR_CTX_WINSTATION_ACCESS_DENIED, // = 7045 + ERROR_CTX_INVALID_WD = 7049, + ERROR_CTX_SHADOW_INVALID, + ERROR_CTX_SHADOW_DISABLED, + ERROR_CTX_CLIENT_LICENSE_IN_USE, + ERROR_CTX_CLIENT_LICENSE_NOT_SET, + ERROR_CTX_LICENSE_NOT_AVAILABLE, + ERROR_CTX_LICENSE_CLIENT_INVALID, + ERROR_CTX_LICENSE_EXPIRED, + ERROR_CTX_SHADOW_NOT_RUNNING, + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE, + ERROR_ACTIVATION_COUNT_EXCEEDED, // = 7059 + + FRS_ERR_INVALID_API_SEQUENCE = 8001, + FRS_ERR_STARTING_SERVICE, + FRS_ERR_STOPPING_SERVICE, + FRS_ERR_INTERNAL_API, + FRS_ERR_INTERNAL, + FRS_ERR_SERVICE_COMM, + FRS_ERR_INSUFFICIENT_PRIV, + FRS_ERR_AUTHENTICATION, + FRS_ERR_PARENT_INSUFFICIENT_PRIV, + FRS_ERR_PARENT_AUTHENTICATION, + FRS_ERR_CHILD_TO_PARENT_COMM, + FRS_ERR_PARENT_TO_CHILD_COMM, + FRS_ERR_SYSVOL_POPULATE, + FRS_ERR_SYSVOL_POPULATE_TIMEOUT, + FRS_ERR_SYSVOL_IS_BUSY, + FRS_ERR_SYSVOL_DEMOTE, + FRS_ERR_INVALID_SERVICE_PARAMETER, // = 8017 + ERROR_DS_NOT_INSTALLED = 8200, + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY, + ERROR_DS_NO_ATTRIBUTE_OR_VALUE, + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX, + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED, + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS, + ERROR_DS_BUSY, + ERROR_DS_UNAVAILABLE, + ERROR_DS_NO_RIDS_ALLOCATED, + ERROR_DS_NO_MORE_RIDS, + ERROR_DS_INCORRECT_ROLE_OWNER, + ERROR_DS_RIDMGR_INIT_ERROR, + ERROR_DS_OBJ_CLASS_VIOLATION, + ERROR_DS_CANT_ON_NON_LEAF, + ERROR_DS_CANT_ON_RDN, + ERROR_DS_CANT_MOD_OBJ_CLASS, + ERROR_DS_CROSS_DOM_MOVE_ERROR, + ERROR_DS_GC_NOT_AVAILABLE, + ERROR_SHARED_POLICY, + ERROR_POLICY_OBJECT_NOT_FOUND, + ERROR_POLICY_ONLY_IN_DS, + ERROR_PROMOTION_ACTIVE, + ERROR_NO_PROMOTION_ACTIVE, // = 8222 + ERROR_DS_OPERATIONS_ERROR = 8224, + ERROR_DS_PROTOCOL_ERROR, + ERROR_DS_TIMELIMIT_EXCEEDED, + ERROR_DS_SIZELIMIT_EXCEEDED, + ERROR_DS_ADMIN_LIMIT_EXCEEDED, + ERROR_DS_COMPARE_FALSE, + ERROR_DS_COMPARE_TRUE, + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED, + ERROR_DS_STRONG_AUTH_REQUIRED, + ERROR_DS_INAPPROPRIATE_AUTH, + ERROR_DS_AUTH_UNKNOWN, + ERROR_DS_REFERRAL, + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION, + ERROR_DS_CONFIDENTIALITY_REQUIRED, + ERROR_DS_INAPPROPRIATE_MATCHING, + ERROR_DS_CONSTRAINT_VIOLATION, + ERROR_DS_NO_SUCH_OBJECT, + ERROR_DS_ALIAS_PROBLEM, + ERROR_DS_INVALID_DN_SYNTAX, + ERROR_DS_IS_LEAF, + ERROR_DS_ALIAS_DEREF_PROBLEM, + ERROR_DS_UNWILLING_TO_PERFORM, + ERROR_DS_LOOP_DETECT, + ERROR_DS_NAMING_VIOLATION, + ERROR_DS_OBJECT_RESULTS_TOO_LARGE, + ERROR_DS_AFFECTS_MULTIPLE_DSAS, + ERROR_DS_SERVER_DOWN, + ERROR_DS_LOCAL_ERROR, + ERROR_DS_ENCODING_ERROR, + ERROR_DS_DECODING_ERROR, + ERROR_DS_FILTER_UNKNOWN, + ERROR_DS_PARAM_ERROR, + ERROR_DS_NOT_SUPPORTED, + ERROR_DS_NO_RESULTS_RETURNED, + ERROR_DS_CONTROL_NOT_FOUND, + ERROR_DS_CLIENT_LOOP, + ERROR_DS_REFERRAL_LIMIT_EXCEEDED, + ERROR_DS_SORT_CONTROL_MISSING, + ERROR_DS_OFFSET_RANGE_ERROR, // = 8262 + ERROR_DS_ROOT_MUST_BE_NC = 8301, + ERROR_DS_ADD_REPLICA_INHIBITED, + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA, + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED, + ERROR_DS_OBJ_STRING_NAME_EXISTS, + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA, + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA, + ERROR_DS_NO_REQUESTED_ATTS_FOUND, + ERROR_DS_USER_BUFFER_TO_SMALL, + ERROR_DS_ATT_IS_NOT_ON_OBJ, + ERROR_DS_ILLEGAL_MOD_OPERATION, + ERROR_DS_OBJ_TOO_LARGE, + ERROR_DS_BAD_INSTANCE_TYPE, + ERROR_DS_MASTERDSA_REQUIRED, + ERROR_DS_OBJECT_CLASS_REQUIRED, + ERROR_DS_MISSING_REQUIRED_ATT, + ERROR_DS_ATT_NOT_DEF_FOR_CLASS, + ERROR_DS_ATT_ALREADY_EXISTS, // = 8318 + ERROR_DS_CANT_ADD_ATT_VALUES = 8320, + ERROR_DS_SINGLE_VALUE_CONSTRAINT, + ERROR_DS_RANGE_CONSTRAINT, + ERROR_DS_ATT_VAL_ALREADY_EXISTS, + ERROR_DS_CANT_REM_MISSING_ATT, + ERROR_DS_CANT_REM_MISSING_ATT_VAL, + ERROR_DS_ROOT_CANT_BE_SUBREF, + ERROR_DS_NO_CHAINING, + ERROR_DS_NO_CHAINED_EVAL, + ERROR_DS_NO_PARENT_OBJECT, + ERROR_DS_PARENT_IS_AN_ALIAS, + ERROR_DS_CANT_MIX_MASTER_AND_REPS, + ERROR_DS_CHILDREN_EXIST, + ERROR_DS_OBJ_NOT_FOUND, + ERROR_DS_ALIASED_OBJ_MISSING, + ERROR_DS_BAD_NAME_SYNTAX, + ERROR_DS_ALIAS_POINTS_TO_ALIAS, + ERROR_DS_CANT_DEREF_ALIAS, + ERROR_DS_OUT_OF_SCOPE, + ERROR_DS_OBJECT_BEING_REMOVED, + ERROR_DS_CANT_DELETE_DSA_OBJ, + ERROR_DS_GENERIC_ERROR, + ERROR_DS_DSA_MUST_BE_INT_MASTER, + ERROR_DS_CLASS_NOT_DSA, + ERROR_DS_INSUFF_ACCESS_RIGHTS, + ERROR_DS_ILLEGAL_SUPERIOR, + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM, + ERROR_DS_NAME_TOO_MANY_PARTS, + ERROR_DS_NAME_TOO_LONG, + ERROR_DS_NAME_VALUE_TOO_LONG, + ERROR_DS_NAME_UNPARSEABLE, + ERROR_DS_NAME_TYPE_UNKNOWN, + ERROR_DS_NOT_AN_OBJECT, + ERROR_DS_SEC_DESC_TOO_SHORT, + ERROR_DS_SEC_DESC_INVALID, + ERROR_DS_NO_DELETED_NAME, + ERROR_DS_SUBREF_MUST_HAVE_PARENT, + ERROR_DS_NCNAME_MUST_BE_NC, + ERROR_DS_CANT_ADD_SYSTEM_ONLY, + ERROR_DS_CLASS_MUST_BE_CONCRETE, + ERROR_DS_INVALID_DMD, + ERROR_DS_OBJ_GUID_EXISTS, + ERROR_DS_NOT_ON_BACKLINK, + ERROR_DS_NO_CROSSREF_FOR_NC, + ERROR_DS_SHUTTING_DOWN, + ERROR_DS_UNKNOWN_OPERATION, + ERROR_DS_INVALID_ROLE_OWNER, + ERROR_DS_COULDNT_CONTACT_FSMO, + ERROR_DS_CROSS_NC_DN_RENAME, + ERROR_DS_CANT_MOD_SYSTEM_ONLY, + ERROR_DS_REPLICATOR_ONLY, + ERROR_DS_OBJ_CLASS_NOT_DEFINED, + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS, + ERROR_DS_NAME_REFERENCE_INVALID, + ERROR_DS_CROSS_REF_EXISTS, + ERROR_DS_CANT_DEL_MASTER_CROSSREF, + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD, + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX, + ERROR_DS_DUP_RDN, + ERROR_DS_DUP_OID, + ERROR_DS_DUP_MAPI_ID, + ERROR_DS_DUP_SCHEMA_ID_GUID, + ERROR_DS_DUP_LDAP_DISPLAY_NAME, + ERROR_DS_SEMANTIC_ATT_TEST, + ERROR_DS_SYNTAX_MISMATCH, + ERROR_DS_EXISTS_IN_MUST_HAVE, + ERROR_DS_EXISTS_IN_MAY_HAVE, + ERROR_DS_NONEXISTENT_MAY_HAVE, + ERROR_DS_NONEXISTENT_MUST_HAVE, + ERROR_DS_AUX_CLS_TEST_FAIL, + ERROR_DS_NONEXISTENT_POSS_SUP, + ERROR_DS_SUB_CLS_TEST_FAIL, + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX, + ERROR_DS_EXISTS_IN_AUX_CLS, + ERROR_DS_EXISTS_IN_SUB_CLS, + ERROR_DS_EXISTS_IN_POSS_SUP, + ERROR_DS_RECALCSCHEMA_FAILED, + ERROR_DS_TREE_DELETE_NOT_FINISHED, + ERROR_DS_CANT_DELETE, + ERROR_DS_ATT_SCHEMA_REQ_ID, + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX, + ERROR_DS_CANT_CACHE_ATT, + ERROR_DS_CANT_CACHE_CLASS, + ERROR_DS_CANT_REMOVE_ATT_CACHE, + ERROR_DS_CANT_REMOVE_CLASS_CACHE, + ERROR_DS_CANT_RETRIEVE_DN, + ERROR_DS_MISSING_SUPREF, + ERROR_DS_CANT_RETRIEVE_INSTANCE, + ERROR_DS_CODE_INCONSISTENCY, + ERROR_DS_DATABASE_ERROR, + ERROR_DS_GOVERNSID_MISSING, + ERROR_DS_MISSING_EXPECTED_ATT, + ERROR_DS_NCNAME_MISSING_CR_REF, + ERROR_DS_SECURITY_CHECKING_ERROR, + ERROR_DS_SCHEMA_NOT_LOADED, + ERROR_DS_SCHEMA_ALLOC_FAILED, + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX, + ERROR_DS_GCVERIFY_ERROR, + ERROR_DS_DRA_SCHEMA_MISMATCH, + ERROR_DS_CANT_FIND_DSA_OBJ, + ERROR_DS_CANT_FIND_EXPECTED_NC, + ERROR_DS_CANT_FIND_NC_IN_CACHE, + ERROR_DS_CANT_RETRIEVE_CHILD, + ERROR_DS_SECURITY_ILLEGAL_MODIFY, + ERROR_DS_CANT_REPLACE_HIDDEN_REC, + ERROR_DS_BAD_HIERARCHY_FILE, + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED, + ERROR_DS_CONFIG_PARAM_MISSING, + ERROR_DS_COUNTING_AB_INDICES_FAILED, + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED, + ERROR_DS_INTERNAL_FAILURE, + ERROR_DS_UNKNOWN_ERROR, + ERROR_DS_ROOT_REQUIRES_CLASS_TOP, + ERROR_DS_REFUSING_FSMO_ROLES, + ERROR_DS_MISSING_FSMO_SETTINGS, + ERROR_DS_UNABLE_TO_SURRENDER_ROLES, + ERROR_DS_DRA_GENERIC, + ERROR_DS_DRA_INVALID_PARAMETER, + ERROR_DS_DRA_BUSY, + ERROR_DS_DRA_BAD_DN, + ERROR_DS_DRA_BAD_NC, + ERROR_DS_DRA_DN_EXISTS, + ERROR_DS_DRA_INTERNAL_ERROR, + ERROR_DS_DRA_INCONSISTENT_DIT, + ERROR_DS_DRA_CONNECTION_FAILED, + ERROR_DS_DRA_BAD_INSTANCE_TYPE, + ERROR_DS_DRA_OUT_OF_MEM, + ERROR_DS_DRA_MAIL_PROBLEM, + ERROR_DS_DRA_REF_ALREADY_EXISTS, + ERROR_DS_DRA_REF_NOT_FOUND, + ERROR_DS_DRA_OBJ_IS_REP_SOURCE, + ERROR_DS_DRA_DB_ERROR, + ERROR_DS_DRA_NO_REPLICA, + ERROR_DS_DRA_ACCESS_DENIED, + ERROR_DS_DRA_NOT_SUPPORTED, + ERROR_DS_DRA_RPC_CANCELLED, + ERROR_DS_DRA_SOURCE_DISABLED, + ERROR_DS_DRA_SINK_DISABLED, + ERROR_DS_DRA_NAME_COLLISION, + ERROR_DS_DRA_SOURCE_REINSTALLED, + ERROR_DS_DRA_MISSING_PARENT, + ERROR_DS_DRA_PREEMPTED, + ERROR_DS_DRA_ABANDON_SYNC, + ERROR_DS_DRA_SHUTDOWN, + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET, + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA, + ERROR_DS_DRA_EXTN_CONNECTION_FAILED, + ERROR_DS_INSTALL_SCHEMA_MISMATCH, + ERROR_DS_DUP_LINK_ID, + ERROR_DS_NAME_ERROR_RESOLVING, + ERROR_DS_NAME_ERROR_NOT_FOUND, + ERROR_DS_NAME_ERROR_NOT_UNIQUE, + ERROR_DS_NAME_ERROR_NO_MAPPING, + ERROR_DS_NAME_ERROR_DOMAIN_ONLY, + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING, + ERROR_DS_CONSTRUCTED_ATT_MOD, + ERROR_DS_WRONG_OM_OBJ_CLASS, + ERROR_DS_DRA_REPL_PENDING, + ERROR_DS_DS_REQUIRED, + ERROR_DS_INVALID_LDAP_DISPLAY_NAME, + ERROR_DS_NON_BASE_SEARCH, + ERROR_DS_CANT_RETRIEVE_ATTS, + ERROR_DS_BACKLINK_WITHOUT_LINK, + ERROR_DS_EPOCH_MISMATCH, + ERROR_DS_SRC_NAME_MISMATCH, + ERROR_DS_SRC_AND_DST_NC_IDENTICAL, + ERROR_DS_DST_NC_MISMATCH, + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC, + ERROR_DS_SRC_GUID_MISMATCH, + ERROR_DS_CANT_MOVE_DELETED_OBJECT, + ERROR_DS_PDC_OPERATION_IN_PROGRESS, + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD, + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION, + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS, + ERROR_DS_NC_MUST_HAVE_NC_PARENT, + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE, + ERROR_DS_DST_DOMAIN_NOT_NATIVE, + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER, + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP, + ERROR_DS_CANT_MOVE_RESOURCE_GROUP, + ERROR_DS_INVALID_SEARCH_FLAG, + ERROR_DS_NO_TREE_DELETE_ABOVE_NC, + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE, + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE, + ERROR_DS_SAM_INIT_FAILURE, + ERROR_DS_SENSITIVE_GROUP_VIOLATION, + ERROR_DS_CANT_MOD_PRIMARYGROUPID, + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD, + ERROR_DS_NONSAFE_SCHEMA_CHANGE, + ERROR_DS_SCHEMA_UPDATE_DISALLOWED, + ERROR_DS_CANT_CREATE_UNDER_SCHEMA, + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION, + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE, + ERROR_DS_INVALID_GROUP_TYPE, + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN, + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN, + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER, + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER, + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER, + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER, + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER, + ERROR_DS_HAVE_PRIMARY_MEMBERS, + ERROR_DS_STRING_SD_CONVERSION_FAILED, + ERROR_DS_NAMING_MASTER_GC, + ERROR_DS_LOOKUP_FAILURE, + ERROR_DS_COULDNT_UPDATE_SPNS, + ERROR_DS_CANT_RETRIEVE_SD, + ERROR_DS_KEY_NOT_UNIQUE, + ERROR_DS_WRONG_LINKED_ATT_SYNTAX, + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD, + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY, + ERROR_DS_CANT_START, + ERROR_DS_INIT_FAILURE, + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION, + ERROR_DS_SOURCE_DOMAIN_IN_FOREST, + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST, + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED, + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN, + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER, + ERROR_DS_SRC_SID_EXISTS_IN_FOREST, + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH, + ERROR_SAM_INIT_FAILURE, + ERROR_DS_DRA_SCHEMA_INFO_SHIP, + ERROR_DS_DRA_SCHEMA_CONFLICT, + ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT, + ERROR_DS_DRA_OBJ_NC_MISMATCH, + ERROR_DS_NC_STILL_HAS_DSAS, + ERROR_DS_GC_REQUIRED, + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY, + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS, + ERROR_DS_CANT_ADD_TO_GC, + ERROR_DS_NO_CHECKPOINT_WITH_PDC, + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED, + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC, + ERROR_DS_INVALID_NAME_FOR_SPN, + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS, + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES, + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED, + ERROR_DS_MUST_BE_RUN_ON_DST_DC, + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER, + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ, + ERROR_DS_INIT_FAILURE_CONSOLE, + ERROR_DS_SAM_INIT_FAILURE_CONSOLE, + ERROR_DS_FOREST_VERSION_TOO_HIGH, + ERROR_DS_DOMAIN_VERSION_TOO_HIGH, + ERROR_DS_FOREST_VERSION_TOO_LOW, + ERROR_DS_DOMAIN_VERSION_TOO_LOW, + ERROR_DS_INCOMPATIBLE_VERSION, + ERROR_DS_LOW_DSA_VERSION, + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN, + ERROR_DS_NOT_SUPPORTED_SORT_ORDER, + ERROR_DS_NAME_NOT_UNIQUE, + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4, + ERROR_DS_OUT_OF_VERSION_STORE, + ERROR_DS_INCOMPATIBLE_CONTROLS_USED, + ERROR_DS_NO_REF_DOMAIN, + ERROR_DS_RESERVED_LINK_ID, + ERROR_DS_LINK_ID_NOT_AVAILABLE, + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER, + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE, + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC, + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG, + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT, + ERROR_DS_NAME_ERROR_TRUST_REFERRAL, + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER, + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD, + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2, + ERROR_DS_THREAD_LIMIT_EXCEEDED, + ERROR_DS_NOT_CLOSEST, + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF, + ERROR_DS_SINGLE_USER_MODE_FAILED, + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR, + ERROR_DS_NTDSCRIPT_PROCESS_ERROR, + ERROR_DS_DIFFERENT_REPL_EPOCHS, + ERROR_DS_DRS_EXTENSIONS_CHANGED, + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR, + ERROR_DS_NO_MSDS_INTID, + ERROR_DS_DUP_MSDS_INTID, + ERROR_DS_EXISTS_IN_RDNATTID, + ERROR_DS_AUTHORIZATION_FAILED, + ERROR_DS_INVALID_SCRIPT, + ERROR_DS_REMOTE_CROSSREF_OP_FAILED, + ERROR_DS_CROSS_REF_BUSY, + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN, + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC, + ERROR_DS_DUPLICATE_ID_FOUND, + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT, + ERROR_DS_GROUP_CONVERSION_ERROR, + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP, + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP, + ERROR_DS_ROLE_NOT_VERIFIED, + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL, + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS, + ERROR_DS_EXISTING_AD_CHILD_NC, // = 8613 + DNS_ERROR_RCODE_FORMAT_ERROR = 9001, + DNS_ERROR_RCODE_SERVER_FAILURE, + DNS_ERROR_RCODE_NAME_ERROR, + DNS_ERROR_RCODE_NOT_IMPLEMENTED, + DNS_ERROR_RCODE_REFUSED, + DNS_ERROR_RCODE_YXDOMAIN, + DNS_ERROR_RCODE_YXRRSET, + DNS_ERROR_RCODE_NXRRSET, + DNS_ERROR_RCODE_NOTAUTH, + DNS_ERROR_RCODE_NOTZONE, // = 9010 + DNS_ERROR_RCODE_BADSIG = 9016, + DNS_ERROR_RCODE_BADKEY, + DNS_ERROR_RCODE_BADTIME, // = 9018 + DNS_INFO_NO_RECORDS = 9501, + DNS_ERROR_BAD_PACKET, + DNS_ERROR_NO_PACKET, + DNS_ERROR_RCODE, + DNS_ERROR_UNSECURE_PACKET, // = 9505 + DNS_ERROR_INVALID_TYPE = 9551, + DNS_ERROR_INVALID_IP_ADDRESS, + DNS_ERROR_INVALID_PROPERTY, + DNS_ERROR_TRY_AGAIN_LATER, + DNS_ERROR_NOT_UNIQUE, + DNS_ERROR_NON_RFC_NAME, + DNS_STATUS_FQDN, + DNS_STATUS_DOTTED_NAME, + DNS_STATUS_SINGLE_PART_NAME, + DNS_ERROR_INVALID_NAME_CHAR, + DNS_ERROR_NUMERIC_NAME, + DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER, + DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION, + DNS_ERROR_CANNOT_FIND_ROOT_HINTS, + DNS_ERROR_INCONSISTENT_ROOT_HINTS, // = 9565 + DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601, + DNS_ERROR_NO_ZONE_INFO, + DNS_ERROR_INVALID_ZONE_OPERATION, + DNS_ERROR_ZONE_CONFIGURATION_ERROR, + DNS_ERROR_ZONE_HAS_NO_SOA_RECORD, + DNS_ERROR_ZONE_HAS_NO_NS_RECORDS, + DNS_ERROR_ZONE_LOCKED, + DNS_ERROR_ZONE_CREATION_FAILED, + DNS_ERROR_ZONE_ALREADY_EXISTS, + DNS_ERROR_AUTOZONE_ALREADY_EXISTS, + DNS_ERROR_INVALID_ZONE_TYPE, + DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP, + DNS_ERROR_ZONE_NOT_SECONDARY, + DNS_ERROR_NEED_SECONDARY_ADDRESSES, + DNS_ERROR_WINS_INIT_FAILED, + DNS_ERROR_NEED_WINS_SERVERS, + DNS_ERROR_NBSTAT_INIT_FAILED, + DNS_ERROR_SOA_DELETE_INVALID, + DNS_ERROR_FORWARDER_ALREADY_EXISTS, + DNS_ERROR_ZONE_REQUIRES_MASTER_IP, + DNS_ERROR_ZONE_IS_SHUTDOWN, // = 9621 + DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651, + DNS_ERROR_INVALID_DATAFILE_NAME, + DNS_ERROR_DATAFILE_OPEN_FAILURE, + DNS_ERROR_FILE_WRITEBACK_FAILED, + DNS_ERROR_DATAFILE_PARSING, // = 9655 + DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701, + DNS_ERROR_RECORD_FORMAT, + DNS_ERROR_NODE_CREATION_FAILED, + DNS_ERROR_UNKNOWN_RECORD_TYPE, + DNS_ERROR_RECORD_TIMED_OUT, + DNS_ERROR_NAME_NOT_IN_ZONE, + DNS_ERROR_CNAME_LOOP, + DNS_ERROR_NODE_IS_CNAME, + DNS_ERROR_CNAME_COLLISION, + DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT, + DNS_ERROR_RECORD_ALREADY_EXISTS, + DNS_ERROR_SECONDARY_DATA, + DNS_ERROR_NO_CREATE_CACHE_DATA, + DNS_ERROR_NAME_DOES_NOT_EXIST, + DNS_WARNING_PTR_CREATE_FAILED, + DNS_WARNING_DOMAIN_UNDELETED, + DNS_ERROR_DS_UNAVAILABLE, + DNS_ERROR_DS_ZONE_ALREADY_EXISTS, + DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE, // = 9719 + DNS_INFO_AXFR_COMPLETE = 9751, + DNS_ERROR_AXFR, + DNS_INFO_ADDED_LOCAL_WINS, // = 9753 + DNS_STATUS_CONTINUE_NEEDED = 9801, + DNS_ERROR_NO_TCPIP = 9851, + DNS_ERROR_NO_DNS_SERVERS, // = 9852 + DNS_ERROR_DP_DOES_NOT_EXIST = 9901, + DNS_ERROR_DP_ALREADY_EXISTS, + DNS_ERROR_DP_NOT_ENLISTED, + DNS_ERROR_DP_ALREADY_ENLISTED, + DNS_ERROR_DP_NOT_AVAILABLE, // = 9905 + +/+ already in winsock2.d defined! + + WSABASEERR = 10000, + WSAEINTR = 10004, + WSAEBADF = 10009, + WSAEACCES = 10013, + WSAEFAULT, // = 10014 + WSAEINVAL = 10022, + WSAEMFILE = 10024, + WSAEWOULDBLOCK = 10035, + WSAEINPROGRESS, + WSAEALREADY, + WSAENOTSOCK, + WSAEDESTADDRREQ, + WSAEMSGSIZE, + WSAEPROTOTYPE, + WSAENOPROTOOPT, + WSAEPROTONOSUPPORT, + WSAESOCKTNOSUPPORT, + WSAEOPNOTSUPP, + WSAEPFNOSUPPORT, + WSAEAFNOSUPPORT, + WSAEADDRINUSE, + WSAEADDRNOTAVAIL, + WSAENETDOWN, + WSAENETUNREACH, + WSAENETRESET, + WSAECONNABORTED, + WSAECONNRESET, + WSAENOBUFS, + WSAEISCONN, + WSAENOTCONN, + WSAESHUTDOWN, + WSAETOOMANYREFS, + WSAETIMEDOUT, + WSAECONNREFUSED, + WSAELOOP, + WSAENAMETOOLONG, + WSAEHOSTDOWN, + WSAEHOSTUNREACH, + WSAENOTEMPTY, + WSAEPROCLIM, + WSAEUSERS, + WSAEDQUOT, + WSAESTALE, + WSAEREMOTE, // = 10071 + WSASYSNOTREADY = 10091, + WSAVERNOTSUPPORTED, + WSANOTINITIALISED, // = 10093 + WSAEDISCON = 10101, + WSAENOMORE, + WSAECANCELLED, + WSAEINVALIDPROCTABLE, + WSAEINVALIDPROVIDER, + WSAEPROVIDERFAILEDINIT, + WSASYSCALLFAILURE, + WSASERVICE_NOT_FOUND, + WSATYPE_NOT_FOUND, + WSA_E_NO_MORE, + WSA_E_CANCELLED, + WSAEREFUSED, // = 10112 + WSAHOST_NOT_FOUND = 11001, + WSATRY_AGAIN, + WSANO_RECOVERY, + WSANO_DATA, + WSA_QOS_RECEIVERS, + WSA_QOS_SENDERS, + WSA_QOS_NO_SENDERS, + WSA_QOS_NO_RECEIVERS, + WSA_QOS_REQUEST_CONFIRMED, + WSA_QOS_ADMISSION_FAILURE, + WSA_QOS_POLICY_FAILURE, + WSA_QOS_BAD_STYLE, + WSA_QOS_BAD_OBJECT, + WSA_QOS_TRAFFIC_CTRL_ERROR, + WSA_QOS_GENERIC_ERROR, + WSA_QOS_ESERVICETYPE, + WSA_QOS_EFLOWSPEC, + WSA_QOS_EPROVSPECBUF, + WSA_QOS_EFILTERSTYLE, + WSA_QOS_EFILTERTYPE, + WSA_QOS_EFILTERCOUNT, + WSA_QOS_EOBJLENGTH, + WSA_QOS_EFLOWCOUNT, + WSA_QOS_EUNKNOWNPSOBJ, + WSA_QOS_EPOLICYOBJ, + WSA_QOS_EFLOWDESC, + WSA_QOS_EPSFLOWSPEC, + WSA_QOS_EPSFILTERSPEC, + WSA_QOS_ESDMODEOBJ, + WSA_QOS_ESHAPERATEOBJ, + WSA_QOS_RESERVED_PETYPE, // = 11031 + ++/ + + ERROR_IPSEC_QM_POLICY_EXISTS = 13000, + ERROR_IPSEC_QM_POLICY_NOT_FOUND, + ERROR_IPSEC_QM_POLICY_IN_USE, + ERROR_IPSEC_MM_POLICY_EXISTS, + ERROR_IPSEC_MM_POLICY_NOT_FOUND, + ERROR_IPSEC_MM_POLICY_IN_USE, + ERROR_IPSEC_MM_FILTER_EXISTS, + ERROR_IPSEC_MM_FILTER_NOT_FOUND, + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS, + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND, + ERROR_IPSEC_MM_AUTH_EXISTS, + ERROR_IPSEC_MM_AUTH_NOT_FOUND, + ERROR_IPSEC_MM_AUTH_IN_USE, + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND, + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND, + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND, + ERROR_IPSEC_TUNNEL_FILTER_EXISTS, + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND, + ERROR_IPSEC_MM_FILTER_PENDING_DELETION, + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION, + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION, + ERROR_IPSEC_MM_POLICY_PENDING_DELETION, + ERROR_IPSEC_MM_AUTH_PENDING_DELETION, + ERROR_IPSEC_QM_POLICY_PENDING_DELETION, + WARNING_IPSEC_MM_POLICY_PRUNED, + WARNING_IPSEC_QM_POLICY_PRUNED, // = 13025 + ERROR_IPSEC_IKE_AUTH_FAIL = 13801, + ERROR_IPSEC_IKE_ATTRIB_FAIL, + ERROR_IPSEC_IKE_NEGOTIATION_PENDING, + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR, + ERROR_IPSEC_IKE_TIMED_OUT, + ERROR_IPSEC_IKE_NO_CERT, + ERROR_IPSEC_IKE_SA_DELETED, + ERROR_IPSEC_IKE_SA_REAPED, + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP, + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP, + ERROR_IPSEC_IKE_QUEUE_DROP_MM, + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM, + ERROR_IPSEC_IKE_DROP_NO_RESPONSE, + ERROR_IPSEC_IKE_MM_DELAY_DROP, + ERROR_IPSEC_IKE_QM_DELAY_DROP, + ERROR_IPSEC_IKE_ERROR, + ERROR_IPSEC_IKE_CRL_FAILED, + ERROR_IPSEC_IKE_INVALID_KEY_USAGE, + ERROR_IPSEC_IKE_INVALID_CERT_TYPE, + ERROR_IPSEC_IKE_NO_PRIVATE_KEY, // = 13820 + ERROR_IPSEC_IKE_DH_FAIL = 13822, + ERROR_IPSEC_IKE_INVALID_HEADER = 13824, + ERROR_IPSEC_IKE_NO_POLICY, + ERROR_IPSEC_IKE_INVALID_SIGNATURE, + ERROR_IPSEC_IKE_KERBEROS_ERROR, + ERROR_IPSEC_IKE_NO_PUBLIC_KEY, + ERROR_IPSEC_IKE_PROCESS_ERR, + ERROR_IPSEC_IKE_PROCESS_ERR_SA, + ERROR_IPSEC_IKE_PROCESS_ERR_PROP, + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS, + ERROR_IPSEC_IKE_PROCESS_ERR_KE, + ERROR_IPSEC_IKE_PROCESS_ERR_ID, + ERROR_IPSEC_IKE_PROCESS_ERR_CERT, + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ, + ERROR_IPSEC_IKE_PROCESS_ERR_HASH, + ERROR_IPSEC_IKE_PROCESS_ERR_SIG, + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE, + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY, + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE, + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR, + ERROR_IPSEC_IKE_INVALID_PAYLOAD, + ERROR_IPSEC_IKE_LOAD_SOFT_SA, + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN, + ERROR_IPSEC_IKE_INVALID_COOKIE, + ERROR_IPSEC_IKE_NO_PEER_CERT, + ERROR_IPSEC_IKE_PEER_CRL_FAILED, + ERROR_IPSEC_IKE_POLICY_CHANGE, + ERROR_IPSEC_IKE_NO_MM_POLICY, + ERROR_IPSEC_IKE_NOTCBPRIV, + ERROR_IPSEC_IKE_SECLOADFAIL, + ERROR_IPSEC_IKE_FAILSSPINIT, + ERROR_IPSEC_IKE_FAILQUERYSSP, + ERROR_IPSEC_IKE_SRVACQFAIL, + ERROR_IPSEC_IKE_SRVQUERYCRED, + ERROR_IPSEC_IKE_GETSPIFAIL, + ERROR_IPSEC_IKE_INVALID_FILTER, + ERROR_IPSEC_IKE_OUT_OF_MEMORY, + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED, + ERROR_IPSEC_IKE_INVALID_POLICY, + ERROR_IPSEC_IKE_UNKNOWN_DOI, + ERROR_IPSEC_IKE_INVALID_SITUATION, + ERROR_IPSEC_IKE_DH_FAILURE, + ERROR_IPSEC_IKE_INVALID_GROUP, + ERROR_IPSEC_IKE_ENCRYPT, + ERROR_IPSEC_IKE_DECRYPT, + ERROR_IPSEC_IKE_POLICY_MATCH, + ERROR_IPSEC_IKE_UNSUPPORTED_ID, + ERROR_IPSEC_IKE_INVALID_HASH, + ERROR_IPSEC_IKE_INVALID_HASH_ALG, + ERROR_IPSEC_IKE_INVALID_HASH_SIZE, + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG, + ERROR_IPSEC_IKE_INVALID_AUTH_ALG, + ERROR_IPSEC_IKE_INVALID_SIG, + ERROR_IPSEC_IKE_LOAD_FAILED, + ERROR_IPSEC_IKE_RPC_DELETE, + ERROR_IPSEC_IKE_BENIGN_REINIT, + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY, // = 13879 + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881, + ERROR_IPSEC_IKE_MM_LIMIT, + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED, + ERROR_IPSEC_IKE_NEG_STATUS_END, + ERROR_SXS_SECTION_NOT_FOUND, + ERROR_SXS_CANT_GEN_ACTCTX, + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT, + ERROR_SXS_ASSEMBLY_NOT_FOUND, + ERROR_SXS_MANIFEST_FORMAT_ERROR, + ERROR_SXS_MANIFEST_PARSE_ERROR, + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED, + ERROR_SXS_KEY_NOT_FOUND, + ERROR_SXS_VERSION_CONFLICT, + ERROR_SXS_WRONG_SECTION_TYPE, + ERROR_SXS_THREAD_QUERIES_DISABLED, + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET, + ERROR_SXS_UNKNOWN_ENCODING_GROUP, + ERROR_SXS_UNKNOWN_ENCODING, + ERROR_SXS_INVALID_XML_NAMESPACE_URI, + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED, + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED, + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE, + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE, + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE, + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT, + ERROR_SXS_DUPLICATE_DLL_NAME, + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME, + ERROR_SXS_DUPLICATE_CLSID, + ERROR_SXS_DUPLICATE_IID, + ERROR_SXS_DUPLICATE_TLBID, + ERROR_SXS_DUPLICATE_PROGID, + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME, + ERROR_SXS_FILE_HASH_MISMATCH, + ERROR_SXS_POLICY_PARSE_ERROR, + ERROR_SXS_XML_E_MISSINGQUOTE, + ERROR_SXS_XML_E_COMMENTSYNTAX, + ERROR_SXS_XML_E_BADSTARTNAMECHAR, + ERROR_SXS_XML_E_BADNAMECHAR, + ERROR_SXS_XML_E_BADCHARINSTRING, + ERROR_SXS_XML_E_XMLDECLSYNTAX, + ERROR_SXS_XML_E_BADCHARDATA, + ERROR_SXS_XML_E_MISSINGWHITESPACE, + ERROR_SXS_XML_E_EXPECTINGTAGEND, + ERROR_SXS_XML_E_MISSINGSEMICOLON, + ERROR_SXS_XML_E_UNBALANCEDPAREN, + ERROR_SXS_XML_E_INTERNALERROR, + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE, + ERROR_SXS_XML_E_INCOMPLETE_ENCODING, + ERROR_SXS_XML_E_MISSING_PAREN, + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE, + ERROR_SXS_XML_E_MULTIPLE_COLONS, + ERROR_SXS_XML_E_INVALID_DECIMAL, + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL, + ERROR_SXS_XML_E_INVALID_UNICODE, + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK, + ERROR_SXS_XML_E_UNEXPECTEDENDTAG, + ERROR_SXS_XML_E_UNCLOSEDTAG, + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE, + ERROR_SXS_XML_E_MULTIPLEROOTS, + ERROR_SXS_XML_E_INVALIDATROOTLEVEL, + ERROR_SXS_XML_E_BADXMLDECL, + ERROR_SXS_XML_E_MISSINGROOT, + ERROR_SXS_XML_E_UNEXPECTEDEOF, + ERROR_SXS_XML_E_BADPEREFINSUBSET, + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG, + ERROR_SXS_XML_E_UNCLOSEDENDTAG, + ERROR_SXS_XML_E_UNCLOSEDSTRING, + ERROR_SXS_XML_E_UNCLOSEDCOMMENT, + ERROR_SXS_XML_E_UNCLOSEDDECL, + ERROR_SXS_XML_E_UNCLOSEDCDATA, + ERROR_SXS_XML_E_RESERVEDNAMESPACE, + ERROR_SXS_XML_E_INVALIDENCODING, + ERROR_SXS_XML_E_INVALIDSWITCH, + ERROR_SXS_XML_E_BADXMLCASE, + ERROR_SXS_XML_E_INVALID_STANDALONE, + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE, + ERROR_SXS_XML_E_INVALID_VERSION, + ERROR_SXS_XML_E_MISSINGEQUALS, + ERROR_SXS_PROTECTION_RECOVERY_FAILED, + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT, + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID, + ERROR_SXS_UNTRANSLATABLE_HRESULT, + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING, + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE, + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME // = 14080 +} + +enum : HRESULT { + S_OK = 0x00000000, + S_FALSE = 0x00000001, + + NOERROR = 0x00000000, + + E_PENDING = 0x8000000A, + E_NOTIMPL = 0x80004001, + E_NOINTERFACE = 0x80004002, + E_POINTER = 0x80004003, + E_ABORT = 0x80004004, + E_FAIL = 0x80004005, + E_ACCESSDENIED = 0x80070005, + E_HANDLE = 0x80070006, + E_OUTOFMEMORY = 0x8007000E, + E_INVALIDARG = 0x80070057, + E_UNEXPECTED = 0x8000FFFF, + + CO_E_INIT_TLS = 0x80004006, + CO_E_INIT_SHARED_ALLOCATOR = 0x80004007, + CO_E_INIT_MEMORY_ALLOCATOR = 0x80004008, + CO_E_INIT_CLASS_CACHE = 0x80004009, + CO_E_INIT_RPC_CHANNEL = 0x8000400A, + CO_E_INIT_TLS_SET_CHANNEL_CONTROL = 0x8000400B, + CO_E_INIT_TLS_CHANNEL_CONTROL = 0x8000400C, + CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = 0x8000400D, + CO_E_INIT_SCM_MUTEX_EXISTS = 0x8000400E, + CO_E_INIT_SCM_FILE_MAPPING_EXISTS = 0x8000400F, + CO_E_INIT_SCM_MAP_VIEW_OF_FILE = 0x80004010, + CO_E_INIT_SCM_EXEC_FAILURE = 0x80004011, + CO_E_INIT_ONLY_SINGLE_THREADED = 0x80004012, + + RPC_E_CALL_REJECTED = 0x80010001, + RPC_E_CALL_CANCELED = 0x80010002, + RPC_E_CANTPOST_INSENDCALL = 0x80010003, + RPC_E_CANTCALLOUT_INASYNCCALL = 0x80010004, + RPC_E_CANTCALLOUT_INEXTERNALCALL = 0x80010005, + RPC_E_CONNECTION_TERMINATED = 0x80010006, + RPC_E_SERVER_DIED = 0x80010007, + RPC_E_CLIENT_DIED = 0x80010008, + RPC_E_INVALID_DATAPACKET = 0x80010009, + RPC_E_CANTTRANSMIT_CALL = 0x8001000A, + RPC_E_CLIENT_CANTMARSHAL_DATA = 0x8001000B, + RPC_E_CLIENT_CANTUNMARSHAL_DATA = 0x8001000C, + RPC_E_SERVER_CANTMARSHAL_DATA = 0x8001000D, + RPC_E_SERVER_CANTUNMARSHAL_DATA = 0x8001000E, + RPC_E_INVALID_DATA = 0x8001000F, + RPC_E_INVALID_PARAMETER = 0x80010010, + RPC_E_CANTCALLOUT_AGAIN = 0x80010011, + RPC_E_SERVER_DIED_DNE = 0x80010012, + RPC_E_SYS_CALL_FAILED = 0x80010100, + RPC_E_OUT_OF_RESOURCES = 0x80010101, + RPC_E_ATTEMPTED_MULTITHREAD = 0x80010102, + RPC_E_NOT_REGISTERED = 0x80010103, + RPC_E_FAULT = 0x80010104, + RPC_E_SERVERFAULT = 0x80010105, + RPC_E_CHANGED_MODE = 0x80010106, + RPC_E_INVALIDMETHOD = 0x80010107, + RPC_E_DISCONNECTED = 0x80010108, + RPC_E_RETRY = 0x80010109, + RPC_E_SERVERCALL_RETRYLATER = 0x8001010A, + RPC_E_SERVERCALL_REJECTED = 0x8001010B, + RPC_E_INVALID_CALLDATA = 0x8001010C, + RPC_E_CANTCALLOUT_ININPUTSYNCCALL = 0x8001010D, + RPC_E_WRONG_THREAD = 0x8001010E, + RPC_E_THREAD_NOT_INIT = 0x8001010F, + RPC_E_UNEXPECTED = 0x8001FFFF, + + DISP_E_UNKNOWNINTERFACE = 0x80020001, + DISP_E_MEMBERNOTFOUND = 0x80020003, + DISP_E_PARAMNOTFOUND = 0x80020004, + DISP_E_TYPEMISMATCH = 0x80020005, + DISP_E_UNKNOWNNAME = 0x80020006, + DISP_E_NONAMEDARGS = 0x80020007, + DISP_E_BADVARTYPE = 0x80020008, + DISP_E_EXCEPTION = 0x80020009, + DISP_E_OVERFLOW = 0x8002000A, + DISP_E_BADINDEX = 0x8002000B, + DISP_E_UNKNOWNLCID = 0x8002000C, + DISP_E_ARRAYISLOCKED = 0x8002000D, + DISP_E_BADPARAMCOUNT = 0x8002000E, + DISP_E_PARAMNOTOPTIONAL = 0x8002000F, + DISP_E_BADCALLEE = 0x80020010, + DISP_E_NOTACOLLECTION = 0x80020011, + DISP_E_DIVBYZERO = 0x80020012, + + TYPE_E_BUFFERTOOSMALL = 0x80028016, + TYPE_E_INVDATAREAD = 0x80028018, + TYPE_E_UNSUPFORMAT = 0x80028019, + TYPE_E_REGISTRYACCESS = 0x8002801C, + TYPE_E_LIBNOTREGISTERED = 0x8002801D, + TYPE_E_UNDEFINEDTYPE = 0x80028027, + TYPE_E_QUALIFIEDNAMEDISALLOWED = 0x80028028, + TYPE_E_INVALIDSTATE = 0x80028029, + TYPE_E_WRONGTYPEKIND = 0x8002802A, + TYPE_E_ELEMENTNOTFOUND = 0x8002802B, + TYPE_E_AMBIGUOUSNAME = 0x8002802C, + TYPE_E_NAMECONFLICT = 0x8002802D, + TYPE_E_UNKNOWNLCID = 0x8002802E, + TYPE_E_DLLFUNCTIONNOTFOUND = 0x8002802F, + TYPE_E_BADMODULEKIND = 0x800288BD, + TYPE_E_SIZETOOBIG = 0x800288C5, + TYPE_E_DUPLICATEID = 0x800288C6, + TYPE_E_INVALIDID = 0x800288CF, + TYPE_E_TYPEMISMATCH = 0x80028CA0, + TYPE_E_OUTOFBOUNDS = 0x80028CA1, + TYPE_E_IOERROR = 0x80028CA2, + TYPE_E_CANTCREATETMPFILE = 0x80028CA3, + TYPE_E_CANTLOADLIBRARY = 0x80029C4A, + TYPE_E_INCONSISTENTPROPFUNCS = 0x80029C83, + TYPE_E_CIRCULARTYPE = 0x80029C84, + + STG_E_INVALIDFUNCTION = 0x80030001, + STG_E_FILENOTFOUND = 0x80030002, + STG_E_PATHNOTFOUND = 0x80030003, + STG_E_TOOMANYOPENFILES = 0x80030004, + STG_E_ACCESSDENIED = 0x80030005, + STG_E_INVALIDHANDLE = 0x80030006, + STG_E_INSUFFICIENTMEMORY = 0x80030008, + STG_E_INVALIDPOINTER = 0x80030009, + STG_E_NOMOREFILES = 0x80030012, + STG_E_DISKISWRITEPROTECTED = 0x80030013, + STG_E_SEEKERROR = 0x80030019, + STG_E_WRITEFAULT = 0x8003001D, + STG_E_READFAULT = 0x8003001E, + STG_E_SHAREVIOLATION = 0x80030020, + STG_E_LOCKVIOLATION = 0x80030021, + STG_E_FILEALREADYEXISTS = 0x80030050, + STG_E_INVALIDPARAMETER = 0x80030057, + STG_E_MEDIUMFULL = 0x80030070, + STG_E_ABNORMALAPIEXIT = 0x800300FA, + STG_E_INVALIDHEADER = 0x800300FB, + STG_E_INVALIDNAME = 0x800300FC, + STG_E_UNKNOWN = 0x800300FD, + STG_E_UNIMPLEMENTEDFUNCTION = 0x800300FE, + STG_E_INVALIDFLAG = 0x800300FF, + STG_E_INUSE = 0x80030100, + STG_E_NOTCURRENT = 0x80030101, + STG_E_REVERTED = 0x80030102, + STG_E_CANTSAVE = 0x80030103, + STG_E_OLDFORMAT = 0x80030104, + STG_E_OLDDLL = 0x80030105, + STG_E_SHAREREQUIRED = 0x80030106, + STG_E_NOTFILEBASEDSTORAGE = 0x80030107, + STG_E_EXTANTMARSHALLINGS = 0x80030108, + STG_S_CONVERTED = 0x00030200, + + OLE_E_FIRST = 0x80040000, + OLE_S_FIRST = 0x00040000, + OLE_E_OLEVERB = 0x80040000, + OLE_S_USEREG = 0x00040000, + OLE_E_ADVF = 0x80040001, + OLE_S_STATIC = 0x00040001, + OLE_E_ENUM_NOMORE = 0x80040002, + OLE_S_MAC_CLIPFORMAT = 0x00040002, + OLE_E_ADVISENOTSUPPORTED = 0x80040003, + OLE_E_NOCONNECTION = 0x80040004, + OLE_E_NOTRUNNING = 0x80040005, + OLE_E_NOCACHE = 0x80040006, + OLE_E_BLANK = 0x80040007, + OLE_E_CLASSDIFF = 0x80040008, + OLE_E_CANT_GETMONIKER = 0x80040009, + OLE_E_CANT_BINDTOSOURCE = 0x8004000A, + OLE_E_STATIC = 0x8004000B, + OLE_E_PROMPTSAVECANCELLED = 0x8004000C, + OLE_E_INVALIDRECT = 0x8004000D, + OLE_E_WRONGCOMPOBJ = 0x8004000E, + OLE_E_INVALIDHWND = 0x8004000F, + OLE_E_NOT_INPLACEACTIVE = 0x80040010, + OLE_E_CANTCONVERT = 0x80040011, + OLE_E_NOSTORAGE = 0x80040012, + + DV_E_FORMATETC = 0x80040064, + DV_E_DVTARGETDEVICE = 0x80040065, + DV_E_STGMEDIUM = 0x80040066, + DV_E_STATDATA = 0x80040067, + DV_E_LINDEX = 0x80040068, + DV_E_TYMED = 0x80040069, + DV_E_CLIPFORMAT = 0x8004006A, + DV_E_DVASPECT = 0x8004006B, + DV_E_DVTARGETDEVICE_SIZE = 0x8004006C, + DV_E_NOIVIEWOBJECT = 0x8004006D, + + OLE_E_LAST = 0x800400FF, + OLE_S_LAST = 0x000400FF, + DRAGDROP_E_FIRST = 0x80040100, + DRAGDROP_S_FIRST = 0x00040100, + DRAGDROP_E_NOTREGISTERED = 0x80040100, + DRAGDROP_S_DROP = 0x00040100, + DRAGDROP_E_ALREADYREGISTERED = 0x80040101, + DRAGDROP_S_CANCEL = 0x00040101, + DRAGDROP_E_INVALIDHWND = 0x80040102, + DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102, + DRAGDROP_E_LAST = 0x8004010F, + DRAGDROP_S_LAST = 0x0004010F, + CLASSFACTORY_E_FIRST = 0x80040110, + CLASSFACTORY_S_FIRST = 0x00040110, + CLASS_E_NOAGGREGATION = 0x80040110, + CLASS_E_CLASSNOTAVAILABLE = 0x80040111, + CLASSFACTORY_E_LAST = 0x8004011F, + CLASSFACTORY_S_LAST = 0x0004011F, + MARSHAL_E_FIRST = 0x80040120, + MARSHAL_S_FIRST = 0x00040120, + MARSHAL_E_LAST = 0x8004012F, + MARSHAL_S_LAST = 0x0004012F, + DATA_E_FIRST = 0x80040130, + DATA_S_FIRST = 0x00040130, + DATA_S_SAMEFORMATETC = 0x00040130, + DATA_E_LAST = 0x8004013F, + DATA_S_LAST = 0x0004013F, + VIEW_E_FIRST = 0x80040140, + VIEW_S_FIRST = 0x00040140, + VIEW_E_DRAW = 0x80040140, + VIEW_S_ALREADY_FROZEN = 0x00040140, + VIEW_E_LAST = 0x8004014F, + VIEW_S_LAST = 0x0004014F, + REGDB_E_FIRST = 0x80040150, + REGDB_S_FIRST = 0x00040150, + REGDB_E_READREGDB = 0x80040150, + REGDB_E_WRITEREGDB = 0x80040151, + REGDB_E_KEYMISSING = 0x80040152, + REGDB_E_INVALIDVALUE = 0x80040153, + REGDB_E_CLASSNOTREG = 0x80040154, + REGDB_E_IIDNOTREG = 0x80040155, + REGDB_E_LAST = 0x8004015F, + REGDB_S_LAST = 0x0004015F, + CACHE_E_FIRST = 0x80040170, + CACHE_S_FIRST = 0x00040170, + CACHE_E_NOCACHE_UPDATED = 0x80040170, + CACHE_S_FORMATETC_NOTSUPPORTED = 0x00040170, + CACHE_S_SAMECACHE = 0x00040171, + CACHE_S_SOMECACHES_NOTUPDATED = 0x00040172, + CACHE_E_LAST = 0x8004017F, + CACHE_S_LAST = 0x0004017F, + OLEOBJ_E_FIRST = 0x80040180, + OLEOBJ_S_FIRST = 0x00040180, + OLEOBJ_E_NOVERBS = 0x80040180, + OLEOBJ_S_INVALIDVERB = 0x00040180, + OLEOBJ_E_INVALIDVERB = 0x80040181, + OLEOBJ_S_CANNOT_DOVERB_NOW = 0x00040181, + OLEOBJ_S_INVALIDHWND = 0x00040182, + OLEOBJ_E_LAST = 0x8004018F, + OLEOBJ_S_LAST = 0x0004018F, + CLIENTSITE_E_FIRST = 0x80040190, + CLIENTSITE_S_FIRST = 0x00040190, + CLIENTSITE_E_LAST = 0x8004019F, + CLIENTSITE_S_LAST = 0x0004019F, + INPLACE_E_NOTUNDOABLE = 0x800401A0, + INPLACE_E_FIRST = 0x800401A0, + INPLACE_S_FIRST = 0x000401A0, + INPLACE_S_TRUNCATED = 0x000401A0, + INPLACE_E_NOTOOLSPACE = 0x800401A1, + INPLACE_E_LAST = 0x800401AF, + INPLACE_S_LAST = 0x000401AF, + ENUM_E_FIRST = 0x800401B0, + ENUM_S_FIRST = 0x000401B0, + ENUM_E_LAST = 0x800401BF, + ENUM_S_LAST = 0x000401BF, + CONVERT10_E_FIRST = 0x800401C0, + CONVERT10_S_FIRST = 0x000401C0, + CONVERT10_E_OLESTREAM_GET = 0x800401C0, + CONVERT10_S_NO_PRESENTATION = 0x000401C0, + CONVERT10_E_OLESTREAM_PUT = 0x800401C1, + CONVERT10_E_OLESTREAM_FMT = 0x800401C2, + CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = 0x800401C3, + CONVERT10_E_STG_FMT = 0x800401C4, + CONVERT10_E_STG_NO_STD_STREAM = 0x800401C5, + CONVERT10_E_STG_DIB_TO_BITMAP = 0x800401C6, + CONVERT10_E_LAST = 0x800401CF, + CONVERT10_S_LAST = 0x000401CF, + CLIPBRD_E_FIRST = 0x800401D0, + CLIPBRD_S_FIRST = 0x000401D0, + CLIPBRD_E_CANT_OPEN = 0x800401D0, + CLIPBRD_E_CANT_EMPTY = 0x800401D1, + CLIPBRD_E_CANT_SET = 0x800401D2, + CLIPBRD_E_BAD_DATA = 0x800401D3, + CLIPBRD_E_CANT_CLOSE = 0x800401D4, + CLIPBRD_E_LAST = 0x800401DF, + CLIPBRD_S_LAST = 0x000401DF, + MK_E_FIRST = 0x800401E0, + MK_S_FIRST = 0x000401E0, + MK_E_CONNECTMANUALLY = 0x800401E0, + MK_E_EXCEEDEDDEADLINE = 0x800401E1, + MK_E_NEEDGENERIC = 0x800401E2, + MK_S_REDUCED_TO_SELF = 0x000401E2, + MK_E_UNAVAILABLE = 0x800401E3, + MK_E_SYNTAX = 0x800401E4, + MK_S_ME = 0x000401E4, + MK_E_NOOBJECT = 0x800401E5, + MK_S_HIM = 0x000401E5, + MK_E_INVALIDEXTENSION = 0x800401E6, + MK_S_US = 0x000401E6, + MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = 0x800401E7, + MK_S_MONIKERALREADYREGISTERED = 0x000401E7, + MK_E_NOTBINDABLE = 0x800401E8, + MK_E_NOTBOUND = 0x800401E9, + MK_E_CANTOPENFILE = 0x800401EA, + MK_E_MUSTBOTHERUSER = 0x800401EB, + MK_E_NOINVERSE = 0x800401EC, + MK_E_NOSTORAGE = 0x800401ED, + MK_E_NOPREFIX = 0x800401EE, + MK_E_LAST = 0x800401EF, + MK_S_LAST = 0x000401EF, + MK_E_ENUMERATION_FAILED = 0x800401EF, + CO_E_FIRST = 0x800401F0, + CO_S_FIRST = 0x000401F0, + CO_E_NOTINITIALIZED = 0x800401F0, + CO_E_ALREADYINITIALIZED = 0x800401F1, + CO_E_CANTDETERMINECLASS = 0x800401F2, + CO_E_CLASSSTRING = 0x800401F3, + CO_E_IIDSTRING = 0x800401F4, + CO_E_APPNOTFOUND = 0x800401F5, + CO_E_APPSINGLEUSE = 0x800401F6, + CO_E_ERRORINAPP = 0x800401F7, + CO_E_DLLNOTFOUND = 0x800401F8, + CO_E_ERRORINDLL = 0x800401F9, + CO_E_WRONGOSFORAPP = 0x800401FA, + CO_E_OBJNOTREG = 0x800401FB, + CO_E_OBJISREG = 0x800401FC, + CO_E_OBJNOTCONNECTED = 0x800401FD, + CO_E_APPDIDNTREG = 0x800401FE, + CO_E_LAST = 0x800401FF, + CO_S_LAST = 0x000401FF, + CO_E_RELEASED = 0x800401FF, + + CO_E_CLASS_CREATE_FAILED = 0x80080001, + CO_E_SCM_ERROR = 0x80080002, + CO_E_SCM_RPC_FAILURE = 0x80080003, + CO_E_BAD_PATH = 0x80080004, + CO_E_SERVER_EXEC_FAILURE = 0x80080005, + CO_E_OBJSRV_RPC_FAILURE = 0x80080006, + MK_E_NO_NORMALIZED = 0x80080007, + CO_E_SERVER_STOPPING = 0x80080008, + MEM_E_INVALID_ROOT = 0x80080009, + MEM_E_INVALID_LINK = 0x80080010, + MEM_E_INVALID_SIZE = 0x80080011, + CO_S_NOTALLINTERFACES = 0x00080012, + + NTE_BAD_UID = 0x80090001, + NTE_BAD_HASH = 0x80090002, + NTE_BAD_KEY = 0x80090003, + NTE_BAD_LEN = 0x80090004, + NTE_BAD_DATA = 0x80090005, + NTE_BAD_SIGNATURE = 0x80090006, + NTE_BAD_VER = 0x80090007, + NTE_BAD_ALGID = 0x80090008, + NTE_BAD_FLAGS = 0x80090009, + NTE_BAD_TYPE = 0x8009000A, + NTE_BAD_KEY_STATE = 0x8009000B, + NTE_BAD_HASH_STATE = 0x8009000C, + NTE_NO_KEY = 0x8009000D, + NTE_NO_MEMORY = 0x8009000E, + NTE_EXISTS = 0x8009000F, + NTE_PERM = 0x80090010, + NTE_NOT_FOUND = 0x80090011, + NTE_DOUBLE_ENCRYPT = 0x80090012, + NTE_BAD_PROVIDER = 0x80090013, + NTE_BAD_PROV_TYPE = 0x80090014, + NTE_BAD_PUBLIC_KEY = 0x80090015, + NTE_BAD_KEYSET = 0x80090016, + NTE_PROV_TYPE_NOT_DEF = 0x80090017, + NTE_PROV_TYPE_ENTRY_BAD = 0x80090018, + NTE_KEYSET_NOT_DEF = 0x80090019, + NTE_KEYSET_ENTRY_BAD = 0x8009001A, + NTE_PROV_TYPE_NO_MATCH = 0x8009001B, + NTE_SIGNATURE_FILE_BAD = 0x8009001C, + NTE_PROVIDER_DLL_FAIL = 0x8009001D, + NTE_PROV_DLL_NOT_FOUND = 0x8009001E, + NTE_BAD_KEYSET_PARAM = 0x8009001F, + NTE_FAIL = 0x80090020, + NTE_SYS_ERR = 0x80090021 +} + + +enum : bool { + SEVERITY_SUCCESS = 0, + SEVERITY_ERROR = 1 +} + +enum : uint { + FACILITY_NULL = 0, + FACILITY_RPC, + FACILITY_DISPATCH, + FACILITY_STORAGE, + FACILITY_ITF, // = 4 + FACILITY_WIN32 = 7, + FACILITY_WINDOWS = 8, + FACILITY_CONTROL = 10, + FACILITY_NT_BIT = 0x10000000 +} + +// C Macros + +bool SUCCEEDED(HRESULT Status) { + return Status >= 0; +} + +bool FAILED(HRESULT Status) { + return Status < 0; +} + +bool IS_ERROR(HRESULT Status) { + return (Status >>> 31) == SEVERITY_ERROR; +} + +ushort HRESULT_CODE(HRESULT r) { + return cast(ushort) (r & 0xFFFF); +} + +ushort SCODE_CODE(SCODE r) { + return cast(ushort) (r & 0xFFFF); +} + +ushort HRESULT_FACILITY(HRESULT r) { + return cast(ushort) ((r>>16) & 0x1fff); +} + +ushort SCODE_FACILITY(SCODE r) { + return cast(ushort) ((r>>16) & 0x1fff); +} + +ushort HRESULT_SEVERITY(HRESULT r) { + return cast(ushort) ((r>>31) & 0x1); +} + +ushort SCODE_SEVERITY(SCODE r) { + return cast(ushort) ((r>>31) & 0x1); +} + +HRESULT MAKE_HRESULT(bool s, uint f, uint c) { + return (s << 31) | (f << 16) | c; +} + +SCODE MAKE_SCODE(bool s, uint f, uint c) { + return (s << 31) | (f << 16) | c; +} + +SCODE GetScode(HRESULT hr) { + return hr; +} + +HRESULT ResultFromScode(SCODE c) { + return c; +} + +HRESULT HRESULT_FROM_NT(HRESULT x) { + return x | FACILITY_NT_BIT; +} + +HRESULT HRESULT_FROM_WIN32(HRESULT x) { + return x ? (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000 : 0; +} + +HRESULT PropagateResult(HRESULT hrPrevious, SCODE scBase) { + return scBase; +} diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index 4616f008ef..f76ef3648a 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -1,4565 +1,4565 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_wingdi.d) - */ -module core.sys.windows.wingdi; -pragma(lib, "gdi32"); - -// FIXME: clean up Windows version support - -private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winver; - -// BITMAPINFOHEADER.biCompression -enum : DWORD { - BI_RGB = 0, - BI_RLE8, - BI_RLE4, - BI_BITFIELDS, - BI_JPEG, - BI_PNG -} - -// --- -// COLORADJUSTMENT -- only for NT 3.1+, Win2000+ -const WORD - CA_NEGATIVE = 1, - CA_LOG_FILTER = 2; - -// COLORADJUSTMENT -enum : WORD { - ILLUMINANT_DEVICE_DEFAULT = 0, - ILLUMINANT_A, - ILLUMINANT_B, - ILLUMINANT_C, - ILLUMINANT_D50, - ILLUMINANT_D55, - ILLUMINANT_D65, - ILLUMINANT_D75, - ILLUMINANT_F2, - ILLUMINANT_MAX_INDEX = ILLUMINANT_F2, - ILLUMINANT_TUNGSTEN = ILLUMINANT_A, - ILLUMINANT_DAYLIGHT = ILLUMINANT_C, - ILLUMINANT_FLUORESCENT = ILLUMINANT_F2, - ILLUMINANT_NTSC = ILLUMINANT_C -} - -enum { - RGB_GAMMA_MIN = 2500, - RGB_GAMMA_MAX = 65000, - REFERENCE_WHITE_MIN = 6000, - REFERENCE_WHITE_MAX = 10000, - REFERENCE_BLACK_MIN = 0, - REFERENCE_BLACK_MAX = 4000, - COLOR_ADJ_MIN = -100, - COLOR_ADJ_MAX = 100, -} -//--- - -/* FIXME: move to core.sys.windows.winuser ? */ -// DrawIconEx() -enum : UINT { - DI_MASK = 1, - DI_IMAGE = 2, - DI_NORMAL = 3, - DI_COMPAT = 4, - DI_DEFAULTSIZE = 8 -} - -// DOCINFO -enum : DWORD { - DI_APPBANDING = 1, - DI_ROPS_READ_DESTINATION = 2, -} - -// ENHMETAHEADER -enum : DWORD { - EMR_HEADER = 1, - EMR_POLYBEZIER, - EMR_POLYGON, - EMR_POLYLINE, - EMR_POLYBEZIERTO, - EMR_POLYLINETO, - EMR_POLYPOLYLINE, - EMR_POLYPOLYGON, - EMR_SETWINDOWEXTEX, - EMR_SETWINDOWORGEX, - EMR_SETVIEWPORTEXTEX, - EMR_SETVIEWPORTORGEX, - EMR_SETBRUSHORGEX, - EMR_EOF, - EMR_SETPIXELV, - EMR_SETMAPPERFLAGS, - EMR_SETMAPMODE, - EMR_SETBKMODE, - EMR_SETPOLYFILLMODE, - EMR_SETROP2, - EMR_SETSTRETCHBLTMODE, - EMR_SETTEXTALIGN, - EMR_SETCOLORADJUSTMENT, - EMR_SETTEXTCOLOR, - EMR_SETBKCOLOR, - EMR_OFFSETCLIPRGN, - EMR_MOVETOEX, - EMR_SETMETARGN, - EMR_EXCLUDECLIPRECT, - EMR_INTERSECTCLIPRECT, - EMR_SCALEVIEWPORTEXTEX, - EMR_SCALEWINDOWEXTEX, - EMR_SAVEDC, - EMR_RESTOREDC, - EMR_SETWORLDTRANSFORM, - EMR_MODIFYWORLDTRANSFORM, - EMR_SELECTOBJECT, - EMR_CREATEPEN, - EMR_CREATEBRUSHINDIRECT, - EMR_DELETEOBJECT, - EMR_ANGLEARC, - EMR_ELLIPSE, - EMR_RECTANGLE, - EMR_ROUNDRECT, - EMR_ARC, - EMR_CHORD, - EMR_PIE, - EMR_SELECTPALETTE, - EMR_CREATEPALETTE, - EMR_SETPALETTEENTRIES, - EMR_RESIZEPALETTE, - EMR_REALIZEPALETTE, - EMR_EXTFLOODFILL, - EMR_LINETO, - EMR_ARCTO, - EMR_POLYDRAW, - EMR_SETARCDIRECTION, - EMR_SETMITERLIMIT, - EMR_BEGINPATH, - EMR_ENDPATH, - EMR_CLOSEFIGURE, - EMR_FILLPATH, - EMR_STROKEANDFILLPATH, - EMR_STROKEPATH, - EMR_FLATTENPATH, - EMR_WIDENPATH, - EMR_SELECTCLIPPATH, - EMR_ABORTPATH, // 68 - // reserved 69 - EMR_GDICOMMENT = 70, - EMR_FILLRGN, - EMR_FRAMERGN, - EMR_INVERTRGN, - EMR_PAINTRGN, - EMR_EXTSELECTCLIPRGN, - EMR_BITBLT, - EMR_STRETCHBLT, - EMR_MASKBLT, - EMR_PLGBLT, - EMR_SETDIBITSTODEVICE, - EMR_STRETCHDIBITS, - EMR_EXTCREATEFONTINDIRECTW, - EMR_EXTTEXTOUTA, - EMR_EXTTEXTOUTW, - EMR_POLYBEZIER16, - EMR_POLYGON16, - EMR_POLYLINE16, - EMR_POLYBEZIERTO16, - EMR_POLYLINETO16, - EMR_POLYPOLYLINE16, - EMR_POLYPOLYGON16, - EMR_POLYDRAW16, - EMR_CREATEMONOBRUSH, - EMR_CREATEDIBPATTERNBRUSHPT, - EMR_EXTCREATEPEN, - EMR_POLYTEXTOUTA, - EMR_POLYTEXTOUTW, // 97 - EMR_SETICMMODE, - EMR_CREATECOLORSPACE, - EMR_SETCOLORSPACE, - EMR_DELETECOLORSPACE, - EMR_GLSRECORD, - EMR_GLSBOUNDEDRECORD, - EMR_PIXELFORMAT, // = 104 - // reserved 105 - 110 - EMR_COLORCORRECTPALETTE = 111, - EMR_SETICMPROFILEA, - EMR_SETICMPROFILEW, - EMR_ALPHABLEND, - EMR_SETLAYOUT, - EMR_TRANSPARENTBLT, // 116 - // reserved 117 - EMR_GRADIENTFILL = 118, - // reserved 119, 120 - EMR_COLORMATCHTOTARGETW = 121, - EMR_CREATECOLORSPACEW // 122 -} - -const EMR_MIN = EMR_HEADER; - -static if (_WIN32_WINNT >= 0x500) { - const EMR_MAX = EMR_CREATECOLORSPACEW; -} else { - const EMR_MAX = EMR_PIXELFORMAT; -} - -// ENHMETAHEADER.dSignature, ENHMETAHEADER3.dSignature, -// EMRFORMAT.dSignature -enum : DWORD { - ENHMETA_SIGNATURE = 1179469088, - EPS_SIGNATURE = 0x46535045 -} - -static if (_WIN32_WINNT >= 0x500) { - // AddFontResourceEx() - enum : DWORD { - FR_PRIVATE = 0x10, - FR_NOT_ENUM = 0x20 - } -} - -enum { - META_SAVEDC = 0x1E, - META_REALIZEPALETTE = 0x35, - META_SETPALENTRIES = 0x37, - META_CREATEPALETTE = 0xf7, - META_SETBKMODE = 0x102, - META_SETMAPMODE = 0x103, - META_SETROP2 = 0x104, - META_SETRELABS = 0x105, - META_SETPOLYFILLMODE = 0x106, - META_SETSTRETCHBLTMODE = 0x107, - META_SETTEXTCHAREXTRA = 0x108, - META_RESTOREDC = 0x127, - META_INVERTREGION = 0x12A, - META_PAINTREGION = 0x12B, - META_SELECTCLIPREGION = 0x12C, - META_SELECTOBJECT = 0x12D, - META_SETTEXTALIGN = 0x12E, - META_RESIZEPALETTE = 0x139, - META_DIBCREATEPATTERNBRUSH = 0x142, - META_SETLAYOUT = 0x149, - META_DELETEOBJECT = 0x1F0, - META_CREATEPATTERNBRUSH = 0x1F9, - META_SETBKCOLOR = 0x201, - META_SETTEXTCOLOR = 0x209, - META_SETTEXTJUSTIFICATION = 0x20A, - META_SETWINDOWORG = 0x20B, - META_SETWINDOWEXT = 0x20C, - META_SETVIEWPORTORG = 0x20D, - META_SETVIEWPORTEXT = 0x20E, - META_OFFSETWINDOWORG = 0x20F, - META_OFFSETVIEWPORTORG = 0x211, - META_LINETO = 0x213, - META_MOVETO = 0x214, - META_OFFSETCLIPRGN = 0x220, - META_FILLREGION = 0x228, - META_SETMAPPERFLAGS = 0x231, - META_SELECTPALETTE = 0x234, - META_CREATEPENINDIRECT = 0x2FA, - META_CREATEFONTINDIRECT = 0x2FB, - META_CREATEBRUSHINDIRECT = 0x2FC, - META_POLYGON = 0x324, - META_POLYLINE = 0x325, - META_SCALEWINDOWEXT = 0x410, - META_SCALEVIEWPORTEXT = 0x412, - META_EXCLUDECLIPRECT = 0x415, - META_INTERSECTCLIPRECT = 0x416, - META_ELLIPSE = 0x418, - META_FLOODFILL = 0x419, - META_RECTANGLE = 0x41B, - META_SETPIXEL = 0x41F, - META_FRAMEREGION = 0x429, - META_ANIMATEPALETTE = 0x436, - META_TEXTOUT = 0x521, - META_POLYPOLYGON = 0x538, - META_EXTFLOODFILL = 0x548, - META_ROUNDRECT = 0x61C, - META_PATBLT = 0x61D, - META_ESCAPE = 0x626, - META_CREATEREGION = 0x6FF, - META_ARC = 0x817, - META_PIE = 0x81A, - META_CHORD = 0x830, - META_BITBLT = 0x922, - META_DIBBITBLT = 0x940, - META_EXTTEXTOUT = 0xA32, - META_STRETCHBLT = 0xB23, - META_DIBSTRETCHBLT = 0xB41, - META_SETDIBTODEV = 0xD33, - META_STRETCHDIB = 0xF43 -} - -// EMRPOLYDRAW -enum : BYTE { - PT_CLOSEFIGURE = 1, - PT_LINETO = 2, - PT_BEZIERTO = 4, - PT_MOVETO = 6 -} - -// ---- -// PIXELFORMATDESCRIPTOR.iPixelType -enum : BYTE { - PFD_TYPE_RGBA = 0, - PFD_TYPE_COLORINDEX = 1 -} - -deprecated { -// PIXELFORMATDESCRIPTOR. -const byte - PFD_MAIN_PLANE = 0, - PFD_OVERLAY_PLANE = 1, - PFD_UNDERLAY_PLANE = -1; -} -// PIXELFORMATDESCRIPTOR.dwFlags -const DWORD - PFD_DOUBLEBUFFER = 0x00000001, - PFD_STEREO = 0x00000002, - PFD_DRAW_TO_WINDOW = 0x00000004, - PFD_DRAW_TO_BITMAP = 0x00000008, - PFD_SUPPORT_GDI = 0x00000010, - PFD_SUPPORT_OPENGL = 0x00000020, - PFD_GENERIC_FORMAT = 0x00000040, - PFD_NEED_PALETTE = 0x00000080, - PFD_NEED_SYSTEM_PALETTE = 0x00000100, - PFD_SWAP_EXCHANGE = 0x00000200, - PFD_SWAP_COPY = 0x00000400, - PFD_SWAP_LAYER_BUFFERS = 0x00000800, - PFD_GENERIC_ACCELERATED = 0x00001000, - PFD_SUPPORT_DIRECTDRAW = 0x00002000, - /* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ - PFD_DEPTH_DONTCARE = 0x20000000, - PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, - PFD_STEREO_DONTCARE = 0x80000000; - -// ---- - -const DWORD - BLACKNESS = 0x000042, - NOTSRCERASE = 0x1100A6, - NOTSRCCOPY = 0x330008, - SRCERASE = 0x440328, - DSTINVERT = 0x550009, - PATINVERT = 0x5A0049, - SRCINVERT = 0x660046, - SRCAND = 0x8800C6, - MERGEPAINT = 0xBB0226, - MERGECOPY = 0xC000CA, - SRCCOPY = 0xCC0020, - SRCPAINT = 0xEE0086, - PATCOPY = 0xF00021, - PATPAINT = 0xFB0A09, - WHITENESS = 0xFF0062; -static if (_WIN32_WINNT >= 0x500) { - const DWORD - NOMIRRORBITMAP = 0x80000000, - CAPTUREBLT = 0x40000000; -} - -// GetROP2(), SetROP2() -enum : int { - R2_BLACK = 1, - R2_NOTMERGEPEN = 2, - R2_MASKNOTPEN = 3, - R2_NOTCOPYPEN = 4, - R2_MASKPENNOT = 5, - R2_NOT = 6, - R2_XORPEN = 7, - R2_NOTMASKPEN = 8, - R2_MASKPEN = 9, - R2_NOTXORPEN = 10, - R2_NOP = 11, - R2_MERGENOTPEN = 12, - R2_COPYPEN = 13, - R2_MERGEPENNOT = 14, - R2_MERGEPEN = 15, - R2_WHITE = 16 -} - -const R2_LAST = R2_WHITE; - -// CheckColorsInGamut() -const ubyte - CM_IN_GAMUT = 0, - CM_OUT_OF_GAMUT = 255; - -/* UpdateICMRegKey Constants */ -const int - ICM_ADDPROFILE = 1, - ICM_DELETEPROFILE = 2, - ICM_QUERYPROFILE = 3, - ICM_SETDEFAULTPROFILE = 4, - ICM_REGISTERICMATCHER = 5, - ICM_UNREGISTERICMATCHER = 6, - ICM_QUERYMATCH = 7; - -enum : int { - RGN_AND = 1, - RGN_OR = 2, - RGN_XOR = 3, - RGN_DIFF = 4, - RGN_COPY = 5 -} - -const RGN_MIN = RGN_AND; -const RGN_MAX = RGN_COPY; - -// Return values for CombineRgn() -enum { - NULLREGION = 1, - SIMPLEREGION = 2, - COMPLEXREGION = 3 -} - -const ERROR = 0; -alias ERROR RGN_ERROR; - -// CreateDIBitmap() -const DWORD CBM_INIT = 4; - -// CreateDIBitmap() -enum : UINT { - DIB_RGB_COLORS = 0, - DIB_PAL_COLORS = 1 -} - -// --- -// Values for LOGFONT and CreateFont() - -// FIXME: For D, replace with lfFaceName.length() -const LF_FACESIZE = 32; -const LF_FULLFACESIZE = 64; - -// FIXME: Not needed for D, only EXTLOGFONT -const ELF_VENDOR_SIZE = 4; - -// ??? -const ELF_VERSION = 0; -const ELF_CULTURE_LATIN = 0; - -// LOGFONT.lfWeight -const LONG - FW_DONTCARE = 0, - FW_THIN = 100, - FW_EXTRALIGHT = 200, - FW_ULTRALIGHT = FW_EXTRALIGHT, - FW_LIGHT = 300, - FW_NORMAL = 400, - FW_REGULAR = FW_NORMAL, - FW_MEDIUM = 500, - FW_SEMIBOLD = 600, - FW_DEMIBOLD = FW_SEMIBOLD, - FW_BOLD = 700, - FW_EXTRABOLD = 800, - FW_ULTRABOLD = FW_EXTRABOLD, - FW_HEAVY = 900, - FW_BLACK = FW_HEAVY; - -// LOGFONT.lfCharSet -enum : DWORD { - ANSI_CHARSET = 0, - DEFAULT_CHARSET = 1, - SYMBOL_CHARSET = 2, - MAC_CHARSET = 77, - SHIFTJIS_CHARSET = 128, - HANGEUL_CHARSET = 129, - HANGUL_CHARSET = 129, - JOHAB_CHARSET = 130, - GB2312_CHARSET = 134, - CHINESEBIG5_CHARSET = 136, - GREEK_CHARSET = 161, - TURKISH_CHARSET = 162, - VIETNAMESE_CHARSET = 163, - HEBREW_CHARSET = 177, - ARABIC_CHARSET = 178, - BALTIC_CHARSET = 186, - RUSSIAN_CHARSET = 204, - THAI_CHARSET = 222, - EASTEUROPE_CHARSET = 238, - OEM_CHARSET = 255 -} - -// LOGFONT.lfOutPrecision -enum : BYTE { - OUT_DEFAULT_PRECIS = 0, - OUT_STRING_PRECIS, - OUT_CHARACTER_PRECIS, - OUT_STROKE_PRECIS, - OUT_TT_PRECIS, - OUT_DEVICE_PRECIS, - OUT_RASTER_PRECIS, - OUT_TT_ONLY_PRECIS, - OUT_OUTLINE_PRECIS, - OUT_SCREEN_OUTLINE_PRECIS, - OUT_PS_ONLY_PRECIS, // 10 -} - -// LOGFONT.lfClipPrecision -enum : BYTE { - CLIP_DEFAULT_PRECIS = 0, - CLIP_CHARACTER_PRECIS = 1, - CLIP_STROKE_PRECIS = 2, - CLIP_MASK = 15, - CLIP_LH_ANGLES = 16, - CLIP_TT_ALWAYS = 32, - CLIP_DFA_DISABLE = 64, - CLIP_EMBEDDED = 128 -} - -// LOGFONT.lfQuality -enum : BYTE { - DEFAULT_QUALITY = 0, - DRAFT_QUALITY, - PROOF_QUALITY, - NONANTIALIASED_QUALITY, - ANTIALIASED_QUALITY -} - -// LOGFONT.lfPitchAndFamily - -const BYTE - DEFAULT_PITCH = 0, - FIXED_PITCH = 1, - VARIABLE_PITCH = 2, - MONO_FONT = 8, - FF_DONTCARE = 0, - FF_ROMAN = 16, - FF_SWISS = 32, - FF_SCRIPT = 64, - FF_MODERN = 48, - FF_DECORATIVE = 80; - -// ---- -// Enums for the PANOSE struct - -const PANOSE_COUNT=10; - -enum { - PAN_FAMILYTYPE_INDEX = 0, - PAN_SERIFSTYLE_INDEX, - PAN_WEIGHT_INDEX, - PAN_PROPORTION_INDEX, - PAN_CONTRAST_INDEX, - PAN_STROKEVARIATION_INDEX, - PAN_ARMSTYLE_INDEX, - PAN_LETTERFORM_INDEX, - PAN_MIDLINE_INDEX, - PAN_XHEIGHT_INDEX -} - -const PAN_CULTURE_LATIN=0; - -// NOTE: the first two values (PAN_ANY and PAN_NO_FIT) apply to all these enums! -enum : BYTE { - PAN_ANY = 0, - PAN_NO_FIT = 1, -} - -enum : BYTE { - PAN_FAMILY_TEXT_DISPLAY = 2, - PAN_FAMILY_SCRIPT, - PAN_FAMILY_DECORATIVE, - PAN_FAMILY_PICTORIAL -} -enum : BYTE { - PAN_SERIF_COVE = 2, - PAN_SERIF_OBTUSE_COVE, - PAN_SERIF_SQUARE_COVE, - PAN_SERIF_OBTUSE_SQUARE_COVE, - PAN_SERIF_SQUARE, - PAN_SERIF_THIN, - PAN_SERIF_BONE, - PAN_SERIF_EXAGGERATED, - PAN_SERIF_TRIANGLE, - PAN_SERIF_NORMAL_SANS, - PAN_SERIF_OBTUSE_SANS, - PAN_SERIF_PERP_SANS, - PAN_SERIF_FLARED, - PAN_SERIF_ROUNDED -} - -enum : BYTE { - PAN_WEIGHT_VERY_LIGHT = 2, - PAN_WEIGHT_LIGHT, - PAN_WEIGHT_THIN, - PAN_WEIGHT_BOOK, - PAN_WEIGHT_MEDIUM, - PAN_WEIGHT_DEMI, - PAN_WEIGHT_BOLD, - PAN_WEIGHT_HEAVY, - PAN_WEIGHT_BLACK, - PAN_WEIGHT_NORD -} - -enum : BYTE { - PAN_PROP_OLD_STYLE = 2, - PAN_PROP_MODERN, - PAN_PROP_EVEN_WIDTH, - PAN_PROP_EXPANDED, - PAN_PROP_CONDENSED, - PAN_PROP_VERY_EXPANDED, - PAN_PROP_VERY_CONDENSED, - PAN_PROP_MONOSPACED -} - -enum : BYTE { - PAN_CONTRAST_NONE = 2, - PAN_CONTRAST_VERY_LOW, - PAN_CONTRAST_LOW, - PAN_CONTRAST_MEDIUM_LOW, - PAN_CONTRAST_MEDIUM, - PAN_CONTRAST_MEDIUM_HIGH, - PAN_CONTRAST_HIGH, - PAN_CONTRAST_VERY_HIGH -} - -// PANOSE.bStrokeVariation -enum : BYTE { - PAN_STROKE_GRADUAL_DIAG = 2, - PAN_STROKE_GRADUAL_TRAN, - PAN_STROKE_GRADUAL_VERT, - PAN_STROKE_GRADUAL_HORZ, - PAN_STROKE_RAPID_VERT, - PAN_STROKE_RAPID_HORZ, - PAN_STROKE_INSTANT_VERT -} - -// PANOSE.bArmStyle -enum : BYTE { - PAN_STRAIGHT_ARMS_HORZ = 2, - PAN_STRAIGHT_ARMS_WEDGE, - PAN_STRAIGHT_ARMS_VERT, - PAN_STRAIGHT_ARMS_SINGLE_SERIF, - PAN_STRAIGHT_ARMS_DOUBLE_SERIF, - PAN_BENT_ARMS_HORZ, - PAN_BENT_ARMS_WEDGE, - PAN_BENT_ARMS_VERT, - PAN_BENT_ARMS_SINGLE_SERIF, - PAN_BENT_ARMS_DOUBLE_SERIF -} - -// PANOSE.bLetterForm -enum : BYTE { - PAN_LETT_NORMAL_CONTACT = 2, - PAN_LETT_NORMAL_WEIGHTED, - PAN_LETT_NORMAL_BOXED, - PAN_LETT_NORMAL_FLATTENED, - PAN_LETT_NORMAL_ROUNDED, - PAN_LETT_NORMAL_OFF_CENTER, - PAN_LETT_NORMAL_SQUARE, - PAN_LETT_OBLIQUE_CONTACT, - PAN_LETT_OBLIQUE_WEIGHTED, - PAN_LETT_OBLIQUE_BOXED, - PAN_LETT_OBLIQUE_FLATTENED, - PAN_LETT_OBLIQUE_ROUNDED, - PAN_LETT_OBLIQUE_OFF_CENTER, - PAN_LETT_OBLIQUE_SQUARE -} - -// PANOSE.bMidLine -enum : BYTE { - PAN_MIDLINE_STANDARD_TRIMMED = 2, - PAN_MIDLINE_STANDARD_POINTED, - PAN_MIDLINE_STANDARD_SERIFED, - PAN_MIDLINE_HIGH_TRIMMED, - PAN_MIDLINE_HIGH_POINTED, - PAN_MIDLINE_HIGH_SERIFED, - PAN_MIDLINE_CONSTANT_TRIMMED, - PAN_MIDLINE_CONSTANT_POINTED, - PAN_MIDLINE_CONSTANT_SERIFED, - PAN_MIDLINE_LOW_TRIMMED, - PAN_MIDLINE_LOW_POINTED, - PAN_MIDLINE_LOW_SERIFED -} - -// PANOSE.bXHeight -enum : BYTE { - PAN_XHEIGHT_CONSTANT_SMALL = 2, - PAN_XHEIGHT_CONSTANT_STD, - PAN_XHEIGHT_CONSTANT_LARGE, - PAN_XHEIGHT_DUCKING_SMALL, - PAN_XHEIGHT_DUCKING_STD, - PAN_XHEIGHT_DUCKING_LARGE -} - -// ---- -// ??? -const FS_LATIN1 = 0x00000001; -const FS_LATIN2 = 0x00000002; -const FS_CYRILLIC = 0x00000004; -const FS_GREEK = 0x00000008; -const FS_TURKISH = 0x00000010; -const FS_HEBREW = 0x00000020; -const FS_ARABIC = 0x00000040; -const FS_BALTIC = 0x00000080; -const FS_VIETNAMESE = 0x00000100; -const FS_THAI = 0x00010000; -const FS_JISJAPAN = 0x00020000; -const FS_CHINESESIMP = 0x00040000; -const FS_WANSUNG = 0x00080000; -const FS_CHINESETRAD = 0x00100000; -const FS_JOHAB = 0x00200000; -const FS_SYMBOL = 0x80000000; - -// ---- -// Poly Fill Mode -enum : int { - ALTERNATE = 1, - WINDING = 2 -} -const int POLYFILL_LAST = WINDING; - -//--- -// LOGBRUSH -enum : LONG { - HS_HORIZONTAL = 0, - HS_VERTICAL, - HS_FDIAGONAL, - HS_BDIAGONAL, - HS_CROSS, - HS_DIAGCROSS -} - -//LOGBRUSH.lbStyle -enum : UINT { - BS_SOLID = 0, - BS_NULL = 1, - BS_HOLLOW = BS_NULL, - BS_HATCHED, - BS_PATTERN, - BS_INDEXED, - BS_DIBPATTERN, - BS_DIBPATTERNPT, - BS_PATTERN8X8, - BS_DIBPATTERN8X8, - BS_MONOPATTERN, -} -//----- -// EXTLOGPEN, ExtCreatePen() - -// EXTLOGPEN.elpPenStyle -enum : DWORD { - PS_SOLID = 0, - PS_DASH = 1, - PS_DOT = 2, - PS_DASHDOT = 3, - PS_DASHDOTDOT = 4, - PS_NULL = 5, - PS_INSIDEFRAME = 6, - PS_USERSTYLE = 7, - PS_ALTERNATE = 8, - PS_STYLE_MASK = 15, -} - -enum : DWORD { - PS_COSMETIC = 0x00000000, - PS_GEOMETRIC = 0x00010000, - PS_TYPE_MASK = 0x000F0000, -} -enum : DWORD { - PS_ENDCAP_ROUND = 0x00000000, - PS_ENDCAP_SQUARE = 0x00000100, - PS_ENDCAP_FLAT = 0x00000200, - PS_ENDCAP_MASK = 0x00000F00, -} -enum : DWORD { - PS_JOIN_ROUND = 0x00000000, - PS_JOIN_BEVEL = 0x00001000, - PS_JOIN_MITER = 0x00002000, - PS_JOIN_MASK = 0x0000F000, -} - -// --- -// DeviceCapabilities() - -enum : WORD { - DC_FIELDS = 1, - DC_PAPERS, - DC_PAPERSIZE, - DC_MINEXTENT, - DC_MAXEXTENT, - DC_BINS, - DC_DUPLEX, - DC_SIZE, - DC_EXTRA, - DC_VERSION, - DC_DRIVER, - DC_BINNAMES, - DC_ENUMRESOLUTIONS, - DC_FILEDEPENDENCIES, - DC_TRUETYPE, - DC_PAPERNAMES, - DC_ORIENTATION, - DC_COPIES, - DC_BINADJUST, - DC_EMF_COMPLIANT, - DC_DATATYPE_PRODUCED, - DC_COLLATE, - DC_MANUFACTURER, - DC_MODEL, -} - -static if (_WIN32_WINNT >= 0x500) { - enum { - DC_PERSONALITY = 25, - DC_PRINTRATE = 26, - DC_PRINTRATEUNIT = 27, - DC_PRINTERMEM = 28, - DC_MEDIAREADY = 29, - DC_STAPLE = 30, - DC_PRINTRATEPPM = 31, - DC_COLORDEVICE = 32, - DC_NUP = 33, - DC_MEDIATYPENAMES = 34, - DC_MEDIATYPES = 35, - } - enum { - PRINTRATEUNIT_PPM = 1, - PRINTRATEUNIT_CPS = 2, - PRINTRATEUNIT_LPM = 3, - PRINTRATEUNIT_IPM = 4, - } -} - - -// return from DC_TRUETYPE -const DWORD - DCTT_BITMAP = 1, - DCTT_DOWNLOAD = 2, - DCTT_SUBDEV = 4, - DCTT_DOWNLOAD_OUTLINE = 8; - -// return from DC_BINADJUST -enum : DWORD { - DCBA_FACEUPNONE = 0x0000, - DCBA_FACEUPCENTER = 0x0001, - DCBA_FACEUPLEFT = 0x0002, - DCBA_FACEUPRIGHT = 0x0003, - DCBA_FACEDOWNNONE = 0x0100, - DCBA_FACEDOWNCENTER = 0x0101, - DCBA_FACEDOWNLEFT = 0x0102, - DCBA_FACEDOWNRIGHT = 0x0103, -} -//--- - -const FLOODFILLBORDER = 0; -const FLOODFILLSURFACE = 1; - -// ExtTextOut() -const UINT - ETO_OPAQUE = 0x0002, - ETO_CLIPPED = 0x0004, - ETO_GLYPH_INDEX = 0x0010, - ETO_RTLREADING = 0x0080, - ETO_NUMERICSLOCAL = 0x0400, - ETO_NUMERICSLATIN = 0x0800, - ETO_IGNORELANGUAGE = 0x1000; -static if (_WIN32_WINNT >= 0x500) { - const UINT - ETO_PDY = 0x2000; -} - -// GdiComment() -enum { - GDICOMMENT_BEGINGROUP = 0x00000002, - GDICOMMENT_ENDGROUP = 0x00000003, - GDICOMMENT_UNICODE_STRING = 0x00000040, - GDICOMMENT_UNICODE_END = 0x00000080, - GDICOMMENT_MULTIFORMATS = 0x40000004, - GDICOMMENT_IDENTIFIER = 0x43494447, - GDICOMMENT_WINDOWS_METAFILE = 0x80000001, -} - -// Get/SetArcDirection() -enum : int { - AD_COUNTERCLOCKWISE = 1, - AD_CLOCKWISE = 2 -} - -const RDH_RECTANGLES = 1; - -// GCPRESULTS.lpClass -enum { - GCPCLASS_LATIN = 1, - GCPCLASS_HEBREW = 2, - GCPCLASS_ARABIC = 2, - GCPCLASS_NEUTRAL, - GCPCLASS_LOCALNUMBER, - GCPCLASS_LATINNUMBER, - GCPCLASS_LATINNUMERICTERMINATOR, - GCPCLASS_LATINNUMERICSEPARATOR, - GCPCLASS_NUMERICSEPARATOR, // = 8, - GCPCLASS_POSTBOUNDRTL = 16, - GCPCLASS_POSTBOUNDLTR = 32, - GCPCLASS_PREBOUNDRTL = 64, - GCPCLASS_PREBOUNDLTR = 128, - GCPGLYPH_LINKAFTER = 0x4000, - GCPGLYPH_LINKBEFORE = 0x8000 -} - -// GetBoundsRect(), SetBoundsRect() -const UINT - DCB_RESET = 1, - DCB_ACCUMULATE = 2, - DCB_SET = DCB_RESET | DCB_ACCUMULATE, - DCB_ENABLE = 4, - DCB_DISABLE = 8, - DCB_DIRTY = DCB_ACCUMULATE; - -//--- -// GetObjectType() -enum : DWORD { - OBJ_PEN = 1, - OBJ_BRUSH, - OBJ_DC, - OBJ_METADC, - OBJ_PAL, - OBJ_FONT, - OBJ_BITMAP, - OBJ_REGION, - OBJ_METAFILE, - OBJ_MEMDC, - OBJ_EXTPEN, - OBJ_ENHMETADC, - OBJ_ENHMETAFILE, - OBJ_COLORSPACE, -} - -//--------------------- -// Capabilities for GetDeviceCaps(dc, xxx) - -enum : int { - DRIVERVERSION = 0, - TECHNOLOGY = 2, - HORZSIZE = 4, - VERTSIZE = 6, - HORZRES = 8, - VERTRES = 10, - BITSPIXEL = 12, - PLANES = 14, - NUMBRUSHES = 16, - NUMPENS = 18, - NUMMARKERS = 20, - NUMFONTS = 22, - NUMCOLORS = 24, - PDEVICESIZE = 26, - CURVECAPS = 28, - LINECAPS = 30, - POLYGONALCAPS = 32, - TEXTCAPS = 34, - CLIPCAPS = 36, - RASTERCAPS = 38, - ASPECTX = 40, - ASPECTY = 42, - ASPECTXY = 44, - LOGPIXELSX = 88, - LOGPIXELSY = 90, - SIZEPALETTE = 104, - NUMRESERVED = 106, - COLORRES = 108, - PHYSICALWIDTH = 110, - PHYSICALHEIGHT = 111, - PHYSICALOFFSETX = 112, - PHYSICALOFFSETY = 113, - SCALINGFACTORX = 114, - SCALINGFACTORY = 115, - VREFRESH = 116, - DESKTOPVERTRES = 117, - DESKTOPHORZRES = 118, - BLTALIGNMENT = 119 -} -static if (_WIN32_WINNT >= 0x500) { -enum : int { - SHADEBLENDCAPS = 120, - COLORMGMTCAPS = 121, -} -} - -// Return values for GetDeviceCaps(dc, TECHNOLOGY) -enum : int { - DT_PLOTTER = 0, - DT_RASDISPLAY, - DT_RASPRINTER, - DT_RASCAMERA, - DT_CHARSTREAM, - DT_METAFILE, - DT_DISPFILE // = 6 -} - -// Return values for GetDeviceCaps(dc, RASTERCAPS) -const int - RC_NONE = 0, - RC_BITBLT = 1, - RC_BANDING = 2, - RC_SCALING = 4, - RC_BITMAP64 = 8, - RC_GDI20_OUTPUT = 16, - RC_GDI20_STATE = 32, - RC_SAVEBITMAP = 64, - RC_DI_BITMAP = 128, - RC_PALETTE = 256, - RC_DIBTODEV = 512, - RC_BIGFONT = 1024, - RC_STRETCHBLT = 2048, - RC_FLOODFILL = 4096, - RC_STRETCHDIB = 8192, - RC_OP_DX_OUTPUT = 0x4000, - RC_DEVBITS = 0x8000; - -static if (_WIN32_WINNT >= 0x500) { - /* Shading and blending caps */ - const SB_NONE = 0x00000000; - const SB_CONST_ALPHA = 0x00000001; - const SB_PIXEL_ALPHA = 0x00000002; - const SB_PREMULT_ALPHA = 0x00000004; - const SB_GRAD_RECT = 0x00000010; - const SB_GRAD_TRI = 0x00000020; - /* Color Management caps */ - const CM_NONE = 0x00000000; - const CM_DEVICE_ICM = 0x00000001; - const CM_GAMMA_RAMP = 0x00000002; - const CM_CMYK_COLOR = 0x00000004; -} - -// Return values for GetDeviceCaps(dc, CURVECAPS) -const int - CC_NONE = 0, - CC_CIRCLES = 1, - CC_PIE = 2, - CC_CHORD = 4, - CC_ELLIPSES = 8, - CC_WIDE = 16, - CC_STYLED = 32, - CC_WIDESTYLED = 64, - CC_INTERIORS = 128, - CC_ROUNDRECT = 256; - -// Return values for GetDeviceCaps(dc, LINECAPS) - -const int - LC_NONE = 0, - LC_POLYLINE = 2, - LC_MARKER = 4, - LC_POLYMARKER = 8, - LC_WIDE = 16, - LC_STYLED = 32, - LC_WIDESTYLED = 64, - LC_INTERIORS = 128; - -// Return values for GetDeviceCaps(dc, POLYGONALCAPS) - -const int - PC_NONE = 0, - PC_POLYGON = 1, - PC_RECTANGLE = 2, - PC_WINDPOLYGON = 4, - PC_TRAPEZOID = 4, - PC_SCANLINE = 8, - PC_WIDE = 16, - PC_STYLED = 32, - PC_WIDESTYLED = 64, - PC_INTERIORS = 128, - PC_POLYPOLYGON = 256, - PC_PATHS = 512; - -/* Clipping Capabilities */ -const int CP_NONE = 0, - CP_RECTANGLE = 1, - CP_REGION = 2; - -// Return values for GetDeviceCaps(dc, TEXTCAPS) - -const int - TC_OP_CHARACTER = 1, - TC_OP_STROKE = 2, - TC_CP_STROKE = 4, - TC_CR_90 = 8, - TC_CR_ANY = 16, - TC_SF_X_YINDEP = 32, - TC_SA_DOUBLE = 64, - TC_SA_INTEGER = 128, - TC_SA_CONTIN = 256, - TC_EA_DOUBLE = 512, - TC_IA_ABLE = 1024, - TC_UA_ABLE = 2048, - TC_SO_ABLE = 4096, - TC_RA_ABLE = 8192, - TC_VA_ABLE = 16384, - TC_RESERVED = 32768, - TC_SCROLLBLT = 65536; - -// End GetDeviceCaps -//--------------------- -// GetCharacterPlacement(), and GetFontLanguageInfo() -const DWORD - GCP_DBCS = 1, - GCP_REORDER = 2, - GCP_USEKERNING = 8, - GCP_GLYPHSHAPE = 16, - GCP_LIGATE = 32, - GCP_DIACRITIC = 256, - GCP_KASHIDA = 1024, - GCP_ERROR = 0x8000, - GCP_JUSTIFY = 0x10000, - GCP_CLASSIN = 0x80000, - GCP_MAXEXTENT = 0x100000, - GCP_JUSTIFYIN = 0x200000, - GCP_DISPLAYZWG = 0x400000, - GCP_SYMSWAPOFF = 0x800000, - GCP_NUMERICOVERRIDE = 0x1000000, - GCP_NEUTRALOVERRIDE = 0x2000000, - GCP_NUMERICSLATIN = 0x4000000, - GCP_NUMERICSLOCAL = 0x8000000, - // Only for GetFontLanguageInfo() - FLI_GLYPHS = 0x40000, - FLI_MASK = 0x103b; - -// GetGlyphOutline() -enum : UINT { - GGO_METRICS = 0, - GGO_BITMAP = 1, - GGO_NATIVE = 2, - GGO_BEZIER = 3, - GGO_GRAY2_BITMAP = 4, - GGO_GRAY4_BITMAP = 5, - GGO_GRAY8_BITMAP = 6, - GGO_GLYPH_INDEX = 128, - GGO_UNHINTED = 256 -} - -enum : int { - GM_COMPATIBLE = 1, - GM_ADVANCED -} -const GM_LAST = GM_ADVANCED; - -enum : int { - MM_TEXT = 1, - MM_LOMETRIC, - MM_HIMETRIC, - MM_LOENGLISH, - MM_HIENGLISH, - MM_TWIPS, - MM_ISOTROPIC, - MM_ANISOTROPIC, -} - -const int - MM_MIN = MM_TEXT, - MM_MAX = MM_ANISOTROPIC, - MM_MAX_FIXEDSCALE = MM_TWIPS; - -const ABSOLUTE = 1; -const RELATIVE = 2; - -enum : BYTE { - PC_RESERVED = 1, - PC_EXPLICIT = 2, - PC_NOCOLLAPSE = 4 -} - -/* FIXME: move to core.sys.windows.commctrl ? */ -// ImageList -const COLORREF - CLR_NONE = 0xffffffff, - CLR_INVALID = CLR_NONE, - CLR_DEFAULT = 0xff000000; - -// RASTERIZER_STATUS.wFlags -const short - TT_AVAILABLE = 1, - TT_ENABLED = 2; - -// GetStockObject() -enum : int { - WHITE_BRUSH = 0, - LTGRAY_BRUSH, - GRAY_BRUSH, - DKGRAY_BRUSH, - BLACK_BRUSH, - HOLLOW_BRUSH, // = 5 - NULL_BRUSH = HOLLOW_BRUSH, - WHITE_PEN = 6, - BLACK_PEN, - NULL_PEN, // = 8 - OEM_FIXED_FONT = 10, - ANSI_FIXED_FONT, - ANSI_VAR_FONT, - SYSTEM_FONT, - DEVICE_DEFAULT_FONT, - DEFAULT_PALETTE, - SYSTEM_FIXED_FONT, - DEFAULT_GUI_FONT = SYSTEM_FIXED_FONT + 1, -} -static if (_WIN32_WINNT >= 0x500) { - enum : int { - DC_BRUSH = DEFAULT_GUI_FONT + 1, - DC_PEN, - } -} - -static if (_WIN32_WINNT >= 0x500) { - const STOCK_LAST = DC_PEN; -} else { - const STOCK_LAST = DEFAULT_GUI_FONT; -} - -// Get/SetSystemPaletteUse() -enum : UINT { - SYSPAL_ERROR = 0, - SYSPAL_STATIC = 1, - SYSPAL_NOSTATIC = 2, - SYSPAL_NOSTATIC256 = 3, -} - -// SetTextAlign() -const UINT - TA_TOP = 0, - TA_CENTER = 6, - TA_BOTTOM = 8, - TA_BASELINE = 24, - TA_LEFT = 0, - TA_RIGHT = 2, - TA_RTLREADING = 256, - TA_NOUPDATECP = 0, - TA_UPDATECP = 1, - TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING, - VTA_BASELINE = TA_BASELINE, - VTA_CENTER = TA_CENTER, - VTA_LEFT = TA_BOTTOM, - VTA_RIGHT = TA_TOP, - VTA_BOTTOM = TA_RIGHT, - VTA_TOP = TA_LEFT; - -// EMRMODIFYWORLDTRANSFORM.iMode -enum : DWORD { - MWT_IDENTITY = 1, - MWT_LEFTMULTIPLY, - MWT_RIGHTMULTIPLY -} - -const DWORD - MWT_MIN = MWT_IDENTITY, - MWT_MAX = MWT_RIGHTMULTIPLY; - -enum { - TRANSPARENT = 1, - OPAQUE = 2 -} - -// Get/SetStretchMode() -enum : int { - BLACKONWHITE = 1, - WHITEONBLACK = 2, - COLORONCOLOR = 3, - HALFTONE = 4, - - STRETCH_ANDSCANS = 1, - STRETCH_ORSCANS = 2, - STRETCH_DELETESCANS = 3, - STRETCH_HALFTONE = 4, - - MAXSTRETCHBLTMODE = 4 -} - -// TranslateCharsetInfo() -enum : DWORD { - TCI_SRCCHARSET = 1, - TCI_SRCCODEPAGE = 2, - TCI_SRCFONTSIG = 3, - TCI_SRCLOCALE = 0x1000, -} - -// SetICMMode() -enum : int { - ICM_OFF = 1, - ICM_ON = 2, - ICM_QUERY = 3, - ICM_DONE_OUTSIDEDC = 4, -} - -// ---- -// Escape() Spooler Error Codes -enum : int { - SP_NOTREPORTED = 0x4000, - SP_ERROR = -1, - SP_APPABORT = -2, - SP_USERABORT = -3, - SP_OUTOFDISK = -4, - SP_OUTOFMEMORY = -5 -} - -// Escape(), ExtEscape() -// Most of the following are deprecated (Win16 only) -enum : int { - NEWFRAME = 1, - ABORTDOC = 2, - NEXTBAND = 3, - SETCOLORTABLE = 4, - GETCOLORTABLE = 5, - FLUSHOUTPUT = 6, - DRAFTMODE = 7, - QUERYESCSUPPORT = 8, - SETABORTPROC = 9, - STARTDOC = 10, - ENDDOC = 11, - GETPHYSPAGESIZE = 12, - GETPRINTINGOFFSET = 13, - GETSCALINGFACTOR = 14, - MFCOMMENT = 15, - GETPENWIDTH = 16, - SETCOPYCOUNT = 17, - SELECTPAPERSOURCE = 18, - DEVICEDATA = 19, - PASSTHROUGH = 19, - GETTECHNOLOGY = 20, - SETLINECAP = 21, - SETLINEJOIN = 22, - SETMITERLIMIT = 23, - BANDINFO = 24, - DRAWPATTERNRECT = 25, - GETVECTORPENSIZE = 26, - GETVECTORBRUSHSIZE = 27, - ENABLEDUPLEX = 28, - GETSETPAPERBINS = 29, - GETSETPRINTORIENT = 30, - ENUMPAPERBINS = 31, - SETDIBSCALING = 32, - EPSPRINTING = 33, - ENUMPAPERMETRICS = 34, - GETSETPAPERMETRICS = 35, - POSTSCRIPT_DATA = 37, - POSTSCRIPT_IGNORE = 38, - MOUSETRAILS = 39, - GETDEVICEUNITS = 42, - GETEXTENDEDTEXTMETRICS = 256, - GETEXTENTTABLE = 257, - GETPAIRKERNTABLE = 258, - GETTRACKKERNTABLE = 259, - EXTTEXTOUT = 512, - GETFACENAME = 513, - DOWNLOADFACE = 514, - ENABLERELATIVEWIDTHS = 768, - ENABLEPAIRKERNING = 769, - SETKERNTRACK = 770, - SETALLJUSTVALUES = 771, - SETCHARSET = 772, - STRETCHBLT = 2048, - METAFILE_DRIVER = 2049, - GETSETSCREENPARAMS = 3072, - QUERYDIBSUPPORT = 3073, - BEGIN_PATH = 4096, - CLIP_TO_PATH = 4097, - END_PATH = 4098, - EXT_DEVICE_CAPS = 4099, - RESTORE_CTM = 4100, - SAVE_CTM = 4101, - SET_ARC_DIRECTION = 4102, - SET_BACKGROUND_COLOR = 4103, - SET_POLY_MODE = 4104, - SET_SCREEN_ANGLE = 4105, - SET_SPREAD = 4106, - TRANSFORM_CTM = 4107, - SET_CLIP_BOX = 4108, - SET_BOUNDS = 4109, - SET_MIRROR_MODE = 4110, - OPENCHANNEL = 4110, - DOWNLOADHEADER = 4111, - CLOSECHANNEL = 4112, - POSTSCRIPT_PASSTHROUGH = 4115, - ENCAPSULATED_POSTSCRIPT = 4116, - POSTSCRIPT_IDENTIFY = 4117, - POSTSCRIPT_INJECTION = 4118, - CHECKJPEGFORMAT = 4119, - CHECKPNGFORMAT = 4120, - GET_PS_FEATURESETTING = 4121, - SPCLPASSTHROUGH2 = 4568, -} - -enum : int { - PSIDENT_GDICENTRIC = 0, - PSIDENT_PSCENTRIC = 1, -} - -/* - * Header structure for the input buffer to POSTSCRIPT_INJECTION escape - */ -struct PSINJECTDATA { - DWORD DataBytes; - WORD InjectionPoint; - WORD PageNumber; -} -alias PSINJECTDATA* PPSINJECTDATA; - -/* Constants for PSINJECTDATA.InjectionPoint field */ -enum { - PSINJECT_BEGINSTREAM = 1, - PSINJECT_PSADOBE = 2, - PSINJECT_PAGESATEND = 3, - PSINJECT_PAGES = 4, - PSINJECT_DOCNEEDEDRES = 5, - PSINJECT_DOCSUPPLIEDRES = 6, - PSINJECT_PAGEORDER = 7, - PSINJECT_ORIENTATION = 8, - PSINJECT_BOUNDINGBOX = 9, - PSINJECT_DOCUMENTPROCESSCOLORS = 10, - PSINJECT_COMMENTS = 11, - PSINJECT_BEGINDEFAULTS = 12, - PSINJECT_ENDDEFAULTS = 13, - PSINJECT_BEGINPROLOG = 14, - PSINJECT_ENDPROLOG = 15, - PSINJECT_BEGINSETUP = 16, - PSINJECT_ENDSETUP = 17, - PSINJECT_TRAILER = 18, - PSINJECT_EOF = 19, - PSINJECT_ENDSTREAM = 20, - PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21, - - PSINJECT_PAGENUMBER = 100, - PSINJECT_BEGINPAGESETUP = 101, - PSINJECT_ENDPAGESETUP = 102, - PSINJECT_PAGETRAILER = 103, - PSINJECT_PLATECOLOR = 104, - PSINJECT_SHOWPAGE = 105, - PSINJECT_PAGEBBOX = 106, - PSINJECT_ENDPAGECOMMENTS = 107, - - PSINJECT_VMSAVE = 200, - PSINJECT_VMRESTORE = 201, -} - -/* Parameter for GET_PS_FEATURESETTING escape */ -enum { - FEATURESETTING_NUP = 0, - FEATURESETTING_OUTPUT = 1, - FEATURESETTING_PSLEVEL = 2, - FEATURESETTING_CUSTPAPER = 3, - FEATURESETTING_MIRROR = 4, - FEATURESETTING_NEGATIVE = 5, - FEATURESETTING_PROTOCOL = 6, -} - -enum { - FEATURESETTING_PRIVATE_BEGIN = 0x1000, - FEATURESETTING_PRIVATE_END = 0x1FFF, -} - -/* Value returned for FEATURESETTING_PROTOCOL */ -const PSPROTOCOL_ASCII = 0; -const PSPROTOCOL_BCP = 1; -const PSPROTOCOL_TBCP = 2; -const PSPROTOCOL_BINARY = 3; - -// ---- - -const WPARAM PR_JOBSTATUS = 0; - -// ??? -const QDI_SETDIBITS = 1; -const QDI_GETDIBITS = 2; -const QDI_DIBTOSCREEN = 4; -const QDI_STRETCHDIB = 8; - -const ASPECT_FILTERING = 1; - -// LOGCOLORSPACE.lcsCSType -enum : LCSCSTYPE { - LCS_CALIBRATED_RGB = 0, - LCS_DEVICE_RGB, - LCS_DEVICE_CMYK -} /* What this for? */ - -// LOGCOLORSPACE.lcsIntent -enum : LCSGAMUTMATCH { - LCS_GM_BUSINESS = 1, - LCS_GM_GRAPHICS = 2, - LCS_GM_IMAGES = 4, - LCS_GM_ABS_COLORIMETRIC = 8, -} - -const DWORD - RASTER_FONTTYPE = 1, - DEVICE_FONTTYPE = 2, - TRUETYPE_FONTTYPE = 4; - -// --- -// DEVMODE struct - -// FIXME: Not needed for D (use .length instead) -const CCHDEVICENAME = 32; -const CCHFORMNAME = 32; - -// DEVMODE.dmSpecVersion -// current version of specification -const WORD DM_SPECVERSION = 0x0401; - -// DEVMODE.dmOrientation -enum : short { - DMORIENT_PORTRAIT = 1, - DMORIENT_LANDSCAPE = 2 -} - -// DEVMODE.dmPaperSize -enum : short { - DMPAPER_LETTER = 1, - DMPAPER_LETTERSMALL, - DMPAPER_TABLOID, - DMPAPER_LEDGER, - DMPAPER_LEGAL, - DMPAPER_STATEMENT, - DMPAPER_EXECUTIVE, - DMPAPER_A3, - DMPAPER_A4, - DMPAPER_A4SMALL, - DMPAPER_A5, - DMPAPER_B4, - DMPAPER_B5, - DMPAPER_FOLIO, - DMPAPER_QUARTO, - DMPAPER_10X14, - DMPAPER_11X17, - DMPAPER_NOTE, - DMPAPER_ENV_9, - DMPAPER_ENV_10, - DMPAPER_ENV_11, - DMPAPER_ENV_12, - DMPAPER_ENV_14, - DMPAPER_CSHEET, - DMPAPER_DSHEET, - DMPAPER_ESHEET, - DMPAPER_ENV_DL, - DMPAPER_ENV_C5, - DMPAPER_ENV_C3, - DMPAPER_ENV_C4, - DMPAPER_ENV_C6, - DMPAPER_ENV_C65, - DMPAPER_ENV_B4, - DMPAPER_ENV_B5, - DMPAPER_ENV_B6, - DMPAPER_ENV_ITALY, - DMPAPER_ENV_MONARCH, - DMPAPER_ENV_PERSONAL, - DMPAPER_FANFOLD_US, - DMPAPER_FANFOLD_STD_GERMAN, - DMPAPER_FANFOLD_LGL_GERMAN, - DMPAPER_ISO_B4, - DMPAPER_JAPANESE_POSTCARD, - DMPAPER_9X11, - DMPAPER_10X11, - DMPAPER_15X11, - DMPAPER_ENV_INVITE, - DMPAPER_RESERVED_48, - DMPAPER_RESERVED_49, - DMPAPER_LETTER_EXTRA, - DMPAPER_LEGAL_EXTRA, - DMPAPER_TABLOID_EXTRA, - DMPAPER_A4_EXTRA, - DMPAPER_LETTER_TRANSVERSE, - DMPAPER_A4_TRANSVERSE, - DMPAPER_LETTER_EXTRA_TRANSVERSE, - DMPAPER_A_PLUS, - DMPAPER_B_PLUS, - DMPAPER_LETTER_PLUS, - DMPAPER_A4_PLUS, - DMPAPER_A5_TRANSVERSE, - DMPAPER_B5_TRANSVERSE, - DMPAPER_A3_EXTRA, - DMPAPER_A5_EXTRA, - DMPAPER_B5_EXTRA, - DMPAPER_A2, - DMPAPER_A3_TRANSVERSE, - DMPAPER_A3_EXTRA_TRANSVERSE // = 68 -} -static if (_WIN32_WINNT >= 0x500) { - enum : short { - DMPAPER_DBL_JAPANESE_POSTCARD = 69, - DMPAPER_A6, - DMPAPER_JENV_KAKU2, - DMPAPER_JENV_KAKU3, - DMPAPER_JENV_CHOU3, - DMPAPER_JENV_CHOU4, - DMPAPER_LETTER_ROTATED, - DMPAPER_A3_ROTATED, - DMPAPER_A4_ROTATED, - DMPAPER_A5_ROTATED, - DMPAPER_B4_JIS_ROTATED, - DMPAPER_B5_JIS_ROTATED, - DMPAPER_JAPANESE_POSTCARD_ROTATED, - DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED, - DMPAPER_A6_ROTATED, - DMPAPER_JENV_KAKU2_ROTATED, - DMPAPER_JENV_KAKU3_ROTATED, - DMPAPER_JENV_CHOU3_ROTATED, - DMPAPER_JENV_CHOU4_ROTATED, - DMPAPER_B6_JIS, - DMPAPER_B6_JIS_ROTATED, - DMPAPER_12X11, - DMPAPER_JENV_YOU4, - DMPAPER_JENV_YOU4_ROTATED, - DMPAPER_P16K, - DMPAPER_P32K, - DMPAPER_P32KBIG, - DMPAPER_PENV_1, - DMPAPER_PENV_2, - DMPAPER_PENV_3, - DMPAPER_PENV_4, - DMPAPER_PENV_5, - DMPAPER_PENV_6, - DMPAPER_PENV_7, - DMPAPER_PENV_8, - DMPAPER_PENV_9, - DMPAPER_PENV_10, - DMPAPER_P16K_ROTATED, - DMPAPER_P32K_ROTATED, - DMPAPER_P32KBIG_ROTATED, - DMPAPER_PENV_1_ROTATED, - DMPAPER_PENV_2_ROTATED, - DMPAPER_PENV_3_ROTATED, - DMPAPER_PENV_4_ROTATED, - DMPAPER_PENV_5_ROTATED, - DMPAPER_PENV_6_ROTATED, - DMPAPER_PENV_7_ROTATED, - DMPAPER_PENV_8_ROTATED, - DMPAPER_PENV_9_ROTATED, - DMPAPER_PENV_10_ROTATED // 118 - } -} - -const short DMPAPER_FIRST = DMPAPER_LETTER; - -static if (_WIN32_WINNT >= 0x500) { - const short DMPAPER_LAST = DMPAPER_PENV_10_ROTATED; -} else { - const short DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE; -} - -const short DMPAPER_USER = 256; - - -// DEVMODE.dmDefaultSource -enum : short { - DMBIN_ONLYONE = 1, - DMBIN_UPPER = 1, - DMBIN_LOWER, - DMBIN_MIDDLE, - DMBIN_MANUAL, - DMBIN_ENVELOPE, - DMBIN_ENVMANUAL, - DMBIN_AUTO, - DMBIN_TRACTOR, - DMBIN_SMALLFMT, - DMBIN_LARGEFMT, - DMBIN_LARGECAPACITY, // = 11 - DMBIN_CASSETTE = 14, - DMBIN_FORMSOURCE, -} -enum : short { - DMBIN_FIRST = DMBIN_UPPER, - DMBIN_LAST = DMBIN_FORMSOURCE, - DMBIN_USER = 256, -} - -// DEVMODE.dmPrintQuality -enum : short { - DMRES_DRAFT = -1, - DMRES_LOW = -2, - DMRES_MEDIUM = -3, - DMRES_HIGH = -4 -} - -// DEVMODE.dmColor -enum : short { - DMCOLOR_MONOCHROME = 1, - DMCOLOR_COLOR = 2 -} - -// DEVMODE.dmDuplex -enum : short { - DMDUP_SIMPLEX = 1, - DMDUP_VERTICAL = 2, - DMDUP_HORIZONTAL = 3 -} - -// DEVMODE.dmTTOption -enum : short { - DMTT_BITMAP = 1, - DMTT_DOWNLOAD, - DMTT_SUBDEV, - DMTT_DOWNLOAD_OUTLINE -} - -// DEVMODE.dmCollate -enum : short { - DMCOLLATE_FALSE = 0, - DMCOLLATE_TRUE -} - -static if (_WIN32_WINNT >= 0x501) { - /* DEVMODE dmDisplayOrientation specifiations */ - enum : short { - DMDO_DEFAULT = 0, - DMDO_90 = 1, - DMDO_180 = 2, - DMDO_270 = 3, - } - - /* DEVMODE dmDisplayFixedOutput specifiations */ - enum : short { - DMDFO_DEFAULT = 0, - DMDFO_STRETCH = 1, - DMDFO_CENTER = 2, - } -} - - -/* FIXME: this flags are deprecated ? */ -// DEVMODE.dmDisplayFlags -const DWORD - DM_GRAYSCALE = 1, - DM_INTERLACED = 2; - -const DWORD - DMDISPLAYFLAGS_TEXTMODE = 0x00000004; - -/* dmNup , multiple logical page per physical page options */ -const DWORD - DMNUP_SYSTEM = 1, - DMNUP_ONEUP = 2; - -// DEVMODE.dmFields -const DWORD - DM_ORIENTATION = 0x00000001, - DM_PAPERSIZE = 0x00000002, - DM_PAPERLENGTH = 0x00000004, - DM_PAPERWIDTH = 0x00000008, - DM_SCALE = 0x00000010; -static if (_WIN32_WINNT >= 0x500) { - const DWORD - DM_POSITION = 0x00000020, - DM_NUP = 0x00000040; -} -static if (_WIN32_WINNT >= 0x501) { - const DWORD - DM_DISPLAYORIENTATION = 0x00000080; -} -const DWORD - DM_COPIES = 0x00000100, - DM_DEFAULTSOURCE = 0x00000200, - DM_PRINTQUALITY = 0x00000400, - DM_COLOR = 0x00000800, - DM_DUPLEX = 0x00001000, - DM_YRESOLUTION = 0x00002000, - DM_TTOPTION = 0x00004000, - DM_COLLATE = 0x00008000, - DM_FORMNAME = 0x00010000, - DM_LOGPIXELS = 0x00020000, - DM_BITSPERPEL = 0x00040000, - DM_PELSWIDTH = 0x00080000, - DM_PELSHEIGHT = 0x00100000, - DM_DISPLAYFLAGS = 0x00200000, - DM_DISPLAYFREQUENCY = 0x00400000, - DM_ICMMETHOD = 0x00800000, - DM_ICMINTENT = 0x01000000, - DM_MEDIATYPE = 0x02000000, - DM_DITHERTYPE = 0x04000000, - DM_PANNINGWIDTH = 0x08000000, - DM_PANNINGHEIGHT = 0x10000000; -static if (_WIN32_WINNT >= 0x501) { - const DWORD - DM_DISPLAYFIXEDOUTPUT = 0x20000000; -} - -// DEVMODE.dmICMMethod -enum : DWORD { - DMICMMETHOD_NONE = 1, - DMICMMETHOD_SYSTEM = 2, - DMICMMETHOD_DRIVER = 3, - DMICMMETHOD_DEVICE = 4, - DMICMMETHOD_USER = 256 -} - -// DEVMODE.dmICMIntent -enum : DWORD { - DMICM_SATURATE = 1, - DMICM_CONTRAST = 2, - DMICM_COLORIMETRIC = 3, - DMICM_ABS_COLORIMETRIC = 4, - DMICM_USER = 256 -} - -// DEVMODE.dmMediaType -enum : DWORD { - DMMEDIA_STANDARD = 1, - DMMEDIA_TRANSPARENCY = 2, - DMMEDIA_GLOSSY = 3, - DMMEDIA_USER = 256 -} - -// DEVMODE.dmDitherType -enum : DWORD { - DMDITHER_NONE = 1, - DMDITHER_COARSE, - DMDITHER_FINE, - DMDITHER_LINEART, - DMDITHER_ERRORDIFFUSION, - DMDITHER_RESERVED6, - DMDITHER_RESERVED7, - DMDITHER_RESERVED8, - DMDITHER_RESERVED9, - DMDITHER_GRAYSCALE, - DMDITHER_USER = 256 -} - -// ---- -// DocumentProperties() -const DWORD - DM_UPDATE = 1, - DM_COPY = 2, - DM_PROMPT = 4, - DM_MODIFY = 8, - DM_IN_BUFFER = DM_MODIFY, - DM_IN_PROMPT = DM_PROMPT, - DM_OUT_BUFFER = DM_COPY, - DM_OUT_DEFAULT = DM_UPDATE; -// --- - -const GDI_ERROR = 0xFFFFFFFF; -const HGDI_ERROR= cast(HANDLE)GDI_ERROR; - -// TEXTMETRIC.tmPitchAndFamily -const BYTE - TMPF_FIXED_PITCH = 1, - TMPF_VECTOR = 2, - TMPF_TRUETYPE = 4, - TMPF_DEVICE = 8; - -// NEWTEXTMETRIC.ntmFlags -const DWORD - NTM_ITALIC = 0x00000001, - NTM_BOLD = 0x00000020, - NTM_REGULAR = 0x00000040, - NTM_NONNEGATIVE_AC = 0x00010000, - NTM_PS_OPENTYPE = 0x00020000, - NTM_TT_OPENTYPE = 0x00040000, - NTM_MULTIPLEMASTER = 0x00080000, - NTM_TYPE1 = 0x00100000, - NTM_DSIG = 0x00200000; - -// --- -const DWORD TT_POLYGON_TYPE = 24; - -// TTPOLYCURVE -enum : WORD { - TT_PRIM_LINE = 1, - TT_PRIM_QSPLINE = 2, - TT_PRIM_CSPLINE = 3, -} -// --- -const FONTMAPPER_MAX = 10; -const ENHMETA_STOCK_OBJECT = 0x80000000; -const WGL_FONT_LINES = 0; -const WGL_FONT_POLYGONS = 1; - -// --- -// LAYERPLANEDESCRIPTOR.dwFlags -const DWORD - LPD_DOUBLEBUFFER = 1, - LPD_STEREO = 2, - LPD_SUPPORT_GDI = 16, - LPD_SUPPORT_OPENGL = 32, - LPD_SHARE_DEPTH = 64, - LPD_SHARE_STENCIL = 128, - LPD_SHARE_ACCUM = 256, - LPD_SWAP_EXCHANGE = 512, - LPD_SWAP_COPY = 1024, - LPD_TRANSPARENT = 4096; - -// LAYERPLANEDESCRIPTOR.iPixelType -enum : BYTE { - LPD_TYPE_RGBA = 0, - LPD_TYPE_COLORINDEX = 1 -} - -// --- - -// wglSwapLayerBuffers() -const UINT - WGL_SWAP_MAIN_PLANE = 1, - WGL_SWAP_OVERLAY1 = 2, - WGL_SWAP_OVERLAY2 = 4, - WGL_SWAP_OVERLAY3 = 8, - WGL_SWAP_OVERLAY4 = 16, - WGL_SWAP_OVERLAY5 = 32, - WGL_SWAP_OVERLAY6 = 64, - WGL_SWAP_OVERLAY7 = 128, - WGL_SWAP_OVERLAY8 = 256, - WGL_SWAP_OVERLAY9 = 512, - WGL_SWAP_OVERLAY10 = 1024, - WGL_SWAP_OVERLAY11 = 2048, - WGL_SWAP_OVERLAY12 = 4096, - WGL_SWAP_OVERLAY13 = 8192, - WGL_SWAP_OVERLAY14 = 16384, - WGL_SWAP_OVERLAY15 = 32768, - WGL_SWAP_UNDERLAY1 = 65536, - WGL_SWAP_UNDERLAY2 = 0x20000, - WGL_SWAP_UNDERLAY3 = 0x40000, - WGL_SWAP_UNDERLAY4 = 0x80000, - WGL_SWAP_UNDERLAY5 = 0x100000, - WGL_SWAP_UNDERLAY6 = 0x200000, - WGL_SWAP_UNDERLAY7 = 0x400000, - WGL_SWAP_UNDERLAY8 = 0x800000, - WGL_SWAP_UNDERLAY9 = 0x1000000, - WGL_SWAP_UNDERLAY10 = 0x2000000, - WGL_SWAP_UNDERLAY11 = 0x4000000, - WGL_SWAP_UNDERLAY12 = 0x8000000, - WGL_SWAP_UNDERLAY13 = 0x10000000, - WGL_SWAP_UNDERLAY14 = 0x20000000, - WGL_SWAP_UNDERLAY15 = 0x40000000; - -const AC_SRC_OVER = 0x00; -const AC_SRC_ALPHA = 0x01; - -// ??? -const AC_SRC_NO_PREMULT_ALPHA = 0x01; -const AC_SRC_NO_ALPHA = 0x02; -const AC_DST_NO_PREMULT_ALPHA = 0x10; -const AC_DST_NO_ALPHA = 0x20; - -const LAYOUT_RTL = 1; -const LAYOUT_BTT = 2; -const LAYOUT_VBH = 4; -const LAYOUT_BITMAPORIENTATIONPRESERVED = 8; - -const CS_ENABLE = 0x00000001; -const CS_DISABLE = 0x00000002; -const CS_DELETE_TRANSFORM = 0x00000003; - -static if (_WIN32_WINNT > 0x500) { - const GRADIENT_FILL_RECT_H=0x00; - const GRADIENT_FILL_RECT_V=0x01; - const GRADIENT_FILL_TRIANGLE=0x02; - const GRADIENT_FILL_OP_FLAG=0xff; - const COLORMATCHTOTARGET_EMBEDED=0x00000001; - const CREATECOLORSPACE_EMBEDED=0x00000001; - const SETICMPROFILE_EMBEDED=0x00000001; -} - -// DISPLAY_DEVICE.StateFlags -const DWORD - DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001, - DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002, - DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004, - DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008, - DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010, - DISPLAY_DEVICE_REMOVABLE = 0x00000020, - DISPLAY_DEVICE_DISCONNECT = 0x02000000, - DISPLAY_DEVICE_REMOTE = 0x04000000, - DISPLAY_DEVICE_MODESPRUNED = 0x08000000; - -/* Child device state */ -const DWORD - DISPLAY_DEVICE_ACTIVE = 0x00000001, - DISPLAY_DEVICE_ATTACHED = 0x00000002; - -static if (_WIN32_WINNT >= 0x500) { - const GGI_MARK_NONEXISTING_GLYPHS = 1; -} - -// ---------- -// STRUCTS -// ---------- - -struct ABC { - int abcA; - UINT abcB; - int abcC; -} -alias ABC* PABC, NPABC, LPABC; - -struct ABCFLOAT { - FLOAT abcfA; - FLOAT abcfB; - FLOAT abcfC; -} -alias ABCFLOAT* PABCFLOAT, NPABCFLOAT, LPABCFLOAT; - -struct BITMAP { - LONG bmType; - LONG bmWidth; - LONG bmHeight; - LONG bmWidthBytes; - WORD bmPlanes; - WORD bmBitsPixel; - LPVOID bmBits; -} -alias BITMAP* PBITMAP, NPBITMAP, LPBITMAP; - -struct BITMAPCOREHEADER { - DWORD bcSize; - WORD bcWidth; - WORD bcHeight; - WORD bcPlanes; - WORD bcBitCount; -} -alias BITMAPCOREHEADER* PBITMAPCOREHEADER, LPBITMAPCOREHEADER; - -align(1): -struct RGBTRIPLE { - BYTE rgbtBlue; - BYTE rgbtGreen; - BYTE rgbtRed; -} -alias RGBTRIPLE* LPRGBTRIPLE; - -align(2): -struct BITMAPFILEHEADER { -align(2): - WORD bfType; - DWORD bfSize; - WORD bfReserved1; - WORD bfReserved2; - DWORD bfOffBits; -} -alias BITMAPFILEHEADER* LPBITMAPFILEHEADER, PBITMAPFILEHEADER; - -align: - -struct BITMAPCOREINFO { - BITMAPCOREHEADER bmciHeader; - RGBTRIPLE[1] bmciColors; -} -alias BITMAPCOREINFO* LPBITMAPCOREINFO, PBITMAPCOREINFO; - -struct BITMAPINFOHEADER { - DWORD biSize; - LONG biWidth; - LONG biHeight; - WORD biPlanes; - WORD biBitCount; - DWORD biCompression; - DWORD biSizeImage; - LONG biXPelsPerMeter; - LONG biYPelsPerMeter; - DWORD biClrUsed; - DWORD biClrImportant; -} - -alias BITMAPINFOHEADER* LPBITMAPINFOHEADER, PBITMAPINFOHEADER; - -struct RGBQUAD { - BYTE rgbBlue; - BYTE rgbGreen; - BYTE rgbRed; - BYTE rgbReserved; -}; -alias RGBQUAD* LPRGBQUAD; - -struct BITMAPINFO { - BITMAPINFOHEADER bmiHeader; - RGBQUAD[1] bmiColors; -}; -alias BITMAPINFO* PBITMAPINFO, LPBITMAPINFO; - -alias int FXPT16DOT16; -alias int* LPFXPT16DOT16; -alias int FXPT2DOT30; -alias int* LPFXPT2DOT30; - -struct CIEXYZ { - FXPT2DOT30 ciexyzX; - FXPT2DOT30 ciexyzY; - FXPT2DOT30 ciexyzZ; -} -alias CIEXYZ* LPCIEXYZ; - -struct CIEXYZTRIPLE { - CIEXYZ ciexyzRed; - CIEXYZ ciexyzGreen; - CIEXYZ ciexyzBlue; -} -alias CIEXYZTRIPLE* LPCIEXYZTRIPLE; - -struct BITMAPV4HEADER { - DWORD bV4Size; - LONG bV4Width; - LONG bV4Height; - WORD bV4Planes; - WORD bV4BitCount; - DWORD bV4V4Compression; - DWORD bV4SizeImage; - LONG bV4XPelsPerMeter; - LONG bV4YPelsPerMeter; - DWORD bV4ClrUsed; - DWORD bV4ClrImportant; - DWORD bV4RedMask; - DWORD bV4GreenMask; - DWORD bV4BlueMask; - DWORD bV4AlphaMask; - DWORD bV4CSType; - CIEXYZTRIPLE bV4Endpoints; - DWORD bV4GammaRed; - DWORD bV4GammaGreen; - DWORD bV4GammaBlue; -} -alias BITMAPV4HEADER* LPBITMAPV4HEADER, PBITMAPV4HEADER; - -struct BITMAPV5HEADER { - DWORD bV5Size; - LONG bV5Width; - LONG bV5Height; - WORD bV5Planes; - WORD bV5BitCount; - DWORD bV5Compression; - DWORD bV5SizeImage; - LONG bV5XPelsPerMeter; - LONG bV5YPelsPerMeter; - DWORD bV5ClrUsed; - DWORD bV5ClrImportant; - DWORD bV5RedMask; - DWORD bV5GreenMask; - DWORD bV5BlueMask; - DWORD bV5AlphaMask; - DWORD bV5CSType; - CIEXYZTRIPLE bV5Endpoints; - DWORD bV5GammaRed; - DWORD bV5GammaGreen; - DWORD bV5GammaBlue; - DWORD bV5Intent; - DWORD bV5ProfileData; - DWORD bV5ProfileSize; - DWORD bV5Reserved; -} -alias BITMAPV5HEADER* LPBITMAPV5HEADER, PBITMAPV5HEADER; - -struct FONTSIGNATURE { - DWORD[4] fsUsb; - DWORD[2] fsCsb; -} -alias FONTSIGNATURE* PFONTSIGNATURE, LPFONTSIGNATURE; - -struct CHARSETINFO { - UINT ciCharset; - UINT ciACP; - FONTSIGNATURE fs; -} -alias CHARSETINFO* PCHARSETINFO, NPCHARSETINFO, LPCHARSETINFO; - -struct COLORADJUSTMENT { - WORD caSize; - WORD caFlags; - WORD caIlluminantIndex; - WORD caRedGamma; - WORD caGreenGamma; - WORD caBlueGamma; - WORD caReferenceBlack; - WORD caReferenceWhite; - SHORT caContrast; - SHORT caBrightness; - SHORT caColorfulness; - SHORT caRedGreenTint; -} -alias COLORADJUSTMENT* PCOLORADJUSTMENT, LPCOLORADJUSTMENT; - -struct DEVMODEA { - BYTE[CCHDEVICENAME] dmDeviceName; - WORD dmSpecVersion; - WORD dmDriverVersion; - WORD dmSize; - WORD dmDriverExtra; - DWORD dmFields; - union { - struct { - short dmOrientation; - short dmPaperSize; - short dmPaperLength; - short dmPaperWidth; - short dmScale; - short dmCopies; - short dmDefaultSource; - short dmPrintQuality; - } - struct { - POINTL dmPosition; - DWORD dmDisplayOrientation; - DWORD dmDisplayFixedOutput; - } - } - short dmColor; - short dmDuplex; - short dmYResolution; - short dmTTOption; - short dmCollate; - BYTE[CCHFORMNAME] dmFormName; - WORD dmLogPixels; - DWORD dmBitsPerPel; - DWORD dmPelsWidth; - DWORD dmPelsHeight; - union { - DWORD dmDisplayFlags; - DWORD dmNup; - } - DWORD dmDisplayFrequency; - DWORD dmICMMethod; - DWORD dmICMIntent; - DWORD dmMediaType; - DWORD dmDitherType; - DWORD dmReserved1; - DWORD dmReserved2; - DWORD dmPanningWidth; - DWORD dmPanningHeight; -} -alias DEVMODEA* PDEVMODEA, NPDEVMODEA, LPDEVMODEA; - -struct DEVMODEW { - WCHAR[CCHDEVICENAME] dmDeviceName; - WORD dmSpecVersion; - WORD dmDriverVersion; - WORD dmSize; - WORD dmDriverExtra; - DWORD dmFields; - union { - struct { - short dmOrientation; - short dmPaperSize; - short dmPaperLength; - short dmPaperWidth; - short dmScale; - short dmCopies; - short dmDefaultSource; - short dmPrintQuality; - } - struct { - POINTL dmPosition; - DWORD dmDisplayOrientation; - DWORD dmDisplayFixedOutput; - } - } - - short dmColor; - short dmDuplex; - short dmYResolution; - short dmTTOption; - short dmCollate; - WCHAR[CCHFORMNAME] dmFormName; - WORD dmLogPixels; - DWORD dmBitsPerPel; - DWORD dmPelsWidth; - DWORD dmPelsHeight; - union { - DWORD dmDisplayFlags; - DWORD dmNup; - } - DWORD dmDisplayFrequency; - DWORD dmICMMethod; - DWORD dmICMIntent; - DWORD dmMediaType; - DWORD dmDitherType; - DWORD dmReserved1; - DWORD dmReserved2; - DWORD dmPanningWidth; - DWORD dmPanningHeight; -} -alias DEVMODEW* PDEVMODEW, NPDEVMODEW, LPDEVMODEW; - -/* - * Information about output options - */ -struct PSFEATURE_OUTPUT { - BOOL bPageIndependent; - BOOL bSetPageDevice; -} -alias PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT; - -/* - * Information about custom paper size - */ -struct PSFEATURE_CUSTPAPER { - LONG lOrientation; - LONG lWidth; - LONG lHeight; - LONG lWidthOffset; - LONG lHeightOffset; -} -alias PSFEATURE_CUSTPAPER* PPSFEATURE_CUSTPAPER; - -struct DIBSECTION { - BITMAP dsBm; - BITMAPINFOHEADER dsBmih; - DWORD[3] dsBitfields; - HANDLE dshSection; - DWORD dsOffset; -} -alias DIBSECTION* PDIBSECTION; - -struct DOCINFOA { - int cbSize = DOCINFOA.sizeof; - LPCSTR lpszDocName; - LPCSTR lpszOutput; - LPCSTR lpszDatatype; - DWORD fwType; -} -alias DOCINFOA* LPDOCINFOA; - -struct DOCINFOW { - int cbSize = DOCINFOW.sizeof; - LPCWSTR lpszDocName; - LPCWSTR lpszOutput; - LPCWSTR lpszDatatype; - DWORD fwType; -} -alias DOCINFOW* LPDOCINFOW; - - -struct PANOSE { - BYTE bFamilyType; - BYTE bSerifStyle; - BYTE bWeight; - BYTE bProportion; - BYTE bContrast; - BYTE bStrokeVariation; - BYTE bArmStyle; - BYTE bLetterform; - BYTE bMidline; - BYTE bXHeight; -} -alias PANOSE* LPPANOSE; - -struct LOGFONTA { - LONG lfHeight; - LONG lfWidth; - LONG lfEscapement; - LONG lfOrientation; - LONG lfWeight; - BYTE lfItalic; - BYTE lfUnderline; - BYTE lfStrikeOut; - BYTE lfCharSet; - BYTE lfOutPrecision; - BYTE lfClipPrecision; - BYTE lfQuality; - BYTE lfPitchAndFamily; - CHAR[LF_FACESIZE] lfFaceName; -} -alias LOGFONTA* PLOGFONTA, NPLOGFONTA, LPLOGFONTA; - -struct LOGFONTW { - LONG lfHeight; - LONG lfWidth; - LONG lfEscapement; - LONG lfOrientation; - LONG lfWeight; - BYTE lfItalic; - BYTE lfUnderline; - BYTE lfStrikeOut; - BYTE lfCharSet; - BYTE lfOutPrecision; - BYTE lfClipPrecision; - BYTE lfQuality; - BYTE lfPitchAndFamily; - WCHAR[LF_FACESIZE] lfFaceName; -} -alias LOGFONTW* PLOGFONTW, NPLOGFONTW, LPLOGFONTW; - -struct EXTLOGFONTA { - LOGFONTA elfLogFont; - BYTE[LF_FULLFACESIZE] elfFullName; - BYTE[LF_FACESIZE] elfStyle; - DWORD elfVersion; - DWORD elfStyleSize; - DWORD elfMatch; - DWORD elfReserved; - BYTE[ELF_VENDOR_SIZE] elfVendorId; - DWORD elfCulture; - PANOSE elfPanose; -} -alias EXTLOGFONTA* PEXTLOGFONTA, NPEXTLOGFONTA, LPEXTLOGFONTA; - -struct EXTLOGFONTW { - LOGFONTW elfLogFont; - WCHAR[LF_FULLFACESIZE] elfFullName; - WCHAR[LF_FACESIZE] elfStyle; - DWORD elfVersion; - DWORD elfStyleSize; - DWORD elfMatch; - DWORD elfReserved; - BYTE[ELF_VENDOR_SIZE] elfVendorId; - DWORD elfCulture; - PANOSE elfPanose; -} -alias EXTLOGFONTW* PEXTLOGFONTW, NPEXTLOGFONTW, LPEXTLOGFONTW; - -struct LOGPEN { - UINT lopnStyle; - POINT lopnWidth; - COLORREF lopnColor; -} -alias LOGPEN* PLOGPEN, NPLOGPEN, LPLOGPEN; - -// ---------------------- EMR ------------ - -struct EMR { - DWORD iType; - DWORD nSize; -} -alias EMR* PEMR; - -struct EMRANGLEARC { - EMR emr; - POINTL ptlCenter; - DWORD nRadius; - FLOAT eStartAngle; - FLOAT eSweepAngle; -} -alias EMRANGLEARC* PEMRANGLEARC; - -struct EMRARC { - EMR emr; - RECTL rclBox; - POINTL ptlStart; - POINTL ptlEnd; -} -alias EMRARC* PEMRARC; -alias TypeDef!(EMRARC) EMRARCTO; -alias EMRARCTO* PEMRARCTO; -alias TypeDef!(EMRARC) EMRCHORD; -alias EMRCHORD* PEMRCHORD; -alias TypeDef!(EMRARC) EMRPIE; -alias EMRPIE* PEMRPIE; - -struct XFORM { - FLOAT eM11; - FLOAT eM12; - FLOAT eM21; - FLOAT eM22; - FLOAT eDx; - FLOAT eDy; -} -alias XFORM* PXFORM, LPXFORM; - -struct EMRBITBLT { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG cxDest; - LONG cyDest; - DWORD dwRop; - LONG xSrc; - LONG ySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; -} -alias EMRBITBLT* PEMRBITBLT; - -struct LOGBRUSH { - UINT lbStyle; - COLORREF lbColor; - LONG lbHatch; -} -alias TypeDef!(LOGBRUSH) PATTERN; -alias LOGBRUSH* PLOGBRUSH, NPLOGBRUSH, LPLOGBRUSH; -alias PATTERN* PPATTERN, NPPATTERN, LPPATTERN; - -struct LOGBRUSH32 { - UINT lbStyle; - COLORREF lbColor; - ULONG lbHatch; -} -alias LOGBRUSH32* PLOGBRUSH32, NPLOGBRUSH32, LPLOGBRUSH32; - -struct EMRCREATEBRUSHINDIRECT { - EMR emr; - DWORD ihBrush; - LOGBRUSH32 lb; -} -alias EMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT; - -alias LONG LCSCSTYPE, LCSGAMUTMATCH; - -struct LOGCOLORSPACEA { - DWORD lcsSignature; - DWORD lcsVersion; - DWORD lcsSize; - LCSCSTYPE lcsCSType; - LCSGAMUTMATCH lcsIntent; - CIEXYZTRIPLE lcsEndpoints; - DWORD lcsGammaRed; - DWORD lcsGammaGreen; - DWORD lcsGammaBlue; - CHAR[MAX_PATH] lcsFilename; -} -alias LOGCOLORSPACEA* LPLOGCOLORSPACEA; - -struct LOGCOLORSPACEW { - DWORD lcsSignature; - DWORD lcsVersion; - DWORD lcsSize; - LCSCSTYPE lcsCSType; - LCSGAMUTMATCH lcsIntent; - CIEXYZTRIPLE lcsEndpoints; - DWORD lcsGammaRed; - DWORD lcsGammaGreen; - DWORD lcsGammaBlue; - WCHAR[MAX_PATH] lcsFilename; -} -alias LOGCOLORSPACEW* LPLOGCOLORSPACEW; - -alias USHORT COLOR16; -struct TRIVERTEX { - LONG x; - LONG y; - COLOR16 Red; - COLOR16 Green; - COLOR16 Blue; - COLOR16 Alpha; -} -alias TRIVERTEX* PTRIVERTEX, LPTRIVERTEX; - -struct EMRGLSRECORD { - EMR emr; - DWORD cbData; - BYTE[1] Data; -} -alias EMRGLSRECORD* PEMRGLSRECORD; - -struct EMRGLSBOUNDEDRECORD { - EMR emr; - RECTL rclBounds; - DWORD cbData; - BYTE[1] Data; -} -alias EMRGLSBOUNDEDRECORD* PEMRGLSBOUNDEDRECORD; - -struct EMRPIXELFORMAT { - EMR emr; - PIXELFORMATDESCRIPTOR pfd; -} -alias EMRPIXELFORMAT* PEMRPIXELFORMAT; - -struct EMRCREATECOLORSPACE { - EMR emr; - DWORD ihCS; - LOGCOLORSPACE lcs; -} -alias EMRCREATECOLORSPACE* PEMRCREATECOLORSPACE; - -struct EMRSETCOLORSPACE { - EMR emr; - DWORD ihCS; -} -alias EMRSETCOLORSPACE* PEMRSETCOLORSPACE; -alias TypeDef!(EMRSETCOLORSPACE) EMRSELECTCOLORSPACE; -alias EMRSELECTCOLORSPACE* PEMRSELECTCOLORSPACE; -alias TypeDef!(EMRSETCOLORSPACE) EMRDELETECOLORSPACE; -alias EMRDELETECOLORSPACE* PEMRDELETECOLORSPACE; - -static if (_WIN32_WINNT >= 0x500) { - - struct EMREXTESCAPE { - EMR emr; - INT iEscape; - INT cbEscData; - BYTE[1] EscData; - } - alias EMREXTESCAPE* PEMREXTESCAPE; - alias TypeDef!(EMREXTESCAPE) EMRDRAWESCAPE; - alias EMRDRAWESCAPE* PEMRDRAWESCAPE; - - struct EMRNAMEDESCAPE { - EMR emr; - INT iEscape; - INT cbDriver; - INT cbEscData; - BYTE[1] EscData; - } - alias EMRNAMEDESCAPE* PEMRNAMEDESCAPE; - - struct EMRSETICMPROFILE { - EMR emr; - DWORD dwFlags; - DWORD cbName; - DWORD cbData; - BYTE[1] Data; - } - alias EMRSETICMPROFILE* PEMRSETICMPROFILE; - alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEA; - alias EMRSETICMPROFILEA* PEMRSETICMPROFILEA; - alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEW; - alias EMRSETICMPROFILEW* PEMRSETICMPROFILEW; - - struct EMRCREATECOLORSPACEW { - EMR emr; - DWORD ihCS; - LOGCOLORSPACEW lcs; - DWORD dwFlags; - DWORD cbData; - BYTE[1] Data; - } - alias EMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW; - - struct EMRCOLORMATCHTOTARGET { - EMR emr; - DWORD dwAction; - DWORD dwFlags; - DWORD cbName; - DWORD cbData; - BYTE[1] Data; - } - alias EMRCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET; - - struct EMRCOLORCORRECTPALETTE { - EMR emr; - DWORD ihPalette; - DWORD nFirstEntry; - DWORD nPalEntries; - DWORD nReserved; - } - alias EMRCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE; - - struct EMRALPHABLEND { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG cxDest; - LONG cyDest; - DWORD dwRop; - LONG xSrc; - LONG ySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - LONG cxSrc; - LONG cySrc; - } - alias EMRALPHABLEND* PEMRALPHABLEND; - - struct EMRGRADIENTFILL { - EMR emr; - RECTL rclBounds; - DWORD nVer; - DWORD nTri; - ULONG ulMode; - TRIVERTEX[1] Ver; - } - alias EMRGRADIENTFILL* PEMRGRADIENTFILL; - - struct EMRTRANSPARENTBLT { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG cxDest; - LONG cyDest; - DWORD dwRop; - LONG xSrc; - LONG ySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - LONG cxSrc; - LONG cySrc; - } - alias EMRTRANSPARENTBLT* PEMRTRANSPARENTBLT; -} - -struct EMRCREATEDIBPATTERNBRUSHPT { - EMR emr; - DWORD ihBrush; - DWORD iUsage; - DWORD offBmi; - DWORD cbBmi; - DWORD offBits; - DWORD cbBits; -} -alias EMRCREATEDIBPATTERNBRUSHPT* PEMRCREATEDIBPATTERNBRUSHPT; - -struct EMRCREATEMONOBRUSH { - EMR emr; - DWORD ihBrush; - DWORD iUsage; - DWORD offBmi; - DWORD cbBmi; - DWORD offBits; - DWORD cbBits; -} -alias EMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH; - -struct PALETTEENTRY { - BYTE peRed; - BYTE peGreen; - BYTE peBlue; - BYTE peFlags; -} -alias PALETTEENTRY* PPALETTEENTRY, LPPALETTEENTRY; - -struct LOGPALETTE { - WORD palVersion; - WORD palNumEntries; - PALETTEENTRY[1] palPalEntry; -} -alias LOGPALETTE* PLOGPALETTE, NPLOGPALETTE, LPLOGPALETTE; - -struct EMRCREATEPALETTE { - EMR emr; - DWORD ihPal; - LOGPALETTE lgpl; -} -alias EMRCREATEPALETTE* PEMRCREATEPALETTE; - -struct EMRCREATEPEN { - EMR emr; - DWORD ihPen; - LOGPEN lopn; -} -alias EMRCREATEPEN* PEMRCREATEPEN; - -struct EMRELLIPSE { - EMR emr; - RECTL rclBox; -} -alias EMRELLIPSE* PEMRELLIPSE; - -alias TypeDef!(EMRELLIPSE) EMRRECTANGLE; -alias EMRRECTANGLE* PEMRRECTANGLE; - -struct EMREOF { - EMR emr; - DWORD nPalEntries; - DWORD offPalEntries; - DWORD nSizeLast; -} -alias EMREOF* PEMREOF; - -struct EMREXCLUDECLIPRECT { - EMR emr; - RECTL rclClip; -} -alias EMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT; -alias TypeDef!(EMREXCLUDECLIPRECT) EMRINTERSECTCLIPRECT; -alias EMRINTERSECTCLIPRECT* PEMRINTERSECTCLIPRECT; - -struct EMREXTCREATEFONTINDIRECTW { - EMR emr; - DWORD ihFont; - EXTLOGFONTW elfw; -} -alias EMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW; - -struct EXTLOGPEN { - UINT elpPenStyle; - UINT elpWidth; - UINT elpBrushStyle; - COLORREF elpColor; - LONG elpHatch; - DWORD elpNumEntries; - DWORD[1] elpStyleEntry; -} -alias EXTLOGPEN* PEXTLOGPEN, NPEXTLOGPEN, LPEXTLOGPEN; - -struct EMREXTCREATEPEN { - EMR emr; - DWORD ihPen; - DWORD offBmi; - DWORD cbBmi; - DWORD offBits; - DWORD cbBits; - EXTLOGPEN elp; -} -alias EMREXTCREATEPEN* PEMREXTCREATEPEN; - -struct EMREXTFLOODFILL { - EMR emr; - POINTL ptlStart; - COLORREF crColor; - DWORD iMode; -} -alias EMREXTFLOODFILL* PEMREXTFLOODFILL; - -struct EMREXTSELECTCLIPRGN { - EMR emr; - DWORD cbRgnData; - DWORD iMode; - BYTE [1]RgnData; -} -alias EMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN; - -struct EMRTEXT { - POINTL ptlReference; - DWORD nChars; - DWORD offString; - DWORD fOptions; - RECTL rcl; - DWORD offDx; -} -alias EMRTEXT* PEMRTEXT; - -struct EMREXTTEXTOUTA { - EMR emr; - RECTL rclBounds; - DWORD iGraphicsMode; - FLOAT exScale; - FLOAT eyScale; - EMRTEXT emrtext; -} -alias EMREXTTEXTOUTA* PEMREXTTEXTOUTA; -alias TypeDef!(EMREXTTEXTOUTA) EMREXTTEXTOUTW; -alias EMREXTTEXTOUTW* PEMREXTTEXTOUTW; - -struct EMRFILLPATH { - EMR emr; - RECTL rclBounds; -} -alias EMRFILLPATH* PEMRFILLPATH; - -alias TypeDef!(EMRFILLPATH) EMRSTROKEANDFILLPATH; -alias EMRSTROKEANDFILLPATH* PEMRSTROKEANDFILLPATH; - -alias TypeDef!(EMRFILLPATH) EMRSTROKEPATH; -alias EMRSTROKEPATH* PEMRSTROKEPATH; - -struct EMRFILLRGN { - EMR emr; - RECTL rclBounds; - DWORD cbRgnData; - DWORD ihBrush; - BYTE[1] RgnData; -} -alias EMRFILLRGN* PEMRFILLRGN; - -struct EMRFORMAT { - DWORD dSignature; - DWORD nVersion; - DWORD cbData; - DWORD offData; -} -alias EMRFORMAT* PEMRFORMAT; - -struct EMRFRAMERGN { - EMR emr; - RECTL rclBounds; - DWORD cbRgnData; - DWORD ihBrush; - SIZEL szlStroke; - BYTE[1] RgnData; -} -alias EMRFRAMERGN* PEMRFRAMERGN; - -struct EMRGDICOMMENT { - EMR emr; - DWORD cbData; - BYTE[1] Data; -} -alias EMRGDICOMMENT* PEMRGDICOMMENT; - -struct EMRINVERTRGN { - EMR emr; - RECTL rclBounds; - DWORD cbRgnData; - BYTE[1] RgnData; -} -alias EMRINVERTRGN* PEMRINVERTRGN; -alias TypeDef!(EMRINVERTRGN) EMRPAINTRGN; -alias EMRPAINTRGN* PEMRPAINTRGN; - -struct EMRLINETO { - EMR emr; - POINTL ptl; -} -alias EMRLINETO* PEMRLINETO; -alias TypeDef!(EMRLINETO) EMRMOVETOEX; -alias EMRMOVETOEX* PEMRMOVETOEX; - -struct EMRMASKBLT { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG cxDest; - LONG cyDest; - DWORD dwRop; - LONG xSrc; - LONG ySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - LONG xMask; - LONG yMask; - DWORD iUsageMask; - DWORD offBmiMask; - DWORD cbBmiMask; - DWORD offBitsMask; - DWORD cbBitsMask; -} -alias EMRMASKBLT* PEMRMASKBLT; - -struct EMRMODIFYWORLDTRANSFORM { - EMR emr; - XFORM xform; - DWORD iMode; -} -alias EMRMODIFYWORLDTRANSFORM* PEMRMODIFYWORLDTRANSFORM; - -struct EMROFFSETCLIPRGN { - EMR emr; - POINTL ptlOffset; -} -alias EMROFFSETCLIPRGN* PEMROFFSETCLIPRGN; - -struct EMRPLGBLT { - EMR emr; - RECTL rclBounds; - POINTL[3] aptlDest; - LONG xSrc; - LONG ySrc; - LONG cxSrc; - LONG cySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - LONG xMask; - LONG yMask; - DWORD iUsageMask; - DWORD offBmiMask; - DWORD cbBmiMask; - DWORD offBitsMask; - DWORD cbBitsMask; -} -alias EMRPLGBLT* PEMRPLGBLT; - -struct EMRPOLYDRAW { - EMR emr; - RECTL rclBounds; - DWORD cptl; - POINTL[1] aptl; - BYTE[1] abTypes; -} -alias EMRPOLYDRAW* PEMRPOLYDRAW; - -struct EMRPOLYDRAW16 { - EMR emr; - RECTL rclBounds; - DWORD cpts; - POINTS[1] apts; - BYTE[1] abTypes; -} -alias EMRPOLYDRAW16* PEMRPOLYDRAW16; - -struct EMRPOLYLINE { - EMR emr; - RECTL rclBounds; - DWORD cptl; - POINTL[1] aptl; -} -alias EMRPOLYLINE* PEMRPOLYLINE; -alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIER; -alias EMRPOLYBEZIER* PEMRPOLYBEZIER; -alias TypeDef!(EMRPOLYLINE) EMRPOLYGON; -alias EMRPOLYGON* PEMRPOLYGON; -alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIERTO; -alias EMRPOLYBEZIERTO* PEMRPOLYBEZIERTO; -alias TypeDef!(EMRPOLYLINE) EMRPOLYLINETO; -alias EMRPOLYLINETO* PEMRPOLYLINETO; - -struct EMRPOLYLINE16 { - EMR emr; - RECTL rclBounds; - DWORD cpts; - POINTS[1] apts; -} -alias EMRPOLYLINE16* PEMRPOLYLINE16; -alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIER16; -alias EMRPOLYBEZIER16* PEMRPOLYBEZIER16; -alias TypeDef!(EMRPOLYLINE16) EMRPOLYGON16; -alias EMRPOLYGON16* PEMRPOLYGON16; -alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIERTO16; -alias EMRPOLYBEZIERTO16* PEMRPOLYBEZIERTO16; -alias TypeDef!(EMRPOLYLINE16) EMRPOLYLINETO16; -alias EMRPOLYLINETO16* PEMRPOLYLINETO16; - -struct EMRPOLYPOLYLINE { - EMR emr; - RECTL rclBounds; - DWORD nPolys; - DWORD cptl; - DWORD[1] aPolyCounts; - POINTL[1] aptl; -} -alias EMRPOLYPOLYLINE* PEMRPOLYPOLYLINE; -alias TypeDef!(EMRPOLYPOLYLINE) EMRPOLYPOLYGON; -alias EMRPOLYPOLYGON* PEMRPOLYPOLYGON; - -struct EMRPOLYPOLYLINE16 { - EMR emr; - RECTL rclBounds; - DWORD nPolys; - DWORD cpts; - DWORD[1] aPolyCounts; - POINTS[1] apts; -} -alias EMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16; -alias TypeDef!(EMRPOLYPOLYLINE16) EMRPOLYPOLYGON16; -alias EMRPOLYPOLYGON16* PEMRPOLYPOLYGON16; - -struct EMRPOLYTEXTOUTA { - EMR emr; - RECTL rclBounds; - DWORD iGraphicsMode; - FLOAT exScale; - FLOAT eyScale; - LONG cStrings; - EMRTEXT[1] aemrtext; -} -alias EMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA; -alias TypeDef!(EMRPOLYTEXTOUTA) EMRPOLYTEXTOUTW; -alias EMRPOLYTEXTOUTW* PEMRPOLYTEXTOUTW; - -struct EMRRESIZEPALETTE { - EMR emr; - DWORD ihPal; - DWORD cEntries; -} -alias EMRRESIZEPALETTE* PEMRRESIZEPALETTE; - -struct EMRRESTOREDC { - EMR emr; - LONG iRelative; -} -alias EMRRESTOREDC* PEMRRESTOREDC; - -struct EMRROUNDRECT { - EMR emr; - RECTL rclBox; - SIZEL szlCorner; -} -alias EMRROUNDRECT* PEMRROUNDRECT; - -struct EMRSCALEVIEWPORTEXTEX { - EMR emr; - LONG xNum; - LONG xDenom; - LONG yNum; - LONG yDenom; -} -alias EMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX; -alias TypeDef!(EMRSCALEVIEWPORTEXTEX) EMRSCALEWINDOWEXTEX; -alias EMRSCALEWINDOWEXTEX* PEMRSCALEWINDOWEXTEX; - -struct EMRSELECTOBJECT { - EMR emr; - DWORD ihObject; -} -alias EMRSELECTOBJECT* PEMRSELECTOBJECT; -alias TypeDef!(EMRSELECTOBJECT) EMRDELETEOBJECT; -alias EMRDELETEOBJECT* PEMRDELETEOBJECT; - -struct EMRSELECTPALETTE { - EMR emr; - DWORD ihPal; -} -alias EMRSELECTPALETTE* PEMRSELECTPALETTE; - -struct EMRSETARCDIRECTION { - EMR emr; - DWORD iArcDirection; -} -alias EMRSETARCDIRECTION* PEMRSETARCDIRECTION; - -struct EMRSETTEXTCOLOR { - EMR emr; - COLORREF crColor; -} -alias EMRSETTEXTCOLOR* PEMRSETTEXTCOLOR; -alias TypeDef!(EMRSETTEXTCOLOR) EMRSETBKCOLOR; -alias EMRSETBKCOLOR* PEMRSETBKCOLOR; - -struct EMRSETCOLORADJUSTMENT { - EMR emr; - COLORADJUSTMENT ColorAdjustment; -} -alias EMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT; - -struct EMRSETDIBITSTODEVICE { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG xSrc; - LONG ySrc; - LONG cxSrc; - LONG cySrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - DWORD iUsageSrc; - DWORD iStartScan; - DWORD cScans; -} -alias EMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE; - -struct EMRSETMAPPERFLAGS { - EMR emr; - DWORD dwFlags; -} -alias EMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS; - -struct EMRSETMITERLIMIT { - EMR emr; - FLOAT eMiterLimit; -} -alias EMRSETMITERLIMIT* PEMRSETMITERLIMIT; - -struct EMRSETPALETTEENTRIES { - EMR emr; - DWORD ihPal; - DWORD iStart; - DWORD cEntries; - PALETTEENTRY[1] aPalEntries; -} -alias EMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES; - -struct EMRSETPIXELV { - EMR emr; - POINTL ptlPixel; - COLORREF crColor; -} -alias EMRSETPIXELV* PEMRSETPIXELV; - -struct EMRSETVIEWPORTEXTEX { - EMR emr; - SIZEL szlExtent; -} -alias EMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX; -alias TypeDef!(EMRSETVIEWPORTEXTEX) EMRSETWINDOWEXTEX; -alias EMRSETWINDOWEXTEX* PEMRSETWINDOWEXTEX; - -struct EMRSETVIEWPORTORGEX { - EMR emr; - POINTL ptlOrigin; -} -alias EMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX; -alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETWINDOWORGEX; -alias EMRSETWINDOWORGEX* PEMRSETWINDOWORGEX; -alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETBRUSHORGEX; -alias EMRSETBRUSHORGEX* PEMRSETBRUSHORGEX; - -struct EMRSETWORLDTRANSFORM { - EMR emr; - XFORM xform; -} -alias EMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM; - -struct EMRSTRETCHBLT { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG cxDest; - LONG cyDest; - DWORD dwRop; - LONG xSrc; - LONG ySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - LONG cxSrc; - LONG cySrc; -} -alias EMRSTRETCHBLT* PEMRSTRETCHBLT; - -struct EMRSTRETCHDIBITS { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG xSrc; - LONG ySrc; - LONG cxSrc; - LONG cySrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - DWORD iUsageSrc; - DWORD dwRop; - LONG cxDest; - LONG cyDest; -} -alias EMRSTRETCHDIBITS* PEMRSTRETCHDIBITS; - -struct EMRABORTPATH { - EMR emr; -} -alias EMRABORTPATH* PEMRABORTPATH; -alias TypeDef!(EMRABORTPATH) EMRBEGINPATH; -alias EMRBEGINPATH* PEMRBEGINPATH; -alias TypeDef!(EMRABORTPATH) EMRENDPATH; -alias EMRENDPATH* PEMRENDPATH; -alias TypeDef!(EMRABORTPATH) EMRCLOSEFIGURE; -alias EMRCLOSEFIGURE* PEMRCLOSEFIGURE; -alias TypeDef!(EMRABORTPATH) EMRFLATTENPATH; -alias EMRFLATTENPATH* PEMRFLATTENPATH; -alias TypeDef!(EMRABORTPATH) EMRWIDENPATH; -alias EMRWIDENPATH* PEMRWIDENPATH; -alias TypeDef!(EMRABORTPATH) EMRSETMETARGN; -alias EMRSETMETARGN* PEMRSETMETARGN; -alias TypeDef!(EMRABORTPATH) EMRSAVEDC; -alias EMRSAVEDC* PEMRSAVEDC; -alias TypeDef!(EMRABORTPATH) EMRREALIZEPALETTE; -alias EMRREALIZEPALETTE* PEMRREALIZEPALETTE; - -struct EMRSELECTCLIPPATH { - EMR emr; - DWORD iMode; -} -alias EMRSELECTCLIPPATH* PEMRSELECTCLIPPATH; -alias TypeDef!(EMRSELECTCLIPPATH) EMRSETBKMODE; -alias EMRSETBKMODE* PEMRSETBKMODE; -alias TypeDef!(EMRSELECTCLIPPATH) EMRSETMAPMODE; -alias EMRSETMAPMODE* PEMRSETMAPMODE; -alias TypeDef!(EMRSELECTCLIPPATH) EMRSETPOLYFILLMODE; -alias EMRSETPOLYFILLMODE* PEMRSETPOLYFILLMODE; -alias TypeDef!(EMRSELECTCLIPPATH) EMRSETROP2; -alias EMRSETROP2* PEMRSETROP2; -alias TypeDef!(EMRSELECTCLIPPATH) EMRSETSTRETCHBLTMODE; -alias EMRSETSTRETCHBLTMODE* PEMRSETSTRETCHBLTMODE; -alias TypeDef!(EMRSELECTCLIPPATH) EMRSETICMMODE; -alias EMRSETICMMODE* PEMRSETICMMODE; -alias TypeDef!(EMRSELECTCLIPPATH) EMRSETTEXTALIGN; -alias EMRSETTEXTALIGN* PEMRSETTEXTALIGN; -alias TypeDef!(EMRSELECTCLIPPATH) EMRENABLEICM; -alias EMRENABLEICM* PEMRENABLEICM; -static if (_WIN32_WINNT >= 0x500) { - alias TypeDef!(EMRSELECTCLIPPATH) EMRSETLAYOUT; - alias EMRSETLAYOUT* PEMRSETLAYOUT; -} - -align(2): -struct METAHEADER { -align(2): - WORD mtType; - WORD mtHeaderSize; - WORD mtVersion; - DWORD mtSize; - WORD mtNoObjects; - DWORD mtMaxRecord; - WORD mtNoParameters; -} -alias METAHEADER* PMETAHEADER; -alias METAHEADER* LPMETAHEADER; - -align: - -struct ENHMETAHEADER { - DWORD iType = EMR_HEADER; - DWORD nSize = ENHMETAHEADER.sizeof; - RECTL rclBounds; - RECTL rclFrame; - DWORD dSignature = ENHMETA_SIGNATURE; - DWORD nVersion; - DWORD nBytes; - DWORD nRecords; - WORD nHandles; - WORD sReserved; - DWORD nDescription; - DWORD offDescription; - DWORD nPalEntries; - SIZEL szlDevice; - SIZEL szlMillimeters; - DWORD cbPixelFormat; - DWORD offPixelFormat; - DWORD bOpenGL; - static if (_WIN32_WINNT >= 0x500) { - SIZEL szlMicrometers; - } -} -alias ENHMETAHEADER* PENHMETAHEADER, LPENHMETAHEADER; - -struct METARECORD { - DWORD rdSize; - WORD rdFunction; - WORD[1] rdParm; -} -alias METARECORD* PMETARECORD; -alias METARECORD* LPMETARECORD; - -struct ENHMETARECORD { - DWORD iType; - DWORD nSize; - DWORD[1] dParm; -} -alias ENHMETARECORD* PENHMETARECORD, LPENHMETARECORD; - -// --- - -struct HANDLETABLE { - HGDIOBJ[1] objectHandle; -} -alias HANDLETABLE* PHANDLETABLE, LPHANDLETABLE; - -struct TEXTMETRICA { - LONG tmHeight; - LONG tmAscent; - LONG tmDescent; - LONG tmInternalLeading; - LONG tmExternalLeading; - LONG tmAveCharWidth; - LONG tmMaxCharWidth; - LONG tmWeight; - LONG tmOverhang; - LONG tmDigitizedAspectX; - LONG tmDigitizedAspectY; - BYTE tmFirstChar; - BYTE tmLastChar; - BYTE tmDefaultChar; - BYTE tmBreakChar; - BYTE tmItalic; - BYTE tmUnderlined; - BYTE tmStruckOut; - BYTE tmPitchAndFamily; - BYTE tmCharSet; -} -alias TEXTMETRICA* PTEXTMETRICA, NPTEXTMETRICA, LPTEXTMETRICA; - -struct TEXTMETRICW { - LONG tmHeight; - LONG tmAscent; - LONG tmDescent; - LONG tmInternalLeading; - LONG tmExternalLeading; - LONG tmAveCharWidth; - LONG tmMaxCharWidth; - LONG tmWeight; - LONG tmOverhang; - LONG tmDigitizedAspectX; - LONG tmDigitizedAspectY; - WCHAR tmFirstChar; - WCHAR tmLastChar; - WCHAR tmDefaultChar; - WCHAR tmBreakChar; - BYTE tmItalic; - BYTE tmUnderlined; - BYTE tmStruckOut; - BYTE tmPitchAndFamily; - BYTE tmCharSet; -} -alias TEXTMETRICW* PTEXTMETRICW, NPTEXTMETRICW, LPTEXTMETRICW; - -struct RGNDATAHEADER { - DWORD dwSize; - DWORD iType; - DWORD nCount; - DWORD nRgnSize; - RECT rcBound; -} -alias RGNDATAHEADER* PRGNDATAHEADER; - -struct RGNDATA { - RGNDATAHEADER rdh; - char[1] Buffer; -} -alias RGNDATA* PRGNDATA, NPRGNDATA, LPRGNDATA; - -/* for GetRandomRgn */ -const SYSRGN=4; -struct GCP_RESULTSA { - DWORD lStructSize; - LPSTR lpOutString; - UINT* lpOrder; - INT* lpDx; - INT* lpCaretPos; - LPSTR lpClass; - LPWSTR lpGlyphs; - UINT nGlyphs; - UINT nMaxFit; -} -alias GCP_RESULTSA* LPGCP_RESULTSA; - -struct GCP_RESULTSW { - DWORD lStructSize; - LPWSTR lpOutString; - UINT* lpOrder; - INT* lpDx; - INT* lpCaretPos; - LPWSTR lpClass; - LPWSTR lpGlyphs; - UINT nGlyphs; - UINT nMaxFit; -} -alias GCP_RESULTSW* LPGCP_RESULTSW; - -struct GLYPHMETRICS { - UINT gmBlackBoxX; - UINT gmBlackBoxY; - POINT gmptGlyphOrigin; - short gmCellIncX; - short gmCellIncY; -} -alias GLYPHMETRICS* LPGLYPHMETRICS; - -static if (_WIN32_WINNT >= 0x500) { - struct WCRANGE { - WCHAR wcLow; - USHORT cGlyphs; - } - alias WCRANGE* PWCRANGE, LPWCRANGE; - - struct GLYPHSET { - DWORD cbThis; - DWORD flAccel; - DWORD cGlyphsSupported; - DWORD cRanges; - WCRANGE[1] ranges; - } - alias GLYPHSET* PGLYPHSET, LPGLYPHSET; - - const DWORD GS_8BIT_INDICES = 0x00000001; -} - -struct KERNINGPAIR { - WORD wFirst; - WORD wSecond; - int iKernAmount; -} -alias KERNINGPAIR* LPKERNINGPAIR; - -struct FIXED { - WORD fract; - short value; -} - -struct MAT2 { - FIXED eM11; - FIXED eM12; - FIXED eM21; - FIXED eM22; -} -alias MAT2* LPMAT2; - -struct OUTLINETEXTMETRICA { - UINT otmSize; - TEXTMETRICA otmTextMetrics; - BYTE otmFiller; - PANOSE otmPanoseNumber; - UINT otmfsSelection; - UINT otmfsType; - int otmsCharSlopeRise; - int otmsCharSlopeRun; - int otmItalicAngle; - UINT otmEMSquare; - int otmAscent; - int otmDescent; - UINT otmLineGap; - UINT otmsCapEmHeight; - UINT otmsXHeight; - RECT otmrcFontBox; - int otmMacAscent; - int otmMacDescent; - UINT otmMacLineGap; - UINT otmusMinimumPPEM; - POINT otmptSubscriptSize; - POINT otmptSubscriptOffset; - POINT otmptSuperscriptSize; - POINT otmptSuperscriptOffset; - UINT otmsStrikeoutSize; - int otmsStrikeoutPosition; - int otmsUnderscoreSize; - int otmsUnderscorePosition; - PSTR otmpFamilyName; - PSTR otmpFaceName; - PSTR otmpStyleName; - PSTR otmpFullName; -} -alias OUTLINETEXTMETRICA* POUTLINETEXTMETRICA, NPOUTLINETEXTMETRICA, LPOUTLINETEXTMETRICA; - -struct OUTLINETEXTMETRICW { - UINT otmSize; - TEXTMETRICW otmTextMetrics; - BYTE otmFiller; - PANOSE otmPanoseNumber; - UINT otmfsSelection; - UINT otmfsType; - int otmsCharSlopeRise; - int otmsCharSlopeRun; - int otmItalicAngle; - UINT otmEMSquare; - int otmAscent; - int otmDescent; - UINT otmLineGap; - UINT otmsCapEmHeight; - UINT otmsXHeight; - RECT otmrcFontBox; - int otmMacAscent; - int otmMacDescent; - UINT otmMacLineGap; - UINT otmusMinimumPPEM; - POINT otmptSubscriptSize; - POINT otmptSubscriptOffset; - POINT otmptSuperscriptSize; - POINT otmptSuperscriptOffset; - UINT otmsStrikeoutSize; - int otmsStrikeoutPosition; - int otmsUnderscoreSize; - int otmsUnderscorePosition; - PSTR otmpFamilyName; - PSTR otmpFaceName; - PSTR otmpStyleName; - PSTR otmpFullName; -} -alias OUTLINETEXTMETRICW* POUTLINETEXTMETRICW, NPOUTLINETEXTMETRICW, LPOUTLINETEXTMETRICW; - -struct RASTERIZER_STATUS { - short nSize; - short wFlags; - short nLanguageID; -} -alias RASTERIZER_STATUS* LPRASTERIZER_STATUS; - -struct POLYTEXTA { - int x; - int y; - UINT n; - LPCSTR lpstr; - UINT uiFlags; - RECT rcl; - int* pdx; -} -alias POLYTEXTA* PPOLYTEXTA, NPPOLYTEXTA, LPPOLYTEXTA; - -struct POLYTEXTW { - int x; - int y; - UINT n; - LPCWSTR lpstr; - UINT uiFlags; - RECT rcl; - int* pdx; -} -alias POLYTEXTW* PPOLYTEXTW, NPPOLYTEXTW, LPPOLYTEXTW; - -struct PIXELFORMATDESCRIPTOR { - WORD nSize; - WORD nVersion; - DWORD dwFlags; - BYTE iPixelType; - BYTE cColorBits; - BYTE cRedBits; - BYTE cRedShift; - BYTE cGreenBits; - BYTE cGreenShift; - BYTE cBlueBits; - BYTE cBlueShift; - BYTE cAlphaBits; - BYTE cAlphaShift; - BYTE cAccumBits; - BYTE cAccumRedBits; - BYTE cAccumGreenBits; - BYTE cAccumBlueBits; - BYTE cAccumAlphaBits; - BYTE cDepthBits; - BYTE cStencilBits; - BYTE cAuxBuffers; - BYTE iLayerType; - BYTE bReserved; - DWORD dwLayerMask; - DWORD dwVisibleMask; - DWORD dwDamageMask; -} -alias PIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR, LPPIXELFORMATDESCRIPTOR; - -struct METAFILEPICT { - LONG mm; - LONG xExt; - LONG yExt; - HMETAFILE hMF; -} -alias METAFILEPICT* LPMETAFILEPICT; - -struct LOCALESIGNATURE { - DWORD[4] lsUsb; - DWORD[2] lsCsbDefault; - DWORD[2] lsCsbSupported; -} -alias LOCALESIGNATURE* PLOCALESIGNATURE, LPLOCALESIGNATURE; - -alias LONG LCSTYPE; /* What this for? */ - -align(4): -struct NEWTEXTMETRICA { - LONG tmHeight; - LONG tmAscent; - LONG tmDescent; - LONG tmInternalLeading; - LONG tmExternalLeading; - LONG tmAveCharWidth; - LONG tmMaxCharWidth; - LONG tmWeight; - LONG tmOverhang; - LONG tmDigitizedAspectX; - LONG tmDigitizedAspectY; - BYTE tmFirstChar; - BYTE tmLastChar; - BYTE tmDefaultChar; - BYTE tmBreakChar; - BYTE tmItalic; - BYTE tmUnderlined; - BYTE tmStruckOut; - BYTE tmPitchAndFamily; - BYTE tmCharSet; - DWORD ntmFlags; - UINT ntmSizeEM; - UINT ntmCellHeight; - UINT ntmAvgWidth; -} -alias NEWTEXTMETRICA* PNEWTEXTMETRICA, NPNEWTEXTMETRICA, LPNEWTEXTMETRICA; - -struct NEWTEXTMETRICW { - LONG tmHeight; - LONG tmAscent; - LONG tmDescent; - LONG tmInternalLeading; - LONG tmExternalLeading; - LONG tmAveCharWidth; - LONG tmMaxCharWidth; - LONG tmWeight; - LONG tmOverhang; - LONG tmDigitizedAspectX; - LONG tmDigitizedAspectY; - WCHAR tmFirstChar; - WCHAR tmLastChar; - WCHAR tmDefaultChar; - WCHAR tmBreakChar; - BYTE tmItalic; - BYTE tmUnderlined; - BYTE tmStruckOut; - BYTE tmPitchAndFamily; - BYTE tmCharSet; - DWORD ntmFlags; - UINT ntmSizeEM; - UINT ntmCellHeight; - UINT ntmAvgWidth; -} -alias NEWTEXTMETRICW* PNEWTEXTMETRICW, NPNEWTEXTMETRICW, LPNEWTEXTMETRICW; - -align: -struct NEWTEXTMETRICEXA { - NEWTEXTMETRICA ntmTm; - FONTSIGNATURE ntmFontSig; -} - -struct NEWTEXTMETRICEXW { - NEWTEXTMETRICW ntmTm; - FONTSIGNATURE ntmFontSig; -} - -struct PELARRAY { - LONG paXCount; - LONG paYCount; - LONG paXExt; - LONG paYExt; - BYTE paRGBs; -} -alias PELARRAY* PPELARRAY, NPPELARRAY, LPPELARRAY; - -struct ENUMLOGFONTA { - LOGFONTA elfLogFont; - BYTE[LF_FULLFACESIZE] elfFullName; - BYTE[LF_FACESIZE] elfStyle; -} -alias ENUMLOGFONTA* LPENUMLOGFONTA; - -struct ENUMLOGFONTW { - LOGFONTW elfLogFont; - WCHAR[LF_FULLFACESIZE] elfFullName; - WCHAR[LF_FACESIZE] elfStyle; -} -alias ENUMLOGFONTW* LPENUMLOGFONTW; - -struct ENUMLOGFONTEXA { - LOGFONTA elfLogFont; - BYTE[LF_FULLFACESIZE] elfFullName; - BYTE[LF_FACESIZE] elfStyle; - BYTE[LF_FACESIZE] elfScript; -} -alias ENUMLOGFONTEXA* LPENUMLOGFONTEXA; - -struct ENUMLOGFONTEXW { - LOGFONTW elfLogFont; - WCHAR[LF_FULLFACESIZE] elfFullName; - WCHAR[LF_FACESIZE] elfStyle; - WCHAR[LF_FACESIZE] elfScript; -} -alias ENUMLOGFONTEXW* LPENUMLOGFONTEXW; - -struct POINTFX { - FIXED x; - FIXED y; -} -alias POINTFX* LPPOINTFX; - -struct TTPOLYCURVE { - WORD wType; - WORD cpfx; - POINTFX[1] apfx; -} -alias TTPOLYCURVE* LPTTPOLYCURVE; - -struct TTPOLYGONHEADER { - DWORD cb; - DWORD dwType; - POINTFX pfxStart; -} -alias TTPOLYGONHEADER* LPTTPOLYGONHEADER; - -struct POINTFLOAT { - FLOAT x; - FLOAT y; -} -alias POINTFLOAT* PPOINTFLOAT; - -struct GLYPHMETRICSFLOAT { - FLOAT gmfBlackBoxX; - FLOAT gmfBlackBoxY; - POINTFLOAT gmfptGlyphOrigin; - FLOAT gmfCellIncX; - FLOAT gmfCellIncY; -} -alias GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT, LPGLYPHMETRICSFLOAT; - -struct LAYERPLANEDESCRIPTOR { - WORD nSize; - WORD nVersion; - DWORD dwFlags; - BYTE iPixelType; - BYTE cColorBits; - BYTE cRedBits; - BYTE cRedShift; - BYTE cGreenBits; - BYTE cGreenShift; - BYTE cBlueBits; - BYTE cBlueShift; - BYTE cAlphaBits; - BYTE cAlphaShift; - BYTE cAccumBits; - BYTE cAccumRedBits; - BYTE cAccumGreenBits; - BYTE cAccumBlueBits; - BYTE cAccumAlphaBits; - BYTE cDepthBits; - BYTE cStencilBits; - BYTE cAuxBuffers; - BYTE iLayerPlane; - BYTE bReserved; - COLORREF crTransparent; -} -alias LAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR, LPLAYERPLANEDESCRIPTOR; - -struct BLENDFUNCTION { - BYTE BlendOp; - BYTE BlendFlags; - BYTE SourceConstantAlpha; - BYTE AlphaFormat; -} -alias BLENDFUNCTION* PBLENDFUNCTION, LPBLENDFUNCTION; - -const MM_MAX_NUMAXES = 16; - -struct DESIGNVECTOR { - DWORD dvReserved; - DWORD dvNumAxes; - LONG[MM_MAX_NUMAXES] dvValues; -} -alias DESIGNVECTOR* PDESIGNVECTOR, LPDESIGNVECTOR; -const STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8); -const STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8); - -static if (_WIN32_WINNT >= 0x500) { - - const MM_MAX_AXES_NAMELEN = 16; - - struct AXISINFOA { - LONG axMinValue; - LONG axMaxValue; - BYTE[MM_MAX_AXES_NAMELEN] axAxisName; - } - alias AXISINFOA* PAXISINFOA, LPAXISINFOA; - - struct AXISINFOW { - LONG axMinValue; - LONG axMaxValue; - WCHAR[MM_MAX_AXES_NAMELEN] axAxisName; - } - alias AXISINFOW* PAXISINFOW, LPAXISINFOW; - - version (Unicode) { - alias AXISINFOW AXISINFO; - alias PAXISINFOW PAXISINFO; - alias LPAXISINFOW LPAXISINFO; - } - else { - alias AXISINFOA AXISINFO; - alias PAXISINFOA PAXISINFO; - alias LPAXISINFOA LPAXISINFO; - } - - struct AXESLISTA { - DWORD axlReserved; - DWORD axlNumAxes; - AXISINFOA[MM_MAX_NUMAXES] axlAxisInfo; - } - alias AXESLISTA* PAXESLISTA, LPAXESLISTA; - - struct AXESLISTW { - DWORD axlReserved; - DWORD axlNumAxes; - AXISINFOW[MM_MAX_NUMAXES] axlAxisInfo; - } - alias AXESLISTW* PAXESLISTW, LPAXESLISTW; - - version (Unicode) { - alias AXESLISTW AXESLIST; - alias PAXESLISTW PAXESLIST; - alias LPAXESLISTW LPAXESLIST; - } - else { - alias AXESLISTA AXESLIST; - alias PAXESLISTA PAXESLIST; - alias LPAXESLISTA LPAXESLIST; - } - - struct ENUMLOGFONTEXDVA { - ENUMLOGFONTEXA elfEnumLogfontEx; - DESIGNVECTOR elfDesignVector; - } - alias ENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA, LPENUMLOGFONTEXDVA; - - struct ENUMLOGFONTEXDVW { - ENUMLOGFONTEXW elfEnumLogfontEx; - DESIGNVECTOR elfDesignVector; - } - alias ENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW, LPENUMLOGFONTEXDVW; - - HFONT CreateFontIndirectExA(const(ENUMLOGFONTEXDVA)*); - HFONT CreateFontIndirectExW(const(ENUMLOGFONTEXDVW)*); - version (Unicode) - alias CreateFontIndirectExW CreateFontIndirectEx; - else - alias CreateFontIndirectExA CreateFontIndirectEx; - - struct ENUMTEXTMETRICA { - NEWTEXTMETRICEXA etmNewTextMetricEx; - AXESLISTA etmAxesList; - } - alias ENUMTEXTMETRICA* PENUMTEXTMETRICA, LPENUMTEXTMETRICA; - - struct ENUMTEXTMETRICW { - NEWTEXTMETRICEXW etmNewTextMetricEx; - AXESLISTW etmAxesList; - } - alias ENUMTEXTMETRICW* PENUMTEXTMETRICW, LPENUMTEXTMETRICW; - - version (Unicode) { - alias ENUMTEXTMETRICW ENUMTEXTMETRIC; - alias PENUMTEXTMETRICW PENUMTEXTMETRIC; - alias LPENUMTEXTMETRICW LPENUMTEXTMETRIC; - } - else { - alias ENUMTEXTMETRICA ENUMTEXTMETRIC; - alias PENUMTEXTMETRICA PENUMTEXTMETRIC; - alias LPENUMTEXTMETRICA LPENUMTEXTMETRIC; - } -} /* _WIN32_WINNT >= 0x500 */ - -struct GRADIENT_TRIANGLE { - ULONG Vertex1; - ULONG Vertex2; - ULONG Vertex3; -} -alias GRADIENT_TRIANGLE* PGRADIENT_TRIANGLE, LPGRADIENT_TRIANGLE; - -struct GRADIENT_RECT { - ULONG UpperLeft; - ULONG LowerRight; -} -alias GRADIENT_RECT* PGRADIENT_RECT, LPGRADIENT_RECT; - -struct DISPLAY_DEVICEA { - DWORD cb; - CHAR[32] DeviceName; - CHAR[128] DeviceString; - DWORD StateFlags; - CHAR[128] DeviceID; - CHAR[128] DeviceKey; -} -alias DISPLAY_DEVICEA* PDISPLAY_DEVICEA, LPDISPLAY_DEVICEA; - -struct DISPLAY_DEVICEW { - DWORD cb; - WCHAR[32] DeviceName; - WCHAR[128] DeviceString; - DWORD StateFlags; - WCHAR[128] DeviceID; - WCHAR[128] DeviceKey; -} -alias DISPLAY_DEVICEW* PDISPLAY_DEVICEW, LPDISPLAY_DEVICEW; - -struct DRAWPATRECT { - POINT ptPosition; - POINT ptSize; - WORD wStyle; - WORD wPattern; -} -alias DRAWPATRECT* PDRAWPATRECT; - -// --------- -// Callbacks - -alias BOOL function (HDC, int) ABORTPROC; -alias int function (HDC, HANDLETABLE*, METARECORD*, int, LPARAM) MFENUMPROC; -alias int function (HDC, HANDLETABLE*, const(ENHMETARECORD)*, int, LPARAM) ENHMFENUMPROC; -alias int function (const(LOGFONTA)*, const(TEXTMETRICA)*, DWORD, LPARAM) FONTENUMPROCA, OLDFONTENUMPROCA; -alias int function (const(LOGFONTW)*, const(TEXTMETRICW)*, DWORD, LPARAM) FONTENUMPROCW, OLDFONTENUMPROCW; -alias int function (LPSTR, LPARAM) ICMENUMPROCA; -alias int function (LPWSTR, LPARAM) ICMENUMPROCW; -alias void function (LPVOID, LPARAM) GOBJENUMPROC; -alias void function (int, int, LPARAM) LINEDDAPROC; -alias UINT function (HWND, HMODULE, LPDEVMODEA, LPSTR, LPSTR, LPDEVMODEA, LPSTR, UINT) LPFNDEVMODE; -alias DWORD function (LPSTR, LPSTR, UINT, LPSTR, LPDEVMODEA) LPFNDEVCAPS; - - -// --------- -// C Macros. -// FIXME: -//POINTS MAKEPOINTS(DWORD dwValue) #define MAKEPOINTS(l) (*((POINTS*)&(l))) - -DWORD MAKEROP4(DWORD fore, DWORD back) { - return ((back<<8) & 0xFF000000) | (fore); -} - -COLORREF CMYK(BYTE c, BYTE m, BYTE y, BYTE k) { - return cast(COLORREF)(k | (y << 8) | (m << 16) | (c << 24)); -} - -BYTE GetCValue(COLORREF cmyk) { - return cast(BYTE)(cmyk >> 24); -} - -BYTE GetMValue(COLORREF cmyk) { - return cast(BYTE)(cmyk >> 16); -} - -BYTE GetYValue(COLORREF cmyk) { - return cast(BYTE)(cmyk >> 8); -} - -BYTE GetKValue(COLORREF cmyk) { - return cast(BYTE)cmyk; -} - -COLORREF RGB(BYTE r, BYTE g, BYTE b) { - return cast(COLORREF)(r | (g << 8) | (b << 16)); -} - -BYTE GetRValue(COLORREF c) { - return cast(BYTE)c; -} - -BYTE GetGValue(COLORREF c) { - return cast(BYTE)(c >> 8); -} - -BYTE GetBValue(COLORREF c) { - return cast(BYTE)(c >> 16); -} - -COLORREF PALETTEINDEX(WORD i) { - return 0x01000000 | cast(COLORREF) i; -} - -COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b) { - return 0x02000000|RGB(r, g, b); -} - -extern(Windows) { - int AbortDoc(HDC); - BOOL AbortPath(HDC); - int AddFontResourceA(LPCSTR); - int AddFontResourceW(LPCWSTR); - BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); - BOOL AnimatePalette(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); - BOOL Arc(HDC, int, int, int, int, int, int, int, int); - BOOL ArcTo(HDC, int, int, int, int, int, int, int, int); - BOOL BeginPath(HDC); - BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); - BOOL CancelDC(HDC); - BOOL CheckColorsInGamut(HDC, PVOID, PVOID, DWORD); - BOOL Chord(HDC, int, int, int, int, int, int, int, int); - int ChoosePixelFormat(HDC, const(PIXELFORMATDESCRIPTOR)*); - HENHMETAFILE CloseEnhMetaFile(HDC); - BOOL CloseFigure(HDC); - HMETAFILE CloseMetaFile(HDC); - BOOL ColorMatchToTarget(HDC, HDC, DWORD); - BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD); - int CombineRgn(HRGN, HRGN, HRGN, int); - BOOL CombineTransform(LPXFORM, const(XFORM)*, const(XFORM)*); - HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); - HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); - HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR); - HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR); - HBITMAP CreateBitmap(int, int, UINT, UINT, PCVOID); - HBITMAP CreateBitmapIndirect(const(BITMAP)*); - HBRUSH CreateBrushIndirect(const(LOGBRUSH)*); - HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA); - HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW); - HBITMAP CreateCompatibleBitmap(HDC, int, int); - HDC CreateCompatibleDC(HDC); - HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); - HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); - HBITMAP CreateDIBitmap(HDC, const(BITMAPINFOHEADER)*, DWORD, PCVOID, const(BITMAPINFO)*, UINT); - HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT); - HBRUSH CreateDIBPatternBrushPt(PCVOID, UINT); - HBITMAP CreateDIBSection(HDC, const(BITMAPINFO)*, UINT, void**, HANDLE, DWORD); - HBITMAP CreateDiscardableBitmap(HDC, int, int); - HRGN CreateEllipticRgn(int, int, int, int); - HRGN CreateEllipticRgnIndirect(LPCRECT); - HDC CreateEnhMetaFileA(HDC, LPCSTR, LPCRECT, LPCSTR); - HDC CreateEnhMetaFileW(HDC, LPCWSTR, LPCRECT, LPCWSTR); - HFONT CreateFontA(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCSTR); - HFONT CreateFontW(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCWSTR); - HFONT CreateFontIndirectA(const(LOGFONTA)*); - HFONT CreateFontIndirectW(const(LOGFONTW)*); - HPALETTE CreateHalftonePalette(HDC); - HBRUSH CreateHatchBrush(int, COLORREF); - HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); - HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); - HDC CreateMetaFileA(LPCSTR); - HDC CreateMetaFileW(LPCWSTR); - HPALETTE CreatePalette(const(LOGPALETTE)*); - HBRUSH CreatePatternBrush(HBITMAP); - HPEN CreatePen(int, int, COLORREF); - HPEN CreatePenIndirect(const(LOGPEN)*); - HRGN CreatePolygonRgn(const(POINT)*, int, int); - HRGN CreatePolyPolygonRgn(const(POINT)*, const(INT)*, int, int); - HRGN CreateRectRgn(int, int, int, int); - HRGN CreateRectRgnIndirect(LPCRECT); - HRGN CreateRoundRectRgn(int, int, int, int, int, int); - BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); - BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); - HBRUSH CreateSolidBrush(COLORREF); - BOOL DeleteColorSpace(HCOLORSPACE); - BOOL DeleteDC(HDC); - BOOL DeleteEnhMetaFile(HENHMETAFILE); - BOOL DeleteMetaFile(HMETAFILE); - BOOL DeleteObject(HGDIOBJ); - int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); - DWORD DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, LPSTR, const(DEVMODEA)*); - DWORD DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, LPWSTR, const(DEVMODEW)*); - BOOL DPtoLP(HDC, LPPOINT, int); - int DrawEscape(HDC, int, int, LPCSTR); - BOOL Ellipse(HDC, int, int, int, int); - int EndDoc(HDC); - int EndPage(HDC); - BOOL EndPath(HDC); - BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, PVOID, LPCRECT); - int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); - int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); - int EnumFontFamiliesExA(HDC, PLOGFONTA, FONTENUMPROCA, LPARAM, DWORD); - int EnumFontFamiliesExW(HDC, PLOGFONTW, FONTENUMPROCW, LPARAM, DWORD); - int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); - int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); - int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM); - int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM); - BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); - int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); - BOOL EqualRgn(HRGN, HRGN); - int Escape(HDC, int, int, LPCSTR, PVOID); - int ExcludeClipRect(HDC, int, int, int, int); - int ExcludeUpdateRgn(HDC, HWND); - HPEN ExtCreatePen(DWORD, DWORD, const(LOGBRUSH)*, DWORD, const(DWORD)*); - HRGN ExtCreateRegion(const(XFORM)*, DWORD, const(RGNDATA)*); - int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); - BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT); - int ExtSelectClipRgn(HDC, HRGN, int); - BOOL ExtTextOutA(HDC, int, int, UINT, LPCRECT, LPCSTR, UINT, const(INT)*); - BOOL ExtTextOutW(HDC, int, int, UINT, LPCRECT, LPCWSTR, UINT, const(INT)*); - BOOL FillPath(HDC); - int FillRect(HDC, LPCRECT, HBRUSH); - int FillRgn(HDC, HRGN, HBRUSH); - BOOL FixBrushOrgEx(HDC, int, int, LPPOINT); - BOOL FlattenPath(HDC); - BOOL FloodFill(HDC, int, int, COLORREF); - BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); - BOOL GdiComment(HDC, UINT, const(BYTE)*); - BOOL GdiFlush(); - DWORD GdiGetBatchLimit(); - DWORD GdiSetBatchLimit(DWORD); - int GetArcDirection(HDC); - BOOL GetAspectRatioFilterEx(HDC, LPSIZE); - LONG GetBitmapBits(HBITMAP, LONG, PVOID); - BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE); - COLORREF GetBkColor(HDC); - int GetBkMode(HDC); - UINT GetBoundsRect(HDC, LPRECT, UINT); - BOOL GetBrushOrgEx(HDC, LPPOINT); - BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC); - BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC); - BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); - BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); - DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD); - DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD); - BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT); - BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT); - BOOL GetCharWidthA(HDC, UINT, UINT, LPINT); - BOOL GetCharWidthW(HDC, UINT, UINT, LPINT); - BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); - BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); - int GetClipBox(HDC, LPRECT); - int GetClipRgn(HDC, HRGN); - BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT); - HANDLE GetColorSpace(HDC); - HGDIOBJ GetCurrentObject(HDC, UINT); - BOOL GetCurrentPositionEx(HDC, LPPOINT); - HCURSOR GetCursor(); - BOOL GetDCOrgEx(HDC, LPPOINT); - static if (_WIN32_WINNT >= 0x500) - { - DWORD GetDCPenColor(HGDIOBJ); - COLORREF GetDCBrushColor(HGDIOBJ); - } - int GetDeviceCaps(HDC, int); - BOOL GetDeviceGammaRamp(HDC, PVOID); - UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD*); - int GetDIBits(HDC, HBITMAP, UINT, UINT, PVOID, LPBITMAPINFO, UINT); - HENHMETAFILE GetEnhMetaFileA(LPCSTR); - HENHMETAFILE GetEnhMetaFileW(LPCWSTR); - UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); - UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR); - UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR); - UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER); - UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY); - UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, DWORD, const(PIXELFORMATDESCRIPTOR)*); - DWORD GetFontData(HDC, DWORD, DWORD, PVOID, DWORD); - DWORD GetFontLanguageInfo(HDC); - DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); - DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); - int GetGraphicsMode(HDC); - BOOL GetICMProfileA(HDC, DWORD, LPSTR); - BOOL GetICMProfileW(HDC, DWORD, LPWSTR); - DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); - DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); - BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD); - BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD); - int GetMapMode(HDC); - HMETAFILE GetMetaFileA(LPCSTR); - HMETAFILE GetMetaFileW(LPCWSTR); - UINT GetMetaFileBitsEx(HMETAFILE, UINT, PVOID); - int GetMetaRgn(HDC, HRGN); - BOOL GetMiterLimit(HDC, PFLOAT); - COLORREF GetNearestColor(HDC, COLORREF); - UINT GetNearestPaletteIndex(HPALETTE, COLORREF); - int GetObjectA(HGDIOBJ, int, PVOID); - int GetObjectW(HGDIOBJ, int, PVOID); - DWORD GetObjectType(HGDIOBJ); - UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); - UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); - UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); - int GetPath(HDC, LPPOINT, PBYTE, int); - COLORREF GetPixel(HDC, int, int); - int GetPixelFormat(HDC); - int GetPolyFillMode(HDC); - BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); - int GetRandomRgn (HDC, HRGN, INT); - DWORD GetRegionData(HRGN, DWORD, LPRGNDATA); - int GetRgnBox(HRGN, LPRECT); - int GetROP2(HDC); - HGDIOBJ GetStockObject(int); - int GetStretchBltMode(HDC); - UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); - UINT GetSystemPaletteUse(HDC); - UINT GetTextAlign(HDC); - int GetTextCharacterExtra(HDC); - int GetTextCharset(HDC); - int GetTextCharsetInfo(HDC, LPFONTSIGNATURE, DWORD); - COLORREF GetTextColor(HDC); - BOOL GetTextExtentExPointA(HDC, LPCSTR, int, int, LPINT, LPINT, LPSIZE); - BOOL GetTextExtentExPointW(HDC, LPCWSTR, int, int, LPINT, LPINT, LPSIZE); - BOOL GetTextExtentPointA(HDC, LPCSTR, int, LPSIZE); - BOOL GetTextExtentPointW(HDC, LPCWSTR, int, LPSIZE); - BOOL GetTextExtentPoint32A(HDC, LPCSTR, int, LPSIZE); - BOOL GetTextExtentPoint32W(HDC, LPCWSTR, int, LPSIZE); - int GetTextFaceA(HDC, int, LPSTR); - int GetTextFaceW(HDC, int, LPWSTR); - BOOL GetTextMetricsA(HDC, LPTEXTMETRICA); - BOOL GetTextMetricsW(HDC, LPTEXTMETRICW); - BOOL GetViewportExtEx(HDC, LPSIZE); - BOOL GetViewportOrgEx(HDC, LPPOINT); - BOOL GetWindowExtEx(HDC, LPSIZE); - BOOL GetWindowOrgEx(HDC, LPPOINT); - UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); - BOOL GetWorldTransform(HDC, LPXFORM); - int IntersectClipRect(HDC, int, int, int, int); - BOOL InvertRgn(HDC, HRGN); - BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); - BOOL LineTo(HDC, int, int); - BOOL LPtoDP(HDC, LPPOINT, int); - BOOL MaskBlt(HDC, int, int, int, int, HDC, int, int, HBITMAP, int, int, DWORD); - BOOL ModifyWorldTransform(HDC, const(XFORM)*, DWORD); - BOOL MoveToEx(HDC, int, int, LPPOINT); - int OffsetClipRgn(HDC, int, int); - int OffsetRgn(HRGN, int, int); - BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT); - BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT); - BOOL PaintRgn(HDC, HRGN); - BOOL PatBlt(HDC, int, int, int, int, DWORD); - HRGN PathToRegion(HDC); - BOOL Pie(HDC, int, int, int, int, int, int, int, int); - BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, LPCRECT); - BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, const(ENHMETARECORD)*, UINT); - BOOL PlayMetaFile(HDC, HMETAFILE); - BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); - BOOL PlgBlt(HDC, const(POINT)*, HDC, int, int, int, int, HBITMAP, int, int); - BOOL PolyBezier(HDC, const(POINT)*, DWORD); - BOOL PolyBezierTo(HDC, const(POINT)*, DWORD); - BOOL PolyDraw(HDC, const(POINT)*, const(BYTE)*, int); - BOOL Polygon(HDC, const(POINT)*, int); - BOOL Polyline(HDC, const(POINT)*, int); - BOOL PolylineTo(HDC, const(POINT)*, DWORD); - BOOL PolyPolygon(HDC, const(POINT)*, const(INT)*, int); - BOOL PolyPolyline(HDC, const(POINT)*, const(DWORD)*, DWORD); - BOOL PolyTextOutA(HDC, const(POLYTEXTA)*, int); - BOOL PolyTextOutW(HDC, const(POLYTEXTW)*, int); - BOOL PtInRegion(HRGN, int, int); - BOOL PtVisible(HDC, int, int); - UINT RealizePalette(HDC); - BOOL Rectangle(HDC, int, int, int, int); - BOOL RectInRegion(HRGN, LPCRECT); - BOOL RectVisible(HDC, LPCRECT); - BOOL RemoveFontResourceA(LPCSTR); - BOOL RemoveFontResourceW(LPCWSTR); - - HDC ResetDCA(HDC, const(DEVMODEA)*); - HDC ResetDCW(HDC, const(DEVMODEW)*); - BOOL ResizePalette(HPALETTE, UINT); - BOOL RestoreDC(HDC, int); - BOOL RoundRect(HDC, int, int, int, int, int, int); - int SaveDC(HDC); - BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); - BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); - BOOL SelectClipPath(HDC, int); - int SelectClipRgn(HDC, HRGN); - HGDIOBJ SelectObject(HDC, HGDIOBJ); - HPALETTE SelectPalette(HDC, HPALETTE, BOOL); - int SetAbortProc(HDC, ABORTPROC); - int SetArcDirection(HDC, int); - LONG SetBitmapBits(HBITMAP, DWORD, PCVOID); - BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); - COLORREF SetBkColor(HDC, COLORREF); - int SetBkMode(HDC, int); - UINT SetBoundsRect(HDC, LPCRECT, UINT); - BOOL SetBrushOrgEx(HDC, int, int, LPPOINT); - BOOL SetColorAdjustment(HDC, const(COLORADJUSTMENT)*); - BOOL SetColorSpace(HDC, HCOLORSPACE); - - BOOL SetDeviceGammaRamp(HDC, PVOID); - UINT SetDIBColorTable(HDC, UINT, UINT, const(RGBQUAD)*); - int SetDIBits(HDC, HBITMAP, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); - int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); - HENHMETAFILE SetEnhMetaFileBits(UINT, const(BYTE)*); - int SetGraphicsMode(HDC, int); - int SetICMMode(HDC, int); - BOOL SetICMProfileA(HDC, LPSTR); - BOOL SetICMProfileW(HDC, LPWSTR); - int SetMapMode(HDC, int); - - static if (_WIN32_WINNT >= 0x500) { - DWORD SetLayout(HDC hdc, DWORD l); - DWORD GetLayout(HDC hdc); - } - - DWORD SetMapperFlags(HDC, DWORD); - HMETAFILE SetMetaFileBitsEx(UINT, const(BYTE)*); - int SetMetaRgn(HDC); - BOOL SetMiterLimit(HDC, FLOAT, PFLOAT); - UINT SetPaletteEntries(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); - COLORREF SetPixel(HDC, int, int, COLORREF); - BOOL SetPixelFormat(HDC, int, const(PIXELFORMATDESCRIPTOR)*); - BOOL SetPixelV(HDC, int, int, COLORREF); - int SetPolyFillMode(HDC, int); - BOOL SetRectRgn(HRGN, int, int, int, int); - int SetROP2(HDC, int); - int SetStretchBltMode(HDC, int); - UINT SetSystemPaletteUse(HDC, UINT); - UINT SetTextAlign(HDC, UINT); - int SetTextCharacterExtra(HDC, int); - COLORREF SetTextColor(HDC, COLORREF); - BOOL SetTextJustification(HDC, int, int); - BOOL SetViewportExtEx(HDC, int, int, LPSIZE); - BOOL SetViewportOrgEx(HDC, int, int, LPPOINT); - BOOL SetWindowExtEx(HDC, int, int, LPSIZE); - BOOL SetWindowOrgEx(HDC, int, int, LPPOINT); - HENHMETAFILE SetWinMetaFileBits(UINT, const(BYTE)*, HDC, const(METAFILEPICT)*); - BOOL SetWorldTransform(HDC, const(XFORM)*); - int StartDocA(HDC, const(DOCINFOA)*); - int StartDocW(HDC, const(DOCINFOW)*); - int StartPage(HDC); - BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); - int StretchDIBits(HDC, int, int, int, int, int, int, int, int, const(VOID)* , const(BITMAPINFO)* , UINT, DWORD); - BOOL StrokeAndFillPath(HDC); - BOOL StrokePath(HDC); - BOOL SwapBuffers(HDC); - BOOL TextOutA(HDC, int, int, LPCSTR, int); - BOOL TextOutW(HDC, int, int, LPCWSTR, int); - BOOL TranslateCharsetInfo(PDWORD, LPCHARSETINFO, DWORD); - BOOL UnrealizeObject(HGDIOBJ); - BOOL UpdateColors(HDC); - BOOL UpdateICMRegKeyA(DWORD, DWORD, LPSTR, UINT); - BOOL UpdateICMRegKeyW(DWORD, DWORD, LPWSTR, UINT); - BOOL WidenPath(HDC); - BOOL wglCopyContext(HGLRC, HGLRC, UINT); - HGLRC wglCreateContext(HDC); - HGLRC wglCreateLayerContext(HDC, int); - BOOL wglDeleteContext(HGLRC); - BOOL wglDescribeLayerPlane(HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR); - HGLRC wglGetCurrentContext(); - HDC wglGetCurrentDC(); - int wglGetLayerPaletteEntries(HDC, int, int, int, COLORREF*); - PROC wglGetProcAddress(LPCSTR); - BOOL wglMakeCurrent(HDC, HGLRC); - BOOL wglRealizeLayerPalette(HDC, int, BOOL); - int wglSetLayerPaletteEntries(HDC, int, int, int, const(COLORREF)*); - BOOL wglShareLists(HGLRC, HGLRC); - BOOL wglSwapLayerBuffers(HDC, UINT); - BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD); - BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD); - BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); - BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); - - static if (_WIN32_WINNT >= 0x500) { - alias WGLSWAP* PWGLSWAP; - struct WGLSWAP { - HDC hdc; - UINT uiFlags; - } - const WGL_SWAPMULTIPLE_MAX = 16; - DWORD wglSwapMultipleBuffers(UINT, WGLSWAP*); -} - -static if (_WIN32_WINNT >= 0x500) { - BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); - BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG); - BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT); - } - - static if (_WIN32_WINNT >= 0x500) { - COLORREF SetDCBrushColor(HDC, COLORREF); - COLORREF SetDCPenColor(HDC, COLORREF); - HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD*); - int AddFontResourceExA(LPCSTR, DWORD, PVOID); - int AddFontResourceExW(LPCWSTR, DWORD, PVOID); - BOOL RemoveFontMemResourceEx(HANDLE); - BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID); - BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); - DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET); - DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD); - DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD); - BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE); - BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE); - BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT); - BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC); - } -} // extern (Windows) - -version(Unicode) { - alias WCHAR BCHAR; - alias DOCINFOW DOCINFO; - alias LOGFONTW LOGFONT; - - alias TEXTMETRICW TEXTMETRIC; - alias NPTEXTMETRICW NPTEXTMETRIC; - alias ICMENUMPROCW ICMENUMPROC; - alias FONTENUMPROCW FONTENUMPROC; - alias DEVMODEW DEVMODE; - - alias EXTLOGFONTW EXTLOGFONT; - alias GCP_RESULTSW GCP_RESULTS; - alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC; - alias POLYTEXTW POLYTEXT; - alias LOGCOLORSPACEW LOGCOLORSPACE; - alias NEWTEXTMETRICW NEWTEXTMETRIC; - alias NEWTEXTMETRICEXW NEWTEXTMETRICEX; - alias ENUMLOGFONTW ENUMLOGFONT; - alias ENUMLOGFONTEXW ENUMLOGFONTEX; - alias DISPLAY_DEVICEW DISPLAY_DEVICE; - alias AddFontResourceW AddFontResource; - - alias CopyEnhMetaFileW CopyEnhMetaFile; - alias CopyMetaFileW CopyMetaFile; - alias CreateColorSpaceW CreateColorSpace; - alias CreateDCW CreateDC; - alias CreateEnhMetaFileW CreateEnhMetaFile; - alias CreateFontW CreateFont; - alias CreateFontIndirectW CreateFontIndirect; - alias CreateICW CreateIC; - alias CreateMetaFileW CreateMetaFile; - alias CreateScalableFontResourceW CreateScalableFontResource; - alias DeviceCapabilitiesW DeviceCapabilities; - alias EnumFontFamiliesW EnumFontFamilies; - alias EnumFontFamiliesExW EnumFontFamiliesEx; - alias EnumFontsW EnumFonts; - alias EnumICMProfilesW EnumICMProfiles; - alias ExtTextOutW ExtTextOut; - alias GetCharABCWidthsFloatW GetCharABCWidthsFloat; - alias GetCharABCWidthsW GetCharABCWidths; - alias GetCharacterPlacementW GetCharacterPlacement; - alias GetCharWidth32W GetCharWidth32; - alias GetCharWidthFloatW GetCharWidthFloat; - alias GetCharWidthW GetCharWidth; - alias GetEnhMetaFileW GetEnhMetaFile; - alias GetEnhMetaFileDescriptionW GetEnhMetaFileDescription; - alias GetGlyphOutlineW GetGlyphOutline; - alias GetICMProfileW GetICMProfile; - alias GetKerningPairsW GetKerningPairs; - alias GetLogColorSpaceW GetLogColorSpace; - alias GetMetaFileW GetMetaFile; - alias GetObjectW GetObject; - alias GetOutlineTextMetricsW GetOutlineTextMetrics; - alias GetTextExtentPointW GetTextExtentPoint; - alias GetTextExtentExPointW GetTextExtentExPoint; - alias GetTextExtentPoint32W GetTextExtentPoint32; - alias GetTextFaceW GetTextFace; - alias GetTextMetricsW GetTextMetrics; - alias PolyTextOutW PolyTextOut; - alias RemoveFontResourceW RemoveFontResource; - - alias ResetDCW ResetDC; - alias SetICMProfileW SetICMProfile; - alias StartDocW StartDoc; - alias TextOutW TextOut; - alias UpdateICMRegKeyW UpdateICMRegKey; - alias wglUseFontBitmapsW wglUseFontBitmaps; - alias wglUseFontOutlinesW wglUseFontOutlines; - static if (_WIN32_WINNT >= 0x500) { - alias ENUMLOGFONTEXDVW ENUMLOGFONTEXDV; - alias PENUMLOGFONTEXDVW PENUMLOGFONTEXDV; - alias LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV; - alias AddFontResourceExW AddFontResourceEx; - alias RemoveFontResourceExW RemoveFontResourceEx; - alias GetGlyphIndicesW GetGlyphIndices; - } -} else { /* non-unicode build */ - alias BYTE BCHAR; - alias DOCINFOA DOCINFO; - alias LOGFONTA LOGFONT; - alias TEXTMETRICA TEXTMETRIC; - alias NPTEXTMETRICA NPTEXTMETRIC; - alias ICMENUMPROCA ICMENUMPROC; - alias FONTENUMPROCA FONTENUMPROC; - alias DEVMODEA DEVMODE; - alias EXTLOGFONTA EXTLOGFONT; - alias GCP_RESULTSA GCP_RESULTS; - alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC; - alias POLYTEXTA POLYTEXT; - alias LOGCOLORSPACEA LOGCOLORSPACE; - alias NEWTEXTMETRICA NEWTEXTMETRIC; - alias NEWTEXTMETRICEXA NEWTEXTMETRICEX; - alias ENUMLOGFONTA ENUMLOGFONT; - alias ENUMLOGFONTEXA ENUMLOGFONTEX; - alias DISPLAY_DEVICEA DISPLAY_DEVICE; - - alias AddFontResourceA AddFontResource; - alias CopyEnhMetaFileA CopyEnhMetaFile; - alias CopyMetaFileA CopyMetaFile; - alias CreateColorSpaceA CreateColorSpace; - alias CreateDCA CreateDC; - alias CreateEnhMetaFileA CreateEnhMetaFile; - alias CreateFontA CreateFont; - alias CreateFontIndirectA CreateFontIndirect; - alias CreateICA CreateIC; - alias CreateMetaFileA CreateMetaFile; - alias CreateScalableFontResourceA CreateScalableFontResource; - alias DeviceCapabilitiesA DeviceCapabilities; - alias EnumFontFamiliesA EnumFontFamilies; - alias EnumFontFamiliesExA EnumFontFamiliesEx; - alias EnumFontsA EnumFonts; - alias EnumICMProfilesA EnumICMProfiles; - alias ExtTextOutA ExtTextOut; - alias GetCharWidthFloatA GetCharWidthFloat; - alias GetCharWidthA GetCharWidth; - alias GetCharacterPlacementA GetCharacterPlacement; - alias GetCharABCWidthsA GetCharABCWidths; - alias GetCharABCWidthsFloatA GetCharABCWidthsFloat; - alias GetCharWidth32A GetCharWidth32; - alias GetEnhMetaFileA GetEnhMetaFile; - alias GetEnhMetaFileDescriptionA GetEnhMetaFileDescription; - alias GetGlyphOutlineA GetGlyphOutline; - alias GetICMProfileA GetICMProfile; - alias GetKerningPairsA GetKerningPairs; - alias GetLogColorSpaceA GetLogColorSpace; - alias GetMetaFileA GetMetaFile; - alias GetObjectA GetObject; - alias GetOutlineTextMetricsA GetOutlineTextMetrics; - alias GetTextExtentPointA GetTextExtentPoint; - alias GetTextExtentExPointA GetTextExtentExPoint; - alias GetTextExtentPoint32A GetTextExtentPoint32; - alias GetTextFaceA GetTextFace; - alias GetTextMetricsA GetTextMetrics; - alias PolyTextOutA PolyTextOut; - alias RemoveFontResourceA RemoveFontResource; - alias ResetDCA ResetDC; - alias SetICMProfileA SetICMProfile; - alias StartDocA StartDoc; - alias TextOutA TextOut; - alias UpdateICMRegKeyA UpdateICMRegKey; - alias wglUseFontBitmapsA wglUseFontBitmaps; - alias wglUseFontOutlinesA wglUseFontOutlines; - static if (_WIN32_WINNT >= 0x500) { - alias ENUMLOGFONTEXDVA ENUMLOGFONTEXDV; - alias PENUMLOGFONTEXDVA PENUMLOGFONTEXDV; - alias LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV; - alias AddFontResourceExA AddFontResourceEx; - alias RemoveFontResourceExA RemoveFontResourceEx; - alias GetGlyphIndicesA GetGlyphIndices; - } -} - -// Common to both ASCII & UNICODE -alias DOCINFO* LPDOCINFO; -alias LOGFONT* PLOGFONT, NPLOGFONT, LPLOGFONT; -alias TEXTMETRIC* PTEXTMETRIC, LPTEXTMETRIC; -alias DEVMODE* PDEVMODE, NPDEVMODE, LPDEVMODE; -alias EXTLOGFONT* PEXTLOGFONT, NPEXTLOGFONT, LPEXTLOGFONT; -alias GCP_RESULTS* LPGCP_RESULTS; -alias OUTLINETEXTMETRIC* POUTLINETEXTMETRIC, NPOUTLINETEXTMETRIC, LPOUTLINETEXTMETRIC; -alias POLYTEXT* PPOLYTEXT, NPPOLYTEXT, LPPOLYTEXT; -alias LOGCOLORSPACE* LPLOGCOLORSPACE; -alias NEWTEXTMETRIC* PNEWTEXTMETRIC, NPNEWTEXTMETRIC, LPNEWTEXTMETRIC; -alias ENUMLOGFONT* LPENUMLOGFONT; -alias ENUMLOGFONTEX* LPENUMLOGFONTEX; -alias DISPLAY_DEVICE* PDISPLAY_DEVICE, LPDISPLAY_DEVICE; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wingdi.d) + */ +module core.sys.windows.wingdi; +pragma(lib, "gdi32"); + +// FIXME: clean up Windows version support + +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winver; + +// BITMAPINFOHEADER.biCompression +enum : DWORD { + BI_RGB = 0, + BI_RLE8, + BI_RLE4, + BI_BITFIELDS, + BI_JPEG, + BI_PNG +} + +// --- +// COLORADJUSTMENT -- only for NT 3.1+, Win2000+ +const WORD + CA_NEGATIVE = 1, + CA_LOG_FILTER = 2; + +// COLORADJUSTMENT +enum : WORD { + ILLUMINANT_DEVICE_DEFAULT = 0, + ILLUMINANT_A, + ILLUMINANT_B, + ILLUMINANT_C, + ILLUMINANT_D50, + ILLUMINANT_D55, + ILLUMINANT_D65, + ILLUMINANT_D75, + ILLUMINANT_F2, + ILLUMINANT_MAX_INDEX = ILLUMINANT_F2, + ILLUMINANT_TUNGSTEN = ILLUMINANT_A, + ILLUMINANT_DAYLIGHT = ILLUMINANT_C, + ILLUMINANT_FLUORESCENT = ILLUMINANT_F2, + ILLUMINANT_NTSC = ILLUMINANT_C +} + +enum { + RGB_GAMMA_MIN = 2500, + RGB_GAMMA_MAX = 65000, + REFERENCE_WHITE_MIN = 6000, + REFERENCE_WHITE_MAX = 10000, + REFERENCE_BLACK_MIN = 0, + REFERENCE_BLACK_MAX = 4000, + COLOR_ADJ_MIN = -100, + COLOR_ADJ_MAX = 100, +} +//--- + +/* FIXME: move to core.sys.windows.winuser ? */ +// DrawIconEx() +enum : UINT { + DI_MASK = 1, + DI_IMAGE = 2, + DI_NORMAL = 3, + DI_COMPAT = 4, + DI_DEFAULTSIZE = 8 +} + +// DOCINFO +enum : DWORD { + DI_APPBANDING = 1, + DI_ROPS_READ_DESTINATION = 2, +} + +// ENHMETAHEADER +enum : DWORD { + EMR_HEADER = 1, + EMR_POLYBEZIER, + EMR_POLYGON, + EMR_POLYLINE, + EMR_POLYBEZIERTO, + EMR_POLYLINETO, + EMR_POLYPOLYLINE, + EMR_POLYPOLYGON, + EMR_SETWINDOWEXTEX, + EMR_SETWINDOWORGEX, + EMR_SETVIEWPORTEXTEX, + EMR_SETVIEWPORTORGEX, + EMR_SETBRUSHORGEX, + EMR_EOF, + EMR_SETPIXELV, + EMR_SETMAPPERFLAGS, + EMR_SETMAPMODE, + EMR_SETBKMODE, + EMR_SETPOLYFILLMODE, + EMR_SETROP2, + EMR_SETSTRETCHBLTMODE, + EMR_SETTEXTALIGN, + EMR_SETCOLORADJUSTMENT, + EMR_SETTEXTCOLOR, + EMR_SETBKCOLOR, + EMR_OFFSETCLIPRGN, + EMR_MOVETOEX, + EMR_SETMETARGN, + EMR_EXCLUDECLIPRECT, + EMR_INTERSECTCLIPRECT, + EMR_SCALEVIEWPORTEXTEX, + EMR_SCALEWINDOWEXTEX, + EMR_SAVEDC, + EMR_RESTOREDC, + EMR_SETWORLDTRANSFORM, + EMR_MODIFYWORLDTRANSFORM, + EMR_SELECTOBJECT, + EMR_CREATEPEN, + EMR_CREATEBRUSHINDIRECT, + EMR_DELETEOBJECT, + EMR_ANGLEARC, + EMR_ELLIPSE, + EMR_RECTANGLE, + EMR_ROUNDRECT, + EMR_ARC, + EMR_CHORD, + EMR_PIE, + EMR_SELECTPALETTE, + EMR_CREATEPALETTE, + EMR_SETPALETTEENTRIES, + EMR_RESIZEPALETTE, + EMR_REALIZEPALETTE, + EMR_EXTFLOODFILL, + EMR_LINETO, + EMR_ARCTO, + EMR_POLYDRAW, + EMR_SETARCDIRECTION, + EMR_SETMITERLIMIT, + EMR_BEGINPATH, + EMR_ENDPATH, + EMR_CLOSEFIGURE, + EMR_FILLPATH, + EMR_STROKEANDFILLPATH, + EMR_STROKEPATH, + EMR_FLATTENPATH, + EMR_WIDENPATH, + EMR_SELECTCLIPPATH, + EMR_ABORTPATH, // 68 + // reserved 69 + EMR_GDICOMMENT = 70, + EMR_FILLRGN, + EMR_FRAMERGN, + EMR_INVERTRGN, + EMR_PAINTRGN, + EMR_EXTSELECTCLIPRGN, + EMR_BITBLT, + EMR_STRETCHBLT, + EMR_MASKBLT, + EMR_PLGBLT, + EMR_SETDIBITSTODEVICE, + EMR_STRETCHDIBITS, + EMR_EXTCREATEFONTINDIRECTW, + EMR_EXTTEXTOUTA, + EMR_EXTTEXTOUTW, + EMR_POLYBEZIER16, + EMR_POLYGON16, + EMR_POLYLINE16, + EMR_POLYBEZIERTO16, + EMR_POLYLINETO16, + EMR_POLYPOLYLINE16, + EMR_POLYPOLYGON16, + EMR_POLYDRAW16, + EMR_CREATEMONOBRUSH, + EMR_CREATEDIBPATTERNBRUSHPT, + EMR_EXTCREATEPEN, + EMR_POLYTEXTOUTA, + EMR_POLYTEXTOUTW, // 97 + EMR_SETICMMODE, + EMR_CREATECOLORSPACE, + EMR_SETCOLORSPACE, + EMR_DELETECOLORSPACE, + EMR_GLSRECORD, + EMR_GLSBOUNDEDRECORD, + EMR_PIXELFORMAT, // = 104 + // reserved 105 - 110 + EMR_COLORCORRECTPALETTE = 111, + EMR_SETICMPROFILEA, + EMR_SETICMPROFILEW, + EMR_ALPHABLEND, + EMR_SETLAYOUT, + EMR_TRANSPARENTBLT, // 116 + // reserved 117 + EMR_GRADIENTFILL = 118, + // reserved 119, 120 + EMR_COLORMATCHTOTARGETW = 121, + EMR_CREATECOLORSPACEW // 122 +} + +const EMR_MIN = EMR_HEADER; + +static if (_WIN32_WINNT >= 0x500) { + const EMR_MAX = EMR_CREATECOLORSPACEW; +} else { + const EMR_MAX = EMR_PIXELFORMAT; +} + +// ENHMETAHEADER.dSignature, ENHMETAHEADER3.dSignature, +// EMRFORMAT.dSignature +enum : DWORD { + ENHMETA_SIGNATURE = 1179469088, + EPS_SIGNATURE = 0x46535045 +} + +static if (_WIN32_WINNT >= 0x500) { + // AddFontResourceEx() + enum : DWORD { + FR_PRIVATE = 0x10, + FR_NOT_ENUM = 0x20 + } +} + +enum { + META_SAVEDC = 0x1E, + META_REALIZEPALETTE = 0x35, + META_SETPALENTRIES = 0x37, + META_CREATEPALETTE = 0xf7, + META_SETBKMODE = 0x102, + META_SETMAPMODE = 0x103, + META_SETROP2 = 0x104, + META_SETRELABS = 0x105, + META_SETPOLYFILLMODE = 0x106, + META_SETSTRETCHBLTMODE = 0x107, + META_SETTEXTCHAREXTRA = 0x108, + META_RESTOREDC = 0x127, + META_INVERTREGION = 0x12A, + META_PAINTREGION = 0x12B, + META_SELECTCLIPREGION = 0x12C, + META_SELECTOBJECT = 0x12D, + META_SETTEXTALIGN = 0x12E, + META_RESIZEPALETTE = 0x139, + META_DIBCREATEPATTERNBRUSH = 0x142, + META_SETLAYOUT = 0x149, + META_DELETEOBJECT = 0x1F0, + META_CREATEPATTERNBRUSH = 0x1F9, + META_SETBKCOLOR = 0x201, + META_SETTEXTCOLOR = 0x209, + META_SETTEXTJUSTIFICATION = 0x20A, + META_SETWINDOWORG = 0x20B, + META_SETWINDOWEXT = 0x20C, + META_SETVIEWPORTORG = 0x20D, + META_SETVIEWPORTEXT = 0x20E, + META_OFFSETWINDOWORG = 0x20F, + META_OFFSETVIEWPORTORG = 0x211, + META_LINETO = 0x213, + META_MOVETO = 0x214, + META_OFFSETCLIPRGN = 0x220, + META_FILLREGION = 0x228, + META_SETMAPPERFLAGS = 0x231, + META_SELECTPALETTE = 0x234, + META_CREATEPENINDIRECT = 0x2FA, + META_CREATEFONTINDIRECT = 0x2FB, + META_CREATEBRUSHINDIRECT = 0x2FC, + META_POLYGON = 0x324, + META_POLYLINE = 0x325, + META_SCALEWINDOWEXT = 0x410, + META_SCALEVIEWPORTEXT = 0x412, + META_EXCLUDECLIPRECT = 0x415, + META_INTERSECTCLIPRECT = 0x416, + META_ELLIPSE = 0x418, + META_FLOODFILL = 0x419, + META_RECTANGLE = 0x41B, + META_SETPIXEL = 0x41F, + META_FRAMEREGION = 0x429, + META_ANIMATEPALETTE = 0x436, + META_TEXTOUT = 0x521, + META_POLYPOLYGON = 0x538, + META_EXTFLOODFILL = 0x548, + META_ROUNDRECT = 0x61C, + META_PATBLT = 0x61D, + META_ESCAPE = 0x626, + META_CREATEREGION = 0x6FF, + META_ARC = 0x817, + META_PIE = 0x81A, + META_CHORD = 0x830, + META_BITBLT = 0x922, + META_DIBBITBLT = 0x940, + META_EXTTEXTOUT = 0xA32, + META_STRETCHBLT = 0xB23, + META_DIBSTRETCHBLT = 0xB41, + META_SETDIBTODEV = 0xD33, + META_STRETCHDIB = 0xF43 +} + +// EMRPOLYDRAW +enum : BYTE { + PT_CLOSEFIGURE = 1, + PT_LINETO = 2, + PT_BEZIERTO = 4, + PT_MOVETO = 6 +} + +// ---- +// PIXELFORMATDESCRIPTOR.iPixelType +enum : BYTE { + PFD_TYPE_RGBA = 0, + PFD_TYPE_COLORINDEX = 1 +} + +deprecated { +// PIXELFORMATDESCRIPTOR. +const byte + PFD_MAIN_PLANE = 0, + PFD_OVERLAY_PLANE = 1, + PFD_UNDERLAY_PLANE = -1; +} +// PIXELFORMATDESCRIPTOR.dwFlags +const DWORD + PFD_DOUBLEBUFFER = 0x00000001, + PFD_STEREO = 0x00000002, + PFD_DRAW_TO_WINDOW = 0x00000004, + PFD_DRAW_TO_BITMAP = 0x00000008, + PFD_SUPPORT_GDI = 0x00000010, + PFD_SUPPORT_OPENGL = 0x00000020, + PFD_GENERIC_FORMAT = 0x00000040, + PFD_NEED_PALETTE = 0x00000080, + PFD_NEED_SYSTEM_PALETTE = 0x00000100, + PFD_SWAP_EXCHANGE = 0x00000200, + PFD_SWAP_COPY = 0x00000400, + PFD_SWAP_LAYER_BUFFERS = 0x00000800, + PFD_GENERIC_ACCELERATED = 0x00001000, + PFD_SUPPORT_DIRECTDRAW = 0x00002000, + /* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ + PFD_DEPTH_DONTCARE = 0x20000000, + PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, + PFD_STEREO_DONTCARE = 0x80000000; + +// ---- + +const DWORD + BLACKNESS = 0x000042, + NOTSRCERASE = 0x1100A6, + NOTSRCCOPY = 0x330008, + SRCERASE = 0x440328, + DSTINVERT = 0x550009, + PATINVERT = 0x5A0049, + SRCINVERT = 0x660046, + SRCAND = 0x8800C6, + MERGEPAINT = 0xBB0226, + MERGECOPY = 0xC000CA, + SRCCOPY = 0xCC0020, + SRCPAINT = 0xEE0086, + PATCOPY = 0xF00021, + PATPAINT = 0xFB0A09, + WHITENESS = 0xFF0062; +static if (_WIN32_WINNT >= 0x500) { + const DWORD + NOMIRRORBITMAP = 0x80000000, + CAPTUREBLT = 0x40000000; +} + +// GetROP2(), SetROP2() +enum : int { + R2_BLACK = 1, + R2_NOTMERGEPEN = 2, + R2_MASKNOTPEN = 3, + R2_NOTCOPYPEN = 4, + R2_MASKPENNOT = 5, + R2_NOT = 6, + R2_XORPEN = 7, + R2_NOTMASKPEN = 8, + R2_MASKPEN = 9, + R2_NOTXORPEN = 10, + R2_NOP = 11, + R2_MERGENOTPEN = 12, + R2_COPYPEN = 13, + R2_MERGEPENNOT = 14, + R2_MERGEPEN = 15, + R2_WHITE = 16 +} + +const R2_LAST = R2_WHITE; + +// CheckColorsInGamut() +const ubyte + CM_IN_GAMUT = 0, + CM_OUT_OF_GAMUT = 255; + +/* UpdateICMRegKey Constants */ +const int + ICM_ADDPROFILE = 1, + ICM_DELETEPROFILE = 2, + ICM_QUERYPROFILE = 3, + ICM_SETDEFAULTPROFILE = 4, + ICM_REGISTERICMATCHER = 5, + ICM_UNREGISTERICMATCHER = 6, + ICM_QUERYMATCH = 7; + +enum : int { + RGN_AND = 1, + RGN_OR = 2, + RGN_XOR = 3, + RGN_DIFF = 4, + RGN_COPY = 5 +} + +const RGN_MIN = RGN_AND; +const RGN_MAX = RGN_COPY; + +// Return values for CombineRgn() +enum { + NULLREGION = 1, + SIMPLEREGION = 2, + COMPLEXREGION = 3 +} + +const ERROR = 0; +alias ERROR RGN_ERROR; + +// CreateDIBitmap() +const DWORD CBM_INIT = 4; + +// CreateDIBitmap() +enum : UINT { + DIB_RGB_COLORS = 0, + DIB_PAL_COLORS = 1 +} + +// --- +// Values for LOGFONT and CreateFont() + +// FIXME: For D, replace with lfFaceName.length() +const LF_FACESIZE = 32; +const LF_FULLFACESIZE = 64; + +// FIXME: Not needed for D, only EXTLOGFONT +const ELF_VENDOR_SIZE = 4; + +// ??? +const ELF_VERSION = 0; +const ELF_CULTURE_LATIN = 0; + +// LOGFONT.lfWeight +const LONG + FW_DONTCARE = 0, + FW_THIN = 100, + FW_EXTRALIGHT = 200, + FW_ULTRALIGHT = FW_EXTRALIGHT, + FW_LIGHT = 300, + FW_NORMAL = 400, + FW_REGULAR = FW_NORMAL, + FW_MEDIUM = 500, + FW_SEMIBOLD = 600, + FW_DEMIBOLD = FW_SEMIBOLD, + FW_BOLD = 700, + FW_EXTRABOLD = 800, + FW_ULTRABOLD = FW_EXTRABOLD, + FW_HEAVY = 900, + FW_BLACK = FW_HEAVY; + +// LOGFONT.lfCharSet +enum : DWORD { + ANSI_CHARSET = 0, + DEFAULT_CHARSET = 1, + SYMBOL_CHARSET = 2, + MAC_CHARSET = 77, + SHIFTJIS_CHARSET = 128, + HANGEUL_CHARSET = 129, + HANGUL_CHARSET = 129, + JOHAB_CHARSET = 130, + GB2312_CHARSET = 134, + CHINESEBIG5_CHARSET = 136, + GREEK_CHARSET = 161, + TURKISH_CHARSET = 162, + VIETNAMESE_CHARSET = 163, + HEBREW_CHARSET = 177, + ARABIC_CHARSET = 178, + BALTIC_CHARSET = 186, + RUSSIAN_CHARSET = 204, + THAI_CHARSET = 222, + EASTEUROPE_CHARSET = 238, + OEM_CHARSET = 255 +} + +// LOGFONT.lfOutPrecision +enum : BYTE { + OUT_DEFAULT_PRECIS = 0, + OUT_STRING_PRECIS, + OUT_CHARACTER_PRECIS, + OUT_STROKE_PRECIS, + OUT_TT_PRECIS, + OUT_DEVICE_PRECIS, + OUT_RASTER_PRECIS, + OUT_TT_ONLY_PRECIS, + OUT_OUTLINE_PRECIS, + OUT_SCREEN_OUTLINE_PRECIS, + OUT_PS_ONLY_PRECIS, // 10 +} + +// LOGFONT.lfClipPrecision +enum : BYTE { + CLIP_DEFAULT_PRECIS = 0, + CLIP_CHARACTER_PRECIS = 1, + CLIP_STROKE_PRECIS = 2, + CLIP_MASK = 15, + CLIP_LH_ANGLES = 16, + CLIP_TT_ALWAYS = 32, + CLIP_DFA_DISABLE = 64, + CLIP_EMBEDDED = 128 +} + +// LOGFONT.lfQuality +enum : BYTE { + DEFAULT_QUALITY = 0, + DRAFT_QUALITY, + PROOF_QUALITY, + NONANTIALIASED_QUALITY, + ANTIALIASED_QUALITY +} + +// LOGFONT.lfPitchAndFamily + +const BYTE + DEFAULT_PITCH = 0, + FIXED_PITCH = 1, + VARIABLE_PITCH = 2, + MONO_FONT = 8, + FF_DONTCARE = 0, + FF_ROMAN = 16, + FF_SWISS = 32, + FF_SCRIPT = 64, + FF_MODERN = 48, + FF_DECORATIVE = 80; + +// ---- +// Enums for the PANOSE struct + +const PANOSE_COUNT=10; + +enum { + PAN_FAMILYTYPE_INDEX = 0, + PAN_SERIFSTYLE_INDEX, + PAN_WEIGHT_INDEX, + PAN_PROPORTION_INDEX, + PAN_CONTRAST_INDEX, + PAN_STROKEVARIATION_INDEX, + PAN_ARMSTYLE_INDEX, + PAN_LETTERFORM_INDEX, + PAN_MIDLINE_INDEX, + PAN_XHEIGHT_INDEX +} + +const PAN_CULTURE_LATIN=0; + +// NOTE: the first two values (PAN_ANY and PAN_NO_FIT) apply to all these enums! +enum : BYTE { + PAN_ANY = 0, + PAN_NO_FIT = 1, +} + +enum : BYTE { + PAN_FAMILY_TEXT_DISPLAY = 2, + PAN_FAMILY_SCRIPT, + PAN_FAMILY_DECORATIVE, + PAN_FAMILY_PICTORIAL +} +enum : BYTE { + PAN_SERIF_COVE = 2, + PAN_SERIF_OBTUSE_COVE, + PAN_SERIF_SQUARE_COVE, + PAN_SERIF_OBTUSE_SQUARE_COVE, + PAN_SERIF_SQUARE, + PAN_SERIF_THIN, + PAN_SERIF_BONE, + PAN_SERIF_EXAGGERATED, + PAN_SERIF_TRIANGLE, + PAN_SERIF_NORMAL_SANS, + PAN_SERIF_OBTUSE_SANS, + PAN_SERIF_PERP_SANS, + PAN_SERIF_FLARED, + PAN_SERIF_ROUNDED +} + +enum : BYTE { + PAN_WEIGHT_VERY_LIGHT = 2, + PAN_WEIGHT_LIGHT, + PAN_WEIGHT_THIN, + PAN_WEIGHT_BOOK, + PAN_WEIGHT_MEDIUM, + PAN_WEIGHT_DEMI, + PAN_WEIGHT_BOLD, + PAN_WEIGHT_HEAVY, + PAN_WEIGHT_BLACK, + PAN_WEIGHT_NORD +} + +enum : BYTE { + PAN_PROP_OLD_STYLE = 2, + PAN_PROP_MODERN, + PAN_PROP_EVEN_WIDTH, + PAN_PROP_EXPANDED, + PAN_PROP_CONDENSED, + PAN_PROP_VERY_EXPANDED, + PAN_PROP_VERY_CONDENSED, + PAN_PROP_MONOSPACED +} + +enum : BYTE { + PAN_CONTRAST_NONE = 2, + PAN_CONTRAST_VERY_LOW, + PAN_CONTRAST_LOW, + PAN_CONTRAST_MEDIUM_LOW, + PAN_CONTRAST_MEDIUM, + PAN_CONTRAST_MEDIUM_HIGH, + PAN_CONTRAST_HIGH, + PAN_CONTRAST_VERY_HIGH +} + +// PANOSE.bStrokeVariation +enum : BYTE { + PAN_STROKE_GRADUAL_DIAG = 2, + PAN_STROKE_GRADUAL_TRAN, + PAN_STROKE_GRADUAL_VERT, + PAN_STROKE_GRADUAL_HORZ, + PAN_STROKE_RAPID_VERT, + PAN_STROKE_RAPID_HORZ, + PAN_STROKE_INSTANT_VERT +} + +// PANOSE.bArmStyle +enum : BYTE { + PAN_STRAIGHT_ARMS_HORZ = 2, + PAN_STRAIGHT_ARMS_WEDGE, + PAN_STRAIGHT_ARMS_VERT, + PAN_STRAIGHT_ARMS_SINGLE_SERIF, + PAN_STRAIGHT_ARMS_DOUBLE_SERIF, + PAN_BENT_ARMS_HORZ, + PAN_BENT_ARMS_WEDGE, + PAN_BENT_ARMS_VERT, + PAN_BENT_ARMS_SINGLE_SERIF, + PAN_BENT_ARMS_DOUBLE_SERIF +} + +// PANOSE.bLetterForm +enum : BYTE { + PAN_LETT_NORMAL_CONTACT = 2, + PAN_LETT_NORMAL_WEIGHTED, + PAN_LETT_NORMAL_BOXED, + PAN_LETT_NORMAL_FLATTENED, + PAN_LETT_NORMAL_ROUNDED, + PAN_LETT_NORMAL_OFF_CENTER, + PAN_LETT_NORMAL_SQUARE, + PAN_LETT_OBLIQUE_CONTACT, + PAN_LETT_OBLIQUE_WEIGHTED, + PAN_LETT_OBLIQUE_BOXED, + PAN_LETT_OBLIQUE_FLATTENED, + PAN_LETT_OBLIQUE_ROUNDED, + PAN_LETT_OBLIQUE_OFF_CENTER, + PAN_LETT_OBLIQUE_SQUARE +} + +// PANOSE.bMidLine +enum : BYTE { + PAN_MIDLINE_STANDARD_TRIMMED = 2, + PAN_MIDLINE_STANDARD_POINTED, + PAN_MIDLINE_STANDARD_SERIFED, + PAN_MIDLINE_HIGH_TRIMMED, + PAN_MIDLINE_HIGH_POINTED, + PAN_MIDLINE_HIGH_SERIFED, + PAN_MIDLINE_CONSTANT_TRIMMED, + PAN_MIDLINE_CONSTANT_POINTED, + PAN_MIDLINE_CONSTANT_SERIFED, + PAN_MIDLINE_LOW_TRIMMED, + PAN_MIDLINE_LOW_POINTED, + PAN_MIDLINE_LOW_SERIFED +} + +// PANOSE.bXHeight +enum : BYTE { + PAN_XHEIGHT_CONSTANT_SMALL = 2, + PAN_XHEIGHT_CONSTANT_STD, + PAN_XHEIGHT_CONSTANT_LARGE, + PAN_XHEIGHT_DUCKING_SMALL, + PAN_XHEIGHT_DUCKING_STD, + PAN_XHEIGHT_DUCKING_LARGE +} + +// ---- +// ??? +const FS_LATIN1 = 0x00000001; +const FS_LATIN2 = 0x00000002; +const FS_CYRILLIC = 0x00000004; +const FS_GREEK = 0x00000008; +const FS_TURKISH = 0x00000010; +const FS_HEBREW = 0x00000020; +const FS_ARABIC = 0x00000040; +const FS_BALTIC = 0x00000080; +const FS_VIETNAMESE = 0x00000100; +const FS_THAI = 0x00010000; +const FS_JISJAPAN = 0x00020000; +const FS_CHINESESIMP = 0x00040000; +const FS_WANSUNG = 0x00080000; +const FS_CHINESETRAD = 0x00100000; +const FS_JOHAB = 0x00200000; +const FS_SYMBOL = 0x80000000; + +// ---- +// Poly Fill Mode +enum : int { + ALTERNATE = 1, + WINDING = 2 +} +const int POLYFILL_LAST = WINDING; + +//--- +// LOGBRUSH +enum : LONG { + HS_HORIZONTAL = 0, + HS_VERTICAL, + HS_FDIAGONAL, + HS_BDIAGONAL, + HS_CROSS, + HS_DIAGCROSS +} + +//LOGBRUSH.lbStyle +enum : UINT { + BS_SOLID = 0, + BS_NULL = 1, + BS_HOLLOW = BS_NULL, + BS_HATCHED, + BS_PATTERN, + BS_INDEXED, + BS_DIBPATTERN, + BS_DIBPATTERNPT, + BS_PATTERN8X8, + BS_DIBPATTERN8X8, + BS_MONOPATTERN, +} +//----- +// EXTLOGPEN, ExtCreatePen() + +// EXTLOGPEN.elpPenStyle +enum : DWORD { + PS_SOLID = 0, + PS_DASH = 1, + PS_DOT = 2, + PS_DASHDOT = 3, + PS_DASHDOTDOT = 4, + PS_NULL = 5, + PS_INSIDEFRAME = 6, + PS_USERSTYLE = 7, + PS_ALTERNATE = 8, + PS_STYLE_MASK = 15, +} + +enum : DWORD { + PS_COSMETIC = 0x00000000, + PS_GEOMETRIC = 0x00010000, + PS_TYPE_MASK = 0x000F0000, +} +enum : DWORD { + PS_ENDCAP_ROUND = 0x00000000, + PS_ENDCAP_SQUARE = 0x00000100, + PS_ENDCAP_FLAT = 0x00000200, + PS_ENDCAP_MASK = 0x00000F00, +} +enum : DWORD { + PS_JOIN_ROUND = 0x00000000, + PS_JOIN_BEVEL = 0x00001000, + PS_JOIN_MITER = 0x00002000, + PS_JOIN_MASK = 0x0000F000, +} + +// --- +// DeviceCapabilities() + +enum : WORD { + DC_FIELDS = 1, + DC_PAPERS, + DC_PAPERSIZE, + DC_MINEXTENT, + DC_MAXEXTENT, + DC_BINS, + DC_DUPLEX, + DC_SIZE, + DC_EXTRA, + DC_VERSION, + DC_DRIVER, + DC_BINNAMES, + DC_ENUMRESOLUTIONS, + DC_FILEDEPENDENCIES, + DC_TRUETYPE, + DC_PAPERNAMES, + DC_ORIENTATION, + DC_COPIES, + DC_BINADJUST, + DC_EMF_COMPLIANT, + DC_DATATYPE_PRODUCED, + DC_COLLATE, + DC_MANUFACTURER, + DC_MODEL, +} + +static if (_WIN32_WINNT >= 0x500) { + enum { + DC_PERSONALITY = 25, + DC_PRINTRATE = 26, + DC_PRINTRATEUNIT = 27, + DC_PRINTERMEM = 28, + DC_MEDIAREADY = 29, + DC_STAPLE = 30, + DC_PRINTRATEPPM = 31, + DC_COLORDEVICE = 32, + DC_NUP = 33, + DC_MEDIATYPENAMES = 34, + DC_MEDIATYPES = 35, + } + enum { + PRINTRATEUNIT_PPM = 1, + PRINTRATEUNIT_CPS = 2, + PRINTRATEUNIT_LPM = 3, + PRINTRATEUNIT_IPM = 4, + } +} + + +// return from DC_TRUETYPE +const DWORD + DCTT_BITMAP = 1, + DCTT_DOWNLOAD = 2, + DCTT_SUBDEV = 4, + DCTT_DOWNLOAD_OUTLINE = 8; + +// return from DC_BINADJUST +enum : DWORD { + DCBA_FACEUPNONE = 0x0000, + DCBA_FACEUPCENTER = 0x0001, + DCBA_FACEUPLEFT = 0x0002, + DCBA_FACEUPRIGHT = 0x0003, + DCBA_FACEDOWNNONE = 0x0100, + DCBA_FACEDOWNCENTER = 0x0101, + DCBA_FACEDOWNLEFT = 0x0102, + DCBA_FACEDOWNRIGHT = 0x0103, +} +//--- + +const FLOODFILLBORDER = 0; +const FLOODFILLSURFACE = 1; + +// ExtTextOut() +const UINT + ETO_OPAQUE = 0x0002, + ETO_CLIPPED = 0x0004, + ETO_GLYPH_INDEX = 0x0010, + ETO_RTLREADING = 0x0080, + ETO_NUMERICSLOCAL = 0x0400, + ETO_NUMERICSLATIN = 0x0800, + ETO_IGNORELANGUAGE = 0x1000; +static if (_WIN32_WINNT >= 0x500) { + const UINT + ETO_PDY = 0x2000; +} + +// GdiComment() +enum { + GDICOMMENT_BEGINGROUP = 0x00000002, + GDICOMMENT_ENDGROUP = 0x00000003, + GDICOMMENT_UNICODE_STRING = 0x00000040, + GDICOMMENT_UNICODE_END = 0x00000080, + GDICOMMENT_MULTIFORMATS = 0x40000004, + GDICOMMENT_IDENTIFIER = 0x43494447, + GDICOMMENT_WINDOWS_METAFILE = 0x80000001, +} + +// Get/SetArcDirection() +enum : int { + AD_COUNTERCLOCKWISE = 1, + AD_CLOCKWISE = 2 +} + +const RDH_RECTANGLES = 1; + +// GCPRESULTS.lpClass +enum { + GCPCLASS_LATIN = 1, + GCPCLASS_HEBREW = 2, + GCPCLASS_ARABIC = 2, + GCPCLASS_NEUTRAL, + GCPCLASS_LOCALNUMBER, + GCPCLASS_LATINNUMBER, + GCPCLASS_LATINNUMERICTERMINATOR, + GCPCLASS_LATINNUMERICSEPARATOR, + GCPCLASS_NUMERICSEPARATOR, // = 8, + GCPCLASS_POSTBOUNDRTL = 16, + GCPCLASS_POSTBOUNDLTR = 32, + GCPCLASS_PREBOUNDRTL = 64, + GCPCLASS_PREBOUNDLTR = 128, + GCPGLYPH_LINKAFTER = 0x4000, + GCPGLYPH_LINKBEFORE = 0x8000 +} + +// GetBoundsRect(), SetBoundsRect() +const UINT + DCB_RESET = 1, + DCB_ACCUMULATE = 2, + DCB_SET = DCB_RESET | DCB_ACCUMULATE, + DCB_ENABLE = 4, + DCB_DISABLE = 8, + DCB_DIRTY = DCB_ACCUMULATE; + +//--- +// GetObjectType() +enum : DWORD { + OBJ_PEN = 1, + OBJ_BRUSH, + OBJ_DC, + OBJ_METADC, + OBJ_PAL, + OBJ_FONT, + OBJ_BITMAP, + OBJ_REGION, + OBJ_METAFILE, + OBJ_MEMDC, + OBJ_EXTPEN, + OBJ_ENHMETADC, + OBJ_ENHMETAFILE, + OBJ_COLORSPACE, +} + +//--------------------- +// Capabilities for GetDeviceCaps(dc, xxx) + +enum : int { + DRIVERVERSION = 0, + TECHNOLOGY = 2, + HORZSIZE = 4, + VERTSIZE = 6, + HORZRES = 8, + VERTRES = 10, + BITSPIXEL = 12, + PLANES = 14, + NUMBRUSHES = 16, + NUMPENS = 18, + NUMMARKERS = 20, + NUMFONTS = 22, + NUMCOLORS = 24, + PDEVICESIZE = 26, + CURVECAPS = 28, + LINECAPS = 30, + POLYGONALCAPS = 32, + TEXTCAPS = 34, + CLIPCAPS = 36, + RASTERCAPS = 38, + ASPECTX = 40, + ASPECTY = 42, + ASPECTXY = 44, + LOGPIXELSX = 88, + LOGPIXELSY = 90, + SIZEPALETTE = 104, + NUMRESERVED = 106, + COLORRES = 108, + PHYSICALWIDTH = 110, + PHYSICALHEIGHT = 111, + PHYSICALOFFSETX = 112, + PHYSICALOFFSETY = 113, + SCALINGFACTORX = 114, + SCALINGFACTORY = 115, + VREFRESH = 116, + DESKTOPVERTRES = 117, + DESKTOPHORZRES = 118, + BLTALIGNMENT = 119 +} +static if (_WIN32_WINNT >= 0x500) { +enum : int { + SHADEBLENDCAPS = 120, + COLORMGMTCAPS = 121, +} +} + +// Return values for GetDeviceCaps(dc, TECHNOLOGY) +enum : int { + DT_PLOTTER = 0, + DT_RASDISPLAY, + DT_RASPRINTER, + DT_RASCAMERA, + DT_CHARSTREAM, + DT_METAFILE, + DT_DISPFILE // = 6 +} + +// Return values for GetDeviceCaps(dc, RASTERCAPS) +const int + RC_NONE = 0, + RC_BITBLT = 1, + RC_BANDING = 2, + RC_SCALING = 4, + RC_BITMAP64 = 8, + RC_GDI20_OUTPUT = 16, + RC_GDI20_STATE = 32, + RC_SAVEBITMAP = 64, + RC_DI_BITMAP = 128, + RC_PALETTE = 256, + RC_DIBTODEV = 512, + RC_BIGFONT = 1024, + RC_STRETCHBLT = 2048, + RC_FLOODFILL = 4096, + RC_STRETCHDIB = 8192, + RC_OP_DX_OUTPUT = 0x4000, + RC_DEVBITS = 0x8000; + +static if (_WIN32_WINNT >= 0x500) { + /* Shading and blending caps */ + const SB_NONE = 0x00000000; + const SB_CONST_ALPHA = 0x00000001; + const SB_PIXEL_ALPHA = 0x00000002; + const SB_PREMULT_ALPHA = 0x00000004; + const SB_GRAD_RECT = 0x00000010; + const SB_GRAD_TRI = 0x00000020; + /* Color Management caps */ + const CM_NONE = 0x00000000; + const CM_DEVICE_ICM = 0x00000001; + const CM_GAMMA_RAMP = 0x00000002; + const CM_CMYK_COLOR = 0x00000004; +} + +// Return values for GetDeviceCaps(dc, CURVECAPS) +const int + CC_NONE = 0, + CC_CIRCLES = 1, + CC_PIE = 2, + CC_CHORD = 4, + CC_ELLIPSES = 8, + CC_WIDE = 16, + CC_STYLED = 32, + CC_WIDESTYLED = 64, + CC_INTERIORS = 128, + CC_ROUNDRECT = 256; + +// Return values for GetDeviceCaps(dc, LINECAPS) + +const int + LC_NONE = 0, + LC_POLYLINE = 2, + LC_MARKER = 4, + LC_POLYMARKER = 8, + LC_WIDE = 16, + LC_STYLED = 32, + LC_WIDESTYLED = 64, + LC_INTERIORS = 128; + +// Return values for GetDeviceCaps(dc, POLYGONALCAPS) + +const int + PC_NONE = 0, + PC_POLYGON = 1, + PC_RECTANGLE = 2, + PC_WINDPOLYGON = 4, + PC_TRAPEZOID = 4, + PC_SCANLINE = 8, + PC_WIDE = 16, + PC_STYLED = 32, + PC_WIDESTYLED = 64, + PC_INTERIORS = 128, + PC_POLYPOLYGON = 256, + PC_PATHS = 512; + +/* Clipping Capabilities */ +const int CP_NONE = 0, + CP_RECTANGLE = 1, + CP_REGION = 2; + +// Return values for GetDeviceCaps(dc, TEXTCAPS) + +const int + TC_OP_CHARACTER = 1, + TC_OP_STROKE = 2, + TC_CP_STROKE = 4, + TC_CR_90 = 8, + TC_CR_ANY = 16, + TC_SF_X_YINDEP = 32, + TC_SA_DOUBLE = 64, + TC_SA_INTEGER = 128, + TC_SA_CONTIN = 256, + TC_EA_DOUBLE = 512, + TC_IA_ABLE = 1024, + TC_UA_ABLE = 2048, + TC_SO_ABLE = 4096, + TC_RA_ABLE = 8192, + TC_VA_ABLE = 16384, + TC_RESERVED = 32768, + TC_SCROLLBLT = 65536; + +// End GetDeviceCaps +//--------------------- +// GetCharacterPlacement(), and GetFontLanguageInfo() +const DWORD + GCP_DBCS = 1, + GCP_REORDER = 2, + GCP_USEKERNING = 8, + GCP_GLYPHSHAPE = 16, + GCP_LIGATE = 32, + GCP_DIACRITIC = 256, + GCP_KASHIDA = 1024, + GCP_ERROR = 0x8000, + GCP_JUSTIFY = 0x10000, + GCP_CLASSIN = 0x80000, + GCP_MAXEXTENT = 0x100000, + GCP_JUSTIFYIN = 0x200000, + GCP_DISPLAYZWG = 0x400000, + GCP_SYMSWAPOFF = 0x800000, + GCP_NUMERICOVERRIDE = 0x1000000, + GCP_NEUTRALOVERRIDE = 0x2000000, + GCP_NUMERICSLATIN = 0x4000000, + GCP_NUMERICSLOCAL = 0x8000000, + // Only for GetFontLanguageInfo() + FLI_GLYPHS = 0x40000, + FLI_MASK = 0x103b; + +// GetGlyphOutline() +enum : UINT { + GGO_METRICS = 0, + GGO_BITMAP = 1, + GGO_NATIVE = 2, + GGO_BEZIER = 3, + GGO_GRAY2_BITMAP = 4, + GGO_GRAY4_BITMAP = 5, + GGO_GRAY8_BITMAP = 6, + GGO_GLYPH_INDEX = 128, + GGO_UNHINTED = 256 +} + +enum : int { + GM_COMPATIBLE = 1, + GM_ADVANCED +} +const GM_LAST = GM_ADVANCED; + +enum : int { + MM_TEXT = 1, + MM_LOMETRIC, + MM_HIMETRIC, + MM_LOENGLISH, + MM_HIENGLISH, + MM_TWIPS, + MM_ISOTROPIC, + MM_ANISOTROPIC, +} + +const int + MM_MIN = MM_TEXT, + MM_MAX = MM_ANISOTROPIC, + MM_MAX_FIXEDSCALE = MM_TWIPS; + +const ABSOLUTE = 1; +const RELATIVE = 2; + +enum : BYTE { + PC_RESERVED = 1, + PC_EXPLICIT = 2, + PC_NOCOLLAPSE = 4 +} + +/* FIXME: move to core.sys.windows.commctrl ? */ +// ImageList +const COLORREF + CLR_NONE = 0xffffffff, + CLR_INVALID = CLR_NONE, + CLR_DEFAULT = 0xff000000; + +// RASTERIZER_STATUS.wFlags +const short + TT_AVAILABLE = 1, + TT_ENABLED = 2; + +// GetStockObject() +enum : int { + WHITE_BRUSH = 0, + LTGRAY_BRUSH, + GRAY_BRUSH, + DKGRAY_BRUSH, + BLACK_BRUSH, + HOLLOW_BRUSH, // = 5 + NULL_BRUSH = HOLLOW_BRUSH, + WHITE_PEN = 6, + BLACK_PEN, + NULL_PEN, // = 8 + OEM_FIXED_FONT = 10, + ANSI_FIXED_FONT, + ANSI_VAR_FONT, + SYSTEM_FONT, + DEVICE_DEFAULT_FONT, + DEFAULT_PALETTE, + SYSTEM_FIXED_FONT, + DEFAULT_GUI_FONT = SYSTEM_FIXED_FONT + 1, +} +static if (_WIN32_WINNT >= 0x500) { + enum : int { + DC_BRUSH = DEFAULT_GUI_FONT + 1, + DC_PEN, + } +} + +static if (_WIN32_WINNT >= 0x500) { + const STOCK_LAST = DC_PEN; +} else { + const STOCK_LAST = DEFAULT_GUI_FONT; +} + +// Get/SetSystemPaletteUse() +enum : UINT { + SYSPAL_ERROR = 0, + SYSPAL_STATIC = 1, + SYSPAL_NOSTATIC = 2, + SYSPAL_NOSTATIC256 = 3, +} + +// SetTextAlign() +const UINT + TA_TOP = 0, + TA_CENTER = 6, + TA_BOTTOM = 8, + TA_BASELINE = 24, + TA_LEFT = 0, + TA_RIGHT = 2, + TA_RTLREADING = 256, + TA_NOUPDATECP = 0, + TA_UPDATECP = 1, + TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING, + VTA_BASELINE = TA_BASELINE, + VTA_CENTER = TA_CENTER, + VTA_LEFT = TA_BOTTOM, + VTA_RIGHT = TA_TOP, + VTA_BOTTOM = TA_RIGHT, + VTA_TOP = TA_LEFT; + +// EMRMODIFYWORLDTRANSFORM.iMode +enum : DWORD { + MWT_IDENTITY = 1, + MWT_LEFTMULTIPLY, + MWT_RIGHTMULTIPLY +} + +const DWORD + MWT_MIN = MWT_IDENTITY, + MWT_MAX = MWT_RIGHTMULTIPLY; + +enum { + TRANSPARENT = 1, + OPAQUE = 2 +} + +// Get/SetStretchMode() +enum : int { + BLACKONWHITE = 1, + WHITEONBLACK = 2, + COLORONCOLOR = 3, + HALFTONE = 4, + + STRETCH_ANDSCANS = 1, + STRETCH_ORSCANS = 2, + STRETCH_DELETESCANS = 3, + STRETCH_HALFTONE = 4, + + MAXSTRETCHBLTMODE = 4 +} + +// TranslateCharsetInfo() +enum : DWORD { + TCI_SRCCHARSET = 1, + TCI_SRCCODEPAGE = 2, + TCI_SRCFONTSIG = 3, + TCI_SRCLOCALE = 0x1000, +} + +// SetICMMode() +enum : int { + ICM_OFF = 1, + ICM_ON = 2, + ICM_QUERY = 3, + ICM_DONE_OUTSIDEDC = 4, +} + +// ---- +// Escape() Spooler Error Codes +enum : int { + SP_NOTREPORTED = 0x4000, + SP_ERROR = -1, + SP_APPABORT = -2, + SP_USERABORT = -3, + SP_OUTOFDISK = -4, + SP_OUTOFMEMORY = -5 +} + +// Escape(), ExtEscape() +// Most of the following are deprecated (Win16 only) +enum : int { + NEWFRAME = 1, + ABORTDOC = 2, + NEXTBAND = 3, + SETCOLORTABLE = 4, + GETCOLORTABLE = 5, + FLUSHOUTPUT = 6, + DRAFTMODE = 7, + QUERYESCSUPPORT = 8, + SETABORTPROC = 9, + STARTDOC = 10, + ENDDOC = 11, + GETPHYSPAGESIZE = 12, + GETPRINTINGOFFSET = 13, + GETSCALINGFACTOR = 14, + MFCOMMENT = 15, + GETPENWIDTH = 16, + SETCOPYCOUNT = 17, + SELECTPAPERSOURCE = 18, + DEVICEDATA = 19, + PASSTHROUGH = 19, + GETTECHNOLOGY = 20, + SETLINECAP = 21, + SETLINEJOIN = 22, + SETMITERLIMIT = 23, + BANDINFO = 24, + DRAWPATTERNRECT = 25, + GETVECTORPENSIZE = 26, + GETVECTORBRUSHSIZE = 27, + ENABLEDUPLEX = 28, + GETSETPAPERBINS = 29, + GETSETPRINTORIENT = 30, + ENUMPAPERBINS = 31, + SETDIBSCALING = 32, + EPSPRINTING = 33, + ENUMPAPERMETRICS = 34, + GETSETPAPERMETRICS = 35, + POSTSCRIPT_DATA = 37, + POSTSCRIPT_IGNORE = 38, + MOUSETRAILS = 39, + GETDEVICEUNITS = 42, + GETEXTENDEDTEXTMETRICS = 256, + GETEXTENTTABLE = 257, + GETPAIRKERNTABLE = 258, + GETTRACKKERNTABLE = 259, + EXTTEXTOUT = 512, + GETFACENAME = 513, + DOWNLOADFACE = 514, + ENABLERELATIVEWIDTHS = 768, + ENABLEPAIRKERNING = 769, + SETKERNTRACK = 770, + SETALLJUSTVALUES = 771, + SETCHARSET = 772, + STRETCHBLT = 2048, + METAFILE_DRIVER = 2049, + GETSETSCREENPARAMS = 3072, + QUERYDIBSUPPORT = 3073, + BEGIN_PATH = 4096, + CLIP_TO_PATH = 4097, + END_PATH = 4098, + EXT_DEVICE_CAPS = 4099, + RESTORE_CTM = 4100, + SAVE_CTM = 4101, + SET_ARC_DIRECTION = 4102, + SET_BACKGROUND_COLOR = 4103, + SET_POLY_MODE = 4104, + SET_SCREEN_ANGLE = 4105, + SET_SPREAD = 4106, + TRANSFORM_CTM = 4107, + SET_CLIP_BOX = 4108, + SET_BOUNDS = 4109, + SET_MIRROR_MODE = 4110, + OPENCHANNEL = 4110, + DOWNLOADHEADER = 4111, + CLOSECHANNEL = 4112, + POSTSCRIPT_PASSTHROUGH = 4115, + ENCAPSULATED_POSTSCRIPT = 4116, + POSTSCRIPT_IDENTIFY = 4117, + POSTSCRIPT_INJECTION = 4118, + CHECKJPEGFORMAT = 4119, + CHECKPNGFORMAT = 4120, + GET_PS_FEATURESETTING = 4121, + SPCLPASSTHROUGH2 = 4568, +} + +enum : int { + PSIDENT_GDICENTRIC = 0, + PSIDENT_PSCENTRIC = 1, +} + +/* + * Header structure for the input buffer to POSTSCRIPT_INJECTION escape + */ +struct PSINJECTDATA { + DWORD DataBytes; + WORD InjectionPoint; + WORD PageNumber; +} +alias PSINJECTDATA* PPSINJECTDATA; + +/* Constants for PSINJECTDATA.InjectionPoint field */ +enum { + PSINJECT_BEGINSTREAM = 1, + PSINJECT_PSADOBE = 2, + PSINJECT_PAGESATEND = 3, + PSINJECT_PAGES = 4, + PSINJECT_DOCNEEDEDRES = 5, + PSINJECT_DOCSUPPLIEDRES = 6, + PSINJECT_PAGEORDER = 7, + PSINJECT_ORIENTATION = 8, + PSINJECT_BOUNDINGBOX = 9, + PSINJECT_DOCUMENTPROCESSCOLORS = 10, + PSINJECT_COMMENTS = 11, + PSINJECT_BEGINDEFAULTS = 12, + PSINJECT_ENDDEFAULTS = 13, + PSINJECT_BEGINPROLOG = 14, + PSINJECT_ENDPROLOG = 15, + PSINJECT_BEGINSETUP = 16, + PSINJECT_ENDSETUP = 17, + PSINJECT_TRAILER = 18, + PSINJECT_EOF = 19, + PSINJECT_ENDSTREAM = 20, + PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21, + + PSINJECT_PAGENUMBER = 100, + PSINJECT_BEGINPAGESETUP = 101, + PSINJECT_ENDPAGESETUP = 102, + PSINJECT_PAGETRAILER = 103, + PSINJECT_PLATECOLOR = 104, + PSINJECT_SHOWPAGE = 105, + PSINJECT_PAGEBBOX = 106, + PSINJECT_ENDPAGECOMMENTS = 107, + + PSINJECT_VMSAVE = 200, + PSINJECT_VMRESTORE = 201, +} + +/* Parameter for GET_PS_FEATURESETTING escape */ +enum { + FEATURESETTING_NUP = 0, + FEATURESETTING_OUTPUT = 1, + FEATURESETTING_PSLEVEL = 2, + FEATURESETTING_CUSTPAPER = 3, + FEATURESETTING_MIRROR = 4, + FEATURESETTING_NEGATIVE = 5, + FEATURESETTING_PROTOCOL = 6, +} + +enum { + FEATURESETTING_PRIVATE_BEGIN = 0x1000, + FEATURESETTING_PRIVATE_END = 0x1FFF, +} + +/* Value returned for FEATURESETTING_PROTOCOL */ +const PSPROTOCOL_ASCII = 0; +const PSPROTOCOL_BCP = 1; +const PSPROTOCOL_TBCP = 2; +const PSPROTOCOL_BINARY = 3; + +// ---- + +const WPARAM PR_JOBSTATUS = 0; + +// ??? +const QDI_SETDIBITS = 1; +const QDI_GETDIBITS = 2; +const QDI_DIBTOSCREEN = 4; +const QDI_STRETCHDIB = 8; + +const ASPECT_FILTERING = 1; + +// LOGCOLORSPACE.lcsCSType +enum : LCSCSTYPE { + LCS_CALIBRATED_RGB = 0, + LCS_DEVICE_RGB, + LCS_DEVICE_CMYK +} /* What this for? */ + +// LOGCOLORSPACE.lcsIntent +enum : LCSGAMUTMATCH { + LCS_GM_BUSINESS = 1, + LCS_GM_GRAPHICS = 2, + LCS_GM_IMAGES = 4, + LCS_GM_ABS_COLORIMETRIC = 8, +} + +const DWORD + RASTER_FONTTYPE = 1, + DEVICE_FONTTYPE = 2, + TRUETYPE_FONTTYPE = 4; + +// --- +// DEVMODE struct + +// FIXME: Not needed for D (use .length instead) +const CCHDEVICENAME = 32; +const CCHFORMNAME = 32; + +// DEVMODE.dmSpecVersion +// current version of specification +const WORD DM_SPECVERSION = 0x0401; + +// DEVMODE.dmOrientation +enum : short { + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2 +} + +// DEVMODE.dmPaperSize +enum : short { + DMPAPER_LETTER = 1, + DMPAPER_LETTERSMALL, + DMPAPER_TABLOID, + DMPAPER_LEDGER, + DMPAPER_LEGAL, + DMPAPER_STATEMENT, + DMPAPER_EXECUTIVE, + DMPAPER_A3, + DMPAPER_A4, + DMPAPER_A4SMALL, + DMPAPER_A5, + DMPAPER_B4, + DMPAPER_B5, + DMPAPER_FOLIO, + DMPAPER_QUARTO, + DMPAPER_10X14, + DMPAPER_11X17, + DMPAPER_NOTE, + DMPAPER_ENV_9, + DMPAPER_ENV_10, + DMPAPER_ENV_11, + DMPAPER_ENV_12, + DMPAPER_ENV_14, + DMPAPER_CSHEET, + DMPAPER_DSHEET, + DMPAPER_ESHEET, + DMPAPER_ENV_DL, + DMPAPER_ENV_C5, + DMPAPER_ENV_C3, + DMPAPER_ENV_C4, + DMPAPER_ENV_C6, + DMPAPER_ENV_C65, + DMPAPER_ENV_B4, + DMPAPER_ENV_B5, + DMPAPER_ENV_B6, + DMPAPER_ENV_ITALY, + DMPAPER_ENV_MONARCH, + DMPAPER_ENV_PERSONAL, + DMPAPER_FANFOLD_US, + DMPAPER_FANFOLD_STD_GERMAN, + DMPAPER_FANFOLD_LGL_GERMAN, + DMPAPER_ISO_B4, + DMPAPER_JAPANESE_POSTCARD, + DMPAPER_9X11, + DMPAPER_10X11, + DMPAPER_15X11, + DMPAPER_ENV_INVITE, + DMPAPER_RESERVED_48, + DMPAPER_RESERVED_49, + DMPAPER_LETTER_EXTRA, + DMPAPER_LEGAL_EXTRA, + DMPAPER_TABLOID_EXTRA, + DMPAPER_A4_EXTRA, + DMPAPER_LETTER_TRANSVERSE, + DMPAPER_A4_TRANSVERSE, + DMPAPER_LETTER_EXTRA_TRANSVERSE, + DMPAPER_A_PLUS, + DMPAPER_B_PLUS, + DMPAPER_LETTER_PLUS, + DMPAPER_A4_PLUS, + DMPAPER_A5_TRANSVERSE, + DMPAPER_B5_TRANSVERSE, + DMPAPER_A3_EXTRA, + DMPAPER_A5_EXTRA, + DMPAPER_B5_EXTRA, + DMPAPER_A2, + DMPAPER_A3_TRANSVERSE, + DMPAPER_A3_EXTRA_TRANSVERSE // = 68 +} +static if (_WIN32_WINNT >= 0x500) { + enum : short { + DMPAPER_DBL_JAPANESE_POSTCARD = 69, + DMPAPER_A6, + DMPAPER_JENV_KAKU2, + DMPAPER_JENV_KAKU3, + DMPAPER_JENV_CHOU3, + DMPAPER_JENV_CHOU4, + DMPAPER_LETTER_ROTATED, + DMPAPER_A3_ROTATED, + DMPAPER_A4_ROTATED, + DMPAPER_A5_ROTATED, + DMPAPER_B4_JIS_ROTATED, + DMPAPER_B5_JIS_ROTATED, + DMPAPER_JAPANESE_POSTCARD_ROTATED, + DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED, + DMPAPER_A6_ROTATED, + DMPAPER_JENV_KAKU2_ROTATED, + DMPAPER_JENV_KAKU3_ROTATED, + DMPAPER_JENV_CHOU3_ROTATED, + DMPAPER_JENV_CHOU4_ROTATED, + DMPAPER_B6_JIS, + DMPAPER_B6_JIS_ROTATED, + DMPAPER_12X11, + DMPAPER_JENV_YOU4, + DMPAPER_JENV_YOU4_ROTATED, + DMPAPER_P16K, + DMPAPER_P32K, + DMPAPER_P32KBIG, + DMPAPER_PENV_1, + DMPAPER_PENV_2, + DMPAPER_PENV_3, + DMPAPER_PENV_4, + DMPAPER_PENV_5, + DMPAPER_PENV_6, + DMPAPER_PENV_7, + DMPAPER_PENV_8, + DMPAPER_PENV_9, + DMPAPER_PENV_10, + DMPAPER_P16K_ROTATED, + DMPAPER_P32K_ROTATED, + DMPAPER_P32KBIG_ROTATED, + DMPAPER_PENV_1_ROTATED, + DMPAPER_PENV_2_ROTATED, + DMPAPER_PENV_3_ROTATED, + DMPAPER_PENV_4_ROTATED, + DMPAPER_PENV_5_ROTATED, + DMPAPER_PENV_6_ROTATED, + DMPAPER_PENV_7_ROTATED, + DMPAPER_PENV_8_ROTATED, + DMPAPER_PENV_9_ROTATED, + DMPAPER_PENV_10_ROTATED // 118 + } +} + +const short DMPAPER_FIRST = DMPAPER_LETTER; + +static if (_WIN32_WINNT >= 0x500) { + const short DMPAPER_LAST = DMPAPER_PENV_10_ROTATED; +} else { + const short DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE; +} + +const short DMPAPER_USER = 256; + + +// DEVMODE.dmDefaultSource +enum : short { + DMBIN_ONLYONE = 1, + DMBIN_UPPER = 1, + DMBIN_LOWER, + DMBIN_MIDDLE, + DMBIN_MANUAL, + DMBIN_ENVELOPE, + DMBIN_ENVMANUAL, + DMBIN_AUTO, + DMBIN_TRACTOR, + DMBIN_SMALLFMT, + DMBIN_LARGEFMT, + DMBIN_LARGECAPACITY, // = 11 + DMBIN_CASSETTE = 14, + DMBIN_FORMSOURCE, +} +enum : short { + DMBIN_FIRST = DMBIN_UPPER, + DMBIN_LAST = DMBIN_FORMSOURCE, + DMBIN_USER = 256, +} + +// DEVMODE.dmPrintQuality +enum : short { + DMRES_DRAFT = -1, + DMRES_LOW = -2, + DMRES_MEDIUM = -3, + DMRES_HIGH = -4 +} + +// DEVMODE.dmColor +enum : short { + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2 +} + +// DEVMODE.dmDuplex +enum : short { + DMDUP_SIMPLEX = 1, + DMDUP_VERTICAL = 2, + DMDUP_HORIZONTAL = 3 +} + +// DEVMODE.dmTTOption +enum : short { + DMTT_BITMAP = 1, + DMTT_DOWNLOAD, + DMTT_SUBDEV, + DMTT_DOWNLOAD_OUTLINE +} + +// DEVMODE.dmCollate +enum : short { + DMCOLLATE_FALSE = 0, + DMCOLLATE_TRUE +} + +static if (_WIN32_WINNT >= 0x501) { + /* DEVMODE dmDisplayOrientation specifiations */ + enum : short { + DMDO_DEFAULT = 0, + DMDO_90 = 1, + DMDO_180 = 2, + DMDO_270 = 3, + } + + /* DEVMODE dmDisplayFixedOutput specifiations */ + enum : short { + DMDFO_DEFAULT = 0, + DMDFO_STRETCH = 1, + DMDFO_CENTER = 2, + } +} + + +/* FIXME: this flags are deprecated ? */ +// DEVMODE.dmDisplayFlags +const DWORD + DM_GRAYSCALE = 1, + DM_INTERLACED = 2; + +const DWORD + DMDISPLAYFLAGS_TEXTMODE = 0x00000004; + +/* dmNup , multiple logical page per physical page options */ +const DWORD + DMNUP_SYSTEM = 1, + DMNUP_ONEUP = 2; + +// DEVMODE.dmFields +const DWORD + DM_ORIENTATION = 0x00000001, + DM_PAPERSIZE = 0x00000002, + DM_PAPERLENGTH = 0x00000004, + DM_PAPERWIDTH = 0x00000008, + DM_SCALE = 0x00000010; +static if (_WIN32_WINNT >= 0x500) { + const DWORD + DM_POSITION = 0x00000020, + DM_NUP = 0x00000040; +} +static if (_WIN32_WINNT >= 0x501) { + const DWORD + DM_DISPLAYORIENTATION = 0x00000080; +} +const DWORD + DM_COPIES = 0x00000100, + DM_DEFAULTSOURCE = 0x00000200, + DM_PRINTQUALITY = 0x00000400, + DM_COLOR = 0x00000800, + DM_DUPLEX = 0x00001000, + DM_YRESOLUTION = 0x00002000, + DM_TTOPTION = 0x00004000, + DM_COLLATE = 0x00008000, + DM_FORMNAME = 0x00010000, + DM_LOGPIXELS = 0x00020000, + DM_BITSPERPEL = 0x00040000, + DM_PELSWIDTH = 0x00080000, + DM_PELSHEIGHT = 0x00100000, + DM_DISPLAYFLAGS = 0x00200000, + DM_DISPLAYFREQUENCY = 0x00400000, + DM_ICMMETHOD = 0x00800000, + DM_ICMINTENT = 0x01000000, + DM_MEDIATYPE = 0x02000000, + DM_DITHERTYPE = 0x04000000, + DM_PANNINGWIDTH = 0x08000000, + DM_PANNINGHEIGHT = 0x10000000; +static if (_WIN32_WINNT >= 0x501) { + const DWORD + DM_DISPLAYFIXEDOUTPUT = 0x20000000; +} + +// DEVMODE.dmICMMethod +enum : DWORD { + DMICMMETHOD_NONE = 1, + DMICMMETHOD_SYSTEM = 2, + DMICMMETHOD_DRIVER = 3, + DMICMMETHOD_DEVICE = 4, + DMICMMETHOD_USER = 256 +} + +// DEVMODE.dmICMIntent +enum : DWORD { + DMICM_SATURATE = 1, + DMICM_CONTRAST = 2, + DMICM_COLORIMETRIC = 3, + DMICM_ABS_COLORIMETRIC = 4, + DMICM_USER = 256 +} + +// DEVMODE.dmMediaType +enum : DWORD { + DMMEDIA_STANDARD = 1, + DMMEDIA_TRANSPARENCY = 2, + DMMEDIA_GLOSSY = 3, + DMMEDIA_USER = 256 +} + +// DEVMODE.dmDitherType +enum : DWORD { + DMDITHER_NONE = 1, + DMDITHER_COARSE, + DMDITHER_FINE, + DMDITHER_LINEART, + DMDITHER_ERRORDIFFUSION, + DMDITHER_RESERVED6, + DMDITHER_RESERVED7, + DMDITHER_RESERVED8, + DMDITHER_RESERVED9, + DMDITHER_GRAYSCALE, + DMDITHER_USER = 256 +} + +// ---- +// DocumentProperties() +const DWORD + DM_UPDATE = 1, + DM_COPY = 2, + DM_PROMPT = 4, + DM_MODIFY = 8, + DM_IN_BUFFER = DM_MODIFY, + DM_IN_PROMPT = DM_PROMPT, + DM_OUT_BUFFER = DM_COPY, + DM_OUT_DEFAULT = DM_UPDATE; +// --- + +const GDI_ERROR = 0xFFFFFFFF; +const HGDI_ERROR= cast(HANDLE)GDI_ERROR; + +// TEXTMETRIC.tmPitchAndFamily +const BYTE + TMPF_FIXED_PITCH = 1, + TMPF_VECTOR = 2, + TMPF_TRUETYPE = 4, + TMPF_DEVICE = 8; + +// NEWTEXTMETRIC.ntmFlags +const DWORD + NTM_ITALIC = 0x00000001, + NTM_BOLD = 0x00000020, + NTM_REGULAR = 0x00000040, + NTM_NONNEGATIVE_AC = 0x00010000, + NTM_PS_OPENTYPE = 0x00020000, + NTM_TT_OPENTYPE = 0x00040000, + NTM_MULTIPLEMASTER = 0x00080000, + NTM_TYPE1 = 0x00100000, + NTM_DSIG = 0x00200000; + +// --- +const DWORD TT_POLYGON_TYPE = 24; + +// TTPOLYCURVE +enum : WORD { + TT_PRIM_LINE = 1, + TT_PRIM_QSPLINE = 2, + TT_PRIM_CSPLINE = 3, +} +// --- +const FONTMAPPER_MAX = 10; +const ENHMETA_STOCK_OBJECT = 0x80000000; +const WGL_FONT_LINES = 0; +const WGL_FONT_POLYGONS = 1; + +// --- +// LAYERPLANEDESCRIPTOR.dwFlags +const DWORD + LPD_DOUBLEBUFFER = 1, + LPD_STEREO = 2, + LPD_SUPPORT_GDI = 16, + LPD_SUPPORT_OPENGL = 32, + LPD_SHARE_DEPTH = 64, + LPD_SHARE_STENCIL = 128, + LPD_SHARE_ACCUM = 256, + LPD_SWAP_EXCHANGE = 512, + LPD_SWAP_COPY = 1024, + LPD_TRANSPARENT = 4096; + +// LAYERPLANEDESCRIPTOR.iPixelType +enum : BYTE { + LPD_TYPE_RGBA = 0, + LPD_TYPE_COLORINDEX = 1 +} + +// --- + +// wglSwapLayerBuffers() +const UINT + WGL_SWAP_MAIN_PLANE = 1, + WGL_SWAP_OVERLAY1 = 2, + WGL_SWAP_OVERLAY2 = 4, + WGL_SWAP_OVERLAY3 = 8, + WGL_SWAP_OVERLAY4 = 16, + WGL_SWAP_OVERLAY5 = 32, + WGL_SWAP_OVERLAY6 = 64, + WGL_SWAP_OVERLAY7 = 128, + WGL_SWAP_OVERLAY8 = 256, + WGL_SWAP_OVERLAY9 = 512, + WGL_SWAP_OVERLAY10 = 1024, + WGL_SWAP_OVERLAY11 = 2048, + WGL_SWAP_OVERLAY12 = 4096, + WGL_SWAP_OVERLAY13 = 8192, + WGL_SWAP_OVERLAY14 = 16384, + WGL_SWAP_OVERLAY15 = 32768, + WGL_SWAP_UNDERLAY1 = 65536, + WGL_SWAP_UNDERLAY2 = 0x20000, + WGL_SWAP_UNDERLAY3 = 0x40000, + WGL_SWAP_UNDERLAY4 = 0x80000, + WGL_SWAP_UNDERLAY5 = 0x100000, + WGL_SWAP_UNDERLAY6 = 0x200000, + WGL_SWAP_UNDERLAY7 = 0x400000, + WGL_SWAP_UNDERLAY8 = 0x800000, + WGL_SWAP_UNDERLAY9 = 0x1000000, + WGL_SWAP_UNDERLAY10 = 0x2000000, + WGL_SWAP_UNDERLAY11 = 0x4000000, + WGL_SWAP_UNDERLAY12 = 0x8000000, + WGL_SWAP_UNDERLAY13 = 0x10000000, + WGL_SWAP_UNDERLAY14 = 0x20000000, + WGL_SWAP_UNDERLAY15 = 0x40000000; + +const AC_SRC_OVER = 0x00; +const AC_SRC_ALPHA = 0x01; + +// ??? +const AC_SRC_NO_PREMULT_ALPHA = 0x01; +const AC_SRC_NO_ALPHA = 0x02; +const AC_DST_NO_PREMULT_ALPHA = 0x10; +const AC_DST_NO_ALPHA = 0x20; + +const LAYOUT_RTL = 1; +const LAYOUT_BTT = 2; +const LAYOUT_VBH = 4; +const LAYOUT_BITMAPORIENTATIONPRESERVED = 8; + +const CS_ENABLE = 0x00000001; +const CS_DISABLE = 0x00000002; +const CS_DELETE_TRANSFORM = 0x00000003; + +static if (_WIN32_WINNT > 0x500) { + const GRADIENT_FILL_RECT_H=0x00; + const GRADIENT_FILL_RECT_V=0x01; + const GRADIENT_FILL_TRIANGLE=0x02; + const GRADIENT_FILL_OP_FLAG=0xff; + const COLORMATCHTOTARGET_EMBEDED=0x00000001; + const CREATECOLORSPACE_EMBEDED=0x00000001; + const SETICMPROFILE_EMBEDED=0x00000001; +} + +// DISPLAY_DEVICE.StateFlags +const DWORD + DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001, + DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002, + DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004, + DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008, + DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010, + DISPLAY_DEVICE_REMOVABLE = 0x00000020, + DISPLAY_DEVICE_DISCONNECT = 0x02000000, + DISPLAY_DEVICE_REMOTE = 0x04000000, + DISPLAY_DEVICE_MODESPRUNED = 0x08000000; + +/* Child device state */ +const DWORD + DISPLAY_DEVICE_ACTIVE = 0x00000001, + DISPLAY_DEVICE_ATTACHED = 0x00000002; + +static if (_WIN32_WINNT >= 0x500) { + const GGI_MARK_NONEXISTING_GLYPHS = 1; +} + +// ---------- +// STRUCTS +// ---------- + +struct ABC { + int abcA; + UINT abcB; + int abcC; +} +alias ABC* PABC, NPABC, LPABC; + +struct ABCFLOAT { + FLOAT abcfA; + FLOAT abcfB; + FLOAT abcfC; +} +alias ABCFLOAT* PABCFLOAT, NPABCFLOAT, LPABCFLOAT; + +struct BITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; +} +alias BITMAP* PBITMAP, NPBITMAP, LPBITMAP; + +struct BITMAPCOREHEADER { + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; +} +alias BITMAPCOREHEADER* PBITMAPCOREHEADER, LPBITMAPCOREHEADER; + +align(1): +struct RGBTRIPLE { + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; +} +alias RGBTRIPLE* LPRGBTRIPLE; + +align(2): +struct BITMAPFILEHEADER { +align(2): + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; +} +alias BITMAPFILEHEADER* LPBITMAPFILEHEADER, PBITMAPFILEHEADER; + +align: + +struct BITMAPCOREINFO { + BITMAPCOREHEADER bmciHeader; + RGBTRIPLE[1] bmciColors; +} +alias BITMAPCOREINFO* LPBITMAPCOREINFO, PBITMAPCOREINFO; + +struct BITMAPINFOHEADER { + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} + +alias BITMAPINFOHEADER* LPBITMAPINFOHEADER, PBITMAPINFOHEADER; + +struct RGBQUAD { + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; +}; +alias RGBQUAD* LPRGBQUAD; + +struct BITMAPINFO { + BITMAPINFOHEADER bmiHeader; + RGBQUAD[1] bmiColors; +}; +alias BITMAPINFO* PBITMAPINFO, LPBITMAPINFO; + +alias int FXPT16DOT16; +alias int* LPFXPT16DOT16; +alias int FXPT2DOT30; +alias int* LPFXPT2DOT30; + +struct CIEXYZ { + FXPT2DOT30 ciexyzX; + FXPT2DOT30 ciexyzY; + FXPT2DOT30 ciexyzZ; +} +alias CIEXYZ* LPCIEXYZ; + +struct CIEXYZTRIPLE { + CIEXYZ ciexyzRed; + CIEXYZ ciexyzGreen; + CIEXYZ ciexyzBlue; +} +alias CIEXYZTRIPLE* LPCIEXYZTRIPLE; + +struct BITMAPV4HEADER { + DWORD bV4Size; + LONG bV4Width; + LONG bV4Height; + WORD bV4Planes; + WORD bV4BitCount; + DWORD bV4V4Compression; + DWORD bV4SizeImage; + LONG bV4XPelsPerMeter; + LONG bV4YPelsPerMeter; + DWORD bV4ClrUsed; + DWORD bV4ClrImportant; + DWORD bV4RedMask; + DWORD bV4GreenMask; + DWORD bV4BlueMask; + DWORD bV4AlphaMask; + DWORD bV4CSType; + CIEXYZTRIPLE bV4Endpoints; + DWORD bV4GammaRed; + DWORD bV4GammaGreen; + DWORD bV4GammaBlue; +} +alias BITMAPV4HEADER* LPBITMAPV4HEADER, PBITMAPV4HEADER; + +struct BITMAPV5HEADER { + DWORD bV5Size; + LONG bV5Width; + LONG bV5Height; + WORD bV5Planes; + WORD bV5BitCount; + DWORD bV5Compression; + DWORD bV5SizeImage; + LONG bV5XPelsPerMeter; + LONG bV5YPelsPerMeter; + DWORD bV5ClrUsed; + DWORD bV5ClrImportant; + DWORD bV5RedMask; + DWORD bV5GreenMask; + DWORD bV5BlueMask; + DWORD bV5AlphaMask; + DWORD bV5CSType; + CIEXYZTRIPLE bV5Endpoints; + DWORD bV5GammaRed; + DWORD bV5GammaGreen; + DWORD bV5GammaBlue; + DWORD bV5Intent; + DWORD bV5ProfileData; + DWORD bV5ProfileSize; + DWORD bV5Reserved; +} +alias BITMAPV5HEADER* LPBITMAPV5HEADER, PBITMAPV5HEADER; + +struct FONTSIGNATURE { + DWORD[4] fsUsb; + DWORD[2] fsCsb; +} +alias FONTSIGNATURE* PFONTSIGNATURE, LPFONTSIGNATURE; + +struct CHARSETINFO { + UINT ciCharset; + UINT ciACP; + FONTSIGNATURE fs; +} +alias CHARSETINFO* PCHARSETINFO, NPCHARSETINFO, LPCHARSETINFO; + +struct COLORADJUSTMENT { + WORD caSize; + WORD caFlags; + WORD caIlluminantIndex; + WORD caRedGamma; + WORD caGreenGamma; + WORD caBlueGamma; + WORD caReferenceBlack; + WORD caReferenceWhite; + SHORT caContrast; + SHORT caBrightness; + SHORT caColorfulness; + SHORT caRedGreenTint; +} +alias COLORADJUSTMENT* PCOLORADJUSTMENT, LPCOLORADJUSTMENT; + +struct DEVMODEA { + BYTE[CCHDEVICENAME] dmDeviceName; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union { + struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } + struct { + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } + } + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE[CCHFORMNAME] dmFormName; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union { + DWORD dmDisplayFlags; + DWORD dmNup; + } + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; +} +alias DEVMODEA* PDEVMODEA, NPDEVMODEA, LPDEVMODEA; + +struct DEVMODEW { + WCHAR[CCHDEVICENAME] dmDeviceName; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union { + struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } + struct { + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } + } + + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR[CCHFORMNAME] dmFormName; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union { + DWORD dmDisplayFlags; + DWORD dmNup; + } + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; +} +alias DEVMODEW* PDEVMODEW, NPDEVMODEW, LPDEVMODEW; + +/* + * Information about output options + */ +struct PSFEATURE_OUTPUT { + BOOL bPageIndependent; + BOOL bSetPageDevice; +} +alias PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT; + +/* + * Information about custom paper size + */ +struct PSFEATURE_CUSTPAPER { + LONG lOrientation; + LONG lWidth; + LONG lHeight; + LONG lWidthOffset; + LONG lHeightOffset; +} +alias PSFEATURE_CUSTPAPER* PPSFEATURE_CUSTPAPER; + +struct DIBSECTION { + BITMAP dsBm; + BITMAPINFOHEADER dsBmih; + DWORD[3] dsBitfields; + HANDLE dshSection; + DWORD dsOffset; +} +alias DIBSECTION* PDIBSECTION; + +struct DOCINFOA { + int cbSize = DOCINFOA.sizeof; + LPCSTR lpszDocName; + LPCSTR lpszOutput; + LPCSTR lpszDatatype; + DWORD fwType; +} +alias DOCINFOA* LPDOCINFOA; + +struct DOCINFOW { + int cbSize = DOCINFOW.sizeof; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; + LPCWSTR lpszDatatype; + DWORD fwType; +} +alias DOCINFOW* LPDOCINFOW; + + +struct PANOSE { + BYTE bFamilyType; + BYTE bSerifStyle; + BYTE bWeight; + BYTE bProportion; + BYTE bContrast; + BYTE bStrokeVariation; + BYTE bArmStyle; + BYTE bLetterform; + BYTE bMidline; + BYTE bXHeight; +} +alias PANOSE* LPPANOSE; + +struct LOGFONTA { + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + CHAR[LF_FACESIZE] lfFaceName; +} +alias LOGFONTA* PLOGFONTA, NPLOGFONTA, LPLOGFONTA; + +struct LOGFONTW { + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + WCHAR[LF_FACESIZE] lfFaceName; +} +alias LOGFONTW* PLOGFONTW, NPLOGFONTW, LPLOGFONTW; + +struct EXTLOGFONTA { + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE[ELF_VENDOR_SIZE] elfVendorId; + DWORD elfCulture; + PANOSE elfPanose; +} +alias EXTLOGFONTA* PEXTLOGFONTA, NPEXTLOGFONTA, LPEXTLOGFONTA; + +struct EXTLOGFONTW { + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE[ELF_VENDOR_SIZE] elfVendorId; + DWORD elfCulture; + PANOSE elfPanose; +} +alias EXTLOGFONTW* PEXTLOGFONTW, NPEXTLOGFONTW, LPEXTLOGFONTW; + +struct LOGPEN { + UINT lopnStyle; + POINT lopnWidth; + COLORREF lopnColor; +} +alias LOGPEN* PLOGPEN, NPLOGPEN, LPLOGPEN; + +// ---------------------- EMR ------------ + +struct EMR { + DWORD iType; + DWORD nSize; +} +alias EMR* PEMR; + +struct EMRANGLEARC { + EMR emr; + POINTL ptlCenter; + DWORD nRadius; + FLOAT eStartAngle; + FLOAT eSweepAngle; +} +alias EMRANGLEARC* PEMRANGLEARC; + +struct EMRARC { + EMR emr; + RECTL rclBox; + POINTL ptlStart; + POINTL ptlEnd; +} +alias EMRARC* PEMRARC; +alias TypeDef!(EMRARC) EMRARCTO; +alias EMRARCTO* PEMRARCTO; +alias TypeDef!(EMRARC) EMRCHORD; +alias EMRCHORD* PEMRCHORD; +alias TypeDef!(EMRARC) EMRPIE; +alias EMRPIE* PEMRPIE; + +struct XFORM { + FLOAT eM11; + FLOAT eM12; + FLOAT eM21; + FLOAT eM22; + FLOAT eDx; + FLOAT eDy; +} +alias XFORM* PXFORM, LPXFORM; + +struct EMRBITBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; +} +alias EMRBITBLT* PEMRBITBLT; + +struct LOGBRUSH { + UINT lbStyle; + COLORREF lbColor; + LONG lbHatch; +} +alias TypeDef!(LOGBRUSH) PATTERN; +alias LOGBRUSH* PLOGBRUSH, NPLOGBRUSH, LPLOGBRUSH; +alias PATTERN* PPATTERN, NPPATTERN, LPPATTERN; + +struct LOGBRUSH32 { + UINT lbStyle; + COLORREF lbColor; + ULONG lbHatch; +} +alias LOGBRUSH32* PLOGBRUSH32, NPLOGBRUSH32, LPLOGBRUSH32; + +struct EMRCREATEBRUSHINDIRECT { + EMR emr; + DWORD ihBrush; + LOGBRUSH32 lb; +} +alias EMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT; + +alias LONG LCSCSTYPE, LCSGAMUTMATCH; + +struct LOGCOLORSPACEA { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + CHAR[MAX_PATH] lcsFilename; +} +alias LOGCOLORSPACEA* LPLOGCOLORSPACEA; + +struct LOGCOLORSPACEW { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + WCHAR[MAX_PATH] lcsFilename; +} +alias LOGCOLORSPACEW* LPLOGCOLORSPACEW; + +alias USHORT COLOR16; +struct TRIVERTEX { + LONG x; + LONG y; + COLOR16 Red; + COLOR16 Green; + COLOR16 Blue; + COLOR16 Alpha; +} +alias TRIVERTEX* PTRIVERTEX, LPTRIVERTEX; + +struct EMRGLSRECORD { + EMR emr; + DWORD cbData; + BYTE[1] Data; +} +alias EMRGLSRECORD* PEMRGLSRECORD; + +struct EMRGLSBOUNDEDRECORD { + EMR emr; + RECTL rclBounds; + DWORD cbData; + BYTE[1] Data; +} +alias EMRGLSBOUNDEDRECORD* PEMRGLSBOUNDEDRECORD; + +struct EMRPIXELFORMAT { + EMR emr; + PIXELFORMATDESCRIPTOR pfd; +} +alias EMRPIXELFORMAT* PEMRPIXELFORMAT; + +struct EMRCREATECOLORSPACE { + EMR emr; + DWORD ihCS; + LOGCOLORSPACE lcs; +} +alias EMRCREATECOLORSPACE* PEMRCREATECOLORSPACE; + +struct EMRSETCOLORSPACE { + EMR emr; + DWORD ihCS; +} +alias EMRSETCOLORSPACE* PEMRSETCOLORSPACE; +alias TypeDef!(EMRSETCOLORSPACE) EMRSELECTCOLORSPACE; +alias EMRSELECTCOLORSPACE* PEMRSELECTCOLORSPACE; +alias TypeDef!(EMRSETCOLORSPACE) EMRDELETECOLORSPACE; +alias EMRDELETECOLORSPACE* PEMRDELETECOLORSPACE; + +static if (_WIN32_WINNT >= 0x500) { + + struct EMREXTESCAPE { + EMR emr; + INT iEscape; + INT cbEscData; + BYTE[1] EscData; + } + alias EMREXTESCAPE* PEMREXTESCAPE; + alias TypeDef!(EMREXTESCAPE) EMRDRAWESCAPE; + alias EMRDRAWESCAPE* PEMRDRAWESCAPE; + + struct EMRNAMEDESCAPE { + EMR emr; + INT iEscape; + INT cbDriver; + INT cbEscData; + BYTE[1] EscData; + } + alias EMRNAMEDESCAPE* PEMRNAMEDESCAPE; + + struct EMRSETICMPROFILE { + EMR emr; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE[1] Data; + } + alias EMRSETICMPROFILE* PEMRSETICMPROFILE; + alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEA; + alias EMRSETICMPROFILEA* PEMRSETICMPROFILEA; + alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEW; + alias EMRSETICMPROFILEW* PEMRSETICMPROFILEW; + + struct EMRCREATECOLORSPACEW { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEW lcs; + DWORD dwFlags; + DWORD cbData; + BYTE[1] Data; + } + alias EMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW; + + struct EMRCOLORMATCHTOTARGET { + EMR emr; + DWORD dwAction; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE[1] Data; + } + alias EMRCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET; + + struct EMRCOLORCORRECTPALETTE { + EMR emr; + DWORD ihPalette; + DWORD nFirstEntry; + DWORD nPalEntries; + DWORD nReserved; + } + alias EMRCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE; + + struct EMRALPHABLEND { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; + } + alias EMRALPHABLEND* PEMRALPHABLEND; + + struct EMRGRADIENTFILL { + EMR emr; + RECTL rclBounds; + DWORD nVer; + DWORD nTri; + ULONG ulMode; + TRIVERTEX[1] Ver; + } + alias EMRGRADIENTFILL* PEMRGRADIENTFILL; + + struct EMRTRANSPARENTBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; + } + alias EMRTRANSPARENTBLT* PEMRTRANSPARENTBLT; +} + +struct EMRCREATEDIBPATTERNBRUSHPT { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} +alias EMRCREATEDIBPATTERNBRUSHPT* PEMRCREATEDIBPATTERNBRUSHPT; + +struct EMRCREATEMONOBRUSH { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} +alias EMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH; + +struct PALETTEENTRY { + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; +} +alias PALETTEENTRY* PPALETTEENTRY, LPPALETTEENTRY; + +struct LOGPALETTE { + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY[1] palPalEntry; +} +alias LOGPALETTE* PLOGPALETTE, NPLOGPALETTE, LPLOGPALETTE; + +struct EMRCREATEPALETTE { + EMR emr; + DWORD ihPal; + LOGPALETTE lgpl; +} +alias EMRCREATEPALETTE* PEMRCREATEPALETTE; + +struct EMRCREATEPEN { + EMR emr; + DWORD ihPen; + LOGPEN lopn; +} +alias EMRCREATEPEN* PEMRCREATEPEN; + +struct EMRELLIPSE { + EMR emr; + RECTL rclBox; +} +alias EMRELLIPSE* PEMRELLIPSE; + +alias TypeDef!(EMRELLIPSE) EMRRECTANGLE; +alias EMRRECTANGLE* PEMRRECTANGLE; + +struct EMREOF { + EMR emr; + DWORD nPalEntries; + DWORD offPalEntries; + DWORD nSizeLast; +} +alias EMREOF* PEMREOF; + +struct EMREXCLUDECLIPRECT { + EMR emr; + RECTL rclClip; +} +alias EMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT; +alias TypeDef!(EMREXCLUDECLIPRECT) EMRINTERSECTCLIPRECT; +alias EMRINTERSECTCLIPRECT* PEMRINTERSECTCLIPRECT; + +struct EMREXTCREATEFONTINDIRECTW { + EMR emr; + DWORD ihFont; + EXTLOGFONTW elfw; +} +alias EMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW; + +struct EXTLOGPEN { + UINT elpPenStyle; + UINT elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + LONG elpHatch; + DWORD elpNumEntries; + DWORD[1] elpStyleEntry; +} +alias EXTLOGPEN* PEXTLOGPEN, NPEXTLOGPEN, LPEXTLOGPEN; + +struct EMREXTCREATEPEN { + EMR emr; + DWORD ihPen; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; + EXTLOGPEN elp; +} +alias EMREXTCREATEPEN* PEMREXTCREATEPEN; + +struct EMREXTFLOODFILL { + EMR emr; + POINTL ptlStart; + COLORREF crColor; + DWORD iMode; +} +alias EMREXTFLOODFILL* PEMREXTFLOODFILL; + +struct EMREXTSELECTCLIPRGN { + EMR emr; + DWORD cbRgnData; + DWORD iMode; + BYTE [1]RgnData; +} +alias EMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN; + +struct EMRTEXT { + POINTL ptlReference; + DWORD nChars; + DWORD offString; + DWORD fOptions; + RECTL rcl; + DWORD offDx; +} +alias EMRTEXT* PEMRTEXT; + +struct EMREXTTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + EMRTEXT emrtext; +} +alias EMREXTTEXTOUTA* PEMREXTTEXTOUTA; +alias TypeDef!(EMREXTTEXTOUTA) EMREXTTEXTOUTW; +alias EMREXTTEXTOUTW* PEMREXTTEXTOUTW; + +struct EMRFILLPATH { + EMR emr; + RECTL rclBounds; +} +alias EMRFILLPATH* PEMRFILLPATH; + +alias TypeDef!(EMRFILLPATH) EMRSTROKEANDFILLPATH; +alias EMRSTROKEANDFILLPATH* PEMRSTROKEANDFILLPATH; + +alias TypeDef!(EMRFILLPATH) EMRSTROKEPATH; +alias EMRSTROKEPATH* PEMRSTROKEPATH; + +struct EMRFILLRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + BYTE[1] RgnData; +} +alias EMRFILLRGN* PEMRFILLRGN; + +struct EMRFORMAT { + DWORD dSignature; + DWORD nVersion; + DWORD cbData; + DWORD offData; +} +alias EMRFORMAT* PEMRFORMAT; + +struct EMRFRAMERGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + SIZEL szlStroke; + BYTE[1] RgnData; +} +alias EMRFRAMERGN* PEMRFRAMERGN; + +struct EMRGDICOMMENT { + EMR emr; + DWORD cbData; + BYTE[1] Data; +} +alias EMRGDICOMMENT* PEMRGDICOMMENT; + +struct EMRINVERTRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + BYTE[1] RgnData; +} +alias EMRINVERTRGN* PEMRINVERTRGN; +alias TypeDef!(EMRINVERTRGN) EMRPAINTRGN; +alias EMRPAINTRGN* PEMRPAINTRGN; + +struct EMRLINETO { + EMR emr; + POINTL ptl; +} +alias EMRLINETO* PEMRLINETO; +alias TypeDef!(EMRLINETO) EMRMOVETOEX; +alias EMRMOVETOEX* PEMRMOVETOEX; + +struct EMRMASKBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG xMask; + LONG yMask; + DWORD iUsageMask; + DWORD offBmiMask; + DWORD cbBmiMask; + DWORD offBitsMask; + DWORD cbBitsMask; +} +alias EMRMASKBLT* PEMRMASKBLT; + +struct EMRMODIFYWORLDTRANSFORM { + EMR emr; + XFORM xform; + DWORD iMode; +} +alias EMRMODIFYWORLDTRANSFORM* PEMRMODIFYWORLDTRANSFORM; + +struct EMROFFSETCLIPRGN { + EMR emr; + POINTL ptlOffset; +} +alias EMROFFSETCLIPRGN* PEMROFFSETCLIPRGN; + +struct EMRPLGBLT { + EMR emr; + RECTL rclBounds; + POINTL[3] aptlDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG xMask; + LONG yMask; + DWORD iUsageMask; + DWORD offBmiMask; + DWORD cbBmiMask; + DWORD offBitsMask; + DWORD cbBitsMask; +} +alias EMRPLGBLT* PEMRPLGBLT; + +struct EMRPOLYDRAW { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL[1] aptl; + BYTE[1] abTypes; +} +alias EMRPOLYDRAW* PEMRPOLYDRAW; + +struct EMRPOLYDRAW16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS[1] apts; + BYTE[1] abTypes; +} +alias EMRPOLYDRAW16* PEMRPOLYDRAW16; + +struct EMRPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL[1] aptl; +} +alias EMRPOLYLINE* PEMRPOLYLINE; +alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIER; +alias EMRPOLYBEZIER* PEMRPOLYBEZIER; +alias TypeDef!(EMRPOLYLINE) EMRPOLYGON; +alias EMRPOLYGON* PEMRPOLYGON; +alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIERTO; +alias EMRPOLYBEZIERTO* PEMRPOLYBEZIERTO; +alias TypeDef!(EMRPOLYLINE) EMRPOLYLINETO; +alias EMRPOLYLINETO* PEMRPOLYLINETO; + +struct EMRPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS[1] apts; +} +alias EMRPOLYLINE16* PEMRPOLYLINE16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIER16; +alias EMRPOLYBEZIER16* PEMRPOLYBEZIER16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYGON16; +alias EMRPOLYGON16* PEMRPOLYGON16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIERTO16; +alias EMRPOLYBEZIERTO16* PEMRPOLYBEZIERTO16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYLINETO16; +alias EMRPOLYLINETO16* PEMRPOLYLINETO16; + +struct EMRPOLYPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cptl; + DWORD[1] aPolyCounts; + POINTL[1] aptl; +} +alias EMRPOLYPOLYLINE* PEMRPOLYPOLYLINE; +alias TypeDef!(EMRPOLYPOLYLINE) EMRPOLYPOLYGON; +alias EMRPOLYPOLYGON* PEMRPOLYPOLYGON; + +struct EMRPOLYPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cpts; + DWORD[1] aPolyCounts; + POINTS[1] apts; +} +alias EMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16; +alias TypeDef!(EMRPOLYPOLYLINE16) EMRPOLYPOLYGON16; +alias EMRPOLYPOLYGON16* PEMRPOLYPOLYGON16; + +struct EMRPOLYTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + LONG cStrings; + EMRTEXT[1] aemrtext; +} +alias EMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA; +alias TypeDef!(EMRPOLYTEXTOUTA) EMRPOLYTEXTOUTW; +alias EMRPOLYTEXTOUTW* PEMRPOLYTEXTOUTW; + +struct EMRRESIZEPALETTE { + EMR emr; + DWORD ihPal; + DWORD cEntries; +} +alias EMRRESIZEPALETTE* PEMRRESIZEPALETTE; + +struct EMRRESTOREDC { + EMR emr; + LONG iRelative; +} +alias EMRRESTOREDC* PEMRRESTOREDC; + +struct EMRROUNDRECT { + EMR emr; + RECTL rclBox; + SIZEL szlCorner; +} +alias EMRROUNDRECT* PEMRROUNDRECT; + +struct EMRSCALEVIEWPORTEXTEX { + EMR emr; + LONG xNum; + LONG xDenom; + LONG yNum; + LONG yDenom; +} +alias EMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX; +alias TypeDef!(EMRSCALEVIEWPORTEXTEX) EMRSCALEWINDOWEXTEX; +alias EMRSCALEWINDOWEXTEX* PEMRSCALEWINDOWEXTEX; + +struct EMRSELECTOBJECT { + EMR emr; + DWORD ihObject; +} +alias EMRSELECTOBJECT* PEMRSELECTOBJECT; +alias TypeDef!(EMRSELECTOBJECT) EMRDELETEOBJECT; +alias EMRDELETEOBJECT* PEMRDELETEOBJECT; + +struct EMRSELECTPALETTE { + EMR emr; + DWORD ihPal; +} +alias EMRSELECTPALETTE* PEMRSELECTPALETTE; + +struct EMRSETARCDIRECTION { + EMR emr; + DWORD iArcDirection; +} +alias EMRSETARCDIRECTION* PEMRSETARCDIRECTION; + +struct EMRSETTEXTCOLOR { + EMR emr; + COLORREF crColor; +} +alias EMRSETTEXTCOLOR* PEMRSETTEXTCOLOR; +alias TypeDef!(EMRSETTEXTCOLOR) EMRSETBKCOLOR; +alias EMRSETBKCOLOR* PEMRSETBKCOLOR; + +struct EMRSETCOLORADJUSTMENT { + EMR emr; + COLORADJUSTMENT ColorAdjustment; +} +alias EMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT; + +struct EMRSETDIBITSTODEVICE { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + DWORD iUsageSrc; + DWORD iStartScan; + DWORD cScans; +} +alias EMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE; + +struct EMRSETMAPPERFLAGS { + EMR emr; + DWORD dwFlags; +} +alias EMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS; + +struct EMRSETMITERLIMIT { + EMR emr; + FLOAT eMiterLimit; +} +alias EMRSETMITERLIMIT* PEMRSETMITERLIMIT; + +struct EMRSETPALETTEENTRIES { + EMR emr; + DWORD ihPal; + DWORD iStart; + DWORD cEntries; + PALETTEENTRY[1] aPalEntries; +} +alias EMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES; + +struct EMRSETPIXELV { + EMR emr; + POINTL ptlPixel; + COLORREF crColor; +} +alias EMRSETPIXELV* PEMRSETPIXELV; + +struct EMRSETVIEWPORTEXTEX { + EMR emr; + SIZEL szlExtent; +} +alias EMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX; +alias TypeDef!(EMRSETVIEWPORTEXTEX) EMRSETWINDOWEXTEX; +alias EMRSETWINDOWEXTEX* PEMRSETWINDOWEXTEX; + +struct EMRSETVIEWPORTORGEX { + EMR emr; + POINTL ptlOrigin; +} +alias EMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX; +alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETWINDOWORGEX; +alias EMRSETWINDOWORGEX* PEMRSETWINDOWORGEX; +alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETBRUSHORGEX; +alias EMRSETBRUSHORGEX* PEMRSETBRUSHORGEX; + +struct EMRSETWORLDTRANSFORM { + EMR emr; + XFORM xform; +} +alias EMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM; + +struct EMRSTRETCHBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; +} +alias EMRSTRETCHBLT* PEMRSTRETCHBLT; + +struct EMRSTRETCHDIBITS { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + DWORD iUsageSrc; + DWORD dwRop; + LONG cxDest; + LONG cyDest; +} +alias EMRSTRETCHDIBITS* PEMRSTRETCHDIBITS; + +struct EMRABORTPATH { + EMR emr; +} +alias EMRABORTPATH* PEMRABORTPATH; +alias TypeDef!(EMRABORTPATH) EMRBEGINPATH; +alias EMRBEGINPATH* PEMRBEGINPATH; +alias TypeDef!(EMRABORTPATH) EMRENDPATH; +alias EMRENDPATH* PEMRENDPATH; +alias TypeDef!(EMRABORTPATH) EMRCLOSEFIGURE; +alias EMRCLOSEFIGURE* PEMRCLOSEFIGURE; +alias TypeDef!(EMRABORTPATH) EMRFLATTENPATH; +alias EMRFLATTENPATH* PEMRFLATTENPATH; +alias TypeDef!(EMRABORTPATH) EMRWIDENPATH; +alias EMRWIDENPATH* PEMRWIDENPATH; +alias TypeDef!(EMRABORTPATH) EMRSETMETARGN; +alias EMRSETMETARGN* PEMRSETMETARGN; +alias TypeDef!(EMRABORTPATH) EMRSAVEDC; +alias EMRSAVEDC* PEMRSAVEDC; +alias TypeDef!(EMRABORTPATH) EMRREALIZEPALETTE; +alias EMRREALIZEPALETTE* PEMRREALIZEPALETTE; + +struct EMRSELECTCLIPPATH { + EMR emr; + DWORD iMode; +} +alias EMRSELECTCLIPPATH* PEMRSELECTCLIPPATH; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETBKMODE; +alias EMRSETBKMODE* PEMRSETBKMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETMAPMODE; +alias EMRSETMAPMODE* PEMRSETMAPMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETPOLYFILLMODE; +alias EMRSETPOLYFILLMODE* PEMRSETPOLYFILLMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETROP2; +alias EMRSETROP2* PEMRSETROP2; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETSTRETCHBLTMODE; +alias EMRSETSTRETCHBLTMODE* PEMRSETSTRETCHBLTMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETICMMODE; +alias EMRSETICMMODE* PEMRSETICMMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETTEXTALIGN; +alias EMRSETTEXTALIGN* PEMRSETTEXTALIGN; +alias TypeDef!(EMRSELECTCLIPPATH) EMRENABLEICM; +alias EMRENABLEICM* PEMRENABLEICM; +static if (_WIN32_WINNT >= 0x500) { + alias TypeDef!(EMRSELECTCLIPPATH) EMRSETLAYOUT; + alias EMRSETLAYOUT* PEMRSETLAYOUT; +} + +align(2): +struct METAHEADER { +align(2): + WORD mtType; + WORD mtHeaderSize; + WORD mtVersion; + DWORD mtSize; + WORD mtNoObjects; + DWORD mtMaxRecord; + WORD mtNoParameters; +} +alias METAHEADER* PMETAHEADER; +alias METAHEADER* LPMETAHEADER; + +align: + +struct ENHMETAHEADER { + DWORD iType = EMR_HEADER; + DWORD nSize = ENHMETAHEADER.sizeof; + RECTL rclBounds; + RECTL rclFrame; + DWORD dSignature = ENHMETA_SIGNATURE; + DWORD nVersion; + DWORD nBytes; + DWORD nRecords; + WORD nHandles; + WORD sReserved; + DWORD nDescription; + DWORD offDescription; + DWORD nPalEntries; + SIZEL szlDevice; + SIZEL szlMillimeters; + DWORD cbPixelFormat; + DWORD offPixelFormat; + DWORD bOpenGL; + static if (_WIN32_WINNT >= 0x500) { + SIZEL szlMicrometers; + } +} +alias ENHMETAHEADER* PENHMETAHEADER, LPENHMETAHEADER; + +struct METARECORD { + DWORD rdSize; + WORD rdFunction; + WORD[1] rdParm; +} +alias METARECORD* PMETARECORD; +alias METARECORD* LPMETARECORD; + +struct ENHMETARECORD { + DWORD iType; + DWORD nSize; + DWORD[1] dParm; +} +alias ENHMETARECORD* PENHMETARECORD, LPENHMETARECORD; + +// --- + +struct HANDLETABLE { + HGDIOBJ[1] objectHandle; +} +alias HANDLETABLE* PHANDLETABLE, LPHANDLETABLE; + +struct TEXTMETRICA { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} +alias TEXTMETRICA* PTEXTMETRICA, NPTEXTMETRICA, LPTEXTMETRICA; + +struct TEXTMETRICW { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} +alias TEXTMETRICW* PTEXTMETRICW, NPTEXTMETRICW, LPTEXTMETRICW; + +struct RGNDATAHEADER { + DWORD dwSize; + DWORD iType; + DWORD nCount; + DWORD nRgnSize; + RECT rcBound; +} +alias RGNDATAHEADER* PRGNDATAHEADER; + +struct RGNDATA { + RGNDATAHEADER rdh; + char[1] Buffer; +} +alias RGNDATA* PRGNDATA, NPRGNDATA, LPRGNDATA; + +/* for GetRandomRgn */ +const SYSRGN=4; +struct GCP_RESULTSA { + DWORD lStructSize; + LPSTR lpOutString; + UINT* lpOrder; + INT* lpDx; + INT* lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; +} +alias GCP_RESULTSA* LPGCP_RESULTSA; + +struct GCP_RESULTSW { + DWORD lStructSize; + LPWSTR lpOutString; + UINT* lpOrder; + INT* lpDx; + INT* lpCaretPos; + LPWSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; +} +alias GCP_RESULTSW* LPGCP_RESULTSW; + +struct GLYPHMETRICS { + UINT gmBlackBoxX; + UINT gmBlackBoxY; + POINT gmptGlyphOrigin; + short gmCellIncX; + short gmCellIncY; +} +alias GLYPHMETRICS* LPGLYPHMETRICS; + +static if (_WIN32_WINNT >= 0x500) { + struct WCRANGE { + WCHAR wcLow; + USHORT cGlyphs; + } + alias WCRANGE* PWCRANGE, LPWCRANGE; + + struct GLYPHSET { + DWORD cbThis; + DWORD flAccel; + DWORD cGlyphsSupported; + DWORD cRanges; + WCRANGE[1] ranges; + } + alias GLYPHSET* PGLYPHSET, LPGLYPHSET; + + const DWORD GS_8BIT_INDICES = 0x00000001; +} + +struct KERNINGPAIR { + WORD wFirst; + WORD wSecond; + int iKernAmount; +} +alias KERNINGPAIR* LPKERNINGPAIR; + +struct FIXED { + WORD fract; + short value; +} + +struct MAT2 { + FIXED eM11; + FIXED eM12; + FIXED eM21; + FIXED eM22; +} +alias MAT2* LPMAT2; + +struct OUTLINETEXTMETRICA { + UINT otmSize; + TEXTMETRICA otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; +} +alias OUTLINETEXTMETRICA* POUTLINETEXTMETRICA, NPOUTLINETEXTMETRICA, LPOUTLINETEXTMETRICA; + +struct OUTLINETEXTMETRICW { + UINT otmSize; + TEXTMETRICW otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; +} +alias OUTLINETEXTMETRICW* POUTLINETEXTMETRICW, NPOUTLINETEXTMETRICW, LPOUTLINETEXTMETRICW; + +struct RASTERIZER_STATUS { + short nSize; + short wFlags; + short nLanguageID; +} +alias RASTERIZER_STATUS* LPRASTERIZER_STATUS; + +struct POLYTEXTA { + int x; + int y; + UINT n; + LPCSTR lpstr; + UINT uiFlags; + RECT rcl; + int* pdx; +} +alias POLYTEXTA* PPOLYTEXTA, NPPOLYTEXTA, LPPOLYTEXTA; + +struct POLYTEXTW { + int x; + int y; + UINT n; + LPCWSTR lpstr; + UINT uiFlags; + RECT rcl; + int* pdx; +} +alias POLYTEXTW* PPOLYTEXTW, NPPOLYTEXTW, LPPOLYTEXTW; + +struct PIXELFORMATDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerType; + BYTE bReserved; + DWORD dwLayerMask; + DWORD dwVisibleMask; + DWORD dwDamageMask; +} +alias PIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR, LPPIXELFORMATDESCRIPTOR; + +struct METAFILEPICT { + LONG mm; + LONG xExt; + LONG yExt; + HMETAFILE hMF; +} +alias METAFILEPICT* LPMETAFILEPICT; + +struct LOCALESIGNATURE { + DWORD[4] lsUsb; + DWORD[2] lsCsbDefault; + DWORD[2] lsCsbSupported; +} +alias LOCALESIGNATURE* PLOCALESIGNATURE, LPLOCALESIGNATURE; + +alias LONG LCSTYPE; /* What this for? */ + +align(4): +struct NEWTEXTMETRICA { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; +} +alias NEWTEXTMETRICA* PNEWTEXTMETRICA, NPNEWTEXTMETRICA, LPNEWTEXTMETRICA; + +struct NEWTEXTMETRICW { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; +} +alias NEWTEXTMETRICW* PNEWTEXTMETRICW, NPNEWTEXTMETRICW, LPNEWTEXTMETRICW; + +align: +struct NEWTEXTMETRICEXA { + NEWTEXTMETRICA ntmTm; + FONTSIGNATURE ntmFontSig; +} + +struct NEWTEXTMETRICEXW { + NEWTEXTMETRICW ntmTm; + FONTSIGNATURE ntmFontSig; +} + +struct PELARRAY { + LONG paXCount; + LONG paYCount; + LONG paXExt; + LONG paYExt; + BYTE paRGBs; +} +alias PELARRAY* PPELARRAY, NPPELARRAY, LPPELARRAY; + +struct ENUMLOGFONTA { + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; +} +alias ENUMLOGFONTA* LPENUMLOGFONTA; + +struct ENUMLOGFONTW { + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; +} +alias ENUMLOGFONTW* LPENUMLOGFONTW; + +struct ENUMLOGFONTEXA { + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; + BYTE[LF_FACESIZE] elfScript; +} +alias ENUMLOGFONTEXA* LPENUMLOGFONTEXA; + +struct ENUMLOGFONTEXW { + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; + WCHAR[LF_FACESIZE] elfScript; +} +alias ENUMLOGFONTEXW* LPENUMLOGFONTEXW; + +struct POINTFX { + FIXED x; + FIXED y; +} +alias POINTFX* LPPOINTFX; + +struct TTPOLYCURVE { + WORD wType; + WORD cpfx; + POINTFX[1] apfx; +} +alias TTPOLYCURVE* LPTTPOLYCURVE; + +struct TTPOLYGONHEADER { + DWORD cb; + DWORD dwType; + POINTFX pfxStart; +} +alias TTPOLYGONHEADER* LPTTPOLYGONHEADER; + +struct POINTFLOAT { + FLOAT x; + FLOAT y; +} +alias POINTFLOAT* PPOINTFLOAT; + +struct GLYPHMETRICSFLOAT { + FLOAT gmfBlackBoxX; + FLOAT gmfBlackBoxY; + POINTFLOAT gmfptGlyphOrigin; + FLOAT gmfCellIncX; + FLOAT gmfCellIncY; +} +alias GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT, LPGLYPHMETRICSFLOAT; + +struct LAYERPLANEDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerPlane; + BYTE bReserved; + COLORREF crTransparent; +} +alias LAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR, LPLAYERPLANEDESCRIPTOR; + +struct BLENDFUNCTION { + BYTE BlendOp; + BYTE BlendFlags; + BYTE SourceConstantAlpha; + BYTE AlphaFormat; +} +alias BLENDFUNCTION* PBLENDFUNCTION, LPBLENDFUNCTION; + +const MM_MAX_NUMAXES = 16; + +struct DESIGNVECTOR { + DWORD dvReserved; + DWORD dvNumAxes; + LONG[MM_MAX_NUMAXES] dvValues; +} +alias DESIGNVECTOR* PDESIGNVECTOR, LPDESIGNVECTOR; +const STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8); +const STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8); + +static if (_WIN32_WINNT >= 0x500) { + + const MM_MAX_AXES_NAMELEN = 16; + + struct AXISINFOA { + LONG axMinValue; + LONG axMaxValue; + BYTE[MM_MAX_AXES_NAMELEN] axAxisName; + } + alias AXISINFOA* PAXISINFOA, LPAXISINFOA; + + struct AXISINFOW { + LONG axMinValue; + LONG axMaxValue; + WCHAR[MM_MAX_AXES_NAMELEN] axAxisName; + } + alias AXISINFOW* PAXISINFOW, LPAXISINFOW; + + version (Unicode) { + alias AXISINFOW AXISINFO; + alias PAXISINFOW PAXISINFO; + alias LPAXISINFOW LPAXISINFO; + } + else { + alias AXISINFOA AXISINFO; + alias PAXISINFOA PAXISINFO; + alias LPAXISINFOA LPAXISINFO; + } + + struct AXESLISTA { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOA[MM_MAX_NUMAXES] axlAxisInfo; + } + alias AXESLISTA* PAXESLISTA, LPAXESLISTA; + + struct AXESLISTW { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOW[MM_MAX_NUMAXES] axlAxisInfo; + } + alias AXESLISTW* PAXESLISTW, LPAXESLISTW; + + version (Unicode) { + alias AXESLISTW AXESLIST; + alias PAXESLISTW PAXESLIST; + alias LPAXESLISTW LPAXESLIST; + } + else { + alias AXESLISTA AXESLIST; + alias PAXESLISTA PAXESLIST; + alias LPAXESLISTA LPAXESLIST; + } + + struct ENUMLOGFONTEXDVA { + ENUMLOGFONTEXA elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; + } + alias ENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA, LPENUMLOGFONTEXDVA; + + struct ENUMLOGFONTEXDVW { + ENUMLOGFONTEXW elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; + } + alias ENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW, LPENUMLOGFONTEXDVW; + + HFONT CreateFontIndirectExA(const(ENUMLOGFONTEXDVA)*); + HFONT CreateFontIndirectExW(const(ENUMLOGFONTEXDVW)*); + version (Unicode) + alias CreateFontIndirectExW CreateFontIndirectEx; + else + alias CreateFontIndirectExA CreateFontIndirectEx; + + struct ENUMTEXTMETRICA { + NEWTEXTMETRICEXA etmNewTextMetricEx; + AXESLISTA etmAxesList; + } + alias ENUMTEXTMETRICA* PENUMTEXTMETRICA, LPENUMTEXTMETRICA; + + struct ENUMTEXTMETRICW { + NEWTEXTMETRICEXW etmNewTextMetricEx; + AXESLISTW etmAxesList; + } + alias ENUMTEXTMETRICW* PENUMTEXTMETRICW, LPENUMTEXTMETRICW; + + version (Unicode) { + alias ENUMTEXTMETRICW ENUMTEXTMETRIC; + alias PENUMTEXTMETRICW PENUMTEXTMETRIC; + alias LPENUMTEXTMETRICW LPENUMTEXTMETRIC; + } + else { + alias ENUMTEXTMETRICA ENUMTEXTMETRIC; + alias PENUMTEXTMETRICA PENUMTEXTMETRIC; + alias LPENUMTEXTMETRICA LPENUMTEXTMETRIC; + } +} /* _WIN32_WINNT >= 0x500 */ + +struct GRADIENT_TRIANGLE { + ULONG Vertex1; + ULONG Vertex2; + ULONG Vertex3; +} +alias GRADIENT_TRIANGLE* PGRADIENT_TRIANGLE, LPGRADIENT_TRIANGLE; + +struct GRADIENT_RECT { + ULONG UpperLeft; + ULONG LowerRight; +} +alias GRADIENT_RECT* PGRADIENT_RECT, LPGRADIENT_RECT; + +struct DISPLAY_DEVICEA { + DWORD cb; + CHAR[32] DeviceName; + CHAR[128] DeviceString; + DWORD StateFlags; + CHAR[128] DeviceID; + CHAR[128] DeviceKey; +} +alias DISPLAY_DEVICEA* PDISPLAY_DEVICEA, LPDISPLAY_DEVICEA; + +struct DISPLAY_DEVICEW { + DWORD cb; + WCHAR[32] DeviceName; + WCHAR[128] DeviceString; + DWORD StateFlags; + WCHAR[128] DeviceID; + WCHAR[128] DeviceKey; +} +alias DISPLAY_DEVICEW* PDISPLAY_DEVICEW, LPDISPLAY_DEVICEW; + +struct DRAWPATRECT { + POINT ptPosition; + POINT ptSize; + WORD wStyle; + WORD wPattern; +} +alias DRAWPATRECT* PDRAWPATRECT; + +// --------- +// Callbacks + +alias BOOL function (HDC, int) ABORTPROC; +alias int function (HDC, HANDLETABLE*, METARECORD*, int, LPARAM) MFENUMPROC; +alias int function (HDC, HANDLETABLE*, const(ENHMETARECORD)*, int, LPARAM) ENHMFENUMPROC; +alias int function (const(LOGFONTA)*, const(TEXTMETRICA)*, DWORD, LPARAM) FONTENUMPROCA, OLDFONTENUMPROCA; +alias int function (const(LOGFONTW)*, const(TEXTMETRICW)*, DWORD, LPARAM) FONTENUMPROCW, OLDFONTENUMPROCW; +alias int function (LPSTR, LPARAM) ICMENUMPROCA; +alias int function (LPWSTR, LPARAM) ICMENUMPROCW; +alias void function (LPVOID, LPARAM) GOBJENUMPROC; +alias void function (int, int, LPARAM) LINEDDAPROC; +alias UINT function (HWND, HMODULE, LPDEVMODEA, LPSTR, LPSTR, LPDEVMODEA, LPSTR, UINT) LPFNDEVMODE; +alias DWORD function (LPSTR, LPSTR, UINT, LPSTR, LPDEVMODEA) LPFNDEVCAPS; + + +// --------- +// C Macros. +// FIXME: +//POINTS MAKEPOINTS(DWORD dwValue) #define MAKEPOINTS(l) (*((POINTS*)&(l))) + +DWORD MAKEROP4(DWORD fore, DWORD back) { + return ((back<<8) & 0xFF000000) | (fore); +} + +COLORREF CMYK(BYTE c, BYTE m, BYTE y, BYTE k) { + return cast(COLORREF)(k | (y << 8) | (m << 16) | (c << 24)); +} + +BYTE GetCValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 24); +} + +BYTE GetMValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 16); +} + +BYTE GetYValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 8); +} + +BYTE GetKValue(COLORREF cmyk) { + return cast(BYTE)cmyk; +} + +COLORREF RGB(BYTE r, BYTE g, BYTE b) { + return cast(COLORREF)(r | (g << 8) | (b << 16)); +} + +BYTE GetRValue(COLORREF c) { + return cast(BYTE)c; +} + +BYTE GetGValue(COLORREF c) { + return cast(BYTE)(c >> 8); +} + +BYTE GetBValue(COLORREF c) { + return cast(BYTE)(c >> 16); +} + +COLORREF PALETTEINDEX(WORD i) { + return 0x01000000 | cast(COLORREF) i; +} + +COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b) { + return 0x02000000|RGB(r, g, b); +} + +extern(Windows) { + int AbortDoc(HDC); + BOOL AbortPath(HDC); + int AddFontResourceA(LPCSTR); + int AddFontResourceW(LPCWSTR); + BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); + BOOL AnimatePalette(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); + BOOL Arc(HDC, int, int, int, int, int, int, int, int); + BOOL ArcTo(HDC, int, int, int, int, int, int, int, int); + BOOL BeginPath(HDC); + BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); + BOOL CancelDC(HDC); + BOOL CheckColorsInGamut(HDC, PVOID, PVOID, DWORD); + BOOL Chord(HDC, int, int, int, int, int, int, int, int); + int ChoosePixelFormat(HDC, const(PIXELFORMATDESCRIPTOR)*); + HENHMETAFILE CloseEnhMetaFile(HDC); + BOOL CloseFigure(HDC); + HMETAFILE CloseMetaFile(HDC); + BOOL ColorMatchToTarget(HDC, HDC, DWORD); + BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD); + int CombineRgn(HRGN, HRGN, HRGN, int); + BOOL CombineTransform(LPXFORM, const(XFORM)*, const(XFORM)*); + HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); + HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); + HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR); + HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR); + HBITMAP CreateBitmap(int, int, UINT, UINT, PCVOID); + HBITMAP CreateBitmapIndirect(const(BITMAP)*); + HBRUSH CreateBrushIndirect(const(LOGBRUSH)*); + HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA); + HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW); + HBITMAP CreateCompatibleBitmap(HDC, int, int); + HDC CreateCompatibleDC(HDC); + HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); + HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); + HBITMAP CreateDIBitmap(HDC, const(BITMAPINFOHEADER)*, DWORD, PCVOID, const(BITMAPINFO)*, UINT); + HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT); + HBRUSH CreateDIBPatternBrushPt(PCVOID, UINT); + HBITMAP CreateDIBSection(HDC, const(BITMAPINFO)*, UINT, void**, HANDLE, DWORD); + HBITMAP CreateDiscardableBitmap(HDC, int, int); + HRGN CreateEllipticRgn(int, int, int, int); + HRGN CreateEllipticRgnIndirect(LPCRECT); + HDC CreateEnhMetaFileA(HDC, LPCSTR, LPCRECT, LPCSTR); + HDC CreateEnhMetaFileW(HDC, LPCWSTR, LPCRECT, LPCWSTR); + HFONT CreateFontA(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCSTR); + HFONT CreateFontW(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCWSTR); + HFONT CreateFontIndirectA(const(LOGFONTA)*); + HFONT CreateFontIndirectW(const(LOGFONTW)*); + HPALETTE CreateHalftonePalette(HDC); + HBRUSH CreateHatchBrush(int, COLORREF); + HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); + HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); + HDC CreateMetaFileA(LPCSTR); + HDC CreateMetaFileW(LPCWSTR); + HPALETTE CreatePalette(const(LOGPALETTE)*); + HBRUSH CreatePatternBrush(HBITMAP); + HPEN CreatePen(int, int, COLORREF); + HPEN CreatePenIndirect(const(LOGPEN)*); + HRGN CreatePolygonRgn(const(POINT)*, int, int); + HRGN CreatePolyPolygonRgn(const(POINT)*, const(INT)*, int, int); + HRGN CreateRectRgn(int, int, int, int); + HRGN CreateRectRgnIndirect(LPCRECT); + HRGN CreateRoundRectRgn(int, int, int, int, int, int); + BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); + BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); + HBRUSH CreateSolidBrush(COLORREF); + BOOL DeleteColorSpace(HCOLORSPACE); + BOOL DeleteDC(HDC); + BOOL DeleteEnhMetaFile(HENHMETAFILE); + BOOL DeleteMetaFile(HMETAFILE); + BOOL DeleteObject(HGDIOBJ); + int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); + DWORD DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, LPSTR, const(DEVMODEA)*); + DWORD DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, LPWSTR, const(DEVMODEW)*); + BOOL DPtoLP(HDC, LPPOINT, int); + int DrawEscape(HDC, int, int, LPCSTR); + BOOL Ellipse(HDC, int, int, int, int); + int EndDoc(HDC); + int EndPage(HDC); + BOOL EndPath(HDC); + BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, PVOID, LPCRECT); + int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); + int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); + int EnumFontFamiliesExA(HDC, PLOGFONTA, FONTENUMPROCA, LPARAM, DWORD); + int EnumFontFamiliesExW(HDC, PLOGFONTW, FONTENUMPROCW, LPARAM, DWORD); + int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); + int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); + int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM); + int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM); + BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); + int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); + BOOL EqualRgn(HRGN, HRGN); + int Escape(HDC, int, int, LPCSTR, PVOID); + int ExcludeClipRect(HDC, int, int, int, int); + int ExcludeUpdateRgn(HDC, HWND); + HPEN ExtCreatePen(DWORD, DWORD, const(LOGBRUSH)*, DWORD, const(DWORD)*); + HRGN ExtCreateRegion(const(XFORM)*, DWORD, const(RGNDATA)*); + int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); + BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT); + int ExtSelectClipRgn(HDC, HRGN, int); + BOOL ExtTextOutA(HDC, int, int, UINT, LPCRECT, LPCSTR, UINT, const(INT)*); + BOOL ExtTextOutW(HDC, int, int, UINT, LPCRECT, LPCWSTR, UINT, const(INT)*); + BOOL FillPath(HDC); + int FillRect(HDC, LPCRECT, HBRUSH); + int FillRgn(HDC, HRGN, HBRUSH); + BOOL FixBrushOrgEx(HDC, int, int, LPPOINT); + BOOL FlattenPath(HDC); + BOOL FloodFill(HDC, int, int, COLORREF); + BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); + BOOL GdiComment(HDC, UINT, const(BYTE)*); + BOOL GdiFlush(); + DWORD GdiGetBatchLimit(); + DWORD GdiSetBatchLimit(DWORD); + int GetArcDirection(HDC); + BOOL GetAspectRatioFilterEx(HDC, LPSIZE); + LONG GetBitmapBits(HBITMAP, LONG, PVOID); + BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE); + COLORREF GetBkColor(HDC); + int GetBkMode(HDC); + UINT GetBoundsRect(HDC, LPRECT, UINT); + BOOL GetBrushOrgEx(HDC, LPPOINT); + BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC); + BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC); + BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); + BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); + DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD); + DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD); + BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT); + BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthA(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthW(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); + BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); + int GetClipBox(HDC, LPRECT); + int GetClipRgn(HDC, HRGN); + BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT); + HANDLE GetColorSpace(HDC); + HGDIOBJ GetCurrentObject(HDC, UINT); + BOOL GetCurrentPositionEx(HDC, LPPOINT); + HCURSOR GetCursor(); + BOOL GetDCOrgEx(HDC, LPPOINT); + static if (_WIN32_WINNT >= 0x500) + { + DWORD GetDCPenColor(HGDIOBJ); + COLORREF GetDCBrushColor(HGDIOBJ); + } + int GetDeviceCaps(HDC, int); + BOOL GetDeviceGammaRamp(HDC, PVOID); + UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD*); + int GetDIBits(HDC, HBITMAP, UINT, UINT, PVOID, LPBITMAPINFO, UINT); + HENHMETAFILE GetEnhMetaFileA(LPCSTR); + HENHMETAFILE GetEnhMetaFileW(LPCWSTR); + UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); + UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR); + UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR); + UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER); + UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY); + UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, DWORD, const(PIXELFORMATDESCRIPTOR)*); + DWORD GetFontData(HDC, DWORD, DWORD, PVOID, DWORD); + DWORD GetFontLanguageInfo(HDC); + DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); + DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); + int GetGraphicsMode(HDC); + BOOL GetICMProfileA(HDC, DWORD, LPSTR); + BOOL GetICMProfileW(HDC, DWORD, LPWSTR); + DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); + DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); + BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD); + BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD); + int GetMapMode(HDC); + HMETAFILE GetMetaFileA(LPCSTR); + HMETAFILE GetMetaFileW(LPCWSTR); + UINT GetMetaFileBitsEx(HMETAFILE, UINT, PVOID); + int GetMetaRgn(HDC, HRGN); + BOOL GetMiterLimit(HDC, PFLOAT); + COLORREF GetNearestColor(HDC, COLORREF); + UINT GetNearestPaletteIndex(HPALETTE, COLORREF); + int GetObjectA(HGDIOBJ, int, PVOID); + int GetObjectW(HGDIOBJ, int, PVOID); + DWORD GetObjectType(HGDIOBJ); + UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); + UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); + UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); + int GetPath(HDC, LPPOINT, PBYTE, int); + COLORREF GetPixel(HDC, int, int); + int GetPixelFormat(HDC); + int GetPolyFillMode(HDC); + BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); + int GetRandomRgn (HDC, HRGN, INT); + DWORD GetRegionData(HRGN, DWORD, LPRGNDATA); + int GetRgnBox(HRGN, LPRECT); + int GetROP2(HDC); + HGDIOBJ GetStockObject(int); + int GetStretchBltMode(HDC); + UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); + UINT GetSystemPaletteUse(HDC); + UINT GetTextAlign(HDC); + int GetTextCharacterExtra(HDC); + int GetTextCharset(HDC); + int GetTextCharsetInfo(HDC, LPFONTSIGNATURE, DWORD); + COLORREF GetTextColor(HDC); + BOOL GetTextExtentExPointA(HDC, LPCSTR, int, int, LPINT, LPINT, LPSIZE); + BOOL GetTextExtentExPointW(HDC, LPCWSTR, int, int, LPINT, LPINT, LPSIZE); + BOOL GetTextExtentPointA(HDC, LPCSTR, int, LPSIZE); + BOOL GetTextExtentPointW(HDC, LPCWSTR, int, LPSIZE); + BOOL GetTextExtentPoint32A(HDC, LPCSTR, int, LPSIZE); + BOOL GetTextExtentPoint32W(HDC, LPCWSTR, int, LPSIZE); + int GetTextFaceA(HDC, int, LPSTR); + int GetTextFaceW(HDC, int, LPWSTR); + BOOL GetTextMetricsA(HDC, LPTEXTMETRICA); + BOOL GetTextMetricsW(HDC, LPTEXTMETRICW); + BOOL GetViewportExtEx(HDC, LPSIZE); + BOOL GetViewportOrgEx(HDC, LPPOINT); + BOOL GetWindowExtEx(HDC, LPSIZE); + BOOL GetWindowOrgEx(HDC, LPPOINT); + UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); + BOOL GetWorldTransform(HDC, LPXFORM); + int IntersectClipRect(HDC, int, int, int, int); + BOOL InvertRgn(HDC, HRGN); + BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); + BOOL LineTo(HDC, int, int); + BOOL LPtoDP(HDC, LPPOINT, int); + BOOL MaskBlt(HDC, int, int, int, int, HDC, int, int, HBITMAP, int, int, DWORD); + BOOL ModifyWorldTransform(HDC, const(XFORM)*, DWORD); + BOOL MoveToEx(HDC, int, int, LPPOINT); + int OffsetClipRgn(HDC, int, int); + int OffsetRgn(HRGN, int, int); + BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT); + BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT); + BOOL PaintRgn(HDC, HRGN); + BOOL PatBlt(HDC, int, int, int, int, DWORD); + HRGN PathToRegion(HDC); + BOOL Pie(HDC, int, int, int, int, int, int, int, int); + BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, LPCRECT); + BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, const(ENHMETARECORD)*, UINT); + BOOL PlayMetaFile(HDC, HMETAFILE); + BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); + BOOL PlgBlt(HDC, const(POINT)*, HDC, int, int, int, int, HBITMAP, int, int); + BOOL PolyBezier(HDC, const(POINT)*, DWORD); + BOOL PolyBezierTo(HDC, const(POINT)*, DWORD); + BOOL PolyDraw(HDC, const(POINT)*, const(BYTE)*, int); + BOOL Polygon(HDC, const(POINT)*, int); + BOOL Polyline(HDC, const(POINT)*, int); + BOOL PolylineTo(HDC, const(POINT)*, DWORD); + BOOL PolyPolygon(HDC, const(POINT)*, const(INT)*, int); + BOOL PolyPolyline(HDC, const(POINT)*, const(DWORD)*, DWORD); + BOOL PolyTextOutA(HDC, const(POLYTEXTA)*, int); + BOOL PolyTextOutW(HDC, const(POLYTEXTW)*, int); + BOOL PtInRegion(HRGN, int, int); + BOOL PtVisible(HDC, int, int); + UINT RealizePalette(HDC); + BOOL Rectangle(HDC, int, int, int, int); + BOOL RectInRegion(HRGN, LPCRECT); + BOOL RectVisible(HDC, LPCRECT); + BOOL RemoveFontResourceA(LPCSTR); + BOOL RemoveFontResourceW(LPCWSTR); + + HDC ResetDCA(HDC, const(DEVMODEA)*); + HDC ResetDCW(HDC, const(DEVMODEW)*); + BOOL ResizePalette(HPALETTE, UINT); + BOOL RestoreDC(HDC, int); + BOOL RoundRect(HDC, int, int, int, int, int, int); + int SaveDC(HDC); + BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); + BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); + BOOL SelectClipPath(HDC, int); + int SelectClipRgn(HDC, HRGN); + HGDIOBJ SelectObject(HDC, HGDIOBJ); + HPALETTE SelectPalette(HDC, HPALETTE, BOOL); + int SetAbortProc(HDC, ABORTPROC); + int SetArcDirection(HDC, int); + LONG SetBitmapBits(HBITMAP, DWORD, PCVOID); + BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); + COLORREF SetBkColor(HDC, COLORREF); + int SetBkMode(HDC, int); + UINT SetBoundsRect(HDC, LPCRECT, UINT); + BOOL SetBrushOrgEx(HDC, int, int, LPPOINT); + BOOL SetColorAdjustment(HDC, const(COLORADJUSTMENT)*); + BOOL SetColorSpace(HDC, HCOLORSPACE); + + BOOL SetDeviceGammaRamp(HDC, PVOID); + UINT SetDIBColorTable(HDC, UINT, UINT, const(RGBQUAD)*); + int SetDIBits(HDC, HBITMAP, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); + int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); + HENHMETAFILE SetEnhMetaFileBits(UINT, const(BYTE)*); + int SetGraphicsMode(HDC, int); + int SetICMMode(HDC, int); + BOOL SetICMProfileA(HDC, LPSTR); + BOOL SetICMProfileW(HDC, LPWSTR); + int SetMapMode(HDC, int); + + static if (_WIN32_WINNT >= 0x500) { + DWORD SetLayout(HDC hdc, DWORD l); + DWORD GetLayout(HDC hdc); + } + + DWORD SetMapperFlags(HDC, DWORD); + HMETAFILE SetMetaFileBitsEx(UINT, const(BYTE)*); + int SetMetaRgn(HDC); + BOOL SetMiterLimit(HDC, FLOAT, PFLOAT); + UINT SetPaletteEntries(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); + COLORREF SetPixel(HDC, int, int, COLORREF); + BOOL SetPixelFormat(HDC, int, const(PIXELFORMATDESCRIPTOR)*); + BOOL SetPixelV(HDC, int, int, COLORREF); + int SetPolyFillMode(HDC, int); + BOOL SetRectRgn(HRGN, int, int, int, int); + int SetROP2(HDC, int); + int SetStretchBltMode(HDC, int); + UINT SetSystemPaletteUse(HDC, UINT); + UINT SetTextAlign(HDC, UINT); + int SetTextCharacterExtra(HDC, int); + COLORREF SetTextColor(HDC, COLORREF); + BOOL SetTextJustification(HDC, int, int); + BOOL SetViewportExtEx(HDC, int, int, LPSIZE); + BOOL SetViewportOrgEx(HDC, int, int, LPPOINT); + BOOL SetWindowExtEx(HDC, int, int, LPSIZE); + BOOL SetWindowOrgEx(HDC, int, int, LPPOINT); + HENHMETAFILE SetWinMetaFileBits(UINT, const(BYTE)*, HDC, const(METAFILEPICT)*); + BOOL SetWorldTransform(HDC, const(XFORM)*); + int StartDocA(HDC, const(DOCINFOA)*); + int StartDocW(HDC, const(DOCINFOW)*); + int StartPage(HDC); + BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); + int StretchDIBits(HDC, int, int, int, int, int, int, int, int, const(VOID)* , const(BITMAPINFO)* , UINT, DWORD); + BOOL StrokeAndFillPath(HDC); + BOOL StrokePath(HDC); + BOOL SwapBuffers(HDC); + BOOL TextOutA(HDC, int, int, LPCSTR, int); + BOOL TextOutW(HDC, int, int, LPCWSTR, int); + BOOL TranslateCharsetInfo(PDWORD, LPCHARSETINFO, DWORD); + BOOL UnrealizeObject(HGDIOBJ); + BOOL UpdateColors(HDC); + BOOL UpdateICMRegKeyA(DWORD, DWORD, LPSTR, UINT); + BOOL UpdateICMRegKeyW(DWORD, DWORD, LPWSTR, UINT); + BOOL WidenPath(HDC); + BOOL wglCopyContext(HGLRC, HGLRC, UINT); + HGLRC wglCreateContext(HDC); + HGLRC wglCreateLayerContext(HDC, int); + BOOL wglDeleteContext(HGLRC); + BOOL wglDescribeLayerPlane(HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR); + HGLRC wglGetCurrentContext(); + HDC wglGetCurrentDC(); + int wglGetLayerPaletteEntries(HDC, int, int, int, COLORREF*); + PROC wglGetProcAddress(LPCSTR); + BOOL wglMakeCurrent(HDC, HGLRC); + BOOL wglRealizeLayerPalette(HDC, int, BOOL); + int wglSetLayerPaletteEntries(HDC, int, int, int, const(COLORREF)*); + BOOL wglShareLists(HGLRC, HGLRC); + BOOL wglSwapLayerBuffers(HDC, UINT); + BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD); + BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD); + BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); + BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); + + static if (_WIN32_WINNT >= 0x500) { + alias WGLSWAP* PWGLSWAP; + struct WGLSWAP { + HDC hdc; + UINT uiFlags; + } + const WGL_SWAPMULTIPLE_MAX = 16; + DWORD wglSwapMultipleBuffers(UINT, WGLSWAP*); +} + +static if (_WIN32_WINNT >= 0x500) { + BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); + BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG); + BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT); + } + + static if (_WIN32_WINNT >= 0x500) { + COLORREF SetDCBrushColor(HDC, COLORREF); + COLORREF SetDCPenColor(HDC, COLORREF); + HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD*); + int AddFontResourceExA(LPCSTR, DWORD, PVOID); + int AddFontResourceExW(LPCWSTR, DWORD, PVOID); + BOOL RemoveFontMemResourceEx(HANDLE); + BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID); + BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); + DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET); + DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD); + DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD); + BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE); + BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE); + BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT); + BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC); + } +} // extern (Windows) + +version(Unicode) { + alias WCHAR BCHAR; + alias DOCINFOW DOCINFO; + alias LOGFONTW LOGFONT; + + alias TEXTMETRICW TEXTMETRIC; + alias NPTEXTMETRICW NPTEXTMETRIC; + alias ICMENUMPROCW ICMENUMPROC; + alias FONTENUMPROCW FONTENUMPROC; + alias DEVMODEW DEVMODE; + + alias EXTLOGFONTW EXTLOGFONT; + alias GCP_RESULTSW GCP_RESULTS; + alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC; + alias POLYTEXTW POLYTEXT; + alias LOGCOLORSPACEW LOGCOLORSPACE; + alias NEWTEXTMETRICW NEWTEXTMETRIC; + alias NEWTEXTMETRICEXW NEWTEXTMETRICEX; + alias ENUMLOGFONTW ENUMLOGFONT; + alias ENUMLOGFONTEXW ENUMLOGFONTEX; + alias DISPLAY_DEVICEW DISPLAY_DEVICE; + alias AddFontResourceW AddFontResource; + + alias CopyEnhMetaFileW CopyEnhMetaFile; + alias CopyMetaFileW CopyMetaFile; + alias CreateColorSpaceW CreateColorSpace; + alias CreateDCW CreateDC; + alias CreateEnhMetaFileW CreateEnhMetaFile; + alias CreateFontW CreateFont; + alias CreateFontIndirectW CreateFontIndirect; + alias CreateICW CreateIC; + alias CreateMetaFileW CreateMetaFile; + alias CreateScalableFontResourceW CreateScalableFontResource; + alias DeviceCapabilitiesW DeviceCapabilities; + alias EnumFontFamiliesW EnumFontFamilies; + alias EnumFontFamiliesExW EnumFontFamiliesEx; + alias EnumFontsW EnumFonts; + alias EnumICMProfilesW EnumICMProfiles; + alias ExtTextOutW ExtTextOut; + alias GetCharABCWidthsFloatW GetCharABCWidthsFloat; + alias GetCharABCWidthsW GetCharABCWidths; + alias GetCharacterPlacementW GetCharacterPlacement; + alias GetCharWidth32W GetCharWidth32; + alias GetCharWidthFloatW GetCharWidthFloat; + alias GetCharWidthW GetCharWidth; + alias GetEnhMetaFileW GetEnhMetaFile; + alias GetEnhMetaFileDescriptionW GetEnhMetaFileDescription; + alias GetGlyphOutlineW GetGlyphOutline; + alias GetICMProfileW GetICMProfile; + alias GetKerningPairsW GetKerningPairs; + alias GetLogColorSpaceW GetLogColorSpace; + alias GetMetaFileW GetMetaFile; + alias GetObjectW GetObject; + alias GetOutlineTextMetricsW GetOutlineTextMetrics; + alias GetTextExtentPointW GetTextExtentPoint; + alias GetTextExtentExPointW GetTextExtentExPoint; + alias GetTextExtentPoint32W GetTextExtentPoint32; + alias GetTextFaceW GetTextFace; + alias GetTextMetricsW GetTextMetrics; + alias PolyTextOutW PolyTextOut; + alias RemoveFontResourceW RemoveFontResource; + + alias ResetDCW ResetDC; + alias SetICMProfileW SetICMProfile; + alias StartDocW StartDoc; + alias TextOutW TextOut; + alias UpdateICMRegKeyW UpdateICMRegKey; + alias wglUseFontBitmapsW wglUseFontBitmaps; + alias wglUseFontOutlinesW wglUseFontOutlines; + static if (_WIN32_WINNT >= 0x500) { + alias ENUMLOGFONTEXDVW ENUMLOGFONTEXDV; + alias PENUMLOGFONTEXDVW PENUMLOGFONTEXDV; + alias LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV; + alias AddFontResourceExW AddFontResourceEx; + alias RemoveFontResourceExW RemoveFontResourceEx; + alias GetGlyphIndicesW GetGlyphIndices; + } +} else { /* non-unicode build */ + alias BYTE BCHAR; + alias DOCINFOA DOCINFO; + alias LOGFONTA LOGFONT; + alias TEXTMETRICA TEXTMETRIC; + alias NPTEXTMETRICA NPTEXTMETRIC; + alias ICMENUMPROCA ICMENUMPROC; + alias FONTENUMPROCA FONTENUMPROC; + alias DEVMODEA DEVMODE; + alias EXTLOGFONTA EXTLOGFONT; + alias GCP_RESULTSA GCP_RESULTS; + alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC; + alias POLYTEXTA POLYTEXT; + alias LOGCOLORSPACEA LOGCOLORSPACE; + alias NEWTEXTMETRICA NEWTEXTMETRIC; + alias NEWTEXTMETRICEXA NEWTEXTMETRICEX; + alias ENUMLOGFONTA ENUMLOGFONT; + alias ENUMLOGFONTEXA ENUMLOGFONTEX; + alias DISPLAY_DEVICEA DISPLAY_DEVICE; + + alias AddFontResourceA AddFontResource; + alias CopyEnhMetaFileA CopyEnhMetaFile; + alias CopyMetaFileA CopyMetaFile; + alias CreateColorSpaceA CreateColorSpace; + alias CreateDCA CreateDC; + alias CreateEnhMetaFileA CreateEnhMetaFile; + alias CreateFontA CreateFont; + alias CreateFontIndirectA CreateFontIndirect; + alias CreateICA CreateIC; + alias CreateMetaFileA CreateMetaFile; + alias CreateScalableFontResourceA CreateScalableFontResource; + alias DeviceCapabilitiesA DeviceCapabilities; + alias EnumFontFamiliesA EnumFontFamilies; + alias EnumFontFamiliesExA EnumFontFamiliesEx; + alias EnumFontsA EnumFonts; + alias EnumICMProfilesA EnumICMProfiles; + alias ExtTextOutA ExtTextOut; + alias GetCharWidthFloatA GetCharWidthFloat; + alias GetCharWidthA GetCharWidth; + alias GetCharacterPlacementA GetCharacterPlacement; + alias GetCharABCWidthsA GetCharABCWidths; + alias GetCharABCWidthsFloatA GetCharABCWidthsFloat; + alias GetCharWidth32A GetCharWidth32; + alias GetEnhMetaFileA GetEnhMetaFile; + alias GetEnhMetaFileDescriptionA GetEnhMetaFileDescription; + alias GetGlyphOutlineA GetGlyphOutline; + alias GetICMProfileA GetICMProfile; + alias GetKerningPairsA GetKerningPairs; + alias GetLogColorSpaceA GetLogColorSpace; + alias GetMetaFileA GetMetaFile; + alias GetObjectA GetObject; + alias GetOutlineTextMetricsA GetOutlineTextMetrics; + alias GetTextExtentPointA GetTextExtentPoint; + alias GetTextExtentExPointA GetTextExtentExPoint; + alias GetTextExtentPoint32A GetTextExtentPoint32; + alias GetTextFaceA GetTextFace; + alias GetTextMetricsA GetTextMetrics; + alias PolyTextOutA PolyTextOut; + alias RemoveFontResourceA RemoveFontResource; + alias ResetDCA ResetDC; + alias SetICMProfileA SetICMProfile; + alias StartDocA StartDoc; + alias TextOutA TextOut; + alias UpdateICMRegKeyA UpdateICMRegKey; + alias wglUseFontBitmapsA wglUseFontBitmaps; + alias wglUseFontOutlinesA wglUseFontOutlines; + static if (_WIN32_WINNT >= 0x500) { + alias ENUMLOGFONTEXDVA ENUMLOGFONTEXDV; + alias PENUMLOGFONTEXDVA PENUMLOGFONTEXDV; + alias LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV; + alias AddFontResourceExA AddFontResourceEx; + alias RemoveFontResourceExA RemoveFontResourceEx; + alias GetGlyphIndicesA GetGlyphIndices; + } +} + +// Common to both ASCII & UNICODE +alias DOCINFO* LPDOCINFO; +alias LOGFONT* PLOGFONT, NPLOGFONT, LPLOGFONT; +alias TEXTMETRIC* PTEXTMETRIC, LPTEXTMETRIC; +alias DEVMODE* PDEVMODE, NPDEVMODE, LPDEVMODE; +alias EXTLOGFONT* PEXTLOGFONT, NPEXTLOGFONT, LPEXTLOGFONT; +alias GCP_RESULTS* LPGCP_RESULTS; +alias OUTLINETEXTMETRIC* POUTLINETEXTMETRIC, NPOUTLINETEXTMETRIC, LPOUTLINETEXTMETRIC; +alias POLYTEXT* PPOLYTEXT, NPPOLYTEXT, LPPOLYTEXT; +alias LOGCOLORSPACE* LPLOGCOLORSPACE; +alias NEWTEXTMETRIC* PNEWTEXTMETRIC, NPNEWTEXTMETRIC, LPNEWTEXTMETRIC; +alias ENUMLOGFONT* LPENUMLOGFONT; +alias ENUMLOGFONTEX* LPENUMLOGFONTEX; +alias DISPLAY_DEVICE* PDISPLAY_DEVICE, LPDISPLAY_DEVICE; diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d index a0d5e48ec8..450c803722 100644 --- a/src/core/sys/windows/winhttp.d +++ b/src/core/sys/windows/winhttp.d @@ -1,843 +1,843 @@ -/** - * Windows API header module - * - * Translated from Windows SDK Headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winhttp.d) - */ -module win32.winhttp; -pragma(lib, "winhttp"); -// FIXME: Grouping of constants. Windows SDK doesn't make this entirely clear -// FIXME: Verify WINHTTP_STATUS_CALLBACK function declaration works correctly - -import win32.w32api; -import win32.winbase; -import win32.windef; -import win32.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) - -alias HINTERNET = void*; -alias LPHINTERNET = HINTERNET*; -alias INTERNET_PORT = WORD; -alias LPINTERNET_PORT = INTERNET_PORT*; -alias INTERNET_SCHEME = int; -alias LPINTERNET_SCHEME = INTERNET_SCHEME*; - -// Protocol 'Manifests' -enum : DWORD { - INTERNET_DEFAULT_PORT = 0, - INTERNET_DEFAULT_HTTP_PORT = 80, - INTERNET_DEFAULT_HTTPS_PORT = 443 -} - -// WinHttpOpen() Flags: -enum DWORD WINHTTP_FLAG_ASYNC = 0x10000000; - -// WinHttpOpenRequest() Flags: -enum : DWORD { - WINHTTP_FLAG_SECURE = 0x00800000, - WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, - WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, - WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, - WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, - WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, - WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, - - SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, - SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, - SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, - SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = 0x00000200 -} - -struct WINHTTP_ASYNC_RESULT { - DWORD_PTR dwResult; - DWORD dwError; -} -alias LPWINHTTP_ASYNC_RESULT = WINHTTP_ASYNC_RESULT*; - -struct HTTP_VERSION_INFO { - DWORD dwMajorVersion; - DWORD dwMinorVersion; -} -alias LPHTTP_VERSION_INFO = HTTP_VERSION_INFO*; - -// URL Scheme -enum : DWORD { - INTERNET_SCHEME_HTTP = 1, - INTERNET_SCHEME_HTTPS = 2, - INTERNET_SCHEME_FTP = 3, - INTERNET_SCHEME_SOCKS = 4 -} - -struct URL_COMPONENTS { - DWORD dwStructSize; - LPWSTR lpszScheme; - DWORD dwSchemeLength; - INTERNET_SCHEME nScheme; - LPWSTR lpszHostName; - DWORD dwHostNameLength; - INTERNET_PORT nPort; - LPWSTR lpszUserName; - DWORD dwUserNameLength; - LPWSTR lpszPassword; - DWORD dwPasswordLength; - LPWSTR lpszUrlPath; - DWORD dwUrlPathLength; - LPWSTR lpszExtraInfo; - DWORD dwExtraInfoLength; -} -alias LPURL_COMPONENTS = URL_COMPONENTS*; -alias URL_COMPONENTSW = URL_COMPONENTS; -alias LPURL_COMPONENTSW = URL_COMPONENTS*; - -struct WINHTTP_PROXY_INFO { - DWORD dwAccessType; - LPWSTR lpszProxy; - LPWSTR lpszProxyBypass; -} -alias LPWINHTTP_PROXY_INFO = WINHTTP_PROXY_INFO*; -alias WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO; -alias LPWINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO*; - -struct WINHTTP_AUTOPROXY_OPTIONS { - DWORD dwFlags; - DWORD dwAutoDetectFlags; - LPCWSTR lpszAutoConfigUrl; - LPVOID lpvReserved; - DWORD dwReserved; - BOOL fAutoLogonIfChallenged; -} - -enum : DWORD { - WINHTTP_AUTOPROXY_AUTO_DETECT = 0x00000001, - WINHTTP_AUTOPROXY_CONFIG_URL = 0x00000002, - WINHTTP_AUTOPROXY_HOST_KEEPCASE = 0x00000004, - WINHTTP_AUTOPROXY_HOST_LOWERCASE = 0x00000008, - WINHTTP_AUTOPROXY_RUN_INPROCESS = 0x00010000, - WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = 0x00020000, - WINHTTP_AUTOPROXY_NO_DIRECTACCESS = 0x00040000, - WINHTTP_AUTOPROXY_NO_CACHE_CLIENT = 0x00080000, - WINHTTP_AUTOPROXY_NO_CACHE_SVC = 0x00100000, - - WINHTTP_AUTOPROXY_SORT_RESULTS = 0x00400000 -} - -// dwAutoDetectFlags -enum : DWORD { - WINHTTP_AUTO_DETECT_TYPE_DHCP = 0x00000001, - WINHTTP_AUTO_DETECT_TYPE_DNS_A = 0x00000002 -} - -struct WINHTTP_CERTIFICATE_INFO { - FILETIME ftExpiry; - FILETIME ftStart; - LPWSTR lpszSubjectInfo; - LPWSTR lpszIssuerInfo; - LPWSTR lpszProtocolName; - LPWSTR lpszSignatureAlgName; - LPWSTR lpszEncryptionAlgName; - DWORD dwKeySize; -} - -// This structure is only defined #if _WS2DEF_ defined (from ) - per Windows SDK -struct WINHTTP_CONNECTION_INFO { - DWORD cbSize; - SOCKADDR_STORAGE LocalAddress; - SOCKADDR_STORAGE RemoteAddress; -} - -// WinHttpTimeFromSystemTime -enum DWORD WINHTTP_TIME_FORMAT_BUFSIZE = 62; - -// CrackUrl, CombineUrl -enum : DWORD { - ICU_NO_ENCODE = 0x20000000, - ICU_DECODE = 0x10000000, - ICU_NO_META = 0x08000000, - ICU_ENCODE_SPACES_ONLY = 0x04000000, - ICU_BROWSER_MODE = 0x02000000, - ICU_ENCODE_PERCENT = 0x00001000 -} -// WinHttpCrackUrl, WinHttpCreateUrl -enum : DWORD { - ICU_ESCAPE = 0x80000000, - ICU_ESCAPE_AUTHORITY = 0x00002000, - ICU_REJECT_USERPWD = 0x00004000 -} -enum : DWORD { - WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, - WINHTTP_ACCESS_TYPE_NO_PROXY = 1, - WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, - WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4 -} -// WinHttpOpen 'prettifiers' -enum LPCWSTR WINHTTP_NO_PROXY_NAME = null; -enum LPCWSTR WINHTTP_NO_PROXY_BYPASS = null; - -enum LPVOID WINHTTP_NO_CLIENT_CERT_CONTEXT = null; - -// WinHttp{Query|Set}Option -enum : DWORD { - WINHTTP_FIRST_OPTION = WINHTTP_OPTION_CALLBACK, - - WINHTTP_OPTION_CALLBACK = 1, - WINHTTP_OPTION_RESOLVE_TIMEOUT = 2, - WINHTTP_OPTION_CONNECT_TIMEOUT = 3, - WINHTTP_OPTION_CONNECT_RETRIES = 4, - WINHTTP_OPTION_SEND_TIMEOUT = 5, - WINHTTP_OPTION_RECEIVE_TIMEOUT = 6, - WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT = 7, - WINHTTP_OPTION_HANDLE_TYPE = 9, - WINHTTP_OPTION_READ_BUFFER_SIZE = 12, - WINHTTP_OPTION_WRITE_BUFFER_SIZE = 13, - WINHTTP_OPTION_PARENT_HANDLE = 21, - WINHTTP_OPTION_EXTENDED_ERROR = 24, - WINHTTP_OPTION_SECURITY_FLAGS = 31, - WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT = 32, - WINHTTP_OPTION_URL = 34, - WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36, - WINHTTP_OPTION_PROXY = 38, - WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39, - - WINHTTP_OPTION_USER_AGENT = 41, - WINHTTP_OPTION_CONTEXT_VALUE = 45, - WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47, - WINHTTP_OPTION_REQUEST_PRIORITY = 58, - WINHTTP_OPTION_HTTP_VERSION = 59, - WINHTTP_OPTION_DISABLE_FEATURE = 63, - - WINHTTP_OPTION_CODEPAGE = 68, - WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73, - WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74, - WINHTTP_OPTION_AUTOLOGON_POLICY = 77, - WINHTTP_OPTION_SERVER_CERT_CONTEXT = 78, - WINHTTP_OPTION_ENABLE_FEATURE = 79, - WINHTTP_OPTION_WORKER_THREAD_COUNT = 80, - WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT = 81, - WINHTTP_OPTION_PASSPORT_COBRANDING_URL = 82, - WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH = 83, - WINHTTP_OPTION_SECURE_PROTOCOLS = 84, - WINHTTP_OPTION_ENABLETRACING = 85, - WINHTTP_OPTION_PASSPORT_SIGN_OUT = 86, - WINHTTP_OPTION_PASSPORT_RETURN_URL = 87, - WINHTTP_OPTION_REDIRECT_POLICY = 88, - WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS = 89, - WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE = 90, - WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE = 91, - WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE = 92, - WINHTTP_OPTION_CONNECTION_INFO = 93, - WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94, - WINHTTP_OPTION_SPN = 96, - - WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97, - WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98, - - WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT = 99, - WINHTTP_OPTION_REJECT_USERPWD_IN_URL = 100, - WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS = 101, - - WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE = 103, - WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE = 104, - - WINHTTP_OPTION_SERVER_SPN_USED = 106, - WINHTTP_OPTION_PROXY_SPN_USED = 107, - - WINHTTP_OPTION_SERVER_CBT = 108, - - WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110, - WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111, - - WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114, - WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT = 115, - WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116, - - WINHTTP_OPTION_DECOMPRESSION = 118, - - WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE = 122, - WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE = 123, - - //WINHTTP_LAST_OPTION => Moved outside of enum - static if() constraints within enums - - WINHTTP_OPTION_USERNAME = 0x1000, - WINHTTP_OPTION_PASSWORD = 0x1001, - WINHTTP_OPTION_PROXY_USERNAME = 0x1002, - WINHTTP_OPTION_PROXY_PASSWORD = 0x1003, - - WINHTTP_CONNS_PER_SERVER_UNLIMITED = 0xFFFFFFFF, - - WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0, - WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1, - WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2, - - WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM, - - WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0, - WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1, - WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2, - - WINHTTP_OPTION_REDIRECT_POLICY_LAST = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS, - WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, - - WINHTTP_DISABLE_PASSPORT_AUTH = 0x00000000, - WINHTTP_ENABLE_PASSPORT_AUTH = 0x10000000, - WINHTTP_DISABLE_PASSPORT_KEYRING = 0x20000000, - WINHTTP_ENABLE_PASSPORT_KEYRING = 0x40000000, - - WINHTTP_DISABLE_COOKIES = 0x00000001, - WINHTTP_DISABLE_REDIRECTS = 0x00000002, - WINHTTP_DISABLE_AUTHENTICATION = 0x00000004, - WINHTTP_DISABLE_KEEP_ALIVE = 0x00000008, - - WINHTTP_ENABLE_SSL_REVOCATION = 0x00000001, - WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = 0x00000002, - - WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000, - WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001, - WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT -} - -// Windows 8.1 SDK: -static if (_WIN32_WINNT >= 0x602) { - enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; -} else { // Windows 7.0A SDK: - enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; -} - -enum : DWORD { - WINHTTP_DECOMPRESSION_FLAG_GZIP = 0x00000001, - WINHTTP_DECOMPRESSION_FLAG_DEFLATE = 0x00000002, - WINHTTP_DECOMPRESSION_FLAG_ALL = (WINHTTP_DECOMPRESSION_FLAG_GZIP | WINHTTP_DECOMPRESSION_FLAG_DEFLATE) -} - -struct WINHTTP_CREDS { - LPSTR lpszUserName; - LPSTR lpszPassword; - LPSTR lpszRealm; - DWORD dwAuthScheme; - LPSTR lpszHostName; - DWORD dwPort; -} -alias PWINHTTP_CREDS = WINHTTP_CREDS*; - -struct WINHTTP_CREDS_EX { - LPSTR lpszUserName; - LPSTR lpszPassword; - LPSTR lpszRealm; - DWORD dwAuthScheme; - LPSTR lpszHostName; - DWORD dwPort; - LPSTR lpszUrl; -} -alias PWINHTTP_CREDS_EX = WINHTTP_CREDS_EX*; - -enum : DWORD { - WINHTTP_HANDLE_TYPE_SESSION = 1, - WINHTTP_HANDLE_TYPE_CONNECT = 2, - WINHTTP_HANDLE_TYPE_REQUEST = 3, - - WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, - WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, - WINHTTP_AUTH_SCHEME_PASSPORT = 0x00000004, - WINHTTP_AUTH_SCHEME_DIGEST = 0x00000008, - WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, - - WINHTTP_AUTH_TARGET_SERVER = 0x00000000, - WINHTTP_AUTH_TARGET_PROXY = 0x00000001, - - SECURITY_FLAG_SECURE = 0x00000001, - SECURITY_FLAG_STRENGTH_WEAK = 0x10000000, - SECURITY_FLAG_STRENGTH_MEDIUM = 0x40000000, - SECURITY_FLAG_STRENGTH_STRONG = 0x20000000, - - WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = 0x00000001, - WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = 0x00000002, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = 0x00000004, - WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA = 0x00000008, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID = 0x00000010, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID = 0x00000020, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE = 0x00000040, - WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR = 0x80000000, - - WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 = 0x00000008, - WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 = 0x00000020, - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = 0x00000080, - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = 0x00000200, - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = 0x00000800, - WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | - WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1) -} - -alias extern(Windows) int fnWINHTTP_STATUS_CALLBACK(HINTERNET hInternet, DWORD_PTR dwContext, - DWORD dwInternetStatus, LPVOID lpvStatusInformation,DWORD dwStatusInformationLength); -alias WINHTTP_STATUS_CALLBACK = fnWINHTTP_STATUS_CALLBACK*; -alias LPWINHTTP_STATUS_CALLBACK = WINHTTP_STATUS_CALLBACK*; - -enum : DWORD { - WINHTTP_CALLBACK_STATUS_RESOLVING_NAME = 0x00000001, - WINHTTP_CALLBACK_STATUS_NAME_RESOLVED = 0x00000002, - WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER = 0x00000004, - WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER = 0x00000008, - WINHTTP_CALLBACK_STATUS_SENDING_REQUEST = 0x00000010, - WINHTTP_CALLBACK_STATUS_REQUEST_SENT = 0x00000020, - WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE = 0x00000040, - WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED = 0x00000080, - WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION = 0x00000100, - WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED = 0x00000200, - WINHTTP_CALLBACK_STATUS_HANDLE_CREATED = 0x00000400, - WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING = 0x00000800, - WINHTTP_CALLBACK_STATUS_DETECTING_PROXY = 0x00001000, - WINHTTP_CALLBACK_STATUS_REDIRECT = 0x00004000, - WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE = 0x00008000, - WINHTTP_CALLBACK_STATUS_SECURE_FAILURE = 0x00010000, - WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE = 0x00020000, - WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE = 0x00040000, - WINHTTP_CALLBACK_STATUS_READ_COMPLETE = 0x00080000, - WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE = 0x00100000, - WINHTTP_CALLBACK_STATUS_REQUEST_ERROR = 0x00200000, - WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE = 0x00400000 -} - -enum : DWORD { - WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE = 0x01000000, - WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE = 0x02000000, - WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE = 0x04000000 -} - -enum : DWORD { - API_RECEIVE_RESPONSE = 1, - API_QUERY_DATA_AVAILABLE = 2, - API_READ_DATA = 3, - API_WRITE_DATA = 4, - API_SEND_REQUEST = 5 -} - -enum : DWORD { - WINHTTP_CALLBACK_FLAG_RESOLVE_NAME = (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED), - WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER = (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER), - WINHTTP_CALLBACK_FLAG_SEND_REQUEST = (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT), - WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE = (WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED), - WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION = (WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED), - WINHTTP_CALLBACK_FLAG_HANDLES = (WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING), - WINHTTP_CALLBACK_FLAG_DETECTING_PROXY = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY, - WINHTTP_CALLBACK_FLAG_REDIRECT = WINHTTP_CALLBACK_STATUS_REDIRECT, - WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE, - WINHTTP_CALLBACK_FLAG_SECURE_FAILURE = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, - WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE, - WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, - WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE, - WINHTTP_CALLBACK_FLAG_READ_COMPLETE = WINHTTP_CALLBACK_STATUS_READ_COMPLETE, - WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE, - WINHTTP_CALLBACK_FLAG_REQUEST_ERROR = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR -} - -enum DWORD WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE = WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE; - -// Windows 8+/2012+ -static if (_WIN32_WINNT >= 0x602) { - enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE - | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE - | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE - | WINHTTP_CALLBACK_STATUS_READ_COMPLETE - | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE - | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR); -} else { - enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE - | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE - | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE - | WINHTTP_CALLBACK_STATUS_READ_COMPLETE - | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE - | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR - | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE); -} - -enum DWORD WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS = 0xffffffff; - -enum WINHTTP_INVALID_STATUS_CALLBACK = (cast(WINHTTP_STATUS_CALLBACK)(-1L)); - -enum : DWORD { - WINHTTP_QUERY_MIME_VERSION = 0, - WINHTTP_QUERY_CONTENT_TYPE = 1, - WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2, - WINHTTP_QUERY_CONTENT_ID = 3, - WINHTTP_QUERY_CONTENT_DESCRIPTION = 4, - WINHTTP_QUERY_CONTENT_LENGTH = 5, - WINHTTP_QUERY_CONTENT_LANGUAGE = 6, - WINHTTP_QUERY_ALLOW = 7, - WINHTTP_QUERY_PUBLIC = 8, - WINHTTP_QUERY_DATE = 9, - WINHTTP_QUERY_EXPIRES = 10, - WINHTTP_QUERY_LAST_MODIFIED = 11, - WINHTTP_QUERY_MESSAGE_ID = 12, - WINHTTP_QUERY_URI = 13, - WINHTTP_QUERY_DERIVED_FROM = 14, - WINHTTP_QUERY_COST = 15, - WINHTTP_QUERY_LINK = 16, - WINHTTP_QUERY_PRAGMA = 17, - WINHTTP_QUERY_VERSION = 18, - WINHTTP_QUERY_STATUS_CODE = 19, - WINHTTP_QUERY_STATUS_TEXT = 20, - WINHTTP_QUERY_RAW_HEADERS = 21, - WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, - WINHTTP_QUERY_CONNECTION = 23, - WINHTTP_QUERY_ACCEPT = 24, - WINHTTP_QUERY_ACCEPT_CHARSET = 25, - WINHTTP_QUERY_ACCEPT_ENCODING = 26, - WINHTTP_QUERY_ACCEPT_LANGUAGE = 27, - WINHTTP_QUERY_AUTHORIZATION = 28, - WINHTTP_QUERY_CONTENT_ENCODING = 29, - WINHTTP_QUERY_FORWARDED = 30, - WINHTTP_QUERY_FROM = 31, - WINHTTP_QUERY_IF_MODIFIED_SINCE = 32, - WINHTTP_QUERY_LOCATION = 33, - WINHTTP_QUERY_ORIG_URI = 34, - WINHTTP_QUERY_REFERER = 35, - WINHTTP_QUERY_RETRY_AFTER = 36, - WINHTTP_QUERY_SERVER = 37, - WINHTTP_QUERY_TITLE = 38, - WINHTTP_QUERY_USER_AGENT = 39, - WINHTTP_QUERY_WWW_AUTHENTICATE = 40, - WINHTTP_QUERY_PROXY_AUTHENTICATE = 41, - WINHTTP_QUERY_ACCEPT_RANGES = 42, - WINHTTP_QUERY_SET_COOKIE = 43, - WINHTTP_QUERY_COOKIE = 44, - WINHTTP_QUERY_REQUEST_METHOD = 45, - WINHTTP_QUERY_REFRESH = 46, - WINHTTP_QUERY_CONTENT_DISPOSITION = 47, - - // HTTP 1.1 defined headers - - WINHTTP_QUERY_AGE = 48, - WINHTTP_QUERY_CACHE_CONTROL = 49, - WINHTTP_QUERY_CONTENT_BASE = 50, - WINHTTP_QUERY_CONTENT_LOCATION = 51, - WINHTTP_QUERY_CONTENT_MD5 = 52, - WINHTTP_QUERY_CONTENT_RANGE = 53, - WINHTTP_QUERY_ETAG = 54, - WINHTTP_QUERY_HOST = 55, - WINHTTP_QUERY_IF_MATCH = 56, - WINHTTP_QUERY_IF_NONE_MATCH = 57, - WINHTTP_QUERY_IF_RANGE = 58, - WINHTTP_QUERY_IF_UNMODIFIED_SINCE = 59, - WINHTTP_QUERY_MAX_FORWARDS = 60, - WINHTTP_QUERY_PROXY_AUTHORIZATION = 61, - WINHTTP_QUERY_RANGE = 62, - WINHTTP_QUERY_TRANSFER_ENCODING = 63, - WINHTTP_QUERY_UPGRADE = 64, - WINHTTP_QUERY_VARY = 65, - WINHTTP_QUERY_VIA = 66, - WINHTTP_QUERY_WARNING = 67, - WINHTTP_QUERY_EXPECT = 68, - WINHTTP_QUERY_PROXY_CONNECTION = 69, - WINHTTP_QUERY_UNLESS_MODIFIED_SINCE = 70, - - WINHTTP_QUERY_PROXY_SUPPORT = 75, - WINHTTP_QUERY_AUTHENTICATION_INFO = 76, - WINHTTP_QUERY_PASSPORT_URLS = 77, - WINHTTP_QUERY_PASSPORT_CONFIG = 78, - - WINHTTP_QUERY_MAX = 78, - - WINHTTP_QUERY_CUSTOM = 65535, - - WINHTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, - - WINHTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, - - WINHTTP_QUERY_FLAG_NUMBER = 0x20000000 -} - -enum : DWORD { - HTTP_STATUS_CONTINUE = 100, - HTTP_STATUS_SWITCH_PROTOCOLS = 101, - - HTTP_STATUS_OK = 200, - HTTP_STATUS_CREATED = 201, - HTTP_STATUS_ACCEPTED = 202, - HTTP_STATUS_PARTIAL = 203, - HTTP_STATUS_NO_CONTENT = 204, - HTTP_STATUS_RESET_CONTENT = 205, - HTTP_STATUS_PARTIAL_CONTENT = 206, - HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, - - HTTP_STATUS_AMBIGUOUS = 300, - HTTP_STATUS_MOVED = 301, - HTTP_STATUS_REDIRECT = 302, - HTTP_STATUS_REDIRECT_METHOD = 303, - HTTP_STATUS_NOT_MODIFIED = 304, - HTTP_STATUS_USE_PROXY = 305, - HTTP_STATUS_REDIRECT_KEEP_VERB = 307, - - HTTP_STATUS_BAD_REQUEST = 400, - HTTP_STATUS_DENIED = 401, - HTTP_STATUS_PAYMENT_REQ = 402, - HTTP_STATUS_FORBIDDEN = 403, - HTTP_STATUS_NOT_FOUND = 404, - HTTP_STATUS_BAD_METHOD = 405, - HTTP_STATUS_NONE_ACCEPTABLE = 406, - HTTP_STATUS_PROXY_AUTH_REQ = 407, - HTTP_STATUS_REQUEST_TIMEOUT = 408, - HTTP_STATUS_CONFLICT = 409, - HTTP_STATUS_GONE = 410, - HTTP_STATUS_LENGTH_REQUIRED = 411, - HTTP_STATUS_PRECOND_FAILED = 412, - HTTP_STATUS_REQUEST_TOO_LARGE = 413, - HTTP_STATUS_URI_TOO_LONG = 414, - HTTP_STATUS_UNSUPPORTED_MEDIA = 415, - HTTP_STATUS_RETRY_WITH = 449, - - HTTP_STATUS_SERVER_ERROR = 500, - HTTP_STATUS_NOT_SUPPORTED = 501, - HTTP_STATUS_BAD_GATEWAY = 502, - HTTP_STATUS_SERVICE_UNAVAIL = 503, - HTTP_STATUS_GATEWAY_TIMEOUT = 504, - HTTP_STATUS_VERSION_NOT_SUP = 505, - - HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE, - HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP -} - -enum LPCWSTR WINHTTP_NO_REFERER = null; -enum LPCWSTR * WINHTTP_DEFAULT_ACCEPT_TYPES = null; - -enum : DWORD { - WINHTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, - WINHTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, - - WINHTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, - - WINHTTP_ADDREQ_FLAG_ADD = 0x20000000, - - WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, - WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, - WINHTTP_ADDREQ_FLAG_COALESCE = WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, - - WINHTTP_ADDREQ_FLAG_REPLACE = 0x80000000, - - WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH = 0 -} - -enum LPCWSTR WINHTTP_NO_ADDITIONAL_HEADERS = null; -enum LPVOID WINHTTP_NO_REQUEST_DATA = null; - -enum LPCWSTR WINHTTP_HEADER_NAME_BY_INDEX = null; -enum LPVOID WINHTTP_NO_OUTPUT_BUFFER = null; -enum LPDWORD WINHTTP_NO_HEADER_INDEX = null; - -struct WINHTTP_CURRENT_USER_IE_PROXY_CONFIG { - BOOL fAutoDetect; - LPWSTR lpszAutoConfigUrl; - LPWSTR lpszProxy; - LPWSTR lpszProxyBypass; -} - -// WinHttp API error returns -enum : DWORD { - WINHTTP_ERROR_BASE = 12000, - - ERROR_WINHTTP_OUT_OF_HANDLES = (WINHTTP_ERROR_BASE + 1), - ERROR_WINHTTP_TIMEOUT = (WINHTTP_ERROR_BASE + 2), - ERROR_WINHTTP_INTERNAL_ERROR = (WINHTTP_ERROR_BASE + 4), - ERROR_WINHTTP_INVALID_URL = (WINHTTP_ERROR_BASE + 5), - ERROR_WINHTTP_UNRECOGNIZED_SCHEME = (WINHTTP_ERROR_BASE + 6), - ERROR_WINHTTP_NAME_NOT_RESOLVED = (WINHTTP_ERROR_BASE + 7), - ERROR_WINHTTP_INVALID_OPTION = (WINHTTP_ERROR_BASE + 9), - ERROR_WINHTTP_OPTION_NOT_SETTABLE = (WINHTTP_ERROR_BASE + 11), - ERROR_WINHTTP_SHUTDOWN = (WINHTTP_ERROR_BASE + 12), - - ERROR_WINHTTP_LOGIN_FAILURE = (WINHTTP_ERROR_BASE + 15), - ERROR_WINHTTP_OPERATION_CANCELLED = (WINHTTP_ERROR_BASE + 17), - ERROR_WINHTTP_INCORRECT_HANDLE_TYPE = (WINHTTP_ERROR_BASE + 18), - ERROR_WINHTTP_INCORRECT_HANDLE_STATE = (WINHTTP_ERROR_BASE + 19), - ERROR_WINHTTP_CANNOT_CONNECT = (WINHTTP_ERROR_BASE + 29), - ERROR_WINHTTP_CONNECTION_ERROR = (WINHTTP_ERROR_BASE + 30), - ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), - - ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE, + 44), - - ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), - ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), - ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = (WINHTTP_ERROR_BASE + 102), - ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN = (WINHTTP_ERROR_BASE + 103), - - ERROR_WINHTTP_HEADER_NOT_FOUND = (WINHTTP_ERROR_BASE + 150), - ERROR_WINHTTP_INVALID_SERVER_RESPONSE = (WINHTTP_ERROR_BASE + 152), - ERROR_WINHTTP_INVALID_HEADER = (WINHTTP_ERROR_BASE + 153), - ERROR_WINHTTP_INVALID_QUERY_REQUEST = (WINHTTP_ERROR_BASE + 154), - ERROR_WINHTTP_HEADER_ALREADY_EXISTS = (WINHTTP_ERROR_BASE + 155), - ERROR_WINHTTP_REDIRECT_FAILED = (WINHTTP_ERROR_BASE + 156), - - ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR = (WINHTTP_ERROR_BASE + 178), - ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT = (WINHTTP_ERROR_BASE + 166), - ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT = (WINHTTP_ERROR_BASE + 167), - ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE = (WINHTTP_ERROR_BASE + 176), - ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR = (WINHTTP_ERROR_BASE + 177), - - ERROR_WINHTTP_NOT_INITIALIZED = (WINHTTP_ERROR_BASE + 172), - ERROR_WINHTTP_SECURE_FAILURE = (WINHTTP_ERROR_BASE + 175), - - ERROR_WINHTTP_SECURE_CERT_DATE_INVALID = (WINHTTP_ERROR_BASE + 37), - ERROR_WINHTTP_SECURE_CERT_CN_INVALID = (WINHTTP_ERROR_BASE + 38), - ERROR_WINHTTP_SECURE_INVALID_CA = (WINHTTP_ERROR_BASE + 45), - ERROR_WINHTTP_SECURE_CERT_REV_FAILED = (WINHTTP_ERROR_BASE + 57), - ERROR_WINHTTP_SECURE_CHANNEL_ERROR = (WINHTTP_ERROR_BASE + 157), - ERROR_WINHTTP_SECURE_INVALID_CERT = (WINHTTP_ERROR_BASE + 169), - ERROR_WINHTTP_SECURE_CERT_REVOKED = (WINHTTP_ERROR_BASE + 170), - ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE = (WINHTTP_ERROR_BASE + 179), - - ERROR_WINHTTP_AUTODETECTION_FAILED = (WINHTTP_ERROR_BASE + 180), - ERROR_WINHTTP_HEADER_COUNT_EXCEEDED = (WINHTTP_ERROR_BASE + 181), - ERROR_WINHTTP_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 182), - ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 183), - ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW = (WINHTTP_ERROR_BASE + 184), - ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 185), - ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 186), - - WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) -} - -enum : DWORD { - WINHTTP_RESET_STATE = 0x00000001, - WINHTTP_RESET_SWPAD_CURRENT_NETWORK = 0x00000002, - WINHTTP_RESET_SWPAD_ALL = 0x00000004, - WINHTTP_RESET_SCRIPT_CACHE = 0x00000008, - WINHTTP_RESET_ALL = 0x0000FFFF, - WINHTTP_RESET_NOTIFY_NETWORK_CHANGED = 0x00010000, - WINHTTP_RESET_OUT_OF_PROC = 0x00020000 -} - -enum : DWORD { - WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123, - WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 15000 -} - -// Version(Windows8) || Version(Windows2012): -static if (_WIN32_WINNT >= 0x602) -{ - enum WINHTTP_WEB_SOCKET_OPERATION : DWORD - { - WINHTTP_WEB_SOCKET_SEND_OPERATION = 0, - WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1, - WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2, - WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3 - } - enum WINHTTP_WEB_SOCKET_BUFFER_TYPE : DWORD - { - WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0, - WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1, - WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2, - WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3, - WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4 - } - enum WINHTTP_WEB_SOCKET_CLOSE_STATUS : DWORD - { - WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000, - WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001, - WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002, - WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003, - WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005, - WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006, - WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007, - WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008, - WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009, - WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010, - WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011, - WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015 - } - struct WINHTTP_PROXY_RESULT_ENTRY { - BOOL fProxy; - BOOL fBypass; - INTERNET_SCHEME ProxyScheme; - PWSTR pwszProxy; - INTERNET_PORT ProxyPort; - } - struct WINHTTP_PROXY_RESULT { - DWORD cEntries; - WINHTTP_PROXY_RESULT_ENTRY *pEntries; - } - struct WINHTTP_WEB_SOCKET_ASYNC_RESULT { - WINHTTP_ASYNC_RESULT AsyncResult; - WINHTTP_WEB_SOCKET_OPERATION Operation; - } - struct WINHTTP_WEB_SOCKET_STATUS { - DWORD dwBytesTransferred; - WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType; - } -} - - -extern (Windows) { - BOOL WinHttpAddRequestHeaders(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, DWORD dwModifiers); - - BOOL WinHttpCheckPlatform(); - - BOOL WinHttpCloseHandle(HINTERNET hInternet); - - HINTERNET WinHttpConnect(HINTERNET hSession, LPCWSTR pswzServerName, INTERNET_PORT nServerPort, DWORD dwReserved); - - BOOL WinHttpCrackUrl(LPCWSTR pwszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents); - - BOOL WinHttpCreateUrl(LPURL_COMPONENTS lpUrlComponents, DWORD dwFlags, LPWSTR pwszUrl, LPDWORD lpdwUrlLength); - BOOL WinHttpDetectAutoProxyConfigUrl(DWORD dwAutoDetectFlags, LPWSTR *ppwszAutoConfigUrl); - - BOOL WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); - BOOL WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig); - BOOL WinHttpGetProxyForUrl(HINTERNET hSession, LPCWSTR lpcwszUrl, - WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, WINHTTP_PROXY_INFO *pProxyInfo); - - HINTERNET WinHttpOpen(LPCWSTR pwszUserAgent, DWORD dwAccessType, LPCWSTR pwszProxyName, - LPCWSTR pwszProxyBypass, DWORD dwFlags); - HINTERNET WinHttpOpenRequest(HINTERNET hConnect, LPCWSTR pwszVerb, LPCWSTR pwszObjectName, - LPCWSTR pwszVersion, LPCWSTR pwszReferrer, - LPCWSTR *ppwszAcceptTypes, DWORD dwFlags); - - BOOL WinHttpQueryAuthSchemes(HINTERNET hRequest, LPDWORD lpdwSupportedSchemes, - LPDWORD lpdwFirstScheme, LPDWORD pdwAuthTarget); - BOOL WinHttpQueryDataAvailable(HINTERNET hRequest, LPDWORD lpdwNumberOfBytesAvailable); - BOOL WinHttpQueryHeaders(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName, - LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex); - BOOL WinHttpQueryOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, - LPDWORD lpdwBufferLength); - - BOOL WinHttpReadData(HINTERNET hRequest, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, - LPDWORD lpdwNumberOfBytesRead); - BOOL WinHttpReceiveResponse(HINTERNET hRequest, LPVOID lpReserved); - - BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, - LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext); - - BOOL WinHttpSetCredentials(HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, - LPCWSTR pwszUserName, LPCWSTR pwszPassword, LPVOID pAuthParams); - BOOL WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); - BOOL WinHttpSetOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength); - WINHTTP_STATUS_CALLBACK WinHttpSetStatusCallback(HINTERNET hInternet, - WINHTTP_STATUS_CALLBACK lpfnInternetCallback, - DWORD dwNotificationFlags, DWORD_PTR dwReserved); - BOOL WinHttpSetTimeouts(HINTERNET hInternet, int dwResolveTimeout, int dwConnectTimeout, - int dwSendTimeout, int dwReceiveTimeout); - - BOOL WinHttpTimeFromSystemTime(const SYSTEMTIME *pst, LPWSTR pwszTime); - BOOL WinHttpTimeToSystemTime(LPCWSTR pwszTime, SYSTEMTIME *pst); - - BOOL WinHttpWriteData(HINTERNET hRequest, LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, - LPDWORD lpdwNumberOfBytesWritten); - - // Version(Windows8) || Version(Windows2012): - static if (_WIN32_WINNT >= 0x602) { - DWORD WinHttpCreateProxyResolver(HINTERNET hSession, HINTERNET *phResolver); - void WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT *pProxyResult); - DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, - WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, DWORD_PTR pContext); - DWORD WinHttpGetProxyResult(HINTERNET hResolver, WINHTTP_PROXY_RESULT *pProxyResult); - DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); - DWORD WinHttpWebSocketClose(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); - HINTERNET WinHttpWebSocketCompleteUpgrade(HINTERNET hRequest, DWORD_PTR pContext); - DWORD WinHttpWebSocketQueryCloseStatus(HINTERNET hWebSocket, USHORT *pusStatus, PVOID pvReason, - DWORD dwReasonLength, DWORD *pdwReasonLengthConsumed); - DWORD WinHttpWebSocketReceive(HINTERNET hWebSocket, PVOID pvBuffer, DWORD dwBufferLength, - DWORD *pdwBytesRead, WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType); - DWORD WinHttpWebSocketSend(HINTERNET hWebSocket, WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType, - PVOID pvBuffer, DWORD dwBufferLength); - DWORD WinHttpWebSocketShutdown(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); - } -} +/** + * Windows API header module + * + * Translated from Windows SDK Headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winhttp.d) + */ +module win32.winhttp; +pragma(lib, "winhttp"); +// FIXME: Grouping of constants. Windows SDK doesn't make this entirely clear +// FIXME: Verify WINHTTP_STATUS_CALLBACK function declaration works correctly + +import win32.w32api; +import win32.winbase; +import win32.windef; +import win32.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) + +alias HINTERNET = void*; +alias LPHINTERNET = HINTERNET*; +alias INTERNET_PORT = WORD; +alias LPINTERNET_PORT = INTERNET_PORT*; +alias INTERNET_SCHEME = int; +alias LPINTERNET_SCHEME = INTERNET_SCHEME*; + +// Protocol 'Manifests' +enum : DWORD { + INTERNET_DEFAULT_PORT = 0, + INTERNET_DEFAULT_HTTP_PORT = 80, + INTERNET_DEFAULT_HTTPS_PORT = 443 +} + +// WinHttpOpen() Flags: +enum DWORD WINHTTP_FLAG_ASYNC = 0x10000000; + +// WinHttpOpenRequest() Flags: +enum : DWORD { + WINHTTP_FLAG_SECURE = 0x00800000, + WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, + WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, + WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, + WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, + WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, + WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, + + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, + SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = 0x00000200 +} + +struct WINHTTP_ASYNC_RESULT { + DWORD_PTR dwResult; + DWORD dwError; +} +alias LPWINHTTP_ASYNC_RESULT = WINHTTP_ASYNC_RESULT*; + +struct HTTP_VERSION_INFO { + DWORD dwMajorVersion; + DWORD dwMinorVersion; +} +alias LPHTTP_VERSION_INFO = HTTP_VERSION_INFO*; + +// URL Scheme +enum : DWORD { + INTERNET_SCHEME_HTTP = 1, + INTERNET_SCHEME_HTTPS = 2, + INTERNET_SCHEME_FTP = 3, + INTERNET_SCHEME_SOCKS = 4 +} + +struct URL_COMPONENTS { + DWORD dwStructSize; + LPWSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPWSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPWSTR lpszUserName; + DWORD dwUserNameLength; + LPWSTR lpszPassword; + DWORD dwPasswordLength; + LPWSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPWSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} +alias LPURL_COMPONENTS = URL_COMPONENTS*; +alias URL_COMPONENTSW = URL_COMPONENTS; +alias LPURL_COMPONENTSW = URL_COMPONENTS*; + +struct WINHTTP_PROXY_INFO { + DWORD dwAccessType; + LPWSTR lpszProxy; + LPWSTR lpszProxyBypass; +} +alias LPWINHTTP_PROXY_INFO = WINHTTP_PROXY_INFO*; +alias WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO; +alias LPWINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO*; + +struct WINHTTP_AUTOPROXY_OPTIONS { + DWORD dwFlags; + DWORD dwAutoDetectFlags; + LPCWSTR lpszAutoConfigUrl; + LPVOID lpvReserved; + DWORD dwReserved; + BOOL fAutoLogonIfChallenged; +} + +enum : DWORD { + WINHTTP_AUTOPROXY_AUTO_DETECT = 0x00000001, + WINHTTP_AUTOPROXY_CONFIG_URL = 0x00000002, + WINHTTP_AUTOPROXY_HOST_KEEPCASE = 0x00000004, + WINHTTP_AUTOPROXY_HOST_LOWERCASE = 0x00000008, + WINHTTP_AUTOPROXY_RUN_INPROCESS = 0x00010000, + WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = 0x00020000, + WINHTTP_AUTOPROXY_NO_DIRECTACCESS = 0x00040000, + WINHTTP_AUTOPROXY_NO_CACHE_CLIENT = 0x00080000, + WINHTTP_AUTOPROXY_NO_CACHE_SVC = 0x00100000, + + WINHTTP_AUTOPROXY_SORT_RESULTS = 0x00400000 +} + +// dwAutoDetectFlags +enum : DWORD { + WINHTTP_AUTO_DETECT_TYPE_DHCP = 0x00000001, + WINHTTP_AUTO_DETECT_TYPE_DNS_A = 0x00000002 +} + +struct WINHTTP_CERTIFICATE_INFO { + FILETIME ftExpiry; + FILETIME ftStart; + LPWSTR lpszSubjectInfo; + LPWSTR lpszIssuerInfo; + LPWSTR lpszProtocolName; + LPWSTR lpszSignatureAlgName; + LPWSTR lpszEncryptionAlgName; + DWORD dwKeySize; +} + +// This structure is only defined #if _WS2DEF_ defined (from ) - per Windows SDK +struct WINHTTP_CONNECTION_INFO { + DWORD cbSize; + SOCKADDR_STORAGE LocalAddress; + SOCKADDR_STORAGE RemoteAddress; +} + +// WinHttpTimeFromSystemTime +enum DWORD WINHTTP_TIME_FORMAT_BUFSIZE = 62; + +// CrackUrl, CombineUrl +enum : DWORD { + ICU_NO_ENCODE = 0x20000000, + ICU_DECODE = 0x10000000, + ICU_NO_META = 0x08000000, + ICU_ENCODE_SPACES_ONLY = 0x04000000, + ICU_BROWSER_MODE = 0x02000000, + ICU_ENCODE_PERCENT = 0x00001000 +} +// WinHttpCrackUrl, WinHttpCreateUrl +enum : DWORD { + ICU_ESCAPE = 0x80000000, + ICU_ESCAPE_AUTHORITY = 0x00002000, + ICU_REJECT_USERPWD = 0x00004000 +} +enum : DWORD { + WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, + WINHTTP_ACCESS_TYPE_NO_PROXY = 1, + WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, + WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4 +} +// WinHttpOpen 'prettifiers' +enum LPCWSTR WINHTTP_NO_PROXY_NAME = null; +enum LPCWSTR WINHTTP_NO_PROXY_BYPASS = null; + +enum LPVOID WINHTTP_NO_CLIENT_CERT_CONTEXT = null; + +// WinHttp{Query|Set}Option +enum : DWORD { + WINHTTP_FIRST_OPTION = WINHTTP_OPTION_CALLBACK, + + WINHTTP_OPTION_CALLBACK = 1, + WINHTTP_OPTION_RESOLVE_TIMEOUT = 2, + WINHTTP_OPTION_CONNECT_TIMEOUT = 3, + WINHTTP_OPTION_CONNECT_RETRIES = 4, + WINHTTP_OPTION_SEND_TIMEOUT = 5, + WINHTTP_OPTION_RECEIVE_TIMEOUT = 6, + WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT = 7, + WINHTTP_OPTION_HANDLE_TYPE = 9, + WINHTTP_OPTION_READ_BUFFER_SIZE = 12, + WINHTTP_OPTION_WRITE_BUFFER_SIZE = 13, + WINHTTP_OPTION_PARENT_HANDLE = 21, + WINHTTP_OPTION_EXTENDED_ERROR = 24, + WINHTTP_OPTION_SECURITY_FLAGS = 31, + WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT = 32, + WINHTTP_OPTION_URL = 34, + WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36, + WINHTTP_OPTION_PROXY = 38, + WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39, + + WINHTTP_OPTION_USER_AGENT = 41, + WINHTTP_OPTION_CONTEXT_VALUE = 45, + WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47, + WINHTTP_OPTION_REQUEST_PRIORITY = 58, + WINHTTP_OPTION_HTTP_VERSION = 59, + WINHTTP_OPTION_DISABLE_FEATURE = 63, + + WINHTTP_OPTION_CODEPAGE = 68, + WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73, + WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74, + WINHTTP_OPTION_AUTOLOGON_POLICY = 77, + WINHTTP_OPTION_SERVER_CERT_CONTEXT = 78, + WINHTTP_OPTION_ENABLE_FEATURE = 79, + WINHTTP_OPTION_WORKER_THREAD_COUNT = 80, + WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT = 81, + WINHTTP_OPTION_PASSPORT_COBRANDING_URL = 82, + WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH = 83, + WINHTTP_OPTION_SECURE_PROTOCOLS = 84, + WINHTTP_OPTION_ENABLETRACING = 85, + WINHTTP_OPTION_PASSPORT_SIGN_OUT = 86, + WINHTTP_OPTION_PASSPORT_RETURN_URL = 87, + WINHTTP_OPTION_REDIRECT_POLICY = 88, + WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS = 89, + WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE = 90, + WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE = 91, + WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE = 92, + WINHTTP_OPTION_CONNECTION_INFO = 93, + WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94, + WINHTTP_OPTION_SPN = 96, + + WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97, + WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98, + + WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT = 99, + WINHTTP_OPTION_REJECT_USERPWD_IN_URL = 100, + WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS = 101, + + WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE = 103, + WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE = 104, + + WINHTTP_OPTION_SERVER_SPN_USED = 106, + WINHTTP_OPTION_PROXY_SPN_USED = 107, + + WINHTTP_OPTION_SERVER_CBT = 108, + + WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110, + WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111, + + WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114, + WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT = 115, + WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116, + + WINHTTP_OPTION_DECOMPRESSION = 118, + + WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE = 122, + WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE = 123, + + //WINHTTP_LAST_OPTION => Moved outside of enum - static if() constraints within enums + + WINHTTP_OPTION_USERNAME = 0x1000, + WINHTTP_OPTION_PASSWORD = 0x1001, + WINHTTP_OPTION_PROXY_USERNAME = 0x1002, + WINHTTP_OPTION_PROXY_PASSWORD = 0x1003, + + WINHTTP_CONNS_PER_SERVER_UNLIMITED = 0xFFFFFFFF, + + WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0, + WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1, + WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2, + + WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM, + + WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0, + WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1, + WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2, + + WINHTTP_OPTION_REDIRECT_POLICY_LAST = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS, + WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, + + WINHTTP_DISABLE_PASSPORT_AUTH = 0x00000000, + WINHTTP_ENABLE_PASSPORT_AUTH = 0x10000000, + WINHTTP_DISABLE_PASSPORT_KEYRING = 0x20000000, + WINHTTP_ENABLE_PASSPORT_KEYRING = 0x40000000, + + WINHTTP_DISABLE_COOKIES = 0x00000001, + WINHTTP_DISABLE_REDIRECTS = 0x00000002, + WINHTTP_DISABLE_AUTHENTICATION = 0x00000004, + WINHTTP_DISABLE_KEEP_ALIVE = 0x00000008, + + WINHTTP_ENABLE_SSL_REVOCATION = 0x00000001, + WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = 0x00000002, + + WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000, + WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001, + WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT +} + +// Windows 8.1 SDK: +static if (_WIN32_WINNT >= 0x602) { + enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; +} else { // Windows 7.0A SDK: + enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; +} + +enum : DWORD { + WINHTTP_DECOMPRESSION_FLAG_GZIP = 0x00000001, + WINHTTP_DECOMPRESSION_FLAG_DEFLATE = 0x00000002, + WINHTTP_DECOMPRESSION_FLAG_ALL = (WINHTTP_DECOMPRESSION_FLAG_GZIP | WINHTTP_DECOMPRESSION_FLAG_DEFLATE) +} + +struct WINHTTP_CREDS { + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; + DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; +} +alias PWINHTTP_CREDS = WINHTTP_CREDS*; + +struct WINHTTP_CREDS_EX { + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; + DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; + LPSTR lpszUrl; +} +alias PWINHTTP_CREDS_EX = WINHTTP_CREDS_EX*; + +enum : DWORD { + WINHTTP_HANDLE_TYPE_SESSION = 1, + WINHTTP_HANDLE_TYPE_CONNECT = 2, + WINHTTP_HANDLE_TYPE_REQUEST = 3, + + WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, + WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, + WINHTTP_AUTH_SCHEME_PASSPORT = 0x00000004, + WINHTTP_AUTH_SCHEME_DIGEST = 0x00000008, + WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, + + WINHTTP_AUTH_TARGET_SERVER = 0x00000000, + WINHTTP_AUTH_TARGET_PROXY = 0x00000001, + + SECURITY_FLAG_SECURE = 0x00000001, + SECURITY_FLAG_STRENGTH_WEAK = 0x10000000, + SECURITY_FLAG_STRENGTH_MEDIUM = 0x40000000, + SECURITY_FLAG_STRENGTH_STRONG = 0x20000000, + + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = 0x00000001, + WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = 0x00000002, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = 0x00000004, + WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA = 0x00000008, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID = 0x00000010, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID = 0x00000020, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE = 0x00000040, + WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR = 0x80000000, + + WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 = 0x00000008, + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 = 0x00000020, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = 0x00000080, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = 0x00000200, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = 0x00000800, + WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1) +} + +alias extern(Windows) int fnWINHTTP_STATUS_CALLBACK(HINTERNET hInternet, DWORD_PTR dwContext, + DWORD dwInternetStatus, LPVOID lpvStatusInformation,DWORD dwStatusInformationLength); +alias WINHTTP_STATUS_CALLBACK = fnWINHTTP_STATUS_CALLBACK*; +alias LPWINHTTP_STATUS_CALLBACK = WINHTTP_STATUS_CALLBACK*; + +enum : DWORD { + WINHTTP_CALLBACK_STATUS_RESOLVING_NAME = 0x00000001, + WINHTTP_CALLBACK_STATUS_NAME_RESOLVED = 0x00000002, + WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER = 0x00000004, + WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER = 0x00000008, + WINHTTP_CALLBACK_STATUS_SENDING_REQUEST = 0x00000010, + WINHTTP_CALLBACK_STATUS_REQUEST_SENT = 0x00000020, + WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE = 0x00000040, + WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED = 0x00000080, + WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION = 0x00000100, + WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED = 0x00000200, + WINHTTP_CALLBACK_STATUS_HANDLE_CREATED = 0x00000400, + WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING = 0x00000800, + WINHTTP_CALLBACK_STATUS_DETECTING_PROXY = 0x00001000, + WINHTTP_CALLBACK_STATUS_REDIRECT = 0x00004000, + WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE = 0x00008000, + WINHTTP_CALLBACK_STATUS_SECURE_FAILURE = 0x00010000, + WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE = 0x00020000, + WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE = 0x00040000, + WINHTTP_CALLBACK_STATUS_READ_COMPLETE = 0x00080000, + WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE = 0x00100000, + WINHTTP_CALLBACK_STATUS_REQUEST_ERROR = 0x00200000, + WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE = 0x00400000 +} + +enum : DWORD { + WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE = 0x01000000, + WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE = 0x02000000, + WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE = 0x04000000 +} + +enum : DWORD { + API_RECEIVE_RESPONSE = 1, + API_QUERY_DATA_AVAILABLE = 2, + API_READ_DATA = 3, + API_WRITE_DATA = 4, + API_SEND_REQUEST = 5 +} + +enum : DWORD { + WINHTTP_CALLBACK_FLAG_RESOLVE_NAME = (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED), + WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER = (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER), + WINHTTP_CALLBACK_FLAG_SEND_REQUEST = (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT), + WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE = (WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED), + WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION = (WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED), + WINHTTP_CALLBACK_FLAG_HANDLES = (WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING), + WINHTTP_CALLBACK_FLAG_DETECTING_PROXY = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY, + WINHTTP_CALLBACK_FLAG_REDIRECT = WINHTTP_CALLBACK_STATUS_REDIRECT, + WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE, + WINHTTP_CALLBACK_FLAG_SECURE_FAILURE = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, + WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE, + WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, + WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE, + WINHTTP_CALLBACK_FLAG_READ_COMPLETE = WINHTTP_CALLBACK_STATUS_READ_COMPLETE, + WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE, + WINHTTP_CALLBACK_FLAG_REQUEST_ERROR = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR +} + +enum DWORD WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE = WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE; + +// Windows 8+/2012+ +static if (_WIN32_WINNT >= 0x602) { + enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE + | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE + | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE + | WINHTTP_CALLBACK_STATUS_READ_COMPLETE + | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE + | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR); +} else { + enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE + | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE + | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE + | WINHTTP_CALLBACK_STATUS_READ_COMPLETE + | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE + | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR + | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE); +} + +enum DWORD WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS = 0xffffffff; + +enum WINHTTP_INVALID_STATUS_CALLBACK = (cast(WINHTTP_STATUS_CALLBACK)(-1L)); + +enum : DWORD { + WINHTTP_QUERY_MIME_VERSION = 0, + WINHTTP_QUERY_CONTENT_TYPE = 1, + WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2, + WINHTTP_QUERY_CONTENT_ID = 3, + WINHTTP_QUERY_CONTENT_DESCRIPTION = 4, + WINHTTP_QUERY_CONTENT_LENGTH = 5, + WINHTTP_QUERY_CONTENT_LANGUAGE = 6, + WINHTTP_QUERY_ALLOW = 7, + WINHTTP_QUERY_PUBLIC = 8, + WINHTTP_QUERY_DATE = 9, + WINHTTP_QUERY_EXPIRES = 10, + WINHTTP_QUERY_LAST_MODIFIED = 11, + WINHTTP_QUERY_MESSAGE_ID = 12, + WINHTTP_QUERY_URI = 13, + WINHTTP_QUERY_DERIVED_FROM = 14, + WINHTTP_QUERY_COST = 15, + WINHTTP_QUERY_LINK = 16, + WINHTTP_QUERY_PRAGMA = 17, + WINHTTP_QUERY_VERSION = 18, + WINHTTP_QUERY_STATUS_CODE = 19, + WINHTTP_QUERY_STATUS_TEXT = 20, + WINHTTP_QUERY_RAW_HEADERS = 21, + WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, + WINHTTP_QUERY_CONNECTION = 23, + WINHTTP_QUERY_ACCEPT = 24, + WINHTTP_QUERY_ACCEPT_CHARSET = 25, + WINHTTP_QUERY_ACCEPT_ENCODING = 26, + WINHTTP_QUERY_ACCEPT_LANGUAGE = 27, + WINHTTP_QUERY_AUTHORIZATION = 28, + WINHTTP_QUERY_CONTENT_ENCODING = 29, + WINHTTP_QUERY_FORWARDED = 30, + WINHTTP_QUERY_FROM = 31, + WINHTTP_QUERY_IF_MODIFIED_SINCE = 32, + WINHTTP_QUERY_LOCATION = 33, + WINHTTP_QUERY_ORIG_URI = 34, + WINHTTP_QUERY_REFERER = 35, + WINHTTP_QUERY_RETRY_AFTER = 36, + WINHTTP_QUERY_SERVER = 37, + WINHTTP_QUERY_TITLE = 38, + WINHTTP_QUERY_USER_AGENT = 39, + WINHTTP_QUERY_WWW_AUTHENTICATE = 40, + WINHTTP_QUERY_PROXY_AUTHENTICATE = 41, + WINHTTP_QUERY_ACCEPT_RANGES = 42, + WINHTTP_QUERY_SET_COOKIE = 43, + WINHTTP_QUERY_COOKIE = 44, + WINHTTP_QUERY_REQUEST_METHOD = 45, + WINHTTP_QUERY_REFRESH = 46, + WINHTTP_QUERY_CONTENT_DISPOSITION = 47, + + // HTTP 1.1 defined headers + + WINHTTP_QUERY_AGE = 48, + WINHTTP_QUERY_CACHE_CONTROL = 49, + WINHTTP_QUERY_CONTENT_BASE = 50, + WINHTTP_QUERY_CONTENT_LOCATION = 51, + WINHTTP_QUERY_CONTENT_MD5 = 52, + WINHTTP_QUERY_CONTENT_RANGE = 53, + WINHTTP_QUERY_ETAG = 54, + WINHTTP_QUERY_HOST = 55, + WINHTTP_QUERY_IF_MATCH = 56, + WINHTTP_QUERY_IF_NONE_MATCH = 57, + WINHTTP_QUERY_IF_RANGE = 58, + WINHTTP_QUERY_IF_UNMODIFIED_SINCE = 59, + WINHTTP_QUERY_MAX_FORWARDS = 60, + WINHTTP_QUERY_PROXY_AUTHORIZATION = 61, + WINHTTP_QUERY_RANGE = 62, + WINHTTP_QUERY_TRANSFER_ENCODING = 63, + WINHTTP_QUERY_UPGRADE = 64, + WINHTTP_QUERY_VARY = 65, + WINHTTP_QUERY_VIA = 66, + WINHTTP_QUERY_WARNING = 67, + WINHTTP_QUERY_EXPECT = 68, + WINHTTP_QUERY_PROXY_CONNECTION = 69, + WINHTTP_QUERY_UNLESS_MODIFIED_SINCE = 70, + + WINHTTP_QUERY_PROXY_SUPPORT = 75, + WINHTTP_QUERY_AUTHENTICATION_INFO = 76, + WINHTTP_QUERY_PASSPORT_URLS = 77, + WINHTTP_QUERY_PASSPORT_CONFIG = 78, + + WINHTTP_QUERY_MAX = 78, + + WINHTTP_QUERY_CUSTOM = 65535, + + WINHTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, + + WINHTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, + + WINHTTP_QUERY_FLAG_NUMBER = 0x20000000 +} + +enum : DWORD { + HTTP_STATUS_CONTINUE = 100, + HTTP_STATUS_SWITCH_PROTOCOLS = 101, + + HTTP_STATUS_OK = 200, + HTTP_STATUS_CREATED = 201, + HTTP_STATUS_ACCEPTED = 202, + HTTP_STATUS_PARTIAL = 203, + HTTP_STATUS_NO_CONTENT = 204, + HTTP_STATUS_RESET_CONTENT = 205, + HTTP_STATUS_PARTIAL_CONTENT = 206, + HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, + + HTTP_STATUS_AMBIGUOUS = 300, + HTTP_STATUS_MOVED = 301, + HTTP_STATUS_REDIRECT = 302, + HTTP_STATUS_REDIRECT_METHOD = 303, + HTTP_STATUS_NOT_MODIFIED = 304, + HTTP_STATUS_USE_PROXY = 305, + HTTP_STATUS_REDIRECT_KEEP_VERB = 307, + + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_DENIED = 401, + HTTP_STATUS_PAYMENT_REQ = 402, + HTTP_STATUS_FORBIDDEN = 403, + HTTP_STATUS_NOT_FOUND = 404, + HTTP_STATUS_BAD_METHOD = 405, + HTTP_STATUS_NONE_ACCEPTABLE = 406, + HTTP_STATUS_PROXY_AUTH_REQ = 407, + HTTP_STATUS_REQUEST_TIMEOUT = 408, + HTTP_STATUS_CONFLICT = 409, + HTTP_STATUS_GONE = 410, + HTTP_STATUS_LENGTH_REQUIRED = 411, + HTTP_STATUS_PRECOND_FAILED = 412, + HTTP_STATUS_REQUEST_TOO_LARGE = 413, + HTTP_STATUS_URI_TOO_LONG = 414, + HTTP_STATUS_UNSUPPORTED_MEDIA = 415, + HTTP_STATUS_RETRY_WITH = 449, + + HTTP_STATUS_SERVER_ERROR = 500, + HTTP_STATUS_NOT_SUPPORTED = 501, + HTTP_STATUS_BAD_GATEWAY = 502, + HTTP_STATUS_SERVICE_UNAVAIL = 503, + HTTP_STATUS_GATEWAY_TIMEOUT = 504, + HTTP_STATUS_VERSION_NOT_SUP = 505, + + HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE, + HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP +} + +enum LPCWSTR WINHTTP_NO_REFERER = null; +enum LPCWSTR * WINHTTP_DEFAULT_ACCEPT_TYPES = null; + +enum : DWORD { + WINHTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, + WINHTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, + + WINHTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, + + WINHTTP_ADDREQ_FLAG_ADD = 0x20000000, + + WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, + WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, + WINHTTP_ADDREQ_FLAG_COALESCE = WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, + + WINHTTP_ADDREQ_FLAG_REPLACE = 0x80000000, + + WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH = 0 +} + +enum LPCWSTR WINHTTP_NO_ADDITIONAL_HEADERS = null; +enum LPVOID WINHTTP_NO_REQUEST_DATA = null; + +enum LPCWSTR WINHTTP_HEADER_NAME_BY_INDEX = null; +enum LPVOID WINHTTP_NO_OUTPUT_BUFFER = null; +enum LPDWORD WINHTTP_NO_HEADER_INDEX = null; + +struct WINHTTP_CURRENT_USER_IE_PROXY_CONFIG { + BOOL fAutoDetect; + LPWSTR lpszAutoConfigUrl; + LPWSTR lpszProxy; + LPWSTR lpszProxyBypass; +} + +// WinHttp API error returns +enum : DWORD { + WINHTTP_ERROR_BASE = 12000, + + ERROR_WINHTTP_OUT_OF_HANDLES = (WINHTTP_ERROR_BASE + 1), + ERROR_WINHTTP_TIMEOUT = (WINHTTP_ERROR_BASE + 2), + ERROR_WINHTTP_INTERNAL_ERROR = (WINHTTP_ERROR_BASE + 4), + ERROR_WINHTTP_INVALID_URL = (WINHTTP_ERROR_BASE + 5), + ERROR_WINHTTP_UNRECOGNIZED_SCHEME = (WINHTTP_ERROR_BASE + 6), + ERROR_WINHTTP_NAME_NOT_RESOLVED = (WINHTTP_ERROR_BASE + 7), + ERROR_WINHTTP_INVALID_OPTION = (WINHTTP_ERROR_BASE + 9), + ERROR_WINHTTP_OPTION_NOT_SETTABLE = (WINHTTP_ERROR_BASE + 11), + ERROR_WINHTTP_SHUTDOWN = (WINHTTP_ERROR_BASE + 12), + + ERROR_WINHTTP_LOGIN_FAILURE = (WINHTTP_ERROR_BASE + 15), + ERROR_WINHTTP_OPERATION_CANCELLED = (WINHTTP_ERROR_BASE + 17), + ERROR_WINHTTP_INCORRECT_HANDLE_TYPE = (WINHTTP_ERROR_BASE + 18), + ERROR_WINHTTP_INCORRECT_HANDLE_STATE = (WINHTTP_ERROR_BASE + 19), + ERROR_WINHTTP_CANNOT_CONNECT = (WINHTTP_ERROR_BASE + 29), + ERROR_WINHTTP_CONNECTION_ERROR = (WINHTTP_ERROR_BASE + 30), + ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), + + ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE, + 44), + + ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), + ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), + ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = (WINHTTP_ERROR_BASE + 102), + ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN = (WINHTTP_ERROR_BASE + 103), + + ERROR_WINHTTP_HEADER_NOT_FOUND = (WINHTTP_ERROR_BASE + 150), + ERROR_WINHTTP_INVALID_SERVER_RESPONSE = (WINHTTP_ERROR_BASE + 152), + ERROR_WINHTTP_INVALID_HEADER = (WINHTTP_ERROR_BASE + 153), + ERROR_WINHTTP_INVALID_QUERY_REQUEST = (WINHTTP_ERROR_BASE + 154), + ERROR_WINHTTP_HEADER_ALREADY_EXISTS = (WINHTTP_ERROR_BASE + 155), + ERROR_WINHTTP_REDIRECT_FAILED = (WINHTTP_ERROR_BASE + 156), + + ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR = (WINHTTP_ERROR_BASE + 178), + ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT = (WINHTTP_ERROR_BASE + 166), + ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT = (WINHTTP_ERROR_BASE + 167), + ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE = (WINHTTP_ERROR_BASE + 176), + ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR = (WINHTTP_ERROR_BASE + 177), + + ERROR_WINHTTP_NOT_INITIALIZED = (WINHTTP_ERROR_BASE + 172), + ERROR_WINHTTP_SECURE_FAILURE = (WINHTTP_ERROR_BASE + 175), + + ERROR_WINHTTP_SECURE_CERT_DATE_INVALID = (WINHTTP_ERROR_BASE + 37), + ERROR_WINHTTP_SECURE_CERT_CN_INVALID = (WINHTTP_ERROR_BASE + 38), + ERROR_WINHTTP_SECURE_INVALID_CA = (WINHTTP_ERROR_BASE + 45), + ERROR_WINHTTP_SECURE_CERT_REV_FAILED = (WINHTTP_ERROR_BASE + 57), + ERROR_WINHTTP_SECURE_CHANNEL_ERROR = (WINHTTP_ERROR_BASE + 157), + ERROR_WINHTTP_SECURE_INVALID_CERT = (WINHTTP_ERROR_BASE + 169), + ERROR_WINHTTP_SECURE_CERT_REVOKED = (WINHTTP_ERROR_BASE + 170), + ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE = (WINHTTP_ERROR_BASE + 179), + + ERROR_WINHTTP_AUTODETECTION_FAILED = (WINHTTP_ERROR_BASE + 180), + ERROR_WINHTTP_HEADER_COUNT_EXCEEDED = (WINHTTP_ERROR_BASE + 181), + ERROR_WINHTTP_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 182), + ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 183), + ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW = (WINHTTP_ERROR_BASE + 184), + ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 185), + ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 186), + + WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) +} + +enum : DWORD { + WINHTTP_RESET_STATE = 0x00000001, + WINHTTP_RESET_SWPAD_CURRENT_NETWORK = 0x00000002, + WINHTTP_RESET_SWPAD_ALL = 0x00000004, + WINHTTP_RESET_SCRIPT_CACHE = 0x00000008, + WINHTTP_RESET_ALL = 0x0000FFFF, + WINHTTP_RESET_NOTIFY_NETWORK_CHANGED = 0x00010000, + WINHTTP_RESET_OUT_OF_PROC = 0x00020000 +} + +enum : DWORD { + WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123, + WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 15000 +} + +// Version(Windows8) || Version(Windows2012): +static if (_WIN32_WINNT >= 0x602) +{ + enum WINHTTP_WEB_SOCKET_OPERATION : DWORD + { + WINHTTP_WEB_SOCKET_SEND_OPERATION = 0, + WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1, + WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2, + WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3 + } + enum WINHTTP_WEB_SOCKET_BUFFER_TYPE : DWORD + { + WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0, + WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1, + WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2, + WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3, + WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4 + } + enum WINHTTP_WEB_SOCKET_CLOSE_STATUS : DWORD + { + WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000, + WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001, + WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002, + WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003, + WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005, + WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006, + WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007, + WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008, + WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009, + WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010, + WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011, + WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015 + } + struct WINHTTP_PROXY_RESULT_ENTRY { + BOOL fProxy; + BOOL fBypass; + INTERNET_SCHEME ProxyScheme; + PWSTR pwszProxy; + INTERNET_PORT ProxyPort; + } + struct WINHTTP_PROXY_RESULT { + DWORD cEntries; + WINHTTP_PROXY_RESULT_ENTRY *pEntries; + } + struct WINHTTP_WEB_SOCKET_ASYNC_RESULT { + WINHTTP_ASYNC_RESULT AsyncResult; + WINHTTP_WEB_SOCKET_OPERATION Operation; + } + struct WINHTTP_WEB_SOCKET_STATUS { + DWORD dwBytesTransferred; + WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType; + } +} + + +extern (Windows) { + BOOL WinHttpAddRequestHeaders(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, DWORD dwModifiers); + + BOOL WinHttpCheckPlatform(); + + BOOL WinHttpCloseHandle(HINTERNET hInternet); + + HINTERNET WinHttpConnect(HINTERNET hSession, LPCWSTR pswzServerName, INTERNET_PORT nServerPort, DWORD dwReserved); + + BOOL WinHttpCrackUrl(LPCWSTR pwszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents); + + BOOL WinHttpCreateUrl(LPURL_COMPONENTS lpUrlComponents, DWORD dwFlags, LPWSTR pwszUrl, LPDWORD lpdwUrlLength); + BOOL WinHttpDetectAutoProxyConfigUrl(DWORD dwAutoDetectFlags, LPWSTR *ppwszAutoConfigUrl); + + BOOL WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig); + BOOL WinHttpGetProxyForUrl(HINTERNET hSession, LPCWSTR lpcwszUrl, + WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, WINHTTP_PROXY_INFO *pProxyInfo); + + HINTERNET WinHttpOpen(LPCWSTR pwszUserAgent, DWORD dwAccessType, LPCWSTR pwszProxyName, + LPCWSTR pwszProxyBypass, DWORD dwFlags); + HINTERNET WinHttpOpenRequest(HINTERNET hConnect, LPCWSTR pwszVerb, LPCWSTR pwszObjectName, + LPCWSTR pwszVersion, LPCWSTR pwszReferrer, + LPCWSTR *ppwszAcceptTypes, DWORD dwFlags); + + BOOL WinHttpQueryAuthSchemes(HINTERNET hRequest, LPDWORD lpdwSupportedSchemes, + LPDWORD lpdwFirstScheme, LPDWORD pdwAuthTarget); + BOOL WinHttpQueryDataAvailable(HINTERNET hRequest, LPDWORD lpdwNumberOfBytesAvailable); + BOOL WinHttpQueryHeaders(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName, + LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex); + BOOL WinHttpQueryOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, + LPDWORD lpdwBufferLength); + + BOOL WinHttpReadData(HINTERNET hRequest, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, + LPDWORD lpdwNumberOfBytesRead); + BOOL WinHttpReceiveResponse(HINTERNET hRequest, LPVOID lpReserved); + + BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, + LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext); + + BOOL WinHttpSetCredentials(HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, + LPCWSTR pwszUserName, LPCWSTR pwszPassword, LPVOID pAuthParams); + BOOL WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpSetOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength); + WINHTTP_STATUS_CALLBACK WinHttpSetStatusCallback(HINTERNET hInternet, + WINHTTP_STATUS_CALLBACK lpfnInternetCallback, + DWORD dwNotificationFlags, DWORD_PTR dwReserved); + BOOL WinHttpSetTimeouts(HINTERNET hInternet, int dwResolveTimeout, int dwConnectTimeout, + int dwSendTimeout, int dwReceiveTimeout); + + BOOL WinHttpTimeFromSystemTime(const SYSTEMTIME *pst, LPWSTR pwszTime); + BOOL WinHttpTimeToSystemTime(LPCWSTR pwszTime, SYSTEMTIME *pst); + + BOOL WinHttpWriteData(HINTERNET hRequest, LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, + LPDWORD lpdwNumberOfBytesWritten); + + // Version(Windows8) || Version(Windows2012): + static if (_WIN32_WINNT >= 0x602) { + DWORD WinHttpCreateProxyResolver(HINTERNET hSession, HINTERNET *phResolver); + void WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT *pProxyResult); + DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, + WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, DWORD_PTR pContext); + DWORD WinHttpGetProxyResult(HINTERNET hResolver, WINHTTP_PROXY_RESULT *pProxyResult); + DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); + DWORD WinHttpWebSocketClose(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); + HINTERNET WinHttpWebSocketCompleteUpgrade(HINTERNET hRequest, DWORD_PTR pContext); + DWORD WinHttpWebSocketQueryCloseStatus(HINTERNET hWebSocket, USHORT *pusStatus, PVOID pvReason, + DWORD dwReasonLength, DWORD *pdwReasonLengthConsumed); + DWORD WinHttpWebSocketReceive(HINTERNET hWebSocket, PVOID pvBuffer, DWORD dwBufferLength, + DWORD *pdwBytesRead, WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType); + DWORD WinHttpWebSocketSend(HINTERNET hWebSocket, WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType, + PVOID pvBuffer, DWORD dwBufferLength); + DWORD WinHttpWebSocketShutdown(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); + } +} diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index 2066494722..1af0e533b8 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -1,1245 +1,1245 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_wininet.d) - */ -module core.sys.windows.wininet; -pragma(lib, "wininet"); - -// FIXME: check types and grouping of constants - -import core.sys.windows.windows; - -enum { - INTERNET_INVALID_PORT_NUMBER = 0, - INTERNET_DEFAULT_FTP_PORT = 21, - INTERNET_DEFAULT_GOPHER_PORT = 70, - INTERNET_DEFAULT_HTTP_PORT = 80, - INTERNET_DEFAULT_HTTPS_PORT = 443, - INTERNET_DEFAULT_SOCKS_PORT = 1080 -} - -const size_t - MAX_CACHE_ENTRY_INFO_SIZE = 4096, - INTERNET_MAX_HOST_NAME_LENGTH = 256, - INTERNET_MAX_USER_NAME_LENGTH = 128, - INTERNET_MAX_PASSWORD_LENGTH = 128, - INTERNET_MAX_PORT_NUMBER_LENGTH = 5, - INTERNET_MAX_PORT_NUMBER_VALUE = 65535, - INTERNET_MAX_PATH_LENGTH = 2048, - INTERNET_MAX_SCHEME_LENGTH = 32, - INTERNET_MAX_URL_LENGTH = INTERNET_MAX_SCHEME_LENGTH - + "://".length - + INTERNET_MAX_PATH_LENGTH; - -enum : DWORD { - INTERNET_KEEP_ALIVE_UNKNOWN = DWORD.max, - INTERNET_KEEP_ALIVE_DISABLED = 0, - INTERNET_KEEP_ALIVE_ENABLED -} - -enum { - INTERNET_REQFLAG_FROM_CACHE = 1, - INTERNET_REQFLAG_ASYNC = 2 -} - -const DWORD - INTERNET_FLAG_RELOAD = 0x80000000, - INTERNET_FLAG_RAW_DATA = 0x40000000, - INTERNET_FLAG_EXISTING_CONNECT = 0x20000000, - INTERNET_FLAG_ASYNC = 0x10000000, - INTERNET_FLAG_PASSIVE = 0x08000000, - INTERNET_FLAG_NO_CACHE_WRITE = 0x04000000, - INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE, - INTERNET_FLAG_MAKE_PERSISTENT = 0x02000000, - INTERNET_FLAG_OFFLINE = 0x01000000, - INTERNET_FLAG_SECURE = 0x00800000, - INTERNET_FLAG_KEEP_CONNECTION = 0x00400000, - INTERNET_FLAG_NO_AUTO_REDIRECT = 0x00200000, - INTERNET_FLAG_READ_PREFETCH = 0x00100000, - INTERNET_FLAG_NO_COOKIES = 0x00080000, - INTERNET_FLAG_NO_AUTH = 0x00040000, - INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP = 0x00008000, - INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = 0x00004000, - INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, - INTERNET_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, - INTERNET_FLAG_RESYNCHRONIZE = 0x00000800, - INTERNET_FLAG_HYPERLINK = 0x00000400, - INTERNET_FLAG_NO_UI = 0x00000200, - INTERNET_FLAG_PRAGMA_NOCACHE = 0x00000100, - INTERNET_FLAG_MUST_CACHE_REQUEST = 0x00000010, - INTERNET_FLAG_TRANSFER_ASCII = FTP_TRANSFER_TYPE_ASCII, - INTERNET_FLAG_TRANSFER_BINARY = FTP_TRANSFER_TYPE_BINARY, - - SECURITY_INTERNET_MASK = 0x0000F000, - SECURITY_SET_MASK = SECURITY_INTERNET_MASK, - - INTERNET_FLAGS_MASK = 0xFFFCFE13, - INTERNET_OPTIONS_MASK = ~INTERNET_FLAGS_MASK; - -const INTERNET_NO_CALLBACK = 0; -const INTERNET_RFC1123_FORMAT = 0; -const size_t INTERNET_RFC1123_BUFSIZE = 30; - -const DWORD - ICU_ESCAPE = 0x80000000, - ICU_USERNAME = 0x40000000, - ICU_NO_ENCODE = 0x20000000, - ICU_DECODE = 0x10000000, - ICU_NO_META = 0x08000000, - ICU_ENCODE_SPACES_ONLY = 0x04000000, - ICU_BROWSER_MODE = 0x02000000; - -enum { - INTERNET_OPEN_TYPE_PRECONFIG = 0, - INTERNET_OPEN_TYPE_DIRECT = 1, - INTERNET_OPEN_TYPE_PROXY = 3, - PRE_CONFIG_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PRECONFIG, - LOCAL_INTERNET_ACCESS = INTERNET_OPEN_TYPE_DIRECT, - GATEWAY_INTERNET_ACCESS = 2, - CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY, -} - -const ISO_GLOBAL = 1; -const ISO_REGISTRY = 2; -const ISO_VALID_FLAGS = ISO_GLOBAL | ISO_REGISTRY; - -enum { - INTERNET_OPTION_CALLBACK = 1, - INTERNET_OPTION_CONNECT_TIMEOUT, - INTERNET_OPTION_CONNECT_RETRIES, - INTERNET_OPTION_CONNECT_BACKOFF, - INTERNET_OPTION_SEND_TIMEOUT, - INTERNET_OPTION_CONTROL_SEND_TIMEOUT = INTERNET_OPTION_SEND_TIMEOUT, - INTERNET_OPTION_RECEIVE_TIMEOUT, - INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT = INTERNET_OPTION_RECEIVE_TIMEOUT, - INTERNET_OPTION_DATA_SEND_TIMEOUT, - INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, - INTERNET_OPTION_HANDLE_TYPE, - INTERNET_OPTION_CONTEXT_VALUE, - INTERNET_OPTION_LISTEN_TIMEOUT, - INTERNET_OPTION_READ_BUFFER_SIZE, - INTERNET_OPTION_WRITE_BUFFER_SIZE, // = 13 - INTERNET_OPTION_ASYNC_ID = 15, - INTERNET_OPTION_ASYNC_PRIORITY, // = 16 - INTERNET_OPTION_PARENT_HANDLE = 21, - INTERNET_OPTION_KEEP_CONNECTION, - INTERNET_OPTION_REQUEST_FLAGS, - INTERNET_OPTION_EXTENDED_ERROR, // = 24 - INTERNET_OPTION_OFFLINE_MODE = 26, - INTERNET_OPTION_CACHE_STREAM_HANDLE, - INTERNET_OPTION_USERNAME, - INTERNET_OPTION_PASSWORD, - INTERNET_OPTION_ASYNC, - INTERNET_OPTION_SECURITY_FLAGS, - INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, - INTERNET_OPTION_DATAFILE_NAME, - INTERNET_OPTION_URL, - INTERNET_OPTION_SECURITY_CERTIFICATE, - INTERNET_OPTION_SECURITY_KEY_BITNESS, - INTERNET_OPTION_REFRESH, - INTERNET_OPTION_PROXY, - INTERNET_OPTION_SETTINGS_CHANGED, - INTERNET_OPTION_VERSION, - INTERNET_OPTION_USER_AGENT, - INTERNET_OPTION_END_BROWSER_SESSION, - INTERNET_OPTION_PROXY_USERNAME, - INTERNET_OPTION_PROXY_PASSWORD, // = 44 - INTERNET_FIRST_OPTION = INTERNET_OPTION_CALLBACK, - // why? - INTERNET_LAST_OPTION = INTERNET_OPTION_USER_AGENT -} - -const INTERNET_PRIORITY_FOREGROUND = 1000; - -enum { - INTERNET_HANDLE_TYPE_INTERNET = 1, - INTERNET_HANDLE_TYPE_CONNECT_FTP, - INTERNET_HANDLE_TYPE_CONNECT_GOPHER, - INTERNET_HANDLE_TYPE_CONNECT_HTTP, - INTERNET_HANDLE_TYPE_FTP_FIND, - INTERNET_HANDLE_TYPE_FTP_FIND_HTML, - INTERNET_HANDLE_TYPE_FTP_FILE, - INTERNET_HANDLE_TYPE_FTP_FILE_HTML, - INTERNET_HANDLE_TYPE_GOPHER_FIND, - INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML, - INTERNET_HANDLE_TYPE_GOPHER_FILE, - INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML, - INTERNET_HANDLE_TYPE_HTTP_REQUEST -} - -const DWORD - SECURITY_FLAG_SECURE = 0x00000001, - SECURITY_FLAG_SSL = 0x00000002, - SECURITY_FLAG_SSL3 = 0x00000004, - SECURITY_FLAG_PCT = 0x00000008, - SECURITY_FLAG_PCT4 = 0x00000010, - SECURITY_FLAG_IETFSSL4 = 0x00000020, - SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080, - SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, - SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200, - SECURITY_FLAG_40BIT = 0x10000000, - SECURITY_FLAG_128BIT = 0x20000000, - SECURITY_FLAG_56BIT = 0x40000000, - SECURITY_FLAG_UNKNOWNBIT = 0x80000000, - SECURITY_FLAG_NORMALBITNESS = SECURITY_FLAG_40BIT, - SECURITY_FLAG_IGNORE_CERT_CN_INVALID = INTERNET_FLAG_IGNORE_CERT_CN_INVALID, - SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID, - SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS, - SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; - -enum { - INTERNET_SERVICE_FTP = 1, - INTERNET_SERVICE_GOPHER, - INTERNET_SERVICE_HTTP -} - -enum { - INTERNET_STATUS_RESOLVING_NAME = 10, - INTERNET_STATUS_NAME_RESOLVED = 11, - INTERNET_STATUS_CONNECTING_TO_SERVER = 20, - INTERNET_STATUS_CONNECTED_TO_SERVER = 21, - INTERNET_STATUS_SENDING_REQUEST = 30, - INTERNET_STATUS_REQUEST_SENT = 31, - INTERNET_STATUS_RECEIVING_RESPONSE = 40, - INTERNET_STATUS_RESPONSE_RECEIVED = 41, - INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42, - INTERNET_STATUS_PREFETCH = 43, - INTERNET_STATUS_CLOSING_CONNECTION = 50, - INTERNET_STATUS_CONNECTION_CLOSED = 51, - INTERNET_STATUS_HANDLE_CREATED = 60, - INTERNET_STATUS_HANDLE_CLOSING = 70, - INTERNET_STATUS_REQUEST_COMPLETE = 100, - INTERNET_STATUS_REDIRECT = 110 -} - -enum { - FTP_TRANSFER_TYPE_UNKNOWN = 0, - FTP_TRANSFER_TYPE_ASCII = 1, - FTP_TRANSFER_TYPE_BINARY = 2, - FTP_TRANSFER_TYPE_MASK = 3 -} - -const size_t - MAX_GOPHER_DISPLAY_TEXT = 128, - MAX_GOPHER_SELECTOR_TEXT = 256, - MAX_GOPHER_HOST_NAME = INTERNET_MAX_HOST_NAME_LENGTH, - MAX_GOPHER_LOCATOR_LENGTH - = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1 - + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 4; - -const DWORD - GOPHER_TYPE_TEXT_FILE = 0x00000001, - GOPHER_TYPE_DIRECTORY = 0x00000002, - GOPHER_TYPE_CSO = 0x00000004, - GOPHER_TYPE_ERROR = 0x00000008, - GOPHER_TYPE_MAC_BINHEX = 0x00000010, - GOPHER_TYPE_DOS_ARCHIVE = 0x00000020, - GOPHER_TYPE_UNIX_UUENCODED = 0x00000040, - GOPHER_TYPE_INDEX_SERVER = 0x00000080, - GOPHER_TYPE_TELNET = 0x00000100, - GOPHER_TYPE_BINARY = 0x00000200, - GOPHER_TYPE_REDUNDANT = 0x00000400, - GOPHER_TYPE_TN3270 = 0x00000800, - GOPHER_TYPE_GIF = 0x00001000, - GOPHER_TYPE_IMAGE = 0x00002000, - GOPHER_TYPE_BITMAP = 0x00004000, - GOPHER_TYPE_MOVIE = 0x00008000, - GOPHER_TYPE_SOUND = 0x00010000, - GOPHER_TYPE_HTML = 0x00020000, - GOPHER_TYPE_PDF = 0x00040000, - GOPHER_TYPE_CALENDAR = 0x00080000, - GOPHER_TYPE_INLINE = 0x00100000, - GOPHER_TYPE_UNKNOWN = 0x20000000, - GOPHER_TYPE_ASK = 0x40000000, - GOPHER_TYPE_GOPHER_PLUS = 0x80000000, - GOPHER_TYPE_FILE_MASK = 0x001FF271; - -BOOL IS_GOPHER_FILE(DWORD t) { - return !!(t & GOPHER_TYPE_FILE_MASK); -} - -BOOL IS_GOPHER_DIRECTORY(DWORD t) { - return !!(t & GOPHER_TYPE_DIRECTORY); -} - -BOOL IS_GOPHER_PHONE_SERVER(DWORD t) { - return !!(t & GOPHER_TYPE_CSO); -} - -BOOL IS_GOPHER_ERROR(DWORD t) { - return !!(t & GOPHER_TYPE_ERROR); -} - -BOOL IS_GOPHER_INDEX_SERVER(DWORD t) { - return !!(t & GOPHER_TYPE_INDEX_SERVER); -} - -BOOL IS_GOPHER_TELNET_SESSION(DWORD t) { - return !!(t & GOPHER_TYPE_TELNET); -} - -BOOL IS_GOPHER_BACKUP_SERVER(DWORD t) { - return !!(t & GOPHER_TYPE_REDUNDANT); -} - -BOOL IS_GOPHER_TN3270_SESSION(DWORD t) { - return !!(t & GOPHER_TYPE_TN3270); -} - -BOOL IS_GOPHER_ASK(DWORD t) { - return !!(t & GOPHER_TYPE_ASK); -} - -BOOL IS_GOPHER_PLUS(DWORD t) { - return !!(t & GOPHER_TYPE_GOPHER_PLUS); -} - -BOOL IS_GOPHER_TYPE_KNOWN(DWORD t) { - return !(t & GOPHER_TYPE_UNKNOWN); -} - -const size_t - MAX_GOPHER_CATEGORY_NAME = 128, - MAX_GOPHER_ATTRIBUTE_NAME = 128, - MIN_GOPHER_ATTRIBUTE_LENGTH = 256; - -const TCHAR[] - GOPHER_INFO_CATEGORY = "+INFO", - GOPHER_ADMIN_CATEGORY = "+ADMIN", - GOPHER_VIEWS_CATEGORY = "+VIEWS", - GOPHER_ABSTRACT_CATEGORY = "+ABSTRACT", - GOPHER_VERONICA_CATEGORY = "+VERONICA", - GOPHER_ADMIN_ATTRIBUTE = "Admin", - GOPHER_MOD_DATE_ATTRIBUTE = "Mod-Date", - GOPHER_TTL_ATTRIBUTE = "TTL", - GOPHER_SCORE_ATTRIBUTE = "Score", - GOPHER_RANGE_ATTRIBUTE = "Score-range", - GOPHER_SITE_ATTRIBUTE = "Site", - GOPHER_ORG_ATTRIBUTE = "Org", - GOPHER_LOCATION_ATTRIBUTE = "Loc", - GOPHER_GEOG_ATTRIBUTE = "Geog", - GOPHER_TIMEZONE_ATTRIBUTE = "TZ", - GOPHER_PROVIDER_ATTRIBUTE = "Provider", - GOPHER_VERSION_ATTRIBUTE = "Version", - GOPHER_ABSTRACT_ATTRIBUTE = "Abstract", - GOPHER_VIEW_ATTRIBUTE = "View", - GOPHER_TREEWALK_ATTRIBUTE = "treewalk"; - -enum : DWORD { - GOPHER_ATTRIBUTE_ID_BASE = 0xABCCCC00, - GOPHER_CATEGORY_ID_ALL, - GOPHER_CATEGORY_ID_INFO, - GOPHER_CATEGORY_ID_ADMIN, - GOPHER_CATEGORY_ID_VIEWS, - GOPHER_CATEGORY_ID_ABSTRACT, - GOPHER_CATEGORY_ID_VERONICA, - GOPHER_CATEGORY_ID_ASK, - GOPHER_CATEGORY_ID_UNKNOWN, - GOPHER_ATTRIBUTE_ID_ALL, - GOPHER_ATTRIBUTE_ID_ADMIN, - GOPHER_ATTRIBUTE_ID_MOD_DATE, - GOPHER_ATTRIBUTE_ID_TTL, - GOPHER_ATTRIBUTE_ID_SCORE, - GOPHER_ATTRIBUTE_ID_RANGE, - GOPHER_ATTRIBUTE_ID_SITE, - GOPHER_ATTRIBUTE_ID_ORG, - GOPHER_ATTRIBUTE_ID_LOCATION, - GOPHER_ATTRIBUTE_ID_GEOG, - GOPHER_ATTRIBUTE_ID_TIMEZONE, - GOPHER_ATTRIBUTE_ID_PROVIDER, - GOPHER_ATTRIBUTE_ID_VERSION, - GOPHER_ATTRIBUTE_ID_ABSTRACT, - GOPHER_ATTRIBUTE_ID_VIEW, - GOPHER_ATTRIBUTE_ID_TREEWALK, - GOPHER_ATTRIBUTE_ID_UNKNOWN -} - -const HTTP_MAJOR_VERSION = 1; -const HTTP_MINOR_VERSION = 0; -const TCHAR[] HTTP_VERSION = "HTTP/1.0"; - -enum : DWORD { - HTTP_QUERY_MIME_VERSION, - HTTP_QUERY_CONTENT_TYPE, - HTTP_QUERY_CONTENT_TRANSFER_ENCODING, - HTTP_QUERY_CONTENT_ID, - HTTP_QUERY_CONTENT_DESCRIPTION, - HTTP_QUERY_CONTENT_LENGTH, - HTTP_QUERY_CONTENT_LANGUAGE, - HTTP_QUERY_ALLOW, - HTTP_QUERY_PUBLIC, - HTTP_QUERY_DATE, - HTTP_QUERY_EXPIRES, - HTTP_QUERY_LAST_MODIFIED, - HTTP_QUERY_MESSAGE_ID, - HTTP_QUERY_URI, - HTTP_QUERY_DERIVED_FROM, - HTTP_QUERY_COST, - HTTP_QUERY_LINK, - HTTP_QUERY_PRAGMA, - HTTP_QUERY_VERSION, - HTTP_QUERY_STATUS_CODE, - HTTP_QUERY_STATUS_TEXT, - HTTP_QUERY_RAW_HEADERS, - HTTP_QUERY_RAW_HEADERS_CRLF, - HTTP_QUERY_CONNECTION, - HTTP_QUERY_ACCEPT, - HTTP_QUERY_ACCEPT_CHARSET, - HTTP_QUERY_ACCEPT_ENCODING, - HTTP_QUERY_ACCEPT_LANGUAGE, - HTTP_QUERY_AUTHORIZATION, - HTTP_QUERY_CONTENT_ENCODING, - HTTP_QUERY_FORWARDED, - HTTP_QUERY_FROM, - HTTP_QUERY_IF_MODIFIED_SINCE, - HTTP_QUERY_LOCATION, - HTTP_QUERY_ORIG_URI, - HTTP_QUERY_REFERER, - HTTP_QUERY_RETRY_AFTER, - HTTP_QUERY_SERVER, - HTTP_QUERY_TITLE, - HTTP_QUERY_USER_AGENT, - HTTP_QUERY_WWW_AUTHENTICATE, - HTTP_QUERY_PROXY_AUTHENTICATE, - HTTP_QUERY_ACCEPT_RANGES, - HTTP_QUERY_SET_COOKIE, - HTTP_QUERY_COOKIE, - HTTP_QUERY_REQUEST_METHOD, - HTTP_QUERY_MAX = 45, - HTTP_QUERY_CUSTOM = 65535 -} - -const DWORD - HTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, - HTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, - HTTP_QUERY_FLAG_NUMBER = 0x20000000, - HTTP_QUERY_FLAG_COALESCE = 0x10000000, - HTTP_QUERY_MODIFIER_FLAGS_MASK = 0xF0000000, - HTTP_QUERY_HEADER_MASK = ~HTTP_QUERY_MODIFIER_FLAGS_MASK; - -enum { - HTTP_STATUS_OK = 200, - HTTP_STATUS_CREATED, - HTTP_STATUS_ACCEPTED, - HTTP_STATUS_PARTIAL, - HTTP_STATUS_NO_CONTENT, // = 204 - HTTP_STATUS_AMBIGUOUS = 300, - HTTP_STATUS_MOVED, - HTTP_STATUS_REDIRECT, - HTTP_STATUS_REDIRECT_METHOD, - HTTP_STATUS_NOT_MODIFIED, // = 304 - HTTP_STATUS_BAD_REQUEST = 400, - HTTP_STATUS_DENIED, - HTTP_STATUS_PAYMENT_REQ, - HTTP_STATUS_FORBIDDEN, - HTTP_STATUS_NOT_FOUND, - HTTP_STATUS_BAD_METHOD, - HTTP_STATUS_NONE_ACCEPTABLE, - HTTP_STATUS_PROXY_AUTH_REQ, - HTTP_STATUS_REQUEST_TIMEOUT, - HTTP_STATUS_CONFLICT, - HTTP_STATUS_GONE, - HTTP_STATUS_AUTH_REFUSED, // = 411 - HTTP_STATUS_SERVER_ERROR = 500, - HTTP_STATUS_NOT_SUPPORTED, - HTTP_STATUS_BAD_GATEWAY, - HTTP_STATUS_SERVICE_UNAVAIL, - HTTP_STATUS_GATEWAY_TIMEOUT // = 504 -} - -enum { - INTERNET_PREFETCH_PROGRESS, - INTERNET_PREFETCH_COMPLETE, - INTERNET_PREFETCH_ABORTED -} - -const FLAGS_ERROR_UI_FILTER_FOR_ERRORS = 0x01; -const FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = 0x02; -const FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = 0x04; -const FLAGS_ERROR_UI_FLAGS_NO_UI = 0x08; - -const DWORD - HTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, - HTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, - HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, - HTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, - HTTP_ADDREQ_FLAG_ADD = 0x20000000, - HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, - HTTP_ADDREQ_FLAG_COALESCE = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, - HTTP_ADDREQ_FLAG_REPLACE = 0x80000000; - -enum { - INTERNET_ERROR_BASE = 12000, - ERROR_INTERNET_OUT_OF_HANDLES, - ERROR_INTERNET_TIMEOUT, - ERROR_INTERNET_EXTENDED_ERROR, - ERROR_INTERNET_INTERNAL_ERROR, - ERROR_INTERNET_INVALID_URL, - ERROR_INTERNET_UNRECOGNIZED_SCHEME, - ERROR_INTERNET_NAME_NOT_RESOLVED, - ERROR_INTERNET_PROTOCOL_NOT_FOUND, - ERROR_INTERNET_INVALID_OPTION, - ERROR_INTERNET_BAD_OPTION_LENGTH, - ERROR_INTERNET_OPTION_NOT_SETTABLE, - ERROR_INTERNET_SHUTDOWN, - ERROR_INTERNET_INCORRECT_USER_NAME, - ERROR_INTERNET_INCORRECT_PASSWORD, - ERROR_INTERNET_LOGIN_FAILURE, - ERROR_INTERNET_INVALID_OPERATION, - ERROR_INTERNET_OPERATION_CANCELLED, - ERROR_INTERNET_INCORRECT_HANDLE_TYPE, - ERROR_INTERNET_INCORRECT_HANDLE_STATE, - ERROR_INTERNET_NOT_PROXY_REQUEST, - ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND, - ERROR_INTERNET_BAD_REGISTRY_PARAMETER, - ERROR_INTERNET_NO_DIRECT_ACCESS, - ERROR_INTERNET_NO_CONTEXT, - ERROR_INTERNET_NO_CALLBACK, - ERROR_INTERNET_REQUEST_PENDING, - ERROR_INTERNET_INCORRECT_FORMAT, - ERROR_INTERNET_ITEM_NOT_FOUND, - ERROR_INTERNET_CANNOT_CONNECT, - ERROR_INTERNET_CONNECTION_ABORTED, - ERROR_INTERNET_CONNECTION_RESET, - ERROR_INTERNET_FORCE_RETRY, - ERROR_INTERNET_INVALID_PROXY_REQUEST, - ERROR_INTERNET_NEED_UI, // = INTERNET_ERROR_BASE + 34 - ERROR_INTERNET_HANDLE_EXISTS = INTERNET_ERROR_BASE + 36, - ERROR_INTERNET_SEC_CERT_DATE_INVALID, - ERROR_INTERNET_SEC_CERT_CN_INVALID, - ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR, - ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR, - ERROR_INTERNET_MIXED_SECURITY, - ERROR_INTERNET_CHG_POST_IS_NON_SECURE, - ERROR_INTERNET_POST_IS_NON_SECURE, - ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED, - ERROR_INTERNET_INVALID_CA, - ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP, - ERROR_INTERNET_ASYNC_THREAD_FAILED, - ERROR_INTERNET_REDIRECT_SCHEME_CHANGE, // = INTERNET_ERROR_BASE + 48 - - ERROR_FTP_TRANSFER_IN_PROGRESS = INTERNET_ERROR_BASE + 110, - ERROR_FTP_DROPPED, // = INTERNET_ERROR_BASE + 111 - ERROR_GOPHER_PROTOCOL_ERROR = INTERNET_ERROR_BASE + 130, - ERROR_GOPHER_NOT_FILE, - ERROR_GOPHER_DATA_ERROR, - ERROR_GOPHER_END_OF_DATA, - ERROR_GOPHER_INVALID_LOCATOR, - ERROR_GOPHER_INCORRECT_LOCATOR_TYPE, - ERROR_GOPHER_NOT_GOPHER_PLUS, - ERROR_GOPHER_ATTRIBUTE_NOT_FOUND, - ERROR_GOPHER_UNKNOWN_LOCATOR, // = INTERNET_ERROR_BASE + 138, - ERROR_HTTP_HEADER_NOT_FOUND = INTERNET_ERROR_BASE + 150, - ERROR_HTTP_DOWNLEVEL_SERVER, - ERROR_HTTP_INVALID_SERVER_RESPONSE, - ERROR_HTTP_INVALID_HEADER, - ERROR_HTTP_INVALID_QUERY_REQUEST, - ERROR_HTTP_HEADER_ALREADY_EXISTS, - ERROR_HTTP_REDIRECT_FAILED, - ERROR_INTERNET_SECURITY_CHANNEL_ERROR, - ERROR_INTERNET_UNABLE_TO_CACHE_FILE, - ERROR_INTERNET_TCPIP_NOT_INSTALLED, - ERROR_HTTP_NOT_REDIRECTED, // = INTERNET_ERROR_BASE + 160 - // why? - INTERNET_ERROR_LAST = ERROR_INTERNET_TCPIP_NOT_INSTALLED -} - - -const NORMAL_CACHE_ENTRY = 0x000001; -const STABLE_CACHE_ENTRY = 0x000002; -const STICKY_CACHE_ENTRY = 0x000004; -const SPARSE_CACHE_ENTRY = 0x010000; -const OCX_CACHE_ENTRY = 0x020000; -const COOKIE_CACHE_ENTRY = 0x100000; -const URLHISTORY_CACHE_ENTRY = 0x200000; - -const CACHE_ENTRY_ATTRIBUTE_FC = 0x0004; -const CACHE_ENTRY_HITRATE_FC = 0x0010; -const CACHE_ENTRY_MODTIME_FC = 0x0040; -const CACHE_ENTRY_EXPTIME_FC = 0x0080; -const CACHE_ENTRY_ACCTIME_FC = 0x0100; -const CACHE_ENTRY_SYNCTIME_FC = 0x0200; -const CACHE_ENTRY_HEADERINFO_FC = 0x0400; - -enum { - WININET_API_FLAG_ASYNC = 1, - WININET_API_FLAG_SYNC = 4, - WININET_API_FLAG_USE_CONTEXT = 8 -} - -// FIXME: how should these really be grouped? -enum { - IRF_ASYNC = WININET_API_FLAG_ASYNC, - IRF_SYNC = WININET_API_FLAG_SYNC, - IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, -} -const IRF_NO_WAIT = 8; - -enum { - HSR_ASYNC = WININET_API_FLAG_ASYNC, - HSR_SYNC = WININET_API_FLAG_SYNC, - HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, -} - -const HSR_INITIATE = 8; -const HSR_DOWNLOAD = 16; -const HSR_CHUNKED = 32; - -const INTERNET_DIAL_UNATTENDED = 0x8000; -const INTERNET_DIALSTATE_DISCONNECTED = 1; -const INTERENT_GOONLINE_REFRESH = 1; -const INTERENT_GOONLINE_MASK = 1; -const INTERNET_AUTODIAL_FORCE_ONLINE = 1; -const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2; -const INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4; -const INTERNET_CONNECTION_MODEM = 0x01; -const INTERNET_CONNECTION_LAN = 0x02; -const INTERNET_CONNECTION_PROXY = 0x04; -const INTERNET_CONNECTION_MODEM_BUSY = 0x08; -const INTERNET_RAS_INSTALLED = 0x10; -const INTERNET_CONNECTION_OFFLINE = 0x20; -const INTERNET_CONNECTION_CONFIGURED = 0x40; - -enum { - CACHEGROUP_SEARCH_ALL = 0, - CACHEGROUP_SEARCH_BYURL = 1 -} - -enum { - INTERNET_CACHE_GROUP_ADD = 0, - INTERNET_CACHE_GROUP_REMOVE = 1 -} - -mixin DECLARE_HANDLE!("HINTERNET"); // doesn't work - bug -/*struct HINTERNET { - HANDLE h; - alias h this; -}*/ -alias HINTERNET* LPHINTERNET; - -alias LONGLONG GROUPID; -alias WORD INTERNET_PORT; -alias WORD* LPINTERNET_PORT; - -enum INTERNET_SCHEME { - INTERNET_SCHEME_PARTIAL = -2, - INTERNET_SCHEME_UNKNOWN, - INTERNET_SCHEME_DEFAULT, - INTERNET_SCHEME_FTP, - INTERNET_SCHEME_GOPHER, - INTERNET_SCHEME_HTTP, - INTERNET_SCHEME_HTTPS, - INTERNET_SCHEME_FILE, - INTERNET_SCHEME_NEWS, - INTERNET_SCHEME_MAILTO, - INTERNET_SCHEME_SOCKS, - INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, - INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS -} -alias INTERNET_SCHEME* LPINTERNET_SCHEME; - -struct INTERNET_ASYNC_RESULT { - DWORD dwResult; - DWORD dwError; -} -alias INTERNET_ASYNC_RESULT* LPINTERNET_ASYNC_RESULT; - -struct INTERNET_PREFETCH_STATUS { - DWORD dwStatus; - DWORD dwSize; -} -alias INTERNET_PREFETCH_STATUS* LPINTERNET_PREFETCH_STATUS; - -struct INTERNET_PROXY_INFO { - DWORD dwAccessType; - LPCTSTR lpszProxy; - LPCTSTR lpszProxyBypass; -} -alias INTERNET_PROXY_INFO* LPINTERNET_PROXY_INFO; - -struct INTERNET_VERSION_INFO { - DWORD dwMajorVersion; - DWORD dwMinorVersion; -} -alias INTERNET_VERSION_INFO* LPINTERNET_VERSION_INFO; - -struct URL_COMPONENTSA { - DWORD dwStructSize = URL_COMPONENTSA.sizeof; - LPSTR lpszScheme; - DWORD dwSchemeLength; - INTERNET_SCHEME nScheme; - LPSTR lpszHostName; - DWORD dwHostNameLength; - INTERNET_PORT nPort; - LPSTR lpszUserName; - DWORD dwUserNameLength; - LPSTR lpszPassword; - DWORD dwPasswordLength; - LPSTR lpszUrlPath; - DWORD dwUrlPathLength; - LPSTR lpszExtraInfo; - DWORD dwExtraInfoLength; -} -alias URL_COMPONENTSA* LPURL_COMPONENTSA; - -struct URL_COMPONENTSW { - DWORD dwStructSize = URL_COMPONENTSW.sizeof; - LPWSTR lpszScheme; - DWORD dwSchemeLength; - INTERNET_SCHEME nScheme; - LPWSTR lpszHostName; - DWORD dwHostNameLength; - INTERNET_PORT nPort; - LPWSTR lpszUserName; - DWORD dwUserNameLength; - LPWSTR lpszPassword; - DWORD dwPasswordLength; - LPWSTR lpszUrlPath; - DWORD dwUrlPathLength; - LPWSTR lpszExtraInfo; - DWORD dwExtraInfoLength; -} -alias URL_COMPONENTSW* LPURL_COMPONENTSW; - -struct INTERNET_CERTIFICATE_INFO { - FILETIME ftExpiry; - FILETIME ftStart; - LPTSTR lpszSubjectInfo; - LPTSTR lpszIssuerInfo; - LPTSTR lpszProtocolName; - LPTSTR lpszSignatureAlgName; - LPTSTR lpszEncryptionAlgName; - DWORD dwKeySize; -} -alias INTERNET_CERTIFICATE_INFO* LPINTERNET_CERTIFICATE_INFO; - -extern (Windows) alias void function(HINTERNET, DWORD, DWORD, PVOID, DWORD) - INTERNET_STATUS_CALLBACK; -alias INTERNET_STATUS_CALLBACK* LPINTERNET_STATUS_CALLBACK; - -const INTERNET_INVALID_STATUS_CALLBACK - = cast(INTERNET_STATUS_CALLBACK) -1; - -struct GOPHER_FIND_DATAA { - CHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; - DWORD GopherType; - DWORD SizeLow; - DWORD SizeHigh; - FILETIME LastModificationTime; - CHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; -} -alias GOPHER_FIND_DATAA* LPGOPHER_FIND_DATAA; - -struct GOPHER_FIND_DATAW { - WCHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; - DWORD GopherType; - DWORD SizeLow; - DWORD SizeHigh; - FILETIME LastModificationTime; - WCHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; -} -alias GOPHER_FIND_DATAW* LPGOPHER_FIND_DATAW; - -struct GOPHER_ADMIN_ATTRIBUTE_TYPE { - LPCTSTR Comment; - LPCTSTR EmailAddress; -} -alias GOPHER_ADMIN_ATTRIBUTE_TYPE* LPGOPHER_ADMIN_ATTRIBUTE_TYPE; - -struct GOPHER_MOD_DATE_ATTRIBUTE_TYPE { - FILETIME DateAndTime; -} -alias GOPHER_MOD_DATE_ATTRIBUTE_TYPE* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE; - -struct GOPHER_TTL_ATTRIBUTE_TYPE { - DWORD Ttl; -} -alias GOPHER_TTL_ATTRIBUTE_TYPE* LPGOPHER_TTL_ATTRIBUTE_TYPE; - -struct GOPHER_SCORE_ATTRIBUTE_TYPE { - INT Score; -} -alias GOPHER_SCORE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_ATTRIBUTE_TYPE; - -struct GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE { - INT LowerBound; - INT UpperBound; -} -alias GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE; - -struct GOPHER_SITE_ATTRIBUTE_TYPE { - LPCTSTR Site; -} -alias GOPHER_SITE_ATTRIBUTE_TYPE* LPGOPHER_SITE_ATTRIBUTE_TYPE; - -struct GOPHER_ORGANIZATION_ATTRIBUTE_TYPE { - LPCTSTR Organization; -} -alias GOPHER_ORGANIZATION_ATTRIBUTE_TYPE* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE; - -struct GOPHER_LOCATION_ATTRIBUTE_TYPE { - LPCTSTR Location; -} -alias GOPHER_LOCATION_ATTRIBUTE_TYPE* LPGOPHER_LOCATION_ATTRIBUTE_TYPE; - -struct GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE { - INT DegreesNorth; - INT MinutesNorth; - INT SecondsNorth; - INT DegreesEast; - INT MinutesEast; - INT SecondsEast; -} -alias GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE* - LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE; - -struct GOPHER_TIMEZONE_ATTRIBUTE_TYPE { - INT Zone; -} -alias GOPHER_TIMEZONE_ATTRIBUTE_TYPE* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE; - -struct GOPHER_PROVIDER_ATTRIBUTE_TYPE { - LPCTSTR Provider; -} -alias GOPHER_PROVIDER_ATTRIBUTE_TYPE* LPGOPHER_PROVIDER_ATTRIBUTE_TYPE; - -struct GOPHER_VERSION_ATTRIBUTE_TYPE { - LPCTSTR Version; -} -alias GOPHER_VERSION_ATTRIBUTE_TYPE* LPGOPHER_VERSION_ATTRIBUTE_TYPE; - -struct GOPHER_ABSTRACT_ATTRIBUTE_TYPE { - LPCTSTR ShortAbstract; - LPCTSTR AbstractFile; -} -alias GOPHER_ABSTRACT_ATTRIBUTE_TYPE* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE; - -struct GOPHER_VIEW_ATTRIBUTE_TYPE { - LPCTSTR ContentType; - LPCTSTR Language; - DWORD Size; -} -alias GOPHER_VIEW_ATTRIBUTE_TYPE* LPGOPHER_VIEW_ATTRIBUTE_TYPE; - -struct GOPHER_VERONICA_ATTRIBUTE_TYPE { - BOOL TreeWalk; -} -alias GOPHER_VERONICA_ATTRIBUTE_TYPE* LPGOPHER_VERONICA_ATTRIBUTE_TYPE; - -struct GOPHER_ASK_ATTRIBUTE_TYPE { - LPCTSTR QuestionType; - LPCTSTR QuestionText; -} -alias GOPHER_ASK_ATTRIBUTE_TYPE* LPGOPHER_ASK_ATTRIBUTE_TYPE; - -struct GOPHER_UNKNOWN_ATTRIBUTE_TYPE { - LPCTSTR Text; -} -alias GOPHER_UNKNOWN_ATTRIBUTE_TYPE* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE; - -struct GOPHER_ATTRIBUTE_TYPE { - DWORD CategoryId; - DWORD AttributeId; - union { - GOPHER_ADMIN_ATTRIBUTE_TYPE Admin; - GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate; - GOPHER_TTL_ATTRIBUTE_TYPE Ttl; - GOPHER_SCORE_ATTRIBUTE_TYPE Score; - GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange; - GOPHER_SITE_ATTRIBUTE_TYPE Site; - GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization; - GOPHER_LOCATION_ATTRIBUTE_TYPE Location; - GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation; - GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone; - GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider; - GOPHER_VERSION_ATTRIBUTE_TYPE Version; - GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract; - GOPHER_VIEW_ATTRIBUTE_TYPE View; - GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica; - GOPHER_ASK_ATTRIBUTE_TYPE Ask; - GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown; - } /+AttributeType;+/ -} -alias GOPHER_ATTRIBUTE_TYPE* LPGOPHER_ATTRIBUTE_TYPE; - -alias BOOL function(LPGOPHER_ATTRIBUTE_TYPE, DWORD) - GOPHER_ATTRIBUTE_ENUMERATOR; - -struct INTERNET_CACHE_ENTRY_INFOA { - DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOA.sizeof; - LPSTR lpszSourceUrlName; - LPSTR lpszLocalFileName; - DWORD CacheEntryType; - DWORD dwUseCount; - DWORD dwHitRate; - DWORD dwSizeLow; - DWORD dwSizeHigh; - FILETIME LastModifiedTime; - FILETIME ExpireTime; - FILETIME LastAccessTime; - FILETIME LastSyncTime; - PBYTE lpHeaderInfo; - DWORD dwHeaderInfoSize; - LPSTR lpszFileExtension; - DWORD dwReserved; -} -alias INTERNET_CACHE_ENTRY_INFOA* LPINTERNET_CACHE_ENTRY_INFOA; - -struct INTERNET_CACHE_ENTRY_INFOW { - DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOW.sizeof; - LPWSTR lpszSourceUrlName; - LPWSTR lpszLocalFileName; - DWORD CacheEntryType; - DWORD dwUseCount; - DWORD dwHitRate; - DWORD dwSizeLow; - DWORD dwSizeHigh; - FILETIME LastModifiedTime; - FILETIME ExpireTime; - FILETIME LastAccessTime; - FILETIME LastSyncTime; - PBYTE lpHeaderInfo; - DWORD dwHeaderInfoSize; - LPWSTR lpszFileExtension; - DWORD dwReserved; -} -alias INTERNET_CACHE_ENTRY_INFOW* LPINTERNET_CACHE_ENTRY_INFOW; - -struct INTERNET_BUFFERSA { - DWORD dwStructSize = INTERNET_BUFFERSA.sizeof; - INTERNET_BUFFERSA* Next; - LPCSTR lpcszHeader; - DWORD dwHeadersLength; - DWORD dwHeadersTotal; - LPVOID lpvBuffer; - DWORD dwBufferLength; - DWORD dwBufferTotal; - DWORD dwOffsetLow; - DWORD dwOffsetHigh; -} -alias INTERNET_BUFFERSA* LPINTERNET_BUFFERSA; - -struct INTERNET_BUFFERSW { - DWORD dwStructSize = INTERNET_BUFFERSW.sizeof; - INTERNET_BUFFERSW* Next; - LPCWSTR lpcszHeader; - DWORD dwHeadersLength; - DWORD dwHeadersTotal; - LPVOID lpvBuffer; - DWORD dwBufferLength; - DWORD dwBufferTotal; - DWORD dwOffsetLow; - DWORD dwOffsetHigh; -} -alias INTERNET_BUFFERSW* LPINTERNET_BUFFERSW; - -const size_t - GROUP_OWNER_STORAGE_SIZE = 4, - GROUPNAME_MAX_LENGTH = 120; - -struct INTERNET_CACHE_GROUP_INFOA { - DWORD dwGroupSize; - DWORD dwGroupFlags; - DWORD dwGroupType; - DWORD dwDiskUsage; - DWORD dwDiskQuota; - DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; - CHAR[GROUPNAME_MAX_LENGTH] szGroupName; -} -alias INTERNET_CACHE_GROUP_INFOA* LPINTERNET_CACHE_GROUP_INFOA; - -struct INTERNET_CACHE_GROUP_INFOW { - DWORD dwGroupSize; - DWORD dwGroupFlags; - DWORD dwGroupType; - DWORD dwDiskUsage; - DWORD dwDiskQuota; - DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; - WCHAR[GROUPNAME_MAX_LENGTH] szGroupName; -} -alias INTERNET_CACHE_GROUP_INFOW* LPINTERNET_CACHE_GROUP_INFOW; - -extern (Windows) { - BOOL InternetTimeFromSystemTime(SYSTEMTIME*, DWORD, LPSTR, DWORD); - BOOL InternetTimeToSystemTime(LPCSTR, SYSTEMTIME*, DWORD); - BOOL InternetDebugGetLocalTime(SYSTEMTIME*, PDWORD); - BOOL InternetCrackUrlA(LPCSTR, DWORD, DWORD, LPURL_COMPONENTSA); - BOOL InternetCrackUrlW(LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW); - BOOL InternetCreateUrlA(LPURL_COMPONENTSA, DWORD, LPSTR, PDWORD); - BOOL InternetCreateUrlW(LPURL_COMPONENTSW, DWORD, LPWSTR, PDWORD); - BOOL InternetCanonicalizeUrlA(LPCSTR, LPSTR, PDWORD, DWORD); - BOOL InternetCanonicalizeUrlW(LPCWSTR, LPWSTR, PDWORD, DWORD); - BOOL InternetCheckConnectionA(LPCSTR, DWORD, DWORD); - BOOL InternetCheckConnectionW(LPCWSTR, DWORD, DWORD); - BOOL InternetCombineUrlA(LPCSTR, LPCSTR, LPSTR, PDWORD, DWORD); - BOOL InternetCombineUrlW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, DWORD); - HINTERNET InternetOpenA(LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD); - HINTERNET InternetOpenW(LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD); - BOOL InternetCloseHandle(HINTERNET); - HINTERNET InternetConnectA(HINTERNET, LPCSTR, INTERNET_PORT, LPCSTR, - LPCSTR, DWORD, DWORD, DWORD); - HINTERNET InternetConnectW(HINTERNET, LPCWSTR, INTERNET_PORT, LPCWSTR, - LPCWSTR, DWORD, DWORD, DWORD); - HINTERNET InternetOpenUrlA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD, - DWORD); - HINTERNET InternetOpenUrlW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD, - DWORD); - BOOL InternetReadFile(HINTERNET, PVOID, DWORD, PDWORD); - DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD); - BOOL InternetWriteFile(HINTERNET, LPCVOID, DWORD, PDWORD); - BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD); - BOOL InternetFindNextFileA(HINTERNET, PVOID); - BOOL InternetFindNextFileW(HINTERNET, PVOID); - BOOL InternetQueryOptionA(HINTERNET, DWORD, PVOID, PDWORD); - BOOL InternetQueryOptionW(HINTERNET, DWORD, PVOID, PDWORD); - BOOL InternetSetOptionA(HINTERNET, DWORD, PVOID, DWORD); - BOOL InternetSetOptionW(HINTERNET, DWORD, PVOID, DWORD); - BOOL InternetSetOptionExA(HINTERNET, DWORD, PVOID, DWORD, DWORD); - BOOL InternetSetOptionExW(HINTERNET, DWORD, PVOID, DWORD, DWORD); - BOOL InternetGetLastResponseInfoA(PDWORD, LPSTR, PDWORD); - BOOL InternetGetLastResponseInfoW(PDWORD, LPWSTR, PDWORD); - INTERNET_STATUS_CALLBACK InternetSetStatusCallback(HINTERNET, - INTERNET_STATUS_CALLBACK); - DWORD FtpGetFileSize(HINTERNET, LPDWORD); - HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATA, DWORD, - DWORD); - HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATA, DWORD, - DWORD); - BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD); - BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD); - BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); - BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); - BOOL FtpDeleteFileA(HINTERNET, LPCSTR); - BOOL FtpDeleteFileW(HINTERNET, LPCWSTR); - BOOL FtpRenameFileA(HINTERNET, LPCSTR, LPCSTR); - BOOL FtpRenameFileW(HINTERNET, LPCWSTR, LPCWSTR); - HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD); - HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD); - BOOL FtpCreateDirectoryA(HINTERNET, LPCSTR); - BOOL FtpCreateDirectoryW(HINTERNET, LPCWSTR); - BOOL FtpRemoveDirectoryA(HINTERNET, LPCSTR); - BOOL FtpRemoveDirectoryW(HINTERNET, LPCWSTR); - BOOL FtpSetCurrentDirectoryA(HINTERNET, LPCSTR); - BOOL FtpSetCurrentDirectoryW(HINTERNET, LPCWSTR); - BOOL FtpGetCurrentDirectoryA(HINTERNET, LPSTR, PDWORD); - BOOL FtpGetCurrentDirectoryW(HINTERNET, LPWSTR, PDWORD); - BOOL FtpCommandA(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET*); - BOOL FtpCommandW(HINTERNET, BOOL, DWORD, LPCWSTR, DWORD_PTR, HINTERNET*); - BOOL GopherCreateLocatorA(LPCSTR, INTERNET_PORT, LPCSTR, LPCSTR, DWORD, - LPSTR, PDWORD); - BOOL GopherCreateLocatorW(LPCWSTR, INTERNET_PORT, LPCWSTR, LPCWSTR, DWORD, - LPWSTR, PDWORD); - BOOL GopherGetLocatorTypeA(LPCSTR, PDWORD); - BOOL GopherGetLocatorTypeW(LPCWSTR, PDWORD); - HINTERNET GopherFindFirstFileA(HINTERNET, LPCSTR, LPCSTR, - LPGOPHER_FIND_DATAA, DWORD, DWORD); - HINTERNET GopherFindFirstFileW(HINTERNET, LPCWSTR, LPCWSTR, - LPGOPHER_FIND_DATAW, DWORD, DWORD); - HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); - HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); - BOOL GopherGetAttributeA(HINTERNET, LPCSTR, LPCSTR, LPBYTE, DWORD, - PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); - BOOL GopherGetAttributeW(HINTERNET, LPCWSTR, LPCWSTR, LPBYTE, DWORD, - PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); - HINTERNET HttpOpenRequestA(HINTERNET, LPCSTR, LPCSTR, LPCSTR, LPCSTR, - LPCSTR*, DWORD, DWORD); - HINTERNET HttpOpenRequestW(HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, - LPCWSTR*, DWORD, DWORD); - BOOL HttpAddRequestHeadersA(HINTERNET, LPCSTR, DWORD, DWORD); - BOOL HttpAddRequestHeadersW(HINTERNET, LPCWSTR, DWORD, DWORD); - BOOL HttpSendRequestA(HINTERNET, LPCSTR, DWORD, PVOID, DWORD); - BOOL HttpSendRequestW(HINTERNET, LPCWSTR, DWORD, PVOID, DWORD); - BOOL HttpQueryInfoA(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); - BOOL HttpQueryInfoW(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); - BOOL InternetSetCookieA(LPCSTR, LPCSTR, LPCSTR); - BOOL InternetSetCookieW(LPCWSTR, LPCWSTR, LPCWSTR); - BOOL InternetGetCookieA(LPCSTR, LPCSTR, LPSTR, PDWORD); - BOOL InternetGetCookieW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD); - DWORD InternetAttemptConnect(DWORD); - DWORD InternetErrorDlg(HWND, HINTERNET, DWORD, DWORD, PVOID*); - DWORD InternetConfirmZoneCrossing(HWND, LPSTR, LPSTR, BOOL); - BOOL CreateUrlCacheEntryA(LPCSTR, DWORD, LPCSTR, LPSTR, DWORD); - BOOL CreateUrlCacheEntryW(LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD); - BOOL CommitUrlCacheEntryA(LPCSTR, LPCSTR, FILETIME, FILETIME, DWORD, - LPBYTE, DWORD, LPCSTR, DWORD); - BOOL CommitUrlCacheEntryW(LPCWSTR, LPCWSTR, FILETIME, FILETIME, DWORD, - LPBYTE, DWORD, LPCWSTR, DWORD); - BOOL RetrieveUrlCacheEntryFileA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, - PDWORD, DWORD); - BOOL RetrieveUrlCacheEntryFileW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, - PDWORD, DWORD); - BOOL UnlockUrlCacheEntryFile(LPCSTR, DWORD); - HANDLE RetrieveUrlCacheEntryStreamA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, - PDWORD, BOOL, DWORD); - HANDLE RetrieveUrlCacheEntryStreamW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, - PDWORD, BOOL, DWORD); - BOOL ReadUrlCacheEntryStream(HANDLE, DWORD, PVOID, PDWORD, DWORD); - BOOL UnlockUrlCacheEntryStream(HANDLE, DWORD); - BOOL GetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); - BOOL GetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); - BOOL SetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, DWORD); - BOOL SetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, DWORD); - HANDLE FindFirstUrlCacheEntryA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, - PDWORD); - HANDLE FindFirstUrlCacheEntryW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, - PDWORD); - BOOL FindNextUrlCacheEntryA(HANDLE, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); - BOOL FindNextUrlCacheEntryW(HANDLE, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); - BOOL FindCloseUrlCache(HANDLE); - BOOL DeleteUrlCacheEntry(LPCSTR); - DWORD AuthenticateUser(PVOID*, LPSTR, LPSTR, DWORD, LPSTR, DWORD, LPSTR, - LPSTR); - BOOL HttpSendRequestExA(HINTERNET, LPINTERNET_BUFFERSA, - LPINTERNET_BUFFERSA, DWORD, DWORD); - BOOL HttpSendRequestExW(HINTERNET, LPINTERNET_BUFFERSW, - LPINTERNET_BUFFERSW, DWORD, DWORD); - BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD); - BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD); - DWORD InternetDial(HWND, LPTSTR, DWORD, LPDWORD, DWORD); - DWORD InternetHangUp(DWORD, DWORD); - BOOL InternetGoOnline(LPTSTR, HWND, DWORD); - BOOL InternetAutodial(DWORD, DWORD); - BOOL InternetAutodialHangup(DWORD); - BOOL InternetGetConnectedState(LPDWORD, DWORD); - BOOL InternetSetDialState(LPCTSTR, DWORD, DWORD); - BOOL InternetReadFileExA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR); - BOOL InternetReadFileExW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR); - GROUPID CreateUrlCacheGroup(DWORD, LPVOID); - BOOL DeleteUrlCacheGroup(GROUPID, DWORD, LPVOID); - HANDLE FindFirstUrlCacheGroup(DWORD, DWORD, LPVOID, DWORD, GROUPID*, - LPVOID); - BOOL FindNextUrlCacheGroup(HANDLE, GROUPID*, LPVOID); - BOOL GetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOA, LPDWORD, LPVOID); - BOOL GetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOW, LPDWORD, LPVOID); - BOOL SetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOA, LPVOID); - BOOL SetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOW, LPVOID); -} - -version (Unicode) { - alias URL_COMPONENTSW URL_COMPONENTS; - alias LPURL_COMPONENTSW LPURL_COMPONENTS; - alias GOPHER_FIND_DATAW GOPHER_FIND_DATA; - alias LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA; - alias INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO; - alias LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO; - alias INTERNET_BUFFERSW INTERNET_BUFFERS; - alias INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO; - alias LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO; - alias InternetCrackUrlW InternetCrackUrl; - alias InternetCreateUrlW InternetCreateUrl; - alias InternetCanonicalizeUrlW InternetCanonicalizeUrl; - alias InternetCheckConnectionW InternetCheckConnection; - alias InternetCombineUrlW InternetCombineUrl; - alias InternetOpenW InternetOpen; - alias InternetConnectW InternetConnect; - alias InternetOpenUrlW InternetOpenUrl; - alias InternetFindNextFileW InternetFindNextFile; - alias InternetQueryOptionW InternetQueryOption; - alias InternetSetOptionW InternetSetOption; - alias InternetSetOptionExW InternetSetOptionEx; - alias InternetGetLastResponseInfoW InternetGetLastResponseInfo; - alias InternetReadFileExW InternetReadFileEx; - alias FtpFindFirstFileW FtpFindFirstFile; - alias FtpGetFileW FtpGetFile; - alias FtpPutFileW FtpPutFile; - alias FtpDeleteFileW FtpDeleteFile; - alias FtpRenameFileW FtpRenameFile; - alias FtpOpenFileW FtpOpenFile; - alias FtpCreateDirectoryW FtpCreateDirectory; - alias FtpRemoveDirectoryW FtpRemoveDirectory; - alias FtpSetCurrentDirectoryW FtpSetCurrentDirectory; - alias FtpGetCurrentDirectoryW FtpGetCurrentDirectory; - alias FtpCommandW FtpCommand; - alias GopherGetLocatorTypeW GopherGetLocatorType; - alias GopherCreateLocatorW GopherCreateLocator; - alias GopherFindFirstFileW GopherFindFirstFile; - alias GopherOpenFileW GopherOpenFile; - alias GopherGetAttributeW GopherGetAttribute; - alias HttpSendRequestW HttpSendRequest; - alias HttpOpenRequestW HttpOpenRequest; - alias HttpAddRequestHeadersW HttpAddRequestHeaders; - alias HttpQueryInfoW HttpQueryInfo; - alias InternetSetCookieW InternetSetCookie; - alias InternetGetCookieW InternetGetCookie; - alias CreateUrlCacheEntryW CreateUrlCacheEntry; - alias RetrieveUrlCacheEntryStreamW RetrieveUrlCacheEntryStream; - alias FindNextUrlCacheEntryW FindNextUrlCacheEntry; - alias CommitUrlCacheEntryW CommitUrlCacheEntry; - alias GetUrlCacheEntryInfoW GetUrlCacheEntryInfo; - alias SetUrlCacheEntryInfoW SetUrlCacheEntryInfo; - alias FindFirstUrlCacheEntryW FindFirstUrlCacheEntry; - alias RetrieveUrlCacheEntryFileW RetrieveUrlCacheEntryFile; - alias HttpSendRequestExW HttpSendRequestEx; - alias HttpEndRequestW HttpEndRequest; - alias GetUrlCacheGroupAttributeW GetUrlCacheGroupAttribute; - alias SetUrlCacheGroupAttributeW SetUrlCacheGroupAttribute; -} else { - alias URL_COMPONENTSA URL_COMPONENTS; - alias LPURL_COMPONENTSA LPURL_COMPONENTS; - alias GOPHER_FIND_DATAA GOPHER_FIND_DATA; - alias LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA; - alias INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO; - alias LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO; - alias INTERNET_BUFFERSA INTERNET_BUFFERS; - alias INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO; - alias LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO; - alias GopherGetAttributeA GopherGetAttribute; - alias InternetCrackUrlA InternetCrackUrl; - alias InternetCreateUrlA InternetCreateUrl; - alias InternetCanonicalizeUrlA InternetCanonicalizeUrl; - alias InternetCheckConnectionA InternetCheckConnection; - alias InternetCombineUrlA InternetCombineUrl; - alias InternetOpenA InternetOpen; - alias InternetConnectA InternetConnect; - alias InternetOpenUrlA InternetOpenUrl; - alias InternetFindNextFileA InternetFindNextFile; - alias InternetQueryOptionA InternetQueryOption; - alias InternetSetOptionA InternetSetOption; - alias InternetSetOptionExA InternetSetOptionEx; - alias InternetGetLastResponseInfoA InternetGetLastResponseInfo; - alias InternetReadFileExA InternetReadFileEx; - alias FtpFindFirstFileA FtpFindFirstFile; - alias FtpGetFileA FtpGetFile; - alias FtpPutFileA FtpPutFile; - alias FtpDeleteFileA FtpDeleteFile; - alias FtpRenameFileA FtpRenameFile; - alias FtpOpenFileA FtpOpenFile; - alias FtpCreateDirectoryA FtpCreateDirectory; - alias FtpRemoveDirectoryA FtpRemoveDirectory; - alias FtpSetCurrentDirectoryA FtpSetCurrentDirectory; - alias FtpGetCurrentDirectoryA FtpGetCurrentDirectory; - alias FtpCommandA FtpCommand; - alias GopherGetLocatorTypeA GopherGetLocatorType; - alias GopherCreateLocatorA GopherCreateLocator; - alias GopherFindFirstFileA GopherFindFirstFile; - alias GopherOpenFileA GopherOpenFile; - alias HttpSendRequestA HttpSendRequest; - alias HttpOpenRequestA HttpOpenRequest; - alias HttpAddRequestHeadersA HttpAddRequestHeaders; - alias HttpQueryInfoA HttpQueryInfo; - alias InternetSetCookieA InternetSetCookie; - alias InternetGetCookieA InternetGetCookie; - alias CreateUrlCacheEntryA CreateUrlCacheEntry; - alias RetrieveUrlCacheEntryStreamA RetrieveUrlCacheEntryStream; - alias FindNextUrlCacheEntryA FindNextUrlCacheEntry; - alias CommitUrlCacheEntryA CommitUrlCacheEntry; - alias GetUrlCacheEntryInfoA GetUrlCacheEntryInfo; - alias SetUrlCacheEntryInfoA SetUrlCacheEntryInfo; - alias FindFirstUrlCacheEntryA FindFirstUrlCacheEntry; - alias RetrieveUrlCacheEntryFileA RetrieveUrlCacheEntryFile; - alias HttpSendRequestExA HttpSendRequestEx; - alias HttpEndRequestA HttpEndRequest; - alias GetUrlCacheGroupAttributeA GetUrlCacheGroupAttribute; - alias SetUrlCacheGroupAttributeA SetUrlCacheGroupAttribute; -} - -alias INTERNET_BUFFERS* LPINTERNET_BUFFERS; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wininet.d) + */ +module core.sys.windows.wininet; +pragma(lib, "wininet"); + +// FIXME: check types and grouping of constants + +import core.sys.windows.windows; + +enum { + INTERNET_INVALID_PORT_NUMBER = 0, + INTERNET_DEFAULT_FTP_PORT = 21, + INTERNET_DEFAULT_GOPHER_PORT = 70, + INTERNET_DEFAULT_HTTP_PORT = 80, + INTERNET_DEFAULT_HTTPS_PORT = 443, + INTERNET_DEFAULT_SOCKS_PORT = 1080 +} + +const size_t + MAX_CACHE_ENTRY_INFO_SIZE = 4096, + INTERNET_MAX_HOST_NAME_LENGTH = 256, + INTERNET_MAX_USER_NAME_LENGTH = 128, + INTERNET_MAX_PASSWORD_LENGTH = 128, + INTERNET_MAX_PORT_NUMBER_LENGTH = 5, + INTERNET_MAX_PORT_NUMBER_VALUE = 65535, + INTERNET_MAX_PATH_LENGTH = 2048, + INTERNET_MAX_SCHEME_LENGTH = 32, + INTERNET_MAX_URL_LENGTH = INTERNET_MAX_SCHEME_LENGTH + + "://".length + + INTERNET_MAX_PATH_LENGTH; + +enum : DWORD { + INTERNET_KEEP_ALIVE_UNKNOWN = DWORD.max, + INTERNET_KEEP_ALIVE_DISABLED = 0, + INTERNET_KEEP_ALIVE_ENABLED +} + +enum { + INTERNET_REQFLAG_FROM_CACHE = 1, + INTERNET_REQFLAG_ASYNC = 2 +} + +const DWORD + INTERNET_FLAG_RELOAD = 0x80000000, + INTERNET_FLAG_RAW_DATA = 0x40000000, + INTERNET_FLAG_EXISTING_CONNECT = 0x20000000, + INTERNET_FLAG_ASYNC = 0x10000000, + INTERNET_FLAG_PASSIVE = 0x08000000, + INTERNET_FLAG_NO_CACHE_WRITE = 0x04000000, + INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE, + INTERNET_FLAG_MAKE_PERSISTENT = 0x02000000, + INTERNET_FLAG_OFFLINE = 0x01000000, + INTERNET_FLAG_SECURE = 0x00800000, + INTERNET_FLAG_KEEP_CONNECTION = 0x00400000, + INTERNET_FLAG_NO_AUTO_REDIRECT = 0x00200000, + INTERNET_FLAG_READ_PREFETCH = 0x00100000, + INTERNET_FLAG_NO_COOKIES = 0x00080000, + INTERNET_FLAG_NO_AUTH = 0x00040000, + INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP = 0x00008000, + INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = 0x00004000, + INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, + INTERNET_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, + INTERNET_FLAG_RESYNCHRONIZE = 0x00000800, + INTERNET_FLAG_HYPERLINK = 0x00000400, + INTERNET_FLAG_NO_UI = 0x00000200, + INTERNET_FLAG_PRAGMA_NOCACHE = 0x00000100, + INTERNET_FLAG_MUST_CACHE_REQUEST = 0x00000010, + INTERNET_FLAG_TRANSFER_ASCII = FTP_TRANSFER_TYPE_ASCII, + INTERNET_FLAG_TRANSFER_BINARY = FTP_TRANSFER_TYPE_BINARY, + + SECURITY_INTERNET_MASK = 0x0000F000, + SECURITY_SET_MASK = SECURITY_INTERNET_MASK, + + INTERNET_FLAGS_MASK = 0xFFFCFE13, + INTERNET_OPTIONS_MASK = ~INTERNET_FLAGS_MASK; + +const INTERNET_NO_CALLBACK = 0; +const INTERNET_RFC1123_FORMAT = 0; +const size_t INTERNET_RFC1123_BUFSIZE = 30; + +const DWORD + ICU_ESCAPE = 0x80000000, + ICU_USERNAME = 0x40000000, + ICU_NO_ENCODE = 0x20000000, + ICU_DECODE = 0x10000000, + ICU_NO_META = 0x08000000, + ICU_ENCODE_SPACES_ONLY = 0x04000000, + ICU_BROWSER_MODE = 0x02000000; + +enum { + INTERNET_OPEN_TYPE_PRECONFIG = 0, + INTERNET_OPEN_TYPE_DIRECT = 1, + INTERNET_OPEN_TYPE_PROXY = 3, + PRE_CONFIG_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PRECONFIG, + LOCAL_INTERNET_ACCESS = INTERNET_OPEN_TYPE_DIRECT, + GATEWAY_INTERNET_ACCESS = 2, + CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY, +} + +const ISO_GLOBAL = 1; +const ISO_REGISTRY = 2; +const ISO_VALID_FLAGS = ISO_GLOBAL | ISO_REGISTRY; + +enum { + INTERNET_OPTION_CALLBACK = 1, + INTERNET_OPTION_CONNECT_TIMEOUT, + INTERNET_OPTION_CONNECT_RETRIES, + INTERNET_OPTION_CONNECT_BACKOFF, + INTERNET_OPTION_SEND_TIMEOUT, + INTERNET_OPTION_CONTROL_SEND_TIMEOUT = INTERNET_OPTION_SEND_TIMEOUT, + INTERNET_OPTION_RECEIVE_TIMEOUT, + INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT = INTERNET_OPTION_RECEIVE_TIMEOUT, + INTERNET_OPTION_DATA_SEND_TIMEOUT, + INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, + INTERNET_OPTION_HANDLE_TYPE, + INTERNET_OPTION_CONTEXT_VALUE, + INTERNET_OPTION_LISTEN_TIMEOUT, + INTERNET_OPTION_READ_BUFFER_SIZE, + INTERNET_OPTION_WRITE_BUFFER_SIZE, // = 13 + INTERNET_OPTION_ASYNC_ID = 15, + INTERNET_OPTION_ASYNC_PRIORITY, // = 16 + INTERNET_OPTION_PARENT_HANDLE = 21, + INTERNET_OPTION_KEEP_CONNECTION, + INTERNET_OPTION_REQUEST_FLAGS, + INTERNET_OPTION_EXTENDED_ERROR, // = 24 + INTERNET_OPTION_OFFLINE_MODE = 26, + INTERNET_OPTION_CACHE_STREAM_HANDLE, + INTERNET_OPTION_USERNAME, + INTERNET_OPTION_PASSWORD, + INTERNET_OPTION_ASYNC, + INTERNET_OPTION_SECURITY_FLAGS, + INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, + INTERNET_OPTION_DATAFILE_NAME, + INTERNET_OPTION_URL, + INTERNET_OPTION_SECURITY_CERTIFICATE, + INTERNET_OPTION_SECURITY_KEY_BITNESS, + INTERNET_OPTION_REFRESH, + INTERNET_OPTION_PROXY, + INTERNET_OPTION_SETTINGS_CHANGED, + INTERNET_OPTION_VERSION, + INTERNET_OPTION_USER_AGENT, + INTERNET_OPTION_END_BROWSER_SESSION, + INTERNET_OPTION_PROXY_USERNAME, + INTERNET_OPTION_PROXY_PASSWORD, // = 44 + INTERNET_FIRST_OPTION = INTERNET_OPTION_CALLBACK, + // why? + INTERNET_LAST_OPTION = INTERNET_OPTION_USER_AGENT +} + +const INTERNET_PRIORITY_FOREGROUND = 1000; + +enum { + INTERNET_HANDLE_TYPE_INTERNET = 1, + INTERNET_HANDLE_TYPE_CONNECT_FTP, + INTERNET_HANDLE_TYPE_CONNECT_GOPHER, + INTERNET_HANDLE_TYPE_CONNECT_HTTP, + INTERNET_HANDLE_TYPE_FTP_FIND, + INTERNET_HANDLE_TYPE_FTP_FIND_HTML, + INTERNET_HANDLE_TYPE_FTP_FILE, + INTERNET_HANDLE_TYPE_FTP_FILE_HTML, + INTERNET_HANDLE_TYPE_GOPHER_FIND, + INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML, + INTERNET_HANDLE_TYPE_GOPHER_FILE, + INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML, + INTERNET_HANDLE_TYPE_HTTP_REQUEST +} + +const DWORD + SECURITY_FLAG_SECURE = 0x00000001, + SECURITY_FLAG_SSL = 0x00000002, + SECURITY_FLAG_SSL3 = 0x00000004, + SECURITY_FLAG_PCT = 0x00000008, + SECURITY_FLAG_PCT4 = 0x00000010, + SECURITY_FLAG_IETFSSL4 = 0x00000020, + SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080, + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, + SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200, + SECURITY_FLAG_40BIT = 0x10000000, + SECURITY_FLAG_128BIT = 0x20000000, + SECURITY_FLAG_56BIT = 0x40000000, + SECURITY_FLAG_UNKNOWNBIT = 0x80000000, + SECURITY_FLAG_NORMALBITNESS = SECURITY_FLAG_40BIT, + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = INTERNET_FLAG_IGNORE_CERT_CN_INVALID, + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID, + SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS, + SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; + +enum { + INTERNET_SERVICE_FTP = 1, + INTERNET_SERVICE_GOPHER, + INTERNET_SERVICE_HTTP +} + +enum { + INTERNET_STATUS_RESOLVING_NAME = 10, + INTERNET_STATUS_NAME_RESOLVED = 11, + INTERNET_STATUS_CONNECTING_TO_SERVER = 20, + INTERNET_STATUS_CONNECTED_TO_SERVER = 21, + INTERNET_STATUS_SENDING_REQUEST = 30, + INTERNET_STATUS_REQUEST_SENT = 31, + INTERNET_STATUS_RECEIVING_RESPONSE = 40, + INTERNET_STATUS_RESPONSE_RECEIVED = 41, + INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42, + INTERNET_STATUS_PREFETCH = 43, + INTERNET_STATUS_CLOSING_CONNECTION = 50, + INTERNET_STATUS_CONNECTION_CLOSED = 51, + INTERNET_STATUS_HANDLE_CREATED = 60, + INTERNET_STATUS_HANDLE_CLOSING = 70, + INTERNET_STATUS_REQUEST_COMPLETE = 100, + INTERNET_STATUS_REDIRECT = 110 +} + +enum { + FTP_TRANSFER_TYPE_UNKNOWN = 0, + FTP_TRANSFER_TYPE_ASCII = 1, + FTP_TRANSFER_TYPE_BINARY = 2, + FTP_TRANSFER_TYPE_MASK = 3 +} + +const size_t + MAX_GOPHER_DISPLAY_TEXT = 128, + MAX_GOPHER_SELECTOR_TEXT = 256, + MAX_GOPHER_HOST_NAME = INTERNET_MAX_HOST_NAME_LENGTH, + MAX_GOPHER_LOCATOR_LENGTH + = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1 + + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 4; + +const DWORD + GOPHER_TYPE_TEXT_FILE = 0x00000001, + GOPHER_TYPE_DIRECTORY = 0x00000002, + GOPHER_TYPE_CSO = 0x00000004, + GOPHER_TYPE_ERROR = 0x00000008, + GOPHER_TYPE_MAC_BINHEX = 0x00000010, + GOPHER_TYPE_DOS_ARCHIVE = 0x00000020, + GOPHER_TYPE_UNIX_UUENCODED = 0x00000040, + GOPHER_TYPE_INDEX_SERVER = 0x00000080, + GOPHER_TYPE_TELNET = 0x00000100, + GOPHER_TYPE_BINARY = 0x00000200, + GOPHER_TYPE_REDUNDANT = 0x00000400, + GOPHER_TYPE_TN3270 = 0x00000800, + GOPHER_TYPE_GIF = 0x00001000, + GOPHER_TYPE_IMAGE = 0x00002000, + GOPHER_TYPE_BITMAP = 0x00004000, + GOPHER_TYPE_MOVIE = 0x00008000, + GOPHER_TYPE_SOUND = 0x00010000, + GOPHER_TYPE_HTML = 0x00020000, + GOPHER_TYPE_PDF = 0x00040000, + GOPHER_TYPE_CALENDAR = 0x00080000, + GOPHER_TYPE_INLINE = 0x00100000, + GOPHER_TYPE_UNKNOWN = 0x20000000, + GOPHER_TYPE_ASK = 0x40000000, + GOPHER_TYPE_GOPHER_PLUS = 0x80000000, + GOPHER_TYPE_FILE_MASK = 0x001FF271; + +BOOL IS_GOPHER_FILE(DWORD t) { + return !!(t & GOPHER_TYPE_FILE_MASK); +} + +BOOL IS_GOPHER_DIRECTORY(DWORD t) { + return !!(t & GOPHER_TYPE_DIRECTORY); +} + +BOOL IS_GOPHER_PHONE_SERVER(DWORD t) { + return !!(t & GOPHER_TYPE_CSO); +} + +BOOL IS_GOPHER_ERROR(DWORD t) { + return !!(t & GOPHER_TYPE_ERROR); +} + +BOOL IS_GOPHER_INDEX_SERVER(DWORD t) { + return !!(t & GOPHER_TYPE_INDEX_SERVER); +} + +BOOL IS_GOPHER_TELNET_SESSION(DWORD t) { + return !!(t & GOPHER_TYPE_TELNET); +} + +BOOL IS_GOPHER_BACKUP_SERVER(DWORD t) { + return !!(t & GOPHER_TYPE_REDUNDANT); +} + +BOOL IS_GOPHER_TN3270_SESSION(DWORD t) { + return !!(t & GOPHER_TYPE_TN3270); +} + +BOOL IS_GOPHER_ASK(DWORD t) { + return !!(t & GOPHER_TYPE_ASK); +} + +BOOL IS_GOPHER_PLUS(DWORD t) { + return !!(t & GOPHER_TYPE_GOPHER_PLUS); +} + +BOOL IS_GOPHER_TYPE_KNOWN(DWORD t) { + return !(t & GOPHER_TYPE_UNKNOWN); +} + +const size_t + MAX_GOPHER_CATEGORY_NAME = 128, + MAX_GOPHER_ATTRIBUTE_NAME = 128, + MIN_GOPHER_ATTRIBUTE_LENGTH = 256; + +const TCHAR[] + GOPHER_INFO_CATEGORY = "+INFO", + GOPHER_ADMIN_CATEGORY = "+ADMIN", + GOPHER_VIEWS_CATEGORY = "+VIEWS", + GOPHER_ABSTRACT_CATEGORY = "+ABSTRACT", + GOPHER_VERONICA_CATEGORY = "+VERONICA", + GOPHER_ADMIN_ATTRIBUTE = "Admin", + GOPHER_MOD_DATE_ATTRIBUTE = "Mod-Date", + GOPHER_TTL_ATTRIBUTE = "TTL", + GOPHER_SCORE_ATTRIBUTE = "Score", + GOPHER_RANGE_ATTRIBUTE = "Score-range", + GOPHER_SITE_ATTRIBUTE = "Site", + GOPHER_ORG_ATTRIBUTE = "Org", + GOPHER_LOCATION_ATTRIBUTE = "Loc", + GOPHER_GEOG_ATTRIBUTE = "Geog", + GOPHER_TIMEZONE_ATTRIBUTE = "TZ", + GOPHER_PROVIDER_ATTRIBUTE = "Provider", + GOPHER_VERSION_ATTRIBUTE = "Version", + GOPHER_ABSTRACT_ATTRIBUTE = "Abstract", + GOPHER_VIEW_ATTRIBUTE = "View", + GOPHER_TREEWALK_ATTRIBUTE = "treewalk"; + +enum : DWORD { + GOPHER_ATTRIBUTE_ID_BASE = 0xABCCCC00, + GOPHER_CATEGORY_ID_ALL, + GOPHER_CATEGORY_ID_INFO, + GOPHER_CATEGORY_ID_ADMIN, + GOPHER_CATEGORY_ID_VIEWS, + GOPHER_CATEGORY_ID_ABSTRACT, + GOPHER_CATEGORY_ID_VERONICA, + GOPHER_CATEGORY_ID_ASK, + GOPHER_CATEGORY_ID_UNKNOWN, + GOPHER_ATTRIBUTE_ID_ALL, + GOPHER_ATTRIBUTE_ID_ADMIN, + GOPHER_ATTRIBUTE_ID_MOD_DATE, + GOPHER_ATTRIBUTE_ID_TTL, + GOPHER_ATTRIBUTE_ID_SCORE, + GOPHER_ATTRIBUTE_ID_RANGE, + GOPHER_ATTRIBUTE_ID_SITE, + GOPHER_ATTRIBUTE_ID_ORG, + GOPHER_ATTRIBUTE_ID_LOCATION, + GOPHER_ATTRIBUTE_ID_GEOG, + GOPHER_ATTRIBUTE_ID_TIMEZONE, + GOPHER_ATTRIBUTE_ID_PROVIDER, + GOPHER_ATTRIBUTE_ID_VERSION, + GOPHER_ATTRIBUTE_ID_ABSTRACT, + GOPHER_ATTRIBUTE_ID_VIEW, + GOPHER_ATTRIBUTE_ID_TREEWALK, + GOPHER_ATTRIBUTE_ID_UNKNOWN +} + +const HTTP_MAJOR_VERSION = 1; +const HTTP_MINOR_VERSION = 0; +const TCHAR[] HTTP_VERSION = "HTTP/1.0"; + +enum : DWORD { + HTTP_QUERY_MIME_VERSION, + HTTP_QUERY_CONTENT_TYPE, + HTTP_QUERY_CONTENT_TRANSFER_ENCODING, + HTTP_QUERY_CONTENT_ID, + HTTP_QUERY_CONTENT_DESCRIPTION, + HTTP_QUERY_CONTENT_LENGTH, + HTTP_QUERY_CONTENT_LANGUAGE, + HTTP_QUERY_ALLOW, + HTTP_QUERY_PUBLIC, + HTTP_QUERY_DATE, + HTTP_QUERY_EXPIRES, + HTTP_QUERY_LAST_MODIFIED, + HTTP_QUERY_MESSAGE_ID, + HTTP_QUERY_URI, + HTTP_QUERY_DERIVED_FROM, + HTTP_QUERY_COST, + HTTP_QUERY_LINK, + HTTP_QUERY_PRAGMA, + HTTP_QUERY_VERSION, + HTTP_QUERY_STATUS_CODE, + HTTP_QUERY_STATUS_TEXT, + HTTP_QUERY_RAW_HEADERS, + HTTP_QUERY_RAW_HEADERS_CRLF, + HTTP_QUERY_CONNECTION, + HTTP_QUERY_ACCEPT, + HTTP_QUERY_ACCEPT_CHARSET, + HTTP_QUERY_ACCEPT_ENCODING, + HTTP_QUERY_ACCEPT_LANGUAGE, + HTTP_QUERY_AUTHORIZATION, + HTTP_QUERY_CONTENT_ENCODING, + HTTP_QUERY_FORWARDED, + HTTP_QUERY_FROM, + HTTP_QUERY_IF_MODIFIED_SINCE, + HTTP_QUERY_LOCATION, + HTTP_QUERY_ORIG_URI, + HTTP_QUERY_REFERER, + HTTP_QUERY_RETRY_AFTER, + HTTP_QUERY_SERVER, + HTTP_QUERY_TITLE, + HTTP_QUERY_USER_AGENT, + HTTP_QUERY_WWW_AUTHENTICATE, + HTTP_QUERY_PROXY_AUTHENTICATE, + HTTP_QUERY_ACCEPT_RANGES, + HTTP_QUERY_SET_COOKIE, + HTTP_QUERY_COOKIE, + HTTP_QUERY_REQUEST_METHOD, + HTTP_QUERY_MAX = 45, + HTTP_QUERY_CUSTOM = 65535 +} + +const DWORD + HTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, + HTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, + HTTP_QUERY_FLAG_NUMBER = 0x20000000, + HTTP_QUERY_FLAG_COALESCE = 0x10000000, + HTTP_QUERY_MODIFIER_FLAGS_MASK = 0xF0000000, + HTTP_QUERY_HEADER_MASK = ~HTTP_QUERY_MODIFIER_FLAGS_MASK; + +enum { + HTTP_STATUS_OK = 200, + HTTP_STATUS_CREATED, + HTTP_STATUS_ACCEPTED, + HTTP_STATUS_PARTIAL, + HTTP_STATUS_NO_CONTENT, // = 204 + HTTP_STATUS_AMBIGUOUS = 300, + HTTP_STATUS_MOVED, + HTTP_STATUS_REDIRECT, + HTTP_STATUS_REDIRECT_METHOD, + HTTP_STATUS_NOT_MODIFIED, // = 304 + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_DENIED, + HTTP_STATUS_PAYMENT_REQ, + HTTP_STATUS_FORBIDDEN, + HTTP_STATUS_NOT_FOUND, + HTTP_STATUS_BAD_METHOD, + HTTP_STATUS_NONE_ACCEPTABLE, + HTTP_STATUS_PROXY_AUTH_REQ, + HTTP_STATUS_REQUEST_TIMEOUT, + HTTP_STATUS_CONFLICT, + HTTP_STATUS_GONE, + HTTP_STATUS_AUTH_REFUSED, // = 411 + HTTP_STATUS_SERVER_ERROR = 500, + HTTP_STATUS_NOT_SUPPORTED, + HTTP_STATUS_BAD_GATEWAY, + HTTP_STATUS_SERVICE_UNAVAIL, + HTTP_STATUS_GATEWAY_TIMEOUT // = 504 +} + +enum { + INTERNET_PREFETCH_PROGRESS, + INTERNET_PREFETCH_COMPLETE, + INTERNET_PREFETCH_ABORTED +} + +const FLAGS_ERROR_UI_FILTER_FOR_ERRORS = 0x01; +const FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = 0x02; +const FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = 0x04; +const FLAGS_ERROR_UI_FLAGS_NO_UI = 0x08; + +const DWORD + HTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, + HTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, + HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, + HTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, + HTTP_ADDREQ_FLAG_ADD = 0x20000000, + HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, + HTTP_ADDREQ_FLAG_COALESCE = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, + HTTP_ADDREQ_FLAG_REPLACE = 0x80000000; + +enum { + INTERNET_ERROR_BASE = 12000, + ERROR_INTERNET_OUT_OF_HANDLES, + ERROR_INTERNET_TIMEOUT, + ERROR_INTERNET_EXTENDED_ERROR, + ERROR_INTERNET_INTERNAL_ERROR, + ERROR_INTERNET_INVALID_URL, + ERROR_INTERNET_UNRECOGNIZED_SCHEME, + ERROR_INTERNET_NAME_NOT_RESOLVED, + ERROR_INTERNET_PROTOCOL_NOT_FOUND, + ERROR_INTERNET_INVALID_OPTION, + ERROR_INTERNET_BAD_OPTION_LENGTH, + ERROR_INTERNET_OPTION_NOT_SETTABLE, + ERROR_INTERNET_SHUTDOWN, + ERROR_INTERNET_INCORRECT_USER_NAME, + ERROR_INTERNET_INCORRECT_PASSWORD, + ERROR_INTERNET_LOGIN_FAILURE, + ERROR_INTERNET_INVALID_OPERATION, + ERROR_INTERNET_OPERATION_CANCELLED, + ERROR_INTERNET_INCORRECT_HANDLE_TYPE, + ERROR_INTERNET_INCORRECT_HANDLE_STATE, + ERROR_INTERNET_NOT_PROXY_REQUEST, + ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND, + ERROR_INTERNET_BAD_REGISTRY_PARAMETER, + ERROR_INTERNET_NO_DIRECT_ACCESS, + ERROR_INTERNET_NO_CONTEXT, + ERROR_INTERNET_NO_CALLBACK, + ERROR_INTERNET_REQUEST_PENDING, + ERROR_INTERNET_INCORRECT_FORMAT, + ERROR_INTERNET_ITEM_NOT_FOUND, + ERROR_INTERNET_CANNOT_CONNECT, + ERROR_INTERNET_CONNECTION_ABORTED, + ERROR_INTERNET_CONNECTION_RESET, + ERROR_INTERNET_FORCE_RETRY, + ERROR_INTERNET_INVALID_PROXY_REQUEST, + ERROR_INTERNET_NEED_UI, // = INTERNET_ERROR_BASE + 34 + ERROR_INTERNET_HANDLE_EXISTS = INTERNET_ERROR_BASE + 36, + ERROR_INTERNET_SEC_CERT_DATE_INVALID, + ERROR_INTERNET_SEC_CERT_CN_INVALID, + ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR, + ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR, + ERROR_INTERNET_MIXED_SECURITY, + ERROR_INTERNET_CHG_POST_IS_NON_SECURE, + ERROR_INTERNET_POST_IS_NON_SECURE, + ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED, + ERROR_INTERNET_INVALID_CA, + ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP, + ERROR_INTERNET_ASYNC_THREAD_FAILED, + ERROR_INTERNET_REDIRECT_SCHEME_CHANGE, // = INTERNET_ERROR_BASE + 48 + + ERROR_FTP_TRANSFER_IN_PROGRESS = INTERNET_ERROR_BASE + 110, + ERROR_FTP_DROPPED, // = INTERNET_ERROR_BASE + 111 + ERROR_GOPHER_PROTOCOL_ERROR = INTERNET_ERROR_BASE + 130, + ERROR_GOPHER_NOT_FILE, + ERROR_GOPHER_DATA_ERROR, + ERROR_GOPHER_END_OF_DATA, + ERROR_GOPHER_INVALID_LOCATOR, + ERROR_GOPHER_INCORRECT_LOCATOR_TYPE, + ERROR_GOPHER_NOT_GOPHER_PLUS, + ERROR_GOPHER_ATTRIBUTE_NOT_FOUND, + ERROR_GOPHER_UNKNOWN_LOCATOR, // = INTERNET_ERROR_BASE + 138, + ERROR_HTTP_HEADER_NOT_FOUND = INTERNET_ERROR_BASE + 150, + ERROR_HTTP_DOWNLEVEL_SERVER, + ERROR_HTTP_INVALID_SERVER_RESPONSE, + ERROR_HTTP_INVALID_HEADER, + ERROR_HTTP_INVALID_QUERY_REQUEST, + ERROR_HTTP_HEADER_ALREADY_EXISTS, + ERROR_HTTP_REDIRECT_FAILED, + ERROR_INTERNET_SECURITY_CHANNEL_ERROR, + ERROR_INTERNET_UNABLE_TO_CACHE_FILE, + ERROR_INTERNET_TCPIP_NOT_INSTALLED, + ERROR_HTTP_NOT_REDIRECTED, // = INTERNET_ERROR_BASE + 160 + // why? + INTERNET_ERROR_LAST = ERROR_INTERNET_TCPIP_NOT_INSTALLED +} + + +const NORMAL_CACHE_ENTRY = 0x000001; +const STABLE_CACHE_ENTRY = 0x000002; +const STICKY_CACHE_ENTRY = 0x000004; +const SPARSE_CACHE_ENTRY = 0x010000; +const OCX_CACHE_ENTRY = 0x020000; +const COOKIE_CACHE_ENTRY = 0x100000; +const URLHISTORY_CACHE_ENTRY = 0x200000; + +const CACHE_ENTRY_ATTRIBUTE_FC = 0x0004; +const CACHE_ENTRY_HITRATE_FC = 0x0010; +const CACHE_ENTRY_MODTIME_FC = 0x0040; +const CACHE_ENTRY_EXPTIME_FC = 0x0080; +const CACHE_ENTRY_ACCTIME_FC = 0x0100; +const CACHE_ENTRY_SYNCTIME_FC = 0x0200; +const CACHE_ENTRY_HEADERINFO_FC = 0x0400; + +enum { + WININET_API_FLAG_ASYNC = 1, + WININET_API_FLAG_SYNC = 4, + WININET_API_FLAG_USE_CONTEXT = 8 +} + +// FIXME: how should these really be grouped? +enum { + IRF_ASYNC = WININET_API_FLAG_ASYNC, + IRF_SYNC = WININET_API_FLAG_SYNC, + IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, +} +const IRF_NO_WAIT = 8; + +enum { + HSR_ASYNC = WININET_API_FLAG_ASYNC, + HSR_SYNC = WININET_API_FLAG_SYNC, + HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, +} + +const HSR_INITIATE = 8; +const HSR_DOWNLOAD = 16; +const HSR_CHUNKED = 32; + +const INTERNET_DIAL_UNATTENDED = 0x8000; +const INTERNET_DIALSTATE_DISCONNECTED = 1; +const INTERENT_GOONLINE_REFRESH = 1; +const INTERENT_GOONLINE_MASK = 1; +const INTERNET_AUTODIAL_FORCE_ONLINE = 1; +const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2; +const INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4; +const INTERNET_CONNECTION_MODEM = 0x01; +const INTERNET_CONNECTION_LAN = 0x02; +const INTERNET_CONNECTION_PROXY = 0x04; +const INTERNET_CONNECTION_MODEM_BUSY = 0x08; +const INTERNET_RAS_INSTALLED = 0x10; +const INTERNET_CONNECTION_OFFLINE = 0x20; +const INTERNET_CONNECTION_CONFIGURED = 0x40; + +enum { + CACHEGROUP_SEARCH_ALL = 0, + CACHEGROUP_SEARCH_BYURL = 1 +} + +enum { + INTERNET_CACHE_GROUP_ADD = 0, + INTERNET_CACHE_GROUP_REMOVE = 1 +} + +mixin DECLARE_HANDLE!("HINTERNET"); // doesn't work - bug +/*struct HINTERNET { + HANDLE h; + alias h this; +}*/ +alias HINTERNET* LPHINTERNET; + +alias LONGLONG GROUPID; +alias WORD INTERNET_PORT; +alias WORD* LPINTERNET_PORT; + +enum INTERNET_SCHEME { + INTERNET_SCHEME_PARTIAL = -2, + INTERNET_SCHEME_UNKNOWN, + INTERNET_SCHEME_DEFAULT, + INTERNET_SCHEME_FTP, + INTERNET_SCHEME_GOPHER, + INTERNET_SCHEME_HTTP, + INTERNET_SCHEME_HTTPS, + INTERNET_SCHEME_FILE, + INTERNET_SCHEME_NEWS, + INTERNET_SCHEME_MAILTO, + INTERNET_SCHEME_SOCKS, + INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, + INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS +} +alias INTERNET_SCHEME* LPINTERNET_SCHEME; + +struct INTERNET_ASYNC_RESULT { + DWORD dwResult; + DWORD dwError; +} +alias INTERNET_ASYNC_RESULT* LPINTERNET_ASYNC_RESULT; + +struct INTERNET_PREFETCH_STATUS { + DWORD dwStatus; + DWORD dwSize; +} +alias INTERNET_PREFETCH_STATUS* LPINTERNET_PREFETCH_STATUS; + +struct INTERNET_PROXY_INFO { + DWORD dwAccessType; + LPCTSTR lpszProxy; + LPCTSTR lpszProxyBypass; +} +alias INTERNET_PROXY_INFO* LPINTERNET_PROXY_INFO; + +struct INTERNET_VERSION_INFO { + DWORD dwMajorVersion; + DWORD dwMinorVersion; +} +alias INTERNET_VERSION_INFO* LPINTERNET_VERSION_INFO; + +struct URL_COMPONENTSA { + DWORD dwStructSize = URL_COMPONENTSA.sizeof; + LPSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPSTR lpszUserName; + DWORD dwUserNameLength; + LPSTR lpszPassword; + DWORD dwPasswordLength; + LPSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} +alias URL_COMPONENTSA* LPURL_COMPONENTSA; + +struct URL_COMPONENTSW { + DWORD dwStructSize = URL_COMPONENTSW.sizeof; + LPWSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPWSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPWSTR lpszUserName; + DWORD dwUserNameLength; + LPWSTR lpszPassword; + DWORD dwPasswordLength; + LPWSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPWSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} +alias URL_COMPONENTSW* LPURL_COMPONENTSW; + +struct INTERNET_CERTIFICATE_INFO { + FILETIME ftExpiry; + FILETIME ftStart; + LPTSTR lpszSubjectInfo; + LPTSTR lpszIssuerInfo; + LPTSTR lpszProtocolName; + LPTSTR lpszSignatureAlgName; + LPTSTR lpszEncryptionAlgName; + DWORD dwKeySize; +} +alias INTERNET_CERTIFICATE_INFO* LPINTERNET_CERTIFICATE_INFO; + +extern (Windows) alias void function(HINTERNET, DWORD, DWORD, PVOID, DWORD) + INTERNET_STATUS_CALLBACK; +alias INTERNET_STATUS_CALLBACK* LPINTERNET_STATUS_CALLBACK; + +const INTERNET_INVALID_STATUS_CALLBACK + = cast(INTERNET_STATUS_CALLBACK) -1; + +struct GOPHER_FIND_DATAA { + CHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; + DWORD GopherType; + DWORD SizeLow; + DWORD SizeHigh; + FILETIME LastModificationTime; + CHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; +} +alias GOPHER_FIND_DATAA* LPGOPHER_FIND_DATAA; + +struct GOPHER_FIND_DATAW { + WCHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; + DWORD GopherType; + DWORD SizeLow; + DWORD SizeHigh; + FILETIME LastModificationTime; + WCHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; +} +alias GOPHER_FIND_DATAW* LPGOPHER_FIND_DATAW; + +struct GOPHER_ADMIN_ATTRIBUTE_TYPE { + LPCTSTR Comment; + LPCTSTR EmailAddress; +} +alias GOPHER_ADMIN_ATTRIBUTE_TYPE* LPGOPHER_ADMIN_ATTRIBUTE_TYPE; + +struct GOPHER_MOD_DATE_ATTRIBUTE_TYPE { + FILETIME DateAndTime; +} +alias GOPHER_MOD_DATE_ATTRIBUTE_TYPE* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE; + +struct GOPHER_TTL_ATTRIBUTE_TYPE { + DWORD Ttl; +} +alias GOPHER_TTL_ATTRIBUTE_TYPE* LPGOPHER_TTL_ATTRIBUTE_TYPE; + +struct GOPHER_SCORE_ATTRIBUTE_TYPE { + INT Score; +} +alias GOPHER_SCORE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_ATTRIBUTE_TYPE; + +struct GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE { + INT LowerBound; + INT UpperBound; +} +alias GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE; + +struct GOPHER_SITE_ATTRIBUTE_TYPE { + LPCTSTR Site; +} +alias GOPHER_SITE_ATTRIBUTE_TYPE* LPGOPHER_SITE_ATTRIBUTE_TYPE; + +struct GOPHER_ORGANIZATION_ATTRIBUTE_TYPE { + LPCTSTR Organization; +} +alias GOPHER_ORGANIZATION_ATTRIBUTE_TYPE* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE; + +struct GOPHER_LOCATION_ATTRIBUTE_TYPE { + LPCTSTR Location; +} +alias GOPHER_LOCATION_ATTRIBUTE_TYPE* LPGOPHER_LOCATION_ATTRIBUTE_TYPE; + +struct GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE { + INT DegreesNorth; + INT MinutesNorth; + INT SecondsNorth; + INT DegreesEast; + INT MinutesEast; + INT SecondsEast; +} +alias GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE* + LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE; + +struct GOPHER_TIMEZONE_ATTRIBUTE_TYPE { + INT Zone; +} +alias GOPHER_TIMEZONE_ATTRIBUTE_TYPE* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE; + +struct GOPHER_PROVIDER_ATTRIBUTE_TYPE { + LPCTSTR Provider; +} +alias GOPHER_PROVIDER_ATTRIBUTE_TYPE* LPGOPHER_PROVIDER_ATTRIBUTE_TYPE; + +struct GOPHER_VERSION_ATTRIBUTE_TYPE { + LPCTSTR Version; +} +alias GOPHER_VERSION_ATTRIBUTE_TYPE* LPGOPHER_VERSION_ATTRIBUTE_TYPE; + +struct GOPHER_ABSTRACT_ATTRIBUTE_TYPE { + LPCTSTR ShortAbstract; + LPCTSTR AbstractFile; +} +alias GOPHER_ABSTRACT_ATTRIBUTE_TYPE* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE; + +struct GOPHER_VIEW_ATTRIBUTE_TYPE { + LPCTSTR ContentType; + LPCTSTR Language; + DWORD Size; +} +alias GOPHER_VIEW_ATTRIBUTE_TYPE* LPGOPHER_VIEW_ATTRIBUTE_TYPE; + +struct GOPHER_VERONICA_ATTRIBUTE_TYPE { + BOOL TreeWalk; +} +alias GOPHER_VERONICA_ATTRIBUTE_TYPE* LPGOPHER_VERONICA_ATTRIBUTE_TYPE; + +struct GOPHER_ASK_ATTRIBUTE_TYPE { + LPCTSTR QuestionType; + LPCTSTR QuestionText; +} +alias GOPHER_ASK_ATTRIBUTE_TYPE* LPGOPHER_ASK_ATTRIBUTE_TYPE; + +struct GOPHER_UNKNOWN_ATTRIBUTE_TYPE { + LPCTSTR Text; +} +alias GOPHER_UNKNOWN_ATTRIBUTE_TYPE* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE; + +struct GOPHER_ATTRIBUTE_TYPE { + DWORD CategoryId; + DWORD AttributeId; + union { + GOPHER_ADMIN_ATTRIBUTE_TYPE Admin; + GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate; + GOPHER_TTL_ATTRIBUTE_TYPE Ttl; + GOPHER_SCORE_ATTRIBUTE_TYPE Score; + GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange; + GOPHER_SITE_ATTRIBUTE_TYPE Site; + GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization; + GOPHER_LOCATION_ATTRIBUTE_TYPE Location; + GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation; + GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone; + GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider; + GOPHER_VERSION_ATTRIBUTE_TYPE Version; + GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract; + GOPHER_VIEW_ATTRIBUTE_TYPE View; + GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica; + GOPHER_ASK_ATTRIBUTE_TYPE Ask; + GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown; + } /+AttributeType;+/ +} +alias GOPHER_ATTRIBUTE_TYPE* LPGOPHER_ATTRIBUTE_TYPE; + +alias BOOL function(LPGOPHER_ATTRIBUTE_TYPE, DWORD) + GOPHER_ATTRIBUTE_ENUMERATOR; + +struct INTERNET_CACHE_ENTRY_INFOA { + DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOA.sizeof; + LPSTR lpszSourceUrlName; + LPSTR lpszLocalFileName; + DWORD CacheEntryType; + DWORD dwUseCount; + DWORD dwHitRate; + DWORD dwSizeLow; + DWORD dwSizeHigh; + FILETIME LastModifiedTime; + FILETIME ExpireTime; + FILETIME LastAccessTime; + FILETIME LastSyncTime; + PBYTE lpHeaderInfo; + DWORD dwHeaderInfoSize; + LPSTR lpszFileExtension; + DWORD dwReserved; +} +alias INTERNET_CACHE_ENTRY_INFOA* LPINTERNET_CACHE_ENTRY_INFOA; + +struct INTERNET_CACHE_ENTRY_INFOW { + DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOW.sizeof; + LPWSTR lpszSourceUrlName; + LPWSTR lpszLocalFileName; + DWORD CacheEntryType; + DWORD dwUseCount; + DWORD dwHitRate; + DWORD dwSizeLow; + DWORD dwSizeHigh; + FILETIME LastModifiedTime; + FILETIME ExpireTime; + FILETIME LastAccessTime; + FILETIME LastSyncTime; + PBYTE lpHeaderInfo; + DWORD dwHeaderInfoSize; + LPWSTR lpszFileExtension; + DWORD dwReserved; +} +alias INTERNET_CACHE_ENTRY_INFOW* LPINTERNET_CACHE_ENTRY_INFOW; + +struct INTERNET_BUFFERSA { + DWORD dwStructSize = INTERNET_BUFFERSA.sizeof; + INTERNET_BUFFERSA* Next; + LPCSTR lpcszHeader; + DWORD dwHeadersLength; + DWORD dwHeadersTotal; + LPVOID lpvBuffer; + DWORD dwBufferLength; + DWORD dwBufferTotal; + DWORD dwOffsetLow; + DWORD dwOffsetHigh; +} +alias INTERNET_BUFFERSA* LPINTERNET_BUFFERSA; + +struct INTERNET_BUFFERSW { + DWORD dwStructSize = INTERNET_BUFFERSW.sizeof; + INTERNET_BUFFERSW* Next; + LPCWSTR lpcszHeader; + DWORD dwHeadersLength; + DWORD dwHeadersTotal; + LPVOID lpvBuffer; + DWORD dwBufferLength; + DWORD dwBufferTotal; + DWORD dwOffsetLow; + DWORD dwOffsetHigh; +} +alias INTERNET_BUFFERSW* LPINTERNET_BUFFERSW; + +const size_t + GROUP_OWNER_STORAGE_SIZE = 4, + GROUPNAME_MAX_LENGTH = 120; + +struct INTERNET_CACHE_GROUP_INFOA { + DWORD dwGroupSize; + DWORD dwGroupFlags; + DWORD dwGroupType; + DWORD dwDiskUsage; + DWORD dwDiskQuota; + DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; + CHAR[GROUPNAME_MAX_LENGTH] szGroupName; +} +alias INTERNET_CACHE_GROUP_INFOA* LPINTERNET_CACHE_GROUP_INFOA; + +struct INTERNET_CACHE_GROUP_INFOW { + DWORD dwGroupSize; + DWORD dwGroupFlags; + DWORD dwGroupType; + DWORD dwDiskUsage; + DWORD dwDiskQuota; + DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; + WCHAR[GROUPNAME_MAX_LENGTH] szGroupName; +} +alias INTERNET_CACHE_GROUP_INFOW* LPINTERNET_CACHE_GROUP_INFOW; + +extern (Windows) { + BOOL InternetTimeFromSystemTime(SYSTEMTIME*, DWORD, LPSTR, DWORD); + BOOL InternetTimeToSystemTime(LPCSTR, SYSTEMTIME*, DWORD); + BOOL InternetDebugGetLocalTime(SYSTEMTIME*, PDWORD); + BOOL InternetCrackUrlA(LPCSTR, DWORD, DWORD, LPURL_COMPONENTSA); + BOOL InternetCrackUrlW(LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW); + BOOL InternetCreateUrlA(LPURL_COMPONENTSA, DWORD, LPSTR, PDWORD); + BOOL InternetCreateUrlW(LPURL_COMPONENTSW, DWORD, LPWSTR, PDWORD); + BOOL InternetCanonicalizeUrlA(LPCSTR, LPSTR, PDWORD, DWORD); + BOOL InternetCanonicalizeUrlW(LPCWSTR, LPWSTR, PDWORD, DWORD); + BOOL InternetCheckConnectionA(LPCSTR, DWORD, DWORD); + BOOL InternetCheckConnectionW(LPCWSTR, DWORD, DWORD); + BOOL InternetCombineUrlA(LPCSTR, LPCSTR, LPSTR, PDWORD, DWORD); + BOOL InternetCombineUrlW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, DWORD); + HINTERNET InternetOpenA(LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD); + HINTERNET InternetOpenW(LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD); + BOOL InternetCloseHandle(HINTERNET); + HINTERNET InternetConnectA(HINTERNET, LPCSTR, INTERNET_PORT, LPCSTR, + LPCSTR, DWORD, DWORD, DWORD); + HINTERNET InternetConnectW(HINTERNET, LPCWSTR, INTERNET_PORT, LPCWSTR, + LPCWSTR, DWORD, DWORD, DWORD); + HINTERNET InternetOpenUrlA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD, + DWORD); + HINTERNET InternetOpenUrlW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD, + DWORD); + BOOL InternetReadFile(HINTERNET, PVOID, DWORD, PDWORD); + DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD); + BOOL InternetWriteFile(HINTERNET, LPCVOID, DWORD, PDWORD); + BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD); + BOOL InternetFindNextFileA(HINTERNET, PVOID); + BOOL InternetFindNextFileW(HINTERNET, PVOID); + BOOL InternetQueryOptionA(HINTERNET, DWORD, PVOID, PDWORD); + BOOL InternetQueryOptionW(HINTERNET, DWORD, PVOID, PDWORD); + BOOL InternetSetOptionA(HINTERNET, DWORD, PVOID, DWORD); + BOOL InternetSetOptionW(HINTERNET, DWORD, PVOID, DWORD); + BOOL InternetSetOptionExA(HINTERNET, DWORD, PVOID, DWORD, DWORD); + BOOL InternetSetOptionExW(HINTERNET, DWORD, PVOID, DWORD, DWORD); + BOOL InternetGetLastResponseInfoA(PDWORD, LPSTR, PDWORD); + BOOL InternetGetLastResponseInfoW(PDWORD, LPWSTR, PDWORD); + INTERNET_STATUS_CALLBACK InternetSetStatusCallback(HINTERNET, + INTERNET_STATUS_CALLBACK); + DWORD FtpGetFileSize(HINTERNET, LPDWORD); + HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATA, DWORD, + DWORD); + HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATA, DWORD, + DWORD); + BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD); + BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD); + BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); + BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL FtpDeleteFileA(HINTERNET, LPCSTR); + BOOL FtpDeleteFileW(HINTERNET, LPCWSTR); + BOOL FtpRenameFileA(HINTERNET, LPCSTR, LPCSTR); + BOOL FtpRenameFileW(HINTERNET, LPCWSTR, LPCWSTR); + HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD); + HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD); + BOOL FtpCreateDirectoryA(HINTERNET, LPCSTR); + BOOL FtpCreateDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpRemoveDirectoryA(HINTERNET, LPCSTR); + BOOL FtpRemoveDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpSetCurrentDirectoryA(HINTERNET, LPCSTR); + BOOL FtpSetCurrentDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpGetCurrentDirectoryA(HINTERNET, LPSTR, PDWORD); + BOOL FtpGetCurrentDirectoryW(HINTERNET, LPWSTR, PDWORD); + BOOL FtpCommandA(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET*); + BOOL FtpCommandW(HINTERNET, BOOL, DWORD, LPCWSTR, DWORD_PTR, HINTERNET*); + BOOL GopherCreateLocatorA(LPCSTR, INTERNET_PORT, LPCSTR, LPCSTR, DWORD, + LPSTR, PDWORD); + BOOL GopherCreateLocatorW(LPCWSTR, INTERNET_PORT, LPCWSTR, LPCWSTR, DWORD, + LPWSTR, PDWORD); + BOOL GopherGetLocatorTypeA(LPCSTR, PDWORD); + BOOL GopherGetLocatorTypeW(LPCWSTR, PDWORD); + HINTERNET GopherFindFirstFileA(HINTERNET, LPCSTR, LPCSTR, + LPGOPHER_FIND_DATAA, DWORD, DWORD); + HINTERNET GopherFindFirstFileW(HINTERNET, LPCWSTR, LPCWSTR, + LPGOPHER_FIND_DATAW, DWORD, DWORD); + HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); + HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL GopherGetAttributeA(HINTERNET, LPCSTR, LPCSTR, LPBYTE, DWORD, + PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); + BOOL GopherGetAttributeW(HINTERNET, LPCWSTR, LPCWSTR, LPBYTE, DWORD, + PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); + HINTERNET HttpOpenRequestA(HINTERNET, LPCSTR, LPCSTR, LPCSTR, LPCSTR, + LPCSTR*, DWORD, DWORD); + HINTERNET HttpOpenRequestW(HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, + LPCWSTR*, DWORD, DWORD); + BOOL HttpAddRequestHeadersA(HINTERNET, LPCSTR, DWORD, DWORD); + BOOL HttpAddRequestHeadersW(HINTERNET, LPCWSTR, DWORD, DWORD); + BOOL HttpSendRequestA(HINTERNET, LPCSTR, DWORD, PVOID, DWORD); + BOOL HttpSendRequestW(HINTERNET, LPCWSTR, DWORD, PVOID, DWORD); + BOOL HttpQueryInfoA(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); + BOOL HttpQueryInfoW(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); + BOOL InternetSetCookieA(LPCSTR, LPCSTR, LPCSTR); + BOOL InternetSetCookieW(LPCWSTR, LPCWSTR, LPCWSTR); + BOOL InternetGetCookieA(LPCSTR, LPCSTR, LPSTR, PDWORD); + BOOL InternetGetCookieW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD); + DWORD InternetAttemptConnect(DWORD); + DWORD InternetErrorDlg(HWND, HINTERNET, DWORD, DWORD, PVOID*); + DWORD InternetConfirmZoneCrossing(HWND, LPSTR, LPSTR, BOOL); + BOOL CreateUrlCacheEntryA(LPCSTR, DWORD, LPCSTR, LPSTR, DWORD); + BOOL CreateUrlCacheEntryW(LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD); + BOOL CommitUrlCacheEntryA(LPCSTR, LPCSTR, FILETIME, FILETIME, DWORD, + LPBYTE, DWORD, LPCSTR, DWORD); + BOOL CommitUrlCacheEntryW(LPCWSTR, LPCWSTR, FILETIME, FILETIME, DWORD, + LPBYTE, DWORD, LPCWSTR, DWORD); + BOOL RetrieveUrlCacheEntryFileA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD, DWORD); + BOOL RetrieveUrlCacheEntryFileW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD, DWORD); + BOOL UnlockUrlCacheEntryFile(LPCSTR, DWORD); + HANDLE RetrieveUrlCacheEntryStreamA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD, BOOL, DWORD); + HANDLE RetrieveUrlCacheEntryStreamW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD, BOOL, DWORD); + BOOL ReadUrlCacheEntryStream(HANDLE, DWORD, PVOID, PDWORD, DWORD); + BOOL UnlockUrlCacheEntryStream(HANDLE, DWORD); + BOOL GetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); + BOOL GetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); + BOOL SetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, DWORD); + BOOL SetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, DWORD); + HANDLE FindFirstUrlCacheEntryA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD); + HANDLE FindFirstUrlCacheEntryW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD); + BOOL FindNextUrlCacheEntryA(HANDLE, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); + BOOL FindNextUrlCacheEntryW(HANDLE, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); + BOOL FindCloseUrlCache(HANDLE); + BOOL DeleteUrlCacheEntry(LPCSTR); + DWORD AuthenticateUser(PVOID*, LPSTR, LPSTR, DWORD, LPSTR, DWORD, LPSTR, + LPSTR); + BOOL HttpSendRequestExA(HINTERNET, LPINTERNET_BUFFERSA, + LPINTERNET_BUFFERSA, DWORD, DWORD); + BOOL HttpSendRequestExW(HINTERNET, LPINTERNET_BUFFERSW, + LPINTERNET_BUFFERSW, DWORD, DWORD); + BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD); + BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD); + DWORD InternetDial(HWND, LPTSTR, DWORD, LPDWORD, DWORD); + DWORD InternetHangUp(DWORD, DWORD); + BOOL InternetGoOnline(LPTSTR, HWND, DWORD); + BOOL InternetAutodial(DWORD, DWORD); + BOOL InternetAutodialHangup(DWORD); + BOOL InternetGetConnectedState(LPDWORD, DWORD); + BOOL InternetSetDialState(LPCTSTR, DWORD, DWORD); + BOOL InternetReadFileExA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR); + BOOL InternetReadFileExW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR); + GROUPID CreateUrlCacheGroup(DWORD, LPVOID); + BOOL DeleteUrlCacheGroup(GROUPID, DWORD, LPVOID); + HANDLE FindFirstUrlCacheGroup(DWORD, DWORD, LPVOID, DWORD, GROUPID*, + LPVOID); + BOOL FindNextUrlCacheGroup(HANDLE, GROUPID*, LPVOID); + BOOL GetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOA, LPDWORD, LPVOID); + BOOL GetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOW, LPDWORD, LPVOID); + BOOL SetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOA, LPVOID); + BOOL SetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOW, LPVOID); +} + +version (Unicode) { + alias URL_COMPONENTSW URL_COMPONENTS; + alias LPURL_COMPONENTSW LPURL_COMPONENTS; + alias GOPHER_FIND_DATAW GOPHER_FIND_DATA; + alias LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA; + alias INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO; + alias LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO; + alias INTERNET_BUFFERSW INTERNET_BUFFERS; + alias INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO; + alias LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO; + alias InternetCrackUrlW InternetCrackUrl; + alias InternetCreateUrlW InternetCreateUrl; + alias InternetCanonicalizeUrlW InternetCanonicalizeUrl; + alias InternetCheckConnectionW InternetCheckConnection; + alias InternetCombineUrlW InternetCombineUrl; + alias InternetOpenW InternetOpen; + alias InternetConnectW InternetConnect; + alias InternetOpenUrlW InternetOpenUrl; + alias InternetFindNextFileW InternetFindNextFile; + alias InternetQueryOptionW InternetQueryOption; + alias InternetSetOptionW InternetSetOption; + alias InternetSetOptionExW InternetSetOptionEx; + alias InternetGetLastResponseInfoW InternetGetLastResponseInfo; + alias InternetReadFileExW InternetReadFileEx; + alias FtpFindFirstFileW FtpFindFirstFile; + alias FtpGetFileW FtpGetFile; + alias FtpPutFileW FtpPutFile; + alias FtpDeleteFileW FtpDeleteFile; + alias FtpRenameFileW FtpRenameFile; + alias FtpOpenFileW FtpOpenFile; + alias FtpCreateDirectoryW FtpCreateDirectory; + alias FtpRemoveDirectoryW FtpRemoveDirectory; + alias FtpSetCurrentDirectoryW FtpSetCurrentDirectory; + alias FtpGetCurrentDirectoryW FtpGetCurrentDirectory; + alias FtpCommandW FtpCommand; + alias GopherGetLocatorTypeW GopherGetLocatorType; + alias GopherCreateLocatorW GopherCreateLocator; + alias GopherFindFirstFileW GopherFindFirstFile; + alias GopherOpenFileW GopherOpenFile; + alias GopherGetAttributeW GopherGetAttribute; + alias HttpSendRequestW HttpSendRequest; + alias HttpOpenRequestW HttpOpenRequest; + alias HttpAddRequestHeadersW HttpAddRequestHeaders; + alias HttpQueryInfoW HttpQueryInfo; + alias InternetSetCookieW InternetSetCookie; + alias InternetGetCookieW InternetGetCookie; + alias CreateUrlCacheEntryW CreateUrlCacheEntry; + alias RetrieveUrlCacheEntryStreamW RetrieveUrlCacheEntryStream; + alias FindNextUrlCacheEntryW FindNextUrlCacheEntry; + alias CommitUrlCacheEntryW CommitUrlCacheEntry; + alias GetUrlCacheEntryInfoW GetUrlCacheEntryInfo; + alias SetUrlCacheEntryInfoW SetUrlCacheEntryInfo; + alias FindFirstUrlCacheEntryW FindFirstUrlCacheEntry; + alias RetrieveUrlCacheEntryFileW RetrieveUrlCacheEntryFile; + alias HttpSendRequestExW HttpSendRequestEx; + alias HttpEndRequestW HttpEndRequest; + alias GetUrlCacheGroupAttributeW GetUrlCacheGroupAttribute; + alias SetUrlCacheGroupAttributeW SetUrlCacheGroupAttribute; +} else { + alias URL_COMPONENTSA URL_COMPONENTS; + alias LPURL_COMPONENTSA LPURL_COMPONENTS; + alias GOPHER_FIND_DATAA GOPHER_FIND_DATA; + alias LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA; + alias INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO; + alias LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO; + alias INTERNET_BUFFERSA INTERNET_BUFFERS; + alias INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO; + alias LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO; + alias GopherGetAttributeA GopherGetAttribute; + alias InternetCrackUrlA InternetCrackUrl; + alias InternetCreateUrlA InternetCreateUrl; + alias InternetCanonicalizeUrlA InternetCanonicalizeUrl; + alias InternetCheckConnectionA InternetCheckConnection; + alias InternetCombineUrlA InternetCombineUrl; + alias InternetOpenA InternetOpen; + alias InternetConnectA InternetConnect; + alias InternetOpenUrlA InternetOpenUrl; + alias InternetFindNextFileA InternetFindNextFile; + alias InternetQueryOptionA InternetQueryOption; + alias InternetSetOptionA InternetSetOption; + alias InternetSetOptionExA InternetSetOptionEx; + alias InternetGetLastResponseInfoA InternetGetLastResponseInfo; + alias InternetReadFileExA InternetReadFileEx; + alias FtpFindFirstFileA FtpFindFirstFile; + alias FtpGetFileA FtpGetFile; + alias FtpPutFileA FtpPutFile; + alias FtpDeleteFileA FtpDeleteFile; + alias FtpRenameFileA FtpRenameFile; + alias FtpOpenFileA FtpOpenFile; + alias FtpCreateDirectoryA FtpCreateDirectory; + alias FtpRemoveDirectoryA FtpRemoveDirectory; + alias FtpSetCurrentDirectoryA FtpSetCurrentDirectory; + alias FtpGetCurrentDirectoryA FtpGetCurrentDirectory; + alias FtpCommandA FtpCommand; + alias GopherGetLocatorTypeA GopherGetLocatorType; + alias GopherCreateLocatorA GopherCreateLocator; + alias GopherFindFirstFileA GopherFindFirstFile; + alias GopherOpenFileA GopherOpenFile; + alias HttpSendRequestA HttpSendRequest; + alias HttpOpenRequestA HttpOpenRequest; + alias HttpAddRequestHeadersA HttpAddRequestHeaders; + alias HttpQueryInfoA HttpQueryInfo; + alias InternetSetCookieA InternetSetCookie; + alias InternetGetCookieA InternetGetCookie; + alias CreateUrlCacheEntryA CreateUrlCacheEntry; + alias RetrieveUrlCacheEntryStreamA RetrieveUrlCacheEntryStream; + alias FindNextUrlCacheEntryA FindNextUrlCacheEntry; + alias CommitUrlCacheEntryA CommitUrlCacheEntry; + alias GetUrlCacheEntryInfoA GetUrlCacheEntryInfo; + alias SetUrlCacheEntryInfoA SetUrlCacheEntryInfo; + alias FindFirstUrlCacheEntryA FindFirstUrlCacheEntry; + alias RetrieveUrlCacheEntryFileA RetrieveUrlCacheEntryFile; + alias HttpSendRequestExA HttpSendRequestEx; + alias HttpEndRequestA HttpEndRequest; + alias GetUrlCacheGroupAttributeA GetUrlCacheGroupAttribute; + alias SetUrlCacheGroupAttributeA SetUrlCacheGroupAttribute; +} + +alias INTERNET_BUFFERS* LPINTERNET_BUFFERS; diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d index 744b627f57..3c47837180 100644 --- a/src/core/sys/windows/winioctl.d +++ b/src/core/sys/windows/winioctl.d @@ -1,711 +1,711 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winioctl.d) - */ -module core.sys.windows.winioctl; - -// FIXME: check types of some constants - -private import core.sys.windows.basetyps, core.sys.windows.windef; - -const size_t - HIST_NO_OF_BUCKETS = 24, - HISTOGRAM_BUCKET_SIZE = HISTOGRAM_BUCKET.sizeof, - DISK_HISTOGRAM_SIZE = DISK_HISTOGRAM.sizeof; - -alias DWORD DEVICE_TYPE; - -enum : DEVICE_TYPE { - FILE_DEVICE_BEEP = 1, - FILE_DEVICE_CD_ROM, - FILE_DEVICE_CD_ROM_FILE_SYSTEM, - FILE_DEVICE_CONTROLLER, - FILE_DEVICE_DATALINK, - FILE_DEVICE_DFS, - FILE_DEVICE_DISK, - FILE_DEVICE_DISK_FILE_SYSTEM, - FILE_DEVICE_FILE_SYSTEM, - FILE_DEVICE_INPORT_PORT, - FILE_DEVICE_KEYBOARD, - FILE_DEVICE_MAILSLOT, - FILE_DEVICE_MIDI_IN, - FILE_DEVICE_MIDI_OUT, - FILE_DEVICE_MOUSE, - FILE_DEVICE_MULTI_UNC_PROVIDER, - FILE_DEVICE_NAMED_PIPE, - FILE_DEVICE_NETWORK, - FILE_DEVICE_NETWORK_BROWSER, - FILE_DEVICE_NETWORK_FILE_SYSTEM, - FILE_DEVICE_NULL, - FILE_DEVICE_PARALLEL_PORT, - FILE_DEVICE_PHYSICAL_NETCARD, - FILE_DEVICE_PRINTER, - FILE_DEVICE_SCANNER, - FILE_DEVICE_SERIAL_MOUSE_PORT, - FILE_DEVICE_SERIAL_PORT, - FILE_DEVICE_SCREEN, - FILE_DEVICE_SOUND, - FILE_DEVICE_STREAMS, - FILE_DEVICE_TAPE, - FILE_DEVICE_TAPE_FILE_SYSTEM, - FILE_DEVICE_TRANSPORT, - FILE_DEVICE_UNKNOWN, - FILE_DEVICE_VIDEO, - FILE_DEVICE_VIRTUAL_DISK, - FILE_DEVICE_WAVE_IN, - FILE_DEVICE_WAVE_OUT, - FILE_DEVICE_8042_PORT, - FILE_DEVICE_NETWORK_REDIRECTOR, - FILE_DEVICE_BATTERY, - FILE_DEVICE_BUS_EXTENDER, - FILE_DEVICE_MODEM, - FILE_DEVICE_VDM, - FILE_DEVICE_MASS_STORAGE, - FILE_DEVICE_SMB, - FILE_DEVICE_KS, - FILE_DEVICE_CHANGER, - FILE_DEVICE_SMARTCARD, - FILE_DEVICE_ACPI, - FILE_DEVICE_DVD, - FILE_DEVICE_FULLSCREEN_VIDEO, - FILE_DEVICE_DFS_FILE_SYSTEM, - FILE_DEVICE_DFS_VOLUME, - FILE_DEVICE_SERENUM, - FILE_DEVICE_TERMSRV, - FILE_DEVICE_KSEC // = 57 -} - -enum { - METHOD_BUFFERED, - METHOD_IN_DIRECT, - METHOD_OUT_DIRECT, - METHOD_NEITHER -} - -enum { - FILE_ANY_ACCESS, - FILE_SPECIAL_ACCESS = 0, - FILE_READ_ACCESS, - FILE_WRITE_ACCESS -} - -/* Bit pattern: - * tttttttt tttttttt aaffffff ffffffmm - */ -/+ -#define CTL_CODE(t, f, m, a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) -+/ - -template CTL_CODE_T(DEVICE_TYPE t, uint f, uint m, uint a) { - const DWORD CTL_CODE_T = (t << 16) | (a << 14) | (f << 2) | m; -} - -DEVICE_TYPE DEVICE_TYPE_FROM_CTL_CODE(DWORD c) { - return (c & 0xFFFF0000) >> 16; -} - -const DEVICE_TYPE - IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE, - IOCTL_DISK_BASE = FILE_DEVICE_DISK, - IOCTL_VOLUME_BASE = 'V'; - -enum : DWORD { - IOCTL_STORAGE_CHECK_VERIFY = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_CHECK_VERIFY2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_EJECT_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_LOAD_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_LOAD_MEDIA2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_RESERVE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_RELEASE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_EJECTION_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_MCN_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_GET_MEDIA_TYPES_EX = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_RESET_BUS = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_RESET_DEVICE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_GET_DEVICE_NUMBER = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_PREDICT_FAILURE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS), - - IOCTL_DISK_GET_DRIVE_GEOMETRY = CTL_CODE_T!(IOCTL_DISK_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 1, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_SET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_GET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_SET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 4, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_FORMAT_TRACKS = CTL_CODE_T!(IOCTL_DISK_BASE, 6, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_REASSIGN_BLOCKS = CTL_CODE_T!(IOCTL_DISK_BASE, 7, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_PERFORMANCE = CTL_CODE_T!(IOCTL_DISK_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_IS_WRITABLE = CTL_CODE_T!(IOCTL_DISK_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_LOGGING = CTL_CODE_T!(IOCTL_DISK_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_FORMAT_TRACKS_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 11, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_HISTOGRAM_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_HISTOGRAM_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_HISTOGRAM_RESET = CTL_CODE_T!(IOCTL_DISK_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_REQUEST_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_REQUEST_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 16, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_SET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_GET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_SET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x15, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_CREATE_DISK = CTL_CODE_T!(IOCTL_DISK_BASE, 0x16, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_GET_LENGTH_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 0x17, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_PERFORMANCE_OFF = CTL_CODE_T!(IOCTL_DISK_BASE, 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GET_DRIVE_GEOMETRY_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x28, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GROW_PARTITION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x34, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_GET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x35, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_SET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x36, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_DELETE_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 0x40, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_UPDATE_PROPERTIES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x50, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_CHECK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 0x200, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_DISK_BASE, 0x201, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_EJECT_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x202, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_LOAD_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x203, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_RESERVE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x204, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_RELEASE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x205, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x206, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_REMOVE_DEVICE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x207, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x300, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_UPDATE_DRIVE_SIZE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_SERIAL_LSRMST_INSERT = CTL_CODE_T!(FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS), - - IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS = CTL_CODE_T!(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_VOLUME_IS_CLUSTERED = CTL_CODE_T!(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), - - FSCTL_LOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_UNLOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_DISMOUNT_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_MOUNT_DBLS_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_GET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_SET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA|FILE_WRITE_DATA), - FSCTL_READ_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 17, METHOD_NEITHER, FILE_READ_DATA), - FSCTL_WRITE_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 18, METHOD_NEITHER, FILE_WRITE_DATA), - FSCTL_GET_NTFS_VOLUME_DATA = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_GET_VOLUME_BITMAP = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS), - FSCTL_GET_RETRIEVAL_POINTERS = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS), - FSCTL_MOVE_FILE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_GET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_SET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_DELETE_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_SET_SPARSE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS), -} - -enum : BYTE { - PARTITION_ENTRY_UNUSED, - PARTITION_FAT_12, - PARTITION_XENIX_1, - PARTITION_XENIX_2, - PARTITION_FAT_16, - PARTITION_EXTENDED, - PARTITION_HUGE, - PARTITION_IFS, // = 0x07 - PARTITION_FAT32 = 0x0B, - PARTITION_FAT32_XINT13 = 0x0C, - PARTITION_XINT13 = 0x0E, - PARTITION_XINT13_EXTENDED = 0x0F, - PARTITION_PREP = 0x41, - PARTITION_LDM = 0x42, - PARTITION_UNIX = 0x63 -} - -const BYTE - PARTITION_NTFT = 0x80, - VALID_NTFT = 0xC0; - -enum { - SERIAL_LSRMST_ESCAPE, - SERIAL_LSRMST_LSR_DATA, - SERIAL_LSRMST_LSR_NODATA, - SERIAL_LSRMST_MST -} - -enum { - DISK_LOGGING_START, - DISK_LOGGING_STOP, - DISK_LOGGING_DUMP, - DISK_BINNING -} - -alias WORD BAD_TRACK_NUMBER; -alias WORD* PBAD_TRACK_NUMBER; - -enum BIN_TYPES { - RequestSize, RequestLocation -} - -struct BIN_RANGE { - LARGE_INTEGER StartValue; - LARGE_INTEGER Length; -} -alias BIN_RANGE* PBIN_RANGE; - -struct BIN_COUNT { - BIN_RANGE BinRange; - DWORD BinCount; -} -alias BIN_COUNT* PBIN_COUNT; - -struct BIN_RESULTS { - DWORD NumberOfBins; - BIN_COUNT _BinCounts; - - BIN_COUNT* BinCounts() { return &_BinCounts; } -} -alias BIN_RESULTS* PBIN_RESULTS; - -enum PARTITION_STYLE { - PARTITION_STYLE_MBR, - PARTITION_STYLE_GPT, - PARTITION_STYLE_RAW -} - -struct CREATE_DISK_GPT { - GUID DiskId; - DWORD MaxPartitionCount; -} -alias CREATE_DISK_GPT* PCREATE_DISK_GPT; - -struct CREATE_DISK_MBR { - DWORD Signature; -} -alias CREATE_DISK_MBR* PCREATE_DISK_MBR; - -struct CREATE_DISK { - PARTITION_STYLE PartitionStyle; - union { - CREATE_DISK_MBR Mbr; - CREATE_DISK_GPT Gpt; - } -} -alias CREATE_DISK* PCREATE_DISK; - -enum DISK_CACHE_RETENTION_PRIORITY { - EqualPriority, - KeepPrefetchedData, - KeepReadData -} - -struct DISK_CACHE_INFORMATION { - BOOLEAN ParametersSavable; - BOOLEAN ReadCacheEnabled; - BOOLEAN WriteCacheEnabled; - DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; - DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; - WORD DisablePrefetchTransferLength; - BOOLEAN PrefetchScalar; - union { - struct _ScalarPrefetch { - WORD Minimum; - WORD Maximum; - WORD MaximumBlocks; - } - _ScalarPrefetch ScalarPrefetch; - struct _BlockPrefetch { - WORD Minimum; - WORD Maximum; - } - _BlockPrefetch BlockPrefetch; - } -} -alias DISK_CACHE_INFORMATION* PDISK_CACHE_INFORMATION; - -enum DETECTION_TYPE { - DetectNone, - DetectInt13, - DetectExInt13 -} - -struct DISK_INT13_INFO { - WORD DriveSelect; - DWORD MaxCylinders; - WORD SectorsPerTrack; - WORD MaxHeads; - WORD NumberDrives; - } -alias DISK_INT13_INFO* PDISK_INT13_INFO; - -struct DISK_EX_INT13_INFO { - WORD ExBufferSize; - WORD ExFlags; - DWORD ExCylinders; - DWORD ExHeads; - DWORD ExSectorsPerTrack; - DWORD64 ExSectorsPerDrive; - WORD ExSectorSize; - WORD ExReserved; -} -alias DISK_EX_INT13_INFO* PDISK_EX_INT13_INFO; - -struct DISK_DETECTION_INFO { - DWORD SizeOfDetectInfo; - DETECTION_TYPE DetectionType; - DISK_INT13_INFO Int13; - DISK_EX_INT13_INFO ExInt13; -} -alias DISK_DETECTION_INFO* PDISK_DETECTION_INFO; - -enum MEDIA_TYPE { - Unknown, - F5_1Pt2_512, - F3_1Pt44_512, - F3_2Pt88_512, - F3_20Pt8_512, - F3_720_512, - F5_360_512, - F5_320_512, - F5_320_1024, - F5_180_512, - F5_160_512, - RemovableMedia, - FixedMedia, - F3_120M_512, - F3_640_512, - F5_640_512, - F5_720_512, - F3_1Pt2_512, - F3_1Pt23_1024, - F5_1Pt23_1024, - F3_128Mb_512, - F3_230Mb_512, - F8_256_128, - F3_200Mb_512, - F3_240M_512, - F3_32M_512 -} -alias MEDIA_TYPE* PMEDIA_TYPE; - -struct DISK_GEOMETRY { - LARGE_INTEGER Cylinders; - MEDIA_TYPE MediaType; - DWORD TracksPerCylinder; - DWORD SectorsPerTrack; - DWORD BytesPerSector; -} -alias DISK_GEOMETRY* PDISK_GEOMETRY; - -struct DISK_GEOMETRY_EX { - DISK_GEOMETRY Geometry; - LARGE_INTEGER DiskSize; - BYTE _Data; - - BYTE* Data() { return &_Data; } -} -alias DISK_GEOMETRY_EX* PDISK_GEOMETRY_EX; - -struct DISK_GROW_PARTITION { - DWORD PartitionNumber; - LARGE_INTEGER BytesToGrow; -} -alias DISK_GROW_PARTITION* PDISK_GROW_PARTITION; - -struct DISK_PARTITION_INFO { - DWORD SizeOfPartitionInfo; - PARTITION_STYLE PartitionStyle; - union { - //struct { - DWORD Signature; - //} Mbr; - //struct { - GUID DiskId; - //} Gpt; - } -} -alias DISK_PARTITION_INFO* PDISK_PARTITION_INFO; - -struct DISK_PERFORMANCE { - LARGE_INTEGER BytesRead; - LARGE_INTEGER BytesWritten; - LARGE_INTEGER ReadTime; - LARGE_INTEGER WriteTime; - DWORD ReadCount; - DWORD WriteCount; - DWORD QueueDepth; -} -alias DISK_PERFORMANCE* PDISK_PERFORMANCE; - -struct DISK_RECORD { - LARGE_INTEGER ByteOffset; - LARGE_INTEGER StartTime; - LARGE_INTEGER EndTime; - PVOID VirtualAddress; - DWORD NumberOfBytes; - BYTE DeviceNumber; - BOOLEAN ReadRequest; -} -alias DISK_RECORD* PDISK_RECORD; - -struct DISK_LOGGING { - BYTE Function; - PVOID BufferAddress; - DWORD BufferSize; -} -alias DISK_LOGGING* PDISK_LOGGING; - -struct DISKQUOTA_USER_INFORMATION { - LONGLONG QuotaUsed; - LONGLONG QuotaThreshold; - LONGLONG QuotaLimit; -} -alias DISKQUOTA_USER_INFORMATION* PDISKQUOTA_USER_INFORMATION; - -struct FORMAT_PARAMETERS { - MEDIA_TYPE MediaType; - DWORD StartCylinderNumber; - DWORD EndCylinderNumber; - DWORD StartHeadNumber; - DWORD EndHeadNumber; -} -alias FORMAT_PARAMETERS* PFORMAT_PARAMETERS; - -struct FORMAT_EX_PARAMETERS { - MEDIA_TYPE MediaType; - DWORD StartCylinderNumber; - DWORD EndCylinderNumber; - DWORD StartHeadNumber; - DWORD EndHeadNumber; - WORD FormatGapLength; - WORD SectorsPerTrack; - WORD _SectorNumber; - - WORD* SectorNumber() { return &_SectorNumber; } -} -alias FORMAT_EX_PARAMETERS* PFORMAT_EX_PARAMETERS; - -struct GET_LENGTH_INFORMATION { - LARGE_INTEGER Length; -} - -struct HISTOGRAM_BUCKET { - DWORD Reads; - DWORD Writes; -} -alias HISTOGRAM_BUCKET* PHISTOGRAM_BUCKET; - -struct DISK_HISTOGRAM { - LARGE_INTEGER DiskSize; - LARGE_INTEGER Start; - LARGE_INTEGER End; - LARGE_INTEGER Average; - LARGE_INTEGER AverageRead; - LARGE_INTEGER AverageWrite; - DWORD Granularity; - DWORD Size; - DWORD ReadCount; - DWORD WriteCount; - PHISTOGRAM_BUCKET Histogram; -} -alias DISK_HISTOGRAM* PDISK_HISTOGRAM; - -struct DISK_EXTENT { - DWORD DiskNumber; - LARGE_INTEGER StartingOffset; - LARGE_INTEGER ExtentLength; -} -alias DISK_EXTENT* PDISK_EXTENT; - -struct VOLUME_DISK_EXTENTS { - DWORD NumberOfDiskExtents; - DISK_EXTENT _Extents; - - DISK_EXTENT* Extents() { return &_Extents; } -} -alias VOLUME_DISK_EXTENTS* PVOLUME_DISK_EXTENTS; - -struct PARTITION_INFORMATION { - LARGE_INTEGER StartingOffset; - LARGE_INTEGER PartitionLength; - DWORD HiddenSectors; - DWORD PartitionNumber; - BYTE PartitionType; - BOOLEAN BootIndicator; - BOOLEAN RecognizedPartition; - BOOLEAN RewritePartition; -} -alias PARTITION_INFORMATION* PPARTITION_INFORMATION; - -struct DRIVE_LAYOUT_INFORMATION { - DWORD PartitionCount; - DWORD Signature; - PARTITION_INFORMATION _PartitionEntry; - - PARTITION_INFORMATION* PartitionEntry() { return &_PartitionEntry; } -} -alias DRIVE_LAYOUT_INFORMATION* PDRIVE_LAYOUT_INFORMATION; - -struct DRIVE_LAYOUT_INFORMATION_GPT { - GUID DiskId; - LARGE_INTEGER StartingUsableOffset; - LARGE_INTEGER UsableLength; - ULONG MaxPartitionCount; -} -alias DRIVE_LAYOUT_INFORMATION_GPT* PDRIVE_LAYOUT_INFORMATION_GPT; - -struct DRIVE_LAYOUT_INFORMATION_MBR { - ULONG Signature; -} -alias DRIVE_LAYOUT_INFORMATION_MBR* PDRIVE_LAYOUT_INFORMATION_MBR; - -struct PARTITION_INFORMATION_MBR { - BYTE PartitionType; - BOOLEAN BootIndicator; - BOOLEAN RecognizedPartition; - DWORD HiddenSectors; -} - -struct PARTITION_INFORMATION_GPT { - GUID PartitionType; - GUID PartitionId; - DWORD64 Attributes; - WCHAR[36] Name; -} - -struct PARTITION_INFORMATION_EX { - PARTITION_STYLE PartitionStyle; - LARGE_INTEGER StartingOffset; - LARGE_INTEGER PartitionLength; - DWORD PartitionNumber; - BOOLEAN RewritePartition; - union { - PARTITION_INFORMATION_MBR Mbr; - PARTITION_INFORMATION_GPT Gpt; - } -} - -struct DRIVE_LAYOUT_INFORMATION_EX { - DWORD PartitionStyle; - DWORD PartitionCount; - union { - DRIVE_LAYOUT_INFORMATION_MBR Mbr; - DRIVE_LAYOUT_INFORMATION_GPT Gpt; - } - PARTITION_INFORMATION_EX _PartitionEntry; - - PARTITION_INFORMATION_EX* PartitionEntry() { return &_PartitionEntry; } -} -alias DRIVE_LAYOUT_INFORMATION_EX* PDRIVE_LAYOUT_INFORMATION_EX; - -struct MOVE_FILE_DATA { - HANDLE FileHandle; - LARGE_INTEGER StartingVcn; - LARGE_INTEGER StartingLcn; - DWORD ClusterCount; -} -alias MOVE_FILE_DATA* PMOVE_FILE_DATA; - -struct PERF_BIN { - DWORD NumberOfBins; - DWORD TypeOfBin; - BIN_RANGE _BinsRanges; - - BIN_RANGE* BinsRanges() { return &_BinsRanges; } -} -alias PERF_BIN* PPERF_BIN; - -struct PREVENT_MEDIA_REMOVAL { - BOOLEAN PreventMediaRemoval; -} -alias PREVENT_MEDIA_REMOVAL* PPREVENT_MEDIA_REMOVAL; - -struct RETRIEVAL_POINTERS_BUFFER { - DWORD ExtentCount; - LARGE_INTEGER StartingVcn; - // In MinGW, this is declared as struct { ... } Extents[1]; - struct Extent { - LARGE_INTEGER NextVcn; - LARGE_INTEGER Lcn; - } - Extent _Extents; - - Extent* Extents() { return &_Extents; } -} -alias RETRIEVAL_POINTERS_BUFFER* PRETRIEVAL_POINTERS_BUFFER; - -struct REASSIGN_BLOCKS { - WORD Reserved; - WORD Count; - DWORD _BlockNumber; - - DWORD* BlockNumber() { return &_BlockNumber; } -} -alias REASSIGN_BLOCKS* PREASSIGN_BLOCKS; - -struct SET_PARTITION_INFORMATION { - BYTE PartitionType; -} -alias SET_PARTITION_INFORMATION* PSET_PARTITION_INFORMATION; - -struct STARTING_LCN_INPUT_BUFFER { - LARGE_INTEGER StartingLcn; -} -alias STARTING_LCN_INPUT_BUFFER* PSTARTING_LCN_INPUT_BUFFER; - -struct STARTING_VCN_INPUT_BUFFER { - LARGE_INTEGER StartingVcn; -} -alias STARTING_VCN_INPUT_BUFFER* PSTARTING_VCN_INPUT_BUFFER; - -struct VERIFY_INFORMATION { - LARGE_INTEGER StartingOffset; - DWORD Length; -} -alias VERIFY_INFORMATION* PVERIFY_INFORMATION; - -struct VOLUME_BITMAP_BUFFER { - LARGE_INTEGER StartingLcn; - LARGE_INTEGER BitmapSize; - BYTE _Buffer; - - BYTE* Buffer() { return &_Buffer; } -} -alias VOLUME_BITMAP_BUFFER* PVOLUME_BITMAP_BUFFER; - -struct NTFS_VOLUME_DATA_BUFFER { - LARGE_INTEGER VolumeSerialNumber; - LARGE_INTEGER NumberSectors; - LARGE_INTEGER TotalClusters; - LARGE_INTEGER FreeClusters; - LARGE_INTEGER TotalReserved; - DWORD BytesPerSector; - DWORD BytesPerCluster; - DWORD BytesPerFileRecordSegment; - DWORD ClustersPerFileRecordSegment; - LARGE_INTEGER MftValidDataLength; - LARGE_INTEGER MftStartLcn; - LARGE_INTEGER Mft2StartLcn; - LARGE_INTEGER MftZoneStart; - LARGE_INTEGER MftZoneEnd; -} -alias NTFS_VOLUME_DATA_BUFFER* PNTFS_VOLUME_DATA_BUFFER; - - -bool IsRecognizedPartition(BYTE t) { - return ((t & PARTITION_NTFT) - && ((t & ~VALID_NTFT) == PARTITION_FAT_12 - || (t & ~VALID_NTFT) == PARTITION_FAT_16 - || (t & ~VALID_NTFT) == PARTITION_IFS - || (t & ~VALID_NTFT) == PARTITION_HUGE - || (t & ~VALID_NTFT) == PARTITION_FAT32 - || (t & ~VALID_NTFT) == PARTITION_FAT32_XINT13 - || (t & ~VALID_NTFT) == PARTITION_XINT13)) - || (t & ~PARTITION_NTFT) == PARTITION_FAT_12 - || (t & ~PARTITION_NTFT) == PARTITION_FAT_16 - || (t & ~PARTITION_NTFT) == PARTITION_IFS - || (t & ~PARTITION_NTFT) == PARTITION_HUGE - || (t & ~PARTITION_NTFT) == PARTITION_FAT32 - || (t & ~PARTITION_NTFT) == PARTITION_FAT32_XINT13 - || (t & ~PARTITION_NTFT) == PARTITION_XINT13; -} - -bool IsContainerPartition(BYTE t) { - return ((t & PARTITION_NTFT) - && ((t & ~VALID_NTFT) == PARTITION_EXTENDED - || (t & ~VALID_NTFT) == PARTITION_XINT13_EXTENDED)) - || (t & ~PARTITION_NTFT) == PARTITION_EXTENDED - || (t & ~PARTITION_NTFT) == PARTITION_XINT13_EXTENDED; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winioctl.d) + */ +module core.sys.windows.winioctl; + +// FIXME: check types of some constants + +private import core.sys.windows.basetyps, core.sys.windows.windef; + +const size_t + HIST_NO_OF_BUCKETS = 24, + HISTOGRAM_BUCKET_SIZE = HISTOGRAM_BUCKET.sizeof, + DISK_HISTOGRAM_SIZE = DISK_HISTOGRAM.sizeof; + +alias DWORD DEVICE_TYPE; + +enum : DEVICE_TYPE { + FILE_DEVICE_BEEP = 1, + FILE_DEVICE_CD_ROM, + FILE_DEVICE_CD_ROM_FILE_SYSTEM, + FILE_DEVICE_CONTROLLER, + FILE_DEVICE_DATALINK, + FILE_DEVICE_DFS, + FILE_DEVICE_DISK, + FILE_DEVICE_DISK_FILE_SYSTEM, + FILE_DEVICE_FILE_SYSTEM, + FILE_DEVICE_INPORT_PORT, + FILE_DEVICE_KEYBOARD, + FILE_DEVICE_MAILSLOT, + FILE_DEVICE_MIDI_IN, + FILE_DEVICE_MIDI_OUT, + FILE_DEVICE_MOUSE, + FILE_DEVICE_MULTI_UNC_PROVIDER, + FILE_DEVICE_NAMED_PIPE, + FILE_DEVICE_NETWORK, + FILE_DEVICE_NETWORK_BROWSER, + FILE_DEVICE_NETWORK_FILE_SYSTEM, + FILE_DEVICE_NULL, + FILE_DEVICE_PARALLEL_PORT, + FILE_DEVICE_PHYSICAL_NETCARD, + FILE_DEVICE_PRINTER, + FILE_DEVICE_SCANNER, + FILE_DEVICE_SERIAL_MOUSE_PORT, + FILE_DEVICE_SERIAL_PORT, + FILE_DEVICE_SCREEN, + FILE_DEVICE_SOUND, + FILE_DEVICE_STREAMS, + FILE_DEVICE_TAPE, + FILE_DEVICE_TAPE_FILE_SYSTEM, + FILE_DEVICE_TRANSPORT, + FILE_DEVICE_UNKNOWN, + FILE_DEVICE_VIDEO, + FILE_DEVICE_VIRTUAL_DISK, + FILE_DEVICE_WAVE_IN, + FILE_DEVICE_WAVE_OUT, + FILE_DEVICE_8042_PORT, + FILE_DEVICE_NETWORK_REDIRECTOR, + FILE_DEVICE_BATTERY, + FILE_DEVICE_BUS_EXTENDER, + FILE_DEVICE_MODEM, + FILE_DEVICE_VDM, + FILE_DEVICE_MASS_STORAGE, + FILE_DEVICE_SMB, + FILE_DEVICE_KS, + FILE_DEVICE_CHANGER, + FILE_DEVICE_SMARTCARD, + FILE_DEVICE_ACPI, + FILE_DEVICE_DVD, + FILE_DEVICE_FULLSCREEN_VIDEO, + FILE_DEVICE_DFS_FILE_SYSTEM, + FILE_DEVICE_DFS_VOLUME, + FILE_DEVICE_SERENUM, + FILE_DEVICE_TERMSRV, + FILE_DEVICE_KSEC // = 57 +} + +enum { + METHOD_BUFFERED, + METHOD_IN_DIRECT, + METHOD_OUT_DIRECT, + METHOD_NEITHER +} + +enum { + FILE_ANY_ACCESS, + FILE_SPECIAL_ACCESS = 0, + FILE_READ_ACCESS, + FILE_WRITE_ACCESS +} + +/* Bit pattern: + * tttttttt tttttttt aaffffff ffffffmm + */ +/+ +#define CTL_CODE(t, f, m, a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) ++/ + +template CTL_CODE_T(DEVICE_TYPE t, uint f, uint m, uint a) { + const DWORD CTL_CODE_T = (t << 16) | (a << 14) | (f << 2) | m; +} + +DEVICE_TYPE DEVICE_TYPE_FROM_CTL_CODE(DWORD c) { + return (c & 0xFFFF0000) >> 16; +} + +const DEVICE_TYPE + IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE, + IOCTL_DISK_BASE = FILE_DEVICE_DISK, + IOCTL_VOLUME_BASE = 'V'; + +enum : DWORD { + IOCTL_STORAGE_CHECK_VERIFY = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_CHECK_VERIFY2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_EJECT_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_LOAD_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_LOAD_MEDIA2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_RESERVE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_RELEASE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_EJECTION_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_MCN_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_GET_MEDIA_TYPES_EX = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_RESET_BUS = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_RESET_DEVICE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_GET_DEVICE_NUMBER = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_PREDICT_FAILURE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS), + + IOCTL_DISK_GET_DRIVE_GEOMETRY = CTL_CODE_T!(IOCTL_DISK_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 1, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_GET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 4, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_FORMAT_TRACKS = CTL_CODE_T!(IOCTL_DISK_BASE, 6, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_REASSIGN_BLOCKS = CTL_CODE_T!(IOCTL_DISK_BASE, 7, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_PERFORMANCE = CTL_CODE_T!(IOCTL_DISK_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_IS_WRITABLE = CTL_CODE_T!(IOCTL_DISK_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_LOGGING = CTL_CODE_T!(IOCTL_DISK_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_FORMAT_TRACKS_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 11, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_HISTOGRAM_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_HISTOGRAM_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_HISTOGRAM_RESET = CTL_CODE_T!(IOCTL_DISK_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_REQUEST_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_REQUEST_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 16, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_SET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_SET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x15, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_CREATE_DISK = CTL_CODE_T!(IOCTL_DISK_BASE, 0x16, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_LENGTH_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 0x17, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_PERFORMANCE_OFF = CTL_CODE_T!(IOCTL_DISK_BASE, 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_DRIVE_GEOMETRY_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x28, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GROW_PARTITION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x34, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x35, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x36, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_DELETE_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 0x40, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_UPDATE_PROPERTIES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x50, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_CHECK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 0x200, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_DISK_BASE, 0x201, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_EJECT_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x202, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_LOAD_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x203, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_RESERVE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x204, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_RELEASE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x205, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x206, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_REMOVE_DEVICE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x207, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x300, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_UPDATE_DRIVE_SIZE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_SERIAL_LSRMST_INSERT = CTL_CODE_T!(FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS), + + IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS = CTL_CODE_T!(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_VOLUME_IS_CLUSTERED = CTL_CODE_T!(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), + + FSCTL_LOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_UNLOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_DISMOUNT_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_MOUNT_DBLS_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA|FILE_WRITE_DATA), + FSCTL_READ_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 17, METHOD_NEITHER, FILE_READ_DATA), + FSCTL_WRITE_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 18, METHOD_NEITHER, FILE_WRITE_DATA), + FSCTL_GET_NTFS_VOLUME_DATA = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_VOLUME_BITMAP = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS), + FSCTL_GET_RETRIEVAL_POINTERS = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS), + FSCTL_MOVE_FILE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_DELETE_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_SPARSE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS), +} + +enum : BYTE { + PARTITION_ENTRY_UNUSED, + PARTITION_FAT_12, + PARTITION_XENIX_1, + PARTITION_XENIX_2, + PARTITION_FAT_16, + PARTITION_EXTENDED, + PARTITION_HUGE, + PARTITION_IFS, // = 0x07 + PARTITION_FAT32 = 0x0B, + PARTITION_FAT32_XINT13 = 0x0C, + PARTITION_XINT13 = 0x0E, + PARTITION_XINT13_EXTENDED = 0x0F, + PARTITION_PREP = 0x41, + PARTITION_LDM = 0x42, + PARTITION_UNIX = 0x63 +} + +const BYTE + PARTITION_NTFT = 0x80, + VALID_NTFT = 0xC0; + +enum { + SERIAL_LSRMST_ESCAPE, + SERIAL_LSRMST_LSR_DATA, + SERIAL_LSRMST_LSR_NODATA, + SERIAL_LSRMST_MST +} + +enum { + DISK_LOGGING_START, + DISK_LOGGING_STOP, + DISK_LOGGING_DUMP, + DISK_BINNING +} + +alias WORD BAD_TRACK_NUMBER; +alias WORD* PBAD_TRACK_NUMBER; + +enum BIN_TYPES { + RequestSize, RequestLocation +} + +struct BIN_RANGE { + LARGE_INTEGER StartValue; + LARGE_INTEGER Length; +} +alias BIN_RANGE* PBIN_RANGE; + +struct BIN_COUNT { + BIN_RANGE BinRange; + DWORD BinCount; +} +alias BIN_COUNT* PBIN_COUNT; + +struct BIN_RESULTS { + DWORD NumberOfBins; + BIN_COUNT _BinCounts; + + BIN_COUNT* BinCounts() { return &_BinCounts; } +} +alias BIN_RESULTS* PBIN_RESULTS; + +enum PARTITION_STYLE { + PARTITION_STYLE_MBR, + PARTITION_STYLE_GPT, + PARTITION_STYLE_RAW +} + +struct CREATE_DISK_GPT { + GUID DiskId; + DWORD MaxPartitionCount; +} +alias CREATE_DISK_GPT* PCREATE_DISK_GPT; + +struct CREATE_DISK_MBR { + DWORD Signature; +} +alias CREATE_DISK_MBR* PCREATE_DISK_MBR; + +struct CREATE_DISK { + PARTITION_STYLE PartitionStyle; + union { + CREATE_DISK_MBR Mbr; + CREATE_DISK_GPT Gpt; + } +} +alias CREATE_DISK* PCREATE_DISK; + +enum DISK_CACHE_RETENTION_PRIORITY { + EqualPriority, + KeepPrefetchedData, + KeepReadData +} + +struct DISK_CACHE_INFORMATION { + BOOLEAN ParametersSavable; + BOOLEAN ReadCacheEnabled; + BOOLEAN WriteCacheEnabled; + DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; + DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; + WORD DisablePrefetchTransferLength; + BOOLEAN PrefetchScalar; + union { + struct _ScalarPrefetch { + WORD Minimum; + WORD Maximum; + WORD MaximumBlocks; + } + _ScalarPrefetch ScalarPrefetch; + struct _BlockPrefetch { + WORD Minimum; + WORD Maximum; + } + _BlockPrefetch BlockPrefetch; + } +} +alias DISK_CACHE_INFORMATION* PDISK_CACHE_INFORMATION; + +enum DETECTION_TYPE { + DetectNone, + DetectInt13, + DetectExInt13 +} + +struct DISK_INT13_INFO { + WORD DriveSelect; + DWORD MaxCylinders; + WORD SectorsPerTrack; + WORD MaxHeads; + WORD NumberDrives; + } +alias DISK_INT13_INFO* PDISK_INT13_INFO; + +struct DISK_EX_INT13_INFO { + WORD ExBufferSize; + WORD ExFlags; + DWORD ExCylinders; + DWORD ExHeads; + DWORD ExSectorsPerTrack; + DWORD64 ExSectorsPerDrive; + WORD ExSectorSize; + WORD ExReserved; +} +alias DISK_EX_INT13_INFO* PDISK_EX_INT13_INFO; + +struct DISK_DETECTION_INFO { + DWORD SizeOfDetectInfo; + DETECTION_TYPE DetectionType; + DISK_INT13_INFO Int13; + DISK_EX_INT13_INFO ExInt13; +} +alias DISK_DETECTION_INFO* PDISK_DETECTION_INFO; + +enum MEDIA_TYPE { + Unknown, + F5_1Pt2_512, + F3_1Pt44_512, + F3_2Pt88_512, + F3_20Pt8_512, + F3_720_512, + F5_360_512, + F5_320_512, + F5_320_1024, + F5_180_512, + F5_160_512, + RemovableMedia, + FixedMedia, + F3_120M_512, + F3_640_512, + F5_640_512, + F5_720_512, + F3_1Pt2_512, + F3_1Pt23_1024, + F5_1Pt23_1024, + F3_128Mb_512, + F3_230Mb_512, + F8_256_128, + F3_200Mb_512, + F3_240M_512, + F3_32M_512 +} +alias MEDIA_TYPE* PMEDIA_TYPE; + +struct DISK_GEOMETRY { + LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; + DWORD TracksPerCylinder; + DWORD SectorsPerTrack; + DWORD BytesPerSector; +} +alias DISK_GEOMETRY* PDISK_GEOMETRY; + +struct DISK_GEOMETRY_EX { + DISK_GEOMETRY Geometry; + LARGE_INTEGER DiskSize; + BYTE _Data; + + BYTE* Data() { return &_Data; } +} +alias DISK_GEOMETRY_EX* PDISK_GEOMETRY_EX; + +struct DISK_GROW_PARTITION { + DWORD PartitionNumber; + LARGE_INTEGER BytesToGrow; +} +alias DISK_GROW_PARTITION* PDISK_GROW_PARTITION; + +struct DISK_PARTITION_INFO { + DWORD SizeOfPartitionInfo; + PARTITION_STYLE PartitionStyle; + union { + //struct { + DWORD Signature; + //} Mbr; + //struct { + GUID DiskId; + //} Gpt; + } +} +alias DISK_PARTITION_INFO* PDISK_PARTITION_INFO; + +struct DISK_PERFORMANCE { + LARGE_INTEGER BytesRead; + LARGE_INTEGER BytesWritten; + LARGE_INTEGER ReadTime; + LARGE_INTEGER WriteTime; + DWORD ReadCount; + DWORD WriteCount; + DWORD QueueDepth; +} +alias DISK_PERFORMANCE* PDISK_PERFORMANCE; + +struct DISK_RECORD { + LARGE_INTEGER ByteOffset; + LARGE_INTEGER StartTime; + LARGE_INTEGER EndTime; + PVOID VirtualAddress; + DWORD NumberOfBytes; + BYTE DeviceNumber; + BOOLEAN ReadRequest; +} +alias DISK_RECORD* PDISK_RECORD; + +struct DISK_LOGGING { + BYTE Function; + PVOID BufferAddress; + DWORD BufferSize; +} +alias DISK_LOGGING* PDISK_LOGGING; + +struct DISKQUOTA_USER_INFORMATION { + LONGLONG QuotaUsed; + LONGLONG QuotaThreshold; + LONGLONG QuotaLimit; +} +alias DISKQUOTA_USER_INFORMATION* PDISKQUOTA_USER_INFORMATION; + +struct FORMAT_PARAMETERS { + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; +} +alias FORMAT_PARAMETERS* PFORMAT_PARAMETERS; + +struct FORMAT_EX_PARAMETERS { + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; + WORD FormatGapLength; + WORD SectorsPerTrack; + WORD _SectorNumber; + + WORD* SectorNumber() { return &_SectorNumber; } +} +alias FORMAT_EX_PARAMETERS* PFORMAT_EX_PARAMETERS; + +struct GET_LENGTH_INFORMATION { + LARGE_INTEGER Length; +} + +struct HISTOGRAM_BUCKET { + DWORD Reads; + DWORD Writes; +} +alias HISTOGRAM_BUCKET* PHISTOGRAM_BUCKET; + +struct DISK_HISTOGRAM { + LARGE_INTEGER DiskSize; + LARGE_INTEGER Start; + LARGE_INTEGER End; + LARGE_INTEGER Average; + LARGE_INTEGER AverageRead; + LARGE_INTEGER AverageWrite; + DWORD Granularity; + DWORD Size; + DWORD ReadCount; + DWORD WriteCount; + PHISTOGRAM_BUCKET Histogram; +} +alias DISK_HISTOGRAM* PDISK_HISTOGRAM; + +struct DISK_EXTENT { + DWORD DiskNumber; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER ExtentLength; +} +alias DISK_EXTENT* PDISK_EXTENT; + +struct VOLUME_DISK_EXTENTS { + DWORD NumberOfDiskExtents; + DISK_EXTENT _Extents; + + DISK_EXTENT* Extents() { return &_Extents; } +} +alias VOLUME_DISK_EXTENTS* PVOLUME_DISK_EXTENTS; + +struct PARTITION_INFORMATION { + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD HiddenSectors; + DWORD PartitionNumber; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + BOOLEAN RewritePartition; +} +alias PARTITION_INFORMATION* PPARTITION_INFORMATION; + +struct DRIVE_LAYOUT_INFORMATION { + DWORD PartitionCount; + DWORD Signature; + PARTITION_INFORMATION _PartitionEntry; + + PARTITION_INFORMATION* PartitionEntry() { return &_PartitionEntry; } +} +alias DRIVE_LAYOUT_INFORMATION* PDRIVE_LAYOUT_INFORMATION; + +struct DRIVE_LAYOUT_INFORMATION_GPT { + GUID DiskId; + LARGE_INTEGER StartingUsableOffset; + LARGE_INTEGER UsableLength; + ULONG MaxPartitionCount; +} +alias DRIVE_LAYOUT_INFORMATION_GPT* PDRIVE_LAYOUT_INFORMATION_GPT; + +struct DRIVE_LAYOUT_INFORMATION_MBR { + ULONG Signature; +} +alias DRIVE_LAYOUT_INFORMATION_MBR* PDRIVE_LAYOUT_INFORMATION_MBR; + +struct PARTITION_INFORMATION_MBR { + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + DWORD HiddenSectors; +} + +struct PARTITION_INFORMATION_GPT { + GUID PartitionType; + GUID PartitionId; + DWORD64 Attributes; + WCHAR[36] Name; +} + +struct PARTITION_INFORMATION_EX { + PARTITION_STYLE PartitionStyle; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD PartitionNumber; + BOOLEAN RewritePartition; + union { + PARTITION_INFORMATION_MBR Mbr; + PARTITION_INFORMATION_GPT Gpt; + } +} + +struct DRIVE_LAYOUT_INFORMATION_EX { + DWORD PartitionStyle; + DWORD PartitionCount; + union { + DRIVE_LAYOUT_INFORMATION_MBR Mbr; + DRIVE_LAYOUT_INFORMATION_GPT Gpt; + } + PARTITION_INFORMATION_EX _PartitionEntry; + + PARTITION_INFORMATION_EX* PartitionEntry() { return &_PartitionEntry; } +} +alias DRIVE_LAYOUT_INFORMATION_EX* PDRIVE_LAYOUT_INFORMATION_EX; + +struct MOVE_FILE_DATA { + HANDLE FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + DWORD ClusterCount; +} +alias MOVE_FILE_DATA* PMOVE_FILE_DATA; + +struct PERF_BIN { + DWORD NumberOfBins; + DWORD TypeOfBin; + BIN_RANGE _BinsRanges; + + BIN_RANGE* BinsRanges() { return &_BinsRanges; } +} +alias PERF_BIN* PPERF_BIN; + +struct PREVENT_MEDIA_REMOVAL { + BOOLEAN PreventMediaRemoval; +} +alias PREVENT_MEDIA_REMOVAL* PPREVENT_MEDIA_REMOVAL; + +struct RETRIEVAL_POINTERS_BUFFER { + DWORD ExtentCount; + LARGE_INTEGER StartingVcn; + // In MinGW, this is declared as struct { ... } Extents[1]; + struct Extent { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } + Extent _Extents; + + Extent* Extents() { return &_Extents; } +} +alias RETRIEVAL_POINTERS_BUFFER* PRETRIEVAL_POINTERS_BUFFER; + +struct REASSIGN_BLOCKS { + WORD Reserved; + WORD Count; + DWORD _BlockNumber; + + DWORD* BlockNumber() { return &_BlockNumber; } +} +alias REASSIGN_BLOCKS* PREASSIGN_BLOCKS; + +struct SET_PARTITION_INFORMATION { + BYTE PartitionType; +} +alias SET_PARTITION_INFORMATION* PSET_PARTITION_INFORMATION; + +struct STARTING_LCN_INPUT_BUFFER { + LARGE_INTEGER StartingLcn; +} +alias STARTING_LCN_INPUT_BUFFER* PSTARTING_LCN_INPUT_BUFFER; + +struct STARTING_VCN_INPUT_BUFFER { + LARGE_INTEGER StartingVcn; +} +alias STARTING_VCN_INPUT_BUFFER* PSTARTING_VCN_INPUT_BUFFER; + +struct VERIFY_INFORMATION { + LARGE_INTEGER StartingOffset; + DWORD Length; +} +alias VERIFY_INFORMATION* PVERIFY_INFORMATION; + +struct VOLUME_BITMAP_BUFFER { + LARGE_INTEGER StartingLcn; + LARGE_INTEGER BitmapSize; + BYTE _Buffer; + + BYTE* Buffer() { return &_Buffer; } +} +alias VOLUME_BITMAP_BUFFER* PVOLUME_BITMAP_BUFFER; + +struct NTFS_VOLUME_DATA_BUFFER { + LARGE_INTEGER VolumeSerialNumber; + LARGE_INTEGER NumberSectors; + LARGE_INTEGER TotalClusters; + LARGE_INTEGER FreeClusters; + LARGE_INTEGER TotalReserved; + DWORD BytesPerSector; + DWORD BytesPerCluster; + DWORD BytesPerFileRecordSegment; + DWORD ClustersPerFileRecordSegment; + LARGE_INTEGER MftValidDataLength; + LARGE_INTEGER MftStartLcn; + LARGE_INTEGER Mft2StartLcn; + LARGE_INTEGER MftZoneStart; + LARGE_INTEGER MftZoneEnd; +} +alias NTFS_VOLUME_DATA_BUFFER* PNTFS_VOLUME_DATA_BUFFER; + + +bool IsRecognizedPartition(BYTE t) { + return ((t & PARTITION_NTFT) + && ((t & ~VALID_NTFT) == PARTITION_FAT_12 + || (t & ~VALID_NTFT) == PARTITION_FAT_16 + || (t & ~VALID_NTFT) == PARTITION_IFS + || (t & ~VALID_NTFT) == PARTITION_HUGE + || (t & ~VALID_NTFT) == PARTITION_FAT32 + || (t & ~VALID_NTFT) == PARTITION_FAT32_XINT13 + || (t & ~VALID_NTFT) == PARTITION_XINT13)) + || (t & ~PARTITION_NTFT) == PARTITION_FAT_12 + || (t & ~PARTITION_NTFT) == PARTITION_FAT_16 + || (t & ~PARTITION_NTFT) == PARTITION_IFS + || (t & ~PARTITION_NTFT) == PARTITION_HUGE + || (t & ~PARTITION_NTFT) == PARTITION_FAT32 + || (t & ~PARTITION_NTFT) == PARTITION_FAT32_XINT13 + || (t & ~PARTITION_NTFT) == PARTITION_XINT13; +} + +bool IsContainerPartition(BYTE t) { + return ((t & PARTITION_NTFT) + && ((t & ~VALID_NTFT) == PARTITION_EXTENDED + || (t & ~VALID_NTFT) == PARTITION_XINT13_EXTENDED)) + || (t & ~PARTITION_NTFT) == PARTITION_EXTENDED + || (t & ~PARTITION_NTFT) == PARTITION_XINT13_EXTENDED; +} diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index b85757da6d..79b96d7773 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -1,853 +1,853 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winldap.d) - */ -module core.sys.windows.winldap; - -/* Comment from MinGW - winldap.h - Header file for the Windows LDAP API - - Written by Filip Navara - - References: - The C LDAP Application Program Interface - http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt - - Lightweight Directory Access Protocol Reference - http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -*/ - -import core.sys.windows.schannel, core.sys.windows.winber; -private import core.sys.windows.wincrypt, core.sys.windows.windef; -version(Tango){ - private import tango.stdc.stdio; -} - -align(4): - -enum { - LDAP_VERSION1 = 1, - LDAP_VERSION2 = 2, - LDAP_VERSION3 = 3, - LDAP_VERSION = LDAP_VERSION2, - LDAP_VERSION_MIN = LDAP_VERSION2, - LDAP_VERSION_MAX = LDAP_VERSION3 -} - -/* MinGW defines ANSI and Unicode versions as LDAP_VENDOR_NAME and - * LDAP_VENDOR_NAME_W respectively; similarly with other string constants - * defined in this module. - */ -const TCHAR[] LDAP_VENDOR_NAME = "Microsoft Corporation."; - -const LDAP_API_VERSION = 2004; -const LDAP_VENDOR_VERSION = 510; -const LDAP_API_INFO_VERSION = 1; -const LDAP_FEATURE_INFO_VERSION = 1; - -enum { - LDAP_SUCCESS = 0x00, - LDAP_OPT_SUCCESS = LDAP_SUCCESS, - LDAP_OPERATIONS_ERROR, - LDAP_PROTOCOL_ERROR, - LDAP_TIMELIMIT_EXCEEDED, - LDAP_SIZELIMIT_EXCEEDED, - LDAP_COMPARE_FALSE, - LDAP_COMPARE_TRUE, - LDAP_STRONG_AUTH_NOT_SUPPORTED, - LDAP_AUTH_METHOD_NOT_SUPPORTED = LDAP_STRONG_AUTH_NOT_SUPPORTED, - LDAP_STRONG_AUTH_REQUIRED, - LDAP_REFERRAL_V2, - LDAP_PARTIAL_RESULTS = LDAP_REFERRAL_V2, - LDAP_REFERRAL, - LDAP_ADMIN_LIMIT_EXCEEDED, - LDAP_UNAVAILABLE_CRIT_EXTENSION, - LDAP_CONFIDENTIALITY_REQUIRED, - LDAP_SASL_BIND_IN_PROGRESS, // = 0x0e - LDAP_NO_SUCH_ATTRIBUTE = 0x10, - LDAP_UNDEFINED_TYPE, - LDAP_INAPPROPRIATE_MATCHING, - LDAP_CONSTRAINT_VIOLATION, - LDAP_TYPE_OR_VALUE_EXISTS, - LDAP_ATTRIBUTE_OR_VALUE_EXISTS = LDAP_TYPE_OR_VALUE_EXISTS, - LDAP_INVALID_SYNTAX, // = 0x15 - LDAP_NO_SUCH_OBJECT = 0x20, - LDAP_ALIAS_PROBLEM, - LDAP_INVALID_DN_SYNTAX, - LDAP_IS_LEAF, - LDAP_ALIAS_DEREF_PROBLEM, // = 0x24 - LDAP_INAPPROPRIATE_AUTH = 0x30, - LDAP_INVALID_CREDENTIALS, - LDAP_INSUFFICIENT_ACCESS, - LDAP_INSUFFICIENT_RIGHTS = LDAP_INSUFFICIENT_ACCESS, - LDAP_BUSY, - LDAP_UNAVAILABLE, - LDAP_UNWILLING_TO_PERFORM, - LDAP_LOOP_DETECT, // = 0x36 - LDAP_NAMING_VIOLATION = 0x40, - LDAP_OBJECT_CLASS_VIOLATION, - LDAP_NOT_ALLOWED_ON_NONLEAF, - LDAP_NOT_ALLOWED_ON_RDN, - LDAP_ALREADY_EXISTS, - LDAP_NO_OBJECT_CLASS_MODS, - LDAP_RESULTS_TOO_LARGE, - LDAP_AFFECTS_MULTIPLE_DSAS, // = 0x47 - LDAP_OTHER = 0x50, - LDAP_SERVER_DOWN, - LDAP_LOCAL_ERROR, - LDAP_ENCODING_ERROR, - LDAP_DECODING_ERROR, - LDAP_TIMEOUT, - LDAP_AUTH_UNKNOWN, - LDAP_FILTER_ERROR, - LDAP_USER_CANCELLED, - LDAP_PARAM_ERROR, - LDAP_NO_MEMORY, - LDAP_CONNECT_ERROR, - LDAP_NOT_SUPPORTED, - LDAP_CONTROL_NOT_FOUND, - LDAP_NO_RESULTS_RETURNED, - LDAP_MORE_RESULTS_TO_RETURN, - LDAP_CLIENT_LOOP, - LDAP_REFERRAL_LIMIT_EXCEEDED // = 0x61 -} - -enum { - LDAP_PORT = 389, - LDAP_SSL_PORT = 636, - LDAP_GC_PORT = 3268, - LDAP_SSL_GC_PORT = 3269 -} - -const void* - LDAP_OPT_OFF = null, - LDAP_OPT_ON = cast(void*) 1; - -enum { - LDAP_OPT_API_INFO = 0x00, - LDAP_OPT_DESC, - LDAP_OPT_DEREF, - LDAP_OPT_SIZELIMIT, - LDAP_OPT_TIMELIMIT, - LDAP_OPT_THREAD_FN_PTRS, - LDAP_OPT_REBIND_FN, - LDAP_OPT_REBIND_ARG, - LDAP_OPT_REFERRALS, - LDAP_OPT_RESTART, - LDAP_OPT_SSL, - LDAP_OPT_TLS = LDAP_OPT_SSL, - LDAP_OPT_IO_FN_PTRS, // = 0x0b - LDAP_OPT_CACHE_FN_PTRS = 0x0d, - LDAP_OPT_CACHE_STRATEGY, - LDAP_OPT_CACHE_ENABLE, - LDAP_OPT_REFERRAL_HOP_LIMIT, - LDAP_OPT_PROTOCOL_VERSION, - LDAP_OPT_VERSION = LDAP_OPT_PROTOCOL_VERSION, - LDAP_OPT_SERVER_CONTROLS, - LDAP_OPT_CLIENT_CONTROLS, // = 0x13 - LDAP_OPT_API_FEATURE_INFO = 0x15, - LDAP_OPT_HOST_NAME = 0x30, - LDAP_OPT_ERROR_NUMBER, - LDAP_OPT_ERROR_STRING, - LDAP_OPT_SERVER_ERROR, - LDAP_OPT_SERVER_EXT_ERROR, // = 0x34 - LDAP_OPT_PING_KEEP_ALIVE = 0x36, - LDAP_OPT_PING_WAIT_TIME, - LDAP_OPT_PING_LIMIT, // = 0x38 - LDAP_OPT_DNSDOMAIN_NAME = 0x3b, - LDAP_OPT_GETDSNAME_FLAGS = 0x3d, - LDAP_OPT_HOST_REACHABLE, - LDAP_OPT_PROMPT_CREDENTIALS, - LDAP_OPT_TCP_KEEPALIVE, // = 0x40 - LDAP_OPT_REFERRAL_CALLBACK = 0x70, - LDAP_OPT_CLIENT_CERTIFICATE = 0x80, - LDAP_OPT_SERVER_CERTIFICATE, // = 0x81 - LDAP_OPT_AUTO_RECONNECT = 0x91, - LDAP_OPT_SSPI_FLAGS, - LDAP_OPT_SSL_INFO, - LDAP_OPT_TLS_INFO = LDAP_OPT_SSL_INFO, - LDAP_OPT_REF_DEREF_CONN_PER_MSG, - LDAP_OPT_SIGN, - LDAP_OPT_ENCRYPT, - LDAP_OPT_SASL_METHOD, - LDAP_OPT_AREC_EXCLUSIVE, - LDAP_OPT_SECURITY_CONTEXT, - LDAP_OPT_ROOTDSE_CACHE // = 0x9a -} - -enum { - LDAP_DEREF_NEVER, - LDAP_DEREF_SEARCHING, - LDAP_DEREF_FINDING, - LDAP_DEREF_ALWAYS -} - -const LDAP_NO_LIMIT = 0; - -const TCHAR[] LDAP_CONTROL_REFERRALS = "1.2.840.113556.1.4.616"; - -// FIXME: check type (declared with U suffix in MinGW) -enum : uint { - LDAP_CHASE_SUBORDINATE_REFERRALS = 0x20, - LDAP_CHASE_EXTERNAL_REFERRALS = 0x40 -} - -enum { - LDAP_SCOPE_DEFAULT = -1, - LDAP_SCOPE_BASE, - LDAP_SCOPE_ONELEVEL, - LDAP_SCOPE_SUBTREE -} - -enum { - LDAP_MOD_ADD, - LDAP_MOD_DELETE, - LDAP_MOD_REPLACE, - LDAP_MOD_BVALUES = 0x80 -} - -enum : int { - LDAP_RES_BIND = 0x61, - LDAP_RES_SEARCH_ENTRY = 0x64, - LDAP_RES_SEARCH_RESULT = 0x65, - LDAP_RES_MODIFY = 0x67, - LDAP_RES_ADD = 0x69, - LDAP_RES_DELETE = 0x6b, - LDAP_RES_MODRDN = 0x6d, - LDAP_RES_COMPARE = 0x6f, - LDAP_RES_SEARCH_REFERENCE = 0x73, - LDAP_RES_EXTENDED = 0x78, - LDAP_RES_ANY = -1 -} - -enum { - LDAP_MSG_ONE, - LDAP_MSG_ALL, - LDAP_MSG_RECEIVED -} - -const TCHAR[] - LDAP_SERVER_SORT_OID = "1.2.840.113556.1.4.473", - LDAP_SERVER_RESP_SORT_OID = "1.2.840.113556.1.4.474", - LDAP_PAGED_RESULT_OID_STRING = "1.2.840.113556.1.4.319", - LDAP_CONTROL_VLVREQUEST = "2.16.840.1.113730.3.4.9", - LDAP_CONTROL_VLVRESPONSE = "2.16.840.1.113730.3.4.10", - LDAP_START_TLS_OID = "1.3.6.1.4.1.1466.20037", - LDAP_TTL_EXTENDED_OP_OID = "1.3.6.1.4.1.1466.101.119.1"; - -enum { - LDAP_AUTH_NONE = 0x00U, - LDAP_AUTH_SIMPLE = 0x80U, - LDAP_AUTH_SASL = 0x83U, - LDAP_AUTH_OTHERKIND = 0x86U, - LDAP_AUTH_EXTERNAL = LDAP_AUTH_OTHERKIND | 0x0020U, - LDAP_AUTH_SICILY = LDAP_AUTH_OTHERKIND | 0x0200U, - LDAP_AUTH_NEGOTIATE = LDAP_AUTH_OTHERKIND | 0x0400U, - LDAP_AUTH_MSN = LDAP_AUTH_OTHERKIND | 0x0800U, - LDAP_AUTH_NTLM = LDAP_AUTH_OTHERKIND | 0x1000U, - LDAP_AUTH_DIGEST = LDAP_AUTH_OTHERKIND | 0x4000U, - LDAP_AUTH_DPA = LDAP_AUTH_OTHERKIND | 0x2000U, - LDAP_AUTH_SSPI = LDAP_AUTH_NEGOTIATE -} - -enum { - LDAP_FILTER_AND = 0xa0, - LDAP_FILTER_OR, - LDAP_FILTER_NOT, - LDAP_FILTER_EQUALITY, - LDAP_FILTER_SUBSTRINGS, - LDAP_FILTER_GE, - LDAP_FILTER_LE, // = 0xa6 - LDAP_FILTER_APPROX = 0xa8, - LDAP_FILTER_EXTENSIBLE, - LDAP_FILTER_PRESENT = 0x87 -} - -enum { - LDAP_SUBSTRING_INITIAL = 0x80, - LDAP_SUBSTRING_ANY, - LDAP_SUBSTRING_FINAL -} - -struct LDAP { - char[76] Reserved; - PCHAR ld_host; - ULONG ld_version; - UCHAR ld_lberoptions; - int ld_deref; - int ld_timelimit; - int ld_sizelimit; - int ld_errno; - PCHAR ld_matched; - PCHAR ld_error; -} -alias LDAP* PLDAP; - -struct LDAPMessage { - ULONG lm_msgid; - ULONG lm_msgtype; - BerElement* lm_ber; - LDAPMessage* lm_chain; - LDAPMessage* lm_next; - ULONG lm_time; -} -alias LDAPMessage* PLDAPMessage; - -struct LDAP_TIMEVAL { - LONG tv_sec; - LONG tv_usec; -} -alias LDAP_TIMEVAL* PLDAP_TIMEVAL; - -struct LDAPAPIInfoA { - int ldapai_info_version; - int ldapai_api_version; - int ldapai_protocol_version; - char** ldapai_extensions; - char* ldapai_vendor_name; - int ldapai_vendor_version; -} -alias LDAPAPIInfoA* PLDAPAPIInfoA; - -struct LDAPAPIInfoW { - int ldapai_info_version; - int ldapai_api_version; - int ldapai_protocol_version; - PWCHAR* ldapai_extensions; - PWCHAR ldapai_vendor_name; - int ldapai_vendor_version; -} -alias LDAPAPIInfoW* PLDAPAPIInfoW; - -struct LDAPAPIFeatureInfoA { - int ldapaif_info_version; - char* ldapaif_name; - int ldapaif_version; -} -alias LDAPAPIFeatureInfoA* PLDAPAPIFeatureInfoA; - -struct LDAPAPIFeatureInfoW { - int ldapaif_info_version; - PWCHAR ldapaif_name; - int ldapaif_version; -} -alias LDAPAPIFeatureInfoW* PLDAPAPIFeatureInfoW; - -struct LDAPControlA { - PCHAR ldctl_oid; - BerValue ldctl_value; - BOOLEAN ldctl_iscritical; -} -alias LDAPControlA* PLDAPControlA; - -struct LDAPControlW { - PWCHAR ldctl_oid; - BerValue ldctl_value; - BOOLEAN ldctl_iscritical; -} -alias LDAPControlW* PLDAPControlW; - -/* Do we really need these? In MinGW, LDAPModA/W have only mod_op, mod_type - * and mod_vals, and macros are used to simulate anonymous unions in those - * structures. - */ -union mod_vals_u_tA { - PCHAR* modv_strvals; - BerValue** modv_bvals; -} - -union mod_vals_u_tW { - PWCHAR* modv_strvals; - BerValue** modv_bvals; -} - -struct LDAPModA { - ULONG mod_op; - PCHAR mod_type; - - union { - mod_vals_u_tA mod_vals; - // The following members are defined as macros in MinGW. - PCHAR* mod_values; - BerValue** mod_bvalues; - } -} -alias LDAPModA* PLDAPModA; - -struct LDAPModW { - ULONG mod_op; - PWCHAR mod_type; - - union { - mod_vals_u_tW mod_vals; - // The following members are defined as macros in MinGW. - PWCHAR* mod_values; - BerValue** mod_bvalues; - } -} -alias LDAPModW* PLDAPModW; - -/* Opaque structure - * http://msdn.microsoft.com/library/en-us/ldap/ldap/ldapsearch.asp - */ -struct LDAPSearch; -alias LDAPSearch* PLDAPSearch; - -struct LDAPSortKeyA { - PCHAR sk_attrtype; - PCHAR sk_matchruleoid; - BOOLEAN sk_reverseorder; -} -alias LDAPSortKeyA* PLDAPSortKeyA; - -struct LDAPSortKeyW { - PWCHAR sk_attrtype; - PWCHAR sk_matchruleoid; - BOOLEAN sk_reverseorder; -} -alias LDAPSortKeyW* PLDAPSortKeyW; - -/* MinGW defines these as immediate function typedefs, which don't translate - * well into D. - */ -extern (C) { - alias ULONG function(PLDAP, PLDAP, PWCHAR, PCHAR, ULONG, PVOID, PVOID, - PLDAP*) QUERYFORCONNECTION; - alias BOOLEAN function(PLDAP, PLDAP, PWCHAR, PCHAR, PLDAP, ULONG, PVOID, - PVOID, ULONG) NOTIFYOFNEWCONNECTION; - alias ULONG function(PLDAP, PLDAP) DEREFERENCECONNECTION; - alias BOOLEAN function(PLDAP, PSecPkgContext_IssuerListInfoEx, - PCCERT_CONTEXT*) QUERYCLIENTCERT; -} - -struct LDAP_REFERRAL_CALLBACK { - ULONG SizeOfCallbacks; - QUERYFORCONNECTION* QueryForConnection; - NOTIFYOFNEWCONNECTION* NotifyRoutine; - DEREFERENCECONNECTION* DereferenceRoutine; -} -alias LDAP_REFERRAL_CALLBACK* PLDAP_REFERRAL_CALLBACK; - -struct LDAPVLVInfo { - int ldvlv_version; - uint ldvlv_before_count; - uint ldvlv_after_count; - uint ldvlv_offset; - uint ldvlv_count; - BerValue* ldvlv_attrvalue; - BerValue* ldvlv_context; - void* ldvlv_extradata; -} - -/* - * Under Microsoft WinLDAP the function ldap_error is only stub. - * This macro uses LDAP structure to get error string and pass it to the user. - */ -private extern (C) int printf(in char* format, ...); -int ldap_perror(LDAP* handle, char* message) { - return printf("%s: %s\n", message, handle.ld_error); -} - -/* FIXME: In MinGW, these are WINLDAPAPI == DECLSPEC_IMPORT. Linkage - * attribute? - */ -extern (C) { - PLDAP ldap_initA(PCHAR, ULONG); - PLDAP ldap_initW(PWCHAR, ULONG); - PLDAP ldap_openA(PCHAR, ULONG); - PLDAP ldap_openW(PWCHAR, ULONG); - PLDAP cldap_openA(PCHAR, ULONG); - PLDAP cldap_openW(PWCHAR, ULONG); - ULONG ldap_connect(LDAP*, LDAP_TIMEVAL*); - PLDAP ldap_sslinitA(PCHAR, ULONG, int); - PLDAP ldap_sslinitW(PWCHAR, ULONG, int); - ULONG ldap_start_tls_sA(LDAP*, PLDAPControlA*, PLDAPControlA*); - ULONG ldap_start_tls_sW(LDAP*, PLDAPControlW*, PLDAPControlW*); - BOOLEAN ldap_stop_tls_s(LDAP*); - ULONG ldap_get_optionA(LDAP*, int, void*); - ULONG ldap_get_optionW(LDAP*, int, void*); - ULONG ldap_set_optionA(LDAP*, int, void*); - ULONG ldap_set_optionW(LDAP*, int, void*); - ULONG ldap_control_freeA(LDAPControlA*); - ULONG ldap_control_freeW(LDAPControlW*); - ULONG ldap_controls_freeA(LDAPControlA**); - ULONG ldap_controls_freeW(LDAPControlW**); - ULONG ldap_free_controlsA(LDAPControlA**); - ULONG ldap_free_controlsW(LDAPControlW**); - ULONG ldap_sasl_bindA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, - PLDAPControlA*, int*); - ULONG ldap_sasl_bindW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, - PLDAPControlW*, int*); - ULONG ldap_sasl_bind_sA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, - PLDAPControlA*, PBERVAL*); - ULONG ldap_sasl_bind_sW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, - PLDAPControlW*, PBERVAL*); - ULONG ldap_simple_bindA(LDAP*, PCHAR, PCHAR); - ULONG ldap_simple_bindW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_simple_bind_sA(LDAP*, PCHAR, PCHAR); - ULONG ldap_simple_bind_sW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_unbind(LDAP*); - ULONG ldap_unbind_s(LDAP*); - ULONG ldap_search_extA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); - ULONG ldap_search_extW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); - ULONG ldap_search_ext_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - PLDAPControlA*, PLDAPControlA*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); - ULONG ldap_search_ext_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - PLDAPControlW*, PLDAPControlW*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); - ULONG ldap_searchA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG); - ULONG ldap_searchW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG); - ULONG ldap_search_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - LDAPMessage**); - ULONG ldap_search_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - LDAPMessage**); - ULONG ldap_search_stA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - LDAP_TIMEVAL*, LDAPMessage**); - ULONG ldap_search_stW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - LDAP_TIMEVAL*, LDAPMessage**); - ULONG ldap_compare_extA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, - PLDAPControlA*, PLDAPControlA*, ULONG*); - ULONG ldap_compare_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, - PLDAPControlW*, PLDAPControlW*, ULONG*); - ULONG ldap_compare_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, - PLDAPControlA*, PLDAPControlA*); - ULONG ldap_compare_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, - PLDAPControlW*, PLDAPControlW*); - ULONG ldap_compareA(LDAP*, PCHAR, PCHAR, PCHAR); - ULONG ldap_compareW(LDAP*, PWCHAR, PWCHAR, PWCHAR); - ULONG ldap_compare_sA(LDAP*, PCHAR, PCHAR, PCHAR); - ULONG ldap_compare_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR); - ULONG ldap_modify_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_modify_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_modify_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*); - ULONG ldap_modify_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*); - ULONG ldap_modifyA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_modifyW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_modify_sA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_modify_sW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_rename_extA(LDAP*, PCHAR, PCHAR, PCHAR, INT, PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_rename_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_rename_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, INT, - PLDAPControlA*, PLDAPControlA*); - ULONG ldap_rename_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, - PLDAPControlW*, PLDAPControlW*); - ULONG ldap_add_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_add_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_add_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*); - ULONG ldap_add_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*); - ULONG ldap_addA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_addW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_add_sA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_add_sW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_delete_extA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*, - ULONG*); - ULONG ldap_delete_extW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*, - ULONG*); - ULONG ldap_delete_ext_sA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*); - ULONG ldap_delete_ext_sW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*); - ULONG ldap_deleteA(LDAP*, PCHAR); - ULONG ldap_deleteW(LDAP*, PWCHAR); - ULONG ldap_delete_sA(LDAP*, PCHAR); - ULONG ldap_delete_sW(LDAP*, PWCHAR); - ULONG ldap_extended_operationA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_extended_operationW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_extended_operation_sA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, - PLDAPControlA*, PCHAR*, BerValue**); - ULONG ldap_extended_operation_sW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, - PLDAPControlW*, PWCHAR*, BerValue**); - ULONG ldap_close_extended_op(LDAP*, ULONG); - ULONG ldap_abandon(LDAP*, ULONG); - ULONG ldap_result(LDAP*, ULONG, ULONG, LDAP_TIMEVAL*, LDAPMessage**); - ULONG ldap_msgfree(LDAPMessage*); - ULONG ldap_parse_resultA(LDAP*, LDAPMessage*, ULONG*, PCHAR*, PCHAR*, - PCHAR**, PLDAPControlA**, BOOLEAN); - ULONG ldap_parse_resultW(LDAP*, LDAPMessage*, ULONG*, PWCHAR*, PWCHAR*, - PWCHAR**, PLDAPControlW**, BOOLEAN); - ULONG ldap_parse_extended_resultA(LDAP, LDAPMessage*, PCHAR*, BerValue**, - BOOLEAN); - ULONG ldap_parse_extended_resultW(LDAP, LDAPMessage*, PWCHAR*, BerValue**, - BOOLEAN); - PCHAR ldap_err2stringA(ULONG); - PWCHAR ldap_err2stringW(ULONG); - ULONG LdapGetLastError(); - ULONG LdapMapErrorToWin32(ULONG); - ULONG ldap_result2error(LDAP*, LDAPMessage*, ULONG); - PLDAPMessage ldap_first_entry(LDAP*, LDAPMessage*); - PLDAPMessage ldap_next_entry(LDAP*, LDAPMessage*); - PLDAPMessage ldap_first_reference(LDAP*, LDAPMessage*); - PLDAPMessage ldap_next_reference(LDAP*, LDAPMessage*); - ULONG ldap_count_entries(LDAP*, LDAPMessage*); - ULONG ldap_count_references(LDAP*, LDAPMessage*); - PCHAR ldap_first_attributeA(LDAP*, LDAPMessage*, BerElement**); - PWCHAR ldap_first_attributeW(LDAP*, LDAPMessage*, BerElement**); - PCHAR ldap_next_attributeA(LDAP*, LDAPMessage*, BerElement*); - PWCHAR ldap_next_attributeW(LDAP*, LDAPMessage*, BerElement*); - VOID ldap_memfreeA(PCHAR); - VOID ldap_memfreeW(PWCHAR); - PCHAR* ldap_get_valuesA(LDAP*, LDAPMessage*, PCHAR); - PWCHAR* ldap_get_valuesW(LDAP*, LDAPMessage*, PWCHAR); - BerValue** ldap_get_values_lenA(LDAP*, LDAPMessage*, PCHAR); - BerValue** ldap_get_values_lenW(LDAP*, LDAPMessage*, PWCHAR); - ULONG ldap_count_valuesA(PCHAR*); - ULONG ldap_count_valuesW(PWCHAR*); - ULONG ldap_count_values_len(BerValue**); - ULONG ldap_value_freeA(PCHAR*); - ULONG ldap_value_freeW(PWCHAR*); - ULONG ldap_value_free_len(BerValue**); - PCHAR ldap_get_dnA(LDAP*, LDAPMessage*); - PWCHAR ldap_get_dnW(LDAP*, LDAPMessage*); - PCHAR ldap_explode_dnA(PCHAR, ULONG); - PWCHAR ldap_explode_dnW(PWCHAR, ULONG); - PCHAR ldap_dn2ufnA(PCHAR); - PWCHAR ldap_dn2ufnW(PWCHAR); - ULONG ldap_ufn2dnA(PCHAR, PCHAR*); - ULONG ldap_ufn2dnW(PWCHAR, PWCHAR*); - ULONG ldap_parse_referenceA(LDAP*, LDAPMessage*, PCHAR**); - ULONG ldap_parse_referenceW(LDAP*, LDAPMessage*, PWCHAR**); - ULONG ldap_check_filterA(LDAP*, PCHAR); - ULONG ldap_check_filterW(LDAP*, PWCHAR); - ULONG ldap_create_page_controlA(PLDAP, ULONG, BerValue*, UCHAR, - PLDAPControlA*); - ULONG ldap_create_page_controlW(PLDAP, ULONG, BerValue*, UCHAR, - PLDAPControlW*); - ULONG ldap_create_sort_controlA(PLDAP, PLDAPSortKeyA*, UCHAR, - PLDAPControlA*); - ULONG ldap_create_sort_controlW(PLDAP, PLDAPSortKeyW*, UCHAR, - PLDAPControlW*); - INT ldap_create_vlv_controlA(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlA**); - INT ldap_create_vlv_controlW(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlW**); - ULONG ldap_encode_sort_controlA(PLDAP, PLDAPSortKeyA*, PLDAPControlA, - BOOLEAN); - ULONG ldap_encode_sort_controlW(PLDAP, PLDAPSortKeyW*, PLDAPControlW, - BOOLEAN); - ULONG ldap_escape_filter_elementA(PCHAR, ULONG, PCHAR, ULONG); - ULONG ldap_escape_filter_elementW(PWCHAR, ULONG, PWCHAR, ULONG); - ULONG ldap_get_next_page(PLDAP, PLDAPSearch, ULONG, ULONG*); - ULONG ldap_get_next_page_s(PLDAP, PLDAPSearch, LDAP_TIMEVAL*, ULONG, - ULONG*, LDAPMessage**); - ULONG ldap_get_paged_count(PLDAP, PLDAPSearch, ULONG*, PLDAPMessage); - ULONG ldap_parse_page_controlA(PLDAP, PLDAPControlA*, ULONG*, BerValue**); - ULONG ldap_parse_page_controlW(PLDAP, PLDAPControlW*, ULONG*, BerValue**); - ULONG ldap_parse_sort_controlA(PLDAP, PLDAPControlA*, ULONG*, PCHAR*); - ULONG ldap_parse_sort_controlW(PLDAP, PLDAPControlW*, ULONG*, PWCHAR*); - INT ldap_parse_vlv_controlA(LDAP*, LDAPControlA**, uint*, uint*, - BerValue**, int*); - INT ldap_parse_vlv_controlW(LDAP*, LDAPControlW**, uint*, uint*, - BerValue**, int*); - PLDAPSearch ldap_search_init_pageA(PLDAP, PCHAR, ULONG, PCHAR, PCHAR[], - ULONG, PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, PLDAPSortKeyA*); - PLDAPSearch ldap_search_init_pageW(PLDAP, PWCHAR, ULONG, PWCHAR, PWCHAR[], - ULONG, PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, PLDAPSortKeyW*); - ULONG ldap_search_abandon_page(PLDAP, PLDAPSearch); - LDAP ldap_conn_from_msg(LDAP*, LDAPMessage*); - INT LdapUnicodeToUTF8(LPCWSTR, int, LPSTR, int); - INT LdapUTF8ToUnicode(LPCSTR, int, LPWSTR, int); - deprecated { - ULONG ldap_bindA(LDAP*, PCHAR, PCHAR, ULONG); - ULONG ldap_bindW(LDAP*, PWCHAR, PWCHAR, ULONG); - ULONG ldap_bind_sA(LDAP*, PCHAR, PCHAR, ULONG); - ULONG ldap_bind_sW(LDAP*, PWCHAR, PWCHAR, ULONG); - ULONG ldap_modrdnA(LDAP*, PCHAR, PCHAR); - ULONG ldap_modrdnW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_modrdn_sA(LDAP*, PCHAR, PCHAR); - ULONG ldap_modrdn_sW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_modrdn2A(LDAP*, PCHAR, PCHAR, INT); - ULONG ldap_modrdn2W(LDAP*, PWCHAR, PWCHAR, INT); - ULONG ldap_modrdn2_sA(LDAP*, PCHAR, PCHAR, INT); - ULONG ldap_modrdn2_sW(LDAP*, PWCHAR, PWCHAR, INT); - } -} - -version (Unicode) { - alias LDAPControlW LDAPControl; - alias PLDAPControlW PLDAPControl; - alias LDAPModW LDAPMod; - alias LDAPModW PLDAPMod; - alias LDAPSortKeyW LDAPSortKey; - alias PLDAPSortKeyW PLDAPSortKey; - alias LDAPAPIInfoW LDAPAPIInfo; - alias PLDAPAPIInfoW PLDAPAPIInfo; - alias LDAPAPIFeatureInfoW LDAPAPIFeatureInfo; - alias PLDAPAPIFeatureInfoW PLDAPAPIFeatureInfo; - alias cldap_openW cldap_open; - alias ldap_openW ldap_open; - alias ldap_simple_bindW ldap_simple_bind; - alias ldap_simple_bind_sW ldap_simple_bind_s; - alias ldap_sasl_bindW ldap_sasl_bind; - alias ldap_sasl_bind_sW ldap_sasl_bind_s; - alias ldap_initW ldap_init; - alias ldap_sslinitW ldap_sslinit; - alias ldap_get_optionW ldap_get_option; - alias ldap_set_optionW ldap_set_option; - alias ldap_start_tls_sW ldap_start_tls_s; - alias ldap_addW ldap_add; - alias ldap_add_extW ldap_add_ext; - alias ldap_add_sW ldap_add_s; - alias ldap_add_ext_sW ldap_add_ext_s; - alias ldap_compareW ldap_compare; - alias ldap_compare_extW ldap_compare_ext; - alias ldap_compare_sW ldap_compare_s; - alias ldap_compare_ext_sW ldap_compare_ext_s; - alias ldap_deleteW ldap_delete; - alias ldap_delete_extW ldap_delete_ext; - alias ldap_delete_sW ldap_delete_s; - alias ldap_delete_ext_sW ldap_delete_ext_s; - alias ldap_extended_operation_sW ldap_extended_operation_s; - alias ldap_extended_operationW ldap_extended_operation; - alias ldap_modifyW ldap_modify; - alias ldap_modify_extW ldap_modify_ext; - alias ldap_modify_sW ldap_modify_s; - alias ldap_modify_ext_sW ldap_modify_ext_s; - alias ldap_check_filterW ldap_check_filter; - alias ldap_count_valuesW ldap_count_values; - alias ldap_create_page_controlW ldap_create_page_control; - alias ldap_create_sort_controlW ldap_create_sort_control; - alias ldap_create_vlv_controlW ldap_create_vlv_control; - alias ldap_encode_sort_controlW ldap_encode_sort_control; - alias ldap_escape_filter_elementW ldap_escape_filter_element; - alias ldap_first_attributeW ldap_first_attribute; - alias ldap_next_attributeW ldap_next_attribute; - alias ldap_get_valuesW ldap_get_values; - alias ldap_get_values_lenW ldap_get_values_len; - alias ldap_parse_extended_resultW ldap_parse_extended_result; - alias ldap_parse_page_controlW ldap_parse_page_control; - alias ldap_parse_referenceW ldap_parse_reference; - alias ldap_parse_resultW ldap_parse_result; - alias ldap_parse_sort_controlW ldap_parse_sort_control; - alias ldap_parse_vlv_controlW ldap_parse_vlv_control; - alias ldap_searchW ldap_search; - alias ldap_search_sW ldap_search_s; - alias ldap_search_stW ldap_search_st; - alias ldap_search_extW ldap_search_ext; - alias ldap_search_ext_sW ldap_search_ext_s; - alias ldap_search_init_pageW ldap_search_init_page; - alias ldap_err2stringW ldap_err2string; - alias ldap_control_freeW ldap_control_free; - alias ldap_controls_freeW ldap_controls_free; - alias ldap_free_controlsW ldap_free_controls; - alias ldap_memfreeW ldap_memfree; - alias ldap_value_freeW ldap_value_free; - alias ldap_dn2ufnW ldap_dn2ufn; - alias ldap_ufn2dnW ldap_ufn2dn; - alias ldap_explode_dnW ldap_explode_dn; - alias ldap_get_dnW ldap_get_dn; - alias ldap_rename_extW ldap_rename; - alias ldap_rename_ext_sW ldap_rename_s; - alias ldap_rename_extW ldap_rename_ext; - alias ldap_rename_ext_sW ldap_rename_ext_s; - deprecated { - alias ldap_bindW ldap_bind; - alias ldap_bind_sW ldap_bind_s; - alias ldap_modrdnW ldap_modrdn; - alias ldap_modrdn_sW ldap_modrdn_s; - alias ldap_modrdn2W ldap_modrdn2; - alias ldap_modrdn2_sW ldap_modrdn2_s; - } -} else { - alias LDAPControlA LDAPControl; - alias PLDAPControlA PLDAPControl; - alias LDAPModA LDAPMod; - alias LDAPModA PLDAPMod; - alias LDAPSortKeyA LDAPSortKey; - alias PLDAPSortKeyA PLDAPSortKey; - alias LDAPAPIInfoA LDAPAPIInfo; - alias PLDAPAPIInfoA PLDAPAPIInfo; - alias LDAPAPIFeatureInfoA LDAPAPIFeatureInfo; - alias PLDAPAPIFeatureInfoA PLDAPAPIFeatureInfo; - alias cldap_openA cldap_open; - alias ldap_openA ldap_open; - alias ldap_simple_bindA ldap_simple_bind; - alias ldap_simple_bind_sA ldap_simple_bind_s; - alias ldap_sasl_bindA ldap_sasl_bind; - alias ldap_sasl_bind_sA ldap_sasl_bind_s; - alias ldap_initA ldap_init; - alias ldap_sslinitA ldap_sslinit; - alias ldap_get_optionA ldap_get_option; - alias ldap_set_optionA ldap_set_option; - alias ldap_start_tls_sA ldap_start_tls_s; - alias ldap_addA ldap_add; - alias ldap_add_extA ldap_add_ext; - alias ldap_add_sA ldap_add_s; - alias ldap_add_ext_sA ldap_add_ext_s; - alias ldap_compareA ldap_compare; - alias ldap_compare_extA ldap_compare_ext; - alias ldap_compare_sA ldap_compare_s; - alias ldap_compare_ext_sA ldap_compare_ext_s; - alias ldap_deleteA ldap_delete; - alias ldap_delete_extA ldap_delete_ext; - alias ldap_delete_sA ldap_delete_s; - alias ldap_delete_ext_sA ldap_delete_ext_s; - alias ldap_extended_operation_sA ldap_extended_operation_s; - alias ldap_extended_operationA ldap_extended_operation; - alias ldap_modifyA ldap_modify; - alias ldap_modify_extA ldap_modify_ext; - alias ldap_modify_sA ldap_modify_s; - alias ldap_modify_ext_sA ldap_modify_ext_s; - alias ldap_check_filterA ldap_check_filter; - alias ldap_count_valuesA ldap_count_values; - alias ldap_create_page_controlA ldap_create_page_control; - alias ldap_create_sort_controlA ldap_create_sort_control; - alias ldap_create_vlv_controlA ldap_create_vlv_control; - alias ldap_encode_sort_controlA ldap_encode_sort_control; - alias ldap_escape_filter_elementA ldap_escape_filter_element; - alias ldap_first_attributeA ldap_first_attribute; - alias ldap_next_attributeA ldap_next_attribute; - alias ldap_get_valuesA ldap_get_values; - alias ldap_get_values_lenA ldap_get_values_len; - alias ldap_parse_extended_resultA ldap_parse_extended_result; - alias ldap_parse_page_controlA ldap_parse_page_control; - alias ldap_parse_referenceA ldap_parse_reference; - alias ldap_parse_resultA ldap_parse_result; - alias ldap_parse_sort_controlA ldap_parse_sort_control; - alias ldap_parse_vlv_controlA ldap_parse_vlv_control; - alias ldap_searchA ldap_search; - alias ldap_search_sA ldap_search_s; - alias ldap_search_stA ldap_search_st; - alias ldap_search_extA ldap_search_ext; - alias ldap_search_ext_sA ldap_search_ext_s; - alias ldap_search_init_pageA ldap_search_init_page; - alias ldap_err2stringA ldap_err2string; - alias ldap_control_freeA ldap_control_free; - alias ldap_controls_freeA ldap_controls_free; - alias ldap_free_controlsA ldap_free_controls; - alias ldap_memfreeA ldap_memfree; - alias ldap_value_freeA ldap_value_free; - alias ldap_dn2ufnA ldap_dn2ufn; - alias ldap_ufn2dnA ldap_ufn2dn; - alias ldap_explode_dnA ldap_explode_dn; - alias ldap_get_dnA ldap_get_dn; - alias ldap_rename_extA ldap_rename; - alias ldap_rename_ext_sA ldap_rename_s; - alias ldap_rename_extA ldap_rename_ext; - alias ldap_rename_ext_sA ldap_rename_ext_s; - deprecated { - alias ldap_bindA ldap_bind; - alias ldap_bind_sA ldap_bind_s; - alias ldap_modrdnA ldap_modrdn; - alias ldap_modrdn_sA ldap_modrdn_s; - alias ldap_modrdn2A ldap_modrdn2; - alias ldap_modrdn2_sA ldap_modrdn2_s; - } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winldap.d) + */ +module core.sys.windows.winldap; + +/* Comment from MinGW + winldap.h - Header file for the Windows LDAP API + + Written by Filip Navara + + References: + The C LDAP Application Program Interface + http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt + + Lightweight Directory Access Protocol Reference + http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +*/ + +import core.sys.windows.schannel, core.sys.windows.winber; +private import core.sys.windows.wincrypt, core.sys.windows.windef; +version(Tango){ + private import tango.stdc.stdio; +} + +align(4): + +enum { + LDAP_VERSION1 = 1, + LDAP_VERSION2 = 2, + LDAP_VERSION3 = 3, + LDAP_VERSION = LDAP_VERSION2, + LDAP_VERSION_MIN = LDAP_VERSION2, + LDAP_VERSION_MAX = LDAP_VERSION3 +} + +/* MinGW defines ANSI and Unicode versions as LDAP_VENDOR_NAME and + * LDAP_VENDOR_NAME_W respectively; similarly with other string constants + * defined in this module. + */ +const TCHAR[] LDAP_VENDOR_NAME = "Microsoft Corporation."; + +const LDAP_API_VERSION = 2004; +const LDAP_VENDOR_VERSION = 510; +const LDAP_API_INFO_VERSION = 1; +const LDAP_FEATURE_INFO_VERSION = 1; + +enum { + LDAP_SUCCESS = 0x00, + LDAP_OPT_SUCCESS = LDAP_SUCCESS, + LDAP_OPERATIONS_ERROR, + LDAP_PROTOCOL_ERROR, + LDAP_TIMELIMIT_EXCEEDED, + LDAP_SIZELIMIT_EXCEEDED, + LDAP_COMPARE_FALSE, + LDAP_COMPARE_TRUE, + LDAP_STRONG_AUTH_NOT_SUPPORTED, + LDAP_AUTH_METHOD_NOT_SUPPORTED = LDAP_STRONG_AUTH_NOT_SUPPORTED, + LDAP_STRONG_AUTH_REQUIRED, + LDAP_REFERRAL_V2, + LDAP_PARTIAL_RESULTS = LDAP_REFERRAL_V2, + LDAP_REFERRAL, + LDAP_ADMIN_LIMIT_EXCEEDED, + LDAP_UNAVAILABLE_CRIT_EXTENSION, + LDAP_CONFIDENTIALITY_REQUIRED, + LDAP_SASL_BIND_IN_PROGRESS, // = 0x0e + LDAP_NO_SUCH_ATTRIBUTE = 0x10, + LDAP_UNDEFINED_TYPE, + LDAP_INAPPROPRIATE_MATCHING, + LDAP_CONSTRAINT_VIOLATION, + LDAP_TYPE_OR_VALUE_EXISTS, + LDAP_ATTRIBUTE_OR_VALUE_EXISTS = LDAP_TYPE_OR_VALUE_EXISTS, + LDAP_INVALID_SYNTAX, // = 0x15 + LDAP_NO_SUCH_OBJECT = 0x20, + LDAP_ALIAS_PROBLEM, + LDAP_INVALID_DN_SYNTAX, + LDAP_IS_LEAF, + LDAP_ALIAS_DEREF_PROBLEM, // = 0x24 + LDAP_INAPPROPRIATE_AUTH = 0x30, + LDAP_INVALID_CREDENTIALS, + LDAP_INSUFFICIENT_ACCESS, + LDAP_INSUFFICIENT_RIGHTS = LDAP_INSUFFICIENT_ACCESS, + LDAP_BUSY, + LDAP_UNAVAILABLE, + LDAP_UNWILLING_TO_PERFORM, + LDAP_LOOP_DETECT, // = 0x36 + LDAP_NAMING_VIOLATION = 0x40, + LDAP_OBJECT_CLASS_VIOLATION, + LDAP_NOT_ALLOWED_ON_NONLEAF, + LDAP_NOT_ALLOWED_ON_RDN, + LDAP_ALREADY_EXISTS, + LDAP_NO_OBJECT_CLASS_MODS, + LDAP_RESULTS_TOO_LARGE, + LDAP_AFFECTS_MULTIPLE_DSAS, // = 0x47 + LDAP_OTHER = 0x50, + LDAP_SERVER_DOWN, + LDAP_LOCAL_ERROR, + LDAP_ENCODING_ERROR, + LDAP_DECODING_ERROR, + LDAP_TIMEOUT, + LDAP_AUTH_UNKNOWN, + LDAP_FILTER_ERROR, + LDAP_USER_CANCELLED, + LDAP_PARAM_ERROR, + LDAP_NO_MEMORY, + LDAP_CONNECT_ERROR, + LDAP_NOT_SUPPORTED, + LDAP_CONTROL_NOT_FOUND, + LDAP_NO_RESULTS_RETURNED, + LDAP_MORE_RESULTS_TO_RETURN, + LDAP_CLIENT_LOOP, + LDAP_REFERRAL_LIMIT_EXCEEDED // = 0x61 +} + +enum { + LDAP_PORT = 389, + LDAP_SSL_PORT = 636, + LDAP_GC_PORT = 3268, + LDAP_SSL_GC_PORT = 3269 +} + +const void* + LDAP_OPT_OFF = null, + LDAP_OPT_ON = cast(void*) 1; + +enum { + LDAP_OPT_API_INFO = 0x00, + LDAP_OPT_DESC, + LDAP_OPT_DEREF, + LDAP_OPT_SIZELIMIT, + LDAP_OPT_TIMELIMIT, + LDAP_OPT_THREAD_FN_PTRS, + LDAP_OPT_REBIND_FN, + LDAP_OPT_REBIND_ARG, + LDAP_OPT_REFERRALS, + LDAP_OPT_RESTART, + LDAP_OPT_SSL, + LDAP_OPT_TLS = LDAP_OPT_SSL, + LDAP_OPT_IO_FN_PTRS, // = 0x0b + LDAP_OPT_CACHE_FN_PTRS = 0x0d, + LDAP_OPT_CACHE_STRATEGY, + LDAP_OPT_CACHE_ENABLE, + LDAP_OPT_REFERRAL_HOP_LIMIT, + LDAP_OPT_PROTOCOL_VERSION, + LDAP_OPT_VERSION = LDAP_OPT_PROTOCOL_VERSION, + LDAP_OPT_SERVER_CONTROLS, + LDAP_OPT_CLIENT_CONTROLS, // = 0x13 + LDAP_OPT_API_FEATURE_INFO = 0x15, + LDAP_OPT_HOST_NAME = 0x30, + LDAP_OPT_ERROR_NUMBER, + LDAP_OPT_ERROR_STRING, + LDAP_OPT_SERVER_ERROR, + LDAP_OPT_SERVER_EXT_ERROR, // = 0x34 + LDAP_OPT_PING_KEEP_ALIVE = 0x36, + LDAP_OPT_PING_WAIT_TIME, + LDAP_OPT_PING_LIMIT, // = 0x38 + LDAP_OPT_DNSDOMAIN_NAME = 0x3b, + LDAP_OPT_GETDSNAME_FLAGS = 0x3d, + LDAP_OPT_HOST_REACHABLE, + LDAP_OPT_PROMPT_CREDENTIALS, + LDAP_OPT_TCP_KEEPALIVE, // = 0x40 + LDAP_OPT_REFERRAL_CALLBACK = 0x70, + LDAP_OPT_CLIENT_CERTIFICATE = 0x80, + LDAP_OPT_SERVER_CERTIFICATE, // = 0x81 + LDAP_OPT_AUTO_RECONNECT = 0x91, + LDAP_OPT_SSPI_FLAGS, + LDAP_OPT_SSL_INFO, + LDAP_OPT_TLS_INFO = LDAP_OPT_SSL_INFO, + LDAP_OPT_REF_DEREF_CONN_PER_MSG, + LDAP_OPT_SIGN, + LDAP_OPT_ENCRYPT, + LDAP_OPT_SASL_METHOD, + LDAP_OPT_AREC_EXCLUSIVE, + LDAP_OPT_SECURITY_CONTEXT, + LDAP_OPT_ROOTDSE_CACHE // = 0x9a +} + +enum { + LDAP_DEREF_NEVER, + LDAP_DEREF_SEARCHING, + LDAP_DEREF_FINDING, + LDAP_DEREF_ALWAYS +} + +const LDAP_NO_LIMIT = 0; + +const TCHAR[] LDAP_CONTROL_REFERRALS = "1.2.840.113556.1.4.616"; + +// FIXME: check type (declared with U suffix in MinGW) +enum : uint { + LDAP_CHASE_SUBORDINATE_REFERRALS = 0x20, + LDAP_CHASE_EXTERNAL_REFERRALS = 0x40 +} + +enum { + LDAP_SCOPE_DEFAULT = -1, + LDAP_SCOPE_BASE, + LDAP_SCOPE_ONELEVEL, + LDAP_SCOPE_SUBTREE +} + +enum { + LDAP_MOD_ADD, + LDAP_MOD_DELETE, + LDAP_MOD_REPLACE, + LDAP_MOD_BVALUES = 0x80 +} + +enum : int { + LDAP_RES_BIND = 0x61, + LDAP_RES_SEARCH_ENTRY = 0x64, + LDAP_RES_SEARCH_RESULT = 0x65, + LDAP_RES_MODIFY = 0x67, + LDAP_RES_ADD = 0x69, + LDAP_RES_DELETE = 0x6b, + LDAP_RES_MODRDN = 0x6d, + LDAP_RES_COMPARE = 0x6f, + LDAP_RES_SEARCH_REFERENCE = 0x73, + LDAP_RES_EXTENDED = 0x78, + LDAP_RES_ANY = -1 +} + +enum { + LDAP_MSG_ONE, + LDAP_MSG_ALL, + LDAP_MSG_RECEIVED +} + +const TCHAR[] + LDAP_SERVER_SORT_OID = "1.2.840.113556.1.4.473", + LDAP_SERVER_RESP_SORT_OID = "1.2.840.113556.1.4.474", + LDAP_PAGED_RESULT_OID_STRING = "1.2.840.113556.1.4.319", + LDAP_CONTROL_VLVREQUEST = "2.16.840.1.113730.3.4.9", + LDAP_CONTROL_VLVRESPONSE = "2.16.840.1.113730.3.4.10", + LDAP_START_TLS_OID = "1.3.6.1.4.1.1466.20037", + LDAP_TTL_EXTENDED_OP_OID = "1.3.6.1.4.1.1466.101.119.1"; + +enum { + LDAP_AUTH_NONE = 0x00U, + LDAP_AUTH_SIMPLE = 0x80U, + LDAP_AUTH_SASL = 0x83U, + LDAP_AUTH_OTHERKIND = 0x86U, + LDAP_AUTH_EXTERNAL = LDAP_AUTH_OTHERKIND | 0x0020U, + LDAP_AUTH_SICILY = LDAP_AUTH_OTHERKIND | 0x0200U, + LDAP_AUTH_NEGOTIATE = LDAP_AUTH_OTHERKIND | 0x0400U, + LDAP_AUTH_MSN = LDAP_AUTH_OTHERKIND | 0x0800U, + LDAP_AUTH_NTLM = LDAP_AUTH_OTHERKIND | 0x1000U, + LDAP_AUTH_DIGEST = LDAP_AUTH_OTHERKIND | 0x4000U, + LDAP_AUTH_DPA = LDAP_AUTH_OTHERKIND | 0x2000U, + LDAP_AUTH_SSPI = LDAP_AUTH_NEGOTIATE +} + +enum { + LDAP_FILTER_AND = 0xa0, + LDAP_FILTER_OR, + LDAP_FILTER_NOT, + LDAP_FILTER_EQUALITY, + LDAP_FILTER_SUBSTRINGS, + LDAP_FILTER_GE, + LDAP_FILTER_LE, // = 0xa6 + LDAP_FILTER_APPROX = 0xa8, + LDAP_FILTER_EXTENSIBLE, + LDAP_FILTER_PRESENT = 0x87 +} + +enum { + LDAP_SUBSTRING_INITIAL = 0x80, + LDAP_SUBSTRING_ANY, + LDAP_SUBSTRING_FINAL +} + +struct LDAP { + char[76] Reserved; + PCHAR ld_host; + ULONG ld_version; + UCHAR ld_lberoptions; + int ld_deref; + int ld_timelimit; + int ld_sizelimit; + int ld_errno; + PCHAR ld_matched; + PCHAR ld_error; +} +alias LDAP* PLDAP; + +struct LDAPMessage { + ULONG lm_msgid; + ULONG lm_msgtype; + BerElement* lm_ber; + LDAPMessage* lm_chain; + LDAPMessage* lm_next; + ULONG lm_time; +} +alias LDAPMessage* PLDAPMessage; + +struct LDAP_TIMEVAL { + LONG tv_sec; + LONG tv_usec; +} +alias LDAP_TIMEVAL* PLDAP_TIMEVAL; + +struct LDAPAPIInfoA { + int ldapai_info_version; + int ldapai_api_version; + int ldapai_protocol_version; + char** ldapai_extensions; + char* ldapai_vendor_name; + int ldapai_vendor_version; +} +alias LDAPAPIInfoA* PLDAPAPIInfoA; + +struct LDAPAPIInfoW { + int ldapai_info_version; + int ldapai_api_version; + int ldapai_protocol_version; + PWCHAR* ldapai_extensions; + PWCHAR ldapai_vendor_name; + int ldapai_vendor_version; +} +alias LDAPAPIInfoW* PLDAPAPIInfoW; + +struct LDAPAPIFeatureInfoA { + int ldapaif_info_version; + char* ldapaif_name; + int ldapaif_version; +} +alias LDAPAPIFeatureInfoA* PLDAPAPIFeatureInfoA; + +struct LDAPAPIFeatureInfoW { + int ldapaif_info_version; + PWCHAR ldapaif_name; + int ldapaif_version; +} +alias LDAPAPIFeatureInfoW* PLDAPAPIFeatureInfoW; + +struct LDAPControlA { + PCHAR ldctl_oid; + BerValue ldctl_value; + BOOLEAN ldctl_iscritical; +} +alias LDAPControlA* PLDAPControlA; + +struct LDAPControlW { + PWCHAR ldctl_oid; + BerValue ldctl_value; + BOOLEAN ldctl_iscritical; +} +alias LDAPControlW* PLDAPControlW; + +/* Do we really need these? In MinGW, LDAPModA/W have only mod_op, mod_type + * and mod_vals, and macros are used to simulate anonymous unions in those + * structures. + */ +union mod_vals_u_tA { + PCHAR* modv_strvals; + BerValue** modv_bvals; +} + +union mod_vals_u_tW { + PWCHAR* modv_strvals; + BerValue** modv_bvals; +} + +struct LDAPModA { + ULONG mod_op; + PCHAR mod_type; + + union { + mod_vals_u_tA mod_vals; + // The following members are defined as macros in MinGW. + PCHAR* mod_values; + BerValue** mod_bvalues; + } +} +alias LDAPModA* PLDAPModA; + +struct LDAPModW { + ULONG mod_op; + PWCHAR mod_type; + + union { + mod_vals_u_tW mod_vals; + // The following members are defined as macros in MinGW. + PWCHAR* mod_values; + BerValue** mod_bvalues; + } +} +alias LDAPModW* PLDAPModW; + +/* Opaque structure + * http://msdn.microsoft.com/library/en-us/ldap/ldap/ldapsearch.asp + */ +struct LDAPSearch; +alias LDAPSearch* PLDAPSearch; + +struct LDAPSortKeyA { + PCHAR sk_attrtype; + PCHAR sk_matchruleoid; + BOOLEAN sk_reverseorder; +} +alias LDAPSortKeyA* PLDAPSortKeyA; + +struct LDAPSortKeyW { + PWCHAR sk_attrtype; + PWCHAR sk_matchruleoid; + BOOLEAN sk_reverseorder; +} +alias LDAPSortKeyW* PLDAPSortKeyW; + +/* MinGW defines these as immediate function typedefs, which don't translate + * well into D. + */ +extern (C) { + alias ULONG function(PLDAP, PLDAP, PWCHAR, PCHAR, ULONG, PVOID, PVOID, + PLDAP*) QUERYFORCONNECTION; + alias BOOLEAN function(PLDAP, PLDAP, PWCHAR, PCHAR, PLDAP, ULONG, PVOID, + PVOID, ULONG) NOTIFYOFNEWCONNECTION; + alias ULONG function(PLDAP, PLDAP) DEREFERENCECONNECTION; + alias BOOLEAN function(PLDAP, PSecPkgContext_IssuerListInfoEx, + PCCERT_CONTEXT*) QUERYCLIENTCERT; +} + +struct LDAP_REFERRAL_CALLBACK { + ULONG SizeOfCallbacks; + QUERYFORCONNECTION* QueryForConnection; + NOTIFYOFNEWCONNECTION* NotifyRoutine; + DEREFERENCECONNECTION* DereferenceRoutine; +} +alias LDAP_REFERRAL_CALLBACK* PLDAP_REFERRAL_CALLBACK; + +struct LDAPVLVInfo { + int ldvlv_version; + uint ldvlv_before_count; + uint ldvlv_after_count; + uint ldvlv_offset; + uint ldvlv_count; + BerValue* ldvlv_attrvalue; + BerValue* ldvlv_context; + void* ldvlv_extradata; +} + +/* + * Under Microsoft WinLDAP the function ldap_error is only stub. + * This macro uses LDAP structure to get error string and pass it to the user. + */ +private extern (C) int printf(in char* format, ...); +int ldap_perror(LDAP* handle, char* message) { + return printf("%s: %s\n", message, handle.ld_error); +} + +/* FIXME: In MinGW, these are WINLDAPAPI == DECLSPEC_IMPORT. Linkage + * attribute? + */ +extern (C) { + PLDAP ldap_initA(PCHAR, ULONG); + PLDAP ldap_initW(PWCHAR, ULONG); + PLDAP ldap_openA(PCHAR, ULONG); + PLDAP ldap_openW(PWCHAR, ULONG); + PLDAP cldap_openA(PCHAR, ULONG); + PLDAP cldap_openW(PWCHAR, ULONG); + ULONG ldap_connect(LDAP*, LDAP_TIMEVAL*); + PLDAP ldap_sslinitA(PCHAR, ULONG, int); + PLDAP ldap_sslinitW(PWCHAR, ULONG, int); + ULONG ldap_start_tls_sA(LDAP*, PLDAPControlA*, PLDAPControlA*); + ULONG ldap_start_tls_sW(LDAP*, PLDAPControlW*, PLDAPControlW*); + BOOLEAN ldap_stop_tls_s(LDAP*); + ULONG ldap_get_optionA(LDAP*, int, void*); + ULONG ldap_get_optionW(LDAP*, int, void*); + ULONG ldap_set_optionA(LDAP*, int, void*); + ULONG ldap_set_optionW(LDAP*, int, void*); + ULONG ldap_control_freeA(LDAPControlA*); + ULONG ldap_control_freeW(LDAPControlW*); + ULONG ldap_controls_freeA(LDAPControlA**); + ULONG ldap_controls_freeW(LDAPControlW**); + ULONG ldap_free_controlsA(LDAPControlA**); + ULONG ldap_free_controlsW(LDAPControlW**); + ULONG ldap_sasl_bindA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, + PLDAPControlA*, int*); + ULONG ldap_sasl_bindW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, + PLDAPControlW*, int*); + ULONG ldap_sasl_bind_sA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, + PLDAPControlA*, PBERVAL*); + ULONG ldap_sasl_bind_sW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, + PLDAPControlW*, PBERVAL*); + ULONG ldap_simple_bindA(LDAP*, PCHAR, PCHAR); + ULONG ldap_simple_bindW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_simple_bind_sA(LDAP*, PCHAR, PCHAR); + ULONG ldap_simple_bind_sW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_unbind(LDAP*); + ULONG ldap_unbind_s(LDAP*); + ULONG ldap_search_extA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); + ULONG ldap_search_extW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); + ULONG ldap_search_ext_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + PLDAPControlA*, PLDAPControlA*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); + ULONG ldap_search_ext_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); + ULONG ldap_searchA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG); + ULONG ldap_searchW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG); + ULONG ldap_search_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + LDAPMessage**); + ULONG ldap_search_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + LDAPMessage**); + ULONG ldap_search_stA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_search_stW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_compare_extA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, + PLDAPControlA*, PLDAPControlA*, ULONG*); + ULONG ldap_compare_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, + PLDAPControlW*, PLDAPControlW*, ULONG*); + ULONG ldap_compare_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, + PLDAPControlA*, PLDAPControlA*); + ULONG ldap_compare_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, + PLDAPControlW*, PLDAPControlW*); + ULONG ldap_compareA(LDAP*, PCHAR, PCHAR, PCHAR); + ULONG ldap_compareW(LDAP*, PWCHAR, PWCHAR, PWCHAR); + ULONG ldap_compare_sA(LDAP*, PCHAR, PCHAR, PCHAR); + ULONG ldap_compare_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR); + ULONG ldap_modify_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_modify_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_modify_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*); + ULONG ldap_modify_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*); + ULONG ldap_modifyA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_modifyW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_modify_sA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_modify_sW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_rename_extA(LDAP*, PCHAR, PCHAR, PCHAR, INT, PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_rename_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_rename_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, INT, + PLDAPControlA*, PLDAPControlA*); + ULONG ldap_rename_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, + PLDAPControlW*, PLDAPControlW*); + ULONG ldap_add_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_add_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_add_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*); + ULONG ldap_add_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*); + ULONG ldap_addA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_addW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_add_sA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_add_sW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_delete_extA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*, + ULONG*); + ULONG ldap_delete_extW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*, + ULONG*); + ULONG ldap_delete_ext_sA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*); + ULONG ldap_delete_ext_sW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*); + ULONG ldap_deleteA(LDAP*, PCHAR); + ULONG ldap_deleteW(LDAP*, PWCHAR); + ULONG ldap_delete_sA(LDAP*, PCHAR); + ULONG ldap_delete_sW(LDAP*, PWCHAR); + ULONG ldap_extended_operationA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_extended_operationW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_extended_operation_sA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, + PLDAPControlA*, PCHAR*, BerValue**); + ULONG ldap_extended_operation_sW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, + PLDAPControlW*, PWCHAR*, BerValue**); + ULONG ldap_close_extended_op(LDAP*, ULONG); + ULONG ldap_abandon(LDAP*, ULONG); + ULONG ldap_result(LDAP*, ULONG, ULONG, LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_msgfree(LDAPMessage*); + ULONG ldap_parse_resultA(LDAP*, LDAPMessage*, ULONG*, PCHAR*, PCHAR*, + PCHAR**, PLDAPControlA**, BOOLEAN); + ULONG ldap_parse_resultW(LDAP*, LDAPMessage*, ULONG*, PWCHAR*, PWCHAR*, + PWCHAR**, PLDAPControlW**, BOOLEAN); + ULONG ldap_parse_extended_resultA(LDAP, LDAPMessage*, PCHAR*, BerValue**, + BOOLEAN); + ULONG ldap_parse_extended_resultW(LDAP, LDAPMessage*, PWCHAR*, BerValue**, + BOOLEAN); + PCHAR ldap_err2stringA(ULONG); + PWCHAR ldap_err2stringW(ULONG); + ULONG LdapGetLastError(); + ULONG LdapMapErrorToWin32(ULONG); + ULONG ldap_result2error(LDAP*, LDAPMessage*, ULONG); + PLDAPMessage ldap_first_entry(LDAP*, LDAPMessage*); + PLDAPMessage ldap_next_entry(LDAP*, LDAPMessage*); + PLDAPMessage ldap_first_reference(LDAP*, LDAPMessage*); + PLDAPMessage ldap_next_reference(LDAP*, LDAPMessage*); + ULONG ldap_count_entries(LDAP*, LDAPMessage*); + ULONG ldap_count_references(LDAP*, LDAPMessage*); + PCHAR ldap_first_attributeA(LDAP*, LDAPMessage*, BerElement**); + PWCHAR ldap_first_attributeW(LDAP*, LDAPMessage*, BerElement**); + PCHAR ldap_next_attributeA(LDAP*, LDAPMessage*, BerElement*); + PWCHAR ldap_next_attributeW(LDAP*, LDAPMessage*, BerElement*); + VOID ldap_memfreeA(PCHAR); + VOID ldap_memfreeW(PWCHAR); + PCHAR* ldap_get_valuesA(LDAP*, LDAPMessage*, PCHAR); + PWCHAR* ldap_get_valuesW(LDAP*, LDAPMessage*, PWCHAR); + BerValue** ldap_get_values_lenA(LDAP*, LDAPMessage*, PCHAR); + BerValue** ldap_get_values_lenW(LDAP*, LDAPMessage*, PWCHAR); + ULONG ldap_count_valuesA(PCHAR*); + ULONG ldap_count_valuesW(PWCHAR*); + ULONG ldap_count_values_len(BerValue**); + ULONG ldap_value_freeA(PCHAR*); + ULONG ldap_value_freeW(PWCHAR*); + ULONG ldap_value_free_len(BerValue**); + PCHAR ldap_get_dnA(LDAP*, LDAPMessage*); + PWCHAR ldap_get_dnW(LDAP*, LDAPMessage*); + PCHAR ldap_explode_dnA(PCHAR, ULONG); + PWCHAR ldap_explode_dnW(PWCHAR, ULONG); + PCHAR ldap_dn2ufnA(PCHAR); + PWCHAR ldap_dn2ufnW(PWCHAR); + ULONG ldap_ufn2dnA(PCHAR, PCHAR*); + ULONG ldap_ufn2dnW(PWCHAR, PWCHAR*); + ULONG ldap_parse_referenceA(LDAP*, LDAPMessage*, PCHAR**); + ULONG ldap_parse_referenceW(LDAP*, LDAPMessage*, PWCHAR**); + ULONG ldap_check_filterA(LDAP*, PCHAR); + ULONG ldap_check_filterW(LDAP*, PWCHAR); + ULONG ldap_create_page_controlA(PLDAP, ULONG, BerValue*, UCHAR, + PLDAPControlA*); + ULONG ldap_create_page_controlW(PLDAP, ULONG, BerValue*, UCHAR, + PLDAPControlW*); + ULONG ldap_create_sort_controlA(PLDAP, PLDAPSortKeyA*, UCHAR, + PLDAPControlA*); + ULONG ldap_create_sort_controlW(PLDAP, PLDAPSortKeyW*, UCHAR, + PLDAPControlW*); + INT ldap_create_vlv_controlA(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlA**); + INT ldap_create_vlv_controlW(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlW**); + ULONG ldap_encode_sort_controlA(PLDAP, PLDAPSortKeyA*, PLDAPControlA, + BOOLEAN); + ULONG ldap_encode_sort_controlW(PLDAP, PLDAPSortKeyW*, PLDAPControlW, + BOOLEAN); + ULONG ldap_escape_filter_elementA(PCHAR, ULONG, PCHAR, ULONG); + ULONG ldap_escape_filter_elementW(PWCHAR, ULONG, PWCHAR, ULONG); + ULONG ldap_get_next_page(PLDAP, PLDAPSearch, ULONG, ULONG*); + ULONG ldap_get_next_page_s(PLDAP, PLDAPSearch, LDAP_TIMEVAL*, ULONG, + ULONG*, LDAPMessage**); + ULONG ldap_get_paged_count(PLDAP, PLDAPSearch, ULONG*, PLDAPMessage); + ULONG ldap_parse_page_controlA(PLDAP, PLDAPControlA*, ULONG*, BerValue**); + ULONG ldap_parse_page_controlW(PLDAP, PLDAPControlW*, ULONG*, BerValue**); + ULONG ldap_parse_sort_controlA(PLDAP, PLDAPControlA*, ULONG*, PCHAR*); + ULONG ldap_parse_sort_controlW(PLDAP, PLDAPControlW*, ULONG*, PWCHAR*); + INT ldap_parse_vlv_controlA(LDAP*, LDAPControlA**, uint*, uint*, + BerValue**, int*); + INT ldap_parse_vlv_controlW(LDAP*, LDAPControlW**, uint*, uint*, + BerValue**, int*); + PLDAPSearch ldap_search_init_pageA(PLDAP, PCHAR, ULONG, PCHAR, PCHAR[], + ULONG, PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, PLDAPSortKeyA*); + PLDAPSearch ldap_search_init_pageW(PLDAP, PWCHAR, ULONG, PWCHAR, PWCHAR[], + ULONG, PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, PLDAPSortKeyW*); + ULONG ldap_search_abandon_page(PLDAP, PLDAPSearch); + LDAP ldap_conn_from_msg(LDAP*, LDAPMessage*); + INT LdapUnicodeToUTF8(LPCWSTR, int, LPSTR, int); + INT LdapUTF8ToUnicode(LPCSTR, int, LPWSTR, int); + deprecated { + ULONG ldap_bindA(LDAP*, PCHAR, PCHAR, ULONG); + ULONG ldap_bindW(LDAP*, PWCHAR, PWCHAR, ULONG); + ULONG ldap_bind_sA(LDAP*, PCHAR, PCHAR, ULONG); + ULONG ldap_bind_sW(LDAP*, PWCHAR, PWCHAR, ULONG); + ULONG ldap_modrdnA(LDAP*, PCHAR, PCHAR); + ULONG ldap_modrdnW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_modrdn_sA(LDAP*, PCHAR, PCHAR); + ULONG ldap_modrdn_sW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_modrdn2A(LDAP*, PCHAR, PCHAR, INT); + ULONG ldap_modrdn2W(LDAP*, PWCHAR, PWCHAR, INT); + ULONG ldap_modrdn2_sA(LDAP*, PCHAR, PCHAR, INT); + ULONG ldap_modrdn2_sW(LDAP*, PWCHAR, PWCHAR, INT); + } +} + +version (Unicode) { + alias LDAPControlW LDAPControl; + alias PLDAPControlW PLDAPControl; + alias LDAPModW LDAPMod; + alias LDAPModW PLDAPMod; + alias LDAPSortKeyW LDAPSortKey; + alias PLDAPSortKeyW PLDAPSortKey; + alias LDAPAPIInfoW LDAPAPIInfo; + alias PLDAPAPIInfoW PLDAPAPIInfo; + alias LDAPAPIFeatureInfoW LDAPAPIFeatureInfo; + alias PLDAPAPIFeatureInfoW PLDAPAPIFeatureInfo; + alias cldap_openW cldap_open; + alias ldap_openW ldap_open; + alias ldap_simple_bindW ldap_simple_bind; + alias ldap_simple_bind_sW ldap_simple_bind_s; + alias ldap_sasl_bindW ldap_sasl_bind; + alias ldap_sasl_bind_sW ldap_sasl_bind_s; + alias ldap_initW ldap_init; + alias ldap_sslinitW ldap_sslinit; + alias ldap_get_optionW ldap_get_option; + alias ldap_set_optionW ldap_set_option; + alias ldap_start_tls_sW ldap_start_tls_s; + alias ldap_addW ldap_add; + alias ldap_add_extW ldap_add_ext; + alias ldap_add_sW ldap_add_s; + alias ldap_add_ext_sW ldap_add_ext_s; + alias ldap_compareW ldap_compare; + alias ldap_compare_extW ldap_compare_ext; + alias ldap_compare_sW ldap_compare_s; + alias ldap_compare_ext_sW ldap_compare_ext_s; + alias ldap_deleteW ldap_delete; + alias ldap_delete_extW ldap_delete_ext; + alias ldap_delete_sW ldap_delete_s; + alias ldap_delete_ext_sW ldap_delete_ext_s; + alias ldap_extended_operation_sW ldap_extended_operation_s; + alias ldap_extended_operationW ldap_extended_operation; + alias ldap_modifyW ldap_modify; + alias ldap_modify_extW ldap_modify_ext; + alias ldap_modify_sW ldap_modify_s; + alias ldap_modify_ext_sW ldap_modify_ext_s; + alias ldap_check_filterW ldap_check_filter; + alias ldap_count_valuesW ldap_count_values; + alias ldap_create_page_controlW ldap_create_page_control; + alias ldap_create_sort_controlW ldap_create_sort_control; + alias ldap_create_vlv_controlW ldap_create_vlv_control; + alias ldap_encode_sort_controlW ldap_encode_sort_control; + alias ldap_escape_filter_elementW ldap_escape_filter_element; + alias ldap_first_attributeW ldap_first_attribute; + alias ldap_next_attributeW ldap_next_attribute; + alias ldap_get_valuesW ldap_get_values; + alias ldap_get_values_lenW ldap_get_values_len; + alias ldap_parse_extended_resultW ldap_parse_extended_result; + alias ldap_parse_page_controlW ldap_parse_page_control; + alias ldap_parse_referenceW ldap_parse_reference; + alias ldap_parse_resultW ldap_parse_result; + alias ldap_parse_sort_controlW ldap_parse_sort_control; + alias ldap_parse_vlv_controlW ldap_parse_vlv_control; + alias ldap_searchW ldap_search; + alias ldap_search_sW ldap_search_s; + alias ldap_search_stW ldap_search_st; + alias ldap_search_extW ldap_search_ext; + alias ldap_search_ext_sW ldap_search_ext_s; + alias ldap_search_init_pageW ldap_search_init_page; + alias ldap_err2stringW ldap_err2string; + alias ldap_control_freeW ldap_control_free; + alias ldap_controls_freeW ldap_controls_free; + alias ldap_free_controlsW ldap_free_controls; + alias ldap_memfreeW ldap_memfree; + alias ldap_value_freeW ldap_value_free; + alias ldap_dn2ufnW ldap_dn2ufn; + alias ldap_ufn2dnW ldap_ufn2dn; + alias ldap_explode_dnW ldap_explode_dn; + alias ldap_get_dnW ldap_get_dn; + alias ldap_rename_extW ldap_rename; + alias ldap_rename_ext_sW ldap_rename_s; + alias ldap_rename_extW ldap_rename_ext; + alias ldap_rename_ext_sW ldap_rename_ext_s; + deprecated { + alias ldap_bindW ldap_bind; + alias ldap_bind_sW ldap_bind_s; + alias ldap_modrdnW ldap_modrdn; + alias ldap_modrdn_sW ldap_modrdn_s; + alias ldap_modrdn2W ldap_modrdn2; + alias ldap_modrdn2_sW ldap_modrdn2_s; + } +} else { + alias LDAPControlA LDAPControl; + alias PLDAPControlA PLDAPControl; + alias LDAPModA LDAPMod; + alias LDAPModA PLDAPMod; + alias LDAPSortKeyA LDAPSortKey; + alias PLDAPSortKeyA PLDAPSortKey; + alias LDAPAPIInfoA LDAPAPIInfo; + alias PLDAPAPIInfoA PLDAPAPIInfo; + alias LDAPAPIFeatureInfoA LDAPAPIFeatureInfo; + alias PLDAPAPIFeatureInfoA PLDAPAPIFeatureInfo; + alias cldap_openA cldap_open; + alias ldap_openA ldap_open; + alias ldap_simple_bindA ldap_simple_bind; + alias ldap_simple_bind_sA ldap_simple_bind_s; + alias ldap_sasl_bindA ldap_sasl_bind; + alias ldap_sasl_bind_sA ldap_sasl_bind_s; + alias ldap_initA ldap_init; + alias ldap_sslinitA ldap_sslinit; + alias ldap_get_optionA ldap_get_option; + alias ldap_set_optionA ldap_set_option; + alias ldap_start_tls_sA ldap_start_tls_s; + alias ldap_addA ldap_add; + alias ldap_add_extA ldap_add_ext; + alias ldap_add_sA ldap_add_s; + alias ldap_add_ext_sA ldap_add_ext_s; + alias ldap_compareA ldap_compare; + alias ldap_compare_extA ldap_compare_ext; + alias ldap_compare_sA ldap_compare_s; + alias ldap_compare_ext_sA ldap_compare_ext_s; + alias ldap_deleteA ldap_delete; + alias ldap_delete_extA ldap_delete_ext; + alias ldap_delete_sA ldap_delete_s; + alias ldap_delete_ext_sA ldap_delete_ext_s; + alias ldap_extended_operation_sA ldap_extended_operation_s; + alias ldap_extended_operationA ldap_extended_operation; + alias ldap_modifyA ldap_modify; + alias ldap_modify_extA ldap_modify_ext; + alias ldap_modify_sA ldap_modify_s; + alias ldap_modify_ext_sA ldap_modify_ext_s; + alias ldap_check_filterA ldap_check_filter; + alias ldap_count_valuesA ldap_count_values; + alias ldap_create_page_controlA ldap_create_page_control; + alias ldap_create_sort_controlA ldap_create_sort_control; + alias ldap_create_vlv_controlA ldap_create_vlv_control; + alias ldap_encode_sort_controlA ldap_encode_sort_control; + alias ldap_escape_filter_elementA ldap_escape_filter_element; + alias ldap_first_attributeA ldap_first_attribute; + alias ldap_next_attributeA ldap_next_attribute; + alias ldap_get_valuesA ldap_get_values; + alias ldap_get_values_lenA ldap_get_values_len; + alias ldap_parse_extended_resultA ldap_parse_extended_result; + alias ldap_parse_page_controlA ldap_parse_page_control; + alias ldap_parse_referenceA ldap_parse_reference; + alias ldap_parse_resultA ldap_parse_result; + alias ldap_parse_sort_controlA ldap_parse_sort_control; + alias ldap_parse_vlv_controlA ldap_parse_vlv_control; + alias ldap_searchA ldap_search; + alias ldap_search_sA ldap_search_s; + alias ldap_search_stA ldap_search_st; + alias ldap_search_extA ldap_search_ext; + alias ldap_search_ext_sA ldap_search_ext_s; + alias ldap_search_init_pageA ldap_search_init_page; + alias ldap_err2stringA ldap_err2string; + alias ldap_control_freeA ldap_control_free; + alias ldap_controls_freeA ldap_controls_free; + alias ldap_free_controlsA ldap_free_controls; + alias ldap_memfreeA ldap_memfree; + alias ldap_value_freeA ldap_value_free; + alias ldap_dn2ufnA ldap_dn2ufn; + alias ldap_ufn2dnA ldap_ufn2dn; + alias ldap_explode_dnA ldap_explode_dn; + alias ldap_get_dnA ldap_get_dn; + alias ldap_rename_extA ldap_rename; + alias ldap_rename_ext_sA ldap_rename_s; + alias ldap_rename_extA ldap_rename_ext; + alias ldap_rename_ext_sA ldap_rename_ext_s; + deprecated { + alias ldap_bindA ldap_bind; + alias ldap_bind_sA ldap_bind_s; + alias ldap_modrdnA ldap_modrdn; + alias ldap_modrdn_sA ldap_modrdn_s; + alias ldap_modrdn2A ldap_modrdn2; + alias ldap_modrdn2_sA ldap_modrdn2_s; + } +} diff --git a/src/core/sys/windows/winnetwk.d b/src/core/sys/windows/winnetwk.d index 5f368acc0e..159b334ff6 100644 --- a/src/core/sys/windows/winnetwk.d +++ b/src/core/sys/windows/winnetwk.d @@ -1,437 +1,437 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winnetwk.d) - */ -module core.sys.windows.winnetwk; -pragma(lib, "mpr"); - -private import core.sys.windows.winbase, core.sys.windows.winerror, core.sys.windows.winnt; - -enum : DWORD { - WNNC_NET_MSNET = 0x00010000, - WNNC_NET_LANMAN = 0x00020000, - WNNC_NET_NETWARE = 0x00030000, - WNNC_NET_VINES = 0x00040000, - WNNC_NET_10NET = 0x00050000, - WNNC_NET_LOCUS = 0x00060000, - WNNC_NET_SUN_PC_NFS = 0x00070000, - WNNC_NET_LANSTEP = 0x00080000, - WNNC_NET_9TILES = 0x00090000, - WNNC_NET_LANTASTIC = 0x000A0000, - WNNC_NET_AS400 = 0x000B0000, - WNNC_NET_FTP_NFS = 0x000C0000, - WNNC_NET_PATHWORKS = 0x000D0000, - WNNC_NET_LIFENET = 0x000E0000, - WNNC_NET_POWERLAN = 0x000F0000, - WNNC_NET_BWNFS = 0x00100000, - WNNC_NET_COGENT = 0x00110000, - WNNC_NET_FARALLON = 0x00120000, - WNNC_NET_APPLETALK = 0x00130000, - WNNC_NET_INTERGRAPH = 0x00140000, - WNNC_NET_SYMFONET = 0x00150000, - WNNC_NET_CLEARCASE = 0x00160000, - WNNC_NET_FRONTIER = 0x00170000, - WNNC_NET_BMC = 0x00180000, - WNNC_NET_DCE = 0x00190000, - WNNC_NET_AVID = 0x001A0000, - WNNC_NET_DOCUSPACE = 0x001B0000, - WNNC_NET_MANGOSOFT = 0x001C0000, - WNNC_NET_SERNET = 0x001D0000, - WNNC_NET_DECORB = 0x00200000, - WNNC_NET_PROTSTOR = 0x00210000, - WNNC_NET_FJ_REDIR = 0x00220000, - WNNC_NET_DISTINCT = 0x00230000, - WNNC_NET_TWINS = 0x00240000, - WNNC_NET_RDR2SAMPLE = 0x00250000, - WNNC_NET_CSC = 0x00260000, - WNNC_NET_3IN1 = 0x00270000, - WNNC_NET_EXTENDNET = 0x00290000, - WNNC_NET_OBJECT_DIRE = 0x00300000, - WNNC_NET_MASFAX = 0x00310000, - WNNC_NET_HOB_NFS = 0x00320000, - WNNC_NET_SHIVA = 0x00330000, - WNNC_NET_IBMAL = 0x00340000, - WNNC_CRED_MANAGER = 0xFFFF0000 -} - -enum : DWORD { - RESOURCE_CONNECTED = 1, - RESOURCE_GLOBALNET = 2, - RESOURCE_REMEMBERED = 3, - RESOURCE_RECENT = 4, - RESOURCE_CONTEXT = 5 -} - -const DWORD - RESOURCETYPE_ANY = 0, - RESOURCETYPE_DISK = 1, - RESOURCETYPE_PRINT = 2, - RESOURCETYPE_RESERVED = 8, - RESOURCETYPE_UNKNOWN = 0xFFFFFFFF; - -const DWORD - RESOURCEUSAGE_CONNECTABLE = 0x00000001, - RESOURCEUSAGE_CONTAINER = 0x00000002, - RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004, - RESOURCEUSAGE_SIBLING = 0x00000008, - RESOURCEUSAGE_ATTACHED = 0x00000010, - RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE - | RESOURCEUSAGE_CONTAINER - | RESOURCEUSAGE_ATTACHED), - RESOURCEUSAGE_RESERVED = 0x80000000; - -enum : DWORD { - RESOURCEDISPLAYTYPE_GENERIC, - RESOURCEDISPLAYTYPE_DOMAIN, - RESOURCEDISPLAYTYPE_SERVER, - RESOURCEDISPLAYTYPE_SHARE, - RESOURCEDISPLAYTYPE_FILE, - RESOURCEDISPLAYTYPE_GROUP, - RESOURCEDISPLAYTYPE_NETWORK, - RESOURCEDISPLAYTYPE_ROOT, - RESOURCEDISPLAYTYPE_SHAREADMIN, - RESOURCEDISPLAYTYPE_DIRECTORY, - RESOURCEDISPLAYTYPE_TREE // = 10 -} - -const NETPROPERTY_PERSISTENT = 1; - -const DWORD - CONNECT_UPDATE_PROFILE = 1, - CONNECT_UPDATE_RECENT = 2, - CONNECT_TEMPORARY = 4, - CONNECT_INTERACTIVE = 8, - CONNECT_PROMPT = 16, - CONNECT_NEED_DRIVE = 32, - CONNECT_REFCOUNT = 64, - CONNECT_REDIRECT = 128, - CONNECT_LOCALDRIVE = 256, - CONNECT_CURRENT_MEDIA = 512; - -const DWORD - CONNDLG_RO_PATH = 1, - CONNDLG_CONN_POINT = 2, - CONNDLG_USE_MRU = 4, - CONNDLG_HIDE_BOX = 8, - CONNDLG_PERSIST = 16, - CONNDLG_NOT_PERSIST = 32; - -const DWORD - DISC_UPDATE_PROFILE = 1, - DISC_NO_FORCE = 64; - -const DWORD - WNFMT_MULTILINE = 1, - WNFMT_ABBREVIATED = 2, - WNFMT_INENUM = 16, - WNFMT_CONNECTION = 32; - -enum : DWORD { - WN_SUCCESS = NO_ERROR, - WN_NO_ERROR = NO_ERROR, - WN_NOT_SUPPORTED = ERROR_NOT_SUPPORTED, - WN_CANCEL = ERROR_CANCELLED, - WN_RETRY = ERROR_RETRY, - WN_NET_ERROR = ERROR_UNEXP_NET_ERR, - WN_MORE_DATA = ERROR_MORE_DATA, - WN_BAD_POINTER = ERROR_INVALID_ADDRESS, - WN_BAD_VALUE = ERROR_INVALID_PARAMETER, - WN_BAD_USER = ERROR_BAD_USERNAME, - WN_BAD_PASSWORD = ERROR_INVALID_PASSWORD, - WN_ACCESS_DENIED = ERROR_ACCESS_DENIED, - WN_FUNCTION_BUSY = ERROR_BUSY, - WN_WINDOWS_ERROR = ERROR_UNEXP_NET_ERR, - WN_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_MEMORY, - WN_NO_NETWORK = ERROR_NO_NETWORK, - WN_EXTENDED_ERROR = ERROR_EXTENDED_ERROR, - WN_BAD_LEVEL = ERROR_INVALID_LEVEL, - WN_BAD_HANDLE = ERROR_INVALID_HANDLE, - WN_NOT_INITIALIZING = ERROR_ALREADY_INITIALIZED, - WN_NO_MORE_DEVICES = ERROR_NO_MORE_DEVICES, - WN_NOT_CONNECTED = ERROR_NOT_CONNECTED, - WN_OPEN_FILES = ERROR_OPEN_FILES, - WN_DEVICE_IN_USE = ERROR_DEVICE_IN_USE, - WN_BAD_NETNAME = ERROR_BAD_NET_NAME, - WN_BAD_LOCALNAME = ERROR_BAD_DEVICE, - WN_ALREADY_CONNECTED = ERROR_ALREADY_ASSIGNED, - WN_DEVICE_ERROR = ERROR_GEN_FAILURE, - WN_CONNECTION_CLOSED = ERROR_CONNECTION_UNAVAIL, - WN_NO_NET_OR_BAD_PATH = ERROR_NO_NET_OR_BAD_PATH, - WN_BAD_PROVIDER = ERROR_BAD_PROVIDER, - WN_CANNOT_OPEN_PROFILE = ERROR_CANNOT_OPEN_PROFILE, - WN_BAD_PROFILE = ERROR_BAD_PROFILE, - WN_BAD_DEV_TYPE = ERROR_BAD_DEV_TYPE, - WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED, - WN_NO_MORE_ENTRIES = ERROR_NO_MORE_ITEMS, - WN_NOT_CONTAINER = ERROR_NOT_CONTAINER, - WN_NOT_AUTHENTICATED = ERROR_NOT_AUTHENTICATED, - WN_NOT_LOGGED_ON = ERROR_NOT_LOGGED_ON, - WN_NOT_VALIDATED = ERROR_NO_LOGON_SERVERS -} - -enum : DWORD { - UNIVERSAL_NAME_INFO_LEVEL = 1, - REMOTE_NAME_INFO_LEVEL -} - -const DWORD - NETINFO_DLL16 = 1, - NETINFO_DISKRED = 4, - NETINFO_PRINTERRED = 8; - -const DWORD - RP_LOGON = 1, - RP_INIFILE = 2; - -const DWORD PP_DISPLAYERRORS = 1; - -const DWORD - WNCON_FORNETCARD = 1, - WNCON_NOTROUTED = 2, - WNCON_SLOWLINK = 4, - WNCON_DYNAMIC = 8; - -struct NETRESOURCEA { - DWORD dwScope; - DWORD dwType; - DWORD dwDisplayType; - DWORD dwUsage; - LPSTR lpLocalName; - LPSTR lpRemoteName; - LPSTR lpComment; - LPSTR lpProvider; -} -alias NETRESOURCEA* LPNETRESOURCEA; - -struct NETRESOURCEW { - DWORD dwScope; - DWORD dwType; - DWORD dwDisplayType; - DWORD dwUsage; - LPWSTR lpLocalName; - LPWSTR lpRemoteName; - LPWSTR lpComment ; - LPWSTR lpProvider; -} -alias NETRESOURCEW* LPNETRESOURCEW; - -struct CONNECTDLGSTRUCTA { - DWORD cbStructure; - HWND hwndOwner; - LPNETRESOURCEA lpConnRes; - DWORD dwFlags; - DWORD dwDevNum; -} -alias CONNECTDLGSTRUCTA* LPCONNECTDLGSTRUCTA; - -struct CONNECTDLGSTRUCTW { - DWORD cbStructure; - HWND hwndOwner; - LPNETRESOURCEW lpConnRes; - DWORD dwFlags; - DWORD dwDevNum; -} -alias CONNECTDLGSTRUCTW* LPCONNECTDLGSTRUCTW; - -struct DISCDLGSTRUCTA { - DWORD cbStructure; - HWND hwndOwner; - LPSTR lpLocalName; - LPSTR lpRemoteName; - DWORD dwFlags; -} -alias DISCDLGSTRUCTA* LPDISCDLGSTRUCTA; - -struct DISCDLGSTRUCTW { - DWORD cbStructure; - HWND hwndOwner; - LPWSTR lpLocalName; - LPWSTR lpRemoteName; - DWORD dwFlags; -} -alias DISCDLGSTRUCTW* LPDISCDLGSTRUCTW; - -struct UNIVERSAL_NAME_INFOA { - LPSTR lpUniversalName; -} -alias UNIVERSAL_NAME_INFOA* LPUNIVERSAL_NAME_INFOA; - -struct UNIVERSAL_NAME_INFOW { - LPWSTR lpUniversalName; -} -alias UNIVERSAL_NAME_INFOW* LPUNIVERSAL_NAME_INFOW; - -struct REMOTE_NAME_INFOA { - LPSTR lpUniversalName; - LPSTR lpConnectionName; - LPSTR lpRemainingPath; -} -alias REMOTE_NAME_INFOA* LPREMOTE_NAME_INFOA; - -struct REMOTE_NAME_INFOW { - LPWSTR lpUniversalName; - LPWSTR lpConnectionName; - LPWSTR lpRemainingPath; -} -alias REMOTE_NAME_INFOW* LPREMOTE_NAME_INFOW; - -struct NETINFOSTRUCT { - DWORD cbStructure; - DWORD dwProviderVersion; - DWORD dwStatus; - DWORD dwCharacteristics; - DWORD dwHandle; - WORD wNetType; - DWORD dwPrinters; - DWORD dwDrives; -} -alias NETINFOSTRUCT* LPNETINFOSTRUCT; - -extern (Pascal) { - alias UINT function(LPCSTR, LPSTR, UINT) PFNGETPROFILEPATHA; - alias UINT function(LPCWSTR, LPWSTR, UINT) PFNGETPROFILEPATHW; - alias UINT function(LPCSTR, LPCSTR, DWORD) PFNRECONCILEPROFILEA; - alias UINT function(LPCWSTR, LPCWSTR, DWORD) PFNRECONCILEPROFILEW; - alias BOOL function(HWND, LPCSTR, LPCSTR, LPCSTR, DWORD) - PFNPROCESSPOLICIESA; - alias BOOL function(HWND, LPCWSTR, LPCWSTR, LPCWSTR, DWORD) - PFNPROCESSPOLICIESW; -} - -struct NETCONNECTINFOSTRUCT { - DWORD cbStructure; - DWORD dwFlags; - DWORD dwSpeed; - DWORD dwDelay; - DWORD dwOptDataSize; -} -alias NETCONNECTINFOSTRUCT* LPNETCONNECTINFOSTRUCT; - -extern (Windows) { - DWORD WNetAddConnection2A(LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); - DWORD WNetAddConnection2W(LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); - DWORD WNetAddConnection3A(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); - DWORD WNetAddConnection3W(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); - DWORD WNetCancelConnection2A(LPCSTR, DWORD, BOOL); - DWORD WNetCancelConnection2W(LPCWSTR, DWORD, BOOL); - DWORD WNetGetConnectionA(LPCSTR, LPSTR, PDWORD); - DWORD WNetGetConnectionW(LPCWSTR, LPWSTR, PDWORD); - DWORD WNetUseConnectionA(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD, - LPSTR, PDWORD, PDWORD); - DWORD WNetUseConnectionW(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD, - LPWSTR, PDWORD, PDWORD); - DWORD WNetSetConnectionA(LPCSTR, DWORD, PVOID); - DWORD WNetSetConnectionW(LPCWSTR, DWORD, PVOID); - DWORD WNetConnectionDialog(HWND, DWORD); - DWORD WNetDisconnectDialog(HWND, DWORD); - DWORD WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA); - DWORD WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW); - DWORD WNetDisconnectDialog1A(LPDISCDLGSTRUCTA); - DWORD WNetDisconnectDialog1W(LPDISCDLGSTRUCTW); - DWORD WNetOpenEnumA(DWORD, DWORD, DWORD, LPNETRESOURCEA, LPHANDLE); - DWORD WNetOpenEnumW(DWORD, DWORD, DWORD, LPNETRESOURCEW, LPHANDLE); - DWORD WNetEnumResourceA(HANDLE, PDWORD, PVOID, PDWORD); - DWORD WNetEnumResourceW(HANDLE, PDWORD, PVOID, PDWORD); - DWORD WNetCloseEnum(HANDLE); - DWORD WNetGetUniversalNameA(LPCSTR, DWORD, PVOID, PDWORD); - DWORD WNetGetUniversalNameW(LPCWSTR, DWORD, PVOID, PDWORD); - DWORD WNetGetUserA(LPCSTR, LPSTR, PDWORD); - DWORD WNetGetUserW(LPCWSTR, LPWSTR, PDWORD); - DWORD WNetGetProviderNameA(DWORD, LPSTR, PDWORD); - DWORD WNetGetProviderNameW(DWORD, LPWSTR, PDWORD); - DWORD WNetGetNetworkInformationA(LPCSTR, LPNETINFOSTRUCT); - DWORD WNetGetNetworkInformationW(LPCWSTR, LPNETINFOSTRUCT); - DWORD WNetGetResourceInformationA(LPNETRESOURCEA, LPVOID, LPDWORD, - LPSTR*); - DWORD WNetGetResourceInformationW(LPNETRESOURCEA, LPVOID, LPDWORD, - LPWSTR*); - DWORD WNetGetResourceParentA(LPNETRESOURCEA, LPVOID, LPDWORD); - DWORD WNetGetResourceParentW(LPNETRESOURCEW, LPVOID, LPDWORD); - DWORD WNetGetLastErrorA(PDWORD, LPSTR, DWORD, LPSTR, DWORD); - DWORD WNetGetLastErrorW(PDWORD, LPWSTR, DWORD, LPWSTR, DWORD); - DWORD MultinetGetConnectionPerformanceA(LPNETRESOURCEA, - LPNETCONNECTINFOSTRUCT); - DWORD MultinetGetConnectionPerformanceW(LPNETRESOURCEW, - LPNETCONNECTINFOSTRUCT); - deprecated { - DWORD WNetAddConnectionA(LPCSTR, LPCSTR, LPCSTR); - DWORD WNetAddConnectionW(LPCWSTR, LPCWSTR, LPCWSTR); - DWORD WNetCancelConnectionA(LPCSTR, BOOL); - DWORD WNetCancelConnectionW(LPCWSTR, BOOL); - } -} - -version (Unicode) { - alias PFNGETPROFILEPATHW PFNGETPROFILEPATH; - alias PFNRECONCILEPROFILEW PFNRECONCILEPROFILE; - alias PFNPROCESSPOLICIESW PFNPROCESSPOLICIES; - alias NETRESOURCEW NETRESOURCE; - alias CONNECTDLGSTRUCTW CONNECTDLGSTRUCT; - alias DISCDLGSTRUCTW DISCDLGSTRUCT; - alias REMOTE_NAME_INFOW REMOTE_NAME_INFO; - alias UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO; - alias WNetAddConnection2W WNetAddConnection2; - alias WNetAddConnection3W WNetAddConnection3; - alias WNetCancelConnection2W WNetCancelConnection2; - alias WNetGetConnectionW WNetGetConnection; - alias WNetUseConnectionW WNetUseConnection; - alias WNetSetConnectionW WNetSetConnection; - alias WNetConnectionDialog1W WNetConnectionDialog1; - alias WNetDisconnectDialog1W WNetDisconnectDialog1; - alias WNetOpenEnumW WNetOpenEnum; - alias WNetEnumResourceW WNetEnumResource; - alias WNetGetUniversalNameW WNetGetUniversalName; - alias WNetGetUserW WNetGetUser; - alias WNetGetProviderNameW WNetGetProviderName; - alias WNetGetNetworkInformationW WNetGetNetworkInformation; - alias WNetGetResourceInformationW WNetGetResourceInformation; - alias WNetGetResourceParentW WNetGetResourceParent; - alias WNetGetLastErrorW WNetGetLastError; - alias MultinetGetConnectionPerformanceW MultinetGetConnectionPerformance; - deprecated { - alias WNetAddConnectionW WNetAddConnection; - alias WNetCancelConnectionW WNetCancelConnection; - } -} else { - alias PFNGETPROFILEPATHA PFNGETPROFILEPATH; - alias PFNRECONCILEPROFILEA PFNRECONCILEPROFILE; - alias PFNPROCESSPOLICIESA PFNPROCESSPOLICIES; - alias NETRESOURCEA NETRESOURCE; - alias CONNECTDLGSTRUCTA CONNECTDLGSTRUCT; - alias DISCDLGSTRUCTA DISCDLGSTRUCT; - alias REMOTE_NAME_INFOA REMOTE_NAME_INFO; - alias UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO; - alias WNetAddConnection2A WNetAddConnection2; - alias WNetAddConnection3A WNetAddConnection3; - alias WNetCancelConnection2A WNetCancelConnection2; - alias WNetGetConnectionA WNetGetConnection; - alias WNetUseConnectionA WNetUseConnection; - alias WNetSetConnectionA WNetSetConnection; - alias WNetConnectionDialog1A WNetConnectionDialog1; - alias WNetDisconnectDialog1A WNetDisconnectDialog1; - alias WNetOpenEnumA WNetOpenEnum; - alias WNetEnumResourceA WNetEnumResource; - alias WNetGetUniversalNameA WNetGetUniversalName; - alias WNetGetUserA WNetGetUser; - alias WNetGetProviderNameA WNetGetProviderName; - alias WNetGetNetworkInformationA WNetGetNetworkInformation; - alias WNetGetResourceInformationA WNetGetResourceInformation; - alias WNetGetResourceParentA WNetGetResourceParent; - alias WNetGetLastErrorA WNetGetLastError; - alias MultinetGetConnectionPerformanceA MultinetGetConnectionPerformance; - deprecated { - alias WNetAddConnectionA WNetAddConnection; - alias WNetCancelConnectionA WNetCancelConnection; - } -} - -alias NETRESOURCE* LPNETRESOURCE; -alias CONNECTDLGSTRUCT* LPCONNECTDLGSTRUCT; -alias DISCDLGSTRUCT* LPDISCDLGSTRUCT; -alias REMOTE_NAME_INFO* LPREMOTE_NAME_INFO; -alias UNIVERSAL_NAME_INFO* LPUNIVERSAL_NAME_INFO; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winnetwk.d) + */ +module core.sys.windows.winnetwk; +pragma(lib, "mpr"); + +private import core.sys.windows.winbase, core.sys.windows.winerror, core.sys.windows.winnt; + +enum : DWORD { + WNNC_NET_MSNET = 0x00010000, + WNNC_NET_LANMAN = 0x00020000, + WNNC_NET_NETWARE = 0x00030000, + WNNC_NET_VINES = 0x00040000, + WNNC_NET_10NET = 0x00050000, + WNNC_NET_LOCUS = 0x00060000, + WNNC_NET_SUN_PC_NFS = 0x00070000, + WNNC_NET_LANSTEP = 0x00080000, + WNNC_NET_9TILES = 0x00090000, + WNNC_NET_LANTASTIC = 0x000A0000, + WNNC_NET_AS400 = 0x000B0000, + WNNC_NET_FTP_NFS = 0x000C0000, + WNNC_NET_PATHWORKS = 0x000D0000, + WNNC_NET_LIFENET = 0x000E0000, + WNNC_NET_POWERLAN = 0x000F0000, + WNNC_NET_BWNFS = 0x00100000, + WNNC_NET_COGENT = 0x00110000, + WNNC_NET_FARALLON = 0x00120000, + WNNC_NET_APPLETALK = 0x00130000, + WNNC_NET_INTERGRAPH = 0x00140000, + WNNC_NET_SYMFONET = 0x00150000, + WNNC_NET_CLEARCASE = 0x00160000, + WNNC_NET_FRONTIER = 0x00170000, + WNNC_NET_BMC = 0x00180000, + WNNC_NET_DCE = 0x00190000, + WNNC_NET_AVID = 0x001A0000, + WNNC_NET_DOCUSPACE = 0x001B0000, + WNNC_NET_MANGOSOFT = 0x001C0000, + WNNC_NET_SERNET = 0x001D0000, + WNNC_NET_DECORB = 0x00200000, + WNNC_NET_PROTSTOR = 0x00210000, + WNNC_NET_FJ_REDIR = 0x00220000, + WNNC_NET_DISTINCT = 0x00230000, + WNNC_NET_TWINS = 0x00240000, + WNNC_NET_RDR2SAMPLE = 0x00250000, + WNNC_NET_CSC = 0x00260000, + WNNC_NET_3IN1 = 0x00270000, + WNNC_NET_EXTENDNET = 0x00290000, + WNNC_NET_OBJECT_DIRE = 0x00300000, + WNNC_NET_MASFAX = 0x00310000, + WNNC_NET_HOB_NFS = 0x00320000, + WNNC_NET_SHIVA = 0x00330000, + WNNC_NET_IBMAL = 0x00340000, + WNNC_CRED_MANAGER = 0xFFFF0000 +} + +enum : DWORD { + RESOURCE_CONNECTED = 1, + RESOURCE_GLOBALNET = 2, + RESOURCE_REMEMBERED = 3, + RESOURCE_RECENT = 4, + RESOURCE_CONTEXT = 5 +} + +const DWORD + RESOURCETYPE_ANY = 0, + RESOURCETYPE_DISK = 1, + RESOURCETYPE_PRINT = 2, + RESOURCETYPE_RESERVED = 8, + RESOURCETYPE_UNKNOWN = 0xFFFFFFFF; + +const DWORD + RESOURCEUSAGE_CONNECTABLE = 0x00000001, + RESOURCEUSAGE_CONTAINER = 0x00000002, + RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004, + RESOURCEUSAGE_SIBLING = 0x00000008, + RESOURCEUSAGE_ATTACHED = 0x00000010, + RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE + | RESOURCEUSAGE_CONTAINER + | RESOURCEUSAGE_ATTACHED), + RESOURCEUSAGE_RESERVED = 0x80000000; + +enum : DWORD { + RESOURCEDISPLAYTYPE_GENERIC, + RESOURCEDISPLAYTYPE_DOMAIN, + RESOURCEDISPLAYTYPE_SERVER, + RESOURCEDISPLAYTYPE_SHARE, + RESOURCEDISPLAYTYPE_FILE, + RESOURCEDISPLAYTYPE_GROUP, + RESOURCEDISPLAYTYPE_NETWORK, + RESOURCEDISPLAYTYPE_ROOT, + RESOURCEDISPLAYTYPE_SHAREADMIN, + RESOURCEDISPLAYTYPE_DIRECTORY, + RESOURCEDISPLAYTYPE_TREE // = 10 +} + +const NETPROPERTY_PERSISTENT = 1; + +const DWORD + CONNECT_UPDATE_PROFILE = 1, + CONNECT_UPDATE_RECENT = 2, + CONNECT_TEMPORARY = 4, + CONNECT_INTERACTIVE = 8, + CONNECT_PROMPT = 16, + CONNECT_NEED_DRIVE = 32, + CONNECT_REFCOUNT = 64, + CONNECT_REDIRECT = 128, + CONNECT_LOCALDRIVE = 256, + CONNECT_CURRENT_MEDIA = 512; + +const DWORD + CONNDLG_RO_PATH = 1, + CONNDLG_CONN_POINT = 2, + CONNDLG_USE_MRU = 4, + CONNDLG_HIDE_BOX = 8, + CONNDLG_PERSIST = 16, + CONNDLG_NOT_PERSIST = 32; + +const DWORD + DISC_UPDATE_PROFILE = 1, + DISC_NO_FORCE = 64; + +const DWORD + WNFMT_MULTILINE = 1, + WNFMT_ABBREVIATED = 2, + WNFMT_INENUM = 16, + WNFMT_CONNECTION = 32; + +enum : DWORD { + WN_SUCCESS = NO_ERROR, + WN_NO_ERROR = NO_ERROR, + WN_NOT_SUPPORTED = ERROR_NOT_SUPPORTED, + WN_CANCEL = ERROR_CANCELLED, + WN_RETRY = ERROR_RETRY, + WN_NET_ERROR = ERROR_UNEXP_NET_ERR, + WN_MORE_DATA = ERROR_MORE_DATA, + WN_BAD_POINTER = ERROR_INVALID_ADDRESS, + WN_BAD_VALUE = ERROR_INVALID_PARAMETER, + WN_BAD_USER = ERROR_BAD_USERNAME, + WN_BAD_PASSWORD = ERROR_INVALID_PASSWORD, + WN_ACCESS_DENIED = ERROR_ACCESS_DENIED, + WN_FUNCTION_BUSY = ERROR_BUSY, + WN_WINDOWS_ERROR = ERROR_UNEXP_NET_ERR, + WN_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_MEMORY, + WN_NO_NETWORK = ERROR_NO_NETWORK, + WN_EXTENDED_ERROR = ERROR_EXTENDED_ERROR, + WN_BAD_LEVEL = ERROR_INVALID_LEVEL, + WN_BAD_HANDLE = ERROR_INVALID_HANDLE, + WN_NOT_INITIALIZING = ERROR_ALREADY_INITIALIZED, + WN_NO_MORE_DEVICES = ERROR_NO_MORE_DEVICES, + WN_NOT_CONNECTED = ERROR_NOT_CONNECTED, + WN_OPEN_FILES = ERROR_OPEN_FILES, + WN_DEVICE_IN_USE = ERROR_DEVICE_IN_USE, + WN_BAD_NETNAME = ERROR_BAD_NET_NAME, + WN_BAD_LOCALNAME = ERROR_BAD_DEVICE, + WN_ALREADY_CONNECTED = ERROR_ALREADY_ASSIGNED, + WN_DEVICE_ERROR = ERROR_GEN_FAILURE, + WN_CONNECTION_CLOSED = ERROR_CONNECTION_UNAVAIL, + WN_NO_NET_OR_BAD_PATH = ERROR_NO_NET_OR_BAD_PATH, + WN_BAD_PROVIDER = ERROR_BAD_PROVIDER, + WN_CANNOT_OPEN_PROFILE = ERROR_CANNOT_OPEN_PROFILE, + WN_BAD_PROFILE = ERROR_BAD_PROFILE, + WN_BAD_DEV_TYPE = ERROR_BAD_DEV_TYPE, + WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED, + WN_NO_MORE_ENTRIES = ERROR_NO_MORE_ITEMS, + WN_NOT_CONTAINER = ERROR_NOT_CONTAINER, + WN_NOT_AUTHENTICATED = ERROR_NOT_AUTHENTICATED, + WN_NOT_LOGGED_ON = ERROR_NOT_LOGGED_ON, + WN_NOT_VALIDATED = ERROR_NO_LOGON_SERVERS +} + +enum : DWORD { + UNIVERSAL_NAME_INFO_LEVEL = 1, + REMOTE_NAME_INFO_LEVEL +} + +const DWORD + NETINFO_DLL16 = 1, + NETINFO_DISKRED = 4, + NETINFO_PRINTERRED = 8; + +const DWORD + RP_LOGON = 1, + RP_INIFILE = 2; + +const DWORD PP_DISPLAYERRORS = 1; + +const DWORD + WNCON_FORNETCARD = 1, + WNCON_NOTROUTED = 2, + WNCON_SLOWLINK = 4, + WNCON_DYNAMIC = 8; + +struct NETRESOURCEA { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPSTR lpLocalName; + LPSTR lpRemoteName; + LPSTR lpComment; + LPSTR lpProvider; +} +alias NETRESOURCEA* LPNETRESOURCEA; + +struct NETRESOURCEW { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + LPWSTR lpComment ; + LPWSTR lpProvider; +} +alias NETRESOURCEW* LPNETRESOURCEW; + +struct CONNECTDLGSTRUCTA { + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEA lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; +} +alias CONNECTDLGSTRUCTA* LPCONNECTDLGSTRUCTA; + +struct CONNECTDLGSTRUCTW { + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEW lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; +} +alias CONNECTDLGSTRUCTW* LPCONNECTDLGSTRUCTW; + +struct DISCDLGSTRUCTA { + DWORD cbStructure; + HWND hwndOwner; + LPSTR lpLocalName; + LPSTR lpRemoteName; + DWORD dwFlags; +} +alias DISCDLGSTRUCTA* LPDISCDLGSTRUCTA; + +struct DISCDLGSTRUCTW { + DWORD cbStructure; + HWND hwndOwner; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + DWORD dwFlags; +} +alias DISCDLGSTRUCTW* LPDISCDLGSTRUCTW; + +struct UNIVERSAL_NAME_INFOA { + LPSTR lpUniversalName; +} +alias UNIVERSAL_NAME_INFOA* LPUNIVERSAL_NAME_INFOA; + +struct UNIVERSAL_NAME_INFOW { + LPWSTR lpUniversalName; +} +alias UNIVERSAL_NAME_INFOW* LPUNIVERSAL_NAME_INFOW; + +struct REMOTE_NAME_INFOA { + LPSTR lpUniversalName; + LPSTR lpConnectionName; + LPSTR lpRemainingPath; +} +alias REMOTE_NAME_INFOA* LPREMOTE_NAME_INFOA; + +struct REMOTE_NAME_INFOW { + LPWSTR lpUniversalName; + LPWSTR lpConnectionName; + LPWSTR lpRemainingPath; +} +alias REMOTE_NAME_INFOW* LPREMOTE_NAME_INFOW; + +struct NETINFOSTRUCT { + DWORD cbStructure; + DWORD dwProviderVersion; + DWORD dwStatus; + DWORD dwCharacteristics; + DWORD dwHandle; + WORD wNetType; + DWORD dwPrinters; + DWORD dwDrives; +} +alias NETINFOSTRUCT* LPNETINFOSTRUCT; + +extern (Pascal) { + alias UINT function(LPCSTR, LPSTR, UINT) PFNGETPROFILEPATHA; + alias UINT function(LPCWSTR, LPWSTR, UINT) PFNGETPROFILEPATHW; + alias UINT function(LPCSTR, LPCSTR, DWORD) PFNRECONCILEPROFILEA; + alias UINT function(LPCWSTR, LPCWSTR, DWORD) PFNRECONCILEPROFILEW; + alias BOOL function(HWND, LPCSTR, LPCSTR, LPCSTR, DWORD) + PFNPROCESSPOLICIESA; + alias BOOL function(HWND, LPCWSTR, LPCWSTR, LPCWSTR, DWORD) + PFNPROCESSPOLICIESW; +} + +struct NETCONNECTINFOSTRUCT { + DWORD cbStructure; + DWORD dwFlags; + DWORD dwSpeed; + DWORD dwDelay; + DWORD dwOptDataSize; +} +alias NETCONNECTINFOSTRUCT* LPNETCONNECTINFOSTRUCT; + +extern (Windows) { + DWORD WNetAddConnection2A(LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); + DWORD WNetAddConnection2W(LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); + DWORD WNetAddConnection3A(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); + DWORD WNetAddConnection3W(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); + DWORD WNetCancelConnection2A(LPCSTR, DWORD, BOOL); + DWORD WNetCancelConnection2W(LPCWSTR, DWORD, BOOL); + DWORD WNetGetConnectionA(LPCSTR, LPSTR, PDWORD); + DWORD WNetGetConnectionW(LPCWSTR, LPWSTR, PDWORD); + DWORD WNetUseConnectionA(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD, + LPSTR, PDWORD, PDWORD); + DWORD WNetUseConnectionW(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD, + LPWSTR, PDWORD, PDWORD); + DWORD WNetSetConnectionA(LPCSTR, DWORD, PVOID); + DWORD WNetSetConnectionW(LPCWSTR, DWORD, PVOID); + DWORD WNetConnectionDialog(HWND, DWORD); + DWORD WNetDisconnectDialog(HWND, DWORD); + DWORD WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA); + DWORD WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW); + DWORD WNetDisconnectDialog1A(LPDISCDLGSTRUCTA); + DWORD WNetDisconnectDialog1W(LPDISCDLGSTRUCTW); + DWORD WNetOpenEnumA(DWORD, DWORD, DWORD, LPNETRESOURCEA, LPHANDLE); + DWORD WNetOpenEnumW(DWORD, DWORD, DWORD, LPNETRESOURCEW, LPHANDLE); + DWORD WNetEnumResourceA(HANDLE, PDWORD, PVOID, PDWORD); + DWORD WNetEnumResourceW(HANDLE, PDWORD, PVOID, PDWORD); + DWORD WNetCloseEnum(HANDLE); + DWORD WNetGetUniversalNameA(LPCSTR, DWORD, PVOID, PDWORD); + DWORD WNetGetUniversalNameW(LPCWSTR, DWORD, PVOID, PDWORD); + DWORD WNetGetUserA(LPCSTR, LPSTR, PDWORD); + DWORD WNetGetUserW(LPCWSTR, LPWSTR, PDWORD); + DWORD WNetGetProviderNameA(DWORD, LPSTR, PDWORD); + DWORD WNetGetProviderNameW(DWORD, LPWSTR, PDWORD); + DWORD WNetGetNetworkInformationA(LPCSTR, LPNETINFOSTRUCT); + DWORD WNetGetNetworkInformationW(LPCWSTR, LPNETINFOSTRUCT); + DWORD WNetGetResourceInformationA(LPNETRESOURCEA, LPVOID, LPDWORD, + LPSTR*); + DWORD WNetGetResourceInformationW(LPNETRESOURCEA, LPVOID, LPDWORD, + LPWSTR*); + DWORD WNetGetResourceParentA(LPNETRESOURCEA, LPVOID, LPDWORD); + DWORD WNetGetResourceParentW(LPNETRESOURCEW, LPVOID, LPDWORD); + DWORD WNetGetLastErrorA(PDWORD, LPSTR, DWORD, LPSTR, DWORD); + DWORD WNetGetLastErrorW(PDWORD, LPWSTR, DWORD, LPWSTR, DWORD); + DWORD MultinetGetConnectionPerformanceA(LPNETRESOURCEA, + LPNETCONNECTINFOSTRUCT); + DWORD MultinetGetConnectionPerformanceW(LPNETRESOURCEW, + LPNETCONNECTINFOSTRUCT); + deprecated { + DWORD WNetAddConnectionA(LPCSTR, LPCSTR, LPCSTR); + DWORD WNetAddConnectionW(LPCWSTR, LPCWSTR, LPCWSTR); + DWORD WNetCancelConnectionA(LPCSTR, BOOL); + DWORD WNetCancelConnectionW(LPCWSTR, BOOL); + } +} + +version (Unicode) { + alias PFNGETPROFILEPATHW PFNGETPROFILEPATH; + alias PFNRECONCILEPROFILEW PFNRECONCILEPROFILE; + alias PFNPROCESSPOLICIESW PFNPROCESSPOLICIES; + alias NETRESOURCEW NETRESOURCE; + alias CONNECTDLGSTRUCTW CONNECTDLGSTRUCT; + alias DISCDLGSTRUCTW DISCDLGSTRUCT; + alias REMOTE_NAME_INFOW REMOTE_NAME_INFO; + alias UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO; + alias WNetAddConnection2W WNetAddConnection2; + alias WNetAddConnection3W WNetAddConnection3; + alias WNetCancelConnection2W WNetCancelConnection2; + alias WNetGetConnectionW WNetGetConnection; + alias WNetUseConnectionW WNetUseConnection; + alias WNetSetConnectionW WNetSetConnection; + alias WNetConnectionDialog1W WNetConnectionDialog1; + alias WNetDisconnectDialog1W WNetDisconnectDialog1; + alias WNetOpenEnumW WNetOpenEnum; + alias WNetEnumResourceW WNetEnumResource; + alias WNetGetUniversalNameW WNetGetUniversalName; + alias WNetGetUserW WNetGetUser; + alias WNetGetProviderNameW WNetGetProviderName; + alias WNetGetNetworkInformationW WNetGetNetworkInformation; + alias WNetGetResourceInformationW WNetGetResourceInformation; + alias WNetGetResourceParentW WNetGetResourceParent; + alias WNetGetLastErrorW WNetGetLastError; + alias MultinetGetConnectionPerformanceW MultinetGetConnectionPerformance; + deprecated { + alias WNetAddConnectionW WNetAddConnection; + alias WNetCancelConnectionW WNetCancelConnection; + } +} else { + alias PFNGETPROFILEPATHA PFNGETPROFILEPATH; + alias PFNRECONCILEPROFILEA PFNRECONCILEPROFILE; + alias PFNPROCESSPOLICIESA PFNPROCESSPOLICIES; + alias NETRESOURCEA NETRESOURCE; + alias CONNECTDLGSTRUCTA CONNECTDLGSTRUCT; + alias DISCDLGSTRUCTA DISCDLGSTRUCT; + alias REMOTE_NAME_INFOA REMOTE_NAME_INFO; + alias UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO; + alias WNetAddConnection2A WNetAddConnection2; + alias WNetAddConnection3A WNetAddConnection3; + alias WNetCancelConnection2A WNetCancelConnection2; + alias WNetGetConnectionA WNetGetConnection; + alias WNetUseConnectionA WNetUseConnection; + alias WNetSetConnectionA WNetSetConnection; + alias WNetConnectionDialog1A WNetConnectionDialog1; + alias WNetDisconnectDialog1A WNetDisconnectDialog1; + alias WNetOpenEnumA WNetOpenEnum; + alias WNetEnumResourceA WNetEnumResource; + alias WNetGetUniversalNameA WNetGetUniversalName; + alias WNetGetUserA WNetGetUser; + alias WNetGetProviderNameA WNetGetProviderName; + alias WNetGetNetworkInformationA WNetGetNetworkInformation; + alias WNetGetResourceInformationA WNetGetResourceInformation; + alias WNetGetResourceParentA WNetGetResourceParent; + alias WNetGetLastErrorA WNetGetLastError; + alias MultinetGetConnectionPerformanceA MultinetGetConnectionPerformance; + deprecated { + alias WNetAddConnectionA WNetAddConnection; + alias WNetCancelConnectionA WNetCancelConnection; + } +} + +alias NETRESOURCE* LPNETRESOURCE; +alias CONNECTDLGSTRUCT* LPCONNECTDLGSTRUCT; +alias DISCDLGSTRUCT* LPDISCDLGSTRUCT; +alias REMOTE_NAME_INFO* LPREMOTE_NAME_INFO; +alias UNIVERSAL_NAME_INFO* LPUNIVERSAL_NAME_INFO; diff --git a/src/core/sys/windows/winnls.d b/src/core/sys/windows/winnls.d index 5dca95cccd..5c39947e5f 100644 --- a/src/core/sys/windows/winnls.d +++ b/src/core/sys/windows/winnls.d @@ -1,808 +1,808 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winnls.d) - */ -module core.sys.windows.winnls; -pragma(lib, "kernel32"); - -private import core.sys.windows.basetsd, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; - -alias DWORD LCTYPE, CALTYPE, CALID, LGRPID, GEOID, GEOTYPE, GEOCLASS; - -const size_t - MAX_DEFAULTCHAR = 2, - MAX_LEADBYTES = 12; - -const LCTYPE - LOCALE_USE_CP_ACP = 0x40000000, - LOCALE_RETURN_NUMBER = 0x20000000; - -enum : LCTYPE { - LOCALE_ILANGUAGE = 1, - LOCALE_SLANGUAGE, - LOCALE_SABBREVLANGNAME, - LOCALE_SNATIVELANGNAME, - LOCALE_ICOUNTRY, - LOCALE_SCOUNTRY, - LOCALE_SABBREVCTRYNAME, - LOCALE_SNATIVECTRYNAME, - LOCALE_IDEFAULTLANGUAGE, - LOCALE_IDEFAULTCOUNTRY, - LOCALE_IDEFAULTCODEPAGE, - LOCALE_SLIST, - LOCALE_IMEASURE, - LOCALE_SDECIMAL, - LOCALE_STHOUSAND, - LOCALE_SGROUPING, - LOCALE_IDIGITS, - LOCALE_ILZERO, - LOCALE_SNATIVEDIGITS, - LOCALE_SCURRENCY, - LOCALE_SINTLSYMBOL, - LOCALE_SMONDECIMALSEP, - LOCALE_SMONTHOUSANDSEP, - LOCALE_SMONGROUPING, - LOCALE_ICURRDIGITS, - LOCALE_IINTLCURRDIGITS, - LOCALE_ICURRENCY, - LOCALE_INEGCURR, - LOCALE_SDATE, - LOCALE_STIME, - LOCALE_SSHORTDATE, - LOCALE_SLONGDATE, - LOCALE_IDATE, - LOCALE_ILDATE, - LOCALE_ITIME, - LOCALE_ICENTURY, - LOCALE_ITLZERO, - LOCALE_IDAYLZERO, - LOCALE_IMONLZERO, - LOCALE_S1159, - LOCALE_S2359, - LOCALE_SDAYNAME1, - LOCALE_SDAYNAME2, - LOCALE_SDAYNAME3, - LOCALE_SDAYNAME4, - LOCALE_SDAYNAME5, - LOCALE_SDAYNAME6, - LOCALE_SDAYNAME7, - LOCALE_SABBREVDAYNAME1, - LOCALE_SABBREVDAYNAME2, - LOCALE_SABBREVDAYNAME3, - LOCALE_SABBREVDAYNAME4, - LOCALE_SABBREVDAYNAME5, - LOCALE_SABBREVDAYNAME6, - LOCALE_SABBREVDAYNAME7, - LOCALE_SMONTHNAME1, - LOCALE_SMONTHNAME2, - LOCALE_SMONTHNAME3, - LOCALE_SMONTHNAME4, - LOCALE_SMONTHNAME5, - LOCALE_SMONTHNAME6, - LOCALE_SMONTHNAME7, - LOCALE_SMONTHNAME8, - LOCALE_SMONTHNAME9, - LOCALE_SMONTHNAME10, - LOCALE_SMONTHNAME11, - LOCALE_SMONTHNAME12, - LOCALE_SABBREVMONTHNAME1, - LOCALE_SABBREVMONTHNAME2, - LOCALE_SABBREVMONTHNAME3, - LOCALE_SABBREVMONTHNAME4, - LOCALE_SABBREVMONTHNAME5, - LOCALE_SABBREVMONTHNAME6, - LOCALE_SABBREVMONTHNAME7, - LOCALE_SABBREVMONTHNAME8, - LOCALE_SABBREVMONTHNAME9, - LOCALE_SABBREVMONTHNAME10, - LOCALE_SABBREVMONTHNAME11, - LOCALE_SABBREVMONTHNAME12, - LOCALE_SPOSITIVESIGN, - LOCALE_SNEGATIVESIGN, - LOCALE_IPOSSIGNPOSN, - LOCALE_INEGSIGNPOSN, - LOCALE_IPOSSYMPRECEDES, - LOCALE_IPOSSEPBYSPACE, - LOCALE_INEGSYMPRECEDES, - LOCALE_INEGSEPBYSPACE, - LOCALE_FONTSIGNATURE, - LOCALE_SISO639LANGNAME, - LOCALE_SISO3166CTRYNAME, // = 90 - LOCALE_SENGLANGUAGE = 0x1001, - LOCALE_SENGCOUNTRY = 0x1002, - LOCALE_IDEFAULTANSICODEPAGE = 0x1004, - LOCALE_INEGNUMBER = 0x1010, - LOCALE_STIMEFORMAT = 0x1003, - LOCALE_ITIMEMARKPOSN = 0x1005, - LOCALE_ICALENDARTYPE = 0x1009, - LOCALE_IOPTIONALCALENDAR = 0x100B, - LOCALE_IFIRSTDAYOFWEEK = 0x100C, - LOCALE_IFIRSTWEEKOFYEAR = 0x100D, - LOCALE_SMONTHNAME13 = 0x100E, - LOCALE_SABBREVMONTHNAME13 = 0x100F -} - -enum : LCID { - LOCALE_USER_DEFAULT = 0x400, - LOCALE_SYSTEM_DEFAULT = 0x800 -} - -const DWORD - NORM_IGNORECASE = 1, - NORM_IGNORENONSPACE = 2, - NORM_IGNORESYMBOLS = 4, - SORT_STRINGSORT = 0x01000, - NORM_IGNOREKANATYPE = 0x10000, - NORM_IGNOREWIDTH = 0x20000; - -const DWORD - LCMAP_LOWERCASE = 0x00000100, - LCMAP_UPPERCASE = 0x00000200, - LCMAP_SORTKEY = 0x00000400, - LCMAP_BYTEREV = 0x00000800, - LCMAP_HIRAGANA = 0x00100000, - LCMAP_KATAKANA = 0x00200000, - LCMAP_HALFWIDTH = 0x00400000, - LCMAP_FULLWIDTH = 0x00800000, - LCMAP_LINGUISTIC_CASING = 0x01000000, - LCMAP_SIMPLIFIED_CHINESE = 0x02000000, - LCMAP_TRADITIONAL_CHINESE = 0x04000000; - -const CALID ENUM_ALL_CALENDARS = -1; - -const DWORD - DATE_SHORTDATE = 1, - DATE_LONGDATE = 2, - DATE_USE_ALT_CALENDAR = 4, - LOCALE_NOUSEROVERRIDE = 0x80000000; - -enum : DWORD { - CP_INSTALLED = 1, - CP_SUPPORTED -} - -enum : DWORD { - LCID_INSTALLED = 1, - LCID_SUPPORTED = 2, - LCID_ALTERNATE_SORTS = 4 -} - -const DWORD - MAP_FOLDCZONE = 16, - MAP_PRECOMPOSED = 32, - MAP_COMPOSITE = 64, - MAP_FOLDDIGITS = 128; - -enum : UINT { - CP_ACP, - CP_OEMCP, - CP_MACCP, - CP_THREAD_ACP, // = 3 - CP_SYMBOL = 42, - CP_UTF7 = 65000, - CP_UTF8 = 65001 -} - -enum : DWORD { - CT_CTYPE1 = 1, - CT_CTYPE2 = 2, - CT_CTYPE3 = 4 -} - -const WORD - C1_UPPER = 1, - C1_LOWER = 2, - C1_DIGIT = 4, - C1_SPACE = 8, - C1_PUNCT = 16, - C1_CNTRL = 32, - C1_BLANK = 64, - C1_XDIGIT = 128, - C1_ALPHA = 256; - -enum : WORD { - C2_NOTAPPLICABLE, - C2_LEFTTORIGHT, - C2_RIGHTTOLEFT, - C2_EUROPENUMBER, - C2_EUROPESEPARATOR, - C2_EUROPETERMINATOR, - C2_ARABICNUMBER, - C2_COMMONSEPARATOR, - C2_BLOCKSEPARATOR, - C2_SEGMENTSEPARATOR, - C2_WHITESPACE, - C2_OTHERNEUTRAL // = 11 -} - -const WORD - C3_NOTAPPLICABLE = 0, - C3_NONSPACING = 1, - C3_DIACRITIC = 2, - C3_VOWELMARK = 4, - C3_SYMBOL = 8, - C3_KATAKANA = 0x0010, - C3_HIRAGANA = 0x0020, - C3_HALFWIDTH = 0x0040, - C3_FULLWIDTH = 0x0080, - C3_IDEOGRAPH = 0x0100, - C3_KASHIDA = 0x0200, - C3_LEXICAL = 0x0400, - C3_ALPHA = 0x8000; - -const DWORD - TIME_NOMINUTESORSECONDS = 1, - TIME_NOSECONDS = 2, - TIME_NOTIMEMARKER = 4, - TIME_FORCE24HOURFORMAT = 8; - -const DWORD - MB_PRECOMPOSED = 1, - MB_COMPOSITE = 2, - MB_USEGLYPHCHARS = 4, - MB_ERR_INVALID_CHARS = 8; - -const DWORD - WC_DISCARDNS = 16, - WC_SEPCHARS = 32, - WC_DEFAULTCHAR = 64, - WC_COMPOSITECHECK = 512; - -enum : LONG { - CTRY_DEFAULT = 0, - CTRY_DOMINICAN_REPUBLIC = 1, - CTRY_PUERTO_RICO = 1, - CTRY_CARIBBEAN = 1, - CTRY_JAMAICA = 1, - CTRY_UNITED_STATES = 1, - CTRY_TRINIDAD_Y_TOBAGO = 1, - CTRY_CANADA = 2, - CTRY_RUSSIA = 7, - CTRY_UZBEKISTAN = 7, - CTRY_KAZAKSTAN = 7, - CTRY_TATARSTAN = 7, - CTRY_EGYPT = 20, - CTRY_SOUTH_AFRICA = 27, - CTRY_GREECE = 30, - CTRY_NETHERLANDS = 31, - CTRY_BELGIUM = 32, - CTRY_FRANCE = 33, - CTRY_MONACO = 33, - CTRY_SPAIN = 34, - CTRY_HUNGARY = 36, - CTRY_ITALY = 39, - CTRY_ROMANIA = 40, - CTRY_SWITZERLAND = 41, - CTRY_LIECHTENSTEIN = 41, - CTRY_AUSTRIA = 43, - CTRY_UNITED_KINGDOM = 44, - CTRY_DENMARK = 45, - CTRY_SWEDEN = 46, - CTRY_NORWAY = 47, - CTRY_POLAND = 48, - CTRY_GERMANY = 49, - CTRY_PERU = 51, - CTRY_MEXICO = 52, - CTRY_ARGENTINA = 54, - CTRY_BRAZIL = 55, - CTRY_CHILE = 56, - CTRY_COLOMBIA = 57, - CTRY_VENEZUELA = 58, - CTRY_MALAYSIA = 60, - CTRY_AUSTRALIA = 61, - CTRY_INDONESIA = 62, - CTRY_PHILIPPINES = 63, - CTRY_NEW_ZEALAND = 64, - CTRY_SINGAPORE = 65, - CTRY_THAILAND = 66, - CTRY_JAPAN = 81, - CTRY_SOUTH_KOREA = 82, - CTRY_VIET_NAM = 84, - CTRY_PRCHINA = 86, - CTRY_TURKEY = 90, - CTRY_INDIA = 91, - CTRY_PAKISTAN = 92, - CTRY_MOROCCO = 212, - CTRY_ALGERIA = 213, - CTRY_TUNISIA = 216, - CTRY_LIBYA = 218, - CTRY_KENYA = 254, - CTRY_ZIMBABWE = 263, - CTRY_FAEROE_ISLANDS = 298, - CTRY_PORTUGAL = 351, - CTRY_LUXEMBOURG = 352, - CTRY_IRELAND = 353, - CTRY_ICELAND = 354, - CTRY_ALBANIA = 355, - CTRY_FINLAND = 358, - CTRY_BULGARIA = 359, - CTRY_LITHUANIA = 370, - CTRY_LATVIA = 371, - CTRY_ESTONIA = 372, - CTRY_ARMENIA = 374, - CTRY_BELARUS = 375, - CTRY_UKRAINE = 380, - CTRY_SERBIA = 381, - CTRY_CROATIA = 385, - CTRY_SLOVENIA = 386, - CTRY_MACEDONIA = 389, - CTRY_CZECH = 420, - CTRY_SLOVAK = 421, - CTRY_BELIZE = 501, - CTRY_GUATEMALA = 502, - CTRY_EL_SALVADOR = 503, - CTRY_HONDURAS = 504, - CTRY_NICARAGUA = 505, - CTRY_COSTA_RICA = 506, - CTRY_PANAMA = 507, - CTRY_BOLIVIA = 591, - CTRY_ECUADOR = 593, - CTRY_PARAGUAY = 595, - CTRY_URUGUAY = 598, - CTRY_BRUNEI_DARUSSALAM = 673, - CTRY_HONG_KONG = 852, - CTRY_MACAU = 853, - CTRY_TAIWAN = 886, - CTRY_MALDIVES = 960, - CTRY_LEBANON = 961, - CTRY_JORDAN = 962, - CTRY_SYRIA = 963, - CTRY_IRAQ = 964, - CTRY_KUWAIT = 965, - CTRY_SAUDI_ARABIA = 966, - CTRY_YEMEN = 967, - CTRY_OMAN = 968, - CTRY_UAE = 971, - CTRY_ISRAEL = 972, - CTRY_BAHRAIN = 973, - CTRY_QATAR = 974, - CTRY_MONGOLIA = 976, - CTRY_IRAN = 981, - CTRY_AZERBAIJAN = 994, - CTRY_GEORGIA = 995, - CTRY_KYRGYZSTAN = 996 -} - -enum : CALTYPE { - CAL_ICALINTVALUE = 1, - CAL_SCALNAME, - CAL_IYEAROFFSETRANGE, - CAL_SERASTRING, - CAL_SSHORTDATE, - CAL_SLONGDATE, - CAL_SDAYNAME1, - CAL_SDAYNAME2, - CAL_SDAYNAME3, - CAL_SDAYNAME4, - CAL_SDAYNAME5, - CAL_SDAYNAME6, - CAL_SDAYNAME7, - CAL_SABBREVDAYNAME1, - CAL_SABBREVDAYNAME2, - CAL_SABBREVDAYNAME3, - CAL_SABBREVDAYNAME4, - CAL_SABBREVDAYNAME5, - CAL_SABBREVDAYNAME6, - CAL_SABBREVDAYNAME7, - CAL_SMONTHNAME1, - CAL_SMONTHNAME2, - CAL_SMONTHNAME3, - CAL_SMONTHNAME4, - CAL_SMONTHNAME5, - CAL_SMONTHNAME6, - CAL_SMONTHNAME7, - CAL_SMONTHNAME8, - CAL_SMONTHNAME9, - CAL_SMONTHNAME10, - CAL_SMONTHNAME11, - CAL_SMONTHNAME12, - CAL_SMONTHNAME13, - CAL_SABBREVMONTHNAME1, - CAL_SABBREVMONTHNAME2, - CAL_SABBREVMONTHNAME3, - CAL_SABBREVMONTHNAME4, - CAL_SABBREVMONTHNAME5, - CAL_SABBREVMONTHNAME6, - CAL_SABBREVMONTHNAME7, - CAL_SABBREVMONTHNAME8, - CAL_SABBREVMONTHNAME9, - CAL_SABBREVMONTHNAME10, - CAL_SABBREVMONTHNAME11, - CAL_SABBREVMONTHNAME12, - CAL_SABBREVMONTHNAME13 // = 46 -} - - -enum : CALTYPE { - CAL_GREGORIAN = 1, - CAL_GREGORIAN_US, - CAL_JAPAN, - CAL_TAIWAN, - CAL_KOREA, - CAL_HIJRI, - CAL_THAI, - CAL_HEBREW, - CAL_GREGORIAN_ME_FRENCH, - CAL_GREGORIAN_ARABIC, - CAL_GREGORIAN_XLIT_ENGLISH, - CAL_GREGORIAN_XLIT_FRENCH // = 12 -} - -enum : int { - CSTR_LESS_THAN = 1, - CSTR_EQUAL, - CSTR_GREATER_THAN -} - -enum : DWORD { - LGRPID_INSTALLED = 1, - LGRPID_SUPPORTED -} - -enum : LGRPID { - LGRPID_WESTERN_EUROPE = 1, - LGRPID_CENTRAL_EUROPE, - LGRPID_BALTIC, - LGRPID_GREEK, - LGRPID_CYRILLIC, - LGRPID_TURKISH, - LGRPID_JAPANESE, - LGRPID_KOREAN, - LGRPID_TRADITIONAL_CHINESE, - LGRPID_SIMPLIFIED_CHINESE, - LGRPID_THAI, - LGRPID_HEBREW, - LGRPID_ARABIC, - LGRPID_VIETNAMESE, - LGRPID_INDIC, - LGRPID_GEORGIAN, - LGRPID_ARMENIAN // = 17 -} - -static if (_WIN32_WINNT >= 0x500) { - enum : LCTYPE { - LOCALE_SYEARMONTH = 0x1006, - LOCALE_SENGCURRNAME = 0x1007, - LOCALE_SNATIVECURRNAME = 0x1008, - LOCALE_IDEFAULTEBCDICCODEPAGE = 0x1012, - LOCALE_SSORTNAME = 0x1013, - LOCALE_IDIGITSUBSTITUTION = 0x1014, - LOCALE_IPAPERSIZE = 0x100A - } - - const DWORD - DATE_YEARMONTH = 8, - DATE_LTRREADING = 16, - DATE_RTLREADING = 32; - - const DWORD MAP_EXPAND_LIGATURES = 0x2000; - const DWORD WC_NO_BEST_FIT_CHARS = 1024; - - enum : CALTYPE { - CAL_SYEARMONTH = 47, - CAL_ITWODIGITYEARMAX = 48, - CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE, - CAL_RETURN_NUMBER = LOCALE_RETURN_NUMBER, - CAL_USE_CP_ACP = LOCALE_USE_CP_ACP - } -} // (_WIN32_WINNT >= 0x500) - -extern (Windows) { - alias BOOL function(LPSTR) CALINFO_ENUMPROCA; - alias BOOL function(LPWSTR) CALINFO_ENUMPROCW; - alias BOOL function(LPSTR, CALID) CALINFO_ENUMPROCEXA; - alias BOOL function(LPWSTR, CALID) CALINFO_ENUMPROCEXW; - alias BOOL function(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR) - LANGUAGEGROUP_ENUMPROCA; - alias BOOL function(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR) - LANGUAGEGROUP_ENUMPROCW; - alias BOOL function(LGRPID, LCID, LPSTR, LONG_PTR) - LANGGROUPLOCALE_ENUMPROCA; - alias BOOL function(LGRPID, LCID, LPWSTR, LONG_PTR) - LANGGROUPLOCALE_ENUMPROCW; - alias BOOL function(LPWSTR, LONG_PTR) UILANGUAGE_ENUMPROCW; - alias BOOL function(LPSTR, LONG_PTR) UILANGUAGE_ENUMPROCA; - alias BOOL function(LPSTR) LOCALE_ENUMPROCA; - alias BOOL function(LPWSTR) LOCALE_ENUMPROCW; - alias BOOL function(LPSTR) CODEPAGE_ENUMPROCA; - alias BOOL function(LPWSTR) CODEPAGE_ENUMPROCW; - alias BOOL function(LPSTR) DATEFMT_ENUMPROCA; - alias BOOL function(LPWSTR) DATEFMT_ENUMPROCW; - alias BOOL function(LPSTR, CALID) DATEFMT_ENUMPROCEXA; - alias BOOL function(LPWSTR, CALID) DATEFMT_ENUMPROCEXW; - alias BOOL function(LPSTR) TIMEFMT_ENUMPROCA; - alias BOOL function(LPWSTR) TIMEFMT_ENUMPROCW; - alias BOOL function(GEOID) GEO_ENUMPROC; -} - -enum NLS_FUNCTION { - COMPARE_STRING = 0x0001 -} - -enum SYSGEOCLASS { - GEOCLASS_NATION = 16, - GEOCLASS_REGION = 14 -} - -enum SYSGEOTYPE { - GEO_NATION = 0x0001, - GEO_LATITUDE = 0x0002, - GEO_LONGITUDE = 0x0003, - GEO_ISO2 = 0x0004, - GEO_ISO3 = 0x0005, - GEO_RFC1766 = 0x0006, - GEO_LCID = 0x0007, - GEO_FRIENDLYNAME = 0x0008, - GEO_OFFICIALNAME = 0x0009, - GEO_TIMEZONES = 0x000a, - GEO_OFFICIALLANGUAGES = 0x000a -} - -struct CPINFO { - UINT MaxCharSize; - BYTE[MAX_DEFAULTCHAR] DefaultChar; - BYTE[MAX_LEADBYTES] LeadByte; -} -alias CPINFO* LPCPINFO; - -struct CPINFOEXA { - UINT MaxCharSize; - BYTE[MAX_DEFAULTCHAR] DefaultChar; - BYTE[MAX_LEADBYTES] LeadByte; - WCHAR UnicodeDefaultChar; - UINT CodePage; - CHAR[MAX_PATH] CodePageName; -} -alias CPINFOEXA* LPCPINFOEXA; - -struct CPINFOEXW { - UINT MaxCharSize; - BYTE[MAX_DEFAULTCHAR] DefaultChar; - BYTE[MAX_LEADBYTES] LeadByte; - WCHAR UnicodeDefaultChar; - UINT CodePage; - WCHAR[MAX_PATH] CodePageName; -} -alias CPINFOEXW* LPCPINFOEXW; - -struct CURRENCYFMTA { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPSTR lpDecimalSep; - LPSTR lpThousandSep; - UINT NegativeOrder; - UINT PositiveOrder; - LPSTR lpCurrencySymbol; -} -alias CURRENCYFMTA* LPCURRENCYFMTA; - -struct CURRENCYFMTW { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPWSTR lpDecimalSep; - LPWSTR lpThousandSep; - UINT NegativeOrder; - UINT PositiveOrder; - LPWSTR lpCurrencySymbol; -} -alias CURRENCYFMTW* LPCURRENCYFMTW; - -struct NLSVERSIONINFO { - DWORD dwNLSVersionInfoSize; - DWORD dwNLSVersion; - DWORD dwDefinedVersion; -} -alias NLSVERSIONINFO* LPNLSVERSIONINFO; - -struct NUMBERFMTA { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPSTR lpDecimalSep; - LPSTR lpThousandSep; - UINT NegativeOrder; -} -alias NUMBERFMTA* LPNUMBERFMTA; - -struct NUMBERFMTW { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPWSTR lpDecimalSep; - LPWSTR lpThousandSep; - UINT NegativeOrder; -} -alias NUMBERFMTW* LPNUMBERFMTW; - -extern (Windows) { - int CompareStringA(LCID, DWORD, LPCSTR, int, LPCSTR, int); - int CompareStringW(LCID, DWORD, LPCWSTR, int, LPCWSTR, int); - LCID ConvertDefaultLocale(LCID); - BOOL EnumCalendarInfoA(CALINFO_ENUMPROCA, LCID, CALID, CALTYPE); - BOOL EnumCalendarInfoW(CALINFO_ENUMPROCW, LCID, CALID, CALTYPE); - BOOL EnumDateFormatsA(DATEFMT_ENUMPROCA, LCID, DWORD); - BOOL EnumDateFormatsW(DATEFMT_ENUMPROCW, LCID, DWORD); - BOOL EnumSystemCodePagesA(CODEPAGE_ENUMPROCA, DWORD); - BOOL EnumSystemCodePagesW(CODEPAGE_ENUMPROCW, DWORD); - BOOL EnumSystemGeoID(GEOCLASS, GEOID, GEO_ENUMPROC); - BOOL EnumSystemLocalesA(LOCALE_ENUMPROCA, DWORD); - BOOL EnumSystemLocalesW(LOCALE_ENUMPROCW, DWORD); - BOOL EnumTimeFormatsA(TIMEFMT_ENUMPROCA, LCID, DWORD); - BOOL EnumTimeFormatsW(TIMEFMT_ENUMPROCW, LCID, DWORD); - int FoldStringA(DWORD, LPCSTR, int, LPSTR, int); - int FoldStringW(DWORD, LPCWSTR, int, LPWSTR, int); - UINT GetACP(); - int GetCalendarInfoA(LCID, CALID, CALTYPE, LPSTR, int, LPDWORD); - int GetCalendarInfoW(LCID, CALID, CALTYPE, LPWSTR, int, LPDWORD); - BOOL GetCPInfo(UINT, LPCPINFO); - BOOL GetCPInfoExA(UINT, DWORD, LPCPINFOEXA); - BOOL GetCPInfoExW(UINT, DWORD, LPCPINFOEXW); - int GetCurrencyFormatA(LCID, DWORD, LPCSTR, const(CURRENCYFMTA)*, LPSTR, int); - int GetCurrencyFormatW(LCID, DWORD, LPCWSTR, const(CURRENCYFMTW)*, LPWSTR, - int); - int GetDateFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); - int GetDateFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); - int GetGeoInfoA(GEOID, GEOTYPE, LPSTR, int, LANGID); - int GetGeoInfoW(GEOID, GEOTYPE, LPWSTR, int, LANGID); - int GetLocaleInfoA(LCID, LCTYPE, LPSTR, int); - int GetLocaleInfoW(LCID, LCTYPE, LPWSTR, int); - BOOL GetNLSVersion(NLS_FUNCTION, LCID, LPNLSVERSIONINFO); - int GetNumberFormatA(LCID, DWORD, LPCSTR, const(NUMBERFMTA)*, LPSTR, int); - int GetNumberFormatW(LCID, DWORD, LPCWSTR, const(NUMBERFMTW)*, LPWSTR, int); - UINT GetOEMCP(); - BOOL GetStringTypeA(LCID, DWORD, LPCSTR, int, LPWORD); - BOOL GetStringTypeW(DWORD, LPCWSTR, int, LPWORD); - BOOL GetStringTypeExA(LCID, DWORD, LPCSTR, int, LPWORD); - BOOL GetStringTypeExW(LCID, DWORD, LPCWSTR, int, LPWORD); - LANGID GetSystemDefaultLangID(); - LCID GetSystemDefaultLCID(); - LCID GetThreadLocale(); - int GetTimeFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); - int GetTimeFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); - LANGID GetUserDefaultLangID(); - LCID GetUserDefaultLCID(); - GEOID GetUserGeoID(GEOCLASS); - BOOL IsDBCSLeadByte(BYTE); - BOOL IsDBCSLeadByteEx(UINT, BYTE); - BOOL IsNLSDefinedString(NLS_FUNCTION, DWORD, LPNLSVERSIONINFO, LPCWSTR, - int); - BOOL IsValidCodePage(UINT); - BOOL IsValidLocale(LCID, DWORD); - int LCMapStringA(LCID, DWORD, LPCSTR, int, LPSTR, int); - int LCMapStringW(LCID, DWORD, LPCWSTR, int, LPWSTR, int); - int MultiByteToWideChar(UINT, DWORD, LPCSTR, int, LPWSTR, int); - int SetCalendarInfoA(LCID, CALID, CALTYPE, LPCSTR); - int SetCalendarInfoW(LCID, CALID, CALTYPE, LPCWSTR); - BOOL SetLocaleInfoA(LCID, LCTYPE, LPCSTR); - BOOL SetLocaleInfoW(LCID, LCTYPE, LPCWSTR); - BOOL SetThreadLocale(LCID); - BOOL SetUserGeoID(GEOID); - int WideCharToMultiByte(UINT, DWORD, LPCWSTR, int, LPSTR, int, LPCSTR, - LPBOOL); - - static if (_WIN32_WINNT >= 0x410) { - BOOL EnumCalendarInfoExA(CALINFO_ENUMPROCEXA, LCID, CALID, CALTYPE); - BOOL EnumCalendarInfoExW(CALINFO_ENUMPROCEXW, LCID, CALID, CALTYPE); - BOOL EnumDateFormatsExA(DATEFMT_ENUMPROCEXA, LCID, DWORD); - BOOL EnumDateFormatsExW(DATEFMT_ENUMPROCEXW, LCID, DWORD); - BOOL IsValidLanguageGroup(LGRPID, DWORD); - } - - static if (_WIN32_WINNT >= 0x500) { - LANGID GetSystemDefaultUILanguage(); - LANGID GetUserDefaultUILanguage(); - - BOOL EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA, DWORD, - LONG_PTR); - BOOL EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW, DWORD, - LONG_PTR); - BOOL EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA, LGRPID, - DWORD, LONG_PTR); - BOOL EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW, LGRPID, - DWORD, LONG_PTR); - BOOL EnumUILanguagesA(UILANGUAGE_ENUMPROCA, DWORD, LONG_PTR); - BOOL EnumUILanguagesW(UILANGUAGE_ENUMPROCW, DWORD, LONG_PTR); - } -} - -version (Unicode) { - alias CALINFO_ENUMPROCW CALINFO_ENUMPROC; - alias CALINFO_ENUMPROCEXW CALINFO_ENUMPROCEX; - alias LOCALE_ENUMPROCW LOCALE_ENUMPROC; - alias CODEPAGE_ENUMPROCW CODEPAGE_ENUMPROC; - alias DATEFMT_ENUMPROCW DATEFMT_ENUMPROC; - alias DATEFMT_ENUMPROCEXW DATEFMT_ENUMPROCEX; - alias TIMEFMT_ENUMPROCW TIMEFMT_ENUMPROC; - alias LANGUAGEGROUP_ENUMPROCW LANGUAGEGROUP_ENUMPROC; - alias LANGGROUPLOCALE_ENUMPROCW LANGGROUPLOCALE_ENUMPROC; - alias UILANGUAGE_ENUMPROCW UILANGUAGE_ENUMPROC; - alias CPINFOEXW CPINFOEX; - alias LPCPINFOEXW LPCPINFOEX; - alias CURRENCYFMTW CURRENCYFMT; - alias LPCURRENCYFMTW LPCURRENCYFMT; - alias NUMBERFMTW NUMBERFMT; - alias LPNUMBERFMTW LPNUMBERFMT; - alias CompareStringW CompareString; - alias EnumCalendarInfoW EnumCalendarInfo; - alias EnumSystemCodePagesW EnumSystemCodePages; - alias EnumSystemLocalesW EnumSystemLocales; - alias EnumTimeFormatsW EnumTimeFormats; - alias FoldStringW FoldString; - alias GetCalendarInfoW GetCalendarInfo; - alias GetCPInfoExW GetCPInfoEx; - alias GetCurrencyFormatW GetCurrencyFormat; - alias GetDateFormatW GetDateFormat; - alias GetGeoInfoW GetGeoInfo; - alias GetLocaleInfoW GetLocaleInfo; - alias GetNumberFormatW GetNumberFormat; - alias GetStringTypeExW GetStringTypeEx; - alias GetTimeFormatW GetTimeFormat; - alias LCMapStringW LCMapString; - alias SetCalendarInfoW SetCalendarInfo; - alias SetLocaleInfoW SetLocaleInfo; - - static if (_WIN32_WINNT >= 0x410) { - alias EnumCalendarInfoExW EnumCalendarInfoEx; - alias EnumDateFormatsExW EnumDateFormatsEx; - } - - static if (_WIN32_WINNT >= 0x500) { - alias EnumSystemLanguageGroupsW EnumSystemLanguageGroups; - alias EnumLanguageGroupLocalesW EnumLanguageGroupLocales; - alias EnumUILanguagesW EnumUILanguages; - } - -} else { - alias CALINFO_ENUMPROCA CALINFO_ENUMPROC; - alias CALINFO_ENUMPROCEXA CALINFO_ENUMPROCEX; - alias LOCALE_ENUMPROCA LOCALE_ENUMPROC; - alias CODEPAGE_ENUMPROCA CODEPAGE_ENUMPROC; - alias DATEFMT_ENUMPROCA DATEFMT_ENUMPROC; - alias DATEFMT_ENUMPROCEXA DATEFMT_ENUMPROCEX; - alias TIMEFMT_ENUMPROCA TIMEFMT_ENUMPROC; - alias LANGUAGEGROUP_ENUMPROCA LANGUAGEGROUP_ENUMPROC; - alias LANGGROUPLOCALE_ENUMPROCA LANGGROUPLOCALE_ENUMPROC; - alias UILANGUAGE_ENUMPROCA UILANGUAGE_ENUMPROC; - alias CPINFOEXA CPINFOEX; - alias LPCPINFOEXA LPCPINFOEX; - alias CURRENCYFMTA CURRENCYFMT; - alias LPCURRENCYFMTA LPCURRENCYFMT; - alias NUMBERFMTA NUMBERFMT; - alias LPNUMBERFMTA LPNUMBERFMT; - alias CompareStringA CompareString; - alias EnumCalendarInfoA EnumCalendarInfo; - alias EnumSystemCodePagesA EnumSystemCodePages; - alias EnumSystemLocalesA EnumSystemLocales; - alias EnumTimeFormatsA EnumTimeFormats; - alias FoldStringA FoldString; - alias GetCalendarInfoA GetCalendarInfo; - alias GetCPInfoExA GetCPInfoEx; - alias GetCurrencyFormatA GetCurrencyFormat; - alias GetDateFormatA GetDateFormat; - alias GetGeoInfoA GetGeoInfo; - alias GetLocaleInfoA GetLocaleInfo; - alias GetNumberFormatA GetNumberFormat; - alias GetStringTypeExA GetStringTypeEx; - alias GetTimeFormatA GetTimeFormat; - alias LCMapStringA LCMapString; - alias SetCalendarInfoA SetCalendarInfo; - alias SetLocaleInfoA SetLocaleInfo; - - static if (_WIN32_WINNT >= 0x410) { - alias EnumCalendarInfoExA EnumCalendarInfoEx; - alias EnumDateFormatsExA EnumDateFormatsEx; - } - - static if (_WIN32_WINNT >= 0x500) { - alias EnumSystemLanguageGroupsA EnumSystemLanguageGroups; - alias EnumLanguageGroupLocalesA EnumLanguageGroupLocales; - alias EnumUILanguagesA EnumUILanguages; - } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winnls.d) + */ +module core.sys.windows.winnls; +pragma(lib, "kernel32"); + +private import core.sys.windows.basetsd, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; + +alias DWORD LCTYPE, CALTYPE, CALID, LGRPID, GEOID, GEOTYPE, GEOCLASS; + +const size_t + MAX_DEFAULTCHAR = 2, + MAX_LEADBYTES = 12; + +const LCTYPE + LOCALE_USE_CP_ACP = 0x40000000, + LOCALE_RETURN_NUMBER = 0x20000000; + +enum : LCTYPE { + LOCALE_ILANGUAGE = 1, + LOCALE_SLANGUAGE, + LOCALE_SABBREVLANGNAME, + LOCALE_SNATIVELANGNAME, + LOCALE_ICOUNTRY, + LOCALE_SCOUNTRY, + LOCALE_SABBREVCTRYNAME, + LOCALE_SNATIVECTRYNAME, + LOCALE_IDEFAULTLANGUAGE, + LOCALE_IDEFAULTCOUNTRY, + LOCALE_IDEFAULTCODEPAGE, + LOCALE_SLIST, + LOCALE_IMEASURE, + LOCALE_SDECIMAL, + LOCALE_STHOUSAND, + LOCALE_SGROUPING, + LOCALE_IDIGITS, + LOCALE_ILZERO, + LOCALE_SNATIVEDIGITS, + LOCALE_SCURRENCY, + LOCALE_SINTLSYMBOL, + LOCALE_SMONDECIMALSEP, + LOCALE_SMONTHOUSANDSEP, + LOCALE_SMONGROUPING, + LOCALE_ICURRDIGITS, + LOCALE_IINTLCURRDIGITS, + LOCALE_ICURRENCY, + LOCALE_INEGCURR, + LOCALE_SDATE, + LOCALE_STIME, + LOCALE_SSHORTDATE, + LOCALE_SLONGDATE, + LOCALE_IDATE, + LOCALE_ILDATE, + LOCALE_ITIME, + LOCALE_ICENTURY, + LOCALE_ITLZERO, + LOCALE_IDAYLZERO, + LOCALE_IMONLZERO, + LOCALE_S1159, + LOCALE_S2359, + LOCALE_SDAYNAME1, + LOCALE_SDAYNAME2, + LOCALE_SDAYNAME3, + LOCALE_SDAYNAME4, + LOCALE_SDAYNAME5, + LOCALE_SDAYNAME6, + LOCALE_SDAYNAME7, + LOCALE_SABBREVDAYNAME1, + LOCALE_SABBREVDAYNAME2, + LOCALE_SABBREVDAYNAME3, + LOCALE_SABBREVDAYNAME4, + LOCALE_SABBREVDAYNAME5, + LOCALE_SABBREVDAYNAME6, + LOCALE_SABBREVDAYNAME7, + LOCALE_SMONTHNAME1, + LOCALE_SMONTHNAME2, + LOCALE_SMONTHNAME3, + LOCALE_SMONTHNAME4, + LOCALE_SMONTHNAME5, + LOCALE_SMONTHNAME6, + LOCALE_SMONTHNAME7, + LOCALE_SMONTHNAME8, + LOCALE_SMONTHNAME9, + LOCALE_SMONTHNAME10, + LOCALE_SMONTHNAME11, + LOCALE_SMONTHNAME12, + LOCALE_SABBREVMONTHNAME1, + LOCALE_SABBREVMONTHNAME2, + LOCALE_SABBREVMONTHNAME3, + LOCALE_SABBREVMONTHNAME4, + LOCALE_SABBREVMONTHNAME5, + LOCALE_SABBREVMONTHNAME6, + LOCALE_SABBREVMONTHNAME7, + LOCALE_SABBREVMONTHNAME8, + LOCALE_SABBREVMONTHNAME9, + LOCALE_SABBREVMONTHNAME10, + LOCALE_SABBREVMONTHNAME11, + LOCALE_SABBREVMONTHNAME12, + LOCALE_SPOSITIVESIGN, + LOCALE_SNEGATIVESIGN, + LOCALE_IPOSSIGNPOSN, + LOCALE_INEGSIGNPOSN, + LOCALE_IPOSSYMPRECEDES, + LOCALE_IPOSSEPBYSPACE, + LOCALE_INEGSYMPRECEDES, + LOCALE_INEGSEPBYSPACE, + LOCALE_FONTSIGNATURE, + LOCALE_SISO639LANGNAME, + LOCALE_SISO3166CTRYNAME, // = 90 + LOCALE_SENGLANGUAGE = 0x1001, + LOCALE_SENGCOUNTRY = 0x1002, + LOCALE_IDEFAULTANSICODEPAGE = 0x1004, + LOCALE_INEGNUMBER = 0x1010, + LOCALE_STIMEFORMAT = 0x1003, + LOCALE_ITIMEMARKPOSN = 0x1005, + LOCALE_ICALENDARTYPE = 0x1009, + LOCALE_IOPTIONALCALENDAR = 0x100B, + LOCALE_IFIRSTDAYOFWEEK = 0x100C, + LOCALE_IFIRSTWEEKOFYEAR = 0x100D, + LOCALE_SMONTHNAME13 = 0x100E, + LOCALE_SABBREVMONTHNAME13 = 0x100F +} + +enum : LCID { + LOCALE_USER_DEFAULT = 0x400, + LOCALE_SYSTEM_DEFAULT = 0x800 +} + +const DWORD + NORM_IGNORECASE = 1, + NORM_IGNORENONSPACE = 2, + NORM_IGNORESYMBOLS = 4, + SORT_STRINGSORT = 0x01000, + NORM_IGNOREKANATYPE = 0x10000, + NORM_IGNOREWIDTH = 0x20000; + +const DWORD + LCMAP_LOWERCASE = 0x00000100, + LCMAP_UPPERCASE = 0x00000200, + LCMAP_SORTKEY = 0x00000400, + LCMAP_BYTEREV = 0x00000800, + LCMAP_HIRAGANA = 0x00100000, + LCMAP_KATAKANA = 0x00200000, + LCMAP_HALFWIDTH = 0x00400000, + LCMAP_FULLWIDTH = 0x00800000, + LCMAP_LINGUISTIC_CASING = 0x01000000, + LCMAP_SIMPLIFIED_CHINESE = 0x02000000, + LCMAP_TRADITIONAL_CHINESE = 0x04000000; + +const CALID ENUM_ALL_CALENDARS = -1; + +const DWORD + DATE_SHORTDATE = 1, + DATE_LONGDATE = 2, + DATE_USE_ALT_CALENDAR = 4, + LOCALE_NOUSEROVERRIDE = 0x80000000; + +enum : DWORD { + CP_INSTALLED = 1, + CP_SUPPORTED +} + +enum : DWORD { + LCID_INSTALLED = 1, + LCID_SUPPORTED = 2, + LCID_ALTERNATE_SORTS = 4 +} + +const DWORD + MAP_FOLDCZONE = 16, + MAP_PRECOMPOSED = 32, + MAP_COMPOSITE = 64, + MAP_FOLDDIGITS = 128; + +enum : UINT { + CP_ACP, + CP_OEMCP, + CP_MACCP, + CP_THREAD_ACP, // = 3 + CP_SYMBOL = 42, + CP_UTF7 = 65000, + CP_UTF8 = 65001 +} + +enum : DWORD { + CT_CTYPE1 = 1, + CT_CTYPE2 = 2, + CT_CTYPE3 = 4 +} + +const WORD + C1_UPPER = 1, + C1_LOWER = 2, + C1_DIGIT = 4, + C1_SPACE = 8, + C1_PUNCT = 16, + C1_CNTRL = 32, + C1_BLANK = 64, + C1_XDIGIT = 128, + C1_ALPHA = 256; + +enum : WORD { + C2_NOTAPPLICABLE, + C2_LEFTTORIGHT, + C2_RIGHTTOLEFT, + C2_EUROPENUMBER, + C2_EUROPESEPARATOR, + C2_EUROPETERMINATOR, + C2_ARABICNUMBER, + C2_COMMONSEPARATOR, + C2_BLOCKSEPARATOR, + C2_SEGMENTSEPARATOR, + C2_WHITESPACE, + C2_OTHERNEUTRAL // = 11 +} + +const WORD + C3_NOTAPPLICABLE = 0, + C3_NONSPACING = 1, + C3_DIACRITIC = 2, + C3_VOWELMARK = 4, + C3_SYMBOL = 8, + C3_KATAKANA = 0x0010, + C3_HIRAGANA = 0x0020, + C3_HALFWIDTH = 0x0040, + C3_FULLWIDTH = 0x0080, + C3_IDEOGRAPH = 0x0100, + C3_KASHIDA = 0x0200, + C3_LEXICAL = 0x0400, + C3_ALPHA = 0x8000; + +const DWORD + TIME_NOMINUTESORSECONDS = 1, + TIME_NOSECONDS = 2, + TIME_NOTIMEMARKER = 4, + TIME_FORCE24HOURFORMAT = 8; + +const DWORD + MB_PRECOMPOSED = 1, + MB_COMPOSITE = 2, + MB_USEGLYPHCHARS = 4, + MB_ERR_INVALID_CHARS = 8; + +const DWORD + WC_DISCARDNS = 16, + WC_SEPCHARS = 32, + WC_DEFAULTCHAR = 64, + WC_COMPOSITECHECK = 512; + +enum : LONG { + CTRY_DEFAULT = 0, + CTRY_DOMINICAN_REPUBLIC = 1, + CTRY_PUERTO_RICO = 1, + CTRY_CARIBBEAN = 1, + CTRY_JAMAICA = 1, + CTRY_UNITED_STATES = 1, + CTRY_TRINIDAD_Y_TOBAGO = 1, + CTRY_CANADA = 2, + CTRY_RUSSIA = 7, + CTRY_UZBEKISTAN = 7, + CTRY_KAZAKSTAN = 7, + CTRY_TATARSTAN = 7, + CTRY_EGYPT = 20, + CTRY_SOUTH_AFRICA = 27, + CTRY_GREECE = 30, + CTRY_NETHERLANDS = 31, + CTRY_BELGIUM = 32, + CTRY_FRANCE = 33, + CTRY_MONACO = 33, + CTRY_SPAIN = 34, + CTRY_HUNGARY = 36, + CTRY_ITALY = 39, + CTRY_ROMANIA = 40, + CTRY_SWITZERLAND = 41, + CTRY_LIECHTENSTEIN = 41, + CTRY_AUSTRIA = 43, + CTRY_UNITED_KINGDOM = 44, + CTRY_DENMARK = 45, + CTRY_SWEDEN = 46, + CTRY_NORWAY = 47, + CTRY_POLAND = 48, + CTRY_GERMANY = 49, + CTRY_PERU = 51, + CTRY_MEXICO = 52, + CTRY_ARGENTINA = 54, + CTRY_BRAZIL = 55, + CTRY_CHILE = 56, + CTRY_COLOMBIA = 57, + CTRY_VENEZUELA = 58, + CTRY_MALAYSIA = 60, + CTRY_AUSTRALIA = 61, + CTRY_INDONESIA = 62, + CTRY_PHILIPPINES = 63, + CTRY_NEW_ZEALAND = 64, + CTRY_SINGAPORE = 65, + CTRY_THAILAND = 66, + CTRY_JAPAN = 81, + CTRY_SOUTH_KOREA = 82, + CTRY_VIET_NAM = 84, + CTRY_PRCHINA = 86, + CTRY_TURKEY = 90, + CTRY_INDIA = 91, + CTRY_PAKISTAN = 92, + CTRY_MOROCCO = 212, + CTRY_ALGERIA = 213, + CTRY_TUNISIA = 216, + CTRY_LIBYA = 218, + CTRY_KENYA = 254, + CTRY_ZIMBABWE = 263, + CTRY_FAEROE_ISLANDS = 298, + CTRY_PORTUGAL = 351, + CTRY_LUXEMBOURG = 352, + CTRY_IRELAND = 353, + CTRY_ICELAND = 354, + CTRY_ALBANIA = 355, + CTRY_FINLAND = 358, + CTRY_BULGARIA = 359, + CTRY_LITHUANIA = 370, + CTRY_LATVIA = 371, + CTRY_ESTONIA = 372, + CTRY_ARMENIA = 374, + CTRY_BELARUS = 375, + CTRY_UKRAINE = 380, + CTRY_SERBIA = 381, + CTRY_CROATIA = 385, + CTRY_SLOVENIA = 386, + CTRY_MACEDONIA = 389, + CTRY_CZECH = 420, + CTRY_SLOVAK = 421, + CTRY_BELIZE = 501, + CTRY_GUATEMALA = 502, + CTRY_EL_SALVADOR = 503, + CTRY_HONDURAS = 504, + CTRY_NICARAGUA = 505, + CTRY_COSTA_RICA = 506, + CTRY_PANAMA = 507, + CTRY_BOLIVIA = 591, + CTRY_ECUADOR = 593, + CTRY_PARAGUAY = 595, + CTRY_URUGUAY = 598, + CTRY_BRUNEI_DARUSSALAM = 673, + CTRY_HONG_KONG = 852, + CTRY_MACAU = 853, + CTRY_TAIWAN = 886, + CTRY_MALDIVES = 960, + CTRY_LEBANON = 961, + CTRY_JORDAN = 962, + CTRY_SYRIA = 963, + CTRY_IRAQ = 964, + CTRY_KUWAIT = 965, + CTRY_SAUDI_ARABIA = 966, + CTRY_YEMEN = 967, + CTRY_OMAN = 968, + CTRY_UAE = 971, + CTRY_ISRAEL = 972, + CTRY_BAHRAIN = 973, + CTRY_QATAR = 974, + CTRY_MONGOLIA = 976, + CTRY_IRAN = 981, + CTRY_AZERBAIJAN = 994, + CTRY_GEORGIA = 995, + CTRY_KYRGYZSTAN = 996 +} + +enum : CALTYPE { + CAL_ICALINTVALUE = 1, + CAL_SCALNAME, + CAL_IYEAROFFSETRANGE, + CAL_SERASTRING, + CAL_SSHORTDATE, + CAL_SLONGDATE, + CAL_SDAYNAME1, + CAL_SDAYNAME2, + CAL_SDAYNAME3, + CAL_SDAYNAME4, + CAL_SDAYNAME5, + CAL_SDAYNAME6, + CAL_SDAYNAME7, + CAL_SABBREVDAYNAME1, + CAL_SABBREVDAYNAME2, + CAL_SABBREVDAYNAME3, + CAL_SABBREVDAYNAME4, + CAL_SABBREVDAYNAME5, + CAL_SABBREVDAYNAME6, + CAL_SABBREVDAYNAME7, + CAL_SMONTHNAME1, + CAL_SMONTHNAME2, + CAL_SMONTHNAME3, + CAL_SMONTHNAME4, + CAL_SMONTHNAME5, + CAL_SMONTHNAME6, + CAL_SMONTHNAME7, + CAL_SMONTHNAME8, + CAL_SMONTHNAME9, + CAL_SMONTHNAME10, + CAL_SMONTHNAME11, + CAL_SMONTHNAME12, + CAL_SMONTHNAME13, + CAL_SABBREVMONTHNAME1, + CAL_SABBREVMONTHNAME2, + CAL_SABBREVMONTHNAME3, + CAL_SABBREVMONTHNAME4, + CAL_SABBREVMONTHNAME5, + CAL_SABBREVMONTHNAME6, + CAL_SABBREVMONTHNAME7, + CAL_SABBREVMONTHNAME8, + CAL_SABBREVMONTHNAME9, + CAL_SABBREVMONTHNAME10, + CAL_SABBREVMONTHNAME11, + CAL_SABBREVMONTHNAME12, + CAL_SABBREVMONTHNAME13 // = 46 +} + + +enum : CALTYPE { + CAL_GREGORIAN = 1, + CAL_GREGORIAN_US, + CAL_JAPAN, + CAL_TAIWAN, + CAL_KOREA, + CAL_HIJRI, + CAL_THAI, + CAL_HEBREW, + CAL_GREGORIAN_ME_FRENCH, + CAL_GREGORIAN_ARABIC, + CAL_GREGORIAN_XLIT_ENGLISH, + CAL_GREGORIAN_XLIT_FRENCH // = 12 +} + +enum : int { + CSTR_LESS_THAN = 1, + CSTR_EQUAL, + CSTR_GREATER_THAN +} + +enum : DWORD { + LGRPID_INSTALLED = 1, + LGRPID_SUPPORTED +} + +enum : LGRPID { + LGRPID_WESTERN_EUROPE = 1, + LGRPID_CENTRAL_EUROPE, + LGRPID_BALTIC, + LGRPID_GREEK, + LGRPID_CYRILLIC, + LGRPID_TURKISH, + LGRPID_JAPANESE, + LGRPID_KOREAN, + LGRPID_TRADITIONAL_CHINESE, + LGRPID_SIMPLIFIED_CHINESE, + LGRPID_THAI, + LGRPID_HEBREW, + LGRPID_ARABIC, + LGRPID_VIETNAMESE, + LGRPID_INDIC, + LGRPID_GEORGIAN, + LGRPID_ARMENIAN // = 17 +} + +static if (_WIN32_WINNT >= 0x500) { + enum : LCTYPE { + LOCALE_SYEARMONTH = 0x1006, + LOCALE_SENGCURRNAME = 0x1007, + LOCALE_SNATIVECURRNAME = 0x1008, + LOCALE_IDEFAULTEBCDICCODEPAGE = 0x1012, + LOCALE_SSORTNAME = 0x1013, + LOCALE_IDIGITSUBSTITUTION = 0x1014, + LOCALE_IPAPERSIZE = 0x100A + } + + const DWORD + DATE_YEARMONTH = 8, + DATE_LTRREADING = 16, + DATE_RTLREADING = 32; + + const DWORD MAP_EXPAND_LIGATURES = 0x2000; + const DWORD WC_NO_BEST_FIT_CHARS = 1024; + + enum : CALTYPE { + CAL_SYEARMONTH = 47, + CAL_ITWODIGITYEARMAX = 48, + CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE, + CAL_RETURN_NUMBER = LOCALE_RETURN_NUMBER, + CAL_USE_CP_ACP = LOCALE_USE_CP_ACP + } +} // (_WIN32_WINNT >= 0x500) + +extern (Windows) { + alias BOOL function(LPSTR) CALINFO_ENUMPROCA; + alias BOOL function(LPWSTR) CALINFO_ENUMPROCW; + alias BOOL function(LPSTR, CALID) CALINFO_ENUMPROCEXA; + alias BOOL function(LPWSTR, CALID) CALINFO_ENUMPROCEXW; + alias BOOL function(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR) + LANGUAGEGROUP_ENUMPROCA; + alias BOOL function(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR) + LANGUAGEGROUP_ENUMPROCW; + alias BOOL function(LGRPID, LCID, LPSTR, LONG_PTR) + LANGGROUPLOCALE_ENUMPROCA; + alias BOOL function(LGRPID, LCID, LPWSTR, LONG_PTR) + LANGGROUPLOCALE_ENUMPROCW; + alias BOOL function(LPWSTR, LONG_PTR) UILANGUAGE_ENUMPROCW; + alias BOOL function(LPSTR, LONG_PTR) UILANGUAGE_ENUMPROCA; + alias BOOL function(LPSTR) LOCALE_ENUMPROCA; + alias BOOL function(LPWSTR) LOCALE_ENUMPROCW; + alias BOOL function(LPSTR) CODEPAGE_ENUMPROCA; + alias BOOL function(LPWSTR) CODEPAGE_ENUMPROCW; + alias BOOL function(LPSTR) DATEFMT_ENUMPROCA; + alias BOOL function(LPWSTR) DATEFMT_ENUMPROCW; + alias BOOL function(LPSTR, CALID) DATEFMT_ENUMPROCEXA; + alias BOOL function(LPWSTR, CALID) DATEFMT_ENUMPROCEXW; + alias BOOL function(LPSTR) TIMEFMT_ENUMPROCA; + alias BOOL function(LPWSTR) TIMEFMT_ENUMPROCW; + alias BOOL function(GEOID) GEO_ENUMPROC; +} + +enum NLS_FUNCTION { + COMPARE_STRING = 0x0001 +} + +enum SYSGEOCLASS { + GEOCLASS_NATION = 16, + GEOCLASS_REGION = 14 +} + +enum SYSGEOTYPE { + GEO_NATION = 0x0001, + GEO_LATITUDE = 0x0002, + GEO_LONGITUDE = 0x0003, + GEO_ISO2 = 0x0004, + GEO_ISO3 = 0x0005, + GEO_RFC1766 = 0x0006, + GEO_LCID = 0x0007, + GEO_FRIENDLYNAME = 0x0008, + GEO_OFFICIALNAME = 0x0009, + GEO_TIMEZONES = 0x000a, + GEO_OFFICIALLANGUAGES = 0x000a +} + +struct CPINFO { + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; +} +alias CPINFO* LPCPINFO; + +struct CPINFOEXA { + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; + WCHAR UnicodeDefaultChar; + UINT CodePage; + CHAR[MAX_PATH] CodePageName; +} +alias CPINFOEXA* LPCPINFOEXA; + +struct CPINFOEXW { + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; + WCHAR UnicodeDefaultChar; + UINT CodePage; + WCHAR[MAX_PATH] CodePageName; +} +alias CPINFOEXW* LPCPINFOEXW; + +struct CURRENCYFMTA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPSTR lpCurrencySymbol; +} +alias CURRENCYFMTA* LPCURRENCYFMTA; + +struct CURRENCYFMTW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPWSTR lpCurrencySymbol; +} +alias CURRENCYFMTW* LPCURRENCYFMTW; + +struct NLSVERSIONINFO { + DWORD dwNLSVersionInfoSize; + DWORD dwNLSVersion; + DWORD dwDefinedVersion; +} +alias NLSVERSIONINFO* LPNLSVERSIONINFO; + +struct NUMBERFMTA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; +} +alias NUMBERFMTA* LPNUMBERFMTA; + +struct NUMBERFMTW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; +} +alias NUMBERFMTW* LPNUMBERFMTW; + +extern (Windows) { + int CompareStringA(LCID, DWORD, LPCSTR, int, LPCSTR, int); + int CompareStringW(LCID, DWORD, LPCWSTR, int, LPCWSTR, int); + LCID ConvertDefaultLocale(LCID); + BOOL EnumCalendarInfoA(CALINFO_ENUMPROCA, LCID, CALID, CALTYPE); + BOOL EnumCalendarInfoW(CALINFO_ENUMPROCW, LCID, CALID, CALTYPE); + BOOL EnumDateFormatsA(DATEFMT_ENUMPROCA, LCID, DWORD); + BOOL EnumDateFormatsW(DATEFMT_ENUMPROCW, LCID, DWORD); + BOOL EnumSystemCodePagesA(CODEPAGE_ENUMPROCA, DWORD); + BOOL EnumSystemCodePagesW(CODEPAGE_ENUMPROCW, DWORD); + BOOL EnumSystemGeoID(GEOCLASS, GEOID, GEO_ENUMPROC); + BOOL EnumSystemLocalesA(LOCALE_ENUMPROCA, DWORD); + BOOL EnumSystemLocalesW(LOCALE_ENUMPROCW, DWORD); + BOOL EnumTimeFormatsA(TIMEFMT_ENUMPROCA, LCID, DWORD); + BOOL EnumTimeFormatsW(TIMEFMT_ENUMPROCW, LCID, DWORD); + int FoldStringA(DWORD, LPCSTR, int, LPSTR, int); + int FoldStringW(DWORD, LPCWSTR, int, LPWSTR, int); + UINT GetACP(); + int GetCalendarInfoA(LCID, CALID, CALTYPE, LPSTR, int, LPDWORD); + int GetCalendarInfoW(LCID, CALID, CALTYPE, LPWSTR, int, LPDWORD); + BOOL GetCPInfo(UINT, LPCPINFO); + BOOL GetCPInfoExA(UINT, DWORD, LPCPINFOEXA); + BOOL GetCPInfoExW(UINT, DWORD, LPCPINFOEXW); + int GetCurrencyFormatA(LCID, DWORD, LPCSTR, const(CURRENCYFMTA)*, LPSTR, int); + int GetCurrencyFormatW(LCID, DWORD, LPCWSTR, const(CURRENCYFMTW)*, LPWSTR, + int); + int GetDateFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); + int GetDateFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); + int GetGeoInfoA(GEOID, GEOTYPE, LPSTR, int, LANGID); + int GetGeoInfoW(GEOID, GEOTYPE, LPWSTR, int, LANGID); + int GetLocaleInfoA(LCID, LCTYPE, LPSTR, int); + int GetLocaleInfoW(LCID, LCTYPE, LPWSTR, int); + BOOL GetNLSVersion(NLS_FUNCTION, LCID, LPNLSVERSIONINFO); + int GetNumberFormatA(LCID, DWORD, LPCSTR, const(NUMBERFMTA)*, LPSTR, int); + int GetNumberFormatW(LCID, DWORD, LPCWSTR, const(NUMBERFMTW)*, LPWSTR, int); + UINT GetOEMCP(); + BOOL GetStringTypeA(LCID, DWORD, LPCSTR, int, LPWORD); + BOOL GetStringTypeW(DWORD, LPCWSTR, int, LPWORD); + BOOL GetStringTypeExA(LCID, DWORD, LPCSTR, int, LPWORD); + BOOL GetStringTypeExW(LCID, DWORD, LPCWSTR, int, LPWORD); + LANGID GetSystemDefaultLangID(); + LCID GetSystemDefaultLCID(); + LCID GetThreadLocale(); + int GetTimeFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); + int GetTimeFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); + LANGID GetUserDefaultLangID(); + LCID GetUserDefaultLCID(); + GEOID GetUserGeoID(GEOCLASS); + BOOL IsDBCSLeadByte(BYTE); + BOOL IsDBCSLeadByteEx(UINT, BYTE); + BOOL IsNLSDefinedString(NLS_FUNCTION, DWORD, LPNLSVERSIONINFO, LPCWSTR, + int); + BOOL IsValidCodePage(UINT); + BOOL IsValidLocale(LCID, DWORD); + int LCMapStringA(LCID, DWORD, LPCSTR, int, LPSTR, int); + int LCMapStringW(LCID, DWORD, LPCWSTR, int, LPWSTR, int); + int MultiByteToWideChar(UINT, DWORD, LPCSTR, int, LPWSTR, int); + int SetCalendarInfoA(LCID, CALID, CALTYPE, LPCSTR); + int SetCalendarInfoW(LCID, CALID, CALTYPE, LPCWSTR); + BOOL SetLocaleInfoA(LCID, LCTYPE, LPCSTR); + BOOL SetLocaleInfoW(LCID, LCTYPE, LPCWSTR); + BOOL SetThreadLocale(LCID); + BOOL SetUserGeoID(GEOID); + int WideCharToMultiByte(UINT, DWORD, LPCWSTR, int, LPSTR, int, LPCSTR, + LPBOOL); + + static if (_WIN32_WINNT >= 0x410) { + BOOL EnumCalendarInfoExA(CALINFO_ENUMPROCEXA, LCID, CALID, CALTYPE); + BOOL EnumCalendarInfoExW(CALINFO_ENUMPROCEXW, LCID, CALID, CALTYPE); + BOOL EnumDateFormatsExA(DATEFMT_ENUMPROCEXA, LCID, DWORD); + BOOL EnumDateFormatsExW(DATEFMT_ENUMPROCEXW, LCID, DWORD); + BOOL IsValidLanguageGroup(LGRPID, DWORD); + } + + static if (_WIN32_WINNT >= 0x500) { + LANGID GetSystemDefaultUILanguage(); + LANGID GetUserDefaultUILanguage(); + + BOOL EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA, DWORD, + LONG_PTR); + BOOL EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW, DWORD, + LONG_PTR); + BOOL EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA, LGRPID, + DWORD, LONG_PTR); + BOOL EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW, LGRPID, + DWORD, LONG_PTR); + BOOL EnumUILanguagesA(UILANGUAGE_ENUMPROCA, DWORD, LONG_PTR); + BOOL EnumUILanguagesW(UILANGUAGE_ENUMPROCW, DWORD, LONG_PTR); + } +} + +version (Unicode) { + alias CALINFO_ENUMPROCW CALINFO_ENUMPROC; + alias CALINFO_ENUMPROCEXW CALINFO_ENUMPROCEX; + alias LOCALE_ENUMPROCW LOCALE_ENUMPROC; + alias CODEPAGE_ENUMPROCW CODEPAGE_ENUMPROC; + alias DATEFMT_ENUMPROCW DATEFMT_ENUMPROC; + alias DATEFMT_ENUMPROCEXW DATEFMT_ENUMPROCEX; + alias TIMEFMT_ENUMPROCW TIMEFMT_ENUMPROC; + alias LANGUAGEGROUP_ENUMPROCW LANGUAGEGROUP_ENUMPROC; + alias LANGGROUPLOCALE_ENUMPROCW LANGGROUPLOCALE_ENUMPROC; + alias UILANGUAGE_ENUMPROCW UILANGUAGE_ENUMPROC; + alias CPINFOEXW CPINFOEX; + alias LPCPINFOEXW LPCPINFOEX; + alias CURRENCYFMTW CURRENCYFMT; + alias LPCURRENCYFMTW LPCURRENCYFMT; + alias NUMBERFMTW NUMBERFMT; + alias LPNUMBERFMTW LPNUMBERFMT; + alias CompareStringW CompareString; + alias EnumCalendarInfoW EnumCalendarInfo; + alias EnumSystemCodePagesW EnumSystemCodePages; + alias EnumSystemLocalesW EnumSystemLocales; + alias EnumTimeFormatsW EnumTimeFormats; + alias FoldStringW FoldString; + alias GetCalendarInfoW GetCalendarInfo; + alias GetCPInfoExW GetCPInfoEx; + alias GetCurrencyFormatW GetCurrencyFormat; + alias GetDateFormatW GetDateFormat; + alias GetGeoInfoW GetGeoInfo; + alias GetLocaleInfoW GetLocaleInfo; + alias GetNumberFormatW GetNumberFormat; + alias GetStringTypeExW GetStringTypeEx; + alias GetTimeFormatW GetTimeFormat; + alias LCMapStringW LCMapString; + alias SetCalendarInfoW SetCalendarInfo; + alias SetLocaleInfoW SetLocaleInfo; + + static if (_WIN32_WINNT >= 0x410) { + alias EnumCalendarInfoExW EnumCalendarInfoEx; + alias EnumDateFormatsExW EnumDateFormatsEx; + } + + static if (_WIN32_WINNT >= 0x500) { + alias EnumSystemLanguageGroupsW EnumSystemLanguageGroups; + alias EnumLanguageGroupLocalesW EnumLanguageGroupLocales; + alias EnumUILanguagesW EnumUILanguages; + } + +} else { + alias CALINFO_ENUMPROCA CALINFO_ENUMPROC; + alias CALINFO_ENUMPROCEXA CALINFO_ENUMPROCEX; + alias LOCALE_ENUMPROCA LOCALE_ENUMPROC; + alias CODEPAGE_ENUMPROCA CODEPAGE_ENUMPROC; + alias DATEFMT_ENUMPROCA DATEFMT_ENUMPROC; + alias DATEFMT_ENUMPROCEXA DATEFMT_ENUMPROCEX; + alias TIMEFMT_ENUMPROCA TIMEFMT_ENUMPROC; + alias LANGUAGEGROUP_ENUMPROCA LANGUAGEGROUP_ENUMPROC; + alias LANGGROUPLOCALE_ENUMPROCA LANGGROUPLOCALE_ENUMPROC; + alias UILANGUAGE_ENUMPROCA UILANGUAGE_ENUMPROC; + alias CPINFOEXA CPINFOEX; + alias LPCPINFOEXA LPCPINFOEX; + alias CURRENCYFMTA CURRENCYFMT; + alias LPCURRENCYFMTA LPCURRENCYFMT; + alias NUMBERFMTA NUMBERFMT; + alias LPNUMBERFMTA LPNUMBERFMT; + alias CompareStringA CompareString; + alias EnumCalendarInfoA EnumCalendarInfo; + alias EnumSystemCodePagesA EnumSystemCodePages; + alias EnumSystemLocalesA EnumSystemLocales; + alias EnumTimeFormatsA EnumTimeFormats; + alias FoldStringA FoldString; + alias GetCalendarInfoA GetCalendarInfo; + alias GetCPInfoExA GetCPInfoEx; + alias GetCurrencyFormatA GetCurrencyFormat; + alias GetDateFormatA GetDateFormat; + alias GetGeoInfoA GetGeoInfo; + alias GetLocaleInfoA GetLocaleInfo; + alias GetNumberFormatA GetNumberFormat; + alias GetStringTypeExA GetStringTypeEx; + alias GetTimeFormatA GetTimeFormat; + alias LCMapStringA LCMapString; + alias SetCalendarInfoA SetCalendarInfo; + alias SetLocaleInfoA SetLocaleInfo; + + static if (_WIN32_WINNT >= 0x410) { + alias EnumCalendarInfoExA EnumCalendarInfoEx; + alias EnumDateFormatsExA EnumDateFormatsEx; + } + + static if (_WIN32_WINNT >= 0x500) { + alias EnumSystemLanguageGroupsA EnumSystemLanguageGroups; + alias EnumLanguageGroupLocalesA EnumLanguageGroupLocales; + alias EnumUILanguagesA EnumUILanguages; + } +} diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index 0915ad3fa2..f2a56c41c6 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -1,4102 +1,4102 @@ -/** - * Windows API header module - * - * Translated from MinGW API for MS-Windows 3.12 - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winnt.d) - */ -module core.sys.windows.winnt; - -public import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winerror; -private import core.sys.windows.w32api; - -/* Translation Notes: -The following macros are unneeded for D: -FIELD_OFFSET(t,f), CONTAINING_RECORD(address, type, field) -*/ - -alias void VOID; -alias char CHAR, CCHAR; -alias wchar WCHAR; -alias bool BOOLEAN; -alias byte FCHAR; -alias ubyte UCHAR; -alias short SHORT; -alias ushort LANGID, FSHORT; -alias uint LCID, FLONG, ACCESS_MASK; -alias long LONGLONG, USN; -alias ulong DWORDLONG, ULONGLONG; - -alias void* PVOID, LPVOID; -alias char* PSZ, PCHAR, PCCHAR, LPCH, PCH, LPSTR, PSTR; -alias wchar* PWCHAR, LPWCH, PWCH, LPWSTR, PWSTR; -alias bool* PBOOLEAN; -alias ubyte* PUCHAR; -alias short* PSHORT; -alias int* PLONG; -alias uint* PLCID, PACCESS_MASK; -alias long* PLONGLONG; -alias ulong* PDWORDLONG, PULONGLONG; - -// FIXME(MinGW) for __WIN64 -alias void* PVOID64; - -// const versions -alias const(char)* LPCCH, PCSTR, LPCSTR; -alias const(wchar)* LPCWCH, PCWCH, LPCWSTR, PCWSTR; - -version (Unicode) { - alias WCHAR TCHAR, _TCHAR; -} else { - alias CHAR TCHAR, _TCHAR; -} - -alias TCHAR TBYTE; -alias TCHAR* PTCH, PTBYTE, LPTCH, PTSTR, LPTSTR, LP, PTCHAR; -alias const(TCHAR)* LPCTSTR; - -const char ANSI_NULL = '\0'; -const wchar UNICODE_NULL = '\0'; - -const APPLICATION_ERROR_MASK = 0x20000000; -const ERROR_SEVERITY_SUCCESS = 0x00000000; -const ERROR_SEVERITY_INFORMATIONAL = 0x40000000; -const ERROR_SEVERITY_WARNING = 0x80000000; -const ERROR_SEVERITY_ERROR = 0xC0000000; - -// MinGW: also in ddk/ntifs.h -enum : USHORT { - COMPRESSION_FORMAT_NONE = 0x0000, - COMPRESSION_FORMAT_DEFAULT = 0x0001, - COMPRESSION_FORMAT_LZNT1 = 0x0002, - COMPRESSION_ENGINE_STANDARD = 0x0000, - COMPRESSION_ENGINE_MAXIMUM = 0x0100, - COMPRESSION_ENGINE_HIBER = 0x0200 -} - -// ACCESS_DENIED_OBJECT_ACE, etc -const DWORD - ACE_OBJECT_TYPE_PRESENT = 0x00000001, - ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002; - -// ACE_HEADER.AceType -// also in ddk/ntifs.h -enum : BYTE { - ACCESS_ALLOWED_ACE_TYPE, - ACCESS_DENIED_ACE_TYPE, - SYSTEM_AUDIT_ACE_TYPE, - SYSTEM_ALARM_ACE_TYPE -} - -// ACE_HEADER.AceFlags -const BYTE - OBJECT_INHERIT_ACE = 0x01, - CONTAINER_INHERIT_ACE = 0x02, - NO_PROPAGATE_INHERIT_ACE = 0x04, - INHERIT_ONLY_ACE = 0x08, - INHERITED_ACE = 0x10, - VALID_INHERIT_FLAGS = 0x1F, - SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, - FAILED_ACCESS_ACE_FLAG = 0x80; - -// Access Mask Format -const ACCESS_MASK - DELETE = 0x00010000, - READ_CONTROL = 0x00020000, - WRITE_DAC = 0x00040000, - WRITE_OWNER = 0x00080000, - SYNCHRONIZE = 0x00100000, - ACCESS_SYSTEM_SECURITY = 0x01000000, - MAXIMUM_ALLOWED = 0x02000000, - GENERIC_READ = 0x80000000, - GENERIC_WRITE = 0x40000000, - GENERIC_EXECUTE = 0x20000000, - GENERIC_ALL = 0x10000000, - STANDARD_RIGHTS_REQUIRED = 0x000F0000, - STANDARD_RIGHTS_READ = 0x00020000, - STANDARD_RIGHTS_WRITE = 0x00020000, - STANDARD_RIGHTS_EXECUTE = 0x00020000, - STANDARD_RIGHTS_ALL = 0x001F0000, - SPECIFIC_RIGHTS_ALL = 0x0000FFFF; - - -const DWORD INVALID_FILE_ATTRIBUTES = -1; - -// MinGW: Also in ddk/winddk.h -const DWORD - FILE_LIST_DIRECTORY = 0x00000001, - FILE_READ_DATA = 0x00000001, - FILE_ADD_FILE = 0x00000002, - FILE_WRITE_DATA = 0x00000002, - FILE_ADD_SUBDIRECTORY = 0x00000004, - FILE_APPEND_DATA = 0x00000004, - FILE_CREATE_PIPE_INSTANCE = 0x00000004, - FILE_READ_EA = 0x00000008, - FILE_READ_PROPERTIES = 0x00000008, - FILE_WRITE_EA = 0x00000010, - FILE_WRITE_PROPERTIES = 0x00000010, - FILE_EXECUTE = 0x00000020, - FILE_TRAVERSE = 0x00000020, - FILE_DELETE_CHILD = 0x00000040, - FILE_READ_ATTRIBUTES = 0x00000080, - FILE_WRITE_ATTRIBUTES = 0x00000100; - -const DWORD - FILE_SHARE_READ = 0x00000001, - FILE_SHARE_WRITE = 0x00000002, - FILE_SHARE_DELETE = 0x00000004, - FILE_SHARE_VALID_FLAGS = 0x00000007; - -const DWORD - FILE_ATTRIBUTE_READONLY = 0x00000001, - FILE_ATTRIBUTE_HIDDEN = 0x00000002, - FILE_ATTRIBUTE_SYSTEM = 0x00000004, - FILE_ATTRIBUTE_DIRECTORY = 0x00000010, - FILE_ATTRIBUTE_ARCHIVE = 0x00000020, - FILE_ATTRIBUTE_DEVICE = 0x00000040, - FILE_ATTRIBUTE_NORMAL = 0x00000080, - FILE_ATTRIBUTE_TEMPORARY = 0x00000100, - FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200, - FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400, - FILE_ATTRIBUTE_COMPRESSED = 0x00000800, - FILE_ATTRIBUTE_OFFLINE = 0x00001000, - FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000, - FILE_ATTRIBUTE_ENCRYPTED = 0x00004000, - FILE_ATTRIBUTE_VALID_FLAGS = 0x00007fb7, - FILE_ATTRIBUTE_VALID_SET_FLAGS = 0x000031a7; - -// These are not documented on MSDN -const FILE_COPY_STRUCTURED_STORAGE = 0x00000041; -const FILE_STRUCTURED_STORAGE = 0x00000441; - -// Nor are these -const FILE_VALID_OPTION_FLAGS = 0x00ffffff; -const FILE_VALID_PIPE_OPTION_FLAGS = 0x00000032; -const FILE_VALID_MAILSLOT_OPTION_FLAGS = 0x00000032; -const FILE_VALID_SET_FLAGS = 0x00000036; - -const ULONG - FILE_SUPERSEDE = 0x00000000, - FILE_OPEN = 0x00000001, - FILE_CREATE = 0x00000002, - FILE_OPEN_IF = 0x00000003, - FILE_OVERWRITE = 0x00000004, - FILE_OVERWRITE_IF = 0x00000005, - FILE_MAXIMUM_DISPOSITION = 0x00000005; - -const ULONG - FILE_DIRECTORY_FILE = 0x00000001, - FILE_WRITE_THROUGH = 0x00000002, - FILE_SEQUENTIAL_ONLY = 0x00000004, - FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008, - FILE_SYNCHRONOUS_IO_ALERT = 0x00000010, - FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020, - FILE_NON_DIRECTORY_FILE = 0x00000040, - FILE_CREATE_TREE_CONNECTION = 0x00000080, - FILE_COMPLETE_IF_OPLOCKED = 0x00000100, - FILE_NO_EA_KNOWLEDGE = 0x00000200, - FILE_OPEN_FOR_RECOVERY = 0x00000400, - FILE_RANDOM_ACCESS = 0x00000800, - FILE_DELETE_ON_CLOSE = 0x00001000, - FILE_OPEN_BY_FILE_ID = 0x00002000, - FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000, - FILE_NO_COMPRESSION = 0x00008000, - FILE_RESERVE_OPFILTER = 0x00100000, - FILE_OPEN_REPARSE_POINT = 0x00200000, - FILE_OPEN_NO_RECALL = 0x00400000, - FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000; - - -const ACCESS_MASK - FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x01FF, - FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES - | FILE_EXECUTE | SYNCHRONIZE, - FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA - | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE, - FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA - | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA - | SYNCHRONIZE; - -// MinGW: end winddk.h -// MinGW: also in ddk/ntifs.h -const DWORD - FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, - FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, - FILE_NOTIFY_CHANGE_NAME = 0x00000003, - FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004, - FILE_NOTIFY_CHANGE_SIZE = 0x00000008, - FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010, - FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020, - FILE_NOTIFY_CHANGE_CREATION = 0x00000040, - FILE_NOTIFY_CHANGE_EA = 0x00000080, - FILE_NOTIFY_CHANGE_SECURITY = 0x00000100, - FILE_NOTIFY_CHANGE_STREAM_NAME = 0x00000200, - FILE_NOTIFY_CHANGE_STREAM_SIZE = 0x00000400, - FILE_NOTIFY_CHANGE_STREAM_WRITE = 0x00000800, - FILE_NOTIFY_VALID_MASK = 0x00000fff; - -const DWORD - FILE_CASE_SENSITIVE_SEARCH = 0x00000001, - FILE_CASE_PRESERVED_NAMES = 0x00000002, - FILE_UNICODE_ON_DISK = 0x00000004, - FILE_PERSISTENT_ACLS = 0x00000008, - FILE_FILE_COMPRESSION = 0x00000010, - FILE_VOLUME_QUOTAS = 0x00000020, - FILE_SUPPORTS_SPARSE_FILES = 0x00000040, - FILE_SUPPORTS_REPARSE_POINTS = 0x00000080, - FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100, - FS_LFN_APIS = 0x00004000, - FILE_VOLUME_IS_COMPRESSED = 0x00008000, - FILE_SUPPORTS_OBJECT_IDS = 0x00010000, - FILE_SUPPORTS_ENCRYPTION = 0x00020000, - FILE_NAMED_STREAMS = 0x00040000, - FILE_READ_ONLY_VOLUME = 0x00080000, - FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000, - FILE_SUPPORTS_TRANSACTIONS = 0x00200000; - -// These are not documented on MSDN -const ACCESS_MASK - IO_COMPLETION_QUERY_STATE = 1, - IO_COMPLETION_MODIFY_STATE = 2, - IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 3; -// MinGW: end ntifs.h - -// MinGW: also in ddk/winddk.h -const DWORD - DUPLICATE_CLOSE_SOURCE = 1, - DUPLICATE_SAME_ACCESS = 2, - DUPLICATE_SAME_ATTRIBUTES = 4; -// MinGW: end winddk.k - -const DWORD - MAILSLOT_NO_MESSAGE = -1, - MAILSLOT_WAIT_FOREVER = -1; - -const ACCESS_MASK - PROCESS_TERMINATE = 0x0001, - PROCESS_CREATE_THREAD = 0x0002, - PROCESS_SET_SESSIONID = 0x0004, - PROCESS_VM_OPERATION = 0x0008, - PROCESS_VM_READ = 0x0010, - PROCESS_VM_WRITE = 0x0020, - PROCESS_DUP_HANDLE = 0x0040, - PROCESS_CREATE_PROCESS = 0x0080, - PROCESS_SET_QUOTA = 0x0100, - PROCESS_SET_INFORMATION = 0x0200, - PROCESS_QUERY_INFORMATION = 0x0400, - PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0FFF; - -const ACCESS_MASK - THREAD_TERMINATE = 0x0001, - THREAD_SUSPEND_RESUME = 0x0002, - THREAD_GET_CONTEXT = 0x0008, - THREAD_SET_CONTEXT = 0x0010, - THREAD_SET_INFORMATION = 0x0020, - THREAD_QUERY_INFORMATION = 0x0040, - THREAD_SET_THREAD_TOKEN = 0x0080, - THREAD_IMPERSONATE = 0x0100, - THREAD_DIRECT_IMPERSONATION = 0x0200, - THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF; - -// These are not documented on MSDN -const THREAD_BASE_PRIORITY_LOWRT = 15; -const THREAD_BASE_PRIORITY_MAX = 2; -const THREAD_BASE_PRIORITY_MIN = -2; -const THREAD_BASE_PRIORITY_IDLE = -15; - -const DWORD EXCEPTION_NONCONTINUABLE = 1; -const size_t EXCEPTION_MAXIMUM_PARAMETERS = 15; - -// These are not documented on MSDN -const ACCESS_MASK - MUTANT_QUERY_STATE = 1, - MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE; - -const ACCESS_MASK - TIMER_QUERY_STATE = 1, - TIMER_MODIFY_STATE = 2, - TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE - | TIMER_MODIFY_STATE; - -const SID_IDENTIFIER_AUTHORITY - SECURITY_NULL_SID_AUTHORITY = {[5: 0]}, - SECURITY_WORLD_SID_AUTHORITY = {[5: 1]}, - SECURITY_LOCAL_SID_AUTHORITY = {[5: 2]}, - SECURITY_CREATOR_SID_AUTHORITY = {[5: 3]}, - SECURITY_NON_UNIQUE_AUTHORITY = {[5: 4]}, - SECURITY_NT_AUTHORITY = {[5: 5]}, - SECURITY_MANDATORY_LABEL_AUTHORITY = {[5: 6]}; - -const DWORD - SECURITY_NULL_RID = 0, - SECURITY_WORLD_RID = 0, - SECURITY_LOCAL_RID = 0, - SECURITY_CREATOR_OWNER_RID = 0, - SECURITY_CREATOR_GROUP_RID = 1, - SECURITY_DIALUP_RID = 1, - SECURITY_NETWORK_RID = 2, - SECURITY_BATCH_RID = 3, - SECURITY_INTERACTIVE_RID = 4, - SECURITY_LOGON_IDS_RID = 5, - SECURITY_SERVICE_RID = 6, - SECURITY_LOCAL_SYSTEM_RID = 18, - SECURITY_BUILTIN_DOMAIN_RID = 32, - SECURITY_PRINCIPAL_SELF_RID = 10, - SECURITY_CREATOR_OWNER_SERVER_RID = 2, - SECURITY_CREATOR_GROUP_SERVER_RID = 3, - SECURITY_LOGON_IDS_RID_COUNT = 3, - SECURITY_ANONYMOUS_LOGON_RID = 7, - SECURITY_PROXY_RID = 8, - SECURITY_ENTERPRISE_CONTROLLERS_RID = 9, - SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID, - SECURITY_AUTHENTICATED_USER_RID = 11, - SECURITY_RESTRICTED_CODE_RID = 12, - SECURITY_NT_NON_UNIQUE_RID = 21, - SID_REVISION = 1; - -enum : DWORD { - DOMAIN_USER_RID_ADMIN = 0x01F4, - DOMAIN_USER_RID_GUEST = 0x01F5, - DOMAIN_GROUP_RID_ADMINS = 0x0200, - DOMAIN_GROUP_RID_USERS = 0x0201, - DOMAIN_ALIAS_RID_ADMINS = 0x0220, - DOMAIN_ALIAS_RID_USERS = 0x0221, - DOMAIN_ALIAS_RID_GUESTS = 0x0222, - DOMAIN_ALIAS_RID_POWER_USERS = 0x0223, - DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x0224, - DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x0225, - DOMAIN_ALIAS_RID_PRINT_OPS = 0x0226, - DOMAIN_ALIAS_RID_BACKUP_OPS = 0x0227, - DOMAIN_ALIAS_RID_REPLICATOR = 0x0228 -} - -enum : WORD { - SECURITY_MANDATORY_UNTRUSTED_RID = 0, - SECURITY_MANDATORY_LOW_RID = 0x1000, - SECURITY_MANDATORY_MEDIUM_RID = 0x2000, - SECURITY_MANDATORY_HIGH_RID = 0x3000, - SECURITY_MANDATORY_SYSTEM_RID = 0x4000, - SECURITY_MANDATORY_PROTECTED_PROCESS_RID = 0x5000, - SECURITY_MANDATORY_MAXIMUM_USER_RID = SECURITY_MANDATORY_SYSTEM_RID -} - -const TCHAR[] - SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege", - SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege", - SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege", - SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege", - SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege", - SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege", - SE_TCB_NAME = "SeTcbPrivilege", - SE_SECURITY_NAME = "SeSecurityPrivilege", - SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege", - SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege", - SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege", - SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege", - SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege", - SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege", - SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege", - SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege", - SE_BACKUP_NAME = "SeBackupPrivilege", - SE_RESTORE_NAME = "SeRestorePrivilege", - SE_SHUTDOWN_NAME = "SeShutdownPrivilege", - SE_DEBUG_NAME = "SeDebugPrivilege", - SE_AUDIT_NAME = "SeAuditPrivilege", - SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege", - SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege", - SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege", - SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege", - SE_UNDOCK_NAME = "SeUndockPrivilege", - SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege", - SE_IMPERSONATE_NAME = "SeImpersonatePrivilege", - SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege", - SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege", - SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege", - SE_RELABEL_NAME = "SeRelabelPrivilege", - SE_INCREASE_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege", - SE_TIME_ZONE_NAME = "SeTimeZonePrivilege", - SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"; - -const DWORD - SE_GROUP_MANDATORY = 0x00000001, - SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002, - SE_GROUP_ENABLED = 0x00000004, - SE_GROUP_OWNER = 0x00000008, - SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010, - SE_GROUP_INTEGRITY = 0x00000020, - SE_GROUP_INTEGRITY_ENABLED = 0x00000040, - SE_GROUP_RESOURCE = 0x20000000, - SE_GROUP_LOGON_ID = 0xC0000000; - -// Primary language identifiers -enum : USHORT { - LANG_NEUTRAL, - LANG_ARABIC, - LANG_BULGARIAN, - LANG_CATALAN, - LANG_CHINESE, - LANG_CZECH, - LANG_DANISH, - LANG_GERMAN, - LANG_GREEK, - LANG_ENGLISH, - LANG_SPANISH, - LANG_FINNISH, - LANG_FRENCH, - LANG_HEBREW, - LANG_HUNGARIAN, - LANG_ICELANDIC, - LANG_ITALIAN, - LANG_JAPANESE, - LANG_KOREAN, - LANG_DUTCH, - LANG_NORWEGIAN, - LANG_POLISH, - LANG_PORTUGUESE, // = 0x16 - LANG_ROMANIAN = 0x18, - LANG_RUSSIAN, - LANG_CROATIAN, // = 0x1A - LANG_SERBIAN = 0x1A, - LANG_BOSNIAN = 0x1A, - LANG_SLOVAK, - LANG_ALBANIAN, - LANG_SWEDISH, - LANG_THAI, - LANG_TURKISH, - LANG_URDU, - LANG_INDONESIAN, - LANG_UKRAINIAN, - LANG_BELARUSIAN, - LANG_SLOVENIAN, - LANG_ESTONIAN, - LANG_LATVIAN, - LANG_LITHUANIAN, // = 0x27 - LANG_FARSI = 0x29, - LANG_PERSIAN = 0x29, - LANG_VIETNAMESE, - LANG_ARMENIAN, - LANG_AZERI, - LANG_BASQUE, - LANG_LOWER_SORBIAN, // = 0x2E - LANG_UPPER_SORBIAN = 0x2E, - LANG_MACEDONIAN, // = 0x2F - LANG_TSWANA = 0x32, - LANG_XHOSA = 0x34, - LANG_ZULU, - LANG_AFRIKAANS, - LANG_GEORGIAN, - LANG_FAEROESE, - LANG_HINDI, - LANG_MALTESE, - LANG_SAMI, - LANG_IRISH, // = 0x3C - LANG_MALAY = 0x3E, - LANG_KAZAK, - LANG_KYRGYZ, - LANG_SWAHILI, // = 0x41 - LANG_UZBEK = 0x43, - LANG_TATAR, - LANG_BENGALI, - LANG_PUNJABI, - LANG_GUJARATI, - LANG_ORIYA, - LANG_TAMIL, - LANG_TELUGU, - LANG_KANNADA, - LANG_MALAYALAM, - LANG_ASSAMESE, - LANG_MARATHI, - LANG_SANSKRIT, - LANG_MONGOLIAN, - LANG_TIBETAN, - LANG_WELSH, - LANG_KHMER, - LANG_LAO, // = 0x54 - LANG_GALICIAN = 0x56, - LANG_KONKANI, - LANG_MANIPURI, - LANG_SINDHI, - LANG_SYRIAC, - LANG_SINHALESE, // = 0x5B - LANG_INUKTITUT = 0x5D, - LANG_AMHARIC, - LANG_TAMAZIGHT, - LANG_KASHMIRI, - LANG_NEPALI, - LANG_FRISIAN, - LANG_PASHTO, - LANG_FILIPINO, - LANG_DIVEHI, // = 0x65 - LANG_HAUSA = 0x68, - LANG_YORUBA = 0x6A, - LANG_QUECHUA, - LANG_SOTHO, - LANG_BASHKIR, - LANG_LUXEMBOURGISH, - LANG_GREENLANDIC, - LANG_IGBO, // = 0x70 - LANG_TIGRIGNA = 0x73, - LANG_YI = 0x78, - LANG_MAPUDUNGUN = 0x7A, - LANG_MOHAWK = 0x7C, - LANG_BRETON = 0x7E, - LANG_UIGHUR = 0x80, - LANG_MAORI, - LANG_OCCITAN, - LANG_CORSICAN, - LANG_ALSATIAN, - LANG_YAKUT, - LANG_KICHE, - LANG_KINYARWANDA, - LANG_WOLOF, // = 0x88 - LANG_DARI = 0x8C, - LANG_MALAGASY, // = 0x8D - - LANG_SERBIAN_NEUTRAL = 0x7C1A, - LANG_BOSNIAN_NEUTRAL = 0x781A, - - LANG_INVARIANT = 0x7F -} - - -// Sublanguage identifiers -enum : USHORT { - SUBLANG_NEUTRAL, - SUBLANG_DEFAULT, - SUBLANG_SYS_DEFAULT, - SUBLANG_CUSTOM_DEFAULT, // = 3 - SUBLANG_UI_CUSTOM_DEFAULT = 3, - SUBLANG_CUSTOM_UNSPECIFIED, // = 4 - - SUBLANG_AFRIKAANS_SOUTH_AFRICA = 1, - SUBLANG_ALBANIAN_ALBANIA = 1, - SUBLANG_ALSATIAN_FRANCE = 1, - SUBLANG_AMHARIC_ETHIOPIA = 1, - - SUBLANG_ARABIC_SAUDI_ARABIA = 1, - SUBLANG_ARABIC_IRAQ, - SUBLANG_ARABIC_EGYPT, - SUBLANG_ARABIC_LIBYA, - SUBLANG_ARABIC_ALGERIA, - SUBLANG_ARABIC_MOROCCO, - SUBLANG_ARABIC_TUNISIA, - SUBLANG_ARABIC_OMAN, - SUBLANG_ARABIC_YEMEN, - SUBLANG_ARABIC_SYRIA, - SUBLANG_ARABIC_JORDAN, - SUBLANG_ARABIC_LEBANON, - SUBLANG_ARABIC_KUWAIT, - SUBLANG_ARABIC_UAE, - SUBLANG_ARABIC_BAHRAIN, - SUBLANG_ARABIC_QATAR, // = 16 - - SUBLANG_ARMENIAN_ARMENIA = 1, - SUBLANG_ASSAMESE_INDIA = 1, - - SUBLANG_AZERI_LATIN = 1, - SUBLANG_AZERI_CYRILLIC, // = 2 - - SUBLANG_BASHKIR_RUSSIA = 1, - SUBLANG_BASQUE_BASQUE = 1, - SUBLANG_BELARUSIAN_BELARUS = 1, - SUBLANG_BENGALI_INDIA = 1, - - SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN = 5, - SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 8, - - SUBLANG_BRETON_FRANCE = 1, - SUBLANG_BULGARIAN_BULGARIA = 1, - SUBLANG_CATALAN_CATALAN = 1, - - SUBLANG_CHINESE_TRADITIONAL = 1, - SUBLANG_CHINESE_SIMPLIFIED, - SUBLANG_CHINESE_HONGKONG, - SUBLANG_CHINESE_SINGAPORE, - SUBLANG_CHINESE_MACAU, // = 5 - - SUBLANG_CORSICAN_FRANCE = 1, - - SUBLANG_CROATIAN_CROATIA = 1, - SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN = 4, - - SUBLANG_CZECH_CZECH_REPUBLIC = 1, - SUBLANG_DANISH_DENMARK = 1, - SUBLANG_DIVEHI_MALDIVES = 1, - - SUBLANG_DUTCH = 1, - SUBLANG_DUTCH_BELGIAN, // = 2 - - SUBLANG_ENGLISH_US = 1, - SUBLANG_ENGLISH_UK, - SUBLANG_ENGLISH_AUS, - SUBLANG_ENGLISH_CAN, - SUBLANG_ENGLISH_NZ, - SUBLANG_ENGLISH_EIRE, // = 6 - SUBLANG_ENGLISH_IRELAND = 6, - SUBLANG_ENGLISH_SOUTH_AFRICA, - SUBLANG_ENGLISH_JAMAICA, - SUBLANG_ENGLISH_CARIBBEAN, - SUBLANG_ENGLISH_BELIZE, - SUBLANG_ENGLISH_TRINIDAD, - SUBLANG_ENGLISH_ZIMBABWE, - SUBLANG_ENGLISH_PHILIPPINES, // = 13 - SUBLANG_ENGLISH_INDIA = 16, - SUBLANG_ENGLISH_MALAYSIA, - SUBLANG_ENGLISH_SINGAPORE, // = 18 - - SUBLANG_ESTONIAN_ESTONIA = 1, - SUBLANG_FAEROESE_FAROE_ISLANDS = 1, - SUBLANG_FILIPINO_PHILIPPINES = 1, - SUBLANG_FINNISH_FINLAND = 1, - - SUBLANG_FRENCH = 1, - SUBLANG_FRENCH_BELGIAN, - SUBLANG_FRENCH_CANADIAN, - SUBLANG_FRENCH_SWISS, - SUBLANG_FRENCH_LUXEMBOURG, - SUBLANG_FRENCH_MONACO, // = 6 - - SUBLANG_FRISIAN_NETHERLANDS = 1, - SUBLANG_GALICIAN_GALICIAN = 1, - SUBLANG_GEORGIAN_GEORGIA = 1, - - SUBLANG_GERMAN = 1, - SUBLANG_GERMAN_SWISS, - SUBLANG_GERMAN_AUSTRIAN, - SUBLANG_GERMAN_LUXEMBOURG, - SUBLANG_GERMAN_LIECHTENSTEIN, // = 5 - - SUBLANG_GREEK_GREECE = 1, - SUBLANG_GREENLANDIC_GREENLAND = 1, - SUBLANG_GUJARATI_INDIA = 1, - SUBLANG_HAUSA_NIGERIA = 1, - SUBLANG_HEBREW_ISRAEL = 1, - SUBLANG_HINDI_INDIA = 1, - SUBLANG_HUNGARIAN_HUNGARY = 1, - SUBLANG_ICELANDIC_ICELAND = 1, - SUBLANG_IGBO_NIGERIA = 1, - SUBLANG_INDONESIAN_INDONESIA = 1, - - SUBLANG_INUKTITUT_CANADA = 1, - SUBLANG_INUKTITUT_CANADA_LATIN = 1, - - SUBLANG_IRISH_IRELAND = 1, - - SUBLANG_ITALIAN = 1, - SUBLANG_ITALIAN_SWISS, // = 2 - - SUBLANG_JAPANESE_JAPAN = 1, - - SUBLANG_KASHMIRI_INDIA = 2, - SUBLANG_KASHMIRI_SASIA = 2, - - SUBLANG_KAZAK_KAZAKHSTAN = 1, - SUBLANG_KHMER_CAMBODIA = 1, - SUBLANG_KICHE_GUATEMALA = 1, - SUBLANG_KINYARWANDA_RWANDA = 1, - SUBLANG_KONKANI_INDIA = 1, - SUBLANG_KOREAN = 1, - SUBLANG_KYRGYZ_KYRGYZSTAN = 1, - SUBLANG_LAO_LAO_PDR = 1, - SUBLANG_LATVIAN_LATVIA = 1, - - SUBLANG_LITHUANIAN = 1, - SUBLANG_LITHUANIAN_LITHUANIA = 1, - - SUBLANG_LOWER_SORBIAN_GERMANY = 1, - SUBLANG_LUXEMBOURGISH_LUXEMBOURG = 1, - SUBLANG_MACEDONIAN_MACEDONIA = 1, - SUBLANG_MALAYALAM_INDIA = 1, - SUBLANG_MALTESE_MALTA = 1, - SUBLANG_MAORI_NEW_ZEALAND = 1, - SUBLANG_MAPUDUNGUN_CHILE = 1, - SUBLANG_MARATHI_INDIA = 1, - SUBLANG_MOHAWK_MOHAWK = 1, - - SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA = 1, - SUBLANG_MONGOLIAN_PRC, // = 2 - - SUBLANG_MALAY_MALAYSIA = 1, - SUBLANG_MALAY_BRUNEI_DARUSSALAM, // = 2 - - SUBLANG_NEPALI_NEPAL = 1, - SUBLANG_NEPALI_INDIA, // = 2 - - SUBLANG_NORWEGIAN_BOKMAL = 1, - SUBLANG_NORWEGIAN_NYNORSK, // = 2 - - SUBLANG_OCCITAN_FRANCE = 1, - SUBLANG_ORIYA_INDIA = 1, - SUBLANG_PASHTO_AFGHANISTAN = 1, - SUBLANG_PERSIAN_IRAN = 1, - SUBLANG_POLISH_POLAND = 1, - - SUBLANG_PORTUGUESE_BRAZILIAN = 1, - SUBLANG_PORTUGUESE = 2, - SUBLANG_PORTUGUESE_PORTUGAL, // = 2 - - SUBLANG_PUNJABI_INDIA = 1, - - SUBLANG_QUECHUA_BOLIVIA = 1, - SUBLANG_QUECHUA_ECUADOR, - SUBLANG_QUECHUA_PERU, // = 3 - - SUBLANG_ROMANIAN_ROMANIA = 1, - SUBLANG_ROMANSH_SWITZERLAND = 1, - SUBLANG_RUSSIAN_RUSSIA = 1, - - SUBLANG_SAMI_NORTHERN_NORWAY = 1, - SUBLANG_SAMI_NORTHERN_SWEDEN, - SUBLANG_SAMI_NORTHERN_FINLAND, // = 3 - SUBLANG_SAMI_SKOLT_FINLAND = 3, - SUBLANG_SAMI_INARI_FINLAND = 3, - SUBLANG_SAMI_LULE_NORWAY, - SUBLANG_SAMI_LULE_SWEDEN, - SUBLANG_SAMI_SOUTHERN_NORWAY, - SUBLANG_SAMI_SOUTHERN_SWEDEN, // = 7 - - SUBLANG_SANSKRIT_INDIA = 1, - - SUBLANG_SERBIAN_LATIN = 2, - SUBLANG_SERBIAN_CYRILLIC, // = 3 - SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN = 6, - SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 7, - - SUBLANG_SINDHI_AFGHANISTAN = 2, - SUBLANG_SINHALESE_SRI_LANKA = 1, - SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA = 1, - SUBLANG_SLOVAK_SLOVAKIA = 1, - SUBLANG_SLOVENIAN_SLOVENIA = 1, - - SUBLANG_SPANISH = 1, - SUBLANG_SPANISH_MEXICAN, - SUBLANG_SPANISH_MODERN, - SUBLANG_SPANISH_GUATEMALA, - SUBLANG_SPANISH_COSTA_RICA, - SUBLANG_SPANISH_PANAMA, - SUBLANG_SPANISH_DOMINICAN_REPUBLIC, - SUBLANG_SPANISH_VENEZUELA, - SUBLANG_SPANISH_COLOMBIA, - SUBLANG_SPANISH_PERU, - SUBLANG_SPANISH_ARGENTINA, - SUBLANG_SPANISH_ECUADOR, - SUBLANG_SPANISH_CHILE, - SUBLANG_SPANISH_URUGUAY, - SUBLANG_SPANISH_PARAGUAY, - SUBLANG_SPANISH_BOLIVIA, - SUBLANG_SPANISH_EL_SALVADOR, - SUBLANG_SPANISH_HONDURAS, - SUBLANG_SPANISH_NICARAGUA, - SUBLANG_SPANISH_PUERTO_RICO, - SUBLANG_SPANISH_US, // = 21 - - SUBLANG_SWEDISH = 1, - SUBLANG_SWEDISH_SWEDEN = 1, - SUBLANG_SWEDISH_FINLAND, // = 2 - - SUBLANG_SYRIAC = 1, - SUBLANG_TAJIK_TAJIKISTAN = 1, - SUBLANG_TAMAZIGHT_ALGERIA_LATIN = 2, - SUBLANG_TAMIL_INDIA = 1, - SUBLANG_TATAR_RUSSIA = 1, - SUBLANG_TELUGU_INDIA = 1, - SUBLANG_THAI_THAILAND = 1, - SUBLANG_TIBETAN_PRC = 1, - SUBLANG_TIBETAN_BHUTAN = 2, - SUBLANG_TIGRIGNA_ERITREA = 1, - SUBLANG_TSWANA_SOUTH_AFRICA = 1, - SUBLANG_TURKISH_TURKEY = 1, - SUBLANG_TURKMEN_TURKMENISTAN = 1, - SUBLANG_UIGHUR_PRC = 1, - SUBLANG_UKRAINIAN_UKRAINE = 1, - SUBLANG_UPPER_SORBIAN_GERMANY = 1, - - SUBLANG_URDU_PAKISTAN = 1, - SUBLANG_URDU_INDIA, // = 2 - - SUBLANG_UZBEK_LATIN = 1, - SUBLANG_UZBEK_CYRILLIC, // = 2 - - SUBLANG_VIETNAMESE_VIETNAM = 1, - SUBLANG_WELSH_UNITED_KINGDOM = 1, - SUBLANG_WOLOF_SENEGAL = 1, - SUBLANG_YORUBA_NIGERIA = 1, - SUBLANG_XHOSA_SOUTH_AFRICA = 1, - SUBLANG_YAKUT_RUSSIA = 1, - SUBLANG_YI_PRC = 1, - SUBLANG_ZULU_SOUTH_AFRICA = 1 -} - -// This is not documented on MSDN -const NLS_VALID_LOCALE_MASK = 1048575; - -// Sorting identifiers -enum : WORD { - SORT_DEFAULT = 0, - SORT_JAPANESE_XJIS = 0, - SORT_JAPANESE_UNICODE = 1, - SORT_CHINESE_BIG5 = 0, - SORT_CHINESE_PRCP = 0, - SORT_CHINESE_UNICODE = 1, - SORT_CHINESE_PRC = 2, - SORT_CHINESE_BOPOMOFO = 3, - SORT_KOREAN_KSC = 0, - SORT_KOREAN_UNICODE = 1, - SORT_GERMAN_PHONE_BOOK = 1, - SORT_HUNGARIAN_DEFAULT = 0, - SORT_HUNGARIAN_TECHNICAL = 1, - SORT_GEORGIAN_TRADITIONAL = 0, - SORT_GEORGIAN_MODERN = 1 -} - -WORD MAKELANGID(USHORT p, USHORT s) { return cast(WORD)((s << 10) | p); } -WORD PRIMARYLANGID(WORD lgid) { return cast(WORD)(lgid & 0x3FF); } -WORD SUBLANGID(WORD lgid) { return cast(WORD)(lgid >>> 10); } - -DWORD MAKELCID(WORD lgid, WORD srtid) { return (cast(DWORD) srtid << 16) | cast(DWORD) lgid; } -// ??? -//DWORD MAKESORTLCID(WORD lgid, WORD srtid, WORD ver) { return (MAKELCID(lgid, srtid)) | ((cast(DWORD)ver) << 20); } -WORD LANGIDFROMLCID(LCID lcid) { return cast(WORD) lcid; } -WORD SORTIDFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 16) & 0x0F); } -WORD SORTVERSIONFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 20) & 0x0F); } - -const WORD LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL; -const WORD LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL; -const DWORD LOCALE_NEUTRAL = (SORT_DEFAULT << 16) - | (SUBLANG_NEUTRAL << 10) | LANG_NEUTRAL; - -// --- -enum : BYTE { - ACL_REVISION = 2, - ACL_REVISION_DS = 4 -} - -// These are not documented on MSDN -enum : BYTE { - ACL_REVISION1 = 1, - ACL_REVISION2, - ACL_REVISION3, - ACL_REVISION4 // = 4 -} - -const BYTE - MIN_ACL_REVISION = 2, - MAX_ACL_REVISION = 4; - -/+ -// These aren't necessary for D. -const MINCHAR=0x80; -const MAXCHAR=0x7f; -const MINSHORT=0x8000; -const MAXSHORT=0x7fff; -const MINLONG=0x80000000; -const MAXLONG=0x7fffffff; -const MAXBYTE=0xff; -const MAXWORD=0xffff; -const MAXDWORD=0xffffffff; -+/ - -// SYSTEM_INFO.dwProcessorType -enum : DWORD { - PROCESSOR_INTEL_386 = 386, - PROCESSOR_INTEL_486 = 486, - PROCESSOR_INTEL_PENTIUM = 586, - PROCESSOR_MIPS_R4000 = 4000, - PROCESSOR_ALPHA_21064 = 21064, - PROCESSOR_INTEL_IA64 = 2200 -} - -// SYSTEM_INFO.wProcessorArchitecture -enum : WORD { - PROCESSOR_ARCHITECTURE_INTEL, - PROCESSOR_ARCHITECTURE_MIPS, - PROCESSOR_ARCHITECTURE_ALPHA, - PROCESSOR_ARCHITECTURE_PPC, - PROCESSOR_ARCHITECTURE_SHX, - PROCESSOR_ARCHITECTURE_ARM, - PROCESSOR_ARCHITECTURE_IA64, - PROCESSOR_ARCHITECTURE_ALPHA64, - PROCESSOR_ARCHITECTURE_MSIL, - PROCESSOR_ARCHITECTURE_AMD64, - PROCESSOR_ARCHITECTURE_IA32_ON_WIN64, // = 10 - PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF -} - -// IsProcessorFeaturePresent() -enum : DWORD { - PF_FLOATING_POINT_PRECISION_ERRATA, - PF_FLOATING_POINT_EMULATED, - PF_COMPARE_EXCHANGE_DOUBLE, - PF_MMX_INSTRUCTIONS_AVAILABLE, - PF_PPC_MOVEMEM_64BIT_OK, - PF_ALPHA_BYTE_INSTRUCTIONS, - PF_XMMI_INSTRUCTIONS_AVAILABLE, - PF_3DNOW_INSTRUCTIONS_AVAILABLE, - PF_RDTSC_INSTRUCTION_AVAILABLE, - PF_PAE_ENABLED, - PF_XMMI64_INSTRUCTIONS_AVAILABLE -} - -// MinGW: also in ddk/ntifs.h -enum : DWORD { - FILE_ACTION_ADDED = 1, - FILE_ACTION_REMOVED, - FILE_ACTION_MODIFIED, - FILE_ACTION_RENAMED_OLD_NAME, - FILE_ACTION_RENAMED_NEW_NAME, - FILE_ACTION_ADDED_STREAM, - FILE_ACTION_REMOVED_STREAM, - FILE_ACTION_MODIFIED_STREAM, - FILE_ACTION_REMOVED_BY_DELETE, - FILE_ACTION_ID_NOT_TUNNELLED, - FILE_ACTION_TUNNELLED_ID_COLLISION // = 11 -} -// MinGW: end ntifs.h - -const DWORD - HEAP_NO_SERIALIZE = 0x01, - HEAP_GROWABLE = 0x02, - HEAP_GENERATE_EXCEPTIONS = 0x04, - HEAP_ZERO_MEMORY = 0x08, - HEAP_REALLOC_IN_PLACE_ONLY = 0x10, - HEAP_TAIL_CHECKING_ENABLED = 0x20, - HEAP_FREE_CHECKING_ENABLED = 0x40, - HEAP_DISABLE_COALESCE_ON_FREE = 0x80; - -// These are not documented on MSDN -const HEAP_CREATE_ALIGN_16 = 0; -const HEAP_CREATE_ENABLE_TRACING = 0x020000; -const HEAP_MAXIMUM_TAG = 0x000FFF; -const HEAP_PSEUDO_TAG_FLAG = 0x008000; -const HEAP_TAG_SHIFT = 16; -// ??? -//MACRO #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16))) - -const ACCESS_MASK - KEY_QUERY_VALUE = 0x000001, - KEY_SET_VALUE = 0x000002, - KEY_CREATE_SUB_KEY = 0x000004, - KEY_ENUMERATE_SUB_KEYS = 0x000008, - KEY_NOTIFY = 0x000010, - KEY_CREATE_LINK = 0x000020, - KEY_WRITE = 0x020006, - KEY_EXECUTE = 0x020019, - KEY_READ = 0x020019, - KEY_ALL_ACCESS = 0x0F003F; - -static if (_WIN32_WINNT >= 0x502) { - const ACCESS_MASK - KEY_WOW64_64KEY = 0x000100, - KEY_WOW64_32KEY = 0x000200; -} - -const DWORD - REG_WHOLE_HIVE_VOLATILE = 1, - REG_REFRESH_HIVE = 2, - REG_NO_LAZY_FLUSH = 4; - -const DWORD - REG_OPTION_RESERVED = 0, - REG_OPTION_NON_VOLATILE = 0, - REG_OPTION_VOLATILE = 1, - REG_OPTION_CREATE_LINK = 2, - REG_OPTION_BACKUP_RESTORE = 4, - REG_OPTION_OPEN_LINK = 8, - REG_LEGAL_OPTION = 15; - -const SECURITY_INFORMATION - OWNER_SECURITY_INFORMATION = 0x00000001, - GROUP_SECURITY_INFORMATION = 0x00000002, - DACL_SECURITY_INFORMATION = 0x00000004, - SACL_SECURITY_INFORMATION = 0x00000008, - LABEL_SECURITY_INFORMATION = 0x00000010, - UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000, - UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000, - PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000, - PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000; - -const DWORD MAXIMUM_PROCESSORS = 32; - -// VirtualAlloc(), etc -// ------------------- - -enum : DWORD { - PAGE_NOACCESS = 0x0001, - PAGE_READONLY = 0x0002, - PAGE_READWRITE = 0x0004, - PAGE_WRITECOPY = 0x0008, - PAGE_EXECUTE = 0x0010, - PAGE_EXECUTE_READ = 0x0020, - PAGE_EXECUTE_READWRITE = 0x0040, - PAGE_EXECUTE_WRITECOPY = 0x0080, - PAGE_GUARD = 0x0100, - PAGE_NOCACHE = 0x0200 -} - -enum : DWORD { - MEM_COMMIT = 0x00001000, - MEM_RESERVE = 0x00002000, - MEM_DECOMMIT = 0x00004000, - MEM_RELEASE = 0x00008000, - MEM_FREE = 0x00010000, - MEM_PRIVATE = 0x00020000, - MEM_MAPPED = 0x00040000, - MEM_RESET = 0x00080000, - MEM_TOP_DOWN = 0x00100000, - MEM_WRITE_WATCH = 0x00200000, // MinGW (???): 98/Me - MEM_PHYSICAL = 0x00400000, - MEM_4MB_PAGES = 0x80000000 -} - -// MinGW: also in ddk/ntifs.h -// CreateFileMapping() -const DWORD - SEC_BASED = 0x00200000, - SEC_NO_CHANGE = 0x00400000, - SEC_FILE = 0x00800000, - SEC_IMAGE = 0x01000000, - SEC_VLM = 0x02000000, - SEC_RESERVE = 0x04000000, - SEC_COMMIT = 0x08000000, - SEC_NOCACHE = 0x10000000, - MEM_IMAGE = SEC_IMAGE; -// MinGW: end ntifs.h - -// ??? -const ACCESS_MASK - SECTION_QUERY = 0x000001, - SECTION_MAP_WRITE = 0x000002, - SECTION_MAP_READ = 0x000004, - SECTION_MAP_EXECUTE = 0x000008, - SECTION_EXTEND_SIZE = 0x000010, - SECTION_ALL_ACCESS = 0x0F001F; - -// These are not documented on MSDN -const MESSAGE_RESOURCE_UNICODE = 1; -const RTL_CRITSECT_TYPE = 0; -const RTL_RESOURCE_TYPE = 1; - -// COFF file format -// ---------------- - -// IMAGE_FILE_HEADER.Characteristics -const WORD - IMAGE_FILE_RELOCS_STRIPPED = 0x0001, - IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, - IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004, - IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008, - IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010, - IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, - IMAGE_FILE_BYTES_REVERSED_LO = 0x0080, - IMAGE_FILE_32BIT_MACHINE = 0x0100, - IMAGE_FILE_DEBUG_STRIPPED = 0x0200, - IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400, - IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800, - IMAGE_FILE_SYSTEM = 0x1000, - IMAGE_FILE_DLL = 0x2000, - IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000, - IMAGE_FILE_BYTES_REVERSED_HI = 0x8000; - -// IMAGE_FILE_HEADER.Machine -enum : WORD { - IMAGE_FILE_MACHINE_UNKNOWN = 0x0000, - IMAGE_FILE_MACHINE_I386 = 0x014C, - IMAGE_FILE_MACHINE_R3000 = 0x0162, - IMAGE_FILE_MACHINE_R4000 = 0x0166, - IMAGE_FILE_MACHINE_R10000 = 0x0168, - IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169, - IMAGE_FILE_MACHINE_ALPHA = 0x0184, - IMAGE_FILE_MACHINE_SH3 = 0x01A2, - IMAGE_FILE_MACHINE_SH3DSP = 0x01A3, - IMAGE_FILE_MACHINE_SH4 = 0x01A6, - IMAGE_FILE_MACHINE_SH5 = 0x01A8, - IMAGE_FILE_MACHINE_ARM = 0x01C0, - IMAGE_FILE_MACHINE_THUMB = 0x01C2, - IMAGE_FILE_MACHINE_AM33 = 0x01D3, - IMAGE_FILE_MACHINE_POWERPC = 0x01F0, - IMAGE_FILE_MACHINE_POWERPCFP = 0x01F1, - IMAGE_FILE_MACHINE_IA64 = 0x0200, - IMAGE_FILE_MACHINE_MIPS16 = 0x0266, - IMAGE_FILE_MACHINE_MIPSFPU = 0x0366, - IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466, - IMAGE_FILE_MACHINE_EBC = 0x0EBC, - IMAGE_FILE_MACHINE_AMD64 = 0x8664, - IMAGE_FILE_MACHINE_M32R = 0x9041 -} - -// ??? -enum { - IMAGE_DOS_SIGNATURE = 0x5A4D, - IMAGE_OS2_SIGNATURE = 0x454E, - IMAGE_OS2_SIGNATURE_LE = 0x454C, - IMAGE_VXD_SIGNATURE = 0x454C, - IMAGE_NT_SIGNATURE = 0x4550 -} - -// IMAGE_OPTIONAL_HEADER.Magic -enum : WORD { - IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x010B, - IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x0107, - IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x020B -} - -// IMAGE_OPTIONAL_HEADER.Subsystem -enum : WORD { - IMAGE_SUBSYSTEM_UNKNOWN = 0, - IMAGE_SUBSYSTEM_NATIVE, - IMAGE_SUBSYSTEM_WINDOWS_GUI, - IMAGE_SUBSYSTEM_WINDOWS_CUI, // = 3 - IMAGE_SUBSYSTEM_OS2_CUI = 5, - IMAGE_SUBSYSTEM_POSIX_CUI = 7, - IMAGE_SUBSYSTEM_NATIVE_WINDOWS, - IMAGE_SUBSYSTEM_WINDOWS_CE_GUI, - IMAGE_SUBSYSTEM_EFI_APPLICATION, - IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER, - IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, - IMAGE_SUBSYSTEM_EFI_ROM, - IMAGE_SUBSYSTEM_XBOX, // = 14 - IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 -} - -// IMAGE_OPTIONAL_HEADER.DllCharacteristics -const WORD - IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040, - IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, - IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, - IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200, - IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, - IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800, - IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000, - IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000; - -// ??? -const IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944; - -const size_t - IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16, - IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56, - IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28, - IMAGE_SIZEOF_NT_OPTIONAL_HEADER = 224, - IMAGE_SIZEOF_SHORT_NAME = 8, - IMAGE_SIZEOF_SECTION_HEADER = 40, - IMAGE_SIZEOF_SYMBOL = 18, - IMAGE_SIZEOF_AUX_SYMBOL = 18, - IMAGE_SIZEOF_RELOCATION = 10, - IMAGE_SIZEOF_BASE_RELOCATION = 8, - IMAGE_SIZEOF_LINENUMBER = 6, - IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60, - SIZEOF_RFPO_DATA = 16; - -PIMAGE_SECTION_HEADER IMAGE_FIRST_SECTION(PIMAGE_NT_HEADERS h) { - return cast(PIMAGE_SECTION_HEADER) - (&h.OptionalHeader + h.FileHeader.SizeOfOptionalHeader); -} - -// ImageDirectoryEntryToDataEx() -enum : USHORT { - IMAGE_DIRECTORY_ENTRY_EXPORT = 0, - IMAGE_DIRECTORY_ENTRY_IMPORT, - IMAGE_DIRECTORY_ENTRY_RESOURCE, - IMAGE_DIRECTORY_ENTRY_EXCEPTION, - IMAGE_DIRECTORY_ENTRY_SECURITY, - IMAGE_DIRECTORY_ENTRY_BASERELOC, - IMAGE_DIRECTORY_ENTRY_DEBUG, - IMAGE_DIRECTORY_ENTRY_COPYRIGHT, // = 7 - IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7, - IMAGE_DIRECTORY_ENTRY_GLOBALPTR, - IMAGE_DIRECTORY_ENTRY_TLS, - IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, - IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, - IMAGE_DIRECTORY_ENTRY_IAT, - IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, - IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, // = 14 -} - -// IMAGE_SECTION_HEADER.Characteristics -const DWORD - IMAGE_SCN_TYPE_REG = 0x00000000, - IMAGE_SCN_TYPE_DSECT = 0x00000001, - IMAGE_SCN_TYPE_NOLOAD = 0x00000002, - IMAGE_SCN_TYPE_GROUP = 0x00000004, - IMAGE_SCN_TYPE_NO_PAD = 0x00000008, - IMAGE_SCN_TYPE_COPY = 0x00000010, - IMAGE_SCN_CNT_CODE = 0x00000020, - IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040, - IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, - IMAGE_SCN_LNK_OTHER = 0x00000100, - IMAGE_SCN_LNK_INFO = 0x00000200, - IMAGE_SCN_TYPE_OVER = 0x00000400, - IMAGE_SCN_LNK_REMOVE = 0x00000800, - IMAGE_SCN_LNK_COMDAT = 0x00001000, - IMAGE_SCN_MEM_FARDATA = 0x00008000, - IMAGE_SCN_GPREL = 0x00008000, - IMAGE_SCN_MEM_PURGEABLE = 0x00020000, - IMAGE_SCN_MEM_16BIT = 0x00020000, - IMAGE_SCN_MEM_LOCKED = 0x00040000, - IMAGE_SCN_MEM_PRELOAD = 0x00080000, - IMAGE_SCN_ALIGN_1BYTES = 0x00100000, - IMAGE_SCN_ALIGN_2BYTES = 0x00200000, - IMAGE_SCN_ALIGN_4BYTES = 0x00300000, - IMAGE_SCN_ALIGN_8BYTES = 0x00400000, - IMAGE_SCN_ALIGN_16BYTES = 0x00500000, - IMAGE_SCN_ALIGN_32BYTES = 0x00600000, - IMAGE_SCN_ALIGN_64BYTES = 0x00700000, - IMAGE_SCN_ALIGN_128BYTES = 0x00800000, - IMAGE_SCN_ALIGN_256BYTES = 0x00900000, - IMAGE_SCN_ALIGN_512BYTES = 0x00A00000, - IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000, - IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000, - IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000, - IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000, - IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000, - IMAGE_SCN_MEM_DISCARDABLE = 0x02000000, - IMAGE_SCN_MEM_NOT_CACHED = 0x04000000, - IMAGE_SCN_MEM_NOT_PAGED = 0x08000000, - IMAGE_SCN_MEM_SHARED = 0x10000000, - IMAGE_SCN_MEM_EXECUTE = 0x20000000, - IMAGE_SCN_MEM_READ = 0x40000000, - IMAGE_SCN_MEM_WRITE = 0x80000000; - -/* The following constants are mostlydocumented at - * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/pecoff.doc - * but don't seem to be defined in the HTML docs. - */ -enum : SHORT { - IMAGE_SYM_UNDEFINED = 0, - IMAGE_SYM_ABSOLUTE = -1, - IMAGE_SYM_DEBUG = -2 -} - -enum : ubyte { - IMAGE_SYM_TYPE_NULL, - IMAGE_SYM_TYPE_VOID, - IMAGE_SYM_TYPE_CHAR, - IMAGE_SYM_TYPE_SHORT, - IMAGE_SYM_TYPE_INT, - IMAGE_SYM_TYPE_LONG, - IMAGE_SYM_TYPE_FLOAT, - IMAGE_SYM_TYPE_DOUBLE, - IMAGE_SYM_TYPE_STRUCT, - IMAGE_SYM_TYPE_UNION, - IMAGE_SYM_TYPE_ENUM, - IMAGE_SYM_TYPE_MOE, - IMAGE_SYM_TYPE_BYTE, - IMAGE_SYM_TYPE_WORD, - IMAGE_SYM_TYPE_UINT, - IMAGE_SYM_TYPE_DWORD // = 15 -} -const IMAGE_SYM_TYPE_PCODE = 32768; // ??? - -enum : ubyte { - IMAGE_SYM_DTYPE_NULL, - IMAGE_SYM_DTYPE_POINTER, - IMAGE_SYM_DTYPE_FUNCTION, - IMAGE_SYM_DTYPE_ARRAY -} - -enum : BYTE { - IMAGE_SYM_CLASS_END_OF_FUNCTION = 0xFF, - IMAGE_SYM_CLASS_NULL = 0, - IMAGE_SYM_CLASS_AUTOMATIC, - IMAGE_SYM_CLASS_EXTERNAL, - IMAGE_SYM_CLASS_STATIC, - IMAGE_SYM_CLASS_REGISTER, - IMAGE_SYM_CLASS_EXTERNAL_DEF, - IMAGE_SYM_CLASS_LABEL, - IMAGE_SYM_CLASS_UNDEFINED_LABEL, - IMAGE_SYM_CLASS_MEMBER_OF_STRUCT, - IMAGE_SYM_CLASS_ARGUMENT, - IMAGE_SYM_CLASS_STRUCT_TAG, - IMAGE_SYM_CLASS_MEMBER_OF_UNION, - IMAGE_SYM_CLASS_UNION_TAG, - IMAGE_SYM_CLASS_TYPE_DEFINITION, - IMAGE_SYM_CLASS_UNDEFINED_STATIC, - IMAGE_SYM_CLASS_ENUM_TAG, - IMAGE_SYM_CLASS_MEMBER_OF_ENUM, - IMAGE_SYM_CLASS_REGISTER_PARAM, - IMAGE_SYM_CLASS_BIT_FIELD, // = 18 - IMAGE_SYM_CLASS_FAR_EXTERNAL = 68, - IMAGE_SYM_CLASS_BLOCK = 100, - IMAGE_SYM_CLASS_FUNCTION, - IMAGE_SYM_CLASS_END_OF_STRUCT, - IMAGE_SYM_CLASS_FILE, - IMAGE_SYM_CLASS_SECTION, - IMAGE_SYM_CLASS_WEAK_EXTERNAL,// = 105 - IMAGE_SYM_CLASS_CLR_TOKEN = 107 -} - -enum : BYTE { - IMAGE_COMDAT_SELECT_NODUPLICATES = 1, - IMAGE_COMDAT_SELECT_ANY, - IMAGE_COMDAT_SELECT_SAME_SIZE, - IMAGE_COMDAT_SELECT_EXACT_MATCH, - IMAGE_COMDAT_SELECT_ASSOCIATIVE, - IMAGE_COMDAT_SELECT_LARGEST, - IMAGE_COMDAT_SELECT_NEWEST // = 7 -} - -enum : DWORD { - IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1, - IMAGE_WEAK_EXTERN_SEARCH_LIBRARY, - IMAGE_WEAK_EXTERN_SEARCH_ALIAS -} - -enum : WORD { - IMAGE_REL_I386_ABSOLUTE = 0x0000, - IMAGE_REL_I386_DIR16 = 0x0001, - IMAGE_REL_I386_REL16 = 0x0002, - IMAGE_REL_I386_DIR32 = 0x0006, - IMAGE_REL_I386_DIR32NB = 0x0007, - IMAGE_REL_I386_SEG12 = 0x0009, - IMAGE_REL_I386_SECTION = 0x000A, - IMAGE_REL_I386_SECREL = 0x000B, - IMAGE_REL_I386_TOKEN = 0x000C, - IMAGE_REL_I386_SECREL7 = 0x000D, - IMAGE_REL_I386_REL32 = 0x0014 -} - -enum : WORD { - IMAGE_REL_AMD64_ABSOLUTE = 0x0000, - IMAGE_REL_AMD64_ADDR64 = 0x0001, - IMAGE_REL_AMD64_ADDR32 = 0x0002, - IMAGE_REL_AMD64_ADDR32NB = 0x0003, - IMAGE_REL_AMD64_REL32 = 0x0004, - IMAGE_REL_AMD64_REL32_1 = 0x0005, - IMAGE_REL_AMD64_REL32_2 = 0x0006, - IMAGE_REL_AMD64_REL32_3 = 0x0007, - IMAGE_REL_AMD64_REL32_4 = 0x0008, - IMAGE_REL_AMD64_REL32_5 = 0x0009, - IMAGE_REL_AMD64_SECTION = 0x000A, - IMAGE_REL_AMD64_SECREL = 0x000B, - IMAGE_REL_AMD64_SECREL7 = 0x000C, - IMAGE_REL_AMD64_TOKEN = 0x000D, - IMAGE_REL_AMD64_SREL32 = 0x000E, - IMAGE_REL_AMD64_PAIR = 0x000F, - IMAGE_REL_AMD64_SSPAN32 = 0x0010 -} - -enum : WORD { - IMAGE_REL_IA64_ABSOLUTE = 0x0000, - IMAGE_REL_IA64_IMM14 = 0x0001, - IMAGE_REL_IA64_IMM22 = 0x0002, - IMAGE_REL_IA64_IMM64 = 0x0003, - IMAGE_REL_IA64_DIR32 = 0x0004, - IMAGE_REL_IA64_DIR64 = 0x0005, - IMAGE_REL_IA64_PCREL21B = 0x0006, - IMAGE_REL_IA64_PCREL21M = 0x0007, - IMAGE_REL_IA64_PCREL21F = 0x0008, - IMAGE_REL_IA64_GPREL22 = 0x0009, - IMAGE_REL_IA64_LTOFF22 = 0x000A, - IMAGE_REL_IA64_SECTION = 0x000B, - IMAGE_REL_IA64_SECREL22 = 0x000C, - IMAGE_REL_IA64_SECREL64I = 0x000D, - IMAGE_REL_IA64_SECREL32 = 0x000E, - IMAGE_REL_IA64_DIR32NB = 0x0010, - IMAGE_REL_IA64_SREL14 = 0x0011, - IMAGE_REL_IA64_SREL22 = 0x0012, - IMAGE_REL_IA64_SREL32 = 0x0013, - IMAGE_REL_IA64_UREL32 = 0x0014, - IMAGE_REL_IA64_PCREL60X = 0x0015, - IMAGE_REL_IA64_PCREL60B = 0x0016, - IMAGE_REL_IA64_PCREL60F = 0x0017, - IMAGE_REL_IA64_PCREL60I = 0x0018, - IMAGE_REL_IA64_PCREL60M = 0x0019, - IMAGE_REL_IA64_IMMGPREL64 = 0x001A, - IMAGE_REL_IA64_TOKEN = 0x001B, - IMAGE_REL_IA64_GPREL32 = 0x001C, - IMAGE_REL_IA64_ADDEND = 0x001F -} - -enum : WORD { - IMAGE_REL_SH3_ABSOLUTE = 0x0000, - IMAGE_REL_SH3_DIRECT16 = 0x0001, - IMAGE_REL_SH3_DIRECT32 = 0x0002, - IMAGE_REL_SH3_DIRECT8 = 0x0003, - IMAGE_REL_SH3_DIRECT8_WORD = 0x0004, - IMAGE_REL_SH3_DIRECT8_LONG = 0x0005, - IMAGE_REL_SH3_DIRECT4 = 0x0006, - IMAGE_REL_SH3_DIRECT4_WORD = 0x0007, - IMAGE_REL_SH3_DIRECT4_LONG = 0x0008, - IMAGE_REL_SH3_PCREL8_WORD = 0x0009, - IMAGE_REL_SH3_PCREL8_LONG = 0x000A, - IMAGE_REL_SH3_PCREL12_WORD = 0x000B, - IMAGE_REL_SH3_STARTOF_SECTION = 0x000C, - IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D, - IMAGE_REL_SH3_SECTION = 0x000E, - IMAGE_REL_SH3_SECREL = 0x000F, - IMAGE_REL_SH3_DIRECT32_NB = 0x0010, - IMAGE_REL_SH3_GPREL4_LONG = 0x0011, - IMAGE_REL_SH3_TOKEN = 0x0012, - IMAGE_REL_SHM_PCRELPT = 0x0013, - IMAGE_REL_SHM_REFLO = 0x0014, - IMAGE_REL_SHM_REFHALF = 0x0015, - IMAGE_REL_SHM_RELLO = 0x0016, - IMAGE_REL_SHM_RELHALF = 0x0017, - IMAGE_REL_SHM_PAIR = 0x0018, - IMAGE_REL_SHM_NOMODE = 0x8000 -} - -enum : WORD { - IMAGE_REL_M32R_ABSOLUTE = 0x0000, - IMAGE_REL_M32R_ADDR32 = 0x0001, - IMAGE_REL_M32R_ADDR32NB = 0x0002, - IMAGE_REL_M32R_ADDR24 = 0x0003, - IMAGE_REL_M32R_GPREL16 = 0x0004, - IMAGE_REL_M32R_PCREL24 = 0x0005, - IMAGE_REL_M32R_PCREL16 = 0x0006, - IMAGE_REL_M32R_PCREL8 = 0x0007, - IMAGE_REL_M32R_REFHALF = 0x0008, - IMAGE_REL_M32R_REFHI = 0x0009, - IMAGE_REL_M32R_REFLO = 0x000A, - IMAGE_REL_M32R_PAIR = 0x000B, - IMAGE_REL_M32R_SECTION = 0x000C, - IMAGE_REL_M32R_SECREL = 0x000D, - IMAGE_REL_M32R_TOKEN = 0x000E -} - -enum : WORD { - IMAGE_REL_MIPS_ABSOLUTE = 0x0000, - IMAGE_REL_MIPS_REFHALF = 0x0001, - IMAGE_REL_MIPS_REFWORD = 0x0002, - IMAGE_REL_MIPS_JMPADDR = 0x0003, - IMAGE_REL_MIPS_REFHI = 0x0004, - IMAGE_REL_MIPS_REFLO = 0x0005, - IMAGE_REL_MIPS_GPREL = 0x0006, - IMAGE_REL_MIPS_LITERAL = 0x0007, - IMAGE_REL_MIPS_SECTION = 0x000A, - IMAGE_REL_MIPS_SECREL = 0x000B, - IMAGE_REL_MIPS_SECRELLO = 0x000C, - IMAGE_REL_MIPS_SECRELHI = 0x000D, - IMAGE_REL_MIPS_JMPADDR16 = 0x0010, - IMAGE_REL_MIPS_REFWORDNB = 0x0022, - IMAGE_REL_MIPS_PAIR = 0x0025 -} - - -enum : WORD { - IMAGE_REL_ALPHA_ABSOLUTE, - IMAGE_REL_ALPHA_REFLONG, - IMAGE_REL_ALPHA_REFQUAD, - IMAGE_REL_ALPHA_GPREL32, - IMAGE_REL_ALPHA_LITERAL, - IMAGE_REL_ALPHA_LITUSE, - IMAGE_REL_ALPHA_GPDISP, - IMAGE_REL_ALPHA_BRADDR, - IMAGE_REL_ALPHA_HINT, - IMAGE_REL_ALPHA_INLINE_REFLONG, - IMAGE_REL_ALPHA_REFHI, - IMAGE_REL_ALPHA_REFLO, - IMAGE_REL_ALPHA_PAIR, - IMAGE_REL_ALPHA_MATCH, - IMAGE_REL_ALPHA_SECTION, - IMAGE_REL_ALPHA_SECREL, - IMAGE_REL_ALPHA_REFLONGNB, - IMAGE_REL_ALPHA_SECRELLO, - IMAGE_REL_ALPHA_SECRELHI // = 18 -} - -enum : WORD { - IMAGE_REL_PPC_ABSOLUTE, - IMAGE_REL_PPC_ADDR64, - IMAGE_REL_PPC_ADDR32, - IMAGE_REL_PPC_ADDR24, - IMAGE_REL_PPC_ADDR16, - IMAGE_REL_PPC_ADDR14, - IMAGE_REL_PPC_REL24, - IMAGE_REL_PPC_REL14, - IMAGE_REL_PPC_TOCREL16, - IMAGE_REL_PPC_TOCREL14, - IMAGE_REL_PPC_ADDR32NB, - IMAGE_REL_PPC_SECREL, - IMAGE_REL_PPC_SECTION, - IMAGE_REL_PPC_IFGLUE, - IMAGE_REL_PPC_IMGLUE, - IMAGE_REL_PPC_SECREL16, - IMAGE_REL_PPC_REFHI, - IMAGE_REL_PPC_REFLO, - IMAGE_REL_PPC_PAIR // = 18 -} - -// ??? -const IMAGE_REL_PPC_TYPEMASK = 0x00FF; -const IMAGE_REL_PPC_NEG = 0x0100; -const IMAGE_REL_PPC_BRTAKEN = 0x0200; -const IMAGE_REL_PPC_BRNTAKEN = 0x0400; -const IMAGE_REL_PPC_TOCDEFN = 0x0800; - -enum { - IMAGE_REL_BASED_ABSOLUTE, - IMAGE_REL_BASED_HIGH, - IMAGE_REL_BASED_LOW, - IMAGE_REL_BASED_HIGHLOW, - IMAGE_REL_BASED_HIGHADJ, - IMAGE_REL_BASED_MIPS_JMPADDR -} -// End of constants documented in pecoff.doc - -const size_t IMAGE_ARCHIVE_START_SIZE = 8; - -const TCHAR[] - IMAGE_ARCHIVE_START = "!\n", - IMAGE_ARCHIVE_END = "`\n", - IMAGE_ARCHIVE_PAD = "\n", - IMAGE_ARCHIVE_LINKER_MEMBER = "/ ", - IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; - -const IMAGE_ORDINAL_FLAG32 = 0x80000000; - -ulong IMAGE_ORDINAL64(ulong Ordinal) { return Ordinal & 0xFFFF; } -uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; } - -bool IMAGE_SNAP_BY_ORDINAL32(uint Ordinal) { - return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; -} - -const ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; - -bool IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal) { - return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; -} - -// ??? -const IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000; -const IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000; - -enum : DWORD { - IMAGE_DEBUG_TYPE_UNKNOWN, - IMAGE_DEBUG_TYPE_COFF, - IMAGE_DEBUG_TYPE_CODEVIEW, - IMAGE_DEBUG_TYPE_FPO, - IMAGE_DEBUG_TYPE_MISC, - IMAGE_DEBUG_TYPE_EXCEPTION, - IMAGE_DEBUG_TYPE_FIXUP, - IMAGE_DEBUG_TYPE_OMAP_TO_SRC, - IMAGE_DEBUG_TYPE_OMAP_FROM_SRC, - IMAGE_DEBUG_TYPE_BORLAND // = 9 -} - -enum : ubyte { - FRAME_FPO, - FRAME_TRAP, - FRAME_TSS, - FRAME_NONFPO -} - -// ??? -const IMAGE_DEBUG_MISC_EXENAME = 1; - -// ??? -const N_BTMASK = 0x000F; -const N_TMASK = 0x0030; -const N_TMASK1 = 0x00C0; -const N_TMASK2 = 0x00F0; -const N_BTSHFT = 4; -const N_TSHIFT = 2; - -const int - IS_TEXT_UNICODE_ASCII16 = 0x0001, - IS_TEXT_UNICODE_STATISTICS = 0x0002, - IS_TEXT_UNICODE_CONTROLS = 0x0004, - IS_TEXT_UNICODE_SIGNATURE = 0x0008, - IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010, - IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020, - IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040, - IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080, - IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100, - IS_TEXT_UNICODE_ODD_LENGTH = 0x0200, - IS_TEXT_UNICODE_NULL_BYTES = 0x1000, - IS_TEXT_UNICODE_UNICODE_MASK = 0x000F, - IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0, - IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00, - IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000; - -const DWORD - SERVICE_KERNEL_DRIVER = 0x0001, - SERVICE_FILE_SYSTEM_DRIVER = 0x0002, - SERVICE_ADAPTER = 0x0004, - SERVICE_RECOGNIZER_DRIVER = 0x0008, - SERVICE_WIN32_OWN_PROCESS = 0x0010, - SERVICE_WIN32_SHARE_PROCESS = 0x0020, - SERVICE_INTERACTIVE_PROCESS = 0x0100, - SERVICE_DRIVER = 0x000B, - SERVICE_WIN32 = 0x0030, - SERVICE_TYPE_ALL = 0x013F; - -enum : DWORD { - SERVICE_BOOT_START = 0, - SERVICE_SYSTEM_START = 1, - SERVICE_AUTO_START = 2, - SERVICE_DEMAND_START = 3, - SERVICE_DISABLED = 4 -} - -enum : DWORD { - SERVICE_ERROR_IGNORE = 0, - SERVICE_ERROR_NORMAL = 1, - SERVICE_ERROR_SEVERE = 2, - SERVICE_ERROR_CRITICAL = 3 -} - - -const uint - SE_OWNER_DEFAULTED = 0x0001, - SE_GROUP_DEFAULTED = 0x0002, - SE_DACL_PRESENT = 0x0004, - SE_DACL_DEFAULTED = 0x0008, - SE_SACL_PRESENT = 0x0010, - SE_SACL_DEFAULTED = 0x0020, - SE_DACL_AUTO_INHERIT_REQ = 0x0100, - SE_SACL_AUTO_INHERIT_REQ = 0x0200, - SE_DACL_AUTO_INHERITED = 0x0400, - SE_SACL_AUTO_INHERITED = 0x0800, - SE_DACL_PROTECTED = 0x1000, - SE_SACL_PROTECTED = 0x2000, - SE_SELF_RELATIVE = 0x8000; - -enum SECURITY_IMPERSONATION_LEVEL { - SecurityAnonymous, - SecurityIdentification, - SecurityImpersonation, - SecurityDelegation -} -alias SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; - -alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE; -alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; - -const size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; - -const DWORD - SECURITY_DESCRIPTOR_REVISION = 1, - SECURITY_DESCRIPTOR_REVISION1 = 1; - -const DWORD - SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, - SE_PRIVILEGE_ENABLED = 0x00000002, - SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; - -const DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; - -const SECURITY_IMPERSONATION_LEVEL - SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, - DEFAULT_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; - -const BOOLEAN - SECURITY_DYNAMIC_TRACKING = true, - SECURITY_STATIC_TRACKING = false; - -// also in ddk/ntifs.h -const DWORD - TOKEN_ASSIGN_PRIMARY = 0x0001, - TOKEN_DUPLICATE = 0x0002, - TOKEN_IMPERSONATE = 0x0004, - TOKEN_QUERY = 0x0008, - TOKEN_QUERY_SOURCE = 0x0010, - TOKEN_ADJUST_PRIVILEGES = 0x0020, - TOKEN_ADJUST_GROUPS = 0x0040, - TOKEN_ADJUST_DEFAULT = 0x0080, - - TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED - | TOKEN_ASSIGN_PRIMARY - | TOKEN_DUPLICATE - | TOKEN_IMPERSONATE - | TOKEN_QUERY - | TOKEN_QUERY_SOURCE - | TOKEN_ADJUST_PRIVILEGES - | TOKEN_ADJUST_GROUPS - | TOKEN_ADJUST_DEFAULT, - TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY, - TOKEN_WRITE = STANDARD_RIGHTS_WRITE - | TOKEN_ADJUST_PRIVILEGES - | TOKEN_ADJUST_GROUPS - | TOKEN_ADJUST_DEFAULT, - TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE; - -const size_t TOKEN_SOURCE_LENGTH = 8; -// end ddk/ntifs.h - -enum : DWORD { - DLL_PROCESS_DETACH, - DLL_PROCESS_ATTACH, - DLL_THREAD_ATTACH, - DLL_THREAD_DETACH -} - -enum : DWORD { - DBG_CONTINUE = 0x00010002, - DBG_TERMINATE_THREAD = 0x40010003, - DBG_TERMINATE_PROCESS = 0x40010004, - DBG_CONTROL_C = 0x40010005, - DBG_CONTROL_BREAK = 0x40010008, - DBG_EXCEPTION_NOT_HANDLED = 0x80010001 -} - -enum : DWORD { - TAPE_ABSOLUTE_POSITION, - TAPE_LOGICAL_POSITION, - TAPE_PSEUDO_LOGICAL_POSITION -} - -enum : DWORD { - TAPE_REWIND, - TAPE_ABSOLUTE_BLOCK, - TAPE_LOGICAL_BLOCK, - TAPE_PSEUDO_LOGICAL_BLOCK, - TAPE_SPACE_END_OF_DATA, - TAPE_SPACE_RELATIVE_BLOCKS, - TAPE_SPACE_FILEMARKS, - TAPE_SPACE_SEQUENTIAL_FMKS, - TAPE_SPACE_SETMARKS, - TAPE_SPACE_SEQUENTIAL_SMKS -} - -const DWORD - TAPE_DRIVE_FIXED = 0x00000001, - TAPE_DRIVE_SELECT = 0x00000002, - TAPE_DRIVE_INITIATOR = 0x00000004, - TAPE_DRIVE_ERASE_SHORT = 0x00000010, - TAPE_DRIVE_ERASE_LONG = 0x00000020, - TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040, - TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080, - TAPE_DRIVE_TAPE_CAPACITY = 0x00000100, - TAPE_DRIVE_TAPE_REMAINING = 0x00000200, - TAPE_DRIVE_FIXED_BLOCK = 0x00000400, - TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800, - TAPE_DRIVE_WRITE_PROTECT = 0x00001000, - TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000, - TAPE_DRIVE_ECC = 0x00010000, - TAPE_DRIVE_COMPRESSION = 0x00020000, - TAPE_DRIVE_PADDING = 0x00040000, - TAPE_DRIVE_REPORT_SMKS = 0x00080000, - TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000, - TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000, - TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000, - TAPE_DRIVE_EJECT_MEDIA = 0x01000000, - TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000, - TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000, - TAPE_DRIVE_RESERVED_BIT = 0x80000000; - -const DWORD - TAPE_DRIVE_LOAD_UNLOAD = 0x80000001, - TAPE_DRIVE_TENSION = 0x80000002, - TAPE_DRIVE_LOCK_UNLOCK = 0x80000004, - TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008, - TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010, - TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020, - TAPE_DRIVE_TENSION_IMMED = 0x80000040, - TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080, - TAPE_DRIVE_SET_ECC = 0x80000100, - TAPE_DRIVE_SET_COMPRESSION = 0x80000200, - TAPE_DRIVE_SET_PADDING = 0x80000400, - TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800, - TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000, - TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000, - TAPE_DRIVE_LOGICAL_BLK = 0x80004000, - TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000, - TAPE_DRIVE_END_OF_DATA = 0x80010000, - TAPE_DRIVE_RELATIVE_BLKS = 0x80020000, - TAPE_DRIVE_FILEMARKS = 0x80040000, - TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000, - TAPE_DRIVE_SETMARKS = 0x80100000, - TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000, - TAPE_DRIVE_REVERSE_POSITION = 0x80400000, - TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000, - TAPE_DRIVE_WRITE_SETMARKS = 0x81000000, - TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000, - TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000, - TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000, - TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000, - TAPE_DRIVE_FORMAT = 0xA0000000, - TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000, - TAPE_DRIVE_HIGH_FEATURES = 0x80000000; - -enum : DWORD { - TAPE_FIXED_PARTITIONS = 0, - TAPE_SELECT_PARTITIONS = 1, - TAPE_INITIATOR_PARTITIONS = 2 -} - -enum : DWORD { - TAPE_SETMARKS, - TAPE_FILEMARKS, - TAPE_SHORT_FILEMARKS, - TAPE_LONG_FILEMARKS -} - -enum : DWORD { - TAPE_ERASE_SHORT, - TAPE_ERASE_LONG -} - -enum : DWORD { - TAPE_LOAD, - TAPE_UNLOAD, - TAPE_TENSION, - TAPE_LOCK, - TAPE_UNLOCK, - TAPE_FORMAT -} - -enum : ULONG32 { - VER_PLATFORM_WIN32s, - VER_PLATFORM_WIN32_WINDOWS, - VER_PLATFORM_WIN32_NT -} - -enum : UCHAR { - VER_NT_WORKSTATION = 1, - VER_NT_DOMAIN_CONTROLLER, - VER_NT_SERVER -} - -const USHORT - VER_SUITE_SMALLBUSINESS = 0x0001, - VER_SUITE_ENTERPRISE = 0x0002, - VER_SUITE_BACKOFFICE = 0x0004, - VER_SUITE_TERMINAL = 0x0010, - VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x0020, - VER_SUITE_EMBEDDEDNT = 0x0040, - VER_SUITE_DATACENTER = 0x0080, - VER_SUITE_SINGLEUSERTS = 0x0100, - VER_SUITE_PERSONAL = 0x0200, - VER_SUITE_BLADE = 0x0400, - VER_SUITE_STORAGE_SERVER = 0x2000, - VER_SUITE_COMPUTE_SERVER = 0x4000; - -const ULONG - WT_EXECUTEDEFAULT = 0x00000000, - WT_EXECUTEINIOTHREAD = 0x00000001, - WT_EXECUTEINWAITTHREAD = 0x00000004, - WT_EXECUTEONLYONCE = 0x00000008, - WT_EXECUTELONGFUNCTION = 0x00000010, - WT_EXECUTEINTIMERTHREAD = 0x00000020, - WT_EXECUTEINPERSISTENTTHREAD = 0x00000080, - WT_TRANSFER_IMPERSONATION = 0x00000100; - -static if (_WIN32_WINNT >= 0x500) { - const DWORD - VER_MINORVERSION = 0x01, - VER_MAJORVERSION = 0x02, - VER_BUILDNUMBER = 0x04, - VER_PLATFORMID = 0x08, - VER_SERVICEPACKMINOR = 0x10, - VER_SERVICEPACKMAJOR = 0x20, - VER_SUITENAME = 0x40, - VER_PRODUCT_TYPE = 0x80; - - enum : DWORD { - VER_EQUAL = 1, - VER_GREATER, - VER_GREATER_EQUAL, - VER_LESS, - VER_LESS_EQUAL, - VER_AND, - VER_OR // = 7 - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum : ULONG { - ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1, - ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7 - ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9 - } -} - -// Macros -BYTE BTYPE(BYTE x) { return cast(BYTE) (x & N_BTMASK); } -bool ISPTR(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); } -bool ISFCN(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } -bool ISARY(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } -bool ISTAG(uint x) { - return x == IMAGE_SYM_CLASS_STRUCT_TAG - || x == IMAGE_SYM_CLASS_UNION_TAG - || x == IMAGE_SYM_CLASS_ENUM_TAG; -} -uint INCREF(uint x) { - return ((x & ~N_BTMASK) << N_TSHIFT) | (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT) - | (x & N_BTMASK); -} -uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK) | (x & N_BTMASK); } - -const DWORD TLS_MINIMUM_AVAILABLE = 64; - -const ULONG - IO_REPARSE_TAG_RESERVED_ZERO = 0, - IO_REPARSE_TAG_RESERVED_ONE = 1, - IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE, - IO_REPARSE_TAG_SYMBOLIC_LINK = IO_REPARSE_TAG_RESERVED_ZERO, - IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003, - IO_REPARSE_TAG_SYMLINK = 0xA000000C, - IO_REPARSE_TAG_VALID_VALUES = 0xE000FFFF; - -/* Although these are semantically boolean, they are documented and - * implemented to return ULONG; this behaviour is preserved for compatibility - */ -ULONG IsReparseTagMicrosoft(ULONG x) { return x & 0x80000000; } -ULONG IsReparseTagHighLatency(ULONG x) { return x & 0x40000000; } -ULONG IsReparseTagNameSurrogate(ULONG x) { return x & 0x20000000; } - -bool IsReparseTagValid(ULONG x) { - return !(x & ~IO_REPARSE_TAG_VALID_VALUES) && (x > IO_REPARSE_TAG_RESERVED_RANGE); -} - -// Doesn't seem to make sense, but anyway.... -ULONG WT_SET_MAX_THREADPOOL_THREADS(ref ULONG Flags, ushort Limit) { - return Flags |= Limit << 16; -} - -import core.sys.windows.basetyps; -/* also in core.sys.windows.basetyps -struct GUID { - uint Data1; - ushort Data2; - ushort Data3; - ubyte Data4[8]; -} -alias GUID* REFGUID, LPGUID; -*/ - -struct GENERIC_MAPPING { - ACCESS_MASK GenericRead; - ACCESS_MASK GenericWrite; - ACCESS_MASK GenericExecute; - ACCESS_MASK GenericAll; -} -alias GENERIC_MAPPING* PGENERIC_MAPPING; - -struct ACE_HEADER { - BYTE AceType; - BYTE AceFlags; - WORD AceSize; -} -alias ACE_HEADER* PACE_HEADER; - -struct ACCESS_ALLOWED_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} -alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; - -struct ACCESS_DENIED_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} -alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; - -struct SYSTEM_AUDIT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} -alias SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; - -struct SYSTEM_ALARM_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} -alias SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE; - -struct ACCESS_ALLOWED_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} -alias ACCESS_ALLOWED_OBJECT_ACE* PACCESS_ALLOWED_OBJECT_ACE; - -struct ACCESS_DENIED_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} -alias ACCESS_DENIED_OBJECT_ACE* PACCESS_DENIED_OBJECT_ACE; - -struct SYSTEM_AUDIT_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} -alias SYSTEM_AUDIT_OBJECT_ACE* PSYSTEM_AUDIT_OBJECT_ACE; - -struct SYSTEM_ALARM_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} -alias SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; - -struct ACL { - BYTE AclRevision; - BYTE Sbz1; - WORD AclSize; - WORD AceCount; - WORD Sbz2; -} -alias ACL* PACL; - -struct ACL_REVISION_INFORMATION { - DWORD AclRevision; -} - -struct ACL_SIZE_INFORMATION { - DWORD AceCount; - DWORD AclBytesInUse; - DWORD AclBytesFree; -} - -version (X86) { - // ??? - const SIZE_OF_80387_REGISTERS = 80; - const CONTEXT_i386 = 0x010000; - const CONTEXT_i486 = 0x010000; - const CONTEXT_CONTROL = CONTEXT_i386 | 0x01; - const CONTEXT_INTEGER = CONTEXT_i386 | 0x02; - const CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04; - const CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08; - const CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; - const CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; - const CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; - const MAXIMUM_SUPPORTED_EXTENSION = 512; - - struct FLOATING_SAVE_AREA { - DWORD ControlWord; - DWORD StatusWord; - DWORD TagWord; - DWORD ErrorOffset; - DWORD ErrorSelector; - DWORD DataOffset; - DWORD DataSelector; - BYTE[80] RegisterArea; - DWORD Cr0NpxState; - } - - struct CONTEXT { - DWORD ContextFlags; - DWORD Dr0; - DWORD Dr1; - DWORD Dr2; - DWORD Dr3; - DWORD Dr6; - DWORD Dr7; - FLOATING_SAVE_AREA FloatSave; - DWORD SegGs; - DWORD SegFs; - DWORD SegEs; - DWORD SegDs; - DWORD Edi; - DWORD Esi; - DWORD Ebx; - DWORD Edx; - DWORD Ecx; - DWORD Eax; - DWORD Ebp; - DWORD Eip; - DWORD SegCs; - DWORD EFlags; - DWORD Esp; - DWORD SegSs; - BYTE[MAXIMUM_SUPPORTED_EXTENSION] ExtendedRegisters; - } - -} else version(X86_64) -{ - const CONTEXT_AMD64 = 0x100000; - - const CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L); - const CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L); - const CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L); - const CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L); - const CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L); - - const CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT); - const CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS); - - const CONTEXT_EXCEPTION_ACTIVE = 0x8000000; - const CONTEXT_SERVICE_ACTIVE = 0x10000000; - const CONTEXT_EXCEPTION_REQUEST = 0x40000000; - const CONTEXT_EXCEPTION_REPORTING = 0x80000000; - - const INITIAL_MXCSR = 0x1f80; - const INITIAL_FPCSR = 0x027f; - - align(16) struct M128A - { - ULONGLONG Low; - LONGLONG High; - } - alias M128A* PM128A; - - struct XMM_SAVE_AREA32 - { - WORD ControlWord; - WORD StatusWord; - BYTE TagWord; - BYTE Reserved1; - WORD ErrorOpcode; - DWORD ErrorOffset; - WORD ErrorSelector; - WORD Reserved2; - DWORD DataOffset; - WORD DataSelector; - WORD Reserved3; - DWORD MxCsr; - DWORD MxCsr_Mask; - M128A[8] FloatRegisters; - M128A[16] XmmRegisters; - BYTE[96] Reserved4; - } - alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32; - const LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof; - - align(16) struct CONTEXT - { - DWORD64 P1Home; - DWORD64 P2Home; - DWORD64 P3Home; - DWORD64 P4Home; - DWORD64 P5Home; - DWORD64 P6Home; - DWORD ContextFlags; - DWORD MxCsr; - WORD SegCs; - WORD SegDs; - WORD SegEs; - WORD SegFs; - WORD SegGs; - WORD SegSs; - DWORD EFlags; - DWORD64 Dr0; - DWORD64 Dr1; - DWORD64 Dr2; - DWORD64 Dr3; - DWORD64 Dr6; - DWORD64 Dr7; - DWORD64 Rax; - DWORD64 Rcx; - DWORD64 Rdx; - DWORD64 Rbx; - DWORD64 Rsp; - DWORD64 Rbp; - DWORD64 Rsi; - DWORD64 Rdi; - DWORD64 R8; - DWORD64 R9; - DWORD64 R10; - DWORD64 R11; - DWORD64 R12; - DWORD64 R13; - DWORD64 R14; - DWORD64 R15; - DWORD64 Rip; - union - { - XMM_SAVE_AREA32 FltSave; - XMM_SAVE_AREA32 FloatSave; - struct - { - M128A[2] Header; - M128A[8] Legacy; - M128A Xmm0; - M128A Xmm1; - M128A Xmm2; - M128A Xmm3; - M128A Xmm4; - M128A Xmm5; - M128A Xmm6; - M128A Xmm7; - M128A Xmm8; - M128A Xmm9; - M128A Xmm10; - M128A Xmm11; - M128A Xmm12; - M128A Xmm13; - M128A Xmm14; - M128A Xmm15; - }; - }; - M128A[26] VectorRegister; - DWORD64 VectorControl; - DWORD64 DebugControl; - DWORD64 LastBranchToRip; - DWORD64 LastBranchFromRip; - DWORD64 LastExceptionToRip; - DWORD64 LastExceptionFromRip; - } - -} else { - static assert(false, "Unsupported CPU"); - // Versions for PowerPC, Alpha, SHX, and MIPS removed. -} - -alias CONTEXT* PCONTEXT, LPCONTEXT; - -struct EXCEPTION_RECORD { - DWORD ExceptionCode; - DWORD ExceptionFlags; - EXCEPTION_RECORD* ExceptionRecord; - PVOID ExceptionAddress; - DWORD NumberParameters; - DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; -} -alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; - -struct EXCEPTION_POINTERS { - PEXCEPTION_RECORD ExceptionRecord; - PCONTEXT ContextRecord; -} -alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS, LPEXCEPTION_POINTERS; - -union LARGE_INTEGER { - struct { - uint LowPart; - int HighPart; - } - long QuadPart; -} -alias LARGE_INTEGER* PLARGE_INTEGER; - -union ULARGE_INTEGER { - struct { - uint LowPart; - uint HighPart; - } - ulong QuadPart; -} -alias ULARGE_INTEGER* PULARGE_INTEGER; - -alias LARGE_INTEGER LUID; -alias LUID* PLUID; - -const LUID SYSTEM_LUID = { QuadPart:999 }; - -align(4) struct LUID_AND_ATTRIBUTES { - LUID Luid; - DWORD Attributes; -} -alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; - -struct PRIVILEGE_SET { - DWORD PrivilegeCount; - DWORD Control; - LUID_AND_ATTRIBUTES _Privilege; - - LUID_AND_ATTRIBUTES* Privilege() { return &_Privilege; } -} -alias PRIVILEGE_SET* PPRIVILEGE_SET; - -struct SECURITY_ATTRIBUTES { - DWORD nLength; - LPVOID lpSecurityDescriptor; - BOOL bInheritHandle; -} -alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; - -struct SECURITY_QUALITY_OF_SERVICE { - DWORD Length; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; - BOOLEAN EffectiveOnly; -} -alias SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE; - -alias PVOID PACCESS_TOKEN; - -struct SE_IMPERSONATION_STATE { - PACCESS_TOKEN Token; - BOOLEAN CopyOnOpen; - BOOLEAN EffectiveOnly; - SECURITY_IMPERSONATION_LEVEL Level; -} -alias SE_IMPERSONATION_STATE* PSE_IMPERSONATION_STATE; - -struct SID_IDENTIFIER_AUTHORITY { - BYTE[6] Value; -} -alias SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY, LPSID_IDENTIFIER_AUTHORITY; - -alias PVOID PSID; - -struct SID { - BYTE Revision; - BYTE SubAuthorityCount; - SID_IDENTIFIER_AUTHORITY IdentifierAuthority; - DWORD _SubAuthority; - - DWORD* SubAuthority() { return &_SubAuthority; } -} -alias SID* PISID; - -struct SID_AND_ATTRIBUTES { - PSID Sid; - DWORD Attributes; -} -alias SID_AND_ATTRIBUTES* PSID_AND_ATTRIBUTES; - -struct TOKEN_SOURCE { - CHAR[TOKEN_SOURCE_LENGTH] SourceName; - LUID SourceIdentifier; -} -alias TOKEN_SOURCE* PTOKEN_SOURCE; - -struct TOKEN_CONTROL { - LUID TokenId; - LUID AuthenticationId; - LUID ModifiedId; - TOKEN_SOURCE TokenSource; -} -alias TOKEN_CONTROL* PTOKEN_CONTROL; - -struct TOKEN_DEFAULT_DACL { - PACL DefaultDacl; -} -alias TOKEN_DEFAULT_DACL* PTOKEN_DEFAULT_DACL; - -struct TOKEN_GROUPS { - DWORD GroupCount; - SID_AND_ATTRIBUTES _Groups; - - SID_AND_ATTRIBUTES* Groups() { return &_Groups; } -} -alias TOKEN_GROUPS* PTOKEN_GROUPS, LPTOKEN_GROUPS; - -struct TOKEN_OWNER { - PSID Owner; -} -alias TOKEN_OWNER* PTOKEN_OWNER; - -struct TOKEN_PRIMARY_GROUP { - PSID PrimaryGroup; -} -alias TOKEN_PRIMARY_GROUP* PTOKEN_PRIMARY_GROUP; - -struct TOKEN_PRIVILEGES { - DWORD PrivilegeCount; - LUID_AND_ATTRIBUTES _Privileges; - - LUID_AND_ATTRIBUTES* Privileges() { return &_Privileges; } -} -alias TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES, LPTOKEN_PRIVILEGES; - -enum TOKEN_TYPE { - TokenPrimary = 1, - TokenImpersonation -} -alias TOKEN_TYPE* PTOKEN_TYPE; - -struct TOKEN_STATISTICS { - LUID TokenId; - LUID AuthenticationId; - LARGE_INTEGER ExpirationTime; - TOKEN_TYPE TokenType; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - DWORD DynamicCharged; - DWORD DynamicAvailable; - DWORD GroupCount; - DWORD PrivilegeCount; - LUID ModifiedId; -} -alias TOKEN_STATISTICS* PTOKEN_STATISTICS; - -struct TOKEN_USER { - SID_AND_ATTRIBUTES User; -} -alias TOKEN_USER* PTOKEN_USER; - -alias DWORD SECURITY_INFORMATION; -alias SECURITY_INFORMATION* PSECURITY_INFORMATION; -alias WORD SECURITY_DESCRIPTOR_CONTROL; -alias SECURITY_DESCRIPTOR_CONTROL* PSECURITY_DESCRIPTOR_CONTROL; - -struct SECURITY_DESCRIPTOR { - BYTE Revision; - BYTE Sbz1; - SECURITY_DESCRIPTOR_CONTROL Control; - PSID Owner; - PSID Group; - PACL Sacl; - PACL Dacl; -} -alias SECURITY_DESCRIPTOR* PSECURITY_DESCRIPTOR, PISECURITY_DESCRIPTOR; - -enum TOKEN_INFORMATION_CLASS { - TokenUser = 1, - TokenGroups, - TokenPrivileges, - TokenOwner, - TokenPrimaryGroup, - TokenDefaultDacl, - TokenSource, - TokenType, - TokenImpersonationLevel, - TokenStatistics, - TokenRestrictedSids, - TokenSessionId, - TokenGroupsAndPrivileges, - TokenSessionReference, - TokenSandBoxInert, - TokenAuditPolicy, - TokenOrigin -} - -enum SID_NAME_USE { - SidTypeUser = 1, - SidTypeGroup, - SidTypeDomain, - SidTypeAlias, - SidTypeWellKnownGroup, - SidTypeDeletedAccount, - SidTypeInvalid, - SidTypeUnknown, - SidTypeComputer -} -alias SID_NAME_USE* PSID_NAME_USE; - -struct QUOTA_LIMITS { - SIZE_T PagedPoolLimit; - SIZE_T NonPagedPoolLimit; - SIZE_T MinimumWorkingSetSize; - SIZE_T MaximumWorkingSetSize; - SIZE_T PagefileLimit; - LARGE_INTEGER TimeLimit; -} -alias QUOTA_LIMITS* PQUOTA_LIMITS; - -struct IO_COUNTERS { - ULONGLONG ReadOperationCount; - ULONGLONG WriteOperationCount; - ULONGLONG OtherOperationCount; - ULONGLONG ReadTransferCount; - ULONGLONG WriteTransferCount; - ULONGLONG OtherTransferCount; -} -alias IO_COUNTERS* PIO_COUNTERS; - -struct FILE_NOTIFY_INFORMATION { - DWORD NextEntryOffset; - DWORD Action; - DWORD FileNameLength; - WCHAR _FileName; - - WCHAR* FileName() { return &_FileName; } -} -alias FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; - -struct TAPE_ERASE { - DWORD Type; - BOOLEAN Immediate; -} -alias TAPE_ERASE* PTAPE_ERASE; - -struct TAPE_GET_DRIVE_PARAMETERS { - BOOLEAN ECC; - BOOLEAN Compression; - BOOLEAN DataPadding; - BOOLEAN ReportSetmarks; - DWORD DefaultBlockSize; - DWORD MaximumBlockSize; - DWORD MinimumBlockSize; - DWORD MaximumPartitionCount; - DWORD FeaturesLow; - DWORD FeaturesHigh; - DWORD EOTWarningZoneSize; -} -alias TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; - -struct TAPE_GET_MEDIA_PARAMETERS { - LARGE_INTEGER Capacity; - LARGE_INTEGER Remaining; - DWORD BlockSize; - DWORD PartitionCount; - BOOLEAN WriteProtected; -} -alias TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; - -struct TAPE_GET_POSITION { - ULONG Type; - ULONG Partition; - ULONG OffsetLow; - ULONG OffsetHigh; -} -alias TAPE_GET_POSITION* PTAPE_GET_POSITION; - -struct TAPE_PREPARE { - DWORD Operation; - BOOLEAN Immediate; -} -alias TAPE_PREPARE* PTAPE_PREPARE; - -struct TAPE_SET_DRIVE_PARAMETERS { - BOOLEAN ECC; - BOOLEAN Compression; - BOOLEAN DataPadding; - BOOLEAN ReportSetmarks; - ULONG EOTWarningZoneSize; -} -alias TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; - -struct TAPE_SET_MEDIA_PARAMETERS { - ULONG BlockSize; -} -alias TAPE_SET_MEDIA_PARAMETERS* PTAPE_SET_MEDIA_PARAMETERS; - -struct TAPE_SET_POSITION { - DWORD Method; - DWORD Partition; - LARGE_INTEGER Offset; - BOOLEAN Immediate; -} -alias TAPE_SET_POSITION* PTAPE_SET_POSITION; - -struct TAPE_WRITE_MARKS { - DWORD Type; - DWORD Count; - BOOLEAN Immediate; -} -alias TAPE_WRITE_MARKS* PTAPE_WRITE_MARKS; - -struct TAPE_CREATE_PARTITION { - DWORD Method; - DWORD Count; - DWORD Size; -} -alias TAPE_CREATE_PARTITION* PTAPE_CREATE_PARTITION; - -struct MEMORY_BASIC_INFORMATION { - PVOID BaseAddress; - PVOID AllocationBase; - DWORD AllocationProtect; - DWORD RegionSize; - DWORD State; - DWORD Protect; - DWORD Type; -} -alias MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION; - -struct MESSAGE_RESOURCE_ENTRY { - WORD Length; - WORD Flags; - BYTE _Text; - - BYTE* Text() { return &_Text; } -} -alias MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; - -struct MESSAGE_RESOURCE_BLOCK { - DWORD LowId; - DWORD HighId; - DWORD OffsetToEntries; -} -alias MESSAGE_RESOURCE_BLOCK* PMESSAGE_RESOURCE_BLOCK; - -struct MESSAGE_RESOURCE_DATA { - DWORD NumberOfBlocks; - MESSAGE_RESOURCE_BLOCK _Blocks; - - MESSAGE_RESOURCE_BLOCK* Blocks() { return &_Blocks; } -} -alias MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; - -struct LIST_ENTRY { - LIST_ENTRY* Flink; - LIST_ENTRY* Blink; -} -alias LIST_ENTRY* PLIST_ENTRY; - -struct SINGLE_LIST_ENTRY { - SINGLE_LIST_ENTRY* Next; -} -alias SINGLE_LIST_ENTRY SLIST_ENTRY; -alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY, PSLIST_ENTRY; - -union SLIST_HEADER { - ULONGLONG Alignment; - struct { - SLIST_ENTRY Next; - WORD Depth; - WORD Sequence; - } -} -alias SLIST_HEADER* PSLIST_HEADER; - -struct RTL_CRITICAL_SECTION_DEBUG { - WORD Type; - WORD CreatorBackTraceIndex; - RTL_CRITICAL_SECTION* CriticalSection; - LIST_ENTRY ProcessLocksList; - DWORD EntryCount; - DWORD ContentionCount; - DWORD[2] Spare; -} -alias RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; - -struct RTL_CRITICAL_SECTION { - PRTL_CRITICAL_SECTION_DEBUG DebugInfo; - LONG LockCount; - LONG RecursionCount; - HANDLE OwningThread; - HANDLE LockSemaphore; - DWORD Reserved; -} -alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; - -struct EVENTLOGRECORD { - DWORD Length; - DWORD Reserved; - DWORD RecordNumber; - DWORD TimeGenerated; - DWORD TimeWritten; - DWORD EventID; - WORD EventType; - WORD NumStrings; - WORD EventCategory; - WORD ReservedFlags; - DWORD ClosingRecordNumber; - DWORD StringOffset; - DWORD UserSidLength; - DWORD UserSidOffset; - DWORD DataLength; - DWORD DataOffset; -} -alias EVENTLOGRECORD* PEVENTLOGRECORD; - -struct OSVERSIONINFOA { - DWORD dwOSVersionInfoSize = OSVERSIONINFOA.sizeof; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - CHAR[128] szCSDVersion; -} -alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA; - -struct OSVERSIONINFOW { - DWORD dwOSVersionInfoSize = OSVERSIONINFOW.sizeof; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - WCHAR[128] szCSDVersion; -} -alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW; - -struct OSVERSIONINFOEXA { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - CHAR[128] szCSDVersion; - WORD wServicePackMajor; - WORD wServicePackMinor; - WORD wSuiteMask; - BYTE wProductType; - BYTE wReserved; -} -alias OSVERSIONINFOEXA* POSVERSIONINFOEXA, LPOSVERSIONINFOEXA; - -struct OSVERSIONINFOEXW { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - WCHAR[128] szCSDVersion; - WORD wServicePackMajor; - WORD wServicePackMinor; - WORD wSuiteMask; - BYTE wProductType; - BYTE wReserved; -} -alias OSVERSIONINFOEXW* POSVERSIONINFOEXW, LPOSVERSIONINFOEXW; - -align(2) struct IMAGE_VXD_HEADER { - WORD e32_magic; - BYTE e32_border; - BYTE e32_worder; - DWORD e32_level; - WORD e32_cpu; - WORD e32_os; - DWORD e32_ver; - DWORD e32_mflags; - DWORD e32_mpages; - DWORD e32_startobj; - DWORD e32_eip; - DWORD e32_stackobj; - DWORD e32_esp; - DWORD e32_pagesize; - DWORD e32_lastpagesize; - DWORD e32_fixupsize; - DWORD e32_fixupsum; - DWORD e32_ldrsize; - DWORD e32_ldrsum; - DWORD e32_objtab; - DWORD e32_objcnt; - DWORD e32_objmap; - DWORD e32_itermap; - DWORD e32_rsrctab; - DWORD e32_rsrccnt; - DWORD e32_restab; - DWORD e32_enttab; - DWORD e32_dirtab; - DWORD e32_dircnt; - DWORD e32_fpagetab; - DWORD e32_frectab; - DWORD e32_impmod; - DWORD e32_impmodcnt; - DWORD e32_impproc; - DWORD e32_pagesum; - DWORD e32_datapage; - DWORD e32_preload; - DWORD e32_nrestab; - DWORD e32_cbnrestab; - DWORD e32_nressum; - DWORD e32_autodata; - DWORD e32_debuginfo; - DWORD e32_debuglen; - DWORD e32_instpreload; - DWORD e32_instdemand; - DWORD e32_heapsize; - BYTE[12] e32_res3; - DWORD e32_winresoff; - DWORD e32_winreslen; - WORD e32_devid; - WORD e32_ddkver; -} -alias IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; - -align(4): -struct IMAGE_FILE_HEADER { - WORD Machine; - WORD NumberOfSections; - DWORD TimeDateStamp; - DWORD PointerToSymbolTable; - DWORD NumberOfSymbols; - WORD SizeOfOptionalHeader; - WORD Characteristics; -} -alias IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; -// const IMAGE_SIZEOF_FILE_HEADER = IMAGE_FILE_HEADER.sizeof; - -struct IMAGE_DATA_DIRECTORY { - DWORD VirtualAddress; - DWORD Size; -} -alias IMAGE_DATA_DIRECTORY* PIMAGE_DATA_DIRECTORY; - -struct IMAGE_OPTIONAL_HEADER32 { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - DWORD BaseOfData; - DWORD ImageBase; - DWORD SectionAlignment; - DWORD FileAlignment; - WORD MajorOperatingSystemVersion; - WORD MinorOperatingSystemVersion; - WORD MajorImageVersion; - WORD MinorImageVersion; - WORD MajorSubsystemVersion; - WORD MinorSubsystemVersion; - DWORD Win32VersionValue; - DWORD SizeOfImage; - DWORD SizeOfHeaders; - DWORD CheckSum; - WORD Subsystem; - WORD DllCharacteristics; - DWORD SizeOfStackReserve; - DWORD SizeOfStackCommit; - DWORD SizeOfHeapReserve; - DWORD SizeOfHeapCommit; - DWORD LoaderFlags; - DWORD NumberOfRvaAndSizes; - IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; -} -alias IMAGE_OPTIONAL_HEADER32* PIMAGE_OPTIONAL_HEADER32; - -struct IMAGE_OPTIONAL_HEADER64 { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - ULONGLONG ImageBase; - DWORD SectionAlignment; - DWORD FileAlignment; - WORD MajorOperatingSystemVersion; - WORD MinorOperatingSystemVersion; - WORD MajorImageVersion; - WORD MinorImageVersion; - WORD MajorSubsystemVersion; - WORD MinorSubsystemVersion; - DWORD Win32VersionValue; - DWORD SizeOfImage; - DWORD SizeOfHeaders; - DWORD CheckSum; - WORD Subsystem; - WORD DllCharacteristics; - ULONGLONG SizeOfStackReserve; - ULONGLONG SizeOfStackCommit; - ULONGLONG SizeOfHeapReserve; - ULONGLONG SizeOfHeapCommit; - DWORD LoaderFlags; - DWORD NumberOfRvaAndSizes; - IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; -} -alias IMAGE_OPTIONAL_HEADER64* PIMAGE_OPTIONAL_HEADER64; - -struct IMAGE_ROM_OPTIONAL_HEADER { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - DWORD BaseOfData; - DWORD BaseOfBss; - DWORD GprMask; - DWORD[4] CprMask; - DWORD GpValue; -} -alias IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; - -align(2): -struct IMAGE_DOS_HEADER { - WORD e_magic; - WORD e_cblp; - WORD e_cp; - WORD e_crlc; - WORD e_cparhdr; - WORD e_minalloc; - WORD e_maxalloc; - WORD e_ss; - WORD e_sp; - WORD e_csum; - WORD e_ip; - WORD e_cs; - WORD e_lfarlc; - WORD e_ovno; - WORD[4] e_res; - WORD e_oemid; - WORD e_oeminfo; - WORD[10] e_res2; - LONG e_lfanew; -} -alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER; - -struct IMAGE_OS2_HEADER { - WORD ne_magic; - CHAR ne_ver; - CHAR ne_rev; - WORD ne_enttab; - WORD ne_cbenttab; - LONG ne_crc; - WORD ne_flags; - WORD ne_autodata; - WORD ne_heap; - WORD ne_stack; - LONG ne_csip; - LONG ne_sssp; - WORD ne_cseg; - WORD ne_cmod; - WORD ne_cbnrestab; - WORD ne_segtab; - WORD ne_rsrctab; - WORD ne_restab; - WORD ne_modtab; - WORD ne_imptab; - LONG ne_nrestab; - WORD ne_cmovent; - WORD ne_align; - WORD ne_cres; - BYTE ne_exetyp; - BYTE ne_flagsothers; - WORD ne_pretthunks; - WORD ne_psegrefbytes; - WORD ne_swaparea; - WORD ne_expver; -} -alias IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER; - -align(4) struct IMAGE_NT_HEADERS32 { - DWORD Signature; - IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER OptionalHeader; -} -alias IMAGE_NT_HEADERS32* PIMAGE_NT_HEADERS32; - -align(4) struct IMAGE_NT_HEADERS64 { - DWORD Signature; - IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER OptionalHeader; -} -alias IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64; - -struct IMAGE_ROM_HEADERS { - IMAGE_FILE_HEADER FileHeader; - IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; -} -alias IMAGE_ROM_HEADERS* PIMAGE_ROM_HEADERS; - -struct IMAGE_SECTION_HEADER { - BYTE[IMAGE_SIZEOF_SHORT_NAME] Name; - union _Misc { - DWORD PhysicalAddress; - DWORD VirtualSize; - } - _Misc Misc; - DWORD VirtualAddress; - DWORD SizeOfRawData; - DWORD PointerToRawData; - DWORD PointerToRelocations; - DWORD PointerToLinenumbers; - WORD NumberOfRelocations; - WORD NumberOfLinenumbers; - DWORD Characteristics; -} -alias IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; - -struct IMAGE_SYMBOL { - union _N { - BYTE[8] ShortName; - struct Name { - DWORD Short; - DWORD Long; - } - PBYTE[2] LongName; - } - _N N; - DWORD Value; - SHORT SectionNumber; - WORD Type; - BYTE StorageClass; - BYTE NumberOfAuxSymbols; -} -alias IMAGE_SYMBOL* PIMAGE_SYMBOL; - -union IMAGE_AUX_SYMBOL { - struct _Sym { - DWORD TagIndex; - union _Misc { - struct _LnSz { - WORD Linenumber; - WORD Size; - } - _LnSz LnSz; - DWORD TotalSize; - } - _Misc Misc; - union _FcnAry { - struct _Function { - DWORD PointerToLinenumber; - DWORD PointerToNextFunction; - } - _Function Function; - struct _Array { - WORD[4] Dimension; - } - _Array Array; - } - _FcnAry FcnAry; - WORD TvIndex; - } - _Sym Sym; - struct _File { - BYTE[IMAGE_SIZEOF_SYMBOL] Name; - } - _File File; - struct _Section { - DWORD Length; - WORD NumberOfRelocations; - WORD NumberOfLinenumbers; - DWORD CheckSum; - SHORT Number; - BYTE Selection; - } - _Section Section; -} -alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; - -struct IMAGE_COFF_SYMBOLS_HEADER { - DWORD NumberOfSymbols; - DWORD LvaToFirstSymbol; - DWORD NumberOfLinenumbers; - DWORD LvaToFirstLinenumber; - DWORD RvaToFirstByteOfCode; - DWORD RvaToLastByteOfCode; - DWORD RvaToFirstByteOfData; - DWORD RvaToLastByteOfData; -} -alias IMAGE_COFF_SYMBOLS_HEADER* PIMAGE_COFF_SYMBOLS_HEADER; - -struct IMAGE_RELOCATION { - union { - DWORD VirtualAddress; - DWORD RelocCount; - } - DWORD SymbolTableIndex; - WORD Type; -} -alias IMAGE_RELOCATION* PIMAGE_RELOCATION; - -align(4) struct IMAGE_BASE_RELOCATION { - DWORD VirtualAddress; - DWORD SizeOfBlock; -} -alias IMAGE_BASE_RELOCATION* PIMAGE_BASE_RELOCATION; - -align(2) struct IMAGE_LINENUMBER { - union _Type { - DWORD SymbolTableIndex; - DWORD VirtualAddress; - } - _Type Type; - WORD Linenumber; -} -alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; - -align(4): -struct IMAGE_ARCHIVE_MEMBER_HEADER { - BYTE[16] Name; - BYTE[12] Date; - BYTE[6] UserID; - BYTE[6] GroupID; - BYTE[8] Mode; - BYTE[10] Size; - BYTE[2] EndHeader; -} -alias IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; - -struct IMAGE_EXPORT_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD Name; - DWORD Base; - DWORD NumberOfFunctions; - DWORD NumberOfNames; - DWORD AddressOfFunctions; - DWORD AddressOfNames; - DWORD AddressOfNameOrdinals; -} -alias IMAGE_EXPORT_DIRECTORY* PIMAGE_EXPORT_DIRECTORY; - -struct IMAGE_IMPORT_BY_NAME { - WORD Hint; - BYTE _Name; - - BYTE* Name() { - return &_Name; - } -} -alias IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; - -struct IMAGE_THUNK_DATA32 { - union _u1 { - DWORD ForwarderString; - DWORD Function; - DWORD Ordinal; - DWORD AddressOfData; - } - _u1 u1; -} -alias IMAGE_THUNK_DATA32* PIMAGE_THUNK_DATA32; - -struct IMAGE_THUNK_DATA64 { - union _u1 { - ULONGLONG ForwarderString; - ULONGLONG Function; - ULONGLONG Ordinal; - ULONGLONG AddressOfData; - } - _u1 u1; -} -alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; - -struct IMAGE_IMPORT_DESCRIPTOR { - union { - DWORD Characteristics; - DWORD OriginalFirstThunk; - } - DWORD TimeDateStamp; - DWORD ForwarderChain; - DWORD Name; - DWORD FirstThunk; -} -alias IMAGE_IMPORT_DESCRIPTOR* PIMAGE_IMPORT_DESCRIPTOR; - -struct IMAGE_BOUND_IMPORT_DESCRIPTOR { - DWORD TimeDateStamp; - WORD OffsetModuleName; - WORD NumberOfModuleForwarderRefs; -} -alias IMAGE_BOUND_IMPORT_DESCRIPTOR* PIMAGE_BOUND_IMPORT_DESCRIPTOR; - -struct IMAGE_BOUND_FORWARDER_REF { - DWORD TimeDateStamp; - WORD OffsetModuleName; - WORD Reserved; -} -alias IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; - -struct IMAGE_TLS_DIRECTORY32 { - DWORD StartAddressOfRawData; - DWORD EndAddressOfRawData; - DWORD AddressOfIndex; - DWORD AddressOfCallBacks; - DWORD SizeOfZeroFill; - DWORD Characteristics; -} -alias IMAGE_TLS_DIRECTORY32* PIMAGE_TLS_DIRECTORY32; - -struct IMAGE_TLS_DIRECTORY64 { - ULONGLONG StartAddressOfRawData; - ULONGLONG EndAddressOfRawData; - ULONGLONG AddressOfIndex; - ULONGLONG AddressOfCallBacks; - DWORD SizeOfZeroFill; - DWORD Characteristics; -} -alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; - -struct IMAGE_RESOURCE_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - WORD NumberOfNamedEntries; - WORD NumberOfIdEntries; -} -alias IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; - -struct IMAGE_RESOURCE_DIRECTORY_ENTRY { - union { - /+struct { - DWORD NameOffset:31; - DWORD NameIsString:1; - }+/ - DWORD Name; - WORD Id; - } - DWORD OffsetToData; - /+struct { - DWORD OffsetToDirectory:31; - DWORD DataIsDirectory:1; - }+/ - - uint NameOffset() { return Name & 0x7FFFFFFF; } - bool NameIsString() { return cast(bool)(Name & 0x80000000); } - uint OffsetToDirectory() { return OffsetToData & 0x7FFFFFFF; } - bool DataIsDirectory() { return cast(bool)(OffsetToData & 0x80000000); } - - uint NameOffset(uint n) { - Name = (Name & 0x80000000) | (n & 0x7FFFFFFF); - return n & 0x7FFFFFFF; - } - - bool NameIsString(bool n) { - Name = (Name & 0x7FFFFFFF) | (n << 31); return n; - } - - uint OffsetToDirectory(uint o) { - OffsetToData = (OffsetToData & 0x80000000) | (o & 0x7FFFFFFF); - return o & 0x7FFFFFFF; - } - - bool DataIsDirectory(bool d) { - OffsetToData = (OffsetToData & 0x7FFFFFFF) | (d << 31); return d; - } -} -alias IMAGE_RESOURCE_DIRECTORY_ENTRY* PIMAGE_RESOURCE_DIRECTORY_ENTRY; - -struct IMAGE_RESOURCE_DIRECTORY_STRING { - WORD Length; - CHAR _NameString; - - CHAR* NameString() { return &_NameString; } -} -alias IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; - -struct IMAGE_RESOURCE_DIR_STRING_U { - WORD Length; - WCHAR _NameString; - - WCHAR* NameString() { return &_NameString; } -} -alias IMAGE_RESOURCE_DIR_STRING_U* PIMAGE_RESOURCE_DIR_STRING_U; - -struct IMAGE_RESOURCE_DATA_ENTRY { - DWORD OffsetToData; - DWORD Size; - DWORD CodePage; - DWORD Reserved; -} -alias IMAGE_RESOURCE_DATA_ENTRY* PIMAGE_RESOURCE_DATA_ENTRY; - -struct IMAGE_LOAD_CONFIG_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD GlobalFlagsClear; - DWORD GlobalFlagsSet; - DWORD CriticalSectionDefaultTimeout; - DWORD DeCommitFreeBlockThreshold; - DWORD DeCommitTotalFreeThreshold; - PVOID LockPrefixTable; - DWORD MaximumAllocationSize; - DWORD VirtualMemoryThreshold; - DWORD ProcessHeapFlags; - DWORD[4] Reserved; -} -alias IMAGE_LOAD_CONFIG_DIRECTORY* PIMAGE_LOAD_CONFIG_DIRECTORY; - -struct IMAGE_LOAD_CONFIG_DIRECTORY64 { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD GlobalFlagsClear; - DWORD GlobalFlagsSet; - DWORD CriticalSectionDefaultTimeout; - ULONGLONG DeCommitFreeBlockThreshold; - ULONGLONG DeCommitTotalFreeThreshold; - ULONGLONG LockPrefixTable; - ULONGLONG MaximumAllocationSize; - ULONGLONG VirtualMemoryThreshold; - ULONGLONG ProcessAffinityMask; - DWORD ProcessHeapFlags; - WORD CSDFlags; - WORD Reserved1; - ULONGLONG EditList; - DWORD[2] Reserved; -} -alias IMAGE_LOAD_CONFIG_DIRECTORY64* PIMAGE_LOAD_CONFIG_DIRECTORY64; - -struct IMAGE_RUNTIME_FUNCTION_ENTRY { - DWORD BeginAddress; - DWORD EndAddress; - PVOID ExceptionHandler; - PVOID HandlerData; - DWORD PrologEndAddress; -} -alias IMAGE_RUNTIME_FUNCTION_ENTRY* PIMAGE_RUNTIME_FUNCTION_ENTRY; - -struct IMAGE_CE_RUNTIME_FUNCTION_ENTRY { - uint FuncStart; - union { - ubyte PrologLen; - uint _bf; - } -/+ - unsigned int FuncLen:22; - unsigned int ThirtyTwoBit:1; - unsigned int ExceptionFlag:1; -+/ - uint FuncLen() { return (_bf >> 8) & 0x3FFFFF; } - bool ThirtyTwoBit() { return cast(bool)(_bf & 0x40000000); } - bool ExceptionFlag() { return cast(bool)(_bf & 0x80000000); } - - uint FuncLen(uint f) { - _bf = (_bf & ~0x3FFFFF00) | ((f & 0x3FFFFF) << 8); return f & 0x3FFFFF; - } - - bool ThirtyTwoBit(bool t) { - _bf = (_bf & ~0x40000000) | (t << 30); return t; - } - - bool ExceptionFlag(bool e) { - _bf = (_bf & ~0x80000000) | (e << 31); return e; - } -} -alias IMAGE_CE_RUNTIME_FUNCTION_ENTRY* PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; - -struct IMAGE_DEBUG_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD Type; - DWORD SizeOfData; - DWORD AddressOfRawData; - DWORD PointerToRawData; -} -alias IMAGE_DEBUG_DIRECTORY* PIMAGE_DEBUG_DIRECTORY; - -struct FPO_DATA { - DWORD ulOffStart; - DWORD cbProcSize; - DWORD cdwLocals; - WORD cdwParams; - ubyte cbProlog; - ubyte _bf; -/+ - WORD cbRegs:3; - WORD fHasSEH:1; - WORD fUseBP:1; - WORD reserved:1; - WORD cbFrame:2; -+/ - ubyte cbRegs() { return cast(ubyte)(_bf & 0x07); } - bool fHasSEH() { return cast(bool)(_bf & 0x08); } - bool fUseBP() { return cast(bool)(_bf & 0x10); } - bool reserved() { return cast(bool)(_bf & 0x20); } - ubyte cbFrame() { return cast(ubyte)(_bf >> 6); } - - ubyte cbRegs(ubyte c) { - _bf = cast(ubyte) ((_bf & ~0x07) | (c & 0x07)); - return cast(ubyte)(c & 0x07); - } - - bool fHasSEH(bool f) { _bf = cast(ubyte)((_bf & ~0x08) | (f << 3)); return f; } - bool fUseBP(bool f) { _bf = cast(ubyte)((_bf & ~0x10) | (f << 4)); return f; } - bool reserved(bool r) { _bf = cast(ubyte)((_bf & ~0x20) | (r << 5)); return r; } - - ubyte cbFrame(ubyte c) { - _bf = cast(ubyte) ((_bf & ~0xC0) | ((c & 0x03) << 6)); - return cast(ubyte)(c & 0x03); - } -} -alias FPO_DATA* PFPO_DATA; - -struct IMAGE_DEBUG_MISC { - DWORD DataType; - DWORD Length; - BOOLEAN Unicode; - BYTE[3] Reserved; - BYTE _Data; - - BYTE* Data() { return &_Data; } -} -alias IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; - -struct IMAGE_FUNCTION_ENTRY { - DWORD StartingAddress; - DWORD EndingAddress; - DWORD EndOfPrologue; -} -alias IMAGE_FUNCTION_ENTRY* PIMAGE_FUNCTION_ENTRY; - -struct IMAGE_FUNCTION_ENTRY64 { - ULONGLONG StartingAddress; - ULONGLONG EndingAddress; - union { - ULONGLONG EndOfPrologue; - ULONGLONG UnwindInfoAddress; - } -} -alias IMAGE_FUNCTION_ENTRY64* PIMAGE_FUNCTION_ENTRY64; - -struct IMAGE_SEPARATE_DEBUG_HEADER { - WORD Signature; - WORD Flags; - WORD Machine; - WORD Characteristics; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD ImageBase; - DWORD SizeOfImage; - DWORD NumberOfSections; - DWORD ExportedNamesSize; - DWORD DebugDirectorySize; - DWORD SectionAlignment; - DWORD[2] Reserved; -} -alias IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER; - -enum SERVICE_NODE_TYPE { - DriverType = SERVICE_KERNEL_DRIVER, - FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, - Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, - Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, - AdapterType = SERVICE_ADAPTER, - RecognizerType = SERVICE_RECOGNIZER_DRIVER -} - -enum SERVICE_LOAD_TYPE { - BootLoad = SERVICE_BOOT_START, - SystemLoad = SERVICE_SYSTEM_START, - AutoLoad = SERVICE_AUTO_START, - DemandLoad = SERVICE_DEMAND_START, - DisableLoad = SERVICE_DISABLED -} - -enum SERVICE_ERROR_TYPE { - IgnoreError = SERVICE_ERROR_IGNORE, - NormalError = SERVICE_ERROR_NORMAL, - SevereError = SERVICE_ERROR_SEVERE, - CriticalError = SERVICE_ERROR_CRITICAL -} -alias SERVICE_ERROR_TYPE _CM_ERROR_CONTROL_TYPE; - -//DAC: According to MSJ, 'UnderTheHood', May 1996, this -// structure is not documented in any official Microsoft header file. -alias void EXCEPTION_REGISTRATION_RECORD; - -align: -struct NT_TIB { - EXCEPTION_REGISTRATION_RECORD *ExceptionList; - PVOID StackBase; - PVOID StackLimit; - PVOID SubSystemTib; - union { - PVOID FiberData; - DWORD Version; - } - PVOID ArbitraryUserPointer; - NT_TIB *Self; -} -alias NT_TIB* PNT_TIB; - -struct REPARSE_DATA_BUFFER { - DWORD ReparseTag; - WORD ReparseDataLength; - WORD Reserved; - union { - struct _GenericReparseBuffer { - BYTE _DataBuffer; - - BYTE* DataBuffer() { return &_DataBuffer; } - } - _GenericReparseBuffer GenericReparseBuffer; - struct _SymbolicLinkReparseBuffer { - WORD SubstituteNameOffset; - WORD SubstituteNameLength; - WORD PrintNameOffset; - WORD PrintNameLength; - // ??? This is in MinGW, but absent in MSDN docs - ULONG Flags; - WCHAR _PathBuffer; - - WCHAR* PathBuffer() { return &_PathBuffer; } - } - _SymbolicLinkReparseBuffer SymbolicLinkReparseBuffer; - struct _MountPointReparseBuffer { - WORD SubstituteNameOffset; - WORD SubstituteNameLength; - WORD PrintNameOffset; - WORD PrintNameLength; - WCHAR _PathBuffer; - - WCHAR* PathBuffer() { return &_PathBuffer; } - } - _MountPointReparseBuffer MountPointReparseBuffer; - } -} -alias REPARSE_DATA_BUFFER *PREPARSE_DATA_BUFFER; - -struct REPARSE_GUID_DATA_BUFFER { - DWORD ReparseTag; - WORD ReparseDataLength; - WORD Reserved; - GUID ReparseGuid; - struct _GenericReparseBuffer { - BYTE _DataBuffer; - - BYTE* DataBuffer() { return &_DataBuffer; } - } - _GenericReparseBuffer GenericReparseBuffer; -} -alias REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; - -const size_t - REPARSE_DATA_BUFFER_HEADER_SIZE = REPARSE_DATA_BUFFER.GenericReparseBuffer.offsetof, - REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = REPARSE_GUID_DATA_BUFFER.GenericReparseBuffer.offsetof, - MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384; - - -struct REPARSE_POINT_INFORMATION { - WORD ReparseDataLength; - WORD UnparsedNameLength; -} -alias REPARSE_POINT_INFORMATION* PREPARSE_POINT_INFORMATION; - -union FILE_SEGMENT_ELEMENT { - PVOID64 Buffer; - ULONGLONG Alignment; -} -alias FILE_SEGMENT_ELEMENT* PFILE_SEGMENT_ELEMENT; - -// JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants -const DWORD - JOB_OBJECT_LIMIT_WORKINGSET = 0x0001, - JOB_OBJECT_LIMIT_PROCESS_TIME = 0x0002, - JOB_OBJECT_LIMIT_JOB_TIME = 0x0004, - JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x0008, - JOB_OBJECT_LIMIT_AFFINITY = 0x0010, - JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x0020, - JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x0040, - JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x0080, - JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x0100, - JOB_OBJECT_LIMIT_JOB_MEMORY = 0x0200, - JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x0400, - JOB_OBJECT_BREAKAWAY_OK = 0x0800, - JOB_OBJECT_SILENT_BREAKAWAY = 0x1000; - -// JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants -const DWORD - JOB_OBJECT_UILIMIT_HANDLES = 0x0001, - JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x0002, - JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x0004, - JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x0008, - JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x0010, - JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x0020, - JOB_OBJECT_UILIMIT_DESKTOP = 0x0040, - JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x0080; - -// JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants -const DWORD - JOB_OBJECT_SECURITY_NO_ADMIN = 0x0001, - JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x0002, - JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x0004, - JOB_OBJECT_SECURITY_FILTER_TOKENS = 0x0008; - -// JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants -enum : DWORD { - JOB_OBJECT_TERMINATE_AT_END_OF_JOB, - JOB_OBJECT_POST_AT_END_OF_JOB -} - -enum : DWORD { - JOB_OBJECT_MSG_END_OF_JOB_TIME = 1, - JOB_OBJECT_MSG_END_OF_PROCESS_TIME, - JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT, - JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO, - JOB_OBJECT_MSG_NEW_PROCESS, - JOB_OBJECT_MSG_EXIT_PROCESS, - JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS, - JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT, - JOB_OBJECT_MSG_JOB_MEMORY_LIMIT -} - -enum JOBOBJECTINFOCLASS { - JobObjectBasicAccountingInformation = 1, - JobObjectBasicLimitInformation, - JobObjectBasicProcessIdList, - JobObjectBasicUIRestrictions, - JobObjectSecurityLimitInformation, - JobObjectEndOfJobTimeInformation, - JobObjectAssociateCompletionPortInformation, - JobObjectBasicAndIoAccountingInformation, - JobObjectExtendedLimitInformation, - JobObjectJobSetInformation, - MaxJobObjectInfoClass -} - -struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { - LARGE_INTEGER TotalUserTime; - LARGE_INTEGER TotalKernelTime; - LARGE_INTEGER ThisPeriodTotalUserTime; - LARGE_INTEGER ThisPeriodTotalKernelTime; - DWORD TotalPageFaultCount; - DWORD TotalProcesses; - DWORD ActiveProcesses; - DWORD TotalTerminatedProcesses; -} -alias JOBOBJECT_BASIC_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; - -struct JOBOBJECT_BASIC_LIMIT_INFORMATION { - LARGE_INTEGER PerProcessUserTimeLimit; - LARGE_INTEGER PerJobUserTimeLimit; - DWORD LimitFlags; - SIZE_T MinimumWorkingSetSize; - SIZE_T MaximumWorkingSetSize; - DWORD ActiveProcessLimit; - ULONG_PTR Affinity; - DWORD PriorityClass; - DWORD SchedulingClass; -} -alias JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_INFORMATION; - -struct JOBOBJECT_BASIC_PROCESS_ID_LIST { - DWORD NumberOfAssignedProcesses; - DWORD NumberOfProcessIdsInList; - ULONG_PTR _ProcessIdList; - - ULONG_PTR* ProcessIdList() { return &_ProcessIdList; } -} -alias JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; - -struct JOBOBJECT_BASIC_UI_RESTRICTIONS { - DWORD UIRestrictionsClass; -} -alias JOBOBJECT_BASIC_UI_RESTRICTIONS* PJOBOBJECT_BASIC_UI_RESTRICTIONS; - -struct JOBOBJECT_SECURITY_LIMIT_INFORMATION { - DWORD SecurityLimitFlags; - HANDLE JobToken; - PTOKEN_GROUPS SidsToDisable; - PTOKEN_PRIVILEGES PrivilegesToDelete; - PTOKEN_GROUPS RestrictedSids; -} -alias JOBOBJECT_SECURITY_LIMIT_INFORMATION* PJOBOBJECT_SECURITY_LIMIT_INFORMATION; - -struct JOBOBJECT_END_OF_JOB_TIME_INFORMATION { - DWORD EndOfJobTimeAction; -} -alias JOBOBJECT_END_OF_JOB_TIME_INFORMATION* PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; - -struct JOBOBJECT_ASSOCIATE_COMPLETION_PORT { - PVOID CompletionKey; - HANDLE CompletionPort; -} -alias JOBOBJECT_ASSOCIATE_COMPLETION_PORT* PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; - -struct JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { - JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; - IO_COUNTERS IoInfo; -} -alias JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION *PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; - -struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION { - JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; - IO_COUNTERS IoInfo; - SIZE_T ProcessMemoryLimit; - SIZE_T JobMemoryLimit; - SIZE_T PeakProcessMemoryUsed; - SIZE_T PeakJobMemoryUsed; -} -alias JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; - -struct JOBOBJECT_JOBSET_INFORMATION { - DWORD MemberLevel; -} -alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; - -// MinGW: Making these defines conditional on _WIN32_WINNT will break ddk includes -//static if (_WIN32_WINNT >= 0x500) { - -const DWORD - ES_SYSTEM_REQUIRED = 0x00000001, - ES_DISPLAY_REQUIRED = 0x00000002, - ES_USER_PRESENT = 0x00000004, - ES_CONTINUOUS = 0x80000000; - -enum LATENCY_TIME { - LT_DONT_CARE, - LT_LOWEST_LATENCY -} -alias LATENCY_TIME* PLATENCY_TIME; - -enum SYSTEM_POWER_STATE { - PowerSystemUnspecified, - PowerSystemWorking, - PowerSystemSleeping1, - PowerSystemSleeping2, - PowerSystemSleeping3, - PowerSystemHibernate, - PowerSystemShutdown, - PowerSystemMaximum -} -alias SYSTEM_POWER_STATE* PSYSTEM_POWER_STATE; - -const POWER_SYSTEM_MAXIMUM = SYSTEM_POWER_STATE.PowerSystemMaximum; - -enum POWER_ACTION { - PowerActionNone, - PowerActionReserved, - PowerActionSleep, - PowerActionHibernate, - PowerActionShutdown, - PowerActionShutdownReset, - PowerActionShutdownOff, - PowerActionWarmEject -} -alias POWER_ACTION* PPOWER_ACTION; - -static if (_WIN32_WINNT >= 0x600) { - enum SYSTEM_POWER_CONDITION { - PoAc, - PoDc, - PoHot, - PoConditionMaximum - } - alias SYSTEM_POWER_CONDITION* PSYSTEM_POWER_CONDITION; -} - -enum DEVICE_POWER_STATE { - PowerDeviceUnspecified, - PowerDeviceD0, - PowerDeviceD1, - PowerDeviceD2, - PowerDeviceD3, - PowerDeviceMaximum -} -alias DEVICE_POWER_STATE* PDEVICE_POWER_STATE; - -align(4): -struct BATTERY_REPORTING_SCALE { - DWORD Granularity; - DWORD Capacity; -} -alias BATTERY_REPORTING_SCALE* PBATTERY_REPORTING_SCALE; - -struct POWER_ACTION_POLICY { - POWER_ACTION Action; - ULONG Flags; - ULONG EventCode; -} -alias POWER_ACTION_POLICY* PPOWER_ACTION_POLICY; - -// POWER_ACTION_POLICY.Flags constants -const ULONG - POWER_ACTION_QUERY_ALLOWED = 0x00000001, - POWER_ACTION_UI_ALLOWED = 0x00000002, - POWER_ACTION_OVERRIDE_APPS = 0x00000004, - POWER_ACTION_LIGHTEST_FIRST = 0x10000000, - POWER_ACTION_LOCK_CONSOLE = 0x20000000, - POWER_ACTION_DISABLE_WAKES = 0x40000000, - POWER_ACTION_CRITICAL = 0x80000000; - -// POWER_ACTION_POLICY.EventCode constants -const ULONG - POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001, - POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002, - POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004, - POWER_USER_NOTIFY_BUTTON = 0x00000008, - POWER_USER_NOTIFY_SHUTDOWN = 0x00000010, - POWER_FORCE_TRIGGER_RESET = 0x80000000; - -const size_t - DISCHARGE_POLICY_CRITICAL = 0, - DISCHARGE_POLICY_LOW = 1, - NUM_DISCHARGE_POLICIES = 4; - -enum : BYTE { - PO_THROTTLE_NONE, - PO_THROTTLE_CONSTANT, - PO_THROTTLE_DEGRADE, - PO_THROTTLE_ADAPTIVE, - PO_THROTTLE_MAXIMUM -} - -struct SYSTEM_POWER_LEVEL { - BOOLEAN Enable; - UCHAR[3] Spare; - ULONG BatteryLevel; - POWER_ACTION_POLICY PowerPolicy; - SYSTEM_POWER_STATE MinSystemState; -} -alias SYSTEM_POWER_LEVEL* PSYSTEM_POWER_LEVEL; - -struct SYSTEM_POWER_POLICY { - ULONG Revision; - POWER_ACTION_POLICY PowerButton; - POWER_ACTION_POLICY SleepButton; - POWER_ACTION_POLICY LidClose; - SYSTEM_POWER_STATE LidOpenWake; - ULONG Reserved; - POWER_ACTION_POLICY Idle; - ULONG IdleTimeout; - UCHAR IdleSensitivity; - UCHAR DynamicThrottle; - UCHAR[2] Spare2; - SYSTEM_POWER_STATE MinSleep; - SYSTEM_POWER_STATE MaxSleep; - SYSTEM_POWER_STATE ReducedLatencySleep; - ULONG WinLogonFlags; - ULONG Spare3; - ULONG DozeS4Timeout; - ULONG BroadcastCapacityResolution; - SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; - ULONG VideoTimeout; - BOOLEAN VideoDimDisplay; - ULONG[3] VideoReserved; - ULONG SpindownTimeout; - BOOLEAN OptimizeForPower; - UCHAR FanThrottleTolerance; - UCHAR ForcedThrottle; - UCHAR MinThrottle; - POWER_ACTION_POLICY OverThrottled; -} -alias SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY; - -struct SYSTEM_POWER_CAPABILITIES { - BOOLEAN PowerButtonPresent; - BOOLEAN SleepButtonPresent; - BOOLEAN LidPresent; - BOOLEAN SystemS1; - BOOLEAN SystemS2; - BOOLEAN SystemS3; - BOOLEAN SystemS4; - BOOLEAN SystemS5; - BOOLEAN HiberFilePresent; - BOOLEAN FullWake; - BOOLEAN VideoDimPresent; - BOOLEAN ApmPresent; - BOOLEAN UpsPresent; - BOOLEAN ThermalControl; - BOOLEAN ProcessorThrottle; - UCHAR ProcessorMinThrottle; - UCHAR ProcessorMaxThrottle; - UCHAR[4] spare2; - BOOLEAN DiskSpinDown; - UCHAR[8] spare3; - BOOLEAN SystemBatteriesPresent; - BOOLEAN BatteriesAreShortTerm; - BATTERY_REPORTING_SCALE[3] BatteryScale; - SYSTEM_POWER_STATE AcOnLineWake; - SYSTEM_POWER_STATE SoftLidWake; - SYSTEM_POWER_STATE RtcWake; - SYSTEM_POWER_STATE MinDeviceWakeState; - SYSTEM_POWER_STATE DefaultLowLatencyWake; -} -alias SYSTEM_POWER_CAPABILITIES* PSYSTEM_POWER_CAPABILITIES; - -struct SYSTEM_BATTERY_STATE { - BOOLEAN AcOnLine; - BOOLEAN BatteryPresent; - BOOLEAN Charging; - BOOLEAN Discharging; - BOOLEAN[4] Spare1; - ULONG MaxCapacity; - ULONG RemainingCapacity; - ULONG Rate; - ULONG EstimatedTime; - ULONG DefaultAlert1; - ULONG DefaultAlert2; -} -alias SYSTEM_BATTERY_STATE* PSYSTEM_BATTERY_STATE; - -enum POWER_INFORMATION_LEVEL { - SystemPowerPolicyAc, - SystemPowerPolicyDc, - VerifySystemPolicyAc, - VerifySystemPolicyDc, - SystemPowerCapabilities, - SystemBatteryState, - SystemPowerStateHandler, - ProcessorStateHandler, - SystemPowerPolicyCurrent, - AdministratorPowerPolicy, - SystemReserveHiberFile, - ProcessorInformation, - SystemPowerInformation, - ProcessorStateHandler2, - LastWakeTime, - LastSleepTime, - SystemExecutionState, - SystemPowerStateNotifyHandler, - ProcessorPowerPolicyAc, - ProcessorPowerPolicyDc, - VerifyProcessorPowerPolicyAc, - VerifyProcessorPowerPolicyDc, - ProcessorPowerPolicyCurrent -} - -//#if 1 /* (WIN32_WINNT >= 0x0500) */ -struct SYSTEM_POWER_INFORMATION { - ULONG MaxIdlenessAllowed; - ULONG Idleness; - ULONG TimeRemaining; - UCHAR CoolingMode; -} -alias SYSTEM_POWER_INFORMATION* PSYSTEM_POWER_INFORMATION; -//#endif - -struct PROCESSOR_POWER_POLICY_INFO { - ULONG TimeCheck; - ULONG DemoteLimit; - ULONG PromoteLimit; - UCHAR DemotePercent; - UCHAR PromotePercent; - UCHAR[2] Spare; - uint _bf; - - bool AllowDemotion() { return cast(bool)(_bf & 1); } - bool AllowPromotion() { return cast(bool)(_bf & 2); } - - bool AllowDemotion(bool a) { _bf = (_bf & ~1) | a; return a; } - bool AllowPromotion(bool a) { _bf = (_bf & ~2) | (a << 1); return a; } -/+ - ULONG AllowDemotion : 1; - ULONG AllowPromotion : 1; - ULONG Reserved : 30; -+/ -} -alias PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO; - -struct PROCESSOR_POWER_POLICY { - ULONG Revision; - UCHAR DynamicThrottle; - UCHAR[3] Spare; - ULONG Reserved; - ULONG PolicyCount; - PROCESSOR_POWER_POLICY_INFO[3] Policy; -} -alias PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; - -struct ADMINISTRATOR_POWER_POLICY { - SYSTEM_POWER_STATE MinSleep; - SYSTEM_POWER_STATE MaxSleep; - ULONG MinVideoTimeout; - ULONG MaxVideoTimeout; - ULONG MinSpindownTimeout; - ULONG MaxSpindownTimeout; -} -alias ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; - -//}//#endif /* _WIN32_WINNT >= 0x500 */ - -extern (Windows) { - alias void function(PVOID, DWORD, PVOID) PIMAGE_TLS_CALLBACK; - - static if (_WIN32_WINNT >= 0x500) { - alias LONG function(PEXCEPTION_POINTERS) PVECTORED_EXCEPTION_HANDLER; - alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACKFUNC; - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum HEAP_INFORMATION_CLASS { - HeapCompatibilityInformation - } - - enum ACTIVATION_CONTEXT_INFO_CLASS { - ActivationContextBasicInformation = 1, - ActivationContextDetailedInformation, - AssemblyDetailedInformationInActivationContext, - FileInformationInAssemblyOfAssemblyInActivationContext - } - - struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { - DWORD ulFlags; - DWORD ulEncodedAssemblyIdentityLength; - DWORD ulManifestPathType; - DWORD ulManifestPathLength; - LARGE_INTEGER liManifestLastWriteTime; - DWORD ulPolicyPathType; - DWORD ulPolicyPathLength; - LARGE_INTEGER liPolicyLastWriteTime; - DWORD ulMetadataSatelliteRosterIndex; - DWORD ulManifestVersionMajor; - DWORD ulManifestVersionMinor; - DWORD ulPolicyVersionMajor; - DWORD ulPolicyVersionMinor; - DWORD ulAssemblyDirectoryNameLength; - PCWSTR lpAssemblyEncodedAssemblyIdentity; - PCWSTR lpAssemblyManifestPath; - PCWSTR lpAssemblyPolicyPath; - PCWSTR lpAssemblyDirectoryName; - } - alias ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* - PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; - alias const(ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION)* - PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; - - struct ACTIVATION_CONTEXT_DETAILED_INFORMATION { - DWORD dwFlags; - DWORD ulFormatVersion; - DWORD ulAssemblyCount; - DWORD ulRootManifestPathType; - DWORD ulRootManifestPathChars; - DWORD ulRootConfigurationPathType; - DWORD ulRootConfigurationPathChars; - DWORD ulAppDirPathType; - DWORD ulAppDirPathChars; - PCWSTR lpRootManifestPath; - PCWSTR lpRootConfigurationPath; - PCWSTR lpAppDirPath; - } - alias ACTIVATION_CONTEXT_DETAILED_INFORMATION* - PACTIVATION_CONTEXT_DETAILED_INFORMATION; - alias const(ACTIVATION_CONTEXT_DETAILED_INFORMATION)* - PCACTIVATION_CONTEXT_DETAILED_INFORMATION; - - struct ACTIVATION_CONTEXT_QUERY_INDEX { - ULONG ulAssemblyIndex; - ULONG ulFileIndexInAssembly; - } - alias ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX; - alias const(ACTIVATION_CONTEXT_QUERY_INDEX)* PCACTIVATION_CONTEXT_QUERY_INDEX; - - struct ASSEMBLY_FILE_DETAILED_INFORMATION { - DWORD ulFlags; - DWORD ulFilenameLength; - DWORD ulPathLength; - PCWSTR lpFileName; - PCWSTR lpFilePath; - } - alias ASSEMBLY_FILE_DETAILED_INFORMATION* - PASSEMBLY_FILE_DETAILED_INFORMATION; - alias const(ASSEMBLY_FILE_DETAILED_INFORMATION)* - PCASSEMBLY_FILE_DETAILED_INFORMATION; -} - -version (Unicode) { - alias OSVERSIONINFOW OSVERSIONINFO; - alias OSVERSIONINFOEXW OSVERSIONINFOEX; -} else { - alias OSVERSIONINFOA OSVERSIONINFO; - alias OSVERSIONINFOEXA OSVERSIONINFOEX; -} - -alias OSVERSIONINFO* POSVERSIONINFO, LPOSVERSIONINFO; -alias OSVERSIONINFOEX* POSVERSIONINFOEX, LPOSVERSIONINFOEX; - - -static if (_WIN32_WINNT >= 0x500) { - extern (Windows) ULONGLONG VerSetConditionMask(ULONGLONG, DWORD, BYTE); -} - -version (Win64) { - const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR64_MAGIC; - - alias IMAGE_ORDINAL_FLAG64 IMAGE_ORDINAL_FLAG; - alias IMAGE_SNAP_BY_ORDINAL64 IMAGE_SNAP_BY_ORDINAL; - alias IMAGE_ORDINAL64 IMAGE_ORDINAL; - alias IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; - alias IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; - alias IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; - alias IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; -} else { - const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC; - - alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG; - alias IMAGE_ORDINAL32 IMAGE_ORDINAL; - alias IMAGE_SNAP_BY_ORDINAL32 IMAGE_SNAP_BY_ORDINAL; - alias IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; - alias IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; - alias IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; - alias IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; -} - -alias IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER; -alias IMAGE_NT_HEADERS* PIMAGE_NT_HEADERS; -alias IMAGE_THUNK_DATA* PIMAGE_THUNK_DATA; -alias IMAGE_TLS_DIRECTORY* PIMAGE_TLS_DIRECTORY; - -// TODO: MinGW implements these in assembly. How to translate? -PVOID GetCurrentFiber(); -PVOID GetFiberData(); +/** + * Windows API header module + * + * Translated from MinGW API for MS-Windows 3.12 + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winnt.d) + */ +module core.sys.windows.winnt; + +public import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winerror; +private import core.sys.windows.w32api; + +/* Translation Notes: +The following macros are unneeded for D: +FIELD_OFFSET(t,f), CONTAINING_RECORD(address, type, field) +*/ + +alias void VOID; +alias char CHAR, CCHAR; +alias wchar WCHAR; +alias bool BOOLEAN; +alias byte FCHAR; +alias ubyte UCHAR; +alias short SHORT; +alias ushort LANGID, FSHORT; +alias uint LCID, FLONG, ACCESS_MASK; +alias long LONGLONG, USN; +alias ulong DWORDLONG, ULONGLONG; + +alias void* PVOID, LPVOID; +alias char* PSZ, PCHAR, PCCHAR, LPCH, PCH, LPSTR, PSTR; +alias wchar* PWCHAR, LPWCH, PWCH, LPWSTR, PWSTR; +alias bool* PBOOLEAN; +alias ubyte* PUCHAR; +alias short* PSHORT; +alias int* PLONG; +alias uint* PLCID, PACCESS_MASK; +alias long* PLONGLONG; +alias ulong* PDWORDLONG, PULONGLONG; + +// FIXME(MinGW) for __WIN64 +alias void* PVOID64; + +// const versions +alias const(char)* LPCCH, PCSTR, LPCSTR; +alias const(wchar)* LPCWCH, PCWCH, LPCWSTR, PCWSTR; + +version (Unicode) { + alias WCHAR TCHAR, _TCHAR; +} else { + alias CHAR TCHAR, _TCHAR; +} + +alias TCHAR TBYTE; +alias TCHAR* PTCH, PTBYTE, LPTCH, PTSTR, LPTSTR, LP, PTCHAR; +alias const(TCHAR)* LPCTSTR; + +const char ANSI_NULL = '\0'; +const wchar UNICODE_NULL = '\0'; + +const APPLICATION_ERROR_MASK = 0x20000000; +const ERROR_SEVERITY_SUCCESS = 0x00000000; +const ERROR_SEVERITY_INFORMATIONAL = 0x40000000; +const ERROR_SEVERITY_WARNING = 0x80000000; +const ERROR_SEVERITY_ERROR = 0xC0000000; + +// MinGW: also in ddk/ntifs.h +enum : USHORT { + COMPRESSION_FORMAT_NONE = 0x0000, + COMPRESSION_FORMAT_DEFAULT = 0x0001, + COMPRESSION_FORMAT_LZNT1 = 0x0002, + COMPRESSION_ENGINE_STANDARD = 0x0000, + COMPRESSION_ENGINE_MAXIMUM = 0x0100, + COMPRESSION_ENGINE_HIBER = 0x0200 +} + +// ACCESS_DENIED_OBJECT_ACE, etc +const DWORD + ACE_OBJECT_TYPE_PRESENT = 0x00000001, + ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002; + +// ACE_HEADER.AceType +// also in ddk/ntifs.h +enum : BYTE { + ACCESS_ALLOWED_ACE_TYPE, + ACCESS_DENIED_ACE_TYPE, + SYSTEM_AUDIT_ACE_TYPE, + SYSTEM_ALARM_ACE_TYPE +} + +// ACE_HEADER.AceFlags +const BYTE + OBJECT_INHERIT_ACE = 0x01, + CONTAINER_INHERIT_ACE = 0x02, + NO_PROPAGATE_INHERIT_ACE = 0x04, + INHERIT_ONLY_ACE = 0x08, + INHERITED_ACE = 0x10, + VALID_INHERIT_FLAGS = 0x1F, + SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, + FAILED_ACCESS_ACE_FLAG = 0x80; + +// Access Mask Format +const ACCESS_MASK + DELETE = 0x00010000, + READ_CONTROL = 0x00020000, + WRITE_DAC = 0x00040000, + WRITE_OWNER = 0x00080000, + SYNCHRONIZE = 0x00100000, + ACCESS_SYSTEM_SECURITY = 0x01000000, + MAXIMUM_ALLOWED = 0x02000000, + GENERIC_READ = 0x80000000, + GENERIC_WRITE = 0x40000000, + GENERIC_EXECUTE = 0x20000000, + GENERIC_ALL = 0x10000000, + STANDARD_RIGHTS_REQUIRED = 0x000F0000, + STANDARD_RIGHTS_READ = 0x00020000, + STANDARD_RIGHTS_WRITE = 0x00020000, + STANDARD_RIGHTS_EXECUTE = 0x00020000, + STANDARD_RIGHTS_ALL = 0x001F0000, + SPECIFIC_RIGHTS_ALL = 0x0000FFFF; + + +const DWORD INVALID_FILE_ATTRIBUTES = -1; + +// MinGW: Also in ddk/winddk.h +const DWORD + FILE_LIST_DIRECTORY = 0x00000001, + FILE_READ_DATA = 0x00000001, + FILE_ADD_FILE = 0x00000002, + FILE_WRITE_DATA = 0x00000002, + FILE_ADD_SUBDIRECTORY = 0x00000004, + FILE_APPEND_DATA = 0x00000004, + FILE_CREATE_PIPE_INSTANCE = 0x00000004, + FILE_READ_EA = 0x00000008, + FILE_READ_PROPERTIES = 0x00000008, + FILE_WRITE_EA = 0x00000010, + FILE_WRITE_PROPERTIES = 0x00000010, + FILE_EXECUTE = 0x00000020, + FILE_TRAVERSE = 0x00000020, + FILE_DELETE_CHILD = 0x00000040, + FILE_READ_ATTRIBUTES = 0x00000080, + FILE_WRITE_ATTRIBUTES = 0x00000100; + +const DWORD + FILE_SHARE_READ = 0x00000001, + FILE_SHARE_WRITE = 0x00000002, + FILE_SHARE_DELETE = 0x00000004, + FILE_SHARE_VALID_FLAGS = 0x00000007; + +const DWORD + FILE_ATTRIBUTE_READONLY = 0x00000001, + FILE_ATTRIBUTE_HIDDEN = 0x00000002, + FILE_ATTRIBUTE_SYSTEM = 0x00000004, + FILE_ATTRIBUTE_DIRECTORY = 0x00000010, + FILE_ATTRIBUTE_ARCHIVE = 0x00000020, + FILE_ATTRIBUTE_DEVICE = 0x00000040, + FILE_ATTRIBUTE_NORMAL = 0x00000080, + FILE_ATTRIBUTE_TEMPORARY = 0x00000100, + FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200, + FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400, + FILE_ATTRIBUTE_COMPRESSED = 0x00000800, + FILE_ATTRIBUTE_OFFLINE = 0x00001000, + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000, + FILE_ATTRIBUTE_ENCRYPTED = 0x00004000, + FILE_ATTRIBUTE_VALID_FLAGS = 0x00007fb7, + FILE_ATTRIBUTE_VALID_SET_FLAGS = 0x000031a7; + +// These are not documented on MSDN +const FILE_COPY_STRUCTURED_STORAGE = 0x00000041; +const FILE_STRUCTURED_STORAGE = 0x00000441; + +// Nor are these +const FILE_VALID_OPTION_FLAGS = 0x00ffffff; +const FILE_VALID_PIPE_OPTION_FLAGS = 0x00000032; +const FILE_VALID_MAILSLOT_OPTION_FLAGS = 0x00000032; +const FILE_VALID_SET_FLAGS = 0x00000036; + +const ULONG + FILE_SUPERSEDE = 0x00000000, + FILE_OPEN = 0x00000001, + FILE_CREATE = 0x00000002, + FILE_OPEN_IF = 0x00000003, + FILE_OVERWRITE = 0x00000004, + FILE_OVERWRITE_IF = 0x00000005, + FILE_MAXIMUM_DISPOSITION = 0x00000005; + +const ULONG + FILE_DIRECTORY_FILE = 0x00000001, + FILE_WRITE_THROUGH = 0x00000002, + FILE_SEQUENTIAL_ONLY = 0x00000004, + FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008, + FILE_SYNCHRONOUS_IO_ALERT = 0x00000010, + FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020, + FILE_NON_DIRECTORY_FILE = 0x00000040, + FILE_CREATE_TREE_CONNECTION = 0x00000080, + FILE_COMPLETE_IF_OPLOCKED = 0x00000100, + FILE_NO_EA_KNOWLEDGE = 0x00000200, + FILE_OPEN_FOR_RECOVERY = 0x00000400, + FILE_RANDOM_ACCESS = 0x00000800, + FILE_DELETE_ON_CLOSE = 0x00001000, + FILE_OPEN_BY_FILE_ID = 0x00002000, + FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000, + FILE_NO_COMPRESSION = 0x00008000, + FILE_RESERVE_OPFILTER = 0x00100000, + FILE_OPEN_REPARSE_POINT = 0x00200000, + FILE_OPEN_NO_RECALL = 0x00400000, + FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000; + + +const ACCESS_MASK + FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x01FF, + FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES + | FILE_EXECUTE | SYNCHRONIZE, + FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA + | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE, + FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA + | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA + | SYNCHRONIZE; + +// MinGW: end winddk.h +// MinGW: also in ddk/ntifs.h +const DWORD + FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, + FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, + FILE_NOTIFY_CHANGE_NAME = 0x00000003, + FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004, + FILE_NOTIFY_CHANGE_SIZE = 0x00000008, + FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010, + FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020, + FILE_NOTIFY_CHANGE_CREATION = 0x00000040, + FILE_NOTIFY_CHANGE_EA = 0x00000080, + FILE_NOTIFY_CHANGE_SECURITY = 0x00000100, + FILE_NOTIFY_CHANGE_STREAM_NAME = 0x00000200, + FILE_NOTIFY_CHANGE_STREAM_SIZE = 0x00000400, + FILE_NOTIFY_CHANGE_STREAM_WRITE = 0x00000800, + FILE_NOTIFY_VALID_MASK = 0x00000fff; + +const DWORD + FILE_CASE_SENSITIVE_SEARCH = 0x00000001, + FILE_CASE_PRESERVED_NAMES = 0x00000002, + FILE_UNICODE_ON_DISK = 0x00000004, + FILE_PERSISTENT_ACLS = 0x00000008, + FILE_FILE_COMPRESSION = 0x00000010, + FILE_VOLUME_QUOTAS = 0x00000020, + FILE_SUPPORTS_SPARSE_FILES = 0x00000040, + FILE_SUPPORTS_REPARSE_POINTS = 0x00000080, + FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100, + FS_LFN_APIS = 0x00004000, + FILE_VOLUME_IS_COMPRESSED = 0x00008000, + FILE_SUPPORTS_OBJECT_IDS = 0x00010000, + FILE_SUPPORTS_ENCRYPTION = 0x00020000, + FILE_NAMED_STREAMS = 0x00040000, + FILE_READ_ONLY_VOLUME = 0x00080000, + FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000, + FILE_SUPPORTS_TRANSACTIONS = 0x00200000; + +// These are not documented on MSDN +const ACCESS_MASK + IO_COMPLETION_QUERY_STATE = 1, + IO_COMPLETION_MODIFY_STATE = 2, + IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 3; +// MinGW: end ntifs.h + +// MinGW: also in ddk/winddk.h +const DWORD + DUPLICATE_CLOSE_SOURCE = 1, + DUPLICATE_SAME_ACCESS = 2, + DUPLICATE_SAME_ATTRIBUTES = 4; +// MinGW: end winddk.k + +const DWORD + MAILSLOT_NO_MESSAGE = -1, + MAILSLOT_WAIT_FOREVER = -1; + +const ACCESS_MASK + PROCESS_TERMINATE = 0x0001, + PROCESS_CREATE_THREAD = 0x0002, + PROCESS_SET_SESSIONID = 0x0004, + PROCESS_VM_OPERATION = 0x0008, + PROCESS_VM_READ = 0x0010, + PROCESS_VM_WRITE = 0x0020, + PROCESS_DUP_HANDLE = 0x0040, + PROCESS_CREATE_PROCESS = 0x0080, + PROCESS_SET_QUOTA = 0x0100, + PROCESS_SET_INFORMATION = 0x0200, + PROCESS_QUERY_INFORMATION = 0x0400, + PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0FFF; + +const ACCESS_MASK + THREAD_TERMINATE = 0x0001, + THREAD_SUSPEND_RESUME = 0x0002, + THREAD_GET_CONTEXT = 0x0008, + THREAD_SET_CONTEXT = 0x0010, + THREAD_SET_INFORMATION = 0x0020, + THREAD_QUERY_INFORMATION = 0x0040, + THREAD_SET_THREAD_TOKEN = 0x0080, + THREAD_IMPERSONATE = 0x0100, + THREAD_DIRECT_IMPERSONATION = 0x0200, + THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF; + +// These are not documented on MSDN +const THREAD_BASE_PRIORITY_LOWRT = 15; +const THREAD_BASE_PRIORITY_MAX = 2; +const THREAD_BASE_PRIORITY_MIN = -2; +const THREAD_BASE_PRIORITY_IDLE = -15; + +const DWORD EXCEPTION_NONCONTINUABLE = 1; +const size_t EXCEPTION_MAXIMUM_PARAMETERS = 15; + +// These are not documented on MSDN +const ACCESS_MASK + MUTANT_QUERY_STATE = 1, + MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE; + +const ACCESS_MASK + TIMER_QUERY_STATE = 1, + TIMER_MODIFY_STATE = 2, + TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE + | TIMER_MODIFY_STATE; + +const SID_IDENTIFIER_AUTHORITY + SECURITY_NULL_SID_AUTHORITY = {[5: 0]}, + SECURITY_WORLD_SID_AUTHORITY = {[5: 1]}, + SECURITY_LOCAL_SID_AUTHORITY = {[5: 2]}, + SECURITY_CREATOR_SID_AUTHORITY = {[5: 3]}, + SECURITY_NON_UNIQUE_AUTHORITY = {[5: 4]}, + SECURITY_NT_AUTHORITY = {[5: 5]}, + SECURITY_MANDATORY_LABEL_AUTHORITY = {[5: 6]}; + +const DWORD + SECURITY_NULL_RID = 0, + SECURITY_WORLD_RID = 0, + SECURITY_LOCAL_RID = 0, + SECURITY_CREATOR_OWNER_RID = 0, + SECURITY_CREATOR_GROUP_RID = 1, + SECURITY_DIALUP_RID = 1, + SECURITY_NETWORK_RID = 2, + SECURITY_BATCH_RID = 3, + SECURITY_INTERACTIVE_RID = 4, + SECURITY_LOGON_IDS_RID = 5, + SECURITY_SERVICE_RID = 6, + SECURITY_LOCAL_SYSTEM_RID = 18, + SECURITY_BUILTIN_DOMAIN_RID = 32, + SECURITY_PRINCIPAL_SELF_RID = 10, + SECURITY_CREATOR_OWNER_SERVER_RID = 2, + SECURITY_CREATOR_GROUP_SERVER_RID = 3, + SECURITY_LOGON_IDS_RID_COUNT = 3, + SECURITY_ANONYMOUS_LOGON_RID = 7, + SECURITY_PROXY_RID = 8, + SECURITY_ENTERPRISE_CONTROLLERS_RID = 9, + SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID, + SECURITY_AUTHENTICATED_USER_RID = 11, + SECURITY_RESTRICTED_CODE_RID = 12, + SECURITY_NT_NON_UNIQUE_RID = 21, + SID_REVISION = 1; + +enum : DWORD { + DOMAIN_USER_RID_ADMIN = 0x01F4, + DOMAIN_USER_RID_GUEST = 0x01F5, + DOMAIN_GROUP_RID_ADMINS = 0x0200, + DOMAIN_GROUP_RID_USERS = 0x0201, + DOMAIN_ALIAS_RID_ADMINS = 0x0220, + DOMAIN_ALIAS_RID_USERS = 0x0221, + DOMAIN_ALIAS_RID_GUESTS = 0x0222, + DOMAIN_ALIAS_RID_POWER_USERS = 0x0223, + DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x0224, + DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x0225, + DOMAIN_ALIAS_RID_PRINT_OPS = 0x0226, + DOMAIN_ALIAS_RID_BACKUP_OPS = 0x0227, + DOMAIN_ALIAS_RID_REPLICATOR = 0x0228 +} + +enum : WORD { + SECURITY_MANDATORY_UNTRUSTED_RID = 0, + SECURITY_MANDATORY_LOW_RID = 0x1000, + SECURITY_MANDATORY_MEDIUM_RID = 0x2000, + SECURITY_MANDATORY_HIGH_RID = 0x3000, + SECURITY_MANDATORY_SYSTEM_RID = 0x4000, + SECURITY_MANDATORY_PROTECTED_PROCESS_RID = 0x5000, + SECURITY_MANDATORY_MAXIMUM_USER_RID = SECURITY_MANDATORY_SYSTEM_RID +} + +const TCHAR[] + SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege", + SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege", + SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege", + SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege", + SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege", + SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege", + SE_TCB_NAME = "SeTcbPrivilege", + SE_SECURITY_NAME = "SeSecurityPrivilege", + SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege", + SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege", + SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege", + SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege", + SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege", + SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege", + SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege", + SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege", + SE_BACKUP_NAME = "SeBackupPrivilege", + SE_RESTORE_NAME = "SeRestorePrivilege", + SE_SHUTDOWN_NAME = "SeShutdownPrivilege", + SE_DEBUG_NAME = "SeDebugPrivilege", + SE_AUDIT_NAME = "SeAuditPrivilege", + SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege", + SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege", + SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege", + SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege", + SE_UNDOCK_NAME = "SeUndockPrivilege", + SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege", + SE_IMPERSONATE_NAME = "SeImpersonatePrivilege", + SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege", + SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege", + SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege", + SE_RELABEL_NAME = "SeRelabelPrivilege", + SE_INCREASE_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege", + SE_TIME_ZONE_NAME = "SeTimeZonePrivilege", + SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"; + +const DWORD + SE_GROUP_MANDATORY = 0x00000001, + SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002, + SE_GROUP_ENABLED = 0x00000004, + SE_GROUP_OWNER = 0x00000008, + SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010, + SE_GROUP_INTEGRITY = 0x00000020, + SE_GROUP_INTEGRITY_ENABLED = 0x00000040, + SE_GROUP_RESOURCE = 0x20000000, + SE_GROUP_LOGON_ID = 0xC0000000; + +// Primary language identifiers +enum : USHORT { + LANG_NEUTRAL, + LANG_ARABIC, + LANG_BULGARIAN, + LANG_CATALAN, + LANG_CHINESE, + LANG_CZECH, + LANG_DANISH, + LANG_GERMAN, + LANG_GREEK, + LANG_ENGLISH, + LANG_SPANISH, + LANG_FINNISH, + LANG_FRENCH, + LANG_HEBREW, + LANG_HUNGARIAN, + LANG_ICELANDIC, + LANG_ITALIAN, + LANG_JAPANESE, + LANG_KOREAN, + LANG_DUTCH, + LANG_NORWEGIAN, + LANG_POLISH, + LANG_PORTUGUESE, // = 0x16 + LANG_ROMANIAN = 0x18, + LANG_RUSSIAN, + LANG_CROATIAN, // = 0x1A + LANG_SERBIAN = 0x1A, + LANG_BOSNIAN = 0x1A, + LANG_SLOVAK, + LANG_ALBANIAN, + LANG_SWEDISH, + LANG_THAI, + LANG_TURKISH, + LANG_URDU, + LANG_INDONESIAN, + LANG_UKRAINIAN, + LANG_BELARUSIAN, + LANG_SLOVENIAN, + LANG_ESTONIAN, + LANG_LATVIAN, + LANG_LITHUANIAN, // = 0x27 + LANG_FARSI = 0x29, + LANG_PERSIAN = 0x29, + LANG_VIETNAMESE, + LANG_ARMENIAN, + LANG_AZERI, + LANG_BASQUE, + LANG_LOWER_SORBIAN, // = 0x2E + LANG_UPPER_SORBIAN = 0x2E, + LANG_MACEDONIAN, // = 0x2F + LANG_TSWANA = 0x32, + LANG_XHOSA = 0x34, + LANG_ZULU, + LANG_AFRIKAANS, + LANG_GEORGIAN, + LANG_FAEROESE, + LANG_HINDI, + LANG_MALTESE, + LANG_SAMI, + LANG_IRISH, // = 0x3C + LANG_MALAY = 0x3E, + LANG_KAZAK, + LANG_KYRGYZ, + LANG_SWAHILI, // = 0x41 + LANG_UZBEK = 0x43, + LANG_TATAR, + LANG_BENGALI, + LANG_PUNJABI, + LANG_GUJARATI, + LANG_ORIYA, + LANG_TAMIL, + LANG_TELUGU, + LANG_KANNADA, + LANG_MALAYALAM, + LANG_ASSAMESE, + LANG_MARATHI, + LANG_SANSKRIT, + LANG_MONGOLIAN, + LANG_TIBETAN, + LANG_WELSH, + LANG_KHMER, + LANG_LAO, // = 0x54 + LANG_GALICIAN = 0x56, + LANG_KONKANI, + LANG_MANIPURI, + LANG_SINDHI, + LANG_SYRIAC, + LANG_SINHALESE, // = 0x5B + LANG_INUKTITUT = 0x5D, + LANG_AMHARIC, + LANG_TAMAZIGHT, + LANG_KASHMIRI, + LANG_NEPALI, + LANG_FRISIAN, + LANG_PASHTO, + LANG_FILIPINO, + LANG_DIVEHI, // = 0x65 + LANG_HAUSA = 0x68, + LANG_YORUBA = 0x6A, + LANG_QUECHUA, + LANG_SOTHO, + LANG_BASHKIR, + LANG_LUXEMBOURGISH, + LANG_GREENLANDIC, + LANG_IGBO, // = 0x70 + LANG_TIGRIGNA = 0x73, + LANG_YI = 0x78, + LANG_MAPUDUNGUN = 0x7A, + LANG_MOHAWK = 0x7C, + LANG_BRETON = 0x7E, + LANG_UIGHUR = 0x80, + LANG_MAORI, + LANG_OCCITAN, + LANG_CORSICAN, + LANG_ALSATIAN, + LANG_YAKUT, + LANG_KICHE, + LANG_KINYARWANDA, + LANG_WOLOF, // = 0x88 + LANG_DARI = 0x8C, + LANG_MALAGASY, // = 0x8D + + LANG_SERBIAN_NEUTRAL = 0x7C1A, + LANG_BOSNIAN_NEUTRAL = 0x781A, + + LANG_INVARIANT = 0x7F +} + + +// Sublanguage identifiers +enum : USHORT { + SUBLANG_NEUTRAL, + SUBLANG_DEFAULT, + SUBLANG_SYS_DEFAULT, + SUBLANG_CUSTOM_DEFAULT, // = 3 + SUBLANG_UI_CUSTOM_DEFAULT = 3, + SUBLANG_CUSTOM_UNSPECIFIED, // = 4 + + SUBLANG_AFRIKAANS_SOUTH_AFRICA = 1, + SUBLANG_ALBANIAN_ALBANIA = 1, + SUBLANG_ALSATIAN_FRANCE = 1, + SUBLANG_AMHARIC_ETHIOPIA = 1, + + SUBLANG_ARABIC_SAUDI_ARABIA = 1, + SUBLANG_ARABIC_IRAQ, + SUBLANG_ARABIC_EGYPT, + SUBLANG_ARABIC_LIBYA, + SUBLANG_ARABIC_ALGERIA, + SUBLANG_ARABIC_MOROCCO, + SUBLANG_ARABIC_TUNISIA, + SUBLANG_ARABIC_OMAN, + SUBLANG_ARABIC_YEMEN, + SUBLANG_ARABIC_SYRIA, + SUBLANG_ARABIC_JORDAN, + SUBLANG_ARABIC_LEBANON, + SUBLANG_ARABIC_KUWAIT, + SUBLANG_ARABIC_UAE, + SUBLANG_ARABIC_BAHRAIN, + SUBLANG_ARABIC_QATAR, // = 16 + + SUBLANG_ARMENIAN_ARMENIA = 1, + SUBLANG_ASSAMESE_INDIA = 1, + + SUBLANG_AZERI_LATIN = 1, + SUBLANG_AZERI_CYRILLIC, // = 2 + + SUBLANG_BASHKIR_RUSSIA = 1, + SUBLANG_BASQUE_BASQUE = 1, + SUBLANG_BELARUSIAN_BELARUS = 1, + SUBLANG_BENGALI_INDIA = 1, + + SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN = 5, + SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 8, + + SUBLANG_BRETON_FRANCE = 1, + SUBLANG_BULGARIAN_BULGARIA = 1, + SUBLANG_CATALAN_CATALAN = 1, + + SUBLANG_CHINESE_TRADITIONAL = 1, + SUBLANG_CHINESE_SIMPLIFIED, + SUBLANG_CHINESE_HONGKONG, + SUBLANG_CHINESE_SINGAPORE, + SUBLANG_CHINESE_MACAU, // = 5 + + SUBLANG_CORSICAN_FRANCE = 1, + + SUBLANG_CROATIAN_CROATIA = 1, + SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN = 4, + + SUBLANG_CZECH_CZECH_REPUBLIC = 1, + SUBLANG_DANISH_DENMARK = 1, + SUBLANG_DIVEHI_MALDIVES = 1, + + SUBLANG_DUTCH = 1, + SUBLANG_DUTCH_BELGIAN, // = 2 + + SUBLANG_ENGLISH_US = 1, + SUBLANG_ENGLISH_UK, + SUBLANG_ENGLISH_AUS, + SUBLANG_ENGLISH_CAN, + SUBLANG_ENGLISH_NZ, + SUBLANG_ENGLISH_EIRE, // = 6 + SUBLANG_ENGLISH_IRELAND = 6, + SUBLANG_ENGLISH_SOUTH_AFRICA, + SUBLANG_ENGLISH_JAMAICA, + SUBLANG_ENGLISH_CARIBBEAN, + SUBLANG_ENGLISH_BELIZE, + SUBLANG_ENGLISH_TRINIDAD, + SUBLANG_ENGLISH_ZIMBABWE, + SUBLANG_ENGLISH_PHILIPPINES, // = 13 + SUBLANG_ENGLISH_INDIA = 16, + SUBLANG_ENGLISH_MALAYSIA, + SUBLANG_ENGLISH_SINGAPORE, // = 18 + + SUBLANG_ESTONIAN_ESTONIA = 1, + SUBLANG_FAEROESE_FAROE_ISLANDS = 1, + SUBLANG_FILIPINO_PHILIPPINES = 1, + SUBLANG_FINNISH_FINLAND = 1, + + SUBLANG_FRENCH = 1, + SUBLANG_FRENCH_BELGIAN, + SUBLANG_FRENCH_CANADIAN, + SUBLANG_FRENCH_SWISS, + SUBLANG_FRENCH_LUXEMBOURG, + SUBLANG_FRENCH_MONACO, // = 6 + + SUBLANG_FRISIAN_NETHERLANDS = 1, + SUBLANG_GALICIAN_GALICIAN = 1, + SUBLANG_GEORGIAN_GEORGIA = 1, + + SUBLANG_GERMAN = 1, + SUBLANG_GERMAN_SWISS, + SUBLANG_GERMAN_AUSTRIAN, + SUBLANG_GERMAN_LUXEMBOURG, + SUBLANG_GERMAN_LIECHTENSTEIN, // = 5 + + SUBLANG_GREEK_GREECE = 1, + SUBLANG_GREENLANDIC_GREENLAND = 1, + SUBLANG_GUJARATI_INDIA = 1, + SUBLANG_HAUSA_NIGERIA = 1, + SUBLANG_HEBREW_ISRAEL = 1, + SUBLANG_HINDI_INDIA = 1, + SUBLANG_HUNGARIAN_HUNGARY = 1, + SUBLANG_ICELANDIC_ICELAND = 1, + SUBLANG_IGBO_NIGERIA = 1, + SUBLANG_INDONESIAN_INDONESIA = 1, + + SUBLANG_INUKTITUT_CANADA = 1, + SUBLANG_INUKTITUT_CANADA_LATIN = 1, + + SUBLANG_IRISH_IRELAND = 1, + + SUBLANG_ITALIAN = 1, + SUBLANG_ITALIAN_SWISS, // = 2 + + SUBLANG_JAPANESE_JAPAN = 1, + + SUBLANG_KASHMIRI_INDIA = 2, + SUBLANG_KASHMIRI_SASIA = 2, + + SUBLANG_KAZAK_KAZAKHSTAN = 1, + SUBLANG_KHMER_CAMBODIA = 1, + SUBLANG_KICHE_GUATEMALA = 1, + SUBLANG_KINYARWANDA_RWANDA = 1, + SUBLANG_KONKANI_INDIA = 1, + SUBLANG_KOREAN = 1, + SUBLANG_KYRGYZ_KYRGYZSTAN = 1, + SUBLANG_LAO_LAO_PDR = 1, + SUBLANG_LATVIAN_LATVIA = 1, + + SUBLANG_LITHUANIAN = 1, + SUBLANG_LITHUANIAN_LITHUANIA = 1, + + SUBLANG_LOWER_SORBIAN_GERMANY = 1, + SUBLANG_LUXEMBOURGISH_LUXEMBOURG = 1, + SUBLANG_MACEDONIAN_MACEDONIA = 1, + SUBLANG_MALAYALAM_INDIA = 1, + SUBLANG_MALTESE_MALTA = 1, + SUBLANG_MAORI_NEW_ZEALAND = 1, + SUBLANG_MAPUDUNGUN_CHILE = 1, + SUBLANG_MARATHI_INDIA = 1, + SUBLANG_MOHAWK_MOHAWK = 1, + + SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA = 1, + SUBLANG_MONGOLIAN_PRC, // = 2 + + SUBLANG_MALAY_MALAYSIA = 1, + SUBLANG_MALAY_BRUNEI_DARUSSALAM, // = 2 + + SUBLANG_NEPALI_NEPAL = 1, + SUBLANG_NEPALI_INDIA, // = 2 + + SUBLANG_NORWEGIAN_BOKMAL = 1, + SUBLANG_NORWEGIAN_NYNORSK, // = 2 + + SUBLANG_OCCITAN_FRANCE = 1, + SUBLANG_ORIYA_INDIA = 1, + SUBLANG_PASHTO_AFGHANISTAN = 1, + SUBLANG_PERSIAN_IRAN = 1, + SUBLANG_POLISH_POLAND = 1, + + SUBLANG_PORTUGUESE_BRAZILIAN = 1, + SUBLANG_PORTUGUESE = 2, + SUBLANG_PORTUGUESE_PORTUGAL, // = 2 + + SUBLANG_PUNJABI_INDIA = 1, + + SUBLANG_QUECHUA_BOLIVIA = 1, + SUBLANG_QUECHUA_ECUADOR, + SUBLANG_QUECHUA_PERU, // = 3 + + SUBLANG_ROMANIAN_ROMANIA = 1, + SUBLANG_ROMANSH_SWITZERLAND = 1, + SUBLANG_RUSSIAN_RUSSIA = 1, + + SUBLANG_SAMI_NORTHERN_NORWAY = 1, + SUBLANG_SAMI_NORTHERN_SWEDEN, + SUBLANG_SAMI_NORTHERN_FINLAND, // = 3 + SUBLANG_SAMI_SKOLT_FINLAND = 3, + SUBLANG_SAMI_INARI_FINLAND = 3, + SUBLANG_SAMI_LULE_NORWAY, + SUBLANG_SAMI_LULE_SWEDEN, + SUBLANG_SAMI_SOUTHERN_NORWAY, + SUBLANG_SAMI_SOUTHERN_SWEDEN, // = 7 + + SUBLANG_SANSKRIT_INDIA = 1, + + SUBLANG_SERBIAN_LATIN = 2, + SUBLANG_SERBIAN_CYRILLIC, // = 3 + SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN = 6, + SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 7, + + SUBLANG_SINDHI_AFGHANISTAN = 2, + SUBLANG_SINHALESE_SRI_LANKA = 1, + SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA = 1, + SUBLANG_SLOVAK_SLOVAKIA = 1, + SUBLANG_SLOVENIAN_SLOVENIA = 1, + + SUBLANG_SPANISH = 1, + SUBLANG_SPANISH_MEXICAN, + SUBLANG_SPANISH_MODERN, + SUBLANG_SPANISH_GUATEMALA, + SUBLANG_SPANISH_COSTA_RICA, + SUBLANG_SPANISH_PANAMA, + SUBLANG_SPANISH_DOMINICAN_REPUBLIC, + SUBLANG_SPANISH_VENEZUELA, + SUBLANG_SPANISH_COLOMBIA, + SUBLANG_SPANISH_PERU, + SUBLANG_SPANISH_ARGENTINA, + SUBLANG_SPANISH_ECUADOR, + SUBLANG_SPANISH_CHILE, + SUBLANG_SPANISH_URUGUAY, + SUBLANG_SPANISH_PARAGUAY, + SUBLANG_SPANISH_BOLIVIA, + SUBLANG_SPANISH_EL_SALVADOR, + SUBLANG_SPANISH_HONDURAS, + SUBLANG_SPANISH_NICARAGUA, + SUBLANG_SPANISH_PUERTO_RICO, + SUBLANG_SPANISH_US, // = 21 + + SUBLANG_SWEDISH = 1, + SUBLANG_SWEDISH_SWEDEN = 1, + SUBLANG_SWEDISH_FINLAND, // = 2 + + SUBLANG_SYRIAC = 1, + SUBLANG_TAJIK_TAJIKISTAN = 1, + SUBLANG_TAMAZIGHT_ALGERIA_LATIN = 2, + SUBLANG_TAMIL_INDIA = 1, + SUBLANG_TATAR_RUSSIA = 1, + SUBLANG_TELUGU_INDIA = 1, + SUBLANG_THAI_THAILAND = 1, + SUBLANG_TIBETAN_PRC = 1, + SUBLANG_TIBETAN_BHUTAN = 2, + SUBLANG_TIGRIGNA_ERITREA = 1, + SUBLANG_TSWANA_SOUTH_AFRICA = 1, + SUBLANG_TURKISH_TURKEY = 1, + SUBLANG_TURKMEN_TURKMENISTAN = 1, + SUBLANG_UIGHUR_PRC = 1, + SUBLANG_UKRAINIAN_UKRAINE = 1, + SUBLANG_UPPER_SORBIAN_GERMANY = 1, + + SUBLANG_URDU_PAKISTAN = 1, + SUBLANG_URDU_INDIA, // = 2 + + SUBLANG_UZBEK_LATIN = 1, + SUBLANG_UZBEK_CYRILLIC, // = 2 + + SUBLANG_VIETNAMESE_VIETNAM = 1, + SUBLANG_WELSH_UNITED_KINGDOM = 1, + SUBLANG_WOLOF_SENEGAL = 1, + SUBLANG_YORUBA_NIGERIA = 1, + SUBLANG_XHOSA_SOUTH_AFRICA = 1, + SUBLANG_YAKUT_RUSSIA = 1, + SUBLANG_YI_PRC = 1, + SUBLANG_ZULU_SOUTH_AFRICA = 1 +} + +// This is not documented on MSDN +const NLS_VALID_LOCALE_MASK = 1048575; + +// Sorting identifiers +enum : WORD { + SORT_DEFAULT = 0, + SORT_JAPANESE_XJIS = 0, + SORT_JAPANESE_UNICODE = 1, + SORT_CHINESE_BIG5 = 0, + SORT_CHINESE_PRCP = 0, + SORT_CHINESE_UNICODE = 1, + SORT_CHINESE_PRC = 2, + SORT_CHINESE_BOPOMOFO = 3, + SORT_KOREAN_KSC = 0, + SORT_KOREAN_UNICODE = 1, + SORT_GERMAN_PHONE_BOOK = 1, + SORT_HUNGARIAN_DEFAULT = 0, + SORT_HUNGARIAN_TECHNICAL = 1, + SORT_GEORGIAN_TRADITIONAL = 0, + SORT_GEORGIAN_MODERN = 1 +} + +WORD MAKELANGID(USHORT p, USHORT s) { return cast(WORD)((s << 10) | p); } +WORD PRIMARYLANGID(WORD lgid) { return cast(WORD)(lgid & 0x3FF); } +WORD SUBLANGID(WORD lgid) { return cast(WORD)(lgid >>> 10); } + +DWORD MAKELCID(WORD lgid, WORD srtid) { return (cast(DWORD) srtid << 16) | cast(DWORD) lgid; } +// ??? +//DWORD MAKESORTLCID(WORD lgid, WORD srtid, WORD ver) { return (MAKELCID(lgid, srtid)) | ((cast(DWORD)ver) << 20); } +WORD LANGIDFROMLCID(LCID lcid) { return cast(WORD) lcid; } +WORD SORTIDFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 16) & 0x0F); } +WORD SORTVERSIONFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 20) & 0x0F); } + +const WORD LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL; +const WORD LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL; +const DWORD LOCALE_NEUTRAL = (SORT_DEFAULT << 16) + | (SUBLANG_NEUTRAL << 10) | LANG_NEUTRAL; + +// --- +enum : BYTE { + ACL_REVISION = 2, + ACL_REVISION_DS = 4 +} + +// These are not documented on MSDN +enum : BYTE { + ACL_REVISION1 = 1, + ACL_REVISION2, + ACL_REVISION3, + ACL_REVISION4 // = 4 +} + +const BYTE + MIN_ACL_REVISION = 2, + MAX_ACL_REVISION = 4; + +/+ +// These aren't necessary for D. +const MINCHAR=0x80; +const MAXCHAR=0x7f; +const MINSHORT=0x8000; +const MAXSHORT=0x7fff; +const MINLONG=0x80000000; +const MAXLONG=0x7fffffff; +const MAXBYTE=0xff; +const MAXWORD=0xffff; +const MAXDWORD=0xffffffff; ++/ + +// SYSTEM_INFO.dwProcessorType +enum : DWORD { + PROCESSOR_INTEL_386 = 386, + PROCESSOR_INTEL_486 = 486, + PROCESSOR_INTEL_PENTIUM = 586, + PROCESSOR_MIPS_R4000 = 4000, + PROCESSOR_ALPHA_21064 = 21064, + PROCESSOR_INTEL_IA64 = 2200 +} + +// SYSTEM_INFO.wProcessorArchitecture +enum : WORD { + PROCESSOR_ARCHITECTURE_INTEL, + PROCESSOR_ARCHITECTURE_MIPS, + PROCESSOR_ARCHITECTURE_ALPHA, + PROCESSOR_ARCHITECTURE_PPC, + PROCESSOR_ARCHITECTURE_SHX, + PROCESSOR_ARCHITECTURE_ARM, + PROCESSOR_ARCHITECTURE_IA64, + PROCESSOR_ARCHITECTURE_ALPHA64, + PROCESSOR_ARCHITECTURE_MSIL, + PROCESSOR_ARCHITECTURE_AMD64, + PROCESSOR_ARCHITECTURE_IA32_ON_WIN64, // = 10 + PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF +} + +// IsProcessorFeaturePresent() +enum : DWORD { + PF_FLOATING_POINT_PRECISION_ERRATA, + PF_FLOATING_POINT_EMULATED, + PF_COMPARE_EXCHANGE_DOUBLE, + PF_MMX_INSTRUCTIONS_AVAILABLE, + PF_PPC_MOVEMEM_64BIT_OK, + PF_ALPHA_BYTE_INSTRUCTIONS, + PF_XMMI_INSTRUCTIONS_AVAILABLE, + PF_3DNOW_INSTRUCTIONS_AVAILABLE, + PF_RDTSC_INSTRUCTION_AVAILABLE, + PF_PAE_ENABLED, + PF_XMMI64_INSTRUCTIONS_AVAILABLE +} + +// MinGW: also in ddk/ntifs.h +enum : DWORD { + FILE_ACTION_ADDED = 1, + FILE_ACTION_REMOVED, + FILE_ACTION_MODIFIED, + FILE_ACTION_RENAMED_OLD_NAME, + FILE_ACTION_RENAMED_NEW_NAME, + FILE_ACTION_ADDED_STREAM, + FILE_ACTION_REMOVED_STREAM, + FILE_ACTION_MODIFIED_STREAM, + FILE_ACTION_REMOVED_BY_DELETE, + FILE_ACTION_ID_NOT_TUNNELLED, + FILE_ACTION_TUNNELLED_ID_COLLISION // = 11 +} +// MinGW: end ntifs.h + +const DWORD + HEAP_NO_SERIALIZE = 0x01, + HEAP_GROWABLE = 0x02, + HEAP_GENERATE_EXCEPTIONS = 0x04, + HEAP_ZERO_MEMORY = 0x08, + HEAP_REALLOC_IN_PLACE_ONLY = 0x10, + HEAP_TAIL_CHECKING_ENABLED = 0x20, + HEAP_FREE_CHECKING_ENABLED = 0x40, + HEAP_DISABLE_COALESCE_ON_FREE = 0x80; + +// These are not documented on MSDN +const HEAP_CREATE_ALIGN_16 = 0; +const HEAP_CREATE_ENABLE_TRACING = 0x020000; +const HEAP_MAXIMUM_TAG = 0x000FFF; +const HEAP_PSEUDO_TAG_FLAG = 0x008000; +const HEAP_TAG_SHIFT = 16; +// ??? +//MACRO #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16))) + +const ACCESS_MASK + KEY_QUERY_VALUE = 0x000001, + KEY_SET_VALUE = 0x000002, + KEY_CREATE_SUB_KEY = 0x000004, + KEY_ENUMERATE_SUB_KEYS = 0x000008, + KEY_NOTIFY = 0x000010, + KEY_CREATE_LINK = 0x000020, + KEY_WRITE = 0x020006, + KEY_EXECUTE = 0x020019, + KEY_READ = 0x020019, + KEY_ALL_ACCESS = 0x0F003F; + +static if (_WIN32_WINNT >= 0x502) { + const ACCESS_MASK + KEY_WOW64_64KEY = 0x000100, + KEY_WOW64_32KEY = 0x000200; +} + +const DWORD + REG_WHOLE_HIVE_VOLATILE = 1, + REG_REFRESH_HIVE = 2, + REG_NO_LAZY_FLUSH = 4; + +const DWORD + REG_OPTION_RESERVED = 0, + REG_OPTION_NON_VOLATILE = 0, + REG_OPTION_VOLATILE = 1, + REG_OPTION_CREATE_LINK = 2, + REG_OPTION_BACKUP_RESTORE = 4, + REG_OPTION_OPEN_LINK = 8, + REG_LEGAL_OPTION = 15; + +const SECURITY_INFORMATION + OWNER_SECURITY_INFORMATION = 0x00000001, + GROUP_SECURITY_INFORMATION = 0x00000002, + DACL_SECURITY_INFORMATION = 0x00000004, + SACL_SECURITY_INFORMATION = 0x00000008, + LABEL_SECURITY_INFORMATION = 0x00000010, + UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000, + UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000, + PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000, + PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000; + +const DWORD MAXIMUM_PROCESSORS = 32; + +// VirtualAlloc(), etc +// ------------------- + +enum : DWORD { + PAGE_NOACCESS = 0x0001, + PAGE_READONLY = 0x0002, + PAGE_READWRITE = 0x0004, + PAGE_WRITECOPY = 0x0008, + PAGE_EXECUTE = 0x0010, + PAGE_EXECUTE_READ = 0x0020, + PAGE_EXECUTE_READWRITE = 0x0040, + PAGE_EXECUTE_WRITECOPY = 0x0080, + PAGE_GUARD = 0x0100, + PAGE_NOCACHE = 0x0200 +} + +enum : DWORD { + MEM_COMMIT = 0x00001000, + MEM_RESERVE = 0x00002000, + MEM_DECOMMIT = 0x00004000, + MEM_RELEASE = 0x00008000, + MEM_FREE = 0x00010000, + MEM_PRIVATE = 0x00020000, + MEM_MAPPED = 0x00040000, + MEM_RESET = 0x00080000, + MEM_TOP_DOWN = 0x00100000, + MEM_WRITE_WATCH = 0x00200000, // MinGW (???): 98/Me + MEM_PHYSICAL = 0x00400000, + MEM_4MB_PAGES = 0x80000000 +} + +// MinGW: also in ddk/ntifs.h +// CreateFileMapping() +const DWORD + SEC_BASED = 0x00200000, + SEC_NO_CHANGE = 0x00400000, + SEC_FILE = 0x00800000, + SEC_IMAGE = 0x01000000, + SEC_VLM = 0x02000000, + SEC_RESERVE = 0x04000000, + SEC_COMMIT = 0x08000000, + SEC_NOCACHE = 0x10000000, + MEM_IMAGE = SEC_IMAGE; +// MinGW: end ntifs.h + +// ??? +const ACCESS_MASK + SECTION_QUERY = 0x000001, + SECTION_MAP_WRITE = 0x000002, + SECTION_MAP_READ = 0x000004, + SECTION_MAP_EXECUTE = 0x000008, + SECTION_EXTEND_SIZE = 0x000010, + SECTION_ALL_ACCESS = 0x0F001F; + +// These are not documented on MSDN +const MESSAGE_RESOURCE_UNICODE = 1; +const RTL_CRITSECT_TYPE = 0; +const RTL_RESOURCE_TYPE = 1; + +// COFF file format +// ---------------- + +// IMAGE_FILE_HEADER.Characteristics +const WORD + IMAGE_FILE_RELOCS_STRIPPED = 0x0001, + IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, + IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004, + IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008, + IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010, + IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, + IMAGE_FILE_BYTES_REVERSED_LO = 0x0080, + IMAGE_FILE_32BIT_MACHINE = 0x0100, + IMAGE_FILE_DEBUG_STRIPPED = 0x0200, + IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400, + IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800, + IMAGE_FILE_SYSTEM = 0x1000, + IMAGE_FILE_DLL = 0x2000, + IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000, + IMAGE_FILE_BYTES_REVERSED_HI = 0x8000; + +// IMAGE_FILE_HEADER.Machine +enum : WORD { + IMAGE_FILE_MACHINE_UNKNOWN = 0x0000, + IMAGE_FILE_MACHINE_I386 = 0x014C, + IMAGE_FILE_MACHINE_R3000 = 0x0162, + IMAGE_FILE_MACHINE_R4000 = 0x0166, + IMAGE_FILE_MACHINE_R10000 = 0x0168, + IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169, + IMAGE_FILE_MACHINE_ALPHA = 0x0184, + IMAGE_FILE_MACHINE_SH3 = 0x01A2, + IMAGE_FILE_MACHINE_SH3DSP = 0x01A3, + IMAGE_FILE_MACHINE_SH4 = 0x01A6, + IMAGE_FILE_MACHINE_SH5 = 0x01A8, + IMAGE_FILE_MACHINE_ARM = 0x01C0, + IMAGE_FILE_MACHINE_THUMB = 0x01C2, + IMAGE_FILE_MACHINE_AM33 = 0x01D3, + IMAGE_FILE_MACHINE_POWERPC = 0x01F0, + IMAGE_FILE_MACHINE_POWERPCFP = 0x01F1, + IMAGE_FILE_MACHINE_IA64 = 0x0200, + IMAGE_FILE_MACHINE_MIPS16 = 0x0266, + IMAGE_FILE_MACHINE_MIPSFPU = 0x0366, + IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466, + IMAGE_FILE_MACHINE_EBC = 0x0EBC, + IMAGE_FILE_MACHINE_AMD64 = 0x8664, + IMAGE_FILE_MACHINE_M32R = 0x9041 +} + +// ??? +enum { + IMAGE_DOS_SIGNATURE = 0x5A4D, + IMAGE_OS2_SIGNATURE = 0x454E, + IMAGE_OS2_SIGNATURE_LE = 0x454C, + IMAGE_VXD_SIGNATURE = 0x454C, + IMAGE_NT_SIGNATURE = 0x4550 +} + +// IMAGE_OPTIONAL_HEADER.Magic +enum : WORD { + IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x010B, + IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x0107, + IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x020B +} + +// IMAGE_OPTIONAL_HEADER.Subsystem +enum : WORD { + IMAGE_SUBSYSTEM_UNKNOWN = 0, + IMAGE_SUBSYSTEM_NATIVE, + IMAGE_SUBSYSTEM_WINDOWS_GUI, + IMAGE_SUBSYSTEM_WINDOWS_CUI, // = 3 + IMAGE_SUBSYSTEM_OS2_CUI = 5, + IMAGE_SUBSYSTEM_POSIX_CUI = 7, + IMAGE_SUBSYSTEM_NATIVE_WINDOWS, + IMAGE_SUBSYSTEM_WINDOWS_CE_GUI, + IMAGE_SUBSYSTEM_EFI_APPLICATION, + IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER, + IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, + IMAGE_SUBSYSTEM_EFI_ROM, + IMAGE_SUBSYSTEM_XBOX, // = 14 + IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 +} + +// IMAGE_OPTIONAL_HEADER.DllCharacteristics +const WORD + IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040, + IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, + IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, + IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200, + IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, + IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800, + IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000, + IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000; + +// ??? +const IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944; + +const size_t + IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16, + IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56, + IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28, + IMAGE_SIZEOF_NT_OPTIONAL_HEADER = 224, + IMAGE_SIZEOF_SHORT_NAME = 8, + IMAGE_SIZEOF_SECTION_HEADER = 40, + IMAGE_SIZEOF_SYMBOL = 18, + IMAGE_SIZEOF_AUX_SYMBOL = 18, + IMAGE_SIZEOF_RELOCATION = 10, + IMAGE_SIZEOF_BASE_RELOCATION = 8, + IMAGE_SIZEOF_LINENUMBER = 6, + IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60, + SIZEOF_RFPO_DATA = 16; + +PIMAGE_SECTION_HEADER IMAGE_FIRST_SECTION(PIMAGE_NT_HEADERS h) { + return cast(PIMAGE_SECTION_HEADER) + (&h.OptionalHeader + h.FileHeader.SizeOfOptionalHeader); +} + +// ImageDirectoryEntryToDataEx() +enum : USHORT { + IMAGE_DIRECTORY_ENTRY_EXPORT = 0, + IMAGE_DIRECTORY_ENTRY_IMPORT, + IMAGE_DIRECTORY_ENTRY_RESOURCE, + IMAGE_DIRECTORY_ENTRY_EXCEPTION, + IMAGE_DIRECTORY_ENTRY_SECURITY, + IMAGE_DIRECTORY_ENTRY_BASERELOC, + IMAGE_DIRECTORY_ENTRY_DEBUG, + IMAGE_DIRECTORY_ENTRY_COPYRIGHT, // = 7 + IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7, + IMAGE_DIRECTORY_ENTRY_GLOBALPTR, + IMAGE_DIRECTORY_ENTRY_TLS, + IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, + IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, + IMAGE_DIRECTORY_ENTRY_IAT, + IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, + IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, // = 14 +} + +// IMAGE_SECTION_HEADER.Characteristics +const DWORD + IMAGE_SCN_TYPE_REG = 0x00000000, + IMAGE_SCN_TYPE_DSECT = 0x00000001, + IMAGE_SCN_TYPE_NOLOAD = 0x00000002, + IMAGE_SCN_TYPE_GROUP = 0x00000004, + IMAGE_SCN_TYPE_NO_PAD = 0x00000008, + IMAGE_SCN_TYPE_COPY = 0x00000010, + IMAGE_SCN_CNT_CODE = 0x00000020, + IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040, + IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, + IMAGE_SCN_LNK_OTHER = 0x00000100, + IMAGE_SCN_LNK_INFO = 0x00000200, + IMAGE_SCN_TYPE_OVER = 0x00000400, + IMAGE_SCN_LNK_REMOVE = 0x00000800, + IMAGE_SCN_LNK_COMDAT = 0x00001000, + IMAGE_SCN_MEM_FARDATA = 0x00008000, + IMAGE_SCN_GPREL = 0x00008000, + IMAGE_SCN_MEM_PURGEABLE = 0x00020000, + IMAGE_SCN_MEM_16BIT = 0x00020000, + IMAGE_SCN_MEM_LOCKED = 0x00040000, + IMAGE_SCN_MEM_PRELOAD = 0x00080000, + IMAGE_SCN_ALIGN_1BYTES = 0x00100000, + IMAGE_SCN_ALIGN_2BYTES = 0x00200000, + IMAGE_SCN_ALIGN_4BYTES = 0x00300000, + IMAGE_SCN_ALIGN_8BYTES = 0x00400000, + IMAGE_SCN_ALIGN_16BYTES = 0x00500000, + IMAGE_SCN_ALIGN_32BYTES = 0x00600000, + IMAGE_SCN_ALIGN_64BYTES = 0x00700000, + IMAGE_SCN_ALIGN_128BYTES = 0x00800000, + IMAGE_SCN_ALIGN_256BYTES = 0x00900000, + IMAGE_SCN_ALIGN_512BYTES = 0x00A00000, + IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000, + IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000, + IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000, + IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000, + IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000, + IMAGE_SCN_MEM_DISCARDABLE = 0x02000000, + IMAGE_SCN_MEM_NOT_CACHED = 0x04000000, + IMAGE_SCN_MEM_NOT_PAGED = 0x08000000, + IMAGE_SCN_MEM_SHARED = 0x10000000, + IMAGE_SCN_MEM_EXECUTE = 0x20000000, + IMAGE_SCN_MEM_READ = 0x40000000, + IMAGE_SCN_MEM_WRITE = 0x80000000; + +/* The following constants are mostlydocumented at + * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/pecoff.doc + * but don't seem to be defined in the HTML docs. + */ +enum : SHORT { + IMAGE_SYM_UNDEFINED = 0, + IMAGE_SYM_ABSOLUTE = -1, + IMAGE_SYM_DEBUG = -2 +} + +enum : ubyte { + IMAGE_SYM_TYPE_NULL, + IMAGE_SYM_TYPE_VOID, + IMAGE_SYM_TYPE_CHAR, + IMAGE_SYM_TYPE_SHORT, + IMAGE_SYM_TYPE_INT, + IMAGE_SYM_TYPE_LONG, + IMAGE_SYM_TYPE_FLOAT, + IMAGE_SYM_TYPE_DOUBLE, + IMAGE_SYM_TYPE_STRUCT, + IMAGE_SYM_TYPE_UNION, + IMAGE_SYM_TYPE_ENUM, + IMAGE_SYM_TYPE_MOE, + IMAGE_SYM_TYPE_BYTE, + IMAGE_SYM_TYPE_WORD, + IMAGE_SYM_TYPE_UINT, + IMAGE_SYM_TYPE_DWORD // = 15 +} +const IMAGE_SYM_TYPE_PCODE = 32768; // ??? + +enum : ubyte { + IMAGE_SYM_DTYPE_NULL, + IMAGE_SYM_DTYPE_POINTER, + IMAGE_SYM_DTYPE_FUNCTION, + IMAGE_SYM_DTYPE_ARRAY +} + +enum : BYTE { + IMAGE_SYM_CLASS_END_OF_FUNCTION = 0xFF, + IMAGE_SYM_CLASS_NULL = 0, + IMAGE_SYM_CLASS_AUTOMATIC, + IMAGE_SYM_CLASS_EXTERNAL, + IMAGE_SYM_CLASS_STATIC, + IMAGE_SYM_CLASS_REGISTER, + IMAGE_SYM_CLASS_EXTERNAL_DEF, + IMAGE_SYM_CLASS_LABEL, + IMAGE_SYM_CLASS_UNDEFINED_LABEL, + IMAGE_SYM_CLASS_MEMBER_OF_STRUCT, + IMAGE_SYM_CLASS_ARGUMENT, + IMAGE_SYM_CLASS_STRUCT_TAG, + IMAGE_SYM_CLASS_MEMBER_OF_UNION, + IMAGE_SYM_CLASS_UNION_TAG, + IMAGE_SYM_CLASS_TYPE_DEFINITION, + IMAGE_SYM_CLASS_UNDEFINED_STATIC, + IMAGE_SYM_CLASS_ENUM_TAG, + IMAGE_SYM_CLASS_MEMBER_OF_ENUM, + IMAGE_SYM_CLASS_REGISTER_PARAM, + IMAGE_SYM_CLASS_BIT_FIELD, // = 18 + IMAGE_SYM_CLASS_FAR_EXTERNAL = 68, + IMAGE_SYM_CLASS_BLOCK = 100, + IMAGE_SYM_CLASS_FUNCTION, + IMAGE_SYM_CLASS_END_OF_STRUCT, + IMAGE_SYM_CLASS_FILE, + IMAGE_SYM_CLASS_SECTION, + IMAGE_SYM_CLASS_WEAK_EXTERNAL,// = 105 + IMAGE_SYM_CLASS_CLR_TOKEN = 107 +} + +enum : BYTE { + IMAGE_COMDAT_SELECT_NODUPLICATES = 1, + IMAGE_COMDAT_SELECT_ANY, + IMAGE_COMDAT_SELECT_SAME_SIZE, + IMAGE_COMDAT_SELECT_EXACT_MATCH, + IMAGE_COMDAT_SELECT_ASSOCIATIVE, + IMAGE_COMDAT_SELECT_LARGEST, + IMAGE_COMDAT_SELECT_NEWEST // = 7 +} + +enum : DWORD { + IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1, + IMAGE_WEAK_EXTERN_SEARCH_LIBRARY, + IMAGE_WEAK_EXTERN_SEARCH_ALIAS +} + +enum : WORD { + IMAGE_REL_I386_ABSOLUTE = 0x0000, + IMAGE_REL_I386_DIR16 = 0x0001, + IMAGE_REL_I386_REL16 = 0x0002, + IMAGE_REL_I386_DIR32 = 0x0006, + IMAGE_REL_I386_DIR32NB = 0x0007, + IMAGE_REL_I386_SEG12 = 0x0009, + IMAGE_REL_I386_SECTION = 0x000A, + IMAGE_REL_I386_SECREL = 0x000B, + IMAGE_REL_I386_TOKEN = 0x000C, + IMAGE_REL_I386_SECREL7 = 0x000D, + IMAGE_REL_I386_REL32 = 0x0014 +} + +enum : WORD { + IMAGE_REL_AMD64_ABSOLUTE = 0x0000, + IMAGE_REL_AMD64_ADDR64 = 0x0001, + IMAGE_REL_AMD64_ADDR32 = 0x0002, + IMAGE_REL_AMD64_ADDR32NB = 0x0003, + IMAGE_REL_AMD64_REL32 = 0x0004, + IMAGE_REL_AMD64_REL32_1 = 0x0005, + IMAGE_REL_AMD64_REL32_2 = 0x0006, + IMAGE_REL_AMD64_REL32_3 = 0x0007, + IMAGE_REL_AMD64_REL32_4 = 0x0008, + IMAGE_REL_AMD64_REL32_5 = 0x0009, + IMAGE_REL_AMD64_SECTION = 0x000A, + IMAGE_REL_AMD64_SECREL = 0x000B, + IMAGE_REL_AMD64_SECREL7 = 0x000C, + IMAGE_REL_AMD64_TOKEN = 0x000D, + IMAGE_REL_AMD64_SREL32 = 0x000E, + IMAGE_REL_AMD64_PAIR = 0x000F, + IMAGE_REL_AMD64_SSPAN32 = 0x0010 +} + +enum : WORD { + IMAGE_REL_IA64_ABSOLUTE = 0x0000, + IMAGE_REL_IA64_IMM14 = 0x0001, + IMAGE_REL_IA64_IMM22 = 0x0002, + IMAGE_REL_IA64_IMM64 = 0x0003, + IMAGE_REL_IA64_DIR32 = 0x0004, + IMAGE_REL_IA64_DIR64 = 0x0005, + IMAGE_REL_IA64_PCREL21B = 0x0006, + IMAGE_REL_IA64_PCREL21M = 0x0007, + IMAGE_REL_IA64_PCREL21F = 0x0008, + IMAGE_REL_IA64_GPREL22 = 0x0009, + IMAGE_REL_IA64_LTOFF22 = 0x000A, + IMAGE_REL_IA64_SECTION = 0x000B, + IMAGE_REL_IA64_SECREL22 = 0x000C, + IMAGE_REL_IA64_SECREL64I = 0x000D, + IMAGE_REL_IA64_SECREL32 = 0x000E, + IMAGE_REL_IA64_DIR32NB = 0x0010, + IMAGE_REL_IA64_SREL14 = 0x0011, + IMAGE_REL_IA64_SREL22 = 0x0012, + IMAGE_REL_IA64_SREL32 = 0x0013, + IMAGE_REL_IA64_UREL32 = 0x0014, + IMAGE_REL_IA64_PCREL60X = 0x0015, + IMAGE_REL_IA64_PCREL60B = 0x0016, + IMAGE_REL_IA64_PCREL60F = 0x0017, + IMAGE_REL_IA64_PCREL60I = 0x0018, + IMAGE_REL_IA64_PCREL60M = 0x0019, + IMAGE_REL_IA64_IMMGPREL64 = 0x001A, + IMAGE_REL_IA64_TOKEN = 0x001B, + IMAGE_REL_IA64_GPREL32 = 0x001C, + IMAGE_REL_IA64_ADDEND = 0x001F +} + +enum : WORD { + IMAGE_REL_SH3_ABSOLUTE = 0x0000, + IMAGE_REL_SH3_DIRECT16 = 0x0001, + IMAGE_REL_SH3_DIRECT32 = 0x0002, + IMAGE_REL_SH3_DIRECT8 = 0x0003, + IMAGE_REL_SH3_DIRECT8_WORD = 0x0004, + IMAGE_REL_SH3_DIRECT8_LONG = 0x0005, + IMAGE_REL_SH3_DIRECT4 = 0x0006, + IMAGE_REL_SH3_DIRECT4_WORD = 0x0007, + IMAGE_REL_SH3_DIRECT4_LONG = 0x0008, + IMAGE_REL_SH3_PCREL8_WORD = 0x0009, + IMAGE_REL_SH3_PCREL8_LONG = 0x000A, + IMAGE_REL_SH3_PCREL12_WORD = 0x000B, + IMAGE_REL_SH3_STARTOF_SECTION = 0x000C, + IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D, + IMAGE_REL_SH3_SECTION = 0x000E, + IMAGE_REL_SH3_SECREL = 0x000F, + IMAGE_REL_SH3_DIRECT32_NB = 0x0010, + IMAGE_REL_SH3_GPREL4_LONG = 0x0011, + IMAGE_REL_SH3_TOKEN = 0x0012, + IMAGE_REL_SHM_PCRELPT = 0x0013, + IMAGE_REL_SHM_REFLO = 0x0014, + IMAGE_REL_SHM_REFHALF = 0x0015, + IMAGE_REL_SHM_RELLO = 0x0016, + IMAGE_REL_SHM_RELHALF = 0x0017, + IMAGE_REL_SHM_PAIR = 0x0018, + IMAGE_REL_SHM_NOMODE = 0x8000 +} + +enum : WORD { + IMAGE_REL_M32R_ABSOLUTE = 0x0000, + IMAGE_REL_M32R_ADDR32 = 0x0001, + IMAGE_REL_M32R_ADDR32NB = 0x0002, + IMAGE_REL_M32R_ADDR24 = 0x0003, + IMAGE_REL_M32R_GPREL16 = 0x0004, + IMAGE_REL_M32R_PCREL24 = 0x0005, + IMAGE_REL_M32R_PCREL16 = 0x0006, + IMAGE_REL_M32R_PCREL8 = 0x0007, + IMAGE_REL_M32R_REFHALF = 0x0008, + IMAGE_REL_M32R_REFHI = 0x0009, + IMAGE_REL_M32R_REFLO = 0x000A, + IMAGE_REL_M32R_PAIR = 0x000B, + IMAGE_REL_M32R_SECTION = 0x000C, + IMAGE_REL_M32R_SECREL = 0x000D, + IMAGE_REL_M32R_TOKEN = 0x000E +} + +enum : WORD { + IMAGE_REL_MIPS_ABSOLUTE = 0x0000, + IMAGE_REL_MIPS_REFHALF = 0x0001, + IMAGE_REL_MIPS_REFWORD = 0x0002, + IMAGE_REL_MIPS_JMPADDR = 0x0003, + IMAGE_REL_MIPS_REFHI = 0x0004, + IMAGE_REL_MIPS_REFLO = 0x0005, + IMAGE_REL_MIPS_GPREL = 0x0006, + IMAGE_REL_MIPS_LITERAL = 0x0007, + IMAGE_REL_MIPS_SECTION = 0x000A, + IMAGE_REL_MIPS_SECREL = 0x000B, + IMAGE_REL_MIPS_SECRELLO = 0x000C, + IMAGE_REL_MIPS_SECRELHI = 0x000D, + IMAGE_REL_MIPS_JMPADDR16 = 0x0010, + IMAGE_REL_MIPS_REFWORDNB = 0x0022, + IMAGE_REL_MIPS_PAIR = 0x0025 +} + + +enum : WORD { + IMAGE_REL_ALPHA_ABSOLUTE, + IMAGE_REL_ALPHA_REFLONG, + IMAGE_REL_ALPHA_REFQUAD, + IMAGE_REL_ALPHA_GPREL32, + IMAGE_REL_ALPHA_LITERAL, + IMAGE_REL_ALPHA_LITUSE, + IMAGE_REL_ALPHA_GPDISP, + IMAGE_REL_ALPHA_BRADDR, + IMAGE_REL_ALPHA_HINT, + IMAGE_REL_ALPHA_INLINE_REFLONG, + IMAGE_REL_ALPHA_REFHI, + IMAGE_REL_ALPHA_REFLO, + IMAGE_REL_ALPHA_PAIR, + IMAGE_REL_ALPHA_MATCH, + IMAGE_REL_ALPHA_SECTION, + IMAGE_REL_ALPHA_SECREL, + IMAGE_REL_ALPHA_REFLONGNB, + IMAGE_REL_ALPHA_SECRELLO, + IMAGE_REL_ALPHA_SECRELHI // = 18 +} + +enum : WORD { + IMAGE_REL_PPC_ABSOLUTE, + IMAGE_REL_PPC_ADDR64, + IMAGE_REL_PPC_ADDR32, + IMAGE_REL_PPC_ADDR24, + IMAGE_REL_PPC_ADDR16, + IMAGE_REL_PPC_ADDR14, + IMAGE_REL_PPC_REL24, + IMAGE_REL_PPC_REL14, + IMAGE_REL_PPC_TOCREL16, + IMAGE_REL_PPC_TOCREL14, + IMAGE_REL_PPC_ADDR32NB, + IMAGE_REL_PPC_SECREL, + IMAGE_REL_PPC_SECTION, + IMAGE_REL_PPC_IFGLUE, + IMAGE_REL_PPC_IMGLUE, + IMAGE_REL_PPC_SECREL16, + IMAGE_REL_PPC_REFHI, + IMAGE_REL_PPC_REFLO, + IMAGE_REL_PPC_PAIR // = 18 +} + +// ??? +const IMAGE_REL_PPC_TYPEMASK = 0x00FF; +const IMAGE_REL_PPC_NEG = 0x0100; +const IMAGE_REL_PPC_BRTAKEN = 0x0200; +const IMAGE_REL_PPC_BRNTAKEN = 0x0400; +const IMAGE_REL_PPC_TOCDEFN = 0x0800; + +enum { + IMAGE_REL_BASED_ABSOLUTE, + IMAGE_REL_BASED_HIGH, + IMAGE_REL_BASED_LOW, + IMAGE_REL_BASED_HIGHLOW, + IMAGE_REL_BASED_HIGHADJ, + IMAGE_REL_BASED_MIPS_JMPADDR +} +// End of constants documented in pecoff.doc + +const size_t IMAGE_ARCHIVE_START_SIZE = 8; + +const TCHAR[] + IMAGE_ARCHIVE_START = "!\n", + IMAGE_ARCHIVE_END = "`\n", + IMAGE_ARCHIVE_PAD = "\n", + IMAGE_ARCHIVE_LINKER_MEMBER = "/ ", + IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; + +const IMAGE_ORDINAL_FLAG32 = 0x80000000; + +ulong IMAGE_ORDINAL64(ulong Ordinal) { return Ordinal & 0xFFFF; } +uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; } + +bool IMAGE_SNAP_BY_ORDINAL32(uint Ordinal) { + return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; +} + +const ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; + +bool IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal) { + return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; +} + +// ??? +const IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000; +const IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000; + +enum : DWORD { + IMAGE_DEBUG_TYPE_UNKNOWN, + IMAGE_DEBUG_TYPE_COFF, + IMAGE_DEBUG_TYPE_CODEVIEW, + IMAGE_DEBUG_TYPE_FPO, + IMAGE_DEBUG_TYPE_MISC, + IMAGE_DEBUG_TYPE_EXCEPTION, + IMAGE_DEBUG_TYPE_FIXUP, + IMAGE_DEBUG_TYPE_OMAP_TO_SRC, + IMAGE_DEBUG_TYPE_OMAP_FROM_SRC, + IMAGE_DEBUG_TYPE_BORLAND // = 9 +} + +enum : ubyte { + FRAME_FPO, + FRAME_TRAP, + FRAME_TSS, + FRAME_NONFPO +} + +// ??? +const IMAGE_DEBUG_MISC_EXENAME = 1; + +// ??? +const N_BTMASK = 0x000F; +const N_TMASK = 0x0030; +const N_TMASK1 = 0x00C0; +const N_TMASK2 = 0x00F0; +const N_BTSHFT = 4; +const N_TSHIFT = 2; + +const int + IS_TEXT_UNICODE_ASCII16 = 0x0001, + IS_TEXT_UNICODE_STATISTICS = 0x0002, + IS_TEXT_UNICODE_CONTROLS = 0x0004, + IS_TEXT_UNICODE_SIGNATURE = 0x0008, + IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010, + IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020, + IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040, + IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080, + IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100, + IS_TEXT_UNICODE_ODD_LENGTH = 0x0200, + IS_TEXT_UNICODE_NULL_BYTES = 0x1000, + IS_TEXT_UNICODE_UNICODE_MASK = 0x000F, + IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0, + IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00, + IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000; + +const DWORD + SERVICE_KERNEL_DRIVER = 0x0001, + SERVICE_FILE_SYSTEM_DRIVER = 0x0002, + SERVICE_ADAPTER = 0x0004, + SERVICE_RECOGNIZER_DRIVER = 0x0008, + SERVICE_WIN32_OWN_PROCESS = 0x0010, + SERVICE_WIN32_SHARE_PROCESS = 0x0020, + SERVICE_INTERACTIVE_PROCESS = 0x0100, + SERVICE_DRIVER = 0x000B, + SERVICE_WIN32 = 0x0030, + SERVICE_TYPE_ALL = 0x013F; + +enum : DWORD { + SERVICE_BOOT_START = 0, + SERVICE_SYSTEM_START = 1, + SERVICE_AUTO_START = 2, + SERVICE_DEMAND_START = 3, + SERVICE_DISABLED = 4 +} + +enum : DWORD { + SERVICE_ERROR_IGNORE = 0, + SERVICE_ERROR_NORMAL = 1, + SERVICE_ERROR_SEVERE = 2, + SERVICE_ERROR_CRITICAL = 3 +} + + +const uint + SE_OWNER_DEFAULTED = 0x0001, + SE_GROUP_DEFAULTED = 0x0002, + SE_DACL_PRESENT = 0x0004, + SE_DACL_DEFAULTED = 0x0008, + SE_SACL_PRESENT = 0x0010, + SE_SACL_DEFAULTED = 0x0020, + SE_DACL_AUTO_INHERIT_REQ = 0x0100, + SE_SACL_AUTO_INHERIT_REQ = 0x0200, + SE_DACL_AUTO_INHERITED = 0x0400, + SE_SACL_AUTO_INHERITED = 0x0800, + SE_DACL_PROTECTED = 0x1000, + SE_SACL_PROTECTED = 0x2000, + SE_SELF_RELATIVE = 0x8000; + +enum SECURITY_IMPERSONATION_LEVEL { + SecurityAnonymous, + SecurityIdentification, + SecurityImpersonation, + SecurityDelegation +} +alias SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; + +alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE; +alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; + +const size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; + +const DWORD + SECURITY_DESCRIPTOR_REVISION = 1, + SECURITY_DESCRIPTOR_REVISION1 = 1; + +const DWORD + SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, + SE_PRIVILEGE_ENABLED = 0x00000002, + SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; + +const DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; + +const SECURITY_IMPERSONATION_LEVEL + SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, + DEFAULT_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; + +const BOOLEAN + SECURITY_DYNAMIC_TRACKING = true, + SECURITY_STATIC_TRACKING = false; + +// also in ddk/ntifs.h +const DWORD + TOKEN_ASSIGN_PRIMARY = 0x0001, + TOKEN_DUPLICATE = 0x0002, + TOKEN_IMPERSONATE = 0x0004, + TOKEN_QUERY = 0x0008, + TOKEN_QUERY_SOURCE = 0x0010, + TOKEN_ADJUST_PRIVILEGES = 0x0020, + TOKEN_ADJUST_GROUPS = 0x0040, + TOKEN_ADJUST_DEFAULT = 0x0080, + + TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED + | TOKEN_ASSIGN_PRIMARY + | TOKEN_DUPLICATE + | TOKEN_IMPERSONATE + | TOKEN_QUERY + | TOKEN_QUERY_SOURCE + | TOKEN_ADJUST_PRIVILEGES + | TOKEN_ADJUST_GROUPS + | TOKEN_ADJUST_DEFAULT, + TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY, + TOKEN_WRITE = STANDARD_RIGHTS_WRITE + | TOKEN_ADJUST_PRIVILEGES + | TOKEN_ADJUST_GROUPS + | TOKEN_ADJUST_DEFAULT, + TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE; + +const size_t TOKEN_SOURCE_LENGTH = 8; +// end ddk/ntifs.h + +enum : DWORD { + DLL_PROCESS_DETACH, + DLL_PROCESS_ATTACH, + DLL_THREAD_ATTACH, + DLL_THREAD_DETACH +} + +enum : DWORD { + DBG_CONTINUE = 0x00010002, + DBG_TERMINATE_THREAD = 0x40010003, + DBG_TERMINATE_PROCESS = 0x40010004, + DBG_CONTROL_C = 0x40010005, + DBG_CONTROL_BREAK = 0x40010008, + DBG_EXCEPTION_NOT_HANDLED = 0x80010001 +} + +enum : DWORD { + TAPE_ABSOLUTE_POSITION, + TAPE_LOGICAL_POSITION, + TAPE_PSEUDO_LOGICAL_POSITION +} + +enum : DWORD { + TAPE_REWIND, + TAPE_ABSOLUTE_BLOCK, + TAPE_LOGICAL_BLOCK, + TAPE_PSEUDO_LOGICAL_BLOCK, + TAPE_SPACE_END_OF_DATA, + TAPE_SPACE_RELATIVE_BLOCKS, + TAPE_SPACE_FILEMARKS, + TAPE_SPACE_SEQUENTIAL_FMKS, + TAPE_SPACE_SETMARKS, + TAPE_SPACE_SEQUENTIAL_SMKS +} + +const DWORD + TAPE_DRIVE_FIXED = 0x00000001, + TAPE_DRIVE_SELECT = 0x00000002, + TAPE_DRIVE_INITIATOR = 0x00000004, + TAPE_DRIVE_ERASE_SHORT = 0x00000010, + TAPE_DRIVE_ERASE_LONG = 0x00000020, + TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040, + TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080, + TAPE_DRIVE_TAPE_CAPACITY = 0x00000100, + TAPE_DRIVE_TAPE_REMAINING = 0x00000200, + TAPE_DRIVE_FIXED_BLOCK = 0x00000400, + TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800, + TAPE_DRIVE_WRITE_PROTECT = 0x00001000, + TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000, + TAPE_DRIVE_ECC = 0x00010000, + TAPE_DRIVE_COMPRESSION = 0x00020000, + TAPE_DRIVE_PADDING = 0x00040000, + TAPE_DRIVE_REPORT_SMKS = 0x00080000, + TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000, + TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000, + TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000, + TAPE_DRIVE_EJECT_MEDIA = 0x01000000, + TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000, + TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000, + TAPE_DRIVE_RESERVED_BIT = 0x80000000; + +const DWORD + TAPE_DRIVE_LOAD_UNLOAD = 0x80000001, + TAPE_DRIVE_TENSION = 0x80000002, + TAPE_DRIVE_LOCK_UNLOCK = 0x80000004, + TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008, + TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010, + TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020, + TAPE_DRIVE_TENSION_IMMED = 0x80000040, + TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080, + TAPE_DRIVE_SET_ECC = 0x80000100, + TAPE_DRIVE_SET_COMPRESSION = 0x80000200, + TAPE_DRIVE_SET_PADDING = 0x80000400, + TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800, + TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000, + TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000, + TAPE_DRIVE_LOGICAL_BLK = 0x80004000, + TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000, + TAPE_DRIVE_END_OF_DATA = 0x80010000, + TAPE_DRIVE_RELATIVE_BLKS = 0x80020000, + TAPE_DRIVE_FILEMARKS = 0x80040000, + TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000, + TAPE_DRIVE_SETMARKS = 0x80100000, + TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000, + TAPE_DRIVE_REVERSE_POSITION = 0x80400000, + TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000, + TAPE_DRIVE_WRITE_SETMARKS = 0x81000000, + TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000, + TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000, + TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000, + TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000, + TAPE_DRIVE_FORMAT = 0xA0000000, + TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000, + TAPE_DRIVE_HIGH_FEATURES = 0x80000000; + +enum : DWORD { + TAPE_FIXED_PARTITIONS = 0, + TAPE_SELECT_PARTITIONS = 1, + TAPE_INITIATOR_PARTITIONS = 2 +} + +enum : DWORD { + TAPE_SETMARKS, + TAPE_FILEMARKS, + TAPE_SHORT_FILEMARKS, + TAPE_LONG_FILEMARKS +} + +enum : DWORD { + TAPE_ERASE_SHORT, + TAPE_ERASE_LONG +} + +enum : DWORD { + TAPE_LOAD, + TAPE_UNLOAD, + TAPE_TENSION, + TAPE_LOCK, + TAPE_UNLOCK, + TAPE_FORMAT +} + +enum : ULONG32 { + VER_PLATFORM_WIN32s, + VER_PLATFORM_WIN32_WINDOWS, + VER_PLATFORM_WIN32_NT +} + +enum : UCHAR { + VER_NT_WORKSTATION = 1, + VER_NT_DOMAIN_CONTROLLER, + VER_NT_SERVER +} + +const USHORT + VER_SUITE_SMALLBUSINESS = 0x0001, + VER_SUITE_ENTERPRISE = 0x0002, + VER_SUITE_BACKOFFICE = 0x0004, + VER_SUITE_TERMINAL = 0x0010, + VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x0020, + VER_SUITE_EMBEDDEDNT = 0x0040, + VER_SUITE_DATACENTER = 0x0080, + VER_SUITE_SINGLEUSERTS = 0x0100, + VER_SUITE_PERSONAL = 0x0200, + VER_SUITE_BLADE = 0x0400, + VER_SUITE_STORAGE_SERVER = 0x2000, + VER_SUITE_COMPUTE_SERVER = 0x4000; + +const ULONG + WT_EXECUTEDEFAULT = 0x00000000, + WT_EXECUTEINIOTHREAD = 0x00000001, + WT_EXECUTEINWAITTHREAD = 0x00000004, + WT_EXECUTEONLYONCE = 0x00000008, + WT_EXECUTELONGFUNCTION = 0x00000010, + WT_EXECUTEINTIMERTHREAD = 0x00000020, + WT_EXECUTEINPERSISTENTTHREAD = 0x00000080, + WT_TRANSFER_IMPERSONATION = 0x00000100; + +static if (_WIN32_WINNT >= 0x500) { + const DWORD + VER_MINORVERSION = 0x01, + VER_MAJORVERSION = 0x02, + VER_BUILDNUMBER = 0x04, + VER_PLATFORMID = 0x08, + VER_SERVICEPACKMINOR = 0x10, + VER_SERVICEPACKMAJOR = 0x20, + VER_SUITENAME = 0x40, + VER_PRODUCT_TYPE = 0x80; + + enum : DWORD { + VER_EQUAL = 1, + VER_GREATER, + VER_GREATER_EQUAL, + VER_LESS, + VER_LESS_EQUAL, + VER_AND, + VER_OR // = 7 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum : ULONG { + ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1, + ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7 + ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9 + } +} + +// Macros +BYTE BTYPE(BYTE x) { return cast(BYTE) (x & N_BTMASK); } +bool ISPTR(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); } +bool ISFCN(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } +bool ISARY(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } +bool ISTAG(uint x) { + return x == IMAGE_SYM_CLASS_STRUCT_TAG + || x == IMAGE_SYM_CLASS_UNION_TAG + || x == IMAGE_SYM_CLASS_ENUM_TAG; +} +uint INCREF(uint x) { + return ((x & ~N_BTMASK) << N_TSHIFT) | (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT) + | (x & N_BTMASK); +} +uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK) | (x & N_BTMASK); } + +const DWORD TLS_MINIMUM_AVAILABLE = 64; + +const ULONG + IO_REPARSE_TAG_RESERVED_ZERO = 0, + IO_REPARSE_TAG_RESERVED_ONE = 1, + IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE, + IO_REPARSE_TAG_SYMBOLIC_LINK = IO_REPARSE_TAG_RESERVED_ZERO, + IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003, + IO_REPARSE_TAG_SYMLINK = 0xA000000C, + IO_REPARSE_TAG_VALID_VALUES = 0xE000FFFF; + +/* Although these are semantically boolean, they are documented and + * implemented to return ULONG; this behaviour is preserved for compatibility + */ +ULONG IsReparseTagMicrosoft(ULONG x) { return x & 0x80000000; } +ULONG IsReparseTagHighLatency(ULONG x) { return x & 0x40000000; } +ULONG IsReparseTagNameSurrogate(ULONG x) { return x & 0x20000000; } + +bool IsReparseTagValid(ULONG x) { + return !(x & ~IO_REPARSE_TAG_VALID_VALUES) && (x > IO_REPARSE_TAG_RESERVED_RANGE); +} + +// Doesn't seem to make sense, but anyway.... +ULONG WT_SET_MAX_THREADPOOL_THREADS(ref ULONG Flags, ushort Limit) { + return Flags |= Limit << 16; +} + +import core.sys.windows.basetyps; +/* also in core.sys.windows.basetyps +struct GUID { + uint Data1; + ushort Data2; + ushort Data3; + ubyte Data4[8]; +} +alias GUID* REFGUID, LPGUID; +*/ + +struct GENERIC_MAPPING { + ACCESS_MASK GenericRead; + ACCESS_MASK GenericWrite; + ACCESS_MASK GenericExecute; + ACCESS_MASK GenericAll; +} +alias GENERIC_MAPPING* PGENERIC_MAPPING; + +struct ACE_HEADER { + BYTE AceType; + BYTE AceFlags; + WORD AceSize; +} +alias ACE_HEADER* PACE_HEADER; + +struct ACCESS_ALLOWED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; + +struct ACCESS_DENIED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; + +struct SYSTEM_AUDIT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; + +struct SYSTEM_ALARM_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE; + +struct ACCESS_ALLOWED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias ACCESS_ALLOWED_OBJECT_ACE* PACCESS_ALLOWED_OBJECT_ACE; + +struct ACCESS_DENIED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias ACCESS_DENIED_OBJECT_ACE* PACCESS_DENIED_OBJECT_ACE; + +struct SYSTEM_AUDIT_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias SYSTEM_AUDIT_OBJECT_ACE* PSYSTEM_AUDIT_OBJECT_ACE; + +struct SYSTEM_ALARM_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; + +struct ACL { + BYTE AclRevision; + BYTE Sbz1; + WORD AclSize; + WORD AceCount; + WORD Sbz2; +} +alias ACL* PACL; + +struct ACL_REVISION_INFORMATION { + DWORD AclRevision; +} + +struct ACL_SIZE_INFORMATION { + DWORD AceCount; + DWORD AclBytesInUse; + DWORD AclBytesFree; +} + +version (X86) { + // ??? + const SIZE_OF_80387_REGISTERS = 80; + const CONTEXT_i386 = 0x010000; + const CONTEXT_i486 = 0x010000; + const CONTEXT_CONTROL = CONTEXT_i386 | 0x01; + const CONTEXT_INTEGER = CONTEXT_i386 | 0x02; + const CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04; + const CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08; + const CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; + const CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; + const CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; + const MAXIMUM_SUPPORTED_EXTENSION = 512; + + struct FLOATING_SAVE_AREA { + DWORD ControlWord; + DWORD StatusWord; + DWORD TagWord; + DWORD ErrorOffset; + DWORD ErrorSelector; + DWORD DataOffset; + DWORD DataSelector; + BYTE[80] RegisterArea; + DWORD Cr0NpxState; + } + + struct CONTEXT { + DWORD ContextFlags; + DWORD Dr0; + DWORD Dr1; + DWORD Dr2; + DWORD Dr3; + DWORD Dr6; + DWORD Dr7; + FLOATING_SAVE_AREA FloatSave; + DWORD SegGs; + DWORD SegFs; + DWORD SegEs; + DWORD SegDs; + DWORD Edi; + DWORD Esi; + DWORD Ebx; + DWORD Edx; + DWORD Ecx; + DWORD Eax; + DWORD Ebp; + DWORD Eip; + DWORD SegCs; + DWORD EFlags; + DWORD Esp; + DWORD SegSs; + BYTE[MAXIMUM_SUPPORTED_EXTENSION] ExtendedRegisters; + } + +} else version(X86_64) +{ + const CONTEXT_AMD64 = 0x100000; + + const CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L); + const CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L); + const CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L); + const CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L); + const CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L); + + const CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT); + const CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS); + + const CONTEXT_EXCEPTION_ACTIVE = 0x8000000; + const CONTEXT_SERVICE_ACTIVE = 0x10000000; + const CONTEXT_EXCEPTION_REQUEST = 0x40000000; + const CONTEXT_EXCEPTION_REPORTING = 0x80000000; + + const INITIAL_MXCSR = 0x1f80; + const INITIAL_FPCSR = 0x027f; + + align(16) struct M128A + { + ULONGLONG Low; + LONGLONG High; + } + alias M128A* PM128A; + + struct XMM_SAVE_AREA32 + { + WORD ControlWord; + WORD StatusWord; + BYTE TagWord; + BYTE Reserved1; + WORD ErrorOpcode; + DWORD ErrorOffset; + WORD ErrorSelector; + WORD Reserved2; + DWORD DataOffset; + WORD DataSelector; + WORD Reserved3; + DWORD MxCsr; + DWORD MxCsr_Mask; + M128A[8] FloatRegisters; + M128A[16] XmmRegisters; + BYTE[96] Reserved4; + } + alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32; + const LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof; + + align(16) struct CONTEXT + { + DWORD64 P1Home; + DWORD64 P2Home; + DWORD64 P3Home; + DWORD64 P4Home; + DWORD64 P5Home; + DWORD64 P6Home; + DWORD ContextFlags; + DWORD MxCsr; + WORD SegCs; + WORD SegDs; + WORD SegEs; + WORD SegFs; + WORD SegGs; + WORD SegSs; + DWORD EFlags; + DWORD64 Dr0; + DWORD64 Dr1; + DWORD64 Dr2; + DWORD64 Dr3; + DWORD64 Dr6; + DWORD64 Dr7; + DWORD64 Rax; + DWORD64 Rcx; + DWORD64 Rdx; + DWORD64 Rbx; + DWORD64 Rsp; + DWORD64 Rbp; + DWORD64 Rsi; + DWORD64 Rdi; + DWORD64 R8; + DWORD64 R9; + DWORD64 R10; + DWORD64 R11; + DWORD64 R12; + DWORD64 R13; + DWORD64 R14; + DWORD64 R15; + DWORD64 Rip; + union + { + XMM_SAVE_AREA32 FltSave; + XMM_SAVE_AREA32 FloatSave; + struct + { + M128A[2] Header; + M128A[8] Legacy; + M128A Xmm0; + M128A Xmm1; + M128A Xmm2; + M128A Xmm3; + M128A Xmm4; + M128A Xmm5; + M128A Xmm6; + M128A Xmm7; + M128A Xmm8; + M128A Xmm9; + M128A Xmm10; + M128A Xmm11; + M128A Xmm12; + M128A Xmm13; + M128A Xmm14; + M128A Xmm15; + }; + }; + M128A[26] VectorRegister; + DWORD64 VectorControl; + DWORD64 DebugControl; + DWORD64 LastBranchToRip; + DWORD64 LastBranchFromRip; + DWORD64 LastExceptionToRip; + DWORD64 LastExceptionFromRip; + } + +} else { + static assert(false, "Unsupported CPU"); + // Versions for PowerPC, Alpha, SHX, and MIPS removed. +} + +alias CONTEXT* PCONTEXT, LPCONTEXT; + +struct EXCEPTION_RECORD { + DWORD ExceptionCode; + DWORD ExceptionFlags; + EXCEPTION_RECORD* ExceptionRecord; + PVOID ExceptionAddress; + DWORD NumberParameters; + DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; +} +alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; + +struct EXCEPTION_POINTERS { + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; +} +alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS, LPEXCEPTION_POINTERS; + +union LARGE_INTEGER { + struct { + uint LowPart; + int HighPart; + } + long QuadPart; +} +alias LARGE_INTEGER* PLARGE_INTEGER; + +union ULARGE_INTEGER { + struct { + uint LowPart; + uint HighPart; + } + ulong QuadPart; +} +alias ULARGE_INTEGER* PULARGE_INTEGER; + +alias LARGE_INTEGER LUID; +alias LUID* PLUID; + +const LUID SYSTEM_LUID = { QuadPart:999 }; + +align(4) struct LUID_AND_ATTRIBUTES { + LUID Luid; + DWORD Attributes; +} +alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; + +struct PRIVILEGE_SET { + DWORD PrivilegeCount; + DWORD Control; + LUID_AND_ATTRIBUTES _Privilege; + + LUID_AND_ATTRIBUTES* Privilege() { return &_Privilege; } +} +alias PRIVILEGE_SET* PPRIVILEGE_SET; + +struct SECURITY_ATTRIBUTES { + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; +} +alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; + +struct SECURITY_QUALITY_OF_SERVICE { + DWORD Length; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; + BOOLEAN EffectiveOnly; +} +alias SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE; + +alias PVOID PACCESS_TOKEN; + +struct SE_IMPERSONATION_STATE { + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL Level; +} +alias SE_IMPERSONATION_STATE* PSE_IMPERSONATION_STATE; + +struct SID_IDENTIFIER_AUTHORITY { + BYTE[6] Value; +} +alias SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY, LPSID_IDENTIFIER_AUTHORITY; + +alias PVOID PSID; + +struct SID { + BYTE Revision; + BYTE SubAuthorityCount; + SID_IDENTIFIER_AUTHORITY IdentifierAuthority; + DWORD _SubAuthority; + + DWORD* SubAuthority() { return &_SubAuthority; } +} +alias SID* PISID; + +struct SID_AND_ATTRIBUTES { + PSID Sid; + DWORD Attributes; +} +alias SID_AND_ATTRIBUTES* PSID_AND_ATTRIBUTES; + +struct TOKEN_SOURCE { + CHAR[TOKEN_SOURCE_LENGTH] SourceName; + LUID SourceIdentifier; +} +alias TOKEN_SOURCE* PTOKEN_SOURCE; + +struct TOKEN_CONTROL { + LUID TokenId; + LUID AuthenticationId; + LUID ModifiedId; + TOKEN_SOURCE TokenSource; +} +alias TOKEN_CONTROL* PTOKEN_CONTROL; + +struct TOKEN_DEFAULT_DACL { + PACL DefaultDacl; +} +alias TOKEN_DEFAULT_DACL* PTOKEN_DEFAULT_DACL; + +struct TOKEN_GROUPS { + DWORD GroupCount; + SID_AND_ATTRIBUTES _Groups; + + SID_AND_ATTRIBUTES* Groups() { return &_Groups; } +} +alias TOKEN_GROUPS* PTOKEN_GROUPS, LPTOKEN_GROUPS; + +struct TOKEN_OWNER { + PSID Owner; +} +alias TOKEN_OWNER* PTOKEN_OWNER; + +struct TOKEN_PRIMARY_GROUP { + PSID PrimaryGroup; +} +alias TOKEN_PRIMARY_GROUP* PTOKEN_PRIMARY_GROUP; + +struct TOKEN_PRIVILEGES { + DWORD PrivilegeCount; + LUID_AND_ATTRIBUTES _Privileges; + + LUID_AND_ATTRIBUTES* Privileges() { return &_Privileges; } +} +alias TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES, LPTOKEN_PRIVILEGES; + +enum TOKEN_TYPE { + TokenPrimary = 1, + TokenImpersonation +} +alias TOKEN_TYPE* PTOKEN_TYPE; + +struct TOKEN_STATISTICS { + LUID TokenId; + LUID AuthenticationId; + LARGE_INTEGER ExpirationTime; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + DWORD DynamicCharged; + DWORD DynamicAvailable; + DWORD GroupCount; + DWORD PrivilegeCount; + LUID ModifiedId; +} +alias TOKEN_STATISTICS* PTOKEN_STATISTICS; + +struct TOKEN_USER { + SID_AND_ATTRIBUTES User; +} +alias TOKEN_USER* PTOKEN_USER; + +alias DWORD SECURITY_INFORMATION; +alias SECURITY_INFORMATION* PSECURITY_INFORMATION; +alias WORD SECURITY_DESCRIPTOR_CONTROL; +alias SECURITY_DESCRIPTOR_CONTROL* PSECURITY_DESCRIPTOR_CONTROL; + +struct SECURITY_DESCRIPTOR { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PSID Owner; + PSID Group; + PACL Sacl; + PACL Dacl; +} +alias SECURITY_DESCRIPTOR* PSECURITY_DESCRIPTOR, PISECURITY_DESCRIPTOR; + +enum TOKEN_INFORMATION_CLASS { + TokenUser = 1, + TokenGroups, + TokenPrivileges, + TokenOwner, + TokenPrimaryGroup, + TokenDefaultDacl, + TokenSource, + TokenType, + TokenImpersonationLevel, + TokenStatistics, + TokenRestrictedSids, + TokenSessionId, + TokenGroupsAndPrivileges, + TokenSessionReference, + TokenSandBoxInert, + TokenAuditPolicy, + TokenOrigin +} + +enum SID_NAME_USE { + SidTypeUser = 1, + SidTypeGroup, + SidTypeDomain, + SidTypeAlias, + SidTypeWellKnownGroup, + SidTypeDeletedAccount, + SidTypeInvalid, + SidTypeUnknown, + SidTypeComputer +} +alias SID_NAME_USE* PSID_NAME_USE; + +struct QUOTA_LIMITS { + SIZE_T PagedPoolLimit; + SIZE_T NonPagedPoolLimit; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + SIZE_T PagefileLimit; + LARGE_INTEGER TimeLimit; +} +alias QUOTA_LIMITS* PQUOTA_LIMITS; + +struct IO_COUNTERS { + ULONGLONG ReadOperationCount; + ULONGLONG WriteOperationCount; + ULONGLONG OtherOperationCount; + ULONGLONG ReadTransferCount; + ULONGLONG WriteTransferCount; + ULONGLONG OtherTransferCount; +} +alias IO_COUNTERS* PIO_COUNTERS; + +struct FILE_NOTIFY_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + DWORD FileNameLength; + WCHAR _FileName; + + WCHAR* FileName() { return &_FileName; } +} +alias FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; + +struct TAPE_ERASE { + DWORD Type; + BOOLEAN Immediate; +} +alias TAPE_ERASE* PTAPE_ERASE; + +struct TAPE_GET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + DWORD DefaultBlockSize; + DWORD MaximumBlockSize; + DWORD MinimumBlockSize; + DWORD MaximumPartitionCount; + DWORD FeaturesLow; + DWORD FeaturesHigh; + DWORD EOTWarningZoneSize; +} +alias TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; + +struct TAPE_GET_MEDIA_PARAMETERS { + LARGE_INTEGER Capacity; + LARGE_INTEGER Remaining; + DWORD BlockSize; + DWORD PartitionCount; + BOOLEAN WriteProtected; +} +alias TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; + +struct TAPE_GET_POSITION { + ULONG Type; + ULONG Partition; + ULONG OffsetLow; + ULONG OffsetHigh; +} +alias TAPE_GET_POSITION* PTAPE_GET_POSITION; + +struct TAPE_PREPARE { + DWORD Operation; + BOOLEAN Immediate; +} +alias TAPE_PREPARE* PTAPE_PREPARE; + +struct TAPE_SET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + ULONG EOTWarningZoneSize; +} +alias TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; + +struct TAPE_SET_MEDIA_PARAMETERS { + ULONG BlockSize; +} +alias TAPE_SET_MEDIA_PARAMETERS* PTAPE_SET_MEDIA_PARAMETERS; + +struct TAPE_SET_POSITION { + DWORD Method; + DWORD Partition; + LARGE_INTEGER Offset; + BOOLEAN Immediate; +} +alias TAPE_SET_POSITION* PTAPE_SET_POSITION; + +struct TAPE_WRITE_MARKS { + DWORD Type; + DWORD Count; + BOOLEAN Immediate; +} +alias TAPE_WRITE_MARKS* PTAPE_WRITE_MARKS; + +struct TAPE_CREATE_PARTITION { + DWORD Method; + DWORD Count; + DWORD Size; +} +alias TAPE_CREATE_PARTITION* PTAPE_CREATE_PARTITION; + +struct MEMORY_BASIC_INFORMATION { + PVOID BaseAddress; + PVOID AllocationBase; + DWORD AllocationProtect; + DWORD RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; +} +alias MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION; + +struct MESSAGE_RESOURCE_ENTRY { + WORD Length; + WORD Flags; + BYTE _Text; + + BYTE* Text() { return &_Text; } +} +alias MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; + +struct MESSAGE_RESOURCE_BLOCK { + DWORD LowId; + DWORD HighId; + DWORD OffsetToEntries; +} +alias MESSAGE_RESOURCE_BLOCK* PMESSAGE_RESOURCE_BLOCK; + +struct MESSAGE_RESOURCE_DATA { + DWORD NumberOfBlocks; + MESSAGE_RESOURCE_BLOCK _Blocks; + + MESSAGE_RESOURCE_BLOCK* Blocks() { return &_Blocks; } +} +alias MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; + +struct LIST_ENTRY { + LIST_ENTRY* Flink; + LIST_ENTRY* Blink; +} +alias LIST_ENTRY* PLIST_ENTRY; + +struct SINGLE_LIST_ENTRY { + SINGLE_LIST_ENTRY* Next; +} +alias SINGLE_LIST_ENTRY SLIST_ENTRY; +alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY, PSLIST_ENTRY; + +union SLIST_HEADER { + ULONGLONG Alignment; + struct { + SLIST_ENTRY Next; + WORD Depth; + WORD Sequence; + } +} +alias SLIST_HEADER* PSLIST_HEADER; + +struct RTL_CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + RTL_CRITICAL_SECTION* CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD[2] Spare; +} +alias RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; + +struct RTL_CRITICAL_SECTION { + PRTL_CRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + DWORD Reserved; +} +alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; + +struct EVENTLOGRECORD { + DWORD Length; + DWORD Reserved; + DWORD RecordNumber; + DWORD TimeGenerated; + DWORD TimeWritten; + DWORD EventID; + WORD EventType; + WORD NumStrings; + WORD EventCategory; + WORD ReservedFlags; + DWORD ClosingRecordNumber; + DWORD StringOffset; + DWORD UserSidLength; + DWORD UserSidOffset; + DWORD DataLength; + DWORD DataOffset; +} +alias EVENTLOGRECORD* PEVENTLOGRECORD; + +struct OSVERSIONINFOA { + DWORD dwOSVersionInfoSize = OSVERSIONINFOA.sizeof; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR[128] szCSDVersion; +} +alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA; + +struct OSVERSIONINFOW { + DWORD dwOSVersionInfoSize = OSVERSIONINFOW.sizeof; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR[128] szCSDVersion; +} +alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW; + +struct OSVERSIONINFOEXA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR[128] szCSDVersion; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} +alias OSVERSIONINFOEXA* POSVERSIONINFOEXA, LPOSVERSIONINFOEXA; + +struct OSVERSIONINFOEXW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR[128] szCSDVersion; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} +alias OSVERSIONINFOEXW* POSVERSIONINFOEXW, LPOSVERSIONINFOEXW; + +align(2) struct IMAGE_VXD_HEADER { + WORD e32_magic; + BYTE e32_border; + BYTE e32_worder; + DWORD e32_level; + WORD e32_cpu; + WORD e32_os; + DWORD e32_ver; + DWORD e32_mflags; + DWORD e32_mpages; + DWORD e32_startobj; + DWORD e32_eip; + DWORD e32_stackobj; + DWORD e32_esp; + DWORD e32_pagesize; + DWORD e32_lastpagesize; + DWORD e32_fixupsize; + DWORD e32_fixupsum; + DWORD e32_ldrsize; + DWORD e32_ldrsum; + DWORD e32_objtab; + DWORD e32_objcnt; + DWORD e32_objmap; + DWORD e32_itermap; + DWORD e32_rsrctab; + DWORD e32_rsrccnt; + DWORD e32_restab; + DWORD e32_enttab; + DWORD e32_dirtab; + DWORD e32_dircnt; + DWORD e32_fpagetab; + DWORD e32_frectab; + DWORD e32_impmod; + DWORD e32_impmodcnt; + DWORD e32_impproc; + DWORD e32_pagesum; + DWORD e32_datapage; + DWORD e32_preload; + DWORD e32_nrestab; + DWORD e32_cbnrestab; + DWORD e32_nressum; + DWORD e32_autodata; + DWORD e32_debuginfo; + DWORD e32_debuglen; + DWORD e32_instpreload; + DWORD e32_instdemand; + DWORD e32_heapsize; + BYTE[12] e32_res3; + DWORD e32_winresoff; + DWORD e32_winreslen; + WORD e32_devid; + WORD e32_ddkver; +} +alias IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; + +align(4): +struct IMAGE_FILE_HEADER { + WORD Machine; + WORD NumberOfSections; + DWORD TimeDateStamp; + DWORD PointerToSymbolTable; + DWORD NumberOfSymbols; + WORD SizeOfOptionalHeader; + WORD Characteristics; +} +alias IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; +// const IMAGE_SIZEOF_FILE_HEADER = IMAGE_FILE_HEADER.sizeof; + +struct IMAGE_DATA_DIRECTORY { + DWORD VirtualAddress; + DWORD Size; +} +alias IMAGE_DATA_DIRECTORY* PIMAGE_DATA_DIRECTORY; + +struct IMAGE_OPTIONAL_HEADER32 { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + DWORD BaseOfData; + DWORD ImageBase; + DWORD SectionAlignment; + DWORD FileAlignment; + WORD MajorOperatingSystemVersion; + WORD MinorOperatingSystemVersion; + WORD MajorImageVersion; + WORD MinorImageVersion; + WORD MajorSubsystemVersion; + WORD MinorSubsystemVersion; + DWORD Win32VersionValue; + DWORD SizeOfImage; + DWORD SizeOfHeaders; + DWORD CheckSum; + WORD Subsystem; + WORD DllCharacteristics; + DWORD SizeOfStackReserve; + DWORD SizeOfStackCommit; + DWORD SizeOfHeapReserve; + DWORD SizeOfHeapCommit; + DWORD LoaderFlags; + DWORD NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; +} +alias IMAGE_OPTIONAL_HEADER32* PIMAGE_OPTIONAL_HEADER32; + +struct IMAGE_OPTIONAL_HEADER64 { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + ULONGLONG ImageBase; + DWORD SectionAlignment; + DWORD FileAlignment; + WORD MajorOperatingSystemVersion; + WORD MinorOperatingSystemVersion; + WORD MajorImageVersion; + WORD MinorImageVersion; + WORD MajorSubsystemVersion; + WORD MinorSubsystemVersion; + DWORD Win32VersionValue; + DWORD SizeOfImage; + DWORD SizeOfHeaders; + DWORD CheckSum; + WORD Subsystem; + WORD DllCharacteristics; + ULONGLONG SizeOfStackReserve; + ULONGLONG SizeOfStackCommit; + ULONGLONG SizeOfHeapReserve; + ULONGLONG SizeOfHeapCommit; + DWORD LoaderFlags; + DWORD NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; +} +alias IMAGE_OPTIONAL_HEADER64* PIMAGE_OPTIONAL_HEADER64; + +struct IMAGE_ROM_OPTIONAL_HEADER { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + DWORD BaseOfData; + DWORD BaseOfBss; + DWORD GprMask; + DWORD[4] CprMask; + DWORD GpValue; +} +alias IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; + +align(2): +struct IMAGE_DOS_HEADER { + WORD e_magic; + WORD e_cblp; + WORD e_cp; + WORD e_crlc; + WORD e_cparhdr; + WORD e_minalloc; + WORD e_maxalloc; + WORD e_ss; + WORD e_sp; + WORD e_csum; + WORD e_ip; + WORD e_cs; + WORD e_lfarlc; + WORD e_ovno; + WORD[4] e_res; + WORD e_oemid; + WORD e_oeminfo; + WORD[10] e_res2; + LONG e_lfanew; +} +alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER; + +struct IMAGE_OS2_HEADER { + WORD ne_magic; + CHAR ne_ver; + CHAR ne_rev; + WORD ne_enttab; + WORD ne_cbenttab; + LONG ne_crc; + WORD ne_flags; + WORD ne_autodata; + WORD ne_heap; + WORD ne_stack; + LONG ne_csip; + LONG ne_sssp; + WORD ne_cseg; + WORD ne_cmod; + WORD ne_cbnrestab; + WORD ne_segtab; + WORD ne_rsrctab; + WORD ne_restab; + WORD ne_modtab; + WORD ne_imptab; + LONG ne_nrestab; + WORD ne_cmovent; + WORD ne_align; + WORD ne_cres; + BYTE ne_exetyp; + BYTE ne_flagsothers; + WORD ne_pretthunks; + WORD ne_psegrefbytes; + WORD ne_swaparea; + WORD ne_expver; +} +alias IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER; + +align(4) struct IMAGE_NT_HEADERS32 { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER OptionalHeader; +} +alias IMAGE_NT_HEADERS32* PIMAGE_NT_HEADERS32; + +align(4) struct IMAGE_NT_HEADERS64 { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER OptionalHeader; +} +alias IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64; + +struct IMAGE_ROM_HEADERS { + IMAGE_FILE_HEADER FileHeader; + IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; +} +alias IMAGE_ROM_HEADERS* PIMAGE_ROM_HEADERS; + +struct IMAGE_SECTION_HEADER { + BYTE[IMAGE_SIZEOF_SHORT_NAME] Name; + union _Misc { + DWORD PhysicalAddress; + DWORD VirtualSize; + } + _Misc Misc; + DWORD VirtualAddress; + DWORD SizeOfRawData; + DWORD PointerToRawData; + DWORD PointerToRelocations; + DWORD PointerToLinenumbers; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD Characteristics; +} +alias IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; + +struct IMAGE_SYMBOL { + union _N { + BYTE[8] ShortName; + struct Name { + DWORD Short; + DWORD Long; + } + PBYTE[2] LongName; + } + _N N; + DWORD Value; + SHORT SectionNumber; + WORD Type; + BYTE StorageClass; + BYTE NumberOfAuxSymbols; +} +alias IMAGE_SYMBOL* PIMAGE_SYMBOL; + +union IMAGE_AUX_SYMBOL { + struct _Sym { + DWORD TagIndex; + union _Misc { + struct _LnSz { + WORD Linenumber; + WORD Size; + } + _LnSz LnSz; + DWORD TotalSize; + } + _Misc Misc; + union _FcnAry { + struct _Function { + DWORD PointerToLinenumber; + DWORD PointerToNextFunction; + } + _Function Function; + struct _Array { + WORD[4] Dimension; + } + _Array Array; + } + _FcnAry FcnAry; + WORD TvIndex; + } + _Sym Sym; + struct _File { + BYTE[IMAGE_SIZEOF_SYMBOL] Name; + } + _File File; + struct _Section { + DWORD Length; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD CheckSum; + SHORT Number; + BYTE Selection; + } + _Section Section; +} +alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; + +struct IMAGE_COFF_SYMBOLS_HEADER { + DWORD NumberOfSymbols; + DWORD LvaToFirstSymbol; + DWORD NumberOfLinenumbers; + DWORD LvaToFirstLinenumber; + DWORD RvaToFirstByteOfCode; + DWORD RvaToLastByteOfCode; + DWORD RvaToFirstByteOfData; + DWORD RvaToLastByteOfData; +} +alias IMAGE_COFF_SYMBOLS_HEADER* PIMAGE_COFF_SYMBOLS_HEADER; + +struct IMAGE_RELOCATION { + union { + DWORD VirtualAddress; + DWORD RelocCount; + } + DWORD SymbolTableIndex; + WORD Type; +} +alias IMAGE_RELOCATION* PIMAGE_RELOCATION; + +align(4) struct IMAGE_BASE_RELOCATION { + DWORD VirtualAddress; + DWORD SizeOfBlock; +} +alias IMAGE_BASE_RELOCATION* PIMAGE_BASE_RELOCATION; + +align(2) struct IMAGE_LINENUMBER { + union _Type { + DWORD SymbolTableIndex; + DWORD VirtualAddress; + } + _Type Type; + WORD Linenumber; +} +alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; + +align(4): +struct IMAGE_ARCHIVE_MEMBER_HEADER { + BYTE[16] Name; + BYTE[12] Date; + BYTE[6] UserID; + BYTE[6] GroupID; + BYTE[8] Mode; + BYTE[10] Size; + BYTE[2] EndHeader; +} +alias IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; + +struct IMAGE_EXPORT_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Name; + DWORD Base; + DWORD NumberOfFunctions; + DWORD NumberOfNames; + DWORD AddressOfFunctions; + DWORD AddressOfNames; + DWORD AddressOfNameOrdinals; +} +alias IMAGE_EXPORT_DIRECTORY* PIMAGE_EXPORT_DIRECTORY; + +struct IMAGE_IMPORT_BY_NAME { + WORD Hint; + BYTE _Name; + + BYTE* Name() { + return &_Name; + } +} +alias IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; + +struct IMAGE_THUNK_DATA32 { + union _u1 { + DWORD ForwarderString; + DWORD Function; + DWORD Ordinal; + DWORD AddressOfData; + } + _u1 u1; +} +alias IMAGE_THUNK_DATA32* PIMAGE_THUNK_DATA32; + +struct IMAGE_THUNK_DATA64 { + union _u1 { + ULONGLONG ForwarderString; + ULONGLONG Function; + ULONGLONG Ordinal; + ULONGLONG AddressOfData; + } + _u1 u1; +} +alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; + +struct IMAGE_IMPORT_DESCRIPTOR { + union { + DWORD Characteristics; + DWORD OriginalFirstThunk; + } + DWORD TimeDateStamp; + DWORD ForwarderChain; + DWORD Name; + DWORD FirstThunk; +} +alias IMAGE_IMPORT_DESCRIPTOR* PIMAGE_IMPORT_DESCRIPTOR; + +struct IMAGE_BOUND_IMPORT_DESCRIPTOR { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD NumberOfModuleForwarderRefs; +} +alias IMAGE_BOUND_IMPORT_DESCRIPTOR* PIMAGE_BOUND_IMPORT_DESCRIPTOR; + +struct IMAGE_BOUND_FORWARDER_REF { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD Reserved; +} +alias IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; + +struct IMAGE_TLS_DIRECTORY32 { + DWORD StartAddressOfRawData; + DWORD EndAddressOfRawData; + DWORD AddressOfIndex; + DWORD AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} +alias IMAGE_TLS_DIRECTORY32* PIMAGE_TLS_DIRECTORY32; + +struct IMAGE_TLS_DIRECTORY64 { + ULONGLONG StartAddressOfRawData; + ULONGLONG EndAddressOfRawData; + ULONGLONG AddressOfIndex; + ULONGLONG AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} +alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; + +struct IMAGE_RESOURCE_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + WORD NumberOfNamedEntries; + WORD NumberOfIdEntries; +} +alias IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; + +struct IMAGE_RESOURCE_DIRECTORY_ENTRY { + union { + /+struct { + DWORD NameOffset:31; + DWORD NameIsString:1; + }+/ + DWORD Name; + WORD Id; + } + DWORD OffsetToData; + /+struct { + DWORD OffsetToDirectory:31; + DWORD DataIsDirectory:1; + }+/ + + uint NameOffset() { return Name & 0x7FFFFFFF; } + bool NameIsString() { return cast(bool)(Name & 0x80000000); } + uint OffsetToDirectory() { return OffsetToData & 0x7FFFFFFF; } + bool DataIsDirectory() { return cast(bool)(OffsetToData & 0x80000000); } + + uint NameOffset(uint n) { + Name = (Name & 0x80000000) | (n & 0x7FFFFFFF); + return n & 0x7FFFFFFF; + } + + bool NameIsString(bool n) { + Name = (Name & 0x7FFFFFFF) | (n << 31); return n; + } + + uint OffsetToDirectory(uint o) { + OffsetToData = (OffsetToData & 0x80000000) | (o & 0x7FFFFFFF); + return o & 0x7FFFFFFF; + } + + bool DataIsDirectory(bool d) { + OffsetToData = (OffsetToData & 0x7FFFFFFF) | (d << 31); return d; + } +} +alias IMAGE_RESOURCE_DIRECTORY_ENTRY* PIMAGE_RESOURCE_DIRECTORY_ENTRY; + +struct IMAGE_RESOURCE_DIRECTORY_STRING { + WORD Length; + CHAR _NameString; + + CHAR* NameString() { return &_NameString; } +} +alias IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; + +struct IMAGE_RESOURCE_DIR_STRING_U { + WORD Length; + WCHAR _NameString; + + WCHAR* NameString() { return &_NameString; } +} +alias IMAGE_RESOURCE_DIR_STRING_U* PIMAGE_RESOURCE_DIR_STRING_U; + +struct IMAGE_RESOURCE_DATA_ENTRY { + DWORD OffsetToData; + DWORD Size; + DWORD CodePage; + DWORD Reserved; +} +alias IMAGE_RESOURCE_DATA_ENTRY* PIMAGE_RESOURCE_DATA_ENTRY; + +struct IMAGE_LOAD_CONFIG_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + DWORD DeCommitFreeBlockThreshold; + DWORD DeCommitTotalFreeThreshold; + PVOID LockPrefixTable; + DWORD MaximumAllocationSize; + DWORD VirtualMemoryThreshold; + DWORD ProcessHeapFlags; + DWORD[4] Reserved; +} +alias IMAGE_LOAD_CONFIG_DIRECTORY* PIMAGE_LOAD_CONFIG_DIRECTORY; + +struct IMAGE_LOAD_CONFIG_DIRECTORY64 { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + ULONGLONG DeCommitFreeBlockThreshold; + ULONGLONG DeCommitTotalFreeThreshold; + ULONGLONG LockPrefixTable; + ULONGLONG MaximumAllocationSize; + ULONGLONG VirtualMemoryThreshold; + ULONGLONG ProcessAffinityMask; + DWORD ProcessHeapFlags; + WORD CSDFlags; + WORD Reserved1; + ULONGLONG EditList; + DWORD[2] Reserved; +} +alias IMAGE_LOAD_CONFIG_DIRECTORY64* PIMAGE_LOAD_CONFIG_DIRECTORY64; + +struct IMAGE_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + DWORD EndAddress; + PVOID ExceptionHandler; + PVOID HandlerData; + DWORD PrologEndAddress; +} +alias IMAGE_RUNTIME_FUNCTION_ENTRY* PIMAGE_RUNTIME_FUNCTION_ENTRY; + +struct IMAGE_CE_RUNTIME_FUNCTION_ENTRY { + uint FuncStart; + union { + ubyte PrologLen; + uint _bf; + } +/+ + unsigned int FuncLen:22; + unsigned int ThirtyTwoBit:1; + unsigned int ExceptionFlag:1; ++/ + uint FuncLen() { return (_bf >> 8) & 0x3FFFFF; } + bool ThirtyTwoBit() { return cast(bool)(_bf & 0x40000000); } + bool ExceptionFlag() { return cast(bool)(_bf & 0x80000000); } + + uint FuncLen(uint f) { + _bf = (_bf & ~0x3FFFFF00) | ((f & 0x3FFFFF) << 8); return f & 0x3FFFFF; + } + + bool ThirtyTwoBit(bool t) { + _bf = (_bf & ~0x40000000) | (t << 30); return t; + } + + bool ExceptionFlag(bool e) { + _bf = (_bf & ~0x80000000) | (e << 31); return e; + } +} +alias IMAGE_CE_RUNTIME_FUNCTION_ENTRY* PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; + +struct IMAGE_DEBUG_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Type; + DWORD SizeOfData; + DWORD AddressOfRawData; + DWORD PointerToRawData; +} +alias IMAGE_DEBUG_DIRECTORY* PIMAGE_DEBUG_DIRECTORY; + +struct FPO_DATA { + DWORD ulOffStart; + DWORD cbProcSize; + DWORD cdwLocals; + WORD cdwParams; + ubyte cbProlog; + ubyte _bf; +/+ + WORD cbRegs:3; + WORD fHasSEH:1; + WORD fUseBP:1; + WORD reserved:1; + WORD cbFrame:2; ++/ + ubyte cbRegs() { return cast(ubyte)(_bf & 0x07); } + bool fHasSEH() { return cast(bool)(_bf & 0x08); } + bool fUseBP() { return cast(bool)(_bf & 0x10); } + bool reserved() { return cast(bool)(_bf & 0x20); } + ubyte cbFrame() { return cast(ubyte)(_bf >> 6); } + + ubyte cbRegs(ubyte c) { + _bf = cast(ubyte) ((_bf & ~0x07) | (c & 0x07)); + return cast(ubyte)(c & 0x07); + } + + bool fHasSEH(bool f) { _bf = cast(ubyte)((_bf & ~0x08) | (f << 3)); return f; } + bool fUseBP(bool f) { _bf = cast(ubyte)((_bf & ~0x10) | (f << 4)); return f; } + bool reserved(bool r) { _bf = cast(ubyte)((_bf & ~0x20) | (r << 5)); return r; } + + ubyte cbFrame(ubyte c) { + _bf = cast(ubyte) ((_bf & ~0xC0) | ((c & 0x03) << 6)); + return cast(ubyte)(c & 0x03); + } +} +alias FPO_DATA* PFPO_DATA; + +struct IMAGE_DEBUG_MISC { + DWORD DataType; + DWORD Length; + BOOLEAN Unicode; + BYTE[3] Reserved; + BYTE _Data; + + BYTE* Data() { return &_Data; } +} +alias IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; + +struct IMAGE_FUNCTION_ENTRY { + DWORD StartingAddress; + DWORD EndingAddress; + DWORD EndOfPrologue; +} +alias IMAGE_FUNCTION_ENTRY* PIMAGE_FUNCTION_ENTRY; + +struct IMAGE_FUNCTION_ENTRY64 { + ULONGLONG StartingAddress; + ULONGLONG EndingAddress; + union { + ULONGLONG EndOfPrologue; + ULONGLONG UnwindInfoAddress; + } +} +alias IMAGE_FUNCTION_ENTRY64* PIMAGE_FUNCTION_ENTRY64; + +struct IMAGE_SEPARATE_DEBUG_HEADER { + WORD Signature; + WORD Flags; + WORD Machine; + WORD Characteristics; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD ImageBase; + DWORD SizeOfImage; + DWORD NumberOfSections; + DWORD ExportedNamesSize; + DWORD DebugDirectorySize; + DWORD SectionAlignment; + DWORD[2] Reserved; +} +alias IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER; + +enum SERVICE_NODE_TYPE { + DriverType = SERVICE_KERNEL_DRIVER, + FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, + Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, + Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, + AdapterType = SERVICE_ADAPTER, + RecognizerType = SERVICE_RECOGNIZER_DRIVER +} + +enum SERVICE_LOAD_TYPE { + BootLoad = SERVICE_BOOT_START, + SystemLoad = SERVICE_SYSTEM_START, + AutoLoad = SERVICE_AUTO_START, + DemandLoad = SERVICE_DEMAND_START, + DisableLoad = SERVICE_DISABLED +} + +enum SERVICE_ERROR_TYPE { + IgnoreError = SERVICE_ERROR_IGNORE, + NormalError = SERVICE_ERROR_NORMAL, + SevereError = SERVICE_ERROR_SEVERE, + CriticalError = SERVICE_ERROR_CRITICAL +} +alias SERVICE_ERROR_TYPE _CM_ERROR_CONTROL_TYPE; + +//DAC: According to MSJ, 'UnderTheHood', May 1996, this +// structure is not documented in any official Microsoft header file. +alias void EXCEPTION_REGISTRATION_RECORD; + +align: +struct NT_TIB { + EXCEPTION_REGISTRATION_RECORD *ExceptionList; + PVOID StackBase; + PVOID StackLimit; + PVOID SubSystemTib; + union { + PVOID FiberData; + DWORD Version; + } + PVOID ArbitraryUserPointer; + NT_TIB *Self; +} +alias NT_TIB* PNT_TIB; + +struct REPARSE_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + union { + struct _GenericReparseBuffer { + BYTE _DataBuffer; + + BYTE* DataBuffer() { return &_DataBuffer; } + } + _GenericReparseBuffer GenericReparseBuffer; + struct _SymbolicLinkReparseBuffer { + WORD SubstituteNameOffset; + WORD SubstituteNameLength; + WORD PrintNameOffset; + WORD PrintNameLength; + // ??? This is in MinGW, but absent in MSDN docs + ULONG Flags; + WCHAR _PathBuffer; + + WCHAR* PathBuffer() { return &_PathBuffer; } + } + _SymbolicLinkReparseBuffer SymbolicLinkReparseBuffer; + struct _MountPointReparseBuffer { + WORD SubstituteNameOffset; + WORD SubstituteNameLength; + WORD PrintNameOffset; + WORD PrintNameLength; + WCHAR _PathBuffer; + + WCHAR* PathBuffer() { return &_PathBuffer; } + } + _MountPointReparseBuffer MountPointReparseBuffer; + } +} +alias REPARSE_DATA_BUFFER *PREPARSE_DATA_BUFFER; + +struct REPARSE_GUID_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + GUID ReparseGuid; + struct _GenericReparseBuffer { + BYTE _DataBuffer; + + BYTE* DataBuffer() { return &_DataBuffer; } + } + _GenericReparseBuffer GenericReparseBuffer; +} +alias REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; + +const size_t + REPARSE_DATA_BUFFER_HEADER_SIZE = REPARSE_DATA_BUFFER.GenericReparseBuffer.offsetof, + REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = REPARSE_GUID_DATA_BUFFER.GenericReparseBuffer.offsetof, + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384; + + +struct REPARSE_POINT_INFORMATION { + WORD ReparseDataLength; + WORD UnparsedNameLength; +} +alias REPARSE_POINT_INFORMATION* PREPARSE_POINT_INFORMATION; + +union FILE_SEGMENT_ELEMENT { + PVOID64 Buffer; + ULONGLONG Alignment; +} +alias FILE_SEGMENT_ELEMENT* PFILE_SEGMENT_ELEMENT; + +// JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants +const DWORD + JOB_OBJECT_LIMIT_WORKINGSET = 0x0001, + JOB_OBJECT_LIMIT_PROCESS_TIME = 0x0002, + JOB_OBJECT_LIMIT_JOB_TIME = 0x0004, + JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x0008, + JOB_OBJECT_LIMIT_AFFINITY = 0x0010, + JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x0020, + JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x0040, + JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x0080, + JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x0100, + JOB_OBJECT_LIMIT_JOB_MEMORY = 0x0200, + JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x0400, + JOB_OBJECT_BREAKAWAY_OK = 0x0800, + JOB_OBJECT_SILENT_BREAKAWAY = 0x1000; + +// JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants +const DWORD + JOB_OBJECT_UILIMIT_HANDLES = 0x0001, + JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x0002, + JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x0004, + JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x0008, + JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x0010, + JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x0020, + JOB_OBJECT_UILIMIT_DESKTOP = 0x0040, + JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x0080; + +// JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants +const DWORD + JOB_OBJECT_SECURITY_NO_ADMIN = 0x0001, + JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x0002, + JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x0004, + JOB_OBJECT_SECURITY_FILTER_TOKENS = 0x0008; + +// JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants +enum : DWORD { + JOB_OBJECT_TERMINATE_AT_END_OF_JOB, + JOB_OBJECT_POST_AT_END_OF_JOB +} + +enum : DWORD { + JOB_OBJECT_MSG_END_OF_JOB_TIME = 1, + JOB_OBJECT_MSG_END_OF_PROCESS_TIME, + JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT, + JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO, + JOB_OBJECT_MSG_NEW_PROCESS, + JOB_OBJECT_MSG_EXIT_PROCESS, + JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS, + JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT, + JOB_OBJECT_MSG_JOB_MEMORY_LIMIT +} + +enum JOBOBJECTINFOCLASS { + JobObjectBasicAccountingInformation = 1, + JobObjectBasicLimitInformation, + JobObjectBasicProcessIdList, + JobObjectBasicUIRestrictions, + JobObjectSecurityLimitInformation, + JobObjectEndOfJobTimeInformation, + JobObjectAssociateCompletionPortInformation, + JobObjectBasicAndIoAccountingInformation, + JobObjectExtendedLimitInformation, + JobObjectJobSetInformation, + MaxJobObjectInfoClass +} + +struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { + LARGE_INTEGER TotalUserTime; + LARGE_INTEGER TotalKernelTime; + LARGE_INTEGER ThisPeriodTotalUserTime; + LARGE_INTEGER ThisPeriodTotalKernelTime; + DWORD TotalPageFaultCount; + DWORD TotalProcesses; + DWORD ActiveProcesses; + DWORD TotalTerminatedProcesses; +} +alias JOBOBJECT_BASIC_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; + +struct JOBOBJECT_BASIC_LIMIT_INFORMATION { + LARGE_INTEGER PerProcessUserTimeLimit; + LARGE_INTEGER PerJobUserTimeLimit; + DWORD LimitFlags; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + DWORD ActiveProcessLimit; + ULONG_PTR Affinity; + DWORD PriorityClass; + DWORD SchedulingClass; +} +alias JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_INFORMATION; + +struct JOBOBJECT_BASIC_PROCESS_ID_LIST { + DWORD NumberOfAssignedProcesses; + DWORD NumberOfProcessIdsInList; + ULONG_PTR _ProcessIdList; + + ULONG_PTR* ProcessIdList() { return &_ProcessIdList; } +} +alias JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; + +struct JOBOBJECT_BASIC_UI_RESTRICTIONS { + DWORD UIRestrictionsClass; +} +alias JOBOBJECT_BASIC_UI_RESTRICTIONS* PJOBOBJECT_BASIC_UI_RESTRICTIONS; + +struct JOBOBJECT_SECURITY_LIMIT_INFORMATION { + DWORD SecurityLimitFlags; + HANDLE JobToken; + PTOKEN_GROUPS SidsToDisable; + PTOKEN_PRIVILEGES PrivilegesToDelete; + PTOKEN_GROUPS RestrictedSids; +} +alias JOBOBJECT_SECURITY_LIMIT_INFORMATION* PJOBOBJECT_SECURITY_LIMIT_INFORMATION; + +struct JOBOBJECT_END_OF_JOB_TIME_INFORMATION { + DWORD EndOfJobTimeAction; +} +alias JOBOBJECT_END_OF_JOB_TIME_INFORMATION* PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; + +struct JOBOBJECT_ASSOCIATE_COMPLETION_PORT { + PVOID CompletionKey; + HANDLE CompletionPort; +} +alias JOBOBJECT_ASSOCIATE_COMPLETION_PORT* PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; + +struct JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { + JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; + IO_COUNTERS IoInfo; +} +alias JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION *PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; + +struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION { + JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; + IO_COUNTERS IoInfo; + SIZE_T ProcessMemoryLimit; + SIZE_T JobMemoryLimit; + SIZE_T PeakProcessMemoryUsed; + SIZE_T PeakJobMemoryUsed; +} +alias JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; + +struct JOBOBJECT_JOBSET_INFORMATION { + DWORD MemberLevel; +} +alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; + +// MinGW: Making these defines conditional on _WIN32_WINNT will break ddk includes +//static if (_WIN32_WINNT >= 0x500) { + +const DWORD + ES_SYSTEM_REQUIRED = 0x00000001, + ES_DISPLAY_REQUIRED = 0x00000002, + ES_USER_PRESENT = 0x00000004, + ES_CONTINUOUS = 0x80000000; + +enum LATENCY_TIME { + LT_DONT_CARE, + LT_LOWEST_LATENCY +} +alias LATENCY_TIME* PLATENCY_TIME; + +enum SYSTEM_POWER_STATE { + PowerSystemUnspecified, + PowerSystemWorking, + PowerSystemSleeping1, + PowerSystemSleeping2, + PowerSystemSleeping3, + PowerSystemHibernate, + PowerSystemShutdown, + PowerSystemMaximum +} +alias SYSTEM_POWER_STATE* PSYSTEM_POWER_STATE; + +const POWER_SYSTEM_MAXIMUM = SYSTEM_POWER_STATE.PowerSystemMaximum; + +enum POWER_ACTION { + PowerActionNone, + PowerActionReserved, + PowerActionSleep, + PowerActionHibernate, + PowerActionShutdown, + PowerActionShutdownReset, + PowerActionShutdownOff, + PowerActionWarmEject +} +alias POWER_ACTION* PPOWER_ACTION; + +static if (_WIN32_WINNT >= 0x600) { + enum SYSTEM_POWER_CONDITION { + PoAc, + PoDc, + PoHot, + PoConditionMaximum + } + alias SYSTEM_POWER_CONDITION* PSYSTEM_POWER_CONDITION; +} + +enum DEVICE_POWER_STATE { + PowerDeviceUnspecified, + PowerDeviceD0, + PowerDeviceD1, + PowerDeviceD2, + PowerDeviceD3, + PowerDeviceMaximum +} +alias DEVICE_POWER_STATE* PDEVICE_POWER_STATE; + +align(4): +struct BATTERY_REPORTING_SCALE { + DWORD Granularity; + DWORD Capacity; +} +alias BATTERY_REPORTING_SCALE* PBATTERY_REPORTING_SCALE; + +struct POWER_ACTION_POLICY { + POWER_ACTION Action; + ULONG Flags; + ULONG EventCode; +} +alias POWER_ACTION_POLICY* PPOWER_ACTION_POLICY; + +// POWER_ACTION_POLICY.Flags constants +const ULONG + POWER_ACTION_QUERY_ALLOWED = 0x00000001, + POWER_ACTION_UI_ALLOWED = 0x00000002, + POWER_ACTION_OVERRIDE_APPS = 0x00000004, + POWER_ACTION_LIGHTEST_FIRST = 0x10000000, + POWER_ACTION_LOCK_CONSOLE = 0x20000000, + POWER_ACTION_DISABLE_WAKES = 0x40000000, + POWER_ACTION_CRITICAL = 0x80000000; + +// POWER_ACTION_POLICY.EventCode constants +const ULONG + POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001, + POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002, + POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004, + POWER_USER_NOTIFY_BUTTON = 0x00000008, + POWER_USER_NOTIFY_SHUTDOWN = 0x00000010, + POWER_FORCE_TRIGGER_RESET = 0x80000000; + +const size_t + DISCHARGE_POLICY_CRITICAL = 0, + DISCHARGE_POLICY_LOW = 1, + NUM_DISCHARGE_POLICIES = 4; + +enum : BYTE { + PO_THROTTLE_NONE, + PO_THROTTLE_CONSTANT, + PO_THROTTLE_DEGRADE, + PO_THROTTLE_ADAPTIVE, + PO_THROTTLE_MAXIMUM +} + +struct SYSTEM_POWER_LEVEL { + BOOLEAN Enable; + UCHAR[3] Spare; + ULONG BatteryLevel; + POWER_ACTION_POLICY PowerPolicy; + SYSTEM_POWER_STATE MinSystemState; +} +alias SYSTEM_POWER_LEVEL* PSYSTEM_POWER_LEVEL; + +struct SYSTEM_POWER_POLICY { + ULONG Revision; + POWER_ACTION_POLICY PowerButton; + POWER_ACTION_POLICY SleepButton; + POWER_ACTION_POLICY LidClose; + SYSTEM_POWER_STATE LidOpenWake; + ULONG Reserved; + POWER_ACTION_POLICY Idle; + ULONG IdleTimeout; + UCHAR IdleSensitivity; + UCHAR DynamicThrottle; + UCHAR[2] Spare2; + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + SYSTEM_POWER_STATE ReducedLatencySleep; + ULONG WinLogonFlags; + ULONG Spare3; + ULONG DozeS4Timeout; + ULONG BroadcastCapacityResolution; + SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; + ULONG VideoTimeout; + BOOLEAN VideoDimDisplay; + ULONG[3] VideoReserved; + ULONG SpindownTimeout; + BOOLEAN OptimizeForPower; + UCHAR FanThrottleTolerance; + UCHAR ForcedThrottle; + UCHAR MinThrottle; + POWER_ACTION_POLICY OverThrottled; +} +alias SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY; + +struct SYSTEM_POWER_CAPABILITIES { + BOOLEAN PowerButtonPresent; + BOOLEAN SleepButtonPresent; + BOOLEAN LidPresent; + BOOLEAN SystemS1; + BOOLEAN SystemS2; + BOOLEAN SystemS3; + BOOLEAN SystemS4; + BOOLEAN SystemS5; + BOOLEAN HiberFilePresent; + BOOLEAN FullWake; + BOOLEAN VideoDimPresent; + BOOLEAN ApmPresent; + BOOLEAN UpsPresent; + BOOLEAN ThermalControl; + BOOLEAN ProcessorThrottle; + UCHAR ProcessorMinThrottle; + UCHAR ProcessorMaxThrottle; + UCHAR[4] spare2; + BOOLEAN DiskSpinDown; + UCHAR[8] spare3; + BOOLEAN SystemBatteriesPresent; + BOOLEAN BatteriesAreShortTerm; + BATTERY_REPORTING_SCALE[3] BatteryScale; + SYSTEM_POWER_STATE AcOnLineWake; + SYSTEM_POWER_STATE SoftLidWake; + SYSTEM_POWER_STATE RtcWake; + SYSTEM_POWER_STATE MinDeviceWakeState; + SYSTEM_POWER_STATE DefaultLowLatencyWake; +} +alias SYSTEM_POWER_CAPABILITIES* PSYSTEM_POWER_CAPABILITIES; + +struct SYSTEM_BATTERY_STATE { + BOOLEAN AcOnLine; + BOOLEAN BatteryPresent; + BOOLEAN Charging; + BOOLEAN Discharging; + BOOLEAN[4] Spare1; + ULONG MaxCapacity; + ULONG RemainingCapacity; + ULONG Rate; + ULONG EstimatedTime; + ULONG DefaultAlert1; + ULONG DefaultAlert2; +} +alias SYSTEM_BATTERY_STATE* PSYSTEM_BATTERY_STATE; + +enum POWER_INFORMATION_LEVEL { + SystemPowerPolicyAc, + SystemPowerPolicyDc, + VerifySystemPolicyAc, + VerifySystemPolicyDc, + SystemPowerCapabilities, + SystemBatteryState, + SystemPowerStateHandler, + ProcessorStateHandler, + SystemPowerPolicyCurrent, + AdministratorPowerPolicy, + SystemReserveHiberFile, + ProcessorInformation, + SystemPowerInformation, + ProcessorStateHandler2, + LastWakeTime, + LastSleepTime, + SystemExecutionState, + SystemPowerStateNotifyHandler, + ProcessorPowerPolicyAc, + ProcessorPowerPolicyDc, + VerifyProcessorPowerPolicyAc, + VerifyProcessorPowerPolicyDc, + ProcessorPowerPolicyCurrent +} + +//#if 1 /* (WIN32_WINNT >= 0x0500) */ +struct SYSTEM_POWER_INFORMATION { + ULONG MaxIdlenessAllowed; + ULONG Idleness; + ULONG TimeRemaining; + UCHAR CoolingMode; +} +alias SYSTEM_POWER_INFORMATION* PSYSTEM_POWER_INFORMATION; +//#endif + +struct PROCESSOR_POWER_POLICY_INFO { + ULONG TimeCheck; + ULONG DemoteLimit; + ULONG PromoteLimit; + UCHAR DemotePercent; + UCHAR PromotePercent; + UCHAR[2] Spare; + uint _bf; + + bool AllowDemotion() { return cast(bool)(_bf & 1); } + bool AllowPromotion() { return cast(bool)(_bf & 2); } + + bool AllowDemotion(bool a) { _bf = (_bf & ~1) | a; return a; } + bool AllowPromotion(bool a) { _bf = (_bf & ~2) | (a << 1); return a; } +/+ + ULONG AllowDemotion : 1; + ULONG AllowPromotion : 1; + ULONG Reserved : 30; ++/ +} +alias PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO; + +struct PROCESSOR_POWER_POLICY { + ULONG Revision; + UCHAR DynamicThrottle; + UCHAR[3] Spare; + ULONG Reserved; + ULONG PolicyCount; + PROCESSOR_POWER_POLICY_INFO[3] Policy; +} +alias PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; + +struct ADMINISTRATOR_POWER_POLICY { + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + ULONG MinVideoTimeout; + ULONG MaxVideoTimeout; + ULONG MinSpindownTimeout; + ULONG MaxSpindownTimeout; +} +alias ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; + +//}//#endif /* _WIN32_WINNT >= 0x500 */ + +extern (Windows) { + alias void function(PVOID, DWORD, PVOID) PIMAGE_TLS_CALLBACK; + + static if (_WIN32_WINNT >= 0x500) { + alias LONG function(PEXCEPTION_POINTERS) PVECTORED_EXCEPTION_HANDLER; + alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACKFUNC; + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum HEAP_INFORMATION_CLASS { + HeapCompatibilityInformation + } + + enum ACTIVATION_CONTEXT_INFO_CLASS { + ActivationContextBasicInformation = 1, + ActivationContextDetailedInformation, + AssemblyDetailedInformationInActivationContext, + FileInformationInAssemblyOfAssemblyInActivationContext + } + + struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulEncodedAssemblyIdentityLength; + DWORD ulManifestPathType; + DWORD ulManifestPathLength; + LARGE_INTEGER liManifestLastWriteTime; + DWORD ulPolicyPathType; + DWORD ulPolicyPathLength; + LARGE_INTEGER liPolicyLastWriteTime; + DWORD ulMetadataSatelliteRosterIndex; + DWORD ulManifestVersionMajor; + DWORD ulManifestVersionMinor; + DWORD ulPolicyVersionMajor; + DWORD ulPolicyVersionMinor; + DWORD ulAssemblyDirectoryNameLength; + PCWSTR lpAssemblyEncodedAssemblyIdentity; + PCWSTR lpAssemblyManifestPath; + PCWSTR lpAssemblyPolicyPath; + PCWSTR lpAssemblyDirectoryName; + } + alias ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* + PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + alias const(ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION)* + PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + + struct ACTIVATION_CONTEXT_DETAILED_INFORMATION { + DWORD dwFlags; + DWORD ulFormatVersion; + DWORD ulAssemblyCount; + DWORD ulRootManifestPathType; + DWORD ulRootManifestPathChars; + DWORD ulRootConfigurationPathType; + DWORD ulRootConfigurationPathChars; + DWORD ulAppDirPathType; + DWORD ulAppDirPathChars; + PCWSTR lpRootManifestPath; + PCWSTR lpRootConfigurationPath; + PCWSTR lpAppDirPath; + } + alias ACTIVATION_CONTEXT_DETAILED_INFORMATION* + PACTIVATION_CONTEXT_DETAILED_INFORMATION; + alias const(ACTIVATION_CONTEXT_DETAILED_INFORMATION)* + PCACTIVATION_CONTEXT_DETAILED_INFORMATION; + + struct ACTIVATION_CONTEXT_QUERY_INDEX { + ULONG ulAssemblyIndex; + ULONG ulFileIndexInAssembly; + } + alias ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX; + alias const(ACTIVATION_CONTEXT_QUERY_INDEX)* PCACTIVATION_CONTEXT_QUERY_INDEX; + + struct ASSEMBLY_FILE_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulFilenameLength; + DWORD ulPathLength; + PCWSTR lpFileName; + PCWSTR lpFilePath; + } + alias ASSEMBLY_FILE_DETAILED_INFORMATION* + PASSEMBLY_FILE_DETAILED_INFORMATION; + alias const(ASSEMBLY_FILE_DETAILED_INFORMATION)* + PCASSEMBLY_FILE_DETAILED_INFORMATION; +} + +version (Unicode) { + alias OSVERSIONINFOW OSVERSIONINFO; + alias OSVERSIONINFOEXW OSVERSIONINFOEX; +} else { + alias OSVERSIONINFOA OSVERSIONINFO; + alias OSVERSIONINFOEXA OSVERSIONINFOEX; +} + +alias OSVERSIONINFO* POSVERSIONINFO, LPOSVERSIONINFO; +alias OSVERSIONINFOEX* POSVERSIONINFOEX, LPOSVERSIONINFOEX; + + +static if (_WIN32_WINNT >= 0x500) { + extern (Windows) ULONGLONG VerSetConditionMask(ULONGLONG, DWORD, BYTE); +} + +version (Win64) { + const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR64_MAGIC; + + alias IMAGE_ORDINAL_FLAG64 IMAGE_ORDINAL_FLAG; + alias IMAGE_SNAP_BY_ORDINAL64 IMAGE_SNAP_BY_ORDINAL; + alias IMAGE_ORDINAL64 IMAGE_ORDINAL; + alias IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; + alias IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; + alias IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; + alias IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; +} else { + const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC; + + alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG; + alias IMAGE_ORDINAL32 IMAGE_ORDINAL; + alias IMAGE_SNAP_BY_ORDINAL32 IMAGE_SNAP_BY_ORDINAL; + alias IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; + alias IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; + alias IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; + alias IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; +} + +alias IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER; +alias IMAGE_NT_HEADERS* PIMAGE_NT_HEADERS; +alias IMAGE_THUNK_DATA* PIMAGE_THUNK_DATA; +alias IMAGE_TLS_DIRECTORY* PIMAGE_TLS_DIRECTORY; + +// TODO: MinGW implements these in assembly. How to translate? +PVOID GetCurrentFiber(); +PVOID GetFiberData(); diff --git a/src/core/sys/windows/winperf.d b/src/core/sys/windows/winperf.d index 2a8d4ed989..79a2a0064e 100644 --- a/src/core/sys/windows/winperf.d +++ b/src/core/sys/windows/winperf.d @@ -1,151 +1,151 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winperf.d) - */ -module core.sys.windows.winperf; - -import core.sys.windows.windef; -import core.sys.windows.winbase; // for SYSTEMTIME - -const PERF_DATA_VERSION=1; -const PERF_DATA_REVISION=1; -const PERF_NO_INSTANCES=-1; -const PERF_SIZE_DWORD=0; -const PERF_SIZE_LARGE=256; -const PERF_SIZE_ZERO=512; -const PERF_SIZE_VARIABLE_LEN=768; -const PERF_TYPE_NUMBER=0; -const PERF_TYPE_COUNTER=1024; -const PERF_TYPE_TEXT=2048; -const PERF_TYPE_ZERO=0xC00; -const PERF_NUMBER_HEX=0; -const PERF_NUMBER_DECIMAL=0x10000; -const PERF_NUMBER_DEC_1000=0x20000; -const PERF_COUNTER_VALUE=0; -const PERF_COUNTER_RATE=0x10000; -const PERF_COUNTER_FRACTION=0x20000; -const PERF_COUNTER_BASE=0x30000; -const PERF_COUNTER_ELAPSED=0x40000; -const PERF_COUNTER_QUEUELEN=0x50000; -const PERF_COUNTER_HISTOGRAM=0x60000; -const PERF_TEXT_UNICODE=0; -const PERF_TEXT_ASCII=0x10000; -const PERF_TIMER_TICK=0; -const PERF_TIMER_100NS=0x100000; -const PERF_OBJECT_TIMER=0x200000; -const PERF_DELTA_COUNTER=0x400000; -const PERF_DELTA_BASE=0x800000; -const PERF_INVERSE_COUNTER=0x1000000; -const PERF_MULTI_COUNTER=0x2000000; -const PERF_DISPLAY_NO_SUFFIX=0; -const PERF_DISPLAY_PER_SEC=0x10000000; -const PERF_DISPLAY_PERCENT=0x20000000; -const PERF_DISPLAY_SECONDS=0x30000000; -const PERF_DISPLAY_NOSHOW=0x40000000; -const PERF_COUNTER_HISTOGRAM_TYPE=0x80000000; -const PERF_NO_UNIQUE_ID=(-1); -const PERF_DETAIL_NOVICE=100; -const PERF_DETAIL_ADVANCED=200; -const PERF_DETAIL_EXPERT=300; -const PERF_DETAIL_WIZARD=400; -const PERF_COUNTER_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); -const PERF_COUNTER_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_QUEUELEN_TYPE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_QUEUELEN|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_BULK_COUNT=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); -const PERF_COUNTER_TEXT=(PERF_SIZE_VARIABLE_LEN|PERF_TYPE_TEXT|PERF_TEXT_UNICODE|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_RAWCOUNT=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_LARGE_RAWCOUNT=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_RAWCOUNT_HEX=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_LARGE_RAWCOUNT_HEX=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); -const PERF_SAMPLE_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DELTA_COUNTER|PERF_DELTA_BASE|PERF_DISPLAY_PERCENT); -const PERF_SAMPLE_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_NODATA=(PERF_SIZE_ZERO|PERF_DISPLAY_NOSHOW); -const PERF_COUNTER_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_SAMPLE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|1); -const PERF_AVERAGE_TIMER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_SECONDS); -const PERF_AVERAGE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|2); -const PERF_AVERAGE_BULK=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_NOSHOW); -const PERF_100NSEC_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_100NSEC_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_TIMER_TICK|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_MULTI_COUNTER|PERF_TIMER_TICK|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_MULTI_BASE=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_MULTI_COUNTER|PERF_DISPLAY_NOSHOW); -const PERF_100NSEC_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_100NSEC_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_RAW_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_PERCENT); -const PERF_RAW_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|3); -const PERF_ELAPSED_TIME=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS); - -struct PERF_DATA_BLOCK { - WCHAR[4] Signature; - DWORD LittleEndian; - DWORD Version; - DWORD Revision; - DWORD TotalByteLength; - DWORD HeaderLength; - DWORD NumObjectTypes; - LONG DefaultObject; - SYSTEMTIME SystemTime; - LARGE_INTEGER PerfTime; - LARGE_INTEGER PerfFreq; - LARGE_INTEGER PerfTime100nSec; - DWORD SystemNameLength; - DWORD SystemNameOffset; -} -alias PERF_DATA_BLOCK * PPERF_DATA_BLOCK; - -struct PERF_OBJECT_TYPE { - DWORD TotalByteLength; - DWORD DefinitionLength; - DWORD HeaderLength; - DWORD ObjectNameTitleIndex; - LPWSTR ObjectNameTitle; - DWORD ObjectHelpTitleIndex; - LPWSTR ObjectHelpTitle; - DWORD DetailLevel; - DWORD NumCounters; - LONG DefaultCounter; - LONG NumInstances; - DWORD CodePage; - LARGE_INTEGER PerfTime; - LARGE_INTEGER PerfFreq; -} -alias PERF_OBJECT_TYPE * PPERF_OBJECT_TYPE; - -struct PERF_COUNTER_DEFINITION { - DWORD ByteLength; - DWORD CounterNameTitleIndex; - LPWSTR CounterNameTitle; - DWORD CounterHelpTitleIndex; - LPWSTR CounterHelpTitle; - LONG DefaultScale; - DWORD DetailLevel; - DWORD CounterType; - DWORD CounterSize; - DWORD CounterOffset; -} -alias PERF_COUNTER_DEFINITION * PPERF_COUNTER_DEFINITION; - -struct PERF_INSTANCE_DEFINITION { - DWORD ByteLength; - DWORD ParentObjectTitleIndex; - DWORD ParentObjectInstance; - LONG UniqueID; - DWORD NameOffset; - DWORD NameLength; -} -alias PERF_INSTANCE_DEFINITION * PPERF_INSTANCE_DEFINITION; - -struct PERF_COUNTER_BLOCK { - DWORD ByteLength; -} -alias PERF_COUNTER_BLOCK * PPERF_COUNTER_BLOCK; - -extern (Windows): -alias DWORD function (LPWSTR) PM_OPEN_PROC; -alias DWORD function (LPWSTR,PVOID*,PDWORD,PDWORD) PM_COLLECT_PROC; -alias DWORD function () PM_CLOSE_PROC; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winperf.d) + */ +module core.sys.windows.winperf; + +import core.sys.windows.windef; +import core.sys.windows.winbase; // for SYSTEMTIME + +const PERF_DATA_VERSION=1; +const PERF_DATA_REVISION=1; +const PERF_NO_INSTANCES=-1; +const PERF_SIZE_DWORD=0; +const PERF_SIZE_LARGE=256; +const PERF_SIZE_ZERO=512; +const PERF_SIZE_VARIABLE_LEN=768; +const PERF_TYPE_NUMBER=0; +const PERF_TYPE_COUNTER=1024; +const PERF_TYPE_TEXT=2048; +const PERF_TYPE_ZERO=0xC00; +const PERF_NUMBER_HEX=0; +const PERF_NUMBER_DECIMAL=0x10000; +const PERF_NUMBER_DEC_1000=0x20000; +const PERF_COUNTER_VALUE=0; +const PERF_COUNTER_RATE=0x10000; +const PERF_COUNTER_FRACTION=0x20000; +const PERF_COUNTER_BASE=0x30000; +const PERF_COUNTER_ELAPSED=0x40000; +const PERF_COUNTER_QUEUELEN=0x50000; +const PERF_COUNTER_HISTOGRAM=0x60000; +const PERF_TEXT_UNICODE=0; +const PERF_TEXT_ASCII=0x10000; +const PERF_TIMER_TICK=0; +const PERF_TIMER_100NS=0x100000; +const PERF_OBJECT_TIMER=0x200000; +const PERF_DELTA_COUNTER=0x400000; +const PERF_DELTA_BASE=0x800000; +const PERF_INVERSE_COUNTER=0x1000000; +const PERF_MULTI_COUNTER=0x2000000; +const PERF_DISPLAY_NO_SUFFIX=0; +const PERF_DISPLAY_PER_SEC=0x10000000; +const PERF_DISPLAY_PERCENT=0x20000000; +const PERF_DISPLAY_SECONDS=0x30000000; +const PERF_DISPLAY_NOSHOW=0x40000000; +const PERF_COUNTER_HISTOGRAM_TYPE=0x80000000; +const PERF_NO_UNIQUE_ID=(-1); +const PERF_DETAIL_NOVICE=100; +const PERF_DETAIL_ADVANCED=200; +const PERF_DETAIL_EXPERT=300; +const PERF_DETAIL_WIZARD=400; +const PERF_COUNTER_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); +const PERF_COUNTER_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_QUEUELEN_TYPE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_QUEUELEN|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_BULK_COUNT=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); +const PERF_COUNTER_TEXT=(PERF_SIZE_VARIABLE_LEN|PERF_TYPE_TEXT|PERF_TEXT_UNICODE|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_RAWCOUNT=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_LARGE_RAWCOUNT=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_RAWCOUNT_HEX=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_LARGE_RAWCOUNT_HEX=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); +const PERF_SAMPLE_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DELTA_COUNTER|PERF_DELTA_BASE|PERF_DISPLAY_PERCENT); +const PERF_SAMPLE_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_NODATA=(PERF_SIZE_ZERO|PERF_DISPLAY_NOSHOW); +const PERF_COUNTER_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_SAMPLE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|1); +const PERF_AVERAGE_TIMER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_SECONDS); +const PERF_AVERAGE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|2); +const PERF_AVERAGE_BULK=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_NOSHOW); +const PERF_100NSEC_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_100NSEC_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_TIMER_TICK|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_MULTI_COUNTER|PERF_TIMER_TICK|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_MULTI_BASE=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_MULTI_COUNTER|PERF_DISPLAY_NOSHOW); +const PERF_100NSEC_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_100NSEC_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_RAW_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_PERCENT); +const PERF_RAW_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|3); +const PERF_ELAPSED_TIME=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS); + +struct PERF_DATA_BLOCK { + WCHAR[4] Signature; + DWORD LittleEndian; + DWORD Version; + DWORD Revision; + DWORD TotalByteLength; + DWORD HeaderLength; + DWORD NumObjectTypes; + LONG DefaultObject; + SYSTEMTIME SystemTime; + LARGE_INTEGER PerfTime; + LARGE_INTEGER PerfFreq; + LARGE_INTEGER PerfTime100nSec; + DWORD SystemNameLength; + DWORD SystemNameOffset; +} +alias PERF_DATA_BLOCK * PPERF_DATA_BLOCK; + +struct PERF_OBJECT_TYPE { + DWORD TotalByteLength; + DWORD DefinitionLength; + DWORD HeaderLength; + DWORD ObjectNameTitleIndex; + LPWSTR ObjectNameTitle; + DWORD ObjectHelpTitleIndex; + LPWSTR ObjectHelpTitle; + DWORD DetailLevel; + DWORD NumCounters; + LONG DefaultCounter; + LONG NumInstances; + DWORD CodePage; + LARGE_INTEGER PerfTime; + LARGE_INTEGER PerfFreq; +} +alias PERF_OBJECT_TYPE * PPERF_OBJECT_TYPE; + +struct PERF_COUNTER_DEFINITION { + DWORD ByteLength; + DWORD CounterNameTitleIndex; + LPWSTR CounterNameTitle; + DWORD CounterHelpTitleIndex; + LPWSTR CounterHelpTitle; + LONG DefaultScale; + DWORD DetailLevel; + DWORD CounterType; + DWORD CounterSize; + DWORD CounterOffset; +} +alias PERF_COUNTER_DEFINITION * PPERF_COUNTER_DEFINITION; + +struct PERF_INSTANCE_DEFINITION { + DWORD ByteLength; + DWORD ParentObjectTitleIndex; + DWORD ParentObjectInstance; + LONG UniqueID; + DWORD NameOffset; + DWORD NameLength; +} +alias PERF_INSTANCE_DEFINITION * PPERF_INSTANCE_DEFINITION; + +struct PERF_COUNTER_BLOCK { + DWORD ByteLength; +} +alias PERF_COUNTER_BLOCK * PPERF_COUNTER_BLOCK; + +extern (Windows): +alias DWORD function (LPWSTR) PM_OPEN_PROC; +alias DWORD function (LPWSTR,PVOID*,PDWORD,PDWORD) PM_COLLECT_PROC; +alias DWORD function () PM_CLOSE_PROC; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index f15edcc8a7..3b4baef8ae 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -1,250 +1,250 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winreg.d) - */ -module core.sys.windows.winreg; -pragma(lib, "advapi32"); - -private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; - -enum : HKEY { // for some reason, DMD errors if I don't give all the values explicitly - HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, - HKEY_CURRENT_USER = cast(HKEY) 0x80000001, - HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, - HKEY_USERS = cast(HKEY) 0x80000003, - HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, - HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, - HKEY_DYN_DATA = cast(HKEY) 0x80000006 -} - -enum : DWORD { - REG_OPTION_NON_VOLATILE, - REG_OPTION_VOLATILE -} - -enum : DWORD { - REG_CREATED_NEW_KEY = 1, - REG_OPENED_EXISTING_KEY -} - -enum : DWORD { - REG_NONE = 0, - REG_SZ, - REG_EXPAND_SZ, - REG_BINARY, - REG_DWORD_LITTLE_ENDIAN, - REG_DWORD = REG_DWORD_LITTLE_ENDIAN, - REG_DWORD_BIG_ENDIAN, - REG_LINK, - REG_MULTI_SZ, - REG_RESOURCE_LIST, - REG_FULL_RESOURCE_DESCRIPTOR, - REG_RESOURCE_REQUIREMENTS_LIST, - REG_QWORD_LITTLE_ENDIAN, - REG_QWORD = REG_QWORD_LITTLE_ENDIAN -} - -const DWORD - REG_NOTIFY_CHANGE_NAME = 1, - REG_NOTIFY_CHANGE_ATTRIBUTES = 2, - REG_NOTIFY_CHANGE_LAST_SET = 4, - REG_NOTIFY_CHANGE_SECURITY = 8; - -alias ACCESS_MASK REGSAM; - -struct VALENTA { - LPSTR ve_valuename; - DWORD ve_valuelen; - DWORD ve_valueptr; - DWORD ve_type; -} -alias VALENTA* PVALENTA; - -struct VALENTW { - LPWSTR ve_valuename; - DWORD ve_valuelen; - DWORD ve_valueptr; - DWORD ve_type; -} -alias VALENTW* PVALENTW; - -// RRF - Registry Routine Flags (for RegGetValue) -static if (_WIN32_WINNT >= 0x600) { - enum : DWORD { - RRF_RT_REG_NONE = 0x00000001, - RRF_RT_REG_SZ = 0x00000002, - RRF_RT_REG_EXPAND_SZ = 0x00000004, - RRF_RT_REG_BINARY = 0x00000008, - RRF_RT_REG_DWORD = 0x00000010, - RRF_RT_REG_MULTI_SZ = 0x00000020, - RRF_RT_REG_QWORD = 0x00000040, - RRF_RT_DWORD = RRF_RT_REG_BINARY | RRF_RT_REG_DWORD, - RRF_RT_QWORD = RRF_RT_REG_BINARY | RRF_RT_REG_QWORD, - RRF_RT_ANY = 0x0000FFFF, - RRF_NOEXPAND = 0x10000000, - RRF_ZEROONFAILURE = 0x20000000 - } -} - -extern (Windows) { - LONG RegCloseKey(HKEY); - LONG RegConnectRegistryA(LPCSTR, HKEY, PHKEY); - LONG RegConnectRegistryW(LPCWSTR, HKEY, PHKEY); - LONG RegCreateKeyExA(HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, - LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); - LONG RegCreateKeyExW(HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, - LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); - LONG RegDeleteKeyA(HKEY, LPCSTR); - LONG RegDeleteKeyW(HKEY, LPCWSTR); - LONG RegDeleteValueA(HKEY, LPCSTR); - LONG RegDeleteValueW(HKEY, LPCWSTR); - LONG RegEnumKeyExA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, - PFILETIME); - LONG RegEnumKeyExW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, - PFILETIME); - LONG RegEnumValueA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, - PDWORD); - LONG RegEnumValueW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, - PDWORD); - LONG RegFlushKey(HKEY); - LONG RegLoadKeyA(HKEY, LPCSTR, LPCSTR); - LONG RegLoadKeyW(HKEY, LPCWSTR, LPCWSTR); - LONG RegOpenKeyExA(HKEY, LPCSTR, DWORD, REGSAM, PHKEY); - LONG RegOpenKeyExW(HKEY, LPCWSTR, DWORD, REGSAM, PHKEY); - LONG RegQueryInfoKeyA(HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, - PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); - LONG RegQueryInfoKeyW(HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, - PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); - LONG RegQueryMultipleValuesA(HKEY, PVALENTA, DWORD, LPSTR, LPDWORD); - LONG RegQueryMultipleValuesW(HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD); - LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); - LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); - LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR); - LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR); - LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); - LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); - LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, const(BYTE)*, DWORD); - LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, const(BYTE)*, DWORD); - LONG RegUnLoadKeyA(HKEY, LPCSTR); - LONG RegUnLoadKeyW(HKEY, LPCWSTR); - LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL); - - BOOL AbortSystemShutdownA(LPCSTR); - BOOL AbortSystemShutdownW(LPCWSTR); - BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL); - BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL); - LONG RegGetKeySecurity(HKEY, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, PDWORD); - LONG RegRestoreKeyA(HKEY, LPCSTR, DWORD); - LONG RegRestoreKeyW(HKEY, LPCWSTR, DWORD); - LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - - static if (_WIN32_WINNT >= 0x500) { - LONG RegDisablePredefinedCache(); - LONG RegOpenCurrentUser(REGSAM, PHKEY); - LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY); - } - - static if (_WIN32_WINNT >= 0x501) { - LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD); - LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD); - } - - static if (_WIN32_WINNT >= 0x600) { - LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, - DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); - LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, - DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); - } - - deprecated { - LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY); - LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY); - LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD); - LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD); - LONG RegOpenKeyA(HKEY, LPCSTR, PHKEY); - LONG RegOpenKeyW(HKEY, LPCWSTR, PHKEY); - LONG RegQueryValueA(HKEY, LPCSTR, LPSTR, PLONG); - LONG RegQueryValueW(HKEY, LPCWSTR, LPWSTR, PLONG); - LONG RegSetValueA(HKEY, LPCSTR, DWORD, LPCSTR, DWORD); - LONG RegSetValueW(HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); - } -} - -version (Unicode) { - alias VALENTW VALENT; - alias RegConnectRegistryW RegConnectRegistry; - alias RegCreateKeyExW RegCreateKeyEx; - alias RegDeleteKeyW RegDeleteKey; - alias RegDeleteValueW RegDeleteValue; - alias RegEnumKeyExW RegEnumKeyEx; - alias RegEnumValueW RegEnumValue; - alias RegLoadKeyW RegLoadKey; - alias RegOpenKeyExW RegOpenKeyEx; - alias RegQueryInfoKeyW RegQueryInfoKey; - alias RegQueryMultipleValuesW RegQueryMultipleValues; - alias RegQueryValueExW RegQueryValueEx; - alias RegReplaceKeyW RegReplaceKey; - alias RegSaveKeyW RegSaveKey; - alias RegSetValueExW RegSetValueEx; - alias RegUnLoadKeyW RegUnLoadKey; - - alias AbortSystemShutdownW AbortSystemShutdown; - alias InitiateSystemShutdownW InitiateSystemShutdown; - alias RegRestoreKeyW RegRestoreKey; - static if (_WIN32_WINNT >= 0x501) { - alias RegSaveKeyExA RegSaveKeyEx; - } - static if (_WIN32_WINNT >= 0x600) { - alias RegGetValueW RegGetValue; - } - deprecated { - alias RegCreateKeyW RegCreateKey; - alias RegEnumKeyW RegEnumKey; - alias RegOpenKeyW RegOpenKey; - alias RegQueryValueW RegQueryValue; - alias RegSetValueW RegSetValue; - } -} else { - alias VALENTA VALENT; - alias RegConnectRegistryA RegConnectRegistry; - alias RegCreateKeyExA RegCreateKeyEx; - alias RegDeleteKeyA RegDeleteKey; - alias RegDeleteValueA RegDeleteValue; - alias RegEnumKeyExA RegEnumKeyEx; - alias RegEnumValueA RegEnumValue; - alias RegLoadKeyA RegLoadKey; - alias RegOpenKeyExA RegOpenKeyEx; - alias RegQueryInfoKeyA RegQueryInfoKey; - alias RegQueryMultipleValuesA RegQueryMultipleValues; - alias RegQueryValueExA RegQueryValueEx; - alias RegReplaceKeyA RegReplaceKey; - alias RegSaveKeyA RegSaveKey; - alias RegSetValueExA RegSetValueEx; - alias RegUnLoadKeyA RegUnLoadKey; - alias AbortSystemShutdownA AbortSystemShutdown; - alias InitiateSystemShutdownA InitiateSystemShutdown; - alias RegRestoreKeyW RegRestoreKey; - static if (_WIN32_WINNT >= 0x501) { - alias RegSaveKeyExA RegSaveKeyEx; - } - static if (_WIN32_WINNT >= 0x600) { - alias RegGetValueA RegGetValue; - } - deprecated { - alias RegCreateKeyA RegCreateKey; - alias RegEnumKeyA RegEnumKey; - alias RegOpenKeyA RegOpenKey; - alias RegQueryValueA RegQueryValue; - alias RegSetValueA RegSetValue; - } -} - -alias VALENT* PVALENT; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winreg.d) + */ +module core.sys.windows.winreg; +pragma(lib, "advapi32"); + +private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; + +enum : HKEY { // for some reason, DMD errors if I don't give all the values explicitly + HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, + HKEY_CURRENT_USER = cast(HKEY) 0x80000001, + HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, + HKEY_USERS = cast(HKEY) 0x80000003, + HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, + HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, + HKEY_DYN_DATA = cast(HKEY) 0x80000006 +} + +enum : DWORD { + REG_OPTION_NON_VOLATILE, + REG_OPTION_VOLATILE +} + +enum : DWORD { + REG_CREATED_NEW_KEY = 1, + REG_OPENED_EXISTING_KEY +} + +enum : DWORD { + REG_NONE = 0, + REG_SZ, + REG_EXPAND_SZ, + REG_BINARY, + REG_DWORD_LITTLE_ENDIAN, + REG_DWORD = REG_DWORD_LITTLE_ENDIAN, + REG_DWORD_BIG_ENDIAN, + REG_LINK, + REG_MULTI_SZ, + REG_RESOURCE_LIST, + REG_FULL_RESOURCE_DESCRIPTOR, + REG_RESOURCE_REQUIREMENTS_LIST, + REG_QWORD_LITTLE_ENDIAN, + REG_QWORD = REG_QWORD_LITTLE_ENDIAN +} + +const DWORD + REG_NOTIFY_CHANGE_NAME = 1, + REG_NOTIFY_CHANGE_ATTRIBUTES = 2, + REG_NOTIFY_CHANGE_LAST_SET = 4, + REG_NOTIFY_CHANGE_SECURITY = 8; + +alias ACCESS_MASK REGSAM; + +struct VALENTA { + LPSTR ve_valuename; + DWORD ve_valuelen; + DWORD ve_valueptr; + DWORD ve_type; +} +alias VALENTA* PVALENTA; + +struct VALENTW { + LPWSTR ve_valuename; + DWORD ve_valuelen; + DWORD ve_valueptr; + DWORD ve_type; +} +alias VALENTW* PVALENTW; + +// RRF - Registry Routine Flags (for RegGetValue) +static if (_WIN32_WINNT >= 0x600) { + enum : DWORD { + RRF_RT_REG_NONE = 0x00000001, + RRF_RT_REG_SZ = 0x00000002, + RRF_RT_REG_EXPAND_SZ = 0x00000004, + RRF_RT_REG_BINARY = 0x00000008, + RRF_RT_REG_DWORD = 0x00000010, + RRF_RT_REG_MULTI_SZ = 0x00000020, + RRF_RT_REG_QWORD = 0x00000040, + RRF_RT_DWORD = RRF_RT_REG_BINARY | RRF_RT_REG_DWORD, + RRF_RT_QWORD = RRF_RT_REG_BINARY | RRF_RT_REG_QWORD, + RRF_RT_ANY = 0x0000FFFF, + RRF_NOEXPAND = 0x10000000, + RRF_ZEROONFAILURE = 0x20000000 + } +} + +extern (Windows) { + LONG RegCloseKey(HKEY); + LONG RegConnectRegistryA(LPCSTR, HKEY, PHKEY); + LONG RegConnectRegistryW(LPCWSTR, HKEY, PHKEY); + LONG RegCreateKeyExA(HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, + LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); + LONG RegCreateKeyExW(HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, + LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); + LONG RegDeleteKeyA(HKEY, LPCSTR); + LONG RegDeleteKeyW(HKEY, LPCWSTR); + LONG RegDeleteValueA(HKEY, LPCSTR); + LONG RegDeleteValueW(HKEY, LPCWSTR); + LONG RegEnumKeyExA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, + PFILETIME); + LONG RegEnumKeyExW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, + PFILETIME); + LONG RegEnumValueA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, + PDWORD); + LONG RegEnumValueW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, + PDWORD); + LONG RegFlushKey(HKEY); + LONG RegLoadKeyA(HKEY, LPCSTR, LPCSTR); + LONG RegLoadKeyW(HKEY, LPCWSTR, LPCWSTR); + LONG RegOpenKeyExA(HKEY, LPCSTR, DWORD, REGSAM, PHKEY); + LONG RegOpenKeyExW(HKEY, LPCWSTR, DWORD, REGSAM, PHKEY); + LONG RegQueryInfoKeyA(HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, + PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); + LONG RegQueryInfoKeyW(HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, + PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); + LONG RegQueryMultipleValuesA(HKEY, PVALENTA, DWORD, LPSTR, LPDWORD); + LONG RegQueryMultipleValuesW(HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD); + LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); + LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); + LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR); + LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR); + LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); + LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); + LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, const(BYTE)*, DWORD); + LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, const(BYTE)*, DWORD); + LONG RegUnLoadKeyA(HKEY, LPCSTR); + LONG RegUnLoadKeyW(HKEY, LPCWSTR); + LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL); + + BOOL AbortSystemShutdownA(LPCSTR); + BOOL AbortSystemShutdownW(LPCWSTR); + BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL); + BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL); + LONG RegGetKeySecurity(HKEY, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, PDWORD); + LONG RegRestoreKeyA(HKEY, LPCSTR, DWORD); + LONG RegRestoreKeyW(HKEY, LPCWSTR, DWORD); + LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + + static if (_WIN32_WINNT >= 0x500) { + LONG RegDisablePredefinedCache(); + LONG RegOpenCurrentUser(REGSAM, PHKEY); + LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY); + } + + static if (_WIN32_WINNT >= 0x501) { + LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD); + LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD); + } + + static if (_WIN32_WINNT >= 0x600) { + LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, + DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); + LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, + DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); + } + + deprecated { + LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY); + LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY); + LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD); + LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD); + LONG RegOpenKeyA(HKEY, LPCSTR, PHKEY); + LONG RegOpenKeyW(HKEY, LPCWSTR, PHKEY); + LONG RegQueryValueA(HKEY, LPCSTR, LPSTR, PLONG); + LONG RegQueryValueW(HKEY, LPCWSTR, LPWSTR, PLONG); + LONG RegSetValueA(HKEY, LPCSTR, DWORD, LPCSTR, DWORD); + LONG RegSetValueW(HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); + } +} + +version (Unicode) { + alias VALENTW VALENT; + alias RegConnectRegistryW RegConnectRegistry; + alias RegCreateKeyExW RegCreateKeyEx; + alias RegDeleteKeyW RegDeleteKey; + alias RegDeleteValueW RegDeleteValue; + alias RegEnumKeyExW RegEnumKeyEx; + alias RegEnumValueW RegEnumValue; + alias RegLoadKeyW RegLoadKey; + alias RegOpenKeyExW RegOpenKeyEx; + alias RegQueryInfoKeyW RegQueryInfoKey; + alias RegQueryMultipleValuesW RegQueryMultipleValues; + alias RegQueryValueExW RegQueryValueEx; + alias RegReplaceKeyW RegReplaceKey; + alias RegSaveKeyW RegSaveKey; + alias RegSetValueExW RegSetValueEx; + alias RegUnLoadKeyW RegUnLoadKey; + + alias AbortSystemShutdownW AbortSystemShutdown; + alias InitiateSystemShutdownW InitiateSystemShutdown; + alias RegRestoreKeyW RegRestoreKey; + static if (_WIN32_WINNT >= 0x501) { + alias RegSaveKeyExA RegSaveKeyEx; + } + static if (_WIN32_WINNT >= 0x600) { + alias RegGetValueW RegGetValue; + } + deprecated { + alias RegCreateKeyW RegCreateKey; + alias RegEnumKeyW RegEnumKey; + alias RegOpenKeyW RegOpenKey; + alias RegQueryValueW RegQueryValue; + alias RegSetValueW RegSetValue; + } +} else { + alias VALENTA VALENT; + alias RegConnectRegistryA RegConnectRegistry; + alias RegCreateKeyExA RegCreateKeyEx; + alias RegDeleteKeyA RegDeleteKey; + alias RegDeleteValueA RegDeleteValue; + alias RegEnumKeyExA RegEnumKeyEx; + alias RegEnumValueA RegEnumValue; + alias RegLoadKeyA RegLoadKey; + alias RegOpenKeyExA RegOpenKeyEx; + alias RegQueryInfoKeyA RegQueryInfoKey; + alias RegQueryMultipleValuesA RegQueryMultipleValues; + alias RegQueryValueExA RegQueryValueEx; + alias RegReplaceKeyA RegReplaceKey; + alias RegSaveKeyA RegSaveKey; + alias RegSetValueExA RegSetValueEx; + alias RegUnLoadKeyA RegUnLoadKey; + alias AbortSystemShutdownA AbortSystemShutdown; + alias InitiateSystemShutdownA InitiateSystemShutdown; + alias RegRestoreKeyW RegRestoreKey; + static if (_WIN32_WINNT >= 0x501) { + alias RegSaveKeyExA RegSaveKeyEx; + } + static if (_WIN32_WINNT >= 0x600) { + alias RegGetValueA RegGetValue; + } + deprecated { + alias RegCreateKeyA RegCreateKey; + alias RegEnumKeyA RegEnumKey; + alias RegOpenKeyA RegOpenKey; + alias RegQueryValueA RegQueryValue; + alias RegSetValueA RegSetValue; + } +} + +alias VALENT* PVALENT; diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d index a517a482b5..e00a9844a7 100644 --- a/src/core/sys/windows/winspool.d +++ b/src/core/sys/windows/winspool.d @@ -1,960 +1,960 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winspool.d) - */ -module core.sys.windows.winspool; -pragma(lib, "winspool"); - -private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.wingdi; -private import core.sys.windows.winbase; // for SYSTEMTIME - -// FIXME: clean up Windows version support - -const DI_CHANNEL=1; -const DI_CHANNEL_WRITE=2; -const DI_READ_SPOOL_JOB=3; - -const FORM_BUILTIN=1; - -const JOB_CONTROL_PAUSE=1; -const JOB_CONTROL_RESUME=2; -const JOB_CONTROL_CANCEL=3; -const JOB_CONTROL_RESTART=4; -const JOB_CONTROL_DELETE=5; -const JOB_STATUS_PAUSED=1; -const JOB_STATUS_ERROR=2; -const JOB_STATUS_DELETING=4; -const JOB_STATUS_SPOOLING=8; -const JOB_STATUS_PRINTING=16; -const JOB_STATUS_OFFLINE=32; -const JOB_STATUS_PAPEROUT=0x40; -const JOB_STATUS_PRINTED=0x80; -const JOB_STATUS_DELETED=0x100; -const JOB_STATUS_BLOCKED_DEVQ=0x200; -const JOB_STATUS_USER_INTERVENTION=0x400; - -const JOB_POSITION_UNSPECIFIED=0; - -const JOB_NOTIFY_TYPE=1; - -const JOB_NOTIFY_FIELD_PRINTER_NAME=0; -const JOB_NOTIFY_FIELD_MACHINE_NAME=1; -const JOB_NOTIFY_FIELD_PORT_NAME=2; -const JOB_NOTIFY_FIELD_USER_NAME=3; -const JOB_NOTIFY_FIELD_NOTIFY_NAME=4; -const JOB_NOTIFY_FIELD_DATATYPE=5; -const JOB_NOTIFY_FIELD_PRINT_PROCESSOR=6; -const JOB_NOTIFY_FIELD_PARAMETERS=7; -const JOB_NOTIFY_FIELD_DRIVER_NAME=8; -const JOB_NOTIFY_FIELD_DEVMODE=9; -const JOB_NOTIFY_FIELD_STATUS=10; -const JOB_NOTIFY_FIELD_STATUS_STRING=11; -const JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; -const JOB_NOTIFY_FIELD_DOCUMENT=13; -const JOB_NOTIFY_FIELD_PRIORITY=14; -const JOB_NOTIFY_FIELD_POSITION=15; -const JOB_NOTIFY_FIELD_SUBMITTED=16; -const JOB_NOTIFY_FIELD_START_TIME=17; -const JOB_NOTIFY_FIELD_UNTIL_TIME=18; -const JOB_NOTIFY_FIELD_TIME=19; -const JOB_NOTIFY_FIELD_TOTAL_PAGES=20; -const JOB_NOTIFY_FIELD_PAGES_PRINTED=21; -const JOB_NOTIFY_FIELD_TOTAL_BYTES=22; -const JOB_NOTIFY_FIELD_BYTES_PRINTED=23; - -const JOB_ACCESS_ADMINISTER = 16; -const JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER; -const JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER; -const JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER; -const JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER; - -const PRINTER_NOTIFY_OPTIONS_REFRESH=1; -const PRINTER_ACCESS_ADMINISTER=4; -const PRINTER_ACCESS_USE=8; - -const PRINTER_ERROR_INFORMATION=0x80000000; -const PRINTER_ERROR_WARNING=0x40000000; -const PRINTER_ERROR_SEVERE=0x20000000; -const PRINTER_ERROR_OUTOFPAPER=1; -const PRINTER_ERROR_JAM=2; -const PRINTER_ERROR_OUTOFTONER=4; - -const PRINTER_CONTROL_PAUSE=1; -const PRINTER_CONTROL_RESUME=2; -const PRINTER_CONTROL_PURGE=3; -const PRINTER_CONTROL_SET_STATUS=4; - -const PRINTER_STATUS_PAUSED = 1; -const PRINTER_STATUS_ERROR = 2; -const PRINTER_STATUS_PENDING_DELETION = 4; -const PRINTER_STATUS_PAPER_JAM = 8; -const PRINTER_STATUS_PAPER_OUT = 0x10; -const PRINTER_STATUS_MANUAL_FEED = 0x20; -const PRINTER_STATUS_PAPER_PROBLEM = 0x40; -const PRINTER_STATUS_OFFLINE = 0x80; -const PRINTER_STATUS_IO_ACTIVE = 0x100; -const PRINTER_STATUS_BUSY = 0x200; -const PRINTER_STATUS_PRINTING = 0x400; -const PRINTER_STATUS_OUTPUT_BIN_FULL = 0x800; -const PRINTER_STATUS_NOT_AVAILABLE = 0x1000; -const PRINTER_STATUS_WAITING = 0x2000; -const PRINTER_STATUS_PROCESSING = 0x4000; -const PRINTER_STATUS_INITIALIZING = 0x8000; -const PRINTER_STATUS_WARMING_UP = 0x10000; -const PRINTER_STATUS_TONER_LOW = 0x20000; -const PRINTER_STATUS_NO_TONER = 0x40000; -const PRINTER_STATUS_PAGE_PUNT = 0x80000; -const PRINTER_STATUS_USER_INTERVENTION = 0x100000; -const PRINTER_STATUS_OUT_OF_MEMORY = 0x200000; -const PRINTER_STATUS_DOOR_OPEN = 0x400000; -const PRINTER_STATUS_SERVER_UNKNOWN = 0x800000; -const PRINTER_STATUS_POWER_SAVE = 0x1000000; - -const PRINTER_ATTRIBUTE_QUEUED=1; -const PRINTER_ATTRIBUTE_DIRECT=2; -const PRINTER_ATTRIBUTE_DEFAULT=4; -const PRINTER_ATTRIBUTE_SHARED=8; -const PRINTER_ATTRIBUTE_NETWORK=0x10; -const PRINTER_ATTRIBUTE_HIDDEN=0x20; -const PRINTER_ATTRIBUTE_LOCAL=0x40; -const PRINTER_ATTRIBUTE_ENABLE_DEVQ=0x80; -const PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS=0x100; -const PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST=0x200; -const PRINTER_ATTRIBUTE_WORK_OFFLINE=0x400; -const PRINTER_ATTRIBUTE_ENABLE_BIDI=0x800; -const PRINTER_ATTRIBUTE_RAW_ONLY=0x1000; -const PRINTER_ATTRIBUTE_PUBLISHED=0x2000; - -const PRINTER_ENUM_DEFAULT=1; -const PRINTER_ENUM_LOCAL=2; -const PRINTER_ENUM_CONNECTIONS=4; -const PRINTER_ENUM_FAVORITE=4; -const PRINTER_ENUM_NAME=8; -const PRINTER_ENUM_REMOTE=16; -const PRINTER_ENUM_SHARED=32; -const PRINTER_ENUM_NETWORK=0x40; -const PRINTER_ENUM_EXPAND=0x4000; -const PRINTER_ENUM_CONTAINER=0x8000; -const PRINTER_ENUM_ICONMASK=0xff0000; -const PRINTER_ENUM_ICON1=0x10000; -const PRINTER_ENUM_ICON2=0x20000; -const PRINTER_ENUM_ICON3=0x40000; -const PRINTER_ENUM_ICON4=0x80000; -const PRINTER_ENUM_ICON5=0x100000; -const PRINTER_ENUM_ICON6=0x200000; -const PRINTER_ENUM_ICON7=0x400000; -const PRINTER_ENUM_ICON8=0x800000; - -const PRINTER_NOTIFY_TYPE=0; - -const PRINTER_NOTIFY_FIELD_SERVER_NAME=0; -const PRINTER_NOTIFY_FIELD_PRINTER_NAME=1; -const PRINTER_NOTIFY_FIELD_SHARE_NAME=2; -const PRINTER_NOTIFY_FIELD_PORT_NAME=3; -const PRINTER_NOTIFY_FIELD_DRIVER_NAME=4; -const PRINTER_NOTIFY_FIELD_COMMENT=5; -const PRINTER_NOTIFY_FIELD_LOCATION=6; -const PRINTER_NOTIFY_FIELD_DEVMODE=7; -const PRINTER_NOTIFY_FIELD_SEPFILE=8; -const PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR=9; -const PRINTER_NOTIFY_FIELD_PARAMETERS=10; -const PRINTER_NOTIFY_FIELD_DATATYPE=11; -const PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; -const PRINTER_NOTIFY_FIELD_ATTRIBUTES=13; -const PRINTER_NOTIFY_FIELD_PRIORITY=14; -const PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY=15; -const PRINTER_NOTIFY_FIELD_START_TIME=16; -const PRINTER_NOTIFY_FIELD_UNTIL_TIME=17; -const PRINTER_NOTIFY_FIELD_STATUS=18; -const PRINTER_NOTIFY_FIELD_STATUS_STRING=19; -const PRINTER_NOTIFY_FIELD_CJOBS=20; -const PRINTER_NOTIFY_FIELD_AVERAGE_PPM=21; -const PRINTER_NOTIFY_FIELD_TOTAL_PAGES=22; -const PRINTER_NOTIFY_FIELD_PAGES_PRINTED=23; -const PRINTER_NOTIFY_FIELD_TOTAL_BYTES=24; -const PRINTER_NOTIFY_FIELD_BYTES_PRINTED=25; - -const PRINTER_CHANGE_ADD_PRINTER=1; -const PRINTER_CHANGE_SET_PRINTER=2; -const PRINTER_CHANGE_DELETE_PRINTER=4; -const PRINTER_CHANGE_FAILED_CONNECTION_PRINTER=8; -const PRINTER_CHANGE_PRINTER=0xFF; -const PRINTER_CHANGE_ADD_JOB=0x100; -const PRINTER_CHANGE_SET_JOB=0x200; -const PRINTER_CHANGE_DELETE_JOB=0x400; -const PRINTER_CHANGE_WRITE_JOB=0x800; -const PRINTER_CHANGE_JOB=0xFF00; -const PRINTER_CHANGE_ADD_FORM=0x10000; -const PRINTER_CHANGE_SET_FORM=0x20000; -const PRINTER_CHANGE_DELETE_FORM=0x40000; -const PRINTER_CHANGE_FORM=0x70000; -const PRINTER_CHANGE_ADD_PORT=0x100000; -const PRINTER_CHANGE_CONFIGURE_PORT=0x200000; -const PRINTER_CHANGE_DELETE_PORT=0x400000; -const PRINTER_CHANGE_PORT=0x700000; -const PRINTER_CHANGE_ADD_PRINT_PROCESSOR=0x1000000; -const PRINTER_CHANGE_DELETE_PRINT_PROCESSOR=0x4000000; -const PRINTER_CHANGE_PRINT_PROCESSOR=0x7000000; -const PRINTER_CHANGE_ADD_PRINTER_DRIVER=0x10000000; -const PRINTER_CHANGE_SET_PRINTER_DRIVER=0x20000000; -const PRINTER_CHANGE_DELETE_PRINTER_DRIVER=0x40000000; -const PRINTER_CHANGE_PRINTER_DRIVER=0x70000000; -const PRINTER_CHANGE_TIMEOUT=0x80000000; -const PRINTER_CHANGE_ALL=0x7777FFFF; - -const PRINTER_NOTIFY_INFO_DISCARDED=1; -const PRINTER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE); -const PRINTER_READ=(STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE); -const PRINTER_WRITE=(STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE); -const PRINTER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE); -const NO_PRIORITY=0; -const MAX_PRIORITY=99; -const MIN_PRIORITY=1; -const DEF_PRIORITY=1; -const PORT_TYPE_WRITE=1; -const PORT_TYPE_READ=2; -const PORT_TYPE_REDIRECTED=4; -const PORT_TYPE_NET_ATTACHED=8; -const SERVER_ACCESS_ADMINISTER=1; -const SERVER_ACCESS_ENUMERATE=2; - -const SERVER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); -const SERVER_READ=(STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE); -const SERVER_WRITE=(STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); -const SERVER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE); - -const PORT_STATUS_TYPE_ERROR=1; -const PORT_STATUS_TYPE_WARNING=2; -const PORT_STATUS_TYPE_INFO=3; - -const PORT_STATUS_OFFLINE=1; -const PORT_STATUS_PAPER_JAM=2; -const PORT_STATUS_PAPER_OUT=3; -const PORT_STATUS_OUTPUT_BIN_FULL=4; -const PORT_STATUS_PAPER_PROBLEM=5; -const PORT_STATUS_NO_TONER=6; -const PORT_STATUS_DOOR_OPEN=7; -const PORT_STATUS_USER_INTERVENTION=8; -const PORT_STATUS_OUT_OF_MEMORY=9; -const PORT_STATUS_TONER_LOW=10; -const PORT_STATUS_WARMING_UP=11; -const PORT_STATUS_POWER_SAVE=12; - -struct ADDJOB_INFO_1A { - LPSTR Path; - DWORD JobId; -} -alias ADDJOB_INFO_1A* PADDJOB_INFO_1A, LPADDJOB_INFO_1A; - -struct ADDJOB_INFO_1W { - LPWSTR Path; - DWORD JobId; -} -alias ADDJOB_INFO_1W* PADDJOB_INFO_1W, LPADDJOB_INFO_1W; - -struct DATATYPES_INFO_1A { - LPSTR pName; -} -alias DATATYPES_INFO_1A* PDATATYPES_INFO_1A, LPDATATYPES_INFO_1A; - -struct DATATYPES_INFO_1W { - LPWSTR pName; -} -alias DATATYPES_INFO_1W* PDATATYPES_INFO_1W, LPDATATYPES_INFO_1W; - -struct JOB_INFO_1A { - DWORD JobId; - LPSTR pPrinterName; - LPSTR pMachineName; - LPSTR pUserName; - LPSTR pDocument; - LPSTR pDatatype; - LPSTR pStatus; - DWORD Status; - DWORD Priority; - DWORD Position; - DWORD TotalPages; - DWORD PagesPrinted; - SYSTEMTIME Submitted; -} -alias JOB_INFO_1A* PJOB_INFO_1A, LPJOB_INFO_1A; - -struct JOB_INFO_1W { - DWORD JobId; - LPWSTR pPrinterName; - LPWSTR pMachineName; - LPWSTR pUserName; - LPWSTR pDocument; - LPWSTR pDatatype; - LPWSTR pStatus; - DWORD Status; - DWORD Priority; - DWORD Position; - DWORD TotalPages; - DWORD PagesPrinted; - SYSTEMTIME Submitted; -} -alias JOB_INFO_1W* PJOB_INFO_1W, LPJOB_INFO_1W; - -struct JOB_INFO_2A { - DWORD JobId; - LPSTR pPrinterName; - LPSTR pMachineName; - LPSTR pUserName; - LPSTR pDocument; - LPSTR pNotifyName; - LPSTR pDatatype; - LPSTR pPrintProcessor; - LPSTR pParameters; - LPSTR pDriverName; - LPDEVMODEA pDevMode; - LPSTR pStatus; - PSECURITY_DESCRIPTOR pSecurityDescriptor; - DWORD Status; - DWORD Priority; - DWORD Position; - DWORD StartTime; - DWORD UntilTime; - DWORD TotalPages; - DWORD Size; - SYSTEMTIME Submitted; - DWORD Time; - DWORD PagesPrinted; -} -alias JOB_INFO_2A* PJOB_INFO_2A, LPJOB_INFO_2A; - -struct JOB_INFO_2W { - DWORD JobId; - LPWSTR pPrinterName; - LPWSTR pMachineName; - LPWSTR pUserName; - LPWSTR pDocument; - LPWSTR pNotifyName; - LPWSTR pDatatype; - LPWSTR pPrintProcessor; - LPWSTR pParameters; - LPWSTR pDriverName; - LPDEVMODEW pDevMode; - LPWSTR pStatus; - PSECURITY_DESCRIPTOR pSecurityDescriptor; - DWORD Status; - DWORD Priority; - DWORD Position; - DWORD StartTime; - DWORD UntilTime; - DWORD TotalPages; - DWORD Size; - SYSTEMTIME Submitted; - DWORD Time; - DWORD PagesPrinted; -} -alias JOB_INFO_2W* PJOB_INFO_2W, LPJOB_INFO_2W; - -struct DOC_INFO_1A { - LPSTR pDocName; - LPSTR pOutputFile; - LPSTR pDatatype; -} -alias DOC_INFO_1A* PDOC_INFO_1A, LPDOC_INFO_1A; - -struct DOC_INFO_1W { - LPWSTR pDocName; - LPWSTR pOutputFile; - LPWSTR pDatatype; -} -alias DOC_INFO_1W* PDOC_INFO_1W, LPDOC_INFO_1W; - -struct DOC_INFO_2A { - LPSTR pDocName; - LPSTR pOutputFile; - LPSTR pDatatype; - DWORD dwMode; - DWORD JobId; -} -alias DOC_INFO_2A* PDOC_INFO_2A, LPDOC_INFO_2A; - -struct DOC_INFO_2W { - LPWSTR pDocName; - LPWSTR pOutputFile; - LPWSTR pDatatype; - DWORD dwMode; - DWORD JobId; -} -alias DOC_INFO_2W* PDOC_INFO_2W, LPDOC_INFO_2W; - -struct DRIVER_INFO_1A { - LPSTR pName; -} -alias DRIVER_INFO_1A* PDRIVER_INFO_1A, LPDRIVER_INFO_1A; - -struct DRIVER_INFO_1W { - LPWSTR pName; -} -alias DRIVER_INFO_1W* PDRIVER_INFO_1W, LPDRIVER_INFO_1W; - -struct DRIVER_INFO_2A { - DWORD cVersion; - LPSTR pName; - LPSTR pEnvironment; - LPSTR pDriverPath; - LPSTR pDataFile; - LPSTR pConfigFile; -} -alias DRIVER_INFO_2A* PDRIVER_INFO_2A, LPDRIVER_INFO_2A; - -struct DRIVER_INFO_2W { - DWORD cVersion; - LPWSTR pName; - LPWSTR pEnvironment; - LPWSTR pDriverPath; - LPWSTR pDataFile; - LPWSTR pConfigFile; -} -alias DRIVER_INFO_2W* PDRIVER_INFO_2W, LPDRIVER_INFO_2W; - -struct DRIVER_INFO_3A { - DWORD cVersion; - LPSTR pName; - LPSTR pEnvironment; - LPSTR pDriverPath; - LPSTR pDataFile; - LPSTR pConfigFile; - LPSTR pHelpFile; - LPSTR pDependentFiles; - LPSTR pMonitorName; - LPSTR pDefaultDataType; -} -alias DRIVER_INFO_3A* PDRIVER_INFO_3A, LPDRIVER_INFO_3A; - -struct DRIVER_INFO_3W { - DWORD cVersion; - LPWSTR pName; - LPWSTR pEnvironment; - LPWSTR pDriverPath; - LPWSTR pDataFile; - LPWSTR pConfigFile; - LPWSTR pHelpFile; - LPWSTR pDependentFiles; - LPWSTR pMonitorName; - LPWSTR pDefaultDataType; -} -alias DRIVER_INFO_3W* PDRIVER_INFO_3W, LPDRIVER_INFO_3W; - -struct MONITOR_INFO_1A { - LPSTR pName; -} -alias MONITOR_INFO_1A* PMONITOR_INFO_1A, LPMONITOR_INFO_1A; - -struct MONITOR_INFO_1W { - LPWSTR pName; -} -alias MONITOR_INFO_1W* PMONITOR_INFO_1W, LPMONITOR_INFO_1W; - -struct PORT_INFO_1A { - LPSTR pName; -} -alias PORT_INFO_1A* PPORT_INFO_1A, LPPORT_INFO_1A; - -struct PORT_INFO_1W { - LPWSTR pName; -} -alias PORT_INFO_1W* PPORT_INFO_1W, LPPORT_INFO_1W; - -struct MONITOR_INFO_2A { - LPSTR pName; - LPSTR pEnvironment; - LPSTR pDLLName; -} -alias MONITOR_INFO_2A* PMONITOR_INFO_2A, LPMONITOR_INFO_2A; - -struct MONITOR_INFO_2W { - LPWSTR pName; - LPWSTR pEnvironment; - LPWSTR pDLLName; -} -alias MONITOR_INFO_2W* PMONITOR_INFO_2W, LPMONITOR_INFO_2W; - -struct PORT_INFO_2A { - LPSTR pPortName; - LPSTR pMonitorName; - LPSTR pDescription; - DWORD fPortType; - DWORD Reserved; -} -alias PORT_INFO_2A* PPORT_INFO_2A, LPPORT_INFO_2A; - -struct PORT_INFO_2W { - LPWSTR pPortName; - LPWSTR pMonitorName; - LPWSTR pDescription; - DWORD fPortType; - DWORD Reserved; -} -alias PORT_INFO_2W* PPORT_INFO_2W, LPPORT_INFO_2W; - -struct PORT_INFO_3A { - DWORD dwStatus; - LPSTR pszStatus; - DWORD dwSeverity; -} -alias PORT_INFO_3A* PPORT_INFO_3A, LPPORT_INFO_3A; - -struct PORT_INFO_3W { - DWORD dwStatus; - LPWSTR pszStatus; - DWORD dwSeverity; -} -alias PORT_INFO_3W* PPORT_INFO_3W, LPPORT_INFO_3W; - -struct PRINTER_INFO_1A { - DWORD Flags; - LPSTR pDescription; - LPSTR pName; - LPSTR pComment; -} -alias PRINTER_INFO_1A* PPRINTER_INFO_1A, LPPRINTER_INFO_1A; - -struct PRINTER_INFO_1W { - DWORD Flags; - LPWSTR pDescription; - LPWSTR pName; - LPWSTR pComment; -} -alias PRINTER_INFO_1W* PPRINTER_INFO_1W, LPPRINTER_INFO_1W; - -struct PRINTER_INFO_2A { - LPSTR pServerName; - LPSTR pPrinterName; - LPSTR pShareName; - LPSTR pPortName; - LPSTR pDriverName; - LPSTR pComment; - LPSTR pLocation; - LPDEVMODEA pDevMode; - LPSTR pSepFile; - LPSTR pPrintProcessor; - LPSTR pDatatype; - LPSTR pParameters; - PSECURITY_DESCRIPTOR pSecurityDescriptor; - DWORD Attributes; - DWORD Priority; - DWORD DefaultPriority; - DWORD StartTime; - DWORD UntilTime; - DWORD Status; - DWORD cJobs; - DWORD AveragePPM; -} -alias PRINTER_INFO_2A* PPRINTER_INFO_2A, LPPRINTER_INFO_2A; - -struct PRINTER_INFO_2W { - LPWSTR pServerName; - LPWSTR pPrinterName; - LPWSTR pShareName; - LPWSTR pPortName; - LPWSTR pDriverName; - LPWSTR pComment; - LPWSTR pLocation; - LPDEVMODEW pDevMode; - LPWSTR pSepFile; - LPWSTR pPrintProcessor; - LPWSTR pDatatype; - LPWSTR pParameters; - PSECURITY_DESCRIPTOR pSecurityDescriptor; - DWORD Attributes; - DWORD Priority; - DWORD DefaultPriority; - DWORD StartTime; - DWORD UntilTime; - DWORD Status; - DWORD cJobs; - DWORD AveragePPM; -} -alias PRINTER_INFO_2W* PPRINTER_INFO_2W, LPPRINTER_INFO_2W; - -struct PRINTER_INFO_3 { - PSECURITY_DESCRIPTOR pSecurityDescriptor; -} -alias PRINTER_INFO_3* PPRINTER_INFO_3, LPPRINTER_INFO_3; - -struct PRINTER_INFO_4A { - LPSTR pPrinterName; - LPSTR pServerName; - DWORD Attributes; -} -alias PRINTER_INFO_4A* PPRINTER_INFO_4A, LPPRINTER_INFO_4A; - -struct PRINTER_INFO_4W { - LPWSTR pPrinterName; - LPWSTR pServerName; - DWORD Attributes; -} -alias PRINTER_INFO_4W* PPRINTER_INFO_4W, LPPRINTER_INFO_4W; - -struct PRINTER_INFO_5A { - LPSTR pPrinterName; - LPSTR pPortName; - DWORD Attributes; - DWORD DeviceNotSelectedTimeout; - DWORD TransmissionRetryTimeout; -} -alias PRINTER_INFO_5A* PPRINTER_INFO_5A, LPPRINTER_INFO_5A; - -struct PRINTER_INFO_5W { - LPWSTR pPrinterName; - LPWSTR pPortName; - DWORD Attributes; - DWORD DeviceNotSelectedTimeout; - DWORD TransmissionRetryTimeout; -} -alias PRINTER_INFO_5W* PPRINTER_INFO_5W, LPPRINTER_INFO_5W; - -struct PRINTER_INFO_6 { - DWORD dwStatus; -} -alias PRINTER_INFO_6* PPRINTER_INFO_6, LPPRINTER_INFO_6; - -struct PRINTPROCESSOR_INFO_1A { - LPSTR pName; -} -alias PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A, LPPRINTPROCESSOR_INFO_1A; - -struct PRINTPROCESSOR_INFO_1W { - LPWSTR pName; -} -alias PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W, LPPRINTPROCESSOR_INFO_1W; - -struct PRINTER_NOTIFY_INFO_DATA { - WORD Type; - WORD Field; - DWORD Reserved; - DWORD Id; - union _NotifyData { - DWORD[2] adwData; - struct Data { - DWORD cbBuf; - PVOID pBuf; - } - } - _NotifyData NotifyData; -} -alias PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA, LPPRINTER_NOTIFY_INFO_DATA; - -struct PRINTER_NOTIFY_INFO { - DWORD Version; - DWORD Flags; - DWORD Count; - PRINTER_NOTIFY_INFO_DATA[1] aData; -} -alias PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO, LPPRINTER_NOTIFY_INFO; - -struct FORM_INFO_1A { - DWORD Flags; - LPSTR pName; - SIZEL Size; - RECTL ImageableArea; -} -alias FORM_INFO_1A* PFORM_INFO_1A, LPFORM_INFO_1A; - -struct FORM_INFO_1W { - DWORD Flags; - LPWSTR pName; - SIZEL Size; - RECTL ImageableArea; -} -alias FORM_INFO_1W* PFORM_INFO_1W, LPFORM_INFO_1W; - -struct PRINTER_DEFAULTSA { - LPSTR pDatatype; - LPDEVMODE pDevMode; - ACCESS_MASK DesiredAccess; -} -alias PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA, LPPRINTER_DEFAULTSA; - -struct PRINTER_DEFAULTSW { - LPWSTR pDatatype; - LPDEVMODE pDevMode; - ACCESS_MASK DesiredAccess; -} -alias PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW, LPPRINTER_DEFAULTSW; - -extern (Windows): -BOOL AbortPrinter(HANDLE); -BOOL AddFormA(HANDLE, DWORD, PBYTE); -BOOL AddFormW(HANDLE, DWORD, PBYTE); -BOOL AddJobA(HANDLE, DWORD, PBYTE, DWORD, PDWORD); -BOOL AddJobW(HANDLE, DWORD, PBYTE, DWORD, PDWORD); -BOOL AddMonitorA(LPSTR, DWORD, PBYTE); -BOOL AddMonitorW(LPWSTR, DWORD, PBYTE); -BOOL AddPortA(LPSTR, HWND, LPSTR); -BOOL AddPortW(LPWSTR, HWND, LPWSTR); -HANDLE AddPrinterA(LPSTR, DWORD, PBYTE); -HANDLE AddPrinterW(LPWSTR, DWORD, PBYTE); -BOOL AddPrinterConnectionA(LPSTR); -BOOL AddPrinterConnectionW(LPWSTR); -BOOL AddPrinterDriverA(LPSTR, DWORD, PBYTE); -BOOL AddPrinterDriverW(LPWSTR, DWORD, PBYTE); -BOOL AddPrintProcessorA(LPSTR, LPSTR, LPSTR, LPSTR); -BOOL AddPrintProcessorW(LPWSTR, LPWSTR, LPWSTR, LPWSTR); -BOOL AddPrintProvidorA(LPSTR, DWORD, PBYTE); -BOOL AddPrintProvidorW(LPWSTR, DWORD, PBYTE); -LONG AdvancedDocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODE, PDEVMODEA); -LONG AdvancedDocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODE, PDEVMODEW); -BOOL ClosePrinter(HANDLE); -BOOL ConfigurePortA(LPSTR, HWND, LPSTR); -BOOL ConfigurePortW(LPWSTR, HWND, LPWSTR); -HANDLE ConnectToPrinterDlg(HWND, DWORD); -BOOL DeleteFormA(HANDLE, LPSTR); -BOOL DeleteFormW(HANDLE, LPWSTR); -BOOL DeleteMonitorA(LPSTR, LPSTR, LPSTR); -BOOL DeleteMonitorW(LPWSTR, LPWSTR, LPWSTR); -BOOL DeletePortA(LPSTR, HWND, LPSTR); -BOOL DeletePortW(LPWSTR, HWND, LPWSTR); -BOOL DeletePrinter(HANDLE); -BOOL DeletePrinterConnectionA(LPSTR); -BOOL DeletePrinterConnectionW(LPWSTR); -DWORD DeletePrinterDataA(HANDLE, LPSTR); -DWORD DeletePrinterDataW(HANDLE, LPWSTR); -BOOL DeletePrinterDriverA(LPSTR, LPSTR, LPSTR); -BOOL DeletePrinterDriverW(LPWSTR, LPWSTR, LPWSTR); -BOOL DeletePrintProcessorA(LPSTR, LPSTR, LPSTR); -BOOL DeletePrintProcessorW(LPWSTR, LPWSTR, LPWSTR); -BOOL DeletePrintProvidorA(LPSTR, LPSTR, LPSTR); -BOOL DeletePrintProvidorW(LPWSTR, LPWSTR, LPWSTR); -LONG DocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODEA, PDEVMODEA, DWORD); -LONG DocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODEW, PDEVMODEW, DWORD); -BOOL EndDocPrinter(HANDLE); -BOOL EndPagePrinter(HANDLE); -BOOL EnumFormsA(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumFormsW(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumJobsA(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumJobsW(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumMonitorsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumMonitorsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPortsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPortsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -DWORD EnumPrinterDataA(HANDLE, DWORD, LPSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD); -DWORD EnumPrinterDataW(HANDLE, DWORD, LPWSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD); -BOOL EnumPrinterDriversA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrinterDriversW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintersA(DWORD, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintersW(DWORD, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintProcessorDatatypesA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintProcessorDatatypesW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintProcessorsA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintProcessorsW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL FindClosePrinterChangeNotification(HANDLE); -HANDLE FindFirstPrinterChangeNotification(HANDLE, DWORD, DWORD, PVOID); -HANDLE FindNextPrinterChangeNotification(HANDLE, PDWORD, PVOID, PVOID*); -BOOL FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO); - -static if (_WIN32_WINNT >= 0x500) { -BOOL GetDefaultPrinterA(LPSTR, LPDWORD); -BOOL GetDefaultPrinterW(LPWSTR, LPDWORD); -} - -BOOL GetFormA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD); -BOOL GetFormW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); -BOOL GetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD); -BOOL GetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD); -BOOL GetPrinterA(HANDLE, DWORD, PBYTE, DWORD, PDWORD); -BOOL GetPrinterW(HANDLE, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDataA(HANDLE, LPSTR, PDWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDataW(HANDLE, LPWSTR, PDWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDriverA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDriverW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDriverDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDriverDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrintProcessorDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrintProcessorDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); -BOOL OpenPrinterA(LPSTR, PHANDLE, LPPRINTER_DEFAULTSA); -BOOL OpenPrinterW(LPWSTR, PHANDLE, LPPRINTER_DEFAULTSW); -DWORD PrinterMessageBoxA(HANDLE, DWORD, HWND, LPSTR, LPSTR, DWORD); -DWORD PrinterMessageBoxW(HANDLE, DWORD, HWND, LPWSTR, LPWSTR, DWORD); -BOOL PrinterProperties(HWND, HANDLE); -BOOL ReadPrinter(HANDLE, PVOID, DWORD, PDWORD); -BOOL ResetPrinterA(HANDLE, LPPRINTER_DEFAULTSA); -BOOL ResetPrinterW(HANDLE, LPPRINTER_DEFAULTSW); -BOOL ScheduleJob(HANDLE, DWORD); -BOOL SetFormA(HANDLE, LPSTR, DWORD, PBYTE); -BOOL SetFormW(HANDLE, LPWSTR, DWORD, PBYTE); -BOOL SetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD); -BOOL SetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD); -BOOL SetPrinterA(HANDLE, DWORD, PBYTE, DWORD); -BOOL SetPrinterW(HANDLE, DWORD, PBYTE, DWORD); -BOOL SetPrinterDataA(HANDLE, LPSTR, DWORD, PBYTE, DWORD); -BOOL SetPrinterDataW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD); -DWORD StartDocPrinterA(HANDLE, DWORD, PBYTE); -DWORD StartDocPrinterW(HANDLE, DWORD, PBYTE); -BOOL StartPagePrinter(HANDLE); -DWORD WaitForPrinterChange(HANDLE, DWORD); -BOOL WritePrinter(HANDLE, PVOID, DWORD, PDWORD); - -version(Unicode) { - -alias JOB_INFO_1W JOB_INFO_1; -alias JOB_INFO_2W JOB_INFO_2; -alias ADDJOB_INFO_1W ADDJOB_INFO_1; -alias DATATYPES_INFO_1W DATATYPES_INFO_1; -alias MONITOR_INFO_1W MONITOR_INFO_1; -alias MONITOR_INFO_2W MONITOR_INFO_2; -alias DOC_INFO_1W DOC_INFO_1; -alias DOC_INFO_2W DOC_INFO_2; -alias PORT_INFO_1W PORT_INFO_1; -alias PORT_INFO_2W PORT_INFO_2; -alias PORT_INFO_3W PORT_INFO_3; -alias DRIVER_INFO_2W DRIVER_INFO_2; -alias PRINTER_INFO_1W PRINTER_INFO_1; -alias PRINTER_INFO_2W PRINTER_INFO_2; -alias PRINTER_INFO_4W PRINTER_INFO_4; -alias PRINTER_INFO_5W PRINTER_INFO_5; -alias PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1; -alias FORM_INFO_1W FORM_INFO_1; -alias PRINTER_DEFAULTSW PRINTER_DEFAULTS; - -alias AddFormW AddForm; -alias AddJobW AddJob; -alias AddMonitorW AddMonitor; -alias AddPortW AddPort; -alias AddPrinterW AddPrinter; -alias AddPrinterConnectionW AddPrinterConnection; -alias AddPrinterDriverW AddPrinterDriver; -alias AddPrintProcessorW AddPrintProcessor; -alias AddPrintProvidorW AddPrintProvidor; -alias AdvancedDocumentPropertiesW AdvancedDocumentProperties; -alias ConfigurePortW ConfigurePort; -alias DeleteFormW DeleteForm; -alias DeleteMonitorW DeleteMonitor; -alias DeletePortW DeletePort; -alias DeletePrinterConnectionW DeletePrinterConnection; -alias DeletePrinterDataW DeletePrinterData; -alias DeletePrinterDriverW DeletePrinterDriver; -alias DeletePrintProcessorW DeletePrintProcessor; -alias DeletePrintProvidorW DeletePrintProvidor; -alias DocumentPropertiesW DocumentProperties; -alias EnumFormsW EnumForms; -alias EnumJobsW EnumJobs; -alias EnumMonitorsW EnumMonitors; -alias EnumPortsW EnumPorts; -alias EnumPrinterDataW EnumPrinterData; -alias EnumPrinterDriversW EnumPrinterDrivers; -alias EnumPrintersW EnumPrinters; -alias EnumPrintProcessorDatatypesW EnumPrintProcessorDatatypes; -alias EnumPrintProcessorsW EnumPrintProcessors; - -static if (_WIN32_WINNT >= 0x500) { -alias GetDefaultPrinterW GetDefaultPrinter; -} - -alias GetFormW GetForm; -alias GetJobW GetJob; -alias GetPrinterW GetPrinter; -alias GetPrinterDataW GetPrinterData; -alias GetPrinterDriverW GetPrinterDriver; -alias GetPrinterDriverDirectoryW GetPrinterDriverDirectory; -alias GetPrintProcessorDirectoryW GetPrintProcessorDirectory; -alias OpenPrinterW OpenPrinter; -alias PrinterMessageBoxW PrinterMessageBox; -alias ResetPrinterW ResetPrinter; -alias SetFormW SetForm; -alias SetJobW SetJob; -alias SetPrinterW SetPrinter; -alias SetPrinterDataW SetPrinterData; -alias StartDocPrinterW StartDocPrinter; - -} else { - -alias JOB_INFO_1A JOB_INFO_1; -alias JOB_INFO_2A JOB_INFO_2; -alias ADDJOB_INFO_1A ADDJOB_INFO_1; -alias DATATYPES_INFO_1A DATATYPES_INFO_1; -alias MONITOR_INFO_1A MONITOR_INFO_1; -alias MONITOR_INFO_2A MONITOR_INFO_2; -alias DOC_INFO_1A DOC_INFO_1; -alias DOC_INFO_2A DOC_INFO_2; -alias PORT_INFO_1A PORT_INFO_1; -alias PORT_INFO_2A PORT_INFO_2; -alias PORT_INFO_3A PORT_INFO_3; -alias DRIVER_INFO_2A DRIVER_INFO_2; -alias PRINTER_INFO_1A PRINTER_INFO_1; -alias PRINTER_INFO_2A PRINTER_INFO_2; -alias PRINTER_INFO_4A PRINTER_INFO_4; -alias PRINTER_INFO_5A PRINTER_INFO_5; -alias PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1; -alias FORM_INFO_1A FORM_INFO_1; -alias PRINTER_DEFAULTSA PRINTER_DEFAULTS; - -alias AddFormA AddForm; -alias AddJobA AddJob; -alias AddMonitorA AddMonitor; -alias AddPortA AddPort; -alias AddPrinterA AddPrinter; -alias AddPrinterConnectionA AddPrinterConnection; -alias AddPrinterDriverA AddPrinterDriver; -alias AddPrintProcessorA AddPrintProcessor; -alias AddPrintProvidorA AddPrintProvidor; -alias AdvancedDocumentPropertiesA AdvancedDocumentProperties; -alias ConfigurePortA ConfigurePort; -alias DeleteFormA DeleteForm; -alias DeleteMonitorA DeleteMonitor; -alias DeletePortA DeletePort; -alias DeletePrinterConnectionA DeletePrinterConnection; -alias DeletePrinterDataA DeletePrinterData; -alias DeletePrinterDriverA DeletePrinterDriver; -alias DeletePrintProcessorA DeletePrintProcessor; -alias DeletePrintProvidorA DeletePrintProvidor; -alias DocumentPropertiesA DocumentProperties; -alias EnumFormsA EnumForms; -alias EnumJobsA EnumJobs; -alias EnumMonitorsA EnumMonitors; -alias EnumPortsA EnumPorts; -alias EnumPrinterDataA EnumPrinterData; -alias EnumPrinterDriversA EnumPrinterDrivers; -alias EnumPrintersA EnumPrinters; -alias EnumPrintProcessorDatatypesA EnumPrintProcessorDatatypes; -alias EnumPrintProcessorsA EnumPrintProcessors; - -static if (_WIN32_WINNT >= 0x500) { -alias GetDefaultPrinterA GetDefaultPrinter; -} - -alias GetFormA GetForm; -alias GetJobA GetJob; -alias GetPrinterA GetPrinter; -alias GetPrinterDataA GetPrinterData; -alias GetPrinterDriverA GetPrinterDriver; -alias GetPrinterDriverDirectoryA GetPrinterDriverDirectory; -alias GetPrintProcessorDirectoryA GetPrintProcessorDirectory; -alias OpenPrinterA OpenPrinter; -alias PrinterMessageBoxA PrinterMessageBox; -alias ResetPrinterA ResetPrinter; -alias SetFormA SetForm; -alias SetJobA SetJob; -alias SetPrinterA SetPrinter; -alias SetPrinterDataA SetPrinterData; -alias StartDocPrinterA StartDocPrinter; -} - -alias JOB_INFO_1* PJOB_INFO_1, LPJOB_INFO_1; -alias JOB_INFO_2* PJOB_INFO_2, LPJOB_INFO_2; -alias ADDJOB_INFO_1* PADDJOB_INFO_1, LPADDJOB_INFO_1; -alias DATATYPES_INFO_1* PDATATYPES_INFO_1, LPDATATYPES_INFO_1; -alias MONITOR_INFO_1* PMONITOR_INFO_1, LPMONITOR_INFO_1; -alias MONITOR_INFO_2* PMONITOR_INFO_2, LPMONITOR_INFO_2; -alias DOC_INFO_1* PDOC_INFO_1, LPDOC_INFO_1; -alias DOC_INFO_2* PDOC_INFO_2, LPDOC_INFO_2; -alias PORT_INFO_1* PPORT_INFO_1, LPPORT_INFO_1; -alias PORT_INFO_2* PPORT_INFO_2, LPPORT_INFO_2; -alias PORT_INFO_3* PPORT_INFO_3, LPPORT_INFO_3; -alias DRIVER_INFO_2* PDRIVER_INFO_2, LPDRIVER_INFO_2; -alias PRINTER_INFO_1* PPRINTER_INFO_1, LPPRINTER_INFO_1; -alias PRINTER_INFO_2* PPRINTER_INFO_2, LPPRINTER_INFO_2; -alias PRINTER_INFO_4* PPRINTER_INFO_4, LPPRINTER_INFO_4; -alias PRINTER_INFO_5* PPRINTER_INFO_5, LPPRINTER_INFO_5; -alias PRINTPROCESSOR_INFO_1* PPRINTPROCESSOR_INFO_1, LPPRINTPROCESSOR_INFO_1; -alias FORM_INFO_1* PFORM_INFO_1, LPFORM_INFO_1; -alias PRINTER_DEFAULTS* PPRINTER_DEFAULTS, LPPRINTER_DEFAULTS; +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winspool.d) + */ +module core.sys.windows.winspool; +pragma(lib, "winspool"); + +private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.wingdi; +private import core.sys.windows.winbase; // for SYSTEMTIME + +// FIXME: clean up Windows version support + +const DI_CHANNEL=1; +const DI_CHANNEL_WRITE=2; +const DI_READ_SPOOL_JOB=3; + +const FORM_BUILTIN=1; + +const JOB_CONTROL_PAUSE=1; +const JOB_CONTROL_RESUME=2; +const JOB_CONTROL_CANCEL=3; +const JOB_CONTROL_RESTART=4; +const JOB_CONTROL_DELETE=5; +const JOB_STATUS_PAUSED=1; +const JOB_STATUS_ERROR=2; +const JOB_STATUS_DELETING=4; +const JOB_STATUS_SPOOLING=8; +const JOB_STATUS_PRINTING=16; +const JOB_STATUS_OFFLINE=32; +const JOB_STATUS_PAPEROUT=0x40; +const JOB_STATUS_PRINTED=0x80; +const JOB_STATUS_DELETED=0x100; +const JOB_STATUS_BLOCKED_DEVQ=0x200; +const JOB_STATUS_USER_INTERVENTION=0x400; + +const JOB_POSITION_UNSPECIFIED=0; + +const JOB_NOTIFY_TYPE=1; + +const JOB_NOTIFY_FIELD_PRINTER_NAME=0; +const JOB_NOTIFY_FIELD_MACHINE_NAME=1; +const JOB_NOTIFY_FIELD_PORT_NAME=2; +const JOB_NOTIFY_FIELD_USER_NAME=3; +const JOB_NOTIFY_FIELD_NOTIFY_NAME=4; +const JOB_NOTIFY_FIELD_DATATYPE=5; +const JOB_NOTIFY_FIELD_PRINT_PROCESSOR=6; +const JOB_NOTIFY_FIELD_PARAMETERS=7; +const JOB_NOTIFY_FIELD_DRIVER_NAME=8; +const JOB_NOTIFY_FIELD_DEVMODE=9; +const JOB_NOTIFY_FIELD_STATUS=10; +const JOB_NOTIFY_FIELD_STATUS_STRING=11; +const JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; +const JOB_NOTIFY_FIELD_DOCUMENT=13; +const JOB_NOTIFY_FIELD_PRIORITY=14; +const JOB_NOTIFY_FIELD_POSITION=15; +const JOB_NOTIFY_FIELD_SUBMITTED=16; +const JOB_NOTIFY_FIELD_START_TIME=17; +const JOB_NOTIFY_FIELD_UNTIL_TIME=18; +const JOB_NOTIFY_FIELD_TIME=19; +const JOB_NOTIFY_FIELD_TOTAL_PAGES=20; +const JOB_NOTIFY_FIELD_PAGES_PRINTED=21; +const JOB_NOTIFY_FIELD_TOTAL_BYTES=22; +const JOB_NOTIFY_FIELD_BYTES_PRINTED=23; + +const JOB_ACCESS_ADMINISTER = 16; +const JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER; +const JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER; +const JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER; +const JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER; + +const PRINTER_NOTIFY_OPTIONS_REFRESH=1; +const PRINTER_ACCESS_ADMINISTER=4; +const PRINTER_ACCESS_USE=8; + +const PRINTER_ERROR_INFORMATION=0x80000000; +const PRINTER_ERROR_WARNING=0x40000000; +const PRINTER_ERROR_SEVERE=0x20000000; +const PRINTER_ERROR_OUTOFPAPER=1; +const PRINTER_ERROR_JAM=2; +const PRINTER_ERROR_OUTOFTONER=4; + +const PRINTER_CONTROL_PAUSE=1; +const PRINTER_CONTROL_RESUME=2; +const PRINTER_CONTROL_PURGE=3; +const PRINTER_CONTROL_SET_STATUS=4; + +const PRINTER_STATUS_PAUSED = 1; +const PRINTER_STATUS_ERROR = 2; +const PRINTER_STATUS_PENDING_DELETION = 4; +const PRINTER_STATUS_PAPER_JAM = 8; +const PRINTER_STATUS_PAPER_OUT = 0x10; +const PRINTER_STATUS_MANUAL_FEED = 0x20; +const PRINTER_STATUS_PAPER_PROBLEM = 0x40; +const PRINTER_STATUS_OFFLINE = 0x80; +const PRINTER_STATUS_IO_ACTIVE = 0x100; +const PRINTER_STATUS_BUSY = 0x200; +const PRINTER_STATUS_PRINTING = 0x400; +const PRINTER_STATUS_OUTPUT_BIN_FULL = 0x800; +const PRINTER_STATUS_NOT_AVAILABLE = 0x1000; +const PRINTER_STATUS_WAITING = 0x2000; +const PRINTER_STATUS_PROCESSING = 0x4000; +const PRINTER_STATUS_INITIALIZING = 0x8000; +const PRINTER_STATUS_WARMING_UP = 0x10000; +const PRINTER_STATUS_TONER_LOW = 0x20000; +const PRINTER_STATUS_NO_TONER = 0x40000; +const PRINTER_STATUS_PAGE_PUNT = 0x80000; +const PRINTER_STATUS_USER_INTERVENTION = 0x100000; +const PRINTER_STATUS_OUT_OF_MEMORY = 0x200000; +const PRINTER_STATUS_DOOR_OPEN = 0x400000; +const PRINTER_STATUS_SERVER_UNKNOWN = 0x800000; +const PRINTER_STATUS_POWER_SAVE = 0x1000000; + +const PRINTER_ATTRIBUTE_QUEUED=1; +const PRINTER_ATTRIBUTE_DIRECT=2; +const PRINTER_ATTRIBUTE_DEFAULT=4; +const PRINTER_ATTRIBUTE_SHARED=8; +const PRINTER_ATTRIBUTE_NETWORK=0x10; +const PRINTER_ATTRIBUTE_HIDDEN=0x20; +const PRINTER_ATTRIBUTE_LOCAL=0x40; +const PRINTER_ATTRIBUTE_ENABLE_DEVQ=0x80; +const PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS=0x100; +const PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST=0x200; +const PRINTER_ATTRIBUTE_WORK_OFFLINE=0x400; +const PRINTER_ATTRIBUTE_ENABLE_BIDI=0x800; +const PRINTER_ATTRIBUTE_RAW_ONLY=0x1000; +const PRINTER_ATTRIBUTE_PUBLISHED=0x2000; + +const PRINTER_ENUM_DEFAULT=1; +const PRINTER_ENUM_LOCAL=2; +const PRINTER_ENUM_CONNECTIONS=4; +const PRINTER_ENUM_FAVORITE=4; +const PRINTER_ENUM_NAME=8; +const PRINTER_ENUM_REMOTE=16; +const PRINTER_ENUM_SHARED=32; +const PRINTER_ENUM_NETWORK=0x40; +const PRINTER_ENUM_EXPAND=0x4000; +const PRINTER_ENUM_CONTAINER=0x8000; +const PRINTER_ENUM_ICONMASK=0xff0000; +const PRINTER_ENUM_ICON1=0x10000; +const PRINTER_ENUM_ICON2=0x20000; +const PRINTER_ENUM_ICON3=0x40000; +const PRINTER_ENUM_ICON4=0x80000; +const PRINTER_ENUM_ICON5=0x100000; +const PRINTER_ENUM_ICON6=0x200000; +const PRINTER_ENUM_ICON7=0x400000; +const PRINTER_ENUM_ICON8=0x800000; + +const PRINTER_NOTIFY_TYPE=0; + +const PRINTER_NOTIFY_FIELD_SERVER_NAME=0; +const PRINTER_NOTIFY_FIELD_PRINTER_NAME=1; +const PRINTER_NOTIFY_FIELD_SHARE_NAME=2; +const PRINTER_NOTIFY_FIELD_PORT_NAME=3; +const PRINTER_NOTIFY_FIELD_DRIVER_NAME=4; +const PRINTER_NOTIFY_FIELD_COMMENT=5; +const PRINTER_NOTIFY_FIELD_LOCATION=6; +const PRINTER_NOTIFY_FIELD_DEVMODE=7; +const PRINTER_NOTIFY_FIELD_SEPFILE=8; +const PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR=9; +const PRINTER_NOTIFY_FIELD_PARAMETERS=10; +const PRINTER_NOTIFY_FIELD_DATATYPE=11; +const PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; +const PRINTER_NOTIFY_FIELD_ATTRIBUTES=13; +const PRINTER_NOTIFY_FIELD_PRIORITY=14; +const PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY=15; +const PRINTER_NOTIFY_FIELD_START_TIME=16; +const PRINTER_NOTIFY_FIELD_UNTIL_TIME=17; +const PRINTER_NOTIFY_FIELD_STATUS=18; +const PRINTER_NOTIFY_FIELD_STATUS_STRING=19; +const PRINTER_NOTIFY_FIELD_CJOBS=20; +const PRINTER_NOTIFY_FIELD_AVERAGE_PPM=21; +const PRINTER_NOTIFY_FIELD_TOTAL_PAGES=22; +const PRINTER_NOTIFY_FIELD_PAGES_PRINTED=23; +const PRINTER_NOTIFY_FIELD_TOTAL_BYTES=24; +const PRINTER_NOTIFY_FIELD_BYTES_PRINTED=25; + +const PRINTER_CHANGE_ADD_PRINTER=1; +const PRINTER_CHANGE_SET_PRINTER=2; +const PRINTER_CHANGE_DELETE_PRINTER=4; +const PRINTER_CHANGE_FAILED_CONNECTION_PRINTER=8; +const PRINTER_CHANGE_PRINTER=0xFF; +const PRINTER_CHANGE_ADD_JOB=0x100; +const PRINTER_CHANGE_SET_JOB=0x200; +const PRINTER_CHANGE_DELETE_JOB=0x400; +const PRINTER_CHANGE_WRITE_JOB=0x800; +const PRINTER_CHANGE_JOB=0xFF00; +const PRINTER_CHANGE_ADD_FORM=0x10000; +const PRINTER_CHANGE_SET_FORM=0x20000; +const PRINTER_CHANGE_DELETE_FORM=0x40000; +const PRINTER_CHANGE_FORM=0x70000; +const PRINTER_CHANGE_ADD_PORT=0x100000; +const PRINTER_CHANGE_CONFIGURE_PORT=0x200000; +const PRINTER_CHANGE_DELETE_PORT=0x400000; +const PRINTER_CHANGE_PORT=0x700000; +const PRINTER_CHANGE_ADD_PRINT_PROCESSOR=0x1000000; +const PRINTER_CHANGE_DELETE_PRINT_PROCESSOR=0x4000000; +const PRINTER_CHANGE_PRINT_PROCESSOR=0x7000000; +const PRINTER_CHANGE_ADD_PRINTER_DRIVER=0x10000000; +const PRINTER_CHANGE_SET_PRINTER_DRIVER=0x20000000; +const PRINTER_CHANGE_DELETE_PRINTER_DRIVER=0x40000000; +const PRINTER_CHANGE_PRINTER_DRIVER=0x70000000; +const PRINTER_CHANGE_TIMEOUT=0x80000000; +const PRINTER_CHANGE_ALL=0x7777FFFF; + +const PRINTER_NOTIFY_INFO_DISCARDED=1; +const PRINTER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE); +const PRINTER_READ=(STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE); +const PRINTER_WRITE=(STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE); +const PRINTER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE); +const NO_PRIORITY=0; +const MAX_PRIORITY=99; +const MIN_PRIORITY=1; +const DEF_PRIORITY=1; +const PORT_TYPE_WRITE=1; +const PORT_TYPE_READ=2; +const PORT_TYPE_REDIRECTED=4; +const PORT_TYPE_NET_ATTACHED=8; +const SERVER_ACCESS_ADMINISTER=1; +const SERVER_ACCESS_ENUMERATE=2; + +const SERVER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); +const SERVER_READ=(STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE); +const SERVER_WRITE=(STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); +const SERVER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE); + +const PORT_STATUS_TYPE_ERROR=1; +const PORT_STATUS_TYPE_WARNING=2; +const PORT_STATUS_TYPE_INFO=3; + +const PORT_STATUS_OFFLINE=1; +const PORT_STATUS_PAPER_JAM=2; +const PORT_STATUS_PAPER_OUT=3; +const PORT_STATUS_OUTPUT_BIN_FULL=4; +const PORT_STATUS_PAPER_PROBLEM=5; +const PORT_STATUS_NO_TONER=6; +const PORT_STATUS_DOOR_OPEN=7; +const PORT_STATUS_USER_INTERVENTION=8; +const PORT_STATUS_OUT_OF_MEMORY=9; +const PORT_STATUS_TONER_LOW=10; +const PORT_STATUS_WARMING_UP=11; +const PORT_STATUS_POWER_SAVE=12; + +struct ADDJOB_INFO_1A { + LPSTR Path; + DWORD JobId; +} +alias ADDJOB_INFO_1A* PADDJOB_INFO_1A, LPADDJOB_INFO_1A; + +struct ADDJOB_INFO_1W { + LPWSTR Path; + DWORD JobId; +} +alias ADDJOB_INFO_1W* PADDJOB_INFO_1W, LPADDJOB_INFO_1W; + +struct DATATYPES_INFO_1A { + LPSTR pName; +} +alias DATATYPES_INFO_1A* PDATATYPES_INFO_1A, LPDATATYPES_INFO_1A; + +struct DATATYPES_INFO_1W { + LPWSTR pName; +} +alias DATATYPES_INFO_1W* PDATATYPES_INFO_1W, LPDATATYPES_INFO_1W; + +struct JOB_INFO_1A { + DWORD JobId; + LPSTR pPrinterName; + LPSTR pMachineName; + LPSTR pUserName; + LPSTR pDocument; + LPSTR pDatatype; + LPSTR pStatus; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD TotalPages; + DWORD PagesPrinted; + SYSTEMTIME Submitted; +} +alias JOB_INFO_1A* PJOB_INFO_1A, LPJOB_INFO_1A; + +struct JOB_INFO_1W { + DWORD JobId; + LPWSTR pPrinterName; + LPWSTR pMachineName; + LPWSTR pUserName; + LPWSTR pDocument; + LPWSTR pDatatype; + LPWSTR pStatus; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD TotalPages; + DWORD PagesPrinted; + SYSTEMTIME Submitted; +} +alias JOB_INFO_1W* PJOB_INFO_1W, LPJOB_INFO_1W; + +struct JOB_INFO_2A { + DWORD JobId; + LPSTR pPrinterName; + LPSTR pMachineName; + LPSTR pUserName; + LPSTR pDocument; + LPSTR pNotifyName; + LPSTR pDatatype; + LPSTR pPrintProcessor; + LPSTR pParameters; + LPSTR pDriverName; + LPDEVMODEA pDevMode; + LPSTR pStatus; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD StartTime; + DWORD UntilTime; + DWORD TotalPages; + DWORD Size; + SYSTEMTIME Submitted; + DWORD Time; + DWORD PagesPrinted; +} +alias JOB_INFO_2A* PJOB_INFO_2A, LPJOB_INFO_2A; + +struct JOB_INFO_2W { + DWORD JobId; + LPWSTR pPrinterName; + LPWSTR pMachineName; + LPWSTR pUserName; + LPWSTR pDocument; + LPWSTR pNotifyName; + LPWSTR pDatatype; + LPWSTR pPrintProcessor; + LPWSTR pParameters; + LPWSTR pDriverName; + LPDEVMODEW pDevMode; + LPWSTR pStatus; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD StartTime; + DWORD UntilTime; + DWORD TotalPages; + DWORD Size; + SYSTEMTIME Submitted; + DWORD Time; + DWORD PagesPrinted; +} +alias JOB_INFO_2W* PJOB_INFO_2W, LPJOB_INFO_2W; + +struct DOC_INFO_1A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; +} +alias DOC_INFO_1A* PDOC_INFO_1A, LPDOC_INFO_1A; + +struct DOC_INFO_1W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; +} +alias DOC_INFO_1W* PDOC_INFO_1W, LPDOC_INFO_1W; + +struct DOC_INFO_2A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} +alias DOC_INFO_2A* PDOC_INFO_2A, LPDOC_INFO_2A; + +struct DOC_INFO_2W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} +alias DOC_INFO_2W* PDOC_INFO_2W, LPDOC_INFO_2W; + +struct DRIVER_INFO_1A { + LPSTR pName; +} +alias DRIVER_INFO_1A* PDRIVER_INFO_1A, LPDRIVER_INFO_1A; + +struct DRIVER_INFO_1W { + LPWSTR pName; +} +alias DRIVER_INFO_1W* PDRIVER_INFO_1W, LPDRIVER_INFO_1W; + +struct DRIVER_INFO_2A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; +} +alias DRIVER_INFO_2A* PDRIVER_INFO_2A, LPDRIVER_INFO_2A; + +struct DRIVER_INFO_2W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; +} +alias DRIVER_INFO_2W* PDRIVER_INFO_2W, LPDRIVER_INFO_2W; + +struct DRIVER_INFO_3A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; +} +alias DRIVER_INFO_3A* PDRIVER_INFO_3A, LPDRIVER_INFO_3A; + +struct DRIVER_INFO_3W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; +} +alias DRIVER_INFO_3W* PDRIVER_INFO_3W, LPDRIVER_INFO_3W; + +struct MONITOR_INFO_1A { + LPSTR pName; +} +alias MONITOR_INFO_1A* PMONITOR_INFO_1A, LPMONITOR_INFO_1A; + +struct MONITOR_INFO_1W { + LPWSTR pName; +} +alias MONITOR_INFO_1W* PMONITOR_INFO_1W, LPMONITOR_INFO_1W; + +struct PORT_INFO_1A { + LPSTR pName; +} +alias PORT_INFO_1A* PPORT_INFO_1A, LPPORT_INFO_1A; + +struct PORT_INFO_1W { + LPWSTR pName; +} +alias PORT_INFO_1W* PPORT_INFO_1W, LPPORT_INFO_1W; + +struct MONITOR_INFO_2A { + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; +} +alias MONITOR_INFO_2A* PMONITOR_INFO_2A, LPMONITOR_INFO_2A; + +struct MONITOR_INFO_2W { + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; +} +alias MONITOR_INFO_2W* PMONITOR_INFO_2W, LPMONITOR_INFO_2W; + +struct PORT_INFO_2A { + LPSTR pPortName; + LPSTR pMonitorName; + LPSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} +alias PORT_INFO_2A* PPORT_INFO_2A, LPPORT_INFO_2A; + +struct PORT_INFO_2W { + LPWSTR pPortName; + LPWSTR pMonitorName; + LPWSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} +alias PORT_INFO_2W* PPORT_INFO_2W, LPPORT_INFO_2W; + +struct PORT_INFO_3A { + DWORD dwStatus; + LPSTR pszStatus; + DWORD dwSeverity; +} +alias PORT_INFO_3A* PPORT_INFO_3A, LPPORT_INFO_3A; + +struct PORT_INFO_3W { + DWORD dwStatus; + LPWSTR pszStatus; + DWORD dwSeverity; +} +alias PORT_INFO_3W* PPORT_INFO_3W, LPPORT_INFO_3W; + +struct PRINTER_INFO_1A { + DWORD Flags; + LPSTR pDescription; + LPSTR pName; + LPSTR pComment; +} +alias PRINTER_INFO_1A* PPRINTER_INFO_1A, LPPRINTER_INFO_1A; + +struct PRINTER_INFO_1W { + DWORD Flags; + LPWSTR pDescription; + LPWSTR pName; + LPWSTR pComment; +} +alias PRINTER_INFO_1W* PPRINTER_INFO_1W, LPPRINTER_INFO_1W; + +struct PRINTER_INFO_2A { + LPSTR pServerName; + LPSTR pPrinterName; + LPSTR pShareName; + LPSTR pPortName; + LPSTR pDriverName; + LPSTR pComment; + LPSTR pLocation; + LPDEVMODEA pDevMode; + LPSTR pSepFile; + LPSTR pPrintProcessor; + LPSTR pDatatype; + LPSTR pParameters; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Attributes; + DWORD Priority; + DWORD DefaultPriority; + DWORD StartTime; + DWORD UntilTime; + DWORD Status; + DWORD cJobs; + DWORD AveragePPM; +} +alias PRINTER_INFO_2A* PPRINTER_INFO_2A, LPPRINTER_INFO_2A; + +struct PRINTER_INFO_2W { + LPWSTR pServerName; + LPWSTR pPrinterName; + LPWSTR pShareName; + LPWSTR pPortName; + LPWSTR pDriverName; + LPWSTR pComment; + LPWSTR pLocation; + LPDEVMODEW pDevMode; + LPWSTR pSepFile; + LPWSTR pPrintProcessor; + LPWSTR pDatatype; + LPWSTR pParameters; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Attributes; + DWORD Priority; + DWORD DefaultPriority; + DWORD StartTime; + DWORD UntilTime; + DWORD Status; + DWORD cJobs; + DWORD AveragePPM; +} +alias PRINTER_INFO_2W* PPRINTER_INFO_2W, LPPRINTER_INFO_2W; + +struct PRINTER_INFO_3 { + PSECURITY_DESCRIPTOR pSecurityDescriptor; +} +alias PRINTER_INFO_3* PPRINTER_INFO_3, LPPRINTER_INFO_3; + +struct PRINTER_INFO_4A { + LPSTR pPrinterName; + LPSTR pServerName; + DWORD Attributes; +} +alias PRINTER_INFO_4A* PPRINTER_INFO_4A, LPPRINTER_INFO_4A; + +struct PRINTER_INFO_4W { + LPWSTR pPrinterName; + LPWSTR pServerName; + DWORD Attributes; +} +alias PRINTER_INFO_4W* PPRINTER_INFO_4W, LPPRINTER_INFO_4W; + +struct PRINTER_INFO_5A { + LPSTR pPrinterName; + LPSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} +alias PRINTER_INFO_5A* PPRINTER_INFO_5A, LPPRINTER_INFO_5A; + +struct PRINTER_INFO_5W { + LPWSTR pPrinterName; + LPWSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} +alias PRINTER_INFO_5W* PPRINTER_INFO_5W, LPPRINTER_INFO_5W; + +struct PRINTER_INFO_6 { + DWORD dwStatus; +} +alias PRINTER_INFO_6* PPRINTER_INFO_6, LPPRINTER_INFO_6; + +struct PRINTPROCESSOR_INFO_1A { + LPSTR pName; +} +alias PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A, LPPRINTPROCESSOR_INFO_1A; + +struct PRINTPROCESSOR_INFO_1W { + LPWSTR pName; +} +alias PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W, LPPRINTPROCESSOR_INFO_1W; + +struct PRINTER_NOTIFY_INFO_DATA { + WORD Type; + WORD Field; + DWORD Reserved; + DWORD Id; + union _NotifyData { + DWORD[2] adwData; + struct Data { + DWORD cbBuf; + PVOID pBuf; + } + } + _NotifyData NotifyData; +} +alias PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA, LPPRINTER_NOTIFY_INFO_DATA; + +struct PRINTER_NOTIFY_INFO { + DWORD Version; + DWORD Flags; + DWORD Count; + PRINTER_NOTIFY_INFO_DATA[1] aData; +} +alias PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO, LPPRINTER_NOTIFY_INFO; + +struct FORM_INFO_1A { + DWORD Flags; + LPSTR pName; + SIZEL Size; + RECTL ImageableArea; +} +alias FORM_INFO_1A* PFORM_INFO_1A, LPFORM_INFO_1A; + +struct FORM_INFO_1W { + DWORD Flags; + LPWSTR pName; + SIZEL Size; + RECTL ImageableArea; +} +alias FORM_INFO_1W* PFORM_INFO_1W, LPFORM_INFO_1W; + +struct PRINTER_DEFAULTSA { + LPSTR pDatatype; + LPDEVMODE pDevMode; + ACCESS_MASK DesiredAccess; +} +alias PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA, LPPRINTER_DEFAULTSA; + +struct PRINTER_DEFAULTSW { + LPWSTR pDatatype; + LPDEVMODE pDevMode; + ACCESS_MASK DesiredAccess; +} +alias PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW, LPPRINTER_DEFAULTSW; + +extern (Windows): +BOOL AbortPrinter(HANDLE); +BOOL AddFormA(HANDLE, DWORD, PBYTE); +BOOL AddFormW(HANDLE, DWORD, PBYTE); +BOOL AddJobA(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +BOOL AddJobW(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +BOOL AddMonitorA(LPSTR, DWORD, PBYTE); +BOOL AddMonitorW(LPWSTR, DWORD, PBYTE); +BOOL AddPortA(LPSTR, HWND, LPSTR); +BOOL AddPortW(LPWSTR, HWND, LPWSTR); +HANDLE AddPrinterA(LPSTR, DWORD, PBYTE); +HANDLE AddPrinterW(LPWSTR, DWORD, PBYTE); +BOOL AddPrinterConnectionA(LPSTR); +BOOL AddPrinterConnectionW(LPWSTR); +BOOL AddPrinterDriverA(LPSTR, DWORD, PBYTE); +BOOL AddPrinterDriverW(LPWSTR, DWORD, PBYTE); +BOOL AddPrintProcessorA(LPSTR, LPSTR, LPSTR, LPSTR); +BOOL AddPrintProcessorW(LPWSTR, LPWSTR, LPWSTR, LPWSTR); +BOOL AddPrintProvidorA(LPSTR, DWORD, PBYTE); +BOOL AddPrintProvidorW(LPWSTR, DWORD, PBYTE); +LONG AdvancedDocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODE, PDEVMODEA); +LONG AdvancedDocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODE, PDEVMODEW); +BOOL ClosePrinter(HANDLE); +BOOL ConfigurePortA(LPSTR, HWND, LPSTR); +BOOL ConfigurePortW(LPWSTR, HWND, LPWSTR); +HANDLE ConnectToPrinterDlg(HWND, DWORD); +BOOL DeleteFormA(HANDLE, LPSTR); +BOOL DeleteFormW(HANDLE, LPWSTR); +BOOL DeleteMonitorA(LPSTR, LPSTR, LPSTR); +BOOL DeleteMonitorW(LPWSTR, LPWSTR, LPWSTR); +BOOL DeletePortA(LPSTR, HWND, LPSTR); +BOOL DeletePortW(LPWSTR, HWND, LPWSTR); +BOOL DeletePrinter(HANDLE); +BOOL DeletePrinterConnectionA(LPSTR); +BOOL DeletePrinterConnectionW(LPWSTR); +DWORD DeletePrinterDataA(HANDLE, LPSTR); +DWORD DeletePrinterDataW(HANDLE, LPWSTR); +BOOL DeletePrinterDriverA(LPSTR, LPSTR, LPSTR); +BOOL DeletePrinterDriverW(LPWSTR, LPWSTR, LPWSTR); +BOOL DeletePrintProcessorA(LPSTR, LPSTR, LPSTR); +BOOL DeletePrintProcessorW(LPWSTR, LPWSTR, LPWSTR); +BOOL DeletePrintProvidorA(LPSTR, LPSTR, LPSTR); +BOOL DeletePrintProvidorW(LPWSTR, LPWSTR, LPWSTR); +LONG DocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODEA, PDEVMODEA, DWORD); +LONG DocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODEW, PDEVMODEW, DWORD); +BOOL EndDocPrinter(HANDLE); +BOOL EndPagePrinter(HANDLE); +BOOL EnumFormsA(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumFormsW(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumJobsA(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumJobsW(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumMonitorsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumMonitorsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPortsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPortsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +DWORD EnumPrinterDataA(HANDLE, DWORD, LPSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD); +DWORD EnumPrinterDataW(HANDLE, DWORD, LPWSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD); +BOOL EnumPrinterDriversA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrinterDriversW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintersA(DWORD, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintersW(DWORD, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorDatatypesA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorDatatypesW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorsA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorsW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL FindClosePrinterChangeNotification(HANDLE); +HANDLE FindFirstPrinterChangeNotification(HANDLE, DWORD, DWORD, PVOID); +HANDLE FindNextPrinterChangeNotification(HANDLE, PDWORD, PVOID, PVOID*); +BOOL FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO); + +static if (_WIN32_WINNT >= 0x500) { +BOOL GetDefaultPrinterA(LPSTR, LPDWORD); +BOOL GetDefaultPrinterW(LPWSTR, LPDWORD); +} + +BOOL GetFormA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetFormW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetPrinterA(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetPrinterW(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDataA(HANDLE, LPSTR, PDWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDataW(HANDLE, LPWSTR, PDWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrintProcessorDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrintProcessorDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +BOOL OpenPrinterA(LPSTR, PHANDLE, LPPRINTER_DEFAULTSA); +BOOL OpenPrinterW(LPWSTR, PHANDLE, LPPRINTER_DEFAULTSW); +DWORD PrinterMessageBoxA(HANDLE, DWORD, HWND, LPSTR, LPSTR, DWORD); +DWORD PrinterMessageBoxW(HANDLE, DWORD, HWND, LPWSTR, LPWSTR, DWORD); +BOOL PrinterProperties(HWND, HANDLE); +BOOL ReadPrinter(HANDLE, PVOID, DWORD, PDWORD); +BOOL ResetPrinterA(HANDLE, LPPRINTER_DEFAULTSA); +BOOL ResetPrinterW(HANDLE, LPPRINTER_DEFAULTSW); +BOOL ScheduleJob(HANDLE, DWORD); +BOOL SetFormA(HANDLE, LPSTR, DWORD, PBYTE); +BOOL SetFormW(HANDLE, LPWSTR, DWORD, PBYTE); +BOOL SetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD); +BOOL SetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD); +BOOL SetPrinterA(HANDLE, DWORD, PBYTE, DWORD); +BOOL SetPrinterW(HANDLE, DWORD, PBYTE, DWORD); +BOOL SetPrinterDataA(HANDLE, LPSTR, DWORD, PBYTE, DWORD); +BOOL SetPrinterDataW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD); +DWORD StartDocPrinterA(HANDLE, DWORD, PBYTE); +DWORD StartDocPrinterW(HANDLE, DWORD, PBYTE); +BOOL StartPagePrinter(HANDLE); +DWORD WaitForPrinterChange(HANDLE, DWORD); +BOOL WritePrinter(HANDLE, PVOID, DWORD, PDWORD); + +version(Unicode) { + +alias JOB_INFO_1W JOB_INFO_1; +alias JOB_INFO_2W JOB_INFO_2; +alias ADDJOB_INFO_1W ADDJOB_INFO_1; +alias DATATYPES_INFO_1W DATATYPES_INFO_1; +alias MONITOR_INFO_1W MONITOR_INFO_1; +alias MONITOR_INFO_2W MONITOR_INFO_2; +alias DOC_INFO_1W DOC_INFO_1; +alias DOC_INFO_2W DOC_INFO_2; +alias PORT_INFO_1W PORT_INFO_1; +alias PORT_INFO_2W PORT_INFO_2; +alias PORT_INFO_3W PORT_INFO_3; +alias DRIVER_INFO_2W DRIVER_INFO_2; +alias PRINTER_INFO_1W PRINTER_INFO_1; +alias PRINTER_INFO_2W PRINTER_INFO_2; +alias PRINTER_INFO_4W PRINTER_INFO_4; +alias PRINTER_INFO_5W PRINTER_INFO_5; +alias PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1; +alias FORM_INFO_1W FORM_INFO_1; +alias PRINTER_DEFAULTSW PRINTER_DEFAULTS; + +alias AddFormW AddForm; +alias AddJobW AddJob; +alias AddMonitorW AddMonitor; +alias AddPortW AddPort; +alias AddPrinterW AddPrinter; +alias AddPrinterConnectionW AddPrinterConnection; +alias AddPrinterDriverW AddPrinterDriver; +alias AddPrintProcessorW AddPrintProcessor; +alias AddPrintProvidorW AddPrintProvidor; +alias AdvancedDocumentPropertiesW AdvancedDocumentProperties; +alias ConfigurePortW ConfigurePort; +alias DeleteFormW DeleteForm; +alias DeleteMonitorW DeleteMonitor; +alias DeletePortW DeletePort; +alias DeletePrinterConnectionW DeletePrinterConnection; +alias DeletePrinterDataW DeletePrinterData; +alias DeletePrinterDriverW DeletePrinterDriver; +alias DeletePrintProcessorW DeletePrintProcessor; +alias DeletePrintProvidorW DeletePrintProvidor; +alias DocumentPropertiesW DocumentProperties; +alias EnumFormsW EnumForms; +alias EnumJobsW EnumJobs; +alias EnumMonitorsW EnumMonitors; +alias EnumPortsW EnumPorts; +alias EnumPrinterDataW EnumPrinterData; +alias EnumPrinterDriversW EnumPrinterDrivers; +alias EnumPrintersW EnumPrinters; +alias EnumPrintProcessorDatatypesW EnumPrintProcessorDatatypes; +alias EnumPrintProcessorsW EnumPrintProcessors; + +static if (_WIN32_WINNT >= 0x500) { +alias GetDefaultPrinterW GetDefaultPrinter; +} + +alias GetFormW GetForm; +alias GetJobW GetJob; +alias GetPrinterW GetPrinter; +alias GetPrinterDataW GetPrinterData; +alias GetPrinterDriverW GetPrinterDriver; +alias GetPrinterDriverDirectoryW GetPrinterDriverDirectory; +alias GetPrintProcessorDirectoryW GetPrintProcessorDirectory; +alias OpenPrinterW OpenPrinter; +alias PrinterMessageBoxW PrinterMessageBox; +alias ResetPrinterW ResetPrinter; +alias SetFormW SetForm; +alias SetJobW SetJob; +alias SetPrinterW SetPrinter; +alias SetPrinterDataW SetPrinterData; +alias StartDocPrinterW StartDocPrinter; + +} else { + +alias JOB_INFO_1A JOB_INFO_1; +alias JOB_INFO_2A JOB_INFO_2; +alias ADDJOB_INFO_1A ADDJOB_INFO_1; +alias DATATYPES_INFO_1A DATATYPES_INFO_1; +alias MONITOR_INFO_1A MONITOR_INFO_1; +alias MONITOR_INFO_2A MONITOR_INFO_2; +alias DOC_INFO_1A DOC_INFO_1; +alias DOC_INFO_2A DOC_INFO_2; +alias PORT_INFO_1A PORT_INFO_1; +alias PORT_INFO_2A PORT_INFO_2; +alias PORT_INFO_3A PORT_INFO_3; +alias DRIVER_INFO_2A DRIVER_INFO_2; +alias PRINTER_INFO_1A PRINTER_INFO_1; +alias PRINTER_INFO_2A PRINTER_INFO_2; +alias PRINTER_INFO_4A PRINTER_INFO_4; +alias PRINTER_INFO_5A PRINTER_INFO_5; +alias PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1; +alias FORM_INFO_1A FORM_INFO_1; +alias PRINTER_DEFAULTSA PRINTER_DEFAULTS; + +alias AddFormA AddForm; +alias AddJobA AddJob; +alias AddMonitorA AddMonitor; +alias AddPortA AddPort; +alias AddPrinterA AddPrinter; +alias AddPrinterConnectionA AddPrinterConnection; +alias AddPrinterDriverA AddPrinterDriver; +alias AddPrintProcessorA AddPrintProcessor; +alias AddPrintProvidorA AddPrintProvidor; +alias AdvancedDocumentPropertiesA AdvancedDocumentProperties; +alias ConfigurePortA ConfigurePort; +alias DeleteFormA DeleteForm; +alias DeleteMonitorA DeleteMonitor; +alias DeletePortA DeletePort; +alias DeletePrinterConnectionA DeletePrinterConnection; +alias DeletePrinterDataA DeletePrinterData; +alias DeletePrinterDriverA DeletePrinterDriver; +alias DeletePrintProcessorA DeletePrintProcessor; +alias DeletePrintProvidorA DeletePrintProvidor; +alias DocumentPropertiesA DocumentProperties; +alias EnumFormsA EnumForms; +alias EnumJobsA EnumJobs; +alias EnumMonitorsA EnumMonitors; +alias EnumPortsA EnumPorts; +alias EnumPrinterDataA EnumPrinterData; +alias EnumPrinterDriversA EnumPrinterDrivers; +alias EnumPrintersA EnumPrinters; +alias EnumPrintProcessorDatatypesA EnumPrintProcessorDatatypes; +alias EnumPrintProcessorsA EnumPrintProcessors; + +static if (_WIN32_WINNT >= 0x500) { +alias GetDefaultPrinterA GetDefaultPrinter; +} + +alias GetFormA GetForm; +alias GetJobA GetJob; +alias GetPrinterA GetPrinter; +alias GetPrinterDataA GetPrinterData; +alias GetPrinterDriverA GetPrinterDriver; +alias GetPrinterDriverDirectoryA GetPrinterDriverDirectory; +alias GetPrintProcessorDirectoryA GetPrintProcessorDirectory; +alias OpenPrinterA OpenPrinter; +alias PrinterMessageBoxA PrinterMessageBox; +alias ResetPrinterA ResetPrinter; +alias SetFormA SetForm; +alias SetJobA SetJob; +alias SetPrinterA SetPrinter; +alias SetPrinterDataA SetPrinterData; +alias StartDocPrinterA StartDocPrinter; +} + +alias JOB_INFO_1* PJOB_INFO_1, LPJOB_INFO_1; +alias JOB_INFO_2* PJOB_INFO_2, LPJOB_INFO_2; +alias ADDJOB_INFO_1* PADDJOB_INFO_1, LPADDJOB_INFO_1; +alias DATATYPES_INFO_1* PDATATYPES_INFO_1, LPDATATYPES_INFO_1; +alias MONITOR_INFO_1* PMONITOR_INFO_1, LPMONITOR_INFO_1; +alias MONITOR_INFO_2* PMONITOR_INFO_2, LPMONITOR_INFO_2; +alias DOC_INFO_1* PDOC_INFO_1, LPDOC_INFO_1; +alias DOC_INFO_2* PDOC_INFO_2, LPDOC_INFO_2; +alias PORT_INFO_1* PPORT_INFO_1, LPPORT_INFO_1; +alias PORT_INFO_2* PPORT_INFO_2, LPPORT_INFO_2; +alias PORT_INFO_3* PPORT_INFO_3, LPPORT_INFO_3; +alias DRIVER_INFO_2* PDRIVER_INFO_2, LPDRIVER_INFO_2; +alias PRINTER_INFO_1* PPRINTER_INFO_1, LPPRINTER_INFO_1; +alias PRINTER_INFO_2* PPRINTER_INFO_2, LPPRINTER_INFO_2; +alias PRINTER_INFO_4* PPRINTER_INFO_4, LPPRINTER_INFO_4; +alias PRINTER_INFO_5* PPRINTER_INFO_5, LPPRINTER_INFO_5; +alias PRINTPROCESSOR_INFO_1* PPRINTPROCESSOR_INFO_1, LPPRINTPROCESSOR_INFO_1; +alias FORM_INFO_1* PFORM_INFO_1, LPFORM_INFO_1; +alias PRINTER_DEFAULTS* PPRINTER_DEFAULTS, LPPRINTER_DEFAULTS; diff --git a/src/core/sys/windows/winsvc.d b/src/core/sys/windows/winsvc.d index 619944d5ef..7cae7432f4 100644 --- a/src/core/sys/windows/winsvc.d +++ b/src/core/sys/windows/winsvc.d @@ -1,424 +1,424 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winsvc.d) - */ -module core.sys.windows.winsvc; -pragma(lib, "advapi32"); - -private import core.sys.windows.w32api, core.sys.windows.windef; - -// FIXME: check Windows version support - -const TCHAR[] - SERVICES_ACTIVE_DATABASE = "ServicesActive", - SERVICES_FAILED_DATABASE = "ServicesFailed"; - -const TCHAR SC_GROUP_IDENTIFIER = '+'; - -const DWORD - SC_MANAGER_ALL_ACCESS = 0xf003f, - SC_MANAGER_CONNECT = 1, - SC_MANAGER_CREATE_SERVICE = 2, - SC_MANAGER_ENUMERATE_SERVICE = 4, - SC_MANAGER_LOCK = 8, - SC_MANAGER_QUERY_LOCK_STATUS = 16, - SC_MANAGER_MODIFY_BOOT_CONFIG = 32; - -const DWORD SERVICE_NO_CHANGE = 0xffffffff; - -enum : DWORD { - SERVICE_STOPPED = 1, - SERVICE_START_PENDING, - SERVICE_STOP_PENDING, - SERVICE_RUNNING, - SERVICE_CONTINUE_PENDING, - SERVICE_PAUSE_PENDING, - SERVICE_PAUSED // = 7 -} - -const DWORD - SERVICE_ACCEPT_STOP = 1, - SERVICE_ACCEPT_PAUSE_CONTINUE = 2, - SERVICE_ACCEPT_SHUTDOWN = 4, - SERVICE_ACCEPT_PARAMCHANGE = 8, - SERVICE_ACCEPT_NETBINDCHANGE = 16, - SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32, - SERVICE_ACCEPT_POWEREVENT = 64, - SERVICE_ACCEPT_SESSIONCHANGE = 128; - -enum : DWORD { - SERVICE_CONTROL_STOP = 1, - SERVICE_CONTROL_PAUSE, - SERVICE_CONTROL_CONTINUE, - SERVICE_CONTROL_INTERROGATE, - SERVICE_CONTROL_SHUTDOWN, - SERVICE_CONTROL_PARAMCHANGE, - SERVICE_CONTROL_NETBINDADD, - SERVICE_CONTROL_NETBINDREMOVE, - SERVICE_CONTROL_NETBINDENABLE, - SERVICE_CONTROL_NETBINDDISABLE, - SERVICE_CONTROL_DEVICEEVENT, - SERVICE_CONTROL_HARDWAREPROFILECHANGE, - SERVICE_CONTROL_POWEREVENT, - SERVICE_CONTROL_SESSIONCHANGE, // = 14 -} - -enum : DWORD { - SERVICE_ACTIVE = 1, - SERVICE_INACTIVE, - SERVICE_STATE_ALL -} - -const DWORD - SERVICE_QUERY_CONFIG = 0x0001, - SERVICE_CHANGE_CONFIG = 0x0002, - SERVICE_QUERY_STATUS = 0x0004, - SERVICE_ENUMERATE_DEPENDENTS = 0x0008, - SERVICE_START = 0x0010, - SERVICE_STOP = 0x0020, - SERVICE_PAUSE_CONTINUE = 0x0040, - SERVICE_INTERROGATE = 0x0080, - SERVICE_USER_DEFINED_CONTROL = 0x0100, - SERVICE_ALL_ACCESS = 0x01FF | STANDARD_RIGHTS_REQUIRED; - -// This is not documented on the MSDN site -const SERVICE_RUNS_IN_SYSTEM_PROCESS = 1; - -enum : DWORD { - SERVICE_CONFIG_DESCRIPTION = 1, - SERVICE_CONFIG_FAILURE_ACTIONS, - SERVICE_CONFIG_DELAYED_AUTO_START_INFO, - SERVICE_CONFIG_FAILURE_ACTIONS_FLAG, - SERVICE_CONFIG_SERVICE_SID_INFO, - SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO, - SERVICE_CONFIG_PRESHUTDOWN_INFO // = 7 -} - -struct SERVICE_STATUS { - DWORD dwServiceType; - DWORD dwCurrentState; - DWORD dwControlsAccepted; - DWORD dwWin32ExitCode; - DWORD dwServiceSpecificExitCode; - DWORD dwCheckPoint; - DWORD dwWaitHint; -} -alias SERVICE_STATUS* LPSERVICE_STATUS; - -struct ENUM_SERVICE_STATUSA { - LPSTR lpServiceName; - LPSTR lpDisplayName; - SERVICE_STATUS ServiceStatus; -} -alias ENUM_SERVICE_STATUSA* LPENUM_SERVICE_STATUSA; - -struct ENUM_SERVICE_STATUSW { - LPWSTR lpServiceName; - LPWSTR lpDisplayName; - SERVICE_STATUS ServiceStatus; -} -alias ENUM_SERVICE_STATUSW* LPENUM_SERVICE_STATUSW; - -struct QUERY_SERVICE_CONFIGA { - DWORD dwServiceType; - DWORD dwStartType; - DWORD dwErrorControl; - LPSTR lpBinaryPathName; - LPSTR lpLoadOrderGroup; - DWORD dwTagId; - LPSTR lpDependencies; - LPSTR lpServiceStartName; - LPSTR lpDisplayName; -} -alias QUERY_SERVICE_CONFIGA* LPQUERY_SERVICE_CONFIGA; - -struct QUERY_SERVICE_CONFIGW { - DWORD dwServiceType; - DWORD dwStartType; - DWORD dwErrorControl; - LPWSTR lpBinaryPathName; - LPWSTR lpLoadOrderGroup; - DWORD dwTagId; - LPWSTR lpDependencies; - LPWSTR lpServiceStartName; - LPWSTR lpDisplayName; -} -alias QUERY_SERVICE_CONFIGW* LPQUERY_SERVICE_CONFIGW; - -struct QUERY_SERVICE_LOCK_STATUSA { - DWORD fIsLocked; - LPSTR lpLockOwner; - DWORD dwLockDuration; -} -alias QUERY_SERVICE_LOCK_STATUSA* LPQUERY_SERVICE_LOCK_STATUSA; - -struct QUERY_SERVICE_LOCK_STATUSW { - DWORD fIsLocked; - LPWSTR lpLockOwner; - DWORD dwLockDuration; -} -alias QUERY_SERVICE_LOCK_STATUSW* LPQUERY_SERVICE_LOCK_STATUSW; - -extern (Windows) { - alias void function(DWORD, LPSTR*) LPSERVICE_MAIN_FUNCTIONA; - alias void function(DWORD, LPWSTR*) LPSERVICE_MAIN_FUNCTIONW; -} - -struct SERVICE_TABLE_ENTRYA { - LPSTR lpServiceName; - LPSERVICE_MAIN_FUNCTIONA lpServiceProc; -} -alias SERVICE_TABLE_ENTRYA* LPSERVICE_TABLE_ENTRYA; - -struct SERVICE_TABLE_ENTRYW { - LPWSTR lpServiceName; - LPSERVICE_MAIN_FUNCTIONW lpServiceProc; -} -alias SERVICE_TABLE_ENTRYW* LPSERVICE_TABLE_ENTRYW; - -mixin DECLARE_HANDLE!("SC_HANDLE"); -alias SC_HANDLE* LPSC_HANDLE; -alias void* SC_LOCK; -mixin DECLARE_HANDLE!("SERVICE_STATUS_HANDLE"); - -extern (Windows) { - alias void function(DWORD) LPHANDLER_FUNCTION; - alias DWORD function(DWORD, DWORD, LPVOID, LPVOID) LPHANDLER_FUNCTION_EX; -} - -static if (_WIN32_WINNT >= 0x500) { - struct SERVICE_STATUS_PROCESS { - DWORD dwServiceType; - DWORD dwCurrentState; - DWORD dwControlsAccepted; - DWORD dwWin32ExitCode; - DWORD dwServiceSpecificExitCode; - DWORD dwCheckPoint; - DWORD dwWaitHint; - DWORD dwProcessId; - DWORD dwServiceFlags; - } - alias SERVICE_STATUS_PROCESS* LPSERVICE_STATUS_PROCESS; - - enum SC_STATUS_TYPE { - SC_STATUS_PROCESS_INFO = 0 - } - - enum SC_ENUM_TYPE { - SC_ENUM_PROCESS_INFO = 0 - } - - struct ENUM_SERVICE_STATUS_PROCESSA { - LPSTR lpServiceName; - LPSTR lpDisplayName; - SERVICE_STATUS_PROCESS ServiceStatusProcess; - } - alias ENUM_SERVICE_STATUS_PROCESSA* LPENUM_SERVICE_STATUS_PROCESSA; - - struct ENUM_SERVICE_STATUS_PROCESSW { - LPWSTR lpServiceName; - LPWSTR lpDisplayName; - SERVICE_STATUS_PROCESS ServiceStatusProcess; - } - alias ENUM_SERVICE_STATUS_PROCESSW* LPENUM_SERVICE_STATUS_PROCESSW; - - struct SERVICE_DESCRIPTIONA { - LPSTR lpDescription; - } - alias SERVICE_DESCRIPTIONA* LPSERVICE_DESCRIPTIONA; - - struct SERVICE_DESCRIPTIONW { - LPWSTR lpDescription; - } - alias SERVICE_DESCRIPTIONW* LPSERVICE_DESCRIPTIONW; - - enum SC_ACTION_TYPE { - SC_ACTION_NONE, - SC_ACTION_RESTART, - SC_ACTION_REBOOT, - SC_ACTION_RUN_COMMAND - } - - struct SC_ACTION { - SC_ACTION_TYPE Type; - DWORD Delay; - } - alias SC_ACTION* LPSC_ACTION; - - struct SERVICE_FAILURE_ACTIONSA { - DWORD dwResetPeriod; - LPSTR lpRebootMsg; - LPSTR lpCommand; - DWORD cActions; - SC_ACTION* lpsaActions; - } - alias SERVICE_FAILURE_ACTIONSA* LPSERVICE_FAILURE_ACTIONSA; - - struct SERVICE_FAILURE_ACTIONSW { - DWORD dwResetPeriod; - LPWSTR lpRebootMsg; - LPWSTR lpCommand; - DWORD cActions; - SC_ACTION* lpsaActions; - } - alias SERVICE_FAILURE_ACTIONSW* LPSERVICE_FAILURE_ACTIONSW; -} - -extern (Windows) { - BOOL ChangeServiceConfigA(SC_HANDLE, DWORD, DWORD, DWORD, LPCSTR, - LPCSTR, LPDWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR); - BOOL ChangeServiceConfigW(SC_HANDLE, DWORD, DWORD, DWORD, LPCWSTR, - LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); - BOOL CloseServiceHandle(SC_HANDLE); - BOOL ControlService(SC_HANDLE, DWORD, LPSERVICE_STATUS); - SC_HANDLE CreateServiceA(SC_HANDLE, LPCSTR, LPCSTR, DWORD, DWORD, - DWORD, DWORD, LPCSTR, LPCSTR, PDWORD, LPCSTR, LPCSTR, LPCSTR); - SC_HANDLE CreateServiceW(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD, - DWORD, DWORD, LPCWSTR, LPCWSTR, PDWORD, LPCWSTR, LPCWSTR, LPCWSTR); - BOOL DeleteService(SC_HANDLE); - BOOL EnumDependentServicesA(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSA, - DWORD, PDWORD, PDWORD); - BOOL EnumDependentServicesW(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSW, - DWORD, PDWORD, PDWORD); - BOOL EnumServicesStatusA(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSA, - DWORD, PDWORD, PDWORD, PDWORD); - BOOL EnumServicesStatusW(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSW, - DWORD, PDWORD, PDWORD, PDWORD); - BOOL GetServiceDisplayNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); - BOOL GetServiceDisplayNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); - BOOL GetServiceKeyNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); - BOOL GetServiceKeyNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); - SC_LOCK LockServiceDatabase(SC_HANDLE); - BOOL NotifyBootConfigStatus(BOOL); - SC_HANDLE OpenSCManagerA(LPCSTR, LPCSTR, DWORD); - SC_HANDLE OpenSCManagerW(LPCWSTR, LPCWSTR, DWORD); - SC_HANDLE OpenServiceA(SC_HANDLE, LPCSTR, DWORD); - SC_HANDLE OpenServiceW(SC_HANDLE, LPCWSTR, DWORD); - BOOL QueryServiceConfigA(SC_HANDLE, LPQUERY_SERVICE_CONFIGA, DWORD, - PDWORD); - BOOL QueryServiceConfigW(SC_HANDLE, LPQUERY_SERVICE_CONFIGW, DWORD, - PDWORD); - BOOL QueryServiceLockStatusA(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSA, - DWORD, PDWORD); - BOOL QueryServiceLockStatusW(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSW, - DWORD, PDWORD); - BOOL QueryServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, DWORD, LPDWORD); - BOOL QueryServiceStatus(SC_HANDLE, LPSERVICE_STATUS); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(LPCSTR, - LPHANDLER_FUNCTION); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(LPCWSTR, - LPHANDLER_FUNCTION); - BOOL SetServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - BOOL SetServiceStatus(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS); - BOOL StartServiceA(SC_HANDLE, DWORD, LPCSTR*); - BOOL StartServiceW(SC_HANDLE, DWORD, LPCWSTR*); - BOOL StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA); - BOOL StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW); - BOOL UnlockServiceDatabase(SC_LOCK); - - static if (_WIN32_WINNT >= 0x500) { - BOOL EnumServicesStatusExA(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, - DWORD, LPDWORD, LPDWORD, LPDWORD, LPCSTR); - BOOL EnumServicesStatusExW(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, - DWORD, LPDWORD, LPDWORD, LPDWORD, LPCWSTR); - BOOL QueryServiceConfig2A(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); - BOOL QueryServiceConfig2W(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); - BOOL QueryServiceStatusEx(SC_HANDLE, SC_STATUS_TYPE, LPBYTE, DWORD, - LPDWORD); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(LPCSTR, - LPHANDLER_FUNCTION_EX, LPVOID); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(LPCWSTR, - LPHANDLER_FUNCTION_EX, LPVOID); - } - - static if (_WIN32_WINNT >= 0x501) { - BOOL ChangeServiceConfig2A(SC_HANDLE, DWORD, LPVOID); - BOOL ChangeServiceConfig2W(SC_HANDLE, DWORD, LPVOID); - } -} - -version (Unicode) { - alias ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS; - alias QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG; - alias QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS; - alias LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION; - alias SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY; - alias ChangeServiceConfigW ChangeServiceConfig; - alias CreateServiceW CreateService; - alias EnumDependentServicesW EnumDependentServices; - alias EnumServicesStatusW EnumServicesStatus; - alias GetServiceDisplayNameW GetServiceDisplayName; - alias GetServiceKeyNameW GetServiceKeyName; - alias OpenSCManagerW OpenSCManager; - alias OpenServiceW OpenService; - alias QueryServiceConfigW QueryServiceConfig; - alias QueryServiceLockStatusW QueryServiceLockStatus; - alias RegisterServiceCtrlHandlerW RegisterServiceCtrlHandler; - alias StartServiceW StartService; - alias StartServiceCtrlDispatcherW StartServiceCtrlDispatcher; - - static if (_WIN32_WINNT >= 0x500) { - alias ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS; - alias SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION; - alias SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS; - alias EnumServicesStatusExW EnumServicesStatusEx; - alias QueryServiceConfig2W QueryServiceConfig2; - alias RegisterServiceCtrlHandlerExW RegisterServiceCtrlHandlerEx; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ChangeServiceConfig2W ChangeServiceConfig2; - } - -} else { - alias ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS; - alias QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG; - alias QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS; - alias LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION; - alias SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY; - alias ChangeServiceConfigA ChangeServiceConfig; - alias CreateServiceA CreateService; - alias EnumDependentServicesA EnumDependentServices; - alias EnumServicesStatusA EnumServicesStatus; - alias GetServiceDisplayNameA GetServiceDisplayName; - alias GetServiceKeyNameA GetServiceKeyName; - alias OpenSCManagerA OpenSCManager; - alias OpenServiceA OpenService; - alias QueryServiceConfigA QueryServiceConfig; - alias QueryServiceLockStatusA QueryServiceLockStatus; - alias RegisterServiceCtrlHandlerA RegisterServiceCtrlHandler; - alias StartServiceA StartService; - alias StartServiceCtrlDispatcherA StartServiceCtrlDispatcher; - - static if (_WIN32_WINNT >= 0x500) { - alias ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS; - alias SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION; - alias SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; - alias EnumServicesStatusExA EnumServicesStatusEx; - alias QueryServiceConfig2A QueryServiceConfig2; - alias RegisterServiceCtrlHandlerExA RegisterServiceCtrlHandlerEx; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ChangeServiceConfig2A ChangeServiceConfig2; - } - -} - -alias ENUM_SERVICE_STATUS* LPENUM_SERVICE_STATUS; -alias QUERY_SERVICE_CONFIG* LPQUERY_SERVICE_CONFIG; -alias QUERY_SERVICE_LOCK_STATUS* LPQUERY_SERVICE_LOCK_STATUS; -alias SERVICE_TABLE_ENTRY* LPSERVICE_TABLE_ENTRY; - -static if (_WIN32_WINNT >= 0x500) { - alias ENUM_SERVICE_STATUS_PROCESS* LPENUM_SERVICE_STATUS_PROCESS; - alias SERVICE_DESCRIPTION* LPSERVICE_DESCRIPTION; - alias SERVICE_FAILURE_ACTIONS* LPSERVICE_FAILURE_ACTIONS; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winsvc.d) + */ +module core.sys.windows.winsvc; +pragma(lib, "advapi32"); + +private import core.sys.windows.w32api, core.sys.windows.windef; + +// FIXME: check Windows version support + +const TCHAR[] + SERVICES_ACTIVE_DATABASE = "ServicesActive", + SERVICES_FAILED_DATABASE = "ServicesFailed"; + +const TCHAR SC_GROUP_IDENTIFIER = '+'; + +const DWORD + SC_MANAGER_ALL_ACCESS = 0xf003f, + SC_MANAGER_CONNECT = 1, + SC_MANAGER_CREATE_SERVICE = 2, + SC_MANAGER_ENUMERATE_SERVICE = 4, + SC_MANAGER_LOCK = 8, + SC_MANAGER_QUERY_LOCK_STATUS = 16, + SC_MANAGER_MODIFY_BOOT_CONFIG = 32; + +const DWORD SERVICE_NO_CHANGE = 0xffffffff; + +enum : DWORD { + SERVICE_STOPPED = 1, + SERVICE_START_PENDING, + SERVICE_STOP_PENDING, + SERVICE_RUNNING, + SERVICE_CONTINUE_PENDING, + SERVICE_PAUSE_PENDING, + SERVICE_PAUSED // = 7 +} + +const DWORD + SERVICE_ACCEPT_STOP = 1, + SERVICE_ACCEPT_PAUSE_CONTINUE = 2, + SERVICE_ACCEPT_SHUTDOWN = 4, + SERVICE_ACCEPT_PARAMCHANGE = 8, + SERVICE_ACCEPT_NETBINDCHANGE = 16, + SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32, + SERVICE_ACCEPT_POWEREVENT = 64, + SERVICE_ACCEPT_SESSIONCHANGE = 128; + +enum : DWORD { + SERVICE_CONTROL_STOP = 1, + SERVICE_CONTROL_PAUSE, + SERVICE_CONTROL_CONTINUE, + SERVICE_CONTROL_INTERROGATE, + SERVICE_CONTROL_SHUTDOWN, + SERVICE_CONTROL_PARAMCHANGE, + SERVICE_CONTROL_NETBINDADD, + SERVICE_CONTROL_NETBINDREMOVE, + SERVICE_CONTROL_NETBINDENABLE, + SERVICE_CONTROL_NETBINDDISABLE, + SERVICE_CONTROL_DEVICEEVENT, + SERVICE_CONTROL_HARDWAREPROFILECHANGE, + SERVICE_CONTROL_POWEREVENT, + SERVICE_CONTROL_SESSIONCHANGE, // = 14 +} + +enum : DWORD { + SERVICE_ACTIVE = 1, + SERVICE_INACTIVE, + SERVICE_STATE_ALL +} + +const DWORD + SERVICE_QUERY_CONFIG = 0x0001, + SERVICE_CHANGE_CONFIG = 0x0002, + SERVICE_QUERY_STATUS = 0x0004, + SERVICE_ENUMERATE_DEPENDENTS = 0x0008, + SERVICE_START = 0x0010, + SERVICE_STOP = 0x0020, + SERVICE_PAUSE_CONTINUE = 0x0040, + SERVICE_INTERROGATE = 0x0080, + SERVICE_USER_DEFINED_CONTROL = 0x0100, + SERVICE_ALL_ACCESS = 0x01FF | STANDARD_RIGHTS_REQUIRED; + +// This is not documented on the MSDN site +const SERVICE_RUNS_IN_SYSTEM_PROCESS = 1; + +enum : DWORD { + SERVICE_CONFIG_DESCRIPTION = 1, + SERVICE_CONFIG_FAILURE_ACTIONS, + SERVICE_CONFIG_DELAYED_AUTO_START_INFO, + SERVICE_CONFIG_FAILURE_ACTIONS_FLAG, + SERVICE_CONFIG_SERVICE_SID_INFO, + SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO, + SERVICE_CONFIG_PRESHUTDOWN_INFO // = 7 +} + +struct SERVICE_STATUS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; +} +alias SERVICE_STATUS* LPSERVICE_STATUS; + +struct ENUM_SERVICE_STATUSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; +} +alias ENUM_SERVICE_STATUSA* LPENUM_SERVICE_STATUSA; + +struct ENUM_SERVICE_STATUSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; +} +alias ENUM_SERVICE_STATUSW* LPENUM_SERVICE_STATUSW; + +struct QUERY_SERVICE_CONFIGA { + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPSTR lpBinaryPathName; + LPSTR lpLoadOrderGroup; + DWORD dwTagId; + LPSTR lpDependencies; + LPSTR lpServiceStartName; + LPSTR lpDisplayName; +} +alias QUERY_SERVICE_CONFIGA* LPQUERY_SERVICE_CONFIGA; + +struct QUERY_SERVICE_CONFIGW { + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPWSTR lpBinaryPathName; + LPWSTR lpLoadOrderGroup; + DWORD dwTagId; + LPWSTR lpDependencies; + LPWSTR lpServiceStartName; + LPWSTR lpDisplayName; +} +alias QUERY_SERVICE_CONFIGW* LPQUERY_SERVICE_CONFIGW; + +struct QUERY_SERVICE_LOCK_STATUSA { + DWORD fIsLocked; + LPSTR lpLockOwner; + DWORD dwLockDuration; +} +alias QUERY_SERVICE_LOCK_STATUSA* LPQUERY_SERVICE_LOCK_STATUSA; + +struct QUERY_SERVICE_LOCK_STATUSW { + DWORD fIsLocked; + LPWSTR lpLockOwner; + DWORD dwLockDuration; +} +alias QUERY_SERVICE_LOCK_STATUSW* LPQUERY_SERVICE_LOCK_STATUSW; + +extern (Windows) { + alias void function(DWORD, LPSTR*) LPSERVICE_MAIN_FUNCTIONA; + alias void function(DWORD, LPWSTR*) LPSERVICE_MAIN_FUNCTIONW; +} + +struct SERVICE_TABLE_ENTRYA { + LPSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONA lpServiceProc; +} +alias SERVICE_TABLE_ENTRYA* LPSERVICE_TABLE_ENTRYA; + +struct SERVICE_TABLE_ENTRYW { + LPWSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONW lpServiceProc; +} +alias SERVICE_TABLE_ENTRYW* LPSERVICE_TABLE_ENTRYW; + +mixin DECLARE_HANDLE!("SC_HANDLE"); +alias SC_HANDLE* LPSC_HANDLE; +alias void* SC_LOCK; +mixin DECLARE_HANDLE!("SERVICE_STATUS_HANDLE"); + +extern (Windows) { + alias void function(DWORD) LPHANDLER_FUNCTION; + alias DWORD function(DWORD, DWORD, LPVOID, LPVOID) LPHANDLER_FUNCTION_EX; +} + +static if (_WIN32_WINNT >= 0x500) { + struct SERVICE_STATUS_PROCESS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; + DWORD dwProcessId; + DWORD dwServiceFlags; + } + alias SERVICE_STATUS_PROCESS* LPSERVICE_STATUS_PROCESS; + + enum SC_STATUS_TYPE { + SC_STATUS_PROCESS_INFO = 0 + } + + enum SC_ENUM_TYPE { + SC_ENUM_PROCESS_INFO = 0 + } + + struct ENUM_SERVICE_STATUS_PROCESSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; + } + alias ENUM_SERVICE_STATUS_PROCESSA* LPENUM_SERVICE_STATUS_PROCESSA; + + struct ENUM_SERVICE_STATUS_PROCESSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; + } + alias ENUM_SERVICE_STATUS_PROCESSW* LPENUM_SERVICE_STATUS_PROCESSW; + + struct SERVICE_DESCRIPTIONA { + LPSTR lpDescription; + } + alias SERVICE_DESCRIPTIONA* LPSERVICE_DESCRIPTIONA; + + struct SERVICE_DESCRIPTIONW { + LPWSTR lpDescription; + } + alias SERVICE_DESCRIPTIONW* LPSERVICE_DESCRIPTIONW; + + enum SC_ACTION_TYPE { + SC_ACTION_NONE, + SC_ACTION_RESTART, + SC_ACTION_REBOOT, + SC_ACTION_RUN_COMMAND + } + + struct SC_ACTION { + SC_ACTION_TYPE Type; + DWORD Delay; + } + alias SC_ACTION* LPSC_ACTION; + + struct SERVICE_FAILURE_ACTIONSA { + DWORD dwResetPeriod; + LPSTR lpRebootMsg; + LPSTR lpCommand; + DWORD cActions; + SC_ACTION* lpsaActions; + } + alias SERVICE_FAILURE_ACTIONSA* LPSERVICE_FAILURE_ACTIONSA; + + struct SERVICE_FAILURE_ACTIONSW { + DWORD dwResetPeriod; + LPWSTR lpRebootMsg; + LPWSTR lpCommand; + DWORD cActions; + SC_ACTION* lpsaActions; + } + alias SERVICE_FAILURE_ACTIONSW* LPSERVICE_FAILURE_ACTIONSW; +} + +extern (Windows) { + BOOL ChangeServiceConfigA(SC_HANDLE, DWORD, DWORD, DWORD, LPCSTR, + LPCSTR, LPDWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR); + BOOL ChangeServiceConfigW(SC_HANDLE, DWORD, DWORD, DWORD, LPCWSTR, + LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL CloseServiceHandle(SC_HANDLE); + BOOL ControlService(SC_HANDLE, DWORD, LPSERVICE_STATUS); + SC_HANDLE CreateServiceA(SC_HANDLE, LPCSTR, LPCSTR, DWORD, DWORD, + DWORD, DWORD, LPCSTR, LPCSTR, PDWORD, LPCSTR, LPCSTR, LPCSTR); + SC_HANDLE CreateServiceW(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD, + DWORD, DWORD, LPCWSTR, LPCWSTR, PDWORD, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL DeleteService(SC_HANDLE); + BOOL EnumDependentServicesA(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSA, + DWORD, PDWORD, PDWORD); + BOOL EnumDependentServicesW(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSW, + DWORD, PDWORD, PDWORD); + BOOL EnumServicesStatusA(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSA, + DWORD, PDWORD, PDWORD, PDWORD); + BOOL EnumServicesStatusW(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSW, + DWORD, PDWORD, PDWORD, PDWORD); + BOOL GetServiceDisplayNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); + BOOL GetServiceDisplayNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); + BOOL GetServiceKeyNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); + BOOL GetServiceKeyNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); + SC_LOCK LockServiceDatabase(SC_HANDLE); + BOOL NotifyBootConfigStatus(BOOL); + SC_HANDLE OpenSCManagerA(LPCSTR, LPCSTR, DWORD); + SC_HANDLE OpenSCManagerW(LPCWSTR, LPCWSTR, DWORD); + SC_HANDLE OpenServiceA(SC_HANDLE, LPCSTR, DWORD); + SC_HANDLE OpenServiceW(SC_HANDLE, LPCWSTR, DWORD); + BOOL QueryServiceConfigA(SC_HANDLE, LPQUERY_SERVICE_CONFIGA, DWORD, + PDWORD); + BOOL QueryServiceConfigW(SC_HANDLE, LPQUERY_SERVICE_CONFIGW, DWORD, + PDWORD); + BOOL QueryServiceLockStatusA(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSA, + DWORD, PDWORD); + BOOL QueryServiceLockStatusW(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSW, + DWORD, PDWORD); + BOOL QueryServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, LPDWORD); + BOOL QueryServiceStatus(SC_HANDLE, LPSERVICE_STATUS); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(LPCSTR, + LPHANDLER_FUNCTION); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(LPCWSTR, + LPHANDLER_FUNCTION); + BOOL SetServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + BOOL SetServiceStatus(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS); + BOOL StartServiceA(SC_HANDLE, DWORD, LPCSTR*); + BOOL StartServiceW(SC_HANDLE, DWORD, LPCWSTR*); + BOOL StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA); + BOOL StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW); + BOOL UnlockServiceDatabase(SC_LOCK); + + static if (_WIN32_WINNT >= 0x500) { + BOOL EnumServicesStatusExA(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, + DWORD, LPDWORD, LPDWORD, LPDWORD, LPCSTR); + BOOL EnumServicesStatusExW(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, + DWORD, LPDWORD, LPDWORD, LPDWORD, LPCWSTR); + BOOL QueryServiceConfig2A(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); + BOOL QueryServiceConfig2W(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); + BOOL QueryServiceStatusEx(SC_HANDLE, SC_STATUS_TYPE, LPBYTE, DWORD, + LPDWORD); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(LPCSTR, + LPHANDLER_FUNCTION_EX, LPVOID); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(LPCWSTR, + LPHANDLER_FUNCTION_EX, LPVOID); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL ChangeServiceConfig2A(SC_HANDLE, DWORD, LPVOID); + BOOL ChangeServiceConfig2W(SC_HANDLE, DWORD, LPVOID); + } +} + +version (Unicode) { + alias ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS; + alias QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG; + alias QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS; + alias LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION; + alias SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY; + alias ChangeServiceConfigW ChangeServiceConfig; + alias CreateServiceW CreateService; + alias EnumDependentServicesW EnumDependentServices; + alias EnumServicesStatusW EnumServicesStatus; + alias GetServiceDisplayNameW GetServiceDisplayName; + alias GetServiceKeyNameW GetServiceKeyName; + alias OpenSCManagerW OpenSCManager; + alias OpenServiceW OpenService; + alias QueryServiceConfigW QueryServiceConfig; + alias QueryServiceLockStatusW QueryServiceLockStatus; + alias RegisterServiceCtrlHandlerW RegisterServiceCtrlHandler; + alias StartServiceW StartService; + alias StartServiceCtrlDispatcherW StartServiceCtrlDispatcher; + + static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS; + alias EnumServicesStatusExW EnumServicesStatusEx; + alias QueryServiceConfig2W QueryServiceConfig2; + alias RegisterServiceCtrlHandlerExW RegisterServiceCtrlHandlerEx; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ChangeServiceConfig2W ChangeServiceConfig2; + } + +} else { + alias ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS; + alias QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG; + alias QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS; + alias LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION; + alias SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY; + alias ChangeServiceConfigA ChangeServiceConfig; + alias CreateServiceA CreateService; + alias EnumDependentServicesA EnumDependentServices; + alias EnumServicesStatusA EnumServicesStatus; + alias GetServiceDisplayNameA GetServiceDisplayName; + alias GetServiceKeyNameA GetServiceKeyName; + alias OpenSCManagerA OpenSCManager; + alias OpenServiceA OpenService; + alias QueryServiceConfigA QueryServiceConfig; + alias QueryServiceLockStatusA QueryServiceLockStatus; + alias RegisterServiceCtrlHandlerA RegisterServiceCtrlHandler; + alias StartServiceA StartService; + alias StartServiceCtrlDispatcherA StartServiceCtrlDispatcher; + + static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; + alias EnumServicesStatusExA EnumServicesStatusEx; + alias QueryServiceConfig2A QueryServiceConfig2; + alias RegisterServiceCtrlHandlerExA RegisterServiceCtrlHandlerEx; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ChangeServiceConfig2A ChangeServiceConfig2; + } + +} + +alias ENUM_SERVICE_STATUS* LPENUM_SERVICE_STATUS; +alias QUERY_SERVICE_CONFIG* LPQUERY_SERVICE_CONFIG; +alias QUERY_SERVICE_LOCK_STATUS* LPQUERY_SERVICE_LOCK_STATUS; +alias SERVICE_TABLE_ENTRY* LPSERVICE_TABLE_ENTRY; + +static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESS* LPENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTION* LPSERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONS* LPSERVICE_FAILURE_ACTIONS; +} diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 170db7b536..6316bded35 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -1,4888 +1,4888 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winuser.d) - */ -module core.sys.windows.winuser; -pragma(lib, "user32"); - -// Conversion Notes: -// The following macros were for win16 only, and are not included in this file: -//#define EnumTaskWindows(h, f, p) EnumThreadWindows((DWORD)h, f, p) -//#define PostAppMessageA(t, m, w, l) PostThreadMessageA((DWORD)t, m, w, l) -//#define PostAppMessageW(t, m, w, l) PostThreadMessageW((DWORD)t, m, w, l) -//#define GetSysModalWindow() (NULL) -//#define SetSysModalWindow(h) (NULL) -//#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL)) -//#define DefHookProc(c, p, lp, h) CallNextHookEx((HHOOK)*h, c, p, lp) - -private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.wingdi; -private import core.sys.windows.windef; // for HMONITOR - -// FIXME: clean up Windows version support - -LPTSTR MAKEINTATOM_T()(int i) { - return cast(LPTSTR) i; -} - -enum LPTSTR WC_DIALOG = MAKEINTATOM_T(0x8002); - -enum { - FAPPCOMMAND_MOUSE = 0x8000, - FAPPCOMMAND_KEY = 0, - FAPPCOMMAND_OEM = 0x1000, - FAPPCOMMAND_MASK = 0xF000 -} - -enum { - MNGO_NOINTERFACE = 0, - MNGO_NOERROR, - MNGOF_TOPGAP = 1, - MNGOF_BOTTOMGAP -} - -enum { - FVIRTKEY = 1, - FNOINVERT = 2, - FSHIFT = 4, - FCONTROL = 8, - FALT = 16 -} - -enum { - ATF_TIMEOUTON = 1, - ATF_ONOFFFEEDBACK = 2, - ATF_AVAILABLE = 4 // May be obsolete. Not in recent MS docs. -} - -enum { - WH_MIN = -1, - WH_MSGFILTER = -1, - WH_JOURNALRECORD, - WH_JOURNALPLAYBACK, - WH_KEYBOARD, - WH_GETMESSAGE, - WH_CALLWNDPROC, - WH_CBT, - WH_SYSMSGFILTER, - WH_MOUSE, - WH_HARDWARE, - WH_DEBUG, - WH_SHELL, - WH_FOREGROUNDIDLE, - WH_CALLWNDPROCRET, - WH_KEYBOARD_LL, - WH_MOUSE_LL, // = 14 - WH_MAX = 14, - WH_MINHOOK = WH_MIN, - WH_MAXHOOK = WH_MAX -} - -enum { - HC_ACTION = 0, - HC_GETNEXT, - HC_SKIP, - HC_NOREMOVE, // = 3 - HC_NOREM = HC_NOREMOVE, - HC_SYSMODALON, - HC_SYSMODALOFF -} - -enum { - HCBT_MOVESIZE = 0, - HCBT_MINMAX, - HCBT_QS, - HCBT_CREATEWND, - HCBT_DESTROYWND, - HCBT_ACTIVATE, - HCBT_CLICKSKIPPED, - HCBT_KEYSKIPPED, - HCBT_SYSCOMMAND, - HCBT_SETFOCUS // = 9 -} - -enum { - CF_TEXT = 0x0001, - CF_BITMAP, - CF_METAFILEPICT, - CF_SYLK, - CF_DIF, - CF_TIFF, - CF_OEMTEXT, - CF_DIB, - CF_PALETTE, - CF_PENDATA, - CF_RIFF, - CF_WAVE, - CF_UNICODETEXT, - CF_ENHMETAFILE, - CF_HDROP, - CF_LOCALE, - CF_DIBV5, - CF_MAX, // = 0x0012 - CF_OWNERDISPLAY = 0x0080, - CF_DSPTEXT, - CF_DSPBITMAP, - CF_DSPMETAFILEPICT, // = 0x0083 - CF_DSPENHMETAFILE = 0x008E, - CF_PRIVATEFIRST = 0x0200, - CF_PRIVATELAST = 0x02FF, - CF_GDIOBJFIRST = 0x0300, - CF_GDIOBJLAST = 0x03FF -} - -enum HKL_PREV = 0; -enum HKL_NEXT = 1; - -enum KLF_ACTIVATE = 1; -enum KLF_SUBSTITUTE_OK = 2; -enum KLF_UNLOADPREVIOUS = 4; -enum KLF_REORDER = 8; -enum KLF_REPLACELANG = 16; -enum KLF_NOTELLSHELL = 128; -enum KLF_SETFORPROCESS = 256; -enum KL_NAMELENGTH = 9; - -enum MF_ENABLED = 0; -enum MF_GRAYED = 1; -enum MF_DISABLED = 2; -enum MF_BITMAP = 4; -enum MF_CHECKED = 8; -enum MF_MENUBARBREAK = 32; -enum MF_MENUBREAK = 64; -enum MF_OWNERDRAW = 256; -enum MF_POPUP = 16; -enum MF_SEPARATOR = 0x800; -enum MF_STRING = 0; -enum MF_UNCHECKED = 0; -enum MF_DEFAULT = 4096; -enum MF_SYSMENU = 0x2000; -enum MF_HELP = 0x4000; -enum MF_END = 128; -enum MF_RIGHTJUSTIFY = 0x4000; -enum MF_MOUSESELECT = 0x8000; -enum MF_INSERT = 0; -enum MF_CHANGE = 128; -enum MF_APPEND = 256; -enum MF_DELETE = 512; -enum MF_REMOVE = 4096; -enum MF_USECHECKBITMAPS = 512; -enum MF_UNHILITE = 0; -enum MF_HILITE = 128; - -// Also defined in dbt.h -enum BSM_ALLCOMPONENTS = 0; -enum BSM_VXDS = 1; -enum BSM_NETDRIVER = 2; -enum BSM_INSTALLABLEDRIVERS = 4; -enum BSM_APPLICATIONS = 8; -enum BSM_ALLDESKTOPS = 16; - -enum { - BSF_QUERY = 0x0001, - BSF_IGNORECURRENTTASK = 0x0002, - BSF_FLUSHDISK = 0x0004, - BSF_NOHANG = 0x0008, - BSF_POSTMESSAGE = 0x0010, - BSF_FORCEIFHUNG = 0x0020, - BSF_NOTIMEOUTIFNOTHUNG = 0x0040, - BSF_ALLOWSFW = 0x0080, - BSF_SENDNOTIFYMESSAGE = 0x0100 -} -static if (_WIN32_WINNT >= 0x501) { - enum { - BSF_RETURNHDESK = 0x0200, - BSF_LUID = 0x0400 - } -} - -enum BROADCAST_QUERY_DENY = 1112363332; -enum DWORD ENUM_CURRENT_SETTINGS = -1; -enum DWORD ENUM_REGISTRY_SETTINGS = -2; - -enum CDS_UPDATEREGISTRY = 1; -enum CDS_TEST = 2; -enum CDS_FULLSCREEN = 4; -enum CDS_GLOBAL = 8; -enum CDS_SET_PRIMARY = 16; -enum CDS_NORESET = 0x10000000; -enum CDS_SETRECT = 0x20000000; -enum CDS_RESET = 0x40000000; - -enum { - DISP_CHANGE_BADPARAM = -5, - DISP_CHANGE_BADFLAGS, - DISP_CHANGE_NOTUPDATED, - DISP_CHANGE_BADMODE, - DISP_CHANGE_FAILED, - DISP_CHANGE_SUCCESSFUL, - DISP_CHANGE_RESTART // = 1 -} - -enum BST_UNCHECKED = 0; -enum BST_CHECKED = 1; -enum BST_INDETERMINATE = 2; -enum BST_PUSHED = 4; -enum BST_FOCUS = 8; - -enum MF_BYCOMMAND = 0; -enum MF_BYPOSITION = 1024; -// [Redefined] MF_UNCHECKED = 0 -// [Redefined] MF_HILITE = 128 -// [Redefined] MF_UNHILITE = 0 - -enum CWP_ALL = 0; -enum CWP_SKIPINVISIBLE = 1; -enum CWP_SKIPDISABLED = 2; -enum CWP_SKIPTRANSPARENT = 4; - -enum IMAGE_BITMAP = 0; -enum IMAGE_ICON = 1; -enum IMAGE_CURSOR = 2; -enum IMAGE_ENHMETAFILE = 3; - -enum DF_ALLOWOTHERACCOUNTHOOK = 1; - -enum DESKTOP_READOBJECTS = 1; -enum DESKTOP_CREATEWINDOW = 2; -enum DESKTOP_CREATEMENU = 4; -enum DESKTOP_HOOKCONTROL = 8; -enum DESKTOP_JOURNALRECORD = 16; -enum DESKTOP_JOURNALPLAYBACK = 32; -enum DESKTOP_ENUMERATE = 64; -enum DESKTOP_WRITEOBJECTS = 128; -enum DESKTOP_SWITCHDESKTOP = 256; - -enum CW_USEDEFAULT = 0x80000000; - -enum { - WS_OVERLAPPED = 0, - WS_TILED = WS_OVERLAPPED, - WS_MAXIMIZEBOX = 0x00010000, - WS_MINIMIZEBOX = 0x00020000, - WS_TABSTOP = 0x00010000, - WS_GROUP = 0x00020000, - WS_THICKFRAME = 0x00040000, - WS_SIZEBOX = WS_THICKFRAME, - WS_SYSMENU = 0x00080000, - WS_HSCROLL = 0x00100000, - WS_VSCROLL = 0x00200000, - WS_DLGFRAME = 0x00400000, - WS_BORDER = 0x00800000, - WS_CAPTION = 0x00c00000, - WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, - WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, - WS_MAXIMIZE = 0x01000000, - WS_CLIPCHILDREN = 0x02000000, - WS_CLIPSIBLINGS = 0x04000000, - WS_DISABLED = 0x08000000, - WS_VISIBLE = 0x10000000, - WS_MINIMIZE = 0x20000000, - WS_ICONIC = WS_MINIMIZE, - WS_CHILD = 0x40000000, - WS_CHILDWINDOW = 0x40000000, - WS_POPUP = 0x80000000, - WS_POPUPWINDOW = WS_POPUP|WS_BORDER|WS_SYSMENU, -} - -enum MDIS_ALLCHILDSTYLES = 1; - -enum BS_3STATE = 5; -enum BS_AUTO3STATE = 6; -enum BS_AUTOCHECKBOX = 3; -enum BS_AUTORADIOBUTTON = 9; -enum BS_BITMAP = 128; -enum BS_BOTTOM = 0x800; -enum BS_CENTER = 0x300; -enum BS_CHECKBOX = 2; -enum BS_DEFPUSHBUTTON = 1; -enum BS_GROUPBOX = 7; -enum BS_ICON = 64; -enum BS_LEFT = 256; -enum BS_LEFTTEXT = 32; -enum BS_MULTILINE = 0x2000; -enum BS_NOTIFY = 0x4000; -enum BS_OWNERDRAW = 0xb; -enum BS_PUSHBUTTON = 0; -enum BS_PUSHLIKE = 4096; -enum BS_RADIOBUTTON = 4; -enum BS_RIGHT = 512; -enum BS_RIGHTBUTTON = 32; -enum BS_TEXT = 0; -enum BS_TOP = 0x400; -enum BS_USERBUTTON = 8; -enum BS_VCENTER = 0xc00; -enum BS_FLAT = 0x8000; - -enum CBS_AUTOHSCROLL = 64; -enum CBS_DISABLENOSCROLL = 0x800; -enum CBS_DROPDOWN = 2; -enum CBS_DROPDOWNLIST = 3; -enum CBS_HASSTRINGS = 512; -enum CBS_LOWERCASE = 0x4000; -enum CBS_NOINTEGRALHEIGHT = 0x400; -enum CBS_OEMCONVERT = 128; -enum CBS_OWNERDRAWFIXED = 16; -enum CBS_OWNERDRAWVARIABLE = 32; -enum CBS_SIMPLE = 1; -enum CBS_SORT = 256; -enum CBS_UPPERCASE = 0x2000; - -enum ES_AUTOHSCROLL = 128; -enum ES_AUTOVSCROLL = 64; -enum ES_CENTER = 1; -enum ES_LEFT = 0; -enum ES_LOWERCASE = 16; -enum ES_MULTILINE = 4; -enum ES_NOHIDESEL = 256; -enum ES_NUMBER = 0x2000; -enum ES_OEMCONVERT = 0x400; -enum ES_PASSWORD = 32; -enum ES_READONLY = 0x800; -enum ES_RIGHT = 2; -enum ES_UPPERCASE = 8; -enum ES_WANTRETURN = 4096; - -enum LBS_DISABLENOSCROLL = 4096; -enum LBS_EXTENDEDSEL = 0x800; -enum LBS_HASSTRINGS = 64; -enum LBS_MULTICOLUMN = 512; -enum LBS_MULTIPLESEL = 8; -enum LBS_NODATA = 0x2000; -enum LBS_NOINTEGRALHEIGHT = 256; -enum LBS_NOREDRAW = 4; -enum LBS_NOSEL = 0x4000; -enum LBS_NOTIFY = 1; -enum LBS_OWNERDRAWFIXED = 16; -enum LBS_OWNERDRAWVARIABLE = 32; -enum LBS_SORT = 2; -enum LBS_STANDARD = 0xa00003; -enum LBS_USETABSTOPS = 128; -enum LBS_WANTKEYBOARDINPUT = 0x400; - -enum SBS_BOTTOMALIGN = 4; -enum SBS_HORZ = 0; -enum SBS_LEFTALIGN = 2; -enum SBS_RIGHTALIGN = 4; -enum SBS_SIZEBOX = 8; -enum SBS_SIZEBOXBOTTOMRIGHTALIGN = 4; -enum SBS_SIZEBOXTOPLEFTALIGN = 2; -enum SBS_SIZEGRIP = 16; -enum SBS_TOPALIGN = 2; -enum SBS_VERT = 1; - -enum SS_BITMAP = 14; -enum SS_BLACKFRAME = 7; -enum SS_BLACKRECT = 4; -enum SS_CENTER = 1; -enum SS_CENTERIMAGE = 512; -enum SS_ENHMETAFILE = 15; -enum SS_ETCHEDFRAME = 18; -enum SS_ETCHEDHORZ = 16; -enum SS_ETCHEDVERT = 17; -enum SS_GRAYFRAME = 8; -enum SS_GRAYRECT = 5; -enum SS_ICON = 3; -enum SS_LEFT = 0; -enum SS_LEFTNOWORDWRAP = 0xc; -enum SS_NOPREFIX = 128; -enum SS_NOTIFY = 256; -enum SS_OWNERDRAW = 0xd; -enum SS_REALSIZEIMAGE = 0x800; -enum SS_RIGHT = 2; -enum SS_RIGHTJUST = 0x400; -enum SS_SIMPLE = 11; -enum SS_SUNKEN = 4096; -enum SS_WHITEFRAME = 9; -enum SS_WHITERECT = 6; -enum SS_USERITEM = 10; -enum SS_TYPEMASK = 0x0000001FL; -enum SS_ENDELLIPSIS = 0x00004000L; -enum SS_PATHELLIPSIS = 0x00008000L; -enum SS_WORDELLIPSIS = 0x0000C000L; -enum SS_ELLIPSISMASK = 0x0000C000L; - -enum DS_ABSALIGN = 0x0001; -enum DS_3DLOOK = 0x0004; -enum DS_SYSMODAL = 0x0002; -enum DS_FIXEDSYS = 0x0008; -enum DS_NOFAILCREATE = 0x0010; -enum DS_LOCALEDIT = 0x0020; -enum DS_SETFONT = 0x0040; -enum DS_MODALFRAME = 0x0080; -enum DS_NOIDLEMSG = 0x0100; -enum DS_SETFOREGROUND = 0x0200; -enum DS_CONTROL = 0x0400; -enum DS_CENTER = 0x0800; -enum DS_CENTERMOUSE = 0x1000; -enum DS_CONTEXTHELP = 0x2000; -enum DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS; - -enum WS_EX_ACCEPTFILES = 16; -enum WS_EX_APPWINDOW = 0x40000; -enum WS_EX_CLIENTEDGE = 512; -enum WS_EX_COMPOSITED = 0x2000000; // XP -enum WS_EX_CONTEXTHELP = 0x400; -enum WS_EX_CONTROLPARENT = 0x10000; -enum WS_EX_DLGMODALFRAME = 1; -enum WS_EX_LAYERED = 0x80000; // w2k -enum WS_EX_LAYOUTRTL = 0x400000; // w98, w2k -enum WS_EX_LEFT = 0; -enum WS_EX_LEFTSCROLLBAR = 0x4000; -enum WS_EX_LTRREADING = 0; -enum WS_EX_MDICHILD = 64; -enum WS_EX_NOACTIVATE = 0x8000000; // w2k -enum WS_EX_NOINHERITLAYOUT = 0x100000; // w2k -enum WS_EX_NOPARENTNOTIFY = 4; -enum WS_EX_OVERLAPPEDWINDOW = 0x300; -enum WS_EX_PALETTEWINDOW = 0x188; -enum WS_EX_RIGHT = 0x1000; -enum WS_EX_RIGHTSCROLLBAR = 0; -enum WS_EX_RTLREADING = 0x2000; -enum WS_EX_STATICEDGE = 0x20000; -enum WS_EX_TOOLWINDOW = 128; -enum WS_EX_TOPMOST = 8; -enum WS_EX_TRANSPARENT = 32; -enum WS_EX_WINDOWEDGE = 256; - -enum WINSTA_ENUMDESKTOPS = 1; -enum WINSTA_READATTRIBUTES = 2; -enum WINSTA_ACCESSCLIPBOARD = 4; -enum WINSTA_CREATEDESKTOP = 8; -enum WINSTA_WRITEATTRIBUTES = 16; -enum WINSTA_ACCESSGLOBALATOMS = 32; -enum WINSTA_EXITWINDOWS = 64; -enum WINSTA_ENUMERATE = 256; -enum WINSTA_READSCREEN = 512; - -enum DDL_READWRITE = 0; -enum DDL_READONLY = 1; -enum DDL_HIDDEN = 2; -enum DDL_SYSTEM = 4; -enum DDL_DIRECTORY = 16; -enum DDL_ARCHIVE = 32; -enum DDL_POSTMSGS = 8192; -enum DDL_DRIVES = 16384; -enum DDL_EXCLUSIVE = 32768; - -enum { - DC_ACTIVE = 0x0001, - DC_SMALLCAP = 0x0002, - DC_ICON = 0x0004, - DC_TEXT = 0x0008, - DC_INBUTTON = 0x0010, - DC_GRADIENT = 0x0020 -} -static if (_WIN32_WINNT >= 0x501) { - enum DC_BUTTONS = 0x1000; -} - -// Where are these documented? -//enum DC_CAPTION = DC_ICON|DC_TEXT|DC_BUTTONS; -//enum DC_NC = DC_CAPTION|DC_FRAME; - -enum BDR_RAISEDOUTER = 1; -enum BDR_SUNKENOUTER = 2; -enum BDR_RAISEDINNER = 4; -enum BDR_SUNKENINNER = 8; -enum BDR_OUTER = 3; -enum BDR_INNER = 0xc; -enum BDR_RAISED = 5; -enum BDR_SUNKEN = 10; - -enum EDGE_RAISED = BDR_RAISEDOUTER|BDR_RAISEDINNER; -enum EDGE_SUNKEN = BDR_SUNKENOUTER|BDR_SUNKENINNER; -enum EDGE_ETCHED = BDR_SUNKENOUTER|BDR_RAISEDINNER; -enum EDGE_BUMP = BDR_RAISEDOUTER|BDR_SUNKENINNER; - -enum BF_LEFT = 1; -enum BF_TOP = 2; -enum BF_RIGHT = 4; -enum BF_BOTTOM = 8; -enum BF_TOPLEFT = BF_TOP|BF_LEFT; -enum BF_TOPRIGHT = BF_TOP|BF_RIGHT; -enum BF_BOTTOMLEFT = BF_BOTTOM|BF_LEFT; -enum BF_BOTTOMRIGHT = BF_BOTTOM|BF_RIGHT; -enum BF_RECT = BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM ; -enum BF_DIAGONAL = 16; -enum BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL|BF_TOP|BF_RIGHT; -enum BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL|BF_TOP|BF_LEFT; -enum BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL|BF_BOTTOM|BF_LEFT; -enum BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL|BF_BOTTOM|BF_RIGHT; -enum BF_MIDDLE = 0x800; -enum BF_SOFT = 0x1000; -enum BF_ADJUST = 0x2000; -enum BF_FLAT = 0x4000; -enum BF_MONO = 0x8000; - -enum { - DFC_CAPTION = 1, - DFC_MENU, - DFC_SCROLL, - DFC_BUTTON, - DFC_POPUPMENU // = 5 -} - -enum { - DFCS_CAPTIONCLOSE, - DFCS_CAPTIONMIN, - DFCS_CAPTIONMAX, - DFCS_CAPTIONRESTORE, - DFCS_CAPTIONHELP // = 4 -} - -enum { - DFCS_MENUARROW = 0, - DFCS_MENUCHECK = 1, - DFCS_MENUBULLET = 2, - DFCS_MENUARROWRIGHT = 4 -} - -enum { - DFCS_SCROLLUP = 0, - DFCS_SCROLLDOWN = 1, - DFCS_SCROLLLEFT = 2, - DFCS_SCROLLRIGHT = 3, - DFCS_SCROLLCOMBOBOX = 5, - DFCS_SCROLLSIZEGRIP = 8, - DFCS_SCROLLSIZEGRIPRIGHT = 16 -} - -enum { - DFCS_BUTTONCHECK = 0, - DFCS_BUTTONRADIOIMAGE = 0x0001, - DFCS_BUTTONRADIOMASK = 0x0002, - DFCS_BUTTONRADIO = 0x0004, - DFCS_BUTTON3STATE = 0x0008, - DFCS_BUTTONPUSH = 0x0010, - DFCS_INACTIVE = 0x0100, - DFCS_PUSHED = 0x0200, - DFCS_CHECKED = 0x0400, - DFCS_TRANSPARENT = 0x0800, - DFCS_HOT = 0x1000, - DFCS_ADJUSTRECT = 0x2000, - DFCS_FLAT = 0x4000, - DFCS_MONO = 0x8000 -} - -enum { - DST_COMPLEX = 0, - DST_TEXT, - DST_PREFIXTEXT, - DST_ICON, - DST_BITMAP // = 4 -} - -enum DSS_NORMAL = 0; -enum DSS_UNION = 16; -enum DSS_DISABLED = 32; -enum DSS_MONO = 128; -enum DSS_RIGHT = 0x8000; - -enum DT_BOTTOM = 8; -enum DT_CALCRECT = 1024; -enum DT_CENTER = 1; -enum DT_EDITCONTROL = 8192; -enum DT_END_ELLIPSIS = 32768; -enum DT_PATH_ELLIPSIS = 16384; -enum DT_WORD_ELLIPSIS = 0x40000; -enum DT_EXPANDTABS = 64; -enum DT_EXTERNALLEADING = 512; -enum DT_LEFT = 0; -enum DT_MODIFYSTRING = 65536; -enum DT_NOCLIP = 256; -enum DT_NOPREFIX = 2048; -enum DT_RIGHT = 2; -enum DT_RTLREADING = 131072; -enum DT_SINGLELINE = 32; -enum DT_TABSTOP = 128; -enum DT_TOP = 0; -enum DT_VCENTER = 4; -enum DT_WORDBREAK = 16; -enum DT_INTERNAL = 4096; - -enum WB_ISDELIMITER = 2; -enum WB_LEFT = 0; -enum WB_RIGHT = 1; - -enum SB_HORZ = 0; -enum SB_VERT = 1; -enum SB_CTL = 2; -enum SB_BOTH = 3; - -enum ESB_DISABLE_BOTH = 3; -enum ESB_DISABLE_DOWN = 2; -enum ESB_DISABLE_LEFT = 1; -enum ESB_DISABLE_LTUP = 1; -enum ESB_DISABLE_RIGHT = 2; -enum ESB_DISABLE_RTDN = 2; -enum ESB_DISABLE_UP = 1; -enum ESB_ENABLE_BOTH = 0; - -enum SB_LINEUP = 0; -enum SB_LINEDOWN = 1; -enum SB_LINELEFT = 0; -enum SB_LINERIGHT = 1; -enum SB_PAGEUP = 2; -enum SB_PAGEDOWN = 3; -enum SB_PAGELEFT = 2; -enum SB_PAGERIGHT = 3; -enum SB_THUMBPOSITION = 4; -enum SB_THUMBTRACK = 5; -enum SB_ENDSCROLL = 8; -enum SB_LEFT = 6; -enum SB_RIGHT = 7; -enum SB_BOTTOM = 7; -enum SB_TOP = 6; - -//MACRO #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0) - -template MAKEINTRESOURCE_T(WORD i) { - enum LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i); -} - -LPSTR MAKEINTRESOURCEA()(WORD i) { - return cast(LPSTR) i; -} - -LPWSTR MAKEINTRESOURCEW()(WORD i) { - return cast(LPWSTR) i; -} - -enum RT_CURSOR = MAKEINTRESOURCE_T!(1); -enum RT_BITMAP = MAKEINTRESOURCE_T!(2); -enum RT_ICON = MAKEINTRESOURCE_T!(3); -enum RT_MENU = MAKEINTRESOURCE_T!(4); -enum RT_DIALOG = MAKEINTRESOURCE_T!(5); -enum RT_STRING = MAKEINTRESOURCE_T!(6); -enum RT_FONTDIR = MAKEINTRESOURCE_T!(7); -enum RT_FONT = MAKEINTRESOURCE_T!(8); -enum RT_ACCELERATOR = MAKEINTRESOURCE_T!(9); -enum RT_RCDATA = MAKEINTRESOURCE_T!(10); -enum RT_MESSAGETABLE = MAKEINTRESOURCE_T!(11); - -enum RT_GROUP_CURSOR = MAKEINTRESOURCE_T!(12); -enum RT_GROUP_ICON = MAKEINTRESOURCE_T!(14); -enum RT_VERSION = MAKEINTRESOURCE_T!(16); -enum RT_DLGINCLUDE = MAKEINTRESOURCE_T!(17); -enum RT_PLUGPLAY = MAKEINTRESOURCE_T!(19); -enum RT_VXD = MAKEINTRESOURCE_T!(20); -enum RT_ANICURSOR = MAKEINTRESOURCE_T!(21); -enum RT_ANIICON = MAKEINTRESOURCE_T!(22); -enum RT_HTML = MAKEINTRESOURCE_T!(23); -enum RT_MANIFEST = MAKEINTRESOURCE_T!(24); - -enum CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(1); -enum ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(2); -enum ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(3); - -enum { - EWX_LOGOFF = 0, - EWX_SHUTDOWN = 1, - EWX_REBOOT = 2, - EWX_FORCE = 4, - EWX_POWEROFF = 8, - EWX_FORCEIFHUNG = 16 -} - -enum CS_BYTEALIGNCLIENT = 4096; -enum CS_BYTEALIGNWINDOW = 8192; -enum CS_KEYCVTWINDOW = 4; -enum CS_NOKEYCVT = 256; -enum CS_CLASSDC = 64; -enum CS_DBLCLKS = 8; -enum CS_GLOBALCLASS = 16384; -enum CS_HREDRAW = 2; -enum CS_NOCLOSE = 512; -enum CS_OWNDC = 32; -enum CS_PARENTDC = 128; -enum CS_SAVEBITS = 2048; -enum CS_VREDRAW = 1; -enum CS_IME = 0x10000; - -enum GCW_ATOM = -32; -enum GCL_CBCLSEXTRA = -20; -enum GCL_CBWNDEXTRA = -18; -enum GCL_HBRBACKGROUND = -10; -enum GCL_HCURSOR = -12; -enum GCL_HICON = -14; -enum GCL_HICONSM = -34; -enum GCL_HMODULE = -16; -enum GCL_MENUNAME = -8; -enum GCL_STYLE = -26; -enum GCL_WNDPROC = -24; - -alias GCL_HICONSM GCLP_HICONSM; -alias GCL_HICON GCLP_HICON; -alias GCL_HCURSOR GCLP_HCURSOR; -alias GCL_HBRBACKGROUND GCLP_HBRBACKGROUND; -alias GCL_HMODULE GCLP_HMODULE; -alias GCL_MENUNAME GCLP_MENUNAME; -alias GCL_WNDPROC GCLP_WNDPROC; - -enum { - IDC_ARROW = MAKEINTRESOURCE_T!(32512), - IDC_IBEAM = MAKEINTRESOURCE_T!(32513), - IDC_WAIT = MAKEINTRESOURCE_T!(32514), - IDC_CROSS = MAKEINTRESOURCE_T!(32515), - IDC_UPARROW = MAKEINTRESOURCE_T!(32516), - IDC_SIZE = MAKEINTRESOURCE_T!(32640), - IDC_ICON = MAKEINTRESOURCE_T!(32641), - IDC_SIZENWSE = MAKEINTRESOURCE_T!(32642), - IDC_SIZENESW = MAKEINTRESOURCE_T!(32643), - IDC_SIZEWE = MAKEINTRESOURCE_T!(32644), - IDC_SIZENS = MAKEINTRESOURCE_T!(32645), - IDC_SIZEALL = MAKEINTRESOURCE_T!(32646), - IDC_NO = MAKEINTRESOURCE_T!(32648), - IDC_HAND = MAKEINTRESOURCE_T!(32649), - IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650), - IDC_HELP = MAKEINTRESOURCE_T!(32651), - IDI_APPLICATION = MAKEINTRESOURCE_T!(32512), - IDI_HAND = MAKEINTRESOURCE_T!(32513), - IDI_QUESTION = MAKEINTRESOURCE_T!(32514), - IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515), - IDI_ASTERISK = MAKEINTRESOURCE_T!(32516), - IDI_WINLOGO = MAKEINTRESOURCE_T!(32517), - IDI_WARNING = IDI_EXCLAMATION, - IDI_ERROR = IDI_HAND, - IDI_INFORMATION = IDI_ASTERISK -} -static if (_WIN32_WINNT >= 0x600) { - enum IDI_SHIELD = MAKEINTRESOURCE_T!(32518); -} - -enum { - MIIM_STATE = 0x0001, - MIIM_ID = 0x0002, - MIIM_SUBMENU = 0x0004, - MIIM_CHECKMARKS = 0x0008, - MIIM_TYPE = 0x0010, - MIIM_DATA = 0x0020, - MIIM_STRING = 0x0040, - MIIM_BITMAP = 0x0080, - MIIM_FTYPE = 0x0100 -} - -enum { - MFT_BITMAP = 0x0004, - MFT_MENUBARBREAK = 0x0020, - MFT_MENUBREAK = 0x0040, - MFT_OWNERDRAW = 0x0100, - MFT_RADIOCHECK = 0x0200, - MFT_RIGHTJUSTIFY = 0x4000, - MFT_SEPARATOR = 0x0800, - MFT_RIGHTORDER = 0x2000, - MFT_STRING = 0 -} - -enum { - MFS_CHECKED = 8, - MFS_DEFAULT = 4096, - MFS_DISABLED = 3, - MFS_ENABLED = 0, - MFS_GRAYED = 3, - MFS_HILITE = 128, - MFS_UNCHECKED = 0, - MFS_UNHILITE = 0 -} - -enum { - GW_HWNDFIRST = 0, - GW_HWNDLAST, - GW_HWNDNEXT, - GW_HWNDPREV, - GW_OWNER, - GW_CHILD // = 5 -} - -enum { - SW_HIDE = 0, - SW_NORMAL = 1, - SW_SHOWNORMAL = 1, - SW_SHOWMINIMIZED = 2, - SW_MAXIMIZE = 3, - SW_SHOWMAXIMIZED = 3, - SW_SHOWNOACTIVATE = 4, - SW_SHOW = 5, - SW_MINIMIZE = 6, - SW_SHOWMINNOACTIVE = 7, - SW_SHOWNA = 8, - SW_RESTORE = 9, - SW_SHOWDEFAULT = 10, - SW_FORCEMINIMIZE = 11, - SW_MAX = 11 -} - -enum { - SW_PARENTCLOSING = 1, - SW_OTHERZOOM, - SW_PARENTOPENING, - SW_OTHERUNZOOM // = 4 -} - -enum { // is this a different SW from the previous? - SW_SCROLLCHILDREN = 0x01, - SW_INVALIDATE = 0x02, - SW_ERASE = 0x04, - SW_SMOOTHSCROLL = 0x10 -} - -enum { - MB_OK = 0, - MB_OKCANCEL, - MB_ABORTRETRYIGNORE, - MB_YESNOCANCEL, - MB_YESNO, - MB_RETRYCANCEL, - MB_CANCELTRYCONTINUE, // = 6 - MB_TYPEMASK = 0x0000000F, - MB_ICONHAND = 0x00000010, - MB_ICONSTOP = MB_ICONHAND, - MB_ICONERROR = MB_ICONHAND, - MB_ICONQUESTION = 0x00000020, - MB_ICONEXCLAMATION = 0x00000030, - MB_ICONWARNING = MB_ICONEXCLAMATION, - MB_ICONASTERISK = 0x00000040, - MB_ICONINFORMATION = MB_ICONASTERISK, - MB_USERICON = 0x00000080, - MB_ICONMASK = 0x000000F0, - - MB_DEFBUTTON1 = 0, - MB_DEFBUTTON2 = 0x00000100, - MB_DEFBUTTON3 = 0x00000200, - MB_DEFBUTTON4 = 0x00000300, - MB_DEFMASK = 0x00000F00, - - MB_APPLMODAL = 0, - MB_SYSTEMMODAL = 0x00001000, - MB_TASKMODAL = 0x00002000, - MB_MODEMASK = 0x00003000, - - MB_HELP = 0x00004000, - MB_NOFOCUS = 0x00008000, - MB_MISCMASK = 0x0000C000, - - MB_SETFOREGROUND = 0x00010000, - MB_DEFAULT_DESKTOP_ONLY = 0x00020000, - MB_TOPMOST = 0x00040000, - MB_SERVICE_NOTIFICATION_NT3X = 0x00040000, - MB_RIGHT = 0x00080000, - MB_RTLREADING = 0x00100000, - MB_SERVICE_NOTIFICATION = 0x00200000 -} - -enum { - IDOK = 1, - IDCANCEL, - IDABORT, - IDRETRY, - IDIGNORE, - IDYES, - IDNO, - IDCLOSE, - IDHELP, - IDTRYAGAIN, - IDCONTINUE // = 11 -} - -enum GWL_EXSTYLE = -20; -enum GWL_STYLE = -16; -enum GWL_WNDPROC = -4; -enum GWLP_WNDPROC = -4; -enum GWL_HINSTANCE = -6; -enum GWLP_HINSTANCE = -6; -enum GWL_HWNDPARENT = -8; -enum GWLP_HWNDPARENT = -8; -enum GWL_ID = -12; -enum GWLP_ID = -12; -enum GWL_USERDATA = -21; -enum GWLP_USERDATA = -21; - -enum DWL_DLGPROC = 4; -enum DWLP_DLGPROC = 4; -enum DWL_MSGRESULT = 0; -enum DWLP_MSGRESULT = 0; -enum DWL_USER = 8; -enum DWLP_USER = 8; - -enum QS_KEY = 1; -enum QS_MOUSEMOVE = 2; -enum QS_MOUSEBUTTON = 4; -enum QS_MOUSE = 6; -enum QS_POSTMESSAGE = 8; -enum QS_TIMER = 16; -enum QS_PAINT = 32; -enum QS_SENDMESSAGE = 64; -enum QS_HOTKEY = 128; -enum QS_ALLPOSTMESSAGE = 256; -static if (_WIN32_WINNT >= 0x501) { -enum QS_RAWINPUT = 1024; -enum QS_INPUT = 1031; -enum QS_ALLEVENTS = 1215; -enum QS_ALLINPUT = 1279; -} else { -enum QS_INPUT = 7; -enum QS_ALLEVENTS = 191; -enum QS_ALLINPUT = 255; -} - -enum MWMO_WAITALL = 1; -enum MWMO_ALERTABLE = 2; -enum MWMO_INPUTAVAILABLE = 4; - -enum COLOR_3DDKSHADOW = 21; -enum COLOR_3DFACE = 15; -enum COLOR_3DHILIGHT = 20; -enum COLOR_3DHIGHLIGHT = 20; -enum COLOR_3DLIGHT = 22; -enum COLOR_BTNHILIGHT = 20; -enum COLOR_3DSHADOW = 16; -enum COLOR_ACTIVEBORDER = 10; -enum COLOR_ACTIVECAPTION = 2; -enum COLOR_APPWORKSPACE = 12; -enum COLOR_BACKGROUND = 1; -enum COLOR_DESKTOP = 1; -enum COLOR_BTNFACE = 15; -enum COLOR_BTNHIGHLIGHT = 20; -enum COLOR_BTNSHADOW = 16; -enum COLOR_BTNTEXT = 18; -enum COLOR_CAPTIONTEXT = 9; -enum COLOR_GRAYTEXT = 17; -enum COLOR_HIGHLIGHT = 13; -enum COLOR_HIGHLIGHTTEXT = 14; -enum COLOR_INACTIVEBORDER = 11; -enum COLOR_INACTIVECAPTION = 3; -enum COLOR_INACTIVECAPTIONTEXT = 19; -enum COLOR_INFOBK = 24; -enum COLOR_INFOTEXT = 23; -enum COLOR_MENU = 4; -enum COLOR_MENUTEXT = 7; -enum COLOR_SCROLLBAR = 0; -enum COLOR_WINDOW = 5; -enum COLOR_WINDOWFRAME = 6; -enum COLOR_WINDOWTEXT = 8; -enum COLOR_HOTLIGHT = 26; -enum COLOR_GRADIENTACTIVECAPTION = 27; -enum COLOR_GRADIENTINACTIVECAPTION = 28; - -enum CTLCOLOR_MSGBOX = 0; -enum CTLCOLOR_EDIT = 1; -enum CTLCOLOR_LISTBOX = 2; -enum CTLCOLOR_BTN = 3; -enum CTLCOLOR_DLG = 4; -enum CTLCOLOR_SCROLLBAR = 5; -enum CTLCOLOR_STATIC = 6; -enum CTLCOLOR_MAX = 7; - -// For GetSystemMetrics() -enum : int { - SM_CXSCREEN = 0, - SM_CYSCREEN, - SM_CXVSCROLL, - SM_CYHSCROLL, - SM_CYCAPTION, - SM_CXBORDER, - SM_CYBORDER, - SM_CXDLGFRAME, // = 7 - SM_CXFIXEDFRAME = SM_CXDLGFRAME, - SM_CYDLGFRAME, // = 8 - SM_CYFIXEDFRAME = SM_CYDLGFRAME, - SM_CYVTHUMB, // = 9 - SM_CXHTHUMB, - SM_CXICON, - SM_CYICON, - SM_CXCURSOR, - SM_CYCURSOR, - SM_CYMENU, - SM_CXFULLSCREEN, - SM_CYFULLSCREEN, - SM_CYKANJIWINDOW, - SM_MOUSEPRESENT, - SM_CYVSCROLL, - SM_CXHSCROLL, - SM_DEBUG, - SM_SWAPBUTTON, - SM_RESERVED1, - SM_RESERVED2, - SM_RESERVED3, - SM_RESERVED4, - SM_CXMIN, - SM_CYMIN, - SM_CXSIZE, - SM_CYSIZE, - SM_CXSIZEFRAME, // = 32, - SM_CXFRAME = SM_CXSIZEFRAME, - SM_CYSIZEFRAME, // = 33 - SM_CYFRAME = SM_CYSIZEFRAME, - SM_CXMINTRACK, - SM_CYMINTRACK, - SM_CXDOUBLECLK, - SM_CYDOUBLECLK, - SM_CXICONSPACING, - SM_CYICONSPACING, - SM_MENUDROPALIGNMENT, - SM_PENWINDOWS, - SM_DBCSENABLED, - SM_CMOUSEBUTTONS, - SM_SECURE, - SM_CXEDGE, - SM_CYEDGE, - SM_CXMINSPACING, - SM_CYMINSPACING, - SM_CXSMICON, - SM_CYSMICON, - SM_CYSMCAPTION, - SM_CXSMSIZE, - SM_CYSMSIZE, - SM_CXMENUSIZE, - SM_CYMENUSIZE, - SM_ARRANGE, - SM_CXMINIMIZED, - SM_CYMINIMIZED, - SM_CXMAXTRACK, - SM_CYMAXTRACK, - SM_CXMAXIMIZED, - SM_CYMAXIMIZED, - SM_NETWORK, // = 63 - SM_CLEANBOOT = 67, - SM_CXDRAG, - SM_CYDRAG, - SM_SHOWSOUNDS, - SM_CXMENUCHECK, - SM_CYMENUCHECK, - SM_SLOWMACHINE, - SM_MIDEASTENABLED, - SM_MOUSEWHEELPRESENT, - SM_XVIRTUALSCREEN, - SM_YVIRTUALSCREEN, - SM_CXVIRTUALSCREEN, - SM_CYVIRTUALSCREEN, - SM_CMONITORS, - SM_SAMEDISPLAYFORMAT, - SM_IMMENABLED, - SM_CXFOCUSBORDER, - SM_CYFOCUSBORDER, // = 84 - SM_TABLETPC = 86, - SM_MEDIACENTER, - SM_STARTER, // = 88 - SM_CMETRICS = 88, - SM_SERVERR2, - SM_REMOTESESSION = 0x1000, -} -static if (_WIN32_WINNT >= 0x501) { - enum { // These are only for WinXP and later - SM_SHUTTINGDOWN = 0x2000, - SM_REMOTECONTROL = 0x2001 - } -} - -enum ARW_BOTTOMLEFT = 0; -enum ARW_BOTTOMRIGHT = 1; -enum ARW_HIDE = 8; -enum ARW_TOPLEFT = 2; -enum ARW_TOPRIGHT = 3; -enum ARW_DOWN = 4; -enum ARW_LEFT = 0; -enum ARW_RIGHT = 0; -enum ARW_UP = 4; - -enum UOI_FLAGS = 1; -enum UOI_NAME = 2; -enum UOI_TYPE = 3; -enum UOI_USER_SID = 4; - -// For the fuLoad parameter of LoadImage() -enum : UINT { - LR_DEFAULTCOLOR = 0, - LR_MONOCHROME = 0x0001, - LR_COLOR = 0x0002, - LR_COPYRETURNORG = 0x0004, - LR_COPYDELETEORG = 0x0008, - LR_LOADFROMFILE = 0x0010, - LR_LOADTRANSPARENT = 0x0020, - LR_DEFAULTSIZE = 0x0040, - LR_VGACOLOR = 0x0080, - LR_LOADREALSIZE = 0x0080, - LR_LOADMAP3DCOLORS = 0x1000, - LR_CREATEDIBSECTION = 0x2000, - LR_COPYFROMRESOURCE = 0x4000, - LR_SHARED = 0x8000 -} - -enum { - KEYEVENTF_EXTENDEDKEY = 1, - KEYEVENTF_KEYUP = 2, - KEYEVENTF_UNICODE = 4, - KEYEVENTF_SCANCODE = 8 -} - -enum OBM_BTNCORNERS = 32758; -enum OBM_BTSIZE = 32761; -enum OBM_CHECK = 32760; -enum OBM_CHECKBOXES = 32759; -enum OBM_CLOSE = 32754; -enum OBM_COMBO = 32738; -enum OBM_DNARROW = 32752; -enum OBM_DNARROWD = 32742; -enum OBM_DNARROWI = 32736; -enum OBM_LFARROW = 32750; -enum OBM_LFARROWI = 32734; -enum OBM_LFARROWD = 32740; -enum OBM_MNARROW = 32739; -enum OBM_OLD_CLOSE = 32767; -enum OBM_OLD_DNARROW = 32764; -enum OBM_OLD_LFARROW = 32762; -enum OBM_OLD_REDUCE = 32757; -enum OBM_OLD_RESTORE = 32755; -enum OBM_OLD_RGARROW = 32763; -enum OBM_OLD_UPARROW = 32765; -enum OBM_OLD_ZOOM = 32756; -enum OBM_REDUCE = 32749; -enum OBM_REDUCED = 32746; -enum OBM_RESTORE = 32747; -enum OBM_RESTORED = 32744; -enum OBM_RGARROW = 32751; -enum OBM_RGARROWD = 32741; -enum OBM_RGARROWI = 32735; -enum OBM_SIZE = 32766; -enum OBM_UPARROW = 32753; -enum OBM_UPARROWD = 32743; -enum OBM_UPARROWI = 32737; -enum OBM_ZOOM = 32748; -enum OBM_ZOOMD = 32745; - -enum OCR_NORMAL = 32512; -enum OCR_IBEAM = 32513; -enum OCR_WAIT = 32514; -enum OCR_CROSS = 32515; -enum OCR_UP = 32516; -enum OCR_SIZE = 32640; -enum OCR_ICON = 32641; -enum OCR_SIZENWSE = 32642; -enum OCR_SIZENESW = 32643; -enum OCR_SIZEWE = 32644; -enum OCR_SIZENS = 32645; -enum OCR_SIZEALL = 32646; -enum OCR_NO = 32648; -enum OCR_APPSTARTING = 32650; - -enum OIC_SAMPLE = 32512; -enum OIC_HAND = 32513; -enum OIC_QUES = 32514; -enum OIC_BANG = 32515; -enum OIC_NOTE = 32516; -enum OIC_WINLOGO = 32517; -enum OIC_WARNING = OIC_BANG; -enum OIC_ERROR = OIC_HAND; -enum OIC_INFORMATION = OIC_NOTE; - -enum HELPINFO_MENUITEM = 2; -enum HELPINFO_WINDOW = 1; - -static if (_WIN32_WINNT >= 0x501) { - enum { - WTS_CONSOLE_CONNECT = 1, - WTS_CONSOLE_DISCONNECT, - WTS_REMOTE_CONNECT, - WTS_REMOTE_DISCONNECT, - WTS_SESSION_LOGON, - WTS_SESSION_LOGOFF, - WTS_SESSION_LOCK, - WTS_SESSION_UNLOCK, - WTS_SESSION_REMOTE_CONTROL // = 9 - } -} - -enum MSGF_DIALOGBOX = 0; -enum MSGF_MESSAGEBOX = 1; -enum MSGF_MENU = 2; -enum MSGF_MOVE = 3; -enum MSGF_SIZE = 4; -enum MSGF_SCROLLBAR = 5; -enum MSGF_NEXTWINDOW = 6; -enum MSGF_MAINLOOP = 8; -enum MSGF_USER = 4096; - -enum { - MOUSEEVENTF_MOVE = 0x0001, - MOUSEEVENTF_LEFTDOWN = 0x0002, - MOUSEEVENTF_LEFTUP = 0x0004, - MOUSEEVENTF_RIGHTDOWN = 0x0008, - MOUSEEVENTF_RIGHTUP = 0x0010, - MOUSEEVENTF_MIDDLEDOWN = 0x0020, - MOUSEEVENTF_MIDDLEUP = 0x0040, - MOUSEEVENTF_XDOWN = 0x0080, - MOUSEEVENTF_XUP = 0x0100, - MOUSEEVENTF_WHEEL = 0x0800, - MOUSEEVENTF_ABSOLUTE = 0x8000 -} - -enum PM_NOREMOVE = 0; -enum PM_REMOVE = 1; -enum PM_NOYIELD = 2; - -enum : HWND { - HWND_BROADCAST = cast(HWND) 0xFFFF, - HWND_MESSAGE = cast(HWND) -3, - HWND_NOTOPMOST = cast(HWND) -2, - HWND_TOPMOST = cast(HWND) -1, - HWND_TOP = cast(HWND) 0, - HWND_DESKTOP = cast(HWND) 0, - HWND_BOTTOM = cast(HWND) 1 -} - -enum RDW_INVALIDATE = 1; -enum RDW_INTERNALPAINT = 2; -enum RDW_ERASE = 4; -enum RDW_VALIDATE = 8; -enum RDW_NOINTERNALPAINT = 16; -enum RDW_NOERASE = 32; -enum RDW_NOCHILDREN = 64; -enum RDW_ALLCHILDREN = 128; -enum RDW_UPDATENOW = 256; -enum RDW_ERASENOW = 512; -enum RDW_FRAME = 1024; -enum RDW_NOFRAME = 2048; - -enum { - SMTO_NORMAL = 0, - SMTO_BLOCK = 1, - SMTO_ABORTIFHUNG = 2, - SMTO_NOTIMEOUTIFNOTHUNG = 8 -} - -enum SIF_ALL = 23; -enum SIF_PAGE = 2; -enum SIF_POS = 4; -enum SIF_RANGE = 1; -enum SIF_DISABLENOSCROLL = 8; -enum SIF_TRACKPOS = 16; - -enum SWP_DRAWFRAME = 32; -enum SWP_FRAMECHANGED = 32; -enum SWP_HIDEWINDOW = 128; -enum SWP_NOACTIVATE = 16; -enum SWP_NOCOPYBITS = 256; -enum SWP_NOMOVE = 2; -enum SWP_NOSIZE = 1; -enum SWP_NOREDRAW = 8; -enum SWP_NOZORDER = 4; -enum SWP_SHOWWINDOW = 64; -enum SWP_NOOWNERZORDER = 512; -enum SWP_NOREPOSITION = 512; -enum SWP_NOSENDCHANGING = 1024; -enum SWP_DEFERERASE = 8192; -enum SWP_ASYNCWINDOWPOS = 16384; - -enum { // passed variously as int or WPARAM - HSHELL_WINDOWCREATED = 1, - HSHELL_WINDOWDESTROYED, - HSHELL_ACTIVATESHELLWINDOW, - HSHELL_WINDOWACTIVATED, - HSHELL_GETMINRECT, - HSHELL_REDRAW, - HSHELL_TASKMAN, - HSHELL_LANGUAGE, // = 8 - HSHELL_ENDTASK = 10, - HSHELL_ACCESSIBILITYSTATE, - HSHELL_APPCOMMAND, // = 12 - HSHELL_RUDEAPPACTIVATED = 32772, - HSHELL_FLASH = 32774 -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - HSHELL_WINDOWREPLACED = 13, - HSHELL_WINDOWREPLACING - } -} - -enum { - SPI_GETBEEP = 0x0001, - SPI_SETBEEP = 0x0002, - SPI_GETMOUSE = 0x0003, - SPI_SETMOUSE = 0x0004, - SPI_GETBORDER = 0x0005, - SPI_SETBORDER = 0x0006, - SPI_GETKEYBOARDSPEED = 0x000A, - SPI_SETKEYBOARDSPEED = 0x000B, - SPI_LANGDRIVER = 0x000C, - SPI_ICONHORIZONTALSPACING = 0x000D, - SPI_GETSCREENSAVETIMEOUT = 0x000E, - SPI_SETSCREENSAVETIMEOUT = 0x000F, - SPI_GETSCREENSAVEACTIVE = 0x0010, - SPI_SETSCREENSAVEACTIVE = 0x0011, - SPI_GETGRIDGRANULARITY = 0x0012, - SPI_SETGRIDGRANULARITY = 0x0013, - SPI_SETDESKWALLPAPER = 0x0014, - SPI_SETDESKPATTERN = 0x0015, - SPI_GETKEYBOARDDELAY = 0x0016, - SPI_SETKEYBOARDDELAY = 0x0017, - SPI_ICONVERTICALSPACING = 0x0018, - SPI_GETICONTITLEWRAP = 0x0019, - SPI_SETICONTITLEWRAP = 0x001A, - SPI_GETMENUDROPALIGNMENT = 0x001B, - SPI_SETMENUDROPALIGNMENT = 0x001C, - SPI_SETDOUBLECLKWIDTH = 0x001D, - SPI_SETDOUBLECLKHEIGHT = 0x001E, - SPI_GETICONTITLELOGFONT = 0x001F, - SPI_SETDOUBLECLICKTIME = 0x0020, - SPI_SETMOUSEBUTTONSWAP = 0x0021, - SPI_SETICONTITLELOGFONT = 0x0022, - SPI_GETFASTTASKSWITCH = 0x0023, - SPI_SETFASTTASKSWITCH = 0x0024, - SPI_SETDRAGFULLWINDOWS = 0x0025, - SPI_GETDRAGFULLWINDOWS = 0x0026, - SPI_GETNONCLIENTMETRICS = 0x0029, - SPI_SETNONCLIENTMETRICS = 0x002A, - SPI_GETMINIMIZEDMETRICS = 0x002B, - SPI_SETMINIMIZEDMETRICS = 0x002C, - SPI_GETICONMETRICS = 0x002D, - SPI_SETICONMETRICS = 0x002E, - SPI_SETWORKAREA = 0x002F, - SPI_GETWORKAREA = 0x0030, - SPI_SETPENWINDOWS = 0x0031, - SPI_GETFILTERKEYS = 0x0032, - SPI_SETFILTERKEYS = 0x0033, - SPI_GETTOGGLEKEYS = 0x0034, - SPI_SETTOGGLEKEYS = 0x0035, - SPI_GETMOUSEKEYS = 0x0036, - SPI_SETMOUSEKEYS = 0x0037, - SPI_GETSHOWSOUNDS = 0x0038, - SPI_SETSHOWSOUNDS = 0x0039, - SPI_GETSTICKYKEYS = 0x003A, - SPI_SETSTICKYKEYS = 0x003B, - SPI_GETACCESSTIMEOUT = 0x003C, - SPI_SETACCESSTIMEOUT = 0x003D, - SPI_GETSERIALKEYS = 0x003E, - SPI_SETSERIALKEYS = 0x003F, - SPI_GETSOUNDSENTRY = 0x0040, - SPI_SETSOUNDSENTRY = 0x0041, - SPI_GETHIGHCONTRAST = 0x0042, - SPI_SETHIGHCONTRAST = 0x0043, - SPI_GETKEYBOARDPREF = 0x0044, - SPI_SETKEYBOARDPREF = 0x0045, - SPI_GETSCREENREADER = 0x0046, - SPI_SETSCREENREADER = 0x0047, - SPI_GETANIMATION = 0x0048, - SPI_SETANIMATION = 0x0049, - SPI_GETFONTSMOOTHING = 0x004A, - SPI_SETFONTSMOOTHING = 0x004B, - SPI_SETDRAGWIDTH = 0x004C, - SPI_SETDRAGHEIGHT = 0x004D, - SPI_SETHANDHELD = 0x004E, - SPI_GETLOWPOWERTIMEOUT = 0x004F, - SPI_GETPOWEROFFTIMEOUT = 0x0050, - SPI_SETLOWPOWERTIMEOUT = 0x0051, - SPI_SETPOWEROFFTIMEOUT = 0x0052, - SPI_GETLOWPOWERACTIVE = 0x0053, - SPI_GETPOWEROFFACTIVE = 0x0054, - SPI_SETLOWPOWERACTIVE = 0x0055, - SPI_SETPOWEROFFACTIVE = 0x0056, - SPI_SETCURSORS = 0x0057, - SPI_SETICONS = 0x0058, - SPI_GETDEFAULTINPUTLANG = 0x0059, - SPI_SETDEFAULTINPUTLANG = 0x005A, - SPI_SETLANGTOGGLE = 0x005B, - SPI_GETWINDOWSEXTENSION = 0x005C, - SPI_SETMOUSETRAILS = 0x005D, - SPI_GETMOUSETRAILS = 0x005E, - SPI_GETSNAPTODEFBUTTON = 0x005F, - SPI_SETSNAPTODEFBUTTON = 0x0060, - //SPI_SCREENSAVERRUNNING = 0x0061, // mistake in older MinGW? - SPI_SETSCREENSAVERRUNNING = 0x0061, - SPI_GETMOUSEHOVERWIDTH = 0x0062, - SPI_SETMOUSEHOVERWIDTH = 0x0063, - SPI_GETMOUSEHOVERHEIGHT = 0x0064, - SPI_SETMOUSEHOVERHEIGHT = 0x0065, - SPI_GETMOUSEHOVERTIME = 0x0066, - SPI_SETMOUSEHOVERTIME = 0x0067, - SPI_GETWHEELSCROLLLINES = 0x0068, - SPI_SETWHEELSCROLLLINES = 0x0069, - SPI_GETMENUSHOWDELAY = 0x006A, - SPI_SETMENUSHOWDELAY = 0x006B, - SPI_GETSHOWIMEUI = 0x006E, - SPI_SETSHOWIMEUI = 0x006F, - SPI_GETMOUSESPEED = 0x0070, - SPI_SETMOUSESPEED = 0x0071, - SPI_GETSCREENSAVERRUNNING = 0x0072, - SPI_GETDESKWALLPAPER = 0x0073, - SPI_GETACTIVEWINDOWTRACKING = 0x1000, - SPI_SETACTIVEWINDOWTRACKING = 0x1001, - SPI_GETMENUANIMATION = 0x1002, - SPI_SETMENUANIMATION = 0x1003, - SPI_GETCOMBOBOXANIMATION = 0x1004, - SPI_SETCOMBOBOXANIMATION = 0x1005, - SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006, - SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007, - SPI_GETGRADIENTCAPTIONS = 0x1008, - SPI_SETGRADIENTCAPTIONS = 0x1009, - SPI_GETKEYBOARDCUES = 0x100A, - SPI_GETMENUUNDERLINES = SPI_GETKEYBOARDCUES, - SPI_SETKEYBOARDCUES = 0x100B, - SPI_SETMENUUNDERLINES = SPI_SETKEYBOARDCUES, - SPI_GETACTIVEWNDTRKZORDER = 0x100C, - SPI_SETACTIVEWNDTRKZORDER = 0x100D, - SPI_GETHOTTRACKING = 0x100E, - SPI_SETHOTTRACKING = 0x100F, - SPI_GETMENUFADE = 0x1012, - SPI_SETMENUFADE = 0x1013, - SPI_GETSELECTIONFADE = 0x1014, - SPI_SETSELECTIONFADE = 0x1015, - SPI_GETTOOLTIPANIMATION = 0x1016, - SPI_SETTOOLTIPANIMATION = 0x1017, - SPI_GETTOOLTIPFADE = 0x1018, - SPI_SETTOOLTIPFADE = 0x1019, - SPI_GETCURSORSHADOW = 0x101A, - SPI_SETCURSORSHADOW = 0x101B, - SPI_GETBLOCKSENDINPUTRESETS = 0x1026, - SPI_SETBLOCKSENDINPUTRESETS = 0x1027, - SPI_GETUIEFFECTS = 0x103E, - SPI_SETUIEFFECTS = 0x103F, - SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000, - SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001, - SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002, - SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003, - SPI_GETFOREGROUNDFLASHCOUNT = 0x2004, - SPI_SETFOREGROUNDFLASHCOUNT = 0x2005, - SPI_GETCARETWIDTH = 0x2006, - SPI_SETCARETWIDTH = 0x2007 -} - -enum { - SPIF_UPDATEINIFILE = 1, - SPIF_SENDWININICHANGE = 2, - SPIF_SENDCHANGE = SPIF_SENDWININICHANGE -} - -// [Redefined] ATF_ONOFFFEEDBACK = 2 -// [Redefined] ATF_TIMEOUTON = 1 -enum WM_APP = 32768; -enum WM_ACTIVATE = 6; -enum WM_ACTIVATEAPP = 28; -enum WM_AFXFIRST = 864; -enum WM_AFXLAST = 895; -enum WM_ASKCBFORMATNAME = 780; -enum WM_CANCELJOURNAL = 75; -enum WM_CANCELMODE = 31; -enum WM_CAPTURECHANGED = 533; -enum WM_CHANGECBCHAIN = 781; -enum WM_CHAR = 258; -enum WM_CHARTOITEM = 47; -enum WM_CHILDACTIVATE = 34; -enum WM_CLEAR = 771; -enum WM_CLOSE = 16; -enum WM_COMMAND = 273; -enum WM_COMMNOTIFY = 68; // obsolete -enum WM_COMPACTING = 65; -enum WM_COMPAREITEM = 57; -enum WM_CONTEXTMENU = 123; -enum WM_COPY = 769; -enum WM_COPYDATA = 74; -enum WM_CREATE = 1; -enum WM_CTLCOLORBTN = 309; -enum WM_CTLCOLORDLG = 310; -enum WM_CTLCOLOREDIT = 307; -enum WM_CTLCOLORLISTBOX = 308; -enum WM_CTLCOLORMSGBOX = 306; -enum WM_CTLCOLORSCROLLBAR = 311; -enum WM_CTLCOLORSTATIC = 312; -enum WM_CUT = 768; -enum WM_DEADCHAR = 259; -enum WM_DELETEITEM = 45; -enum WM_DESTROY = 2; -enum WM_DESTROYCLIPBOARD = 775; -enum WM_DEVICECHANGE = 537; -enum WM_DEVMODECHANGE = 27; -enum WM_DISPLAYCHANGE = 126; -enum WM_DRAWCLIPBOARD = 776; -enum WM_DRAWITEM = 43; -enum WM_DROPFILES = 563; -enum WM_ENABLE = 10; -enum WM_ENDSESSION = 22; -enum WM_ENTERIDLE = 289; -enum WM_ENTERMENULOOP = 529; -enum WM_ENTERSIZEMOVE = 561; -enum WM_ERASEBKGND = 20; -enum WM_EXITMENULOOP = 530; -enum WM_EXITSIZEMOVE = 562; -enum WM_FONTCHANGE = 29; -enum WM_GETDLGCODE = 135; -enum WM_GETFONT = 49; -enum WM_GETHOTKEY = 51; -enum WM_GETICON = 127; -enum WM_GETMINMAXINFO = 36; -enum WM_GETTEXT = 13; -enum WM_GETTEXTLENGTH = 14; -enum WM_HANDHELDFIRST = 856; -enum WM_HANDHELDLAST = 863; -enum WM_HELP = 83; -enum WM_HOTKEY = 786; -enum WM_HSCROLL = 276; -enum WM_HSCROLLCLIPBOARD = 782; -enum WM_ICONERASEBKGND = 39; -enum WM_INITDIALOG = 272; -enum WM_INITMENU = 278; -enum WM_INITMENUPOPUP = 279; -enum WM_INPUTLANGCHANGE = 81; -enum WM_INPUTLANGCHANGEREQUEST = 80; -enum WM_KEYDOWN = 256; -enum WM_KEYUP = 257; -enum WM_KILLFOCUS = 8; -enum WM_MDIACTIVATE = 546; -enum WM_MDICASCADE = 551; -enum WM_MDICREATE = 544; -enum WM_MDIDESTROY = 545; -enum WM_MDIGETACTIVE = 553; -enum WM_MDIICONARRANGE = 552; -enum WM_MDIMAXIMIZE = 549; -enum WM_MDINEXT = 548; -enum WM_MDIREFRESHMENU = 564; -enum WM_MDIRESTORE = 547; -enum WM_MDISETMENU = 560; -enum WM_MDITILE = 550; -enum WM_MEASUREITEM = 44; -enum WM_UNINITMENUPOPUP = 0x0125; -enum WM_MENURBUTTONUP = 290; -enum WM_MENUCOMMAND = 0x0126; -enum WM_MENUGETOBJECT = 0x0124; -enum WM_MENUDRAG = 0x0123; - -enum WM_CHANGEUISTATE = 0x0127; -enum WM_UPDATEUISTATE = 0x0128; -enum WM_QUERYUISTATE = 0x0129; - -// LOWORD(wParam) values in WM_*UISTATE* -enum { - UIS_SET = 1, - UIS_CLEAR = 2, - UIS_INITIALIZE = 3 -} - -// HIWORD(wParam) values in WM_*UISTATE* -enum { - UISF_HIDEFOCUS = 0x1, - UISF_HIDEACCEL = 0x2 -} - - -static if (_WIN32_WINNT >= 0x501) { - - // HIWORD(wParam) values in WM_*UISTATE* - enum { - UISF_ACTIVE = 0x4 - } - -} - -enum WM_MENUCHAR = 288; -enum WM_MENUSELECT = 287; -enum WM_MOVE = 3; -enum WM_MOVING = 534; -enum WM_NCACTIVATE = 134; -enum WM_NCCALCSIZE = 131; -enum WM_NCCREATE = 129; -enum WM_NCDESTROY = 130; -enum WM_NCHITTEST = 132; -enum WM_NCLBUTTONDBLCLK = 163; -enum WM_NCLBUTTONDOWN = 161; -enum WM_NCLBUTTONUP = 162; -enum WM_NCMBUTTONDBLCLK = 169; -enum WM_NCMBUTTONDOWN = 167; -enum WM_NCMBUTTONUP = 168; -enum WM_NCXBUTTONDOWN = 171; -enum WM_NCXBUTTONUP = 172; -enum WM_NCXBUTTONDBLCLK = 173; -enum WM_NCMOUSEHOVER = 0x02A0; -enum WM_NCMOUSELEAVE = 0x02A2; -enum WM_NCMOUSEMOVE = 160; -enum WM_NCPAINT = 133; -enum WM_NCRBUTTONDBLCLK = 166; -enum WM_NCRBUTTONDOWN = 164; -enum WM_NCRBUTTONUP = 165; -enum WM_NEXTDLGCTL = 40; -enum WM_NEXTMENU = 531; -enum WM_NOTIFY = 78; -enum WM_NOTIFYFORMAT = 85; -enum WM_NULL = 0; -enum WM_PAINT = 15; -enum WM_PAINTCLIPBOARD = 777; -enum WM_PAINTICON = 38; -enum WM_PALETTECHANGED = 785; -enum WM_PALETTEISCHANGING = 784; -enum WM_PARENTNOTIFY = 528; -enum WM_PASTE = 770; -enum WM_PENWINFIRST = 896; -enum WM_PENWINLAST = 911; -enum WM_POWER = 72; -enum WM_POWERBROADCAST = 536; -enum WM_PRINT = 791; -enum WM_PRINTCLIENT = 792; -enum WM_APPCOMMAND = 0x0319; -enum WM_QUERYDRAGICON = 55; -enum WM_QUERYENDSESSION = 17; -enum WM_QUERYNEWPALETTE = 783; -enum WM_QUERYOPEN = 19; -enum WM_QUEUESYNC = 35; -enum WM_QUIT = 18; -enum WM_RENDERALLFORMATS = 774; -enum WM_RENDERFORMAT = 773; -enum WM_SETCURSOR = 32; -enum WM_SETFOCUS = 7; -enum WM_SETFONT = 48; -enum WM_SETHOTKEY = 50; -enum WM_SETICON = 128; -enum WM_SETREDRAW = 11; -enum WM_SETTEXT = 12; -enum WM_SETTINGCHANGE = 26; -enum WM_SHOWWINDOW = 24; -enum WM_SIZE = 5; -enum WM_SIZECLIPBOARD = 779; -enum WM_SIZING = 532; -enum WM_SPOOLERSTATUS = 42; -enum WM_STYLECHANGED = 125; -enum WM_STYLECHANGING = 124; -enum WM_SYSCHAR = 262; -enum WM_SYSCOLORCHANGE = 21; -enum WM_SYSCOMMAND = 274; -enum WM_SYSDEADCHAR = 263; -enum WM_SYSKEYDOWN = 260; -enum WM_SYSKEYUP = 261; -static if (_WIN32_WINNT >= 0x501) { - enum WM_TABLET_FIRST = 704; - enum WM_TABLET_LAST = 735; -} -enum WM_TCARD = 82; -enum WM_THEMECHANGED = 794; -enum WM_TIMECHANGE = 30; -enum WM_TIMER = 275; -enum WM_UNDO = 772; -enum WM_USER = 1024; -enum WM_USERCHANGED = 84; -enum WM_VKEYTOITEM = 46; -enum WM_VSCROLL = 277; -enum WM_VSCROLLCLIPBOARD = 778; -enum WM_WINDOWPOSCHANGED = 71; -enum WM_WINDOWPOSCHANGING = 70; -enum WM_WININICHANGE = 26; -static if(_WIN32_WINNT >= 0x501) { -enum WM_WTSSESSION_CHANGE = 689; -} -enum WM_INPUT = 255; -enum WM_KEYFIRST = 256; -static if(_WIN32_WINNT >= 0x501) { -enum WM_UNICHAR = 265; -enum WM_KEYLAST = 265; -enum UNICODE_NOCHAR = 0xFFFF; -} else { -enum WM_KEYLAST = 264; -} -enum WM_SYNCPAINT = 136; -enum WM_MOUSEACTIVATE = 33; -enum WM_MOUSEMOVE = 512; -enum WM_LBUTTONDOWN = 513; -enum WM_LBUTTONUP = 514; -enum WM_LBUTTONDBLCLK = 515; -enum WM_RBUTTONDOWN = 516; -enum WM_RBUTTONUP = 517; -enum WM_RBUTTONDBLCLK = 518; -enum WM_MBUTTONDOWN = 519; -enum WM_MBUTTONUP = 520; -enum WM_MBUTTONDBLCLK = 521; -enum WM_MOUSEWHEEL = 522; -enum WM_MOUSEFIRST = 512; -static if (_WIN32_WINNT >= 0x501) { - enum WM_XBUTTONDOWN = 523; - enum WM_XBUTTONUP = 524; - enum WM_XBUTTONDBLCLK = 525; -} -static if (_WIN32_WINNT >= 0x600) { // FIXME: where did this come from? what version is it? - enum WM_MOUSEHWHEEL = 526; -} - -static if (_WIN32_WINNT >= 0x600) { - enum WM_MOUSELAST = WM_MOUSEHWHEEL; -} else static if (_WIN32_WINNT >= 0x501) { - enum WM_MOUSELAST = WM_XBUTTONDBLCLK; -} else { - enum WM_MOUSELAST = WM_MOUSEWHEEL; -} - -enum WM_MOUSEHOVER = 0x2A1; -enum WM_MOUSELEAVE = 0x2A3; - -enum WHEEL_DELTA = 120; - -SHORT GET_WHEEL_DELTA_WPARAM()(WPARAM wparam) { - return cast(SHORT) HIWORD(wparam); -} - -enum WHEEL_PAGESCROLL = uint.max; - -enum BM_CLICK = 245; -enum BM_GETCHECK = 240; -enum BM_GETIMAGE = 246; -enum BM_GETSTATE = 242; -enum BM_SETCHECK = 241; -enum BM_SETIMAGE = 247; -static if(_WIN32_WINNT >= 0x600) { - enum BM_SETDONTCLICK = 248; -} -enum BM_SETSTATE = 243; -enum BM_SETSTYLE = 244; -enum BN_CLICKED = 0; -enum BN_DBLCLK = 5; -enum BN_DISABLE = 4; -enum BN_DOUBLECLICKED = 5; -enum BN_HILITE = 2; -enum BN_KILLFOCUS = 7; -enum BN_PAINT = 1; -enum BN_PUSHED = 2; -enum BN_SETFOCUS = 6; -enum BN_UNHILITE = 3; -enum BN_UNPUSHED = 3; -enum CB_ADDSTRING = 323; -enum CB_DELETESTRING = 324; -enum CB_DIR = 325; -enum CB_FINDSTRING = 332; -enum CB_FINDSTRINGEXACT = 344; -enum CB_GETCOUNT = 326; -enum CB_GETCURSEL = 327; -enum CB_GETDROPPEDCONTROLRECT = 338; -enum CB_GETDROPPEDSTATE = 343; -enum CB_GETDROPPEDWIDTH = 351; -enum CB_GETEDITSEL = 320; -enum CB_GETEXTENDEDUI = 342; -enum CB_GETHORIZONTALEXTENT = 349; -enum CB_GETITEMDATA = 336; -enum CB_GETITEMHEIGHT = 340; -enum CB_GETLBTEXT = 328; -enum CB_GETLBTEXTLEN = 329; -enum CB_GETLOCALE = 346; -enum CB_GETTOPINDEX = 347; -enum CB_INITSTORAGE = 353; -enum CB_INSERTSTRING = 330; -enum CB_LIMITTEXT = 321; -enum CB_RESETCONTENT = 331; -enum CB_SELECTSTRING = 333; -enum CB_SETCURSEL = 334; -enum CB_SETDROPPEDWIDTH = 352; -enum CB_SETEDITSEL = 322; -enum CB_SETEXTENDEDUI = 341; -enum CB_SETHORIZONTALEXTENT = 350; -enum CB_SETITEMDATA = 337; -enum CB_SETITEMHEIGHT = 339; -enum CB_SETLOCALE = 345; -enum CB_SETTOPINDEX = 348; -enum CB_SHOWDROPDOWN = 335; - -static if(_WIN32_WINNT >= 0x501) { -enum CB_GETCOMBOBOXINFO = 356; -} - -enum CBN_CLOSEUP = 8; -enum CBN_DBLCLK = 2; -enum CBN_DROPDOWN = 7; -enum CBN_EDITCHANGE = 5; -enum CBN_EDITUPDATE = 6; -enum CBN_ERRSPACE = (-1); -enum CBN_KILLFOCUS = 4; -enum CBN_SELCHANGE = 1; -enum CBN_SELENDCANCEL = 10; -enum CBN_SELENDOK = 9; -enum CBN_SETFOCUS = 3; - -enum EM_CANUNDO = 198; -enum EM_CHARFROMPOS = 215; -enum EM_EMPTYUNDOBUFFER = 205; -enum EM_FMTLINES = 200; -enum EM_GETFIRSTVISIBLELINE = 206; -enum EM_GETHANDLE = 189; -enum EM_GETLIMITTEXT = 213; -enum EM_GETLINE = 196; -enum EM_GETLINECOUNT = 186; -enum EM_GETMARGINS = 212; -enum EM_GETMODIFY = 184; -enum EM_GETPASSWORDCHAR = 210; -enum EM_GETRECT = 178; -enum EM_GETSEL = 176; -enum EM_GETTHUMB = 190; -enum EM_GETWORDBREAKPROC = 209; -enum EM_LIMITTEXT = 197; -enum EM_LINEFROMCHAR = 201; -enum EM_LINEINDEX = 187; -enum EM_LINELENGTH = 193; -enum EM_LINESCROLL = 182; -enum EM_POSFROMCHAR = 214; -enum EM_REPLACESEL = 194; -enum EM_SCROLL = 181; -enum EM_SCROLLCARET = 183; -enum EM_SETHANDLE = 188; -enum EM_SETLIMITTEXT = 197; -enum EM_SETMARGINS = 211; -enum EM_SETMODIFY = 185; -enum EM_SETPASSWORDCHAR = 204; -enum EM_SETREADONLY = 207; -enum EM_SETRECT = 179; -enum EM_SETRECTNP = 180; -enum EM_SETSEL = 177; -enum EM_SETTABSTOPS = 203; -enum EM_SETWORDBREAKPROC = 208; -enum EM_UNDO = 199; - -enum EM_SETIMESTATUS = 216; -enum EM_GETIMESTATUS = 217; - -enum EN_CHANGE = 768; -enum EN_ERRSPACE = 1280; -enum EN_HSCROLL = 1537; -enum EN_KILLFOCUS = 512; -enum EN_MAXTEXT = 1281; -enum EN_SETFOCUS = 256; -enum EN_UPDATE = 1024; -enum EN_VSCROLL = 1538; - -enum LB_ADDFILE = 406; -enum LB_ADDSTRING = 384; -enum LB_DELETESTRING = 386; -enum LB_DIR = 397; -enum LB_FINDSTRING = 399; -enum LB_FINDSTRINGEXACT = 418; -enum LB_GETANCHORINDEX = 413; -enum LB_GETCARETINDEX = 415; -enum LB_GETCOUNT = 395; -enum LB_GETCURSEL = 392; -enum LB_GETHORIZONTALEXTENT = 403; -enum LB_GETITEMDATA = 409; -enum LB_GETITEMHEIGHT = 417; -enum LB_GETITEMRECT = 408; -enum LB_GETLOCALE = 422; -enum LB_GETSEL = 391; -enum LB_GETSELCOUNT = 400; -enum LB_GETSELITEMS = 401; -enum LB_GETTEXT = 393; -enum LB_GETTEXTLEN = 394; -enum LB_GETTOPINDEX = 398; -enum LB_INITSTORAGE = 424; -enum LB_INSERTSTRING = 385; -enum LB_ITEMFROMPOINT = 425; -enum LB_RESETCONTENT = 388; -enum LB_SELECTSTRING = 396; -enum LB_SELITEMRANGE = 411; -enum LB_SELITEMRANGEEX = 387; -enum LB_SETANCHORINDEX = 412; -enum LB_SETCARETINDEX = 414; -enum LB_SETCOLUMNWIDTH = 405; -enum LB_SETCOUNT = 423; -enum LB_SETCURSEL = 390; -enum LB_SETHORIZONTALEXTENT = 404; -enum LB_SETITEMDATA = 410; -enum LB_SETITEMHEIGHT = 416; -enum LB_SETLOCALE = 421; -enum LB_SETSEL = 389; -enum LB_SETTABSTOPS = 402; -enum LB_SETTOPINDEX = 407; -static if(_WIN32_WINNT >= 0x501) { -enum LB_GETLISTBOXINFO = 434; -} - -enum LBN_DBLCLK = 2; -enum LBN_ERRSPACE = -2; -enum LBN_KILLFOCUS = 5; -enum LBN_SELCANCEL = 3; -enum LBN_SELCHANGE = 1; -enum LBN_SETFOCUS = 4; - -enum SBM_ENABLE_ARROWS = 228; -enum SBM_GETPOS = 225; -enum SBM_GETRANGE = 227; -enum SBM_GETSCROLLINFO = 234; -enum SBM_SETPOS = 224; -enum SBM_SETRANGE = 226; -enum SBM_SETRANGEREDRAW = 230; -enum SBM_SETSCROLLINFO = 233; -static if(_WIN32_WINNT >= 0x501) { -enum SBM_GETSCROLLBARINFO = 235; -} - -enum STM_GETICON = 369; -enum STM_GETIMAGE = 371; -enum STM_SETICON = 368; -enum STM_SETIMAGE = 370; -enum STN_CLICKED = 0; -enum STN_DBLCLK = 1; -enum STN_DISABLE = 3; -enum STN_ENABLE = 2; - -enum DM_GETDEFID = WM_USER; -enum DM_SETDEFID = WM_USER+1; -enum DM_REPOSITION = WM_USER+2; - -enum PSM_PAGEINFO = WM_USER+100; -enum PSM_SHEETINFO = WM_USER+101; - -enum PSI_SETACTIVE = 1; -enum PSI_KILLACTIVE = 2; -enum PSI_APPLY = 3; -enum PSI_RESET = 4; -enum PSI_HASHELP = 5; -enum PSI_HELP = 6; -enum PSI_CHANGED = 1; -enum PSI_GUISTART = 2; -enum PSI_REBOOT = 3; -enum PSI_GETSIBLINGS = 4; - -enum DCX_WINDOW = 1; -enum DCX_CACHE = 2; -enum DCX_PARENTCLIP = 32; -enum DCX_CLIPSIBLINGS = 16; -enum DCX_CLIPCHILDREN = 8; -enum DCX_NORESETATTRS = 4; -enum DCX_INTERSECTUPDATE = 0x200; -enum DCX_LOCKWINDOWUPDATE = 0x400; -enum DCX_EXCLUDERGN = 64; -enum DCX_INTERSECTRGN = 128; -enum DCX_VALIDATE = 0x200000; - -enum GMDI_GOINTOPOPUPS = 2; -enum GMDI_USEDISABLED = 1; -enum FKF_AVAILABLE = 2; -enum FKF_CLICKON = 64; -enum FKF_FILTERKEYSON = 1; -enum FKF_HOTKEYACTIVE = 4; -enum FKF_HOTKEYSOUND = 16; -enum FKF_CONFIRMHOTKEY = 8; -enum FKF_INDICATOR = 32; -enum HCF_HIGHCONTRASTON = 1; -enum HCF_AVAILABLE = 2; -enum HCF_HOTKEYACTIVE = 4; -enum HCF_CONFIRMHOTKEY = 8; -enum HCF_HOTKEYSOUND = 16; -enum HCF_INDICATOR = 32; -enum HCF_HOTKEYAVAILABLE = 64; -enum MKF_AVAILABLE = 2; -enum MKF_CONFIRMHOTKEY = 8; -enum MKF_HOTKEYACTIVE = 4; -enum MKF_HOTKEYSOUND = 16; -enum MKF_INDICATOR = 32; -enum MKF_MOUSEKEYSON = 1; -enum MKF_MODIFIERS = 64; -enum MKF_REPLACENUMBERS = 128; -enum SERKF_ACTIVE = 8; // May be obsolete. Not in recent MS docs. -enum SERKF_AVAILABLE = 2; -enum SERKF_INDICATOR = 4; -enum SERKF_SERIALKEYSON = 1; -enum SSF_AVAILABLE = 2; -enum SSF_SOUNDSENTRYON = 1; -enum SSTF_BORDER = 2; -enum SSTF_CHARS = 1; -enum SSTF_DISPLAY = 3; -enum SSTF_NONE = 0; -enum SSGF_DISPLAY = 3; -enum SSGF_NONE = 0; -enum SSWF_CUSTOM = 4; -enum SSWF_DISPLAY = 3; -enum SSWF_NONE = 0; -enum SSWF_TITLE = 1; -enum SSWF_WINDOW = 2; -enum SKF_AUDIBLEFEEDBACK = 64; -enum SKF_AVAILABLE = 2; -enum SKF_CONFIRMHOTKEY = 8; -enum SKF_HOTKEYACTIVE = 4; -enum SKF_HOTKEYSOUND = 16; -enum SKF_INDICATOR = 32; -enum SKF_STICKYKEYSON = 1; -enum SKF_TRISTATE = 128; -enum SKF_TWOKEYSOFF = 256; -enum TKF_AVAILABLE = 2; -enum TKF_CONFIRMHOTKEY = 8; -enum TKF_HOTKEYACTIVE = 4; -enum TKF_HOTKEYSOUND = 16; -enum TKF_TOGGLEKEYSON = 1; -enum MDITILE_SKIPDISABLED = 2; -enum MDITILE_HORIZONTAL = 1; -enum MDITILE_VERTICAL = 0; - -enum { - VK_LBUTTON = 0x01, - VK_RBUTTON = 0x02, - VK_CANCEL = 0x03, - VK_MBUTTON = 0x04, - VK_XBUTTON1 = 0x05, - VK_XBUTTON2 = 0x06, - VK_BACK = 0x08, - VK_TAB = 0x09, - VK_CLEAR = 0x0C, - VK_RETURN = 0x0D, - VK_SHIFT = 0x10, - VK_CONTROL = 0x11, - VK_MENU = 0x12, - VK_PAUSE = 0x13, - VK_CAPITAL = 0x14, - VK_KANA = 0x15, - VK_HANGEUL = 0x15, - VK_HANGUL = 0x15, - VK_JUNJA = 0x17, - VK_FINAL = 0x18, - VK_HANJA = 0x19, - VK_KANJI = 0x19, - VK_ESCAPE = 0x1B, - VK_CONVERT = 0x1C, - VK_NONCONVERT = 0x1D, - VK_ACCEPT = 0x1E, - VK_MODECHANGE = 0x1F, - VK_SPACE = 0x20, - VK_PRIOR = 0x21, - VK_NEXT = 0x22, - VK_END = 0x23, - VK_HOME = 0x24, - VK_LEFT = 0x25, - VK_UP = 0x26, - VK_RIGHT = 0x27, - VK_DOWN = 0x28, - VK_SELECT = 0x29, - VK_PRINT = 0x2A, - VK_EXECUTE = 0x2B, - VK_SNAPSHOT = 0x2C, - VK_INSERT = 0x2D, - VK_DELETE = 0x2E, - VK_HELP = 0x2F, - VK_LWIN = 0x5B, - VK_RWIN = 0x5C, - VK_APPS = 0x5D, - VK_SLEEP = 0x5F, - VK_NUMPAD0 = 0x60, - VK_NUMPAD1 = 0x61, - VK_NUMPAD2 = 0x62, - VK_NUMPAD3 = 0x63, - VK_NUMPAD4 = 0x64, - VK_NUMPAD5 = 0x65, - VK_NUMPAD6 = 0x66, - VK_NUMPAD7 = 0x67, - VK_NUMPAD8 = 0x68, - VK_NUMPAD9 = 0x69, - VK_MULTIPLY = 0x6A, - VK_ADD = 0x6B, - VK_SEPARATOR = 0x6C, - VK_SUBTRACT = 0x6D, - VK_DECIMAL = 0x6E, - VK_DIVIDE = 0x6F, - VK_F1 = 0x70, - VK_F2 = 0x71, - VK_F3 = 0x72, - VK_F4 = 0x73, - VK_F5 = 0x74, - VK_F6 = 0x75, - VK_F7 = 0x76, - VK_F8 = 0x77, - VK_F9 = 0x78, - VK_F10 = 0x79, - VK_F11 = 0x7A, - VK_F12 = 0x7B, - VK_F13 = 0x7C, - VK_F14 = 0x7D, - VK_F15 = 0x7E, - VK_F16 = 0x7F, - VK_F17 = 0x80, - VK_F18 = 0x81, - VK_F19 = 0x82, - VK_F20 = 0x83, - VK_F21 = 0x84, - VK_F22 = 0x85, - VK_F23 = 0x86, - VK_F24 = 0x87, - VK_NUMLOCK = 0x90, - VK_SCROLL = 0x91, - VK_LSHIFT = 0xA0, - VK_RSHIFT = 0xA1, - VK_LCONTROL = 0xA2, - VK_RCONTROL = 0xA3, - VK_LMENU = 0xA4, - VK_RMENU = 0xA5, - VK_BROWSER_BACK = 0xA6, - VK_BROWSER_FORWARD = 0xA7, - VK_BROWSER_REFRESH = 0xA8, - VK_BROWSER_STOP = 0xA9, - VK_BROWSER_SEARCH = 0xAA, - VK_BROWSER_FAVORITES = 0xAB, - VK_BROWSER_HOME = 0xAC, - VK_VOLUME_MUTE = 0xAD, - VK_VOLUME_DOWN = 0xAE, - VK_VOLUME_UP = 0xAF, - VK_MEDIA_NEXT_TRACK = 0xB0, - VK_MEDIA_PREV_TRACK = 0xB1, - VK_MEDIA_STOP = 0xB2, - VK_MEDIA_PLAY_PAUSE = 0xB3, - VK_LAUNCH_MAIL = 0xB4, - VK_LAUNCH_MEDIA_SELECT = 0xB5, - VK_LAUNCH_APP1 = 0xB6, - VK_LAUNCH_APP2 = 0xB7, - VK_OEM_1 = 0xBA, - VK_OEM_PLUS = 0xBB, - VK_OEM_COMMA = 0xBC, - VK_OEM_MINUS = 0xBD, - VK_OEM_PERIOD = 0xBE, - VK_OEM_2 = 0xBF, - VK_OEM_3 = 0xC0, - VK_OEM_4 = 0xDB, - VK_OEM_5 = 0xDC, - VK_OEM_6 = 0xDD, - VK_OEM_7 = 0xDE, - VK_OEM_8 = 0xDF, - VK_OEM_102 = 0xE2, - VK_PROCESSKEY = 0xE5, - VK_PACKET = 0xE7, - VK_ATTN = 0xF6, - VK_CRSEL = 0xF7, - VK_EXSEL = 0xF8, - VK_EREOF = 0xF9, - VK_PLAY = 0xFA, - VK_ZOOM = 0xFB, - VK_NONAME = 0xFC, - VK_PA1 = 0xFD, - VK_OEM_CLEAR = 0xFE, -} - -enum TME_HOVER = 1; -enum TME_LEAVE = 2; -enum TME_QUERY = 0x40000000; -enum TME_CANCEL = 0x80000000; - -enum HOVER_DEFAULT = 0xFFFFFFFF; - -enum MK_LBUTTON = 1; -enum MK_RBUTTON = 2; -enum MK_SHIFT = 4; -enum MK_CONTROL = 8; -enum MK_MBUTTON = 16; -enum MK_XBUTTON1 = 32; -enum MK_XBUTTON2 = 64; - -enum { - TPM_RECURSE = 0x0001, - TPM_LEFTBUTTON = 0, - TPM_RIGHTBUTTON = 0x0002, - TPM_LEFTALIGN = 0, - TPM_CENTERALIGN = 0x0004, - TPM_RIGHTALIGN = 0x0008, - TPM_TOPALIGN = 0, - TPM_VCENTERALIGN = 0x0010, - TPM_BOTTOMALIGN = 0x0020, - TPM_HORIZONTAL = 0, - TPM_VERTICAL = 0x0040, - TPM_NONOTIFY = 0x0080, - TPM_RETURNCMD = 0x0100 -} - -enum HELP_COMMAND = 0x102; -enum HELP_CONTENTS = 3; -enum HELP_CONTEXT = 1; -enum HELP_CONTEXTPOPUP = 8; -enum HELP_FORCEFILE = 9; -enum HELP_HELPONHELP = 4; -enum HELP_INDEX = 3; -enum HELP_KEY = 0x101; -enum HELP_MULTIKEY = 0x201; -enum HELP_PARTIALKEY = 0x105; -enum HELP_QUIT = 2; -enum HELP_SETCONTENTS = 5; -enum HELP_SETINDEX = 5; -enum HELP_SETWINPOS = 0x203; -enum HELP_CONTEXTMENU = 0xa; -enum HELP_FINDER = 0xb; -enum HELP_WM_HELP = 0xc; -enum HELP_TCARD = 0x8000; -enum HELP_TCARD_DATA = 16; -enum HELP_TCARD_OTHER_CALLER = 0x11; - -enum IDH_NO_HELP = 28440; -enum IDH_MISSING_CONTEXT = 28441; -enum IDH_GENERIC_HELP_BUTTON = 28442; -enum IDH_OK = 28443; -enum IDH_CANCEL = 28444; -enum IDH_HELP = 28445; - -enum LB_CTLCODE = 0; -enum LB_OKAY = 0; -enum LB_ERR = -1; -enum LB_ERRSPACE = -2; - -enum CB_OKAY = 0; -enum CB_ERR = -1; -enum CB_ERRSPACE = -2; - -enum HIDE_WINDOW = 0; - -enum SHOW_OPENWINDOW = 1; -enum SHOW_ICONWINDOW = 2; -enum SHOW_FULLSCREEN = 3; -enum SHOW_OPENNOACTIVATE = 4; - -enum KF_EXTENDED = 256; -enum KF_DLGMODE = 2048; -enum KF_MENUMODE = 4096; -enum KF_ALTDOWN = 8192; -enum KF_REPEAT = 16384; -enum KF_UP = 32768; - -enum WSF_VISIBLE = 1; - -enum PWR_OK = 1; -enum PWR_FAIL = -1; -enum PWR_SUSPENDREQUEST = 1; -enum PWR_SUSPENDRESUME = 2; -enum PWR_CRITICALRESUME = 3; - -enum NFR_ANSI = 1; -enum NFR_UNICODE = 2; -enum NF_QUERY = 3; -enum NF_REQUERY = 4; - -enum MENULOOP_WINDOW = 0; -enum MENULOOP_POPUP = 1; - -enum WMSZ_LEFT = 1; -enum WMSZ_RIGHT = 2; -enum WMSZ_TOP = 3; -enum WMSZ_TOPLEFT = 4; -enum WMSZ_TOPRIGHT = 5; -enum WMSZ_BOTTOM = 6; -enum WMSZ_BOTTOMLEFT = 7; -enum WMSZ_BOTTOMRIGHT = 8; - -enum HTERROR = -2; -enum HTTRANSPARENT = -1; -enum HTNOWHERE = 0; -enum HTCLIENT = 1; -enum HTCAPTION = 2; -enum HTSYSMENU = 3; -enum HTGROWBOX = 4; -enum HTSIZE = 4; -enum HTMENU = 5; -enum HTHSCROLL = 6; -enum HTVSCROLL = 7; -enum HTMINBUTTON = 8; -enum HTMAXBUTTON = 9; -enum HTREDUCE = 8; -enum HTZOOM = 9; -enum HTLEFT = 10; -enum HTSIZEFIRST = 10; -enum HTRIGHT = 11; -enum HTTOP = 12; -enum HTTOPLEFT = 13; -enum HTTOPRIGHT = 14; -enum HTBOTTOM = 15; -enum HTBOTTOMLEFT = 16; -enum HTBOTTOMRIGHT = 17; -enum HTSIZELAST = 17; -enum HTBORDER = 18; -enum HTOBJECT = 19; -enum HTCLOSE = 20; -enum HTHELP = 21; - -enum MA_ACTIVATE = 1; -enum MA_ACTIVATEANDEAT = 2; -enum MA_NOACTIVATE = 3; -enum MA_NOACTIVATEANDEAT = 4; - -enum SIZE_RESTORED = 0; -enum SIZE_MINIMIZED = 1; -enum SIZE_MAXIMIZED = 2; -enum SIZE_MAXSHOW = 3; -enum SIZE_MAXHIDE = 4; - -enum SIZENORMAL = 0; -enum SIZEICONIC = 1; -enum SIZEFULLSCREEN = 2; -enum SIZEZOOMSHOW = 3; -enum SIZEZOOMHIDE = 4; - -enum WVR_ALIGNTOP = 16; -enum WVR_ALIGNLEFT = 32; -enum WVR_ALIGNBOTTOM = 64; -enum WVR_ALIGNRIGHT = 128; -enum WVR_HREDRAW = 256; -enum WVR_VREDRAW = 512; -enum WVR_REDRAW = (WVR_HREDRAW|WVR_VREDRAW); -enum WVR_VALIDRECTS = 1024; - -enum PRF_CHECKVISIBLE = 1; -enum PRF_NONCLIENT = 2; -enum PRF_CLIENT = 4; -enum PRF_ERASEBKGND = 8; -enum PRF_CHILDREN = 16; -enum PRF_OWNED = 32; - -enum IDANI_OPEN = 1; -enum IDANI_CLOSE = 2; -enum IDANI_CAPTION = 3; - -enum WPF_RESTORETOMAXIMIZED = 2; -enum WPF_SETMINPOSITION = 1; - -enum ODT_MENU = 1; -enum ODT_LISTBOX = 2; -enum ODT_COMBOBOX = 3; -enum ODT_BUTTON = 4; -enum ODT_STATIC = 5; -enum ODA_DRAWENTIRE = 1; -enum ODA_SELECT = 2; -enum ODA_FOCUS = 4; -enum ODS_SELECTED = 1; -enum ODS_GRAYED = 2; -enum ODS_DISABLED = 4; -enum ODS_CHECKED = 8; -enum ODS_FOCUS = 16; -enum ODS_DEFAULT = 32; -enum ODS_COMBOBOXEDIT = 4096; - -enum IDHOT_SNAPWINDOW = -1; -enum IDHOT_SNAPDESKTOP = -2; - -enum DBWF_LPARAMPOINTER = 0x8000; -enum DLGWINDOWEXTRA = 30; -enum MNC_IGNORE = 0; -enum MNC_CLOSE = 1; -enum MNC_EXECUTE = 2; -enum MNC_SELECT = 3; -enum DOF_EXECUTABLE = 0x8001; -enum DOF_DOCUMENT = 0x8002; -enum DOF_DIRECTORY = 0x8003; -enum DOF_MULTIPLE = 0x8004; -enum DOF_PROGMAN = 1; -enum DOF_SHELLDATA = 2; -enum DO_DROPFILE = 0x454C4946; -enum DO_PRINTFILE = 0x544E5250; - -enum SC_SIZE = 0xF000; -enum SC_MOVE = 0xF010; -enum SC_MINIMIZE = 0xF020; -enum SC_ICON = 0xf020; -enum SC_MAXIMIZE = 0xF030; -enum SC_ZOOM = 0xF030; -enum SC_NEXTWINDOW = 0xF040; -enum SC_PREVWINDOW = 0xF050; -enum SC_CLOSE = 0xF060; -enum SC_VSCROLL = 0xF070; -enum SC_HSCROLL = 0xF080; -enum SC_MOUSEMENU = 0xF090; -enum SC_KEYMENU = 0xF100; -enum SC_ARRANGE = 0xF110; -enum SC_RESTORE = 0xF120; -enum SC_TASKLIST = 0xF130; -enum SC_SCREENSAVE = 0xF140; -enum SC_HOTKEY = 0xF150; -enum SC_DEFAULT = 0xF160; -enum SC_MONITORPOWER = 0xF170; -enum SC_CONTEXTHELP = 0xF180; -enum SC_SEPARATOR = 0xF00F; - -enum EC_LEFTMARGIN = 1; -enum EC_RIGHTMARGIN = 2; -enum EC_USEFONTINFO = 0xffff; - -enum DC_HASDEFID = 0x534B; - -enum DLGC_WANTARROWS = 1; -enum DLGC_WANTTAB = 2; -enum DLGC_WANTALLKEYS = 4; -enum DLGC_WANTMESSAGE = 4; -enum DLGC_HASSETSEL = 8; -enum DLGC_DEFPUSHBUTTON = 16; -enum DLGC_UNDEFPUSHBUTTON = 32; -enum DLGC_RADIOBUTTON = 64; -enum DLGC_WANTCHARS = 128; -enum DLGC_STATIC = 256; -enum DLGC_BUTTON = 0x2000; - -enum WA_INACTIVE = 0; -enum WA_ACTIVE = 1; -enum WA_CLICKACTIVE = 2; - -enum ICON_SMALL = 0; -enum ICON_BIG = 1; -static if (_WIN32_WINNT >= 0x501) { -enum ICON_SMALL2 = 2; -} - -enum HBITMAP - HBMMENU_CALLBACK = cast(HBITMAP)-1, - HBMMENU_SYSTEM = cast(HBITMAP)1, - HBMMENU_MBAR_RESTORE = cast(HBITMAP)2, - HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3, - HBMMENU_MBAR_CLOSE = cast(HBITMAP)5, - HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6, - HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7, - HBMMENU_POPUP_CLOSE = cast(HBITMAP)8, - HBMMENU_POPUP_RESTORE = cast(HBITMAP)9, - HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10, - HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11; - -enum MOD_ALT = 1; -enum MOD_CONTROL = 2; -enum MOD_SHIFT = 4; -enum MOD_WIN = 8; -enum MOD_IGNORE_ALL_MODIFIER = 1024; -enum MOD_ON_KEYUP = 2048; -enum MOD_RIGHT = 16384; -enum MOD_LEFT = 32768; - -enum LLKHF_EXTENDED = (KF_EXTENDED >> 8); -enum LLKHF_INJECTED = 0x00000010; -enum LLKHF_ALTDOWN = (KF_ALTDOWN >> 8); -enum LLKHF_UP = (KF_UP >> 8); - -enum CURSOR_SHOWING = 0x00000001; -enum WS_ACTIVECAPTION = 0x00000001; -enum ENDSESSION_LOGOFF = 0x80000000; - -enum GA_PARENT = 1; -enum GA_ROOT = 2; -enum GA_ROOTOWNER = 3; - -enum { - MAPVK_VK_TO_VSC, - MAPVK_VSC_TO_VK, - MAPVK_VK_TO_CHAR, - MAPVK_VSC_TO_VK_EX, - MAPVK_VK_TO_VSC_EX // = 4 -} - -enum { - INPUT_MOUSE, - INPUT_KEYBOARD, - INPUT_HARDWARE // = 2 -} - -// Callbacks -// --------- -extern (Windows) { - alias INT_PTR function(HWND, UINT, WPARAM, LPARAM) DLGPROC; - alias void function(HWND, UINT, UINT_PTR, DWORD) TIMERPROC; - alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC; - alias LRESULT function(int, WPARAM, LPARAM) HOOKPROC; - alias BOOL function(HWND, LPCSTR, HANDLE) PROPENUMPROCA; - alias BOOL function(HWND, LPCWSTR, HANDLE) PROPENUMPROCW; - alias BOOL function(HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; - alias BOOL function(HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; - alias int function(LPSTR, int, int, int) EDITWORDBREAKPROCA; - alias int function(LPWSTR, int, int, int) EDITWORDBREAKPROCW; - alias LRESULT function(HWND, UINT, WPARAM, LPARAM) WNDPROC; - alias BOOL function(HDC, LPARAM, WPARAM, int, int) DRAWSTATEPROC; - alias BOOL function(HWND, LPARAM) WNDENUMPROC; - alias BOOL function(HWND, LPARAM) ENUMWINDOWSPROC; - alias void function(LPHELPINFO) MSGBOXCALLBACK; - - alias BOOL function(HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; - alias BOOL function(LPSTR, LPARAM) NAMEENUMPROCA; - alias BOOL function(LPWSTR, LPARAM) NAMEENUMPROCW; - alias void function(HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; - - alias NAMEENUMPROCA DESKTOPENUMPROCA; - alias NAMEENUMPROCW DESKTOPENUMPROCW; - alias NAMEENUMPROCA WINSTAENUMPROCA; - alias NAMEENUMPROCW WINSTAENUMPROCW; -} - -mixin DECLARE_HANDLE!("HDWP"); -mixin DECLARE_HANDLE!("HDEVNOTIFY"); - -struct MENUGETOBJECTINFO { - DWORD dwFlags; - UINT uPos; - HMENU hmenu; - PVOID riid; - PVOID pvObj; -} -alias MENUGETOBJECTINFO* PMENUGETOBJECTINFO; - -struct ACCEL { - BYTE fVirt; - WORD key; - WORD cmd; -} -alias ACCEL* LPACCEL; - -struct ACCESSTIMEOUT { - UINT cbSize = ACCESSTIMEOUT.sizeof; - DWORD dwFlags; - DWORD iTimeOutMSec; -} -alias ACCESSTIMEOUT* LPACCESSTIMEOUT; - -struct ANIMATIONINFO { - UINT cbSize = ANIMATIONINFO.sizeof; - int iMinAnimate; -} -alias ANIMATIONINFO* LPANIMATIONINFO; - -struct CREATESTRUCTA { - LPVOID lpCreateParams; - HINSTANCE hInstance; - HMENU hMenu; - HWND hwndParent; - int cy; - int cx; - int y; - int x; - LONG style; - LPCSTR lpszName; - LPCSTR lpszClass; - DWORD dwExStyle; -} -alias CREATESTRUCTA* LPCREATESTRUCTA; - -struct CREATESTRUCTW { - LPVOID lpCreateParams; - HINSTANCE hInstance; - HMENU hMenu; - HWND hwndParent; - int cy; - int cx; - int y; - int x; - LONG style; - LPCWSTR lpszName; - LPCWSTR lpszClass; - DWORD dwExStyle; -} -alias CREATESTRUCTW* LPCREATESTRUCTW; - -struct CBT_CREATEWNDA { - LPCREATESTRUCTA lpcs; - HWND hwndInsertAfter; -} -alias CBT_CREATEWNDA* LPCBT_CREATEWNDA; - -struct CBT_CREATEWNDW { - LPCREATESTRUCTW lpcs; - HWND hwndInsertAfter; -} -alias CBT_CREATEWNDW* LPCBT_CREATEWNDW; - -struct CBTACTIVATESTRUCT { - BOOL fMouse; - HWND hWndActive; -} -alias CBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT; - -static if (_WIN32_WINNT >= 0x501) { - -struct WTSSESSION_NOTIFICATION -{ - DWORD cbSize; - DWORD dwSessionId; -} -alias WTSSESSION_NOTIFICATION* PWTSSESSION_NOTIFICATION; - -} - -struct CLIENTCREATESTRUCT { - HANDLE hWindowMenu; - UINT idFirstChild; -} -alias CLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT; - -struct COMPAREITEMSTRUCT { - UINT CtlType; - UINT CtlID; - HWND hwndItem; - UINT itemID1; - DWORD itemData1; - UINT itemID2; - DWORD itemData2; - DWORD dwLocaleId; -} -alias COMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT; - -struct COPYDATASTRUCT { - DWORD dwData; - DWORD cbData; - PVOID lpData; -} -alias COPYDATASTRUCT* PCOPYDATASTRUCT; - -struct CURSORSHAPE { - int xHotSpot; - int yHotSpot; - int cx; - int cy; - int cbWidth; - BYTE Planes; - BYTE BitsPixel; -} -alias CURSORSHAPE* LPCURSORSHAPE; - -struct CWPRETSTRUCT { - LRESULT lResult; - LPARAM lParam; - WPARAM wParam; - DWORD message; - HWND hwnd; -} - -struct CWPSTRUCT { - LPARAM lParam; - WPARAM wParam; - UINT message; - HWND hwnd; -} -alias CWPSTRUCT* PCWPSTRUCT; - -struct DEBUGHOOKINFO { - DWORD idThread; - DWORD idThreadInstaller; - LPARAM lParam; - WPARAM wParam; - int code; -} -alias DEBUGHOOKINFO* PDEBUGHOOKINFO, LPDEBUGHOOKINFO; - -struct DELETEITEMSTRUCT { - UINT CtlType; - UINT CtlID; - UINT itemID; - HWND hwndItem; - UINT itemData; -} -alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT, LPDELETEITEMSTRUCT; - -align(2): -struct DLGITEMTEMPLATE { - DWORD style; - DWORD dwExtendedStyle; - short x; - short y; - short cx; - short cy; - WORD id; -} -alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATE; - -struct DLGTEMPLATE { - DWORD style; - DWORD dwExtendedStyle; - WORD cdit; - short x; - short y; - short cx; - short cy; -} -alias DLGTEMPLATE* LPDLGTEMPLATE, LPDLGTEMPLATEA, LPDLGTEMPLATEW; -alias const(DLGTEMPLATE)* LPCDLGTEMPLATE; - -align: - -struct DRAWITEMSTRUCT { - UINT CtlType; - UINT CtlID; - UINT itemID; - UINT itemAction; - UINT itemState; - HWND hwndItem; - HDC hDC; - RECT rcItem; - DWORD itemData; -} -alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT, PDRAWITEMSTRUCT; - -struct DRAWTEXTPARAMS { - UINT cbSize = DRAWTEXTPARAMS.sizeof; - int iTabLength; - int iLeftMargin; - int iRightMargin; - UINT uiLengthDrawn; -} -alias DRAWTEXTPARAMS* LPDRAWTEXTPARAMS; - -struct PAINTSTRUCT { - HDC hdc; - BOOL fErase; - RECT rcPaint; - BOOL fRestore; - BOOL fIncUpdate; - BYTE[32] rgbReserved; -} -alias PAINTSTRUCT* LPPAINTSTRUCT; - -struct MSG { - HWND hwnd; - UINT message; - WPARAM wParam; - LPARAM lParam; - DWORD time; - POINT pt; -} -alias MSG* LPMSG, PMSG; - -struct ICONINFO { - BOOL fIcon; - DWORD xHotspot; - DWORD yHotspot; - HBITMAP hbmMask; - HBITMAP hbmColor; -} -alias ICONINFO* PICONINFO; - -struct NMHDR { - HWND hwndFrom; - UINT_PTR idFrom; - UINT code; -} -alias NMHDR* LPNMHDR; - -struct WNDCLASSA { - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCSTR lpszMenuName; - LPCSTR lpszClassName; -} -alias WNDCLASSA* LPWNDCLASSA, PWNDCLASSA; - -struct WNDCLASSW { - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCWSTR lpszMenuName; - LPCWSTR lpszClassName; -} -alias WNDCLASSW* LPWNDCLASSW, PWNDCLASSW; - -struct WNDCLASSEXA { - UINT cbSize = WNDCLASSEXA.sizeof; - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCSTR lpszMenuName; - LPCSTR lpszClassName; - HICON hIconSm; -} -alias WNDCLASSEXA* LPWNDCLASSEXA, PWNDCLASSEXA; - -struct WNDCLASSEXW { - UINT cbSize = WNDCLASSEXW.sizeof; - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCWSTR lpszMenuName; - LPCWSTR lpszClassName; - HICON hIconSm; -} -alias WNDCLASSEXW* LPWNDCLASSEXW, PWNDCLASSEXW; - -struct MENUITEMINFOA { - UINT cbSize = MENUITEMINFOA.sizeof; - UINT fMask; - UINT fType; - UINT fState; - UINT wID; - HMENU hSubMenu; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - ULONG_PTR dwItemData; - LPSTR dwTypeData; - UINT cch; - HBITMAP hbmpItem; -} -alias MENUITEMINFOA* LPMENUITEMINFOA; -alias const(MENUITEMINFOA)* LPCMENUITEMINFOA; - -struct MENUITEMINFOW { - UINT cbSize = MENUITEMINFOW.sizeof; - UINT fMask; - UINT fType; - UINT fState; - UINT wID; - HMENU hSubMenu; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - ULONG_PTR dwItemData; - LPWSTR dwTypeData; - UINT cch; - HBITMAP hbmpItem; -} -alias MENUITEMINFOW* LPMENUITEMINFOW; -alias const(MENUITEMINFOW)* LPCMENUITEMINFOW; - -struct SCROLLINFO { - UINT cbSize = this.sizeof; - UINT fMask; - int nMin; - int nMax; - UINT nPage; - int nPos; - int nTrackPos; -} -alias SCROLLINFO* LPSCROLLINFO; -alias const(SCROLLINFO)* LPCSCROLLINFO; - -struct WINDOWPLACEMENT { - UINT length; - UINT flags; - UINT showCmd; - POINT ptMinPosition; - POINT ptMaxPosition; - RECT rcNormalPosition; -} -alias WINDOWPLACEMENT* LPWINDOWPLACEMENT, PWINDOWPLACEMENT; - -struct MENUITEMTEMPLATEHEADER { - WORD versionNumber; - WORD offset; -} - -struct MENUITEMTEMPLATE { - WORD mtOption; - WORD mtID; - WCHAR[1] mtString; -} - -alias void MENUTEMPLATE, MENUTEMPLATEA, MENUTEMPLATEW; - -alias MENUTEMPLATE* LPMENUTEMPLATEA, LPMENUTEMPLATEW, LPMENUTEMPLATE; - -struct HELPINFO { - UINT cbSize = this.sizeof; - int iContextType; - int iCtrlId; - HANDLE hItemHandle; - DWORD dwContextId; - POINT MousePos; -} -alias HELPINFO* LPHELPINFO; - -struct MSGBOXPARAMSA { - UINT cbSize = this.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - LPCSTR lpszText; - LPCSTR lpszCaption; - DWORD dwStyle; - LPCSTR lpszIcon; - DWORD dwContextHelpId; - MSGBOXCALLBACK lpfnMsgBoxCallback; - DWORD dwLanguageId; -} -alias MSGBOXPARAMSA* PMSGBOXPARAMSA, LPMSGBOXPARAMSA; - -struct MSGBOXPARAMSW { - UINT cbSize = this.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - LPCWSTR lpszText; - LPCWSTR lpszCaption; - DWORD dwStyle; - LPCWSTR lpszIcon; - DWORD dwContextHelpId; - MSGBOXCALLBACK lpfnMsgBoxCallback; - DWORD dwLanguageId; -} -alias MSGBOXPARAMSW* PMSGBOXPARAMSW, LPMSGBOXPARAMSW; - -struct USEROBJECTFLAGS { - BOOL fInherit; - BOOL fReserved; - DWORD dwFlags; -} - -struct FILTERKEYS { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iWaitMSec; - DWORD iDelayMSec; - DWORD iRepeatMSec; - DWORD iBounceMSec; -} - -struct HIGHCONTRASTA { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPSTR lpszDefaultScheme; -} -alias HIGHCONTRASTA* LPHIGHCONTRASTA; - -struct HIGHCONTRASTW { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPWSTR lpszDefaultScheme; -} -alias HIGHCONTRASTW* LPHIGHCONTRASTW; - -struct ICONMETRICSA { - UINT cbSize = this.sizeof; - int iHorzSpacing; - int iVertSpacing; - int iTitleWrap; - LOGFONTA lfFont; -} -alias ICONMETRICSA* LPICONMETRICSA; - -struct ICONMETRICSW { - UINT cbSize = this.sizeof; - int iHorzSpacing; - int iVertSpacing; - int iTitleWrap; - LOGFONTW lfFont; -} -alias ICONMETRICSW* LPICONMETRICSW; - -struct MINIMIZEDMETRICS { - UINT cbSize = this.sizeof; - int iWidth; - int iHorzGap; - int iVertGap; - int iArrange; -} -alias MINIMIZEDMETRICS* LPMINIMIZEDMETRICS; - -struct MOUSEKEYS { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iMaxSpeed; - DWORD iTimeToMaxSpeed; - DWORD iCtrlSpeed; - DWORD dwReserved1; - DWORD dwReserved2; -} -alias MOUSEKEYS* LPMOUSEKEYS; - -struct NONCLIENTMETRICSA { - UINT cbSize = this.sizeof; - int iBorderWidth; - int iScrollWidth; - int iScrollHeight; - int iCaptionWidth; - int iCaptionHeight; - LOGFONTA lfCaptionFont; - int iSmCaptionWidth; - int iSmCaptionHeight; - LOGFONTA lfSmCaptionFont; - int iMenuWidth; - int iMenuHeight; - LOGFONTA lfMenuFont; - LOGFONTA lfStatusFont; - LOGFONTA lfMessageFont; -} -alias NONCLIENTMETRICSA* LPNONCLIENTMETRICSA; - -struct NONCLIENTMETRICSW { - UINT cbSize = this.sizeof; - int iBorderWidth; - int iScrollWidth; - int iScrollHeight; - int iCaptionWidth; - int iCaptionHeight; - LOGFONTW lfCaptionFont; - int iSmCaptionWidth; - int iSmCaptionHeight; - LOGFONTW lfSmCaptionFont; - int iMenuWidth; - int iMenuHeight; - LOGFONTW lfMenuFont; - LOGFONTW lfStatusFont; - LOGFONTW lfMessageFont; -} -alias NONCLIENTMETRICSW* LPNONCLIENTMETRICSW; - -struct SERIALKEYSA { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPSTR lpszActivePort; - LPSTR lpszPort; - UINT iBaudRate; - UINT iPortState; - UINT iActive; -} -alias SERIALKEYSA* LPSERIALKEYSA; - -struct SERIALKEYSW { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPWSTR lpszActivePort; - LPWSTR lpszPort; - UINT iBaudRate; - UINT iPortState; - UINT iActive; -} -alias SERIALKEYSW* LPSERIALKEYSW; - -struct SOUNDSENTRYA { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iFSTextEffect; - DWORD iFSTextEffectMSec; - DWORD iFSTextEffectColorBits; - DWORD iFSGrafEffect; - DWORD iFSGrafEffectMSec; - DWORD iFSGrafEffectColor; - DWORD iWindowsEffect; - DWORD iWindowsEffectMSec; - LPSTR lpszWindowsEffectDLL; - DWORD iWindowsEffectOrdinal; -} -alias SOUNDSENTRYA* LPSOUNDSENTRYA; - -struct SOUNDSENTRYW { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iFSTextEffect; - DWORD iFSTextEffectMSec; - DWORD iFSTextEffectColorBits; - DWORD iFSGrafEffect; - DWORD iFSGrafEffectMSec; - DWORD iFSGrafEffectColor; - DWORD iWindowsEffect; - DWORD iWindowsEffectMSec; - LPWSTR lpszWindowsEffectDLL; - DWORD iWindowsEffectOrdinal; -} -alias SOUNDSENTRYW* LPSOUNDSENTRYW; - -struct STICKYKEYS { - DWORD cbSize = this.sizeof; - DWORD dwFlags; -} -alias STICKYKEYS* LPSTICKYKEYS; - -struct TOGGLEKEYS { - DWORD cbSize = this.sizeof; - DWORD dwFlags; -} - -struct MOUSEHOOKSTRUCT { - POINT pt; - HWND hwnd; - UINT wHitTestCode; - DWORD dwExtraInfo; -} -alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT, PMOUSEHOOKSTRUCT; - -struct TRACKMOUSEEVENT { - DWORD cbSize = this.sizeof; - DWORD dwFlags; - HWND hwndTrack; - DWORD dwHoverTime; -} -alias TRACKMOUSEEVENT* LPTRACKMOUSEEVENT; - -struct TPMPARAMS { - UINT cbSize = this.sizeof; - RECT rcExclude; -} -alias TPMPARAMS* LPTPMPARAMS; - -struct EVENTMSG { - UINT message; - UINT paramL; - UINT paramH; - DWORD time; - HWND hwnd; -} -alias EVENTMSG* PEVENTMSGMSG, LPEVENTMSGMSG, PEVENTMSG, LPEVENTMSG; - -struct WINDOWPOS { - HWND hwnd; - HWND hwndInsertAfter; - int x; - int y; - int cx; - int cy; - UINT flags; -} -alias WINDOWPOS* PWINDOWPOS, LPWINDOWPOS; - -struct NCCALCSIZE_PARAMS { - RECT[3] rgrc; - PWINDOWPOS lppos; -} -alias NCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS; - -struct MDICREATESTRUCTA { - LPCSTR szClass; - LPCSTR szTitle; - HANDLE hOwner; - int x; - int y; - int cx; - int cy; - DWORD style; - LPARAM lParam; -} -alias MDICREATESTRUCTA* LPMDICREATESTRUCTA; - -struct MDICREATESTRUCTW { - LPCWSTR szClass; - LPCWSTR szTitle; - HANDLE hOwner; - int x; - int y; - int cx; - int cy; - DWORD style; - LPARAM lParam; -} -alias MDICREATESTRUCTW* LPMDICREATESTRUCTW; - -struct MINMAXINFO { - POINT ptReserved; - POINT ptMaxSize; - POINT ptMaxPosition; - POINT ptMinTrackSize; - POINT ptMaxTrackSize; -} -alias MINMAXINFO* PMINMAXINFO, LPMINMAXINFO; - -struct MDINEXTMENU { - HMENU hmenuIn; - HMENU hmenuNext; - HWND hwndNext; -} -alias MDINEXTMENU* PMDINEXTMENU, LPMDINEXTMENU; - -struct MEASUREITEMSTRUCT { - UINT CtlType; - UINT CtlID; - UINT itemID; - UINT itemWidth; - UINT itemHeight; - DWORD itemData; -} -alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT, LPMEASUREITEMSTRUCT; - -struct DROPSTRUCT { - HWND hwndSource; - HWND hwndSink; - DWORD wFmt; - DWORD dwData; - POINT ptDrop; - DWORD dwControlData; -} -alias DROPSTRUCT* PDROPSTRUCT, LPDROPSTRUCT; - -alias DWORD HELPPOLY; - -struct MULTIKEYHELPA { - DWORD mkSize; - CHAR mkKeylist; - CHAR[1] szKeyphrase; -} -alias MULTIKEYHELPA* PMULTIKEYHELPA, LPMULTIKEYHELPA; - -struct MULTIKEYHELPW { - DWORD mkSize; - WCHAR mkKeylist; - WCHAR[1] szKeyphrase; -} -alias MULTIKEYHELPW* PMULTIKEYHELPW, LPMULTIKEYHELPW; - -struct HELPWININFOA { - int wStructSize; - int x; - int y; - int dx; - int dy; - int wMax; - CHAR[2] rgchMember; -} -alias HELPWININFOA* PHELPWININFOA, LPHELPWININFOA; - -struct HELPWININFOW { - int wStructSize; - int x; - int y; - int dx; - int dy; - int wMax; - WCHAR[2] rgchMember; -} -alias HELPWININFOW* PHELPWININFOW, LPHELPWININFOW; - -struct STYLESTRUCT { - DWORD styleOld; - DWORD styleNew; -} -alias STYLESTRUCT* LPSTYLESTRUCT; - -struct ALTTABINFO { - DWORD cbSize = this.sizeof; - int cItems; - int cColumns; - int cRows; - int iColFocus; - int iRowFocus; - int cxItem; - int cyItem; - POINT ptStart; -} -alias ALTTABINFO* PALTTABINFO, LPALTTABINFO; - -struct COMBOBOXINFO { - DWORD cbSize = this.sizeof; - RECT rcItem; - RECT rcButton; - DWORD stateButton; - HWND hwndCombo; - HWND hwndItem; - HWND hwndList; -} -alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO; - -struct CURSORINFO { - DWORD cbSize = this.sizeof; - DWORD flags; - HCURSOR hCursor; - POINT ptScreenPos; -} -alias CURSORINFO* PCURSORINFO, LPCURSORINFO; - -struct MENUBARINFO { - DWORD cbSize = this.sizeof; - RECT rcBar; - HMENU hMenu; - HWND hwndMenu; - byte bf_; // Simulated bitfield -// BOOL fBarFocused:1; -// BOOL fFocused:1; - bool fBarFocused() { return (bf_ & 1) == 1; } - bool fFocused() { return (bf_ & 2) == 2; } - bool fBarFocused(bool b) { bf_ = cast(byte) ((bf_ & 0xFE) | b); return b; } - bool fFocused(bool b) { bf_ = cast(byte) (b ? (bf_ | 2) : bf_ & 0xFD); return b; } -} -alias MENUBARINFO* PMENUBARINFO; - -struct MENUINFO { - DWORD cbSize = this.sizeof; - DWORD fMask; - DWORD dwStyle; - UINT cyMax; - HBRUSH hbrBack; - DWORD dwContextHelpID; - ULONG_PTR dwMenuData; -} -alias MENUINFO* LPMENUINFO; -alias const(MENUINFO)* LPCMENUINFO; - - -enum CCHILDREN_SCROLLBAR = 5; - -struct SCROLLBARINFO { - DWORD cbSize = this.sizeof; - RECT rcScrollBar; - int dxyLineButton; - int xyThumbTop; - int xyThumbBottom; - int reserved; - DWORD[CCHILDREN_SCROLLBAR+1] rgstate; -} -alias SCROLLBARINFO* PSCROLLBARINFO, LPSCROLLBARINFO; - -enum CCHILDREN_TITLEBAR = 5; - -struct WINDOWINFO { - DWORD cbSize = WINDOWINFO.sizeof; - RECT rcWindow; - RECT rcClient; - DWORD dwStyle; - DWORD dwExStyle; - DWORD dwWindowStatus; - UINT cxWindowBorders; - UINT cyWindowBorders; - ATOM atomWindowType; - WORD wCreatorVersion; -} -alias WINDOWINFO* PWINDOWINFO, LPWINDOWINFO; - -struct LASTINPUTINFO { - UINT cbSize = this.sizeof; - DWORD dwTime; -} -alias LASTINPUTINFO* PLASTINPUTINFO; - -struct MONITORINFO { - DWORD cbSize = this.sizeof; - RECT rcMonitor; - RECT rcWork; - DWORD dwFlags; -} -alias MONITORINFO* LPMONITORINFO; - -enum CCHDEVICENAME = 32; - -struct MONITORINFOEXA { - DWORD cbSize = MONITORINFOEXA.sizeof; - RECT rcMonitor; - RECT rcWork; - DWORD dwFlags; - CHAR[CCHDEVICENAME] szDevice; -} -alias MONITORINFOEXA* LPMONITORINFOEXA; - -struct MONITORINFOEXW { - DWORD cbSize = MONITORINFOEXW.sizeof; - RECT rcMonitor; - RECT rcWork; - DWORD dwFlags; - WCHAR[CCHDEVICENAME] szDevice; -} -alias MONITORINFOEXW* LPMONITORINFOEXW; - -struct KBDLLHOOKSTRUCT { - DWORD vkCode; - DWORD scanCode; - DWORD flags; - DWORD time; - DWORD dwExtraInfo; -} -alias KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT; - -struct MSLLHOOKSTRUCT { - POINT pt; - DWORD mouseData; - DWORD flags; - DWORD time; - ULONG_PTR dwExtraInfo; -} -alias MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT; - -struct MOUSEINPUT { - LONG dx; - LONG dy; - DWORD mouseData; - DWORD dwFlags; - DWORD time; - ULONG_PTR dwExtraInfo; -} -alias MOUSEINPUT* PMOUSEINPUT; - -struct KEYBDINPUT { - WORD wVk; - WORD wScan; - DWORD dwFlags; - DWORD time; - ULONG_PTR dwExtraInfo; -} -alias KEYBDINPUT* PKEYBDINPUT; - -struct HARDWAREINPUT { - DWORD uMsg; - WORD wParamL; - WORD wParamH; -} -alias HARDWAREINPUT* PHARDWAREINPUT; - -struct INPUT { - DWORD type; - union { - MOUSEINPUT mi; - KEYBDINPUT ki; - HARDWAREINPUT hi; - } -} -alias INPUT* PINPUT, LPINPUT; - -static if (_WIN32_WINNT >= 0x501) { - struct BSMINFO { - UINT cbSize = this.sizeof; - HDESK hdesk; - HWND hwnd; - LUID luid; - } - alias BSMINFO* PBSMINFO; - - alias TypeDef!(HANDLE) HRAWINPUT; - - struct RAWINPUTHEADER { - DWORD dwType; - DWORD dwSize; - HANDLE hDevice; - WPARAM wParam; - } - alias RAWINPUTHEADER* PRAWINPUTHEADER; - - struct RAWMOUSE { - USHORT usFlags; - union { - ULONG ulButtons; - struct { - USHORT usButtonFlags; - USHORT usButtonData; - } - } - ULONG ulRawButtons; - LONG lLastX; - LONG lLastY; - ULONG ulExtraInformation; - } - alias RAWMOUSE* PRAWMOUSE, LPRAWMOUSE; - - struct RAWKEYBOARD { - USHORT MakeCode; - USHORT Flags; - USHORT Reserved; - USHORT VKey; - UINT Message; - ULONG ExtraInformation; - } - alias RAWKEYBOARD* PRAWKEYBOARD, LPRAWKEYBOARD; - - struct RAWHID { - DWORD dwSizeHid; - DWORD dwCount; - BYTE bRawData; - } - alias RAWHID* PRAWHID, LPRAWHID; - - struct RAWINPUT { - RAWINPUTHEADER header; - union _data { - RAWMOUSE mouse; - RAWKEYBOARD keyboard; - RAWHID hid; - } - _data data; - } - alias RAWINPUT* PRAWINPUT, LPRAWINPUT; - - struct RAWINPUTDEVICE { - USHORT usUsagePage; - USHORT usUsage; - DWORD dwFlags; - HWND hwndTarget; - } - alias RAWINPUTDEVICE* PRAWINPUTDEVICE, LPRAWINPUTDEVICE; - alias const(RAWINPUTDEVICE)* PCRAWINPUTDEVICE; - - struct RAWINPUTDEVICELIST { - HANDLE hDevice; - DWORD dwType; - } - alias RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST; - - struct RID_DEVICE_INFO_MOUSE { - DWORD dwId; - DWORD dwNumberOfButtons; - DWORD dwSampleRate; - BOOL fHasHorizontalWheel; - } - - struct RID_DEVICE_INFO_KEYBOARD { - DWORD dwType; - DWORD dwSubType; - DWORD dwKeyboardMode; - DWORD dwNumberOfFunctionKeys; - DWORD dwNumberOfIndicators; - DWORD dwNumberOfKeysTotal; - } - - struct RID_DEVICE_INFO_HID { - DWORD dwVendorId; - DWORD dwProductId; - DWORD dwVersionNumber; - USHORT usUsagePage; - USHORT usUsage; - } - - struct RID_DEVICE_INFO { - DWORD cbSize = this.sizeof; - DWORD dwType; - union { - RID_DEVICE_INFO_MOUSE mouse; - RID_DEVICE_INFO_KEYBOARD keyboard; - RID_DEVICE_INFO_HID hid; - } - } -}// (_WIN32_WINNT >= 0x501) - -alias CharToOemA AnsiToOem; -alias OemToCharA OemToAnsi; -alias CharToOemBuffA AnsiToOemBuff; -alias OemToCharBuffA OemToAnsiBuff; -alias CharUpperA AnsiUpper; -alias CharUpperBuffA AnsiUpperBuff; -alias CharLowerA AnsiLower; -alias CharLowerBuffA AnsiLowerBuff; -alias CharNextA AnsiNext; -alias CharPrevA AnsiPrev; - -alias MAKELONG MAKEWPARAM; -alias MAKELONG MAKELPARAM; -alias MAKELONG MAKELRESULT; - -void POINTSTOPOINT()(out POINT p, LONG ps) { - p.x = LOWORD(ps); - p.y = HIWORD(ps); -} - -POINTS POINTTOPOINTS()(in POINT p) { - return MAKELONG(p.x, p.y); -} - -extern (Windows) { - HKL ActivateKeyboardLayout(HKL, UINT); - BOOL AdjustWindowRect(LPRECT, DWORD, BOOL); - BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD); - BOOL AnyPopup(); - BOOL AppendMenuA(HMENU, UINT, UINT_PTR, LPCSTR); - BOOL AppendMenuW(HMENU, UINT, UINT_PTR, LPCWSTR); - UINT ArrangeIconicWindows(HWND); - BOOL AttachThreadInput(DWORD, DWORD, BOOL); - HDWP BeginDeferWindowPos(int); - HDC BeginPaint(HWND, LPPAINTSTRUCT); - BOOL BringWindowToTop(HWND); - BOOL CallMsgFilterA(LPMSG, INT); - BOOL CallMsgFilterW(LPMSG, INT); - LRESULT CallNextHookEx(HHOOK, int, WPARAM, LPARAM); - LRESULT CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM); - LRESULT CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM); - WORD CascadeWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*); - BOOL ChangeClipboardChain(HWND, HWND); - - LONG ChangeDisplaySettingsA(PDEVMODEA, DWORD); - LONG ChangeDisplaySettingsW(PDEVMODEW, DWORD); - LONG ChangeDisplaySettingsExA(LPCSTR, LPDEVMODEA, HWND, DWORD, LPVOID); - LONG ChangeDisplaySettingsExW(LPCWSTR, LPDEVMODEW, HWND, DWORD, LPVOID); - - BOOL ChangeMenuA(HMENU, UINT, LPCSTR, UINT, UINT); - BOOL ChangeMenuW(HMENU, UINT, LPCWSTR, UINT, UINT); - LPSTR CharLowerA(LPSTR); - LPWSTR CharLowerW(LPWSTR); - DWORD CharLowerBuffA(LPSTR, DWORD); - DWORD CharLowerBuffW(LPWSTR, DWORD); - LPSTR CharNextA(LPCSTR); - LPWSTR CharNextW(LPCWSTR); - LPSTR CharNextExA(WORD, LPCSTR, DWORD); - LPWSTR CharNextExW(WORD, LPCWSTR, DWORD); - LPSTR CharPrevA(LPCSTR, LPCSTR); - LPWSTR CharPrevW(LPCWSTR, LPCWSTR); - LPSTR CharPrevExA(WORD, LPCSTR, LPCSTR, DWORD); - LPWSTR CharPrevExW(WORD, LPCWSTR, LPCWSTR, DWORD); - BOOL CharToOemA(LPCSTR, LPSTR); - BOOL CharToOemW(LPCWSTR, LPSTR); - BOOL CharToOemBuffA(LPCSTR, LPSTR, DWORD); - BOOL CharToOemBuffW(LPCWSTR, LPSTR, DWORD); - LPSTR CharUpperA(LPSTR); - LPWSTR CharUpperW(LPWSTR); - DWORD CharUpperBuffA(LPSTR, DWORD); - DWORD CharUpperBuffW(LPWSTR, DWORD); - BOOL CheckDlgButton(HWND, int, UINT); - DWORD CheckMenuItem(HMENU, UINT, UINT); - BOOL CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT); - BOOL CheckRadioButton(HWND, int, int, int); - HWND ChildWindowFromPoint(HWND, POINT); - HWND ChildWindowFromPointEx(HWND, POINT, UINT); - BOOL ClientToScreen(HWND, LPPOINT); - BOOL ClipCursor(LPCRECT); - BOOL CloseClipboard(); - BOOL CloseDesktop(HDESK); - BOOL CloseWindow(HWND); - BOOL CloseWindowStation(HWINSTA); - int CopyAcceleratorTableA(HACCEL, LPACCEL, int); - int CopyAcceleratorTableW(HACCEL, LPACCEL, int); - - HICON CopyIcon(HICON); - HANDLE CopyImage(HANDLE, UINT, int, int, UINT); - BOOL CopyRect(LPRECT, LPCRECT); - int CountClipboardFormats(); - HACCEL CreateAcceleratorTableA(LPACCEL, int); - HACCEL CreateAcceleratorTableW(LPACCEL, int); - BOOL CreateCaret(HWND, HBITMAP, int, int); - HCURSOR CreateCursor(HINSTANCE, int, int, int, int, PCVOID, PCVOID); - - HDESK CreateDesktopA(LPCSTR, LPCSTR, LPDEVMODEA, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); - HDESK CreateDesktopW(LPCWSTR, LPCWSTR, LPDEVMODEW, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); - - HWND CreateDialogParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); - HWND CreateDialogParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); - HWND CreateDialogIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); - HWND CreateDialogIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); - - HICON CreateIcon(HINSTANCE, int, int, BYTE, BYTE, const(BYTE)*, BYTE*); - HICON CreateIconFromResource(PBYTE, DWORD, BOOL, DWORD); - HICON CreateIconFromResourceEx(PBYTE, DWORD, BOOL, DWORD, int, int, UINT); - HICON CreateIconIndirect(PICONINFO); - HWND CreateMDIWindowA(LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); - HWND CreateMDIWindowW(LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); - HMENU CreateMenu(); - HMENU CreatePopupMenu(); - - HWND CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); - HWND CreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); - - HWINSTA CreateWindowStationA(LPSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HWINSTA CreateWindowStationW(LPWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - LRESULT DefDlgProcA(HWND, UINT, WPARAM, LPARAM); - LRESULT DefDlgProcW(HWND, UINT, WPARAM, LPARAM); - HDWP DeferWindowPos(HDWP, HWND, HWND, int, int, int, int, UINT); - LRESULT DefFrameProcA(HWND, HWND, UINT, WPARAM, LPARAM); - LRESULT DefFrameProcW(HWND, HWND, UINT, WPARAM, LPARAM); - - LRESULT DefMDIChildProcA(HWND, UINT, WPARAM, LPARAM); - LRESULT DefMDIChildProcW(HWND, UINT, WPARAM, LPARAM); - LRESULT DefWindowProcA(HWND, UINT, WPARAM, LPARAM); - LRESULT DefWindowProcW(HWND, UINT, WPARAM, LPARAM); - BOOL DeleteMenu(HMENU, UINT, UINT); - BOOL DeregisterShellHookWindow(HWND); - BOOL DestroyAcceleratorTable(HACCEL); - BOOL DestroyCaret(); - BOOL DestroyCursor(HCURSOR); - BOOL DestroyIcon(HICON); - BOOL DestroyMenu(HMENU); - BOOL DestroyWindow(HWND); - - INT_PTR DialogBoxParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); - INT_PTR DialogBoxParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); - INT_PTR DialogBoxIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); - INT_PTR DialogBoxIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); - -} // extern (Windows) - -HCURSOR CopyCursor()(HCURSOR c) { - return cast(HCURSOR)CopyIcon(cast(HICON)c); -} - -HWND CreateDialogA()(HINSTANCE h, LPCSTR n, HWND w, DLGPROC f) { - return CreateDialogParamA(h, n, w, f, 0); -} - -HWND CreateDialogW()(HINSTANCE h, LPCWSTR n, HWND w, DLGPROC f) { - return CreateDialogParamW(h, n, w, f, 0); -} - -HWND CreateDialogIndirectA()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { - return CreateDialogIndirectParamA(h, t, w, f, 0); -} - -HWND CreateDialogIndirectW()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { - return CreateDialogIndirectParamW(h, t, w, f, 0); -} - -HWND CreateWindowA()(LPCSTR a, LPCSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { - return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k); -} - -HWND CreateWindowW()(LPCWSTR a, LPCWSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { - return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k); -} - -INT_PTR DialogBoxA()(HINSTANCE i, LPCSTR t, HWND p, DLGPROC f) { - return DialogBoxParamA(i, t, p, f, 0); -} - -INT_PTR DialogBoxW()(HINSTANCE i, LPCWSTR t, HWND p, DLGPROC f) { - return DialogBoxParamW(i, t, p, f, 0); -} - -INT_PTR DialogBoxIndirectA()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { - return DialogBoxIndirectParamA(i, t, p, f, 0); -} - -INT_PTR DialogBoxIndirectW()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { - return DialogBoxIndirectParamW(i, t, p, f, 0); -} - -BOOL ExitWindows()(UINT r, DWORD c) { - return ExitWindowsEx(EWX_LOGOFF, 0); -} -alias GetWindow GetNextWindow; - -extern (Windows): -LONG DispatchMessageA(const(MSG)*); -LONG DispatchMessageW(const(MSG)*); -int DlgDirListA(HWND, LPSTR, int, int, UINT); -int DlgDirListW(HWND, LPWSTR, int, int, UINT); -int DlgDirListComboBoxA(HWND, LPSTR, int, int, UINT); -int DlgDirListComboBoxW(HWND, LPWSTR, int, int, UINT); -BOOL DlgDirSelectComboBoxExA(HWND, LPSTR, int, int); -BOOL DlgDirSelectComboBoxExW(HWND, LPWSTR, int, int); -BOOL DlgDirSelectExA(HWND, LPSTR, int, int); -BOOL DlgDirSelectExW(HWND, LPWSTR, int, int); -BOOL DragDetect(HWND, POINT); -DWORD DragObject(HWND, HWND, UINT, DWORD, HCURSOR); -BOOL DrawAnimatedRects(HWND, int, LPCRECT, LPCRECT); -BOOL DrawCaption(HWND, HDC, LPCRECT, UINT); -BOOL DrawEdge(HDC, LPRECT, UINT, UINT); -BOOL DrawFocusRect(HDC, LPCRECT); -BOOL DrawFrameControl(HDC, LPRECT, UINT, UINT); -BOOL DrawIcon(HDC, int, int, HICON); -BOOL DrawIconEx(HDC, int, int, HICON, int, int, UINT, HBRUSH, UINT); -BOOL DrawMenuBar(HWND); -BOOL DrawStateA(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT); -BOOL DrawStateW(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT); -int DrawTextA(HDC, LPCSTR, int, LPRECT, UINT); -int DrawTextW(HDC, LPCWSTR, int, LPRECT, UINT); -int DrawTextExA(HDC, LPSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS); -int DrawTextExW(HDC, LPWSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS); -BOOL EmptyClipboard(); -BOOL EnableMenuItem(HMENU, UINT, UINT); -BOOL EnableScrollBar(HWND, UINT, UINT); -BOOL EnableWindow(HWND, BOOL); -BOOL EndDeferWindowPos(HDWP); -BOOL EndDialog(HWND, INT_PTR); -BOOL EndMenu(); -BOOL EndPaint(HWND, const(PAINTSTRUCT)*); -BOOL EnumChildWindows(HWND, ENUMWINDOWSPROC, LPARAM); -UINT EnumClipboardFormats(UINT); -BOOL EnumDesktopsA(HWINSTA, DESKTOPENUMPROCA, LPARAM); -BOOL EnumDesktopsW(HWINSTA, DESKTOPENUMPROCW, LPARAM); -BOOL EnumDesktopWindows(HDESK, ENUMWINDOWSPROC, LPARAM); -BOOL EnumDisplaySettingsA(LPCSTR, DWORD, PDEVMODEA); -BOOL EnumDisplaySettingsW(LPCWSTR, DWORD, PDEVMODEW); - -BOOL EnumDisplayDevicesA(LPCSTR, DWORD, PDISPLAY_DEVICEA, DWORD); -BOOL EnumDisplayDevicesW(LPCWSTR, DWORD, PDISPLAY_DEVICEW, DWORD); - -int EnumPropsA(HWND, PROPENUMPROCA); -int EnumPropsW(HWND, PROPENUMPROCW); -int EnumPropsExA(HWND, PROPENUMPROCEXA, LPARAM); -int EnumPropsExW(HWND, PROPENUMPROCEXW, LPARAM); - -BOOL EnumThreadWindows(DWORD, WNDENUMPROC, LPARAM); -BOOL EnumWindows(WNDENUMPROC, LPARAM); -BOOL EnumWindowStationsA(WINSTAENUMPROCA, LPARAM); -BOOL EnumWindowStationsW(WINSTAENUMPROCW, LPARAM); -BOOL EqualRect(LPCRECT, LPCRECT); - -BOOL ExitWindowsEx(UINT, DWORD); -HWND FindWindowA(LPCSTR, LPCSTR); -HWND FindWindowExA(HWND, HWND, LPCSTR, LPCSTR); -HWND FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR); -HWND FindWindowW(LPCWSTR, LPCWSTR); -BOOL FlashWindow(HWND, BOOL); - -int FrameRect(HDC, LPCRECT, HBRUSH); -BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); -HWND GetActiveWindow(); -HWND GetAncestor(HWND, UINT); -SHORT GetAsyncKeyState(int); -HWND GetCapture(); -UINT GetCaretBlinkTime(); -BOOL GetCaretPos(LPPOINT); -BOOL GetClassInfoA(HINSTANCE, LPCSTR, LPWNDCLASSA); -BOOL GetClassInfoExA(HINSTANCE, LPCSTR, LPWNDCLASSEXA); -BOOL GetClassInfoW(HINSTANCE, LPCWSTR, LPWNDCLASSW); -BOOL GetClassInfoExW(HINSTANCE, LPCWSTR, LPWNDCLASSEXW); -DWORD GetClassLongA(HWND, int); -DWORD GetClassLongW(HWND, int); -int GetClassNameA(HWND, LPSTR, int); -int GetClassNameW(HWND, LPWSTR, int); -WORD GetClassWord(HWND, int); -BOOL GetClientRect(HWND, LPRECT); -HANDLE GetClipboardData(UINT); -int GetClipboardFormatNameA(UINT, LPSTR, int); -int GetClipboardFormatNameW(UINT, LPWSTR, int); -HWND GetClipboardOwner(); -HWND GetClipboardViewer(); -BOOL GetClipCursor(LPRECT); -BOOL GetCursorPos(LPPOINT); -HDC GetDC(HWND); -HDC GetDCEx(HWND, HRGN, DWORD); -HWND GetDesktopWindow(); -int GetDialogBaseUnits(); -int GetDlgCtrlID(HWND); -HWND GetDlgItem(HWND, int); -UINT GetDlgItemInt(HWND, int, PBOOL, BOOL); -UINT GetDlgItemTextA(HWND, int, LPSTR, int); -UINT GetDlgItemTextW(HWND, int, LPWSTR, int); -UINT GetDoubleClickTime(); -HWND GetFocus(); -HWND GetForegroundWindow(); - -BOOL GetIconInfo(HICON, PICONINFO); -BOOL GetInputState(); -UINT GetKBCodePage(); -HKL GetKeyboardLayout(DWORD); -UINT GetKeyboardLayoutList(int, HKL*); -BOOL GetKeyboardLayoutNameA(LPSTR); -BOOL GetKeyboardLayoutNameW(LPWSTR); -BOOL GetKeyboardState(PBYTE); -int GetKeyboardType(int); -int GetKeyNameTextA(LONG, LPSTR, int); -int GetKeyNameTextW(LONG, LPWSTR, int); -SHORT GetKeyState(int); -HWND GetLastActivePopup(HWND); -HMENU GetMenu(HWND); -LONG GetMenuCheckMarkDimensions(); -DWORD GetMenuContextHelpId(HMENU); -UINT GetMenuDefaultItem(HMENU, UINT, UINT); -int GetMenuItemCount(HMENU); -UINT GetMenuItemID(HMENU, int); -BOOL GetMenuItemInfoA(HMENU, UINT, BOOL, LPMENUITEMINFOA); -BOOL GetMenuItemInfoW(HMENU, UINT, BOOL, LPMENUITEMINFOW); -BOOL GetMenuItemRect(HWND, HMENU, UINT, LPRECT); -UINT GetMenuState(HMENU, UINT, UINT); -int GetMenuStringA(HMENU, UINT, LPSTR, int, UINT); -int GetMenuStringW(HMENU, UINT, LPWSTR, int, UINT); -BOOL GetMessageA(LPMSG, HWND, UINT, UINT); -BOOL GetMessageW(LPMSG, HWND, UINT, UINT); -LONG GetMessageExtraInfo(); -DWORD GetMessagePos(); -LONG GetMessageTime(); - -HWND GetNextDlgGroupItem(HWND, HWND, BOOL); -HWND GetNextDlgTabItem(HWND, HWND, BOOL); - -HWND GetOpenClipboardWindow(); -HWND GetParent(HWND); -int GetPriorityClipboardFormat(UINT*, int); -HANDLE GetPropA(HWND, LPCSTR); -HANDLE GetPropW(HWND, LPCWSTR); - -DWORD GetQueueStatus(UINT); -BOOL GetScrollInfo(HWND, int, LPSCROLLINFO); -int GetScrollPos(HWND, int); -BOOL GetScrollRange(HWND, int, LPINT, LPINT); - -HMENU GetSubMenu(HMENU, int); -DWORD GetSysColor(int); -HBRUSH GetSysColorBrush(int); - -HMENU GetSystemMenu(HWND, BOOL); -int GetSystemMetrics(int); -DWORD GetTabbedTextExtentA(HDC, LPCSTR, int, int, LPINT); -DWORD GetTabbedTextExtentW(HDC, LPCWSTR, int, int, LPINT); -LONG GetWindowLongA(HWND, int); -LONG GetWindowLongW(HWND, int); - -HDESK GetThreadDesktop(DWORD); -HWND GetTopWindow(HWND); -BOOL GetUpdateRect(HWND, LPRECT, BOOL); -int GetUpdateRgn(HWND, HRGN, BOOL); -BOOL GetUserObjectInformationA(HANDLE, int, PVOID, DWORD, PDWORD); -BOOL GetUserObjectInformationW(HANDLE, int, PVOID, DWORD, PDWORD); -BOOL GetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); -HWND GetWindow(HWND, UINT); -DWORD GetWindowContextHelpId(HWND); -HDC GetWindowDC(HWND); -BOOL GetWindowPlacement(HWND, WINDOWPLACEMENT*); -BOOL GetWindowRect(HWND, LPRECT); -int GetWindowRgn(HWND, HRGN); -int GetWindowTextA(HWND, LPSTR, int); -int GetWindowTextLengthA(HWND); -int GetWindowTextLengthW(HWND); -int GetWindowTextW(HWND, LPWSTR, int); -WORD GetWindowWord(HWND, int); -BOOL GetAltTabInfoA(HWND, int, PALTTABINFO, LPSTR, UINT); -BOOL GetAltTabInfoW(HWND, int, PALTTABINFO, LPWSTR, UINT); -BOOL GetComboBoxInfo(HWND, PCOMBOBOXINFO); -BOOL GetCursorInfo(PCURSORINFO); -BOOL GetLastInputInfo(PLASTINPUTINFO); -DWORD GetListBoxInfo(HWND); -BOOL GetMenuBarInfo(HWND, LONG, LONG, PMENUBARINFO); -BOOL GetMenuInfo(HMENU, LPMENUINFO); -BOOL GetScrollBarInfo(HWND, LONG, PSCROLLBARINFO); -BOOL GetTitleBarInfo(HWND, PTITLEBARINFO); -BOOL GetWindowInfo(HWND, PWINDOWINFO); -UINT GetWindowModuleFileNameA(HWND, LPSTR, UINT); -UINT GetWindowModuleFileNameW(HWND, LPWSTR, UINT); -BOOL GrayStringA(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int); -BOOL GrayStringW(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int); -BOOL HideCaret(HWND); -BOOL HiliteMenuItem(HWND, HMENU, UINT, UINT); -BOOL InflateRect(LPRECT, int, int); -BOOL InSendMessage(); -BOOL InsertMenuA(HMENU, UINT, UINT, UINT_PTR, LPCSTR); -BOOL InsertMenuW(HMENU, UINT, UINT, UINT_PTR, LPCWSTR); -BOOL InsertMenuItemA(HMENU, UINT, BOOL, LPCMENUITEMINFOA); -BOOL InsertMenuItemW(HMENU, UINT, BOOL, LPCMENUITEMINFOW); -INT InternalGetWindowText(HWND, LPWSTR, INT); -BOOL IntersectRect(LPRECT, LPCRECT, LPCRECT); -BOOL InvalidateRect(HWND, LPCRECT, BOOL); -BOOL InvalidateRgn(HWND, HRGN, BOOL); -BOOL InvertRect(HDC, LPCRECT); -BOOL IsCharAlphaA(CHAR ch); -BOOL IsCharAlphaNumericA(CHAR); -BOOL IsCharAlphaNumericW(WCHAR); -BOOL IsCharAlphaW(WCHAR); -BOOL IsCharLowerA(CHAR); -BOOL IsCharLowerW(WCHAR); -BOOL IsCharUpperA(CHAR); -BOOL IsCharUpperW(WCHAR); -BOOL IsChild(HWND, HWND); -BOOL IsClipboardFormatAvailable(UINT); -BOOL IsDialogMessageA(HWND, LPMSG); -BOOL IsDialogMessageW(HWND, LPMSG); -UINT IsDlgButtonChecked(HWND, int); -BOOL IsIconic(HWND); -BOOL IsMenu(HMENU); -BOOL IsRectEmpty(LPCRECT); -BOOL IsWindow(HWND); -BOOL IsWindowEnabled(HWND); -BOOL IsWindowUnicode(HWND); -BOOL IsWindowVisible(HWND); -BOOL IsZoomed(HWND); -void keybd_event(BYTE, BYTE, DWORD, DWORD); -BOOL KillTimer(HWND, UINT_PTR); -HACCEL LoadAcceleratorsA(HINSTANCE, LPCSTR); -HACCEL LoadAcceleratorsW(HINSTANCE, LPCWSTR); -HBITMAP LoadBitmapA(HINSTANCE, LPCSTR); -HBITMAP LoadBitmapW(HINSTANCE, LPCWSTR); -HCURSOR LoadCursorA(HINSTANCE, LPCSTR); -HCURSOR LoadCursorFromFileA(LPCSTR); -HCURSOR LoadCursorFromFileW(LPCWSTR); -HCURSOR LoadCursorW(HINSTANCE, LPCWSTR); -HICON LoadIconA(HINSTANCE, LPCSTR); -HICON LoadIconW(HINSTANCE, LPCWSTR); -HANDLE LoadImageA(HINSTANCE, LPCSTR, UINT, int, int, UINT); -HANDLE LoadImageW(HINSTANCE, LPCWSTR, UINT, int, int, UINT); -HKL LoadKeyboardLayoutA(LPCSTR, UINT); -HKL LoadKeyboardLayoutW(LPCWSTR, UINT); -HMENU LoadMenuA(HINSTANCE, LPCSTR); -HMENU LoadMenuIndirectA(const(MENUTEMPLATE)*); -HMENU LoadMenuIndirectW(const(MENUTEMPLATE)*); -HMENU LoadMenuW(HINSTANCE, LPCWSTR); -int LoadStringA(HINSTANCE, UINT, LPSTR, int); -int LoadStringW(HINSTANCE, UINT, LPWSTR, int); -BOOL LockWindowUpdate(HWND); -int LookupIconIdFromDirectory(PBYTE, BOOL); -int LookupIconIdFromDirectoryEx(PBYTE, BOOL, int, int, UINT); -BOOL MapDialogRect(HWND, LPRECT); -UINT MapVirtualKeyA(UINT, UINT); -UINT MapVirtualKeyExA(UINT, UINT, HKL); -UINT MapVirtualKeyExW(UINT, UINT, HKL); -UINT MapVirtualKeyW(UINT, UINT); -int MapWindowPoints(HWND, HWND, LPPOINT, UINT); -int MenuItemFromPoint(HWND, HMENU, POINT); -BOOL MessageBeep(UINT); -int MessageBoxA(HWND, LPCSTR, LPCSTR, UINT); -int MessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT); -int MessageBoxExA(HWND, LPCSTR, LPCSTR, UINT, WORD); -int MessageBoxExW(HWND, LPCWSTR, LPCWSTR, UINT, WORD); -int MessageBoxIndirectA(const(MSGBOXPARAMSA)*); -int MessageBoxIndirectW(const(MSGBOXPARAMSW)*); -BOOL ModifyMenuA(HMENU, UINT, UINT, UINT_PTR, LPCSTR); -BOOL ModifyMenuW(HMENU, UINT, UINT, UINT_PTR, LPCWSTR); -void mouse_event(DWORD, DWORD, DWORD, DWORD, ULONG_PTR); -BOOL MoveWindow(HWND, int, int, int, int, BOOL); -DWORD MsgWaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD, DWORD); -DWORD MsgWaitForMultipleObjectsEx(DWORD, const(HANDLE)*, DWORD, DWORD, DWORD); -DWORD OemKeyScan(WORD); -BOOL OemToCharA(LPCSTR, LPSTR); -BOOL OemToCharBuffA(LPCSTR, LPSTR, DWORD); -BOOL OemToCharBuffW(LPCSTR, LPWSTR, DWORD); -BOOL OemToCharW(LPCSTR, LPWSTR); -BOOL OffsetRect(LPRECT, int, int); -BOOL OpenClipboard(HWND); -HDESK OpenDesktopA(LPSTR, DWORD, BOOL, DWORD); -HDESK OpenDesktopW(LPWSTR, DWORD, BOOL, DWORD); -BOOL OpenIcon(HWND); -HDESK OpenInputDesktop(DWORD, BOOL, DWORD); -HWINSTA OpenWindowStationA(LPSTR, BOOL, DWORD); -HWINSTA OpenWindowStationW(LPWSTR, BOOL, DWORD); -BOOL PaintDesktop(HDC); -BOOL PeekMessageA(LPMSG, HWND, UINT, UINT, UINT); -BOOL PeekMessageW(LPMSG, HWND, UINT, UINT, UINT); -BOOL PostMessageA(HWND, UINT, WPARAM, LPARAM); -BOOL PostMessageW(HWND, UINT, WPARAM, LPARAM); -void PostQuitMessage(int); -BOOL PostThreadMessageA(DWORD, UINT, WPARAM, LPARAM); -BOOL PostThreadMessageW(DWORD, UINT, WPARAM, LPARAM); -BOOL PtInRect(LPCRECT, POINT); -HWND RealChildWindowFromPoint(HWND, POINT); -UINT RealGetWindowClassA(HWND, LPSTR, UINT); -UINT RealGetWindowClassW(HWND, LPWSTR, UINT); -BOOL RedrawWindow(HWND, LPCRECT, HRGN, UINT); -ATOM RegisterClassA(const(WNDCLASSA)*); -ATOM RegisterClassW(const(WNDCLASSW)*); -ATOM RegisterClassExA(const(WNDCLASSEXA)*); -ATOM RegisterClassExW(const(WNDCLASSEXW)*); -UINT RegisterClipboardFormatA(LPCSTR); -UINT RegisterClipboardFormatW(LPCWSTR); -BOOL RegisterHotKey(HWND, int, UINT, UINT); -UINT RegisterWindowMessageA(LPCSTR); -UINT RegisterWindowMessageW(LPCWSTR); -BOOL ReleaseCapture(); -int ReleaseDC(HWND, HDC); -BOOL RemoveMenu(HMENU, UINT, UINT); -HANDLE RemovePropA(HWND, LPCSTR); -HANDLE RemovePropW(HWND, LPCWSTR); -BOOL ReplyMessage(LRESULT); -BOOL ScreenToClient(HWND, LPPOINT); -BOOL ScrollDC(HDC, int, int, LPCRECT, LPCRECT, HRGN, LPRECT); -BOOL ScrollWindow(HWND, int, int, LPCRECT, LPCRECT); -int ScrollWindowEx(HWND, int, int, LPCRECT, LPCRECT, HRGN, LPRECT, UINT); -LONG SendDlgItemMessageA(HWND, int, UINT, WPARAM, LPARAM); -LONG SendDlgItemMessageW(HWND, int, UINT, WPARAM, LPARAM); -LRESULT SendMessageA(HWND, UINT, WPARAM, LPARAM); -BOOL SendMessageCallbackA(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); -BOOL SendMessageCallbackW(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); -LRESULT SendMessageTimeoutA(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); -LRESULT SendMessageTimeoutW(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); -LRESULT SendMessageW(HWND, UINT, WPARAM, LPARAM); -BOOL SendNotifyMessageA(HWND, UINT, WPARAM, LPARAM); -BOOL SendNotifyMessageW(HWND, UINT, WPARAM, LPARAM); -HWND SetActiveWindow(HWND); -HWND SetCapture(HWND hWnd); -BOOL SetCaretBlinkTime(UINT); -BOOL SetCaretPos(int, int); -DWORD SetClassLongA(HWND, int, LONG); -DWORD SetClassLongW(HWND, int, LONG); -WORD SetClassWord(HWND, int, WORD); -HANDLE SetClipboardData(UINT, HANDLE); -HWND SetClipboardViewer(HWND); -HCURSOR SetCursor(HCURSOR); -BOOL SetCursorPos(int, int); -void SetDebugErrorLevel(DWORD); -BOOL SetDlgItemInt(HWND, int, UINT, BOOL); -BOOL SetDlgItemTextA(HWND, int, LPCSTR); -BOOL SetDlgItemTextW(HWND, int, LPCWSTR); -BOOL SetDoubleClickTime(UINT); -HWND SetFocus(HWND); -BOOL SetForegroundWindow(HWND); -BOOL SetKeyboardState(PBYTE); -BOOL SetMenu(HWND, HMENU); -BOOL SetMenuContextHelpId(HMENU, DWORD); -BOOL SetMenuDefaultItem(HMENU, UINT, UINT); -BOOL SetMenuInfo(HMENU, LPCMENUINFO); -BOOL SetMenuItemBitmaps(HMENU, UINT, UINT, HBITMAP, HBITMAP); -BOOL SetMenuItemInfoA(HMENU, UINT, BOOL, LPCMENUITEMINFOA); -BOOL SetMenuItemInfoW(HMENU, UINT, BOOL, LPCMENUITEMINFOW); -LPARAM SetMessageExtraInfo(LPARAM); -BOOL SetMessageQueue(int); -HWND SetParent(HWND, HWND); -BOOL SetProcessWindowStation(HWINSTA); -BOOL SetPropA(HWND, LPCSTR, HANDLE); -BOOL SetPropW(HWND, LPCWSTR, HANDLE); -BOOL SetRect(LPRECT, int, int, int, int); -BOOL SetRectEmpty(LPRECT); -int SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL); -int SetScrollPos(HWND, int, int, BOOL); -BOOL SetScrollRange(HWND, int, int, int, BOOL); -BOOL SetSysColors(int, const(INT)*, const(COLORREF)*); -BOOL SetSystemCursor(HCURSOR, DWORD); -BOOL SetThreadDesktop(HDESK); -UINT_PTR SetTimer(HWND, UINT_PTR, UINT, TIMERPROC); -BOOL SetUserObjectInformationA(HANDLE, int, PVOID, DWORD); -BOOL SetUserObjectInformationW(HANDLE, int, PVOID, DWORD); -BOOL SetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR); -BOOL SetWindowContextHelpId(HWND, DWORD); -LONG SetWindowLongA(HWND, int, LONG); -LONG SetWindowLongW(HWND, int, LONG); -BOOL SetWindowPlacement(HWND hWnd, const(WINDOWPLACEMENT)*); -BOOL SetWindowPos(HWND, HWND, int, int, int, int, UINT); -int SetWindowRgn(HWND, HRGN, BOOL); -HHOOK SetWindowsHookA(int, HOOKPROC); -HHOOK SetWindowsHookW(int, HOOKPROC); -HHOOK SetWindowsHookExA(int, HOOKPROC, HINSTANCE, DWORD); -HHOOK SetWindowsHookExW(int, HOOKPROC, HINSTANCE, DWORD); -BOOL SetWindowTextA(HWND, LPCSTR); -BOOL SetWindowTextW(HWND, LPCWSTR); -WORD SetWindowWord(HWND, int, WORD); -BOOL ShowCaret(HWND); -int ShowCursor(BOOL); -BOOL ShowOwnedPopups(HWND, BOOL); -BOOL ShowScrollBar(HWND, int, BOOL); -BOOL ShowWindow(HWND, int); -BOOL ShowWindowAsync(HWND, int); -BOOL SubtractRect(LPRECT, LPCRECT, LPCRECT); -BOOL SwapMouseButton(BOOL); -BOOL SwitchDesktop(HDESK); -BOOL SystemParametersInfoA(UINT, UINT, PVOID, UINT); -BOOL SystemParametersInfoW(UINT, UINT, PVOID, UINT); -LONG TabbedTextOutA(HDC, int, int, LPCSTR, int, int, LPINT, int); -LONG TabbedTextOutW(HDC, int, int, LPCWSTR, int, int, LPINT, int); -WORD TileWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*); -int ToAscii(UINT, UINT, PBYTE, LPWORD, UINT); -int ToAsciiEx(UINT, UINT, PBYTE, LPWORD, UINT, HKL); -int ToUnicode(UINT, UINT, PBYTE, LPWSTR, int, UINT); -int ToUnicodeEx(UINT, UINT, PBYTE, LPWSTR, int, UINT, HKL); -BOOL TrackMouseEvent(LPTRACKMOUSEEVENT); -BOOL TrackPopupMenu(HMENU, UINT, int, int, int, HWND, LPCRECT); -BOOL TrackPopupMenuEx(HMENU, UINT, int, int, HWND, LPTPMPARAMS); -int TranslateAcceleratorA(HWND, HACCEL, LPMSG); -int TranslateAcceleratorW(HWND, HACCEL, LPMSG); -BOOL TranslateMDISysAccel(HWND, LPMSG); -BOOL TranslateMessage(const(MSG)*); -BOOL UnhookWindowsHook(int, HOOKPROC); -BOOL UnhookWindowsHookEx(HHOOK); -BOOL UnionRect(LPRECT, LPCRECT, LPCRECT); -BOOL UnloadKeyboardLayout(HKL); -BOOL UnregisterClassA(LPCSTR, HINSTANCE); -BOOL UnregisterClassW(LPCWSTR, HINSTANCE); -BOOL UnregisterHotKey(HWND, int); -BOOL UpdateWindow(HWND); -BOOL ValidateRect(HWND, LPCRECT); -BOOL ValidateRgn(HWND, HRGN); -SHORT VkKeyScanA(CHAR); -SHORT VkKeyScanExA(CHAR, HKL); -SHORT VkKeyScanExW(WCHAR, HKL); -SHORT VkKeyScanW(WCHAR); -DWORD WaitForInputIdle(HANDLE, DWORD); -BOOL WaitMessage(); -HWND WindowFromDC(HDC hDC); -HWND WindowFromPoint(POINT); -UINT WinExec(LPCSTR, UINT); -BOOL WinHelpA(HWND, LPCSTR, UINT, DWORD); -BOOL WinHelpW(HWND, LPCWSTR, UINT, DWORD); - -extern (C) { - int wsprintfA(LPSTR, LPCSTR, ...); - int wsprintfW(LPWSTR, LPCWSTR, ...); -} - - -// These shouldn't be necessary for D. -alias TypeDef!(char*) va_list_; -int wvsprintfA(LPSTR, LPCSTR, va_list_ arglist); -int wvsprintfW(LPWSTR, LPCWSTR, va_list_ arglist); - -enum : DWORD { - MONITOR_DEFAULTTONULL, - MONITOR_DEFAULTTOPRIMARY, - MONITOR_DEFAULTTONEAREST // = 2 -} -enum MONITORINFOF_PRIMARY = 1; - -enum EDS_RAWMODE = 0x00000002; - -enum { - ISMEX_NOSEND = 0, - ISMEX_SEND = 1, - ISMEX_NOTIFY = 2, - ISMEX_CALLBACK = 4, - ISMEX_REPLIED = 8 -} - -struct TITLEBARINFO { - DWORD cbSize = TITLEBARINFO.sizeof; - RECT rcTitleBar; - DWORD[CCHILDREN_TITLEBAR+1] rgstate; -} -alias TITLEBARINFO* PTITLEBARINFO, LPTITLEBARINFO; - -static if (_WIN32_WINNT >= 0x501) { // *** correct? - struct FLASHWINFO { - UINT cbSize = this.sizeof; - HWND hwnd; - DWORD dwFlags; - UINT uCount; - DWORD dwTimeout; - } - alias FLASHWINFO* PFLASHWINFO; -} - -enum DWORD ASFW_ANY = -1; -enum : UINT { - LSFW_LOCK = 1, - LSFW_UNLOCK -} -enum { - GMMP_USE_DISPLAY_POINTS = 1, - GMMP_USE_HIGH_RESOLUTION_POINTS -} - -struct MOUSEMOVEPOINT { - int x; - int y; - DWORD time; - ULONG_PTR dwExtraInfo; -} -alias MOUSEMOVEPOINT* PMOUSEMOVEPOINT, LPMOUSEMOVEPOINT; - -enum { - MIM_MAXHEIGHT = 1, - MIM_BACKGROUND = 2, - MIM_HELPID = 4, - MIM_MENUDATA = 8, - MIM_STYLE = 16, - MIM_APPLYTOSUBMENUS = 0x80000000L -} - -enum { - MNS_NOCHECK = 0x80000000, - MNS_MODELESS = 0x40000000, - MNS_DRAGDROP = 0x20000000, - MNS_AUTODISMISS = 0x10000000, - MNS_NOTIFYBYPOS = 0x08000000, - MNS_CHECKORBMP = 0x04000000 -} - -enum { - PM_QS_INPUT = (QS_INPUT << 16), - PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16), - PM_QS_PAINT = (QS_PAINT << 16), - PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16) -} -/* -#define WM_GETOBJECT 0x003D -#define WM_CHANGEUISTATE 0x0127 -#define WM_UPDATEUISTATE 0x0128 -#define WM_QUERYUISTATE 0x0129 -#define WM_UNINITMENUPOPUP 0x0125 -#define WM_MENURBUTTONUP 290 -#define WM_MENUCOMMAND 0x0126 -#define WM_MENUGETOBJECT 0x0124 -#define WM_MENUDRAG 0x0123 -#define WM_APPCOMMAND 0x0319 -#define WM_NCXBUTTONDOWN 171 -#define WM_NCXBUTTONUP 172 -#define WM_NCXBUTTONDBLCLK 173 -#define WM_NCMOUSEHOVER 0x02A0 -#define WM_NCMOUSELEAVE 0x02A2*/ - -enum { - FLASHW_STOP = 0, - FLASHW_CAPTION = 0x01, - FLASHW_TRAY = 0x02, - FLASHW_ALL = 0x03, - FLASHW_TIMER = 0x04, - FLASHW_TIMERNOFG = 0x0C -} - -enum CHILDID_SELF = 0; - -enum { - OBJID_WINDOW = 0x00000000, - OBJID_SOUND = 0xFFFFFFF5, - OBJID_ALERT = 0xFFFFFFF6, - OBJID_CURSOR = 0xFFFFFFF7, - OBJID_CARET = 0xFFFFFFF8, - OBJID_SIZEGRIP = 0xFFFFFFF9, - OBJID_HSCROLL = 0xFFFFFFFA, - OBJID_VSCROLL = 0xFFFFFFFB, - OBJID_CLIENT = 0xFFFFFFFC, - OBJID_MENU = 0xFFFFFFFD, - OBJID_TITLEBAR = 0xFFFFFFFE, - OBJID_SYSMENU = 0xFFFFFFFF -} - -enum { - GUI_CARETBLINKING = 0x0001, - GUI_INMOVESIZE = 0x0002, - GUI_INMENUMODE = 0x0004, - GUI_SYSTEMMENUMODE = 0x0008, - GUI_POPUPMENUMODE = 0x0010 -} -static if (_WIN32_WINNT >= 0x501) { - enum GUI_16BITTASK = 0x0020; -} - -enum { - WINEVENT_OUTOFCONTEXT = 0x00, - WINEVENT_SKIPOWNTHREAD = 0x01, - WINEVENT_SKIPOWNPROCESS = 0x02, - WINEVENT_INCONTEXT = 0x04 -} - -enum { - AW_HOR_POSITIVE = 0x00000001, - AW_HOR_NEGATIVE = 0x00000002, - AW_VER_POSITIVE = 0x00000004, - AW_VER_NEGATIVE = 0x00000008, - AW_CENTER = 0x00000010, - AW_HIDE = 0x00010000, - AW_ACTIVATE = 0x00020000, - AW_SLIDE = 0x00040000, - AW_BLEND = 0x00080000 -} - -enum { - DEVICE_NOTIFY_WINDOW_HANDLE = 0x00000000, - DEVICE_NOTIFY_SERVICE_HANDLE = 0x00000001 -} - -static if (_WIN32_WINNT >= 0x501) { - enum DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 0x00000004; -} - -enum : DWORD { - EVENT_MIN = 0x00000001, - EVENT_SYSTEM_SOUND = 0x00000001, - EVENT_SYSTEM_ALERT, - EVENT_SYSTEM_FOREGROUND, - EVENT_SYSTEM_MENUSTART, - EVENT_SYSTEM_MENUEND, - EVENT_SYSTEM_MENUPOPUPSTART, - EVENT_SYSTEM_MENUPOPUPEND, - EVENT_SYSTEM_CAPTURESTART, - EVENT_SYSTEM_CAPTUREEND, - EVENT_SYSTEM_MOVESIZESTART, - EVENT_SYSTEM_MOVESIZEEND, - EVENT_SYSTEM_CONTEXTHELPSTART, - EVENT_SYSTEM_CONTEXTHELPEND, - EVENT_SYSTEM_DRAGDROPSTART, - EVENT_SYSTEM_DRAGDROPEND, - EVENT_SYSTEM_DIALOGSTART, - EVENT_SYSTEM_DIALOGEND, - EVENT_SYSTEM_SCROLLINGSTART, - EVENT_SYSTEM_SCROLLINGEND, - EVENT_SYSTEM_SWITCHSTART, - EVENT_SYSTEM_SWITCHEND, - EVENT_SYSTEM_MINIMIZESTART, - EVENT_SYSTEM_MINIMIZEEND, // = 0x00000017 - EVENT_OBJECT_CREATE = 0x00008000, - EVENT_OBJECT_DESTROY, - EVENT_OBJECT_SHOW, - EVENT_OBJECT_HIDE, - EVENT_OBJECT_REORDER, - EVENT_OBJECT_FOCUS, - EVENT_OBJECT_SELECTION, - EVENT_OBJECT_SELECTIONADD, - EVENT_OBJECT_SELECTIONREMOVE, - EVENT_OBJECT_SELECTIONWITHIN, - EVENT_OBJECT_STATECHANGE, - EVENT_OBJECT_LOCATIONCHANGE, - EVENT_OBJECT_NAMECHANGE, - EVENT_OBJECT_DESCRIPTIONCHANGE, - EVENT_OBJECT_VALUECHANGE, - EVENT_OBJECT_PARENTCHANGE, - EVENT_OBJECT_HELPCHANGE, - EVENT_OBJECT_DEFACTIONCHANGE, - EVENT_OBJECT_ACCELERATORCHANGE, // = 0x00008012 - EVENT_MAX = 0x7FFFFFFF -} - -static if (_WIN32_WINNT >= 0x501) { - enum : DWORD { - EVENT_CONSOLE_CARET = 0x00004000, - EVENT_CONSOLE_UPDATE_REGION, - EVENT_CONSOLE_UPDATE_SIMPLE, - EVENT_CONSOLE_UPDATE_SCROLL, - EVENT_CONSOLE_LAYOUT, - EVENT_CONSOLE_START_APPLICATION, - EVENT_CONSOLE_END_APPLICATION, // = 0x00004007 - } - - enum : LONG { - CONSOLE_CARET_SELECTION = 1, - CONSOLE_CARET_VISIBLE // = 2 - } - enum LONG CONSOLE_APPLICATION_16BIT = 1; -} - -enum { - LWA_COLORKEY = 1, - LWA_ALPHA -} -enum { - ULW_COLORKEY = 1, - ULW_ALPHA = 2, - ULW_OPAQUE = 4 -} -enum { - GR_GDIOBJECTS, - GR_USEROBJECTS -} - -enum { - XBUTTON1 = 1, - XBUTTON2 -} - -struct GUITHREADINFO { - DWORD cbSize = this.sizeof; - DWORD flags; - HWND hwndActive; - HWND hwndFocus; - HWND hwndCapture; - HWND hwndMenuOwner; - HWND hwndMoveSize; - HWND hwndCaret; - RECT rcCaret; -} -alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO; -extern (Windows) { - alias void function(HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC; -} -// *** line 4680 of MinGW 4.0 -int BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM); -int BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM); - -UINT SendInput(UINT, LPINPUT, int); -BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM); -BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFO); -BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFOEXA); -BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFO); -BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFOEXW); -HMONITOR MonitorFromPoint(POINT, DWORD); -HMONITOR MonitorFromRect(LPCRECT, DWORD); -HMONITOR MonitorFromWindow(HWND, DWORD); -BOOL AllowSetForegroundWindow(DWORD); -BOOL AnimateWindow(HWND, DWORD, DWORD); -BOOL EndTask(HWND, BOOL, BOOL); -BOOL EnumDisplaySettingsExA(LPCSTR, DWORD, LPDEVMODEA, DWORD); -BOOL EnumDisplaySettingsExW(LPCWSTR, DWORD, LPDEVMODEW, DWORD); -DWORD GetClipboardSequenceNumber(); -DWORD GetGuiResources(HANDLE, DWORD); -BOOL GetGUIThreadInfo(DWORD, LPGUITHREADINFO); - -int GetMouseMovePointsEx(UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD); -BOOL GetProcessDefaultLayout(DWORD*); -HWND GetShellWindow(); -BOOL IsHungAppWindow(HWND); -DWORD InSendMessageEx(LPVOID); -BOOL LockSetForegroundWindow(UINT); -BOOL LockWorkStation(); -void NotifyWinEvent(DWORD, HWND, LONG, LONG); -HDEVNOTIFY RegisterDeviceNotificationA(HANDLE, LPVOID, DWORD); -HDEVNOTIFY RegisterDeviceNotificationW(HANDLE, LPVOID, DWORD); -BOOL SetProcessDefaultLayout(DWORD); -HWINEVENTHOOK SetWinEventHook(UINT, UINT, HMODULE, WINEVENTPROC, DWORD, DWORD, UINT); -void SwitchToThisWindow(HWND, BOOL); -BOOL SetLayeredWindowAttributes(HWND, COLORREF, BYTE, DWORD); -BOOL UpdateLayeredWindow(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD); -BOOL UserHandleGrantAccess(HANDLE, HANDLE, BOOL); -BOOL UnhookWinEvent(HWINEVENTHOOK); -BOOL UnregisterDeviceNotification(HANDLE); - -static if (_WIN32_WINNT >= 0x501) { - int BroadcastSystemMessageExA(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); - int BroadcastSystemMessageExW(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); - LRESULT DefRawInputProc(PRAWINPUT*, INT, UINT); - BOOL FlashWindowEx(PFLASHWINFO); - BOOL GetLayeredWindowAttributes(HWND, COLORREF*, BYTE*, DWORD*); - UINT GetRawInputBuffer(PRAWINPUT, PUINT, UINT); - UINT GetRawInputData(HRAWINPUT, UINT, LPVOID, PUINT, UINT); - UINT GetRawInputDeviceInfoA(HANDLE, UINT, LPVOID, PUINT); - UINT GetRawInputDeviceInfoW(HANDLE, UINT, LPVOID, PUINT); - UINT GetRawInputDeviceList(PRAWINPUTDEVICELIST, PUINT, UINT); - UINT GetRegisteredRawInputDevices(PRAWINPUTDEVICE, PUINT, UINT); - BOOL IsGUIThread(BOOL); - BOOL IsWinEventHookInstalled(DWORD); - BOOL PrintWindow(HWND, HDC, UINT); - BOOL RegisterRawInputDevices(PCRAWINPUTDEVICE, UINT, UINT); -} - -version (Win64) { - LONG_PTR GetWindowLongPtrA(HWND, int); - LONG_PTR GetWindowLongPtrW(HWND, int); - LONG_PTR SetWindowLongPtrA(HWND, int, LONG_PTR); - LONG_PTR SetWindowLongPtrW(HWND, int, LONG_PTR); -} else { - alias GetWindowLongA GetWindowLongPtrA; - alias GetWindowLongW GetWindowLongPtrW; - alias SetWindowLongA SetWindowLongPtrA; - alias SetWindowLongW SetWindowLongPtrW; -} - - -// ----- -// Aliases for Unicode or Ansi -version(Unicode) { - alias EDITWORDBREAKPROCW EDITWORDBREAKPROC; - alias PROPENUMPROCW PROPENUMPROC; - alias PROPENUMPROCEXW PROPENUMPROCEX; - alias DESKTOPENUMPROCW DESKTOPENUMPROC; - alias WINSTAENUMPROCW WINSTAENUMPROC; - alias MAKEINTRESOURCEW MAKEINTRESOURCE; - - alias WNDCLASSW WNDCLASS; - alias WNDCLASSEXW WNDCLASSEX; - alias MENUITEMINFOW MENUITEMINFO; - alias LPCMENUITEMINFOW LPCMENUITEMINFO; - alias MSGBOXPARAMSW MSGBOXPARAMS; - alias HIGHCONTRASTW HIGHCONTRAST; - alias SERIALKEYSW SERIALKEYS; - alias SOUNDSENTRYW SOUNDSENTRY; - alias CREATESTRUCTW CREATESTRUCT; - alias CBT_CREATEWNDW CBT_CREATEWND; - alias MDICREATESTRUCTW MDICREATESTRUCT; - alias MULTIKEYHELPW MULTIKEYHELP; - alias MONITORINFOEXW MONITORINFOEX; - alias ICONMETRICSW ICONMETRICS; - alias NONCLIENTMETRICSW NONCLIENTMETRICS; - - alias AppendMenuW AppendMenu; - alias BroadcastSystemMessageW BroadcastSystemMessage; - static if (_WIN32_WINNT >= 0x501) { - alias BroadcastSystemMessageExW BroadcastSystemMessageEx; - } - alias CallMsgFilterW CallMsgFilter; - alias CallWindowProcW CallWindowProc; - alias ChangeMenuW ChangeMenu; - alias CharLowerW CharLower; - alias CharLowerBuffW CharLowerBuff; - alias CharNextW CharNext; - alias CharNextExW CharNextEx; - alias CharPrevW CharPrev; - alias CharPrevExW CharPrevEx; - alias CharToOemW CharToOem; - alias CharToOemBuffW CharToOemBuff; - alias CharUpperW CharUpper; - alias CharUpperBuffW CharUpperBuff; - alias CopyAcceleratorTableW CopyAcceleratorTable; - alias CreateAcceleratorTableW CreateAcceleratorTable; - alias CreateDialogW CreateDialog; - alias CreateDialogIndirectW CreateDialogIndirect; - alias CreateDialogIndirectParamW CreateDialogIndirectParam; - alias CreateDialogParamW CreateDialogParam; - alias CreateMDIWindowW CreateMDIWindow; - alias CreateWindowW CreateWindow; - alias CreateWindowExW CreateWindowEx; - alias CreateWindowStationW CreateWindowStation; - alias DefDlgProcW DefDlgProc; - alias DefFrameProcW DefFrameProc; - alias DefMDIChildProcW DefMDIChildProc; - alias DefWindowProcW DefWindowProc; - alias DialogBoxW DialogBox; - alias DialogBoxIndirectW DialogBoxIndirect; - alias DialogBoxIndirectParamW DialogBoxIndirectParam; - alias DialogBoxParamW DialogBoxParam; - alias DispatchMessageW DispatchMessage; - alias DlgDirListW DlgDirList; - alias DlgDirListComboBoxW DlgDirListComboBox; - alias DlgDirSelectComboBoxExW DlgDirSelectComboBoxEx; - alias DlgDirSelectExW DlgDirSelectEx; - alias DrawStateW DrawState; - alias DrawTextW DrawText; - alias DrawTextExW DrawTextEx; - alias EnumDesktopsW EnumDesktops; - alias EnumPropsW EnumProps; - alias EnumPropsExW EnumPropsEx; - alias EnumWindowStationsW EnumWindowStations; - alias FindWindowW FindWindow; - alias FindWindowExW FindWindowEx; - alias GetClassInfoW GetClassInfo; - alias GetClassInfoExW GetClassInfoEx; - alias GetClassLongW GetClassLong; - alias GetClassNameW GetClassName; - alias GetClipboardFormatNameW GetClipboardFormatName; - alias GetDlgItemTextW GetDlgItemText; - alias GetKeyboardLayoutNameW GetKeyboardLayoutName; - alias GetKeyNameTextW GetKeyNameText; - alias GetMenuItemInfoW GetMenuItemInfo; - alias GetMenuStringW GetMenuString; - alias GetMessageW GetMessage; - alias GetMonitorInfoW GetMonitorInfo; - alias GetPropW GetProp; - static if (_WIN32_WINNT >= 0x501) { - alias GetRawInputDeviceInfoW GetRawInputDeviceInfo; - } - alias GetTabbedTextExtentW GetTabbedTextExtent; - alias GetUserObjectInformationW GetUserObjectInformation; - alias GetWindowLongW GetWindowLong; - alias GetWindowLongPtrW GetWindowLongPtr; - alias GetWindowTextW GetWindowText; - alias GetWindowTextLengthW GetWindowTextLength; - alias GetAltTabInfoW GetAltTabInfo; - alias GetWindowModuleFileNameW GetWindowModuleFileName; - alias GrayStringW GrayString; - alias InsertMenuW InsertMenu; - alias InsertMenuItemW InsertMenuItem; - alias IsCharAlphaW IsCharAlpha; - alias IsCharAlphaNumericW IsCharAlphaNumeric; - alias IsCharLowerW IsCharLower; - alias IsCharUpperW IsCharUpper; - alias IsDialogMessageW IsDialogMessage; - alias LoadAcceleratorsW LoadAccelerators; - alias LoadBitmapW LoadBitmap; - alias LoadCursorW LoadCursor; - alias LoadCursorFromFileW LoadCursorFromFile; - alias LoadIconW LoadIcon; - alias LoadImageW LoadImage; - alias LoadKeyboardLayoutW LoadKeyboardLayout; - alias LoadMenuW LoadMenu; - alias LoadMenuIndirectW LoadMenuIndirect; - alias LoadStringW LoadString; - alias MapVirtualKeyW MapVirtualKey; - alias MapVirtualKeyExW MapVirtualKeyEx; - alias MessageBoxW MessageBox; - alias MessageBoxExW MessageBoxEx; - alias MessageBoxIndirectW MessageBoxIndirect; - alias ModifyMenuW ModifyMenu; - alias OemToCharW OemToChar; - alias OemToCharBuffW OemToCharBuff; - alias OpenDesktopW OpenDesktop; - alias OpenWindowStationW OpenWindowStation; - alias PeekMessageW PeekMessage; - alias PostMessageW PostMessage; - alias PostThreadMessageW PostThreadMessage; - alias RealGetWindowClassW RealGetWindowClass; - alias RegisterClassW RegisterClass; - alias RegisterClassExW RegisterClassEx; - alias RegisterClipboardFormatW RegisterClipboardFormat; - alias RegisterDeviceNotificationW RegisterDeviceNotification; - alias RegisterWindowMessageW RegisterWindowMessage; - alias RemovePropW RemoveProp; - alias SendDlgItemMessageW SendDlgItemMessage; - alias SendMessageW SendMessage; - alias SendMessageCallbackW SendMessageCallback; - alias SendMessageTimeoutW SendMessageTimeout; - alias SendNotifyMessageW SendNotifyMessage; - alias SetClassLongW SetClassLong; - alias SetDlgItemTextW SetDlgItemText; - alias SetMenuItemInfoW SetMenuItemInfo; - alias SetPropW SetProp; - alias SetUserObjectInformationW SetUserObjectInformation; - alias SetWindowLongW SetWindowLong; - alias SetWindowLongPtrW SetWindowLongPtr; - alias SetWindowsHookW SetWindowsHook; - alias SetWindowsHookExW SetWindowsHookEx; - alias SetWindowTextW SetWindowText; - alias SystemParametersInfoW SystemParametersInfo; - alias TabbedTextOutW TabbedTextOut; - alias TranslateAcceleratorW TranslateAccelerator; - alias UnregisterClassW UnregisterClass; - alias VkKeyScanW VkKeyScan; - alias VkKeyScanExW VkKeyScanEx; - alias WinHelpW WinHelp; - alias wsprintfW wsprintf; - alias wvsprintfW wvsprintf; - - alias ChangeDisplaySettingsW ChangeDisplaySettings; - alias ChangeDisplaySettingsExW ChangeDisplaySettingsEx; - alias CreateDesktopW CreateDesktop; - alias EnumDisplaySettingsW EnumDisplaySettings; - alias EnumDisplaySettingsExW EnumDisplaySettingsEx; - alias EnumDisplayDevicesW EnumDisplayDevices; - -} else { // ANSI - - alias EDITWORDBREAKPROCA EDITWORDBREAKPROC; - alias PROPENUMPROCA PROPENUMPROC; - alias PROPENUMPROCEXA PROPENUMPROCEX; - alias DESKTOPENUMPROCA DESKTOPENUMPROC; - alias WINSTAENUMPROCA WINSTAENUMPROC; - alias MAKEINTRESOURCEA MAKEINTRESOURCE; - - alias WNDCLASSA WNDCLASS; - alias WNDCLASSEXA WNDCLASSEX; - alias MENUITEMINFOA MENUITEMINFO; - alias LPCMENUITEMINFOA LPCMENUITEMINFO; - alias MSGBOXPARAMSA MSGBOXPARAMS; - alias HIGHCONTRASTA HIGHCONTRAST; - alias SERIALKEYSA SERIALKEYS; - alias SOUNDSENTRYA SOUNDSENTRY; - alias CREATESTRUCTA CREATESTRUCT; - alias CBT_CREATEWNDA CBT_CREATEWND; - alias MDICREATESTRUCTA MDICREATESTRUCT; - alias MULTIKEYHELPA MULTIKEYHELP; - alias MONITORINFOEXA MONITORINFOEX; - alias ICONMETRICSA ICONMETRICS; - alias NONCLIENTMETRICSA NONCLIENTMETRICS; - - alias AppendMenuA AppendMenu; - alias BroadcastSystemMessageA BroadcastSystemMessage; - static if (_WIN32_WINNT >= 0x501) { - alias BroadcastSystemMessageExA BroadcastSystemMessageEx; - } - alias CallMsgFilterA CallMsgFilter; - alias CallWindowProcA CallWindowProc; - alias ChangeMenuA ChangeMenu; - alias CharLowerA CharLower; - alias CharLowerBuffA CharLowerBuff; - alias CharNextA CharNext; - alias CharNextExA CharNextEx; - alias CharPrevA CharPrev; - alias CharPrevExA CharPrevEx; - alias CharToOemA CharToOem; - alias CharToOemBuffA CharToOemBuff; - alias CharUpperA CharUpper; - alias CharUpperBuffA CharUpperBuff; - alias CopyAcceleratorTableA CopyAcceleratorTable; - alias CreateAcceleratorTableA CreateAcceleratorTable; - alias CreateDialogA CreateDialog; - alias CreateDialogIndirectA CreateDialogIndirect; - alias CreateDialogIndirectParamA CreateDialogIndirectParam; - alias CreateDialogParamA CreateDialogParam; - alias CreateMDIWindowA CreateMDIWindow; - alias CreateWindowA CreateWindow; - alias CreateWindowExA CreateWindowEx; - alias CreateWindowStationA CreateWindowStation; - alias DefDlgProcA DefDlgProc; - alias DefFrameProcA DefFrameProc; - alias DefMDIChildProcA DefMDIChildProc; - alias DefWindowProcA DefWindowProc; - alias DialogBoxA DialogBox; - alias DialogBoxIndirectA DialogBoxIndirect; - alias DialogBoxIndirectParamA DialogBoxIndirectParam; - alias DialogBoxParamA DialogBoxParam; - alias DispatchMessageA DispatchMessage; - alias DlgDirListA DlgDirList; - alias DlgDirListComboBoxA DlgDirListComboBox; - alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx; - alias DlgDirSelectExA DlgDirSelectEx; - alias DrawStateA DrawState; - alias DrawTextA DrawText; - alias DrawTextExA DrawTextEx; - alias EnumDesktopsA EnumDesktops; - alias EnumPropsA EnumProps; - alias EnumPropsExA EnumPropsEx; - alias EnumWindowStationsA EnumWindowStations; - alias FindWindowA FindWindow; - alias FindWindowExA FindWindowEx; - alias GetClassInfoA GetClassInfo; - alias GetClassInfoExA GetClassInfoEx; - alias GetClassLongA GetClassLong; - alias GetClassNameA GetClassName; - alias GetClipboardFormatNameA GetClipboardFormatName; - alias GetDlgItemTextA GetDlgItemText; - alias GetKeyboardLayoutNameA GetKeyboardLayoutName; - alias GetKeyNameTextA GetKeyNameText; - alias GetMenuItemInfoA GetMenuItemInfo; - alias GetMenuStringA GetMenuString; - alias GetMessageA GetMessage; - alias GetMonitorInfoA GetMonitorInfo; - alias GetPropA GetProp; - static if (_WIN32_WINNT >= 0x501) { - alias GetRawInputDeviceInfoA GetRawInputDeviceInfo; - } - alias GetTabbedTextExtentA GetTabbedTextExtent; - alias GetUserObjectInformationA GetUserObjectInformation; - alias GetWindowLongA GetWindowLong; - alias GetWindowLongPtrA GetWindowLongPtr; - alias GetWindowTextA GetWindowText; - alias GetWindowTextLengthA GetWindowTextLength; - alias GetAltTabInfoA GetAltTabInfo; - alias GetWindowModuleFileNameA GetWindowModuleFileName; - alias GrayStringA GrayString; - alias InsertMenuA InsertMenu; - alias InsertMenuItemA InsertMenuItem; - alias IsCharAlphaA IsCharAlpha; - alias IsCharAlphaNumericA IsCharAlphaNumeric; - alias IsCharLowerA IsCharLower; - alias IsCharUpperA IsCharUpper; - alias IsDialogMessageA IsDialogMessage; - alias LoadAcceleratorsA LoadAccelerators; - alias LoadBitmapA LoadBitmap; - alias LoadCursorA LoadCursor; - alias LoadIconA LoadIcon; - alias LoadCursorFromFileA LoadCursorFromFile; - alias LoadImageA LoadImage; - alias LoadKeyboardLayoutA LoadKeyboardLayout; - alias LoadMenuA LoadMenu; - alias LoadMenuIndirectA LoadMenuIndirect; - alias LoadStringA LoadString; - alias MapVirtualKeyA MapVirtualKey; - alias MapVirtualKeyExA MapVirtualKeyEx; - alias MessageBoxA MessageBox; - alias MessageBoxExA MessageBoxEx; - alias MessageBoxIndirectA MessageBoxIndirect; - alias ModifyMenuA ModifyMenu; - alias OemToCharA OemToChar; - alias OemToCharBuffA OemToCharBuff; - alias OpenDesktopA OpenDesktop; - alias OpenWindowStationA OpenWindowStation; - alias PeekMessageA PeekMessage; - alias PostMessageA PostMessage; - alias PostThreadMessageA PostThreadMessage; - alias RealGetWindowClassA RealGetWindowClass; - alias RegisterClassA RegisterClass; - alias RegisterClassExA RegisterClassEx; - alias RegisterClipboardFormatA RegisterClipboardFormat; - alias RegisterDeviceNotificationA RegisterDeviceNotification; - alias RegisterWindowMessageA RegisterWindowMessage; - alias RemovePropA RemoveProp; - alias SendDlgItemMessageA SendDlgItemMessage; - alias SendMessageA SendMessage; - alias SendMessageCallbackA SendMessageCallback; - alias SendMessageTimeoutA SendMessageTimeout; - alias SendNotifyMessageA SendNotifyMessage; - alias SetClassLongA SetClassLong; - alias SetDlgItemTextA SetDlgItemText; - alias SetMenuItemInfoA SetMenuItemInfo; - alias SetPropA SetProp; - alias SetUserObjectInformationA SetUserObjectInformation; - alias SetWindowLongA SetWindowLong; - alias SetWindowLongPtrA SetWindowLongPtr; - alias SetWindowsHookA SetWindowsHook; - alias SetWindowsHookExA SetWindowsHookEx; - alias SetWindowTextA SetWindowText; - alias SystemParametersInfoA SystemParametersInfo; - alias TabbedTextOutA TabbedTextOut; - alias TranslateAcceleratorA TranslateAccelerator; - alias UnregisterClassA UnregisterClass; - alias VkKeyScanA VkKeyScan; - alias VkKeyScanExA VkKeyScanEx; - alias WinHelpA WinHelp; - alias wsprintfA wsprintf; - alias wvsprintfA wvsprintf; - - alias ChangeDisplaySettingsA ChangeDisplaySettings; - alias ChangeDisplaySettingsExA ChangeDisplaySettingsEx; - alias CreateDesktopA CreateDesktop; - alias EnumDisplaySettingsA EnumDisplaySettings; - alias EnumDisplaySettingsExA EnumDisplaySettingsEx; - alias EnumDisplayDevicesA EnumDisplayDevices; -} - -alias WNDCLASS* LPWNDCLASS, PWNDCLASS; -alias WNDCLASSEX* LPWNDCLASSEX, PWNDCLASSEX; -alias MENUITEMINFO* LPMENUITEMINFO; -alias MSGBOXPARAMS* PMSGBOXPARAMS, LPMSGBOXPARAMS; -alias HIGHCONTRAST* LPHIGHCONTRAST; -alias SERIALKEYS* LPSERIALKEYS; -alias SOUNDSENTRY* LPSOUNDSENTRY; -alias CREATESTRUCT* LPCREATESTRUCT; -alias CBT_CREATEWND* LPCBT_CREATEWND; -alias MDICREATESTRUCT* LPMDICREATESTRUCT; -alias MULTIKEYHELP* PMULTIKEYHELP, LPMULTIKEYHELP; -alias MONITORINFOEX* LPMONITORINFOEX; -alias ICONMETRICS* LPICONMETRICS; -alias NONCLIENTMETRICS* LPNONCLIENTMETRICS; - -static if (_WIN32_WINNT >= 0x501) { - enum PW_CLIENTONLY = 0x00000001; - enum RIM_INPUT = 0x00000000; - enum RIM_INPUTSINK = 0x00000001; - enum RIM_TYPEMOUSE = 0x00000000; - enum RIM_TYPEKEYBOARD = 0x00000001; - enum RIM_TYPEHID = 0x00000002; - enum MOUSE_MOVE_RELATIVE = 0x00000000; - enum MOUSE_MOVE_ABSOLUTE = 0x00000001; - enum MOUSE_VIRTUAL_DESKTOP = 0x00000002; - enum MOUSE_ATTRIBUTES_CHANGED = 0x00000004; - enum RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001; - enum RI_MOUSE_LEFT_BUTTON_UP = 0x0002; - enum RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004; - enum RI_MOUSE_RIGHT_BUTTON_UP = 0x0008; - enum RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010; - enum RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020; - enum RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN; - enum RI_MOUSE_BUTTON_1_UP = RI_MOUSE_LEFT_BUTTON_UP; - enum RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN; - enum RI_MOUSE_BUTTON_2_UP = RI_MOUSE_RIGHT_BUTTON_UP; - enum RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN; - enum RI_MOUSE_BUTTON_3_UP = RI_MOUSE_MIDDLE_BUTTON_UP; - enum RI_MOUSE_BUTTON_4_DOWN = 0x0040; - enum RI_MOUSE_BUTTON_4_UP = 0x0080; - enum RI_MOUSE_BUTTON_5_DOWN = 0x0100; - enum RI_MOUSE_BUTTON_5_UP = 0x0200; - enum RI_MOUSE_WHEEL = 0x0400; - enum KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff; - enum RI_KEY_MAKE = 0x0000; - enum RI_KEY_BREAK = 0x0001; - enum RI_KEY_E0 = 0x0002; - enum RI_KEY_E1 = 0x0004; - enum RI_KEY_TERMSRV_SET_LED = 0x0008; - enum RI_KEY_TERMSRV_SHADOW = 0x0010; - - enum RID_INPUT = 0x10000003; - enum RID_HEADER = 0x10000005; - - enum RIDI_PREPARSEDDATA = 0x20000005; - enum RIDI_DEVICENAME = 0x20000007; - enum RIDI_DEVICEINFO = 0x2000000b; - - enum RIDEV_REMOVE = 0x00000001; - enum RIDEV_EXCLUDE = 0x00000010; - enum RIDEV_PAGEONLY = 0x00000020; - enum RIDEV_NOLEGACY = 0x00000030; - enum RIDEV_INPUTSINK = 0x00000100; - enum RIDEV_CAPTUREMOUSE = 0x00000200; - enum RIDEV_NOHOTKEYS = 0x00000200; - enum RIDEV_APPKEYS = 0x00000400; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winuser.d) + */ +module core.sys.windows.winuser; +pragma(lib, "user32"); + +// Conversion Notes: +// The following macros were for win16 only, and are not included in this file: +//#define EnumTaskWindows(h, f, p) EnumThreadWindows((DWORD)h, f, p) +//#define PostAppMessageA(t, m, w, l) PostThreadMessageA((DWORD)t, m, w, l) +//#define PostAppMessageW(t, m, w, l) PostThreadMessageW((DWORD)t, m, w, l) +//#define GetSysModalWindow() (NULL) +//#define SetSysModalWindow(h) (NULL) +//#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL)) +//#define DefHookProc(c, p, lp, h) CallNextHookEx((HHOOK)*h, c, p, lp) + +private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.wingdi; +private import core.sys.windows.windef; // for HMONITOR + +// FIXME: clean up Windows version support + +LPTSTR MAKEINTATOM_T()(int i) { + return cast(LPTSTR) i; +} + +enum LPTSTR WC_DIALOG = MAKEINTATOM_T(0x8002); + +enum { + FAPPCOMMAND_MOUSE = 0x8000, + FAPPCOMMAND_KEY = 0, + FAPPCOMMAND_OEM = 0x1000, + FAPPCOMMAND_MASK = 0xF000 +} + +enum { + MNGO_NOINTERFACE = 0, + MNGO_NOERROR, + MNGOF_TOPGAP = 1, + MNGOF_BOTTOMGAP +} + +enum { + FVIRTKEY = 1, + FNOINVERT = 2, + FSHIFT = 4, + FCONTROL = 8, + FALT = 16 +} + +enum { + ATF_TIMEOUTON = 1, + ATF_ONOFFFEEDBACK = 2, + ATF_AVAILABLE = 4 // May be obsolete. Not in recent MS docs. +} + +enum { + WH_MIN = -1, + WH_MSGFILTER = -1, + WH_JOURNALRECORD, + WH_JOURNALPLAYBACK, + WH_KEYBOARD, + WH_GETMESSAGE, + WH_CALLWNDPROC, + WH_CBT, + WH_SYSMSGFILTER, + WH_MOUSE, + WH_HARDWARE, + WH_DEBUG, + WH_SHELL, + WH_FOREGROUNDIDLE, + WH_CALLWNDPROCRET, + WH_KEYBOARD_LL, + WH_MOUSE_LL, // = 14 + WH_MAX = 14, + WH_MINHOOK = WH_MIN, + WH_MAXHOOK = WH_MAX +} + +enum { + HC_ACTION = 0, + HC_GETNEXT, + HC_SKIP, + HC_NOREMOVE, // = 3 + HC_NOREM = HC_NOREMOVE, + HC_SYSMODALON, + HC_SYSMODALOFF +} + +enum { + HCBT_MOVESIZE = 0, + HCBT_MINMAX, + HCBT_QS, + HCBT_CREATEWND, + HCBT_DESTROYWND, + HCBT_ACTIVATE, + HCBT_CLICKSKIPPED, + HCBT_KEYSKIPPED, + HCBT_SYSCOMMAND, + HCBT_SETFOCUS // = 9 +} + +enum { + CF_TEXT = 0x0001, + CF_BITMAP, + CF_METAFILEPICT, + CF_SYLK, + CF_DIF, + CF_TIFF, + CF_OEMTEXT, + CF_DIB, + CF_PALETTE, + CF_PENDATA, + CF_RIFF, + CF_WAVE, + CF_UNICODETEXT, + CF_ENHMETAFILE, + CF_HDROP, + CF_LOCALE, + CF_DIBV5, + CF_MAX, // = 0x0012 + CF_OWNERDISPLAY = 0x0080, + CF_DSPTEXT, + CF_DSPBITMAP, + CF_DSPMETAFILEPICT, // = 0x0083 + CF_DSPENHMETAFILE = 0x008E, + CF_PRIVATEFIRST = 0x0200, + CF_PRIVATELAST = 0x02FF, + CF_GDIOBJFIRST = 0x0300, + CF_GDIOBJLAST = 0x03FF +} + +enum HKL_PREV = 0; +enum HKL_NEXT = 1; + +enum KLF_ACTIVATE = 1; +enum KLF_SUBSTITUTE_OK = 2; +enum KLF_UNLOADPREVIOUS = 4; +enum KLF_REORDER = 8; +enum KLF_REPLACELANG = 16; +enum KLF_NOTELLSHELL = 128; +enum KLF_SETFORPROCESS = 256; +enum KL_NAMELENGTH = 9; + +enum MF_ENABLED = 0; +enum MF_GRAYED = 1; +enum MF_DISABLED = 2; +enum MF_BITMAP = 4; +enum MF_CHECKED = 8; +enum MF_MENUBARBREAK = 32; +enum MF_MENUBREAK = 64; +enum MF_OWNERDRAW = 256; +enum MF_POPUP = 16; +enum MF_SEPARATOR = 0x800; +enum MF_STRING = 0; +enum MF_UNCHECKED = 0; +enum MF_DEFAULT = 4096; +enum MF_SYSMENU = 0x2000; +enum MF_HELP = 0x4000; +enum MF_END = 128; +enum MF_RIGHTJUSTIFY = 0x4000; +enum MF_MOUSESELECT = 0x8000; +enum MF_INSERT = 0; +enum MF_CHANGE = 128; +enum MF_APPEND = 256; +enum MF_DELETE = 512; +enum MF_REMOVE = 4096; +enum MF_USECHECKBITMAPS = 512; +enum MF_UNHILITE = 0; +enum MF_HILITE = 128; + +// Also defined in dbt.h +enum BSM_ALLCOMPONENTS = 0; +enum BSM_VXDS = 1; +enum BSM_NETDRIVER = 2; +enum BSM_INSTALLABLEDRIVERS = 4; +enum BSM_APPLICATIONS = 8; +enum BSM_ALLDESKTOPS = 16; + +enum { + BSF_QUERY = 0x0001, + BSF_IGNORECURRENTTASK = 0x0002, + BSF_FLUSHDISK = 0x0004, + BSF_NOHANG = 0x0008, + BSF_POSTMESSAGE = 0x0010, + BSF_FORCEIFHUNG = 0x0020, + BSF_NOTIMEOUTIFNOTHUNG = 0x0040, + BSF_ALLOWSFW = 0x0080, + BSF_SENDNOTIFYMESSAGE = 0x0100 +} +static if (_WIN32_WINNT >= 0x501) { + enum { + BSF_RETURNHDESK = 0x0200, + BSF_LUID = 0x0400 + } +} + +enum BROADCAST_QUERY_DENY = 1112363332; +enum DWORD ENUM_CURRENT_SETTINGS = -1; +enum DWORD ENUM_REGISTRY_SETTINGS = -2; + +enum CDS_UPDATEREGISTRY = 1; +enum CDS_TEST = 2; +enum CDS_FULLSCREEN = 4; +enum CDS_GLOBAL = 8; +enum CDS_SET_PRIMARY = 16; +enum CDS_NORESET = 0x10000000; +enum CDS_SETRECT = 0x20000000; +enum CDS_RESET = 0x40000000; + +enum { + DISP_CHANGE_BADPARAM = -5, + DISP_CHANGE_BADFLAGS, + DISP_CHANGE_NOTUPDATED, + DISP_CHANGE_BADMODE, + DISP_CHANGE_FAILED, + DISP_CHANGE_SUCCESSFUL, + DISP_CHANGE_RESTART // = 1 +} + +enum BST_UNCHECKED = 0; +enum BST_CHECKED = 1; +enum BST_INDETERMINATE = 2; +enum BST_PUSHED = 4; +enum BST_FOCUS = 8; + +enum MF_BYCOMMAND = 0; +enum MF_BYPOSITION = 1024; +// [Redefined] MF_UNCHECKED = 0 +// [Redefined] MF_HILITE = 128 +// [Redefined] MF_UNHILITE = 0 + +enum CWP_ALL = 0; +enum CWP_SKIPINVISIBLE = 1; +enum CWP_SKIPDISABLED = 2; +enum CWP_SKIPTRANSPARENT = 4; + +enum IMAGE_BITMAP = 0; +enum IMAGE_ICON = 1; +enum IMAGE_CURSOR = 2; +enum IMAGE_ENHMETAFILE = 3; + +enum DF_ALLOWOTHERACCOUNTHOOK = 1; + +enum DESKTOP_READOBJECTS = 1; +enum DESKTOP_CREATEWINDOW = 2; +enum DESKTOP_CREATEMENU = 4; +enum DESKTOP_HOOKCONTROL = 8; +enum DESKTOP_JOURNALRECORD = 16; +enum DESKTOP_JOURNALPLAYBACK = 32; +enum DESKTOP_ENUMERATE = 64; +enum DESKTOP_WRITEOBJECTS = 128; +enum DESKTOP_SWITCHDESKTOP = 256; + +enum CW_USEDEFAULT = 0x80000000; + +enum { + WS_OVERLAPPED = 0, + WS_TILED = WS_OVERLAPPED, + WS_MAXIMIZEBOX = 0x00010000, + WS_MINIMIZEBOX = 0x00020000, + WS_TABSTOP = 0x00010000, + WS_GROUP = 0x00020000, + WS_THICKFRAME = 0x00040000, + WS_SIZEBOX = WS_THICKFRAME, + WS_SYSMENU = 0x00080000, + WS_HSCROLL = 0x00100000, + WS_VSCROLL = 0x00200000, + WS_DLGFRAME = 0x00400000, + WS_BORDER = 0x00800000, + WS_CAPTION = 0x00c00000, + WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, + WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, + WS_MAXIMIZE = 0x01000000, + WS_CLIPCHILDREN = 0x02000000, + WS_CLIPSIBLINGS = 0x04000000, + WS_DISABLED = 0x08000000, + WS_VISIBLE = 0x10000000, + WS_MINIMIZE = 0x20000000, + WS_ICONIC = WS_MINIMIZE, + WS_CHILD = 0x40000000, + WS_CHILDWINDOW = 0x40000000, + WS_POPUP = 0x80000000, + WS_POPUPWINDOW = WS_POPUP|WS_BORDER|WS_SYSMENU, +} + +enum MDIS_ALLCHILDSTYLES = 1; + +enum BS_3STATE = 5; +enum BS_AUTO3STATE = 6; +enum BS_AUTOCHECKBOX = 3; +enum BS_AUTORADIOBUTTON = 9; +enum BS_BITMAP = 128; +enum BS_BOTTOM = 0x800; +enum BS_CENTER = 0x300; +enum BS_CHECKBOX = 2; +enum BS_DEFPUSHBUTTON = 1; +enum BS_GROUPBOX = 7; +enum BS_ICON = 64; +enum BS_LEFT = 256; +enum BS_LEFTTEXT = 32; +enum BS_MULTILINE = 0x2000; +enum BS_NOTIFY = 0x4000; +enum BS_OWNERDRAW = 0xb; +enum BS_PUSHBUTTON = 0; +enum BS_PUSHLIKE = 4096; +enum BS_RADIOBUTTON = 4; +enum BS_RIGHT = 512; +enum BS_RIGHTBUTTON = 32; +enum BS_TEXT = 0; +enum BS_TOP = 0x400; +enum BS_USERBUTTON = 8; +enum BS_VCENTER = 0xc00; +enum BS_FLAT = 0x8000; + +enum CBS_AUTOHSCROLL = 64; +enum CBS_DISABLENOSCROLL = 0x800; +enum CBS_DROPDOWN = 2; +enum CBS_DROPDOWNLIST = 3; +enum CBS_HASSTRINGS = 512; +enum CBS_LOWERCASE = 0x4000; +enum CBS_NOINTEGRALHEIGHT = 0x400; +enum CBS_OEMCONVERT = 128; +enum CBS_OWNERDRAWFIXED = 16; +enum CBS_OWNERDRAWVARIABLE = 32; +enum CBS_SIMPLE = 1; +enum CBS_SORT = 256; +enum CBS_UPPERCASE = 0x2000; + +enum ES_AUTOHSCROLL = 128; +enum ES_AUTOVSCROLL = 64; +enum ES_CENTER = 1; +enum ES_LEFT = 0; +enum ES_LOWERCASE = 16; +enum ES_MULTILINE = 4; +enum ES_NOHIDESEL = 256; +enum ES_NUMBER = 0x2000; +enum ES_OEMCONVERT = 0x400; +enum ES_PASSWORD = 32; +enum ES_READONLY = 0x800; +enum ES_RIGHT = 2; +enum ES_UPPERCASE = 8; +enum ES_WANTRETURN = 4096; + +enum LBS_DISABLENOSCROLL = 4096; +enum LBS_EXTENDEDSEL = 0x800; +enum LBS_HASSTRINGS = 64; +enum LBS_MULTICOLUMN = 512; +enum LBS_MULTIPLESEL = 8; +enum LBS_NODATA = 0x2000; +enum LBS_NOINTEGRALHEIGHT = 256; +enum LBS_NOREDRAW = 4; +enum LBS_NOSEL = 0x4000; +enum LBS_NOTIFY = 1; +enum LBS_OWNERDRAWFIXED = 16; +enum LBS_OWNERDRAWVARIABLE = 32; +enum LBS_SORT = 2; +enum LBS_STANDARD = 0xa00003; +enum LBS_USETABSTOPS = 128; +enum LBS_WANTKEYBOARDINPUT = 0x400; + +enum SBS_BOTTOMALIGN = 4; +enum SBS_HORZ = 0; +enum SBS_LEFTALIGN = 2; +enum SBS_RIGHTALIGN = 4; +enum SBS_SIZEBOX = 8; +enum SBS_SIZEBOXBOTTOMRIGHTALIGN = 4; +enum SBS_SIZEBOXTOPLEFTALIGN = 2; +enum SBS_SIZEGRIP = 16; +enum SBS_TOPALIGN = 2; +enum SBS_VERT = 1; + +enum SS_BITMAP = 14; +enum SS_BLACKFRAME = 7; +enum SS_BLACKRECT = 4; +enum SS_CENTER = 1; +enum SS_CENTERIMAGE = 512; +enum SS_ENHMETAFILE = 15; +enum SS_ETCHEDFRAME = 18; +enum SS_ETCHEDHORZ = 16; +enum SS_ETCHEDVERT = 17; +enum SS_GRAYFRAME = 8; +enum SS_GRAYRECT = 5; +enum SS_ICON = 3; +enum SS_LEFT = 0; +enum SS_LEFTNOWORDWRAP = 0xc; +enum SS_NOPREFIX = 128; +enum SS_NOTIFY = 256; +enum SS_OWNERDRAW = 0xd; +enum SS_REALSIZEIMAGE = 0x800; +enum SS_RIGHT = 2; +enum SS_RIGHTJUST = 0x400; +enum SS_SIMPLE = 11; +enum SS_SUNKEN = 4096; +enum SS_WHITEFRAME = 9; +enum SS_WHITERECT = 6; +enum SS_USERITEM = 10; +enum SS_TYPEMASK = 0x0000001FL; +enum SS_ENDELLIPSIS = 0x00004000L; +enum SS_PATHELLIPSIS = 0x00008000L; +enum SS_WORDELLIPSIS = 0x0000C000L; +enum SS_ELLIPSISMASK = 0x0000C000L; + +enum DS_ABSALIGN = 0x0001; +enum DS_3DLOOK = 0x0004; +enum DS_SYSMODAL = 0x0002; +enum DS_FIXEDSYS = 0x0008; +enum DS_NOFAILCREATE = 0x0010; +enum DS_LOCALEDIT = 0x0020; +enum DS_SETFONT = 0x0040; +enum DS_MODALFRAME = 0x0080; +enum DS_NOIDLEMSG = 0x0100; +enum DS_SETFOREGROUND = 0x0200; +enum DS_CONTROL = 0x0400; +enum DS_CENTER = 0x0800; +enum DS_CENTERMOUSE = 0x1000; +enum DS_CONTEXTHELP = 0x2000; +enum DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS; + +enum WS_EX_ACCEPTFILES = 16; +enum WS_EX_APPWINDOW = 0x40000; +enum WS_EX_CLIENTEDGE = 512; +enum WS_EX_COMPOSITED = 0x2000000; // XP +enum WS_EX_CONTEXTHELP = 0x400; +enum WS_EX_CONTROLPARENT = 0x10000; +enum WS_EX_DLGMODALFRAME = 1; +enum WS_EX_LAYERED = 0x80000; // w2k +enum WS_EX_LAYOUTRTL = 0x400000; // w98, w2k +enum WS_EX_LEFT = 0; +enum WS_EX_LEFTSCROLLBAR = 0x4000; +enum WS_EX_LTRREADING = 0; +enum WS_EX_MDICHILD = 64; +enum WS_EX_NOACTIVATE = 0x8000000; // w2k +enum WS_EX_NOINHERITLAYOUT = 0x100000; // w2k +enum WS_EX_NOPARENTNOTIFY = 4; +enum WS_EX_OVERLAPPEDWINDOW = 0x300; +enum WS_EX_PALETTEWINDOW = 0x188; +enum WS_EX_RIGHT = 0x1000; +enum WS_EX_RIGHTSCROLLBAR = 0; +enum WS_EX_RTLREADING = 0x2000; +enum WS_EX_STATICEDGE = 0x20000; +enum WS_EX_TOOLWINDOW = 128; +enum WS_EX_TOPMOST = 8; +enum WS_EX_TRANSPARENT = 32; +enum WS_EX_WINDOWEDGE = 256; + +enum WINSTA_ENUMDESKTOPS = 1; +enum WINSTA_READATTRIBUTES = 2; +enum WINSTA_ACCESSCLIPBOARD = 4; +enum WINSTA_CREATEDESKTOP = 8; +enum WINSTA_WRITEATTRIBUTES = 16; +enum WINSTA_ACCESSGLOBALATOMS = 32; +enum WINSTA_EXITWINDOWS = 64; +enum WINSTA_ENUMERATE = 256; +enum WINSTA_READSCREEN = 512; + +enum DDL_READWRITE = 0; +enum DDL_READONLY = 1; +enum DDL_HIDDEN = 2; +enum DDL_SYSTEM = 4; +enum DDL_DIRECTORY = 16; +enum DDL_ARCHIVE = 32; +enum DDL_POSTMSGS = 8192; +enum DDL_DRIVES = 16384; +enum DDL_EXCLUSIVE = 32768; + +enum { + DC_ACTIVE = 0x0001, + DC_SMALLCAP = 0x0002, + DC_ICON = 0x0004, + DC_TEXT = 0x0008, + DC_INBUTTON = 0x0010, + DC_GRADIENT = 0x0020 +} +static if (_WIN32_WINNT >= 0x501) { + enum DC_BUTTONS = 0x1000; +} + +// Where are these documented? +//enum DC_CAPTION = DC_ICON|DC_TEXT|DC_BUTTONS; +//enum DC_NC = DC_CAPTION|DC_FRAME; + +enum BDR_RAISEDOUTER = 1; +enum BDR_SUNKENOUTER = 2; +enum BDR_RAISEDINNER = 4; +enum BDR_SUNKENINNER = 8; +enum BDR_OUTER = 3; +enum BDR_INNER = 0xc; +enum BDR_RAISED = 5; +enum BDR_SUNKEN = 10; + +enum EDGE_RAISED = BDR_RAISEDOUTER|BDR_RAISEDINNER; +enum EDGE_SUNKEN = BDR_SUNKENOUTER|BDR_SUNKENINNER; +enum EDGE_ETCHED = BDR_SUNKENOUTER|BDR_RAISEDINNER; +enum EDGE_BUMP = BDR_RAISEDOUTER|BDR_SUNKENINNER; + +enum BF_LEFT = 1; +enum BF_TOP = 2; +enum BF_RIGHT = 4; +enum BF_BOTTOM = 8; +enum BF_TOPLEFT = BF_TOP|BF_LEFT; +enum BF_TOPRIGHT = BF_TOP|BF_RIGHT; +enum BF_BOTTOMLEFT = BF_BOTTOM|BF_LEFT; +enum BF_BOTTOMRIGHT = BF_BOTTOM|BF_RIGHT; +enum BF_RECT = BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM ; +enum BF_DIAGONAL = 16; +enum BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL|BF_TOP|BF_RIGHT; +enum BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL|BF_TOP|BF_LEFT; +enum BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL|BF_BOTTOM|BF_LEFT; +enum BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL|BF_BOTTOM|BF_RIGHT; +enum BF_MIDDLE = 0x800; +enum BF_SOFT = 0x1000; +enum BF_ADJUST = 0x2000; +enum BF_FLAT = 0x4000; +enum BF_MONO = 0x8000; + +enum { + DFC_CAPTION = 1, + DFC_MENU, + DFC_SCROLL, + DFC_BUTTON, + DFC_POPUPMENU // = 5 +} + +enum { + DFCS_CAPTIONCLOSE, + DFCS_CAPTIONMIN, + DFCS_CAPTIONMAX, + DFCS_CAPTIONRESTORE, + DFCS_CAPTIONHELP // = 4 +} + +enum { + DFCS_MENUARROW = 0, + DFCS_MENUCHECK = 1, + DFCS_MENUBULLET = 2, + DFCS_MENUARROWRIGHT = 4 +} + +enum { + DFCS_SCROLLUP = 0, + DFCS_SCROLLDOWN = 1, + DFCS_SCROLLLEFT = 2, + DFCS_SCROLLRIGHT = 3, + DFCS_SCROLLCOMBOBOX = 5, + DFCS_SCROLLSIZEGRIP = 8, + DFCS_SCROLLSIZEGRIPRIGHT = 16 +} + +enum { + DFCS_BUTTONCHECK = 0, + DFCS_BUTTONRADIOIMAGE = 0x0001, + DFCS_BUTTONRADIOMASK = 0x0002, + DFCS_BUTTONRADIO = 0x0004, + DFCS_BUTTON3STATE = 0x0008, + DFCS_BUTTONPUSH = 0x0010, + DFCS_INACTIVE = 0x0100, + DFCS_PUSHED = 0x0200, + DFCS_CHECKED = 0x0400, + DFCS_TRANSPARENT = 0x0800, + DFCS_HOT = 0x1000, + DFCS_ADJUSTRECT = 0x2000, + DFCS_FLAT = 0x4000, + DFCS_MONO = 0x8000 +} + +enum { + DST_COMPLEX = 0, + DST_TEXT, + DST_PREFIXTEXT, + DST_ICON, + DST_BITMAP // = 4 +} + +enum DSS_NORMAL = 0; +enum DSS_UNION = 16; +enum DSS_DISABLED = 32; +enum DSS_MONO = 128; +enum DSS_RIGHT = 0x8000; + +enum DT_BOTTOM = 8; +enum DT_CALCRECT = 1024; +enum DT_CENTER = 1; +enum DT_EDITCONTROL = 8192; +enum DT_END_ELLIPSIS = 32768; +enum DT_PATH_ELLIPSIS = 16384; +enum DT_WORD_ELLIPSIS = 0x40000; +enum DT_EXPANDTABS = 64; +enum DT_EXTERNALLEADING = 512; +enum DT_LEFT = 0; +enum DT_MODIFYSTRING = 65536; +enum DT_NOCLIP = 256; +enum DT_NOPREFIX = 2048; +enum DT_RIGHT = 2; +enum DT_RTLREADING = 131072; +enum DT_SINGLELINE = 32; +enum DT_TABSTOP = 128; +enum DT_TOP = 0; +enum DT_VCENTER = 4; +enum DT_WORDBREAK = 16; +enum DT_INTERNAL = 4096; + +enum WB_ISDELIMITER = 2; +enum WB_LEFT = 0; +enum WB_RIGHT = 1; + +enum SB_HORZ = 0; +enum SB_VERT = 1; +enum SB_CTL = 2; +enum SB_BOTH = 3; + +enum ESB_DISABLE_BOTH = 3; +enum ESB_DISABLE_DOWN = 2; +enum ESB_DISABLE_LEFT = 1; +enum ESB_DISABLE_LTUP = 1; +enum ESB_DISABLE_RIGHT = 2; +enum ESB_DISABLE_RTDN = 2; +enum ESB_DISABLE_UP = 1; +enum ESB_ENABLE_BOTH = 0; + +enum SB_LINEUP = 0; +enum SB_LINEDOWN = 1; +enum SB_LINELEFT = 0; +enum SB_LINERIGHT = 1; +enum SB_PAGEUP = 2; +enum SB_PAGEDOWN = 3; +enum SB_PAGELEFT = 2; +enum SB_PAGERIGHT = 3; +enum SB_THUMBPOSITION = 4; +enum SB_THUMBTRACK = 5; +enum SB_ENDSCROLL = 8; +enum SB_LEFT = 6; +enum SB_RIGHT = 7; +enum SB_BOTTOM = 7; +enum SB_TOP = 6; + +//MACRO #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0) + +template MAKEINTRESOURCE_T(WORD i) { + enum LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i); +} + +LPSTR MAKEINTRESOURCEA()(WORD i) { + return cast(LPSTR) i; +} + +LPWSTR MAKEINTRESOURCEW()(WORD i) { + return cast(LPWSTR) i; +} + +enum RT_CURSOR = MAKEINTRESOURCE_T!(1); +enum RT_BITMAP = MAKEINTRESOURCE_T!(2); +enum RT_ICON = MAKEINTRESOURCE_T!(3); +enum RT_MENU = MAKEINTRESOURCE_T!(4); +enum RT_DIALOG = MAKEINTRESOURCE_T!(5); +enum RT_STRING = MAKEINTRESOURCE_T!(6); +enum RT_FONTDIR = MAKEINTRESOURCE_T!(7); +enum RT_FONT = MAKEINTRESOURCE_T!(8); +enum RT_ACCELERATOR = MAKEINTRESOURCE_T!(9); +enum RT_RCDATA = MAKEINTRESOURCE_T!(10); +enum RT_MESSAGETABLE = MAKEINTRESOURCE_T!(11); + +enum RT_GROUP_CURSOR = MAKEINTRESOURCE_T!(12); +enum RT_GROUP_ICON = MAKEINTRESOURCE_T!(14); +enum RT_VERSION = MAKEINTRESOURCE_T!(16); +enum RT_DLGINCLUDE = MAKEINTRESOURCE_T!(17); +enum RT_PLUGPLAY = MAKEINTRESOURCE_T!(19); +enum RT_VXD = MAKEINTRESOURCE_T!(20); +enum RT_ANICURSOR = MAKEINTRESOURCE_T!(21); +enum RT_ANIICON = MAKEINTRESOURCE_T!(22); +enum RT_HTML = MAKEINTRESOURCE_T!(23); +enum RT_MANIFEST = MAKEINTRESOURCE_T!(24); + +enum CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(1); +enum ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(2); +enum ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(3); + +enum { + EWX_LOGOFF = 0, + EWX_SHUTDOWN = 1, + EWX_REBOOT = 2, + EWX_FORCE = 4, + EWX_POWEROFF = 8, + EWX_FORCEIFHUNG = 16 +} + +enum CS_BYTEALIGNCLIENT = 4096; +enum CS_BYTEALIGNWINDOW = 8192; +enum CS_KEYCVTWINDOW = 4; +enum CS_NOKEYCVT = 256; +enum CS_CLASSDC = 64; +enum CS_DBLCLKS = 8; +enum CS_GLOBALCLASS = 16384; +enum CS_HREDRAW = 2; +enum CS_NOCLOSE = 512; +enum CS_OWNDC = 32; +enum CS_PARENTDC = 128; +enum CS_SAVEBITS = 2048; +enum CS_VREDRAW = 1; +enum CS_IME = 0x10000; + +enum GCW_ATOM = -32; +enum GCL_CBCLSEXTRA = -20; +enum GCL_CBWNDEXTRA = -18; +enum GCL_HBRBACKGROUND = -10; +enum GCL_HCURSOR = -12; +enum GCL_HICON = -14; +enum GCL_HICONSM = -34; +enum GCL_HMODULE = -16; +enum GCL_MENUNAME = -8; +enum GCL_STYLE = -26; +enum GCL_WNDPROC = -24; + +alias GCL_HICONSM GCLP_HICONSM; +alias GCL_HICON GCLP_HICON; +alias GCL_HCURSOR GCLP_HCURSOR; +alias GCL_HBRBACKGROUND GCLP_HBRBACKGROUND; +alias GCL_HMODULE GCLP_HMODULE; +alias GCL_MENUNAME GCLP_MENUNAME; +alias GCL_WNDPROC GCLP_WNDPROC; + +enum { + IDC_ARROW = MAKEINTRESOURCE_T!(32512), + IDC_IBEAM = MAKEINTRESOURCE_T!(32513), + IDC_WAIT = MAKEINTRESOURCE_T!(32514), + IDC_CROSS = MAKEINTRESOURCE_T!(32515), + IDC_UPARROW = MAKEINTRESOURCE_T!(32516), + IDC_SIZE = MAKEINTRESOURCE_T!(32640), + IDC_ICON = MAKEINTRESOURCE_T!(32641), + IDC_SIZENWSE = MAKEINTRESOURCE_T!(32642), + IDC_SIZENESW = MAKEINTRESOURCE_T!(32643), + IDC_SIZEWE = MAKEINTRESOURCE_T!(32644), + IDC_SIZENS = MAKEINTRESOURCE_T!(32645), + IDC_SIZEALL = MAKEINTRESOURCE_T!(32646), + IDC_NO = MAKEINTRESOURCE_T!(32648), + IDC_HAND = MAKEINTRESOURCE_T!(32649), + IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650), + IDC_HELP = MAKEINTRESOURCE_T!(32651), + IDI_APPLICATION = MAKEINTRESOURCE_T!(32512), + IDI_HAND = MAKEINTRESOURCE_T!(32513), + IDI_QUESTION = MAKEINTRESOURCE_T!(32514), + IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515), + IDI_ASTERISK = MAKEINTRESOURCE_T!(32516), + IDI_WINLOGO = MAKEINTRESOURCE_T!(32517), + IDI_WARNING = IDI_EXCLAMATION, + IDI_ERROR = IDI_HAND, + IDI_INFORMATION = IDI_ASTERISK +} +static if (_WIN32_WINNT >= 0x600) { + enum IDI_SHIELD = MAKEINTRESOURCE_T!(32518); +} + +enum { + MIIM_STATE = 0x0001, + MIIM_ID = 0x0002, + MIIM_SUBMENU = 0x0004, + MIIM_CHECKMARKS = 0x0008, + MIIM_TYPE = 0x0010, + MIIM_DATA = 0x0020, + MIIM_STRING = 0x0040, + MIIM_BITMAP = 0x0080, + MIIM_FTYPE = 0x0100 +} + +enum { + MFT_BITMAP = 0x0004, + MFT_MENUBARBREAK = 0x0020, + MFT_MENUBREAK = 0x0040, + MFT_OWNERDRAW = 0x0100, + MFT_RADIOCHECK = 0x0200, + MFT_RIGHTJUSTIFY = 0x4000, + MFT_SEPARATOR = 0x0800, + MFT_RIGHTORDER = 0x2000, + MFT_STRING = 0 +} + +enum { + MFS_CHECKED = 8, + MFS_DEFAULT = 4096, + MFS_DISABLED = 3, + MFS_ENABLED = 0, + MFS_GRAYED = 3, + MFS_HILITE = 128, + MFS_UNCHECKED = 0, + MFS_UNHILITE = 0 +} + +enum { + GW_HWNDFIRST = 0, + GW_HWNDLAST, + GW_HWNDNEXT, + GW_HWNDPREV, + GW_OWNER, + GW_CHILD // = 5 +} + +enum { + SW_HIDE = 0, + SW_NORMAL = 1, + SW_SHOWNORMAL = 1, + SW_SHOWMINIMIZED = 2, + SW_MAXIMIZE = 3, + SW_SHOWMAXIMIZED = 3, + SW_SHOWNOACTIVATE = 4, + SW_SHOW = 5, + SW_MINIMIZE = 6, + SW_SHOWMINNOACTIVE = 7, + SW_SHOWNA = 8, + SW_RESTORE = 9, + SW_SHOWDEFAULT = 10, + SW_FORCEMINIMIZE = 11, + SW_MAX = 11 +} + +enum { + SW_PARENTCLOSING = 1, + SW_OTHERZOOM, + SW_PARENTOPENING, + SW_OTHERUNZOOM // = 4 +} + +enum { // is this a different SW from the previous? + SW_SCROLLCHILDREN = 0x01, + SW_INVALIDATE = 0x02, + SW_ERASE = 0x04, + SW_SMOOTHSCROLL = 0x10 +} + +enum { + MB_OK = 0, + MB_OKCANCEL, + MB_ABORTRETRYIGNORE, + MB_YESNOCANCEL, + MB_YESNO, + MB_RETRYCANCEL, + MB_CANCELTRYCONTINUE, // = 6 + MB_TYPEMASK = 0x0000000F, + MB_ICONHAND = 0x00000010, + MB_ICONSTOP = MB_ICONHAND, + MB_ICONERROR = MB_ICONHAND, + MB_ICONQUESTION = 0x00000020, + MB_ICONEXCLAMATION = 0x00000030, + MB_ICONWARNING = MB_ICONEXCLAMATION, + MB_ICONASTERISK = 0x00000040, + MB_ICONINFORMATION = MB_ICONASTERISK, + MB_USERICON = 0x00000080, + MB_ICONMASK = 0x000000F0, + + MB_DEFBUTTON1 = 0, + MB_DEFBUTTON2 = 0x00000100, + MB_DEFBUTTON3 = 0x00000200, + MB_DEFBUTTON4 = 0x00000300, + MB_DEFMASK = 0x00000F00, + + MB_APPLMODAL = 0, + MB_SYSTEMMODAL = 0x00001000, + MB_TASKMODAL = 0x00002000, + MB_MODEMASK = 0x00003000, + + MB_HELP = 0x00004000, + MB_NOFOCUS = 0x00008000, + MB_MISCMASK = 0x0000C000, + + MB_SETFOREGROUND = 0x00010000, + MB_DEFAULT_DESKTOP_ONLY = 0x00020000, + MB_TOPMOST = 0x00040000, + MB_SERVICE_NOTIFICATION_NT3X = 0x00040000, + MB_RIGHT = 0x00080000, + MB_RTLREADING = 0x00100000, + MB_SERVICE_NOTIFICATION = 0x00200000 +} + +enum { + IDOK = 1, + IDCANCEL, + IDABORT, + IDRETRY, + IDIGNORE, + IDYES, + IDNO, + IDCLOSE, + IDHELP, + IDTRYAGAIN, + IDCONTINUE // = 11 +} + +enum GWL_EXSTYLE = -20; +enum GWL_STYLE = -16; +enum GWL_WNDPROC = -4; +enum GWLP_WNDPROC = -4; +enum GWL_HINSTANCE = -6; +enum GWLP_HINSTANCE = -6; +enum GWL_HWNDPARENT = -8; +enum GWLP_HWNDPARENT = -8; +enum GWL_ID = -12; +enum GWLP_ID = -12; +enum GWL_USERDATA = -21; +enum GWLP_USERDATA = -21; + +enum DWL_DLGPROC = 4; +enum DWLP_DLGPROC = 4; +enum DWL_MSGRESULT = 0; +enum DWLP_MSGRESULT = 0; +enum DWL_USER = 8; +enum DWLP_USER = 8; + +enum QS_KEY = 1; +enum QS_MOUSEMOVE = 2; +enum QS_MOUSEBUTTON = 4; +enum QS_MOUSE = 6; +enum QS_POSTMESSAGE = 8; +enum QS_TIMER = 16; +enum QS_PAINT = 32; +enum QS_SENDMESSAGE = 64; +enum QS_HOTKEY = 128; +enum QS_ALLPOSTMESSAGE = 256; +static if (_WIN32_WINNT >= 0x501) { +enum QS_RAWINPUT = 1024; +enum QS_INPUT = 1031; +enum QS_ALLEVENTS = 1215; +enum QS_ALLINPUT = 1279; +} else { +enum QS_INPUT = 7; +enum QS_ALLEVENTS = 191; +enum QS_ALLINPUT = 255; +} + +enum MWMO_WAITALL = 1; +enum MWMO_ALERTABLE = 2; +enum MWMO_INPUTAVAILABLE = 4; + +enum COLOR_3DDKSHADOW = 21; +enum COLOR_3DFACE = 15; +enum COLOR_3DHILIGHT = 20; +enum COLOR_3DHIGHLIGHT = 20; +enum COLOR_3DLIGHT = 22; +enum COLOR_BTNHILIGHT = 20; +enum COLOR_3DSHADOW = 16; +enum COLOR_ACTIVEBORDER = 10; +enum COLOR_ACTIVECAPTION = 2; +enum COLOR_APPWORKSPACE = 12; +enum COLOR_BACKGROUND = 1; +enum COLOR_DESKTOP = 1; +enum COLOR_BTNFACE = 15; +enum COLOR_BTNHIGHLIGHT = 20; +enum COLOR_BTNSHADOW = 16; +enum COLOR_BTNTEXT = 18; +enum COLOR_CAPTIONTEXT = 9; +enum COLOR_GRAYTEXT = 17; +enum COLOR_HIGHLIGHT = 13; +enum COLOR_HIGHLIGHTTEXT = 14; +enum COLOR_INACTIVEBORDER = 11; +enum COLOR_INACTIVECAPTION = 3; +enum COLOR_INACTIVECAPTIONTEXT = 19; +enum COLOR_INFOBK = 24; +enum COLOR_INFOTEXT = 23; +enum COLOR_MENU = 4; +enum COLOR_MENUTEXT = 7; +enum COLOR_SCROLLBAR = 0; +enum COLOR_WINDOW = 5; +enum COLOR_WINDOWFRAME = 6; +enum COLOR_WINDOWTEXT = 8; +enum COLOR_HOTLIGHT = 26; +enum COLOR_GRADIENTACTIVECAPTION = 27; +enum COLOR_GRADIENTINACTIVECAPTION = 28; + +enum CTLCOLOR_MSGBOX = 0; +enum CTLCOLOR_EDIT = 1; +enum CTLCOLOR_LISTBOX = 2; +enum CTLCOLOR_BTN = 3; +enum CTLCOLOR_DLG = 4; +enum CTLCOLOR_SCROLLBAR = 5; +enum CTLCOLOR_STATIC = 6; +enum CTLCOLOR_MAX = 7; + +// For GetSystemMetrics() +enum : int { + SM_CXSCREEN = 0, + SM_CYSCREEN, + SM_CXVSCROLL, + SM_CYHSCROLL, + SM_CYCAPTION, + SM_CXBORDER, + SM_CYBORDER, + SM_CXDLGFRAME, // = 7 + SM_CXFIXEDFRAME = SM_CXDLGFRAME, + SM_CYDLGFRAME, // = 8 + SM_CYFIXEDFRAME = SM_CYDLGFRAME, + SM_CYVTHUMB, // = 9 + SM_CXHTHUMB, + SM_CXICON, + SM_CYICON, + SM_CXCURSOR, + SM_CYCURSOR, + SM_CYMENU, + SM_CXFULLSCREEN, + SM_CYFULLSCREEN, + SM_CYKANJIWINDOW, + SM_MOUSEPRESENT, + SM_CYVSCROLL, + SM_CXHSCROLL, + SM_DEBUG, + SM_SWAPBUTTON, + SM_RESERVED1, + SM_RESERVED2, + SM_RESERVED3, + SM_RESERVED4, + SM_CXMIN, + SM_CYMIN, + SM_CXSIZE, + SM_CYSIZE, + SM_CXSIZEFRAME, // = 32, + SM_CXFRAME = SM_CXSIZEFRAME, + SM_CYSIZEFRAME, // = 33 + SM_CYFRAME = SM_CYSIZEFRAME, + SM_CXMINTRACK, + SM_CYMINTRACK, + SM_CXDOUBLECLK, + SM_CYDOUBLECLK, + SM_CXICONSPACING, + SM_CYICONSPACING, + SM_MENUDROPALIGNMENT, + SM_PENWINDOWS, + SM_DBCSENABLED, + SM_CMOUSEBUTTONS, + SM_SECURE, + SM_CXEDGE, + SM_CYEDGE, + SM_CXMINSPACING, + SM_CYMINSPACING, + SM_CXSMICON, + SM_CYSMICON, + SM_CYSMCAPTION, + SM_CXSMSIZE, + SM_CYSMSIZE, + SM_CXMENUSIZE, + SM_CYMENUSIZE, + SM_ARRANGE, + SM_CXMINIMIZED, + SM_CYMINIMIZED, + SM_CXMAXTRACK, + SM_CYMAXTRACK, + SM_CXMAXIMIZED, + SM_CYMAXIMIZED, + SM_NETWORK, // = 63 + SM_CLEANBOOT = 67, + SM_CXDRAG, + SM_CYDRAG, + SM_SHOWSOUNDS, + SM_CXMENUCHECK, + SM_CYMENUCHECK, + SM_SLOWMACHINE, + SM_MIDEASTENABLED, + SM_MOUSEWHEELPRESENT, + SM_XVIRTUALSCREEN, + SM_YVIRTUALSCREEN, + SM_CXVIRTUALSCREEN, + SM_CYVIRTUALSCREEN, + SM_CMONITORS, + SM_SAMEDISPLAYFORMAT, + SM_IMMENABLED, + SM_CXFOCUSBORDER, + SM_CYFOCUSBORDER, // = 84 + SM_TABLETPC = 86, + SM_MEDIACENTER, + SM_STARTER, // = 88 + SM_CMETRICS = 88, + SM_SERVERR2, + SM_REMOTESESSION = 0x1000, +} +static if (_WIN32_WINNT >= 0x501) { + enum { // These are only for WinXP and later + SM_SHUTTINGDOWN = 0x2000, + SM_REMOTECONTROL = 0x2001 + } +} + +enum ARW_BOTTOMLEFT = 0; +enum ARW_BOTTOMRIGHT = 1; +enum ARW_HIDE = 8; +enum ARW_TOPLEFT = 2; +enum ARW_TOPRIGHT = 3; +enum ARW_DOWN = 4; +enum ARW_LEFT = 0; +enum ARW_RIGHT = 0; +enum ARW_UP = 4; + +enum UOI_FLAGS = 1; +enum UOI_NAME = 2; +enum UOI_TYPE = 3; +enum UOI_USER_SID = 4; + +// For the fuLoad parameter of LoadImage() +enum : UINT { + LR_DEFAULTCOLOR = 0, + LR_MONOCHROME = 0x0001, + LR_COLOR = 0x0002, + LR_COPYRETURNORG = 0x0004, + LR_COPYDELETEORG = 0x0008, + LR_LOADFROMFILE = 0x0010, + LR_LOADTRANSPARENT = 0x0020, + LR_DEFAULTSIZE = 0x0040, + LR_VGACOLOR = 0x0080, + LR_LOADREALSIZE = 0x0080, + LR_LOADMAP3DCOLORS = 0x1000, + LR_CREATEDIBSECTION = 0x2000, + LR_COPYFROMRESOURCE = 0x4000, + LR_SHARED = 0x8000 +} + +enum { + KEYEVENTF_EXTENDEDKEY = 1, + KEYEVENTF_KEYUP = 2, + KEYEVENTF_UNICODE = 4, + KEYEVENTF_SCANCODE = 8 +} + +enum OBM_BTNCORNERS = 32758; +enum OBM_BTSIZE = 32761; +enum OBM_CHECK = 32760; +enum OBM_CHECKBOXES = 32759; +enum OBM_CLOSE = 32754; +enum OBM_COMBO = 32738; +enum OBM_DNARROW = 32752; +enum OBM_DNARROWD = 32742; +enum OBM_DNARROWI = 32736; +enum OBM_LFARROW = 32750; +enum OBM_LFARROWI = 32734; +enum OBM_LFARROWD = 32740; +enum OBM_MNARROW = 32739; +enum OBM_OLD_CLOSE = 32767; +enum OBM_OLD_DNARROW = 32764; +enum OBM_OLD_LFARROW = 32762; +enum OBM_OLD_REDUCE = 32757; +enum OBM_OLD_RESTORE = 32755; +enum OBM_OLD_RGARROW = 32763; +enum OBM_OLD_UPARROW = 32765; +enum OBM_OLD_ZOOM = 32756; +enum OBM_REDUCE = 32749; +enum OBM_REDUCED = 32746; +enum OBM_RESTORE = 32747; +enum OBM_RESTORED = 32744; +enum OBM_RGARROW = 32751; +enum OBM_RGARROWD = 32741; +enum OBM_RGARROWI = 32735; +enum OBM_SIZE = 32766; +enum OBM_UPARROW = 32753; +enum OBM_UPARROWD = 32743; +enum OBM_UPARROWI = 32737; +enum OBM_ZOOM = 32748; +enum OBM_ZOOMD = 32745; + +enum OCR_NORMAL = 32512; +enum OCR_IBEAM = 32513; +enum OCR_WAIT = 32514; +enum OCR_CROSS = 32515; +enum OCR_UP = 32516; +enum OCR_SIZE = 32640; +enum OCR_ICON = 32641; +enum OCR_SIZENWSE = 32642; +enum OCR_SIZENESW = 32643; +enum OCR_SIZEWE = 32644; +enum OCR_SIZENS = 32645; +enum OCR_SIZEALL = 32646; +enum OCR_NO = 32648; +enum OCR_APPSTARTING = 32650; + +enum OIC_SAMPLE = 32512; +enum OIC_HAND = 32513; +enum OIC_QUES = 32514; +enum OIC_BANG = 32515; +enum OIC_NOTE = 32516; +enum OIC_WINLOGO = 32517; +enum OIC_WARNING = OIC_BANG; +enum OIC_ERROR = OIC_HAND; +enum OIC_INFORMATION = OIC_NOTE; + +enum HELPINFO_MENUITEM = 2; +enum HELPINFO_WINDOW = 1; + +static if (_WIN32_WINNT >= 0x501) { + enum { + WTS_CONSOLE_CONNECT = 1, + WTS_CONSOLE_DISCONNECT, + WTS_REMOTE_CONNECT, + WTS_REMOTE_DISCONNECT, + WTS_SESSION_LOGON, + WTS_SESSION_LOGOFF, + WTS_SESSION_LOCK, + WTS_SESSION_UNLOCK, + WTS_SESSION_REMOTE_CONTROL // = 9 + } +} + +enum MSGF_DIALOGBOX = 0; +enum MSGF_MESSAGEBOX = 1; +enum MSGF_MENU = 2; +enum MSGF_MOVE = 3; +enum MSGF_SIZE = 4; +enum MSGF_SCROLLBAR = 5; +enum MSGF_NEXTWINDOW = 6; +enum MSGF_MAINLOOP = 8; +enum MSGF_USER = 4096; + +enum { + MOUSEEVENTF_MOVE = 0x0001, + MOUSEEVENTF_LEFTDOWN = 0x0002, + MOUSEEVENTF_LEFTUP = 0x0004, + MOUSEEVENTF_RIGHTDOWN = 0x0008, + MOUSEEVENTF_RIGHTUP = 0x0010, + MOUSEEVENTF_MIDDLEDOWN = 0x0020, + MOUSEEVENTF_MIDDLEUP = 0x0040, + MOUSEEVENTF_XDOWN = 0x0080, + MOUSEEVENTF_XUP = 0x0100, + MOUSEEVENTF_WHEEL = 0x0800, + MOUSEEVENTF_ABSOLUTE = 0x8000 +} + +enum PM_NOREMOVE = 0; +enum PM_REMOVE = 1; +enum PM_NOYIELD = 2; + +enum : HWND { + HWND_BROADCAST = cast(HWND) 0xFFFF, + HWND_MESSAGE = cast(HWND) -3, + HWND_NOTOPMOST = cast(HWND) -2, + HWND_TOPMOST = cast(HWND) -1, + HWND_TOP = cast(HWND) 0, + HWND_DESKTOP = cast(HWND) 0, + HWND_BOTTOM = cast(HWND) 1 +} + +enum RDW_INVALIDATE = 1; +enum RDW_INTERNALPAINT = 2; +enum RDW_ERASE = 4; +enum RDW_VALIDATE = 8; +enum RDW_NOINTERNALPAINT = 16; +enum RDW_NOERASE = 32; +enum RDW_NOCHILDREN = 64; +enum RDW_ALLCHILDREN = 128; +enum RDW_UPDATENOW = 256; +enum RDW_ERASENOW = 512; +enum RDW_FRAME = 1024; +enum RDW_NOFRAME = 2048; + +enum { + SMTO_NORMAL = 0, + SMTO_BLOCK = 1, + SMTO_ABORTIFHUNG = 2, + SMTO_NOTIMEOUTIFNOTHUNG = 8 +} + +enum SIF_ALL = 23; +enum SIF_PAGE = 2; +enum SIF_POS = 4; +enum SIF_RANGE = 1; +enum SIF_DISABLENOSCROLL = 8; +enum SIF_TRACKPOS = 16; + +enum SWP_DRAWFRAME = 32; +enum SWP_FRAMECHANGED = 32; +enum SWP_HIDEWINDOW = 128; +enum SWP_NOACTIVATE = 16; +enum SWP_NOCOPYBITS = 256; +enum SWP_NOMOVE = 2; +enum SWP_NOSIZE = 1; +enum SWP_NOREDRAW = 8; +enum SWP_NOZORDER = 4; +enum SWP_SHOWWINDOW = 64; +enum SWP_NOOWNERZORDER = 512; +enum SWP_NOREPOSITION = 512; +enum SWP_NOSENDCHANGING = 1024; +enum SWP_DEFERERASE = 8192; +enum SWP_ASYNCWINDOWPOS = 16384; + +enum { // passed variously as int or WPARAM + HSHELL_WINDOWCREATED = 1, + HSHELL_WINDOWDESTROYED, + HSHELL_ACTIVATESHELLWINDOW, + HSHELL_WINDOWACTIVATED, + HSHELL_GETMINRECT, + HSHELL_REDRAW, + HSHELL_TASKMAN, + HSHELL_LANGUAGE, // = 8 + HSHELL_ENDTASK = 10, + HSHELL_ACCESSIBILITYSTATE, + HSHELL_APPCOMMAND, // = 12 + HSHELL_RUDEAPPACTIVATED = 32772, + HSHELL_FLASH = 32774 +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + HSHELL_WINDOWREPLACED = 13, + HSHELL_WINDOWREPLACING + } +} + +enum { + SPI_GETBEEP = 0x0001, + SPI_SETBEEP = 0x0002, + SPI_GETMOUSE = 0x0003, + SPI_SETMOUSE = 0x0004, + SPI_GETBORDER = 0x0005, + SPI_SETBORDER = 0x0006, + SPI_GETKEYBOARDSPEED = 0x000A, + SPI_SETKEYBOARDSPEED = 0x000B, + SPI_LANGDRIVER = 0x000C, + SPI_ICONHORIZONTALSPACING = 0x000D, + SPI_GETSCREENSAVETIMEOUT = 0x000E, + SPI_SETSCREENSAVETIMEOUT = 0x000F, + SPI_GETSCREENSAVEACTIVE = 0x0010, + SPI_SETSCREENSAVEACTIVE = 0x0011, + SPI_GETGRIDGRANULARITY = 0x0012, + SPI_SETGRIDGRANULARITY = 0x0013, + SPI_SETDESKWALLPAPER = 0x0014, + SPI_SETDESKPATTERN = 0x0015, + SPI_GETKEYBOARDDELAY = 0x0016, + SPI_SETKEYBOARDDELAY = 0x0017, + SPI_ICONVERTICALSPACING = 0x0018, + SPI_GETICONTITLEWRAP = 0x0019, + SPI_SETICONTITLEWRAP = 0x001A, + SPI_GETMENUDROPALIGNMENT = 0x001B, + SPI_SETMENUDROPALIGNMENT = 0x001C, + SPI_SETDOUBLECLKWIDTH = 0x001D, + SPI_SETDOUBLECLKHEIGHT = 0x001E, + SPI_GETICONTITLELOGFONT = 0x001F, + SPI_SETDOUBLECLICKTIME = 0x0020, + SPI_SETMOUSEBUTTONSWAP = 0x0021, + SPI_SETICONTITLELOGFONT = 0x0022, + SPI_GETFASTTASKSWITCH = 0x0023, + SPI_SETFASTTASKSWITCH = 0x0024, + SPI_SETDRAGFULLWINDOWS = 0x0025, + SPI_GETDRAGFULLWINDOWS = 0x0026, + SPI_GETNONCLIENTMETRICS = 0x0029, + SPI_SETNONCLIENTMETRICS = 0x002A, + SPI_GETMINIMIZEDMETRICS = 0x002B, + SPI_SETMINIMIZEDMETRICS = 0x002C, + SPI_GETICONMETRICS = 0x002D, + SPI_SETICONMETRICS = 0x002E, + SPI_SETWORKAREA = 0x002F, + SPI_GETWORKAREA = 0x0030, + SPI_SETPENWINDOWS = 0x0031, + SPI_GETFILTERKEYS = 0x0032, + SPI_SETFILTERKEYS = 0x0033, + SPI_GETTOGGLEKEYS = 0x0034, + SPI_SETTOGGLEKEYS = 0x0035, + SPI_GETMOUSEKEYS = 0x0036, + SPI_SETMOUSEKEYS = 0x0037, + SPI_GETSHOWSOUNDS = 0x0038, + SPI_SETSHOWSOUNDS = 0x0039, + SPI_GETSTICKYKEYS = 0x003A, + SPI_SETSTICKYKEYS = 0x003B, + SPI_GETACCESSTIMEOUT = 0x003C, + SPI_SETACCESSTIMEOUT = 0x003D, + SPI_GETSERIALKEYS = 0x003E, + SPI_SETSERIALKEYS = 0x003F, + SPI_GETSOUNDSENTRY = 0x0040, + SPI_SETSOUNDSENTRY = 0x0041, + SPI_GETHIGHCONTRAST = 0x0042, + SPI_SETHIGHCONTRAST = 0x0043, + SPI_GETKEYBOARDPREF = 0x0044, + SPI_SETKEYBOARDPREF = 0x0045, + SPI_GETSCREENREADER = 0x0046, + SPI_SETSCREENREADER = 0x0047, + SPI_GETANIMATION = 0x0048, + SPI_SETANIMATION = 0x0049, + SPI_GETFONTSMOOTHING = 0x004A, + SPI_SETFONTSMOOTHING = 0x004B, + SPI_SETDRAGWIDTH = 0x004C, + SPI_SETDRAGHEIGHT = 0x004D, + SPI_SETHANDHELD = 0x004E, + SPI_GETLOWPOWERTIMEOUT = 0x004F, + SPI_GETPOWEROFFTIMEOUT = 0x0050, + SPI_SETLOWPOWERTIMEOUT = 0x0051, + SPI_SETPOWEROFFTIMEOUT = 0x0052, + SPI_GETLOWPOWERACTIVE = 0x0053, + SPI_GETPOWEROFFACTIVE = 0x0054, + SPI_SETLOWPOWERACTIVE = 0x0055, + SPI_SETPOWEROFFACTIVE = 0x0056, + SPI_SETCURSORS = 0x0057, + SPI_SETICONS = 0x0058, + SPI_GETDEFAULTINPUTLANG = 0x0059, + SPI_SETDEFAULTINPUTLANG = 0x005A, + SPI_SETLANGTOGGLE = 0x005B, + SPI_GETWINDOWSEXTENSION = 0x005C, + SPI_SETMOUSETRAILS = 0x005D, + SPI_GETMOUSETRAILS = 0x005E, + SPI_GETSNAPTODEFBUTTON = 0x005F, + SPI_SETSNAPTODEFBUTTON = 0x0060, + //SPI_SCREENSAVERRUNNING = 0x0061, // mistake in older MinGW? + SPI_SETSCREENSAVERRUNNING = 0x0061, + SPI_GETMOUSEHOVERWIDTH = 0x0062, + SPI_SETMOUSEHOVERWIDTH = 0x0063, + SPI_GETMOUSEHOVERHEIGHT = 0x0064, + SPI_SETMOUSEHOVERHEIGHT = 0x0065, + SPI_GETMOUSEHOVERTIME = 0x0066, + SPI_SETMOUSEHOVERTIME = 0x0067, + SPI_GETWHEELSCROLLLINES = 0x0068, + SPI_SETWHEELSCROLLLINES = 0x0069, + SPI_GETMENUSHOWDELAY = 0x006A, + SPI_SETMENUSHOWDELAY = 0x006B, + SPI_GETSHOWIMEUI = 0x006E, + SPI_SETSHOWIMEUI = 0x006F, + SPI_GETMOUSESPEED = 0x0070, + SPI_SETMOUSESPEED = 0x0071, + SPI_GETSCREENSAVERRUNNING = 0x0072, + SPI_GETDESKWALLPAPER = 0x0073, + SPI_GETACTIVEWINDOWTRACKING = 0x1000, + SPI_SETACTIVEWINDOWTRACKING = 0x1001, + SPI_GETMENUANIMATION = 0x1002, + SPI_SETMENUANIMATION = 0x1003, + SPI_GETCOMBOBOXANIMATION = 0x1004, + SPI_SETCOMBOBOXANIMATION = 0x1005, + SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006, + SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007, + SPI_GETGRADIENTCAPTIONS = 0x1008, + SPI_SETGRADIENTCAPTIONS = 0x1009, + SPI_GETKEYBOARDCUES = 0x100A, + SPI_GETMENUUNDERLINES = SPI_GETKEYBOARDCUES, + SPI_SETKEYBOARDCUES = 0x100B, + SPI_SETMENUUNDERLINES = SPI_SETKEYBOARDCUES, + SPI_GETACTIVEWNDTRKZORDER = 0x100C, + SPI_SETACTIVEWNDTRKZORDER = 0x100D, + SPI_GETHOTTRACKING = 0x100E, + SPI_SETHOTTRACKING = 0x100F, + SPI_GETMENUFADE = 0x1012, + SPI_SETMENUFADE = 0x1013, + SPI_GETSELECTIONFADE = 0x1014, + SPI_SETSELECTIONFADE = 0x1015, + SPI_GETTOOLTIPANIMATION = 0x1016, + SPI_SETTOOLTIPANIMATION = 0x1017, + SPI_GETTOOLTIPFADE = 0x1018, + SPI_SETTOOLTIPFADE = 0x1019, + SPI_GETCURSORSHADOW = 0x101A, + SPI_SETCURSORSHADOW = 0x101B, + SPI_GETBLOCKSENDINPUTRESETS = 0x1026, + SPI_SETBLOCKSENDINPUTRESETS = 0x1027, + SPI_GETUIEFFECTS = 0x103E, + SPI_SETUIEFFECTS = 0x103F, + SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000, + SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001, + SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002, + SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003, + SPI_GETFOREGROUNDFLASHCOUNT = 0x2004, + SPI_SETFOREGROUNDFLASHCOUNT = 0x2005, + SPI_GETCARETWIDTH = 0x2006, + SPI_SETCARETWIDTH = 0x2007 +} + +enum { + SPIF_UPDATEINIFILE = 1, + SPIF_SENDWININICHANGE = 2, + SPIF_SENDCHANGE = SPIF_SENDWININICHANGE +} + +// [Redefined] ATF_ONOFFFEEDBACK = 2 +// [Redefined] ATF_TIMEOUTON = 1 +enum WM_APP = 32768; +enum WM_ACTIVATE = 6; +enum WM_ACTIVATEAPP = 28; +enum WM_AFXFIRST = 864; +enum WM_AFXLAST = 895; +enum WM_ASKCBFORMATNAME = 780; +enum WM_CANCELJOURNAL = 75; +enum WM_CANCELMODE = 31; +enum WM_CAPTURECHANGED = 533; +enum WM_CHANGECBCHAIN = 781; +enum WM_CHAR = 258; +enum WM_CHARTOITEM = 47; +enum WM_CHILDACTIVATE = 34; +enum WM_CLEAR = 771; +enum WM_CLOSE = 16; +enum WM_COMMAND = 273; +enum WM_COMMNOTIFY = 68; // obsolete +enum WM_COMPACTING = 65; +enum WM_COMPAREITEM = 57; +enum WM_CONTEXTMENU = 123; +enum WM_COPY = 769; +enum WM_COPYDATA = 74; +enum WM_CREATE = 1; +enum WM_CTLCOLORBTN = 309; +enum WM_CTLCOLORDLG = 310; +enum WM_CTLCOLOREDIT = 307; +enum WM_CTLCOLORLISTBOX = 308; +enum WM_CTLCOLORMSGBOX = 306; +enum WM_CTLCOLORSCROLLBAR = 311; +enum WM_CTLCOLORSTATIC = 312; +enum WM_CUT = 768; +enum WM_DEADCHAR = 259; +enum WM_DELETEITEM = 45; +enum WM_DESTROY = 2; +enum WM_DESTROYCLIPBOARD = 775; +enum WM_DEVICECHANGE = 537; +enum WM_DEVMODECHANGE = 27; +enum WM_DISPLAYCHANGE = 126; +enum WM_DRAWCLIPBOARD = 776; +enum WM_DRAWITEM = 43; +enum WM_DROPFILES = 563; +enum WM_ENABLE = 10; +enum WM_ENDSESSION = 22; +enum WM_ENTERIDLE = 289; +enum WM_ENTERMENULOOP = 529; +enum WM_ENTERSIZEMOVE = 561; +enum WM_ERASEBKGND = 20; +enum WM_EXITMENULOOP = 530; +enum WM_EXITSIZEMOVE = 562; +enum WM_FONTCHANGE = 29; +enum WM_GETDLGCODE = 135; +enum WM_GETFONT = 49; +enum WM_GETHOTKEY = 51; +enum WM_GETICON = 127; +enum WM_GETMINMAXINFO = 36; +enum WM_GETTEXT = 13; +enum WM_GETTEXTLENGTH = 14; +enum WM_HANDHELDFIRST = 856; +enum WM_HANDHELDLAST = 863; +enum WM_HELP = 83; +enum WM_HOTKEY = 786; +enum WM_HSCROLL = 276; +enum WM_HSCROLLCLIPBOARD = 782; +enum WM_ICONERASEBKGND = 39; +enum WM_INITDIALOG = 272; +enum WM_INITMENU = 278; +enum WM_INITMENUPOPUP = 279; +enum WM_INPUTLANGCHANGE = 81; +enum WM_INPUTLANGCHANGEREQUEST = 80; +enum WM_KEYDOWN = 256; +enum WM_KEYUP = 257; +enum WM_KILLFOCUS = 8; +enum WM_MDIACTIVATE = 546; +enum WM_MDICASCADE = 551; +enum WM_MDICREATE = 544; +enum WM_MDIDESTROY = 545; +enum WM_MDIGETACTIVE = 553; +enum WM_MDIICONARRANGE = 552; +enum WM_MDIMAXIMIZE = 549; +enum WM_MDINEXT = 548; +enum WM_MDIREFRESHMENU = 564; +enum WM_MDIRESTORE = 547; +enum WM_MDISETMENU = 560; +enum WM_MDITILE = 550; +enum WM_MEASUREITEM = 44; +enum WM_UNINITMENUPOPUP = 0x0125; +enum WM_MENURBUTTONUP = 290; +enum WM_MENUCOMMAND = 0x0126; +enum WM_MENUGETOBJECT = 0x0124; +enum WM_MENUDRAG = 0x0123; + +enum WM_CHANGEUISTATE = 0x0127; +enum WM_UPDATEUISTATE = 0x0128; +enum WM_QUERYUISTATE = 0x0129; + +// LOWORD(wParam) values in WM_*UISTATE* +enum { + UIS_SET = 1, + UIS_CLEAR = 2, + UIS_INITIALIZE = 3 +} + +// HIWORD(wParam) values in WM_*UISTATE* +enum { + UISF_HIDEFOCUS = 0x1, + UISF_HIDEACCEL = 0x2 +} + + +static if (_WIN32_WINNT >= 0x501) { + + // HIWORD(wParam) values in WM_*UISTATE* + enum { + UISF_ACTIVE = 0x4 + } + +} + +enum WM_MENUCHAR = 288; +enum WM_MENUSELECT = 287; +enum WM_MOVE = 3; +enum WM_MOVING = 534; +enum WM_NCACTIVATE = 134; +enum WM_NCCALCSIZE = 131; +enum WM_NCCREATE = 129; +enum WM_NCDESTROY = 130; +enum WM_NCHITTEST = 132; +enum WM_NCLBUTTONDBLCLK = 163; +enum WM_NCLBUTTONDOWN = 161; +enum WM_NCLBUTTONUP = 162; +enum WM_NCMBUTTONDBLCLK = 169; +enum WM_NCMBUTTONDOWN = 167; +enum WM_NCMBUTTONUP = 168; +enum WM_NCXBUTTONDOWN = 171; +enum WM_NCXBUTTONUP = 172; +enum WM_NCXBUTTONDBLCLK = 173; +enum WM_NCMOUSEHOVER = 0x02A0; +enum WM_NCMOUSELEAVE = 0x02A2; +enum WM_NCMOUSEMOVE = 160; +enum WM_NCPAINT = 133; +enum WM_NCRBUTTONDBLCLK = 166; +enum WM_NCRBUTTONDOWN = 164; +enum WM_NCRBUTTONUP = 165; +enum WM_NEXTDLGCTL = 40; +enum WM_NEXTMENU = 531; +enum WM_NOTIFY = 78; +enum WM_NOTIFYFORMAT = 85; +enum WM_NULL = 0; +enum WM_PAINT = 15; +enum WM_PAINTCLIPBOARD = 777; +enum WM_PAINTICON = 38; +enum WM_PALETTECHANGED = 785; +enum WM_PALETTEISCHANGING = 784; +enum WM_PARENTNOTIFY = 528; +enum WM_PASTE = 770; +enum WM_PENWINFIRST = 896; +enum WM_PENWINLAST = 911; +enum WM_POWER = 72; +enum WM_POWERBROADCAST = 536; +enum WM_PRINT = 791; +enum WM_PRINTCLIENT = 792; +enum WM_APPCOMMAND = 0x0319; +enum WM_QUERYDRAGICON = 55; +enum WM_QUERYENDSESSION = 17; +enum WM_QUERYNEWPALETTE = 783; +enum WM_QUERYOPEN = 19; +enum WM_QUEUESYNC = 35; +enum WM_QUIT = 18; +enum WM_RENDERALLFORMATS = 774; +enum WM_RENDERFORMAT = 773; +enum WM_SETCURSOR = 32; +enum WM_SETFOCUS = 7; +enum WM_SETFONT = 48; +enum WM_SETHOTKEY = 50; +enum WM_SETICON = 128; +enum WM_SETREDRAW = 11; +enum WM_SETTEXT = 12; +enum WM_SETTINGCHANGE = 26; +enum WM_SHOWWINDOW = 24; +enum WM_SIZE = 5; +enum WM_SIZECLIPBOARD = 779; +enum WM_SIZING = 532; +enum WM_SPOOLERSTATUS = 42; +enum WM_STYLECHANGED = 125; +enum WM_STYLECHANGING = 124; +enum WM_SYSCHAR = 262; +enum WM_SYSCOLORCHANGE = 21; +enum WM_SYSCOMMAND = 274; +enum WM_SYSDEADCHAR = 263; +enum WM_SYSKEYDOWN = 260; +enum WM_SYSKEYUP = 261; +static if (_WIN32_WINNT >= 0x501) { + enum WM_TABLET_FIRST = 704; + enum WM_TABLET_LAST = 735; +} +enum WM_TCARD = 82; +enum WM_THEMECHANGED = 794; +enum WM_TIMECHANGE = 30; +enum WM_TIMER = 275; +enum WM_UNDO = 772; +enum WM_USER = 1024; +enum WM_USERCHANGED = 84; +enum WM_VKEYTOITEM = 46; +enum WM_VSCROLL = 277; +enum WM_VSCROLLCLIPBOARD = 778; +enum WM_WINDOWPOSCHANGED = 71; +enum WM_WINDOWPOSCHANGING = 70; +enum WM_WININICHANGE = 26; +static if(_WIN32_WINNT >= 0x501) { +enum WM_WTSSESSION_CHANGE = 689; +} +enum WM_INPUT = 255; +enum WM_KEYFIRST = 256; +static if(_WIN32_WINNT >= 0x501) { +enum WM_UNICHAR = 265; +enum WM_KEYLAST = 265; +enum UNICODE_NOCHAR = 0xFFFF; +} else { +enum WM_KEYLAST = 264; +} +enum WM_SYNCPAINT = 136; +enum WM_MOUSEACTIVATE = 33; +enum WM_MOUSEMOVE = 512; +enum WM_LBUTTONDOWN = 513; +enum WM_LBUTTONUP = 514; +enum WM_LBUTTONDBLCLK = 515; +enum WM_RBUTTONDOWN = 516; +enum WM_RBUTTONUP = 517; +enum WM_RBUTTONDBLCLK = 518; +enum WM_MBUTTONDOWN = 519; +enum WM_MBUTTONUP = 520; +enum WM_MBUTTONDBLCLK = 521; +enum WM_MOUSEWHEEL = 522; +enum WM_MOUSEFIRST = 512; +static if (_WIN32_WINNT >= 0x501) { + enum WM_XBUTTONDOWN = 523; + enum WM_XBUTTONUP = 524; + enum WM_XBUTTONDBLCLK = 525; +} +static if (_WIN32_WINNT >= 0x600) { // FIXME: where did this come from? what version is it? + enum WM_MOUSEHWHEEL = 526; +} + +static if (_WIN32_WINNT >= 0x600) { + enum WM_MOUSELAST = WM_MOUSEHWHEEL; +} else static if (_WIN32_WINNT >= 0x501) { + enum WM_MOUSELAST = WM_XBUTTONDBLCLK; +} else { + enum WM_MOUSELAST = WM_MOUSEWHEEL; +} + +enum WM_MOUSEHOVER = 0x2A1; +enum WM_MOUSELEAVE = 0x2A3; + +enum WHEEL_DELTA = 120; + +SHORT GET_WHEEL_DELTA_WPARAM()(WPARAM wparam) { + return cast(SHORT) HIWORD(wparam); +} + +enum WHEEL_PAGESCROLL = uint.max; + +enum BM_CLICK = 245; +enum BM_GETCHECK = 240; +enum BM_GETIMAGE = 246; +enum BM_GETSTATE = 242; +enum BM_SETCHECK = 241; +enum BM_SETIMAGE = 247; +static if(_WIN32_WINNT >= 0x600) { + enum BM_SETDONTCLICK = 248; +} +enum BM_SETSTATE = 243; +enum BM_SETSTYLE = 244; +enum BN_CLICKED = 0; +enum BN_DBLCLK = 5; +enum BN_DISABLE = 4; +enum BN_DOUBLECLICKED = 5; +enum BN_HILITE = 2; +enum BN_KILLFOCUS = 7; +enum BN_PAINT = 1; +enum BN_PUSHED = 2; +enum BN_SETFOCUS = 6; +enum BN_UNHILITE = 3; +enum BN_UNPUSHED = 3; +enum CB_ADDSTRING = 323; +enum CB_DELETESTRING = 324; +enum CB_DIR = 325; +enum CB_FINDSTRING = 332; +enum CB_FINDSTRINGEXACT = 344; +enum CB_GETCOUNT = 326; +enum CB_GETCURSEL = 327; +enum CB_GETDROPPEDCONTROLRECT = 338; +enum CB_GETDROPPEDSTATE = 343; +enum CB_GETDROPPEDWIDTH = 351; +enum CB_GETEDITSEL = 320; +enum CB_GETEXTENDEDUI = 342; +enum CB_GETHORIZONTALEXTENT = 349; +enum CB_GETITEMDATA = 336; +enum CB_GETITEMHEIGHT = 340; +enum CB_GETLBTEXT = 328; +enum CB_GETLBTEXTLEN = 329; +enum CB_GETLOCALE = 346; +enum CB_GETTOPINDEX = 347; +enum CB_INITSTORAGE = 353; +enum CB_INSERTSTRING = 330; +enum CB_LIMITTEXT = 321; +enum CB_RESETCONTENT = 331; +enum CB_SELECTSTRING = 333; +enum CB_SETCURSEL = 334; +enum CB_SETDROPPEDWIDTH = 352; +enum CB_SETEDITSEL = 322; +enum CB_SETEXTENDEDUI = 341; +enum CB_SETHORIZONTALEXTENT = 350; +enum CB_SETITEMDATA = 337; +enum CB_SETITEMHEIGHT = 339; +enum CB_SETLOCALE = 345; +enum CB_SETTOPINDEX = 348; +enum CB_SHOWDROPDOWN = 335; + +static if(_WIN32_WINNT >= 0x501) { +enum CB_GETCOMBOBOXINFO = 356; +} + +enum CBN_CLOSEUP = 8; +enum CBN_DBLCLK = 2; +enum CBN_DROPDOWN = 7; +enum CBN_EDITCHANGE = 5; +enum CBN_EDITUPDATE = 6; +enum CBN_ERRSPACE = (-1); +enum CBN_KILLFOCUS = 4; +enum CBN_SELCHANGE = 1; +enum CBN_SELENDCANCEL = 10; +enum CBN_SELENDOK = 9; +enum CBN_SETFOCUS = 3; + +enum EM_CANUNDO = 198; +enum EM_CHARFROMPOS = 215; +enum EM_EMPTYUNDOBUFFER = 205; +enum EM_FMTLINES = 200; +enum EM_GETFIRSTVISIBLELINE = 206; +enum EM_GETHANDLE = 189; +enum EM_GETLIMITTEXT = 213; +enum EM_GETLINE = 196; +enum EM_GETLINECOUNT = 186; +enum EM_GETMARGINS = 212; +enum EM_GETMODIFY = 184; +enum EM_GETPASSWORDCHAR = 210; +enum EM_GETRECT = 178; +enum EM_GETSEL = 176; +enum EM_GETTHUMB = 190; +enum EM_GETWORDBREAKPROC = 209; +enum EM_LIMITTEXT = 197; +enum EM_LINEFROMCHAR = 201; +enum EM_LINEINDEX = 187; +enum EM_LINELENGTH = 193; +enum EM_LINESCROLL = 182; +enum EM_POSFROMCHAR = 214; +enum EM_REPLACESEL = 194; +enum EM_SCROLL = 181; +enum EM_SCROLLCARET = 183; +enum EM_SETHANDLE = 188; +enum EM_SETLIMITTEXT = 197; +enum EM_SETMARGINS = 211; +enum EM_SETMODIFY = 185; +enum EM_SETPASSWORDCHAR = 204; +enum EM_SETREADONLY = 207; +enum EM_SETRECT = 179; +enum EM_SETRECTNP = 180; +enum EM_SETSEL = 177; +enum EM_SETTABSTOPS = 203; +enum EM_SETWORDBREAKPROC = 208; +enum EM_UNDO = 199; + +enum EM_SETIMESTATUS = 216; +enum EM_GETIMESTATUS = 217; + +enum EN_CHANGE = 768; +enum EN_ERRSPACE = 1280; +enum EN_HSCROLL = 1537; +enum EN_KILLFOCUS = 512; +enum EN_MAXTEXT = 1281; +enum EN_SETFOCUS = 256; +enum EN_UPDATE = 1024; +enum EN_VSCROLL = 1538; + +enum LB_ADDFILE = 406; +enum LB_ADDSTRING = 384; +enum LB_DELETESTRING = 386; +enum LB_DIR = 397; +enum LB_FINDSTRING = 399; +enum LB_FINDSTRINGEXACT = 418; +enum LB_GETANCHORINDEX = 413; +enum LB_GETCARETINDEX = 415; +enum LB_GETCOUNT = 395; +enum LB_GETCURSEL = 392; +enum LB_GETHORIZONTALEXTENT = 403; +enum LB_GETITEMDATA = 409; +enum LB_GETITEMHEIGHT = 417; +enum LB_GETITEMRECT = 408; +enum LB_GETLOCALE = 422; +enum LB_GETSEL = 391; +enum LB_GETSELCOUNT = 400; +enum LB_GETSELITEMS = 401; +enum LB_GETTEXT = 393; +enum LB_GETTEXTLEN = 394; +enum LB_GETTOPINDEX = 398; +enum LB_INITSTORAGE = 424; +enum LB_INSERTSTRING = 385; +enum LB_ITEMFROMPOINT = 425; +enum LB_RESETCONTENT = 388; +enum LB_SELECTSTRING = 396; +enum LB_SELITEMRANGE = 411; +enum LB_SELITEMRANGEEX = 387; +enum LB_SETANCHORINDEX = 412; +enum LB_SETCARETINDEX = 414; +enum LB_SETCOLUMNWIDTH = 405; +enum LB_SETCOUNT = 423; +enum LB_SETCURSEL = 390; +enum LB_SETHORIZONTALEXTENT = 404; +enum LB_SETITEMDATA = 410; +enum LB_SETITEMHEIGHT = 416; +enum LB_SETLOCALE = 421; +enum LB_SETSEL = 389; +enum LB_SETTABSTOPS = 402; +enum LB_SETTOPINDEX = 407; +static if(_WIN32_WINNT >= 0x501) { +enum LB_GETLISTBOXINFO = 434; +} + +enum LBN_DBLCLK = 2; +enum LBN_ERRSPACE = -2; +enum LBN_KILLFOCUS = 5; +enum LBN_SELCANCEL = 3; +enum LBN_SELCHANGE = 1; +enum LBN_SETFOCUS = 4; + +enum SBM_ENABLE_ARROWS = 228; +enum SBM_GETPOS = 225; +enum SBM_GETRANGE = 227; +enum SBM_GETSCROLLINFO = 234; +enum SBM_SETPOS = 224; +enum SBM_SETRANGE = 226; +enum SBM_SETRANGEREDRAW = 230; +enum SBM_SETSCROLLINFO = 233; +static if(_WIN32_WINNT >= 0x501) { +enum SBM_GETSCROLLBARINFO = 235; +} + +enum STM_GETICON = 369; +enum STM_GETIMAGE = 371; +enum STM_SETICON = 368; +enum STM_SETIMAGE = 370; +enum STN_CLICKED = 0; +enum STN_DBLCLK = 1; +enum STN_DISABLE = 3; +enum STN_ENABLE = 2; + +enum DM_GETDEFID = WM_USER; +enum DM_SETDEFID = WM_USER+1; +enum DM_REPOSITION = WM_USER+2; + +enum PSM_PAGEINFO = WM_USER+100; +enum PSM_SHEETINFO = WM_USER+101; + +enum PSI_SETACTIVE = 1; +enum PSI_KILLACTIVE = 2; +enum PSI_APPLY = 3; +enum PSI_RESET = 4; +enum PSI_HASHELP = 5; +enum PSI_HELP = 6; +enum PSI_CHANGED = 1; +enum PSI_GUISTART = 2; +enum PSI_REBOOT = 3; +enum PSI_GETSIBLINGS = 4; + +enum DCX_WINDOW = 1; +enum DCX_CACHE = 2; +enum DCX_PARENTCLIP = 32; +enum DCX_CLIPSIBLINGS = 16; +enum DCX_CLIPCHILDREN = 8; +enum DCX_NORESETATTRS = 4; +enum DCX_INTERSECTUPDATE = 0x200; +enum DCX_LOCKWINDOWUPDATE = 0x400; +enum DCX_EXCLUDERGN = 64; +enum DCX_INTERSECTRGN = 128; +enum DCX_VALIDATE = 0x200000; + +enum GMDI_GOINTOPOPUPS = 2; +enum GMDI_USEDISABLED = 1; +enum FKF_AVAILABLE = 2; +enum FKF_CLICKON = 64; +enum FKF_FILTERKEYSON = 1; +enum FKF_HOTKEYACTIVE = 4; +enum FKF_HOTKEYSOUND = 16; +enum FKF_CONFIRMHOTKEY = 8; +enum FKF_INDICATOR = 32; +enum HCF_HIGHCONTRASTON = 1; +enum HCF_AVAILABLE = 2; +enum HCF_HOTKEYACTIVE = 4; +enum HCF_CONFIRMHOTKEY = 8; +enum HCF_HOTKEYSOUND = 16; +enum HCF_INDICATOR = 32; +enum HCF_HOTKEYAVAILABLE = 64; +enum MKF_AVAILABLE = 2; +enum MKF_CONFIRMHOTKEY = 8; +enum MKF_HOTKEYACTIVE = 4; +enum MKF_HOTKEYSOUND = 16; +enum MKF_INDICATOR = 32; +enum MKF_MOUSEKEYSON = 1; +enum MKF_MODIFIERS = 64; +enum MKF_REPLACENUMBERS = 128; +enum SERKF_ACTIVE = 8; // May be obsolete. Not in recent MS docs. +enum SERKF_AVAILABLE = 2; +enum SERKF_INDICATOR = 4; +enum SERKF_SERIALKEYSON = 1; +enum SSF_AVAILABLE = 2; +enum SSF_SOUNDSENTRYON = 1; +enum SSTF_BORDER = 2; +enum SSTF_CHARS = 1; +enum SSTF_DISPLAY = 3; +enum SSTF_NONE = 0; +enum SSGF_DISPLAY = 3; +enum SSGF_NONE = 0; +enum SSWF_CUSTOM = 4; +enum SSWF_DISPLAY = 3; +enum SSWF_NONE = 0; +enum SSWF_TITLE = 1; +enum SSWF_WINDOW = 2; +enum SKF_AUDIBLEFEEDBACK = 64; +enum SKF_AVAILABLE = 2; +enum SKF_CONFIRMHOTKEY = 8; +enum SKF_HOTKEYACTIVE = 4; +enum SKF_HOTKEYSOUND = 16; +enum SKF_INDICATOR = 32; +enum SKF_STICKYKEYSON = 1; +enum SKF_TRISTATE = 128; +enum SKF_TWOKEYSOFF = 256; +enum TKF_AVAILABLE = 2; +enum TKF_CONFIRMHOTKEY = 8; +enum TKF_HOTKEYACTIVE = 4; +enum TKF_HOTKEYSOUND = 16; +enum TKF_TOGGLEKEYSON = 1; +enum MDITILE_SKIPDISABLED = 2; +enum MDITILE_HORIZONTAL = 1; +enum MDITILE_VERTICAL = 0; + +enum { + VK_LBUTTON = 0x01, + VK_RBUTTON = 0x02, + VK_CANCEL = 0x03, + VK_MBUTTON = 0x04, + VK_XBUTTON1 = 0x05, + VK_XBUTTON2 = 0x06, + VK_BACK = 0x08, + VK_TAB = 0x09, + VK_CLEAR = 0x0C, + VK_RETURN = 0x0D, + VK_SHIFT = 0x10, + VK_CONTROL = 0x11, + VK_MENU = 0x12, + VK_PAUSE = 0x13, + VK_CAPITAL = 0x14, + VK_KANA = 0x15, + VK_HANGEUL = 0x15, + VK_HANGUL = 0x15, + VK_JUNJA = 0x17, + VK_FINAL = 0x18, + VK_HANJA = 0x19, + VK_KANJI = 0x19, + VK_ESCAPE = 0x1B, + VK_CONVERT = 0x1C, + VK_NONCONVERT = 0x1D, + VK_ACCEPT = 0x1E, + VK_MODECHANGE = 0x1F, + VK_SPACE = 0x20, + VK_PRIOR = 0x21, + VK_NEXT = 0x22, + VK_END = 0x23, + VK_HOME = 0x24, + VK_LEFT = 0x25, + VK_UP = 0x26, + VK_RIGHT = 0x27, + VK_DOWN = 0x28, + VK_SELECT = 0x29, + VK_PRINT = 0x2A, + VK_EXECUTE = 0x2B, + VK_SNAPSHOT = 0x2C, + VK_INSERT = 0x2D, + VK_DELETE = 0x2E, + VK_HELP = 0x2F, + VK_LWIN = 0x5B, + VK_RWIN = 0x5C, + VK_APPS = 0x5D, + VK_SLEEP = 0x5F, + VK_NUMPAD0 = 0x60, + VK_NUMPAD1 = 0x61, + VK_NUMPAD2 = 0x62, + VK_NUMPAD3 = 0x63, + VK_NUMPAD4 = 0x64, + VK_NUMPAD5 = 0x65, + VK_NUMPAD6 = 0x66, + VK_NUMPAD7 = 0x67, + VK_NUMPAD8 = 0x68, + VK_NUMPAD9 = 0x69, + VK_MULTIPLY = 0x6A, + VK_ADD = 0x6B, + VK_SEPARATOR = 0x6C, + VK_SUBTRACT = 0x6D, + VK_DECIMAL = 0x6E, + VK_DIVIDE = 0x6F, + VK_F1 = 0x70, + VK_F2 = 0x71, + VK_F3 = 0x72, + VK_F4 = 0x73, + VK_F5 = 0x74, + VK_F6 = 0x75, + VK_F7 = 0x76, + VK_F8 = 0x77, + VK_F9 = 0x78, + VK_F10 = 0x79, + VK_F11 = 0x7A, + VK_F12 = 0x7B, + VK_F13 = 0x7C, + VK_F14 = 0x7D, + VK_F15 = 0x7E, + VK_F16 = 0x7F, + VK_F17 = 0x80, + VK_F18 = 0x81, + VK_F19 = 0x82, + VK_F20 = 0x83, + VK_F21 = 0x84, + VK_F22 = 0x85, + VK_F23 = 0x86, + VK_F24 = 0x87, + VK_NUMLOCK = 0x90, + VK_SCROLL = 0x91, + VK_LSHIFT = 0xA0, + VK_RSHIFT = 0xA1, + VK_LCONTROL = 0xA2, + VK_RCONTROL = 0xA3, + VK_LMENU = 0xA4, + VK_RMENU = 0xA5, + VK_BROWSER_BACK = 0xA6, + VK_BROWSER_FORWARD = 0xA7, + VK_BROWSER_REFRESH = 0xA8, + VK_BROWSER_STOP = 0xA9, + VK_BROWSER_SEARCH = 0xAA, + VK_BROWSER_FAVORITES = 0xAB, + VK_BROWSER_HOME = 0xAC, + VK_VOLUME_MUTE = 0xAD, + VK_VOLUME_DOWN = 0xAE, + VK_VOLUME_UP = 0xAF, + VK_MEDIA_NEXT_TRACK = 0xB0, + VK_MEDIA_PREV_TRACK = 0xB1, + VK_MEDIA_STOP = 0xB2, + VK_MEDIA_PLAY_PAUSE = 0xB3, + VK_LAUNCH_MAIL = 0xB4, + VK_LAUNCH_MEDIA_SELECT = 0xB5, + VK_LAUNCH_APP1 = 0xB6, + VK_LAUNCH_APP2 = 0xB7, + VK_OEM_1 = 0xBA, + VK_OEM_PLUS = 0xBB, + VK_OEM_COMMA = 0xBC, + VK_OEM_MINUS = 0xBD, + VK_OEM_PERIOD = 0xBE, + VK_OEM_2 = 0xBF, + VK_OEM_3 = 0xC0, + VK_OEM_4 = 0xDB, + VK_OEM_5 = 0xDC, + VK_OEM_6 = 0xDD, + VK_OEM_7 = 0xDE, + VK_OEM_8 = 0xDF, + VK_OEM_102 = 0xE2, + VK_PROCESSKEY = 0xE5, + VK_PACKET = 0xE7, + VK_ATTN = 0xF6, + VK_CRSEL = 0xF7, + VK_EXSEL = 0xF8, + VK_EREOF = 0xF9, + VK_PLAY = 0xFA, + VK_ZOOM = 0xFB, + VK_NONAME = 0xFC, + VK_PA1 = 0xFD, + VK_OEM_CLEAR = 0xFE, +} + +enum TME_HOVER = 1; +enum TME_LEAVE = 2; +enum TME_QUERY = 0x40000000; +enum TME_CANCEL = 0x80000000; + +enum HOVER_DEFAULT = 0xFFFFFFFF; + +enum MK_LBUTTON = 1; +enum MK_RBUTTON = 2; +enum MK_SHIFT = 4; +enum MK_CONTROL = 8; +enum MK_MBUTTON = 16; +enum MK_XBUTTON1 = 32; +enum MK_XBUTTON2 = 64; + +enum { + TPM_RECURSE = 0x0001, + TPM_LEFTBUTTON = 0, + TPM_RIGHTBUTTON = 0x0002, + TPM_LEFTALIGN = 0, + TPM_CENTERALIGN = 0x0004, + TPM_RIGHTALIGN = 0x0008, + TPM_TOPALIGN = 0, + TPM_VCENTERALIGN = 0x0010, + TPM_BOTTOMALIGN = 0x0020, + TPM_HORIZONTAL = 0, + TPM_VERTICAL = 0x0040, + TPM_NONOTIFY = 0x0080, + TPM_RETURNCMD = 0x0100 +} + +enum HELP_COMMAND = 0x102; +enum HELP_CONTENTS = 3; +enum HELP_CONTEXT = 1; +enum HELP_CONTEXTPOPUP = 8; +enum HELP_FORCEFILE = 9; +enum HELP_HELPONHELP = 4; +enum HELP_INDEX = 3; +enum HELP_KEY = 0x101; +enum HELP_MULTIKEY = 0x201; +enum HELP_PARTIALKEY = 0x105; +enum HELP_QUIT = 2; +enum HELP_SETCONTENTS = 5; +enum HELP_SETINDEX = 5; +enum HELP_SETWINPOS = 0x203; +enum HELP_CONTEXTMENU = 0xa; +enum HELP_FINDER = 0xb; +enum HELP_WM_HELP = 0xc; +enum HELP_TCARD = 0x8000; +enum HELP_TCARD_DATA = 16; +enum HELP_TCARD_OTHER_CALLER = 0x11; + +enum IDH_NO_HELP = 28440; +enum IDH_MISSING_CONTEXT = 28441; +enum IDH_GENERIC_HELP_BUTTON = 28442; +enum IDH_OK = 28443; +enum IDH_CANCEL = 28444; +enum IDH_HELP = 28445; + +enum LB_CTLCODE = 0; +enum LB_OKAY = 0; +enum LB_ERR = -1; +enum LB_ERRSPACE = -2; + +enum CB_OKAY = 0; +enum CB_ERR = -1; +enum CB_ERRSPACE = -2; + +enum HIDE_WINDOW = 0; + +enum SHOW_OPENWINDOW = 1; +enum SHOW_ICONWINDOW = 2; +enum SHOW_FULLSCREEN = 3; +enum SHOW_OPENNOACTIVATE = 4; + +enum KF_EXTENDED = 256; +enum KF_DLGMODE = 2048; +enum KF_MENUMODE = 4096; +enum KF_ALTDOWN = 8192; +enum KF_REPEAT = 16384; +enum KF_UP = 32768; + +enum WSF_VISIBLE = 1; + +enum PWR_OK = 1; +enum PWR_FAIL = -1; +enum PWR_SUSPENDREQUEST = 1; +enum PWR_SUSPENDRESUME = 2; +enum PWR_CRITICALRESUME = 3; + +enum NFR_ANSI = 1; +enum NFR_UNICODE = 2; +enum NF_QUERY = 3; +enum NF_REQUERY = 4; + +enum MENULOOP_WINDOW = 0; +enum MENULOOP_POPUP = 1; + +enum WMSZ_LEFT = 1; +enum WMSZ_RIGHT = 2; +enum WMSZ_TOP = 3; +enum WMSZ_TOPLEFT = 4; +enum WMSZ_TOPRIGHT = 5; +enum WMSZ_BOTTOM = 6; +enum WMSZ_BOTTOMLEFT = 7; +enum WMSZ_BOTTOMRIGHT = 8; + +enum HTERROR = -2; +enum HTTRANSPARENT = -1; +enum HTNOWHERE = 0; +enum HTCLIENT = 1; +enum HTCAPTION = 2; +enum HTSYSMENU = 3; +enum HTGROWBOX = 4; +enum HTSIZE = 4; +enum HTMENU = 5; +enum HTHSCROLL = 6; +enum HTVSCROLL = 7; +enum HTMINBUTTON = 8; +enum HTMAXBUTTON = 9; +enum HTREDUCE = 8; +enum HTZOOM = 9; +enum HTLEFT = 10; +enum HTSIZEFIRST = 10; +enum HTRIGHT = 11; +enum HTTOP = 12; +enum HTTOPLEFT = 13; +enum HTTOPRIGHT = 14; +enum HTBOTTOM = 15; +enum HTBOTTOMLEFT = 16; +enum HTBOTTOMRIGHT = 17; +enum HTSIZELAST = 17; +enum HTBORDER = 18; +enum HTOBJECT = 19; +enum HTCLOSE = 20; +enum HTHELP = 21; + +enum MA_ACTIVATE = 1; +enum MA_ACTIVATEANDEAT = 2; +enum MA_NOACTIVATE = 3; +enum MA_NOACTIVATEANDEAT = 4; + +enum SIZE_RESTORED = 0; +enum SIZE_MINIMIZED = 1; +enum SIZE_MAXIMIZED = 2; +enum SIZE_MAXSHOW = 3; +enum SIZE_MAXHIDE = 4; + +enum SIZENORMAL = 0; +enum SIZEICONIC = 1; +enum SIZEFULLSCREEN = 2; +enum SIZEZOOMSHOW = 3; +enum SIZEZOOMHIDE = 4; + +enum WVR_ALIGNTOP = 16; +enum WVR_ALIGNLEFT = 32; +enum WVR_ALIGNBOTTOM = 64; +enum WVR_ALIGNRIGHT = 128; +enum WVR_HREDRAW = 256; +enum WVR_VREDRAW = 512; +enum WVR_REDRAW = (WVR_HREDRAW|WVR_VREDRAW); +enum WVR_VALIDRECTS = 1024; + +enum PRF_CHECKVISIBLE = 1; +enum PRF_NONCLIENT = 2; +enum PRF_CLIENT = 4; +enum PRF_ERASEBKGND = 8; +enum PRF_CHILDREN = 16; +enum PRF_OWNED = 32; + +enum IDANI_OPEN = 1; +enum IDANI_CLOSE = 2; +enum IDANI_CAPTION = 3; + +enum WPF_RESTORETOMAXIMIZED = 2; +enum WPF_SETMINPOSITION = 1; + +enum ODT_MENU = 1; +enum ODT_LISTBOX = 2; +enum ODT_COMBOBOX = 3; +enum ODT_BUTTON = 4; +enum ODT_STATIC = 5; +enum ODA_DRAWENTIRE = 1; +enum ODA_SELECT = 2; +enum ODA_FOCUS = 4; +enum ODS_SELECTED = 1; +enum ODS_GRAYED = 2; +enum ODS_DISABLED = 4; +enum ODS_CHECKED = 8; +enum ODS_FOCUS = 16; +enum ODS_DEFAULT = 32; +enum ODS_COMBOBOXEDIT = 4096; + +enum IDHOT_SNAPWINDOW = -1; +enum IDHOT_SNAPDESKTOP = -2; + +enum DBWF_LPARAMPOINTER = 0x8000; +enum DLGWINDOWEXTRA = 30; +enum MNC_IGNORE = 0; +enum MNC_CLOSE = 1; +enum MNC_EXECUTE = 2; +enum MNC_SELECT = 3; +enum DOF_EXECUTABLE = 0x8001; +enum DOF_DOCUMENT = 0x8002; +enum DOF_DIRECTORY = 0x8003; +enum DOF_MULTIPLE = 0x8004; +enum DOF_PROGMAN = 1; +enum DOF_SHELLDATA = 2; +enum DO_DROPFILE = 0x454C4946; +enum DO_PRINTFILE = 0x544E5250; + +enum SC_SIZE = 0xF000; +enum SC_MOVE = 0xF010; +enum SC_MINIMIZE = 0xF020; +enum SC_ICON = 0xf020; +enum SC_MAXIMIZE = 0xF030; +enum SC_ZOOM = 0xF030; +enum SC_NEXTWINDOW = 0xF040; +enum SC_PREVWINDOW = 0xF050; +enum SC_CLOSE = 0xF060; +enum SC_VSCROLL = 0xF070; +enum SC_HSCROLL = 0xF080; +enum SC_MOUSEMENU = 0xF090; +enum SC_KEYMENU = 0xF100; +enum SC_ARRANGE = 0xF110; +enum SC_RESTORE = 0xF120; +enum SC_TASKLIST = 0xF130; +enum SC_SCREENSAVE = 0xF140; +enum SC_HOTKEY = 0xF150; +enum SC_DEFAULT = 0xF160; +enum SC_MONITORPOWER = 0xF170; +enum SC_CONTEXTHELP = 0xF180; +enum SC_SEPARATOR = 0xF00F; + +enum EC_LEFTMARGIN = 1; +enum EC_RIGHTMARGIN = 2; +enum EC_USEFONTINFO = 0xffff; + +enum DC_HASDEFID = 0x534B; + +enum DLGC_WANTARROWS = 1; +enum DLGC_WANTTAB = 2; +enum DLGC_WANTALLKEYS = 4; +enum DLGC_WANTMESSAGE = 4; +enum DLGC_HASSETSEL = 8; +enum DLGC_DEFPUSHBUTTON = 16; +enum DLGC_UNDEFPUSHBUTTON = 32; +enum DLGC_RADIOBUTTON = 64; +enum DLGC_WANTCHARS = 128; +enum DLGC_STATIC = 256; +enum DLGC_BUTTON = 0x2000; + +enum WA_INACTIVE = 0; +enum WA_ACTIVE = 1; +enum WA_CLICKACTIVE = 2; + +enum ICON_SMALL = 0; +enum ICON_BIG = 1; +static if (_WIN32_WINNT >= 0x501) { +enum ICON_SMALL2 = 2; +} + +enum HBITMAP + HBMMENU_CALLBACK = cast(HBITMAP)-1, + HBMMENU_SYSTEM = cast(HBITMAP)1, + HBMMENU_MBAR_RESTORE = cast(HBITMAP)2, + HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3, + HBMMENU_MBAR_CLOSE = cast(HBITMAP)5, + HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6, + HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7, + HBMMENU_POPUP_CLOSE = cast(HBITMAP)8, + HBMMENU_POPUP_RESTORE = cast(HBITMAP)9, + HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10, + HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11; + +enum MOD_ALT = 1; +enum MOD_CONTROL = 2; +enum MOD_SHIFT = 4; +enum MOD_WIN = 8; +enum MOD_IGNORE_ALL_MODIFIER = 1024; +enum MOD_ON_KEYUP = 2048; +enum MOD_RIGHT = 16384; +enum MOD_LEFT = 32768; + +enum LLKHF_EXTENDED = (KF_EXTENDED >> 8); +enum LLKHF_INJECTED = 0x00000010; +enum LLKHF_ALTDOWN = (KF_ALTDOWN >> 8); +enum LLKHF_UP = (KF_UP >> 8); + +enum CURSOR_SHOWING = 0x00000001; +enum WS_ACTIVECAPTION = 0x00000001; +enum ENDSESSION_LOGOFF = 0x80000000; + +enum GA_PARENT = 1; +enum GA_ROOT = 2; +enum GA_ROOTOWNER = 3; + +enum { + MAPVK_VK_TO_VSC, + MAPVK_VSC_TO_VK, + MAPVK_VK_TO_CHAR, + MAPVK_VSC_TO_VK_EX, + MAPVK_VK_TO_VSC_EX // = 4 +} + +enum { + INPUT_MOUSE, + INPUT_KEYBOARD, + INPUT_HARDWARE // = 2 +} + +// Callbacks +// --------- +extern (Windows) { + alias INT_PTR function(HWND, UINT, WPARAM, LPARAM) DLGPROC; + alias void function(HWND, UINT, UINT_PTR, DWORD) TIMERPROC; + alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC; + alias LRESULT function(int, WPARAM, LPARAM) HOOKPROC; + alias BOOL function(HWND, LPCSTR, HANDLE) PROPENUMPROCA; + alias BOOL function(HWND, LPCWSTR, HANDLE) PROPENUMPROCW; + alias BOOL function(HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; + alias BOOL function(HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; + alias int function(LPSTR, int, int, int) EDITWORDBREAKPROCA; + alias int function(LPWSTR, int, int, int) EDITWORDBREAKPROCW; + alias LRESULT function(HWND, UINT, WPARAM, LPARAM) WNDPROC; + alias BOOL function(HDC, LPARAM, WPARAM, int, int) DRAWSTATEPROC; + alias BOOL function(HWND, LPARAM) WNDENUMPROC; + alias BOOL function(HWND, LPARAM) ENUMWINDOWSPROC; + alias void function(LPHELPINFO) MSGBOXCALLBACK; + + alias BOOL function(HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; + alias BOOL function(LPSTR, LPARAM) NAMEENUMPROCA; + alias BOOL function(LPWSTR, LPARAM) NAMEENUMPROCW; + alias void function(HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; + + alias NAMEENUMPROCA DESKTOPENUMPROCA; + alias NAMEENUMPROCW DESKTOPENUMPROCW; + alias NAMEENUMPROCA WINSTAENUMPROCA; + alias NAMEENUMPROCW WINSTAENUMPROCW; +} + +mixin DECLARE_HANDLE!("HDWP"); +mixin DECLARE_HANDLE!("HDEVNOTIFY"); + +struct MENUGETOBJECTINFO { + DWORD dwFlags; + UINT uPos; + HMENU hmenu; + PVOID riid; + PVOID pvObj; +} +alias MENUGETOBJECTINFO* PMENUGETOBJECTINFO; + +struct ACCEL { + BYTE fVirt; + WORD key; + WORD cmd; +} +alias ACCEL* LPACCEL; + +struct ACCESSTIMEOUT { + UINT cbSize = ACCESSTIMEOUT.sizeof; + DWORD dwFlags; + DWORD iTimeOutMSec; +} +alias ACCESSTIMEOUT* LPACCESSTIMEOUT; + +struct ANIMATIONINFO { + UINT cbSize = ANIMATIONINFO.sizeof; + int iMinAnimate; +} +alias ANIMATIONINFO* LPANIMATIONINFO; + +struct CREATESTRUCTA { + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCSTR lpszName; + LPCSTR lpszClass; + DWORD dwExStyle; +} +alias CREATESTRUCTA* LPCREATESTRUCTA; + +struct CREATESTRUCTW { + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCWSTR lpszName; + LPCWSTR lpszClass; + DWORD dwExStyle; +} +alias CREATESTRUCTW* LPCREATESTRUCTW; + +struct CBT_CREATEWNDA { + LPCREATESTRUCTA lpcs; + HWND hwndInsertAfter; +} +alias CBT_CREATEWNDA* LPCBT_CREATEWNDA; + +struct CBT_CREATEWNDW { + LPCREATESTRUCTW lpcs; + HWND hwndInsertAfter; +} +alias CBT_CREATEWNDW* LPCBT_CREATEWNDW; + +struct CBTACTIVATESTRUCT { + BOOL fMouse; + HWND hWndActive; +} +alias CBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT; + +static if (_WIN32_WINNT >= 0x501) { + +struct WTSSESSION_NOTIFICATION +{ + DWORD cbSize; + DWORD dwSessionId; +} +alias WTSSESSION_NOTIFICATION* PWTSSESSION_NOTIFICATION; + +} + +struct CLIENTCREATESTRUCT { + HANDLE hWindowMenu; + UINT idFirstChild; +} +alias CLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT; + +struct COMPAREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + HWND hwndItem; + UINT itemID1; + DWORD itemData1; + UINT itemID2; + DWORD itemData2; + DWORD dwLocaleId; +} +alias COMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT; + +struct COPYDATASTRUCT { + DWORD dwData; + DWORD cbData; + PVOID lpData; +} +alias COPYDATASTRUCT* PCOPYDATASTRUCT; + +struct CURSORSHAPE { + int xHotSpot; + int yHotSpot; + int cx; + int cy; + int cbWidth; + BYTE Planes; + BYTE BitsPixel; +} +alias CURSORSHAPE* LPCURSORSHAPE; + +struct CWPRETSTRUCT { + LRESULT lResult; + LPARAM lParam; + WPARAM wParam; + DWORD message; + HWND hwnd; +} + +struct CWPSTRUCT { + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; +} +alias CWPSTRUCT* PCWPSTRUCT; + +struct DEBUGHOOKINFO { + DWORD idThread; + DWORD idThreadInstaller; + LPARAM lParam; + WPARAM wParam; + int code; +} +alias DEBUGHOOKINFO* PDEBUGHOOKINFO, LPDEBUGHOOKINFO; + +struct DELETEITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + HWND hwndItem; + UINT itemData; +} +alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT, LPDELETEITEMSTRUCT; + +align(2): +struct DLGITEMTEMPLATE { + DWORD style; + DWORD dwExtendedStyle; + short x; + short y; + short cx; + short cy; + WORD id; +} +alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATE; + +struct DLGTEMPLATE { + DWORD style; + DWORD dwExtendedStyle; + WORD cdit; + short x; + short y; + short cx; + short cy; +} +alias DLGTEMPLATE* LPDLGTEMPLATE, LPDLGTEMPLATEA, LPDLGTEMPLATEW; +alias const(DLGTEMPLATE)* LPCDLGTEMPLATE; + +align: + +struct DRAWITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemAction; + UINT itemState; + HWND hwndItem; + HDC hDC; + RECT rcItem; + DWORD itemData; +} +alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT, PDRAWITEMSTRUCT; + +struct DRAWTEXTPARAMS { + UINT cbSize = DRAWTEXTPARAMS.sizeof; + int iTabLength; + int iLeftMargin; + int iRightMargin; + UINT uiLengthDrawn; +} +alias DRAWTEXTPARAMS* LPDRAWTEXTPARAMS; + +struct PAINTSTRUCT { + HDC hdc; + BOOL fErase; + RECT rcPaint; + BOOL fRestore; + BOOL fIncUpdate; + BYTE[32] rgbReserved; +} +alias PAINTSTRUCT* LPPAINTSTRUCT; + +struct MSG { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; +} +alias MSG* LPMSG, PMSG; + +struct ICONINFO { + BOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; +} +alias ICONINFO* PICONINFO; + +struct NMHDR { + HWND hwndFrom; + UINT_PTR idFrom; + UINT code; +} +alias NMHDR* LPNMHDR; + +struct WNDCLASSA { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; +} +alias WNDCLASSA* LPWNDCLASSA, PWNDCLASSA; + +struct WNDCLASSW { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; +} +alias WNDCLASSW* LPWNDCLASSW, PWNDCLASSW; + +struct WNDCLASSEXA { + UINT cbSize = WNDCLASSEXA.sizeof; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; + HICON hIconSm; +} +alias WNDCLASSEXA* LPWNDCLASSEXA, PWNDCLASSEXA; + +struct WNDCLASSEXW { + UINT cbSize = WNDCLASSEXW.sizeof; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; + HICON hIconSm; +} +alias WNDCLASSEXW* LPWNDCLASSEXW, PWNDCLASSEXW; + +struct MENUITEMINFOA { + UINT cbSize = MENUITEMINFOA.sizeof; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPSTR dwTypeData; + UINT cch; + HBITMAP hbmpItem; +} +alias MENUITEMINFOA* LPMENUITEMINFOA; +alias const(MENUITEMINFOA)* LPCMENUITEMINFOA; + +struct MENUITEMINFOW { + UINT cbSize = MENUITEMINFOW.sizeof; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPWSTR dwTypeData; + UINT cch; + HBITMAP hbmpItem; +} +alias MENUITEMINFOW* LPMENUITEMINFOW; +alias const(MENUITEMINFOW)* LPCMENUITEMINFOW; + +struct SCROLLINFO { + UINT cbSize = this.sizeof; + UINT fMask; + int nMin; + int nMax; + UINT nPage; + int nPos; + int nTrackPos; +} +alias SCROLLINFO* LPSCROLLINFO; +alias const(SCROLLINFO)* LPCSCROLLINFO; + +struct WINDOWPLACEMENT { + UINT length; + UINT flags; + UINT showCmd; + POINT ptMinPosition; + POINT ptMaxPosition; + RECT rcNormalPosition; +} +alias WINDOWPLACEMENT* LPWINDOWPLACEMENT, PWINDOWPLACEMENT; + +struct MENUITEMTEMPLATEHEADER { + WORD versionNumber; + WORD offset; +} + +struct MENUITEMTEMPLATE { + WORD mtOption; + WORD mtID; + WCHAR[1] mtString; +} + +alias void MENUTEMPLATE, MENUTEMPLATEA, MENUTEMPLATEW; + +alias MENUTEMPLATE* LPMENUTEMPLATEA, LPMENUTEMPLATEW, LPMENUTEMPLATE; + +struct HELPINFO { + UINT cbSize = this.sizeof; + int iContextType; + int iCtrlId; + HANDLE hItemHandle; + DWORD dwContextId; + POINT MousePos; +} +alias HELPINFO* LPHELPINFO; + +struct MSGBOXPARAMSA { + UINT cbSize = this.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpszText; + LPCSTR lpszCaption; + DWORD dwStyle; + LPCSTR lpszIcon; + DWORD dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} +alias MSGBOXPARAMSA* PMSGBOXPARAMSA, LPMSGBOXPARAMSA; + +struct MSGBOXPARAMSW { + UINT cbSize = this.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpszText; + LPCWSTR lpszCaption; + DWORD dwStyle; + LPCWSTR lpszIcon; + DWORD dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} +alias MSGBOXPARAMSW* PMSGBOXPARAMSW, LPMSGBOXPARAMSW; + +struct USEROBJECTFLAGS { + BOOL fInherit; + BOOL fReserved; + DWORD dwFlags; +} + +struct FILTERKEYS { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iWaitMSec; + DWORD iDelayMSec; + DWORD iRepeatMSec; + DWORD iBounceMSec; +} + +struct HIGHCONTRASTA { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPSTR lpszDefaultScheme; +} +alias HIGHCONTRASTA* LPHIGHCONTRASTA; + +struct HIGHCONTRASTW { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPWSTR lpszDefaultScheme; +} +alias HIGHCONTRASTW* LPHIGHCONTRASTW; + +struct ICONMETRICSA { + UINT cbSize = this.sizeof; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTA lfFont; +} +alias ICONMETRICSA* LPICONMETRICSA; + +struct ICONMETRICSW { + UINT cbSize = this.sizeof; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTW lfFont; +} +alias ICONMETRICSW* LPICONMETRICSW; + +struct MINIMIZEDMETRICS { + UINT cbSize = this.sizeof; + int iWidth; + int iHorzGap; + int iVertGap; + int iArrange; +} +alias MINIMIZEDMETRICS* LPMINIMIZEDMETRICS; + +struct MOUSEKEYS { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iMaxSpeed; + DWORD iTimeToMaxSpeed; + DWORD iCtrlSpeed; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias MOUSEKEYS* LPMOUSEKEYS; + +struct NONCLIENTMETRICSA { + UINT cbSize = this.sizeof; + int iBorderWidth; + int iScrollWidth; + int iScrollHeight; + int iCaptionWidth; + int iCaptionHeight; + LOGFONTA lfCaptionFont; + int iSmCaptionWidth; + int iSmCaptionHeight; + LOGFONTA lfSmCaptionFont; + int iMenuWidth; + int iMenuHeight; + LOGFONTA lfMenuFont; + LOGFONTA lfStatusFont; + LOGFONTA lfMessageFont; +} +alias NONCLIENTMETRICSA* LPNONCLIENTMETRICSA; + +struct NONCLIENTMETRICSW { + UINT cbSize = this.sizeof; + int iBorderWidth; + int iScrollWidth; + int iScrollHeight; + int iCaptionWidth; + int iCaptionHeight; + LOGFONTW lfCaptionFont; + int iSmCaptionWidth; + int iSmCaptionHeight; + LOGFONTW lfSmCaptionFont; + int iMenuWidth; + int iMenuHeight; + LOGFONTW lfMenuFont; + LOGFONTW lfStatusFont; + LOGFONTW lfMessageFont; +} +alias NONCLIENTMETRICSW* LPNONCLIENTMETRICSW; + +struct SERIALKEYSA { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPSTR lpszActivePort; + LPSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} +alias SERIALKEYSA* LPSERIALKEYSA; + +struct SERIALKEYSW { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPWSTR lpszActivePort; + LPWSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} +alias SERIALKEYSW* LPSERIALKEYSW; + +struct SOUNDSENTRYA { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} +alias SOUNDSENTRYA* LPSOUNDSENTRYA; + +struct SOUNDSENTRYW { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPWSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} +alias SOUNDSENTRYW* LPSOUNDSENTRYW; + +struct STICKYKEYS { + DWORD cbSize = this.sizeof; + DWORD dwFlags; +} +alias STICKYKEYS* LPSTICKYKEYS; + +struct TOGGLEKEYS { + DWORD cbSize = this.sizeof; + DWORD dwFlags; +} + +struct MOUSEHOOKSTRUCT { + POINT pt; + HWND hwnd; + UINT wHitTestCode; + DWORD dwExtraInfo; +} +alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT, PMOUSEHOOKSTRUCT; + +struct TRACKMOUSEEVENT { + DWORD cbSize = this.sizeof; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; +} +alias TRACKMOUSEEVENT* LPTRACKMOUSEEVENT; + +struct TPMPARAMS { + UINT cbSize = this.sizeof; + RECT rcExclude; +} +alias TPMPARAMS* LPTPMPARAMS; + +struct EVENTMSG { + UINT message; + UINT paramL; + UINT paramH; + DWORD time; + HWND hwnd; +} +alias EVENTMSG* PEVENTMSGMSG, LPEVENTMSGMSG, PEVENTMSG, LPEVENTMSG; + +struct WINDOWPOS { + HWND hwnd; + HWND hwndInsertAfter; + int x; + int y; + int cx; + int cy; + UINT flags; +} +alias WINDOWPOS* PWINDOWPOS, LPWINDOWPOS; + +struct NCCALCSIZE_PARAMS { + RECT[3] rgrc; + PWINDOWPOS lppos; +} +alias NCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS; + +struct MDICREATESTRUCTA { + LPCSTR szClass; + LPCSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} +alias MDICREATESTRUCTA* LPMDICREATESTRUCTA; + +struct MDICREATESTRUCTW { + LPCWSTR szClass; + LPCWSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} +alias MDICREATESTRUCTW* LPMDICREATESTRUCTW; + +struct MINMAXINFO { + POINT ptReserved; + POINT ptMaxSize; + POINT ptMaxPosition; + POINT ptMinTrackSize; + POINT ptMaxTrackSize; +} +alias MINMAXINFO* PMINMAXINFO, LPMINMAXINFO; + +struct MDINEXTMENU { + HMENU hmenuIn; + HMENU hmenuNext; + HWND hwndNext; +} +alias MDINEXTMENU* PMDINEXTMENU, LPMDINEXTMENU; + +struct MEASUREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemWidth; + UINT itemHeight; + DWORD itemData; +} +alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT, LPMEASUREITEMSTRUCT; + +struct DROPSTRUCT { + HWND hwndSource; + HWND hwndSink; + DWORD wFmt; + DWORD dwData; + POINT ptDrop; + DWORD dwControlData; +} +alias DROPSTRUCT* PDROPSTRUCT, LPDROPSTRUCT; + +alias DWORD HELPPOLY; + +struct MULTIKEYHELPA { + DWORD mkSize; + CHAR mkKeylist; + CHAR[1] szKeyphrase; +} +alias MULTIKEYHELPA* PMULTIKEYHELPA, LPMULTIKEYHELPA; + +struct MULTIKEYHELPW { + DWORD mkSize; + WCHAR mkKeylist; + WCHAR[1] szKeyphrase; +} +alias MULTIKEYHELPW* PMULTIKEYHELPW, LPMULTIKEYHELPW; + +struct HELPWININFOA { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + CHAR[2] rgchMember; +} +alias HELPWININFOA* PHELPWININFOA, LPHELPWININFOA; + +struct HELPWININFOW { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + WCHAR[2] rgchMember; +} +alias HELPWININFOW* PHELPWININFOW, LPHELPWININFOW; + +struct STYLESTRUCT { + DWORD styleOld; + DWORD styleNew; +} +alias STYLESTRUCT* LPSTYLESTRUCT; + +struct ALTTABINFO { + DWORD cbSize = this.sizeof; + int cItems; + int cColumns; + int cRows; + int iColFocus; + int iRowFocus; + int cxItem; + int cyItem; + POINT ptStart; +} +alias ALTTABINFO* PALTTABINFO, LPALTTABINFO; + +struct COMBOBOXINFO { + DWORD cbSize = this.sizeof; + RECT rcItem; + RECT rcButton; + DWORD stateButton; + HWND hwndCombo; + HWND hwndItem; + HWND hwndList; +} +alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO; + +struct CURSORINFO { + DWORD cbSize = this.sizeof; + DWORD flags; + HCURSOR hCursor; + POINT ptScreenPos; +} +alias CURSORINFO* PCURSORINFO, LPCURSORINFO; + +struct MENUBARINFO { + DWORD cbSize = this.sizeof; + RECT rcBar; + HMENU hMenu; + HWND hwndMenu; + byte bf_; // Simulated bitfield +// BOOL fBarFocused:1; +// BOOL fFocused:1; + bool fBarFocused() { return (bf_ & 1) == 1; } + bool fFocused() { return (bf_ & 2) == 2; } + bool fBarFocused(bool b) { bf_ = cast(byte) ((bf_ & 0xFE) | b); return b; } + bool fFocused(bool b) { bf_ = cast(byte) (b ? (bf_ | 2) : bf_ & 0xFD); return b; } +} +alias MENUBARINFO* PMENUBARINFO; + +struct MENUINFO { + DWORD cbSize = this.sizeof; + DWORD fMask; + DWORD dwStyle; + UINT cyMax; + HBRUSH hbrBack; + DWORD dwContextHelpID; + ULONG_PTR dwMenuData; +} +alias MENUINFO* LPMENUINFO; +alias const(MENUINFO)* LPCMENUINFO; + + +enum CCHILDREN_SCROLLBAR = 5; + +struct SCROLLBARINFO { + DWORD cbSize = this.sizeof; + RECT rcScrollBar; + int dxyLineButton; + int xyThumbTop; + int xyThumbBottom; + int reserved; + DWORD[CCHILDREN_SCROLLBAR+1] rgstate; +} +alias SCROLLBARINFO* PSCROLLBARINFO, LPSCROLLBARINFO; + +enum CCHILDREN_TITLEBAR = 5; + +struct WINDOWINFO { + DWORD cbSize = WINDOWINFO.sizeof; + RECT rcWindow; + RECT rcClient; + DWORD dwStyle; + DWORD dwExStyle; + DWORD dwWindowStatus; + UINT cxWindowBorders; + UINT cyWindowBorders; + ATOM atomWindowType; + WORD wCreatorVersion; +} +alias WINDOWINFO* PWINDOWINFO, LPWINDOWINFO; + +struct LASTINPUTINFO { + UINT cbSize = this.sizeof; + DWORD dwTime; +} +alias LASTINPUTINFO* PLASTINPUTINFO; + +struct MONITORINFO { + DWORD cbSize = this.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; +} +alias MONITORINFO* LPMONITORINFO; + +enum CCHDEVICENAME = 32; + +struct MONITORINFOEXA { + DWORD cbSize = MONITORINFOEXA.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + CHAR[CCHDEVICENAME] szDevice; +} +alias MONITORINFOEXA* LPMONITORINFOEXA; + +struct MONITORINFOEXW { + DWORD cbSize = MONITORINFOEXW.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + WCHAR[CCHDEVICENAME] szDevice; +} +alias MONITORINFOEXW* LPMONITORINFOEXW; + +struct KBDLLHOOKSTRUCT { + DWORD vkCode; + DWORD scanCode; + DWORD flags; + DWORD time; + DWORD dwExtraInfo; +} +alias KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT; + +struct MSLLHOOKSTRUCT { + POINT pt; + DWORD mouseData; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT; + +struct MOUSEINPUT { + LONG dx; + LONG dy; + DWORD mouseData; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias MOUSEINPUT* PMOUSEINPUT; + +struct KEYBDINPUT { + WORD wVk; + WORD wScan; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias KEYBDINPUT* PKEYBDINPUT; + +struct HARDWAREINPUT { + DWORD uMsg; + WORD wParamL; + WORD wParamH; +} +alias HARDWAREINPUT* PHARDWAREINPUT; + +struct INPUT { + DWORD type; + union { + MOUSEINPUT mi; + KEYBDINPUT ki; + HARDWAREINPUT hi; + } +} +alias INPUT* PINPUT, LPINPUT; + +static if (_WIN32_WINNT >= 0x501) { + struct BSMINFO { + UINT cbSize = this.sizeof; + HDESK hdesk; + HWND hwnd; + LUID luid; + } + alias BSMINFO* PBSMINFO; + + alias TypeDef!(HANDLE) HRAWINPUT; + + struct RAWINPUTHEADER { + DWORD dwType; + DWORD dwSize; + HANDLE hDevice; + WPARAM wParam; + } + alias RAWINPUTHEADER* PRAWINPUTHEADER; + + struct RAWMOUSE { + USHORT usFlags; + union { + ULONG ulButtons; + struct { + USHORT usButtonFlags; + USHORT usButtonData; + } + } + ULONG ulRawButtons; + LONG lLastX; + LONG lLastY; + ULONG ulExtraInformation; + } + alias RAWMOUSE* PRAWMOUSE, LPRAWMOUSE; + + struct RAWKEYBOARD { + USHORT MakeCode; + USHORT Flags; + USHORT Reserved; + USHORT VKey; + UINT Message; + ULONG ExtraInformation; + } + alias RAWKEYBOARD* PRAWKEYBOARD, LPRAWKEYBOARD; + + struct RAWHID { + DWORD dwSizeHid; + DWORD dwCount; + BYTE bRawData; + } + alias RAWHID* PRAWHID, LPRAWHID; + + struct RAWINPUT { + RAWINPUTHEADER header; + union _data { + RAWMOUSE mouse; + RAWKEYBOARD keyboard; + RAWHID hid; + } + _data data; + } + alias RAWINPUT* PRAWINPUT, LPRAWINPUT; + + struct RAWINPUTDEVICE { + USHORT usUsagePage; + USHORT usUsage; + DWORD dwFlags; + HWND hwndTarget; + } + alias RAWINPUTDEVICE* PRAWINPUTDEVICE, LPRAWINPUTDEVICE; + alias const(RAWINPUTDEVICE)* PCRAWINPUTDEVICE; + + struct RAWINPUTDEVICELIST { + HANDLE hDevice; + DWORD dwType; + } + alias RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST; + + struct RID_DEVICE_INFO_MOUSE { + DWORD dwId; + DWORD dwNumberOfButtons; + DWORD dwSampleRate; + BOOL fHasHorizontalWheel; + } + + struct RID_DEVICE_INFO_KEYBOARD { + DWORD dwType; + DWORD dwSubType; + DWORD dwKeyboardMode; + DWORD dwNumberOfFunctionKeys; + DWORD dwNumberOfIndicators; + DWORD dwNumberOfKeysTotal; + } + + struct RID_DEVICE_INFO_HID { + DWORD dwVendorId; + DWORD dwProductId; + DWORD dwVersionNumber; + USHORT usUsagePage; + USHORT usUsage; + } + + struct RID_DEVICE_INFO { + DWORD cbSize = this.sizeof; + DWORD dwType; + union { + RID_DEVICE_INFO_MOUSE mouse; + RID_DEVICE_INFO_KEYBOARD keyboard; + RID_DEVICE_INFO_HID hid; + } + } +}// (_WIN32_WINNT >= 0x501) + +alias CharToOemA AnsiToOem; +alias OemToCharA OemToAnsi; +alias CharToOemBuffA AnsiToOemBuff; +alias OemToCharBuffA OemToAnsiBuff; +alias CharUpperA AnsiUpper; +alias CharUpperBuffA AnsiUpperBuff; +alias CharLowerA AnsiLower; +alias CharLowerBuffA AnsiLowerBuff; +alias CharNextA AnsiNext; +alias CharPrevA AnsiPrev; + +alias MAKELONG MAKEWPARAM; +alias MAKELONG MAKELPARAM; +alias MAKELONG MAKELRESULT; + +void POINTSTOPOINT()(out POINT p, LONG ps) { + p.x = LOWORD(ps); + p.y = HIWORD(ps); +} + +POINTS POINTTOPOINTS()(in POINT p) { + return MAKELONG(p.x, p.y); +} + +extern (Windows) { + HKL ActivateKeyboardLayout(HKL, UINT); + BOOL AdjustWindowRect(LPRECT, DWORD, BOOL); + BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD); + BOOL AnyPopup(); + BOOL AppendMenuA(HMENU, UINT, UINT_PTR, LPCSTR); + BOOL AppendMenuW(HMENU, UINT, UINT_PTR, LPCWSTR); + UINT ArrangeIconicWindows(HWND); + BOOL AttachThreadInput(DWORD, DWORD, BOOL); + HDWP BeginDeferWindowPos(int); + HDC BeginPaint(HWND, LPPAINTSTRUCT); + BOOL BringWindowToTop(HWND); + BOOL CallMsgFilterA(LPMSG, INT); + BOOL CallMsgFilterW(LPMSG, INT); + LRESULT CallNextHookEx(HHOOK, int, WPARAM, LPARAM); + LRESULT CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM); + LRESULT CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM); + WORD CascadeWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*); + BOOL ChangeClipboardChain(HWND, HWND); + + LONG ChangeDisplaySettingsA(PDEVMODEA, DWORD); + LONG ChangeDisplaySettingsW(PDEVMODEW, DWORD); + LONG ChangeDisplaySettingsExA(LPCSTR, LPDEVMODEA, HWND, DWORD, LPVOID); + LONG ChangeDisplaySettingsExW(LPCWSTR, LPDEVMODEW, HWND, DWORD, LPVOID); + + BOOL ChangeMenuA(HMENU, UINT, LPCSTR, UINT, UINT); + BOOL ChangeMenuW(HMENU, UINT, LPCWSTR, UINT, UINT); + LPSTR CharLowerA(LPSTR); + LPWSTR CharLowerW(LPWSTR); + DWORD CharLowerBuffA(LPSTR, DWORD); + DWORD CharLowerBuffW(LPWSTR, DWORD); + LPSTR CharNextA(LPCSTR); + LPWSTR CharNextW(LPCWSTR); + LPSTR CharNextExA(WORD, LPCSTR, DWORD); + LPWSTR CharNextExW(WORD, LPCWSTR, DWORD); + LPSTR CharPrevA(LPCSTR, LPCSTR); + LPWSTR CharPrevW(LPCWSTR, LPCWSTR); + LPSTR CharPrevExA(WORD, LPCSTR, LPCSTR, DWORD); + LPWSTR CharPrevExW(WORD, LPCWSTR, LPCWSTR, DWORD); + BOOL CharToOemA(LPCSTR, LPSTR); + BOOL CharToOemW(LPCWSTR, LPSTR); + BOOL CharToOemBuffA(LPCSTR, LPSTR, DWORD); + BOOL CharToOemBuffW(LPCWSTR, LPSTR, DWORD); + LPSTR CharUpperA(LPSTR); + LPWSTR CharUpperW(LPWSTR); + DWORD CharUpperBuffA(LPSTR, DWORD); + DWORD CharUpperBuffW(LPWSTR, DWORD); + BOOL CheckDlgButton(HWND, int, UINT); + DWORD CheckMenuItem(HMENU, UINT, UINT); + BOOL CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT); + BOOL CheckRadioButton(HWND, int, int, int); + HWND ChildWindowFromPoint(HWND, POINT); + HWND ChildWindowFromPointEx(HWND, POINT, UINT); + BOOL ClientToScreen(HWND, LPPOINT); + BOOL ClipCursor(LPCRECT); + BOOL CloseClipboard(); + BOOL CloseDesktop(HDESK); + BOOL CloseWindow(HWND); + BOOL CloseWindowStation(HWINSTA); + int CopyAcceleratorTableA(HACCEL, LPACCEL, int); + int CopyAcceleratorTableW(HACCEL, LPACCEL, int); + + HICON CopyIcon(HICON); + HANDLE CopyImage(HANDLE, UINT, int, int, UINT); + BOOL CopyRect(LPRECT, LPCRECT); + int CountClipboardFormats(); + HACCEL CreateAcceleratorTableA(LPACCEL, int); + HACCEL CreateAcceleratorTableW(LPACCEL, int); + BOOL CreateCaret(HWND, HBITMAP, int, int); + HCURSOR CreateCursor(HINSTANCE, int, int, int, int, PCVOID, PCVOID); + + HDESK CreateDesktopA(LPCSTR, LPCSTR, LPDEVMODEA, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); + HDESK CreateDesktopW(LPCWSTR, LPCWSTR, LPDEVMODEW, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); + + HWND CreateDialogParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); + HWND CreateDialogParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); + HWND CreateDialogIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + HWND CreateDialogIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + + HICON CreateIcon(HINSTANCE, int, int, BYTE, BYTE, const(BYTE)*, BYTE*); + HICON CreateIconFromResource(PBYTE, DWORD, BOOL, DWORD); + HICON CreateIconFromResourceEx(PBYTE, DWORD, BOOL, DWORD, int, int, UINT); + HICON CreateIconIndirect(PICONINFO); + HWND CreateMDIWindowA(LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); + HWND CreateMDIWindowW(LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); + HMENU CreateMenu(); + HMENU CreatePopupMenu(); + + HWND CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); + HWND CreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); + + HWINSTA CreateWindowStationA(LPSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HWINSTA CreateWindowStationW(LPWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + LRESULT DefDlgProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefDlgProcW(HWND, UINT, WPARAM, LPARAM); + HDWP DeferWindowPos(HDWP, HWND, HWND, int, int, int, int, UINT); + LRESULT DefFrameProcA(HWND, HWND, UINT, WPARAM, LPARAM); + LRESULT DefFrameProcW(HWND, HWND, UINT, WPARAM, LPARAM); + + LRESULT DefMDIChildProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefMDIChildProcW(HWND, UINT, WPARAM, LPARAM); + LRESULT DefWindowProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefWindowProcW(HWND, UINT, WPARAM, LPARAM); + BOOL DeleteMenu(HMENU, UINT, UINT); + BOOL DeregisterShellHookWindow(HWND); + BOOL DestroyAcceleratorTable(HACCEL); + BOOL DestroyCaret(); + BOOL DestroyCursor(HCURSOR); + BOOL DestroyIcon(HICON); + BOOL DestroyMenu(HMENU); + BOOL DestroyWindow(HWND); + + INT_PTR DialogBoxParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + +} // extern (Windows) + +HCURSOR CopyCursor()(HCURSOR c) { + return cast(HCURSOR)CopyIcon(cast(HICON)c); +} + +HWND CreateDialogA()(HINSTANCE h, LPCSTR n, HWND w, DLGPROC f) { + return CreateDialogParamA(h, n, w, f, 0); +} + +HWND CreateDialogW()(HINSTANCE h, LPCWSTR n, HWND w, DLGPROC f) { + return CreateDialogParamW(h, n, w, f, 0); +} + +HWND CreateDialogIndirectA()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { + return CreateDialogIndirectParamA(h, t, w, f, 0); +} + +HWND CreateDialogIndirectW()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { + return CreateDialogIndirectParamW(h, t, w, f, 0); +} + +HWND CreateWindowA()(LPCSTR a, LPCSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { + return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k); +} + +HWND CreateWindowW()(LPCWSTR a, LPCWSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { + return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k); +} + +INT_PTR DialogBoxA()(HINSTANCE i, LPCSTR t, HWND p, DLGPROC f) { + return DialogBoxParamA(i, t, p, f, 0); +} + +INT_PTR DialogBoxW()(HINSTANCE i, LPCWSTR t, HWND p, DLGPROC f) { + return DialogBoxParamW(i, t, p, f, 0); +} + +INT_PTR DialogBoxIndirectA()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { + return DialogBoxIndirectParamA(i, t, p, f, 0); +} + +INT_PTR DialogBoxIndirectW()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { + return DialogBoxIndirectParamW(i, t, p, f, 0); +} + +BOOL ExitWindows()(UINT r, DWORD c) { + return ExitWindowsEx(EWX_LOGOFF, 0); +} +alias GetWindow GetNextWindow; + +extern (Windows): +LONG DispatchMessageA(const(MSG)*); +LONG DispatchMessageW(const(MSG)*); +int DlgDirListA(HWND, LPSTR, int, int, UINT); +int DlgDirListW(HWND, LPWSTR, int, int, UINT); +int DlgDirListComboBoxA(HWND, LPSTR, int, int, UINT); +int DlgDirListComboBoxW(HWND, LPWSTR, int, int, UINT); +BOOL DlgDirSelectComboBoxExA(HWND, LPSTR, int, int); +BOOL DlgDirSelectComboBoxExW(HWND, LPWSTR, int, int); +BOOL DlgDirSelectExA(HWND, LPSTR, int, int); +BOOL DlgDirSelectExW(HWND, LPWSTR, int, int); +BOOL DragDetect(HWND, POINT); +DWORD DragObject(HWND, HWND, UINT, DWORD, HCURSOR); +BOOL DrawAnimatedRects(HWND, int, LPCRECT, LPCRECT); +BOOL DrawCaption(HWND, HDC, LPCRECT, UINT); +BOOL DrawEdge(HDC, LPRECT, UINT, UINT); +BOOL DrawFocusRect(HDC, LPCRECT); +BOOL DrawFrameControl(HDC, LPRECT, UINT, UINT); +BOOL DrawIcon(HDC, int, int, HICON); +BOOL DrawIconEx(HDC, int, int, HICON, int, int, UINT, HBRUSH, UINT); +BOOL DrawMenuBar(HWND); +BOOL DrawStateA(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT); +BOOL DrawStateW(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT); +int DrawTextA(HDC, LPCSTR, int, LPRECT, UINT); +int DrawTextW(HDC, LPCWSTR, int, LPRECT, UINT); +int DrawTextExA(HDC, LPSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS); +int DrawTextExW(HDC, LPWSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS); +BOOL EmptyClipboard(); +BOOL EnableMenuItem(HMENU, UINT, UINT); +BOOL EnableScrollBar(HWND, UINT, UINT); +BOOL EnableWindow(HWND, BOOL); +BOOL EndDeferWindowPos(HDWP); +BOOL EndDialog(HWND, INT_PTR); +BOOL EndMenu(); +BOOL EndPaint(HWND, const(PAINTSTRUCT)*); +BOOL EnumChildWindows(HWND, ENUMWINDOWSPROC, LPARAM); +UINT EnumClipboardFormats(UINT); +BOOL EnumDesktopsA(HWINSTA, DESKTOPENUMPROCA, LPARAM); +BOOL EnumDesktopsW(HWINSTA, DESKTOPENUMPROCW, LPARAM); +BOOL EnumDesktopWindows(HDESK, ENUMWINDOWSPROC, LPARAM); +BOOL EnumDisplaySettingsA(LPCSTR, DWORD, PDEVMODEA); +BOOL EnumDisplaySettingsW(LPCWSTR, DWORD, PDEVMODEW); + +BOOL EnumDisplayDevicesA(LPCSTR, DWORD, PDISPLAY_DEVICEA, DWORD); +BOOL EnumDisplayDevicesW(LPCWSTR, DWORD, PDISPLAY_DEVICEW, DWORD); + +int EnumPropsA(HWND, PROPENUMPROCA); +int EnumPropsW(HWND, PROPENUMPROCW); +int EnumPropsExA(HWND, PROPENUMPROCEXA, LPARAM); +int EnumPropsExW(HWND, PROPENUMPROCEXW, LPARAM); + +BOOL EnumThreadWindows(DWORD, WNDENUMPROC, LPARAM); +BOOL EnumWindows(WNDENUMPROC, LPARAM); +BOOL EnumWindowStationsA(WINSTAENUMPROCA, LPARAM); +BOOL EnumWindowStationsW(WINSTAENUMPROCW, LPARAM); +BOOL EqualRect(LPCRECT, LPCRECT); + +BOOL ExitWindowsEx(UINT, DWORD); +HWND FindWindowA(LPCSTR, LPCSTR); +HWND FindWindowExA(HWND, HWND, LPCSTR, LPCSTR); +HWND FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR); +HWND FindWindowW(LPCWSTR, LPCWSTR); +BOOL FlashWindow(HWND, BOOL); + +int FrameRect(HDC, LPCRECT, HBRUSH); +BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); +HWND GetActiveWindow(); +HWND GetAncestor(HWND, UINT); +SHORT GetAsyncKeyState(int); +HWND GetCapture(); +UINT GetCaretBlinkTime(); +BOOL GetCaretPos(LPPOINT); +BOOL GetClassInfoA(HINSTANCE, LPCSTR, LPWNDCLASSA); +BOOL GetClassInfoExA(HINSTANCE, LPCSTR, LPWNDCLASSEXA); +BOOL GetClassInfoW(HINSTANCE, LPCWSTR, LPWNDCLASSW); +BOOL GetClassInfoExW(HINSTANCE, LPCWSTR, LPWNDCLASSEXW); +DWORD GetClassLongA(HWND, int); +DWORD GetClassLongW(HWND, int); +int GetClassNameA(HWND, LPSTR, int); +int GetClassNameW(HWND, LPWSTR, int); +WORD GetClassWord(HWND, int); +BOOL GetClientRect(HWND, LPRECT); +HANDLE GetClipboardData(UINT); +int GetClipboardFormatNameA(UINT, LPSTR, int); +int GetClipboardFormatNameW(UINT, LPWSTR, int); +HWND GetClipboardOwner(); +HWND GetClipboardViewer(); +BOOL GetClipCursor(LPRECT); +BOOL GetCursorPos(LPPOINT); +HDC GetDC(HWND); +HDC GetDCEx(HWND, HRGN, DWORD); +HWND GetDesktopWindow(); +int GetDialogBaseUnits(); +int GetDlgCtrlID(HWND); +HWND GetDlgItem(HWND, int); +UINT GetDlgItemInt(HWND, int, PBOOL, BOOL); +UINT GetDlgItemTextA(HWND, int, LPSTR, int); +UINT GetDlgItemTextW(HWND, int, LPWSTR, int); +UINT GetDoubleClickTime(); +HWND GetFocus(); +HWND GetForegroundWindow(); + +BOOL GetIconInfo(HICON, PICONINFO); +BOOL GetInputState(); +UINT GetKBCodePage(); +HKL GetKeyboardLayout(DWORD); +UINT GetKeyboardLayoutList(int, HKL*); +BOOL GetKeyboardLayoutNameA(LPSTR); +BOOL GetKeyboardLayoutNameW(LPWSTR); +BOOL GetKeyboardState(PBYTE); +int GetKeyboardType(int); +int GetKeyNameTextA(LONG, LPSTR, int); +int GetKeyNameTextW(LONG, LPWSTR, int); +SHORT GetKeyState(int); +HWND GetLastActivePopup(HWND); +HMENU GetMenu(HWND); +LONG GetMenuCheckMarkDimensions(); +DWORD GetMenuContextHelpId(HMENU); +UINT GetMenuDefaultItem(HMENU, UINT, UINT); +int GetMenuItemCount(HMENU); +UINT GetMenuItemID(HMENU, int); +BOOL GetMenuItemInfoA(HMENU, UINT, BOOL, LPMENUITEMINFOA); +BOOL GetMenuItemInfoW(HMENU, UINT, BOOL, LPMENUITEMINFOW); +BOOL GetMenuItemRect(HWND, HMENU, UINT, LPRECT); +UINT GetMenuState(HMENU, UINT, UINT); +int GetMenuStringA(HMENU, UINT, LPSTR, int, UINT); +int GetMenuStringW(HMENU, UINT, LPWSTR, int, UINT); +BOOL GetMessageA(LPMSG, HWND, UINT, UINT); +BOOL GetMessageW(LPMSG, HWND, UINT, UINT); +LONG GetMessageExtraInfo(); +DWORD GetMessagePos(); +LONG GetMessageTime(); + +HWND GetNextDlgGroupItem(HWND, HWND, BOOL); +HWND GetNextDlgTabItem(HWND, HWND, BOOL); + +HWND GetOpenClipboardWindow(); +HWND GetParent(HWND); +int GetPriorityClipboardFormat(UINT*, int); +HANDLE GetPropA(HWND, LPCSTR); +HANDLE GetPropW(HWND, LPCWSTR); + +DWORD GetQueueStatus(UINT); +BOOL GetScrollInfo(HWND, int, LPSCROLLINFO); +int GetScrollPos(HWND, int); +BOOL GetScrollRange(HWND, int, LPINT, LPINT); + +HMENU GetSubMenu(HMENU, int); +DWORD GetSysColor(int); +HBRUSH GetSysColorBrush(int); + +HMENU GetSystemMenu(HWND, BOOL); +int GetSystemMetrics(int); +DWORD GetTabbedTextExtentA(HDC, LPCSTR, int, int, LPINT); +DWORD GetTabbedTextExtentW(HDC, LPCWSTR, int, int, LPINT); +LONG GetWindowLongA(HWND, int); +LONG GetWindowLongW(HWND, int); + +HDESK GetThreadDesktop(DWORD); +HWND GetTopWindow(HWND); +BOOL GetUpdateRect(HWND, LPRECT, BOOL); +int GetUpdateRgn(HWND, HRGN, BOOL); +BOOL GetUserObjectInformationA(HANDLE, int, PVOID, DWORD, PDWORD); +BOOL GetUserObjectInformationW(HANDLE, int, PVOID, DWORD, PDWORD); +BOOL GetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); +HWND GetWindow(HWND, UINT); +DWORD GetWindowContextHelpId(HWND); +HDC GetWindowDC(HWND); +BOOL GetWindowPlacement(HWND, WINDOWPLACEMENT*); +BOOL GetWindowRect(HWND, LPRECT); +int GetWindowRgn(HWND, HRGN); +int GetWindowTextA(HWND, LPSTR, int); +int GetWindowTextLengthA(HWND); +int GetWindowTextLengthW(HWND); +int GetWindowTextW(HWND, LPWSTR, int); +WORD GetWindowWord(HWND, int); +BOOL GetAltTabInfoA(HWND, int, PALTTABINFO, LPSTR, UINT); +BOOL GetAltTabInfoW(HWND, int, PALTTABINFO, LPWSTR, UINT); +BOOL GetComboBoxInfo(HWND, PCOMBOBOXINFO); +BOOL GetCursorInfo(PCURSORINFO); +BOOL GetLastInputInfo(PLASTINPUTINFO); +DWORD GetListBoxInfo(HWND); +BOOL GetMenuBarInfo(HWND, LONG, LONG, PMENUBARINFO); +BOOL GetMenuInfo(HMENU, LPMENUINFO); +BOOL GetScrollBarInfo(HWND, LONG, PSCROLLBARINFO); +BOOL GetTitleBarInfo(HWND, PTITLEBARINFO); +BOOL GetWindowInfo(HWND, PWINDOWINFO); +UINT GetWindowModuleFileNameA(HWND, LPSTR, UINT); +UINT GetWindowModuleFileNameW(HWND, LPWSTR, UINT); +BOOL GrayStringA(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int); +BOOL GrayStringW(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int); +BOOL HideCaret(HWND); +BOOL HiliteMenuItem(HWND, HMENU, UINT, UINT); +BOOL InflateRect(LPRECT, int, int); +BOOL InSendMessage(); +BOOL InsertMenuA(HMENU, UINT, UINT, UINT_PTR, LPCSTR); +BOOL InsertMenuW(HMENU, UINT, UINT, UINT_PTR, LPCWSTR); +BOOL InsertMenuItemA(HMENU, UINT, BOOL, LPCMENUITEMINFOA); +BOOL InsertMenuItemW(HMENU, UINT, BOOL, LPCMENUITEMINFOW); +INT InternalGetWindowText(HWND, LPWSTR, INT); +BOOL IntersectRect(LPRECT, LPCRECT, LPCRECT); +BOOL InvalidateRect(HWND, LPCRECT, BOOL); +BOOL InvalidateRgn(HWND, HRGN, BOOL); +BOOL InvertRect(HDC, LPCRECT); +BOOL IsCharAlphaA(CHAR ch); +BOOL IsCharAlphaNumericA(CHAR); +BOOL IsCharAlphaNumericW(WCHAR); +BOOL IsCharAlphaW(WCHAR); +BOOL IsCharLowerA(CHAR); +BOOL IsCharLowerW(WCHAR); +BOOL IsCharUpperA(CHAR); +BOOL IsCharUpperW(WCHAR); +BOOL IsChild(HWND, HWND); +BOOL IsClipboardFormatAvailable(UINT); +BOOL IsDialogMessageA(HWND, LPMSG); +BOOL IsDialogMessageW(HWND, LPMSG); +UINT IsDlgButtonChecked(HWND, int); +BOOL IsIconic(HWND); +BOOL IsMenu(HMENU); +BOOL IsRectEmpty(LPCRECT); +BOOL IsWindow(HWND); +BOOL IsWindowEnabled(HWND); +BOOL IsWindowUnicode(HWND); +BOOL IsWindowVisible(HWND); +BOOL IsZoomed(HWND); +void keybd_event(BYTE, BYTE, DWORD, DWORD); +BOOL KillTimer(HWND, UINT_PTR); +HACCEL LoadAcceleratorsA(HINSTANCE, LPCSTR); +HACCEL LoadAcceleratorsW(HINSTANCE, LPCWSTR); +HBITMAP LoadBitmapA(HINSTANCE, LPCSTR); +HBITMAP LoadBitmapW(HINSTANCE, LPCWSTR); +HCURSOR LoadCursorA(HINSTANCE, LPCSTR); +HCURSOR LoadCursorFromFileA(LPCSTR); +HCURSOR LoadCursorFromFileW(LPCWSTR); +HCURSOR LoadCursorW(HINSTANCE, LPCWSTR); +HICON LoadIconA(HINSTANCE, LPCSTR); +HICON LoadIconW(HINSTANCE, LPCWSTR); +HANDLE LoadImageA(HINSTANCE, LPCSTR, UINT, int, int, UINT); +HANDLE LoadImageW(HINSTANCE, LPCWSTR, UINT, int, int, UINT); +HKL LoadKeyboardLayoutA(LPCSTR, UINT); +HKL LoadKeyboardLayoutW(LPCWSTR, UINT); +HMENU LoadMenuA(HINSTANCE, LPCSTR); +HMENU LoadMenuIndirectA(const(MENUTEMPLATE)*); +HMENU LoadMenuIndirectW(const(MENUTEMPLATE)*); +HMENU LoadMenuW(HINSTANCE, LPCWSTR); +int LoadStringA(HINSTANCE, UINT, LPSTR, int); +int LoadStringW(HINSTANCE, UINT, LPWSTR, int); +BOOL LockWindowUpdate(HWND); +int LookupIconIdFromDirectory(PBYTE, BOOL); +int LookupIconIdFromDirectoryEx(PBYTE, BOOL, int, int, UINT); +BOOL MapDialogRect(HWND, LPRECT); +UINT MapVirtualKeyA(UINT, UINT); +UINT MapVirtualKeyExA(UINT, UINT, HKL); +UINT MapVirtualKeyExW(UINT, UINT, HKL); +UINT MapVirtualKeyW(UINT, UINT); +int MapWindowPoints(HWND, HWND, LPPOINT, UINT); +int MenuItemFromPoint(HWND, HMENU, POINT); +BOOL MessageBeep(UINT); +int MessageBoxA(HWND, LPCSTR, LPCSTR, UINT); +int MessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT); +int MessageBoxExA(HWND, LPCSTR, LPCSTR, UINT, WORD); +int MessageBoxExW(HWND, LPCWSTR, LPCWSTR, UINT, WORD); +int MessageBoxIndirectA(const(MSGBOXPARAMSA)*); +int MessageBoxIndirectW(const(MSGBOXPARAMSW)*); +BOOL ModifyMenuA(HMENU, UINT, UINT, UINT_PTR, LPCSTR); +BOOL ModifyMenuW(HMENU, UINT, UINT, UINT_PTR, LPCWSTR); +void mouse_event(DWORD, DWORD, DWORD, DWORD, ULONG_PTR); +BOOL MoveWindow(HWND, int, int, int, int, BOOL); +DWORD MsgWaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD, DWORD); +DWORD MsgWaitForMultipleObjectsEx(DWORD, const(HANDLE)*, DWORD, DWORD, DWORD); +DWORD OemKeyScan(WORD); +BOOL OemToCharA(LPCSTR, LPSTR); +BOOL OemToCharBuffA(LPCSTR, LPSTR, DWORD); +BOOL OemToCharBuffW(LPCSTR, LPWSTR, DWORD); +BOOL OemToCharW(LPCSTR, LPWSTR); +BOOL OffsetRect(LPRECT, int, int); +BOOL OpenClipboard(HWND); +HDESK OpenDesktopA(LPSTR, DWORD, BOOL, DWORD); +HDESK OpenDesktopW(LPWSTR, DWORD, BOOL, DWORD); +BOOL OpenIcon(HWND); +HDESK OpenInputDesktop(DWORD, BOOL, DWORD); +HWINSTA OpenWindowStationA(LPSTR, BOOL, DWORD); +HWINSTA OpenWindowStationW(LPWSTR, BOOL, DWORD); +BOOL PaintDesktop(HDC); +BOOL PeekMessageA(LPMSG, HWND, UINT, UINT, UINT); +BOOL PeekMessageW(LPMSG, HWND, UINT, UINT, UINT); +BOOL PostMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL PostMessageW(HWND, UINT, WPARAM, LPARAM); +void PostQuitMessage(int); +BOOL PostThreadMessageA(DWORD, UINT, WPARAM, LPARAM); +BOOL PostThreadMessageW(DWORD, UINT, WPARAM, LPARAM); +BOOL PtInRect(LPCRECT, POINT); +HWND RealChildWindowFromPoint(HWND, POINT); +UINT RealGetWindowClassA(HWND, LPSTR, UINT); +UINT RealGetWindowClassW(HWND, LPWSTR, UINT); +BOOL RedrawWindow(HWND, LPCRECT, HRGN, UINT); +ATOM RegisterClassA(const(WNDCLASSA)*); +ATOM RegisterClassW(const(WNDCLASSW)*); +ATOM RegisterClassExA(const(WNDCLASSEXA)*); +ATOM RegisterClassExW(const(WNDCLASSEXW)*); +UINT RegisterClipboardFormatA(LPCSTR); +UINT RegisterClipboardFormatW(LPCWSTR); +BOOL RegisterHotKey(HWND, int, UINT, UINT); +UINT RegisterWindowMessageA(LPCSTR); +UINT RegisterWindowMessageW(LPCWSTR); +BOOL ReleaseCapture(); +int ReleaseDC(HWND, HDC); +BOOL RemoveMenu(HMENU, UINT, UINT); +HANDLE RemovePropA(HWND, LPCSTR); +HANDLE RemovePropW(HWND, LPCWSTR); +BOOL ReplyMessage(LRESULT); +BOOL ScreenToClient(HWND, LPPOINT); +BOOL ScrollDC(HDC, int, int, LPCRECT, LPCRECT, HRGN, LPRECT); +BOOL ScrollWindow(HWND, int, int, LPCRECT, LPCRECT); +int ScrollWindowEx(HWND, int, int, LPCRECT, LPCRECT, HRGN, LPRECT, UINT); +LONG SendDlgItemMessageA(HWND, int, UINT, WPARAM, LPARAM); +LONG SendDlgItemMessageW(HWND, int, UINT, WPARAM, LPARAM); +LRESULT SendMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL SendMessageCallbackA(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); +BOOL SendMessageCallbackW(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); +LRESULT SendMessageTimeoutA(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); +LRESULT SendMessageTimeoutW(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); +LRESULT SendMessageW(HWND, UINT, WPARAM, LPARAM); +BOOL SendNotifyMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL SendNotifyMessageW(HWND, UINT, WPARAM, LPARAM); +HWND SetActiveWindow(HWND); +HWND SetCapture(HWND hWnd); +BOOL SetCaretBlinkTime(UINT); +BOOL SetCaretPos(int, int); +DWORD SetClassLongA(HWND, int, LONG); +DWORD SetClassLongW(HWND, int, LONG); +WORD SetClassWord(HWND, int, WORD); +HANDLE SetClipboardData(UINT, HANDLE); +HWND SetClipboardViewer(HWND); +HCURSOR SetCursor(HCURSOR); +BOOL SetCursorPos(int, int); +void SetDebugErrorLevel(DWORD); +BOOL SetDlgItemInt(HWND, int, UINT, BOOL); +BOOL SetDlgItemTextA(HWND, int, LPCSTR); +BOOL SetDlgItemTextW(HWND, int, LPCWSTR); +BOOL SetDoubleClickTime(UINT); +HWND SetFocus(HWND); +BOOL SetForegroundWindow(HWND); +BOOL SetKeyboardState(PBYTE); +BOOL SetMenu(HWND, HMENU); +BOOL SetMenuContextHelpId(HMENU, DWORD); +BOOL SetMenuDefaultItem(HMENU, UINT, UINT); +BOOL SetMenuInfo(HMENU, LPCMENUINFO); +BOOL SetMenuItemBitmaps(HMENU, UINT, UINT, HBITMAP, HBITMAP); +BOOL SetMenuItemInfoA(HMENU, UINT, BOOL, LPCMENUITEMINFOA); +BOOL SetMenuItemInfoW(HMENU, UINT, BOOL, LPCMENUITEMINFOW); +LPARAM SetMessageExtraInfo(LPARAM); +BOOL SetMessageQueue(int); +HWND SetParent(HWND, HWND); +BOOL SetProcessWindowStation(HWINSTA); +BOOL SetPropA(HWND, LPCSTR, HANDLE); +BOOL SetPropW(HWND, LPCWSTR, HANDLE); +BOOL SetRect(LPRECT, int, int, int, int); +BOOL SetRectEmpty(LPRECT); +int SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL); +int SetScrollPos(HWND, int, int, BOOL); +BOOL SetScrollRange(HWND, int, int, int, BOOL); +BOOL SetSysColors(int, const(INT)*, const(COLORREF)*); +BOOL SetSystemCursor(HCURSOR, DWORD); +BOOL SetThreadDesktop(HDESK); +UINT_PTR SetTimer(HWND, UINT_PTR, UINT, TIMERPROC); +BOOL SetUserObjectInformationA(HANDLE, int, PVOID, DWORD); +BOOL SetUserObjectInformationW(HANDLE, int, PVOID, DWORD); +BOOL SetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR); +BOOL SetWindowContextHelpId(HWND, DWORD); +LONG SetWindowLongA(HWND, int, LONG); +LONG SetWindowLongW(HWND, int, LONG); +BOOL SetWindowPlacement(HWND hWnd, const(WINDOWPLACEMENT)*); +BOOL SetWindowPos(HWND, HWND, int, int, int, int, UINT); +int SetWindowRgn(HWND, HRGN, BOOL); +HHOOK SetWindowsHookA(int, HOOKPROC); +HHOOK SetWindowsHookW(int, HOOKPROC); +HHOOK SetWindowsHookExA(int, HOOKPROC, HINSTANCE, DWORD); +HHOOK SetWindowsHookExW(int, HOOKPROC, HINSTANCE, DWORD); +BOOL SetWindowTextA(HWND, LPCSTR); +BOOL SetWindowTextW(HWND, LPCWSTR); +WORD SetWindowWord(HWND, int, WORD); +BOOL ShowCaret(HWND); +int ShowCursor(BOOL); +BOOL ShowOwnedPopups(HWND, BOOL); +BOOL ShowScrollBar(HWND, int, BOOL); +BOOL ShowWindow(HWND, int); +BOOL ShowWindowAsync(HWND, int); +BOOL SubtractRect(LPRECT, LPCRECT, LPCRECT); +BOOL SwapMouseButton(BOOL); +BOOL SwitchDesktop(HDESK); +BOOL SystemParametersInfoA(UINT, UINT, PVOID, UINT); +BOOL SystemParametersInfoW(UINT, UINT, PVOID, UINT); +LONG TabbedTextOutA(HDC, int, int, LPCSTR, int, int, LPINT, int); +LONG TabbedTextOutW(HDC, int, int, LPCWSTR, int, int, LPINT, int); +WORD TileWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*); +int ToAscii(UINT, UINT, PBYTE, LPWORD, UINT); +int ToAsciiEx(UINT, UINT, PBYTE, LPWORD, UINT, HKL); +int ToUnicode(UINT, UINT, PBYTE, LPWSTR, int, UINT); +int ToUnicodeEx(UINT, UINT, PBYTE, LPWSTR, int, UINT, HKL); +BOOL TrackMouseEvent(LPTRACKMOUSEEVENT); +BOOL TrackPopupMenu(HMENU, UINT, int, int, int, HWND, LPCRECT); +BOOL TrackPopupMenuEx(HMENU, UINT, int, int, HWND, LPTPMPARAMS); +int TranslateAcceleratorA(HWND, HACCEL, LPMSG); +int TranslateAcceleratorW(HWND, HACCEL, LPMSG); +BOOL TranslateMDISysAccel(HWND, LPMSG); +BOOL TranslateMessage(const(MSG)*); +BOOL UnhookWindowsHook(int, HOOKPROC); +BOOL UnhookWindowsHookEx(HHOOK); +BOOL UnionRect(LPRECT, LPCRECT, LPCRECT); +BOOL UnloadKeyboardLayout(HKL); +BOOL UnregisterClassA(LPCSTR, HINSTANCE); +BOOL UnregisterClassW(LPCWSTR, HINSTANCE); +BOOL UnregisterHotKey(HWND, int); +BOOL UpdateWindow(HWND); +BOOL ValidateRect(HWND, LPCRECT); +BOOL ValidateRgn(HWND, HRGN); +SHORT VkKeyScanA(CHAR); +SHORT VkKeyScanExA(CHAR, HKL); +SHORT VkKeyScanExW(WCHAR, HKL); +SHORT VkKeyScanW(WCHAR); +DWORD WaitForInputIdle(HANDLE, DWORD); +BOOL WaitMessage(); +HWND WindowFromDC(HDC hDC); +HWND WindowFromPoint(POINT); +UINT WinExec(LPCSTR, UINT); +BOOL WinHelpA(HWND, LPCSTR, UINT, DWORD); +BOOL WinHelpW(HWND, LPCWSTR, UINT, DWORD); + +extern (C) { + int wsprintfA(LPSTR, LPCSTR, ...); + int wsprintfW(LPWSTR, LPCWSTR, ...); +} + + +// These shouldn't be necessary for D. +alias TypeDef!(char*) va_list_; +int wvsprintfA(LPSTR, LPCSTR, va_list_ arglist); +int wvsprintfW(LPWSTR, LPCWSTR, va_list_ arglist); + +enum : DWORD { + MONITOR_DEFAULTTONULL, + MONITOR_DEFAULTTOPRIMARY, + MONITOR_DEFAULTTONEAREST // = 2 +} +enum MONITORINFOF_PRIMARY = 1; + +enum EDS_RAWMODE = 0x00000002; + +enum { + ISMEX_NOSEND = 0, + ISMEX_SEND = 1, + ISMEX_NOTIFY = 2, + ISMEX_CALLBACK = 4, + ISMEX_REPLIED = 8 +} + +struct TITLEBARINFO { + DWORD cbSize = TITLEBARINFO.sizeof; + RECT rcTitleBar; + DWORD[CCHILDREN_TITLEBAR+1] rgstate; +} +alias TITLEBARINFO* PTITLEBARINFO, LPTITLEBARINFO; + +static if (_WIN32_WINNT >= 0x501) { // *** correct? + struct FLASHWINFO { + UINT cbSize = this.sizeof; + HWND hwnd; + DWORD dwFlags; + UINT uCount; + DWORD dwTimeout; + } + alias FLASHWINFO* PFLASHWINFO; +} + +enum DWORD ASFW_ANY = -1; +enum : UINT { + LSFW_LOCK = 1, + LSFW_UNLOCK +} +enum { + GMMP_USE_DISPLAY_POINTS = 1, + GMMP_USE_HIGH_RESOLUTION_POINTS +} + +struct MOUSEMOVEPOINT { + int x; + int y; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias MOUSEMOVEPOINT* PMOUSEMOVEPOINT, LPMOUSEMOVEPOINT; + +enum { + MIM_MAXHEIGHT = 1, + MIM_BACKGROUND = 2, + MIM_HELPID = 4, + MIM_MENUDATA = 8, + MIM_STYLE = 16, + MIM_APPLYTOSUBMENUS = 0x80000000L +} + +enum { + MNS_NOCHECK = 0x80000000, + MNS_MODELESS = 0x40000000, + MNS_DRAGDROP = 0x20000000, + MNS_AUTODISMISS = 0x10000000, + MNS_NOTIFYBYPOS = 0x08000000, + MNS_CHECKORBMP = 0x04000000 +} + +enum { + PM_QS_INPUT = (QS_INPUT << 16), + PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16), + PM_QS_PAINT = (QS_PAINT << 16), + PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16) +} +/* +#define WM_GETOBJECT 0x003D +#define WM_CHANGEUISTATE 0x0127 +#define WM_UPDATEUISTATE 0x0128 +#define WM_QUERYUISTATE 0x0129 +#define WM_UNINITMENUPOPUP 0x0125 +#define WM_MENURBUTTONUP 290 +#define WM_MENUCOMMAND 0x0126 +#define WM_MENUGETOBJECT 0x0124 +#define WM_MENUDRAG 0x0123 +#define WM_APPCOMMAND 0x0319 +#define WM_NCXBUTTONDOWN 171 +#define WM_NCXBUTTONUP 172 +#define WM_NCXBUTTONDBLCLK 173 +#define WM_NCMOUSEHOVER 0x02A0 +#define WM_NCMOUSELEAVE 0x02A2*/ + +enum { + FLASHW_STOP = 0, + FLASHW_CAPTION = 0x01, + FLASHW_TRAY = 0x02, + FLASHW_ALL = 0x03, + FLASHW_TIMER = 0x04, + FLASHW_TIMERNOFG = 0x0C +} + +enum CHILDID_SELF = 0; + +enum { + OBJID_WINDOW = 0x00000000, + OBJID_SOUND = 0xFFFFFFF5, + OBJID_ALERT = 0xFFFFFFF6, + OBJID_CURSOR = 0xFFFFFFF7, + OBJID_CARET = 0xFFFFFFF8, + OBJID_SIZEGRIP = 0xFFFFFFF9, + OBJID_HSCROLL = 0xFFFFFFFA, + OBJID_VSCROLL = 0xFFFFFFFB, + OBJID_CLIENT = 0xFFFFFFFC, + OBJID_MENU = 0xFFFFFFFD, + OBJID_TITLEBAR = 0xFFFFFFFE, + OBJID_SYSMENU = 0xFFFFFFFF +} + +enum { + GUI_CARETBLINKING = 0x0001, + GUI_INMOVESIZE = 0x0002, + GUI_INMENUMODE = 0x0004, + GUI_SYSTEMMENUMODE = 0x0008, + GUI_POPUPMENUMODE = 0x0010 +} +static if (_WIN32_WINNT >= 0x501) { + enum GUI_16BITTASK = 0x0020; +} + +enum { + WINEVENT_OUTOFCONTEXT = 0x00, + WINEVENT_SKIPOWNTHREAD = 0x01, + WINEVENT_SKIPOWNPROCESS = 0x02, + WINEVENT_INCONTEXT = 0x04 +} + +enum { + AW_HOR_POSITIVE = 0x00000001, + AW_HOR_NEGATIVE = 0x00000002, + AW_VER_POSITIVE = 0x00000004, + AW_VER_NEGATIVE = 0x00000008, + AW_CENTER = 0x00000010, + AW_HIDE = 0x00010000, + AW_ACTIVATE = 0x00020000, + AW_SLIDE = 0x00040000, + AW_BLEND = 0x00080000 +} + +enum { + DEVICE_NOTIFY_WINDOW_HANDLE = 0x00000000, + DEVICE_NOTIFY_SERVICE_HANDLE = 0x00000001 +} + +static if (_WIN32_WINNT >= 0x501) { + enum DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 0x00000004; +} + +enum : DWORD { + EVENT_MIN = 0x00000001, + EVENT_SYSTEM_SOUND = 0x00000001, + EVENT_SYSTEM_ALERT, + EVENT_SYSTEM_FOREGROUND, + EVENT_SYSTEM_MENUSTART, + EVENT_SYSTEM_MENUEND, + EVENT_SYSTEM_MENUPOPUPSTART, + EVENT_SYSTEM_MENUPOPUPEND, + EVENT_SYSTEM_CAPTURESTART, + EVENT_SYSTEM_CAPTUREEND, + EVENT_SYSTEM_MOVESIZESTART, + EVENT_SYSTEM_MOVESIZEEND, + EVENT_SYSTEM_CONTEXTHELPSTART, + EVENT_SYSTEM_CONTEXTHELPEND, + EVENT_SYSTEM_DRAGDROPSTART, + EVENT_SYSTEM_DRAGDROPEND, + EVENT_SYSTEM_DIALOGSTART, + EVENT_SYSTEM_DIALOGEND, + EVENT_SYSTEM_SCROLLINGSTART, + EVENT_SYSTEM_SCROLLINGEND, + EVENT_SYSTEM_SWITCHSTART, + EVENT_SYSTEM_SWITCHEND, + EVENT_SYSTEM_MINIMIZESTART, + EVENT_SYSTEM_MINIMIZEEND, // = 0x00000017 + EVENT_OBJECT_CREATE = 0x00008000, + EVENT_OBJECT_DESTROY, + EVENT_OBJECT_SHOW, + EVENT_OBJECT_HIDE, + EVENT_OBJECT_REORDER, + EVENT_OBJECT_FOCUS, + EVENT_OBJECT_SELECTION, + EVENT_OBJECT_SELECTIONADD, + EVENT_OBJECT_SELECTIONREMOVE, + EVENT_OBJECT_SELECTIONWITHIN, + EVENT_OBJECT_STATECHANGE, + EVENT_OBJECT_LOCATIONCHANGE, + EVENT_OBJECT_NAMECHANGE, + EVENT_OBJECT_DESCRIPTIONCHANGE, + EVENT_OBJECT_VALUECHANGE, + EVENT_OBJECT_PARENTCHANGE, + EVENT_OBJECT_HELPCHANGE, + EVENT_OBJECT_DEFACTIONCHANGE, + EVENT_OBJECT_ACCELERATORCHANGE, // = 0x00008012 + EVENT_MAX = 0x7FFFFFFF +} + +static if (_WIN32_WINNT >= 0x501) { + enum : DWORD { + EVENT_CONSOLE_CARET = 0x00004000, + EVENT_CONSOLE_UPDATE_REGION, + EVENT_CONSOLE_UPDATE_SIMPLE, + EVENT_CONSOLE_UPDATE_SCROLL, + EVENT_CONSOLE_LAYOUT, + EVENT_CONSOLE_START_APPLICATION, + EVENT_CONSOLE_END_APPLICATION, // = 0x00004007 + } + + enum : LONG { + CONSOLE_CARET_SELECTION = 1, + CONSOLE_CARET_VISIBLE // = 2 + } + enum LONG CONSOLE_APPLICATION_16BIT = 1; +} + +enum { + LWA_COLORKEY = 1, + LWA_ALPHA +} +enum { + ULW_COLORKEY = 1, + ULW_ALPHA = 2, + ULW_OPAQUE = 4 +} +enum { + GR_GDIOBJECTS, + GR_USEROBJECTS +} + +enum { + XBUTTON1 = 1, + XBUTTON2 +} + +struct GUITHREADINFO { + DWORD cbSize = this.sizeof; + DWORD flags; + HWND hwndActive; + HWND hwndFocus; + HWND hwndCapture; + HWND hwndMenuOwner; + HWND hwndMoveSize; + HWND hwndCaret; + RECT rcCaret; +} +alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO; +extern (Windows) { + alias void function(HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC; +} +// *** line 4680 of MinGW 4.0 +int BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM); +int BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM); + +UINT SendInput(UINT, LPINPUT, int); +BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM); +BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFO); +BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFOEXA); +BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFO); +BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFOEXW); +HMONITOR MonitorFromPoint(POINT, DWORD); +HMONITOR MonitorFromRect(LPCRECT, DWORD); +HMONITOR MonitorFromWindow(HWND, DWORD); +BOOL AllowSetForegroundWindow(DWORD); +BOOL AnimateWindow(HWND, DWORD, DWORD); +BOOL EndTask(HWND, BOOL, BOOL); +BOOL EnumDisplaySettingsExA(LPCSTR, DWORD, LPDEVMODEA, DWORD); +BOOL EnumDisplaySettingsExW(LPCWSTR, DWORD, LPDEVMODEW, DWORD); +DWORD GetClipboardSequenceNumber(); +DWORD GetGuiResources(HANDLE, DWORD); +BOOL GetGUIThreadInfo(DWORD, LPGUITHREADINFO); + +int GetMouseMovePointsEx(UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD); +BOOL GetProcessDefaultLayout(DWORD*); +HWND GetShellWindow(); +BOOL IsHungAppWindow(HWND); +DWORD InSendMessageEx(LPVOID); +BOOL LockSetForegroundWindow(UINT); +BOOL LockWorkStation(); +void NotifyWinEvent(DWORD, HWND, LONG, LONG); +HDEVNOTIFY RegisterDeviceNotificationA(HANDLE, LPVOID, DWORD); +HDEVNOTIFY RegisterDeviceNotificationW(HANDLE, LPVOID, DWORD); +BOOL SetProcessDefaultLayout(DWORD); +HWINEVENTHOOK SetWinEventHook(UINT, UINT, HMODULE, WINEVENTPROC, DWORD, DWORD, UINT); +void SwitchToThisWindow(HWND, BOOL); +BOOL SetLayeredWindowAttributes(HWND, COLORREF, BYTE, DWORD); +BOOL UpdateLayeredWindow(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD); +BOOL UserHandleGrantAccess(HANDLE, HANDLE, BOOL); +BOOL UnhookWinEvent(HWINEVENTHOOK); +BOOL UnregisterDeviceNotification(HANDLE); + +static if (_WIN32_WINNT >= 0x501) { + int BroadcastSystemMessageExA(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); + int BroadcastSystemMessageExW(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); + LRESULT DefRawInputProc(PRAWINPUT*, INT, UINT); + BOOL FlashWindowEx(PFLASHWINFO); + BOOL GetLayeredWindowAttributes(HWND, COLORREF*, BYTE*, DWORD*); + UINT GetRawInputBuffer(PRAWINPUT, PUINT, UINT); + UINT GetRawInputData(HRAWINPUT, UINT, LPVOID, PUINT, UINT); + UINT GetRawInputDeviceInfoA(HANDLE, UINT, LPVOID, PUINT); + UINT GetRawInputDeviceInfoW(HANDLE, UINT, LPVOID, PUINT); + UINT GetRawInputDeviceList(PRAWINPUTDEVICELIST, PUINT, UINT); + UINT GetRegisteredRawInputDevices(PRAWINPUTDEVICE, PUINT, UINT); + BOOL IsGUIThread(BOOL); + BOOL IsWinEventHookInstalled(DWORD); + BOOL PrintWindow(HWND, HDC, UINT); + BOOL RegisterRawInputDevices(PCRAWINPUTDEVICE, UINT, UINT); +} + +version (Win64) { + LONG_PTR GetWindowLongPtrA(HWND, int); + LONG_PTR GetWindowLongPtrW(HWND, int); + LONG_PTR SetWindowLongPtrA(HWND, int, LONG_PTR); + LONG_PTR SetWindowLongPtrW(HWND, int, LONG_PTR); +} else { + alias GetWindowLongA GetWindowLongPtrA; + alias GetWindowLongW GetWindowLongPtrW; + alias SetWindowLongA SetWindowLongPtrA; + alias SetWindowLongW SetWindowLongPtrW; +} + + +// ----- +// Aliases for Unicode or Ansi +version(Unicode) { + alias EDITWORDBREAKPROCW EDITWORDBREAKPROC; + alias PROPENUMPROCW PROPENUMPROC; + alias PROPENUMPROCEXW PROPENUMPROCEX; + alias DESKTOPENUMPROCW DESKTOPENUMPROC; + alias WINSTAENUMPROCW WINSTAENUMPROC; + alias MAKEINTRESOURCEW MAKEINTRESOURCE; + + alias WNDCLASSW WNDCLASS; + alias WNDCLASSEXW WNDCLASSEX; + alias MENUITEMINFOW MENUITEMINFO; + alias LPCMENUITEMINFOW LPCMENUITEMINFO; + alias MSGBOXPARAMSW MSGBOXPARAMS; + alias HIGHCONTRASTW HIGHCONTRAST; + alias SERIALKEYSW SERIALKEYS; + alias SOUNDSENTRYW SOUNDSENTRY; + alias CREATESTRUCTW CREATESTRUCT; + alias CBT_CREATEWNDW CBT_CREATEWND; + alias MDICREATESTRUCTW MDICREATESTRUCT; + alias MULTIKEYHELPW MULTIKEYHELP; + alias MONITORINFOEXW MONITORINFOEX; + alias ICONMETRICSW ICONMETRICS; + alias NONCLIENTMETRICSW NONCLIENTMETRICS; + + alias AppendMenuW AppendMenu; + alias BroadcastSystemMessageW BroadcastSystemMessage; + static if (_WIN32_WINNT >= 0x501) { + alias BroadcastSystemMessageExW BroadcastSystemMessageEx; + } + alias CallMsgFilterW CallMsgFilter; + alias CallWindowProcW CallWindowProc; + alias ChangeMenuW ChangeMenu; + alias CharLowerW CharLower; + alias CharLowerBuffW CharLowerBuff; + alias CharNextW CharNext; + alias CharNextExW CharNextEx; + alias CharPrevW CharPrev; + alias CharPrevExW CharPrevEx; + alias CharToOemW CharToOem; + alias CharToOemBuffW CharToOemBuff; + alias CharUpperW CharUpper; + alias CharUpperBuffW CharUpperBuff; + alias CopyAcceleratorTableW CopyAcceleratorTable; + alias CreateAcceleratorTableW CreateAcceleratorTable; + alias CreateDialogW CreateDialog; + alias CreateDialogIndirectW CreateDialogIndirect; + alias CreateDialogIndirectParamW CreateDialogIndirectParam; + alias CreateDialogParamW CreateDialogParam; + alias CreateMDIWindowW CreateMDIWindow; + alias CreateWindowW CreateWindow; + alias CreateWindowExW CreateWindowEx; + alias CreateWindowStationW CreateWindowStation; + alias DefDlgProcW DefDlgProc; + alias DefFrameProcW DefFrameProc; + alias DefMDIChildProcW DefMDIChildProc; + alias DefWindowProcW DefWindowProc; + alias DialogBoxW DialogBox; + alias DialogBoxIndirectW DialogBoxIndirect; + alias DialogBoxIndirectParamW DialogBoxIndirectParam; + alias DialogBoxParamW DialogBoxParam; + alias DispatchMessageW DispatchMessage; + alias DlgDirListW DlgDirList; + alias DlgDirListComboBoxW DlgDirListComboBox; + alias DlgDirSelectComboBoxExW DlgDirSelectComboBoxEx; + alias DlgDirSelectExW DlgDirSelectEx; + alias DrawStateW DrawState; + alias DrawTextW DrawText; + alias DrawTextExW DrawTextEx; + alias EnumDesktopsW EnumDesktops; + alias EnumPropsW EnumProps; + alias EnumPropsExW EnumPropsEx; + alias EnumWindowStationsW EnumWindowStations; + alias FindWindowW FindWindow; + alias FindWindowExW FindWindowEx; + alias GetClassInfoW GetClassInfo; + alias GetClassInfoExW GetClassInfoEx; + alias GetClassLongW GetClassLong; + alias GetClassNameW GetClassName; + alias GetClipboardFormatNameW GetClipboardFormatName; + alias GetDlgItemTextW GetDlgItemText; + alias GetKeyboardLayoutNameW GetKeyboardLayoutName; + alias GetKeyNameTextW GetKeyNameText; + alias GetMenuItemInfoW GetMenuItemInfo; + alias GetMenuStringW GetMenuString; + alias GetMessageW GetMessage; + alias GetMonitorInfoW GetMonitorInfo; + alias GetPropW GetProp; + static if (_WIN32_WINNT >= 0x501) { + alias GetRawInputDeviceInfoW GetRawInputDeviceInfo; + } + alias GetTabbedTextExtentW GetTabbedTextExtent; + alias GetUserObjectInformationW GetUserObjectInformation; + alias GetWindowLongW GetWindowLong; + alias GetWindowLongPtrW GetWindowLongPtr; + alias GetWindowTextW GetWindowText; + alias GetWindowTextLengthW GetWindowTextLength; + alias GetAltTabInfoW GetAltTabInfo; + alias GetWindowModuleFileNameW GetWindowModuleFileName; + alias GrayStringW GrayString; + alias InsertMenuW InsertMenu; + alias InsertMenuItemW InsertMenuItem; + alias IsCharAlphaW IsCharAlpha; + alias IsCharAlphaNumericW IsCharAlphaNumeric; + alias IsCharLowerW IsCharLower; + alias IsCharUpperW IsCharUpper; + alias IsDialogMessageW IsDialogMessage; + alias LoadAcceleratorsW LoadAccelerators; + alias LoadBitmapW LoadBitmap; + alias LoadCursorW LoadCursor; + alias LoadCursorFromFileW LoadCursorFromFile; + alias LoadIconW LoadIcon; + alias LoadImageW LoadImage; + alias LoadKeyboardLayoutW LoadKeyboardLayout; + alias LoadMenuW LoadMenu; + alias LoadMenuIndirectW LoadMenuIndirect; + alias LoadStringW LoadString; + alias MapVirtualKeyW MapVirtualKey; + alias MapVirtualKeyExW MapVirtualKeyEx; + alias MessageBoxW MessageBox; + alias MessageBoxExW MessageBoxEx; + alias MessageBoxIndirectW MessageBoxIndirect; + alias ModifyMenuW ModifyMenu; + alias OemToCharW OemToChar; + alias OemToCharBuffW OemToCharBuff; + alias OpenDesktopW OpenDesktop; + alias OpenWindowStationW OpenWindowStation; + alias PeekMessageW PeekMessage; + alias PostMessageW PostMessage; + alias PostThreadMessageW PostThreadMessage; + alias RealGetWindowClassW RealGetWindowClass; + alias RegisterClassW RegisterClass; + alias RegisterClassExW RegisterClassEx; + alias RegisterClipboardFormatW RegisterClipboardFormat; + alias RegisterDeviceNotificationW RegisterDeviceNotification; + alias RegisterWindowMessageW RegisterWindowMessage; + alias RemovePropW RemoveProp; + alias SendDlgItemMessageW SendDlgItemMessage; + alias SendMessageW SendMessage; + alias SendMessageCallbackW SendMessageCallback; + alias SendMessageTimeoutW SendMessageTimeout; + alias SendNotifyMessageW SendNotifyMessage; + alias SetClassLongW SetClassLong; + alias SetDlgItemTextW SetDlgItemText; + alias SetMenuItemInfoW SetMenuItemInfo; + alias SetPropW SetProp; + alias SetUserObjectInformationW SetUserObjectInformation; + alias SetWindowLongW SetWindowLong; + alias SetWindowLongPtrW SetWindowLongPtr; + alias SetWindowsHookW SetWindowsHook; + alias SetWindowsHookExW SetWindowsHookEx; + alias SetWindowTextW SetWindowText; + alias SystemParametersInfoW SystemParametersInfo; + alias TabbedTextOutW TabbedTextOut; + alias TranslateAcceleratorW TranslateAccelerator; + alias UnregisterClassW UnregisterClass; + alias VkKeyScanW VkKeyScan; + alias VkKeyScanExW VkKeyScanEx; + alias WinHelpW WinHelp; + alias wsprintfW wsprintf; + alias wvsprintfW wvsprintf; + + alias ChangeDisplaySettingsW ChangeDisplaySettings; + alias ChangeDisplaySettingsExW ChangeDisplaySettingsEx; + alias CreateDesktopW CreateDesktop; + alias EnumDisplaySettingsW EnumDisplaySettings; + alias EnumDisplaySettingsExW EnumDisplaySettingsEx; + alias EnumDisplayDevicesW EnumDisplayDevices; + +} else { // ANSI + + alias EDITWORDBREAKPROCA EDITWORDBREAKPROC; + alias PROPENUMPROCA PROPENUMPROC; + alias PROPENUMPROCEXA PROPENUMPROCEX; + alias DESKTOPENUMPROCA DESKTOPENUMPROC; + alias WINSTAENUMPROCA WINSTAENUMPROC; + alias MAKEINTRESOURCEA MAKEINTRESOURCE; + + alias WNDCLASSA WNDCLASS; + alias WNDCLASSEXA WNDCLASSEX; + alias MENUITEMINFOA MENUITEMINFO; + alias LPCMENUITEMINFOA LPCMENUITEMINFO; + alias MSGBOXPARAMSA MSGBOXPARAMS; + alias HIGHCONTRASTA HIGHCONTRAST; + alias SERIALKEYSA SERIALKEYS; + alias SOUNDSENTRYA SOUNDSENTRY; + alias CREATESTRUCTA CREATESTRUCT; + alias CBT_CREATEWNDA CBT_CREATEWND; + alias MDICREATESTRUCTA MDICREATESTRUCT; + alias MULTIKEYHELPA MULTIKEYHELP; + alias MONITORINFOEXA MONITORINFOEX; + alias ICONMETRICSA ICONMETRICS; + alias NONCLIENTMETRICSA NONCLIENTMETRICS; + + alias AppendMenuA AppendMenu; + alias BroadcastSystemMessageA BroadcastSystemMessage; + static if (_WIN32_WINNT >= 0x501) { + alias BroadcastSystemMessageExA BroadcastSystemMessageEx; + } + alias CallMsgFilterA CallMsgFilter; + alias CallWindowProcA CallWindowProc; + alias ChangeMenuA ChangeMenu; + alias CharLowerA CharLower; + alias CharLowerBuffA CharLowerBuff; + alias CharNextA CharNext; + alias CharNextExA CharNextEx; + alias CharPrevA CharPrev; + alias CharPrevExA CharPrevEx; + alias CharToOemA CharToOem; + alias CharToOemBuffA CharToOemBuff; + alias CharUpperA CharUpper; + alias CharUpperBuffA CharUpperBuff; + alias CopyAcceleratorTableA CopyAcceleratorTable; + alias CreateAcceleratorTableA CreateAcceleratorTable; + alias CreateDialogA CreateDialog; + alias CreateDialogIndirectA CreateDialogIndirect; + alias CreateDialogIndirectParamA CreateDialogIndirectParam; + alias CreateDialogParamA CreateDialogParam; + alias CreateMDIWindowA CreateMDIWindow; + alias CreateWindowA CreateWindow; + alias CreateWindowExA CreateWindowEx; + alias CreateWindowStationA CreateWindowStation; + alias DefDlgProcA DefDlgProc; + alias DefFrameProcA DefFrameProc; + alias DefMDIChildProcA DefMDIChildProc; + alias DefWindowProcA DefWindowProc; + alias DialogBoxA DialogBox; + alias DialogBoxIndirectA DialogBoxIndirect; + alias DialogBoxIndirectParamA DialogBoxIndirectParam; + alias DialogBoxParamA DialogBoxParam; + alias DispatchMessageA DispatchMessage; + alias DlgDirListA DlgDirList; + alias DlgDirListComboBoxA DlgDirListComboBox; + alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx; + alias DlgDirSelectExA DlgDirSelectEx; + alias DrawStateA DrawState; + alias DrawTextA DrawText; + alias DrawTextExA DrawTextEx; + alias EnumDesktopsA EnumDesktops; + alias EnumPropsA EnumProps; + alias EnumPropsExA EnumPropsEx; + alias EnumWindowStationsA EnumWindowStations; + alias FindWindowA FindWindow; + alias FindWindowExA FindWindowEx; + alias GetClassInfoA GetClassInfo; + alias GetClassInfoExA GetClassInfoEx; + alias GetClassLongA GetClassLong; + alias GetClassNameA GetClassName; + alias GetClipboardFormatNameA GetClipboardFormatName; + alias GetDlgItemTextA GetDlgItemText; + alias GetKeyboardLayoutNameA GetKeyboardLayoutName; + alias GetKeyNameTextA GetKeyNameText; + alias GetMenuItemInfoA GetMenuItemInfo; + alias GetMenuStringA GetMenuString; + alias GetMessageA GetMessage; + alias GetMonitorInfoA GetMonitorInfo; + alias GetPropA GetProp; + static if (_WIN32_WINNT >= 0x501) { + alias GetRawInputDeviceInfoA GetRawInputDeviceInfo; + } + alias GetTabbedTextExtentA GetTabbedTextExtent; + alias GetUserObjectInformationA GetUserObjectInformation; + alias GetWindowLongA GetWindowLong; + alias GetWindowLongPtrA GetWindowLongPtr; + alias GetWindowTextA GetWindowText; + alias GetWindowTextLengthA GetWindowTextLength; + alias GetAltTabInfoA GetAltTabInfo; + alias GetWindowModuleFileNameA GetWindowModuleFileName; + alias GrayStringA GrayString; + alias InsertMenuA InsertMenu; + alias InsertMenuItemA InsertMenuItem; + alias IsCharAlphaA IsCharAlpha; + alias IsCharAlphaNumericA IsCharAlphaNumeric; + alias IsCharLowerA IsCharLower; + alias IsCharUpperA IsCharUpper; + alias IsDialogMessageA IsDialogMessage; + alias LoadAcceleratorsA LoadAccelerators; + alias LoadBitmapA LoadBitmap; + alias LoadCursorA LoadCursor; + alias LoadIconA LoadIcon; + alias LoadCursorFromFileA LoadCursorFromFile; + alias LoadImageA LoadImage; + alias LoadKeyboardLayoutA LoadKeyboardLayout; + alias LoadMenuA LoadMenu; + alias LoadMenuIndirectA LoadMenuIndirect; + alias LoadStringA LoadString; + alias MapVirtualKeyA MapVirtualKey; + alias MapVirtualKeyExA MapVirtualKeyEx; + alias MessageBoxA MessageBox; + alias MessageBoxExA MessageBoxEx; + alias MessageBoxIndirectA MessageBoxIndirect; + alias ModifyMenuA ModifyMenu; + alias OemToCharA OemToChar; + alias OemToCharBuffA OemToCharBuff; + alias OpenDesktopA OpenDesktop; + alias OpenWindowStationA OpenWindowStation; + alias PeekMessageA PeekMessage; + alias PostMessageA PostMessage; + alias PostThreadMessageA PostThreadMessage; + alias RealGetWindowClassA RealGetWindowClass; + alias RegisterClassA RegisterClass; + alias RegisterClassExA RegisterClassEx; + alias RegisterClipboardFormatA RegisterClipboardFormat; + alias RegisterDeviceNotificationA RegisterDeviceNotification; + alias RegisterWindowMessageA RegisterWindowMessage; + alias RemovePropA RemoveProp; + alias SendDlgItemMessageA SendDlgItemMessage; + alias SendMessageA SendMessage; + alias SendMessageCallbackA SendMessageCallback; + alias SendMessageTimeoutA SendMessageTimeout; + alias SendNotifyMessageA SendNotifyMessage; + alias SetClassLongA SetClassLong; + alias SetDlgItemTextA SetDlgItemText; + alias SetMenuItemInfoA SetMenuItemInfo; + alias SetPropA SetProp; + alias SetUserObjectInformationA SetUserObjectInformation; + alias SetWindowLongA SetWindowLong; + alias SetWindowLongPtrA SetWindowLongPtr; + alias SetWindowsHookA SetWindowsHook; + alias SetWindowsHookExA SetWindowsHookEx; + alias SetWindowTextA SetWindowText; + alias SystemParametersInfoA SystemParametersInfo; + alias TabbedTextOutA TabbedTextOut; + alias TranslateAcceleratorA TranslateAccelerator; + alias UnregisterClassA UnregisterClass; + alias VkKeyScanA VkKeyScan; + alias VkKeyScanExA VkKeyScanEx; + alias WinHelpA WinHelp; + alias wsprintfA wsprintf; + alias wvsprintfA wvsprintf; + + alias ChangeDisplaySettingsA ChangeDisplaySettings; + alias ChangeDisplaySettingsExA ChangeDisplaySettingsEx; + alias CreateDesktopA CreateDesktop; + alias EnumDisplaySettingsA EnumDisplaySettings; + alias EnumDisplaySettingsExA EnumDisplaySettingsEx; + alias EnumDisplayDevicesA EnumDisplayDevices; +} + +alias WNDCLASS* LPWNDCLASS, PWNDCLASS; +alias WNDCLASSEX* LPWNDCLASSEX, PWNDCLASSEX; +alias MENUITEMINFO* LPMENUITEMINFO; +alias MSGBOXPARAMS* PMSGBOXPARAMS, LPMSGBOXPARAMS; +alias HIGHCONTRAST* LPHIGHCONTRAST; +alias SERIALKEYS* LPSERIALKEYS; +alias SOUNDSENTRY* LPSOUNDSENTRY; +alias CREATESTRUCT* LPCREATESTRUCT; +alias CBT_CREATEWND* LPCBT_CREATEWND; +alias MDICREATESTRUCT* LPMDICREATESTRUCT; +alias MULTIKEYHELP* PMULTIKEYHELP, LPMULTIKEYHELP; +alias MONITORINFOEX* LPMONITORINFOEX; +alias ICONMETRICS* LPICONMETRICS; +alias NONCLIENTMETRICS* LPNONCLIENTMETRICS; + +static if (_WIN32_WINNT >= 0x501) { + enum PW_CLIENTONLY = 0x00000001; + enum RIM_INPUT = 0x00000000; + enum RIM_INPUTSINK = 0x00000001; + enum RIM_TYPEMOUSE = 0x00000000; + enum RIM_TYPEKEYBOARD = 0x00000001; + enum RIM_TYPEHID = 0x00000002; + enum MOUSE_MOVE_RELATIVE = 0x00000000; + enum MOUSE_MOVE_ABSOLUTE = 0x00000001; + enum MOUSE_VIRTUAL_DESKTOP = 0x00000002; + enum MOUSE_ATTRIBUTES_CHANGED = 0x00000004; + enum RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001; + enum RI_MOUSE_LEFT_BUTTON_UP = 0x0002; + enum RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004; + enum RI_MOUSE_RIGHT_BUTTON_UP = 0x0008; + enum RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010; + enum RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020; + enum RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN; + enum RI_MOUSE_BUTTON_1_UP = RI_MOUSE_LEFT_BUTTON_UP; + enum RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN; + enum RI_MOUSE_BUTTON_2_UP = RI_MOUSE_RIGHT_BUTTON_UP; + enum RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN; + enum RI_MOUSE_BUTTON_3_UP = RI_MOUSE_MIDDLE_BUTTON_UP; + enum RI_MOUSE_BUTTON_4_DOWN = 0x0040; + enum RI_MOUSE_BUTTON_4_UP = 0x0080; + enum RI_MOUSE_BUTTON_5_DOWN = 0x0100; + enum RI_MOUSE_BUTTON_5_UP = 0x0200; + enum RI_MOUSE_WHEEL = 0x0400; + enum KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff; + enum RI_KEY_MAKE = 0x0000; + enum RI_KEY_BREAK = 0x0001; + enum RI_KEY_E0 = 0x0002; + enum RI_KEY_E1 = 0x0004; + enum RI_KEY_TERMSRV_SET_LED = 0x0008; + enum RI_KEY_TERMSRV_SHADOW = 0x0010; + + enum RID_INPUT = 0x10000003; + enum RID_HEADER = 0x10000005; + + enum RIDI_PREPARSEDDATA = 0x20000005; + enum RIDI_DEVICENAME = 0x20000007; + enum RIDI_DEVICEINFO = 0x2000000b; + + enum RIDEV_REMOVE = 0x00000001; + enum RIDEV_EXCLUDE = 0x00000010; + enum RIDEV_PAGEONLY = 0x00000020; + enum RIDEV_NOLEGACY = 0x00000030; + enum RIDEV_INPUTSINK = 0x00000100; + enum RIDEV_CAPTUREMOUSE = 0x00000200; + enum RIDEV_NOHOTKEYS = 0x00000200; + enum RIDEV_APPKEYS = 0x00000400; +} diff --git a/src/core/sys/windows/winver.d b/src/core/sys/windows/winver.d index 8b43d3342b..f21830788c 100644 --- a/src/core/sys/windows/winver.d +++ b/src/core/sys/windows/winver.d @@ -1,171 +1,171 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * Authors: Stewart Gordon - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_winver.d) - */ -module core.sys.windows.winver; -pragma(lib, "version"); - -private import core.sys.windows.windef; - -// FIXME: type weirdness -enum { - VS_FILE_INFO = 16, - VS_VERSION_INFO = 1, - VS_USER_DEFINED = 100 -} - -enum { - VS_FFI_SIGNATURE = 0xFEEF04BD, - VS_FFI_STRUCVERSION = 0x10000, - VS_FFI_FILEFLAGSMASK = 0x3F -} - -enum { - VS_FF_DEBUG = 1, - VS_FF_PRERELEASE = 2, - VS_FF_PATCHED = 4, - VS_FF_PRIVATEBUILD = 8, - VS_FF_INFOINFERRED = 16, - VS_FF_SPECIALBUILD = 32 -} - -enum { - VOS_UNKNOWN = 0, - VOS_DOS = 0x10000, - VOS_OS216 = 0x20000, - VOS_OS232 = 0x30000, - VOS_NT = 0x40000, - VOS__BASE = 0, - VOS__WINDOWS16 = 1, - VOS__PM16 = 2, - VOS__PM32 = 3, - VOS__WINDOWS32 = 4, - VOS_DOS_WINDOWS16 = 0x10001, - VOS_DOS_WINDOWS32 = 0x10004, - VOS_OS216_PM16 = 0x20002, - VOS_OS232_PM32 = 0x30003, - VOS_NT_WINDOWS32 = 0x40004 -} - -enum { - VFT_UNKNOWN = 0, - VFT_APP = 1, - VFT_DLL = 2, - VFT_DRV = 3, - VFT_FONT = 4, - VFT_VXD = 5, - VFT_STATIC_LIB = 7 -} - -enum { - VFT2_UNKNOWN = 0, - VFT2_DRV_PRINTER = 1, - VFT2_DRV_KEYBOARD = 2, - VFT2_DRV_LANGUAGE = 3, - VFT2_DRV_DISPLAY = 4, - VFT2_DRV_MOUSE = 5, - VFT2_DRV_NETWORK = 6, - VFT2_DRV_SYSTEM = 7, - VFT2_DRV_INSTALLABLE = 8, - VFT2_DRV_SOUND = 9, - VFT2_DRV_COMM = 10, - VFT2_DRV_INPUTMETHOD = 11, - VFT2_FONT_RASTER = 1, - VFT2_FONT_VECTOR = 2, - VFT2_FONT_TRUETYPE = 3 -} - -enum : DWORD { - VFFF_ISSHAREDFILE = 1 -} - -enum : DWORD { - VFF_CURNEDEST = 1, - VFF_FILEINUSE = 2, - VFF_BUFFTOOSMALL = 4 -} - -enum : DWORD { - VIFF_FORCEINSTALL = 1, - VIFF_DONTDELETEOLD -} - -enum { - VIF_TEMPFILE = 0x00001, - VIF_MISMATCH = 0x00002, - VIF_SRCOLD = 0x00004, - VIF_DIFFLANG = 0x00008, - VIF_DIFFCODEPG = 0x00010, - VIF_DIFFTYPE = 0x00020, - VIF_WRITEPROT = 0x00040, - VIF_FILEINUSE = 0x00080, - VIF_OUTOFSPACE = 0x00100, - VIF_ACCESSVIOLATION = 0x00200, - VIF_SHARINGVIOLATION = 0x00400, - VIF_CANNOTCREATE = 0x00800, - VIF_CANNOTDELETE = 0x01000, - VIF_CANNOTRENAME = 0x02000, - VIF_CANNOTDELETECUR = 0x04000, - VIF_OUTOFMEMORY = 0x08000, - VIF_CANNOTREADSRC = 0x10000, - VIF_CANNOTREADDST = 0x20000, - VIF_BUFFTOOSMALL = 0x40000 -} - -struct VS_FIXEDFILEINFO { - DWORD dwSignature; - DWORD dwStrucVersion; - DWORD dwFileVersionMS; - DWORD dwFileVersionLS; - DWORD dwProductVersionMS; - DWORD dwProductVersionLS; - DWORD dwFileFlagsMask; - DWORD dwFileFlags; - DWORD dwFileOS; - DWORD dwFileType; - DWORD dwFileSubtype; - DWORD dwFileDateMS; - DWORD dwFileDateLS; -} - -extern (Windows) { - DWORD VerFindFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, - PUINT); - DWORD VerFindFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, - PUINT); - DWORD VerInstallFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, - PUINT); - DWORD VerInstallFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, - LPWSTR, PUINT); - DWORD GetFileVersionInfoSizeA(LPCSTR, PDWORD); - DWORD GetFileVersionInfoSizeW(LPCWSTR, PDWORD); - BOOL GetFileVersionInfoA(LPCSTR, DWORD, DWORD, PVOID); - BOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, PVOID); - DWORD VerLanguageNameA(DWORD, LPSTR, DWORD); - DWORD VerLanguageNameW(DWORD, LPWSTR, DWORD); - BOOL VerQueryValueA(LPCVOID, LPCSTR, LPVOID*, PUINT); - BOOL VerQueryValueW(LPCVOID, LPCWSTR, LPVOID*, PUINT); -} - -version (Unicode) { - alias VerFindFileW VerFindFile; - alias VerQueryValueW VerQueryValue; - alias VerInstallFileW VerInstallFile; - alias GetFileVersionInfoSizeW GetFileVersionInfoSize; - alias GetFileVersionInfoW GetFileVersionInfo; - alias VerLanguageNameW VerLanguageName; - alias VerQueryValueW VerQueryValue; -} else { - alias VerQueryValueA VerQueryValue; - alias VerFindFileA VerFindFile; - alias VerInstallFileA VerInstallFile; - alias GetFileVersionInfoSizeA GetFileVersionInfoSize; - alias GetFileVersionInfoA GetFileVersionInfo; - alias VerLanguageNameA VerLanguageName; - alias VerQueryValueA VerQueryValue; -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * Authors: Stewart Gordon + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_winver.d) + */ +module core.sys.windows.winver; +pragma(lib, "version"); + +private import core.sys.windows.windef; + +// FIXME: type weirdness +enum { + VS_FILE_INFO = 16, + VS_VERSION_INFO = 1, + VS_USER_DEFINED = 100 +} + +enum { + VS_FFI_SIGNATURE = 0xFEEF04BD, + VS_FFI_STRUCVERSION = 0x10000, + VS_FFI_FILEFLAGSMASK = 0x3F +} + +enum { + VS_FF_DEBUG = 1, + VS_FF_PRERELEASE = 2, + VS_FF_PATCHED = 4, + VS_FF_PRIVATEBUILD = 8, + VS_FF_INFOINFERRED = 16, + VS_FF_SPECIALBUILD = 32 +} + +enum { + VOS_UNKNOWN = 0, + VOS_DOS = 0x10000, + VOS_OS216 = 0x20000, + VOS_OS232 = 0x30000, + VOS_NT = 0x40000, + VOS__BASE = 0, + VOS__WINDOWS16 = 1, + VOS__PM16 = 2, + VOS__PM32 = 3, + VOS__WINDOWS32 = 4, + VOS_DOS_WINDOWS16 = 0x10001, + VOS_DOS_WINDOWS32 = 0x10004, + VOS_OS216_PM16 = 0x20002, + VOS_OS232_PM32 = 0x30003, + VOS_NT_WINDOWS32 = 0x40004 +} + +enum { + VFT_UNKNOWN = 0, + VFT_APP = 1, + VFT_DLL = 2, + VFT_DRV = 3, + VFT_FONT = 4, + VFT_VXD = 5, + VFT_STATIC_LIB = 7 +} + +enum { + VFT2_UNKNOWN = 0, + VFT2_DRV_PRINTER = 1, + VFT2_DRV_KEYBOARD = 2, + VFT2_DRV_LANGUAGE = 3, + VFT2_DRV_DISPLAY = 4, + VFT2_DRV_MOUSE = 5, + VFT2_DRV_NETWORK = 6, + VFT2_DRV_SYSTEM = 7, + VFT2_DRV_INSTALLABLE = 8, + VFT2_DRV_SOUND = 9, + VFT2_DRV_COMM = 10, + VFT2_DRV_INPUTMETHOD = 11, + VFT2_FONT_RASTER = 1, + VFT2_FONT_VECTOR = 2, + VFT2_FONT_TRUETYPE = 3 +} + +enum : DWORD { + VFFF_ISSHAREDFILE = 1 +} + +enum : DWORD { + VFF_CURNEDEST = 1, + VFF_FILEINUSE = 2, + VFF_BUFFTOOSMALL = 4 +} + +enum : DWORD { + VIFF_FORCEINSTALL = 1, + VIFF_DONTDELETEOLD +} + +enum { + VIF_TEMPFILE = 0x00001, + VIF_MISMATCH = 0x00002, + VIF_SRCOLD = 0x00004, + VIF_DIFFLANG = 0x00008, + VIF_DIFFCODEPG = 0x00010, + VIF_DIFFTYPE = 0x00020, + VIF_WRITEPROT = 0x00040, + VIF_FILEINUSE = 0x00080, + VIF_OUTOFSPACE = 0x00100, + VIF_ACCESSVIOLATION = 0x00200, + VIF_SHARINGVIOLATION = 0x00400, + VIF_CANNOTCREATE = 0x00800, + VIF_CANNOTDELETE = 0x01000, + VIF_CANNOTRENAME = 0x02000, + VIF_CANNOTDELETECUR = 0x04000, + VIF_OUTOFMEMORY = 0x08000, + VIF_CANNOTREADSRC = 0x10000, + VIF_CANNOTREADDST = 0x20000, + VIF_BUFFTOOSMALL = 0x40000 +} + +struct VS_FIXEDFILEINFO { + DWORD dwSignature; + DWORD dwStrucVersion; + DWORD dwFileVersionMS; + DWORD dwFileVersionLS; + DWORD dwProductVersionMS; + DWORD dwProductVersionLS; + DWORD dwFileFlagsMask; + DWORD dwFileFlags; + DWORD dwFileOS; + DWORD dwFileType; + DWORD dwFileSubtype; + DWORD dwFileDateMS; + DWORD dwFileDateLS; +} + +extern (Windows) { + DWORD VerFindFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, + PUINT); + DWORD VerFindFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, + PUINT); + DWORD VerInstallFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, + PUINT); + DWORD VerInstallFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, + LPWSTR, PUINT); + DWORD GetFileVersionInfoSizeA(LPCSTR, PDWORD); + DWORD GetFileVersionInfoSizeW(LPCWSTR, PDWORD); + BOOL GetFileVersionInfoA(LPCSTR, DWORD, DWORD, PVOID); + BOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, PVOID); + DWORD VerLanguageNameA(DWORD, LPSTR, DWORD); + DWORD VerLanguageNameW(DWORD, LPWSTR, DWORD); + BOOL VerQueryValueA(LPCVOID, LPCSTR, LPVOID*, PUINT); + BOOL VerQueryValueW(LPCVOID, LPCWSTR, LPVOID*, PUINT); +} + +version (Unicode) { + alias VerFindFileW VerFindFile; + alias VerQueryValueW VerQueryValue; + alias VerInstallFileW VerInstallFile; + alias GetFileVersionInfoSizeW GetFileVersionInfoSize; + alias GetFileVersionInfoW GetFileVersionInfo; + alias VerLanguageNameW VerLanguageName; + alias VerQueryValueW VerQueryValue; +} else { + alias VerQueryValueA VerQueryValue; + alias VerFindFileA VerFindFile; + alias VerInstallFileA VerInstallFile; + alias GetFileVersionInfoSizeA GetFileVersionInfoSize; + alias GetFileVersionInfoA GetFileVersionInfo; + alias VerLanguageNameA VerLanguageName; + alias VerQueryValueA VerQueryValue; +} diff --git a/src/core/sys/windows/ws2tcpip.d b/src/core/sys/windows/ws2tcpip.d index 45438f6450..9d084f87a5 100644 --- a/src/core/sys/windows/ws2tcpip.d +++ b/src/core/sys/windows/ws2tcpip.d @@ -1,280 +1,280 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ws2tcpip.d) - */ - -module core.sys.windows.ws2tcpip; - -import core.sys.windows.w32api; -//import core.sys.windows.winbase; -import core.sys.windows.windef; -//import core.sys.windows.basetyps; -import core.sys.windows.winsock2; - -enum { - IP_OPTIONS = 1, - - IP_HDRINCL = 2, - IP_TOS = 3, - IP_TTL = 4, - IP_MULTICAST_IF = 9, - IP_MULTICAST_TTL = 10, - IP_MULTICAST_LOOP = 11, - IP_ADD_MEMBERSHIP = 12, - IP_DROP_MEMBERSHIP = 13, - IP_DONTFRAGMENT = 14, - IP_ADD_SOURCE_MEMBERSHIP = 15, - IP_DROP_SOURCE_MEMBERSHIP = 16, - IP_BLOCK_SOURCE = 17, - IP_UNBLOCK_SOURCE = 18, - IP_PKTINFO = 19 -} - -enum { - IPV6_UNICAST_HOPS = 4, - IPV6_MULTICAST_IF = 9, - IPV6_MULTICAST_HOPS = 10, - IPV6_MULTICAST_LOOP = 11, - IPV6_ADD_MEMBERSHIP = 12, - IPV6_DROP_MEMBERSHIP = 13, - IPV6_JOIN_GROUP = IPV6_ADD_MEMBERSHIP, - IPV6_LEAVE_GROUP = IPV6_DROP_MEMBERSHIP, - IPV6_PKTINFO = 19 -} - -const IP_DEFAULT_MULTICAST_TTL = 1; -const IP_DEFAULT_MULTICAST_LOOP = 1; -const IP_MAX_MEMBERSHIPS = 20; - -const TCP_EXPEDITED_1122 = 2; - -const UDP_NOCHECKSUM = 1; - -enum { - IFF_UP = 1, - IFF_BROADCAST = 2, - IFF_LOOPBACK = 4, - IFF_POINTTOPOINT = 8, - IFF_MULTICAST = 16 -} - -const SIO_GET_INTERFACE_LIST = _IOR!('t', 127, u_long); - -const INET_ADDRSTRLEN = 16; -const INET6_ADDRSTRLEN = 46; - -const NI_MAXHOST = 1025; -const NI_MAXSERV = 32; - -const NI_NOFQDN = 0x01; -const NI_NUMERICHOST = 0x02; -const NI_NAMEREQD = 0x04; -const NI_NUMERICSERV = 0x08; -const NI_DGRAM = 0x10; - -const AI_PASSIVE = 1; -const AI_CANONNAME = 2; -const AI_NUMERICHOST = 4; - -const EAI_AGAIN = WSATRY_AGAIN; -const EAI_BADFLAGS = WSAEINVAL; -const EAI_FAIL = WSANO_RECOVERY; -const EAI_FAMILY = WSAEAFNOSUPPORT; -const EAI_MEMORY = WSA_NOT_ENOUGH_MEMORY; -const EAI_NODATA = WSANO_DATA; -const EAI_NONAME = WSAHOST_NOT_FOUND; -const EAI_SERVICE = WSATYPE_NOT_FOUND; -const EAI_SOCKTYPE = WSAESOCKTNOSUPPORT; - -struct ip_mreq { - IN_ADDR imr_multiaddr; - IN_ADDR imr_interface; -} - -struct ip_mreq_source { - IN_ADDR imr_multiaddr; - IN_ADDR imr_sourceaddr; - IN_ADDR imr_interface; -} - -struct ip_msfilter { - IN_ADDR imsf_multiaddr; - IN_ADDR imsf_interface; - u_long imsf_fmode; - u_long imsf_numsrc; - IN_ADDR[1] imsf_slist; -} - -template IP_MSFILTER_SIZE(ULONG numsrc) { - const DWORD IP_MSFILTER_SIZE = ip_msfilter.sizeof - IN_ADDR.sizeof + numsrc * IN_ADDR.sizeof; -} - -struct IN_PKTINFO { - IN_ADDR ipi_addr; - UINT ipi_ifindex; -} - -struct IN6_ADDR { - union { - u_char[16] _S6_u8; - u_short[8] _S6_u16; - u_long[4] _S6_u32; - } -} -alias IN6_ADDR* PIN6_ADDR, LPIN6_ADDR; - -struct SOCKADDR_IN6 { - short sin6_family; - u_short sin6_port; - u_long sin6_flowinfo; - IN6_ADDR sin6_addr; - u_long sin6_scope_id; -}; -alias SOCKADDR_IN6* PSOCKADDR_IN6, LPSOCKADDR_IN6; - -extern IN6_ADDR in6addr_any; -extern IN6_ADDR in6addr_loopback; - -/+ TODO: -#define IN6_ARE_ADDR_EQUAL(a, b) \ - (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0) - -#define IN6_IS_ADDR_UNSPECIFIED(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] == 0)) - -#define IN6_IS_ADDR_LOOPBACK(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] == 0x01000000)) - -#define IN6_IS_ADDR_MULTICAST(_addr) (((const u_char *) (_addr))[0] == 0xff) - -#define IN6_IS_ADDR_LINKLOCAL(_addr) \ - ( (((const u_char *)(_addr))[0] == 0xfe) \ - && ((((const u_char *)(_addr))[1] & 0xc0) == 0x80)) - -#define IN6_IS_ADDR_SITELOCAL(_addr) \ - ( (((const u_char *)(_addr))[0] == 0xfe) \ - && ((((const u_char *)(_addr))[1] & 0xc0) == 0xc0)) - -#define IN6_IS_ADDR_V4MAPPED(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0xffff0000)) - -#define IN6_IS_ADDR_V4COMPAT(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] != 0) \ - && (((const u_long *)(_addr))[3] != 0x01000000)) - -#define IN6_IS_ADDR_MC_NODELOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) - -#define IN6_IS_ADDR_MC_LINKLOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST (_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x2)) - -#define IN6_IS_ADDR_MC_SITELOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x5)) - -#define IN6_IS_ADDR_MC_ORGLOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x8)) - -#define IN6_IS_ADDR_MC_GLOBAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0xe)) -+/ - -alias int socklen_t; - -struct IPV6_MREG { - IN6_ADDR ipv6mr_multiaddr; - uint ipv6mr_interface; -} - -struct IN6_PKTINFO { - IN6_ADDR ipi6_addr; - UINT ipi6_ifindex; -} - -struct addrinfo { - int ai_flags; - int ai_family; - int ai_socktype; - int ai_protocol; - size_t ai_addrlen; - char* ai_canonname; - SOCKADDR* ai_addr; - addrinfo* ai_next; -} - -extern(Windows) { - static if (_WIN32_WINNT >= 0x501) { - void freeaddrinfo(addrinfo*); - int getaddrinfo (const(char)*, const(char)*, const(addrinfo)*, addrinfo**); - int getnameinfo(const(SOCKADDR)*, socklen_t, char*, DWORD, char*, DWORD, int); - } -} - -/+ TODO -static __inline char* -gai_strerrorA(int ecode) -{ - static char[1024+1] message; - DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS - | FORMAT_MESSAGE_MAX_WIDTH_MASK; - DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); - FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL); - return message; -} -static __inline WCHAR* -gai_strerrorW(int ecode) -{ - static WCHAR[1024+1] message; - DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS - | FORMAT_MESSAGE_MAX_WIDTH_MASK; - DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); - FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL); - return message; -} -#ifdef UNICODE -#define gai_strerror gai_strerrorW -#else -#define gai_strerror gai_strerrorA -#endif -+/ - -extern(Windows) { - INT getnameinfo(SOCKADDR* pSockaddr, socklen_t SockaddrLength, - PCHAR pNodeBuffer, DWORD NodeBufferSize, PCHAR pServiceBuffer, - DWORD ServiceBufferSize, INT Flags); - - static if (_WIN32_WINNT >= 0x502) { - INT GetNameInfoW(SOCKADDR* pSockaddr, socklen_t SockaddrLength, - PWCHAR pNodeBuffer, DWORD NodeBufferSize, PWCHAR pServiceBuffer, - DWORD ServiceBufferSize, INT Flags); - - alias getnameinfo GetNameInfoA; - - version(Unicode) { - alias GetNameInfoW GetNameInfo; - } else { - alias GetNameInfoA GetNameInfo; - } - } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_ws2tcpip.d) + */ + +module core.sys.windows.ws2tcpip; + +import core.sys.windows.w32api; +//import core.sys.windows.winbase; +import core.sys.windows.windef; +//import core.sys.windows.basetyps; +import core.sys.windows.winsock2; + +enum { + IP_OPTIONS = 1, + + IP_HDRINCL = 2, + IP_TOS = 3, + IP_TTL = 4, + IP_MULTICAST_IF = 9, + IP_MULTICAST_TTL = 10, + IP_MULTICAST_LOOP = 11, + IP_ADD_MEMBERSHIP = 12, + IP_DROP_MEMBERSHIP = 13, + IP_DONTFRAGMENT = 14, + IP_ADD_SOURCE_MEMBERSHIP = 15, + IP_DROP_SOURCE_MEMBERSHIP = 16, + IP_BLOCK_SOURCE = 17, + IP_UNBLOCK_SOURCE = 18, + IP_PKTINFO = 19 +} + +enum { + IPV6_UNICAST_HOPS = 4, + IPV6_MULTICAST_IF = 9, + IPV6_MULTICAST_HOPS = 10, + IPV6_MULTICAST_LOOP = 11, + IPV6_ADD_MEMBERSHIP = 12, + IPV6_DROP_MEMBERSHIP = 13, + IPV6_JOIN_GROUP = IPV6_ADD_MEMBERSHIP, + IPV6_LEAVE_GROUP = IPV6_DROP_MEMBERSHIP, + IPV6_PKTINFO = 19 +} + +const IP_DEFAULT_MULTICAST_TTL = 1; +const IP_DEFAULT_MULTICAST_LOOP = 1; +const IP_MAX_MEMBERSHIPS = 20; + +const TCP_EXPEDITED_1122 = 2; + +const UDP_NOCHECKSUM = 1; + +enum { + IFF_UP = 1, + IFF_BROADCAST = 2, + IFF_LOOPBACK = 4, + IFF_POINTTOPOINT = 8, + IFF_MULTICAST = 16 +} + +const SIO_GET_INTERFACE_LIST = _IOR!('t', 127, u_long); + +const INET_ADDRSTRLEN = 16; +const INET6_ADDRSTRLEN = 46; + +const NI_MAXHOST = 1025; +const NI_MAXSERV = 32; + +const NI_NOFQDN = 0x01; +const NI_NUMERICHOST = 0x02; +const NI_NAMEREQD = 0x04; +const NI_NUMERICSERV = 0x08; +const NI_DGRAM = 0x10; + +const AI_PASSIVE = 1; +const AI_CANONNAME = 2; +const AI_NUMERICHOST = 4; + +const EAI_AGAIN = WSATRY_AGAIN; +const EAI_BADFLAGS = WSAEINVAL; +const EAI_FAIL = WSANO_RECOVERY; +const EAI_FAMILY = WSAEAFNOSUPPORT; +const EAI_MEMORY = WSA_NOT_ENOUGH_MEMORY; +const EAI_NODATA = WSANO_DATA; +const EAI_NONAME = WSAHOST_NOT_FOUND; +const EAI_SERVICE = WSATYPE_NOT_FOUND; +const EAI_SOCKTYPE = WSAESOCKTNOSUPPORT; + +struct ip_mreq { + IN_ADDR imr_multiaddr; + IN_ADDR imr_interface; +} + +struct ip_mreq_source { + IN_ADDR imr_multiaddr; + IN_ADDR imr_sourceaddr; + IN_ADDR imr_interface; +} + +struct ip_msfilter { + IN_ADDR imsf_multiaddr; + IN_ADDR imsf_interface; + u_long imsf_fmode; + u_long imsf_numsrc; + IN_ADDR[1] imsf_slist; +} + +template IP_MSFILTER_SIZE(ULONG numsrc) { + const DWORD IP_MSFILTER_SIZE = ip_msfilter.sizeof - IN_ADDR.sizeof + numsrc * IN_ADDR.sizeof; +} + +struct IN_PKTINFO { + IN_ADDR ipi_addr; + UINT ipi_ifindex; +} + +struct IN6_ADDR { + union { + u_char[16] _S6_u8; + u_short[8] _S6_u16; + u_long[4] _S6_u32; + } +} +alias IN6_ADDR* PIN6_ADDR, LPIN6_ADDR; + +struct SOCKADDR_IN6 { + short sin6_family; + u_short sin6_port; + u_long sin6_flowinfo; + IN6_ADDR sin6_addr; + u_long sin6_scope_id; +}; +alias SOCKADDR_IN6* PSOCKADDR_IN6, LPSOCKADDR_IN6; + +extern IN6_ADDR in6addr_any; +extern IN6_ADDR in6addr_loopback; + +/+ TODO: +#define IN6_ARE_ADDR_EQUAL(a, b) \ + (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0) + +#define IN6_IS_ADDR_UNSPECIFIED(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] == 0)) + +#define IN6_IS_ADDR_LOOPBACK(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] == 0x01000000)) + +#define IN6_IS_ADDR_MULTICAST(_addr) (((const u_char *) (_addr))[0] == 0xff) + +#define IN6_IS_ADDR_LINKLOCAL(_addr) \ + ( (((const u_char *)(_addr))[0] == 0xfe) \ + && ((((const u_char *)(_addr))[1] & 0xc0) == 0x80)) + +#define IN6_IS_ADDR_SITELOCAL(_addr) \ + ( (((const u_char *)(_addr))[0] == 0xfe) \ + && ((((const u_char *)(_addr))[1] & 0xc0) == 0xc0)) + +#define IN6_IS_ADDR_V4MAPPED(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0xffff0000)) + +#define IN6_IS_ADDR_V4COMPAT(_addr) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] != 0) \ + && (((const u_long *)(_addr))[3] != 0x01000000)) + +#define IN6_IS_ADDR_MC_NODELOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) + +#define IN6_IS_ADDR_MC_LINKLOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST (_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x2)) + +#define IN6_IS_ADDR_MC_SITELOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x5)) + +#define IN6_IS_ADDR_MC_ORGLOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x8)) + +#define IN6_IS_ADDR_MC_GLOBAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0xe)) ++/ + +alias int socklen_t; + +struct IPV6_MREG { + IN6_ADDR ipv6mr_multiaddr; + uint ipv6mr_interface; +} + +struct IN6_PKTINFO { + IN6_ADDR ipi6_addr; + UINT ipi6_ifindex; +} + +struct addrinfo { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + char* ai_canonname; + SOCKADDR* ai_addr; + addrinfo* ai_next; +} + +extern(Windows) { + static if (_WIN32_WINNT >= 0x501) { + void freeaddrinfo(addrinfo*); + int getaddrinfo (const(char)*, const(char)*, const(addrinfo)*, addrinfo**); + int getnameinfo(const(SOCKADDR)*, socklen_t, char*, DWORD, char*, DWORD, int); + } +} + +/+ TODO +static __inline char* +gai_strerrorA(int ecode) +{ + static char[1024+1] message; + DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS + | FORMAT_MESSAGE_MAX_WIDTH_MASK; + DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); + FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL); + return message; +} +static __inline WCHAR* +gai_strerrorW(int ecode) +{ + static WCHAR[1024+1] message; + DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS + | FORMAT_MESSAGE_MAX_WIDTH_MASK; + DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); + FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL); + return message; +} +#ifdef UNICODE +#define gai_strerror gai_strerrorW +#else +#define gai_strerror gai_strerrorA +#endif ++/ + +extern(Windows) { + INT getnameinfo(SOCKADDR* pSockaddr, socklen_t SockaddrLength, + PCHAR pNodeBuffer, DWORD NodeBufferSize, PCHAR pServiceBuffer, + DWORD ServiceBufferSize, INT Flags); + + static if (_WIN32_WINNT >= 0x502) { + INT GetNameInfoW(SOCKADDR* pSockaddr, socklen_t SockaddrLength, + PWCHAR pNodeBuffer, DWORD NodeBufferSize, PWCHAR pServiceBuffer, + DWORD ServiceBufferSize, INT Flags); + + alias getnameinfo GetNameInfoA; + + version(Unicode) { + alias GetNameInfoW GetNameInfo; + } else { + alias GetNameInfoA GetNameInfo; + } + } +} diff --git a/src/core/sys/windows/wtsapi32.d b/src/core/sys/windows/wtsapi32.d index 7a9ebb41db..34a5255dfb 100644 --- a/src/core/sys/windows/wtsapi32.d +++ b/src/core/sys/windows/wtsapi32.d @@ -1,428 +1,428 @@ -/** - * Windows API header module - * - * Translated from MinGW-w64 API - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_wtsapi32.d) - */ -module core.sys.windows.wtsapi32; -pragma(lib, "wtsapi32"); -private import core.sys.windows.w32api; -import core.sys.windows.windef; - -enum { - WTS_CURRENT_SERVER = null, - WTS_CURRENT_SERVER_HANDLE = null, - WTS_CURRENT_SERVER_NAME = null -} - -enum DWORD WTS_CURRENT_SESSION = cast(DWORD) -1; - -enum { - IDTIMEOUT = 32000, - IDASYNC = 32001 -} - -enum { - WTS_WSD_LOGOFF = 0x01, - WTS_WSD_SHUTDOWN = 0x02, - WTS_WSD_REBOOT = 0x04, - WTS_WSD_POWEROFF = 0x08, - WTS_WSD_FASTREBOOT = 0x10 -} - -enum WTS_CONNECTSTATE_CLASS { - WTSActive, - WTSConnected, - WTSConnectQuery, - WTSShadow, - WTSDisconnected, - WTSIdle, - WTSListen, - WTSReset, - WTSDown, - WTSInit -} - -struct WTS_SERVER_INFOW { - LPWSTR pServerName; -} -alias WTS_SERVER_INFOW* PWTS_SERVER_INFOW; - -struct WTS_SERVER_INFOA { - LPSTR pServerName; -} -alias WTS_SERVER_INFOA* PWTS_SERVER_INFOA; - -version(Unicode) { - alias WTS_SERVER_INFOW WTS_SERVER_INFO; - alias PWTS_SERVER_INFOW PWTS_SERVER_INFO; -} else { - alias WTS_SERVER_INFOA WTS_SERVER_INFO; - alias PWTS_SERVER_INFOA PWTS_SERVER_INFO; -} - -struct WTS_SESSION_INFOW { - DWORD SessionId; - LPWSTR pWinStationName; - WTS_CONNECTSTATE_CLASS State; -} -alias WTS_SESSION_INFOW* PWTS_SESSION_INFOW; - -struct WTS_SESSION_INFOA { - DWORD SessionId; - LPSTR pWinStationName; - WTS_CONNECTSTATE_CLASS State; -} -alias WTS_SESSION_INFOA* PWTS_SESSION_INFOA; - -version(Unicode) { - alias WTS_SESSION_INFOW WTS_SESSION_INFO; - alias PWTS_SESSION_INFOW PWTS_SESSION_INFO; -} else { - alias WTS_SESSION_INFOA WTS_SESSION_INFO; - alias PWTS_SESSION_INFOA PWTS_SESSION_INFO; -} - -struct WTS_PROCESS_INFOW { - DWORD SessionId; - DWORD ProcessId; - LPWSTR pProcessName; - PSID pUserSid; -} -alias WTS_PROCESS_INFOW* PWTS_PROCESS_INFOW; - -struct WTS_PROCESS_INFOA { - DWORD SessionId; - DWORD ProcessId; - LPSTR pProcessName; - PSID pUserSid; -} -alias WTS_PROCESS_INFOA* PWTS_PROCESS_INFOA; - -version(Unicode) { - alias WTS_PROCESS_INFOW WTS_PROCESS_INFO; - alias PWTS_PROCESS_INFOW PWTS_PROCESS_INFO; -} else { - alias WTS_PROCESS_INFOA WTS_PROCESS_INFO; - alias PWTS_PROCESS_INFOA PWTS_PROCESS_INFO; -} - -enum { - WTS_PROTOCOL_TYPE_CONSOLE, - WTS_PROTOCOL_TYPE_ICA, - WTS_PROTOCOL_TYPE_RDP -} - -enum WTS_INFO_CLASS { - WTSInitialProgram, - WTSApplicationName, - WTSWorkingDirectory, - WTSOEMId, - WTSSessionId, - WTSUserName, - WTSWinStationName, - WTSDomainName, - WTSConnectState, - WTSClientBuildNumber, - WTSClientName, - WTSClientDirectory, - WTSClientProductId, - WTSClientHardwareId, - WTSClientAddress, - WTSClientDisplay, - WTSClientProtocolType, - WTSIdleTime, - WTSLogonTime, - WTSIncomingBytes, - WTSOutgoingBytes, - WTSIncomingFrames, - WTSOutgoingFrames, - WTSClientInfo, - WTSSessionInfo, // = 24 -} - -struct WTS_CLIENT_ADDRESS { - DWORD AddressFamily; - BYTE[20] Address; -} -alias WTS_CLIENT_ADDRESS* PWTS_CLIENT_ADDRESS; - -struct WTS_CLIENT_DISPLAY { - DWORD HorizontalResolution; - DWORD VerticalResolution; - DWORD ColorDepth; -} -alias WTS_CLIENT_DISPLAY* PWTS_CLIENT_DISPLAY; - -enum WTS_CONFIG_CLASS { - WTSUserConfigInitialProgram, - WTSUserConfigWorkingDirectory, - WTSUserConfigfInheritInitialProgram, - WTSUserConfigfAllowLogonTerminalServer, - WTSUserConfigTimeoutSettingsConnections, - WTSUserConfigTimeoutSettingsDisconnections, - WTSUserConfigTimeoutSettingsIdle, - WTSUserConfigfDeviceClientDrives, - WTSUserConfigfDeviceClientPrinters, - WTSUserConfigfDeviceClientDefaultPrinter, - WTSUserConfigBrokenTimeoutSettings, - WTSUserConfigReconnectSettings, - WTSUserConfigModemCallbackSettings, - WTSUserConfigModemCallbackPhoneNumber, - WTSUserConfigShadowingSettings, - WTSUserConfigTerminalServerProfilePath, - WTSUserConfigTerminalServerHomeDir, - WTSUserConfigTerminalServerHomeDirDrive, - WTSUserConfigfTerminalServerRemoteHomeDir -} - -enum { - WTS_EVENT_NONE = 0x0, - WTS_EVENT_CREATE = 0x1, - WTS_EVENT_DELETE = 0x2, - WTS_EVENT_RENAME = 0x4, - WTS_EVENT_CONNECT = 0x8, - WTS_EVENT_DISCONNECT = 0x10, - WTS_EVENT_LOGON = 0x20, - WTS_EVENT_LOGOFF = 0x40, - WTS_EVENT_STATECHANGE = 0x80, - WTS_EVENT_LICENSE = 0x100, - WTS_EVENT_ALL = 0x7fffffff, - WTS_EVENT_FLUSH = 0x80000000 -} - -enum WTS_VIRTUAL_CLASS { - WTSVirtualClientData, - WTSVirtualFileHandle -} - -version(Unicode) { - alias WTSEnumerateServersW WTSEnumerateServers; - alias WTSOpenServerW WTSOpenServer; - alias WTSEnumerateSessionsW WTSEnumerateSessions; - alias WTSEnumerateProcessesW WTSEnumerateProcesses; - alias WTSQuerySessionInformationW WTSQuerySessionInformation; - alias WTSQueryUserConfigW WTSQueryUserConfig; - alias WTSSetUserConfigW WTSSetUserConfig; - alias WTSSendMessageW WTSSendMessage; -} else { - alias WTSEnumerateServersA WTSEnumerateServers; - alias WTSOpenServerA WTSOpenServer; - alias WTSEnumerateSessionsA WTSEnumerateSessions; - alias WTSEnumerateProcessesA WTSEnumerateProcesses; - alias WTSQuerySessionInformationA WTSQuerySessionInformation; - alias WTSQueryUserConfigA WTSQueryUserConfig; - alias WTSSetUserConfigA WTSSetUserConfig; - alias WTSSendMessageA WTSSendMessage; -} - -extern(Windows) { - WINBOOL WTSEnumerateServersW(LPWSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOW* ppServerInfo, DWORD* pCount); - WINBOOL WTSEnumerateServersA(LPSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOA* ppServerInfo, DWORD* pCount); - HANDLE WTSOpenServerW(LPWSTR pServerName); - HANDLE WTSOpenServerA(LPSTR pServerName); - VOID WTSCloseServer(HANDLE hServer); - WINBOOL WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOW* ppSessionInfo, DWORD* pCount); - WINBOOL WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOA* ppSessionInfo, DWORD* pCount); - WINBOOL WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount); - WINBOOL WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOA* ppProcessInfo, DWORD* pCount); - WINBOOL WTSTerminateProcess(HANDLE hServer, DWORD ProcessId, DWORD ExitCode); - WINBOOL WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); - WINBOOL WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPSTR* ppBuffer, DWORD* pBytesReturned); - WINBOOL WTSQueryUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); - WINBOOL WTSQueryUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR* ppBuffer, DWORD* pBytesReturned); - WINBOOL WTSSetUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR pBuffer, DWORD DataLength); - WINBOOL WTSSetUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR pBuffer, DWORD DataLength); - WINBOOL WTSSendMessageW(HANDLE hServer, DWORD SessionId, LPWSTR pTitle, DWORD TitleLength, LPWSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); - WINBOOL WTSSendMessageA(HANDLE hServer, DWORD SessionId, LPSTR pTitle, DWORD TitleLength, LPSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); - WINBOOL WTSDisconnectSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); - WINBOOL WTSLogoffSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); - WINBOOL WTSShutdownSystem(HANDLE hServer, DWORD ShutdownFlag); - WINBOOL WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags); - HANDLE WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId, LPSTR pVirtualName); - WINBOOL WTSVirtualChannelClose(HANDLE hChannelHandle); - WINBOOL WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut, PCHAR Buffer, ULONG BufferSize, PULONG pBytesRead); - WINBOOL WTSVirtualChannelWrite(HANDLE hChannelHandle, PCHAR Buffer, ULONG Length, PULONG pBytesWritten); - WINBOOL WTSVirtualChannelPurgeInput(HANDLE hChannelHandle); - WINBOOL WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle); - WINBOOL WTSVirtualChannelQuery(HANDLE hChannelHandle, WTS_VIRTUAL_CLASS, PVOID* ppBuffer, DWORD* pBytesReturned); - VOID WTSFreeMemory(PVOID pMemory); - - WINBOOL WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags); - WINBOOL WTSUnRegisterSessionNotification(HWND hWnd); - WINBOOL WTSQueryUserToken(ULONG SessionId, PHANDLE phToken); -} - -enum { - NOTIFY_FOR_ALL_SESSIONS = 1, - NOTIFY_FOR_THIS_SESSION = 0 -} - -enum { - USERNAME_LENGTH = 20, - CLIENTNAME_LENGTH = 20, - CLIENTADDRESS_LENGTH = 30, - WINSTATIONNAME_LENGTH = 32, - DOMAIN_LENGTH = 17 -} - -static if (_WIN32_WINNT >= 0x600) { - struct WTSCLIENTW { - WCHAR ClientName[CLIENTNAME_LENGTH + 1]; - WCHAR Domain[DOMAIN_LENGTH + 1]; - WCHAR UserName[USERNAME_LENGTH + 1]; - WCHAR WorkDirectory[MAX_PATH + 1]; - WCHAR InitialProgram[MAX_PATH + 1]; - BYTE EncryptionLevel; - ULONG ClientAddressFamily; - USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; - USHORT HRes; - USHORT VRes; - USHORT ColorDepth; - WCHAR ClientDirectory[MAX_PATH + 1]; - ULONG ClientBuildNumber; - ULONG ClientHardwareId; - USHORT ClientProductId; - USHORT OutBufCountHost; - USHORT OutBufCountClient; - USHORT OutBufLength; - WCHAR DeviceId[MAX_PATH + 1]; - } - alias WTSCLIENTW* PWTSCLIENTW; - - struct WTSCLIENTA { - CHAR ClientName[CLIENTNAME_LENGTH + 1]; - CHAR Domain[DOMAIN_LENGTH + 1 ]; - CHAR UserName[USERNAME_LENGTH + 1]; - CHAR WorkDirectory[MAX_PATH + 1]; - CHAR InitialProgram[MAX_PATH + 1]; - BYTE EncryptionLevel; - ULONG ClientAddressFamily; - USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; - USHORT HRes; - USHORT VRes; - USHORT ColorDepth; - CHAR ClientDirectory[MAX_PATH + 1]; - ULONG ClientBuildNumber; - ULONG ClientHardwareId; - USHORT ClientProductId; - USHORT OutBufCountHost; - USHORT OutBufCountClient; - USHORT OutBufLength; - CHAR DeviceId[MAX_PATH + 1]; - } - alias WTSCLIENTA* PWTSCLIENTA; - - version(Unicode) { - alias WTSCLIENTW WTSCLIENT; - alias PWTSCLIENTW PWTSCLIENT; - } else { - alias WTSCLIENTA WTSCLIENT; - alias PWTSCLIENTA PWTSCLIENT; - } - - struct WTSINFOW { - WTS_CONNECTSTATE_CLASS State; - DWORD SessionId; - DWORD IncomingBytes; - DWORD OutgoingBytes; - DWORD IncomingCompressedBytes; - DWORD OutgoingCompressedBytes; - WCHAR WinStationName[WINSTATIONNAME_LENGTH]; - WCHAR Domain[DOMAIN_LENGTH]; - WCHAR UserName[USERNAME_LENGTH+1]; - LARGE_INTEGER ConnectTime; - LARGE_INTEGER DisconnectTime; - LARGE_INTEGER LastInputTime; - LARGE_INTEGER LogonTime; - LARGE_INTEGER CurrentTime; - } - alias WTSINFOW* PWTSINFOW; - - struct WTSINFOA { - WTS_CONNECTSTATE_CLASS State; - DWORD SessionId; - DWORD IncomingBytes; - DWORD OutgoingBytes; - DWORD IncomingCompressedBytes; - DWORD OutgoingCompressedBytes; - CHAR WinStationName[WINSTATIONNAME_LENGTH]; - CHAR Domain[DOMAIN_LENGTH]; - CHAR UserName[USERNAME_LENGTH+1]; - LARGE_INTEGER ConnectTime; - LARGE_INTEGER DisconnectTime; - LARGE_INTEGER LastInputTime; - LARGE_INTEGER LogonTime; - LARGE_INTEGER CurrentTime; - } - alias WTSINFOA* PWTSINFOA; - - version(Unicode) { - alias WTSINFOW WTSINFO; - alias PWTSINFOW PWTSINFO; - } else { - alias WTSINFOA WTSINFO; - alias PWTSINFOA PWTSINFO; - } - - extern(Windows) { - WINBOOL WTSConnectSessionA( - ULONG LogonId, - ULONG TargetLogonId, - PSTR pPassword, - WINBOOL bWait - ); - - WINBOOL WTSConnectSessionW( - ULONG LogonId, - ULONG TargetLogonId, - PWSTR pPassword, - WINBOOL bWait - ); - - WINBOOL WTSRegisterSessionNotificationEx( - HANDLE hServer, - HWND hWnd, - DWORD dwFlags - ); - - WINBOOL WTSStartRemoteControlSessionA( - LPSTR pTargetServerName, - ULONG TargetLogonId, - BYTE HotkeyVk, - USHORT HotkeyModifiers - ); - - WINBOOL WTSStartRemoteControlSessionW( - LPWSTR pTargetServerName, - ULONG TargetLogonId, - BYTE HotkeyVk, - USHORT HotkeyModifiers - ); - - version(Unicode) { - alias WTSStartRemoteControlSessionW WTSStartRemoteControlSession; - alias WTSConnectSessionW WTSConnectSession; - } else { - alias WTSStartRemoteControlSessionA WTSStartRemoteControlSession; - alias WTSConnectSessionA WTSConnectSession; - } - - WINBOOL WTSStopRemoteControlSession( - ULONG LogonId - ); - - WINBOOL WTSUnRegisterSessionNotificationEx( - HANDLE hServer, - HWND hWnd - ); - - HANDLE WTSVirtualChannelOpenEx( - DWORD SessionId, - LPSTR pVirtualName, - DWORD flags - ); - } /* extern(Windows) */ -} /* static if (_WIN32_WINNT >= 0x600) */ +/** + * Windows API header module + * + * Translated from MinGW-w64 API + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wtsapi32.d) + */ +module core.sys.windows.wtsapi32; +pragma(lib, "wtsapi32"); +private import core.sys.windows.w32api; +import core.sys.windows.windef; + +enum { + WTS_CURRENT_SERVER = null, + WTS_CURRENT_SERVER_HANDLE = null, + WTS_CURRENT_SERVER_NAME = null +} + +enum DWORD WTS_CURRENT_SESSION = cast(DWORD) -1; + +enum { + IDTIMEOUT = 32000, + IDASYNC = 32001 +} + +enum { + WTS_WSD_LOGOFF = 0x01, + WTS_WSD_SHUTDOWN = 0x02, + WTS_WSD_REBOOT = 0x04, + WTS_WSD_POWEROFF = 0x08, + WTS_WSD_FASTREBOOT = 0x10 +} + +enum WTS_CONNECTSTATE_CLASS { + WTSActive, + WTSConnected, + WTSConnectQuery, + WTSShadow, + WTSDisconnected, + WTSIdle, + WTSListen, + WTSReset, + WTSDown, + WTSInit +} + +struct WTS_SERVER_INFOW { + LPWSTR pServerName; +} +alias WTS_SERVER_INFOW* PWTS_SERVER_INFOW; + +struct WTS_SERVER_INFOA { + LPSTR pServerName; +} +alias WTS_SERVER_INFOA* PWTS_SERVER_INFOA; + +version(Unicode) { + alias WTS_SERVER_INFOW WTS_SERVER_INFO; + alias PWTS_SERVER_INFOW PWTS_SERVER_INFO; +} else { + alias WTS_SERVER_INFOA WTS_SERVER_INFO; + alias PWTS_SERVER_INFOA PWTS_SERVER_INFO; +} + +struct WTS_SESSION_INFOW { + DWORD SessionId; + LPWSTR pWinStationName; + WTS_CONNECTSTATE_CLASS State; +} +alias WTS_SESSION_INFOW* PWTS_SESSION_INFOW; + +struct WTS_SESSION_INFOA { + DWORD SessionId; + LPSTR pWinStationName; + WTS_CONNECTSTATE_CLASS State; +} +alias WTS_SESSION_INFOA* PWTS_SESSION_INFOA; + +version(Unicode) { + alias WTS_SESSION_INFOW WTS_SESSION_INFO; + alias PWTS_SESSION_INFOW PWTS_SESSION_INFO; +} else { + alias WTS_SESSION_INFOA WTS_SESSION_INFO; + alias PWTS_SESSION_INFOA PWTS_SESSION_INFO; +} + +struct WTS_PROCESS_INFOW { + DWORD SessionId; + DWORD ProcessId; + LPWSTR pProcessName; + PSID pUserSid; +} +alias WTS_PROCESS_INFOW* PWTS_PROCESS_INFOW; + +struct WTS_PROCESS_INFOA { + DWORD SessionId; + DWORD ProcessId; + LPSTR pProcessName; + PSID pUserSid; +} +alias WTS_PROCESS_INFOA* PWTS_PROCESS_INFOA; + +version(Unicode) { + alias WTS_PROCESS_INFOW WTS_PROCESS_INFO; + alias PWTS_PROCESS_INFOW PWTS_PROCESS_INFO; +} else { + alias WTS_PROCESS_INFOA WTS_PROCESS_INFO; + alias PWTS_PROCESS_INFOA PWTS_PROCESS_INFO; +} + +enum { + WTS_PROTOCOL_TYPE_CONSOLE, + WTS_PROTOCOL_TYPE_ICA, + WTS_PROTOCOL_TYPE_RDP +} + +enum WTS_INFO_CLASS { + WTSInitialProgram, + WTSApplicationName, + WTSWorkingDirectory, + WTSOEMId, + WTSSessionId, + WTSUserName, + WTSWinStationName, + WTSDomainName, + WTSConnectState, + WTSClientBuildNumber, + WTSClientName, + WTSClientDirectory, + WTSClientProductId, + WTSClientHardwareId, + WTSClientAddress, + WTSClientDisplay, + WTSClientProtocolType, + WTSIdleTime, + WTSLogonTime, + WTSIncomingBytes, + WTSOutgoingBytes, + WTSIncomingFrames, + WTSOutgoingFrames, + WTSClientInfo, + WTSSessionInfo, // = 24 +} + +struct WTS_CLIENT_ADDRESS { + DWORD AddressFamily; + BYTE[20] Address; +} +alias WTS_CLIENT_ADDRESS* PWTS_CLIENT_ADDRESS; + +struct WTS_CLIENT_DISPLAY { + DWORD HorizontalResolution; + DWORD VerticalResolution; + DWORD ColorDepth; +} +alias WTS_CLIENT_DISPLAY* PWTS_CLIENT_DISPLAY; + +enum WTS_CONFIG_CLASS { + WTSUserConfigInitialProgram, + WTSUserConfigWorkingDirectory, + WTSUserConfigfInheritInitialProgram, + WTSUserConfigfAllowLogonTerminalServer, + WTSUserConfigTimeoutSettingsConnections, + WTSUserConfigTimeoutSettingsDisconnections, + WTSUserConfigTimeoutSettingsIdle, + WTSUserConfigfDeviceClientDrives, + WTSUserConfigfDeviceClientPrinters, + WTSUserConfigfDeviceClientDefaultPrinter, + WTSUserConfigBrokenTimeoutSettings, + WTSUserConfigReconnectSettings, + WTSUserConfigModemCallbackSettings, + WTSUserConfigModemCallbackPhoneNumber, + WTSUserConfigShadowingSettings, + WTSUserConfigTerminalServerProfilePath, + WTSUserConfigTerminalServerHomeDir, + WTSUserConfigTerminalServerHomeDirDrive, + WTSUserConfigfTerminalServerRemoteHomeDir +} + +enum { + WTS_EVENT_NONE = 0x0, + WTS_EVENT_CREATE = 0x1, + WTS_EVENT_DELETE = 0x2, + WTS_EVENT_RENAME = 0x4, + WTS_EVENT_CONNECT = 0x8, + WTS_EVENT_DISCONNECT = 0x10, + WTS_EVENT_LOGON = 0x20, + WTS_EVENT_LOGOFF = 0x40, + WTS_EVENT_STATECHANGE = 0x80, + WTS_EVENT_LICENSE = 0x100, + WTS_EVENT_ALL = 0x7fffffff, + WTS_EVENT_FLUSH = 0x80000000 +} + +enum WTS_VIRTUAL_CLASS { + WTSVirtualClientData, + WTSVirtualFileHandle +} + +version(Unicode) { + alias WTSEnumerateServersW WTSEnumerateServers; + alias WTSOpenServerW WTSOpenServer; + alias WTSEnumerateSessionsW WTSEnumerateSessions; + alias WTSEnumerateProcessesW WTSEnumerateProcesses; + alias WTSQuerySessionInformationW WTSQuerySessionInformation; + alias WTSQueryUserConfigW WTSQueryUserConfig; + alias WTSSetUserConfigW WTSSetUserConfig; + alias WTSSendMessageW WTSSendMessage; +} else { + alias WTSEnumerateServersA WTSEnumerateServers; + alias WTSOpenServerA WTSOpenServer; + alias WTSEnumerateSessionsA WTSEnumerateSessions; + alias WTSEnumerateProcessesA WTSEnumerateProcesses; + alias WTSQuerySessionInformationA WTSQuerySessionInformation; + alias WTSQueryUserConfigA WTSQueryUserConfig; + alias WTSSetUserConfigA WTSSetUserConfig; + alias WTSSendMessageA WTSSendMessage; +} + +extern(Windows) { + WINBOOL WTSEnumerateServersW(LPWSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOW* ppServerInfo, DWORD* pCount); + WINBOOL WTSEnumerateServersA(LPSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOA* ppServerInfo, DWORD* pCount); + HANDLE WTSOpenServerW(LPWSTR pServerName); + HANDLE WTSOpenServerA(LPSTR pServerName); + VOID WTSCloseServer(HANDLE hServer); + WINBOOL WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOW* ppSessionInfo, DWORD* pCount); + WINBOOL WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOA* ppSessionInfo, DWORD* pCount); + WINBOOL WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount); + WINBOOL WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOA* ppProcessInfo, DWORD* pCount); + WINBOOL WTSTerminateProcess(HANDLE hServer, DWORD ProcessId, DWORD ExitCode); + WINBOOL WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQueryUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQueryUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSSetUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR pBuffer, DWORD DataLength); + WINBOOL WTSSetUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR pBuffer, DWORD DataLength); + WINBOOL WTSSendMessageW(HANDLE hServer, DWORD SessionId, LPWSTR pTitle, DWORD TitleLength, LPWSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); + WINBOOL WTSSendMessageA(HANDLE hServer, DWORD SessionId, LPSTR pTitle, DWORD TitleLength, LPSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); + WINBOOL WTSDisconnectSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); + WINBOOL WTSLogoffSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); + WINBOOL WTSShutdownSystem(HANDLE hServer, DWORD ShutdownFlag); + WINBOOL WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags); + HANDLE WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId, LPSTR pVirtualName); + WINBOOL WTSVirtualChannelClose(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut, PCHAR Buffer, ULONG BufferSize, PULONG pBytesRead); + WINBOOL WTSVirtualChannelWrite(HANDLE hChannelHandle, PCHAR Buffer, ULONG Length, PULONG pBytesWritten); + WINBOOL WTSVirtualChannelPurgeInput(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelQuery(HANDLE hChannelHandle, WTS_VIRTUAL_CLASS, PVOID* ppBuffer, DWORD* pBytesReturned); + VOID WTSFreeMemory(PVOID pMemory); + + WINBOOL WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags); + WINBOOL WTSUnRegisterSessionNotification(HWND hWnd); + WINBOOL WTSQueryUserToken(ULONG SessionId, PHANDLE phToken); +} + +enum { + NOTIFY_FOR_ALL_SESSIONS = 1, + NOTIFY_FOR_THIS_SESSION = 0 +} + +enum { + USERNAME_LENGTH = 20, + CLIENTNAME_LENGTH = 20, + CLIENTADDRESS_LENGTH = 30, + WINSTATIONNAME_LENGTH = 32, + DOMAIN_LENGTH = 17 +} + +static if (_WIN32_WINNT >= 0x600) { + struct WTSCLIENTW { + WCHAR ClientName[CLIENTNAME_LENGTH + 1]; + WCHAR Domain[DOMAIN_LENGTH + 1]; + WCHAR UserName[USERNAME_LENGTH + 1]; + WCHAR WorkDirectory[MAX_PATH + 1]; + WCHAR InitialProgram[MAX_PATH + 1]; + BYTE EncryptionLevel; + ULONG ClientAddressFamily; + USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; + USHORT HRes; + USHORT VRes; + USHORT ColorDepth; + WCHAR ClientDirectory[MAX_PATH + 1]; + ULONG ClientBuildNumber; + ULONG ClientHardwareId; + USHORT ClientProductId; + USHORT OutBufCountHost; + USHORT OutBufCountClient; + USHORT OutBufLength; + WCHAR DeviceId[MAX_PATH + 1]; + } + alias WTSCLIENTW* PWTSCLIENTW; + + struct WTSCLIENTA { + CHAR ClientName[CLIENTNAME_LENGTH + 1]; + CHAR Domain[DOMAIN_LENGTH + 1 ]; + CHAR UserName[USERNAME_LENGTH + 1]; + CHAR WorkDirectory[MAX_PATH + 1]; + CHAR InitialProgram[MAX_PATH + 1]; + BYTE EncryptionLevel; + ULONG ClientAddressFamily; + USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; + USHORT HRes; + USHORT VRes; + USHORT ColorDepth; + CHAR ClientDirectory[MAX_PATH + 1]; + ULONG ClientBuildNumber; + ULONG ClientHardwareId; + USHORT ClientProductId; + USHORT OutBufCountHost; + USHORT OutBufCountClient; + USHORT OutBufLength; + CHAR DeviceId[MAX_PATH + 1]; + } + alias WTSCLIENTA* PWTSCLIENTA; + + version(Unicode) { + alias WTSCLIENTW WTSCLIENT; + alias PWTSCLIENTW PWTSCLIENT; + } else { + alias WTSCLIENTA WTSCLIENT; + alias PWTSCLIENTA PWTSCLIENT; + } + + struct WTSINFOW { + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBytes; + WCHAR WinStationName[WINSTATIONNAME_LENGTH]; + WCHAR Domain[DOMAIN_LENGTH]; + WCHAR UserName[USERNAME_LENGTH+1]; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; + } + alias WTSINFOW* PWTSINFOW; + + struct WTSINFOA { + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBytes; + CHAR WinStationName[WINSTATIONNAME_LENGTH]; + CHAR Domain[DOMAIN_LENGTH]; + CHAR UserName[USERNAME_LENGTH+1]; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; + } + alias WTSINFOA* PWTSINFOA; + + version(Unicode) { + alias WTSINFOW WTSINFO; + alias PWTSINFOW PWTSINFO; + } else { + alias WTSINFOA WTSINFO; + alias PWTSINFOA PWTSINFO; + } + + extern(Windows) { + WINBOOL WTSConnectSessionA( + ULONG LogonId, + ULONG TargetLogonId, + PSTR pPassword, + WINBOOL bWait + ); + + WINBOOL WTSConnectSessionW( + ULONG LogonId, + ULONG TargetLogonId, + PWSTR pPassword, + WINBOOL bWait + ); + + WINBOOL WTSRegisterSessionNotificationEx( + HANDLE hServer, + HWND hWnd, + DWORD dwFlags + ); + + WINBOOL WTSStartRemoteControlSessionA( + LPSTR pTargetServerName, + ULONG TargetLogonId, + BYTE HotkeyVk, + USHORT HotkeyModifiers + ); + + WINBOOL WTSStartRemoteControlSessionW( + LPWSTR pTargetServerName, + ULONG TargetLogonId, + BYTE HotkeyVk, + USHORT HotkeyModifiers + ); + + version(Unicode) { + alias WTSStartRemoteControlSessionW WTSStartRemoteControlSession; + alias WTSConnectSessionW WTSConnectSession; + } else { + alias WTSStartRemoteControlSessionA WTSStartRemoteControlSession; + alias WTSConnectSessionA WTSConnectSession; + } + + WINBOOL WTSStopRemoteControlSession( + ULONG LogonId + ); + + WINBOOL WTSUnRegisterSessionNotificationEx( + HANDLE hServer, + HWND hWnd + ); + + HANDLE WTSVirtualChannelOpenEx( + DWORD SessionId, + LPSTR pVirtualName, + DWORD flags + ); + } /* extern(Windows) */ +} /* static if (_WIN32_WINNT >= 0x600) */ diff --git a/src/core/sys/windows/wtypes.d b/src/core/sys/windows/wtypes.d index 2c46caeb4a..0532b1e3d0 100644 --- a/src/core/sys/windows/wtypes.d +++ b/src/core/sys/windows/wtypes.d @@ -1,231 +1,231 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_wtypes.d) - */ -module core.sys.windows.wtypes; - -import core.sys.windows.rpc, core.sys.windows.rpcndr; -private import core.sys.windows.windef; -private import core.sys.windows.uuid; // for GUID_NULL - -alias GUID_NULL IID_NULL, CLSID_NULL; - -const ROTFLAGS_REGISTRATIONKEEPSALIVE = 0x01; -const ROTFLAGS_ALLOWANYCLIENT = 0x02; - -// also in winsock2.h -struct BLOB { - ULONG cbSize; - BYTE* pBlobData; -} -alias BLOB* PBLOB, LPBLOB; - -enum DVASPECT { - DVASPECT_CONTENT = 1, - DVASPECT_THUMBNAIL = 2, - DVASPECT_ICON = 4, - DVASPECT_DOCPRINT = 8 -} - -enum DVASPECT2 { - DVASPECT_OPAQUE = 16, - DVASPECT_TRANSPARENT = 32 -} - -enum STATFLAG { - STATFLAG_DEFAULT = 0, - STATFLAG_NONAME = 1 -} - -enum MEMCTX { - MEMCTX_LOCAL = 0, - MEMCTX_TASK, - MEMCTX_SHARED, - MEMCTX_MACSYSTEM, - MEMCTX_UNKNOWN = -1, - MEMCTX_SAME = -2 -} - -enum MSHCTX { - MSHCTX_LOCAL = 0, - MSHCTX_NOSHAREDMEM, - MSHCTX_DIFFERENTMACHINE, - MSHCTX_INPROC, - MSHCTX_CROSSCTX -} - -enum CLSCTX { - CLSCTX_INPROC_SERVER = 1, - CLSCTX_INPROC_HANDLER = 2, - CLSCTX_LOCAL_SERVER = 4, - CLSCTX_INPROC_SERVER16 = 8, - CLSCTX_REMOTE_SERVER = 16 -} - -enum MSHLFLAGS { - MSHLFLAGS_NORMAL, - MSHLFLAGS_TABLESTRONG, - MSHLFLAGS_TABLEWEAK -} - -struct FLAGGED_WORD_BLOB { - uint fFlags; - uint clSize; - ushort[1] asData; -} - -alias WCHAR OLECHAR; -alias LPWSTR LPOLESTR; -alias LPCWSTR LPCOLESTR; - -alias ushort VARTYPE; -alias short VARIANT_BOOL; -alias VARIANT_BOOL _VARIANT_BOOL; -const VARIANT_BOOL VARIANT_TRUE = -1; // 0xffff; -const VARIANT_BOOL VARIANT_FALSE = 0; - -alias OLECHAR* BSTR; -alias FLAGGED_WORD_BLOB* wireBSTR; -alias BSTR* LPBSTR; -//alias LONG SCODE; // also in winerror -mixin DECLARE_HANDLE!("HCONTEXT"); -mixin DECLARE_HANDLE!("HMETAFILEPICT"); - -union CY { - struct { - uint Lo; - int Hi; - } - LONGLONG int64; -} - -alias double DATE; -struct BSTRBLOB { - ULONG cbSize; - PBYTE pData; -} -alias BSTRBLOB* LPBSTRBLOB; - -// Used only in the PROPVARIANT structure -// According to the 2003 SDK, this should be in propidl.h, not here. -struct CLIPDATA { - ULONG cbSize; - int ulClipFmt; - PBYTE pClipData; -} - -enum STGC { - STGC_DEFAULT, - STGC_OVERWRITE, - STGC_ONLYIFCURRENT, - STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE -} - -enum STGMOVE { - STGMOVE_MOVE, - STGMOVE_COPY, - STGMOVE_SHALLOWCOPY -} - -enum VARENUM { - VT_EMPTY, - VT_NULL, - VT_I2, - VT_I4, - VT_R4, - VT_R8, - VT_CY, - VT_DATE, - VT_BSTR, - VT_DISPATCH, - VT_ERROR, - VT_BOOL, - VT_VARIANT, - VT_UNKNOWN, - VT_DECIMAL, - VT_I1 = 16, - VT_UI1, - VT_UI2, - VT_UI4, - VT_I8, - VT_UI8, - VT_INT, - VT_UINT, - VT_VOID, - VT_HRESULT, - VT_PTR, - VT_SAFEARRAY, - VT_CARRAY, - VT_USERDEFINED, - VT_LPSTR, - VT_LPWSTR, - VT_RECORD = 36, - VT_INT_PTR = 37, - VT_UINT_PTR = 38, - VT_FILETIME = 64, - VT_BLOB, - VT_STREAM, - VT_STORAGE, - VT_STREAMED_OBJECT, - VT_STORED_OBJECT, - VT_BLOB_OBJECT, - VT_CF, - VT_CLSID, - VT_BSTR_BLOB = 0xfff, - VT_VECTOR = 0x1000, - VT_ARRAY = 0x2000, - VT_BYREF = 0x4000, - VT_RESERVED = 0x8000, - VT_ILLEGAL = 0xffff, - VT_ILLEGALMASKED = 0xfff, - VT_TYPEMASK = 0xfff -}; - -struct BYTE_SIZEDARR { - uint clSize; - byte* pData; -} - -struct WORD_SIZEDARR { - uint clSize; - ushort* pData; -} - -struct DWORD_SIZEDARR { -uint clSize; -uint* pData; -} - -struct HYPER_SIZEDARR { - uint clSize; - hyper* pData; -} - -alias double DOUBLE; - - -struct DECIMAL { - USHORT wReserved; - union { - struct { - ubyte scale; // valid values are 0 to 28 - ubyte sign; // 0 for positive, DECIMAL_NEG for negatives. - enum ubyte DECIMAL_NEG = 0x80; - } - USHORT signscale; - } - ULONG Hi32; - union { - struct { - ULONG Lo32; - ULONG Mid32; - } - ULONGLONG Lo64; - } - // #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;} - void setZero() { Lo64 = 0; Hi32 = 0; signscale = 0; } -} +/** + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: Placed into public domain + * Source: $(DRUNTIMESRC src/core/sys/windows/_wtypes.d) + */ +module core.sys.windows.wtypes; + +import core.sys.windows.rpc, core.sys.windows.rpcndr; +private import core.sys.windows.windef; +private import core.sys.windows.uuid; // for GUID_NULL + +alias GUID_NULL IID_NULL, CLSID_NULL; + +const ROTFLAGS_REGISTRATIONKEEPSALIVE = 0x01; +const ROTFLAGS_ALLOWANYCLIENT = 0x02; + +// also in winsock2.h +struct BLOB { + ULONG cbSize; + BYTE* pBlobData; +} +alias BLOB* PBLOB, LPBLOB; + +enum DVASPECT { + DVASPECT_CONTENT = 1, + DVASPECT_THUMBNAIL = 2, + DVASPECT_ICON = 4, + DVASPECT_DOCPRINT = 8 +} + +enum DVASPECT2 { + DVASPECT_OPAQUE = 16, + DVASPECT_TRANSPARENT = 32 +} + +enum STATFLAG { + STATFLAG_DEFAULT = 0, + STATFLAG_NONAME = 1 +} + +enum MEMCTX { + MEMCTX_LOCAL = 0, + MEMCTX_TASK, + MEMCTX_SHARED, + MEMCTX_MACSYSTEM, + MEMCTX_UNKNOWN = -1, + MEMCTX_SAME = -2 +} + +enum MSHCTX { + MSHCTX_LOCAL = 0, + MSHCTX_NOSHAREDMEM, + MSHCTX_DIFFERENTMACHINE, + MSHCTX_INPROC, + MSHCTX_CROSSCTX +} + +enum CLSCTX { + CLSCTX_INPROC_SERVER = 1, + CLSCTX_INPROC_HANDLER = 2, + CLSCTX_LOCAL_SERVER = 4, + CLSCTX_INPROC_SERVER16 = 8, + CLSCTX_REMOTE_SERVER = 16 +} + +enum MSHLFLAGS { + MSHLFLAGS_NORMAL, + MSHLFLAGS_TABLESTRONG, + MSHLFLAGS_TABLEWEAK +} + +struct FLAGGED_WORD_BLOB { + uint fFlags; + uint clSize; + ushort[1] asData; +} + +alias WCHAR OLECHAR; +alias LPWSTR LPOLESTR; +alias LPCWSTR LPCOLESTR; + +alias ushort VARTYPE; +alias short VARIANT_BOOL; +alias VARIANT_BOOL _VARIANT_BOOL; +const VARIANT_BOOL VARIANT_TRUE = -1; // 0xffff; +const VARIANT_BOOL VARIANT_FALSE = 0; + +alias OLECHAR* BSTR; +alias FLAGGED_WORD_BLOB* wireBSTR; +alias BSTR* LPBSTR; +//alias LONG SCODE; // also in winerror +mixin DECLARE_HANDLE!("HCONTEXT"); +mixin DECLARE_HANDLE!("HMETAFILEPICT"); + +union CY { + struct { + uint Lo; + int Hi; + } + LONGLONG int64; +} + +alias double DATE; +struct BSTRBLOB { + ULONG cbSize; + PBYTE pData; +} +alias BSTRBLOB* LPBSTRBLOB; + +// Used only in the PROPVARIANT structure +// According to the 2003 SDK, this should be in propidl.h, not here. +struct CLIPDATA { + ULONG cbSize; + int ulClipFmt; + PBYTE pClipData; +} + +enum STGC { + STGC_DEFAULT, + STGC_OVERWRITE, + STGC_ONLYIFCURRENT, + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE +} + +enum STGMOVE { + STGMOVE_MOVE, + STGMOVE_COPY, + STGMOVE_SHALLOWCOPY +} + +enum VARENUM { + VT_EMPTY, + VT_NULL, + VT_I2, + VT_I4, + VT_R4, + VT_R8, + VT_CY, + VT_DATE, + VT_BSTR, + VT_DISPATCH, + VT_ERROR, + VT_BOOL, + VT_VARIANT, + VT_UNKNOWN, + VT_DECIMAL, + VT_I1 = 16, + VT_UI1, + VT_UI2, + VT_UI4, + VT_I8, + VT_UI8, + VT_INT, + VT_UINT, + VT_VOID, + VT_HRESULT, + VT_PTR, + VT_SAFEARRAY, + VT_CARRAY, + VT_USERDEFINED, + VT_LPSTR, + VT_LPWSTR, + VT_RECORD = 36, + VT_INT_PTR = 37, + VT_UINT_PTR = 38, + VT_FILETIME = 64, + VT_BLOB, + VT_STREAM, + VT_STORAGE, + VT_STREAMED_OBJECT, + VT_STORED_OBJECT, + VT_BLOB_OBJECT, + VT_CF, + VT_CLSID, + VT_BSTR_BLOB = 0xfff, + VT_VECTOR = 0x1000, + VT_ARRAY = 0x2000, + VT_BYREF = 0x4000, + VT_RESERVED = 0x8000, + VT_ILLEGAL = 0xffff, + VT_ILLEGALMASKED = 0xfff, + VT_TYPEMASK = 0xfff +}; + +struct BYTE_SIZEDARR { + uint clSize; + byte* pData; +} + +struct WORD_SIZEDARR { + uint clSize; + ushort* pData; +} + +struct DWORD_SIZEDARR { +uint clSize; +uint* pData; +} + +struct HYPER_SIZEDARR { + uint clSize; + hyper* pData; +} + +alias double DOUBLE; + + +struct DECIMAL { + USHORT wReserved; + union { + struct { + ubyte scale; // valid values are 0 to 28 + ubyte sign; // 0 for positive, DECIMAL_NEG for negatives. + enum ubyte DECIMAL_NEG = 0x80; + } + USHORT signscale; + } + ULONG Hi32; + union { + struct { + ULONG Lo32; + ULONG Mid32; + } + ULONGLONG Lo64; + } + // #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;} + void setZero() { Lo64 = 0; Hi32 = 0; signscale = 0; } +} From bc6cba469ce3417b6e1ca710eeef7a5fce6066b5 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 20:04:23 +0000 Subject: [PATCH 113/768] detab (leading) --- src/core/sys/windows/accctrl.d | 486 +- src/core/sys/windows/aclapi.d | 232 +- src/core/sys/windows/aclui.d | 114 +- src/core/sys/windows/basetsd.d | 142 +- src/core/sys/windows/basetyps.d | 8 +- src/core/sys/windows/cderr.d | 74 +- src/core/sys/windows/comcat.d | 48 +- src/core/sys/windows/commctrl.d | 8578 +++++++++++++++---------------- src/core/sys/windows/commdlg.d | 1034 ++-- src/core/sys/windows/cpl.d | 76 +- src/core/sys/windows/cplext.d | 10 +- src/core/sys/windows/custcntl.d | 138 +- src/core/sys/windows/dbt.d | 248 +- src/core/sys/windows/dde.d | 328 +- src/core/sys/windows/ddeml.d | 488 +- src/core/sys/windows/dhcpcsdk.d | 34 +- src/core/sys/windows/dlgs.d | 338 +- src/core/sys/windows/docobj.d | 158 +- src/core/sys/windows/errorrep.d | 30 +- src/core/sys/windows/exdisp.d | 196 +- src/core/sys/windows/exdispid.d | 12 +- src/core/sys/windows/httpext.d | 88 +- src/core/sys/windows/idispids.d | 4 +- src/core/sys/windows/imagehlp.d | 458 +- src/core/sys/windows/imm.d | 174 +- src/core/sys/windows/intshcut.d | 80 +- src/core/sys/windows/ipexport.d | 98 +- src/core/sys/windows/iphlpapi.d | 90 +- src/core/sys/windows/ipifcons.d | 32 +- src/core/sys/windows/iprtrmib.d | 320 +- src/core/sys/windows/iptypes.d | 106 +- src/core/sys/windows/isguids.d | 4 +- src/core/sys/windows/lm.d | 10 +- src/core/sys/windows/lmaccess.d | 460 +- src/core/sys/windows/lmalert.d | 38 +- src/core/sys/windows/lmapibuf.d | 10 +- src/core/sys/windows/lmat.d | 32 +- src/core/sys/windows/lmaudit.d | 190 +- src/core/sys/windows/lmbrowsr.d | 110 +- src/core/sys/windows/lmchdev.d | 46 +- src/core/sys/windows/lmconfig.d | 22 +- src/core/sys/windows/lmcons.d | 14 +- src/core/sys/windows/lmerr.d | 596 +-- src/core/sys/windows/lmerrlog.d | 32 +- src/core/sys/windows/lmmsg.d | 26 +- src/core/sys/windows/lmremutl.d | 32 +- src/core/sys/windows/lmrepl.d | 64 +- src/core/sys/windows/lmserver.d | 624 +-- src/core/sys/windows/lmshare.d | 132 +- src/core/sys/windows/lmsname.d | 102 +- src/core/sys/windows/lmstats.d | 120 +- src/core/sys/windows/lmsvc.d | 42 +- src/core/sys/windows/lmuse.d | 80 +- src/core/sys/windows/lmuseflg.d | 6 +- src/core/sys/windows/lmwksta.d | 384 +- src/core/sys/windows/lzexpand.d | 30 +- src/core/sys/windows/mapi.d | 208 +- src/core/sys/windows/mciavi.d | 30 +- src/core/sys/windows/mcx.d | 124 +- src/core/sys/windows/mgmtapi.d | 46 +- src/core/sys/windows/mmsystem.d | 1698 +++--- src/core/sys/windows/msacm.d | 224 +- src/core/sys/windows/mshtml.d | 890 ++-- src/core/sys/windows/mswsock.d | 272 +- src/core/sys/windows/nb30.d | 334 +- src/core/sys/windows/nddeapi.d | 216 +- src/core/sys/windows/nspapi.d | 148 +- src/core/sys/windows/ntdef.d | 60 +- src/core/sys/windows/ntdll.d | 6 +- src/core/sys/windows/ntldap.d | 72 +- src/core/sys/windows/ntsecapi.d | 780 +-- src/core/sys/windows/ntsecpkg.d | 302 +- src/core/sys/windows/oaidl.d | 834 +-- src/core/sys/windows/objbase.d | 240 +- src/core/sys/windows/objfwd.d | 84 +- src/core/sys/windows/objidl.d | 1044 ++-- src/core/sys/windows/objsafe.d | 8 +- src/core/sys/windows/ocidl.d | 496 +- src/core/sys/windows/odbcinst.d | 176 +- src/core/sys/windows/ole.d | 520 +- src/core/sys/windows/ole2.d | 156 +- src/core/sys/windows/oleacc.d | 332 +- src/core/sys/windows/oleauto.d | 984 ++-- src/core/sys/windows/olectl.d | 526 +- src/core/sys/windows/oledlg.d | 1062 ++-- src/core/sys/windows/oleidl.d | 256 +- src/core/sys/windows/pbt.d | 24 +- src/core/sys/windows/powrprof.d | 130 +- src/core/sys/windows/prsht.d | 554 +- src/core/sys/windows/psapi.d | 202 +- src/core/sys/windows/ras.d | 1388 ++--- src/core/sys/windows/rasdlg.d | 172 +- src/core/sys/windows/raserror.d | 404 +- src/core/sys/windows/rassapi.d | 248 +- src/core/sys/windows/reason.d | 74 +- src/core/sys/windows/regstr.d | 1314 ++--- src/core/sys/windows/richedit.d | 420 +- src/core/sys/windows/richole.d | 134 +- src/core/sys/windows/rpc.d | 12 +- src/core/sys/windows/rpcdce.d | 376 +- src/core/sys/windows/rpcdce2.d | 62 +- src/core/sys/windows/rpcdcep.d | 156 +- src/core/sys/windows/rpcndr.d | 326 +- src/core/sys/windows/rpcnsi.d | 160 +- src/core/sys/windows/rpcnsip.d | 20 +- src/core/sys/windows/rpcnterr.d | 32 +- src/core/sys/windows/schannel.d | 108 +- src/core/sys/windows/secext.d | 48 +- src/core/sys/windows/servprov.d | 2 +- src/core/sys/windows/setupapi.d | 2956 +++++------ src/core/sys/windows/shellapi.d | 580 +-- src/core/sys/windows/shldisp.d | 8 +- src/core/sys/windows/shlobj.d | 1608 +++--- src/core/sys/windows/shlwapi.d | 98 +- src/core/sys/windows/snmp.d | 320 +- src/core/sys/windows/sql.d | 418 +- src/core/sys/windows/sqlext.d | 1414 ++--- src/core/sys/windows/sqltypes.d | 92 +- src/core/sys/windows/sqlucode.d | 246 +- src/core/sys/windows/sspi.d | 180 +- src/core/sys/windows/subauth.d | 270 +- src/core/sys/windows/tlhelp32.d | 216 +- src/core/sys/windows/tmschema.d | 886 ++-- src/core/sys/windows/unknwn.d | 68 +- src/core/sys/windows/vfw.d | 2374 ++++----- src/core/sys/windows/w32api.d | 76 +- src/core/sys/windows/winbase.d | 4328 ++++++++-------- src/core/sys/windows/winber.d | 36 +- src/core/sys/windows/wincon.d | 238 +- src/core/sys/windows/wincrypt.d | 1178 ++--- src/core/sys/windows/windef.d | 52 +- src/core/sys/windows/windows.d | 18 +- src/core/sys/windows/winerror.d | 4418 ++++++++-------- src/core/sys/windows/wingdi.d | 6232 +++++++++++----------- src/core/sys/windows/winhttp.d | 1128 ++-- src/core/sys/windows/wininet.d | 1792 +++---- src/core/sys/windows/winioctl.d | 896 ++-- src/core/sys/windows/winldap.d | 1316 ++--- src/core/sys/windows/winnetwk.d | 646 +-- src/core/sys/windows/winnls.d | 1348 ++--- src/core/sys/windows/winnt.d | 5738 ++++++++++----------- src/core/sys/windows/winperf.d | 90 +- src/core/sys/windows/winreg.d | 400 +- src/core/sys/windows/winspool.d | 508 +- src/core/sys/windows/winsvc.d | 630 +-- src/core/sys/windows/winuser.d | 4378 ++++++++-------- src/core/sys/windows/winver.d | 234 +- src/core/sys/windows/ws2tcpip.d | 258 +- src/core/sys/windows/wtsapi32.d | 654 +-- src/core/sys/windows/wtypes.d | 250 +- 150 files changed, 42249 insertions(+), 42249 deletions(-) diff --git a/src/core/sys/windows/accctrl.d b/src/core/sys/windows/accctrl.d index e8644765fa..2c36d9b9bf 100644 --- a/src/core/sys/windows/accctrl.d +++ b/src/core/sys/windows/accctrl.d @@ -17,389 +17,389 @@ private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.wind alias LocalFree AccFree; const uint - ACTRL_RESERVED = 0x00000000, - ACTRL_ACCESS_PROTECTED = 0x00000001, - ACTRL_ACCESS_ALLOWED = 0x00000001, - ACTRL_ACCESS_DENIED = 0x00000002, - ACTRL_AUDIT_SUCCESS = 0x00000004, - ACTRL_AUDIT_FAILURE = 0x00000008, - ACTRL_SYSTEM_ACCESS = 0x04000000, - ACTRL_DELETE = 0x08000000, - ACTRL_READ_CONTROL = 0x10000000, - ACTRL_CHANGE_ACCESS = 0x20000000, - ACTRL_CHANGE_OWNER = 0x40000000, - ACTRL_SYNCHRONIZE = 0x80000000, - ACTRL_STD_RIGHTS_ALL = 0xf8000000; + ACTRL_RESERVED = 0x00000000, + ACTRL_ACCESS_PROTECTED = 0x00000001, + ACTRL_ACCESS_ALLOWED = 0x00000001, + ACTRL_ACCESS_DENIED = 0x00000002, + ACTRL_AUDIT_SUCCESS = 0x00000004, + ACTRL_AUDIT_FAILURE = 0x00000008, + ACTRL_SYSTEM_ACCESS = 0x04000000, + ACTRL_DELETE = 0x08000000, + ACTRL_READ_CONTROL = 0x10000000, + ACTRL_CHANGE_ACCESS = 0x20000000, + ACTRL_CHANGE_OWNER = 0x40000000, + ACTRL_SYNCHRONIZE = 0x80000000, + ACTRL_STD_RIGHTS_ALL = 0xf8000000; const uint - ACTRL_FILE_READ = 0x00000001, - ACTRL_FILE_WRITE = 0x00000002, - ACTRL_FILE_APPEND = 0x00000004, - ACTRL_FILE_READ_PROP = 0x00000008, - ACTRL_FILE_WRITE_PROP = 0x00000010, - ACTRL_FILE_EXECUTE = 0x00000020, - ACTRL_FILE_READ_ATTRIB = 0x00000080, - ACTRL_FILE_WRITE_ATTRIB = 0x00000100, - ACTRL_FILE_CREATE_PIPE = 0x00000200; + ACTRL_FILE_READ = 0x00000001, + ACTRL_FILE_WRITE = 0x00000002, + ACTRL_FILE_APPEND = 0x00000004, + ACTRL_FILE_READ_PROP = 0x00000008, + ACTRL_FILE_WRITE_PROP = 0x00000010, + ACTRL_FILE_EXECUTE = 0x00000020, + ACTRL_FILE_READ_ATTRIB = 0x00000080, + ACTRL_FILE_WRITE_ATTRIB = 0x00000100, + ACTRL_FILE_CREATE_PIPE = 0x00000200; const uint - ACTRL_DIR_LIST = 0x00000001, - ACTRL_DIR_CREATE_OBJECT = 0x00000002, - ACTRL_DIR_CREATE_CHILD = 0x00000004, - ACTRL_DIR_DELETE_CHILD = 0x00000040, - ACTRL_DIR_TRAVERSE = 0x00000020; + ACTRL_DIR_LIST = 0x00000001, + ACTRL_DIR_CREATE_OBJECT = 0x00000002, + ACTRL_DIR_CREATE_CHILD = 0x00000004, + ACTRL_DIR_DELETE_CHILD = 0x00000040, + ACTRL_DIR_TRAVERSE = 0x00000020; const uint - ACTRL_KERNEL_TERMINATE = 0x00000001, - ACTRL_KERNEL_THREAD = 0x00000002, - ACTRL_KERNEL_VM = 0x00000004, - ACTRL_KERNEL_VM_READ = 0x00000008, - ACTRL_KERNEL_VM_WRITE = 0x00000010, - ACTRL_KERNEL_DUP_HANDLE = 0x00000020, - ACTRL_KERNEL_PROCESS = 0x00000040, - ACTRL_KERNEL_SET_INFO = 0x00000080, - ACTRL_KERNEL_GET_INFO = 0x00000100, - ACTRL_KERNEL_CONTROL = 0x00000200, - ACTRL_KERNEL_ALERT = 0x00000400, - ACTRL_KERNEL_GET_CONTEXT = 0x00000800, - ACTRL_KERNEL_SET_CONTEXT = 0x00001000, - ACTRL_KERNEL_TOKEN = 0x00002000, - ACTRL_KERNEL_IMPERSONATE = 0x00004000, - ACTRL_KERNEL_DIMPERSONATE = 0x00008000; + ACTRL_KERNEL_TERMINATE = 0x00000001, + ACTRL_KERNEL_THREAD = 0x00000002, + ACTRL_KERNEL_VM = 0x00000004, + ACTRL_KERNEL_VM_READ = 0x00000008, + ACTRL_KERNEL_VM_WRITE = 0x00000010, + ACTRL_KERNEL_DUP_HANDLE = 0x00000020, + ACTRL_KERNEL_PROCESS = 0x00000040, + ACTRL_KERNEL_SET_INFO = 0x00000080, + ACTRL_KERNEL_GET_INFO = 0x00000100, + ACTRL_KERNEL_CONTROL = 0x00000200, + ACTRL_KERNEL_ALERT = 0x00000400, + ACTRL_KERNEL_GET_CONTEXT = 0x00000800, + ACTRL_KERNEL_SET_CONTEXT = 0x00001000, + ACTRL_KERNEL_TOKEN = 0x00002000, + ACTRL_KERNEL_IMPERSONATE = 0x00004000, + ACTRL_KERNEL_DIMPERSONATE = 0x00008000; const uint - ACTRL_PRINT_SADMIN = 0x00000001, - ACTRL_PRINT_SLIST = 0x00000002, - ACTRL_PRINT_PADMIN = 0x00000004, - ACTRL_PRINT_PUSE = 0x00000008, - ACTRL_PRINT_JADMIN = 0x00000010; + ACTRL_PRINT_SADMIN = 0x00000001, + ACTRL_PRINT_SLIST = 0x00000002, + ACTRL_PRINT_PADMIN = 0x00000004, + ACTRL_PRINT_PUSE = 0x00000008, + ACTRL_PRINT_JADMIN = 0x00000010; const uint - ACTRL_SVC_GET_INFO = 0x00000001, - ACTRL_SVC_SET_INFO = 0x00000002, - ACTRL_SVC_STATUS = 0x00000004, - ACTRL_SVC_LIST = 0x00000008, - ACTRL_SVC_START = 0x00000010, - ACTRL_SVC_STOP = 0x00000020, - ACTRL_SVC_PAUSE = 0x00000040, - ACTRL_SVC_INTERROGATE = 0x00000080, - ACTRL_SVC_UCONTROL = 0x00000100; + ACTRL_SVC_GET_INFO = 0x00000001, + ACTRL_SVC_SET_INFO = 0x00000002, + ACTRL_SVC_STATUS = 0x00000004, + ACTRL_SVC_LIST = 0x00000008, + ACTRL_SVC_START = 0x00000010, + ACTRL_SVC_STOP = 0x00000020, + ACTRL_SVC_PAUSE = 0x00000040, + ACTRL_SVC_INTERROGATE = 0x00000080, + ACTRL_SVC_UCONTROL = 0x00000100; const uint - ACTRL_REG_QUERY = 0x00000001, - ACTRL_REG_SET = 0x00000002, - ACTRL_REG_CREATE_CHILD = 0x00000004, - ACTRL_REG_LIST = 0x00000008, - ACTRL_REG_NOTIFY = 0x00000010, - ACTRL_REG_LINK = 0x00000020; + ACTRL_REG_QUERY = 0x00000001, + ACTRL_REG_SET = 0x00000002, + ACTRL_REG_CREATE_CHILD = 0x00000004, + ACTRL_REG_LIST = 0x00000008, + ACTRL_REG_NOTIFY = 0x00000010, + ACTRL_REG_LINK = 0x00000020; const uint - ACTRL_WIN_CLIPBRD = 0x00000001, - ACTRL_WIN_GLOBAL_ATOMS = 0x00000002, - ACTRL_WIN_CREATE = 0x00000004, - ACTRL_WIN_LIST_DESK = 0x00000008, - ACTRL_WIN_LIST = 0x00000010, - ACTRL_WIN_READ_ATTRIBS = 0x00000020, - ACTRL_WIN_WRITE_ATTRIBS = 0x00000040, - ACTRL_WIN_SCREEN = 0x00000080, - ACTRL_WIN_EXIT = 0x00000100; + ACTRL_WIN_CLIPBRD = 0x00000001, + ACTRL_WIN_GLOBAL_ATOMS = 0x00000002, + ACTRL_WIN_CREATE = 0x00000004, + ACTRL_WIN_LIST_DESK = 0x00000008, + ACTRL_WIN_LIST = 0x00000010, + ACTRL_WIN_READ_ATTRIBS = 0x00000020, + ACTRL_WIN_WRITE_ATTRIBS = 0x00000040, + ACTRL_WIN_SCREEN = 0x00000080, + ACTRL_WIN_EXIT = 0x00000100; enum : uint { - ACTRL_ACCESS_NO_OPTIONS = 0x00000000, - ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES = 0x00000001 + ACTRL_ACCESS_NO_OPTIONS = 0x00000000, + ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES = 0x00000001 } const TCHAR[] ACCCTRL_DEFAULT_PROVIDER = "Windows NT Access Provider"; const uint - TRUSTEE_ACCESS_ALLOWED = 0x00000001, - TRUSTEE_ACCESS_READ = 0x00000002, - TRUSTEE_ACCESS_WRITE = 0x00000004, - TRUSTEE_ACCESS_EXPLICIT = 0x00000001, - TRUSTEE_ACCESS_READ_WRITE = 0x00000006, - TRUSTEE_ACCESS_ALL = 0xFFFFFFFF; + TRUSTEE_ACCESS_ALLOWED = 0x00000001, + TRUSTEE_ACCESS_READ = 0x00000002, + TRUSTEE_ACCESS_WRITE = 0x00000004, + TRUSTEE_ACCESS_EXPLICIT = 0x00000001, + TRUSTEE_ACCESS_READ_WRITE = 0x00000006, + TRUSTEE_ACCESS_ALL = 0xFFFFFFFF; const uint - NO_INHERITANCE = 0x0, - SUB_OBJECTS_ONLY_INHERIT = 0x1, - SUB_CONTAINERS_ONLY_INHERIT = 0x2, - SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3, - INHERIT_NO_PROPAGATE = 0x4, - INHERIT_ONLY = 0x8, - INHERITED_ACCESS_ENTRY = 0x10, - INHERITED_PARENT = 0x10000000, - INHERITED_GRANDPARENT = 0x20000000; + NO_INHERITANCE = 0x0, + SUB_OBJECTS_ONLY_INHERIT = 0x1, + SUB_CONTAINERS_ONLY_INHERIT = 0x2, + SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3, + INHERIT_NO_PROPAGATE = 0x4, + INHERIT_ONLY = 0x8, + INHERITED_ACCESS_ENTRY = 0x10, + INHERITED_PARENT = 0x10000000, + INHERITED_GRANDPARENT = 0x20000000; alias ULONG INHERIT_FLAGS, ACCESS_RIGHTS; alias ULONG* PINHERIT_FLAGS, PACCESS_RIGHTS; enum ACCESS_MODE { - NOT_USED_ACCESS, - GRANT_ACCESS, - SET_ACCESS, - DENY_ACCESS, - REVOKE_ACCESS, - SET_AUDIT_SUCCESS, - SET_AUDIT_FAILURE + NOT_USED_ACCESS, + GRANT_ACCESS, + SET_ACCESS, + DENY_ACCESS, + REVOKE_ACCESS, + SET_AUDIT_SUCCESS, + SET_AUDIT_FAILURE } enum SE_OBJECT_TYPE { - SE_UNKNOWN_OBJECT_TYPE, - SE_FILE_OBJECT, - SE_SERVICE, - SE_PRINTER, - SE_REGISTRY_KEY, - SE_LMSHARE, - SE_KERNEL_OBJECT, - SE_WINDOW_OBJECT, - SE_DS_OBJECT, - SE_DS_OBJECT_ALL, - SE_PROVIDER_DEFINED_OBJECT, - SE_WMIGUID_OBJECT, - SE_REGISTRY_WOW64_32KEY + SE_UNKNOWN_OBJECT_TYPE, + SE_FILE_OBJECT, + SE_SERVICE, + SE_PRINTER, + SE_REGISTRY_KEY, + SE_LMSHARE, + SE_KERNEL_OBJECT, + SE_WINDOW_OBJECT, + SE_DS_OBJECT, + SE_DS_OBJECT_ALL, + SE_PROVIDER_DEFINED_OBJECT, + SE_WMIGUID_OBJECT, + SE_REGISTRY_WOW64_32KEY } enum TRUSTEE_TYPE { - TRUSTEE_IS_UNKNOWN, - TRUSTEE_IS_USER, - TRUSTEE_IS_GROUP, - TRUSTEE_IS_DOMAIN, - TRUSTEE_IS_ALIAS, - TRUSTEE_IS_WELL_KNOWN_GROUP, - TRUSTEE_IS_DELETED, - TRUSTEE_IS_INVALID, - TRUSTEE_IS_COMPUTER + TRUSTEE_IS_UNKNOWN, + TRUSTEE_IS_USER, + TRUSTEE_IS_GROUP, + TRUSTEE_IS_DOMAIN, + TRUSTEE_IS_ALIAS, + TRUSTEE_IS_WELL_KNOWN_GROUP, + TRUSTEE_IS_DELETED, + TRUSTEE_IS_INVALID, + TRUSTEE_IS_COMPUTER } enum TRUSTEE_FORM { - TRUSTEE_IS_SID, - TRUSTEE_IS_NAME, - TRUSTEE_BAD_FORM, - TRUSTEE_IS_OBJECTS_AND_SID, - TRUSTEE_IS_OBJECTS_AND_NAME + TRUSTEE_IS_SID, + TRUSTEE_IS_NAME, + TRUSTEE_BAD_FORM, + TRUSTEE_IS_OBJECTS_AND_SID, + TRUSTEE_IS_OBJECTS_AND_NAME } enum MULTIPLE_TRUSTEE_OPERATION { - NO_MULTIPLE_TRUSTEE, - TRUSTEE_IS_IMPERSONATE + NO_MULTIPLE_TRUSTEE, + TRUSTEE_IS_IMPERSONATE } struct TRUSTEE_A { - TRUSTEE_A* pMultipleTrustee; - MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; - TRUSTEE_FORM TrusteeForm; - TRUSTEE_TYPE TrusteeType; - LPSTR ptstrName; + TRUSTEE_A* pMultipleTrustee; + MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; + TRUSTEE_FORM TrusteeForm; + TRUSTEE_TYPE TrusteeType; + LPSTR ptstrName; } alias TRUSTEE_A TRUSTEEA; alias TRUSTEE_A* PTRUSTEE_A, PTRUSTEEA; struct TRUSTEE_W { - TRUSTEE_W* pMultipleTrustee; - MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; - TRUSTEE_FORM TrusteeForm; - TRUSTEE_TYPE TrusteeType; - LPWSTR ptstrName; + TRUSTEE_W* pMultipleTrustee; + MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; + TRUSTEE_FORM TrusteeForm; + TRUSTEE_TYPE TrusteeType; + LPWSTR ptstrName; } alias TRUSTEE_W TRUSTEEW; alias TRUSTEEW* PTRUSTEE_W, PTRUSTEEW; struct ACTRL_ACCESS_ENTRYA { - TRUSTEE_A Trustee; - ULONG fAccessFlags; - ACCESS_RIGHTS Access; - ACCESS_RIGHTS ProvSpecificAccess; - INHERIT_FLAGS Inheritance; - LPCSTR lpInheritProperty; + TRUSTEE_A Trustee; + ULONG fAccessFlags; + ACCESS_RIGHTS Access; + ACCESS_RIGHTS ProvSpecificAccess; + INHERIT_FLAGS Inheritance; + LPCSTR lpInheritProperty; } alias ACTRL_ACCESS_ENTRYA* PACTRL_ACCESS_ENTRYA; struct ACTRL_ACCESS_ENTRYW { - TRUSTEE_W Trustee; - ULONG fAccessFlags; - ACCESS_RIGHTS Access; - ACCESS_RIGHTS ProvSpecificAccess; - INHERIT_FLAGS Inheritance; - LPCWSTR lpInheritProperty; + TRUSTEE_W Trustee; + ULONG fAccessFlags; + ACCESS_RIGHTS Access; + ACCESS_RIGHTS ProvSpecificAccess; + INHERIT_FLAGS Inheritance; + LPCWSTR lpInheritProperty; } alias ACTRL_ACCESS_ENTRYW* PACTRL_ACCESS_ENTRYW; struct ACTRL_ACCESS_ENTRY_LISTA { - ULONG cEntries; - ACTRL_ACCESS_ENTRYA* pAccessList; + ULONG cEntries; + ACTRL_ACCESS_ENTRYA* pAccessList; } alias ACTRL_ACCESS_ENTRY_LISTA* PACTRL_ACCESS_ENTRY_LISTA; struct ACTRL_ACCESS_ENTRY_LISTW { - ULONG cEntries; - ACTRL_ACCESS_ENTRYW* pAccessList; + ULONG cEntries; + ACTRL_ACCESS_ENTRYW* pAccessList; } alias ACTRL_ACCESS_ENTRY_LISTW* PACTRL_ACCESS_ENTRY_LISTW; struct ACTRL_PROPERTY_ENTRYA { - LPCSTR lpProperty; - PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; - ULONG fListFlags; + LPCSTR lpProperty; + PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; + ULONG fListFlags; } alias ACTRL_PROPERTY_ENTRYA* PACTRL_PROPERTY_ENTRYA; struct ACTRL_PROPERTY_ENTRYW { - LPCWSTR lpProperty; - PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; - ULONG fListFlags; + LPCWSTR lpProperty; + PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; + ULONG fListFlags; } alias ACTRL_PROPERTY_ENTRYW* PACTRL_PROPERTY_ENTRYW; struct ACTRL_ACCESSA { - ULONG cEntries; - PACTRL_PROPERTY_ENTRYA pPropertyAccessList; + ULONG cEntries; + PACTRL_PROPERTY_ENTRYA pPropertyAccessList; } alias ACTRL_ACCESSA ACTRL_AUDITA; alias ACTRL_ACCESSA* PACTRL_ACCESSA, PACTRL_AUDITA; struct ACTRL_ACCESSW { - ULONG cEntries; - PACTRL_PROPERTY_ENTRYW pPropertyAccessList; + ULONG cEntries; + PACTRL_PROPERTY_ENTRYW pPropertyAccessList; } alias ACTRL_ACCESSW ACTRL_AUDITW; alias ACTRL_ACCESSW* PACTRL_ACCESSW, PACTRL_AUDITW; struct TRUSTEE_ACCESSA { - LPSTR lpProperty; - ACCESS_RIGHTS Access; - ULONG fAccessFlags; - ULONG fReturnedAccess; + LPSTR lpProperty; + ACCESS_RIGHTS Access; + ULONG fAccessFlags; + ULONG fReturnedAccess; } alias TRUSTEE_ACCESSA* PTRUSTEE_ACCESSA; struct TRUSTEE_ACCESSW { - LPWSTR lpProperty; - ACCESS_RIGHTS Access; - ULONG fAccessFlags; - ULONG fReturnedAccess; + LPWSTR lpProperty; + ACCESS_RIGHTS Access; + ULONG fAccessFlags; + ULONG fReturnedAccess; } alias TRUSTEE_ACCESSW* PTRUSTEE_ACCESSW; struct ACTRL_OVERLAPPED { - union { - PVOID Provider; - ULONG Reserved1; - } - ULONG Reserved2; - HANDLE hEvent; + union { + PVOID Provider; + ULONG Reserved1; + } + ULONG Reserved2; + HANDLE hEvent; } alias ACTRL_OVERLAPPED* PACTRL_OVERLAPPED; struct ACTRL_ACCESS_INFOA { - ULONG fAccessPermission; - LPSTR lpAccessPermissionName; + ULONG fAccessPermission; + LPSTR lpAccessPermissionName; } alias ACTRL_ACCESS_INFOA* PACTRL_ACCESS_INFOA; struct ACTRL_ACCESS_INFOW { - ULONG fAccessPermission; - LPWSTR lpAccessPermissionName; + ULONG fAccessPermission; + LPWSTR lpAccessPermissionName; } alias ACTRL_ACCESS_INFOW* PACTRL_ACCESS_INFOW; struct ACTRL_CONTROL_INFOA { - LPSTR lpControlId; - LPSTR lpControlName; + LPSTR lpControlId; + LPSTR lpControlName; } alias ACTRL_CONTROL_INFOA* PACTRL_CONTROL_INFOA; struct ACTRL_CONTROL_INFOW { - LPWSTR lpControlId; - LPWSTR lpControlName; + LPWSTR lpControlId; + LPWSTR lpControlName; } alias ACTRL_CONTROL_INFOW* PACTRL_CONTROL_INFOW; struct EXPLICIT_ACCESS_A { - DWORD grfAccessPermissions; - ACCESS_MODE grfAccessMode; - DWORD grfInheritance; - TRUSTEE_A Trustee; + DWORD grfAccessPermissions; + ACCESS_MODE grfAccessMode; + DWORD grfInheritance; + TRUSTEE_A Trustee; } alias EXPLICIT_ACCESS_A EXPLICIT_ACCESSA; alias EXPLICIT_ACCESS_A* PEXPLICIT_ACCESS_A, PEXPLICIT_ACCESSA; struct EXPLICIT_ACCESS_W { - DWORD grfAccessPermissions; - ACCESS_MODE grfAccessMode; - DWORD grfInheritance; - TRUSTEE_W Trustee; + DWORD grfAccessPermissions; + ACCESS_MODE grfAccessMode; + DWORD grfInheritance; + TRUSTEE_W Trustee; } alias EXPLICIT_ACCESS_W EXPLICIT_ACCESSW; alias EXPLICIT_ACCESS_W* PEXPLICIT_ACCESS_W, PEXPLICIT_ACCESSW; struct OBJECTS_AND_SID { - DWORD ObjectsPresent; - GUID ObjectTypeGuid; - GUID InheritedObjectTypeGuid; - SID* pSid; + DWORD ObjectsPresent; + GUID ObjectTypeGuid; + GUID InheritedObjectTypeGuid; + SID* pSid; } alias OBJECTS_AND_SID* POBJECTS_AND_SID; struct OBJECTS_AND_NAME_A { - DWORD ObjectsPresent; - SE_OBJECT_TYPE ObjectType; - LPSTR ObjectTypeName; - LPSTR InheritedObjectTypeName; - LPSTR ptstrName; + DWORD ObjectsPresent; + SE_OBJECT_TYPE ObjectType; + LPSTR ObjectTypeName; + LPSTR InheritedObjectTypeName; + LPSTR ptstrName; } alias OBJECTS_AND_NAME_A* POBJECTS_AND_NAME_A; struct OBJECTS_AND_NAME_W { - DWORD ObjectsPresent; - SE_OBJECT_TYPE ObjectType; - LPWSTR ObjectTypeName; - LPWSTR InheritedObjectTypeName; - LPWSTR ptstrName; + DWORD ObjectsPresent; + SE_OBJECT_TYPE ObjectType; + LPWSTR ObjectTypeName; + LPWSTR InheritedObjectTypeName; + LPWSTR ptstrName; } alias OBJECTS_AND_NAME_W* POBJECTS_AND_NAME_W; static if (_WIN32_WINNT >= 0x501) { - struct INHERITED_FROMA { - LONG GenerationGap; - LPSTR AncestorName; - } - alias INHERITED_FROMA* PINHERITED_FROMA; - - struct INHERITED_FROMW { - LONG GenerationGap; - LPWSTR AncestorName; - } - alias INHERITED_FROMW* PINHERITED_FROMW; + struct INHERITED_FROMA { + LONG GenerationGap; + LPSTR AncestorName; + } + alias INHERITED_FROMA* PINHERITED_FROMA; + + struct INHERITED_FROMW { + LONG GenerationGap; + LPWSTR AncestorName; + } + alias INHERITED_FROMW* PINHERITED_FROMW; } version (Unicode) { - alias TRUSTEEW TRUSTEE; - alias ACTRL_ACCESSW ACTRL_ACCESS; - alias ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST; - alias ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO; - alias ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY; - alias ACTRL_AUDITW ACTRL_AUDIT; - alias ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO; - alias EXPLICIT_ACCESSW EXPLICIT_ACCESS; - alias TRUSTEE_ACCESSW TRUSTEE_ACCESS; - alias OBJECTS_AND_NAME_W OBJECTS_AND_NAME_; - static if (_WIN32_WINNT >= 0x501) { - alias INHERITED_FROMW INHERITED_FROM; - } + alias TRUSTEEW TRUSTEE; + alias ACTRL_ACCESSW ACTRL_ACCESS; + alias ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST; + alias ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO; + alias ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY; + alias ACTRL_AUDITW ACTRL_AUDIT; + alias ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO; + alias EXPLICIT_ACCESSW EXPLICIT_ACCESS; + alias TRUSTEE_ACCESSW TRUSTEE_ACCESS; + alias OBJECTS_AND_NAME_W OBJECTS_AND_NAME_; + static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROMW INHERITED_FROM; + } } else { - alias TRUSTEEA TRUSTEE; - alias ACTRL_ACCESSA ACTRL_ACCESS; - alias ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST; - alias ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO; - alias ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY; - alias ACTRL_AUDITA ACTRL_AUDIT; - alias ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO; - alias EXPLICIT_ACCESSA EXPLICIT_ACCESS; - alias TRUSTEE_ACCESSA TRUSTEE_ACCESS; - alias OBJECTS_AND_NAME_A OBJECTS_AND_NAME_; - static if (_WIN32_WINNT >= 0x501) { - alias INHERITED_FROMA INHERITED_FROM; - } + alias TRUSTEEA TRUSTEE; + alias ACTRL_ACCESSA ACTRL_ACCESS; + alias ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST; + alias ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO; + alias ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY; + alias ACTRL_AUDITA ACTRL_AUDIT; + alias ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO; + alias EXPLICIT_ACCESSA EXPLICIT_ACCESS; + alias TRUSTEE_ACCESSA TRUSTEE_ACCESS; + alias OBJECTS_AND_NAME_A OBJECTS_AND_NAME_; + static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROMA INHERITED_FROM; + } } alias TRUSTEE TRUSTEE_; @@ -415,5 +415,5 @@ alias EXPLICIT_ACCESS* PEXPLICIT_ACCESS, PEXPLICIT_ACCESS_; alias TRUSTEE_ACCESS* PTRUSTEE_ACCESS; alias OBJECTS_AND_NAME_* POBJECTS_AND_NAME_; static if (_WIN32_WINNT >= 0x501) { - alias INHERITED_FROM* PINHERITED_FROM; + alias INHERITED_FROM* PINHERITED_FROM; } diff --git a/src/core/sys/windows/aclapi.d b/src/core/sys/windows/aclapi.d index f4706de11c..5ee322bd87 100644 --- a/src/core/sys/windows/aclapi.d +++ b/src/core/sys/windows/aclapi.d @@ -13,124 +13,124 @@ pragma(lib, "advapi32"); import core.sys.windows.windows, core.sys.windows.accctrl; extern (Windows) { - VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD, - ACCESS_MODE, DWORD); - VOID BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, DWORD, - ACCESS_MODE, DWORD); - DWORD BuildSecurityDescriptorA(PTRUSTEE_A, PTRUSTEE_A , ULONG, - PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR, - PULONG, PSECURITY_DESCRIPTOR*); - DWORD BuildSecurityDescriptorW(PTRUSTEE_W, PTRUSTEE_W , ULONG, - PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR, - PULONG, PSECURITY_DESCRIPTOR*); - VOID BuildTrusteeWithNameA(PTRUSTEE_A, LPSTR); - VOID BuildTrusteeWithNameW(PTRUSTEE_W, LPWSTR); - VOID BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A, POBJECTS_AND_NAME_A, - SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR); - VOID BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W, POBJECTS_AND_NAME_W, - SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR); - VOID BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A, POBJECTS_AND_SID, - GUID*, GUID*, PSID); - VOID BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W, POBJECTS_AND_SID, - GUID*, GUID*, PSID); - VOID BuildTrusteeWithSidA(PTRUSTEE_A, PSID); - VOID BuildTrusteeWithSidW(PTRUSTEE_W, PSID); - DWORD GetAuditedPermissionsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK, - PACCESS_MASK); - DWORD GetAuditedPermissionsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK, - PACCESS_MASK); - DWORD GetEffectiveRightsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK); - DWORD GetEffectiveRightsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK); - DWORD GetExplicitEntriesFromAclA(PACL, PULONG, PEXPLICIT_ACCESS_A*); - DWORD GetExplicitEntriesFromAclW(PACL, PULONG, PEXPLICIT_ACCESS_W*); - static if (_WIN32_WINNT >= 0x501) { - DWORD GetInheritanceSourceA(LPSTR, SE_OBJECT_TYPE, - SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, - PGENERIC_MAPPING, PINHERITED_FROMA); - DWORD GetInheritanceSourceW(LPWSTR, SE_OBJECT_TYPE, - SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, - PGENERIC_MAPPING, PINHERITED_FROMW); - } - DWORD GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); - DWORD GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); - DWORD GetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); - TRUSTEE_FORM GetTrusteeFormA(PTRUSTEE_A); - TRUSTEE_FORM GetTrusteeFormW(PTRUSTEE_W); - LPSTR GetTrusteeNameA(PTRUSTEE_A); - LPWSTR GetTrusteeNameW(PTRUSTEE_W); - TRUSTEE_TYPE GetTrusteeTypeA(PTRUSTEE_A); - TRUSTEE_TYPE GetTrusteeTypeW(PTRUSTEE_W); - DWORD LookupSecurityDescriptorPartsA(PTRUSTEE_A*, PTRUSTEE_A*, PULONG, - PEXPLICIT_ACCESS_A*, PULONG, PEXPLICIT_ACCESS_A*, - PSECURITY_DESCRIPTOR); - DWORD LookupSecurityDescriptorPartsW(PTRUSTEE_W*, PTRUSTEE_W*, PULONG, - PEXPLICIT_ACCESS_W*, PULONG, PEXPLICIT_ACCESS_W*, - PSECURITY_DESCRIPTOR); - DWORD SetEntriesInAclA(ULONG, PEXPLICIT_ACCESS_A, PACL, PACL*); - DWORD SetEntriesInAclW(ULONG, PEXPLICIT_ACCESS_W, PACL, PACL*); - DWORD SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID, PSID, PACL, PACL); - DWORD SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID, PSID, PACL, PACL); - DWORD SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID, - PSID, PACL, PACL); - VOID BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, - PTRUSTEE_A, DWORD, ACCESS_MODE, DWORD); - VOID BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, - PTRUSTEE_W, DWORD, ACCESS_MODE, DWORD); - VOID BuildImpersonateTrusteeA(PTRUSTEE_A, PTRUSTEE_A); - VOID BuildImpersonateTrusteeW(PTRUSTEE_W, PTRUSTEE_W); - PTRUSTEE_A GetMultipleTrusteeA(PTRUSTEE_A); - PTRUSTEE_W GetMultipleTrusteeW(PTRUSTEE_W); - MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationA(PTRUSTEE_A); - MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationW(PTRUSTEE_W); + VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD, + ACCESS_MODE, DWORD); + VOID BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, DWORD, + ACCESS_MODE, DWORD); + DWORD BuildSecurityDescriptorA(PTRUSTEE_A, PTRUSTEE_A , ULONG, + PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR, + PULONG, PSECURITY_DESCRIPTOR*); + DWORD BuildSecurityDescriptorW(PTRUSTEE_W, PTRUSTEE_W , ULONG, + PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR, + PULONG, PSECURITY_DESCRIPTOR*); + VOID BuildTrusteeWithNameA(PTRUSTEE_A, LPSTR); + VOID BuildTrusteeWithNameW(PTRUSTEE_W, LPWSTR); + VOID BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A, POBJECTS_AND_NAME_A, + SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR); + VOID BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W, POBJECTS_AND_NAME_W, + SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR); + VOID BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A, POBJECTS_AND_SID, + GUID*, GUID*, PSID); + VOID BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W, POBJECTS_AND_SID, + GUID*, GUID*, PSID); + VOID BuildTrusteeWithSidA(PTRUSTEE_A, PSID); + VOID BuildTrusteeWithSidW(PTRUSTEE_W, PSID); + DWORD GetAuditedPermissionsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK, + PACCESS_MASK); + DWORD GetAuditedPermissionsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK, + PACCESS_MASK); + DWORD GetEffectiveRightsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK); + DWORD GetEffectiveRightsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK); + DWORD GetExplicitEntriesFromAclA(PACL, PULONG, PEXPLICIT_ACCESS_A*); + DWORD GetExplicitEntriesFromAclW(PACL, PULONG, PEXPLICIT_ACCESS_W*); + static if (_WIN32_WINNT >= 0x501) { + DWORD GetInheritanceSourceA(LPSTR, SE_OBJECT_TYPE, + SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, + PGENERIC_MAPPING, PINHERITED_FROMA); + DWORD GetInheritanceSourceW(LPWSTR, SE_OBJECT_TYPE, + SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, + PGENERIC_MAPPING, PINHERITED_FROMW); + } + DWORD GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + DWORD GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + DWORD GetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + TRUSTEE_FORM GetTrusteeFormA(PTRUSTEE_A); + TRUSTEE_FORM GetTrusteeFormW(PTRUSTEE_W); + LPSTR GetTrusteeNameA(PTRUSTEE_A); + LPWSTR GetTrusteeNameW(PTRUSTEE_W); + TRUSTEE_TYPE GetTrusteeTypeA(PTRUSTEE_A); + TRUSTEE_TYPE GetTrusteeTypeW(PTRUSTEE_W); + DWORD LookupSecurityDescriptorPartsA(PTRUSTEE_A*, PTRUSTEE_A*, PULONG, + PEXPLICIT_ACCESS_A*, PULONG, PEXPLICIT_ACCESS_A*, + PSECURITY_DESCRIPTOR); + DWORD LookupSecurityDescriptorPartsW(PTRUSTEE_W*, PTRUSTEE_W*, PULONG, + PEXPLICIT_ACCESS_W*, PULONG, PEXPLICIT_ACCESS_W*, + PSECURITY_DESCRIPTOR); + DWORD SetEntriesInAclA(ULONG, PEXPLICIT_ACCESS_A, PACL, PACL*); + DWORD SetEntriesInAclW(ULONG, PEXPLICIT_ACCESS_W, PACL, PACL*); + DWORD SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID, PSID, PACL, PACL); + DWORD SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID, PSID, PACL, PACL); + DWORD SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID, + PSID, PACL, PACL); + VOID BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, + PTRUSTEE_A, DWORD, ACCESS_MODE, DWORD); + VOID BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, + PTRUSTEE_W, DWORD, ACCESS_MODE, DWORD); + VOID BuildImpersonateTrusteeA(PTRUSTEE_A, PTRUSTEE_A); + VOID BuildImpersonateTrusteeW(PTRUSTEE_W, PTRUSTEE_W); + PTRUSTEE_A GetMultipleTrusteeA(PTRUSTEE_A); + PTRUSTEE_W GetMultipleTrusteeW(PTRUSTEE_W); + MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationA(PTRUSTEE_A); + MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationW(PTRUSTEE_W); } version (Unicode) { - alias BuildExplicitAccessWithNameW BuildExplicitAccessWithName; - alias BuildSecurityDescriptorW BuildSecurityDescriptor; - alias BuildTrusteeWithNameW BuildTrusteeWithName; - alias BuildTrusteeWithObjectsAndNameW BuildTrusteeWithObjectsAndName; - alias BuildTrusteeWithObjectsAndSidW BuildTrusteeWithObjectsAndSid; - alias BuildTrusteeWithSidW BuildTrusteeWithSid; - alias GetAuditedPermissionsFromAclW GetAuditedPermissionsFromAcl; - alias GetEffectiveRightsFromAclW GetEffectiveRightsFromAcl; - alias GetExplicitEntriesFromAclW GetExplicitEntriesFromAcl; - alias GetNamedSecurityInfoW GetNamedSecurityInfo; - alias GetTrusteeFormW GetTrusteeForm; - alias GetTrusteeNameW GetTrusteeName; - alias GetTrusteeTypeW GetTrusteeType; - alias LookupSecurityDescriptorPartsW LookupSecurityDescriptorParts; - alias SetEntriesInAclW SetEntriesInAcl; - alias SetNamedSecurityInfoW SetNamedSecurityInfo; - alias BuildImpersonateExplicitAccessWithNameW - BuildImpersonateExplicitAccessWithName; - alias BuildImpersonateTrusteeW BuildImpersonateTrustee; - alias GetMultipleTrusteeW GetMultipleTrustee; - alias GetMultipleTrusteeOperationW GetMultipleTrusteeOperation; + alias BuildExplicitAccessWithNameW BuildExplicitAccessWithName; + alias BuildSecurityDescriptorW BuildSecurityDescriptor; + alias BuildTrusteeWithNameW BuildTrusteeWithName; + alias BuildTrusteeWithObjectsAndNameW BuildTrusteeWithObjectsAndName; + alias BuildTrusteeWithObjectsAndSidW BuildTrusteeWithObjectsAndSid; + alias BuildTrusteeWithSidW BuildTrusteeWithSid; + alias GetAuditedPermissionsFromAclW GetAuditedPermissionsFromAcl; + alias GetEffectiveRightsFromAclW GetEffectiveRightsFromAcl; + alias GetExplicitEntriesFromAclW GetExplicitEntriesFromAcl; + alias GetNamedSecurityInfoW GetNamedSecurityInfo; + alias GetTrusteeFormW GetTrusteeForm; + alias GetTrusteeNameW GetTrusteeName; + alias GetTrusteeTypeW GetTrusteeType; + alias LookupSecurityDescriptorPartsW LookupSecurityDescriptorParts; + alias SetEntriesInAclW SetEntriesInAcl; + alias SetNamedSecurityInfoW SetNamedSecurityInfo; + alias BuildImpersonateExplicitAccessWithNameW + BuildImpersonateExplicitAccessWithName; + alias BuildImpersonateTrusteeW BuildImpersonateTrustee; + alias GetMultipleTrusteeW GetMultipleTrustee; + alias GetMultipleTrusteeOperationW GetMultipleTrusteeOperation; } else { - alias BuildExplicitAccessWithNameA BuildExplicitAccessWithName; - alias BuildSecurityDescriptorA BuildSecurityDescriptor; - alias BuildTrusteeWithNameA BuildTrusteeWithName; - alias BuildTrusteeWithObjectsAndNameA BuildTrusteeWithObjectsAndName; - alias BuildTrusteeWithObjectsAndSidA BuildTrusteeWithObjectsAndSid; - alias BuildTrusteeWithSidA BuildTrusteeWithSid; - alias GetAuditedPermissionsFromAclA GetAuditedPermissionsFromAcl; - alias GetEffectiveRightsFromAclA GetEffectiveRightsFromAcl; - alias GetExplicitEntriesFromAclA GetExplicitEntriesFromAcl; - alias GetNamedSecurityInfoA GetNamedSecurityInfo; - alias GetTrusteeFormA GetTrusteeForm; - alias GetTrusteeNameA GetTrusteeName; - alias GetTrusteeTypeA GetTrusteeType; - alias LookupSecurityDescriptorPartsA LookupSecurityDescriptorParts; - alias SetEntriesInAclA SetEntriesInAcl; - alias SetNamedSecurityInfoA SetNamedSecurityInfo; - alias BuildImpersonateExplicitAccessWithNameA - BuildImpersonateExplicitAccessWithName; - alias BuildImpersonateTrusteeA BuildImpersonateTrustee; - alias GetMultipleTrusteeA GetMultipleTrustee; - alias GetMultipleTrusteeOperationA GetMultipleTrusteeOperation; + alias BuildExplicitAccessWithNameA BuildExplicitAccessWithName; + alias BuildSecurityDescriptorA BuildSecurityDescriptor; + alias BuildTrusteeWithNameA BuildTrusteeWithName; + alias BuildTrusteeWithObjectsAndNameA BuildTrusteeWithObjectsAndName; + alias BuildTrusteeWithObjectsAndSidA BuildTrusteeWithObjectsAndSid; + alias BuildTrusteeWithSidA BuildTrusteeWithSid; + alias GetAuditedPermissionsFromAclA GetAuditedPermissionsFromAcl; + alias GetEffectiveRightsFromAclA GetEffectiveRightsFromAcl; + alias GetExplicitEntriesFromAclA GetExplicitEntriesFromAcl; + alias GetNamedSecurityInfoA GetNamedSecurityInfo; + alias GetTrusteeFormA GetTrusteeForm; + alias GetTrusteeNameA GetTrusteeName; + alias GetTrusteeTypeA GetTrusteeType; + alias LookupSecurityDescriptorPartsA LookupSecurityDescriptorParts; + alias SetEntriesInAclA SetEntriesInAcl; + alias SetNamedSecurityInfoA SetNamedSecurityInfo; + alias BuildImpersonateExplicitAccessWithNameA + BuildImpersonateExplicitAccessWithName; + alias BuildImpersonateTrusteeA BuildImpersonateTrustee; + alias GetMultipleTrusteeA GetMultipleTrustee; + alias GetMultipleTrusteeOperationA GetMultipleTrusteeOperation; } diff --git a/src/core/sys/windows/aclui.d b/src/core/sys/windows/aclui.d index 5839d2a403..0b97451f6f 100644 --- a/src/core/sys/windows/aclui.d +++ b/src/core/sys/windows/aclui.d @@ -13,8 +13,8 @@ pragma(lib, "aclui"); private import core.sys.windows.w32api; /* static assert (_WIN32_WINNT >= 0x500, - "core.sys.windows.aclui is available only if version Windows2000, WindowsXP, Windows2003 " - "or WindowsVista is set"); + "core.sys.windows.aclui is available only if version Windows2000, WindowsXP, Windows2003 " + "or WindowsVista is set"); */ import core.sys.windows.accctrl, core.sys.windows.commctrl, core.sys.windows.objbase; private import core.sys.windows.basetyps, core.sys.windows.prsht, core.sys.windows.unknwn, core.sys.windows.windef, @@ -22,63 +22,63 @@ private import core.sys.windows.basetyps, core.sys.windows.prsht, core.sys.windo struct SI_OBJECT_INFO { - DWORD dwFlags; - HINSTANCE hInstance; - LPWSTR pszServerName; - LPWSTR pszObjectName; - LPWSTR pszPageTitle; - GUID guidObjectType; + DWORD dwFlags; + HINSTANCE hInstance; + LPWSTR pszServerName; + LPWSTR pszObjectName; + LPWSTR pszPageTitle; + GUID guidObjectType; } alias SI_OBJECT_INFO* PSI_OBJECT_INFO; // values for SI_OBJECT_INFO.dwFlags const DWORD - SI_EDIT_PERMS = 0x00000000, - SI_EDIT_OWNER = 0x00000001, - SI_EDIT_AUDITS = 0x00000002, - SI_CONTAINER = 0x00000004, - SI_READONLY = 0x00000008, - SI_ADVANCED = 0x00000010, - SI_RESET = 0x00000020, - SI_OWNER_READONLY = 0x00000040, - SI_EDIT_PROPERTIES = 0x00000080, - SI_OWNER_RECURSE = 0x00000100, - SI_NO_ACL_PROTECT = 0x00000200, - SI_NO_TREE_APPLY = 0x00000400, - SI_PAGE_TITLE = 0x00000800, - SI_SERVER_IS_DC = 0x00001000, - SI_RESET_DACL_TREE = 0x00004000, - SI_RESET_SACL_TREE = 0x00008000, - SI_OBJECT_GUID = 0x00010000, - SI_EDIT_EFFECTIVE = 0x00020000, - SI_RESET_DACL = 0x00040000, - SI_RESET_SACL = 0x00080000, - SI_RESET_OWNER = 0x00100000, - SI_NO_ADDITIONAL_PERMISSION = 0x00200000, - SI_MAY_WRITE = 0x10000000, - SI_EDIT_ALL = SI_EDIT_PERMS | SI_EDIT_OWNER - | SI_EDIT_AUDITS; + SI_EDIT_PERMS = 0x00000000, + SI_EDIT_OWNER = 0x00000001, + SI_EDIT_AUDITS = 0x00000002, + SI_CONTAINER = 0x00000004, + SI_READONLY = 0x00000008, + SI_ADVANCED = 0x00000010, + SI_RESET = 0x00000020, + SI_OWNER_READONLY = 0x00000040, + SI_EDIT_PROPERTIES = 0x00000080, + SI_OWNER_RECURSE = 0x00000100, + SI_NO_ACL_PROTECT = 0x00000200, + SI_NO_TREE_APPLY = 0x00000400, + SI_PAGE_TITLE = 0x00000800, + SI_SERVER_IS_DC = 0x00001000, + SI_RESET_DACL_TREE = 0x00004000, + SI_RESET_SACL_TREE = 0x00008000, + SI_OBJECT_GUID = 0x00010000, + SI_EDIT_EFFECTIVE = 0x00020000, + SI_RESET_DACL = 0x00040000, + SI_RESET_SACL = 0x00080000, + SI_RESET_OWNER = 0x00100000, + SI_NO_ADDITIONAL_PERMISSION = 0x00200000, + SI_MAY_WRITE = 0x10000000, + SI_EDIT_ALL = SI_EDIT_PERMS | SI_EDIT_OWNER + | SI_EDIT_AUDITS; struct SI_ACCESS { - const(GUID)* pguid; - ACCESS_MASK mask; - LPCWSTR pszName; - DWORD dwFlags; + const(GUID)* pguid; + ACCESS_MASK mask; + LPCWSTR pszName; + DWORD dwFlags; } alias SI_ACCESS* PSI_ACCESS; // values for SI_ACCESS.dwFlags const DWORD - SI_ACCESS_SPECIFIC = 0x00010000, - SI_ACCESS_GENERAL = 0x00020000, - SI_ACCESS_CONTAINER = 0x00040000, - SI_ACCESS_PROPERTY = 0x00080000; + SI_ACCESS_SPECIFIC = 0x00010000, + SI_ACCESS_GENERAL = 0x00020000, + SI_ACCESS_CONTAINER = 0x00040000, + SI_ACCESS_PROPERTY = 0x00080000; struct SI_INHERIT_TYPE { - const(GUID)* pguid; - ULONG dwFlags; - LPCWSTR pszName; + const(GUID)* pguid; + ULONG dwFlags; + LPCWSTR pszName; } alias SI_INHERIT_TYPE* PSI_INHERIT_TYPE; @@ -87,22 +87,22 @@ alias SI_INHERIT_TYPE* PSI_INHERIT_TYPE; defined elsewhere */ enum SI_PAGE_TYPE { - SI_PAGE_PERM, - SI_PAGE_ADVPERM, - SI_PAGE_AUDIT, - SI_PAGE_OWNER + SI_PAGE_PERM, + SI_PAGE_ADVPERM, + SI_PAGE_AUDIT, + SI_PAGE_OWNER } const uint PSPCB_SI_INITDIALOG = WM_USER + 1; interface ISecurityInformation : IUnknown { - HRESULT GetObjectInformation(PSI_OBJECT_INFO); - HRESULT GetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR*, BOOL); - HRESULT SetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - HRESULT GetAccessRights(const(GUID)*, DWORD, PSI_ACCESS*, ULONG*, ULONG*); - HRESULT MapGeneric(const(GUID)*, UCHAR*, ACCESS_MASK*); - HRESULT GetInheritTypes(PSI_INHERIT_TYPE*, ULONG*); - HRESULT PropertySheetPageCallback(HWND, UINT, SI_PAGE_TYPE); + HRESULT GetObjectInformation(PSI_OBJECT_INFO); + HRESULT GetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR*, BOOL); + HRESULT SetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + HRESULT GetAccessRights(const(GUID)*, DWORD, PSI_ACCESS*, ULONG*, ULONG*); + HRESULT MapGeneric(const(GUID)*, UCHAR*, ACCESS_MASK*); + HRESULT GetInheritTypes(PSI_INHERIT_TYPE*, ULONG*); + HRESULT PropertySheetPageCallback(HWND, UINT, SI_PAGE_TYPE); } alias ISecurityInformation LPSECURITYINFO; @@ -114,6 +114,6 @@ alias ISecurityInformation LPSECURITYINFO; extern (C) /+DECLSPEC_IMPORT+/ extern const IID IID_ISecurityInformation; extern (Windows) { - HPROPSHEETPAGE CreateSecurityPage(LPSECURITYINFO psi); - BOOL EditSecurity(HWND hwndOwner, LPSECURITYINFO psi); + HPROPSHEETPAGE CreateSecurityPage(LPSECURITYINFO psi); + BOOL EditSecurity(HWND hwndOwner, LPSECURITYINFO psi); } diff --git a/src/core/sys/windows/basetsd.d b/src/core/sys/windows/basetsd.d index 67f50b7875..36797a62a8 100644 --- a/src/core/sys/windows/basetsd.d +++ b/src/core/sys/windows/basetsd.d @@ -14,23 +14,23 @@ module core.sys.windows.basetsd; * Since removed - now supporting only D2 */ /*template CPtr(T) { - version (D_Version2) { - // must use mixin so that it doesn't cause a syntax error under D1 - mixin("alias const(T)* CPtr;"); - } else { - alias T* CPtr; - } + version (D_Version2) { + // must use mixin so that it doesn't cause a syntax error under D1 + mixin("alias const(T)* CPtr;"); + } else { + alias T* CPtr; + } }*/ /* [CyberShadow VP 2011.12.22] typedef is now deprecated in D2. */ template TypeDef(T) { - version (D_Version2) { - alias T TypeDef; - } else { - // must use mixin so that it doesn't cause a deprecation error under D2 - mixin("typedef T TypeDef;"); - } + version (D_Version2) { + alias T TypeDef; + } else { + // must use mixin so that it doesn't cause a deprecation error under D2 + mixin("typedef T TypeDef;"); + } } // [SnakE 2009-02-23] Moved HANDLE definition here from winnt.d to avoid @@ -49,87 +49,87 @@ package template DECLARE_HANDLE(string name, base = HANDLE) { alias HANDLE* PHANDLE, LPHANDLE; version (Win64) { - alias long __int3264; - const ulong ADDRESS_TAG_BIT = 0x40000000000; - - alias long INT_PTR, LONG_PTR; - alias long* PINT_PTR, PLONG_PTR; - alias ulong UINT_PTR, ULONG_PTR, HANDLE_PTR; - alias ulong* PUINT_PTR, PULONG_PTR; - alias int HALF_PTR; - alias int* PHALF_PTR; - alias uint UHALF_PTR; - alias uint* PUHALF_PTR; - - uint HandleToULong(void* h) { return(cast(uint) cast(ULONG_PTR) h); } - int HandleToLong(void* h) { return(cast(int) cast(LONG_PTR) h); } - void* ULongToHandle(uint h) { return(cast(void*) cast(UINT_PTR) h); } - void* LongToHandle(int h) { return(cast(void*) cast(INT_PTR) h); } - uint PtrToUlong(void* p) { return(cast(uint) cast(ULONG_PTR) p); } - uint PtrToUint(void* p) { return(cast(uint) cast(UINT_PTR) p); } - ushort PtrToUshort(void* p) { return(cast(ushort) cast(uint) cast(ULONG_PTR) p); } - int PtrToLong(void* p) { return(cast(int) cast(LONG_PTR) p); } - int PtrToInt(void* p) { return(cast(int) cast(INT_PTR) p); } - short PtrToShort(void* p) { return(cast(short) cast(int) cast(LONG_PTR) p); } - void* IntToPtr(int i) { return(cast(void*) cast(INT_PTR) i); } - void* UIntToPtr(uint ui) { return(cast(void*) cast(UINT_PTR) ui); } - void* LongToPtr(int l) { return(cast(void*) cast(LONG_PTR) l); } - void* ULongToPtr(uint ul) { return(cast(void*) cast(ULONG_PTR) ul); } + alias long __int3264; + const ulong ADDRESS_TAG_BIT = 0x40000000000; + + alias long INT_PTR, LONG_PTR; + alias long* PINT_PTR, PLONG_PTR; + alias ulong UINT_PTR, ULONG_PTR, HANDLE_PTR; + alias ulong* PUINT_PTR, PULONG_PTR; + alias int HALF_PTR; + alias int* PHALF_PTR; + alias uint UHALF_PTR; + alias uint* PUHALF_PTR; + + uint HandleToULong(void* h) { return(cast(uint) cast(ULONG_PTR) h); } + int HandleToLong(void* h) { return(cast(int) cast(LONG_PTR) h); } + void* ULongToHandle(uint h) { return(cast(void*) cast(UINT_PTR) h); } + void* LongToHandle(int h) { return(cast(void*) cast(INT_PTR) h); } + uint PtrToUlong(void* p) { return(cast(uint) cast(ULONG_PTR) p); } + uint PtrToUint(void* p) { return(cast(uint) cast(UINT_PTR) p); } + ushort PtrToUshort(void* p) { return(cast(ushort) cast(uint) cast(ULONG_PTR) p); } + int PtrToLong(void* p) { return(cast(int) cast(LONG_PTR) p); } + int PtrToInt(void* p) { return(cast(int) cast(INT_PTR) p); } + short PtrToShort(void* p) { return(cast(short) cast(int) cast(LONG_PTR) p); } + void* IntToPtr(int i) { return(cast(void*) cast(INT_PTR) i); } + void* UIntToPtr(uint ui) { return(cast(void*) cast(UINT_PTR) ui); } + void* LongToPtr(int l) { return(cast(void*) cast(LONG_PTR) l); } + void* ULongToPtr(uint ul) { return(cast(void*) cast(ULONG_PTR) ul); } } else { - alias int __int3264; - const uint ADDRESS_TAG_BIT = 0x80000000; - - alias int INT_PTR, LONG_PTR; - alias int* PINT_PTR, PLONG_PTR; - alias uint UINT_PTR, ULONG_PTR, HANDLE_PTR; - alias uint* PUINT_PTR, PULONG_PTR; - alias short HALF_PTR; - alias short* PHALF_PTR; - alias ushort UHALF_PTR; - alias ushort* PUHALF_PTR; - - uint HandleToUlong(HANDLE h) { return cast(uint) h; } - int HandleToLong(HANDLE h) { return cast(int) h; } - HANDLE LongToHandle(LONG_PTR h) { return cast(HANDLE)h; } - uint PtrToUlong(const(void)* p) { return cast(uint) p; } - uint PtrToUint(const(void)* p) { return cast(uint) p; } - int PtrToInt(const(void)* p) { return cast(int) p; } - ushort PtrToUshort(const(void)* p) { return cast(ushort) p; } - short PtrToShort(const(void)* p) { return cast(short) p; } - void* IntToPtr(int i) { return cast(void*) i; } - void* UIntToPtr(uint ui) { return cast(void*) ui; } - alias IntToPtr LongToPtr; - alias UIntToPtr ULongToPtr; + alias int __int3264; + const uint ADDRESS_TAG_BIT = 0x80000000; + + alias int INT_PTR, LONG_PTR; + alias int* PINT_PTR, PLONG_PTR; + alias uint UINT_PTR, ULONG_PTR, HANDLE_PTR; + alias uint* PUINT_PTR, PULONG_PTR; + alias short HALF_PTR; + alias short* PHALF_PTR; + alias ushort UHALF_PTR; + alias ushort* PUHALF_PTR; + + uint HandleToUlong(HANDLE h) { return cast(uint) h; } + int HandleToLong(HANDLE h) { return cast(int) h; } + HANDLE LongToHandle(LONG_PTR h) { return cast(HANDLE)h; } + uint PtrToUlong(const(void)* p) { return cast(uint) p; } + uint PtrToUint(const(void)* p) { return cast(uint) p; } + int PtrToInt(const(void)* p) { return cast(int) p; } + ushort PtrToUshort(const(void)* p) { return cast(ushort) p; } + short PtrToShort(const(void)* p) { return cast(short) p; } + void* IntToPtr(int i) { return cast(void*) i; } + void* UIntToPtr(uint ui) { return cast(void*) ui; } + alias IntToPtr LongToPtr; + alias UIntToPtr ULongToPtr; } alias UIntToPtr UintToPtr, UlongToPtr; enum : UINT_PTR { - MAXUINT_PTR = UINT_PTR.max + MAXUINT_PTR = UINT_PTR.max } enum : INT_PTR { - MAXINT_PTR = INT_PTR.max, - MININT_PTR = INT_PTR.min + MAXINT_PTR = INT_PTR.max, + MININT_PTR = INT_PTR.min } enum : ULONG_PTR { - MAXULONG_PTR = ULONG_PTR.max + MAXULONG_PTR = ULONG_PTR.max } enum : LONG_PTR { - MAXLONG_PTR = LONG_PTR.max, - MINLONG_PTR = LONG_PTR.min + MAXLONG_PTR = LONG_PTR.max, + MINLONG_PTR = LONG_PTR.min } enum : UHALF_PTR { - MAXUHALF_PTR = UHALF_PTR.max + MAXUHALF_PTR = UHALF_PTR.max } enum : HALF_PTR { - MAXHALF_PTR = HALF_PTR.max, - MINHALF_PTR = HALF_PTR.min + MAXHALF_PTR = HALF_PTR.max, + MINHALF_PTR = HALF_PTR.min } alias byte INT8; diff --git a/src/core/sys/windows/basetyps.d b/src/core/sys/windows/basetyps.d index 3c7f075930..1cbf28da58 100644 --- a/src/core/sys/windows/basetyps.d +++ b/src/core/sys/windows/basetyps.d @@ -11,10 +11,10 @@ module core.sys.windows.basetyps; private import core.sys.windows.windef, core.sys.windows.basetsd; align(1) struct GUID { // size is 16 - DWORD Data1; - WORD Data2; - WORD Data3; - BYTE[8] Data4; + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE[8] Data4; } alias GUID UUID, IID, CLSID, FMTID, uuid_t; alias GUID* LPGUID, LPCLSID, LPIID; diff --git a/src/core/sys/windows/cderr.d b/src/core/sys/windows/cderr.d index 3912980493..c81ae750a0 100644 --- a/src/core/sys/windows/cderr.d +++ b/src/core/sys/windows/cderr.d @@ -9,41 +9,41 @@ module core.sys.windows.cderr; enum { - CDERR_DIALOGFAILURE = 0xFFFF, - CDERR_GENERALCODES = 0x0000, - CDERR_STRUCTSIZE, - CDERR_INITIALIZATION, - CDERR_NOTEMPLATE, - CDERR_NOHINSTANCE, - CDERR_LOADSTRFAILURE, - CDERR_FINDRESFAILURE, - CDERR_LOADRESFAILURE, - CDERR_LOCKRESFAILURE, - CDERR_MEMALLOCFAILURE, - CDERR_MEMLOCKFAILURE, - CDERR_NOHOOK, - CDERR_REGISTERMSGFAIL, - PDERR_PRINTERCODES = 0x1000, - PDERR_SETUPFAILURE, - PDERR_PARSEFAILURE, - PDERR_RETDEFFAILURE, - PDERR_LOADDRVFAILURE, - PDERR_GETDEVMODEFAIL, - PDERR_INITFAILURE, - PDERR_NODEVICES, - PDERR_NODEFAULTPRN, - PDERR_DNDMMISMATCH, - PDERR_CREATEICFAILURE, - PDERR_PRINTERNOTFOUND, - PDERR_DEFAULTDIFFERENT, - CFERR_CHOOSEFONTCODES = 0x2000, - CFERR_NOFONTS, - CFERR_MAXLESSTHANMIN, - FNERR_FILENAMECODES = 0x3000, - FNERR_SUBCLASSFAILURE, - FNERR_INVALIDFILENAME, - FNERR_BUFFERTOOSMALL, - FRERR_FINDREPLACECODES = 0x4000, - FRERR_BUFFERLENGTHZERO, - CCERR_CHOOSECOLORCODES = 0x5000 + CDERR_DIALOGFAILURE = 0xFFFF, + CDERR_GENERALCODES = 0x0000, + CDERR_STRUCTSIZE, + CDERR_INITIALIZATION, + CDERR_NOTEMPLATE, + CDERR_NOHINSTANCE, + CDERR_LOADSTRFAILURE, + CDERR_FINDRESFAILURE, + CDERR_LOADRESFAILURE, + CDERR_LOCKRESFAILURE, + CDERR_MEMALLOCFAILURE, + CDERR_MEMLOCKFAILURE, + CDERR_NOHOOK, + CDERR_REGISTERMSGFAIL, + PDERR_PRINTERCODES = 0x1000, + PDERR_SETUPFAILURE, + PDERR_PARSEFAILURE, + PDERR_RETDEFFAILURE, + PDERR_LOADDRVFAILURE, + PDERR_GETDEVMODEFAIL, + PDERR_INITFAILURE, + PDERR_NODEVICES, + PDERR_NODEFAULTPRN, + PDERR_DNDMMISMATCH, + PDERR_CREATEICFAILURE, + PDERR_PRINTERNOTFOUND, + PDERR_DEFAULTDIFFERENT, + CFERR_CHOOSEFONTCODES = 0x2000, + CFERR_NOFONTS, + CFERR_MAXLESSTHANMIN, + FNERR_FILENAMECODES = 0x3000, + FNERR_SUBCLASSFAILURE, + FNERR_INVALIDFILENAME, + FNERR_BUFFERTOOSMALL, + FRERR_FINDREPLACECODES = 0x4000, + FRERR_BUFFERLENGTHZERO, + CCERR_CHOOSECOLORCODES = 0x5000 } diff --git a/src/core/sys/windows/comcat.d b/src/core/sys/windows/comcat.d index e1ea332f86..419eb509f0 100644 --- a/src/core/sys/windows/comcat.d +++ b/src/core/sys/windows/comcat.d @@ -16,10 +16,10 @@ private import core.sys.windows.basetyps, core.sys.windows.cguid, core.sys.windo alias IEnumGUID LPENUMGUID; interface IEnumGUID : IUnknown { - HRESULT Next(ULONG, GUID*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMGUID*); + HRESULT Next(ULONG, GUID*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMGUID*); } alias GUID CATID; @@ -28,9 +28,9 @@ alias GUID_NULL CATID_NULL; alias IsEqualGUID IsEqualCATID; struct CATEGORYINFO { - CATID catid; - LCID lcid; - OLECHAR[128] szDescription; + CATID catid; + LCID lcid; + OLECHAR[128] szDescription; } alias CATEGORYINFO* LPCATEGORYINFO; @@ -43,30 +43,30 @@ alias LPENUMGUID LPENUMCLSID; alias IID_IEnumGUID IID_IEnumCLSID; interface ICatInformation : IUnknown { - HRESULT EnumCategories(LCID, LPENUMCATEGORYINFO*); - HRESULT GetCategoryDesc(REFCATID, LCID, PWCHAR*); - HRESULT EnumClassesOfCategories(ULONG, CATID*, ULONG, CATID*, - LPENUMCLSID*); - HRESULT IsClassOfCategories(REFCLSID, ULONG, CATID*, ULONG, CATID*); - HRESULT EnumImplCategoriesOfClass(REFCLSID, LPENUMCATID*); - HRESULT EnumReqCategoriesOfClass(REFCLSID, LPENUMCATID*); + HRESULT EnumCategories(LCID, LPENUMCATEGORYINFO*); + HRESULT GetCategoryDesc(REFCATID, LCID, PWCHAR*); + HRESULT EnumClassesOfCategories(ULONG, CATID*, ULONG, CATID*, + LPENUMCLSID*); + HRESULT IsClassOfCategories(REFCLSID, ULONG, CATID*, ULONG, CATID*); + HRESULT EnumImplCategoriesOfClass(REFCLSID, LPENUMCATID*); + HRESULT EnumReqCategoriesOfClass(REFCLSID, LPENUMCATID*); } alias ICatInformation LPCATINFORMATION; interface ICatRegister : IUnknown { - HRESULT RegisterCategories(ULONG, CATEGORYINFO*); - HRESULT UnRegisterCategories(ULONG, CATID*); - HRESULT RegisterClassImplCategories(REFCLSID, ULONG, CATID*); - HRESULT UnRegisterClassImplCategories(REFCLSID, ULONG, CATID*); - HRESULT RegisterClassReqCategories(REFCLSID, ULONG, CATID*); - HRESULT UnRegisterClassReqCategories(REFCLSID, ULONG, CATID*); + HRESULT RegisterCategories(ULONG, CATEGORYINFO*); + HRESULT UnRegisterCategories(ULONG, CATID*); + HRESULT RegisterClassImplCategories(REFCLSID, ULONG, CATID*); + HRESULT UnRegisterClassImplCategories(REFCLSID, ULONG, CATID*); + HRESULT RegisterClassReqCategories(REFCLSID, ULONG, CATID*); + HRESULT UnRegisterClassReqCategories(REFCLSID, ULONG, CATID*); } alias ICatRegister LPCATREGISTER; interface IEnumCATEGORYINFO : IUnknown { - HRESULT Next(ULONG, CATEGORYINFO*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMCATEGORYINFO*); + HRESULT Next(ULONG, CATEGORYINFO*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCATEGORYINFO*); } alias IEnumCATEGORYINFO LPENUMCATEGORYINFO; diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 8cd69035f9..46f0af5ec9 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -18,132 +18,132 @@ import core.sys.windows.prsht; const COMCTL32_VERSION = 6; const TCHAR[] - DRAGLISTMSGSTRING = "commctrl_DragListMsg", - HOTKEY_CLASS = "msctls_hotkey32", - PROGRESS_CLASS = "msctls_progress32", - STATUSCLASSNAME = "msctls_statusbar32", - TOOLBARCLASSNAME = "ToolbarWindow32", - TOOLTIPS_CLASS = "tooltips_class32", - TRACKBAR_CLASS = "msctls_trackbar32", - UPDOWN_CLASS = "msctls_updown32", - ANIMATE_CLASS = "SysAnimate32", - DATETIMEPICK_CLASS = "SysDateTimePick32", - MONTHCAL_CLASS = "SysMonthCal32", - REBARCLASSNAME = "ReBarWindow32", - WC_COMBOBOXEX = "ComboBoxEx32", - WC_IPADDRESS = "SysIPAddress32", - WC_LISTVIEW = "SysListView32", - WC_TABCONTROL = "SysTabControl32", - WC_TREEVIEW = "SysTreeView32", - WC_HEADER = "SysHeader32", - WC_PAGESCROLLER = "SysPager", - WC_NATIVEFONTCTL = "NativeFontCtl", - WC_BUTTON = "Button", - WC_STATIC = "Static", - WC_EDIT = "Edit", - WC_LISTBOX = "ListBox", - WC_COMBOBOX = "ComboBox", - WC_SCROLLBAR = "ScrollBar", - WC_LINKA = "SysLink"; + DRAGLISTMSGSTRING = "commctrl_DragListMsg", + HOTKEY_CLASS = "msctls_hotkey32", + PROGRESS_CLASS = "msctls_progress32", + STATUSCLASSNAME = "msctls_statusbar32", + TOOLBARCLASSNAME = "ToolbarWindow32", + TOOLTIPS_CLASS = "tooltips_class32", + TRACKBAR_CLASS = "msctls_trackbar32", + UPDOWN_CLASS = "msctls_updown32", + ANIMATE_CLASS = "SysAnimate32", + DATETIMEPICK_CLASS = "SysDateTimePick32", + MONTHCAL_CLASS = "SysMonthCal32", + REBARCLASSNAME = "ReBarWindow32", + WC_COMBOBOXEX = "ComboBoxEx32", + WC_IPADDRESS = "SysIPAddress32", + WC_LISTVIEW = "SysListView32", + WC_TABCONTROL = "SysTabControl32", + WC_TREEVIEW = "SysTreeView32", + WC_HEADER = "SysHeader32", + WC_PAGESCROLLER = "SysPager", + WC_NATIVEFONTCTL = "NativeFontCtl", + WC_BUTTON = "Button", + WC_STATIC = "Static", + WC_EDIT = "Edit", + WC_LISTBOX = "ListBox", + WC_COMBOBOX = "ComboBox", + WC_SCROLLBAR = "ScrollBar", + WC_LINKA = "SysLink"; enum { - LVM_FIRST = 0x1000, - TV_FIRST = 0x1100, - HDM_FIRST = 0x1200 + LVM_FIRST = 0x1000, + TV_FIRST = 0x1100, + HDM_FIRST = 0x1200 } enum { - ACM_OPENA = WM_USER + 100, - ACM_PLAY = WM_USER + 101, - ACM_STOP = WM_USER + 102, - ACM_OPENW = WM_USER + 103, + ACM_OPENA = WM_USER + 100, + ACM_PLAY = WM_USER + 101, + ACM_STOP = WM_USER + 102, + ACM_OPENW = WM_USER + 103, ACM_ISPLAYING = WM_USER + 104 } enum { - ACN_START = 1, - ACN_STOP + ACN_START = 1, + ACN_STOP } enum { - CBEIF_TEXT = 0x00000001, - CBEIF_IMAGE = 0x00000002, - CBEIF_SELECTEDIMAGE = 0x00000004, - CBEIF_OVERLAY = 0x00000008, - CBEIF_INDENT = 0x00000010, - CBEIF_LPARAM = 0x00000020, - CBEIF_DI_SETITEM = 0x10000000 + CBEIF_TEXT = 0x00000001, + CBEIF_IMAGE = 0x00000002, + CBEIF_SELECTEDIMAGE = 0x00000004, + CBEIF_OVERLAY = 0x00000008, + CBEIF_INDENT = 0x00000010, + CBEIF_LPARAM = 0x00000020, + CBEIF_DI_SETITEM = 0x10000000 } enum { - RBN_FIRST = -831U, - RBN_LAST = -859U, - MCN_FIRST = -750U, - MCN_LAST = -759U, - DTN_FIRST = -760U, - DTN_LAST = -799U, - CBEN_FIRST = -800U, - CBEN_LAST = -830U + RBN_FIRST = -831U, + RBN_LAST = -859U, + MCN_FIRST = -750U, + MCN_LAST = -759U, + DTN_FIRST = -760U, + DTN_LAST = -799U, + CBEN_FIRST = -800U, + CBEN_LAST = -830U } enum { - CBEN_INSERTITEM = CBEN_FIRST - 1, - CBEN_DELETEITEM = CBEN_FIRST - 2, - CBEN_BEGINEDIT = CBEN_FIRST - 4, - CBEN_ENDEDITA = CBEN_FIRST - 5, - CBEN_ENDEDITW = CBEN_FIRST - 6 + CBEN_INSERTITEM = CBEN_FIRST - 1, + CBEN_DELETEITEM = CBEN_FIRST - 2, + CBEN_BEGINEDIT = CBEN_FIRST - 4, + CBEN_ENDEDITA = CBEN_FIRST - 5, + CBEN_ENDEDITW = CBEN_FIRST - 6 } enum { - CBENF_KILLFOCUS = 1, - CBENF_RETURN, - CBENF_ESCAPE, - CBENF_DROPDOWN // = 4 + CBENF_KILLFOCUS = 1, + CBENF_RETURN, + CBENF_ESCAPE, + CBENF_DROPDOWN // = 4 } const CBEMAXSTRLEN = 260; enum { - DL_BEGINDRAG = 1157, - DL_CANCELDRAG = 1160, - DL_DRAGGING = 1158, - DL_DROPPED = 1159, - DL_CURSORSET = 0, - DL_STOPCURSOR = 1, - DL_COPYCURSOR = 2, - DL_MOVECURSOR = 3 + DL_BEGINDRAG = 1157, + DL_CANCELDRAG = 1160, + DL_DRAGGING = 1158, + DL_DROPPED = 1159, + DL_CURSORSET = 0, + DL_STOPCURSOR = 1, + DL_COPYCURSOR = 2, + DL_MOVECURSOR = 3 } enum { - CCS_TOP = 1, - CCS_NOMOVEY = 2, - CCS_BOTTOM = 3, - CCS_NORESIZE = 4, - CCS_NOPARENTALIGN = 8, - CCS_ADJUSTABLE = 32, - CCS_NODIVIDER = 64 + CCS_TOP = 1, + CCS_NOMOVEY = 2, + CCS_BOTTOM = 3, + CCS_NORESIZE = 4, + CCS_NOPARENTALIGN = 8, + CCS_ADJUSTABLE = 32, + CCS_NODIVIDER = 64 } static if (_WIN32_IE >= 0x300) { - enum { - CCS_VERT = 128, - CCS_LEFT = 129, - CCS_NOMOVEX = 130, - CCS_RIGHT = 131 - } + enum { + CCS_VERT = 128, + CCS_LEFT = 129, + CCS_NOMOVEX = 130, + CCS_RIGHT = 131 + } } enum { - ACS_CENTER = 0x0001, - ACS_TRANSPARENT = 0x0002, - ACS_AUTOPLAY = 0x0004, - ACS_TIMER = 0x0008 + ACS_CENTER = 0x0001, + ACS_TRANSPARENT = 0x0002, + ACS_AUTOPLAY = 0x0004, + ACS_TIMER = 0x0008 } enum { - PGS_VERT = 0x00000000, - PGS_HORZ = 0x00000001, - PGS_AUTOSCROLL = 0x00000002, - PGS_DRAGNDROP = 0x00000004 + PGS_VERT = 0x00000000, + PGS_HORZ = 0x00000001, + PGS_AUTOSCROLL = 0x00000002, + PGS_DRAGNDROP = 0x00000004 } const CMB_MASKED = 2; @@ -151,141 +151,141 @@ const CMB_MASKED = 2; const MINSYSCOMMAND = SC_SIZE; enum { - SBT_OWNERDRAW = 0x1000, - SBT_NOBORDERS = 256, - SBT_POPOUT = 512, - SBT_RTLREADING = 1024 + SBT_OWNERDRAW = 0x1000, + SBT_NOBORDERS = 256, + SBT_POPOUT = 512, + SBT_RTLREADING = 1024 } enum { - SB_SETTEXTA = WM_USER + 1, - SB_SETTEXTW = WM_USER + 11, - SB_GETTEXTA = WM_USER + 2, - SB_GETTEXTW = WM_USER + 13, - SB_GETTEXTLENGTHA = WM_USER + 3, - SB_GETTEXTLENGTHW = WM_USER + 12, - SB_SETPARTS = WM_USER + 4, - SB_GETPARTS = WM_USER + 6, - SB_GETBORDERS = WM_USER + 7, - SB_SETMINHEIGHT = WM_USER + 8, - SB_SIMPLE = WM_USER + 9, - SB_GETRECT = WM_USER + 10 + SB_SETTEXTA = WM_USER + 1, + SB_SETTEXTW = WM_USER + 11, + SB_GETTEXTA = WM_USER + 2, + SB_GETTEXTW = WM_USER + 13, + SB_GETTEXTLENGTHA = WM_USER + 3, + SB_GETTEXTLENGTHW = WM_USER + 12, + SB_SETPARTS = WM_USER + 4, + SB_GETPARTS = WM_USER + 6, + SB_GETBORDERS = WM_USER + 7, + SB_SETMINHEIGHT = WM_USER + 8, + SB_SIMPLE = WM_USER + 9, + SB_GETRECT = WM_USER + 10 } enum { - MSGF_COMMCTRL_BEGINDRAG = 0x4200, - MSGF_COMMCTRL_SIZEHEADER = 0x4201, - MSGF_COMMCTRL_DRAGSELECT = 0x4202, - MSGF_COMMCTRL_TOOLBARCUST = 0x4203 + MSGF_COMMCTRL_BEGINDRAG = 0x4200, + MSGF_COMMCTRL_SIZEHEADER = 0x4201, + MSGF_COMMCTRL_DRAGSELECT = 0x4202, + MSGF_COMMCTRL_TOOLBARCUST = 0x4203 } enum { - ILC_COLOR = 0, - ILC_COLOR4 = 4, - ILC_COLOR8 = 8, - ILC_COLOR16 = 16, - ILC_COLOR24 = 24, - ILC_COLOR32 = 32, - ILC_COLORDDB = 254, - ILC_MASK = 1, - ILC_PALETTE = 2048 + ILC_COLOR = 0, + ILC_COLOR4 = 4, + ILC_COLOR8 = 8, + ILC_COLOR16 = 16, + ILC_COLOR24 = 24, + ILC_COLOR32 = 32, + ILC_COLORDDB = 254, + ILC_MASK = 1, + ILC_PALETTE = 2048 } enum { - ILCF_MOVE, - ILCF_SWAP + ILCF_MOVE, + ILCF_SWAP } enum { - ILS_NORMAL = 0, - ILS_GLOW = 1, - ILS_SHADOW = 2, - ILS_SATURATE = 4, - ILS_ALPHA = 8, - ILD_BLEND25 = 2, - ILD_BLEND50 = 4, - ILD_SELECTED = 4, - ILD_BLEND = 4, - ILD_FOCUS = 2, - ILD_MASK = 16, - ILD_NORMAL = 0, - ILD_TRANSPARENT = 1, - ILD_IMAGE = 0x0020, - ILD_ROP = 0x0040, - ILD_OVERLAYMASK = 0x0F00, - ILD_PRESERVEALPHA = 0x1000, - ILD_SCALE = 0x2000, - ILD_DPISCALE = 0x4000 + ILS_NORMAL = 0, + ILS_GLOW = 1, + ILS_SHADOW = 2, + ILS_SATURATE = 4, + ILS_ALPHA = 8, + ILD_BLEND25 = 2, + ILD_BLEND50 = 4, + ILD_SELECTED = 4, + ILD_BLEND = 4, + ILD_FOCUS = 2, + ILD_MASK = 16, + ILD_NORMAL = 0, + ILD_TRANSPARENT = 1, + ILD_IMAGE = 0x0020, + ILD_ROP = 0x0040, + ILD_OVERLAYMASK = 0x0F00, + ILD_PRESERVEALPHA = 0x1000, + ILD_SCALE = 0x2000, + ILD_DPISCALE = 0x4000 } enum { - HDS_HORZ = 0, - HDS_BUTTONS = 2, - HDS_HIDDEN = 8 + HDS_HORZ = 0, + HDS_BUTTONS = 2, + HDS_HIDDEN = 8 } static if (_WIN32_IE >= 0x400) { - enum { - HDS_HOTTRACK = 4, - HDS_DRAGDROP = 0x0040, - HDS_FULLDRAG = 0x0080 - } + enum { + HDS_HOTTRACK = 4, + HDS_DRAGDROP = 0x0040, + HDS_FULLDRAG = 0x0080 + } } static if (_WIN32_IE >= 0x500) { - enum { - HDS_FILTERBAR = 0x0100 - } + enum { + HDS_FILTERBAR = 0x0100 + } } enum { - NM_FIRST = 0, - NM_LAST = -99U, - LVN_FIRST = -100U, - LVN_LAST = -199U, - HDN_FIRST = -300U, - HDN_LAST = -399U, - TVN_FIRST = -400U, - TVN_LAST = -499U, - TTN_FIRST = -520U, - TTN_LAST = -549U, - TCN_FIRST = -550U, - TCN_LAST = -580U, - CDN_FIRST = -601U, /* also in commdlg.h */ - CDN_LAST = -699U, - TBN_FIRST = -700U, - TBN_LAST = -720U, - UDN_FIRST = -721U, - UDN_LAST = -740U + NM_FIRST = 0, + NM_LAST = -99U, + LVN_FIRST = -100U, + LVN_LAST = -199U, + HDN_FIRST = -300U, + HDN_LAST = -399U, + TVN_FIRST = -400U, + TVN_LAST = -499U, + TTN_FIRST = -520U, + TTN_LAST = -549U, + TCN_FIRST = -550U, + TCN_LAST = -580U, + CDN_FIRST = -601U, /* also in commdlg.h */ + CDN_LAST = -699U, + TBN_FIRST = -700U, + TBN_LAST = -720U, + UDN_FIRST = -721U, + UDN_LAST = -740U } /*static if (_WIN32_IE >= 0x300) { - enum { - RBN_FIRST = -831U, - RBN_LAST = -859U, - MCN_FIRST = -750U, - MCN_LAST = -759U, - DTN_FIRST = -760U, - DTN_LAST = -799U, - CBEN_FIRST = -800U, - CBEN_LAST = -830U - } + enum { + RBN_FIRST = -831U, + RBN_LAST = -859U, + MCN_FIRST = -750U, + MCN_LAST = -759U, + DTN_FIRST = -760U, + DTN_LAST = -799U, + CBEN_FIRST = -800U, + CBEN_LAST = -830U + } }*/ static if (_WIN32_IE >= 0x400) { - enum { - IPN_FIRST = -860U, - IPN_LAST = -879U, - IPN_FIELDCHANGED = IPN_FIRST, - SBN_FIRST = -880U, - SBN_LAST = -899U, - PGN_FIRST = -900U, - PGN_LAST = -950U, - PGN_SCROLL = PGN_FIRST-1, - PGN_CALCSIZE = PGN_FIRST-2 - } + enum { + IPN_FIRST = -860U, + IPN_LAST = -879U, + IPN_FIELDCHANGED = IPN_FIRST, + SBN_FIRST = -880U, + SBN_LAST = -899U, + PGN_FIRST = -900U, + PGN_LAST = -950U, + PGN_SCROLL = PGN_FIRST-1, + PGN_CALCSIZE = PGN_FIRST-2 + } } static if (_WIN32_IE >= 0x500) { - enum { - WMN_FIRST = -1000U, - WMN_LAST = -1200U, + enum { + WMN_FIRST = -1000U, + WMN_LAST = -1200U, } } @@ -306,474 +306,474 @@ static if (_WIN32_WINNT >= 0x600) } enum { - HDI_WIDTH = 1, - HDI_HEIGHT = 1, - HDI_TEXT = 2, - HDI_FORMAT = 4, - HDI_LPARAM = 8, - HDI_BITMAP = 16 + HDI_WIDTH = 1, + HDI_HEIGHT = 1, + HDI_TEXT = 2, + HDI_FORMAT = 4, + HDI_LPARAM = 8, + HDI_BITMAP = 16 } static if (_WIN32_IE >= 0x300) { - enum { - HDI_IMAGE = 32, - HDI_DI_SETITEM = 64, - HDI_ORDER = 128 - } + enum { + HDI_IMAGE = 32, + HDI_DI_SETITEM = 64, + HDI_ORDER = 128 + } } static if (_WIN32_IE >= 0x500) { - enum { - HDI_FILTER = 256 - } + enum { + HDI_FILTER = 256 + } } enum { - CBES_EX_NOEDITIMAGE = 0x00000001, - CBES_EX_NOEDITIMAGEINDENT = 0x00000002, - CBES_EX_PATHWORDBREAKPROC = 0x00000004 + CBES_EX_NOEDITIMAGE = 0x00000001, + CBES_EX_NOEDITIMAGEINDENT = 0x00000002, + CBES_EX_PATHWORDBREAKPROC = 0x00000004 } static if (_WIN32_IE >= 0x400) { - enum { - CBES_EX_NOSIZELIMIT = 0x00000008, - CBES_EX_CASESENSITIVE = 0x00000010, - CBEN_GETDISPINFOA = CBEN_FIRST - 0, - CBEN_GETDISPINFOW = CBEN_FIRST - 7, - CBEN_DRAGBEGINA = CBEN_FIRST - 8, - CBEN_DRAGBEGINW = CBEN_FIRST - 9 - } + enum { + CBES_EX_NOSIZELIMIT = 0x00000008, + CBES_EX_CASESENSITIVE = 0x00000010, + CBEN_GETDISPINFOA = CBEN_FIRST - 0, + CBEN_GETDISPINFOW = CBEN_FIRST - 7, + CBEN_DRAGBEGINA = CBEN_FIRST - 8, + CBEN_DRAGBEGINW = CBEN_FIRST - 9 + } } enum { - HDF_LEFT, - HDF_RIGHT, - HDF_CENTER, - HDF_JUSTIFYMASK, - HDF_RTLREADING, // = 4 - HDF_OWNERDRAW = 0x8000, - HDF_STRING = 0x4000, - HDF_BITMAP = 0x2000 + HDF_LEFT, + HDF_RIGHT, + HDF_CENTER, + HDF_JUSTIFYMASK, + HDF_RTLREADING, // = 4 + HDF_OWNERDRAW = 0x8000, + HDF_STRING = 0x4000, + HDF_BITMAP = 0x2000 } static if (_WIN32_IE >= 0x300) { - enum { - HDF_BITMAP_ON_RIGHT = 0x1000, - HDF_IMAGE = 0x0800 - } + enum { + HDF_BITMAP_ON_RIGHT = 0x1000, + HDF_IMAGE = 0x0800 + } } enum { - CCM_FIRST = 0x2000, - CCM_LAST = CCM_FIRST + 0x200, - CCM_SETBKCOLOR = 8193, - CCM_SETCOLORSCHEME = 8194, - CCM_GETCOLORSCHEME = 8195, - CCM_GETDROPTARGET = 8196, - CCM_SETUNICODEFORMAT = 8197, - CCM_GETUNICODEFORMAT = 8198, - CCM_SETVERSION = 0x2007, - CCM_GETVERSION = 0x2008, - CCM_SETNOTIFYWINDOW = 0x2009 + CCM_FIRST = 0x2000, + CCM_LAST = CCM_FIRST + 0x200, + CCM_SETBKCOLOR = 8193, + CCM_SETCOLORSCHEME = 8194, + CCM_GETCOLORSCHEME = 8195, + CCM_GETDROPTARGET = 8196, + CCM_SETUNICODEFORMAT = 8197, + CCM_GETUNICODEFORMAT = 8198, + CCM_SETVERSION = 0x2007, + CCM_GETVERSION = 0x2008, + CCM_SETNOTIFYWINDOW = 0x2009 } enum { - HDM_GETITEMCOUNT = HDM_FIRST, - HDM_INSERTITEMA = HDM_FIRST + 1, - HDM_INSERTITEMW = HDM_FIRST + 10, - HDM_DELETEITEM = HDM_FIRST + 2, - HDM_GETITEMA = HDM_FIRST + 3, - HDM_GETITEMW = HDM_FIRST + 11, - HDM_SETITEMA = HDM_FIRST + 4, - HDM_SETITEMW = HDM_FIRST + 12, - HDM_LAYOUT = HDM_FIRST + 5 + HDM_GETITEMCOUNT = HDM_FIRST, + HDM_INSERTITEMA = HDM_FIRST + 1, + HDM_INSERTITEMW = HDM_FIRST + 10, + HDM_DELETEITEM = HDM_FIRST + 2, + HDM_GETITEMA = HDM_FIRST + 3, + HDM_GETITEMW = HDM_FIRST + 11, + HDM_SETITEMA = HDM_FIRST + 4, + HDM_SETITEMW = HDM_FIRST + 12, + HDM_LAYOUT = HDM_FIRST + 5 } static if (_WIN32_IE >= 0x300) { - enum { - HDM_GETITEMRECT = HDM_FIRST + 7, - HDM_SETIMAGELIST = HDM_FIRST + 8, - HDM_GETIMAGELIST = HDM_FIRST + 9, - HDM_ORDERTOINDEX = HDM_FIRST + 15, - HDM_CREATEDRAGIMAGE = HDM_FIRST + 16, - HDM_GETORDERARRAY = HDM_FIRST + 17, - HDM_SETORDERARRAY = HDM_FIRST + 18, - HDM_SETHOTDIVIDER = HDM_FIRST + 19 - } + enum { + HDM_GETITEMRECT = HDM_FIRST + 7, + HDM_SETIMAGELIST = HDM_FIRST + 8, + HDM_GETIMAGELIST = HDM_FIRST + 9, + HDM_ORDERTOINDEX = HDM_FIRST + 15, + HDM_CREATEDRAGIMAGE = HDM_FIRST + 16, + HDM_GETORDERARRAY = HDM_FIRST + 17, + HDM_SETORDERARRAY = HDM_FIRST + 18, + HDM_SETHOTDIVIDER = HDM_FIRST + 19 + } } static if (_WIN32_IE >= 0x400) { - enum { - HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, - HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT - } + enum { + HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT + } } static if (_WIN32_IE >= 0x500) { - enum { - HDM_SETBITMAPMARGIN = HDM_FIRST + 20, - HDM_GETBITMAPMARGIN = HDM_FIRST + 21, + enum { + HDM_SETBITMAPMARGIN = HDM_FIRST + 20, + HDM_GETBITMAPMARGIN = HDM_FIRST + 21, HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST + 22, HDM_EDITFILTER = HDM_FIRST + 23, HDM_CLEARFILTER = HDM_FIRST + 24, } } static if (_WIN32_IE >= 0x600) { - enum { + enum { HDM_GETITEMDROPDOWNRECT = HDM_FIRST + 25, HDM_GETOVERFLOWRECT = HDM_FIRST + 26, HDM_GETFOCUSEDITEM = HDM_FIRST + 27, HDM_SETFOCUSEDITEM = HDM_FIRST + 28, - } + } } enum { - HHT_NOWHERE = 1, - HHT_ONHEADER = 2, - HHT_ONDIVIDER = 4, - HHT_ONDIVOPEN = 8, - HHT_ABOVE = 256, - HHT_BELOW = 512, - HHT_TORIGHT = 1024, - HHT_TOLEFT = 2048 + HHT_NOWHERE = 1, + HHT_ONHEADER = 2, + HHT_ONDIVIDER = 4, + HHT_ONDIVOPEN = 8, + HHT_ABOVE = 256, + HHT_BELOW = 512, + HHT_TORIGHT = 1024, + HHT_TOLEFT = 2048 } enum { - HDM_HITTEST = HDM_FIRST + 6 + HDM_HITTEST = HDM_FIRST + 6 } enum { - HDN_ITEMCHANGINGA = HDN_FIRST -0, - HDN_ITEMCHANGINGW = HDN_FIRST -20, - HDN_ITEMCHANGEDA = HDN_FIRST -1, - HDN_ITEMCHANGEDW = HDN_FIRST -21, - HDN_ITEMCLICKA = HDN_FIRST -2, - HDN_ITEMCLICKW = HDN_FIRST -22, - HDN_ITEMDBLCLICKA = HDN_FIRST -3, - HDN_ITEMDBLCLICKW = HDN_FIRST -23, - HDN_DIVIDERDBLCLICKA = HDN_FIRST -5, - HDN_DIVIDERDBLCLICKW = HDN_FIRST -25, - HDN_BEGINTRACKA = HDN_FIRST -6, - HDN_BEGINTRACKW = HDN_FIRST -26, - HDN_ENDTRACKA = HDN_FIRST -7, - HDN_ENDTRACKW = HDN_FIRST -27, - HDN_TRACKA = HDN_FIRST -8, - HDN_TRACKW = HDN_FIRST -28 + HDN_ITEMCHANGINGA = HDN_FIRST -0, + HDN_ITEMCHANGINGW = HDN_FIRST -20, + HDN_ITEMCHANGEDA = HDN_FIRST -1, + HDN_ITEMCHANGEDW = HDN_FIRST -21, + HDN_ITEMCLICKA = HDN_FIRST -2, + HDN_ITEMCLICKW = HDN_FIRST -22, + HDN_ITEMDBLCLICKA = HDN_FIRST -3, + HDN_ITEMDBLCLICKW = HDN_FIRST -23, + HDN_DIVIDERDBLCLICKA = HDN_FIRST -5, + HDN_DIVIDERDBLCLICKW = HDN_FIRST -25, + HDN_BEGINTRACKA = HDN_FIRST -6, + HDN_BEGINTRACKW = HDN_FIRST -26, + HDN_ENDTRACKA = HDN_FIRST -7, + HDN_ENDTRACKW = HDN_FIRST -27, + HDN_TRACKA = HDN_FIRST -8, + HDN_TRACKW = HDN_FIRST -28 } static if (_WIN32_IE >= 0x300) { - enum { - HDN_ENDDRAG = (HDN_FIRST-11), - HDN_BEGINDRAG = (HDN_FIRST-10), - HDN_GETDISPINFOA = (HDN_FIRST-9), - HDN_GETDISPINFOW = (HDN_FIRST-29) - } + enum { + HDN_ENDDRAG = (HDN_FIRST-11), + HDN_BEGINDRAG = (HDN_FIRST-10), + HDN_GETDISPINFOA = (HDN_FIRST-9), + HDN_GETDISPINFOW = (HDN_FIRST-29) + } } static if (_WIN32_IE >= 0x400) { - enum { - HICF_OTHER = 0x00, - HICF_MOUSE = 0x01, - HICF_ARROWKEYS = 0x02, - HICF_ACCELERATOR = 0x04, - HICF_DUPACCEL = 0x08, - HICF_ENTERING = 0x10, - HICF_LEAVING = 0x20, - HICF_RESELECT = 0x40, - HICF_LMOUSE = 0x80, - HICF_TOGGLEDROPDOWN = 0x100 - } + enum { + HICF_OTHER = 0x00, + HICF_MOUSE = 0x01, + HICF_ARROWKEYS = 0x02, + HICF_ACCELERATOR = 0x04, + HICF_DUPACCEL = 0x08, + HICF_ENTERING = 0x10, + HICF_LEAVING = 0x20, + HICF_RESELECT = 0x40, + HICF_LMOUSE = 0x80, + HICF_TOGGLEDROPDOWN = 0x100 + } } enum { - IPM_CLEARADDRESS = WM_USER + 100, - IPM_SETADDRESS = WM_USER + 101, - IPM_GETADDRESS = WM_USER + 102, - IPM_SETRANGE = WM_USER + 103, - IPM_SETFOCUS = WM_USER + 104, - IPM_ISBLANK = WM_USER + 105 + IPM_CLEARADDRESS = WM_USER + 100, + IPM_SETADDRESS = WM_USER + 101, + IPM_GETADDRESS = WM_USER + 102, + IPM_SETRANGE = WM_USER + 103, + IPM_SETFOCUS = WM_USER + 104, + IPM_ISBLANK = WM_USER + 105 } static if (_WIN32_IE >= 0x500) { - enum { - I_INDENTCALLBACK = -1, - I_IMAGENONE = -2 - } + enum { + I_INDENTCALLBACK = -1, + I_IMAGENONE = -2 + } } enum { - TBSTATE_CHECKED = 1, - TBSTATE_PRESSED = 2, - TBSTATE_ENABLED = 4, - TBSTATE_HIDDEN = 8, - TBSTATE_INDETERMINATE = 16, - TBSTATE_WRAP = 32 + TBSTATE_CHECKED = 1, + TBSTATE_PRESSED = 2, + TBSTATE_ENABLED = 4, + TBSTATE_HIDDEN = 8, + TBSTATE_INDETERMINATE = 16, + TBSTATE_WRAP = 32 } static if (_WIN32_IE >= 0x300) { - enum { - TBSTATE_ELLIPSES = 0x40 - } + enum { + TBSTATE_ELLIPSES = 0x40 + } } static if (_WIN32_IE >= 0x400) { - enum { - TBSTATE_MARKED = 0x0080 - } + enum { + TBSTATE_MARKED = 0x0080 + } } enum { - TBSTYLE_BUTTON = 0, - TBSTYLE_SEP = 1, - TBSTYLE_CHECK = 2, - TBSTYLE_GROUP = 4, - TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK + TBSTYLE_BUTTON = 0, + TBSTYLE_SEP = 1, + TBSTYLE_CHECK = 2, + TBSTYLE_GROUP = 4, + TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK } static if (_WIN32_IE >= 0x300) { - enum { - TBSTYLE_DROPDOWN = 8 - } + enum { + TBSTYLE_DROPDOWN = 8 + } } static if (_WIN32_IE >= 0x400) { - enum { - TBSTYLE_AUTOSIZE = 16, - TBSTYLE_NOPREFIX = 32 - } + enum { + TBSTYLE_AUTOSIZE = 16, + TBSTYLE_NOPREFIX = 32 + } } enum { - TBSTYLE_TOOLTIPS = 256, - TBSTYLE_WRAPABLE = 512, - TBSTYLE_ALTDRAG = 1024 + TBSTYLE_TOOLTIPS = 256, + TBSTYLE_WRAPABLE = 512, + TBSTYLE_ALTDRAG = 1024 } static if (_WIN32_IE >= 0x300) { - enum { - TBSTYLE_FLAT = 2048, - TBSTYLE_LIST = 4096, - TBSTYLE_CUSTOMERASE = 8192 - } + enum { + TBSTYLE_FLAT = 2048, + TBSTYLE_LIST = 4096, + TBSTYLE_CUSTOMERASE = 8192 + } } static if (_WIN32_IE >= 0x400) { - enum { - TBSTYLE_REGISTERDROP = 0x4000, - TBSTYLE_TRANSPARENT = 0x8000, - TBSTYLE_EX_DRAWDDARROWS = 0x00000001 - } + enum { + TBSTYLE_REGISTERDROP = 0x4000, + TBSTYLE_TRANSPARENT = 0x8000, + TBSTYLE_EX_DRAWDDARROWS = 0x00000001 + } } static if (_WIN32_IE >= 0x501) { - enum { - TBSTYLE_EX_MIXEDBUTTONS = 8, - TBSTYLE_EX_HIDECLIPPEDBUTTONS = 16 - } + enum { + TBSTYLE_EX_MIXEDBUTTONS = 8, + TBSTYLE_EX_HIDECLIPPEDBUTTONS = 16 + } } static if (_WIN32_WINNT >= 0x501) { - enum { - TBSTYLE_EX_DOUBLEBUFFER = 0x80 - } + enum { + TBSTYLE_EX_DOUBLEBUFFER = 0x80 + } } static if (_WIN32_IE >= 0x500) { - enum { - BTNS_BUTTON = TBSTYLE_BUTTON, - BTNS_SEP = TBSTYLE_SEP, - BTNS_CHECK = TBSTYLE_CHECK, - BTNS_GROUP = TBSTYLE_GROUP, - BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP, - BTNS_DROPDOWN = TBSTYLE_DROPDOWN, - BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE, - BTNS_NOPREFIX = TBSTYLE_NOPREFIX, - BTNS_WHOLEDROPDOWN = 0x0080 - } + enum { + BTNS_BUTTON = TBSTYLE_BUTTON, + BTNS_SEP = TBSTYLE_SEP, + BTNS_CHECK = TBSTYLE_CHECK, + BTNS_GROUP = TBSTYLE_GROUP, + BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP, + BTNS_DROPDOWN = TBSTYLE_DROPDOWN, + BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE, + BTNS_NOPREFIX = TBSTYLE_NOPREFIX, + BTNS_WHOLEDROPDOWN = 0x0080 + } } static if (_WIN32_IE >= 0x501) { - enum { - BTNS_SHOWTEXT = 0x0040 - } + enum { + BTNS_SHOWTEXT = 0x0040 + } } static if (_WIN32_IE >= 0x400) { - enum { - TBCDRF_NOEDGES = 0x10000, - TBCDRF_HILITEHOTTRACK = 0x20000, - TBCDRF_NOOFFSET = 0x40000, - TBCDRF_NOMARK = 0x80000, - TBCDRF_NOETCHEDEFFECT = 0x100000 - } + enum { + TBCDRF_NOEDGES = 0x10000, + TBCDRF_HILITEHOTTRACK = 0x20000, + TBCDRF_NOOFFSET = 0x40000, + TBCDRF_NOMARK = 0x80000, + TBCDRF_NOETCHEDEFFECT = 0x100000 + } } const HINST_COMMCTRL = cast(HINSTANCE) (-1); enum { - IDB_STD_SMALL_COLOR, - IDB_STD_LARGE_COLOR, - IDB_VIEW_SMALL_COLOR = 4, - IDB_VIEW_LARGE_COLOR = 5 + IDB_STD_SMALL_COLOR, + IDB_STD_LARGE_COLOR, + IDB_VIEW_SMALL_COLOR = 4, + IDB_VIEW_LARGE_COLOR = 5 } static if (_WIN32_IE >= 0x300) { - enum { - IDB_HIST_SMALL_COLOR = 8, - IDB_HIST_LARGE_COLOR = 9 - } + enum { + IDB_HIST_SMALL_COLOR = 8, + IDB_HIST_LARGE_COLOR = 9 + } } enum { - STD_CUT, - STD_COPY, - STD_PASTE, - STD_UNDO, - STD_REDOW, - STD_DELETE, - STD_FILENEW, - STD_FILEOPEN, - STD_FILESAVE, - STD_PRINTPRE, - STD_PROPERTIES, - STD_HELP, - STD_FIND, - STD_REPLACE, - STD_PRINT // = 14 + STD_CUT, + STD_COPY, + STD_PASTE, + STD_UNDO, + STD_REDOW, + STD_DELETE, + STD_FILENEW, + STD_FILEOPEN, + STD_FILESAVE, + STD_PRINTPRE, + STD_PROPERTIES, + STD_HELP, + STD_FIND, + STD_REPLACE, + STD_PRINT // = 14 } enum { - VIEW_LARGEICONS, - VIEW_SMALLICONS, - VIEW_LIST, - VIEW_DETAILS, - VIEW_SORTNAME, - VIEW_SORTSIZE, - VIEW_SORTDATE, - VIEW_SORTTYPE, - VIEW_PARENTFOLDER, - VIEW_NETCONNECT, - VIEW_NETDISCONNECT, - VIEW_NEWFOLDER // = 11 + VIEW_LARGEICONS, + VIEW_SMALLICONS, + VIEW_LIST, + VIEW_DETAILS, + VIEW_SORTNAME, + VIEW_SORTSIZE, + VIEW_SORTDATE, + VIEW_SORTTYPE, + VIEW_PARENTFOLDER, + VIEW_NETCONNECT, + VIEW_NETDISCONNECT, + VIEW_NEWFOLDER // = 11 } enum { - TB_ENABLEBUTTON = WM_USER + 1, - TB_CHECKBUTTON, - TB_PRESSBUTTON, - TB_HIDEBUTTON, - TB_INDETERMINATE, // = WM_USER + 5, - TB_ISBUTTONENABLED = WM_USER + 9, - TB_ISBUTTONCHECKED, - TB_ISBUTTONPRESSED, - TB_ISBUTTONHIDDEN, - TB_ISBUTTONINDETERMINATE, // = WM_USER + 13, - TB_SETSTATE = WM_USER + 17, - TB_GETSTATE = WM_USER + 18, - TB_ADDBITMAP = WM_USER + 19, - TB_DELETEBUTTON = WM_USER + 22, - TB_GETBUTTON, - TB_BUTTONCOUNT, - TB_COMMANDTOINDEX, - TB_SAVERESTOREA, - TB_CUSTOMIZE, - TB_ADDSTRINGA, - TB_GETITEMRECT, - TB_BUTTONSTRUCTSIZE, - TB_SETBUTTONSIZE, - TB_SETBITMAPSIZE, - TB_AUTOSIZE, // = WM_USER + 33, - TB_GETTOOLTIPS = WM_USER + 35, - TB_SETTOOLTIPS = WM_USER + 36, - TB_SETPARENT = WM_USER + 37, - TB_SETROWS = WM_USER + 39, - TB_GETROWS, - TB_GETBITMAPFLAGS, - TB_SETCMDID, - TB_CHANGEBITMAP, - TB_GETBITMAP, - TB_GETBUTTONTEXTA, - TB_REPLACEBITMAP, // = WM_USER + 46, - TB_GETBUTTONSIZE = WM_USER + 58, - TB_SETBUTTONWIDTH = WM_USER + 59, - TB_GETBUTTONTEXTW = WM_USER + 75, - TB_SAVERESTOREW = WM_USER + 76, - TB_ADDSTRINGW = WM_USER + 77, + TB_ENABLEBUTTON = WM_USER + 1, + TB_CHECKBUTTON, + TB_PRESSBUTTON, + TB_HIDEBUTTON, + TB_INDETERMINATE, // = WM_USER + 5, + TB_ISBUTTONENABLED = WM_USER + 9, + TB_ISBUTTONCHECKED, + TB_ISBUTTONPRESSED, + TB_ISBUTTONHIDDEN, + TB_ISBUTTONINDETERMINATE, // = WM_USER + 13, + TB_SETSTATE = WM_USER + 17, + TB_GETSTATE = WM_USER + 18, + TB_ADDBITMAP = WM_USER + 19, + TB_DELETEBUTTON = WM_USER + 22, + TB_GETBUTTON, + TB_BUTTONCOUNT, + TB_COMMANDTOINDEX, + TB_SAVERESTOREA, + TB_CUSTOMIZE, + TB_ADDSTRINGA, + TB_GETITEMRECT, + TB_BUTTONSTRUCTSIZE, + TB_SETBUTTONSIZE, + TB_SETBITMAPSIZE, + TB_AUTOSIZE, // = WM_USER + 33, + TB_GETTOOLTIPS = WM_USER + 35, + TB_SETTOOLTIPS = WM_USER + 36, + TB_SETPARENT = WM_USER + 37, + TB_SETROWS = WM_USER + 39, + TB_GETROWS, + TB_GETBITMAPFLAGS, + TB_SETCMDID, + TB_CHANGEBITMAP, + TB_GETBITMAP, + TB_GETBUTTONTEXTA, + TB_REPLACEBITMAP, // = WM_USER + 46, + TB_GETBUTTONSIZE = WM_USER + 58, + TB_SETBUTTONWIDTH = WM_USER + 59, + TB_GETBUTTONTEXTW = WM_USER + 75, + TB_SAVERESTOREW = WM_USER + 76, + TB_ADDSTRINGW = WM_USER + 77, } static if (_WIN32_IE >= 0x400) { - enum { - TB_MARKBUTTON = WM_USER + 6 - } + enum { + TB_MARKBUTTON = WM_USER + 6 + } } static if (_WIN32_IE >= 0x400) { - enum { - TB_ISBUTTONHIGHLIGHTED = WM_USER + 14 - } + enum { + TB_ISBUTTONHIGHLIGHTED = WM_USER + 14 + } } static if (_WIN32_IE >= 0x400) { - enum { - TB_ADDBUTTONSA = WM_USER + 20, - TB_INSERTBUTTONA = WM_USER + 21 - } + enum { + TB_ADDBUTTONSA = WM_USER + 20, + TB_INSERTBUTTONA = WM_USER + 21 + } } else { - enum { - TB_ADDBUTTONS = WM_USER + 20, - TB_INSERTBUTTON = WM_USER + 21 - } + enum { + TB_ADDBUTTONS = WM_USER + 20, + TB_INSERTBUTTON = WM_USER + 21 + } } static if (_WIN32_IE >= 0x300) { - enum { - TB_SETINDENT = WM_USER + 47, - TB_SETIMAGELIST, - TB_GETIMAGELIST, - TB_LOADIMAGES, - TB_GETRECT, - TB_SETHOTIMAGELIST, - TB_GETHOTIMAGELIST, - TB_SETDISABLEDIMAGELIST, - TB_GETDISABLEDIMAGELIST, - TB_SETSTYLE, - TB_GETSTYLE, - //TB_GETBUTTONSIZE, - //TB_SETBUTTONWIDTH, - TB_SETMAXTEXTROWS, - TB_GETTEXTROWS // = WM_USER + 61 - } + enum { + TB_SETINDENT = WM_USER + 47, + TB_SETIMAGELIST, + TB_GETIMAGELIST, + TB_LOADIMAGES, + TB_GETRECT, + TB_SETHOTIMAGELIST, + TB_GETHOTIMAGELIST, + TB_SETDISABLEDIMAGELIST, + TB_GETDISABLEDIMAGELIST, + TB_SETSTYLE, + TB_GETSTYLE, + //TB_GETBUTTONSIZE, + //TB_SETBUTTONWIDTH, + TB_SETMAXTEXTROWS, + TB_GETTEXTROWS // = WM_USER + 61 + } } static if (_WIN32_IE >= 0x400) { - enum { - TB_GETOBJECT = WM_USER + 62, - TB_GETBUTTONINFOW, - TB_SETBUTTONINFOW, - TB_GETBUTTONINFOA, - TB_SETBUTTONINFOA, - TB_INSERTBUTTONW, - TB_ADDBUTTONSW, - TB_HITTEST, // = WM_USER + 69 - TB_SETEXTENDEDSTYLE = WM_USER + 84, - TB_GETEXTENDEDSTYLE = WM_USER + 85, - TB_SETDRAWTEXTFLAGS = WM_USER + 70, - TB_GETHOTITEM, - TB_SETHOTITEM, - TB_SETANCHORHIGHLIGHT, - TB_GETANCHORHIGHLIGHT, // = WM_USER + 74 - TB_MAPACCELERATORA = WM_USER + 78, - TB_GETINSERTMARK, - TB_SETINSERTMARK, - TB_INSERTMARKHITTEST, - TB_MOVEBUTTON, - TB_GETMAXSIZE, - //TB_SETEXTENDEDSTYLE, - //TB_GETEXTENDEDSTYLE, - TB_GETPADDING, - TB_SETPADDING, - TB_SETINSERTMARKCOLOR, - TB_GETINSERTMARKCOLOR, - TB_MAPACCELERATORW, - TB_GETSTRINGW, - TB_GETSTRINGA, // = WM_USER + 92 + enum { + TB_GETOBJECT = WM_USER + 62, + TB_GETBUTTONINFOW, + TB_SETBUTTONINFOW, + TB_GETBUTTONINFOA, + TB_SETBUTTONINFOA, + TB_INSERTBUTTONW, + TB_ADDBUTTONSW, + TB_HITTEST, // = WM_USER + 69 + TB_SETEXTENDEDSTYLE = WM_USER + 84, + TB_GETEXTENDEDSTYLE = WM_USER + 85, + TB_SETDRAWTEXTFLAGS = WM_USER + 70, + TB_GETHOTITEM, + TB_SETHOTITEM, + TB_SETANCHORHIGHLIGHT, + TB_GETANCHORHIGHLIGHT, // = WM_USER + 74 + TB_MAPACCELERATORA = WM_USER + 78, + TB_GETINSERTMARK, + TB_SETINSERTMARK, + TB_INSERTMARKHITTEST, + TB_MOVEBUTTON, + TB_GETMAXSIZE, + //TB_SETEXTENDEDSTYLE, + //TB_GETEXTENDEDSTYLE, + TB_GETPADDING, + TB_SETPADDING, + TB_SETINSERTMARKCOLOR, + TB_GETINSERTMARKCOLOR, + TB_MAPACCELERATORW, + TB_GETSTRINGW, + TB_GETSTRINGA, // = WM_USER + 92 TB_SETHOTITEM2 = WM_USER + 94, TB_SETLISTGAP = WM_USER + 96, TB_GETIMAGELISTCOUNT = WM_USER + 98, TB_GETIDEALSIZE = WM_USER + 99, //TB_TRANSLATEACCELERATOR = CCM_TRANSLATEACCELERATOR, - TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, - TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME, - TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } + TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, + TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME, + TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } } static if (_WIN32_WINNT >= 0x501) { - enum { + enum { TB_GETMETRICS = WM_USER + 101, TB_SETMETRICS = WM_USER + 102, } } static if (_WIN32_WINNT >= 0x600) { - enum { + enum { TB_GETITEMDROPDOWNRECT = WM_USER + 103, TB_SETPRESSEDIMAGELIST = WM_USER + 104, TB_GETPRESSEDIMAGELIST = WM_USER + 105, @@ -783,403 +783,403 @@ static if (_WIN32_WINNT >= 0x600) { const TBBF_LARGE = 1; enum { - TBN_GETBUTTONINFOA = TBN_FIRST -0, - TBN_BEGINDRAG = TBN_FIRST -1, - TBN_ENDDRAG = TBN_FIRST -2, - TBN_BEGINADJUST = TBN_FIRST -3, - TBN_ENDADJUST = TBN_FIRST -4, - TBN_RESET = TBN_FIRST -5, - TBN_QUERYINSERT = TBN_FIRST -6, - TBN_QUERYDELETE = TBN_FIRST -7, - TBN_TOOLBARCHANGE = TBN_FIRST -8, - TBN_CUSTHELP = TBN_FIRST -9 + TBN_GETBUTTONINFOA = TBN_FIRST -0, + TBN_BEGINDRAG = TBN_FIRST -1, + TBN_ENDDRAG = TBN_FIRST -2, + TBN_BEGINADJUST = TBN_FIRST -3, + TBN_ENDADJUST = TBN_FIRST -4, + TBN_RESET = TBN_FIRST -5, + TBN_QUERYINSERT = TBN_FIRST -6, + TBN_QUERYDELETE = TBN_FIRST -7, + TBN_TOOLBARCHANGE = TBN_FIRST -8, + TBN_CUSTHELP = TBN_FIRST -9 } static if (_WIN32_IE >= 0x300) { - enum { - TBN_DROPDOWN = TBN_FIRST - 10 - } + enum { + TBN_DROPDOWN = TBN_FIRST - 10 + } } static if (_WIN32_IE >= 0x400) { - enum { - TBN_HOTITEMCHANGE = TBN_FIRST - 13, - TBN_DRAGOUT = TBN_FIRST - 14, - TBN_DELETINGBUTTON = TBN_FIRST - 15, - TBN_GETDISPINFOA = TBN_FIRST - 16, - TBN_GETDISPINFOW = TBN_FIRST - 17, - TBN_GETINFOTIPA = TBN_FIRST - 18, - TBN_GETINFOTIPW = TBN_FIRST - 19, - TBN_GETBUTTONINFOW = TBN_FIRST - 20 - } + enum { + TBN_HOTITEMCHANGE = TBN_FIRST - 13, + TBN_DRAGOUT = TBN_FIRST - 14, + TBN_DELETINGBUTTON = TBN_FIRST - 15, + TBN_GETDISPINFOA = TBN_FIRST - 16, + TBN_GETDISPINFOW = TBN_FIRST - 17, + TBN_GETINFOTIPA = TBN_FIRST - 18, + TBN_GETINFOTIPW = TBN_FIRST - 19, + TBN_GETBUTTONINFOW = TBN_FIRST - 20 + } } static if (_WIN32_IE >= 0x500) { - enum { - TBN_RESTORE = TBN_FIRST - 21, - TBN_SAVE = TBN_FIRST - 22, - TBN_INITCUSTOMIZE = TBN_FIRST - 23 - } + enum { + TBN_RESTORE = TBN_FIRST - 21, + TBN_SAVE = TBN_FIRST - 22, + TBN_INITCUSTOMIZE = TBN_FIRST - 23 + } - enum { - TBNRF_HIDEHELP = 1, - TBNRF_ENDCUSTOMIZE - } + enum { + TBNRF_HIDEHELP = 1, + TBNRF_ENDCUSTOMIZE + } - enum { - TBNF_IMAGE = 1, - TBNF_TEXT = 2, - TBNF_DI_SETITEM = 0x10000000 - } + enum { + TBNF_IMAGE = 1, + TBNF_TEXT = 2, + TBNF_DI_SETITEM = 0x10000000 + } } enum { - TTS_ALWAYSTIP = 1, - TTS_NOPREFIX + TTS_ALWAYSTIP = 1, + TTS_NOPREFIX } static if(_WIN32_IE >= 0x500) { - enum { - TTS_NOANIMATE = 0x10, - TTS_NOFADE = 0x20, - TTS_BALLOON = 0x40, - TTS_CLOSE = 0x80 - } + enum { + TTS_NOANIMATE = 0x10, + TTS_NOFADE = 0x20, + TTS_BALLOON = 0x40, + TTS_CLOSE = 0x80 + } } enum { - TTF_IDISHWND = 1, - TTF_CENTERTIP = 2, - TTF_RTLREADING = 4, - TTF_SUBCLASS = 16 + TTF_IDISHWND = 1, + TTF_CENTERTIP = 2, + TTF_RTLREADING = 4, + TTF_SUBCLASS = 16 } static if (_WIN32_IE >= 0x300) { - enum { - TTF_TRACK = 0x0020, - TTF_ABSOLUTE = 0x0080, - TTF_TRANSPARENT = 0x0100, - TTF_DI_SETITEM = 0x8000 - } - - static if (_WIN32_IE >= 0x501) { - enum { - TTF_PARSELINKS = 0x1000 - } - } - - enum { - TBCD_TICS = 1, - TBCD_THUMB, - TBCD_CHANNEL // = 3 - } + enum { + TTF_TRACK = 0x0020, + TTF_ABSOLUTE = 0x0080, + TTF_TRANSPARENT = 0x0100, + TTF_DI_SETITEM = 0x8000 + } + + static if (_WIN32_IE >= 0x501) { + enum { + TTF_PARSELINKS = 0x1000 + } + } + + enum { + TBCD_TICS = 1, + TBCD_THUMB, + TBCD_CHANNEL // = 3 + } } static if (_WIN32_IE >= 0x400) { - enum { - TBDDRET_DEFAULT, - TBDDRET_NODEFAULT, - TBDDRET_TREATPRESSED - } + enum { + TBDDRET_DEFAULT, + TBDDRET_NODEFAULT, + TBDDRET_TREATPRESSED + } - enum { - TBIMHT_AFTER = 1, - TBIMHT_BACKGROUND - } + enum { + TBIMHT_AFTER = 1, + TBIMHT_BACKGROUND + } } enum { - TTDT_AUTOMATIC, - TTDT_RESHOW, - TTDT_AUTOPOP, - TTDT_INITIAL + TTDT_AUTOMATIC, + TTDT_RESHOW, + TTDT_AUTOPOP, + TTDT_INITIAL } enum { - TTM_ACTIVATE = WM_USER + 1, - TTM_SETDELAYTIME = WM_USER + 3, - TTM_ADDTOOLA, - TTM_DELTOOLA, - TTM_NEWTOOLRECTA, - TTM_RELAYEVENT, - TTM_GETTOOLINFOA, - TTM_SETTOOLINFOA, - TTM_HITTESTA, - TTM_GETTEXTA, - TTM_UPDATETIPTEXTA, - TTM_GETTOOLCOUNT, - TTM_ENUMTOOLSA, - TTM_GETCURRENTTOOLA, - TTM_WINDOWFROMPOINT, // = WM_USER + 16 - TTM_ADDTOOLW = WM_USER + 50, - TTM_DELTOOLW, - TTM_NEWTOOLRECTW, - TTM_GETTOOLINFOW, - TTM_SETTOOLINFOW, - TTM_HITTESTW, - TTM_GETTEXTW, - TTM_UPDATETIPTEXTW, - TTM_ENUMTOOLSW, - TTM_GETCURRENTTOOLW // = WM_USER + 59 + TTM_ACTIVATE = WM_USER + 1, + TTM_SETDELAYTIME = WM_USER + 3, + TTM_ADDTOOLA, + TTM_DELTOOLA, + TTM_NEWTOOLRECTA, + TTM_RELAYEVENT, + TTM_GETTOOLINFOA, + TTM_SETTOOLINFOA, + TTM_HITTESTA, + TTM_GETTEXTA, + TTM_UPDATETIPTEXTA, + TTM_GETTOOLCOUNT, + TTM_ENUMTOOLSA, + TTM_GETCURRENTTOOLA, + TTM_WINDOWFROMPOINT, // = WM_USER + 16 + TTM_ADDTOOLW = WM_USER + 50, + TTM_DELTOOLW, + TTM_NEWTOOLRECTW, + TTM_GETTOOLINFOW, + TTM_SETTOOLINFOW, + TTM_HITTESTW, + TTM_GETTEXTW, + TTM_UPDATETIPTEXTW, + TTM_ENUMTOOLSW, + TTM_GETCURRENTTOOLW // = WM_USER + 59 } static if (_WIN32_IE >= 0x300) { - enum { - TTM_TRACKACTIVATE = WM_USER + 17, - TTM_TRACKPOSITION, - TTM_SETTIPBKCOLOR, - TTM_SETTIPTEXTCOLOR, - TTM_GETDELAYTIME, - TTM_GETTIPBKCOLOR, - TTM_GETTIPTEXTCOLOR, - TTM_SETMAXTIPWIDTH, - TTM_GETMAXTIPWIDTH, - TTM_SETMARGIN, - TTM_GETMARGIN, - TTM_POP // = WM_USER + 28 - } + enum { + TTM_TRACKACTIVATE = WM_USER + 17, + TTM_TRACKPOSITION, + TTM_SETTIPBKCOLOR, + TTM_SETTIPTEXTCOLOR, + TTM_GETDELAYTIME, + TTM_GETTIPBKCOLOR, + TTM_GETTIPTEXTCOLOR, + TTM_SETMAXTIPWIDTH, + TTM_GETMAXTIPWIDTH, + TTM_SETMARGIN, + TTM_GETMARGIN, + TTM_POP // = WM_USER + 28 + } } static if (_WIN32_IE >= 0x400) { // IE4.0 ??? - enum { - TTM_UPDATE = WM_USER + 29, - TTM_GETBUBBLESIZE, - TTM_ADJUSTRECT, - TTM_SETTITLEA, - TTM_SETTITLEW // = WM_USER + 33 - } - static if (_WIN32_IE >= 0x500) { - alias TTM_SETTITLEW TTM_SETTITLE; - } else { - alias TTM_SETTITLEA TTM_SETTITLE; - } + enum { + TTM_UPDATE = WM_USER + 29, + TTM_GETBUBBLESIZE, + TTM_ADJUSTRECT, + TTM_SETTITLEA, + TTM_SETTITLEW // = WM_USER + 33 + } + static if (_WIN32_IE >= 0x500) { + alias TTM_SETTITLEW TTM_SETTITLE; + } else { + alias TTM_SETTITLEA TTM_SETTITLE; + } } static if (_WIN32_WINNT >= 0x501) { - enum { - TTM_POPUP = (WM_USER + 34), - TTM_GETTITLE = (WM_USER + 35), - } + enum { + TTM_POPUP = (WM_USER + 34), + TTM_GETTITLE = (WM_USER + 35), + } } enum { - TTN_GETDISPINFOA = TTN_FIRST - 0, - TTN_GETDISPINFOW = TTN_FIRST - 10, - TTN_NEEDTEXTA = TTN_GETDISPINFOA, - TTN_NEEDTEXTW = TTN_GETDISPINFOW, - TTN_SHOW = TTN_FIRST-1, - TTN_POP = TTN_FIRST-2 + TTN_GETDISPINFOA = TTN_FIRST - 0, + TTN_GETDISPINFOW = TTN_FIRST - 10, + TTN_NEEDTEXTA = TTN_GETDISPINFOA, + TTN_NEEDTEXTW = TTN_GETDISPINFOW, + TTN_SHOW = TTN_FIRST-1, + TTN_POP = TTN_FIRST-2 } const UD_MAXVAL = 0x7fff; const UD_MINVAL = -UD_MAXVAL; enum { - UDN_DELTAPOS = UDN_FIRST-1, - UDS_WRAP = 1, - UDS_SETBUDDYINT = 2, - UDS_ALIGNRIGHT = 4, - UDS_ALIGNLEFT = 8, - UDS_AUTOBUDDY = 16, - UDS_ARROWKEYS = 32, - UDS_HORZ = 64, - UDS_NOTHOUSANDS = 128 + UDN_DELTAPOS = UDN_FIRST-1, + UDS_WRAP = 1, + UDS_SETBUDDYINT = 2, + UDS_ALIGNRIGHT = 4, + UDS_ALIGNLEFT = 8, + UDS_AUTOBUDDY = 16, + UDS_ARROWKEYS = 32, + UDS_HORZ = 64, + UDS_NOTHOUSANDS = 128 } static if (_WIN32_IE >= 0x300) { - enum { - UDS_HOTTRACK = 0x0100 - } + enum { + UDS_HOTTRACK = 0x0100 + } } enum { - UDM_SETRANGE = WM_USER + 101, - UDM_GETRANGE, - UDM_SETPOS, - UDM_GETPOS, - UDM_SETBUDDY, - UDM_GETBUDDY, - UDM_SETACCEL, - UDM_GETACCEL, - UDM_SETBASE, - UDM_GETBASE // = WM_USER + 110 + UDM_SETRANGE = WM_USER + 101, + UDM_GETRANGE, + UDM_SETPOS, + UDM_GETPOS, + UDM_SETBUDDY, + UDM_GETBUDDY, + UDM_SETACCEL, + UDM_GETACCEL, + UDM_SETBASE, + UDM_GETBASE // = WM_USER + 110 } static if (_WIN32_IE >= 0x400) { - enum { - UDM_SETRANGE32 = WM_USER + 111, - UDM_GETRANGE32, - UDM_SETPOS32, - UDM_GETPOS32 // = WM_USER + 114 - } + enum { + UDM_SETRANGE32 = WM_USER + 111, + UDM_GETRANGE32, + UDM_SETPOS32, + UDM_GETPOS32 // = WM_USER + 114 + } } static if (_WIN32_IE >= 0x500) { - enum { - UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } + enum { + UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } } /*enum { - SB_SETTEXTA = WM_USER + 1, - SB_GETTEXTA, - SB_GETTEXTLENGTHA, - SB_SETPARTS, // = WM_USER + 4 - SB_GETPARTS = WM_USER + 6, - SB_GETBORDERS, - SB_SETMINHEIGHT, - SB_SIMPLE, - SB_GETRECT, - SB_SETTEXTW, - SB_GETTEXTLENGTHW, - SB_GETTEXTW // = WM_USER + 13 + SB_SETTEXTA = WM_USER + 1, + SB_GETTEXTA, + SB_GETTEXTLENGTHA, + SB_SETPARTS, // = WM_USER + 4 + SB_GETPARTS = WM_USER + 6, + SB_GETBORDERS, + SB_SETMINHEIGHT, + SB_SIMPLE, + SB_GETRECT, + SB_SETTEXTW, + SB_GETTEXTLENGTHW, + SB_GETTEXTW // = WM_USER + 13 }*/ /*enum { - SBT_OWNERDRAW = 0x1000, - SBT_NOBORDERS = 256, - SBT_POPOUT = 512, - SBT_RTLREADING = 1024 + SBT_OWNERDRAW = 0x1000, + SBT_NOBORDERS = 256, + SBT_POPOUT = 512, + SBT_RTLREADING = 1024 }*/ static if(_WIN32_IE >= 0x400) { - enum { - SBT_TOOLTIPS = 0x0800, - SBN_SIMPLEMODECHANGE = SBN_FIRST - } + enum { + SBT_TOOLTIPS = 0x0800, + SBN_SIMPLEMODECHANGE = SBN_FIRST + } } enum { - TBS_AUTOTICKS = 1, - TBS_VERT = 2, - TBS_HORZ = 0, - TBS_TOP = 4, - TBS_BOTTOM = 0, - TBS_LEFT = 4, - TBS_RIGHT = 0, - TBS_BOTH = 8, - TBS_NOTICKS = 16, - TBS_ENABLESELRANGE = 32, - TBS_FIXEDLENGTH = 64, - TBS_NOTHUMB = 128 + TBS_AUTOTICKS = 1, + TBS_VERT = 2, + TBS_HORZ = 0, + TBS_TOP = 4, + TBS_BOTTOM = 0, + TBS_LEFT = 4, + TBS_RIGHT = 0, + TBS_BOTH = 8, + TBS_NOTICKS = 16, + TBS_ENABLESELRANGE = 32, + TBS_FIXEDLENGTH = 64, + TBS_NOTHUMB = 128 } static if (_WIN32_IE >= 0x300) { - enum { - TBS_TOOLTIPS = 0x0100, - TBTS_TOP = 0, - TBTS_LEFT, - TBTS_BOTTOM, - TBTS_RIGHT // = 3 - } + enum { + TBS_TOOLTIPS = 0x0100, + TBTS_TOP = 0, + TBTS_LEFT, + TBTS_BOTTOM, + TBTS_RIGHT // = 3 + } } static if (_WIN32_IE >= 0x500) { - enum { - TBS_REVERSED = 0x0200 - } + enum { + TBS_REVERSED = 0x0200 + } } static if (_WIN32_IE >= 0x501) { - enum { - TBS_DOWNISLEFT = 0x0400 - } + enum { + TBS_DOWNISLEFT = 0x0400 + } } static if (_WIN32_IE >= 0x400) { - enum { - TBIF_BYINDEX = 0x80000000, - TBIF_COMMAND = 32, - TBIF_IMAGE = 1, - TBIF_LPARAM = 16, - TBIF_SIZE = 64, - TBIF_STATE = 4, - TBIF_STYLE = 8, - TBIF_TEXT = 2 - } + enum { + TBIF_BYINDEX = 0x80000000, + TBIF_COMMAND = 32, + TBIF_IMAGE = 1, + TBIF_LPARAM = 16, + TBIF_SIZE = 64, + TBIF_STATE = 4, + TBIF_STYLE = 8, + TBIF_TEXT = 2 + } } enum { - TBM_GETPOS = WM_USER, - TBM_GETRANGEMIN, - TBM_GETRANGEMAX, - TBM_GETTIC, - TBM_SETTIC, - TBM_SETPOS, - TBM_SETRANGE, - TBM_SETRANGEMIN, - TBM_SETRANGEMAX, - TBM_CLEARTICS, - TBM_SETSEL, - TBM_SETSELSTART, - TBM_SETSELEND, // = WM_USER+12, - TBM_GETPTICS = WM_USER+14, - TBM_GETTICPOS, - TBM_GETNUMTICS, - TBM_GETSELSTART, - TBM_GETSELEND, - TBM_CLEARSEL, - TBM_SETTICFREQ, - TBM_SETPAGESIZE, - TBM_GETPAGESIZE, - TBM_SETLINESIZE, - TBM_GETLINESIZE, - TBM_GETTHUMBRECT, - TBM_GETCHANNELRECT, - TBM_SETTHUMBLENGTH, - TBM_GETTHUMBLENGTH, - TBM_SETTOOLTIPS, - TBM_GETTOOLTIPS, - TBM_SETTIPSIDE, - TBM_SETBUDDY, - TBM_GETBUDDY, // = WM_USER+33, - TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, - TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT + TBM_GETPOS = WM_USER, + TBM_GETRANGEMIN, + TBM_GETRANGEMAX, + TBM_GETTIC, + TBM_SETTIC, + TBM_SETPOS, + TBM_SETRANGE, + TBM_SETRANGEMIN, + TBM_SETRANGEMAX, + TBM_CLEARTICS, + TBM_SETSEL, + TBM_SETSELSTART, + TBM_SETSELEND, // = WM_USER+12, + TBM_GETPTICS = WM_USER+14, + TBM_GETTICPOS, + TBM_GETNUMTICS, + TBM_GETSELSTART, + TBM_GETSELEND, + TBM_CLEARSEL, + TBM_SETTICFREQ, + TBM_SETPAGESIZE, + TBM_GETPAGESIZE, + TBM_SETLINESIZE, + TBM_GETLINESIZE, + TBM_GETTHUMBRECT, + TBM_GETCHANNELRECT, + TBM_SETTHUMBLENGTH, + TBM_GETTHUMBLENGTH, + TBM_SETTOOLTIPS, + TBM_GETTOOLTIPS, + TBM_SETTIPSIDE, + TBM_SETBUDDY, + TBM_GETBUDDY, // = WM_USER+33, + TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT } enum { - TB_LINEUP, - TB_LINEDOWN, - TB_PAGEUP, - TB_PAGEDOWN, - TB_THUMBPOSITION, - TB_THUMBTRACK, - TB_TOP, - TB_BOTTOM, - TB_ENDTRACK // = 8 + TB_LINEUP, + TB_LINEDOWN, + TB_PAGEUP, + TB_PAGEDOWN, + TB_THUMBPOSITION, + TB_THUMBTRACK, + TB_TOP, + TB_BOTTOM, + TB_ENDTRACK // = 8 } enum { - HOTKEYF_SHIFT = 1, - HOTKEYF_CONTROL = 2, - HOTKEYF_ALT = 4, - HOTKEYF_EXT = 8 + HOTKEYF_SHIFT = 1, + HOTKEYF_CONTROL = 2, + HOTKEYF_ALT = 4, + HOTKEYF_EXT = 8 } enum { - HKCOMB_NONE = 1, - HKCOMB_S = 2, - HKCOMB_C = 4, - HKCOMB_A = 8, - HKCOMB_SC = 16, - HKCOMB_SA = 32, - HKCOMB_CA = 64, - HKCOMB_SCA = 128 + HKCOMB_NONE = 1, + HKCOMB_S = 2, + HKCOMB_C = 4, + HKCOMB_A = 8, + HKCOMB_SC = 16, + HKCOMB_SA = 32, + HKCOMB_CA = 64, + HKCOMB_SCA = 128 } enum { - HKM_SETHOTKEY = WM_USER + 1, - HKM_GETHOTKEY = WM_USER + 2, - HKM_SETRULES = WM_USER + 3 + HKM_SETHOTKEY = WM_USER + 1, + HKM_GETHOTKEY = WM_USER + 2, + HKM_SETRULES = WM_USER + 3 } enum { - PBM_SETRANGE = WM_USER + 1, - PBM_SETPOS, - PBM_DELTAPOS, - PBM_SETSTEP, - PBM_STEPIT, // = WM_USER + 5 - PBM_SETRANGE32 = 1030, - PBM_GETRANGE, - PBM_GETPOS, - PBM_SETBARCOLOR, // = 1033 - PBM_SETBKCOLOR = CCM_SETBKCOLOR + PBM_SETRANGE = WM_USER + 1, + PBM_SETPOS, + PBM_DELTAPOS, + PBM_SETSTEP, + PBM_STEPIT, // = WM_USER + 5 + PBM_SETRANGE32 = 1030, + PBM_GETRANGE, + PBM_GETPOS, + PBM_SETBARCOLOR, // = 1033 + PBM_SETBKCOLOR = CCM_SETBKCOLOR } static if (_WIN32_WINNT >= 0x501) { @@ -1199,8 +1199,8 @@ static if (_WIN32_WINNT >= 0x600) { } enum { - PBS_SMOOTH = 1, - PBS_VERTICAL = 4 + PBS_SMOOTH = 1, + PBS_VERTICAL = 4 } static if (_WIN32_WINNT >= 0x501) { @@ -1216,193 +1216,193 @@ static if (_WIN32_WINNT >= 0x600) { } enum { - LVS_ICON, - LVS_REPORT, - LVS_SMALLICON, - LVS_LIST, // = 3 - LVS_TYPEMASK = 3, - LVS_SINGLESEL = 4, - LVS_SHOWSELALWAYS = 8, - LVS_SORTASCENDING = 16, - LVS_SORTDESCENDING = 32, - LVS_SHAREIMAGELISTS = 64, - LVS_NOLABELWRAP = 128, - LVS_AUTOARRANGE = 256, - LVS_EDITLABELS = 512, - LVS_NOSCROLL = 0x2000, - LVS_TYPESTYLEMASK = 0xFC00, - LVS_ALIGNTOP = 0, - LVS_ALIGNLEFT = 0x800, - LVS_ALIGNMASK = 0xC00, - LVS_OWNERDRAWFIXED = 0x400, - LVS_NOCOLUMNHEADER = 0x4000, - LVS_NOSORTHEADER = 0x8000 + LVS_ICON, + LVS_REPORT, + LVS_SMALLICON, + LVS_LIST, // = 3 + LVS_TYPEMASK = 3, + LVS_SINGLESEL = 4, + LVS_SHOWSELALWAYS = 8, + LVS_SORTASCENDING = 16, + LVS_SORTDESCENDING = 32, + LVS_SHAREIMAGELISTS = 64, + LVS_NOLABELWRAP = 128, + LVS_AUTOARRANGE = 256, + LVS_EDITLABELS = 512, + LVS_NOSCROLL = 0x2000, + LVS_TYPESTYLEMASK = 0xFC00, + LVS_ALIGNTOP = 0, + LVS_ALIGNLEFT = 0x800, + LVS_ALIGNMASK = 0xC00, + LVS_OWNERDRAWFIXED = 0x400, + LVS_NOCOLUMNHEADER = 0x4000, + LVS_NOSORTHEADER = 0x8000 } static if (_WIN32_IE >= 0x300) { - enum { - CDIS_CHECKED = 8, - CDIS_DEFAULT = 32, - CDIS_DISABLED = 4, - CDIS_FOCUS = 16, - CDIS_GRAYED = 2, - CDIS_HOT = 64, - CDIS_SELECTED = 1, - CDIS_MARKED = 128, - CDIS_INDETERMINATE = 256 - } - - static if (_WIN32_WINNT >= 0x501) { - enum { - CDIS_SHOWKEYBOARDCUES = 512 - } - } - - enum { - CDDS_POSTERASE = 4, - CDDS_POSTPAINT = 2, - CDDS_PREERASE = 3, - CDDS_PREPAINT = 1, - CDDS_ITEM = 65536, - CDDS_ITEMPOSTERASE = 65540, - CDDS_ITEMPOSTPAINT = 65538, - CDDS_ITEMPREERASE = 65539, - CDDS_ITEMPREPAINT = 65537 - } - - static if (_WIN32_IE >= 0x400) { - enum { - CDDS_SUBITEM = 0x20000 - } - } - - enum { - CDRF_DODEFAULT = 0x00, - CDRF_NOTIFYITEMDRAW = 0x20, - CDRF_NOTIFYSUBITEMDRAW = 0x20, - CDRF_NOTIFYITEMERASE = 0x80, - CDRF_NOTIFYPOSTERASE = 0x40, - CDRF_NOTIFYPOSTPAINT = 0x10, - CDRF_NEWFONT = 0x02, - CDRF_SKIPDEFAULT = 0x04 - } - - static if (_WIN32_IE >= 0x400) { - enum { - LVBKIF_SOURCE_NONE = 0x00000000, - LVBKIF_SOURCE_HBITMAP = 0x00000001, - LVBKIF_SOURCE_URL = 0x00000002, - LVBKIF_SOURCE_MASK = 0x00000003, - LVBKIF_STYLE_NORMAL = 0x00000000, - LVBKIF_STYLE_TILE = 0x00000010, - LVBKIF_STYLE_MASK = 0x00000010 - } - } - - static if (_WIN32_WINNT >= 0x501) { - enum { - LVBKIF_FLAG_TILEOFFSET = 0x00000100, - LVBKIF_TYPE_WATERMARK = 0x10000000 - } - } - - enum { - LVS_OWNERDATA = 4096 - } - - enum { - LVS_EX_CHECKBOXES = 4, - LVS_EX_FULLROWSELECT = 32, - LVS_EX_GRIDLINES = 1, - LVS_EX_HEADERDRAGDROP = 16, - LVS_EX_ONECLICKACTIVATE = 64, - LVS_EX_SUBITEMIMAGES = 2, - LVS_EX_TRACKSELECT = 8, - LVS_EX_TWOCLICKACTIVATE = 128 - } - - enum { - LVSICF_NOINVALIDATEALL = 0x00000001, - LVSICF_NOSCROLL = 0x00000002 - } - - static if(_WIN32_IE >= 0x400) { - enum { - LVS_EX_FLATSB = 0x00000100, - LVS_EX_REGIONAL = 0x00000200, - LVS_EX_INFOTIP = 0x00000400, - LVS_EX_UNDERLINEHOT = 0x00000800, - LVS_EX_UNDERLINECOLD = 0x00001000, - LVS_EX_MULTIWORKAREAS = 0x00002000 - } - } - - static if(_WIN32_IE >= 0x500) { - enum { - LVS_EX_LABELTIP = 0x00004000, - LVS_EX_BORDERSELECT = 0x00008000 - } - } + enum { + CDIS_CHECKED = 8, + CDIS_DEFAULT = 32, + CDIS_DISABLED = 4, + CDIS_FOCUS = 16, + CDIS_GRAYED = 2, + CDIS_HOT = 64, + CDIS_SELECTED = 1, + CDIS_MARKED = 128, + CDIS_INDETERMINATE = 256 + } + + static if (_WIN32_WINNT >= 0x501) { + enum { + CDIS_SHOWKEYBOARDCUES = 512 + } + } + + enum { + CDDS_POSTERASE = 4, + CDDS_POSTPAINT = 2, + CDDS_PREERASE = 3, + CDDS_PREPAINT = 1, + CDDS_ITEM = 65536, + CDDS_ITEMPOSTERASE = 65540, + CDDS_ITEMPOSTPAINT = 65538, + CDDS_ITEMPREERASE = 65539, + CDDS_ITEMPREPAINT = 65537 + } + + static if (_WIN32_IE >= 0x400) { + enum { + CDDS_SUBITEM = 0x20000 + } + } + + enum { + CDRF_DODEFAULT = 0x00, + CDRF_NOTIFYITEMDRAW = 0x20, + CDRF_NOTIFYSUBITEMDRAW = 0x20, + CDRF_NOTIFYITEMERASE = 0x80, + CDRF_NOTIFYPOSTERASE = 0x40, + CDRF_NOTIFYPOSTPAINT = 0x10, + CDRF_NEWFONT = 0x02, + CDRF_SKIPDEFAULT = 0x04 + } + + static if (_WIN32_IE >= 0x400) { + enum { + LVBKIF_SOURCE_NONE = 0x00000000, + LVBKIF_SOURCE_HBITMAP = 0x00000001, + LVBKIF_SOURCE_URL = 0x00000002, + LVBKIF_SOURCE_MASK = 0x00000003, + LVBKIF_STYLE_NORMAL = 0x00000000, + LVBKIF_STYLE_TILE = 0x00000010, + LVBKIF_STYLE_MASK = 0x00000010 + } + } + + static if (_WIN32_WINNT >= 0x501) { + enum { + LVBKIF_FLAG_TILEOFFSET = 0x00000100, + LVBKIF_TYPE_WATERMARK = 0x10000000 + } + } + + enum { + LVS_OWNERDATA = 4096 + } + + enum { + LVS_EX_CHECKBOXES = 4, + LVS_EX_FULLROWSELECT = 32, + LVS_EX_GRIDLINES = 1, + LVS_EX_HEADERDRAGDROP = 16, + LVS_EX_ONECLICKACTIVATE = 64, + LVS_EX_SUBITEMIMAGES = 2, + LVS_EX_TRACKSELECT = 8, + LVS_EX_TWOCLICKACTIVATE = 128 + } + + enum { + LVSICF_NOINVALIDATEALL = 0x00000001, + LVSICF_NOSCROLL = 0x00000002 + } + + static if(_WIN32_IE >= 0x400) { + enum { + LVS_EX_FLATSB = 0x00000100, + LVS_EX_REGIONAL = 0x00000200, + LVS_EX_INFOTIP = 0x00000400, + LVS_EX_UNDERLINEHOT = 0x00000800, + LVS_EX_UNDERLINECOLD = 0x00001000, + LVS_EX_MULTIWORKAREAS = 0x00002000 + } + } + + static if(_WIN32_IE >= 0x500) { + enum { + LVS_EX_LABELTIP = 0x00004000, + LVS_EX_BORDERSELECT = 0x00008000 + } + } } enum { - LVSIL_NORMAL, - LVSIL_SMALL, - LVSIL_STATE + LVSIL_NORMAL, + LVSIL_SMALL, + LVSIL_STATE } enum { - LVM_GETBKCOLOR = LVM_FIRST, - LVM_SETBKCOLOR, - LVM_GETIMAGELIST, - LVM_SETIMAGELIST, - LVM_GETITEMCOUNT, // = LVM_FIRST + 4 - LVM_SORTITEMSEX = LVM_FIRST + 81, + LVM_GETBKCOLOR = LVM_FIRST, + LVM_SETBKCOLOR, + LVM_GETIMAGELIST, + LVM_SETIMAGELIST, + LVM_GETITEMCOUNT, // = LVM_FIRST + 4 + LVM_SORTITEMSEX = LVM_FIRST + 81, LVM_GETGROUPSTATE = LVM_FIRST + 92, LVM_GETFOCUSEDGROUP, LVM_GETGROUPRECT = LVM_FIRST + 98, - LVM_SETVIEW = LVM_FIRST + 142, - LVM_GETVIEW, // = LVM_FIRST + 143 - LVM_INSERTGROUP = LVM_FIRST + 145, - LVM_SETGROUPINFO = LVM_FIRST + 147, - LVM_GETGROUPINFO = LVM_FIRST + 149, - LVM_REMOVEGROUP, - LVM_MOVEGROUP, // = LVM_FIRST + 151 + LVM_SETVIEW = LVM_FIRST + 142, + LVM_GETVIEW, // = LVM_FIRST + 143 + LVM_INSERTGROUP = LVM_FIRST + 145, + LVM_SETGROUPINFO = LVM_FIRST + 147, + LVM_GETGROUPINFO = LVM_FIRST + 149, + LVM_REMOVEGROUP, + LVM_MOVEGROUP, // = LVM_FIRST + 151 LVM_GETGROUPCOUNT, LVM_GETGROUPINFOBYINDEX, LVM_MOVEITEMTOGROUP, - LVM_SETGROUPMETRICS = LVM_FIRST + 155, - LVM_GETGROUPMETRICS, - LVM_ENABLEGROUPVIEW, - LVM_SORTGROUPS, - LVM_INSERTGROUPSORTED, - LVM_REMOVEALLGROUPS, - LVM_HASGROUP, - LVM_SETTILEVIEWINFO, - LVM_GETTILEVIEWINFO, - LVM_SETTILEINFO, - LVM_GETTILEINFO, - LVM_SETINSERTMARK, - LVM_GETINSERTMARK, - LVM_INSERTMARKHITTEST, - LVM_GETINSERTMARKRECT, - LVM_SETINSERTMARKCOLOR, - LVM_GETINSERTMARKCOLOR, // = LVM_FIRST + 171 - LVM_SETINFOTIP = LVM_FIRST + 173, - LVM_GETSELECTEDCOLUMN, - LVM_ISGROUPVIEWENABLED, - LVM_GETOUTLINECOLOR, - LVM_SETOUTLINECOLOR, // = LVM_FIRST + 177 - LVM_CANCELEDITLABEL = LVM_FIRST + 179, + LVM_SETGROUPMETRICS = LVM_FIRST + 155, + LVM_GETGROUPMETRICS, + LVM_ENABLEGROUPVIEW, + LVM_SORTGROUPS, + LVM_INSERTGROUPSORTED, + LVM_REMOVEALLGROUPS, + LVM_HASGROUP, + LVM_SETTILEVIEWINFO, + LVM_GETTILEVIEWINFO, + LVM_SETTILEINFO, + LVM_GETTILEINFO, + LVM_SETINSERTMARK, + LVM_GETINSERTMARK, + LVM_INSERTMARKHITTEST, + LVM_GETINSERTMARKRECT, + LVM_SETINSERTMARKCOLOR, + LVM_GETINSERTMARKCOLOR, // = LVM_FIRST + 171 + LVM_SETINFOTIP = LVM_FIRST + 173, + LVM_GETSELECTEDCOLUMN, + LVM_ISGROUPVIEWENABLED, + LVM_GETOUTLINECOLOR, + LVM_SETOUTLINECOLOR, // = LVM_FIRST + 177 + LVM_CANCELEDITLABEL = LVM_FIRST + 179, LVM_MAPINDEXTOID = LVM_FIRST + 180, - LVM_MAPIDTOINDEX = LVM_FIRST + 181, + LVM_MAPIDTOINDEX = LVM_FIRST + 181, LVM_ISITEMVISIBLE = LVM_FIRST + 182, } static if (_WIN32_WINNT >= 0x501) { - enum { - LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140 - } + enum { + LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140 + } } static if (_WIN32_WINNT >= 0x600) { @@ -1419,33 +1419,33 @@ static if (_WIN32_WINNT >= 0x600) { } enum { - LVIF_TEXT = 1, - LVIF_IMAGE = 2, - LVIF_PARAM = 4, - LVIF_STATE = 8 + LVIF_TEXT = 1, + LVIF_IMAGE = 2, + LVIF_PARAM = 4, + LVIF_STATE = 8 } static if (_WIN32_IE >= 0x300) { - enum { - LVIF_INDENT = 16, - LVIF_NORECOMPUTE = 2048 - } + enum { + LVIF_INDENT = 16, + LVIF_NORECOMPUTE = 2048 + } } static if (_WIN32_WINNT >= 0x501) { - enum { - LVIF_GROUPID = 128, - LVIF_COLUMNS = 256 - } + enum { + LVIF_GROUPID = 128, + LVIF_COLUMNS = 256 + } } enum { - LVIS_FOCUSED = 1, - LVIS_SELECTED = 2, - LVIS_CUT = 4, - LVIS_DROPHILITED = 8, - LVIS_OVERLAYMASK = 0xF00, - LVIS_STATEIMAGEMASK = 0xF000 + LVIS_FOCUSED = 1, + LVIS_SELECTED = 2, + LVIS_CUT = 4, + LVIS_DROPHILITED = 8, + LVIS_OVERLAYMASK = 0xF00, + LVIS_STATEIMAGEMASK = 0xF000 } const LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR) -1; @@ -1454,287 +1454,287 @@ const LPSTR LPSTR_TEXTCALLBACKA = cast(LPSTR) -1; const I_IMAGECALLBACK = -1; static if(_WIN32_IE >= 0x400) { - enum { - LVM_SETBKIMAGEA = LVM_FIRST + 68, - LVM_SETBKIMAGEW = LVM_FIRST + 138, - LVM_GETBKIMAGEA = LVM_FIRST + 69, - LVM_GETBKIMAGEW = LVM_FIRST + 139, - LV_MAX_WORKAREAS = 16, - LVM_SETWORKAREAS = LVM_FIRST + 65, - LVM_GETWORKAREAS = LVM_FIRST + 70, - LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73, - LVM_GETSELECTIONMARK = LVM_FIRST + 66, - LVM_SETSELECTIONMARK = LVM_FIRST + 67, - LVM_SETHOVERTIME = LVM_FIRST + 71, - LVM_GETHOVERTIME = LVM_FIRST + 72, - LVM_SETTOOLTIPS = LVM_FIRST + 74, - LVM_GETTOOLTIPS = LVM_FIRST + 78, - LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } + enum { + LVM_SETBKIMAGEA = LVM_FIRST + 68, + LVM_SETBKIMAGEW = LVM_FIRST + 138, + LVM_GETBKIMAGEA = LVM_FIRST + 69, + LVM_GETBKIMAGEW = LVM_FIRST + 139, + LV_MAX_WORKAREAS = 16, + LVM_SETWORKAREAS = LVM_FIRST + 65, + LVM_GETWORKAREAS = LVM_FIRST + 70, + LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73, + LVM_GETSELECTIONMARK = LVM_FIRST + 66, + LVM_SETSELECTIONMARK = LVM_FIRST + 67, + LVM_SETHOVERTIME = LVM_FIRST + 71, + LVM_GETHOVERTIME = LVM_FIRST + 72, + LVM_SETTOOLTIPS = LVM_FIRST + 74, + LVM_GETTOOLTIPS = LVM_FIRST + 78, + LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } } enum { - LVNI_ALL, - LVNI_FOCUSED = 1, - LVNI_SELECTED = 2, - LVNI_CUT = 4, - LVNI_DROPHILITED = 8, - LVNI_ABOVE = 256, - LVNI_BELOW = 512, - LVNI_TOLEFT = 1024, - LVNI_TORIGHT = 2048 + LVNI_ALL, + LVNI_FOCUSED = 1, + LVNI_SELECTED = 2, + LVNI_CUT = 4, + LVNI_DROPHILITED = 8, + LVNI_ABOVE = 256, + LVNI_BELOW = 512, + LVNI_TOLEFT = 1024, + LVNI_TORIGHT = 2048 } enum { - LVM_GETITEMA = LVM_FIRST + 5, - LVM_SETITEMA, - LVM_INSERTITEMA, - LVM_DELETEITEM, - LVM_DELETEALLITEMS, - LVM_GETCALLBACKMASK, - LVM_SETCALLBACKMASK, - LVM_GETNEXTITEM, - LVM_FINDITEMA, - LVM_GETITEMRECT, - LVM_SETITEMPOSITION, - LVM_GETITEMPOSITION, - LVM_GETSTRINGWIDTHA, - LVM_HITTEST, - LVM_ENSUREVISIBLE, - LVM_SCROLL, - LVM_REDRAWITEMS, - LVM_ARRANGE, - LVM_EDITLABELA, - LVM_GETEDITCONTROL, - LVM_GETCOLUMNA, - LVM_SETCOLUMNA, - LVM_INSERTCOLUMNA, - LVM_DELETECOLUMN, - LVM_GETCOLUMNWIDTH, - LVM_SETCOLUMNWIDTH, // = LVM_FIRST + 30, - LVM_CREATEDRAGIMAGE = LVM_FIRST + 33, - LVM_GETVIEWRECT, - LVM_GETTEXTCOLOR, - LVM_SETTEXTCOLOR, - LVM_GETTEXTBKCOLOR, - LVM_SETTEXTBKCOLOR, - LVM_GETTOPINDEX, - LVM_GETCOUNTPERPAGE, - LVM_GETORIGIN, - LVM_UPDATE, - LVM_SETITEMSTATE, - LVM_GETITEMSTATE, - LVM_GETITEMTEXTA, - LVM_SETITEMTEXTA, - LVM_SETITEMCOUNT, - LVM_SORTITEMS, - LVM_SETITEMPOSITION32, - LVM_GETSELECTEDCOUNT, - LVM_GETITEMSPACING, - LVM_GETISEARCHSTRINGA, // = LVM_FIRST + 52, - LVM_GETITEMW = LVM_FIRST + 75, - LVM_SETITEMW = LVM_FIRST + 76, - LVM_INSERTITEMW = LVM_FIRST + 77, - LVM_FINDITEMW = LVM_FIRST + 83, - LVM_GETSTRINGWIDTHW = LVM_FIRST + 87, - LVM_GETCOLUMNW = LVM_FIRST + 95, - LVM_SETCOLUMNW = LVM_FIRST + 96, - LVM_INSERTCOLUMNW = LVM_FIRST + 97, - LVM_GETITEMTEXTW = LVM_FIRST + 115, - LVM_SETITEMTEXTW, - LVM_GETISEARCHSTRINGW, - LVM_EDITLABELW // = LVM_FIRST + 118, + LVM_GETITEMA = LVM_FIRST + 5, + LVM_SETITEMA, + LVM_INSERTITEMA, + LVM_DELETEITEM, + LVM_DELETEALLITEMS, + LVM_GETCALLBACKMASK, + LVM_SETCALLBACKMASK, + LVM_GETNEXTITEM, + LVM_FINDITEMA, + LVM_GETITEMRECT, + LVM_SETITEMPOSITION, + LVM_GETITEMPOSITION, + LVM_GETSTRINGWIDTHA, + LVM_HITTEST, + LVM_ENSUREVISIBLE, + LVM_SCROLL, + LVM_REDRAWITEMS, + LVM_ARRANGE, + LVM_EDITLABELA, + LVM_GETEDITCONTROL, + LVM_GETCOLUMNA, + LVM_SETCOLUMNA, + LVM_INSERTCOLUMNA, + LVM_DELETECOLUMN, + LVM_GETCOLUMNWIDTH, + LVM_SETCOLUMNWIDTH, // = LVM_FIRST + 30, + LVM_CREATEDRAGIMAGE = LVM_FIRST + 33, + LVM_GETVIEWRECT, + LVM_GETTEXTCOLOR, + LVM_SETTEXTCOLOR, + LVM_GETTEXTBKCOLOR, + LVM_SETTEXTBKCOLOR, + LVM_GETTOPINDEX, + LVM_GETCOUNTPERPAGE, + LVM_GETORIGIN, + LVM_UPDATE, + LVM_SETITEMSTATE, + LVM_GETITEMSTATE, + LVM_GETITEMTEXTA, + LVM_SETITEMTEXTA, + LVM_SETITEMCOUNT, + LVM_SORTITEMS, + LVM_SETITEMPOSITION32, + LVM_GETSELECTEDCOUNT, + LVM_GETITEMSPACING, + LVM_GETISEARCHSTRINGA, // = LVM_FIRST + 52, + LVM_GETITEMW = LVM_FIRST + 75, + LVM_SETITEMW = LVM_FIRST + 76, + LVM_INSERTITEMW = LVM_FIRST + 77, + LVM_FINDITEMW = LVM_FIRST + 83, + LVM_GETSTRINGWIDTHW = LVM_FIRST + 87, + LVM_GETCOLUMNW = LVM_FIRST + 95, + LVM_SETCOLUMNW = LVM_FIRST + 96, + LVM_INSERTCOLUMNW = LVM_FIRST + 97, + LVM_GETITEMTEXTW = LVM_FIRST + 115, + LVM_SETITEMTEXTW, + LVM_GETISEARCHSTRINGW, + LVM_EDITLABELW // = LVM_FIRST + 118, } static if (_WIN32_IE >= 0x300) { - enum { - LVM_GETHEADER = LVM_FIRST + 31, - LVM_SETICONSPACING = LVM_FIRST + 53, - LVM_SETEXTENDEDLISTVIEWSTYLE, - LVM_GETEXTENDEDLISTVIEWSTYLE, - LVM_GETSUBITEMRECT, - LVM_SUBITEMHITTEST, - LVM_SETCOLUMNORDERARRAY, - LVM_GETCOLUMNORDERARRAY, - LVM_SETHOTITEM, - LVM_GETHOTITEM, - LVM_SETHOTCURSOR, - LVM_GETHOTCURSOR, - LVM_APPROXIMATEVIEWRECT // = LVM_FIRST + 64, - } + enum { + LVM_GETHEADER = LVM_FIRST + 31, + LVM_SETICONSPACING = LVM_FIRST + 53, + LVM_SETEXTENDEDLISTVIEWSTYLE, + LVM_GETEXTENDEDLISTVIEWSTYLE, + LVM_GETSUBITEMRECT, + LVM_SUBITEMHITTEST, + LVM_SETCOLUMNORDERARRAY, + LVM_GETCOLUMNORDERARRAY, + LVM_SETHOTITEM, + LVM_GETHOTITEM, + LVM_SETHOTCURSOR, + LVM_GETHOTCURSOR, + LVM_APPROXIMATEVIEWRECT // = LVM_FIRST + 64, + } } enum { - LVFI_PARAM = 1, - LVFI_STRING = 2, - LVFI_PARTIAL = 8, - LVFI_WRAP = 32, - LVFI_NEARESTXY = 64 + LVFI_PARAM = 1, + LVFI_STRING = 2, + LVFI_PARTIAL = 8, + LVFI_WRAP = 32, + LVFI_NEARESTXY = 64 } enum { - LVIF_DI_SETITEM = 0x1000 + LVIF_DI_SETITEM = 0x1000 } enum { - LVIR_BOUNDS, - LVIR_ICON, - LVIR_LABEL, - LVIR_SELECTBOUNDS // = 3 + LVIR_BOUNDS, + LVIR_ICON, + LVIR_LABEL, + LVIR_SELECTBOUNDS // = 3 } enum { - LVHT_NOWHERE = 1, - LVHT_ONITEMICON = 2, - LVHT_ONITEMLABEL = 4, - LVHT_ONITEMSTATEICON = 8, - LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL - | LVHT_ONITEMSTATEICON, - LVHT_ABOVE = 8, - LVHT_BELOW = 16, - LVHT_TORIGHT = 32, - LVHT_TOLEFT = 64 + LVHT_NOWHERE = 1, + LVHT_ONITEMICON = 2, + LVHT_ONITEMLABEL = 4, + LVHT_ONITEMSTATEICON = 8, + LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL + | LVHT_ONITEMSTATEICON, + LVHT_ABOVE = 8, + LVHT_BELOW = 16, + LVHT_TORIGHT = 32, + LVHT_TOLEFT = 64 } enum { - LVA_DEFAULT = 0, - LVA_ALIGNLEFT = 1, - LVA_ALIGNTOP = 2, - LVA_SNAPTOGRID = 5 + LVA_DEFAULT = 0, + LVA_ALIGNLEFT = 1, + LVA_ALIGNTOP = 2, + LVA_SNAPTOGRID = 5 } enum { - LVCF_FMT = 1, - LVCF_WIDTH = 2, - LVCF_TEXT = 4, - LVCF_SUBITEM = 8 + LVCF_FMT = 1, + LVCF_WIDTH = 2, + LVCF_TEXT = 4, + LVCF_SUBITEM = 8 } static if (_WIN32_IE >= 0x300) { - enum { - LVCF_IMAGE = 16, - LVCF_ORDER = 32 - } + enum { + LVCF_IMAGE = 16, + LVCF_ORDER = 32 + } } enum { - LVCFMT_LEFT, - LVCFMT_RIGHT, - LVCFMT_CENTER, - LVCFMT_JUSTIFYMASK // = 3 + LVCFMT_LEFT, + LVCFMT_RIGHT, + LVCFMT_CENTER, + LVCFMT_JUSTIFYMASK // = 3 } static if (_WIN32_IE >= 0x300) { - enum { - LVCFMT_IMAGE = 2048, - LVCFMT_BITMAP_ON_RIGHT = 4096, - LVCFMT_COL_HAS_IMAGES = 32768 - } + enum { + LVCFMT_IMAGE = 2048, + LVCFMT_BITMAP_ON_RIGHT = 4096, + LVCFMT_COL_HAS_IMAGES = 32768 + } } enum { - LVSCW_AUTOSIZE = -1, - LVSCW_AUTOSIZE_USEHEADER = -2 + LVSCW_AUTOSIZE = -1, + LVSCW_AUTOSIZE_USEHEADER = -2 } enum { - LVN_ITEMCHANGING = LVN_FIRST, - LVN_ITEMCHANGED = LVN_FIRST - 1, - LVN_INSERTITEM = LVN_FIRST - 2, - LVN_DELETEITEM = LVN_FIRST - 3, - LVN_DELETEALLITEMS = LVN_FIRST - 4, - LVN_BEGINLABELEDITA = LVN_FIRST - 5, - LVN_ENDLABELEDITA = LVN_FIRST - 6, - LVN_COLUMNCLICK = LVN_FIRST - 8, - LVN_BEGINDRAG = LVN_FIRST - 9, - LVN_BEGINRDRAG = LVN_FIRST - 11, - LVN_GETDISPINFOA = LVN_FIRST - 50, - LVN_SETDISPINFOA = LVN_FIRST - 51, - LVN_KEYDOWN = LVN_FIRST - 55, - LVN_BEGINLABELEDITW = LVN_FIRST - 75, - LVN_ENDLABELEDITW = LVN_FIRST - 76, - LVN_GETDISPINFOW = LVN_FIRST - 77, - LVN_SETDISPINFOW = LVN_FIRST - 78 + LVN_ITEMCHANGING = LVN_FIRST, + LVN_ITEMCHANGED = LVN_FIRST - 1, + LVN_INSERTITEM = LVN_FIRST - 2, + LVN_DELETEITEM = LVN_FIRST - 3, + LVN_DELETEALLITEMS = LVN_FIRST - 4, + LVN_BEGINLABELEDITA = LVN_FIRST - 5, + LVN_ENDLABELEDITA = LVN_FIRST - 6, + LVN_COLUMNCLICK = LVN_FIRST - 8, + LVN_BEGINDRAG = LVN_FIRST - 9, + LVN_BEGINRDRAG = LVN_FIRST - 11, + LVN_GETDISPINFOA = LVN_FIRST - 50, + LVN_SETDISPINFOA = LVN_FIRST - 51, + LVN_KEYDOWN = LVN_FIRST - 55, + LVN_BEGINLABELEDITW = LVN_FIRST - 75, + LVN_ENDLABELEDITW = LVN_FIRST - 76, + LVN_GETDISPINFOW = LVN_FIRST - 77, + LVN_SETDISPINFOW = LVN_FIRST - 78 } static if (_WIN32_IE >= 0x400) { - enum { - LVN_MARQUEEBEGIN = LVN_FIRST - 56, - LVN_GETINFOTIPA = LVN_FIRST - 57, - LVN_GETINFOTIPW = LVN_FIRST - 58, - LVKF_ALT = 1, - LVKF_CONTROL = 2, - LVKF_SHIFT = 4, - LVGIT_UNFOLDED = 1 - } + enum { + LVN_MARQUEEBEGIN = LVN_FIRST - 56, + LVN_GETINFOTIPA = LVN_FIRST - 57, + LVN_GETINFOTIPW = LVN_FIRST - 58, + LVKF_ALT = 1, + LVKF_CONTROL = 2, + LVKF_SHIFT = 4, + LVGIT_UNFOLDED = 1 + } } enum { - TVS_HASBUTTONS = 1, - TVS_HASLINES = 2, - TVS_LINESATROOT = 4, - TVS_EDITLABELS = 8, - TVS_DISABLEDRAGDROP = 16, - TVS_SHOWSELALWAYS = 32 + TVS_HASBUTTONS = 1, + TVS_HASLINES = 2, + TVS_LINESATROOT = 4, + TVS_EDITLABELS = 8, + TVS_DISABLEDRAGDROP = 16, + TVS_SHOWSELALWAYS = 32 } static if (_WIN32_IE >= 0x300) { - enum { - TVS_RTLREADING = 64, - TVS_NOTOOLTIPS = 128, - TVS_CHECKBOXES = 256, - TVS_TRACKSELECT = 512 - } + enum { + TVS_RTLREADING = 64, + TVS_NOTOOLTIPS = 128, + TVS_CHECKBOXES = 256, + TVS_TRACKSELECT = 512 + } } static if (_WIN32_IE >= 0x400) { - enum { - TVS_SINGLEEXPAND = 1024, - TVS_INFOTIP = 2048, - TVS_FULLROWSELECT = 4096, - TVS_NOSCROLL = 8192, - TVS_NONEVENHEIGHT = 16384 - } + enum { + TVS_SINGLEEXPAND = 1024, + TVS_INFOTIP = 2048, + TVS_FULLROWSELECT = 4096, + TVS_NOSCROLL = 8192, + TVS_NONEVENHEIGHT = 16384 + } } static if (_WIN32_IE >= 0x500) { - enum { - TVS_NOHSCROLL = 0x8000 - } + enum { + TVS_NOHSCROLL = 0x8000 + } } enum { - TVIF_TEXT = 1, - TVIF_IMAGE = 2, - TVIF_PARAM = 4, - TVIF_STATE = 8, - TVIF_HANDLE = 16, - TVIF_SELECTEDIMAGE = 32, - TVIF_CHILDREN = 64 + TVIF_TEXT = 1, + TVIF_IMAGE = 2, + TVIF_PARAM = 4, + TVIF_STATE = 8, + TVIF_HANDLE = 16, + TVIF_SELECTEDIMAGE = 32, + TVIF_CHILDREN = 64 } static if (_WIN32_IE >= 0x400) { - enum { - TVIF_INTEGRAL = 0x0080 - } + enum { + TVIF_INTEGRAL = 0x0080 + } } enum { - TVIS_FOCUSED = 1, - TVIS_SELECTED = 2, - TVIS_CUT = 4, - TVIS_DROPHILITED = 8, - TVIS_BOLD = 16, - TVIS_EXPANDED = 32, - TVIS_EXPANDEDONCE = 64, - TVIS_OVERLAYMASK = 0xF00, - TVIS_STATEIMAGEMASK = 0xF000, - TVIS_USERMASK = 0xF000 + TVIS_FOCUSED = 1, + TVIS_SELECTED = 2, + TVIS_CUT = 4, + TVIS_DROPHILITED = 8, + TVIS_BOLD = 16, + TVIS_EXPANDED = 32, + TVIS_EXPANDEDONCE = 64, + TVIS_OVERLAYMASK = 0xF00, + TVIS_STATEIMAGEMASK = 0xF000, + TVIS_USERMASK = 0xF000 } enum { - I_CHILDRENCALLBACK = -1 + I_CHILDRENCALLBACK = -1 } mixin DECLARE_HANDLE!("HTREEITEM"); @@ -1743,89 +1743,89 @@ mixin DECLARE_HANDLE!("HIMAGELIST"); version(Win64) { const HTREEITEM - TVI_ROOT = cast(HTREEITEM) cast(ULONG_PTR)-0x10000, - TVI_FIRST = cast(HTREEITEM) cast(ULONG_PTR)-0xffff, - TVI_LAST = cast(HTREEITEM) cast(ULONG_PTR)-0xfffe, - TVI_SORT = cast(HTREEITEM) cast(ULONG_PTR)-0xfffd; + TVI_ROOT = cast(HTREEITEM) cast(ULONG_PTR)-0x10000, + TVI_FIRST = cast(HTREEITEM) cast(ULONG_PTR)-0xffff, + TVI_LAST = cast(HTREEITEM) cast(ULONG_PTR)-0xfffe, + TVI_SORT = cast(HTREEITEM) cast(ULONG_PTR)-0xfffd; } else { const HTREEITEM - TVI_ROOT = cast(HTREEITEM) 0xFFFF0000, - TVI_FIRST = cast(HTREEITEM) 0xFFFF0001, - TVI_LAST = cast(HTREEITEM) 0xFFFF0002, - TVI_SORT = cast(HTREEITEM) 0xFFFF0003; + TVI_ROOT = cast(HTREEITEM) 0xFFFF0000, + TVI_FIRST = cast(HTREEITEM) 0xFFFF0001, + TVI_LAST = cast(HTREEITEM) 0xFFFF0002, + TVI_SORT = cast(HTREEITEM) 0xFFFF0003; } enum { - TVSIL_NORMAL = 0, - TVSIL_STATE = 2 + TVSIL_NORMAL = 0, + TVSIL_STATE = 2 } enum { - TVM_INSERTITEMA = TV_FIRST, - TVM_DELETEITEM = TV_FIRST + 1, - TVM_EXPAND = TV_FIRST + 2, - TVM_GETITEMRECT = TV_FIRST + 4, - TVM_GETCOUNT, - TVM_GETINDENT, - TVM_SETINDENT, - TVM_GETIMAGELIST, - TVM_SETIMAGELIST, - TVM_GETNEXTITEM, - TVM_SELECTITEM, - TVM_GETITEMA, - TVM_SETITEMA, - TVM_EDITLABELA, - TVM_GETEDITCONTROL, - TVM_GETVISIBLECOUNT, - TVM_HITTEST, - TVM_CREATEDRAGIMAGE, - TVM_SORTCHILDREN, - TVM_ENSUREVISIBLE, - TVM_SORTCHILDRENCB, - TVM_ENDEDITLABELNOW, - TVM_GETISEARCHSTRINGA, // = TV_FIRST + 23 - TVM_INSERTITEMW = TV_FIRST + 50, - TVM_GETITEMW = TV_FIRST + 62, - TVM_SETITEMW = TV_FIRST + 63, - TVM_GETISEARCHSTRINGW = TV_FIRST + 64, - TVM_EDITLABELW = TV_FIRST + 65 + TVM_INSERTITEMA = TV_FIRST, + TVM_DELETEITEM = TV_FIRST + 1, + TVM_EXPAND = TV_FIRST + 2, + TVM_GETITEMRECT = TV_FIRST + 4, + TVM_GETCOUNT, + TVM_GETINDENT, + TVM_SETINDENT, + TVM_GETIMAGELIST, + TVM_SETIMAGELIST, + TVM_GETNEXTITEM, + TVM_SELECTITEM, + TVM_GETITEMA, + TVM_SETITEMA, + TVM_EDITLABELA, + TVM_GETEDITCONTROL, + TVM_GETVISIBLECOUNT, + TVM_HITTEST, + TVM_CREATEDRAGIMAGE, + TVM_SORTCHILDREN, + TVM_ENSUREVISIBLE, + TVM_SORTCHILDRENCB, + TVM_ENDEDITLABELNOW, + TVM_GETISEARCHSTRINGA, // = TV_FIRST + 23 + TVM_INSERTITEMW = TV_FIRST + 50, + TVM_GETITEMW = TV_FIRST + 62, + TVM_SETITEMW = TV_FIRST + 63, + TVM_GETISEARCHSTRINGW = TV_FIRST + 64, + TVM_EDITLABELW = TV_FIRST + 65 } static if (_WIN32_IE >= 0x300) { - enum { - TVM_GETTOOLTIPS = TV_FIRST + 25, - TVM_SETTOOLTIPS = TV_FIRST + 24 - } + enum { + TVM_GETTOOLTIPS = TV_FIRST + 25, + TVM_SETTOOLTIPS = TV_FIRST + 24 + } } static if (_WIN32_IE >= 0x400) { - enum { - TVM_SETINSERTMARK = TV_FIRST + 26, - TVM_SETITEMHEIGHT, - TVM_GETITEMHEIGHT, - TVM_SETBKCOLOR, - TVM_SETTEXTCOLOR, - TVM_GETBKCOLOR, - TVM_GETTEXTCOLOR, - TVM_SETSCROLLTIME, - TVM_GETSCROLLTIME, // = TV_FIRST + 34 - TVM_SETINSERTMARKCOLOR = TV_FIRST + 37, - TVM_GETINSERTMARKCOLOR = TV_FIRST + 38, - TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } + enum { + TVM_SETINSERTMARK = TV_FIRST + 26, + TVM_SETITEMHEIGHT, + TVM_GETITEMHEIGHT, + TVM_SETBKCOLOR, + TVM_SETTEXTCOLOR, + TVM_GETBKCOLOR, + TVM_GETTEXTCOLOR, + TVM_SETSCROLLTIME, + TVM_GETSCROLLTIME, // = TV_FIRST + 34 + TVM_SETINSERTMARKCOLOR = TV_FIRST + 37, + TVM_GETINSERTMARKCOLOR = TV_FIRST + 38, + TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } } static if (_WIN32_IE >= 0x500) { - enum { - TVM_GETITEMSTATE = TV_FIRST + 39, - TVM_SETLINECOLOR = TV_FIRST + 40, - TVM_GETLINECOLOR = TV_FIRST + 41 - } + enum { + TVM_GETITEMSTATE = TV_FIRST + 39, + TVM_SETLINECOLOR = TV_FIRST + 40, + TVM_GETLINECOLOR = TV_FIRST + 41 + } } static if (_WIN32_IE >= 0x501) { - enum { + enum { TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42, TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43, TVM_SETEXTENDEDSTYLE = TV_FIRST + 44, @@ -1835,7 +1835,7 @@ static if (_WIN32_IE >= 0x501) { } static if (_WIN32_IE >= 0x600) { - enum { + enum { TVM_GETSELECTEDCOUNT = TV_FIRST + 70, TVM_SHOWINFOTIP = TV_FIRST + 71, TVM_GETITEMPARTRECT = TV_FIRST + 72, @@ -1843,357 +1843,357 @@ static if (_WIN32_IE >= 0x600) { } enum { - TVE_COLLAPSE = 1, - TVE_EXPAND = 2, - TVE_TOGGLE = 3, - TVE_COLLAPSERESET = 0x8000 + TVE_COLLAPSE = 1, + TVE_EXPAND = 2, + TVE_TOGGLE = 3, + TVE_COLLAPSERESET = 0x8000 } static if (_WIN32_IE >= 0x300) { - enum { - TVE_EXPANDPARTIAL = 0x4000 - } + enum { + TVE_EXPANDPARTIAL = 0x4000 + } } enum { - TVC_UNKNOWN, - TVC_BYMOUSE, - TVC_BYKEYBOARD // = 2 + TVC_UNKNOWN, + TVC_BYMOUSE, + TVC_BYKEYBOARD // = 2 } enum { - TVGN_ROOT, - TVGN_NEXT, - TVGN_PREVIOUS, - TVGN_PARENT, - TVGN_CHILD, - TVGN_FIRSTVISIBLE, - TVGN_NEXTVISIBLE, - TVGN_PREVIOUSVISIBLE, - TVGN_DROPHILITE, - TVGN_CARET // = 9 + TVGN_ROOT, + TVGN_NEXT, + TVGN_PREVIOUS, + TVGN_PARENT, + TVGN_CHILD, + TVGN_FIRSTVISIBLE, + TVGN_NEXTVISIBLE, + TVGN_PREVIOUSVISIBLE, + TVGN_DROPHILITE, + TVGN_CARET // = 9 } static if (_WIN32_IE >= 0x400) { - enum { - TVGN_LASTVISIBLE = 10 - } + enum { + TVGN_LASTVISIBLE = 10 + } } static if (_WIN32_IE >= 0x600) { - enum { - TVGN_NEXTSELECTED = 11 - } + enum { + TVGN_NEXTSELECTED = 11 + } } enum { - TVN_SELCHANGINGA = TVN_FIRST - 1, - TVN_SELCHANGEDA = TVN_FIRST - 2, - TVN_GETDISPINFOA = TVN_FIRST - 3, - TVN_SETDISPINFOA = TVN_FIRST - 4, - TVN_ITEMEXPANDINGA = TVN_FIRST - 5, - TVN_ITEMEXPANDEDA = TVN_FIRST - 6, - TVN_BEGINDRAGA = TVN_FIRST - 7, - TVN_BEGINRDRAGA = TVN_FIRST - 8, - TVN_DELETEITEMA = TVN_FIRST - 9, - TVN_BEGINLABELEDITA = TVN_FIRST - 10, - TVN_ENDLABELEDITA = TVN_FIRST - 11, - TVN_KEYDOWN = TVN_FIRST - 12, - TVN_SELCHANGINGW = TVN_FIRST - 50, - TVN_SELCHANGEDW = TVN_FIRST - 51, - TVN_GETDISPINFOW = TVN_FIRST - 52, - TVN_SETDISPINFOW = TVN_FIRST - 53, - TVN_ITEMEXPANDINGW = TVN_FIRST - 54, - TVN_ITEMEXPANDEDW = TVN_FIRST - 55, - TVN_BEGINDRAGW = TVN_FIRST - 56, - TVN_BEGINRDRAGW = TVN_FIRST - 57, - TVN_DELETEITEMW = TVN_FIRST - 58, - TVN_BEGINLABELEDITW = TVN_FIRST - 59, - TVN_ENDLABELEDITW = TVN_FIRST - 60 + TVN_SELCHANGINGA = TVN_FIRST - 1, + TVN_SELCHANGEDA = TVN_FIRST - 2, + TVN_GETDISPINFOA = TVN_FIRST - 3, + TVN_SETDISPINFOA = TVN_FIRST - 4, + TVN_ITEMEXPANDINGA = TVN_FIRST - 5, + TVN_ITEMEXPANDEDA = TVN_FIRST - 6, + TVN_BEGINDRAGA = TVN_FIRST - 7, + TVN_BEGINRDRAGA = TVN_FIRST - 8, + TVN_DELETEITEMA = TVN_FIRST - 9, + TVN_BEGINLABELEDITA = TVN_FIRST - 10, + TVN_ENDLABELEDITA = TVN_FIRST - 11, + TVN_KEYDOWN = TVN_FIRST - 12, + TVN_SELCHANGINGW = TVN_FIRST - 50, + TVN_SELCHANGEDW = TVN_FIRST - 51, + TVN_GETDISPINFOW = TVN_FIRST - 52, + TVN_SETDISPINFOW = TVN_FIRST - 53, + TVN_ITEMEXPANDINGW = TVN_FIRST - 54, + TVN_ITEMEXPANDEDW = TVN_FIRST - 55, + TVN_BEGINDRAGW = TVN_FIRST - 56, + TVN_BEGINRDRAGW = TVN_FIRST - 57, + TVN_DELETEITEMW = TVN_FIRST - 58, + TVN_BEGINLABELEDITW = TVN_FIRST - 59, + TVN_ENDLABELEDITW = TVN_FIRST - 60 } static if (_WIN32_IE >= 0x400) { - enum { - TVNRET_DEFAULT = 0, - TVNRET_SKIPOLD = 1, - TVNRET_SKIPNEW = 2, - TVN_GETINFOTIPA = TVN_FIRST - 13, - TVN_GETINFOTIPW = TVN_FIRST - 14, - TVN_SINGLEEXPAND = TVN_FIRST - 15 - } + enum { + TVNRET_DEFAULT = 0, + TVNRET_SKIPOLD = 1, + TVNRET_SKIPNEW = 2, + TVN_GETINFOTIPA = TVN_FIRST - 13, + TVN_GETINFOTIPW = TVN_FIRST - 14, + TVN_SINGLEEXPAND = TVN_FIRST - 15 + } } enum { - TVIF_DI_SETITEM = 0x1000 + TVIF_DI_SETITEM = 0x1000 } enum { - TVHT_NOWHERE = 1, - TVHT_ONITEMICON = 2, - TVHT_ONITEMLABEL = 4, - TVHT_ONITEMINDENT = 8, - TVHT_ONITEMBUTTON = 16, - TVHT_ONITEMRIGHT = 32, - TVHT_ONITEMSTATEICON = 64, - TVHT_ABOVE = 256, - TVHT_BELOW = 512, - TVHT_TORIGHT = 1024, - TVHT_TOLEFT = 2048, - TCHT_NOWHERE = 1, - TCHT_ONITEMICON = 2, - TCHT_ONITEMLABEL = 4, - TVHT_ONITEM = TVHT_ONITEMICON | TVHT_ONITEMLABEL - | TVHT_ONITEMSTATEICON, - TCHT_ONITEM = TCHT_ONITEMICON | TCHT_ONITEMLABEL + TVHT_NOWHERE = 1, + TVHT_ONITEMICON = 2, + TVHT_ONITEMLABEL = 4, + TVHT_ONITEMINDENT = 8, + TVHT_ONITEMBUTTON = 16, + TVHT_ONITEMRIGHT = 32, + TVHT_ONITEMSTATEICON = 64, + TVHT_ABOVE = 256, + TVHT_BELOW = 512, + TVHT_TORIGHT = 1024, + TVHT_TOLEFT = 2048, + TCHT_NOWHERE = 1, + TCHT_ONITEMICON = 2, + TCHT_ONITEMLABEL = 4, + TVHT_ONITEM = TVHT_ONITEMICON | TVHT_ONITEMLABEL + | TVHT_ONITEMSTATEICON, + TCHT_ONITEM = TCHT_ONITEMICON | TCHT_ONITEMLABEL } enum { - TCS_TABS = 0, - TCS_RIGHTJUSTIFY = 0, - TCS_SINGLELINE = 0, - TCS_FORCEICONLEFT = 16, - TCS_FORCELABELLEFT = 32, - TCS_BUTTONS = 256, - TCS_MULTILINE = 512, - TCS_FIXEDWIDTH = 1024, - TCS_RAGGEDRIGHT = 2048, - TCS_FOCUSONBUTTONDOWN = 0x1000, - TCS_OWNERDRAWFIXED = 0x2000, - TCS_TOOLTIPS = 0x4000, - TCS_FOCUSNEVER = 0x8000 + TCS_TABS = 0, + TCS_RIGHTJUSTIFY = 0, + TCS_SINGLELINE = 0, + TCS_FORCEICONLEFT = 16, + TCS_FORCELABELLEFT = 32, + TCS_BUTTONS = 256, + TCS_MULTILINE = 512, + TCS_FIXEDWIDTH = 1024, + TCS_RAGGEDRIGHT = 2048, + TCS_FOCUSONBUTTONDOWN = 0x1000, + TCS_OWNERDRAWFIXED = 0x2000, + TCS_TOOLTIPS = 0x4000, + TCS_FOCUSNEVER = 0x8000 } static if (_WIN32_IE >= 0x300) { - enum { - TCS_BOTTOM = 2, - TCS_RIGHT = 2, - TCS_VERTICAL = 128, - TCS_SCROLLOPPOSITE = 0x0001, - TCS_HOTTRACK = 0x0040, - TCS_MULTISELECT = 0x0004 - } + enum { + TCS_BOTTOM = 2, + TCS_RIGHT = 2, + TCS_VERTICAL = 128, + TCS_SCROLLOPPOSITE = 0x0001, + TCS_HOTTRACK = 0x0040, + TCS_MULTISELECT = 0x0004 + } } static if(_WIN32_IE >= 0x400) { - enum { - TCS_FLATBUTTONS = 0x0008, - TCS_EX_FLATSEPARATORS = 0x00000001, - TCS_EX_REGISTERDROP = 0x00000002 - } + enum { + TCS_FLATBUTTONS = 0x0008, + TCS_EX_FLATSEPARATORS = 0x00000001, + TCS_EX_REGISTERDROP = 0x00000002 + } } enum { - TCIF_TEXT = 1, - TCIF_IMAGE = 2, - TCIF_RTLREADING = 4, - TCIF_PARAM = 8 + TCIF_TEXT = 1, + TCIF_IMAGE = 2, + TCIF_RTLREADING = 4, + TCIF_PARAM = 8 } static if (_WIN32_IE >= 0x400) { - enum { - TCIF_STATE = 16 - } + enum { + TCIF_STATE = 16 + } } enum { - TCIS_BUTTONPRESSED = 1 + TCIS_BUTTONPRESSED = 1 } static if (_WIN32_IE >= 0x400) { - enum { - TCIS_HIGHLIGHTED = 2 - } + enum { + TCIS_HIGHLIGHTED = 2 + } } enum { - TCM_FIRST = 0x1300, - TCM_GETIMAGELIST = TCM_FIRST + 2, - TCM_SETIMAGELIST, - TCM_GETITEMCOUNT, - TCM_GETITEMA, - TCM_SETITEMA, - TCM_INSERTITEMA, - TCM_DELETEITEM, - TCM_DELETEALLITEMS, - TCM_GETITEMRECT, - TCM_GETCURSEL, - TCM_SETCURSEL, - TCM_HITTEST, - TCM_SETITEMEXTRA, // = TCM_FIRST + 14 - TCM_ADJUSTRECT = TCM_FIRST + 40, - TCM_SETITEMSIZE, - TCM_REMOVEIMAGE, - TCM_SETPADDING, - TCM_GETROWCOUNT, - TCM_GETTOOLTIPS, - TCM_SETTOOLTIPS, - TCM_GETCURFOCUS, - TCM_SETCURFOCUS, - TCM_SETMINTABWIDTH, - TCM_DESELECTALL, // = TCM_FIRST + 50 - TCM_GETITEMW = TCM_FIRST + 60, - TCM_SETITEMW = TCM_FIRST + 61, - TCM_INSERTITEMW = TCM_FIRST + 62 + TCM_FIRST = 0x1300, + TCM_GETIMAGELIST = TCM_FIRST + 2, + TCM_SETIMAGELIST, + TCM_GETITEMCOUNT, + TCM_GETITEMA, + TCM_SETITEMA, + TCM_INSERTITEMA, + TCM_DELETEITEM, + TCM_DELETEALLITEMS, + TCM_GETITEMRECT, + TCM_GETCURSEL, + TCM_SETCURSEL, + TCM_HITTEST, + TCM_SETITEMEXTRA, // = TCM_FIRST + 14 + TCM_ADJUSTRECT = TCM_FIRST + 40, + TCM_SETITEMSIZE, + TCM_REMOVEIMAGE, + TCM_SETPADDING, + TCM_GETROWCOUNT, + TCM_GETTOOLTIPS, + TCM_SETTOOLTIPS, + TCM_GETCURFOCUS, + TCM_SETCURFOCUS, + TCM_SETMINTABWIDTH, + TCM_DESELECTALL, // = TCM_FIRST + 50 + TCM_GETITEMW = TCM_FIRST + 60, + TCM_SETITEMW = TCM_FIRST + 61, + TCM_INSERTITEMW = TCM_FIRST + 62 } static if (_WIN32_IE >=0x0400) { - enum { - TCM_HIGHLIGHTITEM = TCM_FIRST + 51, - TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52, - TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53, - TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } + enum { + TCM_HIGHLIGHTITEM = TCM_FIRST + 51, + TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52, + TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53, + TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } } enum { - TCN_KEYDOWN = TCN_FIRST, - TCN_SELCHANGE = TCN_FIRST - 1, - TCN_SELCHANGING = TCN_FIRST - 2 + TCN_KEYDOWN = TCN_FIRST, + TCN_SELCHANGE = TCN_FIRST - 1, + TCN_SELCHANGING = TCN_FIRST - 2 } enum { - NM_OUTOFMEMORY = NM_FIRST - 1, - NM_CLICK = NM_FIRST - 2, - NM_DBLCLK = NM_FIRST - 3, - NM_RETURN = NM_FIRST - 4, - NM_RCLICK = NM_FIRST - 5, - NM_RDBLCLK = NM_FIRST - 6, - NM_SETFOCUS = NM_FIRST - 7, - NM_KILLFOCUS = NM_FIRST - 8, - NM_CUSTOMDRAW = NM_FIRST - 12, - NM_HOVER = NM_FIRST - 13, - NM_NCHITTEST = NM_FIRST - 14, - NM_KEYDOWN = NM_FIRST - 15, - NM_RELEASEDCAPTURE = NM_FIRST - 16, - NM_SETCURSOR = NM_FIRST - 17, - NM_CHAR = NM_FIRST - 18, - NM_TOOLTIPSCREATED = NM_FIRST - 19 + NM_OUTOFMEMORY = NM_FIRST - 1, + NM_CLICK = NM_FIRST - 2, + NM_DBLCLK = NM_FIRST - 3, + NM_RETURN = NM_FIRST - 4, + NM_RCLICK = NM_FIRST - 5, + NM_RDBLCLK = NM_FIRST - 6, + NM_SETFOCUS = NM_FIRST - 7, + NM_KILLFOCUS = NM_FIRST - 8, + NM_CUSTOMDRAW = NM_FIRST - 12, + NM_HOVER = NM_FIRST - 13, + NM_NCHITTEST = NM_FIRST - 14, + NM_KEYDOWN = NM_FIRST - 15, + NM_RELEASEDCAPTURE = NM_FIRST - 16, + NM_SETCURSOR = NM_FIRST - 17, + NM_CHAR = NM_FIRST - 18, + NM_TOOLTIPSCREATED = NM_FIRST - 19 } enum { - SBARS_SIZEGRIP = 256 + SBARS_SIZEGRIP = 256 } /*enum { - CCM_FIRST = 0x2000, - CCM_LAST = CCM_FIRST + 0x200, - CCM_SETBKCOLOR = 8193, - CCM_SETCOLORSCHEME = 8194, - CCM_GETCOLORSCHEME = 8195, - CCM_GETDROPTARGET = 8196, - CCM_SETUNICODEFORMAT = 8197, - CCM_GETUNICODEFORMAT = 8198, - CCM_SETVERSION = 0x2007, - CCM_GETVERSION = 0x2008, - CCM_SETNOTIFYWINDOW = 0x2009 + CCM_FIRST = 0x2000, + CCM_LAST = CCM_FIRST + 0x200, + CCM_SETBKCOLOR = 8193, + CCM_SETCOLORSCHEME = 8194, + CCM_GETCOLORSCHEME = 8195, + CCM_GETDROPTARGET = 8196, + CCM_SETUNICODEFORMAT = 8197, + CCM_GETUNICODEFORMAT = 8198, + CCM_SETVERSION = 0x2007, + CCM_GETVERSION = 0x2008, + CCM_SETNOTIFYWINDOW = 0x2009 }*/ static if (_WIN32_WINNT >= 0x501) { - enum { - CCM_SETWINDOWTHEME = 0x200b, - CCM_DPISCALE = 0x200c, + enum { + CCM_SETWINDOWTHEME = 0x200b, + CCM_DPISCALE = 0x200c, RB_GETBANDMARGINS = WM_USER + 40, RB_SETWINDOWTHEME = CCM_SETWINDOWTHEME, TB_SETWINDOWTHEME = CCM_SETWINDOWTHEME, TTM_SETWINDOWTHEME = CCM_SETWINDOWTHEME, - } + } } enum { - ICC_LISTVIEW_CLASSES = 1, - ICC_TREEVIEW_CLASSES = 2, - ICC_BAR_CLASSES = 4, - ICC_TAB_CLASSES = 8, - ICC_UPDOWN_CLASS = 16, - ICC_PROGRESS_CLASS = 32, - ICC_HOTKEY_CLASS = 64, - ICC_ANIMATE_CLASS = 128, - ICC_WIN95_CLASSES = 255, - ICC_DATE_CLASSES = 256, - ICC_USEREX_CLASSES = 512, - ICC_COOL_CLASSES = 1024 + ICC_LISTVIEW_CLASSES = 1, + ICC_TREEVIEW_CLASSES = 2, + ICC_BAR_CLASSES = 4, + ICC_TAB_CLASSES = 8, + ICC_UPDOWN_CLASS = 16, + ICC_PROGRESS_CLASS = 32, + ICC_HOTKEY_CLASS = 64, + ICC_ANIMATE_CLASS = 128, + ICC_WIN95_CLASSES = 255, + ICC_DATE_CLASSES = 256, + ICC_USEREX_CLASSES = 512, + ICC_COOL_CLASSES = 1024 } static if (_WIN32_IE >= 0x400) { - enum { - INFOTIPSIZE = 1024, - ICC_INTERNET_CLASSES = 2048, - ICC_PAGESCROLLER_CLASS = 4096, - ICC_NATIVEFNTCTL_CLASS = 8192 - } + enum { + INFOTIPSIZE = 1024, + ICC_INTERNET_CLASSES = 2048, + ICC_PAGESCROLLER_CLASS = 4096, + ICC_NATIVEFNTCTL_CLASS = 8192 + } } static if (_WIN32_WINNT >= 0x501) { - enum { - ICC_STANDARD_CLASSES = 0x00004000, - ICC_LINK_CLASS = 0x00008000 - } + enum { + ICC_STANDARD_CLASSES = 0x00004000, + ICC_LINK_CLASS = 0x00008000 + } } enum { - GDTR_MIN = 1, - GDTR_MAX = 2 + GDTR_MIN = 1, + GDTR_MAX = 2 } enum { - GMR_VISIBLE, - GMR_DAYSTATE + GMR_VISIBLE, + GMR_DAYSTATE } enum { - GDT_ERROR = -1, - GDT_VALID = 0, - GDT_NONE = 1 + GDT_ERROR = -1, + GDT_VALID = 0, + GDT_NONE = 1 } enum { - DTS_SHORTDATEFORMAT = 0, - DTS_UPDOWN = 1, - DTS_SHOWNONE = 2, - DTS_LONGDATEFORMAT = 4, - DTS_TIMEFORMAT = 9, - DTS_APPCANPARSE = 16, - DTS_RIGHTALIGN = 32 + DTS_SHORTDATEFORMAT = 0, + DTS_UPDOWN = 1, + DTS_SHOWNONE = 2, + DTS_LONGDATEFORMAT = 4, + DTS_TIMEFORMAT = 9, + DTS_APPCANPARSE = 16, + DTS_RIGHTALIGN = 32 } static if (_WIN32_IE >= 0x500) { - enum { - DTS_SHORTDATECENTURYFORMAT = 0x000C - } + enum { + DTS_SHORTDATECENTURYFORMAT = 0x000C + } } enum { - MCS_DAYSTATE = 1, - MCS_MULTISELECT = 2, - MCS_WEEKNUMBERS = 4 + MCS_DAYSTATE = 1, + MCS_MULTISELECT = 2, + MCS_WEEKNUMBERS = 4 } static if (_WIN32_IE >= 0x400) { - enum { - MCS_NOTODAYCIRCLE = 0x0008, - MCS_NOTODAY = 0x0010 - } + enum { + MCS_NOTODAYCIRCLE = 0x0008, + MCS_NOTODAY = 0x0010 + } } else { - enum { - MCS_NOTODAY = 0x0008 - } + enum { + MCS_NOTODAY = 0x0008 + } } enum { DTM_FIRST = 0x10000, - DTM_GETSYSTEMTIME = 0x1001, - DTM_SETSYSTEMTIME = 0x1002, - DTM_GETRANGE = 0x1003, - DTM_SETRANGE = 0x1004, - DTM_SETFORMATA = 0x1005, - DTM_SETMCCOLOR = 0x1006, - DTM_GETMCCOLOR = 0x1007, - DTM_GETMONTHCAL = 0x1008, - DTM_SETMCFONT = 0x1009, - DTM_GETMCFONT = 0x100a, - DTM_SETFORMATW = 0x1050 + DTM_GETSYSTEMTIME = 0x1001, + DTM_SETSYSTEMTIME = 0x1002, + DTM_GETRANGE = 0x1003, + DTM_SETRANGE = 0x1004, + DTM_SETFORMATA = 0x1005, + DTM_SETMCCOLOR = 0x1006, + DTM_GETMCCOLOR = 0x1007, + DTM_GETMONTHCAL = 0x1008, + DTM_SETMCFONT = 0x1009, + DTM_GETMCFONT = 0x100a, + DTM_SETFORMATW = 0x1050 } static if (_WIN32_WINNT >= 0x600) { @@ -2207,44 +2207,44 @@ static if (_WIN32_WINNT >= 0x600) { } enum { - DTN_USERSTRINGA = -758U, - DTN_USERSTRINGW = -745U, - DTN_WMKEYDOWNA = -757U, - DTN_WMKEYDOWNW = -744U, - DTN_FORMATA = -756U, - DTN_FORMATW = -743U, - DTN_FORMATQUERYA = -755U, - DTN_FORMATQUERYW = -742U, - DTN_DROPDOWN = -754U, - DTN_CLOSEUP = -753U, - DTN_DATETIMECHANGE = -759U, + DTN_USERSTRINGA = -758U, + DTN_USERSTRINGW = -745U, + DTN_WMKEYDOWNA = -757U, + DTN_WMKEYDOWNW = -744U, + DTN_FORMATA = -756U, + DTN_FORMATW = -743U, + DTN_FORMATQUERYA = -755U, + DTN_FORMATQUERYW = -742U, + DTN_DROPDOWN = -754U, + DTN_CLOSEUP = -753U, + DTN_DATETIMECHANGE = -759U, } enum { MCM_FIRST = 0x1000, - MCM_GETCURSEL = 0x1001, - MCM_SETCURSEL = 0x1002, - MCM_GETMAXSELCOUNT = 0x1003, - MCM_SETMAXSELCOUNT = 0x1004, - MCM_GETSELRANGE = 0x1005, - MCM_SETSELRANGE = 0x1006, - MCM_GETMONTHRANGE = 0x1007, - MCM_SETDAYSTATE = 0x1008, - MCM_GETMINREQRECT = 0x1009, - MCM_SETCOLOR = 0x100a, - MCM_GETCOLOR = 0x100b, - MCM_SETTODAY = 0x100c, - MCM_GETTODAY = 0x100d, - MCM_HITTEST = 0x100e, - MCM_SETFIRSTDAYOFWEEK = 0x100f, - MCM_GETFIRSTDAYOFWEEK = 0x1010, - MCM_GETRANGE = 0x1011, - MCM_SETRANGE = 0x1012, - MCM_GETMONTHDELTA = 0x1013, - MCM_SETMONTHDELTA = 0x1014, - MCM_GETMAXTODAYWIDTH = 0x1015, - MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, - MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT + MCM_GETCURSEL = 0x1001, + MCM_SETCURSEL = 0x1002, + MCM_GETMAXSELCOUNT = 0x1003, + MCM_SETMAXSELCOUNT = 0x1004, + MCM_GETSELRANGE = 0x1005, + MCM_SETSELRANGE = 0x1006, + MCM_GETMONTHRANGE = 0x1007, + MCM_SETDAYSTATE = 0x1008, + MCM_GETMINREQRECT = 0x1009, + MCM_SETCOLOR = 0x100a, + MCM_GETCOLOR = 0x100b, + MCM_SETTODAY = 0x100c, + MCM_GETTODAY = 0x100d, + MCM_HITTEST = 0x100e, + MCM_SETFIRSTDAYOFWEEK = 0x100f, + MCM_GETFIRSTDAYOFWEEK = 0x1010, + MCM_GETRANGE = 0x1011, + MCM_SETRANGE = 0x1012, + MCM_GETMONTHDELTA = 0x1013, + MCM_SETMONTHDELTA = 0x1014, + MCM_GETMAXTODAYWIDTH = 0x1015, + MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT } static if (_WIN32_WINNT >= 0x600) { @@ -2262,311 +2262,311 @@ static if (_WIN32_WINNT >= 0x600) { } enum { - MCN_SELCHANGE = -749U, - MCN_GETDAYSTATE = -747U, - MCN_SELECT = -746U + MCN_SELCHANGE = -749U, + MCN_GETDAYSTATE = -747U, + MCN_SELECT = -746U } enum { - ODT_HEADER = 100, - ODT_TAB, - ODT_LISTVIEW // = 102 + ODT_HEADER = 100, + ODT_TAB, + ODT_LISTVIEW // = 102 } enum { - SB_SETBKCOLOR = 0x2001 + SB_SETBKCOLOR = 0x2001 } static if (_WIN32_IE >= 0x300) { - enum { - SB_ISSIMPLE = 1038 - } + enum { + SB_ISSIMPLE = 1038 + } - enum { - MCSC_BACKGROUND, - MCSC_TEXT, - MCSC_TITLEBK, - MCSC_TITLETEXT, - MCSC_MONTHBK, - MCSC_TRAILINGTEXT // = 5 - } + enum { + MCSC_BACKGROUND, + MCSC_TEXT, + MCSC_TITLEBK, + MCSC_TITLETEXT, + MCSC_MONTHBK, + MCSC_TRAILINGTEXT // = 5 + } } static if (_WIN32_IE >= 0x400) { - enum { - MCHT_TITLE = 0x10000, - MCHT_CALENDAR = 0x20000, - MCHT_TODAYLINK = 0x30000, - MCHT_NEXT = 0x1000000, - MCHT_PREV = 0x2000000, - MCHT_NOWHERE = 0x00, - MCHT_TITLEBK = MCHT_TITLE, - MCHT_TITLEMONTH = MCHT_TITLE | 0x0001, - MCHT_TITLEYEAR = MCHT_TITLE | 0x0002, - MCHT_TITLEBTNNEXT = MCHT_TITLE | MCHT_NEXT | 0x0003, - MCHT_TITLEBTNPREV = MCHT_TITLE | MCHT_PREV | 0x0003, - MCHT_CALENDARBK = MCHT_CALENDAR, - MCHT_CALENDARDATE = MCHT_CALENDAR | 0x0001, - MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT, - MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV, - MCHT_CALENDARDAY = MCHT_CALENDAR | 0x0002, - MCHT_CALENDARWEEKNUM = MCHT_CALENDAR | 0x0003 - } + enum { + MCHT_TITLE = 0x10000, + MCHT_CALENDAR = 0x20000, + MCHT_TODAYLINK = 0x30000, + MCHT_NEXT = 0x1000000, + MCHT_PREV = 0x2000000, + MCHT_NOWHERE = 0x00, + MCHT_TITLEBK = MCHT_TITLE, + MCHT_TITLEMONTH = MCHT_TITLE | 0x0001, + MCHT_TITLEYEAR = MCHT_TITLE | 0x0002, + MCHT_TITLEBTNNEXT = MCHT_TITLE | MCHT_NEXT | 0x0003, + MCHT_TITLEBTNPREV = MCHT_TITLE | MCHT_PREV | 0x0003, + MCHT_CALENDARBK = MCHT_CALENDAR, + MCHT_CALENDARDATE = MCHT_CALENDAR | 0x0001, + MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT, + MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV, + MCHT_CALENDARDAY = MCHT_CALENDAR | 0x0002, + MCHT_CALENDARWEEKNUM = MCHT_CALENDAR | 0x0003 + } } enum { - RBS_TOOLTIPS = 256, - RBS_VARHEIGHT = 512, - RBS_BANDBORDERS = 1024, - RBS_FIXEDORDER = 2048 + RBS_TOOLTIPS = 256, + RBS_VARHEIGHT = 512, + RBS_BANDBORDERS = 1024, + RBS_FIXEDORDER = 2048 } enum { - RBIM_IMAGELIST = 1 + RBIM_IMAGELIST = 1 } enum { - RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, - RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME + RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, + RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME } enum { - RBBS_BREAK = 0x0001, - RBBS_FIXEDSIZE = 0x0002, - RBBS_CHILDEDGE = 0x0004, - RBBS_HIDDEN = 0x0008, - RBBS_NOVERT = 0x0010, - RBBS_FIXEDBMP = 0x0020, - RBBS_VARIABLEHEIGHT = 0x0040, - RBBS_GRIPPERALWAYS = 0x0080, - RBBS_NOGRIPPER = 0x0100 + RBBS_BREAK = 0x0001, + RBBS_FIXEDSIZE = 0x0002, + RBBS_CHILDEDGE = 0x0004, + RBBS_HIDDEN = 0x0008, + RBBS_NOVERT = 0x0010, + RBBS_FIXEDBMP = 0x0020, + RBBS_VARIABLEHEIGHT = 0x0040, + RBBS_GRIPPERALWAYS = 0x0080, + RBBS_NOGRIPPER = 0x0100 } static if (_WIN32_IE >= 0x500) { - enum { - RBBS_USECHEVRON = 0x0200 - } + enum { + RBBS_USECHEVRON = 0x0200 + } } static if (_WIN32_IE >= 0x501) { - enum { - RBBS_HIDETITLE = 0x0400, - RBBS_TOPALIGN = 0x0800 - } + enum { + RBBS_HIDETITLE = 0x0400, + RBBS_TOPALIGN = 0x0800 + } } enum { - RBBIM_STYLE = 1, - RBBIM_COLORS = 2, - RBBIM_TEXT = 4, - RBBIM_IMAGE = 8, - RBBIM_CHILD = 16, - RBBIM_CHILDSIZE = 32, - RBBIM_SIZE = 64, - RBBIM_BACKGROUND = 128, - RBBIM_ID = 256 + RBBIM_STYLE = 1, + RBBIM_COLORS = 2, + RBBIM_TEXT = 4, + RBBIM_IMAGE = 8, + RBBIM_CHILD = 16, + RBBIM_CHILDSIZE = 32, + RBBIM_SIZE = 64, + RBBIM_BACKGROUND = 128, + RBBIM_ID = 256 } enum { - RB_INSERTBANDA = WM_USER + 1, - RB_DELETEBAND, - RB_GETBARINFO, - RB_SETBARINFO, // = WM_USER + 4 - RB_SETBANDINFOA = WM_USER + 6, - RB_SETPARENT = WM_USER + 7, - RB_INSERTBANDW = WM_USER + 10, - RB_SETBANDINFOW, - RB_GETBANDCOUNT, - RB_GETROWCOUNT, - RB_GETROWHEIGHT // = WM_USER + 14, + RB_INSERTBANDA = WM_USER + 1, + RB_DELETEBAND, + RB_GETBARINFO, + RB_SETBARINFO, // = WM_USER + 4 + RB_SETBANDINFOA = WM_USER + 6, + RB_SETPARENT = WM_USER + 7, + RB_INSERTBANDW = WM_USER + 10, + RB_SETBANDINFOW, + RB_GETBANDCOUNT, + RB_GETROWCOUNT, + RB_GETROWHEIGHT // = WM_USER + 14, } enum { - RBN_HEIGHTCHANGE = RBN_FIRST + RBN_HEIGHTCHANGE = RBN_FIRST } static if (_WIN32_IE >= 0x300) { - enum { - LVN_ODCACHEHINT = LVN_FIRST - 13, - LVN_ODFINDITEMA = LVN_FIRST - 52, - LVN_ODFINDITEMW = LVN_FIRST - 79, - LVN_ITEMACTIVATE = LVN_FIRST - 14, - LVN_ODSTATECHANGED = LVN_FIRST - 15 - } - - version (Unicode) { - enum { - LVN_ODFINDITEM = LVN_ODFINDITEMW - } - } else { - enum { - LVN_ODFINDITEM = LVN_ODFINDITEMA - } - } + enum { + LVN_ODCACHEHINT = LVN_FIRST - 13, + LVN_ODFINDITEMA = LVN_FIRST - 52, + LVN_ODFINDITEMW = LVN_FIRST - 79, + LVN_ITEMACTIVATE = LVN_FIRST - 14, + LVN_ODSTATECHANGED = LVN_FIRST - 15 + } + + version (Unicode) { + enum { + LVN_ODFINDITEM = LVN_ODFINDITEMW + } + } else { + enum { + LVN_ODFINDITEM = LVN_ODFINDITEMA + } + } } static if (_WIN32_IE >= 0x400) { - enum { - SB_SETICON = 1039, - SB_SETTIPTEXTA, - SB_SETTIPTEXTW, - SB_GETTIPTEXTA, - SB_GETTIPTEXTW, - SB_GETICON, // = 1044 - SB_SETUNICODEFORMAT = 0x2005, - SB_GETUNICODEFORMAT = 0x2006 - } - - enum { - PGF_INVISIBLE = 0, - PGF_NORMAL = 1, - PGF_GRAYED = 2, - PGF_DEPRESSED = 4, - PGF_HOT = 8 - } - - enum { - PGB_TOPORLEFT, - PGB_BOTTOMORRIGHT - } - - enum { - PGF_SCROLLUP = 1, - PGF_SCROLLDOWN = 2, - PGF_SCROLLLEFT = 4, - PGF_SCROLLRIGHT = 8 - } - - enum { - PGK_SHIFT = 1, - PGK_CONTROL = 2, - PGK_MENU = 4 - } - - enum { - PGF_CALCWIDTH = 1, - PGF_CALCHEIGHT = 2 - } - - enum { - PGM_FIRST = 0x1400, - PGM_SETCHILD = PGM_FIRST + 1, - PGM_RECALCSIZE, - PGM_FORWARDMOUSE, - PGM_SETBKCOLOR, - PGM_GETBKCOLOR, - PGM_SETBORDER, - PGM_GETBORDER, - PGM_SETPOS, - PGM_GETPOS, - PGM_SETBUTTONSIZE, - PGM_GETBUTTONSIZE, - PGM_GETBUTTONSTATE, // = PGM_FIRST + 12 - PGM_GETDROPTARGET = CCM_GETDROPTARGET - } - - enum { - RBS_REGISTERDROP = 4096, - RBS_AUTOSIZE = 8192, - RBS_VERTICALGRIPPER = 16384, - RBS_DBLCLKTOGGLE = 32768 - } - - enum { - RBBIM_IDEALSIZE = 512, - RBBIM_LPARAM = 1024, - RBBIM_HEADERSIZE = 2048 - } - - enum { - RB_HITTEST = WM_USER + 8, - RB_GETRECT = WM_USER + 9, - RB_IDTOINDEX = WM_USER + 16, - RB_GETTOOLTIPS, - RB_SETTOOLTIPS, - RB_SETBKCOLOR, - RB_GETBKCOLOR, - RB_SETTEXTCOLOR, - RB_GETTEXTCOLOR, - RB_SIZETORECT, - RB_BEGINDRAG, - RB_ENDDRAG, - RB_DRAGMOVE, - RB_GETBARHEIGHT, - RB_GETBANDINFOW, - RB_GETBANDINFOA, - RB_MINIMIZEBAND, - RB_MAXIMIZEBAND, // = WM_USER + 31 - RB_GETDROPTARGET = CCM_GETDROPTARGET, - RB_GETBANDBORDERS = WM_USER + 34, - RB_SHOWBAND = WM_USER + 35, - RB_SETPALETTE = WM_USER + 37, - RB_GETPALETTE = WM_USER + 38, - RB_MOVEBAND = WM_USER + 39, - RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } - - enum { - RBN_GETOBJECT = RBN_FIRST - 1, - RBN_LAYOUTCHANGED = RBN_FIRST - 2, - RBN_AUTOSIZE = RBN_FIRST - 3, - RBN_BEGINDRAG = RBN_FIRST - 4, - RBN_ENDDRAG = RBN_FIRST - 5, - RBN_DELETINGBAND = RBN_FIRST - 6, - RBN_DELETEDBAND = RBN_FIRST - 7, - RBN_CHILDSIZE = RBN_FIRST - 8 - } - - enum { - RBNM_ID = 1, - RBNM_STYLE = 2, - RBNM_LPARAM = 4 - } - - enum { - RBHT_NOWHERE = 1, - RBHT_CAPTION, - RBHT_CLIENT, - RBHT_GRABBER - } - - version (Unicode) { - alias SB_SETTIPTEXTW SB_SETTIPTEXT; - alias SB_GETTIPTEXTW SB_GETTIPTEXT; - alias RB_GETBANDINFOW RB_GETBANDINFO; - } else { - alias SB_SETTIPTEXTA SB_SETTIPTEXT; - alias SB_GETTIPTEXTA SB_GETTIPTEXT; - alias RB_GETBANDINFOA RB_GETBANDINFO; - } + enum { + SB_SETICON = 1039, + SB_SETTIPTEXTA, + SB_SETTIPTEXTW, + SB_GETTIPTEXTA, + SB_GETTIPTEXTW, + SB_GETICON, // = 1044 + SB_SETUNICODEFORMAT = 0x2005, + SB_GETUNICODEFORMAT = 0x2006 + } + + enum { + PGF_INVISIBLE = 0, + PGF_NORMAL = 1, + PGF_GRAYED = 2, + PGF_DEPRESSED = 4, + PGF_HOT = 8 + } + + enum { + PGB_TOPORLEFT, + PGB_BOTTOMORRIGHT + } + + enum { + PGF_SCROLLUP = 1, + PGF_SCROLLDOWN = 2, + PGF_SCROLLLEFT = 4, + PGF_SCROLLRIGHT = 8 + } + + enum { + PGK_SHIFT = 1, + PGK_CONTROL = 2, + PGK_MENU = 4 + } + + enum { + PGF_CALCWIDTH = 1, + PGF_CALCHEIGHT = 2 + } + + enum { + PGM_FIRST = 0x1400, + PGM_SETCHILD = PGM_FIRST + 1, + PGM_RECALCSIZE, + PGM_FORWARDMOUSE, + PGM_SETBKCOLOR, + PGM_GETBKCOLOR, + PGM_SETBORDER, + PGM_GETBORDER, + PGM_SETPOS, + PGM_GETPOS, + PGM_SETBUTTONSIZE, + PGM_GETBUTTONSIZE, + PGM_GETBUTTONSTATE, // = PGM_FIRST + 12 + PGM_GETDROPTARGET = CCM_GETDROPTARGET + } + + enum { + RBS_REGISTERDROP = 4096, + RBS_AUTOSIZE = 8192, + RBS_VERTICALGRIPPER = 16384, + RBS_DBLCLKTOGGLE = 32768 + } + + enum { + RBBIM_IDEALSIZE = 512, + RBBIM_LPARAM = 1024, + RBBIM_HEADERSIZE = 2048 + } + + enum { + RB_HITTEST = WM_USER + 8, + RB_GETRECT = WM_USER + 9, + RB_IDTOINDEX = WM_USER + 16, + RB_GETTOOLTIPS, + RB_SETTOOLTIPS, + RB_SETBKCOLOR, + RB_GETBKCOLOR, + RB_SETTEXTCOLOR, + RB_GETTEXTCOLOR, + RB_SIZETORECT, + RB_BEGINDRAG, + RB_ENDDRAG, + RB_DRAGMOVE, + RB_GETBARHEIGHT, + RB_GETBANDINFOW, + RB_GETBANDINFOA, + RB_MINIMIZEBAND, + RB_MAXIMIZEBAND, // = WM_USER + 31 + RB_GETDROPTARGET = CCM_GETDROPTARGET, + RB_GETBANDBORDERS = WM_USER + 34, + RB_SHOWBAND = WM_USER + 35, + RB_SETPALETTE = WM_USER + 37, + RB_GETPALETTE = WM_USER + 38, + RB_MOVEBAND = WM_USER + 39, + RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } + + enum { + RBN_GETOBJECT = RBN_FIRST - 1, + RBN_LAYOUTCHANGED = RBN_FIRST - 2, + RBN_AUTOSIZE = RBN_FIRST - 3, + RBN_BEGINDRAG = RBN_FIRST - 4, + RBN_ENDDRAG = RBN_FIRST - 5, + RBN_DELETINGBAND = RBN_FIRST - 6, + RBN_DELETEDBAND = RBN_FIRST - 7, + RBN_CHILDSIZE = RBN_FIRST - 8 + } + + enum { + RBNM_ID = 1, + RBNM_STYLE = 2, + RBNM_LPARAM = 4 + } + + enum { + RBHT_NOWHERE = 1, + RBHT_CAPTION, + RBHT_CLIENT, + RBHT_GRABBER + } + + version (Unicode) { + alias SB_SETTIPTEXTW SB_SETTIPTEXT; + alias SB_GETTIPTEXTW SB_GETTIPTEXT; + alias RB_GETBANDINFOW RB_GETBANDINFO; + } else { + alias SB_SETTIPTEXTA SB_SETTIPTEXT; + alias SB_GETTIPTEXTA SB_GETTIPTEXT; + alias RB_GETBANDINFOA RB_GETBANDINFO; + } } else { - enum { - RB_GETBANDINFO = WM_USER + 5 - } + enum { + RB_GETBANDINFO = WM_USER + 5 + } } static if (_WIN32_IE >= 0x500) { - enum { + enum { RB_PUSHCHEVRON = WM_USER + 43, } } static if (_WIN32_IE >= 0x600) { - enum { + enum { RB_SETEXTENDEDSTYLE = WM_USER + 41, RB_GETEXTENDEDSTYLE = WM_USER + 42, } } static if (_WIN32_WINNT >= 0x500) { - enum { + enum { RB_SETBANDWIDTH = WM_USER + 44, } } static if (_WIN32_WINNT >= 0x501) { - enum { + enum { ECM_FIRST = 0x1500, BCM_FIRST = 0x1600, @@ -2629,32 +2629,32 @@ static if(_WIN32_WINNT >= 0x600) { } enum { - CBEM_INSERTITEMA = WM_USER + 1, - CBEM_SETIMAGELIST, - CBEM_GETIMAGELIST, - CBEM_GETITEMA, - CBEM_SETITEMA, - CBEM_GETCOMBOCONTROL, - CBEM_GETEDITCONTROL, - CBEM_SETEXSTYLE, - CBEM_GETEXSTYLE, // = WM_USER + 9) - CBEM_DELETEITEM = CB_DELETESTRING + CBEM_INSERTITEMA = WM_USER + 1, + CBEM_SETIMAGELIST, + CBEM_GETIMAGELIST, + CBEM_GETITEMA, + CBEM_SETITEMA, + CBEM_GETCOMBOCONTROL, + CBEM_GETEDITCONTROL, + CBEM_SETEXSTYLE, + CBEM_GETEXSTYLE, // = WM_USER + 9) + CBEM_DELETEITEM = CB_DELETESTRING } static if (_WIN32_IE >= 0x400) { - enum { - CBEM_SETEXTENDEDSTYLE = WM_USER + 14, - CBEM_GETEXTENDEDSTYLE = WM_USER + 9, - CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } + enum { + CBEM_SETEXTENDEDSTYLE = WM_USER + 14, + CBEM_GETEXTENDEDSTYLE = WM_USER + 9, + CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } } enum { - CBEM_HASEDITCHANGED = WM_USER + 10, - CBEM_INSERTITEMW = WM_USER + 11, - CBEM_SETITEMW = WM_USER + 12, - CBEM_GETITEMW = WM_USER + 13 + CBEM_HASEDITCHANGED = WM_USER + 10, + CBEM_INSERTITEMW = WM_USER + 11, + CBEM_SETITEMW = WM_USER + 12, + CBEM_GETITEMW = WM_USER + 13 } static if (_WIN32_WINNT >= 0x501) @@ -2665,70 +2665,70 @@ static if (_WIN32_WINNT >= 0x501) } enum { - DA_LAST = 0x7fffffff + DA_LAST = 0x7fffffff } enum { - DPA_APPEND = 0x7fffffff, - DPA_ERR = -1 + DPA_APPEND = 0x7fffffff, + DPA_ERR = -1 } enum { - DSA_APPEND = 0x7fffffff, - DSA_ERR = -1 + DSA_APPEND = 0x7fffffff, + DSA_ERR = -1 } enum { - DPAS_SORTED = 1, - DPAS_INSERTBEFORE = 2, - DPAS_INSERTAFTER = 4 + DPAS_SORTED = 1, + DPAS_INSERTBEFORE = 2, + DPAS_INSERTAFTER = 4 } static if (_WIN32_IE >= 0x400) { - enum { - WSB_PROP_CYVSCROLL = 1, - WSB_PROP_CXHSCROLL = 2, - WSB_PROP_CYHSCROLL = 4, - WSB_PROP_CXVSCROLL = 8, - WSB_PROP_CXHTHUMB = 16, - WSB_PROP_CYVTHUMB = 32, - WSB_PROP_VBKGCOLOR = 64, - WSB_PROP_HBKGCOLOR = 128, - WSB_PROP_VSTYLE = 256, - WSB_PROP_HSTYLE = 512, - WSB_PROP_WINSTYLE = 1024, - WSB_PROP_PALETTE = 2048, - WSB_PROP_MASK = 0xfff, - FSB_FLAT_MODE = 2, - FSB_ENCARTA_MODE = 1, - FSB_REGULAR_MODE = 0 - } + enum { + WSB_PROP_CYVSCROLL = 1, + WSB_PROP_CXHSCROLL = 2, + WSB_PROP_CYHSCROLL = 4, + WSB_PROP_CXVSCROLL = 8, + WSB_PROP_CXHTHUMB = 16, + WSB_PROP_CYVTHUMB = 32, + WSB_PROP_VBKGCOLOR = 64, + WSB_PROP_HBKGCOLOR = 128, + WSB_PROP_VSTYLE = 256, + WSB_PROP_HSTYLE = 512, + WSB_PROP_WINSTYLE = 1024, + WSB_PROP_PALETTE = 2048, + WSB_PROP_MASK = 0xfff, + FSB_FLAT_MODE = 2, + FSB_ENCARTA_MODE = 1, + FSB_REGULAR_MODE = 0 + } } static if (_WIN32_WINNT >= 0x501) { - enum { - LIF_ITEMINDEX = 1, - LIF_STATE = 2, - LIF_ITEMID = 4, - LIF_URL = 8 - } - - enum { - LIS_FOCUSED = 1, - LIS_ENABLED = 2, - LIS_VISITED = 4 - } - - enum { - LM_HITTEST = WM_USER + 768, - LM_GETIDEALHEIGHT, - LM_SETITEM, - LM_GETITEM, // = WM_USER + 771 + enum { + LIF_ITEMINDEX = 1, + LIF_STATE = 2, + LIF_ITEMID = 4, + LIF_URL = 8 + } + + enum { + LIS_FOCUSED = 1, + LIS_ENABLED = 2, + LIS_VISITED = 4 + } + + enum { + LM_HITTEST = WM_USER + 768, + LM_GETIDEALHEIGHT, + LM_SETITEM, + LM_GETITEM, // = WM_USER + 771 LM_GETIDEALSIZE = LM_GETIDEALHEIGHT, - } + } - const size_t MAX_LINKID_TEXT = 48; - const size_t L_MAX_URL_LENGTH = 2084; + const size_t MAX_LINKID_TEXT = 48; + const size_t L_MAX_URL_LENGTH = 2084; } @@ -2786,640 +2786,640 @@ static if (_WIN32_WINNT >= 0x600) { } struct COMBOBOXEXITEMA { - UINT mask; - INT_PTR iItem; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int iOverlay; - int iIndent; - LPARAM lParam; + UINT mask; + INT_PTR iItem; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; } alias COMBOBOXEXITEMA* PCOMBOBOXEXITEMA; alias const(COMBOBOXEXITEMA)* PCCOMBOEXITEMA; struct COMBOBOXEXITEMW { - UINT mask; - INT_PTR iItem; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int iOverlay; - int iIndent; - LPARAM lParam; + UINT mask; + INT_PTR iItem; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; } alias COMBOBOXEXITEMW* PCOMBOBOXEXITEMW; alias const(COMBOBOXEXITEMW)* PCCOMBOEXITEMW; static if (_WIN32_IE >= 0x400) { - struct NMCOMBOBOXEXA { - NMHDR hdr; - COMBOBOXEXITEMA ceItem; - } - alias NMCOMBOBOXEXA* PNMCOMBOBOXEXA; - - struct NMCOMBOBOXEXW { - NMHDR hdr; - COMBOBOXEXITEMW ceItem; - } - alias NMCOMBOBOXEXW* PNMCOMBOBOXEXW; - - struct NMCBEDRAGBEGINW { - NMHDR hdr; - int iItemid; - WCHAR[CBEMAXSTRLEN] szText; - } - alias NMCBEDRAGBEGINW* LPNMCBEDRAGBEGINW, PNMCBEDRAGBEGINW; - - struct NMCBEDRAGBEGINA { - NMHDR hdr; - int iItemid; - char[CBEMAXSTRLEN] szText; - } - alias NMCBEDRAGBEGINA* LPNMCBEDRAGBEGINA, PNMCBEDRAGBEGINA; - - struct NMIPADDRESS { - NMHDR hdr; - int iField; - int iValue; - } - alias NMIPADDRESS* LPNMIPADDRESS; - - struct NMLVKEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; - } - alias NMLVKEYDOWN* LPNMLVKEYDOWN; - - struct NMPGCALCSIZE { - NMHDR hdr; - DWORD dwFlag; - int iWidth; - int iHeight; - } - alias NMPGCALCSIZE* LPNMPGCALCSIZE; - - struct NMPGSCROLL { - NMHDR hdr; - BOOL fwKeys; - RECT rcParent; - int iDir; - int iXpos; - int iYpos; - int iScroll; - } - alias NMPGSCROLL* LPNMPGSCROLL; - - struct NMSELCHANGE { - NMHDR nmhdr; - SYSTEMTIME stSelStart; - SYSTEMTIME stSelEnd; - } - alias NMSELCHANGE* LPNMSELCHANGE; - - struct NMTBHOTITEM { - NMHDR hdr; - int idOld; - int idNew; - DWORD dwFlags; - } - alias NMTBHOTITEM* LPNMTBHOTITEM; - - struct NMTBDISPINFOA { - NMHDR hdr; - DWORD dwMask; - int idCommand; - DWORD_PTR lParam; - int iImage; - LPSTR pszText; - int cchText; - } - alias NMTBDISPINFOA* LPNMTBDISPINFOA; - - struct NMTBDISPINFOW { - NMHDR hdr; - DWORD dwMask; - int idCommand; - DWORD_PTR lParam; - int iImage; - LPWSTR pszText; - int cchText; - } - alias NMTBDISPINFOW* LPNMTBDISPINFOW; - - struct NMTBGETINFOTIPA { - NMHDR hdr; - LPSTR pszText; - int cchTextMax; - int iItem; - LPARAM lParam; - } - alias NMTBGETINFOTIPA* LPNMTBGETINFOTIPA; - - struct NMTBGETINFOTIPW { - NMHDR hdr; - LPWSTR pszText; - int cchTextMax; - int iItem; - LPARAM lParam; - } - alias NMTBGETINFOTIPW* LPNMTBGETINFOTIPW; - - struct NMMOUSE { - NMHDR hdr; - DWORD_PTR dwItemSpec; - DWORD_PTR dwItemData; - POINT pt; - LPARAM dwHitInfo; - } - alias NMMOUSE* LPNMMOUSE; + struct NMCOMBOBOXEXA { + NMHDR hdr; + COMBOBOXEXITEMA ceItem; + } + alias NMCOMBOBOXEXA* PNMCOMBOBOXEXA; + + struct NMCOMBOBOXEXW { + NMHDR hdr; + COMBOBOXEXITEMW ceItem; + } + alias NMCOMBOBOXEXW* PNMCOMBOBOXEXW; + + struct NMCBEDRAGBEGINW { + NMHDR hdr; + int iItemid; + WCHAR[CBEMAXSTRLEN] szText; + } + alias NMCBEDRAGBEGINW* LPNMCBEDRAGBEGINW, PNMCBEDRAGBEGINW; + + struct NMCBEDRAGBEGINA { + NMHDR hdr; + int iItemid; + char[CBEMAXSTRLEN] szText; + } + alias NMCBEDRAGBEGINA* LPNMCBEDRAGBEGINA, PNMCBEDRAGBEGINA; + + struct NMIPADDRESS { + NMHDR hdr; + int iField; + int iValue; + } + alias NMIPADDRESS* LPNMIPADDRESS; + + struct NMLVKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; + } + alias NMLVKEYDOWN* LPNMLVKEYDOWN; + + struct NMPGCALCSIZE { + NMHDR hdr; + DWORD dwFlag; + int iWidth; + int iHeight; + } + alias NMPGCALCSIZE* LPNMPGCALCSIZE; + + struct NMPGSCROLL { + NMHDR hdr; + BOOL fwKeys; + RECT rcParent; + int iDir; + int iXpos; + int iYpos; + int iScroll; + } + alias NMPGSCROLL* LPNMPGSCROLL; + + struct NMSELCHANGE { + NMHDR nmhdr; + SYSTEMTIME stSelStart; + SYSTEMTIME stSelEnd; + } + alias NMSELCHANGE* LPNMSELCHANGE; + + struct NMTBHOTITEM { + NMHDR hdr; + int idOld; + int idNew; + DWORD dwFlags; + } + alias NMTBHOTITEM* LPNMTBHOTITEM; + + struct NMTBDISPINFOA { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPSTR pszText; + int cchText; + } + alias NMTBDISPINFOA* LPNMTBDISPINFOA; + + struct NMTBDISPINFOW { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPWSTR pszText; + int cchText; + } + alias NMTBDISPINFOW* LPNMTBDISPINFOW; + + struct NMTBGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; + } + alias NMTBGETINFOTIPA* LPNMTBGETINFOTIPA; + + struct NMTBGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; + } + alias NMTBGETINFOTIPW* LPNMTBGETINFOTIPW; + + struct NMMOUSE { + NMHDR hdr; + DWORD_PTR dwItemSpec; + DWORD_PTR dwItemData; + POINT pt; + LPARAM dwHitInfo; + } + alias NMMOUSE* LPNMMOUSE; } static if (_WIN32_IE >= 0x401) { - struct NMTOOLTIPSCREATED { - NMHDR hdr; - HWND hwndToolTips; - } - alias NMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED; + struct NMTOOLTIPSCREATED { + NMHDR hdr; + HWND hwndToolTips; + } + alias NMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED; } struct NMDATETIMECHANGE { - NMHDR nmhdr; - DWORD dwFlags; - SYSTEMTIME st; + NMHDR nmhdr; + DWORD dwFlags; + SYSTEMTIME st; } alias NMDATETIMECHANGE* LPNMDATETIMECHANGE; struct NMCBEENDEDITW { - NMHDR hdr; - BOOL fChanged; - int iNewSelection; - WCHAR[CBEMAXSTRLEN] szText; - int iWhy; + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + WCHAR[CBEMAXSTRLEN] szText; + int iWhy; } alias NMCBEENDEDITW* LPNMCBEENDEDITW, PNMCBEENDEDITW; struct NMCBEENDEDITA { - NMHDR hdr; - BOOL fChanged; - int iNewSelection; - char[CBEMAXSTRLEN] szText; - int iWhy; + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + char[CBEMAXSTRLEN] szText; + int iWhy; } alias NMCBEENDEDITA* LPNMCBEENDEDITA, PNMCBEENDEDITA; struct COLORMAP { - COLORREF from; - COLORREF to; + COLORREF from; + COLORREF to; } alias COLORMAP* LPCOLORMAP; struct DRAGLISTINFO { - UINT uNotification; - HWND hWnd; - POINT ptCursor; + UINT uNotification; + HWND hWnd; + POINT ptCursor; } alias DRAGLISTINFO* LPDRAGLISTINFO; struct TBBUTTON { - int iBitmap; - int idCommand; - BYTE fsState; - BYTE fsStyle; - version(Win64){ - BYTE[6] bReserved; - } else { - BYTE[2] bReserved; - } - DWORD_PTR dwData; - INT_PTR iString; + int iBitmap; + int idCommand; + BYTE fsState; + BYTE fsStyle; + version(Win64){ + BYTE[6] bReserved; + } else { + BYTE[2] bReserved; + } + DWORD_PTR dwData; + INT_PTR iString; } alias TBBUTTON* PTBBUTTON, LPTBBUTTON; alias const(TBBUTTON)* LPCTBBUTTON; static if (_WIN32_IE >= 0x400) { - struct TBBUTTONINFOA { - UINT cbSize = TBBUTTONINFOA.sizeof; - DWORD dwMask; - int idCommand; - int iImage; - BYTE fsState; - BYTE fsStyle; - WORD cx; - DWORD_PTR lParam; - LPSTR pszText; - int cchText; - } - alias TBBUTTONINFOA* LPTBBUTTONINFOA; - - struct TBBUTTONINFOW { - UINT cbSize = TBBUTTONINFOW.sizeof; - DWORD dwMask; - int idCommand; - int iImage; - BYTE fsState; - BYTE fsStyle; - WORD cx; - DWORD_PTR lParam; - LPWSTR pszText; - int cchText; - } - alias TBBUTTONINFOW* LPTBBUTTONINFOW; - - struct TBINSERTMARK { - int iButton; - DWORD dwFlags; - } - alias TBINSERTMARK* LPTBINSERTMARK; - - struct LVBKIMAGEA { - ULONG ulFlags; - HBITMAP hbm; - LPSTR pszImage; - UINT cchImageMax; - int xOffsetPercent; - int yOffsetPercent; - } - alias LVBKIMAGEA* LPLVBKIMAGEA; - - struct LVBKIMAGEW { - ULONG ulFlags; - HBITMAP hbm; - LPWSTR pszImage; - UINT cchImageMax; - int xOffsetPercent; - int yOffsetPercent; - } - alias LVBKIMAGEW* LPLVBKIMAGEW; + struct TBBUTTONINFOA { + UINT cbSize = TBBUTTONINFOA.sizeof; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPSTR pszText; + int cchText; + } + alias TBBUTTONINFOA* LPTBBUTTONINFOA; + + struct TBBUTTONINFOW { + UINT cbSize = TBBUTTONINFOW.sizeof; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPWSTR pszText; + int cchText; + } + alias TBBUTTONINFOW* LPTBBUTTONINFOW; + + struct TBINSERTMARK { + int iButton; + DWORD dwFlags; + } + alias TBINSERTMARK* LPTBINSERTMARK; + + struct LVBKIMAGEA { + ULONG ulFlags; + HBITMAP hbm; + LPSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; + } + alias LVBKIMAGEA* LPLVBKIMAGEA; + + struct LVBKIMAGEW { + ULONG ulFlags; + HBITMAP hbm; + LPWSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; + } + alias LVBKIMAGEW* LPLVBKIMAGEW; } /*struct TBNOTIFY { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPTSTR pszText; + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPTSTR pszText; } alias TBNOTIFY* LPTBNOTIFY; */ /*struct TBSAVEPARAMS { - HKEY hkr; - LPCTSTR pszSubKey; - LPCTSTR pszValueName; + HKEY hkr; + LPCTSTR pszSubKey; + LPCTSTR pszValueName; }*/ struct IMAGEINFO { - HBITMAP hbmImage; - HBITMAP hbmMask; - int Unused1; - int Unused2; - RECT rcImage; + HBITMAP hbmImage; + HBITMAP hbmMask; + int Unused1; + int Unused2; + RECT rcImage; } alias IMAGEINFO* LPIMAGEINFO; static if (_WIN32_IE >= 0x500) { - struct HDITEMA { - UINT mask; - int cxy; - LPSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - int iImage; - int iOrder; - UINT type; - LPVOID pvFilter; - } - - struct HDITEMW { - UINT mask; - int cxy; - LPWSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - int iImage; - int iOrder; - UINT type; - LPVOID pvFilter; - } + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + UINT type; + LPVOID pvFilter; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + UINT type; + LPVOID pvFilter; + } } else static if (_WIN32_IE >= 0x300) { - struct HDITEMA { - UINT mask; - int cxy; - LPSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - int iImage; - int iOrder; - } - - struct HDITEMW { - UINT mask; - int cxy; - LPWSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - int iImage; - int iOrder; - } + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + } } else { - struct HDITEMA { - UINT mask; - int cxy; - LPSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - } - - struct HDITEMW { - UINT mask; - int cxy; - LPWSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - } + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + } } alias HDITEMA* LPHDITEMA; alias HDITEMW* LPHDITEMW; deprecated { - alias HDITEMA HD_ITEMA; - alias HDITEMW HD_ITEMW; - //alias HDITEM HD_ITEM; fixme + alias HDITEMA HD_ITEMA; + alias HDITEMW HD_ITEMW; + //alias HDITEM HD_ITEM; fixme } struct HD_LAYOUT { - RECT* prc; - WINDOWPOS* pwpos; + RECT* prc; + WINDOWPOS* pwpos; } alias HD_LAYOUT* LPHDLAYOUT; deprecated alias HD_LAYOUT HDLAYOUT; struct HD_HITTESTINFO { - POINT pt; - UINT flags; - int iItem; + POINT pt; + UINT flags; + int iItem; } alias HD_HITTESTINFO* LPHDHITTESTINFO; struct HD_NOTIFYA { - NMHDR hdr; - int iItem; - int iButton; - HDITEMA* pitem; + NMHDR hdr; + int iItem; + int iButton; + HDITEMA* pitem; } struct HD_NOTIFYW { - NMHDR hdr; - int iItem; - int iButton; - HDITEMW* pitem; + NMHDR hdr; + int iItem; + int iButton; + HDITEMW* pitem; } /* FIXME: NMHEADER structure (base for all events of the comctl controls) is the same as HD_NOTIFY depending on the value of _WIN32_IE macro. I'm defining both for now. */ struct NMHEADERA { - NMHDR hdr; - int iItem; - int iButton; - HDITEMA* pitem; + NMHDR hdr; + int iItem; + int iButton; + HDITEMA* pitem; } alias NMHEADERA* LPNMHEADERA; struct NMHEADERW { - NMHDR hdr; - int iItem; - int iButton; - HDITEMW* pitem; + NMHDR hdr; + int iItem; + int iButton; + HDITEMW* pitem; } alias NMHEADERW* LPNMHEADERW; version (Unicode) { - alias NMHEADERW NMHEADER; - alias LPNMHEADERW LPNMHEADER; + alias NMHEADERW NMHEADER; + alias LPNMHEADERW LPNMHEADER; } else { - alias NMHEADERA NMHEADER; - alias LPNMHEADERA LPNMHEADER; + alias NMHEADERA NMHEADER; + alias LPNMHEADERA LPNMHEADER; } // End FIXME struct NMHDDISPINFOA { - NMHDR hdr; - int iItem; - UINT mask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; + NMHDR hdr; + int iItem; + UINT mask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; } alias NMHDDISPINFOA* LPNMHDDISPINFOA; struct NMHDDISPINFOW { - NMHDR hdr; - int iItem; - UINT mask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; + NMHDR hdr; + int iItem; + UINT mask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; } alias NMHDDISPINFOW* LPNMHDDISPINFOW; struct NMCUSTOMDRAW { - NMHDR hdr; - DWORD dwDrawStage; - HDC hdc; - RECT rc; - DWORD dwItemSpec; - UINT uItemState; - LPARAM lItemlParam; + NMHDR hdr; + DWORD dwDrawStage; + HDC hdc; + RECT rc; + DWORD dwItemSpec; + UINT uItemState; + LPARAM lItemlParam; } alias NMCUSTOMDRAW* LPNMCUSTOMDRAW; static if (_WIN32_IE >= 0x400) { - struct NMLVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - int iSubItem; - } + struct NMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + int iSubItem; + } } else { - struct NMLVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - } + struct NMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + } } alias NMLVCUSTOMDRAW* LPNMLVCUSTOMDRAW; static if (_WIN32_IE >= 0x400) { - struct NMLVGETINFOTIPA { - NMHDR hdr; - DWORD dwFlags; - LPSTR pszText; - int cchTextMax; - int iItem; - int iSubItem; - LPARAM lParam; - } - alias NMLVGETINFOTIPA* LPNMLVGETINFOTIPA; - - struct NMLVGETINFOTIPW { - NMHDR hdr; - DWORD dwFlags; - LPWSTR pszText; - int cchTextMax; - int iItem; - int iSubItem; - LPARAM lParam; - } - alias NMLVGETINFOTIPW* LPNMLVGETINFOTIPW; + struct NMLVGETINFOTIPA { + NMHDR hdr; + DWORD dwFlags; + LPSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; + } + alias NMLVGETINFOTIPA* LPNMLVGETINFOTIPA; + + struct NMLVGETINFOTIPW { + NMHDR hdr; + DWORD dwFlags; + LPWSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; + } + alias NMLVGETINFOTIPW* LPNMLVGETINFOTIPW; } static if (_WIN32_IE >= 0x400) { - struct NMTVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - int iLevel; - } + struct NMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + int iLevel; + } } else { - struct NMTVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - } + struct NMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + } } alias NMTVCUSTOMDRAW* LPNMTVCUSTOMDRAW; static if (_WIN32_IE >= 0x400) { - static if (_WIN32_WINNT >= 0x501) { - struct NMTBCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - HBRUSH hbrMonoDither; - HBRUSH hbrLines; - HPEN hpenLines; - COLORREF clrText; - COLORREF clrMark; - COLORREF clrTextHighlight; - COLORREF clrBtnFace; - COLORREF clrBtnHighlight; - COLORREF clrHighlightHotTrack; - RECT rcText; - int nStringBkMode; - int nHLStringBkMode; - int iListGap; - } - } else { - struct NMTBCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - HBRUSH hbrMonoDither; - HBRUSH hbrLines; - HPEN hpenLines; - COLORREF clrText; - COLORREF clrMark; - COLORREF clrTextHighlight; - COLORREF clrBtnFace; - COLORREF clrBtnHighlight; - COLORREF clrHighlightHotTrack; - RECT rcText; - int nStringBkMode; - int nHLStringBkMode; - } - } - alias NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW; - - struct NMITEMACTIVATE { - NMHDR hdr; - int iItem; - int iSubItem; - UINT uNewState; - UINT uOldState; - UINT uChanged; - POINT ptAction; - LPARAM lParam; - UINT uKeyFlags; - } - alias NMITEMACTIVATE* LPNMITEMACTIVATE; + static if (_WIN32_WINNT >= 0x501) { + struct NMTBCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + HBRUSH hbrMonoDither; + HBRUSH hbrLines; + HPEN hpenLines; + COLORREF clrText; + COLORREF clrMark; + COLORREF clrTextHighlight; + COLORREF clrBtnFace; + COLORREF clrBtnHighlight; + COLORREF clrHighlightHotTrack; + RECT rcText; + int nStringBkMode; + int nHLStringBkMode; + int iListGap; + } + } else { + struct NMTBCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + HBRUSH hbrMonoDither; + HBRUSH hbrLines; + HPEN hpenLines; + COLORREF clrText; + COLORREF clrMark; + COLORREF clrTextHighlight; + COLORREF clrBtnFace; + COLORREF clrBtnHighlight; + COLORREF clrHighlightHotTrack; + RECT rcText; + int nStringBkMode; + int nHLStringBkMode; + } + } + alias NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW; + + struct NMITEMACTIVATE { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; + UINT uKeyFlags; + } + alias NMITEMACTIVATE* LPNMITEMACTIVATE; } struct TBADDBITMAP { - HINSTANCE hInst; - UINT_PTR nID; + HINSTANCE hInst; + UINT_PTR nID; } alias TBADDBITMAP* LPTBADDBITMAP; struct TBSAVEPARAMSA { - HKEY hkr; - LPCSTR pszSubKey; - LPCSTR pszValueName; + HKEY hkr; + LPCSTR pszSubKey; + LPCSTR pszValueName; } struct TBSAVEPARAMSW { - HKEY hkr; - LPCWSTR pszSubKey; - LPCWSTR pszValueName; + HKEY hkr; + LPCWSTR pszSubKey; + LPCWSTR pszValueName; } struct TBREPLACEBITMAP { - HINSTANCE hInstOld; - UINT_PTR nIDOld; - HINSTANCE hInstNew; - UINT_PTR nIDNew; - int nButtons; + HINSTANCE hInstOld; + UINT_PTR nIDOld; + HINSTANCE hInstNew; + UINT_PTR nIDNew; + int nButtons; } alias TBREPLACEBITMAP* LPTBREPLACEBITMAP; static if (_WIN32_IE >= 0x500) { - struct NMTOOLBARA { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPSTR pszText; - RECT rcButton; - } - - struct NMTOOLBARW { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPWSTR pszText; - RECT rcButton; - } + struct NMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; + RECT rcButton; + } + + struct NMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; + RECT rcButton; + } } else { - struct NMTOOLBARA { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPSTR pszText; - } - - struct NMTOOLBARW { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPWSTR pszText; - } + struct NMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; + } + + struct NMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; + } } alias NMTOOLBARA* LPNMTOOLBARA; alias NMTOOLBARW* LPNMTOOLBARW; @@ -3431,89 +3431,89 @@ alias NMTOOLBARW TBNOTIFYW; alias LPNMTOOLBARW LPTBNOTIFYW; static if (_WIN32_WINNT >= 0x501) { - struct TOOLINFOA { - UINT cbSize = TOOLINFOA.sizeof; - UINT uFlags; - HWND hwnd; - UINT_PTR uId; - RECT rect; - HINSTANCE hinst; - LPSTR lpszText; - LPARAM lParam; - void* lpReserved; - } - - struct TOOLINFOW { - UINT cbSize = TOOLINFOW.sizeof; - UINT uFlags; - HWND hwnd; - UINT_PTR uId; - RECT rect; - HINSTANCE hinst; - LPWSTR lpszText; - LPARAM lParam; - void* lpReserved; - } - - const size_t - TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, - TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, - TTTOOLINFOA_V2_SIZE = TOOLINFOA.lpReserved.offsetof, - TTTOOLINFOW_V2_SIZE = TOOLINFOW.lpReserved.offsetof, - TTTOOLINFOA_V3_SIZE = TOOLINFOA.sizeof, - TTTOOLINFOW_V3_SIZE = TOOLINFOW.sizeof; + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + LPARAM lParam; + void* lpReserved; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + LPARAM lParam; + void* lpReserved; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, + TTTOOLINFOA_V2_SIZE = TOOLINFOA.lpReserved.offsetof, + TTTOOLINFOW_V2_SIZE = TOOLINFOW.lpReserved.offsetof, + TTTOOLINFOA_V3_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V3_SIZE = TOOLINFOW.sizeof; } else static if (_WIN32_IE >= 0x300) { - struct TOOLINFOA { - UINT cbSize = TOOLINFOA.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPSTR lpszText; - LPARAM lParam; - } - - struct TOOLINFOW { - UINT cbSize = TOOLINFOW.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPWSTR lpszText; - LPARAM lParam; - } - - const size_t - TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, - TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, - TTTOOLINFOA_V2_SIZE = TOOLINFOA.sizeof, - TTTOOLINFOW_V2_SIZE = TOOLINFOW.sizeof; + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + LPARAM lParam; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + LPARAM lParam; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, + TTTOOLINFOA_V2_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V2_SIZE = TOOLINFOW.sizeof; } else { - struct TOOLINFOA { - UINT cbSize = TOOLINFOA.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPSTR lpszText; - } - - struct TOOLINFOW { - UINT cbSize = TOOLINFOW.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPWSTR lpszText; - } - - const size_t - TTTOOLINFOA_V1_SIZE = TOOLINFOA.sizeof, - TTTOOLINFOW_V1_SIZE = TOOLINFOW.sizeof; + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.sizeof; } alias TOOLINFOA TTTOOLINFOA; alias TOOLINFOW TTTOOLINFOW; @@ -3521,53 +3521,53 @@ alias TTTOOLINFOA* LPTTTOOLINFOA, PTOOLINFOA, LPTOOLINFOA; alias TTTOOLINFOW* LPTTTOOLINFOW, PTOOLINFOW, LPTOOLINFOW; struct TTHITTESTINFOA { - HWND hwnd; - POINT pt; - TOOLINFOA ti; + HWND hwnd; + POINT pt; + TOOLINFOA ti; } alias TTHITTESTINFOA* LPTTHITTESTINFOA, LPHITTESTINFOA; struct TTHITTESTINFOW { - HWND hwnd; - POINT pt; - TOOLINFOW ti; + HWND hwnd; + POINT pt; + TOOLINFOW ti; } alias TTHITTESTINFOW* LPTTHITTESTINFOW, LPHITTESTINFOW; static if (_WIN32_IE >= 0x300) { - struct NMTTDISPINFOA { - NMHDR hdr; - LPSTR lpszText; - char[80] szText; - HINSTANCE hinst; - UINT uFlags; - LPARAM lParam; - } - - struct NMTTDISPINFOW { - NMHDR hdr; - LPWSTR lpszText; - WCHAR[80] szText; - HINSTANCE hinst; - UINT uFlags; - LPARAM lParam; - } + struct NMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char[80] szText; + HINSTANCE hinst; + UINT uFlags; + LPARAM lParam; + } + + struct NMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR[80] szText; + HINSTANCE hinst; + UINT uFlags; + LPARAM lParam; + } } else { - struct NMTTDISPINFOA { - NMHDR hdr; - LPSTR lpszText; - char[80] szText; - HINSTANCE hinst; - UINT uFlags; - } - - struct NMTTDISPINFOW { - NMHDR hdr; - LPWSTR lpszText; - WCHAR[80] szText; - HINSTANCE hinst; - UINT uFlags; - } + struct NMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char[80] szText; + HINSTANCE hinst; + UINT uFlags; + } + + struct NMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR[80] szText; + HINSTANCE hinst; + UINT uFlags; + } } alias NMTTDISPINFOA* LPNMTTDISPINFOA; alias NMTTDISPINFOW* LPNMTTDISPINFOW; @@ -3577,105 +3577,105 @@ alias NMTTDISPINFOW TOOLTIPTEXTW; alias LPNMTTDISPINFOW LPTOOLTIPTEXTW; struct UDACCEL { - UINT nSec; - UINT nInc; + UINT nSec; + UINT nInc; } alias UDACCEL* LPUDACCEL; struct NMUPDOWN { - NMHDR hdr; - int iPos; - int iDelta; + NMHDR hdr; + int iPos; + int iDelta; } alias NMUPDOWN* LPNMUPDOWN; deprecated { - alias NMUPDOWN NM_UPDOWN; - alias LPNMUPDOWN LPNM_UPDOWN; + alias NMUPDOWN NM_UPDOWN; + alias LPNMUPDOWN LPNM_UPDOWN; } static if (_WIN32_WINNT >= 0x501) { - struct LVITEMA { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - int iIndent; - int iGroupId; - UINT cColumns; - PUINT puColumns; - } - - struct LVITEMW { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - int iIndent; - int iGroupId; - UINT cColumns; - PUINT puColumns; - } + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + int iGroupId; + UINT cColumns; + PUINT puColumns; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + int iGroupId; + UINT cColumns; + PUINT puColumns; + } } else static if (_WIN32_IE >= 0x300) { - struct LVITEMA { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - int iIndent; - } - - struct LVITEMW { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - int iIndent; - } + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + } } else { - struct LVITEMA { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } - - struct LVITEMW { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } } alias LVITEMA* LPLVITEMA; alias LVITEMW* LPLVITEMW; @@ -3683,19 +3683,19 @@ alias LVITEMA LV_ITEMA; alias LVITEMW LV_ITEMW; struct LVFINDINFOA { - UINT flags; - LPCSTR psz; - LPARAM lParam; - POINT pt; - UINT vkDirection; + UINT flags; + LPCSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; } struct LVFINDINFOW { - UINT flags; - LPCWSTR psz; - LPARAM lParam; - POINT pt; - UINT vkDirection; + UINT flags; + LPCWSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; } alias LVFINDINFOA* LPFINDINFOA; @@ -3704,75 +3704,75 @@ alias LVFINDINFOW* LPFINDINFOW; alias LVFINDINFOW LV_FINDINFOW; struct NMLVFINDITEMA { - NMHDR hdr; - int iStart; - LVFINDINFOA lvfi; + NMHDR hdr; + int iStart; + LVFINDINFOA lvfi; } struct NMLVFINDITEMW { - NMHDR hdr; - int iStart; - LVFINDINFOW lvfi; + NMHDR hdr; + int iStart; + LVFINDINFOW lvfi; } alias NMLVFINDITEMA* PNMLVFINDITEMA, LPNMLVFINDITEMA; alias NMLVFINDITEMW* PNMLVFINDITEMW, LPNMLVFINDITEMW; static if (_WIN32_IE >= 0x300) { - struct LVHITTESTINFO { - POINT pt; - UINT flags; - int iItem; - int iSubItem; - } + struct LVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; + int iSubItem; + } } else { - struct LVHITTESTINFO { - POINT pt; - UINT flags; - int iItem; - } + struct LVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; + } } alias LVHITTESTINFO* LPLVHITTESTINFO; alias LVHITTESTINFO LV_HITTESTINFO; static if (_WIN32_IE >= 0x300) { - struct LVCOLUMNA { - UINT mask; - int fmt; - int cx; - LPSTR pszText; - int cchTextMax; - int iSubItem; - int iImage; - int iOrder; - } - struct LVCOLUMNW { - UINT mask; - int fmt; - int cx; - LPWSTR pszText; - int cchTextMax; - int iSubItem; - int iImage; - int iOrder; - } + struct LVCOLUMNA { + UINT mask; + int fmt; + int cx; + LPSTR pszText; + int cchTextMax; + int iSubItem; + int iImage; + int iOrder; + } + struct LVCOLUMNW { + UINT mask; + int fmt; + int cx; + LPWSTR pszText; + int cchTextMax; + int iSubItem; + int iImage; + int iOrder; + } } else { - struct LVCOLUMNA { - UINT mask; - int fmt; - int cx; - LPSTR pszText; - int cchTextMax; - int iSubItem; - } - struct LVCOLUMNW { - UINT mask; - int fmt; - int cx; - LPWSTR pszText; - int cchTextMax; - int iSubItem; - } + struct LVCOLUMNA { + UINT mask; + int fmt; + int cx; + LPSTR pszText; + int cchTextMax; + int iSubItem; + } + struct LVCOLUMNW { + UINT mask; + int fmt; + int cx; + LPWSTR pszText; + int cchTextMax; + int iSubItem; + } } alias LVCOLUMNA* LPLVCOLUMNA; alias LVCOLUMNW* LPLVCOLUMNW; @@ -3780,103 +3780,103 @@ alias LVCOLUMNA LV_COLUMNA; alias LVCOLUMNW LV_COLUMNW; static if (_WIN32_WINNT >= 0x501) { - /* SG: The definitions in this static if block are from the MSDN docs. - * They are not in MinGW, but nonetheless required for macros that are. - */ - struct LVGROUP { - UINT cbSize = LVGROUP.sizeof; - UINT mask; - LPWSTR pszHeader; - int cchHeader; - LPWSTR pszFooter; - int cchFooter; - int iGroupId; - UINT stateMask; - UINT state; - UINT uAlign; - static if (_WIN32_WINNT >= 0x600) { - LPWSTR pszSubtitle; - UINT cchSubtitle; - LPWSTR pszTask; - UINT cchTask; - LPWSTR pszDescriptionTop; - UINT cchDescriptionTop; - LPWSTR pszDescriptionBottom; - UINT cchDescriptionBottom; - int iTitleImage; - int iExtendedImage; - int iFirstItem; // Read only - UINT cItems; // Read only - LPWSTR pszSubsetTitle; // NULL if group is not subset - UINT cchSubsetTitle; - } - } - alias LVGROUP* PLVGROUP; - - struct LVGROUPMETRICS { - UINT cbSize = LVGROUPMETRICS.sizeof; - UINT mask; - UINT Left; - UINT Top; - UINT Right; - UINT Bottom; - COLORREF crLeft; - COLORREF crTop; - COLORREF crRight; - COLORREF crBottom; - COLORREF crHeader; - COLORREF crFooter; - } - alias LVGROUPMETRICS* PLVGROUPMETRICS; - - struct LVINSERTMARK { - UINT cbSize = LVINSERTMARK.sizeof; - DWORD dwFlags; - int iItem; - DWORD dwReserved; - } - alias LVINSERTMARK* PLVINSERTMARK; - alias LVINSERTMARK* LPLVINSERTMARK; - - struct LVTILEINFO { - UINT cbSize = LVTILEINFO.sizeof; - int iItem; - UINT cColumns; - PUINT puColumns; - static if (_WIN32_WINNT >= 0x600) { - int* piColFmt; - } - } - alias LVTILEINFO* PLVTILEINFO; - - struct LVTILEVIEWINFO { - UINT cbSize = LVTILEVIEWINFO.sizeof; - DWORD dwMask; - DWORD dwFlags; - SIZE sizeTile; - int cLines; - RECT rcLabelMargin; - } - alias LVTILEVIEWINFO* PLVTILEVIEWINFO; - - struct LVINSERTGROUPSORTED { - PFNLVGROUPCOMPARE pfnGroupCompare; - LPVOID* pvData; - LVGROUP lvGroup; - } - alias LVINSERTGROUPSORTED* PLVINSERTGROUPSORTED; - - alias int function(INT, INT, VOID*) PFNLVGROUPCOMPARE; - - struct LVSETINFOTIP { - UINT cbSize = LVSETINFOTIP.sizeof; - DWORD dwFlags; - LPWSTR pszText; - int iItem; - int iSubItem; - HBITMAP hbmp; - } - alias LVSETINFOTIP* PLVSETINFOTIP; + /* SG: The definitions in this static if block are from the MSDN docs. + * They are not in MinGW, but nonetheless required for macros that are. + */ + struct LVGROUP { + UINT cbSize = LVGROUP.sizeof; + UINT mask; + LPWSTR pszHeader; + int cchHeader; + LPWSTR pszFooter; + int cchFooter; + int iGroupId; + UINT stateMask; + UINT state; + UINT uAlign; + static if (_WIN32_WINNT >= 0x600) { + LPWSTR pszSubtitle; + UINT cchSubtitle; + LPWSTR pszTask; + UINT cchTask; + LPWSTR pszDescriptionTop; + UINT cchDescriptionTop; + LPWSTR pszDescriptionBottom; + UINT cchDescriptionBottom; + int iTitleImage; + int iExtendedImage; + int iFirstItem; // Read only + UINT cItems; // Read only + LPWSTR pszSubsetTitle; // NULL if group is not subset + UINT cchSubsetTitle; + } + } + alias LVGROUP* PLVGROUP; + + struct LVGROUPMETRICS { + UINT cbSize = LVGROUPMETRICS.sizeof; + UINT mask; + UINT Left; + UINT Top; + UINT Right; + UINT Bottom; + COLORREF crLeft; + COLORREF crTop; + COLORREF crRight; + COLORREF crBottom; + COLORREF crHeader; + COLORREF crFooter; + } + alias LVGROUPMETRICS* PLVGROUPMETRICS; + + struct LVINSERTMARK { + UINT cbSize = LVINSERTMARK.sizeof; + DWORD dwFlags; + int iItem; + DWORD dwReserved; + } + alias LVINSERTMARK* PLVINSERTMARK; + alias LVINSERTMARK* LPLVINSERTMARK; + + struct LVTILEINFO { + UINT cbSize = LVTILEINFO.sizeof; + int iItem; + UINT cColumns; + PUINT puColumns; + static if (_WIN32_WINNT >= 0x600) { + int* piColFmt; + } + } + alias LVTILEINFO* PLVTILEINFO; + + struct LVTILEVIEWINFO { + UINT cbSize = LVTILEVIEWINFO.sizeof; + DWORD dwMask; + DWORD dwFlags; + SIZE sizeTile; + int cLines; + RECT rcLabelMargin; + } + alias LVTILEVIEWINFO* PLVTILEVIEWINFO; + + struct LVINSERTGROUPSORTED { + PFNLVGROUPCOMPARE pfnGroupCompare; + LPVOID* pvData; + LVGROUP lvGroup; + } + alias LVINSERTGROUPSORTED* PLVINSERTGROUPSORTED; + + alias int function(INT, INT, VOID*) PFNLVGROUPCOMPARE; + + struct LVSETINFOTIP { + UINT cbSize = LVSETINFOTIP.sizeof; + DWORD dwFlags; + LPWSTR pszText; + int iItem; + int iSubItem; + HBITMAP hbmp; + } + alias LVSETINFOTIP* PLVSETINFOTIP; struct BUTTON_IMAGELIST { HIMAGELIST himl; @@ -3923,142 +3923,142 @@ static if (_WIN32_WINNT >= 0x600) { alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE; struct NMLISTVIEW { - NMHDR hdr; - int iItem; - int iSubItem; - UINT uNewState; - UINT uOldState; - UINT uChanged; - POINT ptAction; - LPARAM lParam; + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; } alias NMLISTVIEW* LPNMLISTVIEW; deprecated { - alias NMLISTVIEW NM_LISTVIEW; - alias LPNMLISTVIEW LPNM_LISTVIEW; + alias NMLISTVIEW NM_LISTVIEW; + alias LPNMLISTVIEW LPNM_LISTVIEW; } struct NMLVDISPINFOA { - NMHDR hdr; - LV_ITEMA item; + NMHDR hdr; + LV_ITEMA item; } alias NMLVDISPINFOA* LPNMLVDISPINFOA; alias NMLVDISPINFOA LV_DISPINFOA; struct NMLVDISPINFOW { - NMHDR hdr; - LV_ITEMW item; + NMHDR hdr; + LV_ITEMW item; } alias NMLVDISPINFOW* LPNMLVDISPINFOW; alias NMLVDISPINFOW LV_DISPINFOW; struct LV_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; + NMHDR hdr; + WORD wVKey; + UINT flags; } struct NMLVCACHEHINT { - NMHDR hdr; - int iFrom; - int iTo; + NMHDR hdr; + int iFrom; + int iTo; } alias NMLVCACHEHINT* LPNMLVCACHEHINT, PNM_CACHEHINT, LPNM_CACHEHINT; alias NMLVCACHEHINT NM_CACHEHINT; struct TVITEMA { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; } alias TVITEMA* LPTVITEMA, LPTV_ITEMA; alias TVITEMA TV_ITEMA; struct TVITEMW { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; } alias TVITEMW* LPTVITEMW, LPTV_ITEMW; alias TVITEMW TV_ITEMW; static if (_WIN32_IE >= 0x400) { - struct TVITEMEXA { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; - int iIntegral; - } - alias TVITEMEXA* LPTVITEMEXA; - - struct TVITEMEXW { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; - int iIntegral; - } - alias TVITEMEXW* LPTVITEMEXW; + struct TVITEMEXA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; + } + alias TVITEMEXA* LPTVITEMEXA; + + struct TVITEMEXW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; + } + alias TVITEMEXW* LPTVITEMEXW; } static if (_WIN32_IE >= 0x400) { - struct TVINSERTSTRUCTA { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - union { - TVITEMEXA itemex; - TV_ITEMA item; - } - } - - struct TVINSERTSTRUCTW { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - union { - TVITEMEXW itemex; - TV_ITEMW item; - } - } + struct TVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + union { + TVITEMEXA itemex; + TV_ITEMA item; + } + } + + struct TVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + union { + TVITEMEXW itemex; + TV_ITEMW item; + } + } } else { - struct TVINSERTSTRUCTA { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - TV_ITEMA item; - } - - struct TVINSERTSTRUCTW { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - TV_ITEMW item; - } + struct TVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + TV_ITEMA item; + } + + struct TVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + TV_ITEMW item; + } } alias TVINSERTSTRUCTA* LPTVINSERTSTRUCTA, LPTV_INSERTSTRUCTA; alias TVINSERTSTRUCTA TV_INSERTSTRUCTA; @@ -4066,9 +4066,9 @@ alias TVINSERTSTRUCTW* LPTVINSERTSTRUCTW, LPTV_INSERTSTRUCTW; alias TVINSERTSTRUCTW TV_INSERTSTRUCTW; struct TVHITTESTINFO { - POINT pt; - UINT flags; - HTREEITEM hItem; + POINT pt; + UINT flags; + HTREEITEM hItem; } alias TVHITTESTINFO* LPTVHITTESTINFO, LPTV_HITTESTINFO; alias TVHITTESTINFO TV_HITTESTINFO; @@ -4083,131 +4083,131 @@ static if (_WIN32_WINNT >= 0x600) { alias int function(LPARAM, LPARAM, LPARAM) PFNTVCOMPARE; struct TVSORTCB { - HTREEITEM hParent; - PFNTVCOMPARE lpfnCompare; - LPARAM lParam; + HTREEITEM hParent; + PFNTVCOMPARE lpfnCompare; + LPARAM lParam; } alias TVSORTCB* LPTVSORTCB, LPTV_SORTCB; alias TVSORTCB TV_SORTCB; struct NMTREEVIEWA { - NMHDR hdr; - UINT action; - TV_ITEMA itemOld; - TV_ITEMA itemNew; - POINT ptDrag; + NMHDR hdr; + UINT action; + TV_ITEMA itemOld; + TV_ITEMA itemNew; + POINT ptDrag; } alias NMTREEVIEWA* LPNMTREEVIEWA, LPNM_TREEVIEWA; alias NMTREEVIEWA NM_TREEVIEWA; struct NMTREEVIEWW { - NMHDR hdr; - UINT action; - TV_ITEMW itemOld; - TV_ITEMW itemNew; - POINT ptDrag; + NMHDR hdr; + UINT action; + TV_ITEMW itemOld; + TV_ITEMW itemNew; + POINT ptDrag; } alias NMTREEVIEWW* LPNMTREEVIEWW, LPNM_TREEVIEWW; alias NMTREEVIEWW NM_TREEVIEWW; struct NMTVDISPINFOA { - NMHDR hdr; - TVITEMA item; + NMHDR hdr; + TVITEMA item; } alias NMTVDISPINFOA* LPNMTVDISPINFOA; alias NMTVDISPINFOA TV_DISPINFOA; struct NMTVDISPINFOW { - NMHDR hdr; - TVITEMW item; + NMHDR hdr; + TVITEMW item; } alias NMTVDISPINFOW* LPNMTVDISPINFOW; alias NMTVDISPINFOW TV_DISPINFOW; static if (_WIN32_IE >= 0x400) { - struct NMTVGETINFOTIPA { - NMHDR hdr; - LPSTR pszText; - int cchTextMax; - HTREEITEM hItem; - LPARAM lParam; - } - alias NMTVGETINFOTIPA* LPNMTVGETINFOTIPA; - - struct NMTVGETINFOTIPW { - NMHDR hdr; - LPWSTR pszText; - int cchTextMax; - HTREEITEM hItem; - LPARAM lParam; - } - alias NMTVGETINFOTIPW* LPNMTVGETINFOTIPW; + struct NMTVGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; + } + alias NMTVGETINFOTIPA* LPNMTVGETINFOTIPA; + + struct NMTVGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; + } + alias NMTVGETINFOTIPW* LPNMTVGETINFOTIPW; } struct TV_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; + NMHDR hdr; + WORD wVKey; + UINT flags; } struct TC_ITEMHEADERA { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPSTR pszText; - int cchTextMax; - int iImage; + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; } struct TC_ITEMHEADERW { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPWSTR pszText; - int cchTextMax; - int iImage; + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; } static if (_WIN32_IE >= 0x300) { - struct TCITEMA { - UINT mask; - DWORD dwState; - DWORD dwStateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } - - struct TCITEMW { - UINT mask; - DWORD dwState; - DWORD dwStateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } + struct TCITEMA { + UINT mask; + DWORD dwState; + DWORD dwStateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct TCITEMW { + UINT mask; + DWORD dwState; + DWORD dwStateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } } else { - struct TCITEMA { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } - - struct TCITEMW { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } + struct TCITEMA { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct TCITEMW { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } } alias TCITEMA* LPTCITEMA; alias TCITEMA TC_ITEMA; @@ -4215,44 +4215,44 @@ alias TCITEMW* LPTCITEMW; alias TCITEMW TC_ITEMW; struct TCHITTESTINFO { - POINT pt; - UINT flags; + POINT pt; + UINT flags; } alias TCHITTESTINFO* LPTCHITTESTINFO, LPTC_HITTESTINFO; alias TCHITTESTINFO TC_HITTESTINFO; struct TC_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; + NMHDR hdr; + WORD wVKey; + UINT flags; } static if (_WIN32_IE >= 0x300) { - struct INITCOMMONCONTROLSEX { - DWORD dwSize = INITCOMMONCONTROLSEX.sizeof; - DWORD dwICC; - } - alias INITCOMMONCONTROLSEX* LPINITCOMMONCONTROLSEX; + struct INITCOMMONCONTROLSEX { + DWORD dwSize = INITCOMMONCONTROLSEX.sizeof; + DWORD dwICC; + } + alias INITCOMMONCONTROLSEX* LPINITCOMMONCONTROLSEX; } struct PBRANGE { - int iLow; - int iHigh; + int iLow; + int iHigh; } alias PBRANGE* PPBRANGE; struct COLORSCHEME { - DWORD dwSize = COLORSCHEME.sizeof; - COLORREF clrBtnHighlight; - COLORREF clrBtnShadow; + DWORD dwSize = COLORSCHEME.sizeof; + COLORREF clrBtnHighlight; + COLORREF clrBtnShadow; } alias COLORSCHEME* LPCOLORSCHEME; struct MCHITTESTINFO { - UINT cbSize = MCHITTESTINFO.sizeof; - POINT pt; - UINT uHit; - SYSTEMTIME st; + UINT cbSize = MCHITTESTINFO.sizeof; + POINT pt; + UINT uHit; + SYSTEMTIME st; } alias MCHITTESTINFO* PMCHITTESTINFO; @@ -4260,110 +4260,110 @@ alias DWORD MONTHDAYSTATE; alias MONTHDAYSTATE* LPMONTHDAYSTATE; struct NMDAYSTATE { - NMHDR nmhdr; - SYSTEMTIME stStart; - int cDayState; - LPMONTHDAYSTATE prgDayState; + NMHDR nmhdr; + SYSTEMTIME stStart; + int cDayState; + LPMONTHDAYSTATE prgDayState; } alias NMDAYSTATE* LPNMDAYSTATE; struct REBARINFO { - UINT cbSize = REBARINFO.sizeof; - UINT fMask; - HIMAGELIST himl; + UINT cbSize = REBARINFO.sizeof; + UINT fMask; + HIMAGELIST himl; } alias REBARINFO* LPREBARINFO; static if (_WIN32_IE >= 0x400) { - struct REBARBANDINFOA { - UINT cbSize = REBARBANDINFOA.sizeof; - UINT fMask; - UINT fStyle; - COLORREF clrFore; - COLORREF clrBack; - LPSTR lpText; - UINT cch; - int iImage; - HWND hwndChild; - UINT cxMinChild; - UINT cyMinChild; - UINT cx; - HBITMAP hbmBack; - UINT wID; - UINT cyChild; - UINT cyMaxChild; - UINT cyIntegral; - UINT cxIdeal; - LPARAM lParam; - UINT cxHeader; - } - - struct REBARBANDINFOW { - UINT cbSize = REBARBANDINFOW.sizeof; - UINT fMask; - UINT fStyle; - COLORREF clrFore; - COLORREF clrBack; - LPWSTR lpText; - UINT cch; - int iImage; - HWND hwndChild; - UINT cxMinChild; - UINT cyMinChild; - UINT cx; - HBITMAP hbmBack; - UINT wID; - UINT cyChild; - UINT cyMaxChild; - UINT cyIntegral; - UINT cxIdeal; - LPARAM lParam; - UINT cxHeader; - } - - enum : size_t { - REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.cyChild.offsetof, - REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.cyChild.offsetof - } + struct REBARBANDINFOA { + UINT cbSize = REBARBANDINFOA.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; + } + + struct REBARBANDINFOW { + UINT cbSize = REBARBANDINFOW.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPWSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; + } + + enum : size_t { + REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.cyChild.offsetof, + REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.cyChild.offsetof + } } else { - struct REBARBANDINFOA { - UINT cbSize = REBARBANDINFOA.sizeof; - UINT fMask; - UINT fStyle; - COLORREF clrFore; - COLORREF clrBack; - LPSTR lpText; - UINT cch; - int iImage; - HWND hwndChild; - UINT cxMinChild; - UINT cyMinChild; - UINT cx; - HBITMAP hbmBack; - UINT wID; - } - - struct REBARBANDINFOW { - UINT cbSize = REBARBANDINFOW.sizeof; - UINT fMask; - UINT fStyle; - COLORREF clrFore; - COLORREF clrBack; - LPWSTR lpText; - UINT cch; - int iImage; - HWND hwndChild; - UINT cxMinChild; - UINT cyMinChild; - UINT cx; - HBITMAP hbmBack; - UINT wID; - } - - enum : size_t { - REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.sizeof, - REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.sizeof - } + struct REBARBANDINFOA { + UINT cbSize = REBARBANDINFOA.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + } + + struct REBARBANDINFOW { + UINT cbSize = REBARBANDINFOW.sizeof; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPWSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + } + + enum : size_t { + REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.sizeof, + REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.sizeof + } } alias REBARBANDINFOA* LPREBARBANDINFOA; alias const(REBARBANDINFOA)* LPCREBARBANDINFOA; @@ -4371,522 +4371,522 @@ alias REBARBANDINFOW* LPREBARBANDINFOW; alias const(REBARBANDINFOW)* LPCREBARBANDINFOW; static if (_WIN32_IE >= 0x300) { - struct NMLVODSTATECHANGE { - NMHDR hdr; - int iFrom; - int iTo; - UINT uNewState; - UINT uOldState; - } - alias NMLVODSTATECHANGE* LPNMLVODSTATECHANGE; - - static if (_WIN32_WINNT >= 0x501) { - struct IMAGELISTDRAWPARAMS { - DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; - HIMAGELIST himl; - int i; - HDC hdcDst; - int x; - int y; - int cx; - int cy; - int xBitmap; - int yBitmap; - COLORREF rgbBk; - COLORREF rgbFg; - UINT fStyle; - DWORD dwRop; - DWORD fState; - DWORD Frame; - COLORREF crEffect; - } - } else { - struct IMAGELISTDRAWPARAMS { - DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; - HIMAGELIST himl; - int i; - HDC hdcDst; - int x; - int y; - int cx; - int cy; - int xBitmap; - int yBitmap; - COLORREF rgbBk; - COLORREF rgbFg; - UINT fStyle; - DWORD dwRop; - } - } - alias IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS; + struct NMLVODSTATECHANGE { + NMHDR hdr; + int iFrom; + int iTo; + UINT uNewState; + UINT uOldState; + } + alias NMLVODSTATECHANGE* LPNMLVODSTATECHANGE; + + static if (_WIN32_WINNT >= 0x501) { + struct IMAGELISTDRAWPARAMS { + DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; + HIMAGELIST himl; + int i; + HDC hdcDst; + int x; + int y; + int cx; + int cy; + int xBitmap; + int yBitmap; + COLORREF rgbBk; + COLORREF rgbFg; + UINT fStyle; + DWORD dwRop; + DWORD fState; + DWORD Frame; + COLORREF crEffect; + } + } else { + struct IMAGELISTDRAWPARAMS { + DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; + HIMAGELIST himl; + int i; + HDC hdcDst; + int x; + int y; + int cx; + int cy; + int xBitmap; + int yBitmap; + COLORREF rgbBk; + COLORREF rgbFg; + UINT fStyle; + DWORD dwRop; + } + } + alias IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS; } static if (_WIN32_IE >= 0x400) { - struct NMREBARCHILDSIZE { - NMHDR hdr; - UINT uBand; - UINT wID; - RECT rcChild; - RECT rcBand; - } - alias NMREBARCHILDSIZE* LPNMREBARCHILDSIZE; - - struct NMREBAR { - NMHDR hdr; - DWORD dwMask; - UINT uBand; - UINT fStyle; - UINT wID; - LPARAM lParam; - } - alias NMREBAR* LPNMREBAR; - - struct NMRBAUTOSIZE { - NMHDR hdr; - BOOL fChanged; - RECT rcTarget; - RECT rcActual; - } - alias NMRBAUTOSIZE* LPNMRBAUTOSIZE; - - static if (_WIN32_IE >= 0x500) { - struct NMREBARCHEVRON { - NMHDR hdr; - UINT uBand; - UINT wID; - LPARAM lParam; - RECT rc; - LPARAM lParamNM; - } - alias NMREBARCHEVRON* LPNMREBARCHEVRON; - } - - struct RBHITTESTINFO { - POINT pt; - UINT flags; - int iBand; - } - alias RBHITTESTINFO* LPRBHITTESTINFO; + struct NMREBARCHILDSIZE { + NMHDR hdr; + UINT uBand; + UINT wID; + RECT rcChild; + RECT rcBand; + } + alias NMREBARCHILDSIZE* LPNMREBARCHILDSIZE; + + struct NMREBAR { + NMHDR hdr; + DWORD dwMask; + UINT uBand; + UINT fStyle; + UINT wID; + LPARAM lParam; + } + alias NMREBAR* LPNMREBAR; + + struct NMRBAUTOSIZE { + NMHDR hdr; + BOOL fChanged; + RECT rcTarget; + RECT rcActual; + } + alias NMRBAUTOSIZE* LPNMRBAUTOSIZE; + + static if (_WIN32_IE >= 0x500) { + struct NMREBARCHEVRON { + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + RECT rc; + LPARAM lParamNM; + } + alias NMREBARCHEVRON* LPNMREBARCHEVRON; + } + + struct RBHITTESTINFO { + POINT pt; + UINT flags; + int iBand; + } + alias RBHITTESTINFO* LPRBHITTESTINFO; } mixin DECLARE_HANDLE!("HDSA"); mixin DECLARE_HANDLE!("HDPA"); version (Unicode) { - alias HDITEMW HDITEM; - alias LPHDITEMW LPHDITEM; - alias TOOLINFOW TOOLINFO; - alias TOOLINFOW* PTOOLINFO, LPTOOLINFO; - alias TTHITTESTINFOW TTHITTESTINFO; - alias TTHITTESTINFOW* LPHITTESTINFO, LPTTHITTESTINFO; - alias TOOLTIPTEXTW TOOLTIPTEXT; - alias TOOLTIPTEXTW* LPTOOLTIPTEXT; - alias NMTTDISPINFOW NMTTDISPINFO; - alias NMTTDISPINFOW* LPNMTTDISPINFO; - alias TV_ITEMW TV_ITEM; - alias TV_ITEMW* LPTV_ITEM; - alias TVITEMW TVITEM; - alias TVITEMW* LPTVITEM; - - static if (_WIN32_IE >= 0x400) { - alias TVITEMEXW TVITEMEX; - alias TVITEMEXW* LPTVITEMEX; - } - - alias TV_INSERTSTRUCTW TV_INSERTSTRUCT; - alias TV_INSERTSTRUCTW* LPTV_INSERTSTRUCT; - alias TVINSERTSTRUCTW TVINSERTSTRUCT; - alias TVINSERTSTRUCTW* LPTVINSERTSTRUCT; - alias NM_TREEVIEWW NM_TREEVIEW; - alias NM_TREEVIEWW* LPNM_TREEVIEW; - alias NMTREEVIEWW NMTREEVIEW; - alias NMTREEVIEWW* LPNMTREEVIEW; - alias NMHDDISPINFOW NMHDDISPINFO; - alias NMHDDISPINFOW* LPNMHDDISPINFO; - - alias ACM_OPENW ACM_OPEN; - alias COMBOBOXEXITEMW COMBOBOXEXITEM; - alias PCOMBOBOXEXITEMW PCOMBOBOXEXITEM; - //alias PCCOMBOBOXEXITEMW PCCOMBOBOXEXITEM; fixme - alias CBEM_INSERTITEMW CBEM_INSERTITEM; - alias CBEM_SETITEMW CBEM_SETITEM; - alias CBEM_GETITEMW CBEM_GETITEM; - alias CBEN_ENDEDITW CBEN_ENDEDIT; - alias NMCBEENDEDITW NMCBEENDEDIT; - alias LPNMCBEENDEDITW LPNMCBEENDEDIT; - alias PNMCBEENDEDITW PNMCBEENDEDIT; - - static if (_WIN32_IE >= 0x400) { - alias NMCOMBOBOXEXW NMCOMBOBOXEX; - alias PNMCOMBOBOXEXW PNMCOMBOBOXEX; - alias CBEN_GETDISPINFOW CBEN_GETDISPINFO; - alias CBEN_DRAGBEGINW CBEN_DRAGBEGIN; - alias NMCBEDRAGBEGINW NMCBEDRAGBEGIN; - alias LPNMCBEDRAGBEGINW LPNMCBEDRAGBEGIN; - alias PNMCBEDRAGBEGINW PNMCBEDRAGBEGIN; - } - - alias SB_GETTEXTW SB_GETTEXT; - alias SB_SETTEXTW SB_SETTEXT; - alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; - alias HDM_INSERTITEMW HDM_INSERTITEM; - alias HDM_GETITEMW HDM_GETITEM; - alias HDM_SETITEMW HDM_SETITEM; - alias HDN_ITEMCHANGINGW HDN_ITEMCHANGING; - alias HDN_ITEMCHANGEDW HDN_ITEMCHANGED; - alias HDN_ITEMCLICKW HDN_ITEMCLICK; - alias HDN_ITEMDBLCLICKW HDN_ITEMDBLCLICK; - alias HDN_DIVIDERDBLCLICKW HDN_DIVIDERDBLCLICK; - alias HDN_BEGINTRACKW HDN_BEGINTRACK; - alias HDN_ENDTRACKW HDN_ENDTRACK; - alias HDN_TRACKW HDN_TRACK; - - static if (_WIN32_IE >= 0x300) { - alias HDN_GETDISPINFOW HDN_GETDISPINFO; - } - - alias HD_NOTIFYW HD_NOTIFY; - alias TBSAVEPARAMSW TBSAVEPARAMS; - alias TB_GETBUTTONTEXTW TB_GETBUTTONTEXT; - alias TB_SAVERESTOREW TB_SAVERESTORE; - alias TB_ADDSTRINGW TB_ADDSTRING; - - static if (_WIN32_IE >= 0x400) { - alias TBN_GETBUTTONINFOW TBN_GETBUTTONINFO; // fixme - alias TB_GETBUTTONINFOW TB_GETBUTTONINFO; - alias TB_SETBUTTONINFOW TB_SETBUTTONINFO; - alias TB_INSERTBUTTONW TB_INSERTBUTTON; - alias TB_ADDBUTTONSW TB_ADDBUTTONS; - alias TB_MAPACCELERATORW TB_MAPACCELERATOR; - alias TB_GETSTRINGW TB_GETSTRING; - alias TBBUTTONINFOW TBBUTTONINFO; - alias LPTBBUTTONINFOW LPTBBUTTONINFO; - alias TBN_GETDISPINFOW TBN_GETDISPINFO; - alias NMTBDISPINFOW NMTBDISPINFO; - alias LPNMTBDISPINFOW LPNMTBDISPINFO; - alias NMTBGETINFOTIPW NMTBGETINFOTIP; - alias LPNMTBGETINFOTIPW LPNMTBGETINFOTIP; - } - - alias TBNOTIFYW TBNOTIFY; - alias LPTBNOTIFYW LPTBNOTIFY; - alias NMTOOLBARW NMTOOLBAR; - alias LPNMTOOLBARW LPNMTOOLBAR; - alias TTM_ADDTOOLW TTM_ADDTOOL; - alias TTM_DELTOOLW TTM_DELTOOL; - alias TTM_NEWTOOLRECTW TTM_NEWTOOLRECT; - alias TTM_GETTOOLINFOW TTM_GETTOOLINFO; - alias TTM_SETTOOLINFOW TTM_SETTOOLINFO; - alias TTM_HITTESTW TTM_HITTEST; - alias TTM_GETTEXTW TTM_GETTEXT; - alias TTM_UPDATETIPTEXTW TTM_UPDATETIPTEXT; - alias TTM_ENUMTOOLSW TTM_ENUMTOOLS; - alias TTM_GETCURRENTTOOLW TTM_GETCURRENTTOOL; - alias TTN_NEEDTEXTW TTN_NEEDTEXT; - alias TTN_GETDISPINFOW TTN_GETDISPINFO; - //alias SB_GETTEXTW SB_GETTEXT; - //alias SB_SETTEXTW SB_SETTEXT; - //alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; - alias LV_ITEMW LV_ITEM; - alias LVITEMW LVITEM; - alias LVITEM* LPLVITEM; - alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK; - - static if (_WIN32_IE >= 0x400) { - alias LVBKIMAGEW LVBKIMAGE; - alias LPLVBKIMAGEW LPLVBKIMAGE; - alias LVM_SETBKIMAGEW LVM_SETBKIMAGE; - alias LVM_GETBKIMAGEW LVM_GETBKIMAGE; - } - - alias LVM_GETITEMW LVM_GETITEM; - alias LVM_SETITEMW LVM_SETITEM; - alias LVM_INSERTITEMW LVM_INSERTITEM; - alias LV_FINDINFOW LV_FINDINFO; - alias LVFINDINFOW LVFINDINFO; - alias LPFINDINFOW LPFINDINFO; - alias NMLVFINDITEMW NMLVFINDITEM; - alias PNMLVFINDITEMW PNMLVFINDITEM; - alias LPNMLVFINDITEMW LPNMLVFINDITEM; - alias LVM_FINDITEMW LVM_FINDITEM; - alias LVM_GETSTRINGWIDTHW LVM_GETSTRINGWIDTH; - alias LVM_EDITLABELW LVM_EDITLABEL; - alias LV_COLUMNW LV_COLUMN; - alias LVCOLUMNW LVCOLUMN; - alias LVCOLUMNW* LPLVCOLUMN; - alias LVM_GETCOLUMNW LVM_GETCOLUMN; - alias LVM_SETCOLUMNW LVM_SETCOLUMN; - alias LVM_INSERTCOLUMNW LVM_INSERTCOLUMN; - alias LVM_GETITEMTEXTW LVM_GETITEMTEXT; - alias LVM_SETITEMTEXTW LVM_SETITEMTEXT; - alias LVM_GETISEARCHSTRINGW LVM_GETISEARCHSTRING; - alias LVN_BEGINLABELEDITW LVN_BEGINLABELEDIT; - alias LVN_ENDLABELEDITW LVN_ENDLABELEDIT; - alias LVN_GETDISPINFOW LVN_GETDISPINFO; - alias LVN_SETDISPINFOW LVN_SETDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias LVN_GETINFOTIPW LVN_GETINFOTIP; - alias NMLVGETINFOTIPW NMLVGETINFOTIP; - alias LPNMLVGETINFOTIPW LPNMLVGETINFOTIP; - } - - alias LV_DISPINFOW LV_DISPINFO; - alias NMLVDISPINFOW NMLVDISPINFO; - alias LPNMLVDISPINFOW LPNMLVDISPINFO; - alias TVM_INSERTITEMW TVM_INSERTITEM; - alias TVM_GETITEMW TVM_GETITEM; - alias TVM_SETITEMW TVM_SETITEM; - alias TVM_EDITLABELW TVM_EDITLABEL; - alias TVM_GETISEARCHSTRINGW TVM_GETISEARCHSTRING; - alias NMTVDISPINFOW TV_DISPINFO; - alias NMTVDISPINFOW NMTVDISPINFO; - alias LPNMTVDISPINFOW LPNMTVDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias NMTVGETINFOTIPW NMTVGETINFOTIP; - alias LPNMTVGETINFOTIPW LPNMTVGETINFOTIP; - alias TVN_GETINFOTIPW TVN_GETINFOTIP; - } - - alias TVN_SELCHANGINGW TVN_SELCHANGING; - alias TVN_SELCHANGEDW TVN_SELCHANGED; - alias TVN_GETDISPINFOW TVN_GETDISPINFO; - alias TVN_SETDISPINFOW TVN_SETDISPINFO; - alias TVN_ITEMEXPANDINGW TVN_ITEMEXPANDING; - alias TVN_ITEMEXPANDEDW TVN_ITEMEXPANDED; - alias TVN_BEGINDRAGW TVN_BEGINDRAG; - alias TVN_BEGINRDRAGW TVN_BEGINRDRAG; - alias TVN_DELETEITEMW TVN_DELETEITEM; - alias TVN_BEGINLABELEDITW TVN_BEGINLABELEDIT; - alias TVN_ENDLABELEDITW TVN_ENDLABELEDIT; - alias TC_ITEMHEADERW TC_ITEMHEADER; - alias TC_ITEMW TC_ITEM; - alias TCITEMW TCITEM; - alias LPTCITEMW LPTCITEM; - alias TCM_GETITEMW TCM_GETITEM; - alias TCM_SETITEMW TCM_SETITEM; - alias TCM_INSERTITEMW TCM_INSERTITEM; - alias CreateStatusWindowW CreateStatusWindow; - alias DrawStatusTextW DrawStatusText; - alias ImageList_LoadImageW ImageList_LoadImage; - alias DTM_SETFORMATW DTM_SETFORMAT; - alias DTN_USERSTRINGW DTN_USERSTRING; - alias DTN_WMKEYDOWNW DTN_WMKEYDOWN; - alias DTN_FORMATW DTN_FORMAT; - alias DTN_FORMATQUERYW DTN_FORMATQUERY; - alias REBARBANDINFOW REBARBANDINFO; - alias REBARBANDINFO* LPREBARBANDINFO; - alias LPCREBARBANDINFOW LPCREBARBANDINFO; - alias REBARBANDINFOW_V3_SIZE REBARBANDINFO_V3_SIZE; - alias RB_INSERTBANDW RB_INSERTBAND; - alias RB_SETBANDINFOW RB_SETBANDINFO; + alias HDITEMW HDITEM; + alias LPHDITEMW LPHDITEM; + alias TOOLINFOW TOOLINFO; + alias TOOLINFOW* PTOOLINFO, LPTOOLINFO; + alias TTHITTESTINFOW TTHITTESTINFO; + alias TTHITTESTINFOW* LPHITTESTINFO, LPTTHITTESTINFO; + alias TOOLTIPTEXTW TOOLTIPTEXT; + alias TOOLTIPTEXTW* LPTOOLTIPTEXT; + alias NMTTDISPINFOW NMTTDISPINFO; + alias NMTTDISPINFOW* LPNMTTDISPINFO; + alias TV_ITEMW TV_ITEM; + alias TV_ITEMW* LPTV_ITEM; + alias TVITEMW TVITEM; + alias TVITEMW* LPTVITEM; + + static if (_WIN32_IE >= 0x400) { + alias TVITEMEXW TVITEMEX; + alias TVITEMEXW* LPTVITEMEX; + } + + alias TV_INSERTSTRUCTW TV_INSERTSTRUCT; + alias TV_INSERTSTRUCTW* LPTV_INSERTSTRUCT; + alias TVINSERTSTRUCTW TVINSERTSTRUCT; + alias TVINSERTSTRUCTW* LPTVINSERTSTRUCT; + alias NM_TREEVIEWW NM_TREEVIEW; + alias NM_TREEVIEWW* LPNM_TREEVIEW; + alias NMTREEVIEWW NMTREEVIEW; + alias NMTREEVIEWW* LPNMTREEVIEW; + alias NMHDDISPINFOW NMHDDISPINFO; + alias NMHDDISPINFOW* LPNMHDDISPINFO; + + alias ACM_OPENW ACM_OPEN; + alias COMBOBOXEXITEMW COMBOBOXEXITEM; + alias PCOMBOBOXEXITEMW PCOMBOBOXEXITEM; + //alias PCCOMBOBOXEXITEMW PCCOMBOBOXEXITEM; fixme + alias CBEM_INSERTITEMW CBEM_INSERTITEM; + alias CBEM_SETITEMW CBEM_SETITEM; + alias CBEM_GETITEMW CBEM_GETITEM; + alias CBEN_ENDEDITW CBEN_ENDEDIT; + alias NMCBEENDEDITW NMCBEENDEDIT; + alias LPNMCBEENDEDITW LPNMCBEENDEDIT; + alias PNMCBEENDEDITW PNMCBEENDEDIT; + + static if (_WIN32_IE >= 0x400) { + alias NMCOMBOBOXEXW NMCOMBOBOXEX; + alias PNMCOMBOBOXEXW PNMCOMBOBOXEX; + alias CBEN_GETDISPINFOW CBEN_GETDISPINFO; + alias CBEN_DRAGBEGINW CBEN_DRAGBEGIN; + alias NMCBEDRAGBEGINW NMCBEDRAGBEGIN; + alias LPNMCBEDRAGBEGINW LPNMCBEDRAGBEGIN; + alias PNMCBEDRAGBEGINW PNMCBEDRAGBEGIN; + } + + alias SB_GETTEXTW SB_GETTEXT; + alias SB_SETTEXTW SB_SETTEXT; + alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; + alias HDM_INSERTITEMW HDM_INSERTITEM; + alias HDM_GETITEMW HDM_GETITEM; + alias HDM_SETITEMW HDM_SETITEM; + alias HDN_ITEMCHANGINGW HDN_ITEMCHANGING; + alias HDN_ITEMCHANGEDW HDN_ITEMCHANGED; + alias HDN_ITEMCLICKW HDN_ITEMCLICK; + alias HDN_ITEMDBLCLICKW HDN_ITEMDBLCLICK; + alias HDN_DIVIDERDBLCLICKW HDN_DIVIDERDBLCLICK; + alias HDN_BEGINTRACKW HDN_BEGINTRACK; + alias HDN_ENDTRACKW HDN_ENDTRACK; + alias HDN_TRACKW HDN_TRACK; + + static if (_WIN32_IE >= 0x300) { + alias HDN_GETDISPINFOW HDN_GETDISPINFO; + } + + alias HD_NOTIFYW HD_NOTIFY; + alias TBSAVEPARAMSW TBSAVEPARAMS; + alias TB_GETBUTTONTEXTW TB_GETBUTTONTEXT; + alias TB_SAVERESTOREW TB_SAVERESTORE; + alias TB_ADDSTRINGW TB_ADDSTRING; + + static if (_WIN32_IE >= 0x400) { + alias TBN_GETBUTTONINFOW TBN_GETBUTTONINFO; // fixme + alias TB_GETBUTTONINFOW TB_GETBUTTONINFO; + alias TB_SETBUTTONINFOW TB_SETBUTTONINFO; + alias TB_INSERTBUTTONW TB_INSERTBUTTON; + alias TB_ADDBUTTONSW TB_ADDBUTTONS; + alias TB_MAPACCELERATORW TB_MAPACCELERATOR; + alias TB_GETSTRINGW TB_GETSTRING; + alias TBBUTTONINFOW TBBUTTONINFO; + alias LPTBBUTTONINFOW LPTBBUTTONINFO; + alias TBN_GETDISPINFOW TBN_GETDISPINFO; + alias NMTBDISPINFOW NMTBDISPINFO; + alias LPNMTBDISPINFOW LPNMTBDISPINFO; + alias NMTBGETINFOTIPW NMTBGETINFOTIP; + alias LPNMTBGETINFOTIPW LPNMTBGETINFOTIP; + } + + alias TBNOTIFYW TBNOTIFY; + alias LPTBNOTIFYW LPTBNOTIFY; + alias NMTOOLBARW NMTOOLBAR; + alias LPNMTOOLBARW LPNMTOOLBAR; + alias TTM_ADDTOOLW TTM_ADDTOOL; + alias TTM_DELTOOLW TTM_DELTOOL; + alias TTM_NEWTOOLRECTW TTM_NEWTOOLRECT; + alias TTM_GETTOOLINFOW TTM_GETTOOLINFO; + alias TTM_SETTOOLINFOW TTM_SETTOOLINFO; + alias TTM_HITTESTW TTM_HITTEST; + alias TTM_GETTEXTW TTM_GETTEXT; + alias TTM_UPDATETIPTEXTW TTM_UPDATETIPTEXT; + alias TTM_ENUMTOOLSW TTM_ENUMTOOLS; + alias TTM_GETCURRENTTOOLW TTM_GETCURRENTTOOL; + alias TTN_NEEDTEXTW TTN_NEEDTEXT; + alias TTN_GETDISPINFOW TTN_GETDISPINFO; + //alias SB_GETTEXTW SB_GETTEXT; + //alias SB_SETTEXTW SB_SETTEXT; + //alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; + alias LV_ITEMW LV_ITEM; + alias LVITEMW LVITEM; + alias LVITEM* LPLVITEM; + alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK; + + static if (_WIN32_IE >= 0x400) { + alias LVBKIMAGEW LVBKIMAGE; + alias LPLVBKIMAGEW LPLVBKIMAGE; + alias LVM_SETBKIMAGEW LVM_SETBKIMAGE; + alias LVM_GETBKIMAGEW LVM_GETBKIMAGE; + } + + alias LVM_GETITEMW LVM_GETITEM; + alias LVM_SETITEMW LVM_SETITEM; + alias LVM_INSERTITEMW LVM_INSERTITEM; + alias LV_FINDINFOW LV_FINDINFO; + alias LVFINDINFOW LVFINDINFO; + alias LPFINDINFOW LPFINDINFO; + alias NMLVFINDITEMW NMLVFINDITEM; + alias PNMLVFINDITEMW PNMLVFINDITEM; + alias LPNMLVFINDITEMW LPNMLVFINDITEM; + alias LVM_FINDITEMW LVM_FINDITEM; + alias LVM_GETSTRINGWIDTHW LVM_GETSTRINGWIDTH; + alias LVM_EDITLABELW LVM_EDITLABEL; + alias LV_COLUMNW LV_COLUMN; + alias LVCOLUMNW LVCOLUMN; + alias LVCOLUMNW* LPLVCOLUMN; + alias LVM_GETCOLUMNW LVM_GETCOLUMN; + alias LVM_SETCOLUMNW LVM_SETCOLUMN; + alias LVM_INSERTCOLUMNW LVM_INSERTCOLUMN; + alias LVM_GETITEMTEXTW LVM_GETITEMTEXT; + alias LVM_SETITEMTEXTW LVM_SETITEMTEXT; + alias LVM_GETISEARCHSTRINGW LVM_GETISEARCHSTRING; + alias LVN_BEGINLABELEDITW LVN_BEGINLABELEDIT; + alias LVN_ENDLABELEDITW LVN_ENDLABELEDIT; + alias LVN_GETDISPINFOW LVN_GETDISPINFO; + alias LVN_SETDISPINFOW LVN_SETDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias LVN_GETINFOTIPW LVN_GETINFOTIP; + alias NMLVGETINFOTIPW NMLVGETINFOTIP; + alias LPNMLVGETINFOTIPW LPNMLVGETINFOTIP; + } + + alias LV_DISPINFOW LV_DISPINFO; + alias NMLVDISPINFOW NMLVDISPINFO; + alias LPNMLVDISPINFOW LPNMLVDISPINFO; + alias TVM_INSERTITEMW TVM_INSERTITEM; + alias TVM_GETITEMW TVM_GETITEM; + alias TVM_SETITEMW TVM_SETITEM; + alias TVM_EDITLABELW TVM_EDITLABEL; + alias TVM_GETISEARCHSTRINGW TVM_GETISEARCHSTRING; + alias NMTVDISPINFOW TV_DISPINFO; + alias NMTVDISPINFOW NMTVDISPINFO; + alias LPNMTVDISPINFOW LPNMTVDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias NMTVGETINFOTIPW NMTVGETINFOTIP; + alias LPNMTVGETINFOTIPW LPNMTVGETINFOTIP; + alias TVN_GETINFOTIPW TVN_GETINFOTIP; + } + + alias TVN_SELCHANGINGW TVN_SELCHANGING; + alias TVN_SELCHANGEDW TVN_SELCHANGED; + alias TVN_GETDISPINFOW TVN_GETDISPINFO; + alias TVN_SETDISPINFOW TVN_SETDISPINFO; + alias TVN_ITEMEXPANDINGW TVN_ITEMEXPANDING; + alias TVN_ITEMEXPANDEDW TVN_ITEMEXPANDED; + alias TVN_BEGINDRAGW TVN_BEGINDRAG; + alias TVN_BEGINRDRAGW TVN_BEGINRDRAG; + alias TVN_DELETEITEMW TVN_DELETEITEM; + alias TVN_BEGINLABELEDITW TVN_BEGINLABELEDIT; + alias TVN_ENDLABELEDITW TVN_ENDLABELEDIT; + alias TC_ITEMHEADERW TC_ITEMHEADER; + alias TC_ITEMW TC_ITEM; + alias TCITEMW TCITEM; + alias LPTCITEMW LPTCITEM; + alias TCM_GETITEMW TCM_GETITEM; + alias TCM_SETITEMW TCM_SETITEM; + alias TCM_INSERTITEMW TCM_INSERTITEM; + alias CreateStatusWindowW CreateStatusWindow; + alias DrawStatusTextW DrawStatusText; + alias ImageList_LoadImageW ImageList_LoadImage; + alias DTM_SETFORMATW DTM_SETFORMAT; + alias DTN_USERSTRINGW DTN_USERSTRING; + alias DTN_WMKEYDOWNW DTN_WMKEYDOWN; + alias DTN_FORMATW DTN_FORMAT; + alias DTN_FORMATQUERYW DTN_FORMATQUERY; + alias REBARBANDINFOW REBARBANDINFO; + alias REBARBANDINFO* LPREBARBANDINFO; + alias LPCREBARBANDINFOW LPCREBARBANDINFO; + alias REBARBANDINFOW_V3_SIZE REBARBANDINFO_V3_SIZE; + alias RB_INSERTBANDW RB_INSERTBAND; + alias RB_SETBANDINFOW RB_SETBANDINFO; } else { - alias HDITEMA HDITEM; - alias LPHDITEMA LPHDITEM; - alias TOOLINFOA TOOLINFO; - alias TOOLINFOA* PTOOLINFO, LPTOOLINFO; - alias TTHITTESTINFOA TTHITTESTINFO; - alias TTHITTESTINFOA* LPHITTESTINFO, LPTTHITTESTINFO; - alias TOOLTIPTEXTA TOOLTIPTEXT; - alias TOOLTIPTEXTA* LPTOOLTIPTEXT; - alias NMTTDISPINFOA NMTTDISPINFO; - alias NMTTDISPINFOA* LPNMTTDISPINFO; - alias TV_ITEMA TV_ITEM; - alias TV_ITEMA* LPTV_ITEM; - alias TVITEMA TVITEM; - alias TVITEMA* LPTVITEM; - - static if (_WIN32_IE >= 0x400) { - alias TVITEMEXA TVITEMEX; - alias TVITEMEXA* LPTVITEMEX; - } - - alias TV_INSERTSTRUCTA TV_INSERTSTRUCT; - alias TV_INSERTSTRUCTA* LPTV_INSERTSTRUCT; - alias TVINSERTSTRUCTA TVINSERTSTRUCT; - alias TVINSERTSTRUCTA* LPTVINSERTSTRUCT; - alias NM_TREEVIEWA NM_TREEVIEW; - alias NM_TREEVIEWA* LPNM_TREEVIEW; - alias NMTREEVIEWA NMTREEVIEW; - alias NMTREEVIEWA* LPNMTREEVIEW; - alias NMHDDISPINFOW NMHDDISPINFO; - alias NMHDDISPINFOW* LPNMHDDISPINFO; - - alias ACM_OPENA ACM_OPEN; - alias COMBOBOXEXITEMA COMBOBOXEXITEM; - alias PCOMBOBOXEXITEMA PCOMBOBOXEXITEM; - //alias PCCOMBOBOXEXITEMA PCCOMBOBOXEXITEM; fixme - alias CBEM_INSERTITEMA CBEM_INSERTITEM; - alias CBEM_SETITEMA CBEM_SETITEM; - alias CBEM_GETITEMA CBEM_GETITEM; - alias CBEN_ENDEDITA CBEN_ENDEDIT; - alias NMCBEENDEDITA NMCBEENDEDIT; - alias LPNMCBEENDEDITA LPNMCBEENDEDIT; - alias PNMCBEENDEDITA PNMCBEENDEDIT; - - static if (_WIN32_IE >= 0x400) { - alias TB_GETBUTTONINFOA TB_GETBUTTONINFO; - alias TB_SETBUTTONINFOA TB_SETBUTTONINFO; - alias TB_INSERTBUTTONA TB_INSERTBUTTON; - alias TB_ADDBUTTONSA TB_ADDBUTTONS; - alias TB_MAPACCELERATORA TB_MAPACCELERATOR; - alias TB_GETSTRINGA TB_GETSTRING; - alias NMCOMBOBOXEXA NMCOMBOBOXEX; - alias PNMCOMBOBOXEXA PNMCOMBOBOXEX; - alias CBEN_DRAGBEGINA CBEN_DRAGBEGIN; - alias CBEN_GETDISPINFOA CBEN_GETDISPINFO; - alias NMCBEDRAGBEGINA NMCBEDRAGBEGIN; - alias LPNMCBEDRAGBEGINA LPNMCBEDRAGBEGIN; - alias PNMCBEDRAGBEGINA PNMCBEDRAGBEGIN; - alias TBN_GETDISPINFOA TBN_GETDISPINFO; - alias NMTBDISPINFOA NMTBDISPINFO; - alias LPNMTBDISPINFOA LPNMTBDISPINFO; - alias NMTBGETINFOTIPA NMTBGETINFOTIP; - alias LPNMTBGETINFOTIPA LPNMTBGETINFOTIP; - } - - alias SB_GETTEXTA SB_GETTEXT; - alias SB_SETTEXTA SB_SETTEXT; - alias SB_GETTEXTLENGTHA SB_GETTEXTLENGTH; - alias HDM_INSERTITEMA HDM_INSERTITEM; - alias HDM_GETITEMA HDM_GETITEM; - alias HDM_SETITEMA HDM_SETITEM; - alias HDN_ITEMCHANGINGA HDN_ITEMCHANGING; - alias HDN_ITEMCHANGEDA HDN_ITEMCHANGED; - alias HDN_ITEMCLICKA HDN_ITEMCLICK; - alias HDN_ITEMDBLCLICKA HDN_ITEMDBLCLICK; - alias HDN_DIVIDERDBLCLICKA HDN_DIVIDERDBLCLICK; - alias HDN_BEGINTRACKA HDN_BEGINTRACK; - alias HDN_ENDTRACKA HDN_ENDTRACK; - alias HDN_TRACKA HDN_TRACK; - - static if (_WIN32_IE >= 0x300) { - alias HDN_GETDISPINFOA HDN_GETDISPINFO; - } - - alias HD_NOTIFYA HD_NOTIFY; - alias TBSAVEPARAMSA TBSAVEPARAMS; - alias TB_GETBUTTONTEXTA TB_GETBUTTONTEXT; - alias TB_SAVERESTOREA TB_SAVERESTORE; - alias TB_ADDSTRINGA TB_ADDSTRING; - alias TBN_GETBUTTONINFOA TBN_GETBUTTONINFO; - - static if (_WIN32_IE >= 0x400) { - alias TBBUTTONINFOA TBBUTTONINFO; - alias LPTBBUTTONINFOA LPTBBUTTONINFO; - } - - alias TBNOTIFYA TBNOTIFY; - alias LPTBNOTIFYA LPTBNOTIFY; - alias NMTOOLBARA NMTOOLBAR; - alias LPNMTOOLBARA LPNMTOOLBAR; - alias TTM_ADDTOOLA TTM_ADDTOOL; - alias TTM_DELTOOLA TTM_DELTOOL; - alias TTM_NEWTOOLRECTA TTM_NEWTOOLRECT; - alias TTM_GETTOOLINFOA TTM_GETTOOLINFO; - alias TTM_SETTOOLINFOA TTM_SETTOOLINFO; - alias TTM_HITTESTA TTM_HITTEST; - alias TTM_GETTEXTA TTM_GETTEXT; - alias TTM_UPDATETIPTEXTA TTM_UPDATETIPTEXT; - alias TTM_ENUMTOOLSA TTM_ENUMTOOLS; - alias TTM_GETCURRENTTOOLA TTM_GETCURRENTTOOL; - alias TTN_NEEDTEXTA TTN_NEEDTEXT; - alias TTN_GETDISPINFOA TTN_GETDISPINFO; - alias LV_ITEMA LV_ITEM; - alias LVITEMA LVITEM; - alias LVITEM* LPLVITEM; - alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK; - - static if (_WIN32_IE >= 0x400) { - alias LVBKIMAGEA LVBKIMAGE; - alias LPLVBKIMAGEA LPLVBKIMAGE; - alias LVM_SETBKIMAGEA LVM_SETBKIMAGE; - alias LVM_GETBKIMAGEA LVM_GETBKIMAGE; - } - - alias LVM_GETITEMA LVM_GETITEM; - alias LVM_SETITEMA LVM_SETITEM; - alias LVM_INSERTITEMA LVM_INSERTITEM; - alias LV_FINDINFOA LV_FINDINFO; - alias LVFINDINFOA LVFINDINFO; - alias LPFINDINFOA LPFINDINFO; - alias NMLVFINDITEMA NMLVFINDITEM; - alias PNMLVFINDITEMA PNMLVFINDITEM; - alias LPNMLVFINDITEMA LPNMLVFINDITEM; - alias LVM_FINDITEMA LVM_FINDITEM; - alias LVM_GETSTRINGWIDTHA LVM_GETSTRINGWIDTH; - alias LVM_EDITLABELA LVM_EDITLABEL; - alias LV_COLUMNA LV_COLUMN; - alias LVCOLUMNA LVCOLUMN; - alias LVCOLUMNA* LPLVCOLUMN; - alias LVM_GETCOLUMNA LVM_GETCOLUMN; - alias LVM_SETCOLUMNA LVM_SETCOLUMN; - alias LVM_INSERTCOLUMNA LVM_INSERTCOLUMN; - alias LVM_GETITEMTEXTA LVM_GETITEMTEXT; - alias LVM_SETITEMTEXTA LVM_SETITEMTEXT; - alias LVM_GETISEARCHSTRINGA LVM_GETISEARCHSTRING; - alias LVN_BEGINLABELEDITA LVN_BEGINLABELEDIT; - alias LVN_ENDLABELEDITA LVN_ENDLABELEDIT; - alias LVN_GETDISPINFOA LVN_GETDISPINFO; - alias LVN_SETDISPINFOA LVN_SETDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias LVN_GETINFOTIPA LVN_GETINFOTIP; - alias NMLVGETINFOTIPA NMLVGETINFOTIP; - alias LPNMLVGETINFOTIPA LPNMLVGETINFOTIP; - } - - alias LV_DISPINFOA LV_DISPINFO; - alias NMLVDISPINFOA NMLVDISPINFO; - alias LPNMLVDISPINFOA LPNMLVDISPINFO; - alias TVM_INSERTITEMA TVM_INSERTITEM; - alias TVM_GETITEMA TVM_GETITEM; - alias TVM_SETITEMA TVM_SETITEM; - alias TVM_EDITLABELA TVM_EDITLABEL; - alias TVM_GETISEARCHSTRINGA TVM_GETISEARCHSTRING; - alias NMTVDISPINFOA TV_DISPINFO; - alias NMTVDISPINFOA NMTVDISPINFO; - alias LPNMTVDISPINFOA LPNMTVDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias NMTVGETINFOTIPA NMTVGETINFOTIP; - alias LPNMTVGETINFOTIPA LPNMTVGETINFOTIP; - alias TVN_GETINFOTIPA TVN_GETINFOTIP; - } - - alias TVN_SELCHANGINGA TVN_SELCHANGING; - alias TVN_SELCHANGEDA TVN_SELCHANGED; - alias TVN_GETDISPINFOA TVN_GETDISPINFO; - alias TVN_SETDISPINFOA TVN_SETDISPINFO; - alias TVN_ITEMEXPANDINGA TVN_ITEMEXPANDING; - alias TVN_ITEMEXPANDEDA TVN_ITEMEXPANDED; - alias TVN_BEGINDRAGA TVN_BEGINDRAG; - alias TVN_BEGINRDRAGA TVN_BEGINRDRAG; - alias TVN_DELETEITEMA TVN_DELETEITEM; - alias TVN_BEGINLABELEDITA TVN_BEGINLABELEDIT; - alias TVN_ENDLABELEDITA TVN_ENDLABELEDIT; - alias TC_ITEMHEADERA TC_ITEMHEADER; - alias TC_ITEMA TC_ITEM; - alias TCITEMA TCITEM; - alias LPTCITEMA LPTCITEM; - alias TCM_GETITEMA TCM_GETITEM; - alias TCM_SETITEMA TCM_SETITEM; - alias TCM_INSERTITEMA TCM_INSERTITEM; - alias CreateStatusWindowA CreateStatusWindow; - alias DrawStatusTextA DrawStatusText; - alias ImageList_LoadImageA ImageList_LoadImage; - alias DTM_SETFORMATA DTM_SETFORMAT; - alias DTN_USERSTRINGA DTN_USERSTRING; - alias DTN_WMKEYDOWNA DTN_WMKEYDOWN; - alias DTN_FORMATA DTN_FORMAT; - alias DTN_FORMATQUERYA DTN_FORMATQUERY; - alias REBARBANDINFOA REBARBANDINFO; - alias REBARBANDINFOA* LPREBARBANDINFO; - alias LPCREBARBANDINFOA LPCREBARBANDINFO; - alias REBARBANDINFOA_V3_SIZE REBARBANDINFO_V3_SIZE; - alias RB_INSERTBANDA RB_INSERTBAND; - alias RB_SETBANDINFOA RB_SETBANDINFO; + alias HDITEMA HDITEM; + alias LPHDITEMA LPHDITEM; + alias TOOLINFOA TOOLINFO; + alias TOOLINFOA* PTOOLINFO, LPTOOLINFO; + alias TTHITTESTINFOA TTHITTESTINFO; + alias TTHITTESTINFOA* LPHITTESTINFO, LPTTHITTESTINFO; + alias TOOLTIPTEXTA TOOLTIPTEXT; + alias TOOLTIPTEXTA* LPTOOLTIPTEXT; + alias NMTTDISPINFOA NMTTDISPINFO; + alias NMTTDISPINFOA* LPNMTTDISPINFO; + alias TV_ITEMA TV_ITEM; + alias TV_ITEMA* LPTV_ITEM; + alias TVITEMA TVITEM; + alias TVITEMA* LPTVITEM; + + static if (_WIN32_IE >= 0x400) { + alias TVITEMEXA TVITEMEX; + alias TVITEMEXA* LPTVITEMEX; + } + + alias TV_INSERTSTRUCTA TV_INSERTSTRUCT; + alias TV_INSERTSTRUCTA* LPTV_INSERTSTRUCT; + alias TVINSERTSTRUCTA TVINSERTSTRUCT; + alias TVINSERTSTRUCTA* LPTVINSERTSTRUCT; + alias NM_TREEVIEWA NM_TREEVIEW; + alias NM_TREEVIEWA* LPNM_TREEVIEW; + alias NMTREEVIEWA NMTREEVIEW; + alias NMTREEVIEWA* LPNMTREEVIEW; + alias NMHDDISPINFOW NMHDDISPINFO; + alias NMHDDISPINFOW* LPNMHDDISPINFO; + + alias ACM_OPENA ACM_OPEN; + alias COMBOBOXEXITEMA COMBOBOXEXITEM; + alias PCOMBOBOXEXITEMA PCOMBOBOXEXITEM; + //alias PCCOMBOBOXEXITEMA PCCOMBOBOXEXITEM; fixme + alias CBEM_INSERTITEMA CBEM_INSERTITEM; + alias CBEM_SETITEMA CBEM_SETITEM; + alias CBEM_GETITEMA CBEM_GETITEM; + alias CBEN_ENDEDITA CBEN_ENDEDIT; + alias NMCBEENDEDITA NMCBEENDEDIT; + alias LPNMCBEENDEDITA LPNMCBEENDEDIT; + alias PNMCBEENDEDITA PNMCBEENDEDIT; + + static if (_WIN32_IE >= 0x400) { + alias TB_GETBUTTONINFOA TB_GETBUTTONINFO; + alias TB_SETBUTTONINFOA TB_SETBUTTONINFO; + alias TB_INSERTBUTTONA TB_INSERTBUTTON; + alias TB_ADDBUTTONSA TB_ADDBUTTONS; + alias TB_MAPACCELERATORA TB_MAPACCELERATOR; + alias TB_GETSTRINGA TB_GETSTRING; + alias NMCOMBOBOXEXA NMCOMBOBOXEX; + alias PNMCOMBOBOXEXA PNMCOMBOBOXEX; + alias CBEN_DRAGBEGINA CBEN_DRAGBEGIN; + alias CBEN_GETDISPINFOA CBEN_GETDISPINFO; + alias NMCBEDRAGBEGINA NMCBEDRAGBEGIN; + alias LPNMCBEDRAGBEGINA LPNMCBEDRAGBEGIN; + alias PNMCBEDRAGBEGINA PNMCBEDRAGBEGIN; + alias TBN_GETDISPINFOA TBN_GETDISPINFO; + alias NMTBDISPINFOA NMTBDISPINFO; + alias LPNMTBDISPINFOA LPNMTBDISPINFO; + alias NMTBGETINFOTIPA NMTBGETINFOTIP; + alias LPNMTBGETINFOTIPA LPNMTBGETINFOTIP; + } + + alias SB_GETTEXTA SB_GETTEXT; + alias SB_SETTEXTA SB_SETTEXT; + alias SB_GETTEXTLENGTHA SB_GETTEXTLENGTH; + alias HDM_INSERTITEMA HDM_INSERTITEM; + alias HDM_GETITEMA HDM_GETITEM; + alias HDM_SETITEMA HDM_SETITEM; + alias HDN_ITEMCHANGINGA HDN_ITEMCHANGING; + alias HDN_ITEMCHANGEDA HDN_ITEMCHANGED; + alias HDN_ITEMCLICKA HDN_ITEMCLICK; + alias HDN_ITEMDBLCLICKA HDN_ITEMDBLCLICK; + alias HDN_DIVIDERDBLCLICKA HDN_DIVIDERDBLCLICK; + alias HDN_BEGINTRACKA HDN_BEGINTRACK; + alias HDN_ENDTRACKA HDN_ENDTRACK; + alias HDN_TRACKA HDN_TRACK; + + static if (_WIN32_IE >= 0x300) { + alias HDN_GETDISPINFOA HDN_GETDISPINFO; + } + + alias HD_NOTIFYA HD_NOTIFY; + alias TBSAVEPARAMSA TBSAVEPARAMS; + alias TB_GETBUTTONTEXTA TB_GETBUTTONTEXT; + alias TB_SAVERESTOREA TB_SAVERESTORE; + alias TB_ADDSTRINGA TB_ADDSTRING; + alias TBN_GETBUTTONINFOA TBN_GETBUTTONINFO; + + static if (_WIN32_IE >= 0x400) { + alias TBBUTTONINFOA TBBUTTONINFO; + alias LPTBBUTTONINFOA LPTBBUTTONINFO; + } + + alias TBNOTIFYA TBNOTIFY; + alias LPTBNOTIFYA LPTBNOTIFY; + alias NMTOOLBARA NMTOOLBAR; + alias LPNMTOOLBARA LPNMTOOLBAR; + alias TTM_ADDTOOLA TTM_ADDTOOL; + alias TTM_DELTOOLA TTM_DELTOOL; + alias TTM_NEWTOOLRECTA TTM_NEWTOOLRECT; + alias TTM_GETTOOLINFOA TTM_GETTOOLINFO; + alias TTM_SETTOOLINFOA TTM_SETTOOLINFO; + alias TTM_HITTESTA TTM_HITTEST; + alias TTM_GETTEXTA TTM_GETTEXT; + alias TTM_UPDATETIPTEXTA TTM_UPDATETIPTEXT; + alias TTM_ENUMTOOLSA TTM_ENUMTOOLS; + alias TTM_GETCURRENTTOOLA TTM_GETCURRENTTOOL; + alias TTN_NEEDTEXTA TTN_NEEDTEXT; + alias TTN_GETDISPINFOA TTN_GETDISPINFO; + alias LV_ITEMA LV_ITEM; + alias LVITEMA LVITEM; + alias LVITEM* LPLVITEM; + alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK; + + static if (_WIN32_IE >= 0x400) { + alias LVBKIMAGEA LVBKIMAGE; + alias LPLVBKIMAGEA LPLVBKIMAGE; + alias LVM_SETBKIMAGEA LVM_SETBKIMAGE; + alias LVM_GETBKIMAGEA LVM_GETBKIMAGE; + } + + alias LVM_GETITEMA LVM_GETITEM; + alias LVM_SETITEMA LVM_SETITEM; + alias LVM_INSERTITEMA LVM_INSERTITEM; + alias LV_FINDINFOA LV_FINDINFO; + alias LVFINDINFOA LVFINDINFO; + alias LPFINDINFOA LPFINDINFO; + alias NMLVFINDITEMA NMLVFINDITEM; + alias PNMLVFINDITEMA PNMLVFINDITEM; + alias LPNMLVFINDITEMA LPNMLVFINDITEM; + alias LVM_FINDITEMA LVM_FINDITEM; + alias LVM_GETSTRINGWIDTHA LVM_GETSTRINGWIDTH; + alias LVM_EDITLABELA LVM_EDITLABEL; + alias LV_COLUMNA LV_COLUMN; + alias LVCOLUMNA LVCOLUMN; + alias LVCOLUMNA* LPLVCOLUMN; + alias LVM_GETCOLUMNA LVM_GETCOLUMN; + alias LVM_SETCOLUMNA LVM_SETCOLUMN; + alias LVM_INSERTCOLUMNA LVM_INSERTCOLUMN; + alias LVM_GETITEMTEXTA LVM_GETITEMTEXT; + alias LVM_SETITEMTEXTA LVM_SETITEMTEXT; + alias LVM_GETISEARCHSTRINGA LVM_GETISEARCHSTRING; + alias LVN_BEGINLABELEDITA LVN_BEGINLABELEDIT; + alias LVN_ENDLABELEDITA LVN_ENDLABELEDIT; + alias LVN_GETDISPINFOA LVN_GETDISPINFO; + alias LVN_SETDISPINFOA LVN_SETDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias LVN_GETINFOTIPA LVN_GETINFOTIP; + alias NMLVGETINFOTIPA NMLVGETINFOTIP; + alias LPNMLVGETINFOTIPA LPNMLVGETINFOTIP; + } + + alias LV_DISPINFOA LV_DISPINFO; + alias NMLVDISPINFOA NMLVDISPINFO; + alias LPNMLVDISPINFOA LPNMLVDISPINFO; + alias TVM_INSERTITEMA TVM_INSERTITEM; + alias TVM_GETITEMA TVM_GETITEM; + alias TVM_SETITEMA TVM_SETITEM; + alias TVM_EDITLABELA TVM_EDITLABEL; + alias TVM_GETISEARCHSTRINGA TVM_GETISEARCHSTRING; + alias NMTVDISPINFOA TV_DISPINFO; + alias NMTVDISPINFOA NMTVDISPINFO; + alias LPNMTVDISPINFOA LPNMTVDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias NMTVGETINFOTIPA NMTVGETINFOTIP; + alias LPNMTVGETINFOTIPA LPNMTVGETINFOTIP; + alias TVN_GETINFOTIPA TVN_GETINFOTIP; + } + + alias TVN_SELCHANGINGA TVN_SELCHANGING; + alias TVN_SELCHANGEDA TVN_SELCHANGED; + alias TVN_GETDISPINFOA TVN_GETDISPINFO; + alias TVN_SETDISPINFOA TVN_SETDISPINFO; + alias TVN_ITEMEXPANDINGA TVN_ITEMEXPANDING; + alias TVN_ITEMEXPANDEDA TVN_ITEMEXPANDED; + alias TVN_BEGINDRAGA TVN_BEGINDRAG; + alias TVN_BEGINRDRAGA TVN_BEGINRDRAG; + alias TVN_DELETEITEMA TVN_DELETEITEM; + alias TVN_BEGINLABELEDITA TVN_BEGINLABELEDIT; + alias TVN_ENDLABELEDITA TVN_ENDLABELEDIT; + alias TC_ITEMHEADERA TC_ITEMHEADER; + alias TC_ITEMA TC_ITEM; + alias TCITEMA TCITEM; + alias LPTCITEMA LPTCITEM; + alias TCM_GETITEMA TCM_GETITEM; + alias TCM_SETITEMA TCM_SETITEM; + alias TCM_INSERTITEMA TCM_INSERTITEM; + alias CreateStatusWindowA CreateStatusWindow; + alias DrawStatusTextA DrawStatusText; + alias ImageList_LoadImageA ImageList_LoadImage; + alias DTM_SETFORMATA DTM_SETFORMAT; + alias DTN_USERSTRINGA DTN_USERSTRING; + alias DTN_WMKEYDOWNA DTN_WMKEYDOWN; + alias DTN_FORMATA DTN_FORMAT; + alias DTN_FORMATQUERYA DTN_FORMATQUERY; + alias REBARBANDINFOA REBARBANDINFO; + alias REBARBANDINFOA* LPREBARBANDINFO; + alias LPCREBARBANDINFOA LPCREBARBANDINFO; + alias REBARBANDINFOA_V3_SIZE REBARBANDINFO_V3_SIZE; + alias RB_INSERTBANDA RB_INSERTBAND; + alias RB_SETBANDINFOA RB_SETBANDINFO; } @@ -4895,737 +4895,737 @@ alias INT function(PVOID, PVOID) PFNDSAENUMCALLBACK; alias INT function(PVOID, PVOID, LPARAM) PFNDPACOMPARE; static if (_WIN32_WINNT >= 0x501) { - extern (Windows) - alias LRESULT function(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR) - SUBCLASSPROC; - - struct LITEM { - UINT mask; - int iLink; - UINT state; - UINT stateMask; - WCHAR[MAX_LINKID_TEXT] szID; - WCHAR[L_MAX_URL_LENGTH] szUrl; - } - alias LITEM* PLITEM; - - struct LHITTESTINFO { - POINT pt; - LITEM item; - } - alias LHITTESTINFO* PLHITTESTINFO; - - struct NMLINK { - NMHDR hdr; - LITEM item; - } - alias NMLINK* PNMLINK; + extern (Windows) + alias LRESULT function(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR) + SUBCLASSPROC; + + struct LITEM { + UINT mask; + int iLink; + UINT state; + UINT stateMask; + WCHAR[MAX_LINKID_TEXT] szID; + WCHAR[L_MAX_URL_LENGTH] szUrl; + } + alias LITEM* PLITEM; + + struct LHITTESTINFO { + POINT pt; + LITEM item; + } + alias LHITTESTINFO* PLHITTESTINFO; + + struct NMLINK { + NMHDR hdr; + LITEM item; + } + alias NMLINK* PNMLINK; } uint INDEXTOOVERLAYMASK(uint i) { return i << 8; } uint INDEXTOSTATEIMAGEMASK(uint i) { return i << 12; } template HANDLE_WM_NOTIFY(R) { - R HANDLE_WM_NOTIFY(HWND hwnd, WPARAM wParam, LPARAM lParam, - R function(HWND, int, NMHDR*) fn) { - return fn(hwnd, wParam, cast(NMHDR*) lParam); - } + R HANDLE_WM_NOTIFY(HWND hwnd, WPARAM wParam, LPARAM lParam, + R function(HWND, int, NMHDR*) fn) { + return fn(hwnd, wParam, cast(NMHDR*) lParam); + } } int FORWARD_WM_NOTIFY(HWND hwnd, int idFrom, NMHDR* pnmhdr, - int function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) fn) { - return fn(hwnd, WM_NOTIFY, idFrom, cast(LPARAM) pnmhdr); + int function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) fn) { + return fn(hwnd, WM_NOTIFY, idFrom, cast(LPARAM) pnmhdr); } //#define CCSIZEOF_STRUCT(s, m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m)) LPARAM MAKEIPADDRESS(ubyte b1, ubyte b2, ubyte b3, ubyte b4) { - return (cast(DWORD) b1 << 24) - | (cast(DWORD) b2 << 16) - | (cast(DWORD) b3 << 8) - | (cast(DWORD) b4); + return (cast(DWORD) b1 << 24) + | (cast(DWORD) b2 << 16) + | (cast(DWORD) b3 << 8) + | (cast(DWORD) b4); } LPARAM MAKEIPRANGE(ubyte low, ubyte high) { - return (cast(int) high << 8) | low; + return (cast(int) high << 8) | low; } ubyte FIRST_IPADDRESS(LPARAM x) { - return cast(ubyte) (x >> 24); + return cast(ubyte) (x >> 24); } ubyte SECOND_IPADDRESS(LPARAM x) { - return cast(ubyte) (x >> 16); + return cast(ubyte) (x >> 16); } ubyte THIRD_IPADDRESS(LPARAM x) { - return cast(ubyte) (x >> 8); + return cast(ubyte) (x >> 8); } ubyte FOURTH_IPADDRESS(LPARAM x) { - return cast(ubyte) x; + return cast(ubyte) x; } HWND Animate_Create(HWND hwndP, UINT id, DWORD dwStyle, - HINSTANCE hInstance) { - return CreateWindow(cast(TCHAR*)ANIMATE_CLASS.ptr, null, dwStyle, 0, 0, 0, 0, hwndP, - cast(HMENU) id, hInstance, null); + HINSTANCE hInstance) { + return CreateWindow(cast(TCHAR*)ANIMATE_CLASS.ptr, null, dwStyle, 0, 0, 0, 0, hwndP, + cast(HMENU) id, hInstance, null); } BOOL Animate_Open(HWND hwnd, LPTSTR szName) { - return cast(BOOL) SendMessage(hwnd, ACM_OPEN, 0, cast(LPARAM) szName); + return cast(BOOL) SendMessage(hwnd, ACM_OPEN, 0, cast(LPARAM) szName); } BOOL Animate_OpenEx(HWND hwnd, HINSTANCE hInst, LPTSTR szName) { - return cast(BOOL) SendMessage(hwnd, ACM_OPEN, cast(WPARAM) hInst, - cast(LPARAM) szName); + return cast(BOOL) SendMessage(hwnd, ACM_OPEN, cast(WPARAM) hInst, + cast(LPARAM) szName); } BOOL Animate_Play(HWND hwnd, int from, int to, int rep) { - return cast(BOOL) SendMessage(hwnd, ACM_PLAY, rep, - MAKELONG(cast(ushort) from, cast(ushort) to)); + return cast(BOOL) SendMessage(hwnd, ACM_PLAY, rep, + MAKELONG(cast(ushort) from, cast(ushort) to)); } BOOL Animate_Stop(HWND hwnd) { - return cast(BOOL) SendMessage(hwnd, ACM_STOP, 0, 0); + return cast(BOOL) SendMessage(hwnd, ACM_STOP, 0, 0); } BOOL Animate_Close(HWND hwnd) { - return Animate_Open(hwnd, null); + return Animate_Open(hwnd, null); } BOOL Animate_Seek(HWND hwnd, int frame) { - return Animate_Play(hwnd, frame, frame, 1); + return Animate_Play(hwnd, frame, frame, 1); } extern (Windows) { - HBITMAP CreateMappedBitmap(HINSTANCE, INT_PTR, UINT, LPCOLORMAP, int); - HWND CreateStatusWindowA(LONG, LPCSTR, HWND, UINT); - HWND CreateStatusWindowW(LONG, LPCWSTR, HWND, UINT); - HWND CreateToolbarEx(HWND, DWORD, UINT, int, HINSTANCE, UINT_PTR, - LPCTBBUTTON, int, int, int, int, int, UINT); - HWND CreateUpDownControl(DWORD, int, int, int, int, HWND, int, HINSTANCE, - HWND, int, int, int); + HBITMAP CreateMappedBitmap(HINSTANCE, INT_PTR, UINT, LPCOLORMAP, int); + HWND CreateStatusWindowA(LONG, LPCSTR, HWND, UINT); + HWND CreateStatusWindowW(LONG, LPCWSTR, HWND, UINT); + HWND CreateToolbarEx(HWND, DWORD, UINT, int, HINSTANCE, UINT_PTR, + LPCTBBUTTON, int, int, int, int, int, UINT); + HWND CreateUpDownControl(DWORD, int, int, int, int, HWND, int, HINSTANCE, + HWND, int, int, int); } HWND DateTime_GetMonthCal(HWND hwnd) { - return cast(HWND) SendMessage(hwnd, DTM_GETMONTHCAL, 0, 0); + return cast(HWND) SendMessage(hwnd, DTM_GETMONTHCAL, 0, 0); } COLORREF DateTime_GetMonthCalColor(HWND hwnd, int iColor) { - return cast(COLORREF) SendMessage(hwnd, DTM_GETMCCOLOR, iColor, 0); + return cast(COLORREF) SendMessage(hwnd, DTM_GETMCCOLOR, iColor, 0); } HFONT DateTime_GetMonthCalFont(HWND hwnd) { - return cast(HFONT) SendMessage(hwnd, DTM_GETMCFONT, 0, 0); + return cast(HFONT) SendMessage(hwnd, DTM_GETMCFONT, 0, 0); } DWORD DateTime_GetRange(HWND hwnd, LPSYSTEMTIME lpSysTimeArray) { - return cast(DWORD) SendMessage(hwnd, DTM_GETRANGE, 0, cast(LPARAM) lpSysTimeArray); + return cast(DWORD) SendMessage(hwnd, DTM_GETRANGE, 0, cast(LPARAM) lpSysTimeArray); } DWORD DateTime_GetSystemtime(HWND hwnd, LPSYSTEMTIME lpSysTime) { - return cast(DWORD) SendMessage(hwnd, DTM_GETSYSTEMTIME, 0, cast(LPARAM) lpSysTime); + return cast(DWORD) SendMessage(hwnd, DTM_GETSYSTEMTIME, 0, cast(LPARAM) lpSysTime); } BOOL DateTime_SetFormat(HWND hwnd, LPCTSTR lpszFormat) { - return cast(BOOL) SendMessage(hwnd, DTM_SETFORMAT, 0, - cast(LPARAM) lpszFormat); + return cast(BOOL) SendMessage(hwnd, DTM_SETFORMAT, 0, + cast(LPARAM) lpszFormat); } LRESULT DateTime_SetMonthCalColor(HWND hwnd, int iColor, COLORREF clr) { - return SendMessage(hwnd, DTM_SETMCCOLOR, cast(WPARAM) iColor, - cast(LPARAM) clr); + return SendMessage(hwnd, DTM_SETMCCOLOR, cast(WPARAM) iColor, + cast(LPARAM) clr); } void DateTime_SetMonthCalFont(HWND hwnd, HFONT hfont, BOOL fRedraw) { - SendMessage(hwnd, DTM_SETMCFONT, cast(WPARAM) hfont, fRedraw); + SendMessage(hwnd, DTM_SETMCFONT, cast(WPARAM) hfont, fRedraw); } BOOL DateTime_SetRange(HWND hwnd, WPARAM flags, LPSYSTEMTIME lpSysTimeArray) { - return cast(BOOL) SendMessage(hwnd, DTM_SETRANGE, flags, - cast(LPARAM) lpSysTimeArray); + return cast(BOOL) SendMessage(hwnd, DTM_SETRANGE, flags, + cast(LPARAM) lpSysTimeArray); } BOOL DateTime_SetSystemtime(HWND hwnd, WPARAM flag, LPSYSTEMTIME lpSysTime) { - return cast(BOOL) SendMessage(hwnd, DTM_SETSYSTEMTIME, flag, - cast(LPARAM) lpSysTime); + return cast(BOOL) SendMessage(hwnd, DTM_SETSYSTEMTIME, flag, + cast(LPARAM) lpSysTime); } extern (Windows) { - void DrawInsert(HWND, HWND, int); - void DrawStatusTextA(HDC, LPRECT, LPCSTR, UINT); - void DrawStatusTextW(HDC, LPRECT, LPCWSTR, UINT); - void GetEffectiveClientRect(HWND, LPRECT, LPINT); + void DrawInsert(HWND, HWND, int); + void DrawStatusTextA(HDC, LPRECT, LPCSTR, UINT); + void DrawStatusTextW(HDC, LPRECT, LPCWSTR, UINT); + void GetEffectiveClientRect(HWND, LPRECT, LPINT); } int Header_GetItemCount(HWND w) { - return cast(int) SendMessage(w, HDM_GETITEMCOUNT, 0, 0); + return cast(int) SendMessage(w, HDM_GETITEMCOUNT, 0, 0); } int Header_InsertItem(HWND w, int i, const(HDITEM)* phdi) { - return cast(int) SendMessage(w, HDM_INSERTITEM, i, cast(LPARAM) phdi); + return cast(int) SendMessage(w, HDM_INSERTITEM, i, cast(LPARAM) phdi); } BOOL Header_DeleteItem(HWND w, int i) { - return cast(BOOL) SendMessage(w, HDM_DELETEITEM, i, 0); + return cast(BOOL) SendMessage(w, HDM_DELETEITEM, i, 0); } BOOL Header_GetItem(HWND w, int i, LPHDITEM phdi) { - return cast(BOOL) SendMessage(w, HDM_GETITEM, i, cast(LPARAM) phdi); + return cast(BOOL) SendMessage(w, HDM_GETITEM, i, cast(LPARAM) phdi); } BOOL Header_SetItem(HWND w, int i, const(HDITEM)* phdi) { - return cast(BOOL) SendMessage(w, HDM_SETITEM, i, cast(LPARAM) phdi); + return cast(BOOL) SendMessage(w, HDM_SETITEM, i, cast(LPARAM) phdi); } BOOL Header_Layout(HWND w, LPHDLAYOUT playout) { - return cast(BOOL) SendMessage(w, HDM_LAYOUT, 0, cast(LPARAM) playout); + return cast(BOOL) SendMessage(w, HDM_LAYOUT, 0, cast(LPARAM) playout); } static if (_WIN32_IE >= 0x300) { - int Header_OrderToIndex(HWND w, int i) { - return cast(int) SendMessage(w, HDM_ORDERTOINDEX, i, 0); - } + int Header_OrderToIndex(HWND w, int i) { + return cast(int) SendMessage(w, HDM_ORDERTOINDEX, i, 0); + } - BOOL Header_GetItemRect(HWND w, int i, RECT* r) { - return cast(BOOL) SendMessage(w, HDM_GETITEMRECT, i, cast(LPARAM) r); - } + BOOL Header_GetItemRect(HWND w, int i, RECT* r) { + return cast(BOOL) SendMessage(w, HDM_GETITEMRECT, i, cast(LPARAM) r); + } - BOOL Header_GetOrderArray(HWND w, int iSize, LPINT lpiArray) { - return cast(BOOL) SendMessage(w, HDM_GETORDERARRAY, iSize, - cast(LPARAM) lpiArray); - } + BOOL Header_GetOrderArray(HWND w, int iSize, LPINT lpiArray) { + return cast(BOOL) SendMessage(w, HDM_GETORDERARRAY, iSize, + cast(LPARAM) lpiArray); + } - BOOL Header_SetOrderArray(HWND w, int iSize, LPINT lpiArray) { - return cast(BOOL) SendMessage(w, HDM_SETORDERARRAY, iSize, - cast(LPARAM) lpiArray); - } + BOOL Header_SetOrderArray(HWND w, int iSize, LPINT lpiArray) { + return cast(BOOL) SendMessage(w, HDM_SETORDERARRAY, iSize, + cast(LPARAM) lpiArray); + } - HIMAGELIST Header_CreateDragImage(HWND w, int i) { - return cast(HIMAGELIST) SendMessage(w, HDM_CREATEDRAGIMAGE, i, 0); - } + HIMAGELIST Header_CreateDragImage(HWND w, int i) { + return cast(HIMAGELIST) SendMessage(w, HDM_CREATEDRAGIMAGE, i, 0); + } - HIMAGELIST Header_SetImageList(HWND w, HIMAGELIST himl) { - return cast(HIMAGELIST) SendMessage(w, HDM_SETIMAGELIST, 0, - cast(LPARAM) himl); - } + HIMAGELIST Header_SetImageList(HWND w, HIMAGELIST himl) { + return cast(HIMAGELIST) SendMessage(w, HDM_SETIMAGELIST, 0, + cast(LPARAM) himl); + } - HIMAGELIST Header_GetImageList(HWND w) { - return cast(HIMAGELIST) SendMessage(w, HDM_GETIMAGELIST, 0, 0); - } + HIMAGELIST Header_GetImageList(HWND w) { + return cast(HIMAGELIST) SendMessage(w, HDM_GETIMAGELIST, 0, 0); + } } static if (_WIN32_IE >= 0x400) { - BOOL Header_GetUnicodeFormat(HWND w) { - return cast(BOOL) SendMessage(w, HDM_GETUNICODEFORMAT, 0, 0); - } + BOOL Header_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, HDM_GETUNICODEFORMAT, 0, 0); + } - BOOL Header_SetUnicodeFormat(HWND w, BOOL fUnicode) { - return cast(BOOL) SendMessage(w, HDM_SETUNICODEFORMAT, fUnicode, 0); - } + BOOL Header_SetUnicodeFormat(HWND w, BOOL fUnicode) { + return cast(BOOL) SendMessage(w, HDM_SETUNICODEFORMAT, fUnicode, 0); + } } extern (Windows) { - HDSA DSA_Create(INT, INT); - BOOL DSA_Destroy(HDSA); - VOID DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, PVOID); - PVOID DSA_GetItemPtr(HDSA, INT); - INT DSA_InsertItem(HDSA, INT, PVOID); - HDPA DPA_Create(INT); - BOOL DPA_Destroy(HDPA); - PVOID DPA_DeletePtr(HDPA, INT); - BOOL DPA_DeleteAllPtrs(HDPA); - VOID DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); - VOID DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); - BOOL DPA_SetPtr(HDPA, INT, PVOID); - INT DPA_InsertPtr(HDPA, INT, PVOID); - PVOID DPA_GetPtr(HDPA, INT_PTR); - BOOL DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM); - INT DPA_Search(HDPA, PVOID, INT, PFNDPACOMPARE, LPARAM, UINT); - BOOL Str_SetPtrW(LPWSTR*, LPCWSTR); - - static if (_WIN32_IE >= 0x400) { - BOOL FlatSB_EnableScrollBar(HWND, INT, UINT); - BOOL FlatSB_ShowScrollBar(HWND, INT, BOOL); - BOOL FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT); - BOOL FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO); - INT FlatSB_GetScrollPos(HWND, INT); - BOOL FlatSB_GetScrollProp(HWND, INT, LPINT); - version (Win64) { - BOOL FlatSB_GetScrollPropPtr(HWND, INT, PINT_PTR); - } else { - alias FlatSB_GetScrollProp FlatSB_GetScrollPropPtr; - } - INT FlatSB_SetScrollPos(HWND, INT, INT, BOOL); - INT FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL); - INT FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL); - BOOL FlatSB_SetScrollProp(HWND, UINT, INT_PTR, BOOL); - alias FlatSB_SetScrollProp FlatSB_SetScrollPropPtr; - BOOL InitializeFlatSB(HWND); - HRESULT UninitializeFlatSB(HWND); - } - - static if (_WIN32_WINNT >= 0x501) { - BOOL SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR); - BOOL GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*); - BOOL RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR); - LRESULT DefSubclassProc(HWND, UINT, WPARAM, LPARAM); - INT DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, - COLORREF, INT, INT); - } - - int ImageList_Add(HIMAGELIST, HBITMAP, HBITMAP); - int ImageList_AddMasked(HIMAGELIST, HBITMAP, COLORREF); - BOOL ImageList_BeginDrag(HIMAGELIST, int, int, int); - HIMAGELIST ImageList_Create(int, int, UINT, int, int); - BOOL ImageList_Destroy(HIMAGELIST); - BOOL ImageList_DragEnter(HWND, int, int); - BOOL ImageList_DragLeave(HWND); - BOOL ImageList_DragMove(int, int); - BOOL ImageList_DragShowNolock(BOOL); - BOOL ImageList_Draw(HIMAGELIST, int, HDC, int, int, UINT); - BOOL ImageList_DrawEx(HIMAGELIST, int, HDC, int, int, int, int, COLORREF, - COLORREF, UINT); - void ImageList_EndDrag(); - COLORREF ImageList_GetBkColor(HIMAGELIST); - HIMAGELIST ImageList_GetDragImage(LPPOINT, LPPOINT); - HICON ImageList_GetIcon(HIMAGELIST, int, UINT); - BOOL ImageList_GetIconSize(HIMAGELIST, int*, int*); - int ImageList_GetImageCount(HIMAGELIST); - BOOL ImageList_GetImageInfo(HIMAGELIST, int, IMAGEINFO*); - HIMAGELIST ImageList_LoadImageA(HINSTANCE, LPCSTR, int, int, COLORREF, - UINT, UINT); - HIMAGELIST ImageList_LoadImageW(HINSTANCE, LPCWSTR, int, int, COLORREF, - UINT, UINT); - HIMAGELIST ImageList_Merge(HIMAGELIST, int, HIMAGELIST, int, int, int); - BOOL ImageList_Remove(HIMAGELIST, int); - BOOL ImageList_Replace(HIMAGELIST, int, HBITMAP, HBITMAP); - int ImageList_ReplaceIcon(HIMAGELIST, int, HICON); - COLORREF ImageList_SetBkColor(HIMAGELIST, COLORREF); - BOOL ImageList_SetDragCursorImage(HIMAGELIST, int, int, int); - BOOL ImageList_SetIconSize(HIMAGELIST, int, int); - BOOL ImageList_SetOverlayImage(HIMAGELIST, int, int); - - //#ifdef _OBJIDL_H - HIMAGELIST ImageList_Read(LPSTREAM); - BOOL ImageList_Write(HIMAGELIST, LPSTREAM); - //#endif - - static if (_WIN32_IE >= 0x400) { - HIMAGELIST ImageList_Duplicate(HIMAGELIST himl); - } - - void InitCommonControls(); - - static if (_WIN32_IE >= 0x300) { - BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX); - } - - int LBItemFromPt(HWND, POINT, BOOL); + HDSA DSA_Create(INT, INT); + BOOL DSA_Destroy(HDSA); + VOID DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, PVOID); + PVOID DSA_GetItemPtr(HDSA, INT); + INT DSA_InsertItem(HDSA, INT, PVOID); + HDPA DPA_Create(INT); + BOOL DPA_Destroy(HDPA); + PVOID DPA_DeletePtr(HDPA, INT); + BOOL DPA_DeleteAllPtrs(HDPA); + VOID DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); + VOID DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); + BOOL DPA_SetPtr(HDPA, INT, PVOID); + INT DPA_InsertPtr(HDPA, INT, PVOID); + PVOID DPA_GetPtr(HDPA, INT_PTR); + BOOL DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM); + INT DPA_Search(HDPA, PVOID, INT, PFNDPACOMPARE, LPARAM, UINT); + BOOL Str_SetPtrW(LPWSTR*, LPCWSTR); + + static if (_WIN32_IE >= 0x400) { + BOOL FlatSB_EnableScrollBar(HWND, INT, UINT); + BOOL FlatSB_ShowScrollBar(HWND, INT, BOOL); + BOOL FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT); + BOOL FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO); + INT FlatSB_GetScrollPos(HWND, INT); + BOOL FlatSB_GetScrollProp(HWND, INT, LPINT); + version (Win64) { + BOOL FlatSB_GetScrollPropPtr(HWND, INT, PINT_PTR); + } else { + alias FlatSB_GetScrollProp FlatSB_GetScrollPropPtr; + } + INT FlatSB_SetScrollPos(HWND, INT, INT, BOOL); + INT FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL); + INT FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL); + BOOL FlatSB_SetScrollProp(HWND, UINT, INT_PTR, BOOL); + alias FlatSB_SetScrollProp FlatSB_SetScrollPropPtr; + BOOL InitializeFlatSB(HWND); + HRESULT UninitializeFlatSB(HWND); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR); + BOOL GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*); + BOOL RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR); + LRESULT DefSubclassProc(HWND, UINT, WPARAM, LPARAM); + INT DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, + COLORREF, INT, INT); + } + + int ImageList_Add(HIMAGELIST, HBITMAP, HBITMAP); + int ImageList_AddMasked(HIMAGELIST, HBITMAP, COLORREF); + BOOL ImageList_BeginDrag(HIMAGELIST, int, int, int); + HIMAGELIST ImageList_Create(int, int, UINT, int, int); + BOOL ImageList_Destroy(HIMAGELIST); + BOOL ImageList_DragEnter(HWND, int, int); + BOOL ImageList_DragLeave(HWND); + BOOL ImageList_DragMove(int, int); + BOOL ImageList_DragShowNolock(BOOL); + BOOL ImageList_Draw(HIMAGELIST, int, HDC, int, int, UINT); + BOOL ImageList_DrawEx(HIMAGELIST, int, HDC, int, int, int, int, COLORREF, + COLORREF, UINT); + void ImageList_EndDrag(); + COLORREF ImageList_GetBkColor(HIMAGELIST); + HIMAGELIST ImageList_GetDragImage(LPPOINT, LPPOINT); + HICON ImageList_GetIcon(HIMAGELIST, int, UINT); + BOOL ImageList_GetIconSize(HIMAGELIST, int*, int*); + int ImageList_GetImageCount(HIMAGELIST); + BOOL ImageList_GetImageInfo(HIMAGELIST, int, IMAGEINFO*); + HIMAGELIST ImageList_LoadImageA(HINSTANCE, LPCSTR, int, int, COLORREF, + UINT, UINT); + HIMAGELIST ImageList_LoadImageW(HINSTANCE, LPCWSTR, int, int, COLORREF, + UINT, UINT); + HIMAGELIST ImageList_Merge(HIMAGELIST, int, HIMAGELIST, int, int, int); + BOOL ImageList_Remove(HIMAGELIST, int); + BOOL ImageList_Replace(HIMAGELIST, int, HBITMAP, HBITMAP); + int ImageList_ReplaceIcon(HIMAGELIST, int, HICON); + COLORREF ImageList_SetBkColor(HIMAGELIST, COLORREF); + BOOL ImageList_SetDragCursorImage(HIMAGELIST, int, int, int); + BOOL ImageList_SetIconSize(HIMAGELIST, int, int); + BOOL ImageList_SetOverlayImage(HIMAGELIST, int, int); + + //#ifdef _OBJIDL_H + HIMAGELIST ImageList_Read(LPSTREAM); + BOOL ImageList_Write(HIMAGELIST, LPSTREAM); + //#endif + + static if (_WIN32_IE >= 0x400) { + HIMAGELIST ImageList_Duplicate(HIMAGELIST himl); + } + + void InitCommonControls(); + + static if (_WIN32_IE >= 0x300) { + BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX); + } + + int LBItemFromPt(HWND, POINT, BOOL); } int ImageList_AddIcon(HIMAGELIST himl, HICON hicon) { - return ImageList_ReplaceIcon(himl, -1, hicon); + return ImageList_ReplaceIcon(himl, -1, hicon); } HICON ImageList_ExtractIcon(HINSTANCE hi, HIMAGELIST himl, int i) { - return ImageList_GetIcon(himl, i, 0); + return ImageList_GetIcon(himl, i, 0); } HIMAGELIST ImageList_LoadBitmap(HINSTANCE hi, LPCTSTR lpbmp, int cx, - int cGrow, COLORREF crMask) { - return ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0); + int cGrow, COLORREF crMask) { + return ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0); } BOOL ImageList_RemoveAll(HIMAGELIST himl) { - return ImageList_Remove(himl, -1); + return ImageList_Remove(himl, -1); } COLORREF ListView_GetBkColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETBKCOLOR, 0, 0); + return cast(COLORREF) SendMessage(w, LVM_GETBKCOLOR, 0, 0); } HIMAGELIST ListView_GetImageList(HWND w, int i) { - return cast(HIMAGELIST) SendMessage(w, LVM_GETIMAGELIST, i, 0); + return cast(HIMAGELIST) SendMessage(w, LVM_GETIMAGELIST, i, 0); } int ListView_GetItemCount(HWND w) { - return cast(int) SendMessage(w, LVM_GETITEMCOUNT, 0, 0); + return cast(int) SendMessage(w, LVM_GETITEMCOUNT, 0, 0); } BOOL ListView_GetItem(HWND w, LPLVITEM pitem) { - return cast(BOOL) SendMessage(w, LVM_GETITEM, 0, cast(LPARAM) pitem); + return cast(BOOL) SendMessage(w, LVM_GETITEM, 0, cast(LPARAM) pitem); } BOOL ListView_SetBkColor(HWND w, COLORREF c) { - return cast(BOOL) SendMessage(w, LVM_SETBKCOLOR, 0, cast(LPARAM) c); + return cast(BOOL) SendMessage(w, LVM_SETBKCOLOR, 0, cast(LPARAM) c); } HIMAGELIST ListView_SetImageList(HWND w, HIMAGELIST h, int i) { - return cast(HIMAGELIST) SendMessage(w, LVM_SETIMAGELIST, i, - cast(LPARAM) h); + return cast(HIMAGELIST) SendMessage(w, LVM_SETIMAGELIST, i, + cast(LPARAM) h); } BOOL ListView_SetItem(HWND w, const(LV_ITEM)* i) { - return cast(BOOL) SendMessage(w, LVM_SETITEM, 0, cast(LPARAM) i); + return cast(BOOL) SendMessage(w, LVM_SETITEM, 0, cast(LPARAM) i); } int ListView_InsertItem(HWND w, const(LV_ITEM)* i) { - return cast(int) SendMessage(w, LVM_INSERTITEM, 0, cast(LPARAM) i); + return cast(int) SendMessage(w, LVM_INSERTITEM, 0, cast(LPARAM) i); } BOOL ListView_DeleteItem(HWND w, int i) { - return cast(BOOL) SendMessage(w, LVM_DELETEITEM, i, 0); + return cast(BOOL) SendMessage(w, LVM_DELETEITEM, i, 0); } BOOL ListView_DeleteAllItems(HWND w) { - return cast(BOOL) SendMessage(w, LVM_DELETEALLITEMS, 0, 0); + return cast(BOOL) SendMessage(w, LVM_DELETEALLITEMS, 0, 0); } UINT ListView_GetCallbackMask(HWND w) { - return cast(UINT) SendMessage(w, LVM_GETCALLBACKMASK, 0, 0); + return cast(UINT) SendMessage(w, LVM_GETCALLBACKMASK, 0, 0); } BOOL ListView_SetCallbackMask(HWND w, UINT m) { - return cast(BOOL) SendMessage(w, LVM_SETCALLBACKMASK, m, 0); + return cast(BOOL) SendMessage(w, LVM_SETCALLBACKMASK, m, 0); } int ListView_GetNextItem(HWND w, int i, UINT f) { - return cast(int) SendMessage(w, LVM_GETNEXTITEM, i, MAKELPARAM(cast(ushort)f, 0)); + return cast(int) SendMessage(w, LVM_GETNEXTITEM, i, MAKELPARAM(cast(ushort)f, 0)); } int ListView_FindItem(HWND w, int i, const(LV_FINDINFO)* p) { - return cast(int) SendMessage(w, LVM_FINDITEM, i, cast(LPARAM) p); + return cast(int) SendMessage(w, LVM_FINDITEM, i, cast(LPARAM) p); } BOOL ListView_GetItemRect(HWND w, int i, LPRECT p, int c) { - return cast(BOOL) SendMessage(w, LVM_GETITEMRECT, i, p ? - (p.left = c, cast(LPARAM) p) : 0); + return cast(BOOL) SendMessage(w, LVM_GETITEMRECT, i, p ? + (p.left = c, cast(LPARAM) p) : 0); } BOOL ListView_SetItemPosition(HWND w, int i, int x, int y) { - return cast(BOOL) SendMessage(w, LVM_SETITEMPOSITION, i, MAKELPARAM(cast(ushort)x, cast(ushort)y)); + return cast(BOOL) SendMessage(w, LVM_SETITEMPOSITION, i, MAKELPARAM(cast(ushort)x, cast(ushort)y)); } BOOL ListView_GetItemPosition(HWND w, int i, POINT* p) { - return cast(BOOL) SendMessage(w, LVM_GETITEMPOSITION, i, cast(LPARAM) p); + return cast(BOOL) SendMessage(w, LVM_GETITEMPOSITION, i, cast(LPARAM) p); } DWORD ListView_GetItemSpacing(HWND w, BOOL f) { - return cast(DWORD) SendMessage(w, LVM_GETITEMSPACING, f, 0); + return cast(DWORD) SendMessage(w, LVM_GETITEMSPACING, f, 0); } int ListView_GetStringWidth(HWND w, LPCSTR s) { - return cast(int) SendMessage(w, LVM_GETSTRINGWIDTH, 0, cast(LPARAM) s); + return cast(int) SendMessage(w, LVM_GETSTRINGWIDTH, 0, cast(LPARAM) s); } int ListView_HitTest(HWND w, LPLVHITTESTINFO p) { - return cast(int) SendMessage(w, LVM_HITTEST, 0, cast(LPARAM) p); + return cast(int) SendMessage(w, LVM_HITTEST, 0, cast(LPARAM) p); } BOOL ListView_EnsureVisible(HWND w, int i, BOOL f) { - return cast(BOOL) SendMessage(w, LVM_ENSUREVISIBLE, i, MAKELPARAM(cast(ushort)f, 0)); + return cast(BOOL) SendMessage(w, LVM_ENSUREVISIBLE, i, MAKELPARAM(cast(ushort)f, 0)); } BOOL ListView_Scroll(HWND w, int dx, int dy) { - return cast(BOOL) SendMessage(w, LVM_SCROLL, dx, dy); + return cast(BOOL) SendMessage(w, LVM_SCROLL, dx, dy); } BOOL ListView_RedrawItems(HWND w, int f, int l) { - return cast(BOOL) SendMessage(w, LVM_REDRAWITEMS, f, l); + return cast(BOOL) SendMessage(w, LVM_REDRAWITEMS, f, l); } BOOL ListView_Arrange(HWND w, UINT c) { - return cast(BOOL) SendMessage(w, LVM_ARRANGE, c, 0); + return cast(BOOL) SendMessage(w, LVM_ARRANGE, c, 0); } HWND ListView_EditLabel(HWND w, int i) { - return cast(HWND) SendMessage(w, LVM_EDITLABEL, i, 0); + return cast(HWND) SendMessage(w, LVM_EDITLABEL, i, 0); } HWND ListView_GetEditControl(HWND w) { - return cast(HWND) SendMessage(w, LVM_GETEDITCONTROL, 0, 0); + return cast(HWND) SendMessage(w, LVM_GETEDITCONTROL, 0, 0); } BOOL ListView_GetColumn(HWND w, int i, LPLVCOLUMN p) { - return cast(BOOL) SendMessage(w, LVM_GETCOLUMN, i, cast(LPARAM) p); + return cast(BOOL) SendMessage(w, LVM_GETCOLUMN, i, cast(LPARAM) p); } BOOL ListView_SetColumn(HWND w, int i, const(LV_COLUMN)* p) { - return cast(BOOL) SendMessage(w, LVM_SETCOLUMN, i, cast(LPARAM) p); + return cast(BOOL) SendMessage(w, LVM_SETCOLUMN, i, cast(LPARAM) p); } int ListView_InsertColumn(HWND w, int i, const(LV_COLUMN)* p) { - return cast(int) SendMessage(w, LVM_INSERTCOLUMN, i, cast(LPARAM) p); + return cast(int) SendMessage(w, LVM_INSERTCOLUMN, i, cast(LPARAM) p); } BOOL ListView_DeleteColumn(HWND w, int i) { - return cast(BOOL) SendMessage(w, LVM_DELETECOLUMN, i, 0); + return cast(BOOL) SendMessage(w, LVM_DELETECOLUMN, i, 0); } int ListView_GetColumnWidth(HWND w, int i) { - return cast(int) SendMessage(w, LVM_GETCOLUMNWIDTH, i, 0); + return cast(int) SendMessage(w, LVM_GETCOLUMNWIDTH, i, 0); } BOOL ListView_SetColumnWidth(HWND w, int i, int x) { - return cast(BOOL) SendMessage(w, LVM_SETCOLUMNWIDTH, i, MAKELPARAM(cast(ushort)x, 0)); + return cast(BOOL) SendMessage(w, LVM_SETCOLUMNWIDTH, i, MAKELPARAM(cast(ushort)x, 0)); } HIMAGELIST ListView_CreateDragImage(HWND w, int i, LPPOINT p) { - return cast(HIMAGELIST) SendMessage(w, LVM_CREATEDRAGIMAGE, i, - cast(LPARAM) p); + return cast(HIMAGELIST) SendMessage(w, LVM_CREATEDRAGIMAGE, i, + cast(LPARAM) p); } BOOL ListView_GetViewRect(HWND w, RECT* p) { - return cast(BOOL) SendMessage(w, LVM_GETVIEWRECT, 0, cast(LPARAM) p); + return cast(BOOL) SendMessage(w, LVM_GETVIEWRECT, 0, cast(LPARAM) p); } COLORREF ListView_GetTextColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETTEXTCOLOR, 0, 0); + return cast(COLORREF) SendMessage(w, LVM_GETTEXTCOLOR, 0, 0); } BOOL ListView_SetTextColor(HWND w, COLORREF c) { - return cast(BOOL) SendMessage(w, LVM_SETTEXTCOLOR, 0, cast(LPARAM) c); + return cast(BOOL) SendMessage(w, LVM_SETTEXTCOLOR, 0, cast(LPARAM) c); } COLORREF ListView_GetTextBkColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETTEXTBKCOLOR, 0, 0); + return cast(COLORREF) SendMessage(w, LVM_GETTEXTBKCOLOR, 0, 0); } BOOL ListView_SetTextBkColor(HWND w, COLORREF c) { - return cast(BOOL) SendMessage(w, LVM_SETTEXTBKCOLOR, 0, cast(LPARAM) c); + return cast(BOOL) SendMessage(w, LVM_SETTEXTBKCOLOR, 0, cast(LPARAM) c); } int ListView_GetTopIndex(HWND w) { - return cast(int) SendMessage(w, LVM_GETTOPINDEX, 0, 0); + return cast(int) SendMessage(w, LVM_GETTOPINDEX, 0, 0); } int ListView_GetCountPerPage(HWND w) { - return cast(int) SendMessage(w, LVM_GETCOUNTPERPAGE, 0, 0); + return cast(int) SendMessage(w, LVM_GETCOUNTPERPAGE, 0, 0); } BOOL ListView_GetOrigin(HWND w, LPPOINT p) { - return cast(BOOL) SendMessage(w, LVM_GETORIGIN, 0, cast(LPARAM) p); + return cast(BOOL) SendMessage(w, LVM_GETORIGIN, 0, cast(LPARAM) p); } BOOL ListView_Update(HWND w, WPARAM i) { - return cast(BOOL) SendMessage(w, LVM_UPDATE, i, 0); + return cast(BOOL) SendMessage(w, LVM_UPDATE, i, 0); } void ListView_SetItemState(HWND w, int i, UINT d, UINT m) { - LV_ITEM _lvi; - _lvi.stateMask = m; - _lvi.state = d; - SendMessage(w, LVM_SETITEMSTATE, i, cast(LPARAM) &_lvi); + LV_ITEM _lvi; + _lvi.stateMask = m; + _lvi.state = d; + SendMessage(w, LVM_SETITEMSTATE, i, cast(LPARAM) &_lvi); } UINT ListView_GetItemState(HWND w, int i, UINT m) { - return cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, m); + return cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, m); } void ListView_GetItemText(HWND w, int i, int iS, LPTSTR s, int n) { - LV_ITEM _lvi; - _lvi.iSubItem = iS; - _lvi.cchTextMax = n; - _lvi.pszText = s; - SendMessage(w, LVM_GETITEMTEXT, i, cast(LPARAM) &_lvi); + LV_ITEM _lvi; + _lvi.iSubItem = iS; + _lvi.cchTextMax = n; + _lvi.pszText = s; + SendMessage(w, LVM_GETITEMTEXT, i, cast(LPARAM) &_lvi); } void ListView_SetItemText(HWND w, int i, int iS, LPTSTR s) { - LV_ITEM _lvi; - _lvi.iSubItem = iS; - _lvi.pszText = s; - SendMessage(w, LVM_SETITEMTEXT, i, cast(LPARAM) &_lvi); + LV_ITEM _lvi; + _lvi.iSubItem = iS; + _lvi.pszText = s; + SendMessage(w, LVM_SETITEMTEXT, i, cast(LPARAM) &_lvi); } void ListView_SetItemCount(HWND w, int n) { - SendMessage(w, LVM_SETITEMCOUNT, n, 0); + SendMessage(w, LVM_SETITEMCOUNT, n, 0); } BOOL ListView_SortItems(HWND w, PFNLVCOMPARE f, LPARAM l) { - return cast(BOOL) SendMessage(w, LVM_SORTITEMS, l, cast(LPARAM) f); + return cast(BOOL) SendMessage(w, LVM_SORTITEMS, l, cast(LPARAM) f); } void ListView_SetItemPosition32(HWND w, int i, int x, int y) { - POINT p; - p.x = x; - p.y = y; - SendMessage(w, LVM_SETITEMPOSITION32, i, cast(LPARAM) &p); + POINT p; + p.x = x; + p.y = y; + SendMessage(w, LVM_SETITEMPOSITION32, i, cast(LPARAM) &p); } UINT ListView_GetSelectedCount(HWND w) { - return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOUNT, 0, 0); + return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOUNT, 0, 0); } UINT ListView_GetCheckState(HWND w, UINT i) { - return ((cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK)) >> 12) - 1; + return ((cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK)) >> 12) - 1; } void ListView_SetCheckState(HWND w, UINT i, BOOL f) { - ListView_SetItemState(w, i, INDEXTOSTATEIMAGEMASK(f ? 2 : 1), - LVIS_STATEIMAGEMASK); + ListView_SetItemState(w, i, INDEXTOSTATEIMAGEMASK(f ? 2 : 1), + LVIS_STATEIMAGEMASK); } BOOL ListView_GetISearchString(HWND w, LPSTR lpsz) { - return cast(BOOL) SendMessage(w, LVM_GETISEARCHSTRING, 0, - cast(LPARAM) lpsz); + return cast(BOOL) SendMessage(w, LVM_GETISEARCHSTRING, 0, + cast(LPARAM) lpsz); } void ListView_CancelEditLabel(HWND w) { - SendMessage(w, LVM_CANCELEDITLABEL, 0, 0); + SendMessage(w, LVM_CANCELEDITLABEL, 0, 0); } int ListView_EnableGroupView(HWND w, BOOL i) { - return cast(int) SendMessage(w, LVM_ENABLEGROUPVIEW, i, 0); + return cast(int) SendMessage(w, LVM_ENABLEGROUPVIEW, i, 0); } //static if (_WIN32_WINNT >= 0x500 || _WIN32_IE >= 0x500) { - BOOL ListView_SortItemsEx(HWND w, PFNLVCOMPARE c, LPARAM p) { - return cast(BOOL) SendMessage(w, LVM_SORTITEMSEX, cast(WPARAM) p, cast(LPARAM)c); - } + BOOL ListView_SortItemsEx(HWND w, PFNLVCOMPARE c, LPARAM p) { + return cast(BOOL) SendMessage(w, LVM_SORTITEMSEX, cast(WPARAM) p, cast(LPARAM)c); + } //} static if (_WIN32_WINNT >= 0x501) { - int ListView_GetGroupInfo(HWND w, int i, PLVGROUP p) { - return cast(int) SendMessage(w, LVM_GETGROUPINFO, i, cast(LPARAM) p); - } - - void ListView_GetGroupMetrics(HWND w, PLVGROUPMETRICS p) { - SendMessage(w, LVM_GETGROUPMETRICS, 0, cast(LPARAM) p); - } - - BOOL ListView_GetInsertMark(HWND w, PLVINSERTMARK p) { - return cast(BOOL) SendMessage(w, LVM_GETINSERTMARK, 0, cast(LPARAM) p); - } - - COLORREF ListView_GetInsertMarkColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETINSERTMARKCOLOR, 0, 0); - } - - int ListView_GetInsertMarkRect(HWND w, LPRECT p) { - return cast(int) SendMessage(w, LVM_GETINSERTMARKRECT, 0, cast(LPARAM) p); - } - - COLORREF ListView_GetOutlineColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETOUTLINECOLOR, 0, 0); - } + int ListView_GetGroupInfo(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_GETGROUPINFO, i, cast(LPARAM) p); + } + + void ListView_GetGroupMetrics(HWND w, PLVGROUPMETRICS p) { + SendMessage(w, LVM_GETGROUPMETRICS, 0, cast(LPARAM) p); + } + + BOOL ListView_GetInsertMark(HWND w, PLVINSERTMARK p) { + return cast(BOOL) SendMessage(w, LVM_GETINSERTMARK, 0, cast(LPARAM) p); + } + + COLORREF ListView_GetInsertMarkColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETINSERTMARKCOLOR, 0, 0); + } + + int ListView_GetInsertMarkRect(HWND w, LPRECT p) { + return cast(int) SendMessage(w, LVM_GETINSERTMARKRECT, 0, cast(LPARAM) p); + } + + COLORREF ListView_GetOutlineColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETOUTLINECOLOR, 0, 0); + } - UINT ListView_GetSelectedColumn(HWND w) { - return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOLUMN, 0, 0); - } + UINT ListView_GetSelectedColumn(HWND w) { + return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOLUMN, 0, 0); + } - void ListView_GetTileInfo(HWND w, PLVTILEINFO p) { - SendMessage(w, LVM_GETTILEINFO, 0, cast(LPARAM) p); - } + void ListView_GetTileInfo(HWND w, PLVTILEINFO p) { + SendMessage(w, LVM_GETTILEINFO, 0, cast(LPARAM) p); + } - void ListView_GetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { - SendMessage(w, LVM_GETTILEVIEWINFO, 0, cast(LPARAM) p); - } + void ListView_GetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { + SendMessage(w, LVM_GETTILEVIEWINFO, 0, cast(LPARAM) p); + } - DWORD ListView_GetView(HWND w) { - return cast(DWORD) SendMessage(w, LVM_GETVIEW, 0, 0); - } + DWORD ListView_GetView(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETVIEW, 0, 0); + } - BOOL ListView_HasGroup(HWND w, int i) { - return cast(BOOL) SendMessage(w, LVM_HASGROUP, i, 0); - } + BOOL ListView_HasGroup(HWND w, int i) { + return cast(BOOL) SendMessage(w, LVM_HASGROUP, i, 0); + } - int ListView_InsertGroup(HWND w, int i, PLVGROUP p) { - return cast(int) SendMessage(w, LVM_INSERTGROUP, i, cast(LPARAM) p); - } + int ListView_InsertGroup(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_INSERTGROUP, i, cast(LPARAM) p); + } - void ListView_InsertGroupSorted(HWND w, PLVINSERTGROUPSORTED p) { - SendMessage(w, LVM_INSERTGROUPSORTED, cast(WPARAM) p, 0); - } + void ListView_InsertGroupSorted(HWND w, PLVINSERTGROUPSORTED p) { + SendMessage(w, LVM_INSERTGROUPSORTED, cast(WPARAM) p, 0); + } - BOOL ListView_InsertMarkHitTest(HWND w, LPPOINT p, PLVINSERTMARK t) { - return cast(BOOL) SendMessage(w, LVM_INSERTMARKHITTEST, cast(WPARAM) p, cast(LPARAM) t); - } + BOOL ListView_InsertMarkHitTest(HWND w, LPPOINT p, PLVINSERTMARK t) { + return cast(BOOL) SendMessage(w, LVM_INSERTMARKHITTEST, cast(WPARAM) p, cast(LPARAM) t); + } - BOOL ListView_IsGroupViewEnabled(HWND w) { - return cast(BOOL) SendMessage(w, LVM_ISGROUPVIEWENABLED, 0, 0); - } + BOOL ListView_IsGroupViewEnabled(HWND w) { + return cast(BOOL) SendMessage(w, LVM_ISGROUPVIEWENABLED, 0, 0); + } - UINT ListView_MapIDToIndex(HWND w, UINT i) { - return cast(UINT) SendMessage(w, LVM_MAPIDTOINDEX, i, 0); - } + UINT ListView_MapIDToIndex(HWND w, UINT i) { + return cast(UINT) SendMessage(w, LVM_MAPIDTOINDEX, i, 0); + } - /* ??? MSDN documents this as "Not implemented", except in relation to - * Windows CE/Mobile. - */ - void ListView_MoveGroup(HWND w, int i, int t) { - SendMessage(w, LVM_MOVEGROUP, i, t); - } + /* ??? MSDN documents this as "Not implemented", except in relation to + * Windows CE/Mobile. + */ + void ListView_MoveGroup(HWND w, int i, int t) { + SendMessage(w, LVM_MOVEGROUP, i, t); + } - void ListView_RemoveAllGroups(HWND w) { - SendMessage(w, LVM_REMOVEALLGROUPS, 0, 0); - } + void ListView_RemoveAllGroups(HWND w) { + SendMessage(w, LVM_REMOVEALLGROUPS, 0, 0); + } - int ListView_RemoveGroup(HWND w, int i) { - return cast(int) SendMessage(w, LVM_REMOVEGROUP, i, 0); - } + int ListView_RemoveGroup(HWND w, int i) { + return cast(int) SendMessage(w, LVM_REMOVEGROUP, i, 0); + } - int ListView_SetGroupInfo(HWND w, int i, PLVGROUP p) { - return cast(int) SendMessage(w, LVM_SETGROUPINFO, i, cast(LPARAM) p); - } + int ListView_SetGroupInfo(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_SETGROUPINFO, i, cast(LPARAM) p); + } - void ListView_SetGroupMetrics(HWND w, PLVGROUPMETRICS p) { - SendMessage(w, LVM_SETGROUPMETRICS, 0, cast(LPARAM) p); - } + void ListView_SetGroupMetrics(HWND w, PLVGROUPMETRICS p) { + SendMessage(w, LVM_SETGROUPMETRICS, 0, cast(LPARAM) p); + } - BOOL ListView_SetInfoTip(HWND w, PLVSETINFOTIP p) { - return cast(BOOL) SendMessage(w, LVM_SETINFOTIP, 0, cast(LPARAM) p); - } + BOOL ListView_SetInfoTip(HWND w, PLVSETINFOTIP p) { + return cast(BOOL) SendMessage(w, LVM_SETINFOTIP, 0, cast(LPARAM) p); + } - BOOL ListView_SetInsertMark(HWND w, PLVINSERTMARK p) { - return cast(BOOL) SendMessage(w, LVM_SETINSERTMARK, 0, cast(LPARAM) p); - } + BOOL ListView_SetInsertMark(HWND w, PLVINSERTMARK p) { + return cast(BOOL) SendMessage(w, LVM_SETINSERTMARK, 0, cast(LPARAM) p); + } - COLORREF ListView_SetInsertMarkColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, LVM_SETINSERTMARKCOLOR, 0, c); - } + COLORREF ListView_SetInsertMarkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, LVM_SETINSERTMARKCOLOR, 0, c); + } - COLORREF ListView_SetOutlineColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, LVM_SETOUTLINECOLOR, 0, c); - } + COLORREF ListView_SetOutlineColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, LVM_SETOUTLINECOLOR, 0, c); + } - void ListView_SetSelectedColumn(HWND w, int i) { - SendMessage(w, LVM_SETSELECTEDCOLUMN, i, 0); - } + void ListView_SetSelectedColumn(HWND w, int i) { + SendMessage(w, LVM_SETSELECTEDCOLUMN, i, 0); + } - BOOL ListView_SetTileInfo(HWND w, PLVTILEINFO p) { - return cast(BOOL) SendMessage(w, LVM_SETTILEINFO, 0, cast(LPARAM) p); - } + BOOL ListView_SetTileInfo(HWND w, PLVTILEINFO p) { + return cast(BOOL) SendMessage(w, LVM_SETTILEINFO, 0, cast(LPARAM) p); + } - BOOL ListView_SetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { - return cast(BOOL) SendMessage(w, LVM_SETTILEVIEWINFO, 0, cast(LPARAM) p); - } + BOOL ListView_SetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { + return cast(BOOL) SendMessage(w, LVM_SETTILEVIEWINFO, 0, cast(LPARAM) p); + } - int ListView_SetView(HWND w, DWORD i) { - return cast(int) SendMessage(w, LVM_SETVIEW, i, 0); - } + int ListView_SetView(HWND w, DWORD i) { + return cast(int) SendMessage(w, LVM_SETVIEW, i, 0); + } - int ListView_SortGroups(HWND w, PFNLVGROUPCOMPARE c, LPVOID p) { - return cast(int) SendMessage(w, LVM_SORTGROUPS, cast(WPARAM) c, cast(LPARAM) p); - } + int ListView_SortGroups(HWND w, PFNLVGROUPCOMPARE c, LPVOID p) { + return cast(int) SendMessage(w, LVM_SORTGROUPS, cast(WPARAM) c, cast(LPARAM) p); + } } static if (_WIN32_WINNT >= 0x501) { - enum { - CBM_FIRST = 0x1700, - CB_SETMINVISIBLE = CBM_FIRST + 1, - CB_GETMINVISIBLE = CBM_FIRST + 2, + enum { + CBM_FIRST = 0x1700, + CB_SETMINVISIBLE = CBM_FIRST + 1, + CB_GETMINVISIBLE = CBM_FIRST + 2, CB_SETCUEBANNER = CBM_FIRST + 3, CB_GETCUEBANNER = CBM_FIRST + 4, - } + } - BOOL ComboBox_SetMinVisible(HWND w, INT i) { - return cast(BOOL) SendMessage(w, CB_SETMINVISIBLE, cast(WPARAM) i, 0); - } + BOOL ComboBox_SetMinVisible(HWND w, INT i) { + return cast(BOOL) SendMessage(w, CB_SETMINVISIBLE, cast(WPARAM) i, 0); + } - int ComboBox_GetMinVisible(HWND w) { - return cast(int) SendMessage(w, CB_GETMINVISIBLE, 0, 0); - } + int ComboBox_GetMinVisible(HWND w) { + return cast(int) SendMessage(w, CB_GETMINVISIBLE, 0, 0); + } } extern (Windows) BOOL MakeDragList(HWND); @@ -5633,306 +5633,306 @@ extern (Windows) void MenuHelp(UINT, WPARAM, LPARAM, HMENU, HINSTANCE, HWND, PUINT); COLORREF MonthCal_GetColor(HWND hwnd, INT icolor) { - return cast(COLORREF) SendMessage(hwnd, MCM_GETCOLOR, - cast(WPARAM) icolor, 0); + return cast(COLORREF) SendMessage(hwnd, MCM_GETCOLOR, + cast(WPARAM) icolor, 0); } BOOL MonthCal_GetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { - return cast(BOOL) SendMessage(hwnd, MCM_GETCURSEL, 0, - cast(LPARAM) lpsystime); + return cast(BOOL) SendMessage(hwnd, MCM_GETCURSEL, 0, + cast(LPARAM) lpsystime); } DWORD MonthCal_GetFirstDayOfWeek(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, MCM_GETFIRSTDAYOFWEEK, 0, 0); + return cast(DWORD) SendMessage(hwnd, MCM_GETFIRSTDAYOFWEEK, 0, 0); } DWORD MonthCal_GetMaxSelCount(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, MCM_GETMAXSELCOUNT, 0, 0); + return cast(DWORD) SendMessage(hwnd, MCM_GETMAXSELCOUNT, 0, 0); } DWORD MonthCal_GetMaxTodayWidth(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, MCM_GETMAXTODAYWIDTH, 0, 0); + return cast(DWORD) SendMessage(hwnd, MCM_GETMAXTODAYWIDTH, 0, 0); } BOOL MonthCal_GetMinReqRect(HWND hwnd, LPRECT lpRectInfo) { - return cast(BOOL) SendMessage(hwnd, MCM_GETMINREQRECT, 0, - cast(LPARAM) lpRectInfo); + return cast(BOOL) SendMessage(hwnd, MCM_GETMINREQRECT, 0, + cast(LPARAM) lpRectInfo); } INT MonthCal_GetMonthDelta(HWND hwnd) { - return cast(INT) SendMessage(hwnd, MCM_GETMONTHDELTA, 0, 0); + return cast(INT) SendMessage(hwnd, MCM_GETMONTHDELTA, 0, 0); } INT MonthCal_GetMonthRange(HWND hwnd, DWORD flag, LPSYSTEMTIME systimearray) { - return cast(INT) SendMessage(hwnd, MCM_GETMONTHRANGE, cast(WPARAM) flag, - cast(LPARAM) systimearray); + return cast(INT) SendMessage(hwnd, MCM_GETMONTHRANGE, cast(WPARAM) flag, + cast(LPARAM) systimearray); } DWORD MonthCal_GetRange(HWND hwnd, LPSYSTEMTIME systimearray) { - return cast(DWORD) SendMessage(hwnd, MCM_GETRANGE, 0, - cast(LPARAM) systimearray); + return cast(DWORD) SendMessage(hwnd, MCM_GETRANGE, 0, + cast(LPARAM) systimearray); } BOOL MonthCal_GetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { - return cast(BOOL) SendMessage(hwnd, MCM_GETSELRANGE, 0, - cast(LPARAM) systimearray); + return cast(BOOL) SendMessage(hwnd, MCM_GETSELRANGE, 0, + cast(LPARAM) systimearray); } BOOL MonthCal_GetToday(HWND hwnd, LPSYSTEMTIME systime) { - return cast(BOOL) SendMessage(hwnd, MCM_GETTODAY, 0, - cast(LPARAM) systime); + return cast(BOOL) SendMessage(hwnd, MCM_GETTODAY, 0, + cast(LPARAM) systime); } BOOL MonthCal_GetUnicodeFormat(HWND hwnd) { - return cast(BOOL) SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0); + return cast(BOOL) SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0); } DWORD MonthCal_HitTest(HWND hwnd, PMCHITTESTINFO pmchittest) { - return cast(DWORD) SendMessage(hwnd, MCM_HITTEST, 0, - cast(LPARAM) pmchittest); + return cast(DWORD) SendMessage(hwnd, MCM_HITTEST, 0, + cast(LPARAM) pmchittest); } COLORREF MonthCal_SetColor(HWND hwnd, INT icolor, COLORREF clr) { - return cast(COLORREF) SendMessage(hwnd, MCM_SETCOLOR, cast(WPARAM) icolor, - cast(LPARAM) clr); + return cast(COLORREF) SendMessage(hwnd, MCM_SETCOLOR, cast(WPARAM) icolor, + cast(LPARAM) clr); } BOOL MonthCal_SetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { - return cast(BOOL) SendMessage(hwnd, MCM_SETCURSEL, 0, - cast(LPARAM) lpsystime); + return cast(BOOL) SendMessage(hwnd, MCM_SETCURSEL, 0, + cast(LPARAM) lpsystime); } BOOL MonthCal_SetDayState(HWND hwnd, INT imonths, LPMONTHDAYSTATE lpdatestatearray) { - return cast(BOOL) SendMessage(hwnd, MCM_SETDAYSTATE, cast(WPARAM) imonths, - cast(LPARAM) lpdatestatearray); + return cast(BOOL) SendMessage(hwnd, MCM_SETDAYSTATE, cast(WPARAM) imonths, + cast(LPARAM) lpdatestatearray); } DWORD MonthCal_SetFirstDayOfWeek(HWND hwnd, INT iday) { - return cast(DWORD) SendMessage(hwnd, MCM_SETFIRSTDAYOFWEEK, 0, - cast(LPARAM) iday); + return cast(DWORD) SendMessage(hwnd, MCM_SETFIRSTDAYOFWEEK, 0, + cast(LPARAM) iday); } BOOL MonthCal_SetMaxSelCount(HWND hwnd, UINT imax) { - return cast(BOOL) SendMessage(hwnd, MCM_SETMAXSELCOUNT, - cast(WPARAM) imax, 0); + return cast(BOOL) SendMessage(hwnd, MCM_SETMAXSELCOUNT, + cast(WPARAM) imax, 0); } INT MonthCal_SetMonthDelta(HWND hwnd, INT idelta) { - return cast(INT) SendMessage(hwnd, MCM_SETMONTHDELTA, cast(WPARAM) idelta, 0); + return cast(INT) SendMessage(hwnd, MCM_SETMONTHDELTA, cast(WPARAM) idelta, 0); } BOOL MonthCal_SetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { - return cast(BOOL) SendMessage(hwnd, MCM_SETSELRANGE, 0, - cast(LPARAM) systimearray); + return cast(BOOL) SendMessage(hwnd, MCM_SETSELRANGE, 0, + cast(LPARAM) systimearray); } void MonthCal_SetToday(HWND hwnd, LPSYSTEMTIME systime) { - SendMessage(hwnd, MCM_SETTODAY, 0, cast(LPARAM) systime); + SendMessage(hwnd, MCM_SETTODAY, 0, cast(LPARAM) systime); } BOOL MonthCal_SetUnicodeFormat(HWND hwnd, BOOL unicode) { - return cast(BOOL) SendMessage(hwnd, MCM_SETUNICODEFORMAT, - cast(WPARAM) unicode, 0); + return cast(BOOL) SendMessage(hwnd, MCM_SETUNICODEFORMAT, + cast(WPARAM) unicode, 0); } BOOL MonthCal_SetRange(HWND w, DWORD f, LPSYSTEMTIME st) { - return cast(BOOL) SendMessage(w, MCM_SETRANGE, cast(WPARAM) f, - cast(LPARAM) st); + return cast(BOOL) SendMessage(w, MCM_SETRANGE, cast(WPARAM) f, + cast(LPARAM) st); } extern (Windows) BOOL ShowHideMenuCtl(HWND, UINT_PTR, PINT); BOOL TabCtrl_GetItem(HWND w, int i, LPTCITEM p) { - return cast(BOOL) SendMessage(w, TCM_GETITEM, i, cast(LPARAM) p); + return cast(BOOL) SendMessage(w, TCM_GETITEM, i, cast(LPARAM) p); } BOOL TabCtrl_SetItem(HWND w, int i, LPTCITEM p) { - return cast(BOOL) SendMessage(w, TCM_SETITEM, i, cast(LPARAM) p); + return cast(BOOL) SendMessage(w, TCM_SETITEM, i, cast(LPARAM) p); } int TabCtrl_InsertItem(HWND w, int i, const(TC_ITEM)* p) { - return cast(int) SendMessage(w, TCM_INSERTITEM, i, cast(LPARAM) p); + return cast(int) SendMessage(w, TCM_INSERTITEM, i, cast(LPARAM) p); } BOOL TabCtrl_DeleteItem(HWND w, int i) { - return cast(BOOL) SendMessage(w, TCM_DELETEITEM, i, 0); + return cast(BOOL) SendMessage(w, TCM_DELETEITEM, i, 0); } BOOL TabCtrl_DeleteAllItems(HWND w) { - return cast(BOOL) SendMessage(w, TCM_DELETEALLITEMS, 0, 0); + return cast(BOOL) SendMessage(w, TCM_DELETEALLITEMS, 0, 0); } BOOL TabCtrl_GetItemRect(HWND w, int i, LPRECT p) { - return cast(BOOL) SendMessage(w, TCM_GETITEMRECT, i, cast(LPARAM) p); + return cast(BOOL) SendMessage(w, TCM_GETITEMRECT, i, cast(LPARAM) p); } int TabCtrl_GetCurSel(HWND w) { - return cast(int) SendMessage(w, TCM_GETCURSEL, 0, 0); + return cast(int) SendMessage(w, TCM_GETCURSEL, 0, 0); } int TabCtrl_SetCurSel(HWND w, int i) { - return cast(int) SendMessage(w, TCM_SETCURSEL, i, 0); + return cast(int) SendMessage(w, TCM_SETCURSEL, i, 0); } int TabCtrl_HitTest(HWND w, LPTCHITTESTINFO p) { - return cast(int) SendMessage(w, TCM_HITTEST, 0, cast(LPARAM) p); + return cast(int) SendMessage(w, TCM_HITTEST, 0, cast(LPARAM) p); } BOOL TabCtrl_SetItemExtra(HWND w, int c) { - return cast(BOOL) SendMessage(w, TCM_SETITEMEXTRA, c, 0); + return cast(BOOL) SendMessage(w, TCM_SETITEMEXTRA, c, 0); } int TabCtrl_AdjustRect(HWND w, BOOL b, LPRECT p) { - return cast(int) SendMessage(w, TCM_ADJUSTRECT, b, cast(LPARAM) p); + return cast(int) SendMessage(w, TCM_ADJUSTRECT, b, cast(LPARAM) p); } DWORD TabCtrl_SetItemSize(HWND w, int x, int y) { - return cast(DWORD) SendMessage(w, TCM_SETITEMSIZE, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); + return cast(DWORD) SendMessage(w, TCM_SETITEMSIZE, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); } void TabCtrl_RemoveImage(HWND w, int i) { - SendMessage(w, TCM_REMOVEIMAGE, i, 0); + SendMessage(w, TCM_REMOVEIMAGE, i, 0); } void TabCtrl_SetPadding(HWND w, int x, int y) { - SendMessage(w, TCM_SETPADDING, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); + SendMessage(w, TCM_SETPADDING, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); } int TabCtrl_GetRowCount(HWND w) { - return cast(int) SendMessage(w, TCM_GETROWCOUNT, 0, 0); + return cast(int) SendMessage(w, TCM_GETROWCOUNT, 0, 0); } HWND TabCtrl_GetToolTips(HWND w) { - return cast(HWND) SendMessage(w, TCM_GETTOOLTIPS, 0, 0); + return cast(HWND) SendMessage(w, TCM_GETTOOLTIPS, 0, 0); } void TabCtrl_SetToolTips(HWND w, HWND t) { - SendMessage(w, TCM_SETTOOLTIPS, cast(WPARAM) t, 0); + SendMessage(w, TCM_SETTOOLTIPS, cast(WPARAM) t, 0); } int TabCtrl_GetCurFocus(HWND w) { - return cast(int) SendMessage(w, TCM_GETCURFOCUS, 0, 0); + return cast(int) SendMessage(w, TCM_GETCURFOCUS, 0, 0); } void TabCtrl_SetCurFocus(HWND w, int i) { - SendMessage(w, TCM_SETCURFOCUS, i, 0); + SendMessage(w, TCM_SETCURFOCUS, i, 0); } HIMAGELIST TabCtrl_GetImageList(HWND w) { - return cast(HIMAGELIST) SendMessage(w, TCM_GETIMAGELIST, 0, 0); + return cast(HIMAGELIST) SendMessage(w, TCM_GETIMAGELIST, 0, 0); } HIMAGELIST TabCtrl_SetImageList(HWND w, HIMAGELIST h) { - return cast(HIMAGELIST) SendMessage(w, TCM_SETIMAGELIST, 0, - cast(LPARAM) h); + return cast(HIMAGELIST) SendMessage(w, TCM_SETIMAGELIST, 0, + cast(LPARAM) h); } int TabCtrl_GetItemCount(HWND w) { - return cast(int) SendMessage(w, TCM_GETITEMCOUNT, 0, 0); + return cast(int) SendMessage(w, TCM_GETITEMCOUNT, 0, 0); } extern (Windows) BOOL _TrackMouseEvent(LPTRACKMOUSEEVENT); HTREEITEM TreeView_InsertItem(HWND w, LPTVINSERTSTRUCT i) { - return cast(HTREEITEM) SendMessage(w, TVM_INSERTITEM, 0, cast(LPARAM) i); + return cast(HTREEITEM) SendMessage(w, TVM_INSERTITEM, 0, cast(LPARAM) i); } BOOL TreeView_DeleteItem(HWND w, HTREEITEM i) { - return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) i); + return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) i); } BOOL TreeView_DeleteAllItems(HWND w) { - return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) TVI_ROOT); + return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) TVI_ROOT); } BOOL TreeView_Expand(HWND w, HTREEITEM i, UINT c) { - return cast(BOOL) SendMessage(w, TVM_EXPAND, c, cast(LPARAM) i); + return cast(BOOL) SendMessage(w, TVM_EXPAND, c, cast(LPARAM) i); } BOOL TreeView_GetItemRect(HWND w, HTREEITEM i, LPRECT p, BOOL c) { - *cast(HTREEITEM*) p = i; - return cast(BOOL) SendMessage(w, TVM_GETITEMRECT, c, cast(LPARAM) p); + *cast(HTREEITEM*) p = i; + return cast(BOOL) SendMessage(w, TVM_GETITEMRECT, c, cast(LPARAM) p); } UINT TreeView_GetCount(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETCOUNT, 0, 0); + return cast(UINT) SendMessage(w, TVM_GETCOUNT, 0, 0); } UINT TreeView_GetIndent(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETINDENT, 0, 0); + return cast(UINT) SendMessage(w, TVM_GETINDENT, 0, 0); } BOOL TreeView_SetIndent(HWND w, INT i) { - return cast(BOOL) SendMessage(w, TVM_SETINDENT, i, 0); + return cast(BOOL) SendMessage(w, TVM_SETINDENT, i, 0); } HIMAGELIST TreeView_GetImageList(HWND w, INT i) { - return cast(HIMAGELIST) SendMessage(w, TVM_GETIMAGELIST, i, 0); + return cast(HIMAGELIST) SendMessage(w, TVM_GETIMAGELIST, i, 0); } HIMAGELIST TreeView_SetImageList(HWND w, HIMAGELIST h, INT i) { - return cast(HIMAGELIST) SendMessage(w, TVM_SETIMAGELIST, i, - cast(LPARAM) h); + return cast(HIMAGELIST) SendMessage(w, TVM_SETIMAGELIST, i, + cast(LPARAM) h); } HTREEITEM TreeView_GetNextItem(HWND w, HTREEITEM i, UINT c) { - return cast(HTREEITEM) SendMessage(w, TVM_GETNEXTITEM, c, cast(LPARAM) i); + return cast(HTREEITEM) SendMessage(w, TVM_GETNEXTITEM, c, cast(LPARAM) i); } HTREEITEM TreeView_GetChild(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_CHILD); + return TreeView_GetNextItem(w, i, TVGN_CHILD); } HTREEITEM TreeView_GetNextSibling(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_NEXT); + return TreeView_GetNextItem(w, i, TVGN_NEXT); } HTREEITEM TreeView_GetPrevSibling(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_PREVIOUS); + return TreeView_GetNextItem(w, i, TVGN_PREVIOUS); } HTREEITEM TreeView_GetParent(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_PARENT); + return TreeView_GetNextItem(w, i, TVGN_PARENT); } HTREEITEM TreeView_GetFirstVisible(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_FIRSTVISIBLE); + return TreeView_GetNextItem(w, null, TVGN_FIRSTVISIBLE); } HTREEITEM TreeView_GetNextVisible(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_NEXTVISIBLE); + return TreeView_GetNextItem(w, i, TVGN_NEXTVISIBLE); } HTREEITEM TreeView_GetPrevVisible(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_PREVIOUSVISIBLE); + return TreeView_GetNextItem(w, i, TVGN_PREVIOUSVISIBLE); } HTREEITEM TreeView_GetSelection(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_CARET); + return TreeView_GetNextItem(w, null, TVGN_CARET); } HTREEITEM TreeView_GetDropHilight(HTREEITEM w) { - return TreeView_GetNextItem(w, null, TVGN_DROPHILITE); + return TreeView_GetNextItem(w, null, TVGN_DROPHILITE); } HTREEITEM TreeView_GetRoot(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_ROOT); + return TreeView_GetNextItem(w, null, TVGN_ROOT); } BOOL TreeView_Select(HWND w, HTREEITEM i, UINT c) { - return cast(BOOL) SendMessage(w, TVM_SELECTITEM, c, cast(LPARAM) i); + return cast(BOOL) SendMessage(w, TVM_SELECTITEM, c, cast(LPARAM) i); } BOOL TreeView_SelectItem(HWND w, HTREEITEM i) { - return TreeView_Select(w, i, TVGN_CARET); + return TreeView_Select(w, i, TVGN_CARET); } BOOL TreeView_SelectDropTarget(HWND w, HTREEITEM i) { - return TreeView_Select(w, i, TVGN_DROPHILITE); + return TreeView_Select(w, i, TVGN_DROPHILITE); } BOOL TreeView_SelectSetFirstVisible(HWND w, HTREEITEM i) { - return TreeView_Select(w, i, TVGN_FIRSTVISIBLE); + return TreeView_Select(w, i, TVGN_FIRSTVISIBLE); } BOOL TreeView_GetItem(HWND w, LPTVITEM i) { @@ -5940,312 +5940,312 @@ BOOL TreeView_GetItem(HWND w, LPTVITEM i) { } BOOL TreeView_SetItem(HWND w, const(TV_ITEM)* i) { - return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) i); + return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) i); } HWND TreeView_EditLabel(HWND w, HTREEITEM i) { - return cast(HWND) SendMessage(w, TVM_EDITLABEL, 0, cast(LPARAM) i); + return cast(HWND) SendMessage(w, TVM_EDITLABEL, 0, cast(LPARAM) i); } HWND TreeView_GetEditControl(HWND w) { - return cast(HWND) SendMessage(w, TVM_GETEDITCONTROL, 0, 0); + return cast(HWND) SendMessage(w, TVM_GETEDITCONTROL, 0, 0); } UINT TreeView_GetVisibleCount(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETVISIBLECOUNT, 0, 0); + return cast(UINT) SendMessage(w, TVM_GETVISIBLECOUNT, 0, 0); } HTREEITEM TreeView_HitTest(HWND w, LPTVHITTESTINFO p) { - return cast(HTREEITEM) SendMessage(w, TVM_HITTEST, 0, cast(LPARAM) p); + return cast(HTREEITEM) SendMessage(w, TVM_HITTEST, 0, cast(LPARAM) p); } HIMAGELIST TreeView_CreateDragImage(HWND w, HTREEITEM i) { - return cast(HIMAGELIST) SendMessage(w, TVM_CREATEDRAGIMAGE, 0, - cast(LPARAM) i); + return cast(HIMAGELIST) SendMessage(w, TVM_CREATEDRAGIMAGE, 0, + cast(LPARAM) i); } BOOL TreeView_SortChildren(HWND w, HTREEITEM i, BOOL r) { - return cast(BOOL) SendMessage(w, TVM_SORTCHILDREN, r, cast(LPARAM) i); + return cast(BOOL) SendMessage(w, TVM_SORTCHILDREN, r, cast(LPARAM) i); } BOOL TreeView_EnsureVisible(HWND w, HTREEITEM i) { - return cast(BOOL) SendMessage(w, TVM_ENSUREVISIBLE, 0, cast(LPARAM) i); + return cast(BOOL) SendMessage(w, TVM_ENSUREVISIBLE, 0, cast(LPARAM) i); } BOOL TreeView_SortChildrenCB(HWND w, LPTVSORTCB s, BOOL r) { - return cast(BOOL) SendMessage(w, TVM_SORTCHILDRENCB, r, cast(LPARAM) s); + return cast(BOOL) SendMessage(w, TVM_SORTCHILDRENCB, r, cast(LPARAM) s); } BOOL TreeView_EndEditLabelNow(HWND w, BOOL f) { - return cast(BOOL) SendMessage(w, TVM_ENDEDITLABELNOW, f, 0); + return cast(BOOL) SendMessage(w, TVM_ENDEDITLABELNOW, f, 0); } BOOL TreeView_GetISearchString(HWND w, LPTSTR s) { - return cast(BOOL) SendMessage(w, TVM_GETISEARCHSTRING, 0, cast(LPARAM) s); + return cast(BOOL) SendMessage(w, TVM_GETISEARCHSTRING, 0, cast(LPARAM) s); } static if (_WIN32_IE >= 0x300) { - DWORD ListView_ApproximateViewRect(HWND w, int iw, int ih, int i) { - return cast(DWORD) SendMessage(w, LVM_APPROXIMATEVIEWRECT, i, - MAKELPARAM(cast(ushort)iw, cast(ushort)ih)); - } - - DWORD ListView_SetExtendedListViewStyle(HWND w, DWORD s) { - return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, s); - } - - DWORD ListView_GetExtendedListViewStyle(HWND w) { - return cast(DWORD) SendMessage(w, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); - } - - BOOL ListView_SetColumnOrderArray(HWND w, int i, int* a) { - return cast(BOOL) SendMessage(w, LVM_SETCOLUMNORDERARRAY, - cast(WPARAM) i, cast(LPARAM) a); - } - - BOOL ListView_GetColumnOrderArray(HWND w, int i, int* a) { - return cast(BOOL) SendMessage(w, LVM_GETCOLUMNORDERARRAY, - cast(WPARAM) i, cast(LPARAM) a); - } - - HWND ListView_GetHeader(HWND w) { - return cast(HWND) SendMessage(w, LVM_GETHEADER, 0, 0); - } - - HCURSOR ListView_GetHotCursor(HWND w) { - return cast(HCURSOR) SendMessage(w, LVM_GETHOTCURSOR, 0, 0); - } - - INT ListView_GetHotItem(HWND w) { - return cast(INT) SendMessage(w, LVM_GETHOTITEM, 0, 0); - } - - BOOL ListView_GetSubItemRect(HWND w, int i, int isi, int c, LPRECT p) { - return cast(BOOL) SendMessage(w, LVM_GETSUBITEMRECT, i, - p ? (p.left = c, p.top = isi, cast(LPARAM) p) : 0); - } - - HCURSOR ListView_SetHotCursor(HWND w, HCURSOR c) { - return cast(HCURSOR) SendMessage(w, LVM_SETHOTCURSOR, 0, - cast(LPARAM) c); - } - - INT ListView_SetHotItem(HWND w, INT i) { - return cast(INT) SendMessage(w, LVM_SETHOTITEM, cast(WPARAM) i, 0); - } - - DWORD ListView_SetIconSpacing(HWND w, int x, int y) { - return cast(DWORD) SendMessage(w, LVM_SETICONSPACING, 0, - MAKELONG(cast(ushort)x, cast(ushort)y)); - } - - INT ListView_SubItemHitTest(HWND w, LPLVHITTESTINFO p) { - return cast(INT) SendMessage(w, LVM_SUBITEMHITTEST, 0, cast(LPARAM) p); - } - - BOOL ListView_SetItemCountEx(HWND w, int i, DWORD f) { - return cast(BOOL) SendMessage(w, LVM_SETITEMCOUNT, i, cast(LPARAM) f); - } - - extern (Windows) { - WINBOOL ImageList_SetImageCount(HIMAGELIST, UINT); - WINBOOL ImageList_Copy(HIMAGELIST, int, HIMAGELIST, int, UINT); - WINBOOL ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*); - } - - int TabCtrl_SetMinTabWidth(HWND hwnd, int x) { - return cast(int) SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x); - } - - VOID TabCtrl_DeselectAll(HWND hwnd, UINT fExcludeFocus) { - SendMessage(hwnd, TCM_DESELECTALL, fExcludeFocus, 0); - } - - HWND TreeView_GetToolTips(HWND w) { - return cast(HWND) SendMessage(w, TVM_GETTOOLTIPS, 0, 0); - } - - HWND TreeView_SetToolTips(HWND w, HWND wt) { - return cast(HWND) SendMessage(w, TVM_SETTOOLTIPS, cast(WPARAM) wt, 0); - } + DWORD ListView_ApproximateViewRect(HWND w, int iw, int ih, int i) { + return cast(DWORD) SendMessage(w, LVM_APPROXIMATEVIEWRECT, i, + MAKELPARAM(cast(ushort)iw, cast(ushort)ih)); + } + + DWORD ListView_SetExtendedListViewStyle(HWND w, DWORD s) { + return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, s); + } + + DWORD ListView_GetExtendedListViewStyle(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); + } + + BOOL ListView_SetColumnOrderArray(HWND w, int i, int* a) { + return cast(BOOL) SendMessage(w, LVM_SETCOLUMNORDERARRAY, + cast(WPARAM) i, cast(LPARAM) a); + } + + BOOL ListView_GetColumnOrderArray(HWND w, int i, int* a) { + return cast(BOOL) SendMessage(w, LVM_GETCOLUMNORDERARRAY, + cast(WPARAM) i, cast(LPARAM) a); + } + + HWND ListView_GetHeader(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETHEADER, 0, 0); + } + + HCURSOR ListView_GetHotCursor(HWND w) { + return cast(HCURSOR) SendMessage(w, LVM_GETHOTCURSOR, 0, 0); + } + + INT ListView_GetHotItem(HWND w) { + return cast(INT) SendMessage(w, LVM_GETHOTITEM, 0, 0); + } + + BOOL ListView_GetSubItemRect(HWND w, int i, int isi, int c, LPRECT p) { + return cast(BOOL) SendMessage(w, LVM_GETSUBITEMRECT, i, + p ? (p.left = c, p.top = isi, cast(LPARAM) p) : 0); + } + + HCURSOR ListView_SetHotCursor(HWND w, HCURSOR c) { + return cast(HCURSOR) SendMessage(w, LVM_SETHOTCURSOR, 0, + cast(LPARAM) c); + } + + INT ListView_SetHotItem(HWND w, INT i) { + return cast(INT) SendMessage(w, LVM_SETHOTITEM, cast(WPARAM) i, 0); + } + + DWORD ListView_SetIconSpacing(HWND w, int x, int y) { + return cast(DWORD) SendMessage(w, LVM_SETICONSPACING, 0, + MAKELONG(cast(ushort)x, cast(ushort)y)); + } + + INT ListView_SubItemHitTest(HWND w, LPLVHITTESTINFO p) { + return cast(INT) SendMessage(w, LVM_SUBITEMHITTEST, 0, cast(LPARAM) p); + } + + BOOL ListView_SetItemCountEx(HWND w, int i, DWORD f) { + return cast(BOOL) SendMessage(w, LVM_SETITEMCOUNT, i, cast(LPARAM) f); + } + + extern (Windows) { + WINBOOL ImageList_SetImageCount(HIMAGELIST, UINT); + WINBOOL ImageList_Copy(HIMAGELIST, int, HIMAGELIST, int, UINT); + WINBOOL ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*); + } + + int TabCtrl_SetMinTabWidth(HWND hwnd, int x) { + return cast(int) SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x); + } + + VOID TabCtrl_DeselectAll(HWND hwnd, UINT fExcludeFocus) { + SendMessage(hwnd, TCM_DESELECTALL, fExcludeFocus, 0); + } + + HWND TreeView_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, TVM_GETTOOLTIPS, 0, 0); + } + + HWND TreeView_SetToolTips(HWND w, HWND wt) { + return cast(HWND) SendMessage(w, TVM_SETTOOLTIPS, cast(WPARAM) wt, 0); + } } static if (_WIN32_IE >= 0x400) { - BOOL ListView_GetBkImage(HWND h, LPLVBKIMAGE plvbki) { - return cast(BOOL) SendMessage(h, LVM_GETBKIMAGE, 0, - cast(LPARAM) plvbki); - } - - BOOL ListView_SetBkImage(HWND h, LPLVBKIMAGE plvbki) { - return cast(BOOL) SendMessage(h, LVM_SETBKIMAGE, 0, - cast(LPARAM) plvbki); - } - - DWORD ListView_SetExtendedListViewStyleEx(HWND w, DWORD m, DWORD s) { - return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, m, s); - } - - VOID ListView_SetWorkAreas(HWND w, INT n, LPRECT r) { - SendMessage(w, LVM_SETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); - } - - VOID ListView_GetWorkAreas(HWND w, INT n, LPRECT r) { - SendMessage(w, LVM_GETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); - } - - BOOL ListView_GetNumberOfWorkAreas(HWND w, LPUINT n) { - return cast(BOOL) SendMessage(w, LVM_GETNUMBEROFWORKAREAS, 0, - cast(LPARAM) n); - } - - DWORD ListView_SetHoverTime(HWND w, DWORD t) { - return cast(DWORD) SendMessage(w, LVM_SETHOVERTIME, 0, - cast(LPARAM) t); - } - - DWORD ListView_GetHoverTime(HWND w) { - return cast(DWORD) SendMessage(w, LVM_GETHOVERTIME, 0, 0); - } - - INT ListView_GetSelectionMark(HWND w) { - return cast(INT) SendMessage(w, LVM_GETSELECTIONMARK, 0, 0); - } - - INT ListView_SetSelectionMark(HWND w, INT i) { - return cast(INT) SendMessage(w, LVM_SETSELECTIONMARK, 0, cast(LPARAM) i); - } - - HWND ListView_SetToolTips(HWND w, HWND n) { - return cast(HWND) SendMessage(w, LVM_SETTOOLTIPS, cast(WPARAM) n, 0); - } - - HWND ListView_GetToolTips(HWND w) { - return cast(HWND) SendMessage(w, LVM_GETTOOLTIPS, 0, 0); - } - - BOOL ListView_SetUnicodeFormat(HWND w, BOOL f) { - return cast(BOOL) SendMessage(w, LVM_SETUNICODEFORMAT, - cast(WPARAM) f, 0); - } - - BOOL ListView_GetUnicodeFormat(HWND w) { - return cast(BOOL) SendMessage(w, LVM_GETUNICODEFORMAT, 0, 0); - } - - BOOL TabCtrl_HighlightItem(HWND hwnd, INT i, WORD fHighlight) { - return cast(BOOL) SendMessage(hwnd, TCM_HIGHLIGHTITEM, - cast(WPARAM) i, cast(LPARAM) MAKELONG(fHighlight, 0)); - } - - DWORD TabCtrl_SetExtendedStyle(HWND hwnd, DWORD dw) { - return cast(DWORD) SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw); - } - - DWORD TabCtrl_GetExtendedStyle(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0); - } - - BOOL TabCtrl_SetUnicodeFormat(HWND hwnd, HWND fUnicode) { - return cast(BOOL) SendMessage(hwnd, TCM_SETUNICODEFORMAT, - cast(WPARAM) fUnicode, 0); - } - - BOOL TabCtrl_GetUnicodeFormat(HWND hwnd) { - return cast(BOOL) SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0); - } - - COLORREF TreeView_GetBkColor(HWND w) { - return cast(COLORREF) SendMessage(w, TVM_GETBKCOLOR, 0, 0); - } - - COLORREF TreeView_GetInsertMarkColor(HWND w) { - return cast(COLORREF) SendMessage(w, TVM_GETINSERTMARKCOLOR, 0, 0); - } - - int TreeView_GetItemHeight(HWND w) { - return cast(int) SendMessage(w, TVM_GETITEMHEIGHT, 0, 0); - } - - UINT TreeView_GetScrollTime(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETSCROLLTIME, 0, 0); - } - - COLORREF TreeView_GetTextColor(HWND w) { - return cast(COLORREF) SendMessage(w, TVM_GETTEXTCOLOR, 0, 0); - } - - COLORREF TreeView_SetBkColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, TVM_SETBKCOLOR, 0, - cast(LPARAM) c); - } - - COLORREF TreeView_SetInsertMarkColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, TVM_SETINSERTMARKCOLOR, 0, - cast(LPARAM) c); - } - - int TreeView_SetItemHeight(HWND w, SHORT h) { - return cast(int) SendMessage(w, TVM_SETITEMHEIGHT, cast(WPARAM) h, 0); - } - - UINT TreeView_SetScrollTime(HWND w, UINT t) { - return cast(UINT) SendMessage(w, TVM_SETSCROLLTIME, cast(WPARAM) t, 0); - } - - COLORREF TreeView_SetTextColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, TVM_SETTEXTCOLOR, 0, - cast(LPARAM) c); - } - - BOOL TreeView_SetInsertMark(HWND w, HTREEITEM i, BOOL a) { - return cast(BOOL) SendMessage(w, TVM_SETINSERTMARK, cast(WPARAM) a, - cast(LPARAM) i); - } + BOOL ListView_GetBkImage(HWND h, LPLVBKIMAGE plvbki) { + return cast(BOOL) SendMessage(h, LVM_GETBKIMAGE, 0, + cast(LPARAM) plvbki); + } + + BOOL ListView_SetBkImage(HWND h, LPLVBKIMAGE plvbki) { + return cast(BOOL) SendMessage(h, LVM_SETBKIMAGE, 0, + cast(LPARAM) plvbki); + } + + DWORD ListView_SetExtendedListViewStyleEx(HWND w, DWORD m, DWORD s) { + return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, m, s); + } + + VOID ListView_SetWorkAreas(HWND w, INT n, LPRECT r) { + SendMessage(w, LVM_SETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); + } + + VOID ListView_GetWorkAreas(HWND w, INT n, LPRECT r) { + SendMessage(w, LVM_GETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); + } + + BOOL ListView_GetNumberOfWorkAreas(HWND w, LPUINT n) { + return cast(BOOL) SendMessage(w, LVM_GETNUMBEROFWORKAREAS, 0, + cast(LPARAM) n); + } + + DWORD ListView_SetHoverTime(HWND w, DWORD t) { + return cast(DWORD) SendMessage(w, LVM_SETHOVERTIME, 0, + cast(LPARAM) t); + } + + DWORD ListView_GetHoverTime(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETHOVERTIME, 0, 0); + } + + INT ListView_GetSelectionMark(HWND w) { + return cast(INT) SendMessage(w, LVM_GETSELECTIONMARK, 0, 0); + } + + INT ListView_SetSelectionMark(HWND w, INT i) { + return cast(INT) SendMessage(w, LVM_SETSELECTIONMARK, 0, cast(LPARAM) i); + } + + HWND ListView_SetToolTips(HWND w, HWND n) { + return cast(HWND) SendMessage(w, LVM_SETTOOLTIPS, cast(WPARAM) n, 0); + } + + HWND ListView_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETTOOLTIPS, 0, 0); + } + + BOOL ListView_SetUnicodeFormat(HWND w, BOOL f) { + return cast(BOOL) SendMessage(w, LVM_SETUNICODEFORMAT, + cast(WPARAM) f, 0); + } + + BOOL ListView_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, LVM_GETUNICODEFORMAT, 0, 0); + } + + BOOL TabCtrl_HighlightItem(HWND hwnd, INT i, WORD fHighlight) { + return cast(BOOL) SendMessage(hwnd, TCM_HIGHLIGHTITEM, + cast(WPARAM) i, cast(LPARAM) MAKELONG(fHighlight, 0)); + } + + DWORD TabCtrl_SetExtendedStyle(HWND hwnd, DWORD dw) { + return cast(DWORD) SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw); + } + + DWORD TabCtrl_GetExtendedStyle(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0); + } + + BOOL TabCtrl_SetUnicodeFormat(HWND hwnd, HWND fUnicode) { + return cast(BOOL) SendMessage(hwnd, TCM_SETUNICODEFORMAT, + cast(WPARAM) fUnicode, 0); + } + + BOOL TabCtrl_GetUnicodeFormat(HWND hwnd) { + return cast(BOOL) SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0); + } + + COLORREF TreeView_GetBkColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETBKCOLOR, 0, 0); + } + + COLORREF TreeView_GetInsertMarkColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETINSERTMARKCOLOR, 0, 0); + } + + int TreeView_GetItemHeight(HWND w) { + return cast(int) SendMessage(w, TVM_GETITEMHEIGHT, 0, 0); + } + + UINT TreeView_GetScrollTime(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETSCROLLTIME, 0, 0); + } + + COLORREF TreeView_GetTextColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETTEXTCOLOR, 0, 0); + } + + COLORREF TreeView_SetBkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETBKCOLOR, 0, + cast(LPARAM) c); + } + + COLORREF TreeView_SetInsertMarkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETINSERTMARKCOLOR, 0, + cast(LPARAM) c); + } + + int TreeView_SetItemHeight(HWND w, SHORT h) { + return cast(int) SendMessage(w, TVM_SETITEMHEIGHT, cast(WPARAM) h, 0); + } + + UINT TreeView_SetScrollTime(HWND w, UINT t) { + return cast(UINT) SendMessage(w, TVM_SETSCROLLTIME, cast(WPARAM) t, 0); + } + + COLORREF TreeView_SetTextColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETTEXTCOLOR, 0, + cast(LPARAM) c); + } + + BOOL TreeView_SetInsertMark(HWND w, HTREEITEM i, BOOL a) { + return cast(BOOL) SendMessage(w, TVM_SETINSERTMARK, cast(WPARAM) a, + cast(LPARAM) i); + } - BOOL TreeView_SetUnicodeFormat(HWND w, BOOL u) { - return cast(BOOL) SendMessage(w, TVM_SETUNICODEFORMAT, - cast(WPARAM) u, 0); - } + BOOL TreeView_SetUnicodeFormat(HWND w, BOOL u) { + return cast(BOOL) SendMessage(w, TVM_SETUNICODEFORMAT, + cast(WPARAM) u, 0); + } - BOOL TreeView_GetUnicodeFormat(HWND w) { - return cast(BOOL) SendMessage(w, TVM_GETUNICODEFORMAT, 0, 0); - } + BOOL TreeView_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, TVM_GETUNICODEFORMAT, 0, 0); + } - HTREEITEM TreeView_GetLastVisible(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_LASTVISIBLE); - } + HTREEITEM TreeView_GetLastVisible(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_LASTVISIBLE); + } } static if (_WIN32_IE >= 0x500) { - UINT TreeView_GetItemState(HWND w, HTREEITEM i, UINT m) { - return cast(UINT) SendMessage(w, TVM_GETITEMSTATE, cast(WPARAM) i, - cast(LPARAM) m); - } + UINT TreeView_GetItemState(HWND w, HTREEITEM i, UINT m) { + return cast(UINT) SendMessage(w, TVM_GETITEMSTATE, cast(WPARAM) i, + cast(LPARAM) m); + } - BOOL TreeView_SetItemState(HWND w, HTREEITEM i, UINT d, UINT m) { - TVITEM _tvi; - _tvi.mask = TVIF_STATE; - _tvi.hItem = i; - _tvi.stateMask = m; - _tvi.state = d; - return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) &_tvi); - } + BOOL TreeView_SetItemState(HWND w, HTREEITEM i, UINT d, UINT m) { + TVITEM _tvi; + _tvi.mask = TVIF_STATE; + _tvi.hItem = i; + _tvi.stateMask = m; + _tvi.state = d; + return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) &_tvi); + } } //#ifdef _WIN32_WCE // these are PPC only /+ extern (Windows) { - HWND CommandBar_Create(HINSTANCE, HWND, int); - BOOL CommandBar_Show(HWND, BOOL); - int CommandBar_AddBitmap(HWND, HINSTANCE, int, int, int, int); - HWND CommandBar_InsertComboBox(HWND, HINSTANCE, int, UINT, WORD, WORD); - BOOL CommandBar_InsertMenubar(HWND, HINSTANCE, WORD, WORD ); - BOOL CommandBar_InsertMenubarEx(HWND, HINSTANCE, LPTSTR, WORD); - BOOL CommandBar_DrawMenuBar(HWND, WORD); - HMENU CommandBar_GetMenu(HWND, WORD); - BOOL CommandBar_AddAdornments(HWND, DWORD, DWORD); - int CommandBar_Height(HWND hwndCB); + HWND CommandBar_Create(HINSTANCE, HWND, int); + BOOL CommandBar_Show(HWND, BOOL); + int CommandBar_AddBitmap(HWND, HINSTANCE, int, int, int, int); + HWND CommandBar_InsertComboBox(HWND, HINSTANCE, int, UINT, WORD, WORD); + BOOL CommandBar_InsertMenubar(HWND, HINSTANCE, WORD, WORD ); + BOOL CommandBar_InsertMenubarEx(HWND, HINSTANCE, LPTSTR, WORD); + BOOL CommandBar_DrawMenuBar(HWND, WORD); + HMENU CommandBar_GetMenu(HWND, WORD); + BOOL CommandBar_AddAdornments(HWND, DWORD, DWORD); + int CommandBar_Height(HWND hwndCB); } // MinGW: These two are not in the DLL @@ -6267,13 +6267,13 @@ static if (_WIN32_WINNT >= 0x501) { } alias EDITBALLOONTIP* PEDITBALLOONTIP; - const EM_SETCUEBANNER = ECM_FIRST + 1; - const EM_GETCUEBANNER = ECM_FIRST + 2; - const EM_SHOWBALLOONTIP = ECM_FIRST + 3; - const EM_HIDEBALLOONTIP = ECM_FIRST + 4; + const EM_SETCUEBANNER = ECM_FIRST + 1; + const EM_GETCUEBANNER = ECM_FIRST + 2; + const EM_SHOWBALLOONTIP = ECM_FIRST + 3; + const EM_HIDEBALLOONTIP = ECM_FIRST + 4; } static if (_WIN32_WINNT >= 0x600) { - const EM_SETHILITE = ECM_FIRST + 5; - const EM_GETHILITE = ECM_FIRST + 6; + const EM_SETHILITE = ECM_FIRST + 5; + const EM_GETHILITE = ECM_FIRST + 6; } diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index 95d58c829e..294cb964a2 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -14,24 +14,24 @@ import core.sys.windows.windef, core.sys.windows.winuser; import core.sys.windows.wingdi; // for LPLOGFONTA const TCHAR[] - LBSELCHSTRING = "commdlg_LBSelChangedNotify", - SHAREVISTRING = "commdlg_ShareViolation", - FILEOKSTRING = "commdlg_FileNameOK", - COLOROKSTRING = "commdlg_ColorOK", - SETRGBSTRING = "commdlg_SetRGBColor", - HELPMSGSTRING = "commdlg_help", - FINDMSGSTRING = "commdlg_FindReplace"; + LBSELCHSTRING = "commdlg_LBSelChangedNotify", + SHAREVISTRING = "commdlg_ShareViolation", + FILEOKSTRING = "commdlg_FileNameOK", + COLOROKSTRING = "commdlg_ColorOK", + SETRGBSTRING = "commdlg_SetRGBColor", + HELPMSGSTRING = "commdlg_help", + FINDMSGSTRING = "commdlg_FindReplace"; enum : UINT { - CDN_FIRST = -601, // also in commctrl.h - CDN_LAST = -699, - CDN_INITDONE = CDN_FIRST, - CDN_SELCHANGE = CDN_FIRST - 1, - CDN_FOLDERCHANGE = CDN_FIRST - 2, - CDN_SHAREVIOLATION = CDN_FIRST - 3, - CDN_HELP = CDN_FIRST - 4, - CDN_FILEOK = CDN_FIRST - 5, - CDN_TYPECHANGE = CDN_FIRST - 6, + CDN_FIRST = -601, // also in commctrl.h + CDN_LAST = -699, + CDN_INITDONE = CDN_FIRST, + CDN_SELCHANGE = CDN_FIRST - 1, + CDN_FOLDERCHANGE = CDN_FIRST - 2, + CDN_SHAREVIOLATION = CDN_FIRST - 3, + CDN_HELP = CDN_FIRST - 4, + CDN_FILEOK = CDN_FIRST - 5, + CDN_TYPECHANGE = CDN_FIRST - 6, } //static if(_WIN32_WINNT >= 0x500) { @@ -41,211 +41,211 @@ enum : UINT { //} enum : UINT { - CDM_FIRST = WM_USER + 100, - CDM_LAST = WM_USER + 200, - CDM_GETSPEC = CDM_FIRST, - CDM_GETFILEPATH, - CDM_GETFOLDERPATH, - CDM_GETFOLDERIDLIST, - CDM_SETCONTROLTEXT, - CDM_HIDECONTROL, - CDM_SETDEFEXT // = CDM_FIRST + 6 + CDM_FIRST = WM_USER + 100, + CDM_LAST = WM_USER + 200, + CDM_GETSPEC = CDM_FIRST, + CDM_GETFILEPATH, + CDM_GETFOLDERPATH, + CDM_GETFOLDERIDLIST, + CDM_SETCONTROLTEXT, + CDM_HIDECONTROL, + CDM_SETDEFEXT // = CDM_FIRST + 6 } // flags for ChooseColor enum : DWORD { - CC_RGBINIT = 0x0001, - CC_FULLOPEN = 0x0002, - CC_PREVENTFULLOPEN = 0x0004, - CC_SHOWHELP = 0x0008, - CC_ENABLEHOOK = 0x0010, - CC_ENABLETEMPLATE = 0x0020, - CC_ENABLETEMPLATEHANDLE = 0x0040, - CC_SOLIDCOLOR = 0x0080, - CC_ANYCOLOR = 0x0100 + CC_RGBINIT = 0x0001, + CC_FULLOPEN = 0x0002, + CC_PREVENTFULLOPEN = 0x0004, + CC_SHOWHELP = 0x0008, + CC_ENABLEHOOK = 0x0010, + CC_ENABLETEMPLATE = 0x0020, + CC_ENABLETEMPLATEHANDLE = 0x0040, + CC_SOLIDCOLOR = 0x0080, + CC_ANYCOLOR = 0x0100 } // flags for ChooseFont enum : DWORD { - CF_SCREENFONTS = 0x00000001, - CF_PRINTERFONTS = 0x00000002, - CF_BOTH = 0x00000003, - CF_SHOWHELP = 0x00000004, - CF_ENABLEHOOK = 0x00000008, - CF_ENABLETEMPLATE = 0x00000010, - CF_ENABLETEMPLATEHANDLE = 0x00000020, - CF_INITTOLOGFONTSTRUCT = 0x00000040, - CF_USESTYLE = 0x00000080, - CF_EFFECTS = 0x00000100, - CF_APPLY = 0x00000200, - CF_ANSIONLY = 0x00000400, - CF_SCRIPTSONLY = CF_ANSIONLY, - CF_NOVECTORFONTS = 0x00000800, - CF_NOOEMFONTS = 0x00000800, - CF_NOSIMULATIONS = 0x00001000, - CF_LIMITSIZE = 0x00002000, - CF_FIXEDPITCHONLY = 0x00004000, - CF_WYSIWYG = 0x00008000, - CF_FORCEFONTEXIST = 0x00010000, - CF_SCALABLEONLY = 0x00020000, - CF_TTONLY = 0x00040000, - CF_NOFACESEL = 0x00080000, - CF_NOSTYLESEL = 0x00100000, - CF_NOSIZESEL = 0x00200000, - CF_SELECTSCRIPT = 0x00400000, - CF_NOSCRIPTSEL = 0x00800000, - CF_NOVERTFONTS = 0x01000000 + CF_SCREENFONTS = 0x00000001, + CF_PRINTERFONTS = 0x00000002, + CF_BOTH = 0x00000003, + CF_SHOWHELP = 0x00000004, + CF_ENABLEHOOK = 0x00000008, + CF_ENABLETEMPLATE = 0x00000010, + CF_ENABLETEMPLATEHANDLE = 0x00000020, + CF_INITTOLOGFONTSTRUCT = 0x00000040, + CF_USESTYLE = 0x00000080, + CF_EFFECTS = 0x00000100, + CF_APPLY = 0x00000200, + CF_ANSIONLY = 0x00000400, + CF_SCRIPTSONLY = CF_ANSIONLY, + CF_NOVECTORFONTS = 0x00000800, + CF_NOOEMFONTS = 0x00000800, + CF_NOSIMULATIONS = 0x00001000, + CF_LIMITSIZE = 0x00002000, + CF_FIXEDPITCHONLY = 0x00004000, + CF_WYSIWYG = 0x00008000, + CF_FORCEFONTEXIST = 0x00010000, + CF_SCALABLEONLY = 0x00020000, + CF_TTONLY = 0x00040000, + CF_NOFACESEL = 0x00080000, + CF_NOSTYLESEL = 0x00100000, + CF_NOSIZESEL = 0x00200000, + CF_SELECTSCRIPT = 0x00400000, + CF_NOSCRIPTSEL = 0x00800000, + CF_NOVERTFONTS = 0x01000000 } // Font type for ChooseFont enum : WORD { - BOLD_FONTTYPE = 0x0100, - ITALIC_FONTTYPE = 0x0200, - REGULAR_FONTTYPE = 0x0400, - SCREEN_FONTTYPE = 0x2000, - PRINTER_FONTTYPE = 0x4000, - SIMULATED_FONTTYPE = 0x8000 + BOLD_FONTTYPE = 0x0100, + ITALIC_FONTTYPE = 0x0200, + REGULAR_FONTTYPE = 0x0400, + SCREEN_FONTTYPE = 0x2000, + PRINTER_FONTTYPE = 0x4000, + SIMULATED_FONTTYPE = 0x8000 } enum : UINT { - WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1, - WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101, - WM_CHOOSEFONT_SETFLAGS = WM_USER + 102 + WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1, + WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101, + WM_CHOOSEFONT_SETFLAGS = WM_USER + 102 } // flags for OpenFileName enum : DWORD { - OFN_SHAREWARN = 0, - OFN_SHARENOWARN = 0x000001, - OFN_READONLY = 0x000001, - OFN_SHAREFALLTHROUGH = 0x000002, - OFN_OVERWRITEPROMPT = 0x000002, - OFN_HIDEREADONLY = 0x000004, - OFN_NOCHANGEDIR = 0x000008, - OFN_SHOWHELP = 0x000010, - OFN_ENABLEHOOK = 0x000020, - OFN_ENABLETEMPLATE = 0x000040, - OFN_ENABLETEMPLATEHANDLE = 0x000080, - OFN_NOVALIDATE = 0x000100, - OFN_ALLOWMULTISELECT = 0x000200, - OFN_EXTENSIONDIFFERENT = 0x000400, - OFN_PATHMUSTEXIST = 0x000800, - OFN_FILEMUSTEXIST = 0x001000, - OFN_CREATEPROMPT = 0x002000, - OFN_SHAREAWARE = 0x004000, - OFN_NOREADONLYRETURN = 0x008000, - OFN_NOTESTFILECREATE = 0x010000, - OFN_NONETWORKBUTTON = 0x020000, - OFN_NOLONGNAMES = 0x040000, - OFN_EXPLORER = 0x080000, - OFN_NODEREFERENCELINKS = 0x100000, - OFN_LONGNAMES = 0x200000, - OFN_ENABLESIZING = 0x800000 + OFN_SHAREWARN = 0, + OFN_SHARENOWARN = 0x000001, + OFN_READONLY = 0x000001, + OFN_SHAREFALLTHROUGH = 0x000002, + OFN_OVERWRITEPROMPT = 0x000002, + OFN_HIDEREADONLY = 0x000004, + OFN_NOCHANGEDIR = 0x000008, + OFN_SHOWHELP = 0x000010, + OFN_ENABLEHOOK = 0x000020, + OFN_ENABLETEMPLATE = 0x000040, + OFN_ENABLETEMPLATEHANDLE = 0x000080, + OFN_NOVALIDATE = 0x000100, + OFN_ALLOWMULTISELECT = 0x000200, + OFN_EXTENSIONDIFFERENT = 0x000400, + OFN_PATHMUSTEXIST = 0x000800, + OFN_FILEMUSTEXIST = 0x001000, + OFN_CREATEPROMPT = 0x002000, + OFN_SHAREAWARE = 0x004000, + OFN_NOREADONLYRETURN = 0x008000, + OFN_NOTESTFILECREATE = 0x010000, + OFN_NONETWORKBUTTON = 0x020000, + OFN_NOLONGNAMES = 0x040000, + OFN_EXPLORER = 0x080000, + OFN_NODEREFERENCELINKS = 0x100000, + OFN_LONGNAMES = 0x200000, + OFN_ENABLESIZING = 0x800000 } enum : DWORD { - FR_DOWN = 0x00000001, - FR_WHOLEWORD = 0x00000002, - FR_MATCHCASE = 0x00000004, - FR_FINDNEXT = 0x00000008, - FR_REPLACE = 0x00000010, - FR_REPLACEALL = 0x00000020, - FR_DIALOGTERM = 0x00000040, - FR_SHOWHELP = 0x00000080, - FR_ENABLEHOOK = 0x00000100, - FR_ENABLETEMPLATE = 0x00000200, - FR_NOUPDOWN = 0x00000400, - FR_NOMATCHCASE = 0x00000800, - FR_NOWHOLEWORD = 0x00001000, - FR_ENABLETEMPLATEHANDLE = 0x00002000, - FR_HIDEUPDOWN = 0x00004000, - FR_HIDEMATCHCASE = 0x00008000, - FR_HIDEWHOLEWORD = 0x00010000, - FR_MATCHDIAC = 0x20000000, - FR_MATCHKASHIDA = 0x40000000, - FR_MATCHALEFHAMZA = 0x80000000 + FR_DOWN = 0x00000001, + FR_WHOLEWORD = 0x00000002, + FR_MATCHCASE = 0x00000004, + FR_FINDNEXT = 0x00000008, + FR_REPLACE = 0x00000010, + FR_REPLACEALL = 0x00000020, + FR_DIALOGTERM = 0x00000040, + FR_SHOWHELP = 0x00000080, + FR_ENABLEHOOK = 0x00000100, + FR_ENABLETEMPLATE = 0x00000200, + FR_NOUPDOWN = 0x00000400, + FR_NOMATCHCASE = 0x00000800, + FR_NOWHOLEWORD = 0x00001000, + FR_ENABLETEMPLATEHANDLE = 0x00002000, + FR_HIDEUPDOWN = 0x00004000, + FR_HIDEMATCHCASE = 0x00008000, + FR_HIDEWHOLEWORD = 0x00010000, + FR_MATCHDIAC = 0x20000000, + FR_MATCHKASHIDA = 0x40000000, + FR_MATCHALEFHAMZA = 0x80000000 } enum : DWORD { - PD_ALLPAGES = 0, - PD_SELECTION = 0x000001, - PD_PAGENUMS = 0x000002, - PD_NOSELECTION = 0x000004, - PD_NOPAGENUMS = 0x000008, - PD_COLLATE = 0x000010, - PD_PRINTTOFILE = 0x000020, - PD_PRINTSETUP = 0x000040, - PD_NOWARNING = 0x000080, - PD_RETURNDC = 0x000100, - PD_RETURNIC = 0x000200, - PD_RETURNDEFAULT = 0x000400, - PD_SHOWHELP = 0x000800, - PD_ENABLEPRINTHOOK = 0x001000, - PD_ENABLESETUPHOOK = 0x002000, - PD_ENABLEPRINTTEMPLATE = 0x004000, - PD_ENABLESETUPTEMPLATE = 0x008000, - PD_ENABLEPRINTTEMPLATEHANDLE = 0x010000, - PD_ENABLESETUPTEMPLATEHANDLE = 0x020000, - PD_USEDEVMODECOPIES = 0x040000, - PD_USEDEVMODECOPIESANDCOLLATE = 0x040000, - PD_DISABLEPRINTTOFILE = 0x080000, - PD_HIDEPRINTTOFILE = 0x100000, - PD_NONETWORKBUTTON = 0x200000 + PD_ALLPAGES = 0, + PD_SELECTION = 0x000001, + PD_PAGENUMS = 0x000002, + PD_NOSELECTION = 0x000004, + PD_NOPAGENUMS = 0x000008, + PD_COLLATE = 0x000010, + PD_PRINTTOFILE = 0x000020, + PD_PRINTSETUP = 0x000040, + PD_NOWARNING = 0x000080, + PD_RETURNDC = 0x000100, + PD_RETURNIC = 0x000200, + PD_RETURNDEFAULT = 0x000400, + PD_SHOWHELP = 0x000800, + PD_ENABLEPRINTHOOK = 0x001000, + PD_ENABLESETUPHOOK = 0x002000, + PD_ENABLEPRINTTEMPLATE = 0x004000, + PD_ENABLESETUPTEMPLATE = 0x008000, + PD_ENABLEPRINTTEMPLATEHANDLE = 0x010000, + PD_ENABLESETUPTEMPLATEHANDLE = 0x020000, + PD_USEDEVMODECOPIES = 0x040000, + PD_USEDEVMODECOPIESANDCOLLATE = 0x040000, + PD_DISABLEPRINTTOFILE = 0x080000, + PD_HIDEPRINTTOFILE = 0x100000, + PD_NONETWORKBUTTON = 0x200000 } //static if (_WIN32_WINNT >= 0x500) { - enum : DWORD { - PD_CURRENTPAGE = 0x00400000, - PD_NOCURRENTPAGE = 0x00800000, - PD_EXCLUSIONFLAGS = 0x01000000, - PD_USELARGETEMPLATE = 0x10000000, - } - - enum : HRESULT { - PD_RESULT_CANCEL, - PD_RESULT_PRINT, - PD_RESULT_APPLY - } - - const DWORD START_PAGE_GENERAL = 0xFFFFFFFF; + enum : DWORD { + PD_CURRENTPAGE = 0x00400000, + PD_NOCURRENTPAGE = 0x00800000, + PD_EXCLUSIONFLAGS = 0x01000000, + PD_USELARGETEMPLATE = 0x10000000, + } + + enum : HRESULT { + PD_RESULT_CANCEL, + PD_RESULT_PRINT, + PD_RESULT_APPLY + } + + const DWORD START_PAGE_GENERAL = 0xFFFFFFFF; //} enum { - PSD_DEFAULTMINMARGINS = 0, - PSD_INWININIINTLMEASURE = 0, - PSD_MINMARGINS = 0x000001, - PSD_MARGINS = 0x000002, - PSD_INTHOUSANDTHSOFINCHES = 0x000004, - PSD_INHUNDREDTHSOFMILLIMETERS = 0x000008, - PSD_DISABLEMARGINS = 0x000010, - PSD_DISABLEPRINTER = 0x000020, - PSD_NOWARNING = 0x000080, - PSD_DISABLEORIENTATION = 0x000100, - PSD_DISABLEPAPER = 0x000200, - PSD_RETURNDEFAULT = 0x000400, - PSD_SHOWHELP = 0x000800, - PSD_ENABLEPAGESETUPHOOK = 0x002000, - PSD_ENABLEPAGESETUPTEMPLATE = 0x008000, - PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x020000, - PSD_ENABLEPAGEPAINTHOOK = 0x040000, - PSD_DISABLEPAGEPAINTING = 0x080000 + PSD_DEFAULTMINMARGINS = 0, + PSD_INWININIINTLMEASURE = 0, + PSD_MINMARGINS = 0x000001, + PSD_MARGINS = 0x000002, + PSD_INTHOUSANDTHSOFINCHES = 0x000004, + PSD_INHUNDREDTHSOFMILLIMETERS = 0x000008, + PSD_DISABLEMARGINS = 0x000010, + PSD_DISABLEPRINTER = 0x000020, + PSD_NOWARNING = 0x000080, + PSD_DISABLEORIENTATION = 0x000100, + PSD_DISABLEPAPER = 0x000200, + PSD_RETURNDEFAULT = 0x000400, + PSD_SHOWHELP = 0x000800, + PSD_ENABLEPAGESETUPHOOK = 0x002000, + PSD_ENABLEPAGESETUPTEMPLATE = 0x008000, + PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x020000, + PSD_ENABLEPAGEPAINTHOOK = 0x040000, + PSD_DISABLEPAGEPAINTING = 0x080000 } enum : UINT { - WM_PSD_PAGESETUPDLG = WM_USER, - WM_PSD_FULLPAGERECT, - WM_PSD_MINMARGINRECT, - WM_PSD_MARGINRECT, - WM_PSD_GREEKTEXTRECT, - WM_PSD_ENVSTAMPRECT, - WM_PSD_YAFULLPAGERECT // = WM_USER + 6 + WM_PSD_PAGESETUPDLG = WM_USER, + WM_PSD_FULLPAGERECT, + WM_PSD_MINMARGINRECT, + WM_PSD_MARGINRECT, + WM_PSD_GREEKTEXTRECT, + WM_PSD_ENVSTAMPRECT, + WM_PSD_YAFULLPAGERECT // = WM_USER + 6 } enum : int { - CD_LBSELNOITEMS = -1, - CD_LBSELCHANGE, - CD_LBSELSUB, - CD_LBSELADD + CD_LBSELNOITEMS = -1, + CD_LBSELCHANGE, + CD_LBSELSUB, + CD_LBSELADD } const WORD DN_DEFAULTPRN = 1; @@ -256,176 +256,176 @@ const WORD DN_DEFAULTPRN = 1; // Windows Docs is buggy! int CommDlg_OpenSave_GetSpec(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETSPEC, wParam, lParam); + return SendMessage(hWndControl, CDM_GETSPEC, wParam, lParam); } int CommDlg_OpenSave_GetFilePath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETFILEPATH, wParam, lParam); + return SendMessage(hWndControl, CDM_GETFILEPATH, wParam, lParam); } int CommDlg_OpenSave_GetFolderPath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETFOLDERPATH, wParam, lParam); + return SendMessage(hWndControl, CDM_GETFOLDERPATH, wParam, lParam); } int CommDlg_OpenSave_GetFolderIDList(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETFOLDERIDLIST, wParam, lParam); + return SendMessage(hWndControl, CDM_GETFOLDERIDLIST, wParam, lParam); } void CommDlg_OpenSave_SetControlText(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_SETCONTROLTEXT, wParam, lParam); + return SendMessage(hWndControl, CDM_SETCONTROLTEXT, wParam, lParam); } void CommDlg_OpenSave_HideControl(HWND hWndControl, WPARAM wParam) { - return SendMessage(hWndControl, CDM_HIDECONTROL, wParam, 0); + return SendMessage(hWndControl, CDM_HIDECONTROL, wParam, 0); } void CommDlg_OpenSave_SetDefExt(HWND hWndControl, TCHAR* lparam) { - return SendMessage(hWndControl, CDM_SETCONTROLTEXT, 0, cast(LPARAM)lParam); + return SendMessage(hWndControl, CDM_SETCONTROLTEXT, 0, cast(LPARAM)lParam); } // These aliases seem even more unnecessary alias CommDlg_OpenSave_GetSpec - CommDlg_OpenSave_GetSpecA, CommDlg_OpenSave_GetSpecW; + CommDlg_OpenSave_GetSpecA, CommDlg_OpenSave_GetSpecW; alias CommDlg_OpenSave_GetFilePath - CommDlg_OpenSave_GetFilePathA, CommDlg_OpenSave_GetFilePathW; + CommDlg_OpenSave_GetFilePathA, CommDlg_OpenSave_GetFilePathW; alias CommDlg_OpenSave_GetFolderPath - CommDlg_OpenSave_GetFolderPathA, CommDlg_OpenSave_GetFolderPathW; + CommDlg_OpenSave_GetFolderPathA, CommDlg_OpenSave_GetFolderPathW; +/ // Callbacks. extern(Windows) { alias UINT_PTR function (HWND, UINT, WPARAM, LPARAM) - LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC, - LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; + LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC, + LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; } align (1): struct CHOOSECOLORA { - DWORD lStructSize = CHOOSECOLORA.sizeof; - HWND hwndOwner; - HWND hInstance; - COLORREF rgbResult; - COLORREF* lpCustColors; - DWORD Flags; - LPARAM lCustData; - LPCCHOOKPROC lpfnHook; - LPCSTR lpTemplateName; + DWORD lStructSize = CHOOSECOLORA.sizeof; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF* lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCSTR lpTemplateName; } alias CHOOSECOLORA* LPCHOOSECOLORA; struct CHOOSECOLORW { - DWORD lStructSize = CHOOSECOLORW.sizeof; - HWND hwndOwner; - HWND hInstance; - COLORREF rgbResult; - COLORREF* lpCustColors; - DWORD Flags; - LPARAM lCustData; - LPCCHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; + DWORD lStructSize = CHOOSECOLORW.sizeof; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF* lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; } alias CHOOSECOLORW* LPCHOOSECOLORW; align (4) struct CHOOSEFONTA { - DWORD lStructSize = CHOOSEFONTA.sizeof; - HWND hwndOwner; - HDC hDC; - LPLOGFONTA lpLogFont; - INT iPointSize; - DWORD Flags; - DWORD rgbColors; - LPARAM lCustData; - LPCFHOOKPROC lpfnHook; - LPCSTR lpTemplateName; - HINSTANCE hInstance; - LPSTR lpszStyle; - WORD nFontType; - //WORD ___MISSING_ALIGNMENT__; - INT nSizeMin; - INT nSizeMax; + DWORD lStructSize = CHOOSEFONTA.sizeof; + HWND hwndOwner; + HDC hDC; + LPLOGFONTA lpLogFont; + INT iPointSize; + DWORD Flags; + DWORD rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + HINSTANCE hInstance; + LPSTR lpszStyle; + WORD nFontType; + //WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; } alias CHOOSEFONTA* LPCHOOSEFONTA; align (4) struct CHOOSEFONTW { - DWORD lStructSize = CHOOSEFONTW.sizeof; - HWND hwndOwner; - HDC hDC; - LPLOGFONTW lpLogFont; - INT iPointSize; - DWORD Flags; - DWORD rgbColors; - LPARAM lCustData; - LPCFHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; - HINSTANCE hInstance; - LPWSTR lpszStyle; - WORD nFontType; - //WORD ___MISSING_ALIGNMENT__; - INT nSizeMin; - INT nSizeMax; + DWORD lStructSize = CHOOSEFONTW.sizeof; + HWND hwndOwner; + HDC hDC; + LPLOGFONTW lpLogFont; + INT iPointSize; + DWORD Flags; + DWORD rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + HINSTANCE hInstance; + LPWSTR lpszStyle; + WORD nFontType; + //WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; } alias CHOOSEFONTW* LPCHOOSEFONTW; struct DEVNAMES { - WORD wDriverOffset; - WORD wDeviceOffset; - WORD wOutputOffset; - WORD wDefault; + WORD wDriverOffset; + WORD wDeviceOffset; + WORD wOutputOffset; + WORD wDefault; } alias DEVNAMES* LPDEVNAMES; struct FINDREPLACEA { - DWORD lStructSize = FINDREPLACEA.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - DWORD Flags; - LPSTR lpstrFindWhat; - LPSTR lpstrReplaceWith; - WORD wFindWhatLen; - WORD wReplaceWithLen; - LPARAM lCustData; - LPFRHOOKPROC lpfnHook; - LPCSTR lpTemplateName; + DWORD lStructSize = FINDREPLACEA.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPSTR lpstrFindWhat; + LPSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCSTR lpTemplateName; } alias FINDREPLACEA* LPFINDREPLACEA; struct FINDREPLACEW { - DWORD lStructSize = FINDREPLACEW.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - DWORD Flags; - LPWSTR lpstrFindWhat; - LPWSTR lpstrReplaceWith; - WORD wFindWhatLen; - WORD wReplaceWithLen; - LPARAM lCustData; - LPFRHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; + DWORD lStructSize = FINDREPLACEW.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPWSTR lpstrFindWhat; + LPWSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; } alias FINDREPLACEW* LPFINDREPLACEW; struct OPENFILENAMEA { - DWORD lStructSize = OPENFILENAMEA.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - LPCSTR lpstrFilter; - LPSTR lpstrCustomFilter; - DWORD nMaxCustFilter; - DWORD nFilterIndex; - LPSTR lpstrFile; - DWORD nMaxFile; - LPSTR lpstrFileTitle; - DWORD nMaxFileTitle; - LPCSTR lpstrInitialDir; - LPCSTR lpstrTitle; - DWORD Flags; - WORD nFileOffset; - WORD nFileExtension; - LPCSTR lpstrDefExt; - DWORD lCustData; - LPOFNHOOKPROC lpfnHook; - LPCSTR lpTemplateName; + DWORD lStructSize = OPENFILENAMEA.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpstrFilter; + LPSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPSTR lpstrFile; + DWORD nMaxFile; + LPSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCSTR lpstrInitialDir; + LPCSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCSTR lpstrDefExt; + DWORD lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; //static if (_WIN32_WINNT >= 0x500) { void *pvReserved; @@ -436,270 +436,270 @@ struct OPENFILENAMEA { alias OPENFILENAMEA* LPOPENFILENAMEA; struct OPENFILENAMEW { - DWORD lStructSize = OPENFILENAMEW.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - LPCWSTR lpstrFilter; - LPWSTR lpstrCustomFilter; - DWORD nMaxCustFilter; - DWORD nFilterIndex; - LPWSTR lpstrFile; - DWORD nMaxFile; - LPWSTR lpstrFileTitle; - DWORD nMaxFileTitle; - LPCWSTR lpstrInitialDir; - LPCWSTR lpstrTitle; - DWORD Flags; - WORD nFileOffset; - WORD nFileExtension; - LPCWSTR lpstrDefExt; - DWORD lCustData; - LPOFNHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; - - //static if (_WIN32_WINNT >= 0x500) { - void *pvReserved; - DWORD dwReserved; - DWORD FlagsEx; - //} + DWORD lStructSize = OPENFILENAMEW.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpstrFilter; + LPWSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPWSTR lpstrFile; + DWORD nMaxFile; + LPWSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCWSTR lpstrInitialDir; + LPCWSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCWSTR lpstrDefExt; + DWORD lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + + //static if (_WIN32_WINNT >= 0x500) { + void *pvReserved; + DWORD dwReserved; + DWORD FlagsEx; + //} } alias OPENFILENAMEW* LPOPENFILENAMEW; const size_t OPENFILENAME_SIZE_VERSION_400 = 76; struct OFNOTIFYA { - NMHDR hdr; - LPOPENFILENAMEA lpOFN; - LPSTR pszFile; + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPSTR pszFile; } alias OFNOTIFYA* LPOFNOTIFYA; struct OFNOTIFYW { - NMHDR hdr; - LPOPENFILENAMEW lpOFN; - LPWSTR pszFile; + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPWSTR pszFile; } alias OFNOTIFYW* LPOFNOTIFYW; struct PAGESETUPDLGA { - DWORD lStructSize = PAGESETUPDLGA.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - DWORD Flags; - POINT ptPaperSize; - RECT rtMinMargin; - RECT rtMargin; - HINSTANCE hInstance; - LPARAM lCustData; - LPPAGESETUPHOOK lpfnPageSetupHook; - LPPAGEPAINTHOOK lpfnPagePaintHook; - LPCSTR lpPageSetupTemplateName; - HGLOBAL hPageSetupTemplate; + DWORD lStructSize = PAGESETUPDLGA.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + DWORD Flags; + POINT ptPaperSize; + RECT rtMinMargin; + RECT rtMargin; + HINSTANCE hInstance; + LPARAM lCustData; + LPPAGESETUPHOOK lpfnPageSetupHook; + LPPAGEPAINTHOOK lpfnPagePaintHook; + LPCSTR lpPageSetupTemplateName; + HGLOBAL hPageSetupTemplate; } alias PAGESETUPDLGA* LPPAGESETUPDLGA; struct PAGESETUPDLGW { - DWORD lStructSize = PAGESETUPDLGW.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - DWORD Flags; - POINT ptPaperSize; - RECT rtMinMargin; - RECT rtMargin; - HINSTANCE hInstance; - LPARAM lCustData; - LPPAGESETUPHOOK lpfnPageSetupHook; - LPPAGEPAINTHOOK lpfnPagePaintHook; - LPCWSTR lpPageSetupTemplateName; - HGLOBAL hPageSetupTemplate; + DWORD lStructSize = PAGESETUPDLGW.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + DWORD Flags; + POINT ptPaperSize; + RECT rtMinMargin; + RECT rtMargin; + HINSTANCE hInstance; + LPARAM lCustData; + LPPAGESETUPHOOK lpfnPageSetupHook; + LPPAGEPAINTHOOK lpfnPagePaintHook; + LPCWSTR lpPageSetupTemplateName; + HGLOBAL hPageSetupTemplate; } alias PAGESETUPDLGW* LPPAGESETUPDLGW; struct PRINTDLGA { - DWORD lStructSize = PRINTDLGA.sizeof; - HWND hwndOwner; - HANDLE hDevMode; - HANDLE hDevNames; - HDC hDC; - DWORD Flags; - WORD nFromPage; - WORD nToPage; - WORD nMinPage; - WORD nMaxPage; - WORD nCopies; - HINSTANCE hInstance; - DWORD lCustData; - LPPRINTHOOKPROC lpfnPrintHook; - LPSETUPHOOKPROC lpfnSetupHook; - LPCSTR lpPrintTemplateName; - LPCSTR lpSetupTemplateName; - HANDLE hPrintTemplate; - HANDLE hSetupTemplate; + DWORD lStructSize = PRINTDLGA.sizeof; + HWND hwndOwner; + HANDLE hDevMode; + HANDLE hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + DWORD lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCSTR lpPrintTemplateName; + LPCSTR lpSetupTemplateName; + HANDLE hPrintTemplate; + HANDLE hSetupTemplate; } alias PRINTDLGA* LPPRINTDLGA; struct PRINTDLGW { - DWORD lStructSize = PRINTDLGW.sizeof; - HWND hwndOwner; - HANDLE hDevMode; - HANDLE hDevNames; - HDC hDC; - DWORD Flags; - WORD nFromPage; - WORD nToPage; - WORD nMinPage; - WORD nMaxPage; - WORD nCopies; - HINSTANCE hInstance; - DWORD lCustData; - LPPRINTHOOKPROC lpfnPrintHook; - LPSETUPHOOKPROC lpfnSetupHook; - LPCWSTR lpPrintTemplateName; - LPCWSTR lpSetupTemplateName; - HANDLE hPrintTemplate; - HANDLE hSetupTemplate; + DWORD lStructSize = PRINTDLGW.sizeof; + HWND hwndOwner; + HANDLE hDevMode; + HANDLE hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + DWORD lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCWSTR lpPrintTemplateName; + LPCWSTR lpSetupTemplateName; + HANDLE hPrintTemplate; + HANDLE hSetupTemplate; } alias PRINTDLGW* LPPRINTDLGW; //static if (_WIN32_WINNT >= 0x500) { - import core.sys.windows.unknwn; // for LPUNKNOWN - import core.sys.windows.prsht; // for HPROPSHEETPAGE - - struct PRINTPAGERANGE { - DWORD nFromPage; - DWORD nToPage; - } - alias PRINTPAGERANGE* LPPRINTPAGERANGE; - - struct PRINTDLGEXA { - DWORD lStructSize = PRINTDLGEXA.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - HDC hDC; - DWORD Flags; - DWORD Flags2; - DWORD ExclusionFlags; - DWORD nPageRanges; - DWORD nMaxPageRanges; - LPPRINTPAGERANGE lpPageRanges; - DWORD nMinPage; - DWORD nMaxPage; - DWORD nCopies; - HINSTANCE hInstance; - LPCSTR lpPrintTemplateName; - LPUNKNOWN lpCallback; - DWORD nPropertyPages; - HPROPSHEETPAGE* lphPropertyPages; - DWORD nStartPage; - DWORD dwResultAction; - } - alias PRINTDLGEXA* LPPRINTDLGEXA; - - struct PRINTDLGEXW { - DWORD lStructSize = PRINTDLGEXW.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - HDC hDC; - DWORD Flags; - DWORD Flags2; - DWORD ExclusionFlags; - DWORD nPageRanges; - DWORD nMaxPageRanges; - LPPRINTPAGERANGE lpPageRanges; - DWORD nMinPage; - DWORD nMaxPage; - DWORD nCopies; - HINSTANCE hInstance; - LPCWSTR lpPrintTemplateName; - LPUNKNOWN lpCallback; - DWORD nPropertyPages; - HPROPSHEETPAGE* lphPropertyPages; - DWORD nStartPage; - DWORD dwResultAction; - } - alias PRINTDLGEXW* LPPRINTDLGEXW; + import core.sys.windows.unknwn; // for LPUNKNOWN + import core.sys.windows.prsht; // for HPROPSHEETPAGE + + struct PRINTPAGERANGE { + DWORD nFromPage; + DWORD nToPage; + } + alias PRINTPAGERANGE* LPPRINTPAGERANGE; + + struct PRINTDLGEXA { + DWORD lStructSize = PRINTDLGEXA.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + DWORD Flags2; + DWORD ExclusionFlags; + DWORD nPageRanges; + DWORD nMaxPageRanges; + LPPRINTPAGERANGE lpPageRanges; + DWORD nMinPage; + DWORD nMaxPage; + DWORD nCopies; + HINSTANCE hInstance; + LPCSTR lpPrintTemplateName; + LPUNKNOWN lpCallback; + DWORD nPropertyPages; + HPROPSHEETPAGE* lphPropertyPages; + DWORD nStartPage; + DWORD dwResultAction; + } + alias PRINTDLGEXA* LPPRINTDLGEXA; + + struct PRINTDLGEXW { + DWORD lStructSize = PRINTDLGEXW.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + DWORD Flags2; + DWORD ExclusionFlags; + DWORD nPageRanges; + DWORD nMaxPageRanges; + LPPRINTPAGERANGE lpPageRanges; + DWORD nMinPage; + DWORD nMaxPage; + DWORD nCopies; + HINSTANCE hInstance; + LPCWSTR lpPrintTemplateName; + LPUNKNOWN lpCallback; + DWORD nPropertyPages; + HPROPSHEETPAGE* lphPropertyPages; + DWORD nStartPage; + DWORD dwResultAction; + } + alias PRINTDLGEXW* LPPRINTDLGEXW; //} // _WIN32_WINNT >= 0x500 extern (Windows) { - BOOL ChooseColorA(LPCHOOSECOLORA); - BOOL ChooseColorW(LPCHOOSECOLORW); - BOOL ChooseFontA(LPCHOOSEFONTA); - BOOL ChooseFontW(LPCHOOSEFONTW); - DWORD CommDlgExtendedError(); - HWND FindTextA(LPFINDREPLACEA); - HWND FindTextW(LPFINDREPLACEW); - short GetFileTitleA(LPCSTR, LPSTR, WORD); - short GetFileTitleW(LPCWSTR, LPWSTR, WORD); - BOOL GetOpenFileNameA(LPOPENFILENAMEA); - BOOL GetOpenFileNameW(LPOPENFILENAMEW); - BOOL GetSaveFileNameA(LPOPENFILENAMEA); - BOOL GetSaveFileNameW(LPOPENFILENAMEW); - BOOL PageSetupDlgA(LPPAGESETUPDLGA); - BOOL PageSetupDlgW(LPPAGESETUPDLGW); - BOOL PrintDlgA(LPPRINTDLGA); - BOOL PrintDlgW(LPPRINTDLGW); - HWND ReplaceTextA(LPFINDREPLACEA); - HWND ReplaceTextW(LPFINDREPLACEW); - - //static if (_WIN32_WINNT >= 0x500) { - HRESULT PrintDlgExA(LPPRINTDLGEXA); - HRESULT PrintDlgExW(LPPRINTDLGEXW); - //} + BOOL ChooseColorA(LPCHOOSECOLORA); + BOOL ChooseColorW(LPCHOOSECOLORW); + BOOL ChooseFontA(LPCHOOSEFONTA); + BOOL ChooseFontW(LPCHOOSEFONTW); + DWORD CommDlgExtendedError(); + HWND FindTextA(LPFINDREPLACEA); + HWND FindTextW(LPFINDREPLACEW); + short GetFileTitleA(LPCSTR, LPSTR, WORD); + short GetFileTitleW(LPCWSTR, LPWSTR, WORD); + BOOL GetOpenFileNameA(LPOPENFILENAMEA); + BOOL GetOpenFileNameW(LPOPENFILENAMEW); + BOOL GetSaveFileNameA(LPOPENFILENAMEA); + BOOL GetSaveFileNameW(LPOPENFILENAMEW); + BOOL PageSetupDlgA(LPPAGESETUPDLGA); + BOOL PageSetupDlgW(LPPAGESETUPDLGW); + BOOL PrintDlgA(LPPRINTDLGA); + BOOL PrintDlgW(LPPRINTDLGW); + HWND ReplaceTextA(LPFINDREPLACEA); + HWND ReplaceTextW(LPFINDREPLACEW); + + //static if (_WIN32_WINNT >= 0x500) { + HRESULT PrintDlgExA(LPPRINTDLGEXA); + HRESULT PrintDlgExW(LPPRINTDLGEXW); + //} } version (Unicode) { - alias CHOOSECOLORW CHOOSECOLOR; - alias CHOOSEFONTW CHOOSEFONT; - alias FINDREPLACEW FINDREPLACE; - alias OPENFILENAMEW OPENFILENAME; - alias OFNOTIFYW OFNOTIFY; - alias PAGESETUPDLGW PAGESETUPDLG; - alias PRINTDLGW PRINTDLG; - - alias ChooseColorW ChooseColor; - alias ChooseFontW ChooseFont; - alias FindTextW FindText; - alias GetFileTitleW GetFileTitle; - alias GetOpenFileNameW GetOpenFileName; - alias GetSaveFileNameW GetSaveFileName; - alias PageSetupDlgW PageSetupDlg; - alias PrintDlgW PrintDlg; - alias ReplaceTextW ReplaceText; - - //static if (_WIN32_WINNT >= 0x500) { - alias PRINTDLGEXW PRINTDLGEX; - alias PrintDlgExW PrintDlgEx; - //} + alias CHOOSECOLORW CHOOSECOLOR; + alias CHOOSEFONTW CHOOSEFONT; + alias FINDREPLACEW FINDREPLACE; + alias OPENFILENAMEW OPENFILENAME; + alias OFNOTIFYW OFNOTIFY; + alias PAGESETUPDLGW PAGESETUPDLG; + alias PRINTDLGW PRINTDLG; + + alias ChooseColorW ChooseColor; + alias ChooseFontW ChooseFont; + alias FindTextW FindText; + alias GetFileTitleW GetFileTitle; + alias GetOpenFileNameW GetOpenFileName; + alias GetSaveFileNameW GetSaveFileName; + alias PageSetupDlgW PageSetupDlg; + alias PrintDlgW PrintDlg; + alias ReplaceTextW ReplaceText; + + //static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEXW PRINTDLGEX; + alias PrintDlgExW PrintDlgEx; + //} } else { // UNICODE - alias CHOOSECOLORA CHOOSECOLOR; - alias CHOOSEFONTA CHOOSEFONT; - alias FINDREPLACEA FINDREPLACE; - alias OPENFILENAMEA OPENFILENAME; - alias OFNOTIFYA OFNOTIFY; - alias PAGESETUPDLGA PAGESETUPDLG; - alias PRINTDLGA PRINTDLG; - - alias ChooseColorA ChooseColor; - alias ChooseFontA ChooseFont; - alias FindTextA FindText; - alias GetFileTitleA GetFileTitle; - alias GetOpenFileNameA GetOpenFileName; - alias GetSaveFileNameA GetSaveFileName; - alias PageSetupDlgA PageSetupDlg; - alias PrintDlgA PrintDlg; - alias ReplaceTextA ReplaceText; - - //static if (_WIN32_WINNT >= 0x500) { - alias PRINTDLGEXA PRINTDLGEX; - alias PrintDlgExA PrintDlgEx; - //} + alias CHOOSECOLORA CHOOSECOLOR; + alias CHOOSEFONTA CHOOSEFONT; + alias FINDREPLACEA FINDREPLACE; + alias OPENFILENAMEA OPENFILENAME; + alias OFNOTIFYA OFNOTIFY; + alias PAGESETUPDLGA PAGESETUPDLG; + alias PRINTDLGA PRINTDLG; + + alias ChooseColorA ChooseColor; + alias ChooseFontA ChooseFont; + alias FindTextA FindText; + alias GetFileTitleA GetFileTitle; + alias GetOpenFileNameA GetOpenFileName; + alias GetSaveFileNameA GetSaveFileName; + alias PageSetupDlgA PageSetupDlg; + alias PrintDlgA PrintDlg; + alias ReplaceTextA ReplaceText; + + //static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEXA PRINTDLGEX; + alias PrintDlgExA PrintDlgEx; + //} } // UNICODE @@ -711,5 +711,5 @@ alias OFNOTIFY* LPOFNOTIFY; alias PAGESETUPDLG* LPPAGESETUPDLG; alias PRINTDLG* LPPRINTDLG; //static if (_WIN32_WINNT >= 0x500) { - alias PRINTDLGEX* LPPRINTDLGEX; + alias PRINTDLGEX* LPPRINTDLGEX; //} diff --git a/src/core/sys/windows/cpl.d b/src/core/sys/windows/cpl.d index 9ff977ea7c..7131fec51a 100644 --- a/src/core/sys/windows/cpl.d +++ b/src/core/sys/windows/cpl.d @@ -12,65 +12,65 @@ module core.sys.windows.cpl; private import core.sys.windows.windef, core.sys.windows.winuser; enum : uint { - WM_CPL_LAUNCH = WM_USER + 1000, - WM_CPL_LAUNCHED + WM_CPL_LAUNCH = WM_USER + 1000, + WM_CPL_LAUNCHED } enum : uint { - CPL_DYNAMIC_RES, - CPL_INIT, - CPL_GETCOUNT, - CPL_INQUIRE, - CPL_SELECT, - CPL_DBLCLK, - CPL_STOP, - CPL_EXIT, - CPL_NEWINQUIRE, - CPL_STARTWPARMSA, - CPL_STARTWPARMSW, // = 10 - CPL_SETUP = 200 + CPL_DYNAMIC_RES, + CPL_INIT, + CPL_GETCOUNT, + CPL_INQUIRE, + CPL_SELECT, + CPL_DBLCLK, + CPL_STOP, + CPL_EXIT, + CPL_NEWINQUIRE, + CPL_STARTWPARMSA, + CPL_STARTWPARMSW, // = 10 + CPL_SETUP = 200 } extern (Windows) alias LONG function(HWND, UINT, LONG, LONG) APPLET_PROC; struct CPLINFO { - int idIcon; - int idName; - int idInfo; - LONG lData; + int idIcon; + int idName; + int idInfo; + LONG lData; } alias CPLINFO* LPCPLINFO; struct NEWCPLINFOA { - DWORD dwSize = NEWCPLINFOA.sizeof; - DWORD dwFlags; - DWORD dwHelpContext; - LONG lData; - HICON hIcon; - CHAR[32] szName; - CHAR[64] szInfo; - CHAR[128] szHelpFile; + DWORD dwSize = NEWCPLINFOA.sizeof; + DWORD dwFlags; + DWORD dwHelpContext; + LONG lData; + HICON hIcon; + CHAR[32] szName; + CHAR[64] szInfo; + CHAR[128] szHelpFile; } alias NEWCPLINFOA* LPNEWCPLINFOA; struct NEWCPLINFOW { - DWORD dwSize = NEWCPLINFOW.sizeof; - DWORD dwFlags; - DWORD dwHelpContext; - LONG lData; - HICON hIcon; - WCHAR[32] szName; - WCHAR[64] szInfo; - WCHAR[128] szHelpFile; + DWORD dwSize = NEWCPLINFOW.sizeof; + DWORD dwFlags; + DWORD dwHelpContext; + LONG lData; + HICON hIcon; + WCHAR[32] szName; + WCHAR[64] szInfo; + WCHAR[128] szHelpFile; } alias NEWCPLINFOW* LPNEWCPLINFOW; version (Unicode) { - alias CPL_STARTWPARMSW CPL_STARTWPARMS; - alias NEWCPLINFOW NEWCPLINFO; + alias CPL_STARTWPARMSW CPL_STARTWPARMS; + alias NEWCPLINFOW NEWCPLINFO; } else { - alias CPL_STARTWPARMSA CPL_STARTWPARMS; - alias NEWCPLINFOA NEWCPLINFO; + alias CPL_STARTWPARMSA CPL_STARTWPARMS; + alias NEWCPLINFOA NEWCPLINFO; } alias NEWCPLINFO* LPNEWCPLINFO; diff --git a/src/core/sys/windows/cplext.d b/src/core/sys/windows/cplext.d index 278a4271c5..baf5707362 100644 --- a/src/core/sys/windows/cplext.d +++ b/src/core/sys/windows/cplext.d @@ -10,9 +10,9 @@ module core.sys.windows.cplext; enum : uint { - CPLPAGE_MOUSE_BUTTONS = 1, - CPLPAGE_MOUSE_PTRMOTION = 2, - CPLPAGE_MOUSE_WHEEL = 3, - CPLPAGE_KEYBOARD_SPEED = 1, - CPLPAGE_DISPLAY_BACKGROUND = 1 + CPLPAGE_MOUSE_BUTTONS = 1, + CPLPAGE_MOUSE_PTRMOTION = 2, + CPLPAGE_MOUSE_WHEEL = 3, + CPLPAGE_KEYBOARD_SPEED = 1, + CPLPAGE_DISPLAY_BACKGROUND = 1 } diff --git a/src/core/sys/windows/custcntl.d b/src/core/sys/windows/custcntl.d index 0500adcd21..573d2d5fa0 100644 --- a/src/core/sys/windows/custcntl.d +++ b/src/core/sys/windows/custcntl.d @@ -15,105 +15,105 @@ private import core.sys.windows.windef; const CCF_NOTEXT = 1; const size_t - CCHCCCLASS = 32, - CCHCCDESC = 32, - CCHCCTEXT = 256; + CCHCCCLASS = 32, + CCHCCDESC = 32, + CCHCCTEXT = 256; struct CCSTYLEA { - DWORD flStyle; - DWORD flExtStyle; - CHAR[CCHCCTEXT] szText; - LANGID lgid; - WORD wReserved1; + DWORD flStyle; + DWORD flExtStyle; + CHAR[CCHCCTEXT] szText; + LANGID lgid; + WORD wReserved1; } alias CCSTYLEA* LPCCSTYLEA; struct CCSTYLEW { - DWORD flStyle; - DWORD flExtStyle; - WCHAR[CCHCCTEXT] szText; - LANGID lgid; - WORD wReserved1; + DWORD flStyle; + DWORD flExtStyle; + WCHAR[CCHCCTEXT] szText; + LANGID lgid; + WORD wReserved1; } alias CCSTYLEW* LPCCSTYLEW; struct CCSTYLEFLAGA { - DWORD flStyle; - DWORD flStyleMask; - LPSTR pszStyle; + DWORD flStyle; + DWORD flStyleMask; + LPSTR pszStyle; } alias CCSTYLEFLAGA* LPCCSTYLEFLAGA; struct CCSTYLEFLAGW { - DWORD flStyle; - DWORD flStyleMask; - LPWSTR pszStyle; + DWORD flStyle; + DWORD flStyleMask; + LPWSTR pszStyle; } alias CCSTYLEFLAGW* LPCCSTYLEFLAGW; struct CCINFOA { - CHAR[CCHCCCLASS] szClass; - DWORD flOptions; - CHAR[CCHCCDESC] szDesc; - UINT cxDefault; - UINT cyDefault; - DWORD flStyleDefault; - DWORD flExtStyleDefault; - DWORD flCtrlTypeMask; - CHAR[CCHCCTEXT] szTextDefault; - INT cStyleFlags; - LPCCSTYLEFLAGA aStyleFlags; - LPFNCCSTYLEA lpfnStyle; - LPFNCCSIZETOTEXTA lpfnSizeToText; - DWORD dwReserved1; - DWORD dwReserved2; + CHAR[CCHCCCLASS] szClass; + DWORD flOptions; + CHAR[CCHCCDESC] szDesc; + UINT cxDefault; + UINT cyDefault; + DWORD flStyleDefault; + DWORD flExtStyleDefault; + DWORD flCtrlTypeMask; + CHAR[CCHCCTEXT] szTextDefault; + INT cStyleFlags; + LPCCSTYLEFLAGA aStyleFlags; + LPFNCCSTYLEA lpfnStyle; + LPFNCCSIZETOTEXTA lpfnSizeToText; + DWORD dwReserved1; + DWORD dwReserved2; } alias CCINFOA* LPCCINFOA; struct CCINFOW { - WCHAR[CCHCCCLASS] szClass; - DWORD flOptions; - WCHAR[CCHCCDESC] szDesc; - UINT cxDefault; - UINT cyDefault; - DWORD flStyleDefault; - DWORD flExtStyleDefault; - DWORD flCtrlTypeMask; - WCHAR[CCHCCTEXT] szTextDefault; - INT cStyleFlags; - LPCCSTYLEFLAGW aStyleFlags; - LPFNCCSTYLEW lpfnStyle; - LPFNCCSIZETOTEXTW lpfnSizeToText; - DWORD dwReserved1; - DWORD dwReserved2; + WCHAR[CCHCCCLASS] szClass; + DWORD flOptions; + WCHAR[CCHCCDESC] szDesc; + UINT cxDefault; + UINT cyDefault; + DWORD flStyleDefault; + DWORD flExtStyleDefault; + DWORD flCtrlTypeMask; + WCHAR[CCHCCTEXT] szTextDefault; + INT cStyleFlags; + LPCCSTYLEFLAGW aStyleFlags; + LPFNCCSTYLEW lpfnStyle; + LPFNCCSIZETOTEXTW lpfnSizeToText; + DWORD dwReserved1; + DWORD dwReserved2; } alias CCINFOW* LPCCINFOW; extern (Windows) { - alias BOOL function(HWND, LPCCSTYLEA) LPFNCCSTYLEA; - alias BOOL function(HWND, LPCCSTYLEW) LPFNCCSTYLEW; - alias INT function(DWORD, DWORD, HFONT, LPSTR) LPFNCCSIZETOTEXTA; - alias INT function(DWORD, DWORD, HFONT, LPWSTR) LPFNCCSIZETOTEXTW; - alias UINT function(LPCCINFOA) LPFNCCINFOA; - alias UINT function(LPCCINFOW) LPFNCCINFOW; - UINT CustomControlInfoA(LPCCINFOA acci); - UINT CustomControlInfoW(LPCCINFOW acci); + alias BOOL function(HWND, LPCCSTYLEA) LPFNCCSTYLEA; + alias BOOL function(HWND, LPCCSTYLEW) LPFNCCSTYLEW; + alias INT function(DWORD, DWORD, HFONT, LPSTR) LPFNCCSIZETOTEXTA; + alias INT function(DWORD, DWORD, HFONT, LPWSTR) LPFNCCSIZETOTEXTW; + alias UINT function(LPCCINFOA) LPFNCCINFOA; + alias UINT function(LPCCINFOW) LPFNCCINFOW; + UINT CustomControlInfoA(LPCCINFOA acci); + UINT CustomControlInfoW(LPCCINFOW acci); } version (Unicode) { - alias CCSTYLEW CCSTYLE; - alias CCSTYLEFLAGW CCSTYLEFLAG; - alias CCINFOW CCINFO; - alias LPFNCCSTYLEW LPFNCCSTYLE; - alias LPFNCCSIZETOTEXTW LPFNCCSIZETOTEXT; - alias LPFNCCINFOW LPFNCCINFO; + alias CCSTYLEW CCSTYLE; + alias CCSTYLEFLAGW CCSTYLEFLAG; + alias CCINFOW CCINFO; + alias LPFNCCSTYLEW LPFNCCSTYLE; + alias LPFNCCSIZETOTEXTW LPFNCCSIZETOTEXT; + alias LPFNCCINFOW LPFNCCINFO; } else { - alias CCSTYLEA CCSTYLE; - alias CCSTYLEFLAGA CCSTYLEFLAG; - alias CCINFOA CCINFO; - alias LPFNCCSTYLEA LPFNCCSTYLE; - alias LPFNCCSIZETOTEXTA LPFNCCSIZETOTEXT; - alias LPFNCCINFOA LPFNCCINFO; + alias CCSTYLEA CCSTYLE; + alias CCSTYLEFLAGA CCSTYLEFLAG; + alias CCINFOA CCINFO; + alias LPFNCCSTYLEA LPFNCCSTYLE; + alias LPFNCCSIZETOTEXTA LPFNCCSIZETOTEXT; + alias LPFNCCINFOA LPFNCCINFO; } alias CCSTYLE* LPCCSTYLE; diff --git a/src/core/sys/windows/dbt.d b/src/core/sys/windows/dbt.d index 3fe1c824a7..2aaebffc99 100644 --- a/src/core/sys/windows/dbt.d +++ b/src/core/sys/windows/dbt.d @@ -15,174 +15,174 @@ import core.sys.windows.basetyps; // for GUID // FIXME: clean up Windows version support enum : DWORD { - DBT_NO_DISK_SPACE = 0x47, - DBT_CONFIGMGPRIVATE = 0x7FFF, - DBT_DEVICEARRIVAL = 0x8000, - DBT_DEVICEQUERYREMOVE = 0x8001, - DBT_DEVICEQUERYREMOVEFAILED = 0x8002, - DBT_DEVICEREMOVEPENDING = 0x8003, - DBT_DEVICEREMOVECOMPLETE = 0x8004, - DBT_DEVICETYPESPECIFIC = 0x8005, - DBT_DEVTYP_OEM = 0, - DBT_DEVTYP_DEVNODE, - DBT_DEVTYP_VOLUME, - DBT_DEVTYP_PORT, - DBT_DEVTYP_NET, - DBT_DEVTYP_DEVICEINTERFACE, - DBT_DEVTYP_HANDLE // = 6 + DBT_NO_DISK_SPACE = 0x47, + DBT_CONFIGMGPRIVATE = 0x7FFF, + DBT_DEVICEARRIVAL = 0x8000, + DBT_DEVICEQUERYREMOVE = 0x8001, + DBT_DEVICEQUERYREMOVEFAILED = 0x8002, + DBT_DEVICEREMOVEPENDING = 0x8003, + DBT_DEVICEREMOVECOMPLETE = 0x8004, + DBT_DEVICETYPESPECIFIC = 0x8005, + DBT_DEVTYP_OEM = 0, + DBT_DEVTYP_DEVNODE, + DBT_DEVTYP_VOLUME, + DBT_DEVTYP_PORT, + DBT_DEVTYP_NET, + DBT_DEVTYP_DEVICEINTERFACE, + DBT_DEVTYP_HANDLE // = 6 } enum : DWORD { - DBT_APPYBEGIN, - DBT_APPYEND, - DBT_DEVNODES_CHANGED = 7, - DBT_QUERYCHANGECONFIG = 0x17, - DBT_CONFIGCHANGED = 0x18, - DBT_CONFIGCHANGECANCELED = 0x19, - DBT_MONITORCHANGE = 0x1B, - DBT_SHELLLOGGEDON = 32, - DBT_CONFIGMGAPI32 = 34, - DBT_VXDINITCOMPLETE = 35, - DBT_VOLLOCKQUERYLOCK = 0x8041, - DBT_VOLLOCKLOCKTAKEN = 0x8042, - DBT_VOLLOCKLOCKFAILED = 0x8043, - DBT_VOLLOCKQUERYUNLOCK = 0x8044, - DBT_VOLLOCKLOCKRELEASED = 0x8045, - DBT_VOLLOCKUNLOCKFAILED = 0x8046, - DBT_USERDEFINED = 0xFFFF + DBT_APPYBEGIN, + DBT_APPYEND, + DBT_DEVNODES_CHANGED = 7, + DBT_QUERYCHANGECONFIG = 0x17, + DBT_CONFIGCHANGED = 0x18, + DBT_CONFIGCHANGECANCELED = 0x19, + DBT_MONITORCHANGE = 0x1B, + DBT_SHELLLOGGEDON = 32, + DBT_CONFIGMGAPI32 = 34, + DBT_VXDINITCOMPLETE = 35, + DBT_VOLLOCKQUERYLOCK = 0x8041, + DBT_VOLLOCKLOCKTAKEN = 0x8042, + DBT_VOLLOCKLOCKFAILED = 0x8043, + DBT_VOLLOCKQUERYUNLOCK = 0x8044, + DBT_VOLLOCKLOCKRELEASED = 0x8045, + DBT_VOLLOCKUNLOCKFAILED = 0x8046, + DBT_USERDEFINED = 0xFFFF } enum : WORD { - DBTF_MEDIA = 1, - DBTF_NET = 2 + DBTF_MEDIA = 1, + DBTF_NET = 2 } enum : DWORD { - BSM_ALLCOMPONENTS = 0, - BSM_APPLICATIONS = 8, - BSM_ALLDESKTOPS = 16, - BSM_INSTALLABLEDRIVERS = 4, - BSM_NETDRIVER = 2, - BSM_VXDS = 1, - BSF_FLUSHDISK = 0x00000004, - BSF_FORCEIFHUNG = 0x00000020, - BSF_IGNORECURRENTTASK = 0x00000002, - BSF_NOHANG = 0x00000008, - BSF_NOTIMEOUTIFNOTHUNG = 0x00000040, - BSF_POSTMESSAGE = 0x00000010, - BSF_QUERY = 0x00000001, - BSF_MSGSRV32ISOK_BIT = 31, - BSF_MSGSRV32ISOK = 0x80000000 + BSM_ALLCOMPONENTS = 0, + BSM_APPLICATIONS = 8, + BSM_ALLDESKTOPS = 16, + BSM_INSTALLABLEDRIVERS = 4, + BSM_NETDRIVER = 2, + BSM_VXDS = 1, + BSF_FLUSHDISK = 0x00000004, + BSF_FORCEIFHUNG = 0x00000020, + BSF_IGNORECURRENTTASK = 0x00000002, + BSF_NOHANG = 0x00000008, + BSF_NOTIMEOUTIFNOTHUNG = 0x00000040, + BSF_POSTMESSAGE = 0x00000010, + BSF_QUERY = 0x00000001, + BSF_MSGSRV32ISOK_BIT = 31, + BSF_MSGSRV32ISOK = 0x80000000 } //static if (_WIN32_WINNT >= 0x500) { - enum : DWORD { - BSF_ALLOWSFW = 0x00000080, - BSF_SENDNOTIFYMESSAGE = 0x00000100 - } + enum : DWORD { + BSF_ALLOWSFW = 0x00000080, + BSF_SENDNOTIFYMESSAGE = 0x00000100 + } //} static if (_WIN32_WINNT >= 0x501) { - enum : DWORD { - BSF_LUID = 0x00000400, - BSF_RETURNHDESK = 0x00000200 - } + enum : DWORD { + BSF_LUID = 0x00000400, + BSF_RETURNHDESK = 0x00000200 + } } struct DEV_BROADCAST_HDR { - DWORD dbch_size = DEV_BROADCAST_HDR.sizeof; - DWORD dbch_devicetype; - DWORD dbch_reserved; + DWORD dbch_size = DEV_BROADCAST_HDR.sizeof; + DWORD dbch_devicetype; + DWORD dbch_reserved; } alias DEV_BROADCAST_HDR* PDEV_BROADCAST_HDR; struct DEV_BROADCAST_OEM { - DWORD dbco_size = DEV_BROADCAST_OEM.sizeof; - DWORD dbco_devicetype; - DWORD dbco_reserved; - DWORD dbco_identifier; - DWORD dbco_suppfunc; + DWORD dbco_size = DEV_BROADCAST_OEM.sizeof; + DWORD dbco_devicetype; + DWORD dbco_reserved; + DWORD dbco_identifier; + DWORD dbco_suppfunc; } alias DEV_BROADCAST_OEM* PDEV_BROADCAST_OEM; struct DEV_BROADCAST_PORT_A { - DWORD dbcp_size = DEV_BROADCAST_PORT_A.sizeof; - DWORD dbcp_devicetype; - DWORD dbcp_reserved; - char _dbcp_name; - char* dbcp_name() { return &_dbcp_name; } + DWORD dbcp_size = DEV_BROADCAST_PORT_A.sizeof; + DWORD dbcp_devicetype; + DWORD dbcp_reserved; + char _dbcp_name; + char* dbcp_name() { return &_dbcp_name; } } alias DEV_BROADCAST_PORT_A* PDEV_BROADCAST_PORT_A; struct DEV_BROADCAST_PORT_W { - DWORD dbcp_size = DEV_BROADCAST_PORT_W.sizeof; - DWORD dbcp_devicetype; - DWORD dbcp_reserved; - WCHAR _dbcp_name; - WCHAR* dbcp_name() { return &_dbcp_name; } + DWORD dbcp_size = DEV_BROADCAST_PORT_W.sizeof; + DWORD dbcp_devicetype; + DWORD dbcp_reserved; + WCHAR _dbcp_name; + WCHAR* dbcp_name() { return &_dbcp_name; } } alias DEV_BROADCAST_PORT_W* PDEV_BROADCAST_PORT_W; struct DEV_BROADCAST_USERDEFINED { - DEV_BROADCAST_HDR dbud_dbh; - char _dbud_szName; - char* dbud_szName() { return &_dbud_szName; } + DEV_BROADCAST_HDR dbud_dbh; + char _dbud_szName; + char* dbud_szName() { return &_dbud_szName; } } struct DEV_BROADCAST_VOLUME { - DWORD dbcv_size = DEV_BROADCAST_VOLUME.sizeof; - DWORD dbcv_devicetype; - DWORD dbcv_reserved; - DWORD dbcv_unitmask; - WORD dbcv_flags; + DWORD dbcv_size = DEV_BROADCAST_VOLUME.sizeof; + DWORD dbcv_devicetype; + DWORD dbcv_reserved; + DWORD dbcv_unitmask; + WORD dbcv_flags; } alias DEV_BROADCAST_VOLUME* PDEV_BROADCAST_VOLUME; version (Unicode) { - alias DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT; + alias DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT; } else { - alias DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT; + alias DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT; } alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; //static if (_WIN32_WINNT >= 0x500) { - struct DEV_BROADCAST_DEVICEINTERFACE_A { - DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_A.sizeof; - DWORD dbcc_devicetype; - DWORD dbcc_reserved; - GUID dbcc_classguid; - char _dbcc_name; - char* dbcc_name() { return &_dbcc_name; } - } - alias DEV_BROADCAST_DEVICEINTERFACE_A* PDEV_BROADCAST_DEVICEINTERFACE_A; - - struct DEV_BROADCAST_DEVICEINTERFACE_W { - DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_W.sizeof; - DWORD dbcc_devicetype; - DWORD dbcc_reserved; - GUID dbcc_classguid; - WCHAR _dbcc_name; - WCHAR* dbcc_name() { return &_dbcc_name; } - } - alias DEV_BROADCAST_DEVICEINTERFACE_W* PDEV_BROADCAST_DEVICEINTERFACE_W; - - version (Unicode) { - alias DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE; - } else { - alias DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE; - } - alias DEV_BROADCAST_DEVICEINTERFACE* PDEV_BROADCAST_DEVICEINTERFACE; - - struct DEV_BROADCAST_HANDLE { - DWORD dbch_size = DEV_BROADCAST_HANDLE.sizeof; - DWORD dbch_devicetype; - DWORD dbch_reserved; - HANDLE dbch_handle; - DWORD dbch_hdevnotify; - GUID dbch_eventguid; - LONG dbch_nameoffset; - BYTE _dbch_data; - BYTE* dbch_data() { return &_dbch_data; } - } - alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; + struct DEV_BROADCAST_DEVICEINTERFACE_A { + DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_A.sizeof; + DWORD dbcc_devicetype; + DWORD dbcc_reserved; + GUID dbcc_classguid; + char _dbcc_name; + char* dbcc_name() { return &_dbcc_name; } + } + alias DEV_BROADCAST_DEVICEINTERFACE_A* PDEV_BROADCAST_DEVICEINTERFACE_A; + + struct DEV_BROADCAST_DEVICEINTERFACE_W { + DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_W.sizeof; + DWORD dbcc_devicetype; + DWORD dbcc_reserved; + GUID dbcc_classguid; + WCHAR _dbcc_name; + WCHAR* dbcc_name() { return &_dbcc_name; } + } + alias DEV_BROADCAST_DEVICEINTERFACE_W* PDEV_BROADCAST_DEVICEINTERFACE_W; + + version (Unicode) { + alias DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE; + } else { + alias DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE; + } + alias DEV_BROADCAST_DEVICEINTERFACE* PDEV_BROADCAST_DEVICEINTERFACE; + + struct DEV_BROADCAST_HANDLE { + DWORD dbch_size = DEV_BROADCAST_HANDLE.sizeof; + DWORD dbch_devicetype; + DWORD dbch_reserved; + HANDLE dbch_handle; + DWORD dbch_hdevnotify; + GUID dbch_eventguid; + LONG dbch_nameoffset; + BYTE _dbch_data; + BYTE* dbch_data() { return &_dbch_data; } + } + alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; //} diff --git a/src/core/sys/windows/dde.d b/src/core/sys/windows/dde.d index aa9d7ba101..de4e9c11a1 100644 --- a/src/core/sys/windows/dde.d +++ b/src/core/sys/windows/dde.d @@ -13,202 +13,202 @@ pragma(lib, "user32"); private import core.sys.windows.windef; enum : uint { - WM_DDE_FIRST = 0x03E0, - WM_DDE_INITIATE = WM_DDE_FIRST, - WM_DDE_TERMINATE, - WM_DDE_ADVISE, - WM_DDE_UNADVISE, - WM_DDE_ACK, - WM_DDE_DATA, - WM_DDE_REQUEST, - WM_DDE_POKE, - WM_DDE_EXECUTE, - WM_DDE_LAST = WM_DDE_EXECUTE + WM_DDE_FIRST = 0x03E0, + WM_DDE_INITIATE = WM_DDE_FIRST, + WM_DDE_TERMINATE, + WM_DDE_ADVISE, + WM_DDE_UNADVISE, + WM_DDE_ACK, + WM_DDE_DATA, + WM_DDE_REQUEST, + WM_DDE_POKE, + WM_DDE_EXECUTE, + WM_DDE_LAST = WM_DDE_EXECUTE } struct DDEACK { - ubyte bAppReturnCode; - ubyte _bf; + ubyte bAppReturnCode; + ubyte _bf; - @property ubyte reserved() { return cast(ubyte) (_bf & 0x3F); } - @property bool fBusy() { return cast(bool) (_bf & 0x40); } - @property bool fAck() { return cast(bool) (_bf & 0x80); } + @property ubyte reserved() { return cast(ubyte) (_bf & 0x3F); } + @property bool fBusy() { return cast(bool) (_bf & 0x40); } + @property bool fAck() { return cast(bool) (_bf & 0x80); } - @property ubyte reserved(ubyte r) { - _bf = cast(ubyte) ((_bf & ~0x3F) | (r & 0x3F)); - return cast(ubyte)(r & 0x3F); - } + @property ubyte reserved(ubyte r) { + _bf = cast(ubyte) ((_bf & ~0x3F) | (r & 0x3F)); + return cast(ubyte)(r & 0x3F); + } - @property bool fBusy(bool f) { _bf = cast(ubyte) ((_bf & ~0x40) | (f << 6)); return f; } - @property bool fAck(bool f) { _bf = cast(ubyte) ((_bf & ~0x80) | (f << 7)); return f; } + @property bool fBusy(bool f) { _bf = cast(ubyte) ((_bf & ~0x40) | (f << 6)); return f; } + @property bool fAck(bool f) { _bf = cast(ubyte) ((_bf & ~0x80) | (f << 7)); return f; } } struct DDEADVISE { - ushort _bf; - short cfFormat; + ushort _bf; + short cfFormat; - @property ushort reserved() { return cast(ushort) (_bf & 0x3FFF); } - @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } - @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + @property ushort reserved() { return cast(ushort) (_bf & 0x3FFF); } + @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } - @property ushort reserved(ushort r) { - _bf = cast(ushort) ((_bf & ~0x3FFF) | (r & 0x3FFF)); - return cast(ushort)(r & 0x3FFF); - } + @property ushort reserved(ushort r) { + _bf = cast(ushort) ((_bf & ~0x3FFF) | (r & 0x3FFF)); + return cast(ushort)(r & 0x3FFF); + } - @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } + @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } } struct DDEDATA { - ushort _bf; - short cfFormat; - byte _Value; - - @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } - @property bool fResponse() { return cast(bool) (_bf & 0x1000); } - @property bool fRelease() { return cast(bool) (_bf & 0x2000); } - @property bool reserved() { return cast(bool) (_bf & 0x4000); } - @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - @property byte* Value() { return &_Value; } - - @property ushort unused(ushort r) { - _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); - return cast(ushort)(r & 0x0FFF); - } - - @property bool fResponse(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } - @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - @property bool reserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } + ushort _bf; + short cfFormat; + byte _Value; + + @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } + @property bool fResponse() { return cast(bool) (_bf & 0x1000); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool reserved() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property byte* Value() { return &_Value; } + + @property ushort unused(ushort r) { + _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); + return cast(ushort)(r & 0x0FFF); + } + + @property bool fResponse(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool reserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } } struct DDEPOKE { - ushort _bf; - short cfFormat; - byte _Value; + ushort _bf; + short cfFormat; + byte _Value; - @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } - @property bool fRelease() { return cast(bool) (_bf & 0x2000); } - @property ubyte fReserved() { return cast(ubyte) ((_bf & 0xC000) >>> 14); } + @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property ubyte fReserved() { return cast(ubyte) ((_bf & 0xC000) >>> 14); } - @property byte* Value() { return &_Value; } + @property byte* Value() { return &_Value; } - @property ushort unused(ushort u) { - _bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF)); - return cast(ushort)(u & 0x1FFF); - } + @property ushort unused(ushort u) { + _bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF)); + return cast(ushort)(u & 0x1FFF); + } - @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - @property ubyte fReserved(ubyte r) { _bf = cast(ushort) ((_bf & ~0xC000) | (r << 14)); return r; } + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property ubyte fReserved(ubyte r) { _bf = cast(ushort) ((_bf & ~0xC000) | (r << 14)); return r; } } deprecated struct DDELN { - ushort _bf; - short cfFormat; - - @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } - @property bool fRelease() { return cast(bool) (_bf & 0x2000); } - @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } - @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - @property ushort unused(ushort u) { - _bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF)); - return cast(ushort)(u & 0x1FFF); - } - - @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } + ushort _bf; + short cfFormat; + + @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property ushort unused(ushort u) { + _bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF)); + return cast(ushort)(u & 0x1FFF); + } + + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } } deprecated struct DDEUP { - ushort _bf; - short cfFormat; - byte _rgb; - - @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } - @property bool fAck() { return cast(bool) (_bf & 0x1000); } - @property bool fRelease() { return cast(bool) (_bf & 0x2000); } - @property bool fReserved() { return cast(bool) (_bf & 0x4000); } - @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - @property byte* rgb() { return &_rgb; } - - @property ushort unused(ushort r) { - _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); - return cast(ushort)(r & 0x0FFF); - } - - @property bool fAck(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } - @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - @property bool fReserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } + ushort _bf; + short cfFormat; + byte _rgb; + + @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } + @property bool fAck() { return cast(bool) (_bf & 0x1000); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool fReserved() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property byte* rgb() { return &_rgb; } + + @property ushort unused(ushort r) { + _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); + return cast(ushort)(r & 0x0FFF); + } + + @property bool fAck(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool fReserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } } extern (Windows) { - BOOL DdeSetQualityOfService(HWND, const(SECURITY_QUALITY_OF_SERVICE)*, - PSECURITY_QUALITY_OF_SERVICE); - BOOL ImpersonateDdeClientWindow(HWND, HWND); - LPARAM PackDDElParam(UINT, UINT_PTR, UINT_PTR); - BOOL UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR); - BOOL FreeDDElParam(UINT, LPARAM); - LPARAM ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR); + BOOL DdeSetQualityOfService(HWND, const(SECURITY_QUALITY_OF_SERVICE)*, + PSECURITY_QUALITY_OF_SERVICE); + BOOL ImpersonateDdeClientWindow(HWND, HWND); + LPARAM PackDDElParam(UINT, UINT_PTR, UINT_PTR); + BOOL UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR); + BOOL FreeDDElParam(UINT, LPARAM); + LPARAM ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR); } debug (WindowsUnitTest) { - unittest { - DDEACK ddeack; - - with (ddeack) { - reserved = 10; - assert (_bf == 0x0A); - fBusy = true; - assert (_bf == 0x4A); - fAck = true; - assert (_bf == 0xCA); - - assert (reserved == 10); - assert (fBusy == true); - assert (fAck == true); - - reserved = 43; - assert (_bf == 0xEB); - fBusy = false; - assert (_bf == 0xAB); - fAck = false; - assert (_bf == 0x2B); - - assert (reserved == 43); - assert (fBusy == false); - assert (fAck == false); - } - - DDEPOKE ddepoke; - - with (ddepoke) { - unused = 3456; - assert (_bf == 0x0D80); - fRelease = true; - assert (_bf == 0x2D80); - fReserved = 2; - assert (_bf == 0xAD80); - - assert (unused == 3456); - assert (fRelease == true); - assert (fReserved == 2); - - unused = 2109; - assert (_bf == 0xa83d); - fRelease = false; - assert (_bf == 0x883d); - fReserved = 1; - assert (_bf == 0x483d); - - assert (unused == 2109); - assert (fRelease == false); - assert (fReserved == 1); - } - } + unittest { + DDEACK ddeack; + + with (ddeack) { + reserved = 10; + assert (_bf == 0x0A); + fBusy = true; + assert (_bf == 0x4A); + fAck = true; + assert (_bf == 0xCA); + + assert (reserved == 10); + assert (fBusy == true); + assert (fAck == true); + + reserved = 43; + assert (_bf == 0xEB); + fBusy = false; + assert (_bf == 0xAB); + fAck = false; + assert (_bf == 0x2B); + + assert (reserved == 43); + assert (fBusy == false); + assert (fAck == false); + } + + DDEPOKE ddepoke; + + with (ddepoke) { + unused = 3456; + assert (_bf == 0x0D80); + fRelease = true; + assert (_bf == 0x2D80); + fReserved = 2; + assert (_bf == 0xAD80); + + assert (unused == 3456); + assert (fRelease == true); + assert (fReserved == 2); + + unused = 2109; + assert (_bf == 0xa83d); + fRelease = false; + assert (_bf == 0x883d); + fReserved = 1; + assert (_bf == 0x483d); + + assert (unused == 2109); + assert (fRelease == false); + assert (fReserved == 1); + } + } } diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index d935314424..325ba21378 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -13,63 +13,63 @@ pragma(lib, "user32"); private import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winnt; enum : int { - CP_WINANSI = 1004, - CP_WINUNICODE = 1200 + CP_WINANSI = 1004, + CP_WINUNICODE = 1200 } enum : UINT { - XTYPF_NOBLOCK = 2, - XTYPF_NODATA = 4, - XTYPF_ACKREQ = 8 + XTYPF_NOBLOCK = 2, + XTYPF_NODATA = 4, + XTYPF_ACKREQ = 8 } enum : UINT { - XCLASS_MASK = 0xFC00, - XCLASS_BOOL = 0x1000, - XCLASS_DATA = 0x2000, - XCLASS_FLAGS = 0x4000, - XCLASS_NOTIFICATION = 0x8000 + XCLASS_MASK = 0xFC00, + XCLASS_BOOL = 0x1000, + XCLASS_DATA = 0x2000, + XCLASS_FLAGS = 0x4000, + XCLASS_NOTIFICATION = 0x8000 } enum : UINT { - XST_NULL, - XST_INCOMPLETE, - XST_CONNECTED, - XST_INIT1, - XST_INIT2, - XST_REQSENT, - XST_DATARCVD, - XST_POKESENT, - XST_POKEACKRCVD, - XST_EXECSENT, - XST_EXECACKRCVD, - XST_ADVSENT, - XST_UNADVSENT, - XST_ADVACKRCVD, - XST_UNADVACKRCVD, - XST_ADVDATASENT, - XST_ADVDATAACKRCVD // = 16 + XST_NULL, + XST_INCOMPLETE, + XST_CONNECTED, + XST_INIT1, + XST_INIT2, + XST_REQSENT, + XST_DATARCVD, + XST_POKESENT, + XST_POKEACKRCVD, + XST_EXECSENT, + XST_EXECACKRCVD, + XST_ADVSENT, + XST_UNADVSENT, + XST_ADVACKRCVD, + XST_UNADVACKRCVD, + XST_ADVDATASENT, + XST_ADVDATAACKRCVD // = 16 } enum : UINT { - XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS, - XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK, - XTYP_ADVSTART = 0x0030 | XCLASS_BOOL, - XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION, - XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS, - XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK, - XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION, - XTYP_POKE = 0x0090 | XCLASS_FLAGS, - XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_REQUEST = 0x00B0 | XCLASS_DATA, - XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK, - XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_MASK = 0x00F0, - XTYP_SHIFT = 4 + XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS, + XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK, + XTYP_ADVSTART = 0x0030 | XCLASS_BOOL, + XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION, + XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS, + XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK, + XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION, + XTYP_POKE = 0x0090 | XCLASS_FLAGS, + XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_REQUEST = 0x00B0 | XCLASS_DATA, + XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK, + XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_MASK = 0x00F0, + XTYP_SHIFT = 4 } /+ @@ -78,15 +78,15 @@ enum : UINT { +/ enum : UINT { - ST_CONNECTED = 1, - ST_ADVISE = 2, - ST_ISLOCAL = 4, - ST_BLOCKED = 8, - ST_CLIENT = 16, - ST_TERMINATED = 32, - ST_INLIST = 64, - ST_BLOCKNEXT = 128, - ST_ISSELF = 256 + ST_CONNECTED = 1, + ST_ADVISE = 2, + ST_ISLOCAL = 4, + ST_BLOCKED = 8, + ST_CLIENT = 16, + ST_TERMINATED = 32, + ST_INLIST = 64, + ST_BLOCKNEXT = 128, + ST_ISSELF = 256 } /+ @@ -94,27 +94,27 @@ enum : UINT { +/ enum : UINT { - DMLERR_NO_ERROR = 0, - DMLERR_FIRST = 0x4000, - DMLERR_ADVACKTIMEOUT = DMLERR_FIRST, - DMLERR_BUSY, - DMLERR_DATAACKTIMEOUT, - DMLERR_DLL_NOT_INITIALIZED, - DMLERR_DLL_USAGE, - DMLERR_EXECACKTIMEOUT, - DMLERR_INVALIDPARAMETER, - DMLERR_LOW_MEMORY, - DMLERR_MEMORY_ERROR, - DMLERR_NOTPROCESSED, - DMLERR_NO_CONV_ESTABLISHED, - DMLERR_POKEACKTIMEOUT, - DMLERR_POSTMSG_FAILED, - DMLERR_REENTRANCY, - DMLERR_SERVER_DIED, - DMLERR_SYS_ERROR, - DMLERR_UNADVACKTIMEOUT, - DMLERR_UNFOUND_QUEUE_ID, // = 0x4011 - DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID + DMLERR_NO_ERROR = 0, + DMLERR_FIRST = 0x4000, + DMLERR_ADVACKTIMEOUT = DMLERR_FIRST, + DMLERR_BUSY, + DMLERR_DATAACKTIMEOUT, + DMLERR_DLL_NOT_INITIALIZED, + DMLERR_DLL_USAGE, + DMLERR_EXECACKTIMEOUT, + DMLERR_INVALIDPARAMETER, + DMLERR_LOW_MEMORY, + DMLERR_MEMORY_ERROR, + DMLERR_NOTPROCESSED, + DMLERR_NO_CONV_ESTABLISHED, + DMLERR_POKEACKTIMEOUT, + DMLERR_POSTMSG_FAILED, + DMLERR_REENTRANCY, + DMLERR_SERVER_DIED, + DMLERR_SYS_ERROR, + DMLERR_UNADVACKTIMEOUT, + DMLERR_UNFOUND_QUEUE_ID, // = 0x4011 + DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID } /+ @@ -135,45 +135,45 @@ enum : UINT { +/ const DWORD - APPCLASS_STANDARD = 0, - APPCLASS_MONITOR = 0x00000001, - APPCLASS_MASK = 0x0000000F, - APPCMD_CLIENTONLY = 0x00000010, - APPCMD_FILTERINITS = 0x00000020, - APPCMD_MASK = 0x00000FF0, - CBF_FAIL_SELFCONNECTIONS = 0x00001000, - CBF_FAIL_CONNECTIONS = 0x00002000, - CBF_FAIL_ADVISES = 0x00004000, - CBF_FAIL_EXECUTES = 0x00008000, - CBF_FAIL_POKES = 0x00010000, - CBF_FAIL_REQUESTS = 0x00020000, - CBF_FAIL_ALLSVRXACTIONS = 0x0003f000, - CBF_SKIP_CONNECT_CONFIRMS = 0x00040000, - CBF_SKIP_REGISTRATIONS = 0x00080000, - CBF_SKIP_UNREGISTRATIONS = 0x00100000, - CBF_SKIP_DISCONNECTS = 0x00200000, - CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000, - MF_HSZ_INFO = 0x01000000, - MF_SENDMSGS = 0x02000000, - MF_POSTMSGS = 0x04000000, - MF_CALLBACKS = 0x08000000, - MF_ERRORS = 0x10000000, - MF_LINKS = 0x20000000, - MF_CONV = 0x40000000, - MF_MASK = 0xFF000000; + APPCLASS_STANDARD = 0, + APPCLASS_MONITOR = 0x00000001, + APPCLASS_MASK = 0x0000000F, + APPCMD_CLIENTONLY = 0x00000010, + APPCMD_FILTERINITS = 0x00000020, + APPCMD_MASK = 0x00000FF0, + CBF_FAIL_SELFCONNECTIONS = 0x00001000, + CBF_FAIL_CONNECTIONS = 0x00002000, + CBF_FAIL_ADVISES = 0x00004000, + CBF_FAIL_EXECUTES = 0x00008000, + CBF_FAIL_POKES = 0x00010000, + CBF_FAIL_REQUESTS = 0x00020000, + CBF_FAIL_ALLSVRXACTIONS = 0x0003f000, + CBF_SKIP_CONNECT_CONFIRMS = 0x00040000, + CBF_SKIP_REGISTRATIONS = 0x00080000, + CBF_SKIP_UNREGISTRATIONS = 0x00100000, + CBF_SKIP_DISCONNECTS = 0x00200000, + CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000, + MF_HSZ_INFO = 0x01000000, + MF_SENDMSGS = 0x02000000, + MF_POSTMSGS = 0x04000000, + MF_CALLBACKS = 0x08000000, + MF_ERRORS = 0x10000000, + MF_LINKS = 0x20000000, + MF_CONV = 0x40000000, + MF_MASK = 0xFF000000; enum : UINT { - EC_ENABLEALL = 0, - EC_ENABLEONE = ST_BLOCKNEXT, - EC_DISABLE = ST_BLOCKED, - EC_QUERYWAITING = 2 + EC_ENABLEALL = 0, + EC_ENABLEONE = ST_BLOCKNEXT, + EC_DISABLE = ST_BLOCKED, + EC_QUERYWAITING = 2 } enum : UINT { - DNS_REGISTER = 1, - DNS_UNREGISTER = 2, - DNS_FILTERON = 4, - DNS_FILTEROFF = 8 + DNS_REGISTER = 1, + DNS_UNREGISTER = 2, + DNS_FILTERON = 4, + DNS_FILTEROFF = 8 } /+ @@ -182,10 +182,10 @@ enum : UINT { +/ enum : int { - MH_CREATE = 1, - MH_KEEP = 2, - MH_DELETE = 3, - MH_CLEANUP = 4 + MH_CREATE = 1, + MH_KEEP = 2, + MH_DELETE = 3, + MH_CLEANUP = 4 } mixin DECLARE_HANDLE!("HCONVLIST"); @@ -197,180 +197,180 @@ extern (Windows) alias HDDEDATA function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD) PFNCALLBACK; struct HSZPAIR { - HSZ hszSvc; - HSZ hszTopic; + HSZ hszSvc; + HSZ hszTopic; } alias HSZPAIR* PHSZPAIR; struct CONVCONTEXT { - UINT cb = CONVCONTEXT.sizeof; - UINT wFlags; - UINT wCountryID; - int iCodePage; - DWORD dwLangID; - DWORD dwSecurity; - SECURITY_QUALITY_OF_SERVICE qos; + UINT cb = CONVCONTEXT.sizeof; + UINT wFlags; + UINT wCountryID; + int iCodePage; + DWORD dwLangID; + DWORD dwSecurity; + SECURITY_QUALITY_OF_SERVICE qos; } alias CONVCONTEXT* PCONVCONTEXT; struct CONVINFO { - DWORD cb = CONVINFO.sizeof; - DWORD hUser; - HCONV hConvPartner; - HSZ hszSvcPartner; - HSZ hszServiceReq; - HSZ hszTopic; - HSZ hszItem; - UINT wFmt; - UINT wType; - UINT wStatus; - UINT wConvst; - UINT wLastError; - HCONVLIST hConvList; - CONVCONTEXT ConvCtxt; - HWND hwnd; - HWND hwndPartner; + DWORD cb = CONVINFO.sizeof; + DWORD hUser; + HCONV hConvPartner; + HSZ hszSvcPartner; + HSZ hszServiceReq; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + UINT wType; + UINT wStatus; + UINT wConvst; + UINT wLastError; + HCONVLIST hConvList; + CONVCONTEXT ConvCtxt; + HWND hwnd; + HWND hwndPartner; } alias CONVINFO* PCONVINFO; struct DDEML_MSG_HOOK_DATA { - UINT_PTR uiLo; - UINT_PTR uiHi; - DWORD cbData; - DWORD[8] Data; + UINT_PTR uiLo; + UINT_PTR uiHi; + DWORD cbData; + DWORD[8] Data; } struct MONHSZSTRUCT { - UINT cb = MONHSZSTRUCT.sizeof; - int fsAction; - DWORD dwTime; - HSZ hsz; - HANDLE hTask; - TCHAR[1] _str; - - TCHAR* str() { return _str.ptr; } + UINT cb = MONHSZSTRUCT.sizeof; + int fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + TCHAR[1] _str; + + TCHAR* str() { return _str.ptr; } } alias MONHSZSTRUCT* PMONHSZSTRUCT; struct MONLINKSTRUCT { - UINT cb = MONLINKSTRUCT.sizeof; - DWORD dwTime; - HANDLE hTask; - BOOL fEstablished; - BOOL fNoData; - HSZ hszSvc; - HSZ hszTopic; - HSZ hszItem; - UINT wFmt; - BOOL fServer; - HCONV hConvServer; - HCONV hConvClient; + UINT cb = MONLINKSTRUCT.sizeof; + DWORD dwTime; + HANDLE hTask; + BOOL fEstablished; + BOOL fNoData; + HSZ hszSvc; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + BOOL fServer; + HCONV hConvServer; + HCONV hConvClient; } alias MONLINKSTRUCT* PMONLINKSTRUCT; struct MONCONVSTRUCT { - UINT cb = MONCONVSTRUCT.sizeof; - BOOL fConnect; - DWORD dwTime; - HANDLE hTask; - HSZ hszSvc; - HSZ hszTopic; - HCONV hConvClient; - HCONV hConvServer; + UINT cb = MONCONVSTRUCT.sizeof; + BOOL fConnect; + DWORD dwTime; + HANDLE hTask; + HSZ hszSvc; + HSZ hszTopic; + HCONV hConvClient; + HCONV hConvServer; } alias MONCONVSTRUCT* PMONCONVSTRUCT; struct MONCBSTRUCT { - UINT cb = MONCBSTRUCT.sizeof; - DWORD dwTime; - HANDLE hTask; - DWORD dwRet; - UINT wType; - UINT wFmt; - HCONV hConv; - HSZ hsz1; - HSZ hsz2; - HDDEDATA hData; - ULONG_PTR dwData1; - ULONG_PTR dwData2; - CONVCONTEXT cc; - DWORD cbData; - DWORD[8] Data; + UINT cb = MONCBSTRUCT.sizeof; + DWORD dwTime; + HANDLE hTask; + DWORD dwRet; + UINT wType; + UINT wFmt; + HCONV hConv; + HSZ hsz1; + HSZ hsz2; + HDDEDATA hData; + ULONG_PTR dwData1; + ULONG_PTR dwData2; + CONVCONTEXT cc; + DWORD cbData; + DWORD[8] Data; } alias MONCBSTRUCT* PMONCBSTRUCT; struct MONERRSTRUCT { - UINT cb = MONERRSTRUCT.sizeof; - UINT wLastError; - DWORD dwTime; - HANDLE hTask; + UINT cb = MONERRSTRUCT.sizeof; + UINT wLastError; + DWORD dwTime; + HANDLE hTask; } alias MONERRSTRUCT* PMONERRSTRUCT; struct MONMSGSTRUCT { - UINT cb = MONMSGSTRUCT.sizeof; - HWND hwndTo; - DWORD dwTime; - HANDLE hTask; - UINT wMsg; - WPARAM wParam; - LPARAM lParam; - DDEML_MSG_HOOK_DATA dmhd; + UINT cb = MONMSGSTRUCT.sizeof; + HWND hwndTo; + DWORD dwTime; + HANDLE hTask; + UINT wMsg; + WPARAM wParam; + LPARAM lParam; + DDEML_MSG_HOOK_DATA dmhd; } alias MONMSGSTRUCT* PMONMSGSTRUCT; extern (Windows) { - BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD); - PBYTE DdeAccessData(HDDEDATA, PDWORD); - HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD); - HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT, - DWORD, PDWORD); - int DdeCmpStringHandles(HSZ, HSZ); - HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT); - HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT); - HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT, - UINT); - HSZ DdeCreateStringHandleA(DWORD, LPSTR, int); - HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int); - BOOL DdeDisconnect(HCONV); - BOOL DdeDisconnectList(HCONVLIST); - BOOL DdeEnableCallback(DWORD, HCONV, UINT); - BOOL DdeFreeDataHandle(HDDEDATA); - BOOL DdeFreeStringHandle(DWORD, HSZ); - DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD); - UINT DdeGetLastError(DWORD); - BOOL DdeImpersonateClient(HCONV); - UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD); - UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD); - BOOL DdeKeepStringHandle(DWORD, HSZ); - HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT); - BOOL DdePostAdvise(DWORD, HSZ, HSZ); - UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO); - HCONV DdeQueryNextServer(HCONVLIST, HCONV); - DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int); - DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int); - HCONV DdeReconnect(HCONV); - BOOL DdeSetUserHandle(HCONV, DWORD, DWORD); - BOOL DdeUnaccessData(HDDEDATA); - BOOL DdeUninitialize(DWORD); + BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD); + PBYTE DdeAccessData(HDDEDATA, PDWORD); + HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD); + HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT, + DWORD, PDWORD); + int DdeCmpStringHandles(HSZ, HSZ); + HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT); + HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT); + HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT, + UINT); + HSZ DdeCreateStringHandleA(DWORD, LPSTR, int); + HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int); + BOOL DdeDisconnect(HCONV); + BOOL DdeDisconnectList(HCONVLIST); + BOOL DdeEnableCallback(DWORD, HCONV, UINT); + BOOL DdeFreeDataHandle(HDDEDATA); + BOOL DdeFreeStringHandle(DWORD, HSZ); + DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD); + UINT DdeGetLastError(DWORD); + BOOL DdeImpersonateClient(HCONV); + UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD); + UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD); + BOOL DdeKeepStringHandle(DWORD, HSZ); + HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT); + BOOL DdePostAdvise(DWORD, HSZ, HSZ); + UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO); + HCONV DdeQueryNextServer(HCONVLIST, HCONV); + DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int); + DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int); + HCONV DdeReconnect(HCONV); + BOOL DdeSetUserHandle(HCONV, DWORD, DWORD); + BOOL DdeUnaccessData(HDDEDATA); + BOOL DdeUninitialize(DWORD); } const TCHAR[] - SZDDESYS_TOPIC = "System", - SZDDESYS_ITEM_TOPICS = "Topics", - SZDDESYS_ITEM_SYSITEMS = "SysItems", - SZDDESYS_ITEM_RTNMSG = "ReturnMessage", - SZDDESYS_ITEM_STATUS = "Status", - SZDDESYS_ITEM_FORMATS = "Formats", - SZDDESYS_ITEM_HELP = "Help", - SZDDE_ITEM_ITEMLIST = "TopicItemList"; + SZDDESYS_TOPIC = "System", + SZDDESYS_ITEM_TOPICS = "Topics", + SZDDESYS_ITEM_SYSITEMS = "SysItems", + SZDDESYS_ITEM_RTNMSG = "ReturnMessage", + SZDDESYS_ITEM_STATUS = "Status", + SZDDESYS_ITEM_FORMATS = "Formats", + SZDDESYS_ITEM_HELP = "Help", + SZDDE_ITEM_ITEMLIST = "TopicItemList"; version (Unicode) { - alias DdeCreateStringHandleW DdeCreateStringHandle; - alias DdeInitializeW DdeInitialize; - alias DdeQueryStringW DdeQueryString; + alias DdeCreateStringHandleW DdeCreateStringHandle; + alias DdeInitializeW DdeInitialize; + alias DdeQueryStringW DdeQueryString; } else { - alias DdeCreateStringHandleA DdeCreateStringHandle; - alias DdeInitializeA DdeInitialize; - alias DdeQueryStringA DdeQueryString; + alias DdeCreateStringHandleA DdeCreateStringHandle; + alias DdeInitializeA DdeInitialize; + alias DdeQueryStringA DdeQueryString; } diff --git a/src/core/sys/windows/dhcpcsdk.d b/src/core/sys/windows/dhcpcsdk.d index 3631ace072..92a90b415f 100644 --- a/src/core/sys/windows/dhcpcsdk.d +++ b/src/core/sys/windows/dhcpcsdk.d @@ -23,35 +23,35 @@ const DHCPCAPI_REQUEST_PERSISTENT = 1; const DHCPCAPI_REQUEST_SYNCHRONOUS = 2; struct DHCPCAPI_CLASSID { - ULONG Flags; - LPBYTE Data; - ULONG nBytesData; + ULONG Flags; + LPBYTE Data; + ULONG nBytesData; } alias DHCPCAPI_CLASSID* PDHCPCAPI_CLASSID, LPDHCPCAPI_CLASSID; struct DHCPAPI_PARAMS { - ULONG Flags; - ULONG OptionId; - BOOL IsVendor; - LPBYTE Data; - DWORD nBytesData; + ULONG Flags; + ULONG OptionId; + BOOL IsVendor; + LPBYTE Data; + DWORD nBytesData; } alias DHCPAPI_PARAMS* PDHCPAPI_PARAMS, LPDHCPAPI_PARAMS; struct DHCPCAPI_PARAMS_ARRAY { - ULONG nParams; - LPDHCPAPI_PARAMS Params; + ULONG nParams; + LPDHCPAPI_PARAMS Params; } alias DHCPCAPI_PARAMS_ARRAY* PDHCPCAPI_PARAMS_ARRAY, LPDHCPCAPI_PARAMS_ARRAY; extern (Windows) { - void DhcpCApiCleanup(); - DWORD DhcpCApiInitialize(LPDWORD); - DWORD DhcpDeRegisterParamChange(DWORD, LPVOID, LPVOID); - DWORD DhcpRegisterParamChange(DWORD, LPVOID, PWSTR, LPDHCPCAPI_CLASSID, - DHCPCAPI_PARAMS_ARRAY, LPVOID); - DWORD DhcpRemoveDNSRegistrations(); - DWORD DhcpUndoRequestParams(DWORD, LPVOID, LPWSTR, LPWSTR); + void DhcpCApiCleanup(); + DWORD DhcpCApiInitialize(LPDWORD); + DWORD DhcpDeRegisterParamChange(DWORD, LPVOID, LPVOID); + DWORD DhcpRegisterParamChange(DWORD, LPVOID, PWSTR, LPDHCPCAPI_CLASSID, + DHCPCAPI_PARAMS_ARRAY, LPVOID); + DWORD DhcpRemoveDNSRegistrations(); + DWORD DhcpUndoRequestParams(DWORD, LPVOID, LPWSTR, LPWSTR); } //#endif // (_WIN32_WINNT >= 0x500) diff --git a/src/core/sys/windows/dlgs.d b/src/core/sys/windows/dlgs.d index 7fb535ee2c..30bfd22349 100644 --- a/src/core/sys/windows/dlgs.d +++ b/src/core/sys/windows/dlgs.d @@ -12,179 +12,179 @@ module core.sys.windows.dlgs; private import core.sys.windows.windef; enum : ushort { - FILEOPENORD = 1536, - MULTIFILEOPENORD = 1537, - PRINTDLGORD = 1538, - PRNSETUPDLGORD = 1539, - FINDDLGORD = 1540, - REPLACEDLGORD = 1541, - FONTDLGORD = 1542, - FORMATDLGORD31 = 1543, - FORMATDLGORD30 = 1544, - PAGESETUPDLGORD = 1546 + FILEOPENORD = 1536, + MULTIFILEOPENORD = 1537, + PRINTDLGORD = 1538, + PRNSETUPDLGORD = 1539, + FINDDLGORD = 1540, + REPLACEDLGORD = 1541, + FONTDLGORD = 1542, + FORMATDLGORD31 = 1543, + FORMATDLGORD30 = 1544, + PAGESETUPDLGORD = 1546 } enum : int { - ctlFirst = 0x400, - ctlLast = 0x4ff, - chx1 = 0x410, - chx2 = 0x411, - chx3 = 0x412, - chx4 = 0x413, - chx5 = 0x414, - chx6 = 0x415, - chx7 = 0x416, - chx8 = 0x417, - chx9 = 0x418, - chx10 = 0x419, - chx11 = 0x41a, - chx12 = 0x41b, - chx13 = 0x41c, - chx14 = 0x41d, - chx15 = 0x41e, - chx16 = 0x41f, - cmb1 = 0x470, - cmb2 = 0x471, - cmb3 = 0x472, - cmb4 = 0x473, - cmb5 = 0x474, - cmb6 = 0x475, - cmb7 = 0x476, - cmb8 = 0x477, - cmb9 = 0x478, - cmb10 = 0x479, - cmb11 = 0x47a, - cmb12 = 0x47b, - cmb13 = 0x47c, - cmb14 = 0x47d, - cmb15 = 0x47e, - cmb16 = 0x47f, - edt1 = 0x480, - edt2 = 0x481, - edt3 = 0x482, - edt4 = 0x483, - edt5 = 0x484, - edt6 = 0x485, - edt7 = 0x486, - edt8 = 0x487, - edt9 = 0x488, - edt10 = 0x489, - edt11 = 0x48a, - edt12 = 0x48b, - edt13 = 0x48c, - edt14 = 0x48d, - edt15 = 0x48e, - edt16 = 0x48f, - frm1 = 0x434, - frm2 = 0x435, - frm3 = 0x436, - frm4 = 0x437, - grp1 = 0x430, - grp2 = 0x431, - grp3 = 0x432, - grp4 = 0x433, - ico1 = 0x43c, - ico2 = 0x43d, - ico3 = 0x43e, - ico4 = 0x43f, - lst1 = 0x460, - lst2 = 0x461, - lst3 = 0x462, - lst4 = 0x463, - lst5 = 0x464, - lst6 = 0x465, - lst7 = 0x466, - lst8 = 0x467, - lst9 = 0x468, - lst10 = 0x469, - lst11 = 0x46a, - lst12 = 0x46b, - lst13 = 0x46c, - lst14 = 0x46d, - lst15 = 0x46e, - lst16 = 0x46f, - psh1 = 0x400, - psh2 = 0x401, - psh3 = 0x402, - psh4 = 0x403, - psh5 = 0x404, - psh6 = 0x405, - psh7 = 0x406, - psh8 = 0x407, - psh9 = 0x408, - psh10 = 0x409, - psh11 = 0x40a, - psh12 = 0x40b, - psh13 = 0x40c, - psh14 = 0x40d, - psh15 = 0x40e, - pshHelp = 0x40e, - psh16 = 0x40f, - rad1 = 0x420, - rad2 = 0x421, - rad3 = 0x422, - rad4 = 0x423, - rad5 = 0x424, - rad6 = 0x425, - rad7 = 0x426, - rad8 = 0x427, - rad9 = 0x428, - rad10 = 0x429, - rad11 = 0x42a, - rad12 = 0x42b, - rad13 = 0x42c, - rad14 = 0x42d, - rad15 = 0x42e, - rad16 = 0x42f, - rct1 = 0x438, - rct2 = 0x439, - rct3 = 0x43a, - rct4 = 0x43b, - scr1 = 0x490, - scr2 = 0x491, - scr3 = 0x492, - scr4 = 0x493, - scr5 = 0x494, - scr6 = 0x495, - scr7 = 0x496, - scr8 = 0x497, - stc1 = 0x440, - stc2 = 0x441, - stc3 = 0x442, - stc4 = 0x443, - stc5 = 0x444, - stc6 = 0x445, - stc7 = 0x446, - stc8 = 0x447, - stc9 = 0x448, - stc10 = 0x449, - stc11 = 0x44a, - stc12 = 0x44b, - stc13 = 0x44c, - stc14 = 0x44d, - stc15 = 0x44e, - stc16 = 0x44f, - stc17 = 0x450, - stc18 = 0x451, - stc19 = 0x452, - stc20 = 0x453, - stc21 = 0x454, - stc22 = 0x455, - stc23 = 0x456, - stc24 = 0x457, - stc25 = 0x458, - stc26 = 0x459, - stc27 = 0x45a, - stc28 = 0x45b, - stc29 = 0x45c, - stc30 = 0x45d, - stc31 = 0x45e, - stc32 = 0x45f + ctlFirst = 0x400, + ctlLast = 0x4ff, + chx1 = 0x410, + chx2 = 0x411, + chx3 = 0x412, + chx4 = 0x413, + chx5 = 0x414, + chx6 = 0x415, + chx7 = 0x416, + chx8 = 0x417, + chx9 = 0x418, + chx10 = 0x419, + chx11 = 0x41a, + chx12 = 0x41b, + chx13 = 0x41c, + chx14 = 0x41d, + chx15 = 0x41e, + chx16 = 0x41f, + cmb1 = 0x470, + cmb2 = 0x471, + cmb3 = 0x472, + cmb4 = 0x473, + cmb5 = 0x474, + cmb6 = 0x475, + cmb7 = 0x476, + cmb8 = 0x477, + cmb9 = 0x478, + cmb10 = 0x479, + cmb11 = 0x47a, + cmb12 = 0x47b, + cmb13 = 0x47c, + cmb14 = 0x47d, + cmb15 = 0x47e, + cmb16 = 0x47f, + edt1 = 0x480, + edt2 = 0x481, + edt3 = 0x482, + edt4 = 0x483, + edt5 = 0x484, + edt6 = 0x485, + edt7 = 0x486, + edt8 = 0x487, + edt9 = 0x488, + edt10 = 0x489, + edt11 = 0x48a, + edt12 = 0x48b, + edt13 = 0x48c, + edt14 = 0x48d, + edt15 = 0x48e, + edt16 = 0x48f, + frm1 = 0x434, + frm2 = 0x435, + frm3 = 0x436, + frm4 = 0x437, + grp1 = 0x430, + grp2 = 0x431, + grp3 = 0x432, + grp4 = 0x433, + ico1 = 0x43c, + ico2 = 0x43d, + ico3 = 0x43e, + ico4 = 0x43f, + lst1 = 0x460, + lst2 = 0x461, + lst3 = 0x462, + lst4 = 0x463, + lst5 = 0x464, + lst6 = 0x465, + lst7 = 0x466, + lst8 = 0x467, + lst9 = 0x468, + lst10 = 0x469, + lst11 = 0x46a, + lst12 = 0x46b, + lst13 = 0x46c, + lst14 = 0x46d, + lst15 = 0x46e, + lst16 = 0x46f, + psh1 = 0x400, + psh2 = 0x401, + psh3 = 0x402, + psh4 = 0x403, + psh5 = 0x404, + psh6 = 0x405, + psh7 = 0x406, + psh8 = 0x407, + psh9 = 0x408, + psh10 = 0x409, + psh11 = 0x40a, + psh12 = 0x40b, + psh13 = 0x40c, + psh14 = 0x40d, + psh15 = 0x40e, + pshHelp = 0x40e, + psh16 = 0x40f, + rad1 = 0x420, + rad2 = 0x421, + rad3 = 0x422, + rad4 = 0x423, + rad5 = 0x424, + rad6 = 0x425, + rad7 = 0x426, + rad8 = 0x427, + rad9 = 0x428, + rad10 = 0x429, + rad11 = 0x42a, + rad12 = 0x42b, + rad13 = 0x42c, + rad14 = 0x42d, + rad15 = 0x42e, + rad16 = 0x42f, + rct1 = 0x438, + rct2 = 0x439, + rct3 = 0x43a, + rct4 = 0x43b, + scr1 = 0x490, + scr2 = 0x491, + scr3 = 0x492, + scr4 = 0x493, + scr5 = 0x494, + scr6 = 0x495, + scr7 = 0x496, + scr8 = 0x497, + stc1 = 0x440, + stc2 = 0x441, + stc3 = 0x442, + stc4 = 0x443, + stc5 = 0x444, + stc6 = 0x445, + stc7 = 0x446, + stc8 = 0x447, + stc9 = 0x448, + stc10 = 0x449, + stc11 = 0x44a, + stc12 = 0x44b, + stc13 = 0x44c, + stc14 = 0x44d, + stc15 = 0x44e, + stc16 = 0x44f, + stc17 = 0x450, + stc18 = 0x451, + stc19 = 0x452, + stc20 = 0x453, + stc21 = 0x454, + stc22 = 0x455, + stc23 = 0x456, + stc24 = 0x457, + stc25 = 0x458, + stc26 = 0x459, + stc27 = 0x45a, + stc28 = 0x45b, + stc29 = 0x45c, + stc30 = 0x45d, + stc31 = 0x45e, + stc32 = 0x45f } struct CRGB { - ubyte bRed; - ubyte bGreen; - ubyte bBlue; - ubyte bExtra; + ubyte bRed; + ubyte bGreen; + ubyte bBlue; + ubyte bExtra; } diff --git a/src/core/sys/windows/docobj.d b/src/core/sys/windows/docobj.d index 656e6a0859..42a6e5daea 100644 --- a/src/core/sys/windows/docobj.d +++ b/src/core/sys/windows/docobj.d @@ -14,119 +14,119 @@ private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windo // FIXME: remove inherited methods from interface definitions enum { - OLECMDERR_E_UNKNOWNGROUP = -2147221244, - OLECMDERR_E_CANCELED = -2147221245, - OLECMDERR_E_NOHELP = -2147221246, - OLECMDERR_E_DISABLED = -2147221247, - OLECMDERR_E_NOTSUPPORTED = -2147221248 + OLECMDERR_E_UNKNOWNGROUP = -2147221244, + OLECMDERR_E_CANCELED = -2147221245, + OLECMDERR_E_NOHELP = -2147221246, + OLECMDERR_E_DISABLED = -2147221247, + OLECMDERR_E_NOTSUPPORTED = -2147221248 } enum OLECMDID { - OLECMDID_OPEN = 1, - OLECMDID_NEW = 2, - OLECMDID_SAVE = 3, - OLECMDID_SAVEAS = 4, - OLECMDID_SAVECOPYAS = 5, - OLECMDID_PRINT = 6, - OLECMDID_PRINTPREVIEW = 7, - OLECMDID_PAGESETUP = 8, - OLECMDID_SPELL = 9, - OLECMDID_PROPERTIES = 10, - OLECMDID_CUT = 11, - OLECMDID_COPY = 12, - OLECMDID_PASTE = 13, - OLECMDID_PASTESPECIAL = 14, - OLECMDID_UNDO = 15, - OLECMDID_REDO = 16, - OLECMDID_SELECTALL = 17, - OLECMDID_CLEARSELECTION = 18, - OLECMDID_ZOOM = 19, - OLECMDID_GETZOOMRANGE = 20, - OLECMDID_UPDATECOMMANDS = 21, - OLECMDID_REFRESH = 22, - OLECMDID_STOP = 23, - OLECMDID_HIDETOOLBARS = 24, - OLECMDID_SETPROGRESSMAX = 25, - OLECMDID_SETPROGRESSPOS = 26, - OLECMDID_SETPROGRESSTEXT = 27, - OLECMDID_SETTITLE = 28, - OLECMDID_SETDOWNLOADSTATE = 29, - OLECMDID_STOPDOWNLOAD = 30 + OLECMDID_OPEN = 1, + OLECMDID_NEW = 2, + OLECMDID_SAVE = 3, + OLECMDID_SAVEAS = 4, + OLECMDID_SAVECOPYAS = 5, + OLECMDID_PRINT = 6, + OLECMDID_PRINTPREVIEW = 7, + OLECMDID_PAGESETUP = 8, + OLECMDID_SPELL = 9, + OLECMDID_PROPERTIES = 10, + OLECMDID_CUT = 11, + OLECMDID_COPY = 12, + OLECMDID_PASTE = 13, + OLECMDID_PASTESPECIAL = 14, + OLECMDID_UNDO = 15, + OLECMDID_REDO = 16, + OLECMDID_SELECTALL = 17, + OLECMDID_CLEARSELECTION = 18, + OLECMDID_ZOOM = 19, + OLECMDID_GETZOOMRANGE = 20, + OLECMDID_UPDATECOMMANDS = 21, + OLECMDID_REFRESH = 22, + OLECMDID_STOP = 23, + OLECMDID_HIDETOOLBARS = 24, + OLECMDID_SETPROGRESSMAX = 25, + OLECMDID_SETPROGRESSPOS = 26, + OLECMDID_SETPROGRESSTEXT = 27, + OLECMDID_SETTITLE = 28, + OLECMDID_SETDOWNLOADSTATE = 29, + OLECMDID_STOPDOWNLOAD = 30 } enum OLECMDF { - OLECMDF_SUPPORTED = 1, - OLECMDF_ENABLED = 2, - OLECMDF_LATCHED = 4, - OLECMDF_NINCHED = 8 + OLECMDF_SUPPORTED = 1, + OLECMDF_ENABLED = 2, + OLECMDF_LATCHED = 4, + OLECMDF_NINCHED = 8 } enum OLECMDEXECOPT { - OLECMDEXECOPT_DODEFAULT = 0, - OLECMDEXECOPT_PROMPTUSER = 1, - OLECMDEXECOPT_DONTPROMPTUSER = 2, - OLECMDEXECOPT_SHOWHELP = 3 + OLECMDEXECOPT_DODEFAULT = 0, + OLECMDEXECOPT_PROMPTUSER = 1, + OLECMDEXECOPT_DONTPROMPTUSER = 2, + OLECMDEXECOPT_SHOWHELP = 3 } struct OLECMDTEXT { - DWORD cmdtextf; - ULONG cwActual; - ULONG cwBuf; - wchar[1] rgwz; + DWORD cmdtextf; + ULONG cwActual; + ULONG cwBuf; + wchar[1] rgwz; } struct OLECMD { - ULONG cmdID; - DWORD cmdf; + ULONG cmdID; + DWORD cmdf; } alias IOleInPlaceSite LPOLEINPLACESITE; alias IEnumOleDocumentViews LPENUMOLEDOCUMENTVIEWS; extern (C) extern const IID - IID_IContinueCallback, - IID_IEnumOleDocumentViews, - IID_IPrint, - IID_IOleDocumentView, - IID_IOleDocument, - IID_IOleCommandTarget, - IID_IOleDocumentSite; + IID_IContinueCallback, + IID_IEnumOleDocumentViews, + IID_IPrint, + IID_IOleDocumentView, + IID_IOleDocument, + IID_IOleCommandTarget, + IID_IOleDocumentSite; interface IOleDocumentView : IUnknown { - HRESULT SetInPlaceSite(LPOLEINPLACESITE); - HRESULT GetInPlaceSite(LPOLEINPLACESITE*); - HRESULT GetDocument(IUnknown*); - HRESULT SetRect(LPRECT); - HRESULT GetRect(LPRECT); - HRESULT SetRectComplex(LPRECT, LPRECT, LPRECT, LPRECT); - HRESULT Show(BOOL); - HRESULT UIActivate(BOOL); - HRESULT Open(); - HRESULT Close(DWORD); - HRESULT SaveViewState(IStream); - HRESULT ApplyViewState(IStream); - HRESULT Clone(LPOLEINPLACESITE, IOleDocumentView*); + HRESULT SetInPlaceSite(LPOLEINPLACESITE); + HRESULT GetInPlaceSite(LPOLEINPLACESITE*); + HRESULT GetDocument(IUnknown*); + HRESULT SetRect(LPRECT); + HRESULT GetRect(LPRECT); + HRESULT SetRectComplex(LPRECT, LPRECT, LPRECT, LPRECT); + HRESULT Show(BOOL); + HRESULT UIActivate(BOOL); + HRESULT Open(); + HRESULT Close(DWORD); + HRESULT SaveViewState(IStream); + HRESULT ApplyViewState(IStream); + HRESULT Clone(LPOLEINPLACESITE, IOleDocumentView*); } interface IEnumOleDocumentViews : IUnknown { - HRESULT Next(ULONG, IOleDocumentView, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumOleDocumentViews*); + HRESULT Next(ULONG, IOleDocumentView, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOleDocumentViews*); } interface IOleDocument : IUnknown { - HRESULT CreateView(LPOLEINPLACESITE, IStream, DWORD, IOleDocumentView*); - HRESULT GetDocMiscStatus(DWORD*); - HRESULT EnumViews(LPENUMOLEDOCUMENTVIEWS*, IOleDocumentView*); + HRESULT CreateView(LPOLEINPLACESITE, IStream, DWORD, IOleDocumentView*); + HRESULT GetDocMiscStatus(DWORD*); + HRESULT EnumViews(LPENUMOLEDOCUMENTVIEWS*, IOleDocumentView*); } interface IOleCommandTarget : IUnknown { - HRESULT QueryStatus(const(GUID)*, ULONG, OLECMD*, OLECMDTEXT*); - HRESULT Exec(const(GUID)*, DWORD, DWORD, VARIANTARG*, VARIANTARG*); + HRESULT QueryStatus(const(GUID)*, ULONG, OLECMD*, OLECMDTEXT*); + HRESULT Exec(const(GUID)*, DWORD, DWORD, VARIANTARG*, VARIANTARG*); } interface IOleDocumentSite : IUnknown { - HRESULT ActivateMe(IOleDocumentView); + HRESULT ActivateMe(IOleDocumentView); } diff --git a/src/core/sys/windows/errorrep.d b/src/core/sys/windows/errorrep.d index 293896db5a..19791fd3d5 100644 --- a/src/core/sys/windows/errorrep.d +++ b/src/core/sys/windows/errorrep.d @@ -12,28 +12,28 @@ module core.sys.windows.errorrep; private import core.sys.windows.w32api, core.sys.windows.windef; static assert (_WIN32_WINNT >= 0x501, - "core.sys.windows.errorrep is available only if version WindowsXP, Windows2003 " - "or WindowsVista is set"); + "core.sys.windows.errorrep is available only if version WindowsXP, Windows2003 " + "or WindowsVista is set"); enum EFaultRepRetVal { - frrvOk, - frrvOkManifest, - frrvOkQueued, - frrvErr, - frrvErrNoDW, - frrvErrTimeout, - frrvLaunchDebugger, - frrvOkHeadless // = 7 + frrvOk, + frrvOkManifest, + frrvOkQueued, + frrvErr, + frrvErrNoDW, + frrvErrTimeout, + frrvLaunchDebugger, + frrvOkHeadless // = 7 } extern (Windows) { - BOOL AddERExcludedApplicationA(LPCSTR); - BOOL AddERExcludedApplicationW(LPCWSTR); - EFaultRepRetVal ReportFault(LPEXCEPTION_POINTERS, DWORD); + BOOL AddERExcludedApplicationA(LPCSTR); + BOOL AddERExcludedApplicationW(LPCWSTR); + EFaultRepRetVal ReportFault(LPEXCEPTION_POINTERS, DWORD); } version (Unicode) { - alias AddERExcludedApplicationW AddERExcludedApplication; + alias AddERExcludedApplicationW AddERExcludedApplication; } else { - alias AddERExcludedApplicationA AddERExcludedApplication; + alias AddERExcludedApplicationA AddERExcludedApplication; } diff --git a/src/core/sys/windows/exdisp.d b/src/core/sys/windows/exdisp.d index 8abeaaffc0..f6c1ff2a7c 100644 --- a/src/core/sys/windows/exdisp.d +++ b/src/core/sys/windows/exdisp.d @@ -13,114 +13,114 @@ private import core.sys.windows.basetyps, core.sys.windows.windef, core.sys.wind enum BrowserNavConstants { - navOpenInNewWindow = 0x01, - navNoHistory = 0x02, - navNoReadFromCache = 0x04, - navNoWriteTocache = 0x08, - navAllowAutosearch = 0x10, - navBrowserBar = 0x20, - navHyperLink = 0x40 + navOpenInNewWindow = 0x01, + navNoHistory = 0x02, + navNoReadFromCache = 0x04, + navNoWriteTocache = 0x08, + navAllowAutosearch = 0x10, + navBrowserBar = 0x20, + navHyperLink = 0x40 } interface IWebBrowser : IDispatch { - HRESULT GoBack(); - HRESULT GoForward(); - HRESULT GoHome(); - HRESULT GoSearch(); - HRESULT Navigate(BSTR, VARIANT*, VARIANT*, VARIANT*, VARIANT*); - HRESULT Refresh(); - HRESULT Refresh2(VARIANT*); - HRESULT Stop(); - HRESULT get_Application(IDispatch* ppDisp); - HRESULT get_Parent(IDispatch* ppDisp); - HRESULT get_Container(IDispatch* ppDisp); - HRESULT get_Document(IDispatch* ppDisp); - HRESULT get_TopLevelContainer(VARIANT_BOOL*); - HRESULT get_Type(BSTR*); - HRESULT get_Left(LONG*); - HRESULT put_Left(LONG); - HRESULT get_Top(LONG*); - HRESULT put_Top(LONG); - HRESULT get_Width(LONG*); - HRESULT put_Width(LONG); - HRESULT get_Height(LONG*); - HRESULT put_Height(LONG); - HRESULT get_LocationName(BSTR*); - HRESULT get_LocationURL(BSTR*); - HRESULT get_Busy(VARIANT_BOOL*); + HRESULT GoBack(); + HRESULT GoForward(); + HRESULT GoHome(); + HRESULT GoSearch(); + HRESULT Navigate(BSTR, VARIANT*, VARIANT*, VARIANT*, VARIANT*); + HRESULT Refresh(); + HRESULT Refresh2(VARIANT*); + HRESULT Stop(); + HRESULT get_Application(IDispatch* ppDisp); + HRESULT get_Parent(IDispatch* ppDisp); + HRESULT get_Container(IDispatch* ppDisp); + HRESULT get_Document(IDispatch* ppDisp); + HRESULT get_TopLevelContainer(VARIANT_BOOL*); + HRESULT get_Type(BSTR*); + HRESULT get_Left(LONG*); + HRESULT put_Left(LONG); + HRESULT get_Top(LONG*); + HRESULT put_Top(LONG); + HRESULT get_Width(LONG*); + HRESULT put_Width(LONG); + HRESULT get_Height(LONG*); + HRESULT put_Height(LONG); + HRESULT get_LocationName(BSTR*); + HRESULT get_LocationURL(BSTR*); + HRESULT get_Busy(VARIANT_BOOL*); } interface IWebBrowserApp : IWebBrowser { - HRESULT Quit(); - HRESULT ClientToWindow(int*, int*); - HRESULT PutProperty(BSTR, VARIANT); - HRESULT GetProperty(BSTR, VARIANT*); - HRESULT get_Name(BSTR*); - HRESULT get_HWND(LONG*); - HRESULT get_FullName(BSTR*); - HRESULT get_Path(BSTR*); - HRESULT get_Visible(VARIANT_BOOL*); - HRESULT put_Visible(VARIANT_BOOL); - HRESULT get_StatusBar(VARIANT_BOOL*); - HRESULT put_StatusBar(VARIANT_BOOL); - HRESULT get_StatusText(BSTR*); - HRESULT put_StatusText(BSTR); - HRESULT get_ToolBar(int*); - HRESULT put_ToolBar(int); - HRESULT get_MenuBar(VARIANT_BOOL*); - HRESULT put_MenuBar(VARIANT_BOOL); - HRESULT get_FullScreen(VARIANT_BOOL*); - HRESULT put_FullScreen(VARIANT_BOOL); + HRESULT Quit(); + HRESULT ClientToWindow(int*, int*); + HRESULT PutProperty(BSTR, VARIANT); + HRESULT GetProperty(BSTR, VARIANT*); + HRESULT get_Name(BSTR*); + HRESULT get_HWND(LONG*); + HRESULT get_FullName(BSTR*); + HRESULT get_Path(BSTR*); + HRESULT get_Visible(VARIANT_BOOL*); + HRESULT put_Visible(VARIANT_BOOL); + HRESULT get_StatusBar(VARIANT_BOOL*); + HRESULT put_StatusBar(VARIANT_BOOL); + HRESULT get_StatusText(BSTR*); + HRESULT put_StatusText(BSTR); + HRESULT get_ToolBar(int*); + HRESULT put_ToolBar(int); + HRESULT get_MenuBar(VARIANT_BOOL*); + HRESULT put_MenuBar(VARIANT_BOOL); + HRESULT get_FullScreen(VARIANT_BOOL*); + HRESULT put_FullScreen(VARIANT_BOOL); } interface IWebBrowser2 : IWebBrowserApp { - HRESULT Navigate2(VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*); - HRESULT QueryStatusWB(OLECMDID, OLECMDF*); - HRESULT ExecWB(OLECMDID, OLECMDEXECOPT, VARIANT*, VARIANT*); - HRESULT ShowBrowserBar(VARIANT*, VARIANT*, VARIANT*); - HRESULT get_ReadyState(READYSTATE*); - HRESULT get_Offline(VARIANT_BOOL*); - HRESULT put_Offline(VARIANT_BOOL); - HRESULT get_Silent(VARIANT_BOOL*); - HRESULT put_Silent(VARIANT_BOOL); - HRESULT get_RegistaerAsBrowser(VARIANT_BOOL*); - HRESULT put_RegisterAsBrowser(VARIANT_BOOL); - HRESULT get_RegistaerAsDropTarget(VARIANT_BOOL*); - HRESULT put_RegisterAsDropTarget(VARIANT_BOOL); - HRESULT get_TheaterMode(VARIANT_BOOL*); - HRESULT put_TheaterMode(VARIANT_BOOL); - HRESULT get_AddressBar(VARIANT_BOOL*); - HRESULT put_AddressBar(VARIANT_BOOL); - HRESULT get_Resizable(VARIANT_BOOL*); - HRESULT put_Resizable(VARIANT_BOOL); + HRESULT Navigate2(VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*); + HRESULT QueryStatusWB(OLECMDID, OLECMDF*); + HRESULT ExecWB(OLECMDID, OLECMDEXECOPT, VARIANT*, VARIANT*); + HRESULT ShowBrowserBar(VARIANT*, VARIANT*, VARIANT*); + HRESULT get_ReadyState(READYSTATE*); + HRESULT get_Offline(VARIANT_BOOL*); + HRESULT put_Offline(VARIANT_BOOL); + HRESULT get_Silent(VARIANT_BOOL*); + HRESULT put_Silent(VARIANT_BOOL); + HRESULT get_RegistaerAsBrowser(VARIANT_BOOL*); + HRESULT put_RegisterAsBrowser(VARIANT_BOOL); + HRESULT get_RegistaerAsDropTarget(VARIANT_BOOL*); + HRESULT put_RegisterAsDropTarget(VARIANT_BOOL); + HRESULT get_TheaterMode(VARIANT_BOOL*); + HRESULT put_TheaterMode(VARIANT_BOOL); + HRESULT get_AddressBar(VARIANT_BOOL*); + HRESULT put_AddressBar(VARIANT_BOOL); + HRESULT get_Resizable(VARIANT_BOOL*); + HRESULT put_Resizable(VARIANT_BOOL); } interface DWebBrowserEvents2 : IDispatch { - void StatusTextChange(BSTR); - void ProgressChange(LONG, LONG); - void CommandStateChange(LONG, VARIANT_BOOL); - void DownloadBegin(); - void DownloadComplete(); - void TitleChange(BSTR); - void PropertyChange(BSTR); - void BeforeNavigate2(IDispatch pDisp, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT_BOOL*); - void NewWindow2(IDispatch* ppDisp, VARIANT_BOOL*); - void NavigateComplete(IDispatch pDisp, VARIANT*); - void DocumentComplete(IDispatch pDisp, VARIANT*); - void OnQuit(); - void OnVisible(VARIANT_BOOL); - void OnToolBar(VARIANT_BOOL); - void OnMenuBar(VARIANT_BOOL); - void OnStatusBar(VARIANT_BOOL); - void OnFullScreen(VARIANT_BOOL); - void OnTheaterMode(VARIANT_BOOL); - void WindowSetResizable(VARIANT_BOOL); - void WindowSetLeft(LONG); - void WindowSetTop(LONG); - void WindowSetWidth(LONG); - void WindowSetHeight(LONG); - void WindowClosing(VARIANT_BOOL, VARIANT_BOOL*); - void ClientToHostWindow(LONG*, LONG*); - void SetSecureLockIcon(LONG); - void FileDownload(VARIANT_BOOL*); + void StatusTextChange(BSTR); + void ProgressChange(LONG, LONG); + void CommandStateChange(LONG, VARIANT_BOOL); + void DownloadBegin(); + void DownloadComplete(); + void TitleChange(BSTR); + void PropertyChange(BSTR); + void BeforeNavigate2(IDispatch pDisp, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT_BOOL*); + void NewWindow2(IDispatch* ppDisp, VARIANT_BOOL*); + void NavigateComplete(IDispatch pDisp, VARIANT*); + void DocumentComplete(IDispatch pDisp, VARIANT*); + void OnQuit(); + void OnVisible(VARIANT_BOOL); + void OnToolBar(VARIANT_BOOL); + void OnMenuBar(VARIANT_BOOL); + void OnStatusBar(VARIANT_BOOL); + void OnFullScreen(VARIANT_BOOL); + void OnTheaterMode(VARIANT_BOOL); + void WindowSetResizable(VARIANT_BOOL); + void WindowSetLeft(LONG); + void WindowSetTop(LONG); + void WindowSetWidth(LONG); + void WindowSetHeight(LONG); + void WindowClosing(VARIANT_BOOL, VARIANT_BOOL*); + void ClientToHostWindow(LONG*, LONG*); + void SetSecureLockIcon(LONG); + void FileDownload(VARIANT_BOOL*); } diff --git a/src/core/sys/windows/exdispid.d b/src/core/sys/windows/exdispid.d index 3ecc9b4097..156784b792 100644 --- a/src/core/sys/windows/exdispid.d +++ b/src/core/sys/windows/exdispid.d @@ -10,10 +10,10 @@ module core.sys.windows.exdispid; enum : int { - DISPID_STATUSTEXTCHANGE = 102, - DISPID_PROGRESSCHANGE = 108, - DISPID_TITLECHANGE = 113, - DISPID_BEFORENAVIGATE2 = 250, - DISPID_NEWWINDOW2 = 251, - DISPID_DOCUMENTCOMPLETE = 259 + DISPID_STATUSTEXTCHANGE = 102, + DISPID_PROGRESSCHANGE = 108, + DISPID_TITLECHANGE = 113, + DISPID_BEFORENAVIGATE2 = 250, + DISPID_NEWWINDOW2 = 251, + DISPID_DOCUMENTCOMPLETE = 259 } diff --git a/src/core/sys/windows/httpext.d b/src/core/sys/windows/httpext.d index ddd8032ebf..3707c4b86d 100644 --- a/src/core/sys/windows/httpext.d +++ b/src/core/sys/windows/httpext.d @@ -47,67 +47,67 @@ enum { mixin DECLARE_HANDLE!("HCONN"); struct HSE_VERSION_INFO { - DWORD dwExtensionVersion; - CHAR[HSE_MAX_EXT_DLL_NAME_LEN] lpszExtensionDesc; + DWORD dwExtensionVersion; + CHAR[HSE_MAX_EXT_DLL_NAME_LEN] lpszExtensionDesc; } alias HSE_VERSION_INFO* LPHSE_VERSION_INFO; struct EXTENSION_CONTROL_BLOCK { - DWORD cbSize = EXTENSION_CONTROL_BLOCK.sizeof; - DWORD dwVersion; - HCONN ConnID; - DWORD dwHttpStatusCode; - CHAR[HSE_LOG_BUFFER_LEN] lpszLogData; - LPSTR lpszMethod; - LPSTR lpszQueryString; - LPSTR lpszPathInfo; - LPSTR lpszPathTranslated; - DWORD cbTotalBytes; - DWORD cbAvailable; - LPBYTE lpbData; - LPSTR lpszContentType; - extern(Pascal) BOOL function(HCONN, LPSTR, LPVOID, LPDWORD) - GetServerVariable; - extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD, DWORD) WriteClient; - extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD) ReadClient; - extern(Pascal) BOOL function(HCONN, DWORD, LPVOID, LPDWORD, LPDWORD) - ServerSupportFunction; + DWORD cbSize = EXTENSION_CONTROL_BLOCK.sizeof; + DWORD dwVersion; + HCONN ConnID; + DWORD dwHttpStatusCode; + CHAR[HSE_LOG_BUFFER_LEN] lpszLogData; + LPSTR lpszMethod; + LPSTR lpszQueryString; + LPSTR lpszPathInfo; + LPSTR lpszPathTranslated; + DWORD cbTotalBytes; + DWORD cbAvailable; + LPBYTE lpbData; + LPSTR lpszContentType; + extern(Pascal) BOOL function(HCONN, LPSTR, LPVOID, LPDWORD) + GetServerVariable; + extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD, DWORD) WriteClient; + extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD) ReadClient; + extern(Pascal) BOOL function(HCONN, DWORD, LPVOID, LPDWORD, LPDWORD) + ServerSupportFunction; } alias EXTENSION_CONTROL_BLOCK* LPEXTENSION_CONTROL_BLOCK; extern (Pascal) { - alias BOOL function(HSE_VERSION_INFO*) PFN_GETEXTENSIONVERSION; - alias DWORD function(EXTENSION_CONTROL_BLOCK*) PFN_HTTPEXTENSIONPROC; - alias BOOL function(DWORD) PFN_TERMINATEEXTENSION; - alias VOID function(EXTENSION_CONTROL_BLOCK*, PVOID, DWORD, DWORD) PFN_HSE_IO_COMPLETION; + alias BOOL function(HSE_VERSION_INFO*) PFN_GETEXTENSIONVERSION; + alias DWORD function(EXTENSION_CONTROL_BLOCK*) PFN_HTTPEXTENSIONPROC; + alias BOOL function(DWORD) PFN_TERMINATEEXTENSION; + alias VOID function(EXTENSION_CONTROL_BLOCK*, PVOID, DWORD, DWORD) PFN_HSE_IO_COMPLETION; } struct HSE_TF_INFO { - PFN_HSE_IO_COMPLETION pfnHseIO; - PVOID pContext; - HANDLE hFile; - LPCSTR pszStatusCode; - DWORD BytesToWrite; - DWORD Offset; - PVOID pHead; - DWORD HeadLength; - PVOID pTail; - DWORD TailLength; - DWORD dwFlags; + PFN_HSE_IO_COMPLETION pfnHseIO; + PVOID pContext; + HANDLE hFile; + LPCSTR pszStatusCode; + DWORD BytesToWrite; + DWORD Offset; + PVOID pHead; + DWORD HeadLength; + PVOID pTail; + DWORD TailLength; + DWORD dwFlags; } alias HSE_TF_INFO* LPHSE_TF_INFO; struct HSE_SEND_HEADER_EX_INFO { - LPCSTR pszStatus; - LPCSTR pszHeader; - DWORD cchStatus; - DWORD cchHeader; - BOOL fKeepConn; + LPCSTR pszStatus; + LPCSTR pszHeader; + DWORD cchStatus; + DWORD cchHeader; + BOOL fKeepConn; } alias HSE_SEND_HEADER_EX_INFO* LPHSE_SEND_HEADER_EX_INF; extern (Pascal) { - BOOL GetExtensionVersion(HSE_VERSION_INFO*); - DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK*); - BOOL TerminateExtension(DWORD); + BOOL GetExtensionVersion(HSE_VERSION_INFO*); + DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK*); + BOOL TerminateExtension(DWORD); } diff --git a/src/core/sys/windows/idispids.d b/src/core/sys/windows/idispids.d index fb1c10d055..b1c8b001dc 100644 --- a/src/core/sys/windows/idispids.d +++ b/src/core/sys/windows/idispids.d @@ -10,6 +10,6 @@ module core.sys.windows.idispids; enum : int { - DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501, - DISPID_AMBIENT_SILENT = -5502 + DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501, + DISPID_AMBIENT_SILENT = -5502 } diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index c5f39b61eb..c9e1e3f97d 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -10,9 +10,9 @@ module core.sys.windows.imagehlp; /* Comment from MinGW - NOTE: This strictly does not belong in the Win32 API since it's - really part of Platform SDK. However, GDB needs it and we might - as well provide it here. + NOTE: This strictly does not belong in the Win32 API since it's + really part of Platform SDK. However, GDB needs it and we might + as well provide it here. */ private import core.sys.windows.winbase, core.sys.windows.windef; @@ -27,11 +27,11 @@ const BIND_ALL_IMAGES = 4; const BIND_CACHE_IMPORT_DLLS = 8; enum { - CBA_DEFERRED_SYMBOL_LOAD_START = 1, - CBA_DEFERRED_SYMBOL_LOAD_COMPLETE, - CBA_DEFERRED_SYMBOL_LOAD_FAILURE, - CBA_SYMBOLS_UNLOADED, - CBA_DUPLICATE_SYMBOL + CBA_DEFERRED_SYMBOL_LOAD_START = 1, + CBA_DEFERRED_SYMBOL_LOAD_COMPLETE, + CBA_DEFERRED_SYMBOL_LOAD_FAILURE, + CBA_SYMBOLS_UNLOADED, + CBA_DUPLICATE_SYMBOL } const CERT_PE_IMAGE_DIGEST_DEBUG_INFO = 1; @@ -42,11 +42,11 @@ const CERT_PE_IMAGE_DIGEST_NON_PE_INFO = 8; const CERT_SECTION_TYPE_ANY = 255; enum { - CHECKSUM_SUCCESS = 0, - CHECKSUM_OPEN_FAILURE, - CHECKSUM_MAP_FAILURE, - CHECKSUM_MAPVIEW_FAILURE, - CHECKSUM_UNICODE_FAILURE + CHECKSUM_SUCCESS = 0, + CHECKSUM_OPEN_FAILURE, + CHECKSUM_MAP_FAILURE, + CHECKSUM_MAPVIEW_FAILURE, + CHECKSUM_UNICODE_FAILURE } const IMAGE_SEPARATION = 65536; @@ -84,279 +84,279 @@ const UNDNAME_NO_ARGUMENTS = 8192; const UNDNAME_NO_SPECIAL_SYMS = 16384; enum IMAGEHLP_STATUS_REASON { - BindOutOfMemory, - BindRvaToVaFailed, - BindNoRoomInImage, - BindImportModuleFailed, - BindImportProcedureFailed, - BindImportModule, - BindImportProcedure, - BindForwarder, - BindForwarderNOT, - BindImageModified, - BindExpandFileHeaders, - BindImageComplete, - BindMismatchedSymbols, - BindSymbolsNotUpdated + BindOutOfMemory, + BindRvaToVaFailed, + BindNoRoomInImage, + BindImportModuleFailed, + BindImportProcedureFailed, + BindImportModule, + BindImportProcedure, + BindForwarder, + BindForwarderNOT, + BindImageModified, + BindExpandFileHeaders, + BindImageComplete, + BindMismatchedSymbols, + BindSymbolsNotUpdated } struct LOADED_IMAGE { - LPSTR ModuleName; - HANDLE hFile; - PUCHAR MappedAddress; - PIMAGE_NT_HEADERS FileHeader; - PIMAGE_SECTION_HEADER LastRvaSection; - ULONG NumberOfSections; - PIMAGE_SECTION_HEADER Sections; - ULONG Characteristics; - BOOLEAN fSystemImage; - BOOLEAN fDOSImage; - LIST_ENTRY Links; - ULONG SizeOfImage; + LPSTR ModuleName; + HANDLE hFile; + PUCHAR MappedAddress; + PIMAGE_NT_HEADERS FileHeader; + PIMAGE_SECTION_HEADER LastRvaSection; + ULONG NumberOfSections; + PIMAGE_SECTION_HEADER Sections; + ULONG Characteristics; + BOOLEAN fSystemImage; + BOOLEAN fDOSImage; + LIST_ENTRY Links; + ULONG SizeOfImage; } alias LOADED_IMAGE* PLOADED_IMAGE; struct IMAGE_DEBUG_INFORMATION { - LIST_ENTRY List; - DWORD Size; - PVOID MappedBase; - USHORT Machine; - USHORT Characteristics; - DWORD CheckSum; - DWORD ImageBase; - DWORD SizeOfImage; - DWORD NumberOfSections; - PIMAGE_SECTION_HEADER Sections; - DWORD ExportedNamesSize; - LPSTR ExportedNames; - DWORD NumberOfFunctionTableEntries; - PIMAGE_FUNCTION_ENTRY FunctionTableEntries; - DWORD LowestFunctionStartingAddress; - DWORD HighestFunctionEndingAddress; - DWORD NumberOfFpoTableEntries; - PFPO_DATA FpoTableEntries; - DWORD SizeOfCoffSymbols; - PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; - DWORD SizeOfCodeViewSymbols; - PVOID CodeViewSymbols; - LPSTR ImageFilePath; - LPSTR ImageFileName; - LPSTR DebugFilePath; - DWORD TimeDateStamp; - BOOL RomImage; - PIMAGE_DEBUG_DIRECTORY DebugDirectory; - DWORD NumberOfDebugDirectories; - DWORD[3] Reserved; + LIST_ENTRY List; + DWORD Size; + PVOID MappedBase; + USHORT Machine; + USHORT Characteristics; + DWORD CheckSum; + DWORD ImageBase; + DWORD SizeOfImage; + DWORD NumberOfSections; + PIMAGE_SECTION_HEADER Sections; + DWORD ExportedNamesSize; + LPSTR ExportedNames; + DWORD NumberOfFunctionTableEntries; + PIMAGE_FUNCTION_ENTRY FunctionTableEntries; + DWORD LowestFunctionStartingAddress; + DWORD HighestFunctionEndingAddress; + DWORD NumberOfFpoTableEntries; + PFPO_DATA FpoTableEntries; + DWORD SizeOfCoffSymbols; + PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; + DWORD SizeOfCodeViewSymbols; + PVOID CodeViewSymbols; + LPSTR ImageFilePath; + LPSTR ImageFileName; + LPSTR DebugFilePath; + DWORD TimeDateStamp; + BOOL RomImage; + PIMAGE_DEBUG_DIRECTORY DebugDirectory; + DWORD NumberOfDebugDirectories; + DWORD[3] Reserved; } alias IMAGE_DEBUG_INFORMATION* PIMAGE_DEBUG_INFORMATION; enum ADDRESS_MODE { - AddrMode1616, - AddrMode1632, - AddrModeReal, - AddrModeFlat + AddrMode1616, + AddrMode1632, + AddrModeReal, + AddrModeFlat } struct ADDRESS { - DWORD Offset; - WORD Segment; - ADDRESS_MODE Mode; + DWORD Offset; + WORD Segment; + ADDRESS_MODE Mode; } alias ADDRESS* LPADDRESS; struct KDHELP { - DWORD Thread; - DWORD ThCallbackStack; - DWORD NextCallback; - DWORD FramePointer; - DWORD KiCallUserMode; - DWORD KeUserCallbackDispatcher; - DWORD SystemRangeStart; + DWORD Thread; + DWORD ThCallbackStack; + DWORD NextCallback; + DWORD FramePointer; + DWORD KiCallUserMode; + DWORD KeUserCallbackDispatcher; + DWORD SystemRangeStart; } alias KDHELP* PKDHELP; struct STACKFRAME { - ADDRESS AddrPC; - ADDRESS AddrReturn; - ADDRESS AddrFrame; - ADDRESS AddrStack; - LPVOID FuncTableEntry; - DWORD[4] Params; - BOOL Far; - BOOL Virtual; - DWORD[3] Reserved; - KDHELP KdHelp; + ADDRESS AddrPC; + ADDRESS AddrReturn; + ADDRESS AddrFrame; + ADDRESS AddrStack; + LPVOID FuncTableEntry; + DWORD[4] Params; + BOOL Far; + BOOL Virtual; + DWORD[3] Reserved; + KDHELP KdHelp; } alias STACKFRAME* LPSTACKFRAME; struct API_VERSION { - USHORT MajorVersion; - USHORT MinorVersion; - USHORT Revision; - USHORT Reserved; + USHORT MajorVersion; + USHORT MinorVersion; + USHORT Revision; + USHORT Reserved; } alias API_VERSION* LPAPI_VERSION; enum SYM_TYPE { - SymNone, - SymCoff, - SymCv, - SymPdb, - SymExport, - SymDeferred, - SymSym + SymNone, + SymCoff, + SymCv, + SymPdb, + SymExport, + SymDeferred, + SymSym } struct IMAGEHLP_SYMBOL { - DWORD SizeOfStruct; - DWORD Address; - DWORD Size; - DWORD Flags; - DWORD MaxNameLength; - CHAR[1] Name; + DWORD SizeOfStruct; + DWORD Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + CHAR[1] Name; } alias IMAGEHLP_SYMBOL* PIMAGEHLP_SYMBOL; struct IMAGEHLP_MODULE { - DWORD SizeOfStruct; - DWORD BaseOfImage; - DWORD ImageSize; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD NumSyms; - SYM_TYPE SymType; - CHAR[32] ModuleName; - CHAR[256] ImageName; - CHAR[256] LoadedImageName; + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + CHAR[32] ModuleName; + CHAR[256] ImageName; + CHAR[256] LoadedImageName; } alias IMAGEHLP_MODULE* PIMAGEHLP_MODULE; struct IMAGEHLP_LINE { - DWORD SizeOfStruct; - DWORD Key; - DWORD LineNumber; - PCHAR FileName; - DWORD Address; + DWORD SizeOfStruct; + DWORD Key; + DWORD LineNumber; + PCHAR FileName; + DWORD Address; } alias IMAGEHLP_LINE* PIMAGEHLP_LINE; struct IMAGEHLP_DEFERRED_SYMBOL_LOAD { - DWORD SizeOfStruct; - DWORD BaseOfImage; - DWORD CheckSum; - DWORD TimeDateStamp; - CHAR[MAX_PATH] FileName; - BOOLEAN Reparse; + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD CheckSum; + DWORD TimeDateStamp; + CHAR[MAX_PATH] FileName; + BOOLEAN Reparse; } alias IMAGEHLP_DEFERRED_SYMBOL_LOAD* PIMAGEHLP_DEFERRED_SYMBOL_LOAD; struct IMAGEHLP_DUPLICATE_SYMBOL { - DWORD SizeOfStruct; - DWORD NumberOfDups; - PIMAGEHLP_SYMBOL Symbol; - ULONG SelectedSymbol; + DWORD SizeOfStruct; + DWORD NumberOfDups; + PIMAGEHLP_SYMBOL Symbol; + ULONG SelectedSymbol; } alias IMAGEHLP_DUPLICATE_SYMBOL* PIMAGEHLP_DUPLICATE_SYMBOL; mixin DECLARE_HANDLE!("DIGEST_HANDLE"); extern (Windows) { - alias BOOL function(IMAGEHLP_STATUS_REASON, LPSTR, LPSTR, ULONG, ULONG) - PIMAGEHLP_STATUS_ROUTINE; - alias BOOL function(HANDLE , LPCVOID, LPVOID, DWORD, LPDWORD) - PREAD_PROCESS_MEMORY_ROUTINE; - alias LPVOID function(HANDLE, DWORD) PFUNCTION_TABLE_ACCESS_ROUTINE; - alias DWORD function(HANDLE, DWORD) PGET_MODULE_BASE_ROUTINE; - alias DWORD function(HANDLE, HANDLE, LPADDRESS) - PTRANSLATE_ADDRESS_ROUTINE; - alias BOOL function(LPSTR, ULONG, PVOID) PSYM_ENUMMODULES_CALLBACK; - alias BOOL function(LPSTR, ULONG, ULONG, PVOID) PSYM_ENUMSYMBOLS_CALLBACK; - alias BOOL function(LPSTR, ULONG, ULONG, PVOID) - PENUMLOADED_MODULES_CALLBACK; - alias BOOL function(HANDLE, ULONG, PVOID, PVOID) - PSYMBOL_REGISTERED_CALLBACK; - alias BOOL function(DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength) - DIGEST_FUNCTION; - - PIMAGE_NT_HEADERS CheckSumMappedFile(LPVOID, DWORD, LPDWORD, LPDWORD); - DWORD MapFileAndCheckSumA(LPSTR, LPDWORD, LPDWORD); - DWORD MapFileAndCheckSumW(PWSTR, LPDWORD, LPDWORD); - BOOL TouchFileTimes(HANDLE, LPSYSTEMTIME); - BOOL SplitSymbols(LPSTR, LPSTR, LPSTR, DWORD); - HANDLE FindDebugInfoFile(LPSTR, LPSTR, LPSTR); - HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); - BOOL UpdateDebugInfoFile(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS); - BOOL UpdateDebugInfoFileEx(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS, DWORD); - BOOL BindImage(LPSTR, LPSTR, LPSTR); - BOOL BindImageEx(DWORD, LPSTR, LPSTR, LPSTR, PIMAGEHLP_STATUS_ROUTINE); - BOOL ReBaseImage(LPSTR, LPSTR, BOOL, BOOL, BOOL, ULONG, ULONG*, ULONG*, - ULONG*, ULONG*, ULONG); - PLOADED_IMAGE ImageLoad(LPSTR, LPSTR); - BOOL ImageUnload(PLOADED_IMAGE); - PIMAGE_NT_HEADERS ImageNtHeader(PVOID); - PVOID ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG); - PIMAGE_SECTION_HEADER ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG); - PVOID ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, - PIMAGE_SECTION_HEADER*); - BOOL MapAndLoad(LPSTR, LPSTR, PLOADED_IMAGE, BOOL, BOOL); - BOOL GetImageConfigInformation(PLOADED_IMAGE, - PIMAGE_LOAD_CONFIG_DIRECTORY); - DWORD GetImageUnusedHeaderBytes(PLOADED_IMAGE, LPDWORD); - BOOL SetImageConfigInformation(PLOADED_IMAGE, - PIMAGE_LOAD_CONFIG_DIRECTORY); - BOOL UnMapAndLoad(PLOADED_IMAGE); - PIMAGE_DEBUG_INFORMATION MapDebugInformation(HANDLE, LPSTR, LPSTR, DWORD); - BOOL UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); - HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); - BOOL SearchTreeForFile(LPSTR, LPSTR, LPSTR); - BOOL MakeSureDirectoryPathExists(LPCSTR); - DWORD UnDecorateSymbolName(LPCSTR, LPSTR, DWORD, DWORD); - BOOL StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID, - PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, - PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE); - LPAPI_VERSION ImagehlpApiVersion(); - LPAPI_VERSION ImagehlpApiVersionEx(LPAPI_VERSION); - DWORD GetTimestampForLoadedLibrary(HMODULE); - BOOL RemovePrivateCvSymbolic(PCHAR, PCHAR*, ULONG*); - VOID RemoveRelocations(PCHAR); - DWORD SymSetOptions(DWORD); - DWORD SymGetOptions(); - BOOL SymCleanup(HANDLE); - BOOL SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); - BOOL SymEnumerateSymbols(HANDLE, DWORD, PSYM_ENUMSYMBOLS_CALLBACK, PVOID); - BOOL EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID); - LPVOID SymFunctionTableAccess(HANDLE, DWORD); - BOOL SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); - DWORD SymGetModuleBase(HANDLE, DWORD); - BOOL SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); - BOOL SymGetSymFromName(HANDLE, LPSTR, PIMAGEHLP_SYMBOL); - BOOL SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); - BOOL SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); - BOOL SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); - BOOL SymGetLineFromName(HANDLE, LPSTR, LPSTR, DWORD, PLONG, - PIMAGEHLP_LINE); - BOOL SymGetLineNext(HANDLE, PIMAGEHLP_LINE); - BOOL SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); - BOOL SymMatchFileName(LPSTR, LPSTR, LPSTR*, LPSTR*); - BOOL SymInitialize(HANDLE, LPSTR, BOOL); - BOOL SymGetSearchPath(HANDLE, LPSTR, DWORD); - BOOL SymSetSearchPath(HANDLE, LPSTR); - BOOL SymLoadModule(HANDLE, HANDLE, PSTR, PSTR, DWORD, DWORD); - BOOL SymUnloadModule(HANDLE, DWORD); - BOOL SymUnDName(PIMAGEHLP_SYMBOL, LPSTR, DWORD); - BOOL SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); - BOOL ImageGetDigestStream(HANDLE, DWORD, DIGEST_FUNCTION, DIGEST_HANDLE); - BOOL ImageAddCertificate(HANDLE, LPWIN_CERTIFICATE, PDWORD); - BOOL ImageRemoveCertificate(HANDLE, DWORD); - BOOL ImageEnumerateCertificates(HANDLE, WORD, PDWORD, PDWORD, DWORD); - BOOL ImageGetCertificateData(HANDLE, DWORD, LPWIN_CERTIFICATE, PDWORD); - BOOL ImageGetCertificateHeader(HANDLE, DWORD, LPWIN_CERTIFICATE); - BOOL CopyPdb(CHAR*, CHAR*, BOOL); - BOOL RemovePrivateCvSymbolicEx(PCHAR, ULONG, PCHAR*, ULONG*); + alias BOOL function(IMAGEHLP_STATUS_REASON, LPSTR, LPSTR, ULONG, ULONG) + PIMAGEHLP_STATUS_ROUTINE; + alias BOOL function(HANDLE , LPCVOID, LPVOID, DWORD, LPDWORD) + PREAD_PROCESS_MEMORY_ROUTINE; + alias LPVOID function(HANDLE, DWORD) PFUNCTION_TABLE_ACCESS_ROUTINE; + alias DWORD function(HANDLE, DWORD) PGET_MODULE_BASE_ROUTINE; + alias DWORD function(HANDLE, HANDLE, LPADDRESS) + PTRANSLATE_ADDRESS_ROUTINE; + alias BOOL function(LPSTR, ULONG, PVOID) PSYM_ENUMMODULES_CALLBACK; + alias BOOL function(LPSTR, ULONG, ULONG, PVOID) PSYM_ENUMSYMBOLS_CALLBACK; + alias BOOL function(LPSTR, ULONG, ULONG, PVOID) + PENUMLOADED_MODULES_CALLBACK; + alias BOOL function(HANDLE, ULONG, PVOID, PVOID) + PSYMBOL_REGISTERED_CALLBACK; + alias BOOL function(DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength) + DIGEST_FUNCTION; + + PIMAGE_NT_HEADERS CheckSumMappedFile(LPVOID, DWORD, LPDWORD, LPDWORD); + DWORD MapFileAndCheckSumA(LPSTR, LPDWORD, LPDWORD); + DWORD MapFileAndCheckSumW(PWSTR, LPDWORD, LPDWORD); + BOOL TouchFileTimes(HANDLE, LPSYSTEMTIME); + BOOL SplitSymbols(LPSTR, LPSTR, LPSTR, DWORD); + HANDLE FindDebugInfoFile(LPSTR, LPSTR, LPSTR); + HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); + BOOL UpdateDebugInfoFile(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS); + BOOL UpdateDebugInfoFileEx(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS, DWORD); + BOOL BindImage(LPSTR, LPSTR, LPSTR); + BOOL BindImageEx(DWORD, LPSTR, LPSTR, LPSTR, PIMAGEHLP_STATUS_ROUTINE); + BOOL ReBaseImage(LPSTR, LPSTR, BOOL, BOOL, BOOL, ULONG, ULONG*, ULONG*, + ULONG*, ULONG*, ULONG); + PLOADED_IMAGE ImageLoad(LPSTR, LPSTR); + BOOL ImageUnload(PLOADED_IMAGE); + PIMAGE_NT_HEADERS ImageNtHeader(PVOID); + PVOID ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG); + PIMAGE_SECTION_HEADER ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG); + PVOID ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, + PIMAGE_SECTION_HEADER*); + BOOL MapAndLoad(LPSTR, LPSTR, PLOADED_IMAGE, BOOL, BOOL); + BOOL GetImageConfigInformation(PLOADED_IMAGE, + PIMAGE_LOAD_CONFIG_DIRECTORY); + DWORD GetImageUnusedHeaderBytes(PLOADED_IMAGE, LPDWORD); + BOOL SetImageConfigInformation(PLOADED_IMAGE, + PIMAGE_LOAD_CONFIG_DIRECTORY); + BOOL UnMapAndLoad(PLOADED_IMAGE); + PIMAGE_DEBUG_INFORMATION MapDebugInformation(HANDLE, LPSTR, LPSTR, DWORD); + BOOL UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); + HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); + BOOL SearchTreeForFile(LPSTR, LPSTR, LPSTR); + BOOL MakeSureDirectoryPathExists(LPCSTR); + DWORD UnDecorateSymbolName(LPCSTR, LPSTR, DWORD, DWORD); + BOOL StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID, + PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, + PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE); + LPAPI_VERSION ImagehlpApiVersion(); + LPAPI_VERSION ImagehlpApiVersionEx(LPAPI_VERSION); + DWORD GetTimestampForLoadedLibrary(HMODULE); + BOOL RemovePrivateCvSymbolic(PCHAR, PCHAR*, ULONG*); + VOID RemoveRelocations(PCHAR); + DWORD SymSetOptions(DWORD); + DWORD SymGetOptions(); + BOOL SymCleanup(HANDLE); + BOOL SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); + BOOL SymEnumerateSymbols(HANDLE, DWORD, PSYM_ENUMSYMBOLS_CALLBACK, PVOID); + BOOL EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID); + LPVOID SymFunctionTableAccess(HANDLE, DWORD); + BOOL SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); + DWORD SymGetModuleBase(HANDLE, DWORD); + BOOL SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); + BOOL SymGetSymFromName(HANDLE, LPSTR, PIMAGEHLP_SYMBOL); + BOOL SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); + BOOL SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); + BOOL SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); + BOOL SymGetLineFromName(HANDLE, LPSTR, LPSTR, DWORD, PLONG, + PIMAGEHLP_LINE); + BOOL SymGetLineNext(HANDLE, PIMAGEHLP_LINE); + BOOL SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); + BOOL SymMatchFileName(LPSTR, LPSTR, LPSTR*, LPSTR*); + BOOL SymInitialize(HANDLE, LPSTR, BOOL); + BOOL SymGetSearchPath(HANDLE, LPSTR, DWORD); + BOOL SymSetSearchPath(HANDLE, LPSTR); + BOOL SymLoadModule(HANDLE, HANDLE, PSTR, PSTR, DWORD, DWORD); + BOOL SymUnloadModule(HANDLE, DWORD); + BOOL SymUnDName(PIMAGEHLP_SYMBOL, LPSTR, DWORD); + BOOL SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); + BOOL ImageGetDigestStream(HANDLE, DWORD, DIGEST_FUNCTION, DIGEST_HANDLE); + BOOL ImageAddCertificate(HANDLE, LPWIN_CERTIFICATE, PDWORD); + BOOL ImageRemoveCertificate(HANDLE, DWORD); + BOOL ImageEnumerateCertificates(HANDLE, WORD, PDWORD, PDWORD, DWORD); + BOOL ImageGetCertificateData(HANDLE, DWORD, LPWIN_CERTIFICATE, PDWORD); + BOOL ImageGetCertificateHeader(HANDLE, DWORD, LPWIN_CERTIFICATE); + BOOL CopyPdb(CHAR*, CHAR*, BOOL); + BOOL RemovePrivateCvSymbolicEx(PCHAR, ULONG, PCHAR*, ULONG*); } version (Unicode) { - alias MapFileAndCheckSumW MapFileAndCheckSum; + alias MapFileAndCheckSumW MapFileAndCheckSum; } else { - alias MapFileAndCheckSumA MapFileAndCheckSum; + alias MapFileAndCheckSumA MapFileAndCheckSum; } diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d index 196d77ffa6..966132e6af 100644 --- a/src/core/sys/windows/imm.d +++ b/src/core/sys/windows/imm.d @@ -25,7 +25,7 @@ const WM_IME_COMPOSITIONFULL = 0x284; const WM_IME_SELECT = 0x285; const WM_IME_CHAR = 0x286; //static if (_WIN32_WINNT >= 0x500) { - const WM_IME_REQUEST = 0x288; + const WM_IME_REQUEST = 0x288; //} const WM_IME_KEYDOWN = 0x290; const WM_IME_KEYUP = 0x291; @@ -278,78 +278,78 @@ alias DWORD HIMCC; alias HKL* LPHKL; struct COMPOSITIONFORM{ - DWORD dwStyle; - POINT ptCurrentPos; - RECT rcArea; + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; } alias COMPOSITIONFORM* PCOMPOSITIONFORM, LPCOMPOSITIONFORM; struct CANDIDATEFORM{ - DWORD dwIndex; - DWORD dwStyle; - POINT ptCurrentPos; - RECT rcArea; + DWORD dwIndex; + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; } alias CANDIDATEFORM* PCANDIDATEFORM, LPCANDIDATEFORM; struct CANDIDATELIST{ - DWORD dwSize; - DWORD dwStyle; - DWORD dwCount; - DWORD dwSelection; - DWORD dwPageStart; - DWORD dwPageSize; - DWORD[1] dwOffset; + DWORD dwSize; + DWORD dwStyle; + DWORD dwCount; + DWORD dwSelection; + DWORD dwPageStart; + DWORD dwPageSize; + DWORD[1] dwOffset; } alias CANDIDATELIST* PCANDIDATELIST, LPCANDIDATELIST; struct REGISTERWORDA{ - LPSTR lpReading; - LPSTR lpWord; + LPSTR lpReading; + LPSTR lpWord; } alias REGISTERWORDA* PREGISTERWORDA, LPREGISTERWORDA; struct REGISTERWORDW{ - LPWSTR lpReading; - LPWSTR lpWord; + LPWSTR lpReading; + LPWSTR lpWord; } alias REGISTERWORDW* PREGISTERWORDW, LPREGISTERWORDW; struct STYLEBUFA{ - DWORD dwStyle; - CHAR[STYLE_DESCRIPTION_SIZE] szDescription; + DWORD dwStyle; + CHAR[STYLE_DESCRIPTION_SIZE] szDescription; } alias STYLEBUFA* PSTYLEBUFA, LPSTYLEBUFA; struct STYLEBUFW{ - DWORD dwStyle; - WCHAR[STYLE_DESCRIPTION_SIZE] szDescription; + DWORD dwStyle; + WCHAR[STYLE_DESCRIPTION_SIZE] szDescription; } alias STYLEBUFW* PSTYLEBUFW, LPSTYLEBUFW; struct IMEMENUITEMINFOA{ - UINT cbSize = this.sizeof; - UINT fType; - UINT fState; - UINT wID; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - CHAR[IMEMENUITEM_STRING_SIZE] szString; - HBITMAP hbmpItem; + UINT cbSize = this.sizeof; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + CHAR[IMEMENUITEM_STRING_SIZE] szString; + HBITMAP hbmpItem; } alias IMEMENUITEMINFOA* PIMEMENUITEMINFOA, LPIMEMENUITEMINFOA; struct IMEMENUITEMINFOW{ - UINT cbSize = this.sizeof; - UINT fType; - UINT fState; - UINT wID; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - WCHAR[IMEMENUITEM_STRING_SIZE] szString; - HBITMAP hbmpItem; + UINT cbSize = this.sizeof; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + WCHAR[IMEMENUITEM_STRING_SIZE] szString; + HBITMAP hbmpItem; } alias IMEMENUITEMINFOW* PIMEMENUITEMINFOW, LPIMEMENUITEMINFOW; @@ -357,15 +357,15 @@ alias int function (LPCSTR, DWORD, LPCSTR, LPVOID) REGISTERWORDENUMPROCA; alias int function (LPCWSTR, DWORD, LPCWSTR, LPVOID) REGISTERWORDENUMPROCW; version(Unicode) { - alias REGISTERWORDENUMPROCW REGISTERWORDENUMPROC; - alias REGISTERWORDW REGISTERWORD; - alias IMEMENUITEMINFOW IMEMENUITEMINFO; - alias STYLEBUFW STYLEBUF; + alias REGISTERWORDENUMPROCW REGISTERWORDENUMPROC; + alias REGISTERWORDW REGISTERWORD; + alias IMEMENUITEMINFOW IMEMENUITEMINFO; + alias STYLEBUFW STYLEBUF; } else { - alias REGISTERWORDENUMPROCA REGISTERWORDENUMPROC; - alias REGISTERWORDA REGISTERWORD; - alias IMEMENUITEMINFOA IMEMENUITEMINFO; - alias STYLEBUFA STYLEBUF; + alias REGISTERWORDENUMPROCA REGISTERWORDENUMPROC; + alias REGISTERWORDA REGISTERWORD; + alias IMEMENUITEMINFOA IMEMENUITEMINFO; + alias STYLEBUFA STYLEBUF; } alias STYLEBUF* PSTYLEBUF, LPSTYLEBUF; @@ -439,43 +439,43 @@ DWORD ImmGetImeMenuItemsA(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMI DWORD ImmGetImeMenuItemsW(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); version(Unicode) { - alias ImmEnumRegisterWordW ImmEnumRegisterWord; - alias ImmGetRegisterWordStyleW ImmGetRegisterWordStyle; - alias ImmUnregisterWordW ImmUnregisterWord; - alias ImmRegisterWordW ImmRegisterWord; - alias ImmInstallIMEW ImmInstallIME; - alias ImmIsUIMessageW ImmIsUIMessage; - alias ImmGetConversionListW ImmGetConversionList; - alias ImmEscapeW ImmEscape; - alias ImmConfigureIMEW ImmConfigureIME; - alias ImmSetCompositionFontW ImmSetCompositionFont; - alias ImmGetCompositionFontW ImmGetCompositionFont; - alias ImmGetGuideLineW ImmGetGuideLine; - alias ImmGetCandidateListW ImmGetCandidateList; - alias ImmGetCandidateListCountW ImmGetCandidateListCount; - alias ImmSetCompositionStringW ImmSetCompositionString; - alias ImmGetCompositionStringW ImmGetCompositionString; - alias ImmGetDescriptionW ImmGetDescription; - alias ImmGetIMEFileNameW ImmGetIMEFileName; - alias ImmGetImeMenuItemsW ImmGetImeMenuItems; + alias ImmEnumRegisterWordW ImmEnumRegisterWord; + alias ImmGetRegisterWordStyleW ImmGetRegisterWordStyle; + alias ImmUnregisterWordW ImmUnregisterWord; + alias ImmRegisterWordW ImmRegisterWord; + alias ImmInstallIMEW ImmInstallIME; + alias ImmIsUIMessageW ImmIsUIMessage; + alias ImmGetConversionListW ImmGetConversionList; + alias ImmEscapeW ImmEscape; + alias ImmConfigureIMEW ImmConfigureIME; + alias ImmSetCompositionFontW ImmSetCompositionFont; + alias ImmGetCompositionFontW ImmGetCompositionFont; + alias ImmGetGuideLineW ImmGetGuideLine; + alias ImmGetCandidateListW ImmGetCandidateList; + alias ImmGetCandidateListCountW ImmGetCandidateListCount; + alias ImmSetCompositionStringW ImmSetCompositionString; + alias ImmGetCompositionStringW ImmGetCompositionString; + alias ImmGetDescriptionW ImmGetDescription; + alias ImmGetIMEFileNameW ImmGetIMEFileName; + alias ImmGetImeMenuItemsW ImmGetImeMenuItems; } else { - alias ImmEnumRegisterWordA ImmEnumRegisterWord; - alias ImmGetRegisterWordStyleA ImmGetRegisterWordStyle; - alias ImmUnregisterWordA ImmUnregisterWord; - alias ImmRegisterWordA ImmRegisterWord; - alias ImmInstallIMEA ImmInstallIME; - alias ImmIsUIMessageA ImmIsUIMessage; - alias ImmGetConversionListA ImmGetConversionList; - alias ImmEscapeA ImmEscape; - alias ImmConfigureIMEA ImmConfigureIME; - alias ImmSetCompositionFontA ImmSetCompositionFont; - alias ImmGetCompositionFontA ImmGetCompositionFont; - alias ImmGetGuideLineA ImmGetGuideLine; - alias ImmGetCandidateListA ImmGetCandidateList; - alias ImmGetCandidateListCountA ImmGetCandidateListCount; - alias ImmSetCompositionStringA ImmSetCompositionString; - alias ImmGetCompositionStringA ImmGetCompositionString; - alias ImmGetDescriptionA ImmGetDescription; - alias ImmGetIMEFileNameA ImmGetIMEFileName; - alias ImmGetImeMenuItemsW ImmGetImeMenuItems; + alias ImmEnumRegisterWordA ImmEnumRegisterWord; + alias ImmGetRegisterWordStyleA ImmGetRegisterWordStyle; + alias ImmUnregisterWordA ImmUnregisterWord; + alias ImmRegisterWordA ImmRegisterWord; + alias ImmInstallIMEA ImmInstallIME; + alias ImmIsUIMessageA ImmIsUIMessage; + alias ImmGetConversionListA ImmGetConversionList; + alias ImmEscapeA ImmEscape; + alias ImmConfigureIMEA ImmConfigureIME; + alias ImmSetCompositionFontA ImmSetCompositionFont; + alias ImmGetCompositionFontA ImmGetCompositionFont; + alias ImmGetGuideLineA ImmGetGuideLine; + alias ImmGetCandidateListA ImmGetCandidateList; + alias ImmGetCandidateListCountA ImmGetCandidateListCount; + alias ImmSetCompositionStringA ImmSetCompositionString; + alias ImmGetCompositionStringA ImmGetCompositionString; + alias ImmGetDescriptionA ImmGetDescription; + alias ImmGetIMEFileNameA ImmGetIMEFileName; + alias ImmGetImeMenuItemsW ImmGetImeMenuItems; } diff --git a/src/core/sys/windows/intshcut.d b/src/core/sys/windows/intshcut.d index 8c8cad7601..26e194e5f2 100644 --- a/src/core/sys/windows/intshcut.d +++ b/src/core/sys/windows/intshcut.d @@ -12,77 +12,77 @@ module core.sys.windows.intshcut; private import core.sys.windows.unknwn, core.sys.windows.windef; enum : SCODE { - E_FLAGS = 0x80041000, - // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000) - URL_E_INVALID_SYNTAX = 0x80041001, - // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001) - URL_E_UNREGISTERED_PROTOCOL = 0x80041002, // etc. - IS_E_EXEC_FAILED = 0x80042002 + E_FLAGS = 0x80041000, + // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000) + URL_E_INVALID_SYNTAX = 0x80041001, + // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001) + URL_E_UNREGISTERED_PROTOCOL = 0x80041002, // etc. + IS_E_EXEC_FAILED = 0x80042002 } enum IURL_SETURL_FLAGS { - IURL_SETURL_FL_GUESS_PROTOCOL = 1, - IURL_SETURL_FL_USE_DEFAULT_PROTOCOL, - ALL_IURL_SETURL_FLAGS + IURL_SETURL_FL_GUESS_PROTOCOL = 1, + IURL_SETURL_FL_USE_DEFAULT_PROTOCOL, + ALL_IURL_SETURL_FLAGS } enum IURL_INVOKECOMMAND_FLAGS { - IURL_INVOKECOMMAND_FL_ALLOW_UI = 1, - IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB, - ALL_IURL_INVOKECOMMAND_FLAGS + IURL_INVOKECOMMAND_FL_ALLOW_UI = 1, + IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB, + ALL_IURL_INVOKECOMMAND_FLAGS } enum TRANSLATEURL_IN_FLAGS { - TRANSLATEURL_FL_GUESS_PROTOCOL = 1, - TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL, - ALL_TRANSLATEURL_FLAGS + TRANSLATEURL_FL_GUESS_PROTOCOL = 1, + TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL, + ALL_TRANSLATEURL_FLAGS } enum URLASSOCIATIONDIALOG_IN_FLAGS { - URLASSOCDLG_FL_USE_DEFAULT_NAME = 1, - URLASSOCDLG_FL_REGISTER_ASSOC, - ALL_URLASSOCDLG_FLAGS + URLASSOCDLG_FL_USE_DEFAULT_NAME = 1, + URLASSOCDLG_FL_REGISTER_ASSOC, + ALL_URLASSOCDLG_FLAGS } enum MIMEASSOCIATIONDIALOG_IN_FLAGS { - MIMEASSOCDLG_FL_REGISTER_ASSOC = 1, - ALL_MIMEASSOCDLG_FLAGS = MIMEASSOCDLG_FL_REGISTER_ASSOC + MIMEASSOCDLG_FL_REGISTER_ASSOC = 1, + ALL_MIMEASSOCDLG_FLAGS = MIMEASSOCDLG_FL_REGISTER_ASSOC } struct URLINVOKECOMMANDINFO { - DWORD dwcbSize = URLINVOKECOMMANDINFO.sizeof; - DWORD dwFlags; - HWND hwndParent; - PCSTR pcszVerb; + DWORD dwcbSize = URLINVOKECOMMANDINFO.sizeof; + DWORD dwFlags; + HWND hwndParent; + PCSTR pcszVerb; } alias URLINVOKECOMMANDINFO CURLINVOKECOMMANDINFO; alias URLINVOKECOMMANDINFO* PURLINVOKECOMMANDINFO, PCURLINVOKECOMMANDINFO; interface IUniformResourceLocator : IUnknown { - HRESULT SetURL(PCSTR, DWORD); - HRESULT GetURL(PSTR*); - HRESULT InvokeCommand(PURLINVOKECOMMANDINFO); + HRESULT SetURL(PCSTR, DWORD); + HRESULT GetURL(PSTR*); + HRESULT InvokeCommand(PURLINVOKECOMMANDINFO); } //alias typeof(*(IUniformResourceLocator.init)) CIUniformResourceLocator; // value-type of interface not representable in D alias IUniformResourceLocator PIUniformResourceLocator, PCIUniformResourceLocator; extern (Windows) { - BOOL InetIsOffline(DWORD); - HRESULT MIMEAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); - HRESULT MIMEAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); - HRESULT TranslateURLA(PCSTR, DWORD, PSTR*); - HRESULT TranslateURLW(PCWSTR, DWORD, PWSTR*); - HRESULT URLAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); - HRESULT URLAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); + BOOL InetIsOffline(DWORD); + HRESULT MIMEAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); + HRESULT MIMEAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); + HRESULT TranslateURLA(PCSTR, DWORD, PSTR*); + HRESULT TranslateURLW(PCWSTR, DWORD, PWSTR*); + HRESULT URLAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); + HRESULT URLAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); } version (Unicode) { - alias TranslateURLW TranslateURL; - alias MIMEAssociationDialogW MIMEAssociationDialog; - alias URLAssociationDialogW URLAssociationDialog; + alias TranslateURLW TranslateURL; + alias MIMEAssociationDialogW MIMEAssociationDialog; + alias URLAssociationDialogW URLAssociationDialog; } else { - alias TranslateURLA TranslateURL; - alias MIMEAssociationDialogA MIMEAssociationDialog; - alias URLAssociationDialogA URLAssociationDialog; + alias TranslateURLA TranslateURL; + alias MIMEAssociationDialogA MIMEAssociationDialog; + alias URLAssociationDialogA URLAssociationDialog; } diff --git a/src/core/sys/windows/ipexport.d b/src/core/sys/windows/ipexport.d index a2b5564c35..e6b8b74f27 100644 --- a/src/core/sys/windows/ipexport.d +++ b/src/core/sys/windows/ipexport.d @@ -15,33 +15,33 @@ const size_t MAX_ADAPTER_NAME = 128; // IP STATUS flags enum : IP_STATUS { - IP_SUCCESS = 0, - IP_STATUS_BASE = 11000, - IP_BUF_TOO_SMALL, - IP_DEST_NET_UNREACHABLE, - IP_DEST_HOST_UNREACHABLE, - IP_DEST_PROT_UNREACHABLE, - IP_DEST_PORT_UNREACHABLE, - IP_NO_RESOURCES, - IP_BAD_OPTION, - IP_HW_ERROR, - IP_PACKET_TOO_BIG, - IP_REQ_TIMED_OUT, - IP_BAD_REQ, - IP_BAD_ROUTE, - IP_TTL_EXPIRED_TRANSIT, - IP_TTL_EXPIRED_REASSEM, - IP_PARAM_PROBLEM, - IP_SOURCE_QUENCH, - IP_OPTION_TOO_BIG, - IP_BAD_DESTINATION, - IP_ADDR_DELETED, - IP_SPEC_MTU_CHANGE, - IP_MTU_CHANGE, - IP_UNLOAD, // = IP_STATUS_BASE + 22 - IP_GENERAL_FAILURE = IP_STATUS_BASE + 50, - MAX_IP_STATUS = IP_GENERAL_FAILURE, - IP_PENDING = IP_STATUS_BASE + 255 + IP_SUCCESS = 0, + IP_STATUS_BASE = 11000, + IP_BUF_TOO_SMALL, + IP_DEST_NET_UNREACHABLE, + IP_DEST_HOST_UNREACHABLE, + IP_DEST_PROT_UNREACHABLE, + IP_DEST_PORT_UNREACHABLE, + IP_NO_RESOURCES, + IP_BAD_OPTION, + IP_HW_ERROR, + IP_PACKET_TOO_BIG, + IP_REQ_TIMED_OUT, + IP_BAD_REQ, + IP_BAD_ROUTE, + IP_TTL_EXPIRED_TRANSIT, + IP_TTL_EXPIRED_REASSEM, + IP_PARAM_PROBLEM, + IP_SOURCE_QUENCH, + IP_OPTION_TOO_BIG, + IP_BAD_DESTINATION, + IP_ADDR_DELETED, + IP_SPEC_MTU_CHANGE, + IP_MTU_CHANGE, + IP_UNLOAD, // = IP_STATUS_BASE + 22 + IP_GENERAL_FAILURE = IP_STATUS_BASE + 50, + MAX_IP_STATUS = IP_GENERAL_FAILURE, + IP_PENDING = IP_STATUS_BASE + 255 } // IP header Flags values @@ -49,15 +49,15 @@ const byte IP_FLAG_DF = 2; // IP Option types enum : ubyte { - IP_OPT_EOL = 0, - IP_OPT_NOP = 0x01, - IP_OPT_RR = 0x07, - IP_OPT_SECURITY = 0x82, - IP_OPT_LSRR = 0x83, - IP_OPT_SSRR = 0x89, - IP_OPT_TS = 0x44, - IP_OPT_SID = 0x88, - IP_OPT_ROUTER_ALERT = 0x94 + IP_OPT_EOL = 0, + IP_OPT_NOP = 0x01, + IP_OPT_RR = 0x07, + IP_OPT_SECURITY = 0x82, + IP_OPT_LSRR = 0x83, + IP_OPT_SSRR = 0x89, + IP_OPT_TS = 0x44, + IP_OPT_SID = 0x88, + IP_OPT_ROUTER_ALERT = 0x94 } const ubyte MAX_OPT_SIZE = 40; @@ -65,11 +65,11 @@ const ubyte MAX_OPT_SIZE = 40; alias uint IPAddr, IPMask, IP_STATUS; struct IP_OPTION_INFORMATION { - ubyte Ttl; - ubyte Tos; - ubyte Flags; - ubyte OptionsSize; - ubyte* OptionsData; + ubyte Ttl; + ubyte Tos; + ubyte Flags; + ubyte OptionsSize; + ubyte* OptionsData; } alias IP_OPTION_INFORMATION* PIP_OPTION_INFORMATION; @@ -85,23 +85,23 @@ struct ICMP_ECHO_REPLY { alias ICMP_ECHO_REPLY* PICMP_ECHO_REPLY; struct IP_ADAPTER_INDEX_MAP { - ULONG Index; - WCHAR[MAX_ADAPTER_NAME] Name; + ULONG Index; + WCHAR[MAX_ADAPTER_NAME] Name; } alias IP_ADAPTER_INDEX_MAP* PIP_ADAPTER_INDEX_MAP; struct IP_INTERFACE_INFO { - LONG NumAdapters; - IP_ADAPTER_INDEX_MAP[1] _Adapter; + LONG NumAdapters; + IP_ADAPTER_INDEX_MAP[1] _Adapter; - IP_ADAPTER_INDEX_MAP* Adapter() { return _Adapter.ptr; } + IP_ADAPTER_INDEX_MAP* Adapter() { return _Adapter.ptr; } } alias IP_INTERFACE_INFO* PIP_INTERFACE_INFO; struct IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { - ULONG NumAdapters; - IPAddr[1] _Address; + ULONG NumAdapters; + IPAddr[1] _Address; - IPAddr* Address() { return _Address.ptr; } + IPAddr* Address() { return _Address.ptr; } } alias IP_UNIDIRECTIONAL_ADAPTER_ADDRESS* PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; diff --git a/src/core/sys/windows/iphlpapi.d b/src/core/sys/windows/iphlpapi.d index 4cca70f24c..dd361012cb 100644 --- a/src/core/sys/windows/iphlpapi.d +++ b/src/core/sys/windows/iphlpapi.d @@ -13,49 +13,49 @@ import core.sys.windows.ipexport, core.sys.windows.iprtrmib, core.sys.windows.ip private import core.sys.windows.winbase, core.sys.windows.windef; extern (Windows) { - DWORD AddIPAddress(IPAddr, IPMask, DWORD, PULONG, PULONG); - DWORD CreateIpForwardEntry(PMIB_IPFORWARDROW); - DWORD CreateIpNetEntry(PMIB_IPNETROW); - DWORD CreateProxyArpEntry(DWORD, DWORD, DWORD); - DWORD DeleteIPAddress(ULONG); - DWORD DeleteIpForwardEntry(PMIB_IPFORWARDROW); - DWORD DeleteIpNetEntry(PMIB_IPNETROW); - DWORD DeleteProxyArpEntry(DWORD, DWORD, DWORD); - DWORD EnableRouter(HANDLE*, OVERLAPPED*); - DWORD FlushIpNetTable(DWORD); - DWORD GetAdapterIndex(LPWSTR, PULONG); - DWORD GetAdaptersInfo(PIP_ADAPTER_INFO, PULONG); - DWORD GetBestInterface(IPAddr, PDWORD); - DWORD GetBestRoute(DWORD, DWORD, PMIB_IPFORWARDROW); - DWORD GetFriendlyIfIndex(DWORD); - DWORD GetIcmpStatistics(PMIB_ICMP); - DWORD GetIfEntry(PMIB_IFROW); - DWORD GetIfTable(PMIB_IFTABLE, PULONG, BOOL); - DWORD GetInterfaceInfo(PIP_INTERFACE_INFO, PULONG); - DWORD GetIpAddrTable(PMIB_IPADDRTABLE, PULONG, BOOL); - DWORD GetIpForwardTable(PMIB_IPFORWARDTABLE, PULONG, BOOL); - DWORD GetIpNetTable(PMIB_IPNETTABLE, PULONG, BOOL); - DWORD GetIpStatistics(PMIB_IPSTATS); - DWORD GetNetworkParams(PFIXED_INFO, PULONG); - DWORD GetNumberOfInterfaces(PDWORD); - DWORD GetPerAdapterInfo(ULONG, PIP_PER_ADAPTER_INFO, PULONG); - BOOL GetRTTAndHopCount(IPAddr, PULONG, ULONG, PULONG); - DWORD GetTcpStatistics(PMIB_TCPSTATS); - DWORD GetTcpTable(PMIB_TCPTABLE, PDWORD, BOOL); - DWORD GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS, - PULONG); - DWORD GetUdpStatistics(PMIB_UDPSTATS); - DWORD GetUdpTable(PMIB_UDPTABLE, PDWORD, BOOL); - DWORD IpReleaseAddress(PIP_ADAPTER_INDEX_MAP); - DWORD IpRenewAddress(PIP_ADAPTER_INDEX_MAP); - DWORD NotifyAddrChange(PHANDLE, LPOVERLAPPED); - DWORD NotifyRouteChange(PHANDLE, LPOVERLAPPED); - DWORD SendARP(IPAddr, IPAddr, PULONG, PULONG); - DWORD SetIfEntry(PMIB_IFROW); - DWORD SetIpForwardEntry(PMIB_IPFORWARDROW); - DWORD SetIpNetEntry(PMIB_IPNETROW); - DWORD SetIpStatistics(PMIB_IPSTATS); - DWORD SetIpTTL(UINT); - DWORD SetTcpEntry(PMIB_TCPROW); - DWORD UnenableRouter(OVERLAPPED*, LPDWORD); + DWORD AddIPAddress(IPAddr, IPMask, DWORD, PULONG, PULONG); + DWORD CreateIpForwardEntry(PMIB_IPFORWARDROW); + DWORD CreateIpNetEntry(PMIB_IPNETROW); + DWORD CreateProxyArpEntry(DWORD, DWORD, DWORD); + DWORD DeleteIPAddress(ULONG); + DWORD DeleteIpForwardEntry(PMIB_IPFORWARDROW); + DWORD DeleteIpNetEntry(PMIB_IPNETROW); + DWORD DeleteProxyArpEntry(DWORD, DWORD, DWORD); + DWORD EnableRouter(HANDLE*, OVERLAPPED*); + DWORD FlushIpNetTable(DWORD); + DWORD GetAdapterIndex(LPWSTR, PULONG); + DWORD GetAdaptersInfo(PIP_ADAPTER_INFO, PULONG); + DWORD GetBestInterface(IPAddr, PDWORD); + DWORD GetBestRoute(DWORD, DWORD, PMIB_IPFORWARDROW); + DWORD GetFriendlyIfIndex(DWORD); + DWORD GetIcmpStatistics(PMIB_ICMP); + DWORD GetIfEntry(PMIB_IFROW); + DWORD GetIfTable(PMIB_IFTABLE, PULONG, BOOL); + DWORD GetInterfaceInfo(PIP_INTERFACE_INFO, PULONG); + DWORD GetIpAddrTable(PMIB_IPADDRTABLE, PULONG, BOOL); + DWORD GetIpForwardTable(PMIB_IPFORWARDTABLE, PULONG, BOOL); + DWORD GetIpNetTable(PMIB_IPNETTABLE, PULONG, BOOL); + DWORD GetIpStatistics(PMIB_IPSTATS); + DWORD GetNetworkParams(PFIXED_INFO, PULONG); + DWORD GetNumberOfInterfaces(PDWORD); + DWORD GetPerAdapterInfo(ULONG, PIP_PER_ADAPTER_INFO, PULONG); + BOOL GetRTTAndHopCount(IPAddr, PULONG, ULONG, PULONG); + DWORD GetTcpStatistics(PMIB_TCPSTATS); + DWORD GetTcpTable(PMIB_TCPTABLE, PDWORD, BOOL); + DWORD GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS, + PULONG); + DWORD GetUdpStatistics(PMIB_UDPSTATS); + DWORD GetUdpTable(PMIB_UDPTABLE, PDWORD, BOOL); + DWORD IpReleaseAddress(PIP_ADAPTER_INDEX_MAP); + DWORD IpRenewAddress(PIP_ADAPTER_INDEX_MAP); + DWORD NotifyAddrChange(PHANDLE, LPOVERLAPPED); + DWORD NotifyRouteChange(PHANDLE, LPOVERLAPPED); + DWORD SendARP(IPAddr, IPAddr, PULONG, PULONG); + DWORD SetIfEntry(PMIB_IFROW); + DWORD SetIpForwardEntry(PMIB_IPFORWARDROW); + DWORD SetIpNetEntry(PMIB_IPNETROW); + DWORD SetIpStatistics(PMIB_IPSTATS); + DWORD SetIpTTL(UINT); + DWORD SetTcpEntry(PMIB_TCPROW); + DWORD UnenableRouter(OVERLAPPED*, LPDWORD); } diff --git a/src/core/sys/windows/ipifcons.d b/src/core/sys/windows/ipifcons.d index 5e1f96a6c3..d71d099c7b 100644 --- a/src/core/sys/windows/ipifcons.d +++ b/src/core/sys/windows/ipifcons.d @@ -12,26 +12,26 @@ module core.sys.windows.ipifcons; // FIXME: check types of constants enum { - MIB_IF_ADMIN_STATUS_UP = 1, - MIB_IF_ADMIN_STATUS_DOWN, - MIB_IF_ADMIN_STATUS_TESTING, + MIB_IF_ADMIN_STATUS_UP = 1, + MIB_IF_ADMIN_STATUS_DOWN, + MIB_IF_ADMIN_STATUS_TESTING, } enum { - MIB_IF_OPER_STATUS_NON_OPERATIONAL, - MIB_IF_OPER_STATUS_UNREACHABLE, - MIB_IF_OPER_STATUS_DISCONNECTED, - MIB_IF_OPER_STATUS_CONNECTING, - MIB_IF_OPER_STATUS_CONNECTED, - MIB_IF_OPER_STATUS_OPERATIONAL // = 5 + MIB_IF_OPER_STATUS_NON_OPERATIONAL, + MIB_IF_OPER_STATUS_UNREACHABLE, + MIB_IF_OPER_STATUS_DISCONNECTED, + MIB_IF_OPER_STATUS_CONNECTING, + MIB_IF_OPER_STATUS_CONNECTED, + MIB_IF_OPER_STATUS_OPERATIONAL // = 5 } enum { - MIB_IF_TYPE_OTHER = 1, - MIB_IF_TYPE_ETHERNET = 6, - MIB_IF_TYPE_TOKENRING = 9, - MIB_IF_TYPE_FDDI = 15, - MIB_IF_TYPE_PPP = 23, - MIB_IF_TYPE_LOOPBACK = 24, - MIB_IF_TYPE_SLIP = 28 + MIB_IF_TYPE_OTHER = 1, + MIB_IF_TYPE_ETHERNET = 6, + MIB_IF_TYPE_TOKENRING = 9, + MIB_IF_TYPE_FDDI = 15, + MIB_IF_TYPE_PPP = 23, + MIB_IF_TYPE_LOOPBACK = 24, + MIB_IF_TYPE_SLIP = 28 } diff --git a/src/core/sys/windows/iprtrmib.d b/src/core/sys/windows/iprtrmib.d index 9ec8777b47..10f8e4ad55 100644 --- a/src/core/sys/windows/iprtrmib.d +++ b/src/core/sys/windows/iprtrmib.d @@ -15,252 +15,252 @@ private import core.sys.windows.windef; // FIXME: check types of constants const size_t - MAXLEN_PHYSADDR = 8, - MAXLEN_IFDESCR = 256, - MAX_INTERFACE_NAME_LEN = 256; + MAXLEN_PHYSADDR = 8, + MAXLEN_IFDESCR = 256, + MAX_INTERFACE_NAME_LEN = 256; enum { - MIB_IPNET_TYPE_OTHER = 1, - MIB_IPNET_TYPE_INVALID, - MIB_IPNET_TYPE_DYNAMIC, - MIB_IPNET_TYPE_STATIC + MIB_IPNET_TYPE_OTHER = 1, + MIB_IPNET_TYPE_INVALID, + MIB_IPNET_TYPE_DYNAMIC, + MIB_IPNET_TYPE_STATIC } enum { - MIB_TCP_RTO_OTHER = 1, - MIB_TCP_RTO_CONSTANT, - MIB_TCP_RTO_RSRE, - MIB_TCP_RTO_VANJ + MIB_TCP_RTO_OTHER = 1, + MIB_TCP_RTO_CONSTANT, + MIB_TCP_RTO_RSRE, + MIB_TCP_RTO_VANJ } enum { - MIB_TCP_STATE_CLOSED = 1, - MIB_TCP_STATE_LISTEN, - MIB_TCP_STATE_SYN_SENT, - MIB_TCP_STATE_SYN_RCVD, - MIB_TCP_STATE_ESTAB, - MIB_TCP_STATE_FIN_WAIT1, - MIB_TCP_STATE_FIN_WAIT2, - MIB_TCP_STATE_CLOSE_WAIT, - MIB_TCP_STATE_CLOSING, - MIB_TCP_STATE_LAST_ACK, - MIB_TCP_STATE_TIME_WAIT, - MIB_TCP_STATE_DELETE_TCB // = 12 + MIB_TCP_STATE_CLOSED = 1, + MIB_TCP_STATE_LISTEN, + MIB_TCP_STATE_SYN_SENT, + MIB_TCP_STATE_SYN_RCVD, + MIB_TCP_STATE_ESTAB, + MIB_TCP_STATE_FIN_WAIT1, + MIB_TCP_STATE_FIN_WAIT2, + MIB_TCP_STATE_CLOSE_WAIT, + MIB_TCP_STATE_CLOSING, + MIB_TCP_STATE_LAST_ACK, + MIB_TCP_STATE_TIME_WAIT, + MIB_TCP_STATE_DELETE_TCB // = 12 } const DWORD - MIB_USE_CURRENT_TTL = -1, - MIB_USE_CURRENT_FORWARDING = -1, - MIB_TCP_MAXCONN_DYNAMIC = -1; + MIB_USE_CURRENT_TTL = -1, + MIB_USE_CURRENT_FORWARDING = -1, + MIB_TCP_MAXCONN_DYNAMIC = -1; struct MIB_IPADDRROW { - DWORD dwAddr; - DWORD dwIndex; - DWORD dwMask; - DWORD dwBCastAddr; - DWORD dwReasmSize; - ushort unused1; - ushort unused2; + DWORD dwAddr; + DWORD dwIndex; + DWORD dwMask; + DWORD dwBCastAddr; + DWORD dwReasmSize; + ushort unused1; + ushort unused2; } alias MIB_IPADDRROW* PMIB_IPADDRROW; struct MIB_IPADDRTABLE { - DWORD dwNumEntries; - MIB_IPADDRROW[1] _table; + DWORD dwNumEntries; + MIB_IPADDRROW[1] _table; - MIB_IPADDRROW* table() { return _table.ptr; } + MIB_IPADDRROW* table() { return _table.ptr; } } alias MIB_IPADDRTABLE* PMIB_IPADDRTABLE; struct MIB_IPFORWARDROW { - DWORD dwForwardDest; - DWORD dwForwardMask; - DWORD dwForwardPolicy; - DWORD dwForwardNextHop; - DWORD dwForwardIfIndex; - DWORD dwForwardType; - DWORD dwForwardProto; - DWORD dwForwardAge; - DWORD dwForwardNextHopAS; - DWORD dwForwardMetric1; - DWORD dwForwardMetric2; - DWORD dwForwardMetric3; - DWORD dwForwardMetric4; - DWORD dwForwardMetric5; + DWORD dwForwardDest; + DWORD dwForwardMask; + DWORD dwForwardPolicy; + DWORD dwForwardNextHop; + DWORD dwForwardIfIndex; + DWORD dwForwardType; + DWORD dwForwardProto; + DWORD dwForwardAge; + DWORD dwForwardNextHopAS; + DWORD dwForwardMetric1; + DWORD dwForwardMetric2; + DWORD dwForwardMetric3; + DWORD dwForwardMetric4; + DWORD dwForwardMetric5; } alias MIB_IPFORWARDROW* PMIB_IPFORWARDROW; struct MIB_IPFORWARDTABLE { - DWORD dwNumEntries; - MIB_IPFORWARDROW[1] _table; + DWORD dwNumEntries; + MIB_IPFORWARDROW[1] _table; - MIB_IPFORWARDROW* table() { return _table.ptr; } + MIB_IPFORWARDROW* table() { return _table.ptr; } } alias MIB_IPFORWARDTABLE* PMIB_IPFORWARDTABLE; struct MIB_IPNETROW { - DWORD dwIndex; - DWORD dwPhysAddrLen; - BYTE[MAXLEN_PHYSADDR] bPhysAddr; - DWORD dwAddr; - DWORD dwType; + DWORD dwIndex; + DWORD dwPhysAddrLen; + BYTE[MAXLEN_PHYSADDR] bPhysAddr; + DWORD dwAddr; + DWORD dwType; } alias MIB_IPNETROW* PMIB_IPNETROW; struct MIB_IPNETTABLE { - DWORD dwNumEntries; - MIB_IPNETROW[1] _table; + DWORD dwNumEntries; + MIB_IPNETROW[1] _table; - MIB_IPNETROW* table() { return _table.ptr; } + MIB_IPNETROW* table() { return _table.ptr; } } alias MIB_IPNETTABLE* PMIB_IPNETTABLE; struct MIBICMPSTATS { - DWORD dwMsgs; - DWORD dwErrors; - DWORD dwDestUnreachs; - DWORD dwTimeExcds; - DWORD dwParmProbs; - DWORD dwSrcQuenchs; - DWORD dwRedirects; - DWORD dwEchos; - DWORD dwEchoReps; - DWORD dwTimestamps; - DWORD dwTimestampReps; - DWORD dwAddrMasks; - DWORD dwAddrMaskReps; + DWORD dwMsgs; + DWORD dwErrors; + DWORD dwDestUnreachs; + DWORD dwTimeExcds; + DWORD dwParmProbs; + DWORD dwSrcQuenchs; + DWORD dwRedirects; + DWORD dwEchos; + DWORD dwEchoReps; + DWORD dwTimestamps; + DWORD dwTimestampReps; + DWORD dwAddrMasks; + DWORD dwAddrMaskReps; } alias MIBICMPSTATS* PMIBICMPSTATS; struct MIBICMPINFO { - MIBICMPSTATS icmpInStats; - MIBICMPSTATS icmpOutStats; + MIBICMPSTATS icmpInStats; + MIBICMPSTATS icmpOutStats; } alias MIBICMPINFO* PMIBICMPINFO; struct MIB_ICMP { - MIBICMPINFO stats; + MIBICMPINFO stats; } alias MIB_ICMP* PMIB_ICMP; struct MIB_IFROW { - WCHAR[MAX_INTERFACE_NAME_LEN] wszName; - DWORD dwIndex; - DWORD dwType; - DWORD dwMtu; - DWORD dwSpeed; - DWORD dwPhysAddrLen; - BYTE[MAXLEN_PHYSADDR] bPhysAddr; - DWORD dwAdminStatus; - DWORD dwOperStatus; - DWORD dwLastChange; - DWORD dwInOctets; - DWORD dwInUcastPkts; - DWORD dwInNUcastPkts; - DWORD dwInDiscards; - DWORD dwInErrors; - DWORD dwInUnknownProtos; - DWORD dwOutOctets; - DWORD dwOutUcastPkts; - DWORD dwOutNUcastPkts; - DWORD dwOutDiscards; - DWORD dwOutErrors; - DWORD dwOutQLen; - DWORD dwDescrLen; - BYTE[MAXLEN_IFDESCR] bDescr; + WCHAR[MAX_INTERFACE_NAME_LEN] wszName; + DWORD dwIndex; + DWORD dwType; + DWORD dwMtu; + DWORD dwSpeed; + DWORD dwPhysAddrLen; + BYTE[MAXLEN_PHYSADDR] bPhysAddr; + DWORD dwAdminStatus; + DWORD dwOperStatus; + DWORD dwLastChange; + DWORD dwInOctets; + DWORD dwInUcastPkts; + DWORD dwInNUcastPkts; + DWORD dwInDiscards; + DWORD dwInErrors; + DWORD dwInUnknownProtos; + DWORD dwOutOctets; + DWORD dwOutUcastPkts; + DWORD dwOutNUcastPkts; + DWORD dwOutDiscards; + DWORD dwOutErrors; + DWORD dwOutQLen; + DWORD dwDescrLen; + BYTE[MAXLEN_IFDESCR] bDescr; } alias MIB_IFROW* PMIB_IFROW; struct MIB_IFTABLE { - DWORD dwNumEntries; - MIB_IFROW[1] _table; + DWORD dwNumEntries; + MIB_IFROW[1] _table; - MIB_IFROW* table() { return _table.ptr; } + MIB_IFROW* table() { return _table.ptr; } } alias MIB_IFTABLE* PMIB_IFTABLE; struct MIB_IPSTATS { - DWORD dwForwarding; - DWORD dwDefaultTTL; - DWORD dwInReceives; - DWORD dwInHdrErrors; - DWORD dwInAddrErrors; - DWORD dwForwDatagrams; - DWORD dwInUnknownProtos; - DWORD dwInDiscards; - DWORD dwInDelivers; - DWORD dwOutRequests; - DWORD dwRoutingDiscards; - DWORD dwOutDiscards; - DWORD dwOutNoRoutes; - DWORD dwReasmTimeout; - DWORD dwReasmReqds; - DWORD dwReasmOks; - DWORD dwReasmFails; - DWORD dwFragOks; - DWORD dwFragFails; - DWORD dwFragCreates; - DWORD dwNumIf; - DWORD dwNumAddr; - DWORD dwNumRoutes; + DWORD dwForwarding; + DWORD dwDefaultTTL; + DWORD dwInReceives; + DWORD dwInHdrErrors; + DWORD dwInAddrErrors; + DWORD dwForwDatagrams; + DWORD dwInUnknownProtos; + DWORD dwInDiscards; + DWORD dwInDelivers; + DWORD dwOutRequests; + DWORD dwRoutingDiscards; + DWORD dwOutDiscards; + DWORD dwOutNoRoutes; + DWORD dwReasmTimeout; + DWORD dwReasmReqds; + DWORD dwReasmOks; + DWORD dwReasmFails; + DWORD dwFragOks; + DWORD dwFragFails; + DWORD dwFragCreates; + DWORD dwNumIf; + DWORD dwNumAddr; + DWORD dwNumRoutes; } alias MIB_IPSTATS* PMIB_IPSTATS; struct MIB_TCPSTATS { - DWORD dwRtoAlgorithm; - DWORD dwRtoMin; - DWORD dwRtoMax; - DWORD dwMaxConn; - DWORD dwActiveOpens; - DWORD dwPassiveOpens; - DWORD dwAttemptFails; - DWORD dwEstabResets; - DWORD dwCurrEstab; - DWORD dwInSegs; - DWORD dwOutSegs; - DWORD dwRetransSegs; - DWORD dwInErrs; - DWORD dwOutRsts; - DWORD dwNumConns; + DWORD dwRtoAlgorithm; + DWORD dwRtoMin; + DWORD dwRtoMax; + DWORD dwMaxConn; + DWORD dwActiveOpens; + DWORD dwPassiveOpens; + DWORD dwAttemptFails; + DWORD dwEstabResets; + DWORD dwCurrEstab; + DWORD dwInSegs; + DWORD dwOutSegs; + DWORD dwRetransSegs; + DWORD dwInErrs; + DWORD dwOutRsts; + DWORD dwNumConns; } alias MIB_TCPSTATS* PMIB_TCPSTATS; struct MIB_TCPROW { - DWORD dwState; - DWORD dwLocalAddr; - DWORD dwLocalPort; - DWORD dwRemoteAddr; - DWORD dwRemotePort; + DWORD dwState; + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwRemoteAddr; + DWORD dwRemotePort; } alias MIB_TCPROW* PMIB_TCPROW; struct MIB_TCPTABLE { - DWORD dwNumEntries; - MIB_TCPROW[1] _table; + DWORD dwNumEntries; + MIB_TCPROW[1] _table; - MIB_TCPROW* table() { return _table.ptr; } + MIB_TCPROW* table() { return _table.ptr; } } alias MIB_TCPTABLE* PMIB_TCPTABLE; struct MIB_UDPSTATS { - DWORD dwInDatagrams; - DWORD dwNoPorts; - DWORD dwInErrors; - DWORD dwOutDatagrams; - DWORD dwNumAddrs; + DWORD dwInDatagrams; + DWORD dwNoPorts; + DWORD dwInErrors; + DWORD dwOutDatagrams; + DWORD dwNumAddrs; } alias MIB_UDPSTATS* PMIB_UDPSTATS; struct MIB_UDPROW { - DWORD dwLocalAddr; - DWORD dwLocalPort; + DWORD dwLocalAddr; + DWORD dwLocalPort; } alias MIB_UDPROW* PMIB_UDPROW; struct MIB_UDPTABLE { - DWORD dwNumEntries; - MIB_UDPROW[1] _table; + DWORD dwNumEntries; + MIB_UDPROW[1] _table; - MIB_UDPROW* table() { return _table.ptr; } + MIB_UDPROW* table() { return _table.ptr; } } alias MIB_UDPTABLE* PMIB_UDPTABLE; diff --git a/src/core/sys/windows/iptypes.d b/src/core/sys/windows/iptypes.d index 2fbb4bba80..a594aa34bc 100644 --- a/src/core/sys/windows/iptypes.d +++ b/src/core/sys/windows/iptypes.d @@ -21,82 +21,82 @@ version(Tango){ //#include const size_t - DEFAULT_MINIMUM_ENTITIES = 32, - MAX_ADAPTER_ADDRESS_LENGTH = 8, - MAX_ADAPTER_DESCRIPTION_LENGTH = 128, - MAX_ADAPTER_NAME_LENGTH = 256, - MAX_DOMAIN_NAME_LEN = 128, - MAX_HOSTNAME_LEN = 128, - MAX_SCOPE_ID_LEN = 256; + DEFAULT_MINIMUM_ENTITIES = 32, + MAX_ADAPTER_ADDRESS_LENGTH = 8, + MAX_ADAPTER_DESCRIPTION_LENGTH = 128, + MAX_ADAPTER_NAME_LENGTH = 256, + MAX_DOMAIN_NAME_LEN = 128, + MAX_HOSTNAME_LEN = 128, + MAX_SCOPE_ID_LEN = 256; const UINT - BROADCAST_NODETYPE = 1, - PEER_TO_PEER_NODETYPE = 2, - MIXED_NODETYPE = 4, - HYBRID_NODETYPE = 8; + BROADCAST_NODETYPE = 1, + PEER_TO_PEER_NODETYPE = 2, + MIXED_NODETYPE = 4, + HYBRID_NODETYPE = 8; enum : UINT { - IF_OTHER_ADAPTERTYPE, - IF_ETHERNET_ADAPTERTYPE, - IF_TOKEN_RING_ADAPTERTYPE, - IF_FDDI_ADAPTERTYPE, - IF_PPP_ADAPTERTYPE, - IF_LOOPBACK_ADAPTERTYPE // = 5 + IF_OTHER_ADAPTERTYPE, + IF_ETHERNET_ADAPTERTYPE, + IF_TOKEN_RING_ADAPTERTYPE, + IF_FDDI_ADAPTERTYPE, + IF_PPP_ADAPTERTYPE, + IF_LOOPBACK_ADAPTERTYPE // = 5 } struct IP_ADDRESS_STRING { - char[16] String; + char[16] String; } alias IP_ADDRESS_STRING IP_MASK_STRING; alias IP_ADDRESS_STRING* PIP_ADDRESS_STRING, PIP_MASK_STRING; struct IP_ADDR_STRING { - IP_ADDR_STRING* Next; - IP_ADDRESS_STRING IpAddress; - IP_MASK_STRING IpMask; - DWORD Context; + IP_ADDR_STRING* Next; + IP_ADDRESS_STRING IpAddress; + IP_MASK_STRING IpMask; + DWORD Context; } alias IP_ADDR_STRING* PIP_ADDR_STRING; struct IP_ADAPTER_INFO { - IP_ADAPTER_INFO* Next; - DWORD ComboIndex; - char[MAX_ADAPTER_NAME_LENGTH+4] AdapterName; - char[MAX_ADAPTER_DESCRIPTION_LENGTH+4] Description; - UINT AddressLength; - BYTE[MAX_ADAPTER_ADDRESS_LENGTH] Address; - DWORD Index; - UINT Type; - UINT DhcpEnabled; - PIP_ADDR_STRING CurrentIpAddress; - IP_ADDR_STRING IpAddressList; - IP_ADDR_STRING GatewayList; - IP_ADDR_STRING DhcpServer; - BOOL HaveWins; - IP_ADDR_STRING PrimaryWinsServer; - IP_ADDR_STRING SecondaryWinsServer; - time_t LeaseObtained; - time_t LeaseExpires; + IP_ADAPTER_INFO* Next; + DWORD ComboIndex; + char[MAX_ADAPTER_NAME_LENGTH+4] AdapterName; + char[MAX_ADAPTER_DESCRIPTION_LENGTH+4] Description; + UINT AddressLength; + BYTE[MAX_ADAPTER_ADDRESS_LENGTH] Address; + DWORD Index; + UINT Type; + UINT DhcpEnabled; + PIP_ADDR_STRING CurrentIpAddress; + IP_ADDR_STRING IpAddressList; + IP_ADDR_STRING GatewayList; + IP_ADDR_STRING DhcpServer; + BOOL HaveWins; + IP_ADDR_STRING PrimaryWinsServer; + IP_ADDR_STRING SecondaryWinsServer; + time_t LeaseObtained; + time_t LeaseExpires; } alias IP_ADAPTER_INFO* PIP_ADAPTER_INFO; struct IP_PER_ADAPTER_INFO { - UINT AutoconfigEnabled; - UINT AutoconfigActive; - PIP_ADDR_STRING CurrentDnsServer; - IP_ADDR_STRING DnsServerList; + UINT AutoconfigEnabled; + UINT AutoconfigActive; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; } alias IP_PER_ADAPTER_INFO* PIP_PER_ADAPTER_INFO; struct FIXED_INFO { - char[MAX_HOSTNAME_LEN+4] HostName; - char[MAX_DOMAIN_NAME_LEN+4] DomainName; - PIP_ADDR_STRING CurrentDnsServer; - IP_ADDR_STRING DnsServerList; - UINT NodeType; - char[MAX_SCOPE_ID_LEN+4] ScopeId; - UINT EnableRouting; - UINT EnableProxy; - UINT EnableDns; + char[MAX_HOSTNAME_LEN+4] HostName; + char[MAX_DOMAIN_NAME_LEN+4] DomainName; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; + UINT NodeType; + char[MAX_SCOPE_ID_LEN+4] ScopeId; + UINT EnableRouting; + UINT EnableProxy; + UINT EnableDns; } alias FIXED_INFO* PFIXED_INFO; diff --git a/src/core/sys/windows/isguids.d b/src/core/sys/windows/isguids.d index 8b543e3157..5f3067cbf2 100644 --- a/src/core/sys/windows/isguids.d +++ b/src/core/sys/windows/isguids.d @@ -12,5 +12,5 @@ module core.sys.windows.isguids; private import core.sys.windows.basetyps; extern (C) extern const GUID - CLSID_InternetShortcut, - IID_IUniformResourceLocator; + CLSID_InternetShortcut, + IID_IUniformResourceLocator; diff --git a/src/core/sys/windows/lm.d b/src/core/sys/windows/lm.d index 7e10486b39..df4103f53f 100644 --- a/src/core/sys/windows/lm.d +++ b/src/core/sys/windows/lm.d @@ -9,13 +9,13 @@ module core.sys.windows.lm; /* removed - now supporting only Win2k up version (WindowsVista) { - version = WIN32_WINNT_ONLY; + version = WIN32_WINNT_ONLY; } else version (Windows2003) { - version = WIN32_WINNT_ONLY; + version = WIN32_WINNT_ONLY; } else version (WindowsXP) { - version = WIN32_WINNT_ONLY; + version = WIN32_WINNT_ONLY; } else version (WindowsNTonly) { - version = WIN32_WINNT_ONLY; + version = WIN32_WINNT_ONLY; } */ public import core.sys.windows.lmcons; @@ -34,7 +34,7 @@ public import core.sys.windows.lmserver; version (Windows2000) { } else { - public import core.sys.windows.lmmsg; + public import core.sys.windows.lmmsg; } // FIXME: Everything in these next files seems to be deprecated! diff --git a/src/core/sys/windows/lmaccess.d b/src/core/sys/windows/lmaccess.d index e3b57b4d8a..4e7f9363d7 100644 --- a/src/core/sys/windows/lmaccess.d +++ b/src/core/sys/windows/lmaccess.d @@ -11,17 +11,17 @@ pragma(lib, "netapi32"); /** Changes relative to MinGW: - USER_POSIX_ID_PARMNUM and GROUP_POSIX_ID_PARMNUM aren't in MinGW or in - the Platform SDK docs, so they have been dropped from this file. + USER_POSIX_ID_PARMNUM and GROUP_POSIX_ID_PARMNUM aren't in MinGW or in + the Platform SDK docs, so they have been dropped from this file. */ private import core.sys.windows.lmcons, core.sys.windows.windef; const wchar[] - GROUP_SPECIALGRP_USERS = "USERS", - GROUP_SPECIALGRP_ADMINS = "ADMINS", - GROUP_SPECIALGRP_GUESTS = "GUESTS", - GROUP_SPECIALGRP_LOCAL = "LOCAL"; + GROUP_SPECIALGRP_USERS = "USERS", + GROUP_SPECIALGRP_ADMINS = "ADMINS", + GROUP_SPECIALGRP_GUESTS = "GUESTS", + GROUP_SPECIALGRP_LOCAL = "LOCAL"; const ACCESS_LETTERS = "RWCXDAP "; @@ -231,491 +231,491 @@ const NETLOGON_FULL_SYNC_REPLICATION=4; const NETLOGON_REDO_NEEDED=8; struct USER_INFO_0 { - LPWSTR usri0_name; + LPWSTR usri0_name; } alias USER_INFO_0* PUSER_INFO_0, LPUSER_INFO_0; struct USER_INFO_1{ - LPWSTR usri1_name; - LPWSTR usri1_password; - DWORD usri1_password_age; - DWORD usri1_priv; - LPWSTR usri1_home_dir; - LPWSTR usri1_comment; - DWORD usri1_flags; - LPWSTR usri1_script_path; + LPWSTR usri1_name; + LPWSTR usri1_password; + DWORD usri1_password_age; + DWORD usri1_priv; + LPWSTR usri1_home_dir; + LPWSTR usri1_comment; + DWORD usri1_flags; + LPWSTR usri1_script_path; } alias USER_INFO_1* PUSER_INFO_1, LPUSER_INFO_1; struct USER_INFO_2{ - LPWSTR usri2_name; - LPWSTR usri2_password; - DWORD usri2_password_age; - DWORD usri2_priv; - LPWSTR usri2_home_dir; - LPWSTR usri2_comment; - DWORD usri2_flags; - LPWSTR usri2_script_path; - DWORD usri2_auth_flags; - LPWSTR usri2_full_name; - LPWSTR usri2_usr_comment; - LPWSTR usri2_parms; - LPWSTR usri2_workstations; - DWORD usri2_last_logon; - DWORD usri2_last_logoff; - DWORD usri2_acct_expires; - DWORD usri2_max_storage; - DWORD usri2_units_per_week; - PBYTE usri2_logon_hours; - DWORD usri2_bad_pw_count; - DWORD usri2_num_logons; - LPWSTR usri2_logon_server; - DWORD usri2_country_code; - DWORD usri2_code_page; + LPWSTR usri2_name; + LPWSTR usri2_password; + DWORD usri2_password_age; + DWORD usri2_priv; + LPWSTR usri2_home_dir; + LPWSTR usri2_comment; + DWORD usri2_flags; + LPWSTR usri2_script_path; + DWORD usri2_auth_flags; + LPWSTR usri2_full_name; + LPWSTR usri2_usr_comment; + LPWSTR usri2_parms; + LPWSTR usri2_workstations; + DWORD usri2_last_logon; + DWORD usri2_last_logoff; + DWORD usri2_acct_expires; + DWORD usri2_max_storage; + DWORD usri2_units_per_week; + PBYTE usri2_logon_hours; + DWORD usri2_bad_pw_count; + DWORD usri2_num_logons; + LPWSTR usri2_logon_server; + DWORD usri2_country_code; + DWORD usri2_code_page; } alias USER_INFO_2* PUSER_INFO_2, LPUSER_INFO_2; struct USER_INFO_3{ - LPWSTR usri3_name; - LPWSTR usri3_password; - DWORD usri3_password_age; - DWORD usri3_priv; - LPWSTR usri3_home_dir; - LPWSTR usri3_comment; - DWORD usri3_flags; - LPWSTR usri3_script_path; - DWORD usri3_auth_flags; - LPWSTR usri3_full_name; - LPWSTR usri3_usr_comment; - LPWSTR usri3_parms; - LPWSTR usri3_workstations; - DWORD usri3_last_logon; - DWORD usri3_last_logoff; - DWORD usri3_acct_expires; - DWORD usri3_max_storage; - DWORD usri3_units_per_week; - PBYTE usri3_logon_hours; - DWORD usri3_bad_pw_count; - DWORD usri3_num_logons; - LPWSTR usri3_logon_server; - DWORD usri3_country_code; - DWORD usri3_code_page; - DWORD usri3_user_id; - DWORD usri3_primary_group_id; - LPWSTR usri3_profile; - LPWSTR usri3_home_dir_drive; - DWORD usri3_password_expired; + LPWSTR usri3_name; + LPWSTR usri3_password; + DWORD usri3_password_age; + DWORD usri3_priv; + LPWSTR usri3_home_dir; + LPWSTR usri3_comment; + DWORD usri3_flags; + LPWSTR usri3_script_path; + DWORD usri3_auth_flags; + LPWSTR usri3_full_name; + LPWSTR usri3_usr_comment; + LPWSTR usri3_parms; + LPWSTR usri3_workstations; + DWORD usri3_last_logon; + DWORD usri3_last_logoff; + DWORD usri3_acct_expires; + DWORD usri3_max_storage; + DWORD usri3_units_per_week; + PBYTE usri3_logon_hours; + DWORD usri3_bad_pw_count; + DWORD usri3_num_logons; + LPWSTR usri3_logon_server; + DWORD usri3_country_code; + DWORD usri3_code_page; + DWORD usri3_user_id; + DWORD usri3_primary_group_id; + LPWSTR usri3_profile; + LPWSTR usri3_home_dir_drive; + DWORD usri3_password_expired; } alias USER_INFO_3* PUSER_INFO_3, LPUSER_INFO_3; struct USER_INFO_10{ - LPWSTR usri10_name; - LPWSTR usri10_comment; - LPWSTR usri10_usr_comment; - LPWSTR usri10_full_name; + LPWSTR usri10_name; + LPWSTR usri10_comment; + LPWSTR usri10_usr_comment; + LPWSTR usri10_full_name; } alias USER_INFO_10* PUSER_INFO_10, LPUSER_INFO_10; struct USER_INFO_11{ - LPWSTR usri11_name; - LPWSTR usri11_comment; - LPWSTR usri11_usr_comment; - LPWSTR usri11_full_name; - DWORD usri11_priv; - DWORD usri11_auth_flags; - DWORD usri11_password_age; - LPWSTR usri11_home_dir; - LPWSTR usri11_parms; - DWORD usri11_last_logon; - DWORD usri11_last_logoff; - DWORD usri11_bad_pw_count; - DWORD usri11_num_logons; - LPWSTR usri11_logon_server; - DWORD usri11_country_code; - LPWSTR usri11_workstations; - DWORD usri11_max_storage; - DWORD usri11_units_per_week; - PBYTE usri11_logon_hours; - DWORD usri11_code_page; + LPWSTR usri11_name; + LPWSTR usri11_comment; + LPWSTR usri11_usr_comment; + LPWSTR usri11_full_name; + DWORD usri11_priv; + DWORD usri11_auth_flags; + DWORD usri11_password_age; + LPWSTR usri11_home_dir; + LPWSTR usri11_parms; + DWORD usri11_last_logon; + DWORD usri11_last_logoff; + DWORD usri11_bad_pw_count; + DWORD usri11_num_logons; + LPWSTR usri11_logon_server; + DWORD usri11_country_code; + LPWSTR usri11_workstations; + DWORD usri11_max_storage; + DWORD usri11_units_per_week; + PBYTE usri11_logon_hours; + DWORD usri11_code_page; } alias USER_INFO_11* PUSER_INFO_11, LPUSER_INFO_11; struct USER_INFO_20 { - LPWSTR usri20_name; - LPWSTR usri20_full_name; - LPWSTR usri20_comment; - DWORD usri20_flags; - DWORD usri20_user_id; + LPWSTR usri20_name; + LPWSTR usri20_full_name; + LPWSTR usri20_comment; + DWORD usri20_flags; + DWORD usri20_user_id; } alias USER_INFO_20* PUSER_INFO_20, LPUSER_INFO_20; struct USER_INFO_21 { - BYTE[ENCRYPTED_PWLEN] usri21_password; + BYTE[ENCRYPTED_PWLEN] usri21_password; } alias USER_INFO_21* PUSER_INFO_21, LPUSER_INFO_21; struct USER_INFO_22{ - LPWSTR usri22_name; - BYTE[ENCRYPTED_PWLEN] usri22_password; - DWORD usri22_password_age; - DWORD usri22_priv; - LPWSTR usri22_home_dir; - LPWSTR usri22_comment; - DWORD usri22_flags; - LPWSTR usri22_script_path; - DWORD usri22_auth_flags; - LPWSTR usri22_full_name; - LPWSTR usri22_usr_comment; - LPWSTR usri22_parms; - LPWSTR usri22_workstations; - DWORD usri22_last_logon; - DWORD usri22_last_logoff; - DWORD usri22_acct_expires; - DWORD usri22_max_storage; - DWORD usri22_units_per_week; - PBYTE usri22_logon_hours; - DWORD usri22_bad_pw_count; - DWORD usri22_num_logons; - LPWSTR usri22_logon_server; - DWORD usri22_country_code; - DWORD usri22_code_page; + LPWSTR usri22_name; + BYTE[ENCRYPTED_PWLEN] usri22_password; + DWORD usri22_password_age; + DWORD usri22_priv; + LPWSTR usri22_home_dir; + LPWSTR usri22_comment; + DWORD usri22_flags; + LPWSTR usri22_script_path; + DWORD usri22_auth_flags; + LPWSTR usri22_full_name; + LPWSTR usri22_usr_comment; + LPWSTR usri22_parms; + LPWSTR usri22_workstations; + DWORD usri22_last_logon; + DWORD usri22_last_logoff; + DWORD usri22_acct_expires; + DWORD usri22_max_storage; + DWORD usri22_units_per_week; + PBYTE usri22_logon_hours; + DWORD usri22_bad_pw_count; + DWORD usri22_num_logons; + LPWSTR usri22_logon_server; + DWORD usri22_country_code; + DWORD usri22_code_page; } alias USER_INFO_22* PUSER_INFO_22, LPUSER_INFO_22; struct USER_INFO_1003{ - LPWSTR usri1003_password; + LPWSTR usri1003_password; } alias USER_INFO_1003* PUSER_INFO_1003, LPUSER_INFO_1003; struct USER_INFO_1005{ - DWORD usri1005_priv; + DWORD usri1005_priv; } alias USER_INFO_1005* PUSER_INFO_1005, LPUSER_INFO_1005; struct USER_INFO_1006{ - LPWSTR usri1006_home_dir; + LPWSTR usri1006_home_dir; } alias USER_INFO_1006* PUSER_INFO_1006, LPUSER_INFO_1006; struct USER_INFO_1007{ - LPWSTR usri1007_comment; + LPWSTR usri1007_comment; } alias USER_INFO_1007* PUSER_INFO_1007, LPUSER_INFO_1007; struct USER_INFO_1008{ - DWORD usri1008_flags; + DWORD usri1008_flags; } alias USER_INFO_1008* PUSER_INFO_1008, LPUSER_INFO_1008; struct USER_INFO_1009{ - LPWSTR usri1009_script_path; + LPWSTR usri1009_script_path; } alias USER_INFO_1009* PUSER_INFO_1009, LPUSER_INFO_1009; struct USER_INFO_1010{ - DWORD usri1010_auth_flags; + DWORD usri1010_auth_flags; } alias USER_INFO_1010* PUSER_INFO_1010, LPUSER_INFO_1010; struct USER_INFO_1011{ - LPWSTR usri1011_full_name; + LPWSTR usri1011_full_name; } alias USER_INFO_1011* PUSER_INFO_1011, LPUSER_INFO_1011; struct USER_INFO_1012{ - LPWSTR usri1012_usr_comment; + LPWSTR usri1012_usr_comment; } alias USER_INFO_1012* PUSER_INFO_1012, LPUSER_INFO_1012; struct USER_INFO_1013{ - LPWSTR usri1013_parms; + LPWSTR usri1013_parms; } alias USER_INFO_1013* PUSER_INFO_1013, LPUSER_INFO_1013; struct USER_INFO_1014{ - LPWSTR usri1014_workstations; + LPWSTR usri1014_workstations; } alias USER_INFO_1014* PUSER_INFO_1014, LPUSER_INFO_1014; struct USER_INFO_1017{ - DWORD usri1017_acct_expires; + DWORD usri1017_acct_expires; } alias USER_INFO_1017* PUSER_INFO_1017, LPUSER_INFO_1017; struct USER_INFO_1018{ - DWORD usri1018_max_storage; + DWORD usri1018_max_storage; } alias USER_INFO_1018* PUSER_INFO_1018, LPUSER_INFO_1018; struct USER_INFO_1020{ - DWORD usri1020_units_per_week; - PBYTE usri1020_logon_hours; + DWORD usri1020_units_per_week; + PBYTE usri1020_logon_hours; } alias USER_INFO_1020* PUSER_INFO_1020, LPUSER_INFO_1020; struct USER_INFO_1023{ - LPWSTR usri1023_logon_server; + LPWSTR usri1023_logon_server; } alias USER_INFO_1023* PUSER_INFO_1023, LPUSER_INFO_1023; struct USER_INFO_1024{ - DWORD usri1024_country_code; + DWORD usri1024_country_code; } alias USER_INFO_1024* PUSER_INFO_1024, LPUSER_INFO_1024; struct USER_INFO_1025{ - DWORD usri1025_code_page; + DWORD usri1025_code_page; } alias USER_INFO_1025* PUSER_INFO_1025, LPUSER_INFO_1025; struct USER_INFO_1051{ - DWORD usri1051_primary_group_id; + DWORD usri1051_primary_group_id; } alias USER_INFO_1051* PUSER_INFO_1051, LPUSER_INFO_1051; struct USER_INFO_1052{ - LPWSTR usri1052_profile; + LPWSTR usri1052_profile; } alias USER_INFO_1052* PUSER_INFO_1052, LPUSER_INFO_1052; struct USER_INFO_1053{ - LPWSTR usri1053_home_dir_drive; + LPWSTR usri1053_home_dir_drive; } alias USER_INFO_1053* PUSER_INFO_1053, LPUSER_INFO_1053; struct USER_MODALS_INFO_0{ - DWORD usrmod0_min_passwd_len; - DWORD usrmod0_max_passwd_age; - DWORD usrmod0_min_passwd_age; - DWORD usrmod0_force_logoff; - DWORD usrmod0_password_hist_len; + DWORD usrmod0_min_passwd_len; + DWORD usrmod0_max_passwd_age; + DWORD usrmod0_min_passwd_age; + DWORD usrmod0_force_logoff; + DWORD usrmod0_password_hist_len; } alias USER_MODALS_INFO_0* PUSER_MODALS_INFO_0, LPUSER_MODALS_INFO_0; struct USER_MODALS_INFO_1{ - DWORD usrmod1_role; - LPWSTR usrmod1_primary; + DWORD usrmod1_role; + LPWSTR usrmod1_primary; } alias USER_MODALS_INFO_1* PUSER_MODALS_INFO_1, LPUSER_MODALS_INFO_1; struct USER_MODALS_INFO_2{ - LPWSTR usrmod2_domain_name; - PSID usrmod2_domain_id; + LPWSTR usrmod2_domain_name; + PSID usrmod2_domain_id; } alias USER_MODALS_INFO_2* PUSER_MODALS_INFO_2, LPUSER_MODALS_INFO_2; struct USER_MODALS_INFO_3{ - DWORD usrmod3_lockout_duration; - DWORD usrmod3_lockout_observation_window; - DWORD usrmod3_lockout_threshold; + DWORD usrmod3_lockout_duration; + DWORD usrmod3_lockout_observation_window; + DWORD usrmod3_lockout_threshold; } alias USER_MODALS_INFO_3* PUSER_MODALS_INFO_3, LPUSER_MODALS_INFO_3; struct USER_MODALS_INFO_1001{ - DWORD usrmod1001_min_passwd_len; + DWORD usrmod1001_min_passwd_len; } alias USER_MODALS_INFO_1001* PUSER_MODALS_INFO_1001, LPUSER_MODALS_INFO_1001; struct USER_MODALS_INFO_1002{ - DWORD usrmod1002_max_passwd_age; + DWORD usrmod1002_max_passwd_age; } alias USER_MODALS_INFO_1002* PUSER_MODALS_INFO_1002, LPUSER_MODALS_INFO_1002; struct USER_MODALS_INFO_1003{ - DWORD usrmod1003_min_passwd_age; + DWORD usrmod1003_min_passwd_age; } alias USER_MODALS_INFO_1003* PUSER_MODALS_INFO_1003, LPUSER_MODALS_INFO_1003; struct USER_MODALS_INFO_1004{ - DWORD usrmod1004_force_logoff; + DWORD usrmod1004_force_logoff; } alias USER_MODALS_INFO_1004* PUSER_MODALS_INFO_1004, LPUSER_MODALS_INFO_1004; struct USER_MODALS_INFO_1005{ - DWORD usrmod1005_password_hist_len; + DWORD usrmod1005_password_hist_len; } alias USER_MODALS_INFO_1005* PUSER_MODALS_INFO_1005, LPUSER_MODALS_INFO_1005; struct USER_MODALS_INFO_1006{ - DWORD usrmod1006_role; + DWORD usrmod1006_role; } alias USER_MODALS_INFO_1006* PUSER_MODALS_INFO_1006, LPUSER_MODALS_INFO_1006; struct USER_MODALS_INFO_1007{ - LPWSTR usrmod1007_primary; + LPWSTR usrmod1007_primary; } alias USER_MODALS_INFO_1007* PUSER_MODALS_INFO_1007, LPUSER_MODALS_INFO_1007; struct GROUP_INFO_0{ - LPWSTR grpi0_name; + LPWSTR grpi0_name; } alias GROUP_INFO_0* PGROUP_INFO_0, LPGROUP_INFO_0; struct GROUP_INFO_1{ - LPWSTR grpi1_name; - LPWSTR grpi1_comment; + LPWSTR grpi1_name; + LPWSTR grpi1_comment; } alias GROUP_INFO_1* PGROUP_INFO_1, LPGROUP_INFO_1; struct GROUP_INFO_2{ - LPWSTR grpi2_name; - LPWSTR grpi2_comment; - DWORD grpi2_group_id; - DWORD grpi2_attributes; + LPWSTR grpi2_name; + LPWSTR grpi2_comment; + DWORD grpi2_group_id; + DWORD grpi2_attributes; } alias GROUP_INFO_2* PGROUP_INFO_2; struct GROUP_INFO_1002{ - LPWSTR grpi1002_comment; + LPWSTR grpi1002_comment; } alias GROUP_INFO_1002* PGROUP_INFO_1002, LPGROUP_INFO_1002; struct GROUP_INFO_1005{ - DWORD grpi1005_attributes; + DWORD grpi1005_attributes; } alias GROUP_INFO_1005* PGROUP_INFO_1005, LPGROUP_INFO_1005; struct GROUP_USERS_INFO_0{ - LPWSTR grui0_name; + LPWSTR grui0_name; } alias GROUP_USERS_INFO_0* PGROUP_USERS_INFO_0, LPGROUP_USERS_INFO_0; struct GROUP_USERS_INFO_1{ - LPWSTR grui1_name; - DWORD grui1_attributes; + LPWSTR grui1_name; + DWORD grui1_attributes; } alias GROUP_USERS_INFO_1* PGROUP_USERS_INFO_1, LPGROUP_USERS_INFO_1; struct LOCALGROUP_INFO_0{ - LPWSTR lgrpi0_name; + LPWSTR lgrpi0_name; } alias LOCALGROUP_INFO_0* PLOCALGROUP_INFO_0, LPLOCALGROUP_INFO_0; struct LOCALGROUP_INFO_1{ - LPWSTR lgrpi1_name; - LPWSTR lgrpi1_comment; + LPWSTR lgrpi1_name; + LPWSTR lgrpi1_comment; } alias LOCALGROUP_INFO_1* PLOCALGROUP_INFO_1, LPLOCALGROUP_INFO_1; struct LOCALGROUP_INFO_1002{ - LPWSTR lgrpi1002_comment; + LPWSTR lgrpi1002_comment; } alias LOCALGROUP_INFO_1002* PLOCALGROUP_INFO_1002, LPLOCALGROUP_INFO_1002; struct LOCALGROUP_MEMBERS_INFO_0{ - PSID lgrmi0_sid; + PSID lgrmi0_sid; } alias LOCALGROUP_MEMBERS_INFO_0* PLOCALGROUP_MEMBERS_INFO_0, LPLOCALGROUP_MEMBERS_INFO_0; struct LOCALGROUP_MEMBERS_INFO_1{ - PSID lgrmi1_sid; - SID_NAME_USE lgrmi1_sidusage; - LPWSTR lgrmi1_name; + PSID lgrmi1_sid; + SID_NAME_USE lgrmi1_sidusage; + LPWSTR lgrmi1_name; } alias LOCALGROUP_MEMBERS_INFO_1* PLOCALGROUP_MEMBERS_INFO_1, LPLOCALGROUP_MEMBERS_INFO_1; struct LOCALGROUP_MEMBERS_INFO_2{ - PSID lgrmi2_sid; - SID_NAME_USE lgrmi2_sidusage; - LPWSTR lgrmi2_domainandname; + PSID lgrmi2_sid; + SID_NAME_USE lgrmi2_sidusage; + LPWSTR lgrmi2_domainandname; } alias LOCALGROUP_MEMBERS_INFO_2* PLOCALGROUP_MEMBERS_INFO_2, LPLOCALGROUP_MEMBERS_INFO_2; struct LOCALGROUP_MEMBERS_INFO_3{ - LPWSTR lgrmi3_domainandname; + LPWSTR lgrmi3_domainandname; } alias LOCALGROUP_MEMBERS_INFO_3* PLOCALGROUP_MEMBERS_INFO_3, LPLOCALGROUP_MEMBERS_INFO_3; struct LOCALGROUP_USERS_INFO_0{ - LPWSTR lgrui0_name; + LPWSTR lgrui0_name; } alias LOCALGROUP_USERS_INFO_0* PLOCALGROUP_USERS_INFO_0, LPLOCALGROUP_USERS_INFO_0; struct NET_DISPLAY_USER{ - LPWSTR usri1_name; - LPWSTR usri1_comment; - DWORD usri1_flags; - LPWSTR usri1_full_name; - DWORD usri1_user_id; - DWORD usri1_next_index; + LPWSTR usri1_name; + LPWSTR usri1_comment; + DWORD usri1_flags; + LPWSTR usri1_full_name; + DWORD usri1_user_id; + DWORD usri1_next_index; } alias NET_DISPLAY_USER* PNET_DISPLAY_USER; struct NET_DISPLAY_MACHINE{ - LPWSTR usri2_name; - LPWSTR usri2_comment; - DWORD usri2_flags; - DWORD usri2_user_id; - DWORD usri2_next_index; + LPWSTR usri2_name; + LPWSTR usri2_comment; + DWORD usri2_flags; + DWORD usri2_user_id; + DWORD usri2_next_index; } alias NET_DISPLAY_MACHINE* PNET_DISPLAY_MACHINE; struct NET_DISPLAY_GROUP{ - LPWSTR grpi3_name; - LPWSTR grpi3_comment; - DWORD grpi3_group_id; - DWORD grpi3_attributes; - DWORD grpi3_next_index; + LPWSTR grpi3_name; + LPWSTR grpi3_comment; + DWORD grpi3_group_id; + DWORD grpi3_attributes; + DWORD grpi3_next_index; } alias NET_DISPLAY_GROUP* PNET_DISPLAY_GROUP; struct ACCESS_INFO_0{ - LPTSTR acc0_resource_name; + LPTSTR acc0_resource_name; } alias ACCESS_INFO_0* PACCESS_INFO_0, LPACCESS_INFO_0; struct ACCESS_INFO_1{ - LPTSTR acc1_resource_name; - DWORD acc1_attr; - DWORD acc1_count; + LPTSTR acc1_resource_name; + DWORD acc1_attr; + DWORD acc1_count; } alias ACCESS_INFO_1* PACCESS_INFO_1, LPACCESS_INFO_1; struct ACCESS_INFO_1002{ - DWORD acc1002_attr; + DWORD acc1002_attr; } alias ACCESS_INFO_1002* PACCESS_INFO_1002, LPACCESS_INFO_1002; struct ACCESS_LIST{ - LPTSTR acl_ugname; - DWORD acl_access; + LPTSTR acl_ugname; + DWORD acl_access; } alias ACCESS_LIST* PACCESS_LIST, LPACCESS_LIST; struct NETLOGON_INFO_1{ - DWORD netlog1_flags; - NET_API_STATUS netlog1_pdc_connection_status; + DWORD netlog1_flags; + NET_API_STATUS netlog1_pdc_connection_status; } alias NETLOGON_INFO_1* PNETLOGON_INFO_1; struct NETLOGON_INFO_2{ - DWORD netlog2_flags; - NET_API_STATUS netlog2_pdc_connection_status; - LPWSTR netlog2_trusted_dc_name; - NET_API_STATUS netlog2_tc_connection_status; + DWORD netlog2_flags; + NET_API_STATUS netlog2_pdc_connection_status; + LPWSTR netlog2_trusted_dc_name; + NET_API_STATUS netlog2_tc_connection_status; } alias NETLOGON_INFO_2* PNETLOGON_INFO_2; struct NETLOGON_INFO_3{ - DWORD netlog3_flags; - DWORD netlog3_logon_attempts; - DWORD netlog3_reserved1; - DWORD netlog3_reserved2; - DWORD netlog3_reserved3; - DWORD netlog3_reserved4; - DWORD netlog3_reserved5; + DWORD netlog3_flags; + DWORD netlog3_logon_attempts; + DWORD netlog3_reserved1; + DWORD netlog3_reserved2; + DWORD netlog3_reserved3; + DWORD netlog3_reserved4; + DWORD netlog3_reserved5; } alias NETLOGON_INFO_3* PNETLOGON_INFO_3; extern (Windows) { deprecated { - /* These are obsolete */ - NET_API_STATUS NetAccessAdd(LPCWSTR,DWORD,PBYTE,PDWORD); - NET_API_STATUS NetAccessEnum(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); - NET_API_STATUS NetAccessGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); - NET_API_STATUS NetAccessSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); - NET_API_STATUS NetAccessDel(LPCWSTR,LPCWSTR); - NET_API_STATUS NetAccessGetUserPerms(LPCWSTR,LPCWSTR,LPCWSTR,PDWORD); + /* These are obsolete */ + NET_API_STATUS NetAccessAdd(LPCWSTR,DWORD,PBYTE,PDWORD); + NET_API_STATUS NetAccessEnum(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); + NET_API_STATUS NetAccessGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); + NET_API_STATUS NetAccessSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); + NET_API_STATUS NetAccessDel(LPCWSTR,LPCWSTR); + NET_API_STATUS NetAccessGetUserPerms(LPCWSTR,LPCWSTR,LPCWSTR,PDWORD); } NET_API_STATUS NetUserAdd(LPCWSTR,DWORD,PBYTE,PDWORD); NET_API_STATUS NetUserEnum(LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); diff --git a/src/core/sys/windows/lmalert.d b/src/core/sys/windows/lmalert.d index 09563a4462..de23bdb57b 100644 --- a/src/core/sys/windows/lmalert.d +++ b/src/core/sys/windows/lmalert.d @@ -12,12 +12,12 @@ pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; const TCHAR[] - ALERTER_MAILSLOT = `\\.\MAILSLOT\Alerter`, - ALERT_PRINT_EVENT = "PRINTING", - ALERT_MESSAGE_EVENT = "MESSAGE", - ALERT_ERRORLOG_EVENT = "ERRORLOG", - ALERT_ADMIN_EVENT = "ADMIN", - ALERT_USER_EVENT = "USER"; + ALERTER_MAILSLOT = `\\.\MAILSLOT\Alerter`, + ALERT_PRINT_EVENT = "PRINTING", + ALERT_MESSAGE_EVENT = "MESSAGE", + ALERT_ERRORLOG_EVENT = "ERRORLOG", + ALERT_ADMIN_EVENT = "ADMIN", + ALERT_USER_EVENT = "USER"; //MACRO #define ALERT_OTHER_INFO(x) ((PBYTE)(x)+sizeof(STD_ALERT)) //MACRO #define ALERT_VAR_DATA(p) ((PBYTE)(p)+sizeof(*p)) @@ -38,35 +38,35 @@ const PRJOB_QS_SPOOLING = 2; const PRJOB_QS_PRINTING = 3; struct ADMIN_OTHER_INFO{ - DWORD alrtad_errcode; - DWORD alrtad_numstrings; + DWORD alrtad_errcode; + DWORD alrtad_numstrings; } alias ADMIN_OTHER_INFO* PADMIN_OTHER_INFO, LPADMIN_OTHER_INFO; struct STD_ALERT{ - DWORD alrt_timestamp; - TCHAR[EVLEN+1] alrt_eventname; - TCHAR[SNLEN+1] alrt_servicename; + DWORD alrt_timestamp; + TCHAR[EVLEN+1] alrt_eventname; + TCHAR[SNLEN+1] alrt_servicename; } alias STD_ALERT* PSTD_ALERT, LPSTD_ALERT; struct ERRLOG_OTHER_INFO{ - DWORD alrter_errcode; - DWORD alrter_offset; + DWORD alrter_errcode; + DWORD alrter_offset; } alias ERRLOG_OTHER_INFO* PERRLOG_OTHER_INFO, LPERRLOG_OTHER_INFO; struct PRINT_OTHER_INFO{ - DWORD alrtpr_jobid; - DWORD alrtpr_status; - DWORD alrtpr_submitted; - DWORD alrtpr_size; + DWORD alrtpr_jobid; + DWORD alrtpr_status; + DWORD alrtpr_submitted; + DWORD alrtpr_size; } alias PRINT_OTHER_INFO* PPRINT_OTHER_INFO, LPPRINT_OTHER_INFO; struct USER_OTHER_INFO{ - DWORD alrtus_errcode; - DWORD alrtus_numstrings; + DWORD alrtus_errcode; + DWORD alrtus_numstrings; } alias USER_OTHER_INFO* PUSER_OTHER_INFO, LPUSER_OTHER_INFO; diff --git a/src/core/sys/windows/lmapibuf.d b/src/core/sys/windows/lmapibuf.d index 722d8fd4ee..bd6b8663ad 100644 --- a/src/core/sys/windows/lmapibuf.d +++ b/src/core/sys/windows/lmapibuf.d @@ -12,9 +12,9 @@ pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; extern (Windows) { - NET_API_STATUS NetApiBufferAllocate(DWORD, PVOID*); - NET_API_STATUS NetApiBufferFree(PVOID); - NET_API_STATUS NetApiBufferReallocate(PVOID, DWORD, PVOID*); - NET_API_STATUS NetApiBufferSize(PVOID, PDWORD); - NET_API_STATUS NetapipBufferAllocate(DWORD, PVOID*); + NET_API_STATUS NetApiBufferAllocate(DWORD, PVOID*); + NET_API_STATUS NetApiBufferFree(PVOID); + NET_API_STATUS NetApiBufferReallocate(PVOID, DWORD, PVOID*); + NET_API_STATUS NetApiBufferSize(PVOID, PDWORD); + NET_API_STATUS NetapipBufferAllocate(DWORD, PVOID*); } diff --git a/src/core/sys/windows/lmat.d b/src/core/sys/windows/lmat.d index 927be535e4..df1daab58d 100644 --- a/src/core/sys/windows/lmat.d +++ b/src/core/sys/windows/lmat.d @@ -22,28 +22,28 @@ const JOB_OUTPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_EXEC_ERROR | JOB_RUNS_TODAY | JOB_NONINTERACTIVE; struct AT_ENUM { - DWORD JobId; - DWORD JobTime; - DWORD DaysOfMonth; - UCHAR DaysOfWeek; - UCHAR Flags; - LPWSTR Command; + DWORD JobId; + DWORD JobTime; + DWORD DaysOfMonth; + UCHAR DaysOfWeek; + UCHAR Flags; + LPWSTR Command; } alias AT_ENUM* PAT_ENUM, LPAT_ENUM; struct AT_INFO { - DWORD JobTime; - DWORD DaysOfMonth; - UCHAR DaysOfWeek; - UCHAR Flags; - LPWSTR Command; + DWORD JobTime; + DWORD DaysOfMonth; + UCHAR DaysOfWeek; + UCHAR Flags; + LPWSTR Command; } alias AT_INFO* PAT_INFO, LPAT_INFO; extern (Windows) { - NET_API_STATUS NetScheduleJobAdd(LPWSTR, PBYTE, LPDWORD); - NET_API_STATUS NetScheduleJobDel(LPWSTR, DWORD, DWORD); - NET_API_STATUS NetScheduleJobEnum(LPWSTR, PBYTE*, DWORD, PDWORD, PDWORD, - PDWORD); - NET_API_STATUS NetScheduleJobGetInfo(LPWSTR, DWORD, PBYTE*); + NET_API_STATUS NetScheduleJobAdd(LPWSTR, PBYTE, LPDWORD); + NET_API_STATUS NetScheduleJobDel(LPWSTR, DWORD, DWORD); + NET_API_STATUS NetScheduleJobEnum(LPWSTR, PBYTE*, DWORD, PDWORD, PDWORD, + PDWORD); + NET_API_STATUS NetScheduleJobGetInfo(LPWSTR, DWORD, PBYTE*); } diff --git a/src/core/sys/windows/lmaudit.d b/src/core/sys/windows/lmaudit.d index d30c809a6f..f1c69934e1 100644 --- a/src/core/sys/windows/lmaudit.d +++ b/src/core/sys/windows/lmaudit.d @@ -89,177 +89,177 @@ const AA_A_ACL=32768; const AA_A_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; struct AUDIT_ENTRY{ - DWORD ae_len; - DWORD ae_reserved; - DWORD ae_time; - DWORD ae_type; - DWORD ae_data_offset; - DWORD ae_data_size; + DWORD ae_len; + DWORD ae_reserved; + DWORD ae_time; + DWORD ae_type; + DWORD ae_data_offset; + DWORD ae_data_size; } alias AUDIT_ENTRY* PAUDIT_ENTRY, LPAUDIT_ENTRY; struct HLOG{ - DWORD time; - DWORD last_flags; - DWORD offset; - DWORD rec_offset; + DWORD time; + DWORD last_flags; + DWORD offset; + DWORD rec_offset; } alias HLOG* PHLOG, LPHLOG; struct AE_SRVSTATUS{ - DWORD ae_sv_status; + DWORD ae_sv_status; } alias AE_SRVSTATUS* PAE_SRVSTATUS, LPAE_SRVSTATUS; struct AE_SESSLOGON{ - DWORD ae_so_compname; - DWORD ae_so_username; - DWORD ae_so_privilege; + DWORD ae_so_compname; + DWORD ae_so_username; + DWORD ae_so_privilege; } alias AE_SESSLOGON* PAE_SESSLOGON, LPAE_SESSLOGON; struct AE_SESSLOGOFF{ - DWORD ae_sf_compname; - DWORD ae_sf_username; - DWORD ae_sf_reason; + DWORD ae_sf_compname; + DWORD ae_sf_username; + DWORD ae_sf_reason; } alias AE_SESSLOGOFF* PAE_SESSLOGOFF, LPAE_SESSLOGOFF; struct AE_SESSPWERR{ - DWORD ae_sp_compname; - DWORD ae_sp_username; + DWORD ae_sp_compname; + DWORD ae_sp_username; } alias AE_SESSPWERR* PAE_SESSPWERR, LPAE_SESSPWERR; struct AE_CONNSTART{ - DWORD ae_ct_compname; - DWORD ae_ct_username; - DWORD ae_ct_netname; - DWORD ae_ct_connid; + DWORD ae_ct_compname; + DWORD ae_ct_username; + DWORD ae_ct_netname; + DWORD ae_ct_connid; } alias AE_CONNSTART* PAE_CONNSTART, LPAE_CONNSTART; struct AE_CONNSTOP{ - DWORD ae_cp_compname; - DWORD ae_cp_username; - DWORD ae_cp_netname; - DWORD ae_cp_connid; - DWORD ae_cp_reason; + DWORD ae_cp_compname; + DWORD ae_cp_username; + DWORD ae_cp_netname; + DWORD ae_cp_connid; + DWORD ae_cp_reason; } alias AE_CONNSTOP* PAE_CONNSTOP, LPAE_CONNSTOP; struct AE_CONNREJ{ - DWORD ae_cr_compname; - DWORD ae_cr_username; - DWORD ae_cr_netname; - DWORD ae_cr_reason; + DWORD ae_cr_compname; + DWORD ae_cr_username; + DWORD ae_cr_netname; + DWORD ae_cr_reason; } alias AE_CONNREJ* PAE_CONNREJ, LPAE_CONNREJ; struct AE_RESACCESS{ - DWORD ae_ra_compname; - DWORD ae_ra_username; - DWORD ae_ra_resname; - DWORD ae_ra_operation; - DWORD ae_ra_returncode; - DWORD ae_ra_restype; - DWORD ae_ra_fileid; + DWORD ae_ra_compname; + DWORD ae_ra_username; + DWORD ae_ra_resname; + DWORD ae_ra_operation; + DWORD ae_ra_returncode; + DWORD ae_ra_restype; + DWORD ae_ra_fileid; } alias AE_RESACCESS* PAE_RESACCESS, LPAE_RESACCESS; struct AE_RESACCESSREJ{ - DWORD ae_rr_compname; - DWORD ae_rr_username; - DWORD ae_rr_resname; - DWORD ae_rr_operation; + DWORD ae_rr_compname; + DWORD ae_rr_username; + DWORD ae_rr_resname; + DWORD ae_rr_operation; } alias AE_RESACCESSREJ* PAE_RESACCESSREJ, LPAE_RESACCESSREJ; struct AE_CLOSEFILE{ - DWORD ae_cf_compname; - DWORD ae_cf_username; - DWORD ae_cf_resname; - DWORD ae_cf_fileid; - DWORD ae_cf_duration; - DWORD ae_cf_reason; + DWORD ae_cf_compname; + DWORD ae_cf_username; + DWORD ae_cf_resname; + DWORD ae_cf_fileid; + DWORD ae_cf_duration; + DWORD ae_cf_reason; } alias AE_CLOSEFILE* PAE_CLOSEFILE, LPAE_CLOSEFILE; struct AE_SERVICESTAT{ - DWORD ae_ss_compname; - DWORD ae_ss_username; - DWORD ae_ss_svcname; - DWORD ae_ss_status; - DWORD ae_ss_code; - DWORD ae_ss_text; - DWORD ae_ss_returnval; + DWORD ae_ss_compname; + DWORD ae_ss_username; + DWORD ae_ss_svcname; + DWORD ae_ss_status; + DWORD ae_ss_code; + DWORD ae_ss_text; + DWORD ae_ss_returnval; } alias AE_SERVICESTAT* PAE_SERVICESTAT, LPAE_SERVICESTAT; struct AE_ACLMOD{ - DWORD ae_am_compname; - DWORD ae_am_username; - DWORD ae_am_resname; - DWORD ae_am_action; - DWORD ae_am_datalen; + DWORD ae_am_compname; + DWORD ae_am_username; + DWORD ae_am_resname; + DWORD ae_am_action; + DWORD ae_am_datalen; } alias AE_ACLMOD* PAE_ACLMOD, LPAE_ACLMOD; struct AE_UASMOD{ - DWORD ae_um_compname; - DWORD ae_um_username; - DWORD ae_um_resname; - DWORD ae_um_rectype; - DWORD ae_um_action; - DWORD ae_um_datalen; + DWORD ae_um_compname; + DWORD ae_um_username; + DWORD ae_um_resname; + DWORD ae_um_rectype; + DWORD ae_um_action; + DWORD ae_um_datalen; } alias AE_UASMOD* PAE_UASMOD, LPAE_UASMOD; struct AE_NETLOGON{ - DWORD ae_no_compname; - DWORD ae_no_username; - DWORD ae_no_privilege; - DWORD ae_no_authflags; + DWORD ae_no_compname; + DWORD ae_no_username; + DWORD ae_no_privilege; + DWORD ae_no_authflags; } alias AE_NETLOGON* PAE_NETLOGON, LPAE_NETLOGON; struct AE_NETLOGOFF{ - DWORD ae_nf_compname; - DWORD ae_nf_username; - DWORD ae_nf_reserved1; - DWORD ae_nf_reserved2; + DWORD ae_nf_compname; + DWORD ae_nf_username; + DWORD ae_nf_reserved1; + DWORD ae_nf_reserved2; } alias AE_NETLOGOFF* PAE_NETLOGOFF, LPAE_NETLOGOFF; struct AE_ACCLIM{ - DWORD ae_al_compname; - DWORD ae_al_username; - DWORD ae_al_resname; - DWORD ae_al_limit; + DWORD ae_al_compname; + DWORD ae_al_username; + DWORD ae_al_resname; + DWORD ae_al_limit; } alias AE_ACCLIM* PAE_ACCLIM, LPAE_ACCLIM; struct AE_LOCKOUT{ - DWORD ae_lk_compname; - DWORD ae_lk_username; - DWORD ae_lk_action; - DWORD ae_lk_bad_pw_count; + DWORD ae_lk_compname; + DWORD ae_lk_username; + DWORD ae_lk_action; + DWORD ae_lk_bad_pw_count; } alias AE_LOCKOUT* PAE_LOCKOUT, LPAE_LOCKOUT; struct AE_GENERIC{ - DWORD ae_ge_msgfile; - DWORD ae_ge_msgnum; - DWORD ae_ge_params; - DWORD ae_ge_param1; - DWORD ae_ge_param2; - DWORD ae_ge_param3; - DWORD ae_ge_param4; - DWORD ae_ge_param5; - DWORD ae_ge_param6; - DWORD ae_ge_param7; - DWORD ae_ge_param8; - DWORD ae_ge_param9; + DWORD ae_ge_msgfile; + DWORD ae_ge_msgnum; + DWORD ae_ge_params; + DWORD ae_ge_param1; + DWORD ae_ge_param2; + DWORD ae_ge_param3; + DWORD ae_ge_param4; + DWORD ae_ge_param5; + DWORD ae_ge_param6; + DWORD ae_ge_param7; + DWORD ae_ge_param8; + DWORD ae_ge_param9; } alias AE_GENERIC* PAE_GENERIC, LPAE_GENERIC; diff --git a/src/core/sys/windows/lmbrowsr.d b/src/core/sys/windows/lmbrowsr.d index 0d358cee46..25f31e57ac 100644 --- a/src/core/sys/windows/lmbrowsr.d +++ b/src/core/sys/windows/lmbrowsr.d @@ -14,71 +14,71 @@ const BROWSER_ROLE_PDC = 1; const BROWSER_ROLE_BDC = 2; struct BROWSER_STATISTICS { - LARGE_INTEGER StatisticsStartTime; - LARGE_INTEGER NumberOfServerAnnouncements; - LARGE_INTEGER NumberOfDomainAnnouncements; - ULONG NumberOfElectionPackets; - ULONG NumberOfMailslotWrites; - ULONG NumberOfGetBrowserServerListRequests; - ULONG NumberOfServerEnumerations; - ULONG NumberOfDomainEnumerations; - ULONG NumberOfOtherEnumerations; - ULONG NumberOfMissedServerAnnouncements; - ULONG NumberOfMissedMailslotDatagrams; - ULONG NumberOfMissedGetBrowserServerListRequests; - ULONG NumberOfFailedServerAnnounceAllocations; - ULONG NumberOfFailedMailslotAllocations; - ULONG NumberOfFailedMailslotReceives; - ULONG NumberOfFailedMailslotWrites; - ULONG NumberOfFailedMailslotOpens; - ULONG NumberOfDuplicateMasterAnnouncements; - LARGE_INTEGER NumberOfIllegalDatagrams; + LARGE_INTEGER StatisticsStartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + ULONG NumberOfServerEnumerations; + ULONG NumberOfDomainEnumerations; + ULONG NumberOfOtherEnumerations; + ULONG NumberOfMissedServerAnnouncements; + ULONG NumberOfMissedMailslotDatagrams; + ULONG NumberOfMissedGetBrowserServerListRequests; + ULONG NumberOfFailedServerAnnounceAllocations; + ULONG NumberOfFailedMailslotAllocations; + ULONG NumberOfFailedMailslotReceives; + ULONG NumberOfFailedMailslotWrites; + ULONG NumberOfFailedMailslotOpens; + ULONG NumberOfDuplicateMasterAnnouncements; + LARGE_INTEGER NumberOfIllegalDatagrams; } alias BROWSER_STATISTICS* PBROWSER_STATISTICS, LPBROWSER_STATISTICS; struct BROWSER_STATISTICS_100 { - LARGE_INTEGER StartTime; - LARGE_INTEGER NumberOfServerAnnouncements; - LARGE_INTEGER NumberOfDomainAnnouncements; - ULONG NumberOfElectionPackets; - ULONG NumberOfMailslotWrites; - ULONG NumberOfGetBrowserServerListRequests; - LARGE_INTEGER NumberOfIllegalDatagrams; + LARGE_INTEGER StartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + LARGE_INTEGER NumberOfIllegalDatagrams; } alias BROWSER_STATISTICS_100* PBROWSER_STATISTICS_100; struct BROWSER_STATISTICS_101 { - LARGE_INTEGER StartTime; - LARGE_INTEGER NumberOfServerAnnouncements; - LARGE_INTEGER NumberOfDomainAnnouncements; - ULONG NumberOfElectionPackets; - ULONG NumberOfMailslotWrites; - ULONG NumberOfGetBrowserServerListRequests; - LARGE_INTEGER NumberOfIllegalDatagrams; - ULONG NumberOfMissedServerAnnouncements; - ULONG NumberOfMissedMailslotDatagrams; - ULONG NumberOfMissedGetBrowserServerListRequests; - ULONG NumberOfFailedServerAnnounceAllocations; - ULONG NumberOfFailedMailslotAllocations; - ULONG NumberOfFailedMailslotReceives; - ULONG NumberOfFailedMailslotWrites; - ULONG NumberOfFailedMailslotOpens; - ULONG NumberOfDuplicateMasterAnnouncements; + LARGE_INTEGER StartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + LARGE_INTEGER NumberOfIllegalDatagrams; + ULONG NumberOfMissedServerAnnouncements; + ULONG NumberOfMissedMailslotDatagrams; + ULONG NumberOfMissedGetBrowserServerListRequests; + ULONG NumberOfFailedServerAnnounceAllocations; + ULONG NumberOfFailedMailslotAllocations; + ULONG NumberOfFailedMailslotReceives; + ULONG NumberOfFailedMailslotWrites; + ULONG NumberOfFailedMailslotOpens; + ULONG NumberOfDuplicateMasterAnnouncements; } alias BROWSER_STATISTICS_101* PBROWSER_STATISTICS_101; extern (Windows) { - NET_API_STATUS I_BrowserServerEnum(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, - PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, PDWORD); - NET_API_STATUS I_BrowserServerEnumEx(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, - PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR); - NET_API_STATUS I_BrowserQueryEmulatedDomains(LPWSTR, PBYTE*, PDWORD); - NET_API_STATUS I_BrowserQueryOtherDomains(LPCWSTR, PBYTE*, PDWORD, PDWORD); - NET_API_STATUS I_BrowserResetNetlogonState(LPCWSTR); - NET_API_STATUS I_BrowserSetNetlogonState(LPWSTR, LPWSTR, LPWSTR, DWORD); - NET_API_STATUS I_BrowserQueryStatistics(LPCWSTR, LPBROWSER_STATISTICS*); - NET_API_STATUS I_BrowserResetStatistics(LPCWSTR); - WORD I_BrowserServerEnumForXactsrv(LPCWSTR, LPCWSTR, ULONG, USHORT, PVOID, - WORD, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR, PWORD); - NET_API_STATUS I_BrowserDebugTrace(PWCHAR, PCHAR); + NET_API_STATUS I_BrowserServerEnum(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, + PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, PDWORD); + NET_API_STATUS I_BrowserServerEnumEx(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, + PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR); + NET_API_STATUS I_BrowserQueryEmulatedDomains(LPWSTR, PBYTE*, PDWORD); + NET_API_STATUS I_BrowserQueryOtherDomains(LPCWSTR, PBYTE*, PDWORD, PDWORD); + NET_API_STATUS I_BrowserResetNetlogonState(LPCWSTR); + NET_API_STATUS I_BrowserSetNetlogonState(LPWSTR, LPWSTR, LPWSTR, DWORD); + NET_API_STATUS I_BrowserQueryStatistics(LPCWSTR, LPBROWSER_STATISTICS*); + NET_API_STATUS I_BrowserResetStatistics(LPCWSTR); + WORD I_BrowserServerEnumForXactsrv(LPCWSTR, LPCWSTR, ULONG, USHORT, PVOID, + WORD, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR, PWORD); + NET_API_STATUS I_BrowserDebugTrace(PWCHAR, PCHAR); } diff --git a/src/core/sys/windows/lmchdev.d b/src/core/sys/windows/lmchdev.d index cfe23d0d38..ad6044975a 100644 --- a/src/core/sys/windows/lmchdev.d +++ b/src/core/sys/windows/lmchdev.d @@ -38,10 +38,10 @@ struct CHARDEV_INFO_0 { alias CHARDEV_INFO_0* PCHARDEV_INFO_0, LPCHARDEV_INFO_0; struct CHARDEV_INFO_1{ - LPWSTR ch1_dev; - DWORD ch1_status; - LPWSTR ch1_username; - DWORD ch1_time; + LPWSTR ch1_dev; + DWORD ch1_status; + LPWSTR ch1_username; + DWORD ch1_time; } alias CHARDEV_INFO_1* PCHARDEV_INFO_1, LPCHARDEV_INFO_1; @@ -51,39 +51,39 @@ struct CHARDEVQ_INFO_0 { alias CHARDEVQ_INFO_0* PCHARDEVQ_INFO_0, LPCHARDEVQ_INFO_0; struct CHARDEVQ_INFO_1{ - LPWSTR cq1_dev; - DWORD cq1_priority; - LPWSTR cq1_devs; - DWORD cq1_numusers; - DWORD cq1_numahead; + LPWSTR cq1_dev; + DWORD cq1_priority; + LPWSTR cq1_devs; + DWORD cq1_numusers; + DWORD cq1_numahead; } alias CHARDEVQ_INFO_1* PCHARDEVQ_INFO_1, LPCHARDEVQ_INFO_1; struct CHARDEVQ_INFO_1002 { - DWORD cq1002_priority; + DWORD cq1002_priority; } alias CHARDEVQ_INFO_1002* PCHARDEVQ_INFO_1002, LPCHARDEVQ_INFO_1002; struct CHARDEVQ_INFO_1003 { - LPWSTR cq1003_devs; + LPWSTR cq1003_devs; } alias CHARDEVQ_INFO_1003* PCHARDEVQ_INFO_1003, LPCHARDEVQ_INFO_1003; struct HANDLE_INFO_1{ - DWORD hdli1_chartime; - DWORD hdli1_charcount; + DWORD hdli1_chartime; + DWORD hdli1_charcount; } alias HANDLE_INFO_1* PHANDLE_INFO_1, LPHANDLE_INFO_1; extern (Windows) { - NET_API_STATUS NetCharDevEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); - NET_API_STATUS NetCharDevGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); - NET_API_STATUS NetCharDevControl(LPCWSTR, LPCWSTR, DWORD); - NET_API_STATUS NetCharDevQEnum(LPCWSTR, LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); - NET_API_STATUS NetCharDevQGetInfo(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, PBYTE*); - NET_API_STATUS NetCharDevQSetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE, PDWORD); - NET_API_STATUS NetCharDevQPurge(LPCWSTR, LPCWSTR); - NET_API_STATUS NetCharDevQPurgeSelf(LPCWSTR, LPCWSTR, LPCWSTR); - NET_API_STATUS NetHandleGetInfo(HANDLE, DWORD, PBYTE*); - NET_API_STATUS NetHandleSetInfo(HANDLE, DWORD, PBYTE, DWORD, PDWORD); + NET_API_STATUS NetCharDevEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); + NET_API_STATUS NetCharDevGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetCharDevControl(LPCWSTR, LPCWSTR, DWORD); + NET_API_STATUS NetCharDevQEnum(LPCWSTR, LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); + NET_API_STATUS NetCharDevQGetInfo(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetCharDevQSetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE, PDWORD); + NET_API_STATUS NetCharDevQPurge(LPCWSTR, LPCWSTR); + NET_API_STATUS NetCharDevQPurgeSelf(LPCWSTR, LPCWSTR, LPCWSTR); + NET_API_STATUS NetHandleGetInfo(HANDLE, DWORD, PBYTE*); + NET_API_STATUS NetHandleSetInfo(HANDLE, DWORD, PBYTE, DWORD, PDWORD); } diff --git a/src/core/sys/windows/lmconfig.d b/src/core/sys/windows/lmconfig.d index 02d901bc27..cec9c90d8e 100644 --- a/src/core/sys/windows/lmconfig.d +++ b/src/core/sys/windows/lmconfig.d @@ -13,17 +13,17 @@ module core.sys.windows.lmconfig; private import core.sys.windows.lmcons, core.sys.windows.windef; deprecated { - struct CONFIG_INFO_0 { - LPWSTR cfgi0_key; - LPWSTR cfgi0_data; - } + struct CONFIG_INFO_0 { + LPWSTR cfgi0_key; + LPWSTR cfgi0_data; + } - alias CONFIG_INFO_0* PCONFIG_INFO_0, LPCONFIG_INFO_0; + alias CONFIG_INFO_0* PCONFIG_INFO_0, LPCONFIG_INFO_0; - extern (Windows) { - NET_API_STATUS NetConfigGet(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE*); - NET_API_STATUS NetConfigGetAll(LPCWSTR, LPCWSTR, PBYTE*); - NET_API_STATUS NetConfigSet(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, - PBYTE, DWORD); - } + extern (Windows) { + NET_API_STATUS NetConfigGet(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE*); + NET_API_STATUS NetConfigGetAll(LPCWSTR, LPCWSTR, PBYTE*); + NET_API_STATUS NetConfigSet(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, + PBYTE, DWORD); + } } diff --git a/src/core/sys/windows/lmcons.d b/src/core/sys/windows/lmcons.d index e4d16f00eb..3deb27a844 100644 --- a/src/core/sys/windows/lmcons.d +++ b/src/core/sys/windows/lmcons.d @@ -12,9 +12,9 @@ private import core.sys.windows.windef; private import core.sys.windows.lmerr; // for NERR_BASE const TCHAR[] - MESSAGE_FILENAME = "NETMSG", - OS2MSG_FILENAME = "BASE", - HELP_MSG_FILENAME = "NETH"; + MESSAGE_FILENAME = "NETMSG", + OS2MSG_FILENAME = "BASE", + HELP_MSG_FILENAME = "NETH"; alias DWORD NET_API_STATUS, API_RET_TYPE; @@ -77,9 +77,9 @@ const PLATFORM_ID_VMS = 700; // this is a new typedef in W2K, but it should be harmless for earlier Windows versions. version (Unicode) { - alias LPWSTR LMSTR; - alias LPCWSTR LMCSTR; + alias LPWSTR LMSTR; + alias LPCWSTR LMCSTR; } else { - alias LPSTR LMSTR; - alias LPCSTR LMCSTR; + alias LPSTR LMSTR; + alias LPCSTR LMCSTR; } diff --git a/src/core/sys/windows/lmerr.d b/src/core/sys/windows/lmerr.d index 6ccd1f748e..84cfb0ecec 100644 --- a/src/core/sys/windows/lmerr.d +++ b/src/core/sys/windows/lmerr.d @@ -11,302 +11,302 @@ module core.sys.windows.lmerr; import core.sys.windows.winerror; enum { - NERR_Success = 0, - NERR_BASE = 2100, - NERR_NetNotStarted = NERR_BASE + 2, - NERR_UnknownServer, - NERR_ShareMem, - NERR_NoNetworkResource, - NERR_RemoteOnly, - NERR_DevNotRedirected, - NERR_ServerNotStarted = NERR_BASE + 14, - NERR_ItemNotFound, - NERR_UnknownDevDir, - NERR_RedirectedPath, - NERR_DuplicateShare, - NERR_NoRoom, - NERR_TooManyItems = NERR_BASE + 21, - NERR_InvalidMaxUsers, - NERR_BufTooSmall, - NERR_RemoteErr = NERR_BASE + 27, - NERR_LanmanIniError = NERR_BASE + 31, - NERR_NetworkError = NERR_BASE + 36, - NERR_WkstaInconsistentState, - NERR_WkstaNotStarted, - NERR_BrowserNotStarted, - NERR_InternalError, - NERR_BadTransactConfig, - NERR_InvalidAPI, - NERR_BadEventName, - NERR_DupNameReboot, - NERR_CfgCompNotFound = NERR_BASE + 46, - NERR_CfgParamNotFound, - NERR_LineTooLong = NERR_BASE + 49, - NERR_QNotFound, - NERR_JobNotFound, - NERR_DestNotFound, - NERR_DestExists, - NERR_QExists, - NERR_QNoRoom, - NERR_JobNoRoom, - NERR_DestNoRoom, - NERR_DestIdle, - NERR_DestInvalidOp, - NERR_ProcNoRespond, - NERR_SpoolerNotLoaded, - NERR_DestInvalidState, - NERR_QInvalidState, - NERR_JobInvalidState, - NERR_SpoolNoMemory, - NERR_DriverNotFound, - NERR_DataTypeInvalid, - NERR_ProcNotFound, - NERR_ServiceTableLocked = NERR_BASE + 80, - NERR_ServiceTableFull, - NERR_ServiceInstalled, - NERR_ServiceEntryLocked, - NERR_ServiceNotInstalled, - NERR_BadServiceName, - NERR_ServiceCtlTimeout, - NERR_ServiceCtlBusy, - NERR_BadServiceProgName, - NERR_ServiceNotCtrl, - NERR_ServiceKillProc, - NERR_ServiceCtlNotValid, - NERR_NotInDispatchTbl, - NERR_BadControlRecv, - NERR_ServiceNotStarting, - NERR_AlreadyLoggedOn = NERR_BASE + 100, - NERR_NotLoggedOn, - NERR_BadUsername, - NERR_BadPassword, - NERR_UnableToAddName_W, - NERR_UnableToAddName_F, - NERR_UnableToDelName_W, - NERR_UnableToDelName_F, - NERR_LogonsPaused = NERR_BASE + 109, - NERR_LogonServerConflict, - NERR_LogonNoUserPath, - NERR_LogonScriptError, - NERR_StandaloneLogon = NERR_BASE + 114, - NERR_LogonServerNotFound, - NERR_LogonDomainExists, - NERR_NonValidatedLogon, - NERR_ACFNotFound = NERR_BASE + 119, - NERR_GroupNotFound, - NERR_UserNotFound, - NERR_ResourceNotFound, - NERR_GroupExists, - NERR_UserExists, - NERR_ResourceExists, - NERR_NotPrimary, - NERR_ACFNotLoaded, - NERR_ACFNoRoom, - NERR_ACFFileIOFail, - NERR_ACFTooManyLists, - NERR_UserLogon, - NERR_ACFNoParent, - NERR_CanNotGrowSegment, - NERR_SpeGroupOp, - NERR_NotInCache, - NERR_UserInGroup, - NERR_UserNotInGroup, - NERR_AccountUndefined, - NERR_AccountExpired, - NERR_InvalidWorkstation, - NERR_InvalidLogonHours, - NERR_PasswordExpired, - NERR_PasswordCantChange, - NERR_PasswordHistConflict, - NERR_PasswordTooShort, - NERR_PasswordTooRecent, - NERR_InvalidDatabase, - NERR_DatabaseUpToDate, - NERR_SyncRequired, - NERR_UseNotFound, - NERR_BadAsgType, - NERR_DeviceIsShared, - NERR_NoComputerName = NERR_BASE + 170, - NERR_MsgAlreadyStarted, - NERR_MsgInitFailed, - NERR_NameNotFound, - NERR_AlreadyForwarded, - NERR_AddForwarded, - NERR_AlreadyExists, - NERR_TooManyNames, - NERR_DelComputerName, - NERR_LocalForward, - NERR_GrpMsgProcessor, - NERR_PausedRemote, - NERR_BadReceive, - NERR_NameInUse, - NERR_MsgNotStarted, - NERR_NotLocalName, - NERR_NoForwardName, - NERR_RemoteFull, - NERR_NameNotForwarded, - NERR_TruncatedBroadcast, - NERR_InvalidDevice = NERR_BASE + 194, - NERR_WriteFault, - NERR_DuplicateName = NERR_BASE + 197, - NERR_DeleteLater, - NERR_IncompleteDel, - NERR_MultipleNets, - NERR_NetNameNotFound = NERR_BASE + 210, - NERR_DeviceNotShared, - NERR_ClientNameNotFound, - NERR_FileIdNotFound = NERR_BASE + 214, - NERR_ExecFailure, - NERR_TmpFile, - NERR_TooMuchData, - NERR_DeviceShareConflict, - NERR_BrowserTableIncomplete, - NERR_NotLocalDomain, - NERR_DevInvalidOpCode = NERR_BASE + 231, - NERR_DevNotFound, - NERR_DevNotOpen, - NERR_BadQueueDevString, - NERR_BadQueuePriority, - NERR_NoCommDevs = NERR_BASE + 237, - NERR_QueueNotFound, - NERR_BadDevString = NERR_BASE + 240, - NERR_BadDev, - NERR_InUseBySpooler, - NERR_CommDevInUse, - NERR_InvalidComputer = NERR_BASE + 251, - NERR_MaxLenExceeded = NERR_BASE + 254, - NERR_BadComponent = NERR_BASE + 256, - NERR_CantType, - NERR_TooManyEntries = NERR_BASE + 262, - NERR_ProfileFileTooBig = NERR_BASE + 270, - NERR_ProfileOffset, - NERR_ProfileCleanup, - NERR_ProfileUnknownCmd, - NERR_ProfileLoadErr, - NERR_ProfileSaveErr, - NERR_LogOverflow = NERR_BASE + 277, - NERR_LogFileChanged, - NERR_LogFileCorrupt, - NERR_SourceIsDir, - NERR_BadSource, - NERR_BadDest, - NERR_DifferentServers, - NERR_RunSrvPaused = NERR_BASE + 285, - NERR_ErrCommRunSrv = NERR_BASE + 289, - NERR_ErrorExecingGhost = NERR_BASE + 291, - NERR_ShareNotFound, - NERR_InvalidLana = NERR_BASE + 300, - NERR_OpenFiles, - NERR_ActiveConns, - NERR_BadPasswordCore, - NERR_DevInUse, - NERR_LocalDrive, - NERR_AlertExists = NERR_BASE + 330, - NERR_TooManyAlerts, - NERR_NoSuchAlert, - NERR_BadRecipient, - NERR_AcctLimitExceeded, - NERR_InvalidLogSeek = NERR_BASE + 340, - NERR_BadUasConfig = NERR_BASE + 350, - NERR_InvalidUASOp, - NERR_LastAdmin, - NERR_DCNotFound, - NERR_LogonTrackingError, - NERR_NetlogonNotStarted, - NERR_CanNotGrowUASFile, - NERR_TimeDiffAtDC, - NERR_PasswordMismatch, - NERR_NoSuchServer = NERR_BASE + 360, - NERR_NoSuchSession, - NERR_NoSuchConnection, - NERR_TooManyServers, - NERR_TooManySessions, - NERR_TooManyConnections, - NERR_TooManyFiles, - NERR_NoAlternateServers, - NERR_TryDownLevel = NERR_BASE + 370, - NERR_UPSDriverNotStarted = NERR_BASE + 380, - NERR_UPSInvalidConfig, - NERR_UPSInvalidCommPort, - NERR_UPSSignalAsserted, - NERR_UPSShutdownFailed, - NERR_BadDosRetCode = NERR_BASE + 400, - NERR_ProgNeedsExtraMem, - NERR_BadDosFunction, - NERR_RemoteBootFailed, - NERR_BadFileCheckSum, - NERR_NoRplBootSystem, - NERR_RplLoadrNetBiosErr, - NERR_RplLoadrDiskErr, - NERR_ImageParamErr, - NERR_TooManyImageParams, - NERR_NonDosFloppyUsed, - NERR_RplBootRestart, - NERR_RplSrvrCallFailed, - NERR_CantConnectRplSrvr, - NERR_CantOpenImageFile, - NERR_CallingRplSrvr, - NERR_StartingRplBoot, - NERR_RplBootServiceTerm, - NERR_RplBootStartFailed, - NERR_RPL_CONNECTED, - NERR_BrowserConfiguredToNotRun = NERR_BASE + 450, - NERR_RplNoAdaptersStarted = NERR_BASE + 510, - NERR_RplBadRegistry, - NERR_RplBadDatabase, - NERR_RplRplfilesShare, - NERR_RplNotRplServer, - NERR_RplCannotEnum, - NERR_RplWkstaInfoCorrupted, - NERR_RplWkstaNotFound, - NERR_RplWkstaNameUnavailable, - NERR_RplProfileInfoCorrupted, - NERR_RplProfileNotFound, - NERR_RplProfileNameUnavailable, - NERR_RplProfileNotEmpty, - NERR_RplConfigInfoCorrupted, - NERR_RplConfigNotFound, - NERR_RplAdapterInfoCorrupted, - NERR_RplInternal, - NERR_RplVendorInfoCorrupted, - NERR_RplBootInfoCorrupted, - NERR_RplWkstaNeedsUserAcct, - NERR_RplNeedsRPLUSERAcct, - NERR_RplBootNotFound, - NERR_RplIncompatibleProfile, - NERR_RplAdapterNameUnavailable, - NERR_RplConfigNotEmpty, - NERR_RplBootInUse, - NERR_RplBackupDatabase, - NERR_RplAdapterNotFound, - NERR_RplVendorNotFound, - NERR_RplVendorNameUnavailable, - NERR_RplBootNameUnavailable, - NERR_RplConfigNameUnavailable, - NERR_DfsInternalCorruption = NERR_BASE + 560, - NERR_DfsVolumeDataCorrupt, - NERR_DfsNoSuchVolume, - NERR_DfsVolumeAlreadyExists, - NERR_DfsAlreadyShared, - NERR_DfsNoSuchShare, - NERR_DfsNotALeafVolume, - NERR_DfsLeafVolume, - NERR_DfsVolumeHasMultipleServers, - NERR_DfsCantCreateJunctionPoint, - NERR_DfsServerNotDfsAware, - NERR_DfsBadRenamePath, - NERR_DfsVolumeIsOffline, - NERR_DfsNoSuchServer, - NERR_DfsCyclicalName, - NERR_DfsNotSupportedInServerDfs, - NERR_DfsDuplicateService, - NERR_DfsCantRemoveLastServerShare, - NERR_DfsVolumeIsInterDfs, - NERR_DfsInconsistent, - NERR_DfsServerUpgraded, - NERR_DfsDataIsIdentical, - NERR_DfsCantRemoveDfsRoot, - NERR_DfsChildOrParentInDfs, - NERR_DfsInternalError = NERR_BASE + 590, - MAX_NERR = NERR_BASE + 899 + NERR_Success = 0, + NERR_BASE = 2100, + NERR_NetNotStarted = NERR_BASE + 2, + NERR_UnknownServer, + NERR_ShareMem, + NERR_NoNetworkResource, + NERR_RemoteOnly, + NERR_DevNotRedirected, + NERR_ServerNotStarted = NERR_BASE + 14, + NERR_ItemNotFound, + NERR_UnknownDevDir, + NERR_RedirectedPath, + NERR_DuplicateShare, + NERR_NoRoom, + NERR_TooManyItems = NERR_BASE + 21, + NERR_InvalidMaxUsers, + NERR_BufTooSmall, + NERR_RemoteErr = NERR_BASE + 27, + NERR_LanmanIniError = NERR_BASE + 31, + NERR_NetworkError = NERR_BASE + 36, + NERR_WkstaInconsistentState, + NERR_WkstaNotStarted, + NERR_BrowserNotStarted, + NERR_InternalError, + NERR_BadTransactConfig, + NERR_InvalidAPI, + NERR_BadEventName, + NERR_DupNameReboot, + NERR_CfgCompNotFound = NERR_BASE + 46, + NERR_CfgParamNotFound, + NERR_LineTooLong = NERR_BASE + 49, + NERR_QNotFound, + NERR_JobNotFound, + NERR_DestNotFound, + NERR_DestExists, + NERR_QExists, + NERR_QNoRoom, + NERR_JobNoRoom, + NERR_DestNoRoom, + NERR_DestIdle, + NERR_DestInvalidOp, + NERR_ProcNoRespond, + NERR_SpoolerNotLoaded, + NERR_DestInvalidState, + NERR_QInvalidState, + NERR_JobInvalidState, + NERR_SpoolNoMemory, + NERR_DriverNotFound, + NERR_DataTypeInvalid, + NERR_ProcNotFound, + NERR_ServiceTableLocked = NERR_BASE + 80, + NERR_ServiceTableFull, + NERR_ServiceInstalled, + NERR_ServiceEntryLocked, + NERR_ServiceNotInstalled, + NERR_BadServiceName, + NERR_ServiceCtlTimeout, + NERR_ServiceCtlBusy, + NERR_BadServiceProgName, + NERR_ServiceNotCtrl, + NERR_ServiceKillProc, + NERR_ServiceCtlNotValid, + NERR_NotInDispatchTbl, + NERR_BadControlRecv, + NERR_ServiceNotStarting, + NERR_AlreadyLoggedOn = NERR_BASE + 100, + NERR_NotLoggedOn, + NERR_BadUsername, + NERR_BadPassword, + NERR_UnableToAddName_W, + NERR_UnableToAddName_F, + NERR_UnableToDelName_W, + NERR_UnableToDelName_F, + NERR_LogonsPaused = NERR_BASE + 109, + NERR_LogonServerConflict, + NERR_LogonNoUserPath, + NERR_LogonScriptError, + NERR_StandaloneLogon = NERR_BASE + 114, + NERR_LogonServerNotFound, + NERR_LogonDomainExists, + NERR_NonValidatedLogon, + NERR_ACFNotFound = NERR_BASE + 119, + NERR_GroupNotFound, + NERR_UserNotFound, + NERR_ResourceNotFound, + NERR_GroupExists, + NERR_UserExists, + NERR_ResourceExists, + NERR_NotPrimary, + NERR_ACFNotLoaded, + NERR_ACFNoRoom, + NERR_ACFFileIOFail, + NERR_ACFTooManyLists, + NERR_UserLogon, + NERR_ACFNoParent, + NERR_CanNotGrowSegment, + NERR_SpeGroupOp, + NERR_NotInCache, + NERR_UserInGroup, + NERR_UserNotInGroup, + NERR_AccountUndefined, + NERR_AccountExpired, + NERR_InvalidWorkstation, + NERR_InvalidLogonHours, + NERR_PasswordExpired, + NERR_PasswordCantChange, + NERR_PasswordHistConflict, + NERR_PasswordTooShort, + NERR_PasswordTooRecent, + NERR_InvalidDatabase, + NERR_DatabaseUpToDate, + NERR_SyncRequired, + NERR_UseNotFound, + NERR_BadAsgType, + NERR_DeviceIsShared, + NERR_NoComputerName = NERR_BASE + 170, + NERR_MsgAlreadyStarted, + NERR_MsgInitFailed, + NERR_NameNotFound, + NERR_AlreadyForwarded, + NERR_AddForwarded, + NERR_AlreadyExists, + NERR_TooManyNames, + NERR_DelComputerName, + NERR_LocalForward, + NERR_GrpMsgProcessor, + NERR_PausedRemote, + NERR_BadReceive, + NERR_NameInUse, + NERR_MsgNotStarted, + NERR_NotLocalName, + NERR_NoForwardName, + NERR_RemoteFull, + NERR_NameNotForwarded, + NERR_TruncatedBroadcast, + NERR_InvalidDevice = NERR_BASE + 194, + NERR_WriteFault, + NERR_DuplicateName = NERR_BASE + 197, + NERR_DeleteLater, + NERR_IncompleteDel, + NERR_MultipleNets, + NERR_NetNameNotFound = NERR_BASE + 210, + NERR_DeviceNotShared, + NERR_ClientNameNotFound, + NERR_FileIdNotFound = NERR_BASE + 214, + NERR_ExecFailure, + NERR_TmpFile, + NERR_TooMuchData, + NERR_DeviceShareConflict, + NERR_BrowserTableIncomplete, + NERR_NotLocalDomain, + NERR_DevInvalidOpCode = NERR_BASE + 231, + NERR_DevNotFound, + NERR_DevNotOpen, + NERR_BadQueueDevString, + NERR_BadQueuePriority, + NERR_NoCommDevs = NERR_BASE + 237, + NERR_QueueNotFound, + NERR_BadDevString = NERR_BASE + 240, + NERR_BadDev, + NERR_InUseBySpooler, + NERR_CommDevInUse, + NERR_InvalidComputer = NERR_BASE + 251, + NERR_MaxLenExceeded = NERR_BASE + 254, + NERR_BadComponent = NERR_BASE + 256, + NERR_CantType, + NERR_TooManyEntries = NERR_BASE + 262, + NERR_ProfileFileTooBig = NERR_BASE + 270, + NERR_ProfileOffset, + NERR_ProfileCleanup, + NERR_ProfileUnknownCmd, + NERR_ProfileLoadErr, + NERR_ProfileSaveErr, + NERR_LogOverflow = NERR_BASE + 277, + NERR_LogFileChanged, + NERR_LogFileCorrupt, + NERR_SourceIsDir, + NERR_BadSource, + NERR_BadDest, + NERR_DifferentServers, + NERR_RunSrvPaused = NERR_BASE + 285, + NERR_ErrCommRunSrv = NERR_BASE + 289, + NERR_ErrorExecingGhost = NERR_BASE + 291, + NERR_ShareNotFound, + NERR_InvalidLana = NERR_BASE + 300, + NERR_OpenFiles, + NERR_ActiveConns, + NERR_BadPasswordCore, + NERR_DevInUse, + NERR_LocalDrive, + NERR_AlertExists = NERR_BASE + 330, + NERR_TooManyAlerts, + NERR_NoSuchAlert, + NERR_BadRecipient, + NERR_AcctLimitExceeded, + NERR_InvalidLogSeek = NERR_BASE + 340, + NERR_BadUasConfig = NERR_BASE + 350, + NERR_InvalidUASOp, + NERR_LastAdmin, + NERR_DCNotFound, + NERR_LogonTrackingError, + NERR_NetlogonNotStarted, + NERR_CanNotGrowUASFile, + NERR_TimeDiffAtDC, + NERR_PasswordMismatch, + NERR_NoSuchServer = NERR_BASE + 360, + NERR_NoSuchSession, + NERR_NoSuchConnection, + NERR_TooManyServers, + NERR_TooManySessions, + NERR_TooManyConnections, + NERR_TooManyFiles, + NERR_NoAlternateServers, + NERR_TryDownLevel = NERR_BASE + 370, + NERR_UPSDriverNotStarted = NERR_BASE + 380, + NERR_UPSInvalidConfig, + NERR_UPSInvalidCommPort, + NERR_UPSSignalAsserted, + NERR_UPSShutdownFailed, + NERR_BadDosRetCode = NERR_BASE + 400, + NERR_ProgNeedsExtraMem, + NERR_BadDosFunction, + NERR_RemoteBootFailed, + NERR_BadFileCheckSum, + NERR_NoRplBootSystem, + NERR_RplLoadrNetBiosErr, + NERR_RplLoadrDiskErr, + NERR_ImageParamErr, + NERR_TooManyImageParams, + NERR_NonDosFloppyUsed, + NERR_RplBootRestart, + NERR_RplSrvrCallFailed, + NERR_CantConnectRplSrvr, + NERR_CantOpenImageFile, + NERR_CallingRplSrvr, + NERR_StartingRplBoot, + NERR_RplBootServiceTerm, + NERR_RplBootStartFailed, + NERR_RPL_CONNECTED, + NERR_BrowserConfiguredToNotRun = NERR_BASE + 450, + NERR_RplNoAdaptersStarted = NERR_BASE + 510, + NERR_RplBadRegistry, + NERR_RplBadDatabase, + NERR_RplRplfilesShare, + NERR_RplNotRplServer, + NERR_RplCannotEnum, + NERR_RplWkstaInfoCorrupted, + NERR_RplWkstaNotFound, + NERR_RplWkstaNameUnavailable, + NERR_RplProfileInfoCorrupted, + NERR_RplProfileNotFound, + NERR_RplProfileNameUnavailable, + NERR_RplProfileNotEmpty, + NERR_RplConfigInfoCorrupted, + NERR_RplConfigNotFound, + NERR_RplAdapterInfoCorrupted, + NERR_RplInternal, + NERR_RplVendorInfoCorrupted, + NERR_RplBootInfoCorrupted, + NERR_RplWkstaNeedsUserAcct, + NERR_RplNeedsRPLUSERAcct, + NERR_RplBootNotFound, + NERR_RplIncompatibleProfile, + NERR_RplAdapterNameUnavailable, + NERR_RplConfigNotEmpty, + NERR_RplBootInUse, + NERR_RplBackupDatabase, + NERR_RplAdapterNotFound, + NERR_RplVendorNotFound, + NERR_RplVendorNameUnavailable, + NERR_RplBootNameUnavailable, + NERR_RplConfigNameUnavailable, + NERR_DfsInternalCorruption = NERR_BASE + 560, + NERR_DfsVolumeDataCorrupt, + NERR_DfsNoSuchVolume, + NERR_DfsVolumeAlreadyExists, + NERR_DfsAlreadyShared, + NERR_DfsNoSuchShare, + NERR_DfsNotALeafVolume, + NERR_DfsLeafVolume, + NERR_DfsVolumeHasMultipleServers, + NERR_DfsCantCreateJunctionPoint, + NERR_DfsServerNotDfsAware, + NERR_DfsBadRenamePath, + NERR_DfsVolumeIsOffline, + NERR_DfsNoSuchServer, + NERR_DfsCyclicalName, + NERR_DfsNotSupportedInServerDfs, + NERR_DfsDuplicateService, + NERR_DfsCantRemoveLastServerShare, + NERR_DfsVolumeIsInterDfs, + NERR_DfsInconsistent, + NERR_DfsServerUpgraded, + NERR_DfsDataIsIdentical, + NERR_DfsCantRemoveDfsRoot, + NERR_DfsChildOrParentInDfs, + NERR_DfsInternalError = NERR_BASE + 590, + MAX_NERR = NERR_BASE + 899 } diff --git a/src/core/sys/windows/lmerrlog.d b/src/core/sys/windows/lmerrlog.d index b806501c9d..2ccad92b74 100644 --- a/src/core/sys/windows/lmerrlog.d +++ b/src/core/sys/windows/lmerrlog.d @@ -198,24 +198,24 @@ const NELOG_RplInitRestoredDatabase=(ERRLOG2_BASE+69); const NELOG_NetlogonSessionTypeWrong=(ERRLOG2_BASE+70); struct ERROR_LOG { - DWORD el_len; - DWORD el_reserved; - DWORD el_time; - DWORD el_error; - LPWSTR el_name; - LPWSTR el_text; - LPBYTE el_data; - DWORD el_data_size; - DWORD el_nstrings; + DWORD el_len; + DWORD el_reserved; + DWORD el_time; + DWORD el_error; + LPWSTR el_name; + LPWSTR el_text; + LPBYTE el_data; + DWORD el_data_size; + DWORD el_nstrings; } alias ERROR_LOG* PERROR_LOG, LPERROR_LOG; extern (Windows) { - deprecated { - NET_API_STATUS NetErrorLogClear(LPCWSTR, LPCWSTR, LPBYTE); - NET_API_STATUS NetErrorLogRead(LPCWSTR, LPWSTR, LPHLOG, DWORD, - LPDWORD, DWORD, DWORD, LPBYTE*, DWORD, LPDWORD, LPDWORD); - NET_API_STATUS NetErrorLogWrite(LPBYTE, DWORD, LPCWSTR, LPBYTE, - DWORD, LPBYTE, DWORD, LPBYTE); - } + deprecated { + NET_API_STATUS NetErrorLogClear(LPCWSTR, LPCWSTR, LPBYTE); + NET_API_STATUS NetErrorLogRead(LPCWSTR, LPWSTR, LPHLOG, DWORD, + LPDWORD, DWORD, DWORD, LPBYTE*, DWORD, LPDWORD, LPDWORD); + NET_API_STATUS NetErrorLogWrite(LPBYTE, DWORD, LPCWSTR, LPBYTE, + DWORD, LPBYTE, DWORD, LPBYTE); + } } diff --git a/src/core/sys/windows/lmmsg.d b/src/core/sys/windows/lmmsg.d index 7be446af24..0043b3b030 100644 --- a/src/core/sys/windows/lmmsg.d +++ b/src/core/sys/windows/lmmsg.d @@ -12,31 +12,31 @@ pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef, core.sys.windows.w32api; static assert (_WIN32_WINNT >= 0x501, - "core.sys.windows.lmmsg is available only if version WindowsXP, Windows2003 " - "or WindowsVista is set"); + "core.sys.windows.lmmsg is available only if version WindowsXP, Windows2003 " + "or WindowsVista is set"); const MSGNAME_NOT_FORWARDED = 0; const MSGNAME_FORWARDED_TO = 4; const MSGNAME_FORWARDED_FROM = 16; struct MSG_INFO_0 { - LPWSTR msgi0_name; + LPWSTR msgi0_name; } alias MSG_INFO_0* PMSG_INFO_0, LPMSG_INFO_0; struct MSG_INFO_1 { - LPWSTR msgi1_name; - DWORD msgi1_forward_flag; - LPWSTR msgi1_forward; + LPWSTR msgi1_name; + DWORD msgi1_forward_flag; + LPWSTR msgi1_forward; } alias MSG_INFO_1* PMSG_INFO_1, LPMSG_INFO_1; extern (Windows) { - NET_API_STATUS NetMessageBufferSend(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE, - DWORD); - NET_API_STATUS NetMessageNameAdd(LPCWSTR, LPCWSTR); - NET_API_STATUS NetMessageNameDel(LPCWSTR, LPCWSTR); - NET_API_STATUS NetMessageNameEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, - PDWORD, PDWORD); - NET_API_STATUS NetMessageNameGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetMessageBufferSend(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE, + DWORD); + NET_API_STATUS NetMessageNameAdd(LPCWSTR, LPCWSTR); + NET_API_STATUS NetMessageNameDel(LPCWSTR, LPCWSTR); + NET_API_STATUS NetMessageNameEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, + PDWORD, PDWORD); + NET_API_STATUS NetMessageNameGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); } diff --git a/src/core/sys/windows/lmremutl.d b/src/core/sys/windows/lmremutl.d index e14f13d2a6..3bf693387f 100644 --- a/src/core/sys/windows/lmremutl.d +++ b/src/core/sys/windows/lmremutl.d @@ -36,24 +36,24 @@ alias TCHAR DESC_CHAR; alias DESC_CHAR* LPDESC; struct TIME_OF_DAY_INFO { - DWORD tod_elapsedt; - DWORD tod_msecs; - DWORD tod_hours; - DWORD tod_mins; - DWORD tod_secs; - DWORD tod_hunds; - LONG tod_timezone; - DWORD tod_tinterval; - DWORD tod_day; - DWORD tod_month; - DWORD tod_year; - DWORD tod_weekday; + DWORD tod_elapsedt; + DWORD tod_msecs; + DWORD tod_hours; + DWORD tod_mins; + DWORD tod_secs; + DWORD tod_hunds; + LONG tod_timezone; + DWORD tod_tinterval; + DWORD tod_day; + DWORD tod_month; + DWORD tod_year; + DWORD tod_weekday; } alias TIME_OF_DAY_INFO* PTIME_OF_DAY_INFO, LPTIME_OF_DAY_INFO; extern (Windows) { - NET_API_STATUS NetRemoteTOD(LPCWSTR, PBYTE*); - NET_API_STATUS NetRemoteComputerSupports(LPCWSTR, DWORD, PDWORD); - NET_API_STATUS RxRemoteApi(DWORD, LPCWSTR, LPDESC, LPDESC, LPDESC, - LPDESC, LPDESC, LPDESC, LPDESC, DWORD, ...); + NET_API_STATUS NetRemoteTOD(LPCWSTR, PBYTE*); + NET_API_STATUS NetRemoteComputerSupports(LPCWSTR, DWORD, PDWORD); + NET_API_STATUS RxRemoteApi(DWORD, LPCWSTR, LPDESC, LPDESC, LPDESC, + LPDESC, LPDESC, LPDESC, LPDESC, DWORD, ...); } diff --git a/src/core/sys/windows/lmrepl.d b/src/core/sys/windows/lmrepl.d index 1e3be8ca93..3da318261d 100644 --- a/src/core/sys/windows/lmrepl.d +++ b/src/core/sys/windows/lmrepl.d @@ -35,82 +35,82 @@ const REPL_EXPORT_INTEGRITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; const REPL_EXPORT_EXTENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; struct REPL_INFO_0 { - DWORD rp0_role; - LPWSTR rp0_exportpath; - LPWSTR rp0_exportlist; - LPWSTR rp0_importpath; - LPWSTR rp0_importlist; - LPWSTR rp0_logonusername; - DWORD rp0_interval; - DWORD rp0_pulse; - DWORD rp0_guardtime; - DWORD rp0_random; + DWORD rp0_role; + LPWSTR rp0_exportpath; + LPWSTR rp0_exportlist; + LPWSTR rp0_importpath; + LPWSTR rp0_importlist; + LPWSTR rp0_logonusername; + DWORD rp0_interval; + DWORD rp0_pulse; + DWORD rp0_guardtime; + DWORD rp0_random; } alias REPL_INFO_0* PREPL_INFO_0, LPREPL_INFO_0; struct REPL_INFO_1000 { - DWORD rp1000_interval; + DWORD rp1000_interval; } alias REPL_INFO_1000* PREPL_INFO_1000, LPREPL_INFO_1000; struct REPL_INFO_1001 { - DWORD rp1001_pulse; + DWORD rp1001_pulse; } alias REPL_INFO_1001* PREPL_INFO_1001, LPREPL_INFO_1001; struct REPL_INFO_1002 { - DWORD rp1002_guardtime; + DWORD rp1002_guardtime; } alias REPL_INFO_1002* PREPL_INFO_1002, LPREPL_INFO_1002; struct REPL_INFO_1003 { - DWORD rp1003_random; + DWORD rp1003_random; } alias REPL_INFO_1003* PREPL_INFO_1003, LPREPL_INFO_1003; struct REPL_EDIR_INFO_0 { - LPWSTR rped0_dirname; + LPWSTR rped0_dirname; } alias REPL_EDIR_INFO_0* PREPL_EDIR_INFO_0, LPREPL_EDIR_INFO_0; struct REPL_EDIR_INFO_1 { - LPWSTR rped1_dirname; - DWORD rped1_integrity; - DWORD rped1_extent; + LPWSTR rped1_dirname; + DWORD rped1_integrity; + DWORD rped1_extent; } alias REPL_EDIR_INFO_1* PREPL_EDIR_INFO_1, LPREPL_EDIR_INFO_1; struct REPL_EDIR_INFO_2 { - LPWSTR rped2_dirname; - DWORD rped2_integrity; - DWORD rped2_extent; - DWORD rped2_lockcount; - DWORD rped2_locktime; + LPWSTR rped2_dirname; + DWORD rped2_integrity; + DWORD rped2_extent; + DWORD rped2_lockcount; + DWORD rped2_locktime; } alias REPL_EDIR_INFO_2* PREPL_EDIR_INFO_2, LPREPL_EDIR_INFO_2; struct REPL_EDIR_INFO_1000 { - DWORD rped1000_integrity; + DWORD rped1000_integrity; } alias REPL_EDIR_INFO_1000* PREPL_EDIR_INFO_1000, LPREPL_EDIR_INFO_1000; struct REPL_EDIR_INFO_1001 { - DWORD rped1001_extent; + DWORD rped1001_extent; } alias REPL_EDIR_INFO_1001* PREPL_EDIR_INFO_1001, LPREPL_EDIR_INFO_1001; struct REPL_IDIR_INFO_0 { - LPWSTR rpid0_dirname; + LPWSTR rpid0_dirname; } alias REPL_IDIR_INFO_0* PREPL_IDIR_INFO_0, LPREPL_IDIR_INFO_0; struct REPL_IDIR_INFO_1 { - LPWSTR rpid1_dirname; - DWORD rpid1_state; - LPWSTR rpid1_mastername; - DWORD rpid1_last_update_time; - DWORD rpid1_lockcount; - DWORD rpid1_locktime; + LPWSTR rpid1_dirname; + DWORD rpid1_state; + LPWSTR rpid1_mastername; + DWORD rpid1_last_update_time; + DWORD rpid1_lockcount; + DWORD rpid1_locktime; } alias REPL_IDIR_INFO_1* PREPL_IDIR_INFO_1, LPREPL_IDIR_INFO_1; diff --git a/src/core/sys/windows/lmserver.d b/src/core/sys/windows/lmserver.d index 18ccf02634..53013220bd 100644 --- a/src/core/sys/windows/lmserver.d +++ b/src/core/sys/windows/lmserver.d @@ -12,669 +12,669 @@ import core.sys.windows.winsvc; private import core.sys.windows.lmcons, core.sys.windows.windef; struct SERVER_INFO_100 { - DWORD sv100_platform_id; - LPWSTR sv100_name; + DWORD sv100_platform_id; + LPWSTR sv100_name; } alias SERVER_INFO_100* PSERVER_INFO_100, LPSERVER_INFO_100; struct SERVER_INFO_101 { - DWORD sv101_platform_id; - LPWSTR sv101_name; - DWORD sv101_version_major; - DWORD sv101_version_minor; - DWORD sv101_type; - LPWSTR sv101_comment; + DWORD sv101_platform_id; + LPWSTR sv101_name; + DWORD sv101_version_major; + DWORD sv101_version_minor; + DWORD sv101_type; + LPWSTR sv101_comment; } alias SERVER_INFO_101* PSERVER_INFO_101, LPSERVER_INFO_101; struct SERVER_INFO_102 { - DWORD sv102_platform_id; - LPWSTR sv102_name; - DWORD sv102_version_major; - DWORD sv102_version_minor; - DWORD sv102_type; - LPWSTR sv102_comment; - DWORD sv102_users; - LONG sv102_disc; - BOOL sv102_hidden; - DWORD sv102_announce; - DWORD sv102_anndelta; - DWORD sv102_licenses; - LPWSTR sv102_userpath; + DWORD sv102_platform_id; + LPWSTR sv102_name; + DWORD sv102_version_major; + DWORD sv102_version_minor; + DWORD sv102_type; + LPWSTR sv102_comment; + DWORD sv102_users; + LONG sv102_disc; + BOOL sv102_hidden; + DWORD sv102_announce; + DWORD sv102_anndelta; + DWORD sv102_licenses; + LPWSTR sv102_userpath; } alias SERVER_INFO_102* PSERVER_INFO_102, LPSERVER_INFO_102; struct SERVER_INFO_402 { - DWORD sv402_ulist_mtime; - DWORD sv402_glist_mtime; - DWORD sv402_alist_mtime; - LPWSTR sv402_alerts; - DWORD sv402_security; - DWORD sv402_numadmin; - DWORD sv402_lanmask; - LPWSTR sv402_guestacct; - DWORD sv402_chdevs; - DWORD sv402_chdevq; - DWORD sv402_chdevjobs; - DWORD sv402_connections; - DWORD sv402_shares; - DWORD sv402_openfiles; - DWORD sv402_sessopens; - DWORD sv402_sessvcs; - DWORD sv402_sessreqs; - DWORD sv402_opensearch; - DWORD sv402_activelocks; - DWORD sv402_numreqbuf; - DWORD sv402_sizreqbuf; - DWORD sv402_numbigbuf; - DWORD sv402_numfiletasks; - DWORD sv402_alertsched; - DWORD sv402_erroralert; - DWORD sv402_logonalert; - DWORD sv402_accessalert; - DWORD sv402_diskalert; - DWORD sv402_netioalert; - DWORD sv402_maxauditsz; - LPWSTR sv402_srvheuristics; + DWORD sv402_ulist_mtime; + DWORD sv402_glist_mtime; + DWORD sv402_alist_mtime; + LPWSTR sv402_alerts; + DWORD sv402_security; + DWORD sv402_numadmin; + DWORD sv402_lanmask; + LPWSTR sv402_guestacct; + DWORD sv402_chdevs; + DWORD sv402_chdevq; + DWORD sv402_chdevjobs; + DWORD sv402_connections; + DWORD sv402_shares; + DWORD sv402_openfiles; + DWORD sv402_sessopens; + DWORD sv402_sessvcs; + DWORD sv402_sessreqs; + DWORD sv402_opensearch; + DWORD sv402_activelocks; + DWORD sv402_numreqbuf; + DWORD sv402_sizreqbuf; + DWORD sv402_numbigbuf; + DWORD sv402_numfiletasks; + DWORD sv402_alertsched; + DWORD sv402_erroralert; + DWORD sv402_logonalert; + DWORD sv402_accessalert; + DWORD sv402_diskalert; + DWORD sv402_netioalert; + DWORD sv402_maxauditsz; + LPWSTR sv402_srvheuristics; } alias SERVER_INFO_402* PSERVER_INFO_402, LPSERVER_INFO_402; struct SERVER_INFO_403 { - DWORD sv403_ulist_mtime; - DWORD sv403_glist_mtime; - DWORD sv403_alist_mtime; - LPWSTR sv403_alerts; - DWORD sv403_security; - DWORD sv403_numadmin; - DWORD sv403_lanmask; - LPWSTR sv403_guestacct; - DWORD sv403_chdevs; - DWORD sv403_chdevq; - DWORD sv403_chdevjobs; - DWORD sv403_connections; - DWORD sv403_shares; - DWORD sv403_openfiles; - DWORD sv403_sessopens; - DWORD sv403_sessvcs; - DWORD sv403_sessreqs; - DWORD sv403_opensearch; - DWORD sv403_activelocks; - DWORD sv403_numreqbuf; - DWORD sv403_sizreqbuf; - DWORD sv403_numbigbuf; - DWORD sv403_numfiletasks; - DWORD sv403_alertsched; - DWORD sv403_erroralert; - DWORD sv403_logonalert; - DWORD sv403_accessalert; - DWORD sv403_diskalert; - DWORD sv403_netioalert; - DWORD sv403_maxauditsz; - LPWSTR sv403_srvheuristics; - DWORD sv403_auditedevents; - DWORD sv403_autoprofile; - LPWSTR sv403_autopath; + DWORD sv403_ulist_mtime; + DWORD sv403_glist_mtime; + DWORD sv403_alist_mtime; + LPWSTR sv403_alerts; + DWORD sv403_security; + DWORD sv403_numadmin; + DWORD sv403_lanmask; + LPWSTR sv403_guestacct; + DWORD sv403_chdevs; + DWORD sv403_chdevq; + DWORD sv403_chdevjobs; + DWORD sv403_connections; + DWORD sv403_shares; + DWORD sv403_openfiles; + DWORD sv403_sessopens; + DWORD sv403_sessvcs; + DWORD sv403_sessreqs; + DWORD sv403_opensearch; + DWORD sv403_activelocks; + DWORD sv403_numreqbuf; + DWORD sv403_sizreqbuf; + DWORD sv403_numbigbuf; + DWORD sv403_numfiletasks; + DWORD sv403_alertsched; + DWORD sv403_erroralert; + DWORD sv403_logonalert; + DWORD sv403_accessalert; + DWORD sv403_diskalert; + DWORD sv403_netioalert; + DWORD sv403_maxauditsz; + LPWSTR sv403_srvheuristics; + DWORD sv403_auditedevents; + DWORD sv403_autoprofile; + LPWSTR sv403_autopath; } alias SERVER_INFO_403* PSERVER_INFO_403, LPSERVER_INFO_403; struct SERVER_INFO_502 { - DWORD sv502_sessopens; - DWORD sv502_sessvcs; - DWORD sv502_opensearch; - DWORD sv502_sizreqbuf; - DWORD sv502_initworkitems; - DWORD sv502_maxworkitems; - DWORD sv502_rawworkitems; - DWORD sv502_irpstacksize; - DWORD sv502_maxrawbuflen; - DWORD sv502_sessusers; - DWORD sv502_sessconns; - DWORD sv502_maxpagedmemoryusage; - DWORD sv502_maxnonpagedmemoryusage; - BOOL sv502_enablesoftcompat; - BOOL sv502_enableforcedlogoff; - BOOL sv502_timesource; - BOOL sv502_acceptdownlevelapis; - BOOL sv502_lmannounce; + DWORD sv502_sessopens; + DWORD sv502_sessvcs; + DWORD sv502_opensearch; + DWORD sv502_sizreqbuf; + DWORD sv502_initworkitems; + DWORD sv502_maxworkitems; + DWORD sv502_rawworkitems; + DWORD sv502_irpstacksize; + DWORD sv502_maxrawbuflen; + DWORD sv502_sessusers; + DWORD sv502_sessconns; + DWORD sv502_maxpagedmemoryusage; + DWORD sv502_maxnonpagedmemoryusage; + BOOL sv502_enablesoftcompat; + BOOL sv502_enableforcedlogoff; + BOOL sv502_timesource; + BOOL sv502_acceptdownlevelapis; + BOOL sv502_lmannounce; } alias SERVER_INFO_502* PSERVER_INFO_502, LPSERVER_INFO_502; struct SERVER_INFO_503 { - DWORD sv503_sessopens; - DWORD sv503_sessvcs; - DWORD sv503_opensearch; - DWORD sv503_sizreqbuf; - DWORD sv503_initworkitems; - DWORD sv503_maxworkitems; - DWORD sv503_rawworkitems; - DWORD sv503_irpstacksize; - DWORD sv503_maxrawbuflen; - DWORD sv503_sessusers; - DWORD sv503_sessconns; - DWORD sv503_maxpagedmemoryusage; - DWORD sv503_maxnonpagedmemoryusage; - BOOL sv503_enablesoftcompat; - BOOL sv503_enableforcedlogoff; - BOOL sv503_timesource; - BOOL sv503_acceptdownlevelapis; - BOOL sv503_lmannounce; - LPWSTR sv503_domain; - DWORD sv503_maxcopyreadlen; - DWORD sv503_maxcopywritelen; - DWORD sv503_minkeepsearch; - DWORD sv503_maxkeepsearch; - DWORD sv503_minkeepcomplsearch; - DWORD sv503_maxkeepcomplsearch; - DWORD sv503_threadcountadd; - DWORD sv503_numblockthreads; - DWORD sv503_scavtimeout; - DWORD sv503_minrcvqueue; - DWORD sv503_minfreeworkitems; - DWORD sv503_xactmemsize; - DWORD sv503_threadpriority; - DWORD sv503_maxmpxct; - DWORD sv503_oplockbreakwait; - DWORD sv503_oplockbreakresponsewait; - BOOL sv503_enableoplocks; - BOOL sv503_enableoplockforceclose; - BOOL sv503_enablefcbopens; - BOOL sv503_enableraw; - BOOL sv503_enablesharednetdrives; - DWORD sv503_minfreeconnections; - DWORD sv503_maxfreeconnections; + DWORD sv503_sessopens; + DWORD sv503_sessvcs; + DWORD sv503_opensearch; + DWORD sv503_sizreqbuf; + DWORD sv503_initworkitems; + DWORD sv503_maxworkitems; + DWORD sv503_rawworkitems; + DWORD sv503_irpstacksize; + DWORD sv503_maxrawbuflen; + DWORD sv503_sessusers; + DWORD sv503_sessconns; + DWORD sv503_maxpagedmemoryusage; + DWORD sv503_maxnonpagedmemoryusage; + BOOL sv503_enablesoftcompat; + BOOL sv503_enableforcedlogoff; + BOOL sv503_timesource; + BOOL sv503_acceptdownlevelapis; + BOOL sv503_lmannounce; + LPWSTR sv503_domain; + DWORD sv503_maxcopyreadlen; + DWORD sv503_maxcopywritelen; + DWORD sv503_minkeepsearch; + DWORD sv503_maxkeepsearch; + DWORD sv503_minkeepcomplsearch; + DWORD sv503_maxkeepcomplsearch; + DWORD sv503_threadcountadd; + DWORD sv503_numblockthreads; + DWORD sv503_scavtimeout; + DWORD sv503_minrcvqueue; + DWORD sv503_minfreeworkitems; + DWORD sv503_xactmemsize; + DWORD sv503_threadpriority; + DWORD sv503_maxmpxct; + DWORD sv503_oplockbreakwait; + DWORD sv503_oplockbreakresponsewait; + BOOL sv503_enableoplocks; + BOOL sv503_enableoplockforceclose; + BOOL sv503_enablefcbopens; + BOOL sv503_enableraw; + BOOL sv503_enablesharednetdrives; + DWORD sv503_minfreeconnections; + DWORD sv503_maxfreeconnections; } alias SERVER_INFO_503* PSERVER_INFO_503, LPSERVER_INFO_503; struct SERVER_INFO_599 { - DWORD sv599_sessopens; - DWORD sv599_sessvcs; - DWORD sv599_opensearch; - DWORD sv599_sizreqbuf; - DWORD sv599_initworkitems; - DWORD sv599_maxworkitems; - DWORD sv599_rawworkitems; - DWORD sv599_irpstacksize; - DWORD sv599_maxrawbuflen; - DWORD sv599_sessusers; - DWORD sv599_sessconns; - DWORD sv599_maxpagedmemoryusage; - DWORD sv599_maxnonpagedmemoryusage; - BOOL sv599_enablesoftcompat; - BOOL sv599_enableforcedlogoff; - BOOL sv599_timesource; - BOOL sv599_acceptdownlevelapis; - BOOL sv599_lmannounce; - LPWSTR sv599_domain; - DWORD sv599_maxcopyreadlen; - DWORD sv599_maxcopywritelen; - DWORD sv599_minkeepsearch; - DWORD sv599_maxkeepsearch; - DWORD sv599_minkeepcomplsearch; - DWORD sv599_maxkeepcomplsearch; - DWORD sv599_threadcountadd; - DWORD sv599_numblockthreads; - DWORD sv599_scavtimeout; - DWORD sv599_minrcvqueue; - DWORD sv599_minfreeworkitems; - DWORD sv599_xactmemsize; - DWORD sv599_threadpriority; - DWORD sv599_maxmpxct; - DWORD sv599_oplockbreakwait; - DWORD sv599_oplockbreakresponsewait; - BOOL sv599_enableoplocks; - BOOL sv599_enableoplockforceclose; - BOOL sv599_enablefcbopens; - BOOL sv599_enableraw; - BOOL sv599_enablesharednetdrives; - DWORD sv599_minfreeconnections; - DWORD sv599_maxfreeconnections; - DWORD sv599_initsesstable; - DWORD sv599_initconntable; - DWORD sv599_initfiletable; - DWORD sv599_initsearchtable; - DWORD sv599_alertschedule; - DWORD sv599_errorthreshold; - DWORD sv599_networkerrorthreshold; - DWORD sv599_diskspacethreshold; - DWORD sv599_reserved; - DWORD sv599_maxlinkdelay; - DWORD sv599_minlinkthroughput; - DWORD sv599_linkinfovalidtime; - DWORD sv599_scavqosinfoupdatetime; - DWORD sv599_maxworkitemidletime; + DWORD sv599_sessopens; + DWORD sv599_sessvcs; + DWORD sv599_opensearch; + DWORD sv599_sizreqbuf; + DWORD sv599_initworkitems; + DWORD sv599_maxworkitems; + DWORD sv599_rawworkitems; + DWORD sv599_irpstacksize; + DWORD sv599_maxrawbuflen; + DWORD sv599_sessusers; + DWORD sv599_sessconns; + DWORD sv599_maxpagedmemoryusage; + DWORD sv599_maxnonpagedmemoryusage; + BOOL sv599_enablesoftcompat; + BOOL sv599_enableforcedlogoff; + BOOL sv599_timesource; + BOOL sv599_acceptdownlevelapis; + BOOL sv599_lmannounce; + LPWSTR sv599_domain; + DWORD sv599_maxcopyreadlen; + DWORD sv599_maxcopywritelen; + DWORD sv599_minkeepsearch; + DWORD sv599_maxkeepsearch; + DWORD sv599_minkeepcomplsearch; + DWORD sv599_maxkeepcomplsearch; + DWORD sv599_threadcountadd; + DWORD sv599_numblockthreads; + DWORD sv599_scavtimeout; + DWORD sv599_minrcvqueue; + DWORD sv599_minfreeworkitems; + DWORD sv599_xactmemsize; + DWORD sv599_threadpriority; + DWORD sv599_maxmpxct; + DWORD sv599_oplockbreakwait; + DWORD sv599_oplockbreakresponsewait; + BOOL sv599_enableoplocks; + BOOL sv599_enableoplockforceclose; + BOOL sv599_enablefcbopens; + BOOL sv599_enableraw; + BOOL sv599_enablesharednetdrives; + DWORD sv599_minfreeconnections; + DWORD sv599_maxfreeconnections; + DWORD sv599_initsesstable; + DWORD sv599_initconntable; + DWORD sv599_initfiletable; + DWORD sv599_initsearchtable; + DWORD sv599_alertschedule; + DWORD sv599_errorthreshold; + DWORD sv599_networkerrorthreshold; + DWORD sv599_diskspacethreshold; + DWORD sv599_reserved; + DWORD sv599_maxlinkdelay; + DWORD sv599_minlinkthroughput; + DWORD sv599_linkinfovalidtime; + DWORD sv599_scavqosinfoupdatetime; + DWORD sv599_maxworkitemidletime; } alias SERVER_INFO_599* PSERVER_INFO_599, LPSERVER_INFO_599; struct SERVER_INFO_598 { - DWORD sv598_maxrawworkitems; - DWORD sv598_maxthreadsperqueue; - DWORD sv598_producttype; - DWORD sv598_serversize; - DWORD sv598_connectionlessautodisc; - DWORD sv598_sharingviolationretries; - DWORD sv598_sharingviolationdelay; - DWORD sv598_maxglobalopensearch; - DWORD sv598_removeduplicatesearches; - DWORD sv598_lockviolationoffset; - DWORD sv598_lockviolationdelay; - DWORD sv598_mdlreadswitchover; - DWORD sv598_cachedopenlimit; - DWORD sv598_otherqueueaffinity; - BOOL sv598_restrictnullsessaccess; - BOOL sv598_enablewfw311directipx; - DWORD sv598_queuesamplesecs; - DWORD sv598_balancecount; - DWORD sv598_preferredaffinity; - DWORD sv598_maxfreerfcbs; - DWORD sv598_maxfreemfcbs; - DWORD sv598_maxfreelfcbs; - DWORD sv598_maxfreepagedpoolchunks; - DWORD sv598_minpagedpoolchunksize; - DWORD sv598_maxpagedpoolchunksize; - BOOL sv598_sendsfrompreferredprocessor; + DWORD sv598_maxrawworkitems; + DWORD sv598_maxthreadsperqueue; + DWORD sv598_producttype; + DWORD sv598_serversize; + DWORD sv598_connectionlessautodisc; + DWORD sv598_sharingviolationretries; + DWORD sv598_sharingviolationdelay; + DWORD sv598_maxglobalopensearch; + DWORD sv598_removeduplicatesearches; + DWORD sv598_lockviolationoffset; + DWORD sv598_lockviolationdelay; + DWORD sv598_mdlreadswitchover; + DWORD sv598_cachedopenlimit; + DWORD sv598_otherqueueaffinity; + BOOL sv598_restrictnullsessaccess; + BOOL sv598_enablewfw311directipx; + DWORD sv598_queuesamplesecs; + DWORD sv598_balancecount; + DWORD sv598_preferredaffinity; + DWORD sv598_maxfreerfcbs; + DWORD sv598_maxfreemfcbs; + DWORD sv598_maxfreelfcbs; + DWORD sv598_maxfreepagedpoolchunks; + DWORD sv598_minpagedpoolchunksize; + DWORD sv598_maxpagedpoolchunksize; + BOOL sv598_sendsfrompreferredprocessor; } alias SERVER_INFO_598* PSERVER_INFO_598, LPSERVER_INFO_598; struct SERVER_INFO_1005 { - LPWSTR sv1005_comment; + LPWSTR sv1005_comment; } alias SERVER_INFO_1005* PSERVER_INFO_1005, LPSERVER_INFO_1005; struct SERVER_INFO_1107 { - DWORD sv1107_users; + DWORD sv1107_users; } alias SERVER_INFO_1107* PSERVER_INFO_1107, LPSERVER_INFO_1107; struct SERVER_INFO_1010 { - LONG sv1010_disc; + LONG sv1010_disc; } alias SERVER_INFO_1010* PSERVER_INFO_1010, LPSERVER_INFO_1010; struct SERVER_INFO_1016 { - BOOL sv1016_hidden; + BOOL sv1016_hidden; } alias SERVER_INFO_1016* PSERVER_INFO_1016, LPSERVER_INFO_1016; struct SERVER_INFO_1017 { - DWORD sv1017_announce; + DWORD sv1017_announce; } alias SERVER_INFO_1017* PSERVER_INFO_1017, LPSERVER_INFO_1017; struct SERVER_INFO_1018 { - DWORD sv1018_anndelta; + DWORD sv1018_anndelta; } alias SERVER_INFO_1018* PSERVER_INFO_1018, LPSERVER_INFO_1018; struct SERVER_INFO_1501 { - DWORD sv1501_sessopens; + DWORD sv1501_sessopens; } alias SERVER_INFO_1501* PSERVER_INFO_1501, LPSERVER_INFO_1501; struct SERVER_INFO_1502 { - DWORD sv1502_sessvcs; + DWORD sv1502_sessvcs; } alias SERVER_INFO_1502* PSERVER_INFO_1502, LPSERVER_INFO_1502; struct SERVER_INFO_1503 { - DWORD sv1503_opensearch; + DWORD sv1503_opensearch; } alias SERVER_INFO_1503* PSERVER_INFO_1503, LPSERVER_INFO_1503; struct SERVER_INFO_1506 { - DWORD sv1506_maxworkitems; + DWORD sv1506_maxworkitems; } alias SERVER_INFO_1506* PSERVER_INFO_1506, LPSERVER_INFO_1506; struct SERVER_INFO_1509 { - DWORD sv1509_maxrawbuflen; + DWORD sv1509_maxrawbuflen; } alias SERVER_INFO_1509* PSERVER_INFO_1509, LPSERVER_INFO_1509; struct SERVER_INFO_1510 { - DWORD sv1510_sessusers; + DWORD sv1510_sessusers; } alias SERVER_INFO_1510* PSERVER_INFO_1510, LPSERVER_INFO_1510; struct SERVER_INFO_1511 { - DWORD sv1511_sessconns; + DWORD sv1511_sessconns; } alias SERVER_INFO_1511* PSERVER_INFO_1511, LPSERVER_INFO_1511; struct SERVER_INFO_1512 { - DWORD sv1512_maxnonpagedmemoryusage; + DWORD sv1512_maxnonpagedmemoryusage; } alias SERVER_INFO_1512* PSERVER_INFO_1512, LPSERVER_INFO_1512; struct SERVER_INFO_1513 { - DWORD sv1513_maxpagedmemoryusage; + DWORD sv1513_maxpagedmemoryusage; } alias SERVER_INFO_1513* PSERVER_INFO_1513, LPSERVER_INFO_1513; struct SERVER_INFO_1514 { - BOOL sv1514_enablesoftcompat; + BOOL sv1514_enablesoftcompat; } alias SERVER_INFO_1514* PSERVER_INFO_1514, LPSERVER_INFO_1514; struct SERVER_INFO_1515 { - BOOL sv1515_enableforcedlogoff; + BOOL sv1515_enableforcedlogoff; } alias SERVER_INFO_1515* PSERVER_INFO_1515, LPSERVER_INFO_1515; struct SERVER_INFO_1516 { - BOOL sv1516_timesource; + BOOL sv1516_timesource; } alias SERVER_INFO_1516* PSERVER_INFO_1516, LPSERVER_INFO_1516; struct SERVER_INFO_1518 { - BOOL sv1518_lmannounce; + BOOL sv1518_lmannounce; } alias SERVER_INFO_1518* PSERVER_INFO_1518, LPSERVER_INFO_1518; struct SERVER_INFO_1520 { - DWORD sv1520_maxcopyreadlen; + DWORD sv1520_maxcopyreadlen; } alias SERVER_INFO_1520* PSERVER_INFO_1520, LPSERVER_INFO_1520; struct SERVER_INFO_1521 { - DWORD sv1521_maxcopywritelen; + DWORD sv1521_maxcopywritelen; } alias SERVER_INFO_1521* PSERVER_INFO_1521, LPSERVER_INFO_1521; struct SERVER_INFO_1522 { - DWORD sv1522_minkeepsearch; + DWORD sv1522_minkeepsearch; } alias SERVER_INFO_1522* PSERVER_INFO_1522, LPSERVER_INFO_1522; struct SERVER_INFO_1523 { - DWORD sv1523_maxkeepsearch; + DWORD sv1523_maxkeepsearch; } alias SERVER_INFO_1523* PSERVER_INFO_1523, LPSERVER_INFO_1523; struct SERVER_INFO_1524 { - DWORD sv1524_minkeepcomplsearch; + DWORD sv1524_minkeepcomplsearch; } alias SERVER_INFO_1524* PSERVER_INFO_1524, LPSERVER_INFO_1524; struct SERVER_INFO_1525 { - DWORD sv1525_maxkeepcomplsearch; + DWORD sv1525_maxkeepcomplsearch; } alias SERVER_INFO_1525* PSERVER_INFO_1525, LPSERVER_INFO_1525; struct SERVER_INFO_1528 { - DWORD sv1528_scavtimeout; + DWORD sv1528_scavtimeout; } alias SERVER_INFO_1528* PSERVER_INFO_1528, LPSERVER_INFO_1528; struct SERVER_INFO_1529 { - DWORD sv1529_minrcvqueue; + DWORD sv1529_minrcvqueue; } alias SERVER_INFO_1529* PSERVER_INFO_1529, LPSERVER_INFO_1529; struct SERVER_INFO_1530 { - DWORD sv1530_minfreeworkitems; + DWORD sv1530_minfreeworkitems; } alias SERVER_INFO_1530* PSERVER_INFO_1530, LPSERVER_INFO_1530; struct SERVER_INFO_1533 { - DWORD sv1533_maxmpxct; + DWORD sv1533_maxmpxct; } alias SERVER_INFO_1533* PSERVER_INFO_1533, LPSERVER_INFO_1533; struct SERVER_INFO_1534 { - DWORD sv1534_oplockbreakwait; + DWORD sv1534_oplockbreakwait; } alias SERVER_INFO_1534* PSERVER_INFO_1534, LPSERVER_INFO_1534; struct SERVER_INFO_1535 { - DWORD sv1535_oplockbreakresponsewait; + DWORD sv1535_oplockbreakresponsewait; } alias SERVER_INFO_1535* PSERVER_INFO_1535, LPSERVER_INFO_1535; struct SERVER_INFO_1536 { - BOOL sv1536_enableoplocks; + BOOL sv1536_enableoplocks; } alias SERVER_INFO_1536* PSERVER_INFO_1536, LPSERVER_INFO_1536; struct SERVER_INFO_1537 { - BOOL sv1537_enableoplockforceclose; + BOOL sv1537_enableoplockforceclose; } alias SERVER_INFO_1537* PSERVER_INFO_1537, LPSERVER_INFO_1537; struct SERVER_INFO_1538 { - BOOL sv1538_enablefcbopens; + BOOL sv1538_enablefcbopens; } alias SERVER_INFO_1538* PSERVER_INFO_1538, LPSERVER_INFO_1538; struct SERVER_INFO_1539 { - BOOL sv1539_enableraw; + BOOL sv1539_enableraw; } alias SERVER_INFO_1539* PSERVER_INFO_1539, LPSERVER_INFO_1539; struct SERVER_INFO_1540 { - BOOL sv1540_enablesharednetdrives; + BOOL sv1540_enablesharednetdrives; } alias SERVER_INFO_1540* PSERVER_INFO_1540, LPSERVER_INFO_1540; struct SERVER_INFO_1541 { - BOOL sv1541_minfreeconnections; + BOOL sv1541_minfreeconnections; } alias SERVER_INFO_1541* PSERVER_INFO_1541, LPSERVER_INFO_1541; struct SERVER_INFO_1542 { - BOOL sv1542_maxfreeconnections; + BOOL sv1542_maxfreeconnections; } alias SERVER_INFO_1542* PSERVER_INFO_1542, LPSERVER_INFO_1542; struct SERVER_INFO_1543 { - DWORD sv1543_initsesstable; + DWORD sv1543_initsesstable; } alias SERVER_INFO_1543* PSERVER_INFO_1543, LPSERVER_INFO_1543; struct SERVER_INFO_1544 { - DWORD sv1544_initconntable; + DWORD sv1544_initconntable; } alias SERVER_INFO_1544* PSERVER_INFO_1544, LPSERVER_INFO_1544; struct SERVER_INFO_1545 { - DWORD sv1545_initfiletable; + DWORD sv1545_initfiletable; } alias SERVER_INFO_1545* PSERVER_INFO_1545, LPSERVER_INFO_1545; struct SERVER_INFO_1546 { - DWORD sv1546_initsearchtable; + DWORD sv1546_initsearchtable; } alias SERVER_INFO_1546* PSERVER_INFO_1546, LPSERVER_INFO_1546; struct SERVER_INFO_1547 { - DWORD sv1547_alertschedule; + DWORD sv1547_alertschedule; } alias SERVER_INFO_1547* PSERVER_INFO_1547, LPSERVER_INFO_1547; struct SERVER_INFO_1548 { - DWORD sv1548_errorthreshold; + DWORD sv1548_errorthreshold; } alias SERVER_INFO_1548* PSERVER_INFO_1548, LPSERVER_INFO_1548; struct SERVER_INFO_1549 { - DWORD sv1549_networkerrorthreshold; + DWORD sv1549_networkerrorthreshold; } alias SERVER_INFO_1549* PSERVER_INFO_1549, LPSERVER_INFO_1549; struct SERVER_INFO_1550 { - DWORD sv1550_diskspacethreshold; + DWORD sv1550_diskspacethreshold; } alias SERVER_INFO_1550* PSERVER_INFO_1550, LPSERVER_INFO_1550; struct SERVER_INFO_1552 { - DWORD sv1552_maxlinkdelay; + DWORD sv1552_maxlinkdelay; } alias SERVER_INFO_1552* PSERVER_INFO_1552, LPSERVER_INFO_1552; struct SERVER_INFO_1553 { - DWORD sv1553_minlinkthroughput; + DWORD sv1553_minlinkthroughput; } alias SERVER_INFO_1553* PSERVER_INFO_1553, LPSERVER_INFO_1553; struct SERVER_INFO_1554 { - DWORD sv1554_linkinfovalidtime; + DWORD sv1554_linkinfovalidtime; } alias SERVER_INFO_1554* PSERVER_INFO_1554, LPSERVER_INFO_1554; struct SERVER_INFO_1555 { - DWORD sv1555_scavqosinfoupdatetime; + DWORD sv1555_scavqosinfoupdatetime; } alias SERVER_INFO_1555* PSERVER_INFO_1555, LPSERVER_INFO_1555; struct SERVER_INFO_1556 { - DWORD sv1556_maxworkitemidletime; + DWORD sv1556_maxworkitemidletime; } alias SERVER_INFO_1556* PSERVER_INFO_1556, LPSERVER_INFO_1556; struct SERVER_INFO_1557 { - DWORD sv1557_maxrawworkitems; + DWORD sv1557_maxrawworkitems; } alias SERVER_INFO_1557* PSERVER_INFO_1557, LPSERVER_INFO_1557; struct SERVER_INFO_1560 { - DWORD sv1560_producttype; + DWORD sv1560_producttype; } alias SERVER_INFO_1560* PSERVER_INFO_1560, LPSERVER_INFO_1560; struct SERVER_INFO_1561 { - DWORD sv1561_serversize; + DWORD sv1561_serversize; } alias SERVER_INFO_1561* PSERVER_INFO_1561, LPSERVER_INFO_1561; struct SERVER_INFO_1562 { - DWORD sv1562_connectionlessautodisc; + DWORD sv1562_connectionlessautodisc; } alias SERVER_INFO_1562* PSERVER_INFO_1562, LPSERVER_INFO_1562; struct SERVER_INFO_1563 { - DWORD sv1563_sharingviolationretries; + DWORD sv1563_sharingviolationretries; } alias SERVER_INFO_1563* PSERVER_INFO_1563, LPSERVER_INFO_1563; struct SERVER_INFO_1564 { - DWORD sv1564_sharingviolationdelay; + DWORD sv1564_sharingviolationdelay; } alias SERVER_INFO_1564* PSERVER_INFO_1564, LPSERVER_INFO_1564; struct SERVER_INFO_1565 { - DWORD sv1565_maxglobalopensearch; + DWORD sv1565_maxglobalopensearch; } alias SERVER_INFO_1565* PSERVER_INFO_1565, LPSERVER_INFO_1565; struct SERVER_INFO_1566 { - BOOL sv1566_removeduplicatesearches; + BOOL sv1566_removeduplicatesearches; } alias SERVER_INFO_1566* PSERVER_INFO_1566, LPSERVER_INFO_1566; struct SERVER_INFO_1567 { - DWORD sv1567_lockviolationretries; + DWORD sv1567_lockviolationretries; } alias SERVER_INFO_1567* PSERVER_INFO_1567, LPSERVER_INFO_1567; struct SERVER_INFO_1568 { - DWORD sv1568_lockviolationoffset; + DWORD sv1568_lockviolationoffset; } alias SERVER_INFO_1568* PSERVER_INFO_1568, LPSERVER_INFO_1568; struct SERVER_INFO_1569 { - DWORD sv1569_lockviolationdelay; + DWORD sv1569_lockviolationdelay; } alias SERVER_INFO_1569* PSERVER_INFO_1569, LPSERVER_INFO_1569; struct SERVER_INFO_1570 { - DWORD sv1570_mdlreadswitchover; + DWORD sv1570_mdlreadswitchover; } alias SERVER_INFO_1570* PSERVER_INFO_1570, LPSERVER_INFO_1570; struct SERVER_INFO_1571 { - DWORD sv1571_cachedopenlimit; + DWORD sv1571_cachedopenlimit; } alias SERVER_INFO_1571* PSERVER_INFO_1571, LPSERVER_INFO_1571; struct SERVER_INFO_1572 { - DWORD sv1572_criticalthreads; + DWORD sv1572_criticalthreads; } alias SERVER_INFO_1572* PSERVER_INFO_1572, LPSERVER_INFO_1572; struct SERVER_INFO_1573 { - DWORD sv1573_restrictnullsessaccess; + DWORD sv1573_restrictnullsessaccess; } alias SERVER_INFO_1573* PSERVER_INFO_1573, LPSERVER_INFO_1573; struct SERVER_INFO_1574 { - DWORD sv1574_enablewfw311directipx; + DWORD sv1574_enablewfw311directipx; } alias SERVER_INFO_1574* PSERVER_INFO_1574, LPSERVER_INFO_1574; struct SERVER_INFO_1575 { - DWORD sv1575_otherqueueaffinity; + DWORD sv1575_otherqueueaffinity; } alias SERVER_INFO_1575* PSERVER_INFO_1575, LPSERVER_INFO_1575; struct SERVER_INFO_1576 { - DWORD sv1576_queuesamplesecs; + DWORD sv1576_queuesamplesecs; } alias SERVER_INFO_1576* PSERVER_INFO_1576, LPSERVER_INFO_1576; struct SERVER_INFO_1577 { - DWORD sv1577_balancecount; + DWORD sv1577_balancecount; } alias SERVER_INFO_1577* PSERVER_INFO_1577, LPSERVER_INFO_1577; struct SERVER_INFO_1578 { - DWORD sv1578_preferredaffinity; + DWORD sv1578_preferredaffinity; } alias SERVER_INFO_1578* PSERVER_INFO_1578, LPSERVER_INFO_1578; struct SERVER_INFO_1579 { - DWORD sv1579_maxfreerfcbs; + DWORD sv1579_maxfreerfcbs; } alias SERVER_INFO_1579* PSERVER_INFO_1579, LPSERVER_INFO_1579; struct SERVER_INFO_1580 { - DWORD sv1580_maxfreemfcbs; + DWORD sv1580_maxfreemfcbs; } alias SERVER_INFO_1580* PSERVER_INFO_1580, LPSERVER_INFO_1580; struct SERVER_INFO_1581 { - DWORD sv1581_maxfreemlcbs; + DWORD sv1581_maxfreemlcbs; } alias SERVER_INFO_1581* PSERVER_INFO_1581, LPSERVER_INFO_1581; struct SERVER_INFO_1582 { - DWORD sv1582_maxfreepagedpoolchunks; + DWORD sv1582_maxfreepagedpoolchunks; } alias SERVER_INFO_1582* PSERVER_INFO_1582, LPSERVER_INFO_1582; struct SERVER_INFO_1583 { - DWORD sv1583_minpagedpoolchunksize; + DWORD sv1583_minpagedpoolchunksize; } alias SERVER_INFO_1583* PSERVER_INFO_1583, LPSERVER_INFO_1583; struct SERVER_INFO_1584 { - DWORD sv1584_maxpagedpoolchunksize; + DWORD sv1584_maxpagedpoolchunksize; } alias SERVER_INFO_1584* PSERVER_INFO_1584, LPSERVER_INFO_1584; struct SERVER_INFO_1585 { - BOOL sv1585_sendsfrompreferredprocessor; + BOOL sv1585_sendsfrompreferredprocessor; } alias SERVER_INFO_1585* PSERVER_INFO_1585, LPSERVER_INFO_1585; struct SERVER_INFO_1586 { - BOOL sv1586_maxthreadsperqueue; + BOOL sv1586_maxthreadsperqueue; } alias SERVER_INFO_1586* PSERVER_INFO_1586, LPSERVER_INFO_1586; struct SERVER_TRANSPORT_INFO_0 { - DWORD svti0_numberofvcs; - LPWSTR svti0_transportname; - PBYTE svti0_transportaddress; - DWORD svti0_transportaddresslength; - LPWSTR svti0_networkaddress; + DWORD svti0_numberofvcs; + LPWSTR svti0_transportname; + PBYTE svti0_transportaddress; + DWORD svti0_transportaddresslength; + LPWSTR svti0_networkaddress; } alias SERVER_TRANSPORT_INFO_0* PSERVER_TRANSPORT_INFO_0, LPSERVER_TRANSPORT_INFO_0; diff --git a/src/core/sys/windows/lmshare.d b/src/core/sys/windows/lmshare.d index bba5d9b6af..bfd951cd4e 100644 --- a/src/core/sys/windows/lmshare.d +++ b/src/core/sys/windows/lmshare.d @@ -48,132 +48,132 @@ const PERM_FILE_WRITE = 2; const PERM_FILE_CREATE = 4; struct FILE_INFO_2 { - DWORD fi2_id; + DWORD fi2_id; } alias FILE_INFO_2* PFILE_INFO_2, LPFILE_INFO_2; struct FILE_INFO_3 { - DWORD fi3_id; - DWORD fi3_permissions; - DWORD fi3_num_locks; - LPTSTR fi3_pathname; - LPTSTR fi3_username; + DWORD fi3_id; + DWORD fi3_permissions; + DWORD fi3_num_locks; + LPTSTR fi3_pathname; + LPTSTR fi3_username; } alias FILE_INFO_3* PFILE_INFO_3, LPFILE_INFO_3; struct SHARE_INFO_0 { - LPTSTR shi0_netname; + LPTSTR shi0_netname; } alias SHARE_INFO_0* PSHARE_INFO_0, LPSHARE_INFO_0; struct SHARE_INFO_1 { - LPTSTR shi1_netname; - DWORD shi1_type; - LPTSTR shi1_remark; + LPTSTR shi1_netname; + DWORD shi1_type; + LPTSTR shi1_remark; } alias SHARE_INFO_1* PSHARE_INFO_1, LPSHARE_INFO_1; struct SHARE_INFO_2 { - LPTSTR shi2_netname; - DWORD shi2_type; - LPTSTR shi2_remark; - DWORD shi2_permissions; - DWORD shi2_max_uses; - DWORD shi2_current_uses; - LPTSTR shi2_path; - LPTSTR shi2_passwd; + LPTSTR shi2_netname; + DWORD shi2_type; + LPTSTR shi2_remark; + DWORD shi2_permissions; + DWORD shi2_max_uses; + DWORD shi2_current_uses; + LPTSTR shi2_path; + LPTSTR shi2_passwd; } alias SHARE_INFO_2* PSHARE_INFO_2, LPSHARE_INFO_2; struct SHARE_INFO_502 { - LPTSTR shi502_netname; - DWORD shi502_type; - LPTSTR shi502_remark; - DWORD shi502_permissions; - DWORD shi502_max_uses; - DWORD shi502_current_uses; - LPTSTR shi502_path; - LPTSTR shi502_passwd; - DWORD shi502_reserved; - PSECURITY_DESCRIPTOR shi502_security_descriptor; + LPTSTR shi502_netname; + DWORD shi502_type; + LPTSTR shi502_remark; + DWORD shi502_permissions; + DWORD shi502_max_uses; + DWORD shi502_current_uses; + LPTSTR shi502_path; + LPTSTR shi502_passwd; + DWORD shi502_reserved; + PSECURITY_DESCRIPTOR shi502_security_descriptor; } alias SHARE_INFO_502* PSHARE_INFO_502, LPSHARE_INFO_502; struct SHARE_INFO_1004 { - LPTSTR shi1004_remark; + LPTSTR shi1004_remark; } alias SHARE_INFO_1004* PSHARE_INFO_1004, LPSHARE_INFO_1004; struct SHARE_INFO_1006 { - DWORD shi1006_max_uses; + DWORD shi1006_max_uses; } alias SHARE_INFO_1006* PSHARE_INFO_1006, LPSHARE_INFO_1006; struct SHARE_INFO_1501 { - DWORD shi1501_reserved; - PSECURITY_DESCRIPTOR shi1501_security_descriptor; + DWORD shi1501_reserved; + PSECURITY_DESCRIPTOR shi1501_security_descriptor; } alias SHARE_INFO_1501* PSHARE_INFO_1501, LPSHARE_INFO_1501; struct SESSION_INFO_0 { - LPWSTR sesi0_cname; + LPWSTR sesi0_cname; } alias SESSION_INFO_0* PSESSION_INFO_0, LPSESSION_INFO_0; struct SESSION_INFO_1 { - LPTSTR sesi1_cname; - LPTSTR sesi1_username; - DWORD sesi1_num_opens; - DWORD sesi1_time; - DWORD sesi1_idle_time; - DWORD sesi1_user_flags; + LPTSTR sesi1_cname; + LPTSTR sesi1_username; + DWORD sesi1_num_opens; + DWORD sesi1_time; + DWORD sesi1_idle_time; + DWORD sesi1_user_flags; } alias SESSION_INFO_1* PSESSION_INFO_1, LPSESSION_INFO_1; struct SESSION_INFO_2 { - LPTSTR sesi2_cname; - LPTSTR sesi2_username; - DWORD sesi2_num_opens; - DWORD sesi2_time; - DWORD sesi2_idle_time; - DWORD sesi2_user_flags; - LPWSTR sesi2_cltype_name; + LPTSTR sesi2_cname; + LPTSTR sesi2_username; + DWORD sesi2_num_opens; + DWORD sesi2_time; + DWORD sesi2_idle_time; + DWORD sesi2_user_flags; + LPWSTR sesi2_cltype_name; } alias SESSION_INFO_2* PSESSION_INFO_2, LPSESSION_INFO_2; struct SESSION_INFO_10 { - LPWSTR sesi10_cname; - LPWSTR sesi10_username; - DWORD sesi10_time; - DWORD sesi10_idle_time; + LPWSTR sesi10_cname; + LPWSTR sesi10_username; + DWORD sesi10_time; + DWORD sesi10_idle_time; } alias SESSION_INFO_10* PSESSION_INFO_10, LPSESSION_INFO_10; struct SESSION_INFO_502 { - LPWSTR sesi502_cname; - LPWSTR sesi502_username; - DWORD sesi502_num_opens; - DWORD sesi502_time; - DWORD sesi502_idle_time; - DWORD sesi502_user_flags; - LPWSTR sesi502_cltype_name; - LPWSTR sesi502_transport; + LPWSTR sesi502_cname; + LPWSTR sesi502_username; + DWORD sesi502_num_opens; + DWORD sesi502_time; + DWORD sesi502_idle_time; + DWORD sesi502_user_flags; + LPWSTR sesi502_cltype_name; + LPWSTR sesi502_transport; } alias SESSION_INFO_502* PSESSION_INFO_502, LPSESSION_INFO_502; struct CONNECTION_INFO_0 { - DWORD coni0_id; + DWORD coni0_id; } alias CONNECTION_INFO_0* PCONNECTION_INFO_0, LPCONNECTION_INFO_0; struct CONNECTION_INFO_1 { - DWORD coni1_id; - DWORD coni1_type; - DWORD coni1_num_opens; - DWORD coni1_num_users; - DWORD coni1_time; - LPWSTR coni1_username; - LPWSTR coni1_netname; + DWORD coni1_id; + DWORD coni1_type; + DWORD coni1_num_opens; + DWORD coni1_num_users; + DWORD coni1_time; + LPWSTR coni1_username; + LPWSTR coni1_netname; } alias CONNECTION_INFO_1* PCONNECTION_INFO_1, LPCONNECTION_INFO_1; diff --git a/src/core/sys/windows/lmsname.d b/src/core/sys/windows/lmsname.d index 1645a5e5e2..895299f0ca 100644 --- a/src/core/sys/windows/lmsname.d +++ b/src/core/sys/windows/lmsname.d @@ -11,54 +11,54 @@ module core.sys.windows.lmsname; private import core.sys.windows.windef; const TCHAR[] - SERVICE_WORKSTATION = "LanmanWorkstation", - SERVICE_LM20_WORKSTATION = "WORKSTATION", - WORKSTATION_DISPLAY_NAME = "Workstation", - SERVICE_SERVER = "LanmanServer", - SERVICE_LM20_SERVER = "SERVER", - SERVER_DISPLAY_NAME = "Server", - SERVICE_BROWSER = "BROWSER", - SERVICE_LM20_BROWSER = SERVICE_BROWSER, - SERVICE_MESSENGER = "MESSENGER", - SERVICE_LM20_MESSENGER = SERVICE_MESSENGER, - SERVICE_NETRUN = "NETRUN", - SERVICE_LM20_NETRUN = SERVICE_NETRUN, - SERVICE_SPOOLER = "SPOOLER", - SERVICE_LM20_SPOOLER = SERVICE_SPOOLER, - SERVICE_ALERTER = "ALERTER", - SERVICE_LM20_ALERTER = SERVICE_ALERTER, - SERVICE_NETLOGON = "NETLOGON", - SERVICE_LM20_NETLOGON = SERVICE_NETLOGON, - SERVICE_NETPOPUP = "NETPOPUP", - SERVICE_LM20_NETPOPUP = SERVICE_NETPOPUP, - SERVICE_SQLSERVER = "SQLSERVER", - SERVICE_LM20_SQLSERVER = SERVICE_SQLSERVER, - SERVICE_REPL = "REPLICATOR", - SERVICE_LM20_REPL = SERVICE_REPL, - SERVICE_RIPL = "REMOTEBOOT", - SERVICE_LM20_RIPL = SERVICE_RIPL, - SERVICE_TIMESOURCE = "TIMESOURCE", - SERVICE_LM20_TIMESOURCE = SERVICE_TIMESOURCE, - SERVICE_AFP = "AFP", - SERVICE_LM20_AFP = SERVICE_AFP, - SERVICE_UPS = "UPS", - SERVICE_LM20_UPS = SERVICE_UPS, - SERVICE_XACTSRV = "XACTSRV", - SERVICE_LM20_XACTSRV = SERVICE_XACTSRV, - SERVICE_TCPIP = "TCPIP", - SERVICE_LM20_TCPIP = SERVICE_TCPIP, - SERVICE_NBT = "NBT", - SERVICE_LM20_NBT = SERVICE_NBT, - SERVICE_LMHOSTS = "LMHOSTS", - SERVICE_LM20_LMHOSTS = SERVICE_LMHOSTS, - SERVICE_TELNET = "Telnet", - SERVICE_LM20_TELNET = SERVICE_TELNET, - SERVICE_SCHEDULE = "Schedule", - SERVICE_LM20_SCHEDULE = SERVICE_SCHEDULE, - SERVICE_NTLMSSP = "NtLmSsp", - SERVICE_DHCP = "DHCP", - SERVICE_LM20_DHCP = SERVICE_DHCP, - SERVICE_NWSAP = "NwSapAgent", - SERVICE_LM20_NWSAP = SERVICE_NWSAP, - NWSAP_DISPLAY_NAME = "NW Sap Agent", - SERVICE_NWCS = "NWCWorkstation"; + SERVICE_WORKSTATION = "LanmanWorkstation", + SERVICE_LM20_WORKSTATION = "WORKSTATION", + WORKSTATION_DISPLAY_NAME = "Workstation", + SERVICE_SERVER = "LanmanServer", + SERVICE_LM20_SERVER = "SERVER", + SERVER_DISPLAY_NAME = "Server", + SERVICE_BROWSER = "BROWSER", + SERVICE_LM20_BROWSER = SERVICE_BROWSER, + SERVICE_MESSENGER = "MESSENGER", + SERVICE_LM20_MESSENGER = SERVICE_MESSENGER, + SERVICE_NETRUN = "NETRUN", + SERVICE_LM20_NETRUN = SERVICE_NETRUN, + SERVICE_SPOOLER = "SPOOLER", + SERVICE_LM20_SPOOLER = SERVICE_SPOOLER, + SERVICE_ALERTER = "ALERTER", + SERVICE_LM20_ALERTER = SERVICE_ALERTER, + SERVICE_NETLOGON = "NETLOGON", + SERVICE_LM20_NETLOGON = SERVICE_NETLOGON, + SERVICE_NETPOPUP = "NETPOPUP", + SERVICE_LM20_NETPOPUP = SERVICE_NETPOPUP, + SERVICE_SQLSERVER = "SQLSERVER", + SERVICE_LM20_SQLSERVER = SERVICE_SQLSERVER, + SERVICE_REPL = "REPLICATOR", + SERVICE_LM20_REPL = SERVICE_REPL, + SERVICE_RIPL = "REMOTEBOOT", + SERVICE_LM20_RIPL = SERVICE_RIPL, + SERVICE_TIMESOURCE = "TIMESOURCE", + SERVICE_LM20_TIMESOURCE = SERVICE_TIMESOURCE, + SERVICE_AFP = "AFP", + SERVICE_LM20_AFP = SERVICE_AFP, + SERVICE_UPS = "UPS", + SERVICE_LM20_UPS = SERVICE_UPS, + SERVICE_XACTSRV = "XACTSRV", + SERVICE_LM20_XACTSRV = SERVICE_XACTSRV, + SERVICE_TCPIP = "TCPIP", + SERVICE_LM20_TCPIP = SERVICE_TCPIP, + SERVICE_NBT = "NBT", + SERVICE_LM20_NBT = SERVICE_NBT, + SERVICE_LMHOSTS = "LMHOSTS", + SERVICE_LM20_LMHOSTS = SERVICE_LMHOSTS, + SERVICE_TELNET = "Telnet", + SERVICE_LM20_TELNET = SERVICE_TELNET, + SERVICE_SCHEDULE = "Schedule", + SERVICE_LM20_SCHEDULE = SERVICE_SCHEDULE, + SERVICE_NTLMSSP = "NtLmSsp", + SERVICE_DHCP = "DHCP", + SERVICE_LM20_DHCP = SERVICE_DHCP, + SERVICE_NWSAP = "NwSapAgent", + SERVICE_LM20_NWSAP = SERVICE_NWSAP, + NWSAP_DISPLAY_NAME = "NW Sap Agent", + SERVICE_NWCS = "NWCWorkstation"; diff --git a/src/core/sys/windows/lmstats.d b/src/core/sys/windows/lmstats.d index c4309bd71a..7932e1d9cf 100644 --- a/src/core/sys/windows/lmstats.d +++ b/src/core/sys/windows/lmstats.d @@ -12,28 +12,28 @@ pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; const ULONG - STATSOPT_CLR = 1, - STATS_NO_VALUE = -1, - STATS_OVERFLOW = -2; + STATSOPT_CLR = 1, + STATS_NO_VALUE = -1, + STATS_OVERFLOW = -2; struct STAT_SERVER_0{ - DWORD sts0_start; - DWORD sts0_fopens; - DWORD sts0_devopens; - DWORD sts0_jobsqueued; - DWORD sts0_sopens; - DWORD sts0_stimedout; - DWORD sts0_serrorout; - DWORD sts0_pwerrors; - DWORD sts0_permerrors; - DWORD sts0_syserrors; - DWORD sts0_bytessent_low; - DWORD sts0_bytessent_high; - DWORD sts0_bytesrcvd_low; - DWORD sts0_bytesrcvd_high; - DWORD sts0_avresponse; - DWORD sts0_reqbufneed; - DWORD sts0_bigbufneed; + DWORD sts0_start; + DWORD sts0_fopens; + DWORD sts0_devopens; + DWORD sts0_jobsqueued; + DWORD sts0_sopens; + DWORD sts0_stimedout; + DWORD sts0_serrorout; + DWORD sts0_pwerrors; + DWORD sts0_permerrors; + DWORD sts0_syserrors; + DWORD sts0_bytessent_low; + DWORD sts0_bytessent_high; + DWORD sts0_bytesrcvd_low; + DWORD sts0_bytesrcvd_high; + DWORD sts0_avresponse; + DWORD sts0_reqbufneed; + DWORD sts0_bigbufneed; } alias STAT_SERVER_0* PSTAT_SERVER_0, LPSTAT_SERVER_0; @@ -73,46 +73,46 @@ alias STAT_SERVER_0* PSTAT_SERVER_0, LPSTAT_SERVER_0; // #else struct STAT_WORKSTATION_0{ - LARGE_INTEGER StatisticsStartTime; - LARGE_INTEGER BytesReceived; - LARGE_INTEGER SmbsReceived; - LARGE_INTEGER PagingReadBytesRequested; - LARGE_INTEGER NonPagingReadBytesRequested; - LARGE_INTEGER CacheReadBytesRequested; - LARGE_INTEGER NetworkReadBytesRequested; - LARGE_INTEGER BytesTransmitted; - LARGE_INTEGER SmbsTransmitted; - LARGE_INTEGER PagingWriteBytesRequested; - LARGE_INTEGER NonPagingWriteBytesRequested; - LARGE_INTEGER CacheWriteBytesRequested; - LARGE_INTEGER NetworkWriteBytesRequested; - DWORD InitiallyFailedOperations; - DWORD FailedCompletionOperations; - DWORD ReadOperations; - DWORD RandomReadOperations; - DWORD ReadSmbs; - DWORD LargeReadSmbs; - DWORD SmallReadSmbs; - DWORD WriteOperations; - DWORD RandomWriteOperations; - DWORD WriteSmbs; - DWORD LargeWriteSmbs; - DWORD SmallWriteSmbs; - DWORD RawReadsDenied; - DWORD RawWritesDenied; - DWORD NetworkErrors; - DWORD Sessions; - DWORD FailedSessions; - DWORD Reconnects; - DWORD CoreConnects; - DWORD Lanman20Connects; - DWORD Lanman21Connects; - DWORD LanmanNtConnects; - DWORD ServerDisconnects; - DWORD HungSessions; - DWORD UseCount; - DWORD FailedUseCount; - DWORD CurrentCommands; + LARGE_INTEGER StatisticsStartTime; + LARGE_INTEGER BytesReceived; + LARGE_INTEGER SmbsReceived; + LARGE_INTEGER PagingReadBytesRequested; + LARGE_INTEGER NonPagingReadBytesRequested; + LARGE_INTEGER CacheReadBytesRequested; + LARGE_INTEGER NetworkReadBytesRequested; + LARGE_INTEGER BytesTransmitted; + LARGE_INTEGER SmbsTransmitted; + LARGE_INTEGER PagingWriteBytesRequested; + LARGE_INTEGER NonPagingWriteBytesRequested; + LARGE_INTEGER CacheWriteBytesRequested; + LARGE_INTEGER NetworkWriteBytesRequested; + DWORD InitiallyFailedOperations; + DWORD FailedCompletionOperations; + DWORD ReadOperations; + DWORD RandomReadOperations; + DWORD ReadSmbs; + DWORD LargeReadSmbs; + DWORD SmallReadSmbs; + DWORD WriteOperations; + DWORD RandomWriteOperations; + DWORD WriteSmbs; + DWORD LargeWriteSmbs; + DWORD SmallWriteSmbs; + DWORD RawReadsDenied; + DWORD RawWritesDenied; + DWORD NetworkErrors; + DWORD Sessions; + DWORD FailedSessions; + DWORD Reconnects; + DWORD CoreConnects; + DWORD Lanman20Connects; + DWORD Lanman21Connects; + DWORD LanmanNtConnects; + DWORD ServerDisconnects; + DWORD HungSessions; + DWORD UseCount; + DWORD FailedUseCount; + DWORD CurrentCommands; } alias STAT_WORKSTATION_0* PSTAT_WORKSTATION_0, LPSTAT_WORKSTATION_0; diff --git a/src/core/sys/windows/lmsvc.d b/src/core/sys/windows/lmsvc.d index 63ac6f44ac..eef4d92a1e 100644 --- a/src/core/sys/windows/lmsvc.d +++ b/src/core/sys/windows/lmsvc.d @@ -114,39 +114,39 @@ const SERVICE_UIC_M_LSA_MACHINE_ACCT = SERVICE2_BASE+1; const SERVICE_UIC_M_DATABASE_ERROR = SERVICE2_BASE+2; struct SERVICE_INFO_0 { - LPWSTR svci0_name; + LPWSTR svci0_name; } alias SERVICE_INFO_0* PSERVICE_INFO_0, LPSERVICE_INFO_0; struct SERVICE_INFO_1 { - LPWSTR svci1_name; - DWORD svci1_status; - DWORD svci1_code; - DWORD svci1_pid; + LPWSTR svci1_name; + DWORD svci1_status; + DWORD svci1_code; + DWORD svci1_pid; } alias SERVICE_INFO_1* PSERVICE_INFO_1, LPSERVICE_INFO_1; struct SERVICE_INFO_2 { - LPWSTR svci2_name; - DWORD svci2_status; - DWORD svci2_code; - DWORD svci2_pid; - LPWSTR svci2_text; - DWORD svci2_specific_error; - LPWSTR svci2_display_name; + LPWSTR svci2_name; + DWORD svci2_status; + DWORD svci2_code; + DWORD svci2_pid; + LPWSTR svci2_text; + DWORD svci2_specific_error; + LPWSTR svci2_display_name; } alias SERVICE_INFO_2* PSERVICE_INFO_2, LPSERVICE_INFO_2; extern (Windows) { - deprecated { - NET_API_STATUS NetServiceControl(LPCWSTR, LPCWSTR, DWORD, DWORD, - PBYTE*); - NET_API_STATUS NetServiceEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, - PDWORD, PDWORD); - NET_API_STATUS NetServiceGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); - NET_API_STATUS NetServiceInstall(LPCWSTR, LPCWSTR, DWORD, LPCWSTR*, - PBYTE*); - } + deprecated { + NET_API_STATUS NetServiceControl(LPCWSTR, LPCWSTR, DWORD, DWORD, + PBYTE*); + NET_API_STATUS NetServiceEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, + PDWORD, PDWORD); + NET_API_STATUS NetServiceGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetServiceInstall(LPCWSTR, LPCWSTR, DWORD, LPCWSTR*, + PBYTE*); + } } //MACRO #define SERVICE_IP_CODE(t, n) ((long)SERVICE_IP_QUERY_HINT|(long)(n|(t<= 0x500) { - enum { - /* WinNT5+: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_MAXDG = 0x7009, - SO_MAXPATHDG = 0x700A, - } + enum { + /* WinNT5+: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_MAXDG = 0x7009, + SO_MAXPATHDG = 0x700A, + } //} enum { - /* WinNT4+: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options_for_windows_nt_4_0_2.htm */ - SO_CONNDATA = 0x7000, - SO_CONNOPT = 0x7001, - SO_DISCDATA = 0x7002, - SO_DISCOPT = 0x7003, - SO_CONNDATALEN = 0x7004, - SO_CONNOPTLEN = 0x7005, - SO_DISCDATALEN = 0x7006, - SO_DISCOPTLEN = 0x7007, - - /* WinNT4: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_UPDATE_ACCEPT_CONTENT = 0x700B, + /* WinNT4+: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options_for_windows_nt_4_0_2.htm */ + SO_CONNDATA = 0x7000, + SO_CONNOPT = 0x7001, + SO_DISCDATA = 0x7002, + SO_DISCOPT = 0x7003, + SO_CONNDATALEN = 0x7004, + SO_CONNOPTLEN = 0x7005, + SO_DISCDATALEN = 0x7006, + SO_DISCOPTLEN = 0x7007, + + /* WinNT4: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_UPDATE_ACCEPT_CONTENT = 0x700B, } enum { - /* Win95+, WinNT4+ but apparently shouldn't used: mark as deprecated? - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_OPENTYPE = 0x7008, - - /* Win95+; these two are passed to the SO_OPENTYPE option as arguments, - so would they be deprecated as well? - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_SYNCHRONOUS_ALERT = 0x0010, - SO_SYNCHRONOUS_NONALERT = 0x0020, - - /* Win95: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_CONNECT_TIME = 0x700C, + /* Win95+, WinNT4+ but apparently shouldn't used: mark as deprecated? + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_OPENTYPE = 0x7008, + + /* Win95+; these two are passed to the SO_OPENTYPE option as arguments, + so would they be deprecated as well? + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_SYNCHRONOUS_ALERT = 0x0010, + SO_SYNCHRONOUS_NONALERT = 0x0020, + + /* Win95: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_CONNECT_TIME = 0x700C, } enum { - TCP_BSDURGENT = 0x7000, + TCP_BSDURGENT = 0x7000, } /* These *appear* to be constants for passing to the TransmitFile / TransmitPackets functions, which are available in WinNT3.51+ ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ enum { - TF_DISCONNECT = 1, - TF_REUSE_SOCKET = 2, - TF_WRITE_BEHIND = 4, - TF_USE_DEFAULT_WORKER = 0, - TF_USE_SYSTEM_THREAD = 16, - TF_USE_KERNEL_APC = 32 + TF_DISCONNECT = 1, + TF_REUSE_SOCKET = 2, + TF_WRITE_BEHIND = 4, + TF_USE_DEFAULT_WORKER = 0, + TF_USE_SYSTEM_THREAD = 16, + TF_USE_KERNEL_APC = 32 } /* Win95+, WinNT3.51+ ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_file_buffers_2.htm */ struct TRANSMIT_FILE_BUFFERS { - PVOID Head; - DWORD HeadLength; - PVOID Tail; - DWORD TailLength; + PVOID Head; + DWORD HeadLength; + PVOID Tail; + DWORD TailLength; } alias TRANSMIT_FILE_BUFFERS* PTRANSMIT_FILE_BUFFERS, LPTRANSMIT_FILE_BUFFERS; extern(Windows) { - /* Win95+, WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvex_2.htm */ - int WSARecvEx(SOCKET, char*, int, int*); + /* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvex_2.htm */ + int WSARecvEx(SOCKET, char*, int, int*); - /* Win95+, WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/getacceptexSOCKADDRs_2.htm */ - VOID GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, SOCKADDR**, LPINT, SOCKADDR**, LPINT); + /* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/getacceptexSOCKADDRs_2.htm */ + VOID GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, SOCKADDR**, LPINT, SOCKADDR**, LPINT); - /* WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ - BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD); + /* WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ + BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD); - /* WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */ - alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX; - const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; + /* WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */ + alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX; + const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; - alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX; - const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; + alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX; + const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; } version(Win32_Winsock1) { } else { - static if (_WIN32_WINNT > 0x501) { - /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT - * structure below, so I've given them the same minimum version - */ - enum { - TP_ELEMENT_FILE = 1, - TP_ELEMENT_MEMORY = 2, - TP_ELEMENT_EOP = 4 - } - - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm - */ - struct TRANSMIT_PACKETS_ELEMENT { - ULONG dwElFlags; - ULONG cLength; - union { - struct { - LARGE_INTEGER nFileOffset; - HANDLE hFile; - } - PVOID pBuffer; - } - } - - /* WinXP+, Server2003+: - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm - */ - struct WSAMSG { - LPSOCKADDR name; - INT namelen; - LPWSABUF lpBuffers; - DWORD dwBufferCount; - WSABUF Control; - DWORD dwFlags; - } - - alias WSAMSG* PWSAMSG, LPWSAMSG; - - /* According to MSDN docs, the WSAMSG.Control buffer starts with a - cmsghdr header of the following form. See also RFC 2292. */ - /* DK: Confirmed. So I suppose these should get the same version as - WSAMSG... */ - struct WSACMSGHDR { - UINT cmsg_len; - INT cmsg_level; - INT cmsg_type; - // followed by UCHAR cmsg_data[]; - } - - /* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */ - /* DK: MinGW doesn't define these, and neither does the MSDN docs. Might have - to actually look up RFC 2292... */ - /+ - #if 0 - #define WSA_CMSG_FIRSTHDR(mhdr) - #define WSA_CMSG_NXTHDR(mhdr, cmsg) - #define WSA_CMSG_SPACE(length) - #define WSA_CMSG_LEN(length) - #endif - +/ - - extern(Windows) - { - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm - */ - BOOL DisconnectEx(SOCKET, LPOVERLAPPED, DWORD, DWORD); - - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm - */ - int WSARecvMsg(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); - } - } + static if (_WIN32_WINNT > 0x501) { + /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT + * structure below, so I've given them the same minimum version + */ + enum { + TP_ELEMENT_FILE = 1, + TP_ELEMENT_MEMORY = 2, + TP_ELEMENT_EOP = 4 + } + + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm + */ + struct TRANSMIT_PACKETS_ELEMENT { + ULONG dwElFlags; + ULONG cLength; + union { + struct { + LARGE_INTEGER nFileOffset; + HANDLE hFile; + } + PVOID pBuffer; + } + } + + /* WinXP+, Server2003+: + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm + */ + struct WSAMSG { + LPSOCKADDR name; + INT namelen; + LPWSABUF lpBuffers; + DWORD dwBufferCount; + WSABUF Control; + DWORD dwFlags; + } + + alias WSAMSG* PWSAMSG, LPWSAMSG; + + /* According to MSDN docs, the WSAMSG.Control buffer starts with a + cmsghdr header of the following form. See also RFC 2292. */ + /* DK: Confirmed. So I suppose these should get the same version as + WSAMSG... */ + struct WSACMSGHDR { + UINT cmsg_len; + INT cmsg_level; + INT cmsg_type; + // followed by UCHAR cmsg_data[]; + } + + /* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */ + /* DK: MinGW doesn't define these, and neither does the MSDN docs. Might have + to actually look up RFC 2292... */ + /+ + #if 0 + #define WSA_CMSG_FIRSTHDR(mhdr) + #define WSA_CMSG_NXTHDR(mhdr, cmsg) + #define WSA_CMSG_SPACE(length) + #define WSA_CMSG_LEN(length) + #endif + +/ + + extern(Windows) + { + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm + */ + BOOL DisconnectEx(SOCKET, LPOVERLAPPED, DWORD, DWORD); + + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm + */ + int WSARecvMsg(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); + } + } } diff --git a/src/core/sys/windows/nb30.d b/src/core/sys/windows/nb30.d index 10664543fd..756de0c6a3 100644 --- a/src/core/sys/windows/nb30.d +++ b/src/core/sys/windows/nb30.d @@ -12,224 +12,224 @@ module core.sys.windows.nb30; private import core.sys.windows.windef; const size_t - NCBNAMSZ = 16, - MAX_LANA = 254; + NCBNAMSZ = 16, + MAX_LANA = 254; // FIXME: are these really two sets of constants? enum : UCHAR { - REGISTERING = 0, - REGISTERED = 4, - DEREGISTERED, - DUPLICATE, - DUPLICATE_DEREG, // = 7 - UNIQUE_NAME = 0, - GROUP_NAME = 0x80, - NAME_FLAGS_MASK = 0x87 + REGISTERING = 0, + REGISTERED = 4, + DEREGISTERED, + DUPLICATE, + DUPLICATE_DEREG, // = 7 + UNIQUE_NAME = 0, + GROUP_NAME = 0x80, + NAME_FLAGS_MASK = 0x87 } enum : UCHAR { - LISTEN_OUTSTANDING = 1, - CALL_PENDING, - SESSION_ESTABLISHED, - HANGUP_PENDING, - HANGUP_COMPLETE, - SESSION_ABORTED // = 6 + LISTEN_OUTSTANDING = 1, + CALL_PENDING, + SESSION_ESTABLISHED, + HANGUP_PENDING, + HANGUP_COMPLETE, + SESSION_ABORTED // = 6 } const char[4] - ALL_TRANSPORTS = "M\0\0\0", - MS_NBF = "MNBF"; + ALL_TRANSPORTS = "M\0\0\0", + MS_NBF = "MNBF"; enum : UCHAR { - NCBCALL = 0x10, - NCBLISTEN, - NCBHANGUP, // = 0x12 - NCBSEND = 0x14, - NCBRECV, - NCBRECVANY, - NCBCHAINSEND, // = 0x17 - NCBDGSEND = 0x20, - NCBDGRECV, - NCBDGSENDBC, - NCBDGRECVBC, // = 0x23, - NCBADDNAME = 0x30, - NCBDELNAME, - NCBRESET, - NCBASTAT, - NCBSSTAT, - NCBCANCEL, - NCBADDGRNAME, - NCBENUM, // = 0x37 - NCBUNLINK = 0x70, - NCBSENDNA, - NCBCHAINSENDNA, - NCBLANSTALERT, // = 0x73 - NCBACTION = 0x77, - NCBFINDNAME, - NCBTRACE // = 0x79 + NCBCALL = 0x10, + NCBLISTEN, + NCBHANGUP, // = 0x12 + NCBSEND = 0x14, + NCBRECV, + NCBRECVANY, + NCBCHAINSEND, // = 0x17 + NCBDGSEND = 0x20, + NCBDGRECV, + NCBDGSENDBC, + NCBDGRECVBC, // = 0x23, + NCBADDNAME = 0x30, + NCBDELNAME, + NCBRESET, + NCBASTAT, + NCBSSTAT, + NCBCANCEL, + NCBADDGRNAME, + NCBENUM, // = 0x37 + NCBUNLINK = 0x70, + NCBSENDNA, + NCBCHAINSENDNA, + NCBLANSTALERT, // = 0x73 + NCBACTION = 0x77, + NCBFINDNAME, + NCBTRACE // = 0x79 } const UCHAR ASYNCH = 0x80; enum : UCHAR { - NRC_GOODRET = 0x00, - NRC_BUFLEN = 0x01, - NRC_ILLCMD = 0x03, - NRC_CMDTMO = 0x05, - NRC_INCOMP, - NRC_BADDR, - NRC_SNUMOUT, - NRC_NORES, - NRC_SCLOSED, - NRC_CMDCAN, // = 0x0b - NRC_DUPNAME = 0x0d, - NRC_NAMTFUL, - NRC_ACTSES, // = 0x0f, - NRC_LOCTFUL = 0x11, - NRC_REMTFUL, - NRC_ILLNN, - NRC_NOCALL, - NRC_NOWILD, - NRC_INUSE, - NRC_NAMERR, - NRC_SABORT, - NRC_NAMCONF, // = 0x19 - NRC_IFBUSY = 0x21, - NRC_TOOMANY, - NRC_BRIDGE, - NRC_CANOCCR, // = 0x24 - NRC_CANCEL = 0x26, - NRC_DUPENV = 0x30, - NRC_ENVNOTDEF = 0x34, - NRC_OSRESNOTAV, - NRC_MAXAPPS, - NRC_NOSAPS, - NRC_NORESOURCES, - NRC_INVADDRESS, // = 0x39 - NRC_INVDDID = 0x3B, - NRC_LOCKFAIL = 0x3C, - NRC_OPENERR = 0x3f, - NRC_SYSTEM = 0x40, - NRC_PENDING = 0xff + NRC_GOODRET = 0x00, + NRC_BUFLEN = 0x01, + NRC_ILLCMD = 0x03, + NRC_CMDTMO = 0x05, + NRC_INCOMP, + NRC_BADDR, + NRC_SNUMOUT, + NRC_NORES, + NRC_SCLOSED, + NRC_CMDCAN, // = 0x0b + NRC_DUPNAME = 0x0d, + NRC_NAMTFUL, + NRC_ACTSES, // = 0x0f, + NRC_LOCTFUL = 0x11, + NRC_REMTFUL, + NRC_ILLNN, + NRC_NOCALL, + NRC_NOWILD, + NRC_INUSE, + NRC_NAMERR, + NRC_SABORT, + NRC_NAMCONF, // = 0x19 + NRC_IFBUSY = 0x21, + NRC_TOOMANY, + NRC_BRIDGE, + NRC_CANOCCR, // = 0x24 + NRC_CANCEL = 0x26, + NRC_DUPENV = 0x30, + NRC_ENVNOTDEF = 0x34, + NRC_OSRESNOTAV, + NRC_MAXAPPS, + NRC_NOSAPS, + NRC_NORESOURCES, + NRC_INVADDRESS, // = 0x39 + NRC_INVDDID = 0x3B, + NRC_LOCKFAIL = 0x3C, + NRC_OPENERR = 0x3f, + NRC_SYSTEM = 0x40, + NRC_PENDING = 0xff } struct ACTION_HEADER { - union { - /* transport_id is defined as a ULONG, but both the above constants - * and the documented description suggest it should be a char[4] - */ - ULONG transport_id; - char[4] c_transport_id; - } - USHORT action_code; - USHORT reserved; + union { + /* transport_id is defined as a ULONG, but both the above constants + * and the documented description suggest it should be a char[4] + */ + ULONG transport_id; + char[4] c_transport_id; + } + USHORT action_code; + USHORT reserved; } alias ACTION_HEADER* PACTION_HEADER; struct ADAPTER_STATUS { - UCHAR[6] adapter_address; - UCHAR rev_major; - UCHAR reserved0; - UCHAR adapter_type; - UCHAR rev_minor; - WORD duration; - WORD frmr_recv; - WORD frmr_xmit; - WORD iframe_recv_err; - WORD xmit_aborts; - DWORD xmit_success; - DWORD recv_success; - WORD iframe_xmit_err; - WORD recv_buff_unavail; - WORD t1_timeouts; - WORD ti_timeouts; - DWORD reserved1; - WORD free_ncbs; - WORD max_cfg_ncbs; - WORD max_ncbs; - WORD xmit_buf_unavail; - WORD max_dgram_size; - WORD pending_sess; - WORD max_cfg_sess; - WORD max_sess; - WORD max_sess_pkt_size; - WORD name_count; + UCHAR[6] adapter_address; + UCHAR rev_major; + UCHAR reserved0; + UCHAR adapter_type; + UCHAR rev_minor; + WORD duration; + WORD frmr_recv; + WORD frmr_xmit; + WORD iframe_recv_err; + WORD xmit_aborts; + DWORD xmit_success; + DWORD recv_success; + WORD iframe_xmit_err; + WORD recv_buff_unavail; + WORD t1_timeouts; + WORD ti_timeouts; + DWORD reserved1; + WORD free_ncbs; + WORD max_cfg_ncbs; + WORD max_ncbs; + WORD xmit_buf_unavail; + WORD max_dgram_size; + WORD pending_sess; + WORD max_cfg_sess; + WORD max_sess; + WORD max_sess_pkt_size; + WORD name_count; } alias ADAPTER_STATUS* PADAPTER_STATUS; struct FIND_NAME_BUFFER { - /* From Win32 API docs - * - * length - * Specifies the length, in bytes, of the FIND_NAME_BUFFER - * structure. Although this structure always occupies 33 bytes, - * not all of the structure is necessarily valid. - * - * On this basis, should length be initialised? - */ - UCHAR length; - UCHAR access_control; - UCHAR frame_control; - UCHAR[6] destination_addr; - UCHAR[6] source_addr; - UCHAR[18] routing_info; + /* From Win32 API docs + * + * length + * Specifies the length, in bytes, of the FIND_NAME_BUFFER + * structure. Although this structure always occupies 33 bytes, + * not all of the structure is necessarily valid. + * + * On this basis, should length be initialised? + */ + UCHAR length; + UCHAR access_control; + UCHAR frame_control; + UCHAR[6] destination_addr; + UCHAR[6] source_addr; + UCHAR[18] routing_info; } alias FIND_NAME_BUFFER* PFIND_NAME_BUFFER; struct FIND_NAME_HEADER { - WORD node_count; - UCHAR reserved; - UCHAR unique_group; + WORD node_count; + UCHAR reserved; + UCHAR unique_group; } alias FIND_NAME_HEADER* PFIND_NAME_HEADER; struct LANA_ENUM { - UCHAR length; - UCHAR[MAX_LANA+1] lana; + UCHAR length; + UCHAR[MAX_LANA+1] lana; } alias LANA_ENUM* PLANA_ENUM; struct NAME_BUFFER { - UCHAR[NCBNAMSZ] name; - UCHAR name_num; - UCHAR name_flags; + UCHAR[NCBNAMSZ] name; + UCHAR name_num; + UCHAR name_flags; } alias NAME_BUFFER* PNAME_BUFFER; struct NCB { - UCHAR ncb_command; - UCHAR ncb_retcode; - UCHAR ncb_lsn; - UCHAR ncb_num; - PUCHAR ncb_buffer; - WORD ncb_length; - UCHAR[NCBNAMSZ] ncb_callname; - UCHAR[NCBNAMSZ] ncb_name; - UCHAR ncb_rto; - UCHAR ncb_sto; - extern (Windows) void function(NCB*) ncb_post; - UCHAR ncb_lana_num; - UCHAR ncb_cmd_cplt; - UCHAR[10] ncb_reserve; - HANDLE ncb_event; + UCHAR ncb_command; + UCHAR ncb_retcode; + UCHAR ncb_lsn; + UCHAR ncb_num; + PUCHAR ncb_buffer; + WORD ncb_length; + UCHAR[NCBNAMSZ] ncb_callname; + UCHAR[NCBNAMSZ] ncb_name; + UCHAR ncb_rto; + UCHAR ncb_sto; + extern (Windows) void function(NCB*) ncb_post; + UCHAR ncb_lana_num; + UCHAR ncb_cmd_cplt; + UCHAR[10] ncb_reserve; + HANDLE ncb_event; } alias NCB* PNCB; struct SESSION_BUFFER { - UCHAR lsn; - UCHAR state; - UCHAR[NCBNAMSZ] local_name; - UCHAR[NCBNAMSZ] remote_name; - UCHAR rcvs_outstanding; - UCHAR sends_outstanding; + UCHAR lsn; + UCHAR state; + UCHAR[NCBNAMSZ] local_name; + UCHAR[NCBNAMSZ] remote_name; + UCHAR rcvs_outstanding; + UCHAR sends_outstanding; } alias SESSION_BUFFER* PSESSION_BUFFER; struct SESSION_HEADER { - UCHAR sess_name; - UCHAR num_sess; - UCHAR rcv_dg_outstanding; - UCHAR rcv_any_outstanding; + UCHAR sess_name; + UCHAR num_sess; + UCHAR rcv_dg_outstanding; + UCHAR rcv_any_outstanding; } alias SESSION_HEADER* PSESSION_HEADER; diff --git a/src/core/sys/windows/nddeapi.d b/src/core/sys/windows/nddeapi.d index 4785f9af45..0565cc665a 100644 --- a/src/core/sys/windows/nddeapi.d +++ b/src/core/sys/windows/nddeapi.d @@ -26,43 +26,43 @@ const wchar SEP_WCHAR = ','; const wchar[] BAR_WCHAR = "|"; enum { - NDDE_NO_ERROR, - NDDE_ACCESS_DENIED, - NDDE_BUF_TOO_SMALL, - NDDE_ERROR_MORE_DATA, - NDDE_INVALID_SERVER, - NDDE_INVALID_SHARE, - NDDE_INVALID_PARAMETER, - NDDE_INVALID_LEVEL, - NDDE_INVALID_PASSWORD, - NDDE_INVALID_ITEMNAME, - NDDE_INVALID_TOPIC, - NDDE_INTERNAL_ERROR, - NDDE_OUT_OF_MEMORY, - NDDE_INVALID_APPNAME, - NDDE_NOT_IMPLEMENTED, - NDDE_SHARE_ALREADY_EXIST, - NDDE_SHARE_NOT_EXIST, - NDDE_INVALID_FILENAME, - NDDE_NOT_RUNNING, - NDDE_INVALID_WINDOW, - NDDE_INVALID_SESSION, - NDDE_INVALID_ITEM_LIST, - NDDE_SHARE_DATA_CORRUPTED, - NDDE_REGISTRY_ERROR, - NDDE_CANT_ACCESS_SERVER, - NDDE_INVALID_SPECIAL_COMMAND, - NDDE_INVALID_SECURITY_DESC, - NDDE_TRUST_SHARE_FAIL + NDDE_NO_ERROR, + NDDE_ACCESS_DENIED, + NDDE_BUF_TOO_SMALL, + NDDE_ERROR_MORE_DATA, + NDDE_INVALID_SERVER, + NDDE_INVALID_SHARE, + NDDE_INVALID_PARAMETER, + NDDE_INVALID_LEVEL, + NDDE_INVALID_PASSWORD, + NDDE_INVALID_ITEMNAME, + NDDE_INVALID_TOPIC, + NDDE_INTERNAL_ERROR, + NDDE_OUT_OF_MEMORY, + NDDE_INVALID_APPNAME, + NDDE_NOT_IMPLEMENTED, + NDDE_SHARE_ALREADY_EXIST, + NDDE_SHARE_NOT_EXIST, + NDDE_INVALID_FILENAME, + NDDE_NOT_RUNNING, + NDDE_INVALID_WINDOW, + NDDE_INVALID_SESSION, + NDDE_INVALID_ITEM_LIST, + NDDE_SHARE_DATA_CORRUPTED, + NDDE_REGISTRY_ERROR, + NDDE_CANT_ACCESS_SERVER, + NDDE_INVALID_SPECIAL_COMMAND, + NDDE_INVALID_SECURITY_DESC, + NDDE_TRUST_SHARE_FAIL } const size_t - MAX_NDDESHARENAME = 256, - MAX_DOMAINNAME = 15, - MAX_USERNAME = 15, - MAX_APPNAME = 255, - MAX_TOPICNAME = 255, - MAX_ITEMNAME = 255; + MAX_NDDESHARENAME = 256, + MAX_DOMAINNAME = 15, + MAX_USERNAME = 15, + MAX_APPNAME = 255, + MAX_TOPICNAME = 255, + MAX_ITEMNAME = 255; const NDDEF_NOPASSWORDPROMPT = 1; const NDDEF_NOCACHELOOKUP = 2; @@ -73,89 +73,89 @@ const SHARE_TYPE_NEW = 2; const SHARE_TYPE_STATIC = 4; const uint - NDDE_CMD_SHOW_MASK = 0x0000FFFF, - NDDE_TRUST_CMD_SHOW = 0x10000000, - NDDE_TRUST_SHARE_DEL = 0x20000000, - NDDE_TRUST_SHARE_INIT = 0x40000000, - NDDE_TRUST_SHARE_START = 0x80000000; + NDDE_CMD_SHOW_MASK = 0x0000FFFF, + NDDE_TRUST_CMD_SHOW = 0x10000000, + NDDE_TRUST_SHARE_DEL = 0x20000000, + NDDE_TRUST_SHARE_INIT = 0x40000000, + NDDE_TRUST_SHARE_START = 0x80000000; struct NDdeShareInfo_tag { - LONG lRevision; - LPTSTR lpszShareName; - LONG lShareType; - LPTSTR lpszAppTopicList; - LONG fSharedFlag; - LONG fService; - LONG fStartAppFlag; - LONG nCmdShow; - LONG[2] qModifyId; - LONG cNumItems; - LPTSTR lpszItemList; + LONG lRevision; + LPTSTR lpszShareName; + LONG lShareType; + LPTSTR lpszAppTopicList; + LONG fSharedFlag; + LONG fService; + LONG fStartAppFlag; + LONG nCmdShow; + LONG[2] qModifyId; + LONG cNumItems; + LPTSTR lpszItemList; } extern (C) { // huh? - NDdeShareInfo_tag NDDESHAREINFO; - NDdeShareInfo_tag* PNDDESHAREINFO; + NDdeShareInfo_tag NDDESHAREINFO; + NDdeShareInfo_tag* PNDDESHAREINFO; } extern (Windows) { - UINT NDdeGetErrorStringA(UINT, LPSTR, DWORD); - UINT NDdeGetErrorStringW(UINT, LPWSTR, DWORD); - UINT NDdeGetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, DWORD, PDWORD); - UINT NDdeGetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, DWORD, PDWORD); - UINT NDdeGetTrustedShareA(LPSTR, LPSTR, PDWORD, PDWORD, PDWORD); - UINT NDdeGetTrustedShareW(LPWSTR, LPWSTR, PDWORD, PDWORD, PDWORD); - BOOL NDdeIsValidShareNameA(LPSTR); - BOOL NDdeIsValidShareNameW(LPWSTR); - BOOL NDdeIsValidAppTopicListA(LPSTR); - BOOL NDdeIsValidAppTopicListW(LPWSTR); - UINT NDdeSetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - UINT NDdeSetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - UINT NDdeSetTrustedShareA(LPSTR, LPSTR, DWORD); - UINT NDdeSetTrustedShareW(LPWSTR, LPWSTR, DWORD); - UINT NDdeShareAddA(LPSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); - UINT NDdeShareAddW(LPWSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); - UINT NDdeShareDelA(LPSTR, LPSTR, UINT); - UINT NDdeShareDelW(LPWSTR, LPWSTR, UINT); - UINT NDdeShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); - UINT NDdeShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); - UINT NDdeShareGetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); - UINT NDdeShareGetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); - UINT NDdeShareSetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, WORD); - UINT NDdeShareSetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, WORD); - UINT NDdeTrustedShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); - UINT NDdeTrustedShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeGetErrorStringA(UINT, LPSTR, DWORD); + UINT NDdeGetErrorStringW(UINT, LPWSTR, DWORD); + UINT NDdeGetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, PDWORD); + UINT NDdeGetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, PDWORD); + UINT NDdeGetTrustedShareA(LPSTR, LPSTR, PDWORD, PDWORD, PDWORD); + UINT NDdeGetTrustedShareW(LPWSTR, LPWSTR, PDWORD, PDWORD, PDWORD); + BOOL NDdeIsValidShareNameA(LPSTR); + BOOL NDdeIsValidShareNameW(LPWSTR); + BOOL NDdeIsValidAppTopicListA(LPSTR); + BOOL NDdeIsValidAppTopicListW(LPWSTR); + UINT NDdeSetShareSecurityA(LPSTR, LPSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + UINT NDdeSetShareSecurityW(LPWSTR, LPWSTR, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + UINT NDdeSetTrustedShareA(LPSTR, LPSTR, DWORD); + UINT NDdeSetTrustedShareW(LPWSTR, LPWSTR, DWORD); + UINT NDdeShareAddA(LPSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); + UINT NDdeShareAddW(LPWSTR, UINT, PSECURITY_DESCRIPTOR, PBYTE, DWORD); + UINT NDdeShareDelA(LPSTR, LPSTR, UINT); + UINT NDdeShareDelW(LPWSTR, LPWSTR, UINT); + UINT NDdeShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeShareGetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); + UINT NDdeShareGetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, PDWORD, PWORD); + UINT NDdeShareSetInfoA(LPSTR, LPSTR, UINT, PBYTE, DWORD, WORD); + UINT NDdeShareSetInfoW(LPWSTR, LPWSTR, UINT, PBYTE, DWORD, WORD); + UINT NDdeTrustedShareEnumA(LPSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); + UINT NDdeTrustedShareEnumW(LPWSTR, UINT, PBYTE, DWORD, PDWORD, PDWORD); } version (Unicode) { - alias NDdeShareAddW NDdeShareAdd; - alias NDdeShareDelW NDdeShareDel; - alias NDdeSetShareSecurityW NDdeSetShareSecurity; - alias NDdeGetShareSecurityW NDdeGetShareSecurity; - alias NDdeShareEnumW NDdeShareEnum; - alias NDdeShareGetInfoW NDdeShareGetInfo; - alias NDdeShareSetInfoW NDdeShareSetInfo; - alias NDdeGetErrorStringW NDdeGetErrorString; - alias NDdeIsValidShareNameW NDdeIsValidShareName; - alias NDdeIsValidAppTopicListW NDdeIsValidAppTopicList; - alias NDdeSetTrustedShareW NDdeSetTrustedShare; - alias NDdeGetTrustedShareW NDdeGetTrustedShare; - alias NDdeTrustedShareEnumW NDdeTrustedShareEnum; + alias NDdeShareAddW NDdeShareAdd; + alias NDdeShareDelW NDdeShareDel; + alias NDdeSetShareSecurityW NDdeSetShareSecurity; + alias NDdeGetShareSecurityW NDdeGetShareSecurity; + alias NDdeShareEnumW NDdeShareEnum; + alias NDdeShareGetInfoW NDdeShareGetInfo; + alias NDdeShareSetInfoW NDdeShareSetInfo; + alias NDdeGetErrorStringW NDdeGetErrorString; + alias NDdeIsValidShareNameW NDdeIsValidShareName; + alias NDdeIsValidAppTopicListW NDdeIsValidAppTopicList; + alias NDdeSetTrustedShareW NDdeSetTrustedShare; + alias NDdeGetTrustedShareW NDdeGetTrustedShare; + alias NDdeTrustedShareEnumW NDdeTrustedShareEnum; } else { - alias NDdeShareAddA NDdeShareAdd; - alias NDdeShareDelA NDdeShareDel; - alias NDdeSetShareSecurityA NDdeSetShareSecurity; - alias NDdeGetShareSecurityA NDdeGetShareSecurity; - alias NDdeShareEnumA NDdeShareEnum; - alias NDdeShareGetInfoA NDdeShareGetInfo; - alias NDdeShareSetInfoA NDdeShareSetInfo; - alias NDdeGetErrorStringA NDdeGetErrorString; - alias NDdeIsValidShareNameA NDdeIsValidShareName; - alias NDdeIsValidAppTopicListA NDdeIsValidAppTopicList; - alias NDdeSetTrustedShareA NDdeSetTrustedShare; - alias NDdeGetTrustedShareA NDdeGetTrustedShare; - alias NDdeTrustedShareEnumA NDdeTrustedShareEnum; + alias NDdeShareAddA NDdeShareAdd; + alias NDdeShareDelA NDdeShareDel; + alias NDdeSetShareSecurityA NDdeSetShareSecurity; + alias NDdeGetShareSecurityA NDdeGetShareSecurity; + alias NDdeShareEnumA NDdeShareEnum; + alias NDdeShareGetInfoA NDdeShareGetInfo; + alias NDdeShareSetInfoA NDdeShareSetInfo; + alias NDdeGetErrorStringA NDdeGetErrorString; + alias NDdeIsValidShareNameA NDdeIsValidShareName; + alias NDdeIsValidAppTopicListA NDdeIsValidAppTopicList; + alias NDdeSetTrustedShareA NDdeSetTrustedShare; + alias NDdeGetTrustedShareA NDdeGetTrustedShare; + alias NDdeTrustedShareEnumA NDdeTrustedShareEnum; } diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d index f0050ba9aa..6ad9176186 100644 --- a/src/core/sys/windows/nspapi.d +++ b/src/core/sys/windows/nspapi.d @@ -14,133 +14,133 @@ private import core.sys.windows.basetyps, core.sys.windows.windef; // FIXME: check types of constants enum { - NS_ALL = 0, + NS_ALL = 0, - NS_SAP, - NS_NDS, - NS_PEER_BROWSE, + NS_SAP, + NS_NDS, + NS_PEER_BROWSE, - NS_TCPIP_LOCAL = 10, - NS_TCPIP_HOSTS, - NS_DNS, - NS_NETBT, - NS_WINS, + NS_TCPIP_LOCAL = 10, + NS_TCPIP_HOSTS, + NS_DNS, + NS_NETBT, + NS_WINS, - NS_NBP = 20, + NS_NBP = 20, - NS_MS = 30, - NS_STDA, - NS_NTDS, + NS_MS = 30, + NS_STDA, + NS_NTDS, - NS_X500 = 40, - NS_NIS, - NS_NISPLUS, + NS_X500 = 40, + NS_NIS, + NS_NISPLUS, - NS_WRQ = 50 + NS_WRQ = 50 } enum { - SERVICE_REGISTER = 1, - SERVICE_DEREGISTER = 2, - SERVICE_FLUSH = 3, - SERVICE_FLAG_HARD = 2 + SERVICE_REGISTER = 1, + SERVICE_DEREGISTER = 2, + SERVICE_FLUSH = 3, + SERVICE_FLAG_HARD = 2 } /* MinGW makes the next section conditional on winsock.h or winsock2.h * being included. But that doesn't translate well into D. */ version (Win32_Winsock1) { - import core.sys.windows.winsock; + import core.sys.windows.winsock; } else { - import core.sys.windows.winsock2; + import core.sys.windows.winsock2; } struct SOCKET_ADDRESS { - LPSOCKADDR lpSockaddr; - INT iSockaddrLength; + LPSOCKADDR lpSockaddr; + INT iSockaddrLength; } alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; struct CSADDR_INFO { - SOCKET_ADDRESS LocalAddr; - SOCKET_ADDRESS RemoteAddr; - INT iSocketType; - INT iProtocol; + SOCKET_ADDRESS LocalAddr; + SOCKET_ADDRESS RemoteAddr; + INT iSocketType; + INT iProtocol; } alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; struct BLOB { - ULONG cbSize; - BYTE* pBlobData; + ULONG cbSize; + BYTE* pBlobData; } alias BLOB* PBLOB, LPBLOB; struct SERVICE_ADDRESS { - DWORD dwAddressType; - DWORD dwAddressFlags; - DWORD dwAddressLength; - DWORD dwPrincipalLength; - BYTE* lpAddress; - BYTE* lpPrincipal; + DWORD dwAddressType; + DWORD dwAddressFlags; + DWORD dwAddressLength; + DWORD dwPrincipalLength; + BYTE* lpAddress; + BYTE* lpPrincipal; } struct SERVICE_ADDRESSES { - DWORD dwAddressCount; - SERVICE_ADDRESS _Addresses; + DWORD dwAddressCount; + SERVICE_ADDRESS _Addresses; - SERVICE_ADDRESS* Addresses() { return &_Addresses; } + SERVICE_ADDRESS* Addresses() { return &_Addresses; } } alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES; struct SERVICE_INFOA { - LPGUID lpServiceType; - LPSTR lpServiceName; - LPSTR lpComment; - LPSTR lpLocale; - DWORD dwDisplayHint; - DWORD dwVersion; - DWORD dwTime; - LPSTR lpMachineName; - LPSERVICE_ADDRESSES lpServiceAddress; - BLOB ServiceSpecificInfo; + LPGUID lpServiceType; + LPSTR lpServiceName; + LPSTR lpComment; + LPSTR lpLocale; + DWORD dwDisplayHint; + DWORD dwVersion; + DWORD dwTime; + LPSTR lpMachineName; + LPSERVICE_ADDRESSES lpServiceAddress; + BLOB ServiceSpecificInfo; } alias SERVICE_INFOA* LPSERVICE_INFOA; struct SERVICE_INFOW { - LPGUID lpServiceType; - LPWSTR lpServiceName; - LPWSTR lpComment; - LPWSTR lpLocale; - DWORD dwDisplayHint; - DWORD dwVersion; - DWORD dwTime; - LPWSTR lpMachineName; - LPSERVICE_ADDRESSES lpServiceAddress; - BLOB ServiceSpecificInfo; + LPGUID lpServiceType; + LPWSTR lpServiceName; + LPWSTR lpComment; + LPWSTR lpLocale; + DWORD dwDisplayHint; + DWORD dwVersion; + DWORD dwTime; + LPWSTR lpMachineName; + LPSERVICE_ADDRESSES lpServiceAddress; + BLOB ServiceSpecificInfo; } alias SERVICE_INFOW* LPSERVICE_INFOW; alias void* LPSERVICE_ASYNC_INFO; extern (Windows) { - INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA, - LPSERVICE_ASYNC_INFO, LPDWORD); - INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW, - LPSERVICE_ASYNC_INFO, LPDWORD); - INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD, - LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD); - INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD, - LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD); + INT SetServiceA(DWORD, DWORD, DWORD, LPSERVICE_INFOA, + LPSERVICE_ASYNC_INFO, LPDWORD); + INT SetServiceW(DWORD, DWORD, DWORD, LPSERVICE_INFOW, + LPSERVICE_ASYNC_INFO, LPDWORD); + INT GetAddressByNameA(DWORD, LPGUID, LPSTR, LPINT, DWORD, + LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPSTR, LPDWORD); + INT GetAddressByNameW(DWORD, LPGUID, LPWSTR, LPINT, DWORD, + LPSERVICE_ASYNC_INFO, LPVOID, LPDWORD, LPWSTR, LPDWORD); } version (Unicode) { - alias SERVICE_INFOW SERVICE_INFO; - alias SetServiceW SetService; - alias GetAddressByNameW GetAddressByName; + alias SERVICE_INFOW SERVICE_INFO; + alias SetServiceW SetService; + alias GetAddressByNameW GetAddressByName; } else { - alias SERVICE_INFOA SERVICE_INFO; - alias SetServiceA SetService; - alias GetAddressByNameA GetAddressByName; + alias SERVICE_INFOA SERVICE_INFO; + alias SetServiceA SetService; + alias GetAddressByNameA GetAddressByName; } alias SERVICE_INFO _SERVICE_INFO; diff --git a/src/core/sys/windows/ntdef.d b/src/core/sys/windows/ntdef.d index c081d6971e..cd34522758 100644 --- a/src/core/sys/windows/ntdef.d +++ b/src/core/sys/windows/ntdef.d @@ -12,24 +12,24 @@ module core.sys.windows.ntdef; private import core.sys.windows.basetsd, core.sys.windows.subauth, core.sys.windows.windef, core.sys.windows.winnt; const uint - OBJ_INHERIT = 0x0002, - OBJ_PERMANENT = 0x0010, - OBJ_EXCLUSIVE = 0x0020, - OBJ_CASE_INSENSITIVE = 0x0040, - OBJ_OPENIF = 0x0080, - OBJ_OPENLINK = 0x0100, - OBJ_VALID_ATTRIBUTES = 0x01F2; + OBJ_INHERIT = 0x0002, + OBJ_PERMANENT = 0x0010, + OBJ_EXCLUSIVE = 0x0020, + OBJ_CASE_INSENSITIVE = 0x0040, + OBJ_OPENIF = 0x0080, + OBJ_OPENLINK = 0x0100, + OBJ_VALID_ATTRIBUTES = 0x01F2; void InitializeObjectAttributes(OBJECT_ATTRIBUTES* p, UNICODE_STRING* n, - uint a, HANDLE r, void* s) { - with (*p) { - Length = OBJECT_ATTRIBUTES.sizeof; - RootDirectory = r; - Attributes = a; - ObjectName = n; - SecurityDescriptor = s; - SecurityQualityOfService = null; - } + uint a, HANDLE r, void* s) { + with (*p) { + Length = OBJECT_ATTRIBUTES.sizeof; + RootDirectory = r; + Attributes = a; + ObjectName = n; + SecurityDescriptor = s; + SecurityQualityOfService = null; + } } bool NT_SUCCESS(int x) { return x >= 0; } @@ -42,17 +42,17 @@ alias int NTSTATUS; alias int* PNTSTATUS; struct UNICODE_STRING { - USHORT Length; - USHORT MaximumLength; - PWSTR Buffer; + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; } alias UNICODE_STRING* PUNICODE_STRING; alias const(UNICODE_STRING)* PCUNICODE_STRING; struct STRING { - USHORT Length; - USHORT MaximumLength; - PCHAR Buffer; + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; } alias STRING ANSI_STRING, OEM_STRING; alias STRING* PSTRING, PANSI_STRING, POEM_STRING; @@ -61,19 +61,19 @@ alias LARGE_INTEGER PHYSICAL_ADDRESS; alias LARGE_INTEGER* PPHYSICAL_ADDRESS; enum SECTION_INHERIT { - ViewShare = 1, - ViewUnmap + ViewShare = 1, + ViewUnmap } /* In MinGW, this is defined in ntdef.h and ntsecapi.h, each of which checks * that the other isn't already included. */ struct OBJECT_ATTRIBUTES { - ULONG Length = OBJECT_ATTRIBUTES.sizeof; - HANDLE RootDirectory; - PUNICODE_STRING ObjectName; - ULONG Attributes; - PVOID SecurityDescriptor; - PVOID SecurityQualityOfService; + ULONG Length = OBJECT_ATTRIBUTES.sizeof; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; } alias OBJECT_ATTRIBUTES* POBJECT_ATTRIBUTES; diff --git a/src/core/sys/windows/ntdll.d b/src/core/sys/windows/ntdll.d index 9e06c58c7c..ac24b82f52 100644 --- a/src/core/sys/windows/ntdll.d +++ b/src/core/sys/windows/ntdll.d @@ -13,9 +13,9 @@ private import core.sys.windows.w32api; enum SHUTDOWN_ACTION { - ShutdownNoReboot, - ShutdownReboot, - ShutdownPowerOff + ShutdownNoReboot, + ShutdownReboot, + ShutdownPowerOff } extern (Windows) uint NtShutdownSystem(SHUTDOWN_ACTION Action); diff --git a/src/core/sys/windows/ntldap.d b/src/core/sys/windows/ntldap.d index 16947e0e57..b5ca4e9338 100644 --- a/src/core/sys/windows/ntldap.d +++ b/src/core/sys/windows/ntldap.d @@ -14,44 +14,44 @@ module core.sys.windows.ntldap; */ const char[] - LDAP_SERVER_ASQ_OID = "1.2.840.113556.1.4.1504", - LDAP_SERVER_DIRSYNC_OID = "1.2.840.113556.1.4.841", - LDAP_SERVER_SD_FLAGS_OID = "1.2.840.113556.1.4.801", - LDAP_SERVER_FAST_BIND_OID = "1.2.840.113556.1.4.1781", - LDAP_MATCHING_RULE_BIT_OR = "1.2.840.113556.1.4.804", - LDAP_MATCHING_RULE_BIT_AND = "1.2.840.113556.1.4.803", - LDAP_SERVER_EXTENDED_DN_OID = "1.2.840.113556.1.4.529", - LDAP_SERVER_LAZY_COMMIT_OID = "1.2.840.113556.1.4.619", - LDAP_SERVER_TREE_DELETE_OID = "1.2.840.113556.1.4.805", - LDAP_SERVER_VERIFY_NAME_OID = "1.2.840.113556.1.4.1338", - LDAP_SERVER_SHOW_DELETED_OID = "1.2.840.113556.1.4.417", - LDAP_SERVER_NOTIFICATION_OID = "1.2.840.113556.1.4.528", - LDAP_SERVER_DOMAIN_SCOPE_OID = "1.2.840.113556.1.4.1339", - LDAP_CAP_ACTIVE_DIRECTORY_OID = "1.2.840.113556.1.4.800", - LDAP_SERVER_SEARCH_OPTIONS_OID = "1.2.840.113556.1.4.1340", - LDAP_CAP_ACTIVE_DIRECTORY_V51_OID = "1.2.840.113556.1.4.1670", - LDAP_SERVER_PERMISSIVE_MODIFY_OID = "1.2.840.113556.1.4.1413", - LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID = "1.2.840.113556.1.4.521"; + LDAP_SERVER_ASQ_OID = "1.2.840.113556.1.4.1504", + LDAP_SERVER_DIRSYNC_OID = "1.2.840.113556.1.4.841", + LDAP_SERVER_SD_FLAGS_OID = "1.2.840.113556.1.4.801", + LDAP_SERVER_FAST_BIND_OID = "1.2.840.113556.1.4.1781", + LDAP_MATCHING_RULE_BIT_OR = "1.2.840.113556.1.4.804", + LDAP_MATCHING_RULE_BIT_AND = "1.2.840.113556.1.4.803", + LDAP_SERVER_EXTENDED_DN_OID = "1.2.840.113556.1.4.529", + LDAP_SERVER_LAZY_COMMIT_OID = "1.2.840.113556.1.4.619", + LDAP_SERVER_TREE_DELETE_OID = "1.2.840.113556.1.4.805", + LDAP_SERVER_VERIFY_NAME_OID = "1.2.840.113556.1.4.1338", + LDAP_SERVER_SHOW_DELETED_OID = "1.2.840.113556.1.4.417", + LDAP_SERVER_NOTIFICATION_OID = "1.2.840.113556.1.4.528", + LDAP_SERVER_DOMAIN_SCOPE_OID = "1.2.840.113556.1.4.1339", + LDAP_CAP_ACTIVE_DIRECTORY_OID = "1.2.840.113556.1.4.800", + LDAP_SERVER_SEARCH_OPTIONS_OID = "1.2.840.113556.1.4.1340", + LDAP_CAP_ACTIVE_DIRECTORY_V51_OID = "1.2.840.113556.1.4.1670", + LDAP_SERVER_PERMISSIVE_MODIFY_OID = "1.2.840.113556.1.4.1413", + LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID = "1.2.840.113556.1.4.521"; const wchar[] - LDAP_SERVER_ASQ_OID_W = "1.2.840.113556.1.4.1504", - LDAP_SERVER_DIRSYNC_OID_W = "1.2.840.113556.1.4.841", - LDAP_SERVER_SD_FLAGS_OID_W = "1.2.840.113556.1.4.801", - LDAP_SERVER_FAST_BIND_OID_W = "1.2.840.113556.1.4.1781", - LDAP_MATCHING_RULE_BIT_OR_W = "1.2.840.113556.1.4.804", - LDAP_MATCHING_RULE_BIT_AND_W = "1.2.840.113556.1.4.803", - LDAP_SERVER_EXTENDED_DN_OID_W = "1.2.840.113556.1.4.529", - LDAP_SERVER_LAZY_COMMIT_OID_W = "1.2.840.113556.1.4.619", - LDAP_SERVER_TREE_DELETE_OID_W = "1.2.840.113556.1.4.805", - LDAP_SERVER_VERIFY_NAME_OID_W = "1.2.840.113556.1.4.1338", - LDAP_SERVER_SHOW_DELETED_OID_W = "1.2.840.113556.1.4.417", - LDAP_SERVER_NOTIFICATION_OID_W = "1.2.840.113556.1.4.528", - LDAP_SERVER_DOMAIN_SCOPE_OID_W = "1.2.840.113556.1.4.1339", - LDAP_CAP_ACTIVE_DIRECTORY_OID_W = "1.2.840.113556.1.4.800", - LDAP_SERVER_SEARCH_OPTIONS_OID_W = "1.2.840.113556.1.4.1340", - LDAP_CAP_ACTIVE_DIRECTORY_V51_OID_W = "1.2.840.113556.1.4.1670", - LDAP_SERVER_PERMISSIVE_MODIFY_OID_W = "1.2.840.113556.1.4.1413", - LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID_W = "1.2.840.113556.1.4.521"; + LDAP_SERVER_ASQ_OID_W = "1.2.840.113556.1.4.1504", + LDAP_SERVER_DIRSYNC_OID_W = "1.2.840.113556.1.4.841", + LDAP_SERVER_SD_FLAGS_OID_W = "1.2.840.113556.1.4.801", + LDAP_SERVER_FAST_BIND_OID_W = "1.2.840.113556.1.4.1781", + LDAP_MATCHING_RULE_BIT_OR_W = "1.2.840.113556.1.4.804", + LDAP_MATCHING_RULE_BIT_AND_W = "1.2.840.113556.1.4.803", + LDAP_SERVER_EXTENDED_DN_OID_W = "1.2.840.113556.1.4.529", + LDAP_SERVER_LAZY_COMMIT_OID_W = "1.2.840.113556.1.4.619", + LDAP_SERVER_TREE_DELETE_OID_W = "1.2.840.113556.1.4.805", + LDAP_SERVER_VERIFY_NAME_OID_W = "1.2.840.113556.1.4.1338", + LDAP_SERVER_SHOW_DELETED_OID_W = "1.2.840.113556.1.4.417", + LDAP_SERVER_NOTIFICATION_OID_W = "1.2.840.113556.1.4.528", + LDAP_SERVER_DOMAIN_SCOPE_OID_W = "1.2.840.113556.1.4.1339", + LDAP_CAP_ACTIVE_DIRECTORY_OID_W = "1.2.840.113556.1.4.800", + LDAP_SERVER_SEARCH_OPTIONS_OID_W = "1.2.840.113556.1.4.1340", + LDAP_CAP_ACTIVE_DIRECTORY_V51_OID_W = "1.2.840.113556.1.4.1670", + LDAP_SERVER_PERMISSIVE_MODIFY_OID_W = "1.2.840.113556.1.4.1413", + LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID_W = "1.2.840.113556.1.4.521"; const SERVER_SEARCH_FLAG_DOMAIN_SCOPE = 1; const SERVER_SEARCH_FLAG_PHANTOM_ROOT = 2; diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index 5afb4bada0..7dc5a023ac 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -30,10 +30,10 @@ const LOGON_PROFILE_PATH_RETURNED = 0x00000400; const LOGON_GRACE_LOGON = 0x01000000; enum { - LSA_MODE_PASSWORD_PROTECTED = 1, - LSA_MODE_INDIVIDUAL_ACCOUNTS, - LSA_MODE_MANDATORY_ACCESS, - LSA_MODE_LOG_FULL + LSA_MODE_PASSWORD_PROTECTED = 1, + LSA_MODE_INDIVIDUAL_ACCOUNTS, + LSA_MODE_MANDATORY_ACCESS, + LSA_MODE_LOG_FULL } bool LSA_SUCCESS(int x) { return x >= 0; } @@ -58,15 +58,15 @@ const MSV1_0_MAX_AVL_SIZE = 64000; const MSV1_0_MNS_LOGON = 16777216; const size_t - MSV1_0_CHALLENGE_LENGTH = 8, - MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8, - MSV1_0_NTLM3_RESPONSE_LENGTH = 16, - MSV1_0_NTLM3_OWF_LENGTH = 16, - MSV1_0_NTLM3_INPUT_LENGTH = MSV1_0_NTLM3_RESPONSE.sizeof - - MSV1_0_NTLM3_RESPONSE_LENGTH, - MSV1_0_OWF_PASSWORD_LENGTH = 16, - MSV1_0_PACKAGE_NAMEW_LENGTH = MSV1_0_PACKAGE_NAMEW.sizeof - - WCHAR.sizeof; + MSV1_0_CHALLENGE_LENGTH = 8, + MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8, + MSV1_0_NTLM3_RESPONSE_LENGTH = 16, + MSV1_0_NTLM3_OWF_LENGTH = 16, + MSV1_0_NTLM3_INPUT_LENGTH = MSV1_0_NTLM3_RESPONSE.sizeof + - MSV1_0_NTLM3_RESPONSE_LENGTH, + MSV1_0_OWF_PASSWORD_LENGTH = 16, + MSV1_0_PACKAGE_NAMEW_LENGTH = MSV1_0_PACKAGE_NAMEW.sizeof + - WCHAR.sizeof; const MSV1_0_RETURN_USER_PARAMETERS = 8; const MSV1_0_RETURN_PASSWORD_EXPIRY = 64; @@ -84,28 +84,28 @@ const MSV1_0_USE_CLIENT_CHALLENGE = 128; const MSV1_0_USER_SESSION_KEY_LENGTH = 16; const char[] - MSV1_0_SUBAUTHENTICATION_KEY - = `System\CurrentControlSet\Control\Lsa\MSV1_0`, - MSV1_0_SUBAUTHENTICATION_VALUE = "Auth"; + MSV1_0_SUBAUTHENTICATION_KEY + = `System\CurrentControlSet\Control\Lsa\MSV1_0`, + MSV1_0_SUBAUTHENTICATION_VALUE = "Auth"; const ACCESS_MASK - POLICY_VIEW_LOCAL_INFORMATION = 0x0001, - POLICY_VIEW_AUDIT_INFORMATION = 0x0002, - POLICY_GET_PRIVATE_INFORMATION = 0x0004, - POLICY_TRUST_ADMIN = 0x0008, - POLICY_CREATE_ACCOUNT = 0x0010, - POLICY_CREATE_SECRET = 0x0020, - POLICY_CREATE_PRIVILEGE = 0x0040, - POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x0080, - POLICY_SET_AUDIT_REQUIREMENTS = 0x0100, - POLICY_AUDIT_LOG_ADMIN = 0x0200, - POLICY_SERVER_ADMIN = 0x0400, - POLICY_LOOKUP_NAMES = 0x0800, - - POLICY_READ = STANDARD_RIGHTS_READ | 0x0006, - POLICY_WRITE = STANDARD_RIGHTS_WRITE | 0x07F8, - POLICY_EXECUTE = STANDARD_RIGHTS_EXECUTE | 0x0801, - POLICY_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 0x0FFF; + POLICY_VIEW_LOCAL_INFORMATION = 0x0001, + POLICY_VIEW_AUDIT_INFORMATION = 0x0002, + POLICY_GET_PRIVATE_INFORMATION = 0x0004, + POLICY_TRUST_ADMIN = 0x0008, + POLICY_CREATE_ACCOUNT = 0x0010, + POLICY_CREATE_SECRET = 0x0020, + POLICY_CREATE_PRIVILEGE = 0x0040, + POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x0080, + POLICY_SET_AUDIT_REQUIREMENTS = 0x0100, + POLICY_AUDIT_LOG_ADMIN = 0x0200, + POLICY_SERVER_ADMIN = 0x0400, + POLICY_LOOKUP_NAMES = 0x0800, + + POLICY_READ = STANDARD_RIGHTS_READ | 0x0006, + POLICY_WRITE = STANDARD_RIGHTS_WRITE | 0x07F8, + POLICY_EXECUTE = STANDARD_RIGHTS_EXECUTE | 0x0801, + POLICY_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 0x0FFF; const POLICY_AUDIT_EVENT_UNCHANGED = 0; const POLICY_AUDIT_EVENT_SUCCESS = 1; @@ -114,15 +114,15 @@ const POLICY_AUDIT_EVENT_NONE = 4; const POLICY_AUDIT_EVENT_MASK = 7; enum { - POLICY_LOCATION_LOCAL = 1, - POLICY_LOCATION_DS + POLICY_LOCATION_LOCAL = 1, + POLICY_LOCATION_DS } enum : uint { - POLICY_MACHINE_POLICY_LOCAL = 0, - POLICY_MACHINE_POLICY_DEFAULTED, - POLICY_MACHINE_POLICY_EXPLICIT, - POLICY_MACHINE_POLICY_UNKNOWN = 0xFFFFFFFF + POLICY_MACHINE_POLICY_LOCAL = 0, + POLICY_MACHINE_POLICY_DEFAULTED, + POLICY_MACHINE_POLICY_EXPLICIT, + POLICY_MACHINE_POLICY_UNKNOWN = 0xFFFFFFFF } @@ -141,41 +141,41 @@ const POLICY_KERBEROS_RENEWABLE = 4; const POLICY_KERBEROS_POSTDATEABLE = 8; const char[] - SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = "PasswordChangeNotify", - SAM_INIT_NOTIFICATION_ROUTINE = "InitializeChangeNotify", - SAM_PASSWORD_FILTER_ROUTINE = "PasswordFilter"; + SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = "PasswordChangeNotify", + SAM_INIT_NOTIFICATION_ROUTINE = "InitializeChangeNotify", + SAM_PASSWORD_FILTER_ROUTINE = "PasswordFilter"; const TCHAR[] - SE_INTERACTIVE_LOGON_NAME = "SeInteractiveLogonRight", - SE_NETWORK_LOGON_NAME = "SeNetworkLogonRight", - SE_BATCH_LOGON_NAME = "SeBatchLogonRight", - SE_SERVICE_LOGON_NAME = "SeServiceLogonRight"; + SE_INTERACTIVE_LOGON_NAME = "SeInteractiveLogonRight", + SE_NETWORK_LOGON_NAME = "SeNetworkLogonRight", + SE_BATCH_LOGON_NAME = "SeBatchLogonRight", + SE_SERVICE_LOGON_NAME = "SeServiceLogonRight"; enum { - TRUST_ATTRIBUTE_NON_TRANSITIVE = 1, - TRUST_ATTRIBUTE_UPLEVEL_ONLY = 2, - TRUST_ATTRIBUTE_TREE_PARENT = 4194304, - TRUST_ATTRIBUTES_VALID = -16580609 + TRUST_ATTRIBUTE_NON_TRANSITIVE = 1, + TRUST_ATTRIBUTE_UPLEVEL_ONLY = 2, + TRUST_ATTRIBUTE_TREE_PARENT = 4194304, + TRUST_ATTRIBUTES_VALID = -16580609 } enum { - TRUST_AUTH_TYPE_NONE, - TRUST_AUTH_TYPE_NT4OWF, - TRUST_AUTH_TYPE_CLEAR + TRUST_AUTH_TYPE_NONE, + TRUST_AUTH_TYPE_NT4OWF, + TRUST_AUTH_TYPE_CLEAR } enum { - TRUST_DIRECTION_DISABLED, - TRUST_DIRECTION_INBOUND, - TRUST_DIRECTION_OUTBOUND, - TRUST_DIRECTION_BIDIRECTIONAL + TRUST_DIRECTION_DISABLED, + TRUST_DIRECTION_INBOUND, + TRUST_DIRECTION_OUTBOUND, + TRUST_DIRECTION_BIDIRECTIONAL } enum { - TRUST_TYPE_DOWNLEVEL = 1, - TRUST_TYPE_UPLEVEL, - TRUST_TYPE_MIT, - TRUST_TYPE_DCE + TRUST_TYPE_DOWNLEVEL = 1, + TRUST_TYPE_UPLEVEL, + TRUST_TYPE_MIT, + TRUST_TYPE_DCE } alias UNICODE_STRING LSA_UNICODE_STRING; @@ -184,149 +184,149 @@ alias STRING LSA_STRING; alias STRING* PLSA_STRING; enum MSV1_0_LOGON_SUBMIT_TYPE { - MsV1_0InteractiveLogon = 2, - MsV1_0Lm20Logon, - MsV1_0NetworkLogon, - MsV1_0SubAuthLogon, - MsV1_0WorkstationUnlockLogon = 7 + MsV1_0InteractiveLogon = 2, + MsV1_0Lm20Logon, + MsV1_0NetworkLogon, + MsV1_0SubAuthLogon, + MsV1_0WorkstationUnlockLogon = 7 } alias MSV1_0_LOGON_SUBMIT_TYPE* PMSV1_0_LOGON_SUBMIT_TYPE; enum MSV1_0_PROFILE_BUFFER_TYPE { - MsV1_0InteractiveProfile = 2, - MsV1_0Lm20LogonProfile, - MsV1_0SmartCardProfile + MsV1_0InteractiveProfile = 2, + MsV1_0Lm20LogonProfile, + MsV1_0SmartCardProfile } alias MSV1_0_PROFILE_BUFFER_TYPE* PMSV1_0_PROFILE_BUFFER_TYPE; enum MSV1_0_AVID { - MsvAvEOL, - MsvAvNbComputerName, - MsvAvNbDomainName, - MsvAvDnsComputerName, - MsvAvDnsDomainName + MsvAvEOL, + MsvAvNbComputerName, + MsvAvNbDomainName, + MsvAvDnsComputerName, + MsvAvDnsDomainName } enum MSV1_0_PROTOCOL_MESSAGE_TYPE { - MsV1_0Lm20ChallengeRequest = 0, - MsV1_0Lm20GetChallengeResponse, - MsV1_0EnumerateUsers, - MsV1_0GetUserInfo, - MsV1_0ReLogonUsers, - MsV1_0ChangePassword, - MsV1_0ChangeCachedPassword, - MsV1_0GenericPassthrough, - MsV1_0CacheLogon, - MsV1_0SubAuth, - MsV1_0DeriveCredential, - MsV1_0CacheLookup + MsV1_0Lm20ChallengeRequest = 0, + MsV1_0Lm20GetChallengeResponse, + MsV1_0EnumerateUsers, + MsV1_0GetUserInfo, + MsV1_0ReLogonUsers, + MsV1_0ChangePassword, + MsV1_0ChangeCachedPassword, + MsV1_0GenericPassthrough, + MsV1_0CacheLogon, + MsV1_0SubAuth, + MsV1_0DeriveCredential, + MsV1_0CacheLookup } alias MSV1_0_PROTOCOL_MESSAGE_TYPE* PMSV1_0_PROTOCOL_MESSAGE_TYPE; enum POLICY_LSA_SERVER_ROLE { - PolicyServerRoleBackup = 2, - PolicyServerRolePrimary + PolicyServerRoleBackup = 2, + PolicyServerRolePrimary } alias POLICY_LSA_SERVER_ROLE* PPOLICY_LSA_SERVER_ROLE; enum POLICY_SERVER_ENABLE_STATE { - PolicyServerEnabled = 2, - PolicyServerDisabled + PolicyServerEnabled = 2, + PolicyServerDisabled } alias POLICY_SERVER_ENABLE_STATE* PPOLICY_SERVER_ENABLE_STATE; enum POLICY_INFORMATION_CLASS { - PolicyAuditLogInformation = 1, - PolicyAuditEventsInformation, - PolicyPrimaryDomainInformation, - PolicyPdAccountInformation, - PolicyAccountDomainInformation, - PolicyLsaServerRoleInformation, - PolicyReplicaSourceInformation, - PolicyDefaultQuotaInformation, - PolicyModificationInformation, - PolicyAuditFullSetInformation, - PolicyAuditFullQueryInformation, - PolicyDnsDomainInformation, - PolicyEfsInformation + PolicyAuditLogInformation = 1, + PolicyAuditEventsInformation, + PolicyPrimaryDomainInformation, + PolicyPdAccountInformation, + PolicyAccountDomainInformation, + PolicyLsaServerRoleInformation, + PolicyReplicaSourceInformation, + PolicyDefaultQuotaInformation, + PolicyModificationInformation, + PolicyAuditFullSetInformation, + PolicyAuditFullQueryInformation, + PolicyDnsDomainInformation, + PolicyEfsInformation } alias POLICY_INFORMATION_CLASS* PPOLICY_INFORMATION_CLASS; enum POLICY_AUDIT_EVENT_TYPE { - AuditCategorySystem, - AuditCategoryLogon, - AuditCategoryObjectAccess, - AuditCategoryPrivilegeUse, - AuditCategoryDetailedTracking, - AuditCategoryPolicyChange, - AuditCategoryAccountManagement, - AuditCategoryDirectoryServiceAccess, - AuditCategoryAccountLogon + AuditCategorySystem, + AuditCategoryLogon, + AuditCategoryObjectAccess, + AuditCategoryPrivilegeUse, + AuditCategoryDetailedTracking, + AuditCategoryPolicyChange, + AuditCategoryAccountManagement, + AuditCategoryDirectoryServiceAccess, + AuditCategoryAccountLogon } alias POLICY_AUDIT_EVENT_TYPE* PPOLICY_AUDIT_EVENT_TYPE; enum POLICY_LOCAL_INFORMATION_CLASS { - PolicyLocalAuditEventsInformation = 1, - PolicyLocalPdAccountInformation, - PolicyLocalAccountDomainInformation, - PolicyLocalLsaServerRoleInformation, - PolicyLocalReplicaSourceInformation, - PolicyLocalModificationInformation, - PolicyLocalAuditFullSetInformation, - PolicyLocalAuditFullQueryInformation, - PolicyLocalDnsDomainInformation, - PolicyLocalIPSecReferenceInformation, - PolicyLocalMachinePasswordInformation, - PolicyLocalQualityOfServiceInformation, - PolicyLocalPolicyLocationInformation + PolicyLocalAuditEventsInformation = 1, + PolicyLocalPdAccountInformation, + PolicyLocalAccountDomainInformation, + PolicyLocalLsaServerRoleInformation, + PolicyLocalReplicaSourceInformation, + PolicyLocalModificationInformation, + PolicyLocalAuditFullSetInformation, + PolicyLocalAuditFullQueryInformation, + PolicyLocalDnsDomainInformation, + PolicyLocalIPSecReferenceInformation, + PolicyLocalMachinePasswordInformation, + PolicyLocalQualityOfServiceInformation, + PolicyLocalPolicyLocationInformation } alias POLICY_LOCAL_INFORMATION_CLASS* PPOLICY_LOCAL_INFORMATION_CLASS; enum POLICY_DOMAIN_INFORMATION_CLASS { - PolicyDomainIPSecReferenceInformation = 1, - PolicyDomainQualityOfServiceInformation, - PolicyDomainEfsInformation, - PolicyDomainPublicKeyInformation, - PolicyDomainPasswordPolicyInformation, - PolicyDomainLockoutInformation, - PolicyDomainKerberosTicketInformation + PolicyDomainIPSecReferenceInformation = 1, + PolicyDomainQualityOfServiceInformation, + PolicyDomainEfsInformation, + PolicyDomainPublicKeyInformation, + PolicyDomainPasswordPolicyInformation, + PolicyDomainLockoutInformation, + PolicyDomainKerberosTicketInformation } alias POLICY_DOMAIN_INFORMATION_CLASS* PPOLICY_DOMAIN_INFORMATION_CLASS; enum SECURITY_LOGON_TYPE { - Interactive = 2, - Network, - Batch, - Service, - Proxy, - Unlock + Interactive = 2, + Network, + Batch, + Service, + Proxy, + Unlock } alias SECURITY_LOGON_TYPE* PSECURITY_LOGON_TYPE; enum TRUSTED_INFORMATION_CLASS { - TrustedDomainNameInformation = 1, - TrustedControllersInformation, - TrustedPosixOffsetInformation, - TrustedPasswordInformation, - TrustedDomainInformationBasic, - TrustedDomainInformationEx, - TrustedDomainAuthInformation, - TrustedDomainFullInformation + TrustedDomainNameInformation = 1, + TrustedControllersInformation, + TrustedPosixOffsetInformation, + TrustedPasswordInformation, + TrustedDomainInformationBasic, + TrustedDomainInformationEx, + TrustedDomainAuthInformation, + TrustedDomainFullInformation } alias TRUSTED_INFORMATION_CLASS* PTRUSTED_INFORMATION_CLASS; struct DOMAIN_PASSWORD_INFORMATION { - USHORT MinPasswordLength; - USHORT PasswordHistoryLength; - ULONG PasswordProperties; - LARGE_INTEGER MaxPasswordAge; - LARGE_INTEGER MinPasswordAge; + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; } alias DOMAIN_PASSWORD_INFORMATION* PDOMAIN_PASSWORD_INFORMATION; struct LSA_ENUMERATION_INFORMATION { - PSID Sid; + PSID Sid; } alias LSA_ENUMERATION_INFORMATION* PLSA_ENUMERATION_INFORMATION; @@ -334,8 +334,8 @@ alias OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES; alias OBJECT_ATTRIBUTES* PLSA_OBJECT_ATTRIBUTES; struct LSA_TRUST_INFORMATION { - LSA_UNICODE_STRING Name; - PSID Sid; + LSA_UNICODE_STRING Name; + PSID Sid; } alias LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; alias LSA_TRUST_INFORMATION* PLSA_TRUST_INFORMATION; @@ -346,170 +346,170 @@ alias LSA_TRUST_INFORMATION* PLSA_TRUST_INFORMATION; alias LSA_TRUST_INFORMATION** PTRUSTED_DOMAIN_INFORMATION_BASIC; struct LSA_REFERENCED_DOMAIN_LIST { - ULONG Entries; - PLSA_TRUST_INFORMATION Domains; + ULONG Entries; + PLSA_TRUST_INFORMATION Domains; } alias LSA_REFERENCED_DOMAIN_LIST* PLSA_REFERENCED_DOMAIN_LIST; struct LSA_TRANSLATED_SID { - SID_NAME_USE Use; - ULONG RelativeId; - LONG DomainIndex; + SID_NAME_USE Use; + ULONG RelativeId; + LONG DomainIndex; } alias LSA_TRANSLATED_SID* PLSA_TRANSLATED_SID; struct LSA_TRANSLATED_NAME { - SID_NAME_USE Use; - LSA_UNICODE_STRING Name; - LONG DomainIndex; + SID_NAME_USE Use; + LSA_UNICODE_STRING Name; + LONG DomainIndex; } alias LSA_TRANSLATED_NAME* PLSA_TRANSLATED_NAME; struct MSV1_0_INTERACTIVE_LOGON { - MSV1_0_LOGON_SUBMIT_TYPE MessageType; - UNICODE_STRING LogonDomainName; - UNICODE_STRING UserName; - UNICODE_STRING Password; + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Password; } alias MSV1_0_INTERACTIVE_LOGON* PMSV1_0_INTERACTIVE_LOGON; struct MSV1_0_INTERACTIVE_PROFILE { - MSV1_0_PROFILE_BUFFER_TYPE MessageType; - USHORT LogonCount; - USHORT BadPasswordCount; - LARGE_INTEGER LogonTime; - LARGE_INTEGER LogoffTime; - LARGE_INTEGER KickOffTime; - LARGE_INTEGER PasswordLastSet; - LARGE_INTEGER PasswordCanChange; - LARGE_INTEGER PasswordMustChange; - UNICODE_STRING LogonScript; - UNICODE_STRING HomeDirectory; - UNICODE_STRING FullName; - UNICODE_STRING ProfilePath; - UNICODE_STRING HomeDirectoryDrive; - UNICODE_STRING LogonServer; - ULONG UserFlags; + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + USHORT LogonCount; + USHORT BadPasswordCount; + LARGE_INTEGER LogonTime; + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING LogonScript; + UNICODE_STRING HomeDirectory; + UNICODE_STRING FullName; + UNICODE_STRING ProfilePath; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING LogonServer; + ULONG UserFlags; } alias MSV1_0_INTERACTIVE_PROFILE* PMSV1_0_INTERACTIVE_PROFILE; struct MSV1_0_LM20_LOGON { - MSV1_0_LOGON_SUBMIT_TYPE MessageType; - UNICODE_STRING LogonDomainName; - UNICODE_STRING UserName; - UNICODE_STRING Workstation; - UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; - STRING CaseSensitiveChallengeResponse; - STRING CaseInsensitiveChallengeResponse; - ULONG ParameterControl; + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; + STRING CaseSensitiveChallengeResponse; + STRING CaseInsensitiveChallengeResponse; + ULONG ParameterControl; } alias MSV1_0_LM20_LOGON* PMSV1_0_LM20_LOGON; //static if (_WIN32_WINNT >= 0x500) { - struct MSV1_0_SUBAUTH_LOGON { - MSV1_0_LOGON_SUBMIT_TYPE MessageType; - UNICODE_STRING LogonDomainName; - UNICODE_STRING UserName; - UNICODE_STRING Workstation; - UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; - STRING AuthenticationInfo1; - STRING AuthenticationInfo2; - ULONG ParameterControl; - ULONG SubAuthPackageId; - } - alias MSV1_0_SUBAUTH_LOGON* PMSV1_0_SUBAUTH_LOGON; + struct MSV1_0_SUBAUTH_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; + STRING AuthenticationInfo1; + STRING AuthenticationInfo2; + ULONG ParameterControl; + ULONG SubAuthPackageId; + } + alias MSV1_0_SUBAUTH_LOGON* PMSV1_0_SUBAUTH_LOGON; //} struct MSV1_0_LM20_LOGON_PROFILE { - MSV1_0_PROFILE_BUFFER_TYPE MessageType; - LARGE_INTEGER KickOffTime; - LARGE_INTEGER LogoffTime; - ULONG UserFlags; - UCHAR[MSV1_0_USER_SESSION_KEY_LENGTH] UserSessionKey; - UNICODE_STRING LogonDomainName; - UCHAR[MSV1_0_LANMAN_SESSION_KEY_LENGTH] LanmanSessionKey; - UNICODE_STRING LogonServer; - UNICODE_STRING UserParameters; + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER LogoffTime; + ULONG UserFlags; + UCHAR[MSV1_0_USER_SESSION_KEY_LENGTH] UserSessionKey; + UNICODE_STRING LogonDomainName; + UCHAR[MSV1_0_LANMAN_SESSION_KEY_LENGTH] LanmanSessionKey; + UNICODE_STRING LogonServer; + UNICODE_STRING UserParameters; } alias MSV1_0_LM20_LOGON_PROFILE* PMSV1_0_LM20_LOGON_PROFILE; struct MSV1_0_SUPPLEMENTAL_CREDENTIAL { - ULONG Version; - ULONG Flags; - UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] LmPassword; - UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] NtPassword; + ULONG Version; + ULONG Flags; + UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] LmPassword; + UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] NtPassword; } alias MSV1_0_SUPPLEMENTAL_CREDENTIAL* PMSV1_0_SUPPLEMENTAL_CREDENTIAL; struct MSV1_0_NTLM3_RESPONSE { - UCHAR[MSV1_0_NTLM3_RESPONSE_LENGTH] Response; - UCHAR RespType; - UCHAR HiRespType; - USHORT Flags; - ULONG MsgWord; - ULONGLONG TimeStamp; - UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeFromClient; - ULONG AvPairsOff; - UCHAR _Buffer; - UCHAR* Buffer() { return &_Buffer; } + UCHAR[MSV1_0_NTLM3_RESPONSE_LENGTH] Response; + UCHAR RespType; + UCHAR HiRespType; + USHORT Flags; + ULONG MsgWord; + ULONGLONG TimeStamp; + UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeFromClient; + ULONG AvPairsOff; + UCHAR _Buffer; + UCHAR* Buffer() { return &_Buffer; } } alias MSV1_0_NTLM3_RESPONSE* PMSV1_0_NTLM3_RESPONSE; struct MSV1_0_AV_PAIR { - USHORT AvId; - USHORT AvLen; + USHORT AvId; + USHORT AvLen; } alias MSV1_0_AV_PAIR* PMSV1_0_AV_PAIR; struct MSV1_0_CHANGEPASSWORD_REQUEST { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - UNICODE_STRING DomainName; - UNICODE_STRING AccountName; - UNICODE_STRING OldPassword; - UNICODE_STRING NewPassword; - BOOLEAN Impersonating; + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + UNICODE_STRING DomainName; + UNICODE_STRING AccountName; + UNICODE_STRING OldPassword; + UNICODE_STRING NewPassword; + BOOLEAN Impersonating; } alias MSV1_0_CHANGEPASSWORD_REQUEST* PMSV1_0_CHANGEPASSWORD_REQUEST; struct MSV1_0_CHANGEPASSWORD_RESPONSE { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - BOOLEAN PasswordInfoValid; - DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + BOOLEAN PasswordInfoValid; + DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; } alias MSV1_0_CHANGEPASSWORD_RESPONSE* PMSV1_0_CHANGEPASSWORD_RESPONSE; struct MSV1_0_SUBAUTH_REQUEST { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - ULONG SubAuthPackageId; - ULONG SubAuthInfoLength; - PUCHAR SubAuthSubmitBuffer; + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthPackageId; + ULONG SubAuthInfoLength; + PUCHAR SubAuthSubmitBuffer; } alias MSV1_0_SUBAUTH_REQUEST* PMSV1_0_SUBAUTH_REQUEST; struct MSV1_0_SUBAUTH_RESPONSE { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - ULONG SubAuthInfoLength; - PUCHAR SubAuthReturnBuffer; + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthInfoLength; + PUCHAR SubAuthReturnBuffer; } alias MSV1_0_SUBAUTH_RESPONSE* PMSV1_0_SUBAUTH_RESPONSE; const MSV1_0_DERIVECRED_TYPE_SHA1 = 0; struct MSV1_0_DERIVECRED_REQUEST { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - LUID LogonId; - ULONG DeriveCredType; - ULONG DeriveCredInfoLength; - UCHAR _DeriveCredSubmitBuffer; - UCHAR* DeriveCredSubmitBuffer() { return &_DeriveCredSubmitBuffer; } + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + LUID LogonId; + ULONG DeriveCredType; + ULONG DeriveCredInfoLength; + UCHAR _DeriveCredSubmitBuffer; + UCHAR* DeriveCredSubmitBuffer() { return &_DeriveCredSubmitBuffer; } } alias MSV1_0_DERIVECRED_REQUEST* PMSV1_0_DERIVECRED_REQUEST; struct MSV1_0_DERIVECRED_RESPONSE { - MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; - ULONG DeriveCredInfoLength; - UCHAR _DeriveCredReturnBuffer; - UCHAR* DeriveCredReturnBuffer() { return &_DeriveCredReturnBuffer; } + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG DeriveCredInfoLength; + UCHAR _DeriveCredReturnBuffer; + UCHAR* DeriveCredReturnBuffer() { return &_DeriveCredReturnBuffer; } } alias MSV1_0_DERIVECRED_RESPONSE* PMSV1_0_DERIVECRED_RESPONSE; @@ -519,110 +519,110 @@ alias uint* PLSA_ENUMERATION_HANDLE, PLSA_OPERATIONAL_MODE, PPOLICY_AUDIT_EVENT_OPTIONS; struct POLICY_PRIVILEGE_DEFINITION { - LSA_UNICODE_STRING Name; - LUID LocalValue; + LSA_UNICODE_STRING Name; + LUID LocalValue; } alias POLICY_PRIVILEGE_DEFINITION* PPOLICY_PRIVILEGE_DEFINITION; struct POLICY_AUDIT_LOG_INFO { - ULONG AuditLogPercentFull; - ULONG MaximumLogSize; - LARGE_INTEGER AuditRetentionPeriod; - BOOLEAN AuditLogFullShutdownInProgress; - LARGE_INTEGER TimeToShutdown; - ULONG NextAuditRecordId; + ULONG AuditLogPercentFull; + ULONG MaximumLogSize; + LARGE_INTEGER AuditRetentionPeriod; + BOOLEAN AuditLogFullShutdownInProgress; + LARGE_INTEGER TimeToShutdown; + ULONG NextAuditRecordId; } alias POLICY_AUDIT_LOG_INFO* PPOLICY_AUDIT_LOG_INFO; struct POLICY_AUDIT_EVENTS_INFO { - BOOLEAN AuditingMode; - PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; - ULONG MaximumAuditEventCount; + BOOLEAN AuditingMode; + PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; + ULONG MaximumAuditEventCount; } alias POLICY_AUDIT_EVENTS_INFO* PPOLICY_AUDIT_EVENTS_INFO; struct POLICY_ACCOUNT_DOMAIN_INFO { - LSA_UNICODE_STRING DomainName; - PSID DomainSid; + LSA_UNICODE_STRING DomainName; + PSID DomainSid; } alias POLICY_ACCOUNT_DOMAIN_INFO* PPOLICY_ACCOUNT_DOMAIN_INFO; struct POLICY_PRIMARY_DOMAIN_INFO { - LSA_UNICODE_STRING Name; - PSID Sid; + LSA_UNICODE_STRING Name; + PSID Sid; } alias POLICY_PRIMARY_DOMAIN_INFO* PPOLICY_PRIMARY_DOMAIN_INFO; struct POLICY_DNS_DOMAIN_INFO { - LSA_UNICODE_STRING Name; - LSA_UNICODE_STRING DnsDomainName; - LSA_UNICODE_STRING DnsTreeName; - GUID DomainGuid; - PSID Sid; + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING DnsDomainName; + LSA_UNICODE_STRING DnsTreeName; + GUID DomainGuid; + PSID Sid; } alias POLICY_DNS_DOMAIN_INFO* PPOLICY_DNS_DOMAIN_INFO; struct POLICY_PD_ACCOUNT_INFO { - LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING Name; } alias POLICY_PD_ACCOUNT_INFO* PPOLICY_PD_ACCOUNT_INFO; struct POLICY_LSA_SERVER_ROLE_INFO { - POLICY_LSA_SERVER_ROLE LsaServerRole; + POLICY_LSA_SERVER_ROLE LsaServerRole; } alias POLICY_LSA_SERVER_ROLE_INFO* PPOLICY_LSA_SERVER_ROLE_INFO; struct POLICY_REPLICA_SOURCE_INFO { - LSA_UNICODE_STRING ReplicaSource; - LSA_UNICODE_STRING ReplicaAccountName; + LSA_UNICODE_STRING ReplicaSource; + LSA_UNICODE_STRING ReplicaAccountName; } alias POLICY_REPLICA_SOURCE_INFO* PPOLICY_REPLICA_SOURCE_INFO; struct POLICY_DEFAULT_QUOTA_INFO { - QUOTA_LIMITS QuotaLimits; + QUOTA_LIMITS QuotaLimits; } alias POLICY_DEFAULT_QUOTA_INFO* PPOLICY_DEFAULT_QUOTA_INFO; struct POLICY_MODIFICATION_INFO { - LARGE_INTEGER ModifiedId; - LARGE_INTEGER DatabaseCreationTime; + LARGE_INTEGER ModifiedId; + LARGE_INTEGER DatabaseCreationTime; } alias POLICY_MODIFICATION_INFO* PPOLICY_MODIFICATION_INFO; struct POLICY_AUDIT_FULL_SET_INFO { - BOOLEAN ShutDownOnFull; + BOOLEAN ShutDownOnFull; } alias POLICY_AUDIT_FULL_SET_INFO* PPOLICY_AUDIT_FULL_SET_INFO; struct POLICY_AUDIT_FULL_QUERY_INFO { - BOOLEAN ShutDownOnFull; - BOOLEAN LogIsFull; + BOOLEAN ShutDownOnFull; + BOOLEAN LogIsFull; } alias POLICY_AUDIT_FULL_QUERY_INFO* PPOLICY_AUDIT_FULL_QUERY_INFO; struct POLICY_EFS_INFO { - ULONG InfoLength; - PUCHAR EfsBlob; + ULONG InfoLength; + PUCHAR EfsBlob; } alias POLICY_EFS_INFO* PPOLICY_EFS_INFO; struct POLICY_LOCAL_IPSEC_REFERENCE_INFO { - LSA_UNICODE_STRING ObjectPath; + LSA_UNICODE_STRING ObjectPath; } alias POLICY_LOCAL_IPSEC_REFERENCE_INFO* PPOLICY_LOCAL_IPSEC_REFERENCE_INFO; struct POLICY_LOCAL_MACHINE_PASSWORD_INFO { - LARGE_INTEGER PasswordChangeInterval; + LARGE_INTEGER PasswordChangeInterval; } alias POLICY_LOCAL_MACHINE_PASSWORD_INFO* PPOLICY_LOCAL_MACHINE_PASSWORD_INFO; struct POLICY_LOCAL_POLICY_LOCATION_INFO { - ULONG PolicyLocation; + ULONG PolicyLocation; } alias POLICY_LOCAL_POLICY_LOCATION_INFO* PPOLICY_LOCAL_POLICY_LOCATION_INFO; struct POLICY_LOCAL_QUALITY_OF_SERVICE_INFO{ - ULONG QualityOfService; + ULONG QualityOfService; } alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; @@ -631,34 +631,34 @@ alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO* PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; struct POLICY_DOMAIN_PUBLIC_KEY_INFO { - ULONG InfoLength; - PUCHAR PublicKeyInfo; + ULONG InfoLength; + PUCHAR PublicKeyInfo; } alias POLICY_DOMAIN_PUBLIC_KEY_INFO* PPOLICY_DOMAIN_PUBLIC_KEY_INFO; struct POLICY_DOMAIN_LOCKOUT_INFO { - LARGE_INTEGER LockoutDuration; - LARGE_INTEGER LockoutObservationWindow; - USHORT LockoutThreshold; + LARGE_INTEGER LockoutDuration; + LARGE_INTEGER LockoutObservationWindow; + USHORT LockoutThreshold; } alias POLICY_DOMAIN_LOCKOUT_INFO* PPOLICY_DOMAIN_LOCKOUT_INFO; struct POLICY_DOMAIN_PASSWORD_INFO { - USHORT MinPasswordLength; - USHORT PasswordHistoryLength; - ULONG PasswordProperties; - LARGE_INTEGER MaxPasswordAge; - LARGE_INTEGER MinPasswordAge; + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; } alias POLICY_DOMAIN_PASSWORD_INFO* PPOLICY_DOMAIN_PASSWORD_INFO; struct POLICY_DOMAIN_KERBEROS_TICKET_INFO { - ULONG AuthenticationOptions; - LARGE_INTEGER MinTicketAge; - LARGE_INTEGER MaxTicketAge; - LARGE_INTEGER MaxRenewAge; - LARGE_INTEGER ProxyLifetime; - LARGE_INTEGER ForceLogoff; + ULONG AuthenticationOptions; + LARGE_INTEGER MinTicketAge; + LARGE_INTEGER MaxTicketAge; + LARGE_INTEGER MaxRenewAge; + LARGE_INTEGER ProxyLifetime; + LARGE_INTEGER ForceLogoff; } alias POLICY_DOMAIN_KERBEROS_TICKET_INFO* PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; @@ -666,123 +666,123 @@ mixin DECLARE_HANDLE!("LSA_HANDLE"); alias LSA_HANDLE* PLSA_HANDLE; struct TRUSTED_DOMAIN_NAME_INFO { - LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING Name; } alias TRUSTED_DOMAIN_NAME_INFO* PTRUSTED_DOMAIN_NAME_INFO; struct TRUSTED_CONTROLLERS_INFO { - ULONG Entries; - PLSA_UNICODE_STRING Names; + ULONG Entries; + PLSA_UNICODE_STRING Names; } alias TRUSTED_CONTROLLERS_INFO* PTRUSTED_CONTROLLERS_INFO; struct TRUSTED_POSIX_OFFSET_INFO { - ULONG Offset; + ULONG Offset; } alias TRUSTED_POSIX_OFFSET_INFO* PTRUSTED_POSIX_OFFSET_INFO; struct TRUSTED_PASSWORD_INFO { - LSA_UNICODE_STRING Password; - LSA_UNICODE_STRING OldPassword; + LSA_UNICODE_STRING Password; + LSA_UNICODE_STRING OldPassword; } alias TRUSTED_PASSWORD_INFO* PTRUSTED_PASSWORD_INFO; struct TRUSTED_DOMAIN_INFORMATION_EX { - LSA_UNICODE_STRING Name; - LSA_UNICODE_STRING FlatName; - PSID Sid; - ULONG TrustDirection; - ULONG TrustType; - ULONG TrustAttributes; + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING FlatName; + PSID Sid; + ULONG TrustDirection; + ULONG TrustType; + ULONG TrustAttributes; } alias TRUSTED_DOMAIN_INFORMATION_EX* PTRUSTED_DOMAIN_INFORMATION_EX; struct LSA_AUTH_INFORMATION { - LARGE_INTEGER LastUpdateTime; - ULONG AuthType; - ULONG AuthInfoLength; - PUCHAR AuthInfo; + LARGE_INTEGER LastUpdateTime; + ULONG AuthType; + ULONG AuthInfoLength; + PUCHAR AuthInfo; } alias LSA_AUTH_INFORMATION* PLSA_AUTH_INFORMATION; struct TRUSTED_DOMAIN_AUTH_INFORMATION { - ULONG IncomingAuthInfos; - PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; - PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; - ULONG OutgoingAuthInfos; - PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; - PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; + ULONG IncomingAuthInfos; + PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; + PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; + ULONG OutgoingAuthInfos; + PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; + PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; } alias TRUSTED_DOMAIN_AUTH_INFORMATION* PTRUSTED_DOMAIN_AUTH_INFORMATION; struct TRUSTED_DOMAIN_FULL_INFORMATION { - TRUSTED_DOMAIN_INFORMATION_EX Information; - TRUSTED_POSIX_OFFSET_INFO PosixOffset; - TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; + TRUSTED_DOMAIN_INFORMATION_EX Information; + TRUSTED_POSIX_OFFSET_INFO PosixOffset; + TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; } alias TRUSTED_DOMAIN_FULL_INFORMATION* PTRUSTED_DOMAIN_FULL_INFORMATION; extern (Windows) { - NTSTATUS LsaAddAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING, - ULONG); - NTSTATUS LsaCallAuthenticationPackage(HANDLE, ULONG, PVOID, ULONG, - PVOID*, PULONG, PNTSTATUS); - NTSTATUS LsaClose(LSA_HANDLE); - NTSTATUS LsaConnectUntrusted(PHANDLE); - NTSTATUS LsaCreateTrustedDomainEx(LSA_HANDLE, - PTRUSTED_DOMAIN_INFORMATION_EX, PTRUSTED_DOMAIN_AUTH_INFORMATION, - ACCESS_MASK, PLSA_HANDLE); - NTSTATUS LsaDeleteTrustedDomain(LSA_HANDLE, PSID); - NTSTATUS LsaDeregisterLogonProcess(HANDLE); - NTSTATUS LsaEnumerateAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING*, - PULONG); - NTSTATUS LsaEnumerateAccountsWithUserRight(LSA_HANDLE, - PLSA_UNICODE_STRING, PVOID*, PULONG); - NTSTATUS LsaEnumerateTrustedDomains(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, - PVOID*, ULONG, PULONG); - NTSTATUS LsaEnumerateTrustedDomainsEx(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, - TRUSTED_INFORMATION_CLASS, PVOID*, ULONG, PULONG); - NTSTATUS LsaFreeMemory(PVOID); - NTSTATUS LsaFreeReturnBuffer(PVOID); - NTSTATUS LsaLogonUser(HANDLE, PLSA_STRING, SECURITY_LOGON_TYPE, ULONG, - PVOID, ULONG, PTOKEN_GROUPS, PTOKEN_SOURCE, PVOID*, PULONG, PLUID, - PHANDLE, PQUOTA_LIMITS, PNTSTATUS); - NTSTATUS LsaLookupAuthenticationPackage(HANDLE, PLSA_STRING, PULONG); - NTSTATUS LsaLookupNames(LSA_HANDLE, ULONG, PLSA_UNICODE_STRING, - PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_SID*); - NTSTATUS LsaLookupSids(LSA_HANDLE, ULONG, PSID*, - PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_NAME*); - ULONG LsaNtStatusToWinError(NTSTATUS); - NTSTATUS LsaOpenPolicy(PLSA_UNICODE_STRING, PLSA_OBJECT_ATTRIBUTES, - ACCESS_MASK, PLSA_HANDLE); - NTSTATUS LsaQueryDomainInformationPolicy(LSA_HANDLE, - POLICY_DOMAIN_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaQueryInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, - PVOID*); - NTSTATUS LsaQueryLocalInformationPolicy(LSA_HANDLE, - POLICY_LOCAL_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaQueryTrustedDomainInfo(LSA_HANDLE, PSID, - TRUSTED_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaQueryTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, - TRUSTED_INFORMATION_CLASS, PVOID*); - NTSTATUS LsaRegisterLogonProcess(PLSA_STRING, PHANDLE, - PLSA_OPERATIONAL_MODE); - NTSTATUS LsaRemoveAccountRights(LSA_HANDLE, PSID, BOOLEAN, - PLSA_UNICODE_STRING, ULONG); - NTSTATUS LsaRetrievePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, - PLSA_UNICODE_STRING*); - NTSTATUS LsaSetDomainInformationPolicy(LSA_HANDLE, - POLICY_DOMAIN_INFORMATION_CLASS, PVOID); - NTSTATUS LsaSetInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, - PVOID); - NTSTATUS LsaSetLocalInformationPolicy(LSA_HANDLE, - POLICY_LOCAL_INFORMATION_CLASS, PVOID); - NTSTATUS LsaSetTrustedDomainInformation(LSA_HANDLE, PSID, - TRUSTED_INFORMATION_CLASS, PVOID); - NTSTATUS LsaSetTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, - TRUSTED_INFORMATION_CLASS, PVOID); - NTSTATUS LsaStorePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, - PLSA_UNICODE_STRING); + NTSTATUS LsaAddAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING, + ULONG); + NTSTATUS LsaCallAuthenticationPackage(HANDLE, ULONG, PVOID, ULONG, + PVOID*, PULONG, PNTSTATUS); + NTSTATUS LsaClose(LSA_HANDLE); + NTSTATUS LsaConnectUntrusted(PHANDLE); + NTSTATUS LsaCreateTrustedDomainEx(LSA_HANDLE, + PTRUSTED_DOMAIN_INFORMATION_EX, PTRUSTED_DOMAIN_AUTH_INFORMATION, + ACCESS_MASK, PLSA_HANDLE); + NTSTATUS LsaDeleteTrustedDomain(LSA_HANDLE, PSID); + NTSTATUS LsaDeregisterLogonProcess(HANDLE); + NTSTATUS LsaEnumerateAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING*, + PULONG); + NTSTATUS LsaEnumerateAccountsWithUserRight(LSA_HANDLE, + PLSA_UNICODE_STRING, PVOID*, PULONG); + NTSTATUS LsaEnumerateTrustedDomains(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, + PVOID*, ULONG, PULONG); + NTSTATUS LsaEnumerateTrustedDomainsEx(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, + TRUSTED_INFORMATION_CLASS, PVOID*, ULONG, PULONG); + NTSTATUS LsaFreeMemory(PVOID); + NTSTATUS LsaFreeReturnBuffer(PVOID); + NTSTATUS LsaLogonUser(HANDLE, PLSA_STRING, SECURITY_LOGON_TYPE, ULONG, + PVOID, ULONG, PTOKEN_GROUPS, PTOKEN_SOURCE, PVOID*, PULONG, PLUID, + PHANDLE, PQUOTA_LIMITS, PNTSTATUS); + NTSTATUS LsaLookupAuthenticationPackage(HANDLE, PLSA_STRING, PULONG); + NTSTATUS LsaLookupNames(LSA_HANDLE, ULONG, PLSA_UNICODE_STRING, + PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_SID*); + NTSTATUS LsaLookupSids(LSA_HANDLE, ULONG, PSID*, + PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_NAME*); + ULONG LsaNtStatusToWinError(NTSTATUS); + NTSTATUS LsaOpenPolicy(PLSA_UNICODE_STRING, PLSA_OBJECT_ATTRIBUTES, + ACCESS_MASK, PLSA_HANDLE); + NTSTATUS LsaQueryDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, + PVOID*); + NTSTATUS LsaQueryLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryTrustedDomainInfo(LSA_HANDLE, PSID, + TRUSTED_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaQueryTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS, PVOID*); + NTSTATUS LsaRegisterLogonProcess(PLSA_STRING, PHANDLE, + PLSA_OPERATIONAL_MODE); + NTSTATUS LsaRemoveAccountRights(LSA_HANDLE, PSID, BOOLEAN, + PLSA_UNICODE_STRING, ULONG); + NTSTATUS LsaRetrievePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING*); + NTSTATUS LsaSetDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, + PVOID); + NTSTATUS LsaSetLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetTrustedDomainInformation(LSA_HANDLE, PSID, + TRUSTED_INFORMATION_CLASS, PVOID); + NTSTATUS LsaSetTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS, PVOID); + NTSTATUS LsaStorePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING); } alias NTSTATUS function(PUNICODE_STRING, ULONG, PUNICODE_STRING) diff --git a/src/core/sys/windows/ntsecpkg.d b/src/core/sys/windows/ntsecpkg.d index 5c64b88f48..743b16511b 100644 --- a/src/core/sys/windows/ntsecpkg.d +++ b/src/core/sys/windows/ntsecpkg.d @@ -66,61 +66,61 @@ enum :ULONG{ /* enum definitions for Secure Service Provider/Authentication Packages */ enum LSA_TOKEN_INFORMATION_TYPE { - LsaTokenInformationNull, - LsaTokenInformationV1 + LsaTokenInformationNull, + LsaTokenInformationV1 } alias LSA_TOKEN_INFORMATION_TYPE* PLSA_TOKEN_INFORMATION_TYPE; enum SECPKG_EXTENDED_INFORMATION_CLASS { - SecpkgGssInfo = 1, - SecpkgContextThunks, - SecpkgMutualAuthLevel, - SecpkgMaxInfo + SecpkgGssInfo = 1, + SecpkgContextThunks, + SecpkgMutualAuthLevel, + SecpkgMaxInfo } enum SECPKG_NAME_TYPE { - SecNameSamCompatible, - SecNameAlternateId, - SecNameFlat, - SecNameDN + SecNameSamCompatible, + SecNameAlternateId, + SecNameFlat, + SecNameDN } /* struct definitions for SSP/AP */ struct SECPKG_PRIMARY_CRED { - LUID LogonId; - UNICODE_STRING DownlevelName; - UNICODE_STRING DomainName; - UNICODE_STRING Password; - UNICODE_STRING OldPassword; - PSID UserSid; - ULONG Flags; - UNICODE_STRING DnsDomainName; - UNICODE_STRING Upn; - UNICODE_STRING LogonServer; - UNICODE_STRING Spare1; - UNICODE_STRING Spare2; - UNICODE_STRING Spare3; - UNICODE_STRING Spare4; + LUID LogonId; + UNICODE_STRING DownlevelName; + UNICODE_STRING DomainName; + UNICODE_STRING Password; + UNICODE_STRING OldPassword; + PSID UserSid; + ULONG Flags; + UNICODE_STRING DnsDomainName; + UNICODE_STRING Upn; + UNICODE_STRING LogonServer; + UNICODE_STRING Spare1; + UNICODE_STRING Spare2; + UNICODE_STRING Spare3; + UNICODE_STRING Spare4; } alias SECPKG_PRIMARY_CRED* PSECPKG_PRIMARY_CRED; struct SECPKG_SUPPLEMENTAL_CRED { - UNICODE_STRING PackageName; - ULONG CredentialSize; - PUCHAR Credentials; + UNICODE_STRING PackageName; + ULONG CredentialSize; + PUCHAR Credentials; } alias SECPKG_SUPPLEMENTAL_CRED* PSECPKG_SUPPLEMENTAL_CRED; struct SECPKG_SUPPLEMENTAL_CRED_ARRAY { - ULONG CredentialCount; - SECPKG_SUPPLEMENTAL_CRED[1] Credentials; + ULONG CredentialCount; + SECPKG_SUPPLEMENTAL_CRED[1] Credentials; } alias SECPKG_SUPPLEMENTAL_CRED_ARRAY* PSECPKG_SUPPLEMENTAL_CRED_ARRAY; struct SECPKG_PARAMETERS { - ULONG Version; - ULONG MachineState; - ULONG SetupMode; - PSID DomainSid; - UNICODE_STRING DomainName; - UNICODE_STRING DnsDomainName; - GUID DomainGuid; + ULONG Version; + ULONG MachineState; + ULONG SetupMode; + PSID DomainSid; + UNICODE_STRING DomainName; + UNICODE_STRING DnsDomainName; + GUID DomainGuid; } alias SECPKG_PARAMETERS* PSECPKG_PARAMETERS,PSECPKG_EVENT_DOMAIN_CHANGE; alias SECPKG_PARAMETERS SECPKG_EVENT_DOMAIN_CHANGE; @@ -134,41 +134,41 @@ struct SECPKG_CLIENT_INFO { } alias SECPKG_CLIENT_INFO* PSECPKG_CLIENT_INFO; struct SECURITY_USER_DATA { - SECURITY_STRING UserName; - SECURITY_STRING LogonDomainName; - SECURITY_STRING LogonServer; - PSID pSid; + SECURITY_STRING UserName; + SECURITY_STRING LogonDomainName; + SECURITY_STRING LogonServer; + PSID pSid; } alias SECURITY_USER_DATA* PSECURITY_USER_DATA,PSecurityUserData; alias SECURITY_USER_DATA SecurityUserData; struct SECPKG_GSS_INFO { - ULONG EncodedIdLength; - UCHAR[4] EncodedId; + ULONG EncodedIdLength; + UCHAR[4] EncodedId; } alias SECPKG_GSS_INFO* PSECPKG_GSS_INFO; struct SECPKG_CONTEXT_THUNKS { - ULONG InfoLevelCount; - ULONG[1] Levels; + ULONG InfoLevelCount; + ULONG[1] Levels; } alias SECPKG_CONTEXT_THUNKS* PSECPKG_CONTEXT_THUNKS; struct SECPKG_MUTUAL_AUTH_LEVEL { - ULONG MutualAuthLevel; + ULONG MutualAuthLevel; } alias SECPKG_MUTUAL_AUTH_LEVEL* PSECPKG_MUTUAL_AUTH_LEVEL; struct SECPKG_CALL_INFO { - ULONG ProcessId; - ULONG ThreadId; - ULONG Attributes; - ULONG CallCount; + ULONG ProcessId; + ULONG ThreadId; + ULONG Attributes; + ULONG CallCount; } alias SECPKG_CALL_INFO* PSECPKG_CALL_INFO; struct SECPKG_EXTENDED_INFORMATION { - SECPKG_EXTENDED_INFORMATION_CLASS Class; - union _Info{ - SECPKG_GSS_INFO GssInfo; - SECPKG_CONTEXT_THUNKS ContextThunks; - SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel; - } + SECPKG_EXTENDED_INFORMATION_CLASS Class; + union _Info{ + SECPKG_GSS_INFO GssInfo; + SECPKG_CONTEXT_THUNKS ContextThunks; + SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel; + } _Info Info; } alias SECPKG_EXTENDED_INFORMATION* PSECPKG_EXTENDED_INFORMATION; @@ -254,67 +254,67 @@ alias NTSTATUS function(PUNICODE_STRING, PVOID, /* Dispatch tables of functions used by SSP/AP */ struct SECPKG_DLL_FUNCTIONS { - PLSA_ALLOCATE_LSA_HEAP AllocateHeap; - PLSA_FREE_LSA_HEAP FreeHeap; - PLSA_REGISTER_CALLBACK RegisterCallback; + PLSA_ALLOCATE_LSA_HEAP AllocateHeap; + PLSA_FREE_LSA_HEAP FreeHeap; + PLSA_REGISTER_CALLBACK RegisterCallback; } alias SECPKG_DLL_FUNCTIONS* PSECPKG_DLL_FUNCTIONS; struct LSA_DISPATCH_TABLE { - PLSA_CREATE_LOGON_SESSION CreateLogonSession; - PLSA_DELETE_LOGON_SESSION DeleteLogonSession; - PLSA_ADD_CREDENTIAL AddCredential; - PLSA_GET_CREDENTIALS GetCredentials; - PLSA_DELETE_CREDENTIAL DeleteCredential; - PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; - PLSA_FREE_LSA_HEAP FreeLsaHeap; - PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; - PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; - PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; - PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; + PLSA_CREATE_LOGON_SESSION CreateLogonSession; + PLSA_DELETE_LOGON_SESSION DeleteLogonSession; + PLSA_ADD_CREDENTIAL AddCredential; + PLSA_GET_CREDENTIALS GetCredentials; + PLSA_DELETE_CREDENTIAL DeleteCredential; + PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; + PLSA_FREE_LSA_HEAP FreeLsaHeap; + PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; + PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; + PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; + PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; } alias LSA_DISPATCH_TABLE* PLSA_DISPATCH_TABLE; struct LSA_SECPKG_FUNCTION_TABLE { - PLSA_CREATE_LOGON_SESSION CreateLogonSession; - PLSA_DELETE_LOGON_SESSION DeleteLogonSession; - PLSA_ADD_CREDENTIAL AddCredential; - PLSA_GET_CREDENTIALS GetCredentials; - PLSA_DELETE_CREDENTIAL DeleteCredential; - PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; - PLSA_FREE_LSA_HEAP FreeLsaHeap; - PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; - PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; - PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; - PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; - PLSA_IMPERSONATE_CLIENT ImpersonateClient; - PLSA_UNLOAD_PACKAGE UnloadPackage; - PLSA_DUPLICATE_HANDLE DuplicateHandle; - PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials; - PLSA_CREATE_THREAD CreateThread; - PLSA_GET_CLIENT_INFO GetClientInfo; - PLSA_REGISTER_NOTIFICATION RegisterNotification; - PLSA_CANCEL_NOTIFICATION CancelNotification; - PLSA_MAP_BUFFER MapBuffer; - PLSA_CREATE_TOKEN CreateToken; - PLSA_AUDIT_LOGON AuditLogon; - PLSA_CALL_PACKAGE CallPackage; - PLSA_FREE_LSA_HEAP FreeReturnBuffer; - PLSA_GET_CALL_INFO GetCallInfo; - PLSA_CALL_PACKAGEEX CallPackageEx; - PLSA_CREATE_SHARED_MEMORY CreateSharedMemory; - PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory; - PLSA_FREE_SHARED_MEMORY FreeSharedMemory; - PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory; - PLSA_OPEN_SAM_USER OpenSamUser; - PLSA_GET_USER_CREDENTIALS GetUserCredentials; - PLSA_GET_USER_AUTH_DATA GetUserAuthData; - PLSA_CLOSE_SAM_USER CloseSamUser; - PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken; - PLSA_CLIENT_CALLBACK ClientCallback; - PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials; - PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser; - PLSA_CRACK_SINGLE_NAME CrackSingleName; - PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; - PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; + PLSA_CREATE_LOGON_SESSION CreateLogonSession; + PLSA_DELETE_LOGON_SESSION DeleteLogonSession; + PLSA_ADD_CREDENTIAL AddCredential; + PLSA_GET_CREDENTIALS GetCredentials; + PLSA_DELETE_CREDENTIAL DeleteCredential; + PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; + PLSA_FREE_LSA_HEAP FreeLsaHeap; + PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; + PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; + PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; + PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; + PLSA_IMPERSONATE_CLIENT ImpersonateClient; + PLSA_UNLOAD_PACKAGE UnloadPackage; + PLSA_DUPLICATE_HANDLE DuplicateHandle; + PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials; + PLSA_CREATE_THREAD CreateThread; + PLSA_GET_CLIENT_INFO GetClientInfo; + PLSA_REGISTER_NOTIFICATION RegisterNotification; + PLSA_CANCEL_NOTIFICATION CancelNotification; + PLSA_MAP_BUFFER MapBuffer; + PLSA_CREATE_TOKEN CreateToken; + PLSA_AUDIT_LOGON AuditLogon; + PLSA_CALL_PACKAGE CallPackage; + PLSA_FREE_LSA_HEAP FreeReturnBuffer; + PLSA_GET_CALL_INFO GetCallInfo; + PLSA_CALL_PACKAGEEX CallPackageEx; + PLSA_CREATE_SHARED_MEMORY CreateSharedMemory; + PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory; + PLSA_FREE_SHARED_MEMORY FreeSharedMemory; + PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory; + PLSA_OPEN_SAM_USER OpenSamUser; + PLSA_GET_USER_CREDENTIALS GetUserCredentials; + PLSA_GET_USER_AUTH_DATA GetUserAuthData; + PLSA_CLOSE_SAM_USER CloseSamUser; + PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken; + PLSA_CLIENT_CALLBACK ClientCallback; + PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials; + PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser; + PLSA_CRACK_SINGLE_NAME CrackSingleName; + PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; + PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; } alias LSA_SECPKG_FUNCTION_TABLE* PLSA_SECPKG_FUNCTION_TABLE; @@ -389,51 +389,51 @@ alias NTSTATUS function(PSecBuffer, HANDLE, /* Dispatch tables of functions implemented by SSP/AP */ struct SECPKG_FUNCTION_TABLE { - PLSA_AP_INITIALIZE_PACKAGE InitializePackage; - PLSA_AP_LOGON_USER LogonUser; - PLSA_AP_CALL_PACKAGE CallPackage; - PLSA_AP_LOGON_TERMINATED LogonTerminated; - PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted; - PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; - PLSA_AP_LOGON_USER_EX LogonUserEx; - PLSA_AP_LOGON_USER_EX2 LogonUserEx2; - SpInitializeFn *Initialize; - SpShutDownFn *Shutdown; - SpGetInfoFn *GetInfo; - SpAcceptCredentialsFn *AcceptCredentials; - SpAcquireCredentialsHandleFn *AcquireCredentialsHandle; - SpQueryCredentialsAttributesFn *QueryCredentialsAttributes; - SpFreeCredentialsHandleFn *FreeCredentialsHandle; - SpSaveCredentialsFn *SaveCredentials; - SpGetCredentialsFn *GetCredentials; - SpDeleteCredentialsFn *DeleteCredentials; - SpInitLsaModeContextFn *InitLsaModeContext; - SpAcceptLsaModeContextFn *AcceptLsaModeContext; - SpDeleteContextFn *DeleteContext; - SpApplyControlTokenFn *ApplyControlToken; - SpGetUserInfoFn *GetUserInfo; - SpGetExtendedInformationFn *GetExtendedInformation; - SpQueryContextAttributesFn *QueryContextAttributes; - SpAddCredentialsFn *AddCredentials; - SpSetExtendedInformationFn *SetExtendedInformation; + PLSA_AP_INITIALIZE_PACKAGE InitializePackage; + PLSA_AP_LOGON_USER LogonUser; + PLSA_AP_CALL_PACKAGE CallPackage; + PLSA_AP_LOGON_TERMINATED LogonTerminated; + PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted; + PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; + PLSA_AP_LOGON_USER_EX LogonUserEx; + PLSA_AP_LOGON_USER_EX2 LogonUserEx2; + SpInitializeFn *Initialize; + SpShutDownFn *Shutdown; + SpGetInfoFn *GetInfo; + SpAcceptCredentialsFn *AcceptCredentials; + SpAcquireCredentialsHandleFn *AcquireCredentialsHandle; + SpQueryCredentialsAttributesFn *QueryCredentialsAttributes; + SpFreeCredentialsHandleFn *FreeCredentialsHandle; + SpSaveCredentialsFn *SaveCredentials; + SpGetCredentialsFn *GetCredentials; + SpDeleteCredentialsFn *DeleteCredentials; + SpInitLsaModeContextFn *InitLsaModeContext; + SpAcceptLsaModeContextFn *AcceptLsaModeContext; + SpDeleteContextFn *DeleteContext; + SpApplyControlTokenFn *ApplyControlToken; + SpGetUserInfoFn *GetUserInfo; + SpGetExtendedInformationFn *GetExtendedInformation; + SpQueryContextAttributesFn *QueryContextAttributes; + SpAddCredentialsFn *AddCredentials; + SpSetExtendedInformationFn *SetExtendedInformation; } alias SECPKG_FUNCTION_TABLE* PSECPKG_FUNCTION_TABLE; struct SECPKG_USER_FUNCTION_TABLE { - SpInstanceInitFn *InstanceInit; - SpInitUserModeContextFn *InitUserModeContext; - SpMakeSignatureFn *MakeSignature; - SpVerifySignatureFn *VerifySignature; - SpSealMessageFn *SealMessage; - SpUnsealMessageFn *UnsealMessage; - SpGetContextTokenFn *GetContextToken; - SpQueryContextAttributesFn *QueryContextAttributes; - SpCompleteAuthTokenFn *CompleteAuthToken; - SpDeleteContextFn *DeleteUserModeContext; - SpFormatCredentialsFn *FormatCredentials; - SpMarshallSupplementalCredsFn *MarshallSupplementalCreds; - SpExportSecurityContextFn *ExportContext; - SpImportSecurityContextFn *ImportContext; + SpInstanceInitFn *InstanceInit; + SpInitUserModeContextFn *InitUserModeContext; + SpMakeSignatureFn *MakeSignature; + SpVerifySignatureFn *VerifySignature; + SpSealMessageFn *SealMessage; + SpUnsealMessageFn *UnsealMessage; + SpGetContextTokenFn *GetContextToken; + SpQueryContextAttributesFn *QueryContextAttributes; + SpCompleteAuthTokenFn *CompleteAuthToken; + SpDeleteContextFn *DeleteUserModeContext; + SpFormatCredentialsFn *FormatCredentials; + SpMarshallSupplementalCredsFn *MarshallSupplementalCreds; + SpExportSecurityContextFn *ExportContext; + SpImportSecurityContextFn *ImportContext; } alias SECPKG_USER_FUNCTION_TABLE* PSECPKG_USER_FUNCTION_TABLE; diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d index 91e8aadf1c..878f05fd06 100644 --- a/src/core/sys/windows/oaidl.d +++ b/src/core/sys/windows/oaidl.d @@ -55,184 +55,184 @@ const IMPLTYPEFLAG_FDEFAULTVTABLE = 8; enum SYSKIND { - SYS_WIN16, - SYS_WIN32, - SYS_MAC + SYS_WIN16, + SYS_WIN32, + SYS_MAC } enum LIBFLAGS { - LIBFLAG_FRESTRICTED = 1, - LIBFLAG_FCONTROL = 2, - LIBFLAG_FHIDDEN = 4, - LIBFLAG_FHASDISKIMAGE = 8 + LIBFLAG_FRESTRICTED = 1, + LIBFLAG_FCONTROL = 2, + LIBFLAG_FHIDDEN = 4, + LIBFLAG_FHASDISKIMAGE = 8 } struct TLIBATTR { - GUID guid; - LCID lcid; - SYSKIND syskind; - WORD wMajorVerNum; - WORD wMinorVerNum; - WORD wLibFlags; + GUID guid; + LCID lcid; + SYSKIND syskind; + WORD wMajorVerNum; + WORD wMinorVerNum; + WORD wLibFlags; } alias TLIBATTR* LPTLIBATTR; alias CY CURRENCY; struct SAFEARRAYBOUND { - ULONG cElements; - LONG lLbound; + ULONG cElements; + LONG lLbound; } alias SAFEARRAYBOUND* LPSAFEARRAYBOUND; struct SAFEARR_BSTR { - ULONG Size; - wireBSTR* aBstr; + ULONG Size; + wireBSTR* aBstr; } struct SAFEARR_UNKNOWN { - ULONG Size; - IUnknown* apUnknown; + ULONG Size; + IUnknown* apUnknown; } struct SAFEARR_DISPATCH { - ULONG Size; - LPDISPATCH* apDispatch; + ULONG Size; + LPDISPATCH* apDispatch; } struct SAFEARR_VARIANT { - ULONG Size; - _wireVARIANT* aVariant; + ULONG Size; + _wireVARIANT* aVariant; } enum SF_TYPE { - SF_ERROR=VARENUM.VT_ERROR, - SF_I1=VARENUM.VT_I1, - SF_I2=VARENUM.VT_I2, - SF_I4=VARENUM.VT_I4, - SF_I8=VARENUM.VT_I8, - SF_BSTR=VARENUM.VT_BSTR, - SF_UNKNOWN=VARENUM.VT_UNKNOWN, - SF_DISPATCH=VARENUM.VT_DISPATCH, - SF_VARIANT=VARENUM.VT_VARIANT + SF_ERROR=VARENUM.VT_ERROR, + SF_I1=VARENUM.VT_I1, + SF_I2=VARENUM.VT_I2, + SF_I4=VARENUM.VT_I4, + SF_I8=VARENUM.VT_I8, + SF_BSTR=VARENUM.VT_BSTR, + SF_UNKNOWN=VARENUM.VT_UNKNOWN, + SF_DISPATCH=VARENUM.VT_DISPATCH, + SF_VARIANT=VARENUM.VT_VARIANT } struct _wireBRECORD { - ULONG fFlags; - ULONG clSize; - LPRECORDINFO* pRecInfo; - byte* pRecord; + ULONG fFlags; + ULONG clSize; + LPRECORDINFO* pRecInfo; + byte* pRecord; } alias _wireBRECORD* wireBRECORD; struct SAFEARR_BRECORD { - ULONG Size; - wireBRECORD* aRecord; + ULONG Size; + wireBRECORD* aRecord; } struct SAFEARR_HAVEIID { - ULONG Size; - IUnknown* apUnknown; - IID iid; + ULONG Size; + IUnknown* apUnknown; + IID iid; } struct SAFEARRAYUNION { - ULONG sfType; - union _u { - SAFEARR_BSTR BstrStr; - SAFEARR_UNKNOWN UnknownStr; - SAFEARR_DISPATCH DispatchStr; - SAFEARR_VARIANT VariantStr; - SAFEARR_BRECORD RecordStr; - SAFEARR_HAVEIID HaveIidStr; - BYTE_SIZEDARR ByteStr; - WORD_SIZEDARR WordStr; - DWORD_SIZEDARR LongStr; - HYPER_SIZEDARR HyperStr; - } - _u u; + ULONG sfType; + union _u { + SAFEARR_BSTR BstrStr; + SAFEARR_UNKNOWN UnknownStr; + SAFEARR_DISPATCH DispatchStr; + SAFEARR_VARIANT VariantStr; + SAFEARR_BRECORD RecordStr; + SAFEARR_HAVEIID HaveIidStr; + BYTE_SIZEDARR ByteStr; + WORD_SIZEDARR WordStr; + DWORD_SIZEDARR LongStr; + HYPER_SIZEDARR HyperStr; + } + _u u; } struct _wireSAFEARRAY { - USHORT cDims; - USHORT fFeatures; - ULONG cbElements; - ULONG cLocks; - SAFEARRAYUNION uArrayStructs; - SAFEARRAYBOUND[1] rgsabound; + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + SAFEARRAYUNION uArrayStructs; + SAFEARRAYBOUND[1] rgsabound; } alias _wireSAFEARRAY* wireSAFEARRAY; alias wireSAFEARRAY* wirePSAFEARRAY; struct SAFEARRAY { - USHORT cDims; - USHORT fFeatures; - ULONG cbElements; - ULONG cLocks; - PVOID pvData; - SAFEARRAYBOUND[1] rgsabound; + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + PVOID pvData; + SAFEARRAYBOUND[1] rgsabound; } alias SAFEARRAY* LPSAFEARRAY; struct VARIANT { - union { - struct { - VARTYPE vt; - WORD wReserved1; - WORD wReserved2; - WORD wReserved3; - union { - int lVal; - LONGLONG llVal; - ubyte bVal; - short iVal; - float fltVal; - double dblVal; - VARIANT_BOOL boolVal; - SCODE scode; - CY cyVal; - DATE date; - BSTR bstrVal; - IUnknown punkVal; - IDispatch pdispVal; - SAFEARRAY* parray; - ubyte* pbVal; - short* piVal; - int* plVal; - float* pfltVal; - double* pdblVal; - VARIANT_BOOL* pboolVal; - _VARIANT_BOOL* pbool; - SCODE* pscode; - CY* pcyVal; - DATE* pdate; - BSTR* pbstrVal; - IUnknown* ppunkVal; - IDispatch* ppdispVal; - SAFEARRAY** pparray; - VARIANT* pvarVal; - void* byref; - CHAR cVal; - USHORT uiVal; - ULONG ulVal; - ULONGLONG ullVal; - INT intVal; - UINT uintVal; - DECIMAL* pdecVal; - CHAR* pcVal; - USHORT* puiVal; - ULONG* pulVal; - INT* pintVal; - UINT* puintVal; - struct { - PVOID pvRecord; - IRecordInfo pRecInfo; - } - } - } - DECIMAL decVal; - } + union { + struct { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + union { + int lVal; + LONGLONG llVal; + ubyte bVal; + short iVal; + float fltVal; + double dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + BSTR bstrVal; + IUnknown punkVal; + IDispatch pdispVal; + SAFEARRAY* parray; + ubyte* pbVal; + short* piVal; + int* plVal; + float* pfltVal; + double* pdblVal; + VARIANT_BOOL* pboolVal; + _VARIANT_BOOL* pbool; + SCODE* pscode; + CY* pcyVal; + DATE* pdate; + BSTR* pbstrVal; + IUnknown* ppunkVal; + IDispatch* ppdispVal; + SAFEARRAY** pparray; + VARIANT* pvarVal; + void* byref; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + ULONGLONG ullVal; + INT intVal; + UINT uintVal; + DECIMAL* pdecVal; + CHAR* pcVal; + USHORT* puiVal; + ULONG* pulVal; + INT* pintVal; + UINT* puintVal; + struct { + PVOID pvRecord; + IRecordInfo pRecInfo; + } + } + } + DECIMAL decVal; + } } alias VARIANT* LPVARIANT; @@ -240,56 +240,56 @@ alias VARIANT VARIANTARG; alias VARIANT* LPVARIANTARG; struct _wireVARIANT { - DWORD clSize; - DWORD rpcReserved; - USHORT vt; - USHORT wReserved1; - USHORT wReserved2; - USHORT wReserved3; - union { - LONG lVal; - LONGLONG llVal; - BYTE bVal; - SHORT iVal; - FLOAT fltVal; - DOUBLE dblVal; - VARIANT_BOOL boolVal; - SCODE scode; - CY cyVal; - DATE date; - wireBSTR bstrVal; - IUnknown punkVal; - LPDISPATCH pdispVal; - wirePSAFEARRAY parray; - wireBRECORD brecVal; - BYTE* pbVal; - SHORT* piVal; - LONG* plVal; - FLOAT* pfltVal; - DOUBLE* pdblVal; - VARIANT_BOOL* pboolVal; - SCODE* pscode; - CY* pcyVal; - DATE* pdate; - wireBSTR* pbstrVal; - IUnknown* ppunkVal; - LPDISPATCH* ppdispVal; - wirePSAFEARRAY* pparray; - wireVARIANT* pvarVal; - CHAR cVal; - USHORT uiVal; - ULONG ulVal; - ULONGLONG ullVal; - INT intVal; - UINT uintVal; - DECIMAL decVal; - DECIMAL* pdecVal; - CHAR* pcVal; - USHORT* puiVal; - ULONG* pulVal; - INT* pintVal; - UINT* puintVal; - } + DWORD clSize; + DWORD rpcReserved; + USHORT vt; + USHORT wReserved1; + USHORT wReserved2; + USHORT wReserved3; + union { + LONG lVal; + LONGLONG llVal; + BYTE bVal; + SHORT iVal; + FLOAT fltVal; + DOUBLE dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + wireBSTR bstrVal; + IUnknown punkVal; + LPDISPATCH pdispVal; + wirePSAFEARRAY parray; + wireBRECORD brecVal; + BYTE* pbVal; + SHORT* piVal; + LONG* plVal; + FLOAT* pfltVal; + DOUBLE* pdblVal; + VARIANT_BOOL* pboolVal; + SCODE* pscode; + CY* pcyVal; + DATE* pdate; + wireBSTR* pbstrVal; + IUnknown* ppunkVal; + LPDISPATCH* ppdispVal; + wirePSAFEARRAY* pparray; + wireVARIANT* pvarVal; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + ULONGLONG ullVal; + INT intVal; + UINT uintVal; + DECIMAL decVal; + DECIMAL* pdecVal; + CHAR* pcVal; + USHORT* puiVal; + ULONG* pulVal; + INT* pintVal; + UINT* puintVal; + } } alias _wireVARIANT* wireVARIANT; @@ -298,374 +298,374 @@ alias DISPID MEMBERID; alias DWORD HREFTYPE; enum TYPEKIND { - TKIND_ENUM, TKIND_RECORD, TKIND_MODULE, TKIND_INTERFACE, TKIND_DISPATCH, - TKIND_COCLASS, TKIND_ALIAS, TKIND_UNION, TKIND_MAX + TKIND_ENUM, TKIND_RECORD, TKIND_MODULE, TKIND_INTERFACE, TKIND_DISPATCH, + TKIND_COCLASS, TKIND_ALIAS, TKIND_UNION, TKIND_MAX } struct TYPEDESC { - union { - TYPEDESC* lptdesc; - ARRAYDESC* lpadesc; - HREFTYPE hreftype; - } - VARTYPE vt; + union { + TYPEDESC* lptdesc; + ARRAYDESC* lpadesc; + HREFTYPE hreftype; + } + VARTYPE vt; } struct ARRAYDESC { - TYPEDESC tdescElem; - USHORT cDims; - SAFEARRAYBOUND[1] rgbounds; + TYPEDESC tdescElem; + USHORT cDims; + SAFEARRAYBOUND[1] rgbounds; } struct PARAMDESCEX { - ULONG cBytes; - VARIANTARG varDefaultValue; + ULONG cBytes; + VARIANTARG varDefaultValue; } alias PARAMDESCEX* LPPARAMDESCEX; struct PARAMDESC { - LPPARAMDESCEX pparamdescex; - USHORT wParamFlags; + LPPARAMDESCEX pparamdescex; + USHORT wParamFlags; } alias PARAMDESC* LPPARAMDESC; struct IDLDESC { - ULONG dwReserved; - USHORT wIDLFlags; + ULONG dwReserved; + USHORT wIDLFlags; } alias IDLDESC* LPIDLDESC; struct ELEMDESC { - TYPEDESC tdesc; - union { - IDLDESC idldesc; - PARAMDESC paramdesc; - } + TYPEDESC tdesc; + union { + IDLDESC idldesc; + PARAMDESC paramdesc; + } } alias ELEMDESC* LPELEMDESC; struct TYPEATTR { - GUID guid; - LCID lcid; - DWORD dwReserved; - MEMBERID memidConstructor; - MEMBERID memidDestructor; - LPOLESTR lpstrSchema; - ULONG cbSizeInstance; - TYPEKIND typekind; - WORD cFuncs; - WORD cVars; - WORD cImplTypes; - WORD cbSizeVft; - WORD cbAlignment; - WORD wTypeFlags; - WORD wMajorVerNum; - WORD wMinorVerNum; - TYPEDESC tdescAlias; - IDLDESC idldescType; + GUID guid; + LCID lcid; + DWORD dwReserved; + MEMBERID memidConstructor; + MEMBERID memidDestructor; + LPOLESTR lpstrSchema; + ULONG cbSizeInstance; + TYPEKIND typekind; + WORD cFuncs; + WORD cVars; + WORD cImplTypes; + WORD cbSizeVft; + WORD cbAlignment; + WORD wTypeFlags; + WORD wMajorVerNum; + WORD wMinorVerNum; + TYPEDESC tdescAlias; + IDLDESC idldescType; } alias TYPEATTR* LPTYPEATTR; struct DISPPARAMS { - VARIANTARG* rgvarg; - DISPID* rgdispidNamedArgs; - UINT cArgs; - UINT cNamedArgs; + VARIANTARG* rgvarg; + DISPID* rgdispidNamedArgs; + UINT cArgs; + UINT cNamedArgs; } struct EXCEPINFO { - WORD wCode; - WORD wReserved; - BSTR bstrSource; - BSTR bstrDescription; - BSTR bstrHelpFile; - DWORD dwHelpContext; - PVOID pvReserved; - extern (Windows) { - HRESULT function (EXCEPINFO* ) pfnDeferredFillIn; - } - SCODE scode; + WORD wCode; + WORD wReserved; + BSTR bstrSource; + BSTR bstrDescription; + BSTR bstrHelpFile; + DWORD dwHelpContext; + PVOID pvReserved; + extern (Windows) { + HRESULT function (EXCEPINFO* ) pfnDeferredFillIn; + } + SCODE scode; } alias EXCEPINFO* LPEXCEPINFO; enum CALLCONV { - CC_FASTCALL, - CC_CDECL, - CC_MSCPASCAL, - CC_PASCAL=CC_MSCPASCAL, - CC_MACPASCAL, - CC_STDCALL, - CC_FPFASTCALL, - CC_SYSCALL, - CC_MPWCDECL, - CC_MPWPASCAL, - CC_MAX=CC_MPWPASCAL + CC_FASTCALL, + CC_CDECL, + CC_MSCPASCAL, + CC_PASCAL=CC_MSCPASCAL, + CC_MACPASCAL, + CC_STDCALL, + CC_FPFASTCALL, + CC_SYSCALL, + CC_MPWCDECL, + CC_MPWPASCAL, + CC_MAX=CC_MPWPASCAL } enum FUNCKIND { - FUNC_VIRTUAL, - FUNC_PUREVIRTUAL, - FUNC_NONVIRTUAL, - FUNC_STATIC, - FUNC_DISPATCH + FUNC_VIRTUAL, + FUNC_PUREVIRTUAL, + FUNC_NONVIRTUAL, + FUNC_STATIC, + FUNC_DISPATCH } enum INVOKEKIND { - INVOKE_FUNC = 1, - INVOKE_PROPERTYGET = 2, - INVOKE_PROPERTYPUT = 4, - INVOKE_PROPERTYPUTREF = 8 + INVOKE_FUNC = 1, + INVOKE_PROPERTYGET = 2, + INVOKE_PROPERTYPUT = 4, + INVOKE_PROPERTYPUTREF = 8 } struct FUNCDESC { - MEMBERID memid; - SCODE* lprgscode; - ELEMDESC* lprgelemdescParam; - FUNCKIND funckind; - INVOKEKIND invkind; - CALLCONV callconv; - SHORT cParams; - SHORT cParamsOpt; - SHORT oVft; - SHORT cScodes; - ELEMDESC elemdescFunc; - WORD wFuncFlags; + MEMBERID memid; + SCODE* lprgscode; + ELEMDESC* lprgelemdescParam; + FUNCKIND funckind; + INVOKEKIND invkind; + CALLCONV callconv; + SHORT cParams; + SHORT cParamsOpt; + SHORT oVft; + SHORT cScodes; + ELEMDESC elemdescFunc; + WORD wFuncFlags; } alias FUNCDESC* LPFUNCDESC; enum VARKIND { - VAR_PERINSTANCE, VAR_STATIC, VAR_CONST, VAR_DISPATCH + VAR_PERINSTANCE, VAR_STATIC, VAR_CONST, VAR_DISPATCH } struct VARDESC { - MEMBERID memid; - LPOLESTR lpstrSchema; - union { - ULONG oInst; - VARIANT* lpvarValue; - } - ELEMDESC elemdescVar; - WORD wVarFlags; - VARKIND varkind; + MEMBERID memid; + LPOLESTR lpstrSchema; + union { + ULONG oInst; + VARIANT* lpvarValue; + } + ELEMDESC elemdescVar; + WORD wVarFlags; + VARKIND varkind; } alias VARDESC* LPVARDESC; enum TYPEFLAGS { - TYPEFLAG_FAPPOBJECT = 1, - TYPEFLAG_FCANCREATE = 2, - TYPEFLAG_FLICENSED = 4, - TYPEFLAG_FPREDECLID = 8, - TYPEFLAG_FHIDDEN = 16, - TYPEFLAG_FCONTROL = 32, - TYPEFLAG_FDUAL = 64, - TYPEFLAG_FNONEXTENSIBLE = 128, - TYPEFLAG_FOLEAUTOMATION = 256, - TYPEFLAG_FRESTRICTED = 512, - TYPEFLAG_FAGGREGATABLE = 1024, - TYPEFLAG_FREPLACEABLE = 2048, - TYPEFLAG_FDISPATCHABLE = 4096, - TYPEFLAG_FREVERSEBIND = 8192 + TYPEFLAG_FAPPOBJECT = 1, + TYPEFLAG_FCANCREATE = 2, + TYPEFLAG_FLICENSED = 4, + TYPEFLAG_FPREDECLID = 8, + TYPEFLAG_FHIDDEN = 16, + TYPEFLAG_FCONTROL = 32, + TYPEFLAG_FDUAL = 64, + TYPEFLAG_FNONEXTENSIBLE = 128, + TYPEFLAG_FOLEAUTOMATION = 256, + TYPEFLAG_FRESTRICTED = 512, + TYPEFLAG_FAGGREGATABLE = 1024, + TYPEFLAG_FREPLACEABLE = 2048, + TYPEFLAG_FDISPATCHABLE = 4096, + TYPEFLAG_FREVERSEBIND = 8192 } enum FUNCFLAGS { - FUNCFLAG_FRESTRICTED = 1, - FUNCFLAG_FSOURCE = 2, - FUNCFLAG_FBINDABLE = 4, - FUNCFLAG_FREQUESTEDIT = 8, - FUNCFLAG_FDISPLAYBIND = 16, - FUNCFLAG_FDEFAULTBIND = 32, - FUNCFLAG_FHIDDEN = 64, - FUNCFLAG_FUSESGETLASTERROR = 128, - FUNCFLAG_FDEFAULTCOLLELEM = 256, - FUNCFLAG_FUIDEFAULT = 512, - FUNCFLAG_FNONBROWSABLE = 1024, - FUNCFLAG_FREPLACEABLE = 2048, - FUNCFLAG_FIMMEDIATEBIND = 4096 + FUNCFLAG_FRESTRICTED = 1, + FUNCFLAG_FSOURCE = 2, + FUNCFLAG_FBINDABLE = 4, + FUNCFLAG_FREQUESTEDIT = 8, + FUNCFLAG_FDISPLAYBIND = 16, + FUNCFLAG_FDEFAULTBIND = 32, + FUNCFLAG_FHIDDEN = 64, + FUNCFLAG_FUSESGETLASTERROR = 128, + FUNCFLAG_FDEFAULTCOLLELEM = 256, + FUNCFLAG_FUIDEFAULT = 512, + FUNCFLAG_FNONBROWSABLE = 1024, + FUNCFLAG_FREPLACEABLE = 2048, + FUNCFLAG_FIMMEDIATEBIND = 4096 } enum VARFLAGS { - VARFLAG_FREADONLY = 1, - VARFLAG_FSOURCE = 2, - VARFLAG_FBINDABLE = 4, - VARFLAG_FREQUESTEDIT = 8, - VARFLAG_FDISPLAYBIND = 16, - VARFLAG_FDEFAULTBIND = 32, - VARFLAG_FHIDDEN = 64, - VARFLAG_FRESTRICTED = 128, - VARFLAG_FDEFAULTCOLLELEM = 256, - VARFLAG_FUIDEFAULT = 512, - VARFLAG_FNONBROWSABLE = 1024, - VARFLAG_FREPLACEABLE = 2048, - VARFLAG_FIMMEDIATEBIND = 4096 + VARFLAG_FREADONLY = 1, + VARFLAG_FSOURCE = 2, + VARFLAG_FBINDABLE = 4, + VARFLAG_FREQUESTEDIT = 8, + VARFLAG_FDISPLAYBIND = 16, + VARFLAG_FDEFAULTBIND = 32, + VARFLAG_FHIDDEN = 64, + VARFLAG_FRESTRICTED = 128, + VARFLAG_FDEFAULTCOLLELEM = 256, + VARFLAG_FUIDEFAULT = 512, + VARFLAG_FNONBROWSABLE = 1024, + VARFLAG_FREPLACEABLE = 2048, + VARFLAG_FIMMEDIATEBIND = 4096 } struct CLEANLOCALSTORAGE { - IUnknown pInterface; - PVOID pStorage; - DWORD flags; + IUnknown pInterface; + PVOID pStorage; + DWORD flags; } struct CUSTDATAITEM { - GUID guid; - VARIANTARG varValue; + GUID guid; + VARIANTARG varValue; } alias CUSTDATAITEM* LPCUSTDATAITEM; struct CUSTDATA { - DWORD cCustData; - LPCUSTDATAITEM prgCustData; + DWORD cCustData; + LPCUSTDATAITEM prgCustData; } alias CUSTDATA* LPCUSTDATA; enum DESCKIND { - DESCKIND_NONE = 0, - DESCKIND_FUNCDESC = DESCKIND_NONE+1, - DESCKIND_VARDESC = DESCKIND_FUNCDESC+1, - DESCKIND_TYPECOMP = DESCKIND_VARDESC+1, - DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP+1, - DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ+1 + DESCKIND_NONE = 0, + DESCKIND_FUNCDESC = DESCKIND_NONE+1, + DESCKIND_VARDESC = DESCKIND_FUNCDESC+1, + DESCKIND_TYPECOMP = DESCKIND_VARDESC+1, + DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP+1, + DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ+1 } union BINDPTR { - LPFUNCDESC lpfuncdesc; - LPVARDESC lpvardesc; - LPTYPECOMP lptcomp; + LPFUNCDESC lpfuncdesc; + LPVARDESC lpvardesc; + LPTYPECOMP lptcomp; } alias BINDPTR* LPBINDPTR; interface IDispatch : IUnknown { - HRESULT GetTypeInfoCount(UINT*); - HRESULT GetTypeInfo(UINT, LCID, LPTYPEINFO*); - HRESULT GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*); - HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); + HRESULT GetTypeInfoCount(UINT*); + HRESULT GetTypeInfo(UINT, LCID, LPTYPEINFO*); + HRESULT GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*); + HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); } alias IDispatch LPDISPATCH; interface IEnumVARIANT : IUnknown { - HRESULT Next(ULONG, VARIANT*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumVARIANT*); + HRESULT Next(ULONG, VARIANT*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumVARIANT*); } alias IEnumVARIANT LPENUMVARIANT; interface ITypeComp : IUnknown { - HRESULT Bind(LPOLESTR, ULONG, WORD, LPTYPEINFO*, DESCKIND*, LPBINDPTR); - HRESULT BindType(LPOLESTR, ULONG, LPTYPEINFO*, LPTYPECOMP*); + HRESULT Bind(LPOLESTR, ULONG, WORD, LPTYPEINFO*, DESCKIND*, LPBINDPTR); + HRESULT BindType(LPOLESTR, ULONG, LPTYPEINFO*, LPTYPECOMP*); } alias ITypeComp LPTYPECOMP; interface ITypeInfo : IUnknown { - HRESULT GetTypeAttr(LPTYPEATTR*); - HRESULT GetTypeComp(LPTYPECOMP*); - HRESULT GetFuncDesc(UINT, LPFUNCDESC*); - HRESULT GetVarDesc(UINT, LPVARDESC*); - HRESULT GetNames(MEMBERID, BSTR*, UINT, UINT*); - HRESULT GetRefTypeOfImplType(UINT, HREFTYPE*); - HRESULT GetImplTypeFlags(UINT, INT*); - HRESULT GetIDsOfNames(LPOLESTR*, UINT, MEMBERID*); - HRESULT Invoke(PVOID, MEMBERID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, - UINT*); - HRESULT GetDocumentation(MEMBERID, BSTR*, BSTR*, DWORD*, BSTR*); - HRESULT GetDllEntry(MEMBERID, INVOKEKIND, BSTR*, BSTR*, WORD*); - HRESULT GetRefTypeInfo(HREFTYPE, LPTYPEINFO*); - HRESULT AddressOfMember(MEMBERID, INVOKEKIND, PVOID*); - HRESULT CreateInstance(LPUNKNOWN, REFIID, PVOID*); - HRESULT GetMops(MEMBERID, BSTR*); - HRESULT GetContainingTypeLib(LPTYPELIB*, UINT*); - void ReleaseTypeAttr(LPTYPEATTR); - void ReleaseFuncDesc(LPFUNCDESC); - void ReleaseVarDesc(LPVARDESC); + HRESULT GetTypeAttr(LPTYPEATTR*); + HRESULT GetTypeComp(LPTYPECOMP*); + HRESULT GetFuncDesc(UINT, LPFUNCDESC*); + HRESULT GetVarDesc(UINT, LPVARDESC*); + HRESULT GetNames(MEMBERID, BSTR*, UINT, UINT*); + HRESULT GetRefTypeOfImplType(UINT, HREFTYPE*); + HRESULT GetImplTypeFlags(UINT, INT*); + HRESULT GetIDsOfNames(LPOLESTR*, UINT, MEMBERID*); + HRESULT Invoke(PVOID, MEMBERID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, + UINT*); + HRESULT GetDocumentation(MEMBERID, BSTR*, BSTR*, DWORD*, BSTR*); + HRESULT GetDllEntry(MEMBERID, INVOKEKIND, BSTR*, BSTR*, WORD*); + HRESULT GetRefTypeInfo(HREFTYPE, LPTYPEINFO*); + HRESULT AddressOfMember(MEMBERID, INVOKEKIND, PVOID*); + HRESULT CreateInstance(LPUNKNOWN, REFIID, PVOID*); + HRESULT GetMops(MEMBERID, BSTR*); + HRESULT GetContainingTypeLib(LPTYPELIB*, UINT*); + void ReleaseTypeAttr(LPTYPEATTR); + void ReleaseFuncDesc(LPFUNCDESC); + void ReleaseVarDesc(LPVARDESC); } alias ITypeInfo LPTYPEINFO; interface ITypeInfo2 : ITypeInfo { - HRESULT GetTypeKind(TYPEKIND*); - HRESULT GetTypeFlags(ULONG*); - HRESULT GetFuncIndexOfMemId(MEMBERID, INVOKEKIND, UINT*); - HRESULT GetVarIndexOfMemId(MEMBERID, UINT*); - HRESULT GetCustData(REFGUID, VARIANT*); - HRESULT GetFuncCustData(UINT, REFGUID, VARIANT*); - HRESULT GetParamCustData(UINT, UINT, REFGUID, VARIANT*); - HRESULT GetVarCustData(UINT, REFGUID, VARIANT*); - HRESULT GetImplTypeCustData(UINT, REFGUID, VARIANT*); - HRESULT GetDocumentation2(MEMBERID, LCID, BSTR*, DWORD*, BSTR*); - HRESULT GetAllCustData(CUSTDATA*); - HRESULT GetAllFuncCustData(UINT, CUSTDATA*); - HRESULT GetAllParamCustData(UINT, UINT, CUSTDATA*); - HRESULT GetAllVarCustData(UINT, CUSTDATA*); - HRESULT GetAllImplTypeCustData(UINT, CUSTDATA*); + HRESULT GetTypeKind(TYPEKIND*); + HRESULT GetTypeFlags(ULONG*); + HRESULT GetFuncIndexOfMemId(MEMBERID, INVOKEKIND, UINT*); + HRESULT GetVarIndexOfMemId(MEMBERID, UINT*); + HRESULT GetCustData(REFGUID, VARIANT*); + HRESULT GetFuncCustData(UINT, REFGUID, VARIANT*); + HRESULT GetParamCustData(UINT, UINT, REFGUID, VARIANT*); + HRESULT GetVarCustData(UINT, REFGUID, VARIANT*); + HRESULT GetImplTypeCustData(UINT, REFGUID, VARIANT*); + HRESULT GetDocumentation2(MEMBERID, LCID, BSTR*, DWORD*, BSTR*); + HRESULT GetAllCustData(CUSTDATA*); + HRESULT GetAllFuncCustData(UINT, CUSTDATA*); + HRESULT GetAllParamCustData(UINT, UINT, CUSTDATA*); + HRESULT GetAllVarCustData(UINT, CUSTDATA*); + HRESULT GetAllImplTypeCustData(UINT, CUSTDATA*); } alias ITypeInfo2 LPTYPEINFO2; interface ITypeLib : IUnknown { - UINT GetTypeInfoCount(); - HRESULT GetTypeInfo(UINT, ITypeInfo*); - HRESULT GetTypeInfoType(UINT, TYPEKIND*); - HRESULT GetTypeInfoOfGuid(REFGUID, ITypeInfo*); - HRESULT GetLibAttr(TLIBATTR**); - HRESULT GetTypeComp(ITypeComp); - HRESULT GetDocumentation(INT, BSTR*, BSTR*, DWORD*, BSTR*); - HRESULT IsName(LPOLESTR, ULONG, BOOL*); - HRESULT FindName(LPOLESTR, ULONG, ITypeInfo*, MEMBERID*, USHORT*); - void ReleaseTLibAttr(TLIBATTR*); + UINT GetTypeInfoCount(); + HRESULT GetTypeInfo(UINT, ITypeInfo*); + HRESULT GetTypeInfoType(UINT, TYPEKIND*); + HRESULT GetTypeInfoOfGuid(REFGUID, ITypeInfo*); + HRESULT GetLibAttr(TLIBATTR**); + HRESULT GetTypeComp(ITypeComp); + HRESULT GetDocumentation(INT, BSTR*, BSTR*, DWORD*, BSTR*); + HRESULT IsName(LPOLESTR, ULONG, BOOL*); + HRESULT FindName(LPOLESTR, ULONG, ITypeInfo*, MEMBERID*, USHORT*); + void ReleaseTLibAttr(TLIBATTR*); } alias ITypeLib LPTYPELIB; interface ITypeLib2 : ITypeLib { - HRESULT GetCustData(REFGUID, VARIANT*); - HRESULT GetLibStatistics(ULONG*, ULONG*); - HRESULT GetDocumentation2(INT, LCID, BSTR*, DWORD*, BSTR*); - HRESULT GetAllCustData(CUSTDATA*); + HRESULT GetCustData(REFGUID, VARIANT*); + HRESULT GetLibStatistics(ULONG*, ULONG*); + HRESULT GetDocumentation2(INT, LCID, BSTR*, DWORD*, BSTR*); + HRESULT GetAllCustData(CUSTDATA*); } alias ITypeLib2 LPTYPELIB2; interface IErrorInfo : IUnknown { - HRESULT GetGUID(GUID*); - HRESULT GetSource(BSTR*); - HRESULT GetDescription(BSTR*); - HRESULT GetHelpFile(BSTR*); - HRESULT GetHelpContext(DWORD*); + HRESULT GetGUID(GUID*); + HRESULT GetSource(BSTR*); + HRESULT GetDescription(BSTR*); + HRESULT GetHelpFile(BSTR*); + HRESULT GetHelpContext(DWORD*); } alias IErrorInfo LPERRORINFO; interface ICreateErrorInfo : IUnknown { - HRESULT SetGUID(REFGUID); - HRESULT SetSource(LPOLESTR); - HRESULT SetDescription(LPOLESTR); - HRESULT SetHelpFile(LPOLESTR); - HRESULT SetHelpContext(DWORD); + HRESULT SetGUID(REFGUID); + HRESULT SetSource(LPOLESTR); + HRESULT SetDescription(LPOLESTR); + HRESULT SetHelpFile(LPOLESTR); + HRESULT SetHelpContext(DWORD); } alias ICreateErrorInfo LPCREATEERRORINFO; interface ISupportErrorInfo : IUnknown { - HRESULT InterfaceSupportsErrorInfo(REFIID); + HRESULT InterfaceSupportsErrorInfo(REFIID); } alias ISupportErrorInfo LPSUPPORTERRORINFO; interface IRecordInfo : IUnknown { - HRESULT RecordInit(PVOID); - HRESULT RecordClear(PVOID); - HRESULT RecordCopy(PVOID, PVOID); - HRESULT GetGuid(GUID*); - HRESULT GetName(BSTR*); - HRESULT GetSize(ULONG*); - HRESULT GetTypeInfo(ITypeInfo*); - HRESULT GetField(PVOID, LPCOLESTR, VARIANT*); - HRESULT GetFieldNoCopy(PVOID, LPCOLESTR, VARIANT*, PVOID*); - HRESULT PutField (ULONG, PVOID, LPCOLESTR, VARIANT*); - HRESULT PutFieldNoCopy(ULONG, PVOID, LPCOLESTR, VARIANT*); - HRESULT GetFieldNames(ULONG*, BSTR*); - BOOL IsMatchingType(); - PVOID RecordCreate(); - HRESULT RecordCreateCopy(PVOID, PVOID*); - HRESULT RecordDestroy (PVOID); + HRESULT RecordInit(PVOID); + HRESULT RecordClear(PVOID); + HRESULT RecordCopy(PVOID, PVOID); + HRESULT GetGuid(GUID*); + HRESULT GetName(BSTR*); + HRESULT GetSize(ULONG*); + HRESULT GetTypeInfo(ITypeInfo*); + HRESULT GetField(PVOID, LPCOLESTR, VARIANT*); + HRESULT GetFieldNoCopy(PVOID, LPCOLESTR, VARIANT*, PVOID*); + HRESULT PutField (ULONG, PVOID, LPCOLESTR, VARIANT*); + HRESULT PutFieldNoCopy(ULONG, PVOID, LPCOLESTR, VARIANT*); + HRESULT GetFieldNames(ULONG*, BSTR*); + BOOL IsMatchingType(); + PVOID RecordCreate(); + HRESULT RecordCreateCopy(PVOID, PVOID*); + HRESULT RecordDestroy (PVOID); } alias IRecordInfo LPRECORDINFO; interface ITypeMarshal : IUnknown { - HRESULT Size(PVOID, DWORD, PVOID, ULONG*); - HRESULT Marshal(PVOID, DWORD, PVOID, ULONG, BYTE*, ULONG*); - HRESULT Unmarshal(PVOID, DWORD, ULONG, BYTE*, ULONG*); - HRESULT Free(PVOID); + HRESULT Size(PVOID, DWORD, PVOID, ULONG*); + HRESULT Marshal(PVOID, DWORD, PVOID, ULONG, BYTE*, ULONG*); + HRESULT Unmarshal(PVOID, DWORD, ULONG, BYTE*, ULONG*); + HRESULT Free(PVOID); } diff --git a/src/core/sys/windows/objbase.d b/src/core/sys/windows/objbase.d index ef8d71b83d..514456d0aa 100644 --- a/src/core/sys/windows/objbase.d +++ b/src/core/sys/windows/objbase.d @@ -55,28 +55,28 @@ const COM_RIGHTS_SAFE_FOR_SCRIPTING = 2; const STGOPTIONS_VERSION = 2; enum STGFMT { - STGFMT_STORAGE = 0, - STGFMT_FILE = 3, - STGFMT_ANY = 4, - STGFMT_DOCFILE = 5 + STGFMT_STORAGE = 0, + STGFMT_FILE = 3, + STGFMT_ANY = 4, + STGFMT_DOCFILE = 5 } struct STGOPTIONS { - USHORT usVersion; - USHORT reserved; - ULONG ulSectorSize; - const(WCHAR)* pwcsTemplateFile; + USHORT usVersion; + USHORT reserved; + ULONG ulSectorSize; + const(WCHAR)* pwcsTemplateFile; } enum REGCLS { - REGCLS_SINGLEUSE = 0, - REGCLS_MULTIPLEUSE = 1, - REGCLS_MULTI_SEPARATE = 2 + REGCLS_SINGLEUSE = 0, + REGCLS_MULTIPLEUSE = 1, + REGCLS_MULTI_SEPARATE = 2 } /* BOOL IsEqualGUID(GUID rguid1, GUID rguid2) { - return rguid1 == rguid2; + return rguid1 == rguid2; } */ @@ -89,118 +89,118 @@ alias IsEqualGUID IsEqualIID; alias IsEqualGUID IsEqualCLSID; enum COINIT { - COINIT_APARTMENTTHREADED = 2, - COINIT_MULTITHREADED = 0, - COINIT_DISABLE_OLE1DDE = 4, - COINIT_SPEED_OVER_MEMORY = 8 + COINIT_APARTMENTTHREADED = 2, + COINIT_MULTITHREADED = 0, + COINIT_DISABLE_OLE1DDE = 4, + COINIT_SPEED_OVER_MEMORY = 8 } enum STDMSHLFLAGS { - SMEXF_SERVER = 1, - SMEXF_HANDLER + SMEXF_SERVER = 1, + SMEXF_HANDLER } extern(Windows) { - alias HRESULT function(REFCLSID, REFIID, PVOID*) LPFNGETCLASSOBJECT; - alias HRESULT function() LPFNCANUNLOADNOW; - - DWORD CoBuildVersion(); - HRESULT CoInitialize(PVOID); - HRESULT CoInitializeEx(LPVOID, DWORD); - void CoUninitialize(); - HRESULT CoGetMalloc(DWORD, LPMALLOC*); - DWORD CoGetCurrentProcess(); - HRESULT CoRegisterMallocSpy(LPMALLOCSPY); - HRESULT CoRevokeMallocSpy(); - HRESULT CoCreateStandardMalloc(DWORD, IMalloc*); - //#ifdef DBG - ULONG DebugCoGetRpcFault(); - void DebugCoSetRpcFault(ULONG); - //#endif - HRESULT CoGetClassObject(REFCLSID, DWORD, COSERVERINFO*, REFIID, PVOID*); - HRESULT CoRegisterClassObject(REFCLSID, LPUNKNOWN, DWORD, DWORD, PDWORD); - HRESULT CoRevokeClassObject(DWORD); - HRESULT CoGetMarshalSizeMax(ULONG*, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); - HRESULT CoMarshalInterface(LPSTREAM, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); - HRESULT CoUnmarshalInterface(LPSTREAM, REFIID, PVOID*); - HRESULT CoMarshalHresult(LPSTREAM, HRESULT); - HRESULT CoUnmarshalHresult(LPSTREAM, HRESULT*); - HRESULT CoReleaseMarshalData(LPSTREAM); - HRESULT CoDisconnectObject(LPUNKNOWN, DWORD); - HRESULT CoLockObjectExternal(LPUNKNOWN, BOOL, BOOL); - HRESULT CoGetStandardMarshal(REFIID, LPUNKNOWN, DWORD, PVOID, DWORD, LPMARSHAL*); - HRESULT CoGetStdMarshalEx(LPUNKNOWN, DWORD, LPUNKNOWN*); - BOOL CoIsHandlerConnected(LPUNKNOWN); - BOOL CoHasStrongExternalConnections(LPUNKNOWN); - HRESULT CoMarshalInterThreadInterfaceInStream(REFIID, LPUNKNOWN, LPSTREAM*); - HRESULT CoGetInterfaceAndReleaseStream(LPSTREAM, REFIID, PVOID*); - HRESULT CoCreateFreeThreadedMarshaler(LPUNKNOWN, LPUNKNOWN*); - HINSTANCE CoLoadLibrary(LPOLESTR, BOOL); - void CoFreeLibrary(HINSTANCE); - void CoFreeAllLibraries(); - void CoFreeUnusedLibraries(); - HRESULT CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, PVOID*); - HRESULT CoCreateInstanceEx(REFCLSID, IUnknown, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); - HRESULT StringFromCLSID(REFCLSID, LPOLESTR*); - HRESULT CLSIDFromString(LPOLESTR, LPCLSID); - HRESULT StringFromIID(REFIID, LPOLESTR*); - HRESULT IIDFromString(LPOLESTR, LPIID); - BOOL CoIsOle1Class(REFCLSID); - HRESULT ProgIDFromCLSID(REFCLSID, LPOLESTR*); - HRESULT CLSIDFromProgID(LPCOLESTR, LPCLSID); - int StringFromGUID2(REFGUID, LPOLESTR, int); - HRESULT CoCreateGuid(GUID*); - BOOL CoFileTimeToDosDateTime(FILETIME*, LPWORD, LPWORD); - BOOL CoDosDateTimeToFileTime(WORD, WORD, FILETIME*); - HRESULT CoFileTimeNow(FILETIME*); - HRESULT CoRegisterMessageFilter(LPMESSAGEFILTER, LPMESSAGEFILTER*); - HRESULT CoGetTreatAsClass(REFCLSID, LPCLSID); - HRESULT CoTreatAsClass(REFCLSID, REFCLSID); - HRESULT DllGetClassObject(REFCLSID, REFIID, PVOID*); - HRESULT DllCanUnloadNow(); - PVOID CoTaskMemAlloc(ULONG); - PVOID CoTaskMemRealloc(PVOID, ULONG); - void CoTaskMemFree(PVOID); - HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); - HRESULT CreateDataCache(LPUNKNOWN, REFCLSID, REFIID, PVOID*); - HRESULT StgCreateDocfile(const(OLECHAR)*, DWORD, DWORD, IStorage*); - HRESULT StgCreateDocfileOnILockBytes(ILockBytes, DWORD, DWORD, IStorage*); - HRESULT StgOpenStorage(const(OLECHAR)*, IStorage, DWORD, SNB, DWORD, IStorage*); - HRESULT StgOpenStorageOnILockBytes(ILockBytes, IStorage, DWORD, SNB, DWORD, IStorage*); - HRESULT StgIsStorageFile(const(OLECHAR)*); - HRESULT StgIsStorageILockBytes(ILockBytes); - HRESULT StgSetTimes(OLECHAR *, FILETIME *, FILETIME *, FILETIME *); - HRESULT StgCreateStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); - HRESULT StgOpenStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); - HRESULT BindMoniker(LPMONIKER, DWORD, REFIID, PVOID*); - HRESULT CoGetObject(LPCWSTR, BIND_OPTS*, REFIID, void**); - HRESULT MkParseDisplayName(LPBC, LPCOLESTR, ULONG*, LPMONIKER*); - HRESULT MonikerRelativePathTo(LPMONIKER, LPMONIKER, LPMONIKER*, BOOL); - HRESULT MonikerCommonPrefixWith(LPMONIKER, LPMONIKER, LPMONIKER*); - HRESULT CreateBindCtx(DWORD, LPBC*); - HRESULT CreateGenericComposite(LPMONIKER, LPMONIKER, LPMONIKER*); - HRESULT GetClassFile (LPCOLESTR, CLSID*); - HRESULT CreateFileMoniker(LPCOLESTR, LPMONIKER*); - HRESULT CreateItemMoniker(LPCOLESTR, LPCOLESTR, LPMONIKER*); - HRESULT CreateAntiMoniker(LPMONIKER*); - HRESULT CreatePointerMoniker(LPUNKNOWN, LPMONIKER*); - HRESULT GetRunningObjectTable(DWORD, LPRUNNINGOBJECTTABLE*); - HRESULT CoInitializeSecurity(PSECURITY_DESCRIPTOR, LONG, SOLE_AUTHENTICATION_SERVICE*, void*, DWORD, DWORD, void*, DWORD, void*); - HRESULT CoGetCallContext(REFIID, void**); - HRESULT CoQueryProxyBlanket(IUnknown*, DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTH_IDENTITY_HANDLE*, DWORD*); - HRESULT CoSetProxyBlanket(IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE, DWORD); - HRESULT CoCopyProxy(IUnknown*, IUnknown**); - HRESULT CoQueryClientBlanket(DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTHZ_HANDLE*, DWORD*); - HRESULT CoImpersonateClient(); - HRESULT CoRevertToSelf(); - HRESULT CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**); - HRESULT CoSwitchCallContext(IUnknown*, IUnknown**); - HRESULT CoGetInstanceFromFile(COSERVERINFO*, CLSID*, IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, MULTI_QI*); - HRESULT CoGetInstanceFromIStorage(COSERVERINFO*, CLSID*, IUnknown*, DWORD, IStorage*, DWORD, MULTI_QI*); - ULONG CoAddRefServerProcess(); - ULONG CoReleaseServerProcess(); - HRESULT CoResumeClassObjects(); - HRESULT CoSuspendClassObjects(); - HRESULT CoGetPSClsid(REFIID, CLSID*); - HRESULT CoRegisterPSClsid(REFIID, REFCLSID); + alias HRESULT function(REFCLSID, REFIID, PVOID*) LPFNGETCLASSOBJECT; + alias HRESULT function() LPFNCANUNLOADNOW; + + DWORD CoBuildVersion(); + HRESULT CoInitialize(PVOID); + HRESULT CoInitializeEx(LPVOID, DWORD); + void CoUninitialize(); + HRESULT CoGetMalloc(DWORD, LPMALLOC*); + DWORD CoGetCurrentProcess(); + HRESULT CoRegisterMallocSpy(LPMALLOCSPY); + HRESULT CoRevokeMallocSpy(); + HRESULT CoCreateStandardMalloc(DWORD, IMalloc*); + //#ifdef DBG + ULONG DebugCoGetRpcFault(); + void DebugCoSetRpcFault(ULONG); + //#endif + HRESULT CoGetClassObject(REFCLSID, DWORD, COSERVERINFO*, REFIID, PVOID*); + HRESULT CoRegisterClassObject(REFCLSID, LPUNKNOWN, DWORD, DWORD, PDWORD); + HRESULT CoRevokeClassObject(DWORD); + HRESULT CoGetMarshalSizeMax(ULONG*, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); + HRESULT CoMarshalInterface(LPSTREAM, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); + HRESULT CoUnmarshalInterface(LPSTREAM, REFIID, PVOID*); + HRESULT CoMarshalHresult(LPSTREAM, HRESULT); + HRESULT CoUnmarshalHresult(LPSTREAM, HRESULT*); + HRESULT CoReleaseMarshalData(LPSTREAM); + HRESULT CoDisconnectObject(LPUNKNOWN, DWORD); + HRESULT CoLockObjectExternal(LPUNKNOWN, BOOL, BOOL); + HRESULT CoGetStandardMarshal(REFIID, LPUNKNOWN, DWORD, PVOID, DWORD, LPMARSHAL*); + HRESULT CoGetStdMarshalEx(LPUNKNOWN, DWORD, LPUNKNOWN*); + BOOL CoIsHandlerConnected(LPUNKNOWN); + BOOL CoHasStrongExternalConnections(LPUNKNOWN); + HRESULT CoMarshalInterThreadInterfaceInStream(REFIID, LPUNKNOWN, LPSTREAM*); + HRESULT CoGetInterfaceAndReleaseStream(LPSTREAM, REFIID, PVOID*); + HRESULT CoCreateFreeThreadedMarshaler(LPUNKNOWN, LPUNKNOWN*); + HINSTANCE CoLoadLibrary(LPOLESTR, BOOL); + void CoFreeLibrary(HINSTANCE); + void CoFreeAllLibraries(); + void CoFreeUnusedLibraries(); + HRESULT CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, PVOID*); + HRESULT CoCreateInstanceEx(REFCLSID, IUnknown, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); + HRESULT StringFromCLSID(REFCLSID, LPOLESTR*); + HRESULT CLSIDFromString(LPOLESTR, LPCLSID); + HRESULT StringFromIID(REFIID, LPOLESTR*); + HRESULT IIDFromString(LPOLESTR, LPIID); + BOOL CoIsOle1Class(REFCLSID); + HRESULT ProgIDFromCLSID(REFCLSID, LPOLESTR*); + HRESULT CLSIDFromProgID(LPCOLESTR, LPCLSID); + int StringFromGUID2(REFGUID, LPOLESTR, int); + HRESULT CoCreateGuid(GUID*); + BOOL CoFileTimeToDosDateTime(FILETIME*, LPWORD, LPWORD); + BOOL CoDosDateTimeToFileTime(WORD, WORD, FILETIME*); + HRESULT CoFileTimeNow(FILETIME*); + HRESULT CoRegisterMessageFilter(LPMESSAGEFILTER, LPMESSAGEFILTER*); + HRESULT CoGetTreatAsClass(REFCLSID, LPCLSID); + HRESULT CoTreatAsClass(REFCLSID, REFCLSID); + HRESULT DllGetClassObject(REFCLSID, REFIID, PVOID*); + HRESULT DllCanUnloadNow(); + PVOID CoTaskMemAlloc(ULONG); + PVOID CoTaskMemRealloc(PVOID, ULONG); + void CoTaskMemFree(PVOID); + HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); + HRESULT CreateDataCache(LPUNKNOWN, REFCLSID, REFIID, PVOID*); + HRESULT StgCreateDocfile(const(OLECHAR)*, DWORD, DWORD, IStorage*); + HRESULT StgCreateDocfileOnILockBytes(ILockBytes, DWORD, DWORD, IStorage*); + HRESULT StgOpenStorage(const(OLECHAR)*, IStorage, DWORD, SNB, DWORD, IStorage*); + HRESULT StgOpenStorageOnILockBytes(ILockBytes, IStorage, DWORD, SNB, DWORD, IStorage*); + HRESULT StgIsStorageFile(const(OLECHAR)*); + HRESULT StgIsStorageILockBytes(ILockBytes); + HRESULT StgSetTimes(OLECHAR *, FILETIME *, FILETIME *, FILETIME *); + HRESULT StgCreateStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); + HRESULT StgOpenStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); + HRESULT BindMoniker(LPMONIKER, DWORD, REFIID, PVOID*); + HRESULT CoGetObject(LPCWSTR, BIND_OPTS*, REFIID, void**); + HRESULT MkParseDisplayName(LPBC, LPCOLESTR, ULONG*, LPMONIKER*); + HRESULT MonikerRelativePathTo(LPMONIKER, LPMONIKER, LPMONIKER*, BOOL); + HRESULT MonikerCommonPrefixWith(LPMONIKER, LPMONIKER, LPMONIKER*); + HRESULT CreateBindCtx(DWORD, LPBC*); + HRESULT CreateGenericComposite(LPMONIKER, LPMONIKER, LPMONIKER*); + HRESULT GetClassFile (LPCOLESTR, CLSID*); + HRESULT CreateFileMoniker(LPCOLESTR, LPMONIKER*); + HRESULT CreateItemMoniker(LPCOLESTR, LPCOLESTR, LPMONIKER*); + HRESULT CreateAntiMoniker(LPMONIKER*); + HRESULT CreatePointerMoniker(LPUNKNOWN, LPMONIKER*); + HRESULT GetRunningObjectTable(DWORD, LPRUNNINGOBJECTTABLE*); + HRESULT CoInitializeSecurity(PSECURITY_DESCRIPTOR, LONG, SOLE_AUTHENTICATION_SERVICE*, void*, DWORD, DWORD, void*, DWORD, void*); + HRESULT CoGetCallContext(REFIID, void**); + HRESULT CoQueryProxyBlanket(IUnknown*, DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTH_IDENTITY_HANDLE*, DWORD*); + HRESULT CoSetProxyBlanket(IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE, DWORD); + HRESULT CoCopyProxy(IUnknown*, IUnknown**); + HRESULT CoQueryClientBlanket(DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTHZ_HANDLE*, DWORD*); + HRESULT CoImpersonateClient(); + HRESULT CoRevertToSelf(); + HRESULT CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**); + HRESULT CoSwitchCallContext(IUnknown*, IUnknown**); + HRESULT CoGetInstanceFromFile(COSERVERINFO*, CLSID*, IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, MULTI_QI*); + HRESULT CoGetInstanceFromIStorage(COSERVERINFO*, CLSID*, IUnknown*, DWORD, IStorage*, DWORD, MULTI_QI*); + ULONG CoAddRefServerProcess(); + ULONG CoReleaseServerProcess(); + HRESULT CoResumeClassObjects(); + HRESULT CoSuspendClassObjects(); + HRESULT CoGetPSClsid(REFIID, CLSID*); + HRESULT CoRegisterPSClsid(REFIID, REFCLSID); } diff --git a/src/core/sys/windows/objfwd.d b/src/core/sys/windows/objfwd.d index fc666275a2..f7ced6f8bc 100644 --- a/src/core/sys/windows/objfwd.d +++ b/src/core/sys/windows/objfwd.d @@ -13,49 +13,49 @@ private import core.sys.windows.objidl; /+ // Forward declararions are not necessary in D. extern(Windows) { - interface IMoniker; - interface IStream; - interface IMarshal; - interface IMalloc; - interface IMallocSpy; - interface IMessageFilter; - interface IPersist; - interface IPersistStream; - interface IRunningObjectTable; - interface IBindCtx; - interface IAdviseSink; - interface IAdviseSink2; - interface IDataObject; - interface IDataAdviseHolder; + interface IMoniker; + interface IStream; + interface IMarshal; + interface IMalloc; + interface IMallocSpy; + interface IMessageFilter; + interface IPersist; + interface IPersistStream; + interface IRunningObjectTable; + interface IBindCtx; + interface IAdviseSink; + interface IAdviseSink2; + interface IDataObject; + interface IDataAdviseHolder; - interface IEnumMoniker; - interface IEnumFORMATETC; - interface IEnumSTATDATA; - interface IEnumSTATSTG; - interface IEnumSTATPROPSTG; - interface IEnumString; - interface IEnumUnknown; - interface IStorage; - interface IPersistStorage; - interface ILockBytes; - interface IStdMarshalInfo; - interface IExternalConnection; - interface IRunnableObject; - interface IROTData; - interface IPersistFile; - interface IRootStorage; - interface IPropertyStorage; - interface IEnumSTATPROPSETSTG; - interface IPropertySetStorage; - interface IClientSecurity; - interface IServerSecurity; - interface IClassActivator; - interface IFillLockBytes; - interface IProgressNotify; - interface ILayoutStorage; - interface IRpcProxyBuffer; - interface IRpcChannelBuffer; - interface IRpcStubBuffer; + interface IEnumMoniker; + interface IEnumFORMATETC; + interface IEnumSTATDATA; + interface IEnumSTATSTG; + interface IEnumSTATPROPSTG; + interface IEnumString; + interface IEnumUnknown; + interface IStorage; + interface IPersistStorage; + interface ILockBytes; + interface IStdMarshalInfo; + interface IExternalConnection; + interface IRunnableObject; + interface IROTData; + interface IPersistFile; + interface IRootStorage; + interface IPropertyStorage; + interface IEnumSTATPROPSETSTG; + interface IPropertySetStorage; + interface IClientSecurity; + interface IServerSecurity; + interface IClassActivator; + interface IFillLockBytes; + interface IProgressNotify; + interface ILayoutStorage; + interface IRpcProxyBuffer; + interface IRpcChannelBuffer; + interface IRpcStubBuffer; } +/ alias IMoniker LPMONIKER; diff --git a/src/core/sys/windows/objidl.d b/src/core/sys/windows/objidl.d index 8f6336cf06..6cf8f14f9e 100644 --- a/src/core/sys/windows/objidl.d +++ b/src/core/sys/windows/objidl.d @@ -22,873 +22,873 @@ private import core.sys.windows.winbase; // for FILETIME private import core.sys.windows.rpcdce; struct STATSTG { - LPOLESTR pwcsName; - DWORD type; - ULARGE_INTEGER cbSize; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; - DWORD grfMode; - DWORD grfLocksSupported; - CLSID clsid; - DWORD grfStateBits; - DWORD reserved; + LPOLESTR pwcsName; + DWORD type; + ULARGE_INTEGER cbSize; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD grfMode; + DWORD grfLocksSupported; + CLSID clsid; + DWORD grfStateBits; + DWORD reserved; } enum STGTY { - STGTY_STORAGE = 1, - STGTY_STREAM, - STGTY_LOCKBYTES, - STGTY_PROPERTY + STGTY_STORAGE = 1, + STGTY_STREAM, + STGTY_LOCKBYTES, + STGTY_PROPERTY } enum STREAM_SEEK { - STREAM_SEEK_SET, - STREAM_SEEK_CUR, - STREAM_SEEK_END + STREAM_SEEK_SET, + STREAM_SEEK_CUR, + STREAM_SEEK_END } struct INTERFACEINFO { - LPUNKNOWN pUnk; - IID iid; - WORD wMethod; + LPUNKNOWN pUnk; + IID iid; + WORD wMethod; } alias INTERFACEINFO* LPINTERFACEINFO; enum CALLTYPE { - CALLTYPE_TOPLEVEL = 1, - CALLTYPE_NESTED, - CALLTYPE_ASYNC, - CALLTYPE_TOPLEVEL_CALLPENDING, - CALLTYPE_ASYNC_CALLPENDING + CALLTYPE_TOPLEVEL = 1, + CALLTYPE_NESTED, + CALLTYPE_ASYNC, + CALLTYPE_TOPLEVEL_CALLPENDING, + CALLTYPE_ASYNC_CALLPENDING } enum PENDINGTYPE { - PENDINGTYPE_TOPLEVEL = 1, - PENDINGTYPE_NESTED + PENDINGTYPE_TOPLEVEL = 1, + PENDINGTYPE_NESTED } enum PENDINGMSG { - PENDINGMSG_CANCELCALL = 0, - PENDINGMSG_WAITNOPROCESS, - PENDINGMSG_WAITDEFPROCESS + PENDINGMSG_CANCELCALL = 0, + PENDINGMSG_WAITNOPROCESS, + PENDINGMSG_WAITDEFPROCESS } alias OLECHAR** SNB; enum DATADIR { - DATADIR_GET = 1, - DATADIR_SET + DATADIR_GET = 1, + DATADIR_SET } alias WORD CLIPFORMAT; alias CLIPFORMAT* LPCLIPFORMAT; struct DVTARGETDEVICE { - DWORD tdSize; - WORD tdDriverNameOffset; - WORD tdDeviceNameOffset; - WORD tdPortNameOffset; - WORD tdExtDevmodeOffset; - BYTE[1] tdData; + DWORD tdSize; + WORD tdDriverNameOffset; + WORD tdDeviceNameOffset; + WORD tdPortNameOffset; + WORD tdExtDevmodeOffset; + BYTE[1] tdData; } struct FORMATETC { - CLIPFORMAT cfFormat; - DVTARGETDEVICE* ptd; - DWORD dwAspect; - LONG lindex; - DWORD tymed; + CLIPFORMAT cfFormat; + DVTARGETDEVICE* ptd; + DWORD dwAspect; + LONG lindex; + DWORD tymed; } alias FORMATETC* LPFORMATETC; struct RemSTGMEDIUM { - DWORD tymed; - DWORD dwHandleType; - ULONG pData; - uint pUnkForRelease; - uint cbData; - BYTE[1] data; + DWORD tymed; + DWORD dwHandleType; + ULONG pData; + uint pUnkForRelease; + uint cbData; + BYTE[1] data; } struct HLITEM { - ULONG uHLID; - LPWSTR pwzFriendlyName; + ULONG uHLID; + LPWSTR pwzFriendlyName; } struct STATDATA { - FORMATETC formatetc; - DWORD grfAdvf; - IAdviseSink pAdvSink; - DWORD dwConnection; + FORMATETC formatetc; + DWORD grfAdvf; + IAdviseSink pAdvSink; + DWORD dwConnection; } struct STATPROPSETSTG { - FMTID fmtid; - CLSID clsid; - DWORD grfFlags; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; + FMTID fmtid; + CLSID clsid; + DWORD grfFlags; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; } enum EXTCONN { - EXTCONN_STRONG = 1, - EXTCONN_WEAK = 2, - EXTCONN_CALLABLE = 4 + EXTCONN_STRONG = 1, + EXTCONN_WEAK = 2, + EXTCONN_CALLABLE = 4 } struct MULTI_QI { - const(IID)* pIID; - IUnknown pItf; - HRESULT hr; + const(IID)* pIID; + IUnknown pItf; + HRESULT hr; } struct AUTH_IDENTITY { - USHORT* User; - ULONG UserLength; - USHORT* Domain; - ULONG DomainLength; - USHORT* Password; - ULONG PasswordLength; - ULONG Flags; + USHORT* User; + ULONG UserLength; + USHORT* Domain; + ULONG DomainLength; + USHORT* Password; + ULONG PasswordLength; + ULONG Flags; } struct COAUTHINFO { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - LPWSTR pwszServerPrincName; - DWORD dwAuthnLevel; - DWORD dwImpersonationLevel; - AUTH_IDENTITY* pAuthIdentityData; - DWORD dwCapabilities; + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + LPWSTR pwszServerPrincName; + DWORD dwAuthnLevel; + DWORD dwImpersonationLevel; + AUTH_IDENTITY* pAuthIdentityData; + DWORD dwCapabilities; } struct COSERVERINFO { - DWORD dwReserved1; - LPWSTR pwszName; - COAUTHINFO* pAuthInfo; - DWORD dwReserved2; + DWORD dwReserved1; + LPWSTR pwszName; + COAUTHINFO* pAuthInfo; + DWORD dwReserved2; } struct BIND_OPTS { - DWORD cbStruct; - DWORD grfFlags; - DWORD grfMode; - DWORD dwTickCountDeadline; + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; } alias BIND_OPTS* LPBIND_OPTS; struct BIND_OPTS2 { - DWORD cbStruct; - DWORD grfFlags; - DWORD grfMode; - DWORD dwTickCountDeadline; - DWORD dwTrackFlags; - DWORD dwClassContext; - LCID locale; - COSERVERINFO* pServerInfo; + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; + DWORD dwTrackFlags; + DWORD dwClassContext; + LCID locale; + COSERVERINFO* pServerInfo; } alias BIND_OPTS2* LPBIND_OPTS2; enum BIND_FLAGS { - BIND_MAYBOTHERUSER = 1, - BIND_JUSTTESTEXISTENCE + BIND_MAYBOTHERUSER = 1, + BIND_JUSTTESTEXISTENCE } struct STGMEDIUM { - DWORD tymed; - union { - HBITMAP hBitmap; - PVOID hMetaFilePict; - HENHMETAFILE hEnhMetaFile; - HGLOBAL hGlobal; - LPWSTR lpszFileName; - LPSTREAM pstm; - LPSTORAGE pstg; - } - LPUNKNOWN pUnkForRelease; + DWORD tymed; + union { + HBITMAP hBitmap; + PVOID hMetaFilePict; + HENHMETAFILE hEnhMetaFile; + HGLOBAL hGlobal; + LPWSTR lpszFileName; + LPSTREAM pstm; + LPSTORAGE pstg; + } + LPUNKNOWN pUnkForRelease; } alias STGMEDIUM* LPSTGMEDIUM; enum LOCKTYPE { - LOCK_WRITE = 1, - LOCK_EXCLUSIVE = 2, - LOCK_ONLYONCE = 4 + LOCK_WRITE = 1, + LOCK_EXCLUSIVE = 2, + LOCK_ONLYONCE = 4 } alias uint RPCOLEDATAREP; struct RPCOLEMESSAGE { - PVOID reserved1; - RPCOLEDATAREP dataRepresentation; - PVOID Buffer; - ULONG cbBuffer; - ULONG iMethod; - PVOID[5] reserved2; - ULONG rpcFlags; + PVOID reserved1; + RPCOLEDATAREP dataRepresentation; + PVOID Buffer; + ULONG cbBuffer; + ULONG iMethod; + PVOID[5] reserved2; + ULONG rpcFlags; } alias RPCOLEMESSAGE* PRPCOLEMESSAGE; enum MKSYS { - MKSYS_NONE, - MKSYS_GENERICCOMPOSITE, - MKSYS_FILEMONIKER, - MKSYS_ANTIMONIKER, - MKSYS_ITEMMONIKER, - MKSYS_POINTERMONIKER + MKSYS_NONE, + MKSYS_GENERICCOMPOSITE, + MKSYS_FILEMONIKER, + MKSYS_ANTIMONIKER, + MKSYS_ITEMMONIKER, + MKSYS_POINTERMONIKER } enum MKREDUCE { - MKRREDUCE_ALL, - MKRREDUCE_ONE = 196608, - MKRREDUCE_TOUSER = 131072, - MKRREDUCE_THROUGHUSER = 65536 + MKRREDUCE_ALL, + MKRREDUCE_ONE = 196608, + MKRREDUCE_TOUSER = 131072, + MKRREDUCE_THROUGHUSER = 65536 } struct RemSNB { - uint ulCntStr; - uint ulCntChar; - OLECHAR[1] rgString; + uint ulCntStr; + uint ulCntChar; + OLECHAR[1] rgString; } enum ADVF { - ADVF_NODATA = 1, - ADVF_PRIMEFIRST = 2, - ADVF_ONLYONCE = 4, - ADVFCACHE_NOHANDLER = 8, - ADVFCACHE_FORCEBUILTIN = 16, - ADVFCACHE_ONSAVE = 32, - ADVF_DATAONSTOP = 64 + ADVF_NODATA = 1, + ADVF_PRIMEFIRST = 2, + ADVF_ONLYONCE = 4, + ADVFCACHE_NOHANDLER = 8, + ADVFCACHE_FORCEBUILTIN = 16, + ADVFCACHE_ONSAVE = 32, + ADVF_DATAONSTOP = 64 } enum TYMED { - TYMED_HGLOBAL = 1, - TYMED_FILE = 2, - TYMED_ISTREAM = 4, - TYMED_ISTORAGE = 8, - TYMED_GDI = 16, - TYMED_MFPICT = 32, - TYMED_ENHMF = 64, - TYMED_NULL = 0 + TYMED_HGLOBAL = 1, + TYMED_FILE = 2, + TYMED_ISTREAM = 4, + TYMED_ISTORAGE = 8, + TYMED_GDI = 16, + TYMED_MFPICT = 32, + TYMED_ENHMF = 64, + TYMED_NULL = 0 } enum SERVERCALL { - SERVERCALL_ISHANDLED, - SERVERCALL_REJECTED, - SERVERCALL_RETRYLATER + SERVERCALL_ISHANDLED, + SERVERCALL_REJECTED, + SERVERCALL_RETRYLATER } struct CAUB { - ULONG cElems; - ubyte* pElems; + ULONG cElems; + ubyte* pElems; } struct CAI { - ULONG cElems; - short* pElems; + ULONG cElems; + short* pElems; } struct CAUI { - ULONG cElems; - USHORT* pElems; + ULONG cElems; + USHORT* pElems; } struct CAL { - ULONG cElems; - int* pElems; + ULONG cElems; + int* pElems; } struct CAUL { - ULONG cElems; - ULONG* pElems; + ULONG cElems; + ULONG* pElems; } struct CAFLT { - ULONG cElems; - float* pElems; + ULONG cElems; + float* pElems; } struct CADBL { - ULONG cElems; - double* pElems; + ULONG cElems; + double* pElems; } struct CACY { - ULONG cElems; - CY* pElems; + ULONG cElems; + CY* pElems; } struct CADATE { - ULONG cElems; - DATE* pElems; + ULONG cElems; + DATE* pElems; } struct CABSTR { - ULONG cElems; - BSTR* pElems; + ULONG cElems; + BSTR* pElems; } struct CABSTRBLOB { - ULONG cElems; - BSTRBLOB* pElems; + ULONG cElems; + BSTRBLOB* pElems; } struct CABOOL { - ULONG cElems; - VARIANT_BOOL* pElems; + ULONG cElems; + VARIANT_BOOL* pElems; } struct CASCODE { - ULONG cElems; - SCODE* pElems; + ULONG cElems; + SCODE* pElems; } struct CAH { - ULONG cElems; - LARGE_INTEGER* pElems; + ULONG cElems; + LARGE_INTEGER* pElems; } struct CAUH { - ULONG cElems; - ULARGE_INTEGER* pElems; + ULONG cElems; + ULARGE_INTEGER* pElems; } struct CALPSTR { - ULONG cElems; - LPSTR* pElems; + ULONG cElems; + LPSTR* pElems; } struct CALPWSTR { - ULONG cElems; - LPWSTR* pElems; + ULONG cElems; + LPWSTR* pElems; } struct CAFILETIME { - ULONG cElems; - FILETIME* pElems; + ULONG cElems; + FILETIME* pElems; } struct CACLIPDATA { - ULONG cElems; - CLIPDATA* pElems; + ULONG cElems; + CLIPDATA* pElems; } struct CACLSID { - ULONG cElems; - CLSID* pElems; + ULONG cElems; + CLSID* pElems; } alias PROPVARIANT* LPPROPVARIANT; struct CAPROPVARIANT { - ULONG cElems; - LPPROPVARIANT pElems; + ULONG cElems; + LPPROPVARIANT pElems; } struct PROPVARIANT { - VARTYPE vt; - WORD wReserved1; - WORD wReserved2; - WORD wReserved3; - union { - CHAR cVal; - UCHAR bVal; - short iVal; - USHORT uiVal; - VARIANT_BOOL boolVal; - int lVal; - ULONG ulVal; - float fltVal; - SCODE scode; - LARGE_INTEGER hVal; - ULARGE_INTEGER uhVal; - double dblVal; - CY cyVal; - DATE date; - FILETIME filetime; - CLSID* puuid; - BLOB blob; - CLIPDATA* pclipdata; - LPSTREAM pStream; - LPSTORAGE pStorage; - BSTR bstrVal; - BSTRBLOB bstrblobVal; - LPSTR pszVal; - LPWSTR pwszVal; - CAUB caub; - CAI cai; - CAUI caui; - CABOOL cabool; - CAL cal; - CAUL caul; - CAFLT caflt; - CASCODE cascode; - CAH cah; - CAUH cauh; - CADBL cadbl; - CACY cacy; - CADATE cadate; - CAFILETIME cafiletime; - CACLSID cauuid; - CACLIPDATA caclipdata; - CABSTR cabstr; - CABSTRBLOB cabstrblob; - CALPSTR calpstr; - CALPWSTR calpwstr; - CAPROPVARIANT capropvar; - } + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + union { + CHAR cVal; + UCHAR bVal; + short iVal; + USHORT uiVal; + VARIANT_BOOL boolVal; + int lVal; + ULONG ulVal; + float fltVal; + SCODE scode; + LARGE_INTEGER hVal; + ULARGE_INTEGER uhVal; + double dblVal; + CY cyVal; + DATE date; + FILETIME filetime; + CLSID* puuid; + BLOB blob; + CLIPDATA* pclipdata; + LPSTREAM pStream; + LPSTORAGE pStorage; + BSTR bstrVal; + BSTRBLOB bstrblobVal; + LPSTR pszVal; + LPWSTR pwszVal; + CAUB caub; + CAI cai; + CAUI caui; + CABOOL cabool; + CAL cal; + CAUL caul; + CAFLT caflt; + CASCODE cascode; + CAH cah; + CAUH cauh; + CADBL cadbl; + CACY cacy; + CADATE cadate; + CAFILETIME cafiletime; + CACLSID cauuid; + CACLIPDATA caclipdata; + CABSTR cabstr; + CABSTRBLOB cabstrblob; + CALPSTR calpstr; + CALPWSTR calpwstr; + CAPROPVARIANT capropvar; + } } struct PROPSPEC { - ULONG ulKind; - union { - PROPID propid; - LPOLESTR lpwstr; - } + ULONG ulKind; + union { + PROPID propid; + LPOLESTR lpwstr; + } } struct STATPROPSTG { - LPOLESTR lpwstrName; - PROPID propid; - VARTYPE vt; + LPOLESTR lpwstrName; + PROPID propid; + VARTYPE vt; } enum PROPSETFLAG { - PROPSETFLAG_DEFAULT, - PROPSETFLAG_NONSIMPLE, - PROPSETFLAG_ANSI, - PROPSETFLAG_UNBUFFERED = 4 + PROPSETFLAG_DEFAULT, + PROPSETFLAG_NONSIMPLE, + PROPSETFLAG_ANSI, + PROPSETFLAG_UNBUFFERED = 4 } struct STORAGELAYOUT { - DWORD LayoutType; - OLECHAR* pwcsElementName; - LARGE_INTEGER cOffset; - LARGE_INTEGER cBytes; + DWORD LayoutType; + OLECHAR* pwcsElementName; + LARGE_INTEGER cOffset; + LARGE_INTEGER cBytes; } struct SOLE_AUTHENTICATION_SERVICE { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - OLECHAR* pPrincipalName; - HRESULT hr; + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + OLECHAR* pPrincipalName; + HRESULT hr; } const OLECHAR* COLE_DEFAULT_PRINCIPAL = cast ( OLECHAR* )(-1); enum EOLE_AUTHENTICATION_CAPABILITIES { - EOAC_NONE = 0, - EOAC_MUTUAL_AUTH = 0x1, - EOAC_SECURE_REFS = 0x2, - EOAC_ACCESS_CONTROL = 0x4, - EOAC_APPID = 0x8, - EOAC_DYNAMIC = 0x10, - EOAC_STATIC_CLOAKING = 0x20, - EOAC_DYNAMIC_CLOAKING = 0x40, - EOAC_ANY_AUTHORITY = 0x80, - EOAC_MAKE_FULLSIC = 0x100, - EOAC_REQUIRE_FULLSIC = 0x200, - EOAC_AUTO_IMPERSONATE = 0x400, - EOAC_DEFAULT = 0x800, - EOAC_DISABLE_AAA = 0x1000, - EOAC_NO_CUSTOM_MARSHAL = 0x2000 + EOAC_NONE = 0, + EOAC_MUTUAL_AUTH = 0x1, + EOAC_SECURE_REFS = 0x2, + EOAC_ACCESS_CONTROL = 0x4, + EOAC_APPID = 0x8, + EOAC_DYNAMIC = 0x10, + EOAC_STATIC_CLOAKING = 0x20, + EOAC_DYNAMIC_CLOAKING = 0x40, + EOAC_ANY_AUTHORITY = 0x80, + EOAC_MAKE_FULLSIC = 0x100, + EOAC_REQUIRE_FULLSIC = 0x200, + EOAC_AUTO_IMPERSONATE = 0x400, + EOAC_DEFAULT = 0x800, + EOAC_DISABLE_AAA = 0x1000, + EOAC_NO_CUSTOM_MARSHAL = 0x2000 } struct SOLE_AUTHENTICATION_INFO { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - void* pAuthInfo; + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + void* pAuthInfo; } const void* COLE_DEFAULT_AUTHINFO = cast( void* )(-1 ); struct SOLE_AUTHENTICATION_LIST { - DWORD cAuthInfo; - SOLE_AUTHENTICATION_INFO* aAuthInfo; + DWORD cAuthInfo; + SOLE_AUTHENTICATION_INFO* aAuthInfo; } interface IEnumFORMATETC : IUnknown { - HRESULT Next(ULONG, FORMATETC*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumFORMATETC*); + HRESULT Next(ULONG, FORMATETC*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumFORMATETC*); } interface IEnumHLITEM : IUnknown { - HRESULT Next(ULONG, HLITEM*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumHLITEM*); + HRESULT Next(ULONG, HLITEM*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumHLITEM*); } interface IEnumSTATDATA : IUnknown { - HRESULT Next(ULONG, STATDATA*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATDATA*); + HRESULT Next(ULONG, STATDATA*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATDATA*); } interface IEnumSTATPROPSETSTG : IUnknown { - HRESULT Next(ULONG, STATPROPSETSTG*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATPROPSETSTG*); + HRESULT Next(ULONG, STATPROPSETSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATPROPSETSTG*); } interface IEnumSTATPROPSTG : IUnknown { - HRESULT Next(ULONG, STATPROPSTG*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATPROPSTG*); + HRESULT Next(ULONG, STATPROPSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATPROPSTG*); } interface IEnumSTATSTG : IUnknown { - HRESULT Next(ULONG, STATSTG*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATSTG*); + HRESULT Next(ULONG, STATSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATSTG*); } interface IEnumString : IUnknown { - HRESULT Next(ULONG, LPOLESTR*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumString*); + HRESULT Next(ULONG, LPOLESTR*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumString*); } interface IEnumMoniker : IUnknown { - HRESULT Next(ULONG, IMoniker*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumMoniker*); + HRESULT Next(ULONG, IMoniker*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumMoniker*); } interface IEnumUnknown : IUnknown { - HRESULT Next(ULONG, IUnknown*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumUnknown*); + HRESULT Next(ULONG, IUnknown*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumUnknown*); } interface ISequentialStream : IUnknown { - HRESULT Read(void*, ULONG, ULONG*); - HRESULT Write(void* , ULONG, ULONG*); + HRESULT Read(void*, ULONG, ULONG*); + HRESULT Write(void* , ULONG, ULONG*); } interface IStream : ISequentialStream { - HRESULT Seek(LARGE_INTEGER, DWORD, ULARGE_INTEGER*); - HRESULT SetSize(ULARGE_INTEGER); - HRESULT CopyTo(IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); - HRESULT Commit(DWORD); - HRESULT Revert(); - HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT Stat(STATSTG*, DWORD); - HRESULT Clone(LPSTREAM*); + HRESULT Seek(LARGE_INTEGER, DWORD, ULARGE_INTEGER*); + HRESULT SetSize(ULARGE_INTEGER); + HRESULT CopyTo(IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT Stat(STATSTG*, DWORD); + HRESULT Clone(LPSTREAM*); } interface IMarshal : IUnknown { - HRESULT GetUnmarshalClass(REFIID, PVOID, DWORD, PVOID, DWORD, CLSID*); - HRESULT GetMarshalSizeMax(REFIID, PVOID, DWORD, PVOID, PDWORD, ULONG*); - HRESULT MarshalInterface(IStream, REFIID, PVOID, DWORD, PVOID, DWORD); - HRESULT UnmarshalInterface(IStream, REFIID, void**); - HRESULT ReleaseMarshalData(IStream); - HRESULT DisconnectObject(DWORD); + HRESULT GetUnmarshalClass(REFIID, PVOID, DWORD, PVOID, DWORD, CLSID*); + HRESULT GetMarshalSizeMax(REFIID, PVOID, DWORD, PVOID, PDWORD, ULONG*); + HRESULT MarshalInterface(IStream, REFIID, PVOID, DWORD, PVOID, DWORD); + HRESULT UnmarshalInterface(IStream, REFIID, void**); + HRESULT ReleaseMarshalData(IStream); + HRESULT DisconnectObject(DWORD); } interface IStdMarshalInfo : IUnknown { - HRESULT GetClassForHandler(DWORD, PVOID, CLSID*); + HRESULT GetClassForHandler(DWORD, PVOID, CLSID*); } interface IMalloc : IUnknown { - void* Alloc(ULONG); - void* Realloc(void*, ULONG); - void Free(void*); - ULONG GetSize(void*); - int DidAlloc(void*); - void HeapMinimize(); + void* Alloc(ULONG); + void* Realloc(void*, ULONG); + void Free(void*); + ULONG GetSize(void*); + int DidAlloc(void*); + void HeapMinimize(); } interface IMallocSpy : IUnknown { - ULONG PreAlloc(ULONG); - void* PostAlloc(void*); - void* PreFree(void*, BOOL); - void PostFree(BOOL); - ULONG PreRealloc(void*, ULONG, void**, BOOL); - void* PostRealloc(void*, BOOL); - void* PreGetSize(void*, BOOL); - ULONG PostGetSize(ULONG, BOOL); - void* PreDidAlloc(void*, BOOL); - int PostDidAlloc(void*, BOOL, int); - void PreHeapMinimize(); - void PostHeapMinimize(); + ULONG PreAlloc(ULONG); + void* PostAlloc(void*); + void* PreFree(void*, BOOL); + void PostFree(BOOL); + ULONG PreRealloc(void*, ULONG, void**, BOOL); + void* PostRealloc(void*, BOOL); + void* PreGetSize(void*, BOOL); + ULONG PostGetSize(ULONG, BOOL); + void* PreDidAlloc(void*, BOOL); + int PostDidAlloc(void*, BOOL, int); + void PreHeapMinimize(); + void PostHeapMinimize(); } interface IMessageFilter : IUnknown { - DWORD HandleInComingCall(DWORD, HTASK, DWORD, LPINTERFACEINFO); - DWORD RetryRejectedCall(HTASK, DWORD, DWORD); - DWORD MessagePending(HTASK, DWORD, DWORD); + DWORD HandleInComingCall(DWORD, HTASK, DWORD, LPINTERFACEINFO); + DWORD RetryRejectedCall(HTASK, DWORD, DWORD); + DWORD MessagePending(HTASK, DWORD, DWORD); } interface IPersist : IUnknown { - HRESULT GetClassID(CLSID*); + HRESULT GetClassID(CLSID*); } interface IPersistStream : IPersist { - HRESULT IsDirty(); - HRESULT Load(IStream); - HRESULT Save(IStream, BOOL); - HRESULT GetSizeMax(PULARGE_INTEGER); + HRESULT IsDirty(); + HRESULT Load(IStream); + HRESULT Save(IStream, BOOL); + HRESULT GetSizeMax(PULARGE_INTEGER); } interface IRunningObjectTable : IUnknown { - HRESULT Register(DWORD, LPUNKNOWN, LPMONIKER, PDWORD); - HRESULT Revoke(DWORD); - HRESULT IsRunning(LPMONIKER); - HRESULT GetObject(LPMONIKER, LPUNKNOWN*); - HRESULT NoteChangeTime(DWORD, LPFILETIME); - HRESULT GetTimeOfLastChange(LPMONIKER, LPFILETIME); - HRESULT EnumRunning(IEnumMoniker*); + HRESULT Register(DWORD, LPUNKNOWN, LPMONIKER, PDWORD); + HRESULT Revoke(DWORD); + HRESULT IsRunning(LPMONIKER); + HRESULT GetObject(LPMONIKER, LPUNKNOWN*); + HRESULT NoteChangeTime(DWORD, LPFILETIME); + HRESULT GetTimeOfLastChange(LPMONIKER, LPFILETIME); + HRESULT EnumRunning(IEnumMoniker*); } interface IBindCtx : IUnknown { - HRESULT RegisterObjectBound(LPUNKNOWN); - HRESULT RevokeObjectBound(LPUNKNOWN); - HRESULT ReleaseBoundObjects(); - HRESULT SetBindOptions(LPBIND_OPTS); - HRESULT GetBindOptions(LPBIND_OPTS); - HRESULT GetRunningObjectTable(IRunningObjectTable*); - HRESULT RegisterObjectParam(LPOLESTR, IUnknown); - HRESULT GetObjectParam(LPOLESTR, IUnknown*); - HRESULT EnumObjectParam(IEnumString*); - HRESULT RevokeObjectParam(LPOLESTR); + HRESULT RegisterObjectBound(LPUNKNOWN); + HRESULT RevokeObjectBound(LPUNKNOWN); + HRESULT ReleaseBoundObjects(); + HRESULT SetBindOptions(LPBIND_OPTS); + HRESULT GetBindOptions(LPBIND_OPTS); + HRESULT GetRunningObjectTable(IRunningObjectTable*); + HRESULT RegisterObjectParam(LPOLESTR, IUnknown); + HRESULT GetObjectParam(LPOLESTR, IUnknown*); + HRESULT EnumObjectParam(IEnumString*); + HRESULT RevokeObjectParam(LPOLESTR); } interface IMoniker: IPersistStream { - HRESULT BindToObject(IBindCtx, IMoniker, REFIID, PVOID*); - HRESULT BindToStorage(IBindCtx, IMoniker, REFIID, PVOID*); - HRESULT Reduce(IBindCtx, DWORD, IMoniker*, IMoniker*); - HRESULT ComposeWith(IMoniker, BOOL, IMoniker*); - HRESULT Enum(BOOL, IEnumMoniker*); - HRESULT IsEqual(IMoniker); - HRESULT Hash(PDWORD); - HRESULT IsRunning(IBindCtx, IMoniker, IMoniker); - HRESULT GetTimeOfLastChange(IBindCtx, IMoniker, LPFILETIME); - HRESULT Inverse(IMoniker*); - HRESULT CommonPrefixWith(IMoniker, IMoniker*); - HRESULT RelativePathTo(IMoniker, IMoniker*); - HRESULT GetDisplayName(IBindCtx, IMoniker, LPOLESTR*); - HRESULT ParseDisplayName(IBindCtx, IMoniker, LPOLESTR, ULONG*, IMoniker*); - HRESULT IsSystemMoniker(PDWORD); + HRESULT BindToObject(IBindCtx, IMoniker, REFIID, PVOID*); + HRESULT BindToStorage(IBindCtx, IMoniker, REFIID, PVOID*); + HRESULT Reduce(IBindCtx, DWORD, IMoniker*, IMoniker*); + HRESULT ComposeWith(IMoniker, BOOL, IMoniker*); + HRESULT Enum(BOOL, IEnumMoniker*); + HRESULT IsEqual(IMoniker); + HRESULT Hash(PDWORD); + HRESULT IsRunning(IBindCtx, IMoniker, IMoniker); + HRESULT GetTimeOfLastChange(IBindCtx, IMoniker, LPFILETIME); + HRESULT Inverse(IMoniker*); + HRESULT CommonPrefixWith(IMoniker, IMoniker*); + HRESULT RelativePathTo(IMoniker, IMoniker*); + HRESULT GetDisplayName(IBindCtx, IMoniker, LPOLESTR*); + HRESULT ParseDisplayName(IBindCtx, IMoniker, LPOLESTR, ULONG*, IMoniker*); + HRESULT IsSystemMoniker(PDWORD); } interface IPersistStorage : IPersist { - HRESULT IsDirty(); - HRESULT InitNew(LPSTORAGE); - HRESULT Load(LPSTORAGE); - HRESULT Save(LPSTORAGE, BOOL); - HRESULT SaveCompleted(LPSTORAGE); - HRESULT HandsOffStorage(); + HRESULT IsDirty(); + HRESULT InitNew(LPSTORAGE); + HRESULT Load(LPSTORAGE); + HRESULT Save(LPSTORAGE, BOOL); + HRESULT SaveCompleted(LPSTORAGE); + HRESULT HandsOffStorage(); } interface IPersistFile : IPersist { - HRESULT IsDirty(); - HRESULT Load(LPCOLESTR, DWORD); - HRESULT Save(LPCOLESTR, BOOL); - HRESULT SaveCompleted(LPCOLESTR); - HRESULT GetCurFile(LPOLESTR*); + HRESULT IsDirty(); + HRESULT Load(LPCOLESTR, DWORD); + HRESULT Save(LPCOLESTR, BOOL); + HRESULT SaveCompleted(LPCOLESTR); + HRESULT GetCurFile(LPOLESTR*); } interface IAdviseSink : IUnknown { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - void OnDataChange(FORMATETC*, STGMEDIUM*); - void OnViewChange(DWORD, LONG); - void OnRename(IMoniker); - void OnSave(); - void OnClose(); + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + void OnDataChange(FORMATETC*, STGMEDIUM*); + void OnViewChange(DWORD, LONG); + void OnRename(IMoniker); + void OnSave(); + void OnClose(); } interface IAdviseSink2 : IAdviseSink { - void OnLinkSrcChange(IMoniker); + void OnLinkSrcChange(IMoniker); } interface IDataObject : IUnknown { - HRESULT GetData(FORMATETC*, STGMEDIUM*); - HRESULT GetDataHere(FORMATETC*, STGMEDIUM*); - HRESULT QueryGetData(FORMATETC*); - HRESULT GetCanonicalFormatEtc(FORMATETC*, FORMATETC*); - HRESULT SetData(FORMATETC*, STGMEDIUM*, BOOL); - HRESULT EnumFormatEtc(DWORD, IEnumFORMATETC*); - HRESULT DAdvise(FORMATETC*, DWORD, IAdviseSink, PDWORD); - HRESULT DUnadvise(DWORD); - HRESULT EnumDAdvise(IEnumSTATDATA*); + HRESULT GetData(FORMATETC*, STGMEDIUM*); + HRESULT GetDataHere(FORMATETC*, STGMEDIUM*); + HRESULT QueryGetData(FORMATETC*); + HRESULT GetCanonicalFormatEtc(FORMATETC*, FORMATETC*); + HRESULT SetData(FORMATETC*, STGMEDIUM*, BOOL); + HRESULT EnumFormatEtc(DWORD, IEnumFORMATETC*); + HRESULT DAdvise(FORMATETC*, DWORD, IAdviseSink, PDWORD); + HRESULT DUnadvise(DWORD); + HRESULT EnumDAdvise(IEnumSTATDATA*); } interface IDataAdviseHolder : IUnknown { - HRESULT Advise(IDataObject, FORMATETC*, DWORD, IAdviseSink, PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumAdvise(IEnumSTATDATA*); - HRESULT SendOnDataChange(IDataObject, DWORD, DWORD); + HRESULT Advise(IDataObject, FORMATETC*, DWORD, IAdviseSink, PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(IEnumSTATDATA*); + HRESULT SendOnDataChange(IDataObject, DWORD, DWORD); } interface IStorage : IUnknown { - HRESULT CreateStream(LPCWSTR, DWORD, DWORD, DWORD, IStream); - HRESULT OpenStream(LPCWSTR, PVOID, DWORD, DWORD, IStream); - HRESULT CreateStorage(LPCWSTR, DWORD, DWORD, DWORD, IStorage); - HRESULT OpenStorage(LPCWSTR, IStorage, DWORD, SNB, DWORD, IStorage); - HRESULT CopyTo(DWORD, IID* , SNB, IStorage); - HRESULT MoveElementTo(LPCWSTR, IStorage, LPCWSTR, DWORD); - HRESULT Commit(DWORD); - HRESULT Revert(); - HRESULT EnumElements(DWORD, PVOID, DWORD, IEnumSTATSTG); - HRESULT DestroyElement(LPCWSTR); - HRESULT RenameElement(LPCWSTR, LPCWSTR); - HRESULT SetElementTimes(LPCWSTR, FILETIME* , FILETIME* , FILETIME* ); - HRESULT SetClass(REFCLSID); - HRESULT SetStateBits(DWORD, DWORD); - HRESULT Stat(STATSTG*, DWORD); + HRESULT CreateStream(LPCWSTR, DWORD, DWORD, DWORD, IStream); + HRESULT OpenStream(LPCWSTR, PVOID, DWORD, DWORD, IStream); + HRESULT CreateStorage(LPCWSTR, DWORD, DWORD, DWORD, IStorage); + HRESULT OpenStorage(LPCWSTR, IStorage, DWORD, SNB, DWORD, IStorage); + HRESULT CopyTo(DWORD, IID* , SNB, IStorage); + HRESULT MoveElementTo(LPCWSTR, IStorage, LPCWSTR, DWORD); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT EnumElements(DWORD, PVOID, DWORD, IEnumSTATSTG); + HRESULT DestroyElement(LPCWSTR); + HRESULT RenameElement(LPCWSTR, LPCWSTR); + HRESULT SetElementTimes(LPCWSTR, FILETIME* , FILETIME* , FILETIME* ); + HRESULT SetClass(REFCLSID); + HRESULT SetStateBits(DWORD, DWORD); + HRESULT Stat(STATSTG*, DWORD); } // FIXME: GetClassID from IPersist not there - what to do about it? interface IRootStorage : IPersist { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT SwitchToFile(LPOLESTR); + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT SwitchToFile(LPOLESTR); } interface IRpcChannelBuffer : IUnknown { - HRESULT GetBuffer(RPCOLEMESSAGE*, REFIID); - HRESULT SendReceive(RPCOLEMESSAGE*, PULONG); - HRESULT FreeBuffer(RPCOLEMESSAGE*); - HRESULT GetDestCtx(PDWORD, PVOID*); - HRESULT IsConnected(); + HRESULT GetBuffer(RPCOLEMESSAGE*, REFIID); + HRESULT SendReceive(RPCOLEMESSAGE*, PULONG); + HRESULT FreeBuffer(RPCOLEMESSAGE*); + HRESULT GetDestCtx(PDWORD, PVOID*); + HRESULT IsConnected(); } interface IRpcProxyBuffer : IUnknown { - HRESULT Connect(IRpcChannelBuffer); - void Disconnect(); + HRESULT Connect(IRpcChannelBuffer); + void Disconnect(); } interface IRpcStubBuffer : IUnknown { - HRESULT Connect(LPUNKNOWN); - void Disconnect(); - HRESULT Invoke(RPCOLEMESSAGE*, LPRPCSTUBBUFFER); - LPRPCSTUBBUFFER IsIIDSupported(REFIID); - ULONG CountRefs(); - HRESULT DebugServerQueryInterface(PVOID*); - HRESULT DebugServerRelease(PVOID); + HRESULT Connect(LPUNKNOWN); + void Disconnect(); + HRESULT Invoke(RPCOLEMESSAGE*, LPRPCSTUBBUFFER); + LPRPCSTUBBUFFER IsIIDSupported(REFIID); + ULONG CountRefs(); + HRESULT DebugServerQueryInterface(PVOID*); + HRESULT DebugServerRelease(PVOID); } interface IPSFactoryBuffer : IUnknown { - HRESULT CreateProxy(LPUNKNOWN, REFIID, LPRPCPROXYBUFFER*, PVOID*); - HRESULT CreateStub(REFIID, LPUNKNOWN, LPRPCSTUBBUFFER*); + HRESULT CreateProxy(LPUNKNOWN, REFIID, LPRPCPROXYBUFFER*, PVOID*); + HRESULT CreateStub(REFIID, LPUNKNOWN, LPRPCSTUBBUFFER*); } alias IPSFactoryBuffer LPPSFACTORYBUFFER; interface ILockBytes : IUnknown { - HRESULT ReadAt(ULARGE_INTEGER, PVOID, ULONG, ULONG*); - HRESULT WriteAt(ULARGE_INTEGER, PCVOID, ULONG, ULONG*); - HRESULT Flush(); - HRESULT SetSize(ULARGE_INTEGER); - HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT Stat(STATSTG*, DWORD); + HRESULT ReadAt(ULARGE_INTEGER, PVOID, ULONG, ULONG*); + HRESULT WriteAt(ULARGE_INTEGER, PCVOID, ULONG, ULONG*); + HRESULT Flush(); + HRESULT SetSize(ULARGE_INTEGER); + HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT Stat(STATSTG*, DWORD); } interface IExternalConnection : IUnknown { - HRESULT AddConnection(DWORD, DWORD); - HRESULT ReleaseConnection(DWORD, DWORD, BOOL); + HRESULT AddConnection(DWORD, DWORD); + HRESULT ReleaseConnection(DWORD, DWORD, BOOL); } interface IRunnableObject : IUnknown { - HRESULT GetRunningClass(LPCLSID); - HRESULT Run(LPBC); - BOOL IsRunning(); - HRESULT LockRunning(BOOL, BOOL); - HRESULT SetContainedObject(BOOL); + HRESULT GetRunningClass(LPCLSID); + HRESULT Run(LPBC); + BOOL IsRunning(); + HRESULT LockRunning(BOOL, BOOL); + HRESULT SetContainedObject(BOOL); } interface IROTData : IUnknown { - HRESULT GetComparisonData(PVOID, ULONG, PULONG); + HRESULT GetComparisonData(PVOID, ULONG, PULONG); } interface IChannelHook : IUnknown { - void ClientGetSize(REFGUID, REFIID, PULONG); - void ClientFillBuffer(REFGUID, REFIID, PULONG, PVOID); - void ClientNotify(REFGUID, REFIID, ULONG, PVOID, DWORD, HRESULT); - void ServerNotify(REFGUID, REFIID, ULONG, PVOID, DWORD); - void ServerGetSize(REFGUID, REFIID, HRESULT, PULONG); - void ServerFillBuffer(REFGUID, REFIID, PULONG, PVOID, HRESULT); + void ClientGetSize(REFGUID, REFIID, PULONG); + void ClientFillBuffer(REFGUID, REFIID, PULONG, PVOID); + void ClientNotify(REFGUID, REFIID, ULONG, PVOID, DWORD, HRESULT); + void ServerNotify(REFGUID, REFIID, ULONG, PVOID, DWORD); + void ServerGetSize(REFGUID, REFIID, HRESULT, PULONG); + void ServerFillBuffer(REFGUID, REFIID, PULONG, PVOID, HRESULT); } interface IPropertyStorage : IUnknown { - HRESULT ReadMultiple(ULONG, PROPSPEC* , PROPVARIANT*); - HRESULT WriteMultiple(ULONG, PROPSPEC* , PROPVARIANT*, PROPID); - HRESULT DeleteMultiple(ULONG, PROPSPEC* ); - HRESULT ReadPropertyNames(ULONG, PROPID* , LPWSTR*); - HRESULT WritePropertyNames(ULONG, PROPID* , LPWSTR* ); - HRESULT DeletePropertyNames(ULONG, PROPID* ); - HRESULT SetClass(REFCLSID); - HRESULT Commit(DWORD); - HRESULT Revert(); - HRESULT Enum(IEnumSTATPROPSTG*); - HRESULT Stat(STATPROPSTG*); - HRESULT SetTimes(FILETIME* , FILETIME* , FILETIME* ); + HRESULT ReadMultiple(ULONG, PROPSPEC* , PROPVARIANT*); + HRESULT WriteMultiple(ULONG, PROPSPEC* , PROPVARIANT*, PROPID); + HRESULT DeleteMultiple(ULONG, PROPSPEC* ); + HRESULT ReadPropertyNames(ULONG, PROPID* , LPWSTR*); + HRESULT WritePropertyNames(ULONG, PROPID* , LPWSTR* ); + HRESULT DeletePropertyNames(ULONG, PROPID* ); + HRESULT SetClass(REFCLSID); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT Enum(IEnumSTATPROPSTG*); + HRESULT Stat(STATPROPSTG*); + HRESULT SetTimes(FILETIME* , FILETIME* , FILETIME* ); } interface IPropertySetStorage : IUnknown { - HRESULT Create(REFFMTID, CLSID*, DWORD, DWORD, LPPROPERTYSTORAGE*); - HRESULT Open(REFFMTID, DWORD, LPPROPERTYSTORAGE*); - HRESULT Delete(REFFMTID); - HRESULT Enum(IEnumSTATPROPSETSTG*); + HRESULT Create(REFFMTID, CLSID*, DWORD, DWORD, LPPROPERTYSTORAGE*); + HRESULT Open(REFFMTID, DWORD, LPPROPERTYSTORAGE*); + HRESULT Delete(REFFMTID); + HRESULT Enum(IEnumSTATPROPSETSTG*); } interface IClientSecurity : IUnknown { - HRESULT QueryBlanket(PVOID, PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTH_IDENTITY_HANDLE**, PDWORD*); - HRESULT SetBlanket(PVOID, DWORD, DWORD, LPWSTR, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE*, DWORD); - HRESULT CopyProxy(LPUNKNOWN, LPUNKNOWN*); + HRESULT QueryBlanket(PVOID, PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTH_IDENTITY_HANDLE**, PDWORD*); + HRESULT SetBlanket(PVOID, DWORD, DWORD, LPWSTR, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE*, DWORD); + HRESULT CopyProxy(LPUNKNOWN, LPUNKNOWN*); } interface IServerSecurity : IUnknown { - HRESULT QueryBlanket(PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTHZ_HANDLE*, PDWORD*); - HRESULT ImpersonateClient(); - HRESULT RevertToSelf(); - HRESULT IsImpersonating(); + HRESULT QueryBlanket(PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTHZ_HANDLE*, PDWORD*); + HRESULT ImpersonateClient(); + HRESULT RevertToSelf(); + HRESULT IsImpersonating(); } interface IClassActivator : IUnknown { - HRESULT GetClassObject(REFCLSID, DWORD, LCID, REFIID, PVOID*); + HRESULT GetClassObject(REFCLSID, DWORD, LCID, REFIID, PVOID*); } interface IFillLockBytes : IUnknown { - HRESULT FillAppend(void* , ULONG, PULONG); - HRESULT FillAt(ULARGE_INTEGER, void* , ULONG, PULONG); - HRESULT SetFillSize(ULARGE_INTEGER); - HRESULT Terminate(BOOL); + HRESULT FillAppend(void* , ULONG, PULONG); + HRESULT FillAt(ULARGE_INTEGER, void* , ULONG, PULONG); + HRESULT SetFillSize(ULARGE_INTEGER); + HRESULT Terminate(BOOL); } interface IProgressNotify : IUnknown { - HRESULT OnProgress(DWORD, DWORD, BOOL, BOOL); + HRESULT OnProgress(DWORD, DWORD, BOOL, BOOL); } interface ILayoutStorage : IUnknown { - HRESULT LayoutScript(STORAGELAYOUT*, DWORD, DWORD); - HRESULT BeginMonitor(); - HRESULT EndMonitor(); - HRESULT ReLayoutDocfile(OLECHAR*); + HRESULT LayoutScript(STORAGELAYOUT*, DWORD, DWORD); + HRESULT BeginMonitor(); + HRESULT EndMonitor(); + HRESULT ReLayoutDocfile(OLECHAR*); } interface IGlobalInterfaceTable : IUnknown { - HRESULT RegisterInterfaceInGlobal(IUnknown, REFIID, DWORD*); - HRESULT RevokeInterfaceFromGlobal(DWORD); - HRESULT GetInterfaceFromGlobal(DWORD, REFIID, void**); + HRESULT RegisterInterfaceInGlobal(IUnknown, REFIID, DWORD*); + HRESULT RevokeInterfaceFromGlobal(DWORD); + HRESULT GetInterfaceFromGlobal(DWORD, REFIID, void**); } /+ diff --git a/src/core/sys/windows/objsafe.d b/src/core/sys/windows/objsafe.d index 9302dfd97a..895a245e9c 100644 --- a/src/core/sys/windows/objsafe.d +++ b/src/core/sys/windows/objsafe.d @@ -12,11 +12,11 @@ module core.sys.windows.objsafe; private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef; enum { - INTERFACESAFE_FOR_UNTRUSTED_CALLER = 1, - INTERFACESAFE_FOR_UNTRUSTED_DATA + INTERFACESAFE_FOR_UNTRUSTED_CALLER = 1, + INTERFACESAFE_FOR_UNTRUSTED_DATA } interface IObjectSafety : IUnknown { - HRESULT GetInterfaceSafetyOptions(REFIID, DWORD*, DWORD*); - HRESULT SetInterfaceSafetyOptions(REFIID, DWORD, DWORD); + HRESULT GetInterfaceSafetyOptions(REFIID, DWORD*, DWORD*); + HRESULT SetInterfaceSafetyOptions(REFIID, DWORD, DWORD); } diff --git a/src/core/sys/windows/ocidl.d b/src/core/sys/windows/ocidl.d index cf3c140696..3ec8ef1040 100644 --- a/src/core/sys/windows/ocidl.d +++ b/src/core/sys/windows/ocidl.d @@ -19,7 +19,7 @@ private import core.sys.windows.winuser; // for LPMSG interface IBindHost : IUnknown {} interface IServiceProvider : IUnknown{ - HRESULT QueryService(REFGUID,REFIID,void**); + HRESULT QueryService(REFGUID,REFIID,void**); } /* @@ -30,9 +30,9 @@ interface IServiceProvider : IUnknown{ // core.sys.windows.urlmon should contain: interface IBindHost : IUnknown { - HRESULT CreateMoniker(LPOLESTR szName, IBindCtx pBC, IMoniker* ppmk, DWORD); - HRESULT MonikerBindToObject(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); - HRESULT MonikerBindToStorage(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); + HRESULT CreateMoniker(LPOLESTR szName, IBindCtx pBC, IMoniker* ppmk, DWORD); + HRESULT MonikerBindToObject(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); + HRESULT MonikerBindToStorage(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); } */ @@ -54,277 +54,277 @@ alias int OLE_XSIZE_HIMETRIC; alias int OLE_YSIZE_HIMETRIC; enum READYSTATE { - READYSTATE_UNINITIALIZED = 0, - READYSTATE_LOADING = 1, - READYSTATE_LOADED = 2, - READYSTATE_INTERACTIVE = 3, - READYSTATE_COMPLETE = 4 + READYSTATE_UNINITIALIZED = 0, + READYSTATE_LOADING = 1, + READYSTATE_LOADED = 2, + READYSTATE_INTERACTIVE = 3, + READYSTATE_COMPLETE = 4 } enum PROPBAG2_TYPE { - PROPBAG2_TYPE_UNDEFINED, - PROPBAG2_TYPE_DATA, - PROPBAG2_TYPE_URL, - PROPBAG2_TYPE_OBJECT, - PROPBAG2_TYPE_STREAM, - PROPBAG2_TYPE_STORAGE, - PROPBAG2_TYPE_MONIKER // = 6 + PROPBAG2_TYPE_UNDEFINED, + PROPBAG2_TYPE_DATA, + PROPBAG2_TYPE_URL, + PROPBAG2_TYPE_OBJECT, + PROPBAG2_TYPE_STREAM, + PROPBAG2_TYPE_STORAGE, + PROPBAG2_TYPE_MONIKER // = 6 } struct PROPBAG2 { - DWORD dwType; - VARTYPE vt; - CLIPFORMAT cfType; - DWORD dwHint; - LPOLESTR pstrName; - CLSID clsid; + DWORD dwType; + VARTYPE vt; + CLIPFORMAT cfType; + DWORD dwHint; + LPOLESTR pstrName; + CLSID clsid; } enum QACONTAINERFLAGS { - QACONTAINER_SHOWHATCHING = 1, - QACONTAINER_SHOWGRABHANDLES = 2, - QACONTAINER_USERMODE = 4, - QACONTAINER_DISPLAYASDEFAULT = 8, - QACONTAINER_UIDEAD = 16, - QACONTAINER_AUTOCLIP = 32, - QACONTAINER_MESSAGEREFLECT = 64, - QACONTAINER_SUPPORTSMNEMONICS = 128 + QACONTAINER_SHOWHATCHING = 1, + QACONTAINER_SHOWGRABHANDLES = 2, + QACONTAINER_USERMODE = 4, + QACONTAINER_DISPLAYASDEFAULT = 8, + QACONTAINER_UIDEAD = 16, + QACONTAINER_AUTOCLIP = 32, + QACONTAINER_MESSAGEREFLECT = 64, + QACONTAINER_SUPPORTSMNEMONICS = 128 } struct QACONTAINER { - ULONG cbSize = this.sizeof; - IOleClientSite pClientSite; - IAdviseSinkEx pAdviseSink; - IPropertyNotifySink pPropertyNotifySink; - IUnknown pUnkEventSink; - DWORD dwAmbientFlags; - OLE_COLOR colorFore; - OLE_COLOR colorBack; - IFont pFont; - IOleUndoManager pUndoMgr; - DWORD dwAppearance; - LONG lcid; - HPALETTE hpal; - IBindHost pBindHost; - IOleControlSite pOleControlSite; - IServiceProvider pServiceProvider; + ULONG cbSize = this.sizeof; + IOleClientSite pClientSite; + IAdviseSinkEx pAdviseSink; + IPropertyNotifySink pPropertyNotifySink; + IUnknown pUnkEventSink; + DWORD dwAmbientFlags; + OLE_COLOR colorFore; + OLE_COLOR colorBack; + IFont pFont; + IOleUndoManager pUndoMgr; + DWORD dwAppearance; + LONG lcid; + HPALETTE hpal; + IBindHost pBindHost; + IOleControlSite pOleControlSite; + IServiceProvider pServiceProvider; } struct QACONTROL { - ULONG cbSize = this.sizeof; - DWORD dwMiscStatus; - DWORD dwViewStatus; - DWORD dwEventCookie; - DWORD dwPropNotifyCookie; - DWORD dwPointerActivationPolicy; + ULONG cbSize = this.sizeof; + DWORD dwMiscStatus; + DWORD dwViewStatus; + DWORD dwEventCookie; + DWORD dwPropNotifyCookie; + DWORD dwPointerActivationPolicy; } struct POINTF { - float x; - float y; + float x; + float y; } alias POINTF* LPPOINTF; struct CONTROLINFO { - ULONG cb; - HACCEL hAccel; - USHORT cAccel; - DWORD dwFlags; + ULONG cb; + HACCEL hAccel; + USHORT cAccel; + DWORD dwFlags; } alias CONTROLINFO* LPCONTROLINFO; struct CONNECTDATA { - LPUNKNOWN pUnk; - DWORD dwCookie; + LPUNKNOWN pUnk; + DWORD dwCookie; } alias CONNECTDATA* LPCONNECTDATA; struct LICINFO { - int cbLicInfo; - BOOL fRuntimeKeyAvail; - BOOL fLicVerified; + int cbLicInfo; + BOOL fRuntimeKeyAvail; + BOOL fLicVerified; } alias LICINFO* LPLICINFO; struct CAUUID { - ULONG cElems; - GUID* pElems; + ULONG cElems; + GUID* pElems; } alias CAUUID* LPCAUUID; struct CALPOLESTR { - ULONG cElems; - LPOLESTR* pElems; + ULONG cElems; + LPOLESTR* pElems; } alias CALPOLESTR* LPCALPOLESTR; struct CADWORD { - ULONG cElems; - DWORD* pElems; + ULONG cElems; + DWORD* pElems; } alias CADWORD* LPCADWORD; struct PROPPAGEINFO { - ULONG cb; - LPOLESTR pszTitle; - SIZE size; - LPOLESTR pszDocString; - LPOLESTR pszHelpFile; - DWORD dwHelpContext; + ULONG cb; + LPOLESTR pszTitle; + SIZE size; + LPOLESTR pszDocString; + LPOLESTR pszHelpFile; + DWORD dwHelpContext; } alias PROPPAGEINFO* LPPROPPAGEINFO; interface IOleControl : IUnknown { - HRESULT GetControlInfo(LPCONTROLINFO); - HRESULT OnMnemonic(LPMSG); - HRESULT OnAmbientPropertyChange(DISPID); - HRESULT FreezeEvents(BOOL); + HRESULT GetControlInfo(LPCONTROLINFO); + HRESULT OnMnemonic(LPMSG); + HRESULT OnAmbientPropertyChange(DISPID); + HRESULT FreezeEvents(BOOL); } interface IOleControlSite : IUnknown { - HRESULT OnControlInfoChanged(); - HRESULT LockInPlaceActive(BOOL); - HRESULT GetExtendedControl(LPDISPATCH*); - HRESULT TransformCoords(POINTL*, POINTF*, DWORD); - HRESULT TranslateAccelerator(LPMSG, DWORD); - HRESULT OnFocus(BOOL); - HRESULT ShowPropertyFrame(); + HRESULT OnControlInfoChanged(); + HRESULT LockInPlaceActive(BOOL); + HRESULT GetExtendedControl(LPDISPATCH*); + HRESULT TransformCoords(POINTL*, POINTF*, DWORD); + HRESULT TranslateAccelerator(LPMSG, DWORD); + HRESULT OnFocus(BOOL); + HRESULT ShowPropertyFrame(); } interface ISimpleFrameSite : IUnknown { - HRESULT PreMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, PDWORD); - HRESULT PostMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, DWORD); + HRESULT PreMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, PDWORD); + HRESULT PostMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, DWORD); } interface IErrorLog : IUnknown { - HRESULT AddError(LPCOLESTR, LPEXCEPINFO); + HRESULT AddError(LPCOLESTR, LPEXCEPINFO); } alias IErrorLog LPERRORLOG; interface IPropertyBag : IUnknown { - HRESULT Read(LPCOLESTR, LPVARIANT, LPERRORLOG); - HRESULT Write(LPCOLESTR, LPVARIANT); + HRESULT Read(LPCOLESTR, LPVARIANT, LPERRORLOG); + HRESULT Write(LPCOLESTR, LPVARIANT); } alias IPropertyBag LPPROPERTYBAG; interface IPropertyBag2 : IUnknown { - HRESULT Read(ULONG, PROPBAG2*, LPERRORLOG, VARIANT*, HRESULT*); - HRESULT Write(ULONG, PROPBAG2*, VARIANT*); - HRESULT CountProperties(ULONG*); - HRESULT GetPropertyInfo(ULONG, ULONG, PROPBAG2*, ULONG*); - HRESULT LoadObject(LPCOLESTR, DWORD, IUnknown, LPERRORLOG); + HRESULT Read(ULONG, PROPBAG2*, LPERRORLOG, VARIANT*, HRESULT*); + HRESULT Write(ULONG, PROPBAG2*, VARIANT*); + HRESULT CountProperties(ULONG*); + HRESULT GetPropertyInfo(ULONG, ULONG, PROPBAG2*, ULONG*); + HRESULT LoadObject(LPCOLESTR, DWORD, IUnknown, LPERRORLOG); } alias IPropertyBag2 LPPROPERTYBAG2; interface IPersistPropertyBag : IPersist { - HRESULT InitNew(); - HRESULT Load(LPPROPERTYBAG, LPERRORLOG); - HRESULT Save(LPPROPERTYBAG, BOOL, BOOL); + HRESULT InitNew(); + HRESULT Load(LPPROPERTYBAG, LPERRORLOG); + HRESULT Save(LPPROPERTYBAG, BOOL, BOOL); } interface IPersistPropertyBag2 : IPersist { - HRESULT InitNew(); - HRESULT Load(LPPROPERTYBAG2, LPERRORLOG); - HRESULT Save(LPPROPERTYBAG2, BOOL, BOOL); - HRESULT IsDirty(); + HRESULT InitNew(); + HRESULT Load(LPPROPERTYBAG2, LPERRORLOG); + HRESULT Save(LPPROPERTYBAG2, BOOL, BOOL); + HRESULT IsDirty(); } interface IPersistStreamInit : IPersist { - HRESULT IsDirty(); - HRESULT Load(LPSTREAM); - HRESULT Save(LPSTREAM, BOOL); - HRESULT GetSizeMax(PULARGE_INTEGER); - HRESULT InitNew(); + HRESULT IsDirty(); + HRESULT Load(LPSTREAM); + HRESULT Save(LPSTREAM, BOOL); + HRESULT GetSizeMax(PULARGE_INTEGER); + HRESULT InitNew(); } interface IPersistMemory : IPersist { - HRESULT IsDirty(); - HRESULT Load(PVOID, ULONG); - HRESULT Save(PVOID, BOOL, ULONG); - HRESULT GetSizeMax(PULONG); - HRESULT InitNew(); + HRESULT IsDirty(); + HRESULT Load(PVOID, ULONG); + HRESULT Save(PVOID, BOOL, ULONG); + HRESULT GetSizeMax(PULONG); + HRESULT InitNew(); } interface IPropertyNotifySink : IUnknown { - HRESULT OnChanged(DISPID); - HRESULT OnRequestEdit(DISPID); + HRESULT OnChanged(DISPID); + HRESULT OnRequestEdit(DISPID); } interface IProvideClassInfo : IUnknown { - HRESULT GetClassInfo(LPTYPEINFO*); + HRESULT GetClassInfo(LPTYPEINFO*); } interface IProvideClassInfo2 : IProvideClassInfo { - HRESULT GetGUID(DWORD, GUID*); + HRESULT GetGUID(DWORD, GUID*); } interface IConnectionPointContainer : IUnknown { - HRESULT EnumConnectionPoints(LPENUMCONNECTIONPOINTS*); - HRESULT FindConnectionPoint(REFIID, LPCONNECTIONPOINT*); + HRESULT EnumConnectionPoints(LPENUMCONNECTIONPOINTS*); + HRESULT FindConnectionPoint(REFIID, LPCONNECTIONPOINT*); } interface IEnumConnectionPoints : IUnknown { - HRESULT Next(ULONG, LPCONNECTIONPOINT*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMCONNECTIONPOINTS*); + HRESULT Next(ULONG, LPCONNECTIONPOINT*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCONNECTIONPOINTS*); } alias IEnumConnectionPoints LPENUMCONNECTIONPOINTS; interface IConnectionPoint : IUnknown { - HRESULT GetConnectionInterface(IID*); - HRESULT GetConnectionPointContainer(IConnectionPointContainer*); - HRESULT Advise(LPUNKNOWN, PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumConnections(LPENUMCONNECTIONS*); + HRESULT GetConnectionInterface(IID*); + HRESULT GetConnectionPointContainer(IConnectionPointContainer*); + HRESULT Advise(LPUNKNOWN, PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumConnections(LPENUMCONNECTIONS*); } alias IConnectionPoint LPCONNECTIONPOINT; interface IEnumConnections : IUnknown { - HRESULT Next(ULONG, LPCONNECTDATA, PULONG); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMCONNECTIONS*); + HRESULT Next(ULONG, LPCONNECTDATA, PULONG); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCONNECTIONS*); } alias IEnumConnections LPENUMCONNECTIONS; interface IClassFactory2 : IClassFactory { - HRESULT GetLicInfo(LPLICINFO); - HRESULT RequestLicKey(DWORD, BSTR*); - HRESULT CreateInstanceLic(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR, PVOID*); + HRESULT GetLicInfo(LPLICINFO); + HRESULT RequestLicKey(DWORD, BSTR*); + HRESULT CreateInstanceLic(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR, PVOID*); } interface ISpecifyPropertyPages : IUnknown { - HRESULT GetPages(CAUUID*); + HRESULT GetPages(CAUUID*); } interface IPerPropertyBrowsing : IUnknown { - HRESULT GetDisplayString(DISPID, BSTR*); - HRESULT MapPropertyToPage(DISPID, LPCLSID); - HRESULT GetPredefinedStrings(DISPID, CALPOLESTR*, CADWORD*); - HRESULT GetPredefinedValue(DISPID, DWORD, VARIANT*); + HRESULT GetDisplayString(DISPID, BSTR*); + HRESULT MapPropertyToPage(DISPID, LPCLSID); + HRESULT GetPredefinedStrings(DISPID, CALPOLESTR*, CADWORD*); + HRESULT GetPredefinedValue(DISPID, DWORD, VARIANT*); } interface IPropertyPageSite : IUnknown { - HRESULT OnStatusChange(DWORD); - HRESULT GetLocaleID(LCID*); - HRESULT GetPageContainer(LPUNKNOWN*); - HRESULT TranslateAccelerator(LPMSG); + HRESULT OnStatusChange(DWORD); + HRESULT GetLocaleID(LCID*); + HRESULT GetPageContainer(LPUNKNOWN*); + HRESULT TranslateAccelerator(LPMSG); } alias IPropertyPageSite LPPROPERTYPAGESITE; interface IPropertyPage : IUnknown { - HRESULT SetPageSite(LPPROPERTYPAGESITE); - HRESULT Activate(HWND, LPCRECT, BOOL); - HRESULT Deactivate(); - HRESULT GetPageInfo(LPPROPPAGEINFO); - HRESULT SetObjects(ULONG, LPUNKNOWN*); - HRESULT Show(UINT); - HRESULT Move(LPCRECT); - HRESULT IsPageDirty(); - HRESULT Apply(); - HRESULT Help(LPCOLESTR); - HRESULT TranslateAccelerator(LPMSG); + HRESULT SetPageSite(LPPROPERTYPAGESITE); + HRESULT Activate(HWND, LPCRECT, BOOL); + HRESULT Deactivate(); + HRESULT GetPageInfo(LPPROPPAGEINFO); + HRESULT SetObjects(ULONG, LPUNKNOWN*); + HRESULT Show(UINT); + HRESULT Move(LPCRECT); + HRESULT IsPageDirty(); + HRESULT Apply(); + HRESULT Help(LPCOLESTR); + HRESULT TranslateAccelerator(LPMSG); } @@ -333,30 +333,30 @@ interface IPropertyPage2 : IPropertyPage } interface IFont : IUnknown { - HRESULT get_Name(BSTR*); - HRESULT put_Name(BSTR); - HRESULT get_Size(CY*); - HRESULT put_Size(CY); - HRESULT get_Bold(BOOL*); - HRESULT put_Bold(BOOL); - HRESULT get_Italic(BOOL*); - HRESULT put_Italic(BOOL); - HRESULT get_Underline(BOOL*); - HRESULT put_Underline(BOOL); - HRESULT get_Strikethrough(BOOL*); - HRESULT put_Strikethrough(BOOL); - HRESULT get_Weight(short*); - HRESULT put_Weight(short); - HRESULT get_Charset(short*); - HRESULT put_Charset(short); - HRESULT get_hFont(HFONT*); - HRESULT Clone(IFont*); - HRESULT IsEqual(IFont); - HRESULT SetRatio(int, int); - HRESULT QueryTextMetrics(LPTEXTMETRICOLE); - HRESULT AddRefHfont(HFONT); - HRESULT ReleaseHfont(HFONT); - HRESULT SetHdc(HDC); + HRESULT get_Name(BSTR*); + HRESULT put_Name(BSTR); + HRESULT get_Size(CY*); + HRESULT put_Size(CY); + HRESULT get_Bold(BOOL*); + HRESULT put_Bold(BOOL); + HRESULT get_Italic(BOOL*); + HRESULT put_Italic(BOOL); + HRESULT get_Underline(BOOL*); + HRESULT put_Underline(BOOL); + HRESULT get_Strikethrough(BOOL*); + HRESULT put_Strikethrough(BOOL); + HRESULT get_Weight(short*); + HRESULT put_Weight(short); + HRESULT get_Charset(short*); + HRESULT put_Charset(short); + HRESULT get_hFont(HFONT*); + HRESULT Clone(IFont*); + HRESULT IsEqual(IFont); + HRESULT SetRatio(int, int); + HRESULT QueryTextMetrics(LPTEXTMETRICOLE); + HRESULT AddRefHfont(HFONT); + HRESULT ReleaseHfont(HFONT); + HRESULT SetHdc(HDC); } alias IFont LPFONT; @@ -365,107 +365,107 @@ interface IFontDisp : IDispatch { alias IFontDisp LPFONTDISP; interface IPicture : IUnknown { - HRESULT get_Handle(OLE_HANDLE*); - HRESULT get_hPal(OLE_HANDLE*); - HRESULT get_Type(short*); - HRESULT get_Width(OLE_XSIZE_HIMETRIC*); - HRESULT get_Height(OLE_YSIZE_HIMETRIC*); - HRESULT Render(HDC, int, int, int, int, OLE_XPOS_HIMETRIC, - OLE_YPOS_HIMETRIC, OLE_XSIZE_HIMETRIC, OLE_YSIZE_HIMETRIC, LPCRECT); - HRESULT set_hPal(OLE_HANDLE); - HRESULT get_CurDC(HDC*); - HRESULT SelectPicture(HDC, HDC*, OLE_HANDLE*); - HRESULT get_KeepOriginalFormat(BOOL*); - HRESULT put_KeepOriginalFormat(BOOL); - HRESULT PictureChanged(); - HRESULT SaveAsFile(LPSTREAM, BOOL, LONG*); - HRESULT get_Attributes(PDWORD); + HRESULT get_Handle(OLE_HANDLE*); + HRESULT get_hPal(OLE_HANDLE*); + HRESULT get_Type(short*); + HRESULT get_Width(OLE_XSIZE_HIMETRIC*); + HRESULT get_Height(OLE_YSIZE_HIMETRIC*); + HRESULT Render(HDC, int, int, int, int, OLE_XPOS_HIMETRIC, + OLE_YPOS_HIMETRIC, OLE_XSIZE_HIMETRIC, OLE_YSIZE_HIMETRIC, LPCRECT); + HRESULT set_hPal(OLE_HANDLE); + HRESULT get_CurDC(HDC*); + HRESULT SelectPicture(HDC, HDC*, OLE_HANDLE*); + HRESULT get_KeepOriginalFormat(BOOL*); + HRESULT put_KeepOriginalFormat(BOOL); + HRESULT PictureChanged(); + HRESULT SaveAsFile(LPSTREAM, BOOL, LONG*); + HRESULT get_Attributes(PDWORD); } interface IPictureDisp : IDispatch { } interface IOleInPlaceSiteEx : IOleInPlaceSite { - HRESULT OnInPlaceActivateEx(BOOL*, DWORD); - HRESULT OnInPlaceDeactivateEx(BOOL); - HRESULT RequestUIActivate(); + HRESULT OnInPlaceActivateEx(BOOL*, DWORD); + HRESULT OnInPlaceDeactivateEx(BOOL); + HRESULT RequestUIActivate(); } interface IObjectWithSite : IUnknown { - HRESULT SetSite(IUnknown); - HRESULT GetSite(REFIID, void**); + HRESULT SetSite(IUnknown); + HRESULT GetSite(REFIID, void**); } interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx { - HRESULT CanWindowlessActivate(); - HRESULT GetCapture(); - HRESULT SetCapture(BOOL); - HRESULT GetFocus(); - HRESULT SetFocus(BOOL); - HRESULT GetDC(LPCRECT, DWORD, HDC*); - HRESULT ReleaseDC(HDC); - HRESULT InvalidateRect(LPCRECT, BOOL); - HRESULT InvalidateRgn(HRGN, BOOL); - HRESULT ScrollRect(INT, INT, LPCRECT, LPCRECT); - HRESULT AdjustRect(LPCRECT); - HRESULT OnDefWindowMessage(UINT, WPARAM, LPARAM, LRESULT*); + HRESULT CanWindowlessActivate(); + HRESULT GetCapture(); + HRESULT SetCapture(BOOL); + HRESULT GetFocus(); + HRESULT SetFocus(BOOL); + HRESULT GetDC(LPCRECT, DWORD, HDC*); + HRESULT ReleaseDC(HDC); + HRESULT InvalidateRect(LPCRECT, BOOL); + HRESULT InvalidateRgn(HRGN, BOOL); + HRESULT ScrollRect(INT, INT, LPCRECT, LPCRECT); + HRESULT AdjustRect(LPCRECT); + HRESULT OnDefWindowMessage(UINT, WPARAM, LPARAM, LRESULT*); } interface IAdviseSinkEx : IUnknown { - void OnDataChange(FORMATETC*, STGMEDIUM*); - void OnViewChange(DWORD, LONG); - void OnRename(IMoniker); - void OnSave(); - void OnClose(); - HRESULT OnViewStatusChange(DWORD); + void OnDataChange(FORMATETC*, STGMEDIUM*); + void OnViewChange(DWORD, LONG); + void OnRename(IMoniker); + void OnSave(); + void OnClose(); + HRESULT OnViewStatusChange(DWORD); } interface IPointerInactive : IUnknown { - HRESULT GetActivationPolicy(DWORD*); - HRESULT OnInactiveMouseMove(LPCRECT, LONG, LONG, DWORD); - HRESULT OnInactiveSetCursor(LPCRECT, LONG, LONG, DWORD, BOOL); + HRESULT GetActivationPolicy(DWORD*); + HRESULT OnInactiveMouseMove(LPCRECT, LONG, LONG, DWORD); + HRESULT OnInactiveSetCursor(LPCRECT, LONG, LONG, DWORD, BOOL); } interface IOleUndoUnit : IUnknown { - HRESULT Do(LPOLEUNDOMANAGER); - HRESULT GetDescription(BSTR*); - HRESULT GetUnitType(CLSID*, LONG*); - HRESULT OnNextAdd(); + HRESULT Do(LPOLEUNDOMANAGER); + HRESULT GetDescription(BSTR*); + HRESULT GetUnitType(CLSID*, LONG*); + HRESULT OnNextAdd(); } interface IOleParentUndoUnit : IOleUndoUnit { - HRESULT Open(IOleParentUndoUnit); - HRESULT Close(IOleParentUndoUnit, BOOL); - HRESULT Add(IOleUndoUnit); - HRESULT FindUnit(IOleUndoUnit); - HRESULT GetParentState(DWORD*); + HRESULT Open(IOleParentUndoUnit); + HRESULT Close(IOleParentUndoUnit, BOOL); + HRESULT Add(IOleUndoUnit); + HRESULT FindUnit(IOleUndoUnit); + HRESULT GetParentState(DWORD*); } interface IEnumOleUndoUnits : IUnknown { - HRESULT Next(ULONG, IOleUndoUnit*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumOleUndoUnits*); + HRESULT Next(ULONG, IOleUndoUnit*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOleUndoUnits*); } interface IOleUndoManager : IUnknown { - HRESULT Open(IOleParentUndoUnit); - HRESULT Close(IOleParentUndoUnit, BOOL); - HRESULT Add(IOleUndoUnit); - HRESULT GetOpenParentState(DWORD*); - HRESULT DiscardFrom(IOleUndoUnit); - HRESULT UndoTo(IOleUndoUnit); - HRESULT RedoTo(IOleUndoUnit); - HRESULT EnumUndoable(IEnumOleUndoUnits*); - HRESULT EnumRedoable(IEnumOleUndoUnits*); - HRESULT GetLastUndoDescription(BSTR*); - HRESULT GetLastRedoDescription(BSTR*); - HRESULT Enable(BOOL); + HRESULT Open(IOleParentUndoUnit); + HRESULT Close(IOleParentUndoUnit, BOOL); + HRESULT Add(IOleUndoUnit); + HRESULT GetOpenParentState(DWORD*); + HRESULT DiscardFrom(IOleUndoUnit); + HRESULT UndoTo(IOleUndoUnit); + HRESULT RedoTo(IOleUndoUnit); + HRESULT EnumUndoable(IEnumOleUndoUnits*); + HRESULT EnumRedoable(IEnumOleUndoUnits*); + HRESULT GetLastUndoDescription(BSTR*); + HRESULT GetLastRedoDescription(BSTR*); + HRESULT Enable(BOOL); } alias IOleUndoManager LPOLEUNDOMANAGER; interface IQuickActivate : IUnknown { - HRESULT QuickActivate(QACONTAINER*, QACONTROL*); - HRESULT SetContentExtent(LPSIZEL); - HRESULT GetContentExtent(LPSIZEL); + HRESULT QuickActivate(QACONTAINER*, QACONTROL*); + HRESULT SetContentExtent(LPSIZEL); + HRESULT GetContentExtent(LPSIZEL); } diff --git a/src/core/sys/windows/odbcinst.d b/src/core/sys/windows/odbcinst.d index e9051f858b..f6d63302f1 100644 --- a/src/core/sys/windows/odbcinst.d +++ b/src/core/sys/windows/odbcinst.d @@ -17,60 +17,60 @@ private import core.sys.windows.windef; // SQLConfigDataSource() enum : WORD { - ODBC_ADD_DSN = 1, - ODBC_CONFIG_DSN = 2, - ODBC_REMOVE_DSN = 3, - ODBC_ADD_SYS_DSN = 4, - ODBC_CONFIG_SYS_DSN = 5, - ODBC_REMOVE_SYS_DSN = 6, - ODBC_REMOVE_DEFAULT_DSN = 7 + ODBC_ADD_DSN = 1, + ODBC_CONFIG_DSN = 2, + ODBC_REMOVE_DSN = 3, + ODBC_ADD_SYS_DSN = 4, + ODBC_CONFIG_SYS_DSN = 5, + ODBC_REMOVE_SYS_DSN = 6, + ODBC_REMOVE_DEFAULT_DSN = 7 } // ODBC 3.0+ enum : WORD { - ODBC_INSTALL_INQUIRY = 1, - ODBC_INSTALL_COMPLETE = 2 + ODBC_INSTALL_INQUIRY = 1, + ODBC_INSTALL_COMPLETE = 2 } // ODBC 2.5+ enum : WORD { - ODBC_INSTALL_DRIVER = 1, - ODBC_REMOVE_DRIVER = 2, - ODBC_CONFIG_DRIVER = 3, - ODBC_CONFIG_DRIVER_MAX = 100 + ODBC_INSTALL_DRIVER = 1, + ODBC_REMOVE_DRIVER = 2, + ODBC_CONFIG_DRIVER = 3, + ODBC_CONFIG_DRIVER_MAX = 100 } // ODBC 3.0+ // SQLSetConfigMode() enum : UWORD { - ODBC_BOTH_DSN = 0, - ODBC_USER_DSN = 1, - ODBC_SYSTEM_DSN = 2 + ODBC_BOTH_DSN = 0, + ODBC_USER_DSN = 1, + ODBC_SYSTEM_DSN = 2 } enum : DWORD { - ODBC_ERROR_GENERAL_ERR = 1, - ODBC_ERROR_INVALID_BUFF_LEN = 2, - ODBC_ERROR_INVALID_HWND = 3, - ODBC_ERROR_INVALID_STR = 4, - ODBC_ERROR_INVALID_REQUEST_TYPE = 5, - ODBC_ERROR_COMPONENT_NOT_FOUND = 6, - ODBC_ERROR_INVALID_NAME = 7, - ODBC_ERROR_INVALID_KEYWORD_VALUE = 8, - ODBC_ERROR_INVALID_DSN = 9, - ODBC_ERROR_INVALID_INF = 10, - ODBC_ERROR_REQUEST_FAILED = 11, - ODBC_ERROR_INVALID_PATH = 12, - ODBC_ERROR_LOAD_LIB_FAILED = 13, - ODBC_ERROR_INVALID_PARAM_SEQUENCE = 14, - ODBC_ERROR_INVALID_LOG_FILE = 15, - ODBC_ERROR_USER_CANCELED = 16, - ODBC_ERROR_USAGE_UPDATE_FAILED = 17, - ODBC_ERROR_CREATE_DSN_FAILED = 18, - ODBC_ERROR_WRITING_SYSINFO_FAILED = 19, - ODBC_ERROR_REMOVE_DSN_FAILED = 20, - ODBC_ERROR_OUT_OF_MEM = 21, - ODBC_ERROR_OUTPUT_STRING_TRUNCATED = 22 + ODBC_ERROR_GENERAL_ERR = 1, + ODBC_ERROR_INVALID_BUFF_LEN = 2, + ODBC_ERROR_INVALID_HWND = 3, + ODBC_ERROR_INVALID_STR = 4, + ODBC_ERROR_INVALID_REQUEST_TYPE = 5, + ODBC_ERROR_COMPONENT_NOT_FOUND = 6, + ODBC_ERROR_INVALID_NAME = 7, + ODBC_ERROR_INVALID_KEYWORD_VALUE = 8, + ODBC_ERROR_INVALID_DSN = 9, + ODBC_ERROR_INVALID_INF = 10, + ODBC_ERROR_REQUEST_FAILED = 11, + ODBC_ERROR_INVALID_PATH = 12, + ODBC_ERROR_LOAD_LIB_FAILED = 13, + ODBC_ERROR_INVALID_PARAM_SEQUENCE = 14, + ODBC_ERROR_INVALID_LOG_FILE = 15, + ODBC_ERROR_USER_CANCELED = 16, + ODBC_ERROR_USAGE_UPDATE_FAILED = 17, + ODBC_ERROR_CREATE_DSN_FAILED = 18, + ODBC_ERROR_WRITING_SYSINFO_FAILED = 19, + ODBC_ERROR_REMOVE_DSN_FAILED = 20, + ODBC_ERROR_OUT_OF_MEM = 21, + ODBC_ERROR_OUTPUT_STRING_TRUNCATED = 22 } extern (Windows): @@ -107,59 +107,59 @@ BOOL SQLWritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR); BOOL SQLWritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); static if (ODBCVER >= 0x0250) { - BOOL ConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); - BOOL ConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); - BOOL SQLConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); - BOOL SQLConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); - deprecated { - BOOL SQLInstallTranslator(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); - BOOL SQLInstallTranslatorW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); - } - BOOL SQLRemoveDriver(LPCSTR,BOOL,LPDWORD); - BOOL SQLRemoveDriverManager(LPDWORD); - BOOL SQLRemoveDriverW(LPCWSTR,BOOL,LPDWORD); - BOOL SQLRemoveTranslator(LPCSTR,LPDWORD); - BOOL SQLRemoveTranslatorW(LPCWSTR,LPDWORD); + BOOL ConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL ConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + BOOL SQLConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL SQLConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + deprecated { + BOOL SQLInstallTranslator(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallTranslatorW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + } + BOOL SQLRemoveDriver(LPCSTR,BOOL,LPDWORD); + BOOL SQLRemoveDriverManager(LPDWORD); + BOOL SQLRemoveDriverW(LPCWSTR,BOOL,LPDWORD); + BOOL SQLRemoveTranslator(LPCSTR,LPDWORD); + BOOL SQLRemoveTranslatorW(LPCWSTR,LPDWORD); } static if (ODBCVER >= 0x0300) { - BOOL SQLGetConfigMode(UWORD*); - BOOL SQLInstallDriverEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); - BOOL SQLInstallDriverExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); - SQLRETURN SQLInstallerError(WORD,DWORD*,LPSTR,WORD,WORD*); - SQLRETURN SQLInstallerErrorW(WORD,DWORD*,LPWSTR,WORD,WORD*); - BOOL SQLInstallTranslatorEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); - BOOL SQLInstallTranslatorExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); - SQLRETURN SQLPostInstallerError(DWORD,LPCSTR); - SQLRETURN SQLPostInstallerErrorW(DWORD,LPCWSTR); - BOOL SQLReadFileDSN(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); - BOOL SQLReadFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); - BOOL SQLSetConfigMode(UWORD); - BOOL SQLWriteFileDSN(LPCSTR,LPCSTR,LPCSTR,LPCSTR); - BOOL SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); + BOOL SQLGetConfigMode(UWORD*); + BOOL SQLInstallDriverEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallDriverExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + SQLRETURN SQLInstallerError(WORD,DWORD*,LPSTR,WORD,WORD*); + SQLRETURN SQLInstallerErrorW(WORD,DWORD*,LPWSTR,WORD,WORD*); + BOOL SQLInstallTranslatorEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallTranslatorExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + SQLRETURN SQLPostInstallerError(DWORD,LPCSTR); + SQLRETURN SQLPostInstallerErrorW(DWORD,LPCWSTR); + BOOL SQLReadFileDSN(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL SQLReadFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + BOOL SQLSetConfigMode(UWORD); + BOOL SQLWriteFileDSN(LPCSTR,LPCSTR,LPCSTR,LPCSTR); + BOOL SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); } version (Unicode) { - alias SQLConfigDataSourceW SQLConfigDataSource; - alias SQLConfigDriverW SQLConfigDriver; - alias SQLCreateDataSourceW SQLCreateDataSource; - alias SQLGetAvailableDriversW SQLGetAvailableDrivers; - alias SQLGetInstalledDriversW SQLGetInstalledDrivers; - alias SQLGetPrivateProfileStringW SQLGetPrivateProfileString; - alias SQLGetTranslatorW SQLGetTranslator; - alias SQLInstallDriverW SQLInstallDriver; - alias SQLInstallDriverExW SQLInstallDriverEx; - alias SQLInstallDriverManagerW SQLInstallDriverManager; - alias SQLInstallerErrorW SQLInstallerError; - alias SQLInstallODBCW SQLInstallODBC; - deprecated alias SQLInstallTranslatorW SQLInstallTranslator; - alias SQLInstallTranslatorExW SQLInstallTranslatorEx; - alias SQLPostInstallerErrorW SQLPostInstallerError; - alias SQLReadFileDSNW SQLReadFileDSN; - alias SQLRemoveDriverW SQLRemoveDriver; - alias SQLRemoveDSNFromIniW SQLRemoveDSNFromIni; - alias SQLRemoveTranslatorW SQLRemoveTranslator; - alias SQLValidDSNW SQLValidDSN; - alias SQLWriteDSNToIniW SQLWriteDSNToIni; - alias SQLWriteFileDSNW SQLWriteFileDSN; - alias SQLWritePrivateProfileStringW SQLWritePrivateProfileString; + alias SQLConfigDataSourceW SQLConfigDataSource; + alias SQLConfigDriverW SQLConfigDriver; + alias SQLCreateDataSourceW SQLCreateDataSource; + alias SQLGetAvailableDriversW SQLGetAvailableDrivers; + alias SQLGetInstalledDriversW SQLGetInstalledDrivers; + alias SQLGetPrivateProfileStringW SQLGetPrivateProfileString; + alias SQLGetTranslatorW SQLGetTranslator; + alias SQLInstallDriverW SQLInstallDriver; + alias SQLInstallDriverExW SQLInstallDriverEx; + alias SQLInstallDriverManagerW SQLInstallDriverManager; + alias SQLInstallerErrorW SQLInstallerError; + alias SQLInstallODBCW SQLInstallODBC; + deprecated alias SQLInstallTranslatorW SQLInstallTranslator; + alias SQLInstallTranslatorExW SQLInstallTranslatorEx; + alias SQLPostInstallerErrorW SQLPostInstallerError; + alias SQLReadFileDSNW SQLReadFileDSN; + alias SQLRemoveDriverW SQLRemoveDriver; + alias SQLRemoveDSNFromIniW SQLRemoveDSNFromIni; + alias SQLRemoveTranslatorW SQLRemoveTranslator; + alias SQLValidDSNW SQLValidDSN; + alias SQLWriteDSNToIniW SQLWriteDSNToIni; + alias SQLWriteFileDSNW SQLWriteFileDSN; + alias SQLWritePrivateProfileStringW SQLWritePrivateProfileString; } diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index b0f6e3c27f..48bb9826ab 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -17,9 +17,9 @@ alias LPCSTR OLE_LPCSTR; #define HGLOBAL HANDLE+/ enum { - OT_LINK = 1, - OT_EMBEDDED, - OT_STATIC + OT_LINK = 1, + OT_EMBEDDED, + OT_STATIC } const OLEVERB_PRIMARY = 0; @@ -28,128 +28,128 @@ const OF_GET = 2; const OF_HANDLER = 4; struct OLETARGETDEVICE { - USHORT otdDeviceNameOffset; - USHORT otdDriverNameOffset; - USHORT otdPortNameOffset; - USHORT otdExtDevmodeOffset; - USHORT otdExtDevmodeSize; - USHORT otdEnvironmentOffset; - USHORT otdEnvironmentSize; - BYTE _otdData; - BYTE* otdData() { return &_otdData; } + USHORT otdDeviceNameOffset; + USHORT otdDriverNameOffset; + USHORT otdPortNameOffset; + USHORT otdExtDevmodeOffset; + USHORT otdExtDevmodeSize; + USHORT otdEnvironmentOffset; + USHORT otdEnvironmentSize; + BYTE _otdData; + BYTE* otdData() { return &_otdData; } } alias OLETARGETDEVICE* LPOLETARGETDEVICE; enum OLESTATUS { - OLE_OK, - OLE_WAIT_FOR_RELEASE, - OLE_BUSY, - OLE_ERROR_PROTECT_ONLY, - OLE_ERROR_MEMORY, - OLE_ERROR_STREAM, - OLE_ERROR_STATIC, - OLE_ERROR_BLANK, - OLE_ERROR_DRAW, - OLE_ERROR_METAFILE, - OLE_ERROR_ABORT, - OLE_ERROR_CLIPBOARD, - OLE_ERROR_FORMAT, - OLE_ERROR_OBJECT, - OLE_ERROR_OPTION, - OLE_ERROR_PROTOCOL, - OLE_ERROR_ADDRESS, - OLE_ERROR_NOT_EQUAL, - OLE_ERROR_HANDLE, - OLE_ERROR_GENERIC, - OLE_ERROR_CLASS, - OLE_ERROR_SYNTAX, - OLE_ERROR_DATATYPE, - OLE_ERROR_PALETTE, - OLE_ERROR_NOT_LINK, - OLE_ERROR_NOT_EMPTY, - OLE_ERROR_SIZE, - OLE_ERROR_DRIVE, - OLE_ERROR_NETWORK, - OLE_ERROR_NAME, - OLE_ERROR_TEMPLATE, - OLE_ERROR_NEW, - OLE_ERROR_EDIT, - OLE_ERROR_OPEN, - OLE_ERROR_NOT_OPEN, - OLE_ERROR_LAUNCH, - OLE_ERROR_COMM, - OLE_ERROR_TERMINATE, - OLE_ERROR_COMMAND, - OLE_ERROR_SHOW, - OLE_ERROR_DOVERB, - OLE_ERROR_ADVISE_NATIVE, - OLE_ERROR_ADVISE_PICT, - OLE_ERROR_ADVISE_RENAME, - OLE_ERROR_POKE_NATIVE, - OLE_ERROR_REQUEST_NATIVE, - OLE_ERROR_REQUEST_PICT, - OLE_ERROR_SERVER_BLOCKED, - OLE_ERROR_REGISTRATION, - OLE_ERROR_ALREADY_REGISTERED, - OLE_ERROR_TASK, - OLE_ERROR_OUTOFDATE, - OLE_ERROR_CANT_UPDATE_CLIENT, - OLE_ERROR_UPDATE, - OLE_ERROR_SETDATA_FORMAT, - OLE_ERROR_STATIC_FROM_OTHER_OS, - OLE_ERROR_FILE_VER, - OLE_WARN_DELETE_DATA = 1000 + OLE_OK, + OLE_WAIT_FOR_RELEASE, + OLE_BUSY, + OLE_ERROR_PROTECT_ONLY, + OLE_ERROR_MEMORY, + OLE_ERROR_STREAM, + OLE_ERROR_STATIC, + OLE_ERROR_BLANK, + OLE_ERROR_DRAW, + OLE_ERROR_METAFILE, + OLE_ERROR_ABORT, + OLE_ERROR_CLIPBOARD, + OLE_ERROR_FORMAT, + OLE_ERROR_OBJECT, + OLE_ERROR_OPTION, + OLE_ERROR_PROTOCOL, + OLE_ERROR_ADDRESS, + OLE_ERROR_NOT_EQUAL, + OLE_ERROR_HANDLE, + OLE_ERROR_GENERIC, + OLE_ERROR_CLASS, + OLE_ERROR_SYNTAX, + OLE_ERROR_DATATYPE, + OLE_ERROR_PALETTE, + OLE_ERROR_NOT_LINK, + OLE_ERROR_NOT_EMPTY, + OLE_ERROR_SIZE, + OLE_ERROR_DRIVE, + OLE_ERROR_NETWORK, + OLE_ERROR_NAME, + OLE_ERROR_TEMPLATE, + OLE_ERROR_NEW, + OLE_ERROR_EDIT, + OLE_ERROR_OPEN, + OLE_ERROR_NOT_OPEN, + OLE_ERROR_LAUNCH, + OLE_ERROR_COMM, + OLE_ERROR_TERMINATE, + OLE_ERROR_COMMAND, + OLE_ERROR_SHOW, + OLE_ERROR_DOVERB, + OLE_ERROR_ADVISE_NATIVE, + OLE_ERROR_ADVISE_PICT, + OLE_ERROR_ADVISE_RENAME, + OLE_ERROR_POKE_NATIVE, + OLE_ERROR_REQUEST_NATIVE, + OLE_ERROR_REQUEST_PICT, + OLE_ERROR_SERVER_BLOCKED, + OLE_ERROR_REGISTRATION, + OLE_ERROR_ALREADY_REGISTERED, + OLE_ERROR_TASK, + OLE_ERROR_OUTOFDATE, + OLE_ERROR_CANT_UPDATE_CLIENT, + OLE_ERROR_UPDATE, + OLE_ERROR_SETDATA_FORMAT, + OLE_ERROR_STATIC_FROM_OTHER_OS, + OLE_ERROR_FILE_VER, + OLE_WARN_DELETE_DATA = 1000 } enum OLE_NOTIFICATION { - OLE_CHANGED, - OLE_SAVED, - OLE_CLOSED, - OLE_RENAMED, - OLE_QUERY_PAINT, - OLE_RELEASE, - OLE_QUERY_RETRY + OLE_CHANGED, + OLE_SAVED, + OLE_CLOSED, + OLE_RENAMED, + OLE_QUERY_PAINT, + OLE_RELEASE, + OLE_QUERY_RETRY } enum OLE_RELEASE_METHOD { - OLE_NONE, - OLE_DELETE, - OLE_LNKPASTE, - OLE_EMBPASTE, - OLE_SHOW, - OLE_RUN, - OLE_ACTIVATE, - OLE_UPDATE, - OLE_CLOSE, - OLE_RECONNECT, - OLE_SETUPDATEOPTIONS, - OLE_SERVERUNLAUNCH, - OLE_LOADFROMSTREAM, - OLE_SETDATA, - OLE_REQUESTDATA, - OLE_OTHER, - OLE_CREATE, - OLE_CREATEFROMTEMPLATE, - OLE_CREATELINKFROMFILE, - OLE_COPYFROMLNK, - OLE_CREATEFROMFILE, - OLE_CREATEINVISIBLE + OLE_NONE, + OLE_DELETE, + OLE_LNKPASTE, + OLE_EMBPASTE, + OLE_SHOW, + OLE_RUN, + OLE_ACTIVATE, + OLE_UPDATE, + OLE_CLOSE, + OLE_RECONNECT, + OLE_SETUPDATEOPTIONS, + OLE_SERVERUNLAUNCH, + OLE_LOADFROMSTREAM, + OLE_SETDATA, + OLE_REQUESTDATA, + OLE_OTHER, + OLE_CREATE, + OLE_CREATEFROMTEMPLATE, + OLE_CREATELINKFROMFILE, + OLE_COPYFROMLNK, + OLE_CREATEFROMFILE, + OLE_CREATEINVISIBLE } enum OLEOPT_RENDER { - olerender_none, - olerender_draw, - olerender_format + olerender_none, + olerender_draw, + olerender_format } alias WORD OLECLIPFORMAT; enum OLEOPT_UPDATE { - oleupdate_always, - oleupdate_onsave, - oleupdate_oncall, + oleupdate_always, + oleupdate_onsave, + oleupdate_oncall, // #ifdef OLE_INTERNAL - oleupdate_onclose + oleupdate_onclose // #endif } @@ -157,205 +157,205 @@ mixin DECLARE_HANDLE!("HOBJECT"); alias LONG LHSERVER, LHCLIENTDOC, LHSERVERDOC; struct OLEOBJECTVTBL { - extern (Windows) { - void* function(LPOLEOBJECT, OLE_LPCSTR) QueryProtocol; - OLESTATUS function(LPOLEOBJECT) Release; - OLESTATUS function(LPOLEOBJECT, BOOL) Show; - OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL) DoVerb; - OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*) GetData; - OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE) SetData; - OLESTATUS function(LPOLEOBJECT, HGLOBAL) SetTargetDevice; - OLESTATUS function(LPOLEOBJECT, RECT*) SetBounds; - OLECLIPFORMAT function(LPOLEOBJECT, OLECLIPFORMAT) EnumFormats; - OLESTATUS function(LPOLEOBJECT, LOGPALETTE*) SetColorScheme; + extern (Windows) { + void* function(LPOLEOBJECT, OLE_LPCSTR) QueryProtocol; + OLESTATUS function(LPOLEOBJECT) Release; + OLESTATUS function(LPOLEOBJECT, BOOL) Show; + OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL) DoVerb; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*) GetData; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE) SetData; + OLESTATUS function(LPOLEOBJECT, HGLOBAL) SetTargetDevice; + OLESTATUS function(LPOLEOBJECT, RECT*) SetBounds; + OLECLIPFORMAT function(LPOLEOBJECT, OLECLIPFORMAT) EnumFormats; + OLESTATUS function(LPOLEOBJECT, LOGPALETTE*) SetColorScheme; //#ifndef SERVERONLY - OLESTATUS function(LPOLEOBJECT) Delete; - OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; - OLESTATUS function(LPOLEOBJECT, LPOLESTREAM) SaveToStream; - OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, - LPOLEOBJECT*) Clone; - OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, - LPOLEOBJECT*) CopyFromLink; - OLESTATUS function(LPOLEOBJECT, LPOLEOBJECT) Equal; - OLESTATUS function(LPOLEOBJECT) CopyToClipboard; - OLESTATUS function(LPOLEOBJECT, HDC, RECT*, RECT*, HDC) Draw; - OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, RECT*) - Activate; - OLESTATUS function(LPOLEOBJECT, HGLOBAL, UINT) Execute; - OLESTATUS function(LPOLEOBJECT) Close; - OLESTATUS function(LPOLEOBJECT) Update; - OLESTATUS function(LPOLEOBJECT) Reconnect; - OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, - OLE_LPCSTR, LPOLEOBJECT*) ObjectConvert; - OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE*) GetLinkUpdateOptions; - OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE) SetLinkUpdateOptions; - OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR) Rename; - OLESTATUS function(LPOLEOBJECT, LPSTR, UINT*) QueryName; - OLESTATUS function(LPOLEOBJECT, LONG*) QueryType; - OLESTATUS function(LPOLEOBJECT, RECT*) QueryBounds; - OLESTATUS function(LPOLEOBJECT, DWORD*) QuerySize; - OLESTATUS function(LPOLEOBJECT) QueryOpen; - OLESTATUS function(LPOLEOBJECT) QueryOutOfDate; - OLESTATUS function(LPOLEOBJECT) QueryReleaseStatus; - OLESTATUS function(LPOLEOBJECT) QueryReleaseError; - OLE_RELEASE_METHOD function(LPOLEOBJECT) QueryReleaseMethod; - OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT) RequestData; - OLESTATUS function(LPOLEOBJECT, UINT, LONG*) ObjectLong; - OLESTATUS function(LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL) ChangeData; + OLESTATUS function(LPOLEOBJECT) Delete; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; + OLESTATUS function(LPOLEOBJECT, LPOLESTREAM) SaveToStream; + OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, + LPOLEOBJECT*) Clone; + OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, + LPOLEOBJECT*) CopyFromLink; + OLESTATUS function(LPOLEOBJECT, LPOLEOBJECT) Equal; + OLESTATUS function(LPOLEOBJECT) CopyToClipboard; + OLESTATUS function(LPOLEOBJECT, HDC, RECT*, RECT*, HDC) Draw; + OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, RECT*) + Activate; + OLESTATUS function(LPOLEOBJECT, HGLOBAL, UINT) Execute; + OLESTATUS function(LPOLEOBJECT) Close; + OLESTATUS function(LPOLEOBJECT) Update; + OLESTATUS function(LPOLEOBJECT) Reconnect; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, + OLE_LPCSTR, LPOLEOBJECT*) ObjectConvert; + OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE*) GetLinkUpdateOptions; + OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE) SetLinkUpdateOptions; + OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR) Rename; + OLESTATUS function(LPOLEOBJECT, LPSTR, UINT*) QueryName; + OLESTATUS function(LPOLEOBJECT, LONG*) QueryType; + OLESTATUS function(LPOLEOBJECT, RECT*) QueryBounds; + OLESTATUS function(LPOLEOBJECT, DWORD*) QuerySize; + OLESTATUS function(LPOLEOBJECT) QueryOpen; + OLESTATUS function(LPOLEOBJECT) QueryOutOfDate; + OLESTATUS function(LPOLEOBJECT) QueryReleaseStatus; + OLESTATUS function(LPOLEOBJECT) QueryReleaseError; + OLE_RELEASE_METHOD function(LPOLEOBJECT) QueryReleaseMethod; + OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT) RequestData; + OLESTATUS function(LPOLEOBJECT, UINT, LONG*) ObjectLong; + OLESTATUS function(LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL) ChangeData; //#endif - } + } } alias OLEOBJECTVTBL* LPOLEOBJECTVTBL; //#ifndef OLE_INTERNAL struct OLEOBJECT { - LPOLEOBJECTVTBL lpvtbl; + LPOLEOBJECTVTBL lpvtbl; } alias OLEOBJECT* LPOLEOBJECT; //#endif struct OLECLIENTVTBL { - int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack; + int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack; } alias OLECLIENTVTBL* LPOLECLIENTVTBL; struct OLECLIENT { - LPOLECLIENTVTBL lpvtbl; + LPOLECLIENTVTBL lpvtbl; } alias OLECLIENT* LPOLECLIENT; struct OLESTREAMVTBL { - DWORD function(LPOLESTREAM, void*, DWORD) Get; - DWORD function(LPOLESTREAM, void*, DWORD) Put; + DWORD function(LPOLESTREAM, void*, DWORD) Get; + DWORD function(LPOLESTREAM, void*, DWORD) Put; } alias OLESTREAMVTBL* LPOLESTREAMVTBL; struct OLESTREAM { - LPOLESTREAMVTBL lpstbl; + LPOLESTREAMVTBL lpstbl; } alias OLESTREAM* LPOLESTREAM; enum OLE_SERVER_USE { - OLE_SERVER_MULTI, - OLE_SERVER_SINGLE + OLE_SERVER_MULTI, + OLE_SERVER_SINGLE } struct OLESERVERVTBL { - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC*) - Open; - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, - LPOLESERVERDOC*) Create; - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, - OLE_LPCSTR, LPOLESERVERDOC*) CreateFromTemplate; - OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, - LPOLESERVERDOC*) Edit; - OLESTATUS function(LPOLESERVER) Exit; - OLESTATUS function(LPOLESERVER) Release; - OLESTATUS function(LPOLESERVER, HGLOBAL) Execute; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC*) + Open; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + LPOLESERVERDOC*) Create; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + OLE_LPCSTR, LPOLESERVERDOC*) CreateFromTemplate; + OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, + LPOLESERVERDOC*) Edit; + OLESTATUS function(LPOLESERVER) Exit; + OLESTATUS function(LPOLESERVER) Release; + OLESTATUS function(LPOLESERVER, HGLOBAL) Execute; } alias TypeDef!(OLESERVERVTBL*) LPOLESERVERVTBL; struct OLESERVER { - LPOLESERVERVTBL lpvtbl; + LPOLESERVERVTBL lpvtbl; } alias OLESERVER* LPOLESERVER; struct OLESERVERDOCVTBL { - OLESTATUS function(LPOLESERVERDOC) Save; - OLESTATUS function(LPOLESERVERDOC) Close; - OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; - OLESTATUS function(LPOLESERVERDOC, RECT*) SetDocDimensions; - OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT*, LPOLECLIENT) - GetObject; - OLESTATUS function(LPOLESERVERDOC) Release; - OLESTATUS function(LPOLESERVERDOC, LOGPALETTE*) SetColorScheme; - OLESTATUS function(LPOLESERVERDOC, HGLOBAL) Execute; + OLESTATUS function(LPOLESERVERDOC) Save; + OLESTATUS function(LPOLESERVERDOC) Close; + OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; + OLESTATUS function(LPOLESERVERDOC, RECT*) SetDocDimensions; + OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT*, LPOLECLIENT) + GetObject; + OLESTATUS function(LPOLESERVERDOC) Release; + OLESTATUS function(LPOLESERVERDOC, LOGPALETTE*) SetColorScheme; + OLESTATUS function(LPOLESERVERDOC, HGLOBAL) Execute; } alias OLESERVERDOCVTBL* LPOLESERVERDOCVTBL; struct OLESERVERDOC { - LPOLESERVERDOCVTBL lpvtbl; + LPOLESERVERDOCVTBL lpvtbl; } alias OLESERVERDOC* LPOLESERVERDOC; extern (Windows) { - OLESTATUS OleDelete(LPOLEOBJECT); - OLESTATUS OleRelease(LPOLEOBJECT); - OLESTATUS OleSaveToStream(LPOLEOBJECT, LPOLESTREAM); - OLESTATUS OleEqual(LPOLEOBJECT, LPOLEOBJECT); - OLESTATUS OleCopyToClipboard(LPOLEOBJECT); - OLESTATUS OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR); - OLESTATUS OleSetTargetDevice(LPOLEOBJECT, HGLOBAL); - OLESTATUS OleSetBounds(LPOLEOBJECT, LPCRECT); - OLESTATUS OleSetColorScheme(LPOLEOBJECT, const(LOGPALETTE)*); - OLESTATUS OleQueryBounds(LPOLEOBJECT, RECT*); - OLESTATUS OleQuerySize(LPOLEOBJECT, DWORD*); - OLESTATUS OleDraw(LPOLEOBJECT, HDC, LPCRECT, LPCRECT, HDC); - OLESTATUS OleQueryOpen(LPOLEOBJECT); - OLESTATUS OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPCRECT); - OLESTATUS OleExecute(LPOLEOBJECT, HGLOBAL, UINT); - OLESTATUS OleClose(LPOLEOBJECT); - OLESTATUS OleUpdate(LPOLEOBJECT); - OLESTATUS OleReconnect(LPOLEOBJECT); - OLESTATUS OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE*); - OLESTATUS OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE); - void* OleQueryProtocol(LPOLEOBJECT, LPCSTR); - OLESTATUS OleQueryReleaseStatus(LPOLEOBJECT); - OLESTATUS OleQueryReleaseError(LPOLEOBJECT); - OLE_RELEASE_METHOD OleQueryReleaseMethod(LPOLEOBJECT); - OLESTATUS OleQueryType(LPOLEOBJECT, LONG*); - DWORD OleQueryClientVersion(); - DWORD OleQueryServerVersion(); - OLECLIPFORMAT OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT); - OLESTATUS OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*); - OLESTATUS OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE); - OLESTATUS OleQueryOutOfDate(LPOLEOBJECT); - OLESTATUS OleRequestData(LPOLEOBJECT, OLECLIPFORMAT); - OLESTATUS OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, - LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, - LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*); - OLESTATUS OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL); - OLESTATUS OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); - OLESTATUS OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, - LPOLEOBJECT*); - OLESTATUS OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*); - OLESTATUS OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, - LPCSTR, LPOLEOBJECT*); - OLESTATUS OleRename(LPOLEOBJECT, LPCSTR); - OLESTATUS OleQueryName(LPOLEOBJECT, LPSTR, UINT*); - OLESTATUS OleRevokeObject(LPOLECLIENT); - BOOL OleIsDcMeta(HDC); - OLESTATUS OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC*); - OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); - OLESTATUS OleRenameClientDoc(LHCLIENTDOC, LPCSTR); - OLESTATUS OleRevertClientDoc(LHCLIENTDOC); - OLESTATUS OleSavedClientDoc(LHCLIENTDOC); - OLESTATUS OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT*); - OLESTATUS OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER*, HINSTANCE, - OLE_SERVER_USE); - OLESTATUS OleRevokeServer(LHSERVER); - OLESTATUS OleBlockServer(LHSERVER); - OLESTATUS OleUnblockServer(LHSERVER, BOOL*); - OLESTATUS OleLockServer(LPOLEOBJECT, LHSERVER*); - OLESTATUS OleUnlockServer(LHSERVER); - OLESTATUS OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC, - LHSERVERDOC*); - OLESTATUS OleRevokeServerDoc(LHSERVERDOC); - OLESTATUS OleRenameServerDoc(LHSERVERDOC, LPCSTR); - OLESTATUS OleRevertServerDoc(LHSERVERDOC); - OLESTATUS OleSavedServerDoc(LHSERVERDOC); + OLESTATUS OleDelete(LPOLEOBJECT); + OLESTATUS OleRelease(LPOLEOBJECT); + OLESTATUS OleSaveToStream(LPOLEOBJECT, LPOLESTREAM); + OLESTATUS OleEqual(LPOLEOBJECT, LPOLEOBJECT); + OLESTATUS OleCopyToClipboard(LPOLEOBJECT); + OLESTATUS OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR); + OLESTATUS OleSetTargetDevice(LPOLEOBJECT, HGLOBAL); + OLESTATUS OleSetBounds(LPOLEOBJECT, LPCRECT); + OLESTATUS OleSetColorScheme(LPOLEOBJECT, const(LOGPALETTE)*); + OLESTATUS OleQueryBounds(LPOLEOBJECT, RECT*); + OLESTATUS OleQuerySize(LPOLEOBJECT, DWORD*); + OLESTATUS OleDraw(LPOLEOBJECT, HDC, LPCRECT, LPCRECT, HDC); + OLESTATUS OleQueryOpen(LPOLEOBJECT); + OLESTATUS OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPCRECT); + OLESTATUS OleExecute(LPOLEOBJECT, HGLOBAL, UINT); + OLESTATUS OleClose(LPOLEOBJECT); + OLESTATUS OleUpdate(LPOLEOBJECT); + OLESTATUS OleReconnect(LPOLEOBJECT); + OLESTATUS OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE*); + OLESTATUS OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE); + void* OleQueryProtocol(LPOLEOBJECT, LPCSTR); + OLESTATUS OleQueryReleaseStatus(LPOLEOBJECT); + OLESTATUS OleQueryReleaseError(LPOLEOBJECT); + OLE_RELEASE_METHOD OleQueryReleaseMethod(LPOLEOBJECT); + OLESTATUS OleQueryType(LPOLEOBJECT, LONG*); + DWORD OleQueryClientVersion(); + DWORD OleQueryServerVersion(); + OLECLIPFORMAT OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT); + OLESTATUS OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*); + OLESTATUS OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE); + OLESTATUS OleQueryOutOfDate(LPOLEOBJECT); + OLESTATUS OleRequestData(LPOLEOBJECT, OLECLIPFORMAT); + OLESTATUS OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, + LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, + LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL); + OLESTATUS OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT); + OLESTATUS OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, + LPOLEOBJECT*); + OLESTATUS OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, + LPCSTR, LPOLEOBJECT*); + OLESTATUS OleRename(LPOLEOBJECT, LPCSTR); + OLESTATUS OleQueryName(LPOLEOBJECT, LPSTR, UINT*); + OLESTATUS OleRevokeObject(LPOLECLIENT); + BOOL OleIsDcMeta(HDC); + OLESTATUS OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC*); + OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); + OLESTATUS OleRenameClientDoc(LHCLIENTDOC, LPCSTR); + OLESTATUS OleRevertClientDoc(LHCLIENTDOC); + OLESTATUS OleSavedClientDoc(LHCLIENTDOC); + OLESTATUS OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT*); + OLESTATUS OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER*, HINSTANCE, + OLE_SERVER_USE); + OLESTATUS OleRevokeServer(LHSERVER); + OLESTATUS OleBlockServer(LHSERVER); + OLESTATUS OleUnblockServer(LHSERVER, BOOL*); + OLESTATUS OleLockServer(LPOLEOBJECT, LHSERVER*); + OLESTATUS OleUnlockServer(LHSERVER); + OLESTATUS OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC, + LHSERVERDOC*); + OLESTATUS OleRevokeServerDoc(LHSERVERDOC); + OLESTATUS OleRenameServerDoc(LHSERVERDOC, LPCSTR); + OLESTATUS OleRevertServerDoc(LHSERVERDOC); + OLESTATUS OleSavedServerDoc(LHSERVERDOC); } diff --git a/src/core/sys/windows/ole2.d b/src/core/sys/windows/ole2.d index 60308c0411..278fd9218c 100644 --- a/src/core/sys/windows/ole2.d +++ b/src/core/sys/windows/ole2.d @@ -19,13 +19,13 @@ const E_DRAW = VIEW_E_DRAW; const DATA_E_FORMATETC = DV_E_FORMATETC; enum { - OLEIVERB_PRIMARY = 0, - OLEIVERB_SHOW = -1, - OLEIVERB_OPEN = -2, - OLEIVERB_HIDE = -3, - OLEIVERB_UIACTIVATE = -4, - OLEIVERB_INPLACEACTIVATE = -5, - OLEIVERB_DISCARDUNDOSTATE = -6 + OLEIVERB_PRIMARY = 0, + OLEIVERB_SHOW = -1, + OLEIVERB_OPEN = -2, + OLEIVERB_HIDE = -3, + OLEIVERB_UIACTIVATE = -4, + OLEIVERB_INPLACEACTIVATE = -5, + OLEIVERB_DISCARDUNDOSTATE = -6 } const EMBDHLP_INPROC_HANDLER = 0x0000L; @@ -35,83 +35,83 @@ const EMBDHLP_DELAYCREATE = 0x00010000L; align(8): struct OLESTREAM { - LPOLESTREAMVTBL lpstbl; + LPOLESTREAMVTBL lpstbl; } alias OLESTREAM* LPOLESTREAM; extern (Windows) { - struct OLESTREAMVTBL { - DWORD function (LPOLESTREAM, void*, DWORD) Get; - DWORD function (LPOLESTREAM, const(void)*, DWORD) Put; - } + struct OLESTREAMVTBL { + DWORD function (LPOLESTREAM, void*, DWORD) Get; + DWORD function (LPOLESTREAM, const(void)*, DWORD) Put; + } } alias OLESTREAMVTBL* LPOLESTREAMVTBL; extern (Windows) { - HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); - DWORD OleBuildVersion(); - HRESULT ReadClassStg(LPSTORAGE, CLSID*); - HRESULT WriteClassStg(LPSTORAGE, REFCLSID); - HRESULT ReadClassStm(LPSTREAM, CLSID*); - HRESULT WriteClassStm(LPSTREAM, REFCLSID); - HRESULT WriteFmtUserTypeStg(LPSTORAGE, CLIPFORMAT, LPOLESTR); - HRESULT ReadFmtUserTypeStg(LPSTORAGE, CLIPFORMAT*, LPOLESTR*); - HRESULT OleInitialize(PVOID); - void OleUninitialize(); - HRESULT OleQueryLinkFromData(LPDATAOBJECT); - HRESULT OleQueryCreateFromData(LPDATAOBJECT); - HRESULT OleCreate(REFCLSID, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateLinkFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateStaticFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateLink(LPMONIKER, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateLinkToFile(LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateFromFile(REFCLSID, LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleLoad(LPSTORAGE, REFIID, LPOLECLIENTSITE, PVOID*); - HRESULT OleSave(LPPERSISTSTORAGE, LPSTORAGE, BOOL); - HRESULT OleLoadFromStream(LPSTREAM, REFIID, PVOID*); - HRESULT OleSaveToStream(LPPERSISTSTREAM, LPSTREAM); - HRESULT OleSetContainedObject(LPUNKNOWN, BOOL); - HRESULT OleNoteObjectVisible(LPUNKNOWN, BOOL); - HRESULT RegisterDragDrop(HWND, LPDROPTARGET); - HRESULT RevokeDragDrop(HWND); - HRESULT DoDragDrop(LPDATAOBJECT, LPDROPSOURCE, DWORD, PDWORD); - HRESULT OleSetClipboard(LPDATAOBJECT); - HRESULT OleGetClipboard(LPDATAOBJECT*); - HRESULT OleFlushClipboard(); - HRESULT OleIsCurrentClipboard(LPDATAOBJECT); - HOLEMENU OleCreateMenuDescriptor(HMENU, LPOLEMENUGROUPWIDTHS); - HRESULT OleSetMenuDescriptor(HOLEMENU, HWND, HWND, LPOLEINPLACEFRAME, LPOLEINPLACEACTIVEOBJECT); - HRESULT OleDestroyMenuDescriptor(HOLEMENU); - HRESULT OleTranslateAccelerator(LPOLEINPLACEFRAME, LPOLEINPLACEFRAMEINFO, LPMSG); - HANDLE OleDuplicateData(HANDLE, CLIPFORMAT, UINT); - HRESULT OleDraw(LPUNKNOWN, DWORD, HDC, LPCRECT); - HRESULT OleRun(LPUNKNOWN); - BOOL OleIsRunning(LPOLEOBJECT); - HRESULT OleLockRunning(LPUNKNOWN, BOOL, BOOL); - void ReleaseStgMedium(LPSTGMEDIUM); - HRESULT CreateOleAdviseHolder(LPOLEADVISEHOLDER*); - HRESULT OleCreateDefaultHandler(REFCLSID, LPUNKNOWN, REFIID, PVOID*); - HRESULT OleCreateEmbeddingHelper(REFCLSID, LPUNKNOWN, DWORD, LPCLASSFACTORY, REFIID, PVOID*); - BOOL IsAccelerator(HACCEL, int, LPMSG, WORD*); - HGLOBAL OleGetIconOfFile(LPOLESTR, BOOL); - HGLOBAL OleGetIconOfClass(REFCLSID, LPOLESTR, BOOL); - HGLOBAL OleMetafilePictFromIconAndLabel(HICON, LPOLESTR, LPOLESTR, UINT); - HRESULT OleRegGetUserType(REFCLSID, DWORD, LPOLESTR*); - HRESULT OleRegGetMiscStatus(REFCLSID, DWORD, DWORD*); - HRESULT OleRegEnumFormatEtc (REFCLSID, DWORD, LPENUMFORMATETC*); - HRESULT OleRegEnumVerbs (REFCLSID, LPENUMOLEVERB*); - HRESULT OleConvertOLESTREAMToIStorage(LPOLESTREAM, LPSTORAGE, const(DVTARGETDEVICE)*); - HRESULT OleConvertIStorageToOLESTREAM(LPSTORAGE, LPOLESTREAM); - HRESULT GetHGlobalFromILockBytes(LPLOCKBYTES, HGLOBAL*); - HRESULT CreateILockBytesOnHGlobal(HGLOBAL, BOOL, LPLOCKBYTES*); - HRESULT GetHGlobalFromStream(LPSTREAM, HGLOBAL*); - HRESULT CreateStreamOnHGlobal(HGLOBAL, BOOL, LPSTREAM*); - HRESULT OleDoAutoConvert(LPSTORAGE, LPCLSID); - HRESULT OleGetAutoConvert(REFCLSID, LPCLSID); - HRESULT OleSetAutoConvert(REFCLSID, REFCLSID); - HRESULT GetConvertStg(LPSTORAGE); - HRESULT SetConvertStg(LPSTORAGE, BOOL); - HRESULT OleConvertIStorageToOLESTREAMEx(LPSTORAGE, CLIPFORMAT, LONG, LONG, DWORD, LPSTGMEDIUM, LPOLESTREAM); - HRESULT OleConvertOLESTREAMToIStorageEx(LPOLESTREAM, LPSTORAGE, CLIPFORMAT*, LONG*, LONG*, DWORD*, LPSTGMEDIUM); + HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); + DWORD OleBuildVersion(); + HRESULT ReadClassStg(LPSTORAGE, CLSID*); + HRESULT WriteClassStg(LPSTORAGE, REFCLSID); + HRESULT ReadClassStm(LPSTREAM, CLSID*); + HRESULT WriteClassStm(LPSTREAM, REFCLSID); + HRESULT WriteFmtUserTypeStg(LPSTORAGE, CLIPFORMAT, LPOLESTR); + HRESULT ReadFmtUserTypeStg(LPSTORAGE, CLIPFORMAT*, LPOLESTR*); + HRESULT OleInitialize(PVOID); + void OleUninitialize(); + HRESULT OleQueryLinkFromData(LPDATAOBJECT); + HRESULT OleQueryCreateFromData(LPDATAOBJECT); + HRESULT OleCreate(REFCLSID, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLinkFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateStaticFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLink(LPMONIKER, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLinkToFile(LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateFromFile(REFCLSID, LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleLoad(LPSTORAGE, REFIID, LPOLECLIENTSITE, PVOID*); + HRESULT OleSave(LPPERSISTSTORAGE, LPSTORAGE, BOOL); + HRESULT OleLoadFromStream(LPSTREAM, REFIID, PVOID*); + HRESULT OleSaveToStream(LPPERSISTSTREAM, LPSTREAM); + HRESULT OleSetContainedObject(LPUNKNOWN, BOOL); + HRESULT OleNoteObjectVisible(LPUNKNOWN, BOOL); + HRESULT RegisterDragDrop(HWND, LPDROPTARGET); + HRESULT RevokeDragDrop(HWND); + HRESULT DoDragDrop(LPDATAOBJECT, LPDROPSOURCE, DWORD, PDWORD); + HRESULT OleSetClipboard(LPDATAOBJECT); + HRESULT OleGetClipboard(LPDATAOBJECT*); + HRESULT OleFlushClipboard(); + HRESULT OleIsCurrentClipboard(LPDATAOBJECT); + HOLEMENU OleCreateMenuDescriptor(HMENU, LPOLEMENUGROUPWIDTHS); + HRESULT OleSetMenuDescriptor(HOLEMENU, HWND, HWND, LPOLEINPLACEFRAME, LPOLEINPLACEACTIVEOBJECT); + HRESULT OleDestroyMenuDescriptor(HOLEMENU); + HRESULT OleTranslateAccelerator(LPOLEINPLACEFRAME, LPOLEINPLACEFRAMEINFO, LPMSG); + HANDLE OleDuplicateData(HANDLE, CLIPFORMAT, UINT); + HRESULT OleDraw(LPUNKNOWN, DWORD, HDC, LPCRECT); + HRESULT OleRun(LPUNKNOWN); + BOOL OleIsRunning(LPOLEOBJECT); + HRESULT OleLockRunning(LPUNKNOWN, BOOL, BOOL); + void ReleaseStgMedium(LPSTGMEDIUM); + HRESULT CreateOleAdviseHolder(LPOLEADVISEHOLDER*); + HRESULT OleCreateDefaultHandler(REFCLSID, LPUNKNOWN, REFIID, PVOID*); + HRESULT OleCreateEmbeddingHelper(REFCLSID, LPUNKNOWN, DWORD, LPCLASSFACTORY, REFIID, PVOID*); + BOOL IsAccelerator(HACCEL, int, LPMSG, WORD*); + HGLOBAL OleGetIconOfFile(LPOLESTR, BOOL); + HGLOBAL OleGetIconOfClass(REFCLSID, LPOLESTR, BOOL); + HGLOBAL OleMetafilePictFromIconAndLabel(HICON, LPOLESTR, LPOLESTR, UINT); + HRESULT OleRegGetUserType(REFCLSID, DWORD, LPOLESTR*); + HRESULT OleRegGetMiscStatus(REFCLSID, DWORD, DWORD*); + HRESULT OleRegEnumFormatEtc (REFCLSID, DWORD, LPENUMFORMATETC*); + HRESULT OleRegEnumVerbs (REFCLSID, LPENUMOLEVERB*); + HRESULT OleConvertOLESTREAMToIStorage(LPOLESTREAM, LPSTORAGE, const(DVTARGETDEVICE)*); + HRESULT OleConvertIStorageToOLESTREAM(LPSTORAGE, LPOLESTREAM); + HRESULT GetHGlobalFromILockBytes(LPLOCKBYTES, HGLOBAL*); + HRESULT CreateILockBytesOnHGlobal(HGLOBAL, BOOL, LPLOCKBYTES*); + HRESULT GetHGlobalFromStream(LPSTREAM, HGLOBAL*); + HRESULT CreateStreamOnHGlobal(HGLOBAL, BOOL, LPSTREAM*); + HRESULT OleDoAutoConvert(LPSTORAGE, LPCLSID); + HRESULT OleGetAutoConvert(REFCLSID, LPCLSID); + HRESULT OleSetAutoConvert(REFCLSID, REFCLSID); + HRESULT GetConvertStg(LPSTORAGE); + HRESULT SetConvertStg(LPSTORAGE, BOOL); + HRESULT OleConvertIStorageToOLESTREAMEx(LPSTORAGE, CLIPFORMAT, LONG, LONG, DWORD, LPSTGMEDIUM, LPOLESTREAM); + HRESULT OleConvertOLESTREAMToIStorageEx(LPOLESTREAM, LPSTORAGE, CLIPFORMAT*, LONG*, LONG*, DWORD*, LPSTGMEDIUM); } diff --git a/src/core/sys/windows/oleacc.d b/src/core/sys/windows/oleacc.d index b4720c4871..a179871157 100644 --- a/src/core/sys/windows/oleacc.d +++ b/src/core/sys/windows/oleacc.d @@ -13,201 +13,201 @@ private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windo core.sys.windows.windef; enum { - DISPID_ACC_PARENT = -5000, - DISPID_ACC_CHILDCOUNT = -5001, - DISPID_ACC_CHILD = -5002, - DISPID_ACC_NAME = -5003, - DISPID_ACC_VALUE = -5004, - DISPID_ACC_DESCRIPTION = -5005, - DISPID_ACC_ROLE = -5006, - DISPID_ACC_STATE = -5007, - DISPID_ACC_HELP = -5008, - DISPID_ACC_HELPTOPIC = -5009, - DISPID_ACC_KEYBOARDSHORTCUT = -5010, - DISPID_ACC_FOCUS = -5011, - DISPID_ACC_SELECTION = -5012, - DISPID_ACC_DEFAULTACTION = -5013, - DISPID_ACC_SELECT = -5014, - DISPID_ACC_LOCATION = -5015, - DISPID_ACC_NAVIGATE = -5016, - DISPID_ACC_HITTEST = -5017, - DISPID_ACC_DODEFAULTACTION = -5018 + DISPID_ACC_PARENT = -5000, + DISPID_ACC_CHILDCOUNT = -5001, + DISPID_ACC_CHILD = -5002, + DISPID_ACC_NAME = -5003, + DISPID_ACC_VALUE = -5004, + DISPID_ACC_DESCRIPTION = -5005, + DISPID_ACC_ROLE = -5006, + DISPID_ACC_STATE = -5007, + DISPID_ACC_HELP = -5008, + DISPID_ACC_HELPTOPIC = -5009, + DISPID_ACC_KEYBOARDSHORTCUT = -5010, + DISPID_ACC_FOCUS = -5011, + DISPID_ACC_SELECTION = -5012, + DISPID_ACC_DEFAULTACTION = -5013, + DISPID_ACC_SELECT = -5014, + DISPID_ACC_LOCATION = -5015, + DISPID_ACC_NAVIGATE = -5016, + DISPID_ACC_HITTEST = -5017, + DISPID_ACC_DODEFAULTACTION = -5018 } enum { - NAVDIR_UP = 1, - NAVDIR_DOWN, - NAVDIR_LEFT, - NAVDIR_RIGHT, - NAVDIR_NEXT, - NAVDIR_PREVIOUS, - NAVDIR_FIRSTCHILD, - NAVDIR_LASTCHILD // = 8 + NAVDIR_UP = 1, + NAVDIR_DOWN, + NAVDIR_LEFT, + NAVDIR_RIGHT, + NAVDIR_NEXT, + NAVDIR_PREVIOUS, + NAVDIR_FIRSTCHILD, + NAVDIR_LASTCHILD // = 8 } enum { - ROLE_SYSTEM_TITLEBAR = 1, - ROLE_SYSTEM_MENUBAR, - ROLE_SYSTEM_SCROLLBAR, - ROLE_SYSTEM_GRIP, - ROLE_SYSTEM_SOUND, - ROLE_SYSTEM_CURSOR, - ROLE_SYSTEM_CARET, - ROLE_SYSTEM_ALERT, - ROLE_SYSTEM_WINDOW, - ROLE_SYSTEM_CLIENT, - ROLE_SYSTEM_MENUPOPUP, - ROLE_SYSTEM_MENUITEM, - ROLE_SYSTEM_TOOLTIP, - ROLE_SYSTEM_APPLICATION, - ROLE_SYSTEM_DOCUMENT, - ROLE_SYSTEM_PANE, - ROLE_SYSTEM_CHART, - ROLE_SYSTEM_DIALOG, - ROLE_SYSTEM_BORDER, - ROLE_SYSTEM_GROUPING, - ROLE_SYSTEM_SEPARATOR, - ROLE_SYSTEM_TOOLBAR, - ROLE_SYSTEM_STATUSBAR, - ROLE_SYSTEM_TABLE, - ROLE_SYSTEM_COLUMNHEADER, - ROLE_SYSTEM_ROWHEADER, - ROLE_SYSTEM_COLUMN, - ROLE_SYSTEM_ROW, - ROLE_SYSTEM_CELL, - ROLE_SYSTEM_LINK, - ROLE_SYSTEM_HELPBALLOON, - ROLE_SYSTEM_CHARACTER, - ROLE_SYSTEM_LIST, - ROLE_SYSTEM_LISTITEM, - ROLE_SYSTEM_OUTLINE, - ROLE_SYSTEM_OUTLINEITEM, - ROLE_SYSTEM_PAGETAB, - ROLE_SYSTEM_PROPERTYPAGE, - ROLE_SYSTEM_INDICATOR, - ROLE_SYSTEM_GRAPHIC, - ROLE_SYSTEM_STATICTEXT, - ROLE_SYSTEM_TEXT, - ROLE_SYSTEM_PUSHBUTTON, - ROLE_SYSTEM_CHECKBUTTON, - ROLE_SYSTEM_RADIOBUTTON, - ROLE_SYSTEM_COMBOBOX, - ROLE_SYSTEM_DROPLIST, - ROLE_SYSTEM_PROGRESSBAR, - ROLE_SYSTEM_DIAL, - ROLE_SYSTEM_HOTKEYFIELD, - ROLE_SYSTEM_SLIDER, - ROLE_SYSTEM_SPINBUTTON, - ROLE_SYSTEM_DIAGRAM, - ROLE_SYSTEM_ANIMATION, - ROLE_SYSTEM_EQUATION, - ROLE_SYSTEM_BUTTONDROPDOWN, - ROLE_SYSTEM_BUTTONMENU, - ROLE_SYSTEM_BUTTONDROPDOWNGRID, - ROLE_SYSTEM_WHITESPACE, - ROLE_SYSTEM_PAGETABLIST, - ROLE_SYSTEM_CLOCK // = 61 + ROLE_SYSTEM_TITLEBAR = 1, + ROLE_SYSTEM_MENUBAR, + ROLE_SYSTEM_SCROLLBAR, + ROLE_SYSTEM_GRIP, + ROLE_SYSTEM_SOUND, + ROLE_SYSTEM_CURSOR, + ROLE_SYSTEM_CARET, + ROLE_SYSTEM_ALERT, + ROLE_SYSTEM_WINDOW, + ROLE_SYSTEM_CLIENT, + ROLE_SYSTEM_MENUPOPUP, + ROLE_SYSTEM_MENUITEM, + ROLE_SYSTEM_TOOLTIP, + ROLE_SYSTEM_APPLICATION, + ROLE_SYSTEM_DOCUMENT, + ROLE_SYSTEM_PANE, + ROLE_SYSTEM_CHART, + ROLE_SYSTEM_DIALOG, + ROLE_SYSTEM_BORDER, + ROLE_SYSTEM_GROUPING, + ROLE_SYSTEM_SEPARATOR, + ROLE_SYSTEM_TOOLBAR, + ROLE_SYSTEM_STATUSBAR, + ROLE_SYSTEM_TABLE, + ROLE_SYSTEM_COLUMNHEADER, + ROLE_SYSTEM_ROWHEADER, + ROLE_SYSTEM_COLUMN, + ROLE_SYSTEM_ROW, + ROLE_SYSTEM_CELL, + ROLE_SYSTEM_LINK, + ROLE_SYSTEM_HELPBALLOON, + ROLE_SYSTEM_CHARACTER, + ROLE_SYSTEM_LIST, + ROLE_SYSTEM_LISTITEM, + ROLE_SYSTEM_OUTLINE, + ROLE_SYSTEM_OUTLINEITEM, + ROLE_SYSTEM_PAGETAB, + ROLE_SYSTEM_PROPERTYPAGE, + ROLE_SYSTEM_INDICATOR, + ROLE_SYSTEM_GRAPHIC, + ROLE_SYSTEM_STATICTEXT, + ROLE_SYSTEM_TEXT, + ROLE_SYSTEM_PUSHBUTTON, + ROLE_SYSTEM_CHECKBUTTON, + ROLE_SYSTEM_RADIOBUTTON, + ROLE_SYSTEM_COMBOBOX, + ROLE_SYSTEM_DROPLIST, + ROLE_SYSTEM_PROGRESSBAR, + ROLE_SYSTEM_DIAL, + ROLE_SYSTEM_HOTKEYFIELD, + ROLE_SYSTEM_SLIDER, + ROLE_SYSTEM_SPINBUTTON, + ROLE_SYSTEM_DIAGRAM, + ROLE_SYSTEM_ANIMATION, + ROLE_SYSTEM_EQUATION, + ROLE_SYSTEM_BUTTONDROPDOWN, + ROLE_SYSTEM_BUTTONMENU, + ROLE_SYSTEM_BUTTONDROPDOWNGRID, + ROLE_SYSTEM_WHITESPACE, + ROLE_SYSTEM_PAGETABLIST, + ROLE_SYSTEM_CLOCK // = 61 } enum { - STATE_SYSTEM_UNAVAILABLE = 0x00000001, - STATE_SYSTEM_SELECTED = 0x00000002, - STATE_SYSTEM_FOCUSED = 0x00000004, - STATE_SYSTEM_PRESSED = 0x00000008, - STATE_SYSTEM_CHECKED = 0x00000010, - STATE_SYSTEM_MIXED = 0x00000020, - STATE_SYSTEM_READONLY = 0x00000040, - STATE_SYSTEM_HOTTRACKED = 0x00000080, - STATE_SYSTEM_DEFAULT = 0x00000100, - STATE_SYSTEM_EXPANDED = 0x00000200, - STATE_SYSTEM_COLLAPSED = 0x00000400, - STATE_SYSTEM_BUSY = 0x00000800, - STATE_SYSTEM_FLOATING = 0x00001000, - STATE_SYSTEM_MARQUEED = 0x00002000, - STATE_SYSTEM_ANIMATED = 0x00004000, - STATE_SYSTEM_INVISIBLE = 0x00008000, - STATE_SYSTEM_OFFSCREEN = 0x00010000, - STATE_SYSTEM_SIZEABLE = 0x00020000, - STATE_SYSTEM_MOVEABLE = 0x00040000, - STATE_SYSTEM_SELFVOICING = 0x00080000, - STATE_SYSTEM_FOCUSABLE = 0x00100000, - STATE_SYSTEM_SELECTABLE = 0x00200000, - STATE_SYSTEM_LINKED = 0x00400000, - STATE_SYSTEM_TRAVERSED = 0x00800000, - STATE_SYSTEM_MULTISELECTABLE = 0x01000000, - STATE_SYSTEM_EXTSELECTABLE = 0x02000000, - STATE_SYSTEM_ALERT_LOW = 0x04000000, - STATE_SYSTEM_ALERT_MEDIUM = 0x08000000, - STATE_SYSTEM_ALERT_HIGH = 0x10000000, - STATE_SYSTEM_VALID = 0x1fffffff + STATE_SYSTEM_UNAVAILABLE = 0x00000001, + STATE_SYSTEM_SELECTED = 0x00000002, + STATE_SYSTEM_FOCUSED = 0x00000004, + STATE_SYSTEM_PRESSED = 0x00000008, + STATE_SYSTEM_CHECKED = 0x00000010, + STATE_SYSTEM_MIXED = 0x00000020, + STATE_SYSTEM_READONLY = 0x00000040, + STATE_SYSTEM_HOTTRACKED = 0x00000080, + STATE_SYSTEM_DEFAULT = 0x00000100, + STATE_SYSTEM_EXPANDED = 0x00000200, + STATE_SYSTEM_COLLAPSED = 0x00000400, + STATE_SYSTEM_BUSY = 0x00000800, + STATE_SYSTEM_FLOATING = 0x00001000, + STATE_SYSTEM_MARQUEED = 0x00002000, + STATE_SYSTEM_ANIMATED = 0x00004000, + STATE_SYSTEM_INVISIBLE = 0x00008000, + STATE_SYSTEM_OFFSCREEN = 0x00010000, + STATE_SYSTEM_SIZEABLE = 0x00020000, + STATE_SYSTEM_MOVEABLE = 0x00040000, + STATE_SYSTEM_SELFVOICING = 0x00080000, + STATE_SYSTEM_FOCUSABLE = 0x00100000, + STATE_SYSTEM_SELECTABLE = 0x00200000, + STATE_SYSTEM_LINKED = 0x00400000, + STATE_SYSTEM_TRAVERSED = 0x00800000, + STATE_SYSTEM_MULTISELECTABLE = 0x01000000, + STATE_SYSTEM_EXTSELECTABLE = 0x02000000, + STATE_SYSTEM_ALERT_LOW = 0x04000000, + STATE_SYSTEM_ALERT_MEDIUM = 0x08000000, + STATE_SYSTEM_ALERT_HIGH = 0x10000000, + STATE_SYSTEM_VALID = 0x1fffffff } enum SELFLAG { - SELFLAG_NONE = 0, - SELFLAG_TAKEFOCUS = 1, - SELFLAG_TAKESELECTION = 2, - SELFLAG_EXTENDSELECTION = 4, - SELFLAG_ADDSELECTION = 8, - SELFLAG_REMOVESELECTION = 16 + SELFLAG_NONE = 0, + SELFLAG_TAKEFOCUS = 1, + SELFLAG_TAKESELECTION = 2, + SELFLAG_EXTENDSELECTION = 4, + SELFLAG_ADDSELECTION = 8, + SELFLAG_REMOVESELECTION = 16 } const SELFLAG_VALID = 0x0000001F; interface IAccessible : IDispatch { - HRESULT get_accParent(IDispatch*); - HRESULT get_accChildCount(int*); - HRESULT get_accChild(VARIANT, IDispatch*); - HRESULT get_accName(VARIANT, BSTR*); - HRESULT get_accValue(VARIANT, BSTR*); - HRESULT get_accDescription(VARIANT, BSTR*); - HRESULT get_accRole(VARIANT, VARIANT*); - HRESULT get_accState(VARIANT, VARIANT*); - HRESULT get_accHelp(VARIANT, BSTR*); - HRESULT get_accHelpTopic(BSTR*, VARIANT, int*); - HRESULT get_accKeyboardShortcut(VARIANT, BSTR*); - HRESULT get_accFocus(VARIANT*); - HRESULT get_accSelection(VARIANT*); - HRESULT get_accDefaultAction(VARIANT, BSTR*); + HRESULT get_accParent(IDispatch*); + HRESULT get_accChildCount(int*); + HRESULT get_accChild(VARIANT, IDispatch*); + HRESULT get_accName(VARIANT, BSTR*); + HRESULT get_accValue(VARIANT, BSTR*); + HRESULT get_accDescription(VARIANT, BSTR*); + HRESULT get_accRole(VARIANT, VARIANT*); + HRESULT get_accState(VARIANT, VARIANT*); + HRESULT get_accHelp(VARIANT, BSTR*); + HRESULT get_accHelpTopic(BSTR*, VARIANT, int*); + HRESULT get_accKeyboardShortcut(VARIANT, BSTR*); + HRESULT get_accFocus(VARIANT*); + HRESULT get_accSelection(VARIANT*); + HRESULT get_accDefaultAction(VARIANT, BSTR*); - HRESULT accSelect(int, VARIANT); - HRESULT accLocation(int*, int*, int*, int*, VARIANT); - HRESULT accNavigate(int, VARIANT, VARIANT*); - HRESULT accHitTest(int, int, VARIANT*); - HRESULT accDoDefaultAction(VARIANT); + HRESULT accSelect(int, VARIANT); + HRESULT accLocation(int*, int*, int*, int*, VARIANT); + HRESULT accNavigate(int, VARIANT, VARIANT*); + HRESULT accHitTest(int, int, VARIANT*); + HRESULT accDoDefaultAction(VARIANT); - HRESULT put_accName(VARIANT, BSTR); - HRESULT put_accValue(VARIANT, BSTR); + HRESULT put_accName(VARIANT, BSTR); + HRESULT put_accValue(VARIANT, BSTR); } alias IAccessible LPACCESSIBLE; extern (Windows) { - HRESULT AccessibleChildren(IAccessible, LONG, LONG, VARIANT*, LONG*); - HRESULT AccessibleObjectFromEvent(HWND, DWORD, DWORD, IAccessible, VARIANT*); - HRESULT AccessibleObjectFromPoint(POINT, IAccessible*, VARIANT*); - HRESULT AccessibleObjectFromWindow(HWND, DWORD, REFIID, void**); - HRESULT CreateStdAccessibleObject(HWND, LONG, REFIID, void**); - HRESULT CreateStdAccessibleProxyA(HWND, LPCSTR, LONG, REFIID, void**); - HRESULT CreateStdAccessibleProxyW(HWND, LPCWSTR, LONG, REFIID, void**); + HRESULT AccessibleChildren(IAccessible, LONG, LONG, VARIANT*, LONG*); + HRESULT AccessibleObjectFromEvent(HWND, DWORD, DWORD, IAccessible, VARIANT*); + HRESULT AccessibleObjectFromPoint(POINT, IAccessible*, VARIANT*); + HRESULT AccessibleObjectFromWindow(HWND, DWORD, REFIID, void**); + HRESULT CreateStdAccessibleObject(HWND, LONG, REFIID, void**); + HRESULT CreateStdAccessibleProxyA(HWND, LPCSTR, LONG, REFIID, void**); + HRESULT CreateStdAccessibleProxyW(HWND, LPCWSTR, LONG, REFIID, void**); - void GetOleaccVersionInfo(DWORD*, DWORD*); - UINT GetRoleTextA(DWORD, LPSTR, UINT); - UINT GetRoleTextW(DWORD, LPWSTR, UINT); - UINT GetStateTextA(DWORD, LPSTR, UINT); - UINT GetStateTextW(DWORD, LPWSTR, UINT); - LRESULT LresultFromObject(REFIID, WPARAM, LPUNKNOWN); - HRESULT ObjectFromLresult(LRESULT, REFIID, WPARAM, void**); - HRESULT WindowFromAccessibleObject(IAccessible, HWND*); + void GetOleaccVersionInfo(DWORD*, DWORD*); + UINT GetRoleTextA(DWORD, LPSTR, UINT); + UINT GetRoleTextW(DWORD, LPWSTR, UINT); + UINT GetStateTextA(DWORD, LPSTR, UINT); + UINT GetStateTextW(DWORD, LPWSTR, UINT); + LRESULT LresultFromObject(REFIID, WPARAM, LPUNKNOWN); + HRESULT ObjectFromLresult(LRESULT, REFIID, WPARAM, void**); + HRESULT WindowFromAccessibleObject(IAccessible, HWND*); } version(Unicode) { - alias CreateStdAccessibleProxyW CreateStdAccessibleProxy; - alias GetRoleTextW GetRoleText; - alias GetStateTextW GetStateText; + alias CreateStdAccessibleProxyW CreateStdAccessibleProxy; + alias GetRoleTextW GetRoleText; + alias GetStateTextW GetStateText; } else { - alias CreateStdAccessibleProxyA CreateStdAccessibleProxy; - alias GetRoleTextA GetRoleText; - alias GetStateTextA GetStateText; + alias CreateStdAccessibleProxyA CreateStdAccessibleProxy; + alias GetRoleTextA GetRoleText; + alias GetStateTextA GetStateText; } diff --git a/src/core/sys/windows/oleauto.d b/src/core/sys/windows/oleauto.d index 83e415ef27..a625b11787 100644 --- a/src/core/sys/windows/oleauto.d +++ b/src/core/sys/windows/oleauto.d @@ -47,8 +47,8 @@ const DISPATCH_PROPERTYPUTREF = 8; //MACRO #define IsHashValCompatible(h1, h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2)))) enum { - ACTIVEOBJECT_STRONG = 0, - ACTIVEOBJECT_WEAK = 1 + ACTIVEOBJECT_STRONG = 0, + ACTIVEOBJECT_WEAK = 1 } // DAC: These seem to be irrelevant for D. @@ -119,10 +119,10 @@ enum { //#endif enum { - VARCMP_LT = 0, - VARCMP_EQ, - VARCMP_GT, - VARCMP_NULL // = 3 + VARCMP_LT = 0, + VARCMP_EQ, + VARCMP_GT, + VARCMP_NULL // = 3 } const LOCALE_USE_NLS = 0x10000000; @@ -165,47 +165,47 @@ const VTBIT_DECIMAL = 1 << VARENUM.VT_DECIMAL; enum REGKIND{ - REGKIND_DEFAULT, - REGKIND_REGISTER, - REGKIND_NONE + REGKIND_DEFAULT, + REGKIND_REGISTER, + REGKIND_NONE } struct PARAMDATA{ - OLECHAR* szName; - VARTYPE vt; + OLECHAR* szName; + VARTYPE vt; } alias PARAMDATA* LPPARAMDATA; struct METHODDATA{ - OLECHAR* szName; - PARAMDATA* ppdata; - DISPID dispid; - UINT iMeth; - CALLCONV cc; - UINT cArgs; - WORD wFlags; - VARTYPE vtReturn; + OLECHAR* szName; + PARAMDATA* ppdata; + DISPID dispid; + UINT iMeth; + CALLCONV cc; + UINT cArgs; + WORD wFlags; + VARTYPE vtReturn; } alias METHODDATA* LPMETHODDATA; struct INTERFACEDATA{ - METHODDATA* pmethdata; - UINT cMembers; + METHODDATA* pmethdata; + UINT cMembers; } alias INTERFACEDATA* LPINTERFACEDATA; struct UDATE { - SYSTEMTIME st; - USHORT wDayOfYear; + SYSTEMTIME st; + USHORT wDayOfYear; } struct NUMPARSE { - int cDig; - uint dwInFlags; - uint dwOutFlags; - int cchUsed; - int nBaseShift; - int nPwr10; + int cDig; + uint dwInFlags; + uint dwOutFlags; + int cchUsed; + int nBaseShift; + int nPwr10; } @@ -214,470 +214,470 @@ struct NUMPARSE { deprecated { // not actually deprecated, but they aren't converted yet. // (will need to reinstate CreateTypeLib as well) - interface ICreateTypeInfo {}; - interface ICreateTypeInfo2 {}; - interface ICreateTypeLib {}; - interface ICreateTypeLib2 {}; - - alias ICreateTypeInfo LPCREATETYPEINFO; - alias ICreateTypeInfo2 LPCREATETYPEINFO2; - alias ICreateTypeLib LPCREATETYPELIB; - alias ICreateTypeLib2 LPCREATETYPELIB2; + interface ICreateTypeInfo {}; + interface ICreateTypeInfo2 {}; + interface ICreateTypeLib {}; + interface ICreateTypeLib2 {}; + + alias ICreateTypeInfo LPCREATETYPEINFO; + alias ICreateTypeInfo2 LPCREATETYPEINFO2; + alias ICreateTypeLib LPCREATETYPELIB; + alias ICreateTypeLib2 LPCREATETYPELIB2; } extern (Windows) { - BSTR SysAllocString(const(OLECHAR)*); - int SysReAllocString(BSTR*, const(OLECHAR)*); - BSTR SysAllocStringLen(const(OLECHAR)*, uint); - int SysReAllocStringLen(BSTR*, const(OLECHAR)*, uint); - void SysFreeString(BSTR); - uint SysStringLen(BSTR); - uint SysStringByteLen(BSTR); - BSTR SysAllocStringByteLen(const(char)*, uint); - int DosDateTimeToVariantTime(ushort, ushort, double*); - int VariantTimeToDosDateTime(double, ushort*, ushort*); - int VariantTimeToSystemTime(double, LPSYSTEMTIME); - int SystemTimeToVariantTime(LPSYSTEMTIME, double*); - HRESULT VarDateFromUdate(UDATE*, ULONG, DATE*); - HRESULT VarDateFromUdateEx(UDATE*, LCID, ULONG, DATE*); - HRESULT VarUdateFromDate(DATE, ULONG, UDATE*); - HRESULT SafeArrayAllocDescriptor(uint, SAFEARRAY**); - HRESULT SafeArrayAllocData(SAFEARRAY*); - SAFEARRAY* SafeArrayCreate(VARTYPE, uint, SAFEARRAYBOUND*); - HRESULT SafeArrayDestroyDescriptor(SAFEARRAY*); - HRESULT SafeArrayDestroyData(SAFEARRAY*); - HRESULT SafeArrayDestroy(SAFEARRAY*); - HRESULT SafeArrayRedim(SAFEARRAY*, SAFEARRAYBOUND*); - uint SafeArrayGetDim(SAFEARRAY*); - uint SafeArrayGetElemsize(SAFEARRAY*); - HRESULT SafeArrayGetUBound(SAFEARRAY*, uint, int*); - HRESULT SafeArrayGetLBound(SAFEARRAY*, uint, int*); - HRESULT SafeArrayLock(SAFEARRAY*); - HRESULT SafeArrayUnlock(SAFEARRAY*); - HRESULT SafeArrayAccessData(SAFEARRAY*, void**); - HRESULT SafeArrayUnaccessData(SAFEARRAY*); - HRESULT SafeArrayGetElement(SAFEARRAY*, int*, void*); - HRESULT SafeArrayPutElement(SAFEARRAY*, int*, void*); - HRESULT SafeArrayCopy(SAFEARRAY*, SAFEARRAY**); - HRESULT SafeArrayPtrOfIndex(SAFEARRAY*, int*, void**); - SAFEARRAY* SafeArrayCreateVector(VARTYPE, LONG, ULONG); - SAFEARRAY* SafeArrayCreateVectorEx(VARTYPE, LONG, ULONG, LPVOID); - HRESULT SafeArrayAllocDescriptorEx(VARTYPE, UINT, SAFEARRAY**); - HRESULT SafeArrayGetVartype(SAFEARRAY*, VARTYPE*); - HRESULT SafeArraySetRecordInfo(SAFEARRAY*, IRecordInfo); - HRESULT SafeArrayGetRecordInfo(SAFEARRAY*, IRecordInfo*); - HRESULT SafeArraySetIID(SAFEARRAY*, REFGUID); - HRESULT SafeArrayGetIID(SAFEARRAY*, GUID*); - void VariantInit(VARIANTARG*); - HRESULT VariantClear(VARIANTARG*); - HRESULT VariantCopy(VARIANTARG*, VARIANTARG*); - HRESULT VariantCopyInd(VARIANT*, VARIANTARG*); - HRESULT VariantChangeType(VARIANTARG*, VARIANTARG*, ushort, VARTYPE); - HRESULT VariantChangeTypeEx(VARIANTARG*, VARIANTARG*, LCID, ushort, VARTYPE); - HRESULT VarUI1FromI2(short, ubyte*); - HRESULT VarUI1FromI4(int, ubyte*); - HRESULT VarUI1FromR4(float, ubyte*); - HRESULT VarUI1FromR8(double, ubyte*); - HRESULT VarUI1FromCy(CY, ubyte*); - HRESULT VarUI1FromDate(DATE, ubyte*); - HRESULT VarUI1FromStr(OLECHAR*, LCID, uint, ubyte*); - HRESULT VarUI1FromDisp(LPDISPATCH, LCID, ubyte*); - HRESULT VarUI1FromBool(VARIANT_BOOL, ubyte*); - HRESULT VarI2FromUI1(ubyte, short*); - HRESULT VarI2FromI4(int, short*); - HRESULT VarI2FromR4(float, short*); - HRESULT VarI2FromR8(double, short*); - HRESULT VarI2FromCy(CY cyIn, short*); - HRESULT VarI2FromDate(DATE, short*); - HRESULT VarI2FromStr(OLECHAR*, LCID, uint, short*); - HRESULT VarI2FromDisp(LPDISPATCH, LCID, short*); - HRESULT VarI2FromBool(VARIANT_BOOL, short*); - HRESULT VarI4FromUI1(ubyte, int*); - HRESULT VarI4FromI2(short, int*); - HRESULT VarI4FromR4(float, int*); - HRESULT VarI4FromR8(double, int*); - HRESULT VarI4FromCy(CY, int*); - HRESULT VarI4FromDate(DATE, int*); - HRESULT VarI4FromStr(OLECHAR*, LCID, uint, int*); - HRESULT VarI4FromDisp(LPDISPATCH, LCID, int*); - HRESULT VarI4FromBool(VARIANT_BOOL, int*); - HRESULT VarR4FromUI1(ubyte, float*); - HRESULT VarR4FromI2(short, float*); - HRESULT VarR4FromI4(int, float*); - HRESULT VarR4FromR8(double, float*); - HRESULT VarR4FromCy(CY, float*); - HRESULT VarR4FromDate(DATE, float*); - HRESULT VarR4FromStr(OLECHAR*, LCID, uint, float*); - HRESULT VarR4FromDisp(LPDISPATCH, LCID, float*); - HRESULT VarR4FromBool(VARIANT_BOOL, float*); - HRESULT VarR8FromUI1(ubyte, double*); - HRESULT VarR8FromI2(short, double*); - HRESULT VarR8FromI4(int, double*); - HRESULT VarR8FromR4(float, double*); - HRESULT VarR8FromCy(CY, double*); - HRESULT VarR8FromDate(DATE, double*); - HRESULT VarR8FromStr(OLECHAR*, LCID, uint, double*); - HRESULT VarR8FromDisp(LPDISPATCH, LCID, double*); - HRESULT VarR8FromBool(VARIANT_BOOL, double*); - HRESULT VarR8FromDec(DECIMAL*, double*); - HRESULT VarDateFromUI1(ubyte, DATE*); - HRESULT VarDateFromI2(short, DATE*); - HRESULT VarDateFromI4(int, DATE*); - HRESULT VarDateFromR4(float, DATE*); - HRESULT VarDateFromR8(double, DATE*); - HRESULT VarDateFromCy(CY, DATE*); - HRESULT VarDateFromStr(OLECHAR*, LCID, uint, DATE*); - HRESULT VarDateFromDisp(LPDISPATCH, LCID, DATE*); - HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); - HRESULT VarCyFromUI1(ubyte, CY*); - HRESULT VarCyFromI2(short, CY*); - HRESULT VarCyFromI4(int, CY*); - HRESULT VarCyFromR4(float, CY*); - HRESULT VarCyFromR8(double, CY*); - HRESULT VarCyFromDate(DATE, CY*); - HRESULT VarCyFromStr(OLECHAR*, LCID, uint, CY*); - HRESULT VarCyFromDisp(LPDISPATCH, LCID, CY*); - HRESULT VarCyFromBool(VARIANT_BOOL, CY*); - HRESULT VarBstrFromUI1(ubyte, LCID, uint, BSTR*); - HRESULT VarBstrFromI2(short, LCID, uint, BSTR*); - HRESULT VarBstrFromI4(int, LCID, uint, BSTR*); - HRESULT VarBstrFromR4(float, LCID, uint, BSTR*); - HRESULT VarBstrFromR8(double, LCID, uint, BSTR*); - HRESULT VarBstrFromCy(CY, LCID, uint, BSTR*); - HRESULT VarBstrFromDate(DATE, LCID, uint, BSTR*); - HRESULT VarBstrFromDisp(LPDISPATCH, LCID, uint, BSTR*); - HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, uint, BSTR*); - HRESULT VarBoolFromUI1(ubyte, VARIANT_BOOL*); - HRESULT VarBoolFromI2(short, VARIANT_BOOL*); - HRESULT VarBoolFromI4(int, VARIANT_BOOL*); - HRESULT VarBoolFromR4(float, VARIANT_BOOL*); - HRESULT VarBoolFromR8(double, VARIANT_BOOL*); - HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); - HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); - HRESULT VarBoolFromStr(OLECHAR*, LCID, uint, VARIANT_BOOL*); - HRESULT VarBoolFromDisp(LPDISPATCH, LCID, VARIANT_BOOL*); - HRESULT VarDecFromR8(double, DECIMAL*); - ULONG LHashValOfNameSysA(SYSKIND, LCID, const(char)*); - ULONG LHashValOfNameSys(SYSKIND, LCID, const(OLECHAR)*); - HRESULT LoadTypeLib(const(OLECHAR)*, LPTYPELIB*); - HRESULT LoadTypeLibEx(LPCOLESTR, REGKIND, LPTYPELIB*); - HRESULT LoadRegTypeLib(REFGUID, WORD, WORD, LCID, LPTYPELIB*); - HRESULT QueryPathOfRegTypeLib(REFGUID, ushort, ushort, LCID, LPBSTR); - HRESULT RegisterTypeLib(LPTYPELIB, OLECHAR*, OLECHAR*); - HRESULT UnRegisterTypeLib(REFGUID, WORD, WORD, LCID, SYSKIND); - // not actually deprecated, but depends on unconverted ICreateTypeLib - deprecated HRESULT CreateTypeLib(SYSKIND, const(OLECHAR)*, LPCREATETYPELIB*); - HRESULT DispGetParam(DISPPARAMS*, UINT, VARTYPE, VARIANT*, UINT*); - HRESULT DispGetIDsOfNames(LPTYPEINFO, OLECHAR**, UINT, DISPID*); - HRESULT DispInvoke(void*, LPTYPEINFO, DISPID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); - HRESULT CreateDispTypeInfo(INTERFACEDATA*, LCID, LPTYPEINFO*); - HRESULT CreateStdDispatch(IUnknown, void*, LPTYPEINFO, IUnknown*); - HRESULT RegisterActiveObject(IUnknown, REFCLSID, DWORD, DWORD*); - HRESULT RevokeActiveObject(DWORD, void*); - HRESULT GetActiveObject(REFCLSID, void*, IUnknown*); - HRESULT SetErrorInfo(uint, LPERRORINFO); - HRESULT GetErrorInfo(uint, LPERRORINFO*); - HRESULT CreateErrorInfo(LPCREATEERRORINFO*); - uint OaBuildVersion(); - HRESULT VectorFromBstr (BSTR, SAFEARRAY**); - HRESULT BstrFromVector (SAFEARRAY*, BSTR*); - HRESULT VarParseNumFromStr(OLECHAR*, LCID, ULONG, NUMPARSE*, BYTE*); - HRESULT VarNumFromParseNum(NUMPARSE*, BYTE*, ULONG, VARIANT*); - - HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); - - HRESULT VarUI1FromI2(SHORT, BYTE*); - HRESULT VarUI1FromI4(LONG, BYTE*); - HRESULT VarUI1FromI8(LONG64, BYTE*); - HRESULT VarUI1FromR4(FLOAT, BYTE*); - HRESULT VarUI1FromR8(DOUBLE, BYTE*); - HRESULT VarUI1FromDate(DATE, BYTE*); - HRESULT VarUI1FromBool(VARIANT_BOOL, BYTE*); - HRESULT VarUI1FromI1(byte, BYTE*); - HRESULT VarUI1FromUI2(USHORT, BYTE*); - HRESULT VarUI1FromUI4(ULONG, BYTE*); - HRESULT VarUI1FromUI8(ULONG64, BYTE*); - HRESULT VarUI1FromStr(OLECHAR*, LCID, ULONG, BYTE*); - HRESULT VarUI1FromCy(CY, BYTE*); - HRESULT VarUI1FromDec(DECIMAL*, BYTE*); - HRESULT VarUI1FromDisp(IDispatch, LCID, BYTE*); - - HRESULT VarI2FromUI1(BYTE, SHORT*); - HRESULT VarI2FromI4(LONG, SHORT*); - HRESULT VarI2FromI8(LONG64, SHORT*); - HRESULT VarI2FromR4(FLOAT, SHORT*); - HRESULT VarI2FromR8(DOUBLE, SHORT*); - HRESULT VarI2FromDate(DATE, SHORT*); - HRESULT VarI2FromBool(VARIANT_BOOL, SHORT*); - HRESULT VarI2FromI1(byte, SHORT*); - HRESULT VarI2FromUI2(USHORT, SHORT*); - HRESULT VarI2FromUI4(ULONG, SHORT*); - HRESULT VarI2FromUI8(ULONG64, SHORT*); - HRESULT VarI2FromStr(OLECHAR*, LCID, ULONG, SHORT*); - HRESULT VarI2FromCy(CY, SHORT*); - HRESULT VarI2FromDec(DECIMAL*, SHORT*); - HRESULT VarI2FromDisp(IDispatch, LCID, SHORT*); - - HRESULT VarI4FromUI1(BYTE, LONG*); - HRESULT VarI4FromI2(SHORT, LONG*); - HRESULT VarI4FromI8(LONG64, LONG*); - HRESULT VarI4FromR4(FLOAT, LONG*); - HRESULT VarI4FromR8(DOUBLE, LONG*); - HRESULT VarI4FromDate(DATE, LONG*); - HRESULT VarI4FromBool(VARIANT_BOOL, LONG*); - HRESULT VarI4FromI1(byte, LONG*); - HRESULT VarI4FromUI2(USHORT, LONG*); - HRESULT VarI4FromUI4(ULONG, LONG*); - HRESULT VarI4FromUI8(ULONG64, LONG*); - HRESULT VarI4FromStr(OLECHAR*, LCID, ULONG, LONG*); - HRESULT VarI4FromCy(CY, LONG*); - HRESULT VarI4FromDec(DECIMAL*, LONG*); - HRESULT VarI4FromDisp(IDispatch, LCID, LONG*); - - HRESULT VarI8FromUI1(BYTE, LONG64*); - HRESULT VarI8FromI2(SHORT, LONG64*); - HRESULT VarI8FromI4(LONG, LONG64*); - HRESULT VarI8FromR4(FLOAT, LONG64*); - HRESULT VarI8FromR8(DOUBLE, LONG64*); - HRESULT VarI8FromDate(DATE, LONG64*); - HRESULT VarI8FromStr(OLECHAR*, LCID, ULONG, LONG64*); - HRESULT VarI8FromBool(VARIANT_BOOL, LONG64*); - HRESULT VarI8FromI1(byte, LONG64*); - HRESULT VarI8FromUI2(USHORT, LONG64*); - HRESULT VarI8FromUI4(ULONG, LONG64*); - HRESULT VarI8FromUI8(ULONG64, LONG64*); - HRESULT VarI8FromDec(DECIMAL* pdecIn, LONG64*); - HRESULT VarI8FromInt(INT intIn, LONG64*); - HRESULT VarI8FromCy(CY, LONG64*); - HRESULT VarI8FromDisp(IDispatch, LCID, LONG64*); - - HRESULT VarR4FromUI1(BYTE, FLOAT*); - HRESULT VarR4FromI2(SHORT, FLOAT*); - HRESULT VarR4FromI4(LONG, FLOAT*); - HRESULT VarR4FromI8(LONG64, FLOAT*); - HRESULT VarR4FromR8(DOUBLE, FLOAT*); - HRESULT VarR4FromDate(DATE, FLOAT*); - HRESULT VarR4FromBool(VARIANT_BOOL, FLOAT*); - HRESULT VarR4FromI1(byte, FLOAT*); - HRESULT VarR4FromUI2(USHORT, FLOAT*); - HRESULT VarR4FromUI4(ULONG, FLOAT*); - HRESULT VarR4FromUI8(ULONG64, FLOAT*); - HRESULT VarR4FromStr(OLECHAR*, LCID, ULONG, FLOAT*); - HRESULT VarR4FromCy(CY, FLOAT*); - HRESULT VarR4FromDec(DECIMAL*, FLOAT*); - HRESULT VarR4FromDisp(IDispatch, LCID, FLOAT*); - - HRESULT VarR8FromUI1(BYTE, double*); - HRESULT VarR8FromI2(SHORT, double*); - HRESULT VarR8FromI4(LONG, double*); - HRESULT VarR8FromI8(LONG64, double*); - HRESULT VarR8FromR4(FLOAT, double*); - HRESULT VarR8FromDate(DATE, double*); - HRESULT VarR8FromBool(VARIANT_BOOL, double*); - HRESULT VarR8FromI1(byte, double*); - HRESULT VarR8FromUI2(USHORT, double*); - HRESULT VarR8FromUI4(ULONG, double*); - HRESULT VarR8FromUI8(ULONG64, double*); - HRESULT VarR8FromStr(OLECHAR*, LCID, ULONG, double*); - HRESULT VarR8FromCy(CY, double*); - HRESULT VarR8FromDec(DECIMAL*, double*); - HRESULT VarR8FromDisp(IDispatch, LCID, double*); - - HRESULT VarDateFromUI1(BYTE, DATE*); - HRESULT VarDateFromI2(SHORT, DATE*); - HRESULT VarDateFromI4(LONG, DATE*); - HRESULT VarDateFromI8(LONG64, DATE*); - HRESULT VarDateFromR4(FLOAT, DATE*); - HRESULT VarDateFromR8(DOUBLE, DATE*); - HRESULT VarDateFromStr(OLECHAR*, LCID, ULONG, DATE*); - HRESULT VarDateFromI1(byte, DATE*); - HRESULT VarDateFromUI2(USHORT, DATE*); - HRESULT VarDateFromUI4(ULONG, DATE*); - HRESULT VarDateFromUI8(ULONG64, DATE*); - HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); - HRESULT VarDateFromCy(CY, DATE*); - HRESULT VarDateFromDec(DECIMAL*, DATE*); - HRESULT VarDateFromDisp(IDispatch, LCID, DATE*); - - HRESULT VarCyFromUI1(BYTE, CY*); - HRESULT VarCyFromI2(SHORT sIn, CY*); - HRESULT VarCyFromI4(LONG, CY*); - HRESULT VarCyFromI8(LONG64, CY*); - HRESULT VarCyFromR4(FLOAT, CY*); - HRESULT VarCyFromR8(DOUBLE, CY*); - HRESULT VarCyFromDate(DATE, CY*); - HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); - HRESULT VarCyFromBool(VARIANT_BOOL, CY*); - HRESULT VarCyFromI1(byte, CY*); - HRESULT VarCyFromUI2(USHORT, CY*); - HRESULT VarCyFromUI4(ULONG, CY*); - HRESULT VarCyFromUI8(ULONG64, CY*); - HRESULT VarCyFromDec(DECIMAL*, CY*); - HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); - HRESULT VarCyFromDisp(IDispatch, LCID, CY*); - - HRESULT VarBstrFromUI1(BYTE, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI2(SHORT, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI4(LONG, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI8(LONG64, LCID, ULONG, BSTR*); - HRESULT VarBstrFromR4(FLOAT, LCID, ULONG, BSTR*); - HRESULT VarBstrFromR8(DOUBLE, LCID, ULONG, BSTR*); - HRESULT VarBstrFromDate(DATE, LCID, ULONG, BSTR*); - HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI1(byte, LCID, ULONG, BSTR*); - HRESULT VarBstrFromUI2(USHORT, LCID, ULONG, BSTR*); - HRESULT VarBstrFromUI8(ULONG64, LCID, ULONG, BSTR*); - HRESULT VarBstrFromUI4(ULONG, LCID, ULONG, BSTR*); - HRESULT VarBstrFromCy(CY, LCID, ULONG, BSTR*); - HRESULT VarBstrFromDec(DECIMAL*, LCID, ULONG, BSTR*); - HRESULT VarBstrFromDisp(IDispatch, LCID, ULONG, BSTR*); - - HRESULT VarBoolFromUI1(BYTE, VARIANT_BOOL*); - HRESULT VarBoolFromI2(SHORT, VARIANT_BOOL*); - HRESULT VarBoolFromI4(LONG, VARIANT_BOOL*); - HRESULT VarBoolFromI8(LONG64, VARIANT_BOOL*); - HRESULT VarBoolFromR4(FLOAT, VARIANT_BOOL*); - HRESULT VarBoolFromR8(DOUBLE, VARIANT_BOOL*); - HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); - HRESULT VarBoolFromStr(OLECHAR*, LCID, ULONG, VARIANT_BOOL*); - HRESULT VarBoolFromI1(byte, VARIANT_BOOL*); - HRESULT VarBoolFromUI2(USHORT, VARIANT_BOOL*); - HRESULT VarBoolFromUI4(ULONG, VARIANT_BOOL*); - HRESULT VarBoolFromUI8(ULONG64, VARIANT_BOOL*); - HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); - HRESULT VarBoolFromDec(DECIMAL*, VARIANT_BOOL*); - HRESULT VarBoolFromDisp(IDispatch, LCID, VARIANT_BOOL*); - - HRESULT VarI1FromUI1(BYTE, byte*); - HRESULT VarI1FromI2(SHORT, byte*); - HRESULT VarI1FromI4(LONG, byte*); - HRESULT VarI1FromI8(LONG64, byte*); - HRESULT VarI1FromR4(FLOAT, byte*); - HRESULT VarI1FromR8(DOUBLE, byte*); - HRESULT VarI1FromDate(DATE, byte*); - HRESULT VarI1FromStr(OLECHAR*, LCID, ULONG, byte*); - HRESULT VarI1FromBool(VARIANT_BOOL, byte*); - HRESULT VarI1FromUI2(USHORT, byte*); - HRESULT VarI1FromUI4(ULONG, byte*); - HRESULT VarI1FromUI8(ULONG64, byte*); - HRESULT VarI1FromCy(CY, byte*); - HRESULT VarI1FromDec(DECIMAL*, byte*); - HRESULT VarI1FromDisp(IDispatch, LCID, byte*); - - HRESULT VarUI2FromUI1(BYTE, USHORT*); - HRESULT VarUI2FromI2(SHORT, USHORT*); - HRESULT VarUI2FromI4(LONG, USHORT*); - HRESULT VarUI2FromI8(LONG64, USHORT*); - HRESULT VarUI2FromR4(FLOAT, USHORT*); - HRESULT VarUI2FromR8(DOUBLE, USHORT*); - HRESULT VarUI2FromDate(DATE, USHORT*); - HRESULT VarUI2FromStr(OLECHAR*, LCID, ULONG, USHORT*); - HRESULT VarUI2FromBool(VARIANT_BOOL, USHORT*); - HRESULT VarUI2FromI1(byte, USHORT*); - HRESULT VarUI2FromUI4(ULONG, USHORT*); - HRESULT VarUI2FromUI8(ULONG64, USHORT*); - HRESULT VarUI2FromCy(CY, USHORT*); - HRESULT VarUI2FromDec(DECIMAL*, USHORT*); - HRESULT VarUI2FromDisp(IDispatch, LCID, USHORT*); - - HRESULT VarUI4FromStr(OLECHAR*, LCID, ULONG, ULONG*); - HRESULT VarUI4FromUI1(BYTE, ULONG*); - HRESULT VarUI4FromI2(SHORT, ULONG*); - HRESULT VarUI4FromI4(LONG, ULONG*); - HRESULT VarUI4FromI8(LONG64, ULONG*); - HRESULT VarUI4FromR4(FLOAT, ULONG*); - HRESULT VarUI4FromR8(DOUBLE, ULONG*); - HRESULT VarUI4FromDate(DATE, ULONG*); - HRESULT VarUI4FromBool(VARIANT_BOOL, ULONG*); - HRESULT VarUI4FromI1(byte, ULONG*); - HRESULT VarUI4FromUI2(USHORT, ULONG*); - HRESULT VarUI4FromUI8(ULONG64, ULONG*); - HRESULT VarUI4FromCy(CY, ULONG*); - HRESULT VarUI4FromDec(DECIMAL*, ULONG*); - HRESULT VarUI4FromDisp(IDispatch, LCID, ULONG*); - - HRESULT VarUI8FromUI1(BYTE, ULONG64*); - HRESULT VarUI8FromI2(SHORT, ULONG64*); - HRESULT VarUI8FromI4(LONG, ULONG64*); - HRESULT VarUI8FromI8(LONG64, ULONG64*); - HRESULT VarUI8FromR4(FLOAT, ULONG64*); - HRESULT VarUI8FromR8(DOUBLE, ULONG64*); - HRESULT VarUI8FromDate(DATE, ULONG64*); - HRESULT VarUI8FromStr(OLECHAR*, LCID, ULONG, ULONG64*); - HRESULT VarUI8FromBool(VARIANT_BOOL, ULONG64*); - HRESULT VarUI8FromI1(byte, ULONG64*); - HRESULT VarUI8FromUI2(USHORT, ULONG64*); - HRESULT VarUI8FromUI4(ULONG, ULONG64*); - HRESULT VarUI8FromDec(DECIMAL*, ULONG64*); - HRESULT VarUI8FromInt(INT, ULONG64*); - HRESULT VarUI8FromCy(CY, ULONG64*); - HRESULT VarUI8FromDisp(IDispatch, LCID, ULONG64*); - - HRESULT VarDecFromUI1(BYTE, DECIMAL*); - HRESULT VarDecFromI2(SHORT, DECIMAL*); - HRESULT VarDecFromI4(LONG, DECIMAL*); - HRESULT VarDecFromI8(LONG64, DECIMAL*); - HRESULT VarDecFromR4(FLOAT, DECIMAL*); - HRESULT VarDecFromR8(DOUBLE, DECIMAL*); - HRESULT VarDecFromDate(DATE, DECIMAL*); - HRESULT VarDecFromStr(OLECHAR*, LCID, ULONG, DECIMAL*); - HRESULT VarDecFromBool(VARIANT_BOOL, DECIMAL*); - HRESULT VarDecFromI1(byte, DECIMAL*); - HRESULT VarDecFromUI2(USHORT, DECIMAL*); - HRESULT VarDecFromUI4(ULONG, DECIMAL*); - HRESULT VarDecFromUI8(ULONG64, DECIMAL*); - HRESULT VarDecFromCy(CY, DECIMAL*); - HRESULT VarDecFromDisp(IDispatch, LCID, DECIMAL*); - - HRESULT VarDecNeg(const(DECIMAL)*, DECIMAL*); - HRESULT VarR4CmpR8(float, double); - HRESULT VarR8Pow(double, double, double*); - HRESULT VarR8Round(double, int, double*); - HRESULT VarDecAbs(const(DECIMAL)*, DECIMAL*); - HRESULT VarDecAdd(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); - HRESULT VarDecCmp(const(DECIMAL)*, const(DECIMAL)*); - HRESULT VarDecCmpR8(const(DECIMAL)*, DOUBLE); - HRESULT VarDecDiv(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); - HRESULT VarDecFix(const(DECIMAL)*, DECIMAL*); - HRESULT VarDecInt(const(DECIMAL)*, DECIMAL*); - HRESULT VarDecMul(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); - HRESULT VarDecRound(const(DECIMAL)*, int, DECIMAL*); - HRESULT VarDecSub(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); - HRESULT VarCyAbs(CY, CY*); - HRESULT VarCyAdd(CY, CY, CY*); - HRESULT VarCyCmp(CY, CY); - HRESULT VarCyCmpR8(CY, DOUBLE); - HRESULT VarCyFix(CY, CY*); - HRESULT VarCyInt(CY, CY*); - HRESULT VarCyMul(CY, CY, CY*); - HRESULT VarCyMulI4(CY, LONG, CY*); - HRESULT VarCyMulI8(CY, LONG64, CY*); - HRESULT VarCyNeg(CY, CY*); - HRESULT VarCyRound(CY, INT, CY*); - HRESULT VarCySub(CY, CY, CY*); - HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarAnd(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarCat(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarEqv(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarIdiv(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarImp(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarMod(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarOr(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarPow(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarXor(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarAbs(LPVARIANT, LPVARIANT); - HRESULT VarFix(LPVARIANT, LPVARIANT); - HRESULT VarInt(LPVARIANT, LPVARIANT); - HRESULT VarNeg(LPVARIANT, LPVARIANT); - HRESULT VarNot(LPVARIANT, LPVARIANT); - HRESULT VarRound(LPVARIANT, int, LPVARIANT); - HRESULT VarCmp(LPVARIANT, LPVARIANT, LCID, ULONG); - HRESULT VarBstrCmp(BSTR, BSTR, LCID, ULONG); - HRESULT VarBstrCat(BSTR, BSTR, BSTR*); + BSTR SysAllocString(const(OLECHAR)*); + int SysReAllocString(BSTR*, const(OLECHAR)*); + BSTR SysAllocStringLen(const(OLECHAR)*, uint); + int SysReAllocStringLen(BSTR*, const(OLECHAR)*, uint); + void SysFreeString(BSTR); + uint SysStringLen(BSTR); + uint SysStringByteLen(BSTR); + BSTR SysAllocStringByteLen(const(char)*, uint); + int DosDateTimeToVariantTime(ushort, ushort, double*); + int VariantTimeToDosDateTime(double, ushort*, ushort*); + int VariantTimeToSystemTime(double, LPSYSTEMTIME); + int SystemTimeToVariantTime(LPSYSTEMTIME, double*); + HRESULT VarDateFromUdate(UDATE*, ULONG, DATE*); + HRESULT VarDateFromUdateEx(UDATE*, LCID, ULONG, DATE*); + HRESULT VarUdateFromDate(DATE, ULONG, UDATE*); + HRESULT SafeArrayAllocDescriptor(uint, SAFEARRAY**); + HRESULT SafeArrayAllocData(SAFEARRAY*); + SAFEARRAY* SafeArrayCreate(VARTYPE, uint, SAFEARRAYBOUND*); + HRESULT SafeArrayDestroyDescriptor(SAFEARRAY*); + HRESULT SafeArrayDestroyData(SAFEARRAY*); + HRESULT SafeArrayDestroy(SAFEARRAY*); + HRESULT SafeArrayRedim(SAFEARRAY*, SAFEARRAYBOUND*); + uint SafeArrayGetDim(SAFEARRAY*); + uint SafeArrayGetElemsize(SAFEARRAY*); + HRESULT SafeArrayGetUBound(SAFEARRAY*, uint, int*); + HRESULT SafeArrayGetLBound(SAFEARRAY*, uint, int*); + HRESULT SafeArrayLock(SAFEARRAY*); + HRESULT SafeArrayUnlock(SAFEARRAY*); + HRESULT SafeArrayAccessData(SAFEARRAY*, void**); + HRESULT SafeArrayUnaccessData(SAFEARRAY*); + HRESULT SafeArrayGetElement(SAFEARRAY*, int*, void*); + HRESULT SafeArrayPutElement(SAFEARRAY*, int*, void*); + HRESULT SafeArrayCopy(SAFEARRAY*, SAFEARRAY**); + HRESULT SafeArrayPtrOfIndex(SAFEARRAY*, int*, void**); + SAFEARRAY* SafeArrayCreateVector(VARTYPE, LONG, ULONG); + SAFEARRAY* SafeArrayCreateVectorEx(VARTYPE, LONG, ULONG, LPVOID); + HRESULT SafeArrayAllocDescriptorEx(VARTYPE, UINT, SAFEARRAY**); + HRESULT SafeArrayGetVartype(SAFEARRAY*, VARTYPE*); + HRESULT SafeArraySetRecordInfo(SAFEARRAY*, IRecordInfo); + HRESULT SafeArrayGetRecordInfo(SAFEARRAY*, IRecordInfo*); + HRESULT SafeArraySetIID(SAFEARRAY*, REFGUID); + HRESULT SafeArrayGetIID(SAFEARRAY*, GUID*); + void VariantInit(VARIANTARG*); + HRESULT VariantClear(VARIANTARG*); + HRESULT VariantCopy(VARIANTARG*, VARIANTARG*); + HRESULT VariantCopyInd(VARIANT*, VARIANTARG*); + HRESULT VariantChangeType(VARIANTARG*, VARIANTARG*, ushort, VARTYPE); + HRESULT VariantChangeTypeEx(VARIANTARG*, VARIANTARG*, LCID, ushort, VARTYPE); + HRESULT VarUI1FromI2(short, ubyte*); + HRESULT VarUI1FromI4(int, ubyte*); + HRESULT VarUI1FromR4(float, ubyte*); + HRESULT VarUI1FromR8(double, ubyte*); + HRESULT VarUI1FromCy(CY, ubyte*); + HRESULT VarUI1FromDate(DATE, ubyte*); + HRESULT VarUI1FromStr(OLECHAR*, LCID, uint, ubyte*); + HRESULT VarUI1FromDisp(LPDISPATCH, LCID, ubyte*); + HRESULT VarUI1FromBool(VARIANT_BOOL, ubyte*); + HRESULT VarI2FromUI1(ubyte, short*); + HRESULT VarI2FromI4(int, short*); + HRESULT VarI2FromR4(float, short*); + HRESULT VarI2FromR8(double, short*); + HRESULT VarI2FromCy(CY cyIn, short*); + HRESULT VarI2FromDate(DATE, short*); + HRESULT VarI2FromStr(OLECHAR*, LCID, uint, short*); + HRESULT VarI2FromDisp(LPDISPATCH, LCID, short*); + HRESULT VarI2FromBool(VARIANT_BOOL, short*); + HRESULT VarI4FromUI1(ubyte, int*); + HRESULT VarI4FromI2(short, int*); + HRESULT VarI4FromR4(float, int*); + HRESULT VarI4FromR8(double, int*); + HRESULT VarI4FromCy(CY, int*); + HRESULT VarI4FromDate(DATE, int*); + HRESULT VarI4FromStr(OLECHAR*, LCID, uint, int*); + HRESULT VarI4FromDisp(LPDISPATCH, LCID, int*); + HRESULT VarI4FromBool(VARIANT_BOOL, int*); + HRESULT VarR4FromUI1(ubyte, float*); + HRESULT VarR4FromI2(short, float*); + HRESULT VarR4FromI4(int, float*); + HRESULT VarR4FromR8(double, float*); + HRESULT VarR4FromCy(CY, float*); + HRESULT VarR4FromDate(DATE, float*); + HRESULT VarR4FromStr(OLECHAR*, LCID, uint, float*); + HRESULT VarR4FromDisp(LPDISPATCH, LCID, float*); + HRESULT VarR4FromBool(VARIANT_BOOL, float*); + HRESULT VarR8FromUI1(ubyte, double*); + HRESULT VarR8FromI2(short, double*); + HRESULT VarR8FromI4(int, double*); + HRESULT VarR8FromR4(float, double*); + HRESULT VarR8FromCy(CY, double*); + HRESULT VarR8FromDate(DATE, double*); + HRESULT VarR8FromStr(OLECHAR*, LCID, uint, double*); + HRESULT VarR8FromDisp(LPDISPATCH, LCID, double*); + HRESULT VarR8FromBool(VARIANT_BOOL, double*); + HRESULT VarR8FromDec(DECIMAL*, double*); + HRESULT VarDateFromUI1(ubyte, DATE*); + HRESULT VarDateFromI2(short, DATE*); + HRESULT VarDateFromI4(int, DATE*); + HRESULT VarDateFromR4(float, DATE*); + HRESULT VarDateFromR8(double, DATE*); + HRESULT VarDateFromCy(CY, DATE*); + HRESULT VarDateFromStr(OLECHAR*, LCID, uint, DATE*); + HRESULT VarDateFromDisp(LPDISPATCH, LCID, DATE*); + HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); + HRESULT VarCyFromUI1(ubyte, CY*); + HRESULT VarCyFromI2(short, CY*); + HRESULT VarCyFromI4(int, CY*); + HRESULT VarCyFromR4(float, CY*); + HRESULT VarCyFromR8(double, CY*); + HRESULT VarCyFromDate(DATE, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, uint, CY*); + HRESULT VarCyFromDisp(LPDISPATCH, LCID, CY*); + HRESULT VarCyFromBool(VARIANT_BOOL, CY*); + HRESULT VarBstrFromUI1(ubyte, LCID, uint, BSTR*); + HRESULT VarBstrFromI2(short, LCID, uint, BSTR*); + HRESULT VarBstrFromI4(int, LCID, uint, BSTR*); + HRESULT VarBstrFromR4(float, LCID, uint, BSTR*); + HRESULT VarBstrFromR8(double, LCID, uint, BSTR*); + HRESULT VarBstrFromCy(CY, LCID, uint, BSTR*); + HRESULT VarBstrFromDate(DATE, LCID, uint, BSTR*); + HRESULT VarBstrFromDisp(LPDISPATCH, LCID, uint, BSTR*); + HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, uint, BSTR*); + HRESULT VarBoolFromUI1(ubyte, VARIANT_BOOL*); + HRESULT VarBoolFromI2(short, VARIANT_BOOL*); + HRESULT VarBoolFromI4(int, VARIANT_BOOL*); + HRESULT VarBoolFromR4(float, VARIANT_BOOL*); + HRESULT VarBoolFromR8(double, VARIANT_BOOL*); + HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); + HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); + HRESULT VarBoolFromStr(OLECHAR*, LCID, uint, VARIANT_BOOL*); + HRESULT VarBoolFromDisp(LPDISPATCH, LCID, VARIANT_BOOL*); + HRESULT VarDecFromR8(double, DECIMAL*); + ULONG LHashValOfNameSysA(SYSKIND, LCID, const(char)*); + ULONG LHashValOfNameSys(SYSKIND, LCID, const(OLECHAR)*); + HRESULT LoadTypeLib(const(OLECHAR)*, LPTYPELIB*); + HRESULT LoadTypeLibEx(LPCOLESTR, REGKIND, LPTYPELIB*); + HRESULT LoadRegTypeLib(REFGUID, WORD, WORD, LCID, LPTYPELIB*); + HRESULT QueryPathOfRegTypeLib(REFGUID, ushort, ushort, LCID, LPBSTR); + HRESULT RegisterTypeLib(LPTYPELIB, OLECHAR*, OLECHAR*); + HRESULT UnRegisterTypeLib(REFGUID, WORD, WORD, LCID, SYSKIND); + // not actually deprecated, but depends on unconverted ICreateTypeLib + deprecated HRESULT CreateTypeLib(SYSKIND, const(OLECHAR)*, LPCREATETYPELIB*); + HRESULT DispGetParam(DISPPARAMS*, UINT, VARTYPE, VARIANT*, UINT*); + HRESULT DispGetIDsOfNames(LPTYPEINFO, OLECHAR**, UINT, DISPID*); + HRESULT DispInvoke(void*, LPTYPEINFO, DISPID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); + HRESULT CreateDispTypeInfo(INTERFACEDATA*, LCID, LPTYPEINFO*); + HRESULT CreateStdDispatch(IUnknown, void*, LPTYPEINFO, IUnknown*); + HRESULT RegisterActiveObject(IUnknown, REFCLSID, DWORD, DWORD*); + HRESULT RevokeActiveObject(DWORD, void*); + HRESULT GetActiveObject(REFCLSID, void*, IUnknown*); + HRESULT SetErrorInfo(uint, LPERRORINFO); + HRESULT GetErrorInfo(uint, LPERRORINFO*); + HRESULT CreateErrorInfo(LPCREATEERRORINFO*); + uint OaBuildVersion(); + HRESULT VectorFromBstr (BSTR, SAFEARRAY**); + HRESULT BstrFromVector (SAFEARRAY*, BSTR*); + HRESULT VarParseNumFromStr(OLECHAR*, LCID, ULONG, NUMPARSE*, BYTE*); + HRESULT VarNumFromParseNum(NUMPARSE*, BYTE*, ULONG, VARIANT*); + + HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); + + HRESULT VarUI1FromI2(SHORT, BYTE*); + HRESULT VarUI1FromI4(LONG, BYTE*); + HRESULT VarUI1FromI8(LONG64, BYTE*); + HRESULT VarUI1FromR4(FLOAT, BYTE*); + HRESULT VarUI1FromR8(DOUBLE, BYTE*); + HRESULT VarUI1FromDate(DATE, BYTE*); + HRESULT VarUI1FromBool(VARIANT_BOOL, BYTE*); + HRESULT VarUI1FromI1(byte, BYTE*); + HRESULT VarUI1FromUI2(USHORT, BYTE*); + HRESULT VarUI1FromUI4(ULONG, BYTE*); + HRESULT VarUI1FromUI8(ULONG64, BYTE*); + HRESULT VarUI1FromStr(OLECHAR*, LCID, ULONG, BYTE*); + HRESULT VarUI1FromCy(CY, BYTE*); + HRESULT VarUI1FromDec(DECIMAL*, BYTE*); + HRESULT VarUI1FromDisp(IDispatch, LCID, BYTE*); + + HRESULT VarI2FromUI1(BYTE, SHORT*); + HRESULT VarI2FromI4(LONG, SHORT*); + HRESULT VarI2FromI8(LONG64, SHORT*); + HRESULT VarI2FromR4(FLOAT, SHORT*); + HRESULT VarI2FromR8(DOUBLE, SHORT*); + HRESULT VarI2FromDate(DATE, SHORT*); + HRESULT VarI2FromBool(VARIANT_BOOL, SHORT*); + HRESULT VarI2FromI1(byte, SHORT*); + HRESULT VarI2FromUI2(USHORT, SHORT*); + HRESULT VarI2FromUI4(ULONG, SHORT*); + HRESULT VarI2FromUI8(ULONG64, SHORT*); + HRESULT VarI2FromStr(OLECHAR*, LCID, ULONG, SHORT*); + HRESULT VarI2FromCy(CY, SHORT*); + HRESULT VarI2FromDec(DECIMAL*, SHORT*); + HRESULT VarI2FromDisp(IDispatch, LCID, SHORT*); + + HRESULT VarI4FromUI1(BYTE, LONG*); + HRESULT VarI4FromI2(SHORT, LONG*); + HRESULT VarI4FromI8(LONG64, LONG*); + HRESULT VarI4FromR4(FLOAT, LONG*); + HRESULT VarI4FromR8(DOUBLE, LONG*); + HRESULT VarI4FromDate(DATE, LONG*); + HRESULT VarI4FromBool(VARIANT_BOOL, LONG*); + HRESULT VarI4FromI1(byte, LONG*); + HRESULT VarI4FromUI2(USHORT, LONG*); + HRESULT VarI4FromUI4(ULONG, LONG*); + HRESULT VarI4FromUI8(ULONG64, LONG*); + HRESULT VarI4FromStr(OLECHAR*, LCID, ULONG, LONG*); + HRESULT VarI4FromCy(CY, LONG*); + HRESULT VarI4FromDec(DECIMAL*, LONG*); + HRESULT VarI4FromDisp(IDispatch, LCID, LONG*); + + HRESULT VarI8FromUI1(BYTE, LONG64*); + HRESULT VarI8FromI2(SHORT, LONG64*); + HRESULT VarI8FromI4(LONG, LONG64*); + HRESULT VarI8FromR4(FLOAT, LONG64*); + HRESULT VarI8FromR8(DOUBLE, LONG64*); + HRESULT VarI8FromDate(DATE, LONG64*); + HRESULT VarI8FromStr(OLECHAR*, LCID, ULONG, LONG64*); + HRESULT VarI8FromBool(VARIANT_BOOL, LONG64*); + HRESULT VarI8FromI1(byte, LONG64*); + HRESULT VarI8FromUI2(USHORT, LONG64*); + HRESULT VarI8FromUI4(ULONG, LONG64*); + HRESULT VarI8FromUI8(ULONG64, LONG64*); + HRESULT VarI8FromDec(DECIMAL* pdecIn, LONG64*); + HRESULT VarI8FromInt(INT intIn, LONG64*); + HRESULT VarI8FromCy(CY, LONG64*); + HRESULT VarI8FromDisp(IDispatch, LCID, LONG64*); + + HRESULT VarR4FromUI1(BYTE, FLOAT*); + HRESULT VarR4FromI2(SHORT, FLOAT*); + HRESULT VarR4FromI4(LONG, FLOAT*); + HRESULT VarR4FromI8(LONG64, FLOAT*); + HRESULT VarR4FromR8(DOUBLE, FLOAT*); + HRESULT VarR4FromDate(DATE, FLOAT*); + HRESULT VarR4FromBool(VARIANT_BOOL, FLOAT*); + HRESULT VarR4FromI1(byte, FLOAT*); + HRESULT VarR4FromUI2(USHORT, FLOAT*); + HRESULT VarR4FromUI4(ULONG, FLOAT*); + HRESULT VarR4FromUI8(ULONG64, FLOAT*); + HRESULT VarR4FromStr(OLECHAR*, LCID, ULONG, FLOAT*); + HRESULT VarR4FromCy(CY, FLOAT*); + HRESULT VarR4FromDec(DECIMAL*, FLOAT*); + HRESULT VarR4FromDisp(IDispatch, LCID, FLOAT*); + + HRESULT VarR8FromUI1(BYTE, double*); + HRESULT VarR8FromI2(SHORT, double*); + HRESULT VarR8FromI4(LONG, double*); + HRESULT VarR8FromI8(LONG64, double*); + HRESULT VarR8FromR4(FLOAT, double*); + HRESULT VarR8FromDate(DATE, double*); + HRESULT VarR8FromBool(VARIANT_BOOL, double*); + HRESULT VarR8FromI1(byte, double*); + HRESULT VarR8FromUI2(USHORT, double*); + HRESULT VarR8FromUI4(ULONG, double*); + HRESULT VarR8FromUI8(ULONG64, double*); + HRESULT VarR8FromStr(OLECHAR*, LCID, ULONG, double*); + HRESULT VarR8FromCy(CY, double*); + HRESULT VarR8FromDec(DECIMAL*, double*); + HRESULT VarR8FromDisp(IDispatch, LCID, double*); + + HRESULT VarDateFromUI1(BYTE, DATE*); + HRESULT VarDateFromI2(SHORT, DATE*); + HRESULT VarDateFromI4(LONG, DATE*); + HRESULT VarDateFromI8(LONG64, DATE*); + HRESULT VarDateFromR4(FLOAT, DATE*); + HRESULT VarDateFromR8(DOUBLE, DATE*); + HRESULT VarDateFromStr(OLECHAR*, LCID, ULONG, DATE*); + HRESULT VarDateFromI1(byte, DATE*); + HRESULT VarDateFromUI2(USHORT, DATE*); + HRESULT VarDateFromUI4(ULONG, DATE*); + HRESULT VarDateFromUI8(ULONG64, DATE*); + HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); + HRESULT VarDateFromCy(CY, DATE*); + HRESULT VarDateFromDec(DECIMAL*, DATE*); + HRESULT VarDateFromDisp(IDispatch, LCID, DATE*); + + HRESULT VarCyFromUI1(BYTE, CY*); + HRESULT VarCyFromI2(SHORT sIn, CY*); + HRESULT VarCyFromI4(LONG, CY*); + HRESULT VarCyFromI8(LONG64, CY*); + HRESULT VarCyFromR4(FLOAT, CY*); + HRESULT VarCyFromR8(DOUBLE, CY*); + HRESULT VarCyFromDate(DATE, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); + HRESULT VarCyFromBool(VARIANT_BOOL, CY*); + HRESULT VarCyFromI1(byte, CY*); + HRESULT VarCyFromUI2(USHORT, CY*); + HRESULT VarCyFromUI4(ULONG, CY*); + HRESULT VarCyFromUI8(ULONG64, CY*); + HRESULT VarCyFromDec(DECIMAL*, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); + HRESULT VarCyFromDisp(IDispatch, LCID, CY*); + + HRESULT VarBstrFromUI1(BYTE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI2(SHORT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI4(LONG, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI8(LONG64, LCID, ULONG, BSTR*); + HRESULT VarBstrFromR4(FLOAT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromR8(DOUBLE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDate(DATE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI1(byte, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI2(USHORT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI8(ULONG64, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI4(ULONG, LCID, ULONG, BSTR*); + HRESULT VarBstrFromCy(CY, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDec(DECIMAL*, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDisp(IDispatch, LCID, ULONG, BSTR*); + + HRESULT VarBoolFromUI1(BYTE, VARIANT_BOOL*); + HRESULT VarBoolFromI2(SHORT, VARIANT_BOOL*); + HRESULT VarBoolFromI4(LONG, VARIANT_BOOL*); + HRESULT VarBoolFromI8(LONG64, VARIANT_BOOL*); + HRESULT VarBoolFromR4(FLOAT, VARIANT_BOOL*); + HRESULT VarBoolFromR8(DOUBLE, VARIANT_BOOL*); + HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); + HRESULT VarBoolFromStr(OLECHAR*, LCID, ULONG, VARIANT_BOOL*); + HRESULT VarBoolFromI1(byte, VARIANT_BOOL*); + HRESULT VarBoolFromUI2(USHORT, VARIANT_BOOL*); + HRESULT VarBoolFromUI4(ULONG, VARIANT_BOOL*); + HRESULT VarBoolFromUI8(ULONG64, VARIANT_BOOL*); + HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); + HRESULT VarBoolFromDec(DECIMAL*, VARIANT_BOOL*); + HRESULT VarBoolFromDisp(IDispatch, LCID, VARIANT_BOOL*); + + HRESULT VarI1FromUI1(BYTE, byte*); + HRESULT VarI1FromI2(SHORT, byte*); + HRESULT VarI1FromI4(LONG, byte*); + HRESULT VarI1FromI8(LONG64, byte*); + HRESULT VarI1FromR4(FLOAT, byte*); + HRESULT VarI1FromR8(DOUBLE, byte*); + HRESULT VarI1FromDate(DATE, byte*); + HRESULT VarI1FromStr(OLECHAR*, LCID, ULONG, byte*); + HRESULT VarI1FromBool(VARIANT_BOOL, byte*); + HRESULT VarI1FromUI2(USHORT, byte*); + HRESULT VarI1FromUI4(ULONG, byte*); + HRESULT VarI1FromUI8(ULONG64, byte*); + HRESULT VarI1FromCy(CY, byte*); + HRESULT VarI1FromDec(DECIMAL*, byte*); + HRESULT VarI1FromDisp(IDispatch, LCID, byte*); + + HRESULT VarUI2FromUI1(BYTE, USHORT*); + HRESULT VarUI2FromI2(SHORT, USHORT*); + HRESULT VarUI2FromI4(LONG, USHORT*); + HRESULT VarUI2FromI8(LONG64, USHORT*); + HRESULT VarUI2FromR4(FLOAT, USHORT*); + HRESULT VarUI2FromR8(DOUBLE, USHORT*); + HRESULT VarUI2FromDate(DATE, USHORT*); + HRESULT VarUI2FromStr(OLECHAR*, LCID, ULONG, USHORT*); + HRESULT VarUI2FromBool(VARIANT_BOOL, USHORT*); + HRESULT VarUI2FromI1(byte, USHORT*); + HRESULT VarUI2FromUI4(ULONG, USHORT*); + HRESULT VarUI2FromUI8(ULONG64, USHORT*); + HRESULT VarUI2FromCy(CY, USHORT*); + HRESULT VarUI2FromDec(DECIMAL*, USHORT*); + HRESULT VarUI2FromDisp(IDispatch, LCID, USHORT*); + + HRESULT VarUI4FromStr(OLECHAR*, LCID, ULONG, ULONG*); + HRESULT VarUI4FromUI1(BYTE, ULONG*); + HRESULT VarUI4FromI2(SHORT, ULONG*); + HRESULT VarUI4FromI4(LONG, ULONG*); + HRESULT VarUI4FromI8(LONG64, ULONG*); + HRESULT VarUI4FromR4(FLOAT, ULONG*); + HRESULT VarUI4FromR8(DOUBLE, ULONG*); + HRESULT VarUI4FromDate(DATE, ULONG*); + HRESULT VarUI4FromBool(VARIANT_BOOL, ULONG*); + HRESULT VarUI4FromI1(byte, ULONG*); + HRESULT VarUI4FromUI2(USHORT, ULONG*); + HRESULT VarUI4FromUI8(ULONG64, ULONG*); + HRESULT VarUI4FromCy(CY, ULONG*); + HRESULT VarUI4FromDec(DECIMAL*, ULONG*); + HRESULT VarUI4FromDisp(IDispatch, LCID, ULONG*); + + HRESULT VarUI8FromUI1(BYTE, ULONG64*); + HRESULT VarUI8FromI2(SHORT, ULONG64*); + HRESULT VarUI8FromI4(LONG, ULONG64*); + HRESULT VarUI8FromI8(LONG64, ULONG64*); + HRESULT VarUI8FromR4(FLOAT, ULONG64*); + HRESULT VarUI8FromR8(DOUBLE, ULONG64*); + HRESULT VarUI8FromDate(DATE, ULONG64*); + HRESULT VarUI8FromStr(OLECHAR*, LCID, ULONG, ULONG64*); + HRESULT VarUI8FromBool(VARIANT_BOOL, ULONG64*); + HRESULT VarUI8FromI1(byte, ULONG64*); + HRESULT VarUI8FromUI2(USHORT, ULONG64*); + HRESULT VarUI8FromUI4(ULONG, ULONG64*); + HRESULT VarUI8FromDec(DECIMAL*, ULONG64*); + HRESULT VarUI8FromInt(INT, ULONG64*); + HRESULT VarUI8FromCy(CY, ULONG64*); + HRESULT VarUI8FromDisp(IDispatch, LCID, ULONG64*); + + HRESULT VarDecFromUI1(BYTE, DECIMAL*); + HRESULT VarDecFromI2(SHORT, DECIMAL*); + HRESULT VarDecFromI4(LONG, DECIMAL*); + HRESULT VarDecFromI8(LONG64, DECIMAL*); + HRESULT VarDecFromR4(FLOAT, DECIMAL*); + HRESULT VarDecFromR8(DOUBLE, DECIMAL*); + HRESULT VarDecFromDate(DATE, DECIMAL*); + HRESULT VarDecFromStr(OLECHAR*, LCID, ULONG, DECIMAL*); + HRESULT VarDecFromBool(VARIANT_BOOL, DECIMAL*); + HRESULT VarDecFromI1(byte, DECIMAL*); + HRESULT VarDecFromUI2(USHORT, DECIMAL*); + HRESULT VarDecFromUI4(ULONG, DECIMAL*); + HRESULT VarDecFromUI8(ULONG64, DECIMAL*); + HRESULT VarDecFromCy(CY, DECIMAL*); + HRESULT VarDecFromDisp(IDispatch, LCID, DECIMAL*); + + HRESULT VarDecNeg(const(DECIMAL)*, DECIMAL*); + HRESULT VarR4CmpR8(float, double); + HRESULT VarR8Pow(double, double, double*); + HRESULT VarR8Round(double, int, double*); + HRESULT VarDecAbs(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecAdd(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecCmp(const(DECIMAL)*, const(DECIMAL)*); + HRESULT VarDecCmpR8(const(DECIMAL)*, DOUBLE); + HRESULT VarDecDiv(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecFix(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecInt(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecMul(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecRound(const(DECIMAL)*, int, DECIMAL*); + HRESULT VarDecSub(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarCyAbs(CY, CY*); + HRESULT VarCyAdd(CY, CY, CY*); + HRESULT VarCyCmp(CY, CY); + HRESULT VarCyCmpR8(CY, DOUBLE); + HRESULT VarCyFix(CY, CY*); + HRESULT VarCyInt(CY, CY*); + HRESULT VarCyMul(CY, CY, CY*); + HRESULT VarCyMulI4(CY, LONG, CY*); + HRESULT VarCyMulI8(CY, LONG64, CY*); + HRESULT VarCyNeg(CY, CY*); + HRESULT VarCyRound(CY, INT, CY*); + HRESULT VarCySub(CY, CY, CY*); + HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarAnd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarCat(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarEqv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarIdiv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarImp(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMod(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarOr(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarPow(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarXor(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarAbs(LPVARIANT, LPVARIANT); + HRESULT VarFix(LPVARIANT, LPVARIANT); + HRESULT VarInt(LPVARIANT, LPVARIANT); + HRESULT VarNeg(LPVARIANT, LPVARIANT); + HRESULT VarNot(LPVARIANT, LPVARIANT); + HRESULT VarRound(LPVARIANT, int, LPVARIANT); + HRESULT VarCmp(LPVARIANT, LPVARIANT, LCID, ULONG); + HRESULT VarBstrCmp(BSTR, BSTR, LCID, ULONG); + HRESULT VarBstrCat(BSTR, BSTR, BSTR*); } diff --git a/src/core/sys/windows/olectl.d b/src/core/sys/windows/olectl.d index f964dda84d..c148921627 100644 --- a/src/core/sys/windows/olectl.d +++ b/src/core/sys/windows/olectl.d @@ -20,119 +20,119 @@ private import core.sys.windows.winerror; // for SCODE private { - // These replace C macros. - template ITF_ERROR_SCODE_FOR_D(int c) - { - const SCODE ITF_ERROR_SCODE_FOR_D - = (SEVERITY_ERROR << 31) | (FACILITY_ITF << 16) | c; - } - - template ITF_SUCCESS_SCODE_FOR_D(int c) - { - const SCODE ITF_SUCCESS_SCODE_FOR_D - = (SEVERITY_SUCCESS << 31) | (FACILITY_ITF << 16) | c; - } - - template STD_CTL_SCODE(int c) - { - const SCODE STD_CTL_SCODE - = (SEVERITY_ERROR << 31) | (FACILITY_CONTROL << 16) | c; - } + // These replace C macros. + template ITF_ERROR_SCODE_FOR_D(int c) + { + const SCODE ITF_ERROR_SCODE_FOR_D + = (SEVERITY_ERROR << 31) | (FACILITY_ITF << 16) | c; + } + + template ITF_SUCCESS_SCODE_FOR_D(int c) + { + const SCODE ITF_SUCCESS_SCODE_FOR_D + = (SEVERITY_SUCCESS << 31) | (FACILITY_ITF << 16) | c; + } + + template STD_CTL_SCODE(int c) + { + const SCODE STD_CTL_SCODE + = (SEVERITY_ERROR << 31) | (FACILITY_CONTROL << 16) | c; + } } enum : SCODE { - CTL_E_ILLEGALFUNCTIONCALL = STD_CTL_SCODE!(5), - CTL_E_OVERFLOW = STD_CTL_SCODE!(6), - CTL_E_OUTOFMEMORY = STD_CTL_SCODE!(7), - CTL_E_DIVISIONBYZERO = STD_CTL_SCODE!(11), - CTL_E_OUTOFSTRINGSPACE = STD_CTL_SCODE!(14), - CTL_E_OUTOFSTACKSPACE = STD_CTL_SCODE!(28), - CTL_E_BADFILENAMEORNUMBER = STD_CTL_SCODE!(52), - CTL_E_FILENOTFOUND = STD_CTL_SCODE!(53), - CTL_E_BADFILEMODE = STD_CTL_SCODE!(54), - CTL_E_FILEALREADYOPEN = STD_CTL_SCODE!(55), - CTL_E_DEVICEIOERROR = STD_CTL_SCODE!(57), - CTL_E_FILEALREADYEXISTS = STD_CTL_SCODE!(58), - CTL_E_BADRECORDLENGTH = STD_CTL_SCODE!(59), - CTL_E_DISKFULL = STD_CTL_SCODE!(61), - CTL_E_BADRECORDNUMBER = STD_CTL_SCODE!(63), - CTL_E_BADFILENAME = STD_CTL_SCODE!(64), - CTL_E_TOOMANYFILES = STD_CTL_SCODE!(67), - CTL_E_DEVICEUNAVAILABLE = STD_CTL_SCODE!(68), - CTL_E_PERMISSIONDENIED = STD_CTL_SCODE!(70), - CTL_E_DISKNOTREADY = STD_CTL_SCODE!(71), - CTL_E_PATHFILEACCESSERROR = STD_CTL_SCODE!(75), - CTL_E_PATHNOTFOUND = STD_CTL_SCODE!(76), - CTL_E_INVALIDPATTERNSTRING = STD_CTL_SCODE!(93), - CTL_E_INVALIDUSEOFNULL = STD_CTL_SCODE!(94), - CTL_E_INVALIDFILEFORMAT = STD_CTL_SCODE!(321), - CTL_E_INVALIDPROPERTYVALUE = STD_CTL_SCODE!(380), - CTL_E_INVALIDPROPERTYARRAYINDEX = STD_CTL_SCODE!(381), - CTL_E_SETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(382), - CTL_E_SETNOTSUPPORTED = STD_CTL_SCODE!(383), - CTL_E_NEEDPROPERTYARRAYINDEX = STD_CTL_SCODE!(385), - CTL_E_SETNOTPERMITTED = STD_CTL_SCODE!(387), - CTL_E_GETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(393), - CTL_E_GETNOTSUPPORTED = STD_CTL_SCODE!(394), - CTL_E_PROPERTYNOTFOUND = STD_CTL_SCODE!(422), - CTL_E_INVALIDCLIPBOARDFORMAT = STD_CTL_SCODE!(460), - CTL_E_INVALIDPICTURE = STD_CTL_SCODE!(481), - CTL_E_PRINTERERROR = STD_CTL_SCODE!(482), - CTL_E_CANTSAVEFILETOTEMP = STD_CTL_SCODE!(735), - CTL_E_SEARCHTEXTNOTFOUND = STD_CTL_SCODE!(744), - CTL_E_REPLACEMENTSTOOLONG = STD_CTL_SCODE!(746), - CTL_E_CUSTOM_FIRST = STD_CTL_SCODE!(600) + CTL_E_ILLEGALFUNCTIONCALL = STD_CTL_SCODE!(5), + CTL_E_OVERFLOW = STD_CTL_SCODE!(6), + CTL_E_OUTOFMEMORY = STD_CTL_SCODE!(7), + CTL_E_DIVISIONBYZERO = STD_CTL_SCODE!(11), + CTL_E_OUTOFSTRINGSPACE = STD_CTL_SCODE!(14), + CTL_E_OUTOFSTACKSPACE = STD_CTL_SCODE!(28), + CTL_E_BADFILENAMEORNUMBER = STD_CTL_SCODE!(52), + CTL_E_FILENOTFOUND = STD_CTL_SCODE!(53), + CTL_E_BADFILEMODE = STD_CTL_SCODE!(54), + CTL_E_FILEALREADYOPEN = STD_CTL_SCODE!(55), + CTL_E_DEVICEIOERROR = STD_CTL_SCODE!(57), + CTL_E_FILEALREADYEXISTS = STD_CTL_SCODE!(58), + CTL_E_BADRECORDLENGTH = STD_CTL_SCODE!(59), + CTL_E_DISKFULL = STD_CTL_SCODE!(61), + CTL_E_BADRECORDNUMBER = STD_CTL_SCODE!(63), + CTL_E_BADFILENAME = STD_CTL_SCODE!(64), + CTL_E_TOOMANYFILES = STD_CTL_SCODE!(67), + CTL_E_DEVICEUNAVAILABLE = STD_CTL_SCODE!(68), + CTL_E_PERMISSIONDENIED = STD_CTL_SCODE!(70), + CTL_E_DISKNOTREADY = STD_CTL_SCODE!(71), + CTL_E_PATHFILEACCESSERROR = STD_CTL_SCODE!(75), + CTL_E_PATHNOTFOUND = STD_CTL_SCODE!(76), + CTL_E_INVALIDPATTERNSTRING = STD_CTL_SCODE!(93), + CTL_E_INVALIDUSEOFNULL = STD_CTL_SCODE!(94), + CTL_E_INVALIDFILEFORMAT = STD_CTL_SCODE!(321), + CTL_E_INVALIDPROPERTYVALUE = STD_CTL_SCODE!(380), + CTL_E_INVALIDPROPERTYARRAYINDEX = STD_CTL_SCODE!(381), + CTL_E_SETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(382), + CTL_E_SETNOTSUPPORTED = STD_CTL_SCODE!(383), + CTL_E_NEEDPROPERTYARRAYINDEX = STD_CTL_SCODE!(385), + CTL_E_SETNOTPERMITTED = STD_CTL_SCODE!(387), + CTL_E_GETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(393), + CTL_E_GETNOTSUPPORTED = STD_CTL_SCODE!(394), + CTL_E_PROPERTYNOTFOUND = STD_CTL_SCODE!(422), + CTL_E_INVALIDCLIPBOARDFORMAT = STD_CTL_SCODE!(460), + CTL_E_INVALIDPICTURE = STD_CTL_SCODE!(481), + CTL_E_PRINTERERROR = STD_CTL_SCODE!(482), + CTL_E_CANTSAVEFILETOTEMP = STD_CTL_SCODE!(735), + CTL_E_SEARCHTEXTNOTFOUND = STD_CTL_SCODE!(744), + CTL_E_REPLACEMENTSTOOLONG = STD_CTL_SCODE!(746), + CTL_E_CUSTOM_FIRST = STD_CTL_SCODE!(600) } const SCODE CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST+2; enum : SCODE { - CONNECT_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), - CONNECT_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), - CONNECT_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), - CONNECT_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), - CONNECT_E_NOCONNECTION = CONNECT_E_FIRST + 0, - CONNECT_E_ADVISELIMIT = CONNECT_E_FIRST + 1, - CONNECT_E_CANNOTCONNECT = CONNECT_E_FIRST + 2, - CONNECT_E_OVERRIDDEN = CONNECT_E_FIRST + 3, - - SELFREG_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), - SELFREG_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), - SELFREG_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), - SELFREG_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), - SELFREG_E_TYPELIB = SELFREG_E_FIRST + 0, - SELFREG_E_CLASS = SELFREG_E_FIRST + 1, - - PERPROP_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), - PERPROP_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), - PERPROP_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), - PERPROP_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), - PERPROP_E_NOPAGEAVAILABLE = PERPROP_E_FIRST + CONNECT_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + CONNECT_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + CONNECT_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + CONNECT_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + CONNECT_E_NOCONNECTION = CONNECT_E_FIRST + 0, + CONNECT_E_ADVISELIMIT = CONNECT_E_FIRST + 1, + CONNECT_E_CANNOTCONNECT = CONNECT_E_FIRST + 2, + CONNECT_E_OVERRIDDEN = CONNECT_E_FIRST + 3, + + SELFREG_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + SELFREG_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + SELFREG_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + SELFREG_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + SELFREG_E_TYPELIB = SELFREG_E_FIRST + 0, + SELFREG_E_CLASS = SELFREG_E_FIRST + 1, + + PERPROP_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + PERPROP_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + PERPROP_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + PERPROP_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + PERPROP_E_NOPAGEAVAILABLE = PERPROP_E_FIRST } enum { - OLEMISC_RECOMPOSEONRESIZE = 0x1, - OLEMISC_ONLYICONIC = 0x2, - OLEMISC_INSERTNOTREPLACE = 0x4, - OLEMISC_STATIC = 0x8, - OLEMISC_CANTLINKINSIDE = 0x10, - OLEMISC_CANLINKBYOLE1 = 0x20, - OLEMISC_ISLINKOBJECT = 0x40, - OLEMISC_INSIDEOUT = 0x80, - OLEMISC_ACTIVATEWHENVISIBLE = 0x100, - OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200, - OLEMISC_INVISIBLEATRUNTIME = 0x400, - OLEMISC_ALWAYSRUN = 0x800, - OLEMISC_ACTSLIKEBUTTON = 0x1000, - OLEMISC_ACTSLIKELABEL = 0x2000, - OLEMISC_NOUIACTIVATE = 0x4000, - OLEMISC_ALIGNABLE = 0x8000, - OLEMISC_SIMPLEFRAME = 0x10000, - OLEMISC_SETCLIENTSITEFIRST = 0x20000, - OLEMISC_IMEMODE = 0x40000, - OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000, - OLEMISC_WANTSTOMENUMERGE = 0x100000, - OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 + OLEMISC_RECOMPOSEONRESIZE = 0x1, + OLEMISC_ONLYICONIC = 0x2, + OLEMISC_INSERTNOTREPLACE = 0x4, + OLEMISC_STATIC = 0x8, + OLEMISC_CANTLINKINSIDE = 0x10, + OLEMISC_CANLINKBYOLE1 = 0x20, + OLEMISC_ISLINKOBJECT = 0x40, + OLEMISC_INSIDEOUT = 0x80, + OLEMISC_ACTIVATEWHENVISIBLE = 0x100, + OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200, + OLEMISC_INVISIBLEATRUNTIME = 0x400, + OLEMISC_ALWAYSRUN = 0x800, + OLEMISC_ACTSLIKEBUTTON = 0x1000, + OLEMISC_ACTSLIKELABEL = 0x2000, + OLEMISC_NOUIACTIVATE = 0x4000, + OLEMISC_ALIGNABLE = 0x8000, + OLEMISC_SIMPLEFRAME = 0x10000, + OLEMISC_SETCLIENTSITEFIRST = 0x20000, + OLEMISC_IMEMODE = 0x40000, + OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000, + OLEMISC_WANTSTOMENUMERGE = 0x100000, + OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 } const OLEIVERB_PROPERTIES = -7; @@ -156,138 +156,138 @@ const VT_PICTURE = VARENUM.VT_DISPATCH; const VT_HANDLE = VARENUM.VT_I4; enum { - OCM__BASE = WM_USER + 0x1c00, - OCM_COMMAND = OCM__BASE + WM_COMMAND, - OCM_CTLCOLORBTN = OCM__BASE + WM_CTLCOLORBTN, - OCM_CTLCOLOREDIT = OCM__BASE + WM_CTLCOLOREDIT, - OCM_CTLCOLORDLG = OCM__BASE + WM_CTLCOLORDLG, - OCM_CTLCOLORLISTBOX = OCM__BASE + WM_CTLCOLORLISTBOX, - OCM_CTLCOLORMSGBOX = OCM__BASE + WM_CTLCOLORMSGBOX, - OCM_CTLCOLORSCROLLBAR = OCM__BASE + WM_CTLCOLORSCROLLBAR, - OCM_CTLCOLORSTATIC = OCM__BASE + WM_CTLCOLORSTATIC, - OCM_DRAWITEM = OCM__BASE + WM_DRAWITEM, - OCM_MEASUREITEM = OCM__BASE + WM_MEASUREITEM, - OCM_DELETEITEM = OCM__BASE + WM_DELETEITEM, - OCM_VKEYTOITEM = OCM__BASE + WM_VKEYTOITEM, - OCM_CHARTOITEM = OCM__BASE + WM_CHARTOITEM, - OCM_COMPAREITEM = OCM__BASE + WM_COMPAREITEM, - OCM_HSCROLL = OCM__BASE + WM_HSCROLL, - OCM_VSCROLL = OCM__BASE + WM_VSCROLL, - OCM_PARENTNOTIFY = OCM__BASE + WM_PARENTNOTIFY, - OCM_NOTIFY = OCM__BASE + WM_NOTIFY + OCM__BASE = WM_USER + 0x1c00, + OCM_COMMAND = OCM__BASE + WM_COMMAND, + OCM_CTLCOLORBTN = OCM__BASE + WM_CTLCOLORBTN, + OCM_CTLCOLOREDIT = OCM__BASE + WM_CTLCOLOREDIT, + OCM_CTLCOLORDLG = OCM__BASE + WM_CTLCOLORDLG, + OCM_CTLCOLORLISTBOX = OCM__BASE + WM_CTLCOLORLISTBOX, + OCM_CTLCOLORMSGBOX = OCM__BASE + WM_CTLCOLORMSGBOX, + OCM_CTLCOLORSCROLLBAR = OCM__BASE + WM_CTLCOLORSCROLLBAR, + OCM_CTLCOLORSTATIC = OCM__BASE + WM_CTLCOLORSTATIC, + OCM_DRAWITEM = OCM__BASE + WM_DRAWITEM, + OCM_MEASUREITEM = OCM__BASE + WM_MEASUREITEM, + OCM_DELETEITEM = OCM__BASE + WM_DELETEITEM, + OCM_VKEYTOITEM = OCM__BASE + WM_VKEYTOITEM, + OCM_CHARTOITEM = OCM__BASE + WM_CHARTOITEM, + OCM_COMPAREITEM = OCM__BASE + WM_COMPAREITEM, + OCM_HSCROLL = OCM__BASE + WM_HSCROLL, + OCM_VSCROLL = OCM__BASE + WM_VSCROLL, + OCM_PARENTNOTIFY = OCM__BASE + WM_PARENTNOTIFY, + OCM_NOTIFY = OCM__BASE + WM_NOTIFY } enum { - CTRLINFO_EATS_RETURN = 1, - CTRLINFO_EATS_ESCAPE + CTRLINFO_EATS_RETURN = 1, + CTRLINFO_EATS_ESCAPE } enum { - XFORMCOORDS_POSITION = 1, - XFORMCOORDS_SIZE = 2, - XFORMCOORDS_HIMETRICTOCONTAINER = 4, - XFORMCOORDS_CONTAINERTOHIMETRIC = 8 + XFORMCOORDS_POSITION = 1, + XFORMCOORDS_SIZE = 2, + XFORMCOORDS_HIMETRICTOCONTAINER = 4, + XFORMCOORDS_CONTAINERTOHIMETRIC = 8 } const GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1; enum { - PROPPAGESTATUS_DIRTY = 1, - PROPPAGESTATUS_VALIDATE = 2 + PROPPAGESTATUS_DIRTY = 1, + PROPPAGESTATUS_VALIDATE = 2 } enum { - PICTURE_SCALABLE = 1, - PICTURE_TRANSPARENT = 2 + PICTURE_SCALABLE = 1, + PICTURE_TRANSPARENT = 2 } enum { - PICTYPE_UNINITIALIZED = -1, - PICTYPE_NONE, // = 0 - PICTYPE_BITMAP, - PICTYPE_METAFILE, - PICTYPE_ICON, - PICTYPE_ENHMETAFILE // = 4 + PICTYPE_UNINITIALIZED = -1, + PICTYPE_NONE, // = 0 + PICTYPE_BITMAP, + PICTYPE_METAFILE, + PICTYPE_ICON, + PICTYPE_ENHMETAFILE // = 4 } enum { - DISPID_AUTOSIZE = -500, - DISPID_BACKCOLOR = -501, - DISPID_BACKSTYLE = -502, - DISPID_BORDERCOLOR = -503, - DISPID_BORDERSTYLE = -504, - DISPID_BORDERWIDTH = -505, - DISPID_DRAWMODE = -507, - DISPID_DRAWSTYLE = -508, - DISPID_DRAWWIDTH = -509, - DISPID_FILLCOLOR = -510, - DISPID_FILLSTYLE = -511, - DISPID_FONT = -512, - DISPID_FORECOLOR = -513, - DISPID_ENABLED = -514, - DISPID_HWND = -515, - DISPID_TABSTOP = -516, - DISPID_TEXT = -517, - DISPID_CAPTION = -518, - DISPID_BORDERVISIBLE = -519, - DISPID_APPEARANCE = -520, - DISPID_MOUSEPOINTER = -521, - DISPID_MOUSEICON = -522, - DISPID_PICTURE = -523, - DISPID_VALID = -524, - DISPID_REFRESH = -550, - DISPID_DOCLICK = -551, - DISPID_ABOUTBOX = -552, - DISPID_CLICK = -600, - DISPID_DBLCLICK = -601, - DISPID_KEYDOWN = -602, - DISPID_KEYPRESS = -603, - DISPID_KEYUP = -604, - DISPID_MOUSEDOWN = -605, - DISPID_MOUSEMOVE = -606, - DISPID_MOUSEUP = -607, - DISPID_ERROREVENT = -608, - DISPID_AMBIENT_BACKCOLOR = -701, - DISPID_AMBIENT_DISPLAYNAME = -702, - DISPID_AMBIENT_FONT = -703, - DISPID_AMBIENT_FORECOLOR = -704, - DISPID_AMBIENT_LOCALEID = -705, - DISPID_AMBIENT_MESSAGEREFLECT = -706, - DISPID_AMBIENT_SCALEUNITS = -707, - DISPID_AMBIENT_TEXTALIGN = -708, - DISPID_AMBIENT_USERMODE = -709, - DISPID_AMBIENT_UIDEAD = -710, - DISPID_AMBIENT_SHOWGRABHANDLES = -711, - DISPID_AMBIENT_SHOWHATCHING = -712, - DISPID_AMBIENT_DISPLAYASDEFAULT = -713, - DISPID_AMBIENT_SUPPORTSMNEMONICS = -714, - DISPID_AMBIENT_AUTOCLIP = -715, - DISPID_AMBIENT_APPEARANCE = -716, - DISPID_AMBIENT_CODEPAGE = -725, - DISPID_AMBIENT_PALETTE = -726, - DISPID_AMBIENT_CHARSET = -727, - DISPID_AMBIENT_RIGHTTOLEFT = -732, - DISPID_AMBIENT_TOPTOBOTTOM = -733 + DISPID_AUTOSIZE = -500, + DISPID_BACKCOLOR = -501, + DISPID_BACKSTYLE = -502, + DISPID_BORDERCOLOR = -503, + DISPID_BORDERSTYLE = -504, + DISPID_BORDERWIDTH = -505, + DISPID_DRAWMODE = -507, + DISPID_DRAWSTYLE = -508, + DISPID_DRAWWIDTH = -509, + DISPID_FILLCOLOR = -510, + DISPID_FILLSTYLE = -511, + DISPID_FONT = -512, + DISPID_FORECOLOR = -513, + DISPID_ENABLED = -514, + DISPID_HWND = -515, + DISPID_TABSTOP = -516, + DISPID_TEXT = -517, + DISPID_CAPTION = -518, + DISPID_BORDERVISIBLE = -519, + DISPID_APPEARANCE = -520, + DISPID_MOUSEPOINTER = -521, + DISPID_MOUSEICON = -522, + DISPID_PICTURE = -523, + DISPID_VALID = -524, + DISPID_REFRESH = -550, + DISPID_DOCLICK = -551, + DISPID_ABOUTBOX = -552, + DISPID_CLICK = -600, + DISPID_DBLCLICK = -601, + DISPID_KEYDOWN = -602, + DISPID_KEYPRESS = -603, + DISPID_KEYUP = -604, + DISPID_MOUSEDOWN = -605, + DISPID_MOUSEMOVE = -606, + DISPID_MOUSEUP = -607, + DISPID_ERROREVENT = -608, + DISPID_AMBIENT_BACKCOLOR = -701, + DISPID_AMBIENT_DISPLAYNAME = -702, + DISPID_AMBIENT_FONT = -703, + DISPID_AMBIENT_FORECOLOR = -704, + DISPID_AMBIENT_LOCALEID = -705, + DISPID_AMBIENT_MESSAGEREFLECT = -706, + DISPID_AMBIENT_SCALEUNITS = -707, + DISPID_AMBIENT_TEXTALIGN = -708, + DISPID_AMBIENT_USERMODE = -709, + DISPID_AMBIENT_UIDEAD = -710, + DISPID_AMBIENT_SHOWGRABHANDLES = -711, + DISPID_AMBIENT_SHOWHATCHING = -712, + DISPID_AMBIENT_DISPLAYASDEFAULT = -713, + DISPID_AMBIENT_SUPPORTSMNEMONICS = -714, + DISPID_AMBIENT_AUTOCLIP = -715, + DISPID_AMBIENT_APPEARANCE = -716, + DISPID_AMBIENT_CODEPAGE = -725, + DISPID_AMBIENT_PALETTE = -726, + DISPID_AMBIENT_CHARSET = -727, + DISPID_AMBIENT_RIGHTTOLEFT = -732, + DISPID_AMBIENT_TOPTOBOTTOM = -733 } enum { - DISPID_FONT_NAME = 0, - DISPID_FONT_SIZE = 2, - DISPID_FONT_BOLD, - DISPID_FONT_ITALIC, - DISPID_FONT_UNDER, - DISPID_FONT_STRIKE, - DISPID_FONT_WEIGHT, - DISPID_FONT_CHARSET // = 8 + DISPID_FONT_NAME = 0, + DISPID_FONT_SIZE = 2, + DISPID_FONT_BOLD, + DISPID_FONT_ITALIC, + DISPID_FONT_UNDER, + DISPID_FONT_STRIKE, + DISPID_FONT_WEIGHT, + DISPID_FONT_CHARSET // = 8 } enum { - DISPID_PICT_HANDLE = 0, - DISPID_PICT_HPAL = 2, - DISPID_PICT_TYPE, - DISPID_PICT_WIDTH, - DISPID_PICT_HEIGHT, - DISPID_PICT_RENDER // = 6 + DISPID_PICT_HANDLE = 0, + DISPID_PICT_HPAL = 2, + DISPID_PICT_TYPE, + DISPID_PICT_WIDTH, + DISPID_PICT_HEIGHT, + DISPID_PICT_RENDER // = 6 } alias IOleControl LPOLECONTROL; @@ -323,75 +323,75 @@ alias VARIANT_BOOL OLE_ENABLEDEFAULTBOOL; align(8): enum OLE_TRISTATE { - triUnchecked, - triChecked1, - triGray + triUnchecked, + triChecked1, + triGray } struct OCPFIPARAMS { - ULONG cbStructSize; - HWND hWndOwner; - int x; - int y; - LPCOLESTR lpszCaption; - ULONG cObjects; - LPUNKNOWN *lplpUnk; - ULONG cPages; - CLSID *lpPages; - LCID lcid; - DISPID dispidInitialProperty; + ULONG cbStructSize; + HWND hWndOwner; + int x; + int y; + LPCOLESTR lpszCaption; + ULONG cObjects; + LPUNKNOWN *lplpUnk; + ULONG cPages; + CLSID *lpPages; + LCID lcid; + DISPID dispidInitialProperty; } alias OCPFIPARAMS* LPOCPFIPARAMS; struct FONTDESC { - UINT cbSizeofstruct; - LPOLESTR lpstrName; - CY cySize; - SHORT sWeight; - SHORT sCharset; - BOOL fItalic; - BOOL fUnderline; - BOOL fStrikethrough; + UINT cbSizeofstruct; + LPOLESTR lpstrName; + CY cySize; + SHORT sWeight; + SHORT sCharset; + BOOL fItalic; + BOOL fUnderline; + BOOL fStrikethrough; } alias FONTDESC* LPFONTDESC; struct PICTDESC { - UINT cbSizeofstruct; - UINT picType; - union { - struct bmp { - HBITMAP hbitmap; - HPALETTE hpal; - } - struct wmf { - HMETAFILE hmeta; - int xExt; - int yExt; - } - struct icon { - HICON hicon; - } - struct emf { - HENHMETAFILE hemf; - } - } + UINT cbSizeofstruct; + UINT picType; + union { + struct bmp { + HBITMAP hbitmap; + HPALETTE hpal; + } + struct wmf { + HMETAFILE hmeta; + int xExt; + int yExt; + } + struct icon { + HICON hicon; + } + struct emf { + HENHMETAFILE hemf; + } + } } alias PICTDESC* LPPICTDESC; extern(Windows) { - HRESULT DllRegisterServer(); - HRESULT DllUnregisterServer(); - HRESULT OleCreateFontIndirect(LPFONTDESC, REFIID, PVOID*); - HRESULT OleCreatePictureIndirect(LPPICTDESC, REFIID, BOOL, PVOID*); - HRESULT OleCreatePropertyFrame(HWND, UINT, UINT, LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, PVOID); - HRESULT OleCreatePropertyFrameIndirect(LPOCPFIPARAMS); - HCURSOR OleIconToCursor(HINSTANCE, HICON); - HRESULT OleLoadPicture(LPSTREAM, LONG, BOOL, REFIID, PVOID*); - HRESULT OleLoadPictureEx(LPSTREAM, LONG, BOOL, REFIID, DWORD, DWORD, DWORD, LPVOID*); - HRESULT OleLoadPicturePath(LPOLESTR, LPUNKNOWN, DWORD, OLE_COLOR, REFIID, LPVOID*); - HRESULT OleLoadPictureFile(VARIANT, LPDISPATCH*); - HRESULT OleLoadPictureFileEx(VARIANT, DWORD, DWORD, DWORD, LPDISPATCH*); - HRESULT OleSavePictureFile(LPDISPATCH, BSTR); - HRESULT OleTranslateColor(OLE_COLOR, HPALETTE, COLORREF*); + HRESULT DllRegisterServer(); + HRESULT DllUnregisterServer(); + HRESULT OleCreateFontIndirect(LPFONTDESC, REFIID, PVOID*); + HRESULT OleCreatePictureIndirect(LPPICTDESC, REFIID, BOOL, PVOID*); + HRESULT OleCreatePropertyFrame(HWND, UINT, UINT, LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, PVOID); + HRESULT OleCreatePropertyFrameIndirect(LPOCPFIPARAMS); + HCURSOR OleIconToCursor(HINSTANCE, HICON); + HRESULT OleLoadPicture(LPSTREAM, LONG, BOOL, REFIID, PVOID*); + HRESULT OleLoadPictureEx(LPSTREAM, LONG, BOOL, REFIID, DWORD, DWORD, DWORD, LPVOID*); + HRESULT OleLoadPicturePath(LPOLESTR, LPUNKNOWN, DWORD, OLE_COLOR, REFIID, LPVOID*); + HRESULT OleLoadPictureFile(VARIANT, LPDISPATCH*); + HRESULT OleLoadPictureFileEx(VARIANT, DWORD, DWORD, DWORD, LPDISPATCH*); + HRESULT OleSavePictureFile(LPDISPATCH, BSTR); + HRESULT OleTranslateColor(OLE_COLOR, HPALETTE, COLORREF*); } diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d index 2e3bfff516..9ec05f2117 100644 --- a/src/core/sys/windows/oledlg.d +++ b/src/core/sys/windows/oledlg.d @@ -32,23 +32,23 @@ const TCHAR[] PROP_HWND_CHGICONDLG = "HWND_CIDLG"; const IDC_OLEUIHELP=99; enum { - IDC_IO_CREATENEW = 2100, - IDC_IO_CREATEFROMFILE, - IDC_IO_LINKFILE, - IDC_IO_OBJECTTYPELIST, - IDC_IO_DISPLAYASICON, - IDC_IO_CHANGEICON, - IDC_IO_FILE, - IDC_IO_FILEDISPLAY, - IDC_IO_RESULTIMAGE, - IDC_IO_RESULTTEXT, - IDC_IO_ICONDISPLAY, - IDC_IO_OBJECTTYPETEXT, - IDC_IO_FILETEXT, - IDC_IO_FILETYPE, - IDC_IO_INSERTCONTROL, - IDC_IO_ADDCONTROL, - IDC_IO_CONTROLTYPELIST // = 2116 + IDC_IO_CREATENEW = 2100, + IDC_IO_CREATEFROMFILE, + IDC_IO_LINKFILE, + IDC_IO_OBJECTTYPELIST, + IDC_IO_DISPLAYASICON, + IDC_IO_CHANGEICON, + IDC_IO_FILE, + IDC_IO_FILEDISPLAY, + IDC_IO_RESULTIMAGE, + IDC_IO_RESULTTEXT, + IDC_IO_ICONDISPLAY, + IDC_IO_OBJECTTYPETEXT, + IDC_IO_FILETEXT, + IDC_IO_FILETYPE, + IDC_IO_INSERTCONTROL, + IDC_IO_ADDCONTROL, + IDC_IO_CONTROLTYPELIST // = 2116 } const IDC_PS_PASTE=500; @@ -330,58 +330,58 @@ const VPF_DISABLESCALE=4; align(8): extern (Windows) { - alias UINT function(HWND, UINT, WPARAM, LPARAM) LPFNOLEUIHOOK; + alias UINT function(HWND, UINT, WPARAM, LPARAM) LPFNOLEUIHOOK; } struct OLEUIINSERTOBJECTW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - LPWSTR lpszFile; - UINT cchFile; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - IID iid; - DWORD oleRender; - LPFORMATETC lpFormatEtc; - LPOLECLIENTSITE lpIOleClientSite; - LPSTORAGE lpIStorage; - PVOID *ppvObj; - SCODE sc; - HGLOBAL hMetaPict; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + LPWSTR lpszFile; + UINT cchFile; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + IID iid; + DWORD oleRender; + LPFORMATETC lpFormatEtc; + LPOLECLIENTSITE lpIOleClientSite; + LPSTORAGE lpIStorage; + PVOID *ppvObj; + SCODE sc; + HGLOBAL hMetaPict; } alias OLEUIINSERTOBJECTW* POLEUIINSERTOBJECTW, LPOLEUIINSERTOBJECTW; struct OLEUIINSERTOBJECTA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - LPSTR lpszFile; - UINT cchFile; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - IID iid; - DWORD oleRender; - LPFORMATETC lpFormatEtc; - LPOLECLIENTSITE lpIOleClientSite; - LPSTORAGE lpIStorage; - PVOID *ppvObj; - SCODE sc; - HGLOBAL hMetaPict; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + LPSTR lpszFile; + UINT cchFile; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + IID iid; + DWORD oleRender; + LPFORMATETC lpFormatEtc; + LPOLECLIENTSITE lpIOleClientSite; + LPSTORAGE lpIStorage; + PVOID *ppvObj; + SCODE sc; + HGLOBAL hMetaPict; } alias OLEUIINSERTOBJECTA* POLEUIINSERTOBJECTA, LPOLEUIINSERTOBJECTA; @@ -389,601 +389,601 @@ UINT OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); UINT OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); enum OLEUIPASTEFLAG { - OLEUIPASTE_PASTEONLY, - OLEUIPASTE_LINKTYPE1, - OLEUIPASTE_LINKTYPE2, - OLEUIPASTE_LINKTYPE3 = 4, - OLEUIPASTE_LINKTYPE4 = 8, - OLEUIPASTE_LINKTYPE5 = 16, - OLEUIPASTE_LINKTYPE6 = 32, - OLEUIPASTE_LINKTYPE7 = 64, - OLEUIPASTE_LINKTYPE8 = 128, - OLEUIPASTE_PASTE = 512, - OLEUIPASTE_LINKANYTYPE = 1024, - OLEUIPASTE_ENABLEICON = 2048 + OLEUIPASTE_PASTEONLY, + OLEUIPASTE_LINKTYPE1, + OLEUIPASTE_LINKTYPE2, + OLEUIPASTE_LINKTYPE3 = 4, + OLEUIPASTE_LINKTYPE4 = 8, + OLEUIPASTE_LINKTYPE5 = 16, + OLEUIPASTE_LINKTYPE6 = 32, + OLEUIPASTE_LINKTYPE7 = 64, + OLEUIPASTE_LINKTYPE8 = 128, + OLEUIPASTE_PASTE = 512, + OLEUIPASTE_LINKANYTYPE = 1024, + OLEUIPASTE_ENABLEICON = 2048 } struct OLEUIPASTEENTRYW { - FORMATETC fmtetc; - LPCWSTR lpstrFormatName; - LPCWSTR lpstrResultText; - DWORD dwFlags; - DWORD dwScratchSpace; + FORMATETC fmtetc; + LPCWSTR lpstrFormatName; + LPCWSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; } alias OLEUIPASTEENTRYW* POLEUIPASTEENTRYW, LPOLEUIPASTEENTRYW; struct OLEUIPASTEENTRYA { - FORMATETC fmtetc; - LPCSTR lpstrFormatName; - LPCSTR lpstrResultText; - DWORD dwFlags; - DWORD dwScratchSpace; + FORMATETC fmtetc; + LPCSTR lpstrFormatName; + LPCSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; } alias OLEUIPASTEENTRYA* POLEUIPASTEENTRYA, LPOLEUIPASTEENTRYA; struct OLEUIPASTESPECIALW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - LPDATAOBJECT lpSrcDataObj; - LPOLEUIPASTEENTRYW arrPasteEntries; - int cPasteEntries; - UINT *arrLinkTypes; - int cLinkTypes; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - int nSelectedIndex; - BOOL fLink; - HGLOBAL hMetaPict; - SIZEL sizel; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPDATAOBJECT lpSrcDataObj; + LPOLEUIPASTEENTRYW arrPasteEntries; + int cPasteEntries; + UINT *arrLinkTypes; + int cLinkTypes; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + int nSelectedIndex; + BOOL fLink; + HGLOBAL hMetaPict; + SIZEL sizel; } alias OLEUIPASTESPECIALW* POLEUIPASTESPECIALW, LPOLEUIPASTESPECIALW; struct OLEUIPASTESPECIALA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - LPDATAOBJECT lpSrcDataObj; - LPOLEUIPASTEENTRYA arrPasteEntries; - int cPasteEntries; - UINT* arrLinkTypes; - int cLinkTypes; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - int nSelectedIndex; - BOOL fLink; - HGLOBAL hMetaPict; - SIZEL sizel; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPDATAOBJECT lpSrcDataObj; + LPOLEUIPASTEENTRYA arrPasteEntries; + int cPasteEntries; + UINT* arrLinkTypes; + int cLinkTypes; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + int nSelectedIndex; + BOOL fLink; + HGLOBAL hMetaPict; + SIZEL sizel; } alias OLEUIPASTESPECIALA* POLEUIPASTESPECIALA, LPOLEUIPASTESPECIALA; interface IOleUILinkContainerW : IUnknown { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD dwLink); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, PDWORD); - HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD dwLink); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, PDWORD); + HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); } alias IOleUILinkContainerW LPOLEUILINKCONTAINERW; interface IOleUILinkContainerA : IUnknown { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, PDWORD); - HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, PDWORD); + HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); } alias IOleUILinkContainerA LPOLEUILINKCONTAINERA; struct OLEUIEDITLINKSW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - LPOLEUILINKCONTAINERW lpOleUILinkContainer; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; } alias OLEUIEDITLINKSW* POLEUIEDITLINKSW, LPOLEUIEDITLINKSW; struct OLEUIEDITLINKSA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - LPOLEUILINKCONTAINERA lpOleUILinkContainer; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; } alias OLEUIEDITLINKSA* POLEUIEDITLINKSA, LPOLEUIEDITLINKSA; struct OLEUICHANGEICONW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - HGLOBAL hMetaPict; - CLSID clsid; - WCHAR[MAX_PATH] szIconExe; - int cchIconExe; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + WCHAR[MAX_PATH] szIconExe; + int cchIconExe; } alias OLEUICHANGEICONW* POLEUICHANGEICONW, LPOLEUICHANGEICONW; struct OLEUICHANGEICONA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - HGLOBAL hMetaPict; - CLSID clsid; - CHAR[MAX_PATH] szIconExe; - int cchIconExe; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + CHAR[MAX_PATH] szIconExe; + int cchIconExe; } alias OLEUICHANGEICONA* POLEUICHANGEICONA, LPOLEUICHANGEICONA; struct OLEUICONVERTW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - CLSID clsidConvertDefault; - CLSID clsidActivateDefault; - CLSID clsidNew; - DWORD dvAspect; - WORD wFormat; - BOOL fIsLinkedObject; - HGLOBAL hMetaPict; - LPWSTR lpszUserType; - BOOL fObjectsIconChanged; - LPWSTR lpszDefLabel; - UINT cClsidExclude; - LPCLSID lpClsidExclude; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + CLSID clsidConvertDefault; + CLSID clsidActivateDefault; + CLSID clsidNew; + DWORD dvAspect; + WORD wFormat; + BOOL fIsLinkedObject; + HGLOBAL hMetaPict; + LPWSTR lpszUserType; + BOOL fObjectsIconChanged; + LPWSTR lpszDefLabel; + UINT cClsidExclude; + LPCLSID lpClsidExclude; } alias OLEUICONVERTW* POLEUICONVERTW, LPOLEUICONVERTW; struct OLEUICONVERTA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - CLSID clsidConvertDefault; - CLSID clsidActivateDefault; - CLSID clsidNew; - DWORD dvAspect; - WORD wFormat; - BOOL fIsLinkedObject; - HGLOBAL hMetaPict; - LPSTR lpszUserType; - BOOL fObjectsIconChanged; - LPSTR lpszDefLabel; - UINT cClsidExclude; - LPCLSID lpClsidExclude; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + CLSID clsidConvertDefault; + CLSID clsidActivateDefault; + CLSID clsidNew; + DWORD dvAspect; + WORD wFormat; + BOOL fIsLinkedObject; + HGLOBAL hMetaPict; + LPSTR lpszUserType; + BOOL fObjectsIconChanged; + LPSTR lpszDefLabel; + UINT cClsidExclude; + LPCLSID lpClsidExclude; } alias OLEUICONVERTA* POLEUICONVERTA, LPOLEUICONVERTA; struct OLEUIBUSYW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - HTASK hTask; - HWND *lphWndDialog; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND *lphWndDialog; } alias OLEUIBUSYW* POLEUIBUSYW, LPOLEUIBUSYW; struct OLEUIBUSYA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - HTASK hTask; - HWND *lphWndDialog; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND *lphWndDialog; } alias OLEUIBUSYA* POLEUIBUSYA, LPOLEUIBUSYA; struct OLEUICHANGESOURCEW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - OPENFILENAMEW* lpOFN; - DWORD[4] dwReserved1; - LPOLEUILINKCONTAINERW lpOleUILinkContainer; - DWORD dwLink; - LPWSTR lpszDisplayName; - ULONG nFileLength; - LPWSTR lpszFrom; - LPWSTR lpszTo; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEW* lpOFN; + DWORD[4] dwReserved1; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; + DWORD dwLink; + LPWSTR lpszDisplayName; + ULONG nFileLength; + LPWSTR lpszFrom; + LPWSTR lpszTo; } alias OLEUICHANGESOURCEW* POLEUICHANGESOURCEW, LPOLEUICHANGESOURCEW; struct OLEUICHANGESOURCEA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - OPENFILENAMEA *lpOFN; - DWORD[4] dwReserved1; - LPOLEUILINKCONTAINERA lpOleUILinkContainer; - DWORD dwLink; - LPSTR lpszDisplayName; - ULONG nFileLength; - LPSTR lpszFrom; - LPSTR lpszTo; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEA *lpOFN; + DWORD[4] dwReserved1; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; + DWORD dwLink; + LPSTR lpszDisplayName; + ULONG nFileLength; + LPSTR lpszFrom; + LPSTR lpszTo; } alias OLEUICHANGESOURCEA* POLEUICHANGESOURCEA, LPOLEUICHANGESOURCEA; interface IOleUIObjInfoW : IUnknown { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetObjectInfo(DWORD, PDWORD, LPWSTR*, LPWSTR*, LPWSTR*, LPWSTR*); - HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); - HRESULT ConvertObject(DWORD, REFCLSID); - HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); - HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT GetObjectInfo(DWORD, PDWORD, LPWSTR*, LPWSTR*, LPWSTR*, LPWSTR*); + HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); + HRESULT ConvertObject(DWORD, REFCLSID); + HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); + HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); } alias IOleUIObjInfoW LPOLEUIOBJINFOW; interface IOleUIObjInfoA : IUnknown { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetObjectInfo(DWORD, PDWORD, LPSTR*, LPSTR*, LPSTR*, LPSTR*); - HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); - HRESULT ConvertObject(DWORD, REFCLSID); - HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); - HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT GetObjectInfo(DWORD, PDWORD, LPSTR*, LPSTR*, LPSTR*, LPSTR*); + HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); + HRESULT ConvertObject(DWORD, REFCLSID); + HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); + HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); } alias IOleUIObjInfoA LPOLEUIOBJINFOA; interface IOleUILinkInfoW : IOleUILinkContainerW { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, DWORD*); - HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); - HRESULT GetLastUpdate(DWORD, FILETIME*); + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, DWORD*); + HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); + HRESULT GetLastUpdate(DWORD, FILETIME*); } alias IOleUILinkInfoW LPOLEUILINKINFOW; interface IOleUILinkInfoA : IOleUILinkContainerA { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, DWORD*); - HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); - HRESULT GetLastUpdate(DWORD, FILETIME*); + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, DWORD*); + HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); + HRESULT GetLastUpdate(DWORD, FILETIME*); } alias IOleUILinkInfoA LPOLEUILINKINFOA; struct OLEUIGNRLPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSW* lpOP; + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW* lpOP; } alias OLEUIGNRLPROPSW* POLEUIGNRLPROPSW, LPOLEUIGNRLPROPSW; struct OLEUIGNRLPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSA* lpOP; + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA* lpOP; } alias OLEUIGNRLPROPSA* POLEUIGNRLPROPSA, LPOLEUIGNRLPROPSA; struct OLEUIVIEWPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSW* lpOP; - int nScaleMin; - int nScaleMax; + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW* lpOP; + int nScaleMin; + int nScaleMax; } alias OLEUIVIEWPROPSW* POLEUIVIEWPROPSW, LPOLEUIVIEWPROPSW; struct OLEUIVIEWPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSA *lpOP; - int nScaleMin; - int nScaleMax; + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA *lpOP; + int nScaleMin; + int nScaleMax; } alias OLEUIVIEWPROPSA* POLEUIVIEWPROPSA, LPOLEUIVIEWPROPSA; struct OLEUILINKPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSW *lpOP; + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW *lpOP; } alias OLEUILINKPROPSW* POLEUILINKPROPSW, LPOLEUILINKPROPSW; struct OLEUILINKPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD[2] dwReserved1; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD[3] dwReserved2; - OLEUIOBJECTPROPSA* lpOP; + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA* lpOP; } alias OLEUILINKPROPSA* POLEUILINKPROPSA, LPOLEUILINKPROPSA; struct OLEUIOBJECTPROPSW { - DWORD cbStruct; - DWORD dwFlags; - LPPROPSHEETHEADERW lpPS; - DWORD dwObject; - LPOLEUIOBJINFOW lpObjInfo; - DWORD dwLink; - LPOLEUILINKINFOW lpLinkInfo; - LPOLEUIGNRLPROPSW lpGP; - LPOLEUIVIEWPROPSW lpVP; - LPOLEUILINKPROPSW lpLP; + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERW lpPS; + DWORD dwObject; + LPOLEUIOBJINFOW lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOW lpLinkInfo; + LPOLEUIGNRLPROPSW lpGP; + LPOLEUIVIEWPROPSW lpVP; + LPOLEUILINKPROPSW lpLP; } alias OLEUIOBJECTPROPSW* POLEUIOBJECTPROPSW, LPOLEUIOBJECTPROPSW; struct OLEUIOBJECTPROPSA { - DWORD cbStruct; - DWORD dwFlags; - LPPROPSHEETHEADERA lpPS; - DWORD dwObject; - LPOLEUIOBJINFOA lpObjInfo; - DWORD dwLink; - LPOLEUILINKINFOA lpLinkInfo; - LPOLEUIGNRLPROPSA lpGP; - LPOLEUIVIEWPROPSA lpVP; - LPOLEUILINKPROPSA lpLP; + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERA lpPS; + DWORD dwObject; + LPOLEUIOBJINFOA lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOA lpLinkInfo; + LPOLEUIGNRLPROPSA lpGP; + LPOLEUIVIEWPROPSA lpVP; + LPOLEUILINKPROPSA lpLP; } alias OLEUIOBJECTPROPSA* POLEUIOBJECTPROPSA, LPOLEUIOBJECTPROPSA; extern (Windows) { - BOOL OleUIAddVerbMenuW(LPOLEOBJECT, LPCWSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); - BOOL OleUIAddVerbMenuA(LPOLEOBJECT, LPCSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); - UINT OleUIBusyW(LPOLEUIBUSYW); - UINT OleUIBusyA(LPOLEUIBUSYA); - BOOL OleUICanConvertOrActivateAs(REFCLSID, BOOL, WORD); - UINT OleUIChangeIconW(LPOLEUICHANGEICONW); - UINT OleUIChangeIconA(LPOLEUICHANGEICONA); - UINT OleUIChangeSourceW(LPOLEUICHANGESOURCEW); - UINT OleUIChangeSourceA(LPOLEUICHANGESOURCEA); - UINT OleUIConvertW(LPOLEUICONVERTW); - UINT OleUIConvertA(LPOLEUICONVERTA); - UINT OleUIEditLinksW(LPOLEUIEDITLINKSW); - UINT OleUIEditLinksA(LPOLEUIEDITLINKSA); - UINT OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW); - UINT OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA); - UINT OleUIPasteSpecialW(LPOLEUIPASTESPECIALW); - UINT OleUIPasteSpecialA(LPOLEUIPASTESPECIALA); - BOOL OleUIUpdateLinksW(LPOLEUILINKCONTAINERW, HWND, LPWSTR, int); - BOOL OleUIUpdateLinksA(LPOLEUILINKCONTAINERA, HWND, LPSTR, int); + BOOL OleUIAddVerbMenuW(LPOLEOBJECT, LPCWSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); + BOOL OleUIAddVerbMenuA(LPOLEOBJECT, LPCSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); + UINT OleUIBusyW(LPOLEUIBUSYW); + UINT OleUIBusyA(LPOLEUIBUSYA); + BOOL OleUICanConvertOrActivateAs(REFCLSID, BOOL, WORD); + UINT OleUIChangeIconW(LPOLEUICHANGEICONW); + UINT OleUIChangeIconA(LPOLEUICHANGEICONA); + UINT OleUIChangeSourceW(LPOLEUICHANGESOURCEW); + UINT OleUIChangeSourceA(LPOLEUICHANGESOURCEA); + UINT OleUIConvertW(LPOLEUICONVERTW); + UINT OleUIConvertA(LPOLEUICONVERTA); + UINT OleUIEditLinksW(LPOLEUIEDITLINKSW); + UINT OleUIEditLinksA(LPOLEUIEDITLINKSA); + UINT OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW); + UINT OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA); + UINT OleUIPasteSpecialW(LPOLEUIPASTESPECIALW); + UINT OleUIPasteSpecialA(LPOLEUIPASTESPECIALA); + BOOL OleUIUpdateLinksW(LPOLEUILINKCONTAINERW, HWND, LPWSTR, int); + BOOL OleUIUpdateLinksA(LPOLEUILINKCONTAINERA, HWND, LPSTR, int); } extern (C) { - int OleUIPromptUserW(int, HWND, ...); - int OleUIPromptUserA(int, HWND, ...); + int OleUIPromptUserW(int, HWND, ...); + int OleUIPromptUserA(int, HWND, ...); } version(Unicode) { - alias IDD_SERVERNOTREGW IDD_SERVERNOTREG; - alias IDD_LINKTYPECHANGEDW IDD_LINKTYPECHANGED; - alias OleUIUpdateLinksW OleUIUpdateLinks; - alias OleUIAddVerbMenuW OleUIAddVerbMenu; - alias OLEUIOBJECTPROPSW OLEUIOBJECTPROPS; - alias POLEUIOBJECTPROPSW POLEUIOBJECTPROPS; - alias LPOLEUIOBJECTPROPSW LPOLEUIOBJECTPROPS; - alias OleUIObjectPropertiesW OleUIObjectProperties; - alias OLEUIINSERTOBJECTW OLEUIINSERTOBJECT; - alias POLEUIINSERTOBJECTW POLEUIINSERTOBJECT; - alias LPOLEUIINSERTOBJECTW LPOLEUIINSERTOBJECT; - alias OleUIInsertObjectW OleUIInsertObject; - alias OleUIPromptUserW OleUIPromptUser; - alias OLEUIPASTEENTRYW OLEUIPASTEENTRY; - alias POLEUIPASTEENTRYW POLEUIPASTEENTRY; - alias LPOLEUIPASTEENTRYW LPOLEUIPASTEENTRY; - alias OLEUIPASTESPECIALW OLEUIPASTESPECIAL; - alias POLEUIPASTESPECIALW POLEUIPASTESPECIAL; - alias LPOLEUIPASTESPECIALW LPOLEUIPASTESPECIAL; - alias OleUIPasteSpecialW OleUIPasteSpecial; - alias IOleUILinkContainerW IOleUILinkContainer; - alias LPOLEUILINKCONTAINERW LPOLEUILINKCONTAINER; - alias OLEUIEDITLINKSW OLEUIEDITLINKS; - alias POLEUIEDITLINKSW POLEUIEDITLINKS; - alias LPOLEUIEDITLINKSW LPOLEUIEDITLINKS; - alias OleUIEditLinksW OleUIEditLinks; - alias OLEUICHANGEICONW OLEUICHANGEICON; - alias POLEUICHANGEICONW POLEUICHANGEICON; - alias LPOLEUICHANGEICONW LPOLEUICHANGEICON; - alias OleUIChangeIconW OleUIChangeIcon; - alias OLEUICONVERTW OLEUICONVERT; - alias POLEUICONVERTW POLEUICONVERT; - alias LPOLEUICONVERTW LPOLEUICONVERT; - alias OleUIConvertW OleUIConvert; - alias OLEUIBUSYW OLEUIBUSY; - alias POLEUIBUSYW POLEUIBUSY; - alias LPOLEUIBUSYW LPOLEUIBUSY; - alias OleUIBusyW OleUIBusy; - alias OLEUICHANGESOURCEW OLEUICHANGESOURCE; - alias POLEUICHANGESOURCEW POLEUICHANGESOURCE; - alias LPOLEUICHANGESOURCEW LPOLEUICHANGESOURCE; - alias OleUIChangeSourceW OleUIChangeSource; - alias IOleUIObjInfoW IOleUIObjInfo; - alias LPOLEUIOBJINFOW LPOLEUIOBJINFO; - alias IOleUILinkInfoW IOleUILinkInfo; - //alias IOleUILinkInfoWVtbl IOleUILinkInfoVtbl; - alias LPOLEUILINKINFOW LPOLEUILINKINFO; - alias OLEUIGNRLPROPSW OLEUIGNRLPROPS; - alias POLEUIGNRLPROPSW POLEUIGNRLPROPS; - alias LPOLEUIGNRLPROPSW LPOLEUIGNRLPROPS; - alias OLEUIVIEWPROPSW OLEUIVIEWPROPS; - alias POLEUIVIEWPROPSW POLEUIVIEWPROPS; - alias LPOLEUIVIEWPROPSW LPOLEUIVIEWPROPS; - alias OLEUILINKPROPSW OLEUILINKPROPS; - alias POLEUILINKPROPSW POLEUILINKPROPS; - alias LPOLEUILINKPROPSW LPOLEUILINKPROPS; + alias IDD_SERVERNOTREGW IDD_SERVERNOTREG; + alias IDD_LINKTYPECHANGEDW IDD_LINKTYPECHANGED; + alias OleUIUpdateLinksW OleUIUpdateLinks; + alias OleUIAddVerbMenuW OleUIAddVerbMenu; + alias OLEUIOBJECTPROPSW OLEUIOBJECTPROPS; + alias POLEUIOBJECTPROPSW POLEUIOBJECTPROPS; + alias LPOLEUIOBJECTPROPSW LPOLEUIOBJECTPROPS; + alias OleUIObjectPropertiesW OleUIObjectProperties; + alias OLEUIINSERTOBJECTW OLEUIINSERTOBJECT; + alias POLEUIINSERTOBJECTW POLEUIINSERTOBJECT; + alias LPOLEUIINSERTOBJECTW LPOLEUIINSERTOBJECT; + alias OleUIInsertObjectW OleUIInsertObject; + alias OleUIPromptUserW OleUIPromptUser; + alias OLEUIPASTEENTRYW OLEUIPASTEENTRY; + alias POLEUIPASTEENTRYW POLEUIPASTEENTRY; + alias LPOLEUIPASTEENTRYW LPOLEUIPASTEENTRY; + alias OLEUIPASTESPECIALW OLEUIPASTESPECIAL; + alias POLEUIPASTESPECIALW POLEUIPASTESPECIAL; + alias LPOLEUIPASTESPECIALW LPOLEUIPASTESPECIAL; + alias OleUIPasteSpecialW OleUIPasteSpecial; + alias IOleUILinkContainerW IOleUILinkContainer; + alias LPOLEUILINKCONTAINERW LPOLEUILINKCONTAINER; + alias OLEUIEDITLINKSW OLEUIEDITLINKS; + alias POLEUIEDITLINKSW POLEUIEDITLINKS; + alias LPOLEUIEDITLINKSW LPOLEUIEDITLINKS; + alias OleUIEditLinksW OleUIEditLinks; + alias OLEUICHANGEICONW OLEUICHANGEICON; + alias POLEUICHANGEICONW POLEUICHANGEICON; + alias LPOLEUICHANGEICONW LPOLEUICHANGEICON; + alias OleUIChangeIconW OleUIChangeIcon; + alias OLEUICONVERTW OLEUICONVERT; + alias POLEUICONVERTW POLEUICONVERT; + alias LPOLEUICONVERTW LPOLEUICONVERT; + alias OleUIConvertW OleUIConvert; + alias OLEUIBUSYW OLEUIBUSY; + alias POLEUIBUSYW POLEUIBUSY; + alias LPOLEUIBUSYW LPOLEUIBUSY; + alias OleUIBusyW OleUIBusy; + alias OLEUICHANGESOURCEW OLEUICHANGESOURCE; + alias POLEUICHANGESOURCEW POLEUICHANGESOURCE; + alias LPOLEUICHANGESOURCEW LPOLEUICHANGESOURCE; + alias OleUIChangeSourceW OleUIChangeSource; + alias IOleUIObjInfoW IOleUIObjInfo; + alias LPOLEUIOBJINFOW LPOLEUIOBJINFO; + alias IOleUILinkInfoW IOleUILinkInfo; + //alias IOleUILinkInfoWVtbl IOleUILinkInfoVtbl; + alias LPOLEUILINKINFOW LPOLEUILINKINFO; + alias OLEUIGNRLPROPSW OLEUIGNRLPROPS; + alias POLEUIGNRLPROPSW POLEUIGNRLPROPS; + alias LPOLEUIGNRLPROPSW LPOLEUIGNRLPROPS; + alias OLEUIVIEWPROPSW OLEUIVIEWPROPS; + alias POLEUIVIEWPROPSW POLEUIVIEWPROPS; + alias LPOLEUIVIEWPROPSW LPOLEUIVIEWPROPS; + alias OLEUILINKPROPSW OLEUILINKPROPS; + alias POLEUILINKPROPSW POLEUILINKPROPS; + alias LPOLEUILINKPROPSW LPOLEUILINKPROPS; } else { - alias IDD_SERVERNOTREGA IDD_SERVERNOTREG; - alias IDD_LINKTYPECHANGEDA IDD_LINKTYPECHANGED; - alias OleUIUpdateLinksA OleUIUpdateLinks; - alias OleUIAddVerbMenuA OleUIAddVerbMenu; - alias OLEUIOBJECTPROPSA OLEUIOBJECTPROPS; - alias POLEUIOBJECTPROPSA POLEUIOBJECTPROPS; - alias LPOLEUIOBJECTPROPSA LPOLEUIOBJECTPROPS; - alias OleUIObjectPropertiesA OleUIObjectProperties; - alias OLEUIINSERTOBJECTA OLEUIINSERTOBJECT; - alias POLEUIINSERTOBJECTA POLEUIINSERTOBJECT; - alias LPOLEUIINSERTOBJECTA LPOLEUIINSERTOBJECT; - alias OleUIInsertObjectA OleUIInsertObject; - alias OleUIPromptUserA OleUIPromptUser; - alias OLEUIPASTEENTRYA OLEUIPASTEENTRY; - alias POLEUIPASTEENTRYA POLEUIPASTEENTRY; - alias LPOLEUIPASTEENTRYA LPOLEUIPASTEENTRY; - alias OLEUIPASTESPECIALA OLEUIPASTESPECIAL; - alias POLEUIPASTESPECIALA POLEUIPASTESPECIAL; - alias LPOLEUIPASTESPECIALA LPOLEUIPASTESPECIAL; - alias OleUIPasteSpecialA OleUIPasteSpecial; - alias IOleUILinkContainerA IOleUILinkContainer; - alias LPOLEUILINKCONTAINERA LPOLEUILINKCONTAINER; - alias OLEUIEDITLINKSA OLEUIEDITLINKS; - alias POLEUIEDITLINKSA POLEUIEDITLINKS; - alias LPOLEUIEDITLINKSA LPOLEUIEDITLINKS; - alias OleUIEditLinksA OleUIEditLinks; - alias OLEUICHANGEICONA OLEUICHANGEICON; - alias POLEUICHANGEICONA POLEUICHANGEICON; - alias LPOLEUICHANGEICONA LPOLEUICHANGEICON; - alias OleUIChangeIconA OleUIChangeIcon; - alias OLEUICONVERTA OLEUICONVERT; - alias POLEUICONVERTA POLEUICONVERT; - alias LPOLEUICONVERTA LPOLEUICONVERT; - alias OleUIConvertA OleUIConvert; - alias OLEUIBUSYA OLEUIBUSY; - alias POLEUIBUSYA POLEUIBUSY; - alias LPOLEUIBUSYA LPOLEUIBUSY; - alias OleUIBusyA OleUIBusy; - alias OLEUICHANGESOURCEA OLEUICHANGESOURCE; - alias POLEUICHANGESOURCEA POLEUICHANGESOURCE; - alias LPOLEUICHANGESOURCEA LPOLEUICHANGESOURCE; - alias OleUIChangeSourceA OleUIChangeSource; - alias IOleUIObjInfoA IOleUIObjInfo; - alias LPOLEUIOBJINFOA LPOLEUIOBJINFO; - alias IOleUILinkInfoA IOleUILinkInfo; - //alias IOleUILinkInfoAVtbl IOleUILinkInfoVtbl; - alias LPOLEUILINKINFOA LPOLEUILINKINFO; - alias OLEUIGNRLPROPSA OLEUIGNRLPROPS; - alias POLEUIGNRLPROPSA POLEUIGNRLPROPS; - alias LPOLEUIGNRLPROPSA LPOLEUIGNRLPROPS; - alias OLEUIVIEWPROPSA OLEUIVIEWPROPS; - alias POLEUIVIEWPROPSA POLEUIVIEWPROPS; - alias LPOLEUIVIEWPROPSA LPOLEUIVIEWPROPS; - alias OLEUILINKPROPSA OLEUILINKPROPS; - alias POLEUILINKPROPSA POLEUILINKPROPS; - alias LPOLEUILINKPROPSA LPOLEUILINKPROPS; + alias IDD_SERVERNOTREGA IDD_SERVERNOTREG; + alias IDD_LINKTYPECHANGEDA IDD_LINKTYPECHANGED; + alias OleUIUpdateLinksA OleUIUpdateLinks; + alias OleUIAddVerbMenuA OleUIAddVerbMenu; + alias OLEUIOBJECTPROPSA OLEUIOBJECTPROPS; + alias POLEUIOBJECTPROPSA POLEUIOBJECTPROPS; + alias LPOLEUIOBJECTPROPSA LPOLEUIOBJECTPROPS; + alias OleUIObjectPropertiesA OleUIObjectProperties; + alias OLEUIINSERTOBJECTA OLEUIINSERTOBJECT; + alias POLEUIINSERTOBJECTA POLEUIINSERTOBJECT; + alias LPOLEUIINSERTOBJECTA LPOLEUIINSERTOBJECT; + alias OleUIInsertObjectA OleUIInsertObject; + alias OleUIPromptUserA OleUIPromptUser; + alias OLEUIPASTEENTRYA OLEUIPASTEENTRY; + alias POLEUIPASTEENTRYA POLEUIPASTEENTRY; + alias LPOLEUIPASTEENTRYA LPOLEUIPASTEENTRY; + alias OLEUIPASTESPECIALA OLEUIPASTESPECIAL; + alias POLEUIPASTESPECIALA POLEUIPASTESPECIAL; + alias LPOLEUIPASTESPECIALA LPOLEUIPASTESPECIAL; + alias OleUIPasteSpecialA OleUIPasteSpecial; + alias IOleUILinkContainerA IOleUILinkContainer; + alias LPOLEUILINKCONTAINERA LPOLEUILINKCONTAINER; + alias OLEUIEDITLINKSA OLEUIEDITLINKS; + alias POLEUIEDITLINKSA POLEUIEDITLINKS; + alias LPOLEUIEDITLINKSA LPOLEUIEDITLINKS; + alias OleUIEditLinksA OleUIEditLinks; + alias OLEUICHANGEICONA OLEUICHANGEICON; + alias POLEUICHANGEICONA POLEUICHANGEICON; + alias LPOLEUICHANGEICONA LPOLEUICHANGEICON; + alias OleUIChangeIconA OleUIChangeIcon; + alias OLEUICONVERTA OLEUICONVERT; + alias POLEUICONVERTA POLEUICONVERT; + alias LPOLEUICONVERTA LPOLEUICONVERT; + alias OleUIConvertA OleUIConvert; + alias OLEUIBUSYA OLEUIBUSY; + alias POLEUIBUSYA POLEUIBUSY; + alias LPOLEUIBUSYA LPOLEUIBUSY; + alias OleUIBusyA OleUIBusy; + alias OLEUICHANGESOURCEA OLEUICHANGESOURCE; + alias POLEUICHANGESOURCEA POLEUICHANGESOURCE; + alias LPOLEUICHANGESOURCEA LPOLEUICHANGESOURCE; + alias OleUIChangeSourceA OleUIChangeSource; + alias IOleUIObjInfoA IOleUIObjInfo; + alias LPOLEUIOBJINFOA LPOLEUIOBJINFO; + alias IOleUILinkInfoA IOleUILinkInfo; + //alias IOleUILinkInfoAVtbl IOleUILinkInfoVtbl; + alias LPOLEUILINKINFOA LPOLEUILINKINFO; + alias OLEUIGNRLPROPSA OLEUIGNRLPROPS; + alias POLEUIGNRLPROPSA POLEUIGNRLPROPS; + alias LPOLEUIGNRLPROPSA LPOLEUIGNRLPROPS; + alias OLEUIVIEWPROPSA OLEUIVIEWPROPS; + alias POLEUIVIEWPROPSA POLEUIVIEWPROPS; + alias LPOLEUIVIEWPROPSA LPOLEUIVIEWPROPS; + alias OLEUILINKPROPSA OLEUILINKPROPS; + alias POLEUILINKPROPSA POLEUILINKPROPS; + alias LPOLEUILINKPROPSA LPOLEUILINKPROPS; } diff --git a/src/core/sys/windows/oleidl.d b/src/core/sys/windows/oleidl.d index 98e8b413f8..4b6076c18a 100644 --- a/src/core/sys/windows/oleidl.d +++ b/src/core/sys/windows/oleidl.d @@ -20,56 +20,56 @@ private import core.sys.windows.wingdi; // for LPLOGPALETTE const MK_ALT = 32; enum BINDSPEED { - BINDSPEED_INDEFINITE = 1, - BINDSPEED_MODERATE, - BINDSPEED_IMMEDIATE + BINDSPEED_INDEFINITE = 1, + BINDSPEED_MODERATE, + BINDSPEED_IMMEDIATE } enum OLEWHICHMK { - OLEWHICHMK_CONTAINER = 1, - OLEWHICHMK_OBJREL, - OLEWHICHMK_OBJFULL + OLEWHICHMK_CONTAINER = 1, + OLEWHICHMK_OBJREL, + OLEWHICHMK_OBJFULL } enum OLEGETMONIKER { - OLEGETMONIKER_ONLYIFTHERE = 1, - OLEGETMONIKER_FORCEASSIGN, - OLEGETMONIKER_UNASSIGN, - OLEGETMONIKER_TEMPFORUSER + OLEGETMONIKER_ONLYIFTHERE = 1, + OLEGETMONIKER_FORCEASSIGN, + OLEGETMONIKER_UNASSIGN, + OLEGETMONIKER_TEMPFORUSER } enum USERCLASSTYPE { - USERCLASSTYPE_FULL = 1, - USERCLASSTYPE_SHORT, - USERCLASSTYPE_APPNAME + USERCLASSTYPE_FULL = 1, + USERCLASSTYPE_SHORT, + USERCLASSTYPE_APPNAME } enum DROPEFFECT { - DROPEFFECT_NONE = 0, - DROPEFFECT_COPY = 1, - DROPEFFECT_MOVE = 2, - DROPEFFECT_LINK = 4, - DROPEFFECT_SCROLL = 0x80000000 + DROPEFFECT_NONE = 0, + DROPEFFECT_COPY = 1, + DROPEFFECT_MOVE = 2, + DROPEFFECT_LINK = 4, + DROPEFFECT_SCROLL = 0x80000000 } struct OLEMENUGROUPWIDTHS { - LONG[6] width; + LONG[6] width; } alias OLEMENUGROUPWIDTHS* LPOLEMENUGROUPWIDTHS; alias HGLOBAL HOLEMENU; enum OLECLOSE { - OLECLOSE_SAVEIFDIRTY, - OLECLOSE_NOSAVE, - OLECLOSE_PROMPTSAVE + OLECLOSE_SAVEIFDIRTY, + OLECLOSE_NOSAVE, + OLECLOSE_PROMPTSAVE } struct OLEVERB { - LONG lVerb; - LPWSTR lpszVerbName; - DWORD fuFlags; - DWORD grfAttribs; + LONG lVerb; + LPWSTR lpszVerbName; + DWORD fuFlags; + DWORD grfAttribs; } alias OLEVERB* LPOLEVERB; @@ -78,192 +78,192 @@ alias LPRECT LPBORDERWIDTHS; alias LPCRECT LPCBORDERWIDTHS; struct OLEINPLACEFRAMEINFO { - UINT cb; - BOOL fMDIApp; - HWND hwndFrame; - HACCEL haccel; - UINT cAccelEntries; + UINT cb; + BOOL fMDIApp; + HWND hwndFrame; + HACCEL haccel; + UINT cAccelEntries; } alias OLEINPLACEFRAMEINFO* LPOLEINPLACEFRAMEINFO; interface IEnumOLEVERB : IUnknown { - HRESULT Next(ULONG,OLEVERB*,ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumOLEVERB*); + HRESULT Next(ULONG,OLEVERB*,ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOLEVERB*); } //alias IEnumOLEVERB IEnumOleVerb; alias IEnumOLEVERB LPENUMOLEVERB; interface IParseDisplayName : IUnknown { - HRESULT ParseDisplayName(IBindCtx,LPOLESTR,ULONG*,IMoniker*); + HRESULT ParseDisplayName(IBindCtx,LPOLESTR,ULONG*,IMoniker*); } alias IParseDisplayName LPPARSEDISPLAYNAME; interface IOleContainer : IParseDisplayName { - HRESULT EnumObjects(DWORD,IEnumUnknown*); - HRESULT LockContainer(BOOL); + HRESULT EnumObjects(DWORD,IEnumUnknown*); + HRESULT LockContainer(BOOL); } alias IOleContainer LPOLECONTAINER; interface IOleItemContainer : IOleContainer { - HRESULT GetObject(LPOLESTR,DWORD,IBindCtx,REFIID,void**); - HRESULT GetObjectStorage(LPOLESTR,IBindCtx,REFIID,void**); - HRESULT IsRunning(LPOLESTR); + HRESULT GetObject(LPOLESTR,DWORD,IBindCtx,REFIID,void**); + HRESULT GetObjectStorage(LPOLESTR,IBindCtx,REFIID,void**); + HRESULT IsRunning(LPOLESTR); } interface IOleClientSite : IUnknown { - HRESULT SaveObject(); - HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); - HRESULT GetContainer(LPOLECONTAINER*); - HRESULT ShowObject(); - HRESULT OnShowWindow(BOOL); - HRESULT RequestNewObjectLayout(); + HRESULT SaveObject(); + HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); + HRESULT GetContainer(LPOLECONTAINER*); + HRESULT ShowObject(); + HRESULT OnShowWindow(BOOL); + HRESULT RequestNewObjectLayout(); } alias IOleClientSite LPOLECLIENTSITE; interface IOleObject : IUnknown { - HRESULT SetClientSite(LPOLECLIENTSITE); - HRESULT GetClientSite(LPOLECLIENTSITE*); - HRESULT SetHostNames(LPCOLESTR,LPCOLESTR); - HRESULT Close(DWORD); - HRESULT SetMoniker(DWORD,LPMONIKER); - HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); - HRESULT InitFromData(LPDATAOBJECT,BOOL,DWORD); - HRESULT GetClipboardData(DWORD,LPDATAOBJECT*); - HRESULT DoVerb(LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT); - HRESULT EnumVerbs(LPENUMOLEVERB*); - HRESULT Update(); - HRESULT IsUpToDate(); - HRESULT GetUserClassID(LPCLSID); - HRESULT GetUserType(DWORD,LPOLESTR*); - HRESULT SetExtent(DWORD,SIZEL*); - HRESULT GetExtent(DWORD,SIZEL*); - HRESULT Advise(LPADVISESINK,PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumAdvise(LPENUMSTATDATA*); - HRESULT GetMiscStatus(DWORD,PDWORD); - HRESULT SetColorScheme(LPLOGPALETTE); + HRESULT SetClientSite(LPOLECLIENTSITE); + HRESULT GetClientSite(LPOLECLIENTSITE*); + HRESULT SetHostNames(LPCOLESTR,LPCOLESTR); + HRESULT Close(DWORD); + HRESULT SetMoniker(DWORD,LPMONIKER); + HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); + HRESULT InitFromData(LPDATAOBJECT,BOOL,DWORD); + HRESULT GetClipboardData(DWORD,LPDATAOBJECT*); + HRESULT DoVerb(LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT); + HRESULT EnumVerbs(LPENUMOLEVERB*); + HRESULT Update(); + HRESULT IsUpToDate(); + HRESULT GetUserClassID(LPCLSID); + HRESULT GetUserType(DWORD,LPOLESTR*); + HRESULT SetExtent(DWORD,SIZEL*); + HRESULT GetExtent(DWORD,SIZEL*); + HRESULT Advise(LPADVISESINK,PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(LPENUMSTATDATA*); + HRESULT GetMiscStatus(DWORD,PDWORD); + HRESULT SetColorScheme(LPLOGPALETTE); } alias IOleObject LPOLEOBJECT; interface IOleWindow : IUnknown { - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); } alias IOleWindow LPOLEWINDOW; interface IOleInPlaceUIWindow : IOleWindow { - HRESULT GetBorder(LPRECT); - HRESULT RequestBorderSpace(LPCBORDERWIDTHS); - HRESULT SetBorderSpace(LPCBORDERWIDTHS); - HRESULT SetActiveObject(LPOLEINPLACEACTIVEOBJECT,LPCOLESTR); + HRESULT GetBorder(LPRECT); + HRESULT RequestBorderSpace(LPCBORDERWIDTHS); + HRESULT SetBorderSpace(LPCBORDERWIDTHS); + HRESULT SetActiveObject(LPOLEINPLACEACTIVEOBJECT,LPCOLESTR); } alias IOleInPlaceUIWindow LPOLEINPLACEUIWINDOW; interface IOleInPlaceObject : IOleWindow { - HRESULT InPlaceDeactivate(); - HRESULT UIDeactivate(); - HRESULT SetObjectRects(LPCRECT,LPCRECT); - HRESULT ReactivateAndUndo(); + HRESULT InPlaceDeactivate(); + HRESULT UIDeactivate(); + HRESULT SetObjectRects(LPCRECT,LPCRECT); + HRESULT ReactivateAndUndo(); } interface IOleInPlaceActiveObject : IOleWindow { - HRESULT TranslateAccelerator(LPMSG); - HRESULT OnFrameWindowActivate(BOOL); - HRESULT OnDocWindowActivate(BOOL); - HRESULT ResizeBorder(LPCRECT,LPOLEINPLACEUIWINDOW,BOOL); - HRESULT EnableModeless(BOOL); + HRESULT TranslateAccelerator(LPMSG); + HRESULT OnFrameWindowActivate(BOOL); + HRESULT OnDocWindowActivate(BOOL); + HRESULT ResizeBorder(LPCRECT,LPOLEINPLACEUIWINDOW,BOOL); + HRESULT EnableModeless(BOOL); } alias IOleInPlaceActiveObject LPOLEINPLACEACTIVEOBJECT; interface IOleInPlaceFrame : IOleInPlaceUIWindow { - HRESULT InsertMenus(HMENU,LPOLEMENUGROUPWIDTHS); - HRESULT SetMenu(HMENU,HOLEMENU,HWND); - HRESULT RemoveMenus(HMENU); - HRESULT SetStatusText(LPCOLESTR); - HRESULT EnableModeless(BOOL); - HRESULT TranslateAccelerator(LPMSG,WORD); + HRESULT InsertMenus(HMENU,LPOLEMENUGROUPWIDTHS); + HRESULT SetMenu(HMENU,HOLEMENU,HWND); + HRESULT RemoveMenus(HMENU); + HRESULT SetStatusText(LPCOLESTR); + HRESULT EnableModeless(BOOL); + HRESULT TranslateAccelerator(LPMSG,WORD); } alias IOleInPlaceFrame LPOLEINPLACEFRAME; interface IOleInPlaceSite : IOleWindow { - HRESULT CanInPlaceActivate(); - HRESULT OnInPlaceActivate(); - HRESULT OnUIActivate(); - HRESULT GetWindowContext(IOleInPlaceFrame,IOleInPlaceUIWindow,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO); - HRESULT Scroll(SIZE); - HRESULT OnUIDeactivate(BOOL); - HRESULT OnInPlaceDeactivate(); - HRESULT DiscardUndoState(); - HRESULT DeactivateAndUndo(); - HRESULT OnPosRectChange(LPCRECT); + HRESULT CanInPlaceActivate(); + HRESULT OnInPlaceActivate(); + HRESULT OnUIActivate(); + HRESULT GetWindowContext(IOleInPlaceFrame,IOleInPlaceUIWindow,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO); + HRESULT Scroll(SIZE); + HRESULT OnUIDeactivate(BOOL); + HRESULT OnInPlaceDeactivate(); + HRESULT DiscardUndoState(); + HRESULT DeactivateAndUndo(); + HRESULT OnPosRectChange(LPCRECT); } interface IOleAdviseHolder : IUnknown { - HRESULT Advise(LPADVISESINK,PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumAdvise(LPENUMSTATDATA*); - HRESULT SendOnRename(LPMONIKER); - HRESULT SendOnSave(); - HRESULT SendOnClose(); + HRESULT Advise(LPADVISESINK,PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(LPENUMSTATDATA*); + HRESULT SendOnRename(LPMONIKER); + HRESULT SendOnSave(); + HRESULT SendOnClose(); } alias IOleAdviseHolder LPOLEADVISEHOLDER; interface IDropSource : IUnknown { - HRESULT QueryContinueDrag(BOOL,DWORD); - HRESULT GiveFeedback(DWORD); + HRESULT QueryContinueDrag(BOOL,DWORD); + HRESULT GiveFeedback(DWORD); } alias IDropSource LPDROPSOURCE; interface IDropTarget : IUnknown { - HRESULT DragEnter(LPDATAOBJECT,DWORD,POINTL,PDWORD); - HRESULT DragOver(DWORD,POINTL,PDWORD); - HRESULT DragLeave(); - HRESULT Drop(LPDATAOBJECT,DWORD,POINTL,PDWORD); + HRESULT DragEnter(LPDATAOBJECT,DWORD,POINTL,PDWORD); + HRESULT DragOver(DWORD,POINTL,PDWORD); + HRESULT DragLeave(); + HRESULT Drop(LPDATAOBJECT,DWORD,POINTL,PDWORD); } alias IDropTarget LPDROPTARGET; extern (Windows) { - alias BOOL function(DWORD) __IView_pfncont; + alias BOOL function(DWORD) __IView_pfncont; } interface IViewObject : IUnknown { - HRESULT Draw(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD); - HRESULT GetColorSet(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*); - HRESULT Freeze(DWORD,LONG,PVOID,PDWORD); - HRESULT Unfreeze(DWORD); - HRESULT SetAdvise(DWORD,DWORD,IAdviseSink); - HRESULT GetAdvise(PDWORD,PDWORD,IAdviseSink*); + HRESULT Draw(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD); + HRESULT GetColorSet(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*); + HRESULT Freeze(DWORD,LONG,PVOID,PDWORD); + HRESULT Unfreeze(DWORD); + HRESULT SetAdvise(DWORD,DWORD,IAdviseSink); + HRESULT GetAdvise(PDWORD,PDWORD,IAdviseSink*); } alias IViewObject LPVIEWOBJECT; interface IViewObject2 : IViewObject { - HRESULT GetExtent(DWORD,LONG,DVTARGETDEVICE*,LPSIZEL); + HRESULT GetExtent(DWORD,LONG,DVTARGETDEVICE*,LPSIZEL); } alias IViewObject2 LPVIEWOBJECT2; interface IOleCache : IUnknown { - HRESULT Cache(FORMATETC*,DWORD,DWORD*); - HRESULT Uncache(DWORD); - HRESULT EnumCache(IEnumSTATDATA*); - HRESULT InitCache(LPDATAOBJECT); - HRESULT SetData(FORMATETC*,STGMEDIUM*,BOOL); + HRESULT Cache(FORMATETC*,DWORD,DWORD*); + HRESULT Uncache(DWORD); + HRESULT EnumCache(IEnumSTATDATA*); + HRESULT InitCache(LPDATAOBJECT); + HRESULT SetData(FORMATETC*,STGMEDIUM*,BOOL); } alias IOleCache LPOLECACHE; interface IOleCache2 : IOleCache { - HRESULT UpdateCache(LPDATAOBJECT,DWORD,LPVOID); - HRESULT DiscardCache(DWORD); + HRESULT UpdateCache(LPDATAOBJECT,DWORD,LPVOID); + HRESULT DiscardCache(DWORD); } alias IOleCache2 LPOLECACHE2; interface IOleCacheControl : IUnknown { - HRESULT OnRun(LPDATAOBJECT); - HRESULT OnStop(); + HRESULT OnRun(LPDATAOBJECT); + HRESULT OnStop(); } alias IOleCacheControl LPOLECACHECONTROL; diff --git a/src/core/sys/windows/pbt.d b/src/core/sys/windows/pbt.d index aad9240375..88f926217e 100644 --- a/src/core/sys/windows/pbt.d +++ b/src/core/sys/windows/pbt.d @@ -12,18 +12,18 @@ module core.sys.windows.pbt; private import core.sys.windows.windef; enum : WPARAM { - PBT_APMQUERYSUSPEND, - PBT_APMQUERYSTANDBY, - PBT_APMQUERYSUSPENDFAILED, - PBT_APMQUERYSTANDBYFAILED, - PBT_APMSUSPEND, - PBT_APMSTANDBY, - PBT_APMRESUMECRITICAL, - PBT_APMRESUMESUSPEND, - PBT_APMRESUMESTANDBY, - PBT_APMBATTERYLOW, - PBT_APMPOWERSTATUSCHANGE, - PBT_APMOEMEVENT // = 11 + PBT_APMQUERYSUSPEND, + PBT_APMQUERYSTANDBY, + PBT_APMQUERYSUSPENDFAILED, + PBT_APMQUERYSTANDBYFAILED, + PBT_APMSUSPEND, + PBT_APMSTANDBY, + PBT_APMRESUMECRITICAL, + PBT_APMRESUMESUSPEND, + PBT_APMRESUMESTANDBY, + PBT_APMBATTERYLOW, + PBT_APMPOWERSTATUSCHANGE, + PBT_APMOEMEVENT // = 11 } const LPARAM PBTF_APMRESUMEFROMFAILURE = 1; diff --git a/src/core/sys/windows/powrprof.d b/src/core/sys/windows/powrprof.d index a1423dd9c8..2e6ebe4e6a 100644 --- a/src/core/sys/windows/powrprof.d +++ b/src/core/sys/windows/powrprof.d @@ -16,63 +16,63 @@ private import core.sys.windows.ntdef; // FIXME: look up Windows version support const ULONG - EnableSysTrayBatteryMeter = 1, - EnableMultiBatteryDisplay = 2, - EnablePasswordLogon = 4, - EnableWakeOnRing = 8, - EnableVideoDimDisplay = 16; + EnableSysTrayBatteryMeter = 1, + EnableMultiBatteryDisplay = 2, + EnablePasswordLogon = 4, + EnableWakeOnRing = 8, + EnableVideoDimDisplay = 16; const UINT NEWSCHEME = -1; struct GLOBAL_MACHINE_POWER_POLICY { - ULONG Revision; - SYSTEM_POWER_STATE LidOpenWakeAc; - SYSTEM_POWER_STATE LidOpenWakeDc; - ULONG BroadcastCapacityResolution; + ULONG Revision; + SYSTEM_POWER_STATE LidOpenWakeAc; + SYSTEM_POWER_STATE LidOpenWakeDc; + ULONG BroadcastCapacityResolution; } alias GLOBAL_MACHINE_POWER_POLICY* PGLOBAL_MACHINE_POWER_POLICY; struct GLOBAL_USER_POWER_POLICY { - ULONG Revision; - POWER_ACTION_POLICY PowerButtonAc; - POWER_ACTION_POLICY PowerButtonDc; - POWER_ACTION_POLICY SleepButtonAc; - POWER_ACTION_POLICY SleepButtonDc; - POWER_ACTION_POLICY LidCloseAc; - POWER_ACTION_POLICY LidCloseDc; - SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; - ULONG GlobalFlags; + ULONG Revision; + POWER_ACTION_POLICY PowerButtonAc; + POWER_ACTION_POLICY PowerButtonDc; + POWER_ACTION_POLICY SleepButtonAc; + POWER_ACTION_POLICY SleepButtonDc; + POWER_ACTION_POLICY LidCloseAc; + POWER_ACTION_POLICY LidCloseDc; + SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; + ULONG GlobalFlags; } alias GLOBAL_USER_POWER_POLICY* PGLOBAL_USER_POWER_POLICY; struct GLOBAL_POWER_POLICY { - GLOBAL_USER_POWER_POLICY user; - GLOBAL_MACHINE_POWER_POLICY mach; + GLOBAL_USER_POWER_POLICY user; + GLOBAL_MACHINE_POWER_POLICY mach; } alias GLOBAL_POWER_POLICY* PGLOBAL_POWER_POLICY; struct MACHINE_POWER_POLICY { - ULONG Revision; - SYSTEM_POWER_STATE MinSleepAc; - SYSTEM_POWER_STATE MinSleepDc; - SYSTEM_POWER_STATE ReducedLatencySleepAc; - SYSTEM_POWER_STATE ReducedLatencySleepDc; - ULONG DozeTimeoutAc; - ULONG DozeTimeoutDc; - ULONG DozeS4TimeoutAc; - ULONG DozeS4TimeoutDc; - UCHAR MinThrottleAc; - UCHAR MinThrottleDc; - UCHAR[2] pad1; - POWER_ACTION_POLICY OverThrottledAc; - POWER_ACTION_POLICY OverThrottledDc; + ULONG Revision; + SYSTEM_POWER_STATE MinSleepAc; + SYSTEM_POWER_STATE MinSleepDc; + SYSTEM_POWER_STATE ReducedLatencySleepAc; + SYSTEM_POWER_STATE ReducedLatencySleepDc; + ULONG DozeTimeoutAc; + ULONG DozeTimeoutDc; + ULONG DozeS4TimeoutAc; + ULONG DozeS4TimeoutDc; + UCHAR MinThrottleAc; + UCHAR MinThrottleDc; + UCHAR[2] pad1; + POWER_ACTION_POLICY OverThrottledAc; + POWER_ACTION_POLICY OverThrottledDc; } alias MACHINE_POWER_POLICY* PMACHINE_POWER_POLICY; struct MACHINE_PROCESSOR_POWER_POLICY { - ULONG Revision; - PROCESSOR_POWER_POLICY ProcessorPolicyAc; - PROCESSOR_POWER_POLICY ProcessorPolicyDc; + ULONG Revision; + PROCESSOR_POWER_POLICY ProcessorPolicyAc; + PROCESSOR_POWER_POLICY ProcessorPolicyDc; } alias MACHINE_PROCESSOR_POWER_POLICY* PMACHINE_PROCESSOR_POWER_POLICY; @@ -103,37 +103,37 @@ struct USER_POWER_POLICY { alias USER_POWER_POLICY* PUSER_POWER_POLICY; struct POWER_POLICY { - USER_POWER_POLICY user; - MACHINE_POWER_POLICY mach; + USER_POWER_POLICY user; + MACHINE_POWER_POLICY mach; } alias POWER_POLICY* PPOWER_POLICY; extern (Windows) { - alias BOOLEAN function(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, - LPARAM) PWRSCHEMESENUMPROC; - alias BOOLEAN function(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN) - PFNNTINITIATEPWRACTION; + alias BOOLEAN function(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, + LPARAM) PWRSCHEMESENUMPROC; + alias BOOLEAN function(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN) + PFNNTINITIATEPWRACTION; - NTSTATUS CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, - PVOID, ULONG); - BOOLEAN CanUserWritePwrScheme(); - BOOLEAN DeletePwrScheme(UINT); - BOOLEAN EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM); - BOOLEAN GetActivePwrScheme(PUINT); - BOOLEAN GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); - BOOLEAN GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES); - BOOLEAN GetPwrDiskSpindownRange(PUINT, PUINT); - BOOLEAN IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY); - BOOLEAN IsPwrHibernateAllowed(); - BOOLEAN IsPwrShutdownAllowed(); - BOOLEAN IsPwrSuspendAllowed(); - BOOLEAN ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY); - BOOLEAN ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); - BOOLEAN ReadPwrScheme(UINT, PPOWER_POLICY); - BOOLEAN SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY); - BOOLEAN SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN); - BOOLEAN WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY); - BOOLEAN WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); - BOOLEAN ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); - BOOLEAN WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY); + NTSTATUS CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, + PVOID, ULONG); + BOOLEAN CanUserWritePwrScheme(); + BOOLEAN DeletePwrScheme(UINT); + BOOLEAN EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM); + BOOLEAN GetActivePwrScheme(PUINT); + BOOLEAN GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES); + BOOLEAN GetPwrDiskSpindownRange(PUINT, PUINT); + BOOLEAN IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY); + BOOLEAN IsPwrHibernateAllowed(); + BOOLEAN IsPwrShutdownAllowed(); + BOOLEAN IsPwrSuspendAllowed(); + BOOLEAN ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY); + BOOLEAN ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); + BOOLEAN ReadPwrScheme(UINT, PPOWER_POLICY); + BOOLEAN SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN); + BOOLEAN WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY); + BOOLEAN WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); + BOOLEAN ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY); } diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d index 386a0d38f6..25375a4b8d 100644 --- a/src/core/sys/windows/prsht.d +++ b/src/core/sys/windows/prsht.d @@ -15,175 +15,175 @@ private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.window const MAXPROPPAGES = 100; enum { - PSP_DEFAULT = 0x00000000, - PSP_DLGINDIRECT = 0x00000001, - PSP_USEHICON = 0x00000002, - PSP_USEICONID = 0x00000004, - PSP_USETITLE = 0x00000008, - PSP_RTLREADING = 0x00000010, - PSP_HASHELP = 0x00000020, - PSP_USEREFPARENT = 0x00000040, - PSP_USECALLBACK = 0x00000080, - PSP_PREMATURE = 0x00000400 + PSP_DEFAULT = 0x00000000, + PSP_DLGINDIRECT = 0x00000001, + PSP_USEHICON = 0x00000002, + PSP_USEICONID = 0x00000004, + PSP_USETITLE = 0x00000008, + PSP_RTLREADING = 0x00000010, + PSP_HASHELP = 0x00000020, + PSP_USEREFPARENT = 0x00000040, + PSP_USECALLBACK = 0x00000080, + PSP_PREMATURE = 0x00000400 } static if (_WIN32_IE >= 0x400) { - enum { - PSP_HIDEHEADER = 0x00000800, - PSP_USEHEADERTITLE = 0x00001000, - PSP_USEHEADERSUBTITLE = 0x00002000 - } + enum { + PSP_HIDEHEADER = 0x00000800, + PSP_USEHEADERTITLE = 0x00001000, + PSP_USEHEADERSUBTITLE = 0x00002000 + } } enum { - PSPCB_RELEASE = 1, - PSPCB_CREATE + PSPCB_RELEASE = 1, + PSPCB_CREATE } enum { - PSH_DEFAULT = 0x00000000, - PSH_PROPTITLE = 0x00000001, - PSH_USEHICON = 0x00000002, - PSH_USEICONID = 0x00000004, - PSH_PROPSHEETPAGE = 0x00000008, - PSH_WIZARDHASFINISH = 0x00000010, - PSH_WIZARD = 0x00000020, - PSH_USEPSTARTPAGE = 0x00000040, - PSH_NOAPPLYNOW = 0x00000080, - PSH_USECALLBACK = 0x00000100, - PSH_HASHELP = 0x00000200, - PSH_MODELESS = 0x00000400, - PSH_RTLREADING = 0x00000800, - PSH_WIZARDCONTEXTHELP = 0x00001000 + PSH_DEFAULT = 0x00000000, + PSH_PROPTITLE = 0x00000001, + PSH_USEHICON = 0x00000002, + PSH_USEICONID = 0x00000004, + PSH_PROPSHEETPAGE = 0x00000008, + PSH_WIZARDHASFINISH = 0x00000010, + PSH_WIZARD = 0x00000020, + PSH_USEPSTARTPAGE = 0x00000040, + PSH_NOAPPLYNOW = 0x00000080, + PSH_USECALLBACK = 0x00000100, + PSH_HASHELP = 0x00000200, + PSH_MODELESS = 0x00000400, + PSH_RTLREADING = 0x00000800, + PSH_WIZARDCONTEXTHELP = 0x00001000 } static if (_WIN32_IE >= 0x400) { - enum { - PSH_WATERMARK = 0x00008000, - PSH_USEHBMWATERMARK = 0x00010000, - PSH_USEHPLWATERMARK = 0x00020000, - PSH_STRETCHWATERMARK = 0x00040000, - PSH_HEADER = 0x00080000, - PSH_USEHBMHEADER = 0x00100000, - PSH_USEPAGELANG = 0x00200000 - } - static if (_WIN32_IE < 0x0500) { - enum { - PSH_WIZARD97 = 0x00002000 - } - } else { - enum { - PSH_WIZARD97 = 0x01000000 - } - } + enum { + PSH_WATERMARK = 0x00008000, + PSH_USEHBMWATERMARK = 0x00010000, + PSH_USEHPLWATERMARK = 0x00020000, + PSH_STRETCHWATERMARK = 0x00040000, + PSH_HEADER = 0x00080000, + PSH_USEHBMHEADER = 0x00100000, + PSH_USEPAGELANG = 0x00200000 + } + static if (_WIN32_IE < 0x0500) { + enum { + PSH_WIZARD97 = 0x00002000 + } + } else { + enum { + PSH_WIZARD97 = 0x01000000 + } + } } static if (_WIN32_IE >= 0x500) { - enum { - PSH_WIZARD_LITE = 0x00400000, - PSH_NOCONTEXTHELP = 0x02000000 - } + enum { + PSH_WIZARD_LITE = 0x00400000, + PSH_NOCONTEXTHELP = 0x02000000 + } } enum { - PSCB_INITIALIZED = 1, - PSCB_PRECREATE + PSCB_INITIALIZED = 1, + PSCB_PRECREATE } enum { - PSN_FIRST = (-200), - PSN_LAST = (-299), - PSN_SETACTIVE = (-200), - PSN_KILLACTIVE = (-201), - PSN_APPLY = (-202), - PSN_RESET = (-203), - PSN_HELP = (-205), - PSN_WIZBACK = (-206), - PSN_WIZNEXT = (-207), - PSN_WIZFINISH = (-208), - PSN_QUERYCANCEL = (-209) + PSN_FIRST = (-200), + PSN_LAST = (-299), + PSN_SETACTIVE = (-200), + PSN_KILLACTIVE = (-201), + PSN_APPLY = (-202), + PSN_RESET = (-203), + PSN_HELP = (-205), + PSN_WIZBACK = (-206), + PSN_WIZNEXT = (-207), + PSN_WIZFINISH = (-208), + PSN_QUERYCANCEL = (-209) } static if (_WIN32_IE >= 0x400) { - enum { - PSN_GETOBJECT = (-210) - } + enum { + PSN_GETOBJECT = (-210) + } } static if (_WIN32_IE >= 0x500) { - enum { - PSN_TRANSLATEACCELERATOR = (-212), - PSN_QUERYINITIALFOCUS = (-213) - } + enum { + PSN_TRANSLATEACCELERATOR = (-212), + PSN_QUERYINITIALFOCUS = (-213) + } } enum { - PSNRET_NOERROR, - PSNRET_INVALID, - PSNRET_INVALID_NOCHANGEPAGE, - PSNRET_MESSAGEHANDLED + PSNRET_NOERROR, + PSNRET_INVALID, + PSNRET_INVALID_NOCHANGEPAGE, + PSNRET_MESSAGEHANDLED } enum { - ID_PSRESTARTWINDOWS = 0x2, - ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 + ID_PSRESTARTWINDOWS = 0x2, + ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 } enum { - WIZ_CXDLG = 276, - WIZ_CYDLG = 140, - WIZ_CXBMP = 80, - WIZ_BODYX = 92, - WIZ_BODYCX = 184 + WIZ_CXDLG = 276, + WIZ_CYDLG = 140, + WIZ_CXBMP = 80, + WIZ_BODYX = 92, + WIZ_BODYCX = 184 } enum { - PROP_SM_CXDLG = 212, - PROP_SM_CYDLG = 188, - PROP_MED_CXDLG = 227, - PROP_MED_CYDLG = 215, - PROP_LG_CXDLG = 252, - PROP_LG_CYDLG = 218 + PROP_SM_CXDLG = 212, + PROP_SM_CYDLG = 188, + PROP_MED_CXDLG = 227, + PROP_MED_CYDLG = 215, + PROP_LG_CXDLG = 252, + PROP_LG_CYDLG = 218 } enum { - PSBTN_BACK, - PSBTN_NEXT, - PSBTN_FINISH, - PSBTN_OK, - PSBTN_APPLYNOW, - PSBTN_CANCEL, - PSBTN_HELP, - PSBTN_MAX = 6 + PSBTN_BACK, + PSBTN_NEXT, + PSBTN_FINISH, + PSBTN_OK, + PSBTN_APPLYNOW, + PSBTN_CANCEL, + PSBTN_HELP, + PSBTN_MAX = 6 } enum { - PSWIZB_BACK = 1, - PSWIZB_NEXT = 2, - PSWIZB_FINISH = 4, - PSWIZB_DISABLEDFINISH = 8 + PSWIZB_BACK = 1, + PSWIZB_NEXT = 2, + PSWIZB_FINISH = 4, + PSWIZB_DISABLEDFINISH = 8 } enum { - PSM_SETCURSEL = WM_USER + 101, - PSM_REMOVEPAGE, - PSM_ADDPAGE, - PSM_CHANGED, - PSM_RESTARTWINDOWS, - PSM_REBOOTSYSTEM, - PSM_CANCELTOCLOSE, - PSM_QUERYSIBLINGS, - PSM_UNCHANGED, - PSM_APPLY, - PSM_SETTITLEA, - PSM_SETWIZBUTTONS, - PSM_PRESSBUTTON, - PSM_SETCURSELID, - PSM_SETFINISHTEXTA, - PSM_GETTABCONTROL, - PSM_ISDIALOGMESSAGE, - PSM_GETCURRENTPAGEHWND, - PSM_INSERTPAGE, - PSM_SETTITLEW, - PSM_SETFINISHTEXTW // = WM_USER + 121, + PSM_SETCURSEL = WM_USER + 101, + PSM_REMOVEPAGE, + PSM_ADDPAGE, + PSM_CHANGED, + PSM_RESTARTWINDOWS, + PSM_REBOOTSYSTEM, + PSM_CANCELTOCLOSE, + PSM_QUERYSIBLINGS, + PSM_UNCHANGED, + PSM_APPLY, + PSM_SETTITLEA, + PSM_SETWIZBUTTONS, + PSM_PRESSBUTTON, + PSM_SETCURSELID, + PSM_SETFINISHTEXTA, + PSM_GETTABCONTROL, + PSM_ISDIALOGMESSAGE, + PSM_GETCURRENTPAGEHWND, + PSM_INSERTPAGE, + PSM_SETTITLEW, + PSM_SETFINISHTEXTW // = WM_USER + 121, } alias UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA; @@ -193,51 +193,51 @@ alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; align(4): struct PROPSHEETPAGEA { - DWORD dwSize = PROPSHEETPAGEA.sizeof; - DWORD dwFlags; - HINSTANCE hInstance; - union { - LPCSTR pszTemplate; - LPCDLGTEMPLATE pResource; - } - union { - HICON hIcon; - LPCSTR pszIcon; - } - LPCSTR pszTitle; - DLGPROC pfnDlgProc; - LPARAM lParam; - LPFNPSPCALLBACKA pfnCallback; - UINT* pcRefParent; - static if (_WIN32_IE >= 0x400) { - LPCSTR pszHeaderTitle; - LPCSTR pszHeaderSubTitle; - } + DWORD dwSize = PROPSHEETPAGEA.sizeof; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCSTR pszTemplate; + LPCDLGTEMPLATE pResource; + } + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKA pfnCallback; + UINT* pcRefParent; + static if (_WIN32_IE >= 0x400) { + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; + } } alias PROPSHEETPAGEA* LPPROPSHEETPAGEA; alias const(PROPSHEETPAGEA)* LPCPROPSHEETPAGEA; struct PROPSHEETPAGEW { - DWORD dwSize = PROPSHEETPAGEW.sizeof; - DWORD dwFlags; - HINSTANCE hInstance; - union { - LPCWSTR pszTemplate; - LPCDLGTEMPLATE pResource; - } - union { - HICON hIcon; - LPCWSTR pszIcon; - } - LPCWSTR pszTitle; - DLGPROC pfnDlgProc; - LPARAM lParam; - LPFNPSPCALLBACKW pfnCallback; - UINT* pcRefParent; - static if (_WIN32_IE >= 0x400) { - LPCWSTR pszHeaderTitle; - LPCWSTR pszHeaderSubTitle; - } + DWORD dwSize = PROPSHEETPAGEW.sizeof; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCWSTR pszTemplate; + LPCDLGTEMPLATE pResource; + } + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKW pfnCallback; + UINT* pcRefParent; + static if (_WIN32_IE >= 0x400) { + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; + } } alias PROPSHEETPAGEW* LPPROPSHEETPAGEW; alias const(PROPSHEETPAGEW)* LPCPROPSHEETPAGEW; @@ -245,71 +245,71 @@ alias const(PROPSHEETPAGEW)* LPCPROPSHEETPAGEW; mixin DECLARE_HANDLE!("HPROPSHEETPAGE"); struct PROPSHEETHEADERA { - DWORD dwSize = PROPSHEETHEADERA.sizeof; - DWORD dwFlags; - HWND hwndParent; - HINSTANCE hInstance; - union { - HICON hIcon; - LPCSTR pszIcon; - } - LPCSTR pszCaption; - UINT nPages; - union { - UINT nStartPage; - LPCSTR pStartPage; - } - union { - LPCPROPSHEETPAGEA ppsp; - HPROPSHEETPAGE* phpage; - } - PFNPROPSHEETCALLBACK pfnCallback; - static if (_WIN32_IE >= 0x400) { - union { - HBITMAP hbmWatermark; - LPCSTR pszbmWatermark; - } - HPALETTE hplWatermark; - union { - HBITMAP hbmHeader; - LPCSTR pszbmHeader; - } - } + DWORD dwSize = PROPSHEETHEADERA.sizeof; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszCaption; + UINT nPages; + union { + UINT nStartPage; + LPCSTR pStartPage; + } + union { + LPCPROPSHEETPAGEA ppsp; + HPROPSHEETPAGE* phpage; + } + PFNPROPSHEETCALLBACK pfnCallback; + static if (_WIN32_IE >= 0x400) { + union { + HBITMAP hbmWatermark; + LPCSTR pszbmWatermark; + } + HPALETTE hplWatermark; + union { + HBITMAP hbmHeader; + LPCSTR pszbmHeader; + } + } } alias PROPSHEETHEADERA* LPPROPSHEETHEADERA; alias const(PROPSHEETHEADERA)* LPCPROPSHEETHEADERA; struct PROPSHEETHEADERW { - DWORD dwSize = PROPSHEETHEADERW.sizeof; - DWORD dwFlags; - HWND hwndParent; - HINSTANCE hInstance; - union { - HICON hIcon; - LPCWSTR pszIcon; - } - LPCWSTR pszCaption; - UINT nPages; - union { - UINT nStartPage; - LPCWSTR pStartPage; - } - union { - LPCPROPSHEETPAGEW ppsp; - HPROPSHEETPAGE* phpage; - } - PFNPROPSHEETCALLBACK pfnCallback; - static if (_WIN32_IE >= 0x400) { - union { - HBITMAP hbmWatermark; - LPCWSTR pszbmWatermark; - } - HPALETTE hplWatermark; - union { - HBITMAP hbmHeader; - LPCWSTR pszbmHeader; - } - } + DWORD dwSize = PROPSHEETHEADERW.sizeof; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszCaption; + UINT nPages; + union { + UINT nStartPage; + LPCWSTR pStartPage; + } + union { + LPCPROPSHEETPAGEW ppsp; + HPROPSHEETPAGE* phpage; + } + PFNPROPSHEETCALLBACK pfnCallback; + static if (_WIN32_IE >= 0x400) { + union { + HBITMAP hbmWatermark; + LPCWSTR pszbmWatermark; + } + HPALETTE hplWatermark; + union { + HBITMAP hbmHeader; + LPCWSTR pszbmHeader; + } + } } alias PROPSHEETHEADERW* LPPROPSHEETHEADERW; alias const(PROPSHEETHEADERW)* LPCPROPSHEETHEADERW; @@ -319,123 +319,123 @@ alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGES; struct PSHNOTIFY { - NMHDR hdr; - LPARAM lParam; + NMHDR hdr; + LPARAM lParam; } alias PSHNOTIFY* LPPSHNOTIFY; extern (Windows) { - HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA); - HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW); - BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); - int PropertySheetA(LPCPROPSHEETHEADERA); - int PropertySheetW(LPCPROPSHEETHEADERW); + HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA); + HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW); + BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); + int PropertySheetA(LPCPROPSHEETHEADERA); + int PropertySheetW(LPCPROPSHEETHEADERW); } version (Unicode) { - alias LPFNPSPCALLBACKW LPFNPSPCALLBACK; - alias PROPSHEETPAGEW PROPSHEETPAGE; - alias LPPROPSHEETPAGEW LPPROPSHEETPAGE; - alias LPCPROPSHEETPAGEW LPCPROPSHEETPAGE; - alias PROPSHEETHEADERW PROPSHEETHEADER; - alias LPPROPSHEETHEADERW LPPROPSHEETHEADER; - alias LPCPROPSHEETHEADERW LPCPROPSHEETHEADER; - alias PSM_SETTITLEW PSM_SETTITLE; - alias PSM_SETFINISHTEXTW PSM_SETFINISHTEXT; - alias CreatePropertySheetPageW CreatePropertySheetPage; - alias PropertySheetW PropertySheet; + alias LPFNPSPCALLBACKW LPFNPSPCALLBACK; + alias PROPSHEETPAGEW PROPSHEETPAGE; + alias LPPROPSHEETPAGEW LPPROPSHEETPAGE; + alias LPCPROPSHEETPAGEW LPCPROPSHEETPAGE; + alias PROPSHEETHEADERW PROPSHEETHEADER; + alias LPPROPSHEETHEADERW LPPROPSHEETHEADER; + alias LPCPROPSHEETHEADERW LPCPROPSHEETHEADER; + alias PSM_SETTITLEW PSM_SETTITLE; + alias PSM_SETFINISHTEXTW PSM_SETFINISHTEXT; + alias CreatePropertySheetPageW CreatePropertySheetPage; + alias PropertySheetW PropertySheet; } else { - alias LPFNPSPCALLBACKA LPFNPSPCALLBACK; - alias PROPSHEETPAGEA PROPSHEETPAGE; - alias LPPROPSHEETPAGEA LPPROPSHEETPAGE; - alias LPCPROPSHEETPAGEA LPCPROPSHEETPAGE; - alias PROPSHEETHEADERA PROPSHEETHEADER; - alias LPPROPSHEETHEADERA LPPROPSHEETHEADER; - alias LPCPROPSHEETHEADERA LPCPROPSHEETHEADER; - alias PSM_SETTITLEA PSM_SETTITLE; - alias PSM_SETFINISHTEXTA PSM_SETFINISHTEXT; - alias CreatePropertySheetPageA CreatePropertySheetPage; - alias PropertySheetA PropertySheet; + alias LPFNPSPCALLBACKA LPFNPSPCALLBACK; + alias PROPSHEETPAGEA PROPSHEETPAGE; + alias LPPROPSHEETPAGEA LPPROPSHEETPAGE; + alias LPCPROPSHEETPAGEA LPCPROPSHEETPAGE; + alias PROPSHEETHEADERA PROPSHEETHEADER; + alias LPPROPSHEETHEADERA LPPROPSHEETHEADER; + alias LPCPROPSHEETHEADERA LPCPROPSHEETHEADER; + alias PSM_SETTITLEA PSM_SETTITLE; + alias PSM_SETFINISHTEXTA PSM_SETFINISHTEXT; + alias CreatePropertySheetPageA CreatePropertySheetPage; + alias PropertySheetA PropertySheet; } BOOL PropSheet_SetCurSel(HWND hPropSheetDlg, HPROPSHEETPAGE hpage, - HPROPSHEETPAGE index) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSEL, - cast(WPARAM) index, cast(LPARAM) hpage); + HPROPSHEETPAGE index) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSEL, + cast(WPARAM) index, cast(LPARAM) hpage); } VOID PropSheet_RemovePage(HWND hPropSheetDlg, int index, HPROPSHEETPAGE hpage) { - SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, index, cast(LPARAM) hpage); + SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, index, cast(LPARAM) hpage); } BOOL PropSheet_AddPage(HWND hPropSheetDlg, HPROPSHEETPAGE hpage) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_ADDPAGE, - 0, cast(LPARAM) hpage); + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_ADDPAGE, + 0, cast(LPARAM) hpage); } VOID PropSheet_Changed(HWND hPropSheetDlg, HWND hwndPage) { - SendMessage(hPropSheetDlg, PSM_CHANGED, cast(WPARAM) hwndPage, 0); + SendMessage(hPropSheetDlg, PSM_CHANGED, cast(WPARAM) hwndPage, 0); } VOID PropSheet_RestartWindows(HWND hPropSheetDlg) { - SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0); + SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0); } VOID PropSheet_RebootSystem(HWND hPropSheetDlg) { - SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0); + SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0); } VOID PropSheet_CancelToClose(HWND hPropSheetDlg) { - SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0); + SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0); } int PropSheet_QuerySiblings(HWND hPropSheetDlg, WPARAM param1, LPARAM param2) { - return cast(int) SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, param1, param2); + return cast(int) SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, param1, param2); } VOID PropSheet_UnChanged(HWND hPropSheetDlg, HWND hwndPage) { - SendMessage(hPropSheetDlg, PSM_UNCHANGED, cast(WPARAM) hwndPage, 0); + SendMessage(hPropSheetDlg, PSM_UNCHANGED, cast(WPARAM) hwndPage, 0); } BOOL PropSheet_Apply(HWND hPropSheetDlg) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0); + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0); } VOID PropSheet_SetTitle(HWND hPropSheetDlg, DWORD wStyle, LPTSTR lpszText) { - SendMessage(hPropSheetDlg, PSM_SETTITLE, wStyle, cast(LPARAM) lpszText); + SendMessage(hPropSheetDlg, PSM_SETTITLE, wStyle, cast(LPARAM) lpszText); } VOID PropSheet_SetWizButtons(HWND hPropSheetDlg, DWORD dwFlags) { - PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, cast(LPARAM) dwFlags); + PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, cast(LPARAM) dwFlags); } BOOL PropSheet_PressButton(HWND hPropSheetDlg, int iButton) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, iButton, 0); + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, iButton, 0); } BOOL PropSheet_SetCurSelByID(HWND hPropSheetDlg, int id) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, id); + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, id); } VOID PropSheet_SetFinishText(HWND hPropSheetDlg, LPTSTR lpszText) { - SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast(LPARAM) lpszText); + SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast(LPARAM) lpszText); } HWND PropSheet_GetTabControl(HWND hPropSheetDlg) { - return cast(HWND) SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0); + return cast(HWND) SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0); } BOOL PropSheet_IsDialogMessage(HWND hDlg, LPMSG pMsg) { - return cast(BOOL) SendMessage(hDlg, PSM_ISDIALOGMESSAGE, - 0, cast(LPARAM) pMsg); + return cast(BOOL) SendMessage(hDlg, PSM_ISDIALOGMESSAGE, + 0, cast(LPARAM) pMsg); } HWND PropSheet_GetCurrentPageHwnd(HWND hDlg) { - return cast(HWND) SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0); + return cast(HWND) SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0); } BOOL PropSheet_InsertPage(HWND hPropSheetDlg, WPARAM wInsertAfter, - HPROPSHEETPAGE hpage) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_INSERTPAGE, - wInsertAfter, cast(LPARAM) hpage); + HPROPSHEETPAGE hpage) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_INSERTPAGE, + wInsertAfter, cast(LPARAM) hpage); } diff --git a/src/core/sys/windows/psapi.d b/src/core/sys/windows/psapi.d index 6874c9e5bd..66c8325945 100644 --- a/src/core/sys/windows/psapi.d +++ b/src/core/sys/windows/psapi.d @@ -18,140 +18,140 @@ private import core.sys.windows.winbase; private import core.sys.windows.windef; struct MODULEINFO { - LPVOID lpBaseOfDll; - DWORD SizeOfImage; - LPVOID EntryPoint; + LPVOID lpBaseOfDll; + DWORD SizeOfImage; + LPVOID EntryPoint; } alias MODULEINFO* LPMODULEINFO; struct PSAPI_WS_WATCH_INFORMATION { - LPVOID FaultingPc; - LPVOID FaultingVa; + LPVOID FaultingPc; + LPVOID FaultingVa; } alias PSAPI_WS_WATCH_INFORMATION* PPSAPI_WS_WATCH_INFORMATION; struct PSAPI_WS_WATCH_INFORMATION_EX { - PSAPI_WS_WATCH_INFORMATION BasicInfo; - ULONG_PTR FaultingThreadId; - ULONG_PTR Flags; + PSAPI_WS_WATCH_INFORMATION BasicInfo; + ULONG_PTR FaultingThreadId; + ULONG_PTR Flags; } alias PSAPI_WS_WATCH_INFORMATION_EX* PPSAPI_WS_WATCH_INFORMATION_EX; struct PROCESS_MEMORY_COUNTERS { - DWORD cb; - DWORD PageFaultCount; - DWORD PeakWorkingSetSize; - DWORD WorkingSetSize; - DWORD QuotaPeakPagedPoolUsage; - DWORD QuotaPagedPoolUsage; - DWORD QuotaPeakNonPagedPoolUsage; - DWORD QuotaNonPagedPoolUsage; - DWORD PagefileUsage; - DWORD PeakPagefileUsage; + DWORD cb; + DWORD PageFaultCount; + DWORD PeakWorkingSetSize; + DWORD WorkingSetSize; + DWORD QuotaPeakPagedPoolUsage; + DWORD QuotaPagedPoolUsage; + DWORD QuotaPeakNonPagedPoolUsage; + DWORD QuotaNonPagedPoolUsage; + DWORD PagefileUsage; + DWORD PeakPagefileUsage; } alias PROCESS_MEMORY_COUNTERS* PPROCESS_MEMORY_COUNTERS; struct PERFORMANCE_INFORMATION { - DWORD cb; - SIZE_T CommitTotal; - SIZE_T CommitLimit; - SIZE_T CommitPeak; - SIZE_T PhysicalTotal; - SIZE_T PhysicalAvailable; - SIZE_T SystemCache; - SIZE_T KernelTotal; - SIZE_T KernelPaged; - SIZE_T KernelNonpaged; - SIZE_T PageSize; - DWORD HandleCount; - DWORD ProcessCount; - DWORD ThreadCount; + DWORD cb; + SIZE_T CommitTotal; + SIZE_T CommitLimit; + SIZE_T CommitPeak; + SIZE_T PhysicalTotal; + SIZE_T PhysicalAvailable; + SIZE_T SystemCache; + SIZE_T KernelTotal; + SIZE_T KernelPaged; + SIZE_T KernelNonpaged; + SIZE_T PageSize; + DWORD HandleCount; + DWORD ProcessCount; + DWORD ThreadCount; } alias PERFORMANCE_INFORMATION* PPERFORMANCE_INFORMATION; struct ENUM_PAGE_FILE_INFORMATION { - DWORD cb; - DWORD Reserved; - SIZE_T TotalSize; - SIZE_T TotalInUse; - SIZE_T PeakUsage; + DWORD cb; + DWORD Reserved; + SIZE_T TotalSize; + SIZE_T TotalInUse; + SIZE_T PeakUsage; } alias ENUM_PAGE_FILE_INFORMATION* PENUM_PAGE_FILE_INFORMATION; /* application-defined callback function used with the EnumPageFiles() * http://windowssdk.msdn.microsoft.com/library/ms682627.aspx */ version (Unicode) { - alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR) - PENUM_PAGE_FILE_CALLBACK; + alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR) + PENUM_PAGE_FILE_CALLBACK; } else { - alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR) - PENUM_PAGE_FILE_CALLBACK; + alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR) + PENUM_PAGE_FILE_CALLBACK; } // Grouped by application, not in alphabetical order. extern (Windows) { - /* Process Information - * http://windowssdk.msdn.microsoft.com/library/ms684870.aspx */ - BOOL EnumProcesses(DWORD*, DWORD, DWORD*); /* NT/2000/XP/Server2003/Vista/Longhorn */ - DWORD GetProcessImageFileNameA(HANDLE, LPSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ - DWORD GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ - - /* Module Information - * http://windowssdk.msdn.microsoft.com/library/ms684232.aspx */ - BOOL EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD); - BOOL EnumProcessModulesEx(HANDLE, HMODULE*, DWORD, LPDWORD, DWORD); /* Vista/Longhorn */ - DWORD GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD); - DWORD GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD); - DWORD GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD); - DWORD GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD); - BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD); - - /* Device Driver Information - * http://windowssdk.msdn.microsoft.com/library/ms682578.aspx */ - BOOL EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD); - DWORD GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD); - DWORD GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD); - DWORD GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD); - DWORD GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD); - - /* Process Memory Usage Information - * http://windowssdk.msdn.microsoft.com/library/ms684879.aspx */ - BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD); - - /* Working Set Information - * http://windowssdk.msdn.microsoft.com/library/ms687398.aspx */ - BOOL EmptyWorkingSet(HANDLE); - BOOL GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD); - BOOL GetWsChangesEx(HANDLE, PPSAPI_WS_WATCH_INFORMATION_EX, DWORD); /* Vista/Longhorn */ - BOOL InitializeProcessForWsWatch(HANDLE); - BOOL QueryWorkingSet(HANDLE, PVOID, DWORD); - BOOL QueryWorkingSetEx(HANDLE, PVOID, DWORD); - - /* Memory-Mapped File Information - * http://windowssdk.msdn.microsoft.com/library/ms684212.aspx */ - DWORD GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD); - DWORD GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD); - - /* Resources Information */ - BOOL GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD); /* XP/Server2003/Vista/Longhorn */ - BOOL EnumPageFilesW(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ - BOOL EnumPageFilesA(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ + /* Process Information + * http://windowssdk.msdn.microsoft.com/library/ms684870.aspx */ + BOOL EnumProcesses(DWORD*, DWORD, DWORD*); /* NT/2000/XP/Server2003/Vista/Longhorn */ + DWORD GetProcessImageFileNameA(HANDLE, LPSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ + DWORD GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ + + /* Module Information + * http://windowssdk.msdn.microsoft.com/library/ms684232.aspx */ + BOOL EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD); + BOOL EnumProcessModulesEx(HANDLE, HMODULE*, DWORD, LPDWORD, DWORD); /* Vista/Longhorn */ + DWORD GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD); + DWORD GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD); + DWORD GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD); + DWORD GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD); + BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD); + + /* Device Driver Information + * http://windowssdk.msdn.microsoft.com/library/ms682578.aspx */ + BOOL EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD); + DWORD GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD); + DWORD GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD); + DWORD GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD); + DWORD GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD); + + /* Process Memory Usage Information + * http://windowssdk.msdn.microsoft.com/library/ms684879.aspx */ + BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD); + + /* Working Set Information + * http://windowssdk.msdn.microsoft.com/library/ms687398.aspx */ + BOOL EmptyWorkingSet(HANDLE); + BOOL GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD); + BOOL GetWsChangesEx(HANDLE, PPSAPI_WS_WATCH_INFORMATION_EX, DWORD); /* Vista/Longhorn */ + BOOL InitializeProcessForWsWatch(HANDLE); + BOOL QueryWorkingSet(HANDLE, PVOID, DWORD); + BOOL QueryWorkingSetEx(HANDLE, PVOID, DWORD); + + /* Memory-Mapped File Information + * http://windowssdk.msdn.microsoft.com/library/ms684212.aspx */ + DWORD GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD); + DWORD GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD); + + /* Resources Information */ + BOOL GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD); /* XP/Server2003/Vista/Longhorn */ + BOOL EnumPageFilesW(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ + BOOL EnumPageFilesA(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ } version (Unicode) { - alias GetModuleBaseNameW GetModuleBaseName; - alias GetModuleFileNameExW GetModuleFileNameEx; - alias GetMappedFileNameW GetMappedFileName; - alias GetDeviceDriverBaseNameW GetDeviceDriverBaseName; - alias GetDeviceDriverFileNameW GetDeviceDriverFileName; - alias EnumPageFilesW EnumPageFiles; - alias GetProcessImageFileNameW GetProcessImageFileName; + alias GetModuleBaseNameW GetModuleBaseName; + alias GetModuleFileNameExW GetModuleFileNameEx; + alias GetMappedFileNameW GetMappedFileName; + alias GetDeviceDriverBaseNameW GetDeviceDriverBaseName; + alias GetDeviceDriverFileNameW GetDeviceDriverFileName; + alias EnumPageFilesW EnumPageFiles; + alias GetProcessImageFileNameW GetProcessImageFileName; } else { - alias GetModuleBaseNameA GetModuleBaseName; - alias GetModuleFileNameExA GetModuleFileNameEx; - alias GetMappedFileNameA GetMappedFileName; - alias GetDeviceDriverBaseNameA GetDeviceDriverBaseName; - alias GetDeviceDriverFileNameA GetDeviceDriverFileName; - alias EnumPageFilesA EnumPageFiles; - alias GetProcessImageFileNameA GetProcessImageFileName; + alias GetModuleBaseNameA GetModuleBaseName; + alias GetModuleFileNameExA GetModuleFileNameEx; + alias GetMappedFileNameA GetMappedFileName; + alias GetDeviceDriverBaseNameA GetDeviceDriverBaseName; + alias GetDeviceDriverFileNameA GetDeviceDriverFileName; + alias EnumPageFilesA EnumPageFiles; + alias GetProcessImageFileNameA GetProcessImageFileName; } diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index fbbd5b005b..da6841541d 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -75,19 +75,19 @@ const RASFP_Slip = 0x00000002; const RASFP_Ras = 0x00000004; const TCHAR[] - RASDT_Modem = "modem", - RASDT_Isdn = "isdn", - RASDT_X25 = "x25", - RASDT_Vpn = "vpn", - RASDT_Pad = "pad", - RASDT_Generic = "GENERIC", - RASDT_Serial = "SERIAL", - RASDT_FrameRelay = "FRAMERELAY", - RASDT_Atm = "ATM", - RASDT_Sonet = "SONET", - RASDT_SW56 = "SW56", - RASDT_Irda = "IRDA", - RASDT_Parallel = "PARALLEL"; + RASDT_Modem = "modem", + RASDT_Isdn = "isdn", + RASDT_X25 = "x25", + RASDT_Vpn = "vpn", + RASDT_Pad = "pad", + RASDT_Generic = "GENERIC", + RASDT_Serial = "SERIAL", + RASDT_FrameRelay = "FRAMERELAY", + RASDT_Atm = "ATM", + RASDT_Sonet = "SONET", + RASDT_SW56 = "SW56", + RASDT_Irda = "IRDA", + RASDT_Parallel = "PARALLEL"; const RASET_Phone = 1; const RASET_Vpn = 2; @@ -95,128 +95,128 @@ const RASET_Direct = 3; const RASET_Internet = 4; static if (_WIN32_WINNT >= 0x401) { - const RASEO_SecureLocalFiles = 0x00010000; - const RASCN_Connection = 0x00000001; - const RASCN_Disconnection = 0x00000002; - const RASCN_BandwidthAdded = 0x00000004; - const RASCN_BandwidthRemoved = 0x00000008; - const RASEDM_DialAll = 1; - const RASEDM_DialAsNeeded = 2; - const RASIDS_Disabled = 0xffffffff; - const RASIDS_UseGlobalValue = 0; - const RASADFLG_PositionDlg = 0x00000001; - const RASCM_UserName = 0x00000001; - const RASCM_Password = 0x00000002; - const RASCM_Domain = 0x00000004; - const RASADP_DisableConnectionQuery = 0; - const RASADP_LoginSessionDisable = 1; - const RASADP_SavedAddressesLimit = 2; - const RASADP_FailedConnectionTimeout = 3; - const RASADP_ConnectionQueryTimeout = 4; + const RASEO_SecureLocalFiles = 0x00010000; + const RASCN_Connection = 0x00000001; + const RASCN_Disconnection = 0x00000002; + const RASCN_BandwidthAdded = 0x00000004; + const RASCN_BandwidthRemoved = 0x00000008; + const RASEDM_DialAll = 1; + const RASEDM_DialAsNeeded = 2; + const RASIDS_Disabled = 0xffffffff; + const RASIDS_UseGlobalValue = 0; + const RASADFLG_PositionDlg = 0x00000001; + const RASCM_UserName = 0x00000001; + const RASCM_Password = 0x00000002; + const RASCM_Domain = 0x00000004; + const RASADP_DisableConnectionQuery = 0; + const RASADP_LoginSessionDisable = 1; + const RASADP_SavedAddressesLimit = 2; + const RASADP_FailedConnectionTimeout = 3; + const RASADP_ConnectionQueryTimeout = 4; } //static if (_WIN32_WINNT >= 0x500) { - const RDEOPT_CustomDial = 0x00001000; - const RASLCPAP_PAP = 0xC023; - const RASLCPAP_SPAP = 0xC027; - const RASLCPAP_CHAP = 0xC223; - const RASLCPAP_EAP = 0xC227; - const RASLCPAD_CHAP_MD5 = 0x05; - const RASLCPAD_CHAP_MS = 0x80; - const RASLCPAD_CHAP_MSV2 = 0x81; - const RASLCPO_PFC = 0x00000001; - const RASLCPO_ACFC = 0x00000002; - const RASLCPO_SSHF = 0x00000004; - const RASLCPO_DES_56 = 0x00000008; - const RASLCPO_3_DES = 0x00000010; - - const RASCCPCA_MPPC = 0x00000006; - const RASCCPCA_STAC = 0x00000005; - - const RASCCPO_Compression = 0x00000001; - const RASCCPO_HistoryLess = 0x00000002; - const RASCCPO_Encryption56bit = 0x00000010; - const RASCCPO_Encryption40bit = 0x00000020; - const RASCCPO_Encryption128bit = 0x00000040; - - const RASEO_RequireEAP = 0x00020000; - const RASEO_RequirePAP = 0x00040000; - const RASEO_RequireSPAP = 0x00080000; - const RASEO_Custom = 0x00100000; - const RASEO_PreviewPhoneNumber = 0x00200000; - const RASEO_SharedPhoneNumbers = 0x00800000; - const RASEO_PreviewUserPw = 0x01000000; - const RASEO_PreviewDomain = 0x02000000; - const RASEO_ShowDialingProgress = 0x04000000; - const RASEO_RequireCHAP = 0x08000000; - const RASEO_RequireMsCHAP = 0x10000000; - const RASEO_RequireMsCHAP2 = 0x20000000; - const RASEO_RequireW95MSCHAP = 0x40000000; - const RASEO_CustomScript = 0x80000000; - - const RASIPO_VJ = 0x00000001; - const RCD_SingleUser = 0; - const RCD_AllUsers = 0x00000001; - const RCD_Eap = 0x00000002; - const RASEAPF_NonInteractive = 0x00000002; - const RASEAPF_Logon = 0x00000004; - const RASEAPF_Preview = 0x00000008; - const ET_40Bit = 1; - const ET_128Bit = 2; - const ET_None = 0; - const ET_Require = 1; - const ET_RequireMax = 2; - const ET_Optional = 3; + const RDEOPT_CustomDial = 0x00001000; + const RASLCPAP_PAP = 0xC023; + const RASLCPAP_SPAP = 0xC027; + const RASLCPAP_CHAP = 0xC223; + const RASLCPAP_EAP = 0xC227; + const RASLCPAD_CHAP_MD5 = 0x05; + const RASLCPAD_CHAP_MS = 0x80; + const RASLCPAD_CHAP_MSV2 = 0x81; + const RASLCPO_PFC = 0x00000001; + const RASLCPO_ACFC = 0x00000002; + const RASLCPO_SSHF = 0x00000004; + const RASLCPO_DES_56 = 0x00000008; + const RASLCPO_3_DES = 0x00000010; + + const RASCCPCA_MPPC = 0x00000006; + const RASCCPCA_STAC = 0x00000005; + + const RASCCPO_Compression = 0x00000001; + const RASCCPO_HistoryLess = 0x00000002; + const RASCCPO_Encryption56bit = 0x00000010; + const RASCCPO_Encryption40bit = 0x00000020; + const RASCCPO_Encryption128bit = 0x00000040; + + const RASEO_RequireEAP = 0x00020000; + const RASEO_RequirePAP = 0x00040000; + const RASEO_RequireSPAP = 0x00080000; + const RASEO_Custom = 0x00100000; + const RASEO_PreviewPhoneNumber = 0x00200000; + const RASEO_SharedPhoneNumbers = 0x00800000; + const RASEO_PreviewUserPw = 0x01000000; + const RASEO_PreviewDomain = 0x02000000; + const RASEO_ShowDialingProgress = 0x04000000; + const RASEO_RequireCHAP = 0x08000000; + const RASEO_RequireMsCHAP = 0x10000000; + const RASEO_RequireMsCHAP2 = 0x20000000; + const RASEO_RequireW95MSCHAP = 0x40000000; + const RASEO_CustomScript = 0x80000000; + + const RASIPO_VJ = 0x00000001; + const RCD_SingleUser = 0; + const RCD_AllUsers = 0x00000001; + const RCD_Eap = 0x00000002; + const RASEAPF_NonInteractive = 0x00000002; + const RASEAPF_Logon = 0x00000004; + const RASEAPF_Preview = 0x00000008; + const ET_40Bit = 1; + const ET_128Bit = 2; + const ET_None = 0; + const ET_Require = 1; + const ET_RequireMax = 2; + const ET_Optional = 3; //} const RASCS_PAUSED = 0x1000; const RASCS_DONE = 0x2000; enum RASCONNSTATE { - RASCS_OpenPort = 0, - RASCS_PortOpened, - RASCS_ConnectDevice, - RASCS_DeviceConnected, - RASCS_AllDevicesConnected, - RASCS_Authenticate, - RASCS_AuthNotify, - RASCS_AuthRetry, - RASCS_AuthCallback, - RASCS_AuthChangePassword, - RASCS_AuthProject, - RASCS_AuthLinkSpeed, - RASCS_AuthAck, - RASCS_ReAuthenticate, - RASCS_Authenticated, - RASCS_PrepareForCallback, - RASCS_WaitForModemReset, - RASCS_WaitForCallback, - RASCS_Projected, - RASCS_StartAuthentication, - RASCS_CallbackComplete, - RASCS_LogonNetwork, - RASCS_SubEntryConnected, - RASCS_SubEntryDisconnected, - RASCS_Interactive = RASCS_PAUSED, - RASCS_RetryAuthentication, - RASCS_CallbackSetByCaller, - RASCS_PasswordExpired, + RASCS_OpenPort = 0, + RASCS_PortOpened, + RASCS_ConnectDevice, + RASCS_DeviceConnected, + RASCS_AllDevicesConnected, + RASCS_Authenticate, + RASCS_AuthNotify, + RASCS_AuthRetry, + RASCS_AuthCallback, + RASCS_AuthChangePassword, + RASCS_AuthProject, + RASCS_AuthLinkSpeed, + RASCS_AuthAck, + RASCS_ReAuthenticate, + RASCS_Authenticated, + RASCS_PrepareForCallback, + RASCS_WaitForModemReset, + RASCS_WaitForCallback, + RASCS_Projected, + RASCS_StartAuthentication, + RASCS_CallbackComplete, + RASCS_LogonNetwork, + RASCS_SubEntryConnected, + RASCS_SubEntryDisconnected, + RASCS_Interactive = RASCS_PAUSED, + RASCS_RetryAuthentication, + RASCS_CallbackSetByCaller, + RASCS_PasswordExpired, // static if (_WIN32_WINNT >= 0x500) { - RASCS_InvokeEapUI, + RASCS_InvokeEapUI, // } - RASCS_Connected = RASCS_DONE, - RASCS_Disconnected + RASCS_Connected = RASCS_DONE, + RASCS_Disconnected } alias RASCONNSTATE* LPRASCONNSTATE; enum RASPROJECTION { - RASP_Amb = 0x10000, - RASP_PppNbf = 0x803F, - RASP_PppIpx = 0x802B, - RASP_PppIp = 0x8021, + RASP_Amb = 0x10000, + RASP_PppNbf = 0x803F, + RASP_PppIpx = 0x802B, + RASP_PppIp = 0x8021, // static if (_WIN32_WINNT >= 0x500) { - RASP_PppCcp = 0x80FD, + RASP_PppCcp = 0x80FD, // } - RASP_PppLcp = 0xC021, - RASP_Slip = 0x20000 + RASP_PppLcp = 0xC021, + RASP_Slip = 0x20000 } alias RASPROJECTION* LPRASPROJECTION; @@ -224,292 +224,292 @@ alias TypeDef!(HANDLE) HRASCONN; alias HRASCONN* LPHRASCONN; struct RASCONNW { - DWORD dwSize; - HRASCONN hrasconn; - WCHAR[RAS_MaxEntryName + 1] szEntryName; - WCHAR[RAS_MaxDeviceType + 1] szDeviceType; - WCHAR[RAS_MaxDeviceName + 1] szDeviceName; - //static if (_WIN32_WINNT >= 0x401) { - WCHAR[MAX_PATH] szPhonebook; - DWORD dwSubEntry; - //} - //static if (_WIN32_WINNT >= 0x500) { - GUID guidEntry; - //} - static if (_WIN32_WINNT >= 0x501) { - DWORD dwFlags; - LUID luid; - } + DWORD dwSize; + HRASCONN hrasconn; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + //static if (_WIN32_WINNT >= 0x401) { + WCHAR[MAX_PATH] szPhonebook; + DWORD dwSubEntry; + //} + //static if (_WIN32_WINNT >= 0x500) { + GUID guidEntry; + //} + static if (_WIN32_WINNT >= 0x501) { + DWORD dwFlags; + LUID luid; + } } alias RASCONNW* LPRASCONNW; struct RASCONNA { - DWORD dwSize; - HRASCONN hrasconn; - CHAR[RAS_MaxEntryName + 1] szEntryName; - CHAR[RAS_MaxDeviceType + 1] szDeviceType; - CHAR[RAS_MaxDeviceName + 1] szDeviceName; - //static if (_WIN32_WINNT >= 0x401) { - CHAR[MAX_PATH] szPhonebook; - DWORD dwSubEntry; - //} - //static if (_WIN32_WINNT >= 0x500) { - GUID guidEntry; - //} - static if (_WIN32_WINNT >= 0x501) { - DWORD dwFlags; - LUID luid; - } + DWORD dwSize; + HRASCONN hrasconn; + CHAR[RAS_MaxEntryName + 1] szEntryName; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + //static if (_WIN32_WINNT >= 0x401) { + CHAR[MAX_PATH] szPhonebook; + DWORD dwSubEntry; + //} + //static if (_WIN32_WINNT >= 0x500) { + GUID guidEntry; + //} + static if (_WIN32_WINNT >= 0x501) { + DWORD dwFlags; + LUID luid; + } } alias RASCONNA* LPRASCONNA; struct RASCONNSTATUSW { - DWORD dwSize; - RASCONNSTATE rasconnstate; - DWORD dwError; - WCHAR[RAS_MaxDeviceType + 1] szDeviceType; - WCHAR[RAS_MaxDeviceName + 1] szDeviceName; - static if (_WIN32_WINNT >= 0x401) { - WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; - } + DWORD dwSize; + RASCONNSTATE rasconnstate; + DWORD dwError; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + } } alias RASCONNSTATUSW* LPRASCONNSTATUSW; struct RASCONNSTATUSA { - DWORD dwSize; - RASCONNSTATE rasconnstate; - DWORD dwError; - CHAR[RAS_MaxDeviceType + 1] szDeviceType; - CHAR[RAS_MaxDeviceName + 1] szDeviceName; - static if (_WIN32_WINNT >= 0x401) { - CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; - } + DWORD dwSize; + RASCONNSTATE rasconnstate; + DWORD dwError; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + } } alias RASCONNSTATUSA* LPRASCONNSTATUSA; struct RASDIALPARAMSW { - DWORD dwSize; - WCHAR[RAS_MaxEntryName + 1] szEntryName; - WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; - WCHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; - WCHAR[UNLEN + 1] szUserName; - WCHAR[PWLEN + 1] szPassword; - WCHAR[DNLEN + 1] szDomain; - static if (_WIN32_WINNT >= 0x401) { - DWORD dwSubEntry; - ULONG_PTR dwCallbackId; - } + DWORD dwSize; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + WCHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; + } } alias RASDIALPARAMSW* LPRASDIALPARAMSW; struct RASDIALPARAMSA{ - DWORD dwSize; - CHAR[RAS_MaxEntryName + 1] szEntryName; - CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; - CHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; - CHAR[UNLEN + 1] szUserName; - CHAR[PWLEN + 1] szPassword; - CHAR[DNLEN + 1] szDomain; - static if (_WIN32_WINNT >= 0x401) { - DWORD dwSubEntry; - ULONG_PTR dwCallbackId; - } + DWORD dwSize; + CHAR[RAS_MaxEntryName + 1] szEntryName; + CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + CHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; + } } alias RASDIALPARAMSA* LPRASDIALPARAMSA; //static if (_WIN32_WINNT >= 0x500) { - struct RASEAPINFO { - DWORD dwSizeofEapInfo; - BYTE *pbEapInfo; - } + struct RASEAPINFO { + DWORD dwSizeofEapInfo; + BYTE *pbEapInfo; + } //} struct RASDIALEXTENSIONS { - DWORD dwSize; - DWORD dwfOptions; - HWND hwndParent; - ULONG_PTR reserved; - //static if (_WIN32_WINNT >= 0x500) { - ULONG_PTR reserved1; - RASEAPINFO RasEapInfo; - //} + DWORD dwSize; + DWORD dwfOptions; + HWND hwndParent; + ULONG_PTR reserved; + //static if (_WIN32_WINNT >= 0x500) { + ULONG_PTR reserved1; + RASEAPINFO RasEapInfo; + //} } alias RASDIALEXTENSIONS* LPRASDIALEXTENSIONS; struct RASENTRYNAMEW { - DWORD dwSize; - WCHAR[RAS_MaxEntryName + 1] szEntryName; - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwFlags; - WCHAR[MAX_PATH + 1] szPhonebookPath; - //} + DWORD dwSize; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwFlags; + WCHAR[MAX_PATH + 1] szPhonebookPath; + //} } alias RASENTRYNAMEW* LPRASENTRYNAMEW; struct RASENTRYNAMEA{ - DWORD dwSize; - CHAR[RAS_MaxEntryName + 1] szEntryName; - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwFlags; - CHAR[MAX_PATH + 1] szPhonebookPath; - //} + DWORD dwSize; + CHAR[RAS_MaxEntryName + 1] szEntryName; + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwFlags; + CHAR[MAX_PATH + 1] szPhonebookPath; + //} } alias RASENTRYNAMEA* LPRASENTRYNAMEA; struct RASAMBW{ - DWORD dwSize; - DWORD dwError; - WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; - BYTE bLana; + DWORD dwSize; + DWORD dwError; + WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + BYTE bLana; } alias RASAMBW* LPRASAMBW; struct RASAMBA{ - DWORD dwSize; - DWORD dwError; - CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; - BYTE bLana; + DWORD dwSize; + DWORD dwError; + CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + BYTE bLana; } alias RASAMBA* LPRASAMBA; struct RASPPPNBFW{ - DWORD dwSize; - DWORD dwError; - DWORD dwNetBiosError; - WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; - WCHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; - BYTE bLana; + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + WCHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; + BYTE bLana; } alias RASPPPNBFW* LPRASPPPNBFW; struct RASPPPNBFA{ - DWORD dwSize; - DWORD dwError; - DWORD dwNetBiosError; - CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; - CHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; - BYTE bLana; + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; + BYTE bLana; } alias RASPPPNBFA* LPRASPPPNBFA; struct RASPPPIPXW { - DWORD dwSize; - DWORD dwError; - WCHAR[RAS_MaxIpxAddress + 1] szIpxAddress; + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpxAddress + 1] szIpxAddress; } alias RASPPPIPXW* LPRASPPPIPXW; struct RASPPPIPXA { - DWORD dwSize; - DWORD dwError; - CHAR[RAS_MaxIpxAddress + 1] szIpxAddress; + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpxAddress + 1] szIpxAddress; } alias RASPPPIPXA* LPRASPPPIPXA; struct RASPPPIPW{ - DWORD dwSize; - DWORD dwError; - WCHAR[RAS_MaxIpAddress + 1] szIpAddress; - //#ifndef WINNT35COMPATIBLE - WCHAR[RAS_MaxIpAddress + 1] szServerIpAddress; - //#endif - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwOptions; - DWORD dwServerOptions; - //} + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpAddress + 1] szIpAddress; + //#ifndef WINNT35COMPATIBLE + WCHAR[RAS_MaxIpAddress + 1] szServerIpAddress; + //#endif + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwOptions; + DWORD dwServerOptions; + //} } alias RASPPPIPW* LPRASPPPIPW; struct RASPPPIPA{ - DWORD dwSize; - DWORD dwError; - CHAR[RAS_MaxIpAddress + 1] szIpAddress; - //#ifndef WINNT35COMPATIBLE - CHAR[RAS_MaxIpAddress + 1] szServerIpAddress; - //#endif - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwOptions; - DWORD dwServerOptions; - //} + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpAddress + 1] szIpAddress; + //#ifndef WINNT35COMPATIBLE + CHAR[RAS_MaxIpAddress + 1] szServerIpAddress; + //#endif + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwOptions; + DWORD dwServerOptions; + //} } alias RASPPPIPA* LPRASPPPIPA; struct RASPPPLCPW{ - DWORD dwSize; - BOOL fBundled; - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwError; - DWORD dwAuthenticationProtocol; - DWORD dwAuthenticationData; - DWORD dwEapTypeId; - DWORD dwServerAuthenticationProtocol; - DWORD dwServerAuthenticationData; - DWORD dwServerEapTypeId; - BOOL fMultilink; - DWORD dwTerminateReason; - DWORD dwServerTerminateReason; - WCHAR[RAS_MaxReplyMessage] szReplyMessage; - DWORD dwOptions; - DWORD dwServerOptions; - //} + DWORD dwSize; + BOOL fBundled; + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + BOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + WCHAR[RAS_MaxReplyMessage] szReplyMessage; + DWORD dwOptions; + DWORD dwServerOptions; + //} } alias RASPPPLCPW* LPRASPPPLCPW; struct RASPPPLCPA{ - DWORD dwSize; - BOOL fBundled; - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwError; - DWORD dwAuthenticationProtocol; - DWORD dwAuthenticationData; - DWORD dwEapTypeId; - DWORD dwServerAuthenticationProtocol; - DWORD dwServerAuthenticationData; - DWORD dwServerEapTypeId; - BOOL fMultilink; - DWORD dwTerminateReason; - DWORD dwServerTerminateReason; - CHAR[RAS_MaxReplyMessage] szReplyMessage; - DWORD dwOptions; - DWORD dwServerOptions; - //} + DWORD dwSize; + BOOL fBundled; + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + BOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + CHAR[RAS_MaxReplyMessage] szReplyMessage; + DWORD dwOptions; + DWORD dwServerOptions; + //} } alias RASPPPLCPA* LPRASPPPLCPA; struct RASSLIPW{ - DWORD dwSize; - DWORD dwError; - WCHAR[RAS_MaxIpAddress + 1] szIpAddress; + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpAddress + 1] szIpAddress; } alias RASSLIPW* LPRASSLIPW; struct RASSLIPA{ - DWORD dwSize; - DWORD dwError; - CHAR[RAS_MaxIpAddress + 1] szIpAddress; + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpAddress + 1] szIpAddress; } alias RASSLIPA* LPRASSLIPA; struct RASDEVINFOW{ - DWORD dwSize; - WCHAR[RAS_MaxDeviceType + 1] szDeviceType; - WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + DWORD dwSize; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; } alias RASDEVINFOW* LPRASDEVINFOW; struct RASDEVINFOA{ - DWORD dwSize; - CHAR[RAS_MaxDeviceType + 1] szDeviceType; - CHAR[RAS_MaxDeviceName + 1] szDeviceName; + DWORD dwSize; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; } alias RASDEVINFOA* LPRASDEVINFOA; struct RASCTRYINFO { - DWORD dwSize; - DWORD dwCountryID; - DWORD dwNextCountryID; - DWORD dwCountryCode; - DWORD dwCountryNameOffset; + DWORD dwSize; + DWORD dwCountryID; + DWORD dwNextCountryID; + DWORD dwCountryCode; + DWORD dwCountryNameOffset; } alias RASCTRYINFO* LPRASCTRYINFO; alias RASCTRYINFO RASCTRYINFOW, RASCTRYINFOA; @@ -517,268 +517,268 @@ alias RASCTRYINFOW* LPRASCTRYINFOW; alias RASCTRYINFOA* LPRASCTRYINFOA; struct RASIPADDR { - BYTE a; - BYTE b; - BYTE c; - BYTE d; + BYTE a; + BYTE b; + BYTE c; + BYTE d; } struct RASENTRYW { - DWORD dwSize; - DWORD dwfOptions; - DWORD dwCountryID; - DWORD dwCountryCode; - WCHAR[RAS_MaxAreaCode + 1] szAreaCode; - WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; - DWORD dwAlternateOffset; - RASIPADDR ipaddr; - RASIPADDR ipaddrDns; - RASIPADDR ipaddrDnsAlt; - RASIPADDR ipaddrWins; - RASIPADDR ipaddrWinsAlt; - DWORD dwFrameSize; - DWORD dwfNetProtocols; - DWORD dwFramingProtocol; - WCHAR[MAX_PATH] szScript; - WCHAR[MAX_PATH] szAutodialDll; - WCHAR[MAX_PATH] szAutodialFunc; - WCHAR[RAS_MaxDeviceType + 1] szDeviceType; - WCHAR[RAS_MaxDeviceName + 1] szDeviceName; - WCHAR[RAS_MaxPadType + 1] szX25PadType; - WCHAR[RAS_MaxX25Address + 1] szX25Address; - WCHAR[RAS_MaxFacilities + 1] szX25Facilities; - WCHAR[RAS_MaxUserData + 1] szX25UserData; - DWORD dwChannels; - DWORD dwReserved1; - DWORD dwReserved2; - //static if (_WIN32_WINNT >= 0x401) { - DWORD dwSubEntries; - DWORD dwDialMode; - DWORD dwDialExtraPercent; - DWORD dwDialExtraSampleSeconds; - DWORD dwHangUpExtraPercent; - DWORD dwHangUpExtraSampleSeconds; - DWORD dwIdleDisconnectSeconds; - //} - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwType; - DWORD dwEncryptionType; - DWORD dwCustomAuthKey; - GUID guidId; - WCHAR[MAX_PATH] szCustomDialDll; - DWORD dwVpnStrategy; - //} + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + WCHAR[RAS_MaxAreaCode + 1] szAreaCode; + WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + WCHAR[MAX_PATH] szScript; + WCHAR[MAX_PATH] szAutodialDll; + WCHAR[MAX_PATH] szAutodialFunc; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + WCHAR[RAS_MaxPadType + 1] szX25PadType; + WCHAR[RAS_MaxX25Address + 1] szX25Address; + WCHAR[RAS_MaxFacilities + 1] szX25Facilities; + WCHAR[RAS_MaxUserData + 1] szX25UserData; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; + //static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + //} + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + WCHAR[MAX_PATH] szCustomDialDll; + DWORD dwVpnStrategy; + //} } alias RASENTRYW* LPRASENTRYW; struct RASENTRYA { - DWORD dwSize; - DWORD dwfOptions; - DWORD dwCountryID; - DWORD dwCountryCode; - CHAR[RAS_MaxAreaCode + 1] szAreaCode; - CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; - DWORD dwAlternateOffset; - RASIPADDR ipaddr; - RASIPADDR ipaddrDns; - RASIPADDR ipaddrDnsAlt; - RASIPADDR ipaddrWins; - RASIPADDR ipaddrWinsAlt; - DWORD dwFrameSize; - DWORD dwfNetProtocols; - DWORD dwFramingProtocol; - CHAR[MAX_PATH] szScript; - CHAR[MAX_PATH] szAutodialDll; - CHAR[MAX_PATH] szAutodialFunc; - CHAR[RAS_MaxDeviceType + 1] szDeviceType; - CHAR[RAS_MaxDeviceName + 1] szDeviceName; - CHAR[RAS_MaxPadType + 1] szX25PadType; - CHAR[RAS_MaxX25Address + 1] szX25Address; - CHAR[RAS_MaxFacilities + 1] szX25Facilities; - CHAR[RAS_MaxUserData + 1] szX25UserData; - DWORD dwChannels; - DWORD dwReserved1; - DWORD dwReserved2; - //static if (_WIN32_WINNT >= 0x401) { - DWORD dwSubEntries; - DWORD dwDialMode; - DWORD dwDialExtraPercent; - DWORD dwDialExtraSampleSeconds; - DWORD dwHangUpExtraPercent; - DWORD dwHangUpExtraSampleSeconds; - DWORD dwIdleDisconnectSeconds; - //} - //static if (_WIN32_WINNT >= 0x500) { - DWORD dwType; - DWORD dwEncryptionType; - DWORD dwCustomAuthKey; - GUID guidId; - CHAR[MAX_PATH] szCustomDialDll; - DWORD dwVpnStrategy; - //} + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + CHAR[RAS_MaxAreaCode + 1] szAreaCode; + CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + CHAR[MAX_PATH] szScript; + CHAR[MAX_PATH] szAutodialDll; + CHAR[MAX_PATH] szAutodialFunc; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + CHAR[RAS_MaxPadType + 1] szX25PadType; + CHAR[RAS_MaxX25Address + 1] szX25Address; + CHAR[RAS_MaxFacilities + 1] szX25Facilities; + CHAR[RAS_MaxUserData + 1] szX25UserData; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; + //static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + //} + //static if (_WIN32_WINNT >= 0x500) { + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + CHAR[MAX_PATH] szCustomDialDll; + DWORD dwVpnStrategy; + //} } alias RASENTRYA* LPRASENTRYA; //static if (_WIN32_WINNT >= 0x401) { - struct RASADPARAMS { - DWORD dwSize; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - } - alias RASADPARAMS* LPRASADPARAMS; - - struct RASSUBENTRYW{ - DWORD dwSize; - DWORD dwfFlags; - WCHAR[RAS_MaxDeviceType + 1] szDeviceType; - WCHAR[RAS_MaxDeviceName + 1] szDeviceName; - WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; - DWORD dwAlternateOffset; - } - alias RASSUBENTRYW* LPRASSUBENTRYW; - - struct RASSUBENTRYA{ - DWORD dwSize; - DWORD dwfFlags; - CHAR[RAS_MaxDeviceType + 1] szDeviceType; - CHAR[RAS_MaxDeviceName + 1] szDeviceName; - CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; - DWORD dwAlternateOffset; - } - alias RASSUBENTRYA* LPRASSUBENTRYA; - - struct RASCREDENTIALSW{ - DWORD dwSize; - DWORD dwMask; - WCHAR[UNLEN + 1] szUserName; - WCHAR[PWLEN + 1] szPassword; - WCHAR[DNLEN + 1] szDomain; - } - alias RASCREDENTIALSW* LPRASCREDENTIALSW; - - struct RASCREDENTIALSA{ - DWORD dwSize; - DWORD dwMask; - CHAR[UNLEN + 1] szUserName; - CHAR[PWLEN + 1] szPassword; - CHAR[DNLEN + 1] szDomain; - } - alias RASCREDENTIALSA* LPRASCREDENTIALSA; - - struct RASAUTODIALENTRYW{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwDialingLocation; - WCHAR[RAS_MaxEntryName + 1] szEntry; - } - alias RASAUTODIALENTRYW* LPRASAUTODIALENTRYW; - - struct RASAUTODIALENTRYA{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwDialingLocation; - CHAR[RAS_MaxEntryName + 1] szEntry; - } - alias RASAUTODIALENTRYA* LPRASAUTODIALENTRYA; + struct RASADPARAMS { + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + } + alias RASADPARAMS* LPRASADPARAMS; + + struct RASSUBENTRYW{ + DWORD dwSize; + DWORD dwfFlags; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + } + alias RASSUBENTRYW* LPRASSUBENTRYW; + + struct RASSUBENTRYA{ + DWORD dwSize; + DWORD dwfFlags; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + } + alias RASSUBENTRYA* LPRASSUBENTRYA; + + struct RASCREDENTIALSW{ + DWORD dwSize; + DWORD dwMask; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; + } + alias RASCREDENTIALSW* LPRASCREDENTIALSW; + + struct RASCREDENTIALSA{ + DWORD dwSize; + DWORD dwMask; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; + } + alias RASCREDENTIALSA* LPRASCREDENTIALSA; + + struct RASAUTODIALENTRYW{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + WCHAR[RAS_MaxEntryName + 1] szEntry; + } + alias RASAUTODIALENTRYW* LPRASAUTODIALENTRYW; + + struct RASAUTODIALENTRYA{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + CHAR[RAS_MaxEntryName + 1] szEntry; + } + alias RASAUTODIALENTRYA* LPRASAUTODIALENTRYA; //} //static if (_WIN32_WINNT >= 0x500) { - struct RASPPPCCP{ - DWORD dwSize; - DWORD dwError; - DWORD dwCompressionAlgorithm; - DWORD dwOptions; - DWORD dwServerCompressionAlgorithm; - DWORD dwServerOptions; - } - alias RASPPPCCP* LPRASPPPCCP; - - struct RASEAPUSERIDENTITYW{ - WCHAR[UNLEN + 1] szUserName; - DWORD dwSizeofEapInfo; - BYTE[1] pbEapInfo; - } - alias RASEAPUSERIDENTITYW* LPRASEAPUSERIDENTITYW; - - struct RASEAPUSERIDENTITYA{ - CHAR[UNLEN + 1] szUserName; - DWORD dwSizeofEapInfo; - BYTE[1] pbEapInfo; - } - alias RASEAPUSERIDENTITYA* LPRASEAPUSERIDENTITYA; - - struct RAS_STATS{ - DWORD dwSize; - DWORD dwBytesXmited; - DWORD dwBytesRcved; - DWORD dwFramesXmited; - DWORD dwFramesRcved; - DWORD dwCrcErr; - DWORD dwTimeoutErr; - DWORD dwAlignmentErr; - DWORD dwHardwareOverrunErr; - DWORD dwFramingErr; - DWORD dwBufferOverrunErr; - DWORD dwCompressionRatioIn; - DWORD dwCompressionRatioOut; - DWORD dwBps; - DWORD dwConnectDuration; - } - alias RAS_STATS* PRAS_STATS; + struct RASPPPCCP{ + DWORD dwSize; + DWORD dwError; + DWORD dwCompressionAlgorithm; + DWORD dwOptions; + DWORD dwServerCompressionAlgorithm; + DWORD dwServerOptions; + } + alias RASPPPCCP* LPRASPPPCCP; + + struct RASEAPUSERIDENTITYW{ + WCHAR[UNLEN + 1] szUserName; + DWORD dwSizeofEapInfo; + BYTE[1] pbEapInfo; + } + alias RASEAPUSERIDENTITYW* LPRASEAPUSERIDENTITYW; + + struct RASEAPUSERIDENTITYA{ + CHAR[UNLEN + 1] szUserName; + DWORD dwSizeofEapInfo; + BYTE[1] pbEapInfo; + } + alias RASEAPUSERIDENTITYA* LPRASEAPUSERIDENTITYA; + + struct RAS_STATS{ + DWORD dwSize; + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwCompressionRatioIn; + DWORD dwCompressionRatioOut; + DWORD dwBps; + DWORD dwConnectDuration; + } + alias RAS_STATS* PRAS_STATS; //} /* UNICODE typedefs for structures*/ version (Unicode) { - alias RASCONNW RASCONN; - alias RASENTRYW RASENTRY; - alias RASCONNSTATUSW RASCONNSTATUS; - alias RASDIALPARAMSW RASDIALPARAMS; - alias RASAMBW RASAMB; - alias RASPPPNBFW RASPPPNBF; - alias RASPPPIPXW RASPPPIPX; - alias RASPPPIPW RASPPPIP; - alias RASPPPLCPW RASPPPLCP; - alias RASSLIPW RASSLIP; - alias RASDEVINFOW RASDEVINFO; - alias RASENTRYNAMEW RASENTRYNAME; - - //static if (_WIN32_WINNT >= 0x401) { - alias RASSUBENTRYW RASSUBENTRY; - alias RASCREDENTIALSW RASCREDENTIALS; - alias RASAUTODIALENTRYW RASAUTODIALENTRY; - //} - - //static if (_WIN32_WINNT >= 0x500) { - alias RASEAPUSERIDENTITYW RASEAPUSERIDENTITY; - //} + alias RASCONNW RASCONN; + alias RASENTRYW RASENTRY; + alias RASCONNSTATUSW RASCONNSTATUS; + alias RASDIALPARAMSW RASDIALPARAMS; + alias RASAMBW RASAMB; + alias RASPPPNBFW RASPPPNBF; + alias RASPPPIPXW RASPPPIPX; + alias RASPPPIPW RASPPPIP; + alias RASPPPLCPW RASPPPLCP; + alias RASSLIPW RASSLIP; + alias RASDEVINFOW RASDEVINFO; + alias RASENTRYNAMEW RASENTRYNAME; + + //static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRYW RASSUBENTRY; + alias RASCREDENTIALSW RASCREDENTIALS; + alias RASAUTODIALENTRYW RASAUTODIALENTRY; + //} + + //static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITYW RASEAPUSERIDENTITY; + //} } else { // ! defined UNICODE - alias RASCONNA RASCONN; - alias RASENTRYA RASENTRY; - alias RASCONNSTATUSA RASCONNSTATUS; - alias RASDIALPARAMSA RASDIALPARAMS; - alias RASAMBA RASAMB; - alias RASPPPNBFA RASPPPNBF; - alias RASPPPIPXA RASPPPIPX; - alias RASPPPIPA RASPPPIP; - alias RASPPPLCPA RASPPPLCP; - alias RASSLIPA RASSLIP; - alias RASDEVINFOA RASDEVINFO; - alias RASENTRYNAMEA RASENTRYNAME; - - //static if (_WIN32_WINNT >= 0x401) { - alias RASSUBENTRYA RASSUBENTRY; - alias RASCREDENTIALSA RASCREDENTIALS; - alias RASAUTODIALENTRYA RASAUTODIALENTRY; - //} - //static if (_WIN32_WINNT >= 0x500) { - alias RASEAPUSERIDENTITYA RASEAPUSERIDENTITY; - //} + alias RASCONNA RASCONN; + alias RASENTRYA RASENTRY; + alias RASCONNSTATUSA RASCONNSTATUS; + alias RASDIALPARAMSA RASDIALPARAMS; + alias RASAMBA RASAMB; + alias RASPPPNBFA RASPPPNBF; + alias RASPPPIPXA RASPPPIPX; + alias RASPPPIPA RASPPPIP; + alias RASPPPLCPA RASPPPLCP; + alias RASSLIPA RASSLIP; + alias RASDEVINFOA RASDEVINFO; + alias RASENTRYNAMEA RASENTRYNAME; + + //static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRYA RASSUBENTRY; + alias RASCREDENTIALSA RASCREDENTIALS; + alias RASAUTODIALENTRYA RASAUTODIALENTRY; + //} + //static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITYA RASEAPUSERIDENTITY; + //} }// ! UNICODE @@ -796,17 +796,17 @@ alias RASDEVINFO* LPRASDEVINFO; alias RASENTRYNAME* LPRASENTRYNAME; //static if (_WIN32_WINNT >= 0x401) { - alias RASSUBENTRY* LPRASSUBENTRY; - alias RASCREDENTIALS* LPRASCREDENTIALS; - alias RASAUTODIALENTRY* LPRASAUTODIALENTRY; + alias RASSUBENTRY* LPRASSUBENTRY; + alias RASCREDENTIALS* LPRASCREDENTIALS; + alias RASAUTODIALENTRY* LPRASAUTODIALENTRY; //} //static if (_WIN32_WINNT >= 0x500) { - alias RASEAPUSERIDENTITY* LPRASEAPUSERIDENTITY; + alias RASEAPUSERIDENTITY* LPRASEAPUSERIDENTITY; //} /* Callback prototypes */ deprecated { - alias BOOL function (HWND, LPSTR, DWORD, LPDWORD) ORASADFUNC; + alias BOOL function (HWND, LPSTR, DWORD, LPDWORD) ORASADFUNC; } alias void function (UINT, RASCONNSTATE, DWORD) RASDIALFUNC; @@ -853,153 +853,153 @@ DWORD RasValidateEntryNameA(LPCSTR, LPCSTR); DWORD RasValidateEntryNameW(LPCWSTR, LPCWSTR); //static if(_WIN32_WINNT >= 0x401) { - alias BOOL function(LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; - alias BOOL function(LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; - - DWORD RasGetSubEntryHandleA(HRASCONN, DWORD, LPHRASCONN); - DWORD RasGetSubEntryHandleW(HRASCONN, DWORD, LPHRASCONN); - DWORD RasGetCredentialsA(LPCSTR, LPCSTR, LPRASCREDENTIALSA); - DWORD RasGetCredentialsW(LPCWSTR, LPCWSTR, LPRASCREDENTIALSW); - DWORD RasSetCredentialsA(LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL); - DWORD RasSetCredentialsW(LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL); - DWORD RasConnectionNotificationA(HRASCONN, HANDLE, DWORD); - DWORD RasConnectionNotificationW(HRASCONN, HANDLE, DWORD); - DWORD RasGetSubEntryPropertiesA(LPCSTR, LPCSTR, DWORD, LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD); - DWORD RasGetSubEntryPropertiesW(LPCWSTR, LPCWSTR, DWORD, LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD); - DWORD RasSetSubEntryPropertiesA(LPCSTR, LPCSTR, DWORD, LPRASSUBENTRYA, DWORD, LPBYTE, DWORD); - DWORD RasSetSubEntryPropertiesW(LPCWSTR, LPCWSTR, DWORD, LPRASSUBENTRYW, DWORD, LPBYTE, DWORD); - DWORD RasGetAutodialAddressA(LPCSTR, LPDWORD, LPRASAUTODIALENTRYA, LPDWORD, LPDWORD); - DWORD RasGetAutodialAddressW(LPCWSTR, LPDWORD, LPRASAUTODIALENTRYW, LPDWORD, LPDWORD); - DWORD RasSetAutodialAddressA(LPCSTR, DWORD, LPRASAUTODIALENTRYA, DWORD, DWORD); - DWORD RasSetAutodialAddressW(LPCWSTR, DWORD, LPRASAUTODIALENTRYW, DWORD, DWORD); - DWORD RasEnumAutodialAddressesA(LPSTR*, LPDWORD, LPDWORD); - DWORD RasEnumAutodialAddressesW(LPWSTR*, LPDWORD, LPDWORD); - DWORD RasGetAutodialEnableA(DWORD, LPBOOL); - DWORD RasGetAutodialEnableW(DWORD, LPBOOL); - DWORD RasSetAutodialEnableA(DWORD, BOOL); - DWORD RasSetAutodialEnableW(DWORD, BOOL); - DWORD RasGetAutodialParamA(DWORD, LPVOID, LPDWORD); - DWORD RasGetAutodialParamW(DWORD, LPVOID, LPDWORD); - DWORD RasSetAutodialParamA(DWORD, LPVOID, DWORD); - DWORD RasSetAutodialParamW(DWORD, LPVOID, DWORD); + alias BOOL function(LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; + alias BOOL function(LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; + + DWORD RasGetSubEntryHandleA(HRASCONN, DWORD, LPHRASCONN); + DWORD RasGetSubEntryHandleW(HRASCONN, DWORD, LPHRASCONN); + DWORD RasGetCredentialsA(LPCSTR, LPCSTR, LPRASCREDENTIALSA); + DWORD RasGetCredentialsW(LPCWSTR, LPCWSTR, LPRASCREDENTIALSW); + DWORD RasSetCredentialsA(LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL); + DWORD RasSetCredentialsW(LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL); + DWORD RasConnectionNotificationA(HRASCONN, HANDLE, DWORD); + DWORD RasConnectionNotificationW(HRASCONN, HANDLE, DWORD); + DWORD RasGetSubEntryPropertiesA(LPCSTR, LPCSTR, DWORD, LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD); + DWORD RasGetSubEntryPropertiesW(LPCWSTR, LPCWSTR, DWORD, LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD); + DWORD RasSetSubEntryPropertiesA(LPCSTR, LPCSTR, DWORD, LPRASSUBENTRYA, DWORD, LPBYTE, DWORD); + DWORD RasSetSubEntryPropertiesW(LPCWSTR, LPCWSTR, DWORD, LPRASSUBENTRYW, DWORD, LPBYTE, DWORD); + DWORD RasGetAutodialAddressA(LPCSTR, LPDWORD, LPRASAUTODIALENTRYA, LPDWORD, LPDWORD); + DWORD RasGetAutodialAddressW(LPCWSTR, LPDWORD, LPRASAUTODIALENTRYW, LPDWORD, LPDWORD); + DWORD RasSetAutodialAddressA(LPCSTR, DWORD, LPRASAUTODIALENTRYA, DWORD, DWORD); + DWORD RasSetAutodialAddressW(LPCWSTR, DWORD, LPRASAUTODIALENTRYW, DWORD, DWORD); + DWORD RasEnumAutodialAddressesA(LPSTR*, LPDWORD, LPDWORD); + DWORD RasEnumAutodialAddressesW(LPWSTR*, LPDWORD, LPDWORD); + DWORD RasGetAutodialEnableA(DWORD, LPBOOL); + DWORD RasGetAutodialEnableW(DWORD, LPBOOL); + DWORD RasSetAutodialEnableA(DWORD, BOOL); + DWORD RasSetAutodialEnableW(DWORD, BOOL); + DWORD RasGetAutodialParamA(DWORD, LPVOID, LPDWORD); + DWORD RasGetAutodialParamW(DWORD, LPVOID, LPDWORD); + DWORD RasSetAutodialParamA(DWORD, LPVOID, DWORD); + DWORD RasSetAutodialParamW(DWORD, LPVOID, DWORD); //} static if (_WIN32_WINNT >= 0x500) { - alias DWORD function(HRASCONN) RasCustomHangUpFn; - alias DWORD function(LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; - alias DWORD function(HINSTANCE, LPRASDIALEXTENSIONS, LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, - LPHRASCONN, DWORD) RasCustomDialFn; - - DWORD RasInvokeEapUI(HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); - DWORD RasGetLinkStatistics(HRASCONN, DWORD, RAS_STATS*); - DWORD RasGetConnectionStatistics(HRASCONN, RAS_STATS*); - DWORD RasClearLinkStatistics(HRASCONN, DWORD); - DWORD RasClearConnectionStatistics(HRASCONN); - DWORD RasGetEapUserDataA(HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*); - DWORD RasGetEapUserDataW(HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*); - DWORD RasSetEapUserDataA(HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD); - DWORD RasSetEapUserDataW(HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD); - DWORD RasGetCustomAuthDataA(LPCSTR, LPCSTR, BYTE*, DWORD*); - DWORD RasGetCustomAuthDataW(LPCWSTR, LPCWSTR, BYTE*, DWORD*); - DWORD RasSetCustomAuthDataA(LPCSTR, LPCSTR, BYTE*, DWORD); - DWORD RasSetCustomAuthDataW(LPCWSTR, LPCWSTR, BYTE*, DWORD); - DWORD RasGetEapUserIdentityW(LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*); - DWORD RasGetEapUserIdentityA(LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*); - void RasFreeEapUserIdentityW(LPRASEAPUSERIDENTITYW); - void RasFreeEapUserIdentityA(LPRASEAPUSERIDENTITYA); + alias DWORD function(HRASCONN) RasCustomHangUpFn; + alias DWORD function(LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; + alias DWORD function(HINSTANCE, LPRASDIALEXTENSIONS, LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, + LPHRASCONN, DWORD) RasCustomDialFn; + + DWORD RasInvokeEapUI(HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); + DWORD RasGetLinkStatistics(HRASCONN, DWORD, RAS_STATS*); + DWORD RasGetConnectionStatistics(HRASCONN, RAS_STATS*); + DWORD RasClearLinkStatistics(HRASCONN, DWORD); + DWORD RasClearConnectionStatistics(HRASCONN); + DWORD RasGetEapUserDataA(HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*); + DWORD RasGetEapUserDataW(HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*); + DWORD RasSetEapUserDataA(HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD); + DWORD RasSetEapUserDataW(HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD); + DWORD RasGetCustomAuthDataA(LPCSTR, LPCSTR, BYTE*, DWORD*); + DWORD RasGetCustomAuthDataW(LPCWSTR, LPCWSTR, BYTE*, DWORD*); + DWORD RasSetCustomAuthDataA(LPCSTR, LPCSTR, BYTE*, DWORD); + DWORD RasSetCustomAuthDataW(LPCWSTR, LPCWSTR, BYTE*, DWORD); + DWORD RasGetEapUserIdentityW(LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*); + DWORD RasGetEapUserIdentityA(LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*); + void RasFreeEapUserIdentityW(LPRASEAPUSERIDENTITYW); + void RasFreeEapUserIdentityA(LPRASEAPUSERIDENTITYA); } /* UNICODE defines for functions */ version(Unicode) { - alias RasDialW RasDial; - alias RasEnumConnectionsW RasEnumConnections; - alias RasEnumEntriesW RasEnumEntries; - alias RasGetConnectStatusW RasGetConnectStatus; - alias RasGetErrorStringW RasGetErrorString; - alias RasHangUpW RasHangUp; - alias RasGetProjectionInfoW RasGetProjectionInfo; - alias RasCreatePhonebookEntryW RasCreatePhonebookEntry; - alias RasEditPhonebookEntryW RasEditPhonebookEntry; - alias RasSetEntryDialParamsW RasSetEntryDialParams; - alias RasGetEntryDialParamsW RasGetEntryDialParams; - alias RasEnumDevicesW RasEnumDevices; - alias RasGetCountryInfoW RasGetCountryInfo; - alias RasGetEntryPropertiesW RasGetEntryProperties; - alias RasSetEntryPropertiesW RasSetEntryProperties; - alias RasRenameEntryW RasRenameEntry; - alias RasDeleteEntryW RasDeleteEntry; - alias RasValidateEntryNameW RasValidateEntryName; - - //static if (_WIN32_WINNT >= 0x401) { - alias RASADFUNCW RASADFUNC; - alias RasGetSubEntryHandleW RasGetSubEntryHandle; - alias RasConnectionNotificationW RasConnectionNotification; - alias RasGetSubEntryPropertiesW RasGetSubEntryProperties; - alias RasSetSubEntryPropertiesW RasSetSubEntryProperties; - alias RasGetCredentialsW RasGetCredentials; - alias RasSetCredentialsW RasSetCredentials; - alias RasGetAutodialAddressW RasGetAutodialAddress; - alias RasSetAutodialAddressW RasSetAutodialAddress; - alias RasEnumAutodialAddressesW RasEnumAutodialAddresses; - alias RasGetAutodialEnableW RasGetAutodialEnable; - alias RasSetAutodialEnableW RasSetAutodialEnable; - alias RasGetAutodialParamW RasGetAutodialParam; - alias RasSetAutodialParamW RasSetAutodialParam; - //} - - //static if (_WIN32_WINNT >= 0x500) { - alias RasGetEapUserDataW RasGetEapUserData; - alias RasSetEapUserDataW RasSetEapUserData; - alias RasGetCustomAuthDataW RasGetCustomAuthData; - alias RasSetCustomAuthDataW RasSetCustomAuthData; - alias RasGetEapUserIdentityW RasGetEapUserIdentity; - alias RasFreeEapUserIdentityW RasFreeEapUserIdentity; - //} + alias RasDialW RasDial; + alias RasEnumConnectionsW RasEnumConnections; + alias RasEnumEntriesW RasEnumEntries; + alias RasGetConnectStatusW RasGetConnectStatus; + alias RasGetErrorStringW RasGetErrorString; + alias RasHangUpW RasHangUp; + alias RasGetProjectionInfoW RasGetProjectionInfo; + alias RasCreatePhonebookEntryW RasCreatePhonebookEntry; + alias RasEditPhonebookEntryW RasEditPhonebookEntry; + alias RasSetEntryDialParamsW RasSetEntryDialParams; + alias RasGetEntryDialParamsW RasGetEntryDialParams; + alias RasEnumDevicesW RasEnumDevices; + alias RasGetCountryInfoW RasGetCountryInfo; + alias RasGetEntryPropertiesW RasGetEntryProperties; + alias RasSetEntryPropertiesW RasSetEntryProperties; + alias RasRenameEntryW RasRenameEntry; + alias RasDeleteEntryW RasDeleteEntry; + alias RasValidateEntryNameW RasValidateEntryName; + + //static if (_WIN32_WINNT >= 0x401) { + alias RASADFUNCW RASADFUNC; + alias RasGetSubEntryHandleW RasGetSubEntryHandle; + alias RasConnectionNotificationW RasConnectionNotification; + alias RasGetSubEntryPropertiesW RasGetSubEntryProperties; + alias RasSetSubEntryPropertiesW RasSetSubEntryProperties; + alias RasGetCredentialsW RasGetCredentials; + alias RasSetCredentialsW RasSetCredentials; + alias RasGetAutodialAddressW RasGetAutodialAddress; + alias RasSetAutodialAddressW RasSetAutodialAddress; + alias RasEnumAutodialAddressesW RasEnumAutodialAddresses; + alias RasGetAutodialEnableW RasGetAutodialEnable; + alias RasSetAutodialEnableW RasSetAutodialEnable; + alias RasGetAutodialParamW RasGetAutodialParam; + alias RasSetAutodialParamW RasSetAutodialParam; + //} + + //static if (_WIN32_WINNT >= 0x500) { + alias RasGetEapUserDataW RasGetEapUserData; + alias RasSetEapUserDataW RasSetEapUserData; + alias RasGetCustomAuthDataW RasGetCustomAuthData; + alias RasSetCustomAuthDataW RasSetCustomAuthData; + alias RasGetEapUserIdentityW RasGetEapUserIdentity; + alias RasFreeEapUserIdentityW RasFreeEapUserIdentity; + //} } else { // !Unicode - alias RasDialA RasDial; - alias RasEnumConnectionsA RasEnumConnections; - alias RasEnumEntriesA RasEnumEntries; - alias RasGetConnectStatusA RasGetConnectStatus; - alias RasGetErrorStringA RasGetErrorString; - alias RasHangUpA RasHangUp; - alias RasGetProjectionInfoA RasGetProjectionInfo; - alias RasCreatePhonebookEntryA RasCreatePhonebookEntry; - alias RasEditPhonebookEntryA RasEditPhonebookEntry; - alias RasSetEntryDialParamsA RasSetEntryDialParams; - alias RasGetEntryDialParamsA RasGetEntryDialParams; - alias RasEnumDevicesA RasEnumDevices; - alias RasGetCountryInfoA RasGetCountryInfo; - alias RasGetEntryPropertiesA RasGetEntryProperties; - alias RasSetEntryPropertiesA RasSetEntryProperties; - alias RasRenameEntryA RasRenameEntry; - alias RasDeleteEntryA RasDeleteEntry; - alias RasValidateEntryNameA RasValidateEntryName; - - //static if (_WIN32_WINNT >= 0x401) { - alias RASADFUNCA RASADFUNC; - alias RasGetSubEntryHandleA RasGetSubEntryHandle; - alias RasConnectionNotificationA RasConnectionNotification; - alias RasGetSubEntryPropertiesA RasGetSubEntryProperties; - alias RasSetSubEntryPropertiesA RasSetSubEntryProperties; - alias RasGetCredentialsA RasGetCredentials; - alias RasSetCredentialsA RasSetCredentials; - alias RasGetAutodialAddressA RasGetAutodialAddress; - alias RasSetAutodialAddressA RasSetAutodialAddress; - alias RasEnumAutodialAddressesA RasEnumAutodialAddresses; - alias RasGetAutodialEnableA RasGetAutodialEnable; - alias RasSetAutodialEnableA RasSetAutodialEnable; - alias RasGetAutodialParamA RasGetAutodialParam; - alias RasSetAutodialParamA RasSetAutodialParam; - //} - - //static if (_WIN32_WINNT >= 0x500) { - alias RasGetEapUserDataA RasGetEapUserData; - alias RasSetEapUserDataA RasSetEapUserData; - alias RasGetCustomAuthDataA RasGetCustomAuthData; - alias RasSetCustomAuthDataA RasSetCustomAuthData; - alias RasGetEapUserIdentityA RasGetEapUserIdentity; - alias RasFreeEapUserIdentityA RasFreeEapUserIdentity; - //} + alias RasDialA RasDial; + alias RasEnumConnectionsA RasEnumConnections; + alias RasEnumEntriesA RasEnumEntries; + alias RasGetConnectStatusA RasGetConnectStatus; + alias RasGetErrorStringA RasGetErrorString; + alias RasHangUpA RasHangUp; + alias RasGetProjectionInfoA RasGetProjectionInfo; + alias RasCreatePhonebookEntryA RasCreatePhonebookEntry; + alias RasEditPhonebookEntryA RasEditPhonebookEntry; + alias RasSetEntryDialParamsA RasSetEntryDialParams; + alias RasGetEntryDialParamsA RasGetEntryDialParams; + alias RasEnumDevicesA RasEnumDevices; + alias RasGetCountryInfoA RasGetCountryInfo; + alias RasGetEntryPropertiesA RasGetEntryProperties; + alias RasSetEntryPropertiesA RasSetEntryProperties; + alias RasRenameEntryA RasRenameEntry; + alias RasDeleteEntryA RasDeleteEntry; + alias RasValidateEntryNameA RasValidateEntryName; + + //static if (_WIN32_WINNT >= 0x401) { + alias RASADFUNCA RASADFUNC; + alias RasGetSubEntryHandleA RasGetSubEntryHandle; + alias RasConnectionNotificationA RasConnectionNotification; + alias RasGetSubEntryPropertiesA RasGetSubEntryProperties; + alias RasSetSubEntryPropertiesA RasSetSubEntryProperties; + alias RasGetCredentialsA RasGetCredentials; + alias RasSetCredentialsA RasSetCredentials; + alias RasGetAutodialAddressA RasGetAutodialAddress; + alias RasSetAutodialAddressA RasSetAutodialAddress; + alias RasEnumAutodialAddressesA RasEnumAutodialAddresses; + alias RasGetAutodialEnableA RasGetAutodialEnable; + alias RasSetAutodialEnableA RasSetAutodialEnable; + alias RasGetAutodialParamA RasGetAutodialParam; + alias RasSetAutodialParamA RasSetAutodialParam; + //} + + //static if (_WIN32_WINNT >= 0x500) { + alias RasGetEapUserDataA RasGetEapUserData; + alias RasSetEapUserDataA RasSetEapUserData; + alias RasGetCustomAuthDataA RasGetCustomAuthData; + alias RasSetCustomAuthDataA RasSetCustomAuthData; + alias RasGetEapUserIdentityA RasGetEapUserIdentity; + alias RasFreeEapUserIdentityA RasFreeEapUserIdentity; + //} } //#endif // !Unicode diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d index ff6e87bcc5..a3fd494fb8 100644 --- a/src/core/sys/windows/rasdlg.d +++ b/src/core/sys/windows/rasdlg.d @@ -13,13 +13,13 @@ import core.sys.windows.ras; private import core.sys.windows.lmcons, core.sys.windows.windef; enum { - RASPBDEVENT_AddEntry = 1, - RASPBDEVENT_EditEntry, - RASPBDEVENT_RemoveEntry, - RASPBDEVENT_DialEntry, - RASPBDEVENT_EditGlobals, - RASPBDEVENT_NoUser, - RASPBDEVENT_NoUserEdit + RASPBDEVENT_AddEntry = 1, + RASPBDEVENT_EditEntry, + RASPBDEVENT_RemoveEntry, + RASPBDEVENT_DialEntry, + RASPBDEVENT_EditGlobals, + RASPBDEVENT_NoUser, + RASPBDEVENT_NoUserEdit } const RASPBDFLAG_PositionDlg = 1; @@ -35,122 +35,122 @@ const RASDDFLAG_PositionDlg = 1; align(4): struct RASENTRYDLGA { - DWORD dwSize = RASENTRYDLGA.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - CHAR[RAS_MaxEntryName + 1] szEntry; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; + DWORD dwSize = RASENTRYDLGA.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + CHAR[RAS_MaxEntryName + 1] szEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; } alias RASENTRYDLGA* LPRASENTRYDLGA; struct RASENTRYDLGW { - DWORD dwSize = RASENTRYDLGW.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - WCHAR[RAS_MaxEntryName + 1] szEntry; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; + DWORD dwSize = RASENTRYDLGW.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + WCHAR[RAS_MaxEntryName + 1] szEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; } alias RASENTRYDLGW* LPRASENTRYDLGW; struct RASDIALDLG { - DWORD dwSize; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - DWORD dwSubEntry; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + DWORD dwSubEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; } alias RASDIALDLG* LPRASDIALDLG; // Application-defined callback functions extern (Windows) { - alias VOID function(DWORD, DWORD, LPWSTR, LPVOID) RASPBDLGFUNCW; - alias VOID function(DWORD, DWORD, LPSTR, LPVOID) RASPBDLGFUNCA; + alias VOID function(DWORD, DWORD, LPWSTR, LPVOID) RASPBDLGFUNCW; + alias VOID function(DWORD, DWORD, LPSTR, LPVOID) RASPBDLGFUNCA; } struct RASPBDLGA { - DWORD dwSize = RASPBDLGA.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - ULONG_PTR dwCallbackId; - RASPBDLGFUNCA pCallback; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; + DWORD dwSize = RASPBDLGA.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + ULONG_PTR dwCallbackId; + RASPBDLGFUNCA pCallback; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; } alias RASPBDLGA* LPRASPBDLGA; struct RASPBDLGW { - DWORD dwSize = RASPBDLGW.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - ULONG_PTR dwCallbackId; - RASPBDLGFUNCW pCallback; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; + DWORD dwSize = RASPBDLGW.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + ULONG_PTR dwCallbackId; + RASPBDLGFUNCW pCallback; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; } alias RASPBDLGW* LPRASPBDLGW; struct RASNOUSERA { - DWORD dwSize = RASNOUSERA.sizeof; - DWORD dwFlags; - DWORD dwTimeoutMs; - CHAR[UNLEN + 1] szUserName; - CHAR[PWLEN + 1] szPassword; - CHAR[DNLEN + 1] szDomain; + DWORD dwSize = RASNOUSERA.sizeof; + DWORD dwFlags; + DWORD dwTimeoutMs; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; } alias RASNOUSERA* LPRASNOUSERA; struct RASNOUSERW { - DWORD dwSize = RASNOUSERW.sizeof; - DWORD dwFlags; - DWORD dwTimeoutMs; - WCHAR[UNLEN + 1] szUserName; - WCHAR[PWLEN + 1] szPassword; - WCHAR[DNLEN + 1] szDomain; + DWORD dwSize = RASNOUSERW.sizeof; + DWORD dwFlags; + DWORD dwTimeoutMs; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; } alias RASNOUSERW* LPRASNOUSERW; extern (Windows) { - BOOL RasDialDlgA(LPSTR, LPSTR, LPSTR, LPRASDIALDLG); - BOOL RasDialDlgW(LPWSTR, LPWSTR, LPWSTR, LPRASDIALDLG); - BOOL RasEntryDlgA(LPSTR, LPSTR, LPRASENTRYDLGA); - BOOL RasEntryDlgW(LPWSTR, LPWSTR, LPRASENTRYDLGW); - BOOL RasPhonebookDlgA(LPSTR, LPSTR, LPRASPBDLGA); - BOOL RasPhonebookDlgW(LPWSTR, LPWSTR, LPRASPBDLGW); + BOOL RasDialDlgA(LPSTR, LPSTR, LPSTR, LPRASDIALDLG); + BOOL RasDialDlgW(LPWSTR, LPWSTR, LPWSTR, LPRASDIALDLG); + BOOL RasEntryDlgA(LPSTR, LPSTR, LPRASENTRYDLGA); + BOOL RasEntryDlgW(LPWSTR, LPWSTR, LPRASENTRYDLGW); + BOOL RasPhonebookDlgA(LPSTR, LPSTR, LPRASPBDLGA); + BOOL RasPhonebookDlgW(LPWSTR, LPWSTR, LPRASPBDLGW); } version (Unicode) { - alias RASENTRYDLGW RASENTRYDLG; - alias RASPBDLGW RASPBDLG; - alias RASNOUSERW RASNOUSER; - alias RasDialDlgW RasDialDlg; - alias RasEntryDlgW RasEntryDlg; - alias RasPhonebookDlgW RasPhonebookDlg; + alias RASENTRYDLGW RASENTRYDLG; + alias RASPBDLGW RASPBDLG; + alias RASNOUSERW RASNOUSER; + alias RasDialDlgW RasDialDlg; + alias RasEntryDlgW RasEntryDlg; + alias RasPhonebookDlgW RasPhonebookDlg; } else { - alias RASENTRYDLGA RASENTRYDLG; - alias RASPBDLGA RASPBDLG; - alias RASNOUSERA RASNOUSER; - alias RasDialDlgA RasDialDlg; - alias RasEntryDlgA RasEntryDlg; - alias RasPhonebookDlgA RasPhonebookDlg; + alias RASENTRYDLGA RASENTRYDLG; + alias RASPBDLGA RASPBDLG; + alias RASNOUSERA RASNOUSER; + alias RasDialDlgA RasDialDlg; + alias RasEntryDlgA RasEntryDlg; + alias RasPhonebookDlgA RasPhonebookDlg; } alias RASENTRYDLG* LPRASENTRYDLG; diff --git a/src/core/sys/windows/raserror.d b/src/core/sys/windows/raserror.d index e23011f0fe..b5490d39a8 100644 --- a/src/core/sys/windows/raserror.d +++ b/src/core/sys/windows/raserror.d @@ -9,206 +9,206 @@ module core.sys.windows.raserror; enum { - SUCCESS = 0, - RASBASE = 600, - PENDING = RASBASE, - ERROR_INVALID_PORT_HANDLE, - ERROR_PORT_ALREADY_OPEN, - ERROR_BUFFER_TOO_SMALL, - ERROR_WRONG_INFO_SPECIFIED, - ERROR_CANNOT_SET_PORT_INFO, - ERROR_PORT_NOT_CONNECTED, - ERROR_EVENT_INVALID, - ERROR_DEVICE_DOES_NOT_EXIST, - ERROR_DEVICETYPE_DOES_NOT_EXIST, - ERROR_BUFFER_INVALID, - ERROR_ROUTE_NOT_AVAILABLE, - ERROR_ROUTE_NOT_ALLOCATED, - ERROR_INVALID_COMPRESSION_SPECIFIED, - ERROR_OUT_OF_BUFFERS, - ERROR_PORT_NOT_FOUND, - ERROR_ASYNC_REQUEST_PENDING, - ERROR_ALREADY_DISCONNECTING, - ERROR_PORT_NOT_OPEN, - ERROR_PORT_DISCONNECTED, - ERROR_NO_ENDPOINTS, - ERROR_CANNOT_OPEN_PHONEBOOK, - ERROR_CANNOT_LOAD_PHONEBOOK, - ERROR_CANNOT_FIND_PHONEBOOK_ENTRY, - ERROR_CANNOT_WRITE_PHONEBOOK, - ERROR_CORRUPT_PHONEBOOK, - ERROR_CANNOT_LOAD_STRING, - ERROR_KEY_NOT_FOUND, - ERROR_DISCONNECTION, - ERROR_REMOTE_DISCONNECTION, - ERROR_HARDWARE_FAILURE, - ERROR_USER_DISCONNECTION, - ERROR_INVALID_SIZE, - ERROR_PORT_NOT_AVAILABLE, - ERROR_CANNOT_PROJECT_CLIENT, - ERROR_UNKNOWN, - ERROR_WRONG_DEVICE_ATTACHED, - ERROR_BAD_STRING, - ERROR_REQUEST_TIMEOUT, - ERROR_CANNOT_GET_LANA, - ERROR_NETBIOS_ERROR, - ERROR_SERVER_OUT_OF_RESOURCES, - ERROR_NAME_EXISTS_ON_NET, - ERROR_SERVER_GENERAL_NET_FAILURE, - WARNING_MSG_ALIAS_NOT_ADDED, - ERROR_AUTH_INTERNAL, - ERROR_RESTRICTED_LOGON_HOURS, - ERROR_ACCT_DISABLED, - ERROR_PASSWD_EXPIRED, - ERROR_NO_DIALIN_PERMISSION, - ERROR_SERVER_NOT_RESPONDING, - ERROR_FROM_DEVICE, - ERROR_UNRECOGNIZED_RESPONSE, - ERROR_MACRO_NOT_FOUND, - ERROR_MACRO_NOT_DEFINED, - ERROR_MESSAGE_MACRO_NOT_FOUND, - ERROR_DEFAULTOFF_MACRO_NOT_FOUND, - ERROR_FILE_COULD_NOT_BE_OPENED, - ERROR_DEVICENAME_TOO_LONG, - ERROR_DEVICENAME_NOT_FOUND, - ERROR_NO_RESPONSES, - ERROR_NO_COMMAND_FOUND, - ERROR_WRONG_KEY_SPECIFIED, - ERROR_UNKNOWN_DEVICE_TYPE, - ERROR_ALLOCATING_MEMORY, - ERROR_PORT_NOT_CONFIGURED, - ERROR_DEVICE_NOT_READY, - ERROR_READING_INI_FILE, - ERROR_NO_CONNECTION, - ERROR_BAD_USAGE_IN_INI_FILE, - ERROR_READING_SECTIONNAME, - ERROR_READING_DEVICETYPE, - ERROR_READING_DEVICENAME, - ERROR_READING_USAGE, - ERROR_READING_MAXCONNECTBPS, - ERROR_READING_MAXCARRIERBPS, - ERROR_LINE_BUSY, - ERROR_VOICE_ANSWER, - ERROR_NO_ANSWER, - ERROR_NO_CARRIER, - ERROR_NO_DIALTONE, - ERROR_IN_COMMAND, - ERROR_WRITING_SECTIONNAME, - ERROR_WRITING_DEVICETYPE, - ERROR_WRITING_DEVICENAME, - ERROR_WRITING_MAXCONNECTBPS, - ERROR_WRITING_MAXCARRIERBPS, - ERROR_WRITING_USAGE, - ERROR_WRITING_DEFAULTOFF, - ERROR_READING_DEFAULTOFF, - ERROR_EMPTY_INI_FILE, - ERROR_AUTHENTICATION_FAILURE, - ERROR_PORT_OR_DEVICE, - ERROR_NOT_BINARY_MACRO, - ERROR_DCB_NOT_FOUND, - ERROR_STATE_MACHINES_NOT_STARTED, - ERROR_STATE_MACHINES_ALREADY_STARTED, - ERROR_PARTIAL_RESPONSE_LOOPING, - ERROR_UNKNOWN_RESPONSE_KEY, - ERROR_RECV_BUF_FULL, - ERROR_CMD_TOO_LONG, - ERROR_UNSUPPORTED_BPS, - ERROR_UNEXPECTED_RESPONSE, - ERROR_INTERACTIVE_MODE, - ERROR_BAD_CALLBACK_NUMBER, - ERROR_INVALID_AUTH_STATE, - ERROR_WRITING_INITBPS, - ERROR_X25_DIAGNOSTIC, - ERROR_ACCT_EXPIRED, - ERROR_CHANGING_PASSWORD, - ERROR_OVERRUN, - ERROR_RASMAN_CANNOT_INITIALIZE, - ERROR_BIPLEX_PORT_NOT_AVAILABLE, - ERROR_NO_ACTIVE_ISDN_LINES, - ERROR_NO_ISDN_CHANNELS_AVAILABLE, - ERROR_TOO_MANY_LINE_ERRORS, - ERROR_IP_CONFIGURATION, - ERROR_NO_IP_ADDRESSES, - ERROR_PPP_TIMEOUT, - ERROR_PPP_REMOTE_TERMINATED, - ERROR_PPP_NO_PROTOCOLS_CONFIGURED, - ERROR_PPP_NO_RESPONSE, - ERROR_PPP_INVALID_PACKET, - ERROR_PHONE_NUMBER_TOO_LONG, - ERROR_IPXCP_NO_DIALOUT_CONFIGURED, - ERROR_IPXCP_NO_DIALIN_CONFIGURED, - ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE, - ERROR_ACCESSING_TCPCFGDLL, - ERROR_NO_IP_RAS_ADAPTER, - ERROR_SLIP_REQUIRES_IP, - ERROR_PROJECTION_NOT_COMPLETE, - ERROR_PROTOCOL_NOT_CONFIGURED, - ERROR_PPP_NOT_CONVERGING, - ERROR_PPP_CP_REJECTED, - ERROR_PPP_LCP_TERMINATED, - ERROR_PPP_REQUIRED_ADDRESS_REJECTED, - ERROR_PPP_NCP_TERMINATED, - ERROR_PPP_LOOPBACK_DETECTED, - ERROR_PPP_NO_ADDRESS_ASSIGNED, - ERROR_CANNOT_USE_LOGON_CREDENTIALS, - ERROR_TAPI_CONFIGURATION, - ERROR_NO_LOCAL_ENCRYPTION, - ERROR_NO_REMOTE_ENCRYPTION, - ERROR_REMOTE_REQUIRES_ENCRYPTION, - ERROR_IPXCP_NET_NUMBER_CONFLICT, - ERROR_INVALID_SMM, - ERROR_SMM_UNINITIALIZED, - ERROR_NO_MAC_FOR_PORT, - ERROR_SMM_TIMEOUT, - ERROR_BAD_PHONE_NUMBER, - ERROR_WRONG_MODULE, - ERROR_INVALID_CALLBACK_NUMBER, - ERROR_SCRIPT_SYNTAX, - ERROR_HANGUP_FAILED, - ERROR_BUNDLE_NOT_FOUND, - ERROR_CANNOT_DO_CUSTOMDIAL, - ERROR_DIAL_ALREADY_IN_PROGRESS, - ERROR_RASAUTO_CANNOT_INITIALIZE, - ERROR_CONNECTION_ALREADY_SHARED, - ERROR_SHARING_CHANGE_FAILED, - ERROR_SHARING_ROUTER_INSTALL, - ERROR_SHARE_CONNECTION_FAILED, - ERROR_SHARING_PRIVATE_INSTALL, - ERROR_CANNOT_SHARE_CONNECTION, - ERROR_NO_SMART_CARD_READER, - ERROR_SHARING_ADDRESS_EXISTS, - ERROR_NO_CERTIFICATE, - ERROR_SHARING_MULTIPLE_ADDRESSES, - ERROR_FAILED_TO_ENCRYPT, - ERROR_BAD_ADDRESS_SPECIFIED, - ERROR_CONNECTION_REJECT, - ERROR_CONGESTION, - ERROR_INCOMPATIBLE, - ERROR_NUMBERCHANGED, - ERROR_TEMPFAILURE, - ERROR_BLOCKED, - ERROR_DONOTDISTURB, - ERROR_OUTOFORDER, - ERROR_UNABLE_TO_AUTHENTICATE_SERVER, - ERROR_SMART_CARD_REQUIRED, - ERROR_INVALID_FUNCTION_FOR_ENTRY, - ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND, - ERROR_SHARING_RRAS_CONFLICT, - ERROR_SHARING_NO_PRIVATE_LAN, - ERROR_NO_DIFF_USER_AT_LOGON, - ERROR_NO_REG_CERT_AT_LOGON, - ERROR_OAKLEY_NO_CERT, - ERROR_OAKLEY_AUTH_FAIL, - ERROR_OAKLEY_ATTRIB_FAIL, - ERROR_OAKLEY_GENERAL_PROCESSING, - ERROR_OAKLEY_NO_PEER_CERT, - ERROR_OAKLEY_NO_POLICY, - ERROR_OAKLEY_TIMED_OUT, - ERROR_OAKLEY_ERROR, - ERROR_UNKNOWN_FRAMED_PROTOCOL, - ERROR_WRONG_TUNNEL_TYPE, - ERROR_UNKNOWN_SERVICE_TYPE, - ERROR_CONNECTING_DEVICE_NOT_FOUND, - ERROR_NO_EAPTLS_CERTIFICATE, // = RASBASE+198 - RASBASEEND = ERROR_NO_EAPTLS_CERTIFICATE + SUCCESS = 0, + RASBASE = 600, + PENDING = RASBASE, + ERROR_INVALID_PORT_HANDLE, + ERROR_PORT_ALREADY_OPEN, + ERROR_BUFFER_TOO_SMALL, + ERROR_WRONG_INFO_SPECIFIED, + ERROR_CANNOT_SET_PORT_INFO, + ERROR_PORT_NOT_CONNECTED, + ERROR_EVENT_INVALID, + ERROR_DEVICE_DOES_NOT_EXIST, + ERROR_DEVICETYPE_DOES_NOT_EXIST, + ERROR_BUFFER_INVALID, + ERROR_ROUTE_NOT_AVAILABLE, + ERROR_ROUTE_NOT_ALLOCATED, + ERROR_INVALID_COMPRESSION_SPECIFIED, + ERROR_OUT_OF_BUFFERS, + ERROR_PORT_NOT_FOUND, + ERROR_ASYNC_REQUEST_PENDING, + ERROR_ALREADY_DISCONNECTING, + ERROR_PORT_NOT_OPEN, + ERROR_PORT_DISCONNECTED, + ERROR_NO_ENDPOINTS, + ERROR_CANNOT_OPEN_PHONEBOOK, + ERROR_CANNOT_LOAD_PHONEBOOK, + ERROR_CANNOT_FIND_PHONEBOOK_ENTRY, + ERROR_CANNOT_WRITE_PHONEBOOK, + ERROR_CORRUPT_PHONEBOOK, + ERROR_CANNOT_LOAD_STRING, + ERROR_KEY_NOT_FOUND, + ERROR_DISCONNECTION, + ERROR_REMOTE_DISCONNECTION, + ERROR_HARDWARE_FAILURE, + ERROR_USER_DISCONNECTION, + ERROR_INVALID_SIZE, + ERROR_PORT_NOT_AVAILABLE, + ERROR_CANNOT_PROJECT_CLIENT, + ERROR_UNKNOWN, + ERROR_WRONG_DEVICE_ATTACHED, + ERROR_BAD_STRING, + ERROR_REQUEST_TIMEOUT, + ERROR_CANNOT_GET_LANA, + ERROR_NETBIOS_ERROR, + ERROR_SERVER_OUT_OF_RESOURCES, + ERROR_NAME_EXISTS_ON_NET, + ERROR_SERVER_GENERAL_NET_FAILURE, + WARNING_MSG_ALIAS_NOT_ADDED, + ERROR_AUTH_INTERNAL, + ERROR_RESTRICTED_LOGON_HOURS, + ERROR_ACCT_DISABLED, + ERROR_PASSWD_EXPIRED, + ERROR_NO_DIALIN_PERMISSION, + ERROR_SERVER_NOT_RESPONDING, + ERROR_FROM_DEVICE, + ERROR_UNRECOGNIZED_RESPONSE, + ERROR_MACRO_NOT_FOUND, + ERROR_MACRO_NOT_DEFINED, + ERROR_MESSAGE_MACRO_NOT_FOUND, + ERROR_DEFAULTOFF_MACRO_NOT_FOUND, + ERROR_FILE_COULD_NOT_BE_OPENED, + ERROR_DEVICENAME_TOO_LONG, + ERROR_DEVICENAME_NOT_FOUND, + ERROR_NO_RESPONSES, + ERROR_NO_COMMAND_FOUND, + ERROR_WRONG_KEY_SPECIFIED, + ERROR_UNKNOWN_DEVICE_TYPE, + ERROR_ALLOCATING_MEMORY, + ERROR_PORT_NOT_CONFIGURED, + ERROR_DEVICE_NOT_READY, + ERROR_READING_INI_FILE, + ERROR_NO_CONNECTION, + ERROR_BAD_USAGE_IN_INI_FILE, + ERROR_READING_SECTIONNAME, + ERROR_READING_DEVICETYPE, + ERROR_READING_DEVICENAME, + ERROR_READING_USAGE, + ERROR_READING_MAXCONNECTBPS, + ERROR_READING_MAXCARRIERBPS, + ERROR_LINE_BUSY, + ERROR_VOICE_ANSWER, + ERROR_NO_ANSWER, + ERROR_NO_CARRIER, + ERROR_NO_DIALTONE, + ERROR_IN_COMMAND, + ERROR_WRITING_SECTIONNAME, + ERROR_WRITING_DEVICETYPE, + ERROR_WRITING_DEVICENAME, + ERROR_WRITING_MAXCONNECTBPS, + ERROR_WRITING_MAXCARRIERBPS, + ERROR_WRITING_USAGE, + ERROR_WRITING_DEFAULTOFF, + ERROR_READING_DEFAULTOFF, + ERROR_EMPTY_INI_FILE, + ERROR_AUTHENTICATION_FAILURE, + ERROR_PORT_OR_DEVICE, + ERROR_NOT_BINARY_MACRO, + ERROR_DCB_NOT_FOUND, + ERROR_STATE_MACHINES_NOT_STARTED, + ERROR_STATE_MACHINES_ALREADY_STARTED, + ERROR_PARTIAL_RESPONSE_LOOPING, + ERROR_UNKNOWN_RESPONSE_KEY, + ERROR_RECV_BUF_FULL, + ERROR_CMD_TOO_LONG, + ERROR_UNSUPPORTED_BPS, + ERROR_UNEXPECTED_RESPONSE, + ERROR_INTERACTIVE_MODE, + ERROR_BAD_CALLBACK_NUMBER, + ERROR_INVALID_AUTH_STATE, + ERROR_WRITING_INITBPS, + ERROR_X25_DIAGNOSTIC, + ERROR_ACCT_EXPIRED, + ERROR_CHANGING_PASSWORD, + ERROR_OVERRUN, + ERROR_RASMAN_CANNOT_INITIALIZE, + ERROR_BIPLEX_PORT_NOT_AVAILABLE, + ERROR_NO_ACTIVE_ISDN_LINES, + ERROR_NO_ISDN_CHANNELS_AVAILABLE, + ERROR_TOO_MANY_LINE_ERRORS, + ERROR_IP_CONFIGURATION, + ERROR_NO_IP_ADDRESSES, + ERROR_PPP_TIMEOUT, + ERROR_PPP_REMOTE_TERMINATED, + ERROR_PPP_NO_PROTOCOLS_CONFIGURED, + ERROR_PPP_NO_RESPONSE, + ERROR_PPP_INVALID_PACKET, + ERROR_PHONE_NUMBER_TOO_LONG, + ERROR_IPXCP_NO_DIALOUT_CONFIGURED, + ERROR_IPXCP_NO_DIALIN_CONFIGURED, + ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE, + ERROR_ACCESSING_TCPCFGDLL, + ERROR_NO_IP_RAS_ADAPTER, + ERROR_SLIP_REQUIRES_IP, + ERROR_PROJECTION_NOT_COMPLETE, + ERROR_PROTOCOL_NOT_CONFIGURED, + ERROR_PPP_NOT_CONVERGING, + ERROR_PPP_CP_REJECTED, + ERROR_PPP_LCP_TERMINATED, + ERROR_PPP_REQUIRED_ADDRESS_REJECTED, + ERROR_PPP_NCP_TERMINATED, + ERROR_PPP_LOOPBACK_DETECTED, + ERROR_PPP_NO_ADDRESS_ASSIGNED, + ERROR_CANNOT_USE_LOGON_CREDENTIALS, + ERROR_TAPI_CONFIGURATION, + ERROR_NO_LOCAL_ENCRYPTION, + ERROR_NO_REMOTE_ENCRYPTION, + ERROR_REMOTE_REQUIRES_ENCRYPTION, + ERROR_IPXCP_NET_NUMBER_CONFLICT, + ERROR_INVALID_SMM, + ERROR_SMM_UNINITIALIZED, + ERROR_NO_MAC_FOR_PORT, + ERROR_SMM_TIMEOUT, + ERROR_BAD_PHONE_NUMBER, + ERROR_WRONG_MODULE, + ERROR_INVALID_CALLBACK_NUMBER, + ERROR_SCRIPT_SYNTAX, + ERROR_HANGUP_FAILED, + ERROR_BUNDLE_NOT_FOUND, + ERROR_CANNOT_DO_CUSTOMDIAL, + ERROR_DIAL_ALREADY_IN_PROGRESS, + ERROR_RASAUTO_CANNOT_INITIALIZE, + ERROR_CONNECTION_ALREADY_SHARED, + ERROR_SHARING_CHANGE_FAILED, + ERROR_SHARING_ROUTER_INSTALL, + ERROR_SHARE_CONNECTION_FAILED, + ERROR_SHARING_PRIVATE_INSTALL, + ERROR_CANNOT_SHARE_CONNECTION, + ERROR_NO_SMART_CARD_READER, + ERROR_SHARING_ADDRESS_EXISTS, + ERROR_NO_CERTIFICATE, + ERROR_SHARING_MULTIPLE_ADDRESSES, + ERROR_FAILED_TO_ENCRYPT, + ERROR_BAD_ADDRESS_SPECIFIED, + ERROR_CONNECTION_REJECT, + ERROR_CONGESTION, + ERROR_INCOMPATIBLE, + ERROR_NUMBERCHANGED, + ERROR_TEMPFAILURE, + ERROR_BLOCKED, + ERROR_DONOTDISTURB, + ERROR_OUTOFORDER, + ERROR_UNABLE_TO_AUTHENTICATE_SERVER, + ERROR_SMART_CARD_REQUIRED, + ERROR_INVALID_FUNCTION_FOR_ENTRY, + ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND, + ERROR_SHARING_RRAS_CONFLICT, + ERROR_SHARING_NO_PRIVATE_LAN, + ERROR_NO_DIFF_USER_AT_LOGON, + ERROR_NO_REG_CERT_AT_LOGON, + ERROR_OAKLEY_NO_CERT, + ERROR_OAKLEY_AUTH_FAIL, + ERROR_OAKLEY_ATTRIB_FAIL, + ERROR_OAKLEY_GENERAL_PROCESSING, + ERROR_OAKLEY_NO_PEER_CERT, + ERROR_OAKLEY_NO_POLICY, + ERROR_OAKLEY_TIMED_OUT, + ERROR_OAKLEY_ERROR, + ERROR_UNKNOWN_FRAMED_PROTOCOL, + ERROR_WRONG_TUNNEL_TYPE, + ERROR_UNKNOWN_SERVICE_TYPE, + ERROR_CONNECTING_DEVICE_NOT_FOUND, + ERROR_NO_EAPTLS_CERTIFICATE, // = RASBASE+198 + RASBASEEND = ERROR_NO_EAPTLS_CERTIFICATE } diff --git a/src/core/sys/windows/rassapi.d b/src/core/sys/windows/rassapi.d index 785dbfbc03..2f7532730c 100644 --- a/src/core/sys/windows/rassapi.d +++ b/src/core/sys/windows/rassapi.d @@ -14,12 +14,12 @@ private import core.sys.windows.lmcons, core.sys.windows.windef; // FIXME: check types of constants const size_t - RASSAPI_MAX_PHONENUMBER_SIZE = 128, - RASSAPI_MAX_MEDIA_NAME = 16, - RASSAPI_MAX_PORT_NAME = 16, - RASSAPI_MAX_DEVICE_NAME = 128, - RASSAPI_MAX_DEVICETYPE_NAME = 16, - RASSAPI_MAX_PARAM_KEY_SIZE = 32; + RASSAPI_MAX_PHONENUMBER_SIZE = 128, + RASSAPI_MAX_MEDIA_NAME = 16, + RASSAPI_MAX_PORT_NAME = 16, + RASSAPI_MAX_DEVICE_NAME = 128, + RASSAPI_MAX_DEVICETYPE_NAME = 16, + RASSAPI_MAX_PARAM_KEY_SIZE = 32; const RASPRIV_NoCallback = 0x01; const RASPRIV_AdminSetCallback = 0x02; @@ -28,29 +28,29 @@ const RASPRIV_DialinPrivilege = 0x08; const RASPRIV_CallbackType = 0x07; enum { - RAS_MODEM_OPERATIONAL = 1, - RAS_MODEM_NOT_RESPONDING, - RAS_MODEM_HARDWARE_FAILURE, - RAS_MODEM_INCORRECT_RESPONSE, - RAS_MODEM_UNKNOWN // = 5 + RAS_MODEM_OPERATIONAL = 1, + RAS_MODEM_NOT_RESPONDING, + RAS_MODEM_HARDWARE_FAILURE, + RAS_MODEM_INCORRECT_RESPONSE, + RAS_MODEM_UNKNOWN // = 5 } enum { - RAS_PORT_NON_OPERATIONAL = 1, - RAS_PORT_DISCONNECTED, - RAS_PORT_CALLING_BACK, - RAS_PORT_LISTENING, - RAS_PORT_AUTHENTICATING, - RAS_PORT_AUTHENTICATED, - RAS_PORT_INITIALIZING // = 7 + RAS_PORT_NON_OPERATIONAL = 1, + RAS_PORT_DISCONNECTED, + RAS_PORT_CALLING_BACK, + RAS_PORT_LISTENING, + RAS_PORT_AUTHENTICATING, + RAS_PORT_AUTHENTICATED, + RAS_PORT_INITIALIZING // = 7 } enum { - MEDIA_UNKNOWN, - MEDIA_SERIAL, - MEDIA_RAS10_SERIAL, - MEDIA_X25, - MEDIA_ISDN + MEDIA_UNKNOWN, + MEDIA_SERIAL, + MEDIA_RAS10_SERIAL, + MEDIA_X25, + MEDIA_ISDN } const USER_AUTHENTICATED = 0x0001; @@ -61,15 +61,15 @@ const REMOTE_LISTEN = 0x0010; const PORT_MULTILINKED = 0x0020; const size_t - RAS_IPADDRESSLEN = 15, - RAS_IPXADDRESSLEN = 22, - RAS_ATADDRESSLEN = 32; + RAS_IPADDRESSLEN = 15, + RAS_IPXADDRESSLEN = 22, + RAS_ATADDRESSLEN = 32; // FIXME: should these be grouped together? enum { - RASDOWNLEVEL = 10, - RASADMIN_35 = 35, - RASADMIN_CURRENT = 40 + RASDOWNLEVEL = 10, + RASADMIN_35 = 35, + RASADMIN_CURRENT = 40 } alias ULONG IPADDR; @@ -80,140 +80,140 @@ enum RAS_PARAMS_FORMAT { } union RAS_PARAMS_VALUE { - DWORD Number; - struct _String { - DWORD Length; - PCHAR Data; - } - _String String; + DWORD Number; + struct _String { + DWORD Length; + PCHAR Data; + } + _String String; } struct RAS_PARAMETERS { - CHAR[RASSAPI_MAX_PARAM_KEY_SIZE] P_Key; - RAS_PARAMS_FORMAT P_Type; - BYTE P_Attributes; - RAS_PARAMS_VALUE P_Value; + CHAR[RASSAPI_MAX_PARAM_KEY_SIZE] P_Key; + RAS_PARAMS_FORMAT P_Type; + BYTE P_Attributes; + RAS_PARAMS_VALUE P_Value; } struct RAS_USER_0 { - BYTE bfPrivilege; - WCHAR[RASSAPI_MAX_PHONENUMBER_SIZE + 1] szPhoneNumber; + BYTE bfPrivilege; + WCHAR[RASSAPI_MAX_PHONENUMBER_SIZE + 1] szPhoneNumber; } alias RAS_USER_0* PRAS_USER_0; struct RAS_PORT_0 { - WCHAR[RASSAPI_MAX_PORT_NAME] wszPortName; - WCHAR[RASSAPI_MAX_DEVICETYPE_NAME] wszDeviceType; - WCHAR[RASSAPI_MAX_DEVICE_NAME] wszDeviceName; - WCHAR[RASSAPI_MAX_MEDIA_NAME] wszMediaName; - DWORD reserved; - DWORD Flags; - WCHAR[UNLEN + 1] wszUserName; - WCHAR[NETBIOS_NAME_LEN] wszComputer; - DWORD dwStartSessionTime; // seconds from 1/1/1970 - WCHAR[DNLEN + 1] wszLogonDomain; - BOOL fAdvancedServer; + WCHAR[RASSAPI_MAX_PORT_NAME] wszPortName; + WCHAR[RASSAPI_MAX_DEVICETYPE_NAME] wszDeviceType; + WCHAR[RASSAPI_MAX_DEVICE_NAME] wszDeviceName; + WCHAR[RASSAPI_MAX_MEDIA_NAME] wszMediaName; + DWORD reserved; + DWORD Flags; + WCHAR[UNLEN + 1] wszUserName; + WCHAR[NETBIOS_NAME_LEN] wszComputer; + DWORD dwStartSessionTime; // seconds from 1/1/1970 + WCHAR[DNLEN + 1] wszLogonDomain; + BOOL fAdvancedServer; } alias RAS_PORT_0* PRAS_PORT_0; struct RAS_PPP_NBFCP_RESULT { - DWORD dwError; - DWORD dwNetBiosError; - CHAR[NETBIOS_NAME_LEN + 1] szName; - WCHAR[NETBIOS_NAME_LEN + 1] wszWksta; + DWORD dwError; + DWORD dwNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szName; + WCHAR[NETBIOS_NAME_LEN + 1] wszWksta; } struct RAS_PPP_IPCP_RESULT { - DWORD dwError; - WCHAR[RAS_IPADDRESSLEN + 1] wszAddress; + DWORD dwError; + WCHAR[RAS_IPADDRESSLEN + 1] wszAddress; } struct RAS_PPP_IPXCP_RESULT { - DWORD dwError; - WCHAR[RAS_IPXADDRESSLEN + 1] wszAddress; + DWORD dwError; + WCHAR[RAS_IPXADDRESSLEN + 1] wszAddress; } struct RAS_PPP_ATCP_RESULT { - DWORD dwError; - WCHAR[RAS_ATADDRESSLEN + 1] wszAddress; + DWORD dwError; + WCHAR[RAS_ATADDRESSLEN + 1] wszAddress; } struct RAS_PPP_PROJECTION_RESULT { - RAS_PPP_NBFCP_RESULT nbf; - RAS_PPP_IPCP_RESULT ip; - RAS_PPP_IPXCP_RESULT ipx; - RAS_PPP_ATCP_RESULT at; + RAS_PPP_NBFCP_RESULT nbf; + RAS_PPP_IPCP_RESULT ip; + RAS_PPP_IPXCP_RESULT ipx; + RAS_PPP_ATCP_RESULT at; } struct RAS_PORT_1 { - RAS_PORT_0 rasport0; - DWORD LineCondition; - DWORD HardwareCondition; - DWORD LineSpeed; - WORD NumStatistics; - WORD NumMediaParms; - DWORD SizeMediaParms; - RAS_PPP_PROJECTION_RESULT ProjResult; + RAS_PORT_0 rasport0; + DWORD LineCondition; + DWORD HardwareCondition; + DWORD LineSpeed; + WORD NumStatistics; + WORD NumMediaParms; + DWORD SizeMediaParms; + RAS_PPP_PROJECTION_RESULT ProjResult; } alias RAS_PORT_1* PRAS_PORT_1; struct RAS_PORT_STATISTICS { - DWORD dwBytesXmited; - DWORD dwBytesRcved; - DWORD dwFramesXmited; - DWORD dwFramesRcved; - DWORD dwCrcErr; - DWORD dwTimeoutErr; - DWORD dwAlignmentErr; - DWORD dwHardwareOverrunErr; - DWORD dwFramingErr; - DWORD dwBufferOverrunErr; - DWORD dwBytesXmitedUncompressed; - DWORD dwBytesRcvedUncompressed; - DWORD dwBytesXmitedCompressed; - DWORD dwBytesRcvedCompressed; - DWORD dwPortBytesXmited; - DWORD dwPortBytesRcved; - DWORD dwPortFramesXmited; - DWORD dwPortFramesRcved; - DWORD dwPortCrcErr; - DWORD dwPortTimeoutErr; - DWORD dwPortAlignmentErr; - DWORD dwPortHardwareOverrunErr; - DWORD dwPortFramingErr; - DWORD dwPortBufferOverrunErr; - DWORD dwPortBytesXmitedUncompressed; - DWORD dwPortBytesRcvedUncompressed; - DWORD dwPortBytesXmitedCompressed; - DWORD dwPortBytesRcvedCompressed; + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwBytesXmitedUncompressed; + DWORD dwBytesRcvedUncompressed; + DWORD dwBytesXmitedCompressed; + DWORD dwBytesRcvedCompressed; + DWORD dwPortBytesXmited; + DWORD dwPortBytesRcved; + DWORD dwPortFramesXmited; + DWORD dwPortFramesRcved; + DWORD dwPortCrcErr; + DWORD dwPortTimeoutErr; + DWORD dwPortAlignmentErr; + DWORD dwPortHardwareOverrunErr; + DWORD dwPortFramingErr; + DWORD dwPortBufferOverrunErr; + DWORD dwPortBytesXmitedUncompressed; + DWORD dwPortBytesRcvedUncompressed; + DWORD dwPortBytesXmitedCompressed; + DWORD dwPortBytesRcvedCompressed; } alias RAS_PORT_STATISTICS* PRAS_PORT_STATISTICS; struct RAS_SERVER_0 { - WORD TotalPorts; - WORD PortsInUse; - DWORD RasVersion; + WORD TotalPorts; + WORD PortsInUse; + DWORD RasVersion; } alias RAS_SERVER_0* PRAS_SERVER_0; extern (Windows) { - DWORD RasAdminServerGetInfo(const(WCHAR)*, PRAS_SERVER_0); - DWORD RasAdminGetUserAccountServer(const(WCHAR)*, const(WCHAR)*, LPWSTR); - DWORD RasAdminUserGetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); - DWORD RasAdminUserSetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); - DWORD RasAdminPortEnum(WCHAR*, PRAS_PORT_0*, WORD*); - DWORD RasAdminPortGetInfo(const(WCHAR)*, const(WCHAR)*, RAS_PORT_1*, - RAS_PORT_STATISTICS*, RAS_PARAMETERS**); - DWORD RasAdminPortClearStatistics(const(WCHAR)*, const(WCHAR)*); - DWORD RasAdminPortDisconnect(const(WCHAR)*, const(WCHAR)*); - DWORD RasAdminFreeBuffer(PVOID); - DWORD RasAdminGetErrorString(UINT, WCHAR*, DWORD); - BOOL RasAdminAcceptNewConnection(RAS_PORT_1*, RAS_PORT_STATISTICS*, - RAS_PARAMETERS*); - VOID RasAdminConnectionHangupNotification(RAS_PORT_1*, - RAS_PORT_STATISTICS*, RAS_PARAMETERS*); - DWORD RasAdminGetIpAddressForUser (WCHAR*, WCHAR*, IPADDR*, BOOL*); - VOID RasAdminReleaseIpAddress (WCHAR*, WCHAR*,IPADDR*); - DWORD RasAdminGetUserParms(WCHAR*, PRAS_USER_0); - DWORD RasAdminSetUserParms(WCHAR*, DWORD, PRAS_USER_0); + DWORD RasAdminServerGetInfo(const(WCHAR)*, PRAS_SERVER_0); + DWORD RasAdminGetUserAccountServer(const(WCHAR)*, const(WCHAR)*, LPWSTR); + DWORD RasAdminUserGetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); + DWORD RasAdminUserSetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); + DWORD RasAdminPortEnum(WCHAR*, PRAS_PORT_0*, WORD*); + DWORD RasAdminPortGetInfo(const(WCHAR)*, const(WCHAR)*, RAS_PORT_1*, + RAS_PORT_STATISTICS*, RAS_PARAMETERS**); + DWORD RasAdminPortClearStatistics(const(WCHAR)*, const(WCHAR)*); + DWORD RasAdminPortDisconnect(const(WCHAR)*, const(WCHAR)*); + DWORD RasAdminFreeBuffer(PVOID); + DWORD RasAdminGetErrorString(UINT, WCHAR*, DWORD); + BOOL RasAdminAcceptNewConnection(RAS_PORT_1*, RAS_PORT_STATISTICS*, + RAS_PARAMETERS*); + VOID RasAdminConnectionHangupNotification(RAS_PORT_1*, + RAS_PORT_STATISTICS*, RAS_PARAMETERS*); + DWORD RasAdminGetIpAddressForUser (WCHAR*, WCHAR*, IPADDR*, BOOL*); + VOID RasAdminReleaseIpAddress (WCHAR*, WCHAR*,IPADDR*); + DWORD RasAdminGetUserParms(WCHAR*, PRAS_USER_0); + DWORD RasAdminSetUserParms(WCHAR*, DWORD, PRAS_USER_0); } diff --git a/src/core/sys/windows/reason.d b/src/core/sys/windows/reason.d index ccf68484f7..831f822543 100644 --- a/src/core/sys/windows/reason.d +++ b/src/core/sys/windows/reason.d @@ -16,47 +16,47 @@ static assert (_WIN32_WINNT >= 0x501, enum : DWORD { - SHTDN_REASON_MAJOR_OTHER = 0x00000000, - SHTDN_REASON_MAJOR_HARDWARE = 0x00010000, - SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000, - SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000, - SHTDN_REASON_MAJOR_APPLICATION = 0x00040000, - SHTDN_REASON_MAJOR_SYSTEM = 0x00050000, - SHTDN_REASON_MAJOR_POWER = 0x00060000, - SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 + SHTDN_REASON_MAJOR_OTHER = 0x00000000, + SHTDN_REASON_MAJOR_HARDWARE = 0x00010000, + SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000, + SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000, + SHTDN_REASON_MAJOR_APPLICATION = 0x00040000, + SHTDN_REASON_MAJOR_SYSTEM = 0x00050000, + SHTDN_REASON_MAJOR_POWER = 0x00060000, + SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 } enum : DWORD { - SHTDN_REASON_MINOR_OTHER, - SHTDN_REASON_MINOR_MAINTENANCE, - SHTDN_REASON_MINOR_INSTALLATION, - SHTDN_REASON_MINOR_UPGRADE, - SHTDN_REASON_MINOR_RECONFIG, - SHTDN_REASON_MINOR_HUNG, - SHTDN_REASON_MINOR_UNSTABLE, - SHTDN_REASON_MINOR_DISK, - SHTDN_REASON_MINOR_PROCESSOR, - SHTDN_REASON_MINOR_NETWORKCARD, - SHTDN_REASON_MINOR_POWER_SUPPLY, - SHTDN_REASON_MINOR_CORDUNPLUGGED, - SHTDN_REASON_MINOR_ENVIRONMENT, - SHTDN_REASON_MINOR_HARDWARE_DRIVER, - SHTDN_REASON_MINOR_OTHERDRIVER, - SHTDN_REASON_MINOR_BLUESCREEN, - SHTDN_REASON_MINOR_SERVICEPACK, - SHTDN_REASON_MINOR_HOTFIX, - SHTDN_REASON_MINOR_SECURITYFIX, - SHTDN_REASON_MINOR_SECURITY, - SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY, - SHTDN_REASON_MINOR_WMI, - SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL, - SHTDN_REASON_MINOR_HOTFIX_UNINSTALL, - SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL, - SHTDN_REASON_MINOR_MMC, // = 0x00000019 - SHTDN_REASON_MINOR_TERMSRV = 0x00000020 + SHTDN_REASON_MINOR_OTHER, + SHTDN_REASON_MINOR_MAINTENANCE, + SHTDN_REASON_MINOR_INSTALLATION, + SHTDN_REASON_MINOR_UPGRADE, + SHTDN_REASON_MINOR_RECONFIG, + SHTDN_REASON_MINOR_HUNG, + SHTDN_REASON_MINOR_UNSTABLE, + SHTDN_REASON_MINOR_DISK, + SHTDN_REASON_MINOR_PROCESSOR, + SHTDN_REASON_MINOR_NETWORKCARD, + SHTDN_REASON_MINOR_POWER_SUPPLY, + SHTDN_REASON_MINOR_CORDUNPLUGGED, + SHTDN_REASON_MINOR_ENVIRONMENT, + SHTDN_REASON_MINOR_HARDWARE_DRIVER, + SHTDN_REASON_MINOR_OTHERDRIVER, + SHTDN_REASON_MINOR_BLUESCREEN, + SHTDN_REASON_MINOR_SERVICEPACK, + SHTDN_REASON_MINOR_HOTFIX, + SHTDN_REASON_MINOR_SECURITYFIX, + SHTDN_REASON_MINOR_SECURITY, + SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY, + SHTDN_REASON_MINOR_WMI, + SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL, + SHTDN_REASON_MINOR_HOTFIX_UNINSTALL, + SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL, + SHTDN_REASON_MINOR_MMC, // = 0x00000019 + SHTDN_REASON_MINOR_TERMSRV = 0x00000020 } enum : DWORD { - SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000, - SHTDN_REASON_FLAG_PLANNED = 0x80000000 + SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000, + SHTDN_REASON_FLAG_PLANNED = 0x80000000 } diff --git a/src/core/sys/windows/regstr.d b/src/core/sys/windows/regstr.d index de56eb5bdc..ab5ae2e6f3 100644 --- a/src/core/sys/windows/regstr.d +++ b/src/core/sys/windows/regstr.d @@ -15,10 +15,10 @@ private import core.sys.windows.windef; const REGSTR_MAX_VALUE_LENGTH = 256; enum { - IT_COMPACT = 0, - IT_TYPICAL, - IT_PORTABLE, - IT_CUSTOM // = 3 + IT_COMPACT = 0, + IT_TYPICAL, + IT_PORTABLE, + IT_CUSTOM // = 3 } const DOSOPTGF_DEFCLEAN = 1; @@ -59,8 +59,8 @@ const PCMCIA_DEF_MEMLEN = 0x001000; const PCMCIA_DEF_MIN_REGION = 0x010000; enum { - PCI_OPTIONS_USE_BIOS = 1, - PCI_OPTIONS_USE_IRQ_STEERING = 2 + PCI_OPTIONS_USE_BIOS = 1, + PCI_OPTIONS_USE_IRQ_STEERING = 2 } const PCI_FLAG_NO_VIDEO_IRQ = 0x0001; @@ -132,13 +132,13 @@ const APMMENUSUSPEND_NOCHANGE = 128; //#ifndef NEC_98 const TCHAR[] - REGSTR_KEY_ISAENUM = "ISAPnP", - REGSTR_KEY_EISAENUM = "EISA", - REGSTR_VAL_EISA_RANGES = "EISARanges", - REGSTR_VAL_EISA_FUNCTIONS = "EISAFunctions", - REGSTR_VAL_EISA_FUNCTIONS_MASK = "EISAFunctionsMask", - REGSTR_VAL_EISA_FLAGS = "EISAFlags", - REGSTR_VAL_EISA_SIMULATE_INT15 = "EISASimulateInt15"; + REGSTR_KEY_ISAENUM = "ISAPnP", + REGSTR_KEY_EISAENUM = "EISA", + REGSTR_VAL_EISA_RANGES = "EISARanges", + REGSTR_VAL_EISA_FUNCTIONS = "EISAFunctions", + REGSTR_VAL_EISA_FUNCTIONS_MASK = "EISAFunctionsMask", + REGSTR_VAL_EISA_FLAGS = "EISAFlags", + REGSTR_VAL_EISA_SIMULATE_INT15 = "EISASimulateInt15"; // #else // #define REGSTR_KEY_ISAENUM TEXT("C98PnP") // #define REGSTR_KEY_EISAENUM TEXT("NESA") @@ -150,648 +150,648 @@ const TCHAR[] // #endif const TCHAR[] - REGSTR_KEY_CLASS = `Class`, - REGSTR_KEY_CONFIG = `Config`, - REGSTR_KEY_ENUM = `Enum`, - REGSTR_KEY_ROOTENUM = `Root`, - REGSTR_KEY_BIOSENUM = `BIOS`, - REGSTR_KEY_PCMCIAENUM = `PCMCIA`, - REGSTR_KEY_PCIENUM = `PCI`, - REGSTR_KEY_LOGCONFIG = `LogConfig`, - REGSTR_KEY_SYSTEMBOARD = `*PNP0C01`, - REGSTR_KEY_APM = `*PNP0C05`, - REGSTR_KEY_INIUPDATE = `IniUpdate`, - REG_KEY_INSTDEV = `Installed`, - REGSTR_KEY_DOSOPTCDROM = `CD-ROM`, - REGSTR_KEY_DOSOPTMOUSE = `MOUSE`, - REGSTR_DEFAULT_INSTANCE = `0000`, - REGSTR_PATH_MOTHERBOARD = REGSTR_KEY_SYSTEMBOARD ~ `\` ~ REGSTR_DEFAULT_INSTANCE, - REGSTR_PATH_SETUP = `Software\Microsoft\Windows\CurrentVersion`, - REGSTR_PATH_PIFCONVERT = `Software\Microsoft\Windows\CurrentVersion\PIFConvert`, - REGSTR_PATH_MSDOSOPTS = `Software\Microsoft\Windows\CurrentVersion\MS-DOSOptions`, - REGSTR_PATH_MSDOSEMU = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation`, - REGSTR_PATH_NEWDOSBOX = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\AppCompat`, - REGSTR_PATH_RUNONCE = `Software\Microsoft\Windows\CurrentVersion\RunOnce`, - REGSTR_PATH_RUN = `Software\Microsoft\Windows\CurrentVersion\Run`, - REGSTR_PATH_RUNSERVICESONCE = `Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`, - REGSTR_PATH_RUNSERVICES = `Software\Microsoft\Windows\CurrentVersion\RunServices`, + REGSTR_KEY_CLASS = `Class`, + REGSTR_KEY_CONFIG = `Config`, + REGSTR_KEY_ENUM = `Enum`, + REGSTR_KEY_ROOTENUM = `Root`, + REGSTR_KEY_BIOSENUM = `BIOS`, + REGSTR_KEY_PCMCIAENUM = `PCMCIA`, + REGSTR_KEY_PCIENUM = `PCI`, + REGSTR_KEY_LOGCONFIG = `LogConfig`, + REGSTR_KEY_SYSTEMBOARD = `*PNP0C01`, + REGSTR_KEY_APM = `*PNP0C05`, + REGSTR_KEY_INIUPDATE = `IniUpdate`, + REG_KEY_INSTDEV = `Installed`, + REGSTR_KEY_DOSOPTCDROM = `CD-ROM`, + REGSTR_KEY_DOSOPTMOUSE = `MOUSE`, + REGSTR_DEFAULT_INSTANCE = `0000`, + REGSTR_PATH_MOTHERBOARD = REGSTR_KEY_SYSTEMBOARD ~ `\` ~ REGSTR_DEFAULT_INSTANCE, + REGSTR_PATH_SETUP = `Software\Microsoft\Windows\CurrentVersion`, + REGSTR_PATH_PIFCONVERT = `Software\Microsoft\Windows\CurrentVersion\PIFConvert`, + REGSTR_PATH_MSDOSOPTS = `Software\Microsoft\Windows\CurrentVersion\MS-DOSOptions`, + REGSTR_PATH_MSDOSEMU = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation`, + REGSTR_PATH_NEWDOSBOX = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\AppCompat`, + REGSTR_PATH_RUNONCE = `Software\Microsoft\Windows\CurrentVersion\RunOnce`, + REGSTR_PATH_RUN = `Software\Microsoft\Windows\CurrentVersion\Run`, + REGSTR_PATH_RUNSERVICESONCE = `Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`, + REGSTR_PATH_RUNSERVICES = `Software\Microsoft\Windows\CurrentVersion\RunServices`, //#ifndef REGSTR_PATH_EXPLORER /* also in shlobj.h */ - REGSTR_PATH_EXPLORER = `Software\Microsoft\Windows\CurrentVersion\Explorer`, + REGSTR_PATH_EXPLORER = `Software\Microsoft\Windows\CurrentVersion\Explorer`, //#endif - REGSTR_PATH_DETECT = `Software\Microsoft\Windows\CurrentVersion\Detect`, - REGSTR_PATH_APPPATHS = `Software\Microsoft\Windows\CurrentVersion\App Paths`, - REGSTR_PATH_UNINSTALL = `Software\Microsoft\Windows\CurrentVersion\Uninstall`, - REGSTR_PATH_REALMODENET = `Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net`, - REGSTR_PATH_NETEQUIV = `Software\Microsoft\Windows\CurrentVersion\Network\Equivalent`, - REGSTR_PATH_CVNETWORK = `Software\Microsoft\Windows\CurrentVersion\Network`, - REGSTR_PATH_IDCONFIGDB = `System\CurrentControlSet\Control\IDConfigDB`, - REGSTR_PATH_CLASS = `System\CurrentControlSet\Services\Class`, - REGSTR_PATH_DISPLAYSETTINGS = `Display\Settings`, - REGSTR_PATH_FONTS = `Display\Fonts`, - REGSTR_PATH_ENUM = `Enum`, - REGSTR_PATH_ROOT = `Enum\Root`, - REGSTR_PATH_SERVICES = `System\CurrentControlSet\Services`, - REGSTR_PATH_VXD = `System\CurrentControlSet\Services\VxD`, - REGSTR_PATH_IOS = `System\CurrentControlSet\Services\VxD\IOS`, - REGSTR_PATH_VMM = `System\CurrentControlSet\Services\VxD\VMM`, - REGSTR_PATH_VPOWERD = `System\CurrentControlSet\Services\VxD\VPOWERD`, - REGSTR_PATH_VNETSUP = `System\CurrentControlSet\Services\VxD\VNETSUP`, - REGSTR_PATH_NWREDIR = `System\CurrentControlSet\Services\VxD\NWREDIR`, - REGSTR_PATH_NCPSERVER = `System\CurrentControlSet\Services\NcpServer\Parameters`, - REGSTR_PATH_IOARB = `System\CurrentControlSet\Services\Arbitrators\IOArb`, - REGSTR_PATH_ADDRARB = `System\CurrentControlSet\Services\Arbitrators\AddrArb`, - REGSTR_PATH_DMAARB = `System\CurrentControlSet\Services\Arbitrators\DMAArb`, - REGSTR_PATH_IRQARB = `System\CurrentControlSet\Services\Arbitrators\IRQArb`, - REGSTR_PATH_CODEPAGE = `System\CurrentControlSet\Control\Nls\Codepage`, - REGSTR_PATH_FILESYSTEM = `System\CurrentControlSet\Control\FileSystem`, - REGSTR_PATH_FILESYSTEM_NOVOLTRACK = `System\CurrentControlSet\Control\FileSystem\NoVolTrack`, - REGSTR_PATH_CDFS = `System\CurrentControlSet\Control\FileSystem\CDFS`, - REGSTR_PATH_WINBOOT = `System\CurrentControlSet\Control\WinBoot`, - REGSTR_PATH_INSTALLEDFILES = `System\CurrentControlSet\Control\InstalledFiles`, - REGSTR_PATH_VMM32FILES = `System\CurrentControlSet\Control\VMM32Files`, - - REGSTR_VAL_BITSPERPIXEL = `BitsPerPixel`, - REGSTR_VAL_RESOLUTION = `Resolution`, - REGSTR_VAL_DPILOGICALX = `DPILogicalX`, - REGSTR_VAL_DPILOGICALY = `DPILogicalY`, - REGSTR_VAL_DPIPHYSICALX = `DPIPhysicalX`, - REGSTR_VAL_DPIPHYSICALY = `DPIPhysicalY`, - REGSTR_VAL_REFRESHRATE = `RefreshRate`, - REGSTR_VAL_DISPLAYFLAGS = `DisplayFlags`, - REGSTR_PATH_CONTROLPANEL = `Control Panel`, - REGSTR_PATH_CONTROLSFOLDER = `Software\Microsoft\Windows\CurrentVersion\Controls Folder`, - REGSTR_VAL_DOSCP = `OEMCP`, - REGSTR_VAL_WINCP = `ACP`, - REGSTR_PATH_DYNA_ENUM = `Config Manager\Enum`, - REGSTR_VAL_HARDWARE_KEY = `HardWareKey`, - REGSTR_VAL_ALLOCATION = `Allocation`, - REGSTR_VAL_PROBLEM = `Problem`, - REGSTR_VAL_STATUS = `Status`, - REGSTR_VAL_DONTUSEMEM = `DontAllocLastMem`, - REGSTR_VAL_SYSTEMROOT = `SystemRoot`, - REGSTR_VAL_BOOTCOUNT = `BootCount`, - REGSTR_VAL_REALNETSTART = `RealNetStart`, - REGSTR_VAL_MEDIA = `MediaPath`, - REGSTR_VAL_CONFIG = `ConfigPath`, - REGSTR_VAL_DEVICEPATH = `DevicePath`, - REGSTR_VAL_SRCPATH = `SourcePath`, - REGSTR_VAL_OLDWINDIR = `OldWinDir`, - REGSTR_VAL_SETUPFLAGS = `SetupFlags`, - REGSTR_VAL_REGOWNER = `RegisteredOwner`, - REGSTR_VAL_REGORGANIZATION = `RegisteredOrganization`, - REGSTR_VAL_LICENSINGINFO = `LicensingInfo`, - REGSTR_VAL_OLDMSDOSVER = `OldMSDOSVer`, - REGSTR_VAL_FIRSTINSTALLDATETIME = `FirstInstallDateTime`, - REGSTR_VAL_INSTALLTYPE = `InstallType`, - REGSTR_VAL_WRAPPER = `Wrapper`, - - REGSTR_KEY_SETUP = `\Setup`, - REGSTR_VAL_BOOTDIR = `BootDir`, - REGSTR_VAL_WINBOOTDIR = `WinbootDir`, - REGSTR_VAL_WINDIR = `WinDir`, - REGSTR_VAL_APPINSTPATH = `AppInstallPath`, - REGSTR_PATH_EBD = REGSTR_PATH_SETUP ~ REGSTR_KEY_SETUP ~ `\EBD`, - REGSTR_KEY_EBDFILESLOCAL = `EBDFilesLocale`, - REGSTR_KEY_EBDFILESKEYBOARD = `EBDFilesKeyboard`, - REGSTR_KEY_EBDAUTOEXECBATLOCAL = `EBDAutoexecBatLocale`, - REGSTR_KEY_EBDAUTOEXECBATKEYBOARD = `EBDAutoexecBatKeyboard`, - REGSTR_KEY_EBDCONFIGSYSLOCAL = `EBDConfigSysLocale`, - REGSTR_KEY_EBDCONFIGSYSKEYBOARD = `EBDConfigSysKeyboard`, - REGSTR_VAL_MSDOSMODE = `MSDOSMode`, - REGSTR_VAL_MSDOSMODEDISCARD = `Discard`, - REGSTR_VAL_DOSOPTGLOBALFLAGS = `GlobalFlags`, - REGSTR_VAL_DOSOPTFLAGS = `Flags`, - REGSTR_VAL_OPTORDER = `Order`, - REGSTR_VAL_CONFIGSYS = `Config.Sys`, - REGSTR_VAL_AUTOEXEC = `Autoexec.Bat`, - REGSTR_VAL_STDDOSOPTION = `StdOption`, - REGSTR_VAL_DOSOPTTIP = `TipText`, - - REGSTR_VAL_DOSPAGER = `DOSPager`, - REGSTR_VAL_VXDGROUPS = `VXDGroups`, - REGSTR_VAL_VPOWERDFLAGS = `Flags`, - - REGSTR_VAL_WORKGROUP = `Workgroup`, - REGSTR_VAL_DIRECTHOST = `DirectHost`, - REGSTR_VAL_FILESHARING = `FileSharing`, - REGSTR_VAL_PRINTSHARING = `PrintSharing`, - REGSTR_VAL_FIRSTNETDRIVE = `FirstNetworkDrive`, - REGSTR_VAL_MAXCONNECTIONS = `MaxConnections`, - REGSTR_VAL_APISUPPORT = `APISupport`, - REGSTR_VAL_MAXRETRY = `MaxRetry`, - REGSTR_VAL_MINRETRY = `MinRetry`, - REGSTR_VAL_SUPPORTLFN = `SupportLFN`, - REGSTR_VAL_SUPPORTBURST = `SupportBurst`, - REGSTR_VAL_SUPPORTTUNNELLING = `SupportTunnelling`, - REGSTR_VAL_FULLTRACE = `FullTrace`, - REGSTR_VAL_READCACHING = `ReadCaching`, - REGSTR_VAL_SHOWDOTS = `ShowDots`, - REGSTR_VAL_GAPTIME = `GapTime`, - REGSTR_VAL_SEARCHMODE = `SearchMode`, - REGSTR_VAL_SHELLVERSION = `ShellVersion`, - REGSTR_VAL_MAXLIP = `MaxLIP`, - REGSTR_VAL_PRESERVECASE = `PreserveCase`, - REGSTR_VAL_OPTIMIZESFN = `OptimizeSFN`, - REGSTR_VAL_NCP_BROWSEMASTER = `BrowseMaster`, - REGSTR_VAL_NCP_USEPEERBROWSING = `Use_PeerBrowsing`, - REGSTR_VAL_NCP_USESAP = `Use_Sap`, - REGSTR_VAL_WIN31FILESYSTEM = `Win31FileSystem`, - REGSTR_VAL_PRESERVELONGNAMES = `PreserveLongNames`, - REGSTR_VAL_DRIVEWRITEBEHIND = `DriveWriteBehind`, - REGSTR_VAL_ASYNCFILECOMMIT = `AsyncFileCommit`, - REGSTR_VAL_PATHCACHECOUNT = `PathCache`, - REGSTR_VAL_NAMECACHECOUNT = `NameCache`, - REGSTR_VAL_CONTIGFILEALLOC = `ContigFileAllocSize`, - REGSTR_VAL_VOLIDLETIMEOUT = `VolumeIdleTimeout`, - REGSTR_VAL_BUFFIDLETIMEOUT = `BufferIdleTimeout`, - REGSTR_VAL_BUFFAGETIMEOUT = `BufferAgeTimeout`, - REGSTR_VAL_NAMENUMERICTAIL = `NameNumericTail`, - REGSTR_VAL_READAHEADTHRESHOLD = `ReadAheadThreshold`, - REGSTR_VAL_DOUBLEBUFFER = `DoubleBuffer`, - REGSTR_VAL_SOFTCOMPATMODE = `SoftCompatMode`, - REGSTR_VAL_DRIVESPINDOWN = `DriveSpinDown`, - REGSTR_VAL_FORCEPMIO = `ForcePMIO`, - REGSTR_VAL_FORCERMIO = `ForceRMIO`, - REGSTR_VAL_LASTBOOTPMDRVS = `LastBootPMDrvs`, - REGSTR_VAL_VIRTUALHDIRQ = `VirtualHDIRQ`, - REGSTR_VAL_SRVNAMECACHECOUNT = `ServerNameCacheMax`, - REGSTR_VAL_SRVNAMECACHE = `ServerNameCache`, - REGSTR_VAL_SRVNAMECACHENETPROV = `ServerNameCacheNumNets`, - REGSTR_VAL_AUTOMOUNT = `AutoMountDrives`, - REGSTR_VAL_COMPRESSIONMETHOD = `CompressionAlgorithm`, - REGSTR_VAL_COMPRESSIONTHRESHOLD = `CompressionThreshold`, - REGSTR_VAL_CDCACHESIZE = `CacheSize`, - REGSTR_VAL_CDPREFETCH = `Prefetch`, - REGSTR_VAL_CDPREFETCHTAIL = `PrefetchTail`, - REGSTR_VAL_CDRAWCACHE = `RawCache`, - REGSTR_VAL_CDEXTERRORS = `ExtendedErrors`, - REGSTR_VAL_CDSVDSENSE = `SVDSense`, - REGSTR_VAL_CDSHOWVERSIONS = `ShowVersions`, - REGSTR_VAL_CDCOMPATNAMES = `MSCDEXCompatNames`, - REGSTR_VAL_CDNOREADAHEAD = `NoReadAhead`, - REGSTR_VAL_SCSI = `SCSI\`, - REGSTR_VAL_ESDI = `ESDI\`, - REGSTR_VAL_FLOP = `FLOP\`, - REGSTR_VAL_DISK = `GenDisk`, - REGSTR_VAL_CDROM = `GenCD`, - REGSTR_VAL_TAPE = `TAPE`, - REGSTR_VAL_SCANNER = `SCANNER`, - REGSTR_VAL_FLOPPY = `FLOPPY`, - REGSTR_VAL_SCSITID = `SCSITargetID`, - REGSTR_VAL_SCSILUN = `SCSILUN`, - REGSTR_VAL_REVLEVEL = `RevisionLevel`, - REGSTR_VAL_PRODUCTID = `ProductId`, - REGSTR_VAL_PRODUCTTYPE = `ProductType`, - REGSTR_VAL_DEVTYPE = `DeviceType`, - REGSTR_VAL_REMOVABLE = `Removable`, - REGSTR_VAL_CURDRVLET = `CurrentDriveLetterAssignment`, - REGSTR_VAL_USRDRVLET = `UserDriveLetterAssignment`, - REGSTR_VAL_SYNCDATAXFER = `SyncDataXfer`, - REGSTR_VAL_AUTOINSNOTE = `AutoInsertNotification`, - REGSTR_VAL_DISCONNECT = `Disconnect`, - REGSTR_VAL_INT13 = `Int13`, - REGSTR_VAL_PMODE_INT13 = `PModeInt13`, - REGSTR_VAL_USERSETTINGS = `AdapterSettings`, - REGSTR_VAL_NOIDE = `NoIDE`, - REGSTR_VAL_DISKCLASSNAME = `DiskDrive`, - REGSTR_VAL_CDROMCLASSNAME = `CDROM`, - REGSTR_VAL_FORCELOAD = `ForceLoadPD`, - REGSTR_VAL_FORCEFIFO = `ForceFIFO`, - REGSTR_VAL_FORCECL = `ForceChangeLine`, - REGSTR_VAL_NOUSECLASS = `NoUseClass`, - REGSTR_VAL_NOINSTALLCLASS = `NoInstallClass`, - REGSTR_VAL_NODISPLAYCLASS = `NoDisplayClass`, - REGSTR_VAL_SILENTINSTALL = `SilentInstall`, - REGSTR_KEY_PCMCIA_CLASS = `PCMCIA`, - REGSTR_KEY_SCSI_CLASS = `SCSIAdapter`, - REGSTR_KEY_PORTS_CLASS = `ports`, - REGSTR_KEY_MEDIA_CLASS = `MEDIA`, - REGSTR_KEY_DISPLAY_CLASS = `Display`, - REGSTR_KEY_KEYBOARD_CLASS = `Keyboard`, - REGSTR_KEY_MOUSE_CLASS = `Mouse`, - REGSTR_KEY_MONITOR_CLASS = `Monitor`, - REGSTR_VAL_PCMCIA_OPT = `Options`, - REGSTR_VAL_PCMCIA_MEM = `Memory`, - REGSTR_VAL_PCMCIA_ALLOC = `AllocMemWin`, - REGSTR_VAL_PCMCIA_ATAD = `ATADelay`, - REGSTR_VAL_PCMCIA_SIZ = `MinRegionSize`, - REGSTR_VAL_P1284MDL = `Model`, - REGSTR_VAL_P1284MFG = `Manufacturer`, - REGSTR_VAL_ISAPNP = `ISAPNP`, - REGSTR_VAL_ISAPNP_RDP_OVERRIDE = `RDPOverRide`, - REGSTR_VAL_PCI = `PCI`, - REGSTR_PCI_OPTIONS = `Options`, - REGSTR_PCI_DUAL_IDE = `PCIDualIDE`, - - REGSTR_KEY_CRASHES = `Crashes`, - REGSTR_KEY_DANGERS = `Dangers`, - REGSTR_KEY_DETMODVARS = `DetModVars`, - REGSTR_KEY_NDISINFO = `NDISInfo`, - REGSTR_VAL_PROTINIPATH = `ProtIniPath`, - REGSTR_VAL_RESOURCES = `Resources`, - REGSTR_VAL_CRASHFUNCS = `CrashFuncs`, - REGSTR_VAL_CLASS = `Class`, - REGSTR_VAL_DEVDESC = `DeviceDesc`, - REGSTR_VAL_BOOTCONFIG = `BootConfig`, - REGSTR_VAL_DETFUNC = `DetFunc`, - REGSTR_VAL_DETFLAGS = `DetFlags`, - REGSTR_VAL_COMPATIBLEIDS = `CompatibleIDs`, - REGSTR_VAL_DETCONFIG = `DetConfig`, - REGSTR_VAL_VERIFYKEY = `VerifyKey`, - REGSTR_VAL_COMINFO = `ComInfo`, - REGSTR_VAL_INFNAME = `InfName`, - REGSTR_VAL_CARDSPECIFIC = `CardSpecific`, - REGSTR_VAL_NETOSTYPE = `NetOSType`, - REGSTR_DATA_NETOS_NDIS = `NDIS`, - REGSTR_DATA_NETOS_ODI = `ODI`, - REGSTR_DATA_NETOS_IPX = `IPX`, - REGSTR_VAL_MFG = `Mfg`, - REGSTR_VAL_SCAN_ONLY_FIRST = `ScanOnlyFirstDrive`, - REGSTR_VAL_SHARE_IRQ = `ForceIRQSharing`, - REGSTR_VAL_NONSTANDARD_ATAPI = `NonStandardATAPI`, - REGSTR_VAL_IDE_FORCE_SERIALIZE = `ForceSerialization`, - REGSTR_VAL_HWREV = `HWRevision`, - REGSTR_VAL_ENABLEINTS = `EnableInts`, - - REGSTR_VAL_APMBIOSVER = `APMBiosVer`, - REGSTR_VAL_APMFLAGS = `APMFlags`, - REGSTR_VAL_SLSUPPORT = `SLSupport`, - REGSTR_VAL_MACHINETYPE = `MachineType`, - REGSTR_VAL_SETUPMACHINETYPE = `SetupMachineType`, - REGSTR_MACHTYPE_UNKNOWN = `Unknown`, - REGSTR_MACHTYPE_IBMPC = `IBM PC`, - REGSTR_MACHTYPE_IBMPCJR = `IBM PCjr`, - REGSTR_MACHTYPE_IBMPCCONV = `IBM PC Convertible`, - REGSTR_MACHTYPE_IBMPCXT = `IBM PC/XT`, - REGSTR_MACHTYPE_IBMPCXT_286 = `IBM PC/XT 286`, - REGSTR_MACHTYPE_IBMPCAT = `IBM PC/AT`, - REGSTR_MACHTYPE_IBMPS2_25 = `IBM PS/2-25`, - REGSTR_MACHTYPE_IBMPS2_30_286 = `IBM PS/2-30 286`, - REGSTR_MACHTYPE_IBMPS2_30 = `IBM PS/2-30`, - REGSTR_MACHTYPE_IBMPS2_50 = `IBM PS/2-50`, - REGSTR_MACHTYPE_IBMPS2_50Z = `IBM PS/2-50Z`, - REGSTR_MACHTYPE_IBMPS2_55SX = `IBM PS/2-55SX`, - REGSTR_MACHTYPE_IBMPS2_60 = `IBM PS/2-60`, - REGSTR_MACHTYPE_IBMPS2_65SX = `IBM PS/2-65SX`, - REGSTR_MACHTYPE_IBMPS2_70 = `IBM PS/2-70`, - REGSTR_MACHTYPE_IBMPS2_P70 = `IBM PS/2-P70`, - REGSTR_MACHTYPE_IBMPS2_70_80 = `IBM PS/2-70/80`, - REGSTR_MACHTYPE_IBMPS2_80 = `IBM PS/2-80`, - REGSTR_MACHTYPE_IBMPS2_90 = `IBM PS/2-90`, - REGSTR_MACHTYPE_IBMPS1 = `IBM PS/1`, - REGSTR_MACHTYPE_PHOENIX_PCAT = `Phoenix PC/AT Compatible`, - REGSTR_MACHTYPE_HP_VECTRA = `HP Vectra`, - REGSTR_MACHTYPE_ATT_PC = `AT&T PC`, - REGSTR_MACHTYPE_ZENITH_PC = `Zenith PC`, - REGSTR_VAL_APMMENUSUSPEND = `APMMenuSuspend`, - - REGSTR_VAL_BUSTYPE = `BusType`, - REGSTR_VAL_CPU = `CPU`, - REGSTR_VAL_NDP = `NDP`, - REGSTR_VAL_PNPBIOSVER = `PnPBIOSVer`, - REGSTR_VAL_PNPSTRUCOFFSET = `PnPStrucOffset`, - REGSTR_VAL_PCIBIOSVER = `PCIBIOSVer`, - REGSTR_VAL_HWMECHANISM = `HWMechanism`, - REGSTR_VAL_LASTPCIBUSNUM = `LastPCIBusNum`, - REGSTR_VAL_CONVMEM = `ConvMem`, - REGSTR_VAL_EXTMEM = `ExtMem`, - REGSTR_VAL_COMPUTERNAME = `ComputerName`, - REGSTR_VAL_BIOSNAME = `BIOSName`, - REGSTR_VAL_BIOSVERSION = `BIOSVersion`, - REGSTR_VAL_BIOSDATE = `BIOSDate`, - REGSTR_VAL_MODEL = `Model`, - REGSTR_VAL_SUBMODEL = `Submodel`, - REGSTR_VAL_REVISION = `Revision`, - REGSTR_VAL_FIFODEPTH = `FIFODepth`, - REGSTR_VAL_RDINTTHRESHOLD = `RDIntThreshold`, - REGSTR_VAL_WRINTTHRESHOLD = `WRIntThreshold`, - REGSTR_VAL_PRIORITY = `Priority`, - REGSTR_VAL_DRIVER = `Driver`, - REGSTR_VAL_FUNCDESC = `FunctionDesc`, - REGSTR_VAL_FORCEDCONFIG = `ForcedConfig`, - REGSTR_VAL_CONFIGFLAGS = `ConfigFlags`, - REGSTR_VAL_CSCONFIGFLAGS = `CSConfigFlags`, - - REGSTR_VAL_ROOT_DEVNODE = `HTREE\ROOT\0`, - REGSTR_VAL_RESERVED_DEVNODE = `HTREE\RESERVED\0`, - REGSTR_PATH_READDATAPORT = REGSTR_KEY_ISAENUM ~ `\ReadDataPort\0`, - REGSTR_PATH_MULTI_FUNCTION = `MF`, - REGSTR_VAL_RESOURCE_MAP = `ResourceMap`, - REGSTR_PATH_CHILD_PREFIX = `Child`, - REGSTR_VAL_MF_FLAGS = `MFFlags`, - REGSTR_VAL_DRVDESC = `DriverDesc`, - REGSTR_VAL_DEVLOADER = `DevLoader`, - REGSTR_VAL_STATICVXD = `StaticVxD`, - REGSTR_VAL_PROPERTIES = `Properties`, - REGSTR_VAL_MANUFACTURER = `Manufacturer`, - REGSTR_VAL_EXISTS = `Exists`, - REGSTR_VAL_CMENUMFLAGS = `CMEnumFlags`, - REGSTR_VAL_CMDRIVFLAGS = `CMDrivFlags`, - REGSTR_VAL_ENUMERATOR = `Enumerator`, - REGSTR_VAL_DEVICEDRIVER = `DeviceDriver`, - REGSTR_VAL_PORTNAME = `PortName`, - REGSTR_VAL_INFPATH = `InfPath`, - REGSTR_VAL_INFSECTION = `InfSection`, - REGSTR_VAL_POLLING = `Polling`, - REGSTR_VAL_DONTLOADIFCONFLICT = `DontLoadIfConflict`, - REGSTR_VAL_PORTSUBCLASS = `PortSubClass`, - REGSTR_VAL_NETCLEAN = `NetClean`, - REGSTR_VAL_IDE_NO_SERIALIZE = `IDENoSerialize`, - REGSTR_VAL_NOCMOSORFDPT = `NoCMOSorFDPT`, - REGSTR_VAL_COMVERIFYBASE = `COMVerifyBase`, - REGSTR_KEY_OVERRIDE = `Override`, - REGSTR_VAL_CONFIGMG = `CONFIGMG`, - REGSTR_VAL_SYSDM = `SysDM`, - REGSTR_VAL_SYSDMFUNC = `SysDMFunc`, - REGSTR_VAL_PRIVATE = `Private`, - REGSTR_VAL_PRIVATEFUNC = `PrivateFunc`, - REGSTR_VAL_DETECT = `Detect`, - REGSTR_VAL_DETECTFUNC = `DetectFunc`, - REGSTR_VAL_ASKFORCONFIG = `AskForConfig`, - REGSTR_VAL_ASKFORCONFIGFUNC = `AskForConfigFunc`, - REGSTR_VAL_WAITFORUNDOCK = `WaitForUndock`, - REGSTR_VAL_WAITFORUNDOCKFUNC = `WaitForUndockFunc`, - REGSTR_VAL_REMOVEROMOKAY = `RemoveRomOkay`, - REGSTR_VAL_REMOVEROMOKAYFUNC = `RemoveRomOkayFunc`, - REGSTR_VAL_CURCONFIG = `CurrentConfig`, - REGSTR_VAL_FRIENDLYNAME = `FriendlyName`, - REGSTR_VAL_CURRENTCONFIG = `CurrentConfig`, - REGSTR_VAL_MAP = `Map`, - REGSTR_VAL_ID = `CurrentID`, - REGSTR_VAL_DOCKED = `CurrentDockedState`, - REGSTR_VAL_CHECKSUM = `CurrentChecksum`, - REGSTR_VAL_HWDETECT = `HardwareDetect`, - REGSTR_VAL_INHIBITRESULTS = `InhibitResults`, - REGSTR_VAL_PROFILEFLAGS = `ProfileFlags`, - REGSTR_KEY_PCMCIA = `PCMCIA\`, - REGSTR_KEY_PCUNKNOWN = `UNKNOWN_MANUFACTURER`, - REGSTR_VAL_PCSSDRIVER = `Driver`, - REGSTR_KEY_PCMTD = `MTD-`, - REGSTR_VAL_PCMTDRIVER = `MTD`, - REGSTR_VAL_HARDWAREID = `HardwareID`, - REGSTR_VAL_INSTALLER = `Installer`, - REGSTR_VAL_INSICON = `Icon`, - REGSTR_VAL_ENUMPROPPAGES = `EnumPropPages`, - REGSTR_VAL_BASICPROPERTIES = `BasicProperties`, - REGSTR_VAL_PRIVATEPROBLEM = `PrivateProblem`, - REGSTR_KEY_CURRENT = `Current`, - REGSTR_KEY_DEFAULT = `Default`, - REGSTR_KEY_MODES = `Modes`, - REGSTR_VAL_MODE = `Mode`, - REGSTR_VAL_BPP = `BPP`, - REGSTR_VAL_HRES = `HRes`, - REGSTR_VAL_VRES = `VRes`, - REGSTR_VAL_FONTSIZE = `FontSize`, - REGSTR_VAL_DRV = `drv`, - REGSTR_VAL_GRB = `grb`, - REGSTR_VAL_VDD = `vdd`, - REGSTR_VAL_VER = `Ver`, - REGSTR_VAL_MAXRES = `MaxResolution`, - REGSTR_VAL_DPMS = `DPMS`, - REGSTR_VAL_RESUMERESET = `ResumeReset`, - REGSTR_VAL_DESCRIPTION = `Description`, - REGSTR_KEY_SYSTEM = `System`, - REGSTR_KEY_USER = `User`, - REGSTR_VAL_DPI = `dpi`, - REGSTR_VAL_PCICOPTIONS = `PCICOptions`, - - REGSTR_VAL_PCICIRQMAP = `PCICIRQMap`, - REGSTR_PATH_APPEARANCE = `Control Panel\Appearance`, - REGSTR_PATH_LOOKSCHEMES = `Control Panel\Appearance\Schemes`, - REGSTR_VAL_CUSTOMCOLORS = `CustomColors`, - REGSTR_PATH_SCREENSAVE = `Control Panel\Desktop`, - REGSTR_VALUE_USESCRPASSWORD = `ScreenSaveUsePassword`, - REGSTR_VALUE_SCRPASSWORD = `ScreenSave_Data`, - REGSTR_VALUE_LOWPOWERTIMEOUT = `ScreenSaveLowPowerTimeout`, - REGSTR_VALUE_POWEROFFTIMEOUT = `ScreenSavePowerOffTimeout`, - REGSTR_VALUE_LOWPOWERACTIVE = `ScreenSaveLowPowerActive`, - REGSTR_VALUE_POWEROFFACTIVE = `ScreenSavePowerOffActive`, - REGSTR_PATH_WINDOWSAPPLETS = `Software\Microsoft\Windows\CurrentVersion\Applets`, - REGSTR_PATH_SYSTRAY = `Software\Microsoft\Windows\CurrentVersion\Applets\SysTray`, - REGSTR_VAL_SYSTRAYSVCS = `Services`, - REGSTR_VAL_SYSTRAYBATFLAGS = `PowerFlags`, - REGSTR_VAL_SYSTRAYPCCARDFLAGS = `PCMCIAFlags`, - REGSTR_PATH_NETWORK_USERSETTINGS = `Network`, - REGSTR_KEY_NETWORK_PERSISTENT = `\Persistent`, - REGSTR_KEY_NETWORK_RECENT = `\Recent`, - REGSTR_VAL_REMOTE_PATH = `RemotePath`, - REGSTR_VAL_USER_NAME = `UserName`, - REGSTR_VAL_PROVIDER_NAME = `ProviderName`, - REGSTR_VAL_CONNECTION_TYPE = `ConnectionType`, - REGSTR_VAL_UPGRADE = `Upgrade`, - REGSTR_KEY_LOGON = `\Logon`, - REGSTR_VAL_MUSTBEVALIDATED = `MustBeValidated`, - REGSTR_VAL_RUNLOGINSCRIPT = `ProcessLoginScript`, - REGSTR_KEY_NETWORKPROVIDER = `\NetworkProvider`, - REGSTR_PATH_NW32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\NWNP32` ~ REGSTR_KEY_NETWORKPROVIDER, - REGSTR_PATH_MS32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\MSNP32` ~ REGSTR_KEY_NETWORKPROVIDER, - REGSTR_VAL_AUTHENT_AGENT = `AuthenticatingAgent`, - REGSTR_VAL_PREFREDIR = `PreferredRedir`, - REGSTR_VAL_AUTOSTART = `AutoStart`, - REGSTR_VAL_AUTOLOGON = `AutoLogon`, - REGSTR_VAL_NETCARD = `Netcard`, - REGSTR_VAL_TRANSPORT = `Transport`, - REGSTR_VAL_DYNAMIC = `Dynamic`, - REGSTR_VAL_TRANSITION = `Transition`, - REGSTR_VAL_STATICDRIVE = `StaticDrive`, - REGSTR_VAL_LOADHI = `LoadHi`, - REGSTR_VAL_LOADRMDRIVERS = `LoadRMDrivers`, - REGSTR_VAL_SETUPN = `SetupN`, - REGSTR_VAL_SETUPNPATH = `SetupNPath`, - REGSTR_VAL_WRKGRP_FORCEMAPPING = `WrkgrpForceMapping`, - REGSTR_VAL_WRKGRP_REQUIRED = `WrkgrpRequired`, - REGSTR_PATH_CURRENT_CONTROL_SET = `System\CurrentControlSet\Control`, - REGSTR_VAL_CURRENT_USER = `Current User`, - REGSTR_PATH_PWDPROVIDER = `System\CurrentControlSet\Control\PwdProvider`, - REGSTR_VAL_PWDPROVIDER_PATH = `ProviderPath`, - REGSTR_VAL_PWDPROVIDER_DESC = `Description`, - REGSTR_VAL_PWDPROVIDER_CHANGEPWD = `ChangePassword`, - REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND = `ChangePasswordHwnd`, - REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS = `GetPasswordStatus`, - REGSTR_VAL_PWDPROVIDER_ISNP = `NetworkProvider`, - REGSTR_VAL_PWDPROVIDER_CHANGEORDER = `ChangeOrder`, - REGSTR_PATH_POLICIES = `Software\Microsoft\Windows\CurrentVersion\Policies`, - REGSTR_PATH_UPDATE = `System\CurrentControlSet\Control\Update`, - REGSTR_VALUE_ENABLE = `Enable`, - REGSTR_VALUE_VERBOSE = `Verbose`, - REGSTR_VALUE_NETPATH = `NetworkPath`, - REGSTR_VALUE_DEFAULTLOC = `UseDefaultNetLocation`, - REGSTR_KEY_NETWORK = `Network`, + REGSTR_PATH_DETECT = `Software\Microsoft\Windows\CurrentVersion\Detect`, + REGSTR_PATH_APPPATHS = `Software\Microsoft\Windows\CurrentVersion\App Paths`, + REGSTR_PATH_UNINSTALL = `Software\Microsoft\Windows\CurrentVersion\Uninstall`, + REGSTR_PATH_REALMODENET = `Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net`, + REGSTR_PATH_NETEQUIV = `Software\Microsoft\Windows\CurrentVersion\Network\Equivalent`, + REGSTR_PATH_CVNETWORK = `Software\Microsoft\Windows\CurrentVersion\Network`, + REGSTR_PATH_IDCONFIGDB = `System\CurrentControlSet\Control\IDConfigDB`, + REGSTR_PATH_CLASS = `System\CurrentControlSet\Services\Class`, + REGSTR_PATH_DISPLAYSETTINGS = `Display\Settings`, + REGSTR_PATH_FONTS = `Display\Fonts`, + REGSTR_PATH_ENUM = `Enum`, + REGSTR_PATH_ROOT = `Enum\Root`, + REGSTR_PATH_SERVICES = `System\CurrentControlSet\Services`, + REGSTR_PATH_VXD = `System\CurrentControlSet\Services\VxD`, + REGSTR_PATH_IOS = `System\CurrentControlSet\Services\VxD\IOS`, + REGSTR_PATH_VMM = `System\CurrentControlSet\Services\VxD\VMM`, + REGSTR_PATH_VPOWERD = `System\CurrentControlSet\Services\VxD\VPOWERD`, + REGSTR_PATH_VNETSUP = `System\CurrentControlSet\Services\VxD\VNETSUP`, + REGSTR_PATH_NWREDIR = `System\CurrentControlSet\Services\VxD\NWREDIR`, + REGSTR_PATH_NCPSERVER = `System\CurrentControlSet\Services\NcpServer\Parameters`, + REGSTR_PATH_IOARB = `System\CurrentControlSet\Services\Arbitrators\IOArb`, + REGSTR_PATH_ADDRARB = `System\CurrentControlSet\Services\Arbitrators\AddrArb`, + REGSTR_PATH_DMAARB = `System\CurrentControlSet\Services\Arbitrators\DMAArb`, + REGSTR_PATH_IRQARB = `System\CurrentControlSet\Services\Arbitrators\IRQArb`, + REGSTR_PATH_CODEPAGE = `System\CurrentControlSet\Control\Nls\Codepage`, + REGSTR_PATH_FILESYSTEM = `System\CurrentControlSet\Control\FileSystem`, + REGSTR_PATH_FILESYSTEM_NOVOLTRACK = `System\CurrentControlSet\Control\FileSystem\NoVolTrack`, + REGSTR_PATH_CDFS = `System\CurrentControlSet\Control\FileSystem\CDFS`, + REGSTR_PATH_WINBOOT = `System\CurrentControlSet\Control\WinBoot`, + REGSTR_PATH_INSTALLEDFILES = `System\CurrentControlSet\Control\InstalledFiles`, + REGSTR_PATH_VMM32FILES = `System\CurrentControlSet\Control\VMM32Files`, + + REGSTR_VAL_BITSPERPIXEL = `BitsPerPixel`, + REGSTR_VAL_RESOLUTION = `Resolution`, + REGSTR_VAL_DPILOGICALX = `DPILogicalX`, + REGSTR_VAL_DPILOGICALY = `DPILogicalY`, + REGSTR_VAL_DPIPHYSICALX = `DPIPhysicalX`, + REGSTR_VAL_DPIPHYSICALY = `DPIPhysicalY`, + REGSTR_VAL_REFRESHRATE = `RefreshRate`, + REGSTR_VAL_DISPLAYFLAGS = `DisplayFlags`, + REGSTR_PATH_CONTROLPANEL = `Control Panel`, + REGSTR_PATH_CONTROLSFOLDER = `Software\Microsoft\Windows\CurrentVersion\Controls Folder`, + REGSTR_VAL_DOSCP = `OEMCP`, + REGSTR_VAL_WINCP = `ACP`, + REGSTR_PATH_DYNA_ENUM = `Config Manager\Enum`, + REGSTR_VAL_HARDWARE_KEY = `HardWareKey`, + REGSTR_VAL_ALLOCATION = `Allocation`, + REGSTR_VAL_PROBLEM = `Problem`, + REGSTR_VAL_STATUS = `Status`, + REGSTR_VAL_DONTUSEMEM = `DontAllocLastMem`, + REGSTR_VAL_SYSTEMROOT = `SystemRoot`, + REGSTR_VAL_BOOTCOUNT = `BootCount`, + REGSTR_VAL_REALNETSTART = `RealNetStart`, + REGSTR_VAL_MEDIA = `MediaPath`, + REGSTR_VAL_CONFIG = `ConfigPath`, + REGSTR_VAL_DEVICEPATH = `DevicePath`, + REGSTR_VAL_SRCPATH = `SourcePath`, + REGSTR_VAL_OLDWINDIR = `OldWinDir`, + REGSTR_VAL_SETUPFLAGS = `SetupFlags`, + REGSTR_VAL_REGOWNER = `RegisteredOwner`, + REGSTR_VAL_REGORGANIZATION = `RegisteredOrganization`, + REGSTR_VAL_LICENSINGINFO = `LicensingInfo`, + REGSTR_VAL_OLDMSDOSVER = `OldMSDOSVer`, + REGSTR_VAL_FIRSTINSTALLDATETIME = `FirstInstallDateTime`, + REGSTR_VAL_INSTALLTYPE = `InstallType`, + REGSTR_VAL_WRAPPER = `Wrapper`, + + REGSTR_KEY_SETUP = `\Setup`, + REGSTR_VAL_BOOTDIR = `BootDir`, + REGSTR_VAL_WINBOOTDIR = `WinbootDir`, + REGSTR_VAL_WINDIR = `WinDir`, + REGSTR_VAL_APPINSTPATH = `AppInstallPath`, + REGSTR_PATH_EBD = REGSTR_PATH_SETUP ~ REGSTR_KEY_SETUP ~ `\EBD`, + REGSTR_KEY_EBDFILESLOCAL = `EBDFilesLocale`, + REGSTR_KEY_EBDFILESKEYBOARD = `EBDFilesKeyboard`, + REGSTR_KEY_EBDAUTOEXECBATLOCAL = `EBDAutoexecBatLocale`, + REGSTR_KEY_EBDAUTOEXECBATKEYBOARD = `EBDAutoexecBatKeyboard`, + REGSTR_KEY_EBDCONFIGSYSLOCAL = `EBDConfigSysLocale`, + REGSTR_KEY_EBDCONFIGSYSKEYBOARD = `EBDConfigSysKeyboard`, + REGSTR_VAL_MSDOSMODE = `MSDOSMode`, + REGSTR_VAL_MSDOSMODEDISCARD = `Discard`, + REGSTR_VAL_DOSOPTGLOBALFLAGS = `GlobalFlags`, + REGSTR_VAL_DOSOPTFLAGS = `Flags`, + REGSTR_VAL_OPTORDER = `Order`, + REGSTR_VAL_CONFIGSYS = `Config.Sys`, + REGSTR_VAL_AUTOEXEC = `Autoexec.Bat`, + REGSTR_VAL_STDDOSOPTION = `StdOption`, + REGSTR_VAL_DOSOPTTIP = `TipText`, + + REGSTR_VAL_DOSPAGER = `DOSPager`, + REGSTR_VAL_VXDGROUPS = `VXDGroups`, + REGSTR_VAL_VPOWERDFLAGS = `Flags`, + + REGSTR_VAL_WORKGROUP = `Workgroup`, + REGSTR_VAL_DIRECTHOST = `DirectHost`, + REGSTR_VAL_FILESHARING = `FileSharing`, + REGSTR_VAL_PRINTSHARING = `PrintSharing`, + REGSTR_VAL_FIRSTNETDRIVE = `FirstNetworkDrive`, + REGSTR_VAL_MAXCONNECTIONS = `MaxConnections`, + REGSTR_VAL_APISUPPORT = `APISupport`, + REGSTR_VAL_MAXRETRY = `MaxRetry`, + REGSTR_VAL_MINRETRY = `MinRetry`, + REGSTR_VAL_SUPPORTLFN = `SupportLFN`, + REGSTR_VAL_SUPPORTBURST = `SupportBurst`, + REGSTR_VAL_SUPPORTTUNNELLING = `SupportTunnelling`, + REGSTR_VAL_FULLTRACE = `FullTrace`, + REGSTR_VAL_READCACHING = `ReadCaching`, + REGSTR_VAL_SHOWDOTS = `ShowDots`, + REGSTR_VAL_GAPTIME = `GapTime`, + REGSTR_VAL_SEARCHMODE = `SearchMode`, + REGSTR_VAL_SHELLVERSION = `ShellVersion`, + REGSTR_VAL_MAXLIP = `MaxLIP`, + REGSTR_VAL_PRESERVECASE = `PreserveCase`, + REGSTR_VAL_OPTIMIZESFN = `OptimizeSFN`, + REGSTR_VAL_NCP_BROWSEMASTER = `BrowseMaster`, + REGSTR_VAL_NCP_USEPEERBROWSING = `Use_PeerBrowsing`, + REGSTR_VAL_NCP_USESAP = `Use_Sap`, + REGSTR_VAL_WIN31FILESYSTEM = `Win31FileSystem`, + REGSTR_VAL_PRESERVELONGNAMES = `PreserveLongNames`, + REGSTR_VAL_DRIVEWRITEBEHIND = `DriveWriteBehind`, + REGSTR_VAL_ASYNCFILECOMMIT = `AsyncFileCommit`, + REGSTR_VAL_PATHCACHECOUNT = `PathCache`, + REGSTR_VAL_NAMECACHECOUNT = `NameCache`, + REGSTR_VAL_CONTIGFILEALLOC = `ContigFileAllocSize`, + REGSTR_VAL_VOLIDLETIMEOUT = `VolumeIdleTimeout`, + REGSTR_VAL_BUFFIDLETIMEOUT = `BufferIdleTimeout`, + REGSTR_VAL_BUFFAGETIMEOUT = `BufferAgeTimeout`, + REGSTR_VAL_NAMENUMERICTAIL = `NameNumericTail`, + REGSTR_VAL_READAHEADTHRESHOLD = `ReadAheadThreshold`, + REGSTR_VAL_DOUBLEBUFFER = `DoubleBuffer`, + REGSTR_VAL_SOFTCOMPATMODE = `SoftCompatMode`, + REGSTR_VAL_DRIVESPINDOWN = `DriveSpinDown`, + REGSTR_VAL_FORCEPMIO = `ForcePMIO`, + REGSTR_VAL_FORCERMIO = `ForceRMIO`, + REGSTR_VAL_LASTBOOTPMDRVS = `LastBootPMDrvs`, + REGSTR_VAL_VIRTUALHDIRQ = `VirtualHDIRQ`, + REGSTR_VAL_SRVNAMECACHECOUNT = `ServerNameCacheMax`, + REGSTR_VAL_SRVNAMECACHE = `ServerNameCache`, + REGSTR_VAL_SRVNAMECACHENETPROV = `ServerNameCacheNumNets`, + REGSTR_VAL_AUTOMOUNT = `AutoMountDrives`, + REGSTR_VAL_COMPRESSIONMETHOD = `CompressionAlgorithm`, + REGSTR_VAL_COMPRESSIONTHRESHOLD = `CompressionThreshold`, + REGSTR_VAL_CDCACHESIZE = `CacheSize`, + REGSTR_VAL_CDPREFETCH = `Prefetch`, + REGSTR_VAL_CDPREFETCHTAIL = `PrefetchTail`, + REGSTR_VAL_CDRAWCACHE = `RawCache`, + REGSTR_VAL_CDEXTERRORS = `ExtendedErrors`, + REGSTR_VAL_CDSVDSENSE = `SVDSense`, + REGSTR_VAL_CDSHOWVERSIONS = `ShowVersions`, + REGSTR_VAL_CDCOMPATNAMES = `MSCDEXCompatNames`, + REGSTR_VAL_CDNOREADAHEAD = `NoReadAhead`, + REGSTR_VAL_SCSI = `SCSI\`, + REGSTR_VAL_ESDI = `ESDI\`, + REGSTR_VAL_FLOP = `FLOP\`, + REGSTR_VAL_DISK = `GenDisk`, + REGSTR_VAL_CDROM = `GenCD`, + REGSTR_VAL_TAPE = `TAPE`, + REGSTR_VAL_SCANNER = `SCANNER`, + REGSTR_VAL_FLOPPY = `FLOPPY`, + REGSTR_VAL_SCSITID = `SCSITargetID`, + REGSTR_VAL_SCSILUN = `SCSILUN`, + REGSTR_VAL_REVLEVEL = `RevisionLevel`, + REGSTR_VAL_PRODUCTID = `ProductId`, + REGSTR_VAL_PRODUCTTYPE = `ProductType`, + REGSTR_VAL_DEVTYPE = `DeviceType`, + REGSTR_VAL_REMOVABLE = `Removable`, + REGSTR_VAL_CURDRVLET = `CurrentDriveLetterAssignment`, + REGSTR_VAL_USRDRVLET = `UserDriveLetterAssignment`, + REGSTR_VAL_SYNCDATAXFER = `SyncDataXfer`, + REGSTR_VAL_AUTOINSNOTE = `AutoInsertNotification`, + REGSTR_VAL_DISCONNECT = `Disconnect`, + REGSTR_VAL_INT13 = `Int13`, + REGSTR_VAL_PMODE_INT13 = `PModeInt13`, + REGSTR_VAL_USERSETTINGS = `AdapterSettings`, + REGSTR_VAL_NOIDE = `NoIDE`, + REGSTR_VAL_DISKCLASSNAME = `DiskDrive`, + REGSTR_VAL_CDROMCLASSNAME = `CDROM`, + REGSTR_VAL_FORCELOAD = `ForceLoadPD`, + REGSTR_VAL_FORCEFIFO = `ForceFIFO`, + REGSTR_VAL_FORCECL = `ForceChangeLine`, + REGSTR_VAL_NOUSECLASS = `NoUseClass`, + REGSTR_VAL_NOINSTALLCLASS = `NoInstallClass`, + REGSTR_VAL_NODISPLAYCLASS = `NoDisplayClass`, + REGSTR_VAL_SILENTINSTALL = `SilentInstall`, + REGSTR_KEY_PCMCIA_CLASS = `PCMCIA`, + REGSTR_KEY_SCSI_CLASS = `SCSIAdapter`, + REGSTR_KEY_PORTS_CLASS = `ports`, + REGSTR_KEY_MEDIA_CLASS = `MEDIA`, + REGSTR_KEY_DISPLAY_CLASS = `Display`, + REGSTR_KEY_KEYBOARD_CLASS = `Keyboard`, + REGSTR_KEY_MOUSE_CLASS = `Mouse`, + REGSTR_KEY_MONITOR_CLASS = `Monitor`, + REGSTR_VAL_PCMCIA_OPT = `Options`, + REGSTR_VAL_PCMCIA_MEM = `Memory`, + REGSTR_VAL_PCMCIA_ALLOC = `AllocMemWin`, + REGSTR_VAL_PCMCIA_ATAD = `ATADelay`, + REGSTR_VAL_PCMCIA_SIZ = `MinRegionSize`, + REGSTR_VAL_P1284MDL = `Model`, + REGSTR_VAL_P1284MFG = `Manufacturer`, + REGSTR_VAL_ISAPNP = `ISAPNP`, + REGSTR_VAL_ISAPNP_RDP_OVERRIDE = `RDPOverRide`, + REGSTR_VAL_PCI = `PCI`, + REGSTR_PCI_OPTIONS = `Options`, + REGSTR_PCI_DUAL_IDE = `PCIDualIDE`, + + REGSTR_KEY_CRASHES = `Crashes`, + REGSTR_KEY_DANGERS = `Dangers`, + REGSTR_KEY_DETMODVARS = `DetModVars`, + REGSTR_KEY_NDISINFO = `NDISInfo`, + REGSTR_VAL_PROTINIPATH = `ProtIniPath`, + REGSTR_VAL_RESOURCES = `Resources`, + REGSTR_VAL_CRASHFUNCS = `CrashFuncs`, + REGSTR_VAL_CLASS = `Class`, + REGSTR_VAL_DEVDESC = `DeviceDesc`, + REGSTR_VAL_BOOTCONFIG = `BootConfig`, + REGSTR_VAL_DETFUNC = `DetFunc`, + REGSTR_VAL_DETFLAGS = `DetFlags`, + REGSTR_VAL_COMPATIBLEIDS = `CompatibleIDs`, + REGSTR_VAL_DETCONFIG = `DetConfig`, + REGSTR_VAL_VERIFYKEY = `VerifyKey`, + REGSTR_VAL_COMINFO = `ComInfo`, + REGSTR_VAL_INFNAME = `InfName`, + REGSTR_VAL_CARDSPECIFIC = `CardSpecific`, + REGSTR_VAL_NETOSTYPE = `NetOSType`, + REGSTR_DATA_NETOS_NDIS = `NDIS`, + REGSTR_DATA_NETOS_ODI = `ODI`, + REGSTR_DATA_NETOS_IPX = `IPX`, + REGSTR_VAL_MFG = `Mfg`, + REGSTR_VAL_SCAN_ONLY_FIRST = `ScanOnlyFirstDrive`, + REGSTR_VAL_SHARE_IRQ = `ForceIRQSharing`, + REGSTR_VAL_NONSTANDARD_ATAPI = `NonStandardATAPI`, + REGSTR_VAL_IDE_FORCE_SERIALIZE = `ForceSerialization`, + REGSTR_VAL_HWREV = `HWRevision`, + REGSTR_VAL_ENABLEINTS = `EnableInts`, + + REGSTR_VAL_APMBIOSVER = `APMBiosVer`, + REGSTR_VAL_APMFLAGS = `APMFlags`, + REGSTR_VAL_SLSUPPORT = `SLSupport`, + REGSTR_VAL_MACHINETYPE = `MachineType`, + REGSTR_VAL_SETUPMACHINETYPE = `SetupMachineType`, + REGSTR_MACHTYPE_UNKNOWN = `Unknown`, + REGSTR_MACHTYPE_IBMPC = `IBM PC`, + REGSTR_MACHTYPE_IBMPCJR = `IBM PCjr`, + REGSTR_MACHTYPE_IBMPCCONV = `IBM PC Convertible`, + REGSTR_MACHTYPE_IBMPCXT = `IBM PC/XT`, + REGSTR_MACHTYPE_IBMPCXT_286 = `IBM PC/XT 286`, + REGSTR_MACHTYPE_IBMPCAT = `IBM PC/AT`, + REGSTR_MACHTYPE_IBMPS2_25 = `IBM PS/2-25`, + REGSTR_MACHTYPE_IBMPS2_30_286 = `IBM PS/2-30 286`, + REGSTR_MACHTYPE_IBMPS2_30 = `IBM PS/2-30`, + REGSTR_MACHTYPE_IBMPS2_50 = `IBM PS/2-50`, + REGSTR_MACHTYPE_IBMPS2_50Z = `IBM PS/2-50Z`, + REGSTR_MACHTYPE_IBMPS2_55SX = `IBM PS/2-55SX`, + REGSTR_MACHTYPE_IBMPS2_60 = `IBM PS/2-60`, + REGSTR_MACHTYPE_IBMPS2_65SX = `IBM PS/2-65SX`, + REGSTR_MACHTYPE_IBMPS2_70 = `IBM PS/2-70`, + REGSTR_MACHTYPE_IBMPS2_P70 = `IBM PS/2-P70`, + REGSTR_MACHTYPE_IBMPS2_70_80 = `IBM PS/2-70/80`, + REGSTR_MACHTYPE_IBMPS2_80 = `IBM PS/2-80`, + REGSTR_MACHTYPE_IBMPS2_90 = `IBM PS/2-90`, + REGSTR_MACHTYPE_IBMPS1 = `IBM PS/1`, + REGSTR_MACHTYPE_PHOENIX_PCAT = `Phoenix PC/AT Compatible`, + REGSTR_MACHTYPE_HP_VECTRA = `HP Vectra`, + REGSTR_MACHTYPE_ATT_PC = `AT&T PC`, + REGSTR_MACHTYPE_ZENITH_PC = `Zenith PC`, + REGSTR_VAL_APMMENUSUSPEND = `APMMenuSuspend`, + + REGSTR_VAL_BUSTYPE = `BusType`, + REGSTR_VAL_CPU = `CPU`, + REGSTR_VAL_NDP = `NDP`, + REGSTR_VAL_PNPBIOSVER = `PnPBIOSVer`, + REGSTR_VAL_PNPSTRUCOFFSET = `PnPStrucOffset`, + REGSTR_VAL_PCIBIOSVER = `PCIBIOSVer`, + REGSTR_VAL_HWMECHANISM = `HWMechanism`, + REGSTR_VAL_LASTPCIBUSNUM = `LastPCIBusNum`, + REGSTR_VAL_CONVMEM = `ConvMem`, + REGSTR_VAL_EXTMEM = `ExtMem`, + REGSTR_VAL_COMPUTERNAME = `ComputerName`, + REGSTR_VAL_BIOSNAME = `BIOSName`, + REGSTR_VAL_BIOSVERSION = `BIOSVersion`, + REGSTR_VAL_BIOSDATE = `BIOSDate`, + REGSTR_VAL_MODEL = `Model`, + REGSTR_VAL_SUBMODEL = `Submodel`, + REGSTR_VAL_REVISION = `Revision`, + REGSTR_VAL_FIFODEPTH = `FIFODepth`, + REGSTR_VAL_RDINTTHRESHOLD = `RDIntThreshold`, + REGSTR_VAL_WRINTTHRESHOLD = `WRIntThreshold`, + REGSTR_VAL_PRIORITY = `Priority`, + REGSTR_VAL_DRIVER = `Driver`, + REGSTR_VAL_FUNCDESC = `FunctionDesc`, + REGSTR_VAL_FORCEDCONFIG = `ForcedConfig`, + REGSTR_VAL_CONFIGFLAGS = `ConfigFlags`, + REGSTR_VAL_CSCONFIGFLAGS = `CSConfigFlags`, + + REGSTR_VAL_ROOT_DEVNODE = `HTREE\ROOT\0`, + REGSTR_VAL_RESERVED_DEVNODE = `HTREE\RESERVED\0`, + REGSTR_PATH_READDATAPORT = REGSTR_KEY_ISAENUM ~ `\ReadDataPort\0`, + REGSTR_PATH_MULTI_FUNCTION = `MF`, + REGSTR_VAL_RESOURCE_MAP = `ResourceMap`, + REGSTR_PATH_CHILD_PREFIX = `Child`, + REGSTR_VAL_MF_FLAGS = `MFFlags`, + REGSTR_VAL_DRVDESC = `DriverDesc`, + REGSTR_VAL_DEVLOADER = `DevLoader`, + REGSTR_VAL_STATICVXD = `StaticVxD`, + REGSTR_VAL_PROPERTIES = `Properties`, + REGSTR_VAL_MANUFACTURER = `Manufacturer`, + REGSTR_VAL_EXISTS = `Exists`, + REGSTR_VAL_CMENUMFLAGS = `CMEnumFlags`, + REGSTR_VAL_CMDRIVFLAGS = `CMDrivFlags`, + REGSTR_VAL_ENUMERATOR = `Enumerator`, + REGSTR_VAL_DEVICEDRIVER = `DeviceDriver`, + REGSTR_VAL_PORTNAME = `PortName`, + REGSTR_VAL_INFPATH = `InfPath`, + REGSTR_VAL_INFSECTION = `InfSection`, + REGSTR_VAL_POLLING = `Polling`, + REGSTR_VAL_DONTLOADIFCONFLICT = `DontLoadIfConflict`, + REGSTR_VAL_PORTSUBCLASS = `PortSubClass`, + REGSTR_VAL_NETCLEAN = `NetClean`, + REGSTR_VAL_IDE_NO_SERIALIZE = `IDENoSerialize`, + REGSTR_VAL_NOCMOSORFDPT = `NoCMOSorFDPT`, + REGSTR_VAL_COMVERIFYBASE = `COMVerifyBase`, + REGSTR_KEY_OVERRIDE = `Override`, + REGSTR_VAL_CONFIGMG = `CONFIGMG`, + REGSTR_VAL_SYSDM = `SysDM`, + REGSTR_VAL_SYSDMFUNC = `SysDMFunc`, + REGSTR_VAL_PRIVATE = `Private`, + REGSTR_VAL_PRIVATEFUNC = `PrivateFunc`, + REGSTR_VAL_DETECT = `Detect`, + REGSTR_VAL_DETECTFUNC = `DetectFunc`, + REGSTR_VAL_ASKFORCONFIG = `AskForConfig`, + REGSTR_VAL_ASKFORCONFIGFUNC = `AskForConfigFunc`, + REGSTR_VAL_WAITFORUNDOCK = `WaitForUndock`, + REGSTR_VAL_WAITFORUNDOCKFUNC = `WaitForUndockFunc`, + REGSTR_VAL_REMOVEROMOKAY = `RemoveRomOkay`, + REGSTR_VAL_REMOVEROMOKAYFUNC = `RemoveRomOkayFunc`, + REGSTR_VAL_CURCONFIG = `CurrentConfig`, + REGSTR_VAL_FRIENDLYNAME = `FriendlyName`, + REGSTR_VAL_CURRENTCONFIG = `CurrentConfig`, + REGSTR_VAL_MAP = `Map`, + REGSTR_VAL_ID = `CurrentID`, + REGSTR_VAL_DOCKED = `CurrentDockedState`, + REGSTR_VAL_CHECKSUM = `CurrentChecksum`, + REGSTR_VAL_HWDETECT = `HardwareDetect`, + REGSTR_VAL_INHIBITRESULTS = `InhibitResults`, + REGSTR_VAL_PROFILEFLAGS = `ProfileFlags`, + REGSTR_KEY_PCMCIA = `PCMCIA\`, + REGSTR_KEY_PCUNKNOWN = `UNKNOWN_MANUFACTURER`, + REGSTR_VAL_PCSSDRIVER = `Driver`, + REGSTR_KEY_PCMTD = `MTD-`, + REGSTR_VAL_PCMTDRIVER = `MTD`, + REGSTR_VAL_HARDWAREID = `HardwareID`, + REGSTR_VAL_INSTALLER = `Installer`, + REGSTR_VAL_INSICON = `Icon`, + REGSTR_VAL_ENUMPROPPAGES = `EnumPropPages`, + REGSTR_VAL_BASICPROPERTIES = `BasicProperties`, + REGSTR_VAL_PRIVATEPROBLEM = `PrivateProblem`, + REGSTR_KEY_CURRENT = `Current`, + REGSTR_KEY_DEFAULT = `Default`, + REGSTR_KEY_MODES = `Modes`, + REGSTR_VAL_MODE = `Mode`, + REGSTR_VAL_BPP = `BPP`, + REGSTR_VAL_HRES = `HRes`, + REGSTR_VAL_VRES = `VRes`, + REGSTR_VAL_FONTSIZE = `FontSize`, + REGSTR_VAL_DRV = `drv`, + REGSTR_VAL_GRB = `grb`, + REGSTR_VAL_VDD = `vdd`, + REGSTR_VAL_VER = `Ver`, + REGSTR_VAL_MAXRES = `MaxResolution`, + REGSTR_VAL_DPMS = `DPMS`, + REGSTR_VAL_RESUMERESET = `ResumeReset`, + REGSTR_VAL_DESCRIPTION = `Description`, + REGSTR_KEY_SYSTEM = `System`, + REGSTR_KEY_USER = `User`, + REGSTR_VAL_DPI = `dpi`, + REGSTR_VAL_PCICOPTIONS = `PCICOptions`, + + REGSTR_VAL_PCICIRQMAP = `PCICIRQMap`, + REGSTR_PATH_APPEARANCE = `Control Panel\Appearance`, + REGSTR_PATH_LOOKSCHEMES = `Control Panel\Appearance\Schemes`, + REGSTR_VAL_CUSTOMCOLORS = `CustomColors`, + REGSTR_PATH_SCREENSAVE = `Control Panel\Desktop`, + REGSTR_VALUE_USESCRPASSWORD = `ScreenSaveUsePassword`, + REGSTR_VALUE_SCRPASSWORD = `ScreenSave_Data`, + REGSTR_VALUE_LOWPOWERTIMEOUT = `ScreenSaveLowPowerTimeout`, + REGSTR_VALUE_POWEROFFTIMEOUT = `ScreenSavePowerOffTimeout`, + REGSTR_VALUE_LOWPOWERACTIVE = `ScreenSaveLowPowerActive`, + REGSTR_VALUE_POWEROFFACTIVE = `ScreenSavePowerOffActive`, + REGSTR_PATH_WINDOWSAPPLETS = `Software\Microsoft\Windows\CurrentVersion\Applets`, + REGSTR_PATH_SYSTRAY = `Software\Microsoft\Windows\CurrentVersion\Applets\SysTray`, + REGSTR_VAL_SYSTRAYSVCS = `Services`, + REGSTR_VAL_SYSTRAYBATFLAGS = `PowerFlags`, + REGSTR_VAL_SYSTRAYPCCARDFLAGS = `PCMCIAFlags`, + REGSTR_PATH_NETWORK_USERSETTINGS = `Network`, + REGSTR_KEY_NETWORK_PERSISTENT = `\Persistent`, + REGSTR_KEY_NETWORK_RECENT = `\Recent`, + REGSTR_VAL_REMOTE_PATH = `RemotePath`, + REGSTR_VAL_USER_NAME = `UserName`, + REGSTR_VAL_PROVIDER_NAME = `ProviderName`, + REGSTR_VAL_CONNECTION_TYPE = `ConnectionType`, + REGSTR_VAL_UPGRADE = `Upgrade`, + REGSTR_KEY_LOGON = `\Logon`, + REGSTR_VAL_MUSTBEVALIDATED = `MustBeValidated`, + REGSTR_VAL_RUNLOGINSCRIPT = `ProcessLoginScript`, + REGSTR_KEY_NETWORKPROVIDER = `\NetworkProvider`, + REGSTR_PATH_NW32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\NWNP32` ~ REGSTR_KEY_NETWORKPROVIDER, + REGSTR_PATH_MS32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\MSNP32` ~ REGSTR_KEY_NETWORKPROVIDER, + REGSTR_VAL_AUTHENT_AGENT = `AuthenticatingAgent`, + REGSTR_VAL_PREFREDIR = `PreferredRedir`, + REGSTR_VAL_AUTOSTART = `AutoStart`, + REGSTR_VAL_AUTOLOGON = `AutoLogon`, + REGSTR_VAL_NETCARD = `Netcard`, + REGSTR_VAL_TRANSPORT = `Transport`, + REGSTR_VAL_DYNAMIC = `Dynamic`, + REGSTR_VAL_TRANSITION = `Transition`, + REGSTR_VAL_STATICDRIVE = `StaticDrive`, + REGSTR_VAL_LOADHI = `LoadHi`, + REGSTR_VAL_LOADRMDRIVERS = `LoadRMDrivers`, + REGSTR_VAL_SETUPN = `SetupN`, + REGSTR_VAL_SETUPNPATH = `SetupNPath`, + REGSTR_VAL_WRKGRP_FORCEMAPPING = `WrkgrpForceMapping`, + REGSTR_VAL_WRKGRP_REQUIRED = `WrkgrpRequired`, + REGSTR_PATH_CURRENT_CONTROL_SET = `System\CurrentControlSet\Control`, + REGSTR_VAL_CURRENT_USER = `Current User`, + REGSTR_PATH_PWDPROVIDER = `System\CurrentControlSet\Control\PwdProvider`, + REGSTR_VAL_PWDPROVIDER_PATH = `ProviderPath`, + REGSTR_VAL_PWDPROVIDER_DESC = `Description`, + REGSTR_VAL_PWDPROVIDER_CHANGEPWD = `ChangePassword`, + REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND = `ChangePasswordHwnd`, + REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS = `GetPasswordStatus`, + REGSTR_VAL_PWDPROVIDER_ISNP = `NetworkProvider`, + REGSTR_VAL_PWDPROVIDER_CHANGEORDER = `ChangeOrder`, + REGSTR_PATH_POLICIES = `Software\Microsoft\Windows\CurrentVersion\Policies`, + REGSTR_PATH_UPDATE = `System\CurrentControlSet\Control\Update`, + REGSTR_VALUE_ENABLE = `Enable`, + REGSTR_VALUE_VERBOSE = `Verbose`, + REGSTR_VALUE_NETPATH = `NetworkPath`, + REGSTR_VALUE_DEFAULTLOC = `UseDefaultNetLocation`, + REGSTR_KEY_NETWORK = `Network`, // [Redefined] REGSTR_KEY_SYSTEM = `System`) - REGSTR_KEY_PRINTERS = `Printers`, - REGSTR_KEY_WINOLDAPP = `WinOldApp`, - REGSTR_VAL_NOFILESHARING = `NoFileSharing`, - REGSTR_VAL_NOPRINTSHARING = `NoPrintSharing`, - REGSTR_VAL_NOFILESHARINGCTRL = `NoFileSharingControl`, - REGSTR_VAL_NOPRINTSHARINGCTRL = `NoPrintSharingControl`, - REGSTR_VAL_HIDESHAREPWDS = `HideSharePwds`, - REGSTR_VAL_DISABLEPWDCACHING = `DisablePwdCaching`, - REGSTR_VAL_ALPHANUMPWDS = `AlphanumPwds`, - REGSTR_VAL_NETSETUP_DISABLE = `NoNetSetup`, - REGSTR_VAL_NETSETUP_NOCONFIGPAGE = `NoNetSetupConfigPage`, - REGSTR_VAL_NETSETUP_NOIDPAGE = `NoNetSetupIDPage`, - REGSTR_VAL_NETSETUP_NOSECURITYPAGE = `NoNetSetupSecurityPage`, - REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE = `NoVirtMemPage`, - REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE = `NoDevMgrPage`, - REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE = `NoConfigPage`, - REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE = `NoFileSysPage`, - REGSTR_VAL_DISPCPL_NODISPCPL = `NoDispCPL`, - REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE = `NoDispBackgroundPage`, - REGSTR_VAL_DISPCPL_NOSCRSAVPAGE = `NoDispScrSavPage`, - REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE = `NoDispAppearancePage`, - REGSTR_VAL_DISPCPL_NOSETTINGSPAGE = `NoDispSettingsPage`, - REGSTR_VAL_SECCPL_NOSECCPL = `NoSecCPL`, - REGSTR_VAL_SECCPL_NOPWDPAGE = `NoPwdPage`, - REGSTR_VAL_SECCPL_NOADMINPAGE = `NoAdminPage`, - REGSTR_VAL_SECCPL_NOPROFILEPAGE = `NoProfilePage`, - REGSTR_VAL_PRINTERS_HIDETABS = `NoPrinterTabs`, - REGSTR_VAL_PRINTERS_NODELETE = `NoDeletePrinter`, - REGSTR_VAL_PRINTERS_NOADD = `NoAddPrinter`, - REGSTR_VAL_WINOLDAPP_DISABLED = `Disabled`, - REGSTR_VAL_WINOLDAPP_NOREALMODE = `NoRealMode`, - REGSTR_VAL_NOENTIRENETWORK = `NoEntireNetwork`, - REGSTR_VAL_NOWORKGROUPCONTENTS = `NoWorkgroupContents`, - REGSTR_VAL_MINPWDLEN = `MinPwdLen`, - REGSTR_VAL_PWDEXPIRATION = `PwdExpiration`, - REGSTR_VAL_WIN31PROVIDER = `Win31Provider`, - REGSTR_VAL_DISABLEREGTOOLS = `DisableRegistryTools`, - REGSTR_PATH_WINLOGON = `Software\Microsoft\Windows\CurrentVersion\Winlogon`, - REGSTR_VAL_LEGALNOTICECAPTION = `LegalNoticeCaption`, - REGSTR_VAL_LEGALNOTICETEXT = `LegalNoticeText`, - REGSTR_VAL_RESTRICTRUN = `RestrictRun`, - REGSTR_KEY_POL_USERS = `Users`, - REGSTR_KEY_POL_COMPUTERS = `Computers`, - REGSTR_KEY_POL_USERGROUPS = `UserGroups`, - REGSTR_KEY_POL_DEFAULT = `.default`, - REGSTR_KEY_POL_USERGROUPDATA = `GroupData\UserGroups\Priority`, - REGSTR_PATH_TIMEZONE = `System\CurrentControlSet\Control\TimeZoneInformation`, - REGSTR_VAL_TZBIAS = `Bias`, - REGSTR_VAL_TZDLTBIAS = `DaylightBias`, - REGSTR_VAL_TZSTDBIAS = `StandardBias`, - REGSTR_VAL_TZACTBIAS = `ActiveTimeBias`, - REGSTR_VAL_TZDLTFLAG = `DaylightFlag`, - REGSTR_VAL_TZSTDSTART = `StandardStart`, - REGSTR_VAL_TZDLTSTART = `DaylightStart`, - REGSTR_VAL_TZDLTNAME = `DaylightName`, - REGSTR_VAL_TZSTDNAME = `StandardName`, - REGSTR_VAL_TZNOCHANGESTART = `NoChangeStart`, - REGSTR_VAL_TZNOCHANGEEND = `NoChangeEnd`, - REGSTR_VAL_TZNOAUTOTIME = `DisableAutoDaylightTimeSet`, - REGSTR_PATH_FLOATINGPOINTPROCESSOR = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor`, - REGSTR_PATH_FLOATINGPOINTPROCESSOR0 = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0`, - REGSTR_PATH_COMPUTRNAME = `System\CurrentControlSet\Control\ComputerName\ComputerName`, - REGSTR_VAL_COMPUTRNAME = `ComputerName`, - REGSTR_PATH_SHUTDOWN = `System\CurrentControlSet\Control\Shutdown`, - REGSTR_VAL_FORCEREBOOT = `ForceReboot`, - REGSTR_VAL_SETUPPROGRAMRAN = `SetupProgramRan`, - REGSTR_VAL_DOES_POLLING = `PollingSupportNeeded`, - REGSTR_PATH_KNOWNDLLS = `System\CurrentControlSet\Control\SessionManager\KnownDLLs`, - REGSTR_PATH_KNOWN16DLLS = `System\CurrentControlSet\Control\SessionManager\Known16DLLs`, - REGSTR_PATH_CHECKVERDLLS = `System\CurrentControlSet\Control\SessionManager\CheckVerDLLs`, - REGSTR_PATH_WARNVERDLLS = `System\CurrentControlSet\Control\SessionManager\WarnVerDLLs`, - REGSTR_PATH_HACKINIFILE = `System\CurrentControlSet\Control\SessionManager\HackIniFiles`, - REGSTR_PATH_CHECKBADAPPS = `System\CurrentControlSet\Control\SessionManager\CheckBadApps`, - REGSTR_PATH_APPPATCH = `System\CurrentControlSet\Control\SessionManager\AppPatches`, - REGSTR_PATH_KNOWNVXDS = `System\CurrentControlSet\Control\SessionManager\KnownVxDs`, - REGSTR_VAL_UNINSTALLER_DISPLAYNAME = `DisplayName`, - REGSTR_VAL_UNINSTALLER_COMMANDLINE = `UninstallString`, - REGSTR_PATH_DESKTOP = REGSTR_PATH_SCREENSAVE, - REGSTR_PATH_MOUSE = `Control Panel\Mouse`, - REGSTR_PATH_KEYBOARD = `Control Panel\Keyboard`, - REGSTR_PATH_COLORS = `Control Panel\Colors`, - REGSTR_PATH_SOUND = `Control Panel\Sound`, - REGSTR_PATH_METRICS = `Control Panel\Desktop\WindowMetrics`, - REGSTR_PATH_ICONS = `Control Panel\Icons`, - REGSTR_PATH_CURSORS = `Control Panel\Cursors`, - REGSTR_PATH_CHECKDISK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive`, - REGSTR_PATH_CHECKDISKSET = `Settings`, - REGSTR_PATH_CHECKDISKUDRVS = `NoUnknownDDErrDrvs`, - REGSTR_PATH_FAULT = `Software\Microsoft\Windows\CurrentVersion\Fault`, - REGSTR_VAL_FAULT_LOGFILE = `LogFile`, - REGSTR_PATH_AEDEBUG = `Software\Microsoft\Windows NT\CurrentVersion\AeDebug`, - REGSTR_VAL_AEDEBUG_DEBUGGER = `Debugger`, - REGSTR_VAL_AEDEBUG_AUTO = `Auto`, - REGSTR_PATH_GRPCONV = `Software\Microsoft\Windows\CurrentVersion\GrpConv`, - REGSTR_VAL_REGITEMDELETEMESSAGE = `Removal Message`, - REGSTR_PATH_LASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastCheck`, - REGSTR_PATH_LASTOPTIMIZE = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastOptimize`, - REGSTR_PATH_LASTBACKUP = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastBackup`, - REGSTR_PATH_CHKLASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastCheck`, - REGSTR_PATH_CHKLASTSURFAN = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastSurfaceAnalysis`, - REGSTR_KEY_SHARES = `Software\Microsoft\Windows\CurrentVersion\Network\LanMan`, - REGSTR_VAL_SHARES_FLAGS = `Flags`, - REGSTR_VAL_SHARES_TYPE = `Type`, - REGSTR_VAL_SHARES_PATH = `Path`, - REGSTR_VAL_SHARES_REMARK = `Remark`, - REGSTR_VAL_SHARES_RW_PASS = `Parm1`, - REGSTR_VAL_SHARES_RO_PASS = `Parm2`, - REGSTR_PATH_PRINT = `System\CurrentControlSet\Control\Print`, - REGSTR_PATH_PRINTERS = `System\CurrentControlSet\Control\Print\Printers`, - REGSTR_PATH_PROVIDERS = `System\CurrentControlSet\Control\Print\Providers`, - REGSTR_PATH_MONITORS = `System\CurrentControlSet\Control\Print\Monitors`, - REGSTR_PATH_ENVIRONMENTS = `System\CurrentControlSet\Control\Print\Environments`, - REGSTR_VAL_START_ON_BOOT = `StartOnBoot`, - REGSTR_VAL_PRINTERS_MASK = `PrintersMask`, - REGSTR_VAL_DOS_SPOOL_MASK = `DOSSpoolMask`, - REGSTR_KEY_CURRENT_ENV = `\Windows 4.0`, - REGSTR_KEY_DRIVERS = `\Drivers`, - REGSTR_KEY_PRINT_PROC = `\Print Processors`, - REGSTR_PATH_EVENTLABELS = `AppEvents\EventLabels`, - REGSTR_PATH_SCHEMES = `AppEvents\Schemes`, - REGSTR_PATH_APPS = REGSTR_PATH_SCHEMES ~ `\Apps`, - REGSTR_PATH_APPS_DEFAULT = REGSTR_PATH_SCHEMES ~ `\Apps\.Default`, - REGSTR_PATH_NAMES = REGSTR_PATH_SCHEMES ~ `\Names`, - REGSTR_PATH_MULTIMEDIA = REGSTR_PATH_SETUP ~ `\Multimedia`, - REGSTR_PATH_MULTIMEDIA_AUDIO = `Software\Microsoft\Multimedia\Audio`, - REGSTR_PATH_MEDIARESOURCES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaResources`, - REGSTR_PATH_MEDIAPROPERTIES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaProperties`, - REGSTR_PATH_PRIVATEPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PrivateProperties`, - REGSTR_PATH_PUBLICPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PublicProperties`, - REGSTR_PATH_JOYOEM = REGSTR_PATH_PRIVATEPROPERTIES ~ `\Joystick\OEM`, - REGSTR_PATH_JOYCONFIG = REGSTR_PATH_MEDIARESOURCES ~ `\Joystick`, - REGSTR_KEY_JOYCURR = `CurrentJoystickSettings`, - REGSTR_KEY_JOYSETTINGS = `JoystickSettings`, - REGSTR_VAL_JOYUSERVALUES = `JoystickUserValues`, - REGSTR_VAL_JOYCALLOUT = `JoystickCallout`, - REGSTR_VAL_JOYNCONFIG = `Joystick%dConfiguration`, - REGSTR_VAL_JOYNOEMNAME = `Joystick%dOEMName`, - REGSTR_VAL_JOYNOEMCALLOUT = `Joystick%dOEMCallout`, - REGSTR_VAL_JOYOEMCALLOUT = `OEMCallout`, - REGSTR_VAL_JOYOEMNAME = `OEMName`, - REGSTR_VAL_JOYOEMDATA = `OEMData`, - REGSTR_VAL_JOYOEMXYLABEL = `OEMXYLabel`, - REGSTR_VAL_JOYOEMZLABEL = `OEMZLabel`, - REGSTR_VAL_JOYOEMRLABEL = `OEMRLabel`, - REGSTR_VAL_JOYOEMPOVLABEL = `OEMPOVLabel`, - REGSTR_VAL_JOYOEMULABEL = `OEMULabel`, - REGSTR_VAL_JOYOEMVLABEL = `OEMVLabel`, - REGSTR_VAL_JOYOEMTESTMOVEDESC = `OEMTestMoveDesc`, - REGSTR_VAL_JOYOEMTESTBUTTONDESC = `OEMTestButtonDesc`, - REGSTR_VAL_JOYOEMTESTMOVECAP = `OEMTestMoveCap`, - REGSTR_VAL_JOYOEMTESTBUTTONCAP = `OEMTestButtonCap`, - REGSTR_VAL_JOYOEMTESTWINCAP = `OEMTestWinCap`, - REGSTR_VAL_JOYOEMCALCAP = `OEMCalCap`, - REGSTR_VAL_JOYOEMCALWINCAP = `OEMCalWinCap`, - REGSTR_VAL_JOYOEMCAL1 = `OEMCal1`, - REGSTR_VAL_JOYOEMCAL2 = `OEMCal2`, - REGSTR_VAL_JOYOEMCAL3 = `OEMCal3`, - REGSTR_VAL_JOYOEMCAL4 = `OEMCal4`, - REGSTR_VAL_JOYOEMCAL5 = `OEMCal5`, - REGSTR_VAL_JOYOEMCAL6 = `OEMCal6`, - REGSTR_VAL_JOYOEMCAL7 = `OEMCal7`, - REGSTR_VAL_JOYOEMCAL8 = `OEMCal8`, - REGSTR_VAL_JOYOEMCAL9 = `OEMCal9`, - REGSTR_VAL_JOYOEMCAL10 = `OEMCal10`, - REGSTR_VAL_JOYOEMCAL11 = `OEMCal11`, - REGSTR_VAL_JOYOEMCAL12 = `OEMCal12`; + REGSTR_KEY_PRINTERS = `Printers`, + REGSTR_KEY_WINOLDAPP = `WinOldApp`, + REGSTR_VAL_NOFILESHARING = `NoFileSharing`, + REGSTR_VAL_NOPRINTSHARING = `NoPrintSharing`, + REGSTR_VAL_NOFILESHARINGCTRL = `NoFileSharingControl`, + REGSTR_VAL_NOPRINTSHARINGCTRL = `NoPrintSharingControl`, + REGSTR_VAL_HIDESHAREPWDS = `HideSharePwds`, + REGSTR_VAL_DISABLEPWDCACHING = `DisablePwdCaching`, + REGSTR_VAL_ALPHANUMPWDS = `AlphanumPwds`, + REGSTR_VAL_NETSETUP_DISABLE = `NoNetSetup`, + REGSTR_VAL_NETSETUP_NOCONFIGPAGE = `NoNetSetupConfigPage`, + REGSTR_VAL_NETSETUP_NOIDPAGE = `NoNetSetupIDPage`, + REGSTR_VAL_NETSETUP_NOSECURITYPAGE = `NoNetSetupSecurityPage`, + REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE = `NoVirtMemPage`, + REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE = `NoDevMgrPage`, + REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE = `NoConfigPage`, + REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE = `NoFileSysPage`, + REGSTR_VAL_DISPCPL_NODISPCPL = `NoDispCPL`, + REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE = `NoDispBackgroundPage`, + REGSTR_VAL_DISPCPL_NOSCRSAVPAGE = `NoDispScrSavPage`, + REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE = `NoDispAppearancePage`, + REGSTR_VAL_DISPCPL_NOSETTINGSPAGE = `NoDispSettingsPage`, + REGSTR_VAL_SECCPL_NOSECCPL = `NoSecCPL`, + REGSTR_VAL_SECCPL_NOPWDPAGE = `NoPwdPage`, + REGSTR_VAL_SECCPL_NOADMINPAGE = `NoAdminPage`, + REGSTR_VAL_SECCPL_NOPROFILEPAGE = `NoProfilePage`, + REGSTR_VAL_PRINTERS_HIDETABS = `NoPrinterTabs`, + REGSTR_VAL_PRINTERS_NODELETE = `NoDeletePrinter`, + REGSTR_VAL_PRINTERS_NOADD = `NoAddPrinter`, + REGSTR_VAL_WINOLDAPP_DISABLED = `Disabled`, + REGSTR_VAL_WINOLDAPP_NOREALMODE = `NoRealMode`, + REGSTR_VAL_NOENTIRENETWORK = `NoEntireNetwork`, + REGSTR_VAL_NOWORKGROUPCONTENTS = `NoWorkgroupContents`, + REGSTR_VAL_MINPWDLEN = `MinPwdLen`, + REGSTR_VAL_PWDEXPIRATION = `PwdExpiration`, + REGSTR_VAL_WIN31PROVIDER = `Win31Provider`, + REGSTR_VAL_DISABLEREGTOOLS = `DisableRegistryTools`, + REGSTR_PATH_WINLOGON = `Software\Microsoft\Windows\CurrentVersion\Winlogon`, + REGSTR_VAL_LEGALNOTICECAPTION = `LegalNoticeCaption`, + REGSTR_VAL_LEGALNOTICETEXT = `LegalNoticeText`, + REGSTR_VAL_RESTRICTRUN = `RestrictRun`, + REGSTR_KEY_POL_USERS = `Users`, + REGSTR_KEY_POL_COMPUTERS = `Computers`, + REGSTR_KEY_POL_USERGROUPS = `UserGroups`, + REGSTR_KEY_POL_DEFAULT = `.default`, + REGSTR_KEY_POL_USERGROUPDATA = `GroupData\UserGroups\Priority`, + REGSTR_PATH_TIMEZONE = `System\CurrentControlSet\Control\TimeZoneInformation`, + REGSTR_VAL_TZBIAS = `Bias`, + REGSTR_VAL_TZDLTBIAS = `DaylightBias`, + REGSTR_VAL_TZSTDBIAS = `StandardBias`, + REGSTR_VAL_TZACTBIAS = `ActiveTimeBias`, + REGSTR_VAL_TZDLTFLAG = `DaylightFlag`, + REGSTR_VAL_TZSTDSTART = `StandardStart`, + REGSTR_VAL_TZDLTSTART = `DaylightStart`, + REGSTR_VAL_TZDLTNAME = `DaylightName`, + REGSTR_VAL_TZSTDNAME = `StandardName`, + REGSTR_VAL_TZNOCHANGESTART = `NoChangeStart`, + REGSTR_VAL_TZNOCHANGEEND = `NoChangeEnd`, + REGSTR_VAL_TZNOAUTOTIME = `DisableAutoDaylightTimeSet`, + REGSTR_PATH_FLOATINGPOINTPROCESSOR = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor`, + REGSTR_PATH_FLOATINGPOINTPROCESSOR0 = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0`, + REGSTR_PATH_COMPUTRNAME = `System\CurrentControlSet\Control\ComputerName\ComputerName`, + REGSTR_VAL_COMPUTRNAME = `ComputerName`, + REGSTR_PATH_SHUTDOWN = `System\CurrentControlSet\Control\Shutdown`, + REGSTR_VAL_FORCEREBOOT = `ForceReboot`, + REGSTR_VAL_SETUPPROGRAMRAN = `SetupProgramRan`, + REGSTR_VAL_DOES_POLLING = `PollingSupportNeeded`, + REGSTR_PATH_KNOWNDLLS = `System\CurrentControlSet\Control\SessionManager\KnownDLLs`, + REGSTR_PATH_KNOWN16DLLS = `System\CurrentControlSet\Control\SessionManager\Known16DLLs`, + REGSTR_PATH_CHECKVERDLLS = `System\CurrentControlSet\Control\SessionManager\CheckVerDLLs`, + REGSTR_PATH_WARNVERDLLS = `System\CurrentControlSet\Control\SessionManager\WarnVerDLLs`, + REGSTR_PATH_HACKINIFILE = `System\CurrentControlSet\Control\SessionManager\HackIniFiles`, + REGSTR_PATH_CHECKBADAPPS = `System\CurrentControlSet\Control\SessionManager\CheckBadApps`, + REGSTR_PATH_APPPATCH = `System\CurrentControlSet\Control\SessionManager\AppPatches`, + REGSTR_PATH_KNOWNVXDS = `System\CurrentControlSet\Control\SessionManager\KnownVxDs`, + REGSTR_VAL_UNINSTALLER_DISPLAYNAME = `DisplayName`, + REGSTR_VAL_UNINSTALLER_COMMANDLINE = `UninstallString`, + REGSTR_PATH_DESKTOP = REGSTR_PATH_SCREENSAVE, + REGSTR_PATH_MOUSE = `Control Panel\Mouse`, + REGSTR_PATH_KEYBOARD = `Control Panel\Keyboard`, + REGSTR_PATH_COLORS = `Control Panel\Colors`, + REGSTR_PATH_SOUND = `Control Panel\Sound`, + REGSTR_PATH_METRICS = `Control Panel\Desktop\WindowMetrics`, + REGSTR_PATH_ICONS = `Control Panel\Icons`, + REGSTR_PATH_CURSORS = `Control Panel\Cursors`, + REGSTR_PATH_CHECKDISK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive`, + REGSTR_PATH_CHECKDISKSET = `Settings`, + REGSTR_PATH_CHECKDISKUDRVS = `NoUnknownDDErrDrvs`, + REGSTR_PATH_FAULT = `Software\Microsoft\Windows\CurrentVersion\Fault`, + REGSTR_VAL_FAULT_LOGFILE = `LogFile`, + REGSTR_PATH_AEDEBUG = `Software\Microsoft\Windows NT\CurrentVersion\AeDebug`, + REGSTR_VAL_AEDEBUG_DEBUGGER = `Debugger`, + REGSTR_VAL_AEDEBUG_AUTO = `Auto`, + REGSTR_PATH_GRPCONV = `Software\Microsoft\Windows\CurrentVersion\GrpConv`, + REGSTR_VAL_REGITEMDELETEMESSAGE = `Removal Message`, + REGSTR_PATH_LASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastCheck`, + REGSTR_PATH_LASTOPTIMIZE = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastOptimize`, + REGSTR_PATH_LASTBACKUP = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastBackup`, + REGSTR_PATH_CHKLASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastCheck`, + REGSTR_PATH_CHKLASTSURFAN = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastSurfaceAnalysis`, + REGSTR_KEY_SHARES = `Software\Microsoft\Windows\CurrentVersion\Network\LanMan`, + REGSTR_VAL_SHARES_FLAGS = `Flags`, + REGSTR_VAL_SHARES_TYPE = `Type`, + REGSTR_VAL_SHARES_PATH = `Path`, + REGSTR_VAL_SHARES_REMARK = `Remark`, + REGSTR_VAL_SHARES_RW_PASS = `Parm1`, + REGSTR_VAL_SHARES_RO_PASS = `Parm2`, + REGSTR_PATH_PRINT = `System\CurrentControlSet\Control\Print`, + REGSTR_PATH_PRINTERS = `System\CurrentControlSet\Control\Print\Printers`, + REGSTR_PATH_PROVIDERS = `System\CurrentControlSet\Control\Print\Providers`, + REGSTR_PATH_MONITORS = `System\CurrentControlSet\Control\Print\Monitors`, + REGSTR_PATH_ENVIRONMENTS = `System\CurrentControlSet\Control\Print\Environments`, + REGSTR_VAL_START_ON_BOOT = `StartOnBoot`, + REGSTR_VAL_PRINTERS_MASK = `PrintersMask`, + REGSTR_VAL_DOS_SPOOL_MASK = `DOSSpoolMask`, + REGSTR_KEY_CURRENT_ENV = `\Windows 4.0`, + REGSTR_KEY_DRIVERS = `\Drivers`, + REGSTR_KEY_PRINT_PROC = `\Print Processors`, + REGSTR_PATH_EVENTLABELS = `AppEvents\EventLabels`, + REGSTR_PATH_SCHEMES = `AppEvents\Schemes`, + REGSTR_PATH_APPS = REGSTR_PATH_SCHEMES ~ `\Apps`, + REGSTR_PATH_APPS_DEFAULT = REGSTR_PATH_SCHEMES ~ `\Apps\.Default`, + REGSTR_PATH_NAMES = REGSTR_PATH_SCHEMES ~ `\Names`, + REGSTR_PATH_MULTIMEDIA = REGSTR_PATH_SETUP ~ `\Multimedia`, + REGSTR_PATH_MULTIMEDIA_AUDIO = `Software\Microsoft\Multimedia\Audio`, + REGSTR_PATH_MEDIARESOURCES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaResources`, + REGSTR_PATH_MEDIAPROPERTIES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaProperties`, + REGSTR_PATH_PRIVATEPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PrivateProperties`, + REGSTR_PATH_PUBLICPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PublicProperties`, + REGSTR_PATH_JOYOEM = REGSTR_PATH_PRIVATEPROPERTIES ~ `\Joystick\OEM`, + REGSTR_PATH_JOYCONFIG = REGSTR_PATH_MEDIARESOURCES ~ `\Joystick`, + REGSTR_KEY_JOYCURR = `CurrentJoystickSettings`, + REGSTR_KEY_JOYSETTINGS = `JoystickSettings`, + REGSTR_VAL_JOYUSERVALUES = `JoystickUserValues`, + REGSTR_VAL_JOYCALLOUT = `JoystickCallout`, + REGSTR_VAL_JOYNCONFIG = `Joystick%dConfiguration`, + REGSTR_VAL_JOYNOEMNAME = `Joystick%dOEMName`, + REGSTR_VAL_JOYNOEMCALLOUT = `Joystick%dOEMCallout`, + REGSTR_VAL_JOYOEMCALLOUT = `OEMCallout`, + REGSTR_VAL_JOYOEMNAME = `OEMName`, + REGSTR_VAL_JOYOEMDATA = `OEMData`, + REGSTR_VAL_JOYOEMXYLABEL = `OEMXYLabel`, + REGSTR_VAL_JOYOEMZLABEL = `OEMZLabel`, + REGSTR_VAL_JOYOEMRLABEL = `OEMRLabel`, + REGSTR_VAL_JOYOEMPOVLABEL = `OEMPOVLabel`, + REGSTR_VAL_JOYOEMULABEL = `OEMULabel`, + REGSTR_VAL_JOYOEMVLABEL = `OEMVLabel`, + REGSTR_VAL_JOYOEMTESTMOVEDESC = `OEMTestMoveDesc`, + REGSTR_VAL_JOYOEMTESTBUTTONDESC = `OEMTestButtonDesc`, + REGSTR_VAL_JOYOEMTESTMOVECAP = `OEMTestMoveCap`, + REGSTR_VAL_JOYOEMTESTBUTTONCAP = `OEMTestButtonCap`, + REGSTR_VAL_JOYOEMTESTWINCAP = `OEMTestWinCap`, + REGSTR_VAL_JOYOEMCALCAP = `OEMCalCap`, + REGSTR_VAL_JOYOEMCALWINCAP = `OEMCalWinCap`, + REGSTR_VAL_JOYOEMCAL1 = `OEMCal1`, + REGSTR_VAL_JOYOEMCAL2 = `OEMCal2`, + REGSTR_VAL_JOYOEMCAL3 = `OEMCal3`, + REGSTR_VAL_JOYOEMCAL4 = `OEMCal4`, + REGSTR_VAL_JOYOEMCAL5 = `OEMCal5`, + REGSTR_VAL_JOYOEMCAL6 = `OEMCal6`, + REGSTR_VAL_JOYOEMCAL7 = `OEMCal7`, + REGSTR_VAL_JOYOEMCAL8 = `OEMCal8`, + REGSTR_VAL_JOYOEMCAL9 = `OEMCal9`, + REGSTR_VAL_JOYOEMCAL10 = `OEMCal10`, + REGSTR_VAL_JOYOEMCAL11 = `OEMCal11`, + REGSTR_VAL_JOYOEMCAL12 = `OEMCal12`; enum { - DTRESULTOK, - DTRESULTFIX, - DTRESULTPROB, - DTRESULTPART + DTRESULTOK, + DTRESULTFIX, + DTRESULTPROB, + DTRESULTPART } //#ifndef NEC_98 @@ -802,14 +802,14 @@ const PCIC_DEFAULT_IRQMASK = 0x4EB8; const PCIC_DEFAULT_NUMSOCKETS = 0; struct DSKTLSYSTEMTIME { - WORD wYear; - WORD wMonth; - WORD wDayOfWeek; - WORD wDay; - WORD wHour; - WORD wMinute; - WORD wSecond; - WORD wMilliseconds; - WORD wResult; + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; + WORD wResult; } alias DSKTLSYSTEMTIME* PDSKTLSYSTEMTIME, LPDSKTLSYSTEMTIME; diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d index 073e31344f..a9d38a0182 100644 --- a/src/core/sys/windows/richedit.d +++ b/src/core/sys/windows/richedit.d @@ -14,56 +14,56 @@ private import core.sys.windows.wingdi; // for LF_FACESIZE align(4): version(Unicode) { - const wchar[] RICHEDIT_CLASS = "RichEdit20W"; + const wchar[] RICHEDIT_CLASS = "RichEdit20W"; } else { - const char[] RICHEDIT_CLASS = "RichEdit20A"; + const char[] RICHEDIT_CLASS = "RichEdit20A"; } const RICHEDIT_CLASS10A = "RICHEDIT"; const TCHAR[] - CF_RTF = "Rich Text Format", - CF_RTFNOOBJS = "Rich Text Format Without Objects", - CF_RETEXTOBJ = "RichEdit Text and Objects"; + CF_RTF = "Rich Text Format", + CF_RTFNOOBJS = "Rich Text Format Without Objects", + CF_RETEXTOBJ = "RichEdit Text and Objects"; const DWORD - CFM_BOLD = 1, - CFM_ITALIC = 2, - CFM_UNDERLINE = 4, - CFM_STRIKEOUT = 8, - CFM_PROTECTED = 16, - CFM_LINK = 32, - CFM_SIZE = 0x80000000, - CFM_COLOR = 0x40000000, - CFM_FACE = 0x20000000, - CFM_OFFSET = 0x10000000, - CFM_CHARSET = 0x08000000, - CFM_SUBSCRIPT = 0x00030000, - CFM_SUPERSCRIPT = 0x00030000; + CFM_BOLD = 1, + CFM_ITALIC = 2, + CFM_UNDERLINE = 4, + CFM_STRIKEOUT = 8, + CFM_PROTECTED = 16, + CFM_LINK = 32, + CFM_SIZE = 0x80000000, + CFM_COLOR = 0x40000000, + CFM_FACE = 0x20000000, + CFM_OFFSET = 0x10000000, + CFM_CHARSET = 0x08000000, + CFM_SUBSCRIPT = 0x00030000, + CFM_SUPERSCRIPT = 0x00030000; const DWORD - CFE_BOLD = 1, - CFE_ITALIC = 2, - CFE_UNDERLINE = 4, - CFE_STRIKEOUT = 8, - CFE_PROTECTED = 16, - CFE_SUBSCRIPT = 0x00010000, - CFE_SUPERSCRIPT = 0x00020000, - CFE_AUTOCOLOR = 0x40000000; + CFE_BOLD = 1, + CFE_ITALIC = 2, + CFE_UNDERLINE = 4, + CFE_STRIKEOUT = 8, + CFE_PROTECTED = 16, + CFE_SUBSCRIPT = 0x00010000, + CFE_SUPERSCRIPT = 0x00020000, + CFE_AUTOCOLOR = 0x40000000; const CFM_EFFECTS = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK; // flags for EM_SETIMEOPTIONS const LPARAM - IMF_FORCENONE = 1, - IMF_FORCEENABLE = 2, - IMF_FORCEDISABLE = 4, - IMF_CLOSESTATUSWINDOW = 8, - IMF_VERTICAL = 32, - IMF_FORCEACTIVE = 64, - IMF_FORCEINACTIVE = 128, - IMF_FORCEREMEMBER = 256; + IMF_FORCENONE = 1, + IMF_FORCEENABLE = 2, + IMF_FORCEDISABLE = 4, + IMF_CLOSESTATUSWINDOW = 8, + IMF_VERTICAL = 32, + IMF_FORCEACTIVE = 64, + IMF_FORCEINACTIVE = 128, + IMF_FORCEREMEMBER = 256; const SEL_EMPTY=0; const SEL_TEXT=1; @@ -272,10 +272,10 @@ const ECO_SELECTIONBAR=0x1000000; const ECO_VERTICAL=0x400000; enum { - ECOOP_SET = 1, - ECOOP_OR, - ECOOP_AND, - ECOOP_XOR + ECOOP_SET = 1, + ECOOP_OR, + ECOOP_AND, + ECOOP_XOR } const SCF_DEFAULT = 0; @@ -307,250 +307,250 @@ const UID_CUT = 4; const UID_PASTE = 5; struct CHARFORMATA { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - char[LF_FACESIZE] szFaceName; + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char[LF_FACESIZE] szFaceName; } struct CHARFORMATW { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - WCHAR[LF_FACESIZE] szFaceName; + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR[LF_FACESIZE] szFaceName; } struct CHARFORMAT2A { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - char[LF_FACESIZE] szFaceName; - WORD wWeight; - SHORT sSpacing; - COLORREF crBackColor; - LCID lcid; - DWORD dwReserved; - SHORT sStyle; - WORD wKerning; - BYTE bUnderlineType; - BYTE bAnimation; - BYTE bRevAuthor; + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char[LF_FACESIZE] szFaceName; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; } struct CHARFORMAT2W { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - WCHAR[LF_FACESIZE] szFaceName; - WORD wWeight; - SHORT sSpacing; - COLORREF crBackColor; - LCID lcid; - DWORD dwReserved; - SHORT sStyle; - WORD wKerning; - BYTE bUnderlineType; - BYTE bAnimation; - BYTE bRevAuthor; + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR[LF_FACESIZE] szFaceName; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; } struct CHARRANGE { - LONG cpMin; - LONG cpMax; + LONG cpMin; + LONG cpMax; } struct COMPCOLOR { - COLORREF crText; - COLORREF crBackground; - DWORD dwEffects; + COLORREF crText; + COLORREF crBackground; + DWORD dwEffects; } extern (Windows) { - alias DWORD function(DWORD,PBYTE,LONG,LONG*) EDITSTREAMCALLBACK; + alias DWORD function(DWORD,PBYTE,LONG,LONG*) EDITSTREAMCALLBACK; } struct EDITSTREAM { - DWORD dwCookie; - DWORD dwError; - EDITSTREAMCALLBACK pfnCallback; + DWORD dwCookie; + DWORD dwError; + EDITSTREAMCALLBACK pfnCallback; } struct ENCORRECTTEXT { - NMHDR nmhdr; - CHARRANGE chrg; - WORD seltyp; + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; } struct ENDROPFILES { - NMHDR nmhdr; - HANDLE hDrop; - LONG cp; - BOOL fProtected; + NMHDR nmhdr; + HANDLE hDrop; + LONG cp; + BOOL fProtected; } struct ENLINK { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; - CHARRANGE chrg; + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; } struct ENOLEOPFAILED { - NMHDR nmhdr; - LONG iob; - LONG lOper; - HRESULT hr; + NMHDR nmhdr; + LONG iob; + LONG lOper; + HRESULT hr; } struct ENPROTECTED { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; - CHARRANGE chrg; + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; } alias ENPROTECTED* LPENPROTECTED; struct ENSAVECLIPBOARD { - NMHDR nmhdr; - LONG cObjectCount; - LONG cch; + NMHDR nmhdr; + LONG cObjectCount; + LONG cch; } struct FINDTEXTA { - CHARRANGE chrg; - LPSTR lpstrText; + CHARRANGE chrg; + LPSTR lpstrText; } struct FINDTEXTW { - CHARRANGE chrg; - LPWSTR lpstrText; + CHARRANGE chrg; + LPWSTR lpstrText; } struct FINDTEXTEXA { - CHARRANGE chrg; - LPSTR lpstrText; - CHARRANGE chrgText; + CHARRANGE chrg; + LPSTR lpstrText; + CHARRANGE chrgText; } struct FINDTEXTEXW { - CHARRANGE chrg; - LPWSTR lpstrText; - CHARRANGE chrgText; + CHARRANGE chrg; + LPWSTR lpstrText; + CHARRANGE chrgText; } struct FORMATRANGE { - HDC hdc; - HDC hdcTarget; - RECT rc; - RECT rcPage; - CHARRANGE chrg; + HDC hdc; + HDC hdcTarget; + RECT rc; + RECT rcPage; + CHARRANGE chrg; } struct MSGFILTER { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; } struct PARAFORMAT { - UINT cbSize = this.sizeof; - DWORD dwMask; - WORD wNumbering; - WORD wReserved; - LONG dxStartIndent; - LONG dxRightIndent; - LONG dxOffset; - WORD wAlignment; - SHORT cTabCount; - LONG[MAX_TAB_STOPS] rgxTabs; + UINT cbSize = this.sizeof; + DWORD dwMask; + WORD wNumbering; + WORD wReserved; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG[MAX_TAB_STOPS] rgxTabs; } struct PARAFORMAT2 { - UINT cbSize = this.sizeof; - DWORD dwMask; - WORD wNumbering; - WORD wEffects; - LONG dxStartIndent; - LONG dxRightIndent; - LONG dxOffset; - WORD wAlignment; - SHORT cTabCount; - LONG[MAX_TAB_STOPS] rgxTabs; - LONG dySpaceBefore; - LONG dySpaceAfter; - LONG dyLineSpacing; - SHORT sStype; - BYTE bLineSpacingRule; - BYTE bOutlineLevel; - WORD wShadingWeight; - WORD wShadingStyle; - WORD wNumberingStart; - WORD wNumberingStyle; - WORD wNumberingTab; - WORD wBorderSpace; - WORD wBorderWidth; - WORD wBorders; + UINT cbSize = this.sizeof; + DWORD dwMask; + WORD wNumbering; + WORD wEffects; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG[MAX_TAB_STOPS] rgxTabs; + LONG dySpaceBefore; + LONG dySpaceAfter; + LONG dyLineSpacing; + SHORT sStype; + BYTE bLineSpacingRule; + BYTE bOutlineLevel; + WORD wShadingWeight; + WORD wShadingStyle; + WORD wNumberingStart; + WORD wNumberingStyle; + WORD wNumberingTab; + WORD wBorderSpace; + WORD wBorderWidth; + WORD wBorders; } struct SELCHANGE { - NMHDR nmhdr; - CHARRANGE chrg; - WORD seltyp; + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; } struct TEXTRANGEA { - CHARRANGE chrg; - LPSTR lpstrText; + CHARRANGE chrg; + LPSTR lpstrText; } struct TEXTRANGEW { - CHARRANGE chrg; - LPWSTR lpstrText; + CHARRANGE chrg; + LPWSTR lpstrText; } struct REQRESIZE { - NMHDR nmhdr; - RECT rc; + NMHDR nmhdr; + RECT rc; } struct REPASTESPECIAL { - DWORD dwAspect; - DWORD dwParam; + DWORD dwAspect; + DWORD dwParam; } struct PUNCTUATION { - UINT iSize; - LPSTR szPunctuation; + UINT iSize; + LPSTR szPunctuation; } struct GETTEXTEX { - DWORD cb; - DWORD flags; - UINT codepage; - LPCSTR lpDefaultChar; - LPBOOL lpUsedDefChar; + DWORD cb; + DWORD flags; + UINT codepage; + LPCSTR lpDefaultChar; + LPBOOL lpUsedDefChar; } extern (Windows) { @@ -570,20 +570,20 @@ const GTL_NUMCHARS = 8; const GTL_NUMBYTES = 16; struct GETTEXTLENGTHEX { - DWORD flags; - UINT codepage; + DWORD flags; + UINT codepage; } version(Unicode) { - alias CHARFORMATW CHARFORMAT; - alias CHARFORMAT2W CHARFORMAT2; - alias FINDTEXTW FINDTEXT; - alias FINDTEXTEXW FINDTEXTEX; - alias TEXTRANGEW TEXTRANGE; + alias CHARFORMATW CHARFORMAT; + alias CHARFORMAT2W CHARFORMAT2; + alias FINDTEXTW FINDTEXT; + alias FINDTEXTEXW FINDTEXTEX; + alias TEXTRANGEW TEXTRANGE; } else { - alias CHARFORMATA CHARFORMAT; - alias CHARFORMAT2A CHARFORMAT2; - alias FINDTEXTA FINDTEXT; - alias FINDTEXTEXA FINDTEXTEX; - alias TEXTRANGEA TEXTRANGE; + alias CHARFORMATA CHARFORMAT; + alias CHARFORMAT2A CHARFORMAT2; + alias FINDTEXTA FINDTEXT; + alias FINDTEXTEXA FINDTEXTEX; + alias TEXTRANGEA TEXTRANGE; } diff --git a/src/core/sys/windows/richole.d b/src/core/sys/windows/richole.d index 12f4bd7c5a..ec4287f34f 100644 --- a/src/core/sys/windows/richole.d +++ b/src/core/sys/windows/richole.d @@ -15,86 +15,86 @@ private import core.sys.windows.richedit; // for CHARRANGE align(4): const ULONG - REO_GETOBJ_NO_INTERFACES = 0, - REO_GETOBJ_POLEOBJ = 1, - REO_GETOBJ_PSTG = 2, - REO_GETOBJ_POLESITE = 4, - REO_GETOBJ_ALL_INTERFACES = 7, - REO_CP_SELECTION = -1, - REO_IOB_SELECTION = -1, - REO_IOB_USE_CP = -2, - REO_NULL = 0, - REO_READWRITEMASK = 0x3F, - REO_DONTNEEDPALETTE = 32, - REO_BLANK = 16, - REO_DYNAMICSIZE = 8, - REO_INVERTEDSELECT = 4, - REO_BELOWBASELINE = 2, - REO_RESIZABLE = 1, - REO_LINK = 0x80000000, - REO_STATIC = 0x40000000, - REO_SELECTED = 0x08000000, - REO_OPEN = 0x4000000, - REO_INPLACEACTIVE = 0x2000000, - REO_HILITED = 0x1000000, - REO_LINKAVAILABLE = 0x800000, - REO_GETMETAFILE = 0x400000; + REO_GETOBJ_NO_INTERFACES = 0, + REO_GETOBJ_POLEOBJ = 1, + REO_GETOBJ_PSTG = 2, + REO_GETOBJ_POLESITE = 4, + REO_GETOBJ_ALL_INTERFACES = 7, + REO_CP_SELECTION = -1, + REO_IOB_SELECTION = -1, + REO_IOB_USE_CP = -2, + REO_NULL = 0, + REO_READWRITEMASK = 0x3F, + REO_DONTNEEDPALETTE = 32, + REO_BLANK = 16, + REO_DYNAMICSIZE = 8, + REO_INVERTEDSELECT = 4, + REO_BELOWBASELINE = 2, + REO_RESIZABLE = 1, + REO_LINK = 0x80000000, + REO_STATIC = 0x40000000, + REO_SELECTED = 0x08000000, + REO_OPEN = 0x4000000, + REO_INPLACEACTIVE = 0x2000000, + REO_HILITED = 0x1000000, + REO_LINKAVAILABLE = 0x800000, + REO_GETMETAFILE = 0x400000; enum { - RECO_PASTE = 0, - RECO_DROP, - RECO_COPY, - RECO_CUT, - RECO_DRAG // = 4 + RECO_PASTE = 0, + RECO_DROP, + RECO_COPY, + RECO_CUT, + RECO_DRAG // = 4 } extern (C) extern const GUID - IID_IRichEditOle, - IID_IRichEditOleCallback; + IID_IRichEditOle, + IID_IRichEditOleCallback; struct REOBJECT { - DWORD cbStruct = REOBJECT.sizeof; - LONG cp; - CLSID clsid; - LPOLEOBJECT poleobj; - LPSTORAGE pstg; - LPOLECLIENTSITE polesite; - SIZEL sizel; - DWORD dvaspect; - DWORD dwFlags; - DWORD dwUser; + DWORD cbStruct = REOBJECT.sizeof; + LONG cp; + CLSID clsid; + LPOLEOBJECT poleobj; + LPSTORAGE pstg; + LPOLECLIENTSITE polesite; + SIZEL sizel; + DWORD dvaspect; + DWORD dwFlags; + DWORD dwUser; } interface IRichEditOle : IUnknown { - HRESULT GetClientSite(LPOLECLIENTSITE*); - LONG GetObjectCount(); - LONG GetLinkCount(); - HRESULT GetObject(LONG, REOBJECT*, DWORD); - HRESULT InsertObject(REOBJECT*); - HRESULT ConvertObject(LONG, REFCLSID, LPCSTR); - HRESULT ActivateAs(REFCLSID, REFCLSID); - HRESULT SetHostNames(LPCSTR, LPCSTR); - HRESULT SetLinkAvailable(LONG, BOOL); - HRESULT SetDvaspect(LONG, DWORD); - HRESULT HandsOffStorage(LONG); - HRESULT SaveCompleted(LONG, LPSTORAGE); - HRESULT InPlaceDeactivate(); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); - HRESULT ImportDataObject(LPDATAOBJECT, CLIPFORMAT, HGLOBAL); + HRESULT GetClientSite(LPOLECLIENTSITE*); + LONG GetObjectCount(); + LONG GetLinkCount(); + HRESULT GetObject(LONG, REOBJECT*, DWORD); + HRESULT InsertObject(REOBJECT*); + HRESULT ConvertObject(LONG, REFCLSID, LPCSTR); + HRESULT ActivateAs(REFCLSID, REFCLSID); + HRESULT SetHostNames(LPCSTR, LPCSTR); + HRESULT SetLinkAvailable(LONG, BOOL); + HRESULT SetDvaspect(LONG, DWORD); + HRESULT HandsOffStorage(LONG); + HRESULT SaveCompleted(LONG, LPSTORAGE); + HRESULT InPlaceDeactivate(); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); + HRESULT ImportDataObject(LPDATAOBJECT, CLIPFORMAT, HGLOBAL); }; alias IRichEditOle LPRICHEDITOLE; interface IRichEditOleCallback : IUnknown { - HRESULT GetNewStorage(LPSTORAGE*); - HRESULT GetInPlaceContext(LPOLEINPLACEFRAME*, LPOLEINPLACEUIWINDOW*, LPOLEINPLACEFRAMEINFO); - HRESULT ShowContainerUI(BOOL); - HRESULT QueryInsertObject(LPCLSID, LPSTORAGE, LONG); - HRESULT DeleteObject(LPOLEOBJECT); - HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD, BOOL, HGLOBAL); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); - HRESULT GetDragDropEffect(BOOL, DWORD, PDWORD); - HRESULT GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE*, HMENU*); + HRESULT GetNewStorage(LPSTORAGE*); + HRESULT GetInPlaceContext(LPOLEINPLACEFRAME*, LPOLEINPLACEUIWINDOW*, LPOLEINPLACEFRAMEINFO); + HRESULT ShowContainerUI(BOOL); + HRESULT QueryInsertObject(LPCLSID, LPSTORAGE, LONG); + HRESULT DeleteObject(LPOLEOBJECT); + HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD, BOOL, HGLOBAL); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); + HRESULT GetDragDropEffect(BOOL, DWORD, PDWORD); + HRESULT GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE*, HMENU*); }; alias IRichEditOleCallback LPRICHEDITOLECALLBACK; diff --git a/src/core/sys/windows/rpc.d b/src/core/sys/windows/rpc.d index c133a133cf..0ed1e1476a 100644 --- a/src/core/sys/windows/rpc.d +++ b/src/core/sys/windows/rpc.d @@ -9,11 +9,11 @@ module core.sys.windows.rpc; /* Moved to rpcdecp (duplicate definition). - typedef void *I_RPC_HANDLE; - alias long RPC_STATUS; - // Moved to rpcdce: - RpcImpersonateClient - RpcRevertToSelf + typedef void *I_RPC_HANDLE; + alias long RPC_STATUS; + // Moved to rpcdce: + RpcImpersonateClient + RpcRevertToSelf */ public import core.sys.windows.unknwn; @@ -26,5 +26,5 @@ alias MIDL_user_allocate midl_user_allocate; alias MIDL_user_free midl_user_free; extern (Windows) { - int I_RpcMapWin32Status(RPC_STATUS); + int I_RpcMapWin32Status(RPC_STATUS); } diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d index ad55df306b..42c42fa9ec 100644 --- a/src/core/sys/windows/rpcdce.d +++ b/src/core/sys/windows/rpcdce.d @@ -23,10 +23,10 @@ alias void RPC_MGR_EPV; // for RpcMgmtSetComTimeout() enum : uint { - RPC_C_BINDING_MIN_TIMEOUT = 0, - RPC_C_BINDING_DEFAULT_TIMEOUT = 5, - RPC_C_BINDING_MAX_TIMEOUT = 9, - RPC_C_BINDING_INFINITE_TIMEOUT = 10 + RPC_C_BINDING_MIN_TIMEOUT = 0, + RPC_C_BINDING_DEFAULT_TIMEOUT = 5, + RPC_C_BINDING_MAX_TIMEOUT = 9, + RPC_C_BINDING_INFINITE_TIMEOUT = 10 } const RPC_C_CANCEL_INFINITE_TIMEOUT= -1; @@ -38,10 +38,10 @@ const RPC_C_USE_INTRANET_PORT=2; // for RPC_STATS_VECTOR, used by RpcMgmyInqStats enum : uint { - RPC_C_STATS_CALLS_IN = 0, - RPC_C_STATS_CALLS_OUT, - RPC_C_STATS_PKTS_IN, - RPC_C_STATS_PKTS_OUT + RPC_C_STATS_CALLS_IN = 0, + RPC_C_STATS_CALLS_OUT, + RPC_C_STATS_PKTS_IN, + RPC_C_STATS_PKTS_OUT } const RPC_IF_AUTOLISTEN=0x0001; @@ -54,19 +54,19 @@ const RPC_C_MGMT_STOP_SERVER_LISTEN=4; // Inquiry Type for RpcMgmtEpEltInqBegin() enum : uint { - RPC_C_EP_ALL_ELTS = 0, - RPC_C_EP_MATCH_BY_IF, - RPC_C_EP_MATCH_BY_OBJ, - RPC_C_EP_MATCH_BY_BOTH + RPC_C_EP_ALL_ELTS = 0, + RPC_C_EP_MATCH_BY_IF, + RPC_C_EP_MATCH_BY_OBJ, + RPC_C_EP_MATCH_BY_BOTH } // for RpcMgmtEpEltInqNext() enum : uint { - RPC_C_VERS_ALL = 1, - RPC_C_VERS_COMPATIBLE, - RPC_C_VERS_EXACT, - RPC_C_VERS_MAJOR_ONLY, - RPC_C_VERS_UPTO + RPC_C_VERS_ALL = 1, + RPC_C_VERS_COMPATIBLE, + RPC_C_VERS_EXACT, + RPC_C_VERS_MAJOR_ONLY, + RPC_C_VERS_UPTO } const DCE_C_ERROR_STRING_LEN=256; @@ -115,8 +115,8 @@ alias I_RPC_HANDLE RPC_BINDING_HANDLE; alias RPC_BINDING_HANDLE handle_t; struct RPC_BINDING_VECTOR { - uint Count; - RPC_BINDING_HANDLE[1] BindingH; + uint Count; + RPC_BINDING_HANDLE[1] BindingH; } alias RPC_BINDING_HANDLE rpc_binding_handle_t; @@ -124,226 +124,226 @@ alias RPC_BINDING_VECTOR rpc_binding_vector_t; struct UUID_VECTOR { - uint Count; - UUID*[1] Uuid; + uint Count; + UUID*[1] Uuid; } alias void* RPC_IF_HANDLE; struct RPC_IF_ID { - UUID Uuid; - ushort VersMajor; - ushort VersMinor; + UUID Uuid; + ushort VersMajor; + ushort VersMinor; } struct RPC_POLICY { - uint Length; - uint EndpointFlags; - uint NICFlags; + uint Length; + uint EndpointFlags; + uint NICFlags; } alias RPC_POLICY* PRPC_POLICY; extern (Windows) { - alias void function(UUID*, UUID*, RPC_STATUS*) RPC_OBJECT_INQ_FN; - alias RPC_STATUS function(RPC_IF_HANDLE, void*) RPC_IF_CALLBACK_FN; + alias void function(UUID*, UUID*, RPC_STATUS*) RPC_OBJECT_INQ_FN; + alias RPC_STATUS function(RPC_IF_HANDLE, void*) RPC_IF_CALLBACK_FN; } struct RPC_STATS_VECTOR { - uint Count; - uint[1] Stats; + uint Count; + uint[1] Stats; } struct RPC_IF_ID_VECTOR { - uint Count; - RPC_IF_ID*[1] IfId; + uint Count; + RPC_IF_ID*[1] IfId; } mixin DECLARE_HANDLE!("RPC_AUTH_IDENTITY_HANDLE"); mixin DECLARE_HANDLE!("RPC_AUTHZ_HANDLE"); struct RPC_SECURITY_QOS { - uint Version; - uint Capabilities; - uint IdentityTracking; - uint ImpersonationType; + uint Version; + uint Capabilities; + uint IdentityTracking; + uint ImpersonationType; } alias RPC_SECURITY_QOS* PRPC_SECURITY_QOS; struct SEC_WINNT_AUTH_IDENTITY_W { - ushort* User; - uint UserLength; - ushort* Domain; - uint DomainLength; - ushort* Password; - uint PasswordLength; - uint Flags; + ushort* User; + uint UserLength; + ushort* Domain; + uint DomainLength; + ushort* Password; + uint PasswordLength; + uint Flags; } alias SEC_WINNT_AUTH_IDENTITY_W* PSEC_WINNT_AUTH_IDENTITY_W; struct SEC_WINNT_AUTH_IDENTITY_A { - ubyte* User; - uint UserLength; - ubyte* Domain; - uint DomainLength; - ubyte* Password; - uint PasswordLength; - uint Flags; + ubyte* User; + uint UserLength; + ubyte* Domain; + uint DomainLength; + ubyte* Password; + uint PasswordLength; + uint Flags; } alias SEC_WINNT_AUTH_IDENTITY_A* PSEC_WINNT_AUTH_IDENTITY_A; struct RPC_CLIENT_INFORMATION1 { - ubyte* UserName; - ubyte* ComputerName; - ushort Privilege; - uint AuthFlags; + ubyte* UserName; + ubyte* ComputerName; + ushort Privilege; + uint AuthFlags; } alias RPC_CLIENT_INFORMATION1* PRPC_CLIENT_INFORMATION1; alias I_RPC_HANDLE* RPC_EP_INQ_HANDLE; extern (Windows) { - alias int function(RPC_BINDING_HANDLE, uint, RPC_STATUS*) RPC_MGMT_AUTHORIZATION_FN; + alias int function(RPC_BINDING_HANDLE, uint, RPC_STATUS*) RPC_MGMT_AUTHORIZATION_FN; } struct RPC_PROTSEQ_VECTORA { - uint Count; - ubyte*[1] Protseq; + uint Count; + ubyte*[1] Protseq; } struct RPC_PROTSEQ_VECTORW { - uint Count; - ushort*[1] Protseq; + uint Count; + ushort*[1] Protseq; } extern (Windows) { - RPC_STATUS RpcBindingFromStringBindingA(char*, RPC_BINDING_HANDLE*); - RPC_STATUS RpcBindingFromStringBindingW(wchar*, RPC_BINDING_HANDLE*); - RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE, char**); - RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE, wchar**); - RPC_STATUS RpcStringBindingComposeA(char*, char*, char*, char*, char*, char**); - RPC_STATUS RpcStringBindingComposeW(wchar*, wchar*, wchar*, wchar*, wchar*, wchar**); - RPC_STATUS RpcStringBindingParseA(char*, char**, char**, char**, char**, char**); - RPC_STATUS RpcStringBindingParseW(wchar*, wchar**, wchar**, wchar**, wchar**, wchar**); - RPC_STATUS RpcStringFreeA(char**); - RPC_STATUS RpcStringFreeW(wchar**); - RPC_STATUS RpcNetworkIsProtseqValidA(char*); - RPC_STATUS RpcNetworkIsProtseqValidW(wchar*); - RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**); - RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**); - RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**); - RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**); - RPC_STATUS RpcServerUseProtseqA(char*, uint, void*); - RPC_STATUS RpcServerUseProtseqW(wchar*, uint, void*); - RPC_STATUS RpcServerUseProtseqExA(char*, uint MaxCalls, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqExW(wchar*, uint, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqEpA(char*, uint, char*, void*); - RPC_STATUS RpcServerUseProtseqEpExA(char*, uint, char*, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqEpW(wchar*, uint, wchar*, void*); - RPC_STATUS RpcServerUseProtseqEpExW(wchar*, uint, wchar*, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqIfA(char*, uint, RPC_IF_HANDLE, void*); - RPC_STATUS RpcServerUseProtseqIfExA(char*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqIfW(wchar*, uint, RPC_IF_HANDLE, void*); - RPC_STATUS RpcServerUseProtseqIfExW(wchar*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); - RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE, uint, char**); - RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE, uint, wchar**); - RPC_STATUS RpcServerInqDefaultPrincNameA(uint, char**); - RPC_STATUS RpcServerInqDefaultPrincNameW(uint, wchar**); - RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE, uint, char**); - RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE, uint, wchar**); - RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, char**, uint*, uint*, uint*); - RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, wchar**, uint*, uint*, uint*); - RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); - RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); - RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); - RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); - RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); - RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); - RPC_STATUS RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); - RPC_STATUS RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); - alias void function(void*, wchar*, uint, void**, RPC_STATUS*) RPC_AUTH_KEY_RETRIEVAL_FN; - RPC_STATUS RpcServerRegisterAuthInfoA(char*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); - RPC_STATUS RpcServerRegisterAuthInfoW(wchar*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); - RPC_STATUS UuidToStringA(UUID*, char**); - RPC_STATUS UuidFromStringA(char*, UUID*); - RPC_STATUS UuidToStringW(UUID*, wchar**); - RPC_STATUS UuidFromStringW(wchar*, UUID*); - RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); - RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); - RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); - RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); - RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); - RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); - RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, char**); - RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, wchar**); - - // MinGW erroneously had these in rpc.h - RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE); - RPC_STATUS RpcRevertToSelf(); + RPC_STATUS RpcBindingFromStringBindingA(char*, RPC_BINDING_HANDLE*); + RPC_STATUS RpcBindingFromStringBindingW(wchar*, RPC_BINDING_HANDLE*); + RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE, char**); + RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE, wchar**); + RPC_STATUS RpcStringBindingComposeA(char*, char*, char*, char*, char*, char**); + RPC_STATUS RpcStringBindingComposeW(wchar*, wchar*, wchar*, wchar*, wchar*, wchar**); + RPC_STATUS RpcStringBindingParseA(char*, char**, char**, char**, char**, char**); + RPC_STATUS RpcStringBindingParseW(wchar*, wchar**, wchar**, wchar**, wchar**, wchar**); + RPC_STATUS RpcStringFreeA(char**); + RPC_STATUS RpcStringFreeW(wchar**); + RPC_STATUS RpcNetworkIsProtseqValidA(char*); + RPC_STATUS RpcNetworkIsProtseqValidW(wchar*); + RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**); + RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**); + RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**); + RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**); + RPC_STATUS RpcServerUseProtseqA(char*, uint, void*); + RPC_STATUS RpcServerUseProtseqW(wchar*, uint, void*); + RPC_STATUS RpcServerUseProtseqExA(char*, uint MaxCalls, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqExW(wchar*, uint, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqEpA(char*, uint, char*, void*); + RPC_STATUS RpcServerUseProtseqEpExA(char*, uint, char*, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqEpW(wchar*, uint, wchar*, void*); + RPC_STATUS RpcServerUseProtseqEpExW(wchar*, uint, wchar*, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqIfA(char*, uint, RPC_IF_HANDLE, void*); + RPC_STATUS RpcServerUseProtseqIfExA(char*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqIfW(wchar*, uint, RPC_IF_HANDLE, void*); + RPC_STATUS RpcServerUseProtseqIfExW(wchar*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); + RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE, uint, char**); + RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE, uint, wchar**); + RPC_STATUS RpcServerInqDefaultPrincNameA(uint, char**); + RPC_STATUS RpcServerInqDefaultPrincNameW(uint, wchar**); + RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE, uint, char**); + RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE, uint, wchar**); + RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, char**, uint*, uint*, uint*); + RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, wchar**, uint*, uint*, uint*); + RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); + RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); + RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); + RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); + RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); + alias void function(void*, wchar*, uint, void**, RPC_STATUS*) RPC_AUTH_KEY_RETRIEVAL_FN; + RPC_STATUS RpcServerRegisterAuthInfoA(char*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); + RPC_STATUS RpcServerRegisterAuthInfoW(wchar*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); + RPC_STATUS UuidToStringA(UUID*, char**); + RPC_STATUS UuidFromStringA(char*, UUID*); + RPC_STATUS UuidToStringW(UUID*, wchar**); + RPC_STATUS UuidFromStringW(wchar*, UUID*); + RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); + RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); + RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); + RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); + RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); + RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); + RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, char**); + RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, wchar**); + + // MinGW erroneously had these in rpc.h + RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE); + RPC_STATUS RpcRevertToSelf(); } version (Unicode) { - alias RPC_PROTSEQ_VECTORW RPC_PROTSEQ_VECTOR; - alias SEC_WINNT_AUTH_IDENTITY_W SEC_WINNT_AUTH_IDENTITY; - alias PSEC_WINNT_AUTH_IDENTITY_W PSEC_WINNT_AUTH_IDENTITY; - alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; - alias RpcBindingFromStringBindingW RpcBindingFromStringBinding; - alias RpcBindingToStringBindingW RpcBindingToStringBinding; - alias RpcStringBindingComposeW RpcStringBindingCompose; - alias RpcStringBindingParseW RpcStringBindingParse; - alias RpcStringFreeW RpcStringFree; - alias RpcNetworkIsProtseqValidW RpcNetworkIsProtseqValid; - alias RpcNetworkInqProtseqsW RpcNetworkInqProtseqs; - alias RpcProtseqVectorFreeW RpcProtseqVectorFree; - alias RpcServerUseProtseqW RpcServerUseProtseq; - alias RpcServerUseProtseqExW RpcServerUseProtseqEx; - alias RpcServerUseProtseqEpW RpcServerUseProtseqEp; - alias RpcServerUseProtseqEpExW RpcServerUseProtseqEpEx; - alias RpcServerUseProtseqIfW RpcServerUseProtseqIf; - alias RpcServerUseProtseqIfExW RpcServerUseProtseqIfEx; - alias RpcMgmtInqServerPrincNameW RpcMgmtInqServerPrincName; - alias RpcServerInqDefaultPrincNameW RpcServerInqDefaultPrincName; - alias RpcNsBindingInqEntryNameW RpcNsBindingInqEntryName; - alias RpcBindingInqAuthClientW RpcBindingInqAuthClient; - alias RpcBindingInqAuthInfoW RpcBindingInqAuthInfo; - alias RpcBindingSetAuthInfoW RpcBindingSetAuthInfo; - alias RpcServerRegisterAuthInfoW RpcServerRegisterAuthInfo; - alias RpcBindingInqAuthInfoExW RpcBindingInqAuthInfoEx; - alias RpcBindingSetAuthInfoExW RpcBindingSetAuthInfoEx; - alias UuidFromStringW UuidFromString; - alias UuidToStringW UuidToString; - alias RpcEpRegisterNoReplaceW RpcEpRegisterNoReplace; - alias RpcEpRegisterW RpcEpRegister; - alias DceErrorInqTextW DceErrorInqText; + alias RPC_PROTSEQ_VECTORW RPC_PROTSEQ_VECTOR; + alias SEC_WINNT_AUTH_IDENTITY_W SEC_WINNT_AUTH_IDENTITY; + alias PSEC_WINNT_AUTH_IDENTITY_W PSEC_WINNT_AUTH_IDENTITY; + alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; + alias RpcBindingFromStringBindingW RpcBindingFromStringBinding; + alias RpcBindingToStringBindingW RpcBindingToStringBinding; + alias RpcStringBindingComposeW RpcStringBindingCompose; + alias RpcStringBindingParseW RpcStringBindingParse; + alias RpcStringFreeW RpcStringFree; + alias RpcNetworkIsProtseqValidW RpcNetworkIsProtseqValid; + alias RpcNetworkInqProtseqsW RpcNetworkInqProtseqs; + alias RpcProtseqVectorFreeW RpcProtseqVectorFree; + alias RpcServerUseProtseqW RpcServerUseProtseq; + alias RpcServerUseProtseqExW RpcServerUseProtseqEx; + alias RpcServerUseProtseqEpW RpcServerUseProtseqEp; + alias RpcServerUseProtseqEpExW RpcServerUseProtseqEpEx; + alias RpcServerUseProtseqIfW RpcServerUseProtseqIf; + alias RpcServerUseProtseqIfExW RpcServerUseProtseqIfEx; + alias RpcMgmtInqServerPrincNameW RpcMgmtInqServerPrincName; + alias RpcServerInqDefaultPrincNameW RpcServerInqDefaultPrincName; + alias RpcNsBindingInqEntryNameW RpcNsBindingInqEntryName; + alias RpcBindingInqAuthClientW RpcBindingInqAuthClient; + alias RpcBindingInqAuthInfoW RpcBindingInqAuthInfo; + alias RpcBindingSetAuthInfoW RpcBindingSetAuthInfo; + alias RpcServerRegisterAuthInfoW RpcServerRegisterAuthInfo; + alias RpcBindingInqAuthInfoExW RpcBindingInqAuthInfoEx; + alias RpcBindingSetAuthInfoExW RpcBindingSetAuthInfoEx; + alias UuidFromStringW UuidFromString; + alias UuidToStringW UuidToString; + alias RpcEpRegisterNoReplaceW RpcEpRegisterNoReplace; + alias RpcEpRegisterW RpcEpRegister; + alias DceErrorInqTextW DceErrorInqText; } else { // Ansi - alias RPC_PROTSEQ_VECTORA RPC_PROTSEQ_VECTOR; - alias SEC_WINNT_AUTH_IDENTITY_A SEC_WINNT_AUTH_IDENTITY; - alias PSEC_WINNT_AUTH_IDENTITY_A PSEC_WINNT_AUTH_IDENTITY; - alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; - alias RpcBindingFromStringBindingA RpcBindingFromStringBinding; - alias RpcBindingToStringBindingA RpcBindingToStringBinding; - alias RpcStringBindingComposeA RpcStringBindingCompose; - alias RpcStringBindingParseA RpcStringBindingParse; - alias RpcStringFreeA RpcStringFree; - alias RpcNetworkIsProtseqValidA RpcNetworkIsProtseqValid; - alias RpcNetworkInqProtseqsA RpcNetworkInqProtseqs; - alias RpcProtseqVectorFreeA RpcProtseqVectorFree; - alias RpcServerUseProtseqA RpcServerUseProtseq; - alias RpcServerUseProtseqExA RpcServerUseProtseqEx; - alias RpcServerUseProtseqEpA RpcServerUseProtseqEp; - alias RpcServerUseProtseqEpExA RpcServerUseProtseqEpEx; - alias RpcServerUseProtseqIfA RpcServerUseProtseqIf; - alias RpcServerUseProtseqIfExA RpcServerUseProtseqIfEx; - alias RpcMgmtInqServerPrincNameA RpcMgmtInqServerPrincName; - alias RpcServerInqDefaultPrincNameA RpcServerInqDefaultPrincName; - alias RpcNsBindingInqEntryNameA RpcNsBindingInqEntryName; - alias RpcBindingInqAuthClientA RpcBindingInqAuthClient; - alias RpcBindingInqAuthInfoA RpcBindingInqAuthInfo; - alias RpcBindingSetAuthInfoA RpcBindingSetAuthInfo; - alias RpcServerRegisterAuthInfoA RpcServerRegisterAuthInfo; - alias RpcBindingInqAuthInfoExA RpcBindingInqAuthInfoEx; - alias RpcBindingSetAuthInfoExA RpcBindingSetAuthInfoEx; - alias UuidFromStringA UuidFromString; - alias UuidToStringA UuidToString; - alias RpcEpRegisterNoReplaceA RpcEpRegisterNoReplace; - alias RpcEpRegisterA RpcEpRegister; - alias DceErrorInqTextA DceErrorInqText; + alias RPC_PROTSEQ_VECTORA RPC_PROTSEQ_VECTOR; + alias SEC_WINNT_AUTH_IDENTITY_A SEC_WINNT_AUTH_IDENTITY; + alias PSEC_WINNT_AUTH_IDENTITY_A PSEC_WINNT_AUTH_IDENTITY; + alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; + alias RpcBindingFromStringBindingA RpcBindingFromStringBinding; + alias RpcBindingToStringBindingA RpcBindingToStringBinding; + alias RpcStringBindingComposeA RpcStringBindingCompose; + alias RpcStringBindingParseA RpcStringBindingParse; + alias RpcStringFreeA RpcStringFree; + alias RpcNetworkIsProtseqValidA RpcNetworkIsProtseqValid; + alias RpcNetworkInqProtseqsA RpcNetworkInqProtseqs; + alias RpcProtseqVectorFreeA RpcProtseqVectorFree; + alias RpcServerUseProtseqA RpcServerUseProtseq; + alias RpcServerUseProtseqExA RpcServerUseProtseqEx; + alias RpcServerUseProtseqEpA RpcServerUseProtseqEp; + alias RpcServerUseProtseqEpExA RpcServerUseProtseqEpEx; + alias RpcServerUseProtseqIfA RpcServerUseProtseqIf; + alias RpcServerUseProtseqIfExA RpcServerUseProtseqIfEx; + alias RpcMgmtInqServerPrincNameA RpcMgmtInqServerPrincName; + alias RpcServerInqDefaultPrincNameA RpcServerInqDefaultPrincName; + alias RpcNsBindingInqEntryNameA RpcNsBindingInqEntryName; + alias RpcBindingInqAuthClientA RpcBindingInqAuthClient; + alias RpcBindingInqAuthInfoA RpcBindingInqAuthInfo; + alias RpcBindingSetAuthInfoA RpcBindingSetAuthInfo; + alias RpcServerRegisterAuthInfoA RpcServerRegisterAuthInfo; + alias RpcBindingInqAuthInfoExA RpcBindingInqAuthInfoEx; + alias RpcBindingSetAuthInfoExA RpcBindingSetAuthInfoEx; + alias UuidFromStringA UuidFromString; + alias UuidToStringA UuidToString; + alias RpcEpRegisterNoReplaceA RpcEpRegisterNoReplace; + alias RpcEpRegisterA RpcEpRegister; + alias DceErrorInqTextA DceErrorInqText; } //#endif // UNICODE @@ -406,5 +406,5 @@ RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*); RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint); //static if (_WIN32_WINNT >= 0x500) { - RPC_STATUS UuidCreateSequential(UUID*); + RPC_STATUS UuidCreateSequential(UUID*); //} diff --git a/src/core/sys/windows/rpcdce2.d b/src/core/sys/windows/rpcdce2.d index ff9e8bf219..b168cd2666 100644 --- a/src/core/sys/windows/rpcdce2.d +++ b/src/core/sys/windows/rpcdce2.d @@ -15,43 +15,43 @@ private import core.sys.windows.basetyps; // FIXME: check types of constants enum { - RPC_C_EP_ALL_ELTS, - RPC_C_EP_MATCH_BY_IF, - RPC_C_EP_MATCH_BY_OBJ, - RPC_C_EP_MATCH_BY_BOTH + RPC_C_EP_ALL_ELTS, + RPC_C_EP_MATCH_BY_IF, + RPC_C_EP_MATCH_BY_OBJ, + RPC_C_EP_MATCH_BY_BOTH } enum { - RPC_C_VERS_ALL = 1, - RPC_C_VERS_COMPATIBLE, - RPC_C_VERS_EXACT, - RPC_C_VERS_MAJOR_ONLY, - RPC_C_VERS_UPTO + RPC_C_VERS_ALL = 1, + RPC_C_VERS_COMPATIBLE, + RPC_C_VERS_EXACT, + RPC_C_VERS_MAJOR_ONLY, + RPC_C_VERS_UPTO } const size_t DCE_C_ERROR_STRING_LEN = 256; enum { - RPC_C_MGMT_INQ_IF_IDS, - RPC_C_MGMT_INQ_PRINC_NAME, - RPC_C_MGMT_INQ_STATS, - RPC_C_MGMT_IS_SERVER_LISTEN, - RPC_C_MGMT_STOP_SERVER_LISTEN + RPC_C_MGMT_INQ_IF_IDS, + RPC_C_MGMT_INQ_PRINC_NAME, + RPC_C_MGMT_INQ_STATS, + RPC_C_MGMT_IS_SERVER_LISTEN, + RPC_C_MGMT_STOP_SERVER_LISTEN } extern (Windows) { - int UuidCompare(UUID*, UUID*, RPC_STATUS*); - RPC_STATUS UuidCreateNil(UUID*); - int UuidEqual(UUID*, UUID*, RPC_STATUS*); - ushort UuidHash(UUID*, RPC_STATUS*); - int UuidIsNil(UUID*, RPC_STATUS*); + int UuidCompare(UUID*, UUID*, RPC_STATUS*); + RPC_STATUS UuidCreateNil(UUID*); + int UuidEqual(UUID*, UUID*, RPC_STATUS*); + ushort UuidHash(UUID*, RPC_STATUS*); + int UuidIsNil(UUID*, RPC_STATUS*); - RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, - uint, UUID*, RPC_EP_INQ_HANDLE*); - RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); - RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, - RPC_BINDING_HANDLE, UUID*); - RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); + RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, + uint, UUID*, RPC_EP_INQ_HANDLE*); + RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); + RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE, UUID*); + RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); } @@ -63,15 +63,15 @@ RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, wchar**); version (Unicode) { - alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; - alias DceErrorInqTextW DceErrorInqText; + alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; + alias DceErrorInqTextW DceErrorInqText; } else { - alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; - alias DceErrorInqTextA DceErrorInqText; + alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; + alias DceErrorInqTextA DceErrorInqText; } /+ #else /* RPC_UNICODE_SUPPORTED */ - RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*); - RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**); + RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*); + RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**); #endif +/ diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d index cc7b0f534b..124402c19c 100644 --- a/src/core/sys/windows/rpcdcep.d +++ b/src/core/sys/windows/rpcdcep.d @@ -29,27 +29,27 @@ const TRANSPORT_TYPE_LPC=4; const TRANSPORT_TYPE_WMSG=8; struct RPC_VERSION { - ushort MajorVersion; - ushort MinorVersion; + ushort MajorVersion; + ushort MinorVersion; } struct RPC_SYNTAX_IDENTIFIER { - GUID SyntaxGUID; - RPC_VERSION SyntaxVersion; + GUID SyntaxGUID; + RPC_VERSION SyntaxVersion; } alias RPC_SYNTAX_IDENTIFIER* PRPC_SYNTAX_IDENTIFIER; struct RPC_MESSAGE { - HANDLE Handle; - uint DataRepresentation; - void* Buffer; - uint BufferLength; - uint ProcNum; - PRPC_SYNTAX_IDENTIFIER TransferSyntax; - void* RpcInterfaceInformation; - void* ReservedForRuntime; - void* ManagerEpv; - void* ImportContext; - uint RpcFlags; + HANDLE Handle; + uint DataRepresentation; + void* Buffer; + uint BufferLength; + uint ProcNum; + PRPC_SYNTAX_IDENTIFIER TransferSyntax; + void* RpcInterfaceInformation; + void* ReservedForRuntime; + void* ManagerEpv; + void* ImportContext; + uint RpcFlags; } alias RPC_MESSAGE* PRPC_MESSAGE; @@ -58,93 +58,93 @@ alias void function (PRPC_MESSAGE Message) RPC_DISPATCH_FUNCTION; } struct RPC_DISPATCH_TABLE { - uint DispatchTableCount; - RPC_DISPATCH_FUNCTION* DispatchTable; - int Reserved; + uint DispatchTableCount; + RPC_DISPATCH_FUNCTION* DispatchTable; + int Reserved; } alias RPC_DISPATCH_TABLE* PRPC_DISPATCH_TABLE; struct RPC_PROTSEQ_ENDPOINT { - ubyte* RpcProtocolSequence; - ubyte* Endpoint; + ubyte* RpcProtocolSequence; + ubyte* Endpoint; } alias RPC_PROTSEQ_ENDPOINT* PRPC_PROTSEQ_ENDPOINT; struct RPC_SERVER_INTERFACE { - uint Length; - RPC_SYNTAX_IDENTIFIER InterfaceId; - RPC_SYNTAX_IDENTIFIER TransferSyntax; - PRPC_DISPATCH_TABLE DispatchTable; - uint RpcProtseqEndpointCount; - PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; - void* DefaultManagerEpv; - const(void)* InterpreterInfo; + uint Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + uint RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + void* DefaultManagerEpv; + const(void)* InterpreterInfo; } alias RPC_SERVER_INTERFACE* PRPC_SERVER_INTERFACE; struct RPC_CLIENT_INTERFACE { - uint Length; - RPC_SYNTAX_IDENTIFIER InterfaceId; - RPC_SYNTAX_IDENTIFIER TransferSyntax; - PRPC_DISPATCH_TABLE DispatchTable; - uint RpcProtseqEndpointCount; - PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; - uint Reserved; - const(void)* InterpreterInfo; + uint Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + uint RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + uint Reserved; + const(void)* InterpreterInfo; } alias RPC_CLIENT_INTERFACE* PRPC_CLIENT_INTERFACE; alias TypeDef!(void*) I_RPC_MUTEX; struct RPC_TRANSFER_SYNTAX { - GUID Uuid; - ushort VersMajor; - ushort VersMinor; + GUID Uuid; + ushort VersMajor; + ushort VersMinor; } alias RPC_STATUS function(void*, void*, void*) RPC_BLOCKING_FN; extern (Windows) { - alias void function(void*) PRPC_RUNDOWN; - - int I_RpcGetBuffer(RPC_MESSAGE*); - int I_RpcSendReceive(RPC_MESSAGE*); - int I_RpcSend(RPC_MESSAGE*); - int I_RpcFreeBuffer(RPC_MESSAGE*); - void I_RpcRequestMutex(I_RPC_MUTEX*); - void I_RpcClearMutex(I_RPC_MUTEX); - void I_RpcDeleteMutex(I_RPC_MUTEX); - void* I_RpcAllocate(uint); - void I_RpcFree(void*); - void I_RpcPauseExecution(uint); - int I_RpcMonitorAssociation(HANDLE, PRPC_RUNDOWN, void*); - int I_RpcStopMonitorAssociation(HANDLE); - HANDLE I_RpcGetCurrentCallHandle(); - int I_RpcGetAssociationContext(void**); - int I_RpcSetAssociationContext(void*); - int I_RpcNsBindingSetEntryName(HANDLE, uint, wchar*); - int I_RpcBindingInqDynamicEndpoint(HANDLE, wchar**); - int I_RpcBindingInqTransportType(HANDLE, uint*); - int I_RpcIfInqTransferSyntaxes(HANDLE, RPC_TRANSFER_SYNTAX*, uint, - uint*); - int I_UuidCreate(GUID*); - int I_RpcBindingCopy(HANDLE, HANDLE*); - int I_RpcBindingIsClientLocal(HANDLE, uint*); - void I_RpcSsDontSerializeContext(); - int I_RpcServerRegisterForwardFunction(int function (GUID*, - RPC_VERSION*, GUID*, ubyte*, void**)); - int I_RpcConnectionInqSockBuffSize(uint*, uint*); - int I_RpcConnectionSetSockBuffSize(uint, uint); - int I_RpcBindingSetAsync(HANDLE, RPC_BLOCKING_FN); - int I_RpcAsyncSendReceive(RPC_MESSAGE*, void*); - int I_RpcGetThreadWindowHandle(void**); - int I_RpcServerThreadPauseListening(); - int I_RpcServerThreadContinueListening(); - int I_RpcServerUnregisterEndpointA(ubyte*, ubyte*); - int I_RpcServerUnregisterEndpointW(ushort*, ushort*); + alias void function(void*) PRPC_RUNDOWN; + + int I_RpcGetBuffer(RPC_MESSAGE*); + int I_RpcSendReceive(RPC_MESSAGE*); + int I_RpcSend(RPC_MESSAGE*); + int I_RpcFreeBuffer(RPC_MESSAGE*); + void I_RpcRequestMutex(I_RPC_MUTEX*); + void I_RpcClearMutex(I_RPC_MUTEX); + void I_RpcDeleteMutex(I_RPC_MUTEX); + void* I_RpcAllocate(uint); + void I_RpcFree(void*); + void I_RpcPauseExecution(uint); + int I_RpcMonitorAssociation(HANDLE, PRPC_RUNDOWN, void*); + int I_RpcStopMonitorAssociation(HANDLE); + HANDLE I_RpcGetCurrentCallHandle(); + int I_RpcGetAssociationContext(void**); + int I_RpcSetAssociationContext(void*); + int I_RpcNsBindingSetEntryName(HANDLE, uint, wchar*); + int I_RpcBindingInqDynamicEndpoint(HANDLE, wchar**); + int I_RpcBindingInqTransportType(HANDLE, uint*); + int I_RpcIfInqTransferSyntaxes(HANDLE, RPC_TRANSFER_SYNTAX*, uint, + uint*); + int I_UuidCreate(GUID*); + int I_RpcBindingCopy(HANDLE, HANDLE*); + int I_RpcBindingIsClientLocal(HANDLE, uint*); + void I_RpcSsDontSerializeContext(); + int I_RpcServerRegisterForwardFunction(int function (GUID*, + RPC_VERSION*, GUID*, ubyte*, void**)); + int I_RpcConnectionInqSockBuffSize(uint*, uint*); + int I_RpcConnectionSetSockBuffSize(uint, uint); + int I_RpcBindingSetAsync(HANDLE, RPC_BLOCKING_FN); + int I_RpcAsyncSendReceive(RPC_MESSAGE*, void*); + int I_RpcGetThreadWindowHandle(void**); + int I_RpcServerThreadPauseListening(); + int I_RpcServerThreadContinueListening(); + int I_RpcServerUnregisterEndpointA(ubyte*, ubyte*); + int I_RpcServerUnregisterEndpointW(ushort*, ushort*); } version(Unicode) { - alias I_RpcServerUnregisterEndpointW I_RpcServerUnregisterEndpoint; + alias I_RpcServerUnregisterEndpointW I_RpcServerUnregisterEndpoint; } else { - alias I_RpcServerUnregisterEndpointA I_RpcServerUnregisterEndpoint; + alias I_RpcServerUnregisterEndpointA I_RpcServerUnregisterEndpoint; } diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index 361f6c23f0..078d2e5070 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -25,16 +25,16 @@ private import core.sys.windows.basetyps; extern (Windows): const uint NDR_CHAR_REP_MASK = 0xF, - NDR_INT_REP_MASK = 0xF0, - NDR_FLOAT_REP_MASK = 0xFF00, - NDR_LITTLE_ENDIAN = 0x10, - NDR_BIG_ENDIAN = 0, - NDR_IEEE_FLOAT = 0, - NDR_VAX_FLOAT = 0x100, - NDR_ASCII_CHAR = 0, - NDR_EBCDIC_CHAR = 1, - NDR_LOCAL_DATA_REPRESENTATION = 0x10, - NDR_LOCAL_ENDIAN = NDR_LITTLE_ENDIAN; + NDR_INT_REP_MASK = 0xF0, + NDR_FLOAT_REP_MASK = 0xFF00, + NDR_LITTLE_ENDIAN = 0x10, + NDR_BIG_ENDIAN = 0, + NDR_IEEE_FLOAT = 0, + NDR_VAX_FLOAT = 0x100, + NDR_ASCII_CHAR = 0, + NDR_EBCDIC_CHAR = 1, + NDR_LOCAL_DATA_REPRESENTATION = 0x10, + NDR_LOCAL_ENDIAN = NDR_LITTLE_ENDIAN; alias MIDL_user_allocate midl_user_allocate; alias MIDL_user_free midl_user_free; @@ -98,14 +98,14 @@ const cbNDRContext=20; alias void * NDR_CCONTEXT; struct tagNDR_SCONTEXT { - void*[2] pad; - void *userContext; + void*[2] pad; + void *userContext; } alias tagNDR_SCONTEXT * NDR_SCONTEXT; struct SCONTEXT_QUEUE { - uint NumberOfObjects; - NDR_SCONTEXT *ArrayOfObjects; + uint NumberOfObjects; + NDR_SCONTEXT *ArrayOfObjects; } alias SCONTEXT_QUEUE * PSCONTEXT_QUEUE; @@ -119,12 +119,12 @@ alias uint RPC_LENGTH; alias const(char)* PFORMAT_STRING; struct ARRAY_INFO { - int Dimension; - uint *BufferConformanceMark; - uint *BufferVarianceMark; - uint *MaxCountArray; - uint *OffsetArray; - uint *ActualCountArray; + int Dimension; + uint *BufferConformanceMark; + uint *BufferVarianceMark; + uint *MaxCountArray; + uint *OffsetArray; + uint *ActualCountArray; } alias ARRAY_INFO * PARRAY_INFO; @@ -163,224 +163,224 @@ void * midl_allocate(int); align(4): struct MIDL_STUB_MESSAGE { - PRPC_MESSAGE RpcMsg; - ubyte *Buffer; - ubyte *BufferStart; - ubyte *BufferEnd; - ubyte *BufferMark; - uint BufferLength; - uint MemorySize; - ubyte *Memory; - int IsClient; - int ReuseBuffer; - ubyte *AllocAllNodesMemory; - ubyte *AllocAllNodesMemoryEnd; - int IgnoreEmbeddedPointers; - ubyte *PointerBufferMark; - ubyte fBufferValid; - ubyte Unused; - uint MaxCount; - uint Offset; - uint ActualCount; - void* function (uint) pfnAllocate; - void function (void*) pfnFree; - ubyte * StackTop; - ubyte * pPresentedType; - ubyte * pTransmitType; - handle_t SavedHandle; - const(_MIDL_STUB_DESC)* StubDesc; - _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; - uint FullPtrRefId; - int fCheckBounds; - // FIXME: - byte bit_fields_for_D; // FIXME: Bitfields + PRPC_MESSAGE RpcMsg; + ubyte *Buffer; + ubyte *BufferStart; + ubyte *BufferEnd; + ubyte *BufferMark; + uint BufferLength; + uint MemorySize; + ubyte *Memory; + int IsClient; + int ReuseBuffer; + ubyte *AllocAllNodesMemory; + ubyte *AllocAllNodesMemoryEnd; + int IgnoreEmbeddedPointers; + ubyte *PointerBufferMark; + ubyte fBufferValid; + ubyte Unused; + uint MaxCount; + uint Offset; + uint ActualCount; + void* function (uint) pfnAllocate; + void function (void*) pfnFree; + ubyte * StackTop; + ubyte * pPresentedType; + ubyte * pTransmitType; + handle_t SavedHandle; + const(_MIDL_STUB_DESC)* StubDesc; + _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; + uint FullPtrRefId; + int fCheckBounds; + // FIXME: + byte bit_fields_for_D; // FIXME: Bitfields // int fInDontFree :1; // int fDontCallFreeInst :1; // int fInOnlyParam :1; // int fHasReturn :1; - uint dwDestContext; - void* pvDestContext; - NDR_SCONTEXT * SavedContextHandles; - int ParamNumber; - IRpcChannelBuffer pRpcChannelBuffer; - PARRAY_INFO pArrayInfo; - uint * SizePtrCountArray; - uint * SizePtrOffsetArray; - uint * SizePtrLengthArray; - void* pArgQueue; - uint dwStubPhase; - uint[5] w2kReserved; + uint dwDestContext; + void* pvDestContext; + NDR_SCONTEXT * SavedContextHandles; + int ParamNumber; + IRpcChannelBuffer pRpcChannelBuffer; + PARRAY_INFO pArrayInfo; + uint * SizePtrCountArray; + uint * SizePtrOffsetArray; + uint * SizePtrLengthArray; + void* pArgQueue; + uint dwStubPhase; + uint[5] w2kReserved; } alias MIDL_STUB_MESSAGE * PMIDL_STUB_MESSAGE; extern (Windows) { - alias void* function (void*) GENERIC_BINDING_ROUTINE; - alias void function (void*,ubyte*) GENERIC_UNBIND_ROUTINE; - alias uint function (uint *,uint,void *) USER_MARSHAL_SIZING_ROUTINE; - alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_MARSHALLING_ROUTINE; - alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_UNMARSHALLING_ROUTINE; - alias void function (uint *,void *) USER_MARSHAL_FREEING_ROUTINE; - alias void function () NDR_NOTIFY_ROUTINE; + alias void* function (void*) GENERIC_BINDING_ROUTINE; + alias void function (void*,ubyte*) GENERIC_UNBIND_ROUTINE; + alias uint function (uint *,uint,void *) USER_MARSHAL_SIZING_ROUTINE; + alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_MARSHALLING_ROUTINE; + alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_UNMARSHALLING_ROUTINE; + alias void function (uint *,void *) USER_MARSHAL_FREEING_ROUTINE; + alias void function () NDR_NOTIFY_ROUTINE; } align: struct GENERIC_BINDING_ROUTINE_PAIR { - GENERIC_BINDING_ROUTINE pfnBind; - GENERIC_UNBIND_ROUTINE pfnUnbind; + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; } alias GENERIC_BINDING_ROUTINE_PAIR * PGENERIC_BINDING_ROUTINE_PAIR; struct GENERIC_BINDING_INFO { - void *pObj; - uint Size; - GENERIC_BINDING_ROUTINE pfnBind; - GENERIC_UNBIND_ROUTINE pfnUnbind; + void *pObj; + uint Size; + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; } alias GENERIC_BINDING_INFO * PGENERIC_BINDING_INFO; struct XMIT_ROUTINE_QUINTUPLE { - XMIT_HELPER_ROUTINE pfnTranslateToXmit; - XMIT_HELPER_ROUTINE pfnTranslateFromXmit; - XMIT_HELPER_ROUTINE pfnFreeXmit; - XMIT_HELPER_ROUTINE pfnFreeInst; + XMIT_HELPER_ROUTINE pfnTranslateToXmit; + XMIT_HELPER_ROUTINE pfnTranslateFromXmit; + XMIT_HELPER_ROUTINE pfnFreeXmit; + XMIT_HELPER_ROUTINE pfnFreeInst; } alias XMIT_ROUTINE_QUINTUPLE * PXMIT_ROUTINE_QUINTUPLE; struct MALLOC_FREE_STRUCT { - void* function (uint) pfnAllocate; - void function (void*) pfnFree; + void* function (uint) pfnAllocate; + void function (void*) pfnFree; } struct COMM_FAULT_OFFSETS { - short CommOffset; - short FaultOffset; + short CommOffset; + short FaultOffset; } struct USER_MARSHAL_ROUTINE_QUADRUPLE { - USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; - USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; - USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; - USER_MARSHAL_FREEING_ROUTINE pfnFree; + USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; + USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; + USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; + USER_MARSHAL_FREEING_ROUTINE pfnFree; } enum IDL_CS_CONVERT { - IDL_CS_NO_CONVERT, - IDL_CS_IN_PLACE_CONVERT, - IDL_CS_NEW_BUFFER_CONVERT + IDL_CS_NO_CONVERT, + IDL_CS_IN_PLACE_CONVERT, + IDL_CS_NEW_BUFFER_CONVERT } struct NDR_CS_SIZE_CONVERT_ROUTINES { - CS_TYPE_NET_SIZE_ROUTINE pfnNetSize; - CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs; - CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize; - CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs; + CS_TYPE_NET_SIZE_ROUTINE pfnNetSize; + CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs; + CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize; + CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs; } struct NDR_CS_ROUTINES { - NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines; - CS_TAG_GETTING_ROUTINE *pTagGettingRoutines; + NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines; + CS_TAG_GETTING_ROUTINE *pTagGettingRoutines; } struct MIDL_STUB_DESC { - void* RpcInterfaceInformation; - void* function(uint) pfnAllocate; - void function (void*) pfnFree; - union _IMPLICIT_HANDLE_INFO { - handle_t *pAutoHandle; - handle_t *pPrimitiveHandle; - PGENERIC_BINDING_INFO pGenericBindingInfo; - } - _IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO; - const(NDR_RUNDOWN)* apfnNdrRundownRoutines; - const(GENERIC_BINDING_ROUTINE_PAIR)* aGenericBindingRoutinePairs; - const(EXPR_EVAL)* apfnExprEval; - const(XMIT_ROUTINE_QUINTUPLE)* aXmitQuintuple; - const(char)* *pFormatTypes; - int fCheckBounds; - uint Version; - MALLOC_FREE_STRUCT *pMallocFreeStruct; - int MIDLVersion; - const(COMM_FAULT_OFFSETS)* CommFaultOffsets; - const(USER_MARSHAL_ROUTINE_QUADRUPLE)* aUserMarshalQuadruple; - const(NDR_NOTIFY_ROUTINE)* NotifyRoutineTable; - ULONG_PTR mFlags; - const(NDR_CS_ROUTINES)* CsRoutineTables; - void *Reserved4; - ULONG_PTR Reserved5; + void* RpcInterfaceInformation; + void* function(uint) pfnAllocate; + void function (void*) pfnFree; + union _IMPLICIT_HANDLE_INFO { + handle_t *pAutoHandle; + handle_t *pPrimitiveHandle; + PGENERIC_BINDING_INFO pGenericBindingInfo; + } + _IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO; + const(NDR_RUNDOWN)* apfnNdrRundownRoutines; + const(GENERIC_BINDING_ROUTINE_PAIR)* aGenericBindingRoutinePairs; + const(EXPR_EVAL)* apfnExprEval; + const(XMIT_ROUTINE_QUINTUPLE)* aXmitQuintuple; + const(char)* *pFormatTypes; + int fCheckBounds; + uint Version; + MALLOC_FREE_STRUCT *pMallocFreeStruct; + int MIDLVersion; + const(COMM_FAULT_OFFSETS)* CommFaultOffsets; + const(USER_MARSHAL_ROUTINE_QUADRUPLE)* aUserMarshalQuadruple; + const(NDR_NOTIFY_ROUTINE)* NotifyRoutineTable; + ULONG_PTR mFlags; + const(NDR_CS_ROUTINES)* CsRoutineTables; + void *Reserved4; + ULONG_PTR Reserved5; } alias const(MIDL_STUB_DESC)* PMIDL_STUB_DESC; alias void * PMIDL_XMIT_TYPE; struct MIDL_FORMAT_STRING { - short Pad; - ubyte[1] Format; + short Pad; + ubyte[1] Format; } struct MIDL_SERVER_INFO { - PMIDL_STUB_DESC pStubDesc; - const(SERVER_ROUTINE)* DispatchTable; - PFORMAT_STRING ProcString; - const(ushort)* FmtStringOffset; - const(STUB_THUNK)* ThunkTable; + PMIDL_STUB_DESC pStubDesc; + const(SERVER_ROUTINE)* DispatchTable; + PFORMAT_STRING ProcString; + const(ushort)* FmtStringOffset; + const(STUB_THUNK)* ThunkTable; } alias MIDL_SERVER_INFO * PMIDL_SERVER_INFO; struct MIDL_STUBLESS_PROXY_INFO { - PMIDL_STUB_DESC pStubDesc; - PFORMAT_STRING ProcFormatString; - const(ushort)* FormatStringOffset; + PMIDL_STUB_DESC pStubDesc; + PFORMAT_STRING ProcFormatString; + const(ushort)* FormatStringOffset; } alias MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO; union CLIENT_CALL_RETURN { - void *Pointer; - int Simple; + void *Pointer; + int Simple; } enum XLAT_SIDE { - XLAT_SERVER = 1, - XLAT_CLIENT + XLAT_SERVER = 1, + XLAT_CLIENT } struct FULL_PTR_TO_REFID_ELEMENT { - FULL_PTR_TO_REFID_ELEMENT * Next; - void* Pointer; - uint RefId; - ubyte State; + FULL_PTR_TO_REFID_ELEMENT * Next; + void* Pointer; + uint RefId; + ubyte State; } alias FULL_PTR_TO_REFID_ELEMENT * PFULL_PTR_TO_REFID_ELEMENT; struct FULL_PTR_XLAT_TABLES { - struct RefIdToPointer { - void **XlatTable; - ubyte *StateTable; - uint NumberOfEntries; - } - struct PointerToRefId { - PFULL_PTR_TO_REFID_ELEMENT *XlatTable; - uint NumberOfBuckets; - uint HashMask; - } - uint NextRefId; - XLAT_SIDE XlatSide; + struct RefIdToPointer { + void **XlatTable; + ubyte *StateTable; + uint NumberOfEntries; + } + struct PointerToRefId { + PFULL_PTR_TO_REFID_ELEMENT *XlatTable; + uint NumberOfBuckets; + uint HashMask; + } + uint NextRefId; + XLAT_SIDE XlatSide; } alias FULL_PTR_XLAT_TABLES * PFULL_PTR_XLAT_TABLES; enum STUB_PHASE { - STUB_UNMARSHAL, - STUB_CALL_SERVER, - STUB_MARSHAL, - STUB_CALL_SERVER_NO_HRESULT + STUB_UNMARSHAL, + STUB_CALL_SERVER, + STUB_MARSHAL, + STUB_CALL_SERVER_NO_HRESULT } enum PROXY_PHASE { - PROXY_CALCSIZE, - PROXY_GETBUFFER, - PROXY_MARSHAL, - PROXY_SENDRECEIVE, - PROXY_UNMARSHAL + PROXY_CALCSIZE, + PROXY_GETBUFFER, + PROXY_MARSHAL, + PROXY_SENDRECEIVE, + PROXY_UNMARSHAL } alias TypeDef!(void *) RPC_SS_THREAD_HANDLE; @@ -400,8 +400,8 @@ alias void function (RPC_BINDING_HANDLE,int,uint*,uint*,uint*,error_status_t*) C alias void* function(uint) PRPC_CLIENT_ALLOC; alias void function(void*) PRPC_CLIENT_FREE; - alias void function (PMIDL_STUB_MESSAGE) STUB_THUNK; - alias int function() SERVER_ROUTINE; + alias void function (PMIDL_STUB_MESSAGE) STUB_THUNK; + alias int function() SERVER_ROUTINE; } void NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d index c3837067d1..5cef4e5b12 100644 --- a/src/core/sys/windows/rpcnsi.d +++ b/src/core/sys/windows/rpcnsi.d @@ -27,51 +27,51 @@ const RPC_C_PROFILE_MATCH_BY_BOTH=4; const RPC_C_NS_DEFAULT_EXP_AGE=-1; extern (Windows) { - RPC_STATUS RpcNsBindingExportA(uint, ubyte*, RPC_IF_HANDLE, - RPC_BINDING_VECTOR*, UUID_VECTOR*); - RPC_STATUS RpcNsBindingUnexportA(uint, ubyte*, RPC_IF_HANDLE, - UUID_VECTOR*); - RPC_STATUS RpcNsBindingLookupBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, - uint, RPC_NS_HANDLE*); - RPC_STATUS RpcNsBindingLookupNext(RPC_NS_HANDLE, RPC_BINDING_VECTOR**); - RPC_STATUS RpcNsBindingLookupDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsGroupDeleteA(uint, ubyte*); - RPC_STATUS RpcNsGroupMbrAddA(uint, ubyte*, uint, ubyte*); - RPC_STATUS RpcNsGroupMbrRemoveA(uint, ubyte*, uint, ubyte*); - RPC_STATUS RpcNsGroupMbrInqBeginA(uint, ubyte*, uint, RPC_NS_HANDLE*); - RPC_STATUS RpcNsGroupMbrInqNextA(RPC_NS_HANDLE, ubyte**); - RPC_STATUS RpcNsGroupMbrInqDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsProfileDeleteA(uint, ubyte*); - RPC_STATUS RpcNsProfileEltAddA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*, - uint, ubyte*); - RPC_STATUS RpcNsProfileEltRemoveA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*); - RPC_STATUS RpcNsProfileEltInqBeginA(uint, ubyte*, uint, RPC_IF_ID*, uint, - uint, ubyte*, RPC_NS_HANDLE*); - RPC_STATUS RpcNsProfileEltInqNextA(RPC_NS_HANDLE, RPC_IF_ID*, ubyte**, - uint*, ubyte**); - RPC_STATUS RpcNsProfileEltInqDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsEntryObjectInqNext(in RPC_NS_HANDLE, out UUID*); - RPC_STATUS RpcNsEntryObjectInqDone(ref RPC_NS_HANDLE*); - RPC_STATUS RpcNsEntryExpandNameA(uint, ubyte*, ubyte**); - RPC_STATUS RpcNsMgmtBindingUnexportA(uint, ubyte*, RPC_IF_ID*, uint, - UUID_VECTOR*); - RPC_STATUS RpcNsMgmtEntryCreateA(uint, ubyte*); - RPC_STATUS RpcNsMgmtEntryDeleteA(uint, ubyte*); - RPC_STATUS RpcNsMgmtEntryInqIfIdsA(uint, ubyte*, RPC_IF_ID_VECTOR**); - RPC_STATUS RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE, uint); - RPC_STATUS RpcNsMgmtInqExpAge(uint*); - RPC_STATUS RpcNsMgmtSetExpAge(uint); - RPC_STATUS RpcNsBindingImportNext(RPC_NS_HANDLE, RPC_BINDING_HANDLE*); - RPC_STATUS RpcNsBindingImportDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsBindingSelect(RPC_BINDING_VECTOR*, RPC_BINDING_HANDLE*); + RPC_STATUS RpcNsBindingExportA(uint, ubyte*, RPC_IF_HANDLE, + RPC_BINDING_VECTOR*, UUID_VECTOR*); + RPC_STATUS RpcNsBindingUnexportA(uint, ubyte*, RPC_IF_HANDLE, + UUID_VECTOR*); + RPC_STATUS RpcNsBindingLookupBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, + uint, RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingLookupNext(RPC_NS_HANDLE, RPC_BINDING_VECTOR**); + RPC_STATUS RpcNsBindingLookupDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsGroupDeleteA(uint, ubyte*); + RPC_STATUS RpcNsGroupMbrAddA(uint, ubyte*, uint, ubyte*); + RPC_STATUS RpcNsGroupMbrRemoveA(uint, ubyte*, uint, ubyte*); + RPC_STATUS RpcNsGroupMbrInqBeginA(uint, ubyte*, uint, RPC_NS_HANDLE*); + RPC_STATUS RpcNsGroupMbrInqNextA(RPC_NS_HANDLE, ubyte**); + RPC_STATUS RpcNsGroupMbrInqDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsProfileDeleteA(uint, ubyte*); + RPC_STATUS RpcNsProfileEltAddA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*, + uint, ubyte*); + RPC_STATUS RpcNsProfileEltRemoveA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*); + RPC_STATUS RpcNsProfileEltInqBeginA(uint, ubyte*, uint, RPC_IF_ID*, uint, + uint, ubyte*, RPC_NS_HANDLE*); + RPC_STATUS RpcNsProfileEltInqNextA(RPC_NS_HANDLE, RPC_IF_ID*, ubyte**, + uint*, ubyte**); + RPC_STATUS RpcNsProfileEltInqDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryObjectInqNext(in RPC_NS_HANDLE, out UUID*); + RPC_STATUS RpcNsEntryObjectInqDone(ref RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryExpandNameA(uint, ubyte*, ubyte**); + RPC_STATUS RpcNsMgmtBindingUnexportA(uint, ubyte*, RPC_IF_ID*, uint, + UUID_VECTOR*); + RPC_STATUS RpcNsMgmtEntryCreateA(uint, ubyte*); + RPC_STATUS RpcNsMgmtEntryDeleteA(uint, ubyte*); + RPC_STATUS RpcNsMgmtEntryInqIfIdsA(uint, ubyte*, RPC_IF_ID_VECTOR**); + RPC_STATUS RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE, uint); + RPC_STATUS RpcNsMgmtInqExpAge(uint*); + RPC_STATUS RpcNsMgmtSetExpAge(uint); + RPC_STATUS RpcNsBindingImportNext(RPC_NS_HANDLE, RPC_BINDING_HANDLE*); + RPC_STATUS RpcNsBindingImportDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingSelect(RPC_BINDING_VECTOR*, RPC_BINDING_HANDLE*); } version (Unicode) { } else { - RPC_STATUS RpcNsEntryObjectInqBeginA(uint, ubyte*, RPC_NS_HANDLE*); - RPC_STATUS RpcNsBindingImportBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, - RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryObjectInqBeginA(uint, ubyte*, RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingImportBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, + RPC_NS_HANDLE*); } RPC_STATUS RpcNsBindingExportW(uint, ushort*, RPC_IF_HANDLE, @@ -105,45 +105,45 @@ RPC_STATUS RpcNsBindingImportBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, RPC_NS_HANDLE*); version (Unicode) { - alias RpcNsBindingLookupBeginW RpcNsBindingLookupBegin; - alias RpcNsBindingImportBeginW RpcNsBindingImportBegin; - alias RpcNsBindingExportW RpcNsBindingExport; - alias RpcNsBindingUnexportW RpcNsBindingUnexport; - alias RpcNsGroupDeleteW RpcNsGroupDelete; - alias RpcNsGroupMbrAddW RpcNsGroupMbrAdd; - alias RpcNsGroupMbrRemoveW RpcNsGroupMbrRemove; - alias RpcNsGroupMbrInqBeginW RpcNsGroupMbrInqBegin; - alias RpcNsGroupMbrInqNextW RpcNsGroupMbrInqNext; - alias RpcNsEntryExpandNameW RpcNsEntryExpandName; - alias RpcNsEntryObjectInqBeginW RpcNsEntryObjectInqBegin; - alias RpcNsMgmtBindingUnexportW RpcNsMgmtBindingUnexport; - alias RpcNsMgmtEntryCreateW RpcNsMgmtEntryCreate; - alias RpcNsMgmtEntryDeleteW RpcNsMgmtEntryDelete; - alias RpcNsMgmtEntryInqIfIdsW RpcNsMgmtEntryInqIfIds; - alias RpcNsProfileDeleteW RpcNsProfileDelete; - alias RpcNsProfileEltAddW RpcNsProfileEltAdd; - alias RpcNsProfileEltRemoveW RpcNsProfileEltRemove; - alias RpcNsProfileEltInqBeginW RpcNsProfileEltInqBegin; - alias RpcNsProfileEltInqNextW RpcNsProfileEltInqNext; + alias RpcNsBindingLookupBeginW RpcNsBindingLookupBegin; + alias RpcNsBindingImportBeginW RpcNsBindingImportBegin; + alias RpcNsBindingExportW RpcNsBindingExport; + alias RpcNsBindingUnexportW RpcNsBindingUnexport; + alias RpcNsGroupDeleteW RpcNsGroupDelete; + alias RpcNsGroupMbrAddW RpcNsGroupMbrAdd; + alias RpcNsGroupMbrRemoveW RpcNsGroupMbrRemove; + alias RpcNsGroupMbrInqBeginW RpcNsGroupMbrInqBegin; + alias RpcNsGroupMbrInqNextW RpcNsGroupMbrInqNext; + alias RpcNsEntryExpandNameW RpcNsEntryExpandName; + alias RpcNsEntryObjectInqBeginW RpcNsEntryObjectInqBegin; + alias RpcNsMgmtBindingUnexportW RpcNsMgmtBindingUnexport; + alias RpcNsMgmtEntryCreateW RpcNsMgmtEntryCreate; + alias RpcNsMgmtEntryDeleteW RpcNsMgmtEntryDelete; + alias RpcNsMgmtEntryInqIfIdsW RpcNsMgmtEntryInqIfIds; + alias RpcNsProfileDeleteW RpcNsProfileDelete; + alias RpcNsProfileEltAddW RpcNsProfileEltAdd; + alias RpcNsProfileEltRemoveW RpcNsProfileEltRemove; + alias RpcNsProfileEltInqBeginW RpcNsProfileEltInqBegin; + alias RpcNsProfileEltInqNextW RpcNsProfileEltInqNext; } else { - alias RpcNsBindingLookupBeginA RpcNsBindingLookupBegin; - alias RpcNsBindingImportBeginA RpcNsBindingImportBegin; - alias RpcNsBindingExportA RpcNsBindingExport; - alias RpcNsBindingUnexportA RpcNsBindingUnexport; - alias RpcNsGroupDeleteA RpcNsGroupDelete; - alias RpcNsGroupMbrAddA RpcNsGroupMbrAdd; - alias RpcNsGroupMbrRemoveA RpcNsGroupMbrRemove; - alias RpcNsGroupMbrInqBeginA RpcNsGroupMbrInqBegin; - alias RpcNsGroupMbrInqNextA RpcNsGroupMbrInqNext; - alias RpcNsEntryExpandNameA RpcNsEntryExpandName; - alias RpcNsEntryObjectInqBeginA RpcNsEntryObjectInqBegin; - alias RpcNsMgmtBindingUnexportA RpcNsMgmtBindingUnexport; - alias RpcNsMgmtEntryCreateA RpcNsMgmtEntryCreate; - alias RpcNsMgmtEntryDeleteA RpcNsMgmtEntryDelete; - alias RpcNsMgmtEntryInqIfIdsA RpcNsMgmtEntryInqIfIds; - alias RpcNsProfileDeleteA RpcNsProfileDelete; - alias RpcNsProfileEltAddA RpcNsProfileEltAdd; - alias RpcNsProfileEltRemoveA RpcNsProfileEltRemove; - alias RpcNsProfileEltInqBeginA RpcNsProfileEltInqBegin; - alias RpcNsProfileEltInqNextA RpcNsProfileEltInqNext; + alias RpcNsBindingLookupBeginA RpcNsBindingLookupBegin; + alias RpcNsBindingImportBeginA RpcNsBindingImportBegin; + alias RpcNsBindingExportA RpcNsBindingExport; + alias RpcNsBindingUnexportA RpcNsBindingUnexport; + alias RpcNsGroupDeleteA RpcNsGroupDelete; + alias RpcNsGroupMbrAddA RpcNsGroupMbrAdd; + alias RpcNsGroupMbrRemoveA RpcNsGroupMbrRemove; + alias RpcNsGroupMbrInqBeginA RpcNsGroupMbrInqBegin; + alias RpcNsGroupMbrInqNextA RpcNsGroupMbrInqNext; + alias RpcNsEntryExpandNameA RpcNsEntryExpandName; + alias RpcNsEntryObjectInqBeginA RpcNsEntryObjectInqBegin; + alias RpcNsMgmtBindingUnexportA RpcNsMgmtBindingUnexport; + alias RpcNsMgmtEntryCreateA RpcNsMgmtEntryCreate; + alias RpcNsMgmtEntryDeleteA RpcNsMgmtEntryDelete; + alias RpcNsMgmtEntryInqIfIdsA RpcNsMgmtEntryInqIfIds; + alias RpcNsProfileDeleteA RpcNsProfileDelete; + alias RpcNsProfileEltAddA RpcNsProfileEltAdd; + alias RpcNsProfileEltRemoveA RpcNsProfileEltRemove; + alias RpcNsProfileEltInqBeginA RpcNsProfileEltInqBegin; + alias RpcNsProfileEltInqNextA RpcNsProfileEltInqNext; } diff --git a/src/core/sys/windows/rpcnsip.d b/src/core/sys/windows/rpcnsip.d index a64495743d..373c74c026 100644 --- a/src/core/sys/windows/rpcnsip.d +++ b/src/core/sys/windows/rpcnsip.d @@ -11,18 +11,18 @@ module core.sys.windows.rpcnsip; private import core.sys.windows.rpcdce, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi; struct RPC_IMPORT_CONTEXT_P { - RPC_NS_HANDLE LookupContext; - RPC_BINDING_HANDLE ProposedHandle; - RPC_BINDING_VECTOR* Bindings; + RPC_NS_HANDLE LookupContext; + RPC_BINDING_HANDLE ProposedHandle; + RPC_BINDING_VECTOR* Bindings; } alias RPC_IMPORT_CONTEXT_P* PRPC_IMPORT_CONTEXT_P; extern(Windows) { - RPC_STATUS I_RpcNsGetBuffer(PRPC_MESSAGE); - RPC_STATUS I_RpcNsSendReceive(PRPC_MESSAGE, RPC_BINDING_HANDLE*); - void I_RpcNsRaiseException(PRPC_MESSAGE, RPC_STATUS); - RPC_STATUS I_RpcReBindBuffer(PRPC_MESSAGE); - RPC_STATUS I_NsServerBindSearch(); - RPC_STATUS I_NsClientBindSearch(); - void I_NsClientBindDone(); + RPC_STATUS I_RpcNsGetBuffer(PRPC_MESSAGE); + RPC_STATUS I_RpcNsSendReceive(PRPC_MESSAGE, RPC_BINDING_HANDLE*); + void I_RpcNsRaiseException(PRPC_MESSAGE, RPC_STATUS); + RPC_STATUS I_RpcReBindBuffer(PRPC_MESSAGE); + RPC_STATUS I_NsServerBindSearch(); + RPC_STATUS I_NsClientBindSearch(); + void I_NsClientBindDone(); } diff --git a/src/core/sys/windows/rpcnterr.d b/src/core/sys/windows/rpcnterr.d index ea50f23af7..37c14fded9 100644 --- a/src/core/sys/windows/rpcnterr.d +++ b/src/core/sys/windows/rpcnterr.d @@ -11,20 +11,20 @@ module core.sys.windows.rpcnterr; import core.sys.windows.winerror; enum : uint { - RPC_S_OK = ERROR_SUCCESS, - RPC_S_INVALID_ARG = ERROR_INVALID_PARAMETER, - RPC_S_OUT_OF_MEMORY = ERROR_OUTOFMEMORY, - RPC_S_OUT_OF_THREADS = ERROR_MAX_THRDS_REACHED, - RPC_S_INVALID_LEVEL = ERROR_INVALID_PARAMETER, - RPC_S_BUFFER_TOO_SMALL = ERROR_INSUFFICIENT_BUFFER, - RPC_S_INVALID_SECURITY_DESC = ERROR_INVALID_SECURITY_DESCR, - RPC_S_ACCESS_DENIED = ERROR_ACCESS_DENIED, - RPC_S_SERVER_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_SERVER_MEMORY, - RPC_X_NO_MEMORY = RPC_S_OUT_OF_MEMORY, - RPC_X_INVALID_BOUND = RPC_S_INVALID_BOUND, - RPC_X_INVALID_TAG = RPC_S_INVALID_TAG, - RPC_X_ENUM_VALUE_TOO_LARGE = RPC_X_ENUM_VALUE_OUT_OF_RANGE, - RPC_X_SS_CONTEXT_MISMATCH = ERROR_INVALID_HANDLE, - RPC_X_INVALID_BUFFER = ERROR_INVALID_USER_BUFFER, - RPC_X_INVALID_PIPE_OPERATION = RPC_X_WRONG_PIPE_ORDER + RPC_S_OK = ERROR_SUCCESS, + RPC_S_INVALID_ARG = ERROR_INVALID_PARAMETER, + RPC_S_OUT_OF_MEMORY = ERROR_OUTOFMEMORY, + RPC_S_OUT_OF_THREADS = ERROR_MAX_THRDS_REACHED, + RPC_S_INVALID_LEVEL = ERROR_INVALID_PARAMETER, + RPC_S_BUFFER_TOO_SMALL = ERROR_INSUFFICIENT_BUFFER, + RPC_S_INVALID_SECURITY_DESC = ERROR_INVALID_SECURITY_DESCR, + RPC_S_ACCESS_DENIED = ERROR_ACCESS_DENIED, + RPC_S_SERVER_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_SERVER_MEMORY, + RPC_X_NO_MEMORY = RPC_S_OUT_OF_MEMORY, + RPC_X_INVALID_BOUND = RPC_S_INVALID_BOUND, + RPC_X_INVALID_TAG = RPC_S_INVALID_TAG, + RPC_X_ENUM_VALUE_TOO_LARGE = RPC_X_ENUM_VALUE_OUT_OF_RANGE, + RPC_X_SS_CONTEXT_MISMATCH = ERROR_INVALID_HANDLE, + RPC_X_INVALID_BUFFER = ERROR_INVALID_USER_BUFFER, + RPC_X_INVALID_PIPE_OPERATION = RPC_X_WRONG_PIPE_ORDER } diff --git a/src/core/sys/windows/schannel.d b/src/core/sys/windows/schannel.d index 841609bb24..7964ed87fb 100644 --- a/src/core/sys/windows/schannel.d +++ b/src/core/sys/windows/schannel.d @@ -15,91 +15,91 @@ private import core.sys.windows.windef; const DWORD SCHANNEL_CRED_VERSION = 4; const SCHANNEL_SHUTDOWN = 1; /* Comment from MinGW - ? Do these belong here or in wincrypt.h + ? Do these belong here or in wincrypt.h */ enum : DWORD { - AUTHTYPE_CLIENT = 1, - AUTHTYPE_SERVER = 2 + AUTHTYPE_CLIENT = 1, + AUTHTYPE_SERVER = 2 } const DWORD - SP_PROT_PCT1_SERVER = 0x01, - SP_PROT_PCT1_CLIENT = 0x02, - SP_PROT_SSL2_SERVER = 0x04, - SP_PROT_SSL2_CLIENT = 0x08, - SP_PROT_SSL3_SERVER = 0x10, - SP_PROT_SSL3_CLIENT = 0x20, - SP_PROT_TLS1_SERVER = 0x40, - SP_PROT_TLS1_CLIENT = 0x80, - SP_PROT_PCT1 = SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER, - SP_PROT_TLS1 = SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER, - SP_PROT_SSL2 = SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER, - SP_PROT_SSL3 = SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER; + SP_PROT_PCT1_SERVER = 0x01, + SP_PROT_PCT1_CLIENT = 0x02, + SP_PROT_SSL2_SERVER = 0x04, + SP_PROT_SSL2_CLIENT = 0x08, + SP_PROT_SSL3_SERVER = 0x10, + SP_PROT_SSL3_CLIENT = 0x20, + SP_PROT_TLS1_SERVER = 0x40, + SP_PROT_TLS1_CLIENT = 0x80, + SP_PROT_PCT1 = SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER, + SP_PROT_TLS1 = SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER, + SP_PROT_SSL2 = SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER, + SP_PROT_SSL3 = SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER; const DWORD - SCH_CRED_NO_SYSTEM_MAPPER = 0x0002, - SCH_CRED_NO_SERVERNAME_CHECK = 0x0004, - SCH_CRED_MANUAL_CRED_VALIDATION = 0x0008, - SCH_CRED_NO_DEFAULT_CREDS = 0x0010, - SCH_CRED_AUTO_CRED_VALIDATION = 0x0020, - SCH_CRED_USE_DEFAULT_CREDS = 0x0040, - SCH_CRED_REVOCATION_CHECK_END_CERT = 0x0100, - SCH_CRED_REVOCATION_CHECK_CHAIN = 0x0200, - SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x0400, - SCH_CRED_IGNORE_NO_REVOCATION_CHECK = 0x0800, - SCH_CRED_IGNORE_REVOCATION_OFFLINE = 0x1000; + SCH_CRED_NO_SYSTEM_MAPPER = 0x0002, + SCH_CRED_NO_SERVERNAME_CHECK = 0x0004, + SCH_CRED_MANUAL_CRED_VALIDATION = 0x0008, + SCH_CRED_NO_DEFAULT_CREDS = 0x0010, + SCH_CRED_AUTO_CRED_VALIDATION = 0x0020, + SCH_CRED_USE_DEFAULT_CREDS = 0x0040, + SCH_CRED_REVOCATION_CHECK_END_CERT = 0x0100, + SCH_CRED_REVOCATION_CHECK_CHAIN = 0x0200, + SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x0400, + SCH_CRED_IGNORE_NO_REVOCATION_CHECK = 0x0800, + SCH_CRED_IGNORE_REVOCATION_OFFLINE = 0x1000; // No definition - presumably an opaque structure struct _HMAPPER; struct SCHANNEL_CRED { - DWORD dwVersion = SCHANNEL_CRED_VERSION; - DWORD cCreds; - PCCERT_CONTEXT* paCred; - HCERTSTORE hRootStore; - DWORD cMappers; - _HMAPPER** aphMappers; - DWORD cSupportedAlgs; - ALG_ID* palgSupportedAlgs; - DWORD grbitEnabledProtocols; - DWORD dwMinimumCypherStrength; - DWORD dwMaximumCypherStrength; - DWORD dwSessionLifespan; - DWORD dwFlags; - DWORD reserved; + DWORD dwVersion = SCHANNEL_CRED_VERSION; + DWORD cCreds; + PCCERT_CONTEXT* paCred; + HCERTSTORE hRootStore; + DWORD cMappers; + _HMAPPER** aphMappers; + DWORD cSupportedAlgs; + ALG_ID* palgSupportedAlgs; + DWORD grbitEnabledProtocols; + DWORD dwMinimumCypherStrength; + DWORD dwMaximumCypherStrength; + DWORD dwSessionLifespan; + DWORD dwFlags; + DWORD reserved; } alias SCHANNEL_CRED* PSCHANNEL_CRED; struct SecPkgCred_SupportedAlgs { - DWORD cSupportedAlgs; - ALG_ID* palgSupportedAlgs; + DWORD cSupportedAlgs; + ALG_ID* palgSupportedAlgs; } alias SecPkgCred_SupportedAlgs* PSecPkgCred_SupportedAlgs; struct SecPkgCred_CypherStrengths { - DWORD dwMinimumCypherStrength; - DWORD dwMaximumCypherStrength; + DWORD dwMinimumCypherStrength; + DWORD dwMaximumCypherStrength; } alias SecPkgCred_CypherStrengths* PSecPkgCred_CypherStrengths; struct SecPkgCred_SupportedProtocols { - DWORD grbitProtocol; + DWORD grbitProtocol; } alias SecPkgCred_SupportedProtocols* PSecPkgCred_SupportedProtocols; struct SecPkgContext_IssuerListInfoEx { - PCERT_NAME_BLOB aIssuers; - DWORD cIssuers; + PCERT_NAME_BLOB aIssuers; + DWORD cIssuers; } alias SecPkgContext_IssuerListInfoEx* PSecPkgContext_IssuerListInfoEx; struct SecPkgContext_ConnectionInfo { - DWORD dwProtocol; - ALG_ID aiCipher; - DWORD dwCipherStrength; - ALG_ID aiHash; - DWORD dwHashStrength; - ALG_ID aiExch; - DWORD dwExchStrength; + DWORD dwProtocol; + ALG_ID aiCipher; + DWORD dwCipherStrength; + ALG_ID aiHash; + DWORD dwHashStrength; + ALG_ID aiExch; + DWORD dwExchStrength; } alias SecPkgContext_ConnectionInfo* PSecPkgContext_ConnectionInfo; diff --git a/src/core/sys/windows/secext.d b/src/core/sys/windows/secext.d index 566c6cb13c..e4784ebe2a 100644 --- a/src/core/sys/windows/secext.d +++ b/src/core/sys/windows/secext.d @@ -16,36 +16,36 @@ static assert (_WIN32_WINNT >= 0x501, "SecExt is only available on WindowsXP and later"); enum EXTENDED_NAME_FORMAT { - NameUnknown, - NameFullyQualifiedDN, - NameSamCompatible, - NameDisplay, // = 3 - NameUniqueId = 6, - NameCanonical, - NameUserPrincipal, - NameCanonicalEx, - NameServicePrincipal, // = 10 - NameDnsDomain = 12 + NameUnknown, + NameFullyQualifiedDN, + NameSamCompatible, + NameDisplay, // = 3 + NameUniqueId = 6, + NameCanonical, + NameUserPrincipal, + NameCanonicalEx, + NameServicePrincipal, // = 10 + NameDnsDomain = 12 } alias EXTENDED_NAME_FORMAT* PEXTENDED_NAME_FORMAT; extern (Windows) { - BOOLEAN GetComputerObjectNameA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); - BOOLEAN GetComputerObjectNameW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); - BOOLEAN GetUserNameExA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); - BOOLEAN GetUserNameExW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); - BOOLEAN TranslateNameA(LPCSTR, EXTENDED_NAME_FORMAT, - EXTENDED_NAME_FORMAT, LPSTR, PULONG); - BOOLEAN TranslateNameW(LPCWSTR, EXTENDED_NAME_FORMAT, - EXTENDED_NAME_FORMAT, LPWSTR, PULONG); + BOOLEAN GetComputerObjectNameA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN GetComputerObjectNameW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); + BOOLEAN GetUserNameExA(EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN GetUserNameExW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG); + BOOLEAN TranslateNameA(LPCSTR, EXTENDED_NAME_FORMAT, + EXTENDED_NAME_FORMAT, LPSTR, PULONG); + BOOLEAN TranslateNameW(LPCWSTR, EXTENDED_NAME_FORMAT, + EXTENDED_NAME_FORMAT, LPWSTR, PULONG); } version (Unicode) { - alias GetComputerObjectNameW GetComputerObjectName; - alias GetUserNameExW GetUserNameEx; - alias TranslateNameW TranslateName; + alias GetComputerObjectNameW GetComputerObjectName; + alias GetUserNameExW GetUserNameEx; + alias TranslateNameW TranslateName; } else { - alias GetComputerObjectNameA GetComputerObjectName; - alias GetUserNameExA GetUserNameEx; - alias TranslateNameA TranslateName; + alias GetComputerObjectNameA GetComputerObjectName; + alias GetUserNameExA GetUserNameEx; + alias TranslateNameA TranslateName; } diff --git a/src/core/sys/windows/servprov.d b/src/core/sys/windows/servprov.d index bd323db981..f37c16f14f 100644 --- a/src/core/sys/windows/servprov.d +++ b/src/core/sys/windows/servprov.d @@ -11,5 +11,5 @@ module core.sys.windows.servprov; private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; interface IServiceProvider : IUnknown { - HRESULT QueryService(REFGUID, REFIID, void**); + HRESULT QueryService(REFGUID, REFIID, void**); } diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d index 784a863daa..6f232a3207 100644 --- a/src/core/sys/windows/setupapi.d +++ b/src/core/sys/windows/setupapi.d @@ -15,27 +15,27 @@ private import core.sys.windows.basetyps, core.sys.windows.commctrl, core.sys.wi private import core.sys.windows.winbase; // for SYSTEMTIME /*static if(_WIN32_WINNT < _WIN32_WINDOWS) { - const UINT _SETUPAPI_VER = _WIN32_WINNT; // SetupAPI version follows Windows NT version + const UINT _SETUPAPI_VER = _WIN32_WINNT; // SetupAPI version follows Windows NT version } else static if(_WIN32_WINDOWS) { - static if(_WIN32_WINDOWS >= 0x0490) { - const UINT _SETUPAPI_VER = 0x0500; // WinME uses same version of SetupAPI as Win2k - } else static if(_WIN32_WINDOWS >= 0x0410) { - const UINT _SETUPAPI_VER = 0x0410; // Indicates version of SetupAPI shipped with Win98 - } else { - const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version - } + static if(_WIN32_WINDOWS >= 0x0490) { + const UINT _SETUPAPI_VER = 0x0500; // WinME uses same version of SetupAPI as Win2k + } else static if(_WIN32_WINDOWS >= 0x0410) { + const UINT _SETUPAPI_VER = 0x0410; // Indicates version of SetupAPI shipped with Win98 + } else { + const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version + } } else { - const UINT _SETUPAPI_VER = 0x0501; + const UINT _SETUPAPI_VER = 0x0501; } version (WindowsNTonly) { - static if (_WIN32_WINNT >= 0x500) { - const UINT USE_SP_DRVINFO_DATA_V1 = 0; - } else { - const UINT USE_SP_DRVINFO_DATA_V1 = 1; - } + static if (_WIN32_WINNT >= 0x500) { + const UINT USE_SP_DRVINFO_DATA_V1 = 0; + } else { + const UINT USE_SP_DRVINFO_DATA_V1 = 1; + } } else { - const UINT USE_SP_DRVINFO_DATA_V1 = 1; + const UINT USE_SP_DRVINFO_DATA_V1 = 1; }*/ /+ const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version @@ -45,812 +45,812 @@ const UINT _SETUPAPI_VER = _WIN32_WINNT; const bool USE_SP_DRVINFO_DATA_V1 = _WIN32_WINNT < 0x500; enum : uint { - LINE_LEN = 256, - MAX_INF_STRING_LENGTH = 4096, - MAX_TITLE_LEN = 60, - MAX_INSTRUCTION_LEN = 256, - MAX_LABEL_LEN = 30, - MAX_SERVICE_NAME_LEN = 256, - MAX_SUBTITLE_LEN = 256, - SP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3 + LINE_LEN = 256, + MAX_INF_STRING_LENGTH = 4096, + MAX_TITLE_LEN = 60, + MAX_INSTRUCTION_LEN = 256, + MAX_LABEL_LEN = 30, + MAX_SERVICE_NAME_LEN = 256, + MAX_SUBTITLE_LEN = 256, + SP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3 } enum : DWORD { - COPYFLG_WARN_IF_SKIP = 0x00000001, - COPYFLG_NOSKIP = 0x00000002, - COPYFLG_NOVERSIONCHECK = 0x00000004, - COPYFLG_FORCE_FILE_IN_USE = 0x00000008, - COPYFLG_NO_OVERWRITE = 0x00000010, - COPYFLG_NO_VERSION_DIALOG = 0x00000020, - COPYFLG_OVERWRITE_OLDER_ONLY = 0x00000040, - COPYFLG_REPLACEONLY = 0x00000400, - COPYFLG_NODECOMP = 0x00000800, - COPYFLG_REPLACE_BOOT_FILE = 0x00001000, - COPYFLG_NOPRUNE = 0x00002000 + COPYFLG_WARN_IF_SKIP = 0x00000001, + COPYFLG_NOSKIP = 0x00000002, + COPYFLG_NOVERSIONCHECK = 0x00000004, + COPYFLG_FORCE_FILE_IN_USE = 0x00000008, + COPYFLG_NO_OVERWRITE = 0x00000010, + COPYFLG_NO_VERSION_DIALOG = 0x00000020, + COPYFLG_OVERWRITE_OLDER_ONLY = 0x00000040, + COPYFLG_REPLACEONLY = 0x00000400, + COPYFLG_NODECOMP = 0x00000800, + COPYFLG_REPLACE_BOOT_FILE = 0x00001000, + COPYFLG_NOPRUNE = 0x00002000 } enum : DWORD { - DELFLG_IN_USE = 0x00000001, - DELFLG_IN_USE1 = 0x00010000 + DELFLG_IN_USE = 0x00000001, + DELFLG_IN_USE1 = 0x00010000 } enum : DWORD { - DI_REMOVEDEVICE_GLOBAL = 0x00000001, - DI_REMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, - DI_UNREMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, - DI_SHOWOEM = 0x00000001, - DI_SHOWCOMPAT = 0x00000002, - DI_SHOWCLASS = 0x00000004, - DI_SHOWALL = 0x00000007, - DI_NOVCP = 0x00000008, - DI_DIDCOMPAT = 0x00000010, - DI_DIDCLASS = 0x00000020, - DI_AUTOASSIGNRES = 0x00000040, - DI_NEEDRESTART = 0x00000080, - DI_NEEDREBOOT = 0x00000100, - DI_NOBROWSE = 0x00000200, - DI_MULTMFGS = 0x00000400, - DI_DISABLED = 0x00000800, - DI_GENERALPAGE_ADDED = 0x00001000, - DI_RESOURCEPAGE_ADDED = 0x00002000, - DI_PROPERTIES_CHANGE = 0x00004000, - DI_INF_IS_SORTED = 0x00008000, - DI_ENUMSINGLEINF = 0x00010000, - DI_DONOTCALLCONFIGMG = 0x00020000, - DI_INSTALLDISABLED = 0x00040000, - DI_COMPAT_FROM_CLASS = 0x00080000, - DI_CLASSINSTALLPARAMS = 0x00100000, - DI_NODI_DEFAULTACTION = 0x00200000, - DI_QUIETINSTALL = 0x00800000, - DI_NOFILECOPY = 0x01000000, - DI_FORCECOPY = 0x02000000, - DI_DRIVERPAGE_ADDED = 0x04000000, - DI_USECI_SELECTSTRINGS = 0x08000000, - DI_OVERRIDE_INFFLAGS = 0x10000000, - DI_PROPS_NOCHANGEUSAGE = 0x20000000, - DI_NOSELECTICONS = 0x40000000, - DI_NOWRITE_IDS = 0x80000000, - DI_FLAGSEX_USEOLDINFSEARCH = 0x00000001, - DI_FLAGSEX_AUTOSELECTRANK0 = 0x00000002, - DI_FLAGSEX_CI_FAILED = 0x00000004, - DI_FLAGSEX_DIDINFOLIST = 0x00000010, - DI_FLAGSEX_DIDCOMPATINFO = 0x00000020, - DI_FLAGSEX_FILTERCLASSES = 0x00000040, - DI_FLAGSEX_SETFAILEDINSTALL = 0x00000080, - DI_FLAGSEX_DEVICECHANGE = 0x00000100, - DI_FLAGSEX_ALWAYSWRITEIDS = 0x00000200, - DI_FLAGSEX_PROPCHANGE_PENDING = 0x00000400, - DI_FLAGSEX_ALLOWEXCLUDEDDRVS = 0x00000800, - DI_FLAGSEX_NOUIONQUERYREMOVE = 0x00001000, - DI_FLAGSEX_USECLASSFORCOMPAT = 0x00002000, - DI_FLAGSEX_OLDINF_IN_CLASSLIST = 0x00004000, - DI_FLAGSEX_NO_DRVREG_MODIFY = 0x00008000, - DI_FLAGSEX_IN_SYSTEM_SETUP = 0x00010000, - DI_FLAGSEX_INET_DRIVER = 0x00020000, - DI_FLAGSEX_APPENDDRIVERLIST = 0x00040000, - DI_FLAGSEX_PREINSTALLBACKUP = 0x00080000, - DI_FLAGSEX_BACKUPONREPLACE = 0x00100000, - DI_FLAGSEX_DRIVERLIST_FROM_URL = 0x00200000, - DI_FLAGSEX_RESERVED1 = 0x00400000, - DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS = 0x00800000, - DI_FLAGSEX_POWERPAGE_ADDED = 0x01000000 + DI_REMOVEDEVICE_GLOBAL = 0x00000001, + DI_REMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, + DI_UNREMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, + DI_SHOWOEM = 0x00000001, + DI_SHOWCOMPAT = 0x00000002, + DI_SHOWCLASS = 0x00000004, + DI_SHOWALL = 0x00000007, + DI_NOVCP = 0x00000008, + DI_DIDCOMPAT = 0x00000010, + DI_DIDCLASS = 0x00000020, + DI_AUTOASSIGNRES = 0x00000040, + DI_NEEDRESTART = 0x00000080, + DI_NEEDREBOOT = 0x00000100, + DI_NOBROWSE = 0x00000200, + DI_MULTMFGS = 0x00000400, + DI_DISABLED = 0x00000800, + DI_GENERALPAGE_ADDED = 0x00001000, + DI_RESOURCEPAGE_ADDED = 0x00002000, + DI_PROPERTIES_CHANGE = 0x00004000, + DI_INF_IS_SORTED = 0x00008000, + DI_ENUMSINGLEINF = 0x00010000, + DI_DONOTCALLCONFIGMG = 0x00020000, + DI_INSTALLDISABLED = 0x00040000, + DI_COMPAT_FROM_CLASS = 0x00080000, + DI_CLASSINSTALLPARAMS = 0x00100000, + DI_NODI_DEFAULTACTION = 0x00200000, + DI_QUIETINSTALL = 0x00800000, + DI_NOFILECOPY = 0x01000000, + DI_FORCECOPY = 0x02000000, + DI_DRIVERPAGE_ADDED = 0x04000000, + DI_USECI_SELECTSTRINGS = 0x08000000, + DI_OVERRIDE_INFFLAGS = 0x10000000, + DI_PROPS_NOCHANGEUSAGE = 0x20000000, + DI_NOSELECTICONS = 0x40000000, + DI_NOWRITE_IDS = 0x80000000, + DI_FLAGSEX_USEOLDINFSEARCH = 0x00000001, + DI_FLAGSEX_AUTOSELECTRANK0 = 0x00000002, + DI_FLAGSEX_CI_FAILED = 0x00000004, + DI_FLAGSEX_DIDINFOLIST = 0x00000010, + DI_FLAGSEX_DIDCOMPATINFO = 0x00000020, + DI_FLAGSEX_FILTERCLASSES = 0x00000040, + DI_FLAGSEX_SETFAILEDINSTALL = 0x00000080, + DI_FLAGSEX_DEVICECHANGE = 0x00000100, + DI_FLAGSEX_ALWAYSWRITEIDS = 0x00000200, + DI_FLAGSEX_PROPCHANGE_PENDING = 0x00000400, + DI_FLAGSEX_ALLOWEXCLUDEDDRVS = 0x00000800, + DI_FLAGSEX_NOUIONQUERYREMOVE = 0x00001000, + DI_FLAGSEX_USECLASSFORCOMPAT = 0x00002000, + DI_FLAGSEX_OLDINF_IN_CLASSLIST = 0x00004000, + DI_FLAGSEX_NO_DRVREG_MODIFY = 0x00008000, + DI_FLAGSEX_IN_SYSTEM_SETUP = 0x00010000, + DI_FLAGSEX_INET_DRIVER = 0x00020000, + DI_FLAGSEX_APPENDDRIVERLIST = 0x00040000, + DI_FLAGSEX_PREINSTALLBACKUP = 0x00080000, + DI_FLAGSEX_BACKUPONREPLACE = 0x00100000, + DI_FLAGSEX_DRIVERLIST_FROM_URL = 0x00200000, + DI_FLAGSEX_RESERVED1 = 0x00400000, + DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS = 0x00800000, + DI_FLAGSEX_POWERPAGE_ADDED = 0x01000000 } enum : DWORD { - DIBCI_NOINSTALLCLASS = 0x00000001, - DIBCI_NODISPLAYCLASS = 0x00000002 + DIBCI_NOINSTALLCLASS = 0x00000001, + DIBCI_NODISPLAYCLASS = 0x00000002 } enum : DWORD { - DICD_GENERATE_ID = 0x00000001, - DICD_INHERIT_CLASSDRVS = 0x00000002 + DICD_GENERATE_ID = 0x00000001, + DICD_INHERIT_CLASSDRVS = 0x00000002 } enum : DWORD { - DICS_ENABLE = 1, - DICS_DISABLE, - DICS_PROPCHANGE, - DICS_START, - DICS_STOP // = 5 + DICS_ENABLE = 1, + DICS_DISABLE, + DICS_PROPCHANGE, + DICS_START, + DICS_STOP // = 5 } enum : DWORD { - DICS_FLAG_GLOBAL = 1, - DICS_FLAG_CONFIGSPECIFIC = 2, - DICS_FLAG_CONFIGGENERAL = 4 + DICS_FLAG_GLOBAL = 1, + DICS_FLAG_CONFIGSPECIFIC = 2, + DICS_FLAG_CONFIGGENERAL = 4 } alias UINT DI_FUNCTION; enum : DI_FUNCTION { - DIF_SELECTDEVICE = 1, - DIF_INSTALLDEVICE, - DIF_ASSIGNRESOURCES, - DIF_PROPERTIES, - DIF_REMOVE, - DIF_FIRSTTIMESETUP, - DIF_FOUNDDEVICE, - DIF_SELECTCLASSDRIVERS, - DIF_VALIDATECLASSDRIVERS, - DIF_INSTALLCLASSDRIVERS, - DIF_CALCDISKSPACE, - DIF_DESTROYPRIVATEDATA, - DIF_VALIDATEDRIVER, - DIF_MOVEDEVICE, - DIF_DETECT, - DIF_INSTALLWIZARD, - DIF_DESTROYWIZARDDATA, - DIF_PROPERTYCHANGE, - DIF_ENABLECLASS, - DIF_DETECTVERIFY, - DIF_INSTALLDEVICEFILES, - DIF_UNREMOVE, - DIF_SELECTBESTCOMPATDRV, - DIF_ALLOW_INSTALL, - DIF_REGISTERDEVICE, - DIF_NEWDEVICEWIZARD_PRESELECT, - DIF_NEWDEVICEWIZARD_SELECT, - DIF_NEWDEVICEWIZARD_PREANALYZE, - DIF_NEWDEVICEWIZARD_POSTANALYZE, - DIF_NEWDEVICEWIZARD_FINISHINSTALL, - DIF_UNUSED1, - DIF_INSTALLINTERFACES, - DIF_DETECTCANCEL, - DIF_REGISTER_COINSTALLERS, - DIF_ADDPROPERTYPAGE_ADVANCED, - DIF_ADDPROPERTYPAGE_BASIC, - DIF_RESERVED1, - DIF_TROUBLESHOOTER, - DIF_POWERMESSAGEWAKE // = 39 + DIF_SELECTDEVICE = 1, + DIF_INSTALLDEVICE, + DIF_ASSIGNRESOURCES, + DIF_PROPERTIES, + DIF_REMOVE, + DIF_FIRSTTIMESETUP, + DIF_FOUNDDEVICE, + DIF_SELECTCLASSDRIVERS, + DIF_VALIDATECLASSDRIVERS, + DIF_INSTALLCLASSDRIVERS, + DIF_CALCDISKSPACE, + DIF_DESTROYPRIVATEDATA, + DIF_VALIDATEDRIVER, + DIF_MOVEDEVICE, + DIF_DETECT, + DIF_INSTALLWIZARD, + DIF_DESTROYWIZARDDATA, + DIF_PROPERTYCHANGE, + DIF_ENABLECLASS, + DIF_DETECTVERIFY, + DIF_INSTALLDEVICEFILES, + DIF_UNREMOVE, + DIF_SELECTBESTCOMPATDRV, + DIF_ALLOW_INSTALL, + DIF_REGISTERDEVICE, + DIF_NEWDEVICEWIZARD_PRESELECT, + DIF_NEWDEVICEWIZARD_SELECT, + DIF_NEWDEVICEWIZARD_PREANALYZE, + DIF_NEWDEVICEWIZARD_POSTANALYZE, + DIF_NEWDEVICEWIZARD_FINISHINSTALL, + DIF_UNUSED1, + DIF_INSTALLINTERFACES, + DIF_DETECTCANCEL, + DIF_REGISTER_COINSTALLERS, + DIF_ADDPROPERTYPAGE_ADVANCED, + DIF_ADDPROPERTYPAGE_BASIC, + DIF_RESERVED1, + DIF_TROUBLESHOOTER, + DIF_POWERMESSAGEWAKE // = 39 } enum : DWORD { - DIGCF_DEFAULT = 0x00000001, - DIGCF_PRESENT = 0x00000002, - DIGCF_ALLCLASSES = 0x00000004, - DIGCF_PROFILE = 0x00000008, - DIGCF_DEVICEINTERFACE = 0x00000010 + DIGCF_DEFAULT = 0x00000001, + DIGCF_PRESENT = 0x00000002, + DIGCF_ALLCLASSES = 0x00000004, + DIGCF_PROFILE = 0x00000008, + DIGCF_DEVICEINTERFACE = 0x00000010 } deprecated enum : DWORD { - DIGCF_INTERFACEDEVICE = DIGCF_DEVICEINTERFACE + DIGCF_INTERFACEDEVICE = DIGCF_DEVICEINTERFACE } enum : DWORD { - DIGCDP_FLAG_BASIC = 0x00000001, - DIGCDP_FLAG_ADVANCED = 0x00000002 + DIGCDP_FLAG_BASIC = 0x00000001, + DIGCDP_FLAG_ADVANCED = 0x00000002 } enum : DWORD { - DIOCR_INSTALLER = 0x00000001, - DIOCR_INTERFACE = 0x00000002 + DIOCR_INSTALLER = 0x00000001, + DIOCR_INTERFACE = 0x00000002 } enum : DWORD { - DIODI_NO_ADD = 0x00000001 + DIODI_NO_ADD = 0x00000001 } enum : DWORD { - DIOD_INHERIT_CLASSDRVS = 0x00000002, - DIOD_CANCEL_REMOVE = 0x00000004 + DIOD_INHERIT_CLASSDRVS = 0x00000002, + DIOD_CANCEL_REMOVE = 0x00000004 } enum : DWORD { - DIREG_DEV = 0x00000001, - DIREG_DRV = 0x00000002, - DIREG_BOTH = 0x00000004 + DIREG_DEV = 0x00000001, + DIREG_DRV = 0x00000002, + DIREG_BOTH = 0x00000004 } enum : int { - DIRID_ABSOLUTE = -1, - DIRID_NULL = 0, - DIRID_SRCPATH = 1, - DIRID_WINDOWS = 10, - DIRID_SYSTEM = 11, - DIRID_DRIVERS = 12, - DIRID_IOSUBSYS = DIRID_DRIVERS, - DIRID_INF = 17, - DIRID_HELP = 18, - DIRID_FONTS = 20, - DIRID_VIEWERS = 21, - DIRID_COLOR = 23, - DIRID_APPS = 24, - DIRID_SHARED = 25, - DIRID_BOOT = 30, - DIRID_SYSTEM16 = 50, - DIRID_SPOOL = 51, - DIRID_SPOOLDRIVERS = 52, - DIRID_USERPROFILE = 53, - DIRID_LOADER = 54, - DIRID_PRINTPROCESSOR = 55, - DIRID_DEFAULT = DIRID_SYSTEM + DIRID_ABSOLUTE = -1, + DIRID_NULL = 0, + DIRID_SRCPATH = 1, + DIRID_WINDOWS = 10, + DIRID_SYSTEM = 11, + DIRID_DRIVERS = 12, + DIRID_IOSUBSYS = DIRID_DRIVERS, + DIRID_INF = 17, + DIRID_HELP = 18, + DIRID_FONTS = 20, + DIRID_VIEWERS = 21, + DIRID_COLOR = 23, + DIRID_APPS = 24, + DIRID_SHARED = 25, + DIRID_BOOT = 30, + DIRID_SYSTEM16 = 50, + DIRID_SPOOL = 51, + DIRID_SPOOLDRIVERS = 52, + DIRID_USERPROFILE = 53, + DIRID_LOADER = 54, + DIRID_PRINTPROCESSOR = 55, + DIRID_DEFAULT = DIRID_SYSTEM } enum : int { - DIRID_COMMON_STARTMENU = 16406, - DIRID_COMMON_PROGRAMS = 16407, - DIRID_COMMON_STARTUP = 16408, - DIRID_COMMON_DESKTOPDIRECTORY = 16409, - DIRID_COMMON_FAVORITES = 16415, - DIRID_COMMON_APPDATA = 16419, - DIRID_PROGRAM_FILES = 16422, - DIRID_SYSTEM_X86 = 16425, - DIRID_PROGRAM_FILES_X86 = 16426, - DIRID_PROGRAM_FILES_COMMON = 16427, - DIRID_PROGRAM_FILES_COMMONX86 = 16428, - DIRID_COMMON_TEMPLATES = 16429, - DIRID_COMMON_DOCUMENTS = 16430, - DIRID_USER = 0x8000, - DIRID_ABSOLUTE_16BIT = 0xffff + DIRID_COMMON_STARTMENU = 16406, + DIRID_COMMON_PROGRAMS = 16407, + DIRID_COMMON_STARTUP = 16408, + DIRID_COMMON_DESKTOPDIRECTORY = 16409, + DIRID_COMMON_FAVORITES = 16415, + DIRID_COMMON_APPDATA = 16419, + DIRID_PROGRAM_FILES = 16422, + DIRID_SYSTEM_X86 = 16425, + DIRID_PROGRAM_FILES_X86 = 16426, + DIRID_PROGRAM_FILES_COMMON = 16427, + DIRID_PROGRAM_FILES_COMMONX86 = 16428, + DIRID_COMMON_TEMPLATES = 16429, + DIRID_COMMON_DOCUMENTS = 16430, + DIRID_USER = 0x8000, + DIRID_ABSOLUTE_16BIT = 0xffff } enum : DWORD { - DMI_MASK = 0x00000001, - DMI_BKCOLOR = 0x00000002, - DMI_USERECT = 0x00000004 + DMI_MASK = 0x00000001, + DMI_BKCOLOR = 0x00000002, + DMI_USERECT = 0x00000004 } enum : DWORD { - DNF_DUPDESC = 0x00000001, - DNF_OLDDRIVER = 0x00000002, - DNF_EXCLUDEFROMLIST = 0x00000004, - DNF_NODRIVER = 0x00000008, - DNF_LEGACYINF = 0x00000010, - DNF_CLASS_DRIVER = 0x00000020, - DNF_COMPATIBLE_DRIVER = 0x00000040, - DNF_INET_DRIVER = 0x00000080, - DNF_UNUSED1 = 0x00000100, - DNF_INDEXED_DRIVER = 0x00000200, - DNF_OLD_INET_DRIVER = 0x00000400, - DNF_BAD_DRIVER = 0x00000800, - DNF_DUPPROVIDER = 0x00001000 + DNF_DUPDESC = 0x00000001, + DNF_OLDDRIVER = 0x00000002, + DNF_EXCLUDEFROMLIST = 0x00000004, + DNF_NODRIVER = 0x00000008, + DNF_LEGACYINF = 0x00000010, + DNF_CLASS_DRIVER = 0x00000020, + DNF_COMPATIBLE_DRIVER = 0x00000040, + DNF_INET_DRIVER = 0x00000080, + DNF_UNUSED1 = 0x00000100, + DNF_INDEXED_DRIVER = 0x00000200, + DNF_OLD_INET_DRIVER = 0x00000400, + DNF_BAD_DRIVER = 0x00000800, + DNF_DUPPROVIDER = 0x00001000 } enum : UINT { - DPROMPT_SUCCESS, - DPROMPT_CANCEL, - DPROMPT_SKIPFILE, - DPROMPT_BUFFERTOOSMALL, - DPROMPT_OUTOFMEMORY // = 4 + DPROMPT_SUCCESS, + DPROMPT_CANCEL, + DPROMPT_SKIPFILE, + DPROMPT_BUFFERTOOSMALL, + DPROMPT_OUTOFMEMORY // = 4 } enum : DWORD { - DRIVER_HARDWAREID_RANK = 0x00000FFF, - DRIVER_COMPATID_RANK = 0x00003FFF, - DRIVER_UNTRUSTED_RANK = 0x00008000, - DRIVER_UNTRUSTED_HARDWAREID_RANK = 0x00008FFF, - DRIVER_UNTRUSTED_COMPATID_RANK = 0x0000BFFF, - DRIVER_W9X_SUSPECT_RANK = 0x0000C000, - DRIVER_W9X_SUSPECT_HARDWAREID_RANK = 0x0000CFFF, - DRIVER_W9X_SUSPECT_COMPATID_RANK = 0x0000FFFF + DRIVER_HARDWAREID_RANK = 0x00000FFF, + DRIVER_COMPATID_RANK = 0x00003FFF, + DRIVER_UNTRUSTED_RANK = 0x00008000, + DRIVER_UNTRUSTED_HARDWAREID_RANK = 0x00008FFF, + DRIVER_UNTRUSTED_COMPATID_RANK = 0x0000BFFF, + DRIVER_W9X_SUSPECT_RANK = 0x0000C000, + DRIVER_W9X_SUSPECT_HARDWAREID_RANK = 0x0000CFFF, + DRIVER_W9X_SUSPECT_COMPATID_RANK = 0x0000FFFF } enum : DWORD { - DYNAWIZ_FLAG_PAGESADDED = 0x00000001, - DYNAWIZ_FLAG_INSTALLDET_NEXT = 0x00000002, - DYNAWIZ_FLAG_INSTALLDET_PREV = 0x00000004, - DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT = 0x00000008 + DYNAWIZ_FLAG_PAGESADDED = 0x00000001, + DYNAWIZ_FLAG_INSTALLDET_NEXT = 0x00000002, + DYNAWIZ_FLAG_INSTALLDET_PREV = 0x00000004, + DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT = 0x00000008 } enum : WORD { - ENABLECLASS_QUERY, - ENABLECLASS_SUCCESS, - ENABLECLASS_FAILURE // = 2 + ENABLECLASS_QUERY, + ENABLECLASS_SUCCESS, + ENABLECLASS_FAILURE // = 2 } enum : DWORD { - ERROR_EXPECTED_SECTION_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0, - ERROR_BAD_SECTION_NAME_LINE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 1, - ERROR_SECTION_NAME_TOO_LONG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 2, - ERROR_GENERAL_SYNTAX = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 3, - ERROR_WRONG_INF_STYLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x100, - ERROR_NOT_INSTALLED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x1000, - ERROR_SECTION_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x101, - ERROR_LINE_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x102, - ERROR_NO_BACKUP = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x103, - ERROR_NO_ASSOCIATED_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x200, - ERROR_CLASS_MISMATCH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x201, - ERROR_DUPLICATE_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x202, - ERROR_NO_DRIVER_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x203, - ERROR_KEY_DOES_NOT_EXIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x204, - ERROR_INVALID_DEVINST_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x205, - ERROR_INVALID_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x206, - ERROR_DEVINST_ALREADY_EXISTS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x207, - ERROR_DEVINFO_NOT_REGISTERED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x208, - ERROR_INVALID_REG_PROPERTY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x209, - ERROR_NO_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20A, - ERROR_NO_SUCH_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20B, - ERROR_CANT_LOAD_CLASS_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20C, - ERROR_INVALID_CLASS_INSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20D, - ERROR_DI_DO_DEFAULT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20E, - ERROR_DI_NOFILECOPY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20F, - ERROR_INVALID_HWPROFILE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x210, - ERROR_NO_DEVICE_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x211, - ERROR_DEVINFO_LIST_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x212, - ERROR_DEVINFO_DATA_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x213, - ERROR_DI_BAD_PATH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x214, - ERROR_NO_CLASSINSTALL_PARAMS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x215, - ERROR_FILEQUEUE_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x216, - ERROR_BAD_SERVICE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x217, - ERROR_NO_CLASS_DRIVER_LIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x218, - ERROR_NO_ASSOCIATED_SERVICE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x219, - ERROR_NO_DEFAULT_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21A, - ERROR_DEVICE_INTERFACE_ACTIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21B, - ERROR_DEVICE_INTERFACE_REMOVED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21C, - ERROR_BAD_INTERFACE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21D, - ERROR_NO_SUCH_INTERFACE_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21E, - ERROR_INVALID_REFERENCE_STRING = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21F, - ERROR_INVALID_MACHINENAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x220, - ERROR_REMOTE_COMM_FAILURE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x221, - ERROR_MACHINE_UNAVAILABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x222, - ERROR_NO_CONFIGMGR_SERVICES = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x223, - ERROR_INVALID_PROPPAGE_PROVIDER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x224, - ERROR_NO_SUCH_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x225, - ERROR_DI_POSTPROCESSING_REQUIRED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x226, - ERROR_INVALID_COINSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x227, - ERROR_NO_COMPAT_DRIVERS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x228, - ERROR_NO_DEVICE_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x229, - ERROR_INVALID_INF_LOGCONFIG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22A, - ERROR_DI_DONT_INSTALL = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22B, - ERROR_INVALID_FILTER_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22C, - ERROR_NON_WINDOWS_NT_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22D, - ERROR_NON_WINDOWS_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22E, - ERROR_NO_CATALOG_FOR_OEM_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22F, - ERROR_DEVINSTALL_QUEUE_NONNATIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x230, - ERROR_NOT_DISABLEABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x231, - ERROR_CANT_REMOVE_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x232 + ERROR_EXPECTED_SECTION_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0, + ERROR_BAD_SECTION_NAME_LINE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 1, + ERROR_SECTION_NAME_TOO_LONG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 2, + ERROR_GENERAL_SYNTAX = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 3, + ERROR_WRONG_INF_STYLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x100, + ERROR_NOT_INSTALLED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x1000, + ERROR_SECTION_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x101, + ERROR_LINE_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x102, + ERROR_NO_BACKUP = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x103, + ERROR_NO_ASSOCIATED_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x200, + ERROR_CLASS_MISMATCH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x201, + ERROR_DUPLICATE_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x202, + ERROR_NO_DRIVER_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x203, + ERROR_KEY_DOES_NOT_EXIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x204, + ERROR_INVALID_DEVINST_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x205, + ERROR_INVALID_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x206, + ERROR_DEVINST_ALREADY_EXISTS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x207, + ERROR_DEVINFO_NOT_REGISTERED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x208, + ERROR_INVALID_REG_PROPERTY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x209, + ERROR_NO_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20A, + ERROR_NO_SUCH_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20B, + ERROR_CANT_LOAD_CLASS_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20C, + ERROR_INVALID_CLASS_INSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20D, + ERROR_DI_DO_DEFAULT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20E, + ERROR_DI_NOFILECOPY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20F, + ERROR_INVALID_HWPROFILE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x210, + ERROR_NO_DEVICE_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x211, + ERROR_DEVINFO_LIST_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x212, + ERROR_DEVINFO_DATA_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x213, + ERROR_DI_BAD_PATH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x214, + ERROR_NO_CLASSINSTALL_PARAMS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x215, + ERROR_FILEQUEUE_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x216, + ERROR_BAD_SERVICE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x217, + ERROR_NO_CLASS_DRIVER_LIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x218, + ERROR_NO_ASSOCIATED_SERVICE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x219, + ERROR_NO_DEFAULT_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21A, + ERROR_DEVICE_INTERFACE_ACTIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21B, + ERROR_DEVICE_INTERFACE_REMOVED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21C, + ERROR_BAD_INTERFACE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21D, + ERROR_NO_SUCH_INTERFACE_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21E, + ERROR_INVALID_REFERENCE_STRING = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21F, + ERROR_INVALID_MACHINENAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x220, + ERROR_REMOTE_COMM_FAILURE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x221, + ERROR_MACHINE_UNAVAILABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x222, + ERROR_NO_CONFIGMGR_SERVICES = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x223, + ERROR_INVALID_PROPPAGE_PROVIDER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x224, + ERROR_NO_SUCH_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x225, + ERROR_DI_POSTPROCESSING_REQUIRED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x226, + ERROR_INVALID_COINSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x227, + ERROR_NO_COMPAT_DRIVERS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x228, + ERROR_NO_DEVICE_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x229, + ERROR_INVALID_INF_LOGCONFIG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22A, + ERROR_DI_DONT_INSTALL = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22B, + ERROR_INVALID_FILTER_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22C, + ERROR_NON_WINDOWS_NT_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22D, + ERROR_NON_WINDOWS_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22E, + ERROR_NO_CATALOG_FOR_OEM_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22F, + ERROR_DEVINSTALL_QUEUE_NONNATIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x230, + ERROR_NOT_DISABLEABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x231, + ERROR_CANT_REMOVE_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x232 } deprecated enum : DWORD { - ERROR_NO_DEFAULT_INTERFACE_DEVICE = ERROR_NO_DEFAULT_DEVICE_INTERFACE, - ERROR_INTERFACE_DEVICE_ACTIVE = ERROR_DEVICE_INTERFACE_ACTIVE, - ERROR_INTERFACE_DEVICE_REMOVED = ERROR_DEVICE_INTERFACE_REMOVED, - ERROR_NO_SUCH_INTERFACE_DEVICE = ERROR_NO_SUCH_DEVICE_INTERFACE, + ERROR_NO_DEFAULT_INTERFACE_DEVICE = ERROR_NO_DEFAULT_DEVICE_INTERFACE, + ERROR_INTERFACE_DEVICE_ACTIVE = ERROR_DEVICE_INTERFACE_ACTIVE, + ERROR_INTERFACE_DEVICE_REMOVED = ERROR_DEVICE_INTERFACE_REMOVED, + ERROR_NO_SUCH_INTERFACE_DEVICE = ERROR_NO_SUCH_DEVICE_INTERFACE, } enum : UINT { - FILEOP_COPY, - FILEOP_RENAME, - FILEOP_DELETE, - FILEOP_BACKUP, - FILEOP_NEWPATH, // = 4 - FILEOP_ABORT = 0, - FILEOP_DOIT, - FILEOP_SKIP, // = 2 - FILEOP_RETRY = FILEOP_DOIT + FILEOP_COPY, + FILEOP_RENAME, + FILEOP_DELETE, + FILEOP_BACKUP, + FILEOP_NEWPATH, // = 4 + FILEOP_ABORT = 0, + FILEOP_DOIT, + FILEOP_SKIP, // = 2 + FILEOP_RETRY = FILEOP_DOIT } enum : UINT { - FILE_COMPRESSION_NONE, - FILE_COMPRESSION_WINLZA, - FILE_COMPRESSION_MSZIP, - FILE_COMPRESSION_NTCAB // = 3 + FILE_COMPRESSION_NONE, + FILE_COMPRESSION_WINLZA, + FILE_COMPRESSION_MSZIP, + FILE_COMPRESSION_NTCAB // = 3 } enum : DWORD { - FLG_ADDREG_TYPE_SZ = 0x00000000, - FLG_ADDREG_BINVALUETYPE = 0x00000001, - FLG_ADDREG_NOCLOBBER = 0x00000002, - FLG_ADDREG_DELVAL = 0x00000004, - FLG_ADDREG_APPEND = 0x00000008, - FLG_ADDREG_KEYONLY = 0x00000010, - FLG_ADDREG_OVERWRITEONLY = 0x00000020, - FLG_ADDREG_TYPE_MULTI_SZ = 0x00010000, - FLG_ADDREG_TYPE_EXPAND_SZ = 0x00020000, - FLG_ADDREG_TYPE_BINARY = 0x00000000 | FLG_ADDREG_BINVALUETYPE, - FLG_ADDREG_TYPE_DWORD = 0x00010000 | FLG_ADDREG_BINVALUETYPE, - FLG_ADDREG_TYPE_NONE = 0x00020000 | FLG_ADDREG_BINVALUETYPE, - FLG_ADDREG_TYPE_MASK = 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE + FLG_ADDREG_TYPE_SZ = 0x00000000, + FLG_ADDREG_BINVALUETYPE = 0x00000001, + FLG_ADDREG_NOCLOBBER = 0x00000002, + FLG_ADDREG_DELVAL = 0x00000004, + FLG_ADDREG_APPEND = 0x00000008, + FLG_ADDREG_KEYONLY = 0x00000010, + FLG_ADDREG_OVERWRITEONLY = 0x00000020, + FLG_ADDREG_TYPE_MULTI_SZ = 0x00010000, + FLG_ADDREG_TYPE_EXPAND_SZ = 0x00020000, + FLG_ADDREG_TYPE_BINARY = 0x00000000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_DWORD = 0x00010000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_NONE = 0x00020000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_MASK = 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE } static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - FLG_ADDREG_64BITKEY = 0x00001000, - FLG_ADDREG_KEYONLY_COMMON = 0x00002000, - FLG_ADDREG_32BITKEY = 0x00004000, - FLG_ADDREG_DELREG_BIT = 0x00008000 - } + enum : DWORD { + FLG_ADDREG_64BITKEY = 0x00001000, + FLG_ADDREG_KEYONLY_COMMON = 0x00002000, + FLG_ADDREG_32BITKEY = 0x00004000, + FLG_ADDREG_DELREG_BIT = 0x00008000 + } } enum : DWORD { - FLG_DELREG_VALUE = 0x00000000 + FLG_DELREG_VALUE = 0x00000000 } static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - FLG_DELREG_TYPE_MASK = FLG_ADDREG_TYPE_MASK, - FLG_DELREG_TYPE_SZ = FLG_ADDREG_TYPE_SZ, - FLG_DELREG_TYPE_MULTI_SZ = FLG_ADDREG_TYPE_MULTI_SZ, - FLG_DELREG_TYPE_EXPAND_SZ = FLG_ADDREG_TYPE_EXPAND_SZ, - FLG_DELREG_TYPE_BINARY = FLG_ADDREG_TYPE_BINARY, - FLG_DELREG_TYPE_DWORD = FLG_ADDREG_TYPE_DWORD, - FLG_DELREG_TYPE_NONE = FLG_ADDREG_TYPE_NONE, - FLG_DELREG_64BITKEY = FLG_ADDREG_64BITKEY, - FLG_DELREG_KEYONLY_COMMON = FLG_ADDREG_KEYONLY_COMMON, - FLG_DELREG_32BITKEY = FLG_ADDREG_32BITKEY, - FLG_DELREG_OPERATION_MASK = 0x000000FE, - FLG_DELREG_MULTI_SZ_DELSTRING = 0x00000002 | FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT - } + enum : DWORD { + FLG_DELREG_TYPE_MASK = FLG_ADDREG_TYPE_MASK, + FLG_DELREG_TYPE_SZ = FLG_ADDREG_TYPE_SZ, + FLG_DELREG_TYPE_MULTI_SZ = FLG_ADDREG_TYPE_MULTI_SZ, + FLG_DELREG_TYPE_EXPAND_SZ = FLG_ADDREG_TYPE_EXPAND_SZ, + FLG_DELREG_TYPE_BINARY = FLG_ADDREG_TYPE_BINARY, + FLG_DELREG_TYPE_DWORD = FLG_ADDREG_TYPE_DWORD, + FLG_DELREG_TYPE_NONE = FLG_ADDREG_TYPE_NONE, + FLG_DELREG_64BITKEY = FLG_ADDREG_64BITKEY, + FLG_DELREG_KEYONLY_COMMON = FLG_ADDREG_KEYONLY_COMMON, + FLG_DELREG_32BITKEY = FLG_ADDREG_32BITKEY, + FLG_DELREG_OPERATION_MASK = 0x000000FE, + FLG_DELREG_MULTI_SZ_DELSTRING = 0x00000002 | FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT + } } enum : DWORD { - FLG_BITREG_CLEARBITS = 0x00000000, - FLG_BITREG_SETBITS = 0x00000001 + FLG_BITREG_CLEARBITS = 0x00000000, + FLG_BITREG_SETBITS = 0x00000001 } static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - FLG_BITREG_64BITKEY = 0x00001000, - FLG_BITREG_32BITKEY = 0x00004000 - } + enum : DWORD { + FLG_BITREG_64BITKEY = 0x00001000, + FLG_BITREG_32BITKEY = 0x00004000 + } } enum : DWORD { - FLG_PROFITEM_CURRENTUSER = 0x00000001, - FLG_PROFITEM_DELETE = 0x00000002, - FLG_PROFITEM_GROUP = 0x00000004, - FLG_PROFITEM_CSIDL = 0x00000008 + FLG_PROFITEM_CURRENTUSER = 0x00000001, + FLG_PROFITEM_DELETE = 0x00000002, + FLG_PROFITEM_GROUP = 0x00000004, + FLG_PROFITEM_CSIDL = 0x00000008 } enum : DWORD { - FLG_REGSVR_DLLREGISTER = 0x00000001, - FLG_REGSVR_DLLINSTALL = 0x00000002 + FLG_REGSVR_DLLREGISTER = 0x00000001, + FLG_REGSVR_DLLINSTALL = 0x00000002 } enum { - IDD_DYNAWIZ_FIRSTPAGE = 10000, - IDD_DYNAWIZ_SELECT_PREVPAGE, - IDD_DYNAWIZ_SELECT_NEXTPAGE, - IDD_DYNAWIZ_ANALYZE_PREVPAGE, - IDD_DYNAWIZ_ANALYZE_NEXTPAGE, // = 1004 - IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE = 10006, - IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE, - IDD_DYNAWIZ_INSTALLDETECTED_NODEVS, - IDD_DYNAWIZ_SELECTDEV_PAGE, - IDD_DYNAWIZ_ANALYZEDEV_PAGE, - IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE, - IDD_DYNAWIZ_SELECTCLASS_PAGE, // = 10012 - MIN_IDD_DYNAWIZ_RESOURCE_ID = 10000, - MAX_IDD_DYNAWIZ_RESOURCE_ID = 11000 + IDD_DYNAWIZ_FIRSTPAGE = 10000, + IDD_DYNAWIZ_SELECT_PREVPAGE, + IDD_DYNAWIZ_SELECT_NEXTPAGE, + IDD_DYNAWIZ_ANALYZE_PREVPAGE, + IDD_DYNAWIZ_ANALYZE_NEXTPAGE, // = 1004 + IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE = 10006, + IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE, + IDD_DYNAWIZ_INSTALLDETECTED_NODEVS, + IDD_DYNAWIZ_SELECTDEV_PAGE, + IDD_DYNAWIZ_ANALYZEDEV_PAGE, + IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE, + IDD_DYNAWIZ_SELECTCLASS_PAGE, // = 10012 + MIN_IDD_DYNAWIZ_RESOURCE_ID = 10000, + MAX_IDD_DYNAWIZ_RESOURCE_ID = 11000 } enum : DWORD { - IDF_NOBROWSE = 0x00000001, - IDF_NOSKIP = 0x00000002, - IDF_NODETAILS = 0x00000004, - IDF_NOCOMPRESSED = 0x00000008, - IDF_CHECKFIRST = 0x00000100, - IDF_NOBEEP = 0x00000200, - IDF_NOFOREGROUND = 0x00000400, - IDF_WARNIFSKIP = 0x00000800 + IDF_NOBROWSE = 0x00000001, + IDF_NOSKIP = 0x00000002, + IDF_NODETAILS = 0x00000004, + IDF_NOCOMPRESSED = 0x00000008, + IDF_CHECKFIRST = 0x00000100, + IDF_NOBEEP = 0x00000200, + IDF_NOFOREGROUND = 0x00000400, + IDF_WARNIFSKIP = 0x00000800 } static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - IDF_NOREMOVABLEMEDIAPROMPT = 0x00001000, - IDF_USEDISKNAMEASPROMPT = 0x00002000, - IDF_OEMDISK = 0x80000000 - } + enum : DWORD { + IDF_NOREMOVABLEMEDIAPROMPT = 0x00001000, + IDF_USEDISKNAMEASPROMPT = 0x00002000, + IDF_OEMDISK = 0x80000000 + } } enum { - IDI_RESOURCEFIRST = 159, - IDI_RESOURCE = 159, - IDI_RESOURCELAST = 161, - IDI_RESOURCEOVERLAYFIRST = 161, - IDI_RESOURCEOVERLAYLAST = 161, - IDI_CONFLICT = 161, - IDI_PROBLEM_OVL = 500, - IDI_DISABLED_OVL = 501, - IDI_FORCED_OVL = 502, - IDI_CLASSICON_OVERLAYFIRST = 500, - IDI_CLASSICON_OVERLAYLAST = 502 + IDI_RESOURCEFIRST = 159, + IDI_RESOURCE = 159, + IDI_RESOURCELAST = 161, + IDI_RESOURCEOVERLAYFIRST = 161, + IDI_RESOURCEOVERLAYLAST = 161, + IDI_CONFLICT = 161, + IDI_PROBLEM_OVL = 500, + IDI_DISABLED_OVL = 501, + IDI_FORCED_OVL = 502, + IDI_CLASSICON_OVERLAYFIRST = 500, + IDI_CLASSICON_OVERLAYLAST = 502 } enum : DWORD { - INF_STYLE_NONE = 0x00000000, - INF_STYLE_OLDNT = 0x00000001, - INF_STYLE_WIN4 = 0x00000002, - INF_STYLE_CACHE_ENABLE = 0x00000010, - INF_STYLE_CACHE_DISABLE = 0x00000020 + INF_STYLE_NONE = 0x00000000, + INF_STYLE_OLDNT = 0x00000001, + INF_STYLE_WIN4 = 0x00000002, + INF_STYLE_CACHE_ENABLE = 0x00000010, + INF_STYLE_CACHE_DISABLE = 0x00000020 } enum : DWORD { - INFINFO_INF_SPEC_IS_HINF = 1, - INFINFO_INF_NAME_IS_ABSOLUTE, - INFINFO_DEFAULT_SEARCH, - INFINFO_REVERSE_DEFAULT_SEARCH, - INFINFO_INF_PATH_LIST_SEARCH // = 5 + INFINFO_INF_SPEC_IS_HINF = 1, + INFINFO_INF_NAME_IS_ABSOLUTE, + INFINFO_DEFAULT_SEARCH, + INFINFO_REVERSE_DEFAULT_SEARCH, + INFINFO_INF_PATH_LIST_SEARCH // = 5 } alias DWORD LogSeverity; enum : LogSeverity { - LogSevInformation, - LogSevWarning, - LogSevError, - LogSevFatalError, - LogSevMaximum // = 4 + LogSevInformation, + LogSevWarning, + LogSevError, + LogSevFatalError, + LogSevMaximum // = 4 } const MAX_INSTALLWIZARD_DYNAPAGES = 20; enum : DWORD { - NDW_INSTALLFLAG_DIDFACTDEFS = 0x00000001, - NDW_INSTALLFLAG_HARDWAREALLREADYIN = 0x00000002, - NDW_INSTALLFLAG_NEEDSHUTDOWN = 0x00000200, - NDW_INSTALLFLAG_EXPRESSINTRO = 0x00000400, - NDW_INSTALLFLAG_SKIPISDEVINSTALLED = 0x00000800, - NDW_INSTALLFLAG_NODETECTEDDEVS = 0x00001000, - NDW_INSTALLFLAG_INSTALLSPECIFIC = 0x00002000, - NDW_INSTALLFLAG_SKIPCLASSLIST = 0x00004000, - NDW_INSTALLFLAG_CI_PICKED_OEM = 0x00008000, - NDW_INSTALLFLAG_PCMCIAMODE = 0x00010000, - NDW_INSTALLFLAG_PCMCIADEVICE = 0x00020000, - NDW_INSTALLFLAG_USERCANCEL = 0x00040000, - NDW_INSTALLFLAG_KNOWNCLASS = 0x00080000, - NDW_INSTALLFLAG_NEEDRESTART = 0x00000080, - NDW_INSTALLFLAG_NEEDREBOOT = 0x00000100 + NDW_INSTALLFLAG_DIDFACTDEFS = 0x00000001, + NDW_INSTALLFLAG_HARDWAREALLREADYIN = 0x00000002, + NDW_INSTALLFLAG_NEEDSHUTDOWN = 0x00000200, + NDW_INSTALLFLAG_EXPRESSINTRO = 0x00000400, + NDW_INSTALLFLAG_SKIPISDEVINSTALLED = 0x00000800, + NDW_INSTALLFLAG_NODETECTEDDEVS = 0x00001000, + NDW_INSTALLFLAG_INSTALLSPECIFIC = 0x00002000, + NDW_INSTALLFLAG_SKIPCLASSLIST = 0x00004000, + NDW_INSTALLFLAG_CI_PICKED_OEM = 0x00008000, + NDW_INSTALLFLAG_PCMCIAMODE = 0x00010000, + NDW_INSTALLFLAG_PCMCIADEVICE = 0x00020000, + NDW_INSTALLFLAG_USERCANCEL = 0x00040000, + NDW_INSTALLFLAG_KNOWNCLASS = 0x00080000, + NDW_INSTALLFLAG_NEEDRESTART = 0x00000080, + NDW_INSTALLFLAG_NEEDREBOOT = 0x00000100 } enum : DWORD { - SETDIRID_NOT_FULL_PATH = 0x00000001 + SETDIRID_NOT_FULL_PATH = 0x00000001 } enum : DWORD { - SP_COPY_DELETESOURCE = 0x0000001, - SP_COPY_REPLACEONLY = 0x0000002, - SP_COPY_NEWER = 0x0000004, - SP_COPY_NEWER_OR_SAME = 0x0000004, - SP_COPY_NOOVERWRITE = 0x0000008, - SP_COPY_NODECOMP = 0x0000010, - SP_COPY_LANGUAGEAWARE = 0x0000020, - SP_COPY_SOURCE_ABSOLUTE = 0x0000040, - SP_COPY_SOURCEPATH_ABSOLUTE = 0x0000080, - SP_COPY_IN_USE_NEEDS_REBOOT = 0x0000100, - SP_COPY_FORCE_IN_USE = 0x0000200, - SP_COPY_NOSKIP = 0x0000400, - SP_FLAG_CABINETCONTINUATION = 0x0000800, - SP_COPY_FORCE_NOOVERWRITE = 0x0001000, - SP_COPY_FORCE_NEWER = 0x0002000, - SP_COPY_WARNIFSKIP = 0x0004000, - SP_COPY_NOBROWSE = 0x0008000, - SP_COPY_NEWER_ONLY = 0x0010000, - SP_COPY_SOURCE_SIS_MASTER = 0x0020000, - SP_COPY_OEMINF_CATALOG_ONLY = 0x0040000, - SP_COPY_REPLACE_BOOT_FILE = 0x0080000, - SP_COPY_NOPRUNE = 0x0100000 + SP_COPY_DELETESOURCE = 0x0000001, + SP_COPY_REPLACEONLY = 0x0000002, + SP_COPY_NEWER = 0x0000004, + SP_COPY_NEWER_OR_SAME = 0x0000004, + SP_COPY_NOOVERWRITE = 0x0000008, + SP_COPY_NODECOMP = 0x0000010, + SP_COPY_LANGUAGEAWARE = 0x0000020, + SP_COPY_SOURCE_ABSOLUTE = 0x0000040, + SP_COPY_SOURCEPATH_ABSOLUTE = 0x0000080, + SP_COPY_IN_USE_NEEDS_REBOOT = 0x0000100, + SP_COPY_FORCE_IN_USE = 0x0000200, + SP_COPY_NOSKIP = 0x0000400, + SP_FLAG_CABINETCONTINUATION = 0x0000800, + SP_COPY_FORCE_NOOVERWRITE = 0x0001000, + SP_COPY_FORCE_NEWER = 0x0002000, + SP_COPY_WARNIFSKIP = 0x0004000, + SP_COPY_NOBROWSE = 0x0008000, + SP_COPY_NEWER_ONLY = 0x0010000, + SP_COPY_SOURCE_SIS_MASTER = 0x0020000, + SP_COPY_OEMINF_CATALOG_ONLY = 0x0040000, + SP_COPY_REPLACE_BOOT_FILE = 0x0080000, + SP_COPY_NOPRUNE = 0x0100000 } static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - SP_COPY_OEM_F6_INF = 0x0200000 - } + enum : DWORD { + SP_COPY_OEM_F6_INF = 0x0200000 + } } enum : DWORD { - SPCRP_SECURITY = 23, - SPCRP_SECURITY_SDS, - SPCRP_DEVTYPE, - SPCRP_EXCLUSIVE, - SPCRP_CHARACTERISTICS, - SPCRP_MAXIMUM_PROPERTY // = 28 + SPCRP_SECURITY = 23, + SPCRP_SECURITY_SDS, + SPCRP_DEVTYPE, + SPCRP_EXCLUSIVE, + SPCRP_CHARACTERISTICS, + SPCRP_MAXIMUM_PROPERTY // = 28 } enum : DWORD { - SPDIT_NODRIVER, - SPDIT_CLASSDRIVER, - SPDIT_COMPATDRIVER // = 2 + SPDIT_NODRIVER, + SPDIT_CLASSDRIVER, + SPDIT_COMPATDRIVER // = 2 } enum : DWORD { - SPDRP_DEVICEDESC, - SPDRP_HARDWAREID, - SPDRP_COMPATIBLEIDS, - SPDRP_UNUSED0, - SPDRP_SERVICE, - SPDRP_UNUSED1, - SPDRP_UNUSED2, - SPDRP_CLASS, - SPDRP_CLASSGUID, - SPDRP_DRIVER, - SPDRP_CONFIGFLAGS, - SPDRP_MFG, - SPDRP_FRIENDLYNAME, - SPDRP_LOCATION_INFORMATION, - SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, - SPDRP_CAPABILITIES, - SPDRP_UI_NUMBER, - SPDRP_UPPERFILTERS, - SPDRP_LOWERFILTERS, - SPDRP_BUSTYPEGUID, - SPDRP_LEGACYBUSTYPE, - SPDRP_BUSNUMBER, - SPDRP_ENUMERATOR_NAME, - SPDRP_SECURITY, - SPDRP_SECURITY_SDS, - SPDRP_DEVTYPE, - SPDRP_EXCLUSIVE, - SPDRP_CHARACTERISTICS, - SPDRP_ADDRESS, // = 28 - SPDRP_UI_NUMBER_DESC_FORMAT = 30, - SPDRP_MAXIMUM_PROPERTY = 31 + SPDRP_DEVICEDESC, + SPDRP_HARDWAREID, + SPDRP_COMPATIBLEIDS, + SPDRP_UNUSED0, + SPDRP_SERVICE, + SPDRP_UNUSED1, + SPDRP_UNUSED2, + SPDRP_CLASS, + SPDRP_CLASSGUID, + SPDRP_DRIVER, + SPDRP_CONFIGFLAGS, + SPDRP_MFG, + SPDRP_FRIENDLYNAME, + SPDRP_LOCATION_INFORMATION, + SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, + SPDRP_CAPABILITIES, + SPDRP_UI_NUMBER, + SPDRP_UPPERFILTERS, + SPDRP_LOWERFILTERS, + SPDRP_BUSTYPEGUID, + SPDRP_LEGACYBUSTYPE, + SPDRP_BUSNUMBER, + SPDRP_ENUMERATOR_NAME, + SPDRP_SECURITY, + SPDRP_SECURITY_SDS, + SPDRP_DEVTYPE, + SPDRP_EXCLUSIVE, + SPDRP_CHARACTERISTICS, + SPDRP_ADDRESS, // = 28 + SPDRP_UI_NUMBER_DESC_FORMAT = 30, + SPDRP_MAXIMUM_PROPERTY = 31 } enum : UINT { - SPDSL_IGNORE_DISK = 1, - SPDSL_DISALLOW_NEGATIVE_ADJUST + SPDSL_IGNORE_DISK = 1, + SPDSL_DISALLOW_NEGATIVE_ADJUST } enum : UINT { - SPFILENOTIFY_STARTQUEUE = 1, - SPFILENOTIFY_ENDQUEUE, - SPFILENOTIFY_STARTSUBQUEUE, - SPFILENOTIFY_ENDSUBQUEUE, - SPFILENOTIFY_STARTDELETE, - SPFILENOTIFY_ENDDELETE, - SPFILENOTIFY_DELETEERROR, - SPFILENOTIFY_STARTRENAME, - SPFILENOTIFY_ENDRENAME, - SPFILENOTIFY_RENAMEERROR, - SPFILENOTIFY_STARTCOPY, - SPFILENOTIFY_ENDCOPY, - SPFILENOTIFY_COPYERROR, - SPFILENOTIFY_NEEDMEDIA, - SPFILENOTIFY_QUEUESCAN, - SPFILENOTIFY_CABINETINFO, - SPFILENOTIFY_FILEINCABINET, - SPFILENOTIFY_NEEDNEWCABINET, - SPFILENOTIFY_FILEEXTRACTED, - SPFILENOTIFY_FILEOPDELAYED, - SPFILENOTIFY_STARTBACKUP, - SPFILENOTIFY_BACKUPERROR, - SPFILENOTIFY_ENDBACKUP, - SPFILENOTIFY_QUEUESCAN_EX, - SPFILENOTIFY_STARTREGISTRATION, // = 25 - SPFILENOTIFY_ENDREGISTRATION = 32, - SPFILENOTIFY_LANGMISMATCH = 0x00010000, - SPFILENOTIFY_TARGETEXISTS = 0x00020000, - SPFILENOTIFY_TARGETNEWER = 0x00040000 + SPFILENOTIFY_STARTQUEUE = 1, + SPFILENOTIFY_ENDQUEUE, + SPFILENOTIFY_STARTSUBQUEUE, + SPFILENOTIFY_ENDSUBQUEUE, + SPFILENOTIFY_STARTDELETE, + SPFILENOTIFY_ENDDELETE, + SPFILENOTIFY_DELETEERROR, + SPFILENOTIFY_STARTRENAME, + SPFILENOTIFY_ENDRENAME, + SPFILENOTIFY_RENAMEERROR, + SPFILENOTIFY_STARTCOPY, + SPFILENOTIFY_ENDCOPY, + SPFILENOTIFY_COPYERROR, + SPFILENOTIFY_NEEDMEDIA, + SPFILENOTIFY_QUEUESCAN, + SPFILENOTIFY_CABINETINFO, + SPFILENOTIFY_FILEINCABINET, + SPFILENOTIFY_NEEDNEWCABINET, + SPFILENOTIFY_FILEEXTRACTED, + SPFILENOTIFY_FILEOPDELAYED, + SPFILENOTIFY_STARTBACKUP, + SPFILENOTIFY_BACKUPERROR, + SPFILENOTIFY_ENDBACKUP, + SPFILENOTIFY_QUEUESCAN_EX, + SPFILENOTIFY_STARTREGISTRATION, // = 25 + SPFILENOTIFY_ENDREGISTRATION = 32, + SPFILENOTIFY_LANGMISMATCH = 0x00010000, + SPFILENOTIFY_TARGETEXISTS = 0x00020000, + SPFILENOTIFY_TARGETNEWER = 0x00040000 } static if(_SETUPAPI_VER >= 0x0501) { - enum : UINT { - SPFILENOTIFY_QUEUESCAN_SIGNERINFO = 0x00000040 - } + enum : UINT { + SPFILENOTIFY_QUEUESCAN_SIGNERINFO = 0x00000040 + } } enum : DWORD { - SPFILELOG_SYSTEMLOG = 0x00000001, - SPFILELOG_OEMFILE = 0x00000001, - SPFILELOG_FORCENEW = 0x00000002, - SPFILELOG_QUERYONLY = 0x00000004 + SPFILELOG_SYSTEMLOG = 0x00000001, + SPFILELOG_OEMFILE = 0x00000001, + SPFILELOG_FORCENEW = 0x00000002, + SPFILELOG_QUERYONLY = 0x00000004 } enum : INT { - SPFILEQ_FILE_IN_USE = 0x00000001, - SPFILEQ_REBOOT_RECOMMENDED = 0x00000002, - SPFILEQ_REBOOT_IN_PROGRESS = 0x00000004 + SPFILEQ_FILE_IN_USE = 0x00000001, + SPFILEQ_REBOOT_RECOMMENDED = 0x00000002, + SPFILEQ_REBOOT_IN_PROGRESS = 0x00000004 } enum : DWORD { - SPINT_ACTIVE = 0x00000001, - SPINT_DEFAULT = 0x00000002, - SPINT_REMOVED = 0x00000004 + SPINT_ACTIVE = 0x00000001, + SPINT_DEFAULT = 0x00000002, + SPINT_REMOVED = 0x00000004 } deprecated enum : DWORD { - SPID_ACTIVE = SPINT_ACTIVE, - SPID_DEFAULT = SPINT_DEFAULT, - SPID_REMOVED = SPINT_REMOVED + SPID_ACTIVE = SPINT_ACTIVE, + SPID_DEFAULT = SPINT_DEFAULT, + SPID_REMOVED = SPINT_REMOVED } enum : UINT { - SPINST_LOGCONFIG = 0x00000001, - SPINST_INIFILES = 0x00000002, - SPINST_REGISTRY = 0x00000004, - SPINST_INI2REG = 0x00000008, - SPINST_FILES = 0x00000010, - SPINST_BITREG = 0x00000020, - SPINST_REGSVR = 0x00000040, - SPINST_UNREGSVR = 0x00000080, - SPINST_PROFILEITEMS = 0x00000100, - SPINST_SINGLESECTION = 0x00010000, - SPINST_LOGCONFIG_IS_FORCED = 0x00020000, - SPINST_LOGCONFIGS_ARE_OVERRIDES = 0x00040000 + SPINST_LOGCONFIG = 0x00000001, + SPINST_INIFILES = 0x00000002, + SPINST_REGISTRY = 0x00000004, + SPINST_INI2REG = 0x00000008, + SPINST_FILES = 0x00000010, + SPINST_BITREG = 0x00000020, + SPINST_REGSVR = 0x00000040, + SPINST_UNREGSVR = 0x00000080, + SPINST_PROFILEITEMS = 0x00000100, + SPINST_SINGLESECTION = 0x00010000, + SPINST_LOGCONFIG_IS_FORCED = 0x00020000, + SPINST_LOGCONFIGS_ARE_OVERRIDES = 0x00040000 } static if(_SETUPAPI_VER >= 0x0501) { - enum : UINT { - SPINST_COPYINF = 0x00000200, - SPINST_ALL = 0x000003ff, - SPINST_REGISTERCALLBACKAWARE = 0x00080000 - } + enum : UINT { + SPINST_COPYINF = 0x00000200, + SPINST_ALL = 0x000003ff, + SPINST_REGISTERCALLBACKAWARE = 0x00080000 + } } else { - enum : UINT { - SPINST_ALL = 0x000001ff - } + enum : UINT { + SPINST_ALL = 0x000001ff + } } enum : DWORD { - SPOST_NONE, - SPOST_PATH, - SPOST_URL, - SPOST_MAX // = 3 + SPOST_NONE, + SPOST_PATH, + SPOST_URL, + SPOST_MAX // = 3 } enum : DWORD { - SPPSR_SELECT_DEVICE_RESOURCES = 1, - SPPSR_ENUM_BASIC_DEVICE_PROPERTIES, - SPPSR_ENUM_ADV_DEVICE_PROPERTIES + SPPSR_SELECT_DEVICE_RESOURCES = 1, + SPPSR_ENUM_BASIC_DEVICE_PROPERTIES, + SPPSR_ENUM_ADV_DEVICE_PROPERTIES } enum : DWORD { - SPQ_SCAN_FILE_PRESENCE = 0x00000001, - SPQ_SCAN_FILE_VALIDITY = 0x00000002, - SPQ_SCAN_USE_CALLBACK = 0x00000004, - SPQ_SCAN_USE_CALLBACKEX = 0x00000008, - SPQ_SCAN_INFORM_USER = 0x00000010, - SPQ_SCAN_PRUNE_COPY_QUEUE = 0x00000020 + SPQ_SCAN_FILE_PRESENCE = 0x00000001, + SPQ_SCAN_FILE_VALIDITY = 0x00000002, + SPQ_SCAN_USE_CALLBACK = 0x00000004, + SPQ_SCAN_USE_CALLBACKEX = 0x00000008, + SPQ_SCAN_INFORM_USER = 0x00000010, + SPQ_SCAN_PRUNE_COPY_QUEUE = 0x00000020 } static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - SPQ_SCAN_USE_CALLBACK_SIGNERINFO = 0x00000040, - SPQ_SCAN_PRUNE_DELREN = 0x00000080 - } + enum : DWORD { + SPQ_SCAN_USE_CALLBACK_SIGNERINFO = 0x00000040, + SPQ_SCAN_PRUNE_DELREN = 0x00000080 + } } enum : UINT_PTR { - SPQ_DELAYED_COPY = 0x00000001 + SPQ_DELAYED_COPY = 0x00000001 } enum : DWORD { - SPRDI_FIND_DUPS = 0x00000001, + SPRDI_FIND_DUPS = 0x00000001, } enum : DWORD { - SPSVCINST_TAGTOFRONT = 0x00000001, - SPSVCINST_ASSOCSERVICE = 0x00000002, - SPSVCINST_DELETEEVENTLOGENTRY = 0x00000004, - SPSVCINST_NOCLOBBER_DISPLAYNAME = 0x00000008, - SPSVCINST_NOCLOBBER_STARTTYPE = 0x00000010, - SPSVCINST_NOCLOBBER_ERRORCONTROL = 0x00000020, - SPSVCINST_NOCLOBBER_LOADORDERGROUP = 0x00000040, - SPSVCINST_NOCLOBBER_DEPENDENCIES = 0x00000080, - SPSVCINST_NOCLOBBER_DESCRIPTION = 0x00000100, - SPSVCINST_STOPSERVICE = 0x00000200 + SPSVCINST_TAGTOFRONT = 0x00000001, + SPSVCINST_ASSOCSERVICE = 0x00000002, + SPSVCINST_DELETEEVENTLOGENTRY = 0x00000004, + SPSVCINST_NOCLOBBER_DISPLAYNAME = 0x00000008, + SPSVCINST_NOCLOBBER_STARTTYPE = 0x00000010, + SPSVCINST_NOCLOBBER_ERRORCONTROL = 0x00000020, + SPSVCINST_NOCLOBBER_LOADORDERGROUP = 0x00000040, + SPSVCINST_NOCLOBBER_DEPENDENCIES = 0x00000080, + SPSVCINST_NOCLOBBER_DESCRIPTION = 0x00000100, + SPSVCINST_STOPSERVICE = 0x00000200 } static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - SPSVCINST_CLOBBER_SECURITY = 0x00000400 - } + enum : DWORD { + SPSVCINST_CLOBBER_SECURITY = 0x00000400 + } } enum : DWORD { - SPWPT_SELECTDEVICE = 0x00000001 + SPWPT_SELECTDEVICE = 0x00000001 } enum : DWORD { - SPWP_USE_DEVINFO_DATA = 0x00000001 + SPWP_USE_DEVINFO_DATA = 0x00000001 } enum : UINT { - SRCINFO_PATH = 1, - SRCINFO_TAGFILE, - SRCINFO_DESCRIPTION, - SRCINFO_FLAGS // = 4 + SRCINFO_PATH = 1, + SRCINFO_TAGFILE, + SRCINFO_DESCRIPTION, + SRCINFO_FLAGS // = 4 } enum : DWORD { - SRCLIST_TEMPORARY = 0x00000001, - SRCLIST_NOBROWSE = 0x00000002, - SRCLIST_SYSTEM = 0x00000010, - SRCLIST_USER = 0x00000020, - SRCLIST_SYSIFADMIN = 0x00000040, - SRCLIST_SUBDIRS = 0x00000100, - SRCLIST_APPEND = 0x00000200, - SRCLIST_NOSTRIPPLATFORM = 0x00000400 + SRCLIST_TEMPORARY = 0x00000001, + SRCLIST_NOBROWSE = 0x00000002, + SRCLIST_SYSTEM = 0x00000010, + SRCLIST_USER = 0x00000020, + SRCLIST_SYSIFADMIN = 0x00000040, + SRCLIST_SUBDIRS = 0x00000100, + SRCLIST_APPEND = 0x00000200, + SRCLIST_NOSTRIPPLATFORM = 0x00000400 } alias PVOID HINF; @@ -860,193 +860,193 @@ alias PVOID HSPFILEQ; alias PVOID HSPFILELOG; enum SetupFileLogInfo { - SetupFileLogSourceFilename, - SetupFileLogChecksum, - SetupFileLogDiskTagfile, - SetupFileLogDiskDescription, - SetupFileLogOtherInfo, - SetupFileLogMax + SetupFileLogSourceFilename, + SetupFileLogChecksum, + SetupFileLogDiskTagfile, + SetupFileLogDiskDescription, + SetupFileLogOtherInfo, + SetupFileLogMax } align(1): struct INFCONTEXT { - PVOID Inf; - PVOID CurrentInf; - UINT Section; - UINT Line; + PVOID Inf; + PVOID CurrentInf; + UINT Section; + UINT Line; } alias INFCONTEXT* PINFCONTEXT; struct SP_INF_INFORMATION { - DWORD InfStyle; - DWORD InfCount; - BYTE[1] _VersionData; - BYTE* VersionData() { return _VersionData.ptr; } + DWORD InfStyle; + DWORD InfCount; + BYTE[1] _VersionData; + BYTE* VersionData() { return _VersionData.ptr; } } alias SP_INF_INFORMATION* PSP_INF_INFORMATION; struct SP_ALTPLATFORM_INFO { - DWORD cbSize = SP_ALTPLATFORM_INFO.sizeof; - DWORD Platform; - DWORD MajorVersion; - DWORD MinorVersion; - WORD ProcessorArchitecture; - WORD Reserved; + DWORD cbSize = SP_ALTPLATFORM_INFO.sizeof; + DWORD Platform; + DWORD MajorVersion; + DWORD MinorVersion; + WORD ProcessorArchitecture; + WORD Reserved; } alias SP_ALTPLATFORM_INFO* PSP_ALTPLATFORM_INFO; struct SP_ORIGINAL_FILE_INFO_A { - DWORD cbSize = SP_ORIGINAL_FILE_INFO_A.sizeof; - CHAR[MAX_PATH] OriginalInfName; - CHAR[MAX_PATH] OriginalCatalogName; + DWORD cbSize = SP_ORIGINAL_FILE_INFO_A.sizeof; + CHAR[MAX_PATH] OriginalInfName; + CHAR[MAX_PATH] OriginalCatalogName; } alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO_A; struct SP_ORIGINAL_FILE_INFO_W { - DWORD cbSize = SP_ORIGINAL_FILE_INFO_W.sizeof; - WCHAR[MAX_PATH] OriginalInfName; - WCHAR[MAX_PATH] OriginalCatalogName; + DWORD cbSize = SP_ORIGINAL_FILE_INFO_W.sizeof; + WCHAR[MAX_PATH] OriginalInfName; + WCHAR[MAX_PATH] OriginalCatalogName; } alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO_W; struct FILEPATHS_A { - PCSTR Target; - PCSTR Source; - UINT Win32Error; - DWORD Flags; + PCSTR Target; + PCSTR Source; + UINT Win32Error; + DWORD Flags; } alias FILEPATHS_A* PFILEPATHS_A; struct FILEPATHS_W { - PCWSTR Target; - PCWSTR Source; - UINT Win32Error; - DWORD Flags; + PCWSTR Target; + PCWSTR Source; + UINT Win32Error; + DWORD Flags; } alias FILEPATHS_W* PFILEPATHS_W; struct SOURCE_MEDIA_A { - PCSTR Reserved; - PCSTR Tagfile; - PCSTR Description; - PCSTR SourcePath; - PCSTR SourceFile; - DWORD Flags; + PCSTR Reserved; + PCSTR Tagfile; + PCSTR Description; + PCSTR SourcePath; + PCSTR SourceFile; + DWORD Flags; } alias SOURCE_MEDIA_A* PSOURCE_MEDIA_A; struct SOURCE_MEDIA_W { - PCWSTR Reserved; - PCWSTR Tagfile; - PCWSTR Description; - PCWSTR SourcePath; - PCWSTR SourceFile; - DWORD Flags; + PCWSTR Reserved; + PCWSTR Tagfile; + PCWSTR Description; + PCWSTR SourcePath; + PCWSTR SourceFile; + DWORD Flags; } alias SOURCE_MEDIA_W* PSOURCE_MEDIA_W; struct CABINET_INFO_A { - PCSTR CabinetPath; - PCSTR CabinetFile; - PCSTR DiskName; - USHORT SetId; - USHORT CabinetNumber; + PCSTR CabinetPath; + PCSTR CabinetFile; + PCSTR DiskName; + USHORT SetId; + USHORT CabinetNumber; } alias CABINET_INFO_A* PCABINET_INFO_A; struct CABINET_INFO_W { - PCWSTR CabinetPath; - PCWSTR CabinetFile; - PCWSTR DiskName; - USHORT SetId; - USHORT CabinetNumber; + PCWSTR CabinetPath; + PCWSTR CabinetFile; + PCWSTR DiskName; + USHORT SetId; + USHORT CabinetNumber; } alias CABINET_INFO_W* PCABINET_INFO_W; struct FILE_IN_CABINET_INFO_A { - PCSTR NameInCabinet; - DWORD FileSize; - DWORD Win32Error; - WORD DosDate; - WORD DosTime; - WORD DosAttribs; - CHAR[MAX_PATH] FullTargetName; + PCSTR NameInCabinet; + DWORD FileSize; + DWORD Win32Error; + WORD DosDate; + WORD DosTime; + WORD DosAttribs; + CHAR[MAX_PATH] FullTargetName; } alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO_A; struct FILE_IN_CABINET_INFO_W { - PCWSTR NameInCabinet; - DWORD FileSize; - DWORD Win32Error; - WORD DosDate; - WORD DosTime; - WORD DosAttribs; - WCHAR[MAX_PATH] FullTargetName; + PCWSTR NameInCabinet; + DWORD FileSize; + DWORD Win32Error; + WORD DosDate; + WORD DosTime; + WORD DosAttribs; + WCHAR[MAX_PATH] FullTargetName; } alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO_W; struct SP_FILE_COPY_PARAMS_A { - DWORD cbSize = SP_FILE_COPY_PARAMS_A.sizeof; - HSPFILEQ QueueHandle; - PCSTR SourceRootPath; - PCSTR SourcePath; - PCSTR SourceFilename; - PCSTR SourceDescription; - PCSTR SourceTagfile; - PCSTR TargetDirectory; - PCSTR TargetFilename; - DWORD CopyStyle; - HINF LayoutInf; - PCSTR SecurityDescriptor; + DWORD cbSize = SP_FILE_COPY_PARAMS_A.sizeof; + HSPFILEQ QueueHandle; + PCSTR SourceRootPath; + PCSTR SourcePath; + PCSTR SourceFilename; + PCSTR SourceDescription; + PCSTR SourceTagfile; + PCSTR TargetDirectory; + PCSTR TargetFilename; + DWORD CopyStyle; + HINF LayoutInf; + PCSTR SecurityDescriptor; } alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS_A; struct SP_FILE_COPY_PARAMS_W { - DWORD cbSize = SP_FILE_COPY_PARAMS_W.sizeof; - HSPFILEQ QueueHandle; - PCWSTR SourceRootPath; - PCWSTR SourcePath; - PCWSTR SourceFilename; - PCWSTR SourceDescription; - PCWSTR SourceTagfile; - PCWSTR TargetDirectory; - PCWSTR TargetFilename; - DWORD CopyStyle; - HINF LayoutInf; - PCWSTR SecurityDescriptor; + DWORD cbSize = SP_FILE_COPY_PARAMS_W.sizeof; + HSPFILEQ QueueHandle; + PCWSTR SourceRootPath; + PCWSTR SourcePath; + PCWSTR SourceFilename; + PCWSTR SourceDescription; + PCWSTR SourceTagfile; + PCWSTR TargetDirectory; + PCWSTR TargetFilename; + DWORD CopyStyle; + HINF LayoutInf; + PCWSTR SecurityDescriptor; } alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS_W; struct SP_DEVINFO_DATA { - DWORD cbSize = SP_DEVINFO_DATA.sizeof; - GUID ClassGuid; - DWORD DevInst; - ULONG_PTR Reserved; + DWORD cbSize = SP_DEVINFO_DATA.sizeof; + GUID ClassGuid; + DWORD DevInst; + ULONG_PTR Reserved; } alias SP_DEVINFO_DATA* PSP_DEVINFO_DATA; struct SP_DEVICE_INTERFACE_DATA { - DWORD cbSize = SP_DEVICE_INTERFACE_DATA.sizeof; - GUID InterfaceClassGuid; - DWORD Flags; - ULONG_PTR Reserved; + DWORD cbSize = SP_DEVICE_INTERFACE_DATA.sizeof; + GUID InterfaceClassGuid; + DWORD Flags; + ULONG_PTR Reserved; } alias SP_DEVICE_INTERFACE_DATA* PSP_DEVICE_INTERFACE_DATA; deprecated alias SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA; deprecated alias SP_DEVICE_INTERFACE_DATA* PSP_INTERFACE_DEVICE_DATA; struct SP_DEVICE_INTERFACE_DETAIL_DATA_A { - DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_A.sizeof; - CHAR[1] _DevicePath; - CHAR* DevicePath() { return _DevicePath.ptr; } + DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_A.sizeof; + CHAR[1] _DevicePath; + CHAR* DevicePath() { return _DevicePath.ptr; } } alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA_A; struct SP_DEVICE_INTERFACE_DETAIL_DATA_W { - DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_W.sizeof; - WCHAR[1] _DevicePath; - WCHAR* DevicePath() { return _DevicePath.ptr; } + DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_W.sizeof; + WCHAR[1] _DevicePath; + WCHAR* DevicePath() { return _DevicePath.ptr; } } alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA_W; @@ -1056,18 +1056,18 @@ deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DA deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA_W; struct SP_DEVINFO_LIST_DETAIL_DATA_A { - DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_A.sizeof; - GUID ClassGuid; - HANDLE RemoteMachineHandle; - CHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; + DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_A.sizeof; + GUID ClassGuid; + HANDLE RemoteMachineHandle; + CHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; } alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA_A; struct SP_DEVINFO_LIST_DETAIL_DATA_W { - DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_W.sizeof; - GUID ClassGuid; - HANDLE RemoteMachineHandle; - WCHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; + DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_W.sizeof; + GUID ClassGuid; + HANDLE RemoteMachineHandle; + WCHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; } alias SP_DEVINFO_LIST_DETAIL_DATA_W* PSP_DEVINFO_LIST_DETAIL_DATA_W; @@ -1075,904 +1075,904 @@ extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CA extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_W; struct SP_DEVINSTALL_PARAMS_A { - DWORD cbSize = SP_DEVINSTALL_PARAMS_A.sizeof; - DWORD Flags; - DWORD FlagsEx; - HWND hwndParent; - PSP_FILE_CALLBACK_A InstallMsgHandler; - PVOID InstallMsgHandlerContext; - HSPFILEQ FileQueue; - ULONG_PTR ClassInstallReserved; - DWORD Reserved; - CHAR[MAX_PATH] DriverPath; + DWORD cbSize = SP_DEVINSTALL_PARAMS_A.sizeof; + DWORD Flags; + DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK_A InstallMsgHandler; + PVOID InstallMsgHandlerContext; + HSPFILEQ FileQueue; + ULONG_PTR ClassInstallReserved; + DWORD Reserved; + CHAR[MAX_PATH] DriverPath; } alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS_A; struct SP_DEVINSTALL_PARAMS_W { - DWORD cbSize = SP_DEVINSTALL_PARAMS_W.sizeof; - DWORD Flags; - DWORD FlagsEx; - HWND hwndParent; - PSP_FILE_CALLBACK_W InstallMsgHandler; - PVOID InstallMsgHandlerContext; - HSPFILEQ FileQueue; - ULONG_PTR ClassInstallReserved; - DWORD Reserved; - WCHAR[MAX_PATH] DriverPath; + DWORD cbSize = SP_DEVINSTALL_PARAMS_W.sizeof; + DWORD Flags; + DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK_W InstallMsgHandler; + PVOID InstallMsgHandlerContext; + HSPFILEQ FileQueue; + ULONG_PTR ClassInstallReserved; + DWORD Reserved; + WCHAR[MAX_PATH] DriverPath; } alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS_W; struct SP_CLASSINSTALL_HEADER { - DWORD cbSize = SP_CLASSINSTALL_HEADER.sizeof; - DI_FUNCTION InstallFunction; + DWORD cbSize = SP_CLASSINSTALL_HEADER.sizeof; + DI_FUNCTION InstallFunction; } alias SP_CLASSINSTALL_HEADER* PSP_CLASSINSTALL_HEADER; struct SP_ENABLECLASS_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - GUID ClassGuid; - DWORD EnableMessage; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + GUID ClassGuid; + DWORD EnableMessage; } alias SP_ENABLECLASS_PARAMS* PSP_ENABLECLASS_PARAMS; struct SP_MOVEDEV_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - SP_DEVINFO_DATA SourceDeviceInfoData; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + SP_DEVINFO_DATA SourceDeviceInfoData; } alias SP_MOVEDEV_PARAMS* PSP_MOVEDEV_PARAMS; struct SP_PROPCHANGE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD StateChange; - DWORD Scope; - DWORD HwProfile; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD StateChange; + DWORD Scope; + DWORD HwProfile; } alias SP_PROPCHANGE_PARAMS* PSP_PROPCHANGE_PARAMS; struct SP_REMOVEDEVICE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Scope; - DWORD HwProfile; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Scope; + DWORD HwProfile; } alias SP_REMOVEDEVICE_PARAMS* PSP_REMOVEDEVICE_PARAMS; struct SP_UNREMOVEDEVICE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Scope; - DWORD HwProfile; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Scope; + DWORD HwProfile; } alias SP_UNREMOVEDEVICE_PARAMS* PSP_UNREMOVEDEVICE_PARAMS; struct SP_SELECTDEVICE_PARAMS_A { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - CHAR[MAX_TITLE_LEN] Title; - CHAR[MAX_INSTRUCTION_LEN] Instructions; - CHAR[MAX_LABEL_LEN] ListLabel; - CHAR[MAX_SUBTITLE_LEN] SubTitle; - BYTE[2] Reserved; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[MAX_TITLE_LEN] Title; + CHAR[MAX_INSTRUCTION_LEN] Instructions; + CHAR[MAX_LABEL_LEN] ListLabel; + CHAR[MAX_SUBTITLE_LEN] SubTitle; + BYTE[2] Reserved; } alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS_A; struct SP_SELECTDEVICE_PARAMS_W { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - WCHAR[MAX_TITLE_LEN] Title; - WCHAR[MAX_INSTRUCTION_LEN] Instructions; - WCHAR[MAX_LABEL_LEN] ListLabel; - WCHAR[MAX_SUBTITLE_LEN] SubTitle; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[MAX_TITLE_LEN] Title; + WCHAR[MAX_INSTRUCTION_LEN] Instructions; + WCHAR[MAX_LABEL_LEN] ListLabel; + WCHAR[MAX_SUBTITLE_LEN] SubTitle; } alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS_W; extern(Windows) alias BOOL function(PVOID, DWORD) PDETECT_PROGRESS_NOTIFY; struct SP_DETECTDEVICE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - PDETECT_PROGRESS_NOTIFY DetectProgressNotify; - PVOID ProgressNotifyParam; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + PDETECT_PROGRESS_NOTIFY DetectProgressNotify; + PVOID ProgressNotifyParam; } alias SP_DETECTDEVICE_PARAMS* PSP_DETECTDEVICE_PARAMS; struct SP_INSTALLWIZARD_DATA { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Flags; - HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; - DWORD NumDynamicPages; - DWORD DynamicPageFlags; - DWORD PrivateFlags; - LPARAM PrivateData; - HWND hwndWizardDlg; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Flags; + HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; + DWORD NumDynamicPages; + DWORD DynamicPageFlags; + DWORD PrivateFlags; + LPARAM PrivateData; + HWND hwndWizardDlg; } alias SP_INSTALLWIZARD_DATA* PSP_INSTALLWIZARD_DATA; struct SP_NEWDEVICEWIZARD_DATA { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Flags; - HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; - DWORD NumDynamicPages; - HWND hwndWizardDlg; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Flags; + HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; + DWORD NumDynamicPages; + HWND hwndWizardDlg; } alias SP_NEWDEVICEWIZARD_DATA* PSP_NEWDEVICEWIZARD_DATA; alias SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA; alias SP_NEWDEVICEWIZARD_DATA* PSP_ADDPROPERTYPAGE_DATA; struct SP_TROUBLESHOOTER_PARAMS_A { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - CHAR[MAX_PATH] ChmFile; - CHAR[MAX_PATH] HtmlTroubleShooter; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[MAX_PATH] ChmFile; + CHAR[MAX_PATH] HtmlTroubleShooter; } alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS_A; struct SP_TROUBLESHOOTER_PARAMS_W { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - WCHAR[MAX_PATH] ChmFile; - WCHAR[MAX_PATH] HtmlTroubleShooter; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[MAX_PATH] ChmFile; + WCHAR[MAX_PATH] HtmlTroubleShooter; } alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS_W; struct SP_POWERMESSAGEWAKE_PARAMS_A { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - CHAR[LINE_LEN*2] PowerMessageWake; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[LINE_LEN*2] PowerMessageWake; } alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS_A; struct SP_POWERMESSAGEWAKE_PARAMS_W { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - WCHAR[LINE_LEN*2] PowerMessageWake; + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[LINE_LEN*2] PowerMessageWake; } alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS_W; struct SP_DRVINFO_DATA_V2_A { - DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - CHAR[LINE_LEN] Description; - CHAR[LINE_LEN] MfgName; - CHAR[LINE_LEN] ProviderName; - FILETIME DriverDate; - DWORDLONG DriverVersion; + DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + CHAR[LINE_LEN] Description; + CHAR[LINE_LEN] MfgName; + CHAR[LINE_LEN] ProviderName; + FILETIME DriverDate; + DWORDLONG DriverVersion; } alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_V2_A; struct SP_DRVINFO_DATA_V2_W { - DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - WCHAR[LINE_LEN] Description; - WCHAR[LINE_LEN] MfgName; - WCHAR[LINE_LEN] ProviderName; - FILETIME DriverDate; - DWORDLONG DriverVersion; + DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] Description; + WCHAR[LINE_LEN] MfgName; + WCHAR[LINE_LEN] ProviderName; + FILETIME DriverDate; + DWORDLONG DriverVersion; } alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_V2_W; struct SP_DRVINFO_DATA_V1_A { - DWORD cbSize = SP_DRVINFO_DATA_V1_A.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - CHAR[LINE_LEN] Description; - CHAR[LINE_LEN] MfgName; - CHAR[LINE_LEN] ProviderName; + DWORD cbSize = SP_DRVINFO_DATA_V1_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + CHAR[LINE_LEN] Description; + CHAR[LINE_LEN] MfgName; + CHAR[LINE_LEN] ProviderName; } alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_V1_A; struct SP_DRVINFO_DATA_V1_W { - DWORD cbSize = SP_DRVINFO_DATA_V1_W.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - WCHAR[LINE_LEN] Description; - WCHAR[LINE_LEN] MfgName; - WCHAR[LINE_LEN] ProviderName; + DWORD cbSize = SP_DRVINFO_DATA_V1_W.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] Description; + WCHAR[LINE_LEN] MfgName; + WCHAR[LINE_LEN] ProviderName; } alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_V1_W; version (Unicode) { - alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1; - alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2; + alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1; + alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2; } else { - alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1; - alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2; + alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1; + alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2; } alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA_V1; alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA_V2; static if(USE_SP_DRVINFO_DATA_V1) { - alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA; - alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA; + alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA; + alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA; } else { - alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA; - alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA; + alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA; + alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA; } extern(Windows) alias DWORD function(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINFO_DATA, PVOID) PSP_DETSIG_CMPPROC; struct SP_DRVINFO_DETAIL_DATA_A { - DWORD cbSize = SP_DRVINFO_DETAIL_DATA_A.sizeof; - FILETIME InfDate; - DWORD CompatIDsOffset; - DWORD CompatIDsLength; - ULONG_PTR Reserved; - CHAR[LINE_LEN] SectionName; - CHAR[MAX_PATH] InfFileName; - CHAR[LINE_LEN] DrvDescription; - CHAR[1] _HardwareID; - CHAR* HardwareID() { return _HardwareID.ptr; } + DWORD cbSize = SP_DRVINFO_DETAIL_DATA_A.sizeof; + FILETIME InfDate; + DWORD CompatIDsOffset; + DWORD CompatIDsLength; + ULONG_PTR Reserved; + CHAR[LINE_LEN] SectionName; + CHAR[MAX_PATH] InfFileName; + CHAR[LINE_LEN] DrvDescription; + CHAR[1] _HardwareID; + CHAR* HardwareID() { return _HardwareID.ptr; } } alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA_A; struct SP_DRVINFO_DETAIL_DATA_W { - DWORD cbSize = SP_DRVINFO_DETAIL_DATA_W.sizeof; - FILETIME InfDate; - DWORD CompatIDsOffset; - DWORD CompatIDsLength; - ULONG_PTR Reserved; - WCHAR[LINE_LEN] SectionName; - WCHAR[MAX_PATH] InfFileName; - WCHAR[LINE_LEN] DrvDescription; - WCHAR[1] _HardwareID; - WCHAR* HardwareID() { return _HardwareID.ptr; } + DWORD cbSize = SP_DRVINFO_DETAIL_DATA_W.sizeof; + FILETIME InfDate; + DWORD CompatIDsOffset; + DWORD CompatIDsLength; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] SectionName; + WCHAR[MAX_PATH] InfFileName; + WCHAR[LINE_LEN] DrvDescription; + WCHAR[1] _HardwareID; + WCHAR* HardwareID() { return _HardwareID.ptr; } } alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA_W; struct SP_DRVINSTALL_PARAMS { - DWORD cbSize = SP_DRVINSTALL_PARAMS.sizeof; - DWORD Rank; - DWORD Flags; - DWORD_PTR PrivateData; - DWORD Reserved; + DWORD cbSize = SP_DRVINSTALL_PARAMS.sizeof; + DWORD Rank; + DWORD Flags; + DWORD_PTR PrivateData; + DWORD Reserved; } alias SP_DRVINSTALL_PARAMS* PSP_DRVINSTALL_PARAMS; struct COINSTALLER_CONTEXT_DATA { - BOOL PostProcessing; - DWORD InstallResult; - PVOID PrivateData; + BOOL PostProcessing; + DWORD InstallResult; + PVOID PrivateData; } alias COINSTALLER_CONTEXT_DATA* PCOINSTALLER_CONTEXT_DATA; struct SP_CLASSIMAGELIST_DATA { - DWORD cbSize = SP_CLASSIMAGELIST_DATA.sizeof; - HIMAGELIST ImageList; - ULONG_PTR Reserved; + DWORD cbSize = SP_CLASSIMAGELIST_DATA.sizeof; + HIMAGELIST ImageList; + ULONG_PTR Reserved; } alias SP_CLASSIMAGELIST_DATA* PSP_CLASSIMAGELIST_DATA; struct SP_PROPSHEETPAGE_REQUEST { - DWORD cbSize = SP_PROPSHEETPAGE_REQUEST.sizeof; - DWORD PageRequested; - HDEVINFO DeviceInfoSet; - PSP_DEVINFO_DATA DeviceInfoData; + DWORD cbSize = SP_PROPSHEETPAGE_REQUEST.sizeof; + DWORD PageRequested; + HDEVINFO DeviceInfoSet; + PSP_DEVINFO_DATA DeviceInfoData; } alias SP_PROPSHEETPAGE_REQUEST* PSP_PROPSHEETPAGE_REQUEST; struct SP_BACKUP_QUEUE_PARAMS_A { - DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_A.sizeof; - CHAR[MAX_PATH] FullInfPath; - INT FilenameOffset; + DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_A.sizeof; + CHAR[MAX_PATH] FullInfPath; + INT FilenameOffset; } alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS_A; struct SP_BACKUP_QUEUE_PARAMS_W { - DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_W.sizeof; - WCHAR[MAX_PATH] FullInfPath; - INT FilenameOffset; + DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_W.sizeof; + WCHAR[MAX_PATH] FullInfPath; + INT FilenameOffset; } alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS_W; version (Unicode) { - alias SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO; - alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO; - alias FILEPATHS_W FILEPATHS; - alias FILEPATHS_W* PFILEPATHS; - alias SOURCE_MEDIA_W SOURCE_MEDIA; - alias SOURCE_MEDIA_W* PSOURCE_MEDIA; - alias CABINET_INFO_W CABINET_INFO; - alias CABINET_INFO_W* PCABINET_INFO; - alias FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO; - alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO; - alias SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS; - alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA; - deprecated { - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA; - } - alias SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINFO_LIST_DETAIL_DATA_W *PSP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS; - alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS; - alias SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS; - alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS; - alias SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA; - alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA; - alias SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS; - alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS; + alias SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO; + alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO; + alias FILEPATHS_W FILEPATHS; + alias FILEPATHS_W* PFILEPATHS; + alias SOURCE_MEDIA_W SOURCE_MEDIA; + alias SOURCE_MEDIA_W* PSOURCE_MEDIA; + alias CABINET_INFO_W CABINET_INFO; + alias CABINET_INFO_W* PCABINET_INFO; + alias FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO; + alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO; + alias SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS; + alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA; + deprecated { + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA; + } + alias SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINFO_LIST_DETAIL_DATA_W *PSP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS; + alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS; + alias SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS; + alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS; + alias SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA; + alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA; + alias SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS; + alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS; } else { - alias SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO; - alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO; - alias FILEPATHS_A FILEPATHS; - alias FILEPATHS_A* PFILEPATHS; - alias SOURCE_MEDIA_A SOURCE_MEDIA; - alias SOURCE_MEDIA_A* PSOURCE_MEDIA; - alias CABINET_INFO_A CABINET_INFO; - alias CABINET_INFO_A* PCABINET_INFO; - alias FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO; - alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO; - alias SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS; - alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA; - deprecated { - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA; - } - alias SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS; - alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS; - alias SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS; - alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS; - alias SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA; - alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA; - alias SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS; - alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS; + alias SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO; + alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO; + alias FILEPATHS_A FILEPATHS; + alias FILEPATHS_A* PFILEPATHS; + alias SOURCE_MEDIA_A SOURCE_MEDIA; + alias SOURCE_MEDIA_A* PSOURCE_MEDIA; + alias CABINET_INFO_A CABINET_INFO; + alias CABINET_INFO_A* PCABINET_INFO; + alias FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO; + alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO; + alias SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS; + alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA; + deprecated { + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA; + } + alias SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS; + alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS; + alias SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS; + alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS; + alias SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA; + alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA; + alias SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS; + alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS; } extern (Windows) { - BOOL SetupAddInstallSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); - BOOL SetupAddInstallSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); - BOOL SetupAddSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); - BOOL SetupAddSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); - BOOL SetupAddToDiskSpaceListA(HDSKSPC, PCSTR, LONGLONG, UINT, PVOID, UINT); - BOOL SetupAddToDiskSpaceListW(HDSKSPC, PCWSTR, LONGLONG, UINT, PVOID, UINT); - BOOL SetupAddToSourceListA(DWORD, PCSTR); - BOOL SetupAddToSourceListW(DWORD, PCWSTR); - BOOL SetupQuerySourceListA(DWORD, PCSTR**List, PUINT); - BOOL SetupQuerySourceListW(DWORD, PCWSTR**List, PUINT); - BOOL SetupFreeSourceListA(PCSTR**List, UINT); - BOOL SetupFreeSourceListW(PCWSTR**List, UINT); - BOOL SetupAdjustDiskSpaceListA(HDSKSPC, LPCSTR, LONGLONG, PVOID, UINT); - BOOL SetupAdjustDiskSpaceListW(HDSKSPC, LPCWSTR, LONGLONG, PVOID, UINT); - UINT SetupBackupErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); - UINT SetupBackupErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); - BOOL SetupCancelTemporary(); - BOOL SetupCloseFileQueue(HSPFILEQ); - VOID SetupCloseInfFile(HINF); - VOID SetupCloseLog(); - BOOL SetupCommitFileQueueA(HWND, HSPFILEQ, PSP_FILE_CALLBACK_A, PVOID); - BOOL SetupCommitFileQueueW(HWND, HSPFILEQ, PSP_FILE_CALLBACK_W, PVOID); - UINT SetupCopyErrorA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, UINT, DWORD, PSTR, DWORD, PDWORD); - UINT SetupCopyErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD, PWSTR, DWORD, PDWORD); - BOOL SetupCopyOEMInfA(PCSTR, PCSTR, DWORD, DWORD, PSTR, DWORD, PDWORD, PSTR*); - BOOL SetupCopyOEMInfW(PCWSTR, PCWSTR, DWORD, DWORD, PWSTR, DWORD, PDWORD, PWSTR*); - HDSKSPC SetupCreateDiskSpaceListA(PVOID, DWORD, UINT); - HDSKSPC SetupCreateDiskSpaceListW(PVOID, DWORD, UINT); - DWORD SetupDecompressOrCopyFileA(PCSTR, PCSTR, PUINT); - DWORD SetupDecompressOrCopyFileW(PCWSTR, PCWSTR, PUINT); - UINT SetupDefaultQueueCallbackA(PVOID, UINT, UINT_PTR, UINT_PTR); - UINT SetupDefaultQueueCallbackW(PVOID, UINT, UINT_PTR, UINT_PTR); - UINT SetupDeleteErrorA(HWND, PCSTR, PCSTR, UINT, DWORD); - UINT SetupDeleteErrorW(HWND, PCWSTR, PCWSTR, UINT, DWORD); - BOOL SetupDestroyDiskSpaceList(HDSKSPC); - BOOL SetupDiAskForOEMDisk(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiBuildClassInfoList(DWORD, LPGUID, DWORD, PDWORD); - BOOL SetupDiBuildClassInfoListExA(DWORD, LPGUID, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiBuildClassInfoListExW(DWORD, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiBuildDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); - BOOL SetupDiCallClassInstaller(DI_FUNCTION, HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiCancelDriverInfoSearch(HDEVINFO); - BOOL SetupDiChangeState(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiClassGuidsFromNameA(PCSTR, LPGUID, DWORD, PDWORD); - BOOL SetupDiClassGuidsFromNameW(PCWSTR, LPGUID, DWORD, PDWORD); - BOOL SetupDiClassGuidsFromNameExA(PCSTR, LPGUID, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiClassGuidsFromNameExW(PCWSTR, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiClassNameFromGuidA(const(GUID)*, PSTR, DWORD, PDWORD); - BOOL SetupDiClassNameFromGuidW(const(GUID)*, PWSTR, DWORD, PDWORD); - BOOL SetupDiClassNameFromGuidExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiClassNameFromGuidExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiCreateDeviceInfoA(HDEVINFO, PCSTR, const(GUID)*, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); - BOOL SetupDiCreateDeviceInfoW(HDEVINFO, PCWSTR, const(GUID)*, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); - HDEVINFO SetupDiCreateDeviceInfoList(const(GUID)*, HWND); - HDEVINFO SetupDiCreateDeviceInfoListExA(const(GUID)*, HWND, PCSTR, PVOID); - HDEVINFO SetupDiCreateDeviceInfoListExW(const(GUID)*, HWND, PCWSTR, PVOID); - BOOL SetupDiCreateDeviceInterfaceA(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiCreateDeviceInterfaceW(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); - HKEY SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCSTR); - HKEY SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCWSTR); - HKEY SetupDiCreateDevRegKeyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCSTR); - HKEY SetupDiCreateDevRegKeyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCWSTR); - BOOL SetupDiDeleteDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiDeleteDeviceInterfaceData(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD); - BOOL SetupDiDeleteDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD); - BOOL SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA); - BOOL SetupDiDestroyDeviceInfoList(HDEVINFO); - BOOL SetupDiDestroyDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); - INT SetupDiDrawMiniIcon(HDC, RECT, INT, DWORD); - BOOL SetupDiEnumDeviceInfo(HDEVINFO, DWORD, PSP_DEVINFO_DATA); - BOOL SetupDiEnumDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, DWORD, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiEnumDriverInfoA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_A); - BOOL SetupDiEnumDriverInfoW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_W); - BOOL SetupDiGetActualSectionToInstallA(HINF, PCSTR, PSTR, DWORD, PDWORD, PSTR*); - BOOL SetupDiGetActualSectionToInstallW(HINF, PCWSTR, PWSTR, DWORD, PDWORD, PWSTR*); - BOOL SetupDiGetClassBitmapIndex(const(GUID)*, PINT); - BOOL SetupDiGetClassDescriptionA(const(GUID)*, PSTR, DWORD, PDWORD); - BOOL SetupDiGetClassDescriptionW(const(GUID)*, PWSTR, DWORD, PDWORD); - BOOL SetupDiGetClassDescriptionExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiGetClassDescriptionExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiGetClassDevPropertySheetsA(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERA, DWORD, PDWORD, DWORD); - BOOL SetupDiGetClassDevPropertySheetsW(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERW, DWORD, PDWORD, DWORD); - HDEVINFO SetupDiGetClassDevsA(const(GUID)*, PCSTR, HWND, DWORD); - HDEVINFO SetupDiGetClassDevsW(const(GUID)*, PCWSTR, HWND, DWORD); - HDEVINFO SetupDiGetClassDevsExA(const(GUID)*, PCSTR, HWND, DWORD, HDEVINFO, PCSTR, PVOID); - HDEVINFO SetupDiGetClassDevsExW(const(GUID)*, PCWSTR, HWND, DWORD, HDEVINFO, PCWSTR, PVOID); - BOOL SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA, const(GUID)*, PINT); - BOOL SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA); - BOOL SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA, PCSTR, PVOID); - BOOL SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA, PCWSTR, PVOID); - BOOL SetupDiGetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); - BOOL SetupDiGetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); - BOOL SetupDiGetClassRegistryPropertyA(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiGetClassRegistryPropertyW(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiGetDeviceInfoListClass(HDEVINFO, LPGUID); - BOOL SetupDiGetDeviceInfoListDetailA(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_A); - BOOL SetupDiGetDeviceInfoListDetailW(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_W); - BOOL SetupDiGetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); - BOOL SetupDiGetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); - BOOL SetupDiGetDeviceInstanceIdA(HDEVINFO, PSP_DEVINFO_DATA, PSTR, DWORD, PDWORD); - BOOL SetupDiGetDeviceInstanceIdW(HDEVINFO, PSP_DEVINFO_DATA, PWSTR, DWORD, PDWORD); - BOOL SetupDiGetDeviceInterfaceAlias(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, const(GUID)*, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiGetDeviceInterfaceDetailA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DWORD, PDWORD, PSP_DEVINFO_DATA); - BOOL SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DWORD, PDWORD, PSP_DEVINFO_DATA); - BOOL SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); - BOOL SetupDiGetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); - BOOL SetupDiGetDriverInfoDetailA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINFO_DETAIL_DATA_A, DWORD, PDWORD); - BOOL SetupDiGetDriverInfoDetailW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINFO_DETAIL_DATA_W, DWORD, PDWORD); - BOOL SetupDiGetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); - BOOL SetupDiGetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); - BOOL SetupDiGetHwProfileFriendlyNameA(DWORD, PSTR, DWORD, PDWORD); - BOOL SetupDiGetHwProfileFriendlyNameExA(DWORD, PSTR, DWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiGetHwProfileFriendlyNameExW(DWORD, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiGetHwProfileFriendlyNameW(DWORD, PWSTR, DWORD, PDWORD); - BOOL SetupDiGetHwProfileList(PDWORD, DWORD, PDWORD, PDWORD); - BOOL SetupDiGetHwProfileListExA(PDWORD, DWORD, PDWORD, PDWORD, PCSTR, PVOID); - BOOL SetupDiGetHwProfileListExW(PDWORD, DWORD, PDWORD, PDWORD, PCWSTR, PVOID); - BOOL SetupDiGetINFClassA(PCSTR, LPGUID, PSTR, DWORD, PDWORD); - BOOL SetupDiGetINFClassW(PCWSTR, LPGUID, PWSTR, DWORD, PDWORD); - BOOL SetupDiGetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiGetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); - BOOL SetupDiGetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); - HPROPSHEETPAGE SetupDiGetWizardage(HDEVINFO, PSP_DEVINFO_DATA, PSP_INSTALLWIZARD_DATA, DWORD, DWORD); - BOOL SetupDiInstallClassA(HWND, PCSTR, DWORD, HSPFILEQ); - BOOL SetupDiInstallClassW(HWND, PCWSTR, DWORD, HSPFILEQ); - BOOL SetupDiInstallClassExA(HWND, PCSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); - BOOL SetupDiInstallClassExW(HWND, PCWSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); - BOOL SetupDiInstallDevice(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiInstallDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiInstallDriverFiles(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiLoadClassIcon(const(GUID)*, HICON*, PINT); - BOOL SetupDiMoveDuplicateDevice(HDEVINFO, PSP_DEVINFO_DATA); - HKEY SetupDiOpenClassRegKey(const(GUID)*, REGSAM); - HKEY SetupDiOpenClassRegKeyExA(const(GUID)*, REGSAM, DWORD, PCSTR, PVOID); - HKEY SetupDiOpenClassRegKeyExW(const(GUID)*, REGSAM, DWORD, PCWSTR, PVOID); - BOOL SetupDiOpenDeviceInfoA(HDEVINFO, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); - BOOL SetupDiOpenDeviceInfoW(HDEVINFO, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); - BOOL SetupDiOpenDeviceInterfaceA(HDEVINFO, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiOpenDeviceInterfaceW(HDEVINFO, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); - HKEY SetupDiOpenDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM); - HKEY SetupDiOpenDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM); - BOOL SetupDiRegisterCoDeviceInstallers(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiRegisterDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PSP_DETSIG_CMPPROC, PVOID, PSP_DEVINFO_DATA); - BOOL SetupDiRemoveDevice(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiRemoveDeviceInterface(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiSelectBestCompatDrv(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiSelectDevice(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiSelectOEMDrv(HWND, HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiSetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); - BOOL SetupDiSetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); - BOOL SetupDiSetClassRegistryPropertyA(LPGUID, DWORD, const(BYTE)*, DWORD, PCSTR, PVOID); - BOOL SetupDiSetClassRegistryPropertyW(LPGUID, DWORD, const(BYTE)*, DWORD, PCWSTR, PVOID); - BOOL SetupDiSetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); - BOOL SetupDiSetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); - BOOL SetupDiSetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); - BOOL SetupDiSetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); - BOOL SetupDiSetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); - BOOL SetupDiSetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); - BOOL SetupDiSetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupDiSetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); - BOOL SetupDiSetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); - BOOL SetupDiUnremoveDevice(HDEVINFO, PSP_DEVINFO_DATA); - HDSKSPC SetupDuplicateDiskSpaceListA(HDSKSPC, PVOID, DWORD, UINT); - HDSKSPC SetupDuplicateDiskSpaceListW(HDSKSPC, PVOID, DWORD, UINT); - BOOL SetupFindFirstLineA(HINF, PCSTR, PCSTR, PINFCONTEXT); - BOOL SetupFindFirstLineW(HINF, PCWSTR, PCWSTR, PINFCONTEXT); - BOOL SetupFindNextLine(PINFCONTEXT, PINFCONTEXT); - BOOL SetupFindNextMatchLineA(PINFCONTEXT, PCSTR, PINFCONTEXT); - BOOL SetupFindNextMatchLineW(PINFCONTEXT, PCWSTR, PINFCONTEXT); - BOOL SetupFreeA(PCSTR**, UINT); - BOOL SetupFreeW(PCWSTR**, UINT); - BOOL SetupGetBackupInformationA(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_A); - BOOL SetupGetBackupInformationW(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_W); - BOOL SetupGetBinaryField(PINFCONTEXT, DWORD, PBYTE, DWORD, LPDWORD); - DWORD SetupGetFieldCount(PINFCONTEXT); - DWORD SetupGetFileCompressionInfoA(PCSTR, PSTR*, PDWORD, PDWORD, PUINT); - DWORD SetupGetFileCompressionInfoW(PCWSTR, PWSTR*, PDWORD, PDWORD, PUINT); - BOOL SetupGetInfFileListA(PCSTR, DWORD, PSTR, DWORD, PDWORD); - BOOL SetupGetInfFileListW(PCWSTR, DWORD, PWSTR, DWORD, PDWORD); - BOOL SetupGetInfInformationA(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); - BOOL SetupGetInfInformationW(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); - BOOL SetupGetIntField(PINFCONTEXT, DWORD, PINT); - BOOL SetupGetLineByIndexA(HINF, PCSTR, DWORD, PINFCONTEXT); - BOOL SetupGetLineByIndexW(HINF, PCWSTR, DWORD, PINFCONTEXT); - LONG SetupGetLineCountA(HINF, PCSTR); - LONG SetupGetLineCountW(HINF, PCWSTR); - BOOL SetupGetLineTextA(PINFCONTEXT, HINF, PCSTR, PCSTR, PSTR, DWORD, PDWORD); - BOOL SetupGetLineTextW(PINFCONTEXT, HINF, PCWSTR, PCWSTR, PWSTR, DWORD, PDWORD); - BOOL SetupGetMultiSzFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, LPDWORD); - BOOL SetupGetMultiSzFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, LPDWORD); - BOOL SetupGetSourceFileLocationA(HINF, PINFCONTEXT, PCSTR, PUINT, PSTR, DWORD, PDWORD); - BOOL SetupGetSourceFileLocationW(HINF, PINFCONTEXT, PCWSTR, PUINT, PWSTR, DWORD, PDWORD); - BOOL SetupGetSourceFileSizeA(HINF, PINFCONTEXT, PCSTR, PCSTR, PDWORD, UINT); - BOOL SetupGetSourceFileSizeW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PDWORD, UINT); - BOOL SetupGetSourceInfoA(HINF, UINT, UINT, PSTR, DWORD, PDWORD); - BOOL SetupGetSourceInfoW(HINF, UINT, UINT, PWSTR, DWORD, PDWORD); - BOOL SetupGetStringFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, PDWORD); - BOOL SetupGetStringFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, PDWORD); - BOOL SetupGetTargetPathA(HINF, PINFCONTEXT, PCSTR, PSTR, DWORD, PDWORD); - BOOL SetupGetTargetPathW(HINF, PINFCONTEXT, PCWSTR, PWSTR, DWORD, PDWORD); - PVOID SetupInitDefaultQueueCallback(HWND); - PVOID SetupInitDefaultQueueCallbackEx(HWND, HWND, UINT, DWORD, PVOID); - HSPFILELOG SetupInitializeFileLogA(PCSTR, DWORD); - HSPFILELOG SetupInitializeFileLogW(PCWSTR, DWORD); - BOOL SetupInstallFileA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); - BOOL SetupInstallFileW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); - BOOL SetupInstallFileExA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID, PBOOL); - BOOL SetupInstallFileExW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID, PBOOL); - BOOL SetupInstallFilesFromInfSectionA(HINF, HINF, HSPFILEQ, PCSTR, PCSTR, UINT); - BOOL SetupInstallFilesFromInfSectionW(HINF, HINF, HSPFILEQ, PCWSTR, PCWSTR, UINT); - BOOL SetupInstallFromInfSectionA(HWND, HINF, PCSTR, UINT, HKEY, PCSTR, UINT, PSP_FILE_CALLBACK_A, PVOID, HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupInstallFromInfSectionW(HWND, HINF, PCWSTR, UINT, HKEY, PCWSTR, UINT, PSP_FILE_CALLBACK_W, PVOID, HDEVINFO, PSP_DEVINFO_DATA); - BOOL SetupInstallServicesFromInfSectionA(HINF, PCSTR, DWORD); - BOOL SetupInstallServicesFromInfSectionW(HINF, PCWSTR, DWORD); - BOOL SetupInstallServicesFromInfSectionExA(HINF, PCSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); - BOOL SetupInstallServicesFromInfSectionExW(HINF, PCWSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); - BOOL SetupIterateCabinetA(PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); - BOOL SetupIterateCabinetW(PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); - BOOL SetupLogErrorA(LPCSTR, LogSeverity); - BOOL SetupLogErrorW(LPCWSTR, LogSeverity); - BOOL SetupLogFileA(HSPFILELOG, PCSTR, PCSTR, PCSTR, DWORD, PCSTR, PCSTR, PCSTR, DWORD); - BOOL SetupLogFileW(HSPFILELOG, PCWSTR, PCWSTR, PCWSTR, DWORD, PCWSTR, PCWSTR, PCWSTR, DWORD); - BOOL SetupOpenAppendInfFileA(PCSTR, HINF, PUINT); - BOOL SetupOpenAppendInfFileW(PCWSTR, HINF, PUINT); - HSPFILEQ SetupOpenFileQueue(); - HINF SetupOpenInfFileA(PCSTR, PCSTR, DWORD, PUINT); - HINF SetupOpenInfFileW(PCWSTR, PCWSTR, DWORD, PUINT); - BOOL SetupOpenLog(BOOL); - HINF SetupOpenMasterInf(); - UINT SetupPromptForDiskA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD, PSTR, DWORD, PDWORD); - UINT SetupPromptForDiskW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD, PWSTR, DWORD, PDWORD); - INT SetupPromptReboot(HSPFILEQ, HWND, BOOL); - BOOL SetupQueryA(DWORD, PCSTR**, PUINT); - BOOL SetupQueryW(DWORD, PCWSTR**, PUINT); - BOOL SetupQueryDrivesInDiskSpaceListA(HDSKSPC, PSTR, DWORD, PDWORD); - BOOL SetupQueryDrivesInDiskSpaceListW(HDSKSPC, PWSTR, DWORD, PDWORD); - BOOL SetupQueryFileLogA(HSPFILELOG, PCSTR, PCSTR, SetupFileLogInfo, PSTR, DWORD, PDWORD); - BOOL SetupQueryFileLogW(HSPFILELOG, PCWSTR, PCWSTR, SetupFileLogInfo, PWSTR, DWORD, PDWORD); - BOOL SetupQueryInfFileInformationA(PSP_INF_INFORMATION, UINT, PSTR, DWORD, PDWORD); - BOOL SetupQueryInfFileInformationW(PSP_INF_INFORMATION, UINT, PWSTR, DWORD, PDWORD); - BOOL SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_A); - BOOL SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_W); - BOOL SetupQueryInfVersionInformationA(PSP_INF_INFORMATION, UINT, PSTR, PSTR, DWORD, PDWORD); - BOOL SetupQueryInfVersionInformationW(PSP_INF_INFORMATION, UINT, PCWSTR, PWSTR, DWORD, PDWORD); - BOOL SetupQuerySpaceRequiredOnDriveA(HDSKSPC, PCSTR, LONGLONG*, PVOID, UINT); - BOOL SetupQuerySpaceRequiredOnDriveW(HDSKSPC, PCWSTR, LONGLONG*, PVOID, UINT); - BOOL SetupQueueCopyA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD); - BOOL SetupQueueCopyW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD); - BOOL SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A); - BOOL SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W); - BOOL SetupQueueCopySectionA(HSPFILEQ, PCSTR, HINF, HINF, PCSTR, DWORD); - BOOL SetupQueueCopySectionW(HSPFILEQ, PCWSTR, HINF, HINF, PCWSTR, DWORD); - BOOL SetupQueueDefaultCopyA(HSPFILEQ, HINF, PCSTR, PCSTR, PCSTR, DWORD); - BOOL SetupQueueDefaultCopyW(HSPFILEQ, HINF, PCWSTR, PCWSTR, PCWSTR, DWORD); - BOOL SetupQueueDeleteA(HSPFILEQ, PCSTR, PCSTR); - BOOL SetupQueueDeleteW(HSPFILEQ, PCWSTR, PCWSTR); - BOOL SetupQueueDeleteSectionA(HSPFILEQ, HINF, HINF, PCSTR); - BOOL SetupQueueDeleteSectionW(HSPFILEQ, HINF, HINF, PCWSTR); - BOOL SetupQueueRenameA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR); - BOOL SetupQueueRenameW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR); - BOOL SetupQueueRenameSectionA(HSPFILEQ, HINF, HINF, PCSTR); - BOOL SetupQueueRenameSectionW(HSPFILEQ, HINF, HINF, PCWSTR); - BOOL SetupRemoveFileLogEntryA(HSPFILELOG, PCSTR, PCSTR); - BOOL SetupRemoveFileLogEntryW(HSPFILELOG, PCWSTR, PCWSTR); - BOOL SetupRemoveFromDiskSpaceListA(HDSKSPC, PCSTR, UINT, PVOID, UINT); - BOOL SetupRemoveFromDiskSpaceListW(HDSKSPC, PCWSTR, UINT, PVOID, UINT); - BOOL SetupRemoveFromSourceListA(DWORD, PCSTR); - BOOL SetupRemoveFromSourceListW(DWORD, PCWSTR); - BOOL SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); - BOOL SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); - BOOL SetupRemoveSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); - BOOL SetupRemoveSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); - UINT SetupRenameErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); - UINT SetupRenameErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); - BOOL SetupScanFileQueueA(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_A, PVOID, PDWORD); - BOOL SetupScanFileQueueW(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_W, PVOID, PDWORD); - BOOL SetupSetDirectoryIdA(HINF, DWORD, PCSTR); - BOOL SetupSetDirectoryIdW(HINF, DWORD, PCWSTR); - BOOL SetupSetDirectoryIdExA(HINF, DWORD, PCSTR, DWORD, DWORD, PVOID); - BOOL SetupSetDirectoryIdExW(HINF, DWORD, PCWSTR, DWORD, DWORD, PVOID); - BOOL SetupSetFileQueueAlternatePlatformA(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCSTR); - BOOL SetupSetFileQueueAlternatePlatformW(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCWSTR); - BOOL SetupSetPlatformPathOverrideA(PCSTR); - BOOL SetupSetPlatformPathOverrideW(PCWSTR); - BOOL SetupSetSourceListA(DWORD, PCSTR*, UINT); - BOOL SetupSetSourceListW(DWORD, PCWSTR*, UINT); - VOID SetupTermDefaultQueueCallback(PVOID); - BOOL SetupTerminateFileLog(HSPFILELOG); + BOOL SetupAddInstallSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); + BOOL SetupAddInstallSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); + BOOL SetupAddSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); + BOOL SetupAddSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); + BOOL SetupAddToDiskSpaceListA(HDSKSPC, PCSTR, LONGLONG, UINT, PVOID, UINT); + BOOL SetupAddToDiskSpaceListW(HDSKSPC, PCWSTR, LONGLONG, UINT, PVOID, UINT); + BOOL SetupAddToSourceListA(DWORD, PCSTR); + BOOL SetupAddToSourceListW(DWORD, PCWSTR); + BOOL SetupQuerySourceListA(DWORD, PCSTR**List, PUINT); + BOOL SetupQuerySourceListW(DWORD, PCWSTR**List, PUINT); + BOOL SetupFreeSourceListA(PCSTR**List, UINT); + BOOL SetupFreeSourceListW(PCWSTR**List, UINT); + BOOL SetupAdjustDiskSpaceListA(HDSKSPC, LPCSTR, LONGLONG, PVOID, UINT); + BOOL SetupAdjustDiskSpaceListW(HDSKSPC, LPCWSTR, LONGLONG, PVOID, UINT); + UINT SetupBackupErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); + UINT SetupBackupErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupCancelTemporary(); + BOOL SetupCloseFileQueue(HSPFILEQ); + VOID SetupCloseInfFile(HINF); + VOID SetupCloseLog(); + BOOL SetupCommitFileQueueA(HWND, HSPFILEQ, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupCommitFileQueueW(HWND, HSPFILEQ, PSP_FILE_CALLBACK_W, PVOID); + UINT SetupCopyErrorA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, UINT, DWORD, PSTR, DWORD, PDWORD); + UINT SetupCopyErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupCopyOEMInfA(PCSTR, PCSTR, DWORD, DWORD, PSTR, DWORD, PDWORD, PSTR*); + BOOL SetupCopyOEMInfW(PCWSTR, PCWSTR, DWORD, DWORD, PWSTR, DWORD, PDWORD, PWSTR*); + HDSKSPC SetupCreateDiskSpaceListA(PVOID, DWORD, UINT); + HDSKSPC SetupCreateDiskSpaceListW(PVOID, DWORD, UINT); + DWORD SetupDecompressOrCopyFileA(PCSTR, PCSTR, PUINT); + DWORD SetupDecompressOrCopyFileW(PCWSTR, PCWSTR, PUINT); + UINT SetupDefaultQueueCallbackA(PVOID, UINT, UINT_PTR, UINT_PTR); + UINT SetupDefaultQueueCallbackW(PVOID, UINT, UINT_PTR, UINT_PTR); + UINT SetupDeleteErrorA(HWND, PCSTR, PCSTR, UINT, DWORD); + UINT SetupDeleteErrorW(HWND, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupDestroyDiskSpaceList(HDSKSPC); + BOOL SetupDiAskForOEMDisk(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiBuildClassInfoList(DWORD, LPGUID, DWORD, PDWORD); + BOOL SetupDiBuildClassInfoListExA(DWORD, LPGUID, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiBuildClassInfoListExW(DWORD, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiBuildDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); + BOOL SetupDiCallClassInstaller(DI_FUNCTION, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiCancelDriverInfoSearch(HDEVINFO); + BOOL SetupDiChangeState(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiClassGuidsFromNameA(PCSTR, LPGUID, DWORD, PDWORD); + BOOL SetupDiClassGuidsFromNameW(PCWSTR, LPGUID, DWORD, PDWORD); + BOOL SetupDiClassGuidsFromNameExA(PCSTR, LPGUID, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiClassGuidsFromNameExW(PCWSTR, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiClassNameFromGuidA(const(GUID)*, PSTR, DWORD, PDWORD); + BOOL SetupDiClassNameFromGuidW(const(GUID)*, PWSTR, DWORD, PDWORD); + BOOL SetupDiClassNameFromGuidExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiClassNameFromGuidExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiCreateDeviceInfoA(HDEVINFO, PCSTR, const(GUID)*, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiCreateDeviceInfoW(HDEVINFO, PCWSTR, const(GUID)*, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); + HDEVINFO SetupDiCreateDeviceInfoList(const(GUID)*, HWND); + HDEVINFO SetupDiCreateDeviceInfoListExA(const(GUID)*, HWND, PCSTR, PVOID); + HDEVINFO SetupDiCreateDeviceInfoListExW(const(GUID)*, HWND, PCWSTR, PVOID); + BOOL SetupDiCreateDeviceInterfaceA(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiCreateDeviceInterfaceW(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + HKEY SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCSTR); + HKEY SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCWSTR); + HKEY SetupDiCreateDevRegKeyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCSTR); + HKEY SetupDiCreateDevRegKeyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCWSTR); + BOOL SetupDiDeleteDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiDeleteDeviceInterfaceData(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD); + BOOL SetupDiDeleteDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD); + BOOL SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA); + BOOL SetupDiDestroyDeviceInfoList(HDEVINFO); + BOOL SetupDiDestroyDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); + INT SetupDiDrawMiniIcon(HDC, RECT, INT, DWORD); + BOOL SetupDiEnumDeviceInfo(HDEVINFO, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiEnumDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiEnumDriverInfoA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_A); + BOOL SetupDiEnumDriverInfoW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_W); + BOOL SetupDiGetActualSectionToInstallA(HINF, PCSTR, PSTR, DWORD, PDWORD, PSTR*); + BOOL SetupDiGetActualSectionToInstallW(HINF, PCWSTR, PWSTR, DWORD, PDWORD, PWSTR*); + BOOL SetupDiGetClassBitmapIndex(const(GUID)*, PINT); + BOOL SetupDiGetClassDescriptionA(const(GUID)*, PSTR, DWORD, PDWORD); + BOOL SetupDiGetClassDescriptionW(const(GUID)*, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetClassDescriptionExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetClassDescriptionExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetClassDevPropertySheetsA(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERA, DWORD, PDWORD, DWORD); + BOOL SetupDiGetClassDevPropertySheetsW(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERW, DWORD, PDWORD, DWORD); + HDEVINFO SetupDiGetClassDevsA(const(GUID)*, PCSTR, HWND, DWORD); + HDEVINFO SetupDiGetClassDevsW(const(GUID)*, PCWSTR, HWND, DWORD); + HDEVINFO SetupDiGetClassDevsExA(const(GUID)*, PCSTR, HWND, DWORD, HDEVINFO, PCSTR, PVOID); + HDEVINFO SetupDiGetClassDevsExW(const(GUID)*, PCWSTR, HWND, DWORD, HDEVINFO, PCWSTR, PVOID); + BOOL SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA, const(GUID)*, PINT); + BOOL SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA); + BOOL SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA, PCSTR, PVOID); + BOOL SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA, PCWSTR, PVOID); + BOOL SetupDiGetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); + BOOL SetupDiGetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); + BOOL SetupDiGetClassRegistryPropertyA(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetClassRegistryPropertyW(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetDeviceInfoListClass(HDEVINFO, LPGUID); + BOOL SetupDiGetDeviceInfoListDetailA(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_A); + BOOL SetupDiGetDeviceInfoListDetailW(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_W); + BOOL SetupDiGetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); + BOOL SetupDiGetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); + BOOL SetupDiGetDeviceInstanceIdA(HDEVINFO, PSP_DEVINFO_DATA, PSTR, DWORD, PDWORD); + BOOL SetupDiGetDeviceInstanceIdW(HDEVINFO, PSP_DEVINFO_DATA, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetDeviceInterfaceAlias(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, const(GUID)*, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiGetDeviceInterfaceDetailA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DWORD, PDWORD, PSP_DEVINFO_DATA); + BOOL SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DWORD, PDWORD, PSP_DEVINFO_DATA); + BOOL SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); + BOOL SetupDiGetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); + BOOL SetupDiGetDriverInfoDetailA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINFO_DETAIL_DATA_A, DWORD, PDWORD); + BOOL SetupDiGetDriverInfoDetailW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINFO_DETAIL_DATA_W, DWORD, PDWORD); + BOOL SetupDiGetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiGetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiGetHwProfileFriendlyNameA(DWORD, PSTR, DWORD, PDWORD); + BOOL SetupDiGetHwProfileFriendlyNameExA(DWORD, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetHwProfileFriendlyNameExW(DWORD, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetHwProfileFriendlyNameW(DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetHwProfileList(PDWORD, DWORD, PDWORD, PDWORD); + BOOL SetupDiGetHwProfileListExA(PDWORD, DWORD, PDWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetHwProfileListExW(PDWORD, DWORD, PDWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetINFClassA(PCSTR, LPGUID, PSTR, DWORD, PDWORD); + BOOL SetupDiGetINFClassW(PCWSTR, LPGUID, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiGetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); + BOOL SetupDiGetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); + HPROPSHEETPAGE SetupDiGetWizardage(HDEVINFO, PSP_DEVINFO_DATA, PSP_INSTALLWIZARD_DATA, DWORD, DWORD); + BOOL SetupDiInstallClassA(HWND, PCSTR, DWORD, HSPFILEQ); + BOOL SetupDiInstallClassW(HWND, PCWSTR, DWORD, HSPFILEQ); + BOOL SetupDiInstallClassExA(HWND, PCSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); + BOOL SetupDiInstallClassExW(HWND, PCWSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); + BOOL SetupDiInstallDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiInstallDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiInstallDriverFiles(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiLoadClassIcon(const(GUID)*, HICON*, PINT); + BOOL SetupDiMoveDuplicateDevice(HDEVINFO, PSP_DEVINFO_DATA); + HKEY SetupDiOpenClassRegKey(const(GUID)*, REGSAM); + HKEY SetupDiOpenClassRegKeyExA(const(GUID)*, REGSAM, DWORD, PCSTR, PVOID); + HKEY SetupDiOpenClassRegKeyExW(const(GUID)*, REGSAM, DWORD, PCWSTR, PVOID); + BOOL SetupDiOpenDeviceInfoA(HDEVINFO, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiOpenDeviceInfoW(HDEVINFO, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiOpenDeviceInterfaceA(HDEVINFO, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiOpenDeviceInterfaceW(HDEVINFO, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + HKEY SetupDiOpenDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM); + HKEY SetupDiOpenDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM); + BOOL SetupDiRegisterCoDeviceInstallers(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiRegisterDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PSP_DETSIG_CMPPROC, PVOID, PSP_DEVINFO_DATA); + BOOL SetupDiRemoveDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiRemoveDeviceInterface(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiSelectBestCompatDrv(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSelectDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSelectOEMDrv(HWND, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); + BOOL SetupDiSetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); + BOOL SetupDiSetClassRegistryPropertyA(LPGUID, DWORD, const(BYTE)*, DWORD, PCSTR, PVOID); + BOOL SetupDiSetClassRegistryPropertyW(LPGUID, DWORD, const(BYTE)*, DWORD, PCWSTR, PVOID); + BOOL SetupDiSetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); + BOOL SetupDiSetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); + BOOL SetupDiSetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); + BOOL SetupDiSetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); + BOOL SetupDiSetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiSetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiSetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); + BOOL SetupDiSetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); + BOOL SetupDiUnremoveDevice(HDEVINFO, PSP_DEVINFO_DATA); + HDSKSPC SetupDuplicateDiskSpaceListA(HDSKSPC, PVOID, DWORD, UINT); + HDSKSPC SetupDuplicateDiskSpaceListW(HDSKSPC, PVOID, DWORD, UINT); + BOOL SetupFindFirstLineA(HINF, PCSTR, PCSTR, PINFCONTEXT); + BOOL SetupFindFirstLineW(HINF, PCWSTR, PCWSTR, PINFCONTEXT); + BOOL SetupFindNextLine(PINFCONTEXT, PINFCONTEXT); + BOOL SetupFindNextMatchLineA(PINFCONTEXT, PCSTR, PINFCONTEXT); + BOOL SetupFindNextMatchLineW(PINFCONTEXT, PCWSTR, PINFCONTEXT); + BOOL SetupFreeA(PCSTR**, UINT); + BOOL SetupFreeW(PCWSTR**, UINT); + BOOL SetupGetBackupInformationA(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_A); + BOOL SetupGetBackupInformationW(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_W); + BOOL SetupGetBinaryField(PINFCONTEXT, DWORD, PBYTE, DWORD, LPDWORD); + DWORD SetupGetFieldCount(PINFCONTEXT); + DWORD SetupGetFileCompressionInfoA(PCSTR, PSTR*, PDWORD, PDWORD, PUINT); + DWORD SetupGetFileCompressionInfoW(PCWSTR, PWSTR*, PDWORD, PDWORD, PUINT); + BOOL SetupGetInfFileListA(PCSTR, DWORD, PSTR, DWORD, PDWORD); + BOOL SetupGetInfFileListW(PCWSTR, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupGetInfInformationA(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); + BOOL SetupGetInfInformationW(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); + BOOL SetupGetIntField(PINFCONTEXT, DWORD, PINT); + BOOL SetupGetLineByIndexA(HINF, PCSTR, DWORD, PINFCONTEXT); + BOOL SetupGetLineByIndexW(HINF, PCWSTR, DWORD, PINFCONTEXT); + LONG SetupGetLineCountA(HINF, PCSTR); + LONG SetupGetLineCountW(HINF, PCWSTR); + BOOL SetupGetLineTextA(PINFCONTEXT, HINF, PCSTR, PCSTR, PSTR, DWORD, PDWORD); + BOOL SetupGetLineTextW(PINFCONTEXT, HINF, PCWSTR, PCWSTR, PWSTR, DWORD, PDWORD); + BOOL SetupGetMultiSzFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, LPDWORD); + BOOL SetupGetMultiSzFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, LPDWORD); + BOOL SetupGetSourceFileLocationA(HINF, PINFCONTEXT, PCSTR, PUINT, PSTR, DWORD, PDWORD); + BOOL SetupGetSourceFileLocationW(HINF, PINFCONTEXT, PCWSTR, PUINT, PWSTR, DWORD, PDWORD); + BOOL SetupGetSourceFileSizeA(HINF, PINFCONTEXT, PCSTR, PCSTR, PDWORD, UINT); + BOOL SetupGetSourceFileSizeW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PDWORD, UINT); + BOOL SetupGetSourceInfoA(HINF, UINT, UINT, PSTR, DWORD, PDWORD); + BOOL SetupGetSourceInfoW(HINF, UINT, UINT, PWSTR, DWORD, PDWORD); + BOOL SetupGetStringFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, PDWORD); + BOOL SetupGetStringFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupGetTargetPathA(HINF, PINFCONTEXT, PCSTR, PSTR, DWORD, PDWORD); + BOOL SetupGetTargetPathW(HINF, PINFCONTEXT, PCWSTR, PWSTR, DWORD, PDWORD); + PVOID SetupInitDefaultQueueCallback(HWND); + PVOID SetupInitDefaultQueueCallbackEx(HWND, HWND, UINT, DWORD, PVOID); + HSPFILELOG SetupInitializeFileLogA(PCSTR, DWORD); + HSPFILELOG SetupInitializeFileLogW(PCWSTR, DWORD); + BOOL SetupInstallFileA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupInstallFileW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); + BOOL SetupInstallFileExA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID, PBOOL); + BOOL SetupInstallFileExW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID, PBOOL); + BOOL SetupInstallFilesFromInfSectionA(HINF, HINF, HSPFILEQ, PCSTR, PCSTR, UINT); + BOOL SetupInstallFilesFromInfSectionW(HINF, HINF, HSPFILEQ, PCWSTR, PCWSTR, UINT); + BOOL SetupInstallFromInfSectionA(HWND, HINF, PCSTR, UINT, HKEY, PCSTR, UINT, PSP_FILE_CALLBACK_A, PVOID, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupInstallFromInfSectionW(HWND, HINF, PCWSTR, UINT, HKEY, PCWSTR, UINT, PSP_FILE_CALLBACK_W, PVOID, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupInstallServicesFromInfSectionA(HINF, PCSTR, DWORD); + BOOL SetupInstallServicesFromInfSectionW(HINF, PCWSTR, DWORD); + BOOL SetupInstallServicesFromInfSectionExA(HINF, PCSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); + BOOL SetupInstallServicesFromInfSectionExW(HINF, PCWSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); + BOOL SetupIterateCabinetA(PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupIterateCabinetW(PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); + BOOL SetupLogErrorA(LPCSTR, LogSeverity); + BOOL SetupLogErrorW(LPCWSTR, LogSeverity); + BOOL SetupLogFileA(HSPFILELOG, PCSTR, PCSTR, PCSTR, DWORD, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupLogFileW(HSPFILELOG, PCWSTR, PCWSTR, PCWSTR, DWORD, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupOpenAppendInfFileA(PCSTR, HINF, PUINT); + BOOL SetupOpenAppendInfFileW(PCWSTR, HINF, PUINT); + HSPFILEQ SetupOpenFileQueue(); + HINF SetupOpenInfFileA(PCSTR, PCSTR, DWORD, PUINT); + HINF SetupOpenInfFileW(PCWSTR, PCWSTR, DWORD, PUINT); + BOOL SetupOpenLog(BOOL); + HINF SetupOpenMasterInf(); + UINT SetupPromptForDiskA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD, PSTR, DWORD, PDWORD); + UINT SetupPromptForDiskW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD, PWSTR, DWORD, PDWORD); + INT SetupPromptReboot(HSPFILEQ, HWND, BOOL); + BOOL SetupQueryA(DWORD, PCSTR**, PUINT); + BOOL SetupQueryW(DWORD, PCWSTR**, PUINT); + BOOL SetupQueryDrivesInDiskSpaceListA(HDSKSPC, PSTR, DWORD, PDWORD); + BOOL SetupQueryDrivesInDiskSpaceListW(HDSKSPC, PWSTR, DWORD, PDWORD); + BOOL SetupQueryFileLogA(HSPFILELOG, PCSTR, PCSTR, SetupFileLogInfo, PSTR, DWORD, PDWORD); + BOOL SetupQueryFileLogW(HSPFILELOG, PCWSTR, PCWSTR, SetupFileLogInfo, PWSTR, DWORD, PDWORD); + BOOL SetupQueryInfFileInformationA(PSP_INF_INFORMATION, UINT, PSTR, DWORD, PDWORD); + BOOL SetupQueryInfFileInformationW(PSP_INF_INFORMATION, UINT, PWSTR, DWORD, PDWORD); + BOOL SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_A); + BOOL SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_W); + BOOL SetupQueryInfVersionInformationA(PSP_INF_INFORMATION, UINT, PSTR, PSTR, DWORD, PDWORD); + BOOL SetupQueryInfVersionInformationW(PSP_INF_INFORMATION, UINT, PCWSTR, PWSTR, DWORD, PDWORD); + BOOL SetupQuerySpaceRequiredOnDriveA(HDSKSPC, PCSTR, LONGLONG*, PVOID, UINT); + BOOL SetupQuerySpaceRequiredOnDriveW(HDSKSPC, PCWSTR, LONGLONG*, PVOID, UINT); + BOOL SetupQueueCopyA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupQueueCopyW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A); + BOOL SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W); + BOOL SetupQueueCopySectionA(HSPFILEQ, PCSTR, HINF, HINF, PCSTR, DWORD); + BOOL SetupQueueCopySectionW(HSPFILEQ, PCWSTR, HINF, HINF, PCWSTR, DWORD); + BOOL SetupQueueDefaultCopyA(HSPFILEQ, HINF, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupQueueDefaultCopyW(HSPFILEQ, HINF, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupQueueDeleteA(HSPFILEQ, PCSTR, PCSTR); + BOOL SetupQueueDeleteW(HSPFILEQ, PCWSTR, PCWSTR); + BOOL SetupQueueDeleteSectionA(HSPFILEQ, HINF, HINF, PCSTR); + BOOL SetupQueueDeleteSectionW(HSPFILEQ, HINF, HINF, PCWSTR); + BOOL SetupQueueRenameA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR); + BOOL SetupQueueRenameW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR); + BOOL SetupQueueRenameSectionA(HSPFILEQ, HINF, HINF, PCSTR); + BOOL SetupQueueRenameSectionW(HSPFILEQ, HINF, HINF, PCWSTR); + BOOL SetupRemoveFileLogEntryA(HSPFILELOG, PCSTR, PCSTR); + BOOL SetupRemoveFileLogEntryW(HSPFILELOG, PCWSTR, PCWSTR); + BOOL SetupRemoveFromDiskSpaceListA(HDSKSPC, PCSTR, UINT, PVOID, UINT); + BOOL SetupRemoveFromDiskSpaceListW(HDSKSPC, PCWSTR, UINT, PVOID, UINT); + BOOL SetupRemoveFromSourceListA(DWORD, PCSTR); + BOOL SetupRemoveFromSourceListW(DWORD, PCWSTR); + BOOL SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); + BOOL SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); + BOOL SetupRemoveSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); + BOOL SetupRemoveSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); + UINT SetupRenameErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); + UINT SetupRenameErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupScanFileQueueA(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_A, PVOID, PDWORD); + BOOL SetupScanFileQueueW(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_W, PVOID, PDWORD); + BOOL SetupSetDirectoryIdA(HINF, DWORD, PCSTR); + BOOL SetupSetDirectoryIdW(HINF, DWORD, PCWSTR); + BOOL SetupSetDirectoryIdExA(HINF, DWORD, PCSTR, DWORD, DWORD, PVOID); + BOOL SetupSetDirectoryIdExW(HINF, DWORD, PCWSTR, DWORD, DWORD, PVOID); + BOOL SetupSetFileQueueAlternatePlatformA(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCSTR); + BOOL SetupSetFileQueueAlternatePlatformW(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCWSTR); + BOOL SetupSetPlatformPathOverrideA(PCSTR); + BOOL SetupSetPlatformPathOverrideW(PCWSTR); + BOOL SetupSetSourceListA(DWORD, PCSTR*, UINT); + BOOL SetupSetSourceListW(DWORD, PCWSTR*, UINT); + VOID SetupTermDefaultQueueCallback(PVOID); + BOOL SetupTerminateFileLog(HSPFILELOG); } deprecated { - alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDeviceW; - alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKeyW; - alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDeviceW; - alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetailW; - alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDeviceA; - alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKeyA; - alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDeviceA; - alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetailA; + alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDeviceW; + alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKeyW; + alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDeviceW; + alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetailW; + alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDeviceA; + alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKeyA; + alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDeviceA; + alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetailA; } version (Unicode) { - alias PSP_FILE_CALLBACK_W PSP_FILE_CALLBACK; - alias SetupAddInstallSectionToDiskSpaceListW SetupAddInstallSectionToDiskSpaceList; - alias SetupAddSectionToDiskSpaceListW SetupAddSectionToDiskSpaceList; - alias SetupAddToDiskSpaceListW SetupAddToDiskSpaceList; - alias SetupAddToSourceListW SetupAddToSourceList; - alias SetupAdjustDiskSpaceListW SetupAdjustDiskSpaceList; - alias SetupBackupErrorW SetupBackupError; - alias SetupCommitFileQueueW SetupCommitFileQueue; - alias SetupCopyErrorW SetupCopyError; - alias SetupCopyOEMInfW SetupCopyOEMInf; - alias SetupCreateDiskSpaceListW SetupCreateDiskSpaceList; - alias SetupDecompressOrCopyFileW SetupDecompressOrCopyFile; - alias SetupDefaultQueueCallbackW SetupDefaultQueueCallback; - alias SetupDeleteErrorW SetupDeleteError; - alias SetupDiBuildClassInfoListExW SetupDiBuildClassInfoListEx; - alias SetupDiClassGuidsFromNameExW SetupDiClassGuidsFromNameEx; - alias SetupDiClassGuidsFromNameW SetupDiClassGuidsFromName; - alias SetupDiClassNameFromGuidExW SetupDiClassNameFromGuidEx; - alias SetupDiClassNameFromGuidW SetupDiClassNameFromGuid; - alias SetupDiCreateDeviceInfoListExW SetupDiCreateDeviceInfoListEx; - alias SetupDiCreateDeviceInfoW SetupDiCreateDeviceInfo; - alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateDeviceInterfaceRegKey; - deprecated alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKey; - alias SetupDiCreateDeviceInterfaceW SetupDiCreateDeviceInterface; - deprecated alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDevice; - alias SetupDiCreateDevRegKeyW SetupDiCreateDevRegKey; - alias SetupDiEnumDriverInfoW SetupDiEnumDriverInfo; - alias SetupDiGetActualSectionToInstallW SetupDiGetActualSectionToInstall; - alias SetupDiGetClassDescriptionExW SetupDiGetClassDescriptionEx; - alias SetupDiGetClassDescriptionW SetupDiGetClassDescription; - alias SetupDiGetClassDevPropertySheetsW SetupDiGetClassDevPropertySheets; - alias SetupDiGetClassDevsExW SetupDiGetClassDevsEx; - alias SetupDiGetClassDevsW SetupDiGetClassDevs; - alias SetupDiGetClassImageListExW SetupDiGetClassImageListEx; - alias SetupDiGetClassInstallParamsW SetupDiGetClassInstallParams; - alias SetupDiGetClassRegistryPropertyW SetupDiGetClassRegistryProperty; - alias SetupDiGetDeviceInfoListDetailW SetupDiGetDeviceInfoListDetail; - alias SetupDiGetDeviceInstallParamsW SetupDiGetDeviceInstallParams; - alias SetupDiGetDeviceInstanceIdW SetupDiGetDeviceInstanceId; - alias SetupDiGetDeviceInterfaceDetailW SetupDiGetDeviceInterfaceDetail; - deprecated alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetail; - alias SetupDiGetDeviceRegistryPropertyW SetupDiGetDeviceRegistryProperty; - alias SetupDiGetDriverInfoDetailW SetupDiGetDriverInfoDetail; - alias SetupDiGetDriverInstallParamsW SetupDiGetDriverInstallParams; - alias SetupDiGetHwProfileFriendlyNameExW SetupDiGetHwProfileFriendlyNameEx; - alias SetupDiGetHwProfileFriendlyNameW SetupDiGetHwProfileFriendlyName; - alias SetupDiGetHwProfileListExW SetupDiGetHwProfileListEx; - alias SetupDiGetINFClassW SetupDiGetINFClass; - alias SetupDiGetSelectedDriverW SetupDiGetSelectedDriver; - alias SetupDiInstallClassExW SetupDiInstallClassEx; - alias SetupDiInstallClassW SetupDiInstallClass; - alias SetupDiOpenClassRegKeyExW SetupDiOpenClassRegKeyEx; - alias SetupDiOpenDeviceInfoW SetupDiOpenDeviceInfo; - alias SetupDiOpenDeviceInterfaceW SetupDiOpenDeviceInterface; - deprecated alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDevice; - alias SetupDiSetClassInstallParamsW SetupDiSetClassInstallParams; - alias SetupDiSetClassRegistryPropertyW SetupDiSetClassRegistryProperty; - alias SetupDiSetDeviceInstallParamsW SetupDiSetDeviceInstallParams; - alias SetupDiSetDeviceRegistryPropertyW SetupDiSetDeviceRegistryProperty; - alias SetupDiSetDriverInstallParamsW SetupDiSetDriverInstallParams; - alias SetupDiSetSelectedDriverW SetupDiSetSelectedDriver; - alias SetupDuplicateDiskSpaceListW SetupDuplicateDiskSpaceList; - alias SetupFindFirstLineW SetupFindFirstLine; - alias SetupFindNextMatchLineW SetupFindNextMatchLine; - alias SetupFreeSourceListW SetupFreeSourceList; - alias SetupGetBackupInformationW SetupGetBackupInformation; - alias SetupGetFileCompressionInfoW SetupGetFileCompressionInfo; - alias SetupGetInfFileListW SetupGetInfFileList; - alias SetupGetInfInformationW SetupGetInfInformation; - alias SetupGetLineByIndexW SetupGetLineByIndex; - alias SetupGetLineCountW SetupGetLineCount; - alias SetupGetLineTextW SetupGetLineText; - alias SetupGetMultiSzFieldW SetupGetMultiSzField; - alias SetupGetSourceFileLocationW SetupGetSourceFileLocation; - alias SetupGetSourceFileSizeW SetupGetSourceFileSize; - alias SetupGetSourceInfoW SetupGetSourceInfo; - alias SetupGetStringFieldW SetupGetStringField; - alias SetupGetTargetPathW SetupGetTargetPath; - alias SetupInitializeFileLogW SetupInitializeFileLog; - alias SetupInstallFileExW SetupInstallFileEx; - alias SetupInstallFilesFromInfSectionW SetupInstallFilesFromInfSection; - alias SetupInstallFileW SetupInstallFile; - alias SetupInstallFromInfSectionW SetupInstallFromInfSection; - alias SetupInstallServicesFromInfSectionExW SetupInstallServicesFromInfSectionEx; - alias SetupInstallServicesFromInfSectionW SetupInstallServicesFromInfSection; - alias SetupIterateCabinetW SetupIterateCabinet; - alias SetupLogErrorW SetupLogError; - alias SetupLogFileW SetupLogFile; - alias SetupOpenAppendInfFileW SetupOpenAppendInfFile; - alias SetupOpenInfFileW SetupOpenInfFile; - alias SetupPromptForDiskW SetupPromptForDisk; - alias SetupQueryDrivesInDiskSpaceListW SetupQueryDrivesInDiskSpaceList; - alias SetupQueryFileLogW SetupQueryFileLog; - alias SetupQueryInfFileInformationW SetupQueryInfFileInformation; - alias SetupQueryInfOriginalFileInformationW SetupQueryInfOriginalFileInformation; - alias SetupQueryInfVersionInformationW SetupQueryInfVersionInformation; - alias SetupQuerySourceListW SetupQuerySourceList; - alias SetupQuerySpaceRequiredOnDriveW SetupQuerySpaceRequiredOnDrive; - alias SetupQueueCopyIndirectW SetupQueueCopyIndirect; - alias SetupQueueCopySectionW SetupQueueCopySection; - alias SetupQueueCopyW SetupQueueCopy; - alias SetupQueueDefaultCopyW SetupQueueDefaultCopy; - alias SetupQueueDeleteSectionW SetupQueueDeleteSection; - alias SetupQueueDeleteW SetupQueueDelete; - alias SetupQueueRenameSectionW SetupQueueRenameSection; - alias SetupQueueRenameW SetupQueueRename; - alias SetupRemoveFileLogEntryW SetupRemoveFileLogEntry; - alias SetupRemoveFromDiskSpaceListW SetupRemoveFromDiskSpaceList; - alias SetupRemoveFromSourceListW SetupRemoveFromSourceList; - alias SetupRemoveInstallSectionFromDiskSpaceListW SetupRemoveInstallSectionFromDiskSpaceList; - alias SetupRemoveSectionFromDiskSpaceListW SetupRemoveSectionFromDiskSpaceList; - alias SetupRenameErrorW SetupRenameError; - alias SetupScanFileQueueW SetupScanFileQueue; - alias SetupSetDirectoryIdExW SetupSetDirectoryIdEx; - alias SetupSetDirectoryIdW SetupSetDirectoryId; - alias SetupSetFileQueueAlternatePlatformW SetupSetFileQueueAlternatePlatform; - alias SetupSetPlatformPathOverrideW SetupSetPlatformPathOverride; - alias SetupSetSourceListW SetupSetSourceList; + alias PSP_FILE_CALLBACK_W PSP_FILE_CALLBACK; + alias SetupAddInstallSectionToDiskSpaceListW SetupAddInstallSectionToDiskSpaceList; + alias SetupAddSectionToDiskSpaceListW SetupAddSectionToDiskSpaceList; + alias SetupAddToDiskSpaceListW SetupAddToDiskSpaceList; + alias SetupAddToSourceListW SetupAddToSourceList; + alias SetupAdjustDiskSpaceListW SetupAdjustDiskSpaceList; + alias SetupBackupErrorW SetupBackupError; + alias SetupCommitFileQueueW SetupCommitFileQueue; + alias SetupCopyErrorW SetupCopyError; + alias SetupCopyOEMInfW SetupCopyOEMInf; + alias SetupCreateDiskSpaceListW SetupCreateDiskSpaceList; + alias SetupDecompressOrCopyFileW SetupDecompressOrCopyFile; + alias SetupDefaultQueueCallbackW SetupDefaultQueueCallback; + alias SetupDeleteErrorW SetupDeleteError; + alias SetupDiBuildClassInfoListExW SetupDiBuildClassInfoListEx; + alias SetupDiClassGuidsFromNameExW SetupDiClassGuidsFromNameEx; + alias SetupDiClassGuidsFromNameW SetupDiClassGuidsFromName; + alias SetupDiClassNameFromGuidExW SetupDiClassNameFromGuidEx; + alias SetupDiClassNameFromGuidW SetupDiClassNameFromGuid; + alias SetupDiCreateDeviceInfoListExW SetupDiCreateDeviceInfoListEx; + alias SetupDiCreateDeviceInfoW SetupDiCreateDeviceInfo; + alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateDeviceInterfaceRegKey; + deprecated alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKey; + alias SetupDiCreateDeviceInterfaceW SetupDiCreateDeviceInterface; + deprecated alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDevice; + alias SetupDiCreateDevRegKeyW SetupDiCreateDevRegKey; + alias SetupDiEnumDriverInfoW SetupDiEnumDriverInfo; + alias SetupDiGetActualSectionToInstallW SetupDiGetActualSectionToInstall; + alias SetupDiGetClassDescriptionExW SetupDiGetClassDescriptionEx; + alias SetupDiGetClassDescriptionW SetupDiGetClassDescription; + alias SetupDiGetClassDevPropertySheetsW SetupDiGetClassDevPropertySheets; + alias SetupDiGetClassDevsExW SetupDiGetClassDevsEx; + alias SetupDiGetClassDevsW SetupDiGetClassDevs; + alias SetupDiGetClassImageListExW SetupDiGetClassImageListEx; + alias SetupDiGetClassInstallParamsW SetupDiGetClassInstallParams; + alias SetupDiGetClassRegistryPropertyW SetupDiGetClassRegistryProperty; + alias SetupDiGetDeviceInfoListDetailW SetupDiGetDeviceInfoListDetail; + alias SetupDiGetDeviceInstallParamsW SetupDiGetDeviceInstallParams; + alias SetupDiGetDeviceInstanceIdW SetupDiGetDeviceInstanceId; + alias SetupDiGetDeviceInterfaceDetailW SetupDiGetDeviceInterfaceDetail; + deprecated alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetail; + alias SetupDiGetDeviceRegistryPropertyW SetupDiGetDeviceRegistryProperty; + alias SetupDiGetDriverInfoDetailW SetupDiGetDriverInfoDetail; + alias SetupDiGetDriverInstallParamsW SetupDiGetDriverInstallParams; + alias SetupDiGetHwProfileFriendlyNameExW SetupDiGetHwProfileFriendlyNameEx; + alias SetupDiGetHwProfileFriendlyNameW SetupDiGetHwProfileFriendlyName; + alias SetupDiGetHwProfileListExW SetupDiGetHwProfileListEx; + alias SetupDiGetINFClassW SetupDiGetINFClass; + alias SetupDiGetSelectedDriverW SetupDiGetSelectedDriver; + alias SetupDiInstallClassExW SetupDiInstallClassEx; + alias SetupDiInstallClassW SetupDiInstallClass; + alias SetupDiOpenClassRegKeyExW SetupDiOpenClassRegKeyEx; + alias SetupDiOpenDeviceInfoW SetupDiOpenDeviceInfo; + alias SetupDiOpenDeviceInterfaceW SetupDiOpenDeviceInterface; + deprecated alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDevice; + alias SetupDiSetClassInstallParamsW SetupDiSetClassInstallParams; + alias SetupDiSetClassRegistryPropertyW SetupDiSetClassRegistryProperty; + alias SetupDiSetDeviceInstallParamsW SetupDiSetDeviceInstallParams; + alias SetupDiSetDeviceRegistryPropertyW SetupDiSetDeviceRegistryProperty; + alias SetupDiSetDriverInstallParamsW SetupDiSetDriverInstallParams; + alias SetupDiSetSelectedDriverW SetupDiSetSelectedDriver; + alias SetupDuplicateDiskSpaceListW SetupDuplicateDiskSpaceList; + alias SetupFindFirstLineW SetupFindFirstLine; + alias SetupFindNextMatchLineW SetupFindNextMatchLine; + alias SetupFreeSourceListW SetupFreeSourceList; + alias SetupGetBackupInformationW SetupGetBackupInformation; + alias SetupGetFileCompressionInfoW SetupGetFileCompressionInfo; + alias SetupGetInfFileListW SetupGetInfFileList; + alias SetupGetInfInformationW SetupGetInfInformation; + alias SetupGetLineByIndexW SetupGetLineByIndex; + alias SetupGetLineCountW SetupGetLineCount; + alias SetupGetLineTextW SetupGetLineText; + alias SetupGetMultiSzFieldW SetupGetMultiSzField; + alias SetupGetSourceFileLocationW SetupGetSourceFileLocation; + alias SetupGetSourceFileSizeW SetupGetSourceFileSize; + alias SetupGetSourceInfoW SetupGetSourceInfo; + alias SetupGetStringFieldW SetupGetStringField; + alias SetupGetTargetPathW SetupGetTargetPath; + alias SetupInitializeFileLogW SetupInitializeFileLog; + alias SetupInstallFileExW SetupInstallFileEx; + alias SetupInstallFilesFromInfSectionW SetupInstallFilesFromInfSection; + alias SetupInstallFileW SetupInstallFile; + alias SetupInstallFromInfSectionW SetupInstallFromInfSection; + alias SetupInstallServicesFromInfSectionExW SetupInstallServicesFromInfSectionEx; + alias SetupInstallServicesFromInfSectionW SetupInstallServicesFromInfSection; + alias SetupIterateCabinetW SetupIterateCabinet; + alias SetupLogErrorW SetupLogError; + alias SetupLogFileW SetupLogFile; + alias SetupOpenAppendInfFileW SetupOpenAppendInfFile; + alias SetupOpenInfFileW SetupOpenInfFile; + alias SetupPromptForDiskW SetupPromptForDisk; + alias SetupQueryDrivesInDiskSpaceListW SetupQueryDrivesInDiskSpaceList; + alias SetupQueryFileLogW SetupQueryFileLog; + alias SetupQueryInfFileInformationW SetupQueryInfFileInformation; + alias SetupQueryInfOriginalFileInformationW SetupQueryInfOriginalFileInformation; + alias SetupQueryInfVersionInformationW SetupQueryInfVersionInformation; + alias SetupQuerySourceListW SetupQuerySourceList; + alias SetupQuerySpaceRequiredOnDriveW SetupQuerySpaceRequiredOnDrive; + alias SetupQueueCopyIndirectW SetupQueueCopyIndirect; + alias SetupQueueCopySectionW SetupQueueCopySection; + alias SetupQueueCopyW SetupQueueCopy; + alias SetupQueueDefaultCopyW SetupQueueDefaultCopy; + alias SetupQueueDeleteSectionW SetupQueueDeleteSection; + alias SetupQueueDeleteW SetupQueueDelete; + alias SetupQueueRenameSectionW SetupQueueRenameSection; + alias SetupQueueRenameW SetupQueueRename; + alias SetupRemoveFileLogEntryW SetupRemoveFileLogEntry; + alias SetupRemoveFromDiskSpaceListW SetupRemoveFromDiskSpaceList; + alias SetupRemoveFromSourceListW SetupRemoveFromSourceList; + alias SetupRemoveInstallSectionFromDiskSpaceListW SetupRemoveInstallSectionFromDiskSpaceList; + alias SetupRemoveSectionFromDiskSpaceListW SetupRemoveSectionFromDiskSpaceList; + alias SetupRenameErrorW SetupRenameError; + alias SetupScanFileQueueW SetupScanFileQueue; + alias SetupSetDirectoryIdExW SetupSetDirectoryIdEx; + alias SetupSetDirectoryIdW SetupSetDirectoryId; + alias SetupSetFileQueueAlternatePlatformW SetupSetFileQueueAlternatePlatform; + alias SetupSetPlatformPathOverrideW SetupSetPlatformPathOverride; + alias SetupSetSourceListW SetupSetSourceList; } else { - alias PSP_FILE_CALLBACK_A PSP_FILE_CALLBACK; - alias SetupAddInstallSectionToDiskSpaceListA SetupAddInstallSectionToDiskSpaceList; - alias SetupAddSectionToDiskSpaceListA SetupAddSectionToDiskSpaceList; - alias SetupAddToDiskSpaceListA SetupAddToDiskSpaceList; - alias SetupAddToSourceListA SetupAddToSourceList; - alias SetupAdjustDiskSpaceListA SetupAdjustDiskSpaceList; - alias SetupBackupErrorA SetupBackupError; - alias SetupCommitFileQueueA SetupCommitFileQueue; - alias SetupCopyErrorA SetupCopyError; - alias SetupCopyOEMInfA SetupCopyOEMInf; - alias SetupCreateDiskSpaceListA SetupCreateDiskSpaceList; - alias SetupDecompressOrCopyFileA SetupDecompressOrCopyFile; - alias SetupDefaultQueueCallbackA SetupDefaultQueueCallback; - alias SetupDeleteErrorA SetupDeleteError; - alias SetupDiBuildClassInfoListExA SetupDiBuildClassInfoListEx; - alias SetupDiClassGuidsFromNameA SetupDiClassGuidsFromName; - alias SetupDiClassGuidsFromNameExA SetupDiClassGuidsFromNameEx; - alias SetupDiClassNameFromGuidA SetupDiClassNameFromGuid; - alias SetupDiClassNameFromGuidExA SetupDiClassNameFromGuidEx; - alias SetupDiCreateDeviceInfoA SetupDiCreateDeviceInfo; - alias SetupDiCreateDeviceInfoListExA SetupDiCreateDeviceInfoListEx; - alias SetupDiCreateDeviceInterfaceA SetupDiCreateDeviceInterface; - deprecated alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDevice; - alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateDeviceInterfaceRegKey; - deprecated alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKey; - alias SetupDiCreateDevRegKeyA SetupDiCreateDevRegKey; - alias SetupDiDeleteDeviceInterfaceData SetupDiDeleteInterfaceDeviceData; - alias SetupDiEnumDriverInfoA SetupDiEnumDriverInfo; - alias SetupDiGetActualSectionToInstallA SetupDiGetActualSectionToInstall; - alias SetupDiGetClassDescriptionA SetupDiGetClassDescription; - alias SetupDiGetClassDescriptionExA SetupDiGetClassDescriptionEx; - alias SetupDiGetClassDevPropertySheetsA SetupDiGetClassDevPropertySheets; - alias SetupDiGetClassDevsA SetupDiGetClassDevs; - alias SetupDiGetClassDevsExA SetupDiGetClassDevsEx; - alias SetupDiGetClassImageListExA SetupDiGetClassImageListEx; - alias SetupDiGetClassInstallParamsA SetupDiGetClassInstallParams; - alias SetupDiGetClassRegistryPropertyA SetupDiGetClassRegistryProperty; - alias SetupDiGetDeviceInfoListDetailA SetupDiGetDeviceInfoListDetail; - alias SetupDiGetDeviceInstallParamsA SetupDiGetDeviceInstallParams; - alias SetupDiGetDeviceInstanceIdA SetupDiGetDeviceInstanceId; - alias SetupDiGetDeviceInterfaceDetailA SetupDiGetDeviceInterfaceDetail; - deprecated alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetail; - alias SetupDiGetDeviceRegistryPropertyA SetupDiGetDeviceRegistryProperty; - alias SetupDiGetDriverInfoDetailA SetupDiGetDriverInfoDetail; - alias SetupDiGetDriverInstallParamsA SetupDiGetDriverInstallParams; - alias SetupDiGetHwProfileFriendlyNameA SetupDiGetHwProfileFriendlyName; - alias SetupDiGetHwProfileFriendlyNameExA SetupDiGetHwProfileFriendlyNameEx; - alias SetupDiGetHwProfileListExA SetupDiGetHwProfileListEx; - alias SetupDiGetINFClassA SetupDiGetINFClass; - alias SetupDiGetSelectedDriverA SetupDiGetSelectedDriver; - alias SetupDiInstallClassA SetupDiInstallClass; - alias SetupDiInstallClassExA SetupDiInstallClassEx; - alias SetupDiOpenClassRegKeyExA SetupDiOpenClassRegKeyEx; - alias SetupDiOpenDeviceInfoA SetupDiOpenDeviceInfo; - alias SetupDiOpenDeviceInterfaceA SetupDiOpenDeviceInterface; - deprecated alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDevice; - alias SetupDiSetClassInstallParamsA SetupDiSetClassInstallParams; - alias SetupDiSetClassRegistryPropertyA SetupDiSetClassRegistryProperty; - alias SetupDiSetDeviceInstallParamsA SetupDiSetDeviceInstallParams; - alias SetupDiSetDeviceRegistryPropertyA SetupDiSetDeviceRegistryProperty; - alias SetupDiSetDriverInstallParamsA SetupDiSetDriverInstallParams; - alias SetupDiSetSelectedDriverA SetupDiSetSelectedDriver; - alias SetupDuplicateDiskSpaceListA SetupDuplicateDiskSpaceList; - alias SetupFindFirstLineA SetupFindFirstLine; - alias SetupFindNextMatchLineA SetupFindNextMatchLine; - alias SetupFreeSourceListA SetupFreeSourceList; - alias SetupGetBackupInformationA SetupGetBackupInformation; - alias SetupGetFileCompressionInfoA SetupGetFileCompressionInfo; - alias SetupGetInfFileListA SetupGetInfFileList; - alias SetupGetInfInformationA SetupGetInfInformation; - alias SetupGetLineByIndexA SetupGetLineByIndex; - alias SetupGetLineCountA SetupGetLineCount; - alias SetupGetLineTextA SetupGetLineText; - alias SetupGetMultiSzFieldA SetupGetMultiSzField; - alias SetupGetSourceFileLocationA SetupGetSourceFileLocation; - alias SetupGetSourceFileSizeA SetupGetSourceFileSize; - alias SetupGetSourceInfoA SetupGetSourceInfo; - alias SetupGetStringFieldA SetupGetStringField; - alias SetupGetTargetPathA SetupGetTargetPath; - alias SetupInitializeFileLogA SetupInitializeFileLog; - alias SetupInstallFileA SetupInstallFile; - alias SetupInstallFileExA SetupInstallFileEx; - alias SetupInstallFilesFromInfSectionA SetupInstallFilesFromInfSection; - alias SetupInstallFromInfSectionA SetupInstallFromInfSection; - alias SetupInstallServicesFromInfSectionA SetupInstallServicesFromInfSection; - alias SetupInstallServicesFromInfSectionExA SetupInstallServicesFromInfSectionEx; - alias SetupIterateCabinetA SetupIterateCabinet; - alias SetupLogErrorA SetupLogError; - alias SetupLogFileA SetupLogFile; - alias SetupOpenAppendInfFileA SetupOpenAppendInfFile; - alias SetupOpenInfFileA SetupOpenInfFile; - alias SetupPromptForDiskA SetupPromptForDisk; - alias SetupQueryDrivesInDiskSpaceListA SetupQueryDrivesInDiskSpaceList; - alias SetupQueryFileLogA SetupQueryFileLog; - alias SetupQueryInfFileInformationA SetupQueryInfFileInformation; - alias SetupQueryInfOriginalFileInformationA SetupQueryInfOriginalFileInformation; - alias SetupQueryInfVersionInformationA SetupQueryInfVersionInformation; - alias SetupQuerySourceListA SetupQuerySourceList; - alias SetupQuerySpaceRequiredOnDriveA SetupQuerySpaceRequiredOnDrive; - alias SetupQueueCopyA SetupQueueCopy; - alias SetupQueueCopyIndirectA SetupQueueCopyIndirect; - alias SetupQueueCopySectionA SetupQueueCopySection; - alias SetupQueueDefaultCopyA SetupQueueDefaultCopy; - alias SetupQueueDeleteA SetupQueueDelete; - alias SetupQueueDeleteSectionA SetupQueueDeleteSection; - alias SetupQueueRenameA SetupQueueRename; - alias SetupQueueRenameSectionA SetupQueueRenameSection; - alias SetupRemoveFileLogEntryA SetupRemoveFileLogEntry; - alias SetupRemoveFromDiskSpaceListA SetupRemoveFromDiskSpaceList; - alias SetupRemoveFromSourceListA SetupRemoveFromSourceList; - alias SetupRemoveInstallSectionFromDiskSpaceListA SetupRemoveInstallSectionFromDiskSpaceList; - alias SetupRemoveSectionFromDiskSpaceListA SetupRemoveSectionFromDiskSpaceList; - alias SetupRenameErrorA SetupRenameError; - alias SetupScanFileQueueA SetupScanFileQueue; - alias SetupSetDirectoryIdA SetupSetDirectoryId; - alias SetupSetDirectoryIdExA SetupSetDirectoryIdEx; - alias SetupSetFileQueueAlternatePlatformA SetupSetFileQueueAlternatePlatform; - alias SetupSetPlatformPathOverrideA SetupSetPlatformPathOverride; - alias SetupSetSourceListA SetupSetSourceList; + alias PSP_FILE_CALLBACK_A PSP_FILE_CALLBACK; + alias SetupAddInstallSectionToDiskSpaceListA SetupAddInstallSectionToDiskSpaceList; + alias SetupAddSectionToDiskSpaceListA SetupAddSectionToDiskSpaceList; + alias SetupAddToDiskSpaceListA SetupAddToDiskSpaceList; + alias SetupAddToSourceListA SetupAddToSourceList; + alias SetupAdjustDiskSpaceListA SetupAdjustDiskSpaceList; + alias SetupBackupErrorA SetupBackupError; + alias SetupCommitFileQueueA SetupCommitFileQueue; + alias SetupCopyErrorA SetupCopyError; + alias SetupCopyOEMInfA SetupCopyOEMInf; + alias SetupCreateDiskSpaceListA SetupCreateDiskSpaceList; + alias SetupDecompressOrCopyFileA SetupDecompressOrCopyFile; + alias SetupDefaultQueueCallbackA SetupDefaultQueueCallback; + alias SetupDeleteErrorA SetupDeleteError; + alias SetupDiBuildClassInfoListExA SetupDiBuildClassInfoListEx; + alias SetupDiClassGuidsFromNameA SetupDiClassGuidsFromName; + alias SetupDiClassGuidsFromNameExA SetupDiClassGuidsFromNameEx; + alias SetupDiClassNameFromGuidA SetupDiClassNameFromGuid; + alias SetupDiClassNameFromGuidExA SetupDiClassNameFromGuidEx; + alias SetupDiCreateDeviceInfoA SetupDiCreateDeviceInfo; + alias SetupDiCreateDeviceInfoListExA SetupDiCreateDeviceInfoListEx; + alias SetupDiCreateDeviceInterfaceA SetupDiCreateDeviceInterface; + deprecated alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDevice; + alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateDeviceInterfaceRegKey; + deprecated alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKey; + alias SetupDiCreateDevRegKeyA SetupDiCreateDevRegKey; + alias SetupDiDeleteDeviceInterfaceData SetupDiDeleteInterfaceDeviceData; + alias SetupDiEnumDriverInfoA SetupDiEnumDriverInfo; + alias SetupDiGetActualSectionToInstallA SetupDiGetActualSectionToInstall; + alias SetupDiGetClassDescriptionA SetupDiGetClassDescription; + alias SetupDiGetClassDescriptionExA SetupDiGetClassDescriptionEx; + alias SetupDiGetClassDevPropertySheetsA SetupDiGetClassDevPropertySheets; + alias SetupDiGetClassDevsA SetupDiGetClassDevs; + alias SetupDiGetClassDevsExA SetupDiGetClassDevsEx; + alias SetupDiGetClassImageListExA SetupDiGetClassImageListEx; + alias SetupDiGetClassInstallParamsA SetupDiGetClassInstallParams; + alias SetupDiGetClassRegistryPropertyA SetupDiGetClassRegistryProperty; + alias SetupDiGetDeviceInfoListDetailA SetupDiGetDeviceInfoListDetail; + alias SetupDiGetDeviceInstallParamsA SetupDiGetDeviceInstallParams; + alias SetupDiGetDeviceInstanceIdA SetupDiGetDeviceInstanceId; + alias SetupDiGetDeviceInterfaceDetailA SetupDiGetDeviceInterfaceDetail; + deprecated alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetail; + alias SetupDiGetDeviceRegistryPropertyA SetupDiGetDeviceRegistryProperty; + alias SetupDiGetDriverInfoDetailA SetupDiGetDriverInfoDetail; + alias SetupDiGetDriverInstallParamsA SetupDiGetDriverInstallParams; + alias SetupDiGetHwProfileFriendlyNameA SetupDiGetHwProfileFriendlyName; + alias SetupDiGetHwProfileFriendlyNameExA SetupDiGetHwProfileFriendlyNameEx; + alias SetupDiGetHwProfileListExA SetupDiGetHwProfileListEx; + alias SetupDiGetINFClassA SetupDiGetINFClass; + alias SetupDiGetSelectedDriverA SetupDiGetSelectedDriver; + alias SetupDiInstallClassA SetupDiInstallClass; + alias SetupDiInstallClassExA SetupDiInstallClassEx; + alias SetupDiOpenClassRegKeyExA SetupDiOpenClassRegKeyEx; + alias SetupDiOpenDeviceInfoA SetupDiOpenDeviceInfo; + alias SetupDiOpenDeviceInterfaceA SetupDiOpenDeviceInterface; + deprecated alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDevice; + alias SetupDiSetClassInstallParamsA SetupDiSetClassInstallParams; + alias SetupDiSetClassRegistryPropertyA SetupDiSetClassRegistryProperty; + alias SetupDiSetDeviceInstallParamsA SetupDiSetDeviceInstallParams; + alias SetupDiSetDeviceRegistryPropertyA SetupDiSetDeviceRegistryProperty; + alias SetupDiSetDriverInstallParamsA SetupDiSetDriverInstallParams; + alias SetupDiSetSelectedDriverA SetupDiSetSelectedDriver; + alias SetupDuplicateDiskSpaceListA SetupDuplicateDiskSpaceList; + alias SetupFindFirstLineA SetupFindFirstLine; + alias SetupFindNextMatchLineA SetupFindNextMatchLine; + alias SetupFreeSourceListA SetupFreeSourceList; + alias SetupGetBackupInformationA SetupGetBackupInformation; + alias SetupGetFileCompressionInfoA SetupGetFileCompressionInfo; + alias SetupGetInfFileListA SetupGetInfFileList; + alias SetupGetInfInformationA SetupGetInfInformation; + alias SetupGetLineByIndexA SetupGetLineByIndex; + alias SetupGetLineCountA SetupGetLineCount; + alias SetupGetLineTextA SetupGetLineText; + alias SetupGetMultiSzFieldA SetupGetMultiSzField; + alias SetupGetSourceFileLocationA SetupGetSourceFileLocation; + alias SetupGetSourceFileSizeA SetupGetSourceFileSize; + alias SetupGetSourceInfoA SetupGetSourceInfo; + alias SetupGetStringFieldA SetupGetStringField; + alias SetupGetTargetPathA SetupGetTargetPath; + alias SetupInitializeFileLogA SetupInitializeFileLog; + alias SetupInstallFileA SetupInstallFile; + alias SetupInstallFileExA SetupInstallFileEx; + alias SetupInstallFilesFromInfSectionA SetupInstallFilesFromInfSection; + alias SetupInstallFromInfSectionA SetupInstallFromInfSection; + alias SetupInstallServicesFromInfSectionA SetupInstallServicesFromInfSection; + alias SetupInstallServicesFromInfSectionExA SetupInstallServicesFromInfSectionEx; + alias SetupIterateCabinetA SetupIterateCabinet; + alias SetupLogErrorA SetupLogError; + alias SetupLogFileA SetupLogFile; + alias SetupOpenAppendInfFileA SetupOpenAppendInfFile; + alias SetupOpenInfFileA SetupOpenInfFile; + alias SetupPromptForDiskA SetupPromptForDisk; + alias SetupQueryDrivesInDiskSpaceListA SetupQueryDrivesInDiskSpaceList; + alias SetupQueryFileLogA SetupQueryFileLog; + alias SetupQueryInfFileInformationA SetupQueryInfFileInformation; + alias SetupQueryInfOriginalFileInformationA SetupQueryInfOriginalFileInformation; + alias SetupQueryInfVersionInformationA SetupQueryInfVersionInformation; + alias SetupQuerySourceListA SetupQuerySourceList; + alias SetupQuerySpaceRequiredOnDriveA SetupQuerySpaceRequiredOnDrive; + alias SetupQueueCopyA SetupQueueCopy; + alias SetupQueueCopyIndirectA SetupQueueCopyIndirect; + alias SetupQueueCopySectionA SetupQueueCopySection; + alias SetupQueueDefaultCopyA SetupQueueDefaultCopy; + alias SetupQueueDeleteA SetupQueueDelete; + alias SetupQueueDeleteSectionA SetupQueueDeleteSection; + alias SetupQueueRenameA SetupQueueRename; + alias SetupQueueRenameSectionA SetupQueueRenameSection; + alias SetupRemoveFileLogEntryA SetupRemoveFileLogEntry; + alias SetupRemoveFromDiskSpaceListA SetupRemoveFromDiskSpaceList; + alias SetupRemoveFromSourceListA SetupRemoveFromSourceList; + alias SetupRemoveInstallSectionFromDiskSpaceListA SetupRemoveInstallSectionFromDiskSpaceList; + alias SetupRemoveSectionFromDiskSpaceListA SetupRemoveSectionFromDiskSpaceList; + alias SetupRenameErrorA SetupRenameError; + alias SetupScanFileQueueA SetupScanFileQueue; + alias SetupSetDirectoryIdA SetupSetDirectoryId; + alias SetupSetDirectoryIdExA SetupSetDirectoryIdEx; + alias SetupSetFileQueueAlternatePlatformA SetupSetFileQueueAlternatePlatform; + alias SetupSetPlatformPathOverrideA SetupSetPlatformPathOverride; + alias SetupSetSourceListA SetupSetSourceList; } diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index 73992fd3d2..45dee85b29 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -13,171 +13,171 @@ pragma(lib, "shell32"); private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.basetyps; enum : UINT { - ABE_LEFT, - ABE_TOP, - ABE_RIGHT, - ABE_BOTTOM // = 3 + ABE_LEFT, + ABE_TOP, + ABE_RIGHT, + ABE_BOTTOM // = 3 } enum : UINT { - ABS_AUTOHIDE = 1, - ABS_ALWAYSONTOP + ABS_AUTOHIDE = 1, + ABS_ALWAYSONTOP } const ULONG - SEE_MASK_CLASSNAME = 1, - SEE_MASK_CLASSKEY = 3, - SEE_MASK_IDLIST = 4, - SEE_MASK_INVOKEIDLIST = 12, - SEE_MASK_ICON = 0x000010, - SEE_MASK_HOTKEY = 0x000020, - SEE_MASK_NOCLOSEPROCESS = 0x000040, - SEE_MASK_CONNECTNETDRV = 0x000080, - SEE_MASK_FLAG_DDEWAIT = 0x000100, - SEE_MASK_DOENVSUBST = 0x000200, - SEE_MASK_FLAG_NO_UI = 0x000400, - SEE_MASK_NO_CONSOLE = 0x008000, - SEE_MASK_UNICODE = 0x010000, - SEE_MASK_ASYNCOK = 0x100000, - SEE_MASK_HMONITOR = 0x200000; + SEE_MASK_CLASSNAME = 1, + SEE_MASK_CLASSKEY = 3, + SEE_MASK_IDLIST = 4, + SEE_MASK_INVOKEIDLIST = 12, + SEE_MASK_ICON = 0x000010, + SEE_MASK_HOTKEY = 0x000020, + SEE_MASK_NOCLOSEPROCESS = 0x000040, + SEE_MASK_CONNECTNETDRV = 0x000080, + SEE_MASK_FLAG_DDEWAIT = 0x000100, + SEE_MASK_DOENVSUBST = 0x000200, + SEE_MASK_FLAG_NO_UI = 0x000400, + SEE_MASK_NO_CONSOLE = 0x008000, + SEE_MASK_UNICODE = 0x010000, + SEE_MASK_ASYNCOK = 0x100000, + SEE_MASK_HMONITOR = 0x200000; enum : DWORD { - ABM_NEW, - ABM_REMOVE, - ABM_QUERYPOS, - ABM_SETPOS, - ABM_GETSTATE, - ABM_GETTASKBARPOS, - ABM_ACTIVATE, - ABM_GETAUTOHIDEBAR, - ABM_SETAUTOHIDEBAR, - ABM_WINDOWPOSCHANGED // = 9 + ABM_NEW, + ABM_REMOVE, + ABM_QUERYPOS, + ABM_SETPOS, + ABM_GETSTATE, + ABM_GETTASKBARPOS, + ABM_ACTIVATE, + ABM_GETAUTOHIDEBAR, + ABM_SETAUTOHIDEBAR, + ABM_WINDOWPOSCHANGED // = 9 } static if (_WIN32_WINNT >= 0x501) { - const DWORD ABM_SETSTATE = 10; + const DWORD ABM_SETSTATE = 10; } enum : UINT { - ABN_STATECHANGE, - ABN_POSCHANGED, - ABN_FULLSCREENAPP, - ABN_WINDOWARRANGE + ABN_STATECHANGE, + ABN_POSCHANGED, + ABN_FULLSCREENAPP, + ABN_WINDOWARRANGE } enum : DWORD { - NIM_ADD, - NIM_MODIFY, - NIM_DELETE + NIM_ADD, + NIM_MODIFY, + NIM_DELETE } static if (_WIN32_IE >= 0x500) { - const NOTIFYICON_VERSION = 3; + const NOTIFYICON_VERSION = 3; - enum : DWORD { - NIM_SETFOCUS = 3, - NIM_SETVERSION - } + enum : DWORD { + NIM_SETFOCUS = 3, + NIM_SETVERSION + } } const UINT - NIF_MESSAGE = 1, - NIF_ICON = 2, - NIF_TIP = 4, - NIF_STATE = 8; + NIF_MESSAGE = 1, + NIF_ICON = 2, + NIF_TIP = 4, + NIF_STATE = 8; static if (_WIN32_IE >= 0x500) { - const UINT NIF_INFO = 0x00000010; + const UINT NIF_INFO = 0x00000010; } static if (_WIN32_IE >= 0x600) { - const UINT NIF_GUID = 0x00000020; + const UINT NIF_GUID = 0x00000020; } static if (_WIN32_IE >= 0x500) { - enum : DWORD { - NIIF_NONE, - NIIF_INFO, - NIIF_WARNING, - NIIF_ERROR - } + enum : DWORD { + NIIF_NONE, + NIIF_INFO, + NIIF_WARNING, + NIIF_ERROR + } } static if (_WIN32_IE >= 0x600) { - enum : DWORD { - NIIF_ICON_MASK = 15, - NIIF_NOSOUND - } + enum : DWORD { + NIIF_ICON_MASK = 15, + NIIF_NOSOUND + } } const DWORD - NIS_HIDDEN = 1, - NIS_SHAREDICON = 2; + NIS_HIDDEN = 1, + NIS_SHAREDICON = 2; const HINSTANCE - SE_ERR_FNF = cast(HINSTANCE) 2, - SE_ERR_PNF = cast(HINSTANCE) 3, - SE_ERR_ACCESSDENIED = cast(HINSTANCE) 5, - SE_ERR_OOM = cast(HINSTANCE) 8, - SE_ERR_DLLNOTFOUND = cast(HINSTANCE) 32, - SE_ERR_SHARE = cast(HINSTANCE) 26, - SE_ERR_ASSOCINCOMPLETE = cast(HINSTANCE) 27, - SE_ERR_DDETIMEOUT = cast(HINSTANCE) 28, - SE_ERR_DDEFAIL = cast(HINSTANCE) 29, - SE_ERR_DDEBUSY = cast(HINSTANCE) 30, - SE_ERR_NOASSOC = cast(HINSTANCE) 31; + SE_ERR_FNF = cast(HINSTANCE) 2, + SE_ERR_PNF = cast(HINSTANCE) 3, + SE_ERR_ACCESSDENIED = cast(HINSTANCE) 5, + SE_ERR_OOM = cast(HINSTANCE) 8, + SE_ERR_DLLNOTFOUND = cast(HINSTANCE) 32, + SE_ERR_SHARE = cast(HINSTANCE) 26, + SE_ERR_ASSOCINCOMPLETE = cast(HINSTANCE) 27, + SE_ERR_DDETIMEOUT = cast(HINSTANCE) 28, + SE_ERR_DDEFAIL = cast(HINSTANCE) 29, + SE_ERR_DDEBUSY = cast(HINSTANCE) 30, + SE_ERR_NOASSOC = cast(HINSTANCE) 31; enum : UINT { - FO_MOVE = 1, - FO_COPY, - FO_DELETE, - FO_RENAME + FO_MOVE = 1, + FO_COPY, + FO_DELETE, + FO_RENAME } const FILEOP_FLAGS - FOF_MULTIDESTFILES = 0x0001, - FOF_CONFIRMMOUSE = 0x0002, - FOF_SILENT = 0x0004, - FOF_RENAMEONCOLLISION = 0x0008, - FOF_NOCONFIRMATION = 0x0010, - FOF_WANTMAPPINGHANDLE = 0x0020, - FOF_ALLOWUNDO = 0x0040, - FOF_FILESONLY = 0x0080, - FOF_SIMPLEPROGRESS = 0x0100, - FOF_NOCONFIRMMKDIR = 0x0200, - FOF_NOERRORUI = 0x0400, - FOF_NOCOPYSECURITYATTRIBS = 0x0800; + FOF_MULTIDESTFILES = 0x0001, + FOF_CONFIRMMOUSE = 0x0002, + FOF_SILENT = 0x0004, + FOF_RENAMEONCOLLISION = 0x0008, + FOF_NOCONFIRMATION = 0x0010, + FOF_WANTMAPPINGHANDLE = 0x0020, + FOF_ALLOWUNDO = 0x0040, + FOF_FILESONLY = 0x0080, + FOF_SIMPLEPROGRESS = 0x0100, + FOF_NOCONFIRMMKDIR = 0x0200, + FOF_NOERRORUI = 0x0400, + FOF_NOCOPYSECURITYATTRIBS = 0x0800; // these are not documented on the MSDN site enum { - PO_DELETE = 19, - PO_RENAME = 20, - PO_PORTCHANGE = 32, - PO_REN_PORT = 52 + PO_DELETE = 19, + PO_RENAME = 20, + PO_PORTCHANGE = 32, + PO_REN_PORT = 52 } const UINT - SHGFI_LARGEICON = 0x000000, - SHGFI_SMALLICON = 0x000001, - SHGFI_OPENICON = 0x000002, - SHGFI_SHELLICONSIZE = 0x000004, - SHGFI_PIDL = 0x000008, - SHGFI_USEFILEATTRIBUTES = 0x000010, - SHGFI_ICON = 0x000100, - SHGFI_DISPLAYNAME = 0x000200, - SHGFI_TYPENAME = 0x000400, - SHGFI_ATTRIBUTES = 0x000800, - SHGFI_ICONLOCATION = 0x001000, - SHGFI_EXETYPE = 0x002000, - SHGFI_SYSICONINDEX = 0x004000, - SHGFI_LINKOVERLAY = 0x008000, - SHGFI_SELECTED = 0x010000, - SHGFI_ATTR_SPECIFIED = 0x020000; + SHGFI_LARGEICON = 0x000000, + SHGFI_SMALLICON = 0x000001, + SHGFI_OPENICON = 0x000002, + SHGFI_SHELLICONSIZE = 0x000004, + SHGFI_PIDL = 0x000008, + SHGFI_USEFILEATTRIBUTES = 0x000010, + SHGFI_ICON = 0x000100, + SHGFI_DISPLAYNAME = 0x000200, + SHGFI_TYPENAME = 0x000400, + SHGFI_ATTRIBUTES = 0x000800, + SHGFI_ICONLOCATION = 0x001000, + SHGFI_EXETYPE = 0x002000, + SHGFI_SYSICONINDEX = 0x004000, + SHGFI_LINKOVERLAY = 0x008000, + SHGFI_SELECTED = 0x010000, + SHGFI_ATTR_SPECIFIED = 0x020000; static if (_WIN32_IE >= 0x500) { - const uint - SHGFI_ADDOVERLAYS = 0x000020, - SHGFI_OVERLAYINDEX = 0x000040; + const uint + SHGFI_ADDOVERLAYS = 0x000020, + SHGFI_OVERLAYINDEX = 0x000040; } const SHERB_NOCONFIRMATION = 1; @@ -190,226 +190,226 @@ mixin DECLARE_HANDLE!("HDROP"); align(2): struct APPBARDATA { - DWORD cbSize = APPBARDATA.sizeof; - HWND hWnd; - UINT uCallbackMessage; - UINT uEdge; - RECT rc; - LPARAM lParam; + DWORD cbSize = APPBARDATA.sizeof; + HWND hWnd; + UINT uCallbackMessage; + UINT uEdge; + RECT rc; + LPARAM lParam; } alias APPBARDATA* PAPPBARDATA; struct NOTIFYICONDATAA { - DWORD cbSize = NOTIFYICONDATAA.sizeof; - HWND hWnd; - UINT uID; - UINT uFlags; - UINT uCallbackMessage; - HICON hIcon; - static if (_WIN32_IE >= 0x500) { - CHAR[128] szTip; - DWORD dwState; - DWORD dwStateMask; - CHAR[256] szInfo; - union { - UINT uTimeout; - UINT uVersion; - } - CHAR[64] szInfoTitle; - DWORD dwInfoFlags; - } else { - CHAR[64] szTip; - } - static if (_WIN32_IE >= 0x600) { - GUID guidItem; - } + DWORD cbSize = NOTIFYICONDATAA.sizeof; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + static if (_WIN32_IE >= 0x500) { + CHAR[128] szTip; + DWORD dwState; + DWORD dwStateMask; + CHAR[256] szInfo; + union { + UINT uTimeout; + UINT uVersion; + } + CHAR[64] szInfoTitle; + DWORD dwInfoFlags; + } else { + CHAR[64] szTip; + } + static if (_WIN32_IE >= 0x600) { + GUID guidItem; + } } alias NOTIFYICONDATAA* PNOTIFYICONDATAA; struct NOTIFYICONDATAW { - DWORD cbSize = NOTIFYICONDATAW.sizeof; - HWND hWnd; - UINT uID; - UINT uFlags; - UINT uCallbackMessage; - HICON hIcon; - static if (_WIN32_IE >= 0x500) { - WCHAR[128] szTip; - DWORD dwState; - DWORD dwStateMask; - WCHAR[256] szInfo; - union { - UINT uTimeout; - UINT uVersion; - } - WCHAR[64] szInfoTitle; - DWORD dwInfoFlags; - } else { - WCHAR[64] szTip; - } - static if (_WIN32_IE >= 0x600) { - GUID guidItem; - } + DWORD cbSize = NOTIFYICONDATAW.sizeof; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + static if (_WIN32_IE >= 0x500) { + WCHAR[128] szTip; + DWORD dwState; + DWORD dwStateMask; + WCHAR[256] szInfo; + union { + UINT uTimeout; + UINT uVersion; + } + WCHAR[64] szInfoTitle; + DWORD dwInfoFlags; + } else { + WCHAR[64] szTip; + } + static if (_WIN32_IE >= 0x600) { + GUID guidItem; + } } alias NOTIFYICONDATAW* PNOTIFYICONDATAW; struct SHELLEXECUTEINFOA { - DWORD cbSize = SHELLEXECUTEINFOA.sizeof; - ULONG fMask; - HWND hwnd; - LPCSTR lpVerb; - LPCSTR lpFile; - LPCSTR lpParameters; - LPCSTR lpDirectory; - int nShow; - HINSTANCE hInstApp; - PVOID lpIDList; - LPCSTR lpClass; - HKEY hkeyClass; - DWORD dwHotKey; - HANDLE hIcon; - HANDLE hProcess; + DWORD cbSize = SHELLEXECUTEINFOA.sizeof; + ULONG fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpFile; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + PVOID lpIDList; + LPCSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; + HANDLE hIcon; + HANDLE hProcess; } alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA; struct SHELLEXECUTEINFOW { - DWORD cbSize = SHELLEXECUTEINFOW.sizeof; - ULONG fMask; - HWND hwnd; - LPCWSTR lpVerb; - LPCWSTR lpFile; - LPCWSTR lpParameters; - LPCWSTR lpDirectory; - int nShow; - HINSTANCE hInstApp; - PVOID lpIDList; - LPCWSTR lpClass; - HKEY hkeyClass; - DWORD dwHotKey; - HANDLE hIcon; - HANDLE hProcess; + DWORD cbSize = SHELLEXECUTEINFOW.sizeof; + ULONG fMask; + HWND hwnd; + LPCWSTR lpVerb; + LPCWSTR lpFile; + LPCWSTR lpParameters; + LPCWSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + PVOID lpIDList; + LPCWSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; + HANDLE hIcon; + HANDLE hProcess; } alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; struct SHFILEOPSTRUCTA { - HWND hwnd; - UINT wFunc; - LPCSTR pFrom; - LPCSTR pTo; - FILEOP_FLAGS fFlags; - BOOL fAnyOperationsAborted; - PVOID hNameMappings; - LPCSTR lpszProgressTitle; + HWND hwnd; + UINT wFunc; + LPCSTR pFrom; + LPCSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + PVOID hNameMappings; + LPCSTR lpszProgressTitle; } alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; struct SHFILEOPSTRUCTW { - HWND hwnd; - UINT wFunc; - LPCWSTR pFrom; - LPCWSTR pTo; - FILEOP_FLAGS fFlags; - BOOL fAnyOperationsAborted; - PVOID hNameMappings; - LPCWSTR lpszProgressTitle; + HWND hwnd; + UINT wFunc; + LPCWSTR pFrom; + LPCWSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + PVOID hNameMappings; + LPCWSTR lpszProgressTitle; } alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; struct SHFILEINFOA { - HICON hIcon; - int iIcon; - DWORD dwAttributes; - CHAR[MAX_PATH] szDisplayName; - CHAR[80] szTypeName; + HICON hIcon; + int iIcon; + DWORD dwAttributes; + CHAR[MAX_PATH] szDisplayName; + CHAR[80] szTypeName; } struct SHFILEINFOW { - HICON hIcon; - int iIcon; - DWORD dwAttributes; - WCHAR[MAX_PATH] szDisplayName; - WCHAR[80] szTypeName; + HICON hIcon; + int iIcon; + DWORD dwAttributes; + WCHAR[MAX_PATH] szDisplayName; + WCHAR[80] szTypeName; } align(1) struct SHQUERYRBINFO { - DWORD cbSize = SHQUERYRBINFO.sizeof; - long i64Size; - long i64NumItems; + DWORD cbSize = SHQUERYRBINFO.sizeof; + long i64Size; + long i64NumItems; } alias SHQUERYRBINFO* LPSHQUERYRBINFO; extern (Windows) { - LPWSTR* CommandLineToArgvW(LPCWSTR, int*); - void DragAcceptFiles(HWND, BOOL); - void DragFinish(HDROP); - UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT); - UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT); - BOOL DragQueryPoint(HDROP, LPPOINT); - HICON DuplicateIcon(HINSTANCE, HICON); - HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD); - HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD); - HICON ExtractIconA(HINSTANCE, LPCSTR, UINT); - HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT); - UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT); - UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT); - HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR); - HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR); - UINT SHAppBarMessage(DWORD, PAPPBARDATA); - BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA); - BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW); - int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON); - int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON); - HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT); - HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT); - BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA); - BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW); - int SHFileOperationA(LPSHFILEOPSTRUCTA); - int SHFileOperationW(LPSHFILEOPSTRUCTW); - void SHFreeNameMappings(HANDLE); - DWORD SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); - DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); - HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); - HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); - HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD); - HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD); + LPWSTR* CommandLineToArgvW(LPCWSTR, int*); + void DragAcceptFiles(HWND, BOOL); + void DragFinish(HDROP); + UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT); + UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT); + BOOL DragQueryPoint(HDROP, LPPOINT); + HICON DuplicateIcon(HINSTANCE, HICON); + HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD); + HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD); + HICON ExtractIconA(HINSTANCE, LPCSTR, UINT); + HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT); + UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT); + UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT); + HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR); + HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR); + UINT SHAppBarMessage(DWORD, PAPPBARDATA); + BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA); + BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW); + int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON); + int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON); + HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT); + HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT); + BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA); + BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW); + int SHFileOperationA(LPSHFILEOPSTRUCTA); + int SHFileOperationW(LPSHFILEOPSTRUCTW); + void SHFreeNameMappings(HANDLE); + DWORD SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); + DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); + HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); + HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); + HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD); + HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD); } version (Unicode) { - alias NOTIFYICONDATAW NOTIFYICONDATA; - alias SHELLEXECUTEINFOW SHELLEXECUTEINFO; - alias SHFILEOPSTRUCTW SHFILEOPSTRUCT; - alias SHFILEINFOW SHFILEINFO; - alias DragQueryFileW DragQueryFile; - alias ExtractAssociatedIconW ExtractAssociatedIcon; - alias ExtractIconW ExtractIcon; - alias ExtractIconExW ExtractIconEx; - alias FindExecutableW FindExecutable; - alias Shell_NotifyIconW Shell_NotifyIcon; - alias ShellAboutW ShellAbout; - alias ShellExecuteW ShellExecute; - alias ShellExecuteExW ShellExecuteEx; - alias SHFileOperationW SHFileOperation; - alias SHGetFileInfoW SHGetFileInfo; - alias SHQueryRecycleBinW SHQueryRecycleBin; - alias SHEmptyRecycleBinW SHEmptyRecycleBin; + alias NOTIFYICONDATAW NOTIFYICONDATA; + alias SHELLEXECUTEINFOW SHELLEXECUTEINFO; + alias SHFILEOPSTRUCTW SHFILEOPSTRUCT; + alias SHFILEINFOW SHFILEINFO; + alias DragQueryFileW DragQueryFile; + alias ExtractAssociatedIconW ExtractAssociatedIcon; + alias ExtractIconW ExtractIcon; + alias ExtractIconExW ExtractIconEx; + alias FindExecutableW FindExecutable; + alias Shell_NotifyIconW Shell_NotifyIcon; + alias ShellAboutW ShellAbout; + alias ShellExecuteW ShellExecute; + alias ShellExecuteExW ShellExecuteEx; + alias SHFileOperationW SHFileOperation; + alias SHGetFileInfoW SHGetFileInfo; + alias SHQueryRecycleBinW SHQueryRecycleBin; + alias SHEmptyRecycleBinW SHEmptyRecycleBin; } else { - alias NOTIFYICONDATAA NOTIFYICONDATA; - alias SHELLEXECUTEINFOA SHELLEXECUTEINFO; - alias SHFILEOPSTRUCTA SHFILEOPSTRUCT; - alias SHFILEINFOA SHFILEINFO; - alias DragQueryFileA DragQueryFile; - alias ExtractAssociatedIconA ExtractAssociatedIcon; - alias ExtractIconA ExtractIcon; - alias ExtractIconExA ExtractIconEx; - alias FindExecutableA FindExecutable; - alias Shell_NotifyIconA Shell_NotifyIcon; - alias ShellAboutA ShellAbout; - alias ShellExecuteA ShellExecute; - alias ShellExecuteExA ShellExecuteEx; - alias SHFileOperationA SHFileOperation; - alias SHGetFileInfoA SHGetFileInfo; - alias SHQueryRecycleBinA SHQueryRecycleBin; - alias SHEmptyRecycleBinA SHEmptyRecycleBin; + alias NOTIFYICONDATAA NOTIFYICONDATA; + alias SHELLEXECUTEINFOA SHELLEXECUTEINFO; + alias SHFILEOPSTRUCTA SHFILEOPSTRUCT; + alias SHFILEINFOA SHFILEINFO; + alias DragQueryFileA DragQueryFile; + alias ExtractAssociatedIconA ExtractAssociatedIcon; + alias ExtractIconA ExtractIcon; + alias ExtractIconExA ExtractIconEx; + alias FindExecutableA FindExecutable; + alias Shell_NotifyIconA Shell_NotifyIcon; + alias ShellAboutA ShellAbout; + alias ShellExecuteA ShellExecute; + alias ShellExecuteExA ShellExecuteEx; + alias SHFileOperationA SHFileOperation; + alias SHGetFileInfoA SHGetFileInfo; + alias SHQueryRecycleBinA SHQueryRecycleBin; + alias SHEmptyRecycleBinA SHEmptyRecycleBin; } alias NOTIFYICONDATA* PNOTIFYICONDATA; diff --git a/src/core/sys/windows/shldisp.d b/src/core/sys/windows/shldisp.d index 3021d685aa..33ecb621c1 100644 --- a/src/core/sys/windows/shldisp.d +++ b/src/core/sys/windows/shldisp.d @@ -14,13 +14,13 @@ private import core.sys.windows.unknwn, core.sys.windows.windef, core.sys.window const DWORD ACO_AUTOSUGGEST = 0x01; interface IAutoComplete : IUnknown { - HRESULT Init(HWND, IUnknown, LPCOLESTR, LPCOLESTR); - HRESULT Enable(BOOL); + HRESULT Init(HWND, IUnknown, LPCOLESTR, LPCOLESTR); + HRESULT Enable(BOOL); } alias IAutoComplete LPAUTOCOMPLETE; interface IAutoComplete2 : IAutoComplete { - HRESULT SetOptions(DWORD); - HRESULT GetOptions(DWORD*); + HRESULT SetOptions(DWORD); + HRESULT GetOptions(DWORD*); } alias IAutoComplete2 LPAUTOCOMPLETE2; diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index bcc6e15eea..544a303fe0 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -50,13 +50,13 @@ const BFFM_SETOKTEXT = WM_USER + 105; const BFFM_SETEXPANDED = WM_USER + 106; version(Unicode) { - alias BFFM_SETSTATUSTEXTW BFFM_SETSTATUSTEXT; - alias BFFM_SETSELECTIONW BFFM_SETSELECTION; - alias BFFM_VALIDATEFAILEDW BFFM_VALIDATEFAILED; + alias BFFM_SETSTATUSTEXTW BFFM_SETSTATUSTEXT; + alias BFFM_SETSELECTIONW BFFM_SETSELECTION; + alias BFFM_VALIDATEFAILEDW BFFM_VALIDATEFAILED; } else { - alias BFFM_SETSTATUSTEXTA BFFM_SETSTATUSTEXT; - alias BFFM_SETSELECTIONA BFFM_SETSELECTION; - alias BFFM_VALIDATEFAILEDA BFFM_VALIDATEFAILED; + alias BFFM_SETSTATUSTEXTA BFFM_SETSTATUSTEXT; + alias BFFM_SETSELECTIONA BFFM_SETSELECTION; + alias BFFM_VALIDATEFAILEDA BFFM_VALIDATEFAILED; } const DVASPECT_SHORTNAME = 2; @@ -70,7 +70,7 @@ enum SHARD { SHARD_LINK, SHARD_APPIDINFOLINK, SHARD_SHELLITEM, // = 8 - SHARD_PATH = (_WIN32_UNICODE ? SHARD_PATHW : SHARD_PATHA) + SHARD_PATH = (_WIN32_UNICODE ? SHARD_PATHW : SHARD_PATHA) } const SHCNE_RENAMEITEM = 1; @@ -109,166 +109,166 @@ const SHCNF_FLUSH = 0x1000; const SHCNF_FLUSHNOWAIT = 0x2000; version(Unicode) { - alias SHCNF_PATHW SHCNF_PATH; - alias SHCNF_PRINTERW SHCNF_PRINTER; + alias SHCNF_PATHW SHCNF_PATH; + alias SHCNF_PRINTERW SHCNF_PRINTER; } else { - alias SHCNF_PATHA SHCNF_PATH; - alias SHCNF_PRINTERA SHCNF_PRINTER; + alias SHCNF_PATHA SHCNF_PATH; + alias SHCNF_PRINTERA SHCNF_PRINTER; } enum SFGAOF : DWORD { - SFGAO_CANCOPY = DROPEFFECT.DROPEFFECT_COPY, - SFGAO_CANMOVE = DROPEFFECT.DROPEFFECT_MOVE, - SFGAO_CANLINK = DROPEFFECT.DROPEFFECT_LINK, - SFGAO_CANRENAME = 0x00000010L, - SFGAO_CANDELETE = 0x00000020L, - SFGAO_HASPROPSHEET = 0x00000040L, - SFGAO_DROPTARGET = 0x00000100L, - SFGAO_CAPABILITYMASK = 0x00000177L, - SFGAO_ISSLOW = 0x00004000L, - SFGAO_GHOSTED = 0x00008000L, - SFGAO_LINK = 0x00010000L, - SFGAO_SHARE = 0x00020000L, - SFGAO_READONLY = 0x00040000L, - SFGAO_HIDDEN = 0x00080000L, - SFGAO_DISPLAYATTRMASK = (SFGAO_ISSLOW | SFGAO_GHOSTED | SFGAO_LINK - | SFGAO_SHARE | SFGAO_READONLY | SFGAO_HIDDEN), - SFGAO_FILESYSANCESTOR = 0x10000000L, - SFGAO_FOLDER = 0x20000000L, - SFGAO_FILESYSTEM = 0x40000000L, - SFGAO_HASSUBFOLDER = 0x80000000L, - SFGAO_CONTENTSMASK = 0x80000000L, - SFGAO_VALIDATE = 0x01000000L, - SFGAO_REMOVABLE = 0x02000000L, - SFGAO_COMPRESSED = 0x04000000L + SFGAO_CANCOPY = DROPEFFECT.DROPEFFECT_COPY, + SFGAO_CANMOVE = DROPEFFECT.DROPEFFECT_MOVE, + SFGAO_CANLINK = DROPEFFECT.DROPEFFECT_LINK, + SFGAO_CANRENAME = 0x00000010L, + SFGAO_CANDELETE = 0x00000020L, + SFGAO_HASPROPSHEET = 0x00000040L, + SFGAO_DROPTARGET = 0x00000100L, + SFGAO_CAPABILITYMASK = 0x00000177L, + SFGAO_ISSLOW = 0x00004000L, + SFGAO_GHOSTED = 0x00008000L, + SFGAO_LINK = 0x00010000L, + SFGAO_SHARE = 0x00020000L, + SFGAO_READONLY = 0x00040000L, + SFGAO_HIDDEN = 0x00080000L, + SFGAO_DISPLAYATTRMASK = (SFGAO_ISSLOW | SFGAO_GHOSTED | SFGAO_LINK + | SFGAO_SHARE | SFGAO_READONLY | SFGAO_HIDDEN), + SFGAO_FILESYSANCESTOR = 0x10000000L, + SFGAO_FOLDER = 0x20000000L, + SFGAO_FILESYSTEM = 0x40000000L, + SFGAO_HASSUBFOLDER = 0x80000000L, + SFGAO_CONTENTSMASK = 0x80000000L, + SFGAO_VALIDATE = 0x01000000L, + SFGAO_REMOVABLE = 0x02000000L, + SFGAO_COMPRESSED = 0x04000000L } const STRRET_WSTR = 0; const STRRET_OFFSET = 1; const STRRET_CSTR = 2; enum { - SHGDFIL_FINDDATA = 1, - SHGDFIL_NETRESOURCE, - SHGDFIL_DESCRIPTIONID + SHGDFIL_FINDDATA = 1, + SHGDFIL_NETRESOURCE, + SHGDFIL_DESCRIPTIONID } enum { - SHDID_ROOT_REGITEM = 1, - SHDID_FS_FILE, - SHDID_FS_DIRECTORY, - SHDID_FS_OTHER, - SHDID_COMPUTER_DRIVE35, - SHDID_COMPUTER_DRIVE525, - SHDID_COMPUTER_REMOVABLE, - SHDID_COMPUTER_FIXED, - SHDID_COMPUTER_NETDRIVE, - SHDID_COMPUTER_CDROM, - SHDID_COMPUTER_RAMDISK, - SHDID_COMPUTER_OTHER, - SHDID_NET_DOMAIN, - SHDID_NET_SERVER, - SHDID_NET_SHARE, - SHDID_NET_RESTOFNET, - SHDID_NET_OTHER + SHDID_ROOT_REGITEM = 1, + SHDID_FS_FILE, + SHDID_FS_DIRECTORY, + SHDID_FS_OTHER, + SHDID_COMPUTER_DRIVE35, + SHDID_COMPUTER_DRIVE525, + SHDID_COMPUTER_REMOVABLE, + SHDID_COMPUTER_FIXED, + SHDID_COMPUTER_NETDRIVE, + SHDID_COMPUTER_CDROM, + SHDID_COMPUTER_RAMDISK, + SHDID_COMPUTER_OTHER, + SHDID_NET_DOMAIN, + SHDID_NET_SERVER, + SHDID_NET_SHARE, + SHDID_NET_RESTOFNET, + SHDID_NET_OTHER } const TCHAR[] REGSTR_PATH_EXPLORER = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"; const TCHAR[] REGSTR_PATH_SPECIAL_FOLDERS=REGSTR_PATH_EXPLORER ~ "\\Shell Folders"; enum { - CSIDL_DESKTOP = 0, - CSIDL_INTERNET, - CSIDL_PROGRAMS, - CSIDL_CONTROLS, - CSIDL_PRINTERS, - CSIDL_PERSONAL, - CSIDL_FAVORITES, - CSIDL_STARTUP, - CSIDL_RECENT, - CSIDL_SENDTO, - CSIDL_BITBUCKET, - CSIDL_STARTMENU, // = 11 - CSIDL_MYMUSIC = 13, - CSIDL_MYVIDEO, // = 14 - CSIDL_DESKTOPDIRECTORY = 16, - CSIDL_DRIVES, - CSIDL_NETWORK, - CSIDL_NETHOOD, - CSIDL_FONTS, - CSIDL_TEMPLATES, - CSIDL_COMMON_STARTMENU, - CSIDL_COMMON_PROGRAMS, - CSIDL_COMMON_STARTUP, - CSIDL_COMMON_DESKTOPDIRECTORY, - CSIDL_APPDATA, - CSIDL_PRINTHOOD, - CSIDL_LOCAL_APPDATA, - CSIDL_ALTSTARTUP, - CSIDL_COMMON_ALTSTARTUP, - CSIDL_COMMON_FAVORITES, - CSIDL_INTERNET_CACHE, - CSIDL_COOKIES, - CSIDL_HISTORY, - CSIDL_COMMON_APPDATA, - CSIDL_WINDOWS, - CSIDL_SYSTEM, - CSIDL_PROGRAM_FILES, - CSIDL_MYPICTURES, - CSIDL_PROFILE, - CSIDL_SYSTEMX86, - CSIDL_PROGRAM_FILESX86, - CSIDL_PROGRAM_FILES_COMMON, - CSIDL_PROGRAM_FILES_COMMONX86, - CSIDL_COMMON_TEMPLATES, - CSIDL_COMMON_DOCUMENTS, - CSIDL_COMMON_ADMINTOOLS, - CSIDL_ADMINTOOLS, - CSIDL_CONNECTIONS, // = 49 - CSIDL_COMMON_MUSIC = 53, - CSIDL_COMMON_PICTURES, - CSIDL_COMMON_VIDEO, - CSIDL_RESOURCES, - CSIDL_RESOURCES_LOCALIZED, - CSIDL_COMMON_OEM_LINKS, - CSIDL_CDBURN_AREA, // = 59 - CSIDL_COMPUTERSNEARME = 61, - CSIDL_FLAG_DONT_VERIFY = 0x4000, - CSIDL_FLAG_CREATE = 0x8000, - CSIDL_FLAG_MASK = 0xFF00 + CSIDL_DESKTOP = 0, + CSIDL_INTERNET, + CSIDL_PROGRAMS, + CSIDL_CONTROLS, + CSIDL_PRINTERS, + CSIDL_PERSONAL, + CSIDL_FAVORITES, + CSIDL_STARTUP, + CSIDL_RECENT, + CSIDL_SENDTO, + CSIDL_BITBUCKET, + CSIDL_STARTMENU, // = 11 + CSIDL_MYMUSIC = 13, + CSIDL_MYVIDEO, // = 14 + CSIDL_DESKTOPDIRECTORY = 16, + CSIDL_DRIVES, + CSIDL_NETWORK, + CSIDL_NETHOOD, + CSIDL_FONTS, + CSIDL_TEMPLATES, + CSIDL_COMMON_STARTMENU, + CSIDL_COMMON_PROGRAMS, + CSIDL_COMMON_STARTUP, + CSIDL_COMMON_DESKTOPDIRECTORY, + CSIDL_APPDATA, + CSIDL_PRINTHOOD, + CSIDL_LOCAL_APPDATA, + CSIDL_ALTSTARTUP, + CSIDL_COMMON_ALTSTARTUP, + CSIDL_COMMON_FAVORITES, + CSIDL_INTERNET_CACHE, + CSIDL_COOKIES, + CSIDL_HISTORY, + CSIDL_COMMON_APPDATA, + CSIDL_WINDOWS, + CSIDL_SYSTEM, + CSIDL_PROGRAM_FILES, + CSIDL_MYPICTURES, + CSIDL_PROFILE, + CSIDL_SYSTEMX86, + CSIDL_PROGRAM_FILESX86, + CSIDL_PROGRAM_FILES_COMMON, + CSIDL_PROGRAM_FILES_COMMONX86, + CSIDL_COMMON_TEMPLATES, + CSIDL_COMMON_DOCUMENTS, + CSIDL_COMMON_ADMINTOOLS, + CSIDL_ADMINTOOLS, + CSIDL_CONNECTIONS, // = 49 + CSIDL_COMMON_MUSIC = 53, + CSIDL_COMMON_PICTURES, + CSIDL_COMMON_VIDEO, + CSIDL_RESOURCES, + CSIDL_RESOURCES_LOCALIZED, + CSIDL_COMMON_OEM_LINKS, + CSIDL_CDBURN_AREA, // = 59 + CSIDL_COMPUTERSNEARME = 61, + CSIDL_FLAG_DONT_VERIFY = 0x4000, + CSIDL_FLAG_CREATE = 0x8000, + CSIDL_FLAG_MASK = 0xFF00 } const TCHAR[] - CFSTR_SHELLIDLIST = "Shell IDList Array", - CFSTR_SHELLIDLISTOFFSET = "Shell Object Offsets", - CFSTR_NETRESOURCES = "Net Resource", - CFSTR_FILECONTENTS = "FileContents", - CFSTR_FILENAMEA = "FileName", - CFSTR_FILENAMEMAPA = "FileNameMap", - CFSTR_FILEDESCRIPTORA = "FileGroupDescriptor", - CFSTR_INETURLA = "UniformResourceLocator", - CFSTR_SHELLURL = CFSTR_INETURLA, - CFSTR_FILENAMEW = "FileNameW", - CFSTR_FILENAMEMAPW = "FileNameMapW", - CFSTR_FILEDESCRIPTORW = "FileGroupDescriptorW", - CFSTR_INETURLW = "UniformResourceLocatorW"; + CFSTR_SHELLIDLIST = "Shell IDList Array", + CFSTR_SHELLIDLISTOFFSET = "Shell Object Offsets", + CFSTR_NETRESOURCES = "Net Resource", + CFSTR_FILECONTENTS = "FileContents", + CFSTR_FILENAMEA = "FileName", + CFSTR_FILENAMEMAPA = "FileNameMap", + CFSTR_FILEDESCRIPTORA = "FileGroupDescriptor", + CFSTR_INETURLA = "UniformResourceLocator", + CFSTR_SHELLURL = CFSTR_INETURLA, + CFSTR_FILENAMEW = "FileNameW", + CFSTR_FILENAMEMAPW = "FileNameMapW", + CFSTR_FILEDESCRIPTORW = "FileGroupDescriptorW", + CFSTR_INETURLW = "UniformResourceLocatorW"; version(Unicode) { - alias CFSTR_FILENAMEW CFSTR_FILENAME; - alias CFSTR_FILENAMEMAPW CFSTR_FILENAMEMAP; - alias CFSTR_FILEDESCRIPTORW CFSTR_FILEDESCRIPTOR; - alias CFSTR_INETURLW CFSTR_INETURL; + alias CFSTR_FILENAMEW CFSTR_FILENAME; + alias CFSTR_FILENAMEMAPW CFSTR_FILENAMEMAP; + alias CFSTR_FILEDESCRIPTORW CFSTR_FILEDESCRIPTOR; + alias CFSTR_INETURLW CFSTR_INETURL; } else { - alias CFSTR_FILENAMEA CFSTR_FILENAME; - alias CFSTR_FILENAMEMAPA CFSTR_FILENAMEMAP; - alias CFSTR_FILEDESCRIPTORA CFSTR_FILEDESCRIPTOR; - alias CFSTR_INETURLA CFSTR_INETURL; + alias CFSTR_FILENAMEA CFSTR_FILENAME; + alias CFSTR_FILENAMEMAPA CFSTR_FILENAMEMAP; + alias CFSTR_FILEDESCRIPTORA CFSTR_FILEDESCRIPTOR; + alias CFSTR_INETURLA CFSTR_INETURL; } const TCHAR[] - CFSTR_PRINTERGROUP = "PrinterFriendlyName", - CFSTR_INDRAGLOOP = "InShellDragLoop", - CFSTR_PASTESUCCEEDED = "Paste Succeeded", - CFSTR_PERFORMEDDROPEFFECT = "Performed DropEffect", - CFSTR_PREFERREDDROPEFFECT = "Preferred DropEffect"; + CFSTR_PRINTERGROUP = "PrinterFriendlyName", + CFSTR_INDRAGLOOP = "InShellDragLoop", + CFSTR_PASTESUCCEEDED = "Paste Succeeded", + CFSTR_PERFORMEDDROPEFFECT = "Performed DropEffect", + CFSTR_PREFERREDDROPEFFECT = "Preferred DropEffect"; const CMF_NORMAL=0; const CMF_DEFAULTONLY=1; @@ -288,19 +288,19 @@ const GCS_VALIDATEW=6; const GCS_UNICODE=4; version(Unicode) { - alias GCS_VERBW GCS_VERB; - alias GCS_HELPTEXTW GCS_HELPTEXT; - alias GCS_VALIDATEW GCS_VALIDATE; + alias GCS_VERBW GCS_VERB; + alias GCS_HELPTEXTW GCS_HELPTEXT; + alias GCS_VALIDATEW GCS_VALIDATE; } else { - alias GCS_VERBA GCS_VERB; - alias GCS_HELPTEXTA GCS_HELPTEXT; - alias GCS_VALIDATEA GCS_VALIDATE; + alias GCS_VERBA GCS_VERB; + alias GCS_HELPTEXTA GCS_HELPTEXT; + alias GCS_VALIDATEA GCS_VALIDATE; } const TCHAR[] - CMDSTR_NEWFOLDER = "NewFolder", - CMDSTR_VIEWLIST = "ViewList", - CMDSTR_VIEWDETAILS = "ViewDetails"; + CMDSTR_NEWFOLDER = "NewFolder", + CMDSTR_VIEWLIST = "ViewList", + CMDSTR_VIEWDETAILS = "ViewDetails"; const CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY; const CMIC_MASK_ICON = SEE_MASK_ICON; @@ -360,9 +360,9 @@ const SBSP_INITIATEDBYHLINKFRAME = 0x80000000; const SBSP_REDIRECT = 0x40000000; enum { - FCW_STATUS=1, - FCW_TOOLBAR, - FCW_TREE + FCW_STATUS=1, + FCW_TOOLBAR, + FCW_TREE } const FCT_MERGE=1; @@ -386,20 +386,20 @@ const UINT SV2GV_DEFAULTVIEW=-2; alias DWORD SHGDNF; struct CIDA { - UINT cidl; - UINT[1] aoffset; + UINT cidl; + UINT[1] aoffset; } alias CIDA* LPIDA; struct SHITEMID { - USHORT cb; - BYTE[1] abID; + USHORT cb; + BYTE[1] abID; } alias SHITEMID* LPSHITEMID; alias const(SHITEMID)* LPCSHITEMID; struct ITEMIDLIST { - SHITEMID mkid; + SHITEMID mkid; } alias ITEMIDLIST* LPITEMIDLIST; alias const(ITEMIDLIST)* LPCITEMIDLIST; @@ -407,505 +407,505 @@ alias const(ITEMIDLIST)* LPCITEMIDLIST; alias int function(HWND, UINT, LPARAM, LPARAM) BFFCALLBACK; struct BROWSEINFOA { - HWND hwndOwner; - LPCITEMIDLIST pidlRoot; - LPSTR pszDisplayName; - LPCSTR lpszTitle; - UINT ulFlags; - BFFCALLBACK lpfn; - LPARAM lParam; - int iImage; + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPSTR pszDisplayName; + LPCSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; } alias BROWSEINFOA* PBROWSEINFOA, LPBROWSEINFOA; struct BROWSEINFOW { - HWND hwndOwner; - LPCITEMIDLIST pidlRoot; - LPWSTR pszDisplayName; - LPCWSTR lpszTitle; - UINT ulFlags; - BFFCALLBACK lpfn; - LPARAM lParam; - int iImage; + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPWSTR pszDisplayName; + LPCWSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; } alias BROWSEINFOW* PBROWSEINFOW, LPBROWSEINFOW; struct CMINVOKECOMMANDINFO { - DWORD cbSize = this.sizeof; - DWORD fMask; - HWND hwnd; - LPCSTR lpVerb; - LPCSTR lpParameters; - LPCSTR lpDirectory; - int nShow; - DWORD dwHotKey; - HANDLE hIcon; + DWORD cbSize = this.sizeof; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + DWORD dwHotKey; + HANDLE hIcon; } alias CMINVOKECOMMANDINFO* LPCMINVOKECOMMANDINFO; struct DROPFILES { - DWORD pFiles; - POINT pt; - BOOL fNC; - BOOL fWide; + DWORD pFiles; + POINT pt; + BOOL fNC; + BOOL fWide; } alias DROPFILES* LPDROPFILES; enum SHGNO { - SHGDN_NORMAL = 0, - SHGDN_INFOLDER, - SHGDN_FOREDITING = 0x1000, - SHGDN_INCLUDE_NONFILESYS = 0x2000, - SHGDN_FORADDRESSBAR = 0x4000, - SHGDN_FORPARSING = 0x8000 + SHGDN_NORMAL = 0, + SHGDN_INFOLDER, + SHGDN_FOREDITING = 0x1000, + SHGDN_INCLUDE_NONFILESYS = 0x2000, + SHGDN_FORADDRESSBAR = 0x4000, + SHGDN_FORPARSING = 0x8000 } enum SHCONTF { - SHCONTF_FOLDERS = 32, - SHCONTF_NONFOLDERS = 64, - SHCONTF_INCLUDEHIDDEN = 128, - SHCONTF_INIT_ON_FIRST_NEXT = 256, - SHCONTF_NETPRINTERSRCH = 512, - SHCONTF_SHAREABLE = 1024, - SHCONTF_STORAGE = 2048 + SHCONTF_FOLDERS = 32, + SHCONTF_NONFOLDERS = 64, + SHCONTF_INCLUDEHIDDEN = 128, + SHCONTF_INIT_ON_FIRST_NEXT = 256, + SHCONTF_NETPRINTERSRCH = 512, + SHCONTF_SHAREABLE = 1024, + SHCONTF_STORAGE = 2048 } struct STRRET { - UINT uType; - union { - LPWSTR pOleStr; - UINT uOffset; - char[MAX_PATH] cStr; - } + UINT uType; + union { + LPWSTR pOleStr; + UINT uOffset; + char[MAX_PATH] cStr; + } } alias STRRET* LPSTRRET; enum FD_FLAGS { - FD_CLSID = 1, - FD_SIZEPOINT = 2, - FD_ATTRIBUTES = 4, - FD_CREATETIME = 8, - FD_ACCESSTIME = 16, - FD_WRITESTIME = 32, - FD_FILESIZE = 64, - FD_LINKUI = 0x8000 + FD_CLSID = 1, + FD_SIZEPOINT = 2, + FD_ATTRIBUTES = 4, + FD_CREATETIME = 8, + FD_ACCESSTIME = 16, + FD_WRITESTIME = 32, + FD_FILESIZE = 64, + FD_LINKUI = 0x8000 } struct FILEDESCRIPTORA { - DWORD dwFlags; - CLSID clsid; - SIZEL sizel; - POINTL pointl; - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - CHAR[MAX_PATH] cFileName; + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + CHAR[MAX_PATH] cFileName; } alias FILEDESCRIPTORA* LPFILEDESCRIPTORA; struct FILEDESCRIPTORW { - DWORD dwFlags; - CLSID clsid; - SIZEL sizel; - POINTL pointl; - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - WCHAR[MAX_PATH] cFileName; + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + WCHAR[MAX_PATH] cFileName; } alias FILEDESCRIPTORW* LPFILEDESCRIPTORW; struct FILEGROUPDESCRIPTORA { - UINT cItems; - FILEDESCRIPTORA[1] fgd; + UINT cItems; + FILEDESCRIPTORA[1] fgd; } alias FILEGROUPDESCRIPTORA* LPFILEGROUPDESCRIPTORA; struct FILEGROUPDESCRIPTORW { - UINT cItems; - FILEDESCRIPTORW[1] fgd; + UINT cItems; + FILEDESCRIPTORW[1] fgd; } alias FILEGROUPDESCRIPTORW* LPFILEGROUPDESCRIPTORW; enum SLR_FLAGS { - SLR_NO_UI = 1, - SLR_ANY_MATCH = 2, - SLR_UPDATE = 4, - SLR_NOUPDATE = 8, - SLR_NOSEARCH = 16, - SLR_NOTRACK = 32, - SLR_NOLINKINFO = 64, - SLR_INVOKE_MSI = 128 + SLR_NO_UI = 1, + SLR_ANY_MATCH = 2, + SLR_UPDATE = 4, + SLR_NOUPDATE = 8, + SLR_NOSEARCH = 16, + SLR_NOTRACK = 32, + SLR_NOLINKINFO = 64, + SLR_INVOKE_MSI = 128 } enum SLGP_FLAGS { - SLGP_SHORTPATH=1, - SLGP_UNCPRIORITY=2, - SLGP_RAWPATH=4 + SLGP_SHORTPATH=1, + SLGP_UNCPRIORITY=2, + SLGP_RAWPATH=4 } alias PBYTE LPVIEWSETTINGS; enum FOLDERFLAGS { - FWF_AUTOARRANGE = 1, - FWF_ABBREVIATEDNAMES = 2, - FWF_SNAPTOGRID = 4, - FWF_OWNERDATA = 8, - FWF_BESTFITWINDOW = 16, - FWF_DESKTOP = 32, - FWF_SINGLESEL = 64, - FWF_NOSUBFOLDERS = 128, - FWF_TRANSPARENT = 256, - FWF_NOCLIENTEDGE = 512, - FWF_NOSCROLL = 0x400, - FWF_ALIGNLEFT = 0x800, - FWF_SINGLECLICKACTIVATE = 0x8000 + FWF_AUTOARRANGE = 1, + FWF_ABBREVIATEDNAMES = 2, + FWF_SNAPTOGRID = 4, + FWF_OWNERDATA = 8, + FWF_BESTFITWINDOW = 16, + FWF_DESKTOP = 32, + FWF_SINGLESEL = 64, + FWF_NOSUBFOLDERS = 128, + FWF_TRANSPARENT = 256, + FWF_NOCLIENTEDGE = 512, + FWF_NOSCROLL = 0x400, + FWF_ALIGNLEFT = 0x800, + FWF_SINGLECLICKACTIVATE = 0x8000 } enum FOLDERVIEWMODE { - FVM_ICON = 1, - FVM_SMALLICON, - FVM_LIST, - FVM_DETAILS + FVM_ICON = 1, + FVM_SMALLICON, + FVM_LIST, + FVM_DETAILS } struct FOLDERSETTINGS { - UINT ViewMode; - UINT fFlags; + UINT ViewMode; + UINT fFlags; } alias FOLDERSETTINGS* LPFOLDERSETTINGS; alias const(FOLDERSETTINGS)* LPCFOLDERSETTINGS; struct FVSHOWINFO { - DWORD cbSize = this.sizeof; - HWND hwndOwner; - int iShow; - DWORD dwFlags; - RECT rect; - LPUNKNOWN punkRel; - OLECHAR[MAX_PATH] strNewFile; + DWORD cbSize = this.sizeof; + HWND hwndOwner; + int iShow; + DWORD dwFlags; + RECT rect; + LPUNKNOWN punkRel; + OLECHAR[MAX_PATH] strNewFile; } alias FVSHOWINFO* LPFVSHOWINFO; struct NRESARRAY { - UINT cItems; - NETRESOURCE[1] nr; + UINT cItems; + NETRESOURCE[1] nr; } alias NRESARRAY* LPNRESARRAY; enum { - SBSC_HIDE, - SBSC_SHOW, - SBSC_TOGGLE, - SBSC_QUERY + SBSC_HIDE, + SBSC_SHOW, + SBSC_TOGGLE, + SBSC_QUERY } enum { - SBCMDID_ENABLESHOWTREE, - SBCMDID_SHOWCONTROL, - SBCMDID_CANCELNAVIGATION, - SBCMDID_MAYSAVECHANGES, - SBCMDID_SETHLINKFRAME, - SBCMDID_ENABLESTOP, - SBCMDID_OPTIONS + SBCMDID_ENABLESHOWTREE, + SBCMDID_SHOWCONTROL, + SBCMDID_CANCELNAVIGATION, + SBCMDID_MAYSAVECHANGES, + SBCMDID_SETHLINKFRAME, + SBCMDID_ENABLESTOP, + SBCMDID_OPTIONS } enum SVUIA_STATUS { - SVUIA_DEACTIVATE, - SVUIA_ACTIVATE_NOFOCUS, - SVUIA_ACTIVATE_FOCUS, - SVUIA_INPLACEACTIVATE + SVUIA_DEACTIVATE, + SVUIA_ACTIVATE_NOFOCUS, + SVUIA_ACTIVATE_FOCUS, + SVUIA_INPLACEACTIVATE } static if (_WIN32_IE >= 0x500) { - struct EXTRASEARCH - { - GUID guidSearch; - WCHAR[80] wszFriendlyName; - WCHAR[2084] wszUrl; - } - alias EXTRASEARCH* LPEXTRASEARCH; - - alias DWORD SHCOLSTATEF; - - struct SHCOLUMNID { - GUID fmtid; - DWORD pid; - } - alias SHCOLUMNID* LPSHCOLUMNID; - alias const(SHCOLUMNID)* LPCSHCOLUMNID; - - struct SHELLDETAILS { - int fmt; - int cxChar; - STRRET str; - } - alias SHELLDETAILS* LPSHELLDETAILS; - - struct PERSIST_FOLDER_TARGET_INFO - { - LPITEMIDLIST pidlTargetFolder; - WCHAR[MAX_PATH] szTargetParsingName; - WCHAR[MAX_PATH] szNetworkProvider; - DWORD dwAttributes; - int csidl; - } - - enum SHGFP_TYPE { - SHGFP_TYPE_CURRENT = 0, - SHGFP_TYPE_DEFAULT = 1, - } + struct EXTRASEARCH + { + GUID guidSearch; + WCHAR[80] wszFriendlyName; + WCHAR[2084] wszUrl; + } + alias EXTRASEARCH* LPEXTRASEARCH; + + alias DWORD SHCOLSTATEF; + + struct SHCOLUMNID { + GUID fmtid; + DWORD pid; + } + alias SHCOLUMNID* LPSHCOLUMNID; + alias const(SHCOLUMNID)* LPCSHCOLUMNID; + + struct SHELLDETAILS { + int fmt; + int cxChar; + STRRET str; + } + alias SHELLDETAILS* LPSHELLDETAILS; + + struct PERSIST_FOLDER_TARGET_INFO + { + LPITEMIDLIST pidlTargetFolder; + WCHAR[MAX_PATH] szTargetParsingName; + WCHAR[MAX_PATH] szNetworkProvider; + DWORD dwAttributes; + int csidl; + } + + enum SHGFP_TYPE { + SHGFP_TYPE_CURRENT = 0, + SHGFP_TYPE_DEFAULT = 1, + } } interface IEnumIDList : IUnknown { - HRESULT Next(ULONG, LPITEMIDLIST*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumIDList*); + HRESULT Next(ULONG, LPITEMIDLIST*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumIDList*); } alias IEnumIDList LPENUMIDLIST; interface IObjMgr : IUnknown { - HRESULT Append(IUnknown); - HRESULT Remove(IUnknown); + HRESULT Append(IUnknown); + HRESULT Remove(IUnknown); } interface IContextMenu : IUnknown { - HRESULT QueryContextMenu(HMENU, UINT, UINT, UINT, UINT); - HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); - HRESULT GetCommandString(UINT, UINT, PUINT, LPSTR, UINT); + HRESULT QueryContextMenu(HMENU, UINT, UINT, UINT, UINT); + HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); + HRESULT GetCommandString(UINT, UINT, PUINT, LPSTR, UINT); } alias IContextMenu LPCONTEXTMENU; interface IContextMenu2 : IContextMenu { - HRESULT HandleMenuMsg(UINT, WPARAM, LPARAM); + HRESULT HandleMenuMsg(UINT, WPARAM, LPARAM); }; alias IContextMenu2 LPCONTEXTMENU2; static if (_WIN32_IE >= 0x500) { - align(8) { - struct SHCOLUMNINIT { - ULONG dwFlags; - ULONG dwReserved; - WCHAR[MAX_PATH] wszFolder; - } - alias SHCOLUMNINIT* LPSHCOLUMNINIT; - alias const(SHCOLUMNINIT)* LPCSHCOLUMNINIT; - - struct SHCOLUMNDATA { - ULONG dwFlags; - DWORD dwFileAttributes; - ULONG dwReserved; - WCHAR *pwszExt; - WCHAR[MAX_PATH] wszFile; - } - alias SHCOLUMNDATA* LPSHCOLUMNDATA; - alias const(SHCOLUMNDATA)* LPCSHCOLUMNDATA; - } - - const MAX_COLUMN_NAME_LEN = 80; - const MAX_COLUMN_DESC_LEN = 128; - - align(1) struct SHCOLUMNINFO { - SHCOLUMNID scid; - VARTYPE vt; - DWORD fmt; - UINT cChars; - DWORD csFlags; - WCHAR[MAX_COLUMN_NAME_LEN] wszTitle; - WCHAR[MAX_COLUMN_DESC_LEN] wszDescription; - } - alias SHCOLUMNINFO* LPSHCOLUMNINFO; - alias const(SHCOLUMNINFO)* LPCSHCOLUMNINFO; - - enum SHCOLSTATE { - SHCOLSTATE_TYPE_STR = 0x00000001, - SHCOLSTATE_TYPE_INT = 0x00000002, - SHCOLSTATE_TYPE_DATE = 0x00000003, - SHCOLSTATE_TYPEMASK = 0x0000000f, - SHCOLSTATE_ONBYDEFAULT = 0x00000010, - SHCOLSTATE_SLOW = 0x00000020, - SHCOLSTATE_EXTENDED = 0x00000040, - SHCOLSTATE_SECONDARYUI = 0x00000080, - SHCOLSTATE_HIDDEN = 0x00000100, - SHCOLSTATE_PREFER_VARCMP = 0x00000200 - } - - interface IColumnProvider : IUnknown { - HRESULT Initialize(LPCSHCOLUMNINIT); - HRESULT GetColumnInfo(DWORD, SHCOLUMNINFO*); - HRESULT GetItemData(LPCSHCOLUMNID, LPCSHCOLUMNDATA, VARIANT*); - } + align(8) { + struct SHCOLUMNINIT { + ULONG dwFlags; + ULONG dwReserved; + WCHAR[MAX_PATH] wszFolder; + } + alias SHCOLUMNINIT* LPSHCOLUMNINIT; + alias const(SHCOLUMNINIT)* LPCSHCOLUMNINIT; + + struct SHCOLUMNDATA { + ULONG dwFlags; + DWORD dwFileAttributes; + ULONG dwReserved; + WCHAR *pwszExt; + WCHAR[MAX_PATH] wszFile; + } + alias SHCOLUMNDATA* LPSHCOLUMNDATA; + alias const(SHCOLUMNDATA)* LPCSHCOLUMNDATA; + } + + const MAX_COLUMN_NAME_LEN = 80; + const MAX_COLUMN_DESC_LEN = 128; + + align(1) struct SHCOLUMNINFO { + SHCOLUMNID scid; + VARTYPE vt; + DWORD fmt; + UINT cChars; + DWORD csFlags; + WCHAR[MAX_COLUMN_NAME_LEN] wszTitle; + WCHAR[MAX_COLUMN_DESC_LEN] wszDescription; + } + alias SHCOLUMNINFO* LPSHCOLUMNINFO; + alias const(SHCOLUMNINFO)* LPCSHCOLUMNINFO; + + enum SHCOLSTATE { + SHCOLSTATE_TYPE_STR = 0x00000001, + SHCOLSTATE_TYPE_INT = 0x00000002, + SHCOLSTATE_TYPE_DATE = 0x00000003, + SHCOLSTATE_TYPEMASK = 0x0000000f, + SHCOLSTATE_ONBYDEFAULT = 0x00000010, + SHCOLSTATE_SLOW = 0x00000020, + SHCOLSTATE_EXTENDED = 0x00000040, + SHCOLSTATE_SECONDARYUI = 0x00000080, + SHCOLSTATE_HIDDEN = 0x00000100, + SHCOLSTATE_PREFER_VARCMP = 0x00000200 + } + + interface IColumnProvider : IUnknown { + HRESULT Initialize(LPCSHCOLUMNINIT); + HRESULT GetColumnInfo(DWORD, SHCOLUMNINFO*); + HRESULT GetItemData(LPCSHCOLUMNID, LPCSHCOLUMNDATA, VARIANT*); + } }/* _WIN32_IE >= 0x500 */ interface IQueryInfo : IUnknown { - HRESULT GetInfoTip(DWORD, WCHAR**); - HRESULT GetInfoFlags(DWORD*); + HRESULT GetInfoTip(DWORD, WCHAR**); + HRESULT GetInfoFlags(DWORD*); } interface IShellExtInit : IUnknown { - HRESULT Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY); + HRESULT Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY); } alias IShellExtInit LPSHELLEXTINIT; interface IShellPropSheetExt : IUnknown { - HRESULT AddPages(LPFNADDPROPSHEETPAGE, LPARAM); - HRESULT ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT AddPages(LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM); } alias IShellPropSheetExt LPSHELLPROPSHEETEXT; interface IExtractIconA : IUnknown { - HRESULT GetIconLocation(UINT, LPSTR, UINT, int*, PUINT); - HRESULT Extract(LPCSTR, UINT, HICON*, HICON*, UINT); + HRESULT GetIconLocation(UINT, LPSTR, UINT, int*, PUINT); + HRESULT Extract(LPCSTR, UINT, HICON*, HICON*, UINT); }; alias IExtractIconA LPEXTRACTICONA; interface IExtractIconW : IUnknown { - HRESULT GetIconLocation(UINT, LPWSTR, UINT, int*, PUINT); - HRESULT Extract(LPCWSTR, UINT, HICON*, HICON*, UINT); + HRESULT GetIconLocation(UINT, LPWSTR, UINT, int*, PUINT); + HRESULT Extract(LPCWSTR, UINT, HICON*, HICON*, UINT); } alias IExtractIconW LPEXTRACTICONW; version(Unicode) { - alias IExtractIconW IExtractIcon; - alias LPEXTRACTICONW LPEXTRACTICON; + alias IExtractIconW IExtractIcon; + alias LPEXTRACTICONW LPEXTRACTICON; } else { - alias IExtractIconA IExtractIcon; - alias LPEXTRACTICONA LPEXTRACTICON; + alias IExtractIconA IExtractIcon; + alias LPEXTRACTICONA LPEXTRACTICON; } interface IShellLinkA : IUnknown { - HRESULT GetPath(LPSTR, int, WIN32_FIND_DATAA*, DWORD); - HRESULT GetIDList(LPITEMIDLIST*); - HRESULT SetIDList(LPCITEMIDLIST); - HRESULT GetDescription(LPSTR, int); - HRESULT SetDescription(LPCSTR); - HRESULT GetWorkingDirectory(LPSTR, int); - HRESULT SetWorkingDirectory(LPCSTR); - HRESULT GetArguments(LPSTR, int); - HRESULT SetArguments(LPCSTR); - HRESULT GetHotkey(PWORD); - HRESULT SetHotkey(WORD); - HRESULT GetShowCmd(int*); - HRESULT SetShowCmd(int); - HRESULT GetIconLocation(LPSTR, int, int*); - HRESULT SetIconLocation(LPCSTR, int); - HRESULT SetRelativePath(LPCSTR , DWORD); - HRESULT Resolve(HWND, DWORD); - HRESULT SetPath(LPCSTR); + HRESULT GetPath(LPSTR, int, WIN32_FIND_DATAA*, DWORD); + HRESULT GetIDList(LPITEMIDLIST*); + HRESULT SetIDList(LPCITEMIDLIST); + HRESULT GetDescription(LPSTR, int); + HRESULT SetDescription(LPCSTR); + HRESULT GetWorkingDirectory(LPSTR, int); + HRESULT SetWorkingDirectory(LPCSTR); + HRESULT GetArguments(LPSTR, int); + HRESULT SetArguments(LPCSTR); + HRESULT GetHotkey(PWORD); + HRESULT SetHotkey(WORD); + HRESULT GetShowCmd(int*); + HRESULT SetShowCmd(int); + HRESULT GetIconLocation(LPSTR, int, int*); + HRESULT SetIconLocation(LPCSTR, int); + HRESULT SetRelativePath(LPCSTR , DWORD); + HRESULT Resolve(HWND, DWORD); + HRESULT SetPath(LPCSTR); } interface IShellLinkW : IUnknown { - HRESULT GetPath(LPWSTR, int, WIN32_FIND_DATAW*, DWORD); - HRESULT GetIDList(LPITEMIDLIST*); - HRESULT SetIDList(LPCITEMIDLIST); - HRESULT GetDescription(LPWSTR, int); - HRESULT SetDescription(LPCWSTR); - HRESULT GetWorkingDirectory(LPWSTR, int); - HRESULT SetWorkingDirectory(LPCWSTR); - HRESULT GetArguments(LPWSTR, int); - HRESULT SetArguments(LPCWSTR); - HRESULT GetHotkey(PWORD); - HRESULT SetHotkey(WORD); - HRESULT GetShowCmd(int*); - HRESULT SetShowCmd(int); - HRESULT GetIconLocation(LPWSTR, int, int*); - HRESULT SetIconLocation(LPCWSTR, int); - HRESULT SetRelativePath(LPCWSTR , DWORD); - HRESULT Resolve(HWND, DWORD); - HRESULT SetPath(LPCWSTR); + HRESULT GetPath(LPWSTR, int, WIN32_FIND_DATAW*, DWORD); + HRESULT GetIDList(LPITEMIDLIST*); + HRESULT SetIDList(LPCITEMIDLIST); + HRESULT GetDescription(LPWSTR, int); + HRESULT SetDescription(LPCWSTR); + HRESULT GetWorkingDirectory(LPWSTR, int); + HRESULT SetWorkingDirectory(LPCWSTR); + HRESULT GetArguments(LPWSTR, int); + HRESULT SetArguments(LPCWSTR); + HRESULT GetHotkey(PWORD); + HRESULT SetHotkey(WORD); + HRESULT GetShowCmd(int*); + HRESULT SetShowCmd(int); + HRESULT GetIconLocation(LPWSTR, int, int*); + HRESULT SetIconLocation(LPCWSTR, int); + HRESULT SetRelativePath(LPCWSTR , DWORD); + HRESULT Resolve(HWND, DWORD); + HRESULT SetPath(LPCWSTR); } interface IShellFolder : IUnknown { - HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); - HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); - HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); - HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); - HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); - HRESULT CreateViewObject(HWND, REFIID, PVOID*); - HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); - HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); - HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); - HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); + HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); + HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); + HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); + HRESULT CreateViewObject(HWND, REFIID, PVOID*); + HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); + HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); + HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); + HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); } alias IShellFolder LPSHELLFOLDER; static if (_WIN32_IE >= 0x500) { interface IEnumExtraSearch: IUnknown { - HRESULT Next(ULONG, LPEXTRASEARCH*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumExtraSearch*); + HRESULT Next(ULONG, LPEXTRASEARCH*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumExtraSearch*); } alias IEnumExtraSearch LPENUMEXTRASEARCH; interface IShellFolder2 : IShellFolder { - HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); - HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); - HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); - HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); - HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); - HRESULT CreateViewObject(HWND, REFIID, PVOID*); - HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); - HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); - HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); - HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); - HRESULT GetDefaultSearchGUID(GUID*); - HRESULT EnumSearches(IEnumExtraSearch*); - HRESULT GetDefaultColumn(DWORD, ULONG*, ULONG*); - HRESULT GetDefaultColumnState(UINT, SHCOLSTATEF*); - HRESULT GetDetailsEx(LPCITEMIDLIST, const(SHCOLUMNID)*, VARIANT*); - HRESULT GetDetailsOf(LPCITEMIDLIST, UINT, SHELLDETAILS*); - HRESULT MapColumnToSCID(UINT, SHCOLUMNID*); + HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); + HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); + HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); + HRESULT CreateViewObject(HWND, REFIID, PVOID*); + HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); + HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); + HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); + HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); + HRESULT GetDefaultSearchGUID(GUID*); + HRESULT EnumSearches(IEnumExtraSearch*); + HRESULT GetDefaultColumn(DWORD, ULONG*, ULONG*); + HRESULT GetDefaultColumnState(UINT, SHCOLSTATEF*); + HRESULT GetDetailsEx(LPCITEMIDLIST, const(SHCOLUMNID)*, VARIANT*); + HRESULT GetDetailsOf(LPCITEMIDLIST, UINT, SHELLDETAILS*); + HRESULT MapColumnToSCID(UINT, SHCOLUMNID*); } alias IShellFolder2 LPSHELLFOLDER2; } /* _WIN32_IE >= 0x500 */ interface ICopyHook : IUnknown { - UINT CopyCallback(HWND, UINT, UINT, LPCSTR, DWORD, LPCSTR, DWORD); + UINT CopyCallback(HWND, UINT, UINT, LPCSTR, DWORD, LPCSTR, DWORD); } alias ICopyHook LPCOPYHOOK; interface IFileViewerSite : IUnknown { - HRESULT SetPinnedWindow(HWND); - HRESULT GetPinnedWindow(HWND*); + HRESULT SetPinnedWindow(HWND); + HRESULT GetPinnedWindow(HWND*); } alias IFileViewerSite LPFILEVIEWERSITE; interface IFileViewer : IUnknown { - HRESULT ShowInitialize(LPFILEVIEWERSITE); - HRESULT Show(LPFVSHOWINFO); - HRESULT PrintTo(LPSTR, BOOL); + HRESULT ShowInitialize(LPFILEVIEWERSITE); + HRESULT Show(LPFVSHOWINFO); + HRESULT PrintTo(LPSTR, BOOL); } alias IFileViewer LPFILEVIEWER; interface IFileSystemBindData : IUnknown { - HRESULT SetFindData(const(WIN32_FIND_DATAW)*); - HRESULT GetFindData(WIN32_FIND_DATAW*); + HRESULT SetFindData(const(WIN32_FIND_DATAW)*); + HRESULT GetFindData(WIN32_FIND_DATAW*); } interface IPersistFolder : IPersist { - HRESULT GetClassID(CLSID*); - HRESULT Initialize(LPCITEMIDLIST); + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); } alias IPersistFolder LPPERSISTFOLDER; static if (_WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500) { interface IPersistFolder2 : IPersistFolder { - HRESULT GetClassID(CLSID*); - HRESULT Initialize(LPCITEMIDLIST); - HRESULT GetCurFolder(LPITEMIDLIST*); + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); + HRESULT GetCurFolder(LPITEMIDLIST*); } alias IPersistFolder2 LPPERSISTFOLDER2; @@ -914,11 +914,11 @@ alias IPersistFolder2 LPPERSISTFOLDER2; static if (_WIN32_IE >= 0x500) { interface IPersistFolder3 : IPersistFolder2 { - HRESULT GetClassID(CLSID*); - HRESULT Initialize(LPCITEMIDLIST); - HRESULT GetCurFolder(LPITEMIDLIST*); - HRESULT InitializeEx(IBindCtx, LPCITEMIDLIST, const(PERSIST_FOLDER_TARGET_INFO)*); - HRESULT GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO*); + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); + HRESULT GetCurFolder(LPITEMIDLIST*); + HRESULT InitializeEx(IBindCtx, LPCITEMIDLIST, const(PERSIST_FOLDER_TARGET_INFO)*); + HRESULT GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO*); } alias IPersistFolder3 LPPERSISTFOLDER3; @@ -928,145 +928,145 @@ alias IShellBrowser LPSHELLBROWSER; alias IShellView LPSHELLVIEW; interface IShellBrowser : IOleWindow { - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT InsertMenusSB(HMENU, LPOLEMENUGROUPWIDTHS); - HRESULT SetMenuSB(HMENU, HOLEMENU, HWND); - HRESULT RemoveMenusSB(HMENU); - HRESULT SetStatusTextSB(LPCOLESTR); - HRESULT EnableModelessSB(BOOL); - HRESULT TranslateAcceleratorSB(LPMSG, WORD); - HRESULT BrowseObject(LPCITEMIDLIST, UINT); - HRESULT GetViewStateStream(DWORD, LPSTREAM*); - HRESULT GetControlWindow(UINT, HWND*); - HRESULT SendControlMsg(UINT, UINT, WPARAM, LPARAM, LRESULT*); - HRESULT QueryActiveShellView(LPSHELLVIEW*); - HRESULT OnViewWindowActive(LPSHELLVIEW); - HRESULT SetToolbarItems(LPTBBUTTON, UINT, UINT); + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT InsertMenusSB(HMENU, LPOLEMENUGROUPWIDTHS); + HRESULT SetMenuSB(HMENU, HOLEMENU, HWND); + HRESULT RemoveMenusSB(HMENU); + HRESULT SetStatusTextSB(LPCOLESTR); + HRESULT EnableModelessSB(BOOL); + HRESULT TranslateAcceleratorSB(LPMSG, WORD); + HRESULT BrowseObject(LPCITEMIDLIST, UINT); + HRESULT GetViewStateStream(DWORD, LPSTREAM*); + HRESULT GetControlWindow(UINT, HWND*); + HRESULT SendControlMsg(UINT, UINT, WPARAM, LPARAM, LRESULT*); + HRESULT QueryActiveShellView(LPSHELLVIEW*); + HRESULT OnViewWindowActive(LPSHELLVIEW); + HRESULT SetToolbarItems(LPTBBUTTON, UINT, UINT); } interface IShellView : IOleWindow { - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT TranslateAccelerator(LPMSG); + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT TranslateAccelerator(LPMSG); //[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT //[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; //[Yes] #else - HRESULT EnableModeless(BOOL); + HRESULT EnableModeless(BOOL); //[Yes] #endif - HRESULT UIActivate(UINT); - HRESULT Refresh(); - HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); - HRESULT DestroyViewWindow(); - HRESULT GetCurrentInfo(LPFOLDERSETTINGS); - HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); - HRESULT SaveViewState(); - HRESULT SelectItem(LPCITEMIDLIST, UINT); - HRESULT GetItemObject(UINT, REFIID, PVOID*); + HRESULT UIActivate(UINT); + HRESULT Refresh(); + HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); + HRESULT DestroyViewWindow(); + HRESULT GetCurrentInfo(LPFOLDERSETTINGS); + HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT SaveViewState(); + HRESULT SelectItem(LPCITEMIDLIST, UINT); + HRESULT GetItemObject(UINT, REFIID, PVOID*); } interface ICommDlgBrowser : IUnknown { - HRESULT OnDefaultCommand(IShellView); - HRESULT OnStateChange(IShellView, ULONG); - HRESULT IncludeObject(IShellView, LPCITEMIDLIST); + HRESULT OnDefaultCommand(IShellView); + HRESULT OnStateChange(IShellView, ULONG); + HRESULT IncludeObject(IShellView, LPCITEMIDLIST); } alias ICommDlgBrowser LPCOMMDLGBROWSER; alias GUID SHELLVIEWID; struct SV2CVW2_PARAMS { - DWORD cbSize = this.sizeof; - IShellView psvPrev; - FOLDERSETTINGS *pfs; - IShellBrowser psbOwner; - RECT *prcView; - const(SHELLVIEWID)* pvid; - HWND hwndView; + DWORD cbSize = this.sizeof; + IShellView psvPrev; + FOLDERSETTINGS *pfs; + IShellBrowser psbOwner; + RECT *prcView; + const(SHELLVIEWID)* pvid; + HWND hwndView; } alias SV2CVW2_PARAMS* LPSV2CVW2_PARAMS; interface IShellView2 : IShellView { - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT TranslateAccelerator(LPMSG); + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT TranslateAccelerator(LPMSG); //[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT //[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; //[Yes] #else - HRESULT EnableModeless(BOOL); + HRESULT EnableModeless(BOOL); //[Yes] #endif - HRESULT UIActivate(UINT); - HRESULT Refresh(); - HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); - HRESULT DestroyViewWindow(); - HRESULT GetCurrentInfo(LPFOLDERSETTINGS); - HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); - HRESULT SaveViewState(); - HRESULT SelectItem(LPCITEMIDLIST, UINT); - HRESULT GetItemObject(UINT, REFIID, PVOID*); - HRESULT GetView(SHELLVIEWID*, ULONG); - HRESULT CreateViewWindow2(LPSV2CVW2_PARAMS); + HRESULT UIActivate(UINT); + HRESULT Refresh(); + HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); + HRESULT DestroyViewWindow(); + HRESULT GetCurrentInfo(LPFOLDERSETTINGS); + HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT SaveViewState(); + HRESULT SelectItem(LPCITEMIDLIST, UINT); + HRESULT GetItemObject(UINT, REFIID, PVOID*); + HRESULT GetView(SHELLVIEWID*, ULONG); + HRESULT CreateViewWindow2(LPSV2CVW2_PARAMS); } interface IShellExecuteHookA : IUnknown { - HRESULT Execute(LPSHELLEXECUTEINFOA); + HRESULT Execute(LPSHELLEXECUTEINFOA); } interface IShellExecuteHookW : IUnknown { - HRESULT Execute(LPSHELLEXECUTEINFOW); + HRESULT Execute(LPSHELLEXECUTEINFOW); } interface IShellIcon : IUnknown { - HRESULT GetIconOf(LPCITEMIDLIST, UINT, PINT); + HRESULT GetIconOf(LPCITEMIDLIST, UINT, PINT); } alias IShellIcon LPSHELLICON; struct SHELLFLAGSTATE { - short _bf; + short _bf; /* - BOOL fShowAllObjects : 1; - BOOL fShowExtensions : 1; - BOOL fNoConfirmRecycle : 1; - BOOL fShowSysFiles : 1; - BOOL fShowCompColor : 1; - BOOL fDoubleClickInWebView : 1; - BOOL fDesktopHTML : 1; - BOOL fWin95Classic : 1; - BOOL fDontPrettyPath : 1; - BOOL fShowAttribCol : 1; - BOOL fMapNetDrvBtn : 1; - BOOL fShowInfoTip : 1; - BOOL fHideIcons : 1; - UINT fRestFlags : 3; + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + UINT fRestFlags : 3; */ - @property bool fShowAllObjects() { return cast(bool) (_bf & 0x0001); } - @property bool fShowExtensions() { return cast(bool) (_bf & 0x0002); } - @property bool fNoConfirmRecycle() { return cast(bool) (_bf & 0x0004); } - @property bool fShowSysFiles() { return cast(bool) (_bf & 0x0008); } - @property bool fShowCompColor() { return cast(bool) (_bf & 0x0010); } - @property bool fDoubleClickInWebView() { return cast(bool) (_bf & 0x0020); } - @property bool fDesktopHTML() { return cast(bool) (_bf & 0x0040); } - @property bool fWin95Classic() { return cast(bool) (_bf & 0x0080); } - @property bool fDontPrettyPath() { return cast(bool) (_bf & 0x0100); } - @property bool fShowAttribCol() { return cast(bool) (_bf & 0x0200); } - @property bool fMapNetDrvBtn() { return cast(bool) (_bf & 0x0400); } - @property bool fShowInfoTip() { return cast(bool) (_bf & 0x0800); } - @property bool fHideIcons() { return cast(bool) (_bf & 0x1000); } - @property ubyte fRestFlags() { return cast(ubyte) (_bf >> 13); } - - @property bool fShowAllObjects(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFE) | f); return f; } - @property bool fShowExtensions(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFD) | (f << 1)); return f; } - @property bool fNoConfirmRecycle(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFB) | (f << 2)); return f; } - @property bool fShowSysFiles(bool f) { _bf = cast(ushort) ((_bf & ~0xFFF8) | (f << 3)); return f; } - @property bool fShowCompColor(bool f) { _bf = cast(ushort) ((_bf & ~0xFFEF) | (f << 4)); return f; } - @property bool fDoubleClickInWebView(bool f) { _bf = cast(ushort) ((_bf & ~0xFFDF) | (f << 5)); return f; } - @property bool fDesktopHTML(bool f) { _bf = cast(ushort) ((_bf & ~0xFFBF) | (f << 6)); return f; } - @property bool fWin95Classic(bool f) { _bf = cast(ushort) ((_bf & ~0xFF8F) | (f << 7)); return f; } - @property bool fDontPrettyPath(bool f) { _bf = cast(ushort) ((_bf & ~0xFEFF) | (f << 8)); return f; } - @property bool fShowAttribCol(bool f) { _bf = cast(ushort) ((_bf & ~0xFDFF) | (f << 9)); return f; } - @property bool fMapNetDrvBtn(bool f) { _bf = cast(ushort) ((_bf & ~0xFBFF) | (f << 10)); return f; } - @property bool fShowInfoTip(bool f) { _bf = cast(ushort) ((_bf & ~0xF8FF) | (f << 11)); return f; } - @property bool fHideIcons(bool f) { _bf = cast(ushort) ((_bf & ~0xEFFF) | (f << 12)); return f; } - @property ubyte fRestFlags(ubyte f) { _bf = cast(ushort) ((_bf & ~0x1FFF) | (f << 13)); return cast(ubyte) (f & 7); } + @property bool fShowAllObjects() { return cast(bool) (_bf & 0x0001); } + @property bool fShowExtensions() { return cast(bool) (_bf & 0x0002); } + @property bool fNoConfirmRecycle() { return cast(bool) (_bf & 0x0004); } + @property bool fShowSysFiles() { return cast(bool) (_bf & 0x0008); } + @property bool fShowCompColor() { return cast(bool) (_bf & 0x0010); } + @property bool fDoubleClickInWebView() { return cast(bool) (_bf & 0x0020); } + @property bool fDesktopHTML() { return cast(bool) (_bf & 0x0040); } + @property bool fWin95Classic() { return cast(bool) (_bf & 0x0080); } + @property bool fDontPrettyPath() { return cast(bool) (_bf & 0x0100); } + @property bool fShowAttribCol() { return cast(bool) (_bf & 0x0200); } + @property bool fMapNetDrvBtn() { return cast(bool) (_bf & 0x0400); } + @property bool fShowInfoTip() { return cast(bool) (_bf & 0x0800); } + @property bool fHideIcons() { return cast(bool) (_bf & 0x1000); } + @property ubyte fRestFlags() { return cast(ubyte) (_bf >> 13); } + + @property bool fShowAllObjects(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFE) | f); return f; } + @property bool fShowExtensions(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFD) | (f << 1)); return f; } + @property bool fNoConfirmRecycle(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFB) | (f << 2)); return f; } + @property bool fShowSysFiles(bool f) { _bf = cast(ushort) ((_bf & ~0xFFF8) | (f << 3)); return f; } + @property bool fShowCompColor(bool f) { _bf = cast(ushort) ((_bf & ~0xFFEF) | (f << 4)); return f; } + @property bool fDoubleClickInWebView(bool f) { _bf = cast(ushort) ((_bf & ~0xFFDF) | (f << 5)); return f; } + @property bool fDesktopHTML(bool f) { _bf = cast(ushort) ((_bf & ~0xFFBF) | (f << 6)); return f; } + @property bool fWin95Classic(bool f) { _bf = cast(ushort) ((_bf & ~0xFF8F) | (f << 7)); return f; } + @property bool fDontPrettyPath(bool f) { _bf = cast(ushort) ((_bf & ~0xFEFF) | (f << 8)); return f; } + @property bool fShowAttribCol(bool f) { _bf = cast(ushort) ((_bf & ~0xFDFF) | (f << 9)); return f; } + @property bool fMapNetDrvBtn(bool f) { _bf = cast(ushort) ((_bf & ~0xFBFF) | (f << 10)); return f; } + @property bool fShowInfoTip(bool f) { _bf = cast(ushort) ((_bf & ~0xF8FF) | (f << 11)); return f; } + @property bool fHideIcons(bool f) { _bf = cast(ushort) ((_bf & ~0xEFFF) | (f << 12)); return f; } + @property ubyte fRestFlags(ubyte f) { _bf = cast(ushort) ((_bf & ~0x1FFF) | (f << 13)); return cast(ubyte) (f & 7); } } alias SHELLFLAGSTATE* LPSHELLFLAGSTATE; @@ -1085,123 +1085,123 @@ const SSF_HIDEICONS = 0x4000; const SSF_NOCONFIRMRECYCLE = 0x8000; interface IShellIconOverlayIdentifier : IUnknown { - HRESULT IsMemberOf(LPCWSTR, DWORD); - HRESULT GetOverlayInfo(LPWSTR, int, int*, DWORD*); - HRESULT GetPriority(int*); + HRESULT IsMemberOf(LPCWSTR, DWORD); + HRESULT GetOverlayInfo(LPWSTR, int, int*, DWORD*); + HRESULT GetPriority(int*); } const ISIOI_ICONFILE = 0x00000001; const ISIOI_ICONINDEX = 0x00000002; static if (_WIN32_WINNT >= 0x500) { - struct SHELLSTATE { - uint _bf1; - DWORD dwWin95Unused; - UINT uWin95Unused; - LONG lParamSort; - int iSortDirection; - UINT _version; - UINT uNotUsed; - uint _bf2; - /* - BOOL fShowAllObjects : 1; - BOOL fShowExtensions : 1; - BOOL fNoConfirmRecycle : 1; - BOOL fShowSysFiles : 1; - BOOL fShowCompColor : 1; - BOOL fDoubleClickInWebView : 1; - BOOL fDesktopHTML : 1; - BOOL fWin95Classic : 1; - BOOL fDontPrettyPath : 1; - BOOL fShowAttribCol : 1; - BOOL fMapNetDrvBtn : 1; - BOOL fShowInfoTip : 1; - BOOL fHideIcons : 1; - BOOL fWebView : 1; - BOOL fFilter : 1; - BOOL fShowSuperHidden : 1; - BOOL fNoNetCrawling : 1; - */ - @property bool fShowAllObjects() { return cast(bool) (_bf1 & 0x00000001); } - @property bool fShowExtensions() { return cast(bool) (_bf1 & 0x00000002); } - @property bool fNoConfirmRecycle() { return cast(bool) (_bf1 & 0x00000004); } - @property bool fShowSysFiles() { return cast(bool) (_bf1 & 0x00000008); } - @property bool fShowCompColor() { return cast(bool) (_bf1 & 0x00000010); } - @property bool fDoubleClickInWebView() { return cast(bool) (_bf1 & 0x00000020); } - @property bool fDesktopHTML() { return cast(bool) (_bf1 & 0x00000040); } - @property bool fWin95Classic() { return cast(bool) (_bf1 & 0x00000080); } - @property bool fDontPrettyPath() { return cast(bool) (_bf1 & 0x00000100); } - @property bool fShowAttribCol() { return cast(bool) (_bf1 & 0x00000200); } - @property bool fMapNetDrvBtn() { return cast(bool) (_bf1 & 0x00000400); } - @property bool fShowInfoTip() { return cast(bool) (_bf1 & 0x00000800); } - @property bool fHideIcons() { return cast(bool) (_bf1 & 0x00001000); } - @property bool fWebView() { return cast(bool) (_bf1 & 0x00002000); } - @property bool fFilter() { return cast(bool) (_bf1 & 0x00004000); } - @property bool fShowSuperHidden() { return cast(bool) (_bf1 & 0x00008000); } - @property bool fNoNetCrawling() { return cast(bool) (_bf1 & 0x00010000); } - - @property bool fShowAllObjects(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFE) | f); return f; } - @property bool fShowExtensions(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFD) | (f << 1)); return f; } - @property bool fNoConfirmRecycle(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFB) | (f << 2)); return f; } - @property bool fShowSysFiles(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFF8) | (f << 3)); return f; } - @property bool fShowCompColor(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFEF) | (f << 4)); return f; } - @property bool fDoubleClickInWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFDF) | (f << 5)); return f; } - @property bool fDesktopHTML(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFBF) | (f << 6)); return f; } - @property bool fWin95Classic(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFF8F) | (f << 7)); return f; } - @property bool fDontPrettyPath(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFEFF) | (f << 8)); return f; } - @property bool fShowAttribCol(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFDFF) | (f << 9)); return f; } - @property bool fMapNetDrvBtn(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFBFF) | (f << 10)); return f; } - @property bool fShowInfoTip(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFF8FF) | (f << 11)); return f; } - @property bool fHideIcons(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFEFFF) | (f << 12)); return f; } - @property bool fWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFDFFF) | (f << 13)); return f; } - @property bool fFilter(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFBFFF) | (f << 14)); return f; } - @property bool fShowSuperHidden(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFF8FFF) | (f << 15)); return f; } - @property bool fNoNetCrawling(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFEFFFF) | (f << 16)); return f; } - /* - BOOL fSepProcess : 1; - BOOL fStartPanelOn : 1; - BOOL fShowStartPage : 1; - UINT fSpareFlags : 13; - */ - @property bool fSepProcess() { return cast(bool) (_bf2 & 0x00000001); } - @property bool fStartPanelOn() { return cast(bool) (_bf2 & 0x00000002); } - @property bool fShowStartPage() { return cast(bool) (_bf2 & 0x00000004); } - @property ushort fSpareFlags() { return cast(ushort) ((_bf2 & 0x0000FFF8) >> 3); } - - @property bool fSepProcess(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFE) | f); return f; } - @property bool fStartPanelOn(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFD) | (f << 1)); return f; } - @property bool fShowStartPage(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFB) | (f << 2)); return f; } - @property ushort fSpareFlags(ushort f) { - _bf2 = cast(ushort) ((_bf2 & ~0xFFFF0007) | ((f & 0x1FFF) << 3)); - return cast(ushort) (f & 0x1FFF); - } - } - alias SHELLSTATE* LPSHELLSTATE; + struct SHELLSTATE { + uint _bf1; + DWORD dwWin95Unused; + UINT uWin95Unused; + LONG lParamSort; + int iSortDirection; + UINT _version; + UINT uNotUsed; + uint _bf2; + /* + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + BOOL fWebView : 1; + BOOL fFilter : 1; + BOOL fShowSuperHidden : 1; + BOOL fNoNetCrawling : 1; + */ + @property bool fShowAllObjects() { return cast(bool) (_bf1 & 0x00000001); } + @property bool fShowExtensions() { return cast(bool) (_bf1 & 0x00000002); } + @property bool fNoConfirmRecycle() { return cast(bool) (_bf1 & 0x00000004); } + @property bool fShowSysFiles() { return cast(bool) (_bf1 & 0x00000008); } + @property bool fShowCompColor() { return cast(bool) (_bf1 & 0x00000010); } + @property bool fDoubleClickInWebView() { return cast(bool) (_bf1 & 0x00000020); } + @property bool fDesktopHTML() { return cast(bool) (_bf1 & 0x00000040); } + @property bool fWin95Classic() { return cast(bool) (_bf1 & 0x00000080); } + @property bool fDontPrettyPath() { return cast(bool) (_bf1 & 0x00000100); } + @property bool fShowAttribCol() { return cast(bool) (_bf1 & 0x00000200); } + @property bool fMapNetDrvBtn() { return cast(bool) (_bf1 & 0x00000400); } + @property bool fShowInfoTip() { return cast(bool) (_bf1 & 0x00000800); } + @property bool fHideIcons() { return cast(bool) (_bf1 & 0x00001000); } + @property bool fWebView() { return cast(bool) (_bf1 & 0x00002000); } + @property bool fFilter() { return cast(bool) (_bf1 & 0x00004000); } + @property bool fShowSuperHidden() { return cast(bool) (_bf1 & 0x00008000); } + @property bool fNoNetCrawling() { return cast(bool) (_bf1 & 0x00010000); } + + @property bool fShowAllObjects(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFE) | f); return f; } + @property bool fShowExtensions(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFD) | (f << 1)); return f; } + @property bool fNoConfirmRecycle(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFB) | (f << 2)); return f; } + @property bool fShowSysFiles(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFF8) | (f << 3)); return f; } + @property bool fShowCompColor(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFEF) | (f << 4)); return f; } + @property bool fDoubleClickInWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFDF) | (f << 5)); return f; } + @property bool fDesktopHTML(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFBF) | (f << 6)); return f; } + @property bool fWin95Classic(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFF8F) | (f << 7)); return f; } + @property bool fDontPrettyPath(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFEFF) | (f << 8)); return f; } + @property bool fShowAttribCol(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFDFF) | (f << 9)); return f; } + @property bool fMapNetDrvBtn(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFBFF) | (f << 10)); return f; } + @property bool fShowInfoTip(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFF8FF) | (f << 11)); return f; } + @property bool fHideIcons(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFEFFF) | (f << 12)); return f; } + @property bool fWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFDFFF) | (f << 13)); return f; } + @property bool fFilter(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFBFFF) | (f << 14)); return f; } + @property bool fShowSuperHidden(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFF8FFF) | (f << 15)); return f; } + @property bool fNoNetCrawling(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFEFFFF) | (f << 16)); return f; } + /* + BOOL fSepProcess : 1; + BOOL fStartPanelOn : 1; + BOOL fShowStartPage : 1; + UINT fSpareFlags : 13; + */ + @property bool fSepProcess() { return cast(bool) (_bf2 & 0x00000001); } + @property bool fStartPanelOn() { return cast(bool) (_bf2 & 0x00000002); } + @property bool fShowStartPage() { return cast(bool) (_bf2 & 0x00000004); } + @property ushort fSpareFlags() { return cast(ushort) ((_bf2 & 0x0000FFF8) >> 3); } + + @property bool fSepProcess(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFE) | f); return f; } + @property bool fStartPanelOn(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFD) | (f << 1)); return f; } + @property bool fShowStartPage(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFB) | (f << 2)); return f; } + @property ushort fSpareFlags(ushort f) { + _bf2 = cast(ushort) ((_bf2 & ~0xFFFF0007) | ((f & 0x1FFF) << 3)); + return cast(ushort) (f & 0x1FFF); + } + } + alias SHELLSTATE* LPSHELLSTATE; } static if (_WIN32_IE >= 0x500) { - align(8) { - struct SHDRAGIMAGE { - SIZE sizeDragImage; - POINT ptOffset; - HBITMAP hbmpDragImage; - COLORREF crColorKey; - } - alias SHDRAGIMAGE* LPSHDRAGIMAGE; - } - - interface IDragSourceHelper : IUnknown { - HRESULT InitializeFromBitmap(LPSHDRAGIMAGE pshdi, IDataObject pDataObject); - HRESULT InitializeFromWindow(HWND hwnd, POINT* ppt, IDataObject pDataObject); - } - - interface IDropTargetHelper : IUnknown { - HRESULT DragEnter(HWND hwndTarget, IDataObject pDataObject, POINT* ppt, DWORD dwEffect); - HRESULT DragLeave(); - HRESULT DragOver(POINT* ppt, DWORD dwEffect); - HRESULT Drop(IDataObject pDataObject, POINT* ppt, DWORD dwEffect); - HRESULT Show(BOOL fShow); - } + align(8) { + struct SHDRAGIMAGE { + SIZE sizeDragImage; + POINT ptOffset; + HBITMAP hbmpDragImage; + COLORREF crColorKey; + } + alias SHDRAGIMAGE* LPSHDRAGIMAGE; + } + + interface IDragSourceHelper : IUnknown { + HRESULT InitializeFromBitmap(LPSHDRAGIMAGE pshdi, IDataObject pDataObject); + HRESULT InitializeFromWindow(HWND hwnd, POINT* ppt, IDataObject pDataObject); + } + + interface IDropTargetHelper : IUnknown { + HRESULT DragEnter(HWND hwndTarget, IDataObject pDataObject, POINT* ppt, DWORD dwEffect); + HRESULT DragLeave(); + HRESULT DragOver(POINT* ppt, DWORD dwEffect); + HRESULT Drop(IDataObject pDataObject, POINT* ppt, DWORD dwEffect); + HRESULT Show(BOOL fShow); + } } extern (Windows): @@ -1220,8 +1220,8 @@ HRESULT SHGetSpecialFolderLocation(HWND, int, LPITEMIDLIST*); HRESULT SHLoadInProc(REFCLSID); static if (_WIN32_IE >= 0x400) { - BOOL SHGetSpecialFolderPathA(HWND, LPSTR, int, BOOL); - BOOL SHGetSpecialFolderPathW(HWND, LPWSTR, int, BOOL); + BOOL SHGetSpecialFolderPathA(HWND, LPSTR, int, BOOL); + BOOL SHGetSpecialFolderPathW(HWND, LPWSTR, int, BOOL); } /* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */ @@ -1229,124 +1229,124 @@ HRESULT SHGetFolderPathA(HWND, int, HANDLE, DWORD, LPSTR); HRESULT SHGetFolderPathW(HWND, int, HANDLE, DWORD, LPWSTR); static if (_WIN32_WINNT >= 0x500) { - INT SHGetIconOverlayIndexW(LPCWSTR pszIconPath, int iIconIndex); - INT SHGetIconOverlayIndexA(LPCSTR pszIconPath, int iIconIndex); - HRESULT SHGetFolderLocation(HWND, int, HANDLE, DWORD, LPITEMIDLIST*); - INT SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES); - INT SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES); - HRESULT SHBindToParent(LPCITEMIDLIST, REFIID, VOID**, LPCITEMIDLIST*); + INT SHGetIconOverlayIndexW(LPCWSTR pszIconPath, int iIconIndex); + INT SHGetIconOverlayIndexA(LPCSTR pszIconPath, int iIconIndex); + HRESULT SHGetFolderLocation(HWND, int, HANDLE, DWORD, LPITEMIDLIST*); + INT SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES); + INT SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES); + HRESULT SHBindToParent(LPCITEMIDLIST, REFIID, VOID**, LPCITEMIDLIST*); } static if (_WIN32_WINNT >= 0x501) { - enum { - PRF_VERIFYEXISTS = 0x0001, - PRF_TRYPROGRAMEXTENSIONS = (0x0002 | PRF_VERIFYEXISTS), - PRF_FIRSTDIRDEF = 0x0004, - PRF_DONTFINDLNK = 0x0008, - IDO_SHGIOI_SHARE = 0x0FFFFFFF, - IDO_SHGIOI_LINK = 0x0FFFFFFE, - IDO_SHGIOI_SLOWFILE = 0x0FFFFFFD, - IDO_SHGIOI_DEFAULT = 0x0FFFFFFC - } - - struct SHDESCRIPTIONID { - DWORD dwDescriptionId; - CLSID clsid; - } - alias SHDESCRIPTIONID* LPSHDESCRIPTIONID; - - BOOL PathResolve(LPWSTR, LPCWSTR*, UINT); - HRESULT SHGetFolderPathAndSubDirA(HWND, int, HANDLE, DWORD, LPCSTR, LPSTR); - HRESULT SHGetFolderPathAndSubDirW(HWND, int, HANDLE, DWORD, LPCWSTR, LPWSTR); - HRESULT SHParseDisplayName(LPCWSTR, IBindCtx, LPITEMIDLIST, SFGAOF, SFGAOF*); + enum { + PRF_VERIFYEXISTS = 0x0001, + PRF_TRYPROGRAMEXTENSIONS = (0x0002 | PRF_VERIFYEXISTS), + PRF_FIRSTDIRDEF = 0x0004, + PRF_DONTFINDLNK = 0x0008, + IDO_SHGIOI_SHARE = 0x0FFFFFFF, + IDO_SHGIOI_LINK = 0x0FFFFFFE, + IDO_SHGIOI_SLOWFILE = 0x0FFFFFFD, + IDO_SHGIOI_DEFAULT = 0x0FFFFFFC + } + + struct SHDESCRIPTIONID { + DWORD dwDescriptionId; + CLSID clsid; + } + alias SHDESCRIPTIONID* LPSHDESCRIPTIONID; + + BOOL PathResolve(LPWSTR, LPCWSTR*, UINT); + HRESULT SHGetFolderPathAndSubDirA(HWND, int, HANDLE, DWORD, LPCSTR, LPSTR); + HRESULT SHGetFolderPathAndSubDirW(HWND, int, HANDLE, DWORD, LPCWSTR, LPWSTR); + HRESULT SHParseDisplayName(LPCWSTR, IBindCtx, LPITEMIDLIST, SFGAOF, SFGAOF*); } void SHGetSettings(LPSHELLFLAGSTATE, DWORD); static if (_WIN32_WINNT >= 0x500) { - void SHGetSetSettings(LPSHELLSTATE, DWORD, BOOL); - BOOL ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); - BOOL ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); - BOOL ILRemoveLastID(LPITEMIDLIST); - HRESULT ILLoadFromStream(IStream, LPITEMIDLIST*); - HRESULT ILSaveToStream(IStream, LPCITEMIDLIST); - LPITEMIDLIST ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); - LPITEMIDLIST ILClone(LPCITEMIDLIST); - LPITEMIDLIST ILCloneFirst(LPCITEMIDLIST); - LPITEMIDLIST ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); - LPITEMIDLIST ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); - LPITEMIDLIST ILFindLastID(LPCITEMIDLIST); - LPITEMIDLIST ILGetNext(LPCITEMIDLIST); - UINT ILGetSize(LPCITEMIDLIST); - void ILFree(LPITEMIDLIST); - - HRESULT SHCoCreateInstance(LPCWSTR, REFCLSID, IUnknown, REFIID, void**); + void SHGetSetSettings(LPSHELLSTATE, DWORD, BOOL); + BOOL ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); + BOOL ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); + BOOL ILRemoveLastID(LPITEMIDLIST); + HRESULT ILLoadFromStream(IStream, LPITEMIDLIST*); + HRESULT ILSaveToStream(IStream, LPCITEMIDLIST); + LPITEMIDLIST ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); + LPITEMIDLIST ILClone(LPCITEMIDLIST); + LPITEMIDLIST ILCloneFirst(LPCITEMIDLIST); + LPITEMIDLIST ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); + LPITEMIDLIST ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); + LPITEMIDLIST ILFindLastID(LPCITEMIDLIST); + LPITEMIDLIST ILGetNext(LPCITEMIDLIST); + UINT ILGetSize(LPCITEMIDLIST); + void ILFree(LPITEMIDLIST); + + HRESULT SHCoCreateInstance(LPCWSTR, REFCLSID, IUnknown, REFIID, void**); } version(Unicode) { - alias IShellExecuteHookW IShellExecuteHook; - alias IShellLinkW IShellLink; - alias BROWSEINFOW BROWSEINFO; - alias SHBrowseForFolderW SHBrowseForFolder; - alias SHGetDataFromIDListW SHGetDataFromIDList; - alias SHGetPathFromIDListW SHGetPathFromIDList; - static if (_WIN32_IE >= 0x400) { - alias SHGetSpecialFolderPathW SHGetSpecialFolderPath; - } - alias SHGetFolderPathW SHGetFolderPath; - static if (_WIN32_WINNT >= 0x500) { - alias SHGetIconOverlayIndexW SHGetIconOverlayIndex; - alias SHCreateDirectoryExW SHCreateDirectoryEx; - } - static if (_WIN32_WINNT >= 0x501) { - alias SHGetFolderPathAndSubDirW SHGetFolderPathAndSubDir; - } - alias FILEDESCRIPTORW FILEDESCRIPTOR; - alias LPFILEDESCRIPTORW LPFILEDESCRIPTOR; - alias FILEGROUPDESCRIPTORW FILEGROUPDESCRIPTOR; - alias LPFILEGROUPDESCRIPTORW LPFILEGROUPDESCRIPTOR; + alias IShellExecuteHookW IShellExecuteHook; + alias IShellLinkW IShellLink; + alias BROWSEINFOW BROWSEINFO; + alias SHBrowseForFolderW SHBrowseForFolder; + alias SHGetDataFromIDListW SHGetDataFromIDList; + alias SHGetPathFromIDListW SHGetPathFromIDList; + static if (_WIN32_IE >= 0x400) { + alias SHGetSpecialFolderPathW SHGetSpecialFolderPath; + } + alias SHGetFolderPathW SHGetFolderPath; + static if (_WIN32_WINNT >= 0x500) { + alias SHGetIconOverlayIndexW SHGetIconOverlayIndex; + alias SHCreateDirectoryExW SHCreateDirectoryEx; + } + static if (_WIN32_WINNT >= 0x501) { + alias SHGetFolderPathAndSubDirW SHGetFolderPathAndSubDir; + } + alias FILEDESCRIPTORW FILEDESCRIPTOR; + alias LPFILEDESCRIPTORW LPFILEDESCRIPTOR; + alias FILEGROUPDESCRIPTORW FILEGROUPDESCRIPTOR; + alias LPFILEGROUPDESCRIPTORW LPFILEGROUPDESCRIPTOR; } else { - alias IShellExecuteHookA IShellExecuteHook; - alias IShellLinkA IShellLink; - alias BROWSEINFOA BROWSEINFO; - alias SHBrowseForFolderA SHBrowseForFolder; - alias SHGetDataFromIDListA SHGetDataFromIDList; - alias SHGetPathFromIDListA SHGetPathFromIDList; - static if (_WIN32_IE >= 0x400) { - alias SHGetSpecialFolderPathA SHGetSpecialFolderPath; - } - alias SHGetFolderPathA SHGetFolderPath; - static if (_WIN32_WINNT >= 0x500) { - alias SHGetIconOverlayIndexA SHGetIconOverlayIndex; - alias SHCreateDirectoryExA SHCreateDirectoryEx; - } - static if (_WIN32_WINNT >= 0x501) { - alias SHGetFolderPathAndSubDirA SHGetFolderPathAndSubDir; - } - alias FILEDESCRIPTORA FILEDESCRIPTOR; - alias LPFILEDESCRIPTORA LPFILEDESCRIPTOR; - alias FILEGROUPDESCRIPTORA FILEGROUPDESCRIPTOR; - alias LPFILEGROUPDESCRIPTORA LPFILEGROUPDESCRIPTOR; + alias IShellExecuteHookA IShellExecuteHook; + alias IShellLinkA IShellLink; + alias BROWSEINFOA BROWSEINFO; + alias SHBrowseForFolderA SHBrowseForFolder; + alias SHGetDataFromIDListA SHGetDataFromIDList; + alias SHGetPathFromIDListA SHGetPathFromIDList; + static if (_WIN32_IE >= 0x400) { + alias SHGetSpecialFolderPathA SHGetSpecialFolderPath; + } + alias SHGetFolderPathA SHGetFolderPath; + static if (_WIN32_WINNT >= 0x500) { + alias SHGetIconOverlayIndexA SHGetIconOverlayIndex; + alias SHCreateDirectoryExA SHCreateDirectoryEx; + } + static if (_WIN32_WINNT >= 0x501) { + alias SHGetFolderPathAndSubDirA SHGetFolderPathAndSubDir; + } + alias FILEDESCRIPTORA FILEDESCRIPTOR; + alias LPFILEDESCRIPTORA LPFILEDESCRIPTOR; + alias FILEGROUPDESCRIPTORA FILEGROUPDESCRIPTOR; + alias LPFILEGROUPDESCRIPTORA LPFILEGROUPDESCRIPTOR; } alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO; static if (_WIN32_WINNT >= 0x501) { - interface IFolderView : IUnknown { - HRESULT GetAutoArrange(); - HRESULT GetCurrentViewMode(UINT); - HRESULT GetDefaultSpacing(POINT*); - HRESULT GetFocusedItem(int*); - HRESULT GetFolder(REFIID, PVOID*); - HRESULT GetItemPosition(LPCITEMIDLIST, POINT*); - HRESULT GetSelectionMarkedItem(int*); - HRESULT GetSpacing(POINT*); - HRESULT Item(int, LPITEMIDLIST*); - HRESULT ItemCount(UINT, int*); - HRESULT Items(UINT, REFIID, PVOID*); - HRESULT SelectAndPositionItems(UINT, LPCITEMIDLIST*, POINT*, DWORD); - HRESULT SelectItem(int, DWORD); - HRESULT SetCurrentViewMode(UINT); - } - alias IFolderView LPFOLDERVIEW; + interface IFolderView : IUnknown { + HRESULT GetAutoArrange(); + HRESULT GetCurrentViewMode(UINT); + HRESULT GetDefaultSpacing(POINT*); + HRESULT GetFocusedItem(int*); + HRESULT GetFolder(REFIID, PVOID*); + HRESULT GetItemPosition(LPCITEMIDLIST, POINT*); + HRESULT GetSelectionMarkedItem(int*); + HRESULT GetSpacing(POINT*); + HRESULT Item(int, LPITEMIDLIST*); + HRESULT ItemCount(UINT, int*); + HRESULT Items(UINT, REFIID, PVOID*); + HRESULT SelectAndPositionItems(UINT, LPCITEMIDLIST*, POINT*, DWORD); + HRESULT SelectItem(int, DWORD); + HRESULT SetCurrentViewMode(UINT); + } + alias IFolderView LPFOLDERVIEW; } diff --git a/src/core/sys/windows/shlwapi.d b/src/core/sys/windows/shlwapi.d index ef4686a11e..e7af4cf9a4 100644 --- a/src/core/sys/windows/shlwapi.d +++ b/src/core/sys/windows/shlwapi.d @@ -46,75 +46,75 @@ const URL_UNESCAPE_INPLACE = 0x00100000; align(1): struct DLLVERSIONINFO { - DWORD cbSize = this.sizeof; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformID; + DWORD cbSize = this.sizeof; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformID; } struct DLLVERSIONINFO2 { - DLLVERSIONINFO info1; - DWORD dwFlags; - ULONGLONG ullVersion; + DLLVERSIONINFO info1; + DWORD dwFlags; + ULONGLONG ullVersion; } enum ASSOCSTR { - ASSOCSTR_COMMAND, - ASSOCSTR_EXECUTABLE, - ASSOCSTR_FRIENDLYDOCNAME, - ASSOCSTR_FRIENDLYAPPNAME, - ASSOCSTR_NOOPEN, - ASSOCSTR_SHELLNEWVALUE, - ASSOCSTR_DDECOMMAND, - ASSOCSTR_DDEIFEXEC, - ASSOCSTR_DDEAPPLICATION, - ASSOCSTR_DDETOPIC + ASSOCSTR_COMMAND, + ASSOCSTR_EXECUTABLE, + ASSOCSTR_FRIENDLYDOCNAME, + ASSOCSTR_FRIENDLYAPPNAME, + ASSOCSTR_NOOPEN, + ASSOCSTR_SHELLNEWVALUE, + ASSOCSTR_DDECOMMAND, + ASSOCSTR_DDEIFEXEC, + ASSOCSTR_DDEAPPLICATION, + ASSOCSTR_DDETOPIC } enum ASSOCKEY { - ASSOCKEY_SHELLEXECCLASS = 1, - ASSOCKEY_APP, - ASSOCKEY_CLASS, - ASSOCKEY_BASECLASS + ASSOCKEY_SHELLEXECCLASS = 1, + ASSOCKEY_APP, + ASSOCKEY_CLASS, + ASSOCKEY_BASECLASS } enum ASSOCDATA { - ASSOCDATA_MSIDESCRIPTOR = 1, - ASSOCDATA_NOACTIVATEHANDLER, - ASSOCDATA_QUERYCLASSSTORE + ASSOCDATA_MSIDESCRIPTOR = 1, + ASSOCDATA_NOACTIVATEHANDLER, + ASSOCDATA_QUERYCLASSSTORE } alias DWORD ASSOCF; enum SHREGDEL_FLAGS { - SHREGDEL_DEFAULT = 0x00000000, - SHREGDEL_HKCU = 0x00000001, - SHREGDEL_HKLM = 0x00000010, - SHREGDEL_BOTH = 0x00000011 + SHREGDEL_DEFAULT = 0x00000000, + SHREGDEL_HKCU = 0x00000001, + SHREGDEL_HKLM = 0x00000010, + SHREGDEL_BOTH = 0x00000011 } enum SHREGENUM_FLAGS { - SHREGENUM_DEFAULT = 0x00000000, - SHREGENUM_HKCU = 0x00000001, - SHREGENUM_HKLM = 0x00000010, - SHREGENUM_BOTH = 0x00000011 + SHREGENUM_DEFAULT = 0x00000000, + SHREGENUM_HKCU = 0x00000001, + SHREGENUM_HKLM = 0x00000010, + SHREGENUM_BOTH = 0x00000011 } enum URLIS { - URLIS_URL, - URLIS_OPAQUE, - URLIS_NOHISTORY, - URLIS_FILEURL, - URLIS_APPLIABLE, - URLIS_DIRECTORY, - URLIS_HASQUERY + URLIS_URL, + URLIS_OPAQUE, + URLIS_NOHISTORY, + URLIS_FILEURL, + URLIS_APPLIABLE, + URLIS_DIRECTORY, + URLIS_HASQUERY } mixin DECLARE_HANDLE!("HUSKEY"); @@ -122,47 +122,47 @@ alias HUSKEY* PHUSKEY; extern (Windows) { - alias HRESULT function (DLLVERSIONINFO *) DLLGETVERSIONPROC; + alias HRESULT function (DLLVERSIONINFO *) DLLGETVERSIONPROC; } BOOL IntlStrEqNA(LPCSTR pStr1, LPCSTR pStr2, int nChar) { - return IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar); + return IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar); } BOOL IntlStrEqNW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) { - return IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar); + return IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar); } BOOL IntlStrEqNIA(LPCSTR pStr1, LPCSTR pStr2, int nChar) { - return IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar); + return IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar); } BOOL IntlStrEqNIW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) { - return IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar); + return IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar); } BOOL UrlIsFileUrlA(LPCSTR pszURL) { - return UrlIsA(pszURL, URLIS.URLIS_FILEURL); + return UrlIsA(pszURL, URLIS.URLIS_FILEURL); } BOOL UrlIsFileUrlW(LPCWSTR pszURL) { - return UrlIsW(pszURL, URLIS.URLIS_FILEURL); + return UrlIsW(pszURL, URLIS.URLIS_FILEURL); } HRESULT UrlUnescapeInPlaceA(LPSTR pszUrl, DWORD dwFlags) { - return UrlUnescapeA(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); + return UrlUnescapeA(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); } HRESULT UrlUnescapeInPlaceW(LPWSTR pszUrl, DWORD dwFlags) { - return UrlUnescapeW(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); + return UrlUnescapeW(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); } extern (Windows): diff --git a/src/core/sys/windows/snmp.d b/src/core/sys/windows/snmp.d index ffb0d74300..c65d273b21 100644 --- a/src/core/sys/windows/snmp.d +++ b/src/core/sys/windows/snmp.d @@ -13,133 +13,133 @@ private import core.sys.windows.windows; // These are not documented on MSDN enum { - DEFAULT_SNMP_PORT_UDP = 161, - DEFAULT_SNMP_PORT_IPX = 36879, - DEFAULT_SNMPTRAP_PORT_UDP = 162, - DEFAULT_SNMPTRAP_PORT_IPX = 36880 + DEFAULT_SNMP_PORT_UDP = 161, + DEFAULT_SNMP_PORT_IPX = 36879, + DEFAULT_SNMPTRAP_PORT_UDP = 162, + DEFAULT_SNMPTRAP_PORT_IPX = 36880 } enum : BYTE { - ASN_UNIVERSAL = 0x00, - ASN_PRIMITIVE = 0x00, - ASN_CONSTRUCTOR = 0x20, - ASN_APPLICATION = 0x40, - ASN_CONTEXT = 0x80, - ASN_PRIVATE = 0xC0, + ASN_UNIVERSAL = 0x00, + ASN_PRIMITIVE = 0x00, + ASN_CONSTRUCTOR = 0x20, + ASN_APPLICATION = 0x40, + ASN_CONTEXT = 0x80, + ASN_PRIVATE = 0xC0, - SNMP_PDU_GET = ASN_CONTEXT | ASN_CONSTRUCTOR, - SNMP_PDU_GETNEXT, - SNMP_PDU_RESPONSE, - SNMP_PDU_SET, - SNMP_PDU_GETBULK, // = ASN_CONTEXT | ASN_CONSTRUCTOR | 4 - SNMP_PDU_V1TRAP = ASN_CONTEXT | ASN_CONSTRUCTOR | 4, - SNMP_PDU_INFORM = ASN_CONTEXT | ASN_CONSTRUCTOR | 6, - SNMP_PDU_TRAP, - SNMP_PDU_REPORT, - ASN_INTEGER = ASN_UNIVERSAL | ASN_PRIMITIVE | 2, - ASN_BITS, - ASN_OCTETSTRING, - ASN_NULL, - ASN_OBJECTIDENTIFIER, // = ASN_UNIVERSAL | ASN_PRIMITIVE | 6 - ASN_INTEGER32 = ASN_INTEGER, - ASN_SEQUENCE = ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10, - ASN_SEQUENCEOF = ASN_SEQUENCE, - ASN_IPADDRESS = ASN_APPLICATION | ASN_PRIMITIVE, - ASN_COUNTER32, - ASN_GAUGE32, - ASN_TIMETICKS, - ASN_OPAQUE, // = ASN_APPLICATION | ASN_PRIMITIVE | 4 - ASN_COUNTER64 = ASN_APPLICATION | ASN_PRIMITIVE | 6, - ASN_UNSIGNED32, // = ASN_APPLICATION | ASN_PRIMITIVE | 7 - SNMP_EXCEPTION_NOSUCHOBJECT = ASN_CONTEXT | ASN_PRIMITIVE, - SNMP_EXCEPTION_NOSUCHINSTANCE, - SNMP_EXCEPTION_ENDOFMIBVIEW, - SNMP_EXTENSION_GET = SNMP_PDU_GET, - SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT, - SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK, - SNMP_EXTENSION_SET_TEST = ASN_PRIVATE | ASN_CONSTRUCTOR, - SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET, - SNMP_EXTENSION_SET_UNDO = ASN_PRIVATE | ASN_CONSTRUCTOR | 1, - SNMP_EXTENSION_SET_CLEANUP + SNMP_PDU_GET = ASN_CONTEXT | ASN_CONSTRUCTOR, + SNMP_PDU_GETNEXT, + SNMP_PDU_RESPONSE, + SNMP_PDU_SET, + SNMP_PDU_GETBULK, // = ASN_CONTEXT | ASN_CONSTRUCTOR | 4 + SNMP_PDU_V1TRAP = ASN_CONTEXT | ASN_CONSTRUCTOR | 4, + SNMP_PDU_INFORM = ASN_CONTEXT | ASN_CONSTRUCTOR | 6, + SNMP_PDU_TRAP, + SNMP_PDU_REPORT, + ASN_INTEGER = ASN_UNIVERSAL | ASN_PRIMITIVE | 2, + ASN_BITS, + ASN_OCTETSTRING, + ASN_NULL, + ASN_OBJECTIDENTIFIER, // = ASN_UNIVERSAL | ASN_PRIMITIVE | 6 + ASN_INTEGER32 = ASN_INTEGER, + ASN_SEQUENCE = ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10, + ASN_SEQUENCEOF = ASN_SEQUENCE, + ASN_IPADDRESS = ASN_APPLICATION | ASN_PRIMITIVE, + ASN_COUNTER32, + ASN_GAUGE32, + ASN_TIMETICKS, + ASN_OPAQUE, // = ASN_APPLICATION | ASN_PRIMITIVE | 4 + ASN_COUNTER64 = ASN_APPLICATION | ASN_PRIMITIVE | 6, + ASN_UNSIGNED32, // = ASN_APPLICATION | ASN_PRIMITIVE | 7 + SNMP_EXCEPTION_NOSUCHOBJECT = ASN_CONTEXT | ASN_PRIMITIVE, + SNMP_EXCEPTION_NOSUCHINSTANCE, + SNMP_EXCEPTION_ENDOFMIBVIEW, + SNMP_EXTENSION_GET = SNMP_PDU_GET, + SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT, + SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK, + SNMP_EXTENSION_SET_TEST = ASN_PRIVATE | ASN_CONSTRUCTOR, + SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET, + SNMP_EXTENSION_SET_UNDO = ASN_PRIVATE | ASN_CONSTRUCTOR | 1, + SNMP_EXTENSION_SET_CLEANUP } enum : AsnInteger { - SNMP_ERRORSTATUS_NOERROR, - SNMP_ERRORSTATUS_TOOBIG, - SNMP_ERRORSTATUS_NOSUCHNAME, - SNMP_ERRORSTATUS_BADVALUE, - SNMP_ERRORSTATUS_READONLY, - SNMP_ERRORSTATUS_GENERR, - SNMP_ERRORSTATUS_NOACCESS, - SNMP_ERRORSTATUS_WRONGTYPE, - SNMP_ERRORSTATUS_WRONGLENGTH, - SNMP_ERRORSTATUS_WRONGENCODING, - SNMP_ERRORSTATUS_WRONGVALUE, - SNMP_ERRORSTATUS_NOCREATION, - SNMP_ERRORSTATUS_INCONSISTENTVALUE, - SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE, - SNMP_ERRORSTATUS_COMMITFAILED, - SNMP_ERRORSTATUS_UNDOFAILED, - SNMP_ERRORSTATUS_AUTHORIZATIONERROR, - SNMP_ERRORSTATUS_NOTWRITABLE, - SNMP_ERRORSTATUS_INCONSISTENTNAME + SNMP_ERRORSTATUS_NOERROR, + SNMP_ERRORSTATUS_TOOBIG, + SNMP_ERRORSTATUS_NOSUCHNAME, + SNMP_ERRORSTATUS_BADVALUE, + SNMP_ERRORSTATUS_READONLY, + SNMP_ERRORSTATUS_GENERR, + SNMP_ERRORSTATUS_NOACCESS, + SNMP_ERRORSTATUS_WRONGTYPE, + SNMP_ERRORSTATUS_WRONGLENGTH, + SNMP_ERRORSTATUS_WRONGENCODING, + SNMP_ERRORSTATUS_WRONGVALUE, + SNMP_ERRORSTATUS_NOCREATION, + SNMP_ERRORSTATUS_INCONSISTENTVALUE, + SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE, + SNMP_ERRORSTATUS_COMMITFAILED, + SNMP_ERRORSTATUS_UNDOFAILED, + SNMP_ERRORSTATUS_AUTHORIZATIONERROR, + SNMP_ERRORSTATUS_NOTWRITABLE, + SNMP_ERRORSTATUS_INCONSISTENTNAME } enum : AsnInteger { - SNMP_GENERICTRAP_COLDSTART, - SNMP_GENERICTRAP_WARMSTART, - SNMP_GENERICTRAP_LINKDOWN, - SNMP_GENERICTRAP_LINKUP, - SNMP_GENERICTRAP_AUTHFAILURE, - SNMP_GENERICTRAP_EGPNEIGHLOSS, - SNMP_GENERICTRAP_ENTERSPECIFIC + SNMP_GENERICTRAP_COLDSTART, + SNMP_GENERICTRAP_WARMSTART, + SNMP_GENERICTRAP_LINKDOWN, + SNMP_GENERICTRAP_LINKUP, + SNMP_GENERICTRAP_AUTHFAILURE, + SNMP_GENERICTRAP_EGPNEIGHLOSS, + SNMP_GENERICTRAP_ENTERSPECIFIC } // These are not documented on MSDN enum { - SNMP_ACCESS_NONE, - SNMP_ACCESS_NOTIFY, - SNMP_ACCESS_READ_ONLY, - SNMP_ACCESS_READ_WRITE, - SNMP_ACCESS_READ_CREATE + SNMP_ACCESS_NONE, + SNMP_ACCESS_NOTIFY, + SNMP_ACCESS_READ_ONLY, + SNMP_ACCESS_READ_WRITE, + SNMP_ACCESS_READ_CREATE } enum : BOOL { - SNMPAPI_ERROR = false, - SNMPAPI_NOERROR = true + SNMPAPI_ERROR = false, + SNMPAPI_NOERROR = true } enum : INT { - SNMP_LOG_SILENT, - SNMP_LOG_FATAL, - SNMP_LOG_ERROR, - SNMP_LOG_WARNING, - SNMP_LOG_TRACE, - SNMP_LOG_VERBOSE + SNMP_LOG_SILENT, + SNMP_LOG_FATAL, + SNMP_LOG_ERROR, + SNMP_LOG_WARNING, + SNMP_LOG_TRACE, + SNMP_LOG_VERBOSE } const INT - SNMP_OUTPUT_TO_CONSOLE = 1, - SNMP_OUTPUT_TO_LOGFILE = 2, - SNMP_OUTPUT_TO_EVENTLOG = 4, - SNMP_OUTPUT_TO_DEBUGGER = 8; + SNMP_OUTPUT_TO_CONSOLE = 1, + SNMP_OUTPUT_TO_LOGFILE = 2, + SNMP_OUTPUT_TO_EVENTLOG = 4, + SNMP_OUTPUT_TO_DEBUGGER = 8; const size_t SNMP_MAX_OID_LEN = 128; enum : DWORD { - SNMP_MEM_ALLOC_ERROR = 1, - SNMP_BERAPI_INVALID_LENGTH = 10, - SNMP_BERAPI_INVALID_TAG, - SNMP_BERAPI_OVERFLOW, - SNMP_BERAPI_SHORT_BUFFER, - SNMP_BERAPI_INVALID_OBJELEM, - SNMP_PDUAPI_UNRECOGNIZED_PDU = 20, - SNMP_PDUAPI_INVALID_ES, - SNMP_PDUAPI_INVALID_GT, - SNMP_AUTHAPI_INVALID_VERSION = 30, - SNMP_AUTHAPI_INVALID_MSG_TYPE, - SNMP_AUTHAPI_TRIV_AUTH_FAILED, + SNMP_MEM_ALLOC_ERROR = 1, + SNMP_BERAPI_INVALID_LENGTH = 10, + SNMP_BERAPI_INVALID_TAG, + SNMP_BERAPI_OVERFLOW, + SNMP_BERAPI_SHORT_BUFFER, + SNMP_BERAPI_INVALID_OBJELEM, + SNMP_PDUAPI_UNRECOGNIZED_PDU = 20, + SNMP_PDUAPI_INVALID_ES, + SNMP_PDUAPI_INVALID_GT, + SNMP_AUTHAPI_INVALID_VERSION = 30, + SNMP_AUTHAPI_INVALID_MSG_TYPE, + SNMP_AUTHAPI_TRIV_AUTH_FAILED, } alias INT SNMPAPI; @@ -150,86 +150,86 @@ alias ULARGE_INTEGER AsnCounter64; align (4): struct AsnOctetString { - BYTE* stream; - UINT length; - BOOL dynamic; + BYTE* stream; + UINT length; + BOOL dynamic; } alias AsnOctetString AsnBits, AsnSequence, AsnImplicitSequence, AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; struct AsnObjectIdentifier { - UINT idLength; - UINT* ids; + UINT idLength; + UINT* ids; } alias AsnObjectIdentifier AsnObjectName; struct AsnAny { - BYTE asnType; - union _asnValue { - AsnInteger32 number; - AsnUnsigned32 unsigned32; - AsnCounter64 counter64; - AsnOctetString string; - AsnBits bits; - AsnObjectIdentifier object; - AsnSequence sequence; - AsnIPAddress address; - AsnCounter32 counter; - AsnGauge32 gauge; - AsnTimeticks ticks; - AsnOpaque arbitrary; - } - _asnValue asnValue; + BYTE asnType; + union _asnValue { + AsnInteger32 number; + AsnUnsigned32 unsigned32; + AsnCounter64 counter64; + AsnOctetString string; + AsnBits bits; + AsnObjectIdentifier object; + AsnSequence sequence; + AsnIPAddress address; + AsnCounter32 counter; + AsnGauge32 gauge; + AsnTimeticks ticks; + AsnOpaque arbitrary; + } + _asnValue asnValue; } alias AsnAny AsnObjectSyntax; struct SnmpVarBind { - AsnObjectName name; - AsnObjectSyntax value; + AsnObjectName name; + AsnObjectSyntax value; } struct SnmpVarBindList { - SnmpVarBind* list; - UINT len; + SnmpVarBind* list; + UINT len; } extern (Windows) { - VOID SnmpExtensionClose(); - BOOL SnmpExtensionInit(DWORD, HANDLE*, AsnObjectIdentifier*); - BOOL SnmpExtensionInitEx(AsnObjectIdentifier*); - BOOL SnmpExtensionMonitor(LPVOID); - BOOL SnmpExtensionQuery(BYTE, SnmpVarBindList*, AsnInteger32*, - AsnInteger32*); - BOOL SnmpExtensionQueryEx(DWORD, DWORD, SnmpVarBindList*, AsnOctetString*, - AsnInteger32*, AsnInteger32*); - BOOL SnmpExtensionTrap(AsnObjectIdentifier*, AsnInteger32*, AsnInteger32*, - AsnTimeticks*, SnmpVarBindList*); - DWORD SnmpSvcGetUptime(); - VOID SnmpSvcSetLogLevel(INT); - VOID SnmpSvcSetLogType(INT); - SNMPAPI SnmpUtilAsnAnyCpy(AsnAny*, AsnAny*); - VOID SnmpUtilAsnAnyFree(AsnAny*); - VOID SnmpUtilDbgPrint(INT, LPSTR, ...); - LPSTR SnmpUtilIdsToA(UINT*, UINT); - LPVOID SnmpUtilMemAlloc(UINT); - VOID SnmpUtilMemFree(LPVOID); - LPVOID SnmpUtilMemReAlloc(LPVOID, UINT); - SNMPAPI SnmpUtilOctetsCmp(AsnOctetString*, AsnOctetString*); - SNMPAPI SnmpUtilOctetsCpy(AsnOctetString*, AsnOctetString*); - VOID SnmpUtilOctetsFree(AsnOctetString*); - SNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*, AsnOctetString*, UINT); - SNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*, AsnObjectIdentifier*); - SNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*, AsnObjectIdentifier*); - SNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*, AsnObjectIdentifier*); - VOID SnmpUtilOidFree(AsnObjectIdentifier*); - SNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*, AsnObjectIdentifier*, UINT); - LPSTR SnmpUtilOidToA(AsnObjectIdentifier*); - VOID SnmpUtilPrintAsnAny(AsnAny*); - VOID SnmpUtilPrintOid(AsnObjectIdentifier*); - SNMPAPI SnmpUtilVarBindCpy(SnmpVarBind*, SnmpVarBind*); - SNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*, SnmpVarBindList*); - VOID SnmpUtilVarBindFree(SnmpVarBind*); - VOID SnmpUtilVarBindListFree(SnmpVarBindList*); + VOID SnmpExtensionClose(); + BOOL SnmpExtensionInit(DWORD, HANDLE*, AsnObjectIdentifier*); + BOOL SnmpExtensionInitEx(AsnObjectIdentifier*); + BOOL SnmpExtensionMonitor(LPVOID); + BOOL SnmpExtensionQuery(BYTE, SnmpVarBindList*, AsnInteger32*, + AsnInteger32*); + BOOL SnmpExtensionQueryEx(DWORD, DWORD, SnmpVarBindList*, AsnOctetString*, + AsnInteger32*, AsnInteger32*); + BOOL SnmpExtensionTrap(AsnObjectIdentifier*, AsnInteger32*, AsnInteger32*, + AsnTimeticks*, SnmpVarBindList*); + DWORD SnmpSvcGetUptime(); + VOID SnmpSvcSetLogLevel(INT); + VOID SnmpSvcSetLogType(INT); + SNMPAPI SnmpUtilAsnAnyCpy(AsnAny*, AsnAny*); + VOID SnmpUtilAsnAnyFree(AsnAny*); + VOID SnmpUtilDbgPrint(INT, LPSTR, ...); + LPSTR SnmpUtilIdsToA(UINT*, UINT); + LPVOID SnmpUtilMemAlloc(UINT); + VOID SnmpUtilMemFree(LPVOID); + LPVOID SnmpUtilMemReAlloc(LPVOID, UINT); + SNMPAPI SnmpUtilOctetsCmp(AsnOctetString*, AsnOctetString*); + SNMPAPI SnmpUtilOctetsCpy(AsnOctetString*, AsnOctetString*); + VOID SnmpUtilOctetsFree(AsnOctetString*); + SNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*, AsnOctetString*, UINT); + SNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*, AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*, AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*, AsnObjectIdentifier*); + VOID SnmpUtilOidFree(AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*, AsnObjectIdentifier*, UINT); + LPSTR SnmpUtilOidToA(AsnObjectIdentifier*); + VOID SnmpUtilPrintAsnAny(AsnAny*); + VOID SnmpUtilPrintOid(AsnObjectIdentifier*); + SNMPAPI SnmpUtilVarBindCpy(SnmpVarBind*, SnmpVarBind*); + SNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*, SnmpVarBindList*); + VOID SnmpUtilVarBindFree(SnmpVarBind*); + VOID SnmpUtilVarBindListFree(SnmpVarBindList*); } alias SnmpUtilMemAlloc SNMP_malloc; diff --git a/src/core/sys/windows/sql.d b/src/core/sys/windows/sql.d index c3593f5643..b9cfa2853c 100644 --- a/src/core/sys/windows/sql.d +++ b/src/core/sys/windows/sql.d @@ -205,229 +205,229 @@ const SQL_USER_NAME=47; const SQL_VARCHAR=12; static if (ODBCVER >= 0x0200) { - const SQL_AT_ADD_COLUMN = 1; - const SQL_AT_DROP_COLUMN = 2; + const SQL_AT_ADD_COLUMN = 1; + const SQL_AT_DROP_COLUMN = 2; } static if (ODBCVER >= 0x0201) { - const SQL_OJ_LEFT = 1; - const SQL_OJ_RIGHT = 2; - const SQL_OJ_FULL = 4; - const SQL_OJ_NESTED = 8; - const SQL_OJ_NOT_ORDERED = 16; - const SQL_OJ_INNER = 32; - const SQL_OJ_ALL_COMPARISON_OPS = 64; + const SQL_OJ_LEFT = 1; + const SQL_OJ_RIGHT = 2; + const SQL_OJ_FULL = 4; + const SQL_OJ_NESTED = 8; + const SQL_OJ_NOT_ORDERED = 16; + const SQL_OJ_INNER = 32; + const SQL_OJ_ALL_COMPARISON_OPS = 64; } static if (ODBCVER >= 0x0300) { - const SQL_AM_CONNECTION=1; - const SQL_AM_NONE=0; - const SQL_AM_STATEMENT=2; - const SQL_API_SQLALLOCHANDLE=1001; - const SQL_API_SQLBINDPARAM=1002; - const SQL_API_SQLCLOSECURSOR=1003; - const SQL_API_SQLCOLATTRIBUTE=6; - const SQL_API_SQLCOPYDESC=1004; - const SQL_API_SQLENDTRAN=1005; - const SQL_API_SQLFETCHSCROLL=1021; - const SQL_API_SQLFREEHANDLE=1006; - const SQL_API_SQLGETCONNECTATTR=1007; - const SQL_API_SQLGETDESCFIELD=1008; - const SQL_API_SQLGETDESCREC=1009; - const SQL_API_SQLGETDIAGFIELD=1010; - const SQL_API_SQLGETDIAGREC=1011; - const SQL_API_SQLGETENVATTR=1012; - const SQL_API_SQLGETSTMTATTR=1014; - const SQL_API_SQLSETCONNECTATTR=1016; - const SQL_API_SQLSETDESCFIELD=1017; - const SQL_API_SQLSETDESCREC=1018; - const SQL_API_SQLSETENVATTR=1019; - const SQL_API_SQLSETSTMTATTR=1020; - const SQL_ARD_TYPE=-99; - const SQL_AT_ADD_CONSTRAINT=8; - const SQL_ATTR_APP_PARAM_DESC=10011; - const SQL_ATTR_APP_ROW_DESC=10010; - const SQL_ATTR_AUTO_IPD=10001; - const SQL_ATTR_CURSOR_SCROLLABLE=-1; - const SQL_ATTR_CURSOR_SENSITIVITY=-2; - const SQL_ATTR_IMP_PARAM_DESC=10013; - const SQL_ATTR_IMP_ROW_DESC=10012; - const SQL_ATTR_METADATA_ID=10014; - const SQL_ATTR_OUTPUT_NTS=10001; - const SQL_CATALOG_NAME=10003; - const SQL_CODE_DATE=1; - const SQL_CODE_TIME=2; - const SQL_CODE_TIMESTAMP=3; - const SQL_COLLATION_SEQ=10004; - const SQL_CURSOR_SENSITIVITY=10001; - const SQL_DATE_LEN=10; - const SQL_DATETIME=9; - const SQL_DEFAULT=99; + const SQL_AM_CONNECTION=1; + const SQL_AM_NONE=0; + const SQL_AM_STATEMENT=2; + const SQL_API_SQLALLOCHANDLE=1001; + const SQL_API_SQLBINDPARAM=1002; + const SQL_API_SQLCLOSECURSOR=1003; + const SQL_API_SQLCOLATTRIBUTE=6; + const SQL_API_SQLCOPYDESC=1004; + const SQL_API_SQLENDTRAN=1005; + const SQL_API_SQLFETCHSCROLL=1021; + const SQL_API_SQLFREEHANDLE=1006; + const SQL_API_SQLGETCONNECTATTR=1007; + const SQL_API_SQLGETDESCFIELD=1008; + const SQL_API_SQLGETDESCREC=1009; + const SQL_API_SQLGETDIAGFIELD=1010; + const SQL_API_SQLGETDIAGREC=1011; + const SQL_API_SQLGETENVATTR=1012; + const SQL_API_SQLGETSTMTATTR=1014; + const SQL_API_SQLSETCONNECTATTR=1016; + const SQL_API_SQLSETDESCFIELD=1017; + const SQL_API_SQLSETDESCREC=1018; + const SQL_API_SQLSETENVATTR=1019; + const SQL_API_SQLSETSTMTATTR=1020; + const SQL_ARD_TYPE=-99; + const SQL_AT_ADD_CONSTRAINT=8; + const SQL_ATTR_APP_PARAM_DESC=10011; + const SQL_ATTR_APP_ROW_DESC=10010; + const SQL_ATTR_AUTO_IPD=10001; + const SQL_ATTR_CURSOR_SCROLLABLE=-1; + const SQL_ATTR_CURSOR_SENSITIVITY=-2; + const SQL_ATTR_IMP_PARAM_DESC=10013; + const SQL_ATTR_IMP_ROW_DESC=10012; + const SQL_ATTR_METADATA_ID=10014; + const SQL_ATTR_OUTPUT_NTS=10001; + const SQL_CATALOG_NAME=10003; + const SQL_CODE_DATE=1; + const SQL_CODE_TIME=2; + const SQL_CODE_TIMESTAMP=3; + const SQL_COLLATION_SEQ=10004; + const SQL_CURSOR_SENSITIVITY=10001; + const SQL_DATE_LEN=10; + const SQL_DATETIME=9; + const SQL_DEFAULT=99; - const SQL_DESC_ALLOC_AUTO=1; - const SQL_DESC_ALLOC_USER=2; - const SQL_DESC_ALLOC_TYPE=1099; - const SQL_DESC_COUNT=1001; - const SQL_DESC_TYPE=1002; - const SQL_DESC_LENGTH=1003; - const SQL_DESC_OCTET_LENGTH_PTR=1004; - const SQL_DESC_PRECISION=1005; - const SQL_DESC_SCALE=1006; - const SQL_DESC_DATETIME_INTERVAL_CODE=1007; - const SQL_DESC_NULLABLE=1008; - const SQL_DESC_INDICATOR_PTR=1009; - const SQL_DESC_DATA_PTR=1010; - const SQL_DESC_NAME=1011; - const SQL_DESC_UNNAMED=1012; - const SQL_DESC_OCTET_LENGTH=1013; + const SQL_DESC_ALLOC_AUTO=1; + const SQL_DESC_ALLOC_USER=2; + const SQL_DESC_ALLOC_TYPE=1099; + const SQL_DESC_COUNT=1001; + const SQL_DESC_TYPE=1002; + const SQL_DESC_LENGTH=1003; + const SQL_DESC_OCTET_LENGTH_PTR=1004; + const SQL_DESC_PRECISION=1005; + const SQL_DESC_SCALE=1006; + const SQL_DESC_DATETIME_INTERVAL_CODE=1007; + const SQL_DESC_NULLABLE=1008; + const SQL_DESC_INDICATOR_PTR=1009; + const SQL_DESC_DATA_PTR=1010; + const SQL_DESC_NAME=1011; + const SQL_DESC_UNNAMED=1012; + const SQL_DESC_OCTET_LENGTH=1013; - const SQL_DESCRIBE_PARAMETER=10002; + const SQL_DESCRIBE_PARAMETER=10002; - const SQL_DIAG_ALTER_DOMAIN=3; - const SQL_DIAG_ALTER_TABLE=4; - const SQL_DIAG_CALL=7; - const SQL_DIAG_CLASS_ORIGIN=8; - const SQL_DIAG_CONNECTION_NAME=10; - const SQL_DIAG_CREATE_ASSERTION=6; - const SQL_DIAG_CREATE_CHARACTER_SET=8; - const SQL_DIAG_CREATE_COLLATION=10; - const SQL_DIAG_CREATE_DOMAIN=23; - const SQL_DIAG_CREATE_INDEX=-1; - const SQL_DIAG_CREATE_SCHEMA=64; - const SQL_DIAG_CREATE_TABLE=77; - const SQL_DIAG_CREATE_TRANSLATION=79; - const SQL_DIAG_CREATE_VIEW=84; - const SQL_DIAG_DELETE_WHERE=19; - const SQL_DIAG_DROP_ASSERTION=24; - const SQL_DIAG_DROP_CHARACTER_SET=25; - const SQL_DIAG_DROP_COLLATION=26; - const SQL_DIAG_DROP_DOMAIN=27; - const SQL_DIAG_DROP_INDEX=(-2); - const SQL_DIAG_DROP_SCHEMA=31; - const SQL_DIAG_DROP_TABLE=32; - const SQL_DIAG_DROP_TRANSLATION=33; - const SQL_DIAG_DROP_VIEW=36; - const SQL_DIAG_DYNAMIC_DELETE_CURSOR=38; - const SQL_DIAG_DYNAMIC_FUNCTION=7; - const SQL_DIAG_DYNAMIC_FUNCTION_CODE=12; - const SQL_DIAG_DYNAMIC_UPDATE_CURSOR=81; - const SQL_DIAG_GRANT=48; - const SQL_DIAG_INSERT=50; - const SQL_DIAG_MESSAGE_TEXT=6; - const SQL_DIAG_NATIVE=5; - const SQL_DIAG_NUMBER=2; - const SQL_DIAG_RETURNCODE=1; - const SQL_DIAG_REVOKE=59; - const SQL_DIAG_ROW_COUNT=3; - const SQL_DIAG_SELECT_CURSOR=85; - const SQL_DIAG_SERVER_NAME=11; - const SQL_DIAG_SQLSTATE=4; - const SQL_DIAG_SUBCLASS_ORIGIN=9; - const SQL_DIAG_UNKNOWN_STATEMENT=0; - const SQL_DIAG_UPDATE_WHERE=82; + const SQL_DIAG_ALTER_DOMAIN=3; + const SQL_DIAG_ALTER_TABLE=4; + const SQL_DIAG_CALL=7; + const SQL_DIAG_CLASS_ORIGIN=8; + const SQL_DIAG_CONNECTION_NAME=10; + const SQL_DIAG_CREATE_ASSERTION=6; + const SQL_DIAG_CREATE_CHARACTER_SET=8; + const SQL_DIAG_CREATE_COLLATION=10; + const SQL_DIAG_CREATE_DOMAIN=23; + const SQL_DIAG_CREATE_INDEX=-1; + const SQL_DIAG_CREATE_SCHEMA=64; + const SQL_DIAG_CREATE_TABLE=77; + const SQL_DIAG_CREATE_TRANSLATION=79; + const SQL_DIAG_CREATE_VIEW=84; + const SQL_DIAG_DELETE_WHERE=19; + const SQL_DIAG_DROP_ASSERTION=24; + const SQL_DIAG_DROP_CHARACTER_SET=25; + const SQL_DIAG_DROP_COLLATION=26; + const SQL_DIAG_DROP_DOMAIN=27; + const SQL_DIAG_DROP_INDEX=(-2); + const SQL_DIAG_DROP_SCHEMA=31; + const SQL_DIAG_DROP_TABLE=32; + const SQL_DIAG_DROP_TRANSLATION=33; + const SQL_DIAG_DROP_VIEW=36; + const SQL_DIAG_DYNAMIC_DELETE_CURSOR=38; + const SQL_DIAG_DYNAMIC_FUNCTION=7; + const SQL_DIAG_DYNAMIC_FUNCTION_CODE=12; + const SQL_DIAG_DYNAMIC_UPDATE_CURSOR=81; + const SQL_DIAG_GRANT=48; + const SQL_DIAG_INSERT=50; + const SQL_DIAG_MESSAGE_TEXT=6; + const SQL_DIAG_NATIVE=5; + const SQL_DIAG_NUMBER=2; + const SQL_DIAG_RETURNCODE=1; + const SQL_DIAG_REVOKE=59; + const SQL_DIAG_ROW_COUNT=3; + const SQL_DIAG_SELECT_CURSOR=85; + const SQL_DIAG_SERVER_NAME=11; + const SQL_DIAG_SQLSTATE=4; + const SQL_DIAG_SUBCLASS_ORIGIN=9; + const SQL_DIAG_UNKNOWN_STATEMENT=0; + const SQL_DIAG_UPDATE_WHERE=82; - const SQL_FALSE=0; - const SQL_HANDLE_DBC=2; - const SQL_HANDLE_DESC=4; - const SQL_HANDLE_ENV=1; - const SQL_HANDLE_STMT=3; - const SQL_INSENSITIVE=1; - const SQL_MAX_CONCURRENT_ACTIVITIES=1; - const SQL_MAX_DRIVER_CONNECTIONS=0; - const SQL_MAX_IDENTIFIER_LEN=10005; - const SQL_MAXIMUM_CONCURRENT_ACTIVITIES=SQL_MAX_CONCURRENT_ACTIVITIES; - const SQL_MAXIMUM_DRIVER_CONNECTIONS=SQL_MAX_DRIVER_CONNECTIONS; - const SQL_MAXIMUM_IDENTIFIER_LENGTH=SQL_MAX_IDENTIFIER_LEN; - const SQL_NAMED=0; - const SQL_NO_DATA=100; - const SQL_NONSCROLLABLE=0; - const SQL_NULL_HANDLE=0L; - const SQL_NULL_HDESC=0; - const SQL_OJ_CAPABILITIES=115; - const SQL_OUTER_JOIN_CAPABILITIES=SQL_OJ_CAPABILITIES; - const SQL_PC_NON_PSEUDO=1; + const SQL_FALSE=0; + const SQL_HANDLE_DBC=2; + const SQL_HANDLE_DESC=4; + const SQL_HANDLE_ENV=1; + const SQL_HANDLE_STMT=3; + const SQL_INSENSITIVE=1; + const SQL_MAX_CONCURRENT_ACTIVITIES=1; + const SQL_MAX_DRIVER_CONNECTIONS=0; + const SQL_MAX_IDENTIFIER_LEN=10005; + const SQL_MAXIMUM_CONCURRENT_ACTIVITIES=SQL_MAX_CONCURRENT_ACTIVITIES; + const SQL_MAXIMUM_DRIVER_CONNECTIONS=SQL_MAX_DRIVER_CONNECTIONS; + const SQL_MAXIMUM_IDENTIFIER_LENGTH=SQL_MAX_IDENTIFIER_LEN; + const SQL_NAMED=0; + const SQL_NO_DATA=100; + const SQL_NONSCROLLABLE=0; + const SQL_NULL_HANDLE=0L; + const SQL_NULL_HDESC=0; + const SQL_OJ_CAPABILITIES=115; + const SQL_OUTER_JOIN_CAPABILITIES=SQL_OJ_CAPABILITIES; + const SQL_PC_NON_PSEUDO=1; - const SQL_PRED_NONE=0; - const SQL_PRED_CHAR=1; - const SQL_PRED_BASIC=2; + const SQL_PRED_NONE=0; + const SQL_PRED_CHAR=1; + const SQL_PRED_BASIC=2; - const SQL_ROW_IDENTIFIER=1; - const SQL_SCROLLABLE=1; - const SQL_SENSITIVE=2; - const SQL_TIME_LEN=8; - const SQL_TIMESTAMP_LEN=19; - const SQL_TRUE=1; - const SQL_TYPE_DATE=91; - const SQL_TYPE_TIME=92; - const SQL_TYPE_TIMESTAMP=93; - const SQL_UNNAMED=1; - const SQL_UNSPECIFIED=0; - const SQL_XOPEN_CLI_YEAR=10000; + const SQL_ROW_IDENTIFIER=1; + const SQL_SCROLLABLE=1; + const SQL_SENSITIVE=2; + const SQL_TIME_LEN=8; + const SQL_TIMESTAMP_LEN=19; + const SQL_TRUE=1; + const SQL_TYPE_DATE=91; + const SQL_TYPE_TIME=92; + const SQL_TYPE_TIMESTAMP=93; + const SQL_UNNAMED=1; + const SQL_UNSPECIFIED=0; + const SQL_XOPEN_CLI_YEAR=10000; }//#endif /* ODBCVER >= 0x0300 */ extern (Windows) { - deprecated { - SQLRETURN SQLAllocConnect(SQLHENV, SQLHDBC*); - SQLRETURN SQLAllocEnv(SQLHENV*); - SQLRETURN SQLAllocStmt(SQLHDBC, SQLHSTMT*); - SQLRETURN SQLError(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLFreeConnect(SQLHDBC); - SQLRETURN SQLFreeEnv(SQLHENV); - SQLRETURN SQLSetParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); - SQLRETURN SQLGetConnectOption(SQLHDBC, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLGetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLSetConnectOption(SQLHDBC, SQLUSMALLINT, SQLULEN); - SQLRETURN SQLSetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLROWCOUNT); - } - SQLRETURN SQLBindCol(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); - SQLRETURN SQLCancel(SQLHSTMT); - SQLRETURN SQLConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLDescribeCol(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLDisconnect(SQLHDBC); - SQLRETURN SQLExecDirect(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLExecute(SQLHSTMT); - SQLRETURN SQLFetch(SQLHSTMT); - SQLRETURN SQLFreeStmt(SQLHSTMT, SQLUSMALLINT); - SQLRETURN SQLGetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLNumResultCols(SQLHSTMT, SQLSMALLINT*); - SQLRETURN SQLPrepare(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLRowCount(SQLHSTMT, SQLLEN*); - SQLRETURN SQLSetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLTransact(SQLHENV, SQLHDBC, SQLUSMALLINT); - SQLRETURN SQLColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLGetData(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); - SQLRETURN SQLGetFunctions(SQLHDBC, SQLUSMALLINT, SQLUSMALLINT*); - SQLRETURN SQLGetInfo(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetTypeInfo(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLParamData(SQLHSTMT, SQLPOINTER*); - SQLRETURN SQLPutData(SQLHSTMT, SQLPOINTER, SQLLEN); - SQLRETURN SQLSpecialColumns(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLStatistics(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLTables(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLDataSources(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + deprecated { + SQLRETURN SQLAllocConnect(SQLHENV, SQLHDBC*); + SQLRETURN SQLAllocEnv(SQLHENV*); + SQLRETURN SQLAllocStmt(SQLHDBC, SQLHSTMT*); + SQLRETURN SQLError(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLFreeConnect(SQLHDBC); + SQLRETURN SQLFreeEnv(SQLHENV); + SQLRETURN SQLSetParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); + SQLRETURN SQLGetConnectOption(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLSetConnectOption(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLROWCOUNT); + } + SQLRETURN SQLBindCol(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLCancel(SQLHSTMT); + SQLRETURN SQLConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDescribeCol(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDisconnect(SQLHDBC); + SQLRETURN SQLExecDirect(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLExecute(SQLHSTMT); + SQLRETURN SQLFetch(SQLHSTMT); + SQLRETURN SQLFreeStmt(SQLHSTMT, SQLUSMALLINT); + SQLRETURN SQLGetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLNumResultCols(SQLHSTMT, SQLSMALLINT*); + SQLRETURN SQLPrepare(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLRowCount(SQLHSTMT, SQLLEN*); + SQLRETURN SQLSetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTransact(SQLHENV, SQLHDBC, SQLUSMALLINT); + SQLRETURN SQLColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLGetData(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLGetFunctions(SQLHDBC, SQLUSMALLINT, SQLUSMALLINT*); + SQLRETURN SQLGetInfo(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetTypeInfo(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLParamData(SQLHSTMT, SQLPOINTER*); + SQLRETURN SQLPutData(SQLHSTMT, SQLPOINTER, SQLLEN); + SQLRETURN SQLSpecialColumns(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatistics(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTables(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDataSources(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - static if (ODBCVER >= 0x0300) { - SQLRETURN SQLAllocHandle(SQLSMALLINT, SQLHANDLE, SQLHANDLE*); - SQLRETURN SQLBindParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); - SQLRETURN SQLCloseCursor(SQLHSTMT); - SQLRETURN SQLColAttribute(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); - SQLRETURN SQLCopyDesc(SQLHDESC, SQLHDESC); - SQLRETURN SQLEndTran(SQLSMALLINT, SQLHANDLE, SQLSMALLINT); - SQLRETURN SQLFetchScroll(SQLHSTMT, SQLSMALLINT, SQLROWOFFSET); - SQLRETURN SQLFreeHandle(SQLSMALLINT, SQLHANDLE); - SQLRETURN SQLGetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetDescRec(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, - SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLGetDiagField(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagRec(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLSetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetDescRec(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLLEN, SQLSMALLINT, - SQLSMALLINT, SQLPOINTER, SQLLEN*, SQLLEN*); - SQLRETURN SQLSetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); - }/* (ODBCVER >= 0x0300) */ + static if (ODBCVER >= 0x0300) { + SQLRETURN SQLAllocHandle(SQLSMALLINT, SQLHANDLE, SQLHANDLE*); + SQLRETURN SQLBindParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); + SQLRETURN SQLCloseCursor(SQLHSTMT); + SQLRETURN SQLColAttribute(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLCopyDesc(SQLHDESC, SQLHDESC); + SQLRETURN SQLEndTran(SQLSMALLINT, SQLHANDLE, SQLSMALLINT); + SQLRETURN SQLFetchScroll(SQLHSTMT, SQLSMALLINT, SQLROWOFFSET); + SQLRETURN SQLFreeHandle(SQLSMALLINT, SQLHANDLE); + SQLRETURN SQLGetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescRec(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, + SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDiagField(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRec(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescRec(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLLEN, SQLSMALLINT, + SQLSMALLINT, SQLPOINTER, SQLLEN*, SQLLEN*); + SQLRETURN SQLSetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + }/* (ODBCVER >= 0x0300) */ } diff --git a/src/core/sys/windows/sqlext.d b/src/core/sys/windows/sqlext.d index d73eac000c..6f5035970b 100644 --- a/src/core/sys/windows/sqlext.d +++ b/src/core/sys/windows/sqlext.d @@ -183,10 +183,10 @@ const SQL_CR_DELETE = SQL_CB_DELETE;/* deprecated */ const SQL_CR_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ enum : ULONG { - SQL_CUR_USE_IF_NEEDED = 0, - SQL_CUR_USE_ODBC, - SQL_CUR_USE_DRIVER, - SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER + SQL_CUR_USE_IF_NEEDED = 0, + SQL_CUR_USE_ODBC, + SQL_CUR_USE_DRIVER, + SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER } const SQL_CURRENT_QUALIFIER = 109; @@ -559,665 +559,665 @@ const SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; static if (ODBCVER < 0x0300) { - const SQL_CONNECT_OPT_DRVR_START = 1000; - const SQL_CONN_OPT_MAX = SQL_PACKET_SIZE; - const SQL_CONN_OPT_MIN = SQL_ACCESS_MODE; - const SQL_STMT_OPT_MAX = SQL_ROW_NUMBER; - const SQL_STMT_OPT_MIN = SQL_QUERY_TIMEOUT; - const SQL_TYPE_DRIVER_START = SQL_INTERVAL_YEAR; - const SQL_TYPE_DRIVER_END = SQL_UNICODE_LONGVARCHAR; - const SQL_TYPE_MIN = SQL_BIT; - const SQL_TYPE_MAX = SQL_VARCHAR; + const SQL_CONNECT_OPT_DRVR_START = 1000; + const SQL_CONN_OPT_MAX = SQL_PACKET_SIZE; + const SQL_CONN_OPT_MIN = SQL_ACCESS_MODE; + const SQL_STMT_OPT_MAX = SQL_ROW_NUMBER; + const SQL_STMT_OPT_MIN = SQL_QUERY_TIMEOUT; + const SQL_TYPE_DRIVER_START = SQL_INTERVAL_YEAR; + const SQL_TYPE_DRIVER_END = SQL_UNICODE_LONGVARCHAR; + const SQL_TYPE_MIN = SQL_BIT; + const SQL_TYPE_MAX = SQL_VARCHAR; } static if (ODBCVER < 0x0300) { - const SQL_NO_DATA_FOUND = 100; - const SQL_INTERVAL_YEAR = -80; - const SQL_INTERVAL_MONTH = -81; - const SQL_INTERVAL_YEAR_TO_MONTH = -82; - const SQL_INTERVAL_DAY = -83; - const SQL_INTERVAL_HOUR = -84; - const SQL_INTERVAL_MINUTE = -85; - const SQL_INTERVAL_SECOND = -86; - const SQL_INTERVAL_DAY_TO_HOUR = -87; - const SQL_INTERVAL_DAY_TO_MINUTE = -88; - const SQL_INTERVAL_DAY_TO_SECOND = -89; - const SQL_INTERVAL_HOUR_TO_MINUTE = -90; - const SQL_INTERVAL_HOUR_TO_SECOND = -91; - const SQL_INTERVAL_MINUTE_TO_SECOND = -92; + const SQL_NO_DATA_FOUND = 100; + const SQL_INTERVAL_YEAR = -80; + const SQL_INTERVAL_MONTH = -81; + const SQL_INTERVAL_YEAR_TO_MONTH = -82; + const SQL_INTERVAL_DAY = -83; + const SQL_INTERVAL_HOUR = -84; + const SQL_INTERVAL_MINUTE = -85; + const SQL_INTERVAL_SECOND = -86; + const SQL_INTERVAL_DAY_TO_HOUR = -87; + const SQL_INTERVAL_DAY_TO_MINUTE = -88; + const SQL_INTERVAL_DAY_TO_SECOND = -89; + const SQL_INTERVAL_HOUR_TO_MINUTE = -90; + const SQL_INTERVAL_HOUR_TO_SECOND = -91; + const SQL_INTERVAL_MINUTE_TO_SECOND = -92; } else { - const SQL_NO_DATA_FOUND = SQL_NO_DATA; - const SQL_CODE_YEAR = 1; - const SQL_CODE_MONTH = 2; - const SQL_CODE_DAY = 3; - const SQL_CODE_HOUR = 4; - const SQL_CODE_MINUTE = 5; - const SQL_CODE_SECOND = 6; - const SQL_CODE_YEAR_TO_MONTH = 7; - const SQL_CODE_DAY_TO_HOUR = 8; - const SQL_CODE_DAY_TO_MINUTE = 9; - const SQL_CODE_DAY_TO_SECOND = 10; - const SQL_CODE_HOUR_TO_MINUTE = 11; - const SQL_CODE_HOUR_TO_SECOND = 12; - const SQL_CODE_MINUTE_TO_SECOND = 13; - const SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR; - const SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH; - const SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY; - const SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR; - const SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE; - const SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND; - const SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH; - const SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR; - const SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE; - const SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND; - const SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE; - const SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND; - const SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND; + const SQL_NO_DATA_FOUND = SQL_NO_DATA; + const SQL_CODE_YEAR = 1; + const SQL_CODE_MONTH = 2; + const SQL_CODE_DAY = 3; + const SQL_CODE_HOUR = 4; + const SQL_CODE_MINUTE = 5; + const SQL_CODE_SECOND = 6; + const SQL_CODE_YEAR_TO_MONTH = 7; + const SQL_CODE_DAY_TO_HOUR = 8; + const SQL_CODE_DAY_TO_MINUTE = 9; + const SQL_CODE_DAY_TO_SECOND = 10; + const SQL_CODE_HOUR_TO_MINUTE = 11; + const SQL_CODE_HOUR_TO_SECOND = 12; + const SQL_CODE_MINUTE_TO_SECOND = 13; + const SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR; + const SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH; + const SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY; + const SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR; + const SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE; + const SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND; + const SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH; + const SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR; + const SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE; + const SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND; + const SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE; + const SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND; + const SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND; }//[Yes] #endif static if ((ODBCVER >= 0x0201) && (ODBCVER < 0x0300)) { - const SQL_OJ_CAPABILITIES = 65003; + const SQL_OJ_CAPABILITIES = 65003; } static if (ODBCVER >= 0x0250) { - const SQL_NO_ACTION = 3; - const SQL_SET_DEFAULT = 4; + const SQL_NO_ACTION = 3; + const SQL_SET_DEFAULT = 4; } static if (ODBCVER >= 0x0300) { - const SQL_ACTIVE_ENVIRONMENTS = 116; - const SQL_AD_ADD_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_AD_ADD_DOMAIN_CONSTRAINT = 0x00000002L; - const SQL_AD_ADD_DOMAIN_DEFAULT = 0x00000008L; - const SQL_AD_CONSTRAINT_NAME_DEFINITION = 0x00000001L; - const SQL_AD_DROP_DOMAIN_CONSTRAINT = 0x00000004L; - const SQL_AD_DROP_DOMAIN_DEFAULT = 0x00000010L; - const SQL_AF_ALL = 0x00000040L; - const SQL_AF_AVG = 0x00000001L; - const SQL_AF_COUNT = 0x00000002L; - const SQL_AF_DISTINCT = 0x00000020L; - const SQL_AF_MAX = 0x00000004L; - const SQL_AF_MIN = 0x00000008L; - const SQL_AF_SUM = 0x00000010L; - const SQL_AGGREGATE_FUNCTIONS = 169; - const SQL_ALL_CATALOGS = "%"; - const SQL_ALL_SCHEMAS = "%"; - const SQL_ALL_TABLE_TYPES = "%"; - const SQL_ALTER_DOMAIN = 117; - const SQL_AM_CONNECTION = 1; - const SQL_AM_NONE = 0; - const SQL_AM_STATEMENT = 2; - const SQL_API_ODBC3_ALL_FUNCTIONS = 999; - const SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; - const SQL_API_SQLALLOCHANDLESTD = 73; - const SQL_API_SQLBULKOPERATIONS = 24; - const SQL_ASYNC_MODE = 10021; - const SQL_AT_ADD_COLUMN_COLLATION = 0x00000080L; - const SQL_AT_ADD_COLUMN_DEFAULT = 0x00000040L; - const SQL_AT_ADD_COLUMN_SINGLE = 0x00000020L; - const SQL_AT_ADD_TABLE_CONSTRAINT = 0x00001000L; - const SQL_AT_CONSTRAINT_DEFERRABLE = 0x00040000L; - const SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = 0x00010000L; - const SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00020000L; - const SQL_AT_CONSTRAINT_NAME_DEFINITION = 0x00008000L; - const SQL_AT_CONSTRAINT_NON_DEFERRABLE = 0x00080000L; - const SQL_AT_DROP_COLUMN_CASCADE = 0x00000400L; - const SQL_AT_DROP_COLUMN_DEFAULT = 0x00000200L; - const SQL_AT_DROP_COLUMN_RESTRICT = 0x00000800L; - const SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = 0x00002000L; - const SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = 0x00004000L; - const SQL_AT_SET_COLUMN_DEFAULT = 0x00000100L; - const SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; - const SQL_ATTR_ASYNC_ENABLE = 4; - const SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; - const SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; - const SQL_ATTR_CONNECTION_POOLING = 201; - const SQL_ATTR_CONNECTION_TIMEOUT = 113; - const SQL_ATTR_CP_MATCH = 202; - const SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; - const SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; - const SQL_ATTR_DISCONNECT_BEHAVIOR = 114; - const SQL_ATTR_ENABLE_AUTO_IPD = 15; - const SQL_ATTR_ENLIST_IN_DTC = 1207; - const SQL_ATTR_ENLIST_IN_XA = 1208; - const SQL_ATTR_FETCH_BOOKMARK_PTR = 16; - const SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; - const SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; - const SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; - const SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; - const SQL_ATTR_NOSCAN = SQL_NOSCAN; - const SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; - const SQL_ATTR_ODBC_VERSION = 200; - const SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; - const SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; - const SQL_ATTR_PARAM_BIND_TYPE = 18; - const SQL_ATTR_PARAM_OPERATION_PTR = 19; - const SQL_ATTR_PARAM_STATUS_PTR = 20; - const SQL_ATTR_PARAMS_PROCESSED_PTR = 21; - const SQL_ATTR_PARAMSET_SIZE = 22; - const SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; - const SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; - const SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; - const SQL_ATTR_ROW_ARRAY_SIZE = 27; - const SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; - const SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; - const SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; - const SQL_ATTR_ROW_OPERATION_PTR = 24; - const SQL_ATTR_ROW_STATUS_PTR = 25; - const SQL_ATTR_ROWS_FETCHED_PTR = 26; - const SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; - const SQL_ATTR_TRACE = SQL_OPT_TRACE; - const SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; - const SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; - const SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; - const SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; - const SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; - const SQL_BATCH_ROW_COUNT = 120; - const SQL_BATCH_SUPPORT = 121; - const SQL_BRC_EXPLICIT = 0x0000002; - const SQL_BRC_PROCEDURES = 0x0000001; - const SQL_BRC_ROLLED_UP = 0x0000004; - const SQL_BS_ROW_COUNT_EXPLICIT = 0x00000002L; - const SQL_BS_ROW_COUNT_PROC = 0x00000008L; - const SQL_BS_SELECT_EXPLICIT = 0x00000001L; - const SQL_BS_SELECT_PROC = 0x00000004L; - const SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; - const SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; - const SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; - const SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; - const SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; - const SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; - const SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; - const SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; - const SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; - const SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; - const SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; - const SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; - const SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; - const SQL_C_NUMERIC = SQL_NUMERIC; - const SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; - const SQL_C_TYPE_DATE = SQL_TYPE_DATE; - const SQL_C_TYPE_TIME = SQL_TYPE_TIME; - const SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; - const SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; - const SQL_C_VARBOOKMARK = SQL_C_BINARY; - const SQL_CA_CONSTRAINT_DEFERRABLE = 0x00000040L; - const SQL_CA_CONSTRAINT_INITIALLY_DEFERRED = 0x00000010L; - const SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000020L; - const SQL_CA_CONSTRAINT_NON_DEFERRABLE = 0x00000080L; - const SQL_CA_CREATE_ASSERTION = 0x00000001L; - const SQL_CA1_ABSOLUTE = 0x00000002L; - const SQL_CA1_BOOKMARK = 0x00000008L; - const SQL_CA1_BULK_ADD = 0x00010000L; - const SQL_CA1_BULK_DELETE_BY_BOOKMARK = 0x00040000L; - const SQL_CA1_BULK_FETCH_BY_BOOKMARK = 0x00080000L; - const SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 0x00020000L; - const SQL_CA1_LOCK_EXCLUSIVE = 0x00000080L; - const SQL_CA1_LOCK_NO_CHANGE = 0x00000040L; - const SQL_CA1_LOCK_UNLOCK = 0x00000100L; - const SQL_CA1_NEXT = 0x00000001L; - const SQL_CA1_POS_DELETE = 0x00000800L; - const SQL_CA1_POS_POSITION = 0x00000200L; - const SQL_CA1_POS_REFRESH = 0x00001000L; - const SQL_CA1_POS_UPDATE = 0x00000400L; - const SQL_CA1_POSITIONED_DELETE = 0x00004000L; - const SQL_CA1_POSITIONED_UPDATE = 0x00002000L; - const SQL_CA1_RELATIVE = 0x00000004L; - const SQL_CA1_SELECT_FOR_UPDATE = 0x00008000L; - const SQL_CA2_CRC_APPROXIMATE = 0x00002000L; - const SQL_CA2_CRC_EXACT = 0x00001000L; - const SQL_CA2_LOCK_CONCURRENCY = 0x00000002L; - - const SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L; - const SQL_CA2_MAX_ROWS_DELETE = 0x00000200L; - const SQL_CA2_MAX_ROWS_INSERT = 0x00000100L; - const SQL_CA2_MAX_ROWS_SELECT = 0x00000080L; - const SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L; - const SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | - SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG; - - const SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L; - const SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L; - const SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L; - const SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L; - const SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L; - const SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L; - const SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L; - const SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L; - const SQL_CA2_SIMULATE_UNIQUE = 0x00010000L; - const SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; - const SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; - const SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; - const SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; - const SQL_CCOL_CREATE_COLLATION = 0x00000001L; - const SQL_CCS_COLLATE_CLAUSE = 0x00000002L; - const SQL_CCS_CREATE_CHARACTER_SET = 0x00000001L; - const SQL_CCS_LIMITED_COLLATION = 0x00000004L; - const SQL_CDO_COLLATION = 0x00000008L; - const SQL_CDO_CONSTRAINT = 0x00000004L; - const SQL_CDO_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_CDO_CONSTRAINT_NAME_DEFINITION = 0x00000010L; - const SQL_CDO_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_CDO_CREATE_DOMAIN = 0x00000001L; - const SQL_CDO_DEFAULT = 0x00000002L; - const SQL_CL_END = SQL_QL_END; - const SQL_CL_START = SQL_QL_START; - const SQL_COL_PRED_BASIC = SQL_ALL_EXCEPT_LIKE; - const SQL_COL_PRED_CHAR = SQL_LIKE_ONLY; - const SQL_COLUMN_DRIVER_START = 1000; - const SQL_COLUMN_IGNORE = SQL_IGNORE; - const SQL_COLUMN_NUMBER_UNKNOWN = -2; - const SQL_CONVERT_GUID = 173; - - const SQL_CONVERT_WCHAR = 122; - const SQL_CONVERT_INTERVAL_DAY_TIME = 123; - const SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; - const SQL_CONVERT_WLONGVARCHAR = 125; - const SQL_CONVERT_WVARCHAR = 126; - - const SQL_CREATE_ASSERTION = 127; - const SQL_CREATE_CHARACTER_SET = 128; - const SQL_CREATE_COLLATION = 129; - const SQL_CREATE_DOMAIN = 130; - const SQL_CREATE_SCHEMA = 131; - const SQL_CREATE_TABLE = 132; - const SQL_CREATE_TRANSLATION = 133; - const SQL_CREATE_VIEW = 134; - - - const SQL_CP_OFF = 0UL; - const SQL_CP_DEFAULT = SQL_CP_OFF; - const SQL_CP_ONE_PER_DRIVER = 1UL; - const SQL_CP_ONE_PER_HENV = 2UL; - - const SQL_CP_STRICT_MATCH = 0UL; - const SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; - const SQL_CP_RELAXED_MATCH = 1UL; - - const SQL_CS_CREATE_SCHEMA = 0x00000001L; - const SQL_CS_AUTHORIZATION = 0x00000002L; - const SQL_CS_DEFAULT_CHARACTER_SET = 0x00000004L; - - const SQL_CT_COLUMN_COLLATION = 0x00000800L; - const SQL_CT_COLUMN_CONSTRAINT = 0x00000200L; - const SQL_CT_COLUMN_DEFAULT = 0x00000400L; - const SQL_CT_COMMIT_DELETE = 0x00000004L; - const SQL_CT_COMMIT_PRESERVE = 0x00000002L; - const SQL_CT_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_CT_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_CT_CONSTRAINT_NAME_DEFINITION = 0x00002000L; - const SQL_CT_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_CT_CREATE_TABLE = 0x00000001L; - const SQL_CT_GLOBAL_TEMPORARY = 0x00000008L; - const SQL_CT_LOCAL_TEMPORARY = 0x00000010L; - const SQL_CT_TABLE_CONSTRAINT = 0x00001000L; - - const SQL_CTR_CREATE_TRANSLATION = 0x00000001L; - - const SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; - const SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; - const SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; - const SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; - const SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; - - const SQL_CVT_INTERVAL_YEAR_MONTH = 0x00080000L; - const SQL_CVT_INTERVAL_DAY_TIME = 0x00100000L; - const SQL_CVT_WCHAR = 0x00200000L; - const SQL_CVT_WLONGVARCHAR = 0x00400000L; - const SQL_CVT_WVARCHAR = 0x00800000L; - const SQL_CVT_GUID = 0x01000000L; - - const SQL_DA_DROP_ASSERTION = 0x00000001L; - const SQL_DATETIME_LITERALS = 119; - - const SQL_DB_DISCONNECT = 1UL; - const SQL_DB_RETURN_TO_POOL = 0UL; - const SQL_DB_DEFAULT = SQL_DB_RETURN_TO_POOL; - - const SQL_DC_DROP_COLLATION = 0x00000001L; - const SQL_DCS_DROP_CHARACTER_SET = 0x00000001L; - const SQL_DD_CASCADE = 0x00000004L; - const SQL_DD_DROP_DOMAIN = 0x00000001L; - const SQL_DD_RESTRICT = 0x00000002L; - const SQL_DDL_INDEX = 170; - const SQL_DELETE_BY_BOOKMARK = 6; - const SQL_DESC_ARRAY_SIZE = 20; - const SQL_DESC_ARRAY_STATUS_PTR = 21; - const SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; - const SQL_DESC_BASE_COLUMN_NAME = 22; - const SQL_DESC_BASE_TABLE_NAME = 23; - const SQL_DESC_BIND_OFFSET_PTR = 24; - const SQL_DESC_BIND_TYPE = 25; - const SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; - const SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; - const SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; - const SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; - const SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; - const SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; - const SQL_DESC_LABEL = SQL_COLUMN_LABEL; - const SQL_DESC_LITERAL_PREFIX = 27; - const SQL_DESC_LITERAL_SUFFIX = 28; - const SQL_DESC_LOCAL_TYPE_NAME = 29; - const SQL_DESC_MAXIMUM_SCALE = 30; - const SQL_DESC_MINIMUM_SCALE = 31; - const SQL_DESC_NUM_PREC_RADIX = 32; - const SQL_DESC_PARAMETER_TYPE = 33; - const SQL_DESC_ROWS_PROCESSED_PTR = 34; - const SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; - const SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; - const SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; - const SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; - const SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; - const SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; - const SQL_DI_CREATE_INDEX = 0x00000001L; - const SQL_DI_DROP_INDEX = 0x00000002L; - - const SQL_DIAG_COLUMN_NUMBER = -1247; - const SQL_DIAG_ROW_NUMBER = -1248; - const SQL_DIAG_CURSOR_ROW_COUNT = -1249; - - const SQL_DL_SQL92_DATE = 0x00000001L; - const SQL_DL_SQL92_INTERVAL_DAY = 0x00000020L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000L; - const SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040L; - const SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000L; - const SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000L; - const SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080L; - const SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000L; - const SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010L; - const SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100L; - const SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008L; - const SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200L; - const SQL_DL_SQL92_TIME = 0x00000002L; - const SQL_DL_SQL92_TIMESTAMP = 0x00000004L; - const SQL_DM_VER = 171; - const SQL_DRIVER_HDESC = 135; - const SQL_DROP_ASSERTION = 136; - const SQL_DROP_CHARACTER_SET = 137; - const SQL_DROP_COLLATION = 138; - const SQL_DROP_DOMAIN = 139; - const SQL_DROP_SCHEMA = 140; - const SQL_DROP_TABLE = 141; - const SQL_DROP_TRANSLATION = 142; - const SQL_DROP_VIEW = 143; - const SQL_DS_CASCADE = 0x00000004L; - const SQL_DS_DROP_SCHEMA = 0x00000001L; - const SQL_DS_RESTRICT = 0x00000002L; - const SQL_DT_CASCADE = 0x00000004L; - const SQL_DT_DROP_TABLE = 0x00000001L; - const SQL_DT_RESTRICT = 0x00000002L; - const SQL_DTC_DONE = 0L; - const SQL_DTR_DROP_TRANSLATION = 0x00000001L; - const SQL_DV_CASCADE = 0x00000004L; - const SQL_DV_DROP_VIEW = 0x00000001L; - const SQL_DV_RESTRICT = 0x00000002L; - const SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; - const SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; - const SQL_EXT_API_LAST = SQL_API_SQLBINDPARAMETER; - const SQL_EXT_API_START = 40; - const SQL_FETCH_BY_BOOKMARK = 7; - const SQL_FETCH_FIRST_SYSTEM = 32; - const SQL_FETCH_FIRST_USER = 31; - const SQL_FN_CVT_CAST = 0x00000002L; - const SQL_FN_STR_BIT_LENGTH = 0x00080000L; - const SQL_FN_STR_CHAR_LENGTH = 0x00100000L; - const SQL_FN_STR_CHARACTER_LENGTH = 0x00200000L; - const SQL_FN_STR_OCTET_LENGTH = 0x00400000L; - const SQL_FN_STR_POSITION = 0x00800000L; - const SQL_FN_TD_CURRENT_DATE = 0x00020000L; - const SQL_FN_TD_CURRENT_TIME = 0x00040000L; - const SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000L; - const SQL_FN_TD_EXTRACT = 0x00100000L; - const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; - const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; - /* #define SQL_FUNC_EXISTS(exists, api) - ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? - SQL_TRUE : SQL_FALSE ) - */ - const SQL_GB_COLLATE = 0x0004; - const SQL_HANDLE_SENV = 5; - - const SQL_IK_NONE = 0; - const SQL_IK_ASC = 1; - const SQL_IK_DESC = 2; - const SQL_IK_ALL = SQL_IK_ASC | SQL_IK_DESC; - - const SQL_INDEX_KEYWORDS = 148; - const SQL_INFO_DRIVER_START = 1000; - const SQL_INFO_LAST = SQL_QUALIFIER_LOCATION; - const SQL_INFO_SCHEMA_VIEWS = 149; - const SQL_INITIALLY_DEFERRED = 5; - const SQL_INITIALLY_IMMEDIATE = 6; - const SQL_INSERT_STATEMENT = 172; - const SQL_INTERVAL = 10; - const SQL_IS_INSERT_LITERALS = 0x00000001L; - const SQL_IS_INSERT_SEARCHED = 0x00000002L; - const SQL_IS_INTEGER = -6; - const SQL_IS_POINTER = -4; - const SQL_IS_SELECT_INTO = 0x00000004L; - const SQL_IS_SMALLINT = -8; - const SQL_IS_UINTEGER = -5; - const SQL_IS_USMALLINT = -7; - const SQL_ISV_ASSERTIONS = 0x00000001L; - const SQL_ISV_CHARACTER_SETS = 0x00000002L; - const SQL_ISV_CHECK_CONSTRAINTS = 0x00000004L; - const SQL_ISV_COLLATIONS = 0x00000008L; - const SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010L; - const SQL_ISV_COLUMN_PRIVILEGES = 0x00000020L; - const SQL_ISV_COLUMNS = 0x00000040L; - const SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080L; - const SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100L; - const SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200L; - const SQL_ISV_DOMAINS = 0x00000400L; - const SQL_ISV_KEY_COLUMN_USAGE = 0x00000800L; - const SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000L; - const SQL_ISV_SCHEMATA = 0x00002000L; - const SQL_ISV_SQL_LANGUAGES = 0x00004000L; - const SQL_ISV_TABLE_CONSTRAINTS = 0x00008000L; - const SQL_ISV_TABLE_PRIVILEGES = 0x00010000L; - const SQL_ISV_TABLES = 0x00020000L; - const SQL_ISV_TRANSLATIONS = 0x00040000L; - const SQL_ISV_USAGE_PRIVILEGES = 0x00080000L; - const SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000L; - const SQL_ISV_VIEW_TABLE_USAGE = 0x00200000L; - const SQL_ISV_VIEWS = 0x00400000L; - const SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; - const SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; - const SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; - const SQL_NO_COLUMN_NUMBER = -1; - const SQL_NO_ROW_NUMBER = -1; - const SQL_NOT_DEFERRABLE = 7; - const SQL_NUM_EXTENSIONS = SQL_EXT_API_LAST-SQL_EXT_API_START+1; - const SQL_NUM_FUNCTIONS = 23; - const SQL_ODBC_INTERFACE_CONFORMANCE = 152; - - enum : ULONG { - SQL_OIC_CORE = 1, - SQL_OIC_LEVEL1, - SQL_OIC_LEVEL2 - } - enum : ULONG { - SQL_OV_ODBC2 = 2, - SQL_OV_ODBC3 = 3 - } - - const ULONG - SQL_PARAM_BIND_BY_COLUMN = 0, - SQL_PARAM_BIND_TYPE_DEFAULT = SQL_PARAM_BIND_BY_COLUMN; - - const SQL_PARAM_ARRAY_ROW_COUNTS = 153; - const SQL_PARAM_ARRAY_SELECTS = 154; - const SQL_PARAM_DIAG_UNAVAILABLE = 1; - const SQL_PARAM_ERROR = 5; - const SQL_PARAM_IGNORE = 1; - const SQL_PARAM_PROCEED = 0; - const SQL_PARAM_SUCCESS = 0; - const SQL_PARAM_SUCCESS_WITH_INFO = 6; - const SQL_PARAM_UNUSED = 7; - - const SQL_PARC_BATCH = 1; - const SQL_PARC_NO_BATCH = 2; - const SQL_PAS_BATCH = 1; - const SQL_PAS_NO_BATCH = 2; - const SQL_PAS_NO_SELECT = 3; - - const SQL_ROW_IGNORE = 1; - const SQL_ROW_NUMBER_UNKNOWN = -2; - const SQL_ROW_PROCEED = 0; - const SQL_ROW_SUCCESS_WITH_INFO = 6; - - const SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002L; - const SQL_SC_SQL92_ENTRY = 0x00000001L; - const SQL_SC_SQL92_FULL = 0x00000008L; - const SQL_SC_SQL92_INTERMEDIATE = 0x00000004L; - - const SQL_SCC_ISO92_CLI = 0x00000002L; - const SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001L; - - const SQL_SCHEMA_TERM = SQL_OWNER_TERM; - const SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; - const SQL_SDF_CURRENT_DATE = 0x00000001L; - const SQL_SDF_CURRENT_TIME = 0x00000002L; - const SQL_SDF_CURRENT_TIMESTAMP = 0x00000004L; - const SQL_SFKD_CASCADE = 0x00000001L; - const SQL_SFKD_NO_ACTION = 0x00000002L; - const SQL_SFKD_SET_DEFAULT = 0x00000004L; - const SQL_SFKD_SET_NULL = 0x00000008L; - const SQL_SFKU_CASCADE = 0x00000001L; - const SQL_SFKU_NO_ACTION = 0x00000002L; - const SQL_SFKU_SET_DEFAULT = 0x00000004L; - const SQL_SFKU_SET_NULL = 0x00000008L; - const SQL_SG_DELETE_TABLE = 0x00000020L; - const SQL_SG_INSERT_COLUMN = 0x00000080L; - const SQL_SG_INSERT_TABLE = 0x00000040L; - const SQL_SG_REFERENCES_COLUMN = 0x00000200L; - const SQL_SG_REFERENCES_TABLE = 0x00000100L; - const SQL_SG_SELECT_TABLE = 0x00000400L; - const SQL_SG_UPDATE_COLUMN = 0x00001000L; - const SQL_SG_UPDATE_TABLE = 0x00000800L; - const SQL_SG_USAGE_ON_CHARACTER_SET = 0x00000002L; - const SQL_SG_USAGE_ON_COLLATION = 0x00000004L; - const SQL_SG_USAGE_ON_DOMAIN = 0x00000001L; - const SQL_SG_USAGE_ON_TRANSLATION = 0x00000008L; - const SQL_SG_WITH_GRANT_OPTION = 0x00000010L; - const SQL_SNVF_BIT_LENGTH = 0x00000001L; - const SQL_SNVF_CHAR_LENGTH = 0x00000002L; - const SQL_SNVF_CHARACTER_LENGTH = 0x00000004L; - const SQL_SNVF_EXTRACT = 0x00000008L; - const SQL_SNVF_OCTET_LENGTH = 0x00000010L; - const SQL_SNVF_POSITION = 0x00000020L; - const SQL_SP_BETWEEN = 0x00000800L; - const SQL_SP_COMPARISON = 0x00001000L; - const SQL_SP_EXISTS = 0x00000001L; - const SQL_SP_IN = 0x00000400L; - const SQL_SP_ISNOTNULL = 0x00000002L; - const SQL_SP_ISNULL = 0x00000004L; - const SQL_SP_LIKE = 0x00000200L; - const SQL_SP_MATCH_FULL = 0x00000008L; - const SQL_SP_MATCH_PARTIAL = 0x00000010L; - const SQL_SP_MATCH_UNIQUE_FULL = 0x00000020L; - const SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040L; - const SQL_SP_OVERLAPS = 0x00000080L; - const SQL_SP_QUANTIFIED_COMPARISON = 0x00002000L; - const SQL_SP_UNIQUE = 0x00000100L; - const SQL_SQL_CONFORMANCE = 118; - const SQL_SQL92_DATETIME_FUNCTIONS = 155; - const SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; - const SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; - const SQL_SQL92_GRANT = 158; - const SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; - const SQL_SQL92_PREDICATES = 160; - const SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; - const SQL_SQL92_REVOKE = 162; - const SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; - const SQL_SQL92_STRING_FUNCTIONS = 164; - const SQL_SQL92_VALUE_EXPRESSIONS = 165; - const SQL_SR_CASCADE = 0x00000020L; - const SQL_SR_DELETE_TABLE = 0x00000080L; - const SQL_SR_GRANT_OPTION_FOR = 0x00000010L; - const SQL_SR_INSERT_COLUMN = 0x00000200L; - const SQL_SR_INSERT_TABLE = 0x00000100L; - const SQL_SR_REFERENCES_COLUMN = 0x00000800L; - const SQL_SR_REFERENCES_TABLE = 0x00000400L; - const SQL_SR_RESTRICT = 0x00000040L; - const SQL_SR_SELECT_TABLE = 0x00001000L; - const SQL_SR_UPDATE_COLUMN = 0x00004000L; - const SQL_SR_UPDATE_TABLE = 0x00002000L; - const SQL_SR_USAGE_ON_CHARACTER_SET = 0x00000002L; - const SQL_SR_USAGE_ON_COLLATION = 0x00000004L; - const SQL_SR_USAGE_ON_DOMAIN = 0x00000001L; - const SQL_SR_USAGE_ON_TRANSLATION = 0x00000008L; - const SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001L; - const SQL_SRJO_CROSS_JOIN = 0x00000002L; - const SQL_SRJO_EXCEPT_JOIN = 0x00000004L; - const SQL_SRJO_FULL_OUTER_JOIN = 0x00000008L; - const SQL_SRJO_INNER_JOIN = 0x00000010L; - const SQL_SRJO_INTERSECT_JOIN = 0x00000020L; - const SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040L; - const SQL_SRJO_NATURAL_JOIN = 0x00000080L; - const SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100L; - const SQL_SRJO_UNION_JOIN = 0x00000200L; - const SQL_SRVC_DEFAULT = 0x00000004L; - const SQL_SRVC_NULL = 0x00000002L; - const SQL_SRVC_ROW_SUBQUERY = 0x00000008L; - const SQL_SRVC_VALUE_EXPRESSION = 0x00000001L; - const SQL_SSF_CONVERT = 0x00000001L; - const SQL_SSF_LOWER = 0x00000002L; - const SQL_SSF_SUBSTRING = 0x00000008L; - const SQL_SSF_TRANSLATE = 0x00000010L; - const SQL_SSF_TRIM_BOTH = 0x00000020L; - const SQL_SSF_TRIM_LEADING = 0x00000040L; - const SQL_SSF_TRIM_TRAILING = 0x00000080L; - const SQL_SSF_UPPER = 0x00000004L; - const SQL_STANDARD_CLI_CONFORMANCE = 166; - const SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; - const SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; - const SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; - const SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; - const SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; - const SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; - const SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; - const SQL_SVE_CASE = 0x00000001L; - const SQL_SVE_CAST = 0x00000002L; - const SQL_SVE_COALESCE = 0x00000004L; - const SQL_SVE_NULLIF = 0x00000008L; - const SQL_UB_FIXED = SQL_UB_ON; - const SQL_UB_VARIABLE = 2UL; - const SQL_UNION_STATEMENT = SQL_UNION; - const SQL_UPDATE_BY_BOOKMARK = 5; - const SQL_US_UNION = SQL_U_UNION; - const SQL_US_UNION_ALL = SQL_U_UNION_ALL; + const SQL_ACTIVE_ENVIRONMENTS = 116; + const SQL_AD_ADD_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_AD_ADD_DOMAIN_CONSTRAINT = 0x00000002L; + const SQL_AD_ADD_DOMAIN_DEFAULT = 0x00000008L; + const SQL_AD_CONSTRAINT_NAME_DEFINITION = 0x00000001L; + const SQL_AD_DROP_DOMAIN_CONSTRAINT = 0x00000004L; + const SQL_AD_DROP_DOMAIN_DEFAULT = 0x00000010L; + const SQL_AF_ALL = 0x00000040L; + const SQL_AF_AVG = 0x00000001L; + const SQL_AF_COUNT = 0x00000002L; + const SQL_AF_DISTINCT = 0x00000020L; + const SQL_AF_MAX = 0x00000004L; + const SQL_AF_MIN = 0x00000008L; + const SQL_AF_SUM = 0x00000010L; + const SQL_AGGREGATE_FUNCTIONS = 169; + const SQL_ALL_CATALOGS = "%"; + const SQL_ALL_SCHEMAS = "%"; + const SQL_ALL_TABLE_TYPES = "%"; + const SQL_ALTER_DOMAIN = 117; + const SQL_AM_CONNECTION = 1; + const SQL_AM_NONE = 0; + const SQL_AM_STATEMENT = 2; + const SQL_API_ODBC3_ALL_FUNCTIONS = 999; + const SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; + const SQL_API_SQLALLOCHANDLESTD = 73; + const SQL_API_SQLBULKOPERATIONS = 24; + const SQL_ASYNC_MODE = 10021; + const SQL_AT_ADD_COLUMN_COLLATION = 0x00000080L; + const SQL_AT_ADD_COLUMN_DEFAULT = 0x00000040L; + const SQL_AT_ADD_COLUMN_SINGLE = 0x00000020L; + const SQL_AT_ADD_TABLE_CONSTRAINT = 0x00001000L; + const SQL_AT_CONSTRAINT_DEFERRABLE = 0x00040000L; + const SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = 0x00010000L; + const SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00020000L; + const SQL_AT_CONSTRAINT_NAME_DEFINITION = 0x00008000L; + const SQL_AT_CONSTRAINT_NON_DEFERRABLE = 0x00080000L; + const SQL_AT_DROP_COLUMN_CASCADE = 0x00000400L; + const SQL_AT_DROP_COLUMN_DEFAULT = 0x00000200L; + const SQL_AT_DROP_COLUMN_RESTRICT = 0x00000800L; + const SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = 0x00002000L; + const SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = 0x00004000L; + const SQL_AT_SET_COLUMN_DEFAULT = 0x00000100L; + const SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; + const SQL_ATTR_ASYNC_ENABLE = 4; + const SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; + const SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; + const SQL_ATTR_CONNECTION_POOLING = 201; + const SQL_ATTR_CONNECTION_TIMEOUT = 113; + const SQL_ATTR_CP_MATCH = 202; + const SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; + const SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; + const SQL_ATTR_DISCONNECT_BEHAVIOR = 114; + const SQL_ATTR_ENABLE_AUTO_IPD = 15; + const SQL_ATTR_ENLIST_IN_DTC = 1207; + const SQL_ATTR_ENLIST_IN_XA = 1208; + const SQL_ATTR_FETCH_BOOKMARK_PTR = 16; + const SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; + const SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; + const SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; + const SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; + const SQL_ATTR_NOSCAN = SQL_NOSCAN; + const SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; + const SQL_ATTR_ODBC_VERSION = 200; + const SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; + const SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; + const SQL_ATTR_PARAM_BIND_TYPE = 18; + const SQL_ATTR_PARAM_OPERATION_PTR = 19; + const SQL_ATTR_PARAM_STATUS_PTR = 20; + const SQL_ATTR_PARAMS_PROCESSED_PTR = 21; + const SQL_ATTR_PARAMSET_SIZE = 22; + const SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; + const SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; + const SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; + const SQL_ATTR_ROW_ARRAY_SIZE = 27; + const SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; + const SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; + const SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; + const SQL_ATTR_ROW_OPERATION_PTR = 24; + const SQL_ATTR_ROW_STATUS_PTR = 25; + const SQL_ATTR_ROWS_FETCHED_PTR = 26; + const SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; + const SQL_ATTR_TRACE = SQL_OPT_TRACE; + const SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; + const SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; + const SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; + const SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; + const SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; + const SQL_BATCH_ROW_COUNT = 120; + const SQL_BATCH_SUPPORT = 121; + const SQL_BRC_EXPLICIT = 0x0000002; + const SQL_BRC_PROCEDURES = 0x0000001; + const SQL_BRC_ROLLED_UP = 0x0000004; + const SQL_BS_ROW_COUNT_EXPLICIT = 0x00000002L; + const SQL_BS_ROW_COUNT_PROC = 0x00000008L; + const SQL_BS_SELECT_EXPLICIT = 0x00000001L; + const SQL_BS_SELECT_PROC = 0x00000004L; + const SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; + const SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; + const SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; + const SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; + const SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; + const SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; + const SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; + const SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; + const SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; + const SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; + const SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; + const SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; + const SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; + const SQL_C_NUMERIC = SQL_NUMERIC; + const SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; + const SQL_C_TYPE_DATE = SQL_TYPE_DATE; + const SQL_C_TYPE_TIME = SQL_TYPE_TIME; + const SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; + const SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; + const SQL_C_VARBOOKMARK = SQL_C_BINARY; + const SQL_CA_CONSTRAINT_DEFERRABLE = 0x00000040L; + const SQL_CA_CONSTRAINT_INITIALLY_DEFERRED = 0x00000010L; + const SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000020L; + const SQL_CA_CONSTRAINT_NON_DEFERRABLE = 0x00000080L; + const SQL_CA_CREATE_ASSERTION = 0x00000001L; + const SQL_CA1_ABSOLUTE = 0x00000002L; + const SQL_CA1_BOOKMARK = 0x00000008L; + const SQL_CA1_BULK_ADD = 0x00010000L; + const SQL_CA1_BULK_DELETE_BY_BOOKMARK = 0x00040000L; + const SQL_CA1_BULK_FETCH_BY_BOOKMARK = 0x00080000L; + const SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 0x00020000L; + const SQL_CA1_LOCK_EXCLUSIVE = 0x00000080L; + const SQL_CA1_LOCK_NO_CHANGE = 0x00000040L; + const SQL_CA1_LOCK_UNLOCK = 0x00000100L; + const SQL_CA1_NEXT = 0x00000001L; + const SQL_CA1_POS_DELETE = 0x00000800L; + const SQL_CA1_POS_POSITION = 0x00000200L; + const SQL_CA1_POS_REFRESH = 0x00001000L; + const SQL_CA1_POS_UPDATE = 0x00000400L; + const SQL_CA1_POSITIONED_DELETE = 0x00004000L; + const SQL_CA1_POSITIONED_UPDATE = 0x00002000L; + const SQL_CA1_RELATIVE = 0x00000004L; + const SQL_CA1_SELECT_FOR_UPDATE = 0x00008000L; + const SQL_CA2_CRC_APPROXIMATE = 0x00002000L; + const SQL_CA2_CRC_EXACT = 0x00001000L; + const SQL_CA2_LOCK_CONCURRENCY = 0x00000002L; + + const SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L; + const SQL_CA2_MAX_ROWS_DELETE = 0x00000200L; + const SQL_CA2_MAX_ROWS_INSERT = 0x00000100L; + const SQL_CA2_MAX_ROWS_SELECT = 0x00000080L; + const SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L; + const SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | + SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG; + + const SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L; + const SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L; + const SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L; + const SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L; + const SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L; + const SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L; + const SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L; + const SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L; + const SQL_CA2_SIMULATE_UNIQUE = 0x00010000L; + const SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; + const SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; + const SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; + const SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; + const SQL_CCOL_CREATE_COLLATION = 0x00000001L; + const SQL_CCS_COLLATE_CLAUSE = 0x00000002L; + const SQL_CCS_CREATE_CHARACTER_SET = 0x00000001L; + const SQL_CCS_LIMITED_COLLATION = 0x00000004L; + const SQL_CDO_COLLATION = 0x00000008L; + const SQL_CDO_CONSTRAINT = 0x00000004L; + const SQL_CDO_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_CDO_CONSTRAINT_NAME_DEFINITION = 0x00000010L; + const SQL_CDO_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_CDO_CREATE_DOMAIN = 0x00000001L; + const SQL_CDO_DEFAULT = 0x00000002L; + const SQL_CL_END = SQL_QL_END; + const SQL_CL_START = SQL_QL_START; + const SQL_COL_PRED_BASIC = SQL_ALL_EXCEPT_LIKE; + const SQL_COL_PRED_CHAR = SQL_LIKE_ONLY; + const SQL_COLUMN_DRIVER_START = 1000; + const SQL_COLUMN_IGNORE = SQL_IGNORE; + const SQL_COLUMN_NUMBER_UNKNOWN = -2; + const SQL_CONVERT_GUID = 173; + + const SQL_CONVERT_WCHAR = 122; + const SQL_CONVERT_INTERVAL_DAY_TIME = 123; + const SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; + const SQL_CONVERT_WLONGVARCHAR = 125; + const SQL_CONVERT_WVARCHAR = 126; + + const SQL_CREATE_ASSERTION = 127; + const SQL_CREATE_CHARACTER_SET = 128; + const SQL_CREATE_COLLATION = 129; + const SQL_CREATE_DOMAIN = 130; + const SQL_CREATE_SCHEMA = 131; + const SQL_CREATE_TABLE = 132; + const SQL_CREATE_TRANSLATION = 133; + const SQL_CREATE_VIEW = 134; + + + const SQL_CP_OFF = 0UL; + const SQL_CP_DEFAULT = SQL_CP_OFF; + const SQL_CP_ONE_PER_DRIVER = 1UL; + const SQL_CP_ONE_PER_HENV = 2UL; + + const SQL_CP_STRICT_MATCH = 0UL; + const SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; + const SQL_CP_RELAXED_MATCH = 1UL; + + const SQL_CS_CREATE_SCHEMA = 0x00000001L; + const SQL_CS_AUTHORIZATION = 0x00000002L; + const SQL_CS_DEFAULT_CHARACTER_SET = 0x00000004L; + + const SQL_CT_COLUMN_COLLATION = 0x00000800L; + const SQL_CT_COLUMN_CONSTRAINT = 0x00000200L; + const SQL_CT_COLUMN_DEFAULT = 0x00000400L; + const SQL_CT_COMMIT_DELETE = 0x00000004L; + const SQL_CT_COMMIT_PRESERVE = 0x00000002L; + const SQL_CT_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_CT_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_CT_CONSTRAINT_NAME_DEFINITION = 0x00002000L; + const SQL_CT_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_CT_CREATE_TABLE = 0x00000001L; + const SQL_CT_GLOBAL_TEMPORARY = 0x00000008L; + const SQL_CT_LOCAL_TEMPORARY = 0x00000010L; + const SQL_CT_TABLE_CONSTRAINT = 0x00001000L; + + const SQL_CTR_CREATE_TRANSLATION = 0x00000001L; + + const SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; + const SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; + const SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; + const SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; + const SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; + + const SQL_CVT_INTERVAL_YEAR_MONTH = 0x00080000L; + const SQL_CVT_INTERVAL_DAY_TIME = 0x00100000L; + const SQL_CVT_WCHAR = 0x00200000L; + const SQL_CVT_WLONGVARCHAR = 0x00400000L; + const SQL_CVT_WVARCHAR = 0x00800000L; + const SQL_CVT_GUID = 0x01000000L; + + const SQL_DA_DROP_ASSERTION = 0x00000001L; + const SQL_DATETIME_LITERALS = 119; + + const SQL_DB_DISCONNECT = 1UL; + const SQL_DB_RETURN_TO_POOL = 0UL; + const SQL_DB_DEFAULT = SQL_DB_RETURN_TO_POOL; + + const SQL_DC_DROP_COLLATION = 0x00000001L; + const SQL_DCS_DROP_CHARACTER_SET = 0x00000001L; + const SQL_DD_CASCADE = 0x00000004L; + const SQL_DD_DROP_DOMAIN = 0x00000001L; + const SQL_DD_RESTRICT = 0x00000002L; + const SQL_DDL_INDEX = 170; + const SQL_DELETE_BY_BOOKMARK = 6; + const SQL_DESC_ARRAY_SIZE = 20; + const SQL_DESC_ARRAY_STATUS_PTR = 21; + const SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; + const SQL_DESC_BASE_COLUMN_NAME = 22; + const SQL_DESC_BASE_TABLE_NAME = 23; + const SQL_DESC_BIND_OFFSET_PTR = 24; + const SQL_DESC_BIND_TYPE = 25; + const SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; + const SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; + const SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; + const SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; + const SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; + const SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; + const SQL_DESC_LABEL = SQL_COLUMN_LABEL; + const SQL_DESC_LITERAL_PREFIX = 27; + const SQL_DESC_LITERAL_SUFFIX = 28; + const SQL_DESC_LOCAL_TYPE_NAME = 29; + const SQL_DESC_MAXIMUM_SCALE = 30; + const SQL_DESC_MINIMUM_SCALE = 31; + const SQL_DESC_NUM_PREC_RADIX = 32; + const SQL_DESC_PARAMETER_TYPE = 33; + const SQL_DESC_ROWS_PROCESSED_PTR = 34; + const SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; + const SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; + const SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; + const SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; + const SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; + const SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; + const SQL_DI_CREATE_INDEX = 0x00000001L; + const SQL_DI_DROP_INDEX = 0x00000002L; + + const SQL_DIAG_COLUMN_NUMBER = -1247; + const SQL_DIAG_ROW_NUMBER = -1248; + const SQL_DIAG_CURSOR_ROW_COUNT = -1249; + + const SQL_DL_SQL92_DATE = 0x00000001L; + const SQL_DL_SQL92_INTERVAL_DAY = 0x00000020L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000L; + const SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040L; + const SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000L; + const SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000L; + const SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080L; + const SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000L; + const SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010L; + const SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100L; + const SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008L; + const SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200L; + const SQL_DL_SQL92_TIME = 0x00000002L; + const SQL_DL_SQL92_TIMESTAMP = 0x00000004L; + const SQL_DM_VER = 171; + const SQL_DRIVER_HDESC = 135; + const SQL_DROP_ASSERTION = 136; + const SQL_DROP_CHARACTER_SET = 137; + const SQL_DROP_COLLATION = 138; + const SQL_DROP_DOMAIN = 139; + const SQL_DROP_SCHEMA = 140; + const SQL_DROP_TABLE = 141; + const SQL_DROP_TRANSLATION = 142; + const SQL_DROP_VIEW = 143; + const SQL_DS_CASCADE = 0x00000004L; + const SQL_DS_DROP_SCHEMA = 0x00000001L; + const SQL_DS_RESTRICT = 0x00000002L; + const SQL_DT_CASCADE = 0x00000004L; + const SQL_DT_DROP_TABLE = 0x00000001L; + const SQL_DT_RESTRICT = 0x00000002L; + const SQL_DTC_DONE = 0L; + const SQL_DTR_DROP_TRANSLATION = 0x00000001L; + const SQL_DV_CASCADE = 0x00000004L; + const SQL_DV_DROP_VIEW = 0x00000001L; + const SQL_DV_RESTRICT = 0x00000002L; + const SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; + const SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; + const SQL_EXT_API_LAST = SQL_API_SQLBINDPARAMETER; + const SQL_EXT_API_START = 40; + const SQL_FETCH_BY_BOOKMARK = 7; + const SQL_FETCH_FIRST_SYSTEM = 32; + const SQL_FETCH_FIRST_USER = 31; + const SQL_FN_CVT_CAST = 0x00000002L; + const SQL_FN_STR_BIT_LENGTH = 0x00080000L; + const SQL_FN_STR_CHAR_LENGTH = 0x00100000L; + const SQL_FN_STR_CHARACTER_LENGTH = 0x00200000L; + const SQL_FN_STR_OCTET_LENGTH = 0x00400000L; + const SQL_FN_STR_POSITION = 0x00800000L; + const SQL_FN_TD_CURRENT_DATE = 0x00020000L; + const SQL_FN_TD_CURRENT_TIME = 0x00040000L; + const SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000L; + const SQL_FN_TD_EXTRACT = 0x00100000L; + const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; + const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; + /* #define SQL_FUNC_EXISTS(exists, api) + ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? + SQL_TRUE : SQL_FALSE ) + */ + const SQL_GB_COLLATE = 0x0004; + const SQL_HANDLE_SENV = 5; + + const SQL_IK_NONE = 0; + const SQL_IK_ASC = 1; + const SQL_IK_DESC = 2; + const SQL_IK_ALL = SQL_IK_ASC | SQL_IK_DESC; + + const SQL_INDEX_KEYWORDS = 148; + const SQL_INFO_DRIVER_START = 1000; + const SQL_INFO_LAST = SQL_QUALIFIER_LOCATION; + const SQL_INFO_SCHEMA_VIEWS = 149; + const SQL_INITIALLY_DEFERRED = 5; + const SQL_INITIALLY_IMMEDIATE = 6; + const SQL_INSERT_STATEMENT = 172; + const SQL_INTERVAL = 10; + const SQL_IS_INSERT_LITERALS = 0x00000001L; + const SQL_IS_INSERT_SEARCHED = 0x00000002L; + const SQL_IS_INTEGER = -6; + const SQL_IS_POINTER = -4; + const SQL_IS_SELECT_INTO = 0x00000004L; + const SQL_IS_SMALLINT = -8; + const SQL_IS_UINTEGER = -5; + const SQL_IS_USMALLINT = -7; + const SQL_ISV_ASSERTIONS = 0x00000001L; + const SQL_ISV_CHARACTER_SETS = 0x00000002L; + const SQL_ISV_CHECK_CONSTRAINTS = 0x00000004L; + const SQL_ISV_COLLATIONS = 0x00000008L; + const SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010L; + const SQL_ISV_COLUMN_PRIVILEGES = 0x00000020L; + const SQL_ISV_COLUMNS = 0x00000040L; + const SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080L; + const SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100L; + const SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200L; + const SQL_ISV_DOMAINS = 0x00000400L; + const SQL_ISV_KEY_COLUMN_USAGE = 0x00000800L; + const SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000L; + const SQL_ISV_SCHEMATA = 0x00002000L; + const SQL_ISV_SQL_LANGUAGES = 0x00004000L; + const SQL_ISV_TABLE_CONSTRAINTS = 0x00008000L; + const SQL_ISV_TABLE_PRIVILEGES = 0x00010000L; + const SQL_ISV_TABLES = 0x00020000L; + const SQL_ISV_TRANSLATIONS = 0x00040000L; + const SQL_ISV_USAGE_PRIVILEGES = 0x00080000L; + const SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000L; + const SQL_ISV_VIEW_TABLE_USAGE = 0x00200000L; + const SQL_ISV_VIEWS = 0x00400000L; + const SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; + const SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; + const SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; + const SQL_NO_COLUMN_NUMBER = -1; + const SQL_NO_ROW_NUMBER = -1; + const SQL_NOT_DEFERRABLE = 7; + const SQL_NUM_EXTENSIONS = SQL_EXT_API_LAST-SQL_EXT_API_START+1; + const SQL_NUM_FUNCTIONS = 23; + const SQL_ODBC_INTERFACE_CONFORMANCE = 152; + + enum : ULONG { + SQL_OIC_CORE = 1, + SQL_OIC_LEVEL1, + SQL_OIC_LEVEL2 + } + enum : ULONG { + SQL_OV_ODBC2 = 2, + SQL_OV_ODBC3 = 3 + } + + const ULONG + SQL_PARAM_BIND_BY_COLUMN = 0, + SQL_PARAM_BIND_TYPE_DEFAULT = SQL_PARAM_BIND_BY_COLUMN; + + const SQL_PARAM_ARRAY_ROW_COUNTS = 153; + const SQL_PARAM_ARRAY_SELECTS = 154; + const SQL_PARAM_DIAG_UNAVAILABLE = 1; + const SQL_PARAM_ERROR = 5; + const SQL_PARAM_IGNORE = 1; + const SQL_PARAM_PROCEED = 0; + const SQL_PARAM_SUCCESS = 0; + const SQL_PARAM_SUCCESS_WITH_INFO = 6; + const SQL_PARAM_UNUSED = 7; + + const SQL_PARC_BATCH = 1; + const SQL_PARC_NO_BATCH = 2; + const SQL_PAS_BATCH = 1; + const SQL_PAS_NO_BATCH = 2; + const SQL_PAS_NO_SELECT = 3; + + const SQL_ROW_IGNORE = 1; + const SQL_ROW_NUMBER_UNKNOWN = -2; + const SQL_ROW_PROCEED = 0; + const SQL_ROW_SUCCESS_WITH_INFO = 6; + + const SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002L; + const SQL_SC_SQL92_ENTRY = 0x00000001L; + const SQL_SC_SQL92_FULL = 0x00000008L; + const SQL_SC_SQL92_INTERMEDIATE = 0x00000004L; + + const SQL_SCC_ISO92_CLI = 0x00000002L; + const SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001L; + + const SQL_SCHEMA_TERM = SQL_OWNER_TERM; + const SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; + const SQL_SDF_CURRENT_DATE = 0x00000001L; + const SQL_SDF_CURRENT_TIME = 0x00000002L; + const SQL_SDF_CURRENT_TIMESTAMP = 0x00000004L; + const SQL_SFKD_CASCADE = 0x00000001L; + const SQL_SFKD_NO_ACTION = 0x00000002L; + const SQL_SFKD_SET_DEFAULT = 0x00000004L; + const SQL_SFKD_SET_NULL = 0x00000008L; + const SQL_SFKU_CASCADE = 0x00000001L; + const SQL_SFKU_NO_ACTION = 0x00000002L; + const SQL_SFKU_SET_DEFAULT = 0x00000004L; + const SQL_SFKU_SET_NULL = 0x00000008L; + const SQL_SG_DELETE_TABLE = 0x00000020L; + const SQL_SG_INSERT_COLUMN = 0x00000080L; + const SQL_SG_INSERT_TABLE = 0x00000040L; + const SQL_SG_REFERENCES_COLUMN = 0x00000200L; + const SQL_SG_REFERENCES_TABLE = 0x00000100L; + const SQL_SG_SELECT_TABLE = 0x00000400L; + const SQL_SG_UPDATE_COLUMN = 0x00001000L; + const SQL_SG_UPDATE_TABLE = 0x00000800L; + const SQL_SG_USAGE_ON_CHARACTER_SET = 0x00000002L; + const SQL_SG_USAGE_ON_COLLATION = 0x00000004L; + const SQL_SG_USAGE_ON_DOMAIN = 0x00000001L; + const SQL_SG_USAGE_ON_TRANSLATION = 0x00000008L; + const SQL_SG_WITH_GRANT_OPTION = 0x00000010L; + const SQL_SNVF_BIT_LENGTH = 0x00000001L; + const SQL_SNVF_CHAR_LENGTH = 0x00000002L; + const SQL_SNVF_CHARACTER_LENGTH = 0x00000004L; + const SQL_SNVF_EXTRACT = 0x00000008L; + const SQL_SNVF_OCTET_LENGTH = 0x00000010L; + const SQL_SNVF_POSITION = 0x00000020L; + const SQL_SP_BETWEEN = 0x00000800L; + const SQL_SP_COMPARISON = 0x00001000L; + const SQL_SP_EXISTS = 0x00000001L; + const SQL_SP_IN = 0x00000400L; + const SQL_SP_ISNOTNULL = 0x00000002L; + const SQL_SP_ISNULL = 0x00000004L; + const SQL_SP_LIKE = 0x00000200L; + const SQL_SP_MATCH_FULL = 0x00000008L; + const SQL_SP_MATCH_PARTIAL = 0x00000010L; + const SQL_SP_MATCH_UNIQUE_FULL = 0x00000020L; + const SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040L; + const SQL_SP_OVERLAPS = 0x00000080L; + const SQL_SP_QUANTIFIED_COMPARISON = 0x00002000L; + const SQL_SP_UNIQUE = 0x00000100L; + const SQL_SQL_CONFORMANCE = 118; + const SQL_SQL92_DATETIME_FUNCTIONS = 155; + const SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; + const SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; + const SQL_SQL92_GRANT = 158; + const SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; + const SQL_SQL92_PREDICATES = 160; + const SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; + const SQL_SQL92_REVOKE = 162; + const SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; + const SQL_SQL92_STRING_FUNCTIONS = 164; + const SQL_SQL92_VALUE_EXPRESSIONS = 165; + const SQL_SR_CASCADE = 0x00000020L; + const SQL_SR_DELETE_TABLE = 0x00000080L; + const SQL_SR_GRANT_OPTION_FOR = 0x00000010L; + const SQL_SR_INSERT_COLUMN = 0x00000200L; + const SQL_SR_INSERT_TABLE = 0x00000100L; + const SQL_SR_REFERENCES_COLUMN = 0x00000800L; + const SQL_SR_REFERENCES_TABLE = 0x00000400L; + const SQL_SR_RESTRICT = 0x00000040L; + const SQL_SR_SELECT_TABLE = 0x00001000L; + const SQL_SR_UPDATE_COLUMN = 0x00004000L; + const SQL_SR_UPDATE_TABLE = 0x00002000L; + const SQL_SR_USAGE_ON_CHARACTER_SET = 0x00000002L; + const SQL_SR_USAGE_ON_COLLATION = 0x00000004L; + const SQL_SR_USAGE_ON_DOMAIN = 0x00000001L; + const SQL_SR_USAGE_ON_TRANSLATION = 0x00000008L; + const SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001L; + const SQL_SRJO_CROSS_JOIN = 0x00000002L; + const SQL_SRJO_EXCEPT_JOIN = 0x00000004L; + const SQL_SRJO_FULL_OUTER_JOIN = 0x00000008L; + const SQL_SRJO_INNER_JOIN = 0x00000010L; + const SQL_SRJO_INTERSECT_JOIN = 0x00000020L; + const SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040L; + const SQL_SRJO_NATURAL_JOIN = 0x00000080L; + const SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100L; + const SQL_SRJO_UNION_JOIN = 0x00000200L; + const SQL_SRVC_DEFAULT = 0x00000004L; + const SQL_SRVC_NULL = 0x00000002L; + const SQL_SRVC_ROW_SUBQUERY = 0x00000008L; + const SQL_SRVC_VALUE_EXPRESSION = 0x00000001L; + const SQL_SSF_CONVERT = 0x00000001L; + const SQL_SSF_LOWER = 0x00000002L; + const SQL_SSF_SUBSTRING = 0x00000008L; + const SQL_SSF_TRANSLATE = 0x00000010L; + const SQL_SSF_TRIM_BOTH = 0x00000020L; + const SQL_SSF_TRIM_LEADING = 0x00000040L; + const SQL_SSF_TRIM_TRAILING = 0x00000080L; + const SQL_SSF_UPPER = 0x00000004L; + const SQL_STANDARD_CLI_CONFORMANCE = 166; + const SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; + const SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; + const SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; + const SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; + const SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; + const SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; + const SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; + const SQL_SVE_CASE = 0x00000001L; + const SQL_SVE_CAST = 0x00000002L; + const SQL_SVE_COALESCE = 0x00000004L; + const SQL_SVE_NULLIF = 0x00000008L; + const SQL_UB_FIXED = SQL_UB_ON; + const SQL_UB_VARIABLE = 2UL; + const SQL_UNION_STATEMENT = SQL_UNION; + const SQL_UPDATE_BY_BOOKMARK = 5; + const SQL_US_UNION = SQL_U_UNION; + const SQL_US_UNION_ALL = SQL_U_UNION_ALL; }//[Yes] #endif /* ODBCVER >= 0x300 */ static if (ODBCVER >= 0x0350) { - const SQL_DESC_ROWVER = 35; - const SQL_GUID = -11; - const SQL_C_GUID = SQL_GUID; - //#ifdef ODBC_STD - //#define SQLAllocHandle SQLAllocHandleStd - //#define SQLAllocEnv(p) SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, p) - //#define SQL_YEAR SQL_CODE_YEAR - //#define SQL_MONTH SQL_CODE_MONTH - //#define SQL_DAY SQL_CODE_DAY - //#define SQL_HOUR SQL_CODE_HOUR - //#define SQL_MINUTE SQL_CODE_MINUTE - //#define SQL_SECOND SQL_CODE_SECOND - //#define SQL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH - //#define SQL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR - //#define SQL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE - //#define SQL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND - //#define SQL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE - //#define SQL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND - //#define SQL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND - //#endif /* ODBC_STD */ + const SQL_DESC_ROWVER = 35; + const SQL_GUID = -11; + const SQL_C_GUID = SQL_GUID; + //#ifdef ODBC_STD + //#define SQLAllocHandle SQLAllocHandleStd + //#define SQLAllocEnv(p) SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, p) + //#define SQL_YEAR SQL_CODE_YEAR + //#define SQL_MONTH SQL_CODE_MONTH + //#define SQL_DAY SQL_CODE_DAY + //#define SQL_HOUR SQL_CODE_HOUR + //#define SQL_MINUTE SQL_CODE_MINUTE + //#define SQL_SECOND SQL_CODE_SECOND + //#define SQL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH + //#define SQL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR + //#define SQL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE + //#define SQL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND + //#define SQL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE + //#define SQL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND + //#define SQL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND + //#endif /* ODBC_STD */ }//#endif /* ODBCVER >= 0x0350 */ //static if (ODBCVER >= 0x0351) { @@ -1230,65 +1230,65 @@ const TRACE_VERSION=1000; const TRACE_ON=1; const char [] SQL_ODBC_KEYWORDS = - "ABSOLUTE, ACTION, ADA, ADD, ALL, ALLOCATE, ALTER, AND, ANY, ARE, AS, " - ~ "ASC, ASSERTION, AT, AUTHORIZATION, AVG, " - ~ "BEGIN, BETWEEN, BIT, BIT_LENGTH, BOTH, BY, CASCADE, CASCADED, CASE, CAST, CATALOG, " - ~ "CHAR, CHAR_LENGTH, CHARACTER, CHARACTER_LENGTH, CHECK, CLOSE, COALESCE, " - ~ "COLLATE, COLLATION, COLUMN, COMMIT, CONNECT, CONNECTION, CONSTRAINT, " - ~ "CONSTRAINTS, CONTINUE, CONVERT, CORRESPONDING, COUNT, CREATE, CROSS, CURRENT, " - ~ "CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, " - ~ "DATE, DAY, DEALLOCATE, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, " - ~ "DEFERRED, DELETE, DESC, DESCRIBE, DESCRIPTOR, DIAGNOSTICS, DISCONNECT, " - ~ "DISTINCT, DOMAIN, DOUBLE, DROP, " - ~ "ELSE, END, END-EXEC, ESCAPE, EXCEPT, EXCEPTION, EXEC, EXECUTE, " - ~ "EXISTS, EXTERNAL, EXTRACT, " - ~ "FALSE, FETCH, FIRST, FLOAT, FOR, FOREIGN, FORTRAN, FOUND, FROM, FULL, " - ~ "GET, GLOBAL, GO, GOTO, GRANT, GROUP, HAVING, HOUR, " - ~ "IDENTITY, IMMEDIATE, IN, INCLUDE, INDEX, INDICATOR, INITIALLY, INNER, " - ~ "INPUT, INSENSITIVE, INSERT, INT, INTEGER, INTERSECT, INTERVAL, INTO, IS, ISOLATION, " - ~ "JOIN, KEY, LANGUAGE, LAST, LEADING, LEFT, LEVEL, LIKE, LOCAL, LOWER, " - ~ "MATCH, MAX, MIN, MINUTE, MODULE, MONTH, " - ~ "NAMES, NATIONAL, NATURAL, NCHAR, NEXT, NO, NONE, NOT, NULL, NULLIF, NUMERIC, " - ~ "OCTET_LENGTH, OF, ON, ONLY, OPEN, OPTION, OR, ORDER, OUTER, OUTPUT, OVERLAPS, " - ~ "PAD, PARTIAL, PASCAL, PLI, POSITION, PRECISION, PREPARE, PRESERVE, " - ~ "PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC, " - ~ "READ, REAL, REFERENCES, RELATIVE, RESTRICT, REVOKE, RIGHT, ROLLBACK, ROWS" - ~ "SCHEMA, SCROLL, SECOND, SECTION, SELECT, SESSION, SESSION_USER, SET, SIZE, " - ~ "SMALLINT, SOME, SPACE, SQL, SQLCA, SQLCODE, SQLERROR, SQLSTATE, SQLWARNING, " - ~ "SUBSTRING, SUM, SYSTEM_USER, " - ~ "TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, " - ~ "TO, TRAILING, TRANSACTION, TRANSLATE, TRANSLATION, TRIM, TRUE, " - ~ "UNION, UNIQUE, UNKNOWN, UPDATE, UPPER, USAGE, USER, USING, " - ~ "VALUE, VALUES, VARCHAR, VARYING, VIEW, WHEN, WHENEVER, WHERE, WITH, WORK, WRITE, " - ~ "YEAR, ZONE"; + "ABSOLUTE, ACTION, ADA, ADD, ALL, ALLOCATE, ALTER, AND, ANY, ARE, AS, " + ~ "ASC, ASSERTION, AT, AUTHORIZATION, AVG, " + ~ "BEGIN, BETWEEN, BIT, BIT_LENGTH, BOTH, BY, CASCADE, CASCADED, CASE, CAST, CATALOG, " + ~ "CHAR, CHAR_LENGTH, CHARACTER, CHARACTER_LENGTH, CHECK, CLOSE, COALESCE, " + ~ "COLLATE, COLLATION, COLUMN, COMMIT, CONNECT, CONNECTION, CONSTRAINT, " + ~ "CONSTRAINTS, CONTINUE, CONVERT, CORRESPONDING, COUNT, CREATE, CROSS, CURRENT, " + ~ "CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, " + ~ "DATE, DAY, DEALLOCATE, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, " + ~ "DEFERRED, DELETE, DESC, DESCRIBE, DESCRIPTOR, DIAGNOSTICS, DISCONNECT, " + ~ "DISTINCT, DOMAIN, DOUBLE, DROP, " + ~ "ELSE, END, END-EXEC, ESCAPE, EXCEPT, EXCEPTION, EXEC, EXECUTE, " + ~ "EXISTS, EXTERNAL, EXTRACT, " + ~ "FALSE, FETCH, FIRST, FLOAT, FOR, FOREIGN, FORTRAN, FOUND, FROM, FULL, " + ~ "GET, GLOBAL, GO, GOTO, GRANT, GROUP, HAVING, HOUR, " + ~ "IDENTITY, IMMEDIATE, IN, INCLUDE, INDEX, INDICATOR, INITIALLY, INNER, " + ~ "INPUT, INSENSITIVE, INSERT, INT, INTEGER, INTERSECT, INTERVAL, INTO, IS, ISOLATION, " + ~ "JOIN, KEY, LANGUAGE, LAST, LEADING, LEFT, LEVEL, LIKE, LOCAL, LOWER, " + ~ "MATCH, MAX, MIN, MINUTE, MODULE, MONTH, " + ~ "NAMES, NATIONAL, NATURAL, NCHAR, NEXT, NO, NONE, NOT, NULL, NULLIF, NUMERIC, " + ~ "OCTET_LENGTH, OF, ON, ONLY, OPEN, OPTION, OR, ORDER, OUTER, OUTPUT, OVERLAPS, " + ~ "PAD, PARTIAL, PASCAL, PLI, POSITION, PRECISION, PREPARE, PRESERVE, " + ~ "PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC, " + ~ "READ, REAL, REFERENCES, RELATIVE, RESTRICT, REVOKE, RIGHT, ROLLBACK, ROWS" + ~ "SCHEMA, SCROLL, SECOND, SECTION, SELECT, SESSION, SESSION_USER, SET, SIZE, " + ~ "SMALLINT, SOME, SPACE, SQL, SQLCA, SQLCODE, SQLERROR, SQLSTATE, SQLWARNING, " + ~ "SUBSTRING, SUM, SYSTEM_USER, " + ~ "TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, " + ~ "TO, TRAILING, TRANSACTION, TRANSLATE, TRANSLATION, TRIM, TRUE, " + ~ "UNION, UNIQUE, UNKNOWN, UPDATE, UPPER, USAGE, USER, USING, " + ~ "VALUE, VALUES, VARCHAR, VARYING, VIEW, WHEN, WHENEVER, WHERE, WITH, WORK, WRITE, " + ~ "YEAR, ZONE"; extern (Windows) { - SQLRETURN SQLDriverConnect(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); - SQLRETURN SQLBrowseConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLColumnPrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLColAttributes(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); - SQLRETURN SQLDescribeParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLExtendedFetch(SQLHSTMT, SQLUSMALLINT, SQLINTEGER, SQLUINTEGER*, SQLUSMALLINT*); - SQLRETURN SQLForeignKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLMoreResults(SQLHSTMT); - SQLRETURN SQLNativeSql(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLNumParams(SQLHSTMT, SQLSMALLINT*); - SQLRETURN SQLParamOptions(SQLHSTMT, SQLUINTEGER, SQLUINTEGER*); - SQLRETURN SQLPrimaryKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedureColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedures(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLSetPos(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLTablePrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLDrivers(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLBindParameter(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); - SQLRETURN SQLSetScrollOptions(SQLHSTMT, SQLUSMALLINT, SQLLEN, SQLUSMALLINT);/* deprecated */ - DWORD ODBCGetTryWaitValue(); - BOOL ODBCSetTryWaitValue(DWORD); - RETCODE TraceOpenLogFile(LPWSTR, LPWSTR, DWORD); - RETCODE TraceCloseLogFile(); - VOID TraceReturn(RETCODE, RETCODE); - DWORD TraceVersion(); - //static if (ODBCVER >= 0x0300) { - SQLRETURN SQLBulkOperations(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLAllocHandleStd( SQLSMALLINT, SQLHANDLE, SQLHANDLE*); - //} + SQLRETURN SQLDriverConnect(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLBrowseConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLColumnPrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLColAttributes(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLDescribeParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLExtendedFetch(SQLHSTMT, SQLUSMALLINT, SQLINTEGER, SQLUINTEGER*, SQLUSMALLINT*); + SQLRETURN SQLForeignKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLMoreResults(SQLHSTMT); + SQLRETURN SQLNativeSql(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLNumParams(SQLHSTMT, SQLSMALLINT*); + SQLRETURN SQLParamOptions(SQLHSTMT, SQLUINTEGER, SQLUINTEGER*); + SQLRETURN SQLPrimaryKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedures(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLSetPos(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTablePrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDrivers(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLBindParameter(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLSetScrollOptions(SQLHSTMT, SQLUSMALLINT, SQLLEN, SQLUSMALLINT);/* deprecated */ + DWORD ODBCGetTryWaitValue(); + BOOL ODBCSetTryWaitValue(DWORD); + RETCODE TraceOpenLogFile(LPWSTR, LPWSTR, DWORD); + RETCODE TraceCloseLogFile(); + VOID TraceReturn(RETCODE, RETCODE); + DWORD TraceVersion(); + //static if (ODBCVER >= 0x0300) { + SQLRETURN SQLBulkOperations(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLAllocHandleStd( SQLSMALLINT, SQLHANDLE, SQLHANDLE*); + //} } diff --git a/src/core/sys/windows/sqltypes.d b/src/core/sys/windows/sqltypes.d index fbad39597f..95aeb088c7 100644 --- a/src/core/sys/windows/sqltypes.d +++ b/src/core/sys/windows/sqltypes.d @@ -49,9 +49,9 @@ alias SQLUSMALLINT SQLSETPOSIROW; alias wchar SQLWCHAR; version(Unicode) { - alias SQLWCHAR SQLTCHAR; + alias SQLWCHAR SQLTCHAR; } else { - alias SQLCHAR SQLTCHAR; + alias SQLCHAR SQLTCHAR; } //static if (ODBCVER >= 0x0300) { alias ubyte SQLDATE, SQLDECIMAL; @@ -64,25 +64,25 @@ alias ulong SQLUBIGINT; //} struct DATE_STRUCT { - SQLSMALLINT year; - SQLUSMALLINT month; - SQLUSMALLINT day; + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; } struct TIME_STRUCT { - SQLUSMALLINT hour; - SQLUSMALLINT minute; - SQLUSMALLINT second; + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; } struct TIMESTAMP_STRUCT { - SQLSMALLINT year; - SQLUSMALLINT month; - SQLUSMALLINT day; - SQLUSMALLINT hour; - SQLUSMALLINT minute; - SQLUSMALLINT second; - SQLUINTEGER fraction; + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; + SQLUINTEGER fraction; } //static if (ODBCVER >= 0x0300) { @@ -91,51 +91,51 @@ alias TIME_STRUCT SQL_TIME_STRUCT; alias TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT; enum SQLINTERVAL { - SQL_IS_YEAR = 1, - SQL_IS_MONTH, - SQL_IS_DAY, - SQL_IS_HOUR, - SQL_IS_MINUTE, - SQL_IS_SECOND, - SQL_IS_YEAR_TO_MONTH, - SQL_IS_DAY_TO_HOUR, - SQL_IS_DAY_TO_MINUTE, - SQL_IS_DAY_TO_SECOND, - SQL_IS_HOUR_TO_MINUTE, - SQL_IS_HOUR_TO_SECOND, - SQL_IS_MINUTE_TO_SECOND + SQL_IS_YEAR = 1, + SQL_IS_MONTH, + SQL_IS_DAY, + SQL_IS_HOUR, + SQL_IS_MINUTE, + SQL_IS_SECOND, + SQL_IS_YEAR_TO_MONTH, + SQL_IS_DAY_TO_HOUR, + SQL_IS_DAY_TO_MINUTE, + SQL_IS_DAY_TO_SECOND, + SQL_IS_HOUR_TO_MINUTE, + SQL_IS_HOUR_TO_SECOND, + SQL_IS_MINUTE_TO_SECOND } struct SQL_YEAR_MONTH_STRUCT { - SQLUINTEGER year; - SQLUINTEGER month; + SQLUINTEGER year; + SQLUINTEGER month; } struct SQL_DAY_SECOND_STRUCT { - SQLUINTEGER day; - SQLUINTEGER hour; - SQLUINTEGER minute; - SQLUINTEGER second; - SQLUINTEGER fraction; + SQLUINTEGER day; + SQLUINTEGER hour; + SQLUINTEGER minute; + SQLUINTEGER second; + SQLUINTEGER fraction; } struct SQL_INTERVAL_STRUCT { - SQLINTERVAL interval_type; - SQLSMALLINT interval_sign; - union _intval { - SQL_YEAR_MONTH_STRUCT year_month; - SQL_DAY_SECOND_STRUCT day_second; - } - _intval intval; + SQLINTERVAL interval_type; + SQLSMALLINT interval_sign; + union _intval { + SQL_YEAR_MONTH_STRUCT year_month; + SQL_DAY_SECOND_STRUCT day_second; + } + _intval intval; } const SQL_MAX_NUMERIC_LEN = 16; struct SQL_NUMERIC_STRUCT { - SQLCHAR precision; - SQLSCHAR scale; - SQLCHAR sign; - SQLCHAR[SQL_MAX_NUMERIC_LEN] val; + SQLCHAR precision; + SQLSCHAR scale; + SQLCHAR sign; + SQLCHAR[SQL_MAX_NUMERIC_LEN] val; } // } ODBCVER >= 0x0300 alias GUID SQLGUID; diff --git a/src/core/sys/windows/sqlucode.d b/src/core/sys/windows/sqlucode.d index a5a43345c8..84efb9003f 100644 --- a/src/core/sys/windows/sqlucode.d +++ b/src/core/sys/windows/sqlucode.d @@ -17,139 +17,139 @@ const SQL_C_WCHAR = SQL_WCHAR; const SQL_SQLSTATE_SIZEW = 10; version(Unicode) { - const SQL_C_TCHAR = SQL_C_WCHAR; + const SQL_C_TCHAR = SQL_C_WCHAR; } else { - const SQL_C_TCHAR = SQL_C_CHAR; + const SQL_C_TCHAR = SQL_C_CHAR; } // Moved from sqlext static if (ODBCVER <= 0x0300) { - const SQL_UNICODE = -95; - const SQL_UNICODE_VARCHAR = -96; - const SQL_UNICODE_LONGVARCHAR = -97; - const SQL_UNICODE_CHAR = SQL_UNICODE; + const SQL_UNICODE = -95; + const SQL_UNICODE_VARCHAR = -96; + const SQL_UNICODE_LONGVARCHAR = -97; + const SQL_UNICODE_CHAR = SQL_UNICODE; } else { - const SQL_UNICODE = SQL_WCHAR; - const SQL_UNICODE_VARCHAR = SQL_WVARCHAR; - const SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR; - const SQL_UNICODE_CHAR = SQL_WCHAR; + const SQL_UNICODE = SQL_WCHAR; + const SQL_UNICODE_VARCHAR = SQL_WVARCHAR; + const SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR; + const SQL_UNICODE_CHAR = SQL_WCHAR; } extern (Windows) { - SQLRETURN SQLBrowseConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLBrowseConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLColAttributeA(SQLHSTMT, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); - SQLRETURN SQLColAttributeW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); - SQLRETURN SQLColAttributesA(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); - SQLRETURN SQLColAttributesW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); - SQLRETURN SQLColumnPrivilegesA( SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); - SQLRETURN SQLColumnPrivilegesW( SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); - SQLRETURN SQLColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); - SQLRETURN SQLColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLWCHAR*, SQLSMALLINT ); - SQLRETURN SQLConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLDataSourcesA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLDataSourcesW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLDescribeColA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLDescribeColW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLDriverConnectA(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); - SQLRETURN SQLDriverConnectW(SQLHDBC, SQLHWND, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); - SQLRETURN SQLDriversA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLDriversW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLErrorA(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLErrorW(SQLHENV, SQLHDBC, SQLHSTMT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLExecDirectA(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLExecDirectW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); - SQLRETURN SQLForeignKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLForeignKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLGetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLGetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLGetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetInfoA(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetInfoW(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetTypeInfoA(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLGetTypeInfoW(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLNativeSqlA(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLNativeSqlW(SQLHDBC, SQLWCHAR*, SQLINTEGER, SQLWCHAR*, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLPrepareA(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLPrepareW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); - SQLRETURN SQLPrimaryKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT ); - SQLRETURN SQLPrimaryKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedureColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedureColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLProceduresA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProceduresW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLSetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLULEN); - SQLRETURN SQLSetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLULEN); - SQLRETURN SQLSetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLSetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLSpecialColumnsA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLSpecialColumnsW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLStatisticsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLStatisticsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLTablePrivilegesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLTablePrivilegesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); - SQLRETURN SQLTablesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLTablesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - static if (ODBCVER >= 0x0300) { - SQLRETURN SQLGetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLSetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLGetDescRecA(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLGetDescRecW(SQLHDESC, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLGetDiagFieldA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagFieldW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagRecA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagRecW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLSetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); - } // #endif /* (ODBCVER >= 0x0300) */ + SQLRETURN SQLBrowseConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLBrowseConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLColAttributeA(SQLHSTMT, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLColAttributeW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLColAttributesA(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLColAttributesW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLColumnPrivilegesA( SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnPrivilegesW( SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLDataSourcesA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDataSourcesW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDescribeColA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDescribeColW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDriverConnectA(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLDriverConnectW(SQLHDBC, SQLHWND, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLDriversA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDriversW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLErrorA(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLErrorW(SQLHENV, SQLHDBC, SQLHSTMT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLExecDirectA(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLExecDirectW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); + SQLRETURN SQLForeignKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLForeignKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLGetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetInfoA(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetInfoW(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetTypeInfoA(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLGetTypeInfoW(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLNativeSqlA(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLNativeSqlW(SQLHDBC, SQLWCHAR*, SQLINTEGER, SQLWCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLPrepareA(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLPrepareW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); + SQLRETURN SQLPrimaryKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLPrimaryKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLProceduresA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProceduresW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLSetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLSetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLSpecialColumnsA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLSpecialColumnsW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatisticsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatisticsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTablePrivilegesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTablePrivilegesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLTablesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTablesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + static if (ODBCVER >= 0x0300) { + SQLRETURN SQLGetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLGetDescRecA(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDescRecW(SQLHDESC, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDiagFieldA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagFieldW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRecA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRecW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + } // #endif /* (ODBCVER >= 0x0300) */ } version (Unicode) { - alias SQLBrowseConnectW SQLBrowseConnect; - alias SQLColAttributeW SQLColAttribute; - alias SQLColAttributesW SQLColAttributes; - alias SQLColumnPrivilegesW SQLColumnPrivileges; - alias SQLColumnsW SQLColumns; - alias SQLConnectW SQLConnect; - alias SQLDataSourcesW SQLDataSources; - alias SQLDescribeColW SQLDescribeCol; - alias SQLDriverConnectW SQLDriverConnect; - alias SQLDriversW SQLDrivers; - alias SQLErrorW SQLError; - alias SQLExecDirectW SQLExecDirect; - alias SQLForeignKeysW SQLForeignKeys; - alias SQLGetConnectAttrW SQLGetConnectAttr; - alias SQLGetConnectOptionW SQLGetConnectOption; - alias SQLGetCursorNameW SQLGetCursorName; - alias SQLGetDescFieldW SQLGetDescField; - alias SQLGetDescRecW SQLGetDescRec; - alias SQLGetDiagFieldW SQLGetDiagField; - alias SQLGetDiagRecW SQLGetDiagRec; - alias SQLGetInfoW SQLGetInfo; - alias SQLGetStmtAttrW SQLGetStmtAttr; - alias SQLGetTypeInfoW SQLGetTypeInfo; - alias SQLNativeSqlW SQLNativeSql; - alias SQLPrepareW SQLPrepare; - alias SQLPrimaryKeysW SQLPrimaryKeys; - alias SQLProcedureColumnsW SQLProcedureColumns; - alias SQLProceduresW SQLProcedures; - alias SQLSetConnectAttrW SQLSetConnectAttr; - alias SQLSetConnectOptionW SQLSetConnectOption; - alias SQLSetCursorNameW SQLSetCursorName; - alias SQLSetDescFieldW SQLSetDescField; - alias SQLSetStmtAttrW SQLSetStmtAttr; - alias SQLSpecialColumnsW SQLSpecialColumns; - alias SQLStatisticsW SQLStatistics; - alias SQLTablePrivilegesW SQLTablePrivileges; - alias SQLTablesW SQLTables; + alias SQLBrowseConnectW SQLBrowseConnect; + alias SQLColAttributeW SQLColAttribute; + alias SQLColAttributesW SQLColAttributes; + alias SQLColumnPrivilegesW SQLColumnPrivileges; + alias SQLColumnsW SQLColumns; + alias SQLConnectW SQLConnect; + alias SQLDataSourcesW SQLDataSources; + alias SQLDescribeColW SQLDescribeCol; + alias SQLDriverConnectW SQLDriverConnect; + alias SQLDriversW SQLDrivers; + alias SQLErrorW SQLError; + alias SQLExecDirectW SQLExecDirect; + alias SQLForeignKeysW SQLForeignKeys; + alias SQLGetConnectAttrW SQLGetConnectAttr; + alias SQLGetConnectOptionW SQLGetConnectOption; + alias SQLGetCursorNameW SQLGetCursorName; + alias SQLGetDescFieldW SQLGetDescField; + alias SQLGetDescRecW SQLGetDescRec; + alias SQLGetDiagFieldW SQLGetDiagField; + alias SQLGetDiagRecW SQLGetDiagRec; + alias SQLGetInfoW SQLGetInfo; + alias SQLGetStmtAttrW SQLGetStmtAttr; + alias SQLGetTypeInfoW SQLGetTypeInfo; + alias SQLNativeSqlW SQLNativeSql; + alias SQLPrepareW SQLPrepare; + alias SQLPrimaryKeysW SQLPrimaryKeys; + alias SQLProcedureColumnsW SQLProcedureColumns; + alias SQLProceduresW SQLProcedures; + alias SQLSetConnectAttrW SQLSetConnectAttr; + alias SQLSetConnectOptionW SQLSetConnectOption; + alias SQLSetCursorNameW SQLSetCursorName; + alias SQLSetDescFieldW SQLSetDescField; + alias SQLSetStmtAttrW SQLSetStmtAttr; + alias SQLSpecialColumnsW SQLSpecialColumns; + alias SQLStatisticsW SQLStatistics; + alias SQLTablePrivilegesW SQLTablePrivileges; + alias SQLTablesW SQLTables; } diff --git a/src/core/sys/windows/sspi.d b/src/core/sys/windows/sspi.d index 8992d721ff..5c583476f7 100644 --- a/src/core/sys/windows/sspi.d +++ b/src/core/sys/windows/sspi.d @@ -79,14 +79,14 @@ alias UNICODE_STRING* PSECURITY_STRING; extern(Windows): struct SecHandle { - ULONG_PTR dwLower; - ULONG_PTR dwUpper; + ULONG_PTR dwLower; + ULONG_PTR dwUpper; } alias SecHandle* PSecHandle; struct SecBuffer { - ULONG cbBuffer; - ULONG BufferType; - PVOID pvBuffer; + ULONG cbBuffer; + ULONG BufferType; + PVOID pvBuffer; } alias SecBuffer* PSecBuffer; alias SecHandle CredHandle; @@ -94,99 +94,99 @@ alias PSecHandle PCredHandle; alias SecHandle CtxtHandle; alias PSecHandle PCtxtHandle; struct SECURITY_INTEGER { - uint LowPart; - int HighPart; + uint LowPart; + int HighPart; } alias SECURITY_INTEGER TimeStamp; alias SECURITY_INTEGER* PTimeStamp; struct SecBufferDesc { - ULONG ulVersion; - ULONG cBuffers; - PSecBuffer pBuffers; + ULONG ulVersion; + ULONG cBuffers; + PSecBuffer pBuffers; } alias SecBufferDesc* PSecBufferDesc; struct SecPkgContext_StreamSizes { - ULONG cbHeader; - ULONG cbTrailer; - ULONG cbMaximumMessage; - ULONG cBuffers; - ULONG cbBlockSize; + ULONG cbHeader; + ULONG cbTrailer; + ULONG cbMaximumMessage; + ULONG cBuffers; + ULONG cbBlockSize; } alias SecPkgContext_StreamSizes* PSecPkgContext_StreamSizes; struct SecPkgContext_Sizes { - ULONG cbMaxToken; - ULONG cbMaxSignature; - ULONG cbBlockSize; - ULONG cbSecurityTrailer; + ULONG cbMaxToken; + ULONG cbMaxSignature; + ULONG cbBlockSize; + ULONG cbSecurityTrailer; } alias SecPkgContext_Sizes* PSecPkgContext_Sizes; struct SecPkgContext_AuthorityW { - SEC_WCHAR* sAuthorityName; + SEC_WCHAR* sAuthorityName; } alias SecPkgContext_AuthorityW* PSecPkgContext_AuthorityW; struct SecPkgContext_AuthorityA { - SEC_CHAR* sAuthorityName; + SEC_CHAR* sAuthorityName; } alias SecPkgContext_AuthorityA* PSecPkgContext_AuthorityA; struct SecPkgContext_KeyInfoW { - SEC_WCHAR* sSignatureAlgorithmName; - SEC_WCHAR* sEncryptAlgorithmName; - ULONG KeySize; - ULONG SignatureAlgorithm; - ULONG EncryptAlgorithm; + SEC_WCHAR* sSignatureAlgorithmName; + SEC_WCHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; } alias SecPkgContext_KeyInfoW* PSecPkgContext_KeyInfoW; struct SecPkgContext_KeyInfoA { - SEC_CHAR* sSignatureAlgorithmName; - SEC_CHAR* sEncryptAlgorithmName; - ULONG KeySize; - ULONG SignatureAlgorithm; - ULONG EncryptAlgorithm; + SEC_CHAR* sSignatureAlgorithmName; + SEC_CHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; } alias SecPkgContext_KeyInfoA* PSecPkgContext_KeyInfoA; struct SecPkgContext_LifeSpan { - TimeStamp tsStart; - TimeStamp tsExpiry; + TimeStamp tsStart; + TimeStamp tsExpiry; } alias SecPkgContext_LifeSpan* PSecPkgContext_LifeSpan; struct SecPkgContext_NamesW { - SEC_WCHAR* sUserName; + SEC_WCHAR* sUserName; } alias SecPkgContext_NamesW* PSecPkgContext_NamesW; struct SecPkgContext_NamesA { - SEC_CHAR* sUserName; + SEC_CHAR* sUserName; } alias SecPkgContext_NamesA* PSecPkgContext_NamesA; struct SecPkgInfoW { - ULONG fCapabilities; - USHORT wVersion; - USHORT wRPCID; - ULONG cbMaxToken; - SEC_WCHAR* Name; - SEC_WCHAR* Comment; + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_WCHAR* Name; + SEC_WCHAR* Comment; } alias SecPkgInfoW* PSecPkgInfoW; struct SecPkgInfoA { - ULONG fCapabilities; - USHORT wVersion; - USHORT wRPCID; - ULONG cbMaxToken; - SEC_CHAR* Name; - SEC_CHAR* Comment; + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_CHAR* Name; + SEC_CHAR* Comment; } alias SecPkgInfoA* PSecPkgInfoA; /* supported only in win2k+, so it should be a PSecPkgInfoW */ /* PSDK does not say it has ANSI/Unicode versions */ struct SecPkgContext_PackageInfo { - PSecPkgInfoW PackageInfo; + PSecPkgInfoW PackageInfo; } alias SecPkgContext_PackageInfo* PSecPkgContext_PackageInfo; struct SecPkgCredentials_NamesW { - SEC_WCHAR* sUserName; + SEC_WCHAR* sUserName; } alias SecPkgCredentials_NamesW* PSecPkgCredentials_NamesW; struct SecPkgCredentials_NamesA { - SEC_CHAR* sUserName; + SEC_CHAR* sUserName; } alias SecPkgCredentials_NamesA* PSecPkgCredentials_NamesA; @@ -224,26 +224,26 @@ alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) DECRYPT_ * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a * discovery discussion. */ struct SecurityFunctionTableW{ - uint dwVersion; - ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; - QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; - ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; - FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; - void* Reserved2; - INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; - ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; - COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; - DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; - APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW; - QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; - IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; - REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; - MAKE_SIGNATURE_FN MakeSignature; - VERIFY_SIGNATURE_FN VerifySignature; - FREE_CONTEXT_BUFFER_FN FreeContextBuffer; - QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; - void* Reserved3; - void* Reserved4; + uint dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; + QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; + ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW; + QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; + void* Reserved3; + void* Reserved4; void* Reserved5; void* Reserved6; void* Reserved7; @@ -254,26 +254,26 @@ struct SecurityFunctionTableW{ } alias SecurityFunctionTableW* PSecurityFunctionTableW; struct SecurityFunctionTableA{ - uint dwVersion; - ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; - QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; - ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; - FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; - void* Reserved2; - INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; - ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; - COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; - DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; - APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA; - QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; - IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; - REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; - MAKE_SIGNATURE_FN MakeSignature; - VERIFY_SIGNATURE_FN VerifySignature; - FREE_CONTEXT_BUFFER_FN FreeContextBuffer; - QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; - void* Reserved3; - void* Reserved4; + uint dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; + QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; + ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA; + QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; + void* Reserved3; + void* Reserved4; void* Unknown1; void* Unknown2; void* Unknown3; diff --git a/src/core/sys/windows/subauth.d b/src/core/sys/windows/subauth.d index 48263bfc36..f4f80391dd 100644 --- a/src/core/sys/windows/subauth.d +++ b/src/core/sys/windows/subauth.d @@ -16,19 +16,19 @@ alias NTSTATUS* PNTSTATUS; +/ enum : ULONG { - MSV1_0_PASSTHRU = 1, - MSV1_0_GUEST_LOGON = 2 + MSV1_0_PASSTHRU = 1, + MSV1_0_GUEST_LOGON = 2 } // USER_ALL_INFORMATION.WhichFields (Undocumented) const ULONG - MSV1_0_VALIDATION_LOGOFF_TIME = 1, - MSV1_0_VALIDATION_KICKOFF_TIME = 2, - MSV1_0_VALIDATION_LOGON_SERVER = 4, - MSV1_0_VALIDATION_LOGON_DOMAIN = 8, - MSV1_0_VALIDATION_SESSION_KEY = 16, - MSV1_0_VALIDATION_USER_FLAGS = 32, - MSV1_0_VALIDATION_USER_ID = 64; + MSV1_0_VALIDATION_LOGOFF_TIME = 1, + MSV1_0_VALIDATION_KICKOFF_TIME = 2, + MSV1_0_VALIDATION_LOGON_SERVER = 4, + MSV1_0_VALIDATION_LOGON_DOMAIN = 8, + MSV1_0_VALIDATION_SESSION_KEY = 16, + MSV1_0_VALIDATION_USER_FLAGS = 32, + MSV1_0_VALIDATION_USER_ID = 64; // ?ActionsPerformed? (Undocumented) const MSV1_0_SUBAUTH_ACCOUNT_DISABLED = 1; @@ -47,60 +47,60 @@ const SAM_HOURS_PER_WEEK = 168; const SAM_MINUTES_PER_WEEK = 10080; enum : NTSTATUS { - STATUS_SUCCESS = 0, - STATUS_INVALID_INFO_CLASS = 0xC0000003, - STATUS_NO_SUCH_USER = 0xC0000064, - STATUS_WRONG_PASSWORD = 0xC000006A, - STATUS_PASSWORD_RESTRICTION = 0xC000006C, - STATUS_LOGON_FAILURE = 0xC000006D, - STATUS_ACCOUNT_RESTRICTION = 0xC000006E, - STATUS_INVALID_LOGON_HOURS = 0xC000006F, - STATUS_INVALID_WORKSTATION = 0xC0000070, - STATUS_PASSWORD_EXPIRED = 0xC0000071, - STATUS_ACCOUNT_DISABLED = 0xC0000072, - STATUS_INSUFFICIENT_RESOURCES = 0xC000009A, - STATUS_ACCOUNT_EXPIRED = 0xC0000193, - STATUS_PASSWORD_MUST_CHANGE = 0xC0000224, - STATUS_ACCOUNT_LOCKED_OUT = 0xC0000234 + STATUS_SUCCESS = 0, + STATUS_INVALID_INFO_CLASS = 0xC0000003, + STATUS_NO_SUCH_USER = 0xC0000064, + STATUS_WRONG_PASSWORD = 0xC000006A, + STATUS_PASSWORD_RESTRICTION = 0xC000006C, + STATUS_LOGON_FAILURE = 0xC000006D, + STATUS_ACCOUNT_RESTRICTION = 0xC000006E, + STATUS_INVALID_LOGON_HOURS = 0xC000006F, + STATUS_INVALID_WORKSTATION = 0xC0000070, + STATUS_PASSWORD_EXPIRED = 0xC0000071, + STATUS_ACCOUNT_DISABLED = 0xC0000072, + STATUS_INSUFFICIENT_RESOURCES = 0xC000009A, + STATUS_ACCOUNT_EXPIRED = 0xC0000193, + STATUS_PASSWORD_MUST_CHANGE = 0xC0000224, + STATUS_ACCOUNT_LOCKED_OUT = 0xC0000234 } // Note: undocumented in MSDN // USER_ALL_INFORMATION.UserAccountControl const ULONG - USER_ACCOUNT_DISABLED = 1, - USER_HOME_DIRECTORY_REQUIRED = 2, - USER_PASSWORD_NOT_REQUIRED = 4, - USER_TEMP_DUPLICATE_ACCOUNT = 8, - USER_NORMAL_ACCOUNT = 16, - USER_MNS_LOGON_ACCOUNT = 32, - USER_INTERDOMAIN_TRUST_ACCOUNT = 64, - USER_WORKSTATION_TRUST_ACCOUNT = 128, - USER_SERVER_TRUST_ACCOUNT = 256, - USER_DONT_EXPIRE_PASSWORD = 512, - USER_ACCOUNT_AUTO_LOCKED = 1024, - USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 2048, - USER_SMARTCARD_REQUIRED = 4096, - USER_TRUSTED_FOR_DELEGATION = 8192, - USER_NOT_DELEGATED = 16384, - USER_USE_DES_KEY_ONLY = 32768, - USER_DONT_REQUIRE_PREAUTH = 65536, - - USER_MACHINE_ACCOUNT_MASK = 448, - USER_ACCOUNT_TYPE_MASK = 472, - USER_ALL_PARAMETERS = 2097152; + USER_ACCOUNT_DISABLED = 1, + USER_HOME_DIRECTORY_REQUIRED = 2, + USER_PASSWORD_NOT_REQUIRED = 4, + USER_TEMP_DUPLICATE_ACCOUNT = 8, + USER_NORMAL_ACCOUNT = 16, + USER_MNS_LOGON_ACCOUNT = 32, + USER_INTERDOMAIN_TRUST_ACCOUNT = 64, + USER_WORKSTATION_TRUST_ACCOUNT = 128, + USER_SERVER_TRUST_ACCOUNT = 256, + USER_DONT_EXPIRE_PASSWORD = 512, + USER_ACCOUNT_AUTO_LOCKED = 1024, + USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 2048, + USER_SMARTCARD_REQUIRED = 4096, + USER_TRUSTED_FOR_DELEGATION = 8192, + USER_NOT_DELEGATED = 16384, + USER_USE_DES_KEY_ONLY = 32768, + USER_DONT_REQUIRE_PREAUTH = 65536, + + USER_MACHINE_ACCOUNT_MASK = 448, + USER_ACCOUNT_TYPE_MASK = 472, + USER_ALL_PARAMETERS = 2097152; /+ struct UNICODE_STRING { - USHORT Length; - USHORT MaximumLength; - PWSTR Buffer; + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; } alias UNICODE_STRING* PUNICODE_STRING; struct STRING { - USHORT Length; - USHORT MaximumLength; - PCHAR Buffer; + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; } alias STRING* PSTRING; +/ @@ -109,19 +109,19 @@ mixin DECLARE_HANDLE!("SAM_HANDLE"); alias SAM_HANDLE* PSAM_HANDLE; struct OLD_LARGE_INTEGER { - ULONG LowPart; - LONG HighPart; + ULONG LowPart; + LONG HighPart; } alias OLD_LARGE_INTEGER* POLD_LARGE_INTEGER; enum NETLOGON_LOGON_INFO_CLASS { - NetlogonInteractiveInformation = 1, - NetlogonNetworkInformation, - NetlogonServiceInformation, - NetlogonGenericInformation, - NetlogonInteractiveTransitiveInformation, - NetlogonNetworkTransitiveInformation, - NetlogonServiceTransitiveInformation + NetlogonInteractiveInformation = 1, + NetlogonNetworkInformation, + NetlogonServiceInformation, + NetlogonGenericInformation, + NetlogonInteractiveTransitiveInformation, + NetlogonNetworkTransitiveInformation, + NetlogonServiceTransitiveInformation } @@ -130,22 +130,22 @@ const USER_SESSION_KEY_LENGTH = CYPHER_BLOCK_LENGTH * 2; const CLEAR_BLOCK_LENGTH = 8; struct CYPHER_BLOCK { - CHAR[CYPHER_BLOCK_LENGTH] data; + CHAR[CYPHER_BLOCK_LENGTH] data; } alias CYPHER_BLOCK* PCYPHER_BLOCK; struct CLEAR_BLOCK { - CHAR[CLEAR_BLOCK_LENGTH] data; + CHAR[CLEAR_BLOCK_LENGTH] data; } alias CLEAR_BLOCK* PCLEAR_BLOCK; struct LM_OWF_PASSWORD { - CYPHER_BLOCK[2] data; + CYPHER_BLOCK[2] data; } alias LM_OWF_PASSWORD* PLM_OWF_PASSWORD; struct USER_SESSION_KEY { - CYPHER_BLOCK[2] data; + CYPHER_BLOCK[2] data; } alias USER_SESSION_KEY* PUSER_SESSION_KEY; @@ -158,117 +158,117 @@ alias LM_CHALLENGE NT_CHALLENGE; alias NT_CHALLENGE* PNT_CHALLENGE; struct LOGON_HOURS { - USHORT UnitsPerWeek; - PUCHAR LogonHours; + USHORT UnitsPerWeek; + PUCHAR LogonHours; } alias LOGON_HOURS* PLOGON_HOURS; struct SR_SECURITY_DESCRIPTOR { - ULONG Length; - PUCHAR SecurityDescriptor; + ULONG Length; + PUCHAR SecurityDescriptor; } alias SR_SECURITY_DESCRIPTOR* PSR_SECURITY_DESCRIPTOR; align(4): struct USER_ALL_INFORMATION { - LARGE_INTEGER LastLogon; - LARGE_INTEGER LastLogoff; - LARGE_INTEGER PasswordLastSet; - LARGE_INTEGER AccountExpires; - LARGE_INTEGER PasswordCanChange; - LARGE_INTEGER PasswordMustChange; - UNICODE_STRING UserName; - UNICODE_STRING FullName; - UNICODE_STRING HomeDirectory; - UNICODE_STRING HomeDirectoryDrive; - UNICODE_STRING ScriptPath; - UNICODE_STRING ProfilePath; - UNICODE_STRING AdminComment; - UNICODE_STRING WorkStations; - UNICODE_STRING UserComment; - UNICODE_STRING Parameters; - UNICODE_STRING LmPassword; - UNICODE_STRING NtPassword; - UNICODE_STRING PrivateData; - SR_SECURITY_DESCRIPTOR SecurityDescriptor; - ULONG UserId; - ULONG PrimaryGroupId; - ULONG UserAccountControl; - ULONG WhichFields; - LOGON_HOURS LogonHours; - USHORT BadPasswordCount; - USHORT LogonCount; - USHORT CountryCode; - USHORT CodePage; - BOOLEAN LmPasswordPresent; - BOOLEAN NtPasswordPresent; - BOOLEAN PasswordExpired; - BOOLEAN PrivateDataSensitive; + LARGE_INTEGER LastLogon; + LARGE_INTEGER LastLogoff; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER AccountExpires; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING UserName; + UNICODE_STRING FullName; + UNICODE_STRING HomeDirectory; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING ScriptPath; + UNICODE_STRING ProfilePath; + UNICODE_STRING AdminComment; + UNICODE_STRING WorkStations; + UNICODE_STRING UserComment; + UNICODE_STRING Parameters; + UNICODE_STRING LmPassword; + UNICODE_STRING NtPassword; + UNICODE_STRING PrivateData; + SR_SECURITY_DESCRIPTOR SecurityDescriptor; + ULONG UserId; + ULONG PrimaryGroupId; + ULONG UserAccountControl; + ULONG WhichFields; + LOGON_HOURS LogonHours; + USHORT BadPasswordCount; + USHORT LogonCount; + USHORT CountryCode; + USHORT CodePage; + BOOLEAN LmPasswordPresent; + BOOLEAN NtPasswordPresent; + BOOLEAN PasswordExpired; + BOOLEAN PrivateDataSensitive; } alias USER_ALL_INFORMATION* PUSER_ALL_INFORMATION; align: struct MSV1_0_VALIDATION_INFO { - LARGE_INTEGER LogoffTime; - LARGE_INTEGER KickoffTime; - UNICODE_STRING LogonServer; - UNICODE_STRING LogonDomainName; - USER_SESSION_KEY SessionKey; - BOOLEAN Authoritative; - ULONG UserFlags; - ULONG WhichFields; - ULONG UserId; + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickoffTime; + UNICODE_STRING LogonServer; + UNICODE_STRING LogonDomainName; + USER_SESSION_KEY SessionKey; + BOOLEAN Authoritative; + ULONG UserFlags; + ULONG WhichFields; + ULONG UserId; } alias MSV1_0_VALIDATION_INFO* PMSV1_0_VALIDATION_INFO; struct NETLOGON_LOGON_IDENTITY_INFO { - UNICODE_STRING LogonDomainName; - ULONG ParameterControl; - OLD_LARGE_INTEGER LogonId; - UNICODE_STRING UserName; - UNICODE_STRING Workstation; + UNICODE_STRING LogonDomainName; + ULONG ParameterControl; + OLD_LARGE_INTEGER LogonId; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; } alias NETLOGON_LOGON_IDENTITY_INFO* PNETLOGON_LOGON_IDENTITY_INFO; struct NETLOGON_INTERACTIVE_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - LM_OWF_PASSWORD LmOwfPassword; - NT_OWF_PASSWORD NtOwfPassword; + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; } alias NETLOGON_INTERACTIVE_INFO* PNETLOGON_INTERACTIVE_INFO; struct NETLOGON_GENERIC_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - UNICODE_STRING PackageName; - ULONG DataLength; - PUCHAR LogonData; + NETLOGON_LOGON_IDENTITY_INFO Identity; + UNICODE_STRING PackageName; + ULONG DataLength; + PUCHAR LogonData; } alias NETLOGON_GENERIC_INFO* PNETLOGON_GENERIC_INFO; struct NETLOGON_NETWORK_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - LM_CHALLENGE LmChallenge; - STRING NtChallengeResponse; - STRING LmChallengeResponse; + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_CHALLENGE LmChallenge; + STRING NtChallengeResponse; + STRING LmChallengeResponse; } alias NETLOGON_NETWORK_INFO* PNETLOGON_NETWORK_INFO; struct NETLOGON_SERVICE_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - LM_OWF_PASSWORD LmOwfPassword; - NT_OWF_PASSWORD NtOwfPassword; + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; } alias NETLOGON_SERVICE_INFO* PNETLOGON_SERVICE_INFO; extern (Windows) { NTSTATUS Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID, - ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, - PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); NTSTATUS Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID, - ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, - PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); NTSTATUS Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*); NTSTATUS Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID, - ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, - PMSV1_0_VALIDATION_INFO,PULONG); + ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, + PMSV1_0_VALIDATION_INFO,PULONG); } diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index 524e361d2a..2cd4990fd8 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -11,158 +11,158 @@ module core.sys.windows.tlhelp32; private import core.sys.windows.windef; enum : uint { - HF32_DEFAULT = 1, - HF32_SHARED + HF32_DEFAULT = 1, + HF32_SHARED } enum : uint { - LF32_FIXED = 0x1, - LF32_FREE = 0x2, - LF32_MOVEABLE = 0x4 + LF32_FIXED = 0x1, + LF32_FREE = 0x2, + LF32_MOVEABLE = 0x4 } const MAX_MODULE_NAME32 = 255; enum : uint { - TH32CS_SNAPHEAPLIST = 0x1, - TH32CS_SNAPPROCESS = 0x2, - TH32CS_SNAPTHREAD = 0x4, - TH32CS_SNAPMODULE = 0x8, - TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE), - TH32CS_INHERIT = 0x80000000 + TH32CS_SNAPHEAPLIST = 0x1, + TH32CS_SNAPPROCESS = 0x2, + TH32CS_SNAPTHREAD = 0x4, + TH32CS_SNAPMODULE = 0x8, + TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE), + TH32CS_INHERIT = 0x80000000 } struct HEAPLIST32 { - SIZE_T dwSize; - DWORD th32ProcessID; - ULONG_PTR th32HeapID; - DWORD dwFlags; + SIZE_T dwSize; + DWORD th32ProcessID; + ULONG_PTR th32HeapID; + DWORD dwFlags; } alias HEAPLIST32* PHEAPLIST32; alias HEAPLIST32* LPHEAPLIST32; struct HEAPENTRY32 { - SIZE_T dwSize; - HANDLE hHandle; - ULONG_PTR dwAddress; - SIZE_T dwBlockSize; - DWORD dwFlags; - DWORD dwLockCount; - DWORD dwResvd; - DWORD th32ProcessID; - ULONG_PTR th32HeapID; + SIZE_T dwSize; + HANDLE hHandle; + ULONG_PTR dwAddress; + SIZE_T dwBlockSize; + DWORD dwFlags; + DWORD dwLockCount; + DWORD dwResvd; + DWORD th32ProcessID; + ULONG_PTR th32HeapID; } alias HEAPENTRY32* PHEAPENTRY32; alias HEAPENTRY32* LPHEAPENTRY32; struct PROCESSENTRY32W { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ProcessID; - ULONG_PTR th32DefaultHeapID; - DWORD th32ModuleID; - DWORD cntThreads; - DWORD th32ParentProcessID; - LONG pcPriClassBase; - DWORD dwFlags; - WCHAR[MAX_PATH] szExeFile; + DWORD dwSize; + DWORD cntUsage; + DWORD th32ProcessID; + ULONG_PTR th32DefaultHeapID; + DWORD th32ModuleID; + DWORD cntThreads; + DWORD th32ParentProcessID; + LONG pcPriClassBase; + DWORD dwFlags; + WCHAR[MAX_PATH] szExeFile; } alias PROCESSENTRY32W* PPROCESSENTRY32W; alias PROCESSENTRY32W* LPPROCESSENTRY32W; struct THREADENTRY32 { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ThreadID; - DWORD th32OwnerProcessID; - LONG tpBasePri; - LONG tpDeltaPri; - DWORD dwFlags; + DWORD dwSize; + DWORD cntUsage; + DWORD th32ThreadID; + DWORD th32OwnerProcessID; + LONG tpBasePri; + LONG tpDeltaPri; + DWORD dwFlags; } alias THREADENTRY32* PTHREADENTRY32; alias THREADENTRY32* LPTHREADENTRY32; struct MODULEENTRY32W { - DWORD dwSize; - DWORD th32ModuleID; - DWORD th32ProcessID; - DWORD GlblcntUsage; - DWORD ProccntUsage; - BYTE *modBaseAddr; - DWORD modBaseSize; - HMODULE hModule; - WCHAR[MAX_MODULE_NAME32 + 1] szModule; - WCHAR[MAX_PATH] szExePath; + DWORD dwSize; + DWORD th32ModuleID; + DWORD th32ProcessID; + DWORD GlblcntUsage; + DWORD ProccntUsage; + BYTE *modBaseAddr; + DWORD modBaseSize; + HMODULE hModule; + WCHAR[MAX_MODULE_NAME32 + 1] szModule; + WCHAR[MAX_PATH] szExePath; } alias MODULEENTRY32W* PMODULEENTRY32W; alias MODULEENTRY32W* LPMODULEENTRY32W; version(Unicode) { - alias PROCESSENTRY32W PROCESSENTRY32; - alias PPROCESSENTRY32W PPROCESSENTRY32; - alias LPPROCESSENTRY32W LPPROCESSENTRY32; + alias PROCESSENTRY32W PROCESSENTRY32; + alias PPROCESSENTRY32W PPROCESSENTRY32; + alias LPPROCESSENTRY32W LPPROCESSENTRY32; - alias MODULEENTRY32W MODULEENTRY32; - alias PMODULEENTRY32W PMODULEENTRY32; - alias LPMODULEENTRY32W LPMODULEENTRY32; + alias MODULEENTRY32W MODULEENTRY32; + alias PMODULEENTRY32W PMODULEENTRY32; + alias LPMODULEENTRY32W LPMODULEENTRY32; } else { - struct PROCESSENTRY32 { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ProcessID; - ULONG_PTR th32DefaultHeapID; - DWORD th32ModuleID; - DWORD cntThreads; - DWORD th32ParentProcessID; - LONG pcPriClassBase; - DWORD dwFlags; - CHAR[MAX_PATH] szExeFile; - } - alias PROCESSENTRY32* PPROCESSENTRY32; - alias PROCESSENTRY32* LPPROCESSENTRY32; - - struct MODULEENTRY32 { - DWORD dwSize; - DWORD th32ModuleID; - DWORD th32ProcessID; - DWORD GlblcntUsage; - DWORD ProccntUsage; - BYTE *modBaseAddr; - DWORD modBaseSize; - HMODULE hModule; - char[MAX_MODULE_NAME32 + 1] szModule; - char[MAX_PATH] szExePath; - } - alias MODULEENTRY32* PMODULEENTRY32; - alias MODULEENTRY32* LPMODULEENTRY32; + struct PROCESSENTRY32 { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ProcessID; + ULONG_PTR th32DefaultHeapID; + DWORD th32ModuleID; + DWORD cntThreads; + DWORD th32ParentProcessID; + LONG pcPriClassBase; + DWORD dwFlags; + CHAR[MAX_PATH] szExeFile; + } + alias PROCESSENTRY32* PPROCESSENTRY32; + alias PROCESSENTRY32* LPPROCESSENTRY32; + + struct MODULEENTRY32 { + DWORD dwSize; + DWORD th32ModuleID; + DWORD th32ProcessID; + DWORD GlblcntUsage; + DWORD ProccntUsage; + BYTE *modBaseAddr; + DWORD modBaseSize; + HMODULE hModule; + char[MAX_MODULE_NAME32 + 1] szModule; + char[MAX_PATH] szExePath; + } + alias MODULEENTRY32* PMODULEENTRY32; + alias MODULEENTRY32* LPMODULEENTRY32; } extern(Windows) { - BOOL Heap32First(LPHEAPENTRY32,DWORD,DWORD); - BOOL Heap32ListFirst(HANDLE,LPHEAPLIST32); - BOOL Heap32ListNext(HANDLE,LPHEAPLIST32); - BOOL Heap32Next(LPHEAPENTRY32); - BOOL Thread32First(HANDLE,LPTHREADENTRY32); - BOOL Thread32Next(HANDLE,LPTHREADENTRY32); - BOOL Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD); - HANDLE CreateToolhelp32Snapshot(DWORD,DWORD); - BOOL Module32FirstW(HANDLE,LPMODULEENTRY32W); - BOOL Module32NextW(HANDLE,LPMODULEENTRY32W); - BOOL Process32FirstW(HANDLE,LPPROCESSENTRY32W); - BOOL Process32NextW(HANDLE,LPPROCESSENTRY32W); + BOOL Heap32First(LPHEAPENTRY32,DWORD,DWORD); + BOOL Heap32ListFirst(HANDLE,LPHEAPLIST32); + BOOL Heap32ListNext(HANDLE,LPHEAPLIST32); + BOOL Heap32Next(LPHEAPENTRY32); + BOOL Thread32First(HANDLE,LPTHREADENTRY32); + BOOL Thread32Next(HANDLE,LPTHREADENTRY32); + BOOL Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD); + HANDLE CreateToolhelp32Snapshot(DWORD,DWORD); + BOOL Module32FirstW(HANDLE,LPMODULEENTRY32W); + BOOL Module32NextW(HANDLE,LPMODULEENTRY32W); + BOOL Process32FirstW(HANDLE,LPPROCESSENTRY32W); + BOOL Process32NextW(HANDLE,LPPROCESSENTRY32W); } version(Unicode) { - alias Module32FirstW Module32First; - alias Module32NextW Module32Next; - alias Process32FirstW Process32First; - alias Process32NextW Process32Next; + alias Module32FirstW Module32First; + alias Module32NextW Module32Next; + alias Process32FirstW Process32First; + alias Process32NextW Process32Next; } else { - extern(Windows) { - BOOL Module32First(HANDLE,LPMODULEENTRY32); - BOOL Module32Next(HANDLE,LPMODULEENTRY32); - BOOL Process32First(HANDLE,LPPROCESSENTRY32); - BOOL Process32Next(HANDLE,LPPROCESSENTRY32); - } + extern(Windows) { + BOOL Module32First(HANDLE,LPMODULEENTRY32); + BOOL Module32Next(HANDLE,LPMODULEENTRY32); + BOOL Process32First(HANDLE,LPPROCESSENTRY32); + BOOL Process32Next(HANDLE,LPPROCESSENTRY32); + } } diff --git a/src/core/sys/windows/tmschema.d b/src/core/sys/windows/tmschema.d index de182a8849..65302f1280 100644 --- a/src/core/sys/windows/tmschema.d +++ b/src/core/sys/windows/tmschema.d @@ -10,748 +10,748 @@ module core.sys.windows.tmschema; /* BUTTON parts */ enum { - BP_PUSHBUTTON = 1, - BP_RADIOBUTTON = 2, - BP_CHECKBOX = 3, - BP_GROUPBOX = 4, - BP_USERBUTTON = 5 + BP_PUSHBUTTON = 1, + BP_RADIOBUTTON = 2, + BP_CHECKBOX = 3, + BP_GROUPBOX = 4, + BP_USERBUTTON = 5 } enum { - CBS_UNCHECKEDNORMAL = 1, - CBS_UNCHECKEDHOT = 2, - CBS_UNCHECKEDPRESSED = 3, - CBS_UNCHECKEDDISABLED = 4, - CBS_CHECKEDNORMAL = 5, - CBS_CHECKEDHOT = 6, - CBS_CHECKEDPRESSED = 7, - CBS_CHECKEDDISABLED = 8, - CBS_MIXEDNORMAL = 9, - CBS_MIXEDHOT = 10, - CBS_MIXEDPRESSED = 11, - CBS_MIXEDDISABLED = 12 + CBS_UNCHECKEDNORMAL = 1, + CBS_UNCHECKEDHOT = 2, + CBS_UNCHECKEDPRESSED = 3, + CBS_UNCHECKEDDISABLED = 4, + CBS_CHECKEDNORMAL = 5, + CBS_CHECKEDHOT = 6, + CBS_CHECKEDPRESSED = 7, + CBS_CHECKEDDISABLED = 8, + CBS_MIXEDNORMAL = 9, + CBS_MIXEDHOT = 10, + CBS_MIXEDPRESSED = 11, + CBS_MIXEDDISABLED = 12 } enum { - GBS_NORMAL = 1, - GBS_DISABLED = 2 + GBS_NORMAL = 1, + GBS_DISABLED = 2 } enum { - PBS_NORMAL = 1, - PBS_HOT = 2, - PBS_PRESSED = 3, - PBS_DISABLED = 4, - PBS_DEFAULTED = 5 + PBS_NORMAL = 1, + PBS_HOT = 2, + PBS_PRESSED = 3, + PBS_DISABLED = 4, + PBS_DEFAULTED = 5 } enum { - RBS_UNCHECKEDNORMAL = 1, - RBS_UNCHECKEDHOT = 2, - RBS_UNCHECKEDPRESSED = 3, - RBS_UNCHECKEDDISABLED = 4, - RBS_CHECKEDNORMAL = 5, - RBS_CHECKEDHOT = 6, - RBS_CHECKEDPRESSED = 7, - RBS_CHECKEDDISABLED = 8 + RBS_UNCHECKEDNORMAL = 1, + RBS_UNCHECKEDHOT = 2, + RBS_UNCHECKEDPRESSED = 3, + RBS_UNCHECKEDDISABLED = 4, + RBS_CHECKEDNORMAL = 5, + RBS_CHECKEDHOT = 6, + RBS_CHECKEDPRESSED = 7, + RBS_CHECKEDDISABLED = 8 } /* CLOCK parts */ enum { - CLP_TIME = 1 + CLP_TIME = 1 } enum { - CLS_NORMAL = 1 + CLS_NORMAL = 1 } /* COMBOBOX parts */ enum { - CP_DROPDOWNBUTTON = 1 + CP_DROPDOWNBUTTON = 1 } enum { - CBXS_NORMAL = 1, - CBXS_HOT = 2, - CBXS_PRESSED = 3, - CBXS_DISABLED = 4 + CBXS_NORMAL = 1, + CBXS_HOT = 2, + CBXS_PRESSED = 3, + CBXS_DISABLED = 4 } /* EDIT parts */ enum { - EP_EDITTEXT = 1, - EP_CARET = 2 + EP_EDITTEXT = 1, + EP_CARET = 2 } enum { - ETS_NORMAL = 1, - ETS_HOT = 2, - ETS_SELECTED = 3, - ETS_DISABLED = 4, - ETS_FOCUSED = 5, - ETS_READONLY = 6, - ETS_ASSIST = 7 + ETS_NORMAL = 1, + ETS_HOT = 2, + ETS_SELECTED = 3, + ETS_DISABLED = 4, + ETS_FOCUSED = 5, + ETS_READONLY = 6, + ETS_ASSIST = 7 } /* EXPLORERBAR parts */ enum { - EBP_HEADERBACKGROUND = 1, - EBP_HEADERCLOSE = 2, - EBP_HEADERPIN = 3, - EBP_IEBARMENU = 4, - EBP_NORMALGROUPBACKGROUND = 5, - EBP_NORMALGROUPCOLLAPSE = 6, - EBP_NORMALGROUPEXPAND = 7, - EBP_NORMALGROUPHEAD = 8, - EBP_SPECIALGROUPBACKGROUND = 9, - EBP_SPECIALGROUPCOLLAPSE = 10, - EBP_SPECIALGROUPEXPAND = 11, - EBP_SPECIALGROUPHEAD = 12 + EBP_HEADERBACKGROUND = 1, + EBP_HEADERCLOSE = 2, + EBP_HEADERPIN = 3, + EBP_IEBARMENU = 4, + EBP_NORMALGROUPBACKGROUND = 5, + EBP_NORMALGROUPCOLLAPSE = 6, + EBP_NORMALGROUPEXPAND = 7, + EBP_NORMALGROUPHEAD = 8, + EBP_SPECIALGROUPBACKGROUND = 9, + EBP_SPECIALGROUPCOLLAPSE = 10, + EBP_SPECIALGROUPEXPAND = 11, + EBP_SPECIALGROUPHEAD = 12 } enum { - EBHC_NORMAL = 1, - EBHC_HOT = 2, - EBHC_PRESSED = 3 + EBHC_NORMAL = 1, + EBHC_HOT = 2, + EBHC_PRESSED = 3 } enum { - EBHP_NORMAL = 1, - EBHP_HOT = 2, - EBHP_PRESSED = 3, - EBHP_SELECTEDNORMAL = 4, - EBHP_SELECTEDHOT = 5, - EBHP_SELECTEDPRESSED = 6 + EBHP_NORMAL = 1, + EBHP_HOT = 2, + EBHP_PRESSED = 3, + EBHP_SELECTEDNORMAL = 4, + EBHP_SELECTEDHOT = 5, + EBHP_SELECTEDPRESSED = 6 } enum { - EBM_NORMAL = 1, - EBM_HOT = 2, - EBM_PRESSED = 3 + EBM_NORMAL = 1, + EBM_HOT = 2, + EBM_PRESSED = 3 } enum { - EBNGC_NORMAL = 1, - EBNGC_HOT = 2, - EBNGC_PRESSED = 3 + EBNGC_NORMAL = 1, + EBNGC_HOT = 2, + EBNGC_PRESSED = 3 } enum { - EBNGE_NORMAL = 1, - EBNGE_HOT = 2, - EBNGE_PRESSED = 3 + EBNGE_NORMAL = 1, + EBNGE_HOT = 2, + EBNGE_PRESSED = 3 } enum { - EBSGC_NORMAL = 1, - EBSGC_HOT = 2, - EBSGC_PRESSED = 3 + EBSGC_NORMAL = 1, + EBSGC_HOT = 2, + EBSGC_PRESSED = 3 } enum { - EBSGE_NORMAL = 1, - EBSGE_HOT = 2, - EBSGE_PRESSED = 3 + EBSGE_NORMAL = 1, + EBSGE_HOT = 2, + EBSGE_PRESSED = 3 } /* HEADER parts */ enum { - HP_HEADERITEM = 1, - HP_HEADERITEMLEFT = 2, - HP_HEADERITEMRIGHT = 3, - HP_HEADERSORTARROW = 4 + HP_HEADERITEM = 1, + HP_HEADERITEMLEFT = 2, + HP_HEADERITEMRIGHT = 3, + HP_HEADERSORTARROW = 4 } enum { - HIS_NORMAL = 1, - HIS_HOT = 2, - HIS_PRESSED = 3 + HIS_NORMAL = 1, + HIS_HOT = 2, + HIS_PRESSED = 3 } enum { - HILS_NORMAL = 1, - HILS_HOT = 2, - HILS_PRESSED = 3 + HILS_NORMAL = 1, + HILS_HOT = 2, + HILS_PRESSED = 3 } enum { - HIRS_NORMAL = 1, - HIRS_HOT = 2, - HIRS_PRESSED = 3 + HIRS_NORMAL = 1, + HIRS_HOT = 2, + HIRS_PRESSED = 3 } enum { - HSAS_SORTEDUP = 1, - HSAS_SORTEDDOWN = 2 + HSAS_SORTEDUP = 1, + HSAS_SORTEDDOWN = 2 } /* LISTVIEW parts */ enum { - LVP_LISTITEM = 1, - LVP_LISTGROUP = 2, - LVP_LISTDETAIL = 3, - LVP_LISTSORTEDDETAIL = 4, - LVP_EMPTYTEXT = 5 + LVP_LISTITEM = 1, + LVP_LISTGROUP = 2, + LVP_LISTDETAIL = 3, + LVP_LISTSORTEDDETAIL = 4, + LVP_EMPTYTEXT = 5 } enum { - LIS_NORMAL = 1, - LIS_HOT = 2, - LIS_SELECTED = 3, - LIS_DISABLED = 4, - LIS_SELECTEDNOTFOCUS = 5 + LIS_NORMAL = 1, + LIS_HOT = 2, + LIS_SELECTED = 3, + LIS_DISABLED = 4, + LIS_SELECTEDNOTFOCUS = 5 } /* MENU parts */ enum { - MP_MENUITEM = 1, - MP_MENUDROPDOWN = 2, - MP_MENUBARITEM = 3, - MP_MENUBARDROPDOWN = 4, - MP_CHEVRON = 5, - MP_SEPARATOR = 6 + MP_MENUITEM = 1, + MP_MENUDROPDOWN = 2, + MP_MENUBARITEM = 3, + MP_MENUBARDROPDOWN = 4, + MP_CHEVRON = 5, + MP_SEPARATOR = 6 } enum { - MS_NORMAL = 1, - MS_SELECTED = 2, - MS_DEMOTED = 3 + MS_NORMAL = 1, + MS_SELECTED = 2, + MS_DEMOTED = 3 } /* MENUBAND parts */ enum { - MDP_NEWAPPBUTTON = 1, - MDP_SEPERATOR = 2 + MDP_NEWAPPBUTTON = 1, + MDP_SEPERATOR = 2 } enum { - MDS_NORMAL = 1, - MDS_HOT = 2, - MDS_PRESSED = 3, - MDS_DISABLED = 4, - MDS_CHECKED = 5, - MDS_HOTCHECKED = 6 + MDS_NORMAL = 1, + MDS_HOT = 2, + MDS_PRESSED = 3, + MDS_DISABLED = 4, + MDS_CHECKED = 5, + MDS_HOTCHECKED = 6 } /* PAGE parts */ enum { - PGRP_UP = 1, - PGRP_DOWN = 2, - PGRP_UPHORZ = 3, - PGRP_DOWNHORZ = 4 + PGRP_UP = 1, + PGRP_DOWN = 2, + PGRP_UPHORZ = 3, + PGRP_DOWNHORZ = 4 } enum { - DNS_NORMAL = 1, - DNS_HOT = 2, - DNS_PRESSED = 3, - DNS_DISABLED = 4 + DNS_NORMAL = 1, + DNS_HOT = 2, + DNS_PRESSED = 3, + DNS_DISABLED = 4 } enum { - DNHZS_NORMAL = 1, - DNHZS_HOT = 2, - DNHZS_PRESSED = 3, - DNHZS_DISABLED = 4 + DNHZS_NORMAL = 1, + DNHZS_HOT = 2, + DNHZS_PRESSED = 3, + DNHZS_DISABLED = 4 } enum { - UPS_NORMAL = 1, - UPS_HOT = 2, - UPS_PRESSED = 3, - UPS_DISABLED = 4 + UPS_NORMAL = 1, + UPS_HOT = 2, + UPS_PRESSED = 3, + UPS_DISABLED = 4 } enum { - UPHZS_NORMAL = 1, - UPHZS_HOT = 2, - UPHZS_PRESSED = 3, - UPHZS_DISABLED = 4 + UPHZS_NORMAL = 1, + UPHZS_HOT = 2, + UPHZS_PRESSED = 3, + UPHZS_DISABLED = 4 } /* PROGRESS parts */ enum { - PP_BAR = 1, - PP_BARVERT = 2, - PP_CHUNK = 3, - PP_CHUNKVERT = 4 + PP_BAR = 1, + PP_BARVERT = 2, + PP_CHUNK = 3, + PP_CHUNKVERT = 4 } /* REBAR parts */ enum { - RP_GRIPPER = 1, - RP_GRIPPERVERT = 2, - RP_BAND = 3, - RP_CHEVRON = 4, - RP_CHEVRONVERT = 5 + RP_GRIPPER = 1, + RP_GRIPPERVERT = 2, + RP_BAND = 3, + RP_CHEVRON = 4, + RP_CHEVRONVERT = 5 } enum { - CHEVS_NORMAL = 1, - CHEVS_HOT = 2, - CHEVS_PRESSED = 3 + CHEVS_NORMAL = 1, + CHEVS_HOT = 2, + CHEVS_PRESSED = 3 } /* SCROLLBAR parts */ enum { - SBP_ARROWBTN = 1, - SBP_THUMBBTNHORZ = 2, - SBP_THUMBBTNVERT = 3, - SBP_LOWERTRACKHORZ = 4, - SBP_UPPERTRACKHORZ = 5, - SBP_LOWERTRACKVERT = 6, - SBP_UPPERTRACKVERT = 7, - SBP_GRIPPERHORZ = 8, - SBP_GRIPPERVERT = 9, - SBP_SIZEBOX = 10 + SBP_ARROWBTN = 1, + SBP_THUMBBTNHORZ = 2, + SBP_THUMBBTNVERT = 3, + SBP_LOWERTRACKHORZ = 4, + SBP_UPPERTRACKHORZ = 5, + SBP_LOWERTRACKVERT = 6, + SBP_UPPERTRACKVERT = 7, + SBP_GRIPPERHORZ = 8, + SBP_GRIPPERVERT = 9, + SBP_SIZEBOX = 10 } enum { - ABS_UPNORMAL = 1, - ABS_UPHOT = 2, - ABS_UPPRESSED = 3, - ABS_UPDISABLED = 4, - ABS_DOWNNORMAL = 5, - ABS_DOWNHOT = 6, - ABS_DOWNPRESSED = 7, - ABS_DOWNDISABLED = 8, - ABS_LEFTNORMAL = 9, - ABS_LEFTHOT = 10, - ABS_LEFTPRESSED = 11, - ABS_LEFTDISABLED = 12, - ABS_RIGHTNORMAL = 13, - ABS_RIGHTHOT = 14, - ABS_RIGHTPRESSED = 15, - ABS_RIGHTDISABLED = 16 + ABS_UPNORMAL = 1, + ABS_UPHOT = 2, + ABS_UPPRESSED = 3, + ABS_UPDISABLED = 4, + ABS_DOWNNORMAL = 5, + ABS_DOWNHOT = 6, + ABS_DOWNPRESSED = 7, + ABS_DOWNDISABLED = 8, + ABS_LEFTNORMAL = 9, + ABS_LEFTHOT = 10, + ABS_LEFTPRESSED = 11, + ABS_LEFTDISABLED = 12, + ABS_RIGHTNORMAL = 13, + ABS_RIGHTHOT = 14, + ABS_RIGHTPRESSED = 15, + ABS_RIGHTDISABLED = 16 } enum { - SCRBS_NORMAL = 1, - SCRBS_HOT = 2, - SCRBS_PRESSED = 3, - SCRBS_DISABLED = 4 + SCRBS_NORMAL = 1, + SCRBS_HOT = 2, + SCRBS_PRESSED = 3, + SCRBS_DISABLED = 4 } enum { - SZB_RIGHTALIGN = 1, - SZB_LEFTALIGN = 2 + SZB_RIGHTALIGN = 1, + SZB_LEFTALIGN = 2 } /* SPIN parts */ enum { - SPNP_UP = 1, - SPNP_DOWN = 2, - SPNP_UPHORZ = 3, - SPNP_DOWNHORZ = 4 + SPNP_UP = 1, + SPNP_DOWN = 2, + SPNP_UPHORZ = 3, + SPNP_DOWNHORZ = 4 } /* STARTPANEL parts */ enum { - SPP_USERPANE = 1, - SPP_MOREPROGRAMS = 2, - SPP_MOREPROGRAMSARROW = 3, - SPP_PROGLIST = 4, - SPP_PROGLISTSEPARATOR = 5, - SPP_PLACESLIST = 6, - SPP_PLACESLISTSEPARATOR = 7, - SPP_LOGOFF = 8, - SPP_LOGOFFBUTTONS = 9, - SPP_USERPICTURE = 10, - SPP_PREVIEW = 11 + SPP_USERPANE = 1, + SPP_MOREPROGRAMS = 2, + SPP_MOREPROGRAMSARROW = 3, + SPP_PROGLIST = 4, + SPP_PROGLISTSEPARATOR = 5, + SPP_PLACESLIST = 6, + SPP_PLACESLISTSEPARATOR = 7, + SPP_LOGOFF = 8, + SPP_LOGOFFBUTTONS = 9, + SPP_USERPICTURE = 10, + SPP_PREVIEW = 11 } enum { - SPLS_NORMAL = 1, - SPLS_HOT = 2, - SPLS_PRESSED = 3 + SPLS_NORMAL = 1, + SPLS_HOT = 2, + SPLS_PRESSED = 3 } enum { - SPS_NORMAL = 1, - SPS_HOT = 2, - SPS_PRESSED = 3 + SPS_NORMAL = 1, + SPS_HOT = 2, + SPS_PRESSED = 3 } /* STATUS parts */ enum { - SP_PANE = 1, - SP_GRIPPERPANE = 2, - SP_GRIPPER = 3 + SP_PANE = 1, + SP_GRIPPERPANE = 2, + SP_GRIPPER = 3 } /* TAB parts */ enum { - TABP_TABITEM = 1, - TABP_TABITEMLEFTEDGE = 2, - TABP_TABITEMRIGHTEDGE = 3, - TABP_TABITEMBOTHEDGE = 4, - TABP_TOPTABITEM = 5, - TABP_TOPTABITEMLEFTEDGE = 6, - TABP_TOPTABITEMRIGHTEDGE = 7, - TABP_TOPTABITEMBOTHEDGE = 8, - TABP_PANE = 9, - TABP_BODY = 10 + TABP_TABITEM = 1, + TABP_TABITEMLEFTEDGE = 2, + TABP_TABITEMRIGHTEDGE = 3, + TABP_TABITEMBOTHEDGE = 4, + TABP_TOPTABITEM = 5, + TABP_TOPTABITEMLEFTEDGE = 6, + TABP_TOPTABITEMRIGHTEDGE = 7, + TABP_TOPTABITEMBOTHEDGE = 8, + TABP_PANE = 9, + TABP_BODY = 10 } enum { - TIS_NORMAL = 1, - TIS_HOT = 2, - TIS_SELECTED = 3, - TIS_DISABLED = 4, - TIS_FOCUSED = 5 + TIS_NORMAL = 1, + TIS_HOT = 2, + TIS_SELECTED = 3, + TIS_DISABLED = 4, + TIS_FOCUSED = 5 } enum { - TIBES_NORMAL = 1, - TIBES_HOT = 2, - TIBES_SELECTED = 3, - TIBES_DISABLED = 4, - TIBES_FOCUSED = 5 + TIBES_NORMAL = 1, + TIBES_HOT = 2, + TIBES_SELECTED = 3, + TIBES_DISABLED = 4, + TIBES_FOCUSED = 5 } enum { - TILES_NORMAL = 1, - TILES_HOT = 2, - TILES_SELECTED = 3, - TILES_DISABLED = 4, - TILES_FOCUSED = 5 + TILES_NORMAL = 1, + TILES_HOT = 2, + TILES_SELECTED = 3, + TILES_DISABLED = 4, + TILES_FOCUSED = 5 } enum { - TIRES_NORMAL = 1, - TIRES_HOT = 2, - TIRES_SELECTED = 3, - TIRES_DISABLED = 4, - TIRES_FOCUSED = 5 + TIRES_NORMAL = 1, + TIRES_HOT = 2, + TIRES_SELECTED = 3, + TIRES_DISABLED = 4, + TIRES_FOCUSED = 5 } enum { - TTIS_NORMAL = 1, - TTIS_HOT = 2, - TTIS_SELECTED = 3, - TTIS_DISABLED = 4, - TTIS_FOCUSED = 5 + TTIS_NORMAL = 1, + TTIS_HOT = 2, + TTIS_SELECTED = 3, + TTIS_DISABLED = 4, + TTIS_FOCUSED = 5 } enum { - TTIBES_NORMAL = 1, - TTIBES_HOT = 2, - TTIBES_SELECTED = 3, - TTIBES_DISABLED = 4, - TTIBES_FOCUSED = 5 + TTIBES_NORMAL = 1, + TTIBES_HOT = 2, + TTIBES_SELECTED = 3, + TTIBES_DISABLED = 4, + TTIBES_FOCUSED = 5 } enum { - TTILES_NORMAL = 1, - TTILES_HOT = 2, - TTILES_SELECTED = 3, - TTILES_DISABLED = 4, - TTILES_FOCUSED = 5 + TTILES_NORMAL = 1, + TTILES_HOT = 2, + TTILES_SELECTED = 3, + TTILES_DISABLED = 4, + TTILES_FOCUSED = 5 } enum { - TTIRES_NORMAL = 1, - TTIRES_HOT = 2, - TTIRES_SELECTED = 3, - TTIRES_DISABLED = 4, - TTIRES_FOCUSED = 5 + TTIRES_NORMAL = 1, + TTIRES_HOT = 2, + TTIRES_SELECTED = 3, + TTIRES_DISABLED = 4, + TTIRES_FOCUSED = 5 } /* TASKBAND parts */ enum { - TDP_GROUPCOUNT = 1, - TDP_FLASHBUTTON = 2, - TDP_FLASHBUTTONGROUPMENU = 3 + TDP_GROUPCOUNT = 1, + TDP_FLASHBUTTON = 2, + TDP_FLASHBUTTONGROUPMENU = 3 } /* TASKBAR parts */ enum { - TBP_BACKGROUNDBOTTOM = 1, - TBP_BACKGROUNDRIGHT = 2, - TBP_BACKGROUNDTOP = 3, - TBP_BACKGROUNDLEFT = 4, - TBP_SIZINGBARBOTTOM = 5, - TBP_SIZINGBARRIGHT = 6, - TBP_SIZINGBARTOP = 7, - TBP_SIZINGBARLEFT = 8 + TBP_BACKGROUNDBOTTOM = 1, + TBP_BACKGROUNDRIGHT = 2, + TBP_BACKGROUNDTOP = 3, + TBP_BACKGROUNDLEFT = 4, + TBP_SIZINGBARBOTTOM = 5, + TBP_SIZINGBARRIGHT = 6, + TBP_SIZINGBARTOP = 7, + TBP_SIZINGBARLEFT = 8 } /* TOOLBAR parts */ enum { - TP_BUTTON = 1, - TP_DROPDOWNBUTTON = 2, - TP_SPLITBUTTON = 3, - TP_SPLITBUTTONDROPDOWN = 4, - TP_SEPARATOR = 5, - TP_SEPARATORVERT = 6 + TP_BUTTON = 1, + TP_DROPDOWNBUTTON = 2, + TP_SPLITBUTTON = 3, + TP_SPLITBUTTONDROPDOWN = 4, + TP_SEPARATOR = 5, + TP_SEPARATORVERT = 6 } enum { - TS_NORMAL = 1, - TS_HOT = 2, - TS_PRESSED = 3, - TS_DISABLED = 4, - TS_CHECKED = 5, - TS_HOTCHECKED = 6 + TS_NORMAL = 1, + TS_HOT = 2, + TS_PRESSED = 3, + TS_DISABLED = 4, + TS_CHECKED = 5, + TS_HOTCHECKED = 6 } /* TOOLTIP parts */ enum { - TTP_STANDARD = 1, - TTP_STANDARDTITLE = 2, - TTP_BALLOON = 3, - TTP_BALLOONTITLE = 4, - TTP_CLOSE = 5 + TTP_STANDARD = 1, + TTP_STANDARDTITLE = 2, + TTP_BALLOON = 3, + TTP_BALLOONTITLE = 4, + TTP_CLOSE = 5 } enum { - TTBS_NORMAL = 1, - TTBS_LINK = 2 + TTBS_NORMAL = 1, + TTBS_LINK = 2 } enum { - TTCS_NORMAL = 1, - TTCS_HOT = 2, - TTCS_PRESSED = 3 + TTCS_NORMAL = 1, + TTCS_HOT = 2, + TTCS_PRESSED = 3 } enum { - TTSS_NORMAL = 1, - TTSS_LINK = 2 + TTSS_NORMAL = 1, + TTSS_LINK = 2 } /* TRACKBAR parts */ enum { - TKP_TRACK = 1, - TKP_TRACKVERT = 2, - TKP_THUMB = 3, - TKP_THUMBBOTTOM = 4, - TKP_THUMBTOP = 5, - TKP_THUMBVERT = 6, - TKP_THUMBLEFT = 7, - TKP_THUMBRIGHT = 8, - TKP_TICS = 9, - TKP_TICSVERT = 10 + TKP_TRACK = 1, + TKP_TRACKVERT = 2, + TKP_THUMB = 3, + TKP_THUMBBOTTOM = 4, + TKP_THUMBTOP = 5, + TKP_THUMBVERT = 6, + TKP_THUMBLEFT = 7, + TKP_THUMBRIGHT = 8, + TKP_TICS = 9, + TKP_TICSVERT = 10 } enum { - TUS_NORMAL = 1, - TUS_HOT = 2, - TUS_PRESSED = 3, - TUS_FOCUSED = 4, - TUS_DISABLED = 5 + TUS_NORMAL = 1, + TUS_HOT = 2, + TUS_PRESSED = 3, + TUS_FOCUSED = 4, + TUS_DISABLED = 5 } enum { - TUBS_NORMAL = 1, - TUBS_HOT = 2, - TUBS_PRESSED = 3, - TUBS_FOCUSED = 4, - TUBS_DISABLED = 5 + TUBS_NORMAL = 1, + TUBS_HOT = 2, + TUBS_PRESSED = 3, + TUBS_FOCUSED = 4, + TUBS_DISABLED = 5 } enum { - TUVLS_NORMAL = 1, - TUVLS_HOT = 2, - TUVLS_PRESSED = 3, - TUVLS_FOCUSED = 4, - TUVLS_DISABLED = 5 + TUVLS_NORMAL = 1, + TUVLS_HOT = 2, + TUVLS_PRESSED = 3, + TUVLS_FOCUSED = 4, + TUVLS_DISABLED = 5 } enum { - TUVRS_NORMAL = 1, - TUVRS_HOT = 2, - TUVRS_PRESSED = 3, - TUVRS_FOCUSED = 4, - TUVRS_DISABLED = 5 + TUVRS_NORMAL = 1, + TUVRS_HOT = 2, + TUVRS_PRESSED = 3, + TUVRS_FOCUSED = 4, + TUVRS_DISABLED = 5 } enum { - TUTS_NORMAL = 1, - TUTS_HOT = 2, - TUTS_PRESSED = 3, - TUTS_FOCUSED = 4, - TUTS_DISABLED = 5 + TUTS_NORMAL = 1, + TUTS_HOT = 2, + TUTS_PRESSED = 3, + TUTS_FOCUSED = 4, + TUTS_DISABLED = 5 } enum { - TUVS_NORMAL = 1, - TUVS_HOT = 2, - TUVS_PRESSED = 3, - TUVS_FOCUSED = 4, - TUVS_DISABLED = 5 + TUVS_NORMAL = 1, + TUVS_HOT = 2, + TUVS_PRESSED = 3, + TUVS_FOCUSED = 4, + TUVS_DISABLED = 5 } enum { - TSS_NORMAL = 1 + TSS_NORMAL = 1 } enum { - TSVS_NORMAL = 1 + TSVS_NORMAL = 1 } enum { - TRS_NORMAL = 1 + TRS_NORMAL = 1 } enum { - TRVS_NORMAL = 1 + TRVS_NORMAL = 1 } /* TRAYNOTIFY parts */ enum { - TNP_BACKGROUND = 1, - TNP_ANIMBACKGROUND = 2 + TNP_BACKGROUND = 1, + TNP_ANIMBACKGROUND = 2 } /* TREEVIEW parts */ enum { - TVP_TREEITEM = 1, - TVP_GLYPH = 2, - TVP_BRANCH = 3 + TVP_TREEITEM = 1, + TVP_GLYPH = 2, + TVP_BRANCH = 3 } enum { - GLPS_CLOSED = 1, - GLPS_OPENED = 2 + GLPS_CLOSED = 1, + GLPS_OPENED = 2 } enum { - TREIS_NORMAL = 1, - TREIS_HOT = 2, - TREIS_SELECTED = 3, - TREIS_DISABLED = 4, - TREIS_SELECTEDNOTFOCUS = 5 + TREIS_NORMAL = 1, + TREIS_HOT = 2, + TREIS_SELECTED = 3, + TREIS_DISABLED = 4, + TREIS_SELECTEDNOTFOCUS = 5 } /* WINDOW parts */ enum { - WP_CAPTION = 1, - WP_SMALLCAPTION = 2, - WP_MINCAPTION = 3, - WP_SMALLMINCAPTION = 4, - WP_MAXCAPTION = 5, - WP_SMALLMAXCAPTION = 6, - WP_FRAMELEFT = 7, - WP_FRAMERIGHT = 8, - WP_FRAMEBOTTOM = 9, - WP_SMALLFRAMELEFT = 10, - WP_SMALLFRAMERIGHT = 11, - WP_SMALLFRAMEBOTTOM = 12, - WP_SYSBUTTON = 13, - WP_MDISYSBUTTON = 14, - WP_MINBUTTON = 15, - WP_MDIMINBUTTON = 16, - WP_MAXBUTTON = 17, - WP_CLOSEBUTTON = 18, - WP_SMALLCLOSEBUTTON = 19, - WP_MDICLOSEBUTTON = 20, - WP_RESTOREBUTTON = 21, - WP_MDIRESTOREBUTTON = 22, - WP_HELPBUTTON = 23, - WP_MDIHELPBUTTON = 24, - WP_HORZSCROLL = 25, - WP_HORZTHUMB = 26, - WP_VERTSCROLL = 27, - WP_VERTTHUMB = 28, - WP_DIALOG = 29, - WP_CAPTIONSIZINGTEMPLATE = 30, - WP_SMALLCAPTIONSIZINGTEMPLATE = 31, - WP_FRAMELEFTSIZINGTEMPLATE = 32, - WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33, - WP_FRAMERIGHTSIZINGTEMPLATE = 34, - WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35, - WP_FRAMEBOTTOMSIZINGTEMPLATE = 36, - WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37 + WP_CAPTION = 1, + WP_SMALLCAPTION = 2, + WP_MINCAPTION = 3, + WP_SMALLMINCAPTION = 4, + WP_MAXCAPTION = 5, + WP_SMALLMAXCAPTION = 6, + WP_FRAMELEFT = 7, + WP_FRAMERIGHT = 8, + WP_FRAMEBOTTOM = 9, + WP_SMALLFRAMELEFT = 10, + WP_SMALLFRAMERIGHT = 11, + WP_SMALLFRAMEBOTTOM = 12, + WP_SYSBUTTON = 13, + WP_MDISYSBUTTON = 14, + WP_MINBUTTON = 15, + WP_MDIMINBUTTON = 16, + WP_MAXBUTTON = 17, + WP_CLOSEBUTTON = 18, + WP_SMALLCLOSEBUTTON = 19, + WP_MDICLOSEBUTTON = 20, + WP_RESTOREBUTTON = 21, + WP_MDIRESTOREBUTTON = 22, + WP_HELPBUTTON = 23, + WP_MDIHELPBUTTON = 24, + WP_HORZSCROLL = 25, + WP_HORZTHUMB = 26, + WP_VERTSCROLL = 27, + WP_VERTTHUMB = 28, + WP_DIALOG = 29, + WP_CAPTIONSIZINGTEMPLATE = 30, + WP_SMALLCAPTIONSIZINGTEMPLATE = 31, + WP_FRAMELEFTSIZINGTEMPLATE = 32, + WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33, + WP_FRAMERIGHTSIZINGTEMPLATE = 34, + WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35, + WP_FRAMEBOTTOMSIZINGTEMPLATE = 36, + WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37 } enum { - CS_ACTIVE = 1, - CS_INACTIVE = 2, - CS_DISABLED = 3 + CS_ACTIVE = 1, + CS_INACTIVE = 2, + CS_DISABLED = 3 } enum { - CBS_NORMAL = 1, - CBS_HOT = 2, - CBS_PUSHED = 3, - CBS_DISABLED = 4 + CBS_NORMAL = 1, + CBS_HOT = 2, + CBS_PUSHED = 3, + CBS_DISABLED = 4 } enum { - FS_ACTIVE = 1, - FS_INACTIVE = 2 + FS_ACTIVE = 1, + FS_INACTIVE = 2 } enum { - HBS_NORMAL = 1, - HBS_HOT = 2, - HBS_PUSHED = 3, - HBS_DISABLED = 4 + HBS_NORMAL = 1, + HBS_HOT = 2, + HBS_PUSHED = 3, + HBS_DISABLED = 4 } enum { - HSS_NORMAL = 1, - HSS_HOT = 2, - HSS_PUSHED = 3, - HSS_DISABLED = 4 + HSS_NORMAL = 1, + HSS_HOT = 2, + HSS_PUSHED = 3, + HSS_DISABLED = 4 } enum { - HTS_NORMAL = 1, - HTS_HOT = 2, - HTS_PUSHED = 3, - HTS_DISABLED = 4 + HTS_NORMAL = 1, + HTS_HOT = 2, + HTS_PUSHED = 3, + HTS_DISABLED = 4 } enum { - MAXBS_NORMAL = 1, - MAXBS_HOT = 2, - MAXBS_PUSHED = 3, - MAXBS_DISABLED = 4 + MAXBS_NORMAL = 1, + MAXBS_HOT = 2, + MAXBS_PUSHED = 3, + MAXBS_DISABLED = 4 } enum { - MXCS_ACTIVE = 1, - MXCS_INACTIVE = 2, - MXCS_DISABLED = 3 + MXCS_ACTIVE = 1, + MXCS_INACTIVE = 2, + MXCS_DISABLED = 3 } enum { - MINBS_NORMAL = 1, - MINBS_HOT = 2, - MINBS_PUSHED = 3, - MINBS_DISABLED = 4 + MINBS_NORMAL = 1, + MINBS_HOT = 2, + MINBS_PUSHED = 3, + MINBS_DISABLED = 4 } enum { - RBS_NORMAL = 1, - RBS_HOT = 2, - RBS_PUSHED = 3, - RBS_DISABLED = 4 + RBS_NORMAL = 1, + RBS_HOT = 2, + RBS_PUSHED = 3, + RBS_DISABLED = 4 } enum { - SBS_NORMAL = 1, - SBS_HOT = 2, - SBS_PUSHED = 3, - SBS_DISABLED = 4 + SBS_NORMAL = 1, + SBS_HOT = 2, + SBS_PUSHED = 3, + SBS_DISABLED = 4 } enum { - MNCS_ACTIVE = 1, - MNCS_INACTIVE = 2, - MNCS_DISABLED = 3 + MNCS_ACTIVE = 1, + MNCS_INACTIVE = 2, + MNCS_DISABLED = 3 } enum { - VSS_NORMAL = 1, - VSS_HOT = 2, - VSS_PUSHED = 3, - VSS_DISABLED = 4 + VSS_NORMAL = 1, + VSS_HOT = 2, + VSS_PUSHED = 3, + VSS_DISABLED = 4 } enum { - VTS_NORMAL = 1, - VTS_HOT = 2, - VTS_PUSHED = 3, - VTS_DISABLED = 4 + VTS_NORMAL = 1, + VTS_HOT = 2, + VTS_PUSHED = 3, + VTS_DISABLED = 4 } diff --git a/src/core/sys/windows/unknwn.d b/src/core/sys/windows/unknwn.d index 6147637d0a..e9ce64310c 100644 --- a/src/core/sys/windows/unknwn.d +++ b/src/core/sys/windows/unknwn.d @@ -12,43 +12,43 @@ import core.sys.windows.objfwd, core.sys.windows.windef, core.sys.windows.wtypes private import core.sys.windows.basetyps; extern (Windows) { - void* MIDL_user_allocate(size_t); - void MIDL_user_free(void*); + void* MIDL_user_allocate(size_t); + void MIDL_user_free(void*); } extern (Windows) { - interface IUnknown { - HRESULT QueryInterface(IID* riid, void** pvObject); - ULONG AddRef(); - ULONG Release(); - } - - alias IUnknown LPUNKNOWN; - - interface IClassFactory : IUnknown { - HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject); - HRESULT LockServer(BOOL fLock); - } - alias IClassFactory LPCLASSFACTORY; - - /+ - // These do not seem to be necessary (or desirable) for D. - HRESULT IUnknown_QueryInterface_Proxy(IUnknown,REFIID,void**); - ULONG IUnknown_AddRef_Proxy(IUnknown); - ULONG IUnknown_Release_Proxy(IUnknown); - HRESULT IClassFactory_RemoteCreateInstance_Proxy(IClassFactory,REFIID,IUnknown*); - HRESULT IClassFactory_RemoteLockServer_Proxy(IClassFactory,BOOL); - HRESULT IClassFactory_CreateInstance_Proxy(IClassFactory,IUnknown,REFIID,void**); - HRESULT IClassFactory_CreateInstance_Stub(IClassFactory,REFIID,IUnknown*); - HRESULT IClassFactory_LockServer_Proxy(IClassFactory,BOOL); - HRESULT IClassFactory_LockServer_Stub(IClassFactory,BOOL); - - void IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - +/ + interface IUnknown { + HRESULT QueryInterface(IID* riid, void** pvObject); + ULONG AddRef(); + ULONG Release(); + } + + alias IUnknown LPUNKNOWN; + + interface IClassFactory : IUnknown { + HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject); + HRESULT LockServer(BOOL fLock); + } + alias IClassFactory LPCLASSFACTORY; + + /+ + // These do not seem to be necessary (or desirable) for D. + HRESULT IUnknown_QueryInterface_Proxy(IUnknown,REFIID,void**); + ULONG IUnknown_AddRef_Proxy(IUnknown); + ULONG IUnknown_Release_Proxy(IUnknown); + HRESULT IClassFactory_RemoteCreateInstance_Proxy(IClassFactory,REFIID,IUnknown*); + HRESULT IClassFactory_RemoteLockServer_Proxy(IClassFactory,BOOL); + HRESULT IClassFactory_CreateInstance_Proxy(IClassFactory,IUnknown,REFIID,void**); + HRESULT IClassFactory_CreateInstance_Stub(IClassFactory,REFIID,IUnknown*); + HRESULT IClassFactory_LockServer_Proxy(IClassFactory,BOOL); + HRESULT IClassFactory_LockServer_Stub(IClassFactory,BOOL); + + void IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + +/ } diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index faadc1ff14..6cb11c2651 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -11,22 +11,22 @@ module core.sys.windows.vfw; pragma(lib, "vfw32"); private import - core.sys.windows.commdlg, - core.sys.windows.wingdi, - core.sys.windows.mmsystem, - core.sys.windows.unknwn, - core.sys.windows.w32api, - core.sys.windows.windef, - core.sys.windows.winuser; + core.sys.windows.commdlg, + core.sys.windows.wingdi, + core.sys.windows.mmsystem, + core.sys.windows.unknwn, + core.sys.windows.w32api, + core.sys.windows.windef, + core.sys.windows.winuser; extern(Windows) { - DWORD VideoForWindowsVersion(); - LONG InitVFW(); - LONG TermVFW(); + DWORD VideoForWindowsVersion(); + LONG InitVFW(); + LONG TermVFW(); } DWORD MKFOURCC(char ch0, char ch1, char ch2, char ch3) { - return (cast(DWORD)ch0) | ((cast(DWORD)ch1) << 8) | ((cast(DWORD)ch2) << 16) | ((cast(DWORD)ch3) << 24); + return (cast(DWORD)ch0) | ((cast(DWORD)ch1) << 8) | ((cast(DWORD)ch2) << 16) | ((cast(DWORD)ch3) << 24); } /** @@ -40,18 +40,18 @@ alias TypeDef!(HANDLE) HIC; const BI_1632 = 0x32333631; template aviTWOCC(char c0, char c1) { - const WORD aviTWOCC = c0 | (c1 << 8); + const WORD aviTWOCC = c0 | (c1 << 8); } const ICTYPE_VIDEO = mmioFOURCC!('v', 'i', 'd', 'c'); const ICTYPE_AUDIO = mmioFOURCC!('a', 'u', 'd', 'c'); enum { - ICERR_OK = 0, - ICERR_DONTDRAW = 1, - ICERR_NEWPALETTE = 2, - ICERR_GOTOKEYFRAME = 3, - ICERR_STOPDRAWING = 4, + ICERR_OK = 0, + ICERR_DONTDRAW = 1, + ICERR_NEWPALETTE = 2, + ICERR_GOTOKEYFRAME = 3, + ICERR_STOPDRAWING = 4, } const ICERR_UNSUPPORTED = -1; @@ -71,21 +71,21 @@ const ICERR_BADIMAGESIZE = -201; const ICERR_CUSTOM = -400; enum { - ICMODE_COMPRESS = 1, - ICMODE_DECOMPRESS, - ICMODE_FASTDECOMPRESS, - ICMODE_QUERY, - ICMODE_FASTCOMPRESS, - ICMODE_DRAW = 8, + ICMODE_COMPRESS = 1, + ICMODE_DECOMPRESS, + ICMODE_FASTDECOMPRESS, + ICMODE_QUERY, + ICMODE_FASTCOMPRESS, + ICMODE_DRAW = 8, } const ICMODE_INTERNALF_FUNCTION32 = 0x8000; const ICMODE_INTERNALF_MASK = 0x8000; enum { - AVIIF_LIST = 0x00000001, - AVIIF_TWOCC = 0x00000002, - AVIIF_KEYFRAME = 0x00000010, + AVIIF_LIST = 0x00000001, + AVIIF_TWOCC = 0x00000002, + AVIIF_KEYFRAME = 0x00000010, } const ICQUALITY_LOW = 0; @@ -93,28 +93,28 @@ const ICQUALITY_HIGH = 10000; const ICQUALITY_DEFAULT = -1; enum { - ICM_USER = DRV_USER + 0x0000, - ICM_RESERVED_LOW = DRV_USER + 0x1000, - ICM_RESERVED_HIGH = DRV_USER + 0x2000, - ICM_RESERVED = ICM_RESERVED_LOW, + ICM_USER = DRV_USER + 0x0000, + ICM_RESERVED_LOW = DRV_USER + 0x1000, + ICM_RESERVED_HIGH = DRV_USER + 0x2000, + ICM_RESERVED = ICM_RESERVED_LOW, } // messages enum { - ICM_GETSTATE = ICM_RESERVED + 0, - ICM_SETSTATE = ICM_RESERVED + 1, - ICM_GETINFO = ICM_RESERVED + 2, - ICM_CONFIGURE = ICM_RESERVED + 10, - ICM_ABOUT = ICM_RESERVED + 11, - ICM_GETERRORTEXT = ICM_RESERVED + 12, - ICM_GETFORMATNAME = ICM_RESERVED + 20, - ICM_ENUMFORMATS = ICM_RESERVED + 21, - ICM_GETDEFAULTQUALITY = ICM_RESERVED + 30, - ICM_GETQUALITY = ICM_RESERVED + 31, - ICM_SETQUALITY = ICM_RESERVED + 32, - ICM_SET = ICM_RESERVED + 40, - ICM_GET = ICM_RESERVED + 41, + ICM_GETSTATE = ICM_RESERVED + 0, + ICM_SETSTATE = ICM_RESERVED + 1, + ICM_GETINFO = ICM_RESERVED + 2, + ICM_CONFIGURE = ICM_RESERVED + 10, + ICM_ABOUT = ICM_RESERVED + 11, + ICM_GETERRORTEXT = ICM_RESERVED + 12, + ICM_GETFORMATNAME = ICM_RESERVED + 20, + ICM_ENUMFORMATS = ICM_RESERVED + 21, + ICM_GETDEFAULTQUALITY = ICM_RESERVED + 30, + ICM_GETQUALITY = ICM_RESERVED + 31, + ICM_SETQUALITY = ICM_RESERVED + 32, + ICM_SET = ICM_RESERVED + 40, + ICM_GET = ICM_RESERVED + 41, } const ICM_FRAMERATE = mmioFOURCC!('F','r','m','R'); @@ -123,230 +123,230 @@ const ICM_KEYFRAMERATE = mmioFOURCC!('K','e','y','R'); // ICM specific messages. enum { - ICM_COMPRESS_GET_FORMAT = ICM_USER + 4, - ICM_COMPRESS_GET_SIZE = ICM_USER + 5, - ICM_COMPRESS_QUERY = ICM_USER + 6, - ICM_COMPRESS_BEGIN = ICM_USER + 7, - ICM_COMPRESS = ICM_USER + 8, - ICM_COMPRESS_END = ICM_USER + 9, - ICM_DECOMPRESS_GET_FORMAT = ICM_USER + 10, - ICM_DECOMPRESS_QUERY = ICM_USER + 11, - ICM_DECOMPRESS_BEGIN = ICM_USER + 12, - ICM_DECOMPRESS = ICM_USER + 13, - ICM_DECOMPRESS_END = ICM_USER + 14, - ICM_DECOMPRESS_SET_PALETTE = ICM_USER + 29, - ICM_DECOMPRESS_GET_PALETTE = ICM_USER + 30, - ICM_DRAW_QUERY = ICM_USER + 31, - ICM_DRAW_BEGIN = ICM_USER + 15, - ICM_DRAW_GET_PALETTE = ICM_USER + 16, - ICM_DRAW_UPDATE = ICM_USER + 17, - ICM_DRAW_START = ICM_USER + 18, - ICM_DRAW_STOP = ICM_USER + 19, - ICM_DRAW_BITS = ICM_USER + 20, - ICM_DRAW_END = ICM_USER + 21, - ICM_DRAW_GETTIME = ICM_USER + 32, - ICM_DRAW = ICM_USER + 33, - ICM_DRAW_WINDOW = ICM_USER + 34, - ICM_DRAW_SETTIME = ICM_USER + 35, - ICM_DRAW_REALIZE = ICM_USER + 36, - ICM_DRAW_FLUSH = ICM_USER + 37, - ICM_DRAW_RENDERBUFFER = ICM_USER + 38, - ICM_DRAW_START_PLAY = ICM_USER + 39, - ICM_DRAW_STOP_PLAY = ICM_USER + 40, - ICM_DRAW_SUGGESTFORMAT = ICM_USER + 50, - ICM_DRAW_CHANGEPALETTE = ICM_USER + 51, - ICM_DRAW_IDLE = ICM_USER + 52, - ICM_GETBUFFERSWANTED = ICM_USER + 41, - ICM_GETDEFAULTKEYFRAMERATE = ICM_USER + 42, - ICM_DECOMPRESSEX_BEGIN = ICM_USER + 60, - ICM_DECOMPRESSEX_QUERY = ICM_USER + 61, - ICM_DECOMPRESSEX = ICM_USER + 62, - ICM_DECOMPRESSEX_END = ICM_USER + 63, - ICM_COMPRESS_FRAMES_INFO = ICM_USER + 70, - ICM_COMPRESS_FRAMES = ICM_USER + 71, - ICM_SET_STATUS_PROC = ICM_USER + 72, + ICM_COMPRESS_GET_FORMAT = ICM_USER + 4, + ICM_COMPRESS_GET_SIZE = ICM_USER + 5, + ICM_COMPRESS_QUERY = ICM_USER + 6, + ICM_COMPRESS_BEGIN = ICM_USER + 7, + ICM_COMPRESS = ICM_USER + 8, + ICM_COMPRESS_END = ICM_USER + 9, + ICM_DECOMPRESS_GET_FORMAT = ICM_USER + 10, + ICM_DECOMPRESS_QUERY = ICM_USER + 11, + ICM_DECOMPRESS_BEGIN = ICM_USER + 12, + ICM_DECOMPRESS = ICM_USER + 13, + ICM_DECOMPRESS_END = ICM_USER + 14, + ICM_DECOMPRESS_SET_PALETTE = ICM_USER + 29, + ICM_DECOMPRESS_GET_PALETTE = ICM_USER + 30, + ICM_DRAW_QUERY = ICM_USER + 31, + ICM_DRAW_BEGIN = ICM_USER + 15, + ICM_DRAW_GET_PALETTE = ICM_USER + 16, + ICM_DRAW_UPDATE = ICM_USER + 17, + ICM_DRAW_START = ICM_USER + 18, + ICM_DRAW_STOP = ICM_USER + 19, + ICM_DRAW_BITS = ICM_USER + 20, + ICM_DRAW_END = ICM_USER + 21, + ICM_DRAW_GETTIME = ICM_USER + 32, + ICM_DRAW = ICM_USER + 33, + ICM_DRAW_WINDOW = ICM_USER + 34, + ICM_DRAW_SETTIME = ICM_USER + 35, + ICM_DRAW_REALIZE = ICM_USER + 36, + ICM_DRAW_FLUSH = ICM_USER + 37, + ICM_DRAW_RENDERBUFFER = ICM_USER + 38, + ICM_DRAW_START_PLAY = ICM_USER + 39, + ICM_DRAW_STOP_PLAY = ICM_USER + 40, + ICM_DRAW_SUGGESTFORMAT = ICM_USER + 50, + ICM_DRAW_CHANGEPALETTE = ICM_USER + 51, + ICM_DRAW_IDLE = ICM_USER + 52, + ICM_GETBUFFERSWANTED = ICM_USER + 41, + ICM_GETDEFAULTKEYFRAMERATE = ICM_USER + 42, + ICM_DECOMPRESSEX_BEGIN = ICM_USER + 60, + ICM_DECOMPRESSEX_QUERY = ICM_USER + 61, + ICM_DECOMPRESSEX = ICM_USER + 62, + ICM_DECOMPRESSEX_END = ICM_USER + 63, + ICM_COMPRESS_FRAMES_INFO = ICM_USER + 70, + ICM_COMPRESS_FRAMES = ICM_USER + 71, + ICM_SET_STATUS_PROC = ICM_USER + 72, } struct ICOPEN { - DWORD dwSize; - DWORD fccType; - DWORD fccHandler; - DWORD dwVersion; - DWORD dwFlags; - LRESULT dwError; - LPVOID pV1Reserved; - LPVOID pV2Reserved; - DWORD dnDevNode; + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwVersion; + DWORD dwFlags; + LRESULT dwError; + LPVOID pV1Reserved; + LPVOID pV2Reserved; + DWORD dnDevNode; } struct ICINFO { - DWORD dwSize; - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwVersion; - DWORD dwVersionICM; - WCHAR[16] szName; - WCHAR[128] szDescription; - WCHAR[128] szDriver; + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwVersion; + DWORD dwVersionICM; + WCHAR[16] szName; + WCHAR[128] szDescription; + WCHAR[128] szDriver; } enum { - VIDCF_QUALITY = 0x0001, - VIDCF_CRUNCH = 0x0002, - VIDCF_TEMPORAL = 0x0004, - VIDCF_COMPRESSFRAMES = 0x0008, - VIDCF_DRAW = 0x0010, - VIDCF_FASTTEMPORALC = 0x0020, - VIDCF_FASTTEMPORALD = 0x0080, + VIDCF_QUALITY = 0x0001, + VIDCF_CRUNCH = 0x0002, + VIDCF_TEMPORAL = 0x0004, + VIDCF_COMPRESSFRAMES = 0x0008, + VIDCF_DRAW = 0x0010, + VIDCF_FASTTEMPORALC = 0x0020, + VIDCF_FASTTEMPORALD = 0x0080, } const ICCOMPRESS_KEYFRAME = 0x00000001L; struct ICCOMPRESS { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiOutput; - LPVOID lpOutput; - LPBITMAPINFOHEADER lpbiInput; - LPVOID lpInput; - LPDWORD lpckid; - LPDWORD lpdwFlags; - LONG lFrameNum; - DWORD dwFrameSize; - DWORD dwQuality; - LPBITMAPINFOHEADER lpbiPrev; - LPVOID lpPrev; + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPDWORD lpckid; + LPDWORD lpdwFlags; + LONG lFrameNum; + DWORD dwFrameSize; + DWORD dwQuality; + LPBITMAPINFOHEADER lpbiPrev; + LPVOID lpPrev; } const ICCOMPRESSFRAMES_PADDING = 0x00000001; struct ICCOMPRESSFRAMES { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiOutput; - LPARAM lOutput; - LPBITMAPINFOHEADER lpbiInput; - LPARAM lInput; - LONG lStartFrame; - LONG lFrameCount; - LONG lQuality; - LONG lDataRate; - LONG lKeyRate; - DWORD dwRate; - DWORD dwScale; DWORD dwOverheadPerFrame; - DWORD dwReserved2; - - LONG function(LPARAM lInput, LONG lFrame, LPVOID lpBits, LONG len) GetData; - LONG function(LPARAM lOutput, LONG lFrame, LPVOID lpBits, LONG len) PutData; + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPARAM lOutput; + LPBITMAPINFOHEADER lpbiInput; + LPARAM lInput; + LONG lStartFrame; + LONG lFrameCount; + LONG lQuality; + LONG lDataRate; + LONG lKeyRate; + DWORD dwRate; + DWORD dwScale; DWORD dwOverheadPerFrame; + DWORD dwReserved2; + + LONG function(LPARAM lInput, LONG lFrame, LPVOID lpBits, LONG len) GetData; + LONG function(LPARAM lOutput, LONG lFrame, LPVOID lpBits, LONG len) PutData; } enum { - ICSTATUS_START = 0, - ICSTATUS_STATUS = 1, - ICSTATUS_END = 2, - ICSTATUS_ERROR = 3, - ICSTATUS_YIELD = 4, + ICSTATUS_START = 0, + ICSTATUS_STATUS = 1, + ICSTATUS_END = 2, + ICSTATUS_ERROR = 3, + ICSTATUS_YIELD = 4, } struct ICSETSTATUSPROC { - DWORD dwFlags; - LPARAM lParam; - LONG function(LPARAM lParam, UINT message, LONG l) Status; + DWORD dwFlags; + LPARAM lParam; + LONG function(LPARAM lParam, UINT message, LONG l) Status; } enum { - ICDECOMPRESS_NOTKEYFRAME = 0x08000000, - ICDECOMPRESS_NULLFRAME = 0x10000000, - ICDECOMPRESS_PREROLL = 0x20000000, - ICDECOMPRESS_UPDATE = 0x40000000, - ICDECOMPRESS_HURRYUP = 0x80000000, + ICDECOMPRESS_NOTKEYFRAME = 0x08000000, + ICDECOMPRESS_NULLFRAME = 0x10000000, + ICDECOMPRESS_PREROLL = 0x20000000, + ICDECOMPRESS_UPDATE = 0x40000000, + ICDECOMPRESS_HURRYUP = 0x80000000, } struct ICDECOMPRESS { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiInput; - LPVOID lpInput; - LPBITMAPINFOHEADER lpbiOutput; - LPVOID lpOutput; - DWORD ckid; + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + DWORD ckid; } struct ICDECOMPRESSEX { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiSrc; - LPVOID lpSrc; - LPBITMAPINFOHEADER lpbiDst; - LPVOID lpDst; - int xDst; - int yDst; - int dxDst; - int dyDst; - int xSrc; - int ySrc; - int dxSrc; - int dySrc; + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiSrc; + LPVOID lpSrc; + LPBITMAPINFOHEADER lpbiDst; + LPVOID lpDst; + int xDst; + int yDst; + int dxDst; + int dyDst; + int xSrc; + int ySrc; + int dxSrc; + int dySrc; } enum { - ICDRAW_QUERY = 0x00000001, - ICDRAW_FULLSCREEN = 0x00000002, - ICDRAW_HDC = 0x00000004, - ICDRAW_ANIMATE = 0x00000008, - ICDRAW_CONTINUE = 0x00000010, - ICDRAW_MEMORYDC = 0x00000020, - ICDRAW_UPDATING = 0x00000040, - ICDRAW_RENDER = 0x00000080, - ICDRAW_BUFFER = 0x00000100, + ICDRAW_QUERY = 0x00000001, + ICDRAW_FULLSCREEN = 0x00000002, + ICDRAW_HDC = 0x00000004, + ICDRAW_ANIMATE = 0x00000008, + ICDRAW_CONTINUE = 0x00000010, + ICDRAW_MEMORYDC = 0x00000020, + ICDRAW_UPDATING = 0x00000040, + ICDRAW_RENDER = 0x00000080, + ICDRAW_BUFFER = 0x00000100, } struct ICDRAWBEGIN { - DWORD dwFlags; - HPALETTE hpal; - HWND hwnd; - HDC hdc; - int xDst; - int yDst; - int dxDst; - int dyDst; - LPBITMAPINFOHEADER lpbi; - int xSrc; - int ySrc; - int dxSrc; - int dySrc; - DWORD dwRate; - DWORD dwScale; + DWORD dwFlags; + HPALETTE hpal; + HWND hwnd; + HDC hdc; + int xDst; + int yDst; + int dxDst; + int dyDst; + LPBITMAPINFOHEADER lpbi; + int xSrc; + int ySrc; + int dxSrc; + int dySrc; + DWORD dwRate; + DWORD dwScale; } enum { - ICDRAW_NOTKEYFRAME = 0x08000000, - ICDRAW_NULLFRAME = 0x10000000, - ICDRAW_PREROLL = 0x20000000, - ICDRAW_UPDATE = 0x40000000, - ICDRAW_HURRYUP = 0x80000000, + ICDRAW_NOTKEYFRAME = 0x08000000, + ICDRAW_NULLFRAME = 0x10000000, + ICDRAW_PREROLL = 0x20000000, + ICDRAW_UPDATE = 0x40000000, + ICDRAW_HURRYUP = 0x80000000, } struct ICDRAW { - DWORD dwFlags; - LPVOID lpFormat; - LPVOID lpData; - DWORD cbData; - LONG lTime; + DWORD dwFlags; + LPVOID lpFormat; + LPVOID lpData; + DWORD cbData; + LONG lTime; } struct ICDRAWSUGGEST { - LPBITMAPINFOHEADER lpbiIn; - LPBITMAPINFOHEADER lpbiSuggest; - int dxSrc; - int dySrc; - int dxDst; - int dyDst; - HIC hicDecompressor; + LPBITMAPINFOHEADER lpbiIn; + LPBITMAPINFOHEADER lpbiSuggest; + int dxSrc; + int dySrc; + int dxDst; + int dyDst; + HIC hicDecompressor; } struct ICPALETTE { - DWORD dwFlags; - int iStart; - int iLen; - LPPALETTEENTRY lppe; + DWORD dwFlags; + int iStart; + int iLen; + LPPALETTEENTRY lppe; } @@ -355,22 +355,22 @@ struct ICPALETTE { */ extern (Windows) { - BOOL ICInfo(DWORD fccType, DWORD fccHandler, ICINFO *lpicinfo); - BOOL ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags); - BOOL ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags); - LRESULT ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb); - HIC ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode); - HIC ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler); - LRESULT ICClose(HIC hic); - LRESULT ICSendMessage(HIC hic, UINT msg, DWORD_PTR dw1, DWORD_PTR dw2); + BOOL ICInfo(DWORD fccType, DWORD fccHandler, ICINFO *lpicinfo); + BOOL ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags); + BOOL ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags); + LRESULT ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb); + HIC ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode); + HIC ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler); + LRESULT ICClose(HIC hic); + LRESULT ICSendMessage(HIC hic, UINT msg, DWORD_PTR dw1, DWORD_PTR dw2); } enum { - ICINSTALL_FUNCTION = 0x0001, - ICINSTALL_DRIVER = 0x0002, - ICINSTALL_HDRV = 0x0004, - ICINSTALL_UNICODE = 0x8000, - ICINSTALL_DRIVERW = 0x8002, + ICINSTALL_FUNCTION = 0x0001, + ICINSTALL_DRIVER = 0x0002, + ICINSTALL_HDRV = 0x0004, + ICINSTALL_UNICODE = 0x8000, + ICINSTALL_DRIVERW = 0x8002, } // query macros @@ -379,345 +379,345 @@ const ICMF_CONFIGURE_QUERY = 0x00000001; const ICMF_ABOUT_QUERY = 0x00000001; DWORD ICQueryAbout(HIC hic) { - return ICSendMessage(hic, ICM_ABOUT, -1, ICMF_ABOUT_QUERY) == ICERR_OK; + return ICSendMessage(hic, ICM_ABOUT, -1, ICMF_ABOUT_QUERY) == ICERR_OK; } DWORD ICAbout(HIC hic, HWND hwnd) { - return cast(DWORD) ICSendMessage(hic, ICM_ABOUT, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); + return cast(DWORD) ICSendMessage(hic, ICM_ABOUT, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); } DWORD ICQueryConfigure(HIC hic) { - return (ICSendMessage(hic, ICM_CONFIGURE, -1, ICMF_CONFIGURE_QUERY) == ICERR_OK); + return (ICSendMessage(hic, ICM_CONFIGURE, -1, ICMF_CONFIGURE_QUERY) == ICERR_OK); } DWORD ICConfigure(HIC hic, HWND hwnd) { - return cast(DWORD) ICSendMessage(hic, ICM_CONFIGURE, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); + return cast(DWORD) ICSendMessage(hic, ICM_CONFIGURE, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); } DWORD ICGetState(HIC hic, LPVOID pv, DWORD_PTR cb) { - return cast(DWORD) ICSendMessage(hic, ICM_GETSTATE, cast(DWORD_PTR) pv, cb); + return cast(DWORD) ICSendMessage(hic, ICM_GETSTATE, cast(DWORD_PTR) pv, cb); } DWORD ICSetState(HIC hic, LPVOID pv, DWORD_PTR cb) { - return cast(DWORD) ICSendMessage(hic, ICM_SETSTATE, cast(DWORD_PTR) pv, cb); + return cast(DWORD) ICSendMessage(hic, ICM_SETSTATE, cast(DWORD_PTR) pv, cb); } DWORD ICGetStateSize(HIC hic) { - return ICGetState(hic, null, 0); + return ICGetState(hic, null, 0); } DWORD dwICValue; DWORD ICGetDefaultQuality(HIC hic) { - ICSendMessage(hic, ICM_GETDEFAULTQUALITY, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); - return dwICValue; + ICSendMessage(hic, ICM_GETDEFAULTQUALITY, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); + return dwICValue; } DWORD ICGetDefaultKeyFrameRate(HIC hic) { - ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); - return dwICValue; + ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); + return dwICValue; } DWORD ICDrawWindow(HIC hic, LPVOID prc) { - return cast(DWORD) ICSendMessage(hic, ICM_DRAW_WINDOW, cast(DWORD_PTR) prc, RECT.sizeof); + return cast(DWORD) ICSendMessage(hic, ICM_DRAW_WINDOW, cast(DWORD_PTR) prc, RECT.sizeof); } extern (Windows) { - DWORD ICCompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiOutput, LPVOID lpData, - LPBITMAPINFOHEADER lpbiInput, LPVOID lpBits, LPDWORD lpckid, LPDWORD lpdwFlags, - LONG lFrameNum, DWORD dwFrameSize, DWORD dwQuality, LPBITMAPINFOHEADER lpbiPrev, LPVOID lpPrev); + DWORD ICCompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiOutput, LPVOID lpData, + LPBITMAPINFOHEADER lpbiInput, LPVOID lpBits, LPDWORD lpckid, LPDWORD lpdwFlags, + LONG lFrameNum, DWORD dwFrameSize, DWORD dwQuality, LPBITMAPINFOHEADER lpbiPrev, LPVOID lpPrev); } LRESULT ICCompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_COMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); + return ICSendMessage(hic, ICM_COMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); } LRESULT ICCompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_COMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); + return ICSendMessage(hic, ICM_COMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); } LRESULT ICCompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); + return ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); } DWORD ICCompressGetFormatSize(HIC hic, LPVOID lpbi) { - return cast(DWORD)ICCompressGetFormat(hic, lpbi, null); + return cast(DWORD)ICCompressGetFormat(hic, lpbi, null); } DWORD ICCompressGetSize(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return cast(DWORD)ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); + return cast(DWORD)ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); } LRESULT ICCompressEnd(HIC hic) { - return ICSendMessage(hic, ICM_COMPRESS_END, 0, 0); + return ICSendMessage(hic, ICM_COMPRESS_END, 0, 0); } extern (Windows) { - DWORD ICDecompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiFormat, LPVOID lpData, LPBITMAPINFOHEADER lpbi, LPVOID lpBits); + DWORD ICDecompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiFormat, LPVOID lpData, LPBITMAPINFOHEADER lpbi, LPVOID lpBits); } LRESULT ICDecompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); + return ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); } LRESULT ICDecompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_DECOMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); + return ICSendMessage(hic, ICM_DECOMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); } LONG ICDecompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return cast(LONG)ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); + return cast(LONG)ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); } LONG ICDecompressGetFormatSize(HIC hic, LPVOID lpbi) { - return ICDecompressGetFormat(hic, lpbi, null); + return ICDecompressGetFormat(hic, lpbi, null); } LRESULT ICDecompressGetPalette(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); + return ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); } LRESULT ICDecompressSetPalette(HIC hic, LPVOID lpbiPalette) { - return ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, cast(DWORD_PTR)lpbiPalette, 0); + return ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, cast(DWORD_PTR)lpbiPalette, 0); } LRESULT ICDecompressEnd(HIC hic) { - return ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0); + return ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0); } LRESULT ICDecompressEx(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, - LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, - LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { - ICDECOMPRESSEX ic; - - ic.dwFlags = dwFlags; - ic.lpbiSrc = lpbiSrc; - ic.lpSrc = lpSrc; - ic.xSrc = xSrc; - ic.ySrc = ySrc; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.lpbiDst = lpbiDst; - ic.lpDst = lpDst; - ic.xDst = xDst; - ic.yDst = yDst; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - - return ICSendMessage(hic, ICM_DECOMPRESSEX, cast(DWORD_PTR)&ic, ic.sizeof); + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX, cast(DWORD_PTR)&ic, ic.sizeof); } LRESULT ICDecompressExBegin(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, - LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, - LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { - ICDECOMPRESSEX ic; - - ic.dwFlags = dwFlags; - ic.lpbiSrc = lpbiSrc; - ic.lpSrc = lpSrc; - ic.xSrc = xSrc; - ic.ySrc = ySrc; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.lpbiDst = lpbiDst; - ic.lpDst = lpDst; - ic.xDst = xDst; - ic.yDst = yDst; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - - return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, cast(DWORD_PTR)&ic, ic.sizeof); + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, cast(DWORD_PTR)&ic, ic.sizeof); } LRESULT ICDecompressExQuery(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, - LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, - LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { - ICDECOMPRESSEX ic; - - ic.dwFlags = dwFlags; - ic.lpbiSrc = lpbiSrc; - ic.lpSrc = lpSrc; - ic.xSrc = xSrc; - ic.ySrc = ySrc; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.lpbiDst = lpbiDst; - ic.lpDst = lpDst; - ic.xDst = xDst; - ic.yDst = yDst; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - - return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, cast(DWORD_PTR)&ic, ic.sizeof); + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, cast(DWORD_PTR)&ic, ic.sizeof); } LRESULT ICDecompressExEnd(HIC hic) { - return ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0); + return ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0); } extern (Windows) { - DWORD ICDrawBegin(HIC hic, DWORD dwFlags, HPALETTE hpal, HWND hwnd, HDC hdc, - int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, - int xSrc, int ySrc, int dxSrc, int dySrc, DWORD dwRate, DWORD dwScale); + DWORD ICDrawBegin(HIC hic, DWORD dwFlags, HPALETTE hpal, HWND hwnd, HDC hdc, + int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, + int xSrc, int ySrc, int dxSrc, int dySrc, DWORD dwRate, DWORD dwScale); } extern (Windows) { - DWORD ICDraw(HIC hic, DWORD dwFlags, LPVOID lpFormat, LPVOID lpData, DWORD cbData, LONG lTime); + DWORD ICDraw(HIC hic, DWORD dwFlags, LPVOID lpFormat, LPVOID lpData, DWORD cbData, LONG lTime); } LRESULT ICDrawSuggestFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, - int dxSrc, int dySrc, int dxDst, int dyDst, HIC hicDecomp) { - ICDRAWSUGGEST ic; + int dxSrc, int dySrc, int dxDst, int dyDst, HIC hicDecomp) { + ICDRAWSUGGEST ic; - ic.lpbiIn = lpbiIn; - ic.lpbiSuggest = lpbiOut; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - ic.hicDecompressor = hicDecomp; + ic.lpbiIn = lpbiIn; + ic.lpbiSuggest = lpbiOut; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + ic.hicDecompressor = hicDecomp; - return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, cast(DWORD_PTR)&ic, ic.sizeof); + return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, cast(DWORD_PTR)&ic, ic.sizeof); } LRESULT ICDrawQuery(HIC hic, LPVOID lpbiInput) { - return ICSendMessage(hic, ICM_DRAW_QUERY, cast(DWORD_PTR)lpbiInput, 0L); + return ICSendMessage(hic, ICM_DRAW_QUERY, cast(DWORD_PTR)lpbiInput, 0L); } LRESULT ICDrawChangePalette(HIC hic, LPVOID lpbiInput) { - return ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, cast(DWORD_PTR)lpbiInput, 0L); + return ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, cast(DWORD_PTR)lpbiInput, 0L); } LRESULT ICGetBuffersWanted(HIC hic, LPVOID lpdwBuffers) { - return ICSendMessage(hic, ICM_GETBUFFERSWANTED, cast(DWORD_PTR)lpdwBuffers, 0); + return ICSendMessage(hic, ICM_GETBUFFERSWANTED, cast(DWORD_PTR)lpdwBuffers, 0); } LRESULT ICDrawEnd(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_END, 0, 0); + return ICSendMessage(hic, ICM_DRAW_END, 0, 0); } LRESULT ICDrawStart(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_START, 0, 0); + return ICSendMessage(hic, ICM_DRAW_START, 0, 0); } LRESULT ICDrawStartPlay(HIC hic, DWORD lFrom, DWORD lTo) { - return ICSendMessage(hic, ICM_DRAW_START_PLAY, cast(DWORD_PTR)lFrom, cast(DWORD_PTR)lTo); + return ICSendMessage(hic, ICM_DRAW_START_PLAY, cast(DWORD_PTR)lFrom, cast(DWORD_PTR)lTo); } LRESULT ICDrawStop(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_STOP, 0, 0); + return ICSendMessage(hic, ICM_DRAW_STOP, 0, 0); } LRESULT ICDrawStopPlay(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0); + return ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0); } LRESULT ICDrawGetTime(HIC hic, LPVOID lplTime) { - return ICSendMessage(hic, ICM_DRAW_GETTIME, cast(DWORD_PTR)lplTime, 0); + return ICSendMessage(hic, ICM_DRAW_GETTIME, cast(DWORD_PTR)lplTime, 0); } LRESULT ICDrawSetTime(HIC hic, DWORD lTime) { - return ICSendMessage(hic, ICM_DRAW_SETTIME, cast(DWORD_PTR)lTime, 0); + return ICSendMessage(hic, ICM_DRAW_SETTIME, cast(DWORD_PTR)lTime, 0); } LRESULT ICDrawRealize(HIC hic, HDC hdc, BOOL fBackground) { - return ICSendMessage(hic, ICM_DRAW_REALIZE, cast(DWORD_PTR)hdc, cast(DWORD_PTR)fBackground); + return ICSendMessage(hic, ICM_DRAW_REALIZE, cast(DWORD_PTR)hdc, cast(DWORD_PTR)fBackground); } LRESULT ICDrawFlush(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0); + return ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0); } LRESULT ICDrawRenderBuffer(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0); + return ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0); } LRESULT ICSetStatusProc(HIC hic, DWORD dwFlags, LRESULT lParam, LONG function(LPARAM, UINT, LONG) fpfnStatus) { - ICSETSTATUSPROC ic; + ICSETSTATUSPROC ic; - ic.dwFlags = dwFlags; - ic.lParam = lParam; - ic.Status = fpfnStatus; + ic.dwFlags = dwFlags; + ic.lParam = lParam; + ic.Status = fpfnStatus; - return ICSendMessage(hic, ICM_SET_STATUS_PROC, cast(DWORD_PTR)&ic, ic.sizeof); + return ICSendMessage(hic, ICM_SET_STATUS_PROC, cast(DWORD_PTR)&ic, ic.sizeof); } HIC ICDecompressOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut) { - return ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS); + return ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS); } HIC ICDrawOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn) { - return ICLocate(fccType, fccHandler, lpbiIn, null, ICMODE_DRAW); + return ICLocate(fccType, fccHandler, lpbiIn, null, ICMODE_DRAW); } extern (Windows) { - HIC ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags); - HIC ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy); - HANDLE ICImageCompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut, LONG lQuality, LONG* plSize); - HANDLE ICImageDecompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut); + HIC ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags); + HIC ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy); + HANDLE ICImageCompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut, LONG lQuality, LONG* plSize); + HANDLE ICImageDecompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut); } struct COMPVARS { - LONG cbSize = this.sizeof; - DWORD dwFlags; - HIC hic; - DWORD fccType; - DWORD fccHandler; - LPBITMAPINFO lpbiIn; - LPBITMAPINFO lpbiOut; - LPVOID lpBitsOut; - LPVOID lpBitsPrev; - LONG lFrame; - LONG lKey; - LONG lDataRate; - LONG lQ; - LONG lKeyCount; - LPVOID lpState; - LONG cbState; + LONG cbSize = this.sizeof; + DWORD dwFlags; + HIC hic; + DWORD fccType; + DWORD fccHandler; + LPBITMAPINFO lpbiIn; + LPBITMAPINFO lpbiOut; + LPVOID lpBitsOut; + LPVOID lpBitsPrev; + LONG lFrame; + LONG lKey; + LONG lDataRate; + LONG lQ; + LONG lKeyCount; + LPVOID lpState; + LONG cbState; } alias COMPVARS* PCOMPVARS; const ICMF_COMPVARS_VALID = 0x00000001; extern (Windows) { - BOOL ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData, PCOMPVARS pc, LPSTR lpszTitle); + BOOL ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData, PCOMPVARS pc, LPSTR lpszTitle); } enum { - ICMF_CHOOSE_KEYFRAME = 0x0001, - ICMF_CHOOSE_DATARATE = 0x0002, - ICMF_CHOOSE_PREVIEW = 0x0004, - ICMF_CHOOSE_ALLCOMPRESSORS = 0x0008, + ICMF_CHOOSE_KEYFRAME = 0x0001, + ICMF_CHOOSE_DATARATE = 0x0002, + ICMF_CHOOSE_PREVIEW = 0x0004, + ICMF_CHOOSE_ALLCOMPRESSORS = 0x0008, } extern (Windows) { - BOOL ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn); - void ICSeqCompressFrameEnd(PCOMPVARS pc); - LPVOID ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits, BOOL* pfKey, LONG* plSize); - void ICCompressorFree(PCOMPVARS pc); + BOOL ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn); + void ICSeqCompressFrameEnd(PCOMPVARS pc); + LPVOID ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits, BOOL* pfKey, LONG* plSize); + void ICCompressorFree(PCOMPVARS pc); } mixin DECLARE_HANDLE!("HDRAWDIB"); enum { - DDF_0001 = 0x0001, - DDF_UPDATE = 0x0002, - DDF_SAME_HDC = 0x0004, - DDF_SAME_DRAW = 0x0008, - DDF_DONTDRAW = 0x0010, - DDF_ANIMATE = 0x0020, - DDF_BUFFER = 0x0040, - DDF_JUSTDRAWIT = 0x0080, - DDF_FULLSCREEN = 0x0100, - DDF_BACKGROUNDPAL = 0x0200, - DDF_NOTKEYFRAME = 0x0400, - DDF_HURRYUP = 0x0800, - DDF_HALFTONE = 0x1000, - DDF_2000 = 0x2000, - DDF_PREROLL = DDF_DONTDRAW, - DDF_SAME_DIB = DDF_SAME_DRAW, - DDF_SAME_SIZE = DDF_SAME_DRAW, + DDF_0001 = 0x0001, + DDF_UPDATE = 0x0002, + DDF_SAME_HDC = 0x0004, + DDF_SAME_DRAW = 0x0008, + DDF_DONTDRAW = 0x0010, + DDF_ANIMATE = 0x0020, + DDF_BUFFER = 0x0040, + DDF_JUSTDRAWIT = 0x0080, + DDF_FULLSCREEN = 0x0100, + DDF_BACKGROUNDPAL = 0x0200, + DDF_NOTKEYFRAME = 0x0400, + DDF_HURRYUP = 0x0800, + DDF_HALFTONE = 0x1000, + DDF_2000 = 0x2000, + DDF_PREROLL = DDF_DONTDRAW, + DDF_SAME_DIB = DDF_SAME_DRAW, + DDF_SAME_SIZE = DDF_SAME_DRAW, } extern (Windows) { - BOOL DrawDibInit(); - HDRAWDIB DrawDibOpen(); - BOOL DrawDibClose(HDRAWDIB hdd); - LPVOID DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags); - UINT DrawDibError(HDRAWDIB hdd); - HPALETTE DrawDibGetPalette(HDRAWDIB hdd); - BOOL DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal); - BOOL DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe); - UINT DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground); - BOOL DrawDibStart(HDRAWDIB hdd, DWORD rate); - BOOL DrawDibStop(HDRAWDIB hdd); - BOOL DrawDibBegin(HDRAWDIB hdd, HDC hdc, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, int dxSrc, int dySrc, UINT wFlags); - BOOL DrawDibDraw(HDRAWDIB hdd, HDC hdc, int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, - LPVOID lpBits, int xSrc, int ySrc, int dxSrc, int dySrc, UINT wFlags); + BOOL DrawDibInit(); + HDRAWDIB DrawDibOpen(); + BOOL DrawDibClose(HDRAWDIB hdd); + LPVOID DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags); + UINT DrawDibError(HDRAWDIB hdd); + HPALETTE DrawDibGetPalette(HDRAWDIB hdd); + BOOL DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal); + BOOL DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe); + UINT DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground); + BOOL DrawDibStart(HDRAWDIB hdd, DWORD rate); + BOOL DrawDibStop(HDRAWDIB hdd); + BOOL DrawDibBegin(HDRAWDIB hdd, HDC hdc, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, int dxSrc, int dySrc, UINT wFlags); + BOOL DrawDibDraw(HDRAWDIB hdd, HDC hdc, int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, + LPVOID lpBits, int xSrc, int ySrc, int dxSrc, int dySrc, UINT wFlags); } BOOL DrawDibUpdate(HDRAWDIB hdd, HDC hdc, int x, int y) { - return DrawDibDraw(hdd, hdc, x, y, 0, 0, null, null, 0, 0, 0, 0, DDF_UPDATE); + return DrawDibDraw(hdd, hdc, x, y, 0, 0, null, null, 0, 0, 0, 0, DDF_UPDATE); } extern (Windows) { - BOOL DrawDibEnd(HDRAWDIB hdd); + BOOL DrawDibEnd(HDRAWDIB hdd); } struct DRAWDIBTIME { @@ -732,22 +732,22 @@ struct DRAWDIBTIME { alias DRAWDIBTIME* LPDRAWDIBTIME; extern (Windows) { - BOOL DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime); + BOOL DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime); } enum { - PD_CAN_DRAW_DIB = 0x0001, - PD_CAN_STRETCHDIB = 0x0002, - PD_STRETCHDIB_1_1_OK = 0x0004, - PD_STRETCHDIB_1_2_OK = 0x0008, - PD_STRETCHDIB_1_N_OK = 0x0010, + PD_CAN_DRAW_DIB = 0x0001, + PD_CAN_STRETCHDIB = 0x0002, + PD_STRETCHDIB_1_1_OK = 0x0004, + PD_STRETCHDIB_1_2_OK = 0x0008, + PD_STRETCHDIB_1_N_OK = 0x0010, } extern (Windows) { - LRESULT DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi); - void StretchDIB(LPBITMAPINFOHEADER biDst, LPVOID lpDst, int DstX, int DstY, - int DstXE, int DstYE, LPBITMAPINFOHEADER biSrc, LPVOID lpSrc, - int SrcX, int SrcY, int SrcXE, int SrcYE); + LRESULT DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi); + void StretchDIB(LPBITMAPINFOHEADER biDst, LPVOID lpDst, int DstX, int DstY, + int DstXE, int DstYE, LPBITMAPINFOHEADER biSrc, LPVOID lpSrc, + int SrcX, int SrcY, int SrcXE, int SrcYE); } alias DWORD FOURCC; @@ -778,47 +778,47 @@ const cktypeWAVEbytes = aviTWOCC!('w', 'b'); const ckidAVIPADDING = mmioFOURCC!('J', 'U', 'N', 'K'); DWORD FromHex(char n) { - return (n >= 'A') ? n + 10 - 'A' : n - '0'; + return (n >= 'A') ? n + 10 - 'A' : n - '0'; } WORD StreamFromFOURCC(DWORD fcc) { - return cast(WORD)((FromHex(LOBYTE(LOWORD(fcc))) << 4) + (FromHex(HIBYTE(LOWORD(fcc))))); + return cast(WORD)((FromHex(LOBYTE(LOWORD(fcc))) << 4) + (FromHex(HIBYTE(LOWORD(fcc))))); } WORD TWOCCFromFOURCC(DWORD fcc) { - return HIWORD(fcc); + return HIWORD(fcc); } BYTE ToHex(DWORD n) { - return cast(BYTE)((n > 9) ? n - 10 + 'A' : n + '0'); + return cast(BYTE)((n > 9) ? n - 10 + 'A' : n + '0'); } DWORD MAKEAVICKID(WORD tcc, WORD stream) { - return MAKELONG(cast(WORD)((ToHex(stream & 0x0f) << 8) | (ToHex((stream & 0xf0) >> 4))), tcc); + return MAKELONG(cast(WORD)((ToHex(stream & 0x0f) << 8) | (ToHex((stream & 0xf0) >> 4))), tcc); } enum { - AVIF_HASINDEX = 0x00000010, - AVIF_MUSTUSEINDEX = 0x00000020, - AVIF_ISINTERLEAVED = 0x00000100, - AVIF_WASCAPTUREFILE = 0x00010000, - AVIF_COPYRIGHTED = 0x00020000, + AVIF_HASINDEX = 0x00000010, + AVIF_MUSTUSEINDEX = 0x00000020, + AVIF_ISINTERLEAVED = 0x00000100, + AVIF_WASCAPTUREFILE = 0x00010000, + AVIF_COPYRIGHTED = 0x00020000, } const AVI_HEADERSIZE = 2048; struct MainAVIHeader { - DWORD dwMicroSecPerFrame; - DWORD dwMaxBytesPerSec; - DWORD dwPaddingGranularity; - DWORD dwFlags; - DWORD dwTotalFrames; - DWORD dwInitialFrames; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD[4] dwReserved; + DWORD dwMicroSecPerFrame; + DWORD dwMaxBytesPerSec; + DWORD dwPaddingGranularity; + DWORD dwFlags; + DWORD dwTotalFrames; + DWORD dwInitialFrames; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD[4] dwReserved; } const AVISF_DISABLED = 0x00000001; @@ -826,181 +826,181 @@ const AVISF_DISABLED = 0x00000001; const AVISF_VIDEO_PALCHANGES = 0x00010000; struct AVIStreamHeader { - FOURCC fccType; - FOURCC fccHandler; - DWORD dwFlags; - WORD wPriority; - WORD wLanguage; - DWORD dwInitialFrames; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; + FOURCC fccType; + FOURCC fccHandler; + DWORD dwFlags; + WORD wPriority; + WORD wLanguage; + DWORD dwInitialFrames; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; } enum { - AVIIF_FIRSTPART = 0x00000020L, - AVIIF_LASTPART = 0x00000040L, - AVIIF_MIDPART = (AVIIF_LASTPART|AVIIF_FIRSTPART), - AVIIF_NOTIME = 0x00000100L, - AVIIF_COMPUSE = 0x0FFF0000L, + AVIIF_FIRSTPART = 0x00000020L, + AVIIF_LASTPART = 0x00000040L, + AVIIF_MIDPART = (AVIIF_LASTPART|AVIIF_FIRSTPART), + AVIIF_NOTIME = 0x00000100L, + AVIIF_COMPUSE = 0x0FFF0000L, } struct AVIINDEXENTRY { - DWORD ckid; - DWORD dwFlags; - DWORD dwChunkOffset; - DWORD dwChunkLength; + DWORD ckid; + DWORD dwFlags; + DWORD dwChunkOffset; + DWORD dwChunkLength; } struct AVIPALCHANGE { - BYTE bFirstEntry; - BYTE bNumEntries; - WORD wFlags; - PALETTEENTRY[1] _peNew; - PALETTEENTRY* peNew() { return _peNew.ptr; } + BYTE bFirstEntry; + BYTE bNumEntries; + WORD wFlags; + PALETTEENTRY[1] _peNew; + PALETTEENTRY* peNew() { return _peNew.ptr; } } const AVIGETFRAMEF_BESTDISPLAYFMT = 1; struct AVISTREAMINFOW { - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwCaps; - WORD wPriority; - WORD wLanguage; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwInitialFrames; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; - DWORD dwEditCount; - DWORD dwFormatChangeCount; - WCHAR[64] szName; + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + WCHAR[64] szName; } alias AVISTREAMINFOW* LPAVISTREAMINFOW; struct AVISTREAMINFOA { - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwCaps; - WORD wPriority; - WORD wLanguage; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwInitialFrames; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; - DWORD dwEditCount; - DWORD dwFormatChangeCount; - char[64] szName; + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + char[64] szName; } alias AVISTREAMINFOA* LPAVISTREAMINFOA; version(Unicode) { - alias AVISTREAMINFOW AVISTREAMINFO; - alias LPAVISTREAMINFOW LPAVISTREAMINFO; + alias AVISTREAMINFOW AVISTREAMINFO; + alias LPAVISTREAMINFOW LPAVISTREAMINFO; } else { // Unicode - alias AVISTREAMINFOA AVISTREAMINFO; - alias LPAVISTREAMINFOA LPAVISTREAMINFO; + alias AVISTREAMINFOA AVISTREAMINFO; + alias LPAVISTREAMINFOA LPAVISTREAMINFO; } const AVISTREAMINFO_DISABLED = 0x00000001; const AVISTREAMINFO_FORMATCHANGES = 0x00010000; struct AVIFILEINFOW { - DWORD dwMaxBytesPerSec; - DWORD dwFlags; - DWORD dwCaps; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwScale; - DWORD dwRate; - DWORD dwLength; - DWORD dwEditCount; - WCHAR[64] szFileType; + DWORD dwMaxBytesPerSec; + DWORD dwFlags; + DWORD dwCaps; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwScale; + DWORD dwRate; + DWORD dwLength; + DWORD dwEditCount; + WCHAR[64] szFileType; } alias AVIFILEINFOW* LPAVIFILEINFOW; struct AVIFILEINFOA { - DWORD dwMaxBytesPerSec; - DWORD dwFlags; - DWORD dwCaps; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwScale; - DWORD dwRate; - DWORD dwLength; - DWORD dwEditCount; - char[64] szFileType; + DWORD dwMaxBytesPerSec; + DWORD dwFlags; + DWORD dwCaps; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwScale; + DWORD dwRate; + DWORD dwLength; + DWORD dwEditCount; + char[64] szFileType; } alias AVIFILEINFOA* LPAVIFILEINFOA; version(Unicode) { - alias AVIFILEINFOW AVIFILEINFO; - alias LPAVIFILEINFOW LPAVIFILEINFO; + alias AVIFILEINFOW AVIFILEINFO; + alias LPAVIFILEINFOW LPAVIFILEINFO; } else { // Unicode - alias AVIFILEINFOA AVIFILEINFO; - alias LPAVIFILEINFOA LPAVIFILEINFO; + alias AVIFILEINFOA AVIFILEINFO; + alias LPAVIFILEINFOA LPAVIFILEINFO; } enum { - AVIFILEINFO_HASINDEX = 0x00000010, - AVIFILEINFO_MUSTUSEINDEX = 0x00000020, - AVIFILEINFO_ISINTERLEAVED = 0x00000100, - AVIFILEINFO_WASCAPTUREFILE = 0x00010000, - AVIFILEINFO_COPYRIGHTED = 0x00020000, + AVIFILEINFO_HASINDEX = 0x00000010, + AVIFILEINFO_MUSTUSEINDEX = 0x00000020, + AVIFILEINFO_ISINTERLEAVED = 0x00000100, + AVIFILEINFO_WASCAPTUREFILE = 0x00010000, + AVIFILEINFO_COPYRIGHTED = 0x00020000, } enum { - AVIFILECAPS_CANREAD = 0x00000001, - AVIFILECAPS_CANWRITE = 0x00000002, - AVIFILECAPS_ALLKEYFRAMES = 0x00000010, - AVIFILECAPS_NOCOMPRESSION = 0x00000020, + AVIFILECAPS_CANREAD = 0x00000001, + AVIFILECAPS_CANWRITE = 0x00000002, + AVIFILECAPS_ALLKEYFRAMES = 0x00000010, + AVIFILECAPS_NOCOMPRESSION = 0x00000020, } extern (Windows) { - alias BOOL function(int) AVISAVECALLBACK; + alias BOOL function(int) AVISAVECALLBACK; } struct AVICOMPRESSOPTIONS { - DWORD fccType; - DWORD fccHandler; - DWORD dwKeyFrameEvery; - DWORD dwQuality; - DWORD dwBytesPerSecond; - DWORD dwFlags; - LPVOID lpFormat; - DWORD cbFormat; - LPVOID lpParms; - DWORD cbParms; - DWORD dwInterleaveEvery; + DWORD fccType; + DWORD fccHandler; + DWORD dwKeyFrameEvery; + DWORD dwQuality; + DWORD dwBytesPerSecond; + DWORD dwFlags; + LPVOID lpFormat; + DWORD cbFormat; + LPVOID lpParms; + DWORD cbParms; + DWORD dwInterleaveEvery; } alias AVICOMPRESSOPTIONS* LPAVICOMPRESSOPTIONS; enum { - AVICOMPRESSF_INTERLEAVE = 0x00000001, - AVICOMPRESSF_DATARATE = 0x00000002, - AVICOMPRESSF_KEYFRAMES = 0x00000004, - AVICOMPRESSF_VALID = 0x00000008, + AVICOMPRESSF_INTERLEAVE = 0x00000001, + AVICOMPRESSF_DATARATE = 0x00000002, + AVICOMPRESSF_KEYFRAMES = 0x00000004, + AVICOMPRESSF_VALID = 0x00000008, } /+ TODO: @@ -1014,23 +1014,23 @@ DECLARE_INTERFACE_(IAVIStream, IUnknown) STDMETHOD(Info) (THIS_ AVISTREAMINFOW FAR * psi, LONG lSize) PURE ; STDMETHOD_(LONG, FindSample)(THIS_ LONG lPos, LONG lFlags) PURE ; STDMETHOD(ReadFormat) (THIS_ LONG lPos, - LPVOID lpFormat, LONG FAR *lpcbFormat) PURE ; + LPVOID lpFormat, LONG FAR *lpcbFormat) PURE ; STDMETHOD(SetFormat) (THIS_ LONG lPos, - LPVOID lpFormat, LONG cbFormat) PURE ; + LPVOID lpFormat, LONG cbFormat) PURE ; STDMETHOD(Read) (THIS_ LONG lStart, LONG lSamples, - LPVOID lpBuffer, LONG cbBuffer, - LONG FAR * plBytes, LONG FAR * plSamples) PURE ; + LPVOID lpBuffer, LONG cbBuffer, + LONG FAR * plBytes, LONG FAR * plSamples) PURE ; STDMETHOD(Write) (THIS_ LONG lStart, LONG lSamples, - LPVOID lpBuffer, LONG cbBuffer, - DWORD dwFlags, - LONG FAR *plSampWritten, - LONG FAR *plBytesWritten) PURE ; + LPVOID lpBuffer, LONG cbBuffer, + DWORD dwFlags, + LONG FAR *plSampWritten, + LONG FAR *plBytesWritten) PURE ; STDMETHOD(Delete) (THIS_ LONG lStart, LONG lSamples) PURE; STDMETHOD(ReadData) (THIS_ DWORD fcc, LPVOID lp, LONG FAR *lpcb) PURE ; STDMETHOD(WriteData) (THIS_ DWORD fcc, LPVOID lp, LONG cb) PURE ; #ifdef _WIN32 STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, - LONG cbInfo) PURE; + LONG cbInfo) PURE; #else STDMETHOD(Reserved1) (THIS) PURE; STDMETHOD(Reserved2) (THIS) PURE; @@ -1052,9 +1052,9 @@ DECLARE_INTERFACE_(IAVIStreaming, IUnknown) STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(Begin) (THIS_ - LONG lStart, - LONG lEnd, - LONG lRate) PURE; + LONG lStart, + LONG lEnd, + LONG lRate) PURE; STDMETHOD(End) (THIS) PURE; }; @@ -1071,19 +1071,19 @@ DECLARE_INTERFACE_(IAVIEditStream, IUnknown) STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(Cut) (THIS_ LONG FAR *plStart, - LONG FAR *plLength, - PAVISTREAM FAR * ppResult) PURE; + LONG FAR *plLength, + PAVISTREAM FAR * ppResult) PURE; STDMETHOD(Copy) (THIS_ LONG FAR *plStart, - LONG FAR *plLength, - PAVISTREAM FAR * ppResult) PURE; + LONG FAR *plLength, + PAVISTREAM FAR * ppResult) PURE; STDMETHOD(Paste) (THIS_ LONG FAR *plPos, - LONG FAR *plLength, - PAVISTREAM pstream, - LONG lStart, - LONG lEnd) PURE; + LONG FAR *plLength, + PAVISTREAM pstream, + LONG lStart, + LONG lEnd) PURE; STDMETHOD(Clone) (THIS_ PAVISTREAM FAR *ppResult) PURE; STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, - LONG cbInfo) PURE; + LONG cbInfo) PURE; }; alias TypeDef!(IAVIEditStream FAR*) PAVIEDITSTREAM; @@ -1113,7 +1113,7 @@ DECLARE_INTERFACE_(IAVIFile, IUnknown) LONG lSize) PURE; STDMETHOD(GetStream) (THIS_ PAVISTREAM FAR * ppStream, - DWORD fccType, + DWORD fccType, LONG lParam) PURE; STDMETHOD(CreateStream) (THIS_ PAVISTREAM FAR * ppStream, @@ -1128,7 +1128,7 @@ DECLARE_INTERFACE_(IAVIFile, IUnknown) LONG FAR *lpcbData) PURE; STDMETHOD(EndRecord) (THIS) PURE; STDMETHOD(DeleteStream) (THIS_ - DWORD fccType, + DWORD fccType, LONG lParam) PURE; }; @@ -1182,9 +1182,9 @@ STDAPI_(ULONG) AVIFileRelease (PAVIFILE pfile); #ifdef _WIN32 STDAPI AVIFileOpenA (PAVIFILE FAR * ppfile, LPCSTR szFile, - UINT uMode, LPCLSID lpHandler); + UINT uMode, LPCLSID lpHandler); STDAPI AVIFileOpenW (PAVIFILE FAR * ppfile, LPCWSTR szFile, - UINT uMode, LPCLSID lpHandler); + UINT uMode, LPCLSID lpHandler); #ifdef UNICODE #define AVIFileOpen AVIFileOpenW #else @@ -1192,7 +1192,7 @@ STDAPI AVIFileOpenW (PAVIFILE FAR * ppfile, LPCWSTR szFile, #endif #else STDAPI AVIFileOpen (PAVIFILE FAR * ppfile, LPCSTR szFile, - UINT uMode, LPCLSID lpHandler); + UINT uMode, LPCLSID lpHandler); #define AVIFileOpenW AVIFileOpen #endif @@ -1227,13 +1227,13 @@ STDAPI AVIFileCreateStream(PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFO #endif STDAPI AVIFileWriteData (PAVIFILE pfile, - DWORD ckid, - LPVOID lpData, - LONG cbData); + DWORD ckid, + LPVOID lpData, + LONG cbData); STDAPI AVIFileReadData (PAVIFILE pfile, - DWORD ckid, - LPVOID lpData, - LONG FAR *lpcbData); + DWORD ckid, + LPVOID lpData, + LONG FAR *lpcbData); STDAPI AVIFileEndRecord (PAVIFILE pfile); STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi); @@ -1254,19 +1254,19 @@ STDAPI AVIStreamReadData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG FAR *l STDAPI AVIStreamWriteData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG cb); STDAPI AVIStreamRead (PAVISTREAM pavi, - LONG lStart, - LONG lSamples, - LPVOID lpBuffer, - LONG cbBuffer, - LONG FAR * plBytes, - LONG FAR * plSamples); + LONG lStart, + LONG lSamples, + LPVOID lpBuffer, + LONG cbBuffer, + LONG FAR * plBytes, + LONG FAR * plSamples); #define AVISTREAMREAD_CONVENIENT (-1L) STDAPI AVIStreamWrite (PAVISTREAM pavi, - LONG lStart, LONG lSamples, - LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags, - LONG FAR *plSampWritten, - LONG FAR *plBytesWritten); + LONG lStart, LONG lSamples, + LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags, + LONG FAR *plSampWritten, + LONG FAR *plBytesWritten); STDAPI_(LONG) AVIStreamStart (PAVISTREAM pavi); STDAPI_(LONG) AVIStreamLength (PAVISTREAM pavi); @@ -1278,16 +1278,16 @@ STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart, LONG lEnd, LONG lRa STDAPI AVIStreamEndStreaming(PAVISTREAM pavi); STDAPI_(PGETFRAME) AVIStreamGetFrameOpen(PAVISTREAM pavi, - LPBITMAPINFOHEADER lpbiWanted); + LPBITMAPINFOHEADER lpbiWanted); STDAPI_(LPVOID) AVIStreamGetFrame(PGETFRAME pg, LONG lPos); STDAPI AVIStreamGetFrameClose(PGETFRAME pg); STDAPI AVIStreamOpenFromFileA(PAVISTREAM FAR *ppavi, LPCSTR szFile, - DWORD fccType, LONG lParam, - UINT mode, CLSID FAR *pclsidHandler); + DWORD fccType, LONG lParam, + UINT mode, CLSID FAR *pclsidHandler); STDAPI AVIStreamOpenFromFileW(PAVISTREAM FAR *ppavi, LPCWSTR szFile, - DWORD fccType, LONG lParam, - UINT mode, CLSID FAR *pclsidHandler); + DWORD fccType, LONG lParam, + UINT mode, CLSID FAR *pclsidHandler); #ifdef UNICODE #define AVIStreamOpenFromFile AVIStreamOpenFromFileW #else @@ -1295,7 +1295,7 @@ STDAPI AVIStreamOpenFromFileW(PAVISTREAM FAR *ppavi, LPCWSTR szFile, #endif STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, - CLSID FAR *pclsidHandler); + CLSID FAR *pclsidHandler); @@ -1377,39 +1377,39 @@ STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, #endif STDAPI AVIMakeCompressedStream( - PAVISTREAM FAR * ppsCompressed, - PAVISTREAM ppsSource, - AVICOMPRESSOPTIONS FAR * lpOptions, - CLSID FAR *pclsidHandler); + PAVISTREAM FAR * ppsCompressed, + PAVISTREAM ppsSource, + AVICOMPRESSOPTIONS FAR * lpOptions, + CLSID FAR *pclsidHandler); EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM pfile, - LPAVICOMPRESSOPTIONS lpOptions, - ...); + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM pfile, + LPAVICOMPRESSOPTIONS lpOptions, + ...); STDAPI AVISaveVA(LPCSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM FAR * ppavi, - LPAVICOMPRESSOPTIONS FAR *plpOptions); + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM FAR * ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM pfile, - LPAVICOMPRESSOPTIONS lpOptions, - ...); + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM pfile, + LPAVICOMPRESSOPTIONS lpOptions, + ...); STDAPI AVISaveVW(LPCWSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM FAR * ppavi, - LPAVICOMPRESSOPTIONS FAR *plpOptions); + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM FAR * ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); #ifdef UNICODE #define AVISave AVISaveW #define AVISaveV AVISaveVW @@ -1421,13 +1421,13 @@ STDAPI AVISaveVW(LPCWSTR szFile, STDAPI_(INT_PTR) AVISaveOptions(HWND hwnd, - UINT uiFlags, - int nStreams, - PAVISTREAM FAR *ppavi, - LPAVICOMPRESSOPTIONS FAR *plpOptions); + UINT uiFlags, + int nStreams, + PAVISTREAM FAR *ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); STDAPI AVISaveOptionsFree(int nStreams, - LPAVICOMPRESSOPTIONS FAR *plpOptions); + LPAVICOMPRESSOPTIONS FAR *plpOptions); STDAPI AVIBuildFilterW(LPWSTR lpszFilter, LONG cbFilter, BOOL fSaving); STDAPI AVIBuildFilterA(LPSTR lpszFilter, LONG cbFilter, BOOL fSaving); @@ -1437,8 +1437,8 @@ STDAPI AVIBuildFilterA(LPSTR lpszFilter, LONG cbFilter, BOOL fSaving); #define AVIBuildFilter AVIBuildFilterA #endif STDAPI AVIMakeFileFromStreams(PAVIFILE FAR * ppfile, - int nStreams, - PAVISTREAM FAR * papStreams); + int nStreams, + PAVISTREAM FAR * papStreams); STDAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal, PAVISTREAM FAR *ppstream); @@ -1449,8 +1449,8 @@ STDAPI AVIGetFromClipboard(PAVIFILE FAR * lppf); STDAPI AVIClearClipboard(void); STDAPI CreateEditableStream( - PAVISTREAM FAR * ppsEditable, - PAVISTREAM psSource); + PAVISTREAM FAR * ppsEditable, + PAVISTREAM psSource); STDAPI EditStreamCut(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); @@ -1476,7 +1476,7 @@ STDAPI EditStreamSetInfoA(PAVISTREAM pavi, LPAVISTREAMINFOA lpInfo, LONG cbInfo) const AVIERR_OK = 0L; SCODE MAKE_AVIERR(DWORD error) { - return MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x4000 + error); + return MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x4000 + error); } const AVIERR_UNSUPPORTED = MAKE_AVIERR(101); @@ -1502,322 +1502,322 @@ const AVIERR_ERROR = MAKE_AVIERR(199); const TCHAR[] MCIWND_WINDOW_CLASS = "MCIWndClass"; extern (Windows) { - HWND MCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCSTR szFile); - HWND MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCWSTR szFile); + HWND MCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCSTR szFile); + HWND MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCWSTR szFile); } version(Unicode) { - alias MCIWndCreateW MCIWndCreate; + alias MCIWndCreateW MCIWndCreate; } else { // Unicode - alias MCIWndCreateA MCIWndCreate; + alias MCIWndCreateA MCIWndCreate; } extern(Windows) { - BOOL MCIWndRegisterClass(); + BOOL MCIWndRegisterClass(); } enum { - MCIWNDOPENF_NEW = 0x0001, - MCIWNDF_NOAUTOSIZEWINDOW = 0x0001, - MCIWNDF_NOPLAYBAR = 0x0002, - MCIWNDF_NOAUTOSIZEMOVIE = 0x0004, - MCIWNDF_NOMENU = 0x0008, - MCIWNDF_SHOWNAME = 0x0010, - MCIWNDF_SHOWPOS = 0x0020, - MCIWNDF_SHOWMODE = 0x0040, - MCIWNDF_SHOWALL = 0x0070, - MCIWNDF_NOTIFYMODE = 0x0100, - MCIWNDF_NOTIFYPOS = 0x0200, - MCIWNDF_NOTIFYSIZE = 0x0400, - MCIWNDF_NOTIFYERROR = 0x1000, - MCIWNDF_NOTIFYALL = 0x1F00, - MCIWNDF_NOTIFYANSI = 0x0080, - MCIWNDF_NOTIFYMEDIAA = 0x0880, - MCIWNDF_NOTIFYMEDIAW = 0x0800, + MCIWNDOPENF_NEW = 0x0001, + MCIWNDF_NOAUTOSIZEWINDOW = 0x0001, + MCIWNDF_NOPLAYBAR = 0x0002, + MCIWNDF_NOAUTOSIZEMOVIE = 0x0004, + MCIWNDF_NOMENU = 0x0008, + MCIWNDF_SHOWNAME = 0x0010, + MCIWNDF_SHOWPOS = 0x0020, + MCIWNDF_SHOWMODE = 0x0040, + MCIWNDF_SHOWALL = 0x0070, + MCIWNDF_NOTIFYMODE = 0x0100, + MCIWNDF_NOTIFYPOS = 0x0200, + MCIWNDF_NOTIFYSIZE = 0x0400, + MCIWNDF_NOTIFYERROR = 0x1000, + MCIWNDF_NOTIFYALL = 0x1F00, + MCIWNDF_NOTIFYANSI = 0x0080, + MCIWNDF_NOTIFYMEDIAA = 0x0880, + MCIWNDF_NOTIFYMEDIAW = 0x0800, } version(Unicode) { - alias MCIWNDF_NOTIFYMEDIAW MCIWNDF_NOTIFYMEDIA; + alias MCIWNDF_NOTIFYMEDIAW MCIWNDF_NOTIFYMEDIA; } else { // Unicode - alias MCIWNDF_NOTIFYMEDIAA MCIWNDF_NOTIFYMEDIA; + alias MCIWNDF_NOTIFYMEDIAA MCIWNDF_NOTIFYMEDIA; } enum { - MCIWNDF_RECORD = 0x2000, - MCIWNDF_NOERRORDLG = 0x4000, - MCIWNDF_NOOPEN = 0x8000, + MCIWNDF_RECORD = 0x2000, + MCIWNDF_NOERRORDLG = 0x4000, + MCIWNDF_NOOPEN = 0x8000, } // can macros BOOL MCIWndCanPlay(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_PLAY, 0, 0); } + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_PLAY, 0, 0); } BOOL MCIWndCanRecord(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_RECORD, 0, 0); } + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_RECORD, 0, 0); } BOOL MCIWndCanSave(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_SAVE, 0, 0); } + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_SAVE, 0, 0); } BOOL MCIWndCanWindow(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_WINDOW, 0, 0); } + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_WINDOW, 0, 0); } BOOL MCIWndCanEject(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_EJECT, 0, 0); } + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_EJECT, 0, 0); } BOOL MCIWndCanConfig(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_CONFIG, 0, 0); } + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_CONFIG, 0, 0); } BOOL MCIWndPaletteKick(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_PALETTEKICK, 0, 0); } + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_PALETTEKICK, 0, 0); } LONG MCIWndSave(HWND hwnd, LPVOID szFile) - { return cast(LONG)SendMessage(hwnd, MCI_SAVE, 0, cast(LPARAM)szFile); } + { return cast(LONG)SendMessage(hwnd, MCI_SAVE, 0, cast(LPARAM)szFile); } LONG MCIWndSaveDialog(HWND hwnd) - { return MCIWndSave(hwnd, cast(LPVOID)-1); } + { return MCIWndSave(hwnd, cast(LPVOID)-1); } LONG MCIWndNew(HWND hwnd, LPVOID lp) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_NEW, 0, cast(LPARAM)lp); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_NEW, 0, cast(LPARAM)lp); } LONG MCIWndRecord(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_RECORD, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCI_RECORD, 0, 0); } LONG MCIWndOpen(HWND hwnd, LPVOID sz, UINT f) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_OPEN, cast(WPARAM)f, cast(LPARAM)sz); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_OPEN, cast(WPARAM)f, cast(LPARAM)sz); } LONG MCIWndOpenDialog(HWND hwnd) - { return MCIWndOpen(hwnd, cast(LPVOID)-1, 0); } + { return MCIWndOpen(hwnd, cast(LPVOID)-1, 0); } LONG MCIWndClose(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_CLOSE, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCI_CLOSE, 0, 0); } LONG MCIWndPlay(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_PLAY, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCI_PLAY, 0, 0); } LONG MCIWndStop(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_STOP, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCI_STOP, 0, 0); } LONG MCIWndPause(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_PAUSE, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCI_PAUSE, 0, 0); } LONG MCIWndResume(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_RESUME, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCI_RESUME, 0, 0); } LONG MCIWndSeek(HWND hwnd, LONG lPos) - { return cast(LONG)SendMessage(hwnd, MCI_SEEK, 0, cast(LPARAM)lPos); } + { return cast(LONG)SendMessage(hwnd, MCI_SEEK, 0, cast(LPARAM)lPos); } LONG MCIWndHome(HWND hwnd) - { return MCIWndSeek(hwnd, MCIWND_START); } + { return MCIWndSeek(hwnd, MCIWND_START); } LONG MCIWndEnd(HWND hwnd) - { return MCIWndSeek(hwnd, MCIWND_END); } + { return MCIWndSeek(hwnd, MCIWND_END); } LONG MCIWndEject(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_EJECT, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_EJECT, 0, 0); } LONG MCIWndGetSource(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_SOURCE, 0, cast(LPARAM)prc); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_SOURCE, 0, cast(LPARAM)prc); } LONG MCIWndPutSource(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_SOURCE, 0, cast(LPARAM)prc); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_SOURCE, 0, cast(LPARAM)prc); } LONG MCIWndGetDest(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_DEST, 0, cast(LPARAM)prc); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_DEST, 0, cast(LPARAM)prc); } LONG MCIWndPutDest(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_DEST, 0, cast(LPARAM)prc); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_DEST, 0, cast(LPARAM)prc); } LONG MCIWndPlayReverse(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYREVERSE, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYREVERSE, 0, 0); } LONG MCIWndPlayFrom(HWND hwnd, LONG lPos) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, cast(LPARAM)lPos); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, cast(LPARAM)lPos); } LONG MCIWndPlayTo(HWND hwnd, LONG lPos) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYTO, 0, cast(LPARAM)lPos); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYTO, 0, cast(LPARAM)lPos); } LONG MCIWndPlayFromTo(HWND hwnd, LONG lStart, LONG lEnd) - { MCIWndSeek(hwnd, lStart); return MCIWndPlayTo(hwnd, lEnd); } + { MCIWndSeek(hwnd, lStart); return MCIWndPlayTo(hwnd, lEnd); } UINT MCIWndGetDeviceID(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0); } + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0); } UINT MCIWndGetAlias(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETALIAS, 0, 0); } + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETALIAS, 0, 0); } LONG MCIWndGetMode(HWND hwnd, LPTSTR lp, UINT len) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETMODE, cast(WPARAM)len, cast(LPARAM)lp); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETMODE, cast(WPARAM)len, cast(LPARAM)lp); } LONG MCIWndGetPosition(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0); } LONG MCIWndGetPositionString(HWND hwnd, LPTSTR lp, UINT len) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, cast(WPARAM)len, cast(LPARAM)lp); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, cast(WPARAM)len, cast(LPARAM)lp); } LONG MCIWndGetStart(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0); } LONG MCIWndGetLength(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0); } LONG MCIWndGetEnd(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETEND, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETEND, 0, 0); } LONG MCIWndStep(HWND hwnd, LONG n) - { return cast(LONG)SendMessage(hwnd, MCI_STEP, 0, cast(LPARAM)n); } + { return cast(LONG)SendMessage(hwnd, MCI_STEP, 0, cast(LPARAM)n); } void MCIWndDestroy(HWND hwnd) - { SendMessage(hwnd, WM_CLOSE, 0, 0); } + { SendMessage(hwnd, WM_CLOSE, 0, 0); } void MCIWndSetZoom(HWND hwnd, UINT iZoom) - { SendMessage(hwnd, MCIWNDM_SETZOOM, 0, cast(LPARAM)iZoom); } + { SendMessage(hwnd, MCIWNDM_SETZOOM, 0, cast(LPARAM)iZoom); } UINT MCIWndGetZoom(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETZOOM, 0, 0); } + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETZOOM, 0, 0); } LONG MCIWndSetVolume(HWND hwnd, UINT iVol) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, cast(LPARAM)iVol); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, cast(LPARAM)iVol); } LONG MCIWndGetVolume(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0); } LONG MCIWndSetSpeed(HWND hwnd, UINT iSpeed) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETSPEED, 0, cast(LPARAM)iSpeed); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETSPEED, 0, cast(LPARAM)iSpeed); } LONG MCIWndGetSpeed(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0); } LONG MCIWndSetTimeFormat(HWND hwnd, LPTSTR lp) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, cast(LPARAM)lp); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, cast(LPARAM)lp); } LONG MCIWndUseFrames(HWND hwnd) - { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"frames").ptr); } + { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"frames").ptr); } LONG MCIWndUseTime(HWND hwnd) - { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"ms").ptr); } + { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"ms").ptr); } LONG MCIWndGetTimeFormat(HWND hwnd, LPTSTR lp, UINT len) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETTIMEFORMAT, cast(WPARAM)len, cast(LPARAM)lp); } + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETTIMEFORMAT, cast(WPARAM)len, cast(LPARAM)lp); } void MCIWndValidateMedia(HWND hwnd) - { SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0); } + { SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0); } void MCIWndSetRepeat(HWND hwnd, BOOL f) - { SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, cast(LPARAM)f); } + { SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, cast(LPARAM)f); } BOOL MCIWndGetRepeat(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0); } + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0); } void MCIWndSetActiveTimer(HWND hwnd, UINT active) - { SendMessage(hwnd, MCIWNDM_SETACTIVETIMER, cast(WPARAM)active, 0); } + { SendMessage(hwnd, MCIWNDM_SETACTIVETIMER, cast(WPARAM)active, 0); } void MCIWndSetInactiveTimer(HWND hwnd, UINT inactive) - { SendMessage(hwnd, MCIWNDM_SETINACTIVETIMER, cast(WPARAM)inactive, 0); } + { SendMessage(hwnd, MCIWNDM_SETINACTIVETIMER, cast(WPARAM)inactive, 0); } void MCIWndSetTimers(HWND hwnd, UINT active, UINT inactive) - { SendMessage(hwnd, MCIWNDM_SETTIMERS, cast(WPARAM)active, cast(LPARAM)inactive); } + { SendMessage(hwnd, MCIWNDM_SETTIMERS, cast(WPARAM)active, cast(LPARAM)inactive); } UINT MCIWndGetActiveTimer(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0); } + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0); } UINT MCIWndGetInactiveTimer(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0); } + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0); } LONG MCIWndRealize(HWND hwnd, BOOL fBkgnd) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_REALIZE, cast(WPARAM)fBkgnd, 0); } + { return cast(LONG) SendMessage(hwnd, MCIWNDM_REALIZE, cast(WPARAM)fBkgnd, 0); } LONG MCIWndSendString(HWND hwnd, LPTSTR sz) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, cast(LPARAM)sz); } + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, cast(LPARAM)sz); } LONG MCIWndReturnString(HWND hwnd, LPVOID lp, UINT len) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_RETURNSTRING, cast(WPARAM)len, cast(LPARAM)lp); } + { return cast(LONG) SendMessage(hwnd, MCIWNDM_RETURNSTRING, cast(WPARAM)len, cast(LPARAM)lp); } LONG MCIWndGetError(HWND hwnd, LPVOID lp, UINT len) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETERROR, cast(WPARAM)len, cast(LPARAM)lp); } + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETERROR, cast(WPARAM)len, cast(LPARAM)lp); } HPALETTE MCIWndGetPalette(HWND hwnd) - { return cast(HPALETTE)SendMessage(hwnd, MCIWNDM_GETPALETTE, 0, 0); } + { return cast(HPALETTE)SendMessage(hwnd, MCIWNDM_GETPALETTE, 0, 0); } LONG MCIWndSetPalette(HWND hwnd, HPALETTE hpal) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETPALETTE, cast(WPARAM)hpal, 0); } + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETPALETTE, cast(WPARAM)hpal, 0); } LONG MCIWndGetFileName(HWND hwnd, LPVOID lp, UINT len) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETFILENAME, cast(WPARAM)len, cast(LPARAM)lp); } + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETFILENAME, cast(WPARAM)len, cast(LPARAM)lp); } LONG MCIWndGetDevice(HWND hwnd, LPVOID lp, UINT len) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETDEVICE, cast(WPARAM)len, cast(LPARAM)lp); } + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETDEVICE, cast(WPARAM)len, cast(LPARAM)lp); } UINT MCIWndGetStyles(HWND hwnd) - { return cast(UINT) SendMessage(hwnd, MCIWNDM_GETSTYLES, 0, 0); } + { return cast(UINT) SendMessage(hwnd, MCIWNDM_GETSTYLES, 0, 0); } LONG MCIWndChangeStyles(HWND hwnd, UINT mask, LONG value) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_CHANGESTYLES, cast(WPARAM)mask, cast(LPARAM)value); } + { return cast(LONG) SendMessage(hwnd, MCIWNDM_CHANGESTYLES, cast(WPARAM)mask, cast(LPARAM)value); } LONG MCIWndOpenInterface(HWND hwnd, LPUNKNOWN pUnk) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_OPENINTERFACE, 0, cast(LPARAM)cast(void*)pUnk); } + { return cast(LONG) SendMessage(hwnd, MCIWNDM_OPENINTERFACE, 0, cast(LPARAM)cast(void*)pUnk); } LONG MCIWndSetOwner(HWND hwnd, HWND hwndP) - { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETOWNER, cast(WPARAM)hwndP, 0); } + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETOWNER, cast(WPARAM)hwndP, 0); } enum { - MCIWNDM_GETDEVICEID = WM_USER + 100, - MCIWNDM_SENDSTRINGA = WM_USER + 101, - MCIWNDM_GETPOSITIONA = WM_USER + 102, - MCIWNDM_GETSTART = WM_USER + 103, - MCIWNDM_GETLENGTH = WM_USER + 104, - MCIWNDM_GETEND = WM_USER + 105, - MCIWNDM_GETMODEA = WM_USER + 106, - MCIWNDM_EJECT = WM_USER + 107, - MCIWNDM_SETZOOM = WM_USER + 108, - MCIWNDM_GETZOOM = WM_USER + 109, - MCIWNDM_SETVOLUME = WM_USER + 110, - MCIWNDM_GETVOLUME = WM_USER + 111, - MCIWNDM_SETSPEED = WM_USER + 112, - MCIWNDM_GETSPEED = WM_USER + 113, - MCIWNDM_SETREPEAT = WM_USER + 114, - MCIWNDM_GETREPEAT = WM_USER + 115, - MCIWNDM_REALIZE = WM_USER + 118, - MCIWNDM_SETTIMEFORMATA = WM_USER + 119, - MCIWNDM_GETTIMEFORMATA = WM_USER + 120, - MCIWNDM_VALIDATEMEDIA = WM_USER + 121, - MCIWNDM_PLAYFROM = WM_USER + 122, - MCIWNDM_PLAYTO = WM_USER + 123, - MCIWNDM_GETFILENAMEA = WM_USER + 124, - MCIWNDM_GETDEVICEA = WM_USER + 125, - MCIWNDM_GETPALETTE = WM_USER + 126, - MCIWNDM_SETPALETTE = WM_USER + 127, - MCIWNDM_GETERRORA = WM_USER + 128, - MCIWNDM_SETTIMERS = WM_USER + 129, - MCIWNDM_SETACTIVETIMER = WM_USER + 130, - MCIWNDM_SETINACTIVETIMER = WM_USER + 131, - MCIWNDM_GETACTIVETIMER = WM_USER + 132, - MCIWNDM_GETINACTIVETIMER = WM_USER + 133, - MCIWNDM_NEWA = WM_USER + 134, - MCIWNDM_CHANGESTYLES = WM_USER + 135, - MCIWNDM_GETSTYLES = WM_USER + 136, - MCIWNDM_GETALIAS = WM_USER + 137, - MCIWNDM_RETURNSTRINGA = WM_USER + 138, - MCIWNDM_PLAYREVERSE = WM_USER + 139, - MCIWNDM_GET_SOURCE = WM_USER + 140, - MCIWNDM_PUT_SOURCE = WM_USER + 141, - MCIWNDM_GET_DEST = WM_USER + 142, - MCIWNDM_PUT_DEST = WM_USER + 143, - MCIWNDM_CAN_PLAY = WM_USER + 144, - MCIWNDM_CAN_WINDOW = WM_USER + 145, - MCIWNDM_CAN_RECORD = WM_USER + 146, - MCIWNDM_CAN_SAVE = WM_USER + 147, - MCIWNDM_CAN_EJECT = WM_USER + 148, - MCIWNDM_CAN_CONFIG = WM_USER + 149, - MCIWNDM_PALETTEKICK = WM_USER + 150, - MCIWNDM_OPENINTERFACE = WM_USER + 151, - MCIWNDM_SETOWNER = WM_USER + 152, - MCIWNDM_OPENA = WM_USER + 153, - MCIWNDM_SENDSTRINGW = WM_USER + 201, - MCIWNDM_GETPOSITIONW = WM_USER + 202, - MCIWNDM_GETMODEW = WM_USER + 206, - MCIWNDM_SETTIMEFORMATW = WM_USER + 219, - MCIWNDM_GETTIMEFORMATW = WM_USER + 220, - MCIWNDM_GETFILENAMEW = WM_USER + 224, - MCIWNDM_GETDEVICEW = WM_USER + 225, - MCIWNDM_GETERRORW = WM_USER + 228, - MCIWNDM_NEWW = WM_USER + 234, - MCIWNDM_RETURNSTRINGW = WM_USER + 238, - MCIWNDM_OPENW = WM_USER + 252, + MCIWNDM_GETDEVICEID = WM_USER + 100, + MCIWNDM_SENDSTRINGA = WM_USER + 101, + MCIWNDM_GETPOSITIONA = WM_USER + 102, + MCIWNDM_GETSTART = WM_USER + 103, + MCIWNDM_GETLENGTH = WM_USER + 104, + MCIWNDM_GETEND = WM_USER + 105, + MCIWNDM_GETMODEA = WM_USER + 106, + MCIWNDM_EJECT = WM_USER + 107, + MCIWNDM_SETZOOM = WM_USER + 108, + MCIWNDM_GETZOOM = WM_USER + 109, + MCIWNDM_SETVOLUME = WM_USER + 110, + MCIWNDM_GETVOLUME = WM_USER + 111, + MCIWNDM_SETSPEED = WM_USER + 112, + MCIWNDM_GETSPEED = WM_USER + 113, + MCIWNDM_SETREPEAT = WM_USER + 114, + MCIWNDM_GETREPEAT = WM_USER + 115, + MCIWNDM_REALIZE = WM_USER + 118, + MCIWNDM_SETTIMEFORMATA = WM_USER + 119, + MCIWNDM_GETTIMEFORMATA = WM_USER + 120, + MCIWNDM_VALIDATEMEDIA = WM_USER + 121, + MCIWNDM_PLAYFROM = WM_USER + 122, + MCIWNDM_PLAYTO = WM_USER + 123, + MCIWNDM_GETFILENAMEA = WM_USER + 124, + MCIWNDM_GETDEVICEA = WM_USER + 125, + MCIWNDM_GETPALETTE = WM_USER + 126, + MCIWNDM_SETPALETTE = WM_USER + 127, + MCIWNDM_GETERRORA = WM_USER + 128, + MCIWNDM_SETTIMERS = WM_USER + 129, + MCIWNDM_SETACTIVETIMER = WM_USER + 130, + MCIWNDM_SETINACTIVETIMER = WM_USER + 131, + MCIWNDM_GETACTIVETIMER = WM_USER + 132, + MCIWNDM_GETINACTIVETIMER = WM_USER + 133, + MCIWNDM_NEWA = WM_USER + 134, + MCIWNDM_CHANGESTYLES = WM_USER + 135, + MCIWNDM_GETSTYLES = WM_USER + 136, + MCIWNDM_GETALIAS = WM_USER + 137, + MCIWNDM_RETURNSTRINGA = WM_USER + 138, + MCIWNDM_PLAYREVERSE = WM_USER + 139, + MCIWNDM_GET_SOURCE = WM_USER + 140, + MCIWNDM_PUT_SOURCE = WM_USER + 141, + MCIWNDM_GET_DEST = WM_USER + 142, + MCIWNDM_PUT_DEST = WM_USER + 143, + MCIWNDM_CAN_PLAY = WM_USER + 144, + MCIWNDM_CAN_WINDOW = WM_USER + 145, + MCIWNDM_CAN_RECORD = WM_USER + 146, + MCIWNDM_CAN_SAVE = WM_USER + 147, + MCIWNDM_CAN_EJECT = WM_USER + 148, + MCIWNDM_CAN_CONFIG = WM_USER + 149, + MCIWNDM_PALETTEKICK = WM_USER + 150, + MCIWNDM_OPENINTERFACE = WM_USER + 151, + MCIWNDM_SETOWNER = WM_USER + 152, + MCIWNDM_OPENA = WM_USER + 153, + MCIWNDM_SENDSTRINGW = WM_USER + 201, + MCIWNDM_GETPOSITIONW = WM_USER + 202, + MCIWNDM_GETMODEW = WM_USER + 206, + MCIWNDM_SETTIMEFORMATW = WM_USER + 219, + MCIWNDM_GETTIMEFORMATW = WM_USER + 220, + MCIWNDM_GETFILENAMEW = WM_USER + 224, + MCIWNDM_GETDEVICEW = WM_USER + 225, + MCIWNDM_GETERRORW = WM_USER + 228, + MCIWNDM_NEWW = WM_USER + 234, + MCIWNDM_RETURNSTRINGW = WM_USER + 238, + MCIWNDM_OPENW = WM_USER + 252, } version(Unicode) { - alias MCIWNDM_SENDSTRINGW MCIWNDM_SENDSTRING; - alias MCIWNDM_GETPOSITIONW MCIWNDM_GETPOSITION; - alias MCIWNDM_GETMODEW MCIWNDM_GETMODE; - alias MCIWNDM_SETTIMEFORMATW MCIWNDM_SETTIMEFORMAT; - alias MCIWNDM_GETTIMEFORMATW MCIWNDM_GETTIMEFORMAT; - alias MCIWNDM_GETFILENAMEW MCIWNDM_GETFILENAME; - alias MCIWNDM_GETDEVICEW MCIWNDM_GETDEVICE; - alias MCIWNDM_GETERRORW MCIWNDM_GETERROR; - alias MCIWNDM_NEWW MCIWNDM_NEW; - alias MCIWNDM_RETURNSTRINGW MCIWNDM_RETURNSTRING; - alias MCIWNDM_OPENW MCIWNDM_OPEN; + alias MCIWNDM_SENDSTRINGW MCIWNDM_SENDSTRING; + alias MCIWNDM_GETPOSITIONW MCIWNDM_GETPOSITION; + alias MCIWNDM_GETMODEW MCIWNDM_GETMODE; + alias MCIWNDM_SETTIMEFORMATW MCIWNDM_SETTIMEFORMAT; + alias MCIWNDM_GETTIMEFORMATW MCIWNDM_GETTIMEFORMAT; + alias MCIWNDM_GETFILENAMEW MCIWNDM_GETFILENAME; + alias MCIWNDM_GETDEVICEW MCIWNDM_GETDEVICE; + alias MCIWNDM_GETERRORW MCIWNDM_GETERROR; + alias MCIWNDM_NEWW MCIWNDM_NEW; + alias MCIWNDM_RETURNSTRINGW MCIWNDM_RETURNSTRING; + alias MCIWNDM_OPENW MCIWNDM_OPEN; } else { // Unicode - alias MCIWNDM_SENDSTRINGA MCIWNDM_SENDSTRING; - alias MCIWNDM_GETPOSITIONA MCIWNDM_GETPOSITION; - alias MCIWNDM_GETMODEA MCIWNDM_GETMODE; - alias MCIWNDM_SETTIMEFORMATA MCIWNDM_SETTIMEFORMAT; - alias MCIWNDM_GETTIMEFORMATA MCIWNDM_GETTIMEFORMAT; - alias MCIWNDM_GETFILENAMEA MCIWNDM_GETFILENAME; - alias MCIWNDM_GETDEVICEA MCIWNDM_GETDEVICE; - alias MCIWNDM_GETERRORA MCIWNDM_GETERROR; - alias MCIWNDM_NEWA MCIWNDM_NEW; - alias MCIWNDM_RETURNSTRINGA MCIWNDM_RETURNSTRING; - alias MCIWNDM_OPENA MCIWNDM_OPEN; + alias MCIWNDM_SENDSTRINGA MCIWNDM_SENDSTRING; + alias MCIWNDM_GETPOSITIONA MCIWNDM_GETPOSITION; + alias MCIWNDM_GETMODEA MCIWNDM_GETMODE; + alias MCIWNDM_SETTIMEFORMATA MCIWNDM_SETTIMEFORMAT; + alias MCIWNDM_GETTIMEFORMATA MCIWNDM_GETTIMEFORMAT; + alias MCIWNDM_GETFILENAMEA MCIWNDM_GETFILENAME; + alias MCIWNDM_GETDEVICEA MCIWNDM_GETDEVICE; + alias MCIWNDM_GETERRORA MCIWNDM_GETERROR; + alias MCIWNDM_NEWA MCIWNDM_NEW; + alias MCIWNDM_RETURNSTRINGA MCIWNDM_RETURNSTRING; + alias MCIWNDM_OPENA MCIWNDM_OPEN; } enum { - MCIWNDM_NOTIFYMODE = WM_USER + 200, - MCIWNDM_NOTIFYPOS = WM_USER + 201, - MCIWNDM_NOTIFYSIZE = WM_USER + 202, - MCIWNDM_NOTIFYMEDIA = WM_USER + 203, - MCIWNDM_NOTIFYERROR = WM_USER + 205, + MCIWNDM_NOTIFYMODE = WM_USER + 200, + MCIWNDM_NOTIFYPOS = WM_USER + 201, + MCIWNDM_NOTIFYSIZE = WM_USER + 202, + MCIWNDM_NOTIFYMEDIA = WM_USER + 203, + MCIWNDM_NOTIFYERROR = WM_USER + 205, } const MCIWND_START = -1; const MCIWND_END = -2; enum { - MCI_CLOSE = 0x0804, - MCI_PLAY = 0x0806, - MCI_SEEK = 0x0807, - MCI_STOP = 0x0808, - MCI_PAUSE = 0x0809, - MCI_STEP = 0x080E, - MCI_RECORD = 0x080F, - MCI_SAVE = 0x0813, - MCI_CUT = 0x0851, - MCI_COPY = 0x0852, - MCI_PASTE = 0x0853, - MCI_RESUME = 0x0855, - MCI_DELETE = 0x0856, + MCI_CLOSE = 0x0804, + MCI_PLAY = 0x0806, + MCI_SEEK = 0x0807, + MCI_STOP = 0x0808, + MCI_PAUSE = 0x0809, + MCI_STEP = 0x080E, + MCI_RECORD = 0x080F, + MCI_SAVE = 0x0813, + MCI_CUT = 0x0851, + MCI_COPY = 0x0852, + MCI_PASTE = 0x0853, + MCI_RESUME = 0x0855, + MCI_DELETE = 0x0856, } enum { - MCI_MODE_NOT_READY = 524, - MCI_MODE_STOP, - MCI_MODE_PLAY, - MCI_MODE_RECORD, - MCI_MODE_SEEK, - MCI_MODE_PAUSE, - MCI_MODE_OPEN, + MCI_MODE_NOT_READY = 524, + MCI_MODE_STOP, + MCI_MODE_PLAY, + MCI_MODE_RECORD, + MCI_MODE_SEEK, + MCI_MODE_PAUSE, + MCI_MODE_OPEN, } alias TypeDef!(HANDLE) HVIDEO; @@ -1826,54 +1826,54 @@ alias HVIDEO* LPHVIDEO; // Error Return Values enum { - DV_ERR_OK = 0, - DV_ERR_BASE = 1, - DV_ERR_NONSPECIFIC = DV_ERR_BASE, - DV_ERR_BADFORMAT = DV_ERR_BASE + 1, - DV_ERR_STILLPLAYING = DV_ERR_BASE + 2, - DV_ERR_UNPREPARED = DV_ERR_BASE + 3, - DV_ERR_SYNC = DV_ERR_BASE + 4, - DV_ERR_TOOMANYCHANNELS = DV_ERR_BASE + 5, - DV_ERR_NOTDETECTED = DV_ERR_BASE + 6, - DV_ERR_BADINSTALL = DV_ERR_BASE + 7, - DV_ERR_CREATEPALETTE = DV_ERR_BASE + 8, - DV_ERR_SIZEFIELD = DV_ERR_BASE + 9, - DV_ERR_PARAM1 = DV_ERR_BASE + 10, - DV_ERR_PARAM2 = DV_ERR_BASE + 11, - DV_ERR_CONFIG1 = DV_ERR_BASE + 12, - DV_ERR_CONFIG2 = DV_ERR_BASE + 13, - DV_ERR_FLAGS = DV_ERR_BASE + 14, - DV_ERR_13 = DV_ERR_BASE + 15, - DV_ERR_NOTSUPPORTED = DV_ERR_BASE + 16, - DV_ERR_NOMEM = DV_ERR_BASE + 17, - DV_ERR_ALLOCATED = DV_ERR_BASE + 18, - DV_ERR_BADDEVICEID = DV_ERR_BASE + 19, - DV_ERR_INVALHANDLE = DV_ERR_BASE + 20, - DV_ERR_BADERRNUM = DV_ERR_BASE + 21, - DV_ERR_NO_BUFFERS = DV_ERR_BASE + 22, - DV_ERR_MEM_CONFLICT = DV_ERR_BASE + 23, - DV_ERR_IO_CONFLICT = DV_ERR_BASE + 24, - DV_ERR_DMA_CONFLICT = DV_ERR_BASE + 25, - DV_ERR_INT_CONFLICT = DV_ERR_BASE + 26, - DV_ERR_PROTECT_ONLY = DV_ERR_BASE + 27, - DV_ERR_LASTERROR = DV_ERR_BASE + 27, - DV_ERR_USER_MSG = DV_ERR_BASE + 1000, + DV_ERR_OK = 0, + DV_ERR_BASE = 1, + DV_ERR_NONSPECIFIC = DV_ERR_BASE, + DV_ERR_BADFORMAT = DV_ERR_BASE + 1, + DV_ERR_STILLPLAYING = DV_ERR_BASE + 2, + DV_ERR_UNPREPARED = DV_ERR_BASE + 3, + DV_ERR_SYNC = DV_ERR_BASE + 4, + DV_ERR_TOOMANYCHANNELS = DV_ERR_BASE + 5, + DV_ERR_NOTDETECTED = DV_ERR_BASE + 6, + DV_ERR_BADINSTALL = DV_ERR_BASE + 7, + DV_ERR_CREATEPALETTE = DV_ERR_BASE + 8, + DV_ERR_SIZEFIELD = DV_ERR_BASE + 9, + DV_ERR_PARAM1 = DV_ERR_BASE + 10, + DV_ERR_PARAM2 = DV_ERR_BASE + 11, + DV_ERR_CONFIG1 = DV_ERR_BASE + 12, + DV_ERR_CONFIG2 = DV_ERR_BASE + 13, + DV_ERR_FLAGS = DV_ERR_BASE + 14, + DV_ERR_13 = DV_ERR_BASE + 15, + DV_ERR_NOTSUPPORTED = DV_ERR_BASE + 16, + DV_ERR_NOMEM = DV_ERR_BASE + 17, + DV_ERR_ALLOCATED = DV_ERR_BASE + 18, + DV_ERR_BADDEVICEID = DV_ERR_BASE + 19, + DV_ERR_INVALHANDLE = DV_ERR_BASE + 20, + DV_ERR_BADERRNUM = DV_ERR_BASE + 21, + DV_ERR_NO_BUFFERS = DV_ERR_BASE + 22, + DV_ERR_MEM_CONFLICT = DV_ERR_BASE + 23, + DV_ERR_IO_CONFLICT = DV_ERR_BASE + 24, + DV_ERR_DMA_CONFLICT = DV_ERR_BASE + 25, + DV_ERR_INT_CONFLICT = DV_ERR_BASE + 26, + DV_ERR_PROTECT_ONLY = DV_ERR_BASE + 27, + DV_ERR_LASTERROR = DV_ERR_BASE + 27, + DV_ERR_USER_MSG = DV_ERR_BASE + 1000, } // Callback Messages enum { - MM_DRVM_OPEN = 0x3D0, - MM_DRVM_CLOSE, - MM_DRVM_DATA, - MM_DRVM_ERROR, + MM_DRVM_OPEN = 0x3D0, + MM_DRVM_CLOSE, + MM_DRVM_DATA, + MM_DRVM_ERROR, } enum { - DV_VM_OPEN = MM_DRVM_OPEN, - DV_VM_CLOSE = MM_DRVM_CLOSE, - DV_VM_DATA = MM_DRVM_DATA, - DV_VM_ERROR = MM_DRVM_ERROR, + DV_VM_OPEN = MM_DRVM_OPEN, + DV_VM_CLOSE = MM_DRVM_CLOSE, + DV_VM_DATA = MM_DRVM_DATA, + DV_VM_ERROR = MM_DRVM_ERROR, } /** @@ -1881,42 +1881,42 @@ enum { */ struct VIDEOHDR { - LPBYTE lpData; - DWORD dwBufferLength; - DWORD dwBytesUsed; - DWORD dwTimeCaptured; - DWORD_PTR dwUser; - DWORD dwFlags; + LPBYTE lpData; + DWORD dwBufferLength; + DWORD dwBytesUsed; + DWORD dwTimeCaptured; + DWORD_PTR dwUser; + DWORD dwFlags; DWORD_PTR[4]dwReserved; } alias VIDEOHDR* PVIDEOHDR, LPVIDEOHDR; enum { - VHDR_DONE = 0x00000001, - VHDR_PREPARED = 0x00000002, - VHDR_INQUEUE = 0x00000004, - VHDR_KEYFRAME = 0x00000008, - VHDR_VALID = 0x0000000F, + VHDR_DONE = 0x00000001, + VHDR_PREPARED = 0x00000002, + VHDR_INQUEUE = 0x00000004, + VHDR_KEYFRAME = 0x00000008, + VHDR_VALID = 0x0000000F, } struct CHANNEL_CAPS { - DWORD dwFlags; - DWORD dwSrcRectXMod; - DWORD dwSrcRectYMod; - DWORD dwSrcRectWidthMod; - DWORD dwSrcRectHeightMod; - DWORD dwDstRectXMod; - DWORD dwDstRectYMod; - DWORD dwDstRectWidthMod; - DWORD dwDstRectHeightMod; + DWORD dwFlags; + DWORD dwSrcRectXMod; + DWORD dwSrcRectYMod; + DWORD dwSrcRectWidthMod; + DWORD dwSrcRectHeightMod; + DWORD dwDstRectXMod; + DWORD dwDstRectYMod; + DWORD dwDstRectWidthMod; + DWORD dwDstRectHeightMod; } alias CHANNEL_CAPS* PCHANNEL_CAPS, LPCHANNEL_CAPS; enum { - VCAPS_OVERLAY = 0x00000001, - VCAPS_SRC_CAN_CLIP = 0x00000002, - VCAPS_DST_CAN_CLIP = 0x00000004, - VCAPS_CAN_SCALE = 0x00000008, + VCAPS_OVERLAY = 0x00000001, + VCAPS_SRC_CAN_CLIP = 0x00000002, + VCAPS_DST_CAN_CLIP = 0x00000004, + VCAPS_CAN_SCALE = 0x00000008, } /** @@ -1924,22 +1924,22 @@ enum { */ enum { - VIDEO_EXTERNALIN = 0x0001, - VIDEO_EXTERNALOUT = 0x0002, - VIDEO_IN = 0x0004, - VIDEO_OUT = 0x0008, - VIDEO_DLG_QUERY = 0x0010, + VIDEO_EXTERNALIN = 0x0001, + VIDEO_EXTERNALOUT = 0x0002, + VIDEO_IN = 0x0004, + VIDEO_OUT = 0x0008, + VIDEO_DLG_QUERY = 0x0010, } enum { - VIDEO_CONFIGURE_QUERYSIZE = 0x0001, - VIDEO_CONFIGURE_CURRENT = 0x0010, - VIDEO_CONFIGURE_NOMINAL = 0x0020, - VIDEO_CONFIGURE_MIN = 0x0040, - VIDEO_CONFIGURE_MAX = 0x0080, - VIDEO_CONFIGURE_SET = 0x1000, - VIDEO_CONFIGURE_GET = 0x2000, - VIDEO_CONFIGURE_QUERY = 0x8000, + VIDEO_CONFIGURE_QUERYSIZE = 0x0001, + VIDEO_CONFIGURE_CURRENT = 0x0010, + VIDEO_CONFIGURE_NOMINAL = 0x0020, + VIDEO_CONFIGURE_MIN = 0x0040, + VIDEO_CONFIGURE_MAX = 0x0080, + VIDEO_CONFIGURE_SET = 0x1000, + VIDEO_CONFIGURE_GET = 0x2000, + VIDEO_CONFIGURE_QUERY = 0x8000, } /** @@ -1947,14 +1947,14 @@ enum { */ enum { - DVM_USER = 0x4000, - DVM_CONFIGURE_START = 0x1000, - DVM_CONFIGURE_END = 0x1FFF, - DVM_PALETTE = DVM_CONFIGURE_START + 1, - DVM_FORMAT = DVM_CONFIGURE_START + 2, - DVM_PALETTERGB555 = DVM_CONFIGURE_START + 3, - DVM_SRC_RECT = DVM_CONFIGURE_START + 4, - DVM_DST_RECT = DVM_CONFIGURE_START + 5, + DVM_USER = 0x4000, + DVM_CONFIGURE_START = 0x1000, + DVM_CONFIGURE_END = 0x1FFF, + DVM_PALETTE = DVM_CONFIGURE_START + 1, + DVM_FORMAT = DVM_CONFIGURE_START + 2, + DVM_PALETTERGB555 = DVM_CONFIGURE_START + 3, + DVM_SRC_RECT = DVM_CONFIGURE_START + 4, + DVM_DST_RECT = DVM_CONFIGURE_START + 5, } /** @@ -1962,148 +1962,148 @@ enum { */ LRESULT AVICapSM(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { - if (IsWindow(hWnd)) { - return SendMessage(hWnd, msg, wParam, lParam); - } - return 0; + if (IsWindow(hWnd)) { + return SendMessage(hWnd, msg, wParam, lParam); + } + return 0; } enum { - WM_CAP_START = WM_USER, - WM_CAP_UNICODE_START = WM_USER + 100, + WM_CAP_START = WM_USER, + WM_CAP_UNICODE_START = WM_USER + 100, - WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1, - WM_CAP_SET_CALLBACK_ERRORA = WM_CAP_START + 2, - WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3, + WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1, + WM_CAP_SET_CALLBACK_ERRORA = WM_CAP_START + 2, + WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3, - WM_CAP_SET_CALLBACK_ERRORW = WM_CAP_UNICODE_START + 2, - WM_CAP_SET_CALLBACK_STATUSW = WM_CAP_UNICODE_START + 3, + WM_CAP_SET_CALLBACK_ERRORW = WM_CAP_UNICODE_START + 2, + WM_CAP_SET_CALLBACK_STATUSW = WM_CAP_UNICODE_START + 3, } version(Unicode) { - alias WM_CAP_SET_CALLBACK_ERRORW WM_CAP_SET_CALLBACK_ERROR; - alias WM_CAP_SET_CALLBACK_STATUSW WM_CAP_SET_CALLBACK_STATUS; + alias WM_CAP_SET_CALLBACK_ERRORW WM_CAP_SET_CALLBACK_ERROR; + alias WM_CAP_SET_CALLBACK_STATUSW WM_CAP_SET_CALLBACK_STATUS; } else { // Unicode - alias WM_CAP_SET_CALLBACK_ERRORA WM_CAP_SET_CALLBACK_ERROR; - alias WM_CAP_SET_CALLBACK_STATUSA WM_CAP_SET_CALLBACK_STATUS; + alias WM_CAP_SET_CALLBACK_ERRORA WM_CAP_SET_CALLBACK_ERROR; + alias WM_CAP_SET_CALLBACK_STATUSA WM_CAP_SET_CALLBACK_STATUS; } enum { - WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4, - WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5, - WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6, - WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7, - WM_CAP_GET_USER_DATA = WM_CAP_START + 8, - WM_CAP_SET_USER_DATA = WM_CAP_START + 9, - WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10, - WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11, - WM_CAP_DRIVER_GET_NAMEA = WM_CAP_START + 12, - WM_CAP_DRIVER_GET_VERSIONA = WM_CAP_START + 13, + WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4, + WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5, + WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6, + WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7, + WM_CAP_GET_USER_DATA = WM_CAP_START + 8, + WM_CAP_SET_USER_DATA = WM_CAP_START + 9, + WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10, + WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11, + WM_CAP_DRIVER_GET_NAMEA = WM_CAP_START + 12, + WM_CAP_DRIVER_GET_VERSIONA = WM_CAP_START + 13, - WM_CAP_DRIVER_GET_NAMEW = WM_CAP_UNICODE_START + 12, - WM_CAP_DRIVER_GET_VERSIONW = WM_CAP_UNICODE_START + 13, + WM_CAP_DRIVER_GET_NAMEW = WM_CAP_UNICODE_START + 12, + WM_CAP_DRIVER_GET_VERSIONW = WM_CAP_UNICODE_START + 13, } version(Unicode) { - alias WM_CAP_DRIVER_GET_NAMEW WM_CAP_DRIVER_GET_NAME; - alias WM_CAP_DRIVER_GET_VERSIONW WM_CAP_DRIVER_GET_VERSION; + alias WM_CAP_DRIVER_GET_NAMEW WM_CAP_DRIVER_GET_NAME; + alias WM_CAP_DRIVER_GET_VERSIONW WM_CAP_DRIVER_GET_VERSION; } else { // Unicode - alias WM_CAP_DRIVER_GET_NAMEA WM_CAP_DRIVER_GET_NAME; - alias WM_CAP_DRIVER_GET_VERSIONA WM_CAP_DRIVER_GET_VERSION; + alias WM_CAP_DRIVER_GET_NAMEA WM_CAP_DRIVER_GET_NAME; + alias WM_CAP_DRIVER_GET_VERSIONA WM_CAP_DRIVER_GET_VERSION; } enum { - WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14, - WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20, - WM_CAP_FILE_GET_CAPTURE_FILEA = WM_CAP_START + 21, - WM_CAP_FILE_SAVEASA = WM_CAP_START + 23, - WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25, + WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14, + WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20, + WM_CAP_FILE_GET_CAPTURE_FILEA = WM_CAP_START + 21, + WM_CAP_FILE_SAVEASA = WM_CAP_START + 23, + WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25, - WM_CAP_FILE_SET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 20, - WM_CAP_FILE_GET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 21, - WM_CAP_FILE_SAVEASW = WM_CAP_UNICODE_START + 23, - WM_CAP_FILE_SAVEDIBW = WM_CAP_UNICODE_START + 25, + WM_CAP_FILE_SET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 20, + WM_CAP_FILE_GET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 21, + WM_CAP_FILE_SAVEASW = WM_CAP_UNICODE_START + 23, + WM_CAP_FILE_SAVEDIBW = WM_CAP_UNICODE_START + 25, } version(Unicode) { - alias WM_CAP_FILE_SET_CAPTURE_FILEW WM_CAP_FILE_SET_CAPTURE_FILE; - alias WM_CAP_FILE_GET_CAPTURE_FILEW WM_CAP_FILE_GET_CAPTURE_FILE; - alias WM_CAP_FILE_SAVEASW WM_CAP_FILE_SAVEAS; - alias WM_CAP_FILE_SAVEDIBW WM_CAP_FILE_SAVEDIB; + alias WM_CAP_FILE_SET_CAPTURE_FILEW WM_CAP_FILE_SET_CAPTURE_FILE; + alias WM_CAP_FILE_GET_CAPTURE_FILEW WM_CAP_FILE_GET_CAPTURE_FILE; + alias WM_CAP_FILE_SAVEASW WM_CAP_FILE_SAVEAS; + alias WM_CAP_FILE_SAVEDIBW WM_CAP_FILE_SAVEDIB; } else { // Unicode - alias WM_CAP_FILE_SET_CAPTURE_FILEA WM_CAP_FILE_SET_CAPTURE_FILE; - alias WM_CAP_FILE_GET_CAPTURE_FILEA WM_CAP_FILE_GET_CAPTURE_FILE; - alias WM_CAP_FILE_SAVEASA WM_CAP_FILE_SAVEAS; - alias WM_CAP_FILE_SAVEDIBA WM_CAP_FILE_SAVEDIB; + alias WM_CAP_FILE_SET_CAPTURE_FILEA WM_CAP_FILE_SET_CAPTURE_FILE; + alias WM_CAP_FILE_GET_CAPTURE_FILEA WM_CAP_FILE_GET_CAPTURE_FILE; + alias WM_CAP_FILE_SAVEASA WM_CAP_FILE_SAVEAS; + alias WM_CAP_FILE_SAVEDIBA WM_CAP_FILE_SAVEDIB; } enum { - WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22, - WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24, - WM_CAP_EDIT_COPY = WM_CAP_START + 30, - WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35, - WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36, - WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41, - WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42, - WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43, - WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44, - WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45, - WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46, - WM_CAP_SET_PREVIEW = WM_CAP_START + 50, - WM_CAP_SET_OVERLAY = WM_CAP_START + 51, - WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52, - WM_CAP_SET_SCALE = WM_CAP_START + 53, - WM_CAP_GET_STATUS = WM_CAP_START + 54, - WM_CAP_SET_SCROLL = WM_CAP_START + 55, - WM_CAP_GRAB_FRAME = WM_CAP_START + 60, - WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61, - WM_CAP_SEQUENCE = WM_CAP_START + 62, - WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63, - WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64, - WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65, - WM_CAP_SET_MCI_DEVICEA = WM_CAP_START + 66, - WM_CAP_GET_MCI_DEVICEA = WM_CAP_START + 67, - - WM_CAP_SET_MCI_DEVICEW = WM_CAP_UNICODE_START + 66, - WM_CAP_GET_MCI_DEVICEW = WM_CAP_UNICODE_START + 67, + WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22, + WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24, + WM_CAP_EDIT_COPY = WM_CAP_START + 30, + WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35, + WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36, + WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41, + WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42, + WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43, + WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44, + WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45, + WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46, + WM_CAP_SET_PREVIEW = WM_CAP_START + 50, + WM_CAP_SET_OVERLAY = WM_CAP_START + 51, + WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52, + WM_CAP_SET_SCALE = WM_CAP_START + 53, + WM_CAP_GET_STATUS = WM_CAP_START + 54, + WM_CAP_SET_SCROLL = WM_CAP_START + 55, + WM_CAP_GRAB_FRAME = WM_CAP_START + 60, + WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61, + WM_CAP_SEQUENCE = WM_CAP_START + 62, + WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63, + WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64, + WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65, + WM_CAP_SET_MCI_DEVICEA = WM_CAP_START + 66, + WM_CAP_GET_MCI_DEVICEA = WM_CAP_START + 67, + + WM_CAP_SET_MCI_DEVICEW = WM_CAP_UNICODE_START + 66, + WM_CAP_GET_MCI_DEVICEW = WM_CAP_UNICODE_START + 67, } version(Unicode) { - alias WM_CAP_SET_MCI_DEVICEW WM_CAP_SET_MCI_DEVICE; - alias WM_CAP_GET_MCI_DEVICEW WM_CAP_GET_MCI_DEVICE; + alias WM_CAP_SET_MCI_DEVICEW WM_CAP_SET_MCI_DEVICE; + alias WM_CAP_GET_MCI_DEVICEW WM_CAP_GET_MCI_DEVICE; } else { // Unicode - alias WM_CAP_SET_MCI_DEVICEA WM_CAP_SET_MCI_DEVICE; - alias WM_CAP_GET_MCI_DEVICEA WM_CAP_GET_MCI_DEVICE; + alias WM_CAP_SET_MCI_DEVICEA WM_CAP_SET_MCI_DEVICE; + alias WM_CAP_GET_MCI_DEVICEA WM_CAP_GET_MCI_DEVICE; } enum { - WM_CAP_STOP = WM_CAP_START + 68, - WM_CAP_ABORT = WM_CAP_START + 69, - WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70, - WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71, - WM_CAP_SINGLE_FRAME = WM_CAP_START + 72, - WM_CAP_PAL_OPENA = WM_CAP_START + 80, - WM_CAP_PAL_SAVEA = WM_CAP_START + 81, + WM_CAP_STOP = WM_CAP_START + 68, + WM_CAP_ABORT = WM_CAP_START + 69, + WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70, + WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71, + WM_CAP_SINGLE_FRAME = WM_CAP_START + 72, + WM_CAP_PAL_OPENA = WM_CAP_START + 80, + WM_CAP_PAL_SAVEA = WM_CAP_START + 81, - WM_CAP_PAL_OPENW = WM_CAP_UNICODE_START + 80, - WM_CAP_PAL_SAVEW = WM_CAP_UNICODE_START + 81, + WM_CAP_PAL_OPENW = WM_CAP_UNICODE_START + 80, + WM_CAP_PAL_SAVEW = WM_CAP_UNICODE_START + 81, } version(Unicode) { - alias WM_CAP_PAL_OPENW WM_CAP_PAL_OPEN; - alias WM_CAP_PAL_SAVEW WM_CAP_PAL_SAVE; + alias WM_CAP_PAL_OPENW WM_CAP_PAL_OPEN; + alias WM_CAP_PAL_SAVEW WM_CAP_PAL_SAVE; } else { // Unicode - alias WM_CAP_PAL_OPENA WM_CAP_PAL_OPEN; - alias WM_CAP_PAL_SAVEA WM_CAP_PAL_SAVE; + alias WM_CAP_PAL_OPENA WM_CAP_PAL_OPEN; + alias WM_CAP_PAL_SAVEA WM_CAP_PAL_SAVE; } enum { - WM_CAP_PAL_PASTE = WM_CAP_START + 82, - WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83, - WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84, - WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85, - WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW, - WM_CAP_END = WM_CAP_UNICODE_END, + WM_CAP_PAL_PASTE = WM_CAP_START + 82, + WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83, + WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84, + WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85, + WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW, + WM_CAP_END = WM_CAP_UNICODE_END, } /** @@ -2185,67 +2185,67 @@ BOOL capPaletteManual(HWND hWnd, WPARAM fGrab, LPARAM iColors) { return cast(BO */ struct CAPDRIVERCAPS { - UINT wDeviceIndex; - BOOL fHasOverlay; - BOOL fHasDlgVideoSource; - BOOL fHasDlgVideoFormat; - BOOL fHasDlgVideoDisplay; - BOOL fCaptureInitialized; - BOOL fDriverSuppliesPalettes; - HANDLE hVideoIn; - HANDLE hVideoOut; - HANDLE hVideoExtIn; - HANDLE hVideoExtOut; + UINT wDeviceIndex; + BOOL fHasOverlay; + BOOL fHasDlgVideoSource; + BOOL fHasDlgVideoFormat; + BOOL fHasDlgVideoDisplay; + BOOL fCaptureInitialized; + BOOL fDriverSuppliesPalettes; + HANDLE hVideoIn; + HANDLE hVideoOut; + HANDLE hVideoExtIn; + HANDLE hVideoExtOut; } alias CAPDRIVERCAPS* PCAPDRIVERCAPS, LPCAPDRIVERCAPS; struct CAPSTATUS { - UINT uiImageWidth; - UINT uiImageHeight; - BOOL fLiveWindow; - BOOL fOverlayWindow; - BOOL fScale; - POINT ptScroll; - BOOL fUsingDefaultPalette; - BOOL fAudioHardware; - BOOL fCapFileExists; - DWORD dwCurrentVideoFrame; - DWORD dwCurrentVideoFramesDropped; - DWORD dwCurrentWaveSamples; - DWORD dwCurrentTimeElapsedMS; - HPALETTE hPalCurrent; - BOOL fCapturingNow; - DWORD dwReturn; - UINT wNumVideoAllocated; - UINT wNumAudioAllocated; + UINT uiImageWidth; + UINT uiImageHeight; + BOOL fLiveWindow; + BOOL fOverlayWindow; + BOOL fScale; + POINT ptScroll; + BOOL fUsingDefaultPalette; + BOOL fAudioHardware; + BOOL fCapFileExists; + DWORD dwCurrentVideoFrame; + DWORD dwCurrentVideoFramesDropped; + DWORD dwCurrentWaveSamples; + DWORD dwCurrentTimeElapsedMS; + HPALETTE hPalCurrent; + BOOL fCapturingNow; + DWORD dwReturn; + UINT wNumVideoAllocated; + UINT wNumAudioAllocated; } alias CAPSTATUS* PCAPSTATUS, LPCAPSTATUS; struct CAPTUREPARMS { - DWORD dwRequestMicroSecPerFrame; - BOOL fMakeUserHitOKToCapture; - UINT wPercentDropForError; - BOOL fYield; - DWORD dwIndexSize; - UINT wChunkGranularity; - BOOL fUsingDOSMemory; - UINT wNumVideoRequested; - BOOL fCaptureAudio; - UINT wNumAudioRequested; - UINT vKeyAbort; - BOOL fAbortLeftMouse; - BOOL fAbortRightMouse; - BOOL fLimitEnabled; - UINT wTimeLimit; - BOOL fMCIControl; - BOOL fStepMCIDevice; - DWORD dwMCIStartTime; - DWORD dwMCIStopTime; - BOOL fStepCaptureAt2x; - UINT wStepCaptureAverageFrames; - DWORD dwAudioBufferSize; - BOOL fDisableWriteCache; - UINT AVStreamMaster; + DWORD dwRequestMicroSecPerFrame; + BOOL fMakeUserHitOKToCapture; + UINT wPercentDropForError; + BOOL fYield; + DWORD dwIndexSize; + UINT wChunkGranularity; + BOOL fUsingDOSMemory; + UINT wNumVideoRequested; + BOOL fCaptureAudio; + UINT wNumAudioRequested; + UINT vKeyAbort; + BOOL fAbortLeftMouse; + BOOL fAbortRightMouse; + BOOL fLimitEnabled; + UINT wTimeLimit; + BOOL fMCIControl; + BOOL fStepMCIDevice; + DWORD dwMCIStartTime; + DWORD dwMCIStopTime; + BOOL fStepCaptureAt2x; + UINT wStepCaptureAverageFrames; + DWORD dwAudioBufferSize; + BOOL fDisableWriteCache; + UINT AVStreamMaster; } alias CAPTUREPARMS* PCAPTUREPARMS, LPCAPTUREPARMS; @@ -2253,34 +2253,34 @@ const AVSTREAMMASTER_AUDIO = 0; const AVSTREAMMASTER_NONE = 1; struct CAPINFOCHUNK { - FOURCC fccInfoID; - LPVOID lpData; - LONG cbData; + FOURCC fccInfoID; + LPVOID lpData; + LONG cbData; } alias CAPINFOCHUNK* PCAPINFOCHUNK, LPCAPINFOCHUNK; // Callback Definitions extern (Windows) { - alias LRESULT function(HWND hWnd) CAPYIELDCALLBACK; - alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPSTATUSCALLBACKW; - alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPERRORCALLBACKW; - alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPSTATUSCALLBACKA; - alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPERRORCALLBACKA; + alias LRESULT function(HWND hWnd) CAPYIELDCALLBACK; + alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPSTATUSCALLBACKW; + alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPERRORCALLBACKW; + alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPSTATUSCALLBACKA; + alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPERRORCALLBACKA; } version(Unicode) { - alias CAPSTATUSCALLBACKW CAPSTATUSCALLBACK; - alias CAPERRORCALLBACKW CAPERRORCALLBACK; + alias CAPSTATUSCALLBACKW CAPSTATUSCALLBACK; + alias CAPERRORCALLBACKW CAPERRORCALLBACK; } else { // Unicode - alias CAPSTATUSCALLBACKA CAPSTATUSCALLBACK; - alias CAPERRORCALLBACKA CAPERRORCALLBACK; + alias CAPSTATUSCALLBACKA CAPSTATUSCALLBACK; + alias CAPERRORCALLBACKA CAPERRORCALLBACK; } extern (Windows) { - alias LRESULT function(HWND hWnd, LPVIDEOHDR lpVHdr) CAPVIDEOCALLBACK; - alias LRESULT function(HWND hWnd, LPWAVEHDR lpWHdr) CAPWAVECALLBACK; - alias LRESULT function(HWND hWnd, int nState) CAPCONTROLCALLBACK; + alias LRESULT function(HWND hWnd, LPVIDEOHDR lpVHdr) CAPVIDEOCALLBACK; + alias LRESULT function(HWND hWnd, LPWAVEHDR lpWHdr) CAPWAVECALLBACK; + alias LRESULT function(HWND hWnd, int nState) CAPCONTROLCALLBACK; } // CapControlCallback states @@ -2288,18 +2288,18 @@ const CONTROLCALLBACK_PREROLL = 1; const CONTROLCALLBACK_CAPTURING = 2; extern (Windows) { - HWND capCreateCaptureWindowA(LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); - BOOL capGetDriverDescriptionA(UINT wDriverIndex, LPSTR lpszName, int cbName, LPSTR lpszVer, int cbVer); - HWND capCreateCaptureWindowW(LPCWSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); - BOOL capGetDriverDescriptionW(UINT wDriverIndex, LPWSTR lpszName, int cbName, LPWSTR lpszVer, int cbVer); + HWND capCreateCaptureWindowA(LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); + BOOL capGetDriverDescriptionA(UINT wDriverIndex, LPSTR lpszName, int cbName, LPSTR lpszVer, int cbVer); + HWND capCreateCaptureWindowW(LPCWSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); + BOOL capGetDriverDescriptionW(UINT wDriverIndex, LPWSTR lpszName, int cbName, LPWSTR lpszVer, int cbVer); } version(Unicode) { - alias capCreateCaptureWindowW capCreateCaptureWindow; - alias capGetDriverDescriptionW capGetDriverDescription; + alias capCreateCaptureWindowW capCreateCaptureWindow; + alias capGetDriverDescriptionW capGetDriverDescription; } else { // Unicode - alias capCreateCaptureWindowA capCreateCaptureWindow; - alias capGetDriverDescriptionA capGetDriverDescription; + alias capCreateCaptureWindowA capCreateCaptureWindow; + alias capGetDriverDescriptionA capGetDriverDescription; } // New Information chunk IDs @@ -2308,71 +2308,71 @@ const infotypeSMPTE_TIME = mmioFOURCC!('I', 'S', 'M', 'P'); // status and error callbacks enum { - IDS_CAP_BEGIN = 300, - IDS_CAP_END = 301, - - IDS_CAP_INFO = 401, - IDS_CAP_OUTOFMEM = 402, - IDS_CAP_FILEEXISTS = 403, - IDS_CAP_ERRORPALOPEN = 404, - IDS_CAP_ERRORPALSAVE = 405, - IDS_CAP_ERRORDIBSAVE = 406, - IDS_CAP_DEFAVIEXT = 407, - IDS_CAP_DEFPALEXT = 408, - IDS_CAP_CANTOPEN = 409, - IDS_CAP_SEQ_MSGSTART = 410, - IDS_CAP_SEQ_MSGSTOP = 411, - - IDS_CAP_VIDEDITERR = 412, - IDS_CAP_READONLYFILE = 413, - IDS_CAP_WRITEERROR = 414, - IDS_CAP_NODISKSPACE = 415, - IDS_CAP_SETFILESIZE = 416, - IDS_CAP_SAVEASPERCENT = 417, - - IDS_CAP_DRIVER_ERROR = 418, - - IDS_CAP_WAVE_OPEN_ERROR = 419, - IDS_CAP_WAVE_ALLOC_ERROR = 420, - IDS_CAP_WAVE_PREPARE_ERROR = 421, - IDS_CAP_WAVE_ADD_ERROR = 422, - IDS_CAP_WAVE_SIZE_ERROR = 423, - - IDS_CAP_VIDEO_OPEN_ERROR = 424, - IDS_CAP_VIDEO_ALLOC_ERROR = 425, - IDS_CAP_VIDEO_PREPARE_ERROR = 426, - IDS_CAP_VIDEO_ADD_ERROR = 427, - IDS_CAP_VIDEO_SIZE_ERROR = 428, - - IDS_CAP_FILE_OPEN_ERROR = 429, - IDS_CAP_FILE_WRITE_ERROR = 430, - IDS_CAP_RECORDING_ERROR = 431, - IDS_CAP_RECORDING_ERROR2 = 432, - IDS_CAP_AVI_INIT_ERROR = 433, - IDS_CAP_NO_FRAME_CAP_ERROR = 434, - IDS_CAP_NO_PALETTE_WARN = 435, - IDS_CAP_MCI_CONTROL_ERROR = 436, - IDS_CAP_MCI_CANT_STEP_ERROR = 437, - IDS_CAP_NO_AUDIO_CAP_ERROR = 438, - IDS_CAP_AVI_DRAWDIB_ERROR = 439, - IDS_CAP_COMPRESSOR_ERROR = 440, - IDS_CAP_AUDIO_DROP_ERROR = 441, - IDS_CAP_AUDIO_DROP_COMPERROR = 442, - - IDS_CAP_STAT_LIVE_MODE = 500, - IDS_CAP_STAT_OVERLAY_MODE = 501, - IDS_CAP_STAT_CAP_INIT = 502, - IDS_CAP_STAT_CAP_FINI = 503, - IDS_CAP_STAT_PALETTE_BUILD = 504, - IDS_CAP_STAT_OPTPAL_BUILD = 505, - IDS_CAP_STAT_I_FRAMES = 506, - IDS_CAP_STAT_L_FRAMES = 507, - IDS_CAP_STAT_CAP_L_FRAMES = 508, - IDS_CAP_STAT_CAP_AUDIO = 509, - IDS_CAP_STAT_VIDEOCURRENT = 510, - IDS_CAP_STAT_VIDEOAUDIO = 511, - IDS_CAP_STAT_VIDEOONLY = 512, - IDS_CAP_STAT_FRAMESDROPPED = 513, + IDS_CAP_BEGIN = 300, + IDS_CAP_END = 301, + + IDS_CAP_INFO = 401, + IDS_CAP_OUTOFMEM = 402, + IDS_CAP_FILEEXISTS = 403, + IDS_CAP_ERRORPALOPEN = 404, + IDS_CAP_ERRORPALSAVE = 405, + IDS_CAP_ERRORDIBSAVE = 406, + IDS_CAP_DEFAVIEXT = 407, + IDS_CAP_DEFPALEXT = 408, + IDS_CAP_CANTOPEN = 409, + IDS_CAP_SEQ_MSGSTART = 410, + IDS_CAP_SEQ_MSGSTOP = 411, + + IDS_CAP_VIDEDITERR = 412, + IDS_CAP_READONLYFILE = 413, + IDS_CAP_WRITEERROR = 414, + IDS_CAP_NODISKSPACE = 415, + IDS_CAP_SETFILESIZE = 416, + IDS_CAP_SAVEASPERCENT = 417, + + IDS_CAP_DRIVER_ERROR = 418, + + IDS_CAP_WAVE_OPEN_ERROR = 419, + IDS_CAP_WAVE_ALLOC_ERROR = 420, + IDS_CAP_WAVE_PREPARE_ERROR = 421, + IDS_CAP_WAVE_ADD_ERROR = 422, + IDS_CAP_WAVE_SIZE_ERROR = 423, + + IDS_CAP_VIDEO_OPEN_ERROR = 424, + IDS_CAP_VIDEO_ALLOC_ERROR = 425, + IDS_CAP_VIDEO_PREPARE_ERROR = 426, + IDS_CAP_VIDEO_ADD_ERROR = 427, + IDS_CAP_VIDEO_SIZE_ERROR = 428, + + IDS_CAP_FILE_OPEN_ERROR = 429, + IDS_CAP_FILE_WRITE_ERROR = 430, + IDS_CAP_RECORDING_ERROR = 431, + IDS_CAP_RECORDING_ERROR2 = 432, + IDS_CAP_AVI_INIT_ERROR = 433, + IDS_CAP_NO_FRAME_CAP_ERROR = 434, + IDS_CAP_NO_PALETTE_WARN = 435, + IDS_CAP_MCI_CONTROL_ERROR = 436, + IDS_CAP_MCI_CANT_STEP_ERROR = 437, + IDS_CAP_NO_AUDIO_CAP_ERROR = 438, + IDS_CAP_AVI_DRAWDIB_ERROR = 439, + IDS_CAP_COMPRESSOR_ERROR = 440, + IDS_CAP_AUDIO_DROP_ERROR = 441, + IDS_CAP_AUDIO_DROP_COMPERROR = 442, + + IDS_CAP_STAT_LIVE_MODE = 500, + IDS_CAP_STAT_OVERLAY_MODE = 501, + IDS_CAP_STAT_CAP_INIT = 502, + IDS_CAP_STAT_CAP_FINI = 503, + IDS_CAP_STAT_PALETTE_BUILD = 504, + IDS_CAP_STAT_OPTPAL_BUILD = 505, + IDS_CAP_STAT_I_FRAMES = 506, + IDS_CAP_STAT_L_FRAMES = 507, + IDS_CAP_STAT_CAP_L_FRAMES = 508, + IDS_CAP_STAT_CAP_AUDIO = 509, + IDS_CAP_STAT_VIDEOCURRENT = 510, + IDS_CAP_STAT_VIDEOAUDIO = 511, + IDS_CAP_STAT_VIDEOONLY = 512, + IDS_CAP_STAT_FRAMESDROPPED = 513, } /** @@ -2380,16 +2380,16 @@ enum { */ extern (Windows) { - BOOL GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn); - BOOL GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn); - BOOL GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn); - BOOL GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn); + BOOL GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn); + BOOL GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn); + BOOL GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn); + BOOL GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn); } version(Unicode) { - alias GetOpenFileNamePreviewW GetOpenFileNamePreview; - alias GetSaveFileNamePreviewW GetSaveFileNamePreview; + alias GetOpenFileNamePreviewW GetOpenFileNamePreview; + alias GetSaveFileNamePreviewW GetSaveFileNamePreview; } else { // Unicode - alias GetOpenFileNamePreviewA GetOpenFileNamePreview; - alias GetSaveFileNamePreviewA GetSaveFileNamePreview; + alias GetOpenFileNamePreviewA GetOpenFileNamePreview; + alias GetSaveFileNamePreviewA GetSaveFileNamePreview; } diff --git a/src/core/sys/windows/w32api.d b/src/core/sys/windows/w32api.d index 3473a0ca1d..cf39f544c0 100644 --- a/src/core/sys/windows/w32api.d +++ b/src/core/sys/windows/w32api.d @@ -21,74 +21,74 @@ enum __W32API_MINOR_VERSION = 17; * removed in order to simplify the bindings. */ version (Windows10) { - enum uint _WIN32_WINNT = 0x604; + enum uint _WIN32_WINNT = 0x604; } else version (Windows8_1) { // also Windows2012R2 - enum uint _WIN32_WINNT = 0x603; + enum uint _WIN32_WINNT = 0x603; } else version (Windows8) { // also Windows2012 - enum uint _WIN32_WINNT = 0x602; + enum uint _WIN32_WINNT = 0x602; } else version (Windows7) { // also Windows2008R2 - enum uint _WIN32_WINNT = 0x601; + enum uint _WIN32_WINNT = 0x601; } else version (WindowsVista) { // also Windows2008 - enum uint _WIN32_WINNT = 0x600; + enum uint _WIN32_WINNT = 0x600; } else version (Windows2003) { // also WindowsHomeServer, WindowsXP64 - enum uint _WIN32_WINNT = 0x502; + enum uint _WIN32_WINNT = 0x502; } else version (WindowsXP) { - enum uint _WIN32_WINNT = 0x501; + enum uint _WIN32_WINNT = 0x501; } else version (Windows2000) { - // Current DMD doesn't support any version of Windows older than XP, - // but third-party compilers could use this - enum uint _WIN32_WINNT = 0x500; + // Current DMD doesn't support any version of Windows older than XP, + // but third-party compilers could use this + enum uint _WIN32_WINNT = 0x500; } else { - enum uint _WIN32_WINNT = 0x501; + enum uint _WIN32_WINNT = 0x501; } version (IE10) { - enum uint _WIN32_IE = 0xA00; + enum uint _WIN32_IE = 0xA00; } else version (IE9) { - enum uint _WIN32_IE = 0x900; + enum uint _WIN32_IE = 0x900; } else version (IE8) { - enum uint _WIN32_IE = 0x800; + enum uint _WIN32_IE = 0x800; } else version (IE7) { - enum uint _WIN32_IE = 0x700; + enum uint _WIN32_IE = 0x700; } else version (IE602) { - enum uint _WIN32_IE = 0x603; + enum uint _WIN32_IE = 0x603; } else version (IE601) { - enum uint _WIN32_IE = 0x601; + enum uint _WIN32_IE = 0x601; } else version (IE6) { - enum uint _WIN32_IE = 0x600; + enum uint _WIN32_IE = 0x600; } else version (IE56) { - enum uint _WIN32_IE = 0x560; + enum uint _WIN32_IE = 0x560; } else version (IE501) { - enum uint _WIN32_IE = 0x501; + enum uint _WIN32_IE = 0x501; } else version (IE5) { - enum uint _WIN32_IE = 0x500; + enum uint _WIN32_IE = 0x500; } else version (IE401) { - enum uint _WIN32_IE = 0x401; + enum uint _WIN32_IE = 0x401; } else version (IE4) { - enum uint _WIN32_IE = 0x400; + enum uint _WIN32_IE = 0x400; } else version (IE3) { - enum uint _WIN32_IE = 0x300; + enum uint _WIN32_IE = 0x300; } else static if (_WIN32_WINNT >= 0x410) { - enum uint _WIN32_IE = 0x400; + enum uint _WIN32_IE = 0x400; } else { - enum uint _WIN32_IE = 0; + enum uint _WIN32_IE = 0; } debug (WindowsUnitTest) { - unittest { - printf("Windows NT version: %03x\n", _WIN32_WINNT); - printf("IE version: %03x\n", _WIN32_IE); - } + unittest { + printf("Windows NT version: %03x\n", _WIN32_WINNT); + printf("IE version: %03x\n", _WIN32_IE); + } } version (Unicode) { - enum bool _WIN32_UNICODE = true; - package template DECLARE_AW(string name) { - mixin("alias " ~ name ~ "W " ~ name ~ ";"); - } + enum bool _WIN32_UNICODE = true; + package template DECLARE_AW(string name) { + mixin("alias " ~ name ~ "W " ~ name ~ ";"); + } } else { - enum bool _WIN32_UNICODE = false; - package template DECLARE_AW(string name) { - mixin("alias " ~ name ~ "A " ~ name ~ ";"); - } + enum bool _WIN32_UNICODE = false; + package template DECLARE_AW(string name) { + mixin("alias " ~ name ~ "A " ~ name ~ ";"); + } } diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index eb966679fd..cbe98277f2 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -44,9 +44,9 @@ SetSwapAreaSize(w), LimitEmsPages(n), Yield() //FIXME: // #ifndef UNDER_CE - int WinMain(HINSTANCE, HINSTANCE, LPSTR, int); + int WinMain(HINSTANCE, HINSTANCE, LPSTR, int); #else - int WinMain(HINSTANCE, HINSTANCE, LPWSTR, int); + int WinMain(HINSTANCE, HINSTANCE, LPWSTR, int); #endif int wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); @@ -64,28 +64,28 @@ alias void va_list; // These functions are problematic version(UseNtoSKernel) {}else { - /* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h - as __fastcall functions, but are exported from kernel32.dll as __stdcall */ - static if (_WIN32_WINNT >= 0x501) { - VOID InitializeSListHead(PSLIST_HEADER); - } - LONG InterlockedCompareExchange(LPLONG, LONG, LONG); - // PVOID WINAPI InterlockedCompareExchangePointer(PVOID*, PVOID, PVOID); - (PVOID)InterlockedCompareExchange((LPLONG)(d) (PVOID)InterlockedCompareExchange((LPLONG)(d), (LONG)(e), (LONG)(c)) - LONG InterlockedDecrement(LPLONG); - LONG InterlockedExchange(LPLONG, LONG); - // PVOID WINAPI InterlockedExchangePointer(PVOID*, PVOID); - (PVOID)InterlockedExchange((LPLONG)((PVOID)InterlockedExchange((LPLONG)(t), (LONG)(v)) - LONG InterlockedExchangeAdd(LPLONG, LONG); - - static if (_WIN32_WINNT >= 0x501) { - PSLIST_ENTRY InterlockedFlushSList(PSLIST_HEADER); - } - LONG InterlockedIncrement(LPLONG); - static if (_WIN32_WINNT >= 0x501) { - PSLIST_ENTRY InterlockedPopEntrySList(PSLIST_HEADER); - PSLIST_ENTRY InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); - } + /* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h + as __fastcall functions, but are exported from kernel32.dll as __stdcall */ + static if (_WIN32_WINNT >= 0x501) { + VOID InitializeSListHead(PSLIST_HEADER); + } + LONG InterlockedCompareExchange(LPLONG, LONG, LONG); + // PVOID WINAPI InterlockedCompareExchangePointer(PVOID*, PVOID, PVOID); + (PVOID)InterlockedCompareExchange((LPLONG)(d) (PVOID)InterlockedCompareExchange((LPLONG)(d), (LONG)(e), (LONG)(c)) + LONG InterlockedDecrement(LPLONG); + LONG InterlockedExchange(LPLONG, LONG); + // PVOID WINAPI InterlockedExchangePointer(PVOID*, PVOID); + (PVOID)InterlockedExchange((LPLONG)((PVOID)InterlockedExchange((LPLONG)(t), (LONG)(v)) + LONG InterlockedExchangeAdd(LPLONG, LONG); + + static if (_WIN32_WINNT >= 0x501) { + PSLIST_ENTRY InterlockedFlushSList(PSLIST_HEADER); + } + LONG InterlockedIncrement(LPLONG); + static if (_WIN32_WINNT >= 0x501) { + PSLIST_ENTRY InterlockedPopEntrySList(PSLIST_HEADER); + PSLIST_ENTRY InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); + } } // #endif // __USE_NTOSKRNL__ //-------------------------------------- +/ @@ -95,113 +95,113 @@ version(UseNtoSKernel) {}else { // Communications provider type enum : DWORD { - PST_UNSPECIFIED, - PST_RS232, - PST_PARALLELPORT, - PST_RS422, - PST_RS423, - PST_RS449, - PST_MODEM, // = 6 - PST_FAX = 0x0021, - PST_SCANNER = 0x0022, - PST_NETWORK_BRIDGE = 0x0100, - PST_LAT = 0x0101, - PST_TCPIP_TELNET = 0x0102, - PST_X25 = 0x0103 + PST_UNSPECIFIED, + PST_RS232, + PST_PARALLELPORT, + PST_RS422, + PST_RS423, + PST_RS449, + PST_MODEM, // = 6 + PST_FAX = 0x0021, + PST_SCANNER = 0x0022, + PST_NETWORK_BRIDGE = 0x0100, + PST_LAT = 0x0101, + PST_TCPIP_TELNET = 0x0102, + PST_X25 = 0x0103 } // Max baud rate enum : DWORD { - BAUD_075 = 0x00000001, - BAUD_110 = 0x00000002, - BAUD_134_5 = 0x00000004, - BAUD_150 = 0x00000008, - BAUD_300 = 0x00000010, - BAUD_600 = 0x00000020, - BAUD_1200 = 0x00000040, - BAUD_1800 = 0x00000080, - BAUD_2400 = 0x00000100, - BAUD_4800 = 0x00000200, - BAUD_7200 = 0x00000400, - BAUD_9600 = 0x00000800, - BAUD_14400 = 0x00001000, - BAUD_19200 = 0x00002000, - BAUD_38400 = 0x00004000, - BAUD_56K = 0x00008000, - BAUD_128K = 0x00010000, - BAUD_115200 = 0x00020000, - BAUD_57600 = 0x00040000, - BAUD_USER = 0x10000000 + BAUD_075 = 0x00000001, + BAUD_110 = 0x00000002, + BAUD_134_5 = 0x00000004, + BAUD_150 = 0x00000008, + BAUD_300 = 0x00000010, + BAUD_600 = 0x00000020, + BAUD_1200 = 0x00000040, + BAUD_1800 = 0x00000080, + BAUD_2400 = 0x00000100, + BAUD_4800 = 0x00000200, + BAUD_7200 = 0x00000400, + BAUD_9600 = 0x00000800, + BAUD_14400 = 0x00001000, + BAUD_19200 = 0x00002000, + BAUD_38400 = 0x00004000, + BAUD_56K = 0x00008000, + BAUD_128K = 0x00010000, + BAUD_115200 = 0x00020000, + BAUD_57600 = 0x00040000, + BAUD_USER = 0x10000000 } // Comm capabilities enum : DWORD { - PCF_DTRDSR = 0x0001, - PCF_RTSCTS = 0x0002, - PCF_RLSD = 0x0004, - PCF_PARITY_CHECK = 0x0008, - PCF_XONXOFF = 0x0010, - PCF_SETXCHAR = 0x0020, - PCF_TOTALTIMEOUTS = 0x0040, - PCF_INTTIMEOUTS = 0x0080, - PCF_SPECIALCHARS = 0x0100, - PCF_16BITMODE = 0x0200 + PCF_DTRDSR = 0x0001, + PCF_RTSCTS = 0x0002, + PCF_RLSD = 0x0004, + PCF_PARITY_CHECK = 0x0008, + PCF_XONXOFF = 0x0010, + PCF_SETXCHAR = 0x0020, + PCF_TOTALTIMEOUTS = 0x0040, + PCF_INTTIMEOUTS = 0x0080, + PCF_SPECIALCHARS = 0x0100, + PCF_16BITMODE = 0x0200 } enum : DWORD { - SP_PARITY = 1, - SP_BAUD = 2, - SP_DATABITS = 4, - SP_STOPBITS = 8, - SP_HANDSHAKING = 16, - SP_PARITY_CHECK = 32, - SP_RLSD = 64 + SP_PARITY = 1, + SP_BAUD = 2, + SP_DATABITS = 4, + SP_STOPBITS = 8, + SP_HANDSHAKING = 16, + SP_PARITY_CHECK = 32, + SP_RLSD = 64 } enum : DWORD { - DATABITS_5 = 1, - DATABITS_6 = 2, - DATABITS_7 = 4, - DATABITS_8 = 8, - DATABITS_16 = 16, - DATABITS_16X = 32 + DATABITS_5 = 1, + DATABITS_6 = 2, + DATABITS_7 = 4, + DATABITS_8 = 8, + DATABITS_16 = 16, + DATABITS_16X = 32 } enum : WORD { - STOPBITS_10 = 0x0001, - STOPBITS_15 = 0x0002, - STOPBITS_20 = 0x0004, - PARITY_NONE = 0x0100, - PARITY_ODD = 0x0200, - PARITY_EVEN = 0x0400, - PARITY_MARK = 0x0800, - PARITY_SPACE = 0x1000 + STOPBITS_10 = 0x0001, + STOPBITS_15 = 0x0002, + STOPBITS_20 = 0x0004, + PARITY_NONE = 0x0100, + PARITY_ODD = 0x0200, + PARITY_EVEN = 0x0400, + PARITY_MARK = 0x0800, + PARITY_SPACE = 0x1000 } // used by dwServiceMask enum SP_SERIALCOMM = 1; struct COMMPROP { - WORD wPacketLength; - WORD wPacketVersion; - DWORD dwServiceMask; - DWORD dwReserved1; - DWORD dwMaxTxQueue; - DWORD dwMaxRxQueue; - DWORD dwMaxBaud; - DWORD dwProvSubType; - DWORD dwProvCapabilities; - DWORD dwSettableParams; - DWORD dwSettableBaud; - WORD wSettableData; - WORD wSettableStopParity; - DWORD dwCurrentTxQueue; - DWORD dwCurrentRxQueue; - DWORD dwProvSpec1; - DWORD dwProvSpec2; - WCHAR _wcProvChar; - - WCHAR* wcProvChar() { return &_wcProvChar; } + WORD wPacketLength; + WORD wPacketVersion; + DWORD dwServiceMask; + DWORD dwReserved1; + DWORD dwMaxTxQueue; + DWORD dwMaxRxQueue; + DWORD dwMaxBaud; + DWORD dwProvSubType; + DWORD dwProvCapabilities; + DWORD dwSettableParams; + DWORD dwSettableBaud; + WORD wSettableData; + WORD wSettableStopParity; + DWORD dwCurrentTxQueue; + DWORD dwCurrentRxQueue; + DWORD dwProvSpec1; + DWORD dwProvSpec2; + WCHAR _wcProvChar; + + WCHAR* wcProvChar() { return &_wcProvChar; } } alias COMMPROP* LPCOMMPROP; @@ -209,190 +209,190 @@ alias COMMPROP* LPCOMMPROP; // for DEBUG_EVENT enum : DWORD { - EXCEPTION_DEBUG_EVENT = 1, - CREATE_THREAD_DEBUG_EVENT, - CREATE_PROCESS_DEBUG_EVENT, - EXIT_THREAD_DEBUG_EVENT, - EXIT_PROCESS_DEBUG_EVENT, - LOAD_DLL_DEBUG_EVENT, - UNLOAD_DLL_DEBUG_EVENT, - OUTPUT_DEBUG_STRING_EVENT, - RIP_EVENT + EXCEPTION_DEBUG_EVENT = 1, + CREATE_THREAD_DEBUG_EVENT, + CREATE_PROCESS_DEBUG_EVENT, + EXIT_THREAD_DEBUG_EVENT, + EXIT_PROCESS_DEBUG_EVENT, + LOAD_DLL_DEBUG_EVENT, + UNLOAD_DLL_DEBUG_EVENT, + OUTPUT_DEBUG_STRING_EVENT, + RIP_EVENT } const HFILE HFILE_ERROR = cast(HFILE) (-1); // for SetFilePointer() enum : DWORD { - FILE_BEGIN = 0, - FILE_CURRENT = 1, - FILE_END = 2 + FILE_BEGIN = 0, + FILE_CURRENT = 1, + FILE_END = 2 } const DWORD INVALID_SET_FILE_POINTER = -1; // for OpenFile() deprecated enum : UINT { - OF_READ = 0, - OF_WRITE = 0x0001, - OF_READWRITE = 0x0002, - OF_SHARE_COMPAT = 0, - OF_SHARE_EXCLUSIVE = 0x0010, - OF_SHARE_DENY_WRITE = 0x0020, - OF_SHARE_DENY_READ = 0x0030, - OF_SHARE_DENY_NONE = 0x0040, - OF_PARSE = 0x0100, - OF_DELETE = 0x0200, - OF_VERIFY = 0x0400, - OF_CANCEL = 0x0800, - OF_CREATE = 0x1000, - OF_PROMPT = 0x2000, - OF_EXIST = 0x4000, - OF_REOPEN = 0x8000 + OF_READ = 0, + OF_WRITE = 0x0001, + OF_READWRITE = 0x0002, + OF_SHARE_COMPAT = 0, + OF_SHARE_EXCLUSIVE = 0x0010, + OF_SHARE_DENY_WRITE = 0x0020, + OF_SHARE_DENY_READ = 0x0030, + OF_SHARE_DENY_NONE = 0x0040, + OF_PARSE = 0x0100, + OF_DELETE = 0x0200, + OF_VERIFY = 0x0400, + OF_CANCEL = 0x0800, + OF_CREATE = 0x1000, + OF_PROMPT = 0x2000, + OF_EXIST = 0x4000, + OF_REOPEN = 0x8000 } enum : DWORD { - NMPWAIT_NOWAIT = 1, - NMPWAIT_WAIT_FOREVER = -1, - NMPWAIT_USE_DEFAULT_WAIT = 0 + NMPWAIT_NOWAIT = 1, + NMPWAIT_WAIT_FOREVER = -1, + NMPWAIT_USE_DEFAULT_WAIT = 0 } // for ClearCommError() const DWORD - CE_RXOVER = 0x0001, - CE_OVERRUN = 0x0002, - CE_RXPARITY = 0x0004, - CE_FRAME = 0x0008, - CE_BREAK = 0x0010, - CE_TXFULL = 0x0100, - CE_PTO = 0x0200, - CE_IOE = 0x0400, - CE_DNS = 0x0800, - CE_OOP = 0x1000, - CE_MODE = 0x8000; + CE_RXOVER = 0x0001, + CE_OVERRUN = 0x0002, + CE_RXPARITY = 0x0004, + CE_FRAME = 0x0008, + CE_BREAK = 0x0010, + CE_TXFULL = 0x0100, + CE_PTO = 0x0200, + CE_IOE = 0x0400, + CE_DNS = 0x0800, + CE_OOP = 0x1000, + CE_MODE = 0x8000; // for CopyProgressRoutine callback. enum : DWORD { - PROGRESS_CONTINUE = 0, - PROGRESS_CANCEL = 1, - PROGRESS_STOP = 2, - PROGRESS_QUIET = 3 + PROGRESS_CONTINUE = 0, + PROGRESS_CANCEL = 1, + PROGRESS_STOP = 2, + PROGRESS_QUIET = 3 } enum : DWORD { - CALLBACK_CHUNK_FINISHED = 0, - CALLBACK_STREAM_SWITCH = 1 + CALLBACK_CHUNK_FINISHED = 0, + CALLBACK_STREAM_SWITCH = 1 } // CopyFileEx() enum : DWORD { - COPY_FILE_FAIL_IF_EXISTS = 1, - COPY_FILE_RESTARTABLE = 2 + COPY_FILE_FAIL_IF_EXISTS = 1, + COPY_FILE_RESTARTABLE = 2 } enum : DWORD { - FILE_MAP_COPY = 1, - FILE_MAP_WRITE = 2, - FILE_MAP_READ = 4, - FILE_MAP_ALL_ACCESS = 0x000F001F + FILE_MAP_COPY = 1, + FILE_MAP_WRITE = 2, + FILE_MAP_READ = 4, + FILE_MAP_ALL_ACCESS = 0x000F001F } enum : DWORD { - MUTEX_ALL_ACCESS = 0x001f0001, - MUTEX_MODIFY_STATE = 0x00000001, - SEMAPHORE_ALL_ACCESS = 0x001f0003, - SEMAPHORE_MODIFY_STATE = 0x00000002, - EVENT_ALL_ACCESS = 0x001f0003, - EVENT_MODIFY_STATE = 0x00000002 + MUTEX_ALL_ACCESS = 0x001f0001, + MUTEX_MODIFY_STATE = 0x00000001, + SEMAPHORE_ALL_ACCESS = 0x001f0003, + SEMAPHORE_MODIFY_STATE = 0x00000002, + EVENT_ALL_ACCESS = 0x001f0003, + EVENT_MODIFY_STATE = 0x00000002 } // CreateNamedPipe() enum : DWORD { - PIPE_ACCESS_INBOUND = 1, - PIPE_ACCESS_OUTBOUND = 2, - PIPE_ACCESS_DUPLEX = 3 + PIPE_ACCESS_INBOUND = 1, + PIPE_ACCESS_OUTBOUND = 2, + PIPE_ACCESS_DUPLEX = 3 } const DWORD - PIPE_TYPE_BYTE = 0, - PIPE_TYPE_MESSAGE = 4, - PIPE_READMODE_BYTE = 0, - PIPE_READMODE_MESSAGE = 2, - PIPE_WAIT = 0, - PIPE_NOWAIT = 1; + PIPE_TYPE_BYTE = 0, + PIPE_TYPE_MESSAGE = 4, + PIPE_READMODE_BYTE = 0, + PIPE_READMODE_MESSAGE = 2, + PIPE_WAIT = 0, + PIPE_NOWAIT = 1; // GetNamedPipeInfo() const DWORD - PIPE_CLIENT_END = 0, - PIPE_SERVER_END = 1; + PIPE_CLIENT_END = 0, + PIPE_SERVER_END = 1; const DWORD PIPE_UNLIMITED_INSTANCES = 255; // dwCreationFlags for CreateProcess() and CreateProcessAsUser() enum : DWORD { - DEBUG_PROCESS = 0x00000001, - DEBUG_ONLY_THIS_PROCESS = 0x00000002, - CREATE_SUSPENDED = 0x00000004, - DETACHED_PROCESS = 0x00000008, - CREATE_NEW_CONSOLE = 0x00000010, - NORMAL_PRIORITY_CLASS = 0x00000020, - IDLE_PRIORITY_CLASS = 0x00000040, - HIGH_PRIORITY_CLASS = 0x00000080, - REALTIME_PRIORITY_CLASS = 0x00000100, - CREATE_NEW_PROCESS_GROUP = 0x00000200, - CREATE_UNICODE_ENVIRONMENT = 0x00000400, - CREATE_SEPARATE_WOW_VDM = 0x00000800, - CREATE_SHARED_WOW_VDM = 0x00001000, - CREATE_FORCEDOS = 0x00002000, - BELOW_NORMAL_PRIORITY_CLASS = 0x00004000, - ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000, - CREATE_BREAKAWAY_FROM_JOB = 0x01000000, - CREATE_WITH_USERPROFILE = 0x02000000, - CREATE_DEFAULT_ERROR_MODE = 0x04000000, - CREATE_NO_WINDOW = 0x08000000, - PROFILE_USER = 0x10000000, - PROFILE_KERNEL = 0x20000000, - PROFILE_SERVER = 0x40000000 + DEBUG_PROCESS = 0x00000001, + DEBUG_ONLY_THIS_PROCESS = 0x00000002, + CREATE_SUSPENDED = 0x00000004, + DETACHED_PROCESS = 0x00000008, + CREATE_NEW_CONSOLE = 0x00000010, + NORMAL_PRIORITY_CLASS = 0x00000020, + IDLE_PRIORITY_CLASS = 0x00000040, + HIGH_PRIORITY_CLASS = 0x00000080, + REALTIME_PRIORITY_CLASS = 0x00000100, + CREATE_NEW_PROCESS_GROUP = 0x00000200, + CREATE_UNICODE_ENVIRONMENT = 0x00000400, + CREATE_SEPARATE_WOW_VDM = 0x00000800, + CREATE_SHARED_WOW_VDM = 0x00001000, + CREATE_FORCEDOS = 0x00002000, + BELOW_NORMAL_PRIORITY_CLASS = 0x00004000, + ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000, + CREATE_BREAKAWAY_FROM_JOB = 0x01000000, + CREATE_WITH_USERPROFILE = 0x02000000, + CREATE_DEFAULT_ERROR_MODE = 0x04000000, + CREATE_NO_WINDOW = 0x08000000, + PROFILE_USER = 0x10000000, + PROFILE_KERNEL = 0x20000000, + PROFILE_SERVER = 0x40000000 } const DWORD CONSOLE_TEXTMODE_BUFFER = 1; // CreateFile() enum : DWORD { - CREATE_NEW = 1, - CREATE_ALWAYS, - OPEN_EXISTING, - OPEN_ALWAYS, - TRUNCATE_EXISTING + CREATE_NEW = 1, + CREATE_ALWAYS, + OPEN_EXISTING, + OPEN_ALWAYS, + TRUNCATE_EXISTING } // CreateFile() const DWORD - FILE_FLAG_WRITE_THROUGH = 0x80000000, - FILE_FLAG_OVERLAPPED = 0x40000000, - FILE_FLAG_NO_BUFFERING = 0x20000000, - FILE_FLAG_RANDOM_ACCESS = 0x10000000, - FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000, - FILE_FLAG_DELETE_ON_CLOSE = 0x04000000, - FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, - FILE_FLAG_POSIX_SEMANTICS = 0x01000000, - FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000, - FILE_FLAG_OPEN_NO_RECALL = 0x00100000; + FILE_FLAG_WRITE_THROUGH = 0x80000000, + FILE_FLAG_OVERLAPPED = 0x40000000, + FILE_FLAG_NO_BUFFERING = 0x20000000, + FILE_FLAG_RANDOM_ACCESS = 0x10000000, + FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000, + FILE_FLAG_DELETE_ON_CLOSE = 0x04000000, + FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, + FILE_FLAG_POSIX_SEMANTICS = 0x01000000, + FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000, + FILE_FLAG_OPEN_NO_RECALL = 0x00100000; static if (_WIN32_WINNT >= 0x500) { - const DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; + const DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; } // for CreateFile() const DWORD - SECURITY_ANONYMOUS = SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16, - SECURITY_IDENTIFICATION = SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16, - SECURITY_IMPERSONATION = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16, - SECURITY_DELEGATION = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation<<16, - SECURITY_CONTEXT_TRACKING = 0x00040000, - SECURITY_EFFECTIVE_ONLY = 0x00080000, - SECURITY_SQOS_PRESENT = 0x00100000, - SECURITY_VALID_SQOS_FLAGS = 0x001F0000; + SECURITY_ANONYMOUS = SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16, + SECURITY_IDENTIFICATION = SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16, + SECURITY_IMPERSONATION = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16, + SECURITY_DELEGATION = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation<<16, + SECURITY_CONTEXT_TRACKING = 0x00040000, + SECURITY_EFFECTIVE_ONLY = 0x00080000, + SECURITY_SQOS_PRESENT = 0x00100000, + SECURITY_VALID_SQOS_FLAGS = 0x001F0000; // Thread exit code @@ -405,228 +405,228 @@ const DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; // GetBinaryType() enum : DWORD { - SCS_32BIT_BINARY = 0, - SCS_DOS_BINARY, - SCS_WOW_BINARY, - SCS_PIF_BINARY, - SCS_POSIX_BINARY, - SCS_OS216_BINARY + SCS_32BIT_BINARY = 0, + SCS_DOS_BINARY, + SCS_WOW_BINARY, + SCS_PIF_BINARY, + SCS_POSIX_BINARY, + SCS_OS216_BINARY } const size_t - MAX_COMPUTERNAME_LENGTH = 15, - HW_PROFILE_GUIDLEN = 39, - MAX_PROFILE_LEN = 80; + MAX_COMPUTERNAME_LENGTH = 15, + HW_PROFILE_GUIDLEN = 39, + MAX_PROFILE_LEN = 80; // HW_PROFILE_INFO const DWORD - DOCKINFO_UNDOCKED = 1, - DOCKINFO_DOCKED = 2, - DOCKINFO_USER_SUPPLIED = 4, - DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED, - DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED; + DOCKINFO_UNDOCKED = 1, + DOCKINFO_DOCKED = 2, + DOCKINFO_USER_SUPPLIED = 4, + DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED, + DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED; // DriveType(), RealDriveType() enum : int { - DRIVE_UNKNOWN = 0, - DRIVE_NO_ROOT_DIR, - DRIVE_REMOVABLE, - DRIVE_FIXED, - DRIVE_REMOTE, - DRIVE_CDROM, - DRIVE_RAMDISK + DRIVE_UNKNOWN = 0, + DRIVE_NO_ROOT_DIR, + DRIVE_REMOVABLE, + DRIVE_FIXED, + DRIVE_REMOTE, + DRIVE_CDROM, + DRIVE_RAMDISK } // GetFileType() enum : DWORD { - FILE_TYPE_UNKNOWN = 0, - FILE_TYPE_DISK, - FILE_TYPE_CHAR, - FILE_TYPE_PIPE, - FILE_TYPE_REMOTE = 0x8000 + FILE_TYPE_UNKNOWN = 0, + FILE_TYPE_DISK, + FILE_TYPE_CHAR, + FILE_TYPE_PIPE, + FILE_TYPE_REMOTE = 0x8000 } // Get/SetHandleInformation() const DWORD - HANDLE_FLAG_INHERIT = 0x01, - HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x02; + HANDLE_FLAG_INHERIT = 0x01, + HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x02; enum : DWORD { - STD_INPUT_HANDLE = 0xFFFFFFF6, - STD_OUTPUT_HANDLE = 0xFFFFFFF5, - STD_ERROR_HANDLE = 0xFFFFFFF4 + STD_INPUT_HANDLE = 0xFFFFFFF6, + STD_OUTPUT_HANDLE = 0xFFFFFFF5, + STD_ERROR_HANDLE = 0xFFFFFFF4 } enum HANDLE INVALID_HANDLE_VALUE = cast(HANDLE) (-1); enum : DWORD { - GET_TAPE_MEDIA_INFORMATION = 0, - GET_TAPE_DRIVE_INFORMATION = 1 + GET_TAPE_MEDIA_INFORMATION = 0, + GET_TAPE_DRIVE_INFORMATION = 1 } enum : DWORD { - SET_TAPE_MEDIA_INFORMATION = 0, - SET_TAPE_DRIVE_INFORMATION = 1 + SET_TAPE_MEDIA_INFORMATION = 0, + SET_TAPE_DRIVE_INFORMATION = 1 } // SetThreadPriority()/GetThreadPriority() enum : int { - THREAD_PRIORITY_IDLE = -15, - THREAD_PRIORITY_LOWEST = -2, - THREAD_PRIORITY_BELOW_NORMAL = -1, - THREAD_PRIORITY_NORMAL = 0, - THREAD_PRIORITY_ABOVE_NORMAL = 1, - THREAD_PRIORITY_HIGHEST = 2, - THREAD_PRIORITY_TIME_CRITICAL = 15, - THREAD_PRIORITY_ERROR_RETURN = 2147483647 + THREAD_PRIORITY_IDLE = -15, + THREAD_PRIORITY_LOWEST = -2, + THREAD_PRIORITY_BELOW_NORMAL = -1, + THREAD_PRIORITY_NORMAL = 0, + THREAD_PRIORITY_ABOVE_NORMAL = 1, + THREAD_PRIORITY_HIGHEST = 2, + THREAD_PRIORITY_TIME_CRITICAL = 15, + THREAD_PRIORITY_ERROR_RETURN = 2147483647 } enum : DWORD { - TIME_ZONE_ID_UNKNOWN, - TIME_ZONE_ID_STANDARD, - TIME_ZONE_ID_DAYLIGHT, - TIME_ZONE_ID_INVALID = 0xFFFFFFFF + TIME_ZONE_ID_UNKNOWN, + TIME_ZONE_ID_STANDARD, + TIME_ZONE_ID_DAYLIGHT, + TIME_ZONE_ID_INVALID = 0xFFFFFFFF } const DWORD - FS_CASE_SENSITIVE = 1, - FS_CASE_IS_PRESERVED = 2, - FS_UNICODE_STORED_ON_DISK = 4, - FS_PERSISTENT_ACLS = 8, - FS_FILE_COMPRESSION = 16, - FS_VOL_IS_COMPRESSED = 32768; + FS_CASE_SENSITIVE = 1, + FS_CASE_IS_PRESERVED = 2, + FS_UNICODE_STORED_ON_DISK = 4, + FS_PERSISTENT_ACLS = 8, + FS_FILE_COMPRESSION = 16, + FS_VOL_IS_COMPRESSED = 32768; // Flags for GlobalAlloc const UINT - GMEM_FIXED = 0, - GMEM_MOVEABLE = 0x0002, - GMEM_ZEROINIT = 0x0040, - GPTR = 0x0040, - GHND = 0x0042, - GMEM_MODIFY = 0x0080, // used only for GlobalRealloc - GMEM_VALID_FLAGS = 0x7F72; + GMEM_FIXED = 0, + GMEM_MOVEABLE = 0x0002, + GMEM_ZEROINIT = 0x0040, + GPTR = 0x0040, + GHND = 0x0042, + GMEM_MODIFY = 0x0080, // used only for GlobalRealloc + GMEM_VALID_FLAGS = 0x7F72; /+ // Obselete flags (Win16 only) - GMEM_NOCOMPACT=16; - GMEM_NODISCARD=32; - GMEM_DISCARDABLE=256; - GMEM_NOT_BANKED=4096; - GMEM_LOWER=4096; - GMEM_SHARE=8192; - GMEM_DDESHARE=8192; + GMEM_NOCOMPACT=16; + GMEM_NODISCARD=32; + GMEM_DISCARDABLE=256; + GMEM_NOT_BANKED=4096; + GMEM_LOWER=4096; + GMEM_SHARE=8192; + GMEM_DDESHARE=8192; - GMEM_LOCKCOUNT=255; + GMEM_LOCKCOUNT=255; // for GlobalFlags() - GMEM_DISCARDED = 16384; - GMEM_INVALID_HANDLE = 32768; + GMEM_DISCARDED = 16384; + GMEM_INVALID_HANDLE = 32768; - GMEM_NOTIFY = 16384; + GMEM_NOTIFY = 16384; +/ const UINT - LMEM_FIXED = 0, - LMEM_MOVEABLE = 0x0002, - LMEM_NONZEROLPTR = 0, - NONZEROLPTR = 0, - LMEM_NONZEROLHND = 0x0002, - NONZEROLHND = 0x0002, - LMEM_DISCARDABLE = 0x0F00, - LMEM_NOCOMPACT = 0x0010, - LMEM_NODISCARD = 0x0020, - LMEM_ZEROINIT = 0x0040, - LPTR = 0x0040, - LHND = 0x0042, - LMEM_MODIFY = 0x0080, - LMEM_LOCKCOUNT = 0x00FF, - LMEM_DISCARDED = 0x4000, - LMEM_INVALID_HANDLE = 0x8000; + LMEM_FIXED = 0, + LMEM_MOVEABLE = 0x0002, + LMEM_NONZEROLPTR = 0, + NONZEROLPTR = 0, + LMEM_NONZEROLHND = 0x0002, + NONZEROLHND = 0x0002, + LMEM_DISCARDABLE = 0x0F00, + LMEM_NOCOMPACT = 0x0010, + LMEM_NODISCARD = 0x0020, + LMEM_ZEROINIT = 0x0040, + LPTR = 0x0040, + LHND = 0x0042, + LMEM_MODIFY = 0x0080, + LMEM_LOCKCOUNT = 0x00FF, + LMEM_DISCARDED = 0x4000, + LMEM_INVALID_HANDLE = 0x8000; // used in EXCEPTION_RECORD enum : DWORD { - STATUS_WAIT_0 = 0, - STATUS_ABANDONED_WAIT_0 = 0x00000080, - STATUS_USER_APC = 0x000000C0, - STATUS_TIMEOUT = 0x00000102, - STATUS_PENDING = 0x00000103, - - STATUS_SEGMENT_NOTIFICATION = 0x40000005, - STATUS_GUARD_PAGE_VIOLATION = 0x80000001, - STATUS_DATATYPE_MISALIGNMENT = 0x80000002, - STATUS_BREAKPOINT = 0x80000003, - STATUS_SINGLE_STEP = 0x80000004, - - STATUS_ACCESS_VIOLATION = 0xC0000005, - STATUS_IN_PAGE_ERROR = 0xC0000006, - STATUS_INVALID_HANDLE = 0xC0000008, - - STATUS_NO_MEMORY = 0xC0000017, - STATUS_ILLEGAL_INSTRUCTION = 0xC000001D, - STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025, - STATUS_INVALID_DISPOSITION = 0xC0000026, - STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C, - STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D, - STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E, - STATUS_FLOAT_INEXACT_RESULT = 0xC000008F, - STATUS_FLOAT_INVALID_OPERATION = 0xC0000090, - STATUS_FLOAT_OVERFLOW = 0xC0000091, - STATUS_FLOAT_STACK_CHECK = 0xC0000092, - STATUS_FLOAT_UNDERFLOW = 0xC0000093, - STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094, - STATUS_INTEGER_OVERFLOW = 0xC0000095, - STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096, - STATUS_STACK_OVERFLOW = 0xC00000FD, - STATUS_CONTROL_C_EXIT = 0xC000013A, - STATUS_DLL_INIT_FAILED = 0xC0000142, - STATUS_DLL_INIT_FAILED_LOGOFF = 0xC000026B, - - CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT, - - EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION, - EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT, - EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT, - EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP, - EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED, - EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND, - EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO, - EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT, - EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION, - EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW, - EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK, - EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW, - EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO, - EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW, - EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION, - EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR, - EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION, - EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION, - EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW, - EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION, - EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION, - EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE + STATUS_WAIT_0 = 0, + STATUS_ABANDONED_WAIT_0 = 0x00000080, + STATUS_USER_APC = 0x000000C0, + STATUS_TIMEOUT = 0x00000102, + STATUS_PENDING = 0x00000103, + + STATUS_SEGMENT_NOTIFICATION = 0x40000005, + STATUS_GUARD_PAGE_VIOLATION = 0x80000001, + STATUS_DATATYPE_MISALIGNMENT = 0x80000002, + STATUS_BREAKPOINT = 0x80000003, + STATUS_SINGLE_STEP = 0x80000004, + + STATUS_ACCESS_VIOLATION = 0xC0000005, + STATUS_IN_PAGE_ERROR = 0xC0000006, + STATUS_INVALID_HANDLE = 0xC0000008, + + STATUS_NO_MEMORY = 0xC0000017, + STATUS_ILLEGAL_INSTRUCTION = 0xC000001D, + STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025, + STATUS_INVALID_DISPOSITION = 0xC0000026, + STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C, + STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D, + STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E, + STATUS_FLOAT_INEXACT_RESULT = 0xC000008F, + STATUS_FLOAT_INVALID_OPERATION = 0xC0000090, + STATUS_FLOAT_OVERFLOW = 0xC0000091, + STATUS_FLOAT_STACK_CHECK = 0xC0000092, + STATUS_FLOAT_UNDERFLOW = 0xC0000093, + STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094, + STATUS_INTEGER_OVERFLOW = 0xC0000095, + STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096, + STATUS_STACK_OVERFLOW = 0xC00000FD, + STATUS_CONTROL_C_EXIT = 0xC000013A, + STATUS_DLL_INIT_FAILED = 0xC0000142, + STATUS_DLL_INIT_FAILED_LOGOFF = 0xC000026B, + + CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT, + + EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION, + EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT, + EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT, + EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP, + EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED, + EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND, + EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO, + EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT, + EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION, + EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW, + EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK, + EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW, + EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO, + EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW, + EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION, + EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR, + EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION, + EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION, + EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW, + EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION, + EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION, + EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE } // for PROCESS_HEAP_ENTRY const WORD - PROCESS_HEAP_REGION = 1, - PROCESS_HEAP_UNCOMMITTED_RANGE = 2, - PROCESS_HEAP_ENTRY_BUSY = 4, - PROCESS_HEAP_ENTRY_MOVEABLE = 16, - PROCESS_HEAP_ENTRY_DDESHARE = 32; + PROCESS_HEAP_REGION = 1, + PROCESS_HEAP_UNCOMMITTED_RANGE = 2, + PROCESS_HEAP_ENTRY_BUSY = 4, + PROCESS_HEAP_ENTRY_MOVEABLE = 16, + PROCESS_HEAP_ENTRY_DDESHARE = 32; // for LoadLibraryEx() const DWORD - DONT_RESOLVE_DLL_REFERENCES = 0x01, // not for WinME and earlier - LOAD_LIBRARY_AS_DATAFILE = 0x02, - LOAD_WITH_ALTERED_SEARCH_PATH = 0x08, - LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10; // only for XP and later + DONT_RESOLVE_DLL_REFERENCES = 0x01, // not for WinME and earlier + LOAD_LIBRARY_AS_DATAFILE = 0x02, + LOAD_WITH_ALTERED_SEARCH_PATH = 0x08, + LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10; // only for XP and later // for LockFile() const DWORD - LOCKFILE_FAIL_IMMEDIATELY = 1, - LOCKFILE_EXCLUSIVE_LOCK = 2; + LOCKFILE_FAIL_IMMEDIATELY = 1, + LOCKFILE_EXCLUSIVE_LOCK = 2; const MAXIMUM_WAIT_OBJECTS = 64; const MAXIMUM_SUSPEND_COUNT = 0x7F; @@ -637,74 +637,74 @@ const WAIT_ABANDONED_0 = 128; //const WAIT_TIMEOUT=258; // also in winerror.h enum : DWORD { - WAIT_IO_COMPLETION = 0x000000C0, - WAIT_ABANDONED = 0x00000080, - WAIT_FAILED = 0xFFFFFFFF + WAIT_IO_COMPLETION = 0x000000C0, + WAIT_ABANDONED = 0x00000080, + WAIT_FAILED = 0xFFFFFFFF } // PurgeComm() const DWORD - PURGE_TXABORT = 1, - PURGE_RXABORT = 2, - PURGE_TXCLEAR = 4, - PURGE_RXCLEAR = 8; + PURGE_TXABORT = 1, + PURGE_RXABORT = 2, + PURGE_TXCLEAR = 4, + PURGE_RXCLEAR = 8; // ReadEventLog() const DWORD - EVENTLOG_SEQUENTIAL_READ = 1, - EVENTLOG_SEEK_READ = 2, - EVENTLOG_FORWARDS_READ = 4, - EVENTLOG_BACKWARDS_READ = 8; + EVENTLOG_SEQUENTIAL_READ = 1, + EVENTLOG_SEEK_READ = 2, + EVENTLOG_FORWARDS_READ = 4, + EVENTLOG_BACKWARDS_READ = 8; // ReportEvent() enum : WORD { - EVENTLOG_SUCCESS = 0, - EVENTLOG_ERROR_TYPE = 1, - EVENTLOG_WARNING_TYPE = 2, - EVENTLOG_INFORMATION_TYPE = 4, - EVENTLOG_AUDIT_SUCCESS = 8, - EVENTLOG_AUDIT_FAILURE = 16 + EVENTLOG_SUCCESS = 0, + EVENTLOG_ERROR_TYPE = 1, + EVENTLOG_WARNING_TYPE = 2, + EVENTLOG_INFORMATION_TYPE = 4, + EVENTLOG_AUDIT_SUCCESS = 8, + EVENTLOG_AUDIT_FAILURE = 16 } // FormatMessage() const DWORD - FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100, - FORMAT_MESSAGE_IGNORE_INSERTS = 0x0200, - FORMAT_MESSAGE_FROM_STRING = 0x0400, - FORMAT_MESSAGE_FROM_HMODULE = 0x0800, - FORMAT_MESSAGE_FROM_SYSTEM = 0x1000, - FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x2000; + FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100, + FORMAT_MESSAGE_IGNORE_INSERTS = 0x0200, + FORMAT_MESSAGE_FROM_STRING = 0x0400, + FORMAT_MESSAGE_FROM_HMODULE = 0x0800, + FORMAT_MESSAGE_FROM_SYSTEM = 0x1000, + FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x2000; const DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; // also in ddk/ntapi.h // To restore default error mode, call SetErrorMode(0) enum { - SEM_FAILCRITICALERRORS = 0x0001, - SEM_NOGPFAULTERRORBOX = 0x0002, - SEM_NOALIGNMENTFAULTEXCEPT = 0x0004, - SEM_NOOPENFILEERRORBOX = 0x8000 + SEM_FAILCRITICALERRORS = 0x0001, + SEM_NOGPFAULTERRORBOX = 0x0002, + SEM_NOALIGNMENTFAULTEXCEPT = 0x0004, + SEM_NOOPENFILEERRORBOX = 0x8000 } // end ntapi.h enum { - SLE_ERROR = 1, - SLE_MINORERROR, - SLE_WARNING + SLE_ERROR = 1, + SLE_MINORERROR, + SLE_WARNING } const SHUTDOWN_NORETRY = 1; // Return type for exception filters. enum : LONG { - EXCEPTION_EXECUTE_HANDLER = 1, - EXCEPTION_CONTINUE_EXECUTION = -1, - EXCEPTION_CONTINUE_SEARCH = 0 + EXCEPTION_EXECUTE_HANDLER = 1, + EXCEPTION_CONTINUE_EXECUTION = -1, + EXCEPTION_CONTINUE_SEARCH = 0 } enum : ATOM { - MAXINTATOM = 0xC000, - INVALID_ATOM = 0 + MAXINTATOM = 0xC000, + INVALID_ATOM = 0 } const IGNORE = 0; @@ -712,148 +712,148 @@ const INFINITE = 0xFFFFFFFF; // EscapeCommFunction() enum { - SETXOFF = 1, - SETXON, - SETRTS, - CLRRTS, - SETDTR, - CLRDTR, // = 6 - SETBREAK = 8, - CLRBREAK = 9 + SETXOFF = 1, + SETXON, + SETRTS, + CLRRTS, + SETDTR, + CLRDTR, // = 6 + SETBREAK = 8, + CLRBREAK = 9 } // for SetCommMask() const DWORD - EV_RXCHAR = 0x0001, - EV_RXFLAG = 0x0002, - EV_TXEMPTY = 0x0004, - EV_CTS = 0x0008, - EV_DSR = 0x0010, - EV_RLSD = 0x0020, - EV_BREAK = 0x0040, - EV_ERR = 0x0080, - EV_RING = 0x0100, - EV_PERR = 0x0200, - EV_RX80FULL = 0x0400, - EV_EVENT1 = 0x0800, - EV_EVENT2 = 0x1000; + EV_RXCHAR = 0x0001, + EV_RXFLAG = 0x0002, + EV_TXEMPTY = 0x0004, + EV_CTS = 0x0008, + EV_DSR = 0x0010, + EV_RLSD = 0x0020, + EV_BREAK = 0x0040, + EV_ERR = 0x0080, + EV_RING = 0x0100, + EV_PERR = 0x0200, + EV_RX80FULL = 0x0400, + EV_EVENT1 = 0x0800, + EV_EVENT2 = 0x1000; // GetCommModemStatus() const DWORD - MS_CTS_ON = 0x0010, - MS_DSR_ON = 0x0020, - MS_RING_ON = 0x0040, - MS_RLSD_ON = 0x0080; + MS_CTS_ON = 0x0010, + MS_DSR_ON = 0x0020, + MS_RING_ON = 0x0040, + MS_RLSD_ON = 0x0080; // DCB enum : BYTE { - NOPARITY = 0, - ODDPARITY, - EVENPARITY, - MARKPARITY, - SPACEPARITY + NOPARITY = 0, + ODDPARITY, + EVENPARITY, + MARKPARITY, + SPACEPARITY } // DCB enum : BYTE { - ONESTOPBIT = 0, - ONE5STOPBITS, - TWOSTOPBITS + ONESTOPBIT = 0, + ONE5STOPBITS, + TWOSTOPBITS } // DCB enum : DWORD { - CBR_110 = 110, - CBR_300 = 300, - CBR_600 = 600, - CBR_1200 = 1200, - CBR_2400 = 2400, - CBR_4800 = 4800, - CBR_9600 = 9600, - CBR_14400 = 14400, - CBR_19200 = 19200, - CBR_38400 = 38400, - CBR_56000 = 56000, - CBR_57600 = 57600, - CBR_115200 = 115200, - CBR_128000 = 128000, - CBR_256000 = 256000 + CBR_110 = 110, + CBR_300 = 300, + CBR_600 = 600, + CBR_1200 = 1200, + CBR_2400 = 2400, + CBR_4800 = 4800, + CBR_9600 = 9600, + CBR_14400 = 14400, + CBR_19200 = 19200, + CBR_38400 = 38400, + CBR_56000 = 56000, + CBR_57600 = 57600, + CBR_115200 = 115200, + CBR_128000 = 128000, + CBR_256000 = 256000 } // DCB, 2-bit bitfield enum { - DTR_CONTROL_DISABLE = 0, - DTR_CONTROL_ENABLE, - DTR_CONTROL_HANDSHAKE + DTR_CONTROL_DISABLE = 0, + DTR_CONTROL_ENABLE, + DTR_CONTROL_HANDSHAKE } // DCB, 2-bit bitfield enum { - RTS_CONTROL_DISABLE = 0, - RTS_CONTROL_ENABLE, - RTS_CONTROL_HANDSHAKE, - RTS_CONTROL_TOGGLE, + RTS_CONTROL_DISABLE = 0, + RTS_CONTROL_ENABLE, + RTS_CONTROL_HANDSHAKE, + RTS_CONTROL_TOGGLE, } // WIN32_STREAM_ID enum : DWORD { - BACKUP_INVALID = 0, - BACKUP_DATA, - BACKUP_EA_DATA, - BACKUP_SECURITY_DATA, - BACKUP_ALTERNATE_DATA, - BACKUP_LINK, - BACKUP_PROPERTY_DATA, - BACKUP_OBJECT_ID, - BACKUP_REPARSE_DATA, - BACKUP_SPARSE_BLOCK + BACKUP_INVALID = 0, + BACKUP_DATA, + BACKUP_EA_DATA, + BACKUP_SECURITY_DATA, + BACKUP_ALTERNATE_DATA, + BACKUP_LINK, + BACKUP_PROPERTY_DATA, + BACKUP_OBJECT_ID, + BACKUP_REPARSE_DATA, + BACKUP_SPARSE_BLOCK } // WIN32_STREAM_ID enum : DWORD { - STREAM_NORMAL_ATTRIBUTE = 0, - STREAM_MODIFIED_WHEN_READ = 1, - STREAM_CONTAINS_SECURITY = 2, - STREAM_CONTAINS_PROPERTIES = 4 + STREAM_NORMAL_ATTRIBUTE = 0, + STREAM_MODIFIED_WHEN_READ = 1, + STREAM_CONTAINS_SECURITY = 2, + STREAM_CONTAINS_PROPERTIES = 4 } // STARTUPINFO const DWORD - STARTF_USESHOWWINDOW = 0x0001, - STARTF_USESIZE = 0x0002, - STARTF_USEPOSITION = 0x0004, - STARTF_USECOUNTCHARS = 0x0008, - STARTF_USEFILLATTRIBUTE = 0x0010, - STARTF_RUNFULLSCREEN = 0x0020, - STARTF_FORCEONFEEDBACK = 0x0040, - STARTF_FORCEOFFFEEDBACK = 0x0080, - STARTF_USESTDHANDLES = 0x0100, - STARTF_USEHOTKEY = 0x0200; + STARTF_USESHOWWINDOW = 0x0001, + STARTF_USESIZE = 0x0002, + STARTF_USEPOSITION = 0x0004, + STARTF_USECOUNTCHARS = 0x0008, + STARTF_USEFILLATTRIBUTE = 0x0010, + STARTF_RUNFULLSCREEN = 0x0020, + STARTF_FORCEONFEEDBACK = 0x0040, + STARTF_FORCEOFFFEEDBACK = 0x0080, + STARTF_USESTDHANDLES = 0x0100, + STARTF_USEHOTKEY = 0x0200; // ??? enum { - TC_NORMAL = 0, - TC_HARDERR = 1, - TC_GP_TRAP = 2, - TC_SIGNAL = 3 + TC_NORMAL = 0, + TC_HARDERR = 1, + TC_GP_TRAP = 2, + TC_SIGNAL = 3 } /+ These seem to be Windows CE-specific enum { - AC_LINE_OFFLINE = 0, - AC_LINE_ONLINE = 1, - AC_LINE_BACKUP_POWER = 2, - AC_LINE_UNKNOWN = 255 + AC_LINE_OFFLINE = 0, + AC_LINE_ONLINE = 1, + AC_LINE_BACKUP_POWER = 2, + AC_LINE_UNKNOWN = 255 } enum { - BATTERY_FLAG_HIGH = 1, - BATTERY_FLAG_LOW = 2, - BATTERY_FLAG_CRITICAL = 4, - BATTERY_FLAG_CHARGING = 8, - BATTERY_FLAG_NO_BATTERY = 128, - BATTERY_FLAG_UNKNOWN = 255, - BATTERY_PERCENTAGE_UNKNOWN = 255, - BATTERY_LIFE_UNKNOWN = 0xFFFFFFFF + BATTERY_FLAG_HIGH = 1, + BATTERY_FLAG_LOW = 2, + BATTERY_FLAG_CRITICAL = 4, + BATTERY_FLAG_CHARGING = 8, + BATTERY_FLAG_NO_BATTERY = 128, + BATTERY_FLAG_UNKNOWN = 255, + BATTERY_PERCENTAGE_UNKNOWN = 255, + BATTERY_LIFE_UNKNOWN = 0xFFFFFFFF } +/ @@ -870,490 +870,490 @@ const DWORD WRITE_WATCH_FLAG_RESET = 1; // for LogonUser() enum : DWORD { - LOGON32_LOGON_INTERACTIVE = 2, - LOGON32_LOGON_NETWORK = 3, - LOGON32_LOGON_BATCH = 4, - LOGON32_LOGON_SERVICE = 5, - LOGON32_LOGON_UNLOCK = 7 + LOGON32_LOGON_INTERACTIVE = 2, + LOGON32_LOGON_NETWORK = 3, + LOGON32_LOGON_BATCH = 4, + LOGON32_LOGON_SERVICE = 5, + LOGON32_LOGON_UNLOCK = 7 } // for LogonUser() enum : DWORD { - LOGON32_PROVIDER_DEFAULT, - LOGON32_PROVIDER_WINNT35, - LOGON32_PROVIDER_WINNT40, - LOGON32_PROVIDER_WINNT50 + LOGON32_PROVIDER_DEFAULT, + LOGON32_PROVIDER_WINNT35, + LOGON32_PROVIDER_WINNT40, + LOGON32_PROVIDER_WINNT50 } // for MoveFileEx() const DWORD - MOVEFILE_REPLACE_EXISTING = 1, - MOVEFILE_COPY_ALLOWED = 2, - MOVEFILE_DELAY_UNTIL_REBOOT = 4, - MOVEFILE_WRITE_THROUGH = 8; + MOVEFILE_REPLACE_EXISTING = 1, + MOVEFILE_COPY_ALLOWED = 2, + MOVEFILE_DELAY_UNTIL_REBOOT = 4, + MOVEFILE_WRITE_THROUGH = 8; // DefineDosDevice() const DWORD - DDD_RAW_TARGET_PATH = 1, - DDD_REMOVE_DEFINITION = 2, - DDD_EXACT_MATCH_ON_REMOVE = 4; + DDD_RAW_TARGET_PATH = 1, + DDD_REMOVE_DEFINITION = 2, + DDD_EXACT_MATCH_ON_REMOVE = 4; static if (_WIN32_WINNT >= 0x500) { - enum : DWORD { - LOGON32_LOGON_NETWORK_CLEARTEXT = 8, - LOGON32_LOGON_NEW_CREDENTIALS = 9 - } + enum : DWORD { + LOGON32_LOGON_NETWORK_CLEARTEXT = 8, + LOGON32_LOGON_NEW_CREDENTIALS = 9 + } - // ReplaceFile() - const DWORD - REPLACEFILE_WRITE_THROUGH = 1, - REPLACEFILE_IGNORE_MERGE_ERRORS = 2; + // ReplaceFile() + const DWORD + REPLACEFILE_WRITE_THROUGH = 1, + REPLACEFILE_IGNORE_MERGE_ERRORS = 2; } static if (_WIN32_WINNT >= 0x501) { - const DWORD - GET_MODULE_HANDLE_EX_FLAG_PIN = 1, - GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, - GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4; - - // for ACTCTX - const DWORD - ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x01, - ACTCTX_FLAG_LANGID_VALID = 0x02, - ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x04, - ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x08, - ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x10, - ACTCTX_FLAG_APPLICATION_NAME_VALID = 0x20, - ACTCTX_FLAG_HMODULE_VALID = 0x80; - - // DeactivateActCtx() - const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; - // FindActCtxSectionString() - const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 1; - // QueryActCtxW() - const DWORD - QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x04, - QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x08, - QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x10; - - enum { - LOGON_WITH_PROFILE = 1, - LOGON_NETCREDENTIALS_ONLY - } + const DWORD + GET_MODULE_HANDLE_EX_FLAG_PIN = 1, + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, + GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4; + + // for ACTCTX + const DWORD + ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x01, + ACTCTX_FLAG_LANGID_VALID = 0x02, + ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x04, + ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x08, + ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x10, + ACTCTX_FLAG_APPLICATION_NAME_VALID = 0x20, + ACTCTX_FLAG_HMODULE_VALID = 0x80; + + // DeactivateActCtx() + const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; + // FindActCtxSectionString() + const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 1; + // QueryActCtxW() + const DWORD + QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x04, + QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x08, + QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x10; + + enum { + LOGON_WITH_PROFILE = 1, + LOGON_NETCREDENTIALS_ONLY + } } // ---- struct FILETIME { - DWORD dwLowDateTime; - DWORD dwHighDateTime; + DWORD dwLowDateTime; + DWORD dwHighDateTime; } alias FILETIME* PFILETIME, LPFILETIME; struct BY_HANDLE_FILE_INFORMATION { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD dwVolumeSerialNumber; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - DWORD nNumberOfLinks; - DWORD nFileIndexHigh; - DWORD nFileIndexLow; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD dwVolumeSerialNumber; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD nNumberOfLinks; + DWORD nFileIndexHigh; + DWORD nFileIndexLow; } alias BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION; struct DCB { - DWORD DCBlength = DCB.sizeof; - DWORD BaudRate; + DWORD DCBlength = DCB.sizeof; + DWORD BaudRate; /+ - DWORD fBinary:1; // Binary Mode (skip EOF check) - DWORD fParity:1; // Enable parity checking - DWORD fOutxCtsFlow:1; // CTS handshaking on output - DWORD fOutxDsrFlow:1; // DSR handshaking on output - DWORD fDtrControl:2; // DTR Flow control - DWORD fDsrSensitivity:1; // DSR Sensitivity - DWORD fTXContinueOnXoff:1; // Continue TX when Xoff sent - DWORD fOutX:1; // Enable output X-ON/X-OFF - DWORD fInX:1; // Enable input X-ON/X-OFF - DWORD fErrorChar:1; // Enable Err Replacement - DWORD fNull:1; // Enable Null stripping - DWORD fRtsControl:2; // Rts Flow control - DWORD fAbortOnError:1; // Abort all reads and writes on Error - DWORD fDummy2:17; // Reserved + DWORD fBinary:1; // Binary Mode (skip EOF check) + DWORD fParity:1; // Enable parity checking + DWORD fOutxCtsFlow:1; // CTS handshaking on output + DWORD fOutxDsrFlow:1; // DSR handshaking on output + DWORD fDtrControl:2; // DTR Flow control + DWORD fDsrSensitivity:1; // DSR Sensitivity + DWORD fTXContinueOnXoff:1; // Continue TX when Xoff sent + DWORD fOutX:1; // Enable output X-ON/X-OFF + DWORD fInX:1; // Enable input X-ON/X-OFF + DWORD fErrorChar:1; // Enable Err Replacement + DWORD fNull:1; // Enable Null stripping + DWORD fRtsControl:2; // Rts Flow control + DWORD fAbortOnError:1; // Abort all reads and writes on Error + DWORD fDummy2:17; // Reserved +/ - uint _bf; - bool fBinary(bool f) { _bf = (_bf & ~0x0001) | f; return f; } - bool fParity(bool f) { _bf = (_bf & ~0x0002) | (f<<1); return f; } - bool fOutxCtsFlow(bool f) { _bf = (_bf & ~0x0004) | (f<<2); return f; } - bool fOutxDsrFlow(bool f) { _bf = (_bf & ~0x0008) | (f<<3); return f; } - byte fDtrControl(byte x) { _bf = (_bf & ~0x0030) | (x<<4); return cast(byte)(x & 3); } - bool fDsrSensitivity(bool f) { _bf = (_bf & ~0x0040) | (f<<6); return f; } - bool fTXContinueOnXoff(bool f) { _bf = (_bf & ~0x0080) | (f<<7); return f; } - bool fOutX(bool f) { _bf = (_bf & ~0x0100) | (f<<8); return f; } - bool fInX(bool f) { _bf = (_bf & ~0x0200) | (f<<9); return f; } - bool fErrorChar(bool f) { _bf = (_bf & ~0x0400) | (f<<10); return f; } - bool fNull(bool f) { _bf = (_bf & ~0x0800) | (f<<11); return f; } - byte fRtsControl(byte x) { _bf = (_bf & ~0x3000) | (x<<12); return cast(byte)(x & 3); } - bool fAbortOnError(bool f) { _bf = (_bf & ~0x4000) | (f<<14); return f; } - - bool fBinary() { return cast(bool) (_bf & 1); } - bool fParity() { return cast(bool) (_bf & 2); } - bool fOutxCtsFlow() { return cast(bool) (_bf & 4); } - bool fOutxDsrFlow() { return cast(bool) (_bf & 8); } - byte fDtrControl() { return cast(byte) ((_bf & (32+16))>>4); } - bool fDsrSensitivity() { return cast(bool) (_bf & 64); } - bool fTXContinueOnXoff() { return cast(bool) (_bf & 128); } - bool fOutX() { return cast(bool) (_bf & 256); } - bool fInX() { return cast(bool) (_bf & 512); } - bool fErrorChar() { return cast(bool) (_bf & 1024); } - bool fNull() { return cast(bool) (_bf & 2048); } - byte fRtsControl() { return cast(byte) ((_bf & (4096+8192))>>12); } - bool fAbortOnError() { return cast(bool) (_bf & 16384); } - - WORD wReserved; - WORD XonLim; - WORD XoffLim; - BYTE ByteSize; - BYTE Parity; - BYTE StopBits; - char XonChar; - char XoffChar; - char ErrorChar; - char EofChar; - char EvtChar; - WORD wReserved1; + uint _bf; + bool fBinary(bool f) { _bf = (_bf & ~0x0001) | f; return f; } + bool fParity(bool f) { _bf = (_bf & ~0x0002) | (f<<1); return f; } + bool fOutxCtsFlow(bool f) { _bf = (_bf & ~0x0004) | (f<<2); return f; } + bool fOutxDsrFlow(bool f) { _bf = (_bf & ~0x0008) | (f<<3); return f; } + byte fDtrControl(byte x) { _bf = (_bf & ~0x0030) | (x<<4); return cast(byte)(x & 3); } + bool fDsrSensitivity(bool f) { _bf = (_bf & ~0x0040) | (f<<6); return f; } + bool fTXContinueOnXoff(bool f) { _bf = (_bf & ~0x0080) | (f<<7); return f; } + bool fOutX(bool f) { _bf = (_bf & ~0x0100) | (f<<8); return f; } + bool fInX(bool f) { _bf = (_bf & ~0x0200) | (f<<9); return f; } + bool fErrorChar(bool f) { _bf = (_bf & ~0x0400) | (f<<10); return f; } + bool fNull(bool f) { _bf = (_bf & ~0x0800) | (f<<11); return f; } + byte fRtsControl(byte x) { _bf = (_bf & ~0x3000) | (x<<12); return cast(byte)(x & 3); } + bool fAbortOnError(bool f) { _bf = (_bf & ~0x4000) | (f<<14); return f; } + + bool fBinary() { return cast(bool) (_bf & 1); } + bool fParity() { return cast(bool) (_bf & 2); } + bool fOutxCtsFlow() { return cast(bool) (_bf & 4); } + bool fOutxDsrFlow() { return cast(bool) (_bf & 8); } + byte fDtrControl() { return cast(byte) ((_bf & (32+16))>>4); } + bool fDsrSensitivity() { return cast(bool) (_bf & 64); } + bool fTXContinueOnXoff() { return cast(bool) (_bf & 128); } + bool fOutX() { return cast(bool) (_bf & 256); } + bool fInX() { return cast(bool) (_bf & 512); } + bool fErrorChar() { return cast(bool) (_bf & 1024); } + bool fNull() { return cast(bool) (_bf & 2048); } + byte fRtsControl() { return cast(byte) ((_bf & (4096+8192))>>12); } + bool fAbortOnError() { return cast(bool) (_bf & 16384); } + + WORD wReserved; + WORD XonLim; + WORD XoffLim; + BYTE ByteSize; + BYTE Parity; + BYTE StopBits; + char XonChar; + char XoffChar; + char ErrorChar; + char EofChar; + char EvtChar; + WORD wReserved1; } alias DCB* LPDCB; struct COMMCONFIG { - DWORD dwSize = COMMCONFIG.sizeof; - WORD wVersion; - WORD wReserved; - DCB dcb; - DWORD dwProviderSubType; - DWORD dwProviderOffset; - DWORD dwProviderSize; - WCHAR _wcProviderData; + DWORD dwSize = COMMCONFIG.sizeof; + WORD wVersion; + WORD wReserved; + DCB dcb; + DWORD dwProviderSubType; + DWORD dwProviderOffset; + DWORD dwProviderSize; + WCHAR _wcProviderData; - WCHAR* wcProviderData() { return &_wcProviderData; } + WCHAR* wcProviderData() { return &_wcProviderData; } } alias COMMCONFIG* LPCOMMCONFIG; struct COMMTIMEOUTS { - DWORD ReadIntervalTimeout; - DWORD ReadTotalTimeoutMultiplier; - DWORD ReadTotalTimeoutConstant; - DWORD WriteTotalTimeoutMultiplier; - DWORD WriteTotalTimeoutConstant; + DWORD ReadIntervalTimeout; + DWORD ReadTotalTimeoutMultiplier; + DWORD ReadTotalTimeoutConstant; + DWORD WriteTotalTimeoutMultiplier; + DWORD WriteTotalTimeoutConstant; } alias COMMTIMEOUTS* LPCOMMTIMEOUTS; struct COMSTAT { /+ - DWORD fCtsHold:1; - DWORD fDsrHold:1; - DWORD fRlsdHold:1; - DWORD fXoffHold:1; - DWORD fXoffSent:1; - DWORD fEof:1; - DWORD fTxim:1; - DWORD fReserved:25; + DWORD fCtsHold:1; + DWORD fDsrHold:1; + DWORD fRlsdHold:1; + DWORD fXoffHold:1; + DWORD fXoffSent:1; + DWORD fEof:1; + DWORD fTxim:1; + DWORD fReserved:25; +/ - DWORD _bf; + DWORD _bf; bool fCtsHold(bool f) { _bf = (_bf & ~1) | f; return f; } - bool fDsrHold(bool f) { _bf = (_bf & ~2) | (f<<1); return f; } - bool fRlsdHold(bool f) { _bf = (_bf & ~4) | (f<<2); return f; } - bool fXoffHold(bool f) { _bf = (_bf & ~8) | (f<<3); return f; } - bool fXoffSent(bool f) { _bf = (_bf & ~16) | (f<<4); return f; } - bool fEof(bool f) { _bf = (_bf & ~32) | (f<<5); return f; } - bool fTxim(bool f) { _bf = (_bf & ~64) | (f<<6); return f; } + bool fDsrHold(bool f) { _bf = (_bf & ~2) | (f<<1); return f; } + bool fRlsdHold(bool f) { _bf = (_bf & ~4) | (f<<2); return f; } + bool fXoffHold(bool f) { _bf = (_bf & ~8) | (f<<3); return f; } + bool fXoffSent(bool f) { _bf = (_bf & ~16) | (f<<4); return f; } + bool fEof(bool f) { _bf = (_bf & ~32) | (f<<5); return f; } + bool fTxim(bool f) { _bf = (_bf & ~64) | (f<<6); return f; } bool fCtsHold() { return cast(bool) (_bf & 1); } - bool fDsrHold() { return cast(bool) (_bf & 2); } - bool fRlsdHold() { return cast(bool) (_bf & 4); } - bool fXoffHold() { return cast(bool) (_bf & 8); } - bool fXoffSent() { return cast(bool) (_bf & 16); } - bool fEof() { return cast(bool) (_bf & 32); } - bool fTxim() { return cast(bool) (_bf & 64); } + bool fDsrHold() { return cast(bool) (_bf & 2); } + bool fRlsdHold() { return cast(bool) (_bf & 4); } + bool fXoffHold() { return cast(bool) (_bf & 8); } + bool fXoffSent() { return cast(bool) (_bf & 16); } + bool fEof() { return cast(bool) (_bf & 32); } + bool fTxim() { return cast(bool) (_bf & 64); } - DWORD cbInQue; - DWORD cbOutQue; + DWORD cbInQue; + DWORD cbOutQue; } alias COMSTAT* LPCOMSTAT; struct CREATE_PROCESS_DEBUG_INFO { - HANDLE hFile; - HANDLE hProcess; - HANDLE hThread; - LPVOID lpBaseOfImage; - DWORD dwDebugInfoFileOffset; - DWORD nDebugInfoSize; - LPVOID lpThreadLocalBase; - LPTHREAD_START_ROUTINE lpStartAddress; - LPVOID lpImageName; - WORD fUnicode; + HANDLE hFile; + HANDLE hProcess; + HANDLE hThread; + LPVOID lpBaseOfImage; + DWORD dwDebugInfoFileOffset; + DWORD nDebugInfoSize; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; + LPVOID lpImageName; + WORD fUnicode; } alias CREATE_PROCESS_DEBUG_INFO* LPCREATE_PROCESS_DEBUG_INFO; struct CREATE_THREAD_DEBUG_INFO { - HANDLE hThread; - LPVOID lpThreadLocalBase; - LPTHREAD_START_ROUTINE lpStartAddress; + HANDLE hThread; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; } alias CREATE_THREAD_DEBUG_INFO* LPCREATE_THREAD_DEBUG_INFO; struct EXCEPTION_DEBUG_INFO { - EXCEPTION_RECORD ExceptionRecord; - DWORD dwFirstChance; + EXCEPTION_RECORD ExceptionRecord; + DWORD dwFirstChance; } alias EXCEPTION_DEBUG_INFO* LPEXCEPTION_DEBUG_INFO; struct EXIT_THREAD_DEBUG_INFO { - DWORD dwExitCode; + DWORD dwExitCode; } alias EXIT_THREAD_DEBUG_INFO* LPEXIT_THREAD_DEBUG_INFO; struct EXIT_PROCESS_DEBUG_INFO { - DWORD dwExitCode; + DWORD dwExitCode; } alias EXIT_PROCESS_DEBUG_INFO* LPEXIT_PROCESS_DEBUG_INFO; struct LOAD_DLL_DEBUG_INFO { - HANDLE hFile; - LPVOID lpBaseOfDll; - DWORD dwDebugInfoFileOffset; - DWORD nDebugInfoSize; - LPVOID lpImageName; - WORD fUnicode; + HANDLE hFile; + LPVOID lpBaseOfDll; + DWORD dwDebugInfoFileOffset; + DWORD nDebugInfoSize; + LPVOID lpImageName; + WORD fUnicode; } alias LOAD_DLL_DEBUG_INFO* LPLOAD_DLL_DEBUG_INFO; struct UNLOAD_DLL_DEBUG_INFO { - LPVOID lpBaseOfDll; + LPVOID lpBaseOfDll; } alias UNLOAD_DLL_DEBUG_INFO* LPUNLOAD_DLL_DEBUG_INFO; struct OUTPUT_DEBUG_STRING_INFO { - LPSTR lpDebugStringData; - WORD fUnicode; - WORD nDebugStringLength; + LPSTR lpDebugStringData; + WORD fUnicode; + WORD nDebugStringLength; } alias OUTPUT_DEBUG_STRING_INFO* LPOUTPUT_DEBUG_STRING_INFO; struct RIP_INFO { - DWORD dwError; - DWORD dwType; + DWORD dwError; + DWORD dwType; } alias RIP_INFO* LPRIP_INFO; struct DEBUG_EVENT { - DWORD dwDebugEventCode; - DWORD dwProcessId; - DWORD dwThreadId; - union { - EXCEPTION_DEBUG_INFO Exception; - CREATE_THREAD_DEBUG_INFO CreateThread; - CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; - EXIT_THREAD_DEBUG_INFO ExitThread; - EXIT_PROCESS_DEBUG_INFO ExitProcess; - LOAD_DLL_DEBUG_INFO LoadDll; - UNLOAD_DLL_DEBUG_INFO UnloadDll; - OUTPUT_DEBUG_STRING_INFO DebugString; - RIP_INFO RipInfo; - } + DWORD dwDebugEventCode; + DWORD dwProcessId; + DWORD dwThreadId; + union { + EXCEPTION_DEBUG_INFO Exception; + CREATE_THREAD_DEBUG_INFO CreateThread; + CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; + EXIT_THREAD_DEBUG_INFO ExitThread; + EXIT_PROCESS_DEBUG_INFO ExitProcess; + LOAD_DLL_DEBUG_INFO LoadDll; + UNLOAD_DLL_DEBUG_INFO UnloadDll; + OUTPUT_DEBUG_STRING_INFO DebugString; + RIP_INFO RipInfo; + } } alias DEBUG_EVENT* LPDEBUG_EVENT; struct OVERLAPPED { - ULONG_PTR Internal; - ULONG_PTR InternalHigh; - union { - struct { - DWORD Offset; - DWORD OffsetHigh; - } - PVOID Pointer; - } - HANDLE hEvent; + ULONG_PTR Internal; + ULONG_PTR InternalHigh; + union { + struct { + DWORD Offset; + DWORD OffsetHigh; + } + PVOID Pointer; + } + HANDLE hEvent; } alias OVERLAPPED* POVERLAPPED, LPOVERLAPPED; struct STARTUPINFOA { - DWORD cb = STARTUPINFOA.sizeof; - LPSTR lpReserved; - LPSTR lpDesktop; - LPSTR lpTitle; - DWORD dwX; - DWORD dwY; - DWORD dwXSize; - DWORD dwYSize; - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; - DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - PBYTE lpReserved2; - HANDLE hStdInput; - HANDLE hStdOutput; - HANDLE hStdError; + DWORD cb = STARTUPINFOA.sizeof; + LPSTR lpReserved; + LPSTR lpDesktop; + LPSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + PBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; } alias STARTUPINFOA* LPSTARTUPINFOA; struct STARTUPINFOW { - DWORD cb = STARTUPINFOW.sizeof; - LPWSTR lpReserved; - LPWSTR lpDesktop; - LPWSTR lpTitle; - DWORD dwX; - DWORD dwY; - DWORD dwXSize; - DWORD dwYSize; - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; - DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - PBYTE lpReserved2; - HANDLE hStdInput; - HANDLE hStdOutput; - HANDLE hStdError; + DWORD cb = STARTUPINFOW.sizeof; + LPWSTR lpReserved; + LPWSTR lpDesktop; + LPWSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + PBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; } alias STARTUPINFOW* LPSTARTUPINFOW; struct PROCESS_INFORMATION { - HANDLE hProcess; - HANDLE hThread; - DWORD dwProcessId; - DWORD dwThreadId; + HANDLE hProcess; + HANDLE hThread; + DWORD dwProcessId; + DWORD dwThreadId; } alias PROCESS_INFORMATION* PPROCESS_INFORMATION, LPPROCESS_INFORMATION; struct CRITICAL_SECTION_DEBUG { - WORD Type; - WORD CreatorBackTraceIndex; - CRITICAL_SECTION* CriticalSection; - LIST_ENTRY ProcessLocksList; - DWORD EntryCount; - DWORD ContentionCount; - DWORD[2] Spare; + WORD Type; + WORD CreatorBackTraceIndex; + CRITICAL_SECTION* CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD[2] Spare; } alias CRITICAL_SECTION_DEBUG* PCRITICAL_SECTION_DEBUG; struct CRITICAL_SECTION { - PCRITICAL_SECTION_DEBUG DebugInfo; - LONG LockCount; - LONG RecursionCount; - HANDLE OwningThread; - HANDLE LockSemaphore; - DWORD SpinCount; + PCRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + DWORD SpinCount; } alias CRITICAL_SECTION* PCRITICAL_SECTION, LPCRITICAL_SECTION; struct SYSTEMTIME { - WORD wYear; - WORD wMonth; - WORD wDayOfWeek; - WORD wDay; - WORD wHour; - WORD wMinute; - WORD wSecond; - WORD wMilliseconds; + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; } alias SYSTEMTIME* LPSYSTEMTIME; struct WIN32_FILE_ATTRIBUTE_DATA { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; } alias WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; struct WIN32_FIND_DATAA { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; // #ifdef _WIN32_WCE // DWORD dwOID; // #else - DWORD dwReserved0; - DWORD dwReserved1; + DWORD dwReserved0; + DWORD dwReserved1; // #endif - CHAR[MAX_PATH] cFileName; + CHAR[MAX_PATH] cFileName; // #ifndef _WIN32_WCE - CHAR[14] cAlternateFileName; + CHAR[14] cAlternateFileName; // #endif } alias WIN32_FIND_DATAA* PWIN32_FIND_DATAA, LPWIN32_FIND_DATAA; struct WIN32_FIND_DATAW { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; // #ifdef _WIN32_WCE // DWORD dwOID; // #else - DWORD dwReserved0; - DWORD dwReserved1; + DWORD dwReserved0; + DWORD dwReserved1; // #endif - WCHAR[MAX_PATH] cFileName; + WCHAR[MAX_PATH] cFileName; // #ifndef _WIN32_WCE - WCHAR[14] cAlternateFileName; + WCHAR[14] cAlternateFileName; // #endif } alias WIN32_FIND_DATAW* PWIN32_FIND_DATAW, LPWIN32_FIND_DATAW; struct WIN32_STREAM_ID { - DWORD dwStreamId; - DWORD dwStreamAttributes; - LARGE_INTEGER Size; - DWORD dwStreamNameSize; - WCHAR _cStreamName; + DWORD dwStreamId; + DWORD dwStreamAttributes; + LARGE_INTEGER Size; + DWORD dwStreamNameSize; + WCHAR _cStreamName; - WCHAR* cStreamName() { return &_cStreamName; } + WCHAR* cStreamName() { return &_cStreamName; } } alias WIN32_STREAM_ID* LPWIN32_STREAM_ID; enum FINDEX_INFO_LEVELS { - FindExInfoStandard, - FindExInfoMaxInfoLevel + FindExInfoStandard, + FindExInfoMaxInfoLevel } enum FINDEX_SEARCH_OPS { - FindExSearchNameMatch, - FindExSearchLimitToDirectories, - FindExSearchLimitToDevices, - FindExSearchMaxSearchOp + FindExSearchNameMatch, + FindExSearchLimitToDirectories, + FindExSearchLimitToDevices, + FindExSearchMaxSearchOp } enum ACL_INFORMATION_CLASS { - AclRevisionInformation = 1, - AclSizeInformation + AclRevisionInformation = 1, + AclSizeInformation } struct HW_PROFILE_INFOA { - DWORD dwDockInfo; - CHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; - CHAR[MAX_PROFILE_LEN] szHwProfileName; + DWORD dwDockInfo; + CHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; + CHAR[MAX_PROFILE_LEN] szHwProfileName; } alias HW_PROFILE_INFOA* LPHW_PROFILE_INFOA; struct HW_PROFILE_INFOW { - DWORD dwDockInfo; - WCHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; - WCHAR[MAX_PROFILE_LEN] szHwProfileName; + DWORD dwDockInfo; + WCHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; + WCHAR[MAX_PROFILE_LEN] szHwProfileName; } alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; @@ -1361,130 +1361,130 @@ alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; * GetFileAttributesEx, which is in desktop Windows. */ enum GET_FILEEX_INFO_LEVELS { - GetFileExInfoStandard, - GetFileExMaxInfoLevel + GetFileExInfoStandard, + GetFileExMaxInfoLevel } struct SYSTEM_INFO { - union { - DWORD dwOemId; - struct { - WORD wProcessorArchitecture; - WORD wReserved; - } - } - DWORD dwPageSize; - PVOID lpMinimumApplicationAddress; - PVOID lpMaximumApplicationAddress; - DWORD_PTR dwActiveProcessorMask; - DWORD dwNumberOfProcessors; - DWORD dwProcessorType; - DWORD dwAllocationGranularity; - WORD wProcessorLevel; - WORD wProcessorRevision; + union { + DWORD dwOemId; + struct { + WORD wProcessorArchitecture; + WORD wReserved; + } + } + DWORD dwPageSize; + PVOID lpMinimumApplicationAddress; + PVOID lpMaximumApplicationAddress; + DWORD_PTR dwActiveProcessorMask; + DWORD dwNumberOfProcessors; + DWORD dwProcessorType; + DWORD dwAllocationGranularity; + WORD wProcessorLevel; + WORD wProcessorRevision; } alias SYSTEM_INFO* LPSYSTEM_INFO; static if (_WIN32_WINNT >= 0x500) { - struct SYSTEM_POWER_STATUS { - BYTE ACLineStatus; - BYTE BatteryFlag; - BYTE BatteryLifePercent; - BYTE Reserved1; - DWORD BatteryLifeTime; - DWORD BatteryFullLifeTime; - } - alias SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; + struct SYSTEM_POWER_STATUS { + BYTE ACLineStatus; + BYTE BatteryFlag; + BYTE BatteryLifePercent; + BYTE Reserved1; + DWORD BatteryLifeTime; + DWORD BatteryFullLifeTime; + } + alias SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; } struct TIME_ZONE_INFORMATION { - LONG Bias; - WCHAR[32] StandardName; - SYSTEMTIME StandardDate; - LONG StandardBias; - WCHAR[32] DaylightName; - SYSTEMTIME DaylightDate; - LONG DaylightBias; + LONG Bias; + WCHAR[32] StandardName; + SYSTEMTIME StandardDate; + LONG StandardBias; + WCHAR[32] DaylightName; + SYSTEMTIME DaylightDate; + LONG DaylightBias; } alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; // MSDN documents this, possibly erroneously, as Win2000+. struct MEMORYSTATUS { - DWORD dwLength; - DWORD dwMemoryLoad; - DWORD dwTotalPhys; - DWORD dwAvailPhys; - DWORD dwTotalPageFile; - DWORD dwAvailPageFile; - DWORD dwTotalVirtual; - DWORD dwAvailVirtual; + DWORD dwLength; + DWORD dwMemoryLoad; + DWORD dwTotalPhys; + DWORD dwAvailPhys; + DWORD dwTotalPageFile; + DWORD dwAvailPageFile; + DWORD dwTotalVirtual; + DWORD dwAvailVirtual; } alias MEMORYSTATUS* LPMEMORYSTATUS; static if (_WIN32_WINNT >= 0x500) { - struct MEMORYSTATUSEX { - DWORD dwLength; - DWORD dwMemoryLoad; - DWORDLONG ullTotalPhys; - DWORDLONG ullAvailPhys; - DWORDLONG ullTotalPageFile; - DWORDLONG ullAvailPageFile; - DWORDLONG ullTotalVirtual; - DWORDLONG ullAvailVirtual; - DWORDLONG ullAvailExtendedVirtual; - } - alias MEMORYSTATUSEX* LPMEMORYSTATUSEX; + struct MEMORYSTATUSEX { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORDLONG ullTotalPhys; + DWORDLONG ullAvailPhys; + DWORDLONG ullTotalPageFile; + DWORDLONG ullAvailPageFile; + DWORDLONG ullTotalVirtual; + DWORDLONG ullAvailVirtual; + DWORDLONG ullAvailExtendedVirtual; + } + alias MEMORYSTATUSEX* LPMEMORYSTATUSEX; } struct LDT_ENTRY { - WORD LimitLow; - WORD BaseLow; - struct { - BYTE BaseMid; - BYTE Flags1; - BYTE Flags2; - BYTE BaseHi; - - byte Type(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0xE0) | f); return cast(byte)(f & 0x1F); } - byte Dpl(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0x9F) | (f<<5)); return cast(byte)(f & 3); } - bool Pres(bool f) { Flags1 = cast(BYTE) ((Flags1 & 0x7F) | (f<<7)); return f; } - - byte LimitHi(byte f) { Flags2 = cast(BYTE) ((Flags2 & 0xF0) | (f&0x0F)); return cast(byte)(f & 0x0F); } - bool Sys(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xEF) | (f<<4)); return f; } - // Next bit is reserved - bool Default_Big(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xBF) | (f<<6)); return f; } - bool Granularity(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0x7F) | (f<<7)); return f; } - - byte Type() { return cast(byte) (Flags1 & 0x1F); } - byte Dpl() { return cast(byte) ((Flags1 & 0x60)>>5); } - bool Pres() { return cast(bool) (Flags1 & 0x80); } - - byte LimitHi() { return cast(byte) (Flags2 & 0x0F); } - bool Sys() { return cast(bool) (Flags2 & 0x10); } - bool Default_Big() { return cast(bool) (Flags2 & 0x40); } - bool Granularity() { return cast(bool) (Flags2 & 0x80); } - } + WORD LimitLow; + WORD BaseLow; + struct { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + + byte Type(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0xE0) | f); return cast(byte)(f & 0x1F); } + byte Dpl(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0x9F) | (f<<5)); return cast(byte)(f & 3); } + bool Pres(bool f) { Flags1 = cast(BYTE) ((Flags1 & 0x7F) | (f<<7)); return f; } + + byte LimitHi(byte f) { Flags2 = cast(BYTE) ((Flags2 & 0xF0) | (f&0x0F)); return cast(byte)(f & 0x0F); } + bool Sys(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xEF) | (f<<4)); return f; } + // Next bit is reserved + bool Default_Big(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xBF) | (f<<6)); return f; } + bool Granularity(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0x7F) | (f<<7)); return f; } + + byte Type() { return cast(byte) (Flags1 & 0x1F); } + byte Dpl() { return cast(byte) ((Flags1 & 0x60)>>5); } + bool Pres() { return cast(bool) (Flags1 & 0x80); } + + byte LimitHi() { return cast(byte) (Flags2 & 0x0F); } + bool Sys() { return cast(bool) (Flags2 & 0x10); } + bool Default_Big() { return cast(bool) (Flags2 & 0x40); } + bool Granularity() { return cast(bool) (Flags2 & 0x80); } + } /+ - union HighWord { - struct Bytes { - BYTE BaseMid; - BYTE Flags1; - BYTE Flags2; - BYTE BaseHi; - } - struct Bits { - DWORD BaseMid:8; - DWORD Type:5; - DWORD Dpl:2; - DWORD Pres:1; - DWORD LimitHi:4; - DWORD Sys:1; - DWORD Reserved_0:1; - DWORD Default_Big:1; - DWORD Granularity:1; - DWORD BaseHi:8; - } - } + union HighWord { + struct Bytes { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + } + struct Bits { + DWORD BaseMid:8; + DWORD Type:5; + DWORD Dpl:2; + DWORD Pres:1; + DWORD LimitHi:4; + DWORD Sys:1; + DWORD Reserved_0:1; + DWORD Default_Big:1; + DWORD Granularity:1; + DWORD BaseHi:8; + } + } +/ } alias LDT_ENTRY* PLDT_ENTRY, LPLDT_ENTRY; @@ -1493,33 +1493,33 @@ alias LDT_ENTRY* PLDT_ENTRY, LPLDT_ENTRY; * Windows version info shall be taken with a cup of salt. */ struct PROCESS_HEAP_ENTRY { - PVOID lpData; - DWORD cbData; - BYTE cbOverhead; - BYTE iRegionIndex; - WORD wFlags; - union { - struct Block { - HANDLE hMem; - DWORD[3] dwReserved; - } - struct Region { - DWORD dwCommittedSize; - DWORD dwUnCommittedSize; - LPVOID lpFirstBlock; - LPVOID lpLastBlock; - } - } + PVOID lpData; + DWORD cbData; + BYTE cbOverhead; + BYTE iRegionIndex; + WORD wFlags; + union { + struct Block { + HANDLE hMem; + DWORD[3] dwReserved; + } + struct Region { + DWORD dwCommittedSize; + DWORD dwUnCommittedSize; + LPVOID lpFirstBlock; + LPVOID lpLastBlock; + } + } } alias PROCESS_HEAP_ENTRY* LPPROCESS_HEAP_ENTRY; struct OFSTRUCT { - BYTE cBytes = OFSTRUCT.sizeof; - BYTE fFixedDisk; - WORD nErrCode; - WORD Reserved1; - WORD Reserved2; - CHAR[128] szPathName; // const OFS_MAXPATHNAME = 128; + BYTE cBytes = OFSTRUCT.sizeof; + BYTE fFixedDisk; + WORD nErrCode; + WORD Reserved1; + WORD Reserved2; + CHAR[128] szPathName; // const OFS_MAXPATHNAME = 128; } alias OFSTRUCT* LPOFSTRUCT, POFSTRUCT; @@ -1527,249 +1527,249 @@ alias OFSTRUCT* LPOFSTRUCT, POFSTRUCT; * ImageGetCertificateData, which is in desktop Windows. */ struct WIN_CERTIFICATE { - DWORD dwLength; - WORD wRevision; - WORD wCertificateType; - BYTE _bCertificate; + DWORD dwLength; + WORD wRevision; + WORD wCertificateType; + BYTE _bCertificate; - BYTE* bCertificate() { return &_bCertificate; } + BYTE* bCertificate() { return &_bCertificate; } } alias WIN_CERTIFICATE* LPWIN_CERTIFICATE; static if (_WIN32_WINNT >= 0x500) { - enum COMPUTER_NAME_FORMAT { - ComputerNameNetBIOS, - ComputerNameDnsHostname, - ComputerNameDnsDomain, - ComputerNameDnsFullyQualified, - ComputerNamePhysicalNetBIOS, - ComputerNamePhysicalDnsHostname, - ComputerNamePhysicalDnsDomain, - ComputerNamePhysicalDnsFullyQualified, - ComputerNameMax - } + enum COMPUTER_NAME_FORMAT { + ComputerNameNetBIOS, + ComputerNameDnsHostname, + ComputerNameDnsDomain, + ComputerNameDnsFullyQualified, + ComputerNamePhysicalNetBIOS, + ComputerNamePhysicalDnsHostname, + ComputerNamePhysicalDnsDomain, + ComputerNamePhysicalDnsFullyQualified, + ComputerNameMax + } } static if (_WIN32_WINNT >= 0x501) { - struct ACTCTXA { - ULONG cbSize = this.sizeof; - DWORD dwFlags; - LPCSTR lpSource; - USHORT wProcessorArchitecture; - LANGID wLangId; - LPCSTR lpAssemblyDirectory; - LPCSTR lpResourceName; - LPCSTR lpApplicationName; - HMODULE hModule; - } - alias ACTCTXA* PACTCTXA; - alias const(ACTCTXA)* PCACTCTXA; - - struct ACTCTXW { - ULONG cbSize = this.sizeof; - DWORD dwFlags; - LPCWSTR lpSource; - USHORT wProcessorArchitecture; - LANGID wLangId; - LPCWSTR lpAssemblyDirectory; - LPCWSTR lpResourceName; - LPCWSTR lpApplicationName; - HMODULE hModule; - } - alias ACTCTXW* PACTCTXW; - alias const(ACTCTXW)* PCACTCTXW; - - struct ACTCTX_SECTION_KEYED_DATA { - ULONG cbSize = this.sizeof; - ULONG ulDataFormatVersion; - PVOID lpData; - ULONG ulLength; - PVOID lpSectionGlobalData; - ULONG ulSectionGlobalDataLength; - PVOID lpSectionBase; - ULONG ulSectionTotalLength; - HANDLE hActCtx; - HANDLE ulAssemblyRosterIndex; - } - alias ACTCTX_SECTION_KEYED_DATA* PACTCTX_SECTION_KEYED_DATA; - alias const(ACTCTX_SECTION_KEYED_DATA)* PCACTCTX_SECTION_KEYED_DATA; - - enum MEMORY_RESOURCE_NOTIFICATION_TYPE { - LowMemoryResourceNotification, - HighMemoryResourceNotification - } + struct ACTCTXA { + ULONG cbSize = this.sizeof; + DWORD dwFlags; + LPCSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCSTR lpAssemblyDirectory; + LPCSTR lpResourceName; + LPCSTR lpApplicationName; + HMODULE hModule; + } + alias ACTCTXA* PACTCTXA; + alias const(ACTCTXA)* PCACTCTXA; + + struct ACTCTXW { + ULONG cbSize = this.sizeof; + DWORD dwFlags; + LPCWSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCWSTR lpAssemblyDirectory; + LPCWSTR lpResourceName; + LPCWSTR lpApplicationName; + HMODULE hModule; + } + alias ACTCTXW* PACTCTXW; + alias const(ACTCTXW)* PCACTCTXW; + + struct ACTCTX_SECTION_KEYED_DATA { + ULONG cbSize = this.sizeof; + ULONG ulDataFormatVersion; + PVOID lpData; + ULONG ulLength; + PVOID lpSectionGlobalData; + ULONG ulSectionGlobalDataLength; + PVOID lpSectionBase; + ULONG ulSectionTotalLength; + HANDLE hActCtx; + HANDLE ulAssemblyRosterIndex; + } + alias ACTCTX_SECTION_KEYED_DATA* PACTCTX_SECTION_KEYED_DATA; + alias const(ACTCTX_SECTION_KEYED_DATA)* PCACTCTX_SECTION_KEYED_DATA; + + enum MEMORY_RESOURCE_NOTIFICATION_TYPE { + LowMemoryResourceNotification, + HighMemoryResourceNotification + } } // (_WIN32_WINNT >= 0x501) static if (_WIN32_WINNT >= 0x410) { - /* apparently used only by SetThreadExecutionState (Win2000+) - * and DDK functions (version compatibility not established) - */ - alias DWORD EXECUTION_STATE; + /* apparently used only by SetThreadExecutionState (Win2000+) + * and DDK functions (version compatibility not established) + */ + alias DWORD EXECUTION_STATE; } // Callbacks extern (Windows) { - alias DWORD function(LPVOID) LPTHREAD_START_ROUTINE; - alias DWORD function(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, - DWORD, DWORD, HANDLE, HANDLE, LPVOID) LPPROGRESS_ROUTINE; - alias void function(PVOID) LPFIBER_START_ROUTINE; + alias DWORD function(LPVOID) LPTHREAD_START_ROUTINE; + alias DWORD function(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, + DWORD, DWORD, HANDLE, HANDLE, LPVOID) LPPROGRESS_ROUTINE; + alias void function(PVOID) LPFIBER_START_ROUTINE; - alias BOOL function(HMODULE, LPCSTR, LPCSTR, WORD, LONG) ENUMRESLANGPROCA; - alias BOOL function(HMODULE, LPCWSTR, LPCWSTR, WORD, LONG) ENUMRESLANGPROCW; - alias BOOL function(HMODULE, LPCSTR, LPSTR, LONG) ENUMRESNAMEPROCA; - alias BOOL function(HMODULE, LPCWSTR, LPWSTR, LONG) ENUMRESNAMEPROCW; - alias BOOL function(HMODULE, LPSTR, LONG) ENUMRESTYPEPROCA; - alias BOOL function(HMODULE, LPWSTR, LONG) ENUMRESTYPEPROCW; - alias void function(DWORD, DWORD, LPOVERLAPPED) LPOVERLAPPED_COMPLETION_ROUTINE; - alias LONG function(LPEXCEPTION_POINTERS) PTOP_LEVEL_EXCEPTION_FILTER; - alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; + alias BOOL function(HMODULE, LPCSTR, LPCSTR, WORD, LONG) ENUMRESLANGPROCA; + alias BOOL function(HMODULE, LPCWSTR, LPCWSTR, WORD, LONG) ENUMRESLANGPROCW; + alias BOOL function(HMODULE, LPCSTR, LPSTR, LONG) ENUMRESNAMEPROCA; + alias BOOL function(HMODULE, LPCWSTR, LPWSTR, LONG) ENUMRESNAMEPROCW; + alias BOOL function(HMODULE, LPSTR, LONG) ENUMRESTYPEPROCA; + alias BOOL function(HMODULE, LPWSTR, LONG) ENUMRESTYPEPROCW; + alias void function(DWORD, DWORD, LPOVERLAPPED) LPOVERLAPPED_COMPLETION_ROUTINE; + alias LONG function(LPEXCEPTION_POINTERS) PTOP_LEVEL_EXCEPTION_FILTER; + alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; - alias void function(ULONG_PTR) PAPCFUNC; - alias void function(PVOID, DWORD, DWORD) PTIMERAPCROUTINE; + alias void function(ULONG_PTR) PAPCFUNC; + alias void function(PVOID, DWORD, DWORD) PTIMERAPCROUTINE; - static if (_WIN32_WINNT >= 0x500) { - alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACK; - } + static if (_WIN32_WINNT >= 0x500) { + alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACK; + } } LPTSTR MAKEINTATOM()(ushort i) { - return cast(LPTSTR) cast(size_t) i; + return cast(LPTSTR) cast(size_t) i; } extern (Windows) { - ATOM AddAtomA(LPCSTR); - ATOM AddAtomW(LPCWSTR); - BOOL AreFileApisANSI(); - BOOL Beep(DWORD, DWORD); - HANDLE BeginUpdateResourceA(LPCSTR, BOOL); - HANDLE BeginUpdateResourceW(LPCWSTR, BOOL); - BOOL BuildCommDCBA(LPCSTR, LPDCB); - BOOL BuildCommDCBW(LPCWSTR, LPDCB); - BOOL BuildCommDCBAndTimeoutsA(LPCSTR, LPDCB, LPCOMMTIMEOUTS); - BOOL BuildCommDCBAndTimeoutsW(LPCWSTR, LPDCB, LPCOMMTIMEOUTS); - BOOL CallNamedPipeA(LPCSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); - BOOL CallNamedPipeW(LPCWSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); - BOOL CancelDeviceWakeupRequest(HANDLE); - BOOL CheckTokenMembership(HANDLE, PSID, PBOOL); - BOOL ClearCommBreak(HANDLE); - BOOL ClearCommError(HANDLE, PDWORD, LPCOMSTAT); - BOOL CloseHandle(HANDLE); - BOOL CommConfigDialogA(LPCSTR, HWND, LPCOMMCONFIG); - BOOL CommConfigDialogW(LPCWSTR, HWND, LPCOMMCONFIG); - LONG CompareFileTime(const(FILETIME)*, const(FILETIME)*); - BOOL ContinueDebugEvent(DWORD, DWORD, DWORD); - BOOL CopyFileA(LPCSTR, LPCSTR, BOOL); - BOOL CopyFileW(LPCWSTR, LPCWSTR, BOOL); - BOOL CopyFileExA(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); - BOOL CopyFileExW(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); - - /+ FIXME - alias memmove RtlMoveMemory; - alias memcpy RtlCopyMemory; - - void RtlFillMemory(PVOID dest, SIZE_T len, BYTE fill) { - memset(dest, fill, len); - } - - void RtlZeroMemory(PVOID dest, SIZE_T len) { - RtlFillMemory(dest, len, 0); - } - - alias RtlMoveMemory MoveMemory; - alias RtlCopyMemory CopyMemory; - alias RtlFillMemory FillMemory; - alias RtlZeroMemory ZeroMemory; - +/ - BOOL CreateDirectoryA(LPCSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateDirectoryW(LPCWSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateDirectoryExA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateDirectoryExW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); - HANDLE CreateEventA(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR); - HANDLE CreateEventW(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR); - HANDLE CreateFileA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); - HANDLE CreateFileW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); - HANDLE CreateIoCompletionPort(HANDLE, HANDLE, ULONG_PTR, DWORD); - HANDLE CreateMailslotA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HANDLE CreateMailslotW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); - HANDLE CreateMutexW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); - BOOL CreatePipe(PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD); - BOOL CreateProcessA(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); - BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR); - HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR); - HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); - BOOL DebugActiveProcess(DWORD); - void DebugBreak(); - ATOM DeleteAtom(ATOM); - void DeleteCriticalSection(PCRITICAL_SECTION); - BOOL DeleteFileA(LPCSTR); - BOOL DeleteFileW(LPCWSTR); - BOOL DisableThreadLibraryCalls(HMODULE); - BOOL DosDateTimeToFileTime(WORD, WORD, LPFILETIME); - BOOL DuplicateHandle(HANDLE, HANDLE, HANDLE, PHANDLE, DWORD, BOOL, DWORD); - BOOL EndUpdateResourceA(HANDLE, BOOL); - BOOL EndUpdateResourceW(HANDLE, BOOL); - void EnterCriticalSection(LPCRITICAL_SECTION); - BOOL EnumResourceLanguagesA(HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROC, LONG_PTR); - BOOL EnumResourceLanguagesW(HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROC, LONG_PTR); - BOOL EnumResourceNamesA(HMODULE, LPCSTR, ENUMRESNAMEPROC, LONG_PTR); - BOOL EnumResourceNamesW(HMODULE, LPCWSTR, ENUMRESNAMEPROC, LONG_PTR); - BOOL EnumResourceTypesA(HMODULE, ENUMRESTYPEPROC, LONG_PTR); - BOOL EnumResourceTypesW(HMODULE, ENUMRESTYPEPROC, LONG_PTR); - BOOL EscapeCommFunction(HANDLE, DWORD); - void ExitProcess(UINT); // Never returns - void ExitThread(DWORD); // Never returns - DWORD ExpandEnvironmentStringsA(LPCSTR, LPSTR, DWORD); - DWORD ExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD); - void FatalAppExitA(UINT, LPCSTR); - void FatalAppExitW(UINT, LPCWSTR); - void FatalExit(int); - BOOL FileTimeToDosDateTime(const(FILETIME)*, LPWORD, LPWORD); - BOOL FileTimeToLocalFileTime(const(FILETIME)*, LPFILETIME); - BOOL FileTimeToSystemTime(const(FILETIME)*, LPSYSTEMTIME); - ATOM FindAtomA(LPCSTR); - ATOM FindAtomW(LPCWSTR); - BOOL FindClose(HANDLE); - BOOL FindCloseChangeNotification(HANDLE); - HANDLE FindFirstChangeNotificationA(LPCSTR, BOOL, DWORD); - HANDLE FindFirstChangeNotificationW(LPCWSTR, BOOL, DWORD); - HANDLE FindFirstFileA(LPCSTR, LPWIN32_FIND_DATAA); - HANDLE FindFirstFileW(LPCWSTR, LPWIN32_FIND_DATAW); - BOOL FindNextChangeNotification(HANDLE); - BOOL FindNextFileA(HANDLE, LPWIN32_FIND_DATAA); - BOOL FindNextFileW(HANDLE, LPWIN32_FIND_DATAW); - HRSRC FindResourceA(HMODULE, LPCSTR, LPCSTR); - HRSRC FindResourceW(HINSTANCE, LPCWSTR, LPCWSTR); - HRSRC FindResourceExA(HINSTANCE, LPCSTR, LPCSTR, WORD); - HRSRC FindResourceExW(HINSTANCE, LPCWSTR, LPCWSTR, WORD); - BOOL FlushFileBuffers(HANDLE); - BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD); - DWORD FormatMessageA(DWORD, PCVOID, DWORD, DWORD, LPSTR, DWORD, va_list*); - DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); - BOOL FreeEnvironmentStringsA(LPSTR); - BOOL FreeEnvironmentStringsW(LPWSTR); - BOOL FreeLibrary(HMODULE); - void FreeLibraryAndExitThread(HMODULE, DWORD); // never returns - BOOL FreeResource(HGLOBAL); - UINT GetAtomNameA(ATOM, LPSTR, int); - UINT GetAtomNameW(ATOM, LPWSTR, int); - LPSTR GetCommandLineA(); - LPWSTR GetCommandLineW(); - BOOL GetCommConfig(HANDLE, LPCOMMCONFIG, PDWORD); - BOOL GetCommMask(HANDLE, PDWORD); - BOOL GetCommModemStatus(HANDLE, PDWORD); - BOOL GetCommProperties(HANDLE, LPCOMMPROP); - BOOL GetCommState(HANDLE, LPDCB); - BOOL GetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); - BOOL GetComputerNameA(LPSTR, PDWORD); - BOOL GetComputerNameW(LPWSTR, PDWORD); - DWORD GetCurrentDirectoryA(DWORD, LPSTR); - DWORD GetCurrentDirectoryW(DWORD, LPWSTR); - HANDLE GetCurrentProcess(); - DWORD GetCurrentProcessId(); - HANDLE GetCurrentThread(); + ATOM AddAtomA(LPCSTR); + ATOM AddAtomW(LPCWSTR); + BOOL AreFileApisANSI(); + BOOL Beep(DWORD, DWORD); + HANDLE BeginUpdateResourceA(LPCSTR, BOOL); + HANDLE BeginUpdateResourceW(LPCWSTR, BOOL); + BOOL BuildCommDCBA(LPCSTR, LPDCB); + BOOL BuildCommDCBW(LPCWSTR, LPDCB); + BOOL BuildCommDCBAndTimeoutsA(LPCSTR, LPDCB, LPCOMMTIMEOUTS); + BOOL BuildCommDCBAndTimeoutsW(LPCWSTR, LPDCB, LPCOMMTIMEOUTS); + BOOL CallNamedPipeA(LPCSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); + BOOL CallNamedPipeW(LPCWSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); + BOOL CancelDeviceWakeupRequest(HANDLE); + BOOL CheckTokenMembership(HANDLE, PSID, PBOOL); + BOOL ClearCommBreak(HANDLE); + BOOL ClearCommError(HANDLE, PDWORD, LPCOMSTAT); + BOOL CloseHandle(HANDLE); + BOOL CommConfigDialogA(LPCSTR, HWND, LPCOMMCONFIG); + BOOL CommConfigDialogW(LPCWSTR, HWND, LPCOMMCONFIG); + LONG CompareFileTime(const(FILETIME)*, const(FILETIME)*); + BOOL ContinueDebugEvent(DWORD, DWORD, DWORD); + BOOL CopyFileA(LPCSTR, LPCSTR, BOOL); + BOOL CopyFileW(LPCWSTR, LPCWSTR, BOOL); + BOOL CopyFileExA(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); + BOOL CopyFileExW(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); + + /+ FIXME + alias memmove RtlMoveMemory; + alias memcpy RtlCopyMemory; + + void RtlFillMemory(PVOID dest, SIZE_T len, BYTE fill) { + memset(dest, fill, len); + } + + void RtlZeroMemory(PVOID dest, SIZE_T len) { + RtlFillMemory(dest, len, 0); + } + + alias RtlMoveMemory MoveMemory; + alias RtlCopyMemory CopyMemory; + alias RtlFillMemory FillMemory; + alias RtlZeroMemory ZeroMemory; + +/ + BOOL CreateDirectoryA(LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryW(LPCWSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryExA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryExW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); + HANDLE CreateEventA(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR); + HANDLE CreateEventW(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR); + HANDLE CreateFileA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); + HANDLE CreateFileW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); + HANDLE CreateIoCompletionPort(HANDLE, HANDLE, ULONG_PTR, DWORD); + HANDLE CreateMailslotA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateMailslotW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); + HANDLE CreateMutexW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); + BOOL CreatePipe(PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD); + BOOL CreateProcessA(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); + BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR); + HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR); + HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); + BOOL DebugActiveProcess(DWORD); + void DebugBreak(); + ATOM DeleteAtom(ATOM); + void DeleteCriticalSection(PCRITICAL_SECTION); + BOOL DeleteFileA(LPCSTR); + BOOL DeleteFileW(LPCWSTR); + BOOL DisableThreadLibraryCalls(HMODULE); + BOOL DosDateTimeToFileTime(WORD, WORD, LPFILETIME); + BOOL DuplicateHandle(HANDLE, HANDLE, HANDLE, PHANDLE, DWORD, BOOL, DWORD); + BOOL EndUpdateResourceA(HANDLE, BOOL); + BOOL EndUpdateResourceW(HANDLE, BOOL); + void EnterCriticalSection(LPCRITICAL_SECTION); + BOOL EnumResourceLanguagesA(HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROC, LONG_PTR); + BOOL EnumResourceLanguagesW(HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROC, LONG_PTR); + BOOL EnumResourceNamesA(HMODULE, LPCSTR, ENUMRESNAMEPROC, LONG_PTR); + BOOL EnumResourceNamesW(HMODULE, LPCWSTR, ENUMRESNAMEPROC, LONG_PTR); + BOOL EnumResourceTypesA(HMODULE, ENUMRESTYPEPROC, LONG_PTR); + BOOL EnumResourceTypesW(HMODULE, ENUMRESTYPEPROC, LONG_PTR); + BOOL EscapeCommFunction(HANDLE, DWORD); + void ExitProcess(UINT); // Never returns + void ExitThread(DWORD); // Never returns + DWORD ExpandEnvironmentStringsA(LPCSTR, LPSTR, DWORD); + DWORD ExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD); + void FatalAppExitA(UINT, LPCSTR); + void FatalAppExitW(UINT, LPCWSTR); + void FatalExit(int); + BOOL FileTimeToDosDateTime(const(FILETIME)*, LPWORD, LPWORD); + BOOL FileTimeToLocalFileTime(const(FILETIME)*, LPFILETIME); + BOOL FileTimeToSystemTime(const(FILETIME)*, LPSYSTEMTIME); + ATOM FindAtomA(LPCSTR); + ATOM FindAtomW(LPCWSTR); + BOOL FindClose(HANDLE); + BOOL FindCloseChangeNotification(HANDLE); + HANDLE FindFirstChangeNotificationA(LPCSTR, BOOL, DWORD); + HANDLE FindFirstChangeNotificationW(LPCWSTR, BOOL, DWORD); + HANDLE FindFirstFileA(LPCSTR, LPWIN32_FIND_DATAA); + HANDLE FindFirstFileW(LPCWSTR, LPWIN32_FIND_DATAW); + BOOL FindNextChangeNotification(HANDLE); + BOOL FindNextFileA(HANDLE, LPWIN32_FIND_DATAA); + BOOL FindNextFileW(HANDLE, LPWIN32_FIND_DATAW); + HRSRC FindResourceA(HMODULE, LPCSTR, LPCSTR); + HRSRC FindResourceW(HINSTANCE, LPCWSTR, LPCWSTR); + HRSRC FindResourceExA(HINSTANCE, LPCSTR, LPCSTR, WORD); + HRSRC FindResourceExW(HINSTANCE, LPCWSTR, LPCWSTR, WORD); + BOOL FlushFileBuffers(HANDLE); + BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD); + DWORD FormatMessageA(DWORD, PCVOID, DWORD, DWORD, LPSTR, DWORD, va_list*); + DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); + BOOL FreeEnvironmentStringsA(LPSTR); + BOOL FreeEnvironmentStringsW(LPWSTR); + BOOL FreeLibrary(HMODULE); + void FreeLibraryAndExitThread(HMODULE, DWORD); // never returns + BOOL FreeResource(HGLOBAL); + UINT GetAtomNameA(ATOM, LPSTR, int); + UINT GetAtomNameW(ATOM, LPWSTR, int); + LPSTR GetCommandLineA(); + LPWSTR GetCommandLineW(); + BOOL GetCommConfig(HANDLE, LPCOMMCONFIG, PDWORD); + BOOL GetCommMask(HANDLE, PDWORD); + BOOL GetCommModemStatus(HANDLE, PDWORD); + BOOL GetCommProperties(HANDLE, LPCOMMPROP); + BOOL GetCommState(HANDLE, LPDCB); + BOOL GetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); + BOOL GetComputerNameA(LPSTR, PDWORD); + BOOL GetComputerNameW(LPWSTR, PDWORD); + DWORD GetCurrentDirectoryA(DWORD, LPSTR); + DWORD GetCurrentDirectoryW(DWORD, LPWSTR); + HANDLE GetCurrentProcess(); + DWORD GetCurrentProcessId(); + HANDLE GetCurrentThread(); /* In MinGW: #ifdef _WIN32_WCE extern DWORD GetCurrentThreadId(void); @@ -1777,173 +1777,173 @@ extern DWORD GetCurrentThreadId(void); WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); #endif */ - DWORD GetCurrentThreadId(); - - alias GetTickCount GetCurrentTime; - - BOOL GetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, PDWORD); - BOOL GetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, PDWORD); - BOOL GetDiskFreeSpaceA(LPCSTR, PDWORD, PDWORD, PDWORD, PDWORD); - BOOL GetDiskFreeSpaceW(LPCWSTR, PDWORD, PDWORD, PDWORD, PDWORD); - BOOL GetDiskFreeSpaceExA(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); - BOOL GetDiskFreeSpaceExW(LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); - UINT GetDriveTypeA(LPCSTR); - UINT GetDriveTypeW(LPCWSTR); - LPSTR GetEnvironmentStrings(); // ??? - LPSTR GetEnvironmentStringsA(); - LPWSTR GetEnvironmentStringsW(); - DWORD GetEnvironmentVariableA(LPCSTR, LPSTR, DWORD); - DWORD GetEnvironmentVariableW(LPCWSTR, LPWSTR, DWORD); - BOOL GetExitCodeProcess(HANDLE, PDWORD); - BOOL GetExitCodeThread(HANDLE, PDWORD); - DWORD GetFileAttributesA(LPCSTR); - DWORD GetFileAttributesW(LPCWSTR); - BOOL GetFileInformationByHandle(HANDLE, LPBY_HANDLE_FILE_INFORMATION); - DWORD GetFileSize(HANDLE, PDWORD); - BOOL GetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); - DWORD GetFileType(HANDLE); - DWORD GetFullPathNameA(LPCSTR, DWORD, LPSTR, LPSTR*); - DWORD GetFullPathNameW(LPCWSTR, DWORD, LPWSTR, LPWSTR*); - DWORD GetLastError(); - void GetLocalTime(LPSYSTEMTIME); - DWORD GetLogicalDrives(); - DWORD GetLogicalDriveStringsA(DWORD, LPSTR); - DWORD GetLogicalDriveStringsW(DWORD, LPWSTR); - BOOL GetMailslotInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); - DWORD GetModuleFileNameA(HINSTANCE, LPSTR, DWORD); - DWORD GetModuleFileNameW(HINSTANCE, LPWSTR, DWORD); - HMODULE GetModuleHandleA(LPCSTR); - HMODULE GetModuleHandleW(LPCWSTR); - BOOL GetNamedPipeHandleStateA(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); - BOOL GetNamedPipeHandleStateW(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); - BOOL GetNamedPipeInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); - BOOL GetOverlappedResult(HANDLE, LPOVERLAPPED, PDWORD, BOOL); - DWORD GetPriorityClass(HANDLE); - UINT GetPrivateProfileIntA(LPCSTR, LPCSTR, INT, LPCSTR); - UINT GetPrivateProfileIntW(LPCWSTR, LPCWSTR, INT, LPCWSTR); - DWORD GetPrivateProfileSectionA(LPCSTR, LPSTR, DWORD, LPCSTR); - DWORD GetPrivateProfileSectionW(LPCWSTR, LPWSTR, DWORD, LPCWSTR); - DWORD GetPrivateProfileSectionNamesA(LPSTR, DWORD, LPCSTR); - DWORD GetPrivateProfileSectionNamesW(LPWSTR, DWORD, LPCWSTR); - DWORD GetPrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD, LPCSTR); - DWORD GetPrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPCWSTR); - BOOL GetPrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); - BOOL GetPrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); - FARPROC GetProcAddress(HMODULE, LPCSTR); // 1st param wrongly HINSTANCE in MinGW - BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); - DWORD GetProcessVersion(DWORD); - UINT GetProfileIntA(LPCSTR, LPCSTR, INT); - UINT GetProfileIntW(LPCWSTR, LPCWSTR, INT); - DWORD GetProfileSectionA(LPCSTR, LPSTR, DWORD); - DWORD GetProfileSectionW(LPCWSTR, LPWSTR, DWORD); - DWORD GetProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD); - DWORD GetProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD); - DWORD GetShortPathNameA(LPCSTR, LPSTR, DWORD); - DWORD GetShortPathNameW(LPCWSTR, LPWSTR, DWORD); - VOID GetStartupInfoA(LPSTARTUPINFOA); - VOID GetStartupInfoW(LPSTARTUPINFOW); - HANDLE GetStdHandle(DWORD); - UINT GetSystemDirectoryA(LPSTR, UINT); - UINT GetSystemDirectoryW(LPWSTR, UINT); - VOID GetSystemInfo(LPSYSTEM_INFO); - VOID GetSystemTime(LPSYSTEMTIME); - BOOL GetSystemTimeAdjustment(PDWORD, PDWORD, PBOOL); - void GetSystemTimeAsFileTime(LPFILETIME); - UINT GetTempFileNameA(LPCSTR, LPCSTR, UINT, LPSTR); - UINT GetTempFileNameW(LPCWSTR, LPCWSTR, UINT, LPWSTR); - DWORD GetTempPathA(DWORD, LPSTR); - DWORD GetTempPathW(DWORD, LPWSTR); - BOOL GetThreadContext(HANDLE, LPCONTEXT); - int GetThreadPriority(HANDLE); - BOOL GetThreadSelectorEntry(HANDLE, DWORD, LPLDT_ENTRY); - DWORD GetTickCount(); - DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION); - BOOL GetUserNameA (LPSTR, PDWORD); - BOOL GetUserNameW(LPWSTR, PDWORD); - DWORD GetVersion(); - BOOL GetVersionExA(LPOSVERSIONINFOA); - BOOL GetVersionExW(LPOSVERSIONINFOW); - BOOL GetVolumeInformationA(LPCSTR, LPSTR, DWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); - BOOL GetVolumeInformationW(LPCWSTR, LPWSTR, DWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); - UINT GetWindowsDirectoryA(LPSTR, UINT); - UINT GetWindowsDirectoryW(LPWSTR, UINT); - DWORD GetWindowThreadProcessId(HWND, PDWORD); - ATOM GlobalAddAtomA(LPCSTR); - ATOM GlobalAddAtomW(LPCWSTR); - ATOM GlobalDeleteAtom(ATOM); - ATOM GlobalFindAtomA(LPCSTR); - ATOM GlobalFindAtomW(LPCWSTR); - UINT GlobalGetAtomNameA(ATOM, LPSTR, int); - UINT GlobalGetAtomNameW(ATOM, LPWSTR, int); - - bool HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped) { - return lpOverlapped.Internal != STATUS_PENDING; - } - - BOOL InitAtomTable(DWORD); - VOID InitializeCriticalSection(LPCRITICAL_SECTION); - /* ??? The next two are allegedly obsolete and "supported only for - * backward compatibility with the 16-bit Windows API". Yet the - * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ - * only. Where's the mistake? - */ - BOOL IsBadHugeReadPtr(PCVOID, UINT_PTR); - BOOL IsBadHugeWritePtr(PVOID, UINT_PTR); - BOOL IsBadReadPtr(PCVOID, UINT_PTR); - BOOL IsBadStringPtrA(LPCSTR, UINT_PTR); - BOOL IsBadStringPtrW(LPCWSTR, UINT_PTR); - BOOL IsBadWritePtr(PVOID, UINT_PTR); - void LeaveCriticalSection(LPCRITICAL_SECTION); - HINSTANCE LoadLibraryA(LPCSTR); - HINSTANCE LoadLibraryW(LPCWSTR); - HINSTANCE LoadLibraryExA(LPCSTR, HANDLE, DWORD); - HINSTANCE LoadLibraryExW(LPCWSTR, HANDLE, DWORD); - DWORD LoadModule(LPCSTR, PVOID); - HGLOBAL LoadResource(HINSTANCE, HRSRC); - BOOL LocalFileTimeToFileTime(const(FILETIME)*, LPFILETIME); - BOOL LockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); - PVOID LockResource(HGLOBAL); - - LPSTR lstrcatA(LPSTR, LPCSTR); - LPWSTR lstrcatW(LPWSTR, LPCWSTR); - int lstrcmpA(LPCSTR, LPCSTR); - int lstrcmpiA(LPCSTR, LPCSTR); - int lstrcmpiW(LPCWSTR, LPCWSTR); - int lstrcmpW(LPCWSTR, LPCWSTR); - LPSTR lstrcpyA(LPSTR, LPCSTR); - LPSTR lstrcpynA(LPSTR, LPCSTR, int); - LPWSTR lstrcpynW(LPWSTR, LPCWSTR, int); - LPWSTR lstrcpyW(LPWSTR, LPCWSTR); - int lstrlenA(LPCSTR); - int lstrlenW(LPCWSTR); - - BOOL MoveFileA(LPCSTR, LPCSTR); - BOOL MoveFileW(LPCWSTR, LPCWSTR); - int MulDiv(int, int, int); - HANDLE OpenEventA(DWORD, BOOL, LPCSTR); - HANDLE OpenEventW(DWORD, BOOL, LPCWSTR); - deprecated HFILE OpenFile(LPCSTR, LPOFSTRUCT, UINT); - HANDLE OpenMutexA(DWORD, BOOL, LPCSTR); - HANDLE OpenMutexW(DWORD, BOOL, LPCWSTR); - HANDLE OpenProcess(DWORD, BOOL, DWORD); - HANDLE OpenSemaphoreA(DWORD, BOOL, LPCSTR); - HANDLE OpenSemaphoreW(DWORD, BOOL, LPCWSTR); - void OutputDebugStringA(LPCSTR); - void OutputDebugStringW(LPCWSTR); - BOOL PeekNamedPipe(HANDLE, PVOID, DWORD, PDWORD, PDWORD, PDWORD); - BOOL PulseEvent(HANDLE); - BOOL PurgeComm(HANDLE, DWORD); - BOOL QueryPerformanceCounter(PLARGE_INTEGER); - BOOL QueryPerformanceFrequency(PLARGE_INTEGER); - DWORD QueueUserAPC(PAPCFUNC, HANDLE, ULONG_PTR); - void RaiseException(DWORD, DWORD, DWORD, const(DWORD)*); - BOOL ReadFile(HANDLE, PVOID, DWORD, PDWORD, LPOVERLAPPED); - BOOL ReadFileEx(HANDLE, PVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); - BOOL ReadProcessMemory(HANDLE, PCVOID, PVOID, SIZE_T, SIZE_T*); - BOOL ReleaseMutex(HANDLE); - BOOL ReleaseSemaphore(HANDLE, LONG, LPLONG); - BOOL RemoveDirectoryA(LPCSTR); - BOOL RemoveDirectoryW(LPCWSTR); + DWORD GetCurrentThreadId(); + + alias GetTickCount GetCurrentTime; + + BOOL GetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, PDWORD); + BOOL GetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, PDWORD); + BOOL GetDiskFreeSpaceA(LPCSTR, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetDiskFreeSpaceW(LPCWSTR, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetDiskFreeSpaceExA(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); + BOOL GetDiskFreeSpaceExW(LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); + UINT GetDriveTypeA(LPCSTR); + UINT GetDriveTypeW(LPCWSTR); + LPSTR GetEnvironmentStrings(); // ??? + LPSTR GetEnvironmentStringsA(); + LPWSTR GetEnvironmentStringsW(); + DWORD GetEnvironmentVariableA(LPCSTR, LPSTR, DWORD); + DWORD GetEnvironmentVariableW(LPCWSTR, LPWSTR, DWORD); + BOOL GetExitCodeProcess(HANDLE, PDWORD); + BOOL GetExitCodeThread(HANDLE, PDWORD); + DWORD GetFileAttributesA(LPCSTR); + DWORD GetFileAttributesW(LPCWSTR); + BOOL GetFileInformationByHandle(HANDLE, LPBY_HANDLE_FILE_INFORMATION); + DWORD GetFileSize(HANDLE, PDWORD); + BOOL GetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); + DWORD GetFileType(HANDLE); + DWORD GetFullPathNameA(LPCSTR, DWORD, LPSTR, LPSTR*); + DWORD GetFullPathNameW(LPCWSTR, DWORD, LPWSTR, LPWSTR*); + DWORD GetLastError(); + void GetLocalTime(LPSYSTEMTIME); + DWORD GetLogicalDrives(); + DWORD GetLogicalDriveStringsA(DWORD, LPSTR); + DWORD GetLogicalDriveStringsW(DWORD, LPWSTR); + BOOL GetMailslotInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); + DWORD GetModuleFileNameA(HINSTANCE, LPSTR, DWORD); + DWORD GetModuleFileNameW(HINSTANCE, LPWSTR, DWORD); + HMODULE GetModuleHandleA(LPCSTR); + HMODULE GetModuleHandleW(LPCWSTR); + BOOL GetNamedPipeHandleStateA(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); + BOOL GetNamedPipeHandleStateW(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); + BOOL GetNamedPipeInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetOverlappedResult(HANDLE, LPOVERLAPPED, PDWORD, BOOL); + DWORD GetPriorityClass(HANDLE); + UINT GetPrivateProfileIntA(LPCSTR, LPCSTR, INT, LPCSTR); + UINT GetPrivateProfileIntW(LPCWSTR, LPCWSTR, INT, LPCWSTR); + DWORD GetPrivateProfileSectionA(LPCSTR, LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileSectionW(LPCWSTR, LPWSTR, DWORD, LPCWSTR); + DWORD GetPrivateProfileSectionNamesA(LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileSectionNamesW(LPWSTR, DWORD, LPCWSTR); + DWORD GetPrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPCWSTR); + BOOL GetPrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); + BOOL GetPrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); + FARPROC GetProcAddress(HMODULE, LPCSTR); // 1st param wrongly HINSTANCE in MinGW + BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); + DWORD GetProcessVersion(DWORD); + UINT GetProfileIntA(LPCSTR, LPCSTR, INT); + UINT GetProfileIntW(LPCWSTR, LPCWSTR, INT); + DWORD GetProfileSectionA(LPCSTR, LPSTR, DWORD); + DWORD GetProfileSectionW(LPCWSTR, LPWSTR, DWORD); + DWORD GetProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD); + DWORD GetProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD); + DWORD GetShortPathNameA(LPCSTR, LPSTR, DWORD); + DWORD GetShortPathNameW(LPCWSTR, LPWSTR, DWORD); + VOID GetStartupInfoA(LPSTARTUPINFOA); + VOID GetStartupInfoW(LPSTARTUPINFOW); + HANDLE GetStdHandle(DWORD); + UINT GetSystemDirectoryA(LPSTR, UINT); + UINT GetSystemDirectoryW(LPWSTR, UINT); + VOID GetSystemInfo(LPSYSTEM_INFO); + VOID GetSystemTime(LPSYSTEMTIME); + BOOL GetSystemTimeAdjustment(PDWORD, PDWORD, PBOOL); + void GetSystemTimeAsFileTime(LPFILETIME); + UINT GetTempFileNameA(LPCSTR, LPCSTR, UINT, LPSTR); + UINT GetTempFileNameW(LPCWSTR, LPCWSTR, UINT, LPWSTR); + DWORD GetTempPathA(DWORD, LPSTR); + DWORD GetTempPathW(DWORD, LPWSTR); + BOOL GetThreadContext(HANDLE, LPCONTEXT); + int GetThreadPriority(HANDLE); + BOOL GetThreadSelectorEntry(HANDLE, DWORD, LPLDT_ENTRY); + DWORD GetTickCount(); + DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION); + BOOL GetUserNameA (LPSTR, PDWORD); + BOOL GetUserNameW(LPWSTR, PDWORD); + DWORD GetVersion(); + BOOL GetVersionExA(LPOSVERSIONINFOA); + BOOL GetVersionExW(LPOSVERSIONINFOW); + BOOL GetVolumeInformationA(LPCSTR, LPSTR, DWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); + BOOL GetVolumeInformationW(LPCWSTR, LPWSTR, DWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); + UINT GetWindowsDirectoryA(LPSTR, UINT); + UINT GetWindowsDirectoryW(LPWSTR, UINT); + DWORD GetWindowThreadProcessId(HWND, PDWORD); + ATOM GlobalAddAtomA(LPCSTR); + ATOM GlobalAddAtomW(LPCWSTR); + ATOM GlobalDeleteAtom(ATOM); + ATOM GlobalFindAtomA(LPCSTR); + ATOM GlobalFindAtomW(LPCWSTR); + UINT GlobalGetAtomNameA(ATOM, LPSTR, int); + UINT GlobalGetAtomNameW(ATOM, LPWSTR, int); + + bool HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped) { + return lpOverlapped.Internal != STATUS_PENDING; + } + + BOOL InitAtomTable(DWORD); + VOID InitializeCriticalSection(LPCRITICAL_SECTION); + /* ??? The next two are allegedly obsolete and "supported only for + * backward compatibility with the 16-bit Windows API". Yet the + * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ + * only. Where's the mistake? + */ + BOOL IsBadHugeReadPtr(PCVOID, UINT_PTR); + BOOL IsBadHugeWritePtr(PVOID, UINT_PTR); + BOOL IsBadReadPtr(PCVOID, UINT_PTR); + BOOL IsBadStringPtrA(LPCSTR, UINT_PTR); + BOOL IsBadStringPtrW(LPCWSTR, UINT_PTR); + BOOL IsBadWritePtr(PVOID, UINT_PTR); + void LeaveCriticalSection(LPCRITICAL_SECTION); + HINSTANCE LoadLibraryA(LPCSTR); + HINSTANCE LoadLibraryW(LPCWSTR); + HINSTANCE LoadLibraryExA(LPCSTR, HANDLE, DWORD); + HINSTANCE LoadLibraryExW(LPCWSTR, HANDLE, DWORD); + DWORD LoadModule(LPCSTR, PVOID); + HGLOBAL LoadResource(HINSTANCE, HRSRC); + BOOL LocalFileTimeToFileTime(const(FILETIME)*, LPFILETIME); + BOOL LockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + PVOID LockResource(HGLOBAL); + + LPSTR lstrcatA(LPSTR, LPCSTR); + LPWSTR lstrcatW(LPWSTR, LPCWSTR); + int lstrcmpA(LPCSTR, LPCSTR); + int lstrcmpiA(LPCSTR, LPCSTR); + int lstrcmpiW(LPCWSTR, LPCWSTR); + int lstrcmpW(LPCWSTR, LPCWSTR); + LPSTR lstrcpyA(LPSTR, LPCSTR); + LPSTR lstrcpynA(LPSTR, LPCSTR, int); + LPWSTR lstrcpynW(LPWSTR, LPCWSTR, int); + LPWSTR lstrcpyW(LPWSTR, LPCWSTR); + int lstrlenA(LPCSTR); + int lstrlenW(LPCWSTR); + + BOOL MoveFileA(LPCSTR, LPCSTR); + BOOL MoveFileW(LPCWSTR, LPCWSTR); + int MulDiv(int, int, int); + HANDLE OpenEventA(DWORD, BOOL, LPCSTR); + HANDLE OpenEventW(DWORD, BOOL, LPCWSTR); + deprecated HFILE OpenFile(LPCSTR, LPOFSTRUCT, UINT); + HANDLE OpenMutexA(DWORD, BOOL, LPCSTR); + HANDLE OpenMutexW(DWORD, BOOL, LPCWSTR); + HANDLE OpenProcess(DWORD, BOOL, DWORD); + HANDLE OpenSemaphoreA(DWORD, BOOL, LPCSTR); + HANDLE OpenSemaphoreW(DWORD, BOOL, LPCWSTR); + void OutputDebugStringA(LPCSTR); + void OutputDebugStringW(LPCWSTR); + BOOL PeekNamedPipe(HANDLE, PVOID, DWORD, PDWORD, PDWORD, PDWORD); + BOOL PulseEvent(HANDLE); + BOOL PurgeComm(HANDLE, DWORD); + BOOL QueryPerformanceCounter(PLARGE_INTEGER); + BOOL QueryPerformanceFrequency(PLARGE_INTEGER); + DWORD QueueUserAPC(PAPCFUNC, HANDLE, ULONG_PTR); + void RaiseException(DWORD, DWORD, DWORD, const(DWORD)*); + BOOL ReadFile(HANDLE, PVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL ReadFileEx(HANDLE, PVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL ReadProcessMemory(HANDLE, PCVOID, PVOID, SIZE_T, SIZE_T*); + BOOL ReleaseMutex(HANDLE); + BOOL ReleaseSemaphore(HANDLE, LONG, LPLONG); + BOOL RemoveDirectoryA(LPCSTR); + BOOL RemoveDirectoryW(LPCWSTR); /* In MinGW: #ifdef _WIN32_WCE extern BOOL ResetEvent(HANDLE); @@ -1951,25 +1951,25 @@ extern BOOL ResetEvent(HANDLE); WINBASEAPI BOOL WINAPI ResetEvent(HANDLE); #endif */ - BOOL ResetEvent(HANDLE); - DWORD ResumeThread(HANDLE); - DWORD SearchPathA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR*); - DWORD SearchPathW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR*); - BOOL SetCommBreak(HANDLE); - BOOL SetCommConfig(HANDLE, LPCOMMCONFIG, DWORD); - BOOL SetCommMask(HANDLE, DWORD); - BOOL SetCommState(HANDLE, LPDCB); - BOOL SetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); - BOOL SetComputerNameA(LPCSTR); - BOOL SetComputerNameW(LPCWSTR); - BOOL SetCurrentDirectoryA(LPCSTR); - BOOL SetCurrentDirectoryW(LPCWSTR); - BOOL SetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, DWORD); - BOOL SetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, DWORD); - BOOL SetEndOfFile(HANDLE); - BOOL SetEnvironmentVariableA(LPCSTR, LPCSTR); - BOOL SetEnvironmentVariableW(LPCWSTR, LPCWSTR); - UINT SetErrorMode(UINT); + BOOL ResetEvent(HANDLE); + DWORD ResumeThread(HANDLE); + DWORD SearchPathA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR*); + DWORD SearchPathW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR*); + BOOL SetCommBreak(HANDLE); + BOOL SetCommConfig(HANDLE, LPCOMMCONFIG, DWORD); + BOOL SetCommMask(HANDLE, DWORD); + BOOL SetCommState(HANDLE, LPDCB); + BOOL SetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); + BOOL SetComputerNameA(LPCSTR); + BOOL SetComputerNameW(LPCWSTR); + BOOL SetCurrentDirectoryA(LPCSTR); + BOOL SetCurrentDirectoryW(LPCWSTR); + BOOL SetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, DWORD); + BOOL SetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, DWORD); + BOOL SetEndOfFile(HANDLE); + BOOL SetEnvironmentVariableA(LPCSTR, LPCSTR); + BOOL SetEnvironmentVariableW(LPCWSTR, LPCWSTR); + UINT SetErrorMode(UINT); /* In MinGW: #ifdef _WIN32_WCE extern BOOL SetEvent(HANDLE); @@ -1977,815 +1977,815 @@ extern BOOL SetEvent(HANDLE); WINBASEAPI BOOL WINAPI SetEvent(HANDLE); #endif */ - BOOL SetEvent(HANDLE); - VOID SetFileApisToANSI(); - VOID SetFileApisToOEM(); - BOOL SetFileAttributesA(LPCSTR, DWORD); - BOOL SetFileAttributesW(LPCWSTR, DWORD); - DWORD SetFilePointer(HANDLE, LONG, PLONG, DWORD); - BOOL SetFileTime(HANDLE, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); - deprecated UINT SetHandleCount(UINT); - void SetLastError(DWORD); - void SetLastErrorEx(DWORD, DWORD); - BOOL SetLocalTime(const(SYSTEMTIME)*); - BOOL SetMailslotInfo(HANDLE, DWORD); - BOOL SetNamedPipeHandleState(HANDLE, PDWORD, PDWORD, PDWORD); - BOOL SetPriorityClass(HANDLE, DWORD); - BOOL SetStdHandle(DWORD, HANDLE); - BOOL SetSystemTime(const(SYSTEMTIME)*); - DWORD SetThreadAffinityMask(HANDLE, DWORD); - BOOL SetThreadContext(HANDLE, const(CONTEXT)*); - BOOL SetThreadPriority(HANDLE, int); - BOOL SetTimeZoneInformation(const(TIME_ZONE_INFORMATION)*); - LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER); - BOOL SetupComm(HANDLE, DWORD, DWORD); - BOOL SetVolumeLabelA(LPCSTR, LPCSTR); - BOOL SetVolumeLabelW(LPCWSTR, LPCWSTR); - - DWORD SizeofResource(HINSTANCE, HRSRC); - void Sleep(DWORD); - DWORD SleepEx(DWORD, BOOL); - DWORD SuspendThread(HANDLE); - BOOL SystemTimeToFileTime(const(SYSTEMTIME)*, LPFILETIME); - BOOL TerminateProcess(HANDLE, UINT); - BOOL TerminateThread(HANDLE, DWORD); - DWORD TlsAlloc(); - BOOL TlsFree(DWORD); - PVOID TlsGetValue(DWORD); - BOOL TlsSetValue(DWORD, PVOID); - BOOL TransactNamedPipe(HANDLE, PVOID, DWORD, PVOID, DWORD, PDWORD, LPOVERLAPPED); - BOOL TransmitCommChar(HANDLE, char); - LONG UnhandledExceptionFilter(LPEXCEPTION_POINTERS); - BOOL UnlockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); - BOOL WaitCommEvent(HANDLE, PDWORD, LPOVERLAPPED); - BOOL WaitForDebugEvent(LPDEBUG_EVENT, DWORD); - DWORD WaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD); - DWORD WaitForMultipleObjectsEx(DWORD, const(HANDLE)*, BOOL, DWORD, BOOL); - DWORD WaitForSingleObject(HANDLE, DWORD); - DWORD WaitForSingleObjectEx(HANDLE, DWORD, BOOL); - BOOL WaitNamedPipeA(LPCSTR, DWORD); - BOOL WaitNamedPipeW(LPCWSTR, DWORD); - // undocumented on MSDN - BOOL WinLoadTrustProvider(GUID*); - BOOL WriteFile(HANDLE, PCVOID, DWORD, PDWORD, LPOVERLAPPED); - BOOL WriteFileEx(HANDLE, PCVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); - BOOL WritePrivateProfileSectionA(LPCSTR, LPCSTR, LPCSTR); - BOOL WritePrivateProfileSectionW(LPCWSTR, LPCWSTR, LPCWSTR); - BOOL WritePrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPCSTR); - BOOL WritePrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); - BOOL WritePrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); - BOOL WritePrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); - BOOL WriteProcessMemory(HANDLE, LPVOID, LPCVOID, SIZE_T, SIZE_T*); - BOOL WriteProfileSectionA(LPCSTR, LPCSTR); - BOOL WriteProfileSectionW(LPCWSTR, LPCWSTR); - BOOL WriteProfileStringA(LPCSTR, LPCSTR, LPCSTR); - BOOL WriteProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR); - - /* Memory allocation functions. - * MSDN documents these erroneously as Win2000+; thus it is uncertain what - * version compatibility they really have. - */ - HGLOBAL GlobalAlloc(UINT, DWORD); - HGLOBAL GlobalDiscard(HGLOBAL); - HGLOBAL GlobalFree(HGLOBAL); - HGLOBAL GlobalHandle(PCVOID); - LPVOID GlobalLock(HGLOBAL); - VOID GlobalMemoryStatus(LPMEMORYSTATUS); - HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); - DWORD GlobalSize(HGLOBAL); - BOOL GlobalUnlock(HGLOBAL); - PVOID HeapAlloc(HANDLE, DWORD, DWORD); - SIZE_T HeapCompact(HANDLE, DWORD); - HANDLE HeapCreate(DWORD, DWORD, DWORD); - BOOL HeapDestroy(HANDLE); - BOOL HeapFree(HANDLE, DWORD, PVOID); - BOOL HeapLock(HANDLE); - PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); - DWORD HeapSize(HANDLE, DWORD, PCVOID); - BOOL HeapUnlock(HANDLE); - BOOL HeapValidate(HANDLE, DWORD, PCVOID); - BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); - HLOCAL LocalAlloc(UINT, SIZE_T); - HLOCAL LocalDiscard(HLOCAL); - HLOCAL LocalFree(HLOCAL); - HLOCAL LocalHandle(LPCVOID); - PVOID LocalLock(HLOCAL); - HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); - UINT LocalSize(HLOCAL); - BOOL LocalUnlock(HLOCAL); - PVOID VirtualAlloc(PVOID, DWORD, DWORD, DWORD); - PVOID VirtualAllocEx(HANDLE, PVOID, DWORD, DWORD, DWORD); - BOOL VirtualFree(PVOID, DWORD, DWORD); - BOOL VirtualFreeEx(HANDLE, PVOID, DWORD, DWORD); - BOOL VirtualLock(PVOID, DWORD); - BOOL VirtualProtect(PVOID, DWORD, DWORD, PDWORD); - BOOL VirtualProtectEx(HANDLE, PVOID, DWORD, DWORD, PDWORD); - DWORD VirtualQuery(LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); - DWORD VirtualQueryEx(HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); - BOOL VirtualUnlock(PVOID, DWORD); + BOOL SetEvent(HANDLE); + VOID SetFileApisToANSI(); + VOID SetFileApisToOEM(); + BOOL SetFileAttributesA(LPCSTR, DWORD); + BOOL SetFileAttributesW(LPCWSTR, DWORD); + DWORD SetFilePointer(HANDLE, LONG, PLONG, DWORD); + BOOL SetFileTime(HANDLE, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); + deprecated UINT SetHandleCount(UINT); + void SetLastError(DWORD); + void SetLastErrorEx(DWORD, DWORD); + BOOL SetLocalTime(const(SYSTEMTIME)*); + BOOL SetMailslotInfo(HANDLE, DWORD); + BOOL SetNamedPipeHandleState(HANDLE, PDWORD, PDWORD, PDWORD); + BOOL SetPriorityClass(HANDLE, DWORD); + BOOL SetStdHandle(DWORD, HANDLE); + BOOL SetSystemTime(const(SYSTEMTIME)*); + DWORD SetThreadAffinityMask(HANDLE, DWORD); + BOOL SetThreadContext(HANDLE, const(CONTEXT)*); + BOOL SetThreadPriority(HANDLE, int); + BOOL SetTimeZoneInformation(const(TIME_ZONE_INFORMATION)*); + LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER); + BOOL SetupComm(HANDLE, DWORD, DWORD); + BOOL SetVolumeLabelA(LPCSTR, LPCSTR); + BOOL SetVolumeLabelW(LPCWSTR, LPCWSTR); + + DWORD SizeofResource(HINSTANCE, HRSRC); + void Sleep(DWORD); + DWORD SleepEx(DWORD, BOOL); + DWORD SuspendThread(HANDLE); + BOOL SystemTimeToFileTime(const(SYSTEMTIME)*, LPFILETIME); + BOOL TerminateProcess(HANDLE, UINT); + BOOL TerminateThread(HANDLE, DWORD); + DWORD TlsAlloc(); + BOOL TlsFree(DWORD); + PVOID TlsGetValue(DWORD); + BOOL TlsSetValue(DWORD, PVOID); + BOOL TransactNamedPipe(HANDLE, PVOID, DWORD, PVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL TransmitCommChar(HANDLE, char); + LONG UnhandledExceptionFilter(LPEXCEPTION_POINTERS); + BOOL UnlockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + BOOL WaitCommEvent(HANDLE, PDWORD, LPOVERLAPPED); + BOOL WaitForDebugEvent(LPDEBUG_EVENT, DWORD); + DWORD WaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD); + DWORD WaitForMultipleObjectsEx(DWORD, const(HANDLE)*, BOOL, DWORD, BOOL); + DWORD WaitForSingleObject(HANDLE, DWORD); + DWORD WaitForSingleObjectEx(HANDLE, DWORD, BOOL); + BOOL WaitNamedPipeA(LPCSTR, DWORD); + BOOL WaitNamedPipeW(LPCWSTR, DWORD); + // undocumented on MSDN + BOOL WinLoadTrustProvider(GUID*); + BOOL WriteFile(HANDLE, PCVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL WriteFileEx(HANDLE, PCVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL WritePrivateProfileSectionA(LPCSTR, LPCSTR, LPCSTR); + BOOL WritePrivateProfileSectionW(LPCWSTR, LPCWSTR, LPCWSTR); + BOOL WritePrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPCSTR); + BOOL WritePrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL WritePrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); + BOOL WritePrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); + BOOL WriteProcessMemory(HANDLE, LPVOID, LPCVOID, SIZE_T, SIZE_T*); + BOOL WriteProfileSectionA(LPCSTR, LPCSTR); + BOOL WriteProfileSectionW(LPCWSTR, LPCWSTR); + BOOL WriteProfileStringA(LPCSTR, LPCSTR, LPCSTR); + BOOL WriteProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR); + + /* Memory allocation functions. + * MSDN documents these erroneously as Win2000+; thus it is uncertain what + * version compatibility they really have. + */ + HGLOBAL GlobalAlloc(UINT, DWORD); + HGLOBAL GlobalDiscard(HGLOBAL); + HGLOBAL GlobalFree(HGLOBAL); + HGLOBAL GlobalHandle(PCVOID); + LPVOID GlobalLock(HGLOBAL); + VOID GlobalMemoryStatus(LPMEMORYSTATUS); + HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); + DWORD GlobalSize(HGLOBAL); + BOOL GlobalUnlock(HGLOBAL); + PVOID HeapAlloc(HANDLE, DWORD, DWORD); + SIZE_T HeapCompact(HANDLE, DWORD); + HANDLE HeapCreate(DWORD, DWORD, DWORD); + BOOL HeapDestroy(HANDLE); + BOOL HeapFree(HANDLE, DWORD, PVOID); + BOOL HeapLock(HANDLE); + PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); + DWORD HeapSize(HANDLE, DWORD, PCVOID); + BOOL HeapUnlock(HANDLE); + BOOL HeapValidate(HANDLE, DWORD, PCVOID); + BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); + HLOCAL LocalAlloc(UINT, SIZE_T); + HLOCAL LocalDiscard(HLOCAL); + HLOCAL LocalFree(HLOCAL); + HLOCAL LocalHandle(LPCVOID); + PVOID LocalLock(HLOCAL); + HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); + UINT LocalSize(HLOCAL); + BOOL LocalUnlock(HLOCAL); + PVOID VirtualAlloc(PVOID, DWORD, DWORD, DWORD); + PVOID VirtualAllocEx(HANDLE, PVOID, DWORD, DWORD, DWORD); + BOOL VirtualFree(PVOID, DWORD, DWORD); + BOOL VirtualFreeEx(HANDLE, PVOID, DWORD, DWORD); + BOOL VirtualLock(PVOID, DWORD); + BOOL VirtualProtect(PVOID, DWORD, DWORD, PDWORD); + BOOL VirtualProtectEx(HANDLE, PVOID, DWORD, DWORD, PDWORD); + DWORD VirtualQuery(LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); + DWORD VirtualQueryEx(HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); + BOOL VirtualUnlock(PVOID, DWORD); // not in MinGW 4.0 - ??? - static if (_WIN32_WINNT >= 0x600) { - BOOL CancelIoEx(HANDLE, LPOVERLAPPED); - } - - BOOL CancelIo(HANDLE); - BOOL CancelWaitableTimer(HANDLE); - PVOID ConvertThreadToFiber(PVOID); - LPVOID CreateFiber(SIZE_T, LPFIBER_START_ROUTINE, LPVOID); - HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); - HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); - void DeleteFiber(PVOID); - BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); - BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); - DWORD GetLongPathNameA(LPCSTR, LPSTR, DWORD); - DWORD GetLongPathNameW(LPCWSTR, LPWSTR, DWORD); - BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION, DWORD); - BOOL IsDebuggerPresent(); - HANDLE OpenWaitableTimerA(DWORD, BOOL, LPCSTR); - HANDLE OpenWaitableTimerW(DWORD, BOOL, LPCWSTR); - DWORD QueryDosDeviceA(LPCSTR, LPSTR, DWORD); - DWORD QueryDosDeviceW(LPCWSTR, LPWSTR, DWORD); - BOOL SetWaitableTimer(HANDLE, const(LARGE_INTEGER)*, LONG, PTIMERAPCROUTINE, PVOID, BOOL); - void SwitchToFiber(PVOID); - - static if (_WIN32_WINNT >= 0x500) { - HANDLE OpenThread(DWORD, BOOL, DWORD); - } - - BOOL AccessCheck(PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, PDWORD, PDWORD, PBOOL); - BOOL AccessCheckAndAuditAlarmA(LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); - BOOL AccessCheckAndAuditAlarmW(LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); - BOOL AddAccessAllowedAce(PACL, DWORD, DWORD, PSID); - BOOL AddAccessDeniedAce(PACL, DWORD, DWORD, PSID); - BOOL AddAce(PACL, DWORD, DWORD, PVOID, DWORD); - BOOL AddAuditAccessAce(PACL, DWORD, DWORD, PSID, BOOL, BOOL); - BOOL AdjustTokenGroups(HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD); - BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); - BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); - BOOL AllocateLocallyUniqueId(PLUID); - BOOL AreAllAccessesGranted(DWORD, DWORD); - BOOL AreAnyAccessesGranted(DWORD, DWORD); - BOOL BackupEventLogA(HANDLE, LPCSTR); - BOOL BackupEventLogW(HANDLE, LPCWSTR); - BOOL BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); - BOOL BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID*); - BOOL BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); - BOOL ClearEventLogA(HANDLE, LPCSTR); - BOOL ClearEventLogW(HANDLE, LPCWSTR); - BOOL CloseEventLog(HANDLE); - BOOL ConnectNamedPipe(HANDLE, LPOVERLAPPED); - BOOL CopySid(DWORD, PSID, PSID); - HANDLE CreateNamedPipeA(LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HANDLE CreateNamedPipeW(LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); - BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); - BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); - DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); - BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); - BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); - BOOL DeleteAce(PACL, DWORD); - BOOL DeregisterEventSource(HANDLE); - BOOL DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); - BOOL DeviceIoControl(HANDLE, DWORD, PVOID, DWORD, PVOID, DWORD, PDWORD, POVERLAPPED); - BOOL DisconnectNamedPipe(HANDLE); - BOOL DuplicateToken(HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE); - BOOL DuplicateTokenEx(HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE); - BOOL EqualPrefixSid(PSID, PSID); - BOOL EqualSid(PSID, PSID); - DWORD EraseTape(HANDLE, DWORD, BOOL); - HANDLE FindFirstFileExA(LPCSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); - HANDLE FindFirstFileExW(LPCWSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); - BOOL FindFirstFreeAce(PACL, PVOID*); - PVOID FreeSid(PSID); - BOOL GetAce(PACL, DWORD, LPVOID*); - BOOL GetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); - BOOL GetBinaryTypeA(LPCSTR, PDWORD); - BOOL GetBinaryTypeW(LPCWSTR, PDWORD); - DWORD GetCompressedFileSizeA(LPCSTR, PDWORD); - DWORD GetCompressedFileSizeW(LPCWSTR, PDWORD); - BOOL GetCurrentHwProfileA(LPHW_PROFILE_INFOA); - BOOL GetCurrentHwProfileW(LPHW_PROFILE_INFOW); - BOOL GetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - BOOL GetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - BOOL GetHandleInformation(HANDLE, PDWORD); - BOOL GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - DWORD GetLengthSid(PSID); - BOOL GetNumberOfEventLogRecords(HANDLE, PDWORD); - BOOL GetOldestEventLogRecord(HANDLE, PDWORD); - BOOL GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - BOOL GetProcessPriorityBoost(HANDLE, PBOOL); - BOOL GetProcessShutdownParameters(PDWORD, PDWORD); - BOOL GetProcessTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); - HWINSTA GetProcessWindowStation(); - BOOL GetProcessWorkingSetSize(HANDLE, PSIZE_T, PSIZE_T); - BOOL GetQueuedCompletionStatus(HANDLE, PDWORD, PULONG_PTR, LPOVERLAPPED*, DWORD); - BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, PDWORD); - BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); - BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); - DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); - BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); - BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); - PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority(PSID); - DWORD GetSidLengthRequired(UCHAR); - PDWORD GetSidSubAuthority(PSID, DWORD); - PUCHAR GetSidSubAuthorityCount(PSID); - DWORD GetTapeParameters(HANDLE, DWORD, PDWORD, PVOID); - DWORD GetTapePosition(HANDLE, DWORD, PDWORD, PDWORD, PDWORD); - DWORD GetTapeStatus(HANDLE); - BOOL GetThreadPriorityBoost(HANDLE, PBOOL); - BOOL GetThreadTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); - BOOL GetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD, PDWORD); - BOOL ImpersonateLoggedOnUser(HANDLE); - BOOL ImpersonateNamedPipeClient(HANDLE); - BOOL ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); - BOOL InitializeAcl(PACL, DWORD, DWORD); - DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION, DWORD); - BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR, DWORD); - BOOL InitializeSid(PSID, PSID_IDENTIFIER_AUTHORITY, BYTE); - BOOL IsProcessorFeaturePresent(DWORD); - BOOL IsTextUnicode(PCVOID, int, LPINT); - BOOL IsValidAcl(PACL); - BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); - BOOL IsValidSid(PSID); - BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED); - BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE); - BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); - BOOL LookupAccountNameA(LPCSTR, LPCSTR, PSID, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); - BOOL LookupAccountNameW(LPCWSTR, LPCWSTR, PSID, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); - BOOL LookupAccountSidA(LPCSTR, PSID, LPSTR, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); - BOOL LookupAccountSidW(LPCWSTR, PSID, LPWSTR, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); - BOOL LookupPrivilegeDisplayNameA(LPCSTR, LPCSTR, LPSTR, PDWORD, PDWORD); - BOOL LookupPrivilegeDisplayNameW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, PDWORD); - BOOL LookupPrivilegeNameA(LPCSTR, PLUID, LPSTR, PDWORD); - BOOL LookupPrivilegeNameW(LPCWSTR, PLUID, LPWSTR, PDWORD); - BOOL LookupPrivilegeValueA(LPCSTR, LPCSTR, PLUID); - BOOL LookupPrivilegeValueW(LPCWSTR, LPCWSTR, PLUID); - BOOL MakeAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD); - BOOL MakeSelfRelativeSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD); - VOID MapGenericMask(PDWORD, PGENERIC_MAPPING); - BOOL MoveFileExA(LPCSTR, LPCSTR, DWORD); - BOOL MoveFileExW(LPCWSTR, LPCWSTR, DWORD); - BOOL NotifyChangeEventLog(HANDLE, HANDLE); - BOOL ObjectCloseAuditAlarmA(LPCSTR, PVOID, BOOL); - BOOL ObjectCloseAuditAlarmW(LPCWSTR, PVOID, BOOL); - BOOL ObjectDeleteAuditAlarmA(LPCSTR, PVOID, BOOL); - BOOL ObjectDeleteAuditAlarmW(LPCWSTR, PVOID, BOOL); - BOOL ObjectOpenAuditAlarmA(LPCSTR, PVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); - BOOL ObjectOpenAuditAlarmW(LPCWSTR, PVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); - BOOL ObjectPrivilegeAuditAlarmA(LPCSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); - BOOL ObjectPrivilegeAuditAlarmW(LPCWSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); - HANDLE OpenBackupEventLogA(LPCSTR, LPCSTR); - HANDLE OpenBackupEventLogW(LPCWSTR, LPCWSTR); - HANDLE OpenEventLogA(LPCSTR, LPCSTR); - HANDLE OpenEventLogW(LPCWSTR, LPCWSTR); - BOOL OpenProcessToken(HANDLE, DWORD, PHANDLE); - BOOL OpenThreadToken(HANDLE, DWORD, BOOL, PHANDLE); - BOOL PostQueuedCompletionStatus(HANDLE, DWORD, ULONG_PTR, LPOVERLAPPED); - DWORD PrepareTape(HANDLE, DWORD, BOOL); - BOOL PrivilegeCheck(HANDLE, PPRIVILEGE_SET, PBOOL); - BOOL PrivilegedServiceAuditAlarmA(LPCSTR, LPCSTR, HANDLE, PPRIVILEGE_SET, BOOL); - BOOL PrivilegedServiceAuditAlarmW(LPCWSTR, LPCWSTR, HANDLE, PPRIVILEGE_SET, BOOL); - BOOL ReadDirectoryChangesW(HANDLE, PVOID, DWORD, BOOL, DWORD, PDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); - BOOL ReadEventLogA(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); - BOOL ReadEventLogW(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); - BOOL ReadFileScatter(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); - HANDLE RegisterEventSourceA (LPCSTR, LPCSTR); - HANDLE RegisterEventSourceW(LPCWSTR, LPCWSTR); - BOOL ReportEventA(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCSTR*, PVOID); - BOOL ReportEventW(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR*, PVOID); - BOOL RevertToSelf(); - BOOL SetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); - BOOL SetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - BOOL SetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - BOOL SetHandleInformation(HANDLE, DWORD, DWORD); - BOOL SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - BOOL SetPrivateObjectSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, PGENERIC_MAPPING, HANDLE); - BOOL SetProcessAffinityMask(HANDLE, DWORD); - BOOL SetProcessPriorityBoost(HANDLE, BOOL); - BOOL SetProcessShutdownParameters(DWORD, DWORD); - BOOL SetProcessWorkingSetSize(HANDLE, SIZE_T, SIZE_T); - BOOL SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); - BOOL SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID, BOOL); - BOOL SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID, BOOL); - BOOL SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); - BOOL SetSystemTimeAdjustment(DWORD, BOOL); - DWORD SetTapeParameters(HANDLE, DWORD, PVOID); - DWORD SetTapePosition(HANDLE, DWORD, DWORD, DWORD, DWORD, BOOL); - BOOL SetThreadPriorityBoost(HANDLE, BOOL); - BOOL SetThreadToken(PHANDLE, HANDLE); - BOOL SetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD); - DWORD SignalObjectAndWait(HANDLE, HANDLE, DWORD, BOOL); - BOOL SwitchToThread(); - BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); - BOOL TryEnterCriticalSection(LPCRITICAL_SECTION); - BOOL UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED); - BOOL UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, PVOID, DWORD); - BOOL UpdateResourceW(HANDLE, LPCWSTR, LPCWSTR, WORD, PVOID, DWORD); - BOOL WriteFileGather(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); - DWORD WriteTapemark(HANDLE, DWORD, DWORD, BOOL); - - static if (_WIN32_WINNT >= 0x500) { - BOOL AddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID); - BOOL AddAccessDeniedAceEx(PACL, DWORD, DWORD, DWORD, PSID); - PVOID AddVectoredExceptionHandler(ULONG, PVECTORED_EXCEPTION_HANDLER); - BOOL AllocateUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); - BOOL AssignProcessToJobObject(HANDLE, HANDLE); - BOOL ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG); - LPVOID CreateFiberEx(SIZE_T, SIZE_T, DWORD, LPFIBER_START_ROUTINE, LPVOID); - HANDLE CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR); - HANDLE CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR); - BOOL CreateHardLinkA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateHardLinkW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); - HANDLE CreateJobObjectA(LPSECURITY_ATTRIBUTES, LPCSTR); - HANDLE CreateJobObjectW(LPSECURITY_ATTRIBUTES, LPCWSTR); - BOOL CreateProcessWithLogonW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateTimerQueue(); - BOOL CreateTimerQueueTimer(PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, DWORD, DWORD, ULONG); - BOOL DeleteTimerQueue(HANDLE); - BOOL DeleteTimerQueueEx(HANDLE, HANDLE); - BOOL DeleteTimerQueueTimer(HANDLE, HANDLE, HANDLE); - BOOL DeleteVolumeMountPointA(LPCSTR); - BOOL DeleteVolumeMountPointW(LPCWSTR); - BOOL DnsHostnameToComputerNameA(LPCSTR, LPSTR, LPDWORD); - BOOL DnsHostnameToComputerNameW(LPCWSTR, LPWSTR, LPDWORD); - BOOL EncryptFileA(LPCSTR); - BOOL EncryptFileW(LPCWSTR); - BOOL FileEncryptionStatusA(LPCSTR, LPDWORD); - BOOL FileEncryptionStatusW(LPCWSTR, LPDWORD); - HANDLE FindFirstVolumeA(LPCSTR, DWORD); - HANDLE FindFirstVolumeMountPointA(LPSTR, LPSTR, DWORD); - HANDLE FindFirstVolumeMountPointW(LPWSTR, LPWSTR, DWORD); - HANDLE FindFirstVolumeW(LPCWSTR, DWORD); - BOOL FindNextVolumeA(HANDLE, LPCSTR, DWORD); - BOOL FindNextVolumeW(HANDLE, LPWSTR, DWORD); - BOOL FindNextVolumeMountPointA(HANDLE, LPSTR, DWORD); - BOOL FindNextVolumeMountPointW(HANDLE, LPWSTR, DWORD); - BOOL FindVolumeClose(HANDLE); - BOOL FindVolumeMountPointClose(HANDLE); - BOOL FlushViewOfFile(PCVOID, DWORD); - BOOL FreeUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); - BOOL GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD); - BOOL GetComputerNameExW(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD); - BOOL GetFileSizeEx(HANDLE, PLARGE_INTEGER); - BOOL GetModuleHandleExA(DWORD, LPCSTR, HMODULE*); - BOOL GetModuleHandleExW(DWORD, LPCWSTR, HMODULE*); - HANDLE GetProcessHeap(); - DWORD GetProcessHeaps(DWORD, PHANDLE); - BOOL GetProcessIoCounters(HANDLE, PIO_COUNTERS); - BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); - UINT GetSystemWindowsDirectoryA(LPSTR, UINT); - UINT GetSystemWindowsDirectoryW(LPWSTR, UINT); - BOOL GetVolumeNameForVolumeMountPointA(LPCSTR, LPSTR, DWORD); - BOOL GetVolumeNameForVolumeMountPointW(LPCWSTR, LPWSTR, DWORD); - BOOL GetVolumePathNameA(LPCSTR, LPSTR, DWORD); - BOOL GetVolumePathNameW(LPCWSTR, LPWSTR, DWORD); - BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX); - BOOL IsBadCodePtr(FARPROC); - BOOL IsSystemResumeAutomatic(); - BOOL MapUserPhysicalPages(PVOID, ULONG_PTR, PULONG_PTR); - BOOL MapUserPhysicalPagesScatter(PVOID*, ULONG_PTR, PULONG_PTR); - PVOID MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, DWORD); - PVOID MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, PVOID); - HANDLE OpenFileMappingA(DWORD, BOOL, LPCSTR); - HANDLE OpenFileMappingW(DWORD, BOOL, LPCWSTR); - BOOL ProcessIdToSessionId(DWORD, DWORD*); - BOOL QueryInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD); - ULONG RemoveVectoredExceptionHandler(PVOID); - BOOL ReplaceFileA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID); - BOOL ReplaceFileW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPVOID, LPVOID); - BOOL SetComputerNameExA(COMPUTER_NAME_FORMAT, LPCSTR); - BOOL SetComputerNameExW(COMPUTER_NAME_FORMAT, LPCWSTR); - BOOL SetFilePointerEx(HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD); - BOOL SetInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD); - BOOL SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, SECURITY_DESCRIPTOR_CONTROL); - BOOL SetSystemPowerState(BOOL, BOOL); - EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE); - DWORD SetThreadIdealProcessor(HANDLE, DWORD); - BOOL SetVolumeMountPointA(LPCSTR, LPCSTR); - BOOL SetVolumeMountPointW(LPCWSTR, LPCWSTR); - BOOL TerminateJobObject(HANDLE, UINT); - BOOL UnmapViewOfFile(PVOID); - BOOL UnregisterWait(HANDLE); - BOOL UnregisterWaitEx(HANDLE, HANDLE); - BOOL VerifyVersionInfoA(LPOSVERSIONINFOEXA, DWORD, DWORDLONG); - BOOL VerifyVersionInfoW(LPOSVERSIONINFOEXW, DWORD, DWORDLONG); - } - - static if (_WIN32_WINNT >= 0x501) { - BOOL ActivateActCtx(HANDLE, ULONG_PTR*); - void AddRefActCtx(HANDLE); - BOOL CheckNameLegalDOS8Dot3A(LPCSTR, LPSTR, DWORD, PBOOL, PBOOL); - BOOL CheckNameLegalDOS8Dot3W(LPCWSTR, LPSTR, DWORD, PBOOL, PBOOL); - BOOL CheckRemoteDebuggerPresent(HANDLE, PBOOL); - BOOL ConvertFiberToThread(); - HANDLE CreateActCtxA(PCACTCTXA); - HANDLE CreateActCtxW(PCACTCTXW); - HANDLE CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE); - BOOL DeactivateActCtx(DWORD, ULONG_PTR); - BOOL DebugActiveProcessStop(DWORD); - BOOL DebugBreakProcess(HANDLE); - BOOL DebugSetProcessKillOnExit(BOOL); - BOOL FindActCtxSectionGuid(DWORD, const(GUID)*, ULONG, const(GUID)*, - PACTCTX_SECTION_KEYED_DATA); - BOOL FindActCtxSectionStringA(DWORD, const(GUID)*, ULONG, LPCSTR, - PACTCTX_SECTION_KEYED_DATA); - BOOL FindActCtxSectionStringW(DWORD, const(GUID)*, ULONG, LPCWSTR, - PACTCTX_SECTION_KEYED_DATA); - BOOL GetCurrentActCtx(HANDLE*); - VOID GetNativeSystemInfo(LPSYSTEM_INFO); - BOOL GetProcessHandleCount(HANDLE, PDWORD); - BOOL GetSystemRegistryQuota(PDWORD, PDWORD); - BOOL GetSystemTimes(LPFILETIME, LPFILETIME, LPFILETIME); - UINT GetSystemWow64DirectoryA(LPSTR, UINT); - UINT GetSystemWow64DirectoryW(LPWSTR, UINT); - BOOL GetThreadIOPendingFlag(HANDLE, PBOOL); - BOOL GetVolumePathNamesForVolumeNameA(LPCSTR, LPSTR, DWORD, PDWORD); - BOOL GetVolumePathNamesForVolumeNameW(LPCWSTR, LPWSTR, DWORD, PDWORD); - UINT GetWriteWatch(DWORD, PVOID, SIZE_T, PVOID*, PULONG_PTR, PULONG); - BOOL HeapQueryInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T); - BOOL HeapSetInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T); - BOOL IsProcessInJob(HANDLE, HANDLE, PBOOL); - BOOL IsWow64Process(HANDLE, PBOOL); - BOOL QueryActCtxW(DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T*); - BOOL QueryMemoryResourceNotification(HANDLE, PBOOL); - void ReleaseActCtx(HANDLE); - UINT ResetWriteWatch(LPVOID, SIZE_T); - BOOL SetFileShortNameA(HANDLE, LPCSTR); - BOOL SetFileShortNameW(HANDLE, LPCWSTR); - BOOL SetFileValidData(HANDLE, LONGLONG); - BOOL ZombifyActCtx(HANDLE); - } - - static if (_WIN32_WINNT >= 0x502) { - DWORD GetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); - DWORD GetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); - DWORD GetDllDirectoryA(DWORD, LPSTR); - DWORD GetDllDirectoryW(DWORD, LPWSTR); - DWORD GetThreadId(HANDLE); - DWORD GetProcessId(HANDLE); - HANDLE ReOpenFile(HANDLE, DWORD, DWORD, DWORD); - BOOL SetDllDirectoryA(LPCSTR); - BOOL SetDllDirectoryW(LPCWSTR); - BOOL SetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); - BOOL SetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); - } - - // ??? - static if (_WIN32_WINNT >= 0x510) { - VOID RestoreLastError(DWORD); - } + static if (_WIN32_WINNT >= 0x600) { + BOOL CancelIoEx(HANDLE, LPOVERLAPPED); + } + + BOOL CancelIo(HANDLE); + BOOL CancelWaitableTimer(HANDLE); + PVOID ConvertThreadToFiber(PVOID); + LPVOID CreateFiber(SIZE_T, LPFIBER_START_ROUTINE, LPVOID); + HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); + HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); + void DeleteFiber(PVOID); + BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); + BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); + DWORD GetLongPathNameA(LPCSTR, LPSTR, DWORD); + DWORD GetLongPathNameW(LPCWSTR, LPWSTR, DWORD); + BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION, DWORD); + BOOL IsDebuggerPresent(); + HANDLE OpenWaitableTimerA(DWORD, BOOL, LPCSTR); + HANDLE OpenWaitableTimerW(DWORD, BOOL, LPCWSTR); + DWORD QueryDosDeviceA(LPCSTR, LPSTR, DWORD); + DWORD QueryDosDeviceW(LPCWSTR, LPWSTR, DWORD); + BOOL SetWaitableTimer(HANDLE, const(LARGE_INTEGER)*, LONG, PTIMERAPCROUTINE, PVOID, BOOL); + void SwitchToFiber(PVOID); + + static if (_WIN32_WINNT >= 0x500) { + HANDLE OpenThread(DWORD, BOOL, DWORD); + } + + BOOL AccessCheck(PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, PDWORD, PDWORD, PBOOL); + BOOL AccessCheckAndAuditAlarmA(LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); + BOOL AccessCheckAndAuditAlarmW(LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); + BOOL AddAccessAllowedAce(PACL, DWORD, DWORD, PSID); + BOOL AddAccessDeniedAce(PACL, DWORD, DWORD, PSID); + BOOL AddAce(PACL, DWORD, DWORD, PVOID, DWORD); + BOOL AddAuditAccessAce(PACL, DWORD, DWORD, PSID, BOOL, BOOL); + BOOL AdjustTokenGroups(HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD); + BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); + BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); + BOOL AllocateLocallyUniqueId(PLUID); + BOOL AreAllAccessesGranted(DWORD, DWORD); + BOOL AreAnyAccessesGranted(DWORD, DWORD); + BOOL BackupEventLogA(HANDLE, LPCSTR); + BOOL BackupEventLogW(HANDLE, LPCWSTR); + BOOL BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); + BOOL BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID*); + BOOL BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); + BOOL ClearEventLogA(HANDLE, LPCSTR); + BOOL ClearEventLogW(HANDLE, LPCWSTR); + BOOL CloseEventLog(HANDLE); + BOOL ConnectNamedPipe(HANDLE, LPOVERLAPPED); + BOOL CopySid(DWORD, PSID, PSID); + HANDLE CreateNamedPipeA(LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateNamedPipeW(LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); + BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); + BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); + DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); + BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); + BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); + BOOL DeleteAce(PACL, DWORD); + BOOL DeregisterEventSource(HANDLE); + BOOL DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); + BOOL DeviceIoControl(HANDLE, DWORD, PVOID, DWORD, PVOID, DWORD, PDWORD, POVERLAPPED); + BOOL DisconnectNamedPipe(HANDLE); + BOOL DuplicateToken(HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE); + BOOL DuplicateTokenEx(HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE); + BOOL EqualPrefixSid(PSID, PSID); + BOOL EqualSid(PSID, PSID); + DWORD EraseTape(HANDLE, DWORD, BOOL); + HANDLE FindFirstFileExA(LPCSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); + HANDLE FindFirstFileExW(LPCWSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); + BOOL FindFirstFreeAce(PACL, PVOID*); + PVOID FreeSid(PSID); + BOOL GetAce(PACL, DWORD, LPVOID*); + BOOL GetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); + BOOL GetBinaryTypeA(LPCSTR, PDWORD); + BOOL GetBinaryTypeW(LPCWSTR, PDWORD); + DWORD GetCompressedFileSizeA(LPCSTR, PDWORD); + DWORD GetCompressedFileSizeW(LPCWSTR, PDWORD); + BOOL GetCurrentHwProfileA(LPHW_PROFILE_INFOA); + BOOL GetCurrentHwProfileW(LPHW_PROFILE_INFOW); + BOOL GetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetHandleInformation(HANDLE, PDWORD); + BOOL GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + DWORD GetLengthSid(PSID); + BOOL GetNumberOfEventLogRecords(HANDLE, PDWORD); + BOOL GetOldestEventLogRecord(HANDLE, PDWORD); + BOOL GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetProcessPriorityBoost(HANDLE, PBOOL); + BOOL GetProcessShutdownParameters(PDWORD, PDWORD); + BOOL GetProcessTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); + HWINSTA GetProcessWindowStation(); + BOOL GetProcessWorkingSetSize(HANDLE, PSIZE_T, PSIZE_T); + BOOL GetQueuedCompletionStatus(HANDLE, PDWORD, PULONG_PTR, LPOVERLAPPED*, DWORD); + BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, PDWORD); + BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); + BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); + DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); + BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); + BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); + PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority(PSID); + DWORD GetSidLengthRequired(UCHAR); + PDWORD GetSidSubAuthority(PSID, DWORD); + PUCHAR GetSidSubAuthorityCount(PSID); + DWORD GetTapeParameters(HANDLE, DWORD, PDWORD, PVOID); + DWORD GetTapePosition(HANDLE, DWORD, PDWORD, PDWORD, PDWORD); + DWORD GetTapeStatus(HANDLE); + BOOL GetThreadPriorityBoost(HANDLE, PBOOL); + BOOL GetThreadTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); + BOOL GetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD, PDWORD); + BOOL ImpersonateLoggedOnUser(HANDLE); + BOOL ImpersonateNamedPipeClient(HANDLE); + BOOL ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); + BOOL InitializeAcl(PACL, DWORD, DWORD); + DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION, DWORD); + BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR, DWORD); + BOOL InitializeSid(PSID, PSID_IDENTIFIER_AUTHORITY, BYTE); + BOOL IsProcessorFeaturePresent(DWORD); + BOOL IsTextUnicode(PCVOID, int, LPINT); + BOOL IsValidAcl(PACL); + BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); + BOOL IsValidSid(PSID); + BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED); + BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE); + BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); + BOOL LookupAccountNameA(LPCSTR, LPCSTR, PSID, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountNameW(LPCWSTR, LPCWSTR, PSID, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountSidA(LPCSTR, PSID, LPSTR, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountSidW(LPCWSTR, PSID, LPWSTR, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); + BOOL LookupPrivilegeDisplayNameA(LPCSTR, LPCSTR, LPSTR, PDWORD, PDWORD); + BOOL LookupPrivilegeDisplayNameW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, PDWORD); + BOOL LookupPrivilegeNameA(LPCSTR, PLUID, LPSTR, PDWORD); + BOOL LookupPrivilegeNameW(LPCWSTR, PLUID, LPWSTR, PDWORD); + BOOL LookupPrivilegeValueA(LPCSTR, LPCSTR, PLUID); + BOOL LookupPrivilegeValueW(LPCWSTR, LPCWSTR, PLUID); + BOOL MakeAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD); + BOOL MakeSelfRelativeSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD); + VOID MapGenericMask(PDWORD, PGENERIC_MAPPING); + BOOL MoveFileExA(LPCSTR, LPCSTR, DWORD); + BOOL MoveFileExW(LPCWSTR, LPCWSTR, DWORD); + BOOL NotifyChangeEventLog(HANDLE, HANDLE); + BOOL ObjectCloseAuditAlarmA(LPCSTR, PVOID, BOOL); + BOOL ObjectCloseAuditAlarmW(LPCWSTR, PVOID, BOOL); + BOOL ObjectDeleteAuditAlarmA(LPCSTR, PVOID, BOOL); + BOOL ObjectDeleteAuditAlarmW(LPCWSTR, PVOID, BOOL); + BOOL ObjectOpenAuditAlarmA(LPCSTR, PVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); + BOOL ObjectOpenAuditAlarmW(LPCWSTR, PVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); + BOOL ObjectPrivilegeAuditAlarmA(LPCSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); + BOOL ObjectPrivilegeAuditAlarmW(LPCWSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); + HANDLE OpenBackupEventLogA(LPCSTR, LPCSTR); + HANDLE OpenBackupEventLogW(LPCWSTR, LPCWSTR); + HANDLE OpenEventLogA(LPCSTR, LPCSTR); + HANDLE OpenEventLogW(LPCWSTR, LPCWSTR); + BOOL OpenProcessToken(HANDLE, DWORD, PHANDLE); + BOOL OpenThreadToken(HANDLE, DWORD, BOOL, PHANDLE); + BOOL PostQueuedCompletionStatus(HANDLE, DWORD, ULONG_PTR, LPOVERLAPPED); + DWORD PrepareTape(HANDLE, DWORD, BOOL); + BOOL PrivilegeCheck(HANDLE, PPRIVILEGE_SET, PBOOL); + BOOL PrivilegedServiceAuditAlarmA(LPCSTR, LPCSTR, HANDLE, PPRIVILEGE_SET, BOOL); + BOOL PrivilegedServiceAuditAlarmW(LPCWSTR, LPCWSTR, HANDLE, PPRIVILEGE_SET, BOOL); + BOOL ReadDirectoryChangesW(HANDLE, PVOID, DWORD, BOOL, DWORD, PDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL ReadEventLogA(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); + BOOL ReadEventLogW(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); + BOOL ReadFileScatter(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); + HANDLE RegisterEventSourceA (LPCSTR, LPCSTR); + HANDLE RegisterEventSourceW(LPCWSTR, LPCWSTR); + BOOL ReportEventA(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCSTR*, PVOID); + BOOL ReportEventW(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR*, PVOID); + BOOL RevertToSelf(); + BOOL SetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); + BOOL SetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetHandleInformation(HANDLE, DWORD, DWORD); + BOOL SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetPrivateObjectSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, PGENERIC_MAPPING, HANDLE); + BOOL SetProcessAffinityMask(HANDLE, DWORD); + BOOL SetProcessPriorityBoost(HANDLE, BOOL); + BOOL SetProcessShutdownParameters(DWORD, DWORD); + BOOL SetProcessWorkingSetSize(HANDLE, SIZE_T, SIZE_T); + BOOL SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); + BOOL SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID, BOOL); + BOOL SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID, BOOL); + BOOL SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); + BOOL SetSystemTimeAdjustment(DWORD, BOOL); + DWORD SetTapeParameters(HANDLE, DWORD, PVOID); + DWORD SetTapePosition(HANDLE, DWORD, DWORD, DWORD, DWORD, BOOL); + BOOL SetThreadPriorityBoost(HANDLE, BOOL); + BOOL SetThreadToken(PHANDLE, HANDLE); + BOOL SetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD); + DWORD SignalObjectAndWait(HANDLE, HANDLE, DWORD, BOOL); + BOOL SwitchToThread(); + BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); + BOOL TryEnterCriticalSection(LPCRITICAL_SECTION); + BOOL UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED); + BOOL UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, PVOID, DWORD); + BOOL UpdateResourceW(HANDLE, LPCWSTR, LPCWSTR, WORD, PVOID, DWORD); + BOOL WriteFileGather(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); + DWORD WriteTapemark(HANDLE, DWORD, DWORD, BOOL); + + static if (_WIN32_WINNT >= 0x500) { + BOOL AddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID); + BOOL AddAccessDeniedAceEx(PACL, DWORD, DWORD, DWORD, PSID); + PVOID AddVectoredExceptionHandler(ULONG, PVECTORED_EXCEPTION_HANDLER); + BOOL AllocateUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); + BOOL AssignProcessToJobObject(HANDLE, HANDLE); + BOOL ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG); + LPVOID CreateFiberEx(SIZE_T, SIZE_T, DWORD, LPFIBER_START_ROUTINE, LPVOID); + HANDLE CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR); + HANDLE CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR); + BOOL CreateHardLinkA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateHardLinkW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); + HANDLE CreateJobObjectA(LPSECURITY_ATTRIBUTES, LPCSTR); + HANDLE CreateJobObjectW(LPSECURITY_ATTRIBUTES, LPCWSTR); + BOOL CreateProcessWithLogonW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateTimerQueue(); + BOOL CreateTimerQueueTimer(PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, DWORD, DWORD, ULONG); + BOOL DeleteTimerQueue(HANDLE); + BOOL DeleteTimerQueueEx(HANDLE, HANDLE); + BOOL DeleteTimerQueueTimer(HANDLE, HANDLE, HANDLE); + BOOL DeleteVolumeMountPointA(LPCSTR); + BOOL DeleteVolumeMountPointW(LPCWSTR); + BOOL DnsHostnameToComputerNameA(LPCSTR, LPSTR, LPDWORD); + BOOL DnsHostnameToComputerNameW(LPCWSTR, LPWSTR, LPDWORD); + BOOL EncryptFileA(LPCSTR); + BOOL EncryptFileW(LPCWSTR); + BOOL FileEncryptionStatusA(LPCSTR, LPDWORD); + BOOL FileEncryptionStatusW(LPCWSTR, LPDWORD); + HANDLE FindFirstVolumeA(LPCSTR, DWORD); + HANDLE FindFirstVolumeMountPointA(LPSTR, LPSTR, DWORD); + HANDLE FindFirstVolumeMountPointW(LPWSTR, LPWSTR, DWORD); + HANDLE FindFirstVolumeW(LPCWSTR, DWORD); + BOOL FindNextVolumeA(HANDLE, LPCSTR, DWORD); + BOOL FindNextVolumeW(HANDLE, LPWSTR, DWORD); + BOOL FindNextVolumeMountPointA(HANDLE, LPSTR, DWORD); + BOOL FindNextVolumeMountPointW(HANDLE, LPWSTR, DWORD); + BOOL FindVolumeClose(HANDLE); + BOOL FindVolumeMountPointClose(HANDLE); + BOOL FlushViewOfFile(PCVOID, DWORD); + BOOL FreeUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); + BOOL GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD); + BOOL GetComputerNameExW(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD); + BOOL GetFileSizeEx(HANDLE, PLARGE_INTEGER); + BOOL GetModuleHandleExA(DWORD, LPCSTR, HMODULE*); + BOOL GetModuleHandleExW(DWORD, LPCWSTR, HMODULE*); + HANDLE GetProcessHeap(); + DWORD GetProcessHeaps(DWORD, PHANDLE); + BOOL GetProcessIoCounters(HANDLE, PIO_COUNTERS); + BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); + UINT GetSystemWindowsDirectoryA(LPSTR, UINT); + UINT GetSystemWindowsDirectoryW(LPWSTR, UINT); + BOOL GetVolumeNameForVolumeMountPointA(LPCSTR, LPSTR, DWORD); + BOOL GetVolumeNameForVolumeMountPointW(LPCWSTR, LPWSTR, DWORD); + BOOL GetVolumePathNameA(LPCSTR, LPSTR, DWORD); + BOOL GetVolumePathNameW(LPCWSTR, LPWSTR, DWORD); + BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX); + BOOL IsBadCodePtr(FARPROC); + BOOL IsSystemResumeAutomatic(); + BOOL MapUserPhysicalPages(PVOID, ULONG_PTR, PULONG_PTR); + BOOL MapUserPhysicalPagesScatter(PVOID*, ULONG_PTR, PULONG_PTR); + PVOID MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + PVOID MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, PVOID); + HANDLE OpenFileMappingA(DWORD, BOOL, LPCSTR); + HANDLE OpenFileMappingW(DWORD, BOOL, LPCWSTR); + BOOL ProcessIdToSessionId(DWORD, DWORD*); + BOOL QueryInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD); + ULONG RemoveVectoredExceptionHandler(PVOID); + BOOL ReplaceFileA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID); + BOOL ReplaceFileW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPVOID, LPVOID); + BOOL SetComputerNameExA(COMPUTER_NAME_FORMAT, LPCSTR); + BOOL SetComputerNameExW(COMPUTER_NAME_FORMAT, LPCWSTR); + BOOL SetFilePointerEx(HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD); + BOOL SetInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD); + BOOL SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, SECURITY_DESCRIPTOR_CONTROL); + BOOL SetSystemPowerState(BOOL, BOOL); + EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE); + DWORD SetThreadIdealProcessor(HANDLE, DWORD); + BOOL SetVolumeMountPointA(LPCSTR, LPCSTR); + BOOL SetVolumeMountPointW(LPCWSTR, LPCWSTR); + BOOL TerminateJobObject(HANDLE, UINT); + BOOL UnmapViewOfFile(PVOID); + BOOL UnregisterWait(HANDLE); + BOOL UnregisterWaitEx(HANDLE, HANDLE); + BOOL VerifyVersionInfoA(LPOSVERSIONINFOEXA, DWORD, DWORDLONG); + BOOL VerifyVersionInfoW(LPOSVERSIONINFOEXW, DWORD, DWORDLONG); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL ActivateActCtx(HANDLE, ULONG_PTR*); + void AddRefActCtx(HANDLE); + BOOL CheckNameLegalDOS8Dot3A(LPCSTR, LPSTR, DWORD, PBOOL, PBOOL); + BOOL CheckNameLegalDOS8Dot3W(LPCWSTR, LPSTR, DWORD, PBOOL, PBOOL); + BOOL CheckRemoteDebuggerPresent(HANDLE, PBOOL); + BOOL ConvertFiberToThread(); + HANDLE CreateActCtxA(PCACTCTXA); + HANDLE CreateActCtxW(PCACTCTXW); + HANDLE CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE); + BOOL DeactivateActCtx(DWORD, ULONG_PTR); + BOOL DebugActiveProcessStop(DWORD); + BOOL DebugBreakProcess(HANDLE); + BOOL DebugSetProcessKillOnExit(BOOL); + BOOL FindActCtxSectionGuid(DWORD, const(GUID)*, ULONG, const(GUID)*, + PACTCTX_SECTION_KEYED_DATA); + BOOL FindActCtxSectionStringA(DWORD, const(GUID)*, ULONG, LPCSTR, + PACTCTX_SECTION_KEYED_DATA); + BOOL FindActCtxSectionStringW(DWORD, const(GUID)*, ULONG, LPCWSTR, + PACTCTX_SECTION_KEYED_DATA); + BOOL GetCurrentActCtx(HANDLE*); + VOID GetNativeSystemInfo(LPSYSTEM_INFO); + BOOL GetProcessHandleCount(HANDLE, PDWORD); + BOOL GetSystemRegistryQuota(PDWORD, PDWORD); + BOOL GetSystemTimes(LPFILETIME, LPFILETIME, LPFILETIME); + UINT GetSystemWow64DirectoryA(LPSTR, UINT); + UINT GetSystemWow64DirectoryW(LPWSTR, UINT); + BOOL GetThreadIOPendingFlag(HANDLE, PBOOL); + BOOL GetVolumePathNamesForVolumeNameA(LPCSTR, LPSTR, DWORD, PDWORD); + BOOL GetVolumePathNamesForVolumeNameW(LPCWSTR, LPWSTR, DWORD, PDWORD); + UINT GetWriteWatch(DWORD, PVOID, SIZE_T, PVOID*, PULONG_PTR, PULONG); + BOOL HeapQueryInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T); + BOOL HeapSetInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T); + BOOL IsProcessInJob(HANDLE, HANDLE, PBOOL); + BOOL IsWow64Process(HANDLE, PBOOL); + BOOL QueryActCtxW(DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T*); + BOOL QueryMemoryResourceNotification(HANDLE, PBOOL); + void ReleaseActCtx(HANDLE); + UINT ResetWriteWatch(LPVOID, SIZE_T); + BOOL SetFileShortNameA(HANDLE, LPCSTR); + BOOL SetFileShortNameW(HANDLE, LPCWSTR); + BOOL SetFileValidData(HANDLE, LONGLONG); + BOOL ZombifyActCtx(HANDLE); + } + + static if (_WIN32_WINNT >= 0x502) { + DWORD GetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); + DWORD GetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); + DWORD GetDllDirectoryA(DWORD, LPSTR); + DWORD GetDllDirectoryW(DWORD, LPWSTR); + DWORD GetThreadId(HANDLE); + DWORD GetProcessId(HANDLE); + HANDLE ReOpenFile(HANDLE, DWORD, DWORD, DWORD); + BOOL SetDllDirectoryA(LPCSTR); + BOOL SetDllDirectoryW(LPCWSTR); + BOOL SetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); + BOOL SetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); + } + + // ??? + static if (_WIN32_WINNT >= 0x510) { + VOID RestoreLastError(DWORD); + } } mixin DECLARE_AW!("STARTUPINFO"); version (Unicode) { - //alias STARTUPINFOW STARTUPINFO; - alias WIN32_FIND_DATAW WIN32_FIND_DATA; - alias ENUMRESLANGPROCW ENUMRESLANGPROC; - alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; - alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; - alias AddAtomW AddAtom; - alias BeginUpdateResourceW BeginUpdateResource; - alias BuildCommDCBW BuildCommDCB; - alias BuildCommDCBAndTimeoutsW BuildCommDCBAndTimeouts; - alias CallNamedPipeW CallNamedPipe; - alias CommConfigDialogW CommConfigDialog; - alias CopyFileW CopyFile; - alias CopyFileExW CopyFileEx; - alias CreateDirectoryW CreateDirectory; - alias CreateDirectoryExW CreateDirectoryEx; - alias CreateEventW CreateEvent; - alias CreateFileW CreateFile; - alias CreateMailslotW CreateMailslot; - alias CreateMutexW CreateMutex; - alias CreateProcessW CreateProcess; - alias CreateSemaphoreW CreateSemaphore; - alias DeleteFileW DeleteFile; - alias EndUpdateResourceW EndUpdateResource; - alias EnumResourceLanguagesW EnumResourceLanguages; - alias EnumResourceNamesW EnumResourceNames; - alias EnumResourceTypesW EnumResourceTypes; - alias ExpandEnvironmentStringsW ExpandEnvironmentStrings; - alias FatalAppExitW FatalAppExit; - alias FindAtomW FindAtom; - alias FindFirstChangeNotificationW FindFirstChangeNotification; - alias FindFirstFileW FindFirstFile; - alias FindNextFileW FindNextFile; - alias FindResourceW FindResource; - alias FindResourceExW FindResourceEx; - alias FormatMessageW FormatMessage; - alias FreeEnvironmentStringsW FreeEnvironmentStrings; - alias GetAtomNameW GetAtomName; - alias GetCommandLineW GetCommandLine; - alias GetComputerNameW GetComputerName; - alias GetCurrentDirectoryW GetCurrentDirectory; - alias GetDefaultCommConfigW GetDefaultCommConfig; - alias GetDiskFreeSpaceW GetDiskFreeSpace; - alias GetDiskFreeSpaceExW GetDiskFreeSpaceEx; - alias GetDriveTypeW GetDriveType; - alias GetEnvironmentStringsW GetEnvironmentStrings; - alias GetEnvironmentVariableW GetEnvironmentVariable; - alias GetFileAttributesW GetFileAttributes; - alias GetFullPathNameW GetFullPathName; - alias GetLogicalDriveStringsW GetLogicalDriveStrings; - alias GetModuleFileNameW GetModuleFileName; - alias GetModuleHandleW GetModuleHandle; - alias GetNamedPipeHandleStateW GetNamedPipeHandleState; - alias GetPrivateProfileIntW GetPrivateProfileInt; - alias GetPrivateProfileSectionW GetPrivateProfileSection; - alias GetPrivateProfileSectionNamesW GetPrivateProfileSectionNames; - alias GetPrivateProfileStringW GetPrivateProfileString; - alias GetPrivateProfileStructW GetPrivateProfileStruct; - alias GetProfileIntW GetProfileInt; - alias GetProfileSectionW GetProfileSection; - alias GetProfileStringW GetProfileString; - alias GetShortPathNameW GetShortPathName; - alias GetStartupInfoW GetStartupInfo; - alias GetSystemDirectoryW GetSystemDirectory; - alias GetTempFileNameW GetTempFileName; - alias GetTempPathW GetTempPath; - alias GetUserNameW GetUserName; - alias GetVersionExW GetVersionEx; - alias GetVolumeInformationW GetVolumeInformation; - alias GetWindowsDirectoryW GetWindowsDirectory; - alias GlobalAddAtomW GlobalAddAtom; - alias GlobalFindAtomW GlobalFindAtom; - alias GlobalGetAtomNameW GlobalGetAtomName; - alias IsBadStringPtrW IsBadStringPtr; - alias LoadLibraryW LoadLibrary; - alias LoadLibraryExW LoadLibraryEx; - alias lstrcatW lstrcat; - alias lstrcmpW lstrcmp; - alias lstrcmpiW lstrcmpi; - alias lstrcpyW lstrcpy; - alias lstrcpynW lstrcpyn; - alias lstrlenW lstrlen; - alias MoveFileW MoveFile; - alias OpenEventW OpenEvent; - alias OpenMutexW OpenMutex; - alias OpenSemaphoreW OpenSemaphore; - alias OutputDebugStringW OutputDebugString; - alias RemoveDirectoryW RemoveDirectory; - alias SearchPathW SearchPath; - alias SetComputerNameW SetComputerName; - alias SetCurrentDirectoryW SetCurrentDirectory; - alias SetDefaultCommConfigW SetDefaultCommConfig; - alias SetEnvironmentVariableW SetEnvironmentVariable; - alias SetFileAttributesW SetFileAttributes; - alias SetVolumeLabelW SetVolumeLabel; - alias WaitNamedPipeW WaitNamedPipe; - alias WritePrivateProfileSectionW WritePrivateProfileSection; - alias WritePrivateProfileStringW WritePrivateProfileString; - alias WritePrivateProfileStructW WritePrivateProfileStruct; - alias WriteProfileSectionW WriteProfileSection; - alias WriteProfileStringW WriteProfileString; - alias CreateWaitableTimerW CreateWaitableTimer; - alias GetFileAttributesExW GetFileAttributesEx; - alias GetLongPathNameW GetLongPathName; - alias QueryDosDeviceW QueryDosDevice; - - alias HW_PROFILE_INFOW HW_PROFILE_INFO; - alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; - alias BackupEventLogW BackupEventLog; - alias ClearEventLogW ClearEventLog; - alias CreateNamedPipeW CreateNamedPipe; - alias CreateProcessAsUserW CreateProcessAsUser; - alias DefineDosDeviceW DefineDosDevice; - alias FindFirstFileExW FindFirstFileEx; - alias GetBinaryTypeW GetBinaryType; - alias GetCompressedFileSizeW GetCompressedFileSize; - alias GetFileSecurityW GetFileSecurity; - alias LogonUserW LogonUser; - alias LookupAccountNameW LookupAccountName; - alias LookupAccountSidW LookupAccountSid; - alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; - alias LookupPrivilegeNameW LookupPrivilegeName; - alias LookupPrivilegeValueW LookupPrivilegeValue; - alias MoveFileExW MoveFileEx; - alias ObjectCloseAuditAlarmW ObjectCloseAuditAlarm; - alias ObjectDeleteAuditAlarmW ObjectDeleteAuditAlarm; - alias ObjectOpenAuditAlarmW ObjectOpenAuditAlarm; - alias ObjectPrivilegeAuditAlarmW ObjectPrivilegeAuditAlarm; - alias OpenBackupEventLogW OpenBackupEventLog; - alias OpenEventLogW OpenEventLog; - alias PrivilegedServiceAuditAlarmW PrivilegedServiceAuditAlarm; - alias ReadEventLogW ReadEventLog; - alias RegisterEventSourceW RegisterEventSource; - alias ReportEventW ReportEvent; - alias SetFileSecurityW SetFileSecurity; - alias UpdateResourceW UpdateResource; - - static if (_WIN32_WINNT >= 0x500) { - alias CreateFileMappingW CreateFileMapping; - alias CreateHardLinkW CreateHardLink; - alias CreateJobObjectW CreateJobObject; - alias DeleteVolumeMountPointW DeleteVolumeMountPoint; - alias DnsHostnameToComputerNameW DnsHostnameToComputerName; - alias EncryptFileW EncryptFile; - alias FileEncryptionStatusW FileEncryptionStatus; - alias FindFirstVolumeW FindFirstVolume; - alias FindFirstVolumeMountPointW FindFirstVolumeMountPoint; - alias FindNextVolumeW FindNextVolume; - alias FindNextVolumeMountPointW FindNextVolumeMountPoint; - alias GetModuleHandleExW GetModuleHandleEx; - alias GetSystemWindowsDirectoryW GetSystemWindowsDirectory; - alias GetVolumeNameForVolumeMountPointW GetVolumeNameForVolumeMountPoint; - alias GetVolumePathNameW GetVolumePathName; - alias OpenFileMappingW OpenFileMapping; - alias ReplaceFileW ReplaceFile; - alias SetVolumeMountPointW SetVolumeMountPoint; - alias VerifyVersionInfoW VerifyVersionInfo; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ACTCTXW ACTCTX; - alias CheckNameLegalDOS8Dot3W CheckNameLegalDOS8Dot3; - alias CreateActCtxW CreateActCtx; - alias FindActCtxSectionStringW FindActCtxSectionString; - alias GetSystemWow64DirectoryW GetSystemWow64Directory; - alias GetVolumePathNamesForVolumeNameW GetVolumePathNamesForVolumeName; - alias SetFileShortNameW SetFileShortName; - } - - static if (_WIN32_WINNT >= 0x502) { - alias SetFirmwareEnvironmentVariableW SetFirmwareEnvironmentVariable; - alias SetDllDirectoryW SetDllDirectory; - alias GetDllDirectoryW GetDllDirectory; - } + //alias STARTUPINFOW STARTUPINFO; + alias WIN32_FIND_DATAW WIN32_FIND_DATA; + alias ENUMRESLANGPROCW ENUMRESLANGPROC; + alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; + alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; + alias AddAtomW AddAtom; + alias BeginUpdateResourceW BeginUpdateResource; + alias BuildCommDCBW BuildCommDCB; + alias BuildCommDCBAndTimeoutsW BuildCommDCBAndTimeouts; + alias CallNamedPipeW CallNamedPipe; + alias CommConfigDialogW CommConfigDialog; + alias CopyFileW CopyFile; + alias CopyFileExW CopyFileEx; + alias CreateDirectoryW CreateDirectory; + alias CreateDirectoryExW CreateDirectoryEx; + alias CreateEventW CreateEvent; + alias CreateFileW CreateFile; + alias CreateMailslotW CreateMailslot; + alias CreateMutexW CreateMutex; + alias CreateProcessW CreateProcess; + alias CreateSemaphoreW CreateSemaphore; + alias DeleteFileW DeleteFile; + alias EndUpdateResourceW EndUpdateResource; + alias EnumResourceLanguagesW EnumResourceLanguages; + alias EnumResourceNamesW EnumResourceNames; + alias EnumResourceTypesW EnumResourceTypes; + alias ExpandEnvironmentStringsW ExpandEnvironmentStrings; + alias FatalAppExitW FatalAppExit; + alias FindAtomW FindAtom; + alias FindFirstChangeNotificationW FindFirstChangeNotification; + alias FindFirstFileW FindFirstFile; + alias FindNextFileW FindNextFile; + alias FindResourceW FindResource; + alias FindResourceExW FindResourceEx; + alias FormatMessageW FormatMessage; + alias FreeEnvironmentStringsW FreeEnvironmentStrings; + alias GetAtomNameW GetAtomName; + alias GetCommandLineW GetCommandLine; + alias GetComputerNameW GetComputerName; + alias GetCurrentDirectoryW GetCurrentDirectory; + alias GetDefaultCommConfigW GetDefaultCommConfig; + alias GetDiskFreeSpaceW GetDiskFreeSpace; + alias GetDiskFreeSpaceExW GetDiskFreeSpaceEx; + alias GetDriveTypeW GetDriveType; + alias GetEnvironmentStringsW GetEnvironmentStrings; + alias GetEnvironmentVariableW GetEnvironmentVariable; + alias GetFileAttributesW GetFileAttributes; + alias GetFullPathNameW GetFullPathName; + alias GetLogicalDriveStringsW GetLogicalDriveStrings; + alias GetModuleFileNameW GetModuleFileName; + alias GetModuleHandleW GetModuleHandle; + alias GetNamedPipeHandleStateW GetNamedPipeHandleState; + alias GetPrivateProfileIntW GetPrivateProfileInt; + alias GetPrivateProfileSectionW GetPrivateProfileSection; + alias GetPrivateProfileSectionNamesW GetPrivateProfileSectionNames; + alias GetPrivateProfileStringW GetPrivateProfileString; + alias GetPrivateProfileStructW GetPrivateProfileStruct; + alias GetProfileIntW GetProfileInt; + alias GetProfileSectionW GetProfileSection; + alias GetProfileStringW GetProfileString; + alias GetShortPathNameW GetShortPathName; + alias GetStartupInfoW GetStartupInfo; + alias GetSystemDirectoryW GetSystemDirectory; + alias GetTempFileNameW GetTempFileName; + alias GetTempPathW GetTempPath; + alias GetUserNameW GetUserName; + alias GetVersionExW GetVersionEx; + alias GetVolumeInformationW GetVolumeInformation; + alias GetWindowsDirectoryW GetWindowsDirectory; + alias GlobalAddAtomW GlobalAddAtom; + alias GlobalFindAtomW GlobalFindAtom; + alias GlobalGetAtomNameW GlobalGetAtomName; + alias IsBadStringPtrW IsBadStringPtr; + alias LoadLibraryW LoadLibrary; + alias LoadLibraryExW LoadLibraryEx; + alias lstrcatW lstrcat; + alias lstrcmpW lstrcmp; + alias lstrcmpiW lstrcmpi; + alias lstrcpyW lstrcpy; + alias lstrcpynW lstrcpyn; + alias lstrlenW lstrlen; + alias MoveFileW MoveFile; + alias OpenEventW OpenEvent; + alias OpenMutexW OpenMutex; + alias OpenSemaphoreW OpenSemaphore; + alias OutputDebugStringW OutputDebugString; + alias RemoveDirectoryW RemoveDirectory; + alias SearchPathW SearchPath; + alias SetComputerNameW SetComputerName; + alias SetCurrentDirectoryW SetCurrentDirectory; + alias SetDefaultCommConfigW SetDefaultCommConfig; + alias SetEnvironmentVariableW SetEnvironmentVariable; + alias SetFileAttributesW SetFileAttributes; + alias SetVolumeLabelW SetVolumeLabel; + alias WaitNamedPipeW WaitNamedPipe; + alias WritePrivateProfileSectionW WritePrivateProfileSection; + alias WritePrivateProfileStringW WritePrivateProfileString; + alias WritePrivateProfileStructW WritePrivateProfileStruct; + alias WriteProfileSectionW WriteProfileSection; + alias WriteProfileStringW WriteProfileString; + alias CreateWaitableTimerW CreateWaitableTimer; + alias GetFileAttributesExW GetFileAttributesEx; + alias GetLongPathNameW GetLongPathName; + alias QueryDosDeviceW QueryDosDevice; + + alias HW_PROFILE_INFOW HW_PROFILE_INFO; + alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; + alias BackupEventLogW BackupEventLog; + alias ClearEventLogW ClearEventLog; + alias CreateNamedPipeW CreateNamedPipe; + alias CreateProcessAsUserW CreateProcessAsUser; + alias DefineDosDeviceW DefineDosDevice; + alias FindFirstFileExW FindFirstFileEx; + alias GetBinaryTypeW GetBinaryType; + alias GetCompressedFileSizeW GetCompressedFileSize; + alias GetFileSecurityW GetFileSecurity; + alias LogonUserW LogonUser; + alias LookupAccountNameW LookupAccountName; + alias LookupAccountSidW LookupAccountSid; + alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; + alias LookupPrivilegeNameW LookupPrivilegeName; + alias LookupPrivilegeValueW LookupPrivilegeValue; + alias MoveFileExW MoveFileEx; + alias ObjectCloseAuditAlarmW ObjectCloseAuditAlarm; + alias ObjectDeleteAuditAlarmW ObjectDeleteAuditAlarm; + alias ObjectOpenAuditAlarmW ObjectOpenAuditAlarm; + alias ObjectPrivilegeAuditAlarmW ObjectPrivilegeAuditAlarm; + alias OpenBackupEventLogW OpenBackupEventLog; + alias OpenEventLogW OpenEventLog; + alias PrivilegedServiceAuditAlarmW PrivilegedServiceAuditAlarm; + alias ReadEventLogW ReadEventLog; + alias RegisterEventSourceW RegisterEventSource; + alias ReportEventW ReportEvent; + alias SetFileSecurityW SetFileSecurity; + alias UpdateResourceW UpdateResource; + + static if (_WIN32_WINNT >= 0x500) { + alias CreateFileMappingW CreateFileMapping; + alias CreateHardLinkW CreateHardLink; + alias CreateJobObjectW CreateJobObject; + alias DeleteVolumeMountPointW DeleteVolumeMountPoint; + alias DnsHostnameToComputerNameW DnsHostnameToComputerName; + alias EncryptFileW EncryptFile; + alias FileEncryptionStatusW FileEncryptionStatus; + alias FindFirstVolumeW FindFirstVolume; + alias FindFirstVolumeMountPointW FindFirstVolumeMountPoint; + alias FindNextVolumeW FindNextVolume; + alias FindNextVolumeMountPointW FindNextVolumeMountPoint; + alias GetModuleHandleExW GetModuleHandleEx; + alias GetSystemWindowsDirectoryW GetSystemWindowsDirectory; + alias GetVolumeNameForVolumeMountPointW GetVolumeNameForVolumeMountPoint; + alias GetVolumePathNameW GetVolumePathName; + alias OpenFileMappingW OpenFileMapping; + alias ReplaceFileW ReplaceFile; + alias SetVolumeMountPointW SetVolumeMountPoint; + alias VerifyVersionInfoW VerifyVersionInfo; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ACTCTXW ACTCTX; + alias CheckNameLegalDOS8Dot3W CheckNameLegalDOS8Dot3; + alias CreateActCtxW CreateActCtx; + alias FindActCtxSectionStringW FindActCtxSectionString; + alias GetSystemWow64DirectoryW GetSystemWow64Directory; + alias GetVolumePathNamesForVolumeNameW GetVolumePathNamesForVolumeName; + alias SetFileShortNameW SetFileShortName; + } + + static if (_WIN32_WINNT >= 0x502) { + alias SetFirmwareEnvironmentVariableW SetFirmwareEnvironmentVariable; + alias SetDllDirectoryW SetDllDirectory; + alias GetDllDirectoryW GetDllDirectory; + } } else { - //alias STARTUPINFOA STARTUPINFO; - alias WIN32_FIND_DATAA WIN32_FIND_DATA; - alias ENUMRESLANGPROCW ENUMRESLANGPROC; - alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; - alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; - alias AddAtomA AddAtom; - alias BeginUpdateResourceA BeginUpdateResource; - alias BuildCommDCBA BuildCommDCB; - alias BuildCommDCBAndTimeoutsA BuildCommDCBAndTimeouts; - alias CallNamedPipeA CallNamedPipe; - alias CommConfigDialogA CommConfigDialog; - alias CopyFileA CopyFile; - alias CopyFileExA CopyFileEx; - alias CreateDirectoryA CreateDirectory; - alias CreateDirectoryExA CreateDirectoryEx; - alias CreateEventA CreateEvent; - alias CreateFileA CreateFile; - alias CreateMailslotA CreateMailslot; - alias CreateMutexA CreateMutex; - alias CreateProcessA CreateProcess; - alias CreateSemaphoreA CreateSemaphore; - alias DeleteFileA DeleteFile; - alias EndUpdateResourceA EndUpdateResource; - alias EnumResourceLanguagesA EnumResourceLanguages; - alias EnumResourceNamesA EnumResourceNames; - alias EnumResourceTypesA EnumResourceTypes; - alias ExpandEnvironmentStringsA ExpandEnvironmentStrings; - alias FatalAppExitA FatalAppExit; - alias FindAtomA FindAtom; - alias FindFirstChangeNotificationA FindFirstChangeNotification; - alias FindFirstFileA FindFirstFile; - alias FindNextFileA FindNextFile; - alias FindResourceA FindResource; - alias FindResourceExA FindResourceEx; - alias FormatMessageA FormatMessage; - alias FreeEnvironmentStringsA FreeEnvironmentStrings; - alias GetAtomNameA GetAtomName; - alias GetCommandLineA GetCommandLine; - alias GetComputerNameA GetComputerName; - alias GetCurrentDirectoryA GetCurrentDirectory; - alias GetDefaultCommConfigA GetDefaultCommConfig; - alias GetDiskFreeSpaceA GetDiskFreeSpace; - alias GetDiskFreeSpaceExA GetDiskFreeSpaceEx; - alias GetDriveTypeA GetDriveType; - alias GetEnvironmentVariableA GetEnvironmentVariable; - alias GetFileAttributesA GetFileAttributes; - alias GetFullPathNameA GetFullPathName; - alias GetLogicalDriveStringsA GetLogicalDriveStrings; - alias GetNamedPipeHandleStateA GetNamedPipeHandleState; - alias GetModuleHandleA GetModuleHandle; - alias GetModuleFileNameA GetModuleFileName; - alias GetPrivateProfileIntA GetPrivateProfileInt; - alias GetPrivateProfileSectionA GetPrivateProfileSection; - alias GetPrivateProfileSectionNamesA GetPrivateProfileSectionNames; - alias GetPrivateProfileStringA GetPrivateProfileString; - alias GetPrivateProfileStructA GetPrivateProfileStruct; - alias GetProfileIntA GetProfileInt; - alias GetProfileSectionA GetProfileSection; - alias GetProfileStringA GetProfileString; - alias GetShortPathNameA GetShortPathName; - alias GetStartupInfoA GetStartupInfo; - alias GetSystemDirectoryA GetSystemDirectory; - alias GetTempFileNameA GetTempFileName; - alias GetTempPathA GetTempPath; - alias GetUserNameA GetUserName; - alias GetVersionExA GetVersionEx; - alias GetVolumeInformationA GetVolumeInformation; - alias GetWindowsDirectoryA GetWindowsDirectory; - alias GlobalAddAtomA GlobalAddAtom; - alias GlobalFindAtomA GlobalFindAtom; - alias GlobalGetAtomNameA GlobalGetAtomName; - alias IsBadStringPtrA IsBadStringPtr; - alias LoadLibraryA LoadLibrary; - alias LoadLibraryExA LoadLibraryEx; - alias lstrcatA lstrcat; - alias lstrcmpA lstrcmp; - alias lstrcmpiA lstrcmpi; - alias lstrcpyA lstrcpy; - alias lstrcpynA lstrcpyn; - alias lstrlenA lstrlen; - alias MoveFileA MoveFile; - alias OpenEventA OpenEvent; - alias OpenMutexA OpenMutex; - alias OpenSemaphoreA OpenSemaphore; - alias OutputDebugStringA OutputDebugString; - alias RemoveDirectoryA RemoveDirectory; - alias SearchPathA SearchPath; - alias SetComputerNameA SetComputerName; - alias SetCurrentDirectoryA SetCurrentDirectory; - alias SetDefaultCommConfigA SetDefaultCommConfig; - alias SetEnvironmentVariableA SetEnvironmentVariable; - alias SetFileAttributesA SetFileAttributes; - alias SetVolumeLabelA SetVolumeLabel; - alias WaitNamedPipeA WaitNamedPipe; - alias WritePrivateProfileSectionA WritePrivateProfileSection; - alias WritePrivateProfileStringA WritePrivateProfileString; - alias WritePrivateProfileStructA WritePrivateProfileStruct; - alias WriteProfileSectionA WriteProfileSection; - alias WriteProfileStringA WriteProfileString; - alias CreateWaitableTimerA CreateWaitableTimer; - alias GetFileAttributesExA GetFileAttributesEx; - alias GetLongPathNameA GetLongPathName; - alias QueryDosDeviceA QueryDosDevice; - - alias HW_PROFILE_INFOA HW_PROFILE_INFO; - alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; - alias BackupEventLogA BackupEventLog; - alias ClearEventLogA ClearEventLog; - alias CreateNamedPipeA CreateNamedPipe; - alias CreateProcessAsUserA CreateProcessAsUser; - alias DefineDosDeviceA DefineDosDevice; - alias FindFirstFileExA FindFirstFileEx; - alias GetBinaryTypeA GetBinaryType; - alias GetCompressedFileSizeA GetCompressedFileSize; - alias GetFileSecurityA GetFileSecurity; - alias LogonUserA LogonUser; - alias LookupAccountNameA LookupAccountName; - alias LookupAccountSidA LookupAccountSid; - alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; - alias LookupPrivilegeNameA LookupPrivilegeName; - alias LookupPrivilegeValueA LookupPrivilegeValue; - alias MoveFileExA MoveFileEx; - alias ObjectCloseAuditAlarmA ObjectCloseAuditAlarm; - alias ObjectDeleteAuditAlarmA ObjectDeleteAuditAlarm; - alias ObjectOpenAuditAlarmA ObjectOpenAuditAlarm; - alias ObjectPrivilegeAuditAlarmA ObjectPrivilegeAuditAlarm; - alias OpenBackupEventLogA OpenBackupEventLog; - alias OpenEventLogA OpenEventLog; - alias PrivilegedServiceAuditAlarmA PrivilegedServiceAuditAlarm; - alias ReadEventLogA ReadEventLog; - alias RegisterEventSourceA RegisterEventSource; - alias ReportEventA ReportEvent; - alias SetFileSecurityA SetFileSecurity; - alias UpdateResourceA UpdateResource; - - static if (_WIN32_WINNT >= 0x500) { - alias CreateFileMappingA CreateFileMapping; - alias CreateHardLinkA CreateHardLink; - alias CreateJobObjectA CreateJobObject; - alias DeleteVolumeMountPointA DeleteVolumeMountPoint; - alias DnsHostnameToComputerNameA DnsHostnameToComputerName; - alias EncryptFileA EncryptFile; - alias FileEncryptionStatusA FileEncryptionStatus; - alias FindFirstVolumeA FindFirstVolume; - alias FindFirstVolumeMountPointA FindFirstVolumeMountPoint; - alias FindNextVolumeA FindNextVolume; - alias FindNextVolumeMountPointA FindNextVolumeMountPoint; - alias GetModuleHandleExA GetModuleHandleEx; - alias GetSystemWindowsDirectoryA GetSystemWindowsDirectory; - alias GetVolumeNameForVolumeMountPointA GetVolumeNameForVolumeMountPoint; - alias GetVolumePathNameA GetVolumePathName; - alias OpenFileMappingA OpenFileMapping; - alias ReplaceFileA ReplaceFile; - alias SetVolumeMountPointA SetVolumeMountPoint; - alias VerifyVersionInfoA VerifyVersionInfo; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ACTCTXA ACTCTX; - alias CheckNameLegalDOS8Dot3A CheckNameLegalDOS8Dot3; - alias CreateActCtxA CreateActCtx; - alias FindActCtxSectionStringA FindActCtxSectionString; - alias GetSystemWow64DirectoryA GetSystemWow64Directory; - alias GetVolumePathNamesForVolumeNameA GetVolumePathNamesForVolumeName; - alias SetFileShortNameA SetFileShortName; - } - - static if (_WIN32_WINNT >= 0x502) { - alias GetDllDirectoryA GetDllDirectory; - alias SetDllDirectoryA SetDllDirectory; - alias SetFirmwareEnvironmentVariableA SetFirmwareEnvironmentVariable; - } + //alias STARTUPINFOA STARTUPINFO; + alias WIN32_FIND_DATAA WIN32_FIND_DATA; + alias ENUMRESLANGPROCW ENUMRESLANGPROC; + alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; + alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; + alias AddAtomA AddAtom; + alias BeginUpdateResourceA BeginUpdateResource; + alias BuildCommDCBA BuildCommDCB; + alias BuildCommDCBAndTimeoutsA BuildCommDCBAndTimeouts; + alias CallNamedPipeA CallNamedPipe; + alias CommConfigDialogA CommConfigDialog; + alias CopyFileA CopyFile; + alias CopyFileExA CopyFileEx; + alias CreateDirectoryA CreateDirectory; + alias CreateDirectoryExA CreateDirectoryEx; + alias CreateEventA CreateEvent; + alias CreateFileA CreateFile; + alias CreateMailslotA CreateMailslot; + alias CreateMutexA CreateMutex; + alias CreateProcessA CreateProcess; + alias CreateSemaphoreA CreateSemaphore; + alias DeleteFileA DeleteFile; + alias EndUpdateResourceA EndUpdateResource; + alias EnumResourceLanguagesA EnumResourceLanguages; + alias EnumResourceNamesA EnumResourceNames; + alias EnumResourceTypesA EnumResourceTypes; + alias ExpandEnvironmentStringsA ExpandEnvironmentStrings; + alias FatalAppExitA FatalAppExit; + alias FindAtomA FindAtom; + alias FindFirstChangeNotificationA FindFirstChangeNotification; + alias FindFirstFileA FindFirstFile; + alias FindNextFileA FindNextFile; + alias FindResourceA FindResource; + alias FindResourceExA FindResourceEx; + alias FormatMessageA FormatMessage; + alias FreeEnvironmentStringsA FreeEnvironmentStrings; + alias GetAtomNameA GetAtomName; + alias GetCommandLineA GetCommandLine; + alias GetComputerNameA GetComputerName; + alias GetCurrentDirectoryA GetCurrentDirectory; + alias GetDefaultCommConfigA GetDefaultCommConfig; + alias GetDiskFreeSpaceA GetDiskFreeSpace; + alias GetDiskFreeSpaceExA GetDiskFreeSpaceEx; + alias GetDriveTypeA GetDriveType; + alias GetEnvironmentVariableA GetEnvironmentVariable; + alias GetFileAttributesA GetFileAttributes; + alias GetFullPathNameA GetFullPathName; + alias GetLogicalDriveStringsA GetLogicalDriveStrings; + alias GetNamedPipeHandleStateA GetNamedPipeHandleState; + alias GetModuleHandleA GetModuleHandle; + alias GetModuleFileNameA GetModuleFileName; + alias GetPrivateProfileIntA GetPrivateProfileInt; + alias GetPrivateProfileSectionA GetPrivateProfileSection; + alias GetPrivateProfileSectionNamesA GetPrivateProfileSectionNames; + alias GetPrivateProfileStringA GetPrivateProfileString; + alias GetPrivateProfileStructA GetPrivateProfileStruct; + alias GetProfileIntA GetProfileInt; + alias GetProfileSectionA GetProfileSection; + alias GetProfileStringA GetProfileString; + alias GetShortPathNameA GetShortPathName; + alias GetStartupInfoA GetStartupInfo; + alias GetSystemDirectoryA GetSystemDirectory; + alias GetTempFileNameA GetTempFileName; + alias GetTempPathA GetTempPath; + alias GetUserNameA GetUserName; + alias GetVersionExA GetVersionEx; + alias GetVolumeInformationA GetVolumeInformation; + alias GetWindowsDirectoryA GetWindowsDirectory; + alias GlobalAddAtomA GlobalAddAtom; + alias GlobalFindAtomA GlobalFindAtom; + alias GlobalGetAtomNameA GlobalGetAtomName; + alias IsBadStringPtrA IsBadStringPtr; + alias LoadLibraryA LoadLibrary; + alias LoadLibraryExA LoadLibraryEx; + alias lstrcatA lstrcat; + alias lstrcmpA lstrcmp; + alias lstrcmpiA lstrcmpi; + alias lstrcpyA lstrcpy; + alias lstrcpynA lstrcpyn; + alias lstrlenA lstrlen; + alias MoveFileA MoveFile; + alias OpenEventA OpenEvent; + alias OpenMutexA OpenMutex; + alias OpenSemaphoreA OpenSemaphore; + alias OutputDebugStringA OutputDebugString; + alias RemoveDirectoryA RemoveDirectory; + alias SearchPathA SearchPath; + alias SetComputerNameA SetComputerName; + alias SetCurrentDirectoryA SetCurrentDirectory; + alias SetDefaultCommConfigA SetDefaultCommConfig; + alias SetEnvironmentVariableA SetEnvironmentVariable; + alias SetFileAttributesA SetFileAttributes; + alias SetVolumeLabelA SetVolumeLabel; + alias WaitNamedPipeA WaitNamedPipe; + alias WritePrivateProfileSectionA WritePrivateProfileSection; + alias WritePrivateProfileStringA WritePrivateProfileString; + alias WritePrivateProfileStructA WritePrivateProfileStruct; + alias WriteProfileSectionA WriteProfileSection; + alias WriteProfileStringA WriteProfileString; + alias CreateWaitableTimerA CreateWaitableTimer; + alias GetFileAttributesExA GetFileAttributesEx; + alias GetLongPathNameA GetLongPathName; + alias QueryDosDeviceA QueryDosDevice; + + alias HW_PROFILE_INFOA HW_PROFILE_INFO; + alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; + alias BackupEventLogA BackupEventLog; + alias ClearEventLogA ClearEventLog; + alias CreateNamedPipeA CreateNamedPipe; + alias CreateProcessAsUserA CreateProcessAsUser; + alias DefineDosDeviceA DefineDosDevice; + alias FindFirstFileExA FindFirstFileEx; + alias GetBinaryTypeA GetBinaryType; + alias GetCompressedFileSizeA GetCompressedFileSize; + alias GetFileSecurityA GetFileSecurity; + alias LogonUserA LogonUser; + alias LookupAccountNameA LookupAccountName; + alias LookupAccountSidA LookupAccountSid; + alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; + alias LookupPrivilegeNameA LookupPrivilegeName; + alias LookupPrivilegeValueA LookupPrivilegeValue; + alias MoveFileExA MoveFileEx; + alias ObjectCloseAuditAlarmA ObjectCloseAuditAlarm; + alias ObjectDeleteAuditAlarmA ObjectDeleteAuditAlarm; + alias ObjectOpenAuditAlarmA ObjectOpenAuditAlarm; + alias ObjectPrivilegeAuditAlarmA ObjectPrivilegeAuditAlarm; + alias OpenBackupEventLogA OpenBackupEventLog; + alias OpenEventLogA OpenEventLog; + alias PrivilegedServiceAuditAlarmA PrivilegedServiceAuditAlarm; + alias ReadEventLogA ReadEventLog; + alias RegisterEventSourceA RegisterEventSource; + alias ReportEventA ReportEvent; + alias SetFileSecurityA SetFileSecurity; + alias UpdateResourceA UpdateResource; + + static if (_WIN32_WINNT >= 0x500) { + alias CreateFileMappingA CreateFileMapping; + alias CreateHardLinkA CreateHardLink; + alias CreateJobObjectA CreateJobObject; + alias DeleteVolumeMountPointA DeleteVolumeMountPoint; + alias DnsHostnameToComputerNameA DnsHostnameToComputerName; + alias EncryptFileA EncryptFile; + alias FileEncryptionStatusA FileEncryptionStatus; + alias FindFirstVolumeA FindFirstVolume; + alias FindFirstVolumeMountPointA FindFirstVolumeMountPoint; + alias FindNextVolumeA FindNextVolume; + alias FindNextVolumeMountPointA FindNextVolumeMountPoint; + alias GetModuleHandleExA GetModuleHandleEx; + alias GetSystemWindowsDirectoryA GetSystemWindowsDirectory; + alias GetVolumeNameForVolumeMountPointA GetVolumeNameForVolumeMountPoint; + alias GetVolumePathNameA GetVolumePathName; + alias OpenFileMappingA OpenFileMapping; + alias ReplaceFileA ReplaceFile; + alias SetVolumeMountPointA SetVolumeMountPoint; + alias VerifyVersionInfoA VerifyVersionInfo; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ACTCTXA ACTCTX; + alias CheckNameLegalDOS8Dot3A CheckNameLegalDOS8Dot3; + alias CreateActCtxA CreateActCtx; + alias FindActCtxSectionStringA FindActCtxSectionString; + alias GetSystemWow64DirectoryA GetSystemWow64Directory; + alias GetVolumePathNamesForVolumeNameA GetVolumePathNamesForVolumeName; + alias SetFileShortNameA SetFileShortName; + } + + static if (_WIN32_WINNT >= 0x502) { + alias GetDllDirectoryA GetDllDirectory; + alias SetDllDirectoryA SetDllDirectory; + alias SetFirmwareEnvironmentVariableA SetFirmwareEnvironmentVariable; + } } alias STARTUPINFO* LPSTARTUPINFO; @@ -2794,5 +2794,5 @@ alias WIN32_FIND_DATA* LPWIN32_FIND_DATA; alias HW_PROFILE_INFO* LPHW_PROFILE_INFO; static if (_WIN32_WINNT >= 0x501) { - alias ACTCTX* PACTCTX, PCACTCTX; + alias ACTCTX* PACTCTX, PCACTCTX; } diff --git a/src/core/sys/windows/winber.d b/src/core/sys/windows/winber.d index 1efe5e7302..2b021801dc 100644 --- a/src/core/sys/windows/winber.d +++ b/src/core/sys/windows/winber.d @@ -38,32 +38,32 @@ alias uint ber_uint_t, ber_len_t, ber_tag_t; align(4): struct BerValue { - ber_len_t bv_len; - char* bv_val; + ber_len_t bv_len; + char* bv_val; } alias BerValue LDAP_BERVAL, BERVAL; alias BerValue* PLDAP_BERVAL, PBERVAL; const ber_tag_t - LBER_ERROR = -1, - LBER_DEFAULT = -1, - LBER_USE_DER = 1; + LBER_ERROR = -1, + LBER_DEFAULT = -1, + LBER_USE_DER = 1; /* FIXME: In MinGW, these are WINBERAPI == DECLSPEC_IMPORT. Linkage * attribute? */ extern (C) { - BerElement* ber_init(const(BerValue)*); - int ber_printf(BerElement*, const(char)*, ...); - int ber_flatten(BerElement*, BerValue**); - ber_tag_t ber_scanf(BerElement*, const(char)*, ...); - ber_tag_t ber_peek_tag(BerElement*, ber_len_t*); - ber_tag_t ber_skip_tag(BerElement*, ber_len_t*); - ber_tag_t ber_first_element(BerElement*, ber_len_t*, char**); - ber_tag_t ber_next_element(BerElement*, ber_len_t*, char*); - void ber_bvfree(BerValue*); - void ber_bvecfree(BerValue**); - void ber_free(BerElement*, int); - BerValue* ber_bvdup(BerValue*); - BerElement* ber_alloc_t(int); + BerElement* ber_init(const(BerValue)*); + int ber_printf(BerElement*, const(char)*, ...); + int ber_flatten(BerElement*, BerValue**); + ber_tag_t ber_scanf(BerElement*, const(char)*, ...); + ber_tag_t ber_peek_tag(BerElement*, ber_len_t*); + ber_tag_t ber_skip_tag(BerElement*, ber_len_t*); + ber_tag_t ber_first_element(BerElement*, ber_len_t*, char**); + ber_tag_t ber_next_element(BerElement*, ber_len_t*, char*); + void ber_bvfree(BerValue*); + void ber_bvecfree(BerValue**); + void ber_free(BerElement*, int); + BerValue* ber_bvdup(BerValue*); + BerElement* ber_alloc_t(int); } diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index 30e5cc3848..086c258894 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -14,166 +14,166 @@ private import core.sys.windows.w32api, core.sys.windows.windef; // FIXME: clean up Windows version support enum { - FOREGROUND_BLUE = 1, - FOREGROUND_GREEN = 2, - FOREGROUND_RED = 4, - FOREGROUND_INTENSITY = 8, - BACKGROUND_BLUE = 16, - BACKGROUND_GREEN = 32, - BACKGROUND_RED = 64, - BACKGROUND_INTENSITY = 128 + FOREGROUND_BLUE = 1, + FOREGROUND_GREEN = 2, + FOREGROUND_RED = 4, + FOREGROUND_INTENSITY = 8, + BACKGROUND_BLUE = 16, + BACKGROUND_GREEN = 32, + BACKGROUND_RED = 64, + BACKGROUND_INTENSITY = 128 } static if (_WIN32_WINNT >= 0x501) { - enum { - CONSOLE_FULLSCREEN_MODE = 1, - CONSOLE_WINDOWED_MODE = 0 - } + enum { + CONSOLE_FULLSCREEN_MODE = 1, + CONSOLE_WINDOWED_MODE = 0 + } } enum { - CTRL_C_EVENT = 0, - CTRL_BREAK_EVENT = 1, - CTRL_CLOSE_EVENT = 2, - CTRL_LOGOFF_EVENT = 5, - CTRL_SHUTDOWN_EVENT = 6 + CTRL_C_EVENT = 0, + CTRL_BREAK_EVENT = 1, + CTRL_CLOSE_EVENT = 2, + CTRL_LOGOFF_EVENT = 5, + CTRL_SHUTDOWN_EVENT = 6 } enum { - ENABLE_PROCESSED_INPUT = 1, - ENABLE_LINE_INPUT = 2, - ENABLE_ECHO_INPUT = 4, - ENABLE_WINDOW_INPUT = 8, - ENABLE_MOUSE_INPUT = 16 + ENABLE_PROCESSED_INPUT = 1, + ENABLE_LINE_INPUT = 2, + ENABLE_ECHO_INPUT = 4, + ENABLE_WINDOW_INPUT = 8, + ENABLE_MOUSE_INPUT = 16 } enum { - ENABLE_PROCESSED_OUTPUT = 1, - ENABLE_WRAP_AT_EOL_OUTPUT = 2 + ENABLE_PROCESSED_OUTPUT = 1, + ENABLE_WRAP_AT_EOL_OUTPUT = 2 } enum { - KEY_EVENT = 1, - MOUSE_EVENT = 2, - WINDOW_BUFFER_SIZE_EVENT = 4, - MENU_EVENT = 8, - FOCUS_EVENT = 16 + KEY_EVENT = 1, + MOUSE_EVENT = 2, + WINDOW_BUFFER_SIZE_EVENT = 4, + MENU_EVENT = 8, + FOCUS_EVENT = 16 } enum { - RIGHT_ALT_PRESSED = 1, - LEFT_ALT_PRESSED = 2, - RIGHT_CTRL_PRESSED = 4, - LEFT_CTRL_PRESSED = 8, - SHIFT_PRESSED = 16, - NUMLOCK_ON = 32, - SCROLLLOCK_ON = 64, - CAPSLOCK_ON = 128, - ENHANCED_KEY = 256 + RIGHT_ALT_PRESSED = 1, + LEFT_ALT_PRESSED = 2, + RIGHT_CTRL_PRESSED = 4, + LEFT_CTRL_PRESSED = 8, + SHIFT_PRESSED = 16, + NUMLOCK_ON = 32, + SCROLLLOCK_ON = 64, + CAPSLOCK_ON = 128, + ENHANCED_KEY = 256 } enum { - FROM_LEFT_1ST_BUTTON_PRESSED = 1, - RIGHTMOST_BUTTON_PRESSED = 2, - FROM_LEFT_2ND_BUTTON_PRESSED = 4, - FROM_LEFT_3RD_BUTTON_PRESSED = 8, - FROM_LEFT_4TH_BUTTON_PRESSED = 16 + FROM_LEFT_1ST_BUTTON_PRESSED = 1, + RIGHTMOST_BUTTON_PRESSED = 2, + FROM_LEFT_2ND_BUTTON_PRESSED = 4, + FROM_LEFT_3RD_BUTTON_PRESSED = 8, + FROM_LEFT_4TH_BUTTON_PRESSED = 16 } enum { - MOUSE_MOVED = 1, - DOUBLE_CLICK = 2, - MOUSE_WHEELED = 4 + MOUSE_MOVED = 1, + DOUBLE_CLICK = 2, + MOUSE_WHEELED = 4 } struct CHAR_INFO { - union _Char { - WCHAR UnicodeChar; - CHAR AsciiChar; - } - _Char Char; - WORD Attributes; + union _Char { + WCHAR UnicodeChar; + CHAR AsciiChar; + } + _Char Char; + WORD Attributes; } alias CHAR_INFO* PCHAR_INFO; struct SMALL_RECT { - SHORT Left; - SHORT Top; - SHORT Right; - SHORT Bottom; + SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; } alias SMALL_RECT* PSMALL_RECT; struct CONSOLE_CURSOR_INFO { - DWORD dwSize; - BOOL bVisible; + DWORD dwSize; + BOOL bVisible; } alias CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO; struct COORD { - SHORT X; - SHORT Y; + SHORT X; + SHORT Y; } alias COORD* PCOORD; struct CONSOLE_FONT_INFO { - DWORD nFont; - COORD dwFontSize; + DWORD nFont; + COORD dwFontSize; } alias CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO; struct CONSOLE_SCREEN_BUFFER_INFO { - COORD dwSize; - COORD dwCursorPosition; - WORD wAttributes; - SMALL_RECT srWindow; - COORD dwMaximumWindowSize; + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; } alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO; alias BOOL function(DWORD) PHANDLER_ROUTINE; struct KEY_EVENT_RECORD { - BOOL bKeyDown; - WORD wRepeatCount; - WORD wVirtualKeyCode; - WORD wVirtualScanCode; - union _uChar { - WCHAR UnicodeChar; - CHAR AsciiChar; - } - _uChar uChar; - DWORD dwControlKeyState; + BOOL bKeyDown; + WORD wRepeatCount; + WORD wVirtualKeyCode; + WORD wVirtualScanCode; + union _uChar { + WCHAR UnicodeChar; + CHAR AsciiChar; + } + _uChar uChar; + DWORD dwControlKeyState; } struct MOUSE_EVENT_RECORD { - COORD dwMousePosition; - DWORD dwButtonState; - DWORD dwControlKeyState; - DWORD dwEventFlags; + COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; } struct WINDOW_BUFFER_SIZE_RECORD { - COORD dwSize; + COORD dwSize; } struct MENU_EVENT_RECORD { - UINT dwCommandId; + UINT dwCommandId; } alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD; struct FOCUS_EVENT_RECORD { - BOOL bSetFocus; + BOOL bSetFocus; } struct INPUT_RECORD { - WORD EventType; - union _Event { - KEY_EVENT_RECORD KeyEvent; - MOUSE_EVENT_RECORD MouseEvent; - WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; - MENU_EVENT_RECORD MenuEvent; - FOCUS_EVENT_RECORD FocusEvent; - } - _Event Event; + WORD EventType; + union _Event { + KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; + } + _Event Event; } alias INPUT_RECORD* PINPUT_RECORD; @@ -246,31 +246,31 @@ BOOL WriteConsoleOutputCharacterA(HANDLE, LPCSTR, DWORD, COORD, PDWORD); BOOL WriteConsoleOutputCharacterW(HANDLE, LPCWSTR, DWORD, COORD, PDWORD); version (Unicode) { - alias FillConsoleOutputCharacterW FillConsoleOutputCharacter; - alias GetConsoleTitleW GetConsoleTitle; - alias PeekConsoleInputW PeekConsoleInput; - alias ReadConsoleW ReadConsole; - alias ReadConsoleInputW ReadConsoleInput; - alias ReadConsoleOutputW ReadConsoleOutput; - alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter; - alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer; - alias SetConsoleTitleW SetConsoleTitle; - alias WriteConsoleW WriteConsole; - alias WriteConsoleInputW WriteConsoleInput; - alias WriteConsoleOutputW WriteConsoleOutput; - alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter; + alias FillConsoleOutputCharacterW FillConsoleOutputCharacter; + alias GetConsoleTitleW GetConsoleTitle; + alias PeekConsoleInputW PeekConsoleInput; + alias ReadConsoleW ReadConsole; + alias ReadConsoleInputW ReadConsoleInput; + alias ReadConsoleOutputW ReadConsoleOutput; + alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter; + alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer; + alias SetConsoleTitleW SetConsoleTitle; + alias WriteConsoleW WriteConsole; + alias WriteConsoleInputW WriteConsoleInput; + alias WriteConsoleOutputW WriteConsoleOutput; + alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter; } else { - alias FillConsoleOutputCharacterA FillConsoleOutputCharacter; - alias GetConsoleTitleA GetConsoleTitle; - alias PeekConsoleInputA PeekConsoleInput; - alias ReadConsoleA ReadConsole; - alias ReadConsoleInputA ReadConsoleInput; - alias ReadConsoleOutputA ReadConsoleOutput; - alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter; - alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer; - alias SetConsoleTitleA SetConsoleTitle; - alias WriteConsoleA WriteConsole; - alias WriteConsoleInputA WriteConsoleInput; - alias WriteConsoleOutputA WriteConsoleOutput; - alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter; + alias FillConsoleOutputCharacterA FillConsoleOutputCharacter; + alias GetConsoleTitleA GetConsoleTitle; + alias PeekConsoleInputA PeekConsoleInput; + alias ReadConsoleA ReadConsole; + alias ReadConsoleInputA ReadConsoleInput; + alias ReadConsoleOutputA ReadConsoleOutput; + alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter; + alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer; + alias SetConsoleTitleA SetConsoleTitle; + alias WriteConsoleA WriteConsole; + alias WriteConsoleInputA WriteConsoleInput; + alias WriteConsoleOutputA WriteConsoleOutput; + alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter; } diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index 27ecfbb220..363621b964 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -19,25 +19,25 @@ private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windo */ const TCHAR[] - MS_DEF_PROV = "Microsoft Base Cryptographic Provider v1.0", - MS_ENHANCED_PROV = "Microsoft Enhanced Cryptographic Provider v1.0", - MS_STRONG_PROV = "Microsoft Strong Cryptographic Provider", - MS_DEF_RSA_SIG_PROV = "Microsoft RSA Signature Cryptographic Provider", - MS_DEF_RSA_SCHANNEL_PROV = "Microsoft RSA SChannel Cryptographic Provider", - MS_DEF_DSS_PROV = "Microsoft Base DSS Cryptographic Provider", - MS_DEF_DSS_DH_PROV - = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider", - MS_ENH_DSS_DH_PROV - = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider", - MS_DEF_DH_SCHANNEL_PROV = "Microsoft DH SChannel Cryptographic Provider", - MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider"; + MS_DEF_PROV = "Microsoft Base Cryptographic Provider v1.0", + MS_ENHANCED_PROV = "Microsoft Enhanced Cryptographic Provider v1.0", + MS_STRONG_PROV = "Microsoft Strong Cryptographic Provider", + MS_DEF_RSA_SIG_PROV = "Microsoft RSA Signature Cryptographic Provider", + MS_DEF_RSA_SCHANNEL_PROV = "Microsoft RSA SChannel Cryptographic Provider", + MS_DEF_DSS_PROV = "Microsoft Base DSS Cryptographic Provider", + MS_DEF_DSS_DH_PROV + = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider", + MS_ENH_DSS_DH_PROV + = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider", + MS_DEF_DH_SCHANNEL_PROV = "Microsoft DH SChannel Cryptographic Provider", + MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider"; static if (_WIN32_WINNT > 0x501) { - const TCHAR[] MS_ENH_RSA_AES_PROV - = "Microsoft Enhanced RSA and AES Cryptographic Provider"; + const TCHAR[] MS_ENH_RSA_AES_PROV + = "Microsoft Enhanced RSA and AES Cryptographic Provider"; } else static if (_WIN32_WINNT == 0x501) { - const TCHAR[] MS_ENH_RSA_AES_PROV - = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; + const TCHAR[] MS_ENH_RSA_AES_PROV + = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; } ALG_ID GET_ALG_CLASS(ALG_ID x) { return x & 0xE000; } @@ -45,454 +45,454 @@ ALG_ID GET_ALG_TYPE (ALG_ID x) { return x & 0x1E00; } ALG_ID GET_ALG_SID (ALG_ID x) { return x & 0x01FF; } enum : ALG_ID { - ALG_CLASS_ANY = 0, - ALG_CLASS_SIGNATURE = 0x2000, - ALG_CLASS_MSG_ENCRYPT = 0x4000, - ALG_CLASS_DATA_ENCRYPT = 0x6000, - ALG_CLASS_HASH = 0x8000, - ALG_CLASS_KEY_EXCHANGE = 0xA000, - ALG_CLASS_ALL = 0xE000 + ALG_CLASS_ANY = 0, + ALG_CLASS_SIGNATURE = 0x2000, + ALG_CLASS_MSG_ENCRYPT = 0x4000, + ALG_CLASS_DATA_ENCRYPT = 0x6000, + ALG_CLASS_HASH = 0x8000, + ALG_CLASS_KEY_EXCHANGE = 0xA000, + ALG_CLASS_ALL = 0xE000 } enum : ALG_ID { - ALG_TYPE_ANY = 0, - ALG_TYPE_DSS = 0x0200, - ALG_TYPE_RSA = 0x0400, - ALG_TYPE_BLOCK = 0x0600, - ALG_TYPE_STREAM = 0x0800, - ALG_TYPE_DH = 0x0A00, - ALG_TYPE_SECURECHANNEL = 0x0C00 + ALG_TYPE_ANY = 0, + ALG_TYPE_DSS = 0x0200, + ALG_TYPE_RSA = 0x0400, + ALG_TYPE_BLOCK = 0x0600, + ALG_TYPE_STREAM = 0x0800, + ALG_TYPE_DH = 0x0A00, + ALG_TYPE_SECURECHANNEL = 0x0C00 } enum : ALG_ID { - ALG_SID_ANY = 0, - ALG_SID_RSA_ANY = 0, - ALG_SID_RSA_PKCS, - ALG_SID_RSA_MSATWORK, - ALG_SID_RSA_ENTRUST, - ALG_SID_RSA_PGP, // = 4 - ALG_SID_DSS_ANY = 0, - ALG_SID_DSS_PKCS, - ALG_SID_DSS_DMS, // = 2 - ALG_SID_DES = 1, - ALG_SID_3DES = 3, - ALG_SID_DESX, - ALG_SID_IDEA, - ALG_SID_CAST, - ALG_SID_SAFERSK64, - ALG_SID_SAFERSK128, - ALG_SID_3DES_112, - ALG_SID_SKIPJACK, - ALG_SID_TEK, - ALG_SID_CYLINK_MEK, - ALG_SID_RC5, // = 13 - ALG_SID_RC2 = 2, - ALG_SID_RC4 = 1, - ALG_SID_SEAL = 2, - ALG_SID_MD2 = 1, - ALG_SID_MD4, - ALG_SID_MD5, - ALG_SID_SHA, - ALG_SID_MAC, - ALG_SID_RIPEMD, - ALG_SID_RIPEMD160, - ALG_SID_SSL3SHAMD5, - ALG_SID_HMAC, - ALG_SID_TLS1PRF, // = 10 - ALG_SID_AES_128 = 14, - ALG_SID_AES_192, - ALG_SID_AES_256, - ALG_SID_AES, // = 17 - ALG_SID_EXAMPLE = 80 + ALG_SID_ANY = 0, + ALG_SID_RSA_ANY = 0, + ALG_SID_RSA_PKCS, + ALG_SID_RSA_MSATWORK, + ALG_SID_RSA_ENTRUST, + ALG_SID_RSA_PGP, // = 4 + ALG_SID_DSS_ANY = 0, + ALG_SID_DSS_PKCS, + ALG_SID_DSS_DMS, // = 2 + ALG_SID_DES = 1, + ALG_SID_3DES = 3, + ALG_SID_DESX, + ALG_SID_IDEA, + ALG_SID_CAST, + ALG_SID_SAFERSK64, + ALG_SID_SAFERSK128, + ALG_SID_3DES_112, + ALG_SID_SKIPJACK, + ALG_SID_TEK, + ALG_SID_CYLINK_MEK, + ALG_SID_RC5, // = 13 + ALG_SID_RC2 = 2, + ALG_SID_RC4 = 1, + ALG_SID_SEAL = 2, + ALG_SID_MD2 = 1, + ALG_SID_MD4, + ALG_SID_MD5, + ALG_SID_SHA, + ALG_SID_MAC, + ALG_SID_RIPEMD, + ALG_SID_RIPEMD160, + ALG_SID_SSL3SHAMD5, + ALG_SID_HMAC, + ALG_SID_TLS1PRF, // = 10 + ALG_SID_AES_128 = 14, + ALG_SID_AES_192, + ALG_SID_AES_256, + ALG_SID_AES, // = 17 + ALG_SID_EXAMPLE = 80 } enum : ALG_ID { - CALG_MD2 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2, - CALG_MD4 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4, - CALG_MD5 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5, - CALG_SHA = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA, - CALG_SHA1 = CALG_SHA, - CALG_MAC = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC, - CALG_3DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 3, - CALG_CYLINK_MEK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 12, - CALG_SKIPJACK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 10, - CALG_KEA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS | 4, - CALG_RSA_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, - CALG_DSS_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY, - CALG_RSA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, - CALG_DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES, - CALG_RC2 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2, - CALG_RC4 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4, - CALG_SEAL = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL, - CALG_DH_EPHEM = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS - | ALG_SID_DSS_DMS, - CALG_DESX = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX, + CALG_MD2 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2, + CALG_MD4 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4, + CALG_MD5 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5, + CALG_SHA = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA, + CALG_SHA1 = CALG_SHA, + CALG_MAC = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC, + CALG_3DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 3, + CALG_CYLINK_MEK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 12, + CALG_SKIPJACK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 10, + CALG_KEA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS | 4, + CALG_RSA_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, + CALG_DSS_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY, + CALG_RSA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, + CALG_DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES, + CALG_RC2 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2, + CALG_RC4 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4, + CALG_SEAL = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL, + CALG_DH_EPHEM = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS + | ALG_SID_DSS_DMS, + CALG_DESX = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX, // is undefined ALG_CLASS_DHASH in MinGW - presuming typo - CALG_TLS1PRF = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF, - CALG_AES_128 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128, - CALG_AES_192 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192, - CALG_AES_256 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256, - CALG_AES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES, + CALG_TLS1PRF = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF, + CALG_AES_128 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128, + CALG_AES_192 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192, + CALG_AES_256 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256, + CALG_AES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES, } enum { - CRYPT_VERIFYCONTEXT = 0xF0000000, + CRYPT_VERIFYCONTEXT = 0xF0000000, } enum { - CRYPT_NEWKEYSET = 8, - CRYPT_DELETEKEYSET = 16, - CRYPT_MACHINE_KEYSET = 32, - CRYPT_SILENT = 64, + CRYPT_NEWKEYSET = 8, + CRYPT_DELETEKEYSET = 16, + CRYPT_MACHINE_KEYSET = 32, + CRYPT_SILENT = 64, } enum { - CRYPT_EXPORTABLE = 1, - CRYPT_USER_PROTECTED = 2, - CRYPT_CREATE_SALT = 4, - CRYPT_UPDATE_KEY = 8, + CRYPT_EXPORTABLE = 1, + CRYPT_USER_PROTECTED = 2, + CRYPT_CREATE_SALT = 4, + CRYPT_UPDATE_KEY = 8, } enum { - SIMPLEBLOB = 1, - PUBLICKEYBLOB = 6, - PRIVATEKEYBLOB = 7, - PLAINTEXTKEYBLOB = 8, - OPAQUEKEYBLOB = 9, - PUBLICKEYBLOBEX = 10, - SYMMETRICWRAPKEYBLOB = 11, + SIMPLEBLOB = 1, + PUBLICKEYBLOB = 6, + PRIVATEKEYBLOB = 7, + PLAINTEXTKEYBLOB = 8, + OPAQUEKEYBLOB = 9, + PUBLICKEYBLOBEX = 10, + SYMMETRICWRAPKEYBLOB = 11, } enum { - AT_KEYEXCHANGE = 1, - AT_SIGNATURE = 2, + AT_KEYEXCHANGE = 1, + AT_SIGNATURE = 2, } enum { - CRYPT_USERDATA = 1, + CRYPT_USERDATA = 1, } enum { - PKCS5_PADDING = 1, + PKCS5_PADDING = 1, } enum { - CRYPT_MODE_CBC = 1, - CRYPT_MODE_ECB = 2, - CRYPT_MODE_OFB = 3, - CRYPT_MODE_CFB = 4, - CRYPT_MODE_CTS = 5, - CRYPT_MODE_CBCI = 6, - CRYPT_MODE_CFBP = 7, - CRYPT_MODE_OFBP = 8, - CRYPT_MODE_CBCOFM = 9, - CRYPT_MODE_CBCOFMI = 10, + CRYPT_MODE_CBC = 1, + CRYPT_MODE_ECB = 2, + CRYPT_MODE_OFB = 3, + CRYPT_MODE_CFB = 4, + CRYPT_MODE_CTS = 5, + CRYPT_MODE_CBCI = 6, + CRYPT_MODE_CFBP = 7, + CRYPT_MODE_OFBP = 8, + CRYPT_MODE_CBCOFM = 9, + CRYPT_MODE_CBCOFMI = 10, } enum { - CRYPT_ENCRYPT = 1, - CRYPT_DECRYPT = 2, - CRYPT_EXPORT = 4, - CRYPT_READ = 8, - CRYPT_WRITE = 16, - CRYPT_MAC = 32, + CRYPT_ENCRYPT = 1, + CRYPT_DECRYPT = 2, + CRYPT_EXPORT = 4, + CRYPT_READ = 8, + CRYPT_WRITE = 16, + CRYPT_MAC = 32, } enum { - HP_ALGID = 1, - HP_HASHVAL = 2, - HP_HASHSIZE = 4, - HP_HMAC_INFO = 5, + HP_ALGID = 1, + HP_HASHVAL = 2, + HP_HASHSIZE = 4, + HP_HMAC_INFO = 5, } enum { - CRYPT_FAILED = FALSE, - CRYPT_SUCCEED = TRUE, + CRYPT_FAILED = FALSE, + CRYPT_SUCCEED = TRUE, } bool RCRYPT_SUCCEEDED(BOOL r) { return r==CRYPT_SUCCEED; } bool RCRYPT_FAILED(BOOL r) { return r==CRYPT_FAILED; } enum { - PP_ENUMALGS = 1, - PP_ENUMCONTAINERS = 2, - PP_IMPTYPE = 3, - PP_NAME = 4, - PP_VERSION = 5, - PP_CONTAINER = 6, - PP_CHANGE_PASSWORD = 7, - PP_KEYSET_SEC_DESCR = 8, - PP_CERTCHAIN = 9, - PP_KEY_TYPE_SUBTYPE = 10, - PP_PROVTYPE = 16, - PP_KEYSTORAGE = 17, - PP_APPLI_CERT = 18, - PP_SYM_KEYSIZE = 19, - PP_SESSION_KEYSIZE = 20, - PP_UI_PROMPT = 21, - PP_ENUMALGS_EX = 22, - PP_ENUMMANDROOTS = 25, - PP_ENUMELECTROOTS = 26, - PP_KEYSET_TYPE = 27, - PP_ADMIN_PIN = 31, - PP_KEYEXCHANGE_PIN = 32, - PP_SIGNATURE_PIN = 33, - PP_SIG_KEYSIZE_INC = 34, - PP_KEYX_KEYSIZE_INC = 35, - PP_UNIQUE_CONTAINER = 36, - PP_SGC_INFO = 37, - PP_USE_HARDWARE_RNG = 38, - PP_KEYSPEC = 39, - PP_ENUMEX_SIGNING_PROT = 40, -} - -enum { - CRYPT_FIRST = 1, - CRYPT_NEXT = 2, -} - -enum { - CRYPT_IMPL_HARDWARE = 1, - CRYPT_IMPL_SOFTWARE = 2, - CRYPT_IMPL_MIXED = 3, - CRYPT_IMPL_UNKNOWN = 4, -} - + PP_ENUMALGS = 1, + PP_ENUMCONTAINERS = 2, + PP_IMPTYPE = 3, + PP_NAME = 4, + PP_VERSION = 5, + PP_CONTAINER = 6, + PP_CHANGE_PASSWORD = 7, + PP_KEYSET_SEC_DESCR = 8, + PP_CERTCHAIN = 9, + PP_KEY_TYPE_SUBTYPE = 10, + PP_PROVTYPE = 16, + PP_KEYSTORAGE = 17, + PP_APPLI_CERT = 18, + PP_SYM_KEYSIZE = 19, + PP_SESSION_KEYSIZE = 20, + PP_UI_PROMPT = 21, + PP_ENUMALGS_EX = 22, + PP_ENUMMANDROOTS = 25, + PP_ENUMELECTROOTS = 26, + PP_KEYSET_TYPE = 27, + PP_ADMIN_PIN = 31, + PP_KEYEXCHANGE_PIN = 32, + PP_SIGNATURE_PIN = 33, + PP_SIG_KEYSIZE_INC = 34, + PP_KEYX_KEYSIZE_INC = 35, + PP_UNIQUE_CONTAINER = 36, + PP_SGC_INFO = 37, + PP_USE_HARDWARE_RNG = 38, + PP_KEYSPEC = 39, + PP_ENUMEX_SIGNING_PROT = 40, +} + +enum { + CRYPT_FIRST = 1, + CRYPT_NEXT = 2, +} + +enum { + CRYPT_IMPL_HARDWARE = 1, + CRYPT_IMPL_SOFTWARE = 2, + CRYPT_IMPL_MIXED = 3, + CRYPT_IMPL_UNKNOWN = 4, +} + enum { - PROV_RSA_FULL = 1, - PROV_RSA_SIG = 2, - PROV_DSS = 3, - PROV_FORTEZZA = 4, - PROV_MS_MAIL = 5, - PROV_SSL = 6, - PROV_STT_MER = 7, - PROV_STT_ACQ = 8, - PROV_STT_BRND = 9, - PROV_STT_ROOT = 10, - PROV_STT_ISS = 11, - PROV_RSA_SCHANNEL = 12, - PROV_DSS_DH = 13, - PROV_EC_ECDSA_SIG = 14, - PROV_EC_ECNRA_SIG = 15, - PROV_EC_ECDSA_FULL = 16, - PROV_EC_ECNRA_FULL = 17, - PROV_DH_SCHANNEL = 18, - PROV_SPYRUS_LYNKS = 20, - PROV_RNG = 21, - PROV_INTEL_SEC = 22, - PROV_RSA_AES = 24, - MAXUIDLEN = 64, + PROV_RSA_FULL = 1, + PROV_RSA_SIG = 2, + PROV_DSS = 3, + PROV_FORTEZZA = 4, + PROV_MS_MAIL = 5, + PROV_SSL = 6, + PROV_STT_MER = 7, + PROV_STT_ACQ = 8, + PROV_STT_BRND = 9, + PROV_STT_ROOT = 10, + PROV_STT_ISS = 11, + PROV_RSA_SCHANNEL = 12, + PROV_DSS_DH = 13, + PROV_EC_ECDSA_SIG = 14, + PROV_EC_ECNRA_SIG = 15, + PROV_EC_ECDSA_FULL = 16, + PROV_EC_ECNRA_FULL = 17, + PROV_DH_SCHANNEL = 18, + PROV_SPYRUS_LYNKS = 20, + PROV_RNG = 21, + PROV_INTEL_SEC = 22, + PROV_RSA_AES = 24, + MAXUIDLEN = 64, } enum { - CUR_BLOB_VERSION = 2, + CUR_BLOB_VERSION = 2, } - -enum { - X509_ASN_ENCODING = 1, - PKCS_7_ASN_ENCODING = 65536, -} - -enum { - CERT_V1 = 0, - CERT_V2 = 1, - CERT_V3 = 2, -} - -enum { - CERT_E_CHAINING = (-2146762486), - CERT_E_CN_NO_MATCH = (-2146762481), - CERT_E_EXPIRED = (-2146762495), - CERT_E_PURPOSE = (-2146762490), - CERT_E_REVOCATION_FAILURE = (-2146762482), - CERT_E_REVOKED = (-2146762484), - CERT_E_ROLE = (-2146762493), - CERT_E_UNTRUSTEDROOT = (-2146762487), - CERT_E_UNTRUSTEDTESTROOT = (-2146762483), - CERT_E_VALIDITYPERIODNESTING = (-2146762494), - CERT_E_WRONG_USAGE = (-2146762480), - CERT_E_PATHLENCONST = (-2146762492), - CERT_E_CRITICAL = (-2146762491), - CERT_E_ISSUERCHAINING = (-2146762489), - CERT_E_MALFORMED = (-2146762488), - CRYPT_E_REVOCATION_OFFLINE = (-2146885613), - CRYPT_E_REVOKED = (-2146885616), - TRUST_E_BASIC_CONSTRAINTS = (-2146869223), - TRUST_E_CERT_SIGNATURE = (-2146869244), - TRUST_E_FAIL = (-2146762485), + +enum { + X509_ASN_ENCODING = 1, + PKCS_7_ASN_ENCODING = 65536, +} + +enum { + CERT_V1 = 0, + CERT_V2 = 1, + CERT_V3 = 2, +} + +enum { + CERT_E_CHAINING = (-2146762486), + CERT_E_CN_NO_MATCH = (-2146762481), + CERT_E_EXPIRED = (-2146762495), + CERT_E_PURPOSE = (-2146762490), + CERT_E_REVOCATION_FAILURE = (-2146762482), + CERT_E_REVOKED = (-2146762484), + CERT_E_ROLE = (-2146762493), + CERT_E_UNTRUSTEDROOT = (-2146762487), + CERT_E_UNTRUSTEDTESTROOT = (-2146762483), + CERT_E_VALIDITYPERIODNESTING = (-2146762494), + CERT_E_WRONG_USAGE = (-2146762480), + CERT_E_PATHLENCONST = (-2146762492), + CERT_E_CRITICAL = (-2146762491), + CERT_E_ISSUERCHAINING = (-2146762489), + CERT_E_MALFORMED = (-2146762488), + CRYPT_E_REVOCATION_OFFLINE = (-2146885613), + CRYPT_E_REVOKED = (-2146885616), + TRUST_E_BASIC_CONSTRAINTS = (-2146869223), + TRUST_E_CERT_SIGNATURE = (-2146869244), + TRUST_E_FAIL = (-2146762485), } enum { - CERT_TRUST_NO_ERROR = 0, - CERT_TRUST_IS_NOT_TIME_VALID = 1, - CERT_TRUST_IS_NOT_TIME_NESTED = 2, - CERT_TRUST_IS_REVOKED = 4, - CERT_TRUST_IS_NOT_SIGNATURE_VALID = 8, - CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 16, - CERT_TRUST_IS_UNTRUSTED_ROOT = 32, - CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 64, - CERT_TRUST_IS_CYCLIC = 128, - CERT_TRUST_IS_PARTIAL_CHAIN = 65536, - CERT_TRUST_CTL_IS_NOT_TIME_VALID = 131072, - CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144, - CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288, + CERT_TRUST_NO_ERROR = 0, + CERT_TRUST_IS_NOT_TIME_VALID = 1, + CERT_TRUST_IS_NOT_TIME_NESTED = 2, + CERT_TRUST_IS_REVOKED = 4, + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 8, + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 16, + CERT_TRUST_IS_UNTRUSTED_ROOT = 32, + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 64, + CERT_TRUST_IS_CYCLIC = 128, + CERT_TRUST_IS_PARTIAL_CHAIN = 65536, + CERT_TRUST_CTL_IS_NOT_TIME_VALID = 131072, + CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144, + CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288, } enum { - CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 1, - CERT_TRUST_HAS_KEY_MATCH_ISSUER = 2, - CERT_TRUST_HAS_NAME_MATCH_ISSUER = 4, - CERT_TRUST_IS_SELF_SIGNED = 8, - CERT_TRUST_IS_COMPLEX_CHAIN = 65536, + CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 1, + CERT_TRUST_HAS_KEY_MATCH_ISSUER = 2, + CERT_TRUST_HAS_NAME_MATCH_ISSUER = 4, + CERT_TRUST_IS_SELF_SIGNED = 8, + CERT_TRUST_IS_COMPLEX_CHAIN = 65536, } enum { - CERT_CHAIN_POLICY_BASE = cast(LPCSTR) 1, - CERT_CHAIN_POLICY_AUTHENTICODE = cast(LPCSTR) 2, - CERT_CHAIN_POLICY_AUTHENTICODE_TS = cast(LPCSTR) 3, - CERT_CHAIN_POLICY_SSL = cast(LPCSTR) 4, - CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = cast(LPCSTR) 5, - CERT_CHAIN_POLICY_NT_AUTH = cast(LPCSTR) 6, + CERT_CHAIN_POLICY_BASE = cast(LPCSTR) 1, + CERT_CHAIN_POLICY_AUTHENTICODE = cast(LPCSTR) 2, + CERT_CHAIN_POLICY_AUTHENTICODE_TS = cast(LPCSTR) 3, + CERT_CHAIN_POLICY_SSL = cast(LPCSTR) 4, + CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = cast(LPCSTR) 5, + CERT_CHAIN_POLICY_NT_AUTH = cast(LPCSTR) 6, } enum { - USAGE_MATCH_TYPE_AND = 0, - USAGE_MATCH_TYPE_OR = 1, + USAGE_MATCH_TYPE_AND = 0, + USAGE_MATCH_TYPE_OR = 1, } enum { - CERT_SIMPLE_NAME_STR = 1, - CERT_OID_NAME_STR = 2, - CERT_X500_NAME_STR = 3, + CERT_SIMPLE_NAME_STR = 1, + CERT_OID_NAME_STR = 2, + CERT_X500_NAME_STR = 3, } enum { - CERT_NAME_STR_SEMICOLON_FLAG = 1073741824, - CERT_NAME_STR_CRLF_FLAG = 134217728, - CERT_NAME_STR_NO_PLUS_FLAG = 536870912, - CERT_NAME_STR_NO_QUOTING_FLAG = 268435456, - CERT_NAME_STR_REVERSE_FLAG = 33554432, - CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG = 131072, + CERT_NAME_STR_SEMICOLON_FLAG = 1073741824, + CERT_NAME_STR_CRLF_FLAG = 134217728, + CERT_NAME_STR_NO_PLUS_FLAG = 536870912, + CERT_NAME_STR_NO_QUOTING_FLAG = 268435456, + CERT_NAME_STR_REVERSE_FLAG = 33554432, + CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG = 131072, } enum { - CERT_FIND_ANY = 0, - CERT_FIND_CERT_ID = 1048576, - CERT_FIND_CTL_USAGE = 655360, - CERT_FIND_ENHKEY_USAGE = 655360, - CERT_FIND_EXISTING = 851968, - CERT_FIND_HASH = 65536, - CERT_FIND_ISSUER_ATTR = 196612, - CERT_FIND_ISSUER_NAME = 131076, - CERT_FIND_ISSUER_OF = 786432, - CERT_FIND_KEY_IDENTIFIER = 983040, - CERT_FIND_KEY_SPEC = 589824, - CERT_FIND_MD5_HASH = 262144, - CERT_FIND_PROPERTY = 327680, - CERT_FIND_PUBLIC_KEY = 393216, - CERT_FIND_SHA1_HASH = 65536, - CERT_FIND_SIGNATURE_HASH = 917504, - CERT_FIND_SUBJECT_ATTR = 196615, - CERT_FIND_SUBJECT_CERT = 720896, - CERT_FIND_SUBJECT_NAME = 131079, - CERT_FIND_SUBJECT_STR_A = 458759, - CERT_FIND_SUBJECT_STR_W = 524295, - CERT_FIND_ISSUER_STR_A = 458756, - CERT_FIND_ISSUER_STR_W = 524292, + CERT_FIND_ANY = 0, + CERT_FIND_CERT_ID = 1048576, + CERT_FIND_CTL_USAGE = 655360, + CERT_FIND_ENHKEY_USAGE = 655360, + CERT_FIND_EXISTING = 851968, + CERT_FIND_HASH = 65536, + CERT_FIND_ISSUER_ATTR = 196612, + CERT_FIND_ISSUER_NAME = 131076, + CERT_FIND_ISSUER_OF = 786432, + CERT_FIND_KEY_IDENTIFIER = 983040, + CERT_FIND_KEY_SPEC = 589824, + CERT_FIND_MD5_HASH = 262144, + CERT_FIND_PROPERTY = 327680, + CERT_FIND_PUBLIC_KEY = 393216, + CERT_FIND_SHA1_HASH = 65536, + CERT_FIND_SIGNATURE_HASH = 917504, + CERT_FIND_SUBJECT_ATTR = 196615, + CERT_FIND_SUBJECT_CERT = 720896, + CERT_FIND_SUBJECT_NAME = 131079, + CERT_FIND_SUBJECT_STR_A = 458759, + CERT_FIND_SUBJECT_STR_W = 524295, + CERT_FIND_ISSUER_STR_A = 458756, + CERT_FIND_ISSUER_STR_W = 524292, } enum { - CERT_FIND_OR_ENHKEY_USAGE_FLAG = 16, - CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = 1, - CERT_FIND_NO_ENHKEY_USAGE_FLAG = 8, - CERT_FIND_VALID_ENHKEY_USAGE_FLAG = 32, - CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = 2, + CERT_FIND_OR_ENHKEY_USAGE_FLAG = 16, + CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = 1, + CERT_FIND_NO_ENHKEY_USAGE_FLAG = 8, + CERT_FIND_VALID_ENHKEY_USAGE_FLAG = 32, + CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = 2, } enum { - CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG = 2, - CERT_UNICODE_IS_RDN_ATTRS_FLAG = 1, - CERT_CHAIN_FIND_BY_ISSUER = 1, + CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG = 2, + CERT_UNICODE_IS_RDN_ATTRS_FLAG = 1, + CERT_CHAIN_FIND_BY_ISSUER = 1, } enum { - CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG = 1, - CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG = 2, - CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 4, - CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG = 8, - CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG = 16384, - CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG = 32768, + CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG = 1, + CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG = 2, + CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 4, + CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG = 8, + CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG = 16384, + CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG = 32768, } enum { - CERT_STORE_PROV_SYSTEM = 10, - CERT_SYSTEM_STORE_LOCAL_MACHINE = 131072, + CERT_STORE_PROV_SYSTEM = 10, + CERT_SYSTEM_STORE_LOCAL_MACHINE = 131072, } enum { - szOID_PKIX_KP_SERVER_AUTH = "4235600", - szOID_SERVER_GATED_CRYPTO = "4235658", - szOID_SGC_NETSCAPE = "2.16.840.1.113730.4.1", - szOID_PKIX_KP_CLIENT_AUTH = "1.3.6.1.5.5.7.3.2", + szOID_PKIX_KP_SERVER_AUTH = "4235600", + szOID_SERVER_GATED_CRYPTO = "4235658", + szOID_SGC_NETSCAPE = "2.16.840.1.113730.4.1", + szOID_PKIX_KP_CLIENT_AUTH = "1.3.6.1.5.5.7.3.2", } enum { - CRYPT_NOHASHOID = 0x00000001, - CRYPT_NO_SALT = 0x10, - CRYPT_PREGEN = 0x40, + CRYPT_NOHASHOID = 0x00000001, + CRYPT_NO_SALT = 0x10, + CRYPT_PREGEN = 0x40, } enum { - CRYPT_RECIPIENT = 0x10, - CRYPT_INITIATOR = 0x40, - CRYPT_ONLINE = 0x80, - CRYPT_SF = 0x100, - CRYPT_CREATE_IV = 0x200, - CRYPT_KEK = 0x400, - CRYPT_DATA_KEY = 0x800, - CRYPT_VOLATILE = 0x1000, - CRYPT_SGCKEY = 0x2000, + CRYPT_RECIPIENT = 0x10, + CRYPT_INITIATOR = 0x40, + CRYPT_ONLINE = 0x80, + CRYPT_SF = 0x100, + CRYPT_CREATE_IV = 0x200, + CRYPT_KEK = 0x400, + CRYPT_DATA_KEY = 0x800, + CRYPT_VOLATILE = 0x1000, + CRYPT_SGCKEY = 0x2000, } enum { - KP_IV = 0x00000001, - KP_SALT = 0x00000002, - KP_PADDING = 0x00000003, - KP_MODE = 0x00000004, - KP_MODE_BITS = 0x00000005, - KP_PERMISSIONS = 0x00000006, - KP_ALGID = 0x00000007, - KP_BLOCKLEN = 0x00000008, - KP_KEYLEN = 0x00000009, - KP_SALT_EX = 0x0000000a, - KP_P = 0x0000000b, - KP_G = 0x0000000c, - KP_Q = 0x0000000d, - KP_X = 0x0000000e, - KP_Y = 0x0000000f, - KP_RA = 0x00000010, - KP_RB = 0x00000011, - KP_INFO = 0x00000012, - KP_EFFECTIVE_KEYLEN = 0x00000013, - KP_SCHANNEL_ALG = 0x00000014, - KP_PUB_PARAMS = 0x00000027, + KP_IV = 0x00000001, + KP_SALT = 0x00000002, + KP_PADDING = 0x00000003, + KP_MODE = 0x00000004, + KP_MODE_BITS = 0x00000005, + KP_PERMISSIONS = 0x00000006, + KP_ALGID = 0x00000007, + KP_BLOCKLEN = 0x00000008, + KP_KEYLEN = 0x00000009, + KP_SALT_EX = 0x0000000a, + KP_P = 0x0000000b, + KP_G = 0x0000000c, + KP_Q = 0x0000000d, + KP_X = 0x0000000e, + KP_Y = 0x0000000f, + KP_RA = 0x00000010, + KP_RB = 0x00000011, + KP_INFO = 0x00000012, + KP_EFFECTIVE_KEYLEN = 0x00000013, + KP_SCHANNEL_ALG = 0x00000014, + KP_PUB_PARAMS = 0x00000027, } enum { - CRYPT_FLAG_PCT1 = 0x0001, - CRYPT_FLAG_SSL2 = 0x0002, - CRYPT_FLAG_SSL3 = 0x0004, - CRYPT_FLAG_TLS1 = 0x0008, - CRYPT_FLAG_IPSEC = 0x0010, - CRYPT_FLAG_SIGNING = 0x0020, + CRYPT_FLAG_PCT1 = 0x0001, + CRYPT_FLAG_SSL2 = 0x0002, + CRYPT_FLAG_SSL3 = 0x0004, + CRYPT_FLAG_TLS1 = 0x0008, + CRYPT_FLAG_IPSEC = 0x0010, + CRYPT_FLAG_SIGNING = 0x0020, } enum { - SCHANNEL_MAC_KEY = 0x00000000, - SCHANNEL_ENC_KEY = 0x00000001, + SCHANNEL_MAC_KEY = 0x00000000, + SCHANNEL_ENC_KEY = 0x00000001, } enum { - INTERNATIONAL_USAGE = 0x00000001, + INTERNATIONAL_USAGE = 0x00000001, } @@ -501,13 +501,13 @@ alias ULONG HCRYPTPROV, HCRYPTKEY, HCRYPTHASH; alias PVOID HCERTSTORE, HCRYPTMSG, HCERTCHAINENGINE; struct VTableProvStruc { - FARPROC FuncVerifyImage; + FARPROC FuncVerifyImage; } alias VTableProvStruc* PVTableProvStruc; struct _CRYPTOAPI_BLOB { - DWORD cbData; - BYTE* pbData; + DWORD cbData; + BYTE* pbData; } alias _CRYPTOAPI_BLOB CRYPT_INTEGER_BLOB, CRYPT_UINT_BLOB, CRYPT_OBJID_BLOB, CERT_NAME_BLOB, CERT_RDN_VALUE_BLOB, CERT_BLOB, @@ -520,10 +520,10 @@ alias _CRYPTOAPI_BLOB* PCRYPT_INTEGER_BLOB, PCRYPT_UINT_BLOB, // not described in SDK; has the same layout as HTTPSPolicyCallbackData struct SSL_EXTRA_CERT_CHAIN_POLICY_PARA { - DWORD cbStruct; - DWORD dwAuthType; - DWORD fdwChecks; - LPWSTR pwszServerName; + DWORD cbStruct; + DWORD dwAuthType; + DWORD fdwChecks; + LPWSTR pwszServerName; } alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA HTTPSPolicyCallbackData; alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA* PSSL_EXTRA_CERT_CHAIN_POLICY_PARA, @@ -531,96 +531,96 @@ alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA* PSSL_EXTRA_CERT_CHAIN_POLICY_PARA, /* #if (_WIN32_WINNT>=0x500) */ struct CERT_CHAIN_POLICY_PARA { - DWORD cbSize = CERT_CHAIN_POLICY_PARA.sizeof; - DWORD dwFlags; - void* pvExtraPolicyPara; + DWORD cbSize = CERT_CHAIN_POLICY_PARA.sizeof; + DWORD dwFlags; + void* pvExtraPolicyPara; } alias CERT_CHAIN_POLICY_PARA* PCERT_CHAIN_POLICY_PARA; struct CERT_CHAIN_POLICY_STATUS { - DWORD cbSize = CERT_CHAIN_POLICY_STATUS.sizeof; - DWORD dwError; - LONG lChainIndex; - LONG lElementIndex; - void* pvExtraPolicyStatus; + DWORD cbSize = CERT_CHAIN_POLICY_STATUS.sizeof; + DWORD dwError; + LONG lChainIndex; + LONG lElementIndex; + void* pvExtraPolicyStatus; } alias CERT_CHAIN_POLICY_STATUS* PCERT_CHAIN_POLICY_STATUS; /* #endif */ struct CRYPT_ALGORITHM_IDENTIFIER { - LPSTR pszObjId; - CRYPT_OBJID_BLOB Parameters; + LPSTR pszObjId; + CRYPT_OBJID_BLOB Parameters; } alias CRYPT_ALGORITHM_IDENTIFIER* PCRYPT_ALGORITHM_IDENTIFIER; struct CRYPT_BIT_BLOB { - DWORD cbData; - BYTE* pbData; - DWORD cUnusedBits; + DWORD cbData; + BYTE* pbData; + DWORD cUnusedBits; } alias CRYPT_BIT_BLOB* PCRYPT_BIT_BLOB; struct CERT_PUBLIC_KEY_INFO { - CRYPT_ALGORITHM_IDENTIFIER Algorithm; - CRYPT_BIT_BLOB PublicKey; + CRYPT_ALGORITHM_IDENTIFIER Algorithm; + CRYPT_BIT_BLOB PublicKey; } alias CERT_PUBLIC_KEY_INFO* PCERT_PUBLIC_KEY_INFO; struct CERT_EXTENSION { - LPSTR pszObjId; - BOOL fCritical; - CRYPT_OBJID_BLOB Value; + LPSTR pszObjId; + BOOL fCritical; + CRYPT_OBJID_BLOB Value; } alias CERT_EXTENSION* PCERT_EXTENSION; struct CERT_INFO { - DWORD dwVersion; - CRYPT_INTEGER_BLOB SerialNumber; - CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; - CERT_NAME_BLOB Issuer; - FILETIME NotBefore; - FILETIME NotAfter; - CERT_NAME_BLOB Subject; - CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; - CRYPT_BIT_BLOB IssuerUniqueId; - CRYPT_BIT_BLOB SubjectUniqueId; - DWORD cExtension; - PCERT_EXTENSION rgExtension; + DWORD dwVersion; + CRYPT_INTEGER_BLOB SerialNumber; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CERT_NAME_BLOB Issuer; + FILETIME NotBefore; + FILETIME NotAfter; + CERT_NAME_BLOB Subject; + CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; + CRYPT_BIT_BLOB IssuerUniqueId; + CRYPT_BIT_BLOB SubjectUniqueId; + DWORD cExtension; + PCERT_EXTENSION rgExtension; } alias CERT_INFO* PCERT_INFO; struct CERT_CONTEXT { - DWORD dwCertEncodingType; - BYTE* pbCertEncoded; - DWORD cbCertEncoded; - PCERT_INFO pCertInfo; - HCERTSTORE hCertStore; + DWORD dwCertEncodingType; + BYTE* pbCertEncoded; + DWORD cbCertEncoded; + PCERT_INFO pCertInfo; + HCERTSTORE hCertStore; } alias CERT_CONTEXT* PCERT_CONTEXT; alias const(CERT_CONTEXT)* PCCERT_CONTEXT; struct CTL_USAGE { - DWORD cUsageIdentifier; - LPSTR* rgpszUsageIdentifier; + DWORD cUsageIdentifier; + LPSTR* rgpszUsageIdentifier; } alias CTL_USAGE CERT_ENHKEY_USAGE; alias CTL_USAGE* PCTRL_USAGE, PCERT_ENHKEY_USAGE; struct CERT_USAGE_MATCH { - DWORD dwType; - CERT_ENHKEY_USAGE Usage; + DWORD dwType; + CERT_ENHKEY_USAGE Usage; } alias CERT_USAGE_MATCH* PCERT_USAGE_MATCH; /* #if (_WIN32_WINNT>=0x500) */ struct CERT_CHAIN_PARA { - DWORD cbSize = CERT_CHAIN_PARA.sizeof; - CERT_USAGE_MATCH RequestedUsage; + DWORD cbSize = CERT_CHAIN_PARA.sizeof; + CERT_USAGE_MATCH RequestedUsage; //#if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS - CERT_USAGE_MATCH RequestedIssuancePolicy; - DWORD dwUrlRetrievalTimeout; - BOOL fCheckRevocationFreshnessTime; - DWORD dwRevocationFreshnessTime; + CERT_USAGE_MATCH RequestedIssuancePolicy; + DWORD dwUrlRetrievalTimeout; + BOOL fCheckRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; //#endif } alias CERT_CHAIN_PARA* PCERT_CHAIN_PARA; @@ -629,270 +629,270 @@ extern (Windows) alias BOOL function(PCCERT_CONTEXT, void*) PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK; struct CERT_CHAIN_FIND_BY_ISSUER_PARA { - DWORD cbSize = CERT_CHAIN_FIND_BY_ISSUER_PARA.sizeof; - LPCSTR pszUsageIdentifier; - DWORD dwKeySpec; - DWORD dwAcquirePrivateKeyFlags; - DWORD cIssuer; - CERT_NAME_BLOB* rgIssuer; - PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback; - void* pvFindArg; - DWORD* pdwIssuerChainIndex; - DWORD* pdwIssuerElementIndex; + DWORD cbSize = CERT_CHAIN_FIND_BY_ISSUER_PARA.sizeof; + LPCSTR pszUsageIdentifier; + DWORD dwKeySpec; + DWORD dwAcquirePrivateKeyFlags; + DWORD cIssuer; + CERT_NAME_BLOB* rgIssuer; + PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback; + void* pvFindArg; + DWORD* pdwIssuerChainIndex; + DWORD* pdwIssuerElementIndex; } alias CERT_CHAIN_FIND_BY_ISSUER_PARA* PCERT_CHAIN_FIND_BY_ISSUER_PARA; /* #endif */ struct CERT_TRUST_STATUS { - DWORD dwErrorStatus; - DWORD dwInfoStatus; + DWORD dwErrorStatus; + DWORD dwInfoStatus; } alias CERT_TRUST_STATUS* PCERT_TRUST_STATUS; struct CRL_ENTRY { - CRYPT_INTEGER_BLOB SerialNumber; - FILETIME RevocationDate; - DWORD cExtension; - PCERT_EXTENSION rgExtension; + CRYPT_INTEGER_BLOB SerialNumber; + FILETIME RevocationDate; + DWORD cExtension; + PCERT_EXTENSION rgExtension; } alias CRL_ENTRY* PCRL_ENTRY; struct CRL_INFO { - DWORD dwVersion; - CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; - CERT_NAME_BLOB Issuer; - FILETIME ThisUpdate; - FILETIME NextUpdate; - DWORD cCRLEntry; - PCRL_ENTRY rgCRLEntry; - DWORD cExtension; - PCERT_EXTENSION rgExtension; + DWORD dwVersion; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CERT_NAME_BLOB Issuer; + FILETIME ThisUpdate; + FILETIME NextUpdate; + DWORD cCRLEntry; + PCRL_ENTRY rgCRLEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; } alias CRL_INFO* PCRL_INFO; struct CRL_CONTEXT { - DWORD dwCertEncodingType; - BYTE* pbCrlEncoded; - DWORD cbCrlEncoded; - PCRL_INFO pCrlInfo; - HCERTSTORE hCertStore; + DWORD dwCertEncodingType; + BYTE* pbCrlEncoded; + DWORD cbCrlEncoded; + PCRL_INFO pCrlInfo; + HCERTSTORE hCertStore; } alias CRL_CONTEXT* PCRL_CONTEXT; alias const(CRL_CONTEXT)* PCCRL_CONTEXT; struct CERT_REVOCATION_CRL_INFO { - DWORD cbSize = CERT_REVOCATION_CRL_INFO.sizeof; - PCCRL_CONTEXT pBaseCRLContext; - PCCRL_CONTEXT pDeltaCRLContext; - PCRL_ENTRY pCrlEntry; - BOOL fDeltaCrlEntry; + DWORD cbSize = CERT_REVOCATION_CRL_INFO.sizeof; + PCCRL_CONTEXT pBaseCRLContext; + PCCRL_CONTEXT pDeltaCRLContext; + PCRL_ENTRY pCrlEntry; + BOOL fDeltaCrlEntry; } alias CERT_REVOCATION_CRL_INFO* PCERT_REVOCATION_CRL_INFO; struct CERT_REVOCATION_INFO { - DWORD cbSize = CERT_REVOCATION_INFO.sizeof; - DWORD dwRevocationResult; - LPCSTR pszRevocationOid; - LPVOID pvOidSpecificInfo; - BOOL fHasFreshnessTime; - DWORD dwFreshnessTime; - PCERT_REVOCATION_CRL_INFO pCrlInfo; + DWORD cbSize = CERT_REVOCATION_INFO.sizeof; + DWORD dwRevocationResult; + LPCSTR pszRevocationOid; + LPVOID pvOidSpecificInfo; + BOOL fHasFreshnessTime; + DWORD dwFreshnessTime; + PCERT_REVOCATION_CRL_INFO pCrlInfo; } alias CERT_REVOCATION_INFO* PCERT_REVOCATION_INFO; /* #if (_WIN32_WINNT>=0x500) */ struct CERT_CHAIN_ELEMENT { - DWORD cbSize = CERT_CHAIN_ELEMENT.sizeof; - PCCERT_CONTEXT pCertContext; - CERT_TRUST_STATUS TrustStatus; - PCERT_REVOCATION_INFO pRevocationInfo; - PCERT_ENHKEY_USAGE pIssuanceUsage; - PCERT_ENHKEY_USAGE pApplicationUsage; + DWORD cbSize = CERT_CHAIN_ELEMENT.sizeof; + PCCERT_CONTEXT pCertContext; + CERT_TRUST_STATUS TrustStatus; + PCERT_REVOCATION_INFO pRevocationInfo; + PCERT_ENHKEY_USAGE pIssuanceUsage; + PCERT_ENHKEY_USAGE pApplicationUsage; } alias CERT_CHAIN_ELEMENT* PCERT_CHAIN_ELEMENT; /* #endif */ struct CRYPT_ATTRIBUTE { - LPSTR pszObjId; - DWORD cValue; - PCRYPT_ATTR_BLOB rgValue; + LPSTR pszObjId; + DWORD cValue; + PCRYPT_ATTR_BLOB rgValue; } alias CRYPT_ATTRIBUTE* PCRYPT_ATTRIBUTE; struct CTL_ENTRY { - CRYPT_DATA_BLOB SubjectIdentifier; - DWORD cAttribute; - PCRYPT_ATTRIBUTE rgAttribute; + CRYPT_DATA_BLOB SubjectIdentifier; + DWORD cAttribute; + PCRYPT_ATTRIBUTE rgAttribute; } alias CTL_ENTRY* PCTL_ENTRY; struct CTL_INFO { - DWORD dwVersion; - CTL_USAGE SubjectUsage; - CRYPT_DATA_BLOB ListIdentifier; - CRYPT_INTEGER_BLOB SequenceNumber; - FILETIME ThisUpdate; - FILETIME NextUpdate; - CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; - DWORD cCTLEntry; - PCTL_ENTRY rgCTLEntry; - DWORD cExtension; - PCERT_EXTENSION rgExtension; + DWORD dwVersion; + CTL_USAGE SubjectUsage; + CRYPT_DATA_BLOB ListIdentifier; + CRYPT_INTEGER_BLOB SequenceNumber; + FILETIME ThisUpdate; + FILETIME NextUpdate; + CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; + DWORD cCTLEntry; + PCTL_ENTRY rgCTLEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; } alias CTL_INFO* PCTL_INFO; struct CTL_CONTEXT { - DWORD dwMsgAndCertEncodingType; - BYTE* pbCtlEncoded; - DWORD cbCtlEncoded; - PCTL_INFO pCtlInfo; - HCERTSTORE hCertStore; - HCRYPTMSG hCryptMsg; - BYTE* pbCtlContent; - DWORD cbCtlContent; + DWORD dwMsgAndCertEncodingType; + BYTE* pbCtlEncoded; + DWORD cbCtlEncoded; + PCTL_INFO pCtlInfo; + HCERTSTORE hCertStore; + HCRYPTMSG hCryptMsg; + BYTE* pbCtlContent; + DWORD cbCtlContent; } alias CTL_CONTEXT* PCTL_CONTEXT; alias const(CTL_CONTEXT)* PCCTL_CONTEXT; struct CERT_TRUST_LIST_INFO { - DWORD cbSize = CERT_TRUST_LIST_INFO.sizeof; - PCTL_ENTRY pCtlEntry; - PCCTL_CONTEXT pCtlContext; + DWORD cbSize = CERT_TRUST_LIST_INFO.sizeof; + PCTL_ENTRY pCtlEntry; + PCCTL_CONTEXT pCtlContext; } alias CERT_TRUST_LIST_INFO* PCERT_TRUST_LIST_INFO; struct CERT_SIMPLE_CHAIN { - DWORD cbSize = CERT_SIMPLE_CHAIN.sizeof; - CERT_TRUST_STATUS TrustStatus; - DWORD cElement; - PCERT_CHAIN_ELEMENT* rgpElement; - PCERT_TRUST_LIST_INFO pTrustListInfo; - BOOL fHasRevocationFreshnessTime; - DWORD dwRevocationFreshnessTime; + DWORD cbSize = CERT_SIMPLE_CHAIN.sizeof; + CERT_TRUST_STATUS TrustStatus; + DWORD cElement; + PCERT_CHAIN_ELEMENT* rgpElement; + PCERT_TRUST_LIST_INFO pTrustListInfo; + BOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; } alias CERT_SIMPLE_CHAIN* PCERT_SIMPLE_CHAIN; /* #if (_WIN32_WINNT>=0x500) */ alias const(CERT_CHAIN_CONTEXT)* PCCERT_CHAIN_CONTEXT; struct CERT_CHAIN_CONTEXT { - DWORD cbSize = CERT_CHAIN_CONTEXT.sizeof; - CERT_TRUST_STATUS TrustStatus; - DWORD cChain; - PCERT_SIMPLE_CHAIN* rgpChain; - DWORD cLowerQualityChainContext; - PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; - BOOL fHasRevocationFreshnessTime; - DWORD dwRevocationFreshnessTime; + DWORD cbSize = CERT_CHAIN_CONTEXT.sizeof; + CERT_TRUST_STATUS TrustStatus; + DWORD cChain; + PCERT_SIMPLE_CHAIN* rgpChain; + DWORD cLowerQualityChainContext; + PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; + BOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; } alias CERT_CHAIN_CONTEXT* PCERT_CHAIN_CONTEXT; /* #endif */ struct PROV_ENUMALGS { - ALG_ID aiAlgid; - DWORD dwBitLen; - DWORD dwNameLen; - CHAR[20] szName; + ALG_ID aiAlgid; + DWORD dwBitLen; + DWORD dwNameLen; + CHAR[20] szName; } struct PUBLICKEYSTRUC { - BYTE bType; - BYTE bVersion; - WORD reserved; - ALG_ID aiKeyAlg; + BYTE bType; + BYTE bVersion; + WORD reserved; + ALG_ID aiKeyAlg; } alias PUBLICKEYSTRUC BLOBHEADER; struct RSAPUBKEY { - DWORD magic; - DWORD bitlen; - DWORD pubexp; + DWORD magic; + DWORD bitlen; + DWORD pubexp; } struct HMAC_INFO { - ALG_ID HashAlgid; - BYTE* pbInnerString; - DWORD cbInnerString; - BYTE* pbOuterString; - DWORD cbOuterString; + ALG_ID HashAlgid; + BYTE* pbInnerString; + DWORD cbInnerString; + BYTE* pbOuterString; + DWORD cbOuterString; } alias HMAC_INFO* PHMAC_INFO; extern (Windows) { - BOOL CertCloseStore(HCERTSTORE, DWORD); - BOOL CertGetCertificateChain(HCERTCHAINENGINE, PCCERT_CONTEXT, LPFILETIME, - HCERTSTORE, PCERT_CHAIN_PARA, DWORD, LPVOID, PCCERT_CHAIN_CONTEXT*); - BOOL CertVerifyCertificateChainPolicy(LPCSTR, PCCERT_CHAIN_CONTEXT, - PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS); - void CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT); - DWORD CertNameToStrA(DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD); - DWORD CertNameToStrW(DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD); - HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV, LPCSTR); - HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR); - HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, const(void)*); - PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWORD, - const(void)*, PCCERT_CONTEXT); - BOOL CertFreeCertificateContext(PCCERT_CONTEXT); - PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE, - PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*); - PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWORD, - const(void)*, PCCERT_CHAIN_CONTEXT); - - BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); - BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); - BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD); - BOOL CryptReleaseContext(HCRYPTPROV, DWORD); - BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*); - BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*); - BOOL CryptDestroyKey(HCRYPTKEY); - static if (_WIN32_WINNT >= 0x500) { - BOOL CryptDuplicateHash(HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*); - BOOL CryptDuplicateKey(HCRYPTKEY, DWORD*, DWORD, HCRYPTKEY*); - } - BOOL CryptSetKeyParam(HCRYPTKEY, DWORD, PBYTE, DWORD); - BOOL CryptGetKeyParam(HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD); - BOOL CryptSetHashParam(HCRYPTHASH, DWORD, PBYTE, DWORD); - BOOL CryptGetHashParam(HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD); - BOOL CryptSetProvParam(HCRYPTPROV, DWORD, PBYTE, DWORD); - BOOL CryptGetProvParam(HCRYPTPROV, DWORD, PBYTE, PDWORD, DWORD); - BOOL CryptGenRandom(HCRYPTPROV, DWORD, PBYTE); - BOOL CryptGetUserKey(HCRYPTPROV, DWORD, HCRYPTKEY*); - BOOL CryptExportKey(HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, PBYTE, PDWORD); - BOOL CryptImportKey(HCRYPTPROV, PBYTE, DWORD, HCRYPTKEY, DWORD, - HCRYPTKEY*); - BOOL CryptEncrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD, - DWORD); - BOOL CryptDecrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD); - BOOL CryptCreateHash(HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH*); - BOOL CryptHashData(HCRYPTHASH, PBYTE, DWORD, DWORD); - BOOL CryptHashSessionKey(HCRYPTHASH, HCRYPTKEY, DWORD); - BOOL CryptGetHashValue(HCRYPTHASH, DWORD, PBYTE, PDWORD); - BOOL CryptDestroyHash(HCRYPTHASH); - BOOL CryptSignHashA(HCRYPTHASH, DWORD, LPCSTR, DWORD, PBYTE, PDWORD); - BOOL CryptSignHashW(HCRYPTHASH, DWORD, LPCWSTR, DWORD, PBYTE, PDWORD); - BOOL CryptVerifySignatureA(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCSTR, - DWORD); - BOOL CryptVerifySignatureW(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCWSTR, - DWORD); - BOOL CryptSetProviderA(LPCSTR, DWORD); - BOOL CryptSetProviderW(LPCWSTR, DWORD); + BOOL CertCloseStore(HCERTSTORE, DWORD); + BOOL CertGetCertificateChain(HCERTCHAINENGINE, PCCERT_CONTEXT, LPFILETIME, + HCERTSTORE, PCERT_CHAIN_PARA, DWORD, LPVOID, PCCERT_CHAIN_CONTEXT*); + BOOL CertVerifyCertificateChainPolicy(LPCSTR, PCCERT_CHAIN_CONTEXT, + PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS); + void CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT); + DWORD CertNameToStrA(DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD); + DWORD CertNameToStrW(DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD); + HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV, LPCSTR); + HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR); + HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, const(void)*); + PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWORD, + const(void)*, PCCERT_CONTEXT); + BOOL CertFreeCertificateContext(PCCERT_CONTEXT); + PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE, + PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*); + PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWORD, + const(void)*, PCCERT_CHAIN_CONTEXT); + + BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); + BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD); + BOOL CryptReleaseContext(HCRYPTPROV, DWORD); + BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*); + BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*); + BOOL CryptDestroyKey(HCRYPTKEY); + static if (_WIN32_WINNT >= 0x500) { + BOOL CryptDuplicateHash(HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*); + BOOL CryptDuplicateKey(HCRYPTKEY, DWORD*, DWORD, HCRYPTKEY*); + } + BOOL CryptSetKeyParam(HCRYPTKEY, DWORD, PBYTE, DWORD); + BOOL CryptGetKeyParam(HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptSetHashParam(HCRYPTHASH, DWORD, PBYTE, DWORD); + BOOL CryptGetHashParam(HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptSetProvParam(HCRYPTPROV, DWORD, PBYTE, DWORD); + BOOL CryptGetProvParam(HCRYPTPROV, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptGenRandom(HCRYPTPROV, DWORD, PBYTE); + BOOL CryptGetUserKey(HCRYPTPROV, DWORD, HCRYPTKEY*); + BOOL CryptExportKey(HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, PBYTE, PDWORD); + BOOL CryptImportKey(HCRYPTPROV, PBYTE, DWORD, HCRYPTKEY, DWORD, + HCRYPTKEY*); + BOOL CryptEncrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD, + DWORD); + BOOL CryptDecrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD); + BOOL CryptCreateHash(HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH*); + BOOL CryptHashData(HCRYPTHASH, PBYTE, DWORD, DWORD); + BOOL CryptHashSessionKey(HCRYPTHASH, HCRYPTKEY, DWORD); + BOOL CryptGetHashValue(HCRYPTHASH, DWORD, PBYTE, PDWORD); + BOOL CryptDestroyHash(HCRYPTHASH); + BOOL CryptSignHashA(HCRYPTHASH, DWORD, LPCSTR, DWORD, PBYTE, PDWORD); + BOOL CryptSignHashW(HCRYPTHASH, DWORD, LPCWSTR, DWORD, PBYTE, PDWORD); + BOOL CryptVerifySignatureA(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCSTR, + DWORD); + BOOL CryptVerifySignatureW(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCWSTR, + DWORD); + BOOL CryptSetProviderA(LPCSTR, DWORD); + BOOL CryptSetProviderW(LPCWSTR, DWORD); } version (Unicode) { - alias CertNameToStrW CertNameToStr; - alias CryptAcquireContextW CryptAcquireContext; - alias CryptSignHashW CryptSignHash; - alias CryptVerifySignatureW CryptVerifySignature; - alias CryptSetProviderW CryptSetProvider; - alias CertOpenSystemStoreW CertOpenSystemStore; - /+alias CERT_FIND_SUBJECT_STR_W CERT_FIND_SUBJECT_STR; - alias CERT_FIND_ISSUER_STR_W CERT_FIND_ISSUER_STR;+/ + alias CertNameToStrW CertNameToStr; + alias CryptAcquireContextW CryptAcquireContext; + alias CryptSignHashW CryptSignHash; + alias CryptVerifySignatureW CryptVerifySignature; + alias CryptSetProviderW CryptSetProvider; + alias CertOpenSystemStoreW CertOpenSystemStore; + /+alias CERT_FIND_SUBJECT_STR_W CERT_FIND_SUBJECT_STR; + alias CERT_FIND_ISSUER_STR_W CERT_FIND_ISSUER_STR;+/ } else { - alias CertNameToStrA CertNameToStr; - alias CryptAcquireContextA CryptAcquireContext; - alias CryptSignHashA CryptSignHash; - alias CryptVerifySignatureA CryptVerifySignature; - alias CryptSetProviderA CryptSetProvider; - alias CertOpenSystemStoreA CertOpenSystemStore; - /+alias CERT_FIND_SUBJECT_STR_A CERT_FIND_SUBJECT_STR; - alias CERT_FIND_ISSUER_STR_A CERT_FIND_ISSUER_STR;+/ + alias CertNameToStrA CertNameToStr; + alias CryptAcquireContextA CryptAcquireContext; + alias CryptSignHashA CryptSignHash; + alias CryptVerifySignatureA CryptVerifySignature; + alias CryptSetProviderA CryptSetProvider; + alias CertOpenSystemStoreA CertOpenSystemStore; + /+alias CERT_FIND_SUBJECT_STR_A CERT_FIND_SUBJECT_STR; + alias CERT_FIND_ISSUER_STR_A CERT_FIND_ISSUER_STR;+/ } diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index f7ad7909e3..569d9e6897 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -15,7 +15,7 @@ private import core.sys.windows.w32api; const size_t MAX_PATH = 260; ushort MAKEWORD(ubyte a, ubyte b) { - return cast(ushort) ((b << 8) | a); + return cast(ushort) ((b << 8) | a); } ushort MAKEWORD(ushort a, ushort b) { @@ -25,7 +25,7 @@ ushort MAKEWORD(ushort a, ushort b) { } uint MAKELONG(ushort a, ushort b) { - return cast(uint) ((b << 16) | a); + return cast(uint) ((b << 16) | a); } uint MAKELONG(uint a, uint b) { @@ -35,31 +35,31 @@ uint MAKELONG(uint a, uint b) { } ushort LOWORD(ulong l) { - return cast(ushort) l; + return cast(ushort) l; } ushort HIWORD(ulong l) { - return cast(ushort) (l >>> 16); + return cast(ushort) (l >>> 16); } ubyte LOBYTE(ushort w) { - return cast(ubyte) w; + return cast(ubyte) w; } ubyte HIBYTE(ushort w) { - return cast(ubyte) (w >>> 8); + return cast(ubyte) (w >>> 8); } template max(T) { - T max(T a, T b) { - return a > b ? a : b; - } + T max(T a, T b) { + return a > b ? a : b; + } } template min(T) { - T min(T a, T b) { - return a < b ? a : b; - } + T min(T a, T b) { + return a < b ? a : b; + } } enum void* NULL = null; @@ -113,43 +113,43 @@ mixin DECLARE_HANDLE!("HCURSOR"); alias HKEY* PHKEY; static if (_WIN32_WINNT >= 0x500) { - mixin DECLARE_HANDLE!("HTERMINAL"); - mixin DECLARE_HANDLE!("HWINEVENTHOOK"); + mixin DECLARE_HANDLE!("HTERMINAL"); + mixin DECLARE_HANDLE!("HWINEVENTHOOK"); } alias extern (Windows) INT_PTR function() FARPROC, NEARPROC, PROC; struct RECT { - LONG left; - LONG top; - LONG right; - LONG bottom; + LONG left; + LONG top; + LONG right; + LONG bottom; } alias RECT RECTL; alias RECT* PRECT, LPRECT, PRECTL, LPRECTL; alias const(RECT)* LPCRECT, LPCRECTL; struct POINT { - LONG x; - LONG y; + LONG x; + LONG y; } alias POINT POINTL; alias POINT* PPOINT, LPPOINT, PPOINTL, LPPOINTL; struct SIZE { - LONG cx; - LONG cy; + LONG cx; + LONG cy; } alias SIZE SIZEL; alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL; struct POINTS { - SHORT x; - SHORT y; + SHORT x; + SHORT y; } alias POINTS* PPOINTS, LPPOINTS; enum : BOOL { - FALSE = 0, - TRUE = 1 + FALSE = 0, + TRUE = 1 } diff --git a/src/core/sys/windows/windows.d b/src/core/sys/windows/windows.d index 69470b59c3..a78b2dfa4d 100644 --- a/src/core/sys/windows/windows.d +++ b/src/core/sys/windows/windows.d @@ -9,15 +9,15 @@ module core.sys.windows.windows; /* - windows.h - main header file for the Win32 API + windows.h - main header file for the Win32 API - Written by Anders Norlander + Written by Anders Norlander - This file is part of a free library for the Win32 API. + This file is part of a free library for the Win32 API. - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ @@ -44,10 +44,10 @@ public import core.sys.windows.ole2; // Select correct version of winsock. Importing the incorrect // module will cause a static assert to prevent problems later on. version (Win32_Winsock1) { - public import core.sys.windows.winsock; + public import core.sys.windows.winsock; } else { - public import core.sys.windows.winsock2; - public import core.sys.windows.ws2tcpip; + public import core.sys.windows.winsock2; + public import core.sys.windows.ws2tcpip; } /+ diff --git a/src/core/sys/windows/winerror.d b/src/core/sys/windows/winerror.d index c84643ab2a..a5664c9722 100644 --- a/src/core/sys/windows/winerror.d +++ b/src/core/sys/windows/winerror.d @@ -17,2293 +17,2293 @@ private import core.sys.windows.windef; alias int SCODE; // was in core.sys.windows.wtypes. enum : uint { - ERROR_SUCCESS = 0, - NO_ERROR = 0, - ERROR_INVALID_FUNCTION, - ERROR_FILE_NOT_FOUND, - ERROR_PATH_NOT_FOUND, - ERROR_TOO_MANY_OPEN_FILES, - ERROR_ACCESS_DENIED, - ERROR_INVALID_HANDLE, - ERROR_ARENA_TRASHED, - ERROR_NOT_ENOUGH_MEMORY, - ERROR_INVALID_BLOCK, - ERROR_BAD_ENVIRONMENT, - ERROR_BAD_FORMAT, - ERROR_INVALID_ACCESS, - ERROR_INVALID_DATA, - ERROR_OUTOFMEMORY, - ERROR_INVALID_DRIVE, - ERROR_CURRENT_DIRECTORY, - ERROR_NOT_SAME_DEVICE, - ERROR_NO_MORE_FILES, - ERROR_WRITE_PROTECT, - ERROR_BAD_UNIT, - ERROR_NOT_READY, - ERROR_BAD_COMMAND, - ERROR_CRC, - ERROR_BAD_LENGTH, - ERROR_SEEK, - ERROR_NOT_DOS_DISK, - ERROR_SECTOR_NOT_FOUND, - ERROR_OUT_OF_PAPER, - ERROR_WRITE_FAULT, - ERROR_READ_FAULT, - ERROR_GEN_FAILURE, - ERROR_SHARING_VIOLATION, - ERROR_LOCK_VIOLATION, - ERROR_WRONG_DISK, // = 34 - ERROR_SHARING_BUFFER_EXCEEDED = 36, - ERROR_HANDLE_EOF = 38, - ERROR_HANDLE_DISK_FULL, // = 39 - ERROR_NOT_SUPPORTED = 50, - ERROR_REM_NOT_LIST, - ERROR_DUP_NAME, - ERROR_BAD_NETPATH, - ERROR_NETWORK_BUSY, - ERROR_DEV_NOT_EXIST, - ERROR_TOO_MANY_CMDS, - ERROR_ADAP_HDW_ERR, - ERROR_BAD_NET_RESP, - ERROR_UNEXP_NET_ERR, - ERROR_BAD_REM_ADAP, - ERROR_PRINTQ_FULL, - ERROR_NO_SPOOL_SPACE, - ERROR_PRINT_CANCELLED, - ERROR_NETNAME_DELETED, - ERROR_NETWORK_ACCESS_DENIED, - ERROR_BAD_DEV_TYPE, - ERROR_BAD_NET_NAME, - ERROR_TOO_MANY_NAMES, - ERROR_TOO_MANY_SESS, - ERROR_SHARING_PAUSED, - ERROR_REQ_NOT_ACCEP, - ERROR_REDIR_PAUSED, // = 72 - ERROR_FILE_EXISTS = 80, - ERROR_CANNOT_MAKE = 82, - ERROR_FAIL_I24, - ERROR_OUT_OF_STRUCTURES, - ERROR_ALREADY_ASSIGNED, - ERROR_INVALID_PASSWORD, - ERROR_INVALID_PARAMETER, - ERROR_NET_WRITE_FAULT, - ERROR_NO_PROC_SLOTS, // = 89 - ERROR_TOO_MANY_SEMAPHORES = 100, - ERROR_EXCL_SEM_ALREADY_OWNED, - ERROR_SEM_IS_SET, - ERROR_TOO_MANY_SEM_REQUESTS, - ERROR_INVALID_AT_INTERRUPT_TIME, - ERROR_SEM_OWNER_DIED, - ERROR_SEM_USER_LIMIT, - ERROR_DISK_CHANGE, - ERROR_DRIVE_LOCKED, - ERROR_BROKEN_PIPE, - ERROR_OPEN_FAILED, - ERROR_BUFFER_OVERFLOW, - ERROR_DISK_FULL, - ERROR_NO_MORE_SEARCH_HANDLES, - ERROR_INVALID_TARGET_HANDLE, // = 114 - ERROR_INVALID_CATEGORY = 117, - ERROR_INVALID_VERIFY_SWITCH, - ERROR_BAD_DRIVER_LEVEL, - ERROR_CALL_NOT_IMPLEMENTED, - ERROR_SEM_TIMEOUT, - ERROR_INSUFFICIENT_BUFFER, - ERROR_INVALID_NAME, - ERROR_INVALID_LEVEL, - ERROR_NO_VOLUME_LABEL, - ERROR_MOD_NOT_FOUND, - ERROR_PROC_NOT_FOUND, - ERROR_WAIT_NO_CHILDREN, - ERROR_CHILD_NOT_COMPLETE, - ERROR_DIRECT_ACCESS_HANDLE, - ERROR_NEGATIVE_SEEK, - ERROR_SEEK_ON_DEVICE, - ERROR_IS_JOIN_TARGET, - ERROR_IS_JOINED, - ERROR_IS_SUBSTED, - ERROR_NOT_JOINED, - ERROR_NOT_SUBSTED, - ERROR_JOIN_TO_JOIN, - ERROR_SUBST_TO_SUBST, - ERROR_JOIN_TO_SUBST, - ERROR_SUBST_TO_JOIN, - ERROR_BUSY_DRIVE, - ERROR_SAME_DRIVE, - ERROR_DIR_NOT_ROOT, - ERROR_DIR_NOT_EMPTY, - ERROR_IS_SUBST_PATH, - ERROR_IS_JOIN_PATH, - ERROR_PATH_BUSY, - ERROR_IS_SUBST_TARGET, - ERROR_SYSTEM_TRACE, - ERROR_INVALID_EVENT_COUNT, - ERROR_TOO_MANY_MUXWAITERS, - ERROR_INVALID_LIST_FORMAT, - ERROR_LABEL_TOO_LONG, - ERROR_TOO_MANY_TCBS, - ERROR_SIGNAL_REFUSED, - ERROR_DISCARDED, - ERROR_NOT_LOCKED, - ERROR_BAD_THREADID_ADDR, - ERROR_BAD_ARGUMENTS, - ERROR_BAD_PATHNAME, - ERROR_SIGNAL_PENDING, // = 162 - ERROR_MAX_THRDS_REACHED = 164, - ERROR_LOCK_FAILED = 167, - ERROR_BUSY = 170, - ERROR_CANCEL_VIOLATION = 173, - ERROR_ATOMIC_LOCKS_NOT_SUPPORTED, // = 174 - ERROR_INVALID_SEGMENT_NUMBER = 180, - ERROR_INVALID_ORDINAL = 182, - ERROR_ALREADY_EXISTS, // = 183 - ERROR_INVALID_FLAG_NUMBER = 186, - ERROR_SEM_NOT_FOUND, - ERROR_INVALID_STARTING_CODESEG, - ERROR_INVALID_STACKSEG, - ERROR_INVALID_MODULETYPE, - ERROR_INVALID_EXE_SIGNATURE, - ERROR_EXE_MARKED_INVALID, - ERROR_BAD_EXE_FORMAT, - ERROR_ITERATED_DATA_EXCEEDS_64k, - ERROR_INVALID_MINALLOCSIZE, - ERROR_DYNLINK_FROM_INVALID_RING, - ERROR_IOPL_NOT_ENABLED, - ERROR_INVALID_SEGDPL, - ERROR_AUTODATASEG_EXCEEDS_64k, - ERROR_RING2SEG_MUST_BE_MOVABLE, - ERROR_RELOC_CHAIN_XEEDS_SEGLIM, - ERROR_INFLOOP_IN_RELOC_CHAIN, - ERROR_ENVVAR_NOT_FOUND, // = 203 - ERROR_NO_SIGNAL_SENT = 205, - ERROR_FILENAME_EXCED_RANGE, - ERROR_RING2_STACK_IN_USE, - ERROR_META_EXPANSION_TOO_LONG, - ERROR_INVALID_SIGNAL_NUMBER, - ERROR_THREAD_1_INACTIVE, // = 210 - ERROR_LOCKED = 212, - ERROR_TOO_MANY_MODULES = 214, - ERROR_NESTING_NOT_ALLOWED, - ERROR_EXE_MACHINE_TYPE_MISMATCH, - ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY, - ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY, // = 218 - ERROR_BAD_PIPE = 230, - ERROR_PIPE_BUSY, - ERROR_NO_DATA, - ERROR_PIPE_NOT_CONNECTED, - ERROR_MORE_DATA, // = 234 - ERROR_VC_DISCONNECTED = 240, - ERROR_INVALID_EA_NAME = 254, - ERROR_EA_LIST_INCONSISTENT, // = 255 - WAIT_TIMEOUT = 258, - ERROR_NO_MORE_ITEMS, // = 259 - ERROR_CANNOT_COPY = 266, - ERROR_DIRECTORY, // = 267 - ERROR_EAS_DIDNT_FIT = 275, - ERROR_EA_FILE_CORRUPT, - ERROR_EA_TABLE_FULL, - ERROR_INVALID_EA_HANDLE, // = 278 - ERROR_EAS_NOT_SUPPORTED = 282, - ERROR_NOT_OWNER = 288, - ERROR_TOO_MANY_POSTS = 298, - ERROR_PARTIAL_COPY, - ERROR_OPLOCK_NOT_GRANTED, - ERROR_INVALID_OPLOCK_PROTOCOL, - ERROR_DISK_TOO_FRAGMENTED, - ERROR_DELETE_PENDING, // = 303 - ERROR_MR_MID_NOT_FOUND = 317, - ERROR_SCOPE_NOT_FOUND, // = 318 - ERROR_INVALID_ADDRESS = 487, - ERROR_ARITHMETIC_OVERFLOW = 534, - ERROR_PIPE_CONNECTED, - ERROR_PIPE_LISTENING, // = 536 - ERROR_EA_ACCESS_DENIED = 994, - ERROR_OPERATION_ABORTED, - ERROR_IO_INCOMPLETE, - ERROR_IO_PENDING, - ERROR_NOACCESS, - ERROR_SWAPERROR, // = 999 - ERROR_STACK_OVERFLOW = 1001, - ERROR_INVALID_MESSAGE, - ERROR_CAN_NOT_COMPLETE, - ERROR_INVALID_FLAGS, - ERROR_UNRECOGNIZED_VOLUME, - ERROR_FILE_INVALID, - ERROR_FULLSCREEN_MODE, - ERROR_NO_TOKEN, - ERROR_BADDB, - ERROR_BADKEY, - ERROR_CANTOPEN, - ERROR_CANTREAD, - ERROR_CANTWRITE, - ERROR_REGISTRY_RECOVERED, - ERROR_REGISTRY_CORRUPT, - ERROR_REGISTRY_IO_FAILED, - ERROR_NOT_REGISTRY_FILE, - ERROR_KEY_DELETED, - ERROR_NO_LOG_SPACE, - ERROR_KEY_HAS_CHILDREN, - ERROR_CHILD_MUST_BE_VOLATILE, - ERROR_NOTIFY_ENUM_DIR, // = 1022 - ERROR_DEPENDENT_SERVICES_RUNNING = 1051, - ERROR_INVALID_SERVICE_CONTROL, - ERROR_SERVICE_REQUEST_TIMEOUT, - ERROR_SERVICE_NO_THREAD, - ERROR_SERVICE_DATABASE_LOCKED, - ERROR_SERVICE_ALREADY_RUNNING, - ERROR_INVALID_SERVICE_ACCOUNT, - ERROR_SERVICE_DISABLED, - ERROR_CIRCULAR_DEPENDENCY, - ERROR_SERVICE_DOES_NOT_EXIST, - ERROR_SERVICE_CANNOT_ACCEPT_CTRL, - ERROR_SERVICE_NOT_ACTIVE, - ERROR_FAILED_SERVICE_CONTROLLER_CONNECT, - ERROR_EXCEPTION_IN_SERVICE, - ERROR_DATABASE_DOES_NOT_EXIST, - ERROR_SERVICE_SPECIFIC_ERROR, - ERROR_PROCESS_ABORTED, - ERROR_SERVICE_DEPENDENCY_FAIL, - ERROR_SERVICE_LOGON_FAILED, - ERROR_SERVICE_START_HANG, - ERROR_INVALID_SERVICE_LOCK, - ERROR_SERVICE_MARKED_FOR_DELETE, - ERROR_SERVICE_EXISTS, - ERROR_ALREADY_RUNNING_LKG, - ERROR_SERVICE_DEPENDENCY_DELETED, - ERROR_BOOT_ALREADY_ACCEPTED, - ERROR_SERVICE_NEVER_STARTED, - ERROR_DUPLICATE_SERVICE_NAME, - ERROR_DIFFERENT_SERVICE_ACCOUNT, - ERROR_CANNOT_DETECT_DRIVER_FAILURE, - ERROR_CANNOT_DETECT_PROCESS_ABORT, - ERROR_NO_RECOVERY_PROGRAM, - ERROR_SERVICE_NOT_IN_EXE, - ERROR_NOT_SAFEBOOT_SERVICE, // = 1084 - ERROR_END_OF_MEDIA = 1100, - ERROR_FILEMARK_DETECTED, - ERROR_BEGINNING_OF_MEDIA, - ERROR_SETMARK_DETECTED, - ERROR_NO_DATA_DETECTED, - ERROR_PARTITION_FAILURE, - ERROR_INVALID_BLOCK_LENGTH, - ERROR_DEVICE_NOT_PARTITIONED, - ERROR_UNABLE_TO_LOCK_MEDIA, - ERROR_UNABLE_TO_UNLOAD_MEDIA, - ERROR_MEDIA_CHANGED, - ERROR_BUS_RESET, - ERROR_NO_MEDIA_IN_DRIVE, - ERROR_NO_UNICODE_TRANSLATION, - ERROR_DLL_INIT_FAILED, - ERROR_SHUTDOWN_IN_PROGRESS, - ERROR_NO_SHUTDOWN_IN_PROGRESS, - ERROR_IO_DEVICE, - ERROR_SERIAL_NO_DEVICE, - ERROR_IRQ_BUSY, - ERROR_MORE_WRITES, - ERROR_COUNTER_TIMEOUT, - ERROR_FLOPPY_ID_MARK_NOT_FOUND, - ERROR_FLOPPY_WRONG_CYLINDER, - ERROR_FLOPPY_UNKNOWN_ERROR, - ERROR_FLOPPY_BAD_REGISTERS, - ERROR_DISK_RECALIBRATE_FAILED, - ERROR_DISK_OPERATION_FAILED, - ERROR_DISK_RESET_FAILED, - ERROR_EOM_OVERFLOW, - ERROR_NOT_ENOUGH_SERVER_MEMORY, - ERROR_POSSIBLE_DEADLOCK, - ERROR_MAPPED_ALIGNMENT, // = 1132 - ERROR_SET_POWER_STATE_VETOED = 1140, - ERROR_SET_POWER_STATE_FAILED, - ERROR_TOO_MANY_LINKS, // = 1142 - ERROR_OLD_WIN_VERSION = 1150, - ERROR_APP_WRONG_OS, - ERROR_SINGLE_INSTANCE_APP, - ERROR_RMODE_APP, - ERROR_INVALID_DLL, - ERROR_NO_ASSOCIATION, - ERROR_DDE_FAIL, - ERROR_DLL_NOT_FOUND, - ERROR_NO_MORE_USER_HANDLES, - ERROR_MESSAGE_SYNC_ONLY, - ERROR_SOURCE_ELEMENT_EMPTY, - ERROR_DESTINATION_ELEMENT_FULL, - ERROR_ILLEGAL_ELEMENT_ADDRESS, - ERROR_MAGAZINE_NOT_PRESENT, - ERROR_DEVICE_REINITIALIZATION_NEEDED, - ERROR_DEVICE_REQUIRES_CLEANING, - ERROR_DEVICE_DOOR_OPEN, - ERROR_DEVICE_NOT_CONNECTED, - ERROR_NOT_FOUND, - ERROR_NO_MATCH, - ERROR_SET_NOT_FOUND, - ERROR_POINT_NOT_FOUND, - ERROR_NO_TRACKING_SERVICE, - ERROR_NO_VOLUME_ID, // = 1173 - ERROR_UNABLE_TO_REMOVE_REPLACED = 1175, - ERROR_UNABLE_TO_MOVE_REPLACEMENT, - ERROR_UNABLE_TO_MOVE_REPLACEMENT_2, - ERROR_JOURNAL_DELETE_IN_PROGRESS, - ERROR_JOURNAL_NOT_ACTIVE, - ERROR_POTENTIAL_FILE_FOUND, - ERROR_JOURNAL_ENTRY_DELETED, // = 1181 - ERROR_BAD_DEVICE = 1200, - ERROR_CONNECTION_UNAVAIL, - ERROR_DEVICE_ALREADY_REMEMBERED, - ERROR_NO_NET_OR_BAD_PATH, - ERROR_BAD_PROVIDER, - ERROR_CANNOT_OPEN_PROFILE, - ERROR_BAD_PROFILE, - ERROR_NOT_CONTAINER, - ERROR_EXTENDED_ERROR, - ERROR_INVALID_GROUPNAME, - ERROR_INVALID_COMPUTERNAME, - ERROR_INVALID_EVENTNAME, - ERROR_INVALID_DOMAINNAME, - ERROR_INVALID_SERVICENAME, - ERROR_INVALID_NETNAME, - ERROR_INVALID_SHARENAME, - ERROR_INVALID_PASSWORDNAME, - ERROR_INVALID_MESSAGENAME, - ERROR_INVALID_MESSAGEDEST, - ERROR_SESSION_CREDENTIAL_CONFLICT, - ERROR_REMOTE_SESSION_LIMIT_EXCEEDED, - ERROR_DUP_DOMAINNAME, - ERROR_NO_NETWORK, - ERROR_CANCELLED, - ERROR_USER_MAPPED_FILE, - ERROR_CONNECTION_REFUSED, - ERROR_GRACEFUL_DISCONNECT, - ERROR_ADDRESS_ALREADY_ASSOCIATED, - ERROR_ADDRESS_NOT_ASSOCIATED, - ERROR_CONNECTION_INVALID, - ERROR_CONNECTION_ACTIVE, - ERROR_NETWORK_UNREACHABLE, - ERROR_HOST_UNREACHABLE, - ERROR_PROTOCOL_UNREACHABLE, - ERROR_PORT_UNREACHABLE, - ERROR_REQUEST_ABORTED, - ERROR_CONNECTION_ABORTED, - ERROR_RETRY, - ERROR_CONNECTION_COUNT_LIMIT, - ERROR_LOGIN_TIME_RESTRICTION, - ERROR_LOGIN_WKSTA_RESTRICTION, - ERROR_INCORRECT_ADDRESS, - ERROR_ALREADY_REGISTERED, - ERROR_SERVICE_NOT_FOUND, - ERROR_NOT_AUTHENTICATED, - ERROR_NOT_LOGGED_ON, - ERROR_CONTINUE, - ERROR_ALREADY_INITIALIZED, - ERROR_NO_MORE_DEVICES, - ERROR_NO_SUCH_SITE, - ERROR_DOMAIN_CONTROLLER_EXISTS, - ERROR_ONLY_IF_CONNECTED, - ERROR_OVERRIDE_NOCHANGES, - ERROR_BAD_USER_PROFILE, - ERROR_NOT_SUPPORTED_ON_SBS, - ERROR_SERVER_SHUTDOWN_IN_PROGRESS, - ERROR_HOST_DOWN, - ERROR_NON_ACCOUNT_SID, - ERROR_NON_DOMAIN_SID, - ERROR_APPHELP_BLOCK, - ERROR_ACCESS_DISABLED_BY_POLICY, - ERROR_REG_NAT_CONSUMPTION, - ERROR_CSCSHARE_OFFLINE, - ERROR_PKINIT_FAILURE, - ERROR_SMARTCARD_SUBSYSTEM_FAILURE, - ERROR_DOWNGRADE_DETECTED, - SEC_E_SMARTCARD_CERT_REVOKED, - SEC_E_ISSUING_CA_UNTRUSTED, - SEC_E_REVOCATION_OFFLINE_C, - SEC_E_PKINIT_CLIENT_FAILUR, - SEC_E_SMARTCARD_CERT_EXPIRED, - ERROR_MACHINE_LOCKED, // = 1271 - ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273, - ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED, - ERROR_DRIVER_BLOCKED, - ERROR_INVALID_IMPORT_OF_NON_DLL, - ERROR_ACCESS_DISABLED_WEBBLADE, - ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER, - ERROR_RECOVERY_FAILURE, - ERROR_ALREADY_FIBER, - ERROR_ALREADY_THREAD, - ERROR_STACK_BUFFER_OVERRUN, - ERROR_PARAMETER_QUOTA_EXCEEDED, - ERROR_DEBUGGER_INACTIVE, // = 1284 - ERROR_NOT_ALL_ASSIGNED = 1300, - ERROR_SOME_NOT_MAPPED, - ERROR_NO_QUOTAS_FOR_ACCOUNT, - ERROR_LOCAL_USER_SESSION_KEY, - ERROR_NULL_LM_PASSWORD, - ERROR_UNKNOWN_REVISION, - ERROR_REVISION_MISMATCH, - ERROR_INVALID_OWNER, - ERROR_INVALID_PRIMARY_GROUP, - ERROR_NO_IMPERSONATION_TOKEN, - ERROR_CANT_DISABLE_MANDATORY, - ERROR_NO_LOGON_SERVERS, - ERROR_NO_SUCH_LOGON_SESSION, - ERROR_NO_SUCH_PRIVILEGE, - ERROR_PRIVILEGE_NOT_HELD, - ERROR_INVALID_ACCOUNT_NAME, - ERROR_USER_EXISTS, - ERROR_NO_SUCH_USER, - ERROR_GROUP_EXISTS, - ERROR_NO_SUCH_GROUP, - ERROR_MEMBER_IN_GROUP, - ERROR_MEMBER_NOT_IN_GROUP, - ERROR_LAST_ADMIN, - ERROR_WRONG_PASSWORD, - ERROR_ILL_FORMED_PASSWORD, - ERROR_PASSWORD_RESTRICTION, - ERROR_LOGON_FAILURE, - ERROR_ACCOUNT_RESTRICTION, - ERROR_INVALID_LOGON_HOURS, - ERROR_INVALID_WORKSTATION, - ERROR_PASSWORD_EXPIRED, - ERROR_ACCOUNT_DISABLED, - ERROR_NONE_MAPPED, - ERROR_TOO_MANY_LUIDS_REQUESTED, - ERROR_LUIDS_EXHAUSTED, - ERROR_INVALID_SUB_AUTHORITY, - ERROR_INVALID_ACL, - ERROR_INVALID_SID, - ERROR_INVALID_SECURITY_DESCR, // = 1338 - ERROR_BAD_INHERITANCE_ACL = 1340, - ERROR_SERVER_DISABLED, - ERROR_SERVER_NOT_DISABLED, - ERROR_INVALID_ID_AUTHORITY, - ERROR_ALLOTTED_SPACE_EXCEEDED, - ERROR_INVALID_GROUP_ATTRIBUTES, - ERROR_BAD_IMPERSONATION_LEVEL, - ERROR_CANT_OPEN_ANONYMOUS, - ERROR_BAD_VALIDATION_CLASS, - ERROR_BAD_TOKEN_TYPE, - ERROR_NO_SECURITY_ON_OBJECT, - ERROR_CANT_ACCESS_DOMAIN_INFO, - ERROR_INVALID_SERVER_STATE, - ERROR_INVALID_DOMAIN_STATE, - ERROR_INVALID_DOMAIN_ROLE, - ERROR_NO_SUCH_DOMAIN, - ERROR_DOMAIN_EXISTS, - ERROR_DOMAIN_LIMIT_EXCEEDED, - ERROR_INTERNAL_DB_CORRUPTION, - ERROR_INTERNAL_ERROR, - ERROR_GENERIC_NOT_MAPPED, - ERROR_BAD_DESCRIPTOR_FORMAT, - ERROR_NOT_LOGON_PROCESS, - ERROR_LOGON_SESSION_EXISTS, - ERROR_NO_SUCH_PACKAGE, - ERROR_BAD_LOGON_SESSION_STATE, - ERROR_LOGON_SESSION_COLLISION, - ERROR_INVALID_LOGON_TYPE, - ERROR_CANNOT_IMPERSONATE, - ERROR_RXACT_INVALID_STATE, - ERROR_RXACT_COMMIT_FAILURE, - ERROR_SPECIAL_ACCOUNT, - ERROR_SPECIAL_GROUP, - ERROR_SPECIAL_USER, - ERROR_MEMBERS_PRIMARY_GROUP, - ERROR_TOKEN_ALREADY_IN_USE, - ERROR_NO_SUCH_ALIAS, - ERROR_MEMBER_NOT_IN_ALIAS, - ERROR_MEMBER_IN_ALIAS, - ERROR_ALIAS_EXISTS, - ERROR_LOGON_NOT_GRANTED, - ERROR_TOO_MANY_SECRETS, - ERROR_SECRET_TOO_LONG, - ERROR_INTERNAL_DB_ERROR, - ERROR_TOO_MANY_CONTEXT_IDS, - ERROR_LOGON_TYPE_NOT_GRANTED, - ERROR_NT_CROSS_ENCRYPTION_REQUIRED, - ERROR_NO_SUCH_MEMBER, - ERROR_INVALID_MEMBER, - ERROR_TOO_MANY_SIDS, - ERROR_LM_CROSS_ENCRYPTION_REQUIRED, - ERROR_NO_INHERITANCE, - ERROR_FILE_CORRUPT, - ERROR_DISK_CORRUPT, - ERROR_NO_USER_SESSION_KEY, - ERROR_LICENSE_QUOTA_EXCEEDED, - ERROR_WRONG_TARGET_NAME, - ERROR_MUTUAL_AUTH_FAILED, - ERROR_TIME_SKEW, - ERROR_CURRENT_DOMAIN_NOT_ALLOWED, - ERROR_INVALID_WINDOW_HANDLE, - ERROR_INVALID_MENU_HANDLE, - ERROR_INVALID_CURSOR_HANDLE, - ERROR_INVALID_ACCEL_HANDLE, - ERROR_INVALID_HOOK_HANDLE, - ERROR_INVALID_DWP_HANDLE, - ERROR_TLW_WITH_WSCHILD, - ERROR_CANNOT_FIND_WND_CLASS, - ERROR_WINDOW_OF_OTHER_THREAD, - ERROR_HOTKEY_ALREADY_REGISTERED, - ERROR_CLASS_ALREADY_EXISTS, - ERROR_CLASS_DOES_NOT_EXIST, - ERROR_CLASS_HAS_WINDOWS, - ERROR_INVALID_INDEX, - ERROR_INVALID_ICON_HANDLE, - ERROR_PRIVATE_DIALOG_INDEX, - ERROR_LISTBOX_ID_NOT_FOUND, - ERROR_NO_WILDCARD_CHARACTERS, - ERROR_CLIPBOARD_NOT_OPEN, - ERROR_HOTKEY_NOT_REGISTERED, - ERROR_WINDOW_NOT_DIALOG, - ERROR_CONTROL_ID_NOT_FOUND, - ERROR_INVALID_COMBOBOX_MESSAGE, - ERROR_WINDOW_NOT_COMBOBOX, - ERROR_INVALID_EDIT_HEIGHT, - ERROR_DC_NOT_FOUND, - ERROR_INVALID_HOOK_FILTER, - ERROR_INVALID_FILTER_PROC, - ERROR_HOOK_NEEDS_HMOD, - ERROR_GLOBAL_ONLY_HOOK, - ERROR_JOURNAL_HOOK_SET, - ERROR_HOOK_NOT_INSTALLED, - ERROR_INVALID_LB_MESSAGE, - ERROR_SETCOUNT_ON_BAD_LB, - ERROR_LB_WITHOUT_TABSTOPS, - ERROR_DESTROY_OBJECT_OF_OTHER_THREAD, - ERROR_CHILD_WINDOW_MENU, - ERROR_NO_SYSTEM_MENU, - ERROR_INVALID_MSGBOX_STYLE, - ERROR_INVALID_SPI_VALUE, - ERROR_SCREEN_ALREADY_LOCKED, - ERROR_HWNDS_HAVE_DIFF_PARENT, - ERROR_NOT_CHILD_WINDOW, - ERROR_INVALID_GW_COMMAND, - ERROR_INVALID_THREAD_ID, - ERROR_NON_MDICHILD_WINDOW, - ERROR_POPUP_ALREADY_ACTIVE, - ERROR_NO_SCROLLBARS, - ERROR_INVALID_SCROLLBAR_RANGE, - ERROR_INVALID_SHOWWIN_COMMAND, - ERROR_NO_SYSTEM_RESOURCES, - ERROR_NONPAGED_SYSTEM_RESOURCES, - ERROR_PAGED_SYSTEM_RESOURCES, - ERROR_WORKING_SET_QUOTA, - ERROR_PAGEFILE_QUOTA, - ERROR_COMMITMENT_LIMIT, - ERROR_MENU_ITEM_NOT_FOUND, - ERROR_INVALID_KEYBOARD_HANDLE, - ERROR_HOOK_TYPE_NOT_ALLOWED, - ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION, - ERROR_TIMEOUT, - ERROR_INVALID_MONITOR_HANDLE, // = 1461 - ERROR_EVENTLOG_FILE_CORRUPT = 1500, - ERROR_EVENTLOG_CANT_START, - ERROR_LOG_FILE_FULL, - ERROR_EVENTLOG_FILE_CHANGED, // = 1503 - ERROR_INSTALL_SERVICE_FAILURE = 1601, - ERROR_INSTALL_USEREXIT, - ERROR_INSTALL_FAILURE, - ERROR_INSTALL_SUSPEND, - ERROR_UNKNOWN_PRODUCT, - ERROR_UNKNOWN_FEATURE, - ERROR_UNKNOWN_COMPONENT, - ERROR_UNKNOWN_PROPERTY, - ERROR_INVALID_HANDLE_STATE, - ERROR_BAD_CONFIGURATION, - ERROR_INDEX_ABSENT, - ERROR_INSTALL_SOURCE_ABSENT, - ERROR_INSTALL_PACKAGE_VERSION, - ERROR_PRODUCT_UNINSTALLED, - ERROR_BAD_QUERY_SYNTAX, - ERROR_INVALID_FIELD, - ERROR_DEVICE_REMOVED, - ERROR_INSTALL_ALREADY_RUNNING, - ERROR_INSTALL_PACKAGE_OPEN_FAILED, - ERROR_INSTALL_PACKAGE_INVALID, - ERROR_INSTALL_UI_FAILURE, - ERROR_INSTALL_LOG_FAILURE, - ERROR_INSTALL_LANGUAGE_UNSUPPORTED, - ERROR_INSTALL_TRANSFORM_FAILURE, - ERROR_INSTALL_PACKAGE_REJECTED, - ERROR_FUNCTION_NOT_CALLED, - ERROR_FUNCTION_FAILED, - ERROR_INVALID_TABLE, - ERROR_DATATYPE_MISMATCH, - ERROR_UNSUPPORTED_TYPE, - ERROR_CREATE_FAILED, - ERROR_INSTALL_TEMP_UNWRITABLE, - ERROR_INSTALL_PLATFORM_UNSUPPORTED, - ERROR_INSTALL_NOTUSED, - ERROR_PATCH_PACKAGE_OPEN_FAILED, - ERROR_PATCH_PACKAGE_INVALID, - ERROR_PATCH_PACKAGE_UNSUPPORTED, - ERROR_PRODUCT_VERSION, - ERROR_INVALID_COMMAND_LINE, - ERROR_INSTALL_REMOTE_DISALLOWED, - ERROR_SUCCESS_REBOOT_INITIATED, - ERROR_PATCH_TARGET_NOT_FOUND, - ERROR_PATCH_PACKAGE_REJECTED, - ERROR_INSTALL_TRANSFORM_REJECTED, - ERROR_INSTALL_REMOTE_PROHIBITED, // = 1645 - RPC_S_INVALID_STRING_BINDING = 1700, - RPC_S_WRONG_KIND_OF_BINDING, - RPC_S_INVALID_BINDING, - RPC_S_PROTSEQ_NOT_SUPPORTED, - RPC_S_INVALID_RPC_PROTSEQ, - RPC_S_INVALID_STRING_UUID, - RPC_S_INVALID_ENDPOINT_FORMAT, - RPC_S_INVALID_NET_ADDR, - RPC_S_NO_ENDPOINT_FOUND, - RPC_S_INVALID_TIMEOUT, - RPC_S_OBJECT_NOT_FOUND, - RPC_S_ALREADY_REGISTERED, - RPC_S_TYPE_ALREADY_REGISTERED, - RPC_S_ALREADY_LISTENING, - RPC_S_NO_PROTSEQS_REGISTERED, - RPC_S_NOT_LISTENING, - RPC_S_UNKNOWN_MGR_TYPE, - RPC_S_UNKNOWN_IF, - RPC_S_NO_BINDINGS, - RPC_S_NO_PROTSEQS, - RPC_S_CANT_CREATE_ENDPOINT, - RPC_S_OUT_OF_RESOURCES, - RPC_S_SERVER_UNAVAILABLE, - RPC_S_SERVER_TOO_BUSY, - RPC_S_INVALID_NETWORK_OPTIONS, - RPC_S_NO_CALL_ACTIVE, - RPC_S_CALL_FAILED, - RPC_S_CALL_FAILED_DNE, - RPC_S_PROTOCOL_ERROR, // = 1728 - RPC_S_UNSUPPORTED_TRANS_SYN = 1730, - RPC_S_UNSUPPORTED_TYPE = 1732, - RPC_S_INVALID_TAG, - RPC_S_INVALID_BOUND, - RPC_S_NO_ENTRY_NAME, - RPC_S_INVALID_NAME_SYNTAX, - RPC_S_UNSUPPORTED_NAME_SYNTAX, // = 1737 - RPC_S_UUID_NO_ADDRESS = 1739, - RPC_S_DUPLICATE_ENDPOINT, - RPC_S_UNKNOWN_AUTHN_TYPE, - RPC_S_MAX_CALLS_TOO_SMALL, - RPC_S_STRING_TOO_LONG, - RPC_S_PROTSEQ_NOT_FOUND, - RPC_S_PROCNUM_OUT_OF_RANGE, - RPC_S_BINDING_HAS_NO_AUTH, - RPC_S_UNKNOWN_AUTHN_SERVICE, - RPC_S_UNKNOWN_AUTHN_LEVEL, - RPC_S_INVALID_AUTH_IDENTITY, - RPC_S_UNKNOWN_AUTHZ_SERVICE, - EPT_S_INVALID_ENTRY, - EPT_S_CANT_PERFORM_OP, - EPT_S_NOT_REGISTERED, - RPC_S_NOTHING_TO_EXPORT, - RPC_S_INCOMPLETE_NAME, - RPC_S_INVALID_VERS_OPTION, - RPC_S_NO_MORE_MEMBERS, - RPC_S_NOT_ALL_OBJS_UNEXPORTED, - RPC_S_INTERFACE_NOT_FOUND, - RPC_S_ENTRY_ALREADY_EXISTS, - RPC_S_ENTRY_NOT_FOUND, - RPC_S_NAME_SERVICE_UNAVAILABLE, - RPC_S_INVALID_NAF_ID, - RPC_S_CANNOT_SUPPORT, - RPC_S_NO_CONTEXT_AVAILABLE, - RPC_S_INTERNAL_ERROR, - RPC_S_ZERO_DIVIDE, - RPC_S_ADDRESS_ERROR, - RPC_S_FP_DIV_ZERO, - RPC_S_FP_UNDERFLOW, - RPC_S_FP_OVERFLOW, - RPC_X_NO_MORE_ENTRIES, - RPC_X_SS_CHAR_TRANS_OPEN_FAIL, - RPC_X_SS_CHAR_TRANS_SHORT_FILE, - RPC_X_SS_IN_NULL_CONTEXT, // = 1775 - RPC_X_SS_CONTEXT_DAMAGED = 1777, - RPC_X_SS_HANDLES_MISMATCH, - RPC_X_SS_CANNOT_GET_CALL_HANDLE, - RPC_X_NULL_REF_POINTER, - RPC_X_ENUM_VALUE_OUT_OF_RANGE, - RPC_X_BYTE_COUNT_TOO_SMALL, - RPC_X_BAD_STUB_DATA, - ERROR_INVALID_USER_BUFFER, - ERROR_UNRECOGNIZED_MEDIA, - ERROR_NO_TRUST_LSA_SECRET, - ERROR_NO_TRUST_SAM_ACCOUNT, - ERROR_TRUSTED_DOMAIN_FAILURE, - ERROR_TRUSTED_RELATIONSHIP_FAILURE, - ERROR_TRUST_FAILURE, - RPC_S_CALL_IN_PROGRESS, - ERROR_NETLOGON_NOT_STARTED, - ERROR_ACCOUNT_EXPIRED, - ERROR_REDIRECTOR_HAS_OPEN_HANDLES, - ERROR_PRINTER_DRIVER_ALREADY_INSTALLED, - ERROR_UNKNOWN_PORT, - ERROR_UNKNOWN_PRINTER_DRIVER, - ERROR_UNKNOWN_PRINTPROCESSOR, - ERROR_INVALID_SEPARATOR_FILE, - ERROR_INVALID_PRIORITY, - ERROR_INVALID_PRINTER_NAME, - ERROR_PRINTER_ALREADY_EXISTS, - ERROR_INVALID_PRINTER_COMMAND, - ERROR_INVALID_DATATYPE, - ERROR_INVALID_ENVIRONMENT, - RPC_S_NO_MORE_BINDINGS, - ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, - ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT, - ERROR_NOLOGON_SERVER_TRUST_ACCOUNT, - ERROR_DOMAIN_TRUST_INCONSISTENT, - ERROR_SERVER_HAS_OPEN_HANDLES, - ERROR_RESOURCE_DATA_NOT_FOUND, - ERROR_RESOURCE_TYPE_NOT_FOUND, - ERROR_RESOURCE_NAME_NOT_FOUND, - ERROR_RESOURCE_LANG_NOT_FOUND, - ERROR_NOT_ENOUGH_QUOTA, - RPC_S_NO_INTERFACES, - RPC_S_CALL_CANCELLED, - RPC_S_BINDING_INCOMPLETE, - RPC_S_COMM_FAILURE, - RPC_S_UNSUPPORTED_AUTHN_LEVEL, - RPC_S_NO_PRINC_NAME, - RPC_S_NOT_RPC_ERROR, - RPC_S_UUID_LOCAL_ONLY, - RPC_S_SEC_PKG_ERROR, - RPC_S_NOT_CANCELLED, - RPC_X_INVALID_ES_ACTION, - RPC_X_WRONG_ES_VERSION, - RPC_X_WRONG_STUB_VERSION, - RPC_X_INVALID_PIPE_OBJECT, - RPC_X_WRONG_PIPE_ORDER, - RPC_X_WRONG_PIPE_VERSION, // = 1832 - RPC_S_GROUP_MEMBER_NOT_FOUND = 1898, - EPT_S_CANT_CREATE, - RPC_S_INVALID_OBJECT, - ERROR_INVALID_TIME, - ERROR_INVALID_FORM_NAME, - ERROR_INVALID_FORM_SIZE, - ERROR_ALREADY_WAITING, - ERROR_PRINTER_DELETED, - ERROR_INVALID_PRINTER_STATE, - ERROR_PASSWORD_MUST_CHANGE, - ERROR_DOMAIN_CONTROLLER_NOT_FOUND, - ERROR_ACCOUNT_LOCKED_OUT, - OR_INVALID_OXID, - OR_INVALID_OID, - OR_INVALID_SET, - RPC_S_SEND_INCOMPLETE, - RPC_S_INVALID_ASYNC_HANDLE, - RPC_S_INVALID_ASYNC_CALL, - RPC_X_PIPE_CLOSED, - RPC_X_PIPE_DISCIPLINE_ERROR, - RPC_X_PIPE_EMPTY, - ERROR_NO_SITENAME, - ERROR_CANT_ACCESS_FILE, - ERROR_CANT_RESOLVE_FILENAME, - RPC_S_ENTRY_TYPE_MISMATCH, - RPC_S_NOT_ALL_OBJS_EXPORTED, - RPC_S_INTERFACE_NOT_EXPORTED, - RPC_S_PROFILE_NOT_ADDED, - RPC_S_PRF_ELT_NOT_ADDED, - RPC_S_PRF_ELT_NOT_REMOVED, - RPC_S_GRP_ELT_NOT_ADDED, - RPC_S_GRP_ELT_NOT_REMOVED, - ERROR_KM_DRIVER_BLOCKED, - ERROR_CONTEXT_EXPIRED, - ERROR_PER_USER_TRUST_QUOTA_EXCEEDED, - ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED, - ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED, // = 1934 - ERROR_INVALID_PIXEL_FORMAT = 2000, - ERROR_BAD_DRIVER, - ERROR_INVALID_WINDOW_STYLE, - ERROR_METAFILE_NOT_SUPPORTED, - ERROR_TRANSFORM_NOT_SUPPORTED, - ERROR_CLIPPING_NOT_SUPPORTED, // = 2005 - ERROR_INVALID_CMM = 2010, - ERROR_INVALID_PROFILE, - ERROR_TAG_NOT_FOUND, - ERROR_TAG_NOT_PRESENT, - ERROR_DUPLICATE_TAG, - ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE, - ERROR_PROFILE_NOT_FOUND, - ERROR_INVALID_COLORSPACE, - ERROR_ICM_NOT_ENABLED, - ERROR_DELETING_ICM_XFORM, - ERROR_INVALID_TRANSFORM, - ERROR_COLORSPACE_MISMATCH, - ERROR_INVALID_COLORINDEX, // = 2022 - ERROR_CONNECTED_OTHER_PASSWORD = 2108, - ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT, // = 2109 - ERROR_BAD_USERNAME = 2202, - ERROR_NOT_CONNECTED = 2250, - ERROR_OPEN_FILES = 2401, - ERROR_ACTIVE_CONNECTIONS, // = 2402 - ERROR_DEVICE_IN_USE = 2404, - ERROR_UNKNOWN_PRINT_MONITOR = 3000, - ERROR_PRINTER_DRIVER_IN_USE, - ERROR_SPOOL_FILE_NOT_FOUND, - ERROR_SPL_NO_STARTDOC, - ERROR_SPL_NO_ADDJOB, - ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED, - ERROR_PRINT_MONITOR_ALREADY_INSTALLED, - ERROR_INVALID_PRINT_MONITOR, - ERROR_PRINT_MONITOR_IN_USE, - ERROR_PRINTER_HAS_JOBS_QUEUED, - ERROR_SUCCESS_REBOOT_REQUIRED, - ERROR_SUCCESS_RESTART_REQUIRED, - ERROR_PRINTER_NOT_FOUND, - ERROR_PRINTER_DRIVER_WARNED, - ERROR_PRINTER_DRIVER_BLOCKED, // = 3014 - ERROR_WINS_INTERNAL = 4000, - ERROR_CAN_NOT_DEL_LOCAL_WINS, - ERROR_STATIC_INIT, - ERROR_INC_BACKUP, - ERROR_FULL_BACKUP, - ERROR_REC_NON_EXISTENT, - ERROR_RPL_NOT_ALLOWED, // = 4006 - ERROR_DHCP_ADDRESS_CONFLICT = 4100, - ERROR_WMI_GUID_NOT_FOUND = 4200, - ERROR_WMI_INSTANCE_NOT_FOUND, - ERROR_WMI_ITEMID_NOT_FOUND, - ERROR_WMI_TRY_AGAIN, - ERROR_WMI_DP_NOT_FOUND, - ERROR_WMI_UNRESOLVED_INSTANCE_REF, - ERROR_WMI_ALREADY_ENABLED, - ERROR_WMI_GUID_DISCONNECTED, - ERROR_WMI_SERVER_UNAVAILABLE, - ERROR_WMI_DP_FAILED, - ERROR_WMI_INVALID_MOF, - ERROR_WMI_INVALID_REGINFO, - ERROR_WMI_ALREADY_DISABLED, - ERROR_WMI_READ_ONLY, - ERROR_WMI_SET_FAILURE, // = 4214 - ERROR_INVALID_MEDIA = 4300, - ERROR_INVALID_LIBRARY, - ERROR_INVALID_MEDIA_POOL, - ERROR_DRIVE_MEDIA_MISMATCH, - ERROR_MEDIA_OFFLINE, - ERROR_LIBRARY_OFFLINE, - ERROR_EMPTY, - ERROR_NOT_EMPTY, - ERROR_MEDIA_UNAVAILABLE, - ERROR_RESOURCE_DISABLED, - ERROR_INVALID_CLEANER, - ERROR_UNABLE_TO_CLEAN, - ERROR_OBJECT_NOT_FOUND, - ERROR_DATABASE_FAILURE, - ERROR_DATABASE_FULL, - ERROR_MEDIA_INCOMPATIBLE, - ERROR_RESOURCE_NOT_PRESENT, - ERROR_INVALID_OPERATION, - ERROR_MEDIA_NOT_AVAILABLE, - ERROR_DEVICE_NOT_AVAILABLE, - ERROR_REQUEST_REFUSED, - ERROR_INVALID_DRIVE_OBJECT, - ERROR_LIBRARY_FULL, - ERROR_MEDIUM_NOT_ACCESSIBLE, - ERROR_UNABLE_TO_LOAD_MEDIUM, - ERROR_UNABLE_TO_INVENTORY_DRIVE, - ERROR_UNABLE_TO_INVENTORY_SLOT, - ERROR_UNABLE_TO_INVENTORY_TRANSPORT, - ERROR_TRANSPORT_FULL, - ERROR_CONTROLLING_IEPORT, - ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA, - ERROR_CLEANER_SLOT_SET, - ERROR_CLEANER_SLOT_NOT_SET, - ERROR_CLEANER_CARTRIDGE_SPENT, - ERROR_UNEXPECTED_OMID, - ERROR_CANT_DELETE_LAST_ITEM, - ERROR_MESSAGE_EXCEEDS_MAX_SIZE, - ERROR_VOLUME_CONTAINS_SYS_FILES, - ERROR_INDIGENOUS_TYPE, - ERROR_NO_SUPPORTING_DRIVES, - ERROR_CLEANER_CARTRIDGE_INSTALLED, // = 4340 - ERROR_FILE_OFFLINE = 4350, - ERROR_REMOTE_STORAGE_NOT_ACTIVE, - ERROR_REMOTE_STORAGE_MEDIA_ERROR, // = 4352 - ERROR_NOT_A_REPARSE_POINT = 4390, - ERROR_REPARSE_ATTRIBUTE_CONFLICT, - ERROR_INVALID_REPARSE_DATA, - ERROR_REPARSE_TAG_INVALID, - ERROR_REPARSE_TAG_MISMATCH, // = 4394 - ERROR_VOLUME_NOT_SIS_ENABLED = 4500, - ERROR_DEPENDENT_RESOURCE_EXISTS = 5001, - ERROR_DEPENDENCY_NOT_FOUND, - ERROR_DEPENDENCY_ALREADY_EXISTS, - ERROR_RESOURCE_NOT_ONLINE, - ERROR_HOST_NODE_NOT_AVAILABLE, - ERROR_RESOURCE_NOT_AVAILABLE, - ERROR_RESOURCE_NOT_FOUND, - ERROR_SHUTDOWN_CLUSTER, - ERROR_CANT_EVICT_ACTIVE_NODE, - ERROR_OBJECT_ALREADY_EXISTS, - ERROR_OBJECT_IN_LIST, - ERROR_GROUP_NOT_AVAILABLE, - ERROR_GROUP_NOT_FOUND, - ERROR_GROUP_NOT_ONLINE, - ERROR_HOST_NODE_NOT_RESOURCE_OWNER, - ERROR_HOST_NODE_NOT_GROUP_OWNER, - ERROR_RESMON_CREATE_FAILED, - ERROR_RESMON_ONLINE_FAILED, - ERROR_RESOURCE_ONLINE, - ERROR_QUORUM_RESOURCE, - ERROR_NOT_QUORUM_CAPABLE, - ERROR_CLUSTER_SHUTTING_DOWN, - ERROR_INVALID_STATE, - ERROR_RESOURCE_PROPERTIES_STORED, - ERROR_NOT_QUORUM_CLASS, - ERROR_CORE_RESOURCE, - ERROR_QUORUM_RESOURCE_ONLINE_FAILED, - ERROR_QUORUMLOG_OPEN_FAILED, - ERROR_CLUSTERLOG_CORRUPT, - ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE, - ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE, - ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND, - ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE, - ERROR_QUORUM_OWNER_ALIVE, - ERROR_NETWORK_NOT_AVAILABLE, - ERROR_NODE_NOT_AVAILABLE, - ERROR_ALL_NODES_NOT_AVAILABLE, - ERROR_RESOURCE_FAILED, - ERROR_CLUSTER_INVALID_NODE, - ERROR_CLUSTER_NODE_EXISTS, - ERROR_CLUSTER_JOIN_IN_PROGRESS, - ERROR_CLUSTER_NODE_NOT_FOUND, - ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND, - ERROR_CLUSTER_NETWORK_EXISTS, - ERROR_CLUSTER_NETWORK_NOT_FOUND, - ERROR_CLUSTER_NETINTERFACE_EXISTS, - ERROR_CLUSTER_NETINTERFACE_NOT_FOUND, - ERROR_CLUSTER_INVALID_REQUEST, - ERROR_CLUSTER_INVALID_NETWORK_PROVIDER, - ERROR_CLUSTER_NODE_DOWN, - ERROR_CLUSTER_NODE_UNREACHABLE, - ERROR_CLUSTER_NODE_NOT_MEMBER, - ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS, - ERROR_CLUSTER_INVALID_NETWORK, // = 5054 - ERROR_CLUSTER_NODE_UP = 5056, - ERROR_CLUSTER_IPADDR_IN_USE, - ERROR_CLUSTER_NODE_NOT_PAUSED, - ERROR_CLUSTER_NO_SECURITY_CONTEXT, - ERROR_CLUSTER_NETWORK_NOT_INTERNAL, - ERROR_CLUSTER_NODE_ALREADY_UP, - ERROR_CLUSTER_NODE_ALREADY_DOWN, - ERROR_CLUSTER_NETWORK_ALREADY_ONLINE, - ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE, - ERROR_CLUSTER_NODE_ALREADY_MEMBER, - ERROR_CLUSTER_LAST_INTERNAL_NETWORK, - ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS, - ERROR_INVALID_OPERATION_ON_QUORUM, - ERROR_DEPENDENCY_NOT_ALLOWED, - ERROR_CLUSTER_NODE_PAUSED, - ERROR_NODE_CANT_HOST_RESOURCE, - ERROR_CLUSTER_NODE_NOT_READY, - ERROR_CLUSTER_NODE_SHUTTING_DOWN, - ERROR_CLUSTER_JOIN_ABORTED, - ERROR_CLUSTER_INCOMPATIBLE_VERSIONS, - ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED, - ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED, - ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND, - ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED, - ERROR_CLUSTER_RESNAME_NOT_FOUND, - ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED, - ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST, - ERROR_CLUSTER_DATABASE_SEQMISMATCH, - ERROR_RESMON_INVALID_STATE, - ERROR_CLUSTER_GUM_NOT_LOCKER, - ERROR_QUORUM_DISK_NOT_FOUND, - ERROR_DATABASE_BACKUP_CORRUPT, - ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT, - ERROR_RESOURCE_PROPERTY_UNCHANGEABLE, // = 5089 - ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890, - ERROR_CLUSTER_QUORUMLOG_NOT_FOUND, - ERROR_CLUSTER_MEMBERSHIP_HALT, - ERROR_CLUSTER_INSTANCE_ID_MISMATCH, - ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP, - ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH, - ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP, - ERROR_CLUSTER_PARAMETER_MISMATCH, - ERROR_NODE_CANNOT_BE_CLUSTERED, - ERROR_CLUSTER_WRONG_OS_VERSION, - ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME, - ERROR_CLUSCFG_ALREADY_COMMITTED, - ERROR_CLUSCFG_ROLLBACK_FAILED, - ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT, - ERROR_CLUSTER_OLD_VERSION, - ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME, // = 5905 - ERROR_ENCRYPTION_FAILED = 6000, - ERROR_DECRYPTION_FAILED, - ERROR_FILE_ENCRYPTED, - ERROR_NO_RECOVERY_POLICY, - ERROR_NO_EFS, - ERROR_WRONG_EFS, - ERROR_NO_USER_KEYS, - ERROR_FILE_NOT_ENCRYPTED, - ERROR_NOT_EXPORT_FORMAT, - ERROR_FILE_READ_ONLY, - ERROR_DIR_EFS_DISALLOWED, - ERROR_EFS_SERVER_NOT_TRUSTED, - ERROR_BAD_RECOVERY_POLICY, - ERROR_EFS_ALG_BLOB_TOO_BIG, - ERROR_VOLUME_NOT_SUPPORT_EFS, - ERROR_EFS_DISABLED, - ERROR_EFS_VERSION_NOT_SUPPORT, // = 6016 - ERROR_NO_BROWSER_SERVERS_FOUND = 6118, - SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200, + ERROR_SUCCESS = 0, + NO_ERROR = 0, + ERROR_INVALID_FUNCTION, + ERROR_FILE_NOT_FOUND, + ERROR_PATH_NOT_FOUND, + ERROR_TOO_MANY_OPEN_FILES, + ERROR_ACCESS_DENIED, + ERROR_INVALID_HANDLE, + ERROR_ARENA_TRASHED, + ERROR_NOT_ENOUGH_MEMORY, + ERROR_INVALID_BLOCK, + ERROR_BAD_ENVIRONMENT, + ERROR_BAD_FORMAT, + ERROR_INVALID_ACCESS, + ERROR_INVALID_DATA, + ERROR_OUTOFMEMORY, + ERROR_INVALID_DRIVE, + ERROR_CURRENT_DIRECTORY, + ERROR_NOT_SAME_DEVICE, + ERROR_NO_MORE_FILES, + ERROR_WRITE_PROTECT, + ERROR_BAD_UNIT, + ERROR_NOT_READY, + ERROR_BAD_COMMAND, + ERROR_CRC, + ERROR_BAD_LENGTH, + ERROR_SEEK, + ERROR_NOT_DOS_DISK, + ERROR_SECTOR_NOT_FOUND, + ERROR_OUT_OF_PAPER, + ERROR_WRITE_FAULT, + ERROR_READ_FAULT, + ERROR_GEN_FAILURE, + ERROR_SHARING_VIOLATION, + ERROR_LOCK_VIOLATION, + ERROR_WRONG_DISK, // = 34 + ERROR_SHARING_BUFFER_EXCEEDED = 36, + ERROR_HANDLE_EOF = 38, + ERROR_HANDLE_DISK_FULL, // = 39 + ERROR_NOT_SUPPORTED = 50, + ERROR_REM_NOT_LIST, + ERROR_DUP_NAME, + ERROR_BAD_NETPATH, + ERROR_NETWORK_BUSY, + ERROR_DEV_NOT_EXIST, + ERROR_TOO_MANY_CMDS, + ERROR_ADAP_HDW_ERR, + ERROR_BAD_NET_RESP, + ERROR_UNEXP_NET_ERR, + ERROR_BAD_REM_ADAP, + ERROR_PRINTQ_FULL, + ERROR_NO_SPOOL_SPACE, + ERROR_PRINT_CANCELLED, + ERROR_NETNAME_DELETED, + ERROR_NETWORK_ACCESS_DENIED, + ERROR_BAD_DEV_TYPE, + ERROR_BAD_NET_NAME, + ERROR_TOO_MANY_NAMES, + ERROR_TOO_MANY_SESS, + ERROR_SHARING_PAUSED, + ERROR_REQ_NOT_ACCEP, + ERROR_REDIR_PAUSED, // = 72 + ERROR_FILE_EXISTS = 80, + ERROR_CANNOT_MAKE = 82, + ERROR_FAIL_I24, + ERROR_OUT_OF_STRUCTURES, + ERROR_ALREADY_ASSIGNED, + ERROR_INVALID_PASSWORD, + ERROR_INVALID_PARAMETER, + ERROR_NET_WRITE_FAULT, + ERROR_NO_PROC_SLOTS, // = 89 + ERROR_TOO_MANY_SEMAPHORES = 100, + ERROR_EXCL_SEM_ALREADY_OWNED, + ERROR_SEM_IS_SET, + ERROR_TOO_MANY_SEM_REQUESTS, + ERROR_INVALID_AT_INTERRUPT_TIME, + ERROR_SEM_OWNER_DIED, + ERROR_SEM_USER_LIMIT, + ERROR_DISK_CHANGE, + ERROR_DRIVE_LOCKED, + ERROR_BROKEN_PIPE, + ERROR_OPEN_FAILED, + ERROR_BUFFER_OVERFLOW, + ERROR_DISK_FULL, + ERROR_NO_MORE_SEARCH_HANDLES, + ERROR_INVALID_TARGET_HANDLE, // = 114 + ERROR_INVALID_CATEGORY = 117, + ERROR_INVALID_VERIFY_SWITCH, + ERROR_BAD_DRIVER_LEVEL, + ERROR_CALL_NOT_IMPLEMENTED, + ERROR_SEM_TIMEOUT, + ERROR_INSUFFICIENT_BUFFER, + ERROR_INVALID_NAME, + ERROR_INVALID_LEVEL, + ERROR_NO_VOLUME_LABEL, + ERROR_MOD_NOT_FOUND, + ERROR_PROC_NOT_FOUND, + ERROR_WAIT_NO_CHILDREN, + ERROR_CHILD_NOT_COMPLETE, + ERROR_DIRECT_ACCESS_HANDLE, + ERROR_NEGATIVE_SEEK, + ERROR_SEEK_ON_DEVICE, + ERROR_IS_JOIN_TARGET, + ERROR_IS_JOINED, + ERROR_IS_SUBSTED, + ERROR_NOT_JOINED, + ERROR_NOT_SUBSTED, + ERROR_JOIN_TO_JOIN, + ERROR_SUBST_TO_SUBST, + ERROR_JOIN_TO_SUBST, + ERROR_SUBST_TO_JOIN, + ERROR_BUSY_DRIVE, + ERROR_SAME_DRIVE, + ERROR_DIR_NOT_ROOT, + ERROR_DIR_NOT_EMPTY, + ERROR_IS_SUBST_PATH, + ERROR_IS_JOIN_PATH, + ERROR_PATH_BUSY, + ERROR_IS_SUBST_TARGET, + ERROR_SYSTEM_TRACE, + ERROR_INVALID_EVENT_COUNT, + ERROR_TOO_MANY_MUXWAITERS, + ERROR_INVALID_LIST_FORMAT, + ERROR_LABEL_TOO_LONG, + ERROR_TOO_MANY_TCBS, + ERROR_SIGNAL_REFUSED, + ERROR_DISCARDED, + ERROR_NOT_LOCKED, + ERROR_BAD_THREADID_ADDR, + ERROR_BAD_ARGUMENTS, + ERROR_BAD_PATHNAME, + ERROR_SIGNAL_PENDING, // = 162 + ERROR_MAX_THRDS_REACHED = 164, + ERROR_LOCK_FAILED = 167, + ERROR_BUSY = 170, + ERROR_CANCEL_VIOLATION = 173, + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED, // = 174 + ERROR_INVALID_SEGMENT_NUMBER = 180, + ERROR_INVALID_ORDINAL = 182, + ERROR_ALREADY_EXISTS, // = 183 + ERROR_INVALID_FLAG_NUMBER = 186, + ERROR_SEM_NOT_FOUND, + ERROR_INVALID_STARTING_CODESEG, + ERROR_INVALID_STACKSEG, + ERROR_INVALID_MODULETYPE, + ERROR_INVALID_EXE_SIGNATURE, + ERROR_EXE_MARKED_INVALID, + ERROR_BAD_EXE_FORMAT, + ERROR_ITERATED_DATA_EXCEEDS_64k, + ERROR_INVALID_MINALLOCSIZE, + ERROR_DYNLINK_FROM_INVALID_RING, + ERROR_IOPL_NOT_ENABLED, + ERROR_INVALID_SEGDPL, + ERROR_AUTODATASEG_EXCEEDS_64k, + ERROR_RING2SEG_MUST_BE_MOVABLE, + ERROR_RELOC_CHAIN_XEEDS_SEGLIM, + ERROR_INFLOOP_IN_RELOC_CHAIN, + ERROR_ENVVAR_NOT_FOUND, // = 203 + ERROR_NO_SIGNAL_SENT = 205, + ERROR_FILENAME_EXCED_RANGE, + ERROR_RING2_STACK_IN_USE, + ERROR_META_EXPANSION_TOO_LONG, + ERROR_INVALID_SIGNAL_NUMBER, + ERROR_THREAD_1_INACTIVE, // = 210 + ERROR_LOCKED = 212, + ERROR_TOO_MANY_MODULES = 214, + ERROR_NESTING_NOT_ALLOWED, + ERROR_EXE_MACHINE_TYPE_MISMATCH, + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY, + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY, // = 218 + ERROR_BAD_PIPE = 230, + ERROR_PIPE_BUSY, + ERROR_NO_DATA, + ERROR_PIPE_NOT_CONNECTED, + ERROR_MORE_DATA, // = 234 + ERROR_VC_DISCONNECTED = 240, + ERROR_INVALID_EA_NAME = 254, + ERROR_EA_LIST_INCONSISTENT, // = 255 + WAIT_TIMEOUT = 258, + ERROR_NO_MORE_ITEMS, // = 259 + ERROR_CANNOT_COPY = 266, + ERROR_DIRECTORY, // = 267 + ERROR_EAS_DIDNT_FIT = 275, + ERROR_EA_FILE_CORRUPT, + ERROR_EA_TABLE_FULL, + ERROR_INVALID_EA_HANDLE, // = 278 + ERROR_EAS_NOT_SUPPORTED = 282, + ERROR_NOT_OWNER = 288, + ERROR_TOO_MANY_POSTS = 298, + ERROR_PARTIAL_COPY, + ERROR_OPLOCK_NOT_GRANTED, + ERROR_INVALID_OPLOCK_PROTOCOL, + ERROR_DISK_TOO_FRAGMENTED, + ERROR_DELETE_PENDING, // = 303 + ERROR_MR_MID_NOT_FOUND = 317, + ERROR_SCOPE_NOT_FOUND, // = 318 + ERROR_INVALID_ADDRESS = 487, + ERROR_ARITHMETIC_OVERFLOW = 534, + ERROR_PIPE_CONNECTED, + ERROR_PIPE_LISTENING, // = 536 + ERROR_EA_ACCESS_DENIED = 994, + ERROR_OPERATION_ABORTED, + ERROR_IO_INCOMPLETE, + ERROR_IO_PENDING, + ERROR_NOACCESS, + ERROR_SWAPERROR, // = 999 + ERROR_STACK_OVERFLOW = 1001, + ERROR_INVALID_MESSAGE, + ERROR_CAN_NOT_COMPLETE, + ERROR_INVALID_FLAGS, + ERROR_UNRECOGNIZED_VOLUME, + ERROR_FILE_INVALID, + ERROR_FULLSCREEN_MODE, + ERROR_NO_TOKEN, + ERROR_BADDB, + ERROR_BADKEY, + ERROR_CANTOPEN, + ERROR_CANTREAD, + ERROR_CANTWRITE, + ERROR_REGISTRY_RECOVERED, + ERROR_REGISTRY_CORRUPT, + ERROR_REGISTRY_IO_FAILED, + ERROR_NOT_REGISTRY_FILE, + ERROR_KEY_DELETED, + ERROR_NO_LOG_SPACE, + ERROR_KEY_HAS_CHILDREN, + ERROR_CHILD_MUST_BE_VOLATILE, + ERROR_NOTIFY_ENUM_DIR, // = 1022 + ERROR_DEPENDENT_SERVICES_RUNNING = 1051, + ERROR_INVALID_SERVICE_CONTROL, + ERROR_SERVICE_REQUEST_TIMEOUT, + ERROR_SERVICE_NO_THREAD, + ERROR_SERVICE_DATABASE_LOCKED, + ERROR_SERVICE_ALREADY_RUNNING, + ERROR_INVALID_SERVICE_ACCOUNT, + ERROR_SERVICE_DISABLED, + ERROR_CIRCULAR_DEPENDENCY, + ERROR_SERVICE_DOES_NOT_EXIST, + ERROR_SERVICE_CANNOT_ACCEPT_CTRL, + ERROR_SERVICE_NOT_ACTIVE, + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT, + ERROR_EXCEPTION_IN_SERVICE, + ERROR_DATABASE_DOES_NOT_EXIST, + ERROR_SERVICE_SPECIFIC_ERROR, + ERROR_PROCESS_ABORTED, + ERROR_SERVICE_DEPENDENCY_FAIL, + ERROR_SERVICE_LOGON_FAILED, + ERROR_SERVICE_START_HANG, + ERROR_INVALID_SERVICE_LOCK, + ERROR_SERVICE_MARKED_FOR_DELETE, + ERROR_SERVICE_EXISTS, + ERROR_ALREADY_RUNNING_LKG, + ERROR_SERVICE_DEPENDENCY_DELETED, + ERROR_BOOT_ALREADY_ACCEPTED, + ERROR_SERVICE_NEVER_STARTED, + ERROR_DUPLICATE_SERVICE_NAME, + ERROR_DIFFERENT_SERVICE_ACCOUNT, + ERROR_CANNOT_DETECT_DRIVER_FAILURE, + ERROR_CANNOT_DETECT_PROCESS_ABORT, + ERROR_NO_RECOVERY_PROGRAM, + ERROR_SERVICE_NOT_IN_EXE, + ERROR_NOT_SAFEBOOT_SERVICE, // = 1084 + ERROR_END_OF_MEDIA = 1100, + ERROR_FILEMARK_DETECTED, + ERROR_BEGINNING_OF_MEDIA, + ERROR_SETMARK_DETECTED, + ERROR_NO_DATA_DETECTED, + ERROR_PARTITION_FAILURE, + ERROR_INVALID_BLOCK_LENGTH, + ERROR_DEVICE_NOT_PARTITIONED, + ERROR_UNABLE_TO_LOCK_MEDIA, + ERROR_UNABLE_TO_UNLOAD_MEDIA, + ERROR_MEDIA_CHANGED, + ERROR_BUS_RESET, + ERROR_NO_MEDIA_IN_DRIVE, + ERROR_NO_UNICODE_TRANSLATION, + ERROR_DLL_INIT_FAILED, + ERROR_SHUTDOWN_IN_PROGRESS, + ERROR_NO_SHUTDOWN_IN_PROGRESS, + ERROR_IO_DEVICE, + ERROR_SERIAL_NO_DEVICE, + ERROR_IRQ_BUSY, + ERROR_MORE_WRITES, + ERROR_COUNTER_TIMEOUT, + ERROR_FLOPPY_ID_MARK_NOT_FOUND, + ERROR_FLOPPY_WRONG_CYLINDER, + ERROR_FLOPPY_UNKNOWN_ERROR, + ERROR_FLOPPY_BAD_REGISTERS, + ERROR_DISK_RECALIBRATE_FAILED, + ERROR_DISK_OPERATION_FAILED, + ERROR_DISK_RESET_FAILED, + ERROR_EOM_OVERFLOW, + ERROR_NOT_ENOUGH_SERVER_MEMORY, + ERROR_POSSIBLE_DEADLOCK, + ERROR_MAPPED_ALIGNMENT, // = 1132 + ERROR_SET_POWER_STATE_VETOED = 1140, + ERROR_SET_POWER_STATE_FAILED, + ERROR_TOO_MANY_LINKS, // = 1142 + ERROR_OLD_WIN_VERSION = 1150, + ERROR_APP_WRONG_OS, + ERROR_SINGLE_INSTANCE_APP, + ERROR_RMODE_APP, + ERROR_INVALID_DLL, + ERROR_NO_ASSOCIATION, + ERROR_DDE_FAIL, + ERROR_DLL_NOT_FOUND, + ERROR_NO_MORE_USER_HANDLES, + ERROR_MESSAGE_SYNC_ONLY, + ERROR_SOURCE_ELEMENT_EMPTY, + ERROR_DESTINATION_ELEMENT_FULL, + ERROR_ILLEGAL_ELEMENT_ADDRESS, + ERROR_MAGAZINE_NOT_PRESENT, + ERROR_DEVICE_REINITIALIZATION_NEEDED, + ERROR_DEVICE_REQUIRES_CLEANING, + ERROR_DEVICE_DOOR_OPEN, + ERROR_DEVICE_NOT_CONNECTED, + ERROR_NOT_FOUND, + ERROR_NO_MATCH, + ERROR_SET_NOT_FOUND, + ERROR_POINT_NOT_FOUND, + ERROR_NO_TRACKING_SERVICE, + ERROR_NO_VOLUME_ID, // = 1173 + ERROR_UNABLE_TO_REMOVE_REPLACED = 1175, + ERROR_UNABLE_TO_MOVE_REPLACEMENT, + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2, + ERROR_JOURNAL_DELETE_IN_PROGRESS, + ERROR_JOURNAL_NOT_ACTIVE, + ERROR_POTENTIAL_FILE_FOUND, + ERROR_JOURNAL_ENTRY_DELETED, // = 1181 + ERROR_BAD_DEVICE = 1200, + ERROR_CONNECTION_UNAVAIL, + ERROR_DEVICE_ALREADY_REMEMBERED, + ERROR_NO_NET_OR_BAD_PATH, + ERROR_BAD_PROVIDER, + ERROR_CANNOT_OPEN_PROFILE, + ERROR_BAD_PROFILE, + ERROR_NOT_CONTAINER, + ERROR_EXTENDED_ERROR, + ERROR_INVALID_GROUPNAME, + ERROR_INVALID_COMPUTERNAME, + ERROR_INVALID_EVENTNAME, + ERROR_INVALID_DOMAINNAME, + ERROR_INVALID_SERVICENAME, + ERROR_INVALID_NETNAME, + ERROR_INVALID_SHARENAME, + ERROR_INVALID_PASSWORDNAME, + ERROR_INVALID_MESSAGENAME, + ERROR_INVALID_MESSAGEDEST, + ERROR_SESSION_CREDENTIAL_CONFLICT, + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED, + ERROR_DUP_DOMAINNAME, + ERROR_NO_NETWORK, + ERROR_CANCELLED, + ERROR_USER_MAPPED_FILE, + ERROR_CONNECTION_REFUSED, + ERROR_GRACEFUL_DISCONNECT, + ERROR_ADDRESS_ALREADY_ASSOCIATED, + ERROR_ADDRESS_NOT_ASSOCIATED, + ERROR_CONNECTION_INVALID, + ERROR_CONNECTION_ACTIVE, + ERROR_NETWORK_UNREACHABLE, + ERROR_HOST_UNREACHABLE, + ERROR_PROTOCOL_UNREACHABLE, + ERROR_PORT_UNREACHABLE, + ERROR_REQUEST_ABORTED, + ERROR_CONNECTION_ABORTED, + ERROR_RETRY, + ERROR_CONNECTION_COUNT_LIMIT, + ERROR_LOGIN_TIME_RESTRICTION, + ERROR_LOGIN_WKSTA_RESTRICTION, + ERROR_INCORRECT_ADDRESS, + ERROR_ALREADY_REGISTERED, + ERROR_SERVICE_NOT_FOUND, + ERROR_NOT_AUTHENTICATED, + ERROR_NOT_LOGGED_ON, + ERROR_CONTINUE, + ERROR_ALREADY_INITIALIZED, + ERROR_NO_MORE_DEVICES, + ERROR_NO_SUCH_SITE, + ERROR_DOMAIN_CONTROLLER_EXISTS, + ERROR_ONLY_IF_CONNECTED, + ERROR_OVERRIDE_NOCHANGES, + ERROR_BAD_USER_PROFILE, + ERROR_NOT_SUPPORTED_ON_SBS, + ERROR_SERVER_SHUTDOWN_IN_PROGRESS, + ERROR_HOST_DOWN, + ERROR_NON_ACCOUNT_SID, + ERROR_NON_DOMAIN_SID, + ERROR_APPHELP_BLOCK, + ERROR_ACCESS_DISABLED_BY_POLICY, + ERROR_REG_NAT_CONSUMPTION, + ERROR_CSCSHARE_OFFLINE, + ERROR_PKINIT_FAILURE, + ERROR_SMARTCARD_SUBSYSTEM_FAILURE, + ERROR_DOWNGRADE_DETECTED, + SEC_E_SMARTCARD_CERT_REVOKED, + SEC_E_ISSUING_CA_UNTRUSTED, + SEC_E_REVOCATION_OFFLINE_C, + SEC_E_PKINIT_CLIENT_FAILUR, + SEC_E_SMARTCARD_CERT_EXPIRED, + ERROR_MACHINE_LOCKED, // = 1271 + ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273, + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED, + ERROR_DRIVER_BLOCKED, + ERROR_INVALID_IMPORT_OF_NON_DLL, + ERROR_ACCESS_DISABLED_WEBBLADE, + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER, + ERROR_RECOVERY_FAILURE, + ERROR_ALREADY_FIBER, + ERROR_ALREADY_THREAD, + ERROR_STACK_BUFFER_OVERRUN, + ERROR_PARAMETER_QUOTA_EXCEEDED, + ERROR_DEBUGGER_INACTIVE, // = 1284 + ERROR_NOT_ALL_ASSIGNED = 1300, + ERROR_SOME_NOT_MAPPED, + ERROR_NO_QUOTAS_FOR_ACCOUNT, + ERROR_LOCAL_USER_SESSION_KEY, + ERROR_NULL_LM_PASSWORD, + ERROR_UNKNOWN_REVISION, + ERROR_REVISION_MISMATCH, + ERROR_INVALID_OWNER, + ERROR_INVALID_PRIMARY_GROUP, + ERROR_NO_IMPERSONATION_TOKEN, + ERROR_CANT_DISABLE_MANDATORY, + ERROR_NO_LOGON_SERVERS, + ERROR_NO_SUCH_LOGON_SESSION, + ERROR_NO_SUCH_PRIVILEGE, + ERROR_PRIVILEGE_NOT_HELD, + ERROR_INVALID_ACCOUNT_NAME, + ERROR_USER_EXISTS, + ERROR_NO_SUCH_USER, + ERROR_GROUP_EXISTS, + ERROR_NO_SUCH_GROUP, + ERROR_MEMBER_IN_GROUP, + ERROR_MEMBER_NOT_IN_GROUP, + ERROR_LAST_ADMIN, + ERROR_WRONG_PASSWORD, + ERROR_ILL_FORMED_PASSWORD, + ERROR_PASSWORD_RESTRICTION, + ERROR_LOGON_FAILURE, + ERROR_ACCOUNT_RESTRICTION, + ERROR_INVALID_LOGON_HOURS, + ERROR_INVALID_WORKSTATION, + ERROR_PASSWORD_EXPIRED, + ERROR_ACCOUNT_DISABLED, + ERROR_NONE_MAPPED, + ERROR_TOO_MANY_LUIDS_REQUESTED, + ERROR_LUIDS_EXHAUSTED, + ERROR_INVALID_SUB_AUTHORITY, + ERROR_INVALID_ACL, + ERROR_INVALID_SID, + ERROR_INVALID_SECURITY_DESCR, // = 1338 + ERROR_BAD_INHERITANCE_ACL = 1340, + ERROR_SERVER_DISABLED, + ERROR_SERVER_NOT_DISABLED, + ERROR_INVALID_ID_AUTHORITY, + ERROR_ALLOTTED_SPACE_EXCEEDED, + ERROR_INVALID_GROUP_ATTRIBUTES, + ERROR_BAD_IMPERSONATION_LEVEL, + ERROR_CANT_OPEN_ANONYMOUS, + ERROR_BAD_VALIDATION_CLASS, + ERROR_BAD_TOKEN_TYPE, + ERROR_NO_SECURITY_ON_OBJECT, + ERROR_CANT_ACCESS_DOMAIN_INFO, + ERROR_INVALID_SERVER_STATE, + ERROR_INVALID_DOMAIN_STATE, + ERROR_INVALID_DOMAIN_ROLE, + ERROR_NO_SUCH_DOMAIN, + ERROR_DOMAIN_EXISTS, + ERROR_DOMAIN_LIMIT_EXCEEDED, + ERROR_INTERNAL_DB_CORRUPTION, + ERROR_INTERNAL_ERROR, + ERROR_GENERIC_NOT_MAPPED, + ERROR_BAD_DESCRIPTOR_FORMAT, + ERROR_NOT_LOGON_PROCESS, + ERROR_LOGON_SESSION_EXISTS, + ERROR_NO_SUCH_PACKAGE, + ERROR_BAD_LOGON_SESSION_STATE, + ERROR_LOGON_SESSION_COLLISION, + ERROR_INVALID_LOGON_TYPE, + ERROR_CANNOT_IMPERSONATE, + ERROR_RXACT_INVALID_STATE, + ERROR_RXACT_COMMIT_FAILURE, + ERROR_SPECIAL_ACCOUNT, + ERROR_SPECIAL_GROUP, + ERROR_SPECIAL_USER, + ERROR_MEMBERS_PRIMARY_GROUP, + ERROR_TOKEN_ALREADY_IN_USE, + ERROR_NO_SUCH_ALIAS, + ERROR_MEMBER_NOT_IN_ALIAS, + ERROR_MEMBER_IN_ALIAS, + ERROR_ALIAS_EXISTS, + ERROR_LOGON_NOT_GRANTED, + ERROR_TOO_MANY_SECRETS, + ERROR_SECRET_TOO_LONG, + ERROR_INTERNAL_DB_ERROR, + ERROR_TOO_MANY_CONTEXT_IDS, + ERROR_LOGON_TYPE_NOT_GRANTED, + ERROR_NT_CROSS_ENCRYPTION_REQUIRED, + ERROR_NO_SUCH_MEMBER, + ERROR_INVALID_MEMBER, + ERROR_TOO_MANY_SIDS, + ERROR_LM_CROSS_ENCRYPTION_REQUIRED, + ERROR_NO_INHERITANCE, + ERROR_FILE_CORRUPT, + ERROR_DISK_CORRUPT, + ERROR_NO_USER_SESSION_KEY, + ERROR_LICENSE_QUOTA_EXCEEDED, + ERROR_WRONG_TARGET_NAME, + ERROR_MUTUAL_AUTH_FAILED, + ERROR_TIME_SKEW, + ERROR_CURRENT_DOMAIN_NOT_ALLOWED, + ERROR_INVALID_WINDOW_HANDLE, + ERROR_INVALID_MENU_HANDLE, + ERROR_INVALID_CURSOR_HANDLE, + ERROR_INVALID_ACCEL_HANDLE, + ERROR_INVALID_HOOK_HANDLE, + ERROR_INVALID_DWP_HANDLE, + ERROR_TLW_WITH_WSCHILD, + ERROR_CANNOT_FIND_WND_CLASS, + ERROR_WINDOW_OF_OTHER_THREAD, + ERROR_HOTKEY_ALREADY_REGISTERED, + ERROR_CLASS_ALREADY_EXISTS, + ERROR_CLASS_DOES_NOT_EXIST, + ERROR_CLASS_HAS_WINDOWS, + ERROR_INVALID_INDEX, + ERROR_INVALID_ICON_HANDLE, + ERROR_PRIVATE_DIALOG_INDEX, + ERROR_LISTBOX_ID_NOT_FOUND, + ERROR_NO_WILDCARD_CHARACTERS, + ERROR_CLIPBOARD_NOT_OPEN, + ERROR_HOTKEY_NOT_REGISTERED, + ERROR_WINDOW_NOT_DIALOG, + ERROR_CONTROL_ID_NOT_FOUND, + ERROR_INVALID_COMBOBOX_MESSAGE, + ERROR_WINDOW_NOT_COMBOBOX, + ERROR_INVALID_EDIT_HEIGHT, + ERROR_DC_NOT_FOUND, + ERROR_INVALID_HOOK_FILTER, + ERROR_INVALID_FILTER_PROC, + ERROR_HOOK_NEEDS_HMOD, + ERROR_GLOBAL_ONLY_HOOK, + ERROR_JOURNAL_HOOK_SET, + ERROR_HOOK_NOT_INSTALLED, + ERROR_INVALID_LB_MESSAGE, + ERROR_SETCOUNT_ON_BAD_LB, + ERROR_LB_WITHOUT_TABSTOPS, + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD, + ERROR_CHILD_WINDOW_MENU, + ERROR_NO_SYSTEM_MENU, + ERROR_INVALID_MSGBOX_STYLE, + ERROR_INVALID_SPI_VALUE, + ERROR_SCREEN_ALREADY_LOCKED, + ERROR_HWNDS_HAVE_DIFF_PARENT, + ERROR_NOT_CHILD_WINDOW, + ERROR_INVALID_GW_COMMAND, + ERROR_INVALID_THREAD_ID, + ERROR_NON_MDICHILD_WINDOW, + ERROR_POPUP_ALREADY_ACTIVE, + ERROR_NO_SCROLLBARS, + ERROR_INVALID_SCROLLBAR_RANGE, + ERROR_INVALID_SHOWWIN_COMMAND, + ERROR_NO_SYSTEM_RESOURCES, + ERROR_NONPAGED_SYSTEM_RESOURCES, + ERROR_PAGED_SYSTEM_RESOURCES, + ERROR_WORKING_SET_QUOTA, + ERROR_PAGEFILE_QUOTA, + ERROR_COMMITMENT_LIMIT, + ERROR_MENU_ITEM_NOT_FOUND, + ERROR_INVALID_KEYBOARD_HANDLE, + ERROR_HOOK_TYPE_NOT_ALLOWED, + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION, + ERROR_TIMEOUT, + ERROR_INVALID_MONITOR_HANDLE, // = 1461 + ERROR_EVENTLOG_FILE_CORRUPT = 1500, + ERROR_EVENTLOG_CANT_START, + ERROR_LOG_FILE_FULL, + ERROR_EVENTLOG_FILE_CHANGED, // = 1503 + ERROR_INSTALL_SERVICE_FAILURE = 1601, + ERROR_INSTALL_USEREXIT, + ERROR_INSTALL_FAILURE, + ERROR_INSTALL_SUSPEND, + ERROR_UNKNOWN_PRODUCT, + ERROR_UNKNOWN_FEATURE, + ERROR_UNKNOWN_COMPONENT, + ERROR_UNKNOWN_PROPERTY, + ERROR_INVALID_HANDLE_STATE, + ERROR_BAD_CONFIGURATION, + ERROR_INDEX_ABSENT, + ERROR_INSTALL_SOURCE_ABSENT, + ERROR_INSTALL_PACKAGE_VERSION, + ERROR_PRODUCT_UNINSTALLED, + ERROR_BAD_QUERY_SYNTAX, + ERROR_INVALID_FIELD, + ERROR_DEVICE_REMOVED, + ERROR_INSTALL_ALREADY_RUNNING, + ERROR_INSTALL_PACKAGE_OPEN_FAILED, + ERROR_INSTALL_PACKAGE_INVALID, + ERROR_INSTALL_UI_FAILURE, + ERROR_INSTALL_LOG_FAILURE, + ERROR_INSTALL_LANGUAGE_UNSUPPORTED, + ERROR_INSTALL_TRANSFORM_FAILURE, + ERROR_INSTALL_PACKAGE_REJECTED, + ERROR_FUNCTION_NOT_CALLED, + ERROR_FUNCTION_FAILED, + ERROR_INVALID_TABLE, + ERROR_DATATYPE_MISMATCH, + ERROR_UNSUPPORTED_TYPE, + ERROR_CREATE_FAILED, + ERROR_INSTALL_TEMP_UNWRITABLE, + ERROR_INSTALL_PLATFORM_UNSUPPORTED, + ERROR_INSTALL_NOTUSED, + ERROR_PATCH_PACKAGE_OPEN_FAILED, + ERROR_PATCH_PACKAGE_INVALID, + ERROR_PATCH_PACKAGE_UNSUPPORTED, + ERROR_PRODUCT_VERSION, + ERROR_INVALID_COMMAND_LINE, + ERROR_INSTALL_REMOTE_DISALLOWED, + ERROR_SUCCESS_REBOOT_INITIATED, + ERROR_PATCH_TARGET_NOT_FOUND, + ERROR_PATCH_PACKAGE_REJECTED, + ERROR_INSTALL_TRANSFORM_REJECTED, + ERROR_INSTALL_REMOTE_PROHIBITED, // = 1645 + RPC_S_INVALID_STRING_BINDING = 1700, + RPC_S_WRONG_KIND_OF_BINDING, + RPC_S_INVALID_BINDING, + RPC_S_PROTSEQ_NOT_SUPPORTED, + RPC_S_INVALID_RPC_PROTSEQ, + RPC_S_INVALID_STRING_UUID, + RPC_S_INVALID_ENDPOINT_FORMAT, + RPC_S_INVALID_NET_ADDR, + RPC_S_NO_ENDPOINT_FOUND, + RPC_S_INVALID_TIMEOUT, + RPC_S_OBJECT_NOT_FOUND, + RPC_S_ALREADY_REGISTERED, + RPC_S_TYPE_ALREADY_REGISTERED, + RPC_S_ALREADY_LISTENING, + RPC_S_NO_PROTSEQS_REGISTERED, + RPC_S_NOT_LISTENING, + RPC_S_UNKNOWN_MGR_TYPE, + RPC_S_UNKNOWN_IF, + RPC_S_NO_BINDINGS, + RPC_S_NO_PROTSEQS, + RPC_S_CANT_CREATE_ENDPOINT, + RPC_S_OUT_OF_RESOURCES, + RPC_S_SERVER_UNAVAILABLE, + RPC_S_SERVER_TOO_BUSY, + RPC_S_INVALID_NETWORK_OPTIONS, + RPC_S_NO_CALL_ACTIVE, + RPC_S_CALL_FAILED, + RPC_S_CALL_FAILED_DNE, + RPC_S_PROTOCOL_ERROR, // = 1728 + RPC_S_UNSUPPORTED_TRANS_SYN = 1730, + RPC_S_UNSUPPORTED_TYPE = 1732, + RPC_S_INVALID_TAG, + RPC_S_INVALID_BOUND, + RPC_S_NO_ENTRY_NAME, + RPC_S_INVALID_NAME_SYNTAX, + RPC_S_UNSUPPORTED_NAME_SYNTAX, // = 1737 + RPC_S_UUID_NO_ADDRESS = 1739, + RPC_S_DUPLICATE_ENDPOINT, + RPC_S_UNKNOWN_AUTHN_TYPE, + RPC_S_MAX_CALLS_TOO_SMALL, + RPC_S_STRING_TOO_LONG, + RPC_S_PROTSEQ_NOT_FOUND, + RPC_S_PROCNUM_OUT_OF_RANGE, + RPC_S_BINDING_HAS_NO_AUTH, + RPC_S_UNKNOWN_AUTHN_SERVICE, + RPC_S_UNKNOWN_AUTHN_LEVEL, + RPC_S_INVALID_AUTH_IDENTITY, + RPC_S_UNKNOWN_AUTHZ_SERVICE, + EPT_S_INVALID_ENTRY, + EPT_S_CANT_PERFORM_OP, + EPT_S_NOT_REGISTERED, + RPC_S_NOTHING_TO_EXPORT, + RPC_S_INCOMPLETE_NAME, + RPC_S_INVALID_VERS_OPTION, + RPC_S_NO_MORE_MEMBERS, + RPC_S_NOT_ALL_OBJS_UNEXPORTED, + RPC_S_INTERFACE_NOT_FOUND, + RPC_S_ENTRY_ALREADY_EXISTS, + RPC_S_ENTRY_NOT_FOUND, + RPC_S_NAME_SERVICE_UNAVAILABLE, + RPC_S_INVALID_NAF_ID, + RPC_S_CANNOT_SUPPORT, + RPC_S_NO_CONTEXT_AVAILABLE, + RPC_S_INTERNAL_ERROR, + RPC_S_ZERO_DIVIDE, + RPC_S_ADDRESS_ERROR, + RPC_S_FP_DIV_ZERO, + RPC_S_FP_UNDERFLOW, + RPC_S_FP_OVERFLOW, + RPC_X_NO_MORE_ENTRIES, + RPC_X_SS_CHAR_TRANS_OPEN_FAIL, + RPC_X_SS_CHAR_TRANS_SHORT_FILE, + RPC_X_SS_IN_NULL_CONTEXT, // = 1775 + RPC_X_SS_CONTEXT_DAMAGED = 1777, + RPC_X_SS_HANDLES_MISMATCH, + RPC_X_SS_CANNOT_GET_CALL_HANDLE, + RPC_X_NULL_REF_POINTER, + RPC_X_ENUM_VALUE_OUT_OF_RANGE, + RPC_X_BYTE_COUNT_TOO_SMALL, + RPC_X_BAD_STUB_DATA, + ERROR_INVALID_USER_BUFFER, + ERROR_UNRECOGNIZED_MEDIA, + ERROR_NO_TRUST_LSA_SECRET, + ERROR_NO_TRUST_SAM_ACCOUNT, + ERROR_TRUSTED_DOMAIN_FAILURE, + ERROR_TRUSTED_RELATIONSHIP_FAILURE, + ERROR_TRUST_FAILURE, + RPC_S_CALL_IN_PROGRESS, + ERROR_NETLOGON_NOT_STARTED, + ERROR_ACCOUNT_EXPIRED, + ERROR_REDIRECTOR_HAS_OPEN_HANDLES, + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED, + ERROR_UNKNOWN_PORT, + ERROR_UNKNOWN_PRINTER_DRIVER, + ERROR_UNKNOWN_PRINTPROCESSOR, + ERROR_INVALID_SEPARATOR_FILE, + ERROR_INVALID_PRIORITY, + ERROR_INVALID_PRINTER_NAME, + ERROR_PRINTER_ALREADY_EXISTS, + ERROR_INVALID_PRINTER_COMMAND, + ERROR_INVALID_DATATYPE, + ERROR_INVALID_ENVIRONMENT, + RPC_S_NO_MORE_BINDINGS, + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT, + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT, + ERROR_DOMAIN_TRUST_INCONSISTENT, + ERROR_SERVER_HAS_OPEN_HANDLES, + ERROR_RESOURCE_DATA_NOT_FOUND, + ERROR_RESOURCE_TYPE_NOT_FOUND, + ERROR_RESOURCE_NAME_NOT_FOUND, + ERROR_RESOURCE_LANG_NOT_FOUND, + ERROR_NOT_ENOUGH_QUOTA, + RPC_S_NO_INTERFACES, + RPC_S_CALL_CANCELLED, + RPC_S_BINDING_INCOMPLETE, + RPC_S_COMM_FAILURE, + RPC_S_UNSUPPORTED_AUTHN_LEVEL, + RPC_S_NO_PRINC_NAME, + RPC_S_NOT_RPC_ERROR, + RPC_S_UUID_LOCAL_ONLY, + RPC_S_SEC_PKG_ERROR, + RPC_S_NOT_CANCELLED, + RPC_X_INVALID_ES_ACTION, + RPC_X_WRONG_ES_VERSION, + RPC_X_WRONG_STUB_VERSION, + RPC_X_INVALID_PIPE_OBJECT, + RPC_X_WRONG_PIPE_ORDER, + RPC_X_WRONG_PIPE_VERSION, // = 1832 + RPC_S_GROUP_MEMBER_NOT_FOUND = 1898, + EPT_S_CANT_CREATE, + RPC_S_INVALID_OBJECT, + ERROR_INVALID_TIME, + ERROR_INVALID_FORM_NAME, + ERROR_INVALID_FORM_SIZE, + ERROR_ALREADY_WAITING, + ERROR_PRINTER_DELETED, + ERROR_INVALID_PRINTER_STATE, + ERROR_PASSWORD_MUST_CHANGE, + ERROR_DOMAIN_CONTROLLER_NOT_FOUND, + ERROR_ACCOUNT_LOCKED_OUT, + OR_INVALID_OXID, + OR_INVALID_OID, + OR_INVALID_SET, + RPC_S_SEND_INCOMPLETE, + RPC_S_INVALID_ASYNC_HANDLE, + RPC_S_INVALID_ASYNC_CALL, + RPC_X_PIPE_CLOSED, + RPC_X_PIPE_DISCIPLINE_ERROR, + RPC_X_PIPE_EMPTY, + ERROR_NO_SITENAME, + ERROR_CANT_ACCESS_FILE, + ERROR_CANT_RESOLVE_FILENAME, + RPC_S_ENTRY_TYPE_MISMATCH, + RPC_S_NOT_ALL_OBJS_EXPORTED, + RPC_S_INTERFACE_NOT_EXPORTED, + RPC_S_PROFILE_NOT_ADDED, + RPC_S_PRF_ELT_NOT_ADDED, + RPC_S_PRF_ELT_NOT_REMOVED, + RPC_S_GRP_ELT_NOT_ADDED, + RPC_S_GRP_ELT_NOT_REMOVED, + ERROR_KM_DRIVER_BLOCKED, + ERROR_CONTEXT_EXPIRED, + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED, + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED, + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED, // = 1934 + ERROR_INVALID_PIXEL_FORMAT = 2000, + ERROR_BAD_DRIVER, + ERROR_INVALID_WINDOW_STYLE, + ERROR_METAFILE_NOT_SUPPORTED, + ERROR_TRANSFORM_NOT_SUPPORTED, + ERROR_CLIPPING_NOT_SUPPORTED, // = 2005 + ERROR_INVALID_CMM = 2010, + ERROR_INVALID_PROFILE, + ERROR_TAG_NOT_FOUND, + ERROR_TAG_NOT_PRESENT, + ERROR_DUPLICATE_TAG, + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE, + ERROR_PROFILE_NOT_FOUND, + ERROR_INVALID_COLORSPACE, + ERROR_ICM_NOT_ENABLED, + ERROR_DELETING_ICM_XFORM, + ERROR_INVALID_TRANSFORM, + ERROR_COLORSPACE_MISMATCH, + ERROR_INVALID_COLORINDEX, // = 2022 + ERROR_CONNECTED_OTHER_PASSWORD = 2108, + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT, // = 2109 + ERROR_BAD_USERNAME = 2202, + ERROR_NOT_CONNECTED = 2250, + ERROR_OPEN_FILES = 2401, + ERROR_ACTIVE_CONNECTIONS, // = 2402 + ERROR_DEVICE_IN_USE = 2404, + ERROR_UNKNOWN_PRINT_MONITOR = 3000, + ERROR_PRINTER_DRIVER_IN_USE, + ERROR_SPOOL_FILE_NOT_FOUND, + ERROR_SPL_NO_STARTDOC, + ERROR_SPL_NO_ADDJOB, + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED, + ERROR_PRINT_MONITOR_ALREADY_INSTALLED, + ERROR_INVALID_PRINT_MONITOR, + ERROR_PRINT_MONITOR_IN_USE, + ERROR_PRINTER_HAS_JOBS_QUEUED, + ERROR_SUCCESS_REBOOT_REQUIRED, + ERROR_SUCCESS_RESTART_REQUIRED, + ERROR_PRINTER_NOT_FOUND, + ERROR_PRINTER_DRIVER_WARNED, + ERROR_PRINTER_DRIVER_BLOCKED, // = 3014 + ERROR_WINS_INTERNAL = 4000, + ERROR_CAN_NOT_DEL_LOCAL_WINS, + ERROR_STATIC_INIT, + ERROR_INC_BACKUP, + ERROR_FULL_BACKUP, + ERROR_REC_NON_EXISTENT, + ERROR_RPL_NOT_ALLOWED, // = 4006 + ERROR_DHCP_ADDRESS_CONFLICT = 4100, + ERROR_WMI_GUID_NOT_FOUND = 4200, + ERROR_WMI_INSTANCE_NOT_FOUND, + ERROR_WMI_ITEMID_NOT_FOUND, + ERROR_WMI_TRY_AGAIN, + ERROR_WMI_DP_NOT_FOUND, + ERROR_WMI_UNRESOLVED_INSTANCE_REF, + ERROR_WMI_ALREADY_ENABLED, + ERROR_WMI_GUID_DISCONNECTED, + ERROR_WMI_SERVER_UNAVAILABLE, + ERROR_WMI_DP_FAILED, + ERROR_WMI_INVALID_MOF, + ERROR_WMI_INVALID_REGINFO, + ERROR_WMI_ALREADY_DISABLED, + ERROR_WMI_READ_ONLY, + ERROR_WMI_SET_FAILURE, // = 4214 + ERROR_INVALID_MEDIA = 4300, + ERROR_INVALID_LIBRARY, + ERROR_INVALID_MEDIA_POOL, + ERROR_DRIVE_MEDIA_MISMATCH, + ERROR_MEDIA_OFFLINE, + ERROR_LIBRARY_OFFLINE, + ERROR_EMPTY, + ERROR_NOT_EMPTY, + ERROR_MEDIA_UNAVAILABLE, + ERROR_RESOURCE_DISABLED, + ERROR_INVALID_CLEANER, + ERROR_UNABLE_TO_CLEAN, + ERROR_OBJECT_NOT_FOUND, + ERROR_DATABASE_FAILURE, + ERROR_DATABASE_FULL, + ERROR_MEDIA_INCOMPATIBLE, + ERROR_RESOURCE_NOT_PRESENT, + ERROR_INVALID_OPERATION, + ERROR_MEDIA_NOT_AVAILABLE, + ERROR_DEVICE_NOT_AVAILABLE, + ERROR_REQUEST_REFUSED, + ERROR_INVALID_DRIVE_OBJECT, + ERROR_LIBRARY_FULL, + ERROR_MEDIUM_NOT_ACCESSIBLE, + ERROR_UNABLE_TO_LOAD_MEDIUM, + ERROR_UNABLE_TO_INVENTORY_DRIVE, + ERROR_UNABLE_TO_INVENTORY_SLOT, + ERROR_UNABLE_TO_INVENTORY_TRANSPORT, + ERROR_TRANSPORT_FULL, + ERROR_CONTROLLING_IEPORT, + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA, + ERROR_CLEANER_SLOT_SET, + ERROR_CLEANER_SLOT_NOT_SET, + ERROR_CLEANER_CARTRIDGE_SPENT, + ERROR_UNEXPECTED_OMID, + ERROR_CANT_DELETE_LAST_ITEM, + ERROR_MESSAGE_EXCEEDS_MAX_SIZE, + ERROR_VOLUME_CONTAINS_SYS_FILES, + ERROR_INDIGENOUS_TYPE, + ERROR_NO_SUPPORTING_DRIVES, + ERROR_CLEANER_CARTRIDGE_INSTALLED, // = 4340 + ERROR_FILE_OFFLINE = 4350, + ERROR_REMOTE_STORAGE_NOT_ACTIVE, + ERROR_REMOTE_STORAGE_MEDIA_ERROR, // = 4352 + ERROR_NOT_A_REPARSE_POINT = 4390, + ERROR_REPARSE_ATTRIBUTE_CONFLICT, + ERROR_INVALID_REPARSE_DATA, + ERROR_REPARSE_TAG_INVALID, + ERROR_REPARSE_TAG_MISMATCH, // = 4394 + ERROR_VOLUME_NOT_SIS_ENABLED = 4500, + ERROR_DEPENDENT_RESOURCE_EXISTS = 5001, + ERROR_DEPENDENCY_NOT_FOUND, + ERROR_DEPENDENCY_ALREADY_EXISTS, + ERROR_RESOURCE_NOT_ONLINE, + ERROR_HOST_NODE_NOT_AVAILABLE, + ERROR_RESOURCE_NOT_AVAILABLE, + ERROR_RESOURCE_NOT_FOUND, + ERROR_SHUTDOWN_CLUSTER, + ERROR_CANT_EVICT_ACTIVE_NODE, + ERROR_OBJECT_ALREADY_EXISTS, + ERROR_OBJECT_IN_LIST, + ERROR_GROUP_NOT_AVAILABLE, + ERROR_GROUP_NOT_FOUND, + ERROR_GROUP_NOT_ONLINE, + ERROR_HOST_NODE_NOT_RESOURCE_OWNER, + ERROR_HOST_NODE_NOT_GROUP_OWNER, + ERROR_RESMON_CREATE_FAILED, + ERROR_RESMON_ONLINE_FAILED, + ERROR_RESOURCE_ONLINE, + ERROR_QUORUM_RESOURCE, + ERROR_NOT_QUORUM_CAPABLE, + ERROR_CLUSTER_SHUTTING_DOWN, + ERROR_INVALID_STATE, + ERROR_RESOURCE_PROPERTIES_STORED, + ERROR_NOT_QUORUM_CLASS, + ERROR_CORE_RESOURCE, + ERROR_QUORUM_RESOURCE_ONLINE_FAILED, + ERROR_QUORUMLOG_OPEN_FAILED, + ERROR_CLUSTERLOG_CORRUPT, + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE, + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE, + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND, + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE, + ERROR_QUORUM_OWNER_ALIVE, + ERROR_NETWORK_NOT_AVAILABLE, + ERROR_NODE_NOT_AVAILABLE, + ERROR_ALL_NODES_NOT_AVAILABLE, + ERROR_RESOURCE_FAILED, + ERROR_CLUSTER_INVALID_NODE, + ERROR_CLUSTER_NODE_EXISTS, + ERROR_CLUSTER_JOIN_IN_PROGRESS, + ERROR_CLUSTER_NODE_NOT_FOUND, + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND, + ERROR_CLUSTER_NETWORK_EXISTS, + ERROR_CLUSTER_NETWORK_NOT_FOUND, + ERROR_CLUSTER_NETINTERFACE_EXISTS, + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND, + ERROR_CLUSTER_INVALID_REQUEST, + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER, + ERROR_CLUSTER_NODE_DOWN, + ERROR_CLUSTER_NODE_UNREACHABLE, + ERROR_CLUSTER_NODE_NOT_MEMBER, + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS, + ERROR_CLUSTER_INVALID_NETWORK, // = 5054 + ERROR_CLUSTER_NODE_UP = 5056, + ERROR_CLUSTER_IPADDR_IN_USE, + ERROR_CLUSTER_NODE_NOT_PAUSED, + ERROR_CLUSTER_NO_SECURITY_CONTEXT, + ERROR_CLUSTER_NETWORK_NOT_INTERNAL, + ERROR_CLUSTER_NODE_ALREADY_UP, + ERROR_CLUSTER_NODE_ALREADY_DOWN, + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE, + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE, + ERROR_CLUSTER_NODE_ALREADY_MEMBER, + ERROR_CLUSTER_LAST_INTERNAL_NETWORK, + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS, + ERROR_INVALID_OPERATION_ON_QUORUM, + ERROR_DEPENDENCY_NOT_ALLOWED, + ERROR_CLUSTER_NODE_PAUSED, + ERROR_NODE_CANT_HOST_RESOURCE, + ERROR_CLUSTER_NODE_NOT_READY, + ERROR_CLUSTER_NODE_SHUTTING_DOWN, + ERROR_CLUSTER_JOIN_ABORTED, + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS, + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED, + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED, + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND, + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED, + ERROR_CLUSTER_RESNAME_NOT_FOUND, + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED, + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST, + ERROR_CLUSTER_DATABASE_SEQMISMATCH, + ERROR_RESMON_INVALID_STATE, + ERROR_CLUSTER_GUM_NOT_LOCKER, + ERROR_QUORUM_DISK_NOT_FOUND, + ERROR_DATABASE_BACKUP_CORRUPT, + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT, + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE, // = 5089 + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890, + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND, + ERROR_CLUSTER_MEMBERSHIP_HALT, + ERROR_CLUSTER_INSTANCE_ID_MISMATCH, + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP, + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH, + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP, + ERROR_CLUSTER_PARAMETER_MISMATCH, + ERROR_NODE_CANNOT_BE_CLUSTERED, + ERROR_CLUSTER_WRONG_OS_VERSION, + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME, + ERROR_CLUSCFG_ALREADY_COMMITTED, + ERROR_CLUSCFG_ROLLBACK_FAILED, + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT, + ERROR_CLUSTER_OLD_VERSION, + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME, // = 5905 + ERROR_ENCRYPTION_FAILED = 6000, + ERROR_DECRYPTION_FAILED, + ERROR_FILE_ENCRYPTED, + ERROR_NO_RECOVERY_POLICY, + ERROR_NO_EFS, + ERROR_WRONG_EFS, + ERROR_NO_USER_KEYS, + ERROR_FILE_NOT_ENCRYPTED, + ERROR_NOT_EXPORT_FORMAT, + ERROR_FILE_READ_ONLY, + ERROR_DIR_EFS_DISALLOWED, + ERROR_EFS_SERVER_NOT_TRUSTED, + ERROR_BAD_RECOVERY_POLICY, + ERROR_EFS_ALG_BLOB_TOO_BIG, + ERROR_VOLUME_NOT_SUPPORT_EFS, + ERROR_EFS_DISABLED, + ERROR_EFS_VERSION_NOT_SUPPORT, // = 6016 + ERROR_NO_BROWSER_SERVERS_FOUND = 6118, + SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200, - ERROR_CTX_WINSTATION_NAME_INVALID = 7001, - ERROR_CTX_INVALID_PD, - ERROR_CTX_PD_NOT_FOUND, - ERROR_CTX_WD_NOT_FOUND, - ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY, - ERROR_CTX_SERVICE_NAME_COLLISION, - ERROR_CTX_CLOSE_PENDING, - ERROR_CTX_NO_OUTBUF, - ERROR_CTX_MODEM_INF_NOT_FOUND, - ERROR_CTX_INVALID_MODEMNAME, - ERROR_CTX_MODEM_RESPONSE_ERROR, - ERROR_CTX_MODEM_RESPONSE_TIMEOUT, - ERROR_CTX_MODEM_RESPONSE_NO_CARRIER, - ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE, - ERROR_CTX_MODEM_RESPONSE_BUSY, - ERROR_CTX_MODEM_RESPONSE_VOICE, - ERROR_CTX_TD_ERROR, // = 7017 - ERROR_CTX_WINSTATION_NOT_FOUND = 7022, - ERROR_CTX_WINSTATION_ALREADY_EXISTS, - ERROR_CTX_WINSTATION_BUSY, - ERROR_CTX_BAD_VIDEO_MODE, // = 7025 - ERROR_CTX_GRAPHICS_INVALID = 7035, - ERROR_CTX_LOGON_DISABLED = 7037, - ERROR_CTX_NOT_CONSOLE, // = 7038 - ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040, - ERROR_CTX_CONSOLE_DISCONNECT, - ERROR_CTX_CONSOLE_CONNECT, // = 7042 - ERROR_CTX_SHADOW_DENIED = 7044, - ERROR_CTX_WINSTATION_ACCESS_DENIED, // = 7045 - ERROR_CTX_INVALID_WD = 7049, - ERROR_CTX_SHADOW_INVALID, - ERROR_CTX_SHADOW_DISABLED, - ERROR_CTX_CLIENT_LICENSE_IN_USE, - ERROR_CTX_CLIENT_LICENSE_NOT_SET, - ERROR_CTX_LICENSE_NOT_AVAILABLE, - ERROR_CTX_LICENSE_CLIENT_INVALID, - ERROR_CTX_LICENSE_EXPIRED, - ERROR_CTX_SHADOW_NOT_RUNNING, - ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE, - ERROR_ACTIVATION_COUNT_EXCEEDED, // = 7059 + ERROR_CTX_WINSTATION_NAME_INVALID = 7001, + ERROR_CTX_INVALID_PD, + ERROR_CTX_PD_NOT_FOUND, + ERROR_CTX_WD_NOT_FOUND, + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY, + ERROR_CTX_SERVICE_NAME_COLLISION, + ERROR_CTX_CLOSE_PENDING, + ERROR_CTX_NO_OUTBUF, + ERROR_CTX_MODEM_INF_NOT_FOUND, + ERROR_CTX_INVALID_MODEMNAME, + ERROR_CTX_MODEM_RESPONSE_ERROR, + ERROR_CTX_MODEM_RESPONSE_TIMEOUT, + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER, + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE, + ERROR_CTX_MODEM_RESPONSE_BUSY, + ERROR_CTX_MODEM_RESPONSE_VOICE, + ERROR_CTX_TD_ERROR, // = 7017 + ERROR_CTX_WINSTATION_NOT_FOUND = 7022, + ERROR_CTX_WINSTATION_ALREADY_EXISTS, + ERROR_CTX_WINSTATION_BUSY, + ERROR_CTX_BAD_VIDEO_MODE, // = 7025 + ERROR_CTX_GRAPHICS_INVALID = 7035, + ERROR_CTX_LOGON_DISABLED = 7037, + ERROR_CTX_NOT_CONSOLE, // = 7038 + ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040, + ERROR_CTX_CONSOLE_DISCONNECT, + ERROR_CTX_CONSOLE_CONNECT, // = 7042 + ERROR_CTX_SHADOW_DENIED = 7044, + ERROR_CTX_WINSTATION_ACCESS_DENIED, // = 7045 + ERROR_CTX_INVALID_WD = 7049, + ERROR_CTX_SHADOW_INVALID, + ERROR_CTX_SHADOW_DISABLED, + ERROR_CTX_CLIENT_LICENSE_IN_USE, + ERROR_CTX_CLIENT_LICENSE_NOT_SET, + ERROR_CTX_LICENSE_NOT_AVAILABLE, + ERROR_CTX_LICENSE_CLIENT_INVALID, + ERROR_CTX_LICENSE_EXPIRED, + ERROR_CTX_SHADOW_NOT_RUNNING, + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE, + ERROR_ACTIVATION_COUNT_EXCEEDED, // = 7059 - FRS_ERR_INVALID_API_SEQUENCE = 8001, - FRS_ERR_STARTING_SERVICE, - FRS_ERR_STOPPING_SERVICE, - FRS_ERR_INTERNAL_API, - FRS_ERR_INTERNAL, - FRS_ERR_SERVICE_COMM, - FRS_ERR_INSUFFICIENT_PRIV, - FRS_ERR_AUTHENTICATION, - FRS_ERR_PARENT_INSUFFICIENT_PRIV, - FRS_ERR_PARENT_AUTHENTICATION, - FRS_ERR_CHILD_TO_PARENT_COMM, - FRS_ERR_PARENT_TO_CHILD_COMM, - FRS_ERR_SYSVOL_POPULATE, - FRS_ERR_SYSVOL_POPULATE_TIMEOUT, - FRS_ERR_SYSVOL_IS_BUSY, - FRS_ERR_SYSVOL_DEMOTE, - FRS_ERR_INVALID_SERVICE_PARAMETER, // = 8017 - ERROR_DS_NOT_INSTALLED = 8200, - ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY, - ERROR_DS_NO_ATTRIBUTE_OR_VALUE, - ERROR_DS_INVALID_ATTRIBUTE_SYNTAX, - ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED, - ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS, - ERROR_DS_BUSY, - ERROR_DS_UNAVAILABLE, - ERROR_DS_NO_RIDS_ALLOCATED, - ERROR_DS_NO_MORE_RIDS, - ERROR_DS_INCORRECT_ROLE_OWNER, - ERROR_DS_RIDMGR_INIT_ERROR, - ERROR_DS_OBJ_CLASS_VIOLATION, - ERROR_DS_CANT_ON_NON_LEAF, - ERROR_DS_CANT_ON_RDN, - ERROR_DS_CANT_MOD_OBJ_CLASS, - ERROR_DS_CROSS_DOM_MOVE_ERROR, - ERROR_DS_GC_NOT_AVAILABLE, - ERROR_SHARED_POLICY, - ERROR_POLICY_OBJECT_NOT_FOUND, - ERROR_POLICY_ONLY_IN_DS, - ERROR_PROMOTION_ACTIVE, - ERROR_NO_PROMOTION_ACTIVE, // = 8222 - ERROR_DS_OPERATIONS_ERROR = 8224, - ERROR_DS_PROTOCOL_ERROR, - ERROR_DS_TIMELIMIT_EXCEEDED, - ERROR_DS_SIZELIMIT_EXCEEDED, - ERROR_DS_ADMIN_LIMIT_EXCEEDED, - ERROR_DS_COMPARE_FALSE, - ERROR_DS_COMPARE_TRUE, - ERROR_DS_AUTH_METHOD_NOT_SUPPORTED, - ERROR_DS_STRONG_AUTH_REQUIRED, - ERROR_DS_INAPPROPRIATE_AUTH, - ERROR_DS_AUTH_UNKNOWN, - ERROR_DS_REFERRAL, - ERROR_DS_UNAVAILABLE_CRIT_EXTENSION, - ERROR_DS_CONFIDENTIALITY_REQUIRED, - ERROR_DS_INAPPROPRIATE_MATCHING, - ERROR_DS_CONSTRAINT_VIOLATION, - ERROR_DS_NO_SUCH_OBJECT, - ERROR_DS_ALIAS_PROBLEM, - ERROR_DS_INVALID_DN_SYNTAX, - ERROR_DS_IS_LEAF, - ERROR_DS_ALIAS_DEREF_PROBLEM, - ERROR_DS_UNWILLING_TO_PERFORM, - ERROR_DS_LOOP_DETECT, - ERROR_DS_NAMING_VIOLATION, - ERROR_DS_OBJECT_RESULTS_TOO_LARGE, - ERROR_DS_AFFECTS_MULTIPLE_DSAS, - ERROR_DS_SERVER_DOWN, - ERROR_DS_LOCAL_ERROR, - ERROR_DS_ENCODING_ERROR, - ERROR_DS_DECODING_ERROR, - ERROR_DS_FILTER_UNKNOWN, - ERROR_DS_PARAM_ERROR, - ERROR_DS_NOT_SUPPORTED, - ERROR_DS_NO_RESULTS_RETURNED, - ERROR_DS_CONTROL_NOT_FOUND, - ERROR_DS_CLIENT_LOOP, - ERROR_DS_REFERRAL_LIMIT_EXCEEDED, - ERROR_DS_SORT_CONTROL_MISSING, - ERROR_DS_OFFSET_RANGE_ERROR, // = 8262 - ERROR_DS_ROOT_MUST_BE_NC = 8301, - ERROR_DS_ADD_REPLICA_INHIBITED, - ERROR_DS_ATT_NOT_DEF_IN_SCHEMA, - ERROR_DS_MAX_OBJ_SIZE_EXCEEDED, - ERROR_DS_OBJ_STRING_NAME_EXISTS, - ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA, - ERROR_DS_RDN_DOESNT_MATCH_SCHEMA, - ERROR_DS_NO_REQUESTED_ATTS_FOUND, - ERROR_DS_USER_BUFFER_TO_SMALL, - ERROR_DS_ATT_IS_NOT_ON_OBJ, - ERROR_DS_ILLEGAL_MOD_OPERATION, - ERROR_DS_OBJ_TOO_LARGE, - ERROR_DS_BAD_INSTANCE_TYPE, - ERROR_DS_MASTERDSA_REQUIRED, - ERROR_DS_OBJECT_CLASS_REQUIRED, - ERROR_DS_MISSING_REQUIRED_ATT, - ERROR_DS_ATT_NOT_DEF_FOR_CLASS, - ERROR_DS_ATT_ALREADY_EXISTS, // = 8318 - ERROR_DS_CANT_ADD_ATT_VALUES = 8320, - ERROR_DS_SINGLE_VALUE_CONSTRAINT, - ERROR_DS_RANGE_CONSTRAINT, - ERROR_DS_ATT_VAL_ALREADY_EXISTS, - ERROR_DS_CANT_REM_MISSING_ATT, - ERROR_DS_CANT_REM_MISSING_ATT_VAL, - ERROR_DS_ROOT_CANT_BE_SUBREF, - ERROR_DS_NO_CHAINING, - ERROR_DS_NO_CHAINED_EVAL, - ERROR_DS_NO_PARENT_OBJECT, - ERROR_DS_PARENT_IS_AN_ALIAS, - ERROR_DS_CANT_MIX_MASTER_AND_REPS, - ERROR_DS_CHILDREN_EXIST, - ERROR_DS_OBJ_NOT_FOUND, - ERROR_DS_ALIASED_OBJ_MISSING, - ERROR_DS_BAD_NAME_SYNTAX, - ERROR_DS_ALIAS_POINTS_TO_ALIAS, - ERROR_DS_CANT_DEREF_ALIAS, - ERROR_DS_OUT_OF_SCOPE, - ERROR_DS_OBJECT_BEING_REMOVED, - ERROR_DS_CANT_DELETE_DSA_OBJ, - ERROR_DS_GENERIC_ERROR, - ERROR_DS_DSA_MUST_BE_INT_MASTER, - ERROR_DS_CLASS_NOT_DSA, - ERROR_DS_INSUFF_ACCESS_RIGHTS, - ERROR_DS_ILLEGAL_SUPERIOR, - ERROR_DS_ATTRIBUTE_OWNED_BY_SAM, - ERROR_DS_NAME_TOO_MANY_PARTS, - ERROR_DS_NAME_TOO_LONG, - ERROR_DS_NAME_VALUE_TOO_LONG, - ERROR_DS_NAME_UNPARSEABLE, - ERROR_DS_NAME_TYPE_UNKNOWN, - ERROR_DS_NOT_AN_OBJECT, - ERROR_DS_SEC_DESC_TOO_SHORT, - ERROR_DS_SEC_DESC_INVALID, - ERROR_DS_NO_DELETED_NAME, - ERROR_DS_SUBREF_MUST_HAVE_PARENT, - ERROR_DS_NCNAME_MUST_BE_NC, - ERROR_DS_CANT_ADD_SYSTEM_ONLY, - ERROR_DS_CLASS_MUST_BE_CONCRETE, - ERROR_DS_INVALID_DMD, - ERROR_DS_OBJ_GUID_EXISTS, - ERROR_DS_NOT_ON_BACKLINK, - ERROR_DS_NO_CROSSREF_FOR_NC, - ERROR_DS_SHUTTING_DOWN, - ERROR_DS_UNKNOWN_OPERATION, - ERROR_DS_INVALID_ROLE_OWNER, - ERROR_DS_COULDNT_CONTACT_FSMO, - ERROR_DS_CROSS_NC_DN_RENAME, - ERROR_DS_CANT_MOD_SYSTEM_ONLY, - ERROR_DS_REPLICATOR_ONLY, - ERROR_DS_OBJ_CLASS_NOT_DEFINED, - ERROR_DS_OBJ_CLASS_NOT_SUBCLASS, - ERROR_DS_NAME_REFERENCE_INVALID, - ERROR_DS_CROSS_REF_EXISTS, - ERROR_DS_CANT_DEL_MASTER_CROSSREF, - ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD, - ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX, - ERROR_DS_DUP_RDN, - ERROR_DS_DUP_OID, - ERROR_DS_DUP_MAPI_ID, - ERROR_DS_DUP_SCHEMA_ID_GUID, - ERROR_DS_DUP_LDAP_DISPLAY_NAME, - ERROR_DS_SEMANTIC_ATT_TEST, - ERROR_DS_SYNTAX_MISMATCH, - ERROR_DS_EXISTS_IN_MUST_HAVE, - ERROR_DS_EXISTS_IN_MAY_HAVE, - ERROR_DS_NONEXISTENT_MAY_HAVE, - ERROR_DS_NONEXISTENT_MUST_HAVE, - ERROR_DS_AUX_CLS_TEST_FAIL, - ERROR_DS_NONEXISTENT_POSS_SUP, - ERROR_DS_SUB_CLS_TEST_FAIL, - ERROR_DS_BAD_RDN_ATT_ID_SYNTAX, - ERROR_DS_EXISTS_IN_AUX_CLS, - ERROR_DS_EXISTS_IN_SUB_CLS, - ERROR_DS_EXISTS_IN_POSS_SUP, - ERROR_DS_RECALCSCHEMA_FAILED, - ERROR_DS_TREE_DELETE_NOT_FINISHED, - ERROR_DS_CANT_DELETE, - ERROR_DS_ATT_SCHEMA_REQ_ID, - ERROR_DS_BAD_ATT_SCHEMA_SYNTAX, - ERROR_DS_CANT_CACHE_ATT, - ERROR_DS_CANT_CACHE_CLASS, - ERROR_DS_CANT_REMOVE_ATT_CACHE, - ERROR_DS_CANT_REMOVE_CLASS_CACHE, - ERROR_DS_CANT_RETRIEVE_DN, - ERROR_DS_MISSING_SUPREF, - ERROR_DS_CANT_RETRIEVE_INSTANCE, - ERROR_DS_CODE_INCONSISTENCY, - ERROR_DS_DATABASE_ERROR, - ERROR_DS_GOVERNSID_MISSING, - ERROR_DS_MISSING_EXPECTED_ATT, - ERROR_DS_NCNAME_MISSING_CR_REF, - ERROR_DS_SECURITY_CHECKING_ERROR, - ERROR_DS_SCHEMA_NOT_LOADED, - ERROR_DS_SCHEMA_ALLOC_FAILED, - ERROR_DS_ATT_SCHEMA_REQ_SYNTAX, - ERROR_DS_GCVERIFY_ERROR, - ERROR_DS_DRA_SCHEMA_MISMATCH, - ERROR_DS_CANT_FIND_DSA_OBJ, - ERROR_DS_CANT_FIND_EXPECTED_NC, - ERROR_DS_CANT_FIND_NC_IN_CACHE, - ERROR_DS_CANT_RETRIEVE_CHILD, - ERROR_DS_SECURITY_ILLEGAL_MODIFY, - ERROR_DS_CANT_REPLACE_HIDDEN_REC, - ERROR_DS_BAD_HIERARCHY_FILE, - ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED, - ERROR_DS_CONFIG_PARAM_MISSING, - ERROR_DS_COUNTING_AB_INDICES_FAILED, - ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED, - ERROR_DS_INTERNAL_FAILURE, - ERROR_DS_UNKNOWN_ERROR, - ERROR_DS_ROOT_REQUIRES_CLASS_TOP, - ERROR_DS_REFUSING_FSMO_ROLES, - ERROR_DS_MISSING_FSMO_SETTINGS, - ERROR_DS_UNABLE_TO_SURRENDER_ROLES, - ERROR_DS_DRA_GENERIC, - ERROR_DS_DRA_INVALID_PARAMETER, - ERROR_DS_DRA_BUSY, - ERROR_DS_DRA_BAD_DN, - ERROR_DS_DRA_BAD_NC, - ERROR_DS_DRA_DN_EXISTS, - ERROR_DS_DRA_INTERNAL_ERROR, - ERROR_DS_DRA_INCONSISTENT_DIT, - ERROR_DS_DRA_CONNECTION_FAILED, - ERROR_DS_DRA_BAD_INSTANCE_TYPE, - ERROR_DS_DRA_OUT_OF_MEM, - ERROR_DS_DRA_MAIL_PROBLEM, - ERROR_DS_DRA_REF_ALREADY_EXISTS, - ERROR_DS_DRA_REF_NOT_FOUND, - ERROR_DS_DRA_OBJ_IS_REP_SOURCE, - ERROR_DS_DRA_DB_ERROR, - ERROR_DS_DRA_NO_REPLICA, - ERROR_DS_DRA_ACCESS_DENIED, - ERROR_DS_DRA_NOT_SUPPORTED, - ERROR_DS_DRA_RPC_CANCELLED, - ERROR_DS_DRA_SOURCE_DISABLED, - ERROR_DS_DRA_SINK_DISABLED, - ERROR_DS_DRA_NAME_COLLISION, - ERROR_DS_DRA_SOURCE_REINSTALLED, - ERROR_DS_DRA_MISSING_PARENT, - ERROR_DS_DRA_PREEMPTED, - ERROR_DS_DRA_ABANDON_SYNC, - ERROR_DS_DRA_SHUTDOWN, - ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET, - ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA, - ERROR_DS_DRA_EXTN_CONNECTION_FAILED, - ERROR_DS_INSTALL_SCHEMA_MISMATCH, - ERROR_DS_DUP_LINK_ID, - ERROR_DS_NAME_ERROR_RESOLVING, - ERROR_DS_NAME_ERROR_NOT_FOUND, - ERROR_DS_NAME_ERROR_NOT_UNIQUE, - ERROR_DS_NAME_ERROR_NO_MAPPING, - ERROR_DS_NAME_ERROR_DOMAIN_ONLY, - ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING, - ERROR_DS_CONSTRUCTED_ATT_MOD, - ERROR_DS_WRONG_OM_OBJ_CLASS, - ERROR_DS_DRA_REPL_PENDING, - ERROR_DS_DS_REQUIRED, - ERROR_DS_INVALID_LDAP_DISPLAY_NAME, - ERROR_DS_NON_BASE_SEARCH, - ERROR_DS_CANT_RETRIEVE_ATTS, - ERROR_DS_BACKLINK_WITHOUT_LINK, - ERROR_DS_EPOCH_MISMATCH, - ERROR_DS_SRC_NAME_MISMATCH, - ERROR_DS_SRC_AND_DST_NC_IDENTICAL, - ERROR_DS_DST_NC_MISMATCH, - ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC, - ERROR_DS_SRC_GUID_MISMATCH, - ERROR_DS_CANT_MOVE_DELETED_OBJECT, - ERROR_DS_PDC_OPERATION_IN_PROGRESS, - ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD, - ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION, - ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS, - ERROR_DS_NC_MUST_HAVE_NC_PARENT, - ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE, - ERROR_DS_DST_DOMAIN_NOT_NATIVE, - ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER, - ERROR_DS_CANT_MOVE_ACCOUNT_GROUP, - ERROR_DS_CANT_MOVE_RESOURCE_GROUP, - ERROR_DS_INVALID_SEARCH_FLAG, - ERROR_DS_NO_TREE_DELETE_ABOVE_NC, - ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE, - ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE, - ERROR_DS_SAM_INIT_FAILURE, - ERROR_DS_SENSITIVE_GROUP_VIOLATION, - ERROR_DS_CANT_MOD_PRIMARYGROUPID, - ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD, - ERROR_DS_NONSAFE_SCHEMA_CHANGE, - ERROR_DS_SCHEMA_UPDATE_DISALLOWED, - ERROR_DS_CANT_CREATE_UNDER_SCHEMA, - ERROR_DS_INSTALL_NO_SRC_SCH_VERSION, - ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE, - ERROR_DS_INVALID_GROUP_TYPE, - ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN, - ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN, - ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER, - ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER, - ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER, - ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER, - ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER, - ERROR_DS_HAVE_PRIMARY_MEMBERS, - ERROR_DS_STRING_SD_CONVERSION_FAILED, - ERROR_DS_NAMING_MASTER_GC, - ERROR_DS_LOOKUP_FAILURE, - ERROR_DS_COULDNT_UPDATE_SPNS, - ERROR_DS_CANT_RETRIEVE_SD, - ERROR_DS_KEY_NOT_UNIQUE, - ERROR_DS_WRONG_LINKED_ATT_SYNTAX, - ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD, - ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY, - ERROR_DS_CANT_START, - ERROR_DS_INIT_FAILURE, - ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION, - ERROR_DS_SOURCE_DOMAIN_IN_FOREST, - ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST, - ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED, - ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN, - ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER, - ERROR_DS_SRC_SID_EXISTS_IN_FOREST, - ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH, - ERROR_SAM_INIT_FAILURE, - ERROR_DS_DRA_SCHEMA_INFO_SHIP, - ERROR_DS_DRA_SCHEMA_CONFLICT, - ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT, - ERROR_DS_DRA_OBJ_NC_MISMATCH, - ERROR_DS_NC_STILL_HAS_DSAS, - ERROR_DS_GC_REQUIRED, - ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY, - ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS, - ERROR_DS_CANT_ADD_TO_GC, - ERROR_DS_NO_CHECKPOINT_WITH_PDC, - ERROR_DS_SOURCE_AUDITING_NOT_ENABLED, - ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC, - ERROR_DS_INVALID_NAME_FOR_SPN, - ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS, - ERROR_DS_UNICODEPWD_NOT_IN_QUOTES, - ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED, - ERROR_DS_MUST_BE_RUN_ON_DST_DC, - ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER, - ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ, - ERROR_DS_INIT_FAILURE_CONSOLE, - ERROR_DS_SAM_INIT_FAILURE_CONSOLE, - ERROR_DS_FOREST_VERSION_TOO_HIGH, - ERROR_DS_DOMAIN_VERSION_TOO_HIGH, - ERROR_DS_FOREST_VERSION_TOO_LOW, - ERROR_DS_DOMAIN_VERSION_TOO_LOW, - ERROR_DS_INCOMPATIBLE_VERSION, - ERROR_DS_LOW_DSA_VERSION, - ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN, - ERROR_DS_NOT_SUPPORTED_SORT_ORDER, - ERROR_DS_NAME_NOT_UNIQUE, - ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4, - ERROR_DS_OUT_OF_VERSION_STORE, - ERROR_DS_INCOMPATIBLE_CONTROLS_USED, - ERROR_DS_NO_REF_DOMAIN, - ERROR_DS_RESERVED_LINK_ID, - ERROR_DS_LINK_ID_NOT_AVAILABLE, - ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER, - ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE, - ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC, - ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG, - ERROR_DS_MODIFYDN_WRONG_GRANDPARENT, - ERROR_DS_NAME_ERROR_TRUST_REFERRAL, - ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER, - ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD, - ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2, - ERROR_DS_THREAD_LIMIT_EXCEEDED, - ERROR_DS_NOT_CLOSEST, - ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF, - ERROR_DS_SINGLE_USER_MODE_FAILED, - ERROR_DS_NTDSCRIPT_SYNTAX_ERROR, - ERROR_DS_NTDSCRIPT_PROCESS_ERROR, - ERROR_DS_DIFFERENT_REPL_EPOCHS, - ERROR_DS_DRS_EXTENSIONS_CHANGED, - ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR, - ERROR_DS_NO_MSDS_INTID, - ERROR_DS_DUP_MSDS_INTID, - ERROR_DS_EXISTS_IN_RDNATTID, - ERROR_DS_AUTHORIZATION_FAILED, - ERROR_DS_INVALID_SCRIPT, - ERROR_DS_REMOTE_CROSSREF_OP_FAILED, - ERROR_DS_CROSS_REF_BUSY, - ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN, - ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC, - ERROR_DS_DUPLICATE_ID_FOUND, - ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT, - ERROR_DS_GROUP_CONVERSION_ERROR, - ERROR_DS_CANT_MOVE_APP_BASIC_GROUP, - ERROR_DS_CANT_MOVE_APP_QUERY_GROUP, - ERROR_DS_ROLE_NOT_VERIFIED, - ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL, - ERROR_DS_DOMAIN_RENAME_IN_PROGRESS, - ERROR_DS_EXISTING_AD_CHILD_NC, // = 8613 - DNS_ERROR_RCODE_FORMAT_ERROR = 9001, - DNS_ERROR_RCODE_SERVER_FAILURE, - DNS_ERROR_RCODE_NAME_ERROR, - DNS_ERROR_RCODE_NOT_IMPLEMENTED, - DNS_ERROR_RCODE_REFUSED, - DNS_ERROR_RCODE_YXDOMAIN, - DNS_ERROR_RCODE_YXRRSET, - DNS_ERROR_RCODE_NXRRSET, - DNS_ERROR_RCODE_NOTAUTH, - DNS_ERROR_RCODE_NOTZONE, // = 9010 - DNS_ERROR_RCODE_BADSIG = 9016, - DNS_ERROR_RCODE_BADKEY, - DNS_ERROR_RCODE_BADTIME, // = 9018 - DNS_INFO_NO_RECORDS = 9501, - DNS_ERROR_BAD_PACKET, - DNS_ERROR_NO_PACKET, - DNS_ERROR_RCODE, - DNS_ERROR_UNSECURE_PACKET, // = 9505 - DNS_ERROR_INVALID_TYPE = 9551, - DNS_ERROR_INVALID_IP_ADDRESS, - DNS_ERROR_INVALID_PROPERTY, - DNS_ERROR_TRY_AGAIN_LATER, - DNS_ERROR_NOT_UNIQUE, - DNS_ERROR_NON_RFC_NAME, - DNS_STATUS_FQDN, - DNS_STATUS_DOTTED_NAME, - DNS_STATUS_SINGLE_PART_NAME, - DNS_ERROR_INVALID_NAME_CHAR, - DNS_ERROR_NUMERIC_NAME, - DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER, - DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION, - DNS_ERROR_CANNOT_FIND_ROOT_HINTS, - DNS_ERROR_INCONSISTENT_ROOT_HINTS, // = 9565 - DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601, - DNS_ERROR_NO_ZONE_INFO, - DNS_ERROR_INVALID_ZONE_OPERATION, - DNS_ERROR_ZONE_CONFIGURATION_ERROR, - DNS_ERROR_ZONE_HAS_NO_SOA_RECORD, - DNS_ERROR_ZONE_HAS_NO_NS_RECORDS, - DNS_ERROR_ZONE_LOCKED, - DNS_ERROR_ZONE_CREATION_FAILED, - DNS_ERROR_ZONE_ALREADY_EXISTS, - DNS_ERROR_AUTOZONE_ALREADY_EXISTS, - DNS_ERROR_INVALID_ZONE_TYPE, - DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP, - DNS_ERROR_ZONE_NOT_SECONDARY, - DNS_ERROR_NEED_SECONDARY_ADDRESSES, - DNS_ERROR_WINS_INIT_FAILED, - DNS_ERROR_NEED_WINS_SERVERS, - DNS_ERROR_NBSTAT_INIT_FAILED, - DNS_ERROR_SOA_DELETE_INVALID, - DNS_ERROR_FORWARDER_ALREADY_EXISTS, - DNS_ERROR_ZONE_REQUIRES_MASTER_IP, - DNS_ERROR_ZONE_IS_SHUTDOWN, // = 9621 - DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651, - DNS_ERROR_INVALID_DATAFILE_NAME, - DNS_ERROR_DATAFILE_OPEN_FAILURE, - DNS_ERROR_FILE_WRITEBACK_FAILED, - DNS_ERROR_DATAFILE_PARSING, // = 9655 - DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701, - DNS_ERROR_RECORD_FORMAT, - DNS_ERROR_NODE_CREATION_FAILED, - DNS_ERROR_UNKNOWN_RECORD_TYPE, - DNS_ERROR_RECORD_TIMED_OUT, - DNS_ERROR_NAME_NOT_IN_ZONE, - DNS_ERROR_CNAME_LOOP, - DNS_ERROR_NODE_IS_CNAME, - DNS_ERROR_CNAME_COLLISION, - DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT, - DNS_ERROR_RECORD_ALREADY_EXISTS, - DNS_ERROR_SECONDARY_DATA, - DNS_ERROR_NO_CREATE_CACHE_DATA, - DNS_ERROR_NAME_DOES_NOT_EXIST, - DNS_WARNING_PTR_CREATE_FAILED, - DNS_WARNING_DOMAIN_UNDELETED, - DNS_ERROR_DS_UNAVAILABLE, - DNS_ERROR_DS_ZONE_ALREADY_EXISTS, - DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE, // = 9719 - DNS_INFO_AXFR_COMPLETE = 9751, - DNS_ERROR_AXFR, - DNS_INFO_ADDED_LOCAL_WINS, // = 9753 - DNS_STATUS_CONTINUE_NEEDED = 9801, - DNS_ERROR_NO_TCPIP = 9851, - DNS_ERROR_NO_DNS_SERVERS, // = 9852 - DNS_ERROR_DP_DOES_NOT_EXIST = 9901, - DNS_ERROR_DP_ALREADY_EXISTS, - DNS_ERROR_DP_NOT_ENLISTED, - DNS_ERROR_DP_ALREADY_ENLISTED, - DNS_ERROR_DP_NOT_AVAILABLE, // = 9905 + FRS_ERR_INVALID_API_SEQUENCE = 8001, + FRS_ERR_STARTING_SERVICE, + FRS_ERR_STOPPING_SERVICE, + FRS_ERR_INTERNAL_API, + FRS_ERR_INTERNAL, + FRS_ERR_SERVICE_COMM, + FRS_ERR_INSUFFICIENT_PRIV, + FRS_ERR_AUTHENTICATION, + FRS_ERR_PARENT_INSUFFICIENT_PRIV, + FRS_ERR_PARENT_AUTHENTICATION, + FRS_ERR_CHILD_TO_PARENT_COMM, + FRS_ERR_PARENT_TO_CHILD_COMM, + FRS_ERR_SYSVOL_POPULATE, + FRS_ERR_SYSVOL_POPULATE_TIMEOUT, + FRS_ERR_SYSVOL_IS_BUSY, + FRS_ERR_SYSVOL_DEMOTE, + FRS_ERR_INVALID_SERVICE_PARAMETER, // = 8017 + ERROR_DS_NOT_INSTALLED = 8200, + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY, + ERROR_DS_NO_ATTRIBUTE_OR_VALUE, + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX, + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED, + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS, + ERROR_DS_BUSY, + ERROR_DS_UNAVAILABLE, + ERROR_DS_NO_RIDS_ALLOCATED, + ERROR_DS_NO_MORE_RIDS, + ERROR_DS_INCORRECT_ROLE_OWNER, + ERROR_DS_RIDMGR_INIT_ERROR, + ERROR_DS_OBJ_CLASS_VIOLATION, + ERROR_DS_CANT_ON_NON_LEAF, + ERROR_DS_CANT_ON_RDN, + ERROR_DS_CANT_MOD_OBJ_CLASS, + ERROR_DS_CROSS_DOM_MOVE_ERROR, + ERROR_DS_GC_NOT_AVAILABLE, + ERROR_SHARED_POLICY, + ERROR_POLICY_OBJECT_NOT_FOUND, + ERROR_POLICY_ONLY_IN_DS, + ERROR_PROMOTION_ACTIVE, + ERROR_NO_PROMOTION_ACTIVE, // = 8222 + ERROR_DS_OPERATIONS_ERROR = 8224, + ERROR_DS_PROTOCOL_ERROR, + ERROR_DS_TIMELIMIT_EXCEEDED, + ERROR_DS_SIZELIMIT_EXCEEDED, + ERROR_DS_ADMIN_LIMIT_EXCEEDED, + ERROR_DS_COMPARE_FALSE, + ERROR_DS_COMPARE_TRUE, + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED, + ERROR_DS_STRONG_AUTH_REQUIRED, + ERROR_DS_INAPPROPRIATE_AUTH, + ERROR_DS_AUTH_UNKNOWN, + ERROR_DS_REFERRAL, + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION, + ERROR_DS_CONFIDENTIALITY_REQUIRED, + ERROR_DS_INAPPROPRIATE_MATCHING, + ERROR_DS_CONSTRAINT_VIOLATION, + ERROR_DS_NO_SUCH_OBJECT, + ERROR_DS_ALIAS_PROBLEM, + ERROR_DS_INVALID_DN_SYNTAX, + ERROR_DS_IS_LEAF, + ERROR_DS_ALIAS_DEREF_PROBLEM, + ERROR_DS_UNWILLING_TO_PERFORM, + ERROR_DS_LOOP_DETECT, + ERROR_DS_NAMING_VIOLATION, + ERROR_DS_OBJECT_RESULTS_TOO_LARGE, + ERROR_DS_AFFECTS_MULTIPLE_DSAS, + ERROR_DS_SERVER_DOWN, + ERROR_DS_LOCAL_ERROR, + ERROR_DS_ENCODING_ERROR, + ERROR_DS_DECODING_ERROR, + ERROR_DS_FILTER_UNKNOWN, + ERROR_DS_PARAM_ERROR, + ERROR_DS_NOT_SUPPORTED, + ERROR_DS_NO_RESULTS_RETURNED, + ERROR_DS_CONTROL_NOT_FOUND, + ERROR_DS_CLIENT_LOOP, + ERROR_DS_REFERRAL_LIMIT_EXCEEDED, + ERROR_DS_SORT_CONTROL_MISSING, + ERROR_DS_OFFSET_RANGE_ERROR, // = 8262 + ERROR_DS_ROOT_MUST_BE_NC = 8301, + ERROR_DS_ADD_REPLICA_INHIBITED, + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA, + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED, + ERROR_DS_OBJ_STRING_NAME_EXISTS, + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA, + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA, + ERROR_DS_NO_REQUESTED_ATTS_FOUND, + ERROR_DS_USER_BUFFER_TO_SMALL, + ERROR_DS_ATT_IS_NOT_ON_OBJ, + ERROR_DS_ILLEGAL_MOD_OPERATION, + ERROR_DS_OBJ_TOO_LARGE, + ERROR_DS_BAD_INSTANCE_TYPE, + ERROR_DS_MASTERDSA_REQUIRED, + ERROR_DS_OBJECT_CLASS_REQUIRED, + ERROR_DS_MISSING_REQUIRED_ATT, + ERROR_DS_ATT_NOT_DEF_FOR_CLASS, + ERROR_DS_ATT_ALREADY_EXISTS, // = 8318 + ERROR_DS_CANT_ADD_ATT_VALUES = 8320, + ERROR_DS_SINGLE_VALUE_CONSTRAINT, + ERROR_DS_RANGE_CONSTRAINT, + ERROR_DS_ATT_VAL_ALREADY_EXISTS, + ERROR_DS_CANT_REM_MISSING_ATT, + ERROR_DS_CANT_REM_MISSING_ATT_VAL, + ERROR_DS_ROOT_CANT_BE_SUBREF, + ERROR_DS_NO_CHAINING, + ERROR_DS_NO_CHAINED_EVAL, + ERROR_DS_NO_PARENT_OBJECT, + ERROR_DS_PARENT_IS_AN_ALIAS, + ERROR_DS_CANT_MIX_MASTER_AND_REPS, + ERROR_DS_CHILDREN_EXIST, + ERROR_DS_OBJ_NOT_FOUND, + ERROR_DS_ALIASED_OBJ_MISSING, + ERROR_DS_BAD_NAME_SYNTAX, + ERROR_DS_ALIAS_POINTS_TO_ALIAS, + ERROR_DS_CANT_DEREF_ALIAS, + ERROR_DS_OUT_OF_SCOPE, + ERROR_DS_OBJECT_BEING_REMOVED, + ERROR_DS_CANT_DELETE_DSA_OBJ, + ERROR_DS_GENERIC_ERROR, + ERROR_DS_DSA_MUST_BE_INT_MASTER, + ERROR_DS_CLASS_NOT_DSA, + ERROR_DS_INSUFF_ACCESS_RIGHTS, + ERROR_DS_ILLEGAL_SUPERIOR, + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM, + ERROR_DS_NAME_TOO_MANY_PARTS, + ERROR_DS_NAME_TOO_LONG, + ERROR_DS_NAME_VALUE_TOO_LONG, + ERROR_DS_NAME_UNPARSEABLE, + ERROR_DS_NAME_TYPE_UNKNOWN, + ERROR_DS_NOT_AN_OBJECT, + ERROR_DS_SEC_DESC_TOO_SHORT, + ERROR_DS_SEC_DESC_INVALID, + ERROR_DS_NO_DELETED_NAME, + ERROR_DS_SUBREF_MUST_HAVE_PARENT, + ERROR_DS_NCNAME_MUST_BE_NC, + ERROR_DS_CANT_ADD_SYSTEM_ONLY, + ERROR_DS_CLASS_MUST_BE_CONCRETE, + ERROR_DS_INVALID_DMD, + ERROR_DS_OBJ_GUID_EXISTS, + ERROR_DS_NOT_ON_BACKLINK, + ERROR_DS_NO_CROSSREF_FOR_NC, + ERROR_DS_SHUTTING_DOWN, + ERROR_DS_UNKNOWN_OPERATION, + ERROR_DS_INVALID_ROLE_OWNER, + ERROR_DS_COULDNT_CONTACT_FSMO, + ERROR_DS_CROSS_NC_DN_RENAME, + ERROR_DS_CANT_MOD_SYSTEM_ONLY, + ERROR_DS_REPLICATOR_ONLY, + ERROR_DS_OBJ_CLASS_NOT_DEFINED, + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS, + ERROR_DS_NAME_REFERENCE_INVALID, + ERROR_DS_CROSS_REF_EXISTS, + ERROR_DS_CANT_DEL_MASTER_CROSSREF, + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD, + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX, + ERROR_DS_DUP_RDN, + ERROR_DS_DUP_OID, + ERROR_DS_DUP_MAPI_ID, + ERROR_DS_DUP_SCHEMA_ID_GUID, + ERROR_DS_DUP_LDAP_DISPLAY_NAME, + ERROR_DS_SEMANTIC_ATT_TEST, + ERROR_DS_SYNTAX_MISMATCH, + ERROR_DS_EXISTS_IN_MUST_HAVE, + ERROR_DS_EXISTS_IN_MAY_HAVE, + ERROR_DS_NONEXISTENT_MAY_HAVE, + ERROR_DS_NONEXISTENT_MUST_HAVE, + ERROR_DS_AUX_CLS_TEST_FAIL, + ERROR_DS_NONEXISTENT_POSS_SUP, + ERROR_DS_SUB_CLS_TEST_FAIL, + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX, + ERROR_DS_EXISTS_IN_AUX_CLS, + ERROR_DS_EXISTS_IN_SUB_CLS, + ERROR_DS_EXISTS_IN_POSS_SUP, + ERROR_DS_RECALCSCHEMA_FAILED, + ERROR_DS_TREE_DELETE_NOT_FINISHED, + ERROR_DS_CANT_DELETE, + ERROR_DS_ATT_SCHEMA_REQ_ID, + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX, + ERROR_DS_CANT_CACHE_ATT, + ERROR_DS_CANT_CACHE_CLASS, + ERROR_DS_CANT_REMOVE_ATT_CACHE, + ERROR_DS_CANT_REMOVE_CLASS_CACHE, + ERROR_DS_CANT_RETRIEVE_DN, + ERROR_DS_MISSING_SUPREF, + ERROR_DS_CANT_RETRIEVE_INSTANCE, + ERROR_DS_CODE_INCONSISTENCY, + ERROR_DS_DATABASE_ERROR, + ERROR_DS_GOVERNSID_MISSING, + ERROR_DS_MISSING_EXPECTED_ATT, + ERROR_DS_NCNAME_MISSING_CR_REF, + ERROR_DS_SECURITY_CHECKING_ERROR, + ERROR_DS_SCHEMA_NOT_LOADED, + ERROR_DS_SCHEMA_ALLOC_FAILED, + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX, + ERROR_DS_GCVERIFY_ERROR, + ERROR_DS_DRA_SCHEMA_MISMATCH, + ERROR_DS_CANT_FIND_DSA_OBJ, + ERROR_DS_CANT_FIND_EXPECTED_NC, + ERROR_DS_CANT_FIND_NC_IN_CACHE, + ERROR_DS_CANT_RETRIEVE_CHILD, + ERROR_DS_SECURITY_ILLEGAL_MODIFY, + ERROR_DS_CANT_REPLACE_HIDDEN_REC, + ERROR_DS_BAD_HIERARCHY_FILE, + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED, + ERROR_DS_CONFIG_PARAM_MISSING, + ERROR_DS_COUNTING_AB_INDICES_FAILED, + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED, + ERROR_DS_INTERNAL_FAILURE, + ERROR_DS_UNKNOWN_ERROR, + ERROR_DS_ROOT_REQUIRES_CLASS_TOP, + ERROR_DS_REFUSING_FSMO_ROLES, + ERROR_DS_MISSING_FSMO_SETTINGS, + ERROR_DS_UNABLE_TO_SURRENDER_ROLES, + ERROR_DS_DRA_GENERIC, + ERROR_DS_DRA_INVALID_PARAMETER, + ERROR_DS_DRA_BUSY, + ERROR_DS_DRA_BAD_DN, + ERROR_DS_DRA_BAD_NC, + ERROR_DS_DRA_DN_EXISTS, + ERROR_DS_DRA_INTERNAL_ERROR, + ERROR_DS_DRA_INCONSISTENT_DIT, + ERROR_DS_DRA_CONNECTION_FAILED, + ERROR_DS_DRA_BAD_INSTANCE_TYPE, + ERROR_DS_DRA_OUT_OF_MEM, + ERROR_DS_DRA_MAIL_PROBLEM, + ERROR_DS_DRA_REF_ALREADY_EXISTS, + ERROR_DS_DRA_REF_NOT_FOUND, + ERROR_DS_DRA_OBJ_IS_REP_SOURCE, + ERROR_DS_DRA_DB_ERROR, + ERROR_DS_DRA_NO_REPLICA, + ERROR_DS_DRA_ACCESS_DENIED, + ERROR_DS_DRA_NOT_SUPPORTED, + ERROR_DS_DRA_RPC_CANCELLED, + ERROR_DS_DRA_SOURCE_DISABLED, + ERROR_DS_DRA_SINK_DISABLED, + ERROR_DS_DRA_NAME_COLLISION, + ERROR_DS_DRA_SOURCE_REINSTALLED, + ERROR_DS_DRA_MISSING_PARENT, + ERROR_DS_DRA_PREEMPTED, + ERROR_DS_DRA_ABANDON_SYNC, + ERROR_DS_DRA_SHUTDOWN, + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET, + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA, + ERROR_DS_DRA_EXTN_CONNECTION_FAILED, + ERROR_DS_INSTALL_SCHEMA_MISMATCH, + ERROR_DS_DUP_LINK_ID, + ERROR_DS_NAME_ERROR_RESOLVING, + ERROR_DS_NAME_ERROR_NOT_FOUND, + ERROR_DS_NAME_ERROR_NOT_UNIQUE, + ERROR_DS_NAME_ERROR_NO_MAPPING, + ERROR_DS_NAME_ERROR_DOMAIN_ONLY, + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING, + ERROR_DS_CONSTRUCTED_ATT_MOD, + ERROR_DS_WRONG_OM_OBJ_CLASS, + ERROR_DS_DRA_REPL_PENDING, + ERROR_DS_DS_REQUIRED, + ERROR_DS_INVALID_LDAP_DISPLAY_NAME, + ERROR_DS_NON_BASE_SEARCH, + ERROR_DS_CANT_RETRIEVE_ATTS, + ERROR_DS_BACKLINK_WITHOUT_LINK, + ERROR_DS_EPOCH_MISMATCH, + ERROR_DS_SRC_NAME_MISMATCH, + ERROR_DS_SRC_AND_DST_NC_IDENTICAL, + ERROR_DS_DST_NC_MISMATCH, + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC, + ERROR_DS_SRC_GUID_MISMATCH, + ERROR_DS_CANT_MOVE_DELETED_OBJECT, + ERROR_DS_PDC_OPERATION_IN_PROGRESS, + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD, + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION, + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS, + ERROR_DS_NC_MUST_HAVE_NC_PARENT, + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE, + ERROR_DS_DST_DOMAIN_NOT_NATIVE, + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER, + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP, + ERROR_DS_CANT_MOVE_RESOURCE_GROUP, + ERROR_DS_INVALID_SEARCH_FLAG, + ERROR_DS_NO_TREE_DELETE_ABOVE_NC, + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE, + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE, + ERROR_DS_SAM_INIT_FAILURE, + ERROR_DS_SENSITIVE_GROUP_VIOLATION, + ERROR_DS_CANT_MOD_PRIMARYGROUPID, + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD, + ERROR_DS_NONSAFE_SCHEMA_CHANGE, + ERROR_DS_SCHEMA_UPDATE_DISALLOWED, + ERROR_DS_CANT_CREATE_UNDER_SCHEMA, + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION, + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE, + ERROR_DS_INVALID_GROUP_TYPE, + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN, + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN, + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER, + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER, + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER, + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER, + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER, + ERROR_DS_HAVE_PRIMARY_MEMBERS, + ERROR_DS_STRING_SD_CONVERSION_FAILED, + ERROR_DS_NAMING_MASTER_GC, + ERROR_DS_LOOKUP_FAILURE, + ERROR_DS_COULDNT_UPDATE_SPNS, + ERROR_DS_CANT_RETRIEVE_SD, + ERROR_DS_KEY_NOT_UNIQUE, + ERROR_DS_WRONG_LINKED_ATT_SYNTAX, + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD, + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY, + ERROR_DS_CANT_START, + ERROR_DS_INIT_FAILURE, + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION, + ERROR_DS_SOURCE_DOMAIN_IN_FOREST, + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST, + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED, + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN, + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER, + ERROR_DS_SRC_SID_EXISTS_IN_FOREST, + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH, + ERROR_SAM_INIT_FAILURE, + ERROR_DS_DRA_SCHEMA_INFO_SHIP, + ERROR_DS_DRA_SCHEMA_CONFLICT, + ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT, + ERROR_DS_DRA_OBJ_NC_MISMATCH, + ERROR_DS_NC_STILL_HAS_DSAS, + ERROR_DS_GC_REQUIRED, + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY, + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS, + ERROR_DS_CANT_ADD_TO_GC, + ERROR_DS_NO_CHECKPOINT_WITH_PDC, + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED, + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC, + ERROR_DS_INVALID_NAME_FOR_SPN, + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS, + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES, + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED, + ERROR_DS_MUST_BE_RUN_ON_DST_DC, + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER, + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ, + ERROR_DS_INIT_FAILURE_CONSOLE, + ERROR_DS_SAM_INIT_FAILURE_CONSOLE, + ERROR_DS_FOREST_VERSION_TOO_HIGH, + ERROR_DS_DOMAIN_VERSION_TOO_HIGH, + ERROR_DS_FOREST_VERSION_TOO_LOW, + ERROR_DS_DOMAIN_VERSION_TOO_LOW, + ERROR_DS_INCOMPATIBLE_VERSION, + ERROR_DS_LOW_DSA_VERSION, + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN, + ERROR_DS_NOT_SUPPORTED_SORT_ORDER, + ERROR_DS_NAME_NOT_UNIQUE, + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4, + ERROR_DS_OUT_OF_VERSION_STORE, + ERROR_DS_INCOMPATIBLE_CONTROLS_USED, + ERROR_DS_NO_REF_DOMAIN, + ERROR_DS_RESERVED_LINK_ID, + ERROR_DS_LINK_ID_NOT_AVAILABLE, + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER, + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE, + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC, + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG, + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT, + ERROR_DS_NAME_ERROR_TRUST_REFERRAL, + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER, + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD, + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2, + ERROR_DS_THREAD_LIMIT_EXCEEDED, + ERROR_DS_NOT_CLOSEST, + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF, + ERROR_DS_SINGLE_USER_MODE_FAILED, + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR, + ERROR_DS_NTDSCRIPT_PROCESS_ERROR, + ERROR_DS_DIFFERENT_REPL_EPOCHS, + ERROR_DS_DRS_EXTENSIONS_CHANGED, + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR, + ERROR_DS_NO_MSDS_INTID, + ERROR_DS_DUP_MSDS_INTID, + ERROR_DS_EXISTS_IN_RDNATTID, + ERROR_DS_AUTHORIZATION_FAILED, + ERROR_DS_INVALID_SCRIPT, + ERROR_DS_REMOTE_CROSSREF_OP_FAILED, + ERROR_DS_CROSS_REF_BUSY, + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN, + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC, + ERROR_DS_DUPLICATE_ID_FOUND, + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT, + ERROR_DS_GROUP_CONVERSION_ERROR, + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP, + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP, + ERROR_DS_ROLE_NOT_VERIFIED, + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL, + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS, + ERROR_DS_EXISTING_AD_CHILD_NC, // = 8613 + DNS_ERROR_RCODE_FORMAT_ERROR = 9001, + DNS_ERROR_RCODE_SERVER_FAILURE, + DNS_ERROR_RCODE_NAME_ERROR, + DNS_ERROR_RCODE_NOT_IMPLEMENTED, + DNS_ERROR_RCODE_REFUSED, + DNS_ERROR_RCODE_YXDOMAIN, + DNS_ERROR_RCODE_YXRRSET, + DNS_ERROR_RCODE_NXRRSET, + DNS_ERROR_RCODE_NOTAUTH, + DNS_ERROR_RCODE_NOTZONE, // = 9010 + DNS_ERROR_RCODE_BADSIG = 9016, + DNS_ERROR_RCODE_BADKEY, + DNS_ERROR_RCODE_BADTIME, // = 9018 + DNS_INFO_NO_RECORDS = 9501, + DNS_ERROR_BAD_PACKET, + DNS_ERROR_NO_PACKET, + DNS_ERROR_RCODE, + DNS_ERROR_UNSECURE_PACKET, // = 9505 + DNS_ERROR_INVALID_TYPE = 9551, + DNS_ERROR_INVALID_IP_ADDRESS, + DNS_ERROR_INVALID_PROPERTY, + DNS_ERROR_TRY_AGAIN_LATER, + DNS_ERROR_NOT_UNIQUE, + DNS_ERROR_NON_RFC_NAME, + DNS_STATUS_FQDN, + DNS_STATUS_DOTTED_NAME, + DNS_STATUS_SINGLE_PART_NAME, + DNS_ERROR_INVALID_NAME_CHAR, + DNS_ERROR_NUMERIC_NAME, + DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER, + DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION, + DNS_ERROR_CANNOT_FIND_ROOT_HINTS, + DNS_ERROR_INCONSISTENT_ROOT_HINTS, // = 9565 + DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601, + DNS_ERROR_NO_ZONE_INFO, + DNS_ERROR_INVALID_ZONE_OPERATION, + DNS_ERROR_ZONE_CONFIGURATION_ERROR, + DNS_ERROR_ZONE_HAS_NO_SOA_RECORD, + DNS_ERROR_ZONE_HAS_NO_NS_RECORDS, + DNS_ERROR_ZONE_LOCKED, + DNS_ERROR_ZONE_CREATION_FAILED, + DNS_ERROR_ZONE_ALREADY_EXISTS, + DNS_ERROR_AUTOZONE_ALREADY_EXISTS, + DNS_ERROR_INVALID_ZONE_TYPE, + DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP, + DNS_ERROR_ZONE_NOT_SECONDARY, + DNS_ERROR_NEED_SECONDARY_ADDRESSES, + DNS_ERROR_WINS_INIT_FAILED, + DNS_ERROR_NEED_WINS_SERVERS, + DNS_ERROR_NBSTAT_INIT_FAILED, + DNS_ERROR_SOA_DELETE_INVALID, + DNS_ERROR_FORWARDER_ALREADY_EXISTS, + DNS_ERROR_ZONE_REQUIRES_MASTER_IP, + DNS_ERROR_ZONE_IS_SHUTDOWN, // = 9621 + DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651, + DNS_ERROR_INVALID_DATAFILE_NAME, + DNS_ERROR_DATAFILE_OPEN_FAILURE, + DNS_ERROR_FILE_WRITEBACK_FAILED, + DNS_ERROR_DATAFILE_PARSING, // = 9655 + DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701, + DNS_ERROR_RECORD_FORMAT, + DNS_ERROR_NODE_CREATION_FAILED, + DNS_ERROR_UNKNOWN_RECORD_TYPE, + DNS_ERROR_RECORD_TIMED_OUT, + DNS_ERROR_NAME_NOT_IN_ZONE, + DNS_ERROR_CNAME_LOOP, + DNS_ERROR_NODE_IS_CNAME, + DNS_ERROR_CNAME_COLLISION, + DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT, + DNS_ERROR_RECORD_ALREADY_EXISTS, + DNS_ERROR_SECONDARY_DATA, + DNS_ERROR_NO_CREATE_CACHE_DATA, + DNS_ERROR_NAME_DOES_NOT_EXIST, + DNS_WARNING_PTR_CREATE_FAILED, + DNS_WARNING_DOMAIN_UNDELETED, + DNS_ERROR_DS_UNAVAILABLE, + DNS_ERROR_DS_ZONE_ALREADY_EXISTS, + DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE, // = 9719 + DNS_INFO_AXFR_COMPLETE = 9751, + DNS_ERROR_AXFR, + DNS_INFO_ADDED_LOCAL_WINS, // = 9753 + DNS_STATUS_CONTINUE_NEEDED = 9801, + DNS_ERROR_NO_TCPIP = 9851, + DNS_ERROR_NO_DNS_SERVERS, // = 9852 + DNS_ERROR_DP_DOES_NOT_EXIST = 9901, + DNS_ERROR_DP_ALREADY_EXISTS, + DNS_ERROR_DP_NOT_ENLISTED, + DNS_ERROR_DP_ALREADY_ENLISTED, + DNS_ERROR_DP_NOT_AVAILABLE, // = 9905 /+ already in winsock2.d defined! - WSABASEERR = 10000, - WSAEINTR = 10004, - WSAEBADF = 10009, - WSAEACCES = 10013, - WSAEFAULT, // = 10014 - WSAEINVAL = 10022, - WSAEMFILE = 10024, - WSAEWOULDBLOCK = 10035, - WSAEINPROGRESS, - WSAEALREADY, - WSAENOTSOCK, - WSAEDESTADDRREQ, - WSAEMSGSIZE, - WSAEPROTOTYPE, - WSAENOPROTOOPT, - WSAEPROTONOSUPPORT, - WSAESOCKTNOSUPPORT, - WSAEOPNOTSUPP, - WSAEPFNOSUPPORT, - WSAEAFNOSUPPORT, - WSAEADDRINUSE, - WSAEADDRNOTAVAIL, - WSAENETDOWN, - WSAENETUNREACH, - WSAENETRESET, - WSAECONNABORTED, - WSAECONNRESET, - WSAENOBUFS, - WSAEISCONN, - WSAENOTCONN, - WSAESHUTDOWN, - WSAETOOMANYREFS, - WSAETIMEDOUT, - WSAECONNREFUSED, - WSAELOOP, - WSAENAMETOOLONG, - WSAEHOSTDOWN, - WSAEHOSTUNREACH, - WSAENOTEMPTY, - WSAEPROCLIM, - WSAEUSERS, - WSAEDQUOT, - WSAESTALE, - WSAEREMOTE, // = 10071 - WSASYSNOTREADY = 10091, - WSAVERNOTSUPPORTED, - WSANOTINITIALISED, // = 10093 - WSAEDISCON = 10101, - WSAENOMORE, - WSAECANCELLED, - WSAEINVALIDPROCTABLE, - WSAEINVALIDPROVIDER, - WSAEPROVIDERFAILEDINIT, - WSASYSCALLFAILURE, - WSASERVICE_NOT_FOUND, - WSATYPE_NOT_FOUND, - WSA_E_NO_MORE, - WSA_E_CANCELLED, - WSAEREFUSED, // = 10112 - WSAHOST_NOT_FOUND = 11001, - WSATRY_AGAIN, - WSANO_RECOVERY, - WSANO_DATA, - WSA_QOS_RECEIVERS, - WSA_QOS_SENDERS, - WSA_QOS_NO_SENDERS, - WSA_QOS_NO_RECEIVERS, - WSA_QOS_REQUEST_CONFIRMED, - WSA_QOS_ADMISSION_FAILURE, - WSA_QOS_POLICY_FAILURE, - WSA_QOS_BAD_STYLE, - WSA_QOS_BAD_OBJECT, - WSA_QOS_TRAFFIC_CTRL_ERROR, - WSA_QOS_GENERIC_ERROR, - WSA_QOS_ESERVICETYPE, - WSA_QOS_EFLOWSPEC, - WSA_QOS_EPROVSPECBUF, - WSA_QOS_EFILTERSTYLE, - WSA_QOS_EFILTERTYPE, - WSA_QOS_EFILTERCOUNT, - WSA_QOS_EOBJLENGTH, - WSA_QOS_EFLOWCOUNT, - WSA_QOS_EUNKNOWNPSOBJ, - WSA_QOS_EPOLICYOBJ, - WSA_QOS_EFLOWDESC, - WSA_QOS_EPSFLOWSPEC, - WSA_QOS_EPSFILTERSPEC, - WSA_QOS_ESDMODEOBJ, - WSA_QOS_ESHAPERATEOBJ, - WSA_QOS_RESERVED_PETYPE, // = 11031 + WSABASEERR = 10000, + WSAEINTR = 10004, + WSAEBADF = 10009, + WSAEACCES = 10013, + WSAEFAULT, // = 10014 + WSAEINVAL = 10022, + WSAEMFILE = 10024, + WSAEWOULDBLOCK = 10035, + WSAEINPROGRESS, + WSAEALREADY, + WSAENOTSOCK, + WSAEDESTADDRREQ, + WSAEMSGSIZE, + WSAEPROTOTYPE, + WSAENOPROTOOPT, + WSAEPROTONOSUPPORT, + WSAESOCKTNOSUPPORT, + WSAEOPNOTSUPP, + WSAEPFNOSUPPORT, + WSAEAFNOSUPPORT, + WSAEADDRINUSE, + WSAEADDRNOTAVAIL, + WSAENETDOWN, + WSAENETUNREACH, + WSAENETRESET, + WSAECONNABORTED, + WSAECONNRESET, + WSAENOBUFS, + WSAEISCONN, + WSAENOTCONN, + WSAESHUTDOWN, + WSAETOOMANYREFS, + WSAETIMEDOUT, + WSAECONNREFUSED, + WSAELOOP, + WSAENAMETOOLONG, + WSAEHOSTDOWN, + WSAEHOSTUNREACH, + WSAENOTEMPTY, + WSAEPROCLIM, + WSAEUSERS, + WSAEDQUOT, + WSAESTALE, + WSAEREMOTE, // = 10071 + WSASYSNOTREADY = 10091, + WSAVERNOTSUPPORTED, + WSANOTINITIALISED, // = 10093 + WSAEDISCON = 10101, + WSAENOMORE, + WSAECANCELLED, + WSAEINVALIDPROCTABLE, + WSAEINVALIDPROVIDER, + WSAEPROVIDERFAILEDINIT, + WSASYSCALLFAILURE, + WSASERVICE_NOT_FOUND, + WSATYPE_NOT_FOUND, + WSA_E_NO_MORE, + WSA_E_CANCELLED, + WSAEREFUSED, // = 10112 + WSAHOST_NOT_FOUND = 11001, + WSATRY_AGAIN, + WSANO_RECOVERY, + WSANO_DATA, + WSA_QOS_RECEIVERS, + WSA_QOS_SENDERS, + WSA_QOS_NO_SENDERS, + WSA_QOS_NO_RECEIVERS, + WSA_QOS_REQUEST_CONFIRMED, + WSA_QOS_ADMISSION_FAILURE, + WSA_QOS_POLICY_FAILURE, + WSA_QOS_BAD_STYLE, + WSA_QOS_BAD_OBJECT, + WSA_QOS_TRAFFIC_CTRL_ERROR, + WSA_QOS_GENERIC_ERROR, + WSA_QOS_ESERVICETYPE, + WSA_QOS_EFLOWSPEC, + WSA_QOS_EPROVSPECBUF, + WSA_QOS_EFILTERSTYLE, + WSA_QOS_EFILTERTYPE, + WSA_QOS_EFILTERCOUNT, + WSA_QOS_EOBJLENGTH, + WSA_QOS_EFLOWCOUNT, + WSA_QOS_EUNKNOWNPSOBJ, + WSA_QOS_EPOLICYOBJ, + WSA_QOS_EFLOWDESC, + WSA_QOS_EPSFLOWSPEC, + WSA_QOS_EPSFILTERSPEC, + WSA_QOS_ESDMODEOBJ, + WSA_QOS_ESHAPERATEOBJ, + WSA_QOS_RESERVED_PETYPE, // = 11031 +/ - ERROR_IPSEC_QM_POLICY_EXISTS = 13000, - ERROR_IPSEC_QM_POLICY_NOT_FOUND, - ERROR_IPSEC_QM_POLICY_IN_USE, - ERROR_IPSEC_MM_POLICY_EXISTS, - ERROR_IPSEC_MM_POLICY_NOT_FOUND, - ERROR_IPSEC_MM_POLICY_IN_USE, - ERROR_IPSEC_MM_FILTER_EXISTS, - ERROR_IPSEC_MM_FILTER_NOT_FOUND, - ERROR_IPSEC_TRANSPORT_FILTER_EXISTS, - ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND, - ERROR_IPSEC_MM_AUTH_EXISTS, - ERROR_IPSEC_MM_AUTH_NOT_FOUND, - ERROR_IPSEC_MM_AUTH_IN_USE, - ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND, - ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND, - ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND, - ERROR_IPSEC_TUNNEL_FILTER_EXISTS, - ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND, - ERROR_IPSEC_MM_FILTER_PENDING_DELETION, - ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION, - ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION, - ERROR_IPSEC_MM_POLICY_PENDING_DELETION, - ERROR_IPSEC_MM_AUTH_PENDING_DELETION, - ERROR_IPSEC_QM_POLICY_PENDING_DELETION, - WARNING_IPSEC_MM_POLICY_PRUNED, - WARNING_IPSEC_QM_POLICY_PRUNED, // = 13025 - ERROR_IPSEC_IKE_AUTH_FAIL = 13801, - ERROR_IPSEC_IKE_ATTRIB_FAIL, - ERROR_IPSEC_IKE_NEGOTIATION_PENDING, - ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR, - ERROR_IPSEC_IKE_TIMED_OUT, - ERROR_IPSEC_IKE_NO_CERT, - ERROR_IPSEC_IKE_SA_DELETED, - ERROR_IPSEC_IKE_SA_REAPED, - ERROR_IPSEC_IKE_MM_ACQUIRE_DROP, - ERROR_IPSEC_IKE_QM_ACQUIRE_DROP, - ERROR_IPSEC_IKE_QUEUE_DROP_MM, - ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM, - ERROR_IPSEC_IKE_DROP_NO_RESPONSE, - ERROR_IPSEC_IKE_MM_DELAY_DROP, - ERROR_IPSEC_IKE_QM_DELAY_DROP, - ERROR_IPSEC_IKE_ERROR, - ERROR_IPSEC_IKE_CRL_FAILED, - ERROR_IPSEC_IKE_INVALID_KEY_USAGE, - ERROR_IPSEC_IKE_INVALID_CERT_TYPE, - ERROR_IPSEC_IKE_NO_PRIVATE_KEY, // = 13820 - ERROR_IPSEC_IKE_DH_FAIL = 13822, - ERROR_IPSEC_IKE_INVALID_HEADER = 13824, - ERROR_IPSEC_IKE_NO_POLICY, - ERROR_IPSEC_IKE_INVALID_SIGNATURE, - ERROR_IPSEC_IKE_KERBEROS_ERROR, - ERROR_IPSEC_IKE_NO_PUBLIC_KEY, - ERROR_IPSEC_IKE_PROCESS_ERR, - ERROR_IPSEC_IKE_PROCESS_ERR_SA, - ERROR_IPSEC_IKE_PROCESS_ERR_PROP, - ERROR_IPSEC_IKE_PROCESS_ERR_TRANS, - ERROR_IPSEC_IKE_PROCESS_ERR_KE, - ERROR_IPSEC_IKE_PROCESS_ERR_ID, - ERROR_IPSEC_IKE_PROCESS_ERR_CERT, - ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ, - ERROR_IPSEC_IKE_PROCESS_ERR_HASH, - ERROR_IPSEC_IKE_PROCESS_ERR_SIG, - ERROR_IPSEC_IKE_PROCESS_ERR_NONCE, - ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY, - ERROR_IPSEC_IKE_PROCESS_ERR_DELETE, - ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR, - ERROR_IPSEC_IKE_INVALID_PAYLOAD, - ERROR_IPSEC_IKE_LOAD_SOFT_SA, - ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN, - ERROR_IPSEC_IKE_INVALID_COOKIE, - ERROR_IPSEC_IKE_NO_PEER_CERT, - ERROR_IPSEC_IKE_PEER_CRL_FAILED, - ERROR_IPSEC_IKE_POLICY_CHANGE, - ERROR_IPSEC_IKE_NO_MM_POLICY, - ERROR_IPSEC_IKE_NOTCBPRIV, - ERROR_IPSEC_IKE_SECLOADFAIL, - ERROR_IPSEC_IKE_FAILSSPINIT, - ERROR_IPSEC_IKE_FAILQUERYSSP, - ERROR_IPSEC_IKE_SRVACQFAIL, - ERROR_IPSEC_IKE_SRVQUERYCRED, - ERROR_IPSEC_IKE_GETSPIFAIL, - ERROR_IPSEC_IKE_INVALID_FILTER, - ERROR_IPSEC_IKE_OUT_OF_MEMORY, - ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED, - ERROR_IPSEC_IKE_INVALID_POLICY, - ERROR_IPSEC_IKE_UNKNOWN_DOI, - ERROR_IPSEC_IKE_INVALID_SITUATION, - ERROR_IPSEC_IKE_DH_FAILURE, - ERROR_IPSEC_IKE_INVALID_GROUP, - ERROR_IPSEC_IKE_ENCRYPT, - ERROR_IPSEC_IKE_DECRYPT, - ERROR_IPSEC_IKE_POLICY_MATCH, - ERROR_IPSEC_IKE_UNSUPPORTED_ID, - ERROR_IPSEC_IKE_INVALID_HASH, - ERROR_IPSEC_IKE_INVALID_HASH_ALG, - ERROR_IPSEC_IKE_INVALID_HASH_SIZE, - ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG, - ERROR_IPSEC_IKE_INVALID_AUTH_ALG, - ERROR_IPSEC_IKE_INVALID_SIG, - ERROR_IPSEC_IKE_LOAD_FAILED, - ERROR_IPSEC_IKE_RPC_DELETE, - ERROR_IPSEC_IKE_BENIGN_REINIT, - ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY, // = 13879 - ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881, - ERROR_IPSEC_IKE_MM_LIMIT, - ERROR_IPSEC_IKE_NEGOTIATION_DISABLED, - ERROR_IPSEC_IKE_NEG_STATUS_END, - ERROR_SXS_SECTION_NOT_FOUND, - ERROR_SXS_CANT_GEN_ACTCTX, - ERROR_SXS_INVALID_ACTCTXDATA_FORMAT, - ERROR_SXS_ASSEMBLY_NOT_FOUND, - ERROR_SXS_MANIFEST_FORMAT_ERROR, - ERROR_SXS_MANIFEST_PARSE_ERROR, - ERROR_SXS_ACTIVATION_CONTEXT_DISABLED, - ERROR_SXS_KEY_NOT_FOUND, - ERROR_SXS_VERSION_CONFLICT, - ERROR_SXS_WRONG_SECTION_TYPE, - ERROR_SXS_THREAD_QUERIES_DISABLED, - ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET, - ERROR_SXS_UNKNOWN_ENCODING_GROUP, - ERROR_SXS_UNKNOWN_ENCODING, - ERROR_SXS_INVALID_XML_NAMESPACE_URI, - ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED, - ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED, - ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE, - ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE, - ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE, - ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT, - ERROR_SXS_DUPLICATE_DLL_NAME, - ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME, - ERROR_SXS_DUPLICATE_CLSID, - ERROR_SXS_DUPLICATE_IID, - ERROR_SXS_DUPLICATE_TLBID, - ERROR_SXS_DUPLICATE_PROGID, - ERROR_SXS_DUPLICATE_ASSEMBLY_NAME, - ERROR_SXS_FILE_HASH_MISMATCH, - ERROR_SXS_POLICY_PARSE_ERROR, - ERROR_SXS_XML_E_MISSINGQUOTE, - ERROR_SXS_XML_E_COMMENTSYNTAX, - ERROR_SXS_XML_E_BADSTARTNAMECHAR, - ERROR_SXS_XML_E_BADNAMECHAR, - ERROR_SXS_XML_E_BADCHARINSTRING, - ERROR_SXS_XML_E_XMLDECLSYNTAX, - ERROR_SXS_XML_E_BADCHARDATA, - ERROR_SXS_XML_E_MISSINGWHITESPACE, - ERROR_SXS_XML_E_EXPECTINGTAGEND, - ERROR_SXS_XML_E_MISSINGSEMICOLON, - ERROR_SXS_XML_E_UNBALANCEDPAREN, - ERROR_SXS_XML_E_INTERNALERROR, - ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE, - ERROR_SXS_XML_E_INCOMPLETE_ENCODING, - ERROR_SXS_XML_E_MISSING_PAREN, - ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE, - ERROR_SXS_XML_E_MULTIPLE_COLONS, - ERROR_SXS_XML_E_INVALID_DECIMAL, - ERROR_SXS_XML_E_INVALID_HEXIDECIMAL, - ERROR_SXS_XML_E_INVALID_UNICODE, - ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK, - ERROR_SXS_XML_E_UNEXPECTEDENDTAG, - ERROR_SXS_XML_E_UNCLOSEDTAG, - ERROR_SXS_XML_E_DUPLICATEATTRIBUTE, - ERROR_SXS_XML_E_MULTIPLEROOTS, - ERROR_SXS_XML_E_INVALIDATROOTLEVEL, - ERROR_SXS_XML_E_BADXMLDECL, - ERROR_SXS_XML_E_MISSINGROOT, - ERROR_SXS_XML_E_UNEXPECTEDEOF, - ERROR_SXS_XML_E_BADPEREFINSUBSET, - ERROR_SXS_XML_E_UNCLOSEDSTARTTAG, - ERROR_SXS_XML_E_UNCLOSEDENDTAG, - ERROR_SXS_XML_E_UNCLOSEDSTRING, - ERROR_SXS_XML_E_UNCLOSEDCOMMENT, - ERROR_SXS_XML_E_UNCLOSEDDECL, - ERROR_SXS_XML_E_UNCLOSEDCDATA, - ERROR_SXS_XML_E_RESERVEDNAMESPACE, - ERROR_SXS_XML_E_INVALIDENCODING, - ERROR_SXS_XML_E_INVALIDSWITCH, - ERROR_SXS_XML_E_BADXMLCASE, - ERROR_SXS_XML_E_INVALID_STANDALONE, - ERROR_SXS_XML_E_UNEXPECTED_STANDALONE, - ERROR_SXS_XML_E_INVALID_VERSION, - ERROR_SXS_XML_E_MISSINGEQUALS, - ERROR_SXS_PROTECTION_RECOVERY_FAILED, - ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT, - ERROR_SXS_PROTECTION_CATALOG_NOT_VALID, - ERROR_SXS_UNTRANSLATABLE_HRESULT, - ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING, - ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE, - ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME // = 14080 + ERROR_IPSEC_QM_POLICY_EXISTS = 13000, + ERROR_IPSEC_QM_POLICY_NOT_FOUND, + ERROR_IPSEC_QM_POLICY_IN_USE, + ERROR_IPSEC_MM_POLICY_EXISTS, + ERROR_IPSEC_MM_POLICY_NOT_FOUND, + ERROR_IPSEC_MM_POLICY_IN_USE, + ERROR_IPSEC_MM_FILTER_EXISTS, + ERROR_IPSEC_MM_FILTER_NOT_FOUND, + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS, + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND, + ERROR_IPSEC_MM_AUTH_EXISTS, + ERROR_IPSEC_MM_AUTH_NOT_FOUND, + ERROR_IPSEC_MM_AUTH_IN_USE, + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND, + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND, + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND, + ERROR_IPSEC_TUNNEL_FILTER_EXISTS, + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND, + ERROR_IPSEC_MM_FILTER_PENDING_DELETION, + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION, + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION, + ERROR_IPSEC_MM_POLICY_PENDING_DELETION, + ERROR_IPSEC_MM_AUTH_PENDING_DELETION, + ERROR_IPSEC_QM_POLICY_PENDING_DELETION, + WARNING_IPSEC_MM_POLICY_PRUNED, + WARNING_IPSEC_QM_POLICY_PRUNED, // = 13025 + ERROR_IPSEC_IKE_AUTH_FAIL = 13801, + ERROR_IPSEC_IKE_ATTRIB_FAIL, + ERROR_IPSEC_IKE_NEGOTIATION_PENDING, + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR, + ERROR_IPSEC_IKE_TIMED_OUT, + ERROR_IPSEC_IKE_NO_CERT, + ERROR_IPSEC_IKE_SA_DELETED, + ERROR_IPSEC_IKE_SA_REAPED, + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP, + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP, + ERROR_IPSEC_IKE_QUEUE_DROP_MM, + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM, + ERROR_IPSEC_IKE_DROP_NO_RESPONSE, + ERROR_IPSEC_IKE_MM_DELAY_DROP, + ERROR_IPSEC_IKE_QM_DELAY_DROP, + ERROR_IPSEC_IKE_ERROR, + ERROR_IPSEC_IKE_CRL_FAILED, + ERROR_IPSEC_IKE_INVALID_KEY_USAGE, + ERROR_IPSEC_IKE_INVALID_CERT_TYPE, + ERROR_IPSEC_IKE_NO_PRIVATE_KEY, // = 13820 + ERROR_IPSEC_IKE_DH_FAIL = 13822, + ERROR_IPSEC_IKE_INVALID_HEADER = 13824, + ERROR_IPSEC_IKE_NO_POLICY, + ERROR_IPSEC_IKE_INVALID_SIGNATURE, + ERROR_IPSEC_IKE_KERBEROS_ERROR, + ERROR_IPSEC_IKE_NO_PUBLIC_KEY, + ERROR_IPSEC_IKE_PROCESS_ERR, + ERROR_IPSEC_IKE_PROCESS_ERR_SA, + ERROR_IPSEC_IKE_PROCESS_ERR_PROP, + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS, + ERROR_IPSEC_IKE_PROCESS_ERR_KE, + ERROR_IPSEC_IKE_PROCESS_ERR_ID, + ERROR_IPSEC_IKE_PROCESS_ERR_CERT, + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ, + ERROR_IPSEC_IKE_PROCESS_ERR_HASH, + ERROR_IPSEC_IKE_PROCESS_ERR_SIG, + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE, + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY, + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE, + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR, + ERROR_IPSEC_IKE_INVALID_PAYLOAD, + ERROR_IPSEC_IKE_LOAD_SOFT_SA, + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN, + ERROR_IPSEC_IKE_INVALID_COOKIE, + ERROR_IPSEC_IKE_NO_PEER_CERT, + ERROR_IPSEC_IKE_PEER_CRL_FAILED, + ERROR_IPSEC_IKE_POLICY_CHANGE, + ERROR_IPSEC_IKE_NO_MM_POLICY, + ERROR_IPSEC_IKE_NOTCBPRIV, + ERROR_IPSEC_IKE_SECLOADFAIL, + ERROR_IPSEC_IKE_FAILSSPINIT, + ERROR_IPSEC_IKE_FAILQUERYSSP, + ERROR_IPSEC_IKE_SRVACQFAIL, + ERROR_IPSEC_IKE_SRVQUERYCRED, + ERROR_IPSEC_IKE_GETSPIFAIL, + ERROR_IPSEC_IKE_INVALID_FILTER, + ERROR_IPSEC_IKE_OUT_OF_MEMORY, + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED, + ERROR_IPSEC_IKE_INVALID_POLICY, + ERROR_IPSEC_IKE_UNKNOWN_DOI, + ERROR_IPSEC_IKE_INVALID_SITUATION, + ERROR_IPSEC_IKE_DH_FAILURE, + ERROR_IPSEC_IKE_INVALID_GROUP, + ERROR_IPSEC_IKE_ENCRYPT, + ERROR_IPSEC_IKE_DECRYPT, + ERROR_IPSEC_IKE_POLICY_MATCH, + ERROR_IPSEC_IKE_UNSUPPORTED_ID, + ERROR_IPSEC_IKE_INVALID_HASH, + ERROR_IPSEC_IKE_INVALID_HASH_ALG, + ERROR_IPSEC_IKE_INVALID_HASH_SIZE, + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG, + ERROR_IPSEC_IKE_INVALID_AUTH_ALG, + ERROR_IPSEC_IKE_INVALID_SIG, + ERROR_IPSEC_IKE_LOAD_FAILED, + ERROR_IPSEC_IKE_RPC_DELETE, + ERROR_IPSEC_IKE_BENIGN_REINIT, + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY, // = 13879 + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881, + ERROR_IPSEC_IKE_MM_LIMIT, + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED, + ERROR_IPSEC_IKE_NEG_STATUS_END, + ERROR_SXS_SECTION_NOT_FOUND, + ERROR_SXS_CANT_GEN_ACTCTX, + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT, + ERROR_SXS_ASSEMBLY_NOT_FOUND, + ERROR_SXS_MANIFEST_FORMAT_ERROR, + ERROR_SXS_MANIFEST_PARSE_ERROR, + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED, + ERROR_SXS_KEY_NOT_FOUND, + ERROR_SXS_VERSION_CONFLICT, + ERROR_SXS_WRONG_SECTION_TYPE, + ERROR_SXS_THREAD_QUERIES_DISABLED, + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET, + ERROR_SXS_UNKNOWN_ENCODING_GROUP, + ERROR_SXS_UNKNOWN_ENCODING, + ERROR_SXS_INVALID_XML_NAMESPACE_URI, + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED, + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED, + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE, + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE, + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE, + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT, + ERROR_SXS_DUPLICATE_DLL_NAME, + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME, + ERROR_SXS_DUPLICATE_CLSID, + ERROR_SXS_DUPLICATE_IID, + ERROR_SXS_DUPLICATE_TLBID, + ERROR_SXS_DUPLICATE_PROGID, + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME, + ERROR_SXS_FILE_HASH_MISMATCH, + ERROR_SXS_POLICY_PARSE_ERROR, + ERROR_SXS_XML_E_MISSINGQUOTE, + ERROR_SXS_XML_E_COMMENTSYNTAX, + ERROR_SXS_XML_E_BADSTARTNAMECHAR, + ERROR_SXS_XML_E_BADNAMECHAR, + ERROR_SXS_XML_E_BADCHARINSTRING, + ERROR_SXS_XML_E_XMLDECLSYNTAX, + ERROR_SXS_XML_E_BADCHARDATA, + ERROR_SXS_XML_E_MISSINGWHITESPACE, + ERROR_SXS_XML_E_EXPECTINGTAGEND, + ERROR_SXS_XML_E_MISSINGSEMICOLON, + ERROR_SXS_XML_E_UNBALANCEDPAREN, + ERROR_SXS_XML_E_INTERNALERROR, + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE, + ERROR_SXS_XML_E_INCOMPLETE_ENCODING, + ERROR_SXS_XML_E_MISSING_PAREN, + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE, + ERROR_SXS_XML_E_MULTIPLE_COLONS, + ERROR_SXS_XML_E_INVALID_DECIMAL, + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL, + ERROR_SXS_XML_E_INVALID_UNICODE, + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK, + ERROR_SXS_XML_E_UNEXPECTEDENDTAG, + ERROR_SXS_XML_E_UNCLOSEDTAG, + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE, + ERROR_SXS_XML_E_MULTIPLEROOTS, + ERROR_SXS_XML_E_INVALIDATROOTLEVEL, + ERROR_SXS_XML_E_BADXMLDECL, + ERROR_SXS_XML_E_MISSINGROOT, + ERROR_SXS_XML_E_UNEXPECTEDEOF, + ERROR_SXS_XML_E_BADPEREFINSUBSET, + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG, + ERROR_SXS_XML_E_UNCLOSEDENDTAG, + ERROR_SXS_XML_E_UNCLOSEDSTRING, + ERROR_SXS_XML_E_UNCLOSEDCOMMENT, + ERROR_SXS_XML_E_UNCLOSEDDECL, + ERROR_SXS_XML_E_UNCLOSEDCDATA, + ERROR_SXS_XML_E_RESERVEDNAMESPACE, + ERROR_SXS_XML_E_INVALIDENCODING, + ERROR_SXS_XML_E_INVALIDSWITCH, + ERROR_SXS_XML_E_BADXMLCASE, + ERROR_SXS_XML_E_INVALID_STANDALONE, + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE, + ERROR_SXS_XML_E_INVALID_VERSION, + ERROR_SXS_XML_E_MISSINGEQUALS, + ERROR_SXS_PROTECTION_RECOVERY_FAILED, + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT, + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID, + ERROR_SXS_UNTRANSLATABLE_HRESULT, + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING, + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE, + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME // = 14080 } enum : HRESULT { - S_OK = 0x00000000, - S_FALSE = 0x00000001, + S_OK = 0x00000000, + S_FALSE = 0x00000001, - NOERROR = 0x00000000, + NOERROR = 0x00000000, - E_PENDING = 0x8000000A, - E_NOTIMPL = 0x80004001, - E_NOINTERFACE = 0x80004002, - E_POINTER = 0x80004003, - E_ABORT = 0x80004004, - E_FAIL = 0x80004005, - E_ACCESSDENIED = 0x80070005, - E_HANDLE = 0x80070006, - E_OUTOFMEMORY = 0x8007000E, - E_INVALIDARG = 0x80070057, - E_UNEXPECTED = 0x8000FFFF, + E_PENDING = 0x8000000A, + E_NOTIMPL = 0x80004001, + E_NOINTERFACE = 0x80004002, + E_POINTER = 0x80004003, + E_ABORT = 0x80004004, + E_FAIL = 0x80004005, + E_ACCESSDENIED = 0x80070005, + E_HANDLE = 0x80070006, + E_OUTOFMEMORY = 0x8007000E, + E_INVALIDARG = 0x80070057, + E_UNEXPECTED = 0x8000FFFF, - CO_E_INIT_TLS = 0x80004006, - CO_E_INIT_SHARED_ALLOCATOR = 0x80004007, - CO_E_INIT_MEMORY_ALLOCATOR = 0x80004008, - CO_E_INIT_CLASS_CACHE = 0x80004009, - CO_E_INIT_RPC_CHANNEL = 0x8000400A, - CO_E_INIT_TLS_SET_CHANNEL_CONTROL = 0x8000400B, - CO_E_INIT_TLS_CHANNEL_CONTROL = 0x8000400C, - CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = 0x8000400D, - CO_E_INIT_SCM_MUTEX_EXISTS = 0x8000400E, - CO_E_INIT_SCM_FILE_MAPPING_EXISTS = 0x8000400F, - CO_E_INIT_SCM_MAP_VIEW_OF_FILE = 0x80004010, - CO_E_INIT_SCM_EXEC_FAILURE = 0x80004011, - CO_E_INIT_ONLY_SINGLE_THREADED = 0x80004012, + CO_E_INIT_TLS = 0x80004006, + CO_E_INIT_SHARED_ALLOCATOR = 0x80004007, + CO_E_INIT_MEMORY_ALLOCATOR = 0x80004008, + CO_E_INIT_CLASS_CACHE = 0x80004009, + CO_E_INIT_RPC_CHANNEL = 0x8000400A, + CO_E_INIT_TLS_SET_CHANNEL_CONTROL = 0x8000400B, + CO_E_INIT_TLS_CHANNEL_CONTROL = 0x8000400C, + CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = 0x8000400D, + CO_E_INIT_SCM_MUTEX_EXISTS = 0x8000400E, + CO_E_INIT_SCM_FILE_MAPPING_EXISTS = 0x8000400F, + CO_E_INIT_SCM_MAP_VIEW_OF_FILE = 0x80004010, + CO_E_INIT_SCM_EXEC_FAILURE = 0x80004011, + CO_E_INIT_ONLY_SINGLE_THREADED = 0x80004012, - RPC_E_CALL_REJECTED = 0x80010001, - RPC_E_CALL_CANCELED = 0x80010002, - RPC_E_CANTPOST_INSENDCALL = 0x80010003, - RPC_E_CANTCALLOUT_INASYNCCALL = 0x80010004, - RPC_E_CANTCALLOUT_INEXTERNALCALL = 0x80010005, - RPC_E_CONNECTION_TERMINATED = 0x80010006, - RPC_E_SERVER_DIED = 0x80010007, - RPC_E_CLIENT_DIED = 0x80010008, - RPC_E_INVALID_DATAPACKET = 0x80010009, - RPC_E_CANTTRANSMIT_CALL = 0x8001000A, - RPC_E_CLIENT_CANTMARSHAL_DATA = 0x8001000B, - RPC_E_CLIENT_CANTUNMARSHAL_DATA = 0x8001000C, - RPC_E_SERVER_CANTMARSHAL_DATA = 0x8001000D, - RPC_E_SERVER_CANTUNMARSHAL_DATA = 0x8001000E, - RPC_E_INVALID_DATA = 0x8001000F, - RPC_E_INVALID_PARAMETER = 0x80010010, - RPC_E_CANTCALLOUT_AGAIN = 0x80010011, - RPC_E_SERVER_DIED_DNE = 0x80010012, - RPC_E_SYS_CALL_FAILED = 0x80010100, - RPC_E_OUT_OF_RESOURCES = 0x80010101, - RPC_E_ATTEMPTED_MULTITHREAD = 0x80010102, - RPC_E_NOT_REGISTERED = 0x80010103, - RPC_E_FAULT = 0x80010104, - RPC_E_SERVERFAULT = 0x80010105, - RPC_E_CHANGED_MODE = 0x80010106, - RPC_E_INVALIDMETHOD = 0x80010107, - RPC_E_DISCONNECTED = 0x80010108, - RPC_E_RETRY = 0x80010109, - RPC_E_SERVERCALL_RETRYLATER = 0x8001010A, - RPC_E_SERVERCALL_REJECTED = 0x8001010B, - RPC_E_INVALID_CALLDATA = 0x8001010C, - RPC_E_CANTCALLOUT_ININPUTSYNCCALL = 0x8001010D, - RPC_E_WRONG_THREAD = 0x8001010E, - RPC_E_THREAD_NOT_INIT = 0x8001010F, - RPC_E_UNEXPECTED = 0x8001FFFF, + RPC_E_CALL_REJECTED = 0x80010001, + RPC_E_CALL_CANCELED = 0x80010002, + RPC_E_CANTPOST_INSENDCALL = 0x80010003, + RPC_E_CANTCALLOUT_INASYNCCALL = 0x80010004, + RPC_E_CANTCALLOUT_INEXTERNALCALL = 0x80010005, + RPC_E_CONNECTION_TERMINATED = 0x80010006, + RPC_E_SERVER_DIED = 0x80010007, + RPC_E_CLIENT_DIED = 0x80010008, + RPC_E_INVALID_DATAPACKET = 0x80010009, + RPC_E_CANTTRANSMIT_CALL = 0x8001000A, + RPC_E_CLIENT_CANTMARSHAL_DATA = 0x8001000B, + RPC_E_CLIENT_CANTUNMARSHAL_DATA = 0x8001000C, + RPC_E_SERVER_CANTMARSHAL_DATA = 0x8001000D, + RPC_E_SERVER_CANTUNMARSHAL_DATA = 0x8001000E, + RPC_E_INVALID_DATA = 0x8001000F, + RPC_E_INVALID_PARAMETER = 0x80010010, + RPC_E_CANTCALLOUT_AGAIN = 0x80010011, + RPC_E_SERVER_DIED_DNE = 0x80010012, + RPC_E_SYS_CALL_FAILED = 0x80010100, + RPC_E_OUT_OF_RESOURCES = 0x80010101, + RPC_E_ATTEMPTED_MULTITHREAD = 0x80010102, + RPC_E_NOT_REGISTERED = 0x80010103, + RPC_E_FAULT = 0x80010104, + RPC_E_SERVERFAULT = 0x80010105, + RPC_E_CHANGED_MODE = 0x80010106, + RPC_E_INVALIDMETHOD = 0x80010107, + RPC_E_DISCONNECTED = 0x80010108, + RPC_E_RETRY = 0x80010109, + RPC_E_SERVERCALL_RETRYLATER = 0x8001010A, + RPC_E_SERVERCALL_REJECTED = 0x8001010B, + RPC_E_INVALID_CALLDATA = 0x8001010C, + RPC_E_CANTCALLOUT_ININPUTSYNCCALL = 0x8001010D, + RPC_E_WRONG_THREAD = 0x8001010E, + RPC_E_THREAD_NOT_INIT = 0x8001010F, + RPC_E_UNEXPECTED = 0x8001FFFF, - DISP_E_UNKNOWNINTERFACE = 0x80020001, - DISP_E_MEMBERNOTFOUND = 0x80020003, - DISP_E_PARAMNOTFOUND = 0x80020004, - DISP_E_TYPEMISMATCH = 0x80020005, - DISP_E_UNKNOWNNAME = 0x80020006, - DISP_E_NONAMEDARGS = 0x80020007, - DISP_E_BADVARTYPE = 0x80020008, - DISP_E_EXCEPTION = 0x80020009, - DISP_E_OVERFLOW = 0x8002000A, - DISP_E_BADINDEX = 0x8002000B, - DISP_E_UNKNOWNLCID = 0x8002000C, - DISP_E_ARRAYISLOCKED = 0x8002000D, - DISP_E_BADPARAMCOUNT = 0x8002000E, - DISP_E_PARAMNOTOPTIONAL = 0x8002000F, - DISP_E_BADCALLEE = 0x80020010, - DISP_E_NOTACOLLECTION = 0x80020011, - DISP_E_DIVBYZERO = 0x80020012, + DISP_E_UNKNOWNINTERFACE = 0x80020001, + DISP_E_MEMBERNOTFOUND = 0x80020003, + DISP_E_PARAMNOTFOUND = 0x80020004, + DISP_E_TYPEMISMATCH = 0x80020005, + DISP_E_UNKNOWNNAME = 0x80020006, + DISP_E_NONAMEDARGS = 0x80020007, + DISP_E_BADVARTYPE = 0x80020008, + DISP_E_EXCEPTION = 0x80020009, + DISP_E_OVERFLOW = 0x8002000A, + DISP_E_BADINDEX = 0x8002000B, + DISP_E_UNKNOWNLCID = 0x8002000C, + DISP_E_ARRAYISLOCKED = 0x8002000D, + DISP_E_BADPARAMCOUNT = 0x8002000E, + DISP_E_PARAMNOTOPTIONAL = 0x8002000F, + DISP_E_BADCALLEE = 0x80020010, + DISP_E_NOTACOLLECTION = 0x80020011, + DISP_E_DIVBYZERO = 0x80020012, - TYPE_E_BUFFERTOOSMALL = 0x80028016, - TYPE_E_INVDATAREAD = 0x80028018, - TYPE_E_UNSUPFORMAT = 0x80028019, - TYPE_E_REGISTRYACCESS = 0x8002801C, - TYPE_E_LIBNOTREGISTERED = 0x8002801D, - TYPE_E_UNDEFINEDTYPE = 0x80028027, - TYPE_E_QUALIFIEDNAMEDISALLOWED = 0x80028028, - TYPE_E_INVALIDSTATE = 0x80028029, - TYPE_E_WRONGTYPEKIND = 0x8002802A, - TYPE_E_ELEMENTNOTFOUND = 0x8002802B, - TYPE_E_AMBIGUOUSNAME = 0x8002802C, - TYPE_E_NAMECONFLICT = 0x8002802D, - TYPE_E_UNKNOWNLCID = 0x8002802E, - TYPE_E_DLLFUNCTIONNOTFOUND = 0x8002802F, - TYPE_E_BADMODULEKIND = 0x800288BD, - TYPE_E_SIZETOOBIG = 0x800288C5, - TYPE_E_DUPLICATEID = 0x800288C6, - TYPE_E_INVALIDID = 0x800288CF, - TYPE_E_TYPEMISMATCH = 0x80028CA0, - TYPE_E_OUTOFBOUNDS = 0x80028CA1, - TYPE_E_IOERROR = 0x80028CA2, - TYPE_E_CANTCREATETMPFILE = 0x80028CA3, - TYPE_E_CANTLOADLIBRARY = 0x80029C4A, - TYPE_E_INCONSISTENTPROPFUNCS = 0x80029C83, - TYPE_E_CIRCULARTYPE = 0x80029C84, + TYPE_E_BUFFERTOOSMALL = 0x80028016, + TYPE_E_INVDATAREAD = 0x80028018, + TYPE_E_UNSUPFORMAT = 0x80028019, + TYPE_E_REGISTRYACCESS = 0x8002801C, + TYPE_E_LIBNOTREGISTERED = 0x8002801D, + TYPE_E_UNDEFINEDTYPE = 0x80028027, + TYPE_E_QUALIFIEDNAMEDISALLOWED = 0x80028028, + TYPE_E_INVALIDSTATE = 0x80028029, + TYPE_E_WRONGTYPEKIND = 0x8002802A, + TYPE_E_ELEMENTNOTFOUND = 0x8002802B, + TYPE_E_AMBIGUOUSNAME = 0x8002802C, + TYPE_E_NAMECONFLICT = 0x8002802D, + TYPE_E_UNKNOWNLCID = 0x8002802E, + TYPE_E_DLLFUNCTIONNOTFOUND = 0x8002802F, + TYPE_E_BADMODULEKIND = 0x800288BD, + TYPE_E_SIZETOOBIG = 0x800288C5, + TYPE_E_DUPLICATEID = 0x800288C6, + TYPE_E_INVALIDID = 0x800288CF, + TYPE_E_TYPEMISMATCH = 0x80028CA0, + TYPE_E_OUTOFBOUNDS = 0x80028CA1, + TYPE_E_IOERROR = 0x80028CA2, + TYPE_E_CANTCREATETMPFILE = 0x80028CA3, + TYPE_E_CANTLOADLIBRARY = 0x80029C4A, + TYPE_E_INCONSISTENTPROPFUNCS = 0x80029C83, + TYPE_E_CIRCULARTYPE = 0x80029C84, - STG_E_INVALIDFUNCTION = 0x80030001, - STG_E_FILENOTFOUND = 0x80030002, - STG_E_PATHNOTFOUND = 0x80030003, - STG_E_TOOMANYOPENFILES = 0x80030004, - STG_E_ACCESSDENIED = 0x80030005, - STG_E_INVALIDHANDLE = 0x80030006, - STG_E_INSUFFICIENTMEMORY = 0x80030008, - STG_E_INVALIDPOINTER = 0x80030009, - STG_E_NOMOREFILES = 0x80030012, - STG_E_DISKISWRITEPROTECTED = 0x80030013, - STG_E_SEEKERROR = 0x80030019, - STG_E_WRITEFAULT = 0x8003001D, - STG_E_READFAULT = 0x8003001E, - STG_E_SHAREVIOLATION = 0x80030020, - STG_E_LOCKVIOLATION = 0x80030021, - STG_E_FILEALREADYEXISTS = 0x80030050, - STG_E_INVALIDPARAMETER = 0x80030057, - STG_E_MEDIUMFULL = 0x80030070, - STG_E_ABNORMALAPIEXIT = 0x800300FA, - STG_E_INVALIDHEADER = 0x800300FB, - STG_E_INVALIDNAME = 0x800300FC, - STG_E_UNKNOWN = 0x800300FD, - STG_E_UNIMPLEMENTEDFUNCTION = 0x800300FE, - STG_E_INVALIDFLAG = 0x800300FF, - STG_E_INUSE = 0x80030100, - STG_E_NOTCURRENT = 0x80030101, - STG_E_REVERTED = 0x80030102, - STG_E_CANTSAVE = 0x80030103, - STG_E_OLDFORMAT = 0x80030104, - STG_E_OLDDLL = 0x80030105, - STG_E_SHAREREQUIRED = 0x80030106, - STG_E_NOTFILEBASEDSTORAGE = 0x80030107, - STG_E_EXTANTMARSHALLINGS = 0x80030108, - STG_S_CONVERTED = 0x00030200, + STG_E_INVALIDFUNCTION = 0x80030001, + STG_E_FILENOTFOUND = 0x80030002, + STG_E_PATHNOTFOUND = 0x80030003, + STG_E_TOOMANYOPENFILES = 0x80030004, + STG_E_ACCESSDENIED = 0x80030005, + STG_E_INVALIDHANDLE = 0x80030006, + STG_E_INSUFFICIENTMEMORY = 0x80030008, + STG_E_INVALIDPOINTER = 0x80030009, + STG_E_NOMOREFILES = 0x80030012, + STG_E_DISKISWRITEPROTECTED = 0x80030013, + STG_E_SEEKERROR = 0x80030019, + STG_E_WRITEFAULT = 0x8003001D, + STG_E_READFAULT = 0x8003001E, + STG_E_SHAREVIOLATION = 0x80030020, + STG_E_LOCKVIOLATION = 0x80030021, + STG_E_FILEALREADYEXISTS = 0x80030050, + STG_E_INVALIDPARAMETER = 0x80030057, + STG_E_MEDIUMFULL = 0x80030070, + STG_E_ABNORMALAPIEXIT = 0x800300FA, + STG_E_INVALIDHEADER = 0x800300FB, + STG_E_INVALIDNAME = 0x800300FC, + STG_E_UNKNOWN = 0x800300FD, + STG_E_UNIMPLEMENTEDFUNCTION = 0x800300FE, + STG_E_INVALIDFLAG = 0x800300FF, + STG_E_INUSE = 0x80030100, + STG_E_NOTCURRENT = 0x80030101, + STG_E_REVERTED = 0x80030102, + STG_E_CANTSAVE = 0x80030103, + STG_E_OLDFORMAT = 0x80030104, + STG_E_OLDDLL = 0x80030105, + STG_E_SHAREREQUIRED = 0x80030106, + STG_E_NOTFILEBASEDSTORAGE = 0x80030107, + STG_E_EXTANTMARSHALLINGS = 0x80030108, + STG_S_CONVERTED = 0x00030200, - OLE_E_FIRST = 0x80040000, - OLE_S_FIRST = 0x00040000, - OLE_E_OLEVERB = 0x80040000, - OLE_S_USEREG = 0x00040000, - OLE_E_ADVF = 0x80040001, - OLE_S_STATIC = 0x00040001, - OLE_E_ENUM_NOMORE = 0x80040002, - OLE_S_MAC_CLIPFORMAT = 0x00040002, - OLE_E_ADVISENOTSUPPORTED = 0x80040003, - OLE_E_NOCONNECTION = 0x80040004, - OLE_E_NOTRUNNING = 0x80040005, - OLE_E_NOCACHE = 0x80040006, - OLE_E_BLANK = 0x80040007, - OLE_E_CLASSDIFF = 0x80040008, - OLE_E_CANT_GETMONIKER = 0x80040009, - OLE_E_CANT_BINDTOSOURCE = 0x8004000A, - OLE_E_STATIC = 0x8004000B, - OLE_E_PROMPTSAVECANCELLED = 0x8004000C, - OLE_E_INVALIDRECT = 0x8004000D, - OLE_E_WRONGCOMPOBJ = 0x8004000E, - OLE_E_INVALIDHWND = 0x8004000F, - OLE_E_NOT_INPLACEACTIVE = 0x80040010, - OLE_E_CANTCONVERT = 0x80040011, - OLE_E_NOSTORAGE = 0x80040012, + OLE_E_FIRST = 0x80040000, + OLE_S_FIRST = 0x00040000, + OLE_E_OLEVERB = 0x80040000, + OLE_S_USEREG = 0x00040000, + OLE_E_ADVF = 0x80040001, + OLE_S_STATIC = 0x00040001, + OLE_E_ENUM_NOMORE = 0x80040002, + OLE_S_MAC_CLIPFORMAT = 0x00040002, + OLE_E_ADVISENOTSUPPORTED = 0x80040003, + OLE_E_NOCONNECTION = 0x80040004, + OLE_E_NOTRUNNING = 0x80040005, + OLE_E_NOCACHE = 0x80040006, + OLE_E_BLANK = 0x80040007, + OLE_E_CLASSDIFF = 0x80040008, + OLE_E_CANT_GETMONIKER = 0x80040009, + OLE_E_CANT_BINDTOSOURCE = 0x8004000A, + OLE_E_STATIC = 0x8004000B, + OLE_E_PROMPTSAVECANCELLED = 0x8004000C, + OLE_E_INVALIDRECT = 0x8004000D, + OLE_E_WRONGCOMPOBJ = 0x8004000E, + OLE_E_INVALIDHWND = 0x8004000F, + OLE_E_NOT_INPLACEACTIVE = 0x80040010, + OLE_E_CANTCONVERT = 0x80040011, + OLE_E_NOSTORAGE = 0x80040012, - DV_E_FORMATETC = 0x80040064, - DV_E_DVTARGETDEVICE = 0x80040065, - DV_E_STGMEDIUM = 0x80040066, - DV_E_STATDATA = 0x80040067, - DV_E_LINDEX = 0x80040068, - DV_E_TYMED = 0x80040069, - DV_E_CLIPFORMAT = 0x8004006A, - DV_E_DVASPECT = 0x8004006B, - DV_E_DVTARGETDEVICE_SIZE = 0x8004006C, - DV_E_NOIVIEWOBJECT = 0x8004006D, + DV_E_FORMATETC = 0x80040064, + DV_E_DVTARGETDEVICE = 0x80040065, + DV_E_STGMEDIUM = 0x80040066, + DV_E_STATDATA = 0x80040067, + DV_E_LINDEX = 0x80040068, + DV_E_TYMED = 0x80040069, + DV_E_CLIPFORMAT = 0x8004006A, + DV_E_DVASPECT = 0x8004006B, + DV_E_DVTARGETDEVICE_SIZE = 0x8004006C, + DV_E_NOIVIEWOBJECT = 0x8004006D, - OLE_E_LAST = 0x800400FF, - OLE_S_LAST = 0x000400FF, - DRAGDROP_E_FIRST = 0x80040100, - DRAGDROP_S_FIRST = 0x00040100, - DRAGDROP_E_NOTREGISTERED = 0x80040100, - DRAGDROP_S_DROP = 0x00040100, - DRAGDROP_E_ALREADYREGISTERED = 0x80040101, - DRAGDROP_S_CANCEL = 0x00040101, - DRAGDROP_E_INVALIDHWND = 0x80040102, - DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102, - DRAGDROP_E_LAST = 0x8004010F, - DRAGDROP_S_LAST = 0x0004010F, - CLASSFACTORY_E_FIRST = 0x80040110, - CLASSFACTORY_S_FIRST = 0x00040110, - CLASS_E_NOAGGREGATION = 0x80040110, - CLASS_E_CLASSNOTAVAILABLE = 0x80040111, - CLASSFACTORY_E_LAST = 0x8004011F, - CLASSFACTORY_S_LAST = 0x0004011F, - MARSHAL_E_FIRST = 0x80040120, - MARSHAL_S_FIRST = 0x00040120, - MARSHAL_E_LAST = 0x8004012F, - MARSHAL_S_LAST = 0x0004012F, - DATA_E_FIRST = 0x80040130, - DATA_S_FIRST = 0x00040130, - DATA_S_SAMEFORMATETC = 0x00040130, - DATA_E_LAST = 0x8004013F, - DATA_S_LAST = 0x0004013F, - VIEW_E_FIRST = 0x80040140, - VIEW_S_FIRST = 0x00040140, - VIEW_E_DRAW = 0x80040140, - VIEW_S_ALREADY_FROZEN = 0x00040140, - VIEW_E_LAST = 0x8004014F, - VIEW_S_LAST = 0x0004014F, - REGDB_E_FIRST = 0x80040150, - REGDB_S_FIRST = 0x00040150, - REGDB_E_READREGDB = 0x80040150, - REGDB_E_WRITEREGDB = 0x80040151, - REGDB_E_KEYMISSING = 0x80040152, - REGDB_E_INVALIDVALUE = 0x80040153, - REGDB_E_CLASSNOTREG = 0x80040154, - REGDB_E_IIDNOTREG = 0x80040155, - REGDB_E_LAST = 0x8004015F, - REGDB_S_LAST = 0x0004015F, - CACHE_E_FIRST = 0x80040170, - CACHE_S_FIRST = 0x00040170, - CACHE_E_NOCACHE_UPDATED = 0x80040170, - CACHE_S_FORMATETC_NOTSUPPORTED = 0x00040170, - CACHE_S_SAMECACHE = 0x00040171, - CACHE_S_SOMECACHES_NOTUPDATED = 0x00040172, - CACHE_E_LAST = 0x8004017F, - CACHE_S_LAST = 0x0004017F, - OLEOBJ_E_FIRST = 0x80040180, - OLEOBJ_S_FIRST = 0x00040180, - OLEOBJ_E_NOVERBS = 0x80040180, - OLEOBJ_S_INVALIDVERB = 0x00040180, - OLEOBJ_E_INVALIDVERB = 0x80040181, - OLEOBJ_S_CANNOT_DOVERB_NOW = 0x00040181, - OLEOBJ_S_INVALIDHWND = 0x00040182, - OLEOBJ_E_LAST = 0x8004018F, - OLEOBJ_S_LAST = 0x0004018F, - CLIENTSITE_E_FIRST = 0x80040190, - CLIENTSITE_S_FIRST = 0x00040190, - CLIENTSITE_E_LAST = 0x8004019F, - CLIENTSITE_S_LAST = 0x0004019F, - INPLACE_E_NOTUNDOABLE = 0x800401A0, - INPLACE_E_FIRST = 0x800401A0, - INPLACE_S_FIRST = 0x000401A0, - INPLACE_S_TRUNCATED = 0x000401A0, - INPLACE_E_NOTOOLSPACE = 0x800401A1, - INPLACE_E_LAST = 0x800401AF, - INPLACE_S_LAST = 0x000401AF, - ENUM_E_FIRST = 0x800401B0, - ENUM_S_FIRST = 0x000401B0, - ENUM_E_LAST = 0x800401BF, - ENUM_S_LAST = 0x000401BF, - CONVERT10_E_FIRST = 0x800401C0, - CONVERT10_S_FIRST = 0x000401C0, - CONVERT10_E_OLESTREAM_GET = 0x800401C0, - CONVERT10_S_NO_PRESENTATION = 0x000401C0, - CONVERT10_E_OLESTREAM_PUT = 0x800401C1, - CONVERT10_E_OLESTREAM_FMT = 0x800401C2, - CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = 0x800401C3, - CONVERT10_E_STG_FMT = 0x800401C4, - CONVERT10_E_STG_NO_STD_STREAM = 0x800401C5, - CONVERT10_E_STG_DIB_TO_BITMAP = 0x800401C6, - CONVERT10_E_LAST = 0x800401CF, - CONVERT10_S_LAST = 0x000401CF, - CLIPBRD_E_FIRST = 0x800401D0, - CLIPBRD_S_FIRST = 0x000401D0, - CLIPBRD_E_CANT_OPEN = 0x800401D0, - CLIPBRD_E_CANT_EMPTY = 0x800401D1, - CLIPBRD_E_CANT_SET = 0x800401D2, - CLIPBRD_E_BAD_DATA = 0x800401D3, - CLIPBRD_E_CANT_CLOSE = 0x800401D4, - CLIPBRD_E_LAST = 0x800401DF, - CLIPBRD_S_LAST = 0x000401DF, - MK_E_FIRST = 0x800401E0, - MK_S_FIRST = 0x000401E0, - MK_E_CONNECTMANUALLY = 0x800401E0, - MK_E_EXCEEDEDDEADLINE = 0x800401E1, - MK_E_NEEDGENERIC = 0x800401E2, - MK_S_REDUCED_TO_SELF = 0x000401E2, - MK_E_UNAVAILABLE = 0x800401E3, - MK_E_SYNTAX = 0x800401E4, - MK_S_ME = 0x000401E4, - MK_E_NOOBJECT = 0x800401E5, - MK_S_HIM = 0x000401E5, - MK_E_INVALIDEXTENSION = 0x800401E6, - MK_S_US = 0x000401E6, - MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = 0x800401E7, - MK_S_MONIKERALREADYREGISTERED = 0x000401E7, - MK_E_NOTBINDABLE = 0x800401E8, - MK_E_NOTBOUND = 0x800401E9, - MK_E_CANTOPENFILE = 0x800401EA, - MK_E_MUSTBOTHERUSER = 0x800401EB, - MK_E_NOINVERSE = 0x800401EC, - MK_E_NOSTORAGE = 0x800401ED, - MK_E_NOPREFIX = 0x800401EE, - MK_E_LAST = 0x800401EF, - MK_S_LAST = 0x000401EF, - MK_E_ENUMERATION_FAILED = 0x800401EF, - CO_E_FIRST = 0x800401F0, - CO_S_FIRST = 0x000401F0, - CO_E_NOTINITIALIZED = 0x800401F0, - CO_E_ALREADYINITIALIZED = 0x800401F1, - CO_E_CANTDETERMINECLASS = 0x800401F2, - CO_E_CLASSSTRING = 0x800401F3, - CO_E_IIDSTRING = 0x800401F4, - CO_E_APPNOTFOUND = 0x800401F5, - CO_E_APPSINGLEUSE = 0x800401F6, - CO_E_ERRORINAPP = 0x800401F7, - CO_E_DLLNOTFOUND = 0x800401F8, - CO_E_ERRORINDLL = 0x800401F9, - CO_E_WRONGOSFORAPP = 0x800401FA, - CO_E_OBJNOTREG = 0x800401FB, - CO_E_OBJISREG = 0x800401FC, - CO_E_OBJNOTCONNECTED = 0x800401FD, - CO_E_APPDIDNTREG = 0x800401FE, - CO_E_LAST = 0x800401FF, - CO_S_LAST = 0x000401FF, - CO_E_RELEASED = 0x800401FF, + OLE_E_LAST = 0x800400FF, + OLE_S_LAST = 0x000400FF, + DRAGDROP_E_FIRST = 0x80040100, + DRAGDROP_S_FIRST = 0x00040100, + DRAGDROP_E_NOTREGISTERED = 0x80040100, + DRAGDROP_S_DROP = 0x00040100, + DRAGDROP_E_ALREADYREGISTERED = 0x80040101, + DRAGDROP_S_CANCEL = 0x00040101, + DRAGDROP_E_INVALIDHWND = 0x80040102, + DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102, + DRAGDROP_E_LAST = 0x8004010F, + DRAGDROP_S_LAST = 0x0004010F, + CLASSFACTORY_E_FIRST = 0x80040110, + CLASSFACTORY_S_FIRST = 0x00040110, + CLASS_E_NOAGGREGATION = 0x80040110, + CLASS_E_CLASSNOTAVAILABLE = 0x80040111, + CLASSFACTORY_E_LAST = 0x8004011F, + CLASSFACTORY_S_LAST = 0x0004011F, + MARSHAL_E_FIRST = 0x80040120, + MARSHAL_S_FIRST = 0x00040120, + MARSHAL_E_LAST = 0x8004012F, + MARSHAL_S_LAST = 0x0004012F, + DATA_E_FIRST = 0x80040130, + DATA_S_FIRST = 0x00040130, + DATA_S_SAMEFORMATETC = 0x00040130, + DATA_E_LAST = 0x8004013F, + DATA_S_LAST = 0x0004013F, + VIEW_E_FIRST = 0x80040140, + VIEW_S_FIRST = 0x00040140, + VIEW_E_DRAW = 0x80040140, + VIEW_S_ALREADY_FROZEN = 0x00040140, + VIEW_E_LAST = 0x8004014F, + VIEW_S_LAST = 0x0004014F, + REGDB_E_FIRST = 0x80040150, + REGDB_S_FIRST = 0x00040150, + REGDB_E_READREGDB = 0x80040150, + REGDB_E_WRITEREGDB = 0x80040151, + REGDB_E_KEYMISSING = 0x80040152, + REGDB_E_INVALIDVALUE = 0x80040153, + REGDB_E_CLASSNOTREG = 0x80040154, + REGDB_E_IIDNOTREG = 0x80040155, + REGDB_E_LAST = 0x8004015F, + REGDB_S_LAST = 0x0004015F, + CACHE_E_FIRST = 0x80040170, + CACHE_S_FIRST = 0x00040170, + CACHE_E_NOCACHE_UPDATED = 0x80040170, + CACHE_S_FORMATETC_NOTSUPPORTED = 0x00040170, + CACHE_S_SAMECACHE = 0x00040171, + CACHE_S_SOMECACHES_NOTUPDATED = 0x00040172, + CACHE_E_LAST = 0x8004017F, + CACHE_S_LAST = 0x0004017F, + OLEOBJ_E_FIRST = 0x80040180, + OLEOBJ_S_FIRST = 0x00040180, + OLEOBJ_E_NOVERBS = 0x80040180, + OLEOBJ_S_INVALIDVERB = 0x00040180, + OLEOBJ_E_INVALIDVERB = 0x80040181, + OLEOBJ_S_CANNOT_DOVERB_NOW = 0x00040181, + OLEOBJ_S_INVALIDHWND = 0x00040182, + OLEOBJ_E_LAST = 0x8004018F, + OLEOBJ_S_LAST = 0x0004018F, + CLIENTSITE_E_FIRST = 0x80040190, + CLIENTSITE_S_FIRST = 0x00040190, + CLIENTSITE_E_LAST = 0x8004019F, + CLIENTSITE_S_LAST = 0x0004019F, + INPLACE_E_NOTUNDOABLE = 0x800401A0, + INPLACE_E_FIRST = 0x800401A0, + INPLACE_S_FIRST = 0x000401A0, + INPLACE_S_TRUNCATED = 0x000401A0, + INPLACE_E_NOTOOLSPACE = 0x800401A1, + INPLACE_E_LAST = 0x800401AF, + INPLACE_S_LAST = 0x000401AF, + ENUM_E_FIRST = 0x800401B0, + ENUM_S_FIRST = 0x000401B0, + ENUM_E_LAST = 0x800401BF, + ENUM_S_LAST = 0x000401BF, + CONVERT10_E_FIRST = 0x800401C0, + CONVERT10_S_FIRST = 0x000401C0, + CONVERT10_E_OLESTREAM_GET = 0x800401C0, + CONVERT10_S_NO_PRESENTATION = 0x000401C0, + CONVERT10_E_OLESTREAM_PUT = 0x800401C1, + CONVERT10_E_OLESTREAM_FMT = 0x800401C2, + CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = 0x800401C3, + CONVERT10_E_STG_FMT = 0x800401C4, + CONVERT10_E_STG_NO_STD_STREAM = 0x800401C5, + CONVERT10_E_STG_DIB_TO_BITMAP = 0x800401C6, + CONVERT10_E_LAST = 0x800401CF, + CONVERT10_S_LAST = 0x000401CF, + CLIPBRD_E_FIRST = 0x800401D0, + CLIPBRD_S_FIRST = 0x000401D0, + CLIPBRD_E_CANT_OPEN = 0x800401D0, + CLIPBRD_E_CANT_EMPTY = 0x800401D1, + CLIPBRD_E_CANT_SET = 0x800401D2, + CLIPBRD_E_BAD_DATA = 0x800401D3, + CLIPBRD_E_CANT_CLOSE = 0x800401D4, + CLIPBRD_E_LAST = 0x800401DF, + CLIPBRD_S_LAST = 0x000401DF, + MK_E_FIRST = 0x800401E0, + MK_S_FIRST = 0x000401E0, + MK_E_CONNECTMANUALLY = 0x800401E0, + MK_E_EXCEEDEDDEADLINE = 0x800401E1, + MK_E_NEEDGENERIC = 0x800401E2, + MK_S_REDUCED_TO_SELF = 0x000401E2, + MK_E_UNAVAILABLE = 0x800401E3, + MK_E_SYNTAX = 0x800401E4, + MK_S_ME = 0x000401E4, + MK_E_NOOBJECT = 0x800401E5, + MK_S_HIM = 0x000401E5, + MK_E_INVALIDEXTENSION = 0x800401E6, + MK_S_US = 0x000401E6, + MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = 0x800401E7, + MK_S_MONIKERALREADYREGISTERED = 0x000401E7, + MK_E_NOTBINDABLE = 0x800401E8, + MK_E_NOTBOUND = 0x800401E9, + MK_E_CANTOPENFILE = 0x800401EA, + MK_E_MUSTBOTHERUSER = 0x800401EB, + MK_E_NOINVERSE = 0x800401EC, + MK_E_NOSTORAGE = 0x800401ED, + MK_E_NOPREFIX = 0x800401EE, + MK_E_LAST = 0x800401EF, + MK_S_LAST = 0x000401EF, + MK_E_ENUMERATION_FAILED = 0x800401EF, + CO_E_FIRST = 0x800401F0, + CO_S_FIRST = 0x000401F0, + CO_E_NOTINITIALIZED = 0x800401F0, + CO_E_ALREADYINITIALIZED = 0x800401F1, + CO_E_CANTDETERMINECLASS = 0x800401F2, + CO_E_CLASSSTRING = 0x800401F3, + CO_E_IIDSTRING = 0x800401F4, + CO_E_APPNOTFOUND = 0x800401F5, + CO_E_APPSINGLEUSE = 0x800401F6, + CO_E_ERRORINAPP = 0x800401F7, + CO_E_DLLNOTFOUND = 0x800401F8, + CO_E_ERRORINDLL = 0x800401F9, + CO_E_WRONGOSFORAPP = 0x800401FA, + CO_E_OBJNOTREG = 0x800401FB, + CO_E_OBJISREG = 0x800401FC, + CO_E_OBJNOTCONNECTED = 0x800401FD, + CO_E_APPDIDNTREG = 0x800401FE, + CO_E_LAST = 0x800401FF, + CO_S_LAST = 0x000401FF, + CO_E_RELEASED = 0x800401FF, - CO_E_CLASS_CREATE_FAILED = 0x80080001, - CO_E_SCM_ERROR = 0x80080002, - CO_E_SCM_RPC_FAILURE = 0x80080003, - CO_E_BAD_PATH = 0x80080004, - CO_E_SERVER_EXEC_FAILURE = 0x80080005, - CO_E_OBJSRV_RPC_FAILURE = 0x80080006, - MK_E_NO_NORMALIZED = 0x80080007, - CO_E_SERVER_STOPPING = 0x80080008, - MEM_E_INVALID_ROOT = 0x80080009, - MEM_E_INVALID_LINK = 0x80080010, - MEM_E_INVALID_SIZE = 0x80080011, - CO_S_NOTALLINTERFACES = 0x00080012, + CO_E_CLASS_CREATE_FAILED = 0x80080001, + CO_E_SCM_ERROR = 0x80080002, + CO_E_SCM_RPC_FAILURE = 0x80080003, + CO_E_BAD_PATH = 0x80080004, + CO_E_SERVER_EXEC_FAILURE = 0x80080005, + CO_E_OBJSRV_RPC_FAILURE = 0x80080006, + MK_E_NO_NORMALIZED = 0x80080007, + CO_E_SERVER_STOPPING = 0x80080008, + MEM_E_INVALID_ROOT = 0x80080009, + MEM_E_INVALID_LINK = 0x80080010, + MEM_E_INVALID_SIZE = 0x80080011, + CO_S_NOTALLINTERFACES = 0x00080012, - NTE_BAD_UID = 0x80090001, - NTE_BAD_HASH = 0x80090002, - NTE_BAD_KEY = 0x80090003, - NTE_BAD_LEN = 0x80090004, - NTE_BAD_DATA = 0x80090005, - NTE_BAD_SIGNATURE = 0x80090006, - NTE_BAD_VER = 0x80090007, - NTE_BAD_ALGID = 0x80090008, - NTE_BAD_FLAGS = 0x80090009, - NTE_BAD_TYPE = 0x8009000A, - NTE_BAD_KEY_STATE = 0x8009000B, - NTE_BAD_HASH_STATE = 0x8009000C, - NTE_NO_KEY = 0x8009000D, - NTE_NO_MEMORY = 0x8009000E, - NTE_EXISTS = 0x8009000F, - NTE_PERM = 0x80090010, - NTE_NOT_FOUND = 0x80090011, - NTE_DOUBLE_ENCRYPT = 0x80090012, - NTE_BAD_PROVIDER = 0x80090013, - NTE_BAD_PROV_TYPE = 0x80090014, - NTE_BAD_PUBLIC_KEY = 0x80090015, - NTE_BAD_KEYSET = 0x80090016, - NTE_PROV_TYPE_NOT_DEF = 0x80090017, - NTE_PROV_TYPE_ENTRY_BAD = 0x80090018, - NTE_KEYSET_NOT_DEF = 0x80090019, - NTE_KEYSET_ENTRY_BAD = 0x8009001A, - NTE_PROV_TYPE_NO_MATCH = 0x8009001B, - NTE_SIGNATURE_FILE_BAD = 0x8009001C, - NTE_PROVIDER_DLL_FAIL = 0x8009001D, - NTE_PROV_DLL_NOT_FOUND = 0x8009001E, - NTE_BAD_KEYSET_PARAM = 0x8009001F, - NTE_FAIL = 0x80090020, - NTE_SYS_ERR = 0x80090021 + NTE_BAD_UID = 0x80090001, + NTE_BAD_HASH = 0x80090002, + NTE_BAD_KEY = 0x80090003, + NTE_BAD_LEN = 0x80090004, + NTE_BAD_DATA = 0x80090005, + NTE_BAD_SIGNATURE = 0x80090006, + NTE_BAD_VER = 0x80090007, + NTE_BAD_ALGID = 0x80090008, + NTE_BAD_FLAGS = 0x80090009, + NTE_BAD_TYPE = 0x8009000A, + NTE_BAD_KEY_STATE = 0x8009000B, + NTE_BAD_HASH_STATE = 0x8009000C, + NTE_NO_KEY = 0x8009000D, + NTE_NO_MEMORY = 0x8009000E, + NTE_EXISTS = 0x8009000F, + NTE_PERM = 0x80090010, + NTE_NOT_FOUND = 0x80090011, + NTE_DOUBLE_ENCRYPT = 0x80090012, + NTE_BAD_PROVIDER = 0x80090013, + NTE_BAD_PROV_TYPE = 0x80090014, + NTE_BAD_PUBLIC_KEY = 0x80090015, + NTE_BAD_KEYSET = 0x80090016, + NTE_PROV_TYPE_NOT_DEF = 0x80090017, + NTE_PROV_TYPE_ENTRY_BAD = 0x80090018, + NTE_KEYSET_NOT_DEF = 0x80090019, + NTE_KEYSET_ENTRY_BAD = 0x8009001A, + NTE_PROV_TYPE_NO_MATCH = 0x8009001B, + NTE_SIGNATURE_FILE_BAD = 0x8009001C, + NTE_PROVIDER_DLL_FAIL = 0x8009001D, + NTE_PROV_DLL_NOT_FOUND = 0x8009001E, + NTE_BAD_KEYSET_PARAM = 0x8009001F, + NTE_FAIL = 0x80090020, + NTE_SYS_ERR = 0x80090021 } enum : bool { - SEVERITY_SUCCESS = 0, - SEVERITY_ERROR = 1 + SEVERITY_SUCCESS = 0, + SEVERITY_ERROR = 1 } enum : uint { - FACILITY_NULL = 0, - FACILITY_RPC, - FACILITY_DISPATCH, - FACILITY_STORAGE, - FACILITY_ITF, // = 4 - FACILITY_WIN32 = 7, - FACILITY_WINDOWS = 8, - FACILITY_CONTROL = 10, - FACILITY_NT_BIT = 0x10000000 + FACILITY_NULL = 0, + FACILITY_RPC, + FACILITY_DISPATCH, + FACILITY_STORAGE, + FACILITY_ITF, // = 4 + FACILITY_WIN32 = 7, + FACILITY_WINDOWS = 8, + FACILITY_CONTROL = 10, + FACILITY_NT_BIT = 0x10000000 } // C Macros bool SUCCEEDED(HRESULT Status) { - return Status >= 0; + return Status >= 0; } bool FAILED(HRESULT Status) { - return Status < 0; + return Status < 0; } bool IS_ERROR(HRESULT Status) { - return (Status >>> 31) == SEVERITY_ERROR; + return (Status >>> 31) == SEVERITY_ERROR; } ushort HRESULT_CODE(HRESULT r) { - return cast(ushort) (r & 0xFFFF); + return cast(ushort) (r & 0xFFFF); } ushort SCODE_CODE(SCODE r) { - return cast(ushort) (r & 0xFFFF); + return cast(ushort) (r & 0xFFFF); } ushort HRESULT_FACILITY(HRESULT r) { - return cast(ushort) ((r>>16) & 0x1fff); + return cast(ushort) ((r>>16) & 0x1fff); } ushort SCODE_FACILITY(SCODE r) { - return cast(ushort) ((r>>16) & 0x1fff); + return cast(ushort) ((r>>16) & 0x1fff); } ushort HRESULT_SEVERITY(HRESULT r) { - return cast(ushort) ((r>>31) & 0x1); + return cast(ushort) ((r>>31) & 0x1); } ushort SCODE_SEVERITY(SCODE r) { - return cast(ushort) ((r>>31) & 0x1); + return cast(ushort) ((r>>31) & 0x1); } HRESULT MAKE_HRESULT(bool s, uint f, uint c) { - return (s << 31) | (f << 16) | c; + return (s << 31) | (f << 16) | c; } SCODE MAKE_SCODE(bool s, uint f, uint c) { - return (s << 31) | (f << 16) | c; + return (s << 31) | (f << 16) | c; } SCODE GetScode(HRESULT hr) { - return hr; + return hr; } HRESULT ResultFromScode(SCODE c) { - return c; + return c; } HRESULT HRESULT_FROM_NT(HRESULT x) { - return x | FACILITY_NT_BIT; + return x | FACILITY_NT_BIT; } HRESULT HRESULT_FROM_WIN32(HRESULT x) { - return x ? (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000 : 0; + return x ? (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000 : 0; } HRESULT PropagateResult(HRESULT hrPrevious, SCODE scBase) { - return scBase; + return scBase; } diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index f76ef3648a..65e2ecba8e 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -15,391 +15,391 @@ private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.window // BITMAPINFOHEADER.biCompression enum : DWORD { - BI_RGB = 0, - BI_RLE8, - BI_RLE4, - BI_BITFIELDS, - BI_JPEG, - BI_PNG + BI_RGB = 0, + BI_RLE8, + BI_RLE4, + BI_BITFIELDS, + BI_JPEG, + BI_PNG } // --- // COLORADJUSTMENT -- only for NT 3.1+, Win2000+ const WORD - CA_NEGATIVE = 1, - CA_LOG_FILTER = 2; + CA_NEGATIVE = 1, + CA_LOG_FILTER = 2; // COLORADJUSTMENT enum : WORD { - ILLUMINANT_DEVICE_DEFAULT = 0, - ILLUMINANT_A, - ILLUMINANT_B, - ILLUMINANT_C, - ILLUMINANT_D50, - ILLUMINANT_D55, - ILLUMINANT_D65, - ILLUMINANT_D75, - ILLUMINANT_F2, - ILLUMINANT_MAX_INDEX = ILLUMINANT_F2, - ILLUMINANT_TUNGSTEN = ILLUMINANT_A, - ILLUMINANT_DAYLIGHT = ILLUMINANT_C, - ILLUMINANT_FLUORESCENT = ILLUMINANT_F2, - ILLUMINANT_NTSC = ILLUMINANT_C + ILLUMINANT_DEVICE_DEFAULT = 0, + ILLUMINANT_A, + ILLUMINANT_B, + ILLUMINANT_C, + ILLUMINANT_D50, + ILLUMINANT_D55, + ILLUMINANT_D65, + ILLUMINANT_D75, + ILLUMINANT_F2, + ILLUMINANT_MAX_INDEX = ILLUMINANT_F2, + ILLUMINANT_TUNGSTEN = ILLUMINANT_A, + ILLUMINANT_DAYLIGHT = ILLUMINANT_C, + ILLUMINANT_FLUORESCENT = ILLUMINANT_F2, + ILLUMINANT_NTSC = ILLUMINANT_C } enum { - RGB_GAMMA_MIN = 2500, - RGB_GAMMA_MAX = 65000, - REFERENCE_WHITE_MIN = 6000, - REFERENCE_WHITE_MAX = 10000, - REFERENCE_BLACK_MIN = 0, - REFERENCE_BLACK_MAX = 4000, - COLOR_ADJ_MIN = -100, - COLOR_ADJ_MAX = 100, + RGB_GAMMA_MIN = 2500, + RGB_GAMMA_MAX = 65000, + REFERENCE_WHITE_MIN = 6000, + REFERENCE_WHITE_MAX = 10000, + REFERENCE_BLACK_MIN = 0, + REFERENCE_BLACK_MAX = 4000, + COLOR_ADJ_MIN = -100, + COLOR_ADJ_MAX = 100, } //--- /* FIXME: move to core.sys.windows.winuser ? */ // DrawIconEx() enum : UINT { - DI_MASK = 1, - DI_IMAGE = 2, - DI_NORMAL = 3, - DI_COMPAT = 4, - DI_DEFAULTSIZE = 8 + DI_MASK = 1, + DI_IMAGE = 2, + DI_NORMAL = 3, + DI_COMPAT = 4, + DI_DEFAULTSIZE = 8 } // DOCINFO enum : DWORD { - DI_APPBANDING = 1, - DI_ROPS_READ_DESTINATION = 2, + DI_APPBANDING = 1, + DI_ROPS_READ_DESTINATION = 2, } // ENHMETAHEADER enum : DWORD { - EMR_HEADER = 1, - EMR_POLYBEZIER, - EMR_POLYGON, - EMR_POLYLINE, - EMR_POLYBEZIERTO, - EMR_POLYLINETO, - EMR_POLYPOLYLINE, - EMR_POLYPOLYGON, - EMR_SETWINDOWEXTEX, - EMR_SETWINDOWORGEX, - EMR_SETVIEWPORTEXTEX, - EMR_SETVIEWPORTORGEX, - EMR_SETBRUSHORGEX, - EMR_EOF, - EMR_SETPIXELV, - EMR_SETMAPPERFLAGS, - EMR_SETMAPMODE, - EMR_SETBKMODE, - EMR_SETPOLYFILLMODE, - EMR_SETROP2, - EMR_SETSTRETCHBLTMODE, - EMR_SETTEXTALIGN, - EMR_SETCOLORADJUSTMENT, - EMR_SETTEXTCOLOR, - EMR_SETBKCOLOR, - EMR_OFFSETCLIPRGN, - EMR_MOVETOEX, - EMR_SETMETARGN, - EMR_EXCLUDECLIPRECT, - EMR_INTERSECTCLIPRECT, - EMR_SCALEVIEWPORTEXTEX, - EMR_SCALEWINDOWEXTEX, - EMR_SAVEDC, - EMR_RESTOREDC, - EMR_SETWORLDTRANSFORM, - EMR_MODIFYWORLDTRANSFORM, - EMR_SELECTOBJECT, - EMR_CREATEPEN, - EMR_CREATEBRUSHINDIRECT, - EMR_DELETEOBJECT, - EMR_ANGLEARC, - EMR_ELLIPSE, - EMR_RECTANGLE, - EMR_ROUNDRECT, - EMR_ARC, - EMR_CHORD, - EMR_PIE, - EMR_SELECTPALETTE, - EMR_CREATEPALETTE, - EMR_SETPALETTEENTRIES, - EMR_RESIZEPALETTE, - EMR_REALIZEPALETTE, - EMR_EXTFLOODFILL, - EMR_LINETO, - EMR_ARCTO, - EMR_POLYDRAW, - EMR_SETARCDIRECTION, - EMR_SETMITERLIMIT, - EMR_BEGINPATH, - EMR_ENDPATH, - EMR_CLOSEFIGURE, - EMR_FILLPATH, - EMR_STROKEANDFILLPATH, - EMR_STROKEPATH, - EMR_FLATTENPATH, - EMR_WIDENPATH, - EMR_SELECTCLIPPATH, - EMR_ABORTPATH, // 68 - // reserved 69 - EMR_GDICOMMENT = 70, - EMR_FILLRGN, - EMR_FRAMERGN, - EMR_INVERTRGN, - EMR_PAINTRGN, - EMR_EXTSELECTCLIPRGN, - EMR_BITBLT, - EMR_STRETCHBLT, - EMR_MASKBLT, - EMR_PLGBLT, - EMR_SETDIBITSTODEVICE, - EMR_STRETCHDIBITS, - EMR_EXTCREATEFONTINDIRECTW, - EMR_EXTTEXTOUTA, - EMR_EXTTEXTOUTW, - EMR_POLYBEZIER16, - EMR_POLYGON16, - EMR_POLYLINE16, - EMR_POLYBEZIERTO16, - EMR_POLYLINETO16, - EMR_POLYPOLYLINE16, - EMR_POLYPOLYGON16, - EMR_POLYDRAW16, - EMR_CREATEMONOBRUSH, - EMR_CREATEDIBPATTERNBRUSHPT, - EMR_EXTCREATEPEN, - EMR_POLYTEXTOUTA, - EMR_POLYTEXTOUTW, // 97 - EMR_SETICMMODE, - EMR_CREATECOLORSPACE, - EMR_SETCOLORSPACE, - EMR_DELETECOLORSPACE, - EMR_GLSRECORD, - EMR_GLSBOUNDEDRECORD, - EMR_PIXELFORMAT, // = 104 - // reserved 105 - 110 - EMR_COLORCORRECTPALETTE = 111, - EMR_SETICMPROFILEA, - EMR_SETICMPROFILEW, - EMR_ALPHABLEND, - EMR_SETLAYOUT, - EMR_TRANSPARENTBLT, // 116 - // reserved 117 - EMR_GRADIENTFILL = 118, - // reserved 119, 120 - EMR_COLORMATCHTOTARGETW = 121, - EMR_CREATECOLORSPACEW // 122 + EMR_HEADER = 1, + EMR_POLYBEZIER, + EMR_POLYGON, + EMR_POLYLINE, + EMR_POLYBEZIERTO, + EMR_POLYLINETO, + EMR_POLYPOLYLINE, + EMR_POLYPOLYGON, + EMR_SETWINDOWEXTEX, + EMR_SETWINDOWORGEX, + EMR_SETVIEWPORTEXTEX, + EMR_SETVIEWPORTORGEX, + EMR_SETBRUSHORGEX, + EMR_EOF, + EMR_SETPIXELV, + EMR_SETMAPPERFLAGS, + EMR_SETMAPMODE, + EMR_SETBKMODE, + EMR_SETPOLYFILLMODE, + EMR_SETROP2, + EMR_SETSTRETCHBLTMODE, + EMR_SETTEXTALIGN, + EMR_SETCOLORADJUSTMENT, + EMR_SETTEXTCOLOR, + EMR_SETBKCOLOR, + EMR_OFFSETCLIPRGN, + EMR_MOVETOEX, + EMR_SETMETARGN, + EMR_EXCLUDECLIPRECT, + EMR_INTERSECTCLIPRECT, + EMR_SCALEVIEWPORTEXTEX, + EMR_SCALEWINDOWEXTEX, + EMR_SAVEDC, + EMR_RESTOREDC, + EMR_SETWORLDTRANSFORM, + EMR_MODIFYWORLDTRANSFORM, + EMR_SELECTOBJECT, + EMR_CREATEPEN, + EMR_CREATEBRUSHINDIRECT, + EMR_DELETEOBJECT, + EMR_ANGLEARC, + EMR_ELLIPSE, + EMR_RECTANGLE, + EMR_ROUNDRECT, + EMR_ARC, + EMR_CHORD, + EMR_PIE, + EMR_SELECTPALETTE, + EMR_CREATEPALETTE, + EMR_SETPALETTEENTRIES, + EMR_RESIZEPALETTE, + EMR_REALIZEPALETTE, + EMR_EXTFLOODFILL, + EMR_LINETO, + EMR_ARCTO, + EMR_POLYDRAW, + EMR_SETARCDIRECTION, + EMR_SETMITERLIMIT, + EMR_BEGINPATH, + EMR_ENDPATH, + EMR_CLOSEFIGURE, + EMR_FILLPATH, + EMR_STROKEANDFILLPATH, + EMR_STROKEPATH, + EMR_FLATTENPATH, + EMR_WIDENPATH, + EMR_SELECTCLIPPATH, + EMR_ABORTPATH, // 68 + // reserved 69 + EMR_GDICOMMENT = 70, + EMR_FILLRGN, + EMR_FRAMERGN, + EMR_INVERTRGN, + EMR_PAINTRGN, + EMR_EXTSELECTCLIPRGN, + EMR_BITBLT, + EMR_STRETCHBLT, + EMR_MASKBLT, + EMR_PLGBLT, + EMR_SETDIBITSTODEVICE, + EMR_STRETCHDIBITS, + EMR_EXTCREATEFONTINDIRECTW, + EMR_EXTTEXTOUTA, + EMR_EXTTEXTOUTW, + EMR_POLYBEZIER16, + EMR_POLYGON16, + EMR_POLYLINE16, + EMR_POLYBEZIERTO16, + EMR_POLYLINETO16, + EMR_POLYPOLYLINE16, + EMR_POLYPOLYGON16, + EMR_POLYDRAW16, + EMR_CREATEMONOBRUSH, + EMR_CREATEDIBPATTERNBRUSHPT, + EMR_EXTCREATEPEN, + EMR_POLYTEXTOUTA, + EMR_POLYTEXTOUTW, // 97 + EMR_SETICMMODE, + EMR_CREATECOLORSPACE, + EMR_SETCOLORSPACE, + EMR_DELETECOLORSPACE, + EMR_GLSRECORD, + EMR_GLSBOUNDEDRECORD, + EMR_PIXELFORMAT, // = 104 + // reserved 105 - 110 + EMR_COLORCORRECTPALETTE = 111, + EMR_SETICMPROFILEA, + EMR_SETICMPROFILEW, + EMR_ALPHABLEND, + EMR_SETLAYOUT, + EMR_TRANSPARENTBLT, // 116 + // reserved 117 + EMR_GRADIENTFILL = 118, + // reserved 119, 120 + EMR_COLORMATCHTOTARGETW = 121, + EMR_CREATECOLORSPACEW // 122 } const EMR_MIN = EMR_HEADER; static if (_WIN32_WINNT >= 0x500) { - const EMR_MAX = EMR_CREATECOLORSPACEW; + const EMR_MAX = EMR_CREATECOLORSPACEW; } else { - const EMR_MAX = EMR_PIXELFORMAT; + const EMR_MAX = EMR_PIXELFORMAT; } // ENHMETAHEADER.dSignature, ENHMETAHEADER3.dSignature, // EMRFORMAT.dSignature enum : DWORD { - ENHMETA_SIGNATURE = 1179469088, - EPS_SIGNATURE = 0x46535045 + ENHMETA_SIGNATURE = 1179469088, + EPS_SIGNATURE = 0x46535045 } static if (_WIN32_WINNT >= 0x500) { - // AddFontResourceEx() - enum : DWORD { - FR_PRIVATE = 0x10, - FR_NOT_ENUM = 0x20 - } + // AddFontResourceEx() + enum : DWORD { + FR_PRIVATE = 0x10, + FR_NOT_ENUM = 0x20 + } } enum { - META_SAVEDC = 0x1E, - META_REALIZEPALETTE = 0x35, - META_SETPALENTRIES = 0x37, - META_CREATEPALETTE = 0xf7, - META_SETBKMODE = 0x102, - META_SETMAPMODE = 0x103, - META_SETROP2 = 0x104, - META_SETRELABS = 0x105, - META_SETPOLYFILLMODE = 0x106, - META_SETSTRETCHBLTMODE = 0x107, - META_SETTEXTCHAREXTRA = 0x108, - META_RESTOREDC = 0x127, - META_INVERTREGION = 0x12A, - META_PAINTREGION = 0x12B, - META_SELECTCLIPREGION = 0x12C, - META_SELECTOBJECT = 0x12D, - META_SETTEXTALIGN = 0x12E, - META_RESIZEPALETTE = 0x139, - META_DIBCREATEPATTERNBRUSH = 0x142, - META_SETLAYOUT = 0x149, - META_DELETEOBJECT = 0x1F0, - META_CREATEPATTERNBRUSH = 0x1F9, - META_SETBKCOLOR = 0x201, - META_SETTEXTCOLOR = 0x209, - META_SETTEXTJUSTIFICATION = 0x20A, - META_SETWINDOWORG = 0x20B, - META_SETWINDOWEXT = 0x20C, - META_SETVIEWPORTORG = 0x20D, - META_SETVIEWPORTEXT = 0x20E, - META_OFFSETWINDOWORG = 0x20F, - META_OFFSETVIEWPORTORG = 0x211, - META_LINETO = 0x213, - META_MOVETO = 0x214, - META_OFFSETCLIPRGN = 0x220, - META_FILLREGION = 0x228, - META_SETMAPPERFLAGS = 0x231, - META_SELECTPALETTE = 0x234, - META_CREATEPENINDIRECT = 0x2FA, - META_CREATEFONTINDIRECT = 0x2FB, - META_CREATEBRUSHINDIRECT = 0x2FC, - META_POLYGON = 0x324, - META_POLYLINE = 0x325, - META_SCALEWINDOWEXT = 0x410, - META_SCALEVIEWPORTEXT = 0x412, - META_EXCLUDECLIPRECT = 0x415, - META_INTERSECTCLIPRECT = 0x416, - META_ELLIPSE = 0x418, - META_FLOODFILL = 0x419, - META_RECTANGLE = 0x41B, - META_SETPIXEL = 0x41F, - META_FRAMEREGION = 0x429, - META_ANIMATEPALETTE = 0x436, - META_TEXTOUT = 0x521, - META_POLYPOLYGON = 0x538, - META_EXTFLOODFILL = 0x548, - META_ROUNDRECT = 0x61C, - META_PATBLT = 0x61D, - META_ESCAPE = 0x626, - META_CREATEREGION = 0x6FF, - META_ARC = 0x817, - META_PIE = 0x81A, - META_CHORD = 0x830, - META_BITBLT = 0x922, - META_DIBBITBLT = 0x940, - META_EXTTEXTOUT = 0xA32, - META_STRETCHBLT = 0xB23, - META_DIBSTRETCHBLT = 0xB41, - META_SETDIBTODEV = 0xD33, - META_STRETCHDIB = 0xF43 + META_SAVEDC = 0x1E, + META_REALIZEPALETTE = 0x35, + META_SETPALENTRIES = 0x37, + META_CREATEPALETTE = 0xf7, + META_SETBKMODE = 0x102, + META_SETMAPMODE = 0x103, + META_SETROP2 = 0x104, + META_SETRELABS = 0x105, + META_SETPOLYFILLMODE = 0x106, + META_SETSTRETCHBLTMODE = 0x107, + META_SETTEXTCHAREXTRA = 0x108, + META_RESTOREDC = 0x127, + META_INVERTREGION = 0x12A, + META_PAINTREGION = 0x12B, + META_SELECTCLIPREGION = 0x12C, + META_SELECTOBJECT = 0x12D, + META_SETTEXTALIGN = 0x12E, + META_RESIZEPALETTE = 0x139, + META_DIBCREATEPATTERNBRUSH = 0x142, + META_SETLAYOUT = 0x149, + META_DELETEOBJECT = 0x1F0, + META_CREATEPATTERNBRUSH = 0x1F9, + META_SETBKCOLOR = 0x201, + META_SETTEXTCOLOR = 0x209, + META_SETTEXTJUSTIFICATION = 0x20A, + META_SETWINDOWORG = 0x20B, + META_SETWINDOWEXT = 0x20C, + META_SETVIEWPORTORG = 0x20D, + META_SETVIEWPORTEXT = 0x20E, + META_OFFSETWINDOWORG = 0x20F, + META_OFFSETVIEWPORTORG = 0x211, + META_LINETO = 0x213, + META_MOVETO = 0x214, + META_OFFSETCLIPRGN = 0x220, + META_FILLREGION = 0x228, + META_SETMAPPERFLAGS = 0x231, + META_SELECTPALETTE = 0x234, + META_CREATEPENINDIRECT = 0x2FA, + META_CREATEFONTINDIRECT = 0x2FB, + META_CREATEBRUSHINDIRECT = 0x2FC, + META_POLYGON = 0x324, + META_POLYLINE = 0x325, + META_SCALEWINDOWEXT = 0x410, + META_SCALEVIEWPORTEXT = 0x412, + META_EXCLUDECLIPRECT = 0x415, + META_INTERSECTCLIPRECT = 0x416, + META_ELLIPSE = 0x418, + META_FLOODFILL = 0x419, + META_RECTANGLE = 0x41B, + META_SETPIXEL = 0x41F, + META_FRAMEREGION = 0x429, + META_ANIMATEPALETTE = 0x436, + META_TEXTOUT = 0x521, + META_POLYPOLYGON = 0x538, + META_EXTFLOODFILL = 0x548, + META_ROUNDRECT = 0x61C, + META_PATBLT = 0x61D, + META_ESCAPE = 0x626, + META_CREATEREGION = 0x6FF, + META_ARC = 0x817, + META_PIE = 0x81A, + META_CHORD = 0x830, + META_BITBLT = 0x922, + META_DIBBITBLT = 0x940, + META_EXTTEXTOUT = 0xA32, + META_STRETCHBLT = 0xB23, + META_DIBSTRETCHBLT = 0xB41, + META_SETDIBTODEV = 0xD33, + META_STRETCHDIB = 0xF43 } // EMRPOLYDRAW enum : BYTE { - PT_CLOSEFIGURE = 1, - PT_LINETO = 2, - PT_BEZIERTO = 4, - PT_MOVETO = 6 + PT_CLOSEFIGURE = 1, + PT_LINETO = 2, + PT_BEZIERTO = 4, + PT_MOVETO = 6 } // ---- // PIXELFORMATDESCRIPTOR.iPixelType enum : BYTE { - PFD_TYPE_RGBA = 0, - PFD_TYPE_COLORINDEX = 1 + PFD_TYPE_RGBA = 0, + PFD_TYPE_COLORINDEX = 1 } deprecated { // PIXELFORMATDESCRIPTOR. const byte - PFD_MAIN_PLANE = 0, - PFD_OVERLAY_PLANE = 1, - PFD_UNDERLAY_PLANE = -1; + PFD_MAIN_PLANE = 0, + PFD_OVERLAY_PLANE = 1, + PFD_UNDERLAY_PLANE = -1; } // PIXELFORMATDESCRIPTOR.dwFlags const DWORD - PFD_DOUBLEBUFFER = 0x00000001, - PFD_STEREO = 0x00000002, - PFD_DRAW_TO_WINDOW = 0x00000004, - PFD_DRAW_TO_BITMAP = 0x00000008, - PFD_SUPPORT_GDI = 0x00000010, - PFD_SUPPORT_OPENGL = 0x00000020, - PFD_GENERIC_FORMAT = 0x00000040, - PFD_NEED_PALETTE = 0x00000080, - PFD_NEED_SYSTEM_PALETTE = 0x00000100, - PFD_SWAP_EXCHANGE = 0x00000200, - PFD_SWAP_COPY = 0x00000400, - PFD_SWAP_LAYER_BUFFERS = 0x00000800, - PFD_GENERIC_ACCELERATED = 0x00001000, - PFD_SUPPORT_DIRECTDRAW = 0x00002000, - /* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ - PFD_DEPTH_DONTCARE = 0x20000000, - PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, - PFD_STEREO_DONTCARE = 0x80000000; + PFD_DOUBLEBUFFER = 0x00000001, + PFD_STEREO = 0x00000002, + PFD_DRAW_TO_WINDOW = 0x00000004, + PFD_DRAW_TO_BITMAP = 0x00000008, + PFD_SUPPORT_GDI = 0x00000010, + PFD_SUPPORT_OPENGL = 0x00000020, + PFD_GENERIC_FORMAT = 0x00000040, + PFD_NEED_PALETTE = 0x00000080, + PFD_NEED_SYSTEM_PALETTE = 0x00000100, + PFD_SWAP_EXCHANGE = 0x00000200, + PFD_SWAP_COPY = 0x00000400, + PFD_SWAP_LAYER_BUFFERS = 0x00000800, + PFD_GENERIC_ACCELERATED = 0x00001000, + PFD_SUPPORT_DIRECTDRAW = 0x00002000, + /* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ + PFD_DEPTH_DONTCARE = 0x20000000, + PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, + PFD_STEREO_DONTCARE = 0x80000000; // ---- const DWORD - BLACKNESS = 0x000042, - NOTSRCERASE = 0x1100A6, - NOTSRCCOPY = 0x330008, - SRCERASE = 0x440328, - DSTINVERT = 0x550009, - PATINVERT = 0x5A0049, - SRCINVERT = 0x660046, - SRCAND = 0x8800C6, - MERGEPAINT = 0xBB0226, - MERGECOPY = 0xC000CA, - SRCCOPY = 0xCC0020, - SRCPAINT = 0xEE0086, - PATCOPY = 0xF00021, - PATPAINT = 0xFB0A09, - WHITENESS = 0xFF0062; + BLACKNESS = 0x000042, + NOTSRCERASE = 0x1100A6, + NOTSRCCOPY = 0x330008, + SRCERASE = 0x440328, + DSTINVERT = 0x550009, + PATINVERT = 0x5A0049, + SRCINVERT = 0x660046, + SRCAND = 0x8800C6, + MERGEPAINT = 0xBB0226, + MERGECOPY = 0xC000CA, + SRCCOPY = 0xCC0020, + SRCPAINT = 0xEE0086, + PATCOPY = 0xF00021, + PATPAINT = 0xFB0A09, + WHITENESS = 0xFF0062; static if (_WIN32_WINNT >= 0x500) { - const DWORD - NOMIRRORBITMAP = 0x80000000, - CAPTUREBLT = 0x40000000; + const DWORD + NOMIRRORBITMAP = 0x80000000, + CAPTUREBLT = 0x40000000; } // GetROP2(), SetROP2() enum : int { - R2_BLACK = 1, - R2_NOTMERGEPEN = 2, - R2_MASKNOTPEN = 3, - R2_NOTCOPYPEN = 4, - R2_MASKPENNOT = 5, - R2_NOT = 6, - R2_XORPEN = 7, - R2_NOTMASKPEN = 8, - R2_MASKPEN = 9, - R2_NOTXORPEN = 10, - R2_NOP = 11, - R2_MERGENOTPEN = 12, - R2_COPYPEN = 13, - R2_MERGEPENNOT = 14, - R2_MERGEPEN = 15, - R2_WHITE = 16 + R2_BLACK = 1, + R2_NOTMERGEPEN = 2, + R2_MASKNOTPEN = 3, + R2_NOTCOPYPEN = 4, + R2_MASKPENNOT = 5, + R2_NOT = 6, + R2_XORPEN = 7, + R2_NOTMASKPEN = 8, + R2_MASKPEN = 9, + R2_NOTXORPEN = 10, + R2_NOP = 11, + R2_MERGENOTPEN = 12, + R2_COPYPEN = 13, + R2_MERGEPENNOT = 14, + R2_MERGEPEN = 15, + R2_WHITE = 16 } const R2_LAST = R2_WHITE; // CheckColorsInGamut() const ubyte - CM_IN_GAMUT = 0, - CM_OUT_OF_GAMUT = 255; + CM_IN_GAMUT = 0, + CM_OUT_OF_GAMUT = 255; /* UpdateICMRegKey Constants */ const int - ICM_ADDPROFILE = 1, - ICM_DELETEPROFILE = 2, - ICM_QUERYPROFILE = 3, - ICM_SETDEFAULTPROFILE = 4, - ICM_REGISTERICMATCHER = 5, - ICM_UNREGISTERICMATCHER = 6, - ICM_QUERYMATCH = 7; + ICM_ADDPROFILE = 1, + ICM_DELETEPROFILE = 2, + ICM_QUERYPROFILE = 3, + ICM_SETDEFAULTPROFILE = 4, + ICM_REGISTERICMATCHER = 5, + ICM_UNREGISTERICMATCHER = 6, + ICM_QUERYMATCH = 7; enum : int { - RGN_AND = 1, - RGN_OR = 2, - RGN_XOR = 3, - RGN_DIFF = 4, - RGN_COPY = 5 + RGN_AND = 1, + RGN_OR = 2, + RGN_XOR = 3, + RGN_DIFF = 4, + RGN_COPY = 5 } const RGN_MIN = RGN_AND; @@ -407,9 +407,9 @@ const RGN_MAX = RGN_COPY; // Return values for CombineRgn() enum { - NULLREGION = 1, - SIMPLEREGION = 2, - COMPLEXREGION = 3 + NULLREGION = 1, + SIMPLEREGION = 2, + COMPLEXREGION = 3 } const ERROR = 0; @@ -420,8 +420,8 @@ const DWORD CBM_INIT = 4; // CreateDIBitmap() enum : UINT { - DIB_RGB_COLORS = 0, - DIB_PAL_COLORS = 1 + DIB_RGB_COLORS = 0, + DIB_PAL_COLORS = 1 } // --- @@ -440,95 +440,95 @@ const ELF_CULTURE_LATIN = 0; // LOGFONT.lfWeight const LONG - FW_DONTCARE = 0, - FW_THIN = 100, - FW_EXTRALIGHT = 200, - FW_ULTRALIGHT = FW_EXTRALIGHT, - FW_LIGHT = 300, - FW_NORMAL = 400, - FW_REGULAR = FW_NORMAL, - FW_MEDIUM = 500, - FW_SEMIBOLD = 600, - FW_DEMIBOLD = FW_SEMIBOLD, - FW_BOLD = 700, - FW_EXTRABOLD = 800, - FW_ULTRABOLD = FW_EXTRABOLD, - FW_HEAVY = 900, - FW_BLACK = FW_HEAVY; + FW_DONTCARE = 0, + FW_THIN = 100, + FW_EXTRALIGHT = 200, + FW_ULTRALIGHT = FW_EXTRALIGHT, + FW_LIGHT = 300, + FW_NORMAL = 400, + FW_REGULAR = FW_NORMAL, + FW_MEDIUM = 500, + FW_SEMIBOLD = 600, + FW_DEMIBOLD = FW_SEMIBOLD, + FW_BOLD = 700, + FW_EXTRABOLD = 800, + FW_ULTRABOLD = FW_EXTRABOLD, + FW_HEAVY = 900, + FW_BLACK = FW_HEAVY; // LOGFONT.lfCharSet enum : DWORD { - ANSI_CHARSET = 0, - DEFAULT_CHARSET = 1, - SYMBOL_CHARSET = 2, - MAC_CHARSET = 77, - SHIFTJIS_CHARSET = 128, - HANGEUL_CHARSET = 129, - HANGUL_CHARSET = 129, - JOHAB_CHARSET = 130, - GB2312_CHARSET = 134, - CHINESEBIG5_CHARSET = 136, - GREEK_CHARSET = 161, - TURKISH_CHARSET = 162, - VIETNAMESE_CHARSET = 163, - HEBREW_CHARSET = 177, - ARABIC_CHARSET = 178, - BALTIC_CHARSET = 186, - RUSSIAN_CHARSET = 204, - THAI_CHARSET = 222, - EASTEUROPE_CHARSET = 238, - OEM_CHARSET = 255 + ANSI_CHARSET = 0, + DEFAULT_CHARSET = 1, + SYMBOL_CHARSET = 2, + MAC_CHARSET = 77, + SHIFTJIS_CHARSET = 128, + HANGEUL_CHARSET = 129, + HANGUL_CHARSET = 129, + JOHAB_CHARSET = 130, + GB2312_CHARSET = 134, + CHINESEBIG5_CHARSET = 136, + GREEK_CHARSET = 161, + TURKISH_CHARSET = 162, + VIETNAMESE_CHARSET = 163, + HEBREW_CHARSET = 177, + ARABIC_CHARSET = 178, + BALTIC_CHARSET = 186, + RUSSIAN_CHARSET = 204, + THAI_CHARSET = 222, + EASTEUROPE_CHARSET = 238, + OEM_CHARSET = 255 } // LOGFONT.lfOutPrecision enum : BYTE { - OUT_DEFAULT_PRECIS = 0, - OUT_STRING_PRECIS, - OUT_CHARACTER_PRECIS, - OUT_STROKE_PRECIS, - OUT_TT_PRECIS, - OUT_DEVICE_PRECIS, - OUT_RASTER_PRECIS, - OUT_TT_ONLY_PRECIS, - OUT_OUTLINE_PRECIS, - OUT_SCREEN_OUTLINE_PRECIS, - OUT_PS_ONLY_PRECIS, // 10 + OUT_DEFAULT_PRECIS = 0, + OUT_STRING_PRECIS, + OUT_CHARACTER_PRECIS, + OUT_STROKE_PRECIS, + OUT_TT_PRECIS, + OUT_DEVICE_PRECIS, + OUT_RASTER_PRECIS, + OUT_TT_ONLY_PRECIS, + OUT_OUTLINE_PRECIS, + OUT_SCREEN_OUTLINE_PRECIS, + OUT_PS_ONLY_PRECIS, // 10 } // LOGFONT.lfClipPrecision enum : BYTE { - CLIP_DEFAULT_PRECIS = 0, - CLIP_CHARACTER_PRECIS = 1, - CLIP_STROKE_PRECIS = 2, - CLIP_MASK = 15, - CLIP_LH_ANGLES = 16, - CLIP_TT_ALWAYS = 32, - CLIP_DFA_DISABLE = 64, - CLIP_EMBEDDED = 128 + CLIP_DEFAULT_PRECIS = 0, + CLIP_CHARACTER_PRECIS = 1, + CLIP_STROKE_PRECIS = 2, + CLIP_MASK = 15, + CLIP_LH_ANGLES = 16, + CLIP_TT_ALWAYS = 32, + CLIP_DFA_DISABLE = 64, + CLIP_EMBEDDED = 128 } // LOGFONT.lfQuality enum : BYTE { - DEFAULT_QUALITY = 0, - DRAFT_QUALITY, - PROOF_QUALITY, - NONANTIALIASED_QUALITY, - ANTIALIASED_QUALITY + DEFAULT_QUALITY = 0, + DRAFT_QUALITY, + PROOF_QUALITY, + NONANTIALIASED_QUALITY, + ANTIALIASED_QUALITY } // LOGFONT.lfPitchAndFamily const BYTE - DEFAULT_PITCH = 0, - FIXED_PITCH = 1, - VARIABLE_PITCH = 2, - MONO_FONT = 8, - FF_DONTCARE = 0, - FF_ROMAN = 16, - FF_SWISS = 32, - FF_SCRIPT = 64, - FF_MODERN = 48, - FF_DECORATIVE = 80; + DEFAULT_PITCH = 0, + FIXED_PITCH = 1, + VARIABLE_PITCH = 2, + MONO_FONT = 8, + FF_DONTCARE = 0, + FF_ROMAN = 16, + FF_SWISS = 32, + FF_SCRIPT = 64, + FF_MODERN = 48, + FF_DECORATIVE = 80; // ---- // Enums for the PANOSE struct @@ -536,151 +536,151 @@ const BYTE const PANOSE_COUNT=10; enum { - PAN_FAMILYTYPE_INDEX = 0, - PAN_SERIFSTYLE_INDEX, - PAN_WEIGHT_INDEX, - PAN_PROPORTION_INDEX, - PAN_CONTRAST_INDEX, - PAN_STROKEVARIATION_INDEX, - PAN_ARMSTYLE_INDEX, - PAN_LETTERFORM_INDEX, - PAN_MIDLINE_INDEX, - PAN_XHEIGHT_INDEX + PAN_FAMILYTYPE_INDEX = 0, + PAN_SERIFSTYLE_INDEX, + PAN_WEIGHT_INDEX, + PAN_PROPORTION_INDEX, + PAN_CONTRAST_INDEX, + PAN_STROKEVARIATION_INDEX, + PAN_ARMSTYLE_INDEX, + PAN_LETTERFORM_INDEX, + PAN_MIDLINE_INDEX, + PAN_XHEIGHT_INDEX } const PAN_CULTURE_LATIN=0; // NOTE: the first two values (PAN_ANY and PAN_NO_FIT) apply to all these enums! enum : BYTE { - PAN_ANY = 0, - PAN_NO_FIT = 1, + PAN_ANY = 0, + PAN_NO_FIT = 1, } enum : BYTE { - PAN_FAMILY_TEXT_DISPLAY = 2, - PAN_FAMILY_SCRIPT, - PAN_FAMILY_DECORATIVE, - PAN_FAMILY_PICTORIAL + PAN_FAMILY_TEXT_DISPLAY = 2, + PAN_FAMILY_SCRIPT, + PAN_FAMILY_DECORATIVE, + PAN_FAMILY_PICTORIAL } enum : BYTE { - PAN_SERIF_COVE = 2, - PAN_SERIF_OBTUSE_COVE, - PAN_SERIF_SQUARE_COVE, - PAN_SERIF_OBTUSE_SQUARE_COVE, - PAN_SERIF_SQUARE, - PAN_SERIF_THIN, - PAN_SERIF_BONE, - PAN_SERIF_EXAGGERATED, - PAN_SERIF_TRIANGLE, - PAN_SERIF_NORMAL_SANS, - PAN_SERIF_OBTUSE_SANS, - PAN_SERIF_PERP_SANS, - PAN_SERIF_FLARED, - PAN_SERIF_ROUNDED + PAN_SERIF_COVE = 2, + PAN_SERIF_OBTUSE_COVE, + PAN_SERIF_SQUARE_COVE, + PAN_SERIF_OBTUSE_SQUARE_COVE, + PAN_SERIF_SQUARE, + PAN_SERIF_THIN, + PAN_SERIF_BONE, + PAN_SERIF_EXAGGERATED, + PAN_SERIF_TRIANGLE, + PAN_SERIF_NORMAL_SANS, + PAN_SERIF_OBTUSE_SANS, + PAN_SERIF_PERP_SANS, + PAN_SERIF_FLARED, + PAN_SERIF_ROUNDED } enum : BYTE { - PAN_WEIGHT_VERY_LIGHT = 2, - PAN_WEIGHT_LIGHT, - PAN_WEIGHT_THIN, - PAN_WEIGHT_BOOK, - PAN_WEIGHT_MEDIUM, - PAN_WEIGHT_DEMI, - PAN_WEIGHT_BOLD, - PAN_WEIGHT_HEAVY, - PAN_WEIGHT_BLACK, - PAN_WEIGHT_NORD + PAN_WEIGHT_VERY_LIGHT = 2, + PAN_WEIGHT_LIGHT, + PAN_WEIGHT_THIN, + PAN_WEIGHT_BOOK, + PAN_WEIGHT_MEDIUM, + PAN_WEIGHT_DEMI, + PAN_WEIGHT_BOLD, + PAN_WEIGHT_HEAVY, + PAN_WEIGHT_BLACK, + PAN_WEIGHT_NORD } enum : BYTE { - PAN_PROP_OLD_STYLE = 2, - PAN_PROP_MODERN, - PAN_PROP_EVEN_WIDTH, - PAN_PROP_EXPANDED, - PAN_PROP_CONDENSED, - PAN_PROP_VERY_EXPANDED, - PAN_PROP_VERY_CONDENSED, - PAN_PROP_MONOSPACED + PAN_PROP_OLD_STYLE = 2, + PAN_PROP_MODERN, + PAN_PROP_EVEN_WIDTH, + PAN_PROP_EXPANDED, + PAN_PROP_CONDENSED, + PAN_PROP_VERY_EXPANDED, + PAN_PROP_VERY_CONDENSED, + PAN_PROP_MONOSPACED } enum : BYTE { - PAN_CONTRAST_NONE = 2, - PAN_CONTRAST_VERY_LOW, - PAN_CONTRAST_LOW, - PAN_CONTRAST_MEDIUM_LOW, - PAN_CONTRAST_MEDIUM, - PAN_CONTRAST_MEDIUM_HIGH, - PAN_CONTRAST_HIGH, - PAN_CONTRAST_VERY_HIGH + PAN_CONTRAST_NONE = 2, + PAN_CONTRAST_VERY_LOW, + PAN_CONTRAST_LOW, + PAN_CONTRAST_MEDIUM_LOW, + PAN_CONTRAST_MEDIUM, + PAN_CONTRAST_MEDIUM_HIGH, + PAN_CONTRAST_HIGH, + PAN_CONTRAST_VERY_HIGH } // PANOSE.bStrokeVariation enum : BYTE { - PAN_STROKE_GRADUAL_DIAG = 2, - PAN_STROKE_GRADUAL_TRAN, - PAN_STROKE_GRADUAL_VERT, - PAN_STROKE_GRADUAL_HORZ, - PAN_STROKE_RAPID_VERT, - PAN_STROKE_RAPID_HORZ, - PAN_STROKE_INSTANT_VERT + PAN_STROKE_GRADUAL_DIAG = 2, + PAN_STROKE_GRADUAL_TRAN, + PAN_STROKE_GRADUAL_VERT, + PAN_STROKE_GRADUAL_HORZ, + PAN_STROKE_RAPID_VERT, + PAN_STROKE_RAPID_HORZ, + PAN_STROKE_INSTANT_VERT } // PANOSE.bArmStyle enum : BYTE { - PAN_STRAIGHT_ARMS_HORZ = 2, - PAN_STRAIGHT_ARMS_WEDGE, - PAN_STRAIGHT_ARMS_VERT, - PAN_STRAIGHT_ARMS_SINGLE_SERIF, - PAN_STRAIGHT_ARMS_DOUBLE_SERIF, - PAN_BENT_ARMS_HORZ, - PAN_BENT_ARMS_WEDGE, - PAN_BENT_ARMS_VERT, - PAN_BENT_ARMS_SINGLE_SERIF, - PAN_BENT_ARMS_DOUBLE_SERIF + PAN_STRAIGHT_ARMS_HORZ = 2, + PAN_STRAIGHT_ARMS_WEDGE, + PAN_STRAIGHT_ARMS_VERT, + PAN_STRAIGHT_ARMS_SINGLE_SERIF, + PAN_STRAIGHT_ARMS_DOUBLE_SERIF, + PAN_BENT_ARMS_HORZ, + PAN_BENT_ARMS_WEDGE, + PAN_BENT_ARMS_VERT, + PAN_BENT_ARMS_SINGLE_SERIF, + PAN_BENT_ARMS_DOUBLE_SERIF } // PANOSE.bLetterForm enum : BYTE { - PAN_LETT_NORMAL_CONTACT = 2, - PAN_LETT_NORMAL_WEIGHTED, - PAN_LETT_NORMAL_BOXED, - PAN_LETT_NORMAL_FLATTENED, - PAN_LETT_NORMAL_ROUNDED, - PAN_LETT_NORMAL_OFF_CENTER, - PAN_LETT_NORMAL_SQUARE, - PAN_LETT_OBLIQUE_CONTACT, - PAN_LETT_OBLIQUE_WEIGHTED, - PAN_LETT_OBLIQUE_BOXED, - PAN_LETT_OBLIQUE_FLATTENED, - PAN_LETT_OBLIQUE_ROUNDED, - PAN_LETT_OBLIQUE_OFF_CENTER, - PAN_LETT_OBLIQUE_SQUARE + PAN_LETT_NORMAL_CONTACT = 2, + PAN_LETT_NORMAL_WEIGHTED, + PAN_LETT_NORMAL_BOXED, + PAN_LETT_NORMAL_FLATTENED, + PAN_LETT_NORMAL_ROUNDED, + PAN_LETT_NORMAL_OFF_CENTER, + PAN_LETT_NORMAL_SQUARE, + PAN_LETT_OBLIQUE_CONTACT, + PAN_LETT_OBLIQUE_WEIGHTED, + PAN_LETT_OBLIQUE_BOXED, + PAN_LETT_OBLIQUE_FLATTENED, + PAN_LETT_OBLIQUE_ROUNDED, + PAN_LETT_OBLIQUE_OFF_CENTER, + PAN_LETT_OBLIQUE_SQUARE } // PANOSE.bMidLine enum : BYTE { - PAN_MIDLINE_STANDARD_TRIMMED = 2, - PAN_MIDLINE_STANDARD_POINTED, - PAN_MIDLINE_STANDARD_SERIFED, - PAN_MIDLINE_HIGH_TRIMMED, - PAN_MIDLINE_HIGH_POINTED, - PAN_MIDLINE_HIGH_SERIFED, - PAN_MIDLINE_CONSTANT_TRIMMED, - PAN_MIDLINE_CONSTANT_POINTED, - PAN_MIDLINE_CONSTANT_SERIFED, - PAN_MIDLINE_LOW_TRIMMED, - PAN_MIDLINE_LOW_POINTED, - PAN_MIDLINE_LOW_SERIFED + PAN_MIDLINE_STANDARD_TRIMMED = 2, + PAN_MIDLINE_STANDARD_POINTED, + PAN_MIDLINE_STANDARD_SERIFED, + PAN_MIDLINE_HIGH_TRIMMED, + PAN_MIDLINE_HIGH_POINTED, + PAN_MIDLINE_HIGH_SERIFED, + PAN_MIDLINE_CONSTANT_TRIMMED, + PAN_MIDLINE_CONSTANT_POINTED, + PAN_MIDLINE_CONSTANT_SERIFED, + PAN_MIDLINE_LOW_TRIMMED, + PAN_MIDLINE_LOW_POINTED, + PAN_MIDLINE_LOW_SERIFED } // PANOSE.bXHeight enum : BYTE { - PAN_XHEIGHT_CONSTANT_SMALL = 2, - PAN_XHEIGHT_CONSTANT_STD, - PAN_XHEIGHT_CONSTANT_LARGE, - PAN_XHEIGHT_DUCKING_SMALL, - PAN_XHEIGHT_DUCKING_STD, - PAN_XHEIGHT_DUCKING_LARGE + PAN_XHEIGHT_CONSTANT_SMALL = 2, + PAN_XHEIGHT_CONSTANT_STD, + PAN_XHEIGHT_CONSTANT_LARGE, + PAN_XHEIGHT_DUCKING_SMALL, + PAN_XHEIGHT_DUCKING_STD, + PAN_XHEIGHT_DUCKING_LARGE } // ---- @@ -705,141 +705,141 @@ const FS_SYMBOL = 0x80000000; // ---- // Poly Fill Mode enum : int { - ALTERNATE = 1, - WINDING = 2 + ALTERNATE = 1, + WINDING = 2 } const int POLYFILL_LAST = WINDING; //--- // LOGBRUSH enum : LONG { - HS_HORIZONTAL = 0, - HS_VERTICAL, - HS_FDIAGONAL, - HS_BDIAGONAL, - HS_CROSS, - HS_DIAGCROSS + HS_HORIZONTAL = 0, + HS_VERTICAL, + HS_FDIAGONAL, + HS_BDIAGONAL, + HS_CROSS, + HS_DIAGCROSS } //LOGBRUSH.lbStyle enum : UINT { - BS_SOLID = 0, - BS_NULL = 1, - BS_HOLLOW = BS_NULL, - BS_HATCHED, - BS_PATTERN, - BS_INDEXED, - BS_DIBPATTERN, - BS_DIBPATTERNPT, - BS_PATTERN8X8, - BS_DIBPATTERN8X8, - BS_MONOPATTERN, + BS_SOLID = 0, + BS_NULL = 1, + BS_HOLLOW = BS_NULL, + BS_HATCHED, + BS_PATTERN, + BS_INDEXED, + BS_DIBPATTERN, + BS_DIBPATTERNPT, + BS_PATTERN8X8, + BS_DIBPATTERN8X8, + BS_MONOPATTERN, } //----- // EXTLOGPEN, ExtCreatePen() // EXTLOGPEN.elpPenStyle enum : DWORD { - PS_SOLID = 0, - PS_DASH = 1, - PS_DOT = 2, - PS_DASHDOT = 3, - PS_DASHDOTDOT = 4, - PS_NULL = 5, - PS_INSIDEFRAME = 6, - PS_USERSTYLE = 7, - PS_ALTERNATE = 8, - PS_STYLE_MASK = 15, + PS_SOLID = 0, + PS_DASH = 1, + PS_DOT = 2, + PS_DASHDOT = 3, + PS_DASHDOTDOT = 4, + PS_NULL = 5, + PS_INSIDEFRAME = 6, + PS_USERSTYLE = 7, + PS_ALTERNATE = 8, + PS_STYLE_MASK = 15, } enum : DWORD { - PS_COSMETIC = 0x00000000, - PS_GEOMETRIC = 0x00010000, - PS_TYPE_MASK = 0x000F0000, + PS_COSMETIC = 0x00000000, + PS_GEOMETRIC = 0x00010000, + PS_TYPE_MASK = 0x000F0000, } enum : DWORD { - PS_ENDCAP_ROUND = 0x00000000, - PS_ENDCAP_SQUARE = 0x00000100, - PS_ENDCAP_FLAT = 0x00000200, - PS_ENDCAP_MASK = 0x00000F00, + PS_ENDCAP_ROUND = 0x00000000, + PS_ENDCAP_SQUARE = 0x00000100, + PS_ENDCAP_FLAT = 0x00000200, + PS_ENDCAP_MASK = 0x00000F00, } enum : DWORD { - PS_JOIN_ROUND = 0x00000000, - PS_JOIN_BEVEL = 0x00001000, - PS_JOIN_MITER = 0x00002000, - PS_JOIN_MASK = 0x0000F000, + PS_JOIN_ROUND = 0x00000000, + PS_JOIN_BEVEL = 0x00001000, + PS_JOIN_MITER = 0x00002000, + PS_JOIN_MASK = 0x0000F000, } // --- // DeviceCapabilities() enum : WORD { - DC_FIELDS = 1, - DC_PAPERS, - DC_PAPERSIZE, - DC_MINEXTENT, - DC_MAXEXTENT, - DC_BINS, - DC_DUPLEX, - DC_SIZE, - DC_EXTRA, - DC_VERSION, - DC_DRIVER, - DC_BINNAMES, - DC_ENUMRESOLUTIONS, - DC_FILEDEPENDENCIES, - DC_TRUETYPE, - DC_PAPERNAMES, - DC_ORIENTATION, - DC_COPIES, - DC_BINADJUST, - DC_EMF_COMPLIANT, - DC_DATATYPE_PRODUCED, - DC_COLLATE, - DC_MANUFACTURER, - DC_MODEL, + DC_FIELDS = 1, + DC_PAPERS, + DC_PAPERSIZE, + DC_MINEXTENT, + DC_MAXEXTENT, + DC_BINS, + DC_DUPLEX, + DC_SIZE, + DC_EXTRA, + DC_VERSION, + DC_DRIVER, + DC_BINNAMES, + DC_ENUMRESOLUTIONS, + DC_FILEDEPENDENCIES, + DC_TRUETYPE, + DC_PAPERNAMES, + DC_ORIENTATION, + DC_COPIES, + DC_BINADJUST, + DC_EMF_COMPLIANT, + DC_DATATYPE_PRODUCED, + DC_COLLATE, + DC_MANUFACTURER, + DC_MODEL, } static if (_WIN32_WINNT >= 0x500) { - enum { - DC_PERSONALITY = 25, - DC_PRINTRATE = 26, - DC_PRINTRATEUNIT = 27, - DC_PRINTERMEM = 28, - DC_MEDIAREADY = 29, - DC_STAPLE = 30, - DC_PRINTRATEPPM = 31, - DC_COLORDEVICE = 32, - DC_NUP = 33, - DC_MEDIATYPENAMES = 34, - DC_MEDIATYPES = 35, - } - enum { - PRINTRATEUNIT_PPM = 1, - PRINTRATEUNIT_CPS = 2, - PRINTRATEUNIT_LPM = 3, - PRINTRATEUNIT_IPM = 4, - } + enum { + DC_PERSONALITY = 25, + DC_PRINTRATE = 26, + DC_PRINTRATEUNIT = 27, + DC_PRINTERMEM = 28, + DC_MEDIAREADY = 29, + DC_STAPLE = 30, + DC_PRINTRATEPPM = 31, + DC_COLORDEVICE = 32, + DC_NUP = 33, + DC_MEDIATYPENAMES = 34, + DC_MEDIATYPES = 35, + } + enum { + PRINTRATEUNIT_PPM = 1, + PRINTRATEUNIT_CPS = 2, + PRINTRATEUNIT_LPM = 3, + PRINTRATEUNIT_IPM = 4, + } } // return from DC_TRUETYPE const DWORD - DCTT_BITMAP = 1, - DCTT_DOWNLOAD = 2, - DCTT_SUBDEV = 4, - DCTT_DOWNLOAD_OUTLINE = 8; + DCTT_BITMAP = 1, + DCTT_DOWNLOAD = 2, + DCTT_SUBDEV = 4, + DCTT_DOWNLOAD_OUTLINE = 8; // return from DC_BINADJUST enum : DWORD { - DCBA_FACEUPNONE = 0x0000, - DCBA_FACEUPCENTER = 0x0001, - DCBA_FACEUPLEFT = 0x0002, - DCBA_FACEUPRIGHT = 0x0003, - DCBA_FACEDOWNNONE = 0x0100, - DCBA_FACEDOWNCENTER = 0x0101, - DCBA_FACEDOWNLEFT = 0x0102, - DCBA_FACEDOWNRIGHT = 0x0103, + DCBA_FACEUPNONE = 0x0000, + DCBA_FACEUPCENTER = 0x0001, + DCBA_FACEUPLEFT = 0x0002, + DCBA_FACEUPRIGHT = 0x0003, + DCBA_FACEDOWNNONE = 0x0100, + DCBA_FACEDOWNCENTER = 0x0101, + DCBA_FACEDOWNLEFT = 0x0102, + DCBA_FACEDOWNRIGHT = 0x0103, } //--- @@ -848,601 +848,601 @@ const FLOODFILLSURFACE = 1; // ExtTextOut() const UINT - ETO_OPAQUE = 0x0002, - ETO_CLIPPED = 0x0004, - ETO_GLYPH_INDEX = 0x0010, - ETO_RTLREADING = 0x0080, - ETO_NUMERICSLOCAL = 0x0400, - ETO_NUMERICSLATIN = 0x0800, - ETO_IGNORELANGUAGE = 0x1000; + ETO_OPAQUE = 0x0002, + ETO_CLIPPED = 0x0004, + ETO_GLYPH_INDEX = 0x0010, + ETO_RTLREADING = 0x0080, + ETO_NUMERICSLOCAL = 0x0400, + ETO_NUMERICSLATIN = 0x0800, + ETO_IGNORELANGUAGE = 0x1000; static if (_WIN32_WINNT >= 0x500) { - const UINT - ETO_PDY = 0x2000; + const UINT + ETO_PDY = 0x2000; } // GdiComment() enum { - GDICOMMENT_BEGINGROUP = 0x00000002, - GDICOMMENT_ENDGROUP = 0x00000003, - GDICOMMENT_UNICODE_STRING = 0x00000040, - GDICOMMENT_UNICODE_END = 0x00000080, - GDICOMMENT_MULTIFORMATS = 0x40000004, - GDICOMMENT_IDENTIFIER = 0x43494447, - GDICOMMENT_WINDOWS_METAFILE = 0x80000001, + GDICOMMENT_BEGINGROUP = 0x00000002, + GDICOMMENT_ENDGROUP = 0x00000003, + GDICOMMENT_UNICODE_STRING = 0x00000040, + GDICOMMENT_UNICODE_END = 0x00000080, + GDICOMMENT_MULTIFORMATS = 0x40000004, + GDICOMMENT_IDENTIFIER = 0x43494447, + GDICOMMENT_WINDOWS_METAFILE = 0x80000001, } // Get/SetArcDirection() enum : int { - AD_COUNTERCLOCKWISE = 1, - AD_CLOCKWISE = 2 + AD_COUNTERCLOCKWISE = 1, + AD_CLOCKWISE = 2 } const RDH_RECTANGLES = 1; // GCPRESULTS.lpClass enum { - GCPCLASS_LATIN = 1, - GCPCLASS_HEBREW = 2, - GCPCLASS_ARABIC = 2, - GCPCLASS_NEUTRAL, - GCPCLASS_LOCALNUMBER, - GCPCLASS_LATINNUMBER, - GCPCLASS_LATINNUMERICTERMINATOR, - GCPCLASS_LATINNUMERICSEPARATOR, - GCPCLASS_NUMERICSEPARATOR, // = 8, - GCPCLASS_POSTBOUNDRTL = 16, - GCPCLASS_POSTBOUNDLTR = 32, - GCPCLASS_PREBOUNDRTL = 64, - GCPCLASS_PREBOUNDLTR = 128, - GCPGLYPH_LINKAFTER = 0x4000, - GCPGLYPH_LINKBEFORE = 0x8000 + GCPCLASS_LATIN = 1, + GCPCLASS_HEBREW = 2, + GCPCLASS_ARABIC = 2, + GCPCLASS_NEUTRAL, + GCPCLASS_LOCALNUMBER, + GCPCLASS_LATINNUMBER, + GCPCLASS_LATINNUMERICTERMINATOR, + GCPCLASS_LATINNUMERICSEPARATOR, + GCPCLASS_NUMERICSEPARATOR, // = 8, + GCPCLASS_POSTBOUNDRTL = 16, + GCPCLASS_POSTBOUNDLTR = 32, + GCPCLASS_PREBOUNDRTL = 64, + GCPCLASS_PREBOUNDLTR = 128, + GCPGLYPH_LINKAFTER = 0x4000, + GCPGLYPH_LINKBEFORE = 0x8000 } // GetBoundsRect(), SetBoundsRect() const UINT - DCB_RESET = 1, - DCB_ACCUMULATE = 2, - DCB_SET = DCB_RESET | DCB_ACCUMULATE, - DCB_ENABLE = 4, - DCB_DISABLE = 8, - DCB_DIRTY = DCB_ACCUMULATE; + DCB_RESET = 1, + DCB_ACCUMULATE = 2, + DCB_SET = DCB_RESET | DCB_ACCUMULATE, + DCB_ENABLE = 4, + DCB_DISABLE = 8, + DCB_DIRTY = DCB_ACCUMULATE; //--- // GetObjectType() enum : DWORD { - OBJ_PEN = 1, - OBJ_BRUSH, - OBJ_DC, - OBJ_METADC, - OBJ_PAL, - OBJ_FONT, - OBJ_BITMAP, - OBJ_REGION, - OBJ_METAFILE, - OBJ_MEMDC, - OBJ_EXTPEN, - OBJ_ENHMETADC, - OBJ_ENHMETAFILE, - OBJ_COLORSPACE, + OBJ_PEN = 1, + OBJ_BRUSH, + OBJ_DC, + OBJ_METADC, + OBJ_PAL, + OBJ_FONT, + OBJ_BITMAP, + OBJ_REGION, + OBJ_METAFILE, + OBJ_MEMDC, + OBJ_EXTPEN, + OBJ_ENHMETADC, + OBJ_ENHMETAFILE, + OBJ_COLORSPACE, } //--------------------- // Capabilities for GetDeviceCaps(dc, xxx) enum : int { - DRIVERVERSION = 0, - TECHNOLOGY = 2, - HORZSIZE = 4, - VERTSIZE = 6, - HORZRES = 8, - VERTRES = 10, - BITSPIXEL = 12, - PLANES = 14, - NUMBRUSHES = 16, - NUMPENS = 18, - NUMMARKERS = 20, - NUMFONTS = 22, - NUMCOLORS = 24, - PDEVICESIZE = 26, - CURVECAPS = 28, - LINECAPS = 30, - POLYGONALCAPS = 32, - TEXTCAPS = 34, - CLIPCAPS = 36, - RASTERCAPS = 38, - ASPECTX = 40, - ASPECTY = 42, - ASPECTXY = 44, - LOGPIXELSX = 88, - LOGPIXELSY = 90, - SIZEPALETTE = 104, - NUMRESERVED = 106, - COLORRES = 108, - PHYSICALWIDTH = 110, - PHYSICALHEIGHT = 111, - PHYSICALOFFSETX = 112, - PHYSICALOFFSETY = 113, - SCALINGFACTORX = 114, - SCALINGFACTORY = 115, - VREFRESH = 116, - DESKTOPVERTRES = 117, - DESKTOPHORZRES = 118, - BLTALIGNMENT = 119 + DRIVERVERSION = 0, + TECHNOLOGY = 2, + HORZSIZE = 4, + VERTSIZE = 6, + HORZRES = 8, + VERTRES = 10, + BITSPIXEL = 12, + PLANES = 14, + NUMBRUSHES = 16, + NUMPENS = 18, + NUMMARKERS = 20, + NUMFONTS = 22, + NUMCOLORS = 24, + PDEVICESIZE = 26, + CURVECAPS = 28, + LINECAPS = 30, + POLYGONALCAPS = 32, + TEXTCAPS = 34, + CLIPCAPS = 36, + RASTERCAPS = 38, + ASPECTX = 40, + ASPECTY = 42, + ASPECTXY = 44, + LOGPIXELSX = 88, + LOGPIXELSY = 90, + SIZEPALETTE = 104, + NUMRESERVED = 106, + COLORRES = 108, + PHYSICALWIDTH = 110, + PHYSICALHEIGHT = 111, + PHYSICALOFFSETX = 112, + PHYSICALOFFSETY = 113, + SCALINGFACTORX = 114, + SCALINGFACTORY = 115, + VREFRESH = 116, + DESKTOPVERTRES = 117, + DESKTOPHORZRES = 118, + BLTALIGNMENT = 119 } static if (_WIN32_WINNT >= 0x500) { enum : int { - SHADEBLENDCAPS = 120, - COLORMGMTCAPS = 121, + SHADEBLENDCAPS = 120, + COLORMGMTCAPS = 121, } } // Return values for GetDeviceCaps(dc, TECHNOLOGY) enum : int { - DT_PLOTTER = 0, - DT_RASDISPLAY, - DT_RASPRINTER, - DT_RASCAMERA, - DT_CHARSTREAM, - DT_METAFILE, - DT_DISPFILE // = 6 + DT_PLOTTER = 0, + DT_RASDISPLAY, + DT_RASPRINTER, + DT_RASCAMERA, + DT_CHARSTREAM, + DT_METAFILE, + DT_DISPFILE // = 6 } // Return values for GetDeviceCaps(dc, RASTERCAPS) const int - RC_NONE = 0, - RC_BITBLT = 1, - RC_BANDING = 2, - RC_SCALING = 4, - RC_BITMAP64 = 8, - RC_GDI20_OUTPUT = 16, - RC_GDI20_STATE = 32, - RC_SAVEBITMAP = 64, - RC_DI_BITMAP = 128, - RC_PALETTE = 256, - RC_DIBTODEV = 512, - RC_BIGFONT = 1024, - RC_STRETCHBLT = 2048, - RC_FLOODFILL = 4096, - RC_STRETCHDIB = 8192, - RC_OP_DX_OUTPUT = 0x4000, - RC_DEVBITS = 0x8000; + RC_NONE = 0, + RC_BITBLT = 1, + RC_BANDING = 2, + RC_SCALING = 4, + RC_BITMAP64 = 8, + RC_GDI20_OUTPUT = 16, + RC_GDI20_STATE = 32, + RC_SAVEBITMAP = 64, + RC_DI_BITMAP = 128, + RC_PALETTE = 256, + RC_DIBTODEV = 512, + RC_BIGFONT = 1024, + RC_STRETCHBLT = 2048, + RC_FLOODFILL = 4096, + RC_STRETCHDIB = 8192, + RC_OP_DX_OUTPUT = 0x4000, + RC_DEVBITS = 0x8000; static if (_WIN32_WINNT >= 0x500) { - /* Shading and blending caps */ - const SB_NONE = 0x00000000; - const SB_CONST_ALPHA = 0x00000001; - const SB_PIXEL_ALPHA = 0x00000002; - const SB_PREMULT_ALPHA = 0x00000004; - const SB_GRAD_RECT = 0x00000010; - const SB_GRAD_TRI = 0x00000020; - /* Color Management caps */ - const CM_NONE = 0x00000000; - const CM_DEVICE_ICM = 0x00000001; - const CM_GAMMA_RAMP = 0x00000002; - const CM_CMYK_COLOR = 0x00000004; + /* Shading and blending caps */ + const SB_NONE = 0x00000000; + const SB_CONST_ALPHA = 0x00000001; + const SB_PIXEL_ALPHA = 0x00000002; + const SB_PREMULT_ALPHA = 0x00000004; + const SB_GRAD_RECT = 0x00000010; + const SB_GRAD_TRI = 0x00000020; + /* Color Management caps */ + const CM_NONE = 0x00000000; + const CM_DEVICE_ICM = 0x00000001; + const CM_GAMMA_RAMP = 0x00000002; + const CM_CMYK_COLOR = 0x00000004; } // Return values for GetDeviceCaps(dc, CURVECAPS) const int - CC_NONE = 0, - CC_CIRCLES = 1, - CC_PIE = 2, - CC_CHORD = 4, - CC_ELLIPSES = 8, - CC_WIDE = 16, - CC_STYLED = 32, - CC_WIDESTYLED = 64, - CC_INTERIORS = 128, - CC_ROUNDRECT = 256; + CC_NONE = 0, + CC_CIRCLES = 1, + CC_PIE = 2, + CC_CHORD = 4, + CC_ELLIPSES = 8, + CC_WIDE = 16, + CC_STYLED = 32, + CC_WIDESTYLED = 64, + CC_INTERIORS = 128, + CC_ROUNDRECT = 256; // Return values for GetDeviceCaps(dc, LINECAPS) const int - LC_NONE = 0, - LC_POLYLINE = 2, - LC_MARKER = 4, - LC_POLYMARKER = 8, - LC_WIDE = 16, - LC_STYLED = 32, - LC_WIDESTYLED = 64, - LC_INTERIORS = 128; + LC_NONE = 0, + LC_POLYLINE = 2, + LC_MARKER = 4, + LC_POLYMARKER = 8, + LC_WIDE = 16, + LC_STYLED = 32, + LC_WIDESTYLED = 64, + LC_INTERIORS = 128; // Return values for GetDeviceCaps(dc, POLYGONALCAPS) const int - PC_NONE = 0, - PC_POLYGON = 1, - PC_RECTANGLE = 2, - PC_WINDPOLYGON = 4, - PC_TRAPEZOID = 4, - PC_SCANLINE = 8, - PC_WIDE = 16, - PC_STYLED = 32, - PC_WIDESTYLED = 64, - PC_INTERIORS = 128, - PC_POLYPOLYGON = 256, - PC_PATHS = 512; + PC_NONE = 0, + PC_POLYGON = 1, + PC_RECTANGLE = 2, + PC_WINDPOLYGON = 4, + PC_TRAPEZOID = 4, + PC_SCANLINE = 8, + PC_WIDE = 16, + PC_STYLED = 32, + PC_WIDESTYLED = 64, + PC_INTERIORS = 128, + PC_POLYPOLYGON = 256, + PC_PATHS = 512; /* Clipping Capabilities */ const int CP_NONE = 0, - CP_RECTANGLE = 1, - CP_REGION = 2; + CP_RECTANGLE = 1, + CP_REGION = 2; // Return values for GetDeviceCaps(dc, TEXTCAPS) const int - TC_OP_CHARACTER = 1, - TC_OP_STROKE = 2, - TC_CP_STROKE = 4, - TC_CR_90 = 8, - TC_CR_ANY = 16, - TC_SF_X_YINDEP = 32, - TC_SA_DOUBLE = 64, - TC_SA_INTEGER = 128, - TC_SA_CONTIN = 256, - TC_EA_DOUBLE = 512, - TC_IA_ABLE = 1024, - TC_UA_ABLE = 2048, - TC_SO_ABLE = 4096, - TC_RA_ABLE = 8192, - TC_VA_ABLE = 16384, - TC_RESERVED = 32768, - TC_SCROLLBLT = 65536; + TC_OP_CHARACTER = 1, + TC_OP_STROKE = 2, + TC_CP_STROKE = 4, + TC_CR_90 = 8, + TC_CR_ANY = 16, + TC_SF_X_YINDEP = 32, + TC_SA_DOUBLE = 64, + TC_SA_INTEGER = 128, + TC_SA_CONTIN = 256, + TC_EA_DOUBLE = 512, + TC_IA_ABLE = 1024, + TC_UA_ABLE = 2048, + TC_SO_ABLE = 4096, + TC_RA_ABLE = 8192, + TC_VA_ABLE = 16384, + TC_RESERVED = 32768, + TC_SCROLLBLT = 65536; // End GetDeviceCaps //--------------------- // GetCharacterPlacement(), and GetFontLanguageInfo() const DWORD - GCP_DBCS = 1, - GCP_REORDER = 2, - GCP_USEKERNING = 8, - GCP_GLYPHSHAPE = 16, - GCP_LIGATE = 32, - GCP_DIACRITIC = 256, - GCP_KASHIDA = 1024, - GCP_ERROR = 0x8000, - GCP_JUSTIFY = 0x10000, - GCP_CLASSIN = 0x80000, - GCP_MAXEXTENT = 0x100000, - GCP_JUSTIFYIN = 0x200000, - GCP_DISPLAYZWG = 0x400000, - GCP_SYMSWAPOFF = 0x800000, - GCP_NUMERICOVERRIDE = 0x1000000, - GCP_NEUTRALOVERRIDE = 0x2000000, - GCP_NUMERICSLATIN = 0x4000000, - GCP_NUMERICSLOCAL = 0x8000000, - // Only for GetFontLanguageInfo() - FLI_GLYPHS = 0x40000, - FLI_MASK = 0x103b; + GCP_DBCS = 1, + GCP_REORDER = 2, + GCP_USEKERNING = 8, + GCP_GLYPHSHAPE = 16, + GCP_LIGATE = 32, + GCP_DIACRITIC = 256, + GCP_KASHIDA = 1024, + GCP_ERROR = 0x8000, + GCP_JUSTIFY = 0x10000, + GCP_CLASSIN = 0x80000, + GCP_MAXEXTENT = 0x100000, + GCP_JUSTIFYIN = 0x200000, + GCP_DISPLAYZWG = 0x400000, + GCP_SYMSWAPOFF = 0x800000, + GCP_NUMERICOVERRIDE = 0x1000000, + GCP_NEUTRALOVERRIDE = 0x2000000, + GCP_NUMERICSLATIN = 0x4000000, + GCP_NUMERICSLOCAL = 0x8000000, + // Only for GetFontLanguageInfo() + FLI_GLYPHS = 0x40000, + FLI_MASK = 0x103b; // GetGlyphOutline() enum : UINT { - GGO_METRICS = 0, - GGO_BITMAP = 1, - GGO_NATIVE = 2, - GGO_BEZIER = 3, - GGO_GRAY2_BITMAP = 4, - GGO_GRAY4_BITMAP = 5, - GGO_GRAY8_BITMAP = 6, - GGO_GLYPH_INDEX = 128, - GGO_UNHINTED = 256 + GGO_METRICS = 0, + GGO_BITMAP = 1, + GGO_NATIVE = 2, + GGO_BEZIER = 3, + GGO_GRAY2_BITMAP = 4, + GGO_GRAY4_BITMAP = 5, + GGO_GRAY8_BITMAP = 6, + GGO_GLYPH_INDEX = 128, + GGO_UNHINTED = 256 } enum : int { - GM_COMPATIBLE = 1, - GM_ADVANCED + GM_COMPATIBLE = 1, + GM_ADVANCED } const GM_LAST = GM_ADVANCED; enum : int { - MM_TEXT = 1, - MM_LOMETRIC, - MM_HIMETRIC, - MM_LOENGLISH, - MM_HIENGLISH, - MM_TWIPS, - MM_ISOTROPIC, - MM_ANISOTROPIC, + MM_TEXT = 1, + MM_LOMETRIC, + MM_HIMETRIC, + MM_LOENGLISH, + MM_HIENGLISH, + MM_TWIPS, + MM_ISOTROPIC, + MM_ANISOTROPIC, } const int - MM_MIN = MM_TEXT, - MM_MAX = MM_ANISOTROPIC, - MM_MAX_FIXEDSCALE = MM_TWIPS; + MM_MIN = MM_TEXT, + MM_MAX = MM_ANISOTROPIC, + MM_MAX_FIXEDSCALE = MM_TWIPS; const ABSOLUTE = 1; const RELATIVE = 2; enum : BYTE { - PC_RESERVED = 1, - PC_EXPLICIT = 2, - PC_NOCOLLAPSE = 4 + PC_RESERVED = 1, + PC_EXPLICIT = 2, + PC_NOCOLLAPSE = 4 } /* FIXME: move to core.sys.windows.commctrl ? */ // ImageList const COLORREF - CLR_NONE = 0xffffffff, - CLR_INVALID = CLR_NONE, - CLR_DEFAULT = 0xff000000; + CLR_NONE = 0xffffffff, + CLR_INVALID = CLR_NONE, + CLR_DEFAULT = 0xff000000; // RASTERIZER_STATUS.wFlags const short - TT_AVAILABLE = 1, - TT_ENABLED = 2; + TT_AVAILABLE = 1, + TT_ENABLED = 2; // GetStockObject() enum : int { - WHITE_BRUSH = 0, - LTGRAY_BRUSH, - GRAY_BRUSH, - DKGRAY_BRUSH, - BLACK_BRUSH, - HOLLOW_BRUSH, // = 5 - NULL_BRUSH = HOLLOW_BRUSH, - WHITE_PEN = 6, - BLACK_PEN, - NULL_PEN, // = 8 - OEM_FIXED_FONT = 10, - ANSI_FIXED_FONT, - ANSI_VAR_FONT, - SYSTEM_FONT, - DEVICE_DEFAULT_FONT, - DEFAULT_PALETTE, - SYSTEM_FIXED_FONT, - DEFAULT_GUI_FONT = SYSTEM_FIXED_FONT + 1, + WHITE_BRUSH = 0, + LTGRAY_BRUSH, + GRAY_BRUSH, + DKGRAY_BRUSH, + BLACK_BRUSH, + HOLLOW_BRUSH, // = 5 + NULL_BRUSH = HOLLOW_BRUSH, + WHITE_PEN = 6, + BLACK_PEN, + NULL_PEN, // = 8 + OEM_FIXED_FONT = 10, + ANSI_FIXED_FONT, + ANSI_VAR_FONT, + SYSTEM_FONT, + DEVICE_DEFAULT_FONT, + DEFAULT_PALETTE, + SYSTEM_FIXED_FONT, + DEFAULT_GUI_FONT = SYSTEM_FIXED_FONT + 1, } static if (_WIN32_WINNT >= 0x500) { - enum : int { - DC_BRUSH = DEFAULT_GUI_FONT + 1, - DC_PEN, - } + enum : int { + DC_BRUSH = DEFAULT_GUI_FONT + 1, + DC_PEN, + } } static if (_WIN32_WINNT >= 0x500) { - const STOCK_LAST = DC_PEN; + const STOCK_LAST = DC_PEN; } else { - const STOCK_LAST = DEFAULT_GUI_FONT; + const STOCK_LAST = DEFAULT_GUI_FONT; } // Get/SetSystemPaletteUse() enum : UINT { - SYSPAL_ERROR = 0, - SYSPAL_STATIC = 1, - SYSPAL_NOSTATIC = 2, - SYSPAL_NOSTATIC256 = 3, + SYSPAL_ERROR = 0, + SYSPAL_STATIC = 1, + SYSPAL_NOSTATIC = 2, + SYSPAL_NOSTATIC256 = 3, } // SetTextAlign() const UINT - TA_TOP = 0, - TA_CENTER = 6, - TA_BOTTOM = 8, - TA_BASELINE = 24, - TA_LEFT = 0, - TA_RIGHT = 2, - TA_RTLREADING = 256, - TA_NOUPDATECP = 0, - TA_UPDATECP = 1, - TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING, - VTA_BASELINE = TA_BASELINE, - VTA_CENTER = TA_CENTER, - VTA_LEFT = TA_BOTTOM, - VTA_RIGHT = TA_TOP, - VTA_BOTTOM = TA_RIGHT, - VTA_TOP = TA_LEFT; + TA_TOP = 0, + TA_CENTER = 6, + TA_BOTTOM = 8, + TA_BASELINE = 24, + TA_LEFT = 0, + TA_RIGHT = 2, + TA_RTLREADING = 256, + TA_NOUPDATECP = 0, + TA_UPDATECP = 1, + TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING, + VTA_BASELINE = TA_BASELINE, + VTA_CENTER = TA_CENTER, + VTA_LEFT = TA_BOTTOM, + VTA_RIGHT = TA_TOP, + VTA_BOTTOM = TA_RIGHT, + VTA_TOP = TA_LEFT; // EMRMODIFYWORLDTRANSFORM.iMode enum : DWORD { - MWT_IDENTITY = 1, - MWT_LEFTMULTIPLY, - MWT_RIGHTMULTIPLY + MWT_IDENTITY = 1, + MWT_LEFTMULTIPLY, + MWT_RIGHTMULTIPLY } const DWORD - MWT_MIN = MWT_IDENTITY, - MWT_MAX = MWT_RIGHTMULTIPLY; + MWT_MIN = MWT_IDENTITY, + MWT_MAX = MWT_RIGHTMULTIPLY; enum { - TRANSPARENT = 1, - OPAQUE = 2 + TRANSPARENT = 1, + OPAQUE = 2 } // Get/SetStretchMode() enum : int { - BLACKONWHITE = 1, - WHITEONBLACK = 2, - COLORONCOLOR = 3, - HALFTONE = 4, + BLACKONWHITE = 1, + WHITEONBLACK = 2, + COLORONCOLOR = 3, + HALFTONE = 4, - STRETCH_ANDSCANS = 1, - STRETCH_ORSCANS = 2, - STRETCH_DELETESCANS = 3, - STRETCH_HALFTONE = 4, + STRETCH_ANDSCANS = 1, + STRETCH_ORSCANS = 2, + STRETCH_DELETESCANS = 3, + STRETCH_HALFTONE = 4, - MAXSTRETCHBLTMODE = 4 + MAXSTRETCHBLTMODE = 4 } // TranslateCharsetInfo() enum : DWORD { - TCI_SRCCHARSET = 1, - TCI_SRCCODEPAGE = 2, - TCI_SRCFONTSIG = 3, - TCI_SRCLOCALE = 0x1000, + TCI_SRCCHARSET = 1, + TCI_SRCCODEPAGE = 2, + TCI_SRCFONTSIG = 3, + TCI_SRCLOCALE = 0x1000, } // SetICMMode() enum : int { - ICM_OFF = 1, - ICM_ON = 2, - ICM_QUERY = 3, - ICM_DONE_OUTSIDEDC = 4, + ICM_OFF = 1, + ICM_ON = 2, + ICM_QUERY = 3, + ICM_DONE_OUTSIDEDC = 4, } // ---- // Escape() Spooler Error Codes enum : int { - SP_NOTREPORTED = 0x4000, - SP_ERROR = -1, - SP_APPABORT = -2, - SP_USERABORT = -3, - SP_OUTOFDISK = -4, - SP_OUTOFMEMORY = -5 + SP_NOTREPORTED = 0x4000, + SP_ERROR = -1, + SP_APPABORT = -2, + SP_USERABORT = -3, + SP_OUTOFDISK = -4, + SP_OUTOFMEMORY = -5 } // Escape(), ExtEscape() // Most of the following are deprecated (Win16 only) enum : int { - NEWFRAME = 1, - ABORTDOC = 2, - NEXTBAND = 3, - SETCOLORTABLE = 4, - GETCOLORTABLE = 5, - FLUSHOUTPUT = 6, - DRAFTMODE = 7, - QUERYESCSUPPORT = 8, - SETABORTPROC = 9, - STARTDOC = 10, - ENDDOC = 11, - GETPHYSPAGESIZE = 12, - GETPRINTINGOFFSET = 13, - GETSCALINGFACTOR = 14, - MFCOMMENT = 15, - GETPENWIDTH = 16, - SETCOPYCOUNT = 17, - SELECTPAPERSOURCE = 18, - DEVICEDATA = 19, - PASSTHROUGH = 19, - GETTECHNOLOGY = 20, - SETLINECAP = 21, - SETLINEJOIN = 22, - SETMITERLIMIT = 23, - BANDINFO = 24, - DRAWPATTERNRECT = 25, - GETVECTORPENSIZE = 26, - GETVECTORBRUSHSIZE = 27, - ENABLEDUPLEX = 28, - GETSETPAPERBINS = 29, - GETSETPRINTORIENT = 30, - ENUMPAPERBINS = 31, - SETDIBSCALING = 32, - EPSPRINTING = 33, - ENUMPAPERMETRICS = 34, - GETSETPAPERMETRICS = 35, - POSTSCRIPT_DATA = 37, - POSTSCRIPT_IGNORE = 38, - MOUSETRAILS = 39, - GETDEVICEUNITS = 42, - GETEXTENDEDTEXTMETRICS = 256, - GETEXTENTTABLE = 257, - GETPAIRKERNTABLE = 258, - GETTRACKKERNTABLE = 259, - EXTTEXTOUT = 512, - GETFACENAME = 513, - DOWNLOADFACE = 514, - ENABLERELATIVEWIDTHS = 768, - ENABLEPAIRKERNING = 769, - SETKERNTRACK = 770, - SETALLJUSTVALUES = 771, - SETCHARSET = 772, - STRETCHBLT = 2048, - METAFILE_DRIVER = 2049, - GETSETSCREENPARAMS = 3072, - QUERYDIBSUPPORT = 3073, - BEGIN_PATH = 4096, - CLIP_TO_PATH = 4097, - END_PATH = 4098, - EXT_DEVICE_CAPS = 4099, - RESTORE_CTM = 4100, - SAVE_CTM = 4101, - SET_ARC_DIRECTION = 4102, - SET_BACKGROUND_COLOR = 4103, - SET_POLY_MODE = 4104, - SET_SCREEN_ANGLE = 4105, - SET_SPREAD = 4106, - TRANSFORM_CTM = 4107, - SET_CLIP_BOX = 4108, - SET_BOUNDS = 4109, - SET_MIRROR_MODE = 4110, - OPENCHANNEL = 4110, - DOWNLOADHEADER = 4111, - CLOSECHANNEL = 4112, - POSTSCRIPT_PASSTHROUGH = 4115, - ENCAPSULATED_POSTSCRIPT = 4116, - POSTSCRIPT_IDENTIFY = 4117, - POSTSCRIPT_INJECTION = 4118, - CHECKJPEGFORMAT = 4119, - CHECKPNGFORMAT = 4120, - GET_PS_FEATURESETTING = 4121, - SPCLPASSTHROUGH2 = 4568, + NEWFRAME = 1, + ABORTDOC = 2, + NEXTBAND = 3, + SETCOLORTABLE = 4, + GETCOLORTABLE = 5, + FLUSHOUTPUT = 6, + DRAFTMODE = 7, + QUERYESCSUPPORT = 8, + SETABORTPROC = 9, + STARTDOC = 10, + ENDDOC = 11, + GETPHYSPAGESIZE = 12, + GETPRINTINGOFFSET = 13, + GETSCALINGFACTOR = 14, + MFCOMMENT = 15, + GETPENWIDTH = 16, + SETCOPYCOUNT = 17, + SELECTPAPERSOURCE = 18, + DEVICEDATA = 19, + PASSTHROUGH = 19, + GETTECHNOLOGY = 20, + SETLINECAP = 21, + SETLINEJOIN = 22, + SETMITERLIMIT = 23, + BANDINFO = 24, + DRAWPATTERNRECT = 25, + GETVECTORPENSIZE = 26, + GETVECTORBRUSHSIZE = 27, + ENABLEDUPLEX = 28, + GETSETPAPERBINS = 29, + GETSETPRINTORIENT = 30, + ENUMPAPERBINS = 31, + SETDIBSCALING = 32, + EPSPRINTING = 33, + ENUMPAPERMETRICS = 34, + GETSETPAPERMETRICS = 35, + POSTSCRIPT_DATA = 37, + POSTSCRIPT_IGNORE = 38, + MOUSETRAILS = 39, + GETDEVICEUNITS = 42, + GETEXTENDEDTEXTMETRICS = 256, + GETEXTENTTABLE = 257, + GETPAIRKERNTABLE = 258, + GETTRACKKERNTABLE = 259, + EXTTEXTOUT = 512, + GETFACENAME = 513, + DOWNLOADFACE = 514, + ENABLERELATIVEWIDTHS = 768, + ENABLEPAIRKERNING = 769, + SETKERNTRACK = 770, + SETALLJUSTVALUES = 771, + SETCHARSET = 772, + STRETCHBLT = 2048, + METAFILE_DRIVER = 2049, + GETSETSCREENPARAMS = 3072, + QUERYDIBSUPPORT = 3073, + BEGIN_PATH = 4096, + CLIP_TO_PATH = 4097, + END_PATH = 4098, + EXT_DEVICE_CAPS = 4099, + RESTORE_CTM = 4100, + SAVE_CTM = 4101, + SET_ARC_DIRECTION = 4102, + SET_BACKGROUND_COLOR = 4103, + SET_POLY_MODE = 4104, + SET_SCREEN_ANGLE = 4105, + SET_SPREAD = 4106, + TRANSFORM_CTM = 4107, + SET_CLIP_BOX = 4108, + SET_BOUNDS = 4109, + SET_MIRROR_MODE = 4110, + OPENCHANNEL = 4110, + DOWNLOADHEADER = 4111, + CLOSECHANNEL = 4112, + POSTSCRIPT_PASSTHROUGH = 4115, + ENCAPSULATED_POSTSCRIPT = 4116, + POSTSCRIPT_IDENTIFY = 4117, + POSTSCRIPT_INJECTION = 4118, + CHECKJPEGFORMAT = 4119, + CHECKPNGFORMAT = 4120, + GET_PS_FEATURESETTING = 4121, + SPCLPASSTHROUGH2 = 4568, } enum : int { - PSIDENT_GDICENTRIC = 0, - PSIDENT_PSCENTRIC = 1, + PSIDENT_GDICENTRIC = 0, + PSIDENT_PSCENTRIC = 1, } /* * Header structure for the input buffer to POSTSCRIPT_INJECTION escape */ struct PSINJECTDATA { - DWORD DataBytes; - WORD InjectionPoint; - WORD PageNumber; + DWORD DataBytes; + WORD InjectionPoint; + WORD PageNumber; } alias PSINJECTDATA* PPSINJECTDATA; /* Constants for PSINJECTDATA.InjectionPoint field */ enum { - PSINJECT_BEGINSTREAM = 1, - PSINJECT_PSADOBE = 2, - PSINJECT_PAGESATEND = 3, - PSINJECT_PAGES = 4, - PSINJECT_DOCNEEDEDRES = 5, - PSINJECT_DOCSUPPLIEDRES = 6, - PSINJECT_PAGEORDER = 7, - PSINJECT_ORIENTATION = 8, - PSINJECT_BOUNDINGBOX = 9, - PSINJECT_DOCUMENTPROCESSCOLORS = 10, - PSINJECT_COMMENTS = 11, - PSINJECT_BEGINDEFAULTS = 12, - PSINJECT_ENDDEFAULTS = 13, - PSINJECT_BEGINPROLOG = 14, - PSINJECT_ENDPROLOG = 15, - PSINJECT_BEGINSETUP = 16, - PSINJECT_ENDSETUP = 17, - PSINJECT_TRAILER = 18, - PSINJECT_EOF = 19, - PSINJECT_ENDSTREAM = 20, - PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21, - - PSINJECT_PAGENUMBER = 100, - PSINJECT_BEGINPAGESETUP = 101, - PSINJECT_ENDPAGESETUP = 102, - PSINJECT_PAGETRAILER = 103, - PSINJECT_PLATECOLOR = 104, - PSINJECT_SHOWPAGE = 105, - PSINJECT_PAGEBBOX = 106, - PSINJECT_ENDPAGECOMMENTS = 107, - - PSINJECT_VMSAVE = 200, - PSINJECT_VMRESTORE = 201, + PSINJECT_BEGINSTREAM = 1, + PSINJECT_PSADOBE = 2, + PSINJECT_PAGESATEND = 3, + PSINJECT_PAGES = 4, + PSINJECT_DOCNEEDEDRES = 5, + PSINJECT_DOCSUPPLIEDRES = 6, + PSINJECT_PAGEORDER = 7, + PSINJECT_ORIENTATION = 8, + PSINJECT_BOUNDINGBOX = 9, + PSINJECT_DOCUMENTPROCESSCOLORS = 10, + PSINJECT_COMMENTS = 11, + PSINJECT_BEGINDEFAULTS = 12, + PSINJECT_ENDDEFAULTS = 13, + PSINJECT_BEGINPROLOG = 14, + PSINJECT_ENDPROLOG = 15, + PSINJECT_BEGINSETUP = 16, + PSINJECT_ENDSETUP = 17, + PSINJECT_TRAILER = 18, + PSINJECT_EOF = 19, + PSINJECT_ENDSTREAM = 20, + PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21, + + PSINJECT_PAGENUMBER = 100, + PSINJECT_BEGINPAGESETUP = 101, + PSINJECT_ENDPAGESETUP = 102, + PSINJECT_PAGETRAILER = 103, + PSINJECT_PLATECOLOR = 104, + PSINJECT_SHOWPAGE = 105, + PSINJECT_PAGEBBOX = 106, + PSINJECT_ENDPAGECOMMENTS = 107, + + PSINJECT_VMSAVE = 200, + PSINJECT_VMRESTORE = 201, } /* Parameter for GET_PS_FEATURESETTING escape */ enum { - FEATURESETTING_NUP = 0, - FEATURESETTING_OUTPUT = 1, - FEATURESETTING_PSLEVEL = 2, - FEATURESETTING_CUSTPAPER = 3, - FEATURESETTING_MIRROR = 4, - FEATURESETTING_NEGATIVE = 5, - FEATURESETTING_PROTOCOL = 6, + FEATURESETTING_NUP = 0, + FEATURESETTING_OUTPUT = 1, + FEATURESETTING_PSLEVEL = 2, + FEATURESETTING_CUSTPAPER = 3, + FEATURESETTING_MIRROR = 4, + FEATURESETTING_NEGATIVE = 5, + FEATURESETTING_PROTOCOL = 6, } enum { - FEATURESETTING_PRIVATE_BEGIN = 0x1000, - FEATURESETTING_PRIVATE_END = 0x1FFF, + FEATURESETTING_PRIVATE_BEGIN = 0x1000, + FEATURESETTING_PRIVATE_END = 0x1FFF, } /* Value returned for FEATURESETTING_PROTOCOL */ @@ -1465,23 +1465,23 @@ const ASPECT_FILTERING = 1; // LOGCOLORSPACE.lcsCSType enum : LCSCSTYPE { - LCS_CALIBRATED_RGB = 0, - LCS_DEVICE_RGB, - LCS_DEVICE_CMYK + LCS_CALIBRATED_RGB = 0, + LCS_DEVICE_RGB, + LCS_DEVICE_CMYK } /* What this for? */ // LOGCOLORSPACE.lcsIntent enum : LCSGAMUTMATCH { - LCS_GM_BUSINESS = 1, - LCS_GM_GRAPHICS = 2, - LCS_GM_IMAGES = 4, - LCS_GM_ABS_COLORIMETRIC = 8, + LCS_GM_BUSINESS = 1, + LCS_GM_GRAPHICS = 2, + LCS_GM_IMAGES = 4, + LCS_GM_ABS_COLORIMETRIC = 8, } const DWORD - RASTER_FONTTYPE = 1, - DEVICE_FONTTYPE = 2, - TRUETYPE_FONTTYPE = 4; + RASTER_FONTTYPE = 1, + DEVICE_FONTTYPE = 2, + TRUETYPE_FONTTYPE = 4; // --- // DEVMODE struct @@ -1496,142 +1496,142 @@ const WORD DM_SPECVERSION = 0x0401; // DEVMODE.dmOrientation enum : short { - DMORIENT_PORTRAIT = 1, - DMORIENT_LANDSCAPE = 2 + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2 } // DEVMODE.dmPaperSize enum : short { - DMPAPER_LETTER = 1, - DMPAPER_LETTERSMALL, - DMPAPER_TABLOID, - DMPAPER_LEDGER, - DMPAPER_LEGAL, - DMPAPER_STATEMENT, - DMPAPER_EXECUTIVE, - DMPAPER_A3, - DMPAPER_A4, - DMPAPER_A4SMALL, - DMPAPER_A5, - DMPAPER_B4, - DMPAPER_B5, - DMPAPER_FOLIO, - DMPAPER_QUARTO, - DMPAPER_10X14, - DMPAPER_11X17, - DMPAPER_NOTE, - DMPAPER_ENV_9, - DMPAPER_ENV_10, - DMPAPER_ENV_11, - DMPAPER_ENV_12, - DMPAPER_ENV_14, - DMPAPER_CSHEET, - DMPAPER_DSHEET, - DMPAPER_ESHEET, - DMPAPER_ENV_DL, - DMPAPER_ENV_C5, - DMPAPER_ENV_C3, - DMPAPER_ENV_C4, - DMPAPER_ENV_C6, - DMPAPER_ENV_C65, - DMPAPER_ENV_B4, - DMPAPER_ENV_B5, - DMPAPER_ENV_B6, - DMPAPER_ENV_ITALY, - DMPAPER_ENV_MONARCH, - DMPAPER_ENV_PERSONAL, - DMPAPER_FANFOLD_US, - DMPAPER_FANFOLD_STD_GERMAN, - DMPAPER_FANFOLD_LGL_GERMAN, - DMPAPER_ISO_B4, - DMPAPER_JAPANESE_POSTCARD, - DMPAPER_9X11, - DMPAPER_10X11, - DMPAPER_15X11, - DMPAPER_ENV_INVITE, - DMPAPER_RESERVED_48, - DMPAPER_RESERVED_49, - DMPAPER_LETTER_EXTRA, - DMPAPER_LEGAL_EXTRA, - DMPAPER_TABLOID_EXTRA, - DMPAPER_A4_EXTRA, - DMPAPER_LETTER_TRANSVERSE, - DMPAPER_A4_TRANSVERSE, - DMPAPER_LETTER_EXTRA_TRANSVERSE, - DMPAPER_A_PLUS, - DMPAPER_B_PLUS, - DMPAPER_LETTER_PLUS, - DMPAPER_A4_PLUS, - DMPAPER_A5_TRANSVERSE, - DMPAPER_B5_TRANSVERSE, - DMPAPER_A3_EXTRA, - DMPAPER_A5_EXTRA, - DMPAPER_B5_EXTRA, - DMPAPER_A2, - DMPAPER_A3_TRANSVERSE, - DMPAPER_A3_EXTRA_TRANSVERSE // = 68 + DMPAPER_LETTER = 1, + DMPAPER_LETTERSMALL, + DMPAPER_TABLOID, + DMPAPER_LEDGER, + DMPAPER_LEGAL, + DMPAPER_STATEMENT, + DMPAPER_EXECUTIVE, + DMPAPER_A3, + DMPAPER_A4, + DMPAPER_A4SMALL, + DMPAPER_A5, + DMPAPER_B4, + DMPAPER_B5, + DMPAPER_FOLIO, + DMPAPER_QUARTO, + DMPAPER_10X14, + DMPAPER_11X17, + DMPAPER_NOTE, + DMPAPER_ENV_9, + DMPAPER_ENV_10, + DMPAPER_ENV_11, + DMPAPER_ENV_12, + DMPAPER_ENV_14, + DMPAPER_CSHEET, + DMPAPER_DSHEET, + DMPAPER_ESHEET, + DMPAPER_ENV_DL, + DMPAPER_ENV_C5, + DMPAPER_ENV_C3, + DMPAPER_ENV_C4, + DMPAPER_ENV_C6, + DMPAPER_ENV_C65, + DMPAPER_ENV_B4, + DMPAPER_ENV_B5, + DMPAPER_ENV_B6, + DMPAPER_ENV_ITALY, + DMPAPER_ENV_MONARCH, + DMPAPER_ENV_PERSONAL, + DMPAPER_FANFOLD_US, + DMPAPER_FANFOLD_STD_GERMAN, + DMPAPER_FANFOLD_LGL_GERMAN, + DMPAPER_ISO_B4, + DMPAPER_JAPANESE_POSTCARD, + DMPAPER_9X11, + DMPAPER_10X11, + DMPAPER_15X11, + DMPAPER_ENV_INVITE, + DMPAPER_RESERVED_48, + DMPAPER_RESERVED_49, + DMPAPER_LETTER_EXTRA, + DMPAPER_LEGAL_EXTRA, + DMPAPER_TABLOID_EXTRA, + DMPAPER_A4_EXTRA, + DMPAPER_LETTER_TRANSVERSE, + DMPAPER_A4_TRANSVERSE, + DMPAPER_LETTER_EXTRA_TRANSVERSE, + DMPAPER_A_PLUS, + DMPAPER_B_PLUS, + DMPAPER_LETTER_PLUS, + DMPAPER_A4_PLUS, + DMPAPER_A5_TRANSVERSE, + DMPAPER_B5_TRANSVERSE, + DMPAPER_A3_EXTRA, + DMPAPER_A5_EXTRA, + DMPAPER_B5_EXTRA, + DMPAPER_A2, + DMPAPER_A3_TRANSVERSE, + DMPAPER_A3_EXTRA_TRANSVERSE // = 68 } static if (_WIN32_WINNT >= 0x500) { - enum : short { - DMPAPER_DBL_JAPANESE_POSTCARD = 69, - DMPAPER_A6, - DMPAPER_JENV_KAKU2, - DMPAPER_JENV_KAKU3, - DMPAPER_JENV_CHOU3, - DMPAPER_JENV_CHOU4, - DMPAPER_LETTER_ROTATED, - DMPAPER_A3_ROTATED, - DMPAPER_A4_ROTATED, - DMPAPER_A5_ROTATED, - DMPAPER_B4_JIS_ROTATED, - DMPAPER_B5_JIS_ROTATED, - DMPAPER_JAPANESE_POSTCARD_ROTATED, - DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED, - DMPAPER_A6_ROTATED, - DMPAPER_JENV_KAKU2_ROTATED, - DMPAPER_JENV_KAKU3_ROTATED, - DMPAPER_JENV_CHOU3_ROTATED, - DMPAPER_JENV_CHOU4_ROTATED, - DMPAPER_B6_JIS, - DMPAPER_B6_JIS_ROTATED, - DMPAPER_12X11, - DMPAPER_JENV_YOU4, - DMPAPER_JENV_YOU4_ROTATED, - DMPAPER_P16K, - DMPAPER_P32K, - DMPAPER_P32KBIG, - DMPAPER_PENV_1, - DMPAPER_PENV_2, - DMPAPER_PENV_3, - DMPAPER_PENV_4, - DMPAPER_PENV_5, - DMPAPER_PENV_6, - DMPAPER_PENV_7, - DMPAPER_PENV_8, - DMPAPER_PENV_9, - DMPAPER_PENV_10, - DMPAPER_P16K_ROTATED, - DMPAPER_P32K_ROTATED, - DMPAPER_P32KBIG_ROTATED, - DMPAPER_PENV_1_ROTATED, - DMPAPER_PENV_2_ROTATED, - DMPAPER_PENV_3_ROTATED, - DMPAPER_PENV_4_ROTATED, - DMPAPER_PENV_5_ROTATED, - DMPAPER_PENV_6_ROTATED, - DMPAPER_PENV_7_ROTATED, - DMPAPER_PENV_8_ROTATED, - DMPAPER_PENV_9_ROTATED, - DMPAPER_PENV_10_ROTATED // 118 - } + enum : short { + DMPAPER_DBL_JAPANESE_POSTCARD = 69, + DMPAPER_A6, + DMPAPER_JENV_KAKU2, + DMPAPER_JENV_KAKU3, + DMPAPER_JENV_CHOU3, + DMPAPER_JENV_CHOU4, + DMPAPER_LETTER_ROTATED, + DMPAPER_A3_ROTATED, + DMPAPER_A4_ROTATED, + DMPAPER_A5_ROTATED, + DMPAPER_B4_JIS_ROTATED, + DMPAPER_B5_JIS_ROTATED, + DMPAPER_JAPANESE_POSTCARD_ROTATED, + DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED, + DMPAPER_A6_ROTATED, + DMPAPER_JENV_KAKU2_ROTATED, + DMPAPER_JENV_KAKU3_ROTATED, + DMPAPER_JENV_CHOU3_ROTATED, + DMPAPER_JENV_CHOU4_ROTATED, + DMPAPER_B6_JIS, + DMPAPER_B6_JIS_ROTATED, + DMPAPER_12X11, + DMPAPER_JENV_YOU4, + DMPAPER_JENV_YOU4_ROTATED, + DMPAPER_P16K, + DMPAPER_P32K, + DMPAPER_P32KBIG, + DMPAPER_PENV_1, + DMPAPER_PENV_2, + DMPAPER_PENV_3, + DMPAPER_PENV_4, + DMPAPER_PENV_5, + DMPAPER_PENV_6, + DMPAPER_PENV_7, + DMPAPER_PENV_8, + DMPAPER_PENV_9, + DMPAPER_PENV_10, + DMPAPER_P16K_ROTATED, + DMPAPER_P32K_ROTATED, + DMPAPER_P32KBIG_ROTATED, + DMPAPER_PENV_1_ROTATED, + DMPAPER_PENV_2_ROTATED, + DMPAPER_PENV_3_ROTATED, + DMPAPER_PENV_4_ROTATED, + DMPAPER_PENV_5_ROTATED, + DMPAPER_PENV_6_ROTATED, + DMPAPER_PENV_7_ROTATED, + DMPAPER_PENV_8_ROTATED, + DMPAPER_PENV_9_ROTATED, + DMPAPER_PENV_10_ROTATED // 118 + } } const short DMPAPER_FIRST = DMPAPER_LETTER; static if (_WIN32_WINNT >= 0x500) { - const short DMPAPER_LAST = DMPAPER_PENV_10_ROTATED; + const short DMPAPER_LAST = DMPAPER_PENV_10_ROTATED; } else { - const short DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE; + const short DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE; } const short DMPAPER_USER = 256; @@ -1639,189 +1639,189 @@ const short DMPAPER_USER = 256; // DEVMODE.dmDefaultSource enum : short { - DMBIN_ONLYONE = 1, - DMBIN_UPPER = 1, - DMBIN_LOWER, - DMBIN_MIDDLE, - DMBIN_MANUAL, - DMBIN_ENVELOPE, - DMBIN_ENVMANUAL, - DMBIN_AUTO, - DMBIN_TRACTOR, - DMBIN_SMALLFMT, - DMBIN_LARGEFMT, - DMBIN_LARGECAPACITY, // = 11 - DMBIN_CASSETTE = 14, - DMBIN_FORMSOURCE, + DMBIN_ONLYONE = 1, + DMBIN_UPPER = 1, + DMBIN_LOWER, + DMBIN_MIDDLE, + DMBIN_MANUAL, + DMBIN_ENVELOPE, + DMBIN_ENVMANUAL, + DMBIN_AUTO, + DMBIN_TRACTOR, + DMBIN_SMALLFMT, + DMBIN_LARGEFMT, + DMBIN_LARGECAPACITY, // = 11 + DMBIN_CASSETTE = 14, + DMBIN_FORMSOURCE, } enum : short { - DMBIN_FIRST = DMBIN_UPPER, - DMBIN_LAST = DMBIN_FORMSOURCE, - DMBIN_USER = 256, + DMBIN_FIRST = DMBIN_UPPER, + DMBIN_LAST = DMBIN_FORMSOURCE, + DMBIN_USER = 256, } // DEVMODE.dmPrintQuality enum : short { - DMRES_DRAFT = -1, - DMRES_LOW = -2, - DMRES_MEDIUM = -3, - DMRES_HIGH = -4 + DMRES_DRAFT = -1, + DMRES_LOW = -2, + DMRES_MEDIUM = -3, + DMRES_HIGH = -4 } // DEVMODE.dmColor enum : short { - DMCOLOR_MONOCHROME = 1, - DMCOLOR_COLOR = 2 + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2 } // DEVMODE.dmDuplex enum : short { - DMDUP_SIMPLEX = 1, - DMDUP_VERTICAL = 2, - DMDUP_HORIZONTAL = 3 + DMDUP_SIMPLEX = 1, + DMDUP_VERTICAL = 2, + DMDUP_HORIZONTAL = 3 } // DEVMODE.dmTTOption enum : short { - DMTT_BITMAP = 1, - DMTT_DOWNLOAD, - DMTT_SUBDEV, - DMTT_DOWNLOAD_OUTLINE + DMTT_BITMAP = 1, + DMTT_DOWNLOAD, + DMTT_SUBDEV, + DMTT_DOWNLOAD_OUTLINE } // DEVMODE.dmCollate enum : short { - DMCOLLATE_FALSE = 0, - DMCOLLATE_TRUE + DMCOLLATE_FALSE = 0, + DMCOLLATE_TRUE } static if (_WIN32_WINNT >= 0x501) { - /* DEVMODE dmDisplayOrientation specifiations */ - enum : short { - DMDO_DEFAULT = 0, - DMDO_90 = 1, - DMDO_180 = 2, - DMDO_270 = 3, - } + /* DEVMODE dmDisplayOrientation specifiations */ + enum : short { + DMDO_DEFAULT = 0, + DMDO_90 = 1, + DMDO_180 = 2, + DMDO_270 = 3, + } - /* DEVMODE dmDisplayFixedOutput specifiations */ - enum : short { - DMDFO_DEFAULT = 0, - DMDFO_STRETCH = 1, - DMDFO_CENTER = 2, - } + /* DEVMODE dmDisplayFixedOutput specifiations */ + enum : short { + DMDFO_DEFAULT = 0, + DMDFO_STRETCH = 1, + DMDFO_CENTER = 2, + } } /* FIXME: this flags are deprecated ? */ // DEVMODE.dmDisplayFlags const DWORD - DM_GRAYSCALE = 1, - DM_INTERLACED = 2; + DM_GRAYSCALE = 1, + DM_INTERLACED = 2; const DWORD - DMDISPLAYFLAGS_TEXTMODE = 0x00000004; + DMDISPLAYFLAGS_TEXTMODE = 0x00000004; /* dmNup , multiple logical page per physical page options */ const DWORD - DMNUP_SYSTEM = 1, - DMNUP_ONEUP = 2; + DMNUP_SYSTEM = 1, + DMNUP_ONEUP = 2; // DEVMODE.dmFields const DWORD - DM_ORIENTATION = 0x00000001, - DM_PAPERSIZE = 0x00000002, - DM_PAPERLENGTH = 0x00000004, - DM_PAPERWIDTH = 0x00000008, - DM_SCALE = 0x00000010; + DM_ORIENTATION = 0x00000001, + DM_PAPERSIZE = 0x00000002, + DM_PAPERLENGTH = 0x00000004, + DM_PAPERWIDTH = 0x00000008, + DM_SCALE = 0x00000010; static if (_WIN32_WINNT >= 0x500) { - const DWORD - DM_POSITION = 0x00000020, - DM_NUP = 0x00000040; + const DWORD + DM_POSITION = 0x00000020, + DM_NUP = 0x00000040; } static if (_WIN32_WINNT >= 0x501) { - const DWORD - DM_DISPLAYORIENTATION = 0x00000080; + const DWORD + DM_DISPLAYORIENTATION = 0x00000080; } const DWORD - DM_COPIES = 0x00000100, - DM_DEFAULTSOURCE = 0x00000200, - DM_PRINTQUALITY = 0x00000400, - DM_COLOR = 0x00000800, - DM_DUPLEX = 0x00001000, - DM_YRESOLUTION = 0x00002000, - DM_TTOPTION = 0x00004000, - DM_COLLATE = 0x00008000, - DM_FORMNAME = 0x00010000, - DM_LOGPIXELS = 0x00020000, - DM_BITSPERPEL = 0x00040000, - DM_PELSWIDTH = 0x00080000, - DM_PELSHEIGHT = 0x00100000, - DM_DISPLAYFLAGS = 0x00200000, - DM_DISPLAYFREQUENCY = 0x00400000, - DM_ICMMETHOD = 0x00800000, - DM_ICMINTENT = 0x01000000, - DM_MEDIATYPE = 0x02000000, - DM_DITHERTYPE = 0x04000000, - DM_PANNINGWIDTH = 0x08000000, - DM_PANNINGHEIGHT = 0x10000000; + DM_COPIES = 0x00000100, + DM_DEFAULTSOURCE = 0x00000200, + DM_PRINTQUALITY = 0x00000400, + DM_COLOR = 0x00000800, + DM_DUPLEX = 0x00001000, + DM_YRESOLUTION = 0x00002000, + DM_TTOPTION = 0x00004000, + DM_COLLATE = 0x00008000, + DM_FORMNAME = 0x00010000, + DM_LOGPIXELS = 0x00020000, + DM_BITSPERPEL = 0x00040000, + DM_PELSWIDTH = 0x00080000, + DM_PELSHEIGHT = 0x00100000, + DM_DISPLAYFLAGS = 0x00200000, + DM_DISPLAYFREQUENCY = 0x00400000, + DM_ICMMETHOD = 0x00800000, + DM_ICMINTENT = 0x01000000, + DM_MEDIATYPE = 0x02000000, + DM_DITHERTYPE = 0x04000000, + DM_PANNINGWIDTH = 0x08000000, + DM_PANNINGHEIGHT = 0x10000000; static if (_WIN32_WINNT >= 0x501) { - const DWORD - DM_DISPLAYFIXEDOUTPUT = 0x20000000; + const DWORD + DM_DISPLAYFIXEDOUTPUT = 0x20000000; } // DEVMODE.dmICMMethod enum : DWORD { - DMICMMETHOD_NONE = 1, - DMICMMETHOD_SYSTEM = 2, - DMICMMETHOD_DRIVER = 3, - DMICMMETHOD_DEVICE = 4, - DMICMMETHOD_USER = 256 + DMICMMETHOD_NONE = 1, + DMICMMETHOD_SYSTEM = 2, + DMICMMETHOD_DRIVER = 3, + DMICMMETHOD_DEVICE = 4, + DMICMMETHOD_USER = 256 } // DEVMODE.dmICMIntent enum : DWORD { - DMICM_SATURATE = 1, - DMICM_CONTRAST = 2, - DMICM_COLORIMETRIC = 3, - DMICM_ABS_COLORIMETRIC = 4, - DMICM_USER = 256 + DMICM_SATURATE = 1, + DMICM_CONTRAST = 2, + DMICM_COLORIMETRIC = 3, + DMICM_ABS_COLORIMETRIC = 4, + DMICM_USER = 256 } // DEVMODE.dmMediaType enum : DWORD { - DMMEDIA_STANDARD = 1, - DMMEDIA_TRANSPARENCY = 2, - DMMEDIA_GLOSSY = 3, - DMMEDIA_USER = 256 + DMMEDIA_STANDARD = 1, + DMMEDIA_TRANSPARENCY = 2, + DMMEDIA_GLOSSY = 3, + DMMEDIA_USER = 256 } // DEVMODE.dmDitherType enum : DWORD { - DMDITHER_NONE = 1, - DMDITHER_COARSE, - DMDITHER_FINE, - DMDITHER_LINEART, - DMDITHER_ERRORDIFFUSION, - DMDITHER_RESERVED6, - DMDITHER_RESERVED7, - DMDITHER_RESERVED8, - DMDITHER_RESERVED9, - DMDITHER_GRAYSCALE, - DMDITHER_USER = 256 + DMDITHER_NONE = 1, + DMDITHER_COARSE, + DMDITHER_FINE, + DMDITHER_LINEART, + DMDITHER_ERRORDIFFUSION, + DMDITHER_RESERVED6, + DMDITHER_RESERVED7, + DMDITHER_RESERVED8, + DMDITHER_RESERVED9, + DMDITHER_GRAYSCALE, + DMDITHER_USER = 256 } // ---- // DocumentProperties() const DWORD - DM_UPDATE = 1, - DM_COPY = 2, - DM_PROMPT = 4, - DM_MODIFY = 8, - DM_IN_BUFFER = DM_MODIFY, - DM_IN_PROMPT = DM_PROMPT, - DM_OUT_BUFFER = DM_COPY, - DM_OUT_DEFAULT = DM_UPDATE; + DM_UPDATE = 1, + DM_COPY = 2, + DM_PROMPT = 4, + DM_MODIFY = 8, + DM_IN_BUFFER = DM_MODIFY, + DM_IN_PROMPT = DM_PROMPT, + DM_OUT_BUFFER = DM_COPY, + DM_OUT_DEFAULT = DM_UPDATE; // --- const GDI_ERROR = 0xFFFFFFFF; @@ -1829,31 +1829,31 @@ const HGDI_ERROR= cast(HANDLE)GDI_ERROR; // TEXTMETRIC.tmPitchAndFamily const BYTE - TMPF_FIXED_PITCH = 1, - TMPF_VECTOR = 2, - TMPF_TRUETYPE = 4, - TMPF_DEVICE = 8; + TMPF_FIXED_PITCH = 1, + TMPF_VECTOR = 2, + TMPF_TRUETYPE = 4, + TMPF_DEVICE = 8; // NEWTEXTMETRIC.ntmFlags const DWORD - NTM_ITALIC = 0x00000001, - NTM_BOLD = 0x00000020, - NTM_REGULAR = 0x00000040, - NTM_NONNEGATIVE_AC = 0x00010000, - NTM_PS_OPENTYPE = 0x00020000, - NTM_TT_OPENTYPE = 0x00040000, - NTM_MULTIPLEMASTER = 0x00080000, - NTM_TYPE1 = 0x00100000, - NTM_DSIG = 0x00200000; + NTM_ITALIC = 0x00000001, + NTM_BOLD = 0x00000020, + NTM_REGULAR = 0x00000040, + NTM_NONNEGATIVE_AC = 0x00010000, + NTM_PS_OPENTYPE = 0x00020000, + NTM_TT_OPENTYPE = 0x00040000, + NTM_MULTIPLEMASTER = 0x00080000, + NTM_TYPE1 = 0x00100000, + NTM_DSIG = 0x00200000; // --- const DWORD TT_POLYGON_TYPE = 24; // TTPOLYCURVE enum : WORD { - TT_PRIM_LINE = 1, - TT_PRIM_QSPLINE = 2, - TT_PRIM_CSPLINE = 3, + TT_PRIM_LINE = 1, + TT_PRIM_QSPLINE = 2, + TT_PRIM_CSPLINE = 3, } // --- const FONTMAPPER_MAX = 10; @@ -1864,58 +1864,58 @@ const WGL_FONT_POLYGONS = 1; // --- // LAYERPLANEDESCRIPTOR.dwFlags const DWORD - LPD_DOUBLEBUFFER = 1, - LPD_STEREO = 2, - LPD_SUPPORT_GDI = 16, - LPD_SUPPORT_OPENGL = 32, - LPD_SHARE_DEPTH = 64, - LPD_SHARE_STENCIL = 128, - LPD_SHARE_ACCUM = 256, - LPD_SWAP_EXCHANGE = 512, - LPD_SWAP_COPY = 1024, - LPD_TRANSPARENT = 4096; + LPD_DOUBLEBUFFER = 1, + LPD_STEREO = 2, + LPD_SUPPORT_GDI = 16, + LPD_SUPPORT_OPENGL = 32, + LPD_SHARE_DEPTH = 64, + LPD_SHARE_STENCIL = 128, + LPD_SHARE_ACCUM = 256, + LPD_SWAP_EXCHANGE = 512, + LPD_SWAP_COPY = 1024, + LPD_TRANSPARENT = 4096; // LAYERPLANEDESCRIPTOR.iPixelType enum : BYTE { - LPD_TYPE_RGBA = 0, - LPD_TYPE_COLORINDEX = 1 + LPD_TYPE_RGBA = 0, + LPD_TYPE_COLORINDEX = 1 } // --- // wglSwapLayerBuffers() const UINT - WGL_SWAP_MAIN_PLANE = 1, - WGL_SWAP_OVERLAY1 = 2, - WGL_SWAP_OVERLAY2 = 4, - WGL_SWAP_OVERLAY3 = 8, - WGL_SWAP_OVERLAY4 = 16, - WGL_SWAP_OVERLAY5 = 32, - WGL_SWAP_OVERLAY6 = 64, - WGL_SWAP_OVERLAY7 = 128, - WGL_SWAP_OVERLAY8 = 256, - WGL_SWAP_OVERLAY9 = 512, - WGL_SWAP_OVERLAY10 = 1024, - WGL_SWAP_OVERLAY11 = 2048, - WGL_SWAP_OVERLAY12 = 4096, - WGL_SWAP_OVERLAY13 = 8192, - WGL_SWAP_OVERLAY14 = 16384, - WGL_SWAP_OVERLAY15 = 32768, - WGL_SWAP_UNDERLAY1 = 65536, - WGL_SWAP_UNDERLAY2 = 0x20000, - WGL_SWAP_UNDERLAY3 = 0x40000, - WGL_SWAP_UNDERLAY4 = 0x80000, - WGL_SWAP_UNDERLAY5 = 0x100000, - WGL_SWAP_UNDERLAY6 = 0x200000, - WGL_SWAP_UNDERLAY7 = 0x400000, - WGL_SWAP_UNDERLAY8 = 0x800000, - WGL_SWAP_UNDERLAY9 = 0x1000000, - WGL_SWAP_UNDERLAY10 = 0x2000000, - WGL_SWAP_UNDERLAY11 = 0x4000000, - WGL_SWAP_UNDERLAY12 = 0x8000000, - WGL_SWAP_UNDERLAY13 = 0x10000000, - WGL_SWAP_UNDERLAY14 = 0x20000000, - WGL_SWAP_UNDERLAY15 = 0x40000000; + WGL_SWAP_MAIN_PLANE = 1, + WGL_SWAP_OVERLAY1 = 2, + WGL_SWAP_OVERLAY2 = 4, + WGL_SWAP_OVERLAY3 = 8, + WGL_SWAP_OVERLAY4 = 16, + WGL_SWAP_OVERLAY5 = 32, + WGL_SWAP_OVERLAY6 = 64, + WGL_SWAP_OVERLAY7 = 128, + WGL_SWAP_OVERLAY8 = 256, + WGL_SWAP_OVERLAY9 = 512, + WGL_SWAP_OVERLAY10 = 1024, + WGL_SWAP_OVERLAY11 = 2048, + WGL_SWAP_OVERLAY12 = 4096, + WGL_SWAP_OVERLAY13 = 8192, + WGL_SWAP_OVERLAY14 = 16384, + WGL_SWAP_OVERLAY15 = 32768, + WGL_SWAP_UNDERLAY1 = 65536, + WGL_SWAP_UNDERLAY2 = 0x20000, + WGL_SWAP_UNDERLAY3 = 0x40000, + WGL_SWAP_UNDERLAY4 = 0x80000, + WGL_SWAP_UNDERLAY5 = 0x100000, + WGL_SWAP_UNDERLAY6 = 0x200000, + WGL_SWAP_UNDERLAY7 = 0x400000, + WGL_SWAP_UNDERLAY8 = 0x800000, + WGL_SWAP_UNDERLAY9 = 0x1000000, + WGL_SWAP_UNDERLAY10 = 0x2000000, + WGL_SWAP_UNDERLAY11 = 0x4000000, + WGL_SWAP_UNDERLAY12 = 0x8000000, + WGL_SWAP_UNDERLAY13 = 0x10000000, + WGL_SWAP_UNDERLAY14 = 0x20000000, + WGL_SWAP_UNDERLAY15 = 0x40000000; const AC_SRC_OVER = 0x00; const AC_SRC_ALPHA = 0x01; @@ -1936,34 +1936,34 @@ const CS_DISABLE = 0x00000002; const CS_DELETE_TRANSFORM = 0x00000003; static if (_WIN32_WINNT > 0x500) { - const GRADIENT_FILL_RECT_H=0x00; - const GRADIENT_FILL_RECT_V=0x01; - const GRADIENT_FILL_TRIANGLE=0x02; - const GRADIENT_FILL_OP_FLAG=0xff; - const COLORMATCHTOTARGET_EMBEDED=0x00000001; - const CREATECOLORSPACE_EMBEDED=0x00000001; - const SETICMPROFILE_EMBEDED=0x00000001; + const GRADIENT_FILL_RECT_H=0x00; + const GRADIENT_FILL_RECT_V=0x01; + const GRADIENT_FILL_TRIANGLE=0x02; + const GRADIENT_FILL_OP_FLAG=0xff; + const COLORMATCHTOTARGET_EMBEDED=0x00000001; + const CREATECOLORSPACE_EMBEDED=0x00000001; + const SETICMPROFILE_EMBEDED=0x00000001; } // DISPLAY_DEVICE.StateFlags const DWORD - DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001, - DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002, - DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004, - DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008, - DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010, - DISPLAY_DEVICE_REMOVABLE = 0x00000020, - DISPLAY_DEVICE_DISCONNECT = 0x02000000, - DISPLAY_DEVICE_REMOTE = 0x04000000, - DISPLAY_DEVICE_MODESPRUNED = 0x08000000; + DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001, + DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002, + DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004, + DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008, + DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010, + DISPLAY_DEVICE_REMOVABLE = 0x00000020, + DISPLAY_DEVICE_DISCONNECT = 0x02000000, + DISPLAY_DEVICE_REMOTE = 0x04000000, + DISPLAY_DEVICE_MODESPRUNED = 0x08000000; /* Child device state */ const DWORD - DISPLAY_DEVICE_ACTIVE = 0x00000001, - DISPLAY_DEVICE_ATTACHED = 0x00000002; + DISPLAY_DEVICE_ACTIVE = 0x00000001, + DISPLAY_DEVICE_ATTACHED = 0x00000002; static if (_WIN32_WINNT >= 0x500) { - const GGI_MARK_NONEXISTING_GLYPHS = 1; + const GGI_MARK_NONEXISTING_GLYPHS = 1; } // ---------- @@ -1971,93 +1971,93 @@ static if (_WIN32_WINNT >= 0x500) { // ---------- struct ABC { - int abcA; - UINT abcB; - int abcC; + int abcA; + UINT abcB; + int abcC; } alias ABC* PABC, NPABC, LPABC; struct ABCFLOAT { - FLOAT abcfA; - FLOAT abcfB; - FLOAT abcfC; + FLOAT abcfA; + FLOAT abcfB; + FLOAT abcfC; } alias ABCFLOAT* PABCFLOAT, NPABCFLOAT, LPABCFLOAT; struct BITMAP { - LONG bmType; - LONG bmWidth; - LONG bmHeight; - LONG bmWidthBytes; - WORD bmPlanes; - WORD bmBitsPixel; - LPVOID bmBits; + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; } alias BITMAP* PBITMAP, NPBITMAP, LPBITMAP; struct BITMAPCOREHEADER { - DWORD bcSize; - WORD bcWidth; - WORD bcHeight; - WORD bcPlanes; - WORD bcBitCount; + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; } alias BITMAPCOREHEADER* PBITMAPCOREHEADER, LPBITMAPCOREHEADER; align(1): struct RGBTRIPLE { - BYTE rgbtBlue; - BYTE rgbtGreen; - BYTE rgbtRed; + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; } alias RGBTRIPLE* LPRGBTRIPLE; align(2): struct BITMAPFILEHEADER { align(2): - WORD bfType; - DWORD bfSize; - WORD bfReserved1; - WORD bfReserved2; - DWORD bfOffBits; + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; } alias BITMAPFILEHEADER* LPBITMAPFILEHEADER, PBITMAPFILEHEADER; align: struct BITMAPCOREINFO { - BITMAPCOREHEADER bmciHeader; - RGBTRIPLE[1] bmciColors; + BITMAPCOREHEADER bmciHeader; + RGBTRIPLE[1] bmciColors; } alias BITMAPCOREINFO* LPBITMAPCOREINFO, PBITMAPCOREINFO; struct BITMAPINFOHEADER { - DWORD biSize; - LONG biWidth; - LONG biHeight; - WORD biPlanes; - WORD biBitCount; - DWORD biCompression; - DWORD biSizeImage; - LONG biXPelsPerMeter; - LONG biYPelsPerMeter; - DWORD biClrUsed; - DWORD biClrImportant; + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; } alias BITMAPINFOHEADER* LPBITMAPINFOHEADER, PBITMAPINFOHEADER; struct RGBQUAD { - BYTE rgbBlue; - BYTE rgbGreen; - BYTE rgbRed; - BYTE rgbReserved; + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; }; alias RGBQUAD* LPRGBQUAD; struct BITMAPINFO { - BITMAPINFOHEADER bmiHeader; - RGBQUAD[1] bmiColors; + BITMAPINFOHEADER bmiHeader; + RGBQUAD[1] bmiColors; }; alias BITMAPINFO* PBITMAPINFO, LPBITMAPINFO; @@ -2067,198 +2067,198 @@ alias int FXPT2DOT30; alias int* LPFXPT2DOT30; struct CIEXYZ { - FXPT2DOT30 ciexyzX; - FXPT2DOT30 ciexyzY; - FXPT2DOT30 ciexyzZ; + FXPT2DOT30 ciexyzX; + FXPT2DOT30 ciexyzY; + FXPT2DOT30 ciexyzZ; } alias CIEXYZ* LPCIEXYZ; struct CIEXYZTRIPLE { - CIEXYZ ciexyzRed; - CIEXYZ ciexyzGreen; - CIEXYZ ciexyzBlue; + CIEXYZ ciexyzRed; + CIEXYZ ciexyzGreen; + CIEXYZ ciexyzBlue; } alias CIEXYZTRIPLE* LPCIEXYZTRIPLE; struct BITMAPV4HEADER { - DWORD bV4Size; - LONG bV4Width; - LONG bV4Height; - WORD bV4Planes; - WORD bV4BitCount; - DWORD bV4V4Compression; - DWORD bV4SizeImage; - LONG bV4XPelsPerMeter; - LONG bV4YPelsPerMeter; - DWORD bV4ClrUsed; - DWORD bV4ClrImportant; - DWORD bV4RedMask; - DWORD bV4GreenMask; - DWORD bV4BlueMask; - DWORD bV4AlphaMask; - DWORD bV4CSType; - CIEXYZTRIPLE bV4Endpoints; - DWORD bV4GammaRed; - DWORD bV4GammaGreen; - DWORD bV4GammaBlue; + DWORD bV4Size; + LONG bV4Width; + LONG bV4Height; + WORD bV4Planes; + WORD bV4BitCount; + DWORD bV4V4Compression; + DWORD bV4SizeImage; + LONG bV4XPelsPerMeter; + LONG bV4YPelsPerMeter; + DWORD bV4ClrUsed; + DWORD bV4ClrImportant; + DWORD bV4RedMask; + DWORD bV4GreenMask; + DWORD bV4BlueMask; + DWORD bV4AlphaMask; + DWORD bV4CSType; + CIEXYZTRIPLE bV4Endpoints; + DWORD bV4GammaRed; + DWORD bV4GammaGreen; + DWORD bV4GammaBlue; } alias BITMAPV4HEADER* LPBITMAPV4HEADER, PBITMAPV4HEADER; struct BITMAPV5HEADER { - DWORD bV5Size; - LONG bV5Width; - LONG bV5Height; - WORD bV5Planes; - WORD bV5BitCount; - DWORD bV5Compression; - DWORD bV5SizeImage; - LONG bV5XPelsPerMeter; - LONG bV5YPelsPerMeter; - DWORD bV5ClrUsed; - DWORD bV5ClrImportant; - DWORD bV5RedMask; - DWORD bV5GreenMask; - DWORD bV5BlueMask; - DWORD bV5AlphaMask; - DWORD bV5CSType; - CIEXYZTRIPLE bV5Endpoints; - DWORD bV5GammaRed; - DWORD bV5GammaGreen; - DWORD bV5GammaBlue; - DWORD bV5Intent; - DWORD bV5ProfileData; - DWORD bV5ProfileSize; - DWORD bV5Reserved; + DWORD bV5Size; + LONG bV5Width; + LONG bV5Height; + WORD bV5Planes; + WORD bV5BitCount; + DWORD bV5Compression; + DWORD bV5SizeImage; + LONG bV5XPelsPerMeter; + LONG bV5YPelsPerMeter; + DWORD bV5ClrUsed; + DWORD bV5ClrImportant; + DWORD bV5RedMask; + DWORD bV5GreenMask; + DWORD bV5BlueMask; + DWORD bV5AlphaMask; + DWORD bV5CSType; + CIEXYZTRIPLE bV5Endpoints; + DWORD bV5GammaRed; + DWORD bV5GammaGreen; + DWORD bV5GammaBlue; + DWORD bV5Intent; + DWORD bV5ProfileData; + DWORD bV5ProfileSize; + DWORD bV5Reserved; } alias BITMAPV5HEADER* LPBITMAPV5HEADER, PBITMAPV5HEADER; struct FONTSIGNATURE { - DWORD[4] fsUsb; - DWORD[2] fsCsb; + DWORD[4] fsUsb; + DWORD[2] fsCsb; } alias FONTSIGNATURE* PFONTSIGNATURE, LPFONTSIGNATURE; struct CHARSETINFO { - UINT ciCharset; - UINT ciACP; - FONTSIGNATURE fs; + UINT ciCharset; + UINT ciACP; + FONTSIGNATURE fs; } alias CHARSETINFO* PCHARSETINFO, NPCHARSETINFO, LPCHARSETINFO; struct COLORADJUSTMENT { - WORD caSize; - WORD caFlags; - WORD caIlluminantIndex; - WORD caRedGamma; - WORD caGreenGamma; - WORD caBlueGamma; - WORD caReferenceBlack; - WORD caReferenceWhite; - SHORT caContrast; - SHORT caBrightness; - SHORT caColorfulness; - SHORT caRedGreenTint; + WORD caSize; + WORD caFlags; + WORD caIlluminantIndex; + WORD caRedGamma; + WORD caGreenGamma; + WORD caBlueGamma; + WORD caReferenceBlack; + WORD caReferenceWhite; + SHORT caContrast; + SHORT caBrightness; + SHORT caColorfulness; + SHORT caRedGreenTint; } alias COLORADJUSTMENT* PCOLORADJUSTMENT, LPCOLORADJUSTMENT; struct DEVMODEA { - BYTE[CCHDEVICENAME] dmDeviceName; - WORD dmSpecVersion; - WORD dmDriverVersion; - WORD dmSize; - WORD dmDriverExtra; - DWORD dmFields; - union { - struct { - short dmOrientation; - short dmPaperSize; - short dmPaperLength; - short dmPaperWidth; - short dmScale; - short dmCopies; - short dmDefaultSource; - short dmPrintQuality; - } - struct { - POINTL dmPosition; - DWORD dmDisplayOrientation; - DWORD dmDisplayFixedOutput; - } - } - short dmColor; - short dmDuplex; - short dmYResolution; - short dmTTOption; - short dmCollate; - BYTE[CCHFORMNAME] dmFormName; - WORD dmLogPixels; - DWORD dmBitsPerPel; - DWORD dmPelsWidth; - DWORD dmPelsHeight; - union { - DWORD dmDisplayFlags; - DWORD dmNup; - } - DWORD dmDisplayFrequency; - DWORD dmICMMethod; - DWORD dmICMIntent; - DWORD dmMediaType; - DWORD dmDitherType; - DWORD dmReserved1; - DWORD dmReserved2; - DWORD dmPanningWidth; - DWORD dmPanningHeight; + BYTE[CCHDEVICENAME] dmDeviceName; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union { + struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } + struct { + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } + } + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE[CCHFORMNAME] dmFormName; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union { + DWORD dmDisplayFlags; + DWORD dmNup; + } + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; } alias DEVMODEA* PDEVMODEA, NPDEVMODEA, LPDEVMODEA; struct DEVMODEW { - WCHAR[CCHDEVICENAME] dmDeviceName; - WORD dmSpecVersion; - WORD dmDriverVersion; - WORD dmSize; - WORD dmDriverExtra; - DWORD dmFields; - union { - struct { - short dmOrientation; - short dmPaperSize; - short dmPaperLength; - short dmPaperWidth; - short dmScale; - short dmCopies; - short dmDefaultSource; - short dmPrintQuality; - } - struct { - POINTL dmPosition; - DWORD dmDisplayOrientation; - DWORD dmDisplayFixedOutput; - } - } - - short dmColor; - short dmDuplex; - short dmYResolution; - short dmTTOption; - short dmCollate; - WCHAR[CCHFORMNAME] dmFormName; - WORD dmLogPixels; - DWORD dmBitsPerPel; - DWORD dmPelsWidth; - DWORD dmPelsHeight; - union { - DWORD dmDisplayFlags; - DWORD dmNup; - } - DWORD dmDisplayFrequency; - DWORD dmICMMethod; - DWORD dmICMIntent; - DWORD dmMediaType; - DWORD dmDitherType; - DWORD dmReserved1; - DWORD dmReserved2; - DWORD dmPanningWidth; - DWORD dmPanningHeight; + WCHAR[CCHDEVICENAME] dmDeviceName; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union { + struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } + struct { + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } + } + + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR[CCHFORMNAME] dmFormName; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union { + DWORD dmDisplayFlags; + DWORD dmNup; + } + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; } alias DEVMODEW* PDEVMODEW, NPDEVMODEW, LPDEVMODEW; @@ -2266,8 +2266,8 @@ alias DEVMODEW* PDEVMODEW, NPDEVMODEW, LPDEVMODEW; * Information about output options */ struct PSFEATURE_OUTPUT { - BOOL bPageIndependent; - BOOL bSetPageDevice; + BOOL bPageIndependent; + BOOL bSetPageDevice; } alias PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT; @@ -2275,149 +2275,149 @@ alias PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT; * Information about custom paper size */ struct PSFEATURE_CUSTPAPER { - LONG lOrientation; - LONG lWidth; - LONG lHeight; - LONG lWidthOffset; - LONG lHeightOffset; + LONG lOrientation; + LONG lWidth; + LONG lHeight; + LONG lWidthOffset; + LONG lHeightOffset; } alias PSFEATURE_CUSTPAPER* PPSFEATURE_CUSTPAPER; struct DIBSECTION { - BITMAP dsBm; - BITMAPINFOHEADER dsBmih; - DWORD[3] dsBitfields; - HANDLE dshSection; - DWORD dsOffset; + BITMAP dsBm; + BITMAPINFOHEADER dsBmih; + DWORD[3] dsBitfields; + HANDLE dshSection; + DWORD dsOffset; } alias DIBSECTION* PDIBSECTION; struct DOCINFOA { - int cbSize = DOCINFOA.sizeof; - LPCSTR lpszDocName; - LPCSTR lpszOutput; - LPCSTR lpszDatatype; - DWORD fwType; + int cbSize = DOCINFOA.sizeof; + LPCSTR lpszDocName; + LPCSTR lpszOutput; + LPCSTR lpszDatatype; + DWORD fwType; } alias DOCINFOA* LPDOCINFOA; struct DOCINFOW { - int cbSize = DOCINFOW.sizeof; - LPCWSTR lpszDocName; - LPCWSTR lpszOutput; - LPCWSTR lpszDatatype; - DWORD fwType; + int cbSize = DOCINFOW.sizeof; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; + LPCWSTR lpszDatatype; + DWORD fwType; } alias DOCINFOW* LPDOCINFOW; struct PANOSE { - BYTE bFamilyType; - BYTE bSerifStyle; - BYTE bWeight; - BYTE bProportion; - BYTE bContrast; - BYTE bStrokeVariation; - BYTE bArmStyle; - BYTE bLetterform; - BYTE bMidline; - BYTE bXHeight; + BYTE bFamilyType; + BYTE bSerifStyle; + BYTE bWeight; + BYTE bProportion; + BYTE bContrast; + BYTE bStrokeVariation; + BYTE bArmStyle; + BYTE bLetterform; + BYTE bMidline; + BYTE bXHeight; } alias PANOSE* LPPANOSE; struct LOGFONTA { - LONG lfHeight; - LONG lfWidth; - LONG lfEscapement; - LONG lfOrientation; - LONG lfWeight; - BYTE lfItalic; - BYTE lfUnderline; - BYTE lfStrikeOut; - BYTE lfCharSet; - BYTE lfOutPrecision; - BYTE lfClipPrecision; - BYTE lfQuality; - BYTE lfPitchAndFamily; - CHAR[LF_FACESIZE] lfFaceName; + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + CHAR[LF_FACESIZE] lfFaceName; } alias LOGFONTA* PLOGFONTA, NPLOGFONTA, LPLOGFONTA; struct LOGFONTW { - LONG lfHeight; - LONG lfWidth; - LONG lfEscapement; - LONG lfOrientation; - LONG lfWeight; - BYTE lfItalic; - BYTE lfUnderline; - BYTE lfStrikeOut; - BYTE lfCharSet; - BYTE lfOutPrecision; - BYTE lfClipPrecision; - BYTE lfQuality; - BYTE lfPitchAndFamily; - WCHAR[LF_FACESIZE] lfFaceName; + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + WCHAR[LF_FACESIZE] lfFaceName; } alias LOGFONTW* PLOGFONTW, NPLOGFONTW, LPLOGFONTW; struct EXTLOGFONTA { - LOGFONTA elfLogFont; - BYTE[LF_FULLFACESIZE] elfFullName; - BYTE[LF_FACESIZE] elfStyle; - DWORD elfVersion; - DWORD elfStyleSize; - DWORD elfMatch; - DWORD elfReserved; - BYTE[ELF_VENDOR_SIZE] elfVendorId; - DWORD elfCulture; - PANOSE elfPanose; + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE[ELF_VENDOR_SIZE] elfVendorId; + DWORD elfCulture; + PANOSE elfPanose; } alias EXTLOGFONTA* PEXTLOGFONTA, NPEXTLOGFONTA, LPEXTLOGFONTA; struct EXTLOGFONTW { - LOGFONTW elfLogFont; - WCHAR[LF_FULLFACESIZE] elfFullName; - WCHAR[LF_FACESIZE] elfStyle; - DWORD elfVersion; - DWORD elfStyleSize; - DWORD elfMatch; - DWORD elfReserved; - BYTE[ELF_VENDOR_SIZE] elfVendorId; - DWORD elfCulture; - PANOSE elfPanose; + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE[ELF_VENDOR_SIZE] elfVendorId; + DWORD elfCulture; + PANOSE elfPanose; } alias EXTLOGFONTW* PEXTLOGFONTW, NPEXTLOGFONTW, LPEXTLOGFONTW; struct LOGPEN { - UINT lopnStyle; - POINT lopnWidth; - COLORREF lopnColor; + UINT lopnStyle; + POINT lopnWidth; + COLORREF lopnColor; } alias LOGPEN* PLOGPEN, NPLOGPEN, LPLOGPEN; // ---------------------- EMR ------------ struct EMR { - DWORD iType; - DWORD nSize; + DWORD iType; + DWORD nSize; } alias EMR* PEMR; struct EMRANGLEARC { - EMR emr; - POINTL ptlCenter; - DWORD nRadius; - FLOAT eStartAngle; - FLOAT eSweepAngle; + EMR emr; + POINTL ptlCenter; + DWORD nRadius; + FLOAT eStartAngle; + FLOAT eSweepAngle; } alias EMRANGLEARC* PEMRANGLEARC; struct EMRARC { - EMR emr; - RECTL rclBox; - POINTL ptlStart; - POINTL ptlEnd; + EMR emr; + RECTL rclBox; + POINTL ptlStart; + POINTL ptlEnd; } alias EMRARC* PEMRARC; alias TypeDef!(EMRARC) EMRARCTO; @@ -2428,130 +2428,130 @@ alias TypeDef!(EMRARC) EMRPIE; alias EMRPIE* PEMRPIE; struct XFORM { - FLOAT eM11; - FLOAT eM12; - FLOAT eM21; - FLOAT eM22; - FLOAT eDx; - FLOAT eDy; + FLOAT eM11; + FLOAT eM12; + FLOAT eM21; + FLOAT eM22; + FLOAT eDx; + FLOAT eDy; } alias XFORM* PXFORM, LPXFORM; struct EMRBITBLT { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG cxDest; - LONG cyDest; - DWORD dwRop; - LONG xSrc; - LONG ySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; } alias EMRBITBLT* PEMRBITBLT; struct LOGBRUSH { - UINT lbStyle; - COLORREF lbColor; - LONG lbHatch; + UINT lbStyle; + COLORREF lbColor; + LONG lbHatch; } alias TypeDef!(LOGBRUSH) PATTERN; alias LOGBRUSH* PLOGBRUSH, NPLOGBRUSH, LPLOGBRUSH; alias PATTERN* PPATTERN, NPPATTERN, LPPATTERN; struct LOGBRUSH32 { - UINT lbStyle; - COLORREF lbColor; - ULONG lbHatch; + UINT lbStyle; + COLORREF lbColor; + ULONG lbHatch; } alias LOGBRUSH32* PLOGBRUSH32, NPLOGBRUSH32, LPLOGBRUSH32; struct EMRCREATEBRUSHINDIRECT { - EMR emr; - DWORD ihBrush; - LOGBRUSH32 lb; + EMR emr; + DWORD ihBrush; + LOGBRUSH32 lb; } alias EMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT; alias LONG LCSCSTYPE, LCSGAMUTMATCH; struct LOGCOLORSPACEA { - DWORD lcsSignature; - DWORD lcsVersion; - DWORD lcsSize; - LCSCSTYPE lcsCSType; - LCSGAMUTMATCH lcsIntent; - CIEXYZTRIPLE lcsEndpoints; - DWORD lcsGammaRed; - DWORD lcsGammaGreen; - DWORD lcsGammaBlue; - CHAR[MAX_PATH] lcsFilename; + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + CHAR[MAX_PATH] lcsFilename; } alias LOGCOLORSPACEA* LPLOGCOLORSPACEA; struct LOGCOLORSPACEW { - DWORD lcsSignature; - DWORD lcsVersion; - DWORD lcsSize; - LCSCSTYPE lcsCSType; - LCSGAMUTMATCH lcsIntent; - CIEXYZTRIPLE lcsEndpoints; - DWORD lcsGammaRed; - DWORD lcsGammaGreen; - DWORD lcsGammaBlue; - WCHAR[MAX_PATH] lcsFilename; + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + WCHAR[MAX_PATH] lcsFilename; } alias LOGCOLORSPACEW* LPLOGCOLORSPACEW; alias USHORT COLOR16; struct TRIVERTEX { - LONG x; - LONG y; - COLOR16 Red; - COLOR16 Green; - COLOR16 Blue; - COLOR16 Alpha; + LONG x; + LONG y; + COLOR16 Red; + COLOR16 Green; + COLOR16 Blue; + COLOR16 Alpha; } alias TRIVERTEX* PTRIVERTEX, LPTRIVERTEX; struct EMRGLSRECORD { - EMR emr; - DWORD cbData; - BYTE[1] Data; + EMR emr; + DWORD cbData; + BYTE[1] Data; } alias EMRGLSRECORD* PEMRGLSRECORD; struct EMRGLSBOUNDEDRECORD { - EMR emr; - RECTL rclBounds; - DWORD cbData; - BYTE[1] Data; + EMR emr; + RECTL rclBounds; + DWORD cbData; + BYTE[1] Data; } alias EMRGLSBOUNDEDRECORD* PEMRGLSBOUNDEDRECORD; struct EMRPIXELFORMAT { - EMR emr; - PIXELFORMATDESCRIPTOR pfd; + EMR emr; + PIXELFORMATDESCRIPTOR pfd; } alias EMRPIXELFORMAT* PEMRPIXELFORMAT; struct EMRCREATECOLORSPACE { - EMR emr; - DWORD ihCS; - LOGCOLORSPACE lcs; + EMR emr; + DWORD ihCS; + LOGCOLORSPACE lcs; } alias EMRCREATECOLORSPACE* PEMRCREATECOLORSPACE; struct EMRSETCOLORSPACE { - EMR emr; - DWORD ihCS; + EMR emr; + DWORD ihCS; } alias EMRSETCOLORSPACE* PEMRSETCOLORSPACE; alias TypeDef!(EMRSETCOLORSPACE) EMRSELECTCOLORSPACE; @@ -2561,176 +2561,176 @@ alias EMRDELETECOLORSPACE* PEMRDELETECOLORSPACE; static if (_WIN32_WINNT >= 0x500) { - struct EMREXTESCAPE { - EMR emr; - INT iEscape; - INT cbEscData; - BYTE[1] EscData; - } - alias EMREXTESCAPE* PEMREXTESCAPE; - alias TypeDef!(EMREXTESCAPE) EMRDRAWESCAPE; - alias EMRDRAWESCAPE* PEMRDRAWESCAPE; - - struct EMRNAMEDESCAPE { - EMR emr; - INT iEscape; - INT cbDriver; - INT cbEscData; - BYTE[1] EscData; - } - alias EMRNAMEDESCAPE* PEMRNAMEDESCAPE; - - struct EMRSETICMPROFILE { - EMR emr; - DWORD dwFlags; - DWORD cbName; - DWORD cbData; - BYTE[1] Data; - } - alias EMRSETICMPROFILE* PEMRSETICMPROFILE; - alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEA; - alias EMRSETICMPROFILEA* PEMRSETICMPROFILEA; - alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEW; - alias EMRSETICMPROFILEW* PEMRSETICMPROFILEW; - - struct EMRCREATECOLORSPACEW { - EMR emr; - DWORD ihCS; - LOGCOLORSPACEW lcs; - DWORD dwFlags; - DWORD cbData; - BYTE[1] Data; - } - alias EMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW; - - struct EMRCOLORMATCHTOTARGET { - EMR emr; - DWORD dwAction; - DWORD dwFlags; - DWORD cbName; - DWORD cbData; - BYTE[1] Data; - } - alias EMRCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET; - - struct EMRCOLORCORRECTPALETTE { - EMR emr; - DWORD ihPalette; - DWORD nFirstEntry; - DWORD nPalEntries; - DWORD nReserved; - } - alias EMRCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE; - - struct EMRALPHABLEND { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG cxDest; - LONG cyDest; - DWORD dwRop; - LONG xSrc; - LONG ySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - LONG cxSrc; - LONG cySrc; - } - alias EMRALPHABLEND* PEMRALPHABLEND; - - struct EMRGRADIENTFILL { - EMR emr; - RECTL rclBounds; - DWORD nVer; - DWORD nTri; - ULONG ulMode; - TRIVERTEX[1] Ver; - } - alias EMRGRADIENTFILL* PEMRGRADIENTFILL; - - struct EMRTRANSPARENTBLT { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG cxDest; - LONG cyDest; - DWORD dwRop; - LONG xSrc; - LONG ySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - LONG cxSrc; - LONG cySrc; - } - alias EMRTRANSPARENTBLT* PEMRTRANSPARENTBLT; + struct EMREXTESCAPE { + EMR emr; + INT iEscape; + INT cbEscData; + BYTE[1] EscData; + } + alias EMREXTESCAPE* PEMREXTESCAPE; + alias TypeDef!(EMREXTESCAPE) EMRDRAWESCAPE; + alias EMRDRAWESCAPE* PEMRDRAWESCAPE; + + struct EMRNAMEDESCAPE { + EMR emr; + INT iEscape; + INT cbDriver; + INT cbEscData; + BYTE[1] EscData; + } + alias EMRNAMEDESCAPE* PEMRNAMEDESCAPE; + + struct EMRSETICMPROFILE { + EMR emr; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE[1] Data; + } + alias EMRSETICMPROFILE* PEMRSETICMPROFILE; + alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEA; + alias EMRSETICMPROFILEA* PEMRSETICMPROFILEA; + alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEW; + alias EMRSETICMPROFILEW* PEMRSETICMPROFILEW; + + struct EMRCREATECOLORSPACEW { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEW lcs; + DWORD dwFlags; + DWORD cbData; + BYTE[1] Data; + } + alias EMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW; + + struct EMRCOLORMATCHTOTARGET { + EMR emr; + DWORD dwAction; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE[1] Data; + } + alias EMRCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET; + + struct EMRCOLORCORRECTPALETTE { + EMR emr; + DWORD ihPalette; + DWORD nFirstEntry; + DWORD nPalEntries; + DWORD nReserved; + } + alias EMRCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE; + + struct EMRALPHABLEND { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; + } + alias EMRALPHABLEND* PEMRALPHABLEND; + + struct EMRGRADIENTFILL { + EMR emr; + RECTL rclBounds; + DWORD nVer; + DWORD nTri; + ULONG ulMode; + TRIVERTEX[1] Ver; + } + alias EMRGRADIENTFILL* PEMRGRADIENTFILL; + + struct EMRTRANSPARENTBLT { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; + } + alias EMRTRANSPARENTBLT* PEMRTRANSPARENTBLT; } struct EMRCREATEDIBPATTERNBRUSHPT { - EMR emr; - DWORD ihBrush; - DWORD iUsage; - DWORD offBmi; - DWORD cbBmi; - DWORD offBits; - DWORD cbBits; + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; } alias EMRCREATEDIBPATTERNBRUSHPT* PEMRCREATEDIBPATTERNBRUSHPT; struct EMRCREATEMONOBRUSH { - EMR emr; - DWORD ihBrush; - DWORD iUsage; - DWORD offBmi; - DWORD cbBmi; - DWORD offBits; - DWORD cbBits; + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; } alias EMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH; struct PALETTEENTRY { - BYTE peRed; - BYTE peGreen; - BYTE peBlue; - BYTE peFlags; + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; } alias PALETTEENTRY* PPALETTEENTRY, LPPALETTEENTRY; struct LOGPALETTE { - WORD palVersion; - WORD palNumEntries; - PALETTEENTRY[1] palPalEntry; + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY[1] palPalEntry; } alias LOGPALETTE* PLOGPALETTE, NPLOGPALETTE, LPLOGPALETTE; struct EMRCREATEPALETTE { - EMR emr; - DWORD ihPal; - LOGPALETTE lgpl; + EMR emr; + DWORD ihPal; + LOGPALETTE lgpl; } alias EMRCREATEPALETTE* PEMRCREATEPALETTE; struct EMRCREATEPEN { - EMR emr; - DWORD ihPen; - LOGPEN lopn; + EMR emr; + DWORD ihPen; + LOGPEN lopn; } alias EMRCREATEPEN* PEMRCREATEPEN; struct EMRELLIPSE { - EMR emr; - RECTL rclBox; + EMR emr; + RECTL rclBox; } alias EMRELLIPSE* PEMRELLIPSE; @@ -2738,91 +2738,91 @@ alias TypeDef!(EMRELLIPSE) EMRRECTANGLE; alias EMRRECTANGLE* PEMRRECTANGLE; struct EMREOF { - EMR emr; - DWORD nPalEntries; - DWORD offPalEntries; - DWORD nSizeLast; + EMR emr; + DWORD nPalEntries; + DWORD offPalEntries; + DWORD nSizeLast; } alias EMREOF* PEMREOF; struct EMREXCLUDECLIPRECT { - EMR emr; - RECTL rclClip; + EMR emr; + RECTL rclClip; } alias EMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT; alias TypeDef!(EMREXCLUDECLIPRECT) EMRINTERSECTCLIPRECT; alias EMRINTERSECTCLIPRECT* PEMRINTERSECTCLIPRECT; struct EMREXTCREATEFONTINDIRECTW { - EMR emr; - DWORD ihFont; - EXTLOGFONTW elfw; + EMR emr; + DWORD ihFont; + EXTLOGFONTW elfw; } alias EMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW; struct EXTLOGPEN { - UINT elpPenStyle; - UINT elpWidth; - UINT elpBrushStyle; - COLORREF elpColor; - LONG elpHatch; - DWORD elpNumEntries; - DWORD[1] elpStyleEntry; + UINT elpPenStyle; + UINT elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + LONG elpHatch; + DWORD elpNumEntries; + DWORD[1] elpStyleEntry; } alias EXTLOGPEN* PEXTLOGPEN, NPEXTLOGPEN, LPEXTLOGPEN; struct EMREXTCREATEPEN { - EMR emr; - DWORD ihPen; - DWORD offBmi; - DWORD cbBmi; - DWORD offBits; - DWORD cbBits; - EXTLOGPEN elp; + EMR emr; + DWORD ihPen; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; + EXTLOGPEN elp; } alias EMREXTCREATEPEN* PEMREXTCREATEPEN; struct EMREXTFLOODFILL { - EMR emr; - POINTL ptlStart; - COLORREF crColor; - DWORD iMode; + EMR emr; + POINTL ptlStart; + COLORREF crColor; + DWORD iMode; } alias EMREXTFLOODFILL* PEMREXTFLOODFILL; struct EMREXTSELECTCLIPRGN { - EMR emr; - DWORD cbRgnData; - DWORD iMode; - BYTE [1]RgnData; + EMR emr; + DWORD cbRgnData; + DWORD iMode; + BYTE [1]RgnData; } alias EMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN; struct EMRTEXT { - POINTL ptlReference; - DWORD nChars; - DWORD offString; - DWORD fOptions; - RECTL rcl; - DWORD offDx; + POINTL ptlReference; + DWORD nChars; + DWORD offString; + DWORD fOptions; + RECTL rcl; + DWORD offDx; } alias EMRTEXT* PEMRTEXT; struct EMREXTTEXTOUTA { - EMR emr; - RECTL rclBounds; - DWORD iGraphicsMode; - FLOAT exScale; - FLOAT eyScale; - EMRTEXT emrtext; + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + EMRTEXT emrtext; } alias EMREXTTEXTOUTA* PEMREXTTEXTOUTA; alias TypeDef!(EMREXTTEXTOUTA) EMREXTTEXTOUTW; alias EMREXTTEXTOUTW* PEMREXTTEXTOUTW; struct EMRFILLPATH { - EMR emr; - RECTL rclBounds; + EMR emr; + RECTL rclBounds; } alias EMRFILLPATH* PEMRFILLPATH; @@ -2833,145 +2833,145 @@ alias TypeDef!(EMRFILLPATH) EMRSTROKEPATH; alias EMRSTROKEPATH* PEMRSTROKEPATH; struct EMRFILLRGN { - EMR emr; - RECTL rclBounds; - DWORD cbRgnData; - DWORD ihBrush; - BYTE[1] RgnData; + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + BYTE[1] RgnData; } alias EMRFILLRGN* PEMRFILLRGN; struct EMRFORMAT { - DWORD dSignature; - DWORD nVersion; - DWORD cbData; - DWORD offData; + DWORD dSignature; + DWORD nVersion; + DWORD cbData; + DWORD offData; } alias EMRFORMAT* PEMRFORMAT; struct EMRFRAMERGN { - EMR emr; - RECTL rclBounds; - DWORD cbRgnData; - DWORD ihBrush; - SIZEL szlStroke; - BYTE[1] RgnData; + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + SIZEL szlStroke; + BYTE[1] RgnData; } alias EMRFRAMERGN* PEMRFRAMERGN; struct EMRGDICOMMENT { - EMR emr; - DWORD cbData; - BYTE[1] Data; + EMR emr; + DWORD cbData; + BYTE[1] Data; } alias EMRGDICOMMENT* PEMRGDICOMMENT; struct EMRINVERTRGN { - EMR emr; - RECTL rclBounds; - DWORD cbRgnData; - BYTE[1] RgnData; + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + BYTE[1] RgnData; } alias EMRINVERTRGN* PEMRINVERTRGN; alias TypeDef!(EMRINVERTRGN) EMRPAINTRGN; alias EMRPAINTRGN* PEMRPAINTRGN; struct EMRLINETO { - EMR emr; - POINTL ptl; + EMR emr; + POINTL ptl; } alias EMRLINETO* PEMRLINETO; alias TypeDef!(EMRLINETO) EMRMOVETOEX; alias EMRMOVETOEX* PEMRMOVETOEX; struct EMRMASKBLT { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG cxDest; - LONG cyDest; - DWORD dwRop; - LONG xSrc; - LONG ySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - LONG xMask; - LONG yMask; - DWORD iUsageMask; - DWORD offBmiMask; - DWORD cbBmiMask; - DWORD offBitsMask; - DWORD cbBitsMask; + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG xMask; + LONG yMask; + DWORD iUsageMask; + DWORD offBmiMask; + DWORD cbBmiMask; + DWORD offBitsMask; + DWORD cbBitsMask; } alias EMRMASKBLT* PEMRMASKBLT; struct EMRMODIFYWORLDTRANSFORM { - EMR emr; - XFORM xform; - DWORD iMode; + EMR emr; + XFORM xform; + DWORD iMode; } alias EMRMODIFYWORLDTRANSFORM* PEMRMODIFYWORLDTRANSFORM; struct EMROFFSETCLIPRGN { - EMR emr; - POINTL ptlOffset; + EMR emr; + POINTL ptlOffset; } alias EMROFFSETCLIPRGN* PEMROFFSETCLIPRGN; struct EMRPLGBLT { - EMR emr; - RECTL rclBounds; - POINTL[3] aptlDest; - LONG xSrc; - LONG ySrc; - LONG cxSrc; - LONG cySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - LONG xMask; - LONG yMask; - DWORD iUsageMask; - DWORD offBmiMask; - DWORD cbBmiMask; - DWORD offBitsMask; - DWORD cbBitsMask; + EMR emr; + RECTL rclBounds; + POINTL[3] aptlDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG xMask; + LONG yMask; + DWORD iUsageMask; + DWORD offBmiMask; + DWORD cbBmiMask; + DWORD offBitsMask; + DWORD cbBitsMask; } alias EMRPLGBLT* PEMRPLGBLT; struct EMRPOLYDRAW { - EMR emr; - RECTL rclBounds; - DWORD cptl; - POINTL[1] aptl; - BYTE[1] abTypes; + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL[1] aptl; + BYTE[1] abTypes; } alias EMRPOLYDRAW* PEMRPOLYDRAW; struct EMRPOLYDRAW16 { - EMR emr; - RECTL rclBounds; - DWORD cpts; - POINTS[1] apts; - BYTE[1] abTypes; + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS[1] apts; + BYTE[1] abTypes; } alias EMRPOLYDRAW16* PEMRPOLYDRAW16; struct EMRPOLYLINE { - EMR emr; - RECTL rclBounds; - DWORD cptl; - POINTL[1] aptl; + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL[1] aptl; } alias EMRPOLYLINE* PEMRPOLYLINE; alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIER; @@ -2984,10 +2984,10 @@ alias TypeDef!(EMRPOLYLINE) EMRPOLYLINETO; alias EMRPOLYLINETO* PEMRPOLYLINETO; struct EMRPOLYLINE16 { - EMR emr; - RECTL rclBounds; - DWORD cpts; - POINTS[1] apts; + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS[1] apts; } alias EMRPOLYLINE16* PEMRPOLYLINE16; alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIER16; @@ -3000,165 +3000,165 @@ alias TypeDef!(EMRPOLYLINE16) EMRPOLYLINETO16; alias EMRPOLYLINETO16* PEMRPOLYLINETO16; struct EMRPOLYPOLYLINE { - EMR emr; - RECTL rclBounds; - DWORD nPolys; - DWORD cptl; - DWORD[1] aPolyCounts; - POINTL[1] aptl; + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cptl; + DWORD[1] aPolyCounts; + POINTL[1] aptl; } alias EMRPOLYPOLYLINE* PEMRPOLYPOLYLINE; alias TypeDef!(EMRPOLYPOLYLINE) EMRPOLYPOLYGON; alias EMRPOLYPOLYGON* PEMRPOLYPOLYGON; struct EMRPOLYPOLYLINE16 { - EMR emr; - RECTL rclBounds; - DWORD nPolys; - DWORD cpts; - DWORD[1] aPolyCounts; - POINTS[1] apts; + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cpts; + DWORD[1] aPolyCounts; + POINTS[1] apts; } alias EMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16; alias TypeDef!(EMRPOLYPOLYLINE16) EMRPOLYPOLYGON16; alias EMRPOLYPOLYGON16* PEMRPOLYPOLYGON16; struct EMRPOLYTEXTOUTA { - EMR emr; - RECTL rclBounds; - DWORD iGraphicsMode; - FLOAT exScale; - FLOAT eyScale; - LONG cStrings; - EMRTEXT[1] aemrtext; + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + LONG cStrings; + EMRTEXT[1] aemrtext; } alias EMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA; alias TypeDef!(EMRPOLYTEXTOUTA) EMRPOLYTEXTOUTW; alias EMRPOLYTEXTOUTW* PEMRPOLYTEXTOUTW; struct EMRRESIZEPALETTE { - EMR emr; - DWORD ihPal; - DWORD cEntries; + EMR emr; + DWORD ihPal; + DWORD cEntries; } alias EMRRESIZEPALETTE* PEMRRESIZEPALETTE; struct EMRRESTOREDC { - EMR emr; - LONG iRelative; + EMR emr; + LONG iRelative; } alias EMRRESTOREDC* PEMRRESTOREDC; struct EMRROUNDRECT { - EMR emr; - RECTL rclBox; - SIZEL szlCorner; + EMR emr; + RECTL rclBox; + SIZEL szlCorner; } alias EMRROUNDRECT* PEMRROUNDRECT; struct EMRSCALEVIEWPORTEXTEX { - EMR emr; - LONG xNum; - LONG xDenom; - LONG yNum; - LONG yDenom; + EMR emr; + LONG xNum; + LONG xDenom; + LONG yNum; + LONG yDenom; } alias EMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX; alias TypeDef!(EMRSCALEVIEWPORTEXTEX) EMRSCALEWINDOWEXTEX; alias EMRSCALEWINDOWEXTEX* PEMRSCALEWINDOWEXTEX; struct EMRSELECTOBJECT { - EMR emr; - DWORD ihObject; + EMR emr; + DWORD ihObject; } alias EMRSELECTOBJECT* PEMRSELECTOBJECT; alias TypeDef!(EMRSELECTOBJECT) EMRDELETEOBJECT; alias EMRDELETEOBJECT* PEMRDELETEOBJECT; struct EMRSELECTPALETTE { - EMR emr; - DWORD ihPal; + EMR emr; + DWORD ihPal; } alias EMRSELECTPALETTE* PEMRSELECTPALETTE; struct EMRSETARCDIRECTION { - EMR emr; - DWORD iArcDirection; + EMR emr; + DWORD iArcDirection; } alias EMRSETARCDIRECTION* PEMRSETARCDIRECTION; struct EMRSETTEXTCOLOR { - EMR emr; - COLORREF crColor; + EMR emr; + COLORREF crColor; } alias EMRSETTEXTCOLOR* PEMRSETTEXTCOLOR; alias TypeDef!(EMRSETTEXTCOLOR) EMRSETBKCOLOR; alias EMRSETBKCOLOR* PEMRSETBKCOLOR; struct EMRSETCOLORADJUSTMENT { - EMR emr; - COLORADJUSTMENT ColorAdjustment; + EMR emr; + COLORADJUSTMENT ColorAdjustment; } alias EMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT; struct EMRSETDIBITSTODEVICE { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG xSrc; - LONG ySrc; - LONG cxSrc; - LONG cySrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - DWORD iUsageSrc; - DWORD iStartScan; - DWORD cScans; + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + DWORD iUsageSrc; + DWORD iStartScan; + DWORD cScans; } alias EMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE; struct EMRSETMAPPERFLAGS { - EMR emr; - DWORD dwFlags; + EMR emr; + DWORD dwFlags; } alias EMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS; struct EMRSETMITERLIMIT { - EMR emr; - FLOAT eMiterLimit; + EMR emr; + FLOAT eMiterLimit; } alias EMRSETMITERLIMIT* PEMRSETMITERLIMIT; struct EMRSETPALETTEENTRIES { - EMR emr; - DWORD ihPal; - DWORD iStart; - DWORD cEntries; - PALETTEENTRY[1] aPalEntries; + EMR emr; + DWORD ihPal; + DWORD iStart; + DWORD cEntries; + PALETTEENTRY[1] aPalEntries; } alias EMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES; struct EMRSETPIXELV { - EMR emr; - POINTL ptlPixel; - COLORREF crColor; + EMR emr; + POINTL ptlPixel; + COLORREF crColor; } alias EMRSETPIXELV* PEMRSETPIXELV; struct EMRSETVIEWPORTEXTEX { - EMR emr; - SIZEL szlExtent; + EMR emr; + SIZEL szlExtent; } alias EMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX; alias TypeDef!(EMRSETVIEWPORTEXTEX) EMRSETWINDOWEXTEX; alias EMRSETWINDOWEXTEX* PEMRSETWINDOWEXTEX; struct EMRSETVIEWPORTORGEX { - EMR emr; - POINTL ptlOrigin; + EMR emr; + POINTL ptlOrigin; } alias EMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX; alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETWINDOWORGEX; @@ -3167,55 +3167,55 @@ alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETBRUSHORGEX; alias EMRSETBRUSHORGEX* PEMRSETBRUSHORGEX; struct EMRSETWORLDTRANSFORM { - EMR emr; - XFORM xform; + EMR emr; + XFORM xform; } alias EMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM; struct EMRSTRETCHBLT { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG cxDest; - LONG cyDest; - DWORD dwRop; - LONG xSrc; - LONG ySrc; - XFORM xformSrc; - COLORREF crBkColorSrc; - DWORD iUsageSrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - LONG cxSrc; - LONG cySrc; + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG cxSrc; + LONG cySrc; } alias EMRSTRETCHBLT* PEMRSTRETCHBLT; struct EMRSTRETCHDIBITS { - EMR emr; - RECTL rclBounds; - LONG xDest; - LONG yDest; - LONG xSrc; - LONG ySrc; - LONG cxSrc; - LONG cySrc; - DWORD offBmiSrc; - DWORD cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; - DWORD iUsageSrc; - DWORD dwRop; - LONG cxDest; - LONG cyDest; + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + DWORD iUsageSrc; + DWORD dwRop; + LONG cxDest; + LONG cyDest; } alias EMRSTRETCHDIBITS* PEMRSTRETCHDIBITS; struct EMRABORTPATH { - EMR emr; + EMR emr; } alias EMRABORTPATH* PEMRABORTPATH; alias TypeDef!(EMRABORTPATH) EMRBEGINPATH; @@ -3236,8 +3236,8 @@ alias TypeDef!(EMRABORTPATH) EMRREALIZEPALETTE; alias EMRREALIZEPALETTE* PEMRREALIZEPALETTE; struct EMRSELECTCLIPPATH { - EMR emr; - DWORD iMode; + EMR emr; + DWORD iMode; } alias EMRSELECTCLIPPATH* PEMRSELECTCLIPPATH; alias TypeDef!(EMRSELECTCLIPPATH) EMRSETBKMODE; @@ -3257,20 +3257,20 @@ alias EMRSETTEXTALIGN* PEMRSETTEXTALIGN; alias TypeDef!(EMRSELECTCLIPPATH) EMRENABLEICM; alias EMRENABLEICM* PEMRENABLEICM; static if (_WIN32_WINNT >= 0x500) { - alias TypeDef!(EMRSELECTCLIPPATH) EMRSETLAYOUT; - alias EMRSETLAYOUT* PEMRSETLAYOUT; + alias TypeDef!(EMRSELECTCLIPPATH) EMRSETLAYOUT; + alias EMRSETLAYOUT* PEMRSETLAYOUT; } align(2): struct METAHEADER { align(2): - WORD mtType; - WORD mtHeaderSize; - WORD mtVersion; - DWORD mtSize; - WORD mtNoObjects; - DWORD mtMaxRecord; - WORD mtNoParameters; + WORD mtType; + WORD mtHeaderSize; + WORD mtVersion; + DWORD mtSize; + WORD mtNoObjects; + DWORD mtMaxRecord; + WORD mtNoParameters; } alias METAHEADER* PMETAHEADER; alias METAHEADER* LPMETAHEADER; @@ -3278,334 +3278,334 @@ alias METAHEADER* LPMETAHEADER; align: struct ENHMETAHEADER { - DWORD iType = EMR_HEADER; - DWORD nSize = ENHMETAHEADER.sizeof; - RECTL rclBounds; - RECTL rclFrame; - DWORD dSignature = ENHMETA_SIGNATURE; - DWORD nVersion; - DWORD nBytes; - DWORD nRecords; - WORD nHandles; - WORD sReserved; - DWORD nDescription; - DWORD offDescription; - DWORD nPalEntries; - SIZEL szlDevice; - SIZEL szlMillimeters; - DWORD cbPixelFormat; - DWORD offPixelFormat; - DWORD bOpenGL; - static if (_WIN32_WINNT >= 0x500) { - SIZEL szlMicrometers; - } + DWORD iType = EMR_HEADER; + DWORD nSize = ENHMETAHEADER.sizeof; + RECTL rclBounds; + RECTL rclFrame; + DWORD dSignature = ENHMETA_SIGNATURE; + DWORD nVersion; + DWORD nBytes; + DWORD nRecords; + WORD nHandles; + WORD sReserved; + DWORD nDescription; + DWORD offDescription; + DWORD nPalEntries; + SIZEL szlDevice; + SIZEL szlMillimeters; + DWORD cbPixelFormat; + DWORD offPixelFormat; + DWORD bOpenGL; + static if (_WIN32_WINNT >= 0x500) { + SIZEL szlMicrometers; + } } alias ENHMETAHEADER* PENHMETAHEADER, LPENHMETAHEADER; struct METARECORD { - DWORD rdSize; - WORD rdFunction; - WORD[1] rdParm; + DWORD rdSize; + WORD rdFunction; + WORD[1] rdParm; } alias METARECORD* PMETARECORD; alias METARECORD* LPMETARECORD; struct ENHMETARECORD { - DWORD iType; - DWORD nSize; - DWORD[1] dParm; + DWORD iType; + DWORD nSize; + DWORD[1] dParm; } alias ENHMETARECORD* PENHMETARECORD, LPENHMETARECORD; // --- struct HANDLETABLE { - HGDIOBJ[1] objectHandle; + HGDIOBJ[1] objectHandle; } alias HANDLETABLE* PHANDLETABLE, LPHANDLETABLE; struct TEXTMETRICA { - LONG tmHeight; - LONG tmAscent; - LONG tmDescent; - LONG tmInternalLeading; - LONG tmExternalLeading; - LONG tmAveCharWidth; - LONG tmMaxCharWidth; - LONG tmWeight; - LONG tmOverhang; - LONG tmDigitizedAspectX; - LONG tmDigitizedAspectY; - BYTE tmFirstChar; - BYTE tmLastChar; - BYTE tmDefaultChar; - BYTE tmBreakChar; - BYTE tmItalic; - BYTE tmUnderlined; - BYTE tmStruckOut; - BYTE tmPitchAndFamily; - BYTE tmCharSet; + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; } alias TEXTMETRICA* PTEXTMETRICA, NPTEXTMETRICA, LPTEXTMETRICA; struct TEXTMETRICW { - LONG tmHeight; - LONG tmAscent; - LONG tmDescent; - LONG tmInternalLeading; - LONG tmExternalLeading; - LONG tmAveCharWidth; - LONG tmMaxCharWidth; - LONG tmWeight; - LONG tmOverhang; - LONG tmDigitizedAspectX; - LONG tmDigitizedAspectY; - WCHAR tmFirstChar; - WCHAR tmLastChar; - WCHAR tmDefaultChar; - WCHAR tmBreakChar; - BYTE tmItalic; - BYTE tmUnderlined; - BYTE tmStruckOut; - BYTE tmPitchAndFamily; - BYTE tmCharSet; + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; } alias TEXTMETRICW* PTEXTMETRICW, NPTEXTMETRICW, LPTEXTMETRICW; struct RGNDATAHEADER { - DWORD dwSize; - DWORD iType; - DWORD nCount; - DWORD nRgnSize; - RECT rcBound; + DWORD dwSize; + DWORD iType; + DWORD nCount; + DWORD nRgnSize; + RECT rcBound; } alias RGNDATAHEADER* PRGNDATAHEADER; struct RGNDATA { - RGNDATAHEADER rdh; - char[1] Buffer; + RGNDATAHEADER rdh; + char[1] Buffer; } alias RGNDATA* PRGNDATA, NPRGNDATA, LPRGNDATA; /* for GetRandomRgn */ const SYSRGN=4; struct GCP_RESULTSA { - DWORD lStructSize; - LPSTR lpOutString; - UINT* lpOrder; - INT* lpDx; - INT* lpCaretPos; - LPSTR lpClass; - LPWSTR lpGlyphs; - UINT nGlyphs; - UINT nMaxFit; + DWORD lStructSize; + LPSTR lpOutString; + UINT* lpOrder; + INT* lpDx; + INT* lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; } alias GCP_RESULTSA* LPGCP_RESULTSA; struct GCP_RESULTSW { - DWORD lStructSize; - LPWSTR lpOutString; - UINT* lpOrder; - INT* lpDx; - INT* lpCaretPos; - LPWSTR lpClass; - LPWSTR lpGlyphs; - UINT nGlyphs; - UINT nMaxFit; + DWORD lStructSize; + LPWSTR lpOutString; + UINT* lpOrder; + INT* lpDx; + INT* lpCaretPos; + LPWSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; } alias GCP_RESULTSW* LPGCP_RESULTSW; struct GLYPHMETRICS { - UINT gmBlackBoxX; - UINT gmBlackBoxY; - POINT gmptGlyphOrigin; - short gmCellIncX; - short gmCellIncY; + UINT gmBlackBoxX; + UINT gmBlackBoxY; + POINT gmptGlyphOrigin; + short gmCellIncX; + short gmCellIncY; } alias GLYPHMETRICS* LPGLYPHMETRICS; static if (_WIN32_WINNT >= 0x500) { - struct WCRANGE { - WCHAR wcLow; - USHORT cGlyphs; - } - alias WCRANGE* PWCRANGE, LPWCRANGE; - - struct GLYPHSET { - DWORD cbThis; - DWORD flAccel; - DWORD cGlyphsSupported; - DWORD cRanges; - WCRANGE[1] ranges; - } - alias GLYPHSET* PGLYPHSET, LPGLYPHSET; + struct WCRANGE { + WCHAR wcLow; + USHORT cGlyphs; + } + alias WCRANGE* PWCRANGE, LPWCRANGE; + + struct GLYPHSET { + DWORD cbThis; + DWORD flAccel; + DWORD cGlyphsSupported; + DWORD cRanges; + WCRANGE[1] ranges; + } + alias GLYPHSET* PGLYPHSET, LPGLYPHSET; - const DWORD GS_8BIT_INDICES = 0x00000001; + const DWORD GS_8BIT_INDICES = 0x00000001; } struct KERNINGPAIR { - WORD wFirst; - WORD wSecond; - int iKernAmount; + WORD wFirst; + WORD wSecond; + int iKernAmount; } alias KERNINGPAIR* LPKERNINGPAIR; struct FIXED { - WORD fract; - short value; + WORD fract; + short value; } struct MAT2 { - FIXED eM11; - FIXED eM12; - FIXED eM21; - FIXED eM22; + FIXED eM11; + FIXED eM12; + FIXED eM21; + FIXED eM22; } alias MAT2* LPMAT2; struct OUTLINETEXTMETRICA { - UINT otmSize; - TEXTMETRICA otmTextMetrics; - BYTE otmFiller; - PANOSE otmPanoseNumber; - UINT otmfsSelection; - UINT otmfsType; - int otmsCharSlopeRise; - int otmsCharSlopeRun; - int otmItalicAngle; - UINT otmEMSquare; - int otmAscent; - int otmDescent; - UINT otmLineGap; - UINT otmsCapEmHeight; - UINT otmsXHeight; - RECT otmrcFontBox; - int otmMacAscent; - int otmMacDescent; - UINT otmMacLineGap; - UINT otmusMinimumPPEM; - POINT otmptSubscriptSize; - POINT otmptSubscriptOffset; - POINT otmptSuperscriptSize; - POINT otmptSuperscriptOffset; - UINT otmsStrikeoutSize; - int otmsStrikeoutPosition; - int otmsUnderscoreSize; - int otmsUnderscorePosition; - PSTR otmpFamilyName; - PSTR otmpFaceName; - PSTR otmpStyleName; - PSTR otmpFullName; + UINT otmSize; + TEXTMETRICA otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; } alias OUTLINETEXTMETRICA* POUTLINETEXTMETRICA, NPOUTLINETEXTMETRICA, LPOUTLINETEXTMETRICA; struct OUTLINETEXTMETRICW { - UINT otmSize; - TEXTMETRICW otmTextMetrics; - BYTE otmFiller; - PANOSE otmPanoseNumber; - UINT otmfsSelection; - UINT otmfsType; - int otmsCharSlopeRise; - int otmsCharSlopeRun; - int otmItalicAngle; - UINT otmEMSquare; - int otmAscent; - int otmDescent; - UINT otmLineGap; - UINT otmsCapEmHeight; - UINT otmsXHeight; - RECT otmrcFontBox; - int otmMacAscent; - int otmMacDescent; - UINT otmMacLineGap; - UINT otmusMinimumPPEM; - POINT otmptSubscriptSize; - POINT otmptSubscriptOffset; - POINT otmptSuperscriptSize; - POINT otmptSuperscriptOffset; - UINT otmsStrikeoutSize; - int otmsStrikeoutPosition; - int otmsUnderscoreSize; - int otmsUnderscorePosition; - PSTR otmpFamilyName; - PSTR otmpFaceName; - PSTR otmpStyleName; - PSTR otmpFullName; + UINT otmSize; + TEXTMETRICW otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; } alias OUTLINETEXTMETRICW* POUTLINETEXTMETRICW, NPOUTLINETEXTMETRICW, LPOUTLINETEXTMETRICW; struct RASTERIZER_STATUS { - short nSize; - short wFlags; - short nLanguageID; + short nSize; + short wFlags; + short nLanguageID; } alias RASTERIZER_STATUS* LPRASTERIZER_STATUS; struct POLYTEXTA { - int x; - int y; - UINT n; - LPCSTR lpstr; - UINT uiFlags; - RECT rcl; - int* pdx; + int x; + int y; + UINT n; + LPCSTR lpstr; + UINT uiFlags; + RECT rcl; + int* pdx; } alias POLYTEXTA* PPOLYTEXTA, NPPOLYTEXTA, LPPOLYTEXTA; struct POLYTEXTW { - int x; - int y; - UINT n; - LPCWSTR lpstr; - UINT uiFlags; - RECT rcl; - int* pdx; + int x; + int y; + UINT n; + LPCWSTR lpstr; + UINT uiFlags; + RECT rcl; + int* pdx; } alias POLYTEXTW* PPOLYTEXTW, NPPOLYTEXTW, LPPOLYTEXTW; struct PIXELFORMATDESCRIPTOR { - WORD nSize; - WORD nVersion; - DWORD dwFlags; - BYTE iPixelType; - BYTE cColorBits; - BYTE cRedBits; - BYTE cRedShift; - BYTE cGreenBits; - BYTE cGreenShift; - BYTE cBlueBits; - BYTE cBlueShift; - BYTE cAlphaBits; - BYTE cAlphaShift; - BYTE cAccumBits; - BYTE cAccumRedBits; - BYTE cAccumGreenBits; - BYTE cAccumBlueBits; - BYTE cAccumAlphaBits; - BYTE cDepthBits; - BYTE cStencilBits; - BYTE cAuxBuffers; - BYTE iLayerType; - BYTE bReserved; - DWORD dwLayerMask; - DWORD dwVisibleMask; - DWORD dwDamageMask; + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerType; + BYTE bReserved; + DWORD dwLayerMask; + DWORD dwVisibleMask; + DWORD dwDamageMask; } alias PIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR, LPPIXELFORMATDESCRIPTOR; struct METAFILEPICT { - LONG mm; - LONG xExt; - LONG yExt; - HMETAFILE hMF; + LONG mm; + LONG xExt; + LONG yExt; + HMETAFILE hMF; } alias METAFILEPICT* LPMETAFILEPICT; struct LOCALESIGNATURE { - DWORD[4] lsUsb; - DWORD[2] lsCsbDefault; - DWORD[2] lsCsbSupported; + DWORD[4] lsUsb; + DWORD[2] lsCsbDefault; + DWORD[2] lsCsbSupported; } alias LOCALESIGNATURE* PLOCALESIGNATURE, LPLOCALESIGNATURE; @@ -3613,188 +3613,188 @@ alias LONG LCSTYPE; /* What this for? */ align(4): struct NEWTEXTMETRICA { - LONG tmHeight; - LONG tmAscent; - LONG tmDescent; - LONG tmInternalLeading; - LONG tmExternalLeading; - LONG tmAveCharWidth; - LONG tmMaxCharWidth; - LONG tmWeight; - LONG tmOverhang; - LONG tmDigitizedAspectX; - LONG tmDigitizedAspectY; - BYTE tmFirstChar; - BYTE tmLastChar; - BYTE tmDefaultChar; - BYTE tmBreakChar; - BYTE tmItalic; - BYTE tmUnderlined; - BYTE tmStruckOut; - BYTE tmPitchAndFamily; - BYTE tmCharSet; - DWORD ntmFlags; - UINT ntmSizeEM; - UINT ntmCellHeight; - UINT ntmAvgWidth; + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; } alias NEWTEXTMETRICA* PNEWTEXTMETRICA, NPNEWTEXTMETRICA, LPNEWTEXTMETRICA; struct NEWTEXTMETRICW { - LONG tmHeight; - LONG tmAscent; - LONG tmDescent; - LONG tmInternalLeading; - LONG tmExternalLeading; - LONG tmAveCharWidth; - LONG tmMaxCharWidth; - LONG tmWeight; - LONG tmOverhang; - LONG tmDigitizedAspectX; - LONG tmDigitizedAspectY; - WCHAR tmFirstChar; - WCHAR tmLastChar; - WCHAR tmDefaultChar; - WCHAR tmBreakChar; - BYTE tmItalic; - BYTE tmUnderlined; - BYTE tmStruckOut; - BYTE tmPitchAndFamily; - BYTE tmCharSet; - DWORD ntmFlags; - UINT ntmSizeEM; - UINT ntmCellHeight; - UINT ntmAvgWidth; + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; } alias NEWTEXTMETRICW* PNEWTEXTMETRICW, NPNEWTEXTMETRICW, LPNEWTEXTMETRICW; align: struct NEWTEXTMETRICEXA { - NEWTEXTMETRICA ntmTm; - FONTSIGNATURE ntmFontSig; + NEWTEXTMETRICA ntmTm; + FONTSIGNATURE ntmFontSig; } struct NEWTEXTMETRICEXW { - NEWTEXTMETRICW ntmTm; - FONTSIGNATURE ntmFontSig; + NEWTEXTMETRICW ntmTm; + FONTSIGNATURE ntmFontSig; } struct PELARRAY { - LONG paXCount; - LONG paYCount; - LONG paXExt; - LONG paYExt; - BYTE paRGBs; + LONG paXCount; + LONG paYCount; + LONG paXExt; + LONG paYExt; + BYTE paRGBs; } alias PELARRAY* PPELARRAY, NPPELARRAY, LPPELARRAY; struct ENUMLOGFONTA { - LOGFONTA elfLogFont; - BYTE[LF_FULLFACESIZE] elfFullName; - BYTE[LF_FACESIZE] elfStyle; + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; } alias ENUMLOGFONTA* LPENUMLOGFONTA; struct ENUMLOGFONTW { - LOGFONTW elfLogFont; - WCHAR[LF_FULLFACESIZE] elfFullName; - WCHAR[LF_FACESIZE] elfStyle; + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; } alias ENUMLOGFONTW* LPENUMLOGFONTW; struct ENUMLOGFONTEXA { - LOGFONTA elfLogFont; - BYTE[LF_FULLFACESIZE] elfFullName; - BYTE[LF_FACESIZE] elfStyle; - BYTE[LF_FACESIZE] elfScript; + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; + BYTE[LF_FACESIZE] elfScript; } alias ENUMLOGFONTEXA* LPENUMLOGFONTEXA; struct ENUMLOGFONTEXW { - LOGFONTW elfLogFont; - WCHAR[LF_FULLFACESIZE] elfFullName; - WCHAR[LF_FACESIZE] elfStyle; - WCHAR[LF_FACESIZE] elfScript; + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; + WCHAR[LF_FACESIZE] elfScript; } alias ENUMLOGFONTEXW* LPENUMLOGFONTEXW; struct POINTFX { - FIXED x; - FIXED y; + FIXED x; + FIXED y; } alias POINTFX* LPPOINTFX; struct TTPOLYCURVE { - WORD wType; - WORD cpfx; - POINTFX[1] apfx; + WORD wType; + WORD cpfx; + POINTFX[1] apfx; } alias TTPOLYCURVE* LPTTPOLYCURVE; struct TTPOLYGONHEADER { - DWORD cb; - DWORD dwType; - POINTFX pfxStart; + DWORD cb; + DWORD dwType; + POINTFX pfxStart; } alias TTPOLYGONHEADER* LPTTPOLYGONHEADER; struct POINTFLOAT { - FLOAT x; - FLOAT y; + FLOAT x; + FLOAT y; } alias POINTFLOAT* PPOINTFLOAT; struct GLYPHMETRICSFLOAT { - FLOAT gmfBlackBoxX; - FLOAT gmfBlackBoxY; - POINTFLOAT gmfptGlyphOrigin; - FLOAT gmfCellIncX; - FLOAT gmfCellIncY; + FLOAT gmfBlackBoxX; + FLOAT gmfBlackBoxY; + POINTFLOAT gmfptGlyphOrigin; + FLOAT gmfCellIncX; + FLOAT gmfCellIncY; } alias GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT, LPGLYPHMETRICSFLOAT; struct LAYERPLANEDESCRIPTOR { - WORD nSize; - WORD nVersion; - DWORD dwFlags; - BYTE iPixelType; - BYTE cColorBits; - BYTE cRedBits; - BYTE cRedShift; - BYTE cGreenBits; - BYTE cGreenShift; - BYTE cBlueBits; - BYTE cBlueShift; - BYTE cAlphaBits; - BYTE cAlphaShift; - BYTE cAccumBits; - BYTE cAccumRedBits; - BYTE cAccumGreenBits; - BYTE cAccumBlueBits; - BYTE cAccumAlphaBits; - BYTE cDepthBits; - BYTE cStencilBits; - BYTE cAuxBuffers; - BYTE iLayerPlane; - BYTE bReserved; - COLORREF crTransparent; + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerPlane; + BYTE bReserved; + COLORREF crTransparent; } alias LAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR, LPLAYERPLANEDESCRIPTOR; struct BLENDFUNCTION { - BYTE BlendOp; - BYTE BlendFlags; - BYTE SourceConstantAlpha; - BYTE AlphaFormat; + BYTE BlendOp; + BYTE BlendFlags; + BYTE SourceConstantAlpha; + BYTE AlphaFormat; } alias BLENDFUNCTION* PBLENDFUNCTION, LPBLENDFUNCTION; const MM_MAX_NUMAXES = 16; struct DESIGNVECTOR { - DWORD dvReserved; - DWORD dvNumAxes; - LONG[MM_MAX_NUMAXES] dvValues; + DWORD dvReserved; + DWORD dvNumAxes; + LONG[MM_MAX_NUMAXES] dvValues; } alias DESIGNVECTOR* PDESIGNVECTOR, LPDESIGNVECTOR; const STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8); @@ -3802,139 +3802,139 @@ const STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8); static if (_WIN32_WINNT >= 0x500) { - const MM_MAX_AXES_NAMELEN = 16; - - struct AXISINFOA { - LONG axMinValue; - LONG axMaxValue; - BYTE[MM_MAX_AXES_NAMELEN] axAxisName; - } - alias AXISINFOA* PAXISINFOA, LPAXISINFOA; - - struct AXISINFOW { - LONG axMinValue; - LONG axMaxValue; - WCHAR[MM_MAX_AXES_NAMELEN] axAxisName; - } - alias AXISINFOW* PAXISINFOW, LPAXISINFOW; - - version (Unicode) { - alias AXISINFOW AXISINFO; - alias PAXISINFOW PAXISINFO; - alias LPAXISINFOW LPAXISINFO; - } - else { - alias AXISINFOA AXISINFO; - alias PAXISINFOA PAXISINFO; - alias LPAXISINFOA LPAXISINFO; - } - - struct AXESLISTA { - DWORD axlReserved; - DWORD axlNumAxes; - AXISINFOA[MM_MAX_NUMAXES] axlAxisInfo; - } - alias AXESLISTA* PAXESLISTA, LPAXESLISTA; - - struct AXESLISTW { - DWORD axlReserved; - DWORD axlNumAxes; - AXISINFOW[MM_MAX_NUMAXES] axlAxisInfo; - } - alias AXESLISTW* PAXESLISTW, LPAXESLISTW; - - version (Unicode) { - alias AXESLISTW AXESLIST; - alias PAXESLISTW PAXESLIST; - alias LPAXESLISTW LPAXESLIST; - } - else { - alias AXESLISTA AXESLIST; - alias PAXESLISTA PAXESLIST; - alias LPAXESLISTA LPAXESLIST; - } - - struct ENUMLOGFONTEXDVA { - ENUMLOGFONTEXA elfEnumLogfontEx; - DESIGNVECTOR elfDesignVector; - } - alias ENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA, LPENUMLOGFONTEXDVA; - - struct ENUMLOGFONTEXDVW { - ENUMLOGFONTEXW elfEnumLogfontEx; - DESIGNVECTOR elfDesignVector; - } - alias ENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW, LPENUMLOGFONTEXDVW; - - HFONT CreateFontIndirectExA(const(ENUMLOGFONTEXDVA)*); - HFONT CreateFontIndirectExW(const(ENUMLOGFONTEXDVW)*); - version (Unicode) - alias CreateFontIndirectExW CreateFontIndirectEx; - else - alias CreateFontIndirectExA CreateFontIndirectEx; - - struct ENUMTEXTMETRICA { - NEWTEXTMETRICEXA etmNewTextMetricEx; - AXESLISTA etmAxesList; - } - alias ENUMTEXTMETRICA* PENUMTEXTMETRICA, LPENUMTEXTMETRICA; - - struct ENUMTEXTMETRICW { - NEWTEXTMETRICEXW etmNewTextMetricEx; - AXESLISTW etmAxesList; - } - alias ENUMTEXTMETRICW* PENUMTEXTMETRICW, LPENUMTEXTMETRICW; - - version (Unicode) { - alias ENUMTEXTMETRICW ENUMTEXTMETRIC; - alias PENUMTEXTMETRICW PENUMTEXTMETRIC; - alias LPENUMTEXTMETRICW LPENUMTEXTMETRIC; - } - else { - alias ENUMTEXTMETRICA ENUMTEXTMETRIC; - alias PENUMTEXTMETRICA PENUMTEXTMETRIC; - alias LPENUMTEXTMETRICA LPENUMTEXTMETRIC; - } + const MM_MAX_AXES_NAMELEN = 16; + + struct AXISINFOA { + LONG axMinValue; + LONG axMaxValue; + BYTE[MM_MAX_AXES_NAMELEN] axAxisName; + } + alias AXISINFOA* PAXISINFOA, LPAXISINFOA; + + struct AXISINFOW { + LONG axMinValue; + LONG axMaxValue; + WCHAR[MM_MAX_AXES_NAMELEN] axAxisName; + } + alias AXISINFOW* PAXISINFOW, LPAXISINFOW; + + version (Unicode) { + alias AXISINFOW AXISINFO; + alias PAXISINFOW PAXISINFO; + alias LPAXISINFOW LPAXISINFO; + } + else { + alias AXISINFOA AXISINFO; + alias PAXISINFOA PAXISINFO; + alias LPAXISINFOA LPAXISINFO; + } + + struct AXESLISTA { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOA[MM_MAX_NUMAXES] axlAxisInfo; + } + alias AXESLISTA* PAXESLISTA, LPAXESLISTA; + + struct AXESLISTW { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOW[MM_MAX_NUMAXES] axlAxisInfo; + } + alias AXESLISTW* PAXESLISTW, LPAXESLISTW; + + version (Unicode) { + alias AXESLISTW AXESLIST; + alias PAXESLISTW PAXESLIST; + alias LPAXESLISTW LPAXESLIST; + } + else { + alias AXESLISTA AXESLIST; + alias PAXESLISTA PAXESLIST; + alias LPAXESLISTA LPAXESLIST; + } + + struct ENUMLOGFONTEXDVA { + ENUMLOGFONTEXA elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; + } + alias ENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA, LPENUMLOGFONTEXDVA; + + struct ENUMLOGFONTEXDVW { + ENUMLOGFONTEXW elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; + } + alias ENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW, LPENUMLOGFONTEXDVW; + + HFONT CreateFontIndirectExA(const(ENUMLOGFONTEXDVA)*); + HFONT CreateFontIndirectExW(const(ENUMLOGFONTEXDVW)*); + version (Unicode) + alias CreateFontIndirectExW CreateFontIndirectEx; + else + alias CreateFontIndirectExA CreateFontIndirectEx; + + struct ENUMTEXTMETRICA { + NEWTEXTMETRICEXA etmNewTextMetricEx; + AXESLISTA etmAxesList; + } + alias ENUMTEXTMETRICA* PENUMTEXTMETRICA, LPENUMTEXTMETRICA; + + struct ENUMTEXTMETRICW { + NEWTEXTMETRICEXW etmNewTextMetricEx; + AXESLISTW etmAxesList; + } + alias ENUMTEXTMETRICW* PENUMTEXTMETRICW, LPENUMTEXTMETRICW; + + version (Unicode) { + alias ENUMTEXTMETRICW ENUMTEXTMETRIC; + alias PENUMTEXTMETRICW PENUMTEXTMETRIC; + alias LPENUMTEXTMETRICW LPENUMTEXTMETRIC; + } + else { + alias ENUMTEXTMETRICA ENUMTEXTMETRIC; + alias PENUMTEXTMETRICA PENUMTEXTMETRIC; + alias LPENUMTEXTMETRICA LPENUMTEXTMETRIC; + } } /* _WIN32_WINNT >= 0x500 */ struct GRADIENT_TRIANGLE { - ULONG Vertex1; - ULONG Vertex2; - ULONG Vertex3; + ULONG Vertex1; + ULONG Vertex2; + ULONG Vertex3; } alias GRADIENT_TRIANGLE* PGRADIENT_TRIANGLE, LPGRADIENT_TRIANGLE; struct GRADIENT_RECT { - ULONG UpperLeft; - ULONG LowerRight; + ULONG UpperLeft; + ULONG LowerRight; } alias GRADIENT_RECT* PGRADIENT_RECT, LPGRADIENT_RECT; struct DISPLAY_DEVICEA { - DWORD cb; - CHAR[32] DeviceName; - CHAR[128] DeviceString; - DWORD StateFlags; - CHAR[128] DeviceID; - CHAR[128] DeviceKey; + DWORD cb; + CHAR[32] DeviceName; + CHAR[128] DeviceString; + DWORD StateFlags; + CHAR[128] DeviceID; + CHAR[128] DeviceKey; } alias DISPLAY_DEVICEA* PDISPLAY_DEVICEA, LPDISPLAY_DEVICEA; struct DISPLAY_DEVICEW { - DWORD cb; - WCHAR[32] DeviceName; - WCHAR[128] DeviceString; - DWORD StateFlags; - WCHAR[128] DeviceID; - WCHAR[128] DeviceKey; + DWORD cb; + WCHAR[32] DeviceName; + WCHAR[128] DeviceString; + DWORD StateFlags; + WCHAR[128] DeviceID; + WCHAR[128] DeviceKey; } alias DISPLAY_DEVICEW* PDISPLAY_DEVICEW, LPDISPLAY_DEVICEW; struct DRAWPATRECT { - POINT ptPosition; - POINT ptSize; - WORD wStyle; - WORD wPattern; + POINT ptPosition; + POINT ptSize; + WORD wStyle; + WORD wPattern; } alias DRAWPATRECT* PDRAWPATRECT; @@ -3960,593 +3960,593 @@ alias DWORD function (LPSTR, LPSTR, UINT, LPSTR, LPDEVMODEA) LPFNDEVCAPS; //POINTS MAKEPOINTS(DWORD dwValue) #define MAKEPOINTS(l) (*((POINTS*)&(l))) DWORD MAKEROP4(DWORD fore, DWORD back) { - return ((back<<8) & 0xFF000000) | (fore); + return ((back<<8) & 0xFF000000) | (fore); } COLORREF CMYK(BYTE c, BYTE m, BYTE y, BYTE k) { - return cast(COLORREF)(k | (y << 8) | (m << 16) | (c << 24)); + return cast(COLORREF)(k | (y << 8) | (m << 16) | (c << 24)); } BYTE GetCValue(COLORREF cmyk) { - return cast(BYTE)(cmyk >> 24); + return cast(BYTE)(cmyk >> 24); } BYTE GetMValue(COLORREF cmyk) { - return cast(BYTE)(cmyk >> 16); + return cast(BYTE)(cmyk >> 16); } BYTE GetYValue(COLORREF cmyk) { - return cast(BYTE)(cmyk >> 8); + return cast(BYTE)(cmyk >> 8); } BYTE GetKValue(COLORREF cmyk) { - return cast(BYTE)cmyk; + return cast(BYTE)cmyk; } COLORREF RGB(BYTE r, BYTE g, BYTE b) { - return cast(COLORREF)(r | (g << 8) | (b << 16)); + return cast(COLORREF)(r | (g << 8) | (b << 16)); } BYTE GetRValue(COLORREF c) { - return cast(BYTE)c; + return cast(BYTE)c; } BYTE GetGValue(COLORREF c) { - return cast(BYTE)(c >> 8); + return cast(BYTE)(c >> 8); } BYTE GetBValue(COLORREF c) { - return cast(BYTE)(c >> 16); + return cast(BYTE)(c >> 16); } COLORREF PALETTEINDEX(WORD i) { - return 0x01000000 | cast(COLORREF) i; + return 0x01000000 | cast(COLORREF) i; } COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b) { - return 0x02000000|RGB(r, g, b); + return 0x02000000|RGB(r, g, b); } extern(Windows) { - int AbortDoc(HDC); - BOOL AbortPath(HDC); - int AddFontResourceA(LPCSTR); - int AddFontResourceW(LPCWSTR); - BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); - BOOL AnimatePalette(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); - BOOL Arc(HDC, int, int, int, int, int, int, int, int); - BOOL ArcTo(HDC, int, int, int, int, int, int, int, int); - BOOL BeginPath(HDC); - BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); - BOOL CancelDC(HDC); - BOOL CheckColorsInGamut(HDC, PVOID, PVOID, DWORD); - BOOL Chord(HDC, int, int, int, int, int, int, int, int); - int ChoosePixelFormat(HDC, const(PIXELFORMATDESCRIPTOR)*); - HENHMETAFILE CloseEnhMetaFile(HDC); - BOOL CloseFigure(HDC); - HMETAFILE CloseMetaFile(HDC); - BOOL ColorMatchToTarget(HDC, HDC, DWORD); - BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD); - int CombineRgn(HRGN, HRGN, HRGN, int); - BOOL CombineTransform(LPXFORM, const(XFORM)*, const(XFORM)*); - HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); - HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); - HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR); - HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR); - HBITMAP CreateBitmap(int, int, UINT, UINT, PCVOID); - HBITMAP CreateBitmapIndirect(const(BITMAP)*); - HBRUSH CreateBrushIndirect(const(LOGBRUSH)*); - HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA); - HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW); - HBITMAP CreateCompatibleBitmap(HDC, int, int); - HDC CreateCompatibleDC(HDC); - HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); - HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); - HBITMAP CreateDIBitmap(HDC, const(BITMAPINFOHEADER)*, DWORD, PCVOID, const(BITMAPINFO)*, UINT); - HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT); - HBRUSH CreateDIBPatternBrushPt(PCVOID, UINT); - HBITMAP CreateDIBSection(HDC, const(BITMAPINFO)*, UINT, void**, HANDLE, DWORD); - HBITMAP CreateDiscardableBitmap(HDC, int, int); - HRGN CreateEllipticRgn(int, int, int, int); - HRGN CreateEllipticRgnIndirect(LPCRECT); - HDC CreateEnhMetaFileA(HDC, LPCSTR, LPCRECT, LPCSTR); - HDC CreateEnhMetaFileW(HDC, LPCWSTR, LPCRECT, LPCWSTR); - HFONT CreateFontA(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCSTR); - HFONT CreateFontW(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCWSTR); - HFONT CreateFontIndirectA(const(LOGFONTA)*); - HFONT CreateFontIndirectW(const(LOGFONTW)*); - HPALETTE CreateHalftonePalette(HDC); - HBRUSH CreateHatchBrush(int, COLORREF); - HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); - HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); - HDC CreateMetaFileA(LPCSTR); - HDC CreateMetaFileW(LPCWSTR); - HPALETTE CreatePalette(const(LOGPALETTE)*); - HBRUSH CreatePatternBrush(HBITMAP); - HPEN CreatePen(int, int, COLORREF); - HPEN CreatePenIndirect(const(LOGPEN)*); - HRGN CreatePolygonRgn(const(POINT)*, int, int); - HRGN CreatePolyPolygonRgn(const(POINT)*, const(INT)*, int, int); - HRGN CreateRectRgn(int, int, int, int); - HRGN CreateRectRgnIndirect(LPCRECT); - HRGN CreateRoundRectRgn(int, int, int, int, int, int); - BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); - BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); - HBRUSH CreateSolidBrush(COLORREF); - BOOL DeleteColorSpace(HCOLORSPACE); - BOOL DeleteDC(HDC); - BOOL DeleteEnhMetaFile(HENHMETAFILE); - BOOL DeleteMetaFile(HMETAFILE); - BOOL DeleteObject(HGDIOBJ); - int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); - DWORD DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, LPSTR, const(DEVMODEA)*); - DWORD DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, LPWSTR, const(DEVMODEW)*); - BOOL DPtoLP(HDC, LPPOINT, int); - int DrawEscape(HDC, int, int, LPCSTR); - BOOL Ellipse(HDC, int, int, int, int); - int EndDoc(HDC); - int EndPage(HDC); - BOOL EndPath(HDC); - BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, PVOID, LPCRECT); - int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); - int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); - int EnumFontFamiliesExA(HDC, PLOGFONTA, FONTENUMPROCA, LPARAM, DWORD); - int EnumFontFamiliesExW(HDC, PLOGFONTW, FONTENUMPROCW, LPARAM, DWORD); - int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); - int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); - int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM); - int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM); - BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); - int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); - BOOL EqualRgn(HRGN, HRGN); - int Escape(HDC, int, int, LPCSTR, PVOID); - int ExcludeClipRect(HDC, int, int, int, int); - int ExcludeUpdateRgn(HDC, HWND); - HPEN ExtCreatePen(DWORD, DWORD, const(LOGBRUSH)*, DWORD, const(DWORD)*); - HRGN ExtCreateRegion(const(XFORM)*, DWORD, const(RGNDATA)*); - int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); - BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT); - int ExtSelectClipRgn(HDC, HRGN, int); - BOOL ExtTextOutA(HDC, int, int, UINT, LPCRECT, LPCSTR, UINT, const(INT)*); - BOOL ExtTextOutW(HDC, int, int, UINT, LPCRECT, LPCWSTR, UINT, const(INT)*); - BOOL FillPath(HDC); - int FillRect(HDC, LPCRECT, HBRUSH); - int FillRgn(HDC, HRGN, HBRUSH); - BOOL FixBrushOrgEx(HDC, int, int, LPPOINT); - BOOL FlattenPath(HDC); - BOOL FloodFill(HDC, int, int, COLORREF); - BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); - BOOL GdiComment(HDC, UINT, const(BYTE)*); - BOOL GdiFlush(); - DWORD GdiGetBatchLimit(); - DWORD GdiSetBatchLimit(DWORD); - int GetArcDirection(HDC); - BOOL GetAspectRatioFilterEx(HDC, LPSIZE); - LONG GetBitmapBits(HBITMAP, LONG, PVOID); - BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE); - COLORREF GetBkColor(HDC); - int GetBkMode(HDC); - UINT GetBoundsRect(HDC, LPRECT, UINT); - BOOL GetBrushOrgEx(HDC, LPPOINT); - BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC); - BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC); - BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); - BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); - DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD); - DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD); - BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT); - BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT); - BOOL GetCharWidthA(HDC, UINT, UINT, LPINT); - BOOL GetCharWidthW(HDC, UINT, UINT, LPINT); - BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); - BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); - int GetClipBox(HDC, LPRECT); - int GetClipRgn(HDC, HRGN); - BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT); - HANDLE GetColorSpace(HDC); - HGDIOBJ GetCurrentObject(HDC, UINT); - BOOL GetCurrentPositionEx(HDC, LPPOINT); - HCURSOR GetCursor(); - BOOL GetDCOrgEx(HDC, LPPOINT); + int AbortDoc(HDC); + BOOL AbortPath(HDC); + int AddFontResourceA(LPCSTR); + int AddFontResourceW(LPCWSTR); + BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); + BOOL AnimatePalette(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); + BOOL Arc(HDC, int, int, int, int, int, int, int, int); + BOOL ArcTo(HDC, int, int, int, int, int, int, int, int); + BOOL BeginPath(HDC); + BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); + BOOL CancelDC(HDC); + BOOL CheckColorsInGamut(HDC, PVOID, PVOID, DWORD); + BOOL Chord(HDC, int, int, int, int, int, int, int, int); + int ChoosePixelFormat(HDC, const(PIXELFORMATDESCRIPTOR)*); + HENHMETAFILE CloseEnhMetaFile(HDC); + BOOL CloseFigure(HDC); + HMETAFILE CloseMetaFile(HDC); + BOOL ColorMatchToTarget(HDC, HDC, DWORD); + BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD); + int CombineRgn(HRGN, HRGN, HRGN, int); + BOOL CombineTransform(LPXFORM, const(XFORM)*, const(XFORM)*); + HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); + HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); + HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR); + HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR); + HBITMAP CreateBitmap(int, int, UINT, UINT, PCVOID); + HBITMAP CreateBitmapIndirect(const(BITMAP)*); + HBRUSH CreateBrushIndirect(const(LOGBRUSH)*); + HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA); + HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW); + HBITMAP CreateCompatibleBitmap(HDC, int, int); + HDC CreateCompatibleDC(HDC); + HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); + HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); + HBITMAP CreateDIBitmap(HDC, const(BITMAPINFOHEADER)*, DWORD, PCVOID, const(BITMAPINFO)*, UINT); + HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT); + HBRUSH CreateDIBPatternBrushPt(PCVOID, UINT); + HBITMAP CreateDIBSection(HDC, const(BITMAPINFO)*, UINT, void**, HANDLE, DWORD); + HBITMAP CreateDiscardableBitmap(HDC, int, int); + HRGN CreateEllipticRgn(int, int, int, int); + HRGN CreateEllipticRgnIndirect(LPCRECT); + HDC CreateEnhMetaFileA(HDC, LPCSTR, LPCRECT, LPCSTR); + HDC CreateEnhMetaFileW(HDC, LPCWSTR, LPCRECT, LPCWSTR); + HFONT CreateFontA(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCSTR); + HFONT CreateFontW(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCWSTR); + HFONT CreateFontIndirectA(const(LOGFONTA)*); + HFONT CreateFontIndirectW(const(LOGFONTW)*); + HPALETTE CreateHalftonePalette(HDC); + HBRUSH CreateHatchBrush(int, COLORREF); + HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); + HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); + HDC CreateMetaFileA(LPCSTR); + HDC CreateMetaFileW(LPCWSTR); + HPALETTE CreatePalette(const(LOGPALETTE)*); + HBRUSH CreatePatternBrush(HBITMAP); + HPEN CreatePen(int, int, COLORREF); + HPEN CreatePenIndirect(const(LOGPEN)*); + HRGN CreatePolygonRgn(const(POINT)*, int, int); + HRGN CreatePolyPolygonRgn(const(POINT)*, const(INT)*, int, int); + HRGN CreateRectRgn(int, int, int, int); + HRGN CreateRectRgnIndirect(LPCRECT); + HRGN CreateRoundRectRgn(int, int, int, int, int, int); + BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); + BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); + HBRUSH CreateSolidBrush(COLORREF); + BOOL DeleteColorSpace(HCOLORSPACE); + BOOL DeleteDC(HDC); + BOOL DeleteEnhMetaFile(HENHMETAFILE); + BOOL DeleteMetaFile(HMETAFILE); + BOOL DeleteObject(HGDIOBJ); + int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); + DWORD DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, LPSTR, const(DEVMODEA)*); + DWORD DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, LPWSTR, const(DEVMODEW)*); + BOOL DPtoLP(HDC, LPPOINT, int); + int DrawEscape(HDC, int, int, LPCSTR); + BOOL Ellipse(HDC, int, int, int, int); + int EndDoc(HDC); + int EndPage(HDC); + BOOL EndPath(HDC); + BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, PVOID, LPCRECT); + int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); + int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); + int EnumFontFamiliesExA(HDC, PLOGFONTA, FONTENUMPROCA, LPARAM, DWORD); + int EnumFontFamiliesExW(HDC, PLOGFONTW, FONTENUMPROCW, LPARAM, DWORD); + int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); + int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); + int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM); + int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM); + BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); + int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); + BOOL EqualRgn(HRGN, HRGN); + int Escape(HDC, int, int, LPCSTR, PVOID); + int ExcludeClipRect(HDC, int, int, int, int); + int ExcludeUpdateRgn(HDC, HWND); + HPEN ExtCreatePen(DWORD, DWORD, const(LOGBRUSH)*, DWORD, const(DWORD)*); + HRGN ExtCreateRegion(const(XFORM)*, DWORD, const(RGNDATA)*); + int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); + BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT); + int ExtSelectClipRgn(HDC, HRGN, int); + BOOL ExtTextOutA(HDC, int, int, UINT, LPCRECT, LPCSTR, UINT, const(INT)*); + BOOL ExtTextOutW(HDC, int, int, UINT, LPCRECT, LPCWSTR, UINT, const(INT)*); + BOOL FillPath(HDC); + int FillRect(HDC, LPCRECT, HBRUSH); + int FillRgn(HDC, HRGN, HBRUSH); + BOOL FixBrushOrgEx(HDC, int, int, LPPOINT); + BOOL FlattenPath(HDC); + BOOL FloodFill(HDC, int, int, COLORREF); + BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); + BOOL GdiComment(HDC, UINT, const(BYTE)*); + BOOL GdiFlush(); + DWORD GdiGetBatchLimit(); + DWORD GdiSetBatchLimit(DWORD); + int GetArcDirection(HDC); + BOOL GetAspectRatioFilterEx(HDC, LPSIZE); + LONG GetBitmapBits(HBITMAP, LONG, PVOID); + BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE); + COLORREF GetBkColor(HDC); + int GetBkMode(HDC); + UINT GetBoundsRect(HDC, LPRECT, UINT); + BOOL GetBrushOrgEx(HDC, LPPOINT); + BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC); + BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC); + BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); + BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); + DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD); + DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD); + BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT); + BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthA(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthW(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); + BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); + int GetClipBox(HDC, LPRECT); + int GetClipRgn(HDC, HRGN); + BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT); + HANDLE GetColorSpace(HDC); + HGDIOBJ GetCurrentObject(HDC, UINT); + BOOL GetCurrentPositionEx(HDC, LPPOINT); + HCURSOR GetCursor(); + BOOL GetDCOrgEx(HDC, LPPOINT); static if (_WIN32_WINNT >= 0x500) { DWORD GetDCPenColor(HGDIOBJ); COLORREF GetDCBrushColor(HGDIOBJ); } - int GetDeviceCaps(HDC, int); - BOOL GetDeviceGammaRamp(HDC, PVOID); - UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD*); - int GetDIBits(HDC, HBITMAP, UINT, UINT, PVOID, LPBITMAPINFO, UINT); - HENHMETAFILE GetEnhMetaFileA(LPCSTR); - HENHMETAFILE GetEnhMetaFileW(LPCWSTR); - UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); - UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR); - UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR); - UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER); - UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY); - UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, DWORD, const(PIXELFORMATDESCRIPTOR)*); - DWORD GetFontData(HDC, DWORD, DWORD, PVOID, DWORD); - DWORD GetFontLanguageInfo(HDC); - DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); - DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); - int GetGraphicsMode(HDC); - BOOL GetICMProfileA(HDC, DWORD, LPSTR); - BOOL GetICMProfileW(HDC, DWORD, LPWSTR); - DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); - DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); - BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD); - BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD); - int GetMapMode(HDC); - HMETAFILE GetMetaFileA(LPCSTR); - HMETAFILE GetMetaFileW(LPCWSTR); - UINT GetMetaFileBitsEx(HMETAFILE, UINT, PVOID); - int GetMetaRgn(HDC, HRGN); - BOOL GetMiterLimit(HDC, PFLOAT); - COLORREF GetNearestColor(HDC, COLORREF); - UINT GetNearestPaletteIndex(HPALETTE, COLORREF); - int GetObjectA(HGDIOBJ, int, PVOID); - int GetObjectW(HGDIOBJ, int, PVOID); - DWORD GetObjectType(HGDIOBJ); - UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); - UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); - UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); - int GetPath(HDC, LPPOINT, PBYTE, int); - COLORREF GetPixel(HDC, int, int); - int GetPixelFormat(HDC); - int GetPolyFillMode(HDC); - BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); - int GetRandomRgn (HDC, HRGN, INT); - DWORD GetRegionData(HRGN, DWORD, LPRGNDATA); - int GetRgnBox(HRGN, LPRECT); - int GetROP2(HDC); - HGDIOBJ GetStockObject(int); - int GetStretchBltMode(HDC); - UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); - UINT GetSystemPaletteUse(HDC); - UINT GetTextAlign(HDC); - int GetTextCharacterExtra(HDC); - int GetTextCharset(HDC); - int GetTextCharsetInfo(HDC, LPFONTSIGNATURE, DWORD); - COLORREF GetTextColor(HDC); - BOOL GetTextExtentExPointA(HDC, LPCSTR, int, int, LPINT, LPINT, LPSIZE); - BOOL GetTextExtentExPointW(HDC, LPCWSTR, int, int, LPINT, LPINT, LPSIZE); - BOOL GetTextExtentPointA(HDC, LPCSTR, int, LPSIZE); - BOOL GetTextExtentPointW(HDC, LPCWSTR, int, LPSIZE); - BOOL GetTextExtentPoint32A(HDC, LPCSTR, int, LPSIZE); - BOOL GetTextExtentPoint32W(HDC, LPCWSTR, int, LPSIZE); - int GetTextFaceA(HDC, int, LPSTR); - int GetTextFaceW(HDC, int, LPWSTR); - BOOL GetTextMetricsA(HDC, LPTEXTMETRICA); - BOOL GetTextMetricsW(HDC, LPTEXTMETRICW); - BOOL GetViewportExtEx(HDC, LPSIZE); - BOOL GetViewportOrgEx(HDC, LPPOINT); - BOOL GetWindowExtEx(HDC, LPSIZE); - BOOL GetWindowOrgEx(HDC, LPPOINT); - UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); - BOOL GetWorldTransform(HDC, LPXFORM); - int IntersectClipRect(HDC, int, int, int, int); - BOOL InvertRgn(HDC, HRGN); - BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); - BOOL LineTo(HDC, int, int); - BOOL LPtoDP(HDC, LPPOINT, int); - BOOL MaskBlt(HDC, int, int, int, int, HDC, int, int, HBITMAP, int, int, DWORD); - BOOL ModifyWorldTransform(HDC, const(XFORM)*, DWORD); - BOOL MoveToEx(HDC, int, int, LPPOINT); - int OffsetClipRgn(HDC, int, int); - int OffsetRgn(HRGN, int, int); - BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT); - BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT); - BOOL PaintRgn(HDC, HRGN); - BOOL PatBlt(HDC, int, int, int, int, DWORD); - HRGN PathToRegion(HDC); - BOOL Pie(HDC, int, int, int, int, int, int, int, int); - BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, LPCRECT); - BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, const(ENHMETARECORD)*, UINT); - BOOL PlayMetaFile(HDC, HMETAFILE); - BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); - BOOL PlgBlt(HDC, const(POINT)*, HDC, int, int, int, int, HBITMAP, int, int); - BOOL PolyBezier(HDC, const(POINT)*, DWORD); - BOOL PolyBezierTo(HDC, const(POINT)*, DWORD); - BOOL PolyDraw(HDC, const(POINT)*, const(BYTE)*, int); - BOOL Polygon(HDC, const(POINT)*, int); - BOOL Polyline(HDC, const(POINT)*, int); - BOOL PolylineTo(HDC, const(POINT)*, DWORD); - BOOL PolyPolygon(HDC, const(POINT)*, const(INT)*, int); - BOOL PolyPolyline(HDC, const(POINT)*, const(DWORD)*, DWORD); - BOOL PolyTextOutA(HDC, const(POLYTEXTA)*, int); - BOOL PolyTextOutW(HDC, const(POLYTEXTW)*, int); - BOOL PtInRegion(HRGN, int, int); - BOOL PtVisible(HDC, int, int); - UINT RealizePalette(HDC); - BOOL Rectangle(HDC, int, int, int, int); - BOOL RectInRegion(HRGN, LPCRECT); - BOOL RectVisible(HDC, LPCRECT); - BOOL RemoveFontResourceA(LPCSTR); - BOOL RemoveFontResourceW(LPCWSTR); - - HDC ResetDCA(HDC, const(DEVMODEA)*); - HDC ResetDCW(HDC, const(DEVMODEW)*); - BOOL ResizePalette(HPALETTE, UINT); - BOOL RestoreDC(HDC, int); - BOOL RoundRect(HDC, int, int, int, int, int, int); - int SaveDC(HDC); - BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); - BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); - BOOL SelectClipPath(HDC, int); - int SelectClipRgn(HDC, HRGN); - HGDIOBJ SelectObject(HDC, HGDIOBJ); - HPALETTE SelectPalette(HDC, HPALETTE, BOOL); - int SetAbortProc(HDC, ABORTPROC); - int SetArcDirection(HDC, int); - LONG SetBitmapBits(HBITMAP, DWORD, PCVOID); - BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); - COLORREF SetBkColor(HDC, COLORREF); - int SetBkMode(HDC, int); - UINT SetBoundsRect(HDC, LPCRECT, UINT); - BOOL SetBrushOrgEx(HDC, int, int, LPPOINT); - BOOL SetColorAdjustment(HDC, const(COLORADJUSTMENT)*); - BOOL SetColorSpace(HDC, HCOLORSPACE); - - BOOL SetDeviceGammaRamp(HDC, PVOID); - UINT SetDIBColorTable(HDC, UINT, UINT, const(RGBQUAD)*); - int SetDIBits(HDC, HBITMAP, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); - int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); - HENHMETAFILE SetEnhMetaFileBits(UINT, const(BYTE)*); - int SetGraphicsMode(HDC, int); - int SetICMMode(HDC, int); - BOOL SetICMProfileA(HDC, LPSTR); - BOOL SetICMProfileW(HDC, LPWSTR); - int SetMapMode(HDC, int); - - static if (_WIN32_WINNT >= 0x500) { - DWORD SetLayout(HDC hdc, DWORD l); - DWORD GetLayout(HDC hdc); - } - - DWORD SetMapperFlags(HDC, DWORD); - HMETAFILE SetMetaFileBitsEx(UINT, const(BYTE)*); - int SetMetaRgn(HDC); - BOOL SetMiterLimit(HDC, FLOAT, PFLOAT); - UINT SetPaletteEntries(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); - COLORREF SetPixel(HDC, int, int, COLORREF); - BOOL SetPixelFormat(HDC, int, const(PIXELFORMATDESCRIPTOR)*); - BOOL SetPixelV(HDC, int, int, COLORREF); - int SetPolyFillMode(HDC, int); - BOOL SetRectRgn(HRGN, int, int, int, int); - int SetROP2(HDC, int); - int SetStretchBltMode(HDC, int); - UINT SetSystemPaletteUse(HDC, UINT); - UINT SetTextAlign(HDC, UINT); - int SetTextCharacterExtra(HDC, int); - COLORREF SetTextColor(HDC, COLORREF); - BOOL SetTextJustification(HDC, int, int); - BOOL SetViewportExtEx(HDC, int, int, LPSIZE); - BOOL SetViewportOrgEx(HDC, int, int, LPPOINT); - BOOL SetWindowExtEx(HDC, int, int, LPSIZE); - BOOL SetWindowOrgEx(HDC, int, int, LPPOINT); - HENHMETAFILE SetWinMetaFileBits(UINT, const(BYTE)*, HDC, const(METAFILEPICT)*); - BOOL SetWorldTransform(HDC, const(XFORM)*); - int StartDocA(HDC, const(DOCINFOA)*); - int StartDocW(HDC, const(DOCINFOW)*); - int StartPage(HDC); - BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); - int StretchDIBits(HDC, int, int, int, int, int, int, int, int, const(VOID)* , const(BITMAPINFO)* , UINT, DWORD); - BOOL StrokeAndFillPath(HDC); - BOOL StrokePath(HDC); - BOOL SwapBuffers(HDC); - BOOL TextOutA(HDC, int, int, LPCSTR, int); - BOOL TextOutW(HDC, int, int, LPCWSTR, int); - BOOL TranslateCharsetInfo(PDWORD, LPCHARSETINFO, DWORD); - BOOL UnrealizeObject(HGDIOBJ); - BOOL UpdateColors(HDC); - BOOL UpdateICMRegKeyA(DWORD, DWORD, LPSTR, UINT); - BOOL UpdateICMRegKeyW(DWORD, DWORD, LPWSTR, UINT); - BOOL WidenPath(HDC); - BOOL wglCopyContext(HGLRC, HGLRC, UINT); - HGLRC wglCreateContext(HDC); - HGLRC wglCreateLayerContext(HDC, int); - BOOL wglDeleteContext(HGLRC); - BOOL wglDescribeLayerPlane(HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR); - HGLRC wglGetCurrentContext(); - HDC wglGetCurrentDC(); - int wglGetLayerPaletteEntries(HDC, int, int, int, COLORREF*); - PROC wglGetProcAddress(LPCSTR); - BOOL wglMakeCurrent(HDC, HGLRC); - BOOL wglRealizeLayerPalette(HDC, int, BOOL); - int wglSetLayerPaletteEntries(HDC, int, int, int, const(COLORREF)*); - BOOL wglShareLists(HGLRC, HGLRC); - BOOL wglSwapLayerBuffers(HDC, UINT); - BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD); - BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD); - BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); - BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); - - static if (_WIN32_WINNT >= 0x500) { - alias WGLSWAP* PWGLSWAP; - struct WGLSWAP { - HDC hdc; - UINT uiFlags; - } - const WGL_SWAPMULTIPLE_MAX = 16; - DWORD wglSwapMultipleBuffers(UINT, WGLSWAP*); + int GetDeviceCaps(HDC, int); + BOOL GetDeviceGammaRamp(HDC, PVOID); + UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD*); + int GetDIBits(HDC, HBITMAP, UINT, UINT, PVOID, LPBITMAPINFO, UINT); + HENHMETAFILE GetEnhMetaFileA(LPCSTR); + HENHMETAFILE GetEnhMetaFileW(LPCWSTR); + UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); + UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR); + UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR); + UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER); + UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY); + UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, DWORD, const(PIXELFORMATDESCRIPTOR)*); + DWORD GetFontData(HDC, DWORD, DWORD, PVOID, DWORD); + DWORD GetFontLanguageInfo(HDC); + DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); + DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); + int GetGraphicsMode(HDC); + BOOL GetICMProfileA(HDC, DWORD, LPSTR); + BOOL GetICMProfileW(HDC, DWORD, LPWSTR); + DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); + DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); + BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD); + BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD); + int GetMapMode(HDC); + HMETAFILE GetMetaFileA(LPCSTR); + HMETAFILE GetMetaFileW(LPCWSTR); + UINT GetMetaFileBitsEx(HMETAFILE, UINT, PVOID); + int GetMetaRgn(HDC, HRGN); + BOOL GetMiterLimit(HDC, PFLOAT); + COLORREF GetNearestColor(HDC, COLORREF); + UINT GetNearestPaletteIndex(HPALETTE, COLORREF); + int GetObjectA(HGDIOBJ, int, PVOID); + int GetObjectW(HGDIOBJ, int, PVOID); + DWORD GetObjectType(HGDIOBJ); + UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); + UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); + UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); + int GetPath(HDC, LPPOINT, PBYTE, int); + COLORREF GetPixel(HDC, int, int); + int GetPixelFormat(HDC); + int GetPolyFillMode(HDC); + BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); + int GetRandomRgn (HDC, HRGN, INT); + DWORD GetRegionData(HRGN, DWORD, LPRGNDATA); + int GetRgnBox(HRGN, LPRECT); + int GetROP2(HDC); + HGDIOBJ GetStockObject(int); + int GetStretchBltMode(HDC); + UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); + UINT GetSystemPaletteUse(HDC); + UINT GetTextAlign(HDC); + int GetTextCharacterExtra(HDC); + int GetTextCharset(HDC); + int GetTextCharsetInfo(HDC, LPFONTSIGNATURE, DWORD); + COLORREF GetTextColor(HDC); + BOOL GetTextExtentExPointA(HDC, LPCSTR, int, int, LPINT, LPINT, LPSIZE); + BOOL GetTextExtentExPointW(HDC, LPCWSTR, int, int, LPINT, LPINT, LPSIZE); + BOOL GetTextExtentPointA(HDC, LPCSTR, int, LPSIZE); + BOOL GetTextExtentPointW(HDC, LPCWSTR, int, LPSIZE); + BOOL GetTextExtentPoint32A(HDC, LPCSTR, int, LPSIZE); + BOOL GetTextExtentPoint32W(HDC, LPCWSTR, int, LPSIZE); + int GetTextFaceA(HDC, int, LPSTR); + int GetTextFaceW(HDC, int, LPWSTR); + BOOL GetTextMetricsA(HDC, LPTEXTMETRICA); + BOOL GetTextMetricsW(HDC, LPTEXTMETRICW); + BOOL GetViewportExtEx(HDC, LPSIZE); + BOOL GetViewportOrgEx(HDC, LPPOINT); + BOOL GetWindowExtEx(HDC, LPSIZE); + BOOL GetWindowOrgEx(HDC, LPPOINT); + UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); + BOOL GetWorldTransform(HDC, LPXFORM); + int IntersectClipRect(HDC, int, int, int, int); + BOOL InvertRgn(HDC, HRGN); + BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); + BOOL LineTo(HDC, int, int); + BOOL LPtoDP(HDC, LPPOINT, int); + BOOL MaskBlt(HDC, int, int, int, int, HDC, int, int, HBITMAP, int, int, DWORD); + BOOL ModifyWorldTransform(HDC, const(XFORM)*, DWORD); + BOOL MoveToEx(HDC, int, int, LPPOINT); + int OffsetClipRgn(HDC, int, int); + int OffsetRgn(HRGN, int, int); + BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT); + BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT); + BOOL PaintRgn(HDC, HRGN); + BOOL PatBlt(HDC, int, int, int, int, DWORD); + HRGN PathToRegion(HDC); + BOOL Pie(HDC, int, int, int, int, int, int, int, int); + BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, LPCRECT); + BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, const(ENHMETARECORD)*, UINT); + BOOL PlayMetaFile(HDC, HMETAFILE); + BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); + BOOL PlgBlt(HDC, const(POINT)*, HDC, int, int, int, int, HBITMAP, int, int); + BOOL PolyBezier(HDC, const(POINT)*, DWORD); + BOOL PolyBezierTo(HDC, const(POINT)*, DWORD); + BOOL PolyDraw(HDC, const(POINT)*, const(BYTE)*, int); + BOOL Polygon(HDC, const(POINT)*, int); + BOOL Polyline(HDC, const(POINT)*, int); + BOOL PolylineTo(HDC, const(POINT)*, DWORD); + BOOL PolyPolygon(HDC, const(POINT)*, const(INT)*, int); + BOOL PolyPolyline(HDC, const(POINT)*, const(DWORD)*, DWORD); + BOOL PolyTextOutA(HDC, const(POLYTEXTA)*, int); + BOOL PolyTextOutW(HDC, const(POLYTEXTW)*, int); + BOOL PtInRegion(HRGN, int, int); + BOOL PtVisible(HDC, int, int); + UINT RealizePalette(HDC); + BOOL Rectangle(HDC, int, int, int, int); + BOOL RectInRegion(HRGN, LPCRECT); + BOOL RectVisible(HDC, LPCRECT); + BOOL RemoveFontResourceA(LPCSTR); + BOOL RemoveFontResourceW(LPCWSTR); + + HDC ResetDCA(HDC, const(DEVMODEA)*); + HDC ResetDCW(HDC, const(DEVMODEW)*); + BOOL ResizePalette(HPALETTE, UINT); + BOOL RestoreDC(HDC, int); + BOOL RoundRect(HDC, int, int, int, int, int, int); + int SaveDC(HDC); + BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); + BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); + BOOL SelectClipPath(HDC, int); + int SelectClipRgn(HDC, HRGN); + HGDIOBJ SelectObject(HDC, HGDIOBJ); + HPALETTE SelectPalette(HDC, HPALETTE, BOOL); + int SetAbortProc(HDC, ABORTPROC); + int SetArcDirection(HDC, int); + LONG SetBitmapBits(HBITMAP, DWORD, PCVOID); + BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); + COLORREF SetBkColor(HDC, COLORREF); + int SetBkMode(HDC, int); + UINT SetBoundsRect(HDC, LPCRECT, UINT); + BOOL SetBrushOrgEx(HDC, int, int, LPPOINT); + BOOL SetColorAdjustment(HDC, const(COLORADJUSTMENT)*); + BOOL SetColorSpace(HDC, HCOLORSPACE); + + BOOL SetDeviceGammaRamp(HDC, PVOID); + UINT SetDIBColorTable(HDC, UINT, UINT, const(RGBQUAD)*); + int SetDIBits(HDC, HBITMAP, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); + int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); + HENHMETAFILE SetEnhMetaFileBits(UINT, const(BYTE)*); + int SetGraphicsMode(HDC, int); + int SetICMMode(HDC, int); + BOOL SetICMProfileA(HDC, LPSTR); + BOOL SetICMProfileW(HDC, LPWSTR); + int SetMapMode(HDC, int); + + static if (_WIN32_WINNT >= 0x500) { + DWORD SetLayout(HDC hdc, DWORD l); + DWORD GetLayout(HDC hdc); + } + + DWORD SetMapperFlags(HDC, DWORD); + HMETAFILE SetMetaFileBitsEx(UINT, const(BYTE)*); + int SetMetaRgn(HDC); + BOOL SetMiterLimit(HDC, FLOAT, PFLOAT); + UINT SetPaletteEntries(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); + COLORREF SetPixel(HDC, int, int, COLORREF); + BOOL SetPixelFormat(HDC, int, const(PIXELFORMATDESCRIPTOR)*); + BOOL SetPixelV(HDC, int, int, COLORREF); + int SetPolyFillMode(HDC, int); + BOOL SetRectRgn(HRGN, int, int, int, int); + int SetROP2(HDC, int); + int SetStretchBltMode(HDC, int); + UINT SetSystemPaletteUse(HDC, UINT); + UINT SetTextAlign(HDC, UINT); + int SetTextCharacterExtra(HDC, int); + COLORREF SetTextColor(HDC, COLORREF); + BOOL SetTextJustification(HDC, int, int); + BOOL SetViewportExtEx(HDC, int, int, LPSIZE); + BOOL SetViewportOrgEx(HDC, int, int, LPPOINT); + BOOL SetWindowExtEx(HDC, int, int, LPSIZE); + BOOL SetWindowOrgEx(HDC, int, int, LPPOINT); + HENHMETAFILE SetWinMetaFileBits(UINT, const(BYTE)*, HDC, const(METAFILEPICT)*); + BOOL SetWorldTransform(HDC, const(XFORM)*); + int StartDocA(HDC, const(DOCINFOA)*); + int StartDocW(HDC, const(DOCINFOW)*); + int StartPage(HDC); + BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); + int StretchDIBits(HDC, int, int, int, int, int, int, int, int, const(VOID)* , const(BITMAPINFO)* , UINT, DWORD); + BOOL StrokeAndFillPath(HDC); + BOOL StrokePath(HDC); + BOOL SwapBuffers(HDC); + BOOL TextOutA(HDC, int, int, LPCSTR, int); + BOOL TextOutW(HDC, int, int, LPCWSTR, int); + BOOL TranslateCharsetInfo(PDWORD, LPCHARSETINFO, DWORD); + BOOL UnrealizeObject(HGDIOBJ); + BOOL UpdateColors(HDC); + BOOL UpdateICMRegKeyA(DWORD, DWORD, LPSTR, UINT); + BOOL UpdateICMRegKeyW(DWORD, DWORD, LPWSTR, UINT); + BOOL WidenPath(HDC); + BOOL wglCopyContext(HGLRC, HGLRC, UINT); + HGLRC wglCreateContext(HDC); + HGLRC wglCreateLayerContext(HDC, int); + BOOL wglDeleteContext(HGLRC); + BOOL wglDescribeLayerPlane(HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR); + HGLRC wglGetCurrentContext(); + HDC wglGetCurrentDC(); + int wglGetLayerPaletteEntries(HDC, int, int, int, COLORREF*); + PROC wglGetProcAddress(LPCSTR); + BOOL wglMakeCurrent(HDC, HGLRC); + BOOL wglRealizeLayerPalette(HDC, int, BOOL); + int wglSetLayerPaletteEntries(HDC, int, int, int, const(COLORREF)*); + BOOL wglShareLists(HGLRC, HGLRC); + BOOL wglSwapLayerBuffers(HDC, UINT); + BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD); + BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD); + BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); + BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); + + static if (_WIN32_WINNT >= 0x500) { + alias WGLSWAP* PWGLSWAP; + struct WGLSWAP { + HDC hdc; + UINT uiFlags; + } + const WGL_SWAPMULTIPLE_MAX = 16; + DWORD wglSwapMultipleBuffers(UINT, WGLSWAP*); } static if (_WIN32_WINNT >= 0x500) { - BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); - BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG); - BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT); - } - - static if (_WIN32_WINNT >= 0x500) { - COLORREF SetDCBrushColor(HDC, COLORREF); - COLORREF SetDCPenColor(HDC, COLORREF); - HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD*); - int AddFontResourceExA(LPCSTR, DWORD, PVOID); - int AddFontResourceExW(LPCWSTR, DWORD, PVOID); - BOOL RemoveFontMemResourceEx(HANDLE); - BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID); - BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); - DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET); - DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD); - DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD); - BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE); - BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE); - BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT); - BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC); - } + BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); + BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG); + BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT); + } + + static if (_WIN32_WINNT >= 0x500) { + COLORREF SetDCBrushColor(HDC, COLORREF); + COLORREF SetDCPenColor(HDC, COLORREF); + HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD*); + int AddFontResourceExA(LPCSTR, DWORD, PVOID); + int AddFontResourceExW(LPCWSTR, DWORD, PVOID); + BOOL RemoveFontMemResourceEx(HANDLE); + BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID); + BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); + DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET); + DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD); + DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD); + BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE); + BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE); + BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT); + BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC); + } } // extern (Windows) version(Unicode) { - alias WCHAR BCHAR; - alias DOCINFOW DOCINFO; - alias LOGFONTW LOGFONT; - - alias TEXTMETRICW TEXTMETRIC; - alias NPTEXTMETRICW NPTEXTMETRIC; - alias ICMENUMPROCW ICMENUMPROC; - alias FONTENUMPROCW FONTENUMPROC; - alias DEVMODEW DEVMODE; - - alias EXTLOGFONTW EXTLOGFONT; - alias GCP_RESULTSW GCP_RESULTS; - alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC; - alias POLYTEXTW POLYTEXT; - alias LOGCOLORSPACEW LOGCOLORSPACE; - alias NEWTEXTMETRICW NEWTEXTMETRIC; - alias NEWTEXTMETRICEXW NEWTEXTMETRICEX; - alias ENUMLOGFONTW ENUMLOGFONT; - alias ENUMLOGFONTEXW ENUMLOGFONTEX; - alias DISPLAY_DEVICEW DISPLAY_DEVICE; - alias AddFontResourceW AddFontResource; - - alias CopyEnhMetaFileW CopyEnhMetaFile; - alias CopyMetaFileW CopyMetaFile; - alias CreateColorSpaceW CreateColorSpace; - alias CreateDCW CreateDC; - alias CreateEnhMetaFileW CreateEnhMetaFile; - alias CreateFontW CreateFont; - alias CreateFontIndirectW CreateFontIndirect; - alias CreateICW CreateIC; - alias CreateMetaFileW CreateMetaFile; - alias CreateScalableFontResourceW CreateScalableFontResource; - alias DeviceCapabilitiesW DeviceCapabilities; - alias EnumFontFamiliesW EnumFontFamilies; - alias EnumFontFamiliesExW EnumFontFamiliesEx; - alias EnumFontsW EnumFonts; - alias EnumICMProfilesW EnumICMProfiles; - alias ExtTextOutW ExtTextOut; - alias GetCharABCWidthsFloatW GetCharABCWidthsFloat; - alias GetCharABCWidthsW GetCharABCWidths; - alias GetCharacterPlacementW GetCharacterPlacement; - alias GetCharWidth32W GetCharWidth32; - alias GetCharWidthFloatW GetCharWidthFloat; - alias GetCharWidthW GetCharWidth; - alias GetEnhMetaFileW GetEnhMetaFile; - alias GetEnhMetaFileDescriptionW GetEnhMetaFileDescription; - alias GetGlyphOutlineW GetGlyphOutline; - alias GetICMProfileW GetICMProfile; - alias GetKerningPairsW GetKerningPairs; - alias GetLogColorSpaceW GetLogColorSpace; - alias GetMetaFileW GetMetaFile; - alias GetObjectW GetObject; - alias GetOutlineTextMetricsW GetOutlineTextMetrics; - alias GetTextExtentPointW GetTextExtentPoint; - alias GetTextExtentExPointW GetTextExtentExPoint; - alias GetTextExtentPoint32W GetTextExtentPoint32; - alias GetTextFaceW GetTextFace; - alias GetTextMetricsW GetTextMetrics; - alias PolyTextOutW PolyTextOut; - alias RemoveFontResourceW RemoveFontResource; - - alias ResetDCW ResetDC; - alias SetICMProfileW SetICMProfile; - alias StartDocW StartDoc; - alias TextOutW TextOut; - alias UpdateICMRegKeyW UpdateICMRegKey; - alias wglUseFontBitmapsW wglUseFontBitmaps; - alias wglUseFontOutlinesW wglUseFontOutlines; - static if (_WIN32_WINNT >= 0x500) { - alias ENUMLOGFONTEXDVW ENUMLOGFONTEXDV; - alias PENUMLOGFONTEXDVW PENUMLOGFONTEXDV; - alias LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV; - alias AddFontResourceExW AddFontResourceEx; - alias RemoveFontResourceExW RemoveFontResourceEx; - alias GetGlyphIndicesW GetGlyphIndices; - } + alias WCHAR BCHAR; + alias DOCINFOW DOCINFO; + alias LOGFONTW LOGFONT; + + alias TEXTMETRICW TEXTMETRIC; + alias NPTEXTMETRICW NPTEXTMETRIC; + alias ICMENUMPROCW ICMENUMPROC; + alias FONTENUMPROCW FONTENUMPROC; + alias DEVMODEW DEVMODE; + + alias EXTLOGFONTW EXTLOGFONT; + alias GCP_RESULTSW GCP_RESULTS; + alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC; + alias POLYTEXTW POLYTEXT; + alias LOGCOLORSPACEW LOGCOLORSPACE; + alias NEWTEXTMETRICW NEWTEXTMETRIC; + alias NEWTEXTMETRICEXW NEWTEXTMETRICEX; + alias ENUMLOGFONTW ENUMLOGFONT; + alias ENUMLOGFONTEXW ENUMLOGFONTEX; + alias DISPLAY_DEVICEW DISPLAY_DEVICE; + alias AddFontResourceW AddFontResource; + + alias CopyEnhMetaFileW CopyEnhMetaFile; + alias CopyMetaFileW CopyMetaFile; + alias CreateColorSpaceW CreateColorSpace; + alias CreateDCW CreateDC; + alias CreateEnhMetaFileW CreateEnhMetaFile; + alias CreateFontW CreateFont; + alias CreateFontIndirectW CreateFontIndirect; + alias CreateICW CreateIC; + alias CreateMetaFileW CreateMetaFile; + alias CreateScalableFontResourceW CreateScalableFontResource; + alias DeviceCapabilitiesW DeviceCapabilities; + alias EnumFontFamiliesW EnumFontFamilies; + alias EnumFontFamiliesExW EnumFontFamiliesEx; + alias EnumFontsW EnumFonts; + alias EnumICMProfilesW EnumICMProfiles; + alias ExtTextOutW ExtTextOut; + alias GetCharABCWidthsFloatW GetCharABCWidthsFloat; + alias GetCharABCWidthsW GetCharABCWidths; + alias GetCharacterPlacementW GetCharacterPlacement; + alias GetCharWidth32W GetCharWidth32; + alias GetCharWidthFloatW GetCharWidthFloat; + alias GetCharWidthW GetCharWidth; + alias GetEnhMetaFileW GetEnhMetaFile; + alias GetEnhMetaFileDescriptionW GetEnhMetaFileDescription; + alias GetGlyphOutlineW GetGlyphOutline; + alias GetICMProfileW GetICMProfile; + alias GetKerningPairsW GetKerningPairs; + alias GetLogColorSpaceW GetLogColorSpace; + alias GetMetaFileW GetMetaFile; + alias GetObjectW GetObject; + alias GetOutlineTextMetricsW GetOutlineTextMetrics; + alias GetTextExtentPointW GetTextExtentPoint; + alias GetTextExtentExPointW GetTextExtentExPoint; + alias GetTextExtentPoint32W GetTextExtentPoint32; + alias GetTextFaceW GetTextFace; + alias GetTextMetricsW GetTextMetrics; + alias PolyTextOutW PolyTextOut; + alias RemoveFontResourceW RemoveFontResource; + + alias ResetDCW ResetDC; + alias SetICMProfileW SetICMProfile; + alias StartDocW StartDoc; + alias TextOutW TextOut; + alias UpdateICMRegKeyW UpdateICMRegKey; + alias wglUseFontBitmapsW wglUseFontBitmaps; + alias wglUseFontOutlinesW wglUseFontOutlines; + static if (_WIN32_WINNT >= 0x500) { + alias ENUMLOGFONTEXDVW ENUMLOGFONTEXDV; + alias PENUMLOGFONTEXDVW PENUMLOGFONTEXDV; + alias LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV; + alias AddFontResourceExW AddFontResourceEx; + alias RemoveFontResourceExW RemoveFontResourceEx; + alias GetGlyphIndicesW GetGlyphIndices; + } } else { /* non-unicode build */ - alias BYTE BCHAR; - alias DOCINFOA DOCINFO; - alias LOGFONTA LOGFONT; - alias TEXTMETRICA TEXTMETRIC; - alias NPTEXTMETRICA NPTEXTMETRIC; - alias ICMENUMPROCA ICMENUMPROC; - alias FONTENUMPROCA FONTENUMPROC; - alias DEVMODEA DEVMODE; - alias EXTLOGFONTA EXTLOGFONT; - alias GCP_RESULTSA GCP_RESULTS; - alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC; - alias POLYTEXTA POLYTEXT; - alias LOGCOLORSPACEA LOGCOLORSPACE; - alias NEWTEXTMETRICA NEWTEXTMETRIC; - alias NEWTEXTMETRICEXA NEWTEXTMETRICEX; - alias ENUMLOGFONTA ENUMLOGFONT; - alias ENUMLOGFONTEXA ENUMLOGFONTEX; - alias DISPLAY_DEVICEA DISPLAY_DEVICE; - - alias AddFontResourceA AddFontResource; - alias CopyEnhMetaFileA CopyEnhMetaFile; - alias CopyMetaFileA CopyMetaFile; - alias CreateColorSpaceA CreateColorSpace; - alias CreateDCA CreateDC; - alias CreateEnhMetaFileA CreateEnhMetaFile; - alias CreateFontA CreateFont; - alias CreateFontIndirectA CreateFontIndirect; - alias CreateICA CreateIC; - alias CreateMetaFileA CreateMetaFile; - alias CreateScalableFontResourceA CreateScalableFontResource; - alias DeviceCapabilitiesA DeviceCapabilities; - alias EnumFontFamiliesA EnumFontFamilies; - alias EnumFontFamiliesExA EnumFontFamiliesEx; - alias EnumFontsA EnumFonts; - alias EnumICMProfilesA EnumICMProfiles; - alias ExtTextOutA ExtTextOut; - alias GetCharWidthFloatA GetCharWidthFloat; - alias GetCharWidthA GetCharWidth; - alias GetCharacterPlacementA GetCharacterPlacement; - alias GetCharABCWidthsA GetCharABCWidths; - alias GetCharABCWidthsFloatA GetCharABCWidthsFloat; - alias GetCharWidth32A GetCharWidth32; - alias GetEnhMetaFileA GetEnhMetaFile; - alias GetEnhMetaFileDescriptionA GetEnhMetaFileDescription; - alias GetGlyphOutlineA GetGlyphOutline; - alias GetICMProfileA GetICMProfile; - alias GetKerningPairsA GetKerningPairs; - alias GetLogColorSpaceA GetLogColorSpace; - alias GetMetaFileA GetMetaFile; - alias GetObjectA GetObject; - alias GetOutlineTextMetricsA GetOutlineTextMetrics; - alias GetTextExtentPointA GetTextExtentPoint; - alias GetTextExtentExPointA GetTextExtentExPoint; - alias GetTextExtentPoint32A GetTextExtentPoint32; - alias GetTextFaceA GetTextFace; - alias GetTextMetricsA GetTextMetrics; - alias PolyTextOutA PolyTextOut; - alias RemoveFontResourceA RemoveFontResource; - alias ResetDCA ResetDC; - alias SetICMProfileA SetICMProfile; - alias StartDocA StartDoc; - alias TextOutA TextOut; - alias UpdateICMRegKeyA UpdateICMRegKey; - alias wglUseFontBitmapsA wglUseFontBitmaps; - alias wglUseFontOutlinesA wglUseFontOutlines; - static if (_WIN32_WINNT >= 0x500) { - alias ENUMLOGFONTEXDVA ENUMLOGFONTEXDV; - alias PENUMLOGFONTEXDVA PENUMLOGFONTEXDV; - alias LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV; - alias AddFontResourceExA AddFontResourceEx; - alias RemoveFontResourceExA RemoveFontResourceEx; - alias GetGlyphIndicesA GetGlyphIndices; - } + alias BYTE BCHAR; + alias DOCINFOA DOCINFO; + alias LOGFONTA LOGFONT; + alias TEXTMETRICA TEXTMETRIC; + alias NPTEXTMETRICA NPTEXTMETRIC; + alias ICMENUMPROCA ICMENUMPROC; + alias FONTENUMPROCA FONTENUMPROC; + alias DEVMODEA DEVMODE; + alias EXTLOGFONTA EXTLOGFONT; + alias GCP_RESULTSA GCP_RESULTS; + alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC; + alias POLYTEXTA POLYTEXT; + alias LOGCOLORSPACEA LOGCOLORSPACE; + alias NEWTEXTMETRICA NEWTEXTMETRIC; + alias NEWTEXTMETRICEXA NEWTEXTMETRICEX; + alias ENUMLOGFONTA ENUMLOGFONT; + alias ENUMLOGFONTEXA ENUMLOGFONTEX; + alias DISPLAY_DEVICEA DISPLAY_DEVICE; + + alias AddFontResourceA AddFontResource; + alias CopyEnhMetaFileA CopyEnhMetaFile; + alias CopyMetaFileA CopyMetaFile; + alias CreateColorSpaceA CreateColorSpace; + alias CreateDCA CreateDC; + alias CreateEnhMetaFileA CreateEnhMetaFile; + alias CreateFontA CreateFont; + alias CreateFontIndirectA CreateFontIndirect; + alias CreateICA CreateIC; + alias CreateMetaFileA CreateMetaFile; + alias CreateScalableFontResourceA CreateScalableFontResource; + alias DeviceCapabilitiesA DeviceCapabilities; + alias EnumFontFamiliesA EnumFontFamilies; + alias EnumFontFamiliesExA EnumFontFamiliesEx; + alias EnumFontsA EnumFonts; + alias EnumICMProfilesA EnumICMProfiles; + alias ExtTextOutA ExtTextOut; + alias GetCharWidthFloatA GetCharWidthFloat; + alias GetCharWidthA GetCharWidth; + alias GetCharacterPlacementA GetCharacterPlacement; + alias GetCharABCWidthsA GetCharABCWidths; + alias GetCharABCWidthsFloatA GetCharABCWidthsFloat; + alias GetCharWidth32A GetCharWidth32; + alias GetEnhMetaFileA GetEnhMetaFile; + alias GetEnhMetaFileDescriptionA GetEnhMetaFileDescription; + alias GetGlyphOutlineA GetGlyphOutline; + alias GetICMProfileA GetICMProfile; + alias GetKerningPairsA GetKerningPairs; + alias GetLogColorSpaceA GetLogColorSpace; + alias GetMetaFileA GetMetaFile; + alias GetObjectA GetObject; + alias GetOutlineTextMetricsA GetOutlineTextMetrics; + alias GetTextExtentPointA GetTextExtentPoint; + alias GetTextExtentExPointA GetTextExtentExPoint; + alias GetTextExtentPoint32A GetTextExtentPoint32; + alias GetTextFaceA GetTextFace; + alias GetTextMetricsA GetTextMetrics; + alias PolyTextOutA PolyTextOut; + alias RemoveFontResourceA RemoveFontResource; + alias ResetDCA ResetDC; + alias SetICMProfileA SetICMProfile; + alias StartDocA StartDoc; + alias TextOutA TextOut; + alias UpdateICMRegKeyA UpdateICMRegKey; + alias wglUseFontBitmapsA wglUseFontBitmaps; + alias wglUseFontOutlinesA wglUseFontOutlines; + static if (_WIN32_WINNT >= 0x500) { + alias ENUMLOGFONTEXDVA ENUMLOGFONTEXDV; + alias PENUMLOGFONTEXDVA PENUMLOGFONTEXDV; + alias LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV; + alias AddFontResourceExA AddFontResourceEx; + alias RemoveFontResourceExA RemoveFontResourceEx; + alias GetGlyphIndicesA GetGlyphIndices; + } } // Common to both ASCII & UNICODE diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d index 450c803722..b3ade01818 100644 --- a/src/core/sys/windows/winhttp.d +++ b/src/core/sys/windows/winhttp.d @@ -25,9 +25,9 @@ alias LPINTERNET_SCHEME = INTERNET_SCHEME*; // Protocol 'Manifests' enum : DWORD { - INTERNET_DEFAULT_PORT = 0, - INTERNET_DEFAULT_HTTP_PORT = 80, - INTERNET_DEFAULT_HTTPS_PORT = 443 + INTERNET_DEFAULT_PORT = 0, + INTERNET_DEFAULT_HTTP_PORT = 80, + INTERNET_DEFAULT_HTTPS_PORT = 443 } // WinHttpOpen() Flags: @@ -35,18 +35,18 @@ enum DWORD WINHTTP_FLAG_ASYNC = 0x10000000; // WinHttpOpenRequest() Flags: enum : DWORD { - WINHTTP_FLAG_SECURE = 0x00800000, - WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, - WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, - WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, - WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, - WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, - WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, - - SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, - SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, - SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, - SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = 0x00000200 + WINHTTP_FLAG_SECURE = 0x00800000, + WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, + WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, + WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, + WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, + WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, + WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, + + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, + SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = 0x00000200 } struct WINHTTP_ASYNC_RESULT { @@ -63,10 +63,10 @@ alias LPHTTP_VERSION_INFO = HTTP_VERSION_INFO*; // URL Scheme enum : DWORD { - INTERNET_SCHEME_HTTP = 1, - INTERNET_SCHEME_HTTPS = 2, - INTERNET_SCHEME_FTP = 3, - INTERNET_SCHEME_SOCKS = 4 + INTERNET_SCHEME_HTTP = 1, + INTERNET_SCHEME_HTTPS = 2, + INTERNET_SCHEME_FTP = 3, + INTERNET_SCHEME_SOCKS = 4 } struct URL_COMPONENTS { @@ -109,23 +109,23 @@ struct WINHTTP_AUTOPROXY_OPTIONS { } enum : DWORD { - WINHTTP_AUTOPROXY_AUTO_DETECT = 0x00000001, - WINHTTP_AUTOPROXY_CONFIG_URL = 0x00000002, - WINHTTP_AUTOPROXY_HOST_KEEPCASE = 0x00000004, - WINHTTP_AUTOPROXY_HOST_LOWERCASE = 0x00000008, - WINHTTP_AUTOPROXY_RUN_INPROCESS = 0x00010000, - WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = 0x00020000, - WINHTTP_AUTOPROXY_NO_DIRECTACCESS = 0x00040000, - WINHTTP_AUTOPROXY_NO_CACHE_CLIENT = 0x00080000, - WINHTTP_AUTOPROXY_NO_CACHE_SVC = 0x00100000, + WINHTTP_AUTOPROXY_AUTO_DETECT = 0x00000001, + WINHTTP_AUTOPROXY_CONFIG_URL = 0x00000002, + WINHTTP_AUTOPROXY_HOST_KEEPCASE = 0x00000004, + WINHTTP_AUTOPROXY_HOST_LOWERCASE = 0x00000008, + WINHTTP_AUTOPROXY_RUN_INPROCESS = 0x00010000, + WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = 0x00020000, + WINHTTP_AUTOPROXY_NO_DIRECTACCESS = 0x00040000, + WINHTTP_AUTOPROXY_NO_CACHE_CLIENT = 0x00080000, + WINHTTP_AUTOPROXY_NO_CACHE_SVC = 0x00100000, - WINHTTP_AUTOPROXY_SORT_RESULTS = 0x00400000 + WINHTTP_AUTOPROXY_SORT_RESULTS = 0x00400000 } // dwAutoDetectFlags enum : DWORD { - WINHTTP_AUTO_DETECT_TYPE_DHCP = 0x00000001, - WINHTTP_AUTO_DETECT_TYPE_DNS_A = 0x00000002 + WINHTTP_AUTO_DETECT_TYPE_DHCP = 0x00000001, + WINHTTP_AUTO_DETECT_TYPE_DNS_A = 0x00000002 } struct WINHTTP_CERTIFICATE_INFO { @@ -151,24 +151,24 @@ enum DWORD WINHTTP_TIME_FORMAT_BUFSIZE = 62; // CrackUrl, CombineUrl enum : DWORD { - ICU_NO_ENCODE = 0x20000000, - ICU_DECODE = 0x10000000, - ICU_NO_META = 0x08000000, - ICU_ENCODE_SPACES_ONLY = 0x04000000, - ICU_BROWSER_MODE = 0x02000000, - ICU_ENCODE_PERCENT = 0x00001000 + ICU_NO_ENCODE = 0x20000000, + ICU_DECODE = 0x10000000, + ICU_NO_META = 0x08000000, + ICU_ENCODE_SPACES_ONLY = 0x04000000, + ICU_BROWSER_MODE = 0x02000000, + ICU_ENCODE_PERCENT = 0x00001000 } // WinHttpCrackUrl, WinHttpCreateUrl enum : DWORD { - ICU_ESCAPE = 0x80000000, - ICU_ESCAPE_AUTHORITY = 0x00002000, - ICU_REJECT_USERPWD = 0x00004000 + ICU_ESCAPE = 0x80000000, + ICU_ESCAPE_AUTHORITY = 0x00002000, + ICU_REJECT_USERPWD = 0x00004000 } enum : DWORD { - WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, - WINHTTP_ACCESS_TYPE_NO_PROXY = 1, - WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, - WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4 + WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, + WINHTTP_ACCESS_TYPE_NO_PROXY = 1, + WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, + WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4 } // WinHttpOpen 'prettifiers' enum LPCWSTR WINHTTP_NO_PROXY_NAME = null; @@ -178,135 +178,135 @@ enum LPVOID WINHTTP_NO_CLIENT_CERT_CONTEXT = null; // WinHttp{Query|Set}Option enum : DWORD { - WINHTTP_FIRST_OPTION = WINHTTP_OPTION_CALLBACK, - - WINHTTP_OPTION_CALLBACK = 1, - WINHTTP_OPTION_RESOLVE_TIMEOUT = 2, - WINHTTP_OPTION_CONNECT_TIMEOUT = 3, - WINHTTP_OPTION_CONNECT_RETRIES = 4, - WINHTTP_OPTION_SEND_TIMEOUT = 5, - WINHTTP_OPTION_RECEIVE_TIMEOUT = 6, - WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT = 7, - WINHTTP_OPTION_HANDLE_TYPE = 9, - WINHTTP_OPTION_READ_BUFFER_SIZE = 12, - WINHTTP_OPTION_WRITE_BUFFER_SIZE = 13, - WINHTTP_OPTION_PARENT_HANDLE = 21, - WINHTTP_OPTION_EXTENDED_ERROR = 24, - WINHTTP_OPTION_SECURITY_FLAGS = 31, - WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT = 32, - WINHTTP_OPTION_URL = 34, - WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36, - WINHTTP_OPTION_PROXY = 38, - WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39, - - WINHTTP_OPTION_USER_AGENT = 41, - WINHTTP_OPTION_CONTEXT_VALUE = 45, - WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47, - WINHTTP_OPTION_REQUEST_PRIORITY = 58, - WINHTTP_OPTION_HTTP_VERSION = 59, - WINHTTP_OPTION_DISABLE_FEATURE = 63, - - WINHTTP_OPTION_CODEPAGE = 68, - WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73, - WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74, - WINHTTP_OPTION_AUTOLOGON_POLICY = 77, - WINHTTP_OPTION_SERVER_CERT_CONTEXT = 78, - WINHTTP_OPTION_ENABLE_FEATURE = 79, - WINHTTP_OPTION_WORKER_THREAD_COUNT = 80, - WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT = 81, - WINHTTP_OPTION_PASSPORT_COBRANDING_URL = 82, - WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH = 83, - WINHTTP_OPTION_SECURE_PROTOCOLS = 84, - WINHTTP_OPTION_ENABLETRACING = 85, - WINHTTP_OPTION_PASSPORT_SIGN_OUT = 86, - WINHTTP_OPTION_PASSPORT_RETURN_URL = 87, - WINHTTP_OPTION_REDIRECT_POLICY = 88, - WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS = 89, - WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE = 90, - WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE = 91, - WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE = 92, - WINHTTP_OPTION_CONNECTION_INFO = 93, - WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94, - WINHTTP_OPTION_SPN = 96, - - WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97, - WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98, - - WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT = 99, - WINHTTP_OPTION_REJECT_USERPWD_IN_URL = 100, - WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS = 101, - - WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE = 103, - WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE = 104, - - WINHTTP_OPTION_SERVER_SPN_USED = 106, - WINHTTP_OPTION_PROXY_SPN_USED = 107, - - WINHTTP_OPTION_SERVER_CBT = 108, - - WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110, - WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111, - - WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114, - WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT = 115, - WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116, - - WINHTTP_OPTION_DECOMPRESSION = 118, - - WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE = 122, - WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE = 123, - - //WINHTTP_LAST_OPTION => Moved outside of enum - static if() constraints within enums - - WINHTTP_OPTION_USERNAME = 0x1000, - WINHTTP_OPTION_PASSWORD = 0x1001, - WINHTTP_OPTION_PROXY_USERNAME = 0x1002, - WINHTTP_OPTION_PROXY_PASSWORD = 0x1003, - - WINHTTP_CONNS_PER_SERVER_UNLIMITED = 0xFFFFFFFF, - - WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0, - WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1, - WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2, - - WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM, - - WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0, - WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1, - WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2, - - WINHTTP_OPTION_REDIRECT_POLICY_LAST = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS, - WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, - - WINHTTP_DISABLE_PASSPORT_AUTH = 0x00000000, - WINHTTP_ENABLE_PASSPORT_AUTH = 0x10000000, - WINHTTP_DISABLE_PASSPORT_KEYRING = 0x20000000, - WINHTTP_ENABLE_PASSPORT_KEYRING = 0x40000000, - - WINHTTP_DISABLE_COOKIES = 0x00000001, - WINHTTP_DISABLE_REDIRECTS = 0x00000002, - WINHTTP_DISABLE_AUTHENTICATION = 0x00000004, - WINHTTP_DISABLE_KEEP_ALIVE = 0x00000008, - - WINHTTP_ENABLE_SSL_REVOCATION = 0x00000001, - WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = 0x00000002, - - WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000, - WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001, - WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT + WINHTTP_FIRST_OPTION = WINHTTP_OPTION_CALLBACK, + + WINHTTP_OPTION_CALLBACK = 1, + WINHTTP_OPTION_RESOLVE_TIMEOUT = 2, + WINHTTP_OPTION_CONNECT_TIMEOUT = 3, + WINHTTP_OPTION_CONNECT_RETRIES = 4, + WINHTTP_OPTION_SEND_TIMEOUT = 5, + WINHTTP_OPTION_RECEIVE_TIMEOUT = 6, + WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT = 7, + WINHTTP_OPTION_HANDLE_TYPE = 9, + WINHTTP_OPTION_READ_BUFFER_SIZE = 12, + WINHTTP_OPTION_WRITE_BUFFER_SIZE = 13, + WINHTTP_OPTION_PARENT_HANDLE = 21, + WINHTTP_OPTION_EXTENDED_ERROR = 24, + WINHTTP_OPTION_SECURITY_FLAGS = 31, + WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT = 32, + WINHTTP_OPTION_URL = 34, + WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36, + WINHTTP_OPTION_PROXY = 38, + WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39, + + WINHTTP_OPTION_USER_AGENT = 41, + WINHTTP_OPTION_CONTEXT_VALUE = 45, + WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47, + WINHTTP_OPTION_REQUEST_PRIORITY = 58, + WINHTTP_OPTION_HTTP_VERSION = 59, + WINHTTP_OPTION_DISABLE_FEATURE = 63, + + WINHTTP_OPTION_CODEPAGE = 68, + WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73, + WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74, + WINHTTP_OPTION_AUTOLOGON_POLICY = 77, + WINHTTP_OPTION_SERVER_CERT_CONTEXT = 78, + WINHTTP_OPTION_ENABLE_FEATURE = 79, + WINHTTP_OPTION_WORKER_THREAD_COUNT = 80, + WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT = 81, + WINHTTP_OPTION_PASSPORT_COBRANDING_URL = 82, + WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH = 83, + WINHTTP_OPTION_SECURE_PROTOCOLS = 84, + WINHTTP_OPTION_ENABLETRACING = 85, + WINHTTP_OPTION_PASSPORT_SIGN_OUT = 86, + WINHTTP_OPTION_PASSPORT_RETURN_URL = 87, + WINHTTP_OPTION_REDIRECT_POLICY = 88, + WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS = 89, + WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE = 90, + WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE = 91, + WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE = 92, + WINHTTP_OPTION_CONNECTION_INFO = 93, + WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94, + WINHTTP_OPTION_SPN = 96, + + WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97, + WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98, + + WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT = 99, + WINHTTP_OPTION_REJECT_USERPWD_IN_URL = 100, + WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS = 101, + + WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE = 103, + WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE = 104, + + WINHTTP_OPTION_SERVER_SPN_USED = 106, + WINHTTP_OPTION_PROXY_SPN_USED = 107, + + WINHTTP_OPTION_SERVER_CBT = 108, + + WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110, + WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111, + + WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114, + WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT = 115, + WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116, + + WINHTTP_OPTION_DECOMPRESSION = 118, + + WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE = 122, + WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE = 123, + + //WINHTTP_LAST_OPTION => Moved outside of enum - static if() constraints within enums + + WINHTTP_OPTION_USERNAME = 0x1000, + WINHTTP_OPTION_PASSWORD = 0x1001, + WINHTTP_OPTION_PROXY_USERNAME = 0x1002, + WINHTTP_OPTION_PROXY_PASSWORD = 0x1003, + + WINHTTP_CONNS_PER_SERVER_UNLIMITED = 0xFFFFFFFF, + + WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0, + WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1, + WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2, + + WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM, + + WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0, + WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1, + WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2, + + WINHTTP_OPTION_REDIRECT_POLICY_LAST = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS, + WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, + + WINHTTP_DISABLE_PASSPORT_AUTH = 0x00000000, + WINHTTP_ENABLE_PASSPORT_AUTH = 0x10000000, + WINHTTP_DISABLE_PASSPORT_KEYRING = 0x20000000, + WINHTTP_ENABLE_PASSPORT_KEYRING = 0x40000000, + + WINHTTP_DISABLE_COOKIES = 0x00000001, + WINHTTP_DISABLE_REDIRECTS = 0x00000002, + WINHTTP_DISABLE_AUTHENTICATION = 0x00000004, + WINHTTP_DISABLE_KEEP_ALIVE = 0x00000008, + + WINHTTP_ENABLE_SSL_REVOCATION = 0x00000001, + WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = 0x00000002, + + WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000, + WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001, + WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT } // Windows 8.1 SDK: static if (_WIN32_WINNT >= 0x602) { - enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; + enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; } else { // Windows 7.0A SDK: - enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; + enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; } enum : DWORD { - WINHTTP_DECOMPRESSION_FLAG_GZIP = 0x00000001, - WINHTTP_DECOMPRESSION_FLAG_DEFLATE = 0x00000002, - WINHTTP_DECOMPRESSION_FLAG_ALL = (WINHTTP_DECOMPRESSION_FLAG_GZIP | WINHTTP_DECOMPRESSION_FLAG_DEFLATE) + WINHTTP_DECOMPRESSION_FLAG_GZIP = 0x00000001, + WINHTTP_DECOMPRESSION_FLAG_DEFLATE = 0x00000002, + WINHTTP_DECOMPRESSION_FLAG_ALL = (WINHTTP_DECOMPRESSION_FLAG_GZIP | WINHTTP_DECOMPRESSION_FLAG_DEFLATE) } struct WINHTTP_CREDS { @@ -331,41 +331,41 @@ struct WINHTTP_CREDS_EX { alias PWINHTTP_CREDS_EX = WINHTTP_CREDS_EX*; enum : DWORD { - WINHTTP_HANDLE_TYPE_SESSION = 1, - WINHTTP_HANDLE_TYPE_CONNECT = 2, - WINHTTP_HANDLE_TYPE_REQUEST = 3, - - WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, - WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, - WINHTTP_AUTH_SCHEME_PASSPORT = 0x00000004, - WINHTTP_AUTH_SCHEME_DIGEST = 0x00000008, - WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, - - WINHTTP_AUTH_TARGET_SERVER = 0x00000000, - WINHTTP_AUTH_TARGET_PROXY = 0x00000001, - - SECURITY_FLAG_SECURE = 0x00000001, - SECURITY_FLAG_STRENGTH_WEAK = 0x10000000, - SECURITY_FLAG_STRENGTH_MEDIUM = 0x40000000, - SECURITY_FLAG_STRENGTH_STRONG = 0x20000000, - - WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = 0x00000001, - WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = 0x00000002, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = 0x00000004, - WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA = 0x00000008, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID = 0x00000010, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID = 0x00000020, - WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE = 0x00000040, - WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR = 0x80000000, - - WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 = 0x00000008, - WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 = 0x00000020, - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = 0x00000080, - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = 0x00000200, - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = 0x00000800, - WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | - WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | - WINHTTP_FLAG_SECURE_PROTOCOL_TLS1) + WINHTTP_HANDLE_TYPE_SESSION = 1, + WINHTTP_HANDLE_TYPE_CONNECT = 2, + WINHTTP_HANDLE_TYPE_REQUEST = 3, + + WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, + WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, + WINHTTP_AUTH_SCHEME_PASSPORT = 0x00000004, + WINHTTP_AUTH_SCHEME_DIGEST = 0x00000008, + WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, + + WINHTTP_AUTH_TARGET_SERVER = 0x00000000, + WINHTTP_AUTH_TARGET_PROXY = 0x00000001, + + SECURITY_FLAG_SECURE = 0x00000001, + SECURITY_FLAG_STRENGTH_WEAK = 0x10000000, + SECURITY_FLAG_STRENGTH_MEDIUM = 0x40000000, + SECURITY_FLAG_STRENGTH_STRONG = 0x20000000, + + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = 0x00000001, + WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = 0x00000002, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = 0x00000004, + WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA = 0x00000008, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID = 0x00000010, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID = 0x00000020, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE = 0x00000040, + WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR = 0x80000000, + + WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 = 0x00000008, + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 = 0x00000020, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = 0x00000080, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = 0x00000200, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = 0x00000800, + WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1) } alias extern(Windows) int fnWINHTTP_STATUS_CALLBACK(HINTERNET hInternet, DWORD_PTR dwContext, @@ -374,61 +374,61 @@ alias WINHTTP_STATUS_CALLBACK = fnWINHTTP_STATUS_CALLBACK*; alias LPWINHTTP_STATUS_CALLBACK = WINHTTP_STATUS_CALLBACK*; enum : DWORD { - WINHTTP_CALLBACK_STATUS_RESOLVING_NAME = 0x00000001, - WINHTTP_CALLBACK_STATUS_NAME_RESOLVED = 0x00000002, - WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER = 0x00000004, - WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER = 0x00000008, - WINHTTP_CALLBACK_STATUS_SENDING_REQUEST = 0x00000010, - WINHTTP_CALLBACK_STATUS_REQUEST_SENT = 0x00000020, - WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE = 0x00000040, - WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED = 0x00000080, - WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION = 0x00000100, - WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED = 0x00000200, - WINHTTP_CALLBACK_STATUS_HANDLE_CREATED = 0x00000400, - WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING = 0x00000800, - WINHTTP_CALLBACK_STATUS_DETECTING_PROXY = 0x00001000, - WINHTTP_CALLBACK_STATUS_REDIRECT = 0x00004000, - WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE = 0x00008000, - WINHTTP_CALLBACK_STATUS_SECURE_FAILURE = 0x00010000, - WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE = 0x00020000, - WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE = 0x00040000, - WINHTTP_CALLBACK_STATUS_READ_COMPLETE = 0x00080000, - WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE = 0x00100000, - WINHTTP_CALLBACK_STATUS_REQUEST_ERROR = 0x00200000, - WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE = 0x00400000 + WINHTTP_CALLBACK_STATUS_RESOLVING_NAME = 0x00000001, + WINHTTP_CALLBACK_STATUS_NAME_RESOLVED = 0x00000002, + WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER = 0x00000004, + WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER = 0x00000008, + WINHTTP_CALLBACK_STATUS_SENDING_REQUEST = 0x00000010, + WINHTTP_CALLBACK_STATUS_REQUEST_SENT = 0x00000020, + WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE = 0x00000040, + WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED = 0x00000080, + WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION = 0x00000100, + WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED = 0x00000200, + WINHTTP_CALLBACK_STATUS_HANDLE_CREATED = 0x00000400, + WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING = 0x00000800, + WINHTTP_CALLBACK_STATUS_DETECTING_PROXY = 0x00001000, + WINHTTP_CALLBACK_STATUS_REDIRECT = 0x00004000, + WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE = 0x00008000, + WINHTTP_CALLBACK_STATUS_SECURE_FAILURE = 0x00010000, + WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE = 0x00020000, + WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE = 0x00040000, + WINHTTP_CALLBACK_STATUS_READ_COMPLETE = 0x00080000, + WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE = 0x00100000, + WINHTTP_CALLBACK_STATUS_REQUEST_ERROR = 0x00200000, + WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE = 0x00400000 } enum : DWORD { - WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE = 0x01000000, - WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE = 0x02000000, - WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE = 0x04000000 + WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE = 0x01000000, + WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE = 0x02000000, + WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE = 0x04000000 } enum : DWORD { - API_RECEIVE_RESPONSE = 1, - API_QUERY_DATA_AVAILABLE = 2, - API_READ_DATA = 3, - API_WRITE_DATA = 4, - API_SEND_REQUEST = 5 + API_RECEIVE_RESPONSE = 1, + API_QUERY_DATA_AVAILABLE = 2, + API_READ_DATA = 3, + API_WRITE_DATA = 4, + API_SEND_REQUEST = 5 } enum : DWORD { - WINHTTP_CALLBACK_FLAG_RESOLVE_NAME = (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED), - WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER = (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER), - WINHTTP_CALLBACK_FLAG_SEND_REQUEST = (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT), - WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE = (WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED), - WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION = (WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED), - WINHTTP_CALLBACK_FLAG_HANDLES = (WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING), - WINHTTP_CALLBACK_FLAG_DETECTING_PROXY = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY, - WINHTTP_CALLBACK_FLAG_REDIRECT = WINHTTP_CALLBACK_STATUS_REDIRECT, - WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE, - WINHTTP_CALLBACK_FLAG_SECURE_FAILURE = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, - WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE, - WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, - WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE, - WINHTTP_CALLBACK_FLAG_READ_COMPLETE = WINHTTP_CALLBACK_STATUS_READ_COMPLETE, - WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE, - WINHTTP_CALLBACK_FLAG_REQUEST_ERROR = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR + WINHTTP_CALLBACK_FLAG_RESOLVE_NAME = (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED), + WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER = (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER), + WINHTTP_CALLBACK_FLAG_SEND_REQUEST = (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT), + WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE = (WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED), + WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION = (WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED), + WINHTTP_CALLBACK_FLAG_HANDLES = (WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING), + WINHTTP_CALLBACK_FLAG_DETECTING_PROXY = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY, + WINHTTP_CALLBACK_FLAG_REDIRECT = WINHTTP_CALLBACK_STATUS_REDIRECT, + WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE, + WINHTTP_CALLBACK_FLAG_SECURE_FAILURE = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, + WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE, + WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, + WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE, + WINHTTP_CALLBACK_FLAG_READ_COMPLETE = WINHTTP_CALLBACK_STATUS_READ_COMPLETE, + WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE, + WINHTTP_CALLBACK_FLAG_REQUEST_ERROR = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR } enum DWORD WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE = WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE; @@ -456,165 +456,165 @@ enum DWORD WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS = 0xffffffff; enum WINHTTP_INVALID_STATUS_CALLBACK = (cast(WINHTTP_STATUS_CALLBACK)(-1L)); enum : DWORD { - WINHTTP_QUERY_MIME_VERSION = 0, - WINHTTP_QUERY_CONTENT_TYPE = 1, - WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2, - WINHTTP_QUERY_CONTENT_ID = 3, - WINHTTP_QUERY_CONTENT_DESCRIPTION = 4, - WINHTTP_QUERY_CONTENT_LENGTH = 5, - WINHTTP_QUERY_CONTENT_LANGUAGE = 6, - WINHTTP_QUERY_ALLOW = 7, - WINHTTP_QUERY_PUBLIC = 8, - WINHTTP_QUERY_DATE = 9, - WINHTTP_QUERY_EXPIRES = 10, - WINHTTP_QUERY_LAST_MODIFIED = 11, - WINHTTP_QUERY_MESSAGE_ID = 12, - WINHTTP_QUERY_URI = 13, - WINHTTP_QUERY_DERIVED_FROM = 14, - WINHTTP_QUERY_COST = 15, - WINHTTP_QUERY_LINK = 16, - WINHTTP_QUERY_PRAGMA = 17, - WINHTTP_QUERY_VERSION = 18, - WINHTTP_QUERY_STATUS_CODE = 19, - WINHTTP_QUERY_STATUS_TEXT = 20, - WINHTTP_QUERY_RAW_HEADERS = 21, - WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, - WINHTTP_QUERY_CONNECTION = 23, - WINHTTP_QUERY_ACCEPT = 24, - WINHTTP_QUERY_ACCEPT_CHARSET = 25, - WINHTTP_QUERY_ACCEPT_ENCODING = 26, - WINHTTP_QUERY_ACCEPT_LANGUAGE = 27, - WINHTTP_QUERY_AUTHORIZATION = 28, - WINHTTP_QUERY_CONTENT_ENCODING = 29, - WINHTTP_QUERY_FORWARDED = 30, - WINHTTP_QUERY_FROM = 31, - WINHTTP_QUERY_IF_MODIFIED_SINCE = 32, - WINHTTP_QUERY_LOCATION = 33, - WINHTTP_QUERY_ORIG_URI = 34, - WINHTTP_QUERY_REFERER = 35, - WINHTTP_QUERY_RETRY_AFTER = 36, - WINHTTP_QUERY_SERVER = 37, - WINHTTP_QUERY_TITLE = 38, - WINHTTP_QUERY_USER_AGENT = 39, - WINHTTP_QUERY_WWW_AUTHENTICATE = 40, - WINHTTP_QUERY_PROXY_AUTHENTICATE = 41, - WINHTTP_QUERY_ACCEPT_RANGES = 42, - WINHTTP_QUERY_SET_COOKIE = 43, - WINHTTP_QUERY_COOKIE = 44, - WINHTTP_QUERY_REQUEST_METHOD = 45, - WINHTTP_QUERY_REFRESH = 46, - WINHTTP_QUERY_CONTENT_DISPOSITION = 47, - - // HTTP 1.1 defined headers - - WINHTTP_QUERY_AGE = 48, - WINHTTP_QUERY_CACHE_CONTROL = 49, - WINHTTP_QUERY_CONTENT_BASE = 50, - WINHTTP_QUERY_CONTENT_LOCATION = 51, - WINHTTP_QUERY_CONTENT_MD5 = 52, - WINHTTP_QUERY_CONTENT_RANGE = 53, - WINHTTP_QUERY_ETAG = 54, - WINHTTP_QUERY_HOST = 55, - WINHTTP_QUERY_IF_MATCH = 56, - WINHTTP_QUERY_IF_NONE_MATCH = 57, - WINHTTP_QUERY_IF_RANGE = 58, - WINHTTP_QUERY_IF_UNMODIFIED_SINCE = 59, - WINHTTP_QUERY_MAX_FORWARDS = 60, - WINHTTP_QUERY_PROXY_AUTHORIZATION = 61, - WINHTTP_QUERY_RANGE = 62, - WINHTTP_QUERY_TRANSFER_ENCODING = 63, - WINHTTP_QUERY_UPGRADE = 64, - WINHTTP_QUERY_VARY = 65, - WINHTTP_QUERY_VIA = 66, - WINHTTP_QUERY_WARNING = 67, - WINHTTP_QUERY_EXPECT = 68, - WINHTTP_QUERY_PROXY_CONNECTION = 69, - WINHTTP_QUERY_UNLESS_MODIFIED_SINCE = 70, - - WINHTTP_QUERY_PROXY_SUPPORT = 75, - WINHTTP_QUERY_AUTHENTICATION_INFO = 76, - WINHTTP_QUERY_PASSPORT_URLS = 77, - WINHTTP_QUERY_PASSPORT_CONFIG = 78, - - WINHTTP_QUERY_MAX = 78, - - WINHTTP_QUERY_CUSTOM = 65535, - - WINHTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, - - WINHTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, - - WINHTTP_QUERY_FLAG_NUMBER = 0x20000000 + WINHTTP_QUERY_MIME_VERSION = 0, + WINHTTP_QUERY_CONTENT_TYPE = 1, + WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2, + WINHTTP_QUERY_CONTENT_ID = 3, + WINHTTP_QUERY_CONTENT_DESCRIPTION = 4, + WINHTTP_QUERY_CONTENT_LENGTH = 5, + WINHTTP_QUERY_CONTENT_LANGUAGE = 6, + WINHTTP_QUERY_ALLOW = 7, + WINHTTP_QUERY_PUBLIC = 8, + WINHTTP_QUERY_DATE = 9, + WINHTTP_QUERY_EXPIRES = 10, + WINHTTP_QUERY_LAST_MODIFIED = 11, + WINHTTP_QUERY_MESSAGE_ID = 12, + WINHTTP_QUERY_URI = 13, + WINHTTP_QUERY_DERIVED_FROM = 14, + WINHTTP_QUERY_COST = 15, + WINHTTP_QUERY_LINK = 16, + WINHTTP_QUERY_PRAGMA = 17, + WINHTTP_QUERY_VERSION = 18, + WINHTTP_QUERY_STATUS_CODE = 19, + WINHTTP_QUERY_STATUS_TEXT = 20, + WINHTTP_QUERY_RAW_HEADERS = 21, + WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, + WINHTTP_QUERY_CONNECTION = 23, + WINHTTP_QUERY_ACCEPT = 24, + WINHTTP_QUERY_ACCEPT_CHARSET = 25, + WINHTTP_QUERY_ACCEPT_ENCODING = 26, + WINHTTP_QUERY_ACCEPT_LANGUAGE = 27, + WINHTTP_QUERY_AUTHORIZATION = 28, + WINHTTP_QUERY_CONTENT_ENCODING = 29, + WINHTTP_QUERY_FORWARDED = 30, + WINHTTP_QUERY_FROM = 31, + WINHTTP_QUERY_IF_MODIFIED_SINCE = 32, + WINHTTP_QUERY_LOCATION = 33, + WINHTTP_QUERY_ORIG_URI = 34, + WINHTTP_QUERY_REFERER = 35, + WINHTTP_QUERY_RETRY_AFTER = 36, + WINHTTP_QUERY_SERVER = 37, + WINHTTP_QUERY_TITLE = 38, + WINHTTP_QUERY_USER_AGENT = 39, + WINHTTP_QUERY_WWW_AUTHENTICATE = 40, + WINHTTP_QUERY_PROXY_AUTHENTICATE = 41, + WINHTTP_QUERY_ACCEPT_RANGES = 42, + WINHTTP_QUERY_SET_COOKIE = 43, + WINHTTP_QUERY_COOKIE = 44, + WINHTTP_QUERY_REQUEST_METHOD = 45, + WINHTTP_QUERY_REFRESH = 46, + WINHTTP_QUERY_CONTENT_DISPOSITION = 47, + + // HTTP 1.1 defined headers + + WINHTTP_QUERY_AGE = 48, + WINHTTP_QUERY_CACHE_CONTROL = 49, + WINHTTP_QUERY_CONTENT_BASE = 50, + WINHTTP_QUERY_CONTENT_LOCATION = 51, + WINHTTP_QUERY_CONTENT_MD5 = 52, + WINHTTP_QUERY_CONTENT_RANGE = 53, + WINHTTP_QUERY_ETAG = 54, + WINHTTP_QUERY_HOST = 55, + WINHTTP_QUERY_IF_MATCH = 56, + WINHTTP_QUERY_IF_NONE_MATCH = 57, + WINHTTP_QUERY_IF_RANGE = 58, + WINHTTP_QUERY_IF_UNMODIFIED_SINCE = 59, + WINHTTP_QUERY_MAX_FORWARDS = 60, + WINHTTP_QUERY_PROXY_AUTHORIZATION = 61, + WINHTTP_QUERY_RANGE = 62, + WINHTTP_QUERY_TRANSFER_ENCODING = 63, + WINHTTP_QUERY_UPGRADE = 64, + WINHTTP_QUERY_VARY = 65, + WINHTTP_QUERY_VIA = 66, + WINHTTP_QUERY_WARNING = 67, + WINHTTP_QUERY_EXPECT = 68, + WINHTTP_QUERY_PROXY_CONNECTION = 69, + WINHTTP_QUERY_UNLESS_MODIFIED_SINCE = 70, + + WINHTTP_QUERY_PROXY_SUPPORT = 75, + WINHTTP_QUERY_AUTHENTICATION_INFO = 76, + WINHTTP_QUERY_PASSPORT_URLS = 77, + WINHTTP_QUERY_PASSPORT_CONFIG = 78, + + WINHTTP_QUERY_MAX = 78, + + WINHTTP_QUERY_CUSTOM = 65535, + + WINHTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, + + WINHTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, + + WINHTTP_QUERY_FLAG_NUMBER = 0x20000000 } enum : DWORD { - HTTP_STATUS_CONTINUE = 100, - HTTP_STATUS_SWITCH_PROTOCOLS = 101, - - HTTP_STATUS_OK = 200, - HTTP_STATUS_CREATED = 201, - HTTP_STATUS_ACCEPTED = 202, - HTTP_STATUS_PARTIAL = 203, - HTTP_STATUS_NO_CONTENT = 204, - HTTP_STATUS_RESET_CONTENT = 205, - HTTP_STATUS_PARTIAL_CONTENT = 206, - HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, - - HTTP_STATUS_AMBIGUOUS = 300, - HTTP_STATUS_MOVED = 301, - HTTP_STATUS_REDIRECT = 302, - HTTP_STATUS_REDIRECT_METHOD = 303, - HTTP_STATUS_NOT_MODIFIED = 304, - HTTP_STATUS_USE_PROXY = 305, - HTTP_STATUS_REDIRECT_KEEP_VERB = 307, - - HTTP_STATUS_BAD_REQUEST = 400, - HTTP_STATUS_DENIED = 401, - HTTP_STATUS_PAYMENT_REQ = 402, - HTTP_STATUS_FORBIDDEN = 403, - HTTP_STATUS_NOT_FOUND = 404, - HTTP_STATUS_BAD_METHOD = 405, - HTTP_STATUS_NONE_ACCEPTABLE = 406, - HTTP_STATUS_PROXY_AUTH_REQ = 407, - HTTP_STATUS_REQUEST_TIMEOUT = 408, - HTTP_STATUS_CONFLICT = 409, - HTTP_STATUS_GONE = 410, - HTTP_STATUS_LENGTH_REQUIRED = 411, - HTTP_STATUS_PRECOND_FAILED = 412, - HTTP_STATUS_REQUEST_TOO_LARGE = 413, - HTTP_STATUS_URI_TOO_LONG = 414, - HTTP_STATUS_UNSUPPORTED_MEDIA = 415, - HTTP_STATUS_RETRY_WITH = 449, - - HTTP_STATUS_SERVER_ERROR = 500, - HTTP_STATUS_NOT_SUPPORTED = 501, - HTTP_STATUS_BAD_GATEWAY = 502, - HTTP_STATUS_SERVICE_UNAVAIL = 503, - HTTP_STATUS_GATEWAY_TIMEOUT = 504, - HTTP_STATUS_VERSION_NOT_SUP = 505, - - HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE, - HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP + HTTP_STATUS_CONTINUE = 100, + HTTP_STATUS_SWITCH_PROTOCOLS = 101, + + HTTP_STATUS_OK = 200, + HTTP_STATUS_CREATED = 201, + HTTP_STATUS_ACCEPTED = 202, + HTTP_STATUS_PARTIAL = 203, + HTTP_STATUS_NO_CONTENT = 204, + HTTP_STATUS_RESET_CONTENT = 205, + HTTP_STATUS_PARTIAL_CONTENT = 206, + HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, + + HTTP_STATUS_AMBIGUOUS = 300, + HTTP_STATUS_MOVED = 301, + HTTP_STATUS_REDIRECT = 302, + HTTP_STATUS_REDIRECT_METHOD = 303, + HTTP_STATUS_NOT_MODIFIED = 304, + HTTP_STATUS_USE_PROXY = 305, + HTTP_STATUS_REDIRECT_KEEP_VERB = 307, + + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_DENIED = 401, + HTTP_STATUS_PAYMENT_REQ = 402, + HTTP_STATUS_FORBIDDEN = 403, + HTTP_STATUS_NOT_FOUND = 404, + HTTP_STATUS_BAD_METHOD = 405, + HTTP_STATUS_NONE_ACCEPTABLE = 406, + HTTP_STATUS_PROXY_AUTH_REQ = 407, + HTTP_STATUS_REQUEST_TIMEOUT = 408, + HTTP_STATUS_CONFLICT = 409, + HTTP_STATUS_GONE = 410, + HTTP_STATUS_LENGTH_REQUIRED = 411, + HTTP_STATUS_PRECOND_FAILED = 412, + HTTP_STATUS_REQUEST_TOO_LARGE = 413, + HTTP_STATUS_URI_TOO_LONG = 414, + HTTP_STATUS_UNSUPPORTED_MEDIA = 415, + HTTP_STATUS_RETRY_WITH = 449, + + HTTP_STATUS_SERVER_ERROR = 500, + HTTP_STATUS_NOT_SUPPORTED = 501, + HTTP_STATUS_BAD_GATEWAY = 502, + HTTP_STATUS_SERVICE_UNAVAIL = 503, + HTTP_STATUS_GATEWAY_TIMEOUT = 504, + HTTP_STATUS_VERSION_NOT_SUP = 505, + + HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE, + HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP } enum LPCWSTR WINHTTP_NO_REFERER = null; enum LPCWSTR * WINHTTP_DEFAULT_ACCEPT_TYPES = null; enum : DWORD { - WINHTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, - WINHTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, + WINHTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, + WINHTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, - WINHTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, + WINHTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, - WINHTTP_ADDREQ_FLAG_ADD = 0x20000000, + WINHTTP_ADDREQ_FLAG_ADD = 0x20000000, - WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, - WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, - WINHTTP_ADDREQ_FLAG_COALESCE = WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, + WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, + WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, + WINHTTP_ADDREQ_FLAG_COALESCE = WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, - WINHTTP_ADDREQ_FLAG_REPLACE = 0x80000000, + WINHTTP_ADDREQ_FLAG_REPLACE = 0x80000000, - WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH = 0 + WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH = 0 } enum LPCWSTR WINHTTP_NO_ADDITIONAL_HEADERS = null; @@ -633,211 +633,211 @@ struct WINHTTP_CURRENT_USER_IE_PROXY_CONFIG { // WinHttp API error returns enum : DWORD { - WINHTTP_ERROR_BASE = 12000, - - ERROR_WINHTTP_OUT_OF_HANDLES = (WINHTTP_ERROR_BASE + 1), - ERROR_WINHTTP_TIMEOUT = (WINHTTP_ERROR_BASE + 2), - ERROR_WINHTTP_INTERNAL_ERROR = (WINHTTP_ERROR_BASE + 4), - ERROR_WINHTTP_INVALID_URL = (WINHTTP_ERROR_BASE + 5), - ERROR_WINHTTP_UNRECOGNIZED_SCHEME = (WINHTTP_ERROR_BASE + 6), - ERROR_WINHTTP_NAME_NOT_RESOLVED = (WINHTTP_ERROR_BASE + 7), - ERROR_WINHTTP_INVALID_OPTION = (WINHTTP_ERROR_BASE + 9), - ERROR_WINHTTP_OPTION_NOT_SETTABLE = (WINHTTP_ERROR_BASE + 11), - ERROR_WINHTTP_SHUTDOWN = (WINHTTP_ERROR_BASE + 12), - - ERROR_WINHTTP_LOGIN_FAILURE = (WINHTTP_ERROR_BASE + 15), - ERROR_WINHTTP_OPERATION_CANCELLED = (WINHTTP_ERROR_BASE + 17), - ERROR_WINHTTP_INCORRECT_HANDLE_TYPE = (WINHTTP_ERROR_BASE + 18), - ERROR_WINHTTP_INCORRECT_HANDLE_STATE = (WINHTTP_ERROR_BASE + 19), - ERROR_WINHTTP_CANNOT_CONNECT = (WINHTTP_ERROR_BASE + 29), - ERROR_WINHTTP_CONNECTION_ERROR = (WINHTTP_ERROR_BASE + 30), - ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), - - ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE, + 44), - - ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), - ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), - ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = (WINHTTP_ERROR_BASE + 102), - ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN = (WINHTTP_ERROR_BASE + 103), - - ERROR_WINHTTP_HEADER_NOT_FOUND = (WINHTTP_ERROR_BASE + 150), - ERROR_WINHTTP_INVALID_SERVER_RESPONSE = (WINHTTP_ERROR_BASE + 152), - ERROR_WINHTTP_INVALID_HEADER = (WINHTTP_ERROR_BASE + 153), - ERROR_WINHTTP_INVALID_QUERY_REQUEST = (WINHTTP_ERROR_BASE + 154), - ERROR_WINHTTP_HEADER_ALREADY_EXISTS = (WINHTTP_ERROR_BASE + 155), - ERROR_WINHTTP_REDIRECT_FAILED = (WINHTTP_ERROR_BASE + 156), - - ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR = (WINHTTP_ERROR_BASE + 178), - ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT = (WINHTTP_ERROR_BASE + 166), - ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT = (WINHTTP_ERROR_BASE + 167), - ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE = (WINHTTP_ERROR_BASE + 176), - ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR = (WINHTTP_ERROR_BASE + 177), - - ERROR_WINHTTP_NOT_INITIALIZED = (WINHTTP_ERROR_BASE + 172), - ERROR_WINHTTP_SECURE_FAILURE = (WINHTTP_ERROR_BASE + 175), - - ERROR_WINHTTP_SECURE_CERT_DATE_INVALID = (WINHTTP_ERROR_BASE + 37), - ERROR_WINHTTP_SECURE_CERT_CN_INVALID = (WINHTTP_ERROR_BASE + 38), - ERROR_WINHTTP_SECURE_INVALID_CA = (WINHTTP_ERROR_BASE + 45), - ERROR_WINHTTP_SECURE_CERT_REV_FAILED = (WINHTTP_ERROR_BASE + 57), - ERROR_WINHTTP_SECURE_CHANNEL_ERROR = (WINHTTP_ERROR_BASE + 157), - ERROR_WINHTTP_SECURE_INVALID_CERT = (WINHTTP_ERROR_BASE + 169), - ERROR_WINHTTP_SECURE_CERT_REVOKED = (WINHTTP_ERROR_BASE + 170), - ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE = (WINHTTP_ERROR_BASE + 179), - - ERROR_WINHTTP_AUTODETECTION_FAILED = (WINHTTP_ERROR_BASE + 180), - ERROR_WINHTTP_HEADER_COUNT_EXCEEDED = (WINHTTP_ERROR_BASE + 181), - ERROR_WINHTTP_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 182), - ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 183), - ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW = (WINHTTP_ERROR_BASE + 184), - ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 185), - ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 186), - - WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) + WINHTTP_ERROR_BASE = 12000, + + ERROR_WINHTTP_OUT_OF_HANDLES = (WINHTTP_ERROR_BASE + 1), + ERROR_WINHTTP_TIMEOUT = (WINHTTP_ERROR_BASE + 2), + ERROR_WINHTTP_INTERNAL_ERROR = (WINHTTP_ERROR_BASE + 4), + ERROR_WINHTTP_INVALID_URL = (WINHTTP_ERROR_BASE + 5), + ERROR_WINHTTP_UNRECOGNIZED_SCHEME = (WINHTTP_ERROR_BASE + 6), + ERROR_WINHTTP_NAME_NOT_RESOLVED = (WINHTTP_ERROR_BASE + 7), + ERROR_WINHTTP_INVALID_OPTION = (WINHTTP_ERROR_BASE + 9), + ERROR_WINHTTP_OPTION_NOT_SETTABLE = (WINHTTP_ERROR_BASE + 11), + ERROR_WINHTTP_SHUTDOWN = (WINHTTP_ERROR_BASE + 12), + + ERROR_WINHTTP_LOGIN_FAILURE = (WINHTTP_ERROR_BASE + 15), + ERROR_WINHTTP_OPERATION_CANCELLED = (WINHTTP_ERROR_BASE + 17), + ERROR_WINHTTP_INCORRECT_HANDLE_TYPE = (WINHTTP_ERROR_BASE + 18), + ERROR_WINHTTP_INCORRECT_HANDLE_STATE = (WINHTTP_ERROR_BASE + 19), + ERROR_WINHTTP_CANNOT_CONNECT = (WINHTTP_ERROR_BASE + 29), + ERROR_WINHTTP_CONNECTION_ERROR = (WINHTTP_ERROR_BASE + 30), + ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), + + ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE, + 44), + + ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), + ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), + ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = (WINHTTP_ERROR_BASE + 102), + ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN = (WINHTTP_ERROR_BASE + 103), + + ERROR_WINHTTP_HEADER_NOT_FOUND = (WINHTTP_ERROR_BASE + 150), + ERROR_WINHTTP_INVALID_SERVER_RESPONSE = (WINHTTP_ERROR_BASE + 152), + ERROR_WINHTTP_INVALID_HEADER = (WINHTTP_ERROR_BASE + 153), + ERROR_WINHTTP_INVALID_QUERY_REQUEST = (WINHTTP_ERROR_BASE + 154), + ERROR_WINHTTP_HEADER_ALREADY_EXISTS = (WINHTTP_ERROR_BASE + 155), + ERROR_WINHTTP_REDIRECT_FAILED = (WINHTTP_ERROR_BASE + 156), + + ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR = (WINHTTP_ERROR_BASE + 178), + ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT = (WINHTTP_ERROR_BASE + 166), + ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT = (WINHTTP_ERROR_BASE + 167), + ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE = (WINHTTP_ERROR_BASE + 176), + ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR = (WINHTTP_ERROR_BASE + 177), + + ERROR_WINHTTP_NOT_INITIALIZED = (WINHTTP_ERROR_BASE + 172), + ERROR_WINHTTP_SECURE_FAILURE = (WINHTTP_ERROR_BASE + 175), + + ERROR_WINHTTP_SECURE_CERT_DATE_INVALID = (WINHTTP_ERROR_BASE + 37), + ERROR_WINHTTP_SECURE_CERT_CN_INVALID = (WINHTTP_ERROR_BASE + 38), + ERROR_WINHTTP_SECURE_INVALID_CA = (WINHTTP_ERROR_BASE + 45), + ERROR_WINHTTP_SECURE_CERT_REV_FAILED = (WINHTTP_ERROR_BASE + 57), + ERROR_WINHTTP_SECURE_CHANNEL_ERROR = (WINHTTP_ERROR_BASE + 157), + ERROR_WINHTTP_SECURE_INVALID_CERT = (WINHTTP_ERROR_BASE + 169), + ERROR_WINHTTP_SECURE_CERT_REVOKED = (WINHTTP_ERROR_BASE + 170), + ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE = (WINHTTP_ERROR_BASE + 179), + + ERROR_WINHTTP_AUTODETECTION_FAILED = (WINHTTP_ERROR_BASE + 180), + ERROR_WINHTTP_HEADER_COUNT_EXCEEDED = (WINHTTP_ERROR_BASE + 181), + ERROR_WINHTTP_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 182), + ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 183), + ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW = (WINHTTP_ERROR_BASE + 184), + ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 185), + ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 186), + + WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) } enum : DWORD { - WINHTTP_RESET_STATE = 0x00000001, - WINHTTP_RESET_SWPAD_CURRENT_NETWORK = 0x00000002, - WINHTTP_RESET_SWPAD_ALL = 0x00000004, - WINHTTP_RESET_SCRIPT_CACHE = 0x00000008, - WINHTTP_RESET_ALL = 0x0000FFFF, - WINHTTP_RESET_NOTIFY_NETWORK_CHANGED = 0x00010000, - WINHTTP_RESET_OUT_OF_PROC = 0x00020000 + WINHTTP_RESET_STATE = 0x00000001, + WINHTTP_RESET_SWPAD_CURRENT_NETWORK = 0x00000002, + WINHTTP_RESET_SWPAD_ALL = 0x00000004, + WINHTTP_RESET_SCRIPT_CACHE = 0x00000008, + WINHTTP_RESET_ALL = 0x0000FFFF, + WINHTTP_RESET_NOTIFY_NETWORK_CHANGED = 0x00010000, + WINHTTP_RESET_OUT_OF_PROC = 0x00020000 } enum : DWORD { - WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123, - WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 15000 + WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123, + WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 15000 } // Version(Windows8) || Version(Windows2012): static if (_WIN32_WINNT >= 0x602) { - enum WINHTTP_WEB_SOCKET_OPERATION : DWORD - { - WINHTTP_WEB_SOCKET_SEND_OPERATION = 0, - WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1, - WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2, - WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3 - } - enum WINHTTP_WEB_SOCKET_BUFFER_TYPE : DWORD - { - WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0, - WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1, - WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2, - WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3, - WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4 - } - enum WINHTTP_WEB_SOCKET_CLOSE_STATUS : DWORD - { - WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000, - WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001, - WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002, - WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003, - WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005, - WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006, - WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007, - WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008, - WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009, - WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010, - WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011, - WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015 - } - struct WINHTTP_PROXY_RESULT_ENTRY { - BOOL fProxy; - BOOL fBypass; - INTERNET_SCHEME ProxyScheme; - PWSTR pwszProxy; - INTERNET_PORT ProxyPort; - } - struct WINHTTP_PROXY_RESULT { - DWORD cEntries; - WINHTTP_PROXY_RESULT_ENTRY *pEntries; - } - struct WINHTTP_WEB_SOCKET_ASYNC_RESULT { - WINHTTP_ASYNC_RESULT AsyncResult; - WINHTTP_WEB_SOCKET_OPERATION Operation; - } - struct WINHTTP_WEB_SOCKET_STATUS { - DWORD dwBytesTransferred; - WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType; - } + enum WINHTTP_WEB_SOCKET_OPERATION : DWORD + { + WINHTTP_WEB_SOCKET_SEND_OPERATION = 0, + WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1, + WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2, + WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3 + } + enum WINHTTP_WEB_SOCKET_BUFFER_TYPE : DWORD + { + WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0, + WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1, + WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2, + WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3, + WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4 + } + enum WINHTTP_WEB_SOCKET_CLOSE_STATUS : DWORD + { + WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000, + WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001, + WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002, + WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003, + WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005, + WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006, + WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007, + WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008, + WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009, + WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010, + WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011, + WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015 + } + struct WINHTTP_PROXY_RESULT_ENTRY { + BOOL fProxy; + BOOL fBypass; + INTERNET_SCHEME ProxyScheme; + PWSTR pwszProxy; + INTERNET_PORT ProxyPort; + } + struct WINHTTP_PROXY_RESULT { + DWORD cEntries; + WINHTTP_PROXY_RESULT_ENTRY *pEntries; + } + struct WINHTTP_WEB_SOCKET_ASYNC_RESULT { + WINHTTP_ASYNC_RESULT AsyncResult; + WINHTTP_WEB_SOCKET_OPERATION Operation; + } + struct WINHTTP_WEB_SOCKET_STATUS { + DWORD dwBytesTransferred; + WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType; + } } extern (Windows) { - BOOL WinHttpAddRequestHeaders(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, DWORD dwModifiers); + BOOL WinHttpAddRequestHeaders(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, DWORD dwModifiers); - BOOL WinHttpCheckPlatform(); + BOOL WinHttpCheckPlatform(); - BOOL WinHttpCloseHandle(HINTERNET hInternet); + BOOL WinHttpCloseHandle(HINTERNET hInternet); - HINTERNET WinHttpConnect(HINTERNET hSession, LPCWSTR pswzServerName, INTERNET_PORT nServerPort, DWORD dwReserved); + HINTERNET WinHttpConnect(HINTERNET hSession, LPCWSTR pswzServerName, INTERNET_PORT nServerPort, DWORD dwReserved); - BOOL WinHttpCrackUrl(LPCWSTR pwszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents); + BOOL WinHttpCrackUrl(LPCWSTR pwszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents); - BOOL WinHttpCreateUrl(LPURL_COMPONENTS lpUrlComponents, DWORD dwFlags, LPWSTR pwszUrl, LPDWORD lpdwUrlLength); - BOOL WinHttpDetectAutoProxyConfigUrl(DWORD dwAutoDetectFlags, LPWSTR *ppwszAutoConfigUrl); + BOOL WinHttpCreateUrl(LPURL_COMPONENTS lpUrlComponents, DWORD dwFlags, LPWSTR pwszUrl, LPDWORD lpdwUrlLength); + BOOL WinHttpDetectAutoProxyConfigUrl(DWORD dwAutoDetectFlags, LPWSTR *ppwszAutoConfigUrl); - BOOL WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); - BOOL WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig); - BOOL WinHttpGetProxyForUrl(HINTERNET hSession, LPCWSTR lpcwszUrl, - WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig); + BOOL WinHttpGetProxyForUrl(HINTERNET hSession, LPCWSTR lpcwszUrl, + WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, WINHTTP_PROXY_INFO *pProxyInfo); - HINTERNET WinHttpOpen(LPCWSTR pwszUserAgent, DWORD dwAccessType, LPCWSTR pwszProxyName, - LPCWSTR pwszProxyBypass, DWORD dwFlags); - HINTERNET WinHttpOpenRequest(HINTERNET hConnect, LPCWSTR pwszVerb, LPCWSTR pwszObjectName, - LPCWSTR pwszVersion, LPCWSTR pwszReferrer, - LPCWSTR *ppwszAcceptTypes, DWORD dwFlags); + HINTERNET WinHttpOpen(LPCWSTR pwszUserAgent, DWORD dwAccessType, LPCWSTR pwszProxyName, + LPCWSTR pwszProxyBypass, DWORD dwFlags); + HINTERNET WinHttpOpenRequest(HINTERNET hConnect, LPCWSTR pwszVerb, LPCWSTR pwszObjectName, + LPCWSTR pwszVersion, LPCWSTR pwszReferrer, + LPCWSTR *ppwszAcceptTypes, DWORD dwFlags); - BOOL WinHttpQueryAuthSchemes(HINTERNET hRequest, LPDWORD lpdwSupportedSchemes, - LPDWORD lpdwFirstScheme, LPDWORD pdwAuthTarget); - BOOL WinHttpQueryDataAvailable(HINTERNET hRequest, LPDWORD lpdwNumberOfBytesAvailable); - BOOL WinHttpQueryHeaders(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName, + BOOL WinHttpQueryAuthSchemes(HINTERNET hRequest, LPDWORD lpdwSupportedSchemes, + LPDWORD lpdwFirstScheme, LPDWORD pdwAuthTarget); + BOOL WinHttpQueryDataAvailable(HINTERNET hRequest, LPDWORD lpdwNumberOfBytesAvailable); + BOOL WinHttpQueryHeaders(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex); - BOOL WinHttpQueryOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, - LPDWORD lpdwBufferLength); + BOOL WinHttpQueryOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, + LPDWORD lpdwBufferLength); - BOOL WinHttpReadData(HINTERNET hRequest, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, - LPDWORD lpdwNumberOfBytesRead); - BOOL WinHttpReceiveResponse(HINTERNET hRequest, LPVOID lpReserved); + BOOL WinHttpReadData(HINTERNET hRequest, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, + LPDWORD lpdwNumberOfBytesRead); + BOOL WinHttpReceiveResponse(HINTERNET hRequest, LPVOID lpReserved); - BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, - LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext); + BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, + LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext); - BOOL WinHttpSetCredentials(HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, + BOOL WinHttpSetCredentials(HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, LPCWSTR pwszUserName, LPCWSTR pwszPassword, LPVOID pAuthParams); - BOOL WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); - BOOL WinHttpSetOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength); - WINHTTP_STATUS_CALLBACK WinHttpSetStatusCallback(HINTERNET hInternet, - WINHTTP_STATUS_CALLBACK lpfnInternetCallback, - DWORD dwNotificationFlags, DWORD_PTR dwReserved); - BOOL WinHttpSetTimeouts(HINTERNET hInternet, int dwResolveTimeout, int dwConnectTimeout, - int dwSendTimeout, int dwReceiveTimeout); + BOOL WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpSetOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength); + WINHTTP_STATUS_CALLBACK WinHttpSetStatusCallback(HINTERNET hInternet, + WINHTTP_STATUS_CALLBACK lpfnInternetCallback, + DWORD dwNotificationFlags, DWORD_PTR dwReserved); + BOOL WinHttpSetTimeouts(HINTERNET hInternet, int dwResolveTimeout, int dwConnectTimeout, + int dwSendTimeout, int dwReceiveTimeout); - BOOL WinHttpTimeFromSystemTime(const SYSTEMTIME *pst, LPWSTR pwszTime); - BOOL WinHttpTimeToSystemTime(LPCWSTR pwszTime, SYSTEMTIME *pst); + BOOL WinHttpTimeFromSystemTime(const SYSTEMTIME *pst, LPWSTR pwszTime); + BOOL WinHttpTimeToSystemTime(LPCWSTR pwszTime, SYSTEMTIME *pst); - BOOL WinHttpWriteData(HINTERNET hRequest, LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, - LPDWORD lpdwNumberOfBytesWritten); + BOOL WinHttpWriteData(HINTERNET hRequest, LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, + LPDWORD lpdwNumberOfBytesWritten); // Version(Windows8) || Version(Windows2012): static if (_WIN32_WINNT >= 0x602) { - DWORD WinHttpCreateProxyResolver(HINTERNET hSession, HINTERNET *phResolver); - void WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT *pProxyResult); - DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, - WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, DWORD_PTR pContext); - DWORD WinHttpGetProxyResult(HINTERNET hResolver, WINHTTP_PROXY_RESULT *pProxyResult); - DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); - DWORD WinHttpWebSocketClose(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); - HINTERNET WinHttpWebSocketCompleteUpgrade(HINTERNET hRequest, DWORD_PTR pContext); - DWORD WinHttpWebSocketQueryCloseStatus(HINTERNET hWebSocket, USHORT *pusStatus, PVOID pvReason, - DWORD dwReasonLength, DWORD *pdwReasonLengthConsumed); - DWORD WinHttpWebSocketReceive(HINTERNET hWebSocket, PVOID pvBuffer, DWORD dwBufferLength, - DWORD *pdwBytesRead, WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType); - DWORD WinHttpWebSocketSend(HINTERNET hWebSocket, WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType, - PVOID pvBuffer, DWORD dwBufferLength); - DWORD WinHttpWebSocketShutdown(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); + DWORD WinHttpCreateProxyResolver(HINTERNET hSession, HINTERNET *phResolver); + void WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT *pProxyResult); + DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, + WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, DWORD_PTR pContext); + DWORD WinHttpGetProxyResult(HINTERNET hResolver, WINHTTP_PROXY_RESULT *pProxyResult); + DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); + DWORD WinHttpWebSocketClose(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); + HINTERNET WinHttpWebSocketCompleteUpgrade(HINTERNET hRequest, DWORD_PTR pContext); + DWORD WinHttpWebSocketQueryCloseStatus(HINTERNET hWebSocket, USHORT *pusStatus, PVOID pvReason, + DWORD dwReasonLength, DWORD *pdwReasonLengthConsumed); + DWORD WinHttpWebSocketReceive(HINTERNET hWebSocket, PVOID pvBuffer, DWORD dwBufferLength, + DWORD *pdwBytesRead, WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType); + DWORD WinHttpWebSocketSend(HINTERNET hWebSocket, WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType, + PVOID pvBuffer, DWORD dwBufferLength); + DWORD WinHttpWebSocketShutdown(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); } } diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index 1af0e533b8..2a6391d35e 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -15,93 +15,93 @@ pragma(lib, "wininet"); import core.sys.windows.windows; enum { - INTERNET_INVALID_PORT_NUMBER = 0, - INTERNET_DEFAULT_FTP_PORT = 21, - INTERNET_DEFAULT_GOPHER_PORT = 70, - INTERNET_DEFAULT_HTTP_PORT = 80, - INTERNET_DEFAULT_HTTPS_PORT = 443, - INTERNET_DEFAULT_SOCKS_PORT = 1080 + INTERNET_INVALID_PORT_NUMBER = 0, + INTERNET_DEFAULT_FTP_PORT = 21, + INTERNET_DEFAULT_GOPHER_PORT = 70, + INTERNET_DEFAULT_HTTP_PORT = 80, + INTERNET_DEFAULT_HTTPS_PORT = 443, + INTERNET_DEFAULT_SOCKS_PORT = 1080 } const size_t - MAX_CACHE_ENTRY_INFO_SIZE = 4096, - INTERNET_MAX_HOST_NAME_LENGTH = 256, - INTERNET_MAX_USER_NAME_LENGTH = 128, - INTERNET_MAX_PASSWORD_LENGTH = 128, - INTERNET_MAX_PORT_NUMBER_LENGTH = 5, - INTERNET_MAX_PORT_NUMBER_VALUE = 65535, - INTERNET_MAX_PATH_LENGTH = 2048, - INTERNET_MAX_SCHEME_LENGTH = 32, - INTERNET_MAX_URL_LENGTH = INTERNET_MAX_SCHEME_LENGTH - + "://".length - + INTERNET_MAX_PATH_LENGTH; + MAX_CACHE_ENTRY_INFO_SIZE = 4096, + INTERNET_MAX_HOST_NAME_LENGTH = 256, + INTERNET_MAX_USER_NAME_LENGTH = 128, + INTERNET_MAX_PASSWORD_LENGTH = 128, + INTERNET_MAX_PORT_NUMBER_LENGTH = 5, + INTERNET_MAX_PORT_NUMBER_VALUE = 65535, + INTERNET_MAX_PATH_LENGTH = 2048, + INTERNET_MAX_SCHEME_LENGTH = 32, + INTERNET_MAX_URL_LENGTH = INTERNET_MAX_SCHEME_LENGTH + + "://".length + + INTERNET_MAX_PATH_LENGTH; enum : DWORD { - INTERNET_KEEP_ALIVE_UNKNOWN = DWORD.max, - INTERNET_KEEP_ALIVE_DISABLED = 0, - INTERNET_KEEP_ALIVE_ENABLED + INTERNET_KEEP_ALIVE_UNKNOWN = DWORD.max, + INTERNET_KEEP_ALIVE_DISABLED = 0, + INTERNET_KEEP_ALIVE_ENABLED } enum { - INTERNET_REQFLAG_FROM_CACHE = 1, - INTERNET_REQFLAG_ASYNC = 2 + INTERNET_REQFLAG_FROM_CACHE = 1, + INTERNET_REQFLAG_ASYNC = 2 } const DWORD - INTERNET_FLAG_RELOAD = 0x80000000, - INTERNET_FLAG_RAW_DATA = 0x40000000, - INTERNET_FLAG_EXISTING_CONNECT = 0x20000000, - INTERNET_FLAG_ASYNC = 0x10000000, - INTERNET_FLAG_PASSIVE = 0x08000000, - INTERNET_FLAG_NO_CACHE_WRITE = 0x04000000, - INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE, - INTERNET_FLAG_MAKE_PERSISTENT = 0x02000000, - INTERNET_FLAG_OFFLINE = 0x01000000, - INTERNET_FLAG_SECURE = 0x00800000, - INTERNET_FLAG_KEEP_CONNECTION = 0x00400000, - INTERNET_FLAG_NO_AUTO_REDIRECT = 0x00200000, - INTERNET_FLAG_READ_PREFETCH = 0x00100000, - INTERNET_FLAG_NO_COOKIES = 0x00080000, - INTERNET_FLAG_NO_AUTH = 0x00040000, - INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP = 0x00008000, - INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = 0x00004000, - INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, - INTERNET_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, - INTERNET_FLAG_RESYNCHRONIZE = 0x00000800, - INTERNET_FLAG_HYPERLINK = 0x00000400, - INTERNET_FLAG_NO_UI = 0x00000200, - INTERNET_FLAG_PRAGMA_NOCACHE = 0x00000100, - INTERNET_FLAG_MUST_CACHE_REQUEST = 0x00000010, - INTERNET_FLAG_TRANSFER_ASCII = FTP_TRANSFER_TYPE_ASCII, - INTERNET_FLAG_TRANSFER_BINARY = FTP_TRANSFER_TYPE_BINARY, - - SECURITY_INTERNET_MASK = 0x0000F000, - SECURITY_SET_MASK = SECURITY_INTERNET_MASK, - - INTERNET_FLAGS_MASK = 0xFFFCFE13, - INTERNET_OPTIONS_MASK = ~INTERNET_FLAGS_MASK; + INTERNET_FLAG_RELOAD = 0x80000000, + INTERNET_FLAG_RAW_DATA = 0x40000000, + INTERNET_FLAG_EXISTING_CONNECT = 0x20000000, + INTERNET_FLAG_ASYNC = 0x10000000, + INTERNET_FLAG_PASSIVE = 0x08000000, + INTERNET_FLAG_NO_CACHE_WRITE = 0x04000000, + INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE, + INTERNET_FLAG_MAKE_PERSISTENT = 0x02000000, + INTERNET_FLAG_OFFLINE = 0x01000000, + INTERNET_FLAG_SECURE = 0x00800000, + INTERNET_FLAG_KEEP_CONNECTION = 0x00400000, + INTERNET_FLAG_NO_AUTO_REDIRECT = 0x00200000, + INTERNET_FLAG_READ_PREFETCH = 0x00100000, + INTERNET_FLAG_NO_COOKIES = 0x00080000, + INTERNET_FLAG_NO_AUTH = 0x00040000, + INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP = 0x00008000, + INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = 0x00004000, + INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, + INTERNET_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, + INTERNET_FLAG_RESYNCHRONIZE = 0x00000800, + INTERNET_FLAG_HYPERLINK = 0x00000400, + INTERNET_FLAG_NO_UI = 0x00000200, + INTERNET_FLAG_PRAGMA_NOCACHE = 0x00000100, + INTERNET_FLAG_MUST_CACHE_REQUEST = 0x00000010, + INTERNET_FLAG_TRANSFER_ASCII = FTP_TRANSFER_TYPE_ASCII, + INTERNET_FLAG_TRANSFER_BINARY = FTP_TRANSFER_TYPE_BINARY, + + SECURITY_INTERNET_MASK = 0x0000F000, + SECURITY_SET_MASK = SECURITY_INTERNET_MASK, + + INTERNET_FLAGS_MASK = 0xFFFCFE13, + INTERNET_OPTIONS_MASK = ~INTERNET_FLAGS_MASK; const INTERNET_NO_CALLBACK = 0; const INTERNET_RFC1123_FORMAT = 0; const size_t INTERNET_RFC1123_BUFSIZE = 30; const DWORD - ICU_ESCAPE = 0x80000000, - ICU_USERNAME = 0x40000000, - ICU_NO_ENCODE = 0x20000000, - ICU_DECODE = 0x10000000, - ICU_NO_META = 0x08000000, - ICU_ENCODE_SPACES_ONLY = 0x04000000, - ICU_BROWSER_MODE = 0x02000000; + ICU_ESCAPE = 0x80000000, + ICU_USERNAME = 0x40000000, + ICU_NO_ENCODE = 0x20000000, + ICU_DECODE = 0x10000000, + ICU_NO_META = 0x08000000, + ICU_ENCODE_SPACES_ONLY = 0x04000000, + ICU_BROWSER_MODE = 0x02000000; enum { - INTERNET_OPEN_TYPE_PRECONFIG = 0, - INTERNET_OPEN_TYPE_DIRECT = 1, - INTERNET_OPEN_TYPE_PROXY = 3, - PRE_CONFIG_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PRECONFIG, - LOCAL_INTERNET_ACCESS = INTERNET_OPEN_TYPE_DIRECT, - GATEWAY_INTERNET_ACCESS = 2, - CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY, + INTERNET_OPEN_TYPE_PRECONFIG = 0, + INTERNET_OPEN_TYPE_DIRECT = 1, + INTERNET_OPEN_TYPE_PROXY = 3, + PRE_CONFIG_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PRECONFIG, + LOCAL_INTERNET_ACCESS = INTERNET_OPEN_TYPE_DIRECT, + GATEWAY_INTERNET_ACCESS = 2, + CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY, } const ISO_GLOBAL = 1; @@ -109,254 +109,254 @@ const ISO_REGISTRY = 2; const ISO_VALID_FLAGS = ISO_GLOBAL | ISO_REGISTRY; enum { - INTERNET_OPTION_CALLBACK = 1, - INTERNET_OPTION_CONNECT_TIMEOUT, - INTERNET_OPTION_CONNECT_RETRIES, - INTERNET_OPTION_CONNECT_BACKOFF, - INTERNET_OPTION_SEND_TIMEOUT, - INTERNET_OPTION_CONTROL_SEND_TIMEOUT = INTERNET_OPTION_SEND_TIMEOUT, - INTERNET_OPTION_RECEIVE_TIMEOUT, - INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT = INTERNET_OPTION_RECEIVE_TIMEOUT, - INTERNET_OPTION_DATA_SEND_TIMEOUT, - INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, - INTERNET_OPTION_HANDLE_TYPE, - INTERNET_OPTION_CONTEXT_VALUE, - INTERNET_OPTION_LISTEN_TIMEOUT, - INTERNET_OPTION_READ_BUFFER_SIZE, - INTERNET_OPTION_WRITE_BUFFER_SIZE, // = 13 - INTERNET_OPTION_ASYNC_ID = 15, - INTERNET_OPTION_ASYNC_PRIORITY, // = 16 - INTERNET_OPTION_PARENT_HANDLE = 21, - INTERNET_OPTION_KEEP_CONNECTION, - INTERNET_OPTION_REQUEST_FLAGS, - INTERNET_OPTION_EXTENDED_ERROR, // = 24 - INTERNET_OPTION_OFFLINE_MODE = 26, - INTERNET_OPTION_CACHE_STREAM_HANDLE, - INTERNET_OPTION_USERNAME, - INTERNET_OPTION_PASSWORD, - INTERNET_OPTION_ASYNC, - INTERNET_OPTION_SECURITY_FLAGS, - INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, - INTERNET_OPTION_DATAFILE_NAME, - INTERNET_OPTION_URL, - INTERNET_OPTION_SECURITY_CERTIFICATE, - INTERNET_OPTION_SECURITY_KEY_BITNESS, - INTERNET_OPTION_REFRESH, - INTERNET_OPTION_PROXY, - INTERNET_OPTION_SETTINGS_CHANGED, - INTERNET_OPTION_VERSION, - INTERNET_OPTION_USER_AGENT, - INTERNET_OPTION_END_BROWSER_SESSION, - INTERNET_OPTION_PROXY_USERNAME, - INTERNET_OPTION_PROXY_PASSWORD, // = 44 - INTERNET_FIRST_OPTION = INTERNET_OPTION_CALLBACK, - // why? - INTERNET_LAST_OPTION = INTERNET_OPTION_USER_AGENT + INTERNET_OPTION_CALLBACK = 1, + INTERNET_OPTION_CONNECT_TIMEOUT, + INTERNET_OPTION_CONNECT_RETRIES, + INTERNET_OPTION_CONNECT_BACKOFF, + INTERNET_OPTION_SEND_TIMEOUT, + INTERNET_OPTION_CONTROL_SEND_TIMEOUT = INTERNET_OPTION_SEND_TIMEOUT, + INTERNET_OPTION_RECEIVE_TIMEOUT, + INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT = INTERNET_OPTION_RECEIVE_TIMEOUT, + INTERNET_OPTION_DATA_SEND_TIMEOUT, + INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, + INTERNET_OPTION_HANDLE_TYPE, + INTERNET_OPTION_CONTEXT_VALUE, + INTERNET_OPTION_LISTEN_TIMEOUT, + INTERNET_OPTION_READ_BUFFER_SIZE, + INTERNET_OPTION_WRITE_BUFFER_SIZE, // = 13 + INTERNET_OPTION_ASYNC_ID = 15, + INTERNET_OPTION_ASYNC_PRIORITY, // = 16 + INTERNET_OPTION_PARENT_HANDLE = 21, + INTERNET_OPTION_KEEP_CONNECTION, + INTERNET_OPTION_REQUEST_FLAGS, + INTERNET_OPTION_EXTENDED_ERROR, // = 24 + INTERNET_OPTION_OFFLINE_MODE = 26, + INTERNET_OPTION_CACHE_STREAM_HANDLE, + INTERNET_OPTION_USERNAME, + INTERNET_OPTION_PASSWORD, + INTERNET_OPTION_ASYNC, + INTERNET_OPTION_SECURITY_FLAGS, + INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, + INTERNET_OPTION_DATAFILE_NAME, + INTERNET_OPTION_URL, + INTERNET_OPTION_SECURITY_CERTIFICATE, + INTERNET_OPTION_SECURITY_KEY_BITNESS, + INTERNET_OPTION_REFRESH, + INTERNET_OPTION_PROXY, + INTERNET_OPTION_SETTINGS_CHANGED, + INTERNET_OPTION_VERSION, + INTERNET_OPTION_USER_AGENT, + INTERNET_OPTION_END_BROWSER_SESSION, + INTERNET_OPTION_PROXY_USERNAME, + INTERNET_OPTION_PROXY_PASSWORD, // = 44 + INTERNET_FIRST_OPTION = INTERNET_OPTION_CALLBACK, + // why? + INTERNET_LAST_OPTION = INTERNET_OPTION_USER_AGENT } const INTERNET_PRIORITY_FOREGROUND = 1000; enum { - INTERNET_HANDLE_TYPE_INTERNET = 1, - INTERNET_HANDLE_TYPE_CONNECT_FTP, - INTERNET_HANDLE_TYPE_CONNECT_GOPHER, - INTERNET_HANDLE_TYPE_CONNECT_HTTP, - INTERNET_HANDLE_TYPE_FTP_FIND, - INTERNET_HANDLE_TYPE_FTP_FIND_HTML, - INTERNET_HANDLE_TYPE_FTP_FILE, - INTERNET_HANDLE_TYPE_FTP_FILE_HTML, - INTERNET_HANDLE_TYPE_GOPHER_FIND, - INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML, - INTERNET_HANDLE_TYPE_GOPHER_FILE, - INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML, - INTERNET_HANDLE_TYPE_HTTP_REQUEST + INTERNET_HANDLE_TYPE_INTERNET = 1, + INTERNET_HANDLE_TYPE_CONNECT_FTP, + INTERNET_HANDLE_TYPE_CONNECT_GOPHER, + INTERNET_HANDLE_TYPE_CONNECT_HTTP, + INTERNET_HANDLE_TYPE_FTP_FIND, + INTERNET_HANDLE_TYPE_FTP_FIND_HTML, + INTERNET_HANDLE_TYPE_FTP_FILE, + INTERNET_HANDLE_TYPE_FTP_FILE_HTML, + INTERNET_HANDLE_TYPE_GOPHER_FIND, + INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML, + INTERNET_HANDLE_TYPE_GOPHER_FILE, + INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML, + INTERNET_HANDLE_TYPE_HTTP_REQUEST } const DWORD - SECURITY_FLAG_SECURE = 0x00000001, - SECURITY_FLAG_SSL = 0x00000002, - SECURITY_FLAG_SSL3 = 0x00000004, - SECURITY_FLAG_PCT = 0x00000008, - SECURITY_FLAG_PCT4 = 0x00000010, - SECURITY_FLAG_IETFSSL4 = 0x00000020, - SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080, - SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, - SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200, - SECURITY_FLAG_40BIT = 0x10000000, - SECURITY_FLAG_128BIT = 0x20000000, - SECURITY_FLAG_56BIT = 0x40000000, - SECURITY_FLAG_UNKNOWNBIT = 0x80000000, - SECURITY_FLAG_NORMALBITNESS = SECURITY_FLAG_40BIT, - SECURITY_FLAG_IGNORE_CERT_CN_INVALID = INTERNET_FLAG_IGNORE_CERT_CN_INVALID, - SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID, - SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS, - SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; + SECURITY_FLAG_SECURE = 0x00000001, + SECURITY_FLAG_SSL = 0x00000002, + SECURITY_FLAG_SSL3 = 0x00000004, + SECURITY_FLAG_PCT = 0x00000008, + SECURITY_FLAG_PCT4 = 0x00000010, + SECURITY_FLAG_IETFSSL4 = 0x00000020, + SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080, + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, + SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200, + SECURITY_FLAG_40BIT = 0x10000000, + SECURITY_FLAG_128BIT = 0x20000000, + SECURITY_FLAG_56BIT = 0x40000000, + SECURITY_FLAG_UNKNOWNBIT = 0x80000000, + SECURITY_FLAG_NORMALBITNESS = SECURITY_FLAG_40BIT, + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = INTERNET_FLAG_IGNORE_CERT_CN_INVALID, + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID, + SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS, + SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; enum { - INTERNET_SERVICE_FTP = 1, - INTERNET_SERVICE_GOPHER, - INTERNET_SERVICE_HTTP + INTERNET_SERVICE_FTP = 1, + INTERNET_SERVICE_GOPHER, + INTERNET_SERVICE_HTTP } enum { - INTERNET_STATUS_RESOLVING_NAME = 10, - INTERNET_STATUS_NAME_RESOLVED = 11, - INTERNET_STATUS_CONNECTING_TO_SERVER = 20, - INTERNET_STATUS_CONNECTED_TO_SERVER = 21, - INTERNET_STATUS_SENDING_REQUEST = 30, - INTERNET_STATUS_REQUEST_SENT = 31, - INTERNET_STATUS_RECEIVING_RESPONSE = 40, - INTERNET_STATUS_RESPONSE_RECEIVED = 41, - INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42, - INTERNET_STATUS_PREFETCH = 43, - INTERNET_STATUS_CLOSING_CONNECTION = 50, - INTERNET_STATUS_CONNECTION_CLOSED = 51, - INTERNET_STATUS_HANDLE_CREATED = 60, - INTERNET_STATUS_HANDLE_CLOSING = 70, - INTERNET_STATUS_REQUEST_COMPLETE = 100, - INTERNET_STATUS_REDIRECT = 110 + INTERNET_STATUS_RESOLVING_NAME = 10, + INTERNET_STATUS_NAME_RESOLVED = 11, + INTERNET_STATUS_CONNECTING_TO_SERVER = 20, + INTERNET_STATUS_CONNECTED_TO_SERVER = 21, + INTERNET_STATUS_SENDING_REQUEST = 30, + INTERNET_STATUS_REQUEST_SENT = 31, + INTERNET_STATUS_RECEIVING_RESPONSE = 40, + INTERNET_STATUS_RESPONSE_RECEIVED = 41, + INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42, + INTERNET_STATUS_PREFETCH = 43, + INTERNET_STATUS_CLOSING_CONNECTION = 50, + INTERNET_STATUS_CONNECTION_CLOSED = 51, + INTERNET_STATUS_HANDLE_CREATED = 60, + INTERNET_STATUS_HANDLE_CLOSING = 70, + INTERNET_STATUS_REQUEST_COMPLETE = 100, + INTERNET_STATUS_REDIRECT = 110 } enum { - FTP_TRANSFER_TYPE_UNKNOWN = 0, - FTP_TRANSFER_TYPE_ASCII = 1, - FTP_TRANSFER_TYPE_BINARY = 2, - FTP_TRANSFER_TYPE_MASK = 3 + FTP_TRANSFER_TYPE_UNKNOWN = 0, + FTP_TRANSFER_TYPE_ASCII = 1, + FTP_TRANSFER_TYPE_BINARY = 2, + FTP_TRANSFER_TYPE_MASK = 3 } const size_t - MAX_GOPHER_DISPLAY_TEXT = 128, - MAX_GOPHER_SELECTOR_TEXT = 256, - MAX_GOPHER_HOST_NAME = INTERNET_MAX_HOST_NAME_LENGTH, - MAX_GOPHER_LOCATOR_LENGTH - = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1 - + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 4; + MAX_GOPHER_DISPLAY_TEXT = 128, + MAX_GOPHER_SELECTOR_TEXT = 256, + MAX_GOPHER_HOST_NAME = INTERNET_MAX_HOST_NAME_LENGTH, + MAX_GOPHER_LOCATOR_LENGTH + = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1 + + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 4; const DWORD - GOPHER_TYPE_TEXT_FILE = 0x00000001, - GOPHER_TYPE_DIRECTORY = 0x00000002, - GOPHER_TYPE_CSO = 0x00000004, - GOPHER_TYPE_ERROR = 0x00000008, - GOPHER_TYPE_MAC_BINHEX = 0x00000010, - GOPHER_TYPE_DOS_ARCHIVE = 0x00000020, - GOPHER_TYPE_UNIX_UUENCODED = 0x00000040, - GOPHER_TYPE_INDEX_SERVER = 0x00000080, - GOPHER_TYPE_TELNET = 0x00000100, - GOPHER_TYPE_BINARY = 0x00000200, - GOPHER_TYPE_REDUNDANT = 0x00000400, - GOPHER_TYPE_TN3270 = 0x00000800, - GOPHER_TYPE_GIF = 0x00001000, - GOPHER_TYPE_IMAGE = 0x00002000, - GOPHER_TYPE_BITMAP = 0x00004000, - GOPHER_TYPE_MOVIE = 0x00008000, - GOPHER_TYPE_SOUND = 0x00010000, - GOPHER_TYPE_HTML = 0x00020000, - GOPHER_TYPE_PDF = 0x00040000, - GOPHER_TYPE_CALENDAR = 0x00080000, - GOPHER_TYPE_INLINE = 0x00100000, - GOPHER_TYPE_UNKNOWN = 0x20000000, - GOPHER_TYPE_ASK = 0x40000000, - GOPHER_TYPE_GOPHER_PLUS = 0x80000000, - GOPHER_TYPE_FILE_MASK = 0x001FF271; + GOPHER_TYPE_TEXT_FILE = 0x00000001, + GOPHER_TYPE_DIRECTORY = 0x00000002, + GOPHER_TYPE_CSO = 0x00000004, + GOPHER_TYPE_ERROR = 0x00000008, + GOPHER_TYPE_MAC_BINHEX = 0x00000010, + GOPHER_TYPE_DOS_ARCHIVE = 0x00000020, + GOPHER_TYPE_UNIX_UUENCODED = 0x00000040, + GOPHER_TYPE_INDEX_SERVER = 0x00000080, + GOPHER_TYPE_TELNET = 0x00000100, + GOPHER_TYPE_BINARY = 0x00000200, + GOPHER_TYPE_REDUNDANT = 0x00000400, + GOPHER_TYPE_TN3270 = 0x00000800, + GOPHER_TYPE_GIF = 0x00001000, + GOPHER_TYPE_IMAGE = 0x00002000, + GOPHER_TYPE_BITMAP = 0x00004000, + GOPHER_TYPE_MOVIE = 0x00008000, + GOPHER_TYPE_SOUND = 0x00010000, + GOPHER_TYPE_HTML = 0x00020000, + GOPHER_TYPE_PDF = 0x00040000, + GOPHER_TYPE_CALENDAR = 0x00080000, + GOPHER_TYPE_INLINE = 0x00100000, + GOPHER_TYPE_UNKNOWN = 0x20000000, + GOPHER_TYPE_ASK = 0x40000000, + GOPHER_TYPE_GOPHER_PLUS = 0x80000000, + GOPHER_TYPE_FILE_MASK = 0x001FF271; BOOL IS_GOPHER_FILE(DWORD t) { - return !!(t & GOPHER_TYPE_FILE_MASK); + return !!(t & GOPHER_TYPE_FILE_MASK); } BOOL IS_GOPHER_DIRECTORY(DWORD t) { - return !!(t & GOPHER_TYPE_DIRECTORY); + return !!(t & GOPHER_TYPE_DIRECTORY); } BOOL IS_GOPHER_PHONE_SERVER(DWORD t) { - return !!(t & GOPHER_TYPE_CSO); + return !!(t & GOPHER_TYPE_CSO); } BOOL IS_GOPHER_ERROR(DWORD t) { - return !!(t & GOPHER_TYPE_ERROR); + return !!(t & GOPHER_TYPE_ERROR); } BOOL IS_GOPHER_INDEX_SERVER(DWORD t) { - return !!(t & GOPHER_TYPE_INDEX_SERVER); + return !!(t & GOPHER_TYPE_INDEX_SERVER); } BOOL IS_GOPHER_TELNET_SESSION(DWORD t) { - return !!(t & GOPHER_TYPE_TELNET); + return !!(t & GOPHER_TYPE_TELNET); } BOOL IS_GOPHER_BACKUP_SERVER(DWORD t) { - return !!(t & GOPHER_TYPE_REDUNDANT); + return !!(t & GOPHER_TYPE_REDUNDANT); } BOOL IS_GOPHER_TN3270_SESSION(DWORD t) { - return !!(t & GOPHER_TYPE_TN3270); + return !!(t & GOPHER_TYPE_TN3270); } BOOL IS_GOPHER_ASK(DWORD t) { - return !!(t & GOPHER_TYPE_ASK); + return !!(t & GOPHER_TYPE_ASK); } BOOL IS_GOPHER_PLUS(DWORD t) { - return !!(t & GOPHER_TYPE_GOPHER_PLUS); + return !!(t & GOPHER_TYPE_GOPHER_PLUS); } BOOL IS_GOPHER_TYPE_KNOWN(DWORD t) { - return !(t & GOPHER_TYPE_UNKNOWN); + return !(t & GOPHER_TYPE_UNKNOWN); } const size_t - MAX_GOPHER_CATEGORY_NAME = 128, - MAX_GOPHER_ATTRIBUTE_NAME = 128, - MIN_GOPHER_ATTRIBUTE_LENGTH = 256; + MAX_GOPHER_CATEGORY_NAME = 128, + MAX_GOPHER_ATTRIBUTE_NAME = 128, + MIN_GOPHER_ATTRIBUTE_LENGTH = 256; const TCHAR[] - GOPHER_INFO_CATEGORY = "+INFO", - GOPHER_ADMIN_CATEGORY = "+ADMIN", - GOPHER_VIEWS_CATEGORY = "+VIEWS", - GOPHER_ABSTRACT_CATEGORY = "+ABSTRACT", - GOPHER_VERONICA_CATEGORY = "+VERONICA", - GOPHER_ADMIN_ATTRIBUTE = "Admin", - GOPHER_MOD_DATE_ATTRIBUTE = "Mod-Date", - GOPHER_TTL_ATTRIBUTE = "TTL", - GOPHER_SCORE_ATTRIBUTE = "Score", - GOPHER_RANGE_ATTRIBUTE = "Score-range", - GOPHER_SITE_ATTRIBUTE = "Site", - GOPHER_ORG_ATTRIBUTE = "Org", - GOPHER_LOCATION_ATTRIBUTE = "Loc", - GOPHER_GEOG_ATTRIBUTE = "Geog", - GOPHER_TIMEZONE_ATTRIBUTE = "TZ", - GOPHER_PROVIDER_ATTRIBUTE = "Provider", - GOPHER_VERSION_ATTRIBUTE = "Version", - GOPHER_ABSTRACT_ATTRIBUTE = "Abstract", - GOPHER_VIEW_ATTRIBUTE = "View", - GOPHER_TREEWALK_ATTRIBUTE = "treewalk"; + GOPHER_INFO_CATEGORY = "+INFO", + GOPHER_ADMIN_CATEGORY = "+ADMIN", + GOPHER_VIEWS_CATEGORY = "+VIEWS", + GOPHER_ABSTRACT_CATEGORY = "+ABSTRACT", + GOPHER_VERONICA_CATEGORY = "+VERONICA", + GOPHER_ADMIN_ATTRIBUTE = "Admin", + GOPHER_MOD_DATE_ATTRIBUTE = "Mod-Date", + GOPHER_TTL_ATTRIBUTE = "TTL", + GOPHER_SCORE_ATTRIBUTE = "Score", + GOPHER_RANGE_ATTRIBUTE = "Score-range", + GOPHER_SITE_ATTRIBUTE = "Site", + GOPHER_ORG_ATTRIBUTE = "Org", + GOPHER_LOCATION_ATTRIBUTE = "Loc", + GOPHER_GEOG_ATTRIBUTE = "Geog", + GOPHER_TIMEZONE_ATTRIBUTE = "TZ", + GOPHER_PROVIDER_ATTRIBUTE = "Provider", + GOPHER_VERSION_ATTRIBUTE = "Version", + GOPHER_ABSTRACT_ATTRIBUTE = "Abstract", + GOPHER_VIEW_ATTRIBUTE = "View", + GOPHER_TREEWALK_ATTRIBUTE = "treewalk"; enum : DWORD { - GOPHER_ATTRIBUTE_ID_BASE = 0xABCCCC00, - GOPHER_CATEGORY_ID_ALL, - GOPHER_CATEGORY_ID_INFO, - GOPHER_CATEGORY_ID_ADMIN, - GOPHER_CATEGORY_ID_VIEWS, - GOPHER_CATEGORY_ID_ABSTRACT, - GOPHER_CATEGORY_ID_VERONICA, - GOPHER_CATEGORY_ID_ASK, - GOPHER_CATEGORY_ID_UNKNOWN, - GOPHER_ATTRIBUTE_ID_ALL, - GOPHER_ATTRIBUTE_ID_ADMIN, - GOPHER_ATTRIBUTE_ID_MOD_DATE, - GOPHER_ATTRIBUTE_ID_TTL, - GOPHER_ATTRIBUTE_ID_SCORE, - GOPHER_ATTRIBUTE_ID_RANGE, - GOPHER_ATTRIBUTE_ID_SITE, - GOPHER_ATTRIBUTE_ID_ORG, - GOPHER_ATTRIBUTE_ID_LOCATION, - GOPHER_ATTRIBUTE_ID_GEOG, - GOPHER_ATTRIBUTE_ID_TIMEZONE, - GOPHER_ATTRIBUTE_ID_PROVIDER, - GOPHER_ATTRIBUTE_ID_VERSION, - GOPHER_ATTRIBUTE_ID_ABSTRACT, - GOPHER_ATTRIBUTE_ID_VIEW, - GOPHER_ATTRIBUTE_ID_TREEWALK, - GOPHER_ATTRIBUTE_ID_UNKNOWN + GOPHER_ATTRIBUTE_ID_BASE = 0xABCCCC00, + GOPHER_CATEGORY_ID_ALL, + GOPHER_CATEGORY_ID_INFO, + GOPHER_CATEGORY_ID_ADMIN, + GOPHER_CATEGORY_ID_VIEWS, + GOPHER_CATEGORY_ID_ABSTRACT, + GOPHER_CATEGORY_ID_VERONICA, + GOPHER_CATEGORY_ID_ASK, + GOPHER_CATEGORY_ID_UNKNOWN, + GOPHER_ATTRIBUTE_ID_ALL, + GOPHER_ATTRIBUTE_ID_ADMIN, + GOPHER_ATTRIBUTE_ID_MOD_DATE, + GOPHER_ATTRIBUTE_ID_TTL, + GOPHER_ATTRIBUTE_ID_SCORE, + GOPHER_ATTRIBUTE_ID_RANGE, + GOPHER_ATTRIBUTE_ID_SITE, + GOPHER_ATTRIBUTE_ID_ORG, + GOPHER_ATTRIBUTE_ID_LOCATION, + GOPHER_ATTRIBUTE_ID_GEOG, + GOPHER_ATTRIBUTE_ID_TIMEZONE, + GOPHER_ATTRIBUTE_ID_PROVIDER, + GOPHER_ATTRIBUTE_ID_VERSION, + GOPHER_ATTRIBUTE_ID_ABSTRACT, + GOPHER_ATTRIBUTE_ID_VIEW, + GOPHER_ATTRIBUTE_ID_TREEWALK, + GOPHER_ATTRIBUTE_ID_UNKNOWN } const HTTP_MAJOR_VERSION = 1; @@ -364,98 +364,98 @@ const HTTP_MINOR_VERSION = 0; const TCHAR[] HTTP_VERSION = "HTTP/1.0"; enum : DWORD { - HTTP_QUERY_MIME_VERSION, - HTTP_QUERY_CONTENT_TYPE, - HTTP_QUERY_CONTENT_TRANSFER_ENCODING, - HTTP_QUERY_CONTENT_ID, - HTTP_QUERY_CONTENT_DESCRIPTION, - HTTP_QUERY_CONTENT_LENGTH, - HTTP_QUERY_CONTENT_LANGUAGE, - HTTP_QUERY_ALLOW, - HTTP_QUERY_PUBLIC, - HTTP_QUERY_DATE, - HTTP_QUERY_EXPIRES, - HTTP_QUERY_LAST_MODIFIED, - HTTP_QUERY_MESSAGE_ID, - HTTP_QUERY_URI, - HTTP_QUERY_DERIVED_FROM, - HTTP_QUERY_COST, - HTTP_QUERY_LINK, - HTTP_QUERY_PRAGMA, - HTTP_QUERY_VERSION, - HTTP_QUERY_STATUS_CODE, - HTTP_QUERY_STATUS_TEXT, - HTTP_QUERY_RAW_HEADERS, - HTTP_QUERY_RAW_HEADERS_CRLF, - HTTP_QUERY_CONNECTION, - HTTP_QUERY_ACCEPT, - HTTP_QUERY_ACCEPT_CHARSET, - HTTP_QUERY_ACCEPT_ENCODING, - HTTP_QUERY_ACCEPT_LANGUAGE, - HTTP_QUERY_AUTHORIZATION, - HTTP_QUERY_CONTENT_ENCODING, - HTTP_QUERY_FORWARDED, - HTTP_QUERY_FROM, - HTTP_QUERY_IF_MODIFIED_SINCE, - HTTP_QUERY_LOCATION, - HTTP_QUERY_ORIG_URI, - HTTP_QUERY_REFERER, - HTTP_QUERY_RETRY_AFTER, - HTTP_QUERY_SERVER, - HTTP_QUERY_TITLE, - HTTP_QUERY_USER_AGENT, - HTTP_QUERY_WWW_AUTHENTICATE, - HTTP_QUERY_PROXY_AUTHENTICATE, - HTTP_QUERY_ACCEPT_RANGES, - HTTP_QUERY_SET_COOKIE, - HTTP_QUERY_COOKIE, - HTTP_QUERY_REQUEST_METHOD, - HTTP_QUERY_MAX = 45, - HTTP_QUERY_CUSTOM = 65535 + HTTP_QUERY_MIME_VERSION, + HTTP_QUERY_CONTENT_TYPE, + HTTP_QUERY_CONTENT_TRANSFER_ENCODING, + HTTP_QUERY_CONTENT_ID, + HTTP_QUERY_CONTENT_DESCRIPTION, + HTTP_QUERY_CONTENT_LENGTH, + HTTP_QUERY_CONTENT_LANGUAGE, + HTTP_QUERY_ALLOW, + HTTP_QUERY_PUBLIC, + HTTP_QUERY_DATE, + HTTP_QUERY_EXPIRES, + HTTP_QUERY_LAST_MODIFIED, + HTTP_QUERY_MESSAGE_ID, + HTTP_QUERY_URI, + HTTP_QUERY_DERIVED_FROM, + HTTP_QUERY_COST, + HTTP_QUERY_LINK, + HTTP_QUERY_PRAGMA, + HTTP_QUERY_VERSION, + HTTP_QUERY_STATUS_CODE, + HTTP_QUERY_STATUS_TEXT, + HTTP_QUERY_RAW_HEADERS, + HTTP_QUERY_RAW_HEADERS_CRLF, + HTTP_QUERY_CONNECTION, + HTTP_QUERY_ACCEPT, + HTTP_QUERY_ACCEPT_CHARSET, + HTTP_QUERY_ACCEPT_ENCODING, + HTTP_QUERY_ACCEPT_LANGUAGE, + HTTP_QUERY_AUTHORIZATION, + HTTP_QUERY_CONTENT_ENCODING, + HTTP_QUERY_FORWARDED, + HTTP_QUERY_FROM, + HTTP_QUERY_IF_MODIFIED_SINCE, + HTTP_QUERY_LOCATION, + HTTP_QUERY_ORIG_URI, + HTTP_QUERY_REFERER, + HTTP_QUERY_RETRY_AFTER, + HTTP_QUERY_SERVER, + HTTP_QUERY_TITLE, + HTTP_QUERY_USER_AGENT, + HTTP_QUERY_WWW_AUTHENTICATE, + HTTP_QUERY_PROXY_AUTHENTICATE, + HTTP_QUERY_ACCEPT_RANGES, + HTTP_QUERY_SET_COOKIE, + HTTP_QUERY_COOKIE, + HTTP_QUERY_REQUEST_METHOD, + HTTP_QUERY_MAX = 45, + HTTP_QUERY_CUSTOM = 65535 } const DWORD - HTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, - HTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, - HTTP_QUERY_FLAG_NUMBER = 0x20000000, - HTTP_QUERY_FLAG_COALESCE = 0x10000000, - HTTP_QUERY_MODIFIER_FLAGS_MASK = 0xF0000000, - HTTP_QUERY_HEADER_MASK = ~HTTP_QUERY_MODIFIER_FLAGS_MASK; + HTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, + HTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, + HTTP_QUERY_FLAG_NUMBER = 0x20000000, + HTTP_QUERY_FLAG_COALESCE = 0x10000000, + HTTP_QUERY_MODIFIER_FLAGS_MASK = 0xF0000000, + HTTP_QUERY_HEADER_MASK = ~HTTP_QUERY_MODIFIER_FLAGS_MASK; enum { - HTTP_STATUS_OK = 200, - HTTP_STATUS_CREATED, - HTTP_STATUS_ACCEPTED, - HTTP_STATUS_PARTIAL, - HTTP_STATUS_NO_CONTENT, // = 204 - HTTP_STATUS_AMBIGUOUS = 300, - HTTP_STATUS_MOVED, - HTTP_STATUS_REDIRECT, - HTTP_STATUS_REDIRECT_METHOD, - HTTP_STATUS_NOT_MODIFIED, // = 304 - HTTP_STATUS_BAD_REQUEST = 400, - HTTP_STATUS_DENIED, - HTTP_STATUS_PAYMENT_REQ, - HTTP_STATUS_FORBIDDEN, - HTTP_STATUS_NOT_FOUND, - HTTP_STATUS_BAD_METHOD, - HTTP_STATUS_NONE_ACCEPTABLE, - HTTP_STATUS_PROXY_AUTH_REQ, - HTTP_STATUS_REQUEST_TIMEOUT, - HTTP_STATUS_CONFLICT, - HTTP_STATUS_GONE, - HTTP_STATUS_AUTH_REFUSED, // = 411 - HTTP_STATUS_SERVER_ERROR = 500, - HTTP_STATUS_NOT_SUPPORTED, - HTTP_STATUS_BAD_GATEWAY, - HTTP_STATUS_SERVICE_UNAVAIL, - HTTP_STATUS_GATEWAY_TIMEOUT // = 504 + HTTP_STATUS_OK = 200, + HTTP_STATUS_CREATED, + HTTP_STATUS_ACCEPTED, + HTTP_STATUS_PARTIAL, + HTTP_STATUS_NO_CONTENT, // = 204 + HTTP_STATUS_AMBIGUOUS = 300, + HTTP_STATUS_MOVED, + HTTP_STATUS_REDIRECT, + HTTP_STATUS_REDIRECT_METHOD, + HTTP_STATUS_NOT_MODIFIED, // = 304 + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_DENIED, + HTTP_STATUS_PAYMENT_REQ, + HTTP_STATUS_FORBIDDEN, + HTTP_STATUS_NOT_FOUND, + HTTP_STATUS_BAD_METHOD, + HTTP_STATUS_NONE_ACCEPTABLE, + HTTP_STATUS_PROXY_AUTH_REQ, + HTTP_STATUS_REQUEST_TIMEOUT, + HTTP_STATUS_CONFLICT, + HTTP_STATUS_GONE, + HTTP_STATUS_AUTH_REFUSED, // = 411 + HTTP_STATUS_SERVER_ERROR = 500, + HTTP_STATUS_NOT_SUPPORTED, + HTTP_STATUS_BAD_GATEWAY, + HTTP_STATUS_SERVICE_UNAVAIL, + HTTP_STATUS_GATEWAY_TIMEOUT // = 504 } enum { - INTERNET_PREFETCH_PROGRESS, - INTERNET_PREFETCH_COMPLETE, - INTERNET_PREFETCH_ABORTED + INTERNET_PREFETCH_PROGRESS, + INTERNET_PREFETCH_COMPLETE, + INTERNET_PREFETCH_ABORTED } const FLAGS_ERROR_UI_FILTER_FOR_ERRORS = 0x01; @@ -464,89 +464,89 @@ const FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = 0x04; const FLAGS_ERROR_UI_FLAGS_NO_UI = 0x08; const DWORD - HTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, - HTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, - HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, - HTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, - HTTP_ADDREQ_FLAG_ADD = 0x20000000, - HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, - HTTP_ADDREQ_FLAG_COALESCE = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, - HTTP_ADDREQ_FLAG_REPLACE = 0x80000000; + HTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, + HTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, + HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, + HTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, + HTTP_ADDREQ_FLAG_ADD = 0x20000000, + HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, + HTTP_ADDREQ_FLAG_COALESCE = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, + HTTP_ADDREQ_FLAG_REPLACE = 0x80000000; enum { - INTERNET_ERROR_BASE = 12000, - ERROR_INTERNET_OUT_OF_HANDLES, - ERROR_INTERNET_TIMEOUT, - ERROR_INTERNET_EXTENDED_ERROR, - ERROR_INTERNET_INTERNAL_ERROR, - ERROR_INTERNET_INVALID_URL, - ERROR_INTERNET_UNRECOGNIZED_SCHEME, - ERROR_INTERNET_NAME_NOT_RESOLVED, - ERROR_INTERNET_PROTOCOL_NOT_FOUND, - ERROR_INTERNET_INVALID_OPTION, - ERROR_INTERNET_BAD_OPTION_LENGTH, - ERROR_INTERNET_OPTION_NOT_SETTABLE, - ERROR_INTERNET_SHUTDOWN, - ERROR_INTERNET_INCORRECT_USER_NAME, - ERROR_INTERNET_INCORRECT_PASSWORD, - ERROR_INTERNET_LOGIN_FAILURE, - ERROR_INTERNET_INVALID_OPERATION, - ERROR_INTERNET_OPERATION_CANCELLED, - ERROR_INTERNET_INCORRECT_HANDLE_TYPE, - ERROR_INTERNET_INCORRECT_HANDLE_STATE, - ERROR_INTERNET_NOT_PROXY_REQUEST, - ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND, - ERROR_INTERNET_BAD_REGISTRY_PARAMETER, - ERROR_INTERNET_NO_DIRECT_ACCESS, - ERROR_INTERNET_NO_CONTEXT, - ERROR_INTERNET_NO_CALLBACK, - ERROR_INTERNET_REQUEST_PENDING, - ERROR_INTERNET_INCORRECT_FORMAT, - ERROR_INTERNET_ITEM_NOT_FOUND, - ERROR_INTERNET_CANNOT_CONNECT, - ERROR_INTERNET_CONNECTION_ABORTED, - ERROR_INTERNET_CONNECTION_RESET, - ERROR_INTERNET_FORCE_RETRY, - ERROR_INTERNET_INVALID_PROXY_REQUEST, - ERROR_INTERNET_NEED_UI, // = INTERNET_ERROR_BASE + 34 - ERROR_INTERNET_HANDLE_EXISTS = INTERNET_ERROR_BASE + 36, - ERROR_INTERNET_SEC_CERT_DATE_INVALID, - ERROR_INTERNET_SEC_CERT_CN_INVALID, - ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR, - ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR, - ERROR_INTERNET_MIXED_SECURITY, - ERROR_INTERNET_CHG_POST_IS_NON_SECURE, - ERROR_INTERNET_POST_IS_NON_SECURE, - ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED, - ERROR_INTERNET_INVALID_CA, - ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP, - ERROR_INTERNET_ASYNC_THREAD_FAILED, - ERROR_INTERNET_REDIRECT_SCHEME_CHANGE, // = INTERNET_ERROR_BASE + 48 - - ERROR_FTP_TRANSFER_IN_PROGRESS = INTERNET_ERROR_BASE + 110, - ERROR_FTP_DROPPED, // = INTERNET_ERROR_BASE + 111 - ERROR_GOPHER_PROTOCOL_ERROR = INTERNET_ERROR_BASE + 130, - ERROR_GOPHER_NOT_FILE, - ERROR_GOPHER_DATA_ERROR, - ERROR_GOPHER_END_OF_DATA, - ERROR_GOPHER_INVALID_LOCATOR, - ERROR_GOPHER_INCORRECT_LOCATOR_TYPE, - ERROR_GOPHER_NOT_GOPHER_PLUS, - ERROR_GOPHER_ATTRIBUTE_NOT_FOUND, - ERROR_GOPHER_UNKNOWN_LOCATOR, // = INTERNET_ERROR_BASE + 138, - ERROR_HTTP_HEADER_NOT_FOUND = INTERNET_ERROR_BASE + 150, - ERROR_HTTP_DOWNLEVEL_SERVER, - ERROR_HTTP_INVALID_SERVER_RESPONSE, - ERROR_HTTP_INVALID_HEADER, - ERROR_HTTP_INVALID_QUERY_REQUEST, - ERROR_HTTP_HEADER_ALREADY_EXISTS, - ERROR_HTTP_REDIRECT_FAILED, - ERROR_INTERNET_SECURITY_CHANNEL_ERROR, - ERROR_INTERNET_UNABLE_TO_CACHE_FILE, - ERROR_INTERNET_TCPIP_NOT_INSTALLED, - ERROR_HTTP_NOT_REDIRECTED, // = INTERNET_ERROR_BASE + 160 - // why? - INTERNET_ERROR_LAST = ERROR_INTERNET_TCPIP_NOT_INSTALLED + INTERNET_ERROR_BASE = 12000, + ERROR_INTERNET_OUT_OF_HANDLES, + ERROR_INTERNET_TIMEOUT, + ERROR_INTERNET_EXTENDED_ERROR, + ERROR_INTERNET_INTERNAL_ERROR, + ERROR_INTERNET_INVALID_URL, + ERROR_INTERNET_UNRECOGNIZED_SCHEME, + ERROR_INTERNET_NAME_NOT_RESOLVED, + ERROR_INTERNET_PROTOCOL_NOT_FOUND, + ERROR_INTERNET_INVALID_OPTION, + ERROR_INTERNET_BAD_OPTION_LENGTH, + ERROR_INTERNET_OPTION_NOT_SETTABLE, + ERROR_INTERNET_SHUTDOWN, + ERROR_INTERNET_INCORRECT_USER_NAME, + ERROR_INTERNET_INCORRECT_PASSWORD, + ERROR_INTERNET_LOGIN_FAILURE, + ERROR_INTERNET_INVALID_OPERATION, + ERROR_INTERNET_OPERATION_CANCELLED, + ERROR_INTERNET_INCORRECT_HANDLE_TYPE, + ERROR_INTERNET_INCORRECT_HANDLE_STATE, + ERROR_INTERNET_NOT_PROXY_REQUEST, + ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND, + ERROR_INTERNET_BAD_REGISTRY_PARAMETER, + ERROR_INTERNET_NO_DIRECT_ACCESS, + ERROR_INTERNET_NO_CONTEXT, + ERROR_INTERNET_NO_CALLBACK, + ERROR_INTERNET_REQUEST_PENDING, + ERROR_INTERNET_INCORRECT_FORMAT, + ERROR_INTERNET_ITEM_NOT_FOUND, + ERROR_INTERNET_CANNOT_CONNECT, + ERROR_INTERNET_CONNECTION_ABORTED, + ERROR_INTERNET_CONNECTION_RESET, + ERROR_INTERNET_FORCE_RETRY, + ERROR_INTERNET_INVALID_PROXY_REQUEST, + ERROR_INTERNET_NEED_UI, // = INTERNET_ERROR_BASE + 34 + ERROR_INTERNET_HANDLE_EXISTS = INTERNET_ERROR_BASE + 36, + ERROR_INTERNET_SEC_CERT_DATE_INVALID, + ERROR_INTERNET_SEC_CERT_CN_INVALID, + ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR, + ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR, + ERROR_INTERNET_MIXED_SECURITY, + ERROR_INTERNET_CHG_POST_IS_NON_SECURE, + ERROR_INTERNET_POST_IS_NON_SECURE, + ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED, + ERROR_INTERNET_INVALID_CA, + ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP, + ERROR_INTERNET_ASYNC_THREAD_FAILED, + ERROR_INTERNET_REDIRECT_SCHEME_CHANGE, // = INTERNET_ERROR_BASE + 48 + + ERROR_FTP_TRANSFER_IN_PROGRESS = INTERNET_ERROR_BASE + 110, + ERROR_FTP_DROPPED, // = INTERNET_ERROR_BASE + 111 + ERROR_GOPHER_PROTOCOL_ERROR = INTERNET_ERROR_BASE + 130, + ERROR_GOPHER_NOT_FILE, + ERROR_GOPHER_DATA_ERROR, + ERROR_GOPHER_END_OF_DATA, + ERROR_GOPHER_INVALID_LOCATOR, + ERROR_GOPHER_INCORRECT_LOCATOR_TYPE, + ERROR_GOPHER_NOT_GOPHER_PLUS, + ERROR_GOPHER_ATTRIBUTE_NOT_FOUND, + ERROR_GOPHER_UNKNOWN_LOCATOR, // = INTERNET_ERROR_BASE + 138, + ERROR_HTTP_HEADER_NOT_FOUND = INTERNET_ERROR_BASE + 150, + ERROR_HTTP_DOWNLEVEL_SERVER, + ERROR_HTTP_INVALID_SERVER_RESPONSE, + ERROR_HTTP_INVALID_HEADER, + ERROR_HTTP_INVALID_QUERY_REQUEST, + ERROR_HTTP_HEADER_ALREADY_EXISTS, + ERROR_HTTP_REDIRECT_FAILED, + ERROR_INTERNET_SECURITY_CHANNEL_ERROR, + ERROR_INTERNET_UNABLE_TO_CACHE_FILE, + ERROR_INTERNET_TCPIP_NOT_INSTALLED, + ERROR_HTTP_NOT_REDIRECTED, // = INTERNET_ERROR_BASE + 160 + // why? + INTERNET_ERROR_LAST = ERROR_INTERNET_TCPIP_NOT_INSTALLED } @@ -567,23 +567,23 @@ const CACHE_ENTRY_SYNCTIME_FC = 0x0200; const CACHE_ENTRY_HEADERINFO_FC = 0x0400; enum { - WININET_API_FLAG_ASYNC = 1, - WININET_API_FLAG_SYNC = 4, - WININET_API_FLAG_USE_CONTEXT = 8 + WININET_API_FLAG_ASYNC = 1, + WININET_API_FLAG_SYNC = 4, + WININET_API_FLAG_USE_CONTEXT = 8 } // FIXME: how should these really be grouped? enum { - IRF_ASYNC = WININET_API_FLAG_ASYNC, - IRF_SYNC = WININET_API_FLAG_SYNC, - IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, + IRF_ASYNC = WININET_API_FLAG_ASYNC, + IRF_SYNC = WININET_API_FLAG_SYNC, + IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, } const IRF_NO_WAIT = 8; enum { - HSR_ASYNC = WININET_API_FLAG_ASYNC, - HSR_SYNC = WININET_API_FLAG_SYNC, - HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, + HSR_ASYNC = WININET_API_FLAG_ASYNC, + HSR_SYNC = WININET_API_FLAG_SYNC, + HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, } const HSR_INITIATE = 8; @@ -606,19 +606,19 @@ const INTERNET_CONNECTION_OFFLINE = 0x20; const INTERNET_CONNECTION_CONFIGURED = 0x40; enum { - CACHEGROUP_SEARCH_ALL = 0, - CACHEGROUP_SEARCH_BYURL = 1 + CACHEGROUP_SEARCH_ALL = 0, + CACHEGROUP_SEARCH_BYURL = 1 } enum { - INTERNET_CACHE_GROUP_ADD = 0, - INTERNET_CACHE_GROUP_REMOVE = 1 + INTERNET_CACHE_GROUP_ADD = 0, + INTERNET_CACHE_GROUP_REMOVE = 1 } mixin DECLARE_HANDLE!("HINTERNET"); // doesn't work - bug /*struct HINTERNET { - HANDLE h; - alias h this; + HANDLE h; + alias h this; }*/ alias HINTERNET* LPHINTERNET; @@ -627,94 +627,94 @@ alias WORD INTERNET_PORT; alias WORD* LPINTERNET_PORT; enum INTERNET_SCHEME { - INTERNET_SCHEME_PARTIAL = -2, - INTERNET_SCHEME_UNKNOWN, - INTERNET_SCHEME_DEFAULT, - INTERNET_SCHEME_FTP, - INTERNET_SCHEME_GOPHER, - INTERNET_SCHEME_HTTP, - INTERNET_SCHEME_HTTPS, - INTERNET_SCHEME_FILE, - INTERNET_SCHEME_NEWS, - INTERNET_SCHEME_MAILTO, - INTERNET_SCHEME_SOCKS, - INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, - INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS + INTERNET_SCHEME_PARTIAL = -2, + INTERNET_SCHEME_UNKNOWN, + INTERNET_SCHEME_DEFAULT, + INTERNET_SCHEME_FTP, + INTERNET_SCHEME_GOPHER, + INTERNET_SCHEME_HTTP, + INTERNET_SCHEME_HTTPS, + INTERNET_SCHEME_FILE, + INTERNET_SCHEME_NEWS, + INTERNET_SCHEME_MAILTO, + INTERNET_SCHEME_SOCKS, + INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, + INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS } alias INTERNET_SCHEME* LPINTERNET_SCHEME; struct INTERNET_ASYNC_RESULT { - DWORD dwResult; - DWORD dwError; + DWORD dwResult; + DWORD dwError; } alias INTERNET_ASYNC_RESULT* LPINTERNET_ASYNC_RESULT; struct INTERNET_PREFETCH_STATUS { - DWORD dwStatus; - DWORD dwSize; + DWORD dwStatus; + DWORD dwSize; } alias INTERNET_PREFETCH_STATUS* LPINTERNET_PREFETCH_STATUS; struct INTERNET_PROXY_INFO { - DWORD dwAccessType; - LPCTSTR lpszProxy; - LPCTSTR lpszProxyBypass; + DWORD dwAccessType; + LPCTSTR lpszProxy; + LPCTSTR lpszProxyBypass; } alias INTERNET_PROXY_INFO* LPINTERNET_PROXY_INFO; struct INTERNET_VERSION_INFO { - DWORD dwMajorVersion; - DWORD dwMinorVersion; + DWORD dwMajorVersion; + DWORD dwMinorVersion; } alias INTERNET_VERSION_INFO* LPINTERNET_VERSION_INFO; struct URL_COMPONENTSA { - DWORD dwStructSize = URL_COMPONENTSA.sizeof; - LPSTR lpszScheme; - DWORD dwSchemeLength; - INTERNET_SCHEME nScheme; - LPSTR lpszHostName; - DWORD dwHostNameLength; - INTERNET_PORT nPort; - LPSTR lpszUserName; - DWORD dwUserNameLength; - LPSTR lpszPassword; - DWORD dwPasswordLength; - LPSTR lpszUrlPath; - DWORD dwUrlPathLength; - LPSTR lpszExtraInfo; - DWORD dwExtraInfoLength; + DWORD dwStructSize = URL_COMPONENTSA.sizeof; + LPSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPSTR lpszUserName; + DWORD dwUserNameLength; + LPSTR lpszPassword; + DWORD dwPasswordLength; + LPSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPSTR lpszExtraInfo; + DWORD dwExtraInfoLength; } alias URL_COMPONENTSA* LPURL_COMPONENTSA; struct URL_COMPONENTSW { - DWORD dwStructSize = URL_COMPONENTSW.sizeof; - LPWSTR lpszScheme; - DWORD dwSchemeLength; - INTERNET_SCHEME nScheme; - LPWSTR lpszHostName; - DWORD dwHostNameLength; - INTERNET_PORT nPort; - LPWSTR lpszUserName; - DWORD dwUserNameLength; - LPWSTR lpszPassword; - DWORD dwPasswordLength; - LPWSTR lpszUrlPath; - DWORD dwUrlPathLength; - LPWSTR lpszExtraInfo; - DWORD dwExtraInfoLength; + DWORD dwStructSize = URL_COMPONENTSW.sizeof; + LPWSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPWSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPWSTR lpszUserName; + DWORD dwUserNameLength; + LPWSTR lpszPassword; + DWORD dwPasswordLength; + LPWSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPWSTR lpszExtraInfo; + DWORD dwExtraInfoLength; } alias URL_COMPONENTSW* LPURL_COMPONENTSW; struct INTERNET_CERTIFICATE_INFO { - FILETIME ftExpiry; - FILETIME ftStart; - LPTSTR lpszSubjectInfo; - LPTSTR lpszIssuerInfo; - LPTSTR lpszProtocolName; - LPTSTR lpszSignatureAlgName; - LPTSTR lpszEncryptionAlgName; - DWORD dwKeySize; + FILETIME ftExpiry; + FILETIME ftStart; + LPTSTR lpszSubjectInfo; + LPTSTR lpszIssuerInfo; + LPTSTR lpszProtocolName; + LPTSTR lpszSignatureAlgName; + LPTSTR lpszEncryptionAlgName; + DWORD dwKeySize; } alias INTERNET_CERTIFICATE_INFO* LPINTERNET_CERTIFICATE_INFO; @@ -726,144 +726,144 @@ const INTERNET_INVALID_STATUS_CALLBACK = cast(INTERNET_STATUS_CALLBACK) -1; struct GOPHER_FIND_DATAA { - CHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; - DWORD GopherType; - DWORD SizeLow; - DWORD SizeHigh; - FILETIME LastModificationTime; - CHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; + CHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; + DWORD GopherType; + DWORD SizeLow; + DWORD SizeHigh; + FILETIME LastModificationTime; + CHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; } alias GOPHER_FIND_DATAA* LPGOPHER_FIND_DATAA; struct GOPHER_FIND_DATAW { - WCHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; - DWORD GopherType; - DWORD SizeLow; - DWORD SizeHigh; - FILETIME LastModificationTime; - WCHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; + WCHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; + DWORD GopherType; + DWORD SizeLow; + DWORD SizeHigh; + FILETIME LastModificationTime; + WCHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; } alias GOPHER_FIND_DATAW* LPGOPHER_FIND_DATAW; struct GOPHER_ADMIN_ATTRIBUTE_TYPE { - LPCTSTR Comment; - LPCTSTR EmailAddress; + LPCTSTR Comment; + LPCTSTR EmailAddress; } alias GOPHER_ADMIN_ATTRIBUTE_TYPE* LPGOPHER_ADMIN_ATTRIBUTE_TYPE; struct GOPHER_MOD_DATE_ATTRIBUTE_TYPE { - FILETIME DateAndTime; + FILETIME DateAndTime; } alias GOPHER_MOD_DATE_ATTRIBUTE_TYPE* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE; struct GOPHER_TTL_ATTRIBUTE_TYPE { - DWORD Ttl; + DWORD Ttl; } alias GOPHER_TTL_ATTRIBUTE_TYPE* LPGOPHER_TTL_ATTRIBUTE_TYPE; struct GOPHER_SCORE_ATTRIBUTE_TYPE { - INT Score; + INT Score; } alias GOPHER_SCORE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_ATTRIBUTE_TYPE; struct GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE { - INT LowerBound; - INT UpperBound; + INT LowerBound; + INT UpperBound; } alias GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE; struct GOPHER_SITE_ATTRIBUTE_TYPE { - LPCTSTR Site; + LPCTSTR Site; } alias GOPHER_SITE_ATTRIBUTE_TYPE* LPGOPHER_SITE_ATTRIBUTE_TYPE; struct GOPHER_ORGANIZATION_ATTRIBUTE_TYPE { - LPCTSTR Organization; + LPCTSTR Organization; } alias GOPHER_ORGANIZATION_ATTRIBUTE_TYPE* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE; struct GOPHER_LOCATION_ATTRIBUTE_TYPE { - LPCTSTR Location; + LPCTSTR Location; } alias GOPHER_LOCATION_ATTRIBUTE_TYPE* LPGOPHER_LOCATION_ATTRIBUTE_TYPE; struct GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE { - INT DegreesNorth; - INT MinutesNorth; - INT SecondsNorth; - INT DegreesEast; - INT MinutesEast; - INT SecondsEast; + INT DegreesNorth; + INT MinutesNorth; + INT SecondsNorth; + INT DegreesEast; + INT MinutesEast; + INT SecondsEast; } alias GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE* LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE; struct GOPHER_TIMEZONE_ATTRIBUTE_TYPE { - INT Zone; + INT Zone; } alias GOPHER_TIMEZONE_ATTRIBUTE_TYPE* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE; struct GOPHER_PROVIDER_ATTRIBUTE_TYPE { - LPCTSTR Provider; + LPCTSTR Provider; } alias GOPHER_PROVIDER_ATTRIBUTE_TYPE* LPGOPHER_PROVIDER_ATTRIBUTE_TYPE; struct GOPHER_VERSION_ATTRIBUTE_TYPE { - LPCTSTR Version; + LPCTSTR Version; } alias GOPHER_VERSION_ATTRIBUTE_TYPE* LPGOPHER_VERSION_ATTRIBUTE_TYPE; struct GOPHER_ABSTRACT_ATTRIBUTE_TYPE { - LPCTSTR ShortAbstract; - LPCTSTR AbstractFile; + LPCTSTR ShortAbstract; + LPCTSTR AbstractFile; } alias GOPHER_ABSTRACT_ATTRIBUTE_TYPE* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE; struct GOPHER_VIEW_ATTRIBUTE_TYPE { - LPCTSTR ContentType; - LPCTSTR Language; - DWORD Size; + LPCTSTR ContentType; + LPCTSTR Language; + DWORD Size; } alias GOPHER_VIEW_ATTRIBUTE_TYPE* LPGOPHER_VIEW_ATTRIBUTE_TYPE; struct GOPHER_VERONICA_ATTRIBUTE_TYPE { - BOOL TreeWalk; + BOOL TreeWalk; } alias GOPHER_VERONICA_ATTRIBUTE_TYPE* LPGOPHER_VERONICA_ATTRIBUTE_TYPE; struct GOPHER_ASK_ATTRIBUTE_TYPE { - LPCTSTR QuestionType; - LPCTSTR QuestionText; + LPCTSTR QuestionType; + LPCTSTR QuestionText; } alias GOPHER_ASK_ATTRIBUTE_TYPE* LPGOPHER_ASK_ATTRIBUTE_TYPE; struct GOPHER_UNKNOWN_ATTRIBUTE_TYPE { - LPCTSTR Text; + LPCTSTR Text; } alias GOPHER_UNKNOWN_ATTRIBUTE_TYPE* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE; struct GOPHER_ATTRIBUTE_TYPE { - DWORD CategoryId; - DWORD AttributeId; - union { - GOPHER_ADMIN_ATTRIBUTE_TYPE Admin; - GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate; - GOPHER_TTL_ATTRIBUTE_TYPE Ttl; - GOPHER_SCORE_ATTRIBUTE_TYPE Score; - GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange; - GOPHER_SITE_ATTRIBUTE_TYPE Site; - GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization; - GOPHER_LOCATION_ATTRIBUTE_TYPE Location; - GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation; - GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone; - GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider; - GOPHER_VERSION_ATTRIBUTE_TYPE Version; - GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract; - GOPHER_VIEW_ATTRIBUTE_TYPE View; - GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica; - GOPHER_ASK_ATTRIBUTE_TYPE Ask; - GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown; - } /+AttributeType;+/ + DWORD CategoryId; + DWORD AttributeId; + union { + GOPHER_ADMIN_ATTRIBUTE_TYPE Admin; + GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate; + GOPHER_TTL_ATTRIBUTE_TYPE Ttl; + GOPHER_SCORE_ATTRIBUTE_TYPE Score; + GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange; + GOPHER_SITE_ATTRIBUTE_TYPE Site; + GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization; + GOPHER_LOCATION_ATTRIBUTE_TYPE Location; + GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation; + GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone; + GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider; + GOPHER_VERSION_ATTRIBUTE_TYPE Version; + GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract; + GOPHER_VIEW_ATTRIBUTE_TYPE View; + GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica; + GOPHER_ASK_ATTRIBUTE_TYPE Ask; + GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown; + } /+AttributeType;+/ } alias GOPHER_ATTRIBUTE_TYPE* LPGOPHER_ATTRIBUTE_TYPE; @@ -871,375 +871,375 @@ alias BOOL function(LPGOPHER_ATTRIBUTE_TYPE, DWORD) GOPHER_ATTRIBUTE_ENUMERATOR; struct INTERNET_CACHE_ENTRY_INFOA { - DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOA.sizeof; - LPSTR lpszSourceUrlName; - LPSTR lpszLocalFileName; - DWORD CacheEntryType; - DWORD dwUseCount; - DWORD dwHitRate; - DWORD dwSizeLow; - DWORD dwSizeHigh; - FILETIME LastModifiedTime; - FILETIME ExpireTime; - FILETIME LastAccessTime; - FILETIME LastSyncTime; - PBYTE lpHeaderInfo; - DWORD dwHeaderInfoSize; - LPSTR lpszFileExtension; - DWORD dwReserved; + DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOA.sizeof; + LPSTR lpszSourceUrlName; + LPSTR lpszLocalFileName; + DWORD CacheEntryType; + DWORD dwUseCount; + DWORD dwHitRate; + DWORD dwSizeLow; + DWORD dwSizeHigh; + FILETIME LastModifiedTime; + FILETIME ExpireTime; + FILETIME LastAccessTime; + FILETIME LastSyncTime; + PBYTE lpHeaderInfo; + DWORD dwHeaderInfoSize; + LPSTR lpszFileExtension; + DWORD dwReserved; } alias INTERNET_CACHE_ENTRY_INFOA* LPINTERNET_CACHE_ENTRY_INFOA; struct INTERNET_CACHE_ENTRY_INFOW { - DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOW.sizeof; - LPWSTR lpszSourceUrlName; - LPWSTR lpszLocalFileName; - DWORD CacheEntryType; - DWORD dwUseCount; - DWORD dwHitRate; - DWORD dwSizeLow; - DWORD dwSizeHigh; - FILETIME LastModifiedTime; - FILETIME ExpireTime; - FILETIME LastAccessTime; - FILETIME LastSyncTime; - PBYTE lpHeaderInfo; - DWORD dwHeaderInfoSize; - LPWSTR lpszFileExtension; - DWORD dwReserved; + DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOW.sizeof; + LPWSTR lpszSourceUrlName; + LPWSTR lpszLocalFileName; + DWORD CacheEntryType; + DWORD dwUseCount; + DWORD dwHitRate; + DWORD dwSizeLow; + DWORD dwSizeHigh; + FILETIME LastModifiedTime; + FILETIME ExpireTime; + FILETIME LastAccessTime; + FILETIME LastSyncTime; + PBYTE lpHeaderInfo; + DWORD dwHeaderInfoSize; + LPWSTR lpszFileExtension; + DWORD dwReserved; } alias INTERNET_CACHE_ENTRY_INFOW* LPINTERNET_CACHE_ENTRY_INFOW; struct INTERNET_BUFFERSA { - DWORD dwStructSize = INTERNET_BUFFERSA.sizeof; - INTERNET_BUFFERSA* Next; - LPCSTR lpcszHeader; - DWORD dwHeadersLength; - DWORD dwHeadersTotal; - LPVOID lpvBuffer; - DWORD dwBufferLength; - DWORD dwBufferTotal; - DWORD dwOffsetLow; - DWORD dwOffsetHigh; + DWORD dwStructSize = INTERNET_BUFFERSA.sizeof; + INTERNET_BUFFERSA* Next; + LPCSTR lpcszHeader; + DWORD dwHeadersLength; + DWORD dwHeadersTotal; + LPVOID lpvBuffer; + DWORD dwBufferLength; + DWORD dwBufferTotal; + DWORD dwOffsetLow; + DWORD dwOffsetHigh; } alias INTERNET_BUFFERSA* LPINTERNET_BUFFERSA; struct INTERNET_BUFFERSW { - DWORD dwStructSize = INTERNET_BUFFERSW.sizeof; - INTERNET_BUFFERSW* Next; - LPCWSTR lpcszHeader; - DWORD dwHeadersLength; - DWORD dwHeadersTotal; - LPVOID lpvBuffer; - DWORD dwBufferLength; - DWORD dwBufferTotal; - DWORD dwOffsetLow; - DWORD dwOffsetHigh; + DWORD dwStructSize = INTERNET_BUFFERSW.sizeof; + INTERNET_BUFFERSW* Next; + LPCWSTR lpcszHeader; + DWORD dwHeadersLength; + DWORD dwHeadersTotal; + LPVOID lpvBuffer; + DWORD dwBufferLength; + DWORD dwBufferTotal; + DWORD dwOffsetLow; + DWORD dwOffsetHigh; } alias INTERNET_BUFFERSW* LPINTERNET_BUFFERSW; const size_t - GROUP_OWNER_STORAGE_SIZE = 4, - GROUPNAME_MAX_LENGTH = 120; + GROUP_OWNER_STORAGE_SIZE = 4, + GROUPNAME_MAX_LENGTH = 120; struct INTERNET_CACHE_GROUP_INFOA { - DWORD dwGroupSize; - DWORD dwGroupFlags; - DWORD dwGroupType; - DWORD dwDiskUsage; - DWORD dwDiskQuota; - DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; - CHAR[GROUPNAME_MAX_LENGTH] szGroupName; + DWORD dwGroupSize; + DWORD dwGroupFlags; + DWORD dwGroupType; + DWORD dwDiskUsage; + DWORD dwDiskQuota; + DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; + CHAR[GROUPNAME_MAX_LENGTH] szGroupName; } alias INTERNET_CACHE_GROUP_INFOA* LPINTERNET_CACHE_GROUP_INFOA; struct INTERNET_CACHE_GROUP_INFOW { - DWORD dwGroupSize; - DWORD dwGroupFlags; - DWORD dwGroupType; - DWORD dwDiskUsage; - DWORD dwDiskQuota; - DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; - WCHAR[GROUPNAME_MAX_LENGTH] szGroupName; + DWORD dwGroupSize; + DWORD dwGroupFlags; + DWORD dwGroupType; + DWORD dwDiskUsage; + DWORD dwDiskQuota; + DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; + WCHAR[GROUPNAME_MAX_LENGTH] szGroupName; } alias INTERNET_CACHE_GROUP_INFOW* LPINTERNET_CACHE_GROUP_INFOW; extern (Windows) { - BOOL InternetTimeFromSystemTime(SYSTEMTIME*, DWORD, LPSTR, DWORD); - BOOL InternetTimeToSystemTime(LPCSTR, SYSTEMTIME*, DWORD); - BOOL InternetDebugGetLocalTime(SYSTEMTIME*, PDWORD); - BOOL InternetCrackUrlA(LPCSTR, DWORD, DWORD, LPURL_COMPONENTSA); - BOOL InternetCrackUrlW(LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW); - BOOL InternetCreateUrlA(LPURL_COMPONENTSA, DWORD, LPSTR, PDWORD); - BOOL InternetCreateUrlW(LPURL_COMPONENTSW, DWORD, LPWSTR, PDWORD); - BOOL InternetCanonicalizeUrlA(LPCSTR, LPSTR, PDWORD, DWORD); - BOOL InternetCanonicalizeUrlW(LPCWSTR, LPWSTR, PDWORD, DWORD); - BOOL InternetCheckConnectionA(LPCSTR, DWORD, DWORD); - BOOL InternetCheckConnectionW(LPCWSTR, DWORD, DWORD); - BOOL InternetCombineUrlA(LPCSTR, LPCSTR, LPSTR, PDWORD, DWORD); - BOOL InternetCombineUrlW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, DWORD); - HINTERNET InternetOpenA(LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD); - HINTERNET InternetOpenW(LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD); - BOOL InternetCloseHandle(HINTERNET); - HINTERNET InternetConnectA(HINTERNET, LPCSTR, INTERNET_PORT, LPCSTR, - LPCSTR, DWORD, DWORD, DWORD); - HINTERNET InternetConnectW(HINTERNET, LPCWSTR, INTERNET_PORT, LPCWSTR, - LPCWSTR, DWORD, DWORD, DWORD); - HINTERNET InternetOpenUrlA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD, - DWORD); - HINTERNET InternetOpenUrlW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD, - DWORD); - BOOL InternetReadFile(HINTERNET, PVOID, DWORD, PDWORD); - DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD); - BOOL InternetWriteFile(HINTERNET, LPCVOID, DWORD, PDWORD); - BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD); - BOOL InternetFindNextFileA(HINTERNET, PVOID); - BOOL InternetFindNextFileW(HINTERNET, PVOID); - BOOL InternetQueryOptionA(HINTERNET, DWORD, PVOID, PDWORD); - BOOL InternetQueryOptionW(HINTERNET, DWORD, PVOID, PDWORD); - BOOL InternetSetOptionA(HINTERNET, DWORD, PVOID, DWORD); - BOOL InternetSetOptionW(HINTERNET, DWORD, PVOID, DWORD); - BOOL InternetSetOptionExA(HINTERNET, DWORD, PVOID, DWORD, DWORD); - BOOL InternetSetOptionExW(HINTERNET, DWORD, PVOID, DWORD, DWORD); - BOOL InternetGetLastResponseInfoA(PDWORD, LPSTR, PDWORD); - BOOL InternetGetLastResponseInfoW(PDWORD, LPWSTR, PDWORD); - INTERNET_STATUS_CALLBACK InternetSetStatusCallback(HINTERNET, - INTERNET_STATUS_CALLBACK); - DWORD FtpGetFileSize(HINTERNET, LPDWORD); - HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATA, DWORD, - DWORD); - HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATA, DWORD, - DWORD); - BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD); - BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD); - BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); - BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); - BOOL FtpDeleteFileA(HINTERNET, LPCSTR); - BOOL FtpDeleteFileW(HINTERNET, LPCWSTR); - BOOL FtpRenameFileA(HINTERNET, LPCSTR, LPCSTR); - BOOL FtpRenameFileW(HINTERNET, LPCWSTR, LPCWSTR); - HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD); - HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD); - BOOL FtpCreateDirectoryA(HINTERNET, LPCSTR); - BOOL FtpCreateDirectoryW(HINTERNET, LPCWSTR); - BOOL FtpRemoveDirectoryA(HINTERNET, LPCSTR); - BOOL FtpRemoveDirectoryW(HINTERNET, LPCWSTR); - BOOL FtpSetCurrentDirectoryA(HINTERNET, LPCSTR); - BOOL FtpSetCurrentDirectoryW(HINTERNET, LPCWSTR); - BOOL FtpGetCurrentDirectoryA(HINTERNET, LPSTR, PDWORD); - BOOL FtpGetCurrentDirectoryW(HINTERNET, LPWSTR, PDWORD); - BOOL FtpCommandA(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET*); - BOOL FtpCommandW(HINTERNET, BOOL, DWORD, LPCWSTR, DWORD_PTR, HINTERNET*); - BOOL GopherCreateLocatorA(LPCSTR, INTERNET_PORT, LPCSTR, LPCSTR, DWORD, - LPSTR, PDWORD); - BOOL GopherCreateLocatorW(LPCWSTR, INTERNET_PORT, LPCWSTR, LPCWSTR, DWORD, - LPWSTR, PDWORD); - BOOL GopherGetLocatorTypeA(LPCSTR, PDWORD); - BOOL GopherGetLocatorTypeW(LPCWSTR, PDWORD); - HINTERNET GopherFindFirstFileA(HINTERNET, LPCSTR, LPCSTR, - LPGOPHER_FIND_DATAA, DWORD, DWORD); - HINTERNET GopherFindFirstFileW(HINTERNET, LPCWSTR, LPCWSTR, - LPGOPHER_FIND_DATAW, DWORD, DWORD); - HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); - HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); - BOOL GopherGetAttributeA(HINTERNET, LPCSTR, LPCSTR, LPBYTE, DWORD, - PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); - BOOL GopherGetAttributeW(HINTERNET, LPCWSTR, LPCWSTR, LPBYTE, DWORD, - PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); - HINTERNET HttpOpenRequestA(HINTERNET, LPCSTR, LPCSTR, LPCSTR, LPCSTR, - LPCSTR*, DWORD, DWORD); - HINTERNET HttpOpenRequestW(HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, - LPCWSTR*, DWORD, DWORD); - BOOL HttpAddRequestHeadersA(HINTERNET, LPCSTR, DWORD, DWORD); - BOOL HttpAddRequestHeadersW(HINTERNET, LPCWSTR, DWORD, DWORD); - BOOL HttpSendRequestA(HINTERNET, LPCSTR, DWORD, PVOID, DWORD); - BOOL HttpSendRequestW(HINTERNET, LPCWSTR, DWORD, PVOID, DWORD); - BOOL HttpQueryInfoA(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); - BOOL HttpQueryInfoW(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); - BOOL InternetSetCookieA(LPCSTR, LPCSTR, LPCSTR); - BOOL InternetSetCookieW(LPCWSTR, LPCWSTR, LPCWSTR); - BOOL InternetGetCookieA(LPCSTR, LPCSTR, LPSTR, PDWORD); - BOOL InternetGetCookieW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD); - DWORD InternetAttemptConnect(DWORD); - DWORD InternetErrorDlg(HWND, HINTERNET, DWORD, DWORD, PVOID*); - DWORD InternetConfirmZoneCrossing(HWND, LPSTR, LPSTR, BOOL); - BOOL CreateUrlCacheEntryA(LPCSTR, DWORD, LPCSTR, LPSTR, DWORD); - BOOL CreateUrlCacheEntryW(LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD); - BOOL CommitUrlCacheEntryA(LPCSTR, LPCSTR, FILETIME, FILETIME, DWORD, - LPBYTE, DWORD, LPCSTR, DWORD); - BOOL CommitUrlCacheEntryW(LPCWSTR, LPCWSTR, FILETIME, FILETIME, DWORD, - LPBYTE, DWORD, LPCWSTR, DWORD); - BOOL RetrieveUrlCacheEntryFileA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, - PDWORD, DWORD); - BOOL RetrieveUrlCacheEntryFileW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, - PDWORD, DWORD); - BOOL UnlockUrlCacheEntryFile(LPCSTR, DWORD); - HANDLE RetrieveUrlCacheEntryStreamA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, - PDWORD, BOOL, DWORD); - HANDLE RetrieveUrlCacheEntryStreamW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, - PDWORD, BOOL, DWORD); - BOOL ReadUrlCacheEntryStream(HANDLE, DWORD, PVOID, PDWORD, DWORD); - BOOL UnlockUrlCacheEntryStream(HANDLE, DWORD); - BOOL GetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); - BOOL GetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); - BOOL SetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, DWORD); - BOOL SetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, DWORD); - HANDLE FindFirstUrlCacheEntryA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, - PDWORD); - HANDLE FindFirstUrlCacheEntryW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, - PDWORD); - BOOL FindNextUrlCacheEntryA(HANDLE, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); - BOOL FindNextUrlCacheEntryW(HANDLE, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); - BOOL FindCloseUrlCache(HANDLE); - BOOL DeleteUrlCacheEntry(LPCSTR); - DWORD AuthenticateUser(PVOID*, LPSTR, LPSTR, DWORD, LPSTR, DWORD, LPSTR, - LPSTR); - BOOL HttpSendRequestExA(HINTERNET, LPINTERNET_BUFFERSA, - LPINTERNET_BUFFERSA, DWORD, DWORD); - BOOL HttpSendRequestExW(HINTERNET, LPINTERNET_BUFFERSW, - LPINTERNET_BUFFERSW, DWORD, DWORD); - BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD); - BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD); - DWORD InternetDial(HWND, LPTSTR, DWORD, LPDWORD, DWORD); - DWORD InternetHangUp(DWORD, DWORD); - BOOL InternetGoOnline(LPTSTR, HWND, DWORD); - BOOL InternetAutodial(DWORD, DWORD); - BOOL InternetAutodialHangup(DWORD); - BOOL InternetGetConnectedState(LPDWORD, DWORD); - BOOL InternetSetDialState(LPCTSTR, DWORD, DWORD); - BOOL InternetReadFileExA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR); - BOOL InternetReadFileExW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR); - GROUPID CreateUrlCacheGroup(DWORD, LPVOID); - BOOL DeleteUrlCacheGroup(GROUPID, DWORD, LPVOID); - HANDLE FindFirstUrlCacheGroup(DWORD, DWORD, LPVOID, DWORD, GROUPID*, - LPVOID); - BOOL FindNextUrlCacheGroup(HANDLE, GROUPID*, LPVOID); - BOOL GetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOA, LPDWORD, LPVOID); - BOOL GetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOW, LPDWORD, LPVOID); - BOOL SetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOA, LPVOID); - BOOL SetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOW, LPVOID); + BOOL InternetTimeFromSystemTime(SYSTEMTIME*, DWORD, LPSTR, DWORD); + BOOL InternetTimeToSystemTime(LPCSTR, SYSTEMTIME*, DWORD); + BOOL InternetDebugGetLocalTime(SYSTEMTIME*, PDWORD); + BOOL InternetCrackUrlA(LPCSTR, DWORD, DWORD, LPURL_COMPONENTSA); + BOOL InternetCrackUrlW(LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW); + BOOL InternetCreateUrlA(LPURL_COMPONENTSA, DWORD, LPSTR, PDWORD); + BOOL InternetCreateUrlW(LPURL_COMPONENTSW, DWORD, LPWSTR, PDWORD); + BOOL InternetCanonicalizeUrlA(LPCSTR, LPSTR, PDWORD, DWORD); + BOOL InternetCanonicalizeUrlW(LPCWSTR, LPWSTR, PDWORD, DWORD); + BOOL InternetCheckConnectionA(LPCSTR, DWORD, DWORD); + BOOL InternetCheckConnectionW(LPCWSTR, DWORD, DWORD); + BOOL InternetCombineUrlA(LPCSTR, LPCSTR, LPSTR, PDWORD, DWORD); + BOOL InternetCombineUrlW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, DWORD); + HINTERNET InternetOpenA(LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD); + HINTERNET InternetOpenW(LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD); + BOOL InternetCloseHandle(HINTERNET); + HINTERNET InternetConnectA(HINTERNET, LPCSTR, INTERNET_PORT, LPCSTR, + LPCSTR, DWORD, DWORD, DWORD); + HINTERNET InternetConnectW(HINTERNET, LPCWSTR, INTERNET_PORT, LPCWSTR, + LPCWSTR, DWORD, DWORD, DWORD); + HINTERNET InternetOpenUrlA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD, + DWORD); + HINTERNET InternetOpenUrlW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD, + DWORD); + BOOL InternetReadFile(HINTERNET, PVOID, DWORD, PDWORD); + DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD); + BOOL InternetWriteFile(HINTERNET, LPCVOID, DWORD, PDWORD); + BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD); + BOOL InternetFindNextFileA(HINTERNET, PVOID); + BOOL InternetFindNextFileW(HINTERNET, PVOID); + BOOL InternetQueryOptionA(HINTERNET, DWORD, PVOID, PDWORD); + BOOL InternetQueryOptionW(HINTERNET, DWORD, PVOID, PDWORD); + BOOL InternetSetOptionA(HINTERNET, DWORD, PVOID, DWORD); + BOOL InternetSetOptionW(HINTERNET, DWORD, PVOID, DWORD); + BOOL InternetSetOptionExA(HINTERNET, DWORD, PVOID, DWORD, DWORD); + BOOL InternetSetOptionExW(HINTERNET, DWORD, PVOID, DWORD, DWORD); + BOOL InternetGetLastResponseInfoA(PDWORD, LPSTR, PDWORD); + BOOL InternetGetLastResponseInfoW(PDWORD, LPWSTR, PDWORD); + INTERNET_STATUS_CALLBACK InternetSetStatusCallback(HINTERNET, + INTERNET_STATUS_CALLBACK); + DWORD FtpGetFileSize(HINTERNET, LPDWORD); + HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATA, DWORD, + DWORD); + HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATA, DWORD, + DWORD); + BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD); + BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD); + BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); + BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL FtpDeleteFileA(HINTERNET, LPCSTR); + BOOL FtpDeleteFileW(HINTERNET, LPCWSTR); + BOOL FtpRenameFileA(HINTERNET, LPCSTR, LPCSTR); + BOOL FtpRenameFileW(HINTERNET, LPCWSTR, LPCWSTR); + HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD); + HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD); + BOOL FtpCreateDirectoryA(HINTERNET, LPCSTR); + BOOL FtpCreateDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpRemoveDirectoryA(HINTERNET, LPCSTR); + BOOL FtpRemoveDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpSetCurrentDirectoryA(HINTERNET, LPCSTR); + BOOL FtpSetCurrentDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpGetCurrentDirectoryA(HINTERNET, LPSTR, PDWORD); + BOOL FtpGetCurrentDirectoryW(HINTERNET, LPWSTR, PDWORD); + BOOL FtpCommandA(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET*); + BOOL FtpCommandW(HINTERNET, BOOL, DWORD, LPCWSTR, DWORD_PTR, HINTERNET*); + BOOL GopherCreateLocatorA(LPCSTR, INTERNET_PORT, LPCSTR, LPCSTR, DWORD, + LPSTR, PDWORD); + BOOL GopherCreateLocatorW(LPCWSTR, INTERNET_PORT, LPCWSTR, LPCWSTR, DWORD, + LPWSTR, PDWORD); + BOOL GopherGetLocatorTypeA(LPCSTR, PDWORD); + BOOL GopherGetLocatorTypeW(LPCWSTR, PDWORD); + HINTERNET GopherFindFirstFileA(HINTERNET, LPCSTR, LPCSTR, + LPGOPHER_FIND_DATAA, DWORD, DWORD); + HINTERNET GopherFindFirstFileW(HINTERNET, LPCWSTR, LPCWSTR, + LPGOPHER_FIND_DATAW, DWORD, DWORD); + HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); + HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL GopherGetAttributeA(HINTERNET, LPCSTR, LPCSTR, LPBYTE, DWORD, + PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); + BOOL GopherGetAttributeW(HINTERNET, LPCWSTR, LPCWSTR, LPBYTE, DWORD, + PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); + HINTERNET HttpOpenRequestA(HINTERNET, LPCSTR, LPCSTR, LPCSTR, LPCSTR, + LPCSTR*, DWORD, DWORD); + HINTERNET HttpOpenRequestW(HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, + LPCWSTR*, DWORD, DWORD); + BOOL HttpAddRequestHeadersA(HINTERNET, LPCSTR, DWORD, DWORD); + BOOL HttpAddRequestHeadersW(HINTERNET, LPCWSTR, DWORD, DWORD); + BOOL HttpSendRequestA(HINTERNET, LPCSTR, DWORD, PVOID, DWORD); + BOOL HttpSendRequestW(HINTERNET, LPCWSTR, DWORD, PVOID, DWORD); + BOOL HttpQueryInfoA(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); + BOOL HttpQueryInfoW(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); + BOOL InternetSetCookieA(LPCSTR, LPCSTR, LPCSTR); + BOOL InternetSetCookieW(LPCWSTR, LPCWSTR, LPCWSTR); + BOOL InternetGetCookieA(LPCSTR, LPCSTR, LPSTR, PDWORD); + BOOL InternetGetCookieW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD); + DWORD InternetAttemptConnect(DWORD); + DWORD InternetErrorDlg(HWND, HINTERNET, DWORD, DWORD, PVOID*); + DWORD InternetConfirmZoneCrossing(HWND, LPSTR, LPSTR, BOOL); + BOOL CreateUrlCacheEntryA(LPCSTR, DWORD, LPCSTR, LPSTR, DWORD); + BOOL CreateUrlCacheEntryW(LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD); + BOOL CommitUrlCacheEntryA(LPCSTR, LPCSTR, FILETIME, FILETIME, DWORD, + LPBYTE, DWORD, LPCSTR, DWORD); + BOOL CommitUrlCacheEntryW(LPCWSTR, LPCWSTR, FILETIME, FILETIME, DWORD, + LPBYTE, DWORD, LPCWSTR, DWORD); + BOOL RetrieveUrlCacheEntryFileA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD, DWORD); + BOOL RetrieveUrlCacheEntryFileW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD, DWORD); + BOOL UnlockUrlCacheEntryFile(LPCSTR, DWORD); + HANDLE RetrieveUrlCacheEntryStreamA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD, BOOL, DWORD); + HANDLE RetrieveUrlCacheEntryStreamW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD, BOOL, DWORD); + BOOL ReadUrlCacheEntryStream(HANDLE, DWORD, PVOID, PDWORD, DWORD); + BOOL UnlockUrlCacheEntryStream(HANDLE, DWORD); + BOOL GetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); + BOOL GetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); + BOOL SetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, DWORD); + BOOL SetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, DWORD); + HANDLE FindFirstUrlCacheEntryA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD); + HANDLE FindFirstUrlCacheEntryW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD); + BOOL FindNextUrlCacheEntryA(HANDLE, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); + BOOL FindNextUrlCacheEntryW(HANDLE, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); + BOOL FindCloseUrlCache(HANDLE); + BOOL DeleteUrlCacheEntry(LPCSTR); + DWORD AuthenticateUser(PVOID*, LPSTR, LPSTR, DWORD, LPSTR, DWORD, LPSTR, + LPSTR); + BOOL HttpSendRequestExA(HINTERNET, LPINTERNET_BUFFERSA, + LPINTERNET_BUFFERSA, DWORD, DWORD); + BOOL HttpSendRequestExW(HINTERNET, LPINTERNET_BUFFERSW, + LPINTERNET_BUFFERSW, DWORD, DWORD); + BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD); + BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD); + DWORD InternetDial(HWND, LPTSTR, DWORD, LPDWORD, DWORD); + DWORD InternetHangUp(DWORD, DWORD); + BOOL InternetGoOnline(LPTSTR, HWND, DWORD); + BOOL InternetAutodial(DWORD, DWORD); + BOOL InternetAutodialHangup(DWORD); + BOOL InternetGetConnectedState(LPDWORD, DWORD); + BOOL InternetSetDialState(LPCTSTR, DWORD, DWORD); + BOOL InternetReadFileExA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR); + BOOL InternetReadFileExW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR); + GROUPID CreateUrlCacheGroup(DWORD, LPVOID); + BOOL DeleteUrlCacheGroup(GROUPID, DWORD, LPVOID); + HANDLE FindFirstUrlCacheGroup(DWORD, DWORD, LPVOID, DWORD, GROUPID*, + LPVOID); + BOOL FindNextUrlCacheGroup(HANDLE, GROUPID*, LPVOID); + BOOL GetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOA, LPDWORD, LPVOID); + BOOL GetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOW, LPDWORD, LPVOID); + BOOL SetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOA, LPVOID); + BOOL SetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOW, LPVOID); } version (Unicode) { - alias URL_COMPONENTSW URL_COMPONENTS; - alias LPURL_COMPONENTSW LPURL_COMPONENTS; - alias GOPHER_FIND_DATAW GOPHER_FIND_DATA; - alias LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA; - alias INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO; - alias LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO; - alias INTERNET_BUFFERSW INTERNET_BUFFERS; - alias INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO; - alias LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO; - alias InternetCrackUrlW InternetCrackUrl; - alias InternetCreateUrlW InternetCreateUrl; - alias InternetCanonicalizeUrlW InternetCanonicalizeUrl; - alias InternetCheckConnectionW InternetCheckConnection; - alias InternetCombineUrlW InternetCombineUrl; - alias InternetOpenW InternetOpen; - alias InternetConnectW InternetConnect; - alias InternetOpenUrlW InternetOpenUrl; - alias InternetFindNextFileW InternetFindNextFile; - alias InternetQueryOptionW InternetQueryOption; - alias InternetSetOptionW InternetSetOption; - alias InternetSetOptionExW InternetSetOptionEx; - alias InternetGetLastResponseInfoW InternetGetLastResponseInfo; - alias InternetReadFileExW InternetReadFileEx; - alias FtpFindFirstFileW FtpFindFirstFile; - alias FtpGetFileW FtpGetFile; - alias FtpPutFileW FtpPutFile; - alias FtpDeleteFileW FtpDeleteFile; - alias FtpRenameFileW FtpRenameFile; - alias FtpOpenFileW FtpOpenFile; - alias FtpCreateDirectoryW FtpCreateDirectory; - alias FtpRemoveDirectoryW FtpRemoveDirectory; - alias FtpSetCurrentDirectoryW FtpSetCurrentDirectory; - alias FtpGetCurrentDirectoryW FtpGetCurrentDirectory; - alias FtpCommandW FtpCommand; - alias GopherGetLocatorTypeW GopherGetLocatorType; - alias GopherCreateLocatorW GopherCreateLocator; - alias GopherFindFirstFileW GopherFindFirstFile; - alias GopherOpenFileW GopherOpenFile; - alias GopherGetAttributeW GopherGetAttribute; - alias HttpSendRequestW HttpSendRequest; - alias HttpOpenRequestW HttpOpenRequest; - alias HttpAddRequestHeadersW HttpAddRequestHeaders; - alias HttpQueryInfoW HttpQueryInfo; - alias InternetSetCookieW InternetSetCookie; - alias InternetGetCookieW InternetGetCookie; - alias CreateUrlCacheEntryW CreateUrlCacheEntry; - alias RetrieveUrlCacheEntryStreamW RetrieveUrlCacheEntryStream; - alias FindNextUrlCacheEntryW FindNextUrlCacheEntry; - alias CommitUrlCacheEntryW CommitUrlCacheEntry; - alias GetUrlCacheEntryInfoW GetUrlCacheEntryInfo; - alias SetUrlCacheEntryInfoW SetUrlCacheEntryInfo; - alias FindFirstUrlCacheEntryW FindFirstUrlCacheEntry; - alias RetrieveUrlCacheEntryFileW RetrieveUrlCacheEntryFile; - alias HttpSendRequestExW HttpSendRequestEx; - alias HttpEndRequestW HttpEndRequest; - alias GetUrlCacheGroupAttributeW GetUrlCacheGroupAttribute; - alias SetUrlCacheGroupAttributeW SetUrlCacheGroupAttribute; + alias URL_COMPONENTSW URL_COMPONENTS; + alias LPURL_COMPONENTSW LPURL_COMPONENTS; + alias GOPHER_FIND_DATAW GOPHER_FIND_DATA; + alias LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA; + alias INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO; + alias LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO; + alias INTERNET_BUFFERSW INTERNET_BUFFERS; + alias INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO; + alias LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO; + alias InternetCrackUrlW InternetCrackUrl; + alias InternetCreateUrlW InternetCreateUrl; + alias InternetCanonicalizeUrlW InternetCanonicalizeUrl; + alias InternetCheckConnectionW InternetCheckConnection; + alias InternetCombineUrlW InternetCombineUrl; + alias InternetOpenW InternetOpen; + alias InternetConnectW InternetConnect; + alias InternetOpenUrlW InternetOpenUrl; + alias InternetFindNextFileW InternetFindNextFile; + alias InternetQueryOptionW InternetQueryOption; + alias InternetSetOptionW InternetSetOption; + alias InternetSetOptionExW InternetSetOptionEx; + alias InternetGetLastResponseInfoW InternetGetLastResponseInfo; + alias InternetReadFileExW InternetReadFileEx; + alias FtpFindFirstFileW FtpFindFirstFile; + alias FtpGetFileW FtpGetFile; + alias FtpPutFileW FtpPutFile; + alias FtpDeleteFileW FtpDeleteFile; + alias FtpRenameFileW FtpRenameFile; + alias FtpOpenFileW FtpOpenFile; + alias FtpCreateDirectoryW FtpCreateDirectory; + alias FtpRemoveDirectoryW FtpRemoveDirectory; + alias FtpSetCurrentDirectoryW FtpSetCurrentDirectory; + alias FtpGetCurrentDirectoryW FtpGetCurrentDirectory; + alias FtpCommandW FtpCommand; + alias GopherGetLocatorTypeW GopherGetLocatorType; + alias GopherCreateLocatorW GopherCreateLocator; + alias GopherFindFirstFileW GopherFindFirstFile; + alias GopherOpenFileW GopherOpenFile; + alias GopherGetAttributeW GopherGetAttribute; + alias HttpSendRequestW HttpSendRequest; + alias HttpOpenRequestW HttpOpenRequest; + alias HttpAddRequestHeadersW HttpAddRequestHeaders; + alias HttpQueryInfoW HttpQueryInfo; + alias InternetSetCookieW InternetSetCookie; + alias InternetGetCookieW InternetGetCookie; + alias CreateUrlCacheEntryW CreateUrlCacheEntry; + alias RetrieveUrlCacheEntryStreamW RetrieveUrlCacheEntryStream; + alias FindNextUrlCacheEntryW FindNextUrlCacheEntry; + alias CommitUrlCacheEntryW CommitUrlCacheEntry; + alias GetUrlCacheEntryInfoW GetUrlCacheEntryInfo; + alias SetUrlCacheEntryInfoW SetUrlCacheEntryInfo; + alias FindFirstUrlCacheEntryW FindFirstUrlCacheEntry; + alias RetrieveUrlCacheEntryFileW RetrieveUrlCacheEntryFile; + alias HttpSendRequestExW HttpSendRequestEx; + alias HttpEndRequestW HttpEndRequest; + alias GetUrlCacheGroupAttributeW GetUrlCacheGroupAttribute; + alias SetUrlCacheGroupAttributeW SetUrlCacheGroupAttribute; } else { - alias URL_COMPONENTSA URL_COMPONENTS; - alias LPURL_COMPONENTSA LPURL_COMPONENTS; - alias GOPHER_FIND_DATAA GOPHER_FIND_DATA; - alias LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA; - alias INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO; - alias LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO; - alias INTERNET_BUFFERSA INTERNET_BUFFERS; - alias INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO; - alias LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO; - alias GopherGetAttributeA GopherGetAttribute; - alias InternetCrackUrlA InternetCrackUrl; - alias InternetCreateUrlA InternetCreateUrl; - alias InternetCanonicalizeUrlA InternetCanonicalizeUrl; - alias InternetCheckConnectionA InternetCheckConnection; - alias InternetCombineUrlA InternetCombineUrl; - alias InternetOpenA InternetOpen; - alias InternetConnectA InternetConnect; - alias InternetOpenUrlA InternetOpenUrl; - alias InternetFindNextFileA InternetFindNextFile; - alias InternetQueryOptionA InternetQueryOption; - alias InternetSetOptionA InternetSetOption; - alias InternetSetOptionExA InternetSetOptionEx; - alias InternetGetLastResponseInfoA InternetGetLastResponseInfo; - alias InternetReadFileExA InternetReadFileEx; - alias FtpFindFirstFileA FtpFindFirstFile; - alias FtpGetFileA FtpGetFile; - alias FtpPutFileA FtpPutFile; - alias FtpDeleteFileA FtpDeleteFile; - alias FtpRenameFileA FtpRenameFile; - alias FtpOpenFileA FtpOpenFile; - alias FtpCreateDirectoryA FtpCreateDirectory; - alias FtpRemoveDirectoryA FtpRemoveDirectory; - alias FtpSetCurrentDirectoryA FtpSetCurrentDirectory; - alias FtpGetCurrentDirectoryA FtpGetCurrentDirectory; - alias FtpCommandA FtpCommand; - alias GopherGetLocatorTypeA GopherGetLocatorType; - alias GopherCreateLocatorA GopherCreateLocator; - alias GopherFindFirstFileA GopherFindFirstFile; - alias GopherOpenFileA GopherOpenFile; - alias HttpSendRequestA HttpSendRequest; - alias HttpOpenRequestA HttpOpenRequest; - alias HttpAddRequestHeadersA HttpAddRequestHeaders; - alias HttpQueryInfoA HttpQueryInfo; - alias InternetSetCookieA InternetSetCookie; - alias InternetGetCookieA InternetGetCookie; - alias CreateUrlCacheEntryA CreateUrlCacheEntry; - alias RetrieveUrlCacheEntryStreamA RetrieveUrlCacheEntryStream; - alias FindNextUrlCacheEntryA FindNextUrlCacheEntry; - alias CommitUrlCacheEntryA CommitUrlCacheEntry; - alias GetUrlCacheEntryInfoA GetUrlCacheEntryInfo; - alias SetUrlCacheEntryInfoA SetUrlCacheEntryInfo; - alias FindFirstUrlCacheEntryA FindFirstUrlCacheEntry; - alias RetrieveUrlCacheEntryFileA RetrieveUrlCacheEntryFile; - alias HttpSendRequestExA HttpSendRequestEx; - alias HttpEndRequestA HttpEndRequest; - alias GetUrlCacheGroupAttributeA GetUrlCacheGroupAttribute; - alias SetUrlCacheGroupAttributeA SetUrlCacheGroupAttribute; + alias URL_COMPONENTSA URL_COMPONENTS; + alias LPURL_COMPONENTSA LPURL_COMPONENTS; + alias GOPHER_FIND_DATAA GOPHER_FIND_DATA; + alias LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA; + alias INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO; + alias LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO; + alias INTERNET_BUFFERSA INTERNET_BUFFERS; + alias INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO; + alias LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO; + alias GopherGetAttributeA GopherGetAttribute; + alias InternetCrackUrlA InternetCrackUrl; + alias InternetCreateUrlA InternetCreateUrl; + alias InternetCanonicalizeUrlA InternetCanonicalizeUrl; + alias InternetCheckConnectionA InternetCheckConnection; + alias InternetCombineUrlA InternetCombineUrl; + alias InternetOpenA InternetOpen; + alias InternetConnectA InternetConnect; + alias InternetOpenUrlA InternetOpenUrl; + alias InternetFindNextFileA InternetFindNextFile; + alias InternetQueryOptionA InternetQueryOption; + alias InternetSetOptionA InternetSetOption; + alias InternetSetOptionExA InternetSetOptionEx; + alias InternetGetLastResponseInfoA InternetGetLastResponseInfo; + alias InternetReadFileExA InternetReadFileEx; + alias FtpFindFirstFileA FtpFindFirstFile; + alias FtpGetFileA FtpGetFile; + alias FtpPutFileA FtpPutFile; + alias FtpDeleteFileA FtpDeleteFile; + alias FtpRenameFileA FtpRenameFile; + alias FtpOpenFileA FtpOpenFile; + alias FtpCreateDirectoryA FtpCreateDirectory; + alias FtpRemoveDirectoryA FtpRemoveDirectory; + alias FtpSetCurrentDirectoryA FtpSetCurrentDirectory; + alias FtpGetCurrentDirectoryA FtpGetCurrentDirectory; + alias FtpCommandA FtpCommand; + alias GopherGetLocatorTypeA GopherGetLocatorType; + alias GopherCreateLocatorA GopherCreateLocator; + alias GopherFindFirstFileA GopherFindFirstFile; + alias GopherOpenFileA GopherOpenFile; + alias HttpSendRequestA HttpSendRequest; + alias HttpOpenRequestA HttpOpenRequest; + alias HttpAddRequestHeadersA HttpAddRequestHeaders; + alias HttpQueryInfoA HttpQueryInfo; + alias InternetSetCookieA InternetSetCookie; + alias InternetGetCookieA InternetGetCookie; + alias CreateUrlCacheEntryA CreateUrlCacheEntry; + alias RetrieveUrlCacheEntryStreamA RetrieveUrlCacheEntryStream; + alias FindNextUrlCacheEntryA FindNextUrlCacheEntry; + alias CommitUrlCacheEntryA CommitUrlCacheEntry; + alias GetUrlCacheEntryInfoA GetUrlCacheEntryInfo; + alias SetUrlCacheEntryInfoA SetUrlCacheEntryInfo; + alias FindFirstUrlCacheEntryA FindFirstUrlCacheEntry; + alias RetrieveUrlCacheEntryFileA RetrieveUrlCacheEntryFile; + alias HttpSendRequestExA HttpSendRequestEx; + alias HttpEndRequestA HttpEndRequest; + alias GetUrlCacheGroupAttributeA GetUrlCacheGroupAttribute; + alias SetUrlCacheGroupAttributeA SetUrlCacheGroupAttribute; } alias INTERNET_BUFFERS* LPINTERNET_BUFFERS; diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d index 3c47837180..c8b0a0960f 100644 --- a/src/core/sys/windows/winioctl.d +++ b/src/core/sys/windows/winioctl.d @@ -14,84 +14,84 @@ module core.sys.windows.winioctl; private import core.sys.windows.basetyps, core.sys.windows.windef; const size_t - HIST_NO_OF_BUCKETS = 24, - HISTOGRAM_BUCKET_SIZE = HISTOGRAM_BUCKET.sizeof, - DISK_HISTOGRAM_SIZE = DISK_HISTOGRAM.sizeof; + HIST_NO_OF_BUCKETS = 24, + HISTOGRAM_BUCKET_SIZE = HISTOGRAM_BUCKET.sizeof, + DISK_HISTOGRAM_SIZE = DISK_HISTOGRAM.sizeof; alias DWORD DEVICE_TYPE; enum : DEVICE_TYPE { - FILE_DEVICE_BEEP = 1, - FILE_DEVICE_CD_ROM, - FILE_DEVICE_CD_ROM_FILE_SYSTEM, - FILE_DEVICE_CONTROLLER, - FILE_DEVICE_DATALINK, - FILE_DEVICE_DFS, - FILE_DEVICE_DISK, - FILE_DEVICE_DISK_FILE_SYSTEM, - FILE_DEVICE_FILE_SYSTEM, - FILE_DEVICE_INPORT_PORT, - FILE_DEVICE_KEYBOARD, - FILE_DEVICE_MAILSLOT, - FILE_DEVICE_MIDI_IN, - FILE_DEVICE_MIDI_OUT, - FILE_DEVICE_MOUSE, - FILE_DEVICE_MULTI_UNC_PROVIDER, - FILE_DEVICE_NAMED_PIPE, - FILE_DEVICE_NETWORK, - FILE_DEVICE_NETWORK_BROWSER, - FILE_DEVICE_NETWORK_FILE_SYSTEM, - FILE_DEVICE_NULL, - FILE_DEVICE_PARALLEL_PORT, - FILE_DEVICE_PHYSICAL_NETCARD, - FILE_DEVICE_PRINTER, - FILE_DEVICE_SCANNER, - FILE_DEVICE_SERIAL_MOUSE_PORT, - FILE_DEVICE_SERIAL_PORT, - FILE_DEVICE_SCREEN, - FILE_DEVICE_SOUND, - FILE_DEVICE_STREAMS, - FILE_DEVICE_TAPE, - FILE_DEVICE_TAPE_FILE_SYSTEM, - FILE_DEVICE_TRANSPORT, - FILE_DEVICE_UNKNOWN, - FILE_DEVICE_VIDEO, - FILE_DEVICE_VIRTUAL_DISK, - FILE_DEVICE_WAVE_IN, - FILE_DEVICE_WAVE_OUT, - FILE_DEVICE_8042_PORT, - FILE_DEVICE_NETWORK_REDIRECTOR, - FILE_DEVICE_BATTERY, - FILE_DEVICE_BUS_EXTENDER, - FILE_DEVICE_MODEM, - FILE_DEVICE_VDM, - FILE_DEVICE_MASS_STORAGE, - FILE_DEVICE_SMB, - FILE_DEVICE_KS, - FILE_DEVICE_CHANGER, - FILE_DEVICE_SMARTCARD, - FILE_DEVICE_ACPI, - FILE_DEVICE_DVD, - FILE_DEVICE_FULLSCREEN_VIDEO, - FILE_DEVICE_DFS_FILE_SYSTEM, - FILE_DEVICE_DFS_VOLUME, - FILE_DEVICE_SERENUM, - FILE_DEVICE_TERMSRV, - FILE_DEVICE_KSEC // = 57 + FILE_DEVICE_BEEP = 1, + FILE_DEVICE_CD_ROM, + FILE_DEVICE_CD_ROM_FILE_SYSTEM, + FILE_DEVICE_CONTROLLER, + FILE_DEVICE_DATALINK, + FILE_DEVICE_DFS, + FILE_DEVICE_DISK, + FILE_DEVICE_DISK_FILE_SYSTEM, + FILE_DEVICE_FILE_SYSTEM, + FILE_DEVICE_INPORT_PORT, + FILE_DEVICE_KEYBOARD, + FILE_DEVICE_MAILSLOT, + FILE_DEVICE_MIDI_IN, + FILE_DEVICE_MIDI_OUT, + FILE_DEVICE_MOUSE, + FILE_DEVICE_MULTI_UNC_PROVIDER, + FILE_DEVICE_NAMED_PIPE, + FILE_DEVICE_NETWORK, + FILE_DEVICE_NETWORK_BROWSER, + FILE_DEVICE_NETWORK_FILE_SYSTEM, + FILE_DEVICE_NULL, + FILE_DEVICE_PARALLEL_PORT, + FILE_DEVICE_PHYSICAL_NETCARD, + FILE_DEVICE_PRINTER, + FILE_DEVICE_SCANNER, + FILE_DEVICE_SERIAL_MOUSE_PORT, + FILE_DEVICE_SERIAL_PORT, + FILE_DEVICE_SCREEN, + FILE_DEVICE_SOUND, + FILE_DEVICE_STREAMS, + FILE_DEVICE_TAPE, + FILE_DEVICE_TAPE_FILE_SYSTEM, + FILE_DEVICE_TRANSPORT, + FILE_DEVICE_UNKNOWN, + FILE_DEVICE_VIDEO, + FILE_DEVICE_VIRTUAL_DISK, + FILE_DEVICE_WAVE_IN, + FILE_DEVICE_WAVE_OUT, + FILE_DEVICE_8042_PORT, + FILE_DEVICE_NETWORK_REDIRECTOR, + FILE_DEVICE_BATTERY, + FILE_DEVICE_BUS_EXTENDER, + FILE_DEVICE_MODEM, + FILE_DEVICE_VDM, + FILE_DEVICE_MASS_STORAGE, + FILE_DEVICE_SMB, + FILE_DEVICE_KS, + FILE_DEVICE_CHANGER, + FILE_DEVICE_SMARTCARD, + FILE_DEVICE_ACPI, + FILE_DEVICE_DVD, + FILE_DEVICE_FULLSCREEN_VIDEO, + FILE_DEVICE_DFS_FILE_SYSTEM, + FILE_DEVICE_DFS_VOLUME, + FILE_DEVICE_SERENUM, + FILE_DEVICE_TERMSRV, + FILE_DEVICE_KSEC // = 57 } enum { - METHOD_BUFFERED, - METHOD_IN_DIRECT, - METHOD_OUT_DIRECT, - METHOD_NEITHER + METHOD_BUFFERED, + METHOD_IN_DIRECT, + METHOD_OUT_DIRECT, + METHOD_NEITHER } enum { - FILE_ANY_ACCESS, - FILE_SPECIAL_ACCESS = 0, - FILE_READ_ACCESS, - FILE_WRITE_ACCESS + FILE_ANY_ACCESS, + FILE_SPECIAL_ACCESS = 0, + FILE_READ_ACCESS, + FILE_WRITE_ACCESS } /* Bit pattern: @@ -102,610 +102,610 @@ enum { +/ template CTL_CODE_T(DEVICE_TYPE t, uint f, uint m, uint a) { - const DWORD CTL_CODE_T = (t << 16) | (a << 14) | (f << 2) | m; + const DWORD CTL_CODE_T = (t << 16) | (a << 14) | (f << 2) | m; } DEVICE_TYPE DEVICE_TYPE_FROM_CTL_CODE(DWORD c) { - return (c & 0xFFFF0000) >> 16; + return (c & 0xFFFF0000) >> 16; } const DEVICE_TYPE - IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE, - IOCTL_DISK_BASE = FILE_DEVICE_DISK, - IOCTL_VOLUME_BASE = 'V'; + IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE, + IOCTL_DISK_BASE = FILE_DEVICE_DISK, + IOCTL_VOLUME_BASE = 'V'; enum : DWORD { - IOCTL_STORAGE_CHECK_VERIFY = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_CHECK_VERIFY2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_EJECT_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_LOAD_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_LOAD_MEDIA2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_RESERVE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_RELEASE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_EJECTION_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_MCN_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_GET_MEDIA_TYPES_EX = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_RESET_BUS = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_RESET_DEVICE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_GET_DEVICE_NUMBER = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_PREDICT_FAILURE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS), - - IOCTL_DISK_GET_DRIVE_GEOMETRY = CTL_CODE_T!(IOCTL_DISK_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 1, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_SET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_GET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_SET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 4, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_FORMAT_TRACKS = CTL_CODE_T!(IOCTL_DISK_BASE, 6, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_REASSIGN_BLOCKS = CTL_CODE_T!(IOCTL_DISK_BASE, 7, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_PERFORMANCE = CTL_CODE_T!(IOCTL_DISK_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_IS_WRITABLE = CTL_CODE_T!(IOCTL_DISK_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_LOGGING = CTL_CODE_T!(IOCTL_DISK_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_FORMAT_TRACKS_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 11, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_HISTOGRAM_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_HISTOGRAM_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_HISTOGRAM_RESET = CTL_CODE_T!(IOCTL_DISK_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_REQUEST_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_REQUEST_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 16, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_SET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_GET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_SET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x15, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_CREATE_DISK = CTL_CODE_T!(IOCTL_DISK_BASE, 0x16, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_GET_LENGTH_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 0x17, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_PERFORMANCE_OFF = CTL_CODE_T!(IOCTL_DISK_BASE, 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GET_DRIVE_GEOMETRY_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x28, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GROW_PARTITION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x34, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_GET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x35, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_SET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x36, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_DELETE_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 0x40, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_UPDATE_PROPERTIES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x50, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_CHECK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 0x200, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_DISK_BASE, 0x201, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_EJECT_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x202, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_LOAD_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x203, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_RESERVE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x204, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_RELEASE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x205, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x206, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_REMOVE_DEVICE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x207, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x300, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_UPDATE_DRIVE_SIZE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_SERIAL_LSRMST_INSERT = CTL_CODE_T!(FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS), - - IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS = CTL_CODE_T!(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_VOLUME_IS_CLUSTERED = CTL_CODE_T!(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), - - FSCTL_LOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_UNLOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_DISMOUNT_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_MOUNT_DBLS_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_GET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_SET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA|FILE_WRITE_DATA), - FSCTL_READ_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 17, METHOD_NEITHER, FILE_READ_DATA), - FSCTL_WRITE_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 18, METHOD_NEITHER, FILE_WRITE_DATA), - FSCTL_GET_NTFS_VOLUME_DATA = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_GET_VOLUME_BITMAP = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS), - FSCTL_GET_RETRIEVAL_POINTERS = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS), - FSCTL_MOVE_FILE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_GET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_SET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_DELETE_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_SET_SPARSE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS), + IOCTL_STORAGE_CHECK_VERIFY = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_CHECK_VERIFY2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_EJECT_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_LOAD_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_LOAD_MEDIA2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_RESERVE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_RELEASE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_EJECTION_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_MCN_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_GET_MEDIA_TYPES_EX = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_RESET_BUS = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_RESET_DEVICE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_GET_DEVICE_NUMBER = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_PREDICT_FAILURE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS), + + IOCTL_DISK_GET_DRIVE_GEOMETRY = CTL_CODE_T!(IOCTL_DISK_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 1, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_GET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 4, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_FORMAT_TRACKS = CTL_CODE_T!(IOCTL_DISK_BASE, 6, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_REASSIGN_BLOCKS = CTL_CODE_T!(IOCTL_DISK_BASE, 7, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_PERFORMANCE = CTL_CODE_T!(IOCTL_DISK_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_IS_WRITABLE = CTL_CODE_T!(IOCTL_DISK_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_LOGGING = CTL_CODE_T!(IOCTL_DISK_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_FORMAT_TRACKS_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 11, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_HISTOGRAM_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_HISTOGRAM_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_HISTOGRAM_RESET = CTL_CODE_T!(IOCTL_DISK_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_REQUEST_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_REQUEST_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 16, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_SET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_SET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x15, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_CREATE_DISK = CTL_CODE_T!(IOCTL_DISK_BASE, 0x16, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_LENGTH_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 0x17, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_PERFORMANCE_OFF = CTL_CODE_T!(IOCTL_DISK_BASE, 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_DRIVE_GEOMETRY_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x28, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GROW_PARTITION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x34, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x35, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x36, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_DELETE_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 0x40, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_UPDATE_PROPERTIES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x50, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_CHECK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 0x200, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_DISK_BASE, 0x201, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_EJECT_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x202, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_LOAD_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x203, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_RESERVE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x204, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_RELEASE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x205, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x206, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_REMOVE_DEVICE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x207, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x300, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_UPDATE_DRIVE_SIZE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_SERIAL_LSRMST_INSERT = CTL_CODE_T!(FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS), + + IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS = CTL_CODE_T!(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_VOLUME_IS_CLUSTERED = CTL_CODE_T!(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), + + FSCTL_LOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_UNLOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_DISMOUNT_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_MOUNT_DBLS_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA|FILE_WRITE_DATA), + FSCTL_READ_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 17, METHOD_NEITHER, FILE_READ_DATA), + FSCTL_WRITE_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 18, METHOD_NEITHER, FILE_WRITE_DATA), + FSCTL_GET_NTFS_VOLUME_DATA = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_VOLUME_BITMAP = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS), + FSCTL_GET_RETRIEVAL_POINTERS = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS), + FSCTL_MOVE_FILE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_DELETE_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_SPARSE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS), } enum : BYTE { - PARTITION_ENTRY_UNUSED, - PARTITION_FAT_12, - PARTITION_XENIX_1, - PARTITION_XENIX_2, - PARTITION_FAT_16, - PARTITION_EXTENDED, - PARTITION_HUGE, - PARTITION_IFS, // = 0x07 - PARTITION_FAT32 = 0x0B, - PARTITION_FAT32_XINT13 = 0x0C, - PARTITION_XINT13 = 0x0E, - PARTITION_XINT13_EXTENDED = 0x0F, - PARTITION_PREP = 0x41, - PARTITION_LDM = 0x42, - PARTITION_UNIX = 0x63 + PARTITION_ENTRY_UNUSED, + PARTITION_FAT_12, + PARTITION_XENIX_1, + PARTITION_XENIX_2, + PARTITION_FAT_16, + PARTITION_EXTENDED, + PARTITION_HUGE, + PARTITION_IFS, // = 0x07 + PARTITION_FAT32 = 0x0B, + PARTITION_FAT32_XINT13 = 0x0C, + PARTITION_XINT13 = 0x0E, + PARTITION_XINT13_EXTENDED = 0x0F, + PARTITION_PREP = 0x41, + PARTITION_LDM = 0x42, + PARTITION_UNIX = 0x63 } const BYTE - PARTITION_NTFT = 0x80, - VALID_NTFT = 0xC0; + PARTITION_NTFT = 0x80, + VALID_NTFT = 0xC0; enum { - SERIAL_LSRMST_ESCAPE, - SERIAL_LSRMST_LSR_DATA, - SERIAL_LSRMST_LSR_NODATA, - SERIAL_LSRMST_MST + SERIAL_LSRMST_ESCAPE, + SERIAL_LSRMST_LSR_DATA, + SERIAL_LSRMST_LSR_NODATA, + SERIAL_LSRMST_MST } enum { - DISK_LOGGING_START, - DISK_LOGGING_STOP, - DISK_LOGGING_DUMP, - DISK_BINNING + DISK_LOGGING_START, + DISK_LOGGING_STOP, + DISK_LOGGING_DUMP, + DISK_BINNING } alias WORD BAD_TRACK_NUMBER; alias WORD* PBAD_TRACK_NUMBER; enum BIN_TYPES { - RequestSize, RequestLocation + RequestSize, RequestLocation } struct BIN_RANGE { - LARGE_INTEGER StartValue; - LARGE_INTEGER Length; + LARGE_INTEGER StartValue; + LARGE_INTEGER Length; } alias BIN_RANGE* PBIN_RANGE; struct BIN_COUNT { - BIN_RANGE BinRange; - DWORD BinCount; + BIN_RANGE BinRange; + DWORD BinCount; } alias BIN_COUNT* PBIN_COUNT; struct BIN_RESULTS { - DWORD NumberOfBins; - BIN_COUNT _BinCounts; + DWORD NumberOfBins; + BIN_COUNT _BinCounts; - BIN_COUNT* BinCounts() { return &_BinCounts; } + BIN_COUNT* BinCounts() { return &_BinCounts; } } alias BIN_RESULTS* PBIN_RESULTS; enum PARTITION_STYLE { - PARTITION_STYLE_MBR, - PARTITION_STYLE_GPT, - PARTITION_STYLE_RAW + PARTITION_STYLE_MBR, + PARTITION_STYLE_GPT, + PARTITION_STYLE_RAW } struct CREATE_DISK_GPT { - GUID DiskId; - DWORD MaxPartitionCount; + GUID DiskId; + DWORD MaxPartitionCount; } alias CREATE_DISK_GPT* PCREATE_DISK_GPT; struct CREATE_DISK_MBR { - DWORD Signature; + DWORD Signature; } alias CREATE_DISK_MBR* PCREATE_DISK_MBR; struct CREATE_DISK { - PARTITION_STYLE PartitionStyle; - union { - CREATE_DISK_MBR Mbr; - CREATE_DISK_GPT Gpt; - } + PARTITION_STYLE PartitionStyle; + union { + CREATE_DISK_MBR Mbr; + CREATE_DISK_GPT Gpt; + } } alias CREATE_DISK* PCREATE_DISK; enum DISK_CACHE_RETENTION_PRIORITY { - EqualPriority, - KeepPrefetchedData, - KeepReadData + EqualPriority, + KeepPrefetchedData, + KeepReadData } struct DISK_CACHE_INFORMATION { - BOOLEAN ParametersSavable; - BOOLEAN ReadCacheEnabled; - BOOLEAN WriteCacheEnabled; - DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; - DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; - WORD DisablePrefetchTransferLength; - BOOLEAN PrefetchScalar; - union { - struct _ScalarPrefetch { - WORD Minimum; - WORD Maximum; - WORD MaximumBlocks; - } - _ScalarPrefetch ScalarPrefetch; - struct _BlockPrefetch { - WORD Minimum; - WORD Maximum; - } - _BlockPrefetch BlockPrefetch; - } + BOOLEAN ParametersSavable; + BOOLEAN ReadCacheEnabled; + BOOLEAN WriteCacheEnabled; + DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; + DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; + WORD DisablePrefetchTransferLength; + BOOLEAN PrefetchScalar; + union { + struct _ScalarPrefetch { + WORD Minimum; + WORD Maximum; + WORD MaximumBlocks; + } + _ScalarPrefetch ScalarPrefetch; + struct _BlockPrefetch { + WORD Minimum; + WORD Maximum; + } + _BlockPrefetch BlockPrefetch; + } } alias DISK_CACHE_INFORMATION* PDISK_CACHE_INFORMATION; enum DETECTION_TYPE { - DetectNone, - DetectInt13, - DetectExInt13 + DetectNone, + DetectInt13, + DetectExInt13 } struct DISK_INT13_INFO { - WORD DriveSelect; - DWORD MaxCylinders; - WORD SectorsPerTrack; - WORD MaxHeads; - WORD NumberDrives; - } + WORD DriveSelect; + DWORD MaxCylinders; + WORD SectorsPerTrack; + WORD MaxHeads; + WORD NumberDrives; + } alias DISK_INT13_INFO* PDISK_INT13_INFO; struct DISK_EX_INT13_INFO { - WORD ExBufferSize; - WORD ExFlags; - DWORD ExCylinders; - DWORD ExHeads; - DWORD ExSectorsPerTrack; - DWORD64 ExSectorsPerDrive; - WORD ExSectorSize; - WORD ExReserved; + WORD ExBufferSize; + WORD ExFlags; + DWORD ExCylinders; + DWORD ExHeads; + DWORD ExSectorsPerTrack; + DWORD64 ExSectorsPerDrive; + WORD ExSectorSize; + WORD ExReserved; } alias DISK_EX_INT13_INFO* PDISK_EX_INT13_INFO; struct DISK_DETECTION_INFO { - DWORD SizeOfDetectInfo; - DETECTION_TYPE DetectionType; - DISK_INT13_INFO Int13; - DISK_EX_INT13_INFO ExInt13; + DWORD SizeOfDetectInfo; + DETECTION_TYPE DetectionType; + DISK_INT13_INFO Int13; + DISK_EX_INT13_INFO ExInt13; } alias DISK_DETECTION_INFO* PDISK_DETECTION_INFO; enum MEDIA_TYPE { - Unknown, - F5_1Pt2_512, - F3_1Pt44_512, - F3_2Pt88_512, - F3_20Pt8_512, - F3_720_512, - F5_360_512, - F5_320_512, - F5_320_1024, - F5_180_512, - F5_160_512, - RemovableMedia, - FixedMedia, - F3_120M_512, - F3_640_512, - F5_640_512, - F5_720_512, - F3_1Pt2_512, - F3_1Pt23_1024, - F5_1Pt23_1024, - F3_128Mb_512, - F3_230Mb_512, - F8_256_128, - F3_200Mb_512, - F3_240M_512, - F3_32M_512 + Unknown, + F5_1Pt2_512, + F3_1Pt44_512, + F3_2Pt88_512, + F3_20Pt8_512, + F3_720_512, + F5_360_512, + F5_320_512, + F5_320_1024, + F5_180_512, + F5_160_512, + RemovableMedia, + FixedMedia, + F3_120M_512, + F3_640_512, + F5_640_512, + F5_720_512, + F3_1Pt2_512, + F3_1Pt23_1024, + F5_1Pt23_1024, + F3_128Mb_512, + F3_230Mb_512, + F8_256_128, + F3_200Mb_512, + F3_240M_512, + F3_32M_512 } alias MEDIA_TYPE* PMEDIA_TYPE; struct DISK_GEOMETRY { - LARGE_INTEGER Cylinders; - MEDIA_TYPE MediaType; - DWORD TracksPerCylinder; - DWORD SectorsPerTrack; - DWORD BytesPerSector; + LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; + DWORD TracksPerCylinder; + DWORD SectorsPerTrack; + DWORD BytesPerSector; } alias DISK_GEOMETRY* PDISK_GEOMETRY; struct DISK_GEOMETRY_EX { - DISK_GEOMETRY Geometry; - LARGE_INTEGER DiskSize; - BYTE _Data; + DISK_GEOMETRY Geometry; + LARGE_INTEGER DiskSize; + BYTE _Data; - BYTE* Data() { return &_Data; } + BYTE* Data() { return &_Data; } } alias DISK_GEOMETRY_EX* PDISK_GEOMETRY_EX; struct DISK_GROW_PARTITION { - DWORD PartitionNumber; - LARGE_INTEGER BytesToGrow; + DWORD PartitionNumber; + LARGE_INTEGER BytesToGrow; } alias DISK_GROW_PARTITION* PDISK_GROW_PARTITION; struct DISK_PARTITION_INFO { - DWORD SizeOfPartitionInfo; - PARTITION_STYLE PartitionStyle; - union { - //struct { - DWORD Signature; - //} Mbr; - //struct { - GUID DiskId; - //} Gpt; - } + DWORD SizeOfPartitionInfo; + PARTITION_STYLE PartitionStyle; + union { + //struct { + DWORD Signature; + //} Mbr; + //struct { + GUID DiskId; + //} Gpt; + } } alias DISK_PARTITION_INFO* PDISK_PARTITION_INFO; struct DISK_PERFORMANCE { - LARGE_INTEGER BytesRead; - LARGE_INTEGER BytesWritten; - LARGE_INTEGER ReadTime; - LARGE_INTEGER WriteTime; - DWORD ReadCount; - DWORD WriteCount; - DWORD QueueDepth; + LARGE_INTEGER BytesRead; + LARGE_INTEGER BytesWritten; + LARGE_INTEGER ReadTime; + LARGE_INTEGER WriteTime; + DWORD ReadCount; + DWORD WriteCount; + DWORD QueueDepth; } alias DISK_PERFORMANCE* PDISK_PERFORMANCE; struct DISK_RECORD { - LARGE_INTEGER ByteOffset; - LARGE_INTEGER StartTime; - LARGE_INTEGER EndTime; - PVOID VirtualAddress; - DWORD NumberOfBytes; - BYTE DeviceNumber; - BOOLEAN ReadRequest; + LARGE_INTEGER ByteOffset; + LARGE_INTEGER StartTime; + LARGE_INTEGER EndTime; + PVOID VirtualAddress; + DWORD NumberOfBytes; + BYTE DeviceNumber; + BOOLEAN ReadRequest; } alias DISK_RECORD* PDISK_RECORD; struct DISK_LOGGING { - BYTE Function; - PVOID BufferAddress; - DWORD BufferSize; + BYTE Function; + PVOID BufferAddress; + DWORD BufferSize; } alias DISK_LOGGING* PDISK_LOGGING; struct DISKQUOTA_USER_INFORMATION { - LONGLONG QuotaUsed; - LONGLONG QuotaThreshold; - LONGLONG QuotaLimit; + LONGLONG QuotaUsed; + LONGLONG QuotaThreshold; + LONGLONG QuotaLimit; } alias DISKQUOTA_USER_INFORMATION* PDISKQUOTA_USER_INFORMATION; struct FORMAT_PARAMETERS { - MEDIA_TYPE MediaType; - DWORD StartCylinderNumber; - DWORD EndCylinderNumber; - DWORD StartHeadNumber; - DWORD EndHeadNumber; + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; } alias FORMAT_PARAMETERS* PFORMAT_PARAMETERS; struct FORMAT_EX_PARAMETERS { - MEDIA_TYPE MediaType; - DWORD StartCylinderNumber; - DWORD EndCylinderNumber; - DWORD StartHeadNumber; - DWORD EndHeadNumber; - WORD FormatGapLength; - WORD SectorsPerTrack; - WORD _SectorNumber; + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; + WORD FormatGapLength; + WORD SectorsPerTrack; + WORD _SectorNumber; - WORD* SectorNumber() { return &_SectorNumber; } + WORD* SectorNumber() { return &_SectorNumber; } } alias FORMAT_EX_PARAMETERS* PFORMAT_EX_PARAMETERS; struct GET_LENGTH_INFORMATION { - LARGE_INTEGER Length; + LARGE_INTEGER Length; } struct HISTOGRAM_BUCKET { - DWORD Reads; - DWORD Writes; + DWORD Reads; + DWORD Writes; } alias HISTOGRAM_BUCKET* PHISTOGRAM_BUCKET; struct DISK_HISTOGRAM { - LARGE_INTEGER DiskSize; - LARGE_INTEGER Start; - LARGE_INTEGER End; - LARGE_INTEGER Average; - LARGE_INTEGER AverageRead; - LARGE_INTEGER AverageWrite; - DWORD Granularity; - DWORD Size; - DWORD ReadCount; - DWORD WriteCount; - PHISTOGRAM_BUCKET Histogram; + LARGE_INTEGER DiskSize; + LARGE_INTEGER Start; + LARGE_INTEGER End; + LARGE_INTEGER Average; + LARGE_INTEGER AverageRead; + LARGE_INTEGER AverageWrite; + DWORD Granularity; + DWORD Size; + DWORD ReadCount; + DWORD WriteCount; + PHISTOGRAM_BUCKET Histogram; } alias DISK_HISTOGRAM* PDISK_HISTOGRAM; struct DISK_EXTENT { - DWORD DiskNumber; - LARGE_INTEGER StartingOffset; - LARGE_INTEGER ExtentLength; + DWORD DiskNumber; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER ExtentLength; } alias DISK_EXTENT* PDISK_EXTENT; struct VOLUME_DISK_EXTENTS { - DWORD NumberOfDiskExtents; - DISK_EXTENT _Extents; + DWORD NumberOfDiskExtents; + DISK_EXTENT _Extents; - DISK_EXTENT* Extents() { return &_Extents; } + DISK_EXTENT* Extents() { return &_Extents; } } alias VOLUME_DISK_EXTENTS* PVOLUME_DISK_EXTENTS; struct PARTITION_INFORMATION { - LARGE_INTEGER StartingOffset; - LARGE_INTEGER PartitionLength; - DWORD HiddenSectors; - DWORD PartitionNumber; - BYTE PartitionType; - BOOLEAN BootIndicator; - BOOLEAN RecognizedPartition; - BOOLEAN RewritePartition; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD HiddenSectors; + DWORD PartitionNumber; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + BOOLEAN RewritePartition; } alias PARTITION_INFORMATION* PPARTITION_INFORMATION; struct DRIVE_LAYOUT_INFORMATION { - DWORD PartitionCount; - DWORD Signature; - PARTITION_INFORMATION _PartitionEntry; + DWORD PartitionCount; + DWORD Signature; + PARTITION_INFORMATION _PartitionEntry; - PARTITION_INFORMATION* PartitionEntry() { return &_PartitionEntry; } + PARTITION_INFORMATION* PartitionEntry() { return &_PartitionEntry; } } alias DRIVE_LAYOUT_INFORMATION* PDRIVE_LAYOUT_INFORMATION; struct DRIVE_LAYOUT_INFORMATION_GPT { - GUID DiskId; - LARGE_INTEGER StartingUsableOffset; - LARGE_INTEGER UsableLength; - ULONG MaxPartitionCount; + GUID DiskId; + LARGE_INTEGER StartingUsableOffset; + LARGE_INTEGER UsableLength; + ULONG MaxPartitionCount; } alias DRIVE_LAYOUT_INFORMATION_GPT* PDRIVE_LAYOUT_INFORMATION_GPT; struct DRIVE_LAYOUT_INFORMATION_MBR { - ULONG Signature; + ULONG Signature; } alias DRIVE_LAYOUT_INFORMATION_MBR* PDRIVE_LAYOUT_INFORMATION_MBR; struct PARTITION_INFORMATION_MBR { - BYTE PartitionType; - BOOLEAN BootIndicator; - BOOLEAN RecognizedPartition; - DWORD HiddenSectors; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + DWORD HiddenSectors; } struct PARTITION_INFORMATION_GPT { - GUID PartitionType; - GUID PartitionId; - DWORD64 Attributes; - WCHAR[36] Name; + GUID PartitionType; + GUID PartitionId; + DWORD64 Attributes; + WCHAR[36] Name; } struct PARTITION_INFORMATION_EX { - PARTITION_STYLE PartitionStyle; - LARGE_INTEGER StartingOffset; - LARGE_INTEGER PartitionLength; - DWORD PartitionNumber; - BOOLEAN RewritePartition; - union { - PARTITION_INFORMATION_MBR Mbr; - PARTITION_INFORMATION_GPT Gpt; - } + PARTITION_STYLE PartitionStyle; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD PartitionNumber; + BOOLEAN RewritePartition; + union { + PARTITION_INFORMATION_MBR Mbr; + PARTITION_INFORMATION_GPT Gpt; + } } struct DRIVE_LAYOUT_INFORMATION_EX { - DWORD PartitionStyle; - DWORD PartitionCount; - union { - DRIVE_LAYOUT_INFORMATION_MBR Mbr; - DRIVE_LAYOUT_INFORMATION_GPT Gpt; - } - PARTITION_INFORMATION_EX _PartitionEntry; + DWORD PartitionStyle; + DWORD PartitionCount; + union { + DRIVE_LAYOUT_INFORMATION_MBR Mbr; + DRIVE_LAYOUT_INFORMATION_GPT Gpt; + } + PARTITION_INFORMATION_EX _PartitionEntry; - PARTITION_INFORMATION_EX* PartitionEntry() { return &_PartitionEntry; } + PARTITION_INFORMATION_EX* PartitionEntry() { return &_PartitionEntry; } } alias DRIVE_LAYOUT_INFORMATION_EX* PDRIVE_LAYOUT_INFORMATION_EX; struct MOVE_FILE_DATA { - HANDLE FileHandle; - LARGE_INTEGER StartingVcn; - LARGE_INTEGER StartingLcn; - DWORD ClusterCount; + HANDLE FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + DWORD ClusterCount; } alias MOVE_FILE_DATA* PMOVE_FILE_DATA; struct PERF_BIN { - DWORD NumberOfBins; - DWORD TypeOfBin; - BIN_RANGE _BinsRanges; + DWORD NumberOfBins; + DWORD TypeOfBin; + BIN_RANGE _BinsRanges; - BIN_RANGE* BinsRanges() { return &_BinsRanges; } + BIN_RANGE* BinsRanges() { return &_BinsRanges; } } alias PERF_BIN* PPERF_BIN; struct PREVENT_MEDIA_REMOVAL { - BOOLEAN PreventMediaRemoval; + BOOLEAN PreventMediaRemoval; } alias PREVENT_MEDIA_REMOVAL* PPREVENT_MEDIA_REMOVAL; struct RETRIEVAL_POINTERS_BUFFER { - DWORD ExtentCount; - LARGE_INTEGER StartingVcn; - // In MinGW, this is declared as struct { ... } Extents[1]; - struct Extent { - LARGE_INTEGER NextVcn; - LARGE_INTEGER Lcn; - } - Extent _Extents; + DWORD ExtentCount; + LARGE_INTEGER StartingVcn; + // In MinGW, this is declared as struct { ... } Extents[1]; + struct Extent { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } + Extent _Extents; - Extent* Extents() { return &_Extents; } + Extent* Extents() { return &_Extents; } } alias RETRIEVAL_POINTERS_BUFFER* PRETRIEVAL_POINTERS_BUFFER; struct REASSIGN_BLOCKS { - WORD Reserved; - WORD Count; - DWORD _BlockNumber; + WORD Reserved; + WORD Count; + DWORD _BlockNumber; - DWORD* BlockNumber() { return &_BlockNumber; } + DWORD* BlockNumber() { return &_BlockNumber; } } alias REASSIGN_BLOCKS* PREASSIGN_BLOCKS; struct SET_PARTITION_INFORMATION { - BYTE PartitionType; + BYTE PartitionType; } alias SET_PARTITION_INFORMATION* PSET_PARTITION_INFORMATION; struct STARTING_LCN_INPUT_BUFFER { - LARGE_INTEGER StartingLcn; + LARGE_INTEGER StartingLcn; } alias STARTING_LCN_INPUT_BUFFER* PSTARTING_LCN_INPUT_BUFFER; struct STARTING_VCN_INPUT_BUFFER { - LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingVcn; } alias STARTING_VCN_INPUT_BUFFER* PSTARTING_VCN_INPUT_BUFFER; struct VERIFY_INFORMATION { - LARGE_INTEGER StartingOffset; - DWORD Length; + LARGE_INTEGER StartingOffset; + DWORD Length; } alias VERIFY_INFORMATION* PVERIFY_INFORMATION; struct VOLUME_BITMAP_BUFFER { - LARGE_INTEGER StartingLcn; - LARGE_INTEGER BitmapSize; - BYTE _Buffer; + LARGE_INTEGER StartingLcn; + LARGE_INTEGER BitmapSize; + BYTE _Buffer; - BYTE* Buffer() { return &_Buffer; } + BYTE* Buffer() { return &_Buffer; } } alias VOLUME_BITMAP_BUFFER* PVOLUME_BITMAP_BUFFER; struct NTFS_VOLUME_DATA_BUFFER { - LARGE_INTEGER VolumeSerialNumber; - LARGE_INTEGER NumberSectors; - LARGE_INTEGER TotalClusters; - LARGE_INTEGER FreeClusters; - LARGE_INTEGER TotalReserved; - DWORD BytesPerSector; - DWORD BytesPerCluster; - DWORD BytesPerFileRecordSegment; - DWORD ClustersPerFileRecordSegment; - LARGE_INTEGER MftValidDataLength; - LARGE_INTEGER MftStartLcn; - LARGE_INTEGER Mft2StartLcn; - LARGE_INTEGER MftZoneStart; - LARGE_INTEGER MftZoneEnd; + LARGE_INTEGER VolumeSerialNumber; + LARGE_INTEGER NumberSectors; + LARGE_INTEGER TotalClusters; + LARGE_INTEGER FreeClusters; + LARGE_INTEGER TotalReserved; + DWORD BytesPerSector; + DWORD BytesPerCluster; + DWORD BytesPerFileRecordSegment; + DWORD ClustersPerFileRecordSegment; + LARGE_INTEGER MftValidDataLength; + LARGE_INTEGER MftStartLcn; + LARGE_INTEGER Mft2StartLcn; + LARGE_INTEGER MftZoneStart; + LARGE_INTEGER MftZoneEnd; } alias NTFS_VOLUME_DATA_BUFFER* PNTFS_VOLUME_DATA_BUFFER; bool IsRecognizedPartition(BYTE t) { - return ((t & PARTITION_NTFT) - && ((t & ~VALID_NTFT) == PARTITION_FAT_12 - || (t & ~VALID_NTFT) == PARTITION_FAT_16 - || (t & ~VALID_NTFT) == PARTITION_IFS - || (t & ~VALID_NTFT) == PARTITION_HUGE - || (t & ~VALID_NTFT) == PARTITION_FAT32 - || (t & ~VALID_NTFT) == PARTITION_FAT32_XINT13 - || (t & ~VALID_NTFT) == PARTITION_XINT13)) - || (t & ~PARTITION_NTFT) == PARTITION_FAT_12 - || (t & ~PARTITION_NTFT) == PARTITION_FAT_16 - || (t & ~PARTITION_NTFT) == PARTITION_IFS - || (t & ~PARTITION_NTFT) == PARTITION_HUGE - || (t & ~PARTITION_NTFT) == PARTITION_FAT32 - || (t & ~PARTITION_NTFT) == PARTITION_FAT32_XINT13 - || (t & ~PARTITION_NTFT) == PARTITION_XINT13; + return ((t & PARTITION_NTFT) + && ((t & ~VALID_NTFT) == PARTITION_FAT_12 + || (t & ~VALID_NTFT) == PARTITION_FAT_16 + || (t & ~VALID_NTFT) == PARTITION_IFS + || (t & ~VALID_NTFT) == PARTITION_HUGE + || (t & ~VALID_NTFT) == PARTITION_FAT32 + || (t & ~VALID_NTFT) == PARTITION_FAT32_XINT13 + || (t & ~VALID_NTFT) == PARTITION_XINT13)) + || (t & ~PARTITION_NTFT) == PARTITION_FAT_12 + || (t & ~PARTITION_NTFT) == PARTITION_FAT_16 + || (t & ~PARTITION_NTFT) == PARTITION_IFS + || (t & ~PARTITION_NTFT) == PARTITION_HUGE + || (t & ~PARTITION_NTFT) == PARTITION_FAT32 + || (t & ~PARTITION_NTFT) == PARTITION_FAT32_XINT13 + || (t & ~PARTITION_NTFT) == PARTITION_XINT13; } bool IsContainerPartition(BYTE t) { - return ((t & PARTITION_NTFT) - && ((t & ~VALID_NTFT) == PARTITION_EXTENDED - || (t & ~VALID_NTFT) == PARTITION_XINT13_EXTENDED)) - || (t & ~PARTITION_NTFT) == PARTITION_EXTENDED - || (t & ~PARTITION_NTFT) == PARTITION_XINT13_EXTENDED; + return ((t & PARTITION_NTFT) + && ((t & ~VALID_NTFT) == PARTITION_EXTENDED + || (t & ~VALID_NTFT) == PARTITION_XINT13_EXTENDED)) + || (t & ~PARTITION_NTFT) == PARTITION_EXTENDED + || (t & ~PARTITION_NTFT) == PARTITION_XINT13_EXTENDED; } diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index 79b96d7773..bba40dd611 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -35,12 +35,12 @@ version(Tango){ align(4): enum { - LDAP_VERSION1 = 1, - LDAP_VERSION2 = 2, - LDAP_VERSION3 = 3, - LDAP_VERSION = LDAP_VERSION2, - LDAP_VERSION_MIN = LDAP_VERSION2, - LDAP_VERSION_MAX = LDAP_VERSION3 + LDAP_VERSION1 = 1, + LDAP_VERSION2 = 2, + LDAP_VERSION3 = 3, + LDAP_VERSION = LDAP_VERSION2, + LDAP_VERSION_MIN = LDAP_VERSION2, + LDAP_VERSION_MAX = LDAP_VERSION3 } /* MinGW defines ANSI and Unicode versions as LDAP_VENDOR_NAME and @@ -55,140 +55,140 @@ const LDAP_API_INFO_VERSION = 1; const LDAP_FEATURE_INFO_VERSION = 1; enum { - LDAP_SUCCESS = 0x00, - LDAP_OPT_SUCCESS = LDAP_SUCCESS, - LDAP_OPERATIONS_ERROR, - LDAP_PROTOCOL_ERROR, - LDAP_TIMELIMIT_EXCEEDED, - LDAP_SIZELIMIT_EXCEEDED, - LDAP_COMPARE_FALSE, - LDAP_COMPARE_TRUE, - LDAP_STRONG_AUTH_NOT_SUPPORTED, - LDAP_AUTH_METHOD_NOT_SUPPORTED = LDAP_STRONG_AUTH_NOT_SUPPORTED, - LDAP_STRONG_AUTH_REQUIRED, - LDAP_REFERRAL_V2, - LDAP_PARTIAL_RESULTS = LDAP_REFERRAL_V2, - LDAP_REFERRAL, - LDAP_ADMIN_LIMIT_EXCEEDED, - LDAP_UNAVAILABLE_CRIT_EXTENSION, - LDAP_CONFIDENTIALITY_REQUIRED, - LDAP_SASL_BIND_IN_PROGRESS, // = 0x0e - LDAP_NO_SUCH_ATTRIBUTE = 0x10, - LDAP_UNDEFINED_TYPE, - LDAP_INAPPROPRIATE_MATCHING, - LDAP_CONSTRAINT_VIOLATION, - LDAP_TYPE_OR_VALUE_EXISTS, - LDAP_ATTRIBUTE_OR_VALUE_EXISTS = LDAP_TYPE_OR_VALUE_EXISTS, - LDAP_INVALID_SYNTAX, // = 0x15 - LDAP_NO_SUCH_OBJECT = 0x20, - LDAP_ALIAS_PROBLEM, - LDAP_INVALID_DN_SYNTAX, - LDAP_IS_LEAF, - LDAP_ALIAS_DEREF_PROBLEM, // = 0x24 - LDAP_INAPPROPRIATE_AUTH = 0x30, - LDAP_INVALID_CREDENTIALS, - LDAP_INSUFFICIENT_ACCESS, - LDAP_INSUFFICIENT_RIGHTS = LDAP_INSUFFICIENT_ACCESS, - LDAP_BUSY, - LDAP_UNAVAILABLE, - LDAP_UNWILLING_TO_PERFORM, - LDAP_LOOP_DETECT, // = 0x36 - LDAP_NAMING_VIOLATION = 0x40, - LDAP_OBJECT_CLASS_VIOLATION, - LDAP_NOT_ALLOWED_ON_NONLEAF, - LDAP_NOT_ALLOWED_ON_RDN, - LDAP_ALREADY_EXISTS, - LDAP_NO_OBJECT_CLASS_MODS, - LDAP_RESULTS_TOO_LARGE, - LDAP_AFFECTS_MULTIPLE_DSAS, // = 0x47 - LDAP_OTHER = 0x50, - LDAP_SERVER_DOWN, - LDAP_LOCAL_ERROR, - LDAP_ENCODING_ERROR, - LDAP_DECODING_ERROR, - LDAP_TIMEOUT, - LDAP_AUTH_UNKNOWN, - LDAP_FILTER_ERROR, - LDAP_USER_CANCELLED, - LDAP_PARAM_ERROR, - LDAP_NO_MEMORY, - LDAP_CONNECT_ERROR, - LDAP_NOT_SUPPORTED, - LDAP_CONTROL_NOT_FOUND, - LDAP_NO_RESULTS_RETURNED, - LDAP_MORE_RESULTS_TO_RETURN, - LDAP_CLIENT_LOOP, - LDAP_REFERRAL_LIMIT_EXCEEDED // = 0x61 + LDAP_SUCCESS = 0x00, + LDAP_OPT_SUCCESS = LDAP_SUCCESS, + LDAP_OPERATIONS_ERROR, + LDAP_PROTOCOL_ERROR, + LDAP_TIMELIMIT_EXCEEDED, + LDAP_SIZELIMIT_EXCEEDED, + LDAP_COMPARE_FALSE, + LDAP_COMPARE_TRUE, + LDAP_STRONG_AUTH_NOT_SUPPORTED, + LDAP_AUTH_METHOD_NOT_SUPPORTED = LDAP_STRONG_AUTH_NOT_SUPPORTED, + LDAP_STRONG_AUTH_REQUIRED, + LDAP_REFERRAL_V2, + LDAP_PARTIAL_RESULTS = LDAP_REFERRAL_V2, + LDAP_REFERRAL, + LDAP_ADMIN_LIMIT_EXCEEDED, + LDAP_UNAVAILABLE_CRIT_EXTENSION, + LDAP_CONFIDENTIALITY_REQUIRED, + LDAP_SASL_BIND_IN_PROGRESS, // = 0x0e + LDAP_NO_SUCH_ATTRIBUTE = 0x10, + LDAP_UNDEFINED_TYPE, + LDAP_INAPPROPRIATE_MATCHING, + LDAP_CONSTRAINT_VIOLATION, + LDAP_TYPE_OR_VALUE_EXISTS, + LDAP_ATTRIBUTE_OR_VALUE_EXISTS = LDAP_TYPE_OR_VALUE_EXISTS, + LDAP_INVALID_SYNTAX, // = 0x15 + LDAP_NO_SUCH_OBJECT = 0x20, + LDAP_ALIAS_PROBLEM, + LDAP_INVALID_DN_SYNTAX, + LDAP_IS_LEAF, + LDAP_ALIAS_DEREF_PROBLEM, // = 0x24 + LDAP_INAPPROPRIATE_AUTH = 0x30, + LDAP_INVALID_CREDENTIALS, + LDAP_INSUFFICIENT_ACCESS, + LDAP_INSUFFICIENT_RIGHTS = LDAP_INSUFFICIENT_ACCESS, + LDAP_BUSY, + LDAP_UNAVAILABLE, + LDAP_UNWILLING_TO_PERFORM, + LDAP_LOOP_DETECT, // = 0x36 + LDAP_NAMING_VIOLATION = 0x40, + LDAP_OBJECT_CLASS_VIOLATION, + LDAP_NOT_ALLOWED_ON_NONLEAF, + LDAP_NOT_ALLOWED_ON_RDN, + LDAP_ALREADY_EXISTS, + LDAP_NO_OBJECT_CLASS_MODS, + LDAP_RESULTS_TOO_LARGE, + LDAP_AFFECTS_MULTIPLE_DSAS, // = 0x47 + LDAP_OTHER = 0x50, + LDAP_SERVER_DOWN, + LDAP_LOCAL_ERROR, + LDAP_ENCODING_ERROR, + LDAP_DECODING_ERROR, + LDAP_TIMEOUT, + LDAP_AUTH_UNKNOWN, + LDAP_FILTER_ERROR, + LDAP_USER_CANCELLED, + LDAP_PARAM_ERROR, + LDAP_NO_MEMORY, + LDAP_CONNECT_ERROR, + LDAP_NOT_SUPPORTED, + LDAP_CONTROL_NOT_FOUND, + LDAP_NO_RESULTS_RETURNED, + LDAP_MORE_RESULTS_TO_RETURN, + LDAP_CLIENT_LOOP, + LDAP_REFERRAL_LIMIT_EXCEEDED // = 0x61 } enum { - LDAP_PORT = 389, - LDAP_SSL_PORT = 636, - LDAP_GC_PORT = 3268, - LDAP_SSL_GC_PORT = 3269 + LDAP_PORT = 389, + LDAP_SSL_PORT = 636, + LDAP_GC_PORT = 3268, + LDAP_SSL_GC_PORT = 3269 } const void* - LDAP_OPT_OFF = null, - LDAP_OPT_ON = cast(void*) 1; + LDAP_OPT_OFF = null, + LDAP_OPT_ON = cast(void*) 1; enum { - LDAP_OPT_API_INFO = 0x00, - LDAP_OPT_DESC, - LDAP_OPT_DEREF, - LDAP_OPT_SIZELIMIT, - LDAP_OPT_TIMELIMIT, - LDAP_OPT_THREAD_FN_PTRS, - LDAP_OPT_REBIND_FN, - LDAP_OPT_REBIND_ARG, - LDAP_OPT_REFERRALS, - LDAP_OPT_RESTART, - LDAP_OPT_SSL, - LDAP_OPT_TLS = LDAP_OPT_SSL, - LDAP_OPT_IO_FN_PTRS, // = 0x0b - LDAP_OPT_CACHE_FN_PTRS = 0x0d, - LDAP_OPT_CACHE_STRATEGY, - LDAP_OPT_CACHE_ENABLE, - LDAP_OPT_REFERRAL_HOP_LIMIT, - LDAP_OPT_PROTOCOL_VERSION, - LDAP_OPT_VERSION = LDAP_OPT_PROTOCOL_VERSION, - LDAP_OPT_SERVER_CONTROLS, - LDAP_OPT_CLIENT_CONTROLS, // = 0x13 - LDAP_OPT_API_FEATURE_INFO = 0x15, - LDAP_OPT_HOST_NAME = 0x30, - LDAP_OPT_ERROR_NUMBER, - LDAP_OPT_ERROR_STRING, - LDAP_OPT_SERVER_ERROR, - LDAP_OPT_SERVER_EXT_ERROR, // = 0x34 - LDAP_OPT_PING_KEEP_ALIVE = 0x36, - LDAP_OPT_PING_WAIT_TIME, - LDAP_OPT_PING_LIMIT, // = 0x38 - LDAP_OPT_DNSDOMAIN_NAME = 0x3b, - LDAP_OPT_GETDSNAME_FLAGS = 0x3d, - LDAP_OPT_HOST_REACHABLE, - LDAP_OPT_PROMPT_CREDENTIALS, - LDAP_OPT_TCP_KEEPALIVE, // = 0x40 - LDAP_OPT_REFERRAL_CALLBACK = 0x70, - LDAP_OPT_CLIENT_CERTIFICATE = 0x80, - LDAP_OPT_SERVER_CERTIFICATE, // = 0x81 - LDAP_OPT_AUTO_RECONNECT = 0x91, - LDAP_OPT_SSPI_FLAGS, - LDAP_OPT_SSL_INFO, - LDAP_OPT_TLS_INFO = LDAP_OPT_SSL_INFO, - LDAP_OPT_REF_DEREF_CONN_PER_MSG, - LDAP_OPT_SIGN, - LDAP_OPT_ENCRYPT, - LDAP_OPT_SASL_METHOD, - LDAP_OPT_AREC_EXCLUSIVE, - LDAP_OPT_SECURITY_CONTEXT, - LDAP_OPT_ROOTDSE_CACHE // = 0x9a + LDAP_OPT_API_INFO = 0x00, + LDAP_OPT_DESC, + LDAP_OPT_DEREF, + LDAP_OPT_SIZELIMIT, + LDAP_OPT_TIMELIMIT, + LDAP_OPT_THREAD_FN_PTRS, + LDAP_OPT_REBIND_FN, + LDAP_OPT_REBIND_ARG, + LDAP_OPT_REFERRALS, + LDAP_OPT_RESTART, + LDAP_OPT_SSL, + LDAP_OPT_TLS = LDAP_OPT_SSL, + LDAP_OPT_IO_FN_PTRS, // = 0x0b + LDAP_OPT_CACHE_FN_PTRS = 0x0d, + LDAP_OPT_CACHE_STRATEGY, + LDAP_OPT_CACHE_ENABLE, + LDAP_OPT_REFERRAL_HOP_LIMIT, + LDAP_OPT_PROTOCOL_VERSION, + LDAP_OPT_VERSION = LDAP_OPT_PROTOCOL_VERSION, + LDAP_OPT_SERVER_CONTROLS, + LDAP_OPT_CLIENT_CONTROLS, // = 0x13 + LDAP_OPT_API_FEATURE_INFO = 0x15, + LDAP_OPT_HOST_NAME = 0x30, + LDAP_OPT_ERROR_NUMBER, + LDAP_OPT_ERROR_STRING, + LDAP_OPT_SERVER_ERROR, + LDAP_OPT_SERVER_EXT_ERROR, // = 0x34 + LDAP_OPT_PING_KEEP_ALIVE = 0x36, + LDAP_OPT_PING_WAIT_TIME, + LDAP_OPT_PING_LIMIT, // = 0x38 + LDAP_OPT_DNSDOMAIN_NAME = 0x3b, + LDAP_OPT_GETDSNAME_FLAGS = 0x3d, + LDAP_OPT_HOST_REACHABLE, + LDAP_OPT_PROMPT_CREDENTIALS, + LDAP_OPT_TCP_KEEPALIVE, // = 0x40 + LDAP_OPT_REFERRAL_CALLBACK = 0x70, + LDAP_OPT_CLIENT_CERTIFICATE = 0x80, + LDAP_OPT_SERVER_CERTIFICATE, // = 0x81 + LDAP_OPT_AUTO_RECONNECT = 0x91, + LDAP_OPT_SSPI_FLAGS, + LDAP_OPT_SSL_INFO, + LDAP_OPT_TLS_INFO = LDAP_OPT_SSL_INFO, + LDAP_OPT_REF_DEREF_CONN_PER_MSG, + LDAP_OPT_SIGN, + LDAP_OPT_ENCRYPT, + LDAP_OPT_SASL_METHOD, + LDAP_OPT_AREC_EXCLUSIVE, + LDAP_OPT_SECURITY_CONTEXT, + LDAP_OPT_ROOTDSE_CACHE // = 0x9a } enum { - LDAP_DEREF_NEVER, - LDAP_DEREF_SEARCHING, - LDAP_DEREF_FINDING, - LDAP_DEREF_ALWAYS + LDAP_DEREF_NEVER, + LDAP_DEREF_SEARCHING, + LDAP_DEREF_FINDING, + LDAP_DEREF_ALWAYS } const LDAP_NO_LIMIT = 0; @@ -197,162 +197,162 @@ const TCHAR[] LDAP_CONTROL_REFERRALS = "1.2.840.113556.1.4.616"; // FIXME: check type (declared with U suffix in MinGW) enum : uint { - LDAP_CHASE_SUBORDINATE_REFERRALS = 0x20, - LDAP_CHASE_EXTERNAL_REFERRALS = 0x40 + LDAP_CHASE_SUBORDINATE_REFERRALS = 0x20, + LDAP_CHASE_EXTERNAL_REFERRALS = 0x40 } enum { - LDAP_SCOPE_DEFAULT = -1, - LDAP_SCOPE_BASE, - LDAP_SCOPE_ONELEVEL, - LDAP_SCOPE_SUBTREE + LDAP_SCOPE_DEFAULT = -1, + LDAP_SCOPE_BASE, + LDAP_SCOPE_ONELEVEL, + LDAP_SCOPE_SUBTREE } enum { - LDAP_MOD_ADD, - LDAP_MOD_DELETE, - LDAP_MOD_REPLACE, - LDAP_MOD_BVALUES = 0x80 + LDAP_MOD_ADD, + LDAP_MOD_DELETE, + LDAP_MOD_REPLACE, + LDAP_MOD_BVALUES = 0x80 } enum : int { - LDAP_RES_BIND = 0x61, - LDAP_RES_SEARCH_ENTRY = 0x64, - LDAP_RES_SEARCH_RESULT = 0x65, - LDAP_RES_MODIFY = 0x67, - LDAP_RES_ADD = 0x69, - LDAP_RES_DELETE = 0x6b, - LDAP_RES_MODRDN = 0x6d, - LDAP_RES_COMPARE = 0x6f, - LDAP_RES_SEARCH_REFERENCE = 0x73, - LDAP_RES_EXTENDED = 0x78, - LDAP_RES_ANY = -1 + LDAP_RES_BIND = 0x61, + LDAP_RES_SEARCH_ENTRY = 0x64, + LDAP_RES_SEARCH_RESULT = 0x65, + LDAP_RES_MODIFY = 0x67, + LDAP_RES_ADD = 0x69, + LDAP_RES_DELETE = 0x6b, + LDAP_RES_MODRDN = 0x6d, + LDAP_RES_COMPARE = 0x6f, + LDAP_RES_SEARCH_REFERENCE = 0x73, + LDAP_RES_EXTENDED = 0x78, + LDAP_RES_ANY = -1 } enum { - LDAP_MSG_ONE, - LDAP_MSG_ALL, - LDAP_MSG_RECEIVED + LDAP_MSG_ONE, + LDAP_MSG_ALL, + LDAP_MSG_RECEIVED } const TCHAR[] - LDAP_SERVER_SORT_OID = "1.2.840.113556.1.4.473", - LDAP_SERVER_RESP_SORT_OID = "1.2.840.113556.1.4.474", - LDAP_PAGED_RESULT_OID_STRING = "1.2.840.113556.1.4.319", - LDAP_CONTROL_VLVREQUEST = "2.16.840.1.113730.3.4.9", - LDAP_CONTROL_VLVRESPONSE = "2.16.840.1.113730.3.4.10", - LDAP_START_TLS_OID = "1.3.6.1.4.1.1466.20037", - LDAP_TTL_EXTENDED_OP_OID = "1.3.6.1.4.1.1466.101.119.1"; + LDAP_SERVER_SORT_OID = "1.2.840.113556.1.4.473", + LDAP_SERVER_RESP_SORT_OID = "1.2.840.113556.1.4.474", + LDAP_PAGED_RESULT_OID_STRING = "1.2.840.113556.1.4.319", + LDAP_CONTROL_VLVREQUEST = "2.16.840.1.113730.3.4.9", + LDAP_CONTROL_VLVRESPONSE = "2.16.840.1.113730.3.4.10", + LDAP_START_TLS_OID = "1.3.6.1.4.1.1466.20037", + LDAP_TTL_EXTENDED_OP_OID = "1.3.6.1.4.1.1466.101.119.1"; enum { - LDAP_AUTH_NONE = 0x00U, - LDAP_AUTH_SIMPLE = 0x80U, - LDAP_AUTH_SASL = 0x83U, - LDAP_AUTH_OTHERKIND = 0x86U, - LDAP_AUTH_EXTERNAL = LDAP_AUTH_OTHERKIND | 0x0020U, - LDAP_AUTH_SICILY = LDAP_AUTH_OTHERKIND | 0x0200U, - LDAP_AUTH_NEGOTIATE = LDAP_AUTH_OTHERKIND | 0x0400U, - LDAP_AUTH_MSN = LDAP_AUTH_OTHERKIND | 0x0800U, - LDAP_AUTH_NTLM = LDAP_AUTH_OTHERKIND | 0x1000U, - LDAP_AUTH_DIGEST = LDAP_AUTH_OTHERKIND | 0x4000U, - LDAP_AUTH_DPA = LDAP_AUTH_OTHERKIND | 0x2000U, - LDAP_AUTH_SSPI = LDAP_AUTH_NEGOTIATE + LDAP_AUTH_NONE = 0x00U, + LDAP_AUTH_SIMPLE = 0x80U, + LDAP_AUTH_SASL = 0x83U, + LDAP_AUTH_OTHERKIND = 0x86U, + LDAP_AUTH_EXTERNAL = LDAP_AUTH_OTHERKIND | 0x0020U, + LDAP_AUTH_SICILY = LDAP_AUTH_OTHERKIND | 0x0200U, + LDAP_AUTH_NEGOTIATE = LDAP_AUTH_OTHERKIND | 0x0400U, + LDAP_AUTH_MSN = LDAP_AUTH_OTHERKIND | 0x0800U, + LDAP_AUTH_NTLM = LDAP_AUTH_OTHERKIND | 0x1000U, + LDAP_AUTH_DIGEST = LDAP_AUTH_OTHERKIND | 0x4000U, + LDAP_AUTH_DPA = LDAP_AUTH_OTHERKIND | 0x2000U, + LDAP_AUTH_SSPI = LDAP_AUTH_NEGOTIATE } enum { - LDAP_FILTER_AND = 0xa0, - LDAP_FILTER_OR, - LDAP_FILTER_NOT, - LDAP_FILTER_EQUALITY, - LDAP_FILTER_SUBSTRINGS, - LDAP_FILTER_GE, - LDAP_FILTER_LE, // = 0xa6 - LDAP_FILTER_APPROX = 0xa8, - LDAP_FILTER_EXTENSIBLE, - LDAP_FILTER_PRESENT = 0x87 + LDAP_FILTER_AND = 0xa0, + LDAP_FILTER_OR, + LDAP_FILTER_NOT, + LDAP_FILTER_EQUALITY, + LDAP_FILTER_SUBSTRINGS, + LDAP_FILTER_GE, + LDAP_FILTER_LE, // = 0xa6 + LDAP_FILTER_APPROX = 0xa8, + LDAP_FILTER_EXTENSIBLE, + LDAP_FILTER_PRESENT = 0x87 } enum { - LDAP_SUBSTRING_INITIAL = 0x80, - LDAP_SUBSTRING_ANY, - LDAP_SUBSTRING_FINAL + LDAP_SUBSTRING_INITIAL = 0x80, + LDAP_SUBSTRING_ANY, + LDAP_SUBSTRING_FINAL } struct LDAP { - char[76] Reserved; - PCHAR ld_host; - ULONG ld_version; - UCHAR ld_lberoptions; - int ld_deref; - int ld_timelimit; - int ld_sizelimit; - int ld_errno; - PCHAR ld_matched; - PCHAR ld_error; + char[76] Reserved; + PCHAR ld_host; + ULONG ld_version; + UCHAR ld_lberoptions; + int ld_deref; + int ld_timelimit; + int ld_sizelimit; + int ld_errno; + PCHAR ld_matched; + PCHAR ld_error; } alias LDAP* PLDAP; struct LDAPMessage { - ULONG lm_msgid; - ULONG lm_msgtype; - BerElement* lm_ber; - LDAPMessage* lm_chain; - LDAPMessage* lm_next; - ULONG lm_time; + ULONG lm_msgid; + ULONG lm_msgtype; + BerElement* lm_ber; + LDAPMessage* lm_chain; + LDAPMessage* lm_next; + ULONG lm_time; } alias LDAPMessage* PLDAPMessage; struct LDAP_TIMEVAL { - LONG tv_sec; - LONG tv_usec; + LONG tv_sec; + LONG tv_usec; } alias LDAP_TIMEVAL* PLDAP_TIMEVAL; struct LDAPAPIInfoA { - int ldapai_info_version; - int ldapai_api_version; - int ldapai_protocol_version; - char** ldapai_extensions; - char* ldapai_vendor_name; - int ldapai_vendor_version; + int ldapai_info_version; + int ldapai_api_version; + int ldapai_protocol_version; + char** ldapai_extensions; + char* ldapai_vendor_name; + int ldapai_vendor_version; } alias LDAPAPIInfoA* PLDAPAPIInfoA; struct LDAPAPIInfoW { - int ldapai_info_version; - int ldapai_api_version; - int ldapai_protocol_version; - PWCHAR* ldapai_extensions; - PWCHAR ldapai_vendor_name; - int ldapai_vendor_version; + int ldapai_info_version; + int ldapai_api_version; + int ldapai_protocol_version; + PWCHAR* ldapai_extensions; + PWCHAR ldapai_vendor_name; + int ldapai_vendor_version; } alias LDAPAPIInfoW* PLDAPAPIInfoW; struct LDAPAPIFeatureInfoA { - int ldapaif_info_version; - char* ldapaif_name; - int ldapaif_version; + int ldapaif_info_version; + char* ldapaif_name; + int ldapaif_version; } alias LDAPAPIFeatureInfoA* PLDAPAPIFeatureInfoA; struct LDAPAPIFeatureInfoW { - int ldapaif_info_version; - PWCHAR ldapaif_name; - int ldapaif_version; + int ldapaif_info_version; + PWCHAR ldapaif_name; + int ldapaif_version; } alias LDAPAPIFeatureInfoW* PLDAPAPIFeatureInfoW; struct LDAPControlA { - PCHAR ldctl_oid; - BerValue ldctl_value; - BOOLEAN ldctl_iscritical; + PCHAR ldctl_oid; + BerValue ldctl_value; + BOOLEAN ldctl_iscritical; } alias LDAPControlA* PLDAPControlA; struct LDAPControlW { - PWCHAR ldctl_oid; - BerValue ldctl_value; - BOOLEAN ldctl_iscritical; + PWCHAR ldctl_oid; + BerValue ldctl_value; + BOOLEAN ldctl_iscritical; } alias LDAPControlW* PLDAPControlW; @@ -361,38 +361,38 @@ alias LDAPControlW* PLDAPControlW; * structures. */ union mod_vals_u_tA { - PCHAR* modv_strvals; - BerValue** modv_bvals; + PCHAR* modv_strvals; + BerValue** modv_bvals; } union mod_vals_u_tW { - PWCHAR* modv_strvals; - BerValue** modv_bvals; + PWCHAR* modv_strvals; + BerValue** modv_bvals; } struct LDAPModA { - ULONG mod_op; - PCHAR mod_type; + ULONG mod_op; + PCHAR mod_type; - union { - mod_vals_u_tA mod_vals; - // The following members are defined as macros in MinGW. - PCHAR* mod_values; - BerValue** mod_bvalues; - } + union { + mod_vals_u_tA mod_vals; + // The following members are defined as macros in MinGW. + PCHAR* mod_values; + BerValue** mod_bvalues; + } } alias LDAPModA* PLDAPModA; struct LDAPModW { - ULONG mod_op; - PWCHAR mod_type; + ULONG mod_op; + PWCHAR mod_type; - union { - mod_vals_u_tW mod_vals; - // The following members are defined as macros in MinGW. - PWCHAR* mod_values; - BerValue** mod_bvalues; - } + union { + mod_vals_u_tW mod_vals; + // The following members are defined as macros in MinGW. + PWCHAR* mod_values; + BerValue** mod_bvalues; + } } alias LDAPModW* PLDAPModW; @@ -403,16 +403,16 @@ struct LDAPSearch; alias LDAPSearch* PLDAPSearch; struct LDAPSortKeyA { - PCHAR sk_attrtype; - PCHAR sk_matchruleoid; - BOOLEAN sk_reverseorder; + PCHAR sk_attrtype; + PCHAR sk_matchruleoid; + BOOLEAN sk_reverseorder; } alias LDAPSortKeyA* PLDAPSortKeyA; struct LDAPSortKeyW { - PWCHAR sk_attrtype; - PWCHAR sk_matchruleoid; - BOOLEAN sk_reverseorder; + PWCHAR sk_attrtype; + PWCHAR sk_matchruleoid; + BOOLEAN sk_reverseorder; } alias LDAPSortKeyW* PLDAPSortKeyW; @@ -420,32 +420,32 @@ alias LDAPSortKeyW* PLDAPSortKeyW; * well into D. */ extern (C) { - alias ULONG function(PLDAP, PLDAP, PWCHAR, PCHAR, ULONG, PVOID, PVOID, - PLDAP*) QUERYFORCONNECTION; - alias BOOLEAN function(PLDAP, PLDAP, PWCHAR, PCHAR, PLDAP, ULONG, PVOID, - PVOID, ULONG) NOTIFYOFNEWCONNECTION; - alias ULONG function(PLDAP, PLDAP) DEREFERENCECONNECTION; - alias BOOLEAN function(PLDAP, PSecPkgContext_IssuerListInfoEx, - PCCERT_CONTEXT*) QUERYCLIENTCERT; + alias ULONG function(PLDAP, PLDAP, PWCHAR, PCHAR, ULONG, PVOID, PVOID, + PLDAP*) QUERYFORCONNECTION; + alias BOOLEAN function(PLDAP, PLDAP, PWCHAR, PCHAR, PLDAP, ULONG, PVOID, + PVOID, ULONG) NOTIFYOFNEWCONNECTION; + alias ULONG function(PLDAP, PLDAP) DEREFERENCECONNECTION; + alias BOOLEAN function(PLDAP, PSecPkgContext_IssuerListInfoEx, + PCCERT_CONTEXT*) QUERYCLIENTCERT; } struct LDAP_REFERRAL_CALLBACK { - ULONG SizeOfCallbacks; - QUERYFORCONNECTION* QueryForConnection; - NOTIFYOFNEWCONNECTION* NotifyRoutine; - DEREFERENCECONNECTION* DereferenceRoutine; + ULONG SizeOfCallbacks; + QUERYFORCONNECTION* QueryForConnection; + NOTIFYOFNEWCONNECTION* NotifyRoutine; + DEREFERENCECONNECTION* DereferenceRoutine; } alias LDAP_REFERRAL_CALLBACK* PLDAP_REFERRAL_CALLBACK; struct LDAPVLVInfo { - int ldvlv_version; - uint ldvlv_before_count; - uint ldvlv_after_count; - uint ldvlv_offset; - uint ldvlv_count; - BerValue* ldvlv_attrvalue; - BerValue* ldvlv_context; - void* ldvlv_extradata; + int ldvlv_version; + uint ldvlv_before_count; + uint ldvlv_after_count; + uint ldvlv_offset; + uint ldvlv_count; + BerValue* ldvlv_attrvalue; + BerValue* ldvlv_context; + void* ldvlv_extradata; } /* @@ -454,400 +454,400 @@ struct LDAPVLVInfo { */ private extern (C) int printf(in char* format, ...); int ldap_perror(LDAP* handle, char* message) { - return printf("%s: %s\n", message, handle.ld_error); + return printf("%s: %s\n", message, handle.ld_error); } /* FIXME: In MinGW, these are WINLDAPAPI == DECLSPEC_IMPORT. Linkage * attribute? */ extern (C) { - PLDAP ldap_initA(PCHAR, ULONG); - PLDAP ldap_initW(PWCHAR, ULONG); - PLDAP ldap_openA(PCHAR, ULONG); - PLDAP ldap_openW(PWCHAR, ULONG); - PLDAP cldap_openA(PCHAR, ULONG); - PLDAP cldap_openW(PWCHAR, ULONG); - ULONG ldap_connect(LDAP*, LDAP_TIMEVAL*); - PLDAP ldap_sslinitA(PCHAR, ULONG, int); - PLDAP ldap_sslinitW(PWCHAR, ULONG, int); - ULONG ldap_start_tls_sA(LDAP*, PLDAPControlA*, PLDAPControlA*); - ULONG ldap_start_tls_sW(LDAP*, PLDAPControlW*, PLDAPControlW*); - BOOLEAN ldap_stop_tls_s(LDAP*); - ULONG ldap_get_optionA(LDAP*, int, void*); - ULONG ldap_get_optionW(LDAP*, int, void*); - ULONG ldap_set_optionA(LDAP*, int, void*); - ULONG ldap_set_optionW(LDAP*, int, void*); - ULONG ldap_control_freeA(LDAPControlA*); - ULONG ldap_control_freeW(LDAPControlW*); - ULONG ldap_controls_freeA(LDAPControlA**); - ULONG ldap_controls_freeW(LDAPControlW**); - ULONG ldap_free_controlsA(LDAPControlA**); - ULONG ldap_free_controlsW(LDAPControlW**); - ULONG ldap_sasl_bindA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, - PLDAPControlA*, int*); - ULONG ldap_sasl_bindW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, - PLDAPControlW*, int*); - ULONG ldap_sasl_bind_sA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, - PLDAPControlA*, PBERVAL*); - ULONG ldap_sasl_bind_sW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, - PLDAPControlW*, PBERVAL*); - ULONG ldap_simple_bindA(LDAP*, PCHAR, PCHAR); - ULONG ldap_simple_bindW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_simple_bind_sA(LDAP*, PCHAR, PCHAR); - ULONG ldap_simple_bind_sW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_unbind(LDAP*); - ULONG ldap_unbind_s(LDAP*); - ULONG ldap_search_extA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); - ULONG ldap_search_extW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); - ULONG ldap_search_ext_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - PLDAPControlA*, PLDAPControlA*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); - ULONG ldap_search_ext_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - PLDAPControlW*, PLDAPControlW*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); - ULONG ldap_searchA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG); - ULONG ldap_searchW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG); - ULONG ldap_search_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - LDAPMessage**); - ULONG ldap_search_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - LDAPMessage**); - ULONG ldap_search_stA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - LDAP_TIMEVAL*, LDAPMessage**); - ULONG ldap_search_stW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - LDAP_TIMEVAL*, LDAPMessage**); - ULONG ldap_compare_extA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, - PLDAPControlA*, PLDAPControlA*, ULONG*); - ULONG ldap_compare_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, - PLDAPControlW*, PLDAPControlW*, ULONG*); - ULONG ldap_compare_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, - PLDAPControlA*, PLDAPControlA*); - ULONG ldap_compare_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, - PLDAPControlW*, PLDAPControlW*); - ULONG ldap_compareA(LDAP*, PCHAR, PCHAR, PCHAR); - ULONG ldap_compareW(LDAP*, PWCHAR, PWCHAR, PWCHAR); - ULONG ldap_compare_sA(LDAP*, PCHAR, PCHAR, PCHAR); - ULONG ldap_compare_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR); - ULONG ldap_modify_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_modify_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_modify_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*); - ULONG ldap_modify_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*); - ULONG ldap_modifyA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_modifyW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_modify_sA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_modify_sW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_rename_extA(LDAP*, PCHAR, PCHAR, PCHAR, INT, PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_rename_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_rename_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, INT, - PLDAPControlA*, PLDAPControlA*); - ULONG ldap_rename_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, - PLDAPControlW*, PLDAPControlW*); - ULONG ldap_add_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_add_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_add_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*); - ULONG ldap_add_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*); - ULONG ldap_addA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_addW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_add_sA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_add_sW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_delete_extA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*, - ULONG*); - ULONG ldap_delete_extW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*, - ULONG*); - ULONG ldap_delete_ext_sA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*); - ULONG ldap_delete_ext_sW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*); - ULONG ldap_deleteA(LDAP*, PCHAR); - ULONG ldap_deleteW(LDAP*, PWCHAR); - ULONG ldap_delete_sA(LDAP*, PCHAR); - ULONG ldap_delete_sW(LDAP*, PWCHAR); - ULONG ldap_extended_operationA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_extended_operationW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_extended_operation_sA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, - PLDAPControlA*, PCHAR*, BerValue**); - ULONG ldap_extended_operation_sW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, - PLDAPControlW*, PWCHAR*, BerValue**); - ULONG ldap_close_extended_op(LDAP*, ULONG); - ULONG ldap_abandon(LDAP*, ULONG); - ULONG ldap_result(LDAP*, ULONG, ULONG, LDAP_TIMEVAL*, LDAPMessage**); - ULONG ldap_msgfree(LDAPMessage*); - ULONG ldap_parse_resultA(LDAP*, LDAPMessage*, ULONG*, PCHAR*, PCHAR*, - PCHAR**, PLDAPControlA**, BOOLEAN); - ULONG ldap_parse_resultW(LDAP*, LDAPMessage*, ULONG*, PWCHAR*, PWCHAR*, - PWCHAR**, PLDAPControlW**, BOOLEAN); - ULONG ldap_parse_extended_resultA(LDAP, LDAPMessage*, PCHAR*, BerValue**, - BOOLEAN); - ULONG ldap_parse_extended_resultW(LDAP, LDAPMessage*, PWCHAR*, BerValue**, - BOOLEAN); - PCHAR ldap_err2stringA(ULONG); - PWCHAR ldap_err2stringW(ULONG); - ULONG LdapGetLastError(); - ULONG LdapMapErrorToWin32(ULONG); - ULONG ldap_result2error(LDAP*, LDAPMessage*, ULONG); - PLDAPMessage ldap_first_entry(LDAP*, LDAPMessage*); - PLDAPMessage ldap_next_entry(LDAP*, LDAPMessage*); - PLDAPMessage ldap_first_reference(LDAP*, LDAPMessage*); - PLDAPMessage ldap_next_reference(LDAP*, LDAPMessage*); - ULONG ldap_count_entries(LDAP*, LDAPMessage*); - ULONG ldap_count_references(LDAP*, LDAPMessage*); - PCHAR ldap_first_attributeA(LDAP*, LDAPMessage*, BerElement**); - PWCHAR ldap_first_attributeW(LDAP*, LDAPMessage*, BerElement**); - PCHAR ldap_next_attributeA(LDAP*, LDAPMessage*, BerElement*); - PWCHAR ldap_next_attributeW(LDAP*, LDAPMessage*, BerElement*); - VOID ldap_memfreeA(PCHAR); - VOID ldap_memfreeW(PWCHAR); - PCHAR* ldap_get_valuesA(LDAP*, LDAPMessage*, PCHAR); - PWCHAR* ldap_get_valuesW(LDAP*, LDAPMessage*, PWCHAR); - BerValue** ldap_get_values_lenA(LDAP*, LDAPMessage*, PCHAR); - BerValue** ldap_get_values_lenW(LDAP*, LDAPMessage*, PWCHAR); - ULONG ldap_count_valuesA(PCHAR*); - ULONG ldap_count_valuesW(PWCHAR*); - ULONG ldap_count_values_len(BerValue**); - ULONG ldap_value_freeA(PCHAR*); - ULONG ldap_value_freeW(PWCHAR*); - ULONG ldap_value_free_len(BerValue**); - PCHAR ldap_get_dnA(LDAP*, LDAPMessage*); - PWCHAR ldap_get_dnW(LDAP*, LDAPMessage*); - PCHAR ldap_explode_dnA(PCHAR, ULONG); - PWCHAR ldap_explode_dnW(PWCHAR, ULONG); - PCHAR ldap_dn2ufnA(PCHAR); - PWCHAR ldap_dn2ufnW(PWCHAR); - ULONG ldap_ufn2dnA(PCHAR, PCHAR*); - ULONG ldap_ufn2dnW(PWCHAR, PWCHAR*); - ULONG ldap_parse_referenceA(LDAP*, LDAPMessage*, PCHAR**); - ULONG ldap_parse_referenceW(LDAP*, LDAPMessage*, PWCHAR**); - ULONG ldap_check_filterA(LDAP*, PCHAR); - ULONG ldap_check_filterW(LDAP*, PWCHAR); - ULONG ldap_create_page_controlA(PLDAP, ULONG, BerValue*, UCHAR, - PLDAPControlA*); - ULONG ldap_create_page_controlW(PLDAP, ULONG, BerValue*, UCHAR, - PLDAPControlW*); - ULONG ldap_create_sort_controlA(PLDAP, PLDAPSortKeyA*, UCHAR, - PLDAPControlA*); - ULONG ldap_create_sort_controlW(PLDAP, PLDAPSortKeyW*, UCHAR, - PLDAPControlW*); - INT ldap_create_vlv_controlA(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlA**); - INT ldap_create_vlv_controlW(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlW**); - ULONG ldap_encode_sort_controlA(PLDAP, PLDAPSortKeyA*, PLDAPControlA, - BOOLEAN); - ULONG ldap_encode_sort_controlW(PLDAP, PLDAPSortKeyW*, PLDAPControlW, - BOOLEAN); - ULONG ldap_escape_filter_elementA(PCHAR, ULONG, PCHAR, ULONG); - ULONG ldap_escape_filter_elementW(PWCHAR, ULONG, PWCHAR, ULONG); - ULONG ldap_get_next_page(PLDAP, PLDAPSearch, ULONG, ULONG*); - ULONG ldap_get_next_page_s(PLDAP, PLDAPSearch, LDAP_TIMEVAL*, ULONG, - ULONG*, LDAPMessage**); - ULONG ldap_get_paged_count(PLDAP, PLDAPSearch, ULONG*, PLDAPMessage); - ULONG ldap_parse_page_controlA(PLDAP, PLDAPControlA*, ULONG*, BerValue**); - ULONG ldap_parse_page_controlW(PLDAP, PLDAPControlW*, ULONG*, BerValue**); - ULONG ldap_parse_sort_controlA(PLDAP, PLDAPControlA*, ULONG*, PCHAR*); - ULONG ldap_parse_sort_controlW(PLDAP, PLDAPControlW*, ULONG*, PWCHAR*); - INT ldap_parse_vlv_controlA(LDAP*, LDAPControlA**, uint*, uint*, - BerValue**, int*); - INT ldap_parse_vlv_controlW(LDAP*, LDAPControlW**, uint*, uint*, - BerValue**, int*); - PLDAPSearch ldap_search_init_pageA(PLDAP, PCHAR, ULONG, PCHAR, PCHAR[], - ULONG, PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, PLDAPSortKeyA*); - PLDAPSearch ldap_search_init_pageW(PLDAP, PWCHAR, ULONG, PWCHAR, PWCHAR[], - ULONG, PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, PLDAPSortKeyW*); - ULONG ldap_search_abandon_page(PLDAP, PLDAPSearch); - LDAP ldap_conn_from_msg(LDAP*, LDAPMessage*); - INT LdapUnicodeToUTF8(LPCWSTR, int, LPSTR, int); - INT LdapUTF8ToUnicode(LPCSTR, int, LPWSTR, int); - deprecated { - ULONG ldap_bindA(LDAP*, PCHAR, PCHAR, ULONG); - ULONG ldap_bindW(LDAP*, PWCHAR, PWCHAR, ULONG); - ULONG ldap_bind_sA(LDAP*, PCHAR, PCHAR, ULONG); - ULONG ldap_bind_sW(LDAP*, PWCHAR, PWCHAR, ULONG); - ULONG ldap_modrdnA(LDAP*, PCHAR, PCHAR); - ULONG ldap_modrdnW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_modrdn_sA(LDAP*, PCHAR, PCHAR); - ULONG ldap_modrdn_sW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_modrdn2A(LDAP*, PCHAR, PCHAR, INT); - ULONG ldap_modrdn2W(LDAP*, PWCHAR, PWCHAR, INT); - ULONG ldap_modrdn2_sA(LDAP*, PCHAR, PCHAR, INT); - ULONG ldap_modrdn2_sW(LDAP*, PWCHAR, PWCHAR, INT); - } + PLDAP ldap_initA(PCHAR, ULONG); + PLDAP ldap_initW(PWCHAR, ULONG); + PLDAP ldap_openA(PCHAR, ULONG); + PLDAP ldap_openW(PWCHAR, ULONG); + PLDAP cldap_openA(PCHAR, ULONG); + PLDAP cldap_openW(PWCHAR, ULONG); + ULONG ldap_connect(LDAP*, LDAP_TIMEVAL*); + PLDAP ldap_sslinitA(PCHAR, ULONG, int); + PLDAP ldap_sslinitW(PWCHAR, ULONG, int); + ULONG ldap_start_tls_sA(LDAP*, PLDAPControlA*, PLDAPControlA*); + ULONG ldap_start_tls_sW(LDAP*, PLDAPControlW*, PLDAPControlW*); + BOOLEAN ldap_stop_tls_s(LDAP*); + ULONG ldap_get_optionA(LDAP*, int, void*); + ULONG ldap_get_optionW(LDAP*, int, void*); + ULONG ldap_set_optionA(LDAP*, int, void*); + ULONG ldap_set_optionW(LDAP*, int, void*); + ULONG ldap_control_freeA(LDAPControlA*); + ULONG ldap_control_freeW(LDAPControlW*); + ULONG ldap_controls_freeA(LDAPControlA**); + ULONG ldap_controls_freeW(LDAPControlW**); + ULONG ldap_free_controlsA(LDAPControlA**); + ULONG ldap_free_controlsW(LDAPControlW**); + ULONG ldap_sasl_bindA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, + PLDAPControlA*, int*); + ULONG ldap_sasl_bindW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, + PLDAPControlW*, int*); + ULONG ldap_sasl_bind_sA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, + PLDAPControlA*, PBERVAL*); + ULONG ldap_sasl_bind_sW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, + PLDAPControlW*, PBERVAL*); + ULONG ldap_simple_bindA(LDAP*, PCHAR, PCHAR); + ULONG ldap_simple_bindW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_simple_bind_sA(LDAP*, PCHAR, PCHAR); + ULONG ldap_simple_bind_sW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_unbind(LDAP*); + ULONG ldap_unbind_s(LDAP*); + ULONG ldap_search_extA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); + ULONG ldap_search_extW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); + ULONG ldap_search_ext_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + PLDAPControlA*, PLDAPControlA*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); + ULONG ldap_search_ext_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); + ULONG ldap_searchA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG); + ULONG ldap_searchW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG); + ULONG ldap_search_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + LDAPMessage**); + ULONG ldap_search_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + LDAPMessage**); + ULONG ldap_search_stA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_search_stW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_compare_extA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, + PLDAPControlA*, PLDAPControlA*, ULONG*); + ULONG ldap_compare_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, + PLDAPControlW*, PLDAPControlW*, ULONG*); + ULONG ldap_compare_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, + PLDAPControlA*, PLDAPControlA*); + ULONG ldap_compare_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, + PLDAPControlW*, PLDAPControlW*); + ULONG ldap_compareA(LDAP*, PCHAR, PCHAR, PCHAR); + ULONG ldap_compareW(LDAP*, PWCHAR, PWCHAR, PWCHAR); + ULONG ldap_compare_sA(LDAP*, PCHAR, PCHAR, PCHAR); + ULONG ldap_compare_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR); + ULONG ldap_modify_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_modify_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_modify_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*); + ULONG ldap_modify_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*); + ULONG ldap_modifyA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_modifyW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_modify_sA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_modify_sW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_rename_extA(LDAP*, PCHAR, PCHAR, PCHAR, INT, PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_rename_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_rename_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, INT, + PLDAPControlA*, PLDAPControlA*); + ULONG ldap_rename_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, + PLDAPControlW*, PLDAPControlW*); + ULONG ldap_add_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_add_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_add_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*); + ULONG ldap_add_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*); + ULONG ldap_addA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_addW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_add_sA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_add_sW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_delete_extA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*, + ULONG*); + ULONG ldap_delete_extW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*, + ULONG*); + ULONG ldap_delete_ext_sA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*); + ULONG ldap_delete_ext_sW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*); + ULONG ldap_deleteA(LDAP*, PCHAR); + ULONG ldap_deleteW(LDAP*, PWCHAR); + ULONG ldap_delete_sA(LDAP*, PCHAR); + ULONG ldap_delete_sW(LDAP*, PWCHAR); + ULONG ldap_extended_operationA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_extended_operationW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_extended_operation_sA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, + PLDAPControlA*, PCHAR*, BerValue**); + ULONG ldap_extended_operation_sW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, + PLDAPControlW*, PWCHAR*, BerValue**); + ULONG ldap_close_extended_op(LDAP*, ULONG); + ULONG ldap_abandon(LDAP*, ULONG); + ULONG ldap_result(LDAP*, ULONG, ULONG, LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_msgfree(LDAPMessage*); + ULONG ldap_parse_resultA(LDAP*, LDAPMessage*, ULONG*, PCHAR*, PCHAR*, + PCHAR**, PLDAPControlA**, BOOLEAN); + ULONG ldap_parse_resultW(LDAP*, LDAPMessage*, ULONG*, PWCHAR*, PWCHAR*, + PWCHAR**, PLDAPControlW**, BOOLEAN); + ULONG ldap_parse_extended_resultA(LDAP, LDAPMessage*, PCHAR*, BerValue**, + BOOLEAN); + ULONG ldap_parse_extended_resultW(LDAP, LDAPMessage*, PWCHAR*, BerValue**, + BOOLEAN); + PCHAR ldap_err2stringA(ULONG); + PWCHAR ldap_err2stringW(ULONG); + ULONG LdapGetLastError(); + ULONG LdapMapErrorToWin32(ULONG); + ULONG ldap_result2error(LDAP*, LDAPMessage*, ULONG); + PLDAPMessage ldap_first_entry(LDAP*, LDAPMessage*); + PLDAPMessage ldap_next_entry(LDAP*, LDAPMessage*); + PLDAPMessage ldap_first_reference(LDAP*, LDAPMessage*); + PLDAPMessage ldap_next_reference(LDAP*, LDAPMessage*); + ULONG ldap_count_entries(LDAP*, LDAPMessage*); + ULONG ldap_count_references(LDAP*, LDAPMessage*); + PCHAR ldap_first_attributeA(LDAP*, LDAPMessage*, BerElement**); + PWCHAR ldap_first_attributeW(LDAP*, LDAPMessage*, BerElement**); + PCHAR ldap_next_attributeA(LDAP*, LDAPMessage*, BerElement*); + PWCHAR ldap_next_attributeW(LDAP*, LDAPMessage*, BerElement*); + VOID ldap_memfreeA(PCHAR); + VOID ldap_memfreeW(PWCHAR); + PCHAR* ldap_get_valuesA(LDAP*, LDAPMessage*, PCHAR); + PWCHAR* ldap_get_valuesW(LDAP*, LDAPMessage*, PWCHAR); + BerValue** ldap_get_values_lenA(LDAP*, LDAPMessage*, PCHAR); + BerValue** ldap_get_values_lenW(LDAP*, LDAPMessage*, PWCHAR); + ULONG ldap_count_valuesA(PCHAR*); + ULONG ldap_count_valuesW(PWCHAR*); + ULONG ldap_count_values_len(BerValue**); + ULONG ldap_value_freeA(PCHAR*); + ULONG ldap_value_freeW(PWCHAR*); + ULONG ldap_value_free_len(BerValue**); + PCHAR ldap_get_dnA(LDAP*, LDAPMessage*); + PWCHAR ldap_get_dnW(LDAP*, LDAPMessage*); + PCHAR ldap_explode_dnA(PCHAR, ULONG); + PWCHAR ldap_explode_dnW(PWCHAR, ULONG); + PCHAR ldap_dn2ufnA(PCHAR); + PWCHAR ldap_dn2ufnW(PWCHAR); + ULONG ldap_ufn2dnA(PCHAR, PCHAR*); + ULONG ldap_ufn2dnW(PWCHAR, PWCHAR*); + ULONG ldap_parse_referenceA(LDAP*, LDAPMessage*, PCHAR**); + ULONG ldap_parse_referenceW(LDAP*, LDAPMessage*, PWCHAR**); + ULONG ldap_check_filterA(LDAP*, PCHAR); + ULONG ldap_check_filterW(LDAP*, PWCHAR); + ULONG ldap_create_page_controlA(PLDAP, ULONG, BerValue*, UCHAR, + PLDAPControlA*); + ULONG ldap_create_page_controlW(PLDAP, ULONG, BerValue*, UCHAR, + PLDAPControlW*); + ULONG ldap_create_sort_controlA(PLDAP, PLDAPSortKeyA*, UCHAR, + PLDAPControlA*); + ULONG ldap_create_sort_controlW(PLDAP, PLDAPSortKeyW*, UCHAR, + PLDAPControlW*); + INT ldap_create_vlv_controlA(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlA**); + INT ldap_create_vlv_controlW(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlW**); + ULONG ldap_encode_sort_controlA(PLDAP, PLDAPSortKeyA*, PLDAPControlA, + BOOLEAN); + ULONG ldap_encode_sort_controlW(PLDAP, PLDAPSortKeyW*, PLDAPControlW, + BOOLEAN); + ULONG ldap_escape_filter_elementA(PCHAR, ULONG, PCHAR, ULONG); + ULONG ldap_escape_filter_elementW(PWCHAR, ULONG, PWCHAR, ULONG); + ULONG ldap_get_next_page(PLDAP, PLDAPSearch, ULONG, ULONG*); + ULONG ldap_get_next_page_s(PLDAP, PLDAPSearch, LDAP_TIMEVAL*, ULONG, + ULONG*, LDAPMessage**); + ULONG ldap_get_paged_count(PLDAP, PLDAPSearch, ULONG*, PLDAPMessage); + ULONG ldap_parse_page_controlA(PLDAP, PLDAPControlA*, ULONG*, BerValue**); + ULONG ldap_parse_page_controlW(PLDAP, PLDAPControlW*, ULONG*, BerValue**); + ULONG ldap_parse_sort_controlA(PLDAP, PLDAPControlA*, ULONG*, PCHAR*); + ULONG ldap_parse_sort_controlW(PLDAP, PLDAPControlW*, ULONG*, PWCHAR*); + INT ldap_parse_vlv_controlA(LDAP*, LDAPControlA**, uint*, uint*, + BerValue**, int*); + INT ldap_parse_vlv_controlW(LDAP*, LDAPControlW**, uint*, uint*, + BerValue**, int*); + PLDAPSearch ldap_search_init_pageA(PLDAP, PCHAR, ULONG, PCHAR, PCHAR[], + ULONG, PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, PLDAPSortKeyA*); + PLDAPSearch ldap_search_init_pageW(PLDAP, PWCHAR, ULONG, PWCHAR, PWCHAR[], + ULONG, PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, PLDAPSortKeyW*); + ULONG ldap_search_abandon_page(PLDAP, PLDAPSearch); + LDAP ldap_conn_from_msg(LDAP*, LDAPMessage*); + INT LdapUnicodeToUTF8(LPCWSTR, int, LPSTR, int); + INT LdapUTF8ToUnicode(LPCSTR, int, LPWSTR, int); + deprecated { + ULONG ldap_bindA(LDAP*, PCHAR, PCHAR, ULONG); + ULONG ldap_bindW(LDAP*, PWCHAR, PWCHAR, ULONG); + ULONG ldap_bind_sA(LDAP*, PCHAR, PCHAR, ULONG); + ULONG ldap_bind_sW(LDAP*, PWCHAR, PWCHAR, ULONG); + ULONG ldap_modrdnA(LDAP*, PCHAR, PCHAR); + ULONG ldap_modrdnW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_modrdn_sA(LDAP*, PCHAR, PCHAR); + ULONG ldap_modrdn_sW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_modrdn2A(LDAP*, PCHAR, PCHAR, INT); + ULONG ldap_modrdn2W(LDAP*, PWCHAR, PWCHAR, INT); + ULONG ldap_modrdn2_sA(LDAP*, PCHAR, PCHAR, INT); + ULONG ldap_modrdn2_sW(LDAP*, PWCHAR, PWCHAR, INT); + } } version (Unicode) { - alias LDAPControlW LDAPControl; - alias PLDAPControlW PLDAPControl; - alias LDAPModW LDAPMod; - alias LDAPModW PLDAPMod; - alias LDAPSortKeyW LDAPSortKey; - alias PLDAPSortKeyW PLDAPSortKey; - alias LDAPAPIInfoW LDAPAPIInfo; - alias PLDAPAPIInfoW PLDAPAPIInfo; - alias LDAPAPIFeatureInfoW LDAPAPIFeatureInfo; - alias PLDAPAPIFeatureInfoW PLDAPAPIFeatureInfo; - alias cldap_openW cldap_open; - alias ldap_openW ldap_open; - alias ldap_simple_bindW ldap_simple_bind; - alias ldap_simple_bind_sW ldap_simple_bind_s; - alias ldap_sasl_bindW ldap_sasl_bind; - alias ldap_sasl_bind_sW ldap_sasl_bind_s; - alias ldap_initW ldap_init; - alias ldap_sslinitW ldap_sslinit; - alias ldap_get_optionW ldap_get_option; - alias ldap_set_optionW ldap_set_option; - alias ldap_start_tls_sW ldap_start_tls_s; - alias ldap_addW ldap_add; - alias ldap_add_extW ldap_add_ext; - alias ldap_add_sW ldap_add_s; - alias ldap_add_ext_sW ldap_add_ext_s; - alias ldap_compareW ldap_compare; - alias ldap_compare_extW ldap_compare_ext; - alias ldap_compare_sW ldap_compare_s; - alias ldap_compare_ext_sW ldap_compare_ext_s; - alias ldap_deleteW ldap_delete; - alias ldap_delete_extW ldap_delete_ext; - alias ldap_delete_sW ldap_delete_s; - alias ldap_delete_ext_sW ldap_delete_ext_s; - alias ldap_extended_operation_sW ldap_extended_operation_s; - alias ldap_extended_operationW ldap_extended_operation; - alias ldap_modifyW ldap_modify; - alias ldap_modify_extW ldap_modify_ext; - alias ldap_modify_sW ldap_modify_s; - alias ldap_modify_ext_sW ldap_modify_ext_s; - alias ldap_check_filterW ldap_check_filter; - alias ldap_count_valuesW ldap_count_values; - alias ldap_create_page_controlW ldap_create_page_control; - alias ldap_create_sort_controlW ldap_create_sort_control; - alias ldap_create_vlv_controlW ldap_create_vlv_control; - alias ldap_encode_sort_controlW ldap_encode_sort_control; - alias ldap_escape_filter_elementW ldap_escape_filter_element; - alias ldap_first_attributeW ldap_first_attribute; - alias ldap_next_attributeW ldap_next_attribute; - alias ldap_get_valuesW ldap_get_values; - alias ldap_get_values_lenW ldap_get_values_len; - alias ldap_parse_extended_resultW ldap_parse_extended_result; - alias ldap_parse_page_controlW ldap_parse_page_control; - alias ldap_parse_referenceW ldap_parse_reference; - alias ldap_parse_resultW ldap_parse_result; - alias ldap_parse_sort_controlW ldap_parse_sort_control; - alias ldap_parse_vlv_controlW ldap_parse_vlv_control; - alias ldap_searchW ldap_search; - alias ldap_search_sW ldap_search_s; - alias ldap_search_stW ldap_search_st; - alias ldap_search_extW ldap_search_ext; - alias ldap_search_ext_sW ldap_search_ext_s; - alias ldap_search_init_pageW ldap_search_init_page; - alias ldap_err2stringW ldap_err2string; - alias ldap_control_freeW ldap_control_free; - alias ldap_controls_freeW ldap_controls_free; - alias ldap_free_controlsW ldap_free_controls; - alias ldap_memfreeW ldap_memfree; - alias ldap_value_freeW ldap_value_free; - alias ldap_dn2ufnW ldap_dn2ufn; - alias ldap_ufn2dnW ldap_ufn2dn; - alias ldap_explode_dnW ldap_explode_dn; - alias ldap_get_dnW ldap_get_dn; - alias ldap_rename_extW ldap_rename; - alias ldap_rename_ext_sW ldap_rename_s; - alias ldap_rename_extW ldap_rename_ext; - alias ldap_rename_ext_sW ldap_rename_ext_s; - deprecated { - alias ldap_bindW ldap_bind; - alias ldap_bind_sW ldap_bind_s; - alias ldap_modrdnW ldap_modrdn; - alias ldap_modrdn_sW ldap_modrdn_s; - alias ldap_modrdn2W ldap_modrdn2; - alias ldap_modrdn2_sW ldap_modrdn2_s; - } + alias LDAPControlW LDAPControl; + alias PLDAPControlW PLDAPControl; + alias LDAPModW LDAPMod; + alias LDAPModW PLDAPMod; + alias LDAPSortKeyW LDAPSortKey; + alias PLDAPSortKeyW PLDAPSortKey; + alias LDAPAPIInfoW LDAPAPIInfo; + alias PLDAPAPIInfoW PLDAPAPIInfo; + alias LDAPAPIFeatureInfoW LDAPAPIFeatureInfo; + alias PLDAPAPIFeatureInfoW PLDAPAPIFeatureInfo; + alias cldap_openW cldap_open; + alias ldap_openW ldap_open; + alias ldap_simple_bindW ldap_simple_bind; + alias ldap_simple_bind_sW ldap_simple_bind_s; + alias ldap_sasl_bindW ldap_sasl_bind; + alias ldap_sasl_bind_sW ldap_sasl_bind_s; + alias ldap_initW ldap_init; + alias ldap_sslinitW ldap_sslinit; + alias ldap_get_optionW ldap_get_option; + alias ldap_set_optionW ldap_set_option; + alias ldap_start_tls_sW ldap_start_tls_s; + alias ldap_addW ldap_add; + alias ldap_add_extW ldap_add_ext; + alias ldap_add_sW ldap_add_s; + alias ldap_add_ext_sW ldap_add_ext_s; + alias ldap_compareW ldap_compare; + alias ldap_compare_extW ldap_compare_ext; + alias ldap_compare_sW ldap_compare_s; + alias ldap_compare_ext_sW ldap_compare_ext_s; + alias ldap_deleteW ldap_delete; + alias ldap_delete_extW ldap_delete_ext; + alias ldap_delete_sW ldap_delete_s; + alias ldap_delete_ext_sW ldap_delete_ext_s; + alias ldap_extended_operation_sW ldap_extended_operation_s; + alias ldap_extended_operationW ldap_extended_operation; + alias ldap_modifyW ldap_modify; + alias ldap_modify_extW ldap_modify_ext; + alias ldap_modify_sW ldap_modify_s; + alias ldap_modify_ext_sW ldap_modify_ext_s; + alias ldap_check_filterW ldap_check_filter; + alias ldap_count_valuesW ldap_count_values; + alias ldap_create_page_controlW ldap_create_page_control; + alias ldap_create_sort_controlW ldap_create_sort_control; + alias ldap_create_vlv_controlW ldap_create_vlv_control; + alias ldap_encode_sort_controlW ldap_encode_sort_control; + alias ldap_escape_filter_elementW ldap_escape_filter_element; + alias ldap_first_attributeW ldap_first_attribute; + alias ldap_next_attributeW ldap_next_attribute; + alias ldap_get_valuesW ldap_get_values; + alias ldap_get_values_lenW ldap_get_values_len; + alias ldap_parse_extended_resultW ldap_parse_extended_result; + alias ldap_parse_page_controlW ldap_parse_page_control; + alias ldap_parse_referenceW ldap_parse_reference; + alias ldap_parse_resultW ldap_parse_result; + alias ldap_parse_sort_controlW ldap_parse_sort_control; + alias ldap_parse_vlv_controlW ldap_parse_vlv_control; + alias ldap_searchW ldap_search; + alias ldap_search_sW ldap_search_s; + alias ldap_search_stW ldap_search_st; + alias ldap_search_extW ldap_search_ext; + alias ldap_search_ext_sW ldap_search_ext_s; + alias ldap_search_init_pageW ldap_search_init_page; + alias ldap_err2stringW ldap_err2string; + alias ldap_control_freeW ldap_control_free; + alias ldap_controls_freeW ldap_controls_free; + alias ldap_free_controlsW ldap_free_controls; + alias ldap_memfreeW ldap_memfree; + alias ldap_value_freeW ldap_value_free; + alias ldap_dn2ufnW ldap_dn2ufn; + alias ldap_ufn2dnW ldap_ufn2dn; + alias ldap_explode_dnW ldap_explode_dn; + alias ldap_get_dnW ldap_get_dn; + alias ldap_rename_extW ldap_rename; + alias ldap_rename_ext_sW ldap_rename_s; + alias ldap_rename_extW ldap_rename_ext; + alias ldap_rename_ext_sW ldap_rename_ext_s; + deprecated { + alias ldap_bindW ldap_bind; + alias ldap_bind_sW ldap_bind_s; + alias ldap_modrdnW ldap_modrdn; + alias ldap_modrdn_sW ldap_modrdn_s; + alias ldap_modrdn2W ldap_modrdn2; + alias ldap_modrdn2_sW ldap_modrdn2_s; + } } else { - alias LDAPControlA LDAPControl; - alias PLDAPControlA PLDAPControl; - alias LDAPModA LDAPMod; - alias LDAPModA PLDAPMod; - alias LDAPSortKeyA LDAPSortKey; - alias PLDAPSortKeyA PLDAPSortKey; - alias LDAPAPIInfoA LDAPAPIInfo; - alias PLDAPAPIInfoA PLDAPAPIInfo; - alias LDAPAPIFeatureInfoA LDAPAPIFeatureInfo; - alias PLDAPAPIFeatureInfoA PLDAPAPIFeatureInfo; - alias cldap_openA cldap_open; - alias ldap_openA ldap_open; - alias ldap_simple_bindA ldap_simple_bind; - alias ldap_simple_bind_sA ldap_simple_bind_s; - alias ldap_sasl_bindA ldap_sasl_bind; - alias ldap_sasl_bind_sA ldap_sasl_bind_s; - alias ldap_initA ldap_init; - alias ldap_sslinitA ldap_sslinit; - alias ldap_get_optionA ldap_get_option; - alias ldap_set_optionA ldap_set_option; - alias ldap_start_tls_sA ldap_start_tls_s; - alias ldap_addA ldap_add; - alias ldap_add_extA ldap_add_ext; - alias ldap_add_sA ldap_add_s; - alias ldap_add_ext_sA ldap_add_ext_s; - alias ldap_compareA ldap_compare; - alias ldap_compare_extA ldap_compare_ext; - alias ldap_compare_sA ldap_compare_s; - alias ldap_compare_ext_sA ldap_compare_ext_s; - alias ldap_deleteA ldap_delete; - alias ldap_delete_extA ldap_delete_ext; - alias ldap_delete_sA ldap_delete_s; - alias ldap_delete_ext_sA ldap_delete_ext_s; - alias ldap_extended_operation_sA ldap_extended_operation_s; - alias ldap_extended_operationA ldap_extended_operation; - alias ldap_modifyA ldap_modify; - alias ldap_modify_extA ldap_modify_ext; - alias ldap_modify_sA ldap_modify_s; - alias ldap_modify_ext_sA ldap_modify_ext_s; - alias ldap_check_filterA ldap_check_filter; - alias ldap_count_valuesA ldap_count_values; - alias ldap_create_page_controlA ldap_create_page_control; - alias ldap_create_sort_controlA ldap_create_sort_control; - alias ldap_create_vlv_controlA ldap_create_vlv_control; - alias ldap_encode_sort_controlA ldap_encode_sort_control; - alias ldap_escape_filter_elementA ldap_escape_filter_element; - alias ldap_first_attributeA ldap_first_attribute; - alias ldap_next_attributeA ldap_next_attribute; - alias ldap_get_valuesA ldap_get_values; - alias ldap_get_values_lenA ldap_get_values_len; - alias ldap_parse_extended_resultA ldap_parse_extended_result; - alias ldap_parse_page_controlA ldap_parse_page_control; - alias ldap_parse_referenceA ldap_parse_reference; - alias ldap_parse_resultA ldap_parse_result; - alias ldap_parse_sort_controlA ldap_parse_sort_control; - alias ldap_parse_vlv_controlA ldap_parse_vlv_control; - alias ldap_searchA ldap_search; - alias ldap_search_sA ldap_search_s; - alias ldap_search_stA ldap_search_st; - alias ldap_search_extA ldap_search_ext; - alias ldap_search_ext_sA ldap_search_ext_s; - alias ldap_search_init_pageA ldap_search_init_page; - alias ldap_err2stringA ldap_err2string; - alias ldap_control_freeA ldap_control_free; - alias ldap_controls_freeA ldap_controls_free; - alias ldap_free_controlsA ldap_free_controls; - alias ldap_memfreeA ldap_memfree; - alias ldap_value_freeA ldap_value_free; - alias ldap_dn2ufnA ldap_dn2ufn; - alias ldap_ufn2dnA ldap_ufn2dn; - alias ldap_explode_dnA ldap_explode_dn; - alias ldap_get_dnA ldap_get_dn; - alias ldap_rename_extA ldap_rename; - alias ldap_rename_ext_sA ldap_rename_s; - alias ldap_rename_extA ldap_rename_ext; - alias ldap_rename_ext_sA ldap_rename_ext_s; - deprecated { - alias ldap_bindA ldap_bind; - alias ldap_bind_sA ldap_bind_s; - alias ldap_modrdnA ldap_modrdn; - alias ldap_modrdn_sA ldap_modrdn_s; - alias ldap_modrdn2A ldap_modrdn2; - alias ldap_modrdn2_sA ldap_modrdn2_s; - } + alias LDAPControlA LDAPControl; + alias PLDAPControlA PLDAPControl; + alias LDAPModA LDAPMod; + alias LDAPModA PLDAPMod; + alias LDAPSortKeyA LDAPSortKey; + alias PLDAPSortKeyA PLDAPSortKey; + alias LDAPAPIInfoA LDAPAPIInfo; + alias PLDAPAPIInfoA PLDAPAPIInfo; + alias LDAPAPIFeatureInfoA LDAPAPIFeatureInfo; + alias PLDAPAPIFeatureInfoA PLDAPAPIFeatureInfo; + alias cldap_openA cldap_open; + alias ldap_openA ldap_open; + alias ldap_simple_bindA ldap_simple_bind; + alias ldap_simple_bind_sA ldap_simple_bind_s; + alias ldap_sasl_bindA ldap_sasl_bind; + alias ldap_sasl_bind_sA ldap_sasl_bind_s; + alias ldap_initA ldap_init; + alias ldap_sslinitA ldap_sslinit; + alias ldap_get_optionA ldap_get_option; + alias ldap_set_optionA ldap_set_option; + alias ldap_start_tls_sA ldap_start_tls_s; + alias ldap_addA ldap_add; + alias ldap_add_extA ldap_add_ext; + alias ldap_add_sA ldap_add_s; + alias ldap_add_ext_sA ldap_add_ext_s; + alias ldap_compareA ldap_compare; + alias ldap_compare_extA ldap_compare_ext; + alias ldap_compare_sA ldap_compare_s; + alias ldap_compare_ext_sA ldap_compare_ext_s; + alias ldap_deleteA ldap_delete; + alias ldap_delete_extA ldap_delete_ext; + alias ldap_delete_sA ldap_delete_s; + alias ldap_delete_ext_sA ldap_delete_ext_s; + alias ldap_extended_operation_sA ldap_extended_operation_s; + alias ldap_extended_operationA ldap_extended_operation; + alias ldap_modifyA ldap_modify; + alias ldap_modify_extA ldap_modify_ext; + alias ldap_modify_sA ldap_modify_s; + alias ldap_modify_ext_sA ldap_modify_ext_s; + alias ldap_check_filterA ldap_check_filter; + alias ldap_count_valuesA ldap_count_values; + alias ldap_create_page_controlA ldap_create_page_control; + alias ldap_create_sort_controlA ldap_create_sort_control; + alias ldap_create_vlv_controlA ldap_create_vlv_control; + alias ldap_encode_sort_controlA ldap_encode_sort_control; + alias ldap_escape_filter_elementA ldap_escape_filter_element; + alias ldap_first_attributeA ldap_first_attribute; + alias ldap_next_attributeA ldap_next_attribute; + alias ldap_get_valuesA ldap_get_values; + alias ldap_get_values_lenA ldap_get_values_len; + alias ldap_parse_extended_resultA ldap_parse_extended_result; + alias ldap_parse_page_controlA ldap_parse_page_control; + alias ldap_parse_referenceA ldap_parse_reference; + alias ldap_parse_resultA ldap_parse_result; + alias ldap_parse_sort_controlA ldap_parse_sort_control; + alias ldap_parse_vlv_controlA ldap_parse_vlv_control; + alias ldap_searchA ldap_search; + alias ldap_search_sA ldap_search_s; + alias ldap_search_stA ldap_search_st; + alias ldap_search_extA ldap_search_ext; + alias ldap_search_ext_sA ldap_search_ext_s; + alias ldap_search_init_pageA ldap_search_init_page; + alias ldap_err2stringA ldap_err2string; + alias ldap_control_freeA ldap_control_free; + alias ldap_controls_freeA ldap_controls_free; + alias ldap_free_controlsA ldap_free_controls; + alias ldap_memfreeA ldap_memfree; + alias ldap_value_freeA ldap_value_free; + alias ldap_dn2ufnA ldap_dn2ufn; + alias ldap_ufn2dnA ldap_ufn2dn; + alias ldap_explode_dnA ldap_explode_dn; + alias ldap_get_dnA ldap_get_dn; + alias ldap_rename_extA ldap_rename; + alias ldap_rename_ext_sA ldap_rename_s; + alias ldap_rename_extA ldap_rename_ext; + alias ldap_rename_ext_sA ldap_rename_ext_s; + deprecated { + alias ldap_bindA ldap_bind; + alias ldap_bind_sA ldap_bind_s; + alias ldap_modrdnA ldap_modrdn; + alias ldap_modrdn_sA ldap_modrdn_s; + alias ldap_modrdn2A ldap_modrdn2; + alias ldap_modrdn2_sA ldap_modrdn2_s; + } } diff --git a/src/core/sys/windows/winnetwk.d b/src/core/sys/windows/winnetwk.d index 159b334ff6..84ec2a1095 100644 --- a/src/core/sys/windows/winnetwk.d +++ b/src/core/sys/windows/winnetwk.d @@ -13,421 +13,421 @@ pragma(lib, "mpr"); private import core.sys.windows.winbase, core.sys.windows.winerror, core.sys.windows.winnt; enum : DWORD { - WNNC_NET_MSNET = 0x00010000, - WNNC_NET_LANMAN = 0x00020000, - WNNC_NET_NETWARE = 0x00030000, - WNNC_NET_VINES = 0x00040000, - WNNC_NET_10NET = 0x00050000, - WNNC_NET_LOCUS = 0x00060000, - WNNC_NET_SUN_PC_NFS = 0x00070000, - WNNC_NET_LANSTEP = 0x00080000, - WNNC_NET_9TILES = 0x00090000, - WNNC_NET_LANTASTIC = 0x000A0000, - WNNC_NET_AS400 = 0x000B0000, - WNNC_NET_FTP_NFS = 0x000C0000, - WNNC_NET_PATHWORKS = 0x000D0000, - WNNC_NET_LIFENET = 0x000E0000, - WNNC_NET_POWERLAN = 0x000F0000, - WNNC_NET_BWNFS = 0x00100000, - WNNC_NET_COGENT = 0x00110000, - WNNC_NET_FARALLON = 0x00120000, - WNNC_NET_APPLETALK = 0x00130000, - WNNC_NET_INTERGRAPH = 0x00140000, - WNNC_NET_SYMFONET = 0x00150000, - WNNC_NET_CLEARCASE = 0x00160000, - WNNC_NET_FRONTIER = 0x00170000, - WNNC_NET_BMC = 0x00180000, - WNNC_NET_DCE = 0x00190000, - WNNC_NET_AVID = 0x001A0000, - WNNC_NET_DOCUSPACE = 0x001B0000, - WNNC_NET_MANGOSOFT = 0x001C0000, - WNNC_NET_SERNET = 0x001D0000, - WNNC_NET_DECORB = 0x00200000, - WNNC_NET_PROTSTOR = 0x00210000, - WNNC_NET_FJ_REDIR = 0x00220000, - WNNC_NET_DISTINCT = 0x00230000, - WNNC_NET_TWINS = 0x00240000, - WNNC_NET_RDR2SAMPLE = 0x00250000, - WNNC_NET_CSC = 0x00260000, - WNNC_NET_3IN1 = 0x00270000, - WNNC_NET_EXTENDNET = 0x00290000, - WNNC_NET_OBJECT_DIRE = 0x00300000, - WNNC_NET_MASFAX = 0x00310000, - WNNC_NET_HOB_NFS = 0x00320000, - WNNC_NET_SHIVA = 0x00330000, - WNNC_NET_IBMAL = 0x00340000, - WNNC_CRED_MANAGER = 0xFFFF0000 + WNNC_NET_MSNET = 0x00010000, + WNNC_NET_LANMAN = 0x00020000, + WNNC_NET_NETWARE = 0x00030000, + WNNC_NET_VINES = 0x00040000, + WNNC_NET_10NET = 0x00050000, + WNNC_NET_LOCUS = 0x00060000, + WNNC_NET_SUN_PC_NFS = 0x00070000, + WNNC_NET_LANSTEP = 0x00080000, + WNNC_NET_9TILES = 0x00090000, + WNNC_NET_LANTASTIC = 0x000A0000, + WNNC_NET_AS400 = 0x000B0000, + WNNC_NET_FTP_NFS = 0x000C0000, + WNNC_NET_PATHWORKS = 0x000D0000, + WNNC_NET_LIFENET = 0x000E0000, + WNNC_NET_POWERLAN = 0x000F0000, + WNNC_NET_BWNFS = 0x00100000, + WNNC_NET_COGENT = 0x00110000, + WNNC_NET_FARALLON = 0x00120000, + WNNC_NET_APPLETALK = 0x00130000, + WNNC_NET_INTERGRAPH = 0x00140000, + WNNC_NET_SYMFONET = 0x00150000, + WNNC_NET_CLEARCASE = 0x00160000, + WNNC_NET_FRONTIER = 0x00170000, + WNNC_NET_BMC = 0x00180000, + WNNC_NET_DCE = 0x00190000, + WNNC_NET_AVID = 0x001A0000, + WNNC_NET_DOCUSPACE = 0x001B0000, + WNNC_NET_MANGOSOFT = 0x001C0000, + WNNC_NET_SERNET = 0x001D0000, + WNNC_NET_DECORB = 0x00200000, + WNNC_NET_PROTSTOR = 0x00210000, + WNNC_NET_FJ_REDIR = 0x00220000, + WNNC_NET_DISTINCT = 0x00230000, + WNNC_NET_TWINS = 0x00240000, + WNNC_NET_RDR2SAMPLE = 0x00250000, + WNNC_NET_CSC = 0x00260000, + WNNC_NET_3IN1 = 0x00270000, + WNNC_NET_EXTENDNET = 0x00290000, + WNNC_NET_OBJECT_DIRE = 0x00300000, + WNNC_NET_MASFAX = 0x00310000, + WNNC_NET_HOB_NFS = 0x00320000, + WNNC_NET_SHIVA = 0x00330000, + WNNC_NET_IBMAL = 0x00340000, + WNNC_CRED_MANAGER = 0xFFFF0000 } enum : DWORD { - RESOURCE_CONNECTED = 1, - RESOURCE_GLOBALNET = 2, - RESOURCE_REMEMBERED = 3, - RESOURCE_RECENT = 4, - RESOURCE_CONTEXT = 5 + RESOURCE_CONNECTED = 1, + RESOURCE_GLOBALNET = 2, + RESOURCE_REMEMBERED = 3, + RESOURCE_RECENT = 4, + RESOURCE_CONTEXT = 5 } const DWORD - RESOURCETYPE_ANY = 0, - RESOURCETYPE_DISK = 1, - RESOURCETYPE_PRINT = 2, - RESOURCETYPE_RESERVED = 8, - RESOURCETYPE_UNKNOWN = 0xFFFFFFFF; + RESOURCETYPE_ANY = 0, + RESOURCETYPE_DISK = 1, + RESOURCETYPE_PRINT = 2, + RESOURCETYPE_RESERVED = 8, + RESOURCETYPE_UNKNOWN = 0xFFFFFFFF; const DWORD - RESOURCEUSAGE_CONNECTABLE = 0x00000001, - RESOURCEUSAGE_CONTAINER = 0x00000002, - RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004, - RESOURCEUSAGE_SIBLING = 0x00000008, - RESOURCEUSAGE_ATTACHED = 0x00000010, - RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE - | RESOURCEUSAGE_CONTAINER - | RESOURCEUSAGE_ATTACHED), - RESOURCEUSAGE_RESERVED = 0x80000000; + RESOURCEUSAGE_CONNECTABLE = 0x00000001, + RESOURCEUSAGE_CONTAINER = 0x00000002, + RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004, + RESOURCEUSAGE_SIBLING = 0x00000008, + RESOURCEUSAGE_ATTACHED = 0x00000010, + RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE + | RESOURCEUSAGE_CONTAINER + | RESOURCEUSAGE_ATTACHED), + RESOURCEUSAGE_RESERVED = 0x80000000; enum : DWORD { - RESOURCEDISPLAYTYPE_GENERIC, - RESOURCEDISPLAYTYPE_DOMAIN, - RESOURCEDISPLAYTYPE_SERVER, - RESOURCEDISPLAYTYPE_SHARE, - RESOURCEDISPLAYTYPE_FILE, - RESOURCEDISPLAYTYPE_GROUP, - RESOURCEDISPLAYTYPE_NETWORK, - RESOURCEDISPLAYTYPE_ROOT, - RESOURCEDISPLAYTYPE_SHAREADMIN, - RESOURCEDISPLAYTYPE_DIRECTORY, - RESOURCEDISPLAYTYPE_TREE // = 10 + RESOURCEDISPLAYTYPE_GENERIC, + RESOURCEDISPLAYTYPE_DOMAIN, + RESOURCEDISPLAYTYPE_SERVER, + RESOURCEDISPLAYTYPE_SHARE, + RESOURCEDISPLAYTYPE_FILE, + RESOURCEDISPLAYTYPE_GROUP, + RESOURCEDISPLAYTYPE_NETWORK, + RESOURCEDISPLAYTYPE_ROOT, + RESOURCEDISPLAYTYPE_SHAREADMIN, + RESOURCEDISPLAYTYPE_DIRECTORY, + RESOURCEDISPLAYTYPE_TREE // = 10 } const NETPROPERTY_PERSISTENT = 1; const DWORD - CONNECT_UPDATE_PROFILE = 1, - CONNECT_UPDATE_RECENT = 2, - CONNECT_TEMPORARY = 4, - CONNECT_INTERACTIVE = 8, - CONNECT_PROMPT = 16, - CONNECT_NEED_DRIVE = 32, - CONNECT_REFCOUNT = 64, - CONNECT_REDIRECT = 128, - CONNECT_LOCALDRIVE = 256, - CONNECT_CURRENT_MEDIA = 512; + CONNECT_UPDATE_PROFILE = 1, + CONNECT_UPDATE_RECENT = 2, + CONNECT_TEMPORARY = 4, + CONNECT_INTERACTIVE = 8, + CONNECT_PROMPT = 16, + CONNECT_NEED_DRIVE = 32, + CONNECT_REFCOUNT = 64, + CONNECT_REDIRECT = 128, + CONNECT_LOCALDRIVE = 256, + CONNECT_CURRENT_MEDIA = 512; const DWORD - CONNDLG_RO_PATH = 1, - CONNDLG_CONN_POINT = 2, - CONNDLG_USE_MRU = 4, - CONNDLG_HIDE_BOX = 8, - CONNDLG_PERSIST = 16, - CONNDLG_NOT_PERSIST = 32; + CONNDLG_RO_PATH = 1, + CONNDLG_CONN_POINT = 2, + CONNDLG_USE_MRU = 4, + CONNDLG_HIDE_BOX = 8, + CONNDLG_PERSIST = 16, + CONNDLG_NOT_PERSIST = 32; const DWORD - DISC_UPDATE_PROFILE = 1, - DISC_NO_FORCE = 64; + DISC_UPDATE_PROFILE = 1, + DISC_NO_FORCE = 64; const DWORD - WNFMT_MULTILINE = 1, - WNFMT_ABBREVIATED = 2, - WNFMT_INENUM = 16, - WNFMT_CONNECTION = 32; + WNFMT_MULTILINE = 1, + WNFMT_ABBREVIATED = 2, + WNFMT_INENUM = 16, + WNFMT_CONNECTION = 32; enum : DWORD { - WN_SUCCESS = NO_ERROR, - WN_NO_ERROR = NO_ERROR, - WN_NOT_SUPPORTED = ERROR_NOT_SUPPORTED, - WN_CANCEL = ERROR_CANCELLED, - WN_RETRY = ERROR_RETRY, - WN_NET_ERROR = ERROR_UNEXP_NET_ERR, - WN_MORE_DATA = ERROR_MORE_DATA, - WN_BAD_POINTER = ERROR_INVALID_ADDRESS, - WN_BAD_VALUE = ERROR_INVALID_PARAMETER, - WN_BAD_USER = ERROR_BAD_USERNAME, - WN_BAD_PASSWORD = ERROR_INVALID_PASSWORD, - WN_ACCESS_DENIED = ERROR_ACCESS_DENIED, - WN_FUNCTION_BUSY = ERROR_BUSY, - WN_WINDOWS_ERROR = ERROR_UNEXP_NET_ERR, - WN_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_MEMORY, - WN_NO_NETWORK = ERROR_NO_NETWORK, - WN_EXTENDED_ERROR = ERROR_EXTENDED_ERROR, - WN_BAD_LEVEL = ERROR_INVALID_LEVEL, - WN_BAD_HANDLE = ERROR_INVALID_HANDLE, - WN_NOT_INITIALIZING = ERROR_ALREADY_INITIALIZED, - WN_NO_MORE_DEVICES = ERROR_NO_MORE_DEVICES, - WN_NOT_CONNECTED = ERROR_NOT_CONNECTED, - WN_OPEN_FILES = ERROR_OPEN_FILES, - WN_DEVICE_IN_USE = ERROR_DEVICE_IN_USE, - WN_BAD_NETNAME = ERROR_BAD_NET_NAME, - WN_BAD_LOCALNAME = ERROR_BAD_DEVICE, - WN_ALREADY_CONNECTED = ERROR_ALREADY_ASSIGNED, - WN_DEVICE_ERROR = ERROR_GEN_FAILURE, - WN_CONNECTION_CLOSED = ERROR_CONNECTION_UNAVAIL, - WN_NO_NET_OR_BAD_PATH = ERROR_NO_NET_OR_BAD_PATH, - WN_BAD_PROVIDER = ERROR_BAD_PROVIDER, - WN_CANNOT_OPEN_PROFILE = ERROR_CANNOT_OPEN_PROFILE, - WN_BAD_PROFILE = ERROR_BAD_PROFILE, - WN_BAD_DEV_TYPE = ERROR_BAD_DEV_TYPE, - WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED, - WN_NO_MORE_ENTRIES = ERROR_NO_MORE_ITEMS, - WN_NOT_CONTAINER = ERROR_NOT_CONTAINER, - WN_NOT_AUTHENTICATED = ERROR_NOT_AUTHENTICATED, - WN_NOT_LOGGED_ON = ERROR_NOT_LOGGED_ON, - WN_NOT_VALIDATED = ERROR_NO_LOGON_SERVERS + WN_SUCCESS = NO_ERROR, + WN_NO_ERROR = NO_ERROR, + WN_NOT_SUPPORTED = ERROR_NOT_SUPPORTED, + WN_CANCEL = ERROR_CANCELLED, + WN_RETRY = ERROR_RETRY, + WN_NET_ERROR = ERROR_UNEXP_NET_ERR, + WN_MORE_DATA = ERROR_MORE_DATA, + WN_BAD_POINTER = ERROR_INVALID_ADDRESS, + WN_BAD_VALUE = ERROR_INVALID_PARAMETER, + WN_BAD_USER = ERROR_BAD_USERNAME, + WN_BAD_PASSWORD = ERROR_INVALID_PASSWORD, + WN_ACCESS_DENIED = ERROR_ACCESS_DENIED, + WN_FUNCTION_BUSY = ERROR_BUSY, + WN_WINDOWS_ERROR = ERROR_UNEXP_NET_ERR, + WN_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_MEMORY, + WN_NO_NETWORK = ERROR_NO_NETWORK, + WN_EXTENDED_ERROR = ERROR_EXTENDED_ERROR, + WN_BAD_LEVEL = ERROR_INVALID_LEVEL, + WN_BAD_HANDLE = ERROR_INVALID_HANDLE, + WN_NOT_INITIALIZING = ERROR_ALREADY_INITIALIZED, + WN_NO_MORE_DEVICES = ERROR_NO_MORE_DEVICES, + WN_NOT_CONNECTED = ERROR_NOT_CONNECTED, + WN_OPEN_FILES = ERROR_OPEN_FILES, + WN_DEVICE_IN_USE = ERROR_DEVICE_IN_USE, + WN_BAD_NETNAME = ERROR_BAD_NET_NAME, + WN_BAD_LOCALNAME = ERROR_BAD_DEVICE, + WN_ALREADY_CONNECTED = ERROR_ALREADY_ASSIGNED, + WN_DEVICE_ERROR = ERROR_GEN_FAILURE, + WN_CONNECTION_CLOSED = ERROR_CONNECTION_UNAVAIL, + WN_NO_NET_OR_BAD_PATH = ERROR_NO_NET_OR_BAD_PATH, + WN_BAD_PROVIDER = ERROR_BAD_PROVIDER, + WN_CANNOT_OPEN_PROFILE = ERROR_CANNOT_OPEN_PROFILE, + WN_BAD_PROFILE = ERROR_BAD_PROFILE, + WN_BAD_DEV_TYPE = ERROR_BAD_DEV_TYPE, + WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED, + WN_NO_MORE_ENTRIES = ERROR_NO_MORE_ITEMS, + WN_NOT_CONTAINER = ERROR_NOT_CONTAINER, + WN_NOT_AUTHENTICATED = ERROR_NOT_AUTHENTICATED, + WN_NOT_LOGGED_ON = ERROR_NOT_LOGGED_ON, + WN_NOT_VALIDATED = ERROR_NO_LOGON_SERVERS } enum : DWORD { - UNIVERSAL_NAME_INFO_LEVEL = 1, - REMOTE_NAME_INFO_LEVEL + UNIVERSAL_NAME_INFO_LEVEL = 1, + REMOTE_NAME_INFO_LEVEL } const DWORD - NETINFO_DLL16 = 1, - NETINFO_DISKRED = 4, - NETINFO_PRINTERRED = 8; + NETINFO_DLL16 = 1, + NETINFO_DISKRED = 4, + NETINFO_PRINTERRED = 8; const DWORD - RP_LOGON = 1, - RP_INIFILE = 2; + RP_LOGON = 1, + RP_INIFILE = 2; const DWORD PP_DISPLAYERRORS = 1; const DWORD - WNCON_FORNETCARD = 1, - WNCON_NOTROUTED = 2, - WNCON_SLOWLINK = 4, - WNCON_DYNAMIC = 8; + WNCON_FORNETCARD = 1, + WNCON_NOTROUTED = 2, + WNCON_SLOWLINK = 4, + WNCON_DYNAMIC = 8; struct NETRESOURCEA { - DWORD dwScope; - DWORD dwType; - DWORD dwDisplayType; - DWORD dwUsage; - LPSTR lpLocalName; - LPSTR lpRemoteName; - LPSTR lpComment; - LPSTR lpProvider; + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPSTR lpLocalName; + LPSTR lpRemoteName; + LPSTR lpComment; + LPSTR lpProvider; } alias NETRESOURCEA* LPNETRESOURCEA; struct NETRESOURCEW { - DWORD dwScope; - DWORD dwType; - DWORD dwDisplayType; - DWORD dwUsage; - LPWSTR lpLocalName; - LPWSTR lpRemoteName; - LPWSTR lpComment ; - LPWSTR lpProvider; + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + LPWSTR lpComment ; + LPWSTR lpProvider; } alias NETRESOURCEW* LPNETRESOURCEW; struct CONNECTDLGSTRUCTA { - DWORD cbStructure; - HWND hwndOwner; - LPNETRESOURCEA lpConnRes; - DWORD dwFlags; - DWORD dwDevNum; + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEA lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; } alias CONNECTDLGSTRUCTA* LPCONNECTDLGSTRUCTA; struct CONNECTDLGSTRUCTW { - DWORD cbStructure; - HWND hwndOwner; - LPNETRESOURCEW lpConnRes; - DWORD dwFlags; - DWORD dwDevNum; + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEW lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; } alias CONNECTDLGSTRUCTW* LPCONNECTDLGSTRUCTW; struct DISCDLGSTRUCTA { - DWORD cbStructure; - HWND hwndOwner; - LPSTR lpLocalName; - LPSTR lpRemoteName; - DWORD dwFlags; + DWORD cbStructure; + HWND hwndOwner; + LPSTR lpLocalName; + LPSTR lpRemoteName; + DWORD dwFlags; } alias DISCDLGSTRUCTA* LPDISCDLGSTRUCTA; struct DISCDLGSTRUCTW { - DWORD cbStructure; - HWND hwndOwner; - LPWSTR lpLocalName; - LPWSTR lpRemoteName; - DWORD dwFlags; + DWORD cbStructure; + HWND hwndOwner; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + DWORD dwFlags; } alias DISCDLGSTRUCTW* LPDISCDLGSTRUCTW; struct UNIVERSAL_NAME_INFOA { - LPSTR lpUniversalName; + LPSTR lpUniversalName; } alias UNIVERSAL_NAME_INFOA* LPUNIVERSAL_NAME_INFOA; struct UNIVERSAL_NAME_INFOW { - LPWSTR lpUniversalName; + LPWSTR lpUniversalName; } alias UNIVERSAL_NAME_INFOW* LPUNIVERSAL_NAME_INFOW; struct REMOTE_NAME_INFOA { - LPSTR lpUniversalName; - LPSTR lpConnectionName; - LPSTR lpRemainingPath; + LPSTR lpUniversalName; + LPSTR lpConnectionName; + LPSTR lpRemainingPath; } alias REMOTE_NAME_INFOA* LPREMOTE_NAME_INFOA; struct REMOTE_NAME_INFOW { - LPWSTR lpUniversalName; - LPWSTR lpConnectionName; - LPWSTR lpRemainingPath; + LPWSTR lpUniversalName; + LPWSTR lpConnectionName; + LPWSTR lpRemainingPath; } alias REMOTE_NAME_INFOW* LPREMOTE_NAME_INFOW; struct NETINFOSTRUCT { - DWORD cbStructure; - DWORD dwProviderVersion; - DWORD dwStatus; - DWORD dwCharacteristics; - DWORD dwHandle; - WORD wNetType; - DWORD dwPrinters; - DWORD dwDrives; + DWORD cbStructure; + DWORD dwProviderVersion; + DWORD dwStatus; + DWORD dwCharacteristics; + DWORD dwHandle; + WORD wNetType; + DWORD dwPrinters; + DWORD dwDrives; } alias NETINFOSTRUCT* LPNETINFOSTRUCT; extern (Pascal) { - alias UINT function(LPCSTR, LPSTR, UINT) PFNGETPROFILEPATHA; - alias UINT function(LPCWSTR, LPWSTR, UINT) PFNGETPROFILEPATHW; - alias UINT function(LPCSTR, LPCSTR, DWORD) PFNRECONCILEPROFILEA; - alias UINT function(LPCWSTR, LPCWSTR, DWORD) PFNRECONCILEPROFILEW; - alias BOOL function(HWND, LPCSTR, LPCSTR, LPCSTR, DWORD) - PFNPROCESSPOLICIESA; - alias BOOL function(HWND, LPCWSTR, LPCWSTR, LPCWSTR, DWORD) - PFNPROCESSPOLICIESW; + alias UINT function(LPCSTR, LPSTR, UINT) PFNGETPROFILEPATHA; + alias UINT function(LPCWSTR, LPWSTR, UINT) PFNGETPROFILEPATHW; + alias UINT function(LPCSTR, LPCSTR, DWORD) PFNRECONCILEPROFILEA; + alias UINT function(LPCWSTR, LPCWSTR, DWORD) PFNRECONCILEPROFILEW; + alias BOOL function(HWND, LPCSTR, LPCSTR, LPCSTR, DWORD) + PFNPROCESSPOLICIESA; + alias BOOL function(HWND, LPCWSTR, LPCWSTR, LPCWSTR, DWORD) + PFNPROCESSPOLICIESW; } struct NETCONNECTINFOSTRUCT { - DWORD cbStructure; - DWORD dwFlags; - DWORD dwSpeed; - DWORD dwDelay; - DWORD dwOptDataSize; + DWORD cbStructure; + DWORD dwFlags; + DWORD dwSpeed; + DWORD dwDelay; + DWORD dwOptDataSize; } alias NETCONNECTINFOSTRUCT* LPNETCONNECTINFOSTRUCT; extern (Windows) { - DWORD WNetAddConnection2A(LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); - DWORD WNetAddConnection2W(LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); - DWORD WNetAddConnection3A(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); - DWORD WNetAddConnection3W(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); - DWORD WNetCancelConnection2A(LPCSTR, DWORD, BOOL); - DWORD WNetCancelConnection2W(LPCWSTR, DWORD, BOOL); - DWORD WNetGetConnectionA(LPCSTR, LPSTR, PDWORD); - DWORD WNetGetConnectionW(LPCWSTR, LPWSTR, PDWORD); - DWORD WNetUseConnectionA(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD, - LPSTR, PDWORD, PDWORD); - DWORD WNetUseConnectionW(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD, - LPWSTR, PDWORD, PDWORD); - DWORD WNetSetConnectionA(LPCSTR, DWORD, PVOID); - DWORD WNetSetConnectionW(LPCWSTR, DWORD, PVOID); - DWORD WNetConnectionDialog(HWND, DWORD); - DWORD WNetDisconnectDialog(HWND, DWORD); - DWORD WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA); - DWORD WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW); - DWORD WNetDisconnectDialog1A(LPDISCDLGSTRUCTA); - DWORD WNetDisconnectDialog1W(LPDISCDLGSTRUCTW); - DWORD WNetOpenEnumA(DWORD, DWORD, DWORD, LPNETRESOURCEA, LPHANDLE); - DWORD WNetOpenEnumW(DWORD, DWORD, DWORD, LPNETRESOURCEW, LPHANDLE); - DWORD WNetEnumResourceA(HANDLE, PDWORD, PVOID, PDWORD); - DWORD WNetEnumResourceW(HANDLE, PDWORD, PVOID, PDWORD); - DWORD WNetCloseEnum(HANDLE); - DWORD WNetGetUniversalNameA(LPCSTR, DWORD, PVOID, PDWORD); - DWORD WNetGetUniversalNameW(LPCWSTR, DWORD, PVOID, PDWORD); - DWORD WNetGetUserA(LPCSTR, LPSTR, PDWORD); - DWORD WNetGetUserW(LPCWSTR, LPWSTR, PDWORD); - DWORD WNetGetProviderNameA(DWORD, LPSTR, PDWORD); - DWORD WNetGetProviderNameW(DWORD, LPWSTR, PDWORD); - DWORD WNetGetNetworkInformationA(LPCSTR, LPNETINFOSTRUCT); - DWORD WNetGetNetworkInformationW(LPCWSTR, LPNETINFOSTRUCT); - DWORD WNetGetResourceInformationA(LPNETRESOURCEA, LPVOID, LPDWORD, - LPSTR*); - DWORD WNetGetResourceInformationW(LPNETRESOURCEA, LPVOID, LPDWORD, - LPWSTR*); - DWORD WNetGetResourceParentA(LPNETRESOURCEA, LPVOID, LPDWORD); - DWORD WNetGetResourceParentW(LPNETRESOURCEW, LPVOID, LPDWORD); - DWORD WNetGetLastErrorA(PDWORD, LPSTR, DWORD, LPSTR, DWORD); - DWORD WNetGetLastErrorW(PDWORD, LPWSTR, DWORD, LPWSTR, DWORD); - DWORD MultinetGetConnectionPerformanceA(LPNETRESOURCEA, - LPNETCONNECTINFOSTRUCT); - DWORD MultinetGetConnectionPerformanceW(LPNETRESOURCEW, - LPNETCONNECTINFOSTRUCT); - deprecated { - DWORD WNetAddConnectionA(LPCSTR, LPCSTR, LPCSTR); - DWORD WNetAddConnectionW(LPCWSTR, LPCWSTR, LPCWSTR); - DWORD WNetCancelConnectionA(LPCSTR, BOOL); - DWORD WNetCancelConnectionW(LPCWSTR, BOOL); - } + DWORD WNetAddConnection2A(LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); + DWORD WNetAddConnection2W(LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); + DWORD WNetAddConnection3A(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); + DWORD WNetAddConnection3W(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); + DWORD WNetCancelConnection2A(LPCSTR, DWORD, BOOL); + DWORD WNetCancelConnection2W(LPCWSTR, DWORD, BOOL); + DWORD WNetGetConnectionA(LPCSTR, LPSTR, PDWORD); + DWORD WNetGetConnectionW(LPCWSTR, LPWSTR, PDWORD); + DWORD WNetUseConnectionA(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD, + LPSTR, PDWORD, PDWORD); + DWORD WNetUseConnectionW(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD, + LPWSTR, PDWORD, PDWORD); + DWORD WNetSetConnectionA(LPCSTR, DWORD, PVOID); + DWORD WNetSetConnectionW(LPCWSTR, DWORD, PVOID); + DWORD WNetConnectionDialog(HWND, DWORD); + DWORD WNetDisconnectDialog(HWND, DWORD); + DWORD WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA); + DWORD WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW); + DWORD WNetDisconnectDialog1A(LPDISCDLGSTRUCTA); + DWORD WNetDisconnectDialog1W(LPDISCDLGSTRUCTW); + DWORD WNetOpenEnumA(DWORD, DWORD, DWORD, LPNETRESOURCEA, LPHANDLE); + DWORD WNetOpenEnumW(DWORD, DWORD, DWORD, LPNETRESOURCEW, LPHANDLE); + DWORD WNetEnumResourceA(HANDLE, PDWORD, PVOID, PDWORD); + DWORD WNetEnumResourceW(HANDLE, PDWORD, PVOID, PDWORD); + DWORD WNetCloseEnum(HANDLE); + DWORD WNetGetUniversalNameA(LPCSTR, DWORD, PVOID, PDWORD); + DWORD WNetGetUniversalNameW(LPCWSTR, DWORD, PVOID, PDWORD); + DWORD WNetGetUserA(LPCSTR, LPSTR, PDWORD); + DWORD WNetGetUserW(LPCWSTR, LPWSTR, PDWORD); + DWORD WNetGetProviderNameA(DWORD, LPSTR, PDWORD); + DWORD WNetGetProviderNameW(DWORD, LPWSTR, PDWORD); + DWORD WNetGetNetworkInformationA(LPCSTR, LPNETINFOSTRUCT); + DWORD WNetGetNetworkInformationW(LPCWSTR, LPNETINFOSTRUCT); + DWORD WNetGetResourceInformationA(LPNETRESOURCEA, LPVOID, LPDWORD, + LPSTR*); + DWORD WNetGetResourceInformationW(LPNETRESOURCEA, LPVOID, LPDWORD, + LPWSTR*); + DWORD WNetGetResourceParentA(LPNETRESOURCEA, LPVOID, LPDWORD); + DWORD WNetGetResourceParentW(LPNETRESOURCEW, LPVOID, LPDWORD); + DWORD WNetGetLastErrorA(PDWORD, LPSTR, DWORD, LPSTR, DWORD); + DWORD WNetGetLastErrorW(PDWORD, LPWSTR, DWORD, LPWSTR, DWORD); + DWORD MultinetGetConnectionPerformanceA(LPNETRESOURCEA, + LPNETCONNECTINFOSTRUCT); + DWORD MultinetGetConnectionPerformanceW(LPNETRESOURCEW, + LPNETCONNECTINFOSTRUCT); + deprecated { + DWORD WNetAddConnectionA(LPCSTR, LPCSTR, LPCSTR); + DWORD WNetAddConnectionW(LPCWSTR, LPCWSTR, LPCWSTR); + DWORD WNetCancelConnectionA(LPCSTR, BOOL); + DWORD WNetCancelConnectionW(LPCWSTR, BOOL); + } } version (Unicode) { - alias PFNGETPROFILEPATHW PFNGETPROFILEPATH; - alias PFNRECONCILEPROFILEW PFNRECONCILEPROFILE; - alias PFNPROCESSPOLICIESW PFNPROCESSPOLICIES; - alias NETRESOURCEW NETRESOURCE; - alias CONNECTDLGSTRUCTW CONNECTDLGSTRUCT; - alias DISCDLGSTRUCTW DISCDLGSTRUCT; - alias REMOTE_NAME_INFOW REMOTE_NAME_INFO; - alias UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO; - alias WNetAddConnection2W WNetAddConnection2; - alias WNetAddConnection3W WNetAddConnection3; - alias WNetCancelConnection2W WNetCancelConnection2; - alias WNetGetConnectionW WNetGetConnection; - alias WNetUseConnectionW WNetUseConnection; - alias WNetSetConnectionW WNetSetConnection; - alias WNetConnectionDialog1W WNetConnectionDialog1; - alias WNetDisconnectDialog1W WNetDisconnectDialog1; - alias WNetOpenEnumW WNetOpenEnum; - alias WNetEnumResourceW WNetEnumResource; - alias WNetGetUniversalNameW WNetGetUniversalName; - alias WNetGetUserW WNetGetUser; - alias WNetGetProviderNameW WNetGetProviderName; - alias WNetGetNetworkInformationW WNetGetNetworkInformation; - alias WNetGetResourceInformationW WNetGetResourceInformation; - alias WNetGetResourceParentW WNetGetResourceParent; - alias WNetGetLastErrorW WNetGetLastError; - alias MultinetGetConnectionPerformanceW MultinetGetConnectionPerformance; - deprecated { - alias WNetAddConnectionW WNetAddConnection; - alias WNetCancelConnectionW WNetCancelConnection; - } + alias PFNGETPROFILEPATHW PFNGETPROFILEPATH; + alias PFNRECONCILEPROFILEW PFNRECONCILEPROFILE; + alias PFNPROCESSPOLICIESW PFNPROCESSPOLICIES; + alias NETRESOURCEW NETRESOURCE; + alias CONNECTDLGSTRUCTW CONNECTDLGSTRUCT; + alias DISCDLGSTRUCTW DISCDLGSTRUCT; + alias REMOTE_NAME_INFOW REMOTE_NAME_INFO; + alias UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO; + alias WNetAddConnection2W WNetAddConnection2; + alias WNetAddConnection3W WNetAddConnection3; + alias WNetCancelConnection2W WNetCancelConnection2; + alias WNetGetConnectionW WNetGetConnection; + alias WNetUseConnectionW WNetUseConnection; + alias WNetSetConnectionW WNetSetConnection; + alias WNetConnectionDialog1W WNetConnectionDialog1; + alias WNetDisconnectDialog1W WNetDisconnectDialog1; + alias WNetOpenEnumW WNetOpenEnum; + alias WNetEnumResourceW WNetEnumResource; + alias WNetGetUniversalNameW WNetGetUniversalName; + alias WNetGetUserW WNetGetUser; + alias WNetGetProviderNameW WNetGetProviderName; + alias WNetGetNetworkInformationW WNetGetNetworkInformation; + alias WNetGetResourceInformationW WNetGetResourceInformation; + alias WNetGetResourceParentW WNetGetResourceParent; + alias WNetGetLastErrorW WNetGetLastError; + alias MultinetGetConnectionPerformanceW MultinetGetConnectionPerformance; + deprecated { + alias WNetAddConnectionW WNetAddConnection; + alias WNetCancelConnectionW WNetCancelConnection; + } } else { - alias PFNGETPROFILEPATHA PFNGETPROFILEPATH; - alias PFNRECONCILEPROFILEA PFNRECONCILEPROFILE; - alias PFNPROCESSPOLICIESA PFNPROCESSPOLICIES; - alias NETRESOURCEA NETRESOURCE; - alias CONNECTDLGSTRUCTA CONNECTDLGSTRUCT; - alias DISCDLGSTRUCTA DISCDLGSTRUCT; - alias REMOTE_NAME_INFOA REMOTE_NAME_INFO; - alias UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO; - alias WNetAddConnection2A WNetAddConnection2; - alias WNetAddConnection3A WNetAddConnection3; - alias WNetCancelConnection2A WNetCancelConnection2; - alias WNetGetConnectionA WNetGetConnection; - alias WNetUseConnectionA WNetUseConnection; - alias WNetSetConnectionA WNetSetConnection; - alias WNetConnectionDialog1A WNetConnectionDialog1; - alias WNetDisconnectDialog1A WNetDisconnectDialog1; - alias WNetOpenEnumA WNetOpenEnum; - alias WNetEnumResourceA WNetEnumResource; - alias WNetGetUniversalNameA WNetGetUniversalName; - alias WNetGetUserA WNetGetUser; - alias WNetGetProviderNameA WNetGetProviderName; - alias WNetGetNetworkInformationA WNetGetNetworkInformation; - alias WNetGetResourceInformationA WNetGetResourceInformation; - alias WNetGetResourceParentA WNetGetResourceParent; - alias WNetGetLastErrorA WNetGetLastError; - alias MultinetGetConnectionPerformanceA MultinetGetConnectionPerformance; - deprecated { - alias WNetAddConnectionA WNetAddConnection; - alias WNetCancelConnectionA WNetCancelConnection; - } + alias PFNGETPROFILEPATHA PFNGETPROFILEPATH; + alias PFNRECONCILEPROFILEA PFNRECONCILEPROFILE; + alias PFNPROCESSPOLICIESA PFNPROCESSPOLICIES; + alias NETRESOURCEA NETRESOURCE; + alias CONNECTDLGSTRUCTA CONNECTDLGSTRUCT; + alias DISCDLGSTRUCTA DISCDLGSTRUCT; + alias REMOTE_NAME_INFOA REMOTE_NAME_INFO; + alias UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO; + alias WNetAddConnection2A WNetAddConnection2; + alias WNetAddConnection3A WNetAddConnection3; + alias WNetCancelConnection2A WNetCancelConnection2; + alias WNetGetConnectionA WNetGetConnection; + alias WNetUseConnectionA WNetUseConnection; + alias WNetSetConnectionA WNetSetConnection; + alias WNetConnectionDialog1A WNetConnectionDialog1; + alias WNetDisconnectDialog1A WNetDisconnectDialog1; + alias WNetOpenEnumA WNetOpenEnum; + alias WNetEnumResourceA WNetEnumResource; + alias WNetGetUniversalNameA WNetGetUniversalName; + alias WNetGetUserA WNetGetUser; + alias WNetGetProviderNameA WNetGetProviderName; + alias WNetGetNetworkInformationA WNetGetNetworkInformation; + alias WNetGetResourceInformationA WNetGetResourceInformation; + alias WNetGetResourceParentA WNetGetResourceParent; + alias WNetGetLastErrorA WNetGetLastError; + alias MultinetGetConnectionPerformanceA MultinetGetConnectionPerformance; + deprecated { + alias WNetAddConnectionA WNetAddConnection; + alias WNetCancelConnectionA WNetCancelConnection; + } } alias NETRESOURCE* LPNETRESOURCE; diff --git a/src/core/sys/windows/winnls.d b/src/core/sys/windows/winnls.d index 5c39947e5f..d4e426cf21 100644 --- a/src/core/sys/windows/winnls.d +++ b/src/core/sys/windows/winnls.d @@ -15,794 +15,794 @@ private import core.sys.windows.basetsd, core.sys.windows.w32api, core.sys.windo alias DWORD LCTYPE, CALTYPE, CALID, LGRPID, GEOID, GEOTYPE, GEOCLASS; const size_t - MAX_DEFAULTCHAR = 2, - MAX_LEADBYTES = 12; + MAX_DEFAULTCHAR = 2, + MAX_LEADBYTES = 12; const LCTYPE - LOCALE_USE_CP_ACP = 0x40000000, - LOCALE_RETURN_NUMBER = 0x20000000; + LOCALE_USE_CP_ACP = 0x40000000, + LOCALE_RETURN_NUMBER = 0x20000000; enum : LCTYPE { - LOCALE_ILANGUAGE = 1, - LOCALE_SLANGUAGE, - LOCALE_SABBREVLANGNAME, - LOCALE_SNATIVELANGNAME, - LOCALE_ICOUNTRY, - LOCALE_SCOUNTRY, - LOCALE_SABBREVCTRYNAME, - LOCALE_SNATIVECTRYNAME, - LOCALE_IDEFAULTLANGUAGE, - LOCALE_IDEFAULTCOUNTRY, - LOCALE_IDEFAULTCODEPAGE, - LOCALE_SLIST, - LOCALE_IMEASURE, - LOCALE_SDECIMAL, - LOCALE_STHOUSAND, - LOCALE_SGROUPING, - LOCALE_IDIGITS, - LOCALE_ILZERO, - LOCALE_SNATIVEDIGITS, - LOCALE_SCURRENCY, - LOCALE_SINTLSYMBOL, - LOCALE_SMONDECIMALSEP, - LOCALE_SMONTHOUSANDSEP, - LOCALE_SMONGROUPING, - LOCALE_ICURRDIGITS, - LOCALE_IINTLCURRDIGITS, - LOCALE_ICURRENCY, - LOCALE_INEGCURR, - LOCALE_SDATE, - LOCALE_STIME, - LOCALE_SSHORTDATE, - LOCALE_SLONGDATE, - LOCALE_IDATE, - LOCALE_ILDATE, - LOCALE_ITIME, - LOCALE_ICENTURY, - LOCALE_ITLZERO, - LOCALE_IDAYLZERO, - LOCALE_IMONLZERO, - LOCALE_S1159, - LOCALE_S2359, - LOCALE_SDAYNAME1, - LOCALE_SDAYNAME2, - LOCALE_SDAYNAME3, - LOCALE_SDAYNAME4, - LOCALE_SDAYNAME5, - LOCALE_SDAYNAME6, - LOCALE_SDAYNAME7, - LOCALE_SABBREVDAYNAME1, - LOCALE_SABBREVDAYNAME2, - LOCALE_SABBREVDAYNAME3, - LOCALE_SABBREVDAYNAME4, - LOCALE_SABBREVDAYNAME5, - LOCALE_SABBREVDAYNAME6, - LOCALE_SABBREVDAYNAME7, - LOCALE_SMONTHNAME1, - LOCALE_SMONTHNAME2, - LOCALE_SMONTHNAME3, - LOCALE_SMONTHNAME4, - LOCALE_SMONTHNAME5, - LOCALE_SMONTHNAME6, - LOCALE_SMONTHNAME7, - LOCALE_SMONTHNAME8, - LOCALE_SMONTHNAME9, - LOCALE_SMONTHNAME10, - LOCALE_SMONTHNAME11, - LOCALE_SMONTHNAME12, - LOCALE_SABBREVMONTHNAME1, - LOCALE_SABBREVMONTHNAME2, - LOCALE_SABBREVMONTHNAME3, - LOCALE_SABBREVMONTHNAME4, - LOCALE_SABBREVMONTHNAME5, - LOCALE_SABBREVMONTHNAME6, - LOCALE_SABBREVMONTHNAME7, - LOCALE_SABBREVMONTHNAME8, - LOCALE_SABBREVMONTHNAME9, - LOCALE_SABBREVMONTHNAME10, - LOCALE_SABBREVMONTHNAME11, - LOCALE_SABBREVMONTHNAME12, - LOCALE_SPOSITIVESIGN, - LOCALE_SNEGATIVESIGN, - LOCALE_IPOSSIGNPOSN, - LOCALE_INEGSIGNPOSN, - LOCALE_IPOSSYMPRECEDES, - LOCALE_IPOSSEPBYSPACE, - LOCALE_INEGSYMPRECEDES, - LOCALE_INEGSEPBYSPACE, - LOCALE_FONTSIGNATURE, - LOCALE_SISO639LANGNAME, - LOCALE_SISO3166CTRYNAME, // = 90 - LOCALE_SENGLANGUAGE = 0x1001, - LOCALE_SENGCOUNTRY = 0x1002, - LOCALE_IDEFAULTANSICODEPAGE = 0x1004, - LOCALE_INEGNUMBER = 0x1010, - LOCALE_STIMEFORMAT = 0x1003, - LOCALE_ITIMEMARKPOSN = 0x1005, - LOCALE_ICALENDARTYPE = 0x1009, - LOCALE_IOPTIONALCALENDAR = 0x100B, - LOCALE_IFIRSTDAYOFWEEK = 0x100C, - LOCALE_IFIRSTWEEKOFYEAR = 0x100D, - LOCALE_SMONTHNAME13 = 0x100E, - LOCALE_SABBREVMONTHNAME13 = 0x100F + LOCALE_ILANGUAGE = 1, + LOCALE_SLANGUAGE, + LOCALE_SABBREVLANGNAME, + LOCALE_SNATIVELANGNAME, + LOCALE_ICOUNTRY, + LOCALE_SCOUNTRY, + LOCALE_SABBREVCTRYNAME, + LOCALE_SNATIVECTRYNAME, + LOCALE_IDEFAULTLANGUAGE, + LOCALE_IDEFAULTCOUNTRY, + LOCALE_IDEFAULTCODEPAGE, + LOCALE_SLIST, + LOCALE_IMEASURE, + LOCALE_SDECIMAL, + LOCALE_STHOUSAND, + LOCALE_SGROUPING, + LOCALE_IDIGITS, + LOCALE_ILZERO, + LOCALE_SNATIVEDIGITS, + LOCALE_SCURRENCY, + LOCALE_SINTLSYMBOL, + LOCALE_SMONDECIMALSEP, + LOCALE_SMONTHOUSANDSEP, + LOCALE_SMONGROUPING, + LOCALE_ICURRDIGITS, + LOCALE_IINTLCURRDIGITS, + LOCALE_ICURRENCY, + LOCALE_INEGCURR, + LOCALE_SDATE, + LOCALE_STIME, + LOCALE_SSHORTDATE, + LOCALE_SLONGDATE, + LOCALE_IDATE, + LOCALE_ILDATE, + LOCALE_ITIME, + LOCALE_ICENTURY, + LOCALE_ITLZERO, + LOCALE_IDAYLZERO, + LOCALE_IMONLZERO, + LOCALE_S1159, + LOCALE_S2359, + LOCALE_SDAYNAME1, + LOCALE_SDAYNAME2, + LOCALE_SDAYNAME3, + LOCALE_SDAYNAME4, + LOCALE_SDAYNAME5, + LOCALE_SDAYNAME6, + LOCALE_SDAYNAME7, + LOCALE_SABBREVDAYNAME1, + LOCALE_SABBREVDAYNAME2, + LOCALE_SABBREVDAYNAME3, + LOCALE_SABBREVDAYNAME4, + LOCALE_SABBREVDAYNAME5, + LOCALE_SABBREVDAYNAME6, + LOCALE_SABBREVDAYNAME7, + LOCALE_SMONTHNAME1, + LOCALE_SMONTHNAME2, + LOCALE_SMONTHNAME3, + LOCALE_SMONTHNAME4, + LOCALE_SMONTHNAME5, + LOCALE_SMONTHNAME6, + LOCALE_SMONTHNAME7, + LOCALE_SMONTHNAME8, + LOCALE_SMONTHNAME9, + LOCALE_SMONTHNAME10, + LOCALE_SMONTHNAME11, + LOCALE_SMONTHNAME12, + LOCALE_SABBREVMONTHNAME1, + LOCALE_SABBREVMONTHNAME2, + LOCALE_SABBREVMONTHNAME3, + LOCALE_SABBREVMONTHNAME4, + LOCALE_SABBREVMONTHNAME5, + LOCALE_SABBREVMONTHNAME6, + LOCALE_SABBREVMONTHNAME7, + LOCALE_SABBREVMONTHNAME8, + LOCALE_SABBREVMONTHNAME9, + LOCALE_SABBREVMONTHNAME10, + LOCALE_SABBREVMONTHNAME11, + LOCALE_SABBREVMONTHNAME12, + LOCALE_SPOSITIVESIGN, + LOCALE_SNEGATIVESIGN, + LOCALE_IPOSSIGNPOSN, + LOCALE_INEGSIGNPOSN, + LOCALE_IPOSSYMPRECEDES, + LOCALE_IPOSSEPBYSPACE, + LOCALE_INEGSYMPRECEDES, + LOCALE_INEGSEPBYSPACE, + LOCALE_FONTSIGNATURE, + LOCALE_SISO639LANGNAME, + LOCALE_SISO3166CTRYNAME, // = 90 + LOCALE_SENGLANGUAGE = 0x1001, + LOCALE_SENGCOUNTRY = 0x1002, + LOCALE_IDEFAULTANSICODEPAGE = 0x1004, + LOCALE_INEGNUMBER = 0x1010, + LOCALE_STIMEFORMAT = 0x1003, + LOCALE_ITIMEMARKPOSN = 0x1005, + LOCALE_ICALENDARTYPE = 0x1009, + LOCALE_IOPTIONALCALENDAR = 0x100B, + LOCALE_IFIRSTDAYOFWEEK = 0x100C, + LOCALE_IFIRSTWEEKOFYEAR = 0x100D, + LOCALE_SMONTHNAME13 = 0x100E, + LOCALE_SABBREVMONTHNAME13 = 0x100F } enum : LCID { - LOCALE_USER_DEFAULT = 0x400, - LOCALE_SYSTEM_DEFAULT = 0x800 + LOCALE_USER_DEFAULT = 0x400, + LOCALE_SYSTEM_DEFAULT = 0x800 } const DWORD - NORM_IGNORECASE = 1, - NORM_IGNORENONSPACE = 2, - NORM_IGNORESYMBOLS = 4, - SORT_STRINGSORT = 0x01000, - NORM_IGNOREKANATYPE = 0x10000, - NORM_IGNOREWIDTH = 0x20000; + NORM_IGNORECASE = 1, + NORM_IGNORENONSPACE = 2, + NORM_IGNORESYMBOLS = 4, + SORT_STRINGSORT = 0x01000, + NORM_IGNOREKANATYPE = 0x10000, + NORM_IGNOREWIDTH = 0x20000; const DWORD - LCMAP_LOWERCASE = 0x00000100, - LCMAP_UPPERCASE = 0x00000200, - LCMAP_SORTKEY = 0x00000400, - LCMAP_BYTEREV = 0x00000800, - LCMAP_HIRAGANA = 0x00100000, - LCMAP_KATAKANA = 0x00200000, - LCMAP_HALFWIDTH = 0x00400000, - LCMAP_FULLWIDTH = 0x00800000, - LCMAP_LINGUISTIC_CASING = 0x01000000, - LCMAP_SIMPLIFIED_CHINESE = 0x02000000, - LCMAP_TRADITIONAL_CHINESE = 0x04000000; + LCMAP_LOWERCASE = 0x00000100, + LCMAP_UPPERCASE = 0x00000200, + LCMAP_SORTKEY = 0x00000400, + LCMAP_BYTEREV = 0x00000800, + LCMAP_HIRAGANA = 0x00100000, + LCMAP_KATAKANA = 0x00200000, + LCMAP_HALFWIDTH = 0x00400000, + LCMAP_FULLWIDTH = 0x00800000, + LCMAP_LINGUISTIC_CASING = 0x01000000, + LCMAP_SIMPLIFIED_CHINESE = 0x02000000, + LCMAP_TRADITIONAL_CHINESE = 0x04000000; const CALID ENUM_ALL_CALENDARS = -1; const DWORD - DATE_SHORTDATE = 1, - DATE_LONGDATE = 2, - DATE_USE_ALT_CALENDAR = 4, - LOCALE_NOUSEROVERRIDE = 0x80000000; + DATE_SHORTDATE = 1, + DATE_LONGDATE = 2, + DATE_USE_ALT_CALENDAR = 4, + LOCALE_NOUSEROVERRIDE = 0x80000000; enum : DWORD { - CP_INSTALLED = 1, - CP_SUPPORTED + CP_INSTALLED = 1, + CP_SUPPORTED } enum : DWORD { - LCID_INSTALLED = 1, - LCID_SUPPORTED = 2, - LCID_ALTERNATE_SORTS = 4 + LCID_INSTALLED = 1, + LCID_SUPPORTED = 2, + LCID_ALTERNATE_SORTS = 4 } const DWORD - MAP_FOLDCZONE = 16, - MAP_PRECOMPOSED = 32, - MAP_COMPOSITE = 64, - MAP_FOLDDIGITS = 128; + MAP_FOLDCZONE = 16, + MAP_PRECOMPOSED = 32, + MAP_COMPOSITE = 64, + MAP_FOLDDIGITS = 128; enum : UINT { - CP_ACP, - CP_OEMCP, - CP_MACCP, - CP_THREAD_ACP, // = 3 - CP_SYMBOL = 42, - CP_UTF7 = 65000, - CP_UTF8 = 65001 + CP_ACP, + CP_OEMCP, + CP_MACCP, + CP_THREAD_ACP, // = 3 + CP_SYMBOL = 42, + CP_UTF7 = 65000, + CP_UTF8 = 65001 } enum : DWORD { - CT_CTYPE1 = 1, - CT_CTYPE2 = 2, - CT_CTYPE3 = 4 + CT_CTYPE1 = 1, + CT_CTYPE2 = 2, + CT_CTYPE3 = 4 } const WORD - C1_UPPER = 1, - C1_LOWER = 2, - C1_DIGIT = 4, - C1_SPACE = 8, - C1_PUNCT = 16, - C1_CNTRL = 32, - C1_BLANK = 64, - C1_XDIGIT = 128, - C1_ALPHA = 256; + C1_UPPER = 1, + C1_LOWER = 2, + C1_DIGIT = 4, + C1_SPACE = 8, + C1_PUNCT = 16, + C1_CNTRL = 32, + C1_BLANK = 64, + C1_XDIGIT = 128, + C1_ALPHA = 256; enum : WORD { - C2_NOTAPPLICABLE, - C2_LEFTTORIGHT, - C2_RIGHTTOLEFT, - C2_EUROPENUMBER, - C2_EUROPESEPARATOR, - C2_EUROPETERMINATOR, - C2_ARABICNUMBER, - C2_COMMONSEPARATOR, - C2_BLOCKSEPARATOR, - C2_SEGMENTSEPARATOR, - C2_WHITESPACE, - C2_OTHERNEUTRAL // = 11 + C2_NOTAPPLICABLE, + C2_LEFTTORIGHT, + C2_RIGHTTOLEFT, + C2_EUROPENUMBER, + C2_EUROPESEPARATOR, + C2_EUROPETERMINATOR, + C2_ARABICNUMBER, + C2_COMMONSEPARATOR, + C2_BLOCKSEPARATOR, + C2_SEGMENTSEPARATOR, + C2_WHITESPACE, + C2_OTHERNEUTRAL // = 11 } const WORD - C3_NOTAPPLICABLE = 0, - C3_NONSPACING = 1, - C3_DIACRITIC = 2, - C3_VOWELMARK = 4, - C3_SYMBOL = 8, - C3_KATAKANA = 0x0010, - C3_HIRAGANA = 0x0020, - C3_HALFWIDTH = 0x0040, - C3_FULLWIDTH = 0x0080, - C3_IDEOGRAPH = 0x0100, - C3_KASHIDA = 0x0200, - C3_LEXICAL = 0x0400, - C3_ALPHA = 0x8000; + C3_NOTAPPLICABLE = 0, + C3_NONSPACING = 1, + C3_DIACRITIC = 2, + C3_VOWELMARK = 4, + C3_SYMBOL = 8, + C3_KATAKANA = 0x0010, + C3_HIRAGANA = 0x0020, + C3_HALFWIDTH = 0x0040, + C3_FULLWIDTH = 0x0080, + C3_IDEOGRAPH = 0x0100, + C3_KASHIDA = 0x0200, + C3_LEXICAL = 0x0400, + C3_ALPHA = 0x8000; const DWORD - TIME_NOMINUTESORSECONDS = 1, - TIME_NOSECONDS = 2, - TIME_NOTIMEMARKER = 4, - TIME_FORCE24HOURFORMAT = 8; + TIME_NOMINUTESORSECONDS = 1, + TIME_NOSECONDS = 2, + TIME_NOTIMEMARKER = 4, + TIME_FORCE24HOURFORMAT = 8; const DWORD - MB_PRECOMPOSED = 1, - MB_COMPOSITE = 2, - MB_USEGLYPHCHARS = 4, - MB_ERR_INVALID_CHARS = 8; + MB_PRECOMPOSED = 1, + MB_COMPOSITE = 2, + MB_USEGLYPHCHARS = 4, + MB_ERR_INVALID_CHARS = 8; const DWORD - WC_DISCARDNS = 16, - WC_SEPCHARS = 32, - WC_DEFAULTCHAR = 64, - WC_COMPOSITECHECK = 512; + WC_DISCARDNS = 16, + WC_SEPCHARS = 32, + WC_DEFAULTCHAR = 64, + WC_COMPOSITECHECK = 512; enum : LONG { - CTRY_DEFAULT = 0, - CTRY_DOMINICAN_REPUBLIC = 1, - CTRY_PUERTO_RICO = 1, - CTRY_CARIBBEAN = 1, - CTRY_JAMAICA = 1, - CTRY_UNITED_STATES = 1, - CTRY_TRINIDAD_Y_TOBAGO = 1, - CTRY_CANADA = 2, - CTRY_RUSSIA = 7, - CTRY_UZBEKISTAN = 7, - CTRY_KAZAKSTAN = 7, - CTRY_TATARSTAN = 7, - CTRY_EGYPT = 20, - CTRY_SOUTH_AFRICA = 27, - CTRY_GREECE = 30, - CTRY_NETHERLANDS = 31, - CTRY_BELGIUM = 32, - CTRY_FRANCE = 33, - CTRY_MONACO = 33, - CTRY_SPAIN = 34, - CTRY_HUNGARY = 36, - CTRY_ITALY = 39, - CTRY_ROMANIA = 40, - CTRY_SWITZERLAND = 41, - CTRY_LIECHTENSTEIN = 41, - CTRY_AUSTRIA = 43, - CTRY_UNITED_KINGDOM = 44, - CTRY_DENMARK = 45, - CTRY_SWEDEN = 46, - CTRY_NORWAY = 47, - CTRY_POLAND = 48, - CTRY_GERMANY = 49, - CTRY_PERU = 51, - CTRY_MEXICO = 52, - CTRY_ARGENTINA = 54, - CTRY_BRAZIL = 55, - CTRY_CHILE = 56, - CTRY_COLOMBIA = 57, - CTRY_VENEZUELA = 58, - CTRY_MALAYSIA = 60, - CTRY_AUSTRALIA = 61, - CTRY_INDONESIA = 62, - CTRY_PHILIPPINES = 63, - CTRY_NEW_ZEALAND = 64, - CTRY_SINGAPORE = 65, - CTRY_THAILAND = 66, - CTRY_JAPAN = 81, - CTRY_SOUTH_KOREA = 82, - CTRY_VIET_NAM = 84, - CTRY_PRCHINA = 86, - CTRY_TURKEY = 90, - CTRY_INDIA = 91, - CTRY_PAKISTAN = 92, - CTRY_MOROCCO = 212, - CTRY_ALGERIA = 213, - CTRY_TUNISIA = 216, - CTRY_LIBYA = 218, - CTRY_KENYA = 254, - CTRY_ZIMBABWE = 263, - CTRY_FAEROE_ISLANDS = 298, - CTRY_PORTUGAL = 351, - CTRY_LUXEMBOURG = 352, - CTRY_IRELAND = 353, - CTRY_ICELAND = 354, - CTRY_ALBANIA = 355, - CTRY_FINLAND = 358, - CTRY_BULGARIA = 359, - CTRY_LITHUANIA = 370, - CTRY_LATVIA = 371, - CTRY_ESTONIA = 372, - CTRY_ARMENIA = 374, - CTRY_BELARUS = 375, - CTRY_UKRAINE = 380, - CTRY_SERBIA = 381, - CTRY_CROATIA = 385, - CTRY_SLOVENIA = 386, - CTRY_MACEDONIA = 389, - CTRY_CZECH = 420, - CTRY_SLOVAK = 421, - CTRY_BELIZE = 501, - CTRY_GUATEMALA = 502, - CTRY_EL_SALVADOR = 503, - CTRY_HONDURAS = 504, - CTRY_NICARAGUA = 505, - CTRY_COSTA_RICA = 506, - CTRY_PANAMA = 507, - CTRY_BOLIVIA = 591, - CTRY_ECUADOR = 593, - CTRY_PARAGUAY = 595, - CTRY_URUGUAY = 598, - CTRY_BRUNEI_DARUSSALAM = 673, - CTRY_HONG_KONG = 852, - CTRY_MACAU = 853, - CTRY_TAIWAN = 886, - CTRY_MALDIVES = 960, - CTRY_LEBANON = 961, - CTRY_JORDAN = 962, - CTRY_SYRIA = 963, - CTRY_IRAQ = 964, - CTRY_KUWAIT = 965, - CTRY_SAUDI_ARABIA = 966, - CTRY_YEMEN = 967, - CTRY_OMAN = 968, - CTRY_UAE = 971, - CTRY_ISRAEL = 972, - CTRY_BAHRAIN = 973, - CTRY_QATAR = 974, - CTRY_MONGOLIA = 976, - CTRY_IRAN = 981, - CTRY_AZERBAIJAN = 994, - CTRY_GEORGIA = 995, - CTRY_KYRGYZSTAN = 996 + CTRY_DEFAULT = 0, + CTRY_DOMINICAN_REPUBLIC = 1, + CTRY_PUERTO_RICO = 1, + CTRY_CARIBBEAN = 1, + CTRY_JAMAICA = 1, + CTRY_UNITED_STATES = 1, + CTRY_TRINIDAD_Y_TOBAGO = 1, + CTRY_CANADA = 2, + CTRY_RUSSIA = 7, + CTRY_UZBEKISTAN = 7, + CTRY_KAZAKSTAN = 7, + CTRY_TATARSTAN = 7, + CTRY_EGYPT = 20, + CTRY_SOUTH_AFRICA = 27, + CTRY_GREECE = 30, + CTRY_NETHERLANDS = 31, + CTRY_BELGIUM = 32, + CTRY_FRANCE = 33, + CTRY_MONACO = 33, + CTRY_SPAIN = 34, + CTRY_HUNGARY = 36, + CTRY_ITALY = 39, + CTRY_ROMANIA = 40, + CTRY_SWITZERLAND = 41, + CTRY_LIECHTENSTEIN = 41, + CTRY_AUSTRIA = 43, + CTRY_UNITED_KINGDOM = 44, + CTRY_DENMARK = 45, + CTRY_SWEDEN = 46, + CTRY_NORWAY = 47, + CTRY_POLAND = 48, + CTRY_GERMANY = 49, + CTRY_PERU = 51, + CTRY_MEXICO = 52, + CTRY_ARGENTINA = 54, + CTRY_BRAZIL = 55, + CTRY_CHILE = 56, + CTRY_COLOMBIA = 57, + CTRY_VENEZUELA = 58, + CTRY_MALAYSIA = 60, + CTRY_AUSTRALIA = 61, + CTRY_INDONESIA = 62, + CTRY_PHILIPPINES = 63, + CTRY_NEW_ZEALAND = 64, + CTRY_SINGAPORE = 65, + CTRY_THAILAND = 66, + CTRY_JAPAN = 81, + CTRY_SOUTH_KOREA = 82, + CTRY_VIET_NAM = 84, + CTRY_PRCHINA = 86, + CTRY_TURKEY = 90, + CTRY_INDIA = 91, + CTRY_PAKISTAN = 92, + CTRY_MOROCCO = 212, + CTRY_ALGERIA = 213, + CTRY_TUNISIA = 216, + CTRY_LIBYA = 218, + CTRY_KENYA = 254, + CTRY_ZIMBABWE = 263, + CTRY_FAEROE_ISLANDS = 298, + CTRY_PORTUGAL = 351, + CTRY_LUXEMBOURG = 352, + CTRY_IRELAND = 353, + CTRY_ICELAND = 354, + CTRY_ALBANIA = 355, + CTRY_FINLAND = 358, + CTRY_BULGARIA = 359, + CTRY_LITHUANIA = 370, + CTRY_LATVIA = 371, + CTRY_ESTONIA = 372, + CTRY_ARMENIA = 374, + CTRY_BELARUS = 375, + CTRY_UKRAINE = 380, + CTRY_SERBIA = 381, + CTRY_CROATIA = 385, + CTRY_SLOVENIA = 386, + CTRY_MACEDONIA = 389, + CTRY_CZECH = 420, + CTRY_SLOVAK = 421, + CTRY_BELIZE = 501, + CTRY_GUATEMALA = 502, + CTRY_EL_SALVADOR = 503, + CTRY_HONDURAS = 504, + CTRY_NICARAGUA = 505, + CTRY_COSTA_RICA = 506, + CTRY_PANAMA = 507, + CTRY_BOLIVIA = 591, + CTRY_ECUADOR = 593, + CTRY_PARAGUAY = 595, + CTRY_URUGUAY = 598, + CTRY_BRUNEI_DARUSSALAM = 673, + CTRY_HONG_KONG = 852, + CTRY_MACAU = 853, + CTRY_TAIWAN = 886, + CTRY_MALDIVES = 960, + CTRY_LEBANON = 961, + CTRY_JORDAN = 962, + CTRY_SYRIA = 963, + CTRY_IRAQ = 964, + CTRY_KUWAIT = 965, + CTRY_SAUDI_ARABIA = 966, + CTRY_YEMEN = 967, + CTRY_OMAN = 968, + CTRY_UAE = 971, + CTRY_ISRAEL = 972, + CTRY_BAHRAIN = 973, + CTRY_QATAR = 974, + CTRY_MONGOLIA = 976, + CTRY_IRAN = 981, + CTRY_AZERBAIJAN = 994, + CTRY_GEORGIA = 995, + CTRY_KYRGYZSTAN = 996 } enum : CALTYPE { - CAL_ICALINTVALUE = 1, - CAL_SCALNAME, - CAL_IYEAROFFSETRANGE, - CAL_SERASTRING, - CAL_SSHORTDATE, - CAL_SLONGDATE, - CAL_SDAYNAME1, - CAL_SDAYNAME2, - CAL_SDAYNAME3, - CAL_SDAYNAME4, - CAL_SDAYNAME5, - CAL_SDAYNAME6, - CAL_SDAYNAME7, - CAL_SABBREVDAYNAME1, - CAL_SABBREVDAYNAME2, - CAL_SABBREVDAYNAME3, - CAL_SABBREVDAYNAME4, - CAL_SABBREVDAYNAME5, - CAL_SABBREVDAYNAME6, - CAL_SABBREVDAYNAME7, - CAL_SMONTHNAME1, - CAL_SMONTHNAME2, - CAL_SMONTHNAME3, - CAL_SMONTHNAME4, - CAL_SMONTHNAME5, - CAL_SMONTHNAME6, - CAL_SMONTHNAME7, - CAL_SMONTHNAME8, - CAL_SMONTHNAME9, - CAL_SMONTHNAME10, - CAL_SMONTHNAME11, - CAL_SMONTHNAME12, - CAL_SMONTHNAME13, - CAL_SABBREVMONTHNAME1, - CAL_SABBREVMONTHNAME2, - CAL_SABBREVMONTHNAME3, - CAL_SABBREVMONTHNAME4, - CAL_SABBREVMONTHNAME5, - CAL_SABBREVMONTHNAME6, - CAL_SABBREVMONTHNAME7, - CAL_SABBREVMONTHNAME8, - CAL_SABBREVMONTHNAME9, - CAL_SABBREVMONTHNAME10, - CAL_SABBREVMONTHNAME11, - CAL_SABBREVMONTHNAME12, - CAL_SABBREVMONTHNAME13 // = 46 + CAL_ICALINTVALUE = 1, + CAL_SCALNAME, + CAL_IYEAROFFSETRANGE, + CAL_SERASTRING, + CAL_SSHORTDATE, + CAL_SLONGDATE, + CAL_SDAYNAME1, + CAL_SDAYNAME2, + CAL_SDAYNAME3, + CAL_SDAYNAME4, + CAL_SDAYNAME5, + CAL_SDAYNAME6, + CAL_SDAYNAME7, + CAL_SABBREVDAYNAME1, + CAL_SABBREVDAYNAME2, + CAL_SABBREVDAYNAME3, + CAL_SABBREVDAYNAME4, + CAL_SABBREVDAYNAME5, + CAL_SABBREVDAYNAME6, + CAL_SABBREVDAYNAME7, + CAL_SMONTHNAME1, + CAL_SMONTHNAME2, + CAL_SMONTHNAME3, + CAL_SMONTHNAME4, + CAL_SMONTHNAME5, + CAL_SMONTHNAME6, + CAL_SMONTHNAME7, + CAL_SMONTHNAME8, + CAL_SMONTHNAME9, + CAL_SMONTHNAME10, + CAL_SMONTHNAME11, + CAL_SMONTHNAME12, + CAL_SMONTHNAME13, + CAL_SABBREVMONTHNAME1, + CAL_SABBREVMONTHNAME2, + CAL_SABBREVMONTHNAME3, + CAL_SABBREVMONTHNAME4, + CAL_SABBREVMONTHNAME5, + CAL_SABBREVMONTHNAME6, + CAL_SABBREVMONTHNAME7, + CAL_SABBREVMONTHNAME8, + CAL_SABBREVMONTHNAME9, + CAL_SABBREVMONTHNAME10, + CAL_SABBREVMONTHNAME11, + CAL_SABBREVMONTHNAME12, + CAL_SABBREVMONTHNAME13 // = 46 } enum : CALTYPE { - CAL_GREGORIAN = 1, - CAL_GREGORIAN_US, - CAL_JAPAN, - CAL_TAIWAN, - CAL_KOREA, - CAL_HIJRI, - CAL_THAI, - CAL_HEBREW, - CAL_GREGORIAN_ME_FRENCH, - CAL_GREGORIAN_ARABIC, - CAL_GREGORIAN_XLIT_ENGLISH, - CAL_GREGORIAN_XLIT_FRENCH // = 12 + CAL_GREGORIAN = 1, + CAL_GREGORIAN_US, + CAL_JAPAN, + CAL_TAIWAN, + CAL_KOREA, + CAL_HIJRI, + CAL_THAI, + CAL_HEBREW, + CAL_GREGORIAN_ME_FRENCH, + CAL_GREGORIAN_ARABIC, + CAL_GREGORIAN_XLIT_ENGLISH, + CAL_GREGORIAN_XLIT_FRENCH // = 12 } enum : int { - CSTR_LESS_THAN = 1, - CSTR_EQUAL, - CSTR_GREATER_THAN + CSTR_LESS_THAN = 1, + CSTR_EQUAL, + CSTR_GREATER_THAN } enum : DWORD { - LGRPID_INSTALLED = 1, - LGRPID_SUPPORTED + LGRPID_INSTALLED = 1, + LGRPID_SUPPORTED } enum : LGRPID { - LGRPID_WESTERN_EUROPE = 1, - LGRPID_CENTRAL_EUROPE, - LGRPID_BALTIC, - LGRPID_GREEK, - LGRPID_CYRILLIC, - LGRPID_TURKISH, - LGRPID_JAPANESE, - LGRPID_KOREAN, - LGRPID_TRADITIONAL_CHINESE, - LGRPID_SIMPLIFIED_CHINESE, - LGRPID_THAI, - LGRPID_HEBREW, - LGRPID_ARABIC, - LGRPID_VIETNAMESE, - LGRPID_INDIC, - LGRPID_GEORGIAN, - LGRPID_ARMENIAN // = 17 + LGRPID_WESTERN_EUROPE = 1, + LGRPID_CENTRAL_EUROPE, + LGRPID_BALTIC, + LGRPID_GREEK, + LGRPID_CYRILLIC, + LGRPID_TURKISH, + LGRPID_JAPANESE, + LGRPID_KOREAN, + LGRPID_TRADITIONAL_CHINESE, + LGRPID_SIMPLIFIED_CHINESE, + LGRPID_THAI, + LGRPID_HEBREW, + LGRPID_ARABIC, + LGRPID_VIETNAMESE, + LGRPID_INDIC, + LGRPID_GEORGIAN, + LGRPID_ARMENIAN // = 17 } static if (_WIN32_WINNT >= 0x500) { - enum : LCTYPE { - LOCALE_SYEARMONTH = 0x1006, - LOCALE_SENGCURRNAME = 0x1007, - LOCALE_SNATIVECURRNAME = 0x1008, - LOCALE_IDEFAULTEBCDICCODEPAGE = 0x1012, - LOCALE_SSORTNAME = 0x1013, - LOCALE_IDIGITSUBSTITUTION = 0x1014, - LOCALE_IPAPERSIZE = 0x100A - } - - const DWORD - DATE_YEARMONTH = 8, - DATE_LTRREADING = 16, - DATE_RTLREADING = 32; - - const DWORD MAP_EXPAND_LIGATURES = 0x2000; - const DWORD WC_NO_BEST_FIT_CHARS = 1024; - - enum : CALTYPE { - CAL_SYEARMONTH = 47, - CAL_ITWODIGITYEARMAX = 48, - CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE, - CAL_RETURN_NUMBER = LOCALE_RETURN_NUMBER, - CAL_USE_CP_ACP = LOCALE_USE_CP_ACP - } + enum : LCTYPE { + LOCALE_SYEARMONTH = 0x1006, + LOCALE_SENGCURRNAME = 0x1007, + LOCALE_SNATIVECURRNAME = 0x1008, + LOCALE_IDEFAULTEBCDICCODEPAGE = 0x1012, + LOCALE_SSORTNAME = 0x1013, + LOCALE_IDIGITSUBSTITUTION = 0x1014, + LOCALE_IPAPERSIZE = 0x100A + } + + const DWORD + DATE_YEARMONTH = 8, + DATE_LTRREADING = 16, + DATE_RTLREADING = 32; + + const DWORD MAP_EXPAND_LIGATURES = 0x2000; + const DWORD WC_NO_BEST_FIT_CHARS = 1024; + + enum : CALTYPE { + CAL_SYEARMONTH = 47, + CAL_ITWODIGITYEARMAX = 48, + CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE, + CAL_RETURN_NUMBER = LOCALE_RETURN_NUMBER, + CAL_USE_CP_ACP = LOCALE_USE_CP_ACP + } } // (_WIN32_WINNT >= 0x500) extern (Windows) { - alias BOOL function(LPSTR) CALINFO_ENUMPROCA; - alias BOOL function(LPWSTR) CALINFO_ENUMPROCW; - alias BOOL function(LPSTR, CALID) CALINFO_ENUMPROCEXA; - alias BOOL function(LPWSTR, CALID) CALINFO_ENUMPROCEXW; - alias BOOL function(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR) - LANGUAGEGROUP_ENUMPROCA; - alias BOOL function(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR) - LANGUAGEGROUP_ENUMPROCW; - alias BOOL function(LGRPID, LCID, LPSTR, LONG_PTR) - LANGGROUPLOCALE_ENUMPROCA; - alias BOOL function(LGRPID, LCID, LPWSTR, LONG_PTR) - LANGGROUPLOCALE_ENUMPROCW; - alias BOOL function(LPWSTR, LONG_PTR) UILANGUAGE_ENUMPROCW; - alias BOOL function(LPSTR, LONG_PTR) UILANGUAGE_ENUMPROCA; - alias BOOL function(LPSTR) LOCALE_ENUMPROCA; - alias BOOL function(LPWSTR) LOCALE_ENUMPROCW; - alias BOOL function(LPSTR) CODEPAGE_ENUMPROCA; - alias BOOL function(LPWSTR) CODEPAGE_ENUMPROCW; - alias BOOL function(LPSTR) DATEFMT_ENUMPROCA; - alias BOOL function(LPWSTR) DATEFMT_ENUMPROCW; - alias BOOL function(LPSTR, CALID) DATEFMT_ENUMPROCEXA; - alias BOOL function(LPWSTR, CALID) DATEFMT_ENUMPROCEXW; - alias BOOL function(LPSTR) TIMEFMT_ENUMPROCA; - alias BOOL function(LPWSTR) TIMEFMT_ENUMPROCW; - alias BOOL function(GEOID) GEO_ENUMPROC; + alias BOOL function(LPSTR) CALINFO_ENUMPROCA; + alias BOOL function(LPWSTR) CALINFO_ENUMPROCW; + alias BOOL function(LPSTR, CALID) CALINFO_ENUMPROCEXA; + alias BOOL function(LPWSTR, CALID) CALINFO_ENUMPROCEXW; + alias BOOL function(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR) + LANGUAGEGROUP_ENUMPROCA; + alias BOOL function(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR) + LANGUAGEGROUP_ENUMPROCW; + alias BOOL function(LGRPID, LCID, LPSTR, LONG_PTR) + LANGGROUPLOCALE_ENUMPROCA; + alias BOOL function(LGRPID, LCID, LPWSTR, LONG_PTR) + LANGGROUPLOCALE_ENUMPROCW; + alias BOOL function(LPWSTR, LONG_PTR) UILANGUAGE_ENUMPROCW; + alias BOOL function(LPSTR, LONG_PTR) UILANGUAGE_ENUMPROCA; + alias BOOL function(LPSTR) LOCALE_ENUMPROCA; + alias BOOL function(LPWSTR) LOCALE_ENUMPROCW; + alias BOOL function(LPSTR) CODEPAGE_ENUMPROCA; + alias BOOL function(LPWSTR) CODEPAGE_ENUMPROCW; + alias BOOL function(LPSTR) DATEFMT_ENUMPROCA; + alias BOOL function(LPWSTR) DATEFMT_ENUMPROCW; + alias BOOL function(LPSTR, CALID) DATEFMT_ENUMPROCEXA; + alias BOOL function(LPWSTR, CALID) DATEFMT_ENUMPROCEXW; + alias BOOL function(LPSTR) TIMEFMT_ENUMPROCA; + alias BOOL function(LPWSTR) TIMEFMT_ENUMPROCW; + alias BOOL function(GEOID) GEO_ENUMPROC; } enum NLS_FUNCTION { - COMPARE_STRING = 0x0001 + COMPARE_STRING = 0x0001 } enum SYSGEOCLASS { - GEOCLASS_NATION = 16, - GEOCLASS_REGION = 14 + GEOCLASS_NATION = 16, + GEOCLASS_REGION = 14 } enum SYSGEOTYPE { - GEO_NATION = 0x0001, - GEO_LATITUDE = 0x0002, - GEO_LONGITUDE = 0x0003, - GEO_ISO2 = 0x0004, - GEO_ISO3 = 0x0005, - GEO_RFC1766 = 0x0006, - GEO_LCID = 0x0007, - GEO_FRIENDLYNAME = 0x0008, - GEO_OFFICIALNAME = 0x0009, - GEO_TIMEZONES = 0x000a, - GEO_OFFICIALLANGUAGES = 0x000a + GEO_NATION = 0x0001, + GEO_LATITUDE = 0x0002, + GEO_LONGITUDE = 0x0003, + GEO_ISO2 = 0x0004, + GEO_ISO3 = 0x0005, + GEO_RFC1766 = 0x0006, + GEO_LCID = 0x0007, + GEO_FRIENDLYNAME = 0x0008, + GEO_OFFICIALNAME = 0x0009, + GEO_TIMEZONES = 0x000a, + GEO_OFFICIALLANGUAGES = 0x000a } struct CPINFO { - UINT MaxCharSize; - BYTE[MAX_DEFAULTCHAR] DefaultChar; - BYTE[MAX_LEADBYTES] LeadByte; + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; } alias CPINFO* LPCPINFO; struct CPINFOEXA { - UINT MaxCharSize; - BYTE[MAX_DEFAULTCHAR] DefaultChar; - BYTE[MAX_LEADBYTES] LeadByte; - WCHAR UnicodeDefaultChar; - UINT CodePage; - CHAR[MAX_PATH] CodePageName; + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; + WCHAR UnicodeDefaultChar; + UINT CodePage; + CHAR[MAX_PATH] CodePageName; } alias CPINFOEXA* LPCPINFOEXA; struct CPINFOEXW { - UINT MaxCharSize; - BYTE[MAX_DEFAULTCHAR] DefaultChar; - BYTE[MAX_LEADBYTES] LeadByte; - WCHAR UnicodeDefaultChar; - UINT CodePage; - WCHAR[MAX_PATH] CodePageName; + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; + WCHAR UnicodeDefaultChar; + UINT CodePage; + WCHAR[MAX_PATH] CodePageName; } alias CPINFOEXW* LPCPINFOEXW; struct CURRENCYFMTA { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPSTR lpDecimalSep; - LPSTR lpThousandSep; - UINT NegativeOrder; - UINT PositiveOrder; - LPSTR lpCurrencySymbol; + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPSTR lpCurrencySymbol; } alias CURRENCYFMTA* LPCURRENCYFMTA; struct CURRENCYFMTW { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPWSTR lpDecimalSep; - LPWSTR lpThousandSep; - UINT NegativeOrder; - UINT PositiveOrder; - LPWSTR lpCurrencySymbol; + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPWSTR lpCurrencySymbol; } alias CURRENCYFMTW* LPCURRENCYFMTW; struct NLSVERSIONINFO { - DWORD dwNLSVersionInfoSize; - DWORD dwNLSVersion; - DWORD dwDefinedVersion; + DWORD dwNLSVersionInfoSize; + DWORD dwNLSVersion; + DWORD dwDefinedVersion; } alias NLSVERSIONINFO* LPNLSVERSIONINFO; struct NUMBERFMTA { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPSTR lpDecimalSep; - LPSTR lpThousandSep; - UINT NegativeOrder; + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; } alias NUMBERFMTA* LPNUMBERFMTA; struct NUMBERFMTW { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPWSTR lpDecimalSep; - LPWSTR lpThousandSep; - UINT NegativeOrder; + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; } alias NUMBERFMTW* LPNUMBERFMTW; extern (Windows) { - int CompareStringA(LCID, DWORD, LPCSTR, int, LPCSTR, int); - int CompareStringW(LCID, DWORD, LPCWSTR, int, LPCWSTR, int); - LCID ConvertDefaultLocale(LCID); - BOOL EnumCalendarInfoA(CALINFO_ENUMPROCA, LCID, CALID, CALTYPE); - BOOL EnumCalendarInfoW(CALINFO_ENUMPROCW, LCID, CALID, CALTYPE); - BOOL EnumDateFormatsA(DATEFMT_ENUMPROCA, LCID, DWORD); - BOOL EnumDateFormatsW(DATEFMT_ENUMPROCW, LCID, DWORD); - BOOL EnumSystemCodePagesA(CODEPAGE_ENUMPROCA, DWORD); - BOOL EnumSystemCodePagesW(CODEPAGE_ENUMPROCW, DWORD); - BOOL EnumSystemGeoID(GEOCLASS, GEOID, GEO_ENUMPROC); - BOOL EnumSystemLocalesA(LOCALE_ENUMPROCA, DWORD); - BOOL EnumSystemLocalesW(LOCALE_ENUMPROCW, DWORD); - BOOL EnumTimeFormatsA(TIMEFMT_ENUMPROCA, LCID, DWORD); - BOOL EnumTimeFormatsW(TIMEFMT_ENUMPROCW, LCID, DWORD); - int FoldStringA(DWORD, LPCSTR, int, LPSTR, int); - int FoldStringW(DWORD, LPCWSTR, int, LPWSTR, int); - UINT GetACP(); - int GetCalendarInfoA(LCID, CALID, CALTYPE, LPSTR, int, LPDWORD); - int GetCalendarInfoW(LCID, CALID, CALTYPE, LPWSTR, int, LPDWORD); - BOOL GetCPInfo(UINT, LPCPINFO); - BOOL GetCPInfoExA(UINT, DWORD, LPCPINFOEXA); - BOOL GetCPInfoExW(UINT, DWORD, LPCPINFOEXW); - int GetCurrencyFormatA(LCID, DWORD, LPCSTR, const(CURRENCYFMTA)*, LPSTR, int); - int GetCurrencyFormatW(LCID, DWORD, LPCWSTR, const(CURRENCYFMTW)*, LPWSTR, - int); - int GetDateFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); - int GetDateFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); - int GetGeoInfoA(GEOID, GEOTYPE, LPSTR, int, LANGID); - int GetGeoInfoW(GEOID, GEOTYPE, LPWSTR, int, LANGID); - int GetLocaleInfoA(LCID, LCTYPE, LPSTR, int); - int GetLocaleInfoW(LCID, LCTYPE, LPWSTR, int); - BOOL GetNLSVersion(NLS_FUNCTION, LCID, LPNLSVERSIONINFO); - int GetNumberFormatA(LCID, DWORD, LPCSTR, const(NUMBERFMTA)*, LPSTR, int); - int GetNumberFormatW(LCID, DWORD, LPCWSTR, const(NUMBERFMTW)*, LPWSTR, int); - UINT GetOEMCP(); - BOOL GetStringTypeA(LCID, DWORD, LPCSTR, int, LPWORD); - BOOL GetStringTypeW(DWORD, LPCWSTR, int, LPWORD); - BOOL GetStringTypeExA(LCID, DWORD, LPCSTR, int, LPWORD); - BOOL GetStringTypeExW(LCID, DWORD, LPCWSTR, int, LPWORD); - LANGID GetSystemDefaultLangID(); - LCID GetSystemDefaultLCID(); - LCID GetThreadLocale(); - int GetTimeFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); - int GetTimeFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); - LANGID GetUserDefaultLangID(); - LCID GetUserDefaultLCID(); - GEOID GetUserGeoID(GEOCLASS); - BOOL IsDBCSLeadByte(BYTE); - BOOL IsDBCSLeadByteEx(UINT, BYTE); - BOOL IsNLSDefinedString(NLS_FUNCTION, DWORD, LPNLSVERSIONINFO, LPCWSTR, - int); - BOOL IsValidCodePage(UINT); - BOOL IsValidLocale(LCID, DWORD); - int LCMapStringA(LCID, DWORD, LPCSTR, int, LPSTR, int); - int LCMapStringW(LCID, DWORD, LPCWSTR, int, LPWSTR, int); - int MultiByteToWideChar(UINT, DWORD, LPCSTR, int, LPWSTR, int); - int SetCalendarInfoA(LCID, CALID, CALTYPE, LPCSTR); - int SetCalendarInfoW(LCID, CALID, CALTYPE, LPCWSTR); - BOOL SetLocaleInfoA(LCID, LCTYPE, LPCSTR); - BOOL SetLocaleInfoW(LCID, LCTYPE, LPCWSTR); - BOOL SetThreadLocale(LCID); - BOOL SetUserGeoID(GEOID); - int WideCharToMultiByte(UINT, DWORD, LPCWSTR, int, LPSTR, int, LPCSTR, - LPBOOL); - - static if (_WIN32_WINNT >= 0x410) { - BOOL EnumCalendarInfoExA(CALINFO_ENUMPROCEXA, LCID, CALID, CALTYPE); - BOOL EnumCalendarInfoExW(CALINFO_ENUMPROCEXW, LCID, CALID, CALTYPE); - BOOL EnumDateFormatsExA(DATEFMT_ENUMPROCEXA, LCID, DWORD); - BOOL EnumDateFormatsExW(DATEFMT_ENUMPROCEXW, LCID, DWORD); - BOOL IsValidLanguageGroup(LGRPID, DWORD); - } - - static if (_WIN32_WINNT >= 0x500) { - LANGID GetSystemDefaultUILanguage(); - LANGID GetUserDefaultUILanguage(); - - BOOL EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA, DWORD, - LONG_PTR); - BOOL EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW, DWORD, - LONG_PTR); - BOOL EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA, LGRPID, - DWORD, LONG_PTR); - BOOL EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW, LGRPID, - DWORD, LONG_PTR); - BOOL EnumUILanguagesA(UILANGUAGE_ENUMPROCA, DWORD, LONG_PTR); - BOOL EnumUILanguagesW(UILANGUAGE_ENUMPROCW, DWORD, LONG_PTR); - } + int CompareStringA(LCID, DWORD, LPCSTR, int, LPCSTR, int); + int CompareStringW(LCID, DWORD, LPCWSTR, int, LPCWSTR, int); + LCID ConvertDefaultLocale(LCID); + BOOL EnumCalendarInfoA(CALINFO_ENUMPROCA, LCID, CALID, CALTYPE); + BOOL EnumCalendarInfoW(CALINFO_ENUMPROCW, LCID, CALID, CALTYPE); + BOOL EnumDateFormatsA(DATEFMT_ENUMPROCA, LCID, DWORD); + BOOL EnumDateFormatsW(DATEFMT_ENUMPROCW, LCID, DWORD); + BOOL EnumSystemCodePagesA(CODEPAGE_ENUMPROCA, DWORD); + BOOL EnumSystemCodePagesW(CODEPAGE_ENUMPROCW, DWORD); + BOOL EnumSystemGeoID(GEOCLASS, GEOID, GEO_ENUMPROC); + BOOL EnumSystemLocalesA(LOCALE_ENUMPROCA, DWORD); + BOOL EnumSystemLocalesW(LOCALE_ENUMPROCW, DWORD); + BOOL EnumTimeFormatsA(TIMEFMT_ENUMPROCA, LCID, DWORD); + BOOL EnumTimeFormatsW(TIMEFMT_ENUMPROCW, LCID, DWORD); + int FoldStringA(DWORD, LPCSTR, int, LPSTR, int); + int FoldStringW(DWORD, LPCWSTR, int, LPWSTR, int); + UINT GetACP(); + int GetCalendarInfoA(LCID, CALID, CALTYPE, LPSTR, int, LPDWORD); + int GetCalendarInfoW(LCID, CALID, CALTYPE, LPWSTR, int, LPDWORD); + BOOL GetCPInfo(UINT, LPCPINFO); + BOOL GetCPInfoExA(UINT, DWORD, LPCPINFOEXA); + BOOL GetCPInfoExW(UINT, DWORD, LPCPINFOEXW); + int GetCurrencyFormatA(LCID, DWORD, LPCSTR, const(CURRENCYFMTA)*, LPSTR, int); + int GetCurrencyFormatW(LCID, DWORD, LPCWSTR, const(CURRENCYFMTW)*, LPWSTR, + int); + int GetDateFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); + int GetDateFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); + int GetGeoInfoA(GEOID, GEOTYPE, LPSTR, int, LANGID); + int GetGeoInfoW(GEOID, GEOTYPE, LPWSTR, int, LANGID); + int GetLocaleInfoA(LCID, LCTYPE, LPSTR, int); + int GetLocaleInfoW(LCID, LCTYPE, LPWSTR, int); + BOOL GetNLSVersion(NLS_FUNCTION, LCID, LPNLSVERSIONINFO); + int GetNumberFormatA(LCID, DWORD, LPCSTR, const(NUMBERFMTA)*, LPSTR, int); + int GetNumberFormatW(LCID, DWORD, LPCWSTR, const(NUMBERFMTW)*, LPWSTR, int); + UINT GetOEMCP(); + BOOL GetStringTypeA(LCID, DWORD, LPCSTR, int, LPWORD); + BOOL GetStringTypeW(DWORD, LPCWSTR, int, LPWORD); + BOOL GetStringTypeExA(LCID, DWORD, LPCSTR, int, LPWORD); + BOOL GetStringTypeExW(LCID, DWORD, LPCWSTR, int, LPWORD); + LANGID GetSystemDefaultLangID(); + LCID GetSystemDefaultLCID(); + LCID GetThreadLocale(); + int GetTimeFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); + int GetTimeFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); + LANGID GetUserDefaultLangID(); + LCID GetUserDefaultLCID(); + GEOID GetUserGeoID(GEOCLASS); + BOOL IsDBCSLeadByte(BYTE); + BOOL IsDBCSLeadByteEx(UINT, BYTE); + BOOL IsNLSDefinedString(NLS_FUNCTION, DWORD, LPNLSVERSIONINFO, LPCWSTR, + int); + BOOL IsValidCodePage(UINT); + BOOL IsValidLocale(LCID, DWORD); + int LCMapStringA(LCID, DWORD, LPCSTR, int, LPSTR, int); + int LCMapStringW(LCID, DWORD, LPCWSTR, int, LPWSTR, int); + int MultiByteToWideChar(UINT, DWORD, LPCSTR, int, LPWSTR, int); + int SetCalendarInfoA(LCID, CALID, CALTYPE, LPCSTR); + int SetCalendarInfoW(LCID, CALID, CALTYPE, LPCWSTR); + BOOL SetLocaleInfoA(LCID, LCTYPE, LPCSTR); + BOOL SetLocaleInfoW(LCID, LCTYPE, LPCWSTR); + BOOL SetThreadLocale(LCID); + BOOL SetUserGeoID(GEOID); + int WideCharToMultiByte(UINT, DWORD, LPCWSTR, int, LPSTR, int, LPCSTR, + LPBOOL); + + static if (_WIN32_WINNT >= 0x410) { + BOOL EnumCalendarInfoExA(CALINFO_ENUMPROCEXA, LCID, CALID, CALTYPE); + BOOL EnumCalendarInfoExW(CALINFO_ENUMPROCEXW, LCID, CALID, CALTYPE); + BOOL EnumDateFormatsExA(DATEFMT_ENUMPROCEXA, LCID, DWORD); + BOOL EnumDateFormatsExW(DATEFMT_ENUMPROCEXW, LCID, DWORD); + BOOL IsValidLanguageGroup(LGRPID, DWORD); + } + + static if (_WIN32_WINNT >= 0x500) { + LANGID GetSystemDefaultUILanguage(); + LANGID GetUserDefaultUILanguage(); + + BOOL EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA, DWORD, + LONG_PTR); + BOOL EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW, DWORD, + LONG_PTR); + BOOL EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA, LGRPID, + DWORD, LONG_PTR); + BOOL EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW, LGRPID, + DWORD, LONG_PTR); + BOOL EnumUILanguagesA(UILANGUAGE_ENUMPROCA, DWORD, LONG_PTR); + BOOL EnumUILanguagesW(UILANGUAGE_ENUMPROCW, DWORD, LONG_PTR); + } } version (Unicode) { - alias CALINFO_ENUMPROCW CALINFO_ENUMPROC; - alias CALINFO_ENUMPROCEXW CALINFO_ENUMPROCEX; - alias LOCALE_ENUMPROCW LOCALE_ENUMPROC; - alias CODEPAGE_ENUMPROCW CODEPAGE_ENUMPROC; - alias DATEFMT_ENUMPROCW DATEFMT_ENUMPROC; - alias DATEFMT_ENUMPROCEXW DATEFMT_ENUMPROCEX; - alias TIMEFMT_ENUMPROCW TIMEFMT_ENUMPROC; - alias LANGUAGEGROUP_ENUMPROCW LANGUAGEGROUP_ENUMPROC; - alias LANGGROUPLOCALE_ENUMPROCW LANGGROUPLOCALE_ENUMPROC; - alias UILANGUAGE_ENUMPROCW UILANGUAGE_ENUMPROC; - alias CPINFOEXW CPINFOEX; - alias LPCPINFOEXW LPCPINFOEX; - alias CURRENCYFMTW CURRENCYFMT; - alias LPCURRENCYFMTW LPCURRENCYFMT; - alias NUMBERFMTW NUMBERFMT; - alias LPNUMBERFMTW LPNUMBERFMT; - alias CompareStringW CompareString; - alias EnumCalendarInfoW EnumCalendarInfo; - alias EnumSystemCodePagesW EnumSystemCodePages; - alias EnumSystemLocalesW EnumSystemLocales; - alias EnumTimeFormatsW EnumTimeFormats; - alias FoldStringW FoldString; - alias GetCalendarInfoW GetCalendarInfo; - alias GetCPInfoExW GetCPInfoEx; - alias GetCurrencyFormatW GetCurrencyFormat; - alias GetDateFormatW GetDateFormat; - alias GetGeoInfoW GetGeoInfo; - alias GetLocaleInfoW GetLocaleInfo; - alias GetNumberFormatW GetNumberFormat; - alias GetStringTypeExW GetStringTypeEx; - alias GetTimeFormatW GetTimeFormat; - alias LCMapStringW LCMapString; - alias SetCalendarInfoW SetCalendarInfo; - alias SetLocaleInfoW SetLocaleInfo; - - static if (_WIN32_WINNT >= 0x410) { - alias EnumCalendarInfoExW EnumCalendarInfoEx; - alias EnumDateFormatsExW EnumDateFormatsEx; - } - - static if (_WIN32_WINNT >= 0x500) { - alias EnumSystemLanguageGroupsW EnumSystemLanguageGroups; - alias EnumLanguageGroupLocalesW EnumLanguageGroupLocales; - alias EnumUILanguagesW EnumUILanguages; - } + alias CALINFO_ENUMPROCW CALINFO_ENUMPROC; + alias CALINFO_ENUMPROCEXW CALINFO_ENUMPROCEX; + alias LOCALE_ENUMPROCW LOCALE_ENUMPROC; + alias CODEPAGE_ENUMPROCW CODEPAGE_ENUMPROC; + alias DATEFMT_ENUMPROCW DATEFMT_ENUMPROC; + alias DATEFMT_ENUMPROCEXW DATEFMT_ENUMPROCEX; + alias TIMEFMT_ENUMPROCW TIMEFMT_ENUMPROC; + alias LANGUAGEGROUP_ENUMPROCW LANGUAGEGROUP_ENUMPROC; + alias LANGGROUPLOCALE_ENUMPROCW LANGGROUPLOCALE_ENUMPROC; + alias UILANGUAGE_ENUMPROCW UILANGUAGE_ENUMPROC; + alias CPINFOEXW CPINFOEX; + alias LPCPINFOEXW LPCPINFOEX; + alias CURRENCYFMTW CURRENCYFMT; + alias LPCURRENCYFMTW LPCURRENCYFMT; + alias NUMBERFMTW NUMBERFMT; + alias LPNUMBERFMTW LPNUMBERFMT; + alias CompareStringW CompareString; + alias EnumCalendarInfoW EnumCalendarInfo; + alias EnumSystemCodePagesW EnumSystemCodePages; + alias EnumSystemLocalesW EnumSystemLocales; + alias EnumTimeFormatsW EnumTimeFormats; + alias FoldStringW FoldString; + alias GetCalendarInfoW GetCalendarInfo; + alias GetCPInfoExW GetCPInfoEx; + alias GetCurrencyFormatW GetCurrencyFormat; + alias GetDateFormatW GetDateFormat; + alias GetGeoInfoW GetGeoInfo; + alias GetLocaleInfoW GetLocaleInfo; + alias GetNumberFormatW GetNumberFormat; + alias GetStringTypeExW GetStringTypeEx; + alias GetTimeFormatW GetTimeFormat; + alias LCMapStringW LCMapString; + alias SetCalendarInfoW SetCalendarInfo; + alias SetLocaleInfoW SetLocaleInfo; + + static if (_WIN32_WINNT >= 0x410) { + alias EnumCalendarInfoExW EnumCalendarInfoEx; + alias EnumDateFormatsExW EnumDateFormatsEx; + } + + static if (_WIN32_WINNT >= 0x500) { + alias EnumSystemLanguageGroupsW EnumSystemLanguageGroups; + alias EnumLanguageGroupLocalesW EnumLanguageGroupLocales; + alias EnumUILanguagesW EnumUILanguages; + } } else { - alias CALINFO_ENUMPROCA CALINFO_ENUMPROC; - alias CALINFO_ENUMPROCEXA CALINFO_ENUMPROCEX; - alias LOCALE_ENUMPROCA LOCALE_ENUMPROC; - alias CODEPAGE_ENUMPROCA CODEPAGE_ENUMPROC; - alias DATEFMT_ENUMPROCA DATEFMT_ENUMPROC; - alias DATEFMT_ENUMPROCEXA DATEFMT_ENUMPROCEX; - alias TIMEFMT_ENUMPROCA TIMEFMT_ENUMPROC; - alias LANGUAGEGROUP_ENUMPROCA LANGUAGEGROUP_ENUMPROC; - alias LANGGROUPLOCALE_ENUMPROCA LANGGROUPLOCALE_ENUMPROC; - alias UILANGUAGE_ENUMPROCA UILANGUAGE_ENUMPROC; - alias CPINFOEXA CPINFOEX; - alias LPCPINFOEXA LPCPINFOEX; - alias CURRENCYFMTA CURRENCYFMT; - alias LPCURRENCYFMTA LPCURRENCYFMT; - alias NUMBERFMTA NUMBERFMT; - alias LPNUMBERFMTA LPNUMBERFMT; - alias CompareStringA CompareString; - alias EnumCalendarInfoA EnumCalendarInfo; - alias EnumSystemCodePagesA EnumSystemCodePages; - alias EnumSystemLocalesA EnumSystemLocales; - alias EnumTimeFormatsA EnumTimeFormats; - alias FoldStringA FoldString; - alias GetCalendarInfoA GetCalendarInfo; - alias GetCPInfoExA GetCPInfoEx; - alias GetCurrencyFormatA GetCurrencyFormat; - alias GetDateFormatA GetDateFormat; - alias GetGeoInfoA GetGeoInfo; - alias GetLocaleInfoA GetLocaleInfo; - alias GetNumberFormatA GetNumberFormat; - alias GetStringTypeExA GetStringTypeEx; - alias GetTimeFormatA GetTimeFormat; - alias LCMapStringA LCMapString; - alias SetCalendarInfoA SetCalendarInfo; - alias SetLocaleInfoA SetLocaleInfo; - - static if (_WIN32_WINNT >= 0x410) { - alias EnumCalendarInfoExA EnumCalendarInfoEx; - alias EnumDateFormatsExA EnumDateFormatsEx; - } - - static if (_WIN32_WINNT >= 0x500) { - alias EnumSystemLanguageGroupsA EnumSystemLanguageGroups; - alias EnumLanguageGroupLocalesA EnumLanguageGroupLocales; - alias EnumUILanguagesA EnumUILanguages; - } + alias CALINFO_ENUMPROCA CALINFO_ENUMPROC; + alias CALINFO_ENUMPROCEXA CALINFO_ENUMPROCEX; + alias LOCALE_ENUMPROCA LOCALE_ENUMPROC; + alias CODEPAGE_ENUMPROCA CODEPAGE_ENUMPROC; + alias DATEFMT_ENUMPROCA DATEFMT_ENUMPROC; + alias DATEFMT_ENUMPROCEXA DATEFMT_ENUMPROCEX; + alias TIMEFMT_ENUMPROCA TIMEFMT_ENUMPROC; + alias LANGUAGEGROUP_ENUMPROCA LANGUAGEGROUP_ENUMPROC; + alias LANGGROUPLOCALE_ENUMPROCA LANGGROUPLOCALE_ENUMPROC; + alias UILANGUAGE_ENUMPROCA UILANGUAGE_ENUMPROC; + alias CPINFOEXA CPINFOEX; + alias LPCPINFOEXA LPCPINFOEX; + alias CURRENCYFMTA CURRENCYFMT; + alias LPCURRENCYFMTA LPCURRENCYFMT; + alias NUMBERFMTA NUMBERFMT; + alias LPNUMBERFMTA LPNUMBERFMT; + alias CompareStringA CompareString; + alias EnumCalendarInfoA EnumCalendarInfo; + alias EnumSystemCodePagesA EnumSystemCodePages; + alias EnumSystemLocalesA EnumSystemLocales; + alias EnumTimeFormatsA EnumTimeFormats; + alias FoldStringA FoldString; + alias GetCalendarInfoA GetCalendarInfo; + alias GetCPInfoExA GetCPInfoEx; + alias GetCurrencyFormatA GetCurrencyFormat; + alias GetDateFormatA GetDateFormat; + alias GetGeoInfoA GetGeoInfo; + alias GetLocaleInfoA GetLocaleInfo; + alias GetNumberFormatA GetNumberFormat; + alias GetStringTypeExA GetStringTypeEx; + alias GetTimeFormatA GetTimeFormat; + alias LCMapStringA LCMapString; + alias SetCalendarInfoA SetCalendarInfo; + alias SetLocaleInfoA SetLocaleInfo; + + static if (_WIN32_WINNT >= 0x410) { + alias EnumCalendarInfoExA EnumCalendarInfoEx; + alias EnumDateFormatsExA EnumDateFormatsEx; + } + + static if (_WIN32_WINNT >= 0x500) { + alias EnumSystemLanguageGroupsA EnumSystemLanguageGroups; + alias EnumLanguageGroupLocalesA EnumLanguageGroupLocales; + alias EnumUILanguagesA EnumUILanguages; + } } diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index f2a56c41c6..2131987d44 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -47,9 +47,9 @@ alias const(char)* LPCCH, PCSTR, LPCSTR; alias const(wchar)* LPCWCH, PCWCH, LPCWSTR, PCWSTR; version (Unicode) { - alias WCHAR TCHAR, _TCHAR; + alias WCHAR TCHAR, _TCHAR; } else { - alias CHAR TCHAR, _TCHAR; + alias CHAR TCHAR, _TCHAR; } alias TCHAR TBYTE; @@ -67,104 +67,104 @@ const ERROR_SEVERITY_ERROR = 0xC0000000; // MinGW: also in ddk/ntifs.h enum : USHORT { - COMPRESSION_FORMAT_NONE = 0x0000, - COMPRESSION_FORMAT_DEFAULT = 0x0001, - COMPRESSION_FORMAT_LZNT1 = 0x0002, - COMPRESSION_ENGINE_STANDARD = 0x0000, - COMPRESSION_ENGINE_MAXIMUM = 0x0100, - COMPRESSION_ENGINE_HIBER = 0x0200 + COMPRESSION_FORMAT_NONE = 0x0000, + COMPRESSION_FORMAT_DEFAULT = 0x0001, + COMPRESSION_FORMAT_LZNT1 = 0x0002, + COMPRESSION_ENGINE_STANDARD = 0x0000, + COMPRESSION_ENGINE_MAXIMUM = 0x0100, + COMPRESSION_ENGINE_HIBER = 0x0200 } // ACCESS_DENIED_OBJECT_ACE, etc const DWORD - ACE_OBJECT_TYPE_PRESENT = 0x00000001, - ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002; + ACE_OBJECT_TYPE_PRESENT = 0x00000001, + ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002; // ACE_HEADER.AceType // also in ddk/ntifs.h enum : BYTE { - ACCESS_ALLOWED_ACE_TYPE, - ACCESS_DENIED_ACE_TYPE, - SYSTEM_AUDIT_ACE_TYPE, - SYSTEM_ALARM_ACE_TYPE + ACCESS_ALLOWED_ACE_TYPE, + ACCESS_DENIED_ACE_TYPE, + SYSTEM_AUDIT_ACE_TYPE, + SYSTEM_ALARM_ACE_TYPE } // ACE_HEADER.AceFlags const BYTE - OBJECT_INHERIT_ACE = 0x01, - CONTAINER_INHERIT_ACE = 0x02, - NO_PROPAGATE_INHERIT_ACE = 0x04, - INHERIT_ONLY_ACE = 0x08, - INHERITED_ACE = 0x10, - VALID_INHERIT_FLAGS = 0x1F, - SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, - FAILED_ACCESS_ACE_FLAG = 0x80; + OBJECT_INHERIT_ACE = 0x01, + CONTAINER_INHERIT_ACE = 0x02, + NO_PROPAGATE_INHERIT_ACE = 0x04, + INHERIT_ONLY_ACE = 0x08, + INHERITED_ACE = 0x10, + VALID_INHERIT_FLAGS = 0x1F, + SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, + FAILED_ACCESS_ACE_FLAG = 0x80; // Access Mask Format const ACCESS_MASK - DELETE = 0x00010000, - READ_CONTROL = 0x00020000, - WRITE_DAC = 0x00040000, - WRITE_OWNER = 0x00080000, - SYNCHRONIZE = 0x00100000, - ACCESS_SYSTEM_SECURITY = 0x01000000, - MAXIMUM_ALLOWED = 0x02000000, - GENERIC_READ = 0x80000000, - GENERIC_WRITE = 0x40000000, - GENERIC_EXECUTE = 0x20000000, - GENERIC_ALL = 0x10000000, - STANDARD_RIGHTS_REQUIRED = 0x000F0000, - STANDARD_RIGHTS_READ = 0x00020000, - STANDARD_RIGHTS_WRITE = 0x00020000, - STANDARD_RIGHTS_EXECUTE = 0x00020000, - STANDARD_RIGHTS_ALL = 0x001F0000, - SPECIFIC_RIGHTS_ALL = 0x0000FFFF; + DELETE = 0x00010000, + READ_CONTROL = 0x00020000, + WRITE_DAC = 0x00040000, + WRITE_OWNER = 0x00080000, + SYNCHRONIZE = 0x00100000, + ACCESS_SYSTEM_SECURITY = 0x01000000, + MAXIMUM_ALLOWED = 0x02000000, + GENERIC_READ = 0x80000000, + GENERIC_WRITE = 0x40000000, + GENERIC_EXECUTE = 0x20000000, + GENERIC_ALL = 0x10000000, + STANDARD_RIGHTS_REQUIRED = 0x000F0000, + STANDARD_RIGHTS_READ = 0x00020000, + STANDARD_RIGHTS_WRITE = 0x00020000, + STANDARD_RIGHTS_EXECUTE = 0x00020000, + STANDARD_RIGHTS_ALL = 0x001F0000, + SPECIFIC_RIGHTS_ALL = 0x0000FFFF; const DWORD INVALID_FILE_ATTRIBUTES = -1; // MinGW: Also in ddk/winddk.h const DWORD - FILE_LIST_DIRECTORY = 0x00000001, - FILE_READ_DATA = 0x00000001, - FILE_ADD_FILE = 0x00000002, - FILE_WRITE_DATA = 0x00000002, - FILE_ADD_SUBDIRECTORY = 0x00000004, - FILE_APPEND_DATA = 0x00000004, - FILE_CREATE_PIPE_INSTANCE = 0x00000004, - FILE_READ_EA = 0x00000008, - FILE_READ_PROPERTIES = 0x00000008, - FILE_WRITE_EA = 0x00000010, - FILE_WRITE_PROPERTIES = 0x00000010, - FILE_EXECUTE = 0x00000020, - FILE_TRAVERSE = 0x00000020, - FILE_DELETE_CHILD = 0x00000040, - FILE_READ_ATTRIBUTES = 0x00000080, - FILE_WRITE_ATTRIBUTES = 0x00000100; + FILE_LIST_DIRECTORY = 0x00000001, + FILE_READ_DATA = 0x00000001, + FILE_ADD_FILE = 0x00000002, + FILE_WRITE_DATA = 0x00000002, + FILE_ADD_SUBDIRECTORY = 0x00000004, + FILE_APPEND_DATA = 0x00000004, + FILE_CREATE_PIPE_INSTANCE = 0x00000004, + FILE_READ_EA = 0x00000008, + FILE_READ_PROPERTIES = 0x00000008, + FILE_WRITE_EA = 0x00000010, + FILE_WRITE_PROPERTIES = 0x00000010, + FILE_EXECUTE = 0x00000020, + FILE_TRAVERSE = 0x00000020, + FILE_DELETE_CHILD = 0x00000040, + FILE_READ_ATTRIBUTES = 0x00000080, + FILE_WRITE_ATTRIBUTES = 0x00000100; const DWORD - FILE_SHARE_READ = 0x00000001, - FILE_SHARE_WRITE = 0x00000002, - FILE_SHARE_DELETE = 0x00000004, - FILE_SHARE_VALID_FLAGS = 0x00000007; + FILE_SHARE_READ = 0x00000001, + FILE_SHARE_WRITE = 0x00000002, + FILE_SHARE_DELETE = 0x00000004, + FILE_SHARE_VALID_FLAGS = 0x00000007; const DWORD - FILE_ATTRIBUTE_READONLY = 0x00000001, - FILE_ATTRIBUTE_HIDDEN = 0x00000002, - FILE_ATTRIBUTE_SYSTEM = 0x00000004, - FILE_ATTRIBUTE_DIRECTORY = 0x00000010, - FILE_ATTRIBUTE_ARCHIVE = 0x00000020, - FILE_ATTRIBUTE_DEVICE = 0x00000040, - FILE_ATTRIBUTE_NORMAL = 0x00000080, - FILE_ATTRIBUTE_TEMPORARY = 0x00000100, - FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200, - FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400, - FILE_ATTRIBUTE_COMPRESSED = 0x00000800, - FILE_ATTRIBUTE_OFFLINE = 0x00001000, - FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000, - FILE_ATTRIBUTE_ENCRYPTED = 0x00004000, - FILE_ATTRIBUTE_VALID_FLAGS = 0x00007fb7, - FILE_ATTRIBUTE_VALID_SET_FLAGS = 0x000031a7; + FILE_ATTRIBUTE_READONLY = 0x00000001, + FILE_ATTRIBUTE_HIDDEN = 0x00000002, + FILE_ATTRIBUTE_SYSTEM = 0x00000004, + FILE_ATTRIBUTE_DIRECTORY = 0x00000010, + FILE_ATTRIBUTE_ARCHIVE = 0x00000020, + FILE_ATTRIBUTE_DEVICE = 0x00000040, + FILE_ATTRIBUTE_NORMAL = 0x00000080, + FILE_ATTRIBUTE_TEMPORARY = 0x00000100, + FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200, + FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400, + FILE_ATTRIBUTE_COMPRESSED = 0x00000800, + FILE_ATTRIBUTE_OFFLINE = 0x00001000, + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000, + FILE_ATTRIBUTE_ENCRYPTED = 0x00004000, + FILE_ATTRIBUTE_VALID_FLAGS = 0x00007fb7, + FILE_ATTRIBUTE_VALID_SET_FLAGS = 0x000031a7; // These are not documented on MSDN const FILE_COPY_STRUCTURED_STORAGE = 0x00000041; @@ -177,127 +177,127 @@ const FILE_VALID_MAILSLOT_OPTION_FLAGS = 0x00000032; const FILE_VALID_SET_FLAGS = 0x00000036; const ULONG - FILE_SUPERSEDE = 0x00000000, - FILE_OPEN = 0x00000001, - FILE_CREATE = 0x00000002, - FILE_OPEN_IF = 0x00000003, - FILE_OVERWRITE = 0x00000004, - FILE_OVERWRITE_IF = 0x00000005, - FILE_MAXIMUM_DISPOSITION = 0x00000005; + FILE_SUPERSEDE = 0x00000000, + FILE_OPEN = 0x00000001, + FILE_CREATE = 0x00000002, + FILE_OPEN_IF = 0x00000003, + FILE_OVERWRITE = 0x00000004, + FILE_OVERWRITE_IF = 0x00000005, + FILE_MAXIMUM_DISPOSITION = 0x00000005; const ULONG - FILE_DIRECTORY_FILE = 0x00000001, - FILE_WRITE_THROUGH = 0x00000002, - FILE_SEQUENTIAL_ONLY = 0x00000004, - FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008, - FILE_SYNCHRONOUS_IO_ALERT = 0x00000010, - FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020, - FILE_NON_DIRECTORY_FILE = 0x00000040, - FILE_CREATE_TREE_CONNECTION = 0x00000080, - FILE_COMPLETE_IF_OPLOCKED = 0x00000100, - FILE_NO_EA_KNOWLEDGE = 0x00000200, - FILE_OPEN_FOR_RECOVERY = 0x00000400, - FILE_RANDOM_ACCESS = 0x00000800, - FILE_DELETE_ON_CLOSE = 0x00001000, - FILE_OPEN_BY_FILE_ID = 0x00002000, - FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000, - FILE_NO_COMPRESSION = 0x00008000, - FILE_RESERVE_OPFILTER = 0x00100000, - FILE_OPEN_REPARSE_POINT = 0x00200000, - FILE_OPEN_NO_RECALL = 0x00400000, - FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000; + FILE_DIRECTORY_FILE = 0x00000001, + FILE_WRITE_THROUGH = 0x00000002, + FILE_SEQUENTIAL_ONLY = 0x00000004, + FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008, + FILE_SYNCHRONOUS_IO_ALERT = 0x00000010, + FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020, + FILE_NON_DIRECTORY_FILE = 0x00000040, + FILE_CREATE_TREE_CONNECTION = 0x00000080, + FILE_COMPLETE_IF_OPLOCKED = 0x00000100, + FILE_NO_EA_KNOWLEDGE = 0x00000200, + FILE_OPEN_FOR_RECOVERY = 0x00000400, + FILE_RANDOM_ACCESS = 0x00000800, + FILE_DELETE_ON_CLOSE = 0x00001000, + FILE_OPEN_BY_FILE_ID = 0x00002000, + FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000, + FILE_NO_COMPRESSION = 0x00008000, + FILE_RESERVE_OPFILTER = 0x00100000, + FILE_OPEN_REPARSE_POINT = 0x00200000, + FILE_OPEN_NO_RECALL = 0x00400000, + FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000; const ACCESS_MASK - FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x01FF, - FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES - | FILE_EXECUTE | SYNCHRONIZE, - FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA - | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE, - FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA - | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA - | SYNCHRONIZE; + FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x01FF, + FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES + | FILE_EXECUTE | SYNCHRONIZE, + FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA + | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE, + FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA + | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA + | SYNCHRONIZE; // MinGW: end winddk.h // MinGW: also in ddk/ntifs.h const DWORD - FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, - FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, - FILE_NOTIFY_CHANGE_NAME = 0x00000003, - FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004, - FILE_NOTIFY_CHANGE_SIZE = 0x00000008, - FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010, - FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020, - FILE_NOTIFY_CHANGE_CREATION = 0x00000040, - FILE_NOTIFY_CHANGE_EA = 0x00000080, - FILE_NOTIFY_CHANGE_SECURITY = 0x00000100, - FILE_NOTIFY_CHANGE_STREAM_NAME = 0x00000200, - FILE_NOTIFY_CHANGE_STREAM_SIZE = 0x00000400, - FILE_NOTIFY_CHANGE_STREAM_WRITE = 0x00000800, - FILE_NOTIFY_VALID_MASK = 0x00000fff; + FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, + FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, + FILE_NOTIFY_CHANGE_NAME = 0x00000003, + FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004, + FILE_NOTIFY_CHANGE_SIZE = 0x00000008, + FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010, + FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020, + FILE_NOTIFY_CHANGE_CREATION = 0x00000040, + FILE_NOTIFY_CHANGE_EA = 0x00000080, + FILE_NOTIFY_CHANGE_SECURITY = 0x00000100, + FILE_NOTIFY_CHANGE_STREAM_NAME = 0x00000200, + FILE_NOTIFY_CHANGE_STREAM_SIZE = 0x00000400, + FILE_NOTIFY_CHANGE_STREAM_WRITE = 0x00000800, + FILE_NOTIFY_VALID_MASK = 0x00000fff; const DWORD - FILE_CASE_SENSITIVE_SEARCH = 0x00000001, - FILE_CASE_PRESERVED_NAMES = 0x00000002, - FILE_UNICODE_ON_DISK = 0x00000004, - FILE_PERSISTENT_ACLS = 0x00000008, - FILE_FILE_COMPRESSION = 0x00000010, - FILE_VOLUME_QUOTAS = 0x00000020, - FILE_SUPPORTS_SPARSE_FILES = 0x00000040, - FILE_SUPPORTS_REPARSE_POINTS = 0x00000080, - FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100, - FS_LFN_APIS = 0x00004000, - FILE_VOLUME_IS_COMPRESSED = 0x00008000, - FILE_SUPPORTS_OBJECT_IDS = 0x00010000, - FILE_SUPPORTS_ENCRYPTION = 0x00020000, - FILE_NAMED_STREAMS = 0x00040000, - FILE_READ_ONLY_VOLUME = 0x00080000, - FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000, - FILE_SUPPORTS_TRANSACTIONS = 0x00200000; + FILE_CASE_SENSITIVE_SEARCH = 0x00000001, + FILE_CASE_PRESERVED_NAMES = 0x00000002, + FILE_UNICODE_ON_DISK = 0x00000004, + FILE_PERSISTENT_ACLS = 0x00000008, + FILE_FILE_COMPRESSION = 0x00000010, + FILE_VOLUME_QUOTAS = 0x00000020, + FILE_SUPPORTS_SPARSE_FILES = 0x00000040, + FILE_SUPPORTS_REPARSE_POINTS = 0x00000080, + FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100, + FS_LFN_APIS = 0x00004000, + FILE_VOLUME_IS_COMPRESSED = 0x00008000, + FILE_SUPPORTS_OBJECT_IDS = 0x00010000, + FILE_SUPPORTS_ENCRYPTION = 0x00020000, + FILE_NAMED_STREAMS = 0x00040000, + FILE_READ_ONLY_VOLUME = 0x00080000, + FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000, + FILE_SUPPORTS_TRANSACTIONS = 0x00200000; // These are not documented on MSDN const ACCESS_MASK - IO_COMPLETION_QUERY_STATE = 1, - IO_COMPLETION_MODIFY_STATE = 2, - IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 3; + IO_COMPLETION_QUERY_STATE = 1, + IO_COMPLETION_MODIFY_STATE = 2, + IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 3; // MinGW: end ntifs.h // MinGW: also in ddk/winddk.h const DWORD - DUPLICATE_CLOSE_SOURCE = 1, - DUPLICATE_SAME_ACCESS = 2, - DUPLICATE_SAME_ATTRIBUTES = 4; + DUPLICATE_CLOSE_SOURCE = 1, + DUPLICATE_SAME_ACCESS = 2, + DUPLICATE_SAME_ATTRIBUTES = 4; // MinGW: end winddk.k const DWORD - MAILSLOT_NO_MESSAGE = -1, - MAILSLOT_WAIT_FOREVER = -1; + MAILSLOT_NO_MESSAGE = -1, + MAILSLOT_WAIT_FOREVER = -1; const ACCESS_MASK - PROCESS_TERMINATE = 0x0001, - PROCESS_CREATE_THREAD = 0x0002, - PROCESS_SET_SESSIONID = 0x0004, - PROCESS_VM_OPERATION = 0x0008, - PROCESS_VM_READ = 0x0010, - PROCESS_VM_WRITE = 0x0020, - PROCESS_DUP_HANDLE = 0x0040, - PROCESS_CREATE_PROCESS = 0x0080, - PROCESS_SET_QUOTA = 0x0100, - PROCESS_SET_INFORMATION = 0x0200, - PROCESS_QUERY_INFORMATION = 0x0400, - PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0FFF; + PROCESS_TERMINATE = 0x0001, + PROCESS_CREATE_THREAD = 0x0002, + PROCESS_SET_SESSIONID = 0x0004, + PROCESS_VM_OPERATION = 0x0008, + PROCESS_VM_READ = 0x0010, + PROCESS_VM_WRITE = 0x0020, + PROCESS_DUP_HANDLE = 0x0040, + PROCESS_CREATE_PROCESS = 0x0080, + PROCESS_SET_QUOTA = 0x0100, + PROCESS_SET_INFORMATION = 0x0200, + PROCESS_QUERY_INFORMATION = 0x0400, + PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0FFF; const ACCESS_MASK - THREAD_TERMINATE = 0x0001, - THREAD_SUSPEND_RESUME = 0x0002, - THREAD_GET_CONTEXT = 0x0008, - THREAD_SET_CONTEXT = 0x0010, - THREAD_SET_INFORMATION = 0x0020, - THREAD_QUERY_INFORMATION = 0x0040, - THREAD_SET_THREAD_TOKEN = 0x0080, - THREAD_IMPERSONATE = 0x0100, - THREAD_DIRECT_IMPERSONATION = 0x0200, - THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF; + THREAD_TERMINATE = 0x0001, + THREAD_SUSPEND_RESUME = 0x0002, + THREAD_GET_CONTEXT = 0x0008, + THREAD_SET_CONTEXT = 0x0010, + THREAD_SET_INFORMATION = 0x0020, + THREAD_QUERY_INFORMATION = 0x0040, + THREAD_SET_THREAD_TOKEN = 0x0080, + THREAD_IMPERSONATE = 0x0100, + THREAD_DIRECT_IMPERSONATION = 0x0200, + THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF; // These are not documented on MSDN const THREAD_BASE_PRIORITY_LOWRT = 15; @@ -310,522 +310,522 @@ const size_t EXCEPTION_MAXIMUM_PARAMETERS = 15; // These are not documented on MSDN const ACCESS_MASK - MUTANT_QUERY_STATE = 1, - MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE; + MUTANT_QUERY_STATE = 1, + MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE; const ACCESS_MASK - TIMER_QUERY_STATE = 1, - TIMER_MODIFY_STATE = 2, - TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE - | TIMER_MODIFY_STATE; + TIMER_QUERY_STATE = 1, + TIMER_MODIFY_STATE = 2, + TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE + | TIMER_MODIFY_STATE; const SID_IDENTIFIER_AUTHORITY - SECURITY_NULL_SID_AUTHORITY = {[5: 0]}, - SECURITY_WORLD_SID_AUTHORITY = {[5: 1]}, - SECURITY_LOCAL_SID_AUTHORITY = {[5: 2]}, - SECURITY_CREATOR_SID_AUTHORITY = {[5: 3]}, - SECURITY_NON_UNIQUE_AUTHORITY = {[5: 4]}, - SECURITY_NT_AUTHORITY = {[5: 5]}, - SECURITY_MANDATORY_LABEL_AUTHORITY = {[5: 6]}; + SECURITY_NULL_SID_AUTHORITY = {[5: 0]}, + SECURITY_WORLD_SID_AUTHORITY = {[5: 1]}, + SECURITY_LOCAL_SID_AUTHORITY = {[5: 2]}, + SECURITY_CREATOR_SID_AUTHORITY = {[5: 3]}, + SECURITY_NON_UNIQUE_AUTHORITY = {[5: 4]}, + SECURITY_NT_AUTHORITY = {[5: 5]}, + SECURITY_MANDATORY_LABEL_AUTHORITY = {[5: 6]}; const DWORD - SECURITY_NULL_RID = 0, - SECURITY_WORLD_RID = 0, - SECURITY_LOCAL_RID = 0, - SECURITY_CREATOR_OWNER_RID = 0, - SECURITY_CREATOR_GROUP_RID = 1, - SECURITY_DIALUP_RID = 1, - SECURITY_NETWORK_RID = 2, - SECURITY_BATCH_RID = 3, - SECURITY_INTERACTIVE_RID = 4, - SECURITY_LOGON_IDS_RID = 5, - SECURITY_SERVICE_RID = 6, - SECURITY_LOCAL_SYSTEM_RID = 18, - SECURITY_BUILTIN_DOMAIN_RID = 32, - SECURITY_PRINCIPAL_SELF_RID = 10, - SECURITY_CREATOR_OWNER_SERVER_RID = 2, - SECURITY_CREATOR_GROUP_SERVER_RID = 3, - SECURITY_LOGON_IDS_RID_COUNT = 3, - SECURITY_ANONYMOUS_LOGON_RID = 7, - SECURITY_PROXY_RID = 8, - SECURITY_ENTERPRISE_CONTROLLERS_RID = 9, - SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID, - SECURITY_AUTHENTICATED_USER_RID = 11, - SECURITY_RESTRICTED_CODE_RID = 12, - SECURITY_NT_NON_UNIQUE_RID = 21, - SID_REVISION = 1; + SECURITY_NULL_RID = 0, + SECURITY_WORLD_RID = 0, + SECURITY_LOCAL_RID = 0, + SECURITY_CREATOR_OWNER_RID = 0, + SECURITY_CREATOR_GROUP_RID = 1, + SECURITY_DIALUP_RID = 1, + SECURITY_NETWORK_RID = 2, + SECURITY_BATCH_RID = 3, + SECURITY_INTERACTIVE_RID = 4, + SECURITY_LOGON_IDS_RID = 5, + SECURITY_SERVICE_RID = 6, + SECURITY_LOCAL_SYSTEM_RID = 18, + SECURITY_BUILTIN_DOMAIN_RID = 32, + SECURITY_PRINCIPAL_SELF_RID = 10, + SECURITY_CREATOR_OWNER_SERVER_RID = 2, + SECURITY_CREATOR_GROUP_SERVER_RID = 3, + SECURITY_LOGON_IDS_RID_COUNT = 3, + SECURITY_ANONYMOUS_LOGON_RID = 7, + SECURITY_PROXY_RID = 8, + SECURITY_ENTERPRISE_CONTROLLERS_RID = 9, + SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID, + SECURITY_AUTHENTICATED_USER_RID = 11, + SECURITY_RESTRICTED_CODE_RID = 12, + SECURITY_NT_NON_UNIQUE_RID = 21, + SID_REVISION = 1; enum : DWORD { - DOMAIN_USER_RID_ADMIN = 0x01F4, - DOMAIN_USER_RID_GUEST = 0x01F5, - DOMAIN_GROUP_RID_ADMINS = 0x0200, - DOMAIN_GROUP_RID_USERS = 0x0201, - DOMAIN_ALIAS_RID_ADMINS = 0x0220, - DOMAIN_ALIAS_RID_USERS = 0x0221, - DOMAIN_ALIAS_RID_GUESTS = 0x0222, - DOMAIN_ALIAS_RID_POWER_USERS = 0x0223, - DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x0224, - DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x0225, - DOMAIN_ALIAS_RID_PRINT_OPS = 0x0226, - DOMAIN_ALIAS_RID_BACKUP_OPS = 0x0227, - DOMAIN_ALIAS_RID_REPLICATOR = 0x0228 + DOMAIN_USER_RID_ADMIN = 0x01F4, + DOMAIN_USER_RID_GUEST = 0x01F5, + DOMAIN_GROUP_RID_ADMINS = 0x0200, + DOMAIN_GROUP_RID_USERS = 0x0201, + DOMAIN_ALIAS_RID_ADMINS = 0x0220, + DOMAIN_ALIAS_RID_USERS = 0x0221, + DOMAIN_ALIAS_RID_GUESTS = 0x0222, + DOMAIN_ALIAS_RID_POWER_USERS = 0x0223, + DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x0224, + DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x0225, + DOMAIN_ALIAS_RID_PRINT_OPS = 0x0226, + DOMAIN_ALIAS_RID_BACKUP_OPS = 0x0227, + DOMAIN_ALIAS_RID_REPLICATOR = 0x0228 } enum : WORD { - SECURITY_MANDATORY_UNTRUSTED_RID = 0, - SECURITY_MANDATORY_LOW_RID = 0x1000, - SECURITY_MANDATORY_MEDIUM_RID = 0x2000, - SECURITY_MANDATORY_HIGH_RID = 0x3000, - SECURITY_MANDATORY_SYSTEM_RID = 0x4000, - SECURITY_MANDATORY_PROTECTED_PROCESS_RID = 0x5000, - SECURITY_MANDATORY_MAXIMUM_USER_RID = SECURITY_MANDATORY_SYSTEM_RID + SECURITY_MANDATORY_UNTRUSTED_RID = 0, + SECURITY_MANDATORY_LOW_RID = 0x1000, + SECURITY_MANDATORY_MEDIUM_RID = 0x2000, + SECURITY_MANDATORY_HIGH_RID = 0x3000, + SECURITY_MANDATORY_SYSTEM_RID = 0x4000, + SECURITY_MANDATORY_PROTECTED_PROCESS_RID = 0x5000, + SECURITY_MANDATORY_MAXIMUM_USER_RID = SECURITY_MANDATORY_SYSTEM_RID } const TCHAR[] - SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege", - SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege", - SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege", - SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege", - SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege", - SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege", - SE_TCB_NAME = "SeTcbPrivilege", - SE_SECURITY_NAME = "SeSecurityPrivilege", - SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege", - SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege", - SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege", - SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege", - SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege", - SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege", - SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege", - SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege", - SE_BACKUP_NAME = "SeBackupPrivilege", - SE_RESTORE_NAME = "SeRestorePrivilege", - SE_SHUTDOWN_NAME = "SeShutdownPrivilege", - SE_DEBUG_NAME = "SeDebugPrivilege", - SE_AUDIT_NAME = "SeAuditPrivilege", - SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege", - SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege", - SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege", - SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege", - SE_UNDOCK_NAME = "SeUndockPrivilege", - SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege", - SE_IMPERSONATE_NAME = "SeImpersonatePrivilege", - SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege", - SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege", - SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege", - SE_RELABEL_NAME = "SeRelabelPrivilege", - SE_INCREASE_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege", - SE_TIME_ZONE_NAME = "SeTimeZonePrivilege", - SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"; + SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege", + SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege", + SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege", + SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege", + SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege", + SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege", + SE_TCB_NAME = "SeTcbPrivilege", + SE_SECURITY_NAME = "SeSecurityPrivilege", + SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege", + SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege", + SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege", + SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege", + SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege", + SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege", + SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege", + SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege", + SE_BACKUP_NAME = "SeBackupPrivilege", + SE_RESTORE_NAME = "SeRestorePrivilege", + SE_SHUTDOWN_NAME = "SeShutdownPrivilege", + SE_DEBUG_NAME = "SeDebugPrivilege", + SE_AUDIT_NAME = "SeAuditPrivilege", + SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege", + SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege", + SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege", + SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege", + SE_UNDOCK_NAME = "SeUndockPrivilege", + SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege", + SE_IMPERSONATE_NAME = "SeImpersonatePrivilege", + SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege", + SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege", + SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege", + SE_RELABEL_NAME = "SeRelabelPrivilege", + SE_INCREASE_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege", + SE_TIME_ZONE_NAME = "SeTimeZonePrivilege", + SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"; const DWORD - SE_GROUP_MANDATORY = 0x00000001, - SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002, - SE_GROUP_ENABLED = 0x00000004, - SE_GROUP_OWNER = 0x00000008, - SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010, - SE_GROUP_INTEGRITY = 0x00000020, - SE_GROUP_INTEGRITY_ENABLED = 0x00000040, - SE_GROUP_RESOURCE = 0x20000000, - SE_GROUP_LOGON_ID = 0xC0000000; + SE_GROUP_MANDATORY = 0x00000001, + SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002, + SE_GROUP_ENABLED = 0x00000004, + SE_GROUP_OWNER = 0x00000008, + SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010, + SE_GROUP_INTEGRITY = 0x00000020, + SE_GROUP_INTEGRITY_ENABLED = 0x00000040, + SE_GROUP_RESOURCE = 0x20000000, + SE_GROUP_LOGON_ID = 0xC0000000; // Primary language identifiers enum : USHORT { - LANG_NEUTRAL, - LANG_ARABIC, - LANG_BULGARIAN, - LANG_CATALAN, - LANG_CHINESE, - LANG_CZECH, - LANG_DANISH, - LANG_GERMAN, - LANG_GREEK, - LANG_ENGLISH, - LANG_SPANISH, - LANG_FINNISH, - LANG_FRENCH, - LANG_HEBREW, - LANG_HUNGARIAN, - LANG_ICELANDIC, - LANG_ITALIAN, - LANG_JAPANESE, - LANG_KOREAN, - LANG_DUTCH, - LANG_NORWEGIAN, - LANG_POLISH, - LANG_PORTUGUESE, // = 0x16 - LANG_ROMANIAN = 0x18, - LANG_RUSSIAN, - LANG_CROATIAN, // = 0x1A - LANG_SERBIAN = 0x1A, - LANG_BOSNIAN = 0x1A, - LANG_SLOVAK, - LANG_ALBANIAN, - LANG_SWEDISH, - LANG_THAI, - LANG_TURKISH, - LANG_URDU, - LANG_INDONESIAN, - LANG_UKRAINIAN, - LANG_BELARUSIAN, - LANG_SLOVENIAN, - LANG_ESTONIAN, - LANG_LATVIAN, - LANG_LITHUANIAN, // = 0x27 - LANG_FARSI = 0x29, - LANG_PERSIAN = 0x29, - LANG_VIETNAMESE, - LANG_ARMENIAN, - LANG_AZERI, - LANG_BASQUE, - LANG_LOWER_SORBIAN, // = 0x2E - LANG_UPPER_SORBIAN = 0x2E, - LANG_MACEDONIAN, // = 0x2F - LANG_TSWANA = 0x32, - LANG_XHOSA = 0x34, - LANG_ZULU, - LANG_AFRIKAANS, - LANG_GEORGIAN, - LANG_FAEROESE, - LANG_HINDI, - LANG_MALTESE, - LANG_SAMI, - LANG_IRISH, // = 0x3C - LANG_MALAY = 0x3E, - LANG_KAZAK, - LANG_KYRGYZ, - LANG_SWAHILI, // = 0x41 - LANG_UZBEK = 0x43, - LANG_TATAR, - LANG_BENGALI, - LANG_PUNJABI, - LANG_GUJARATI, - LANG_ORIYA, - LANG_TAMIL, - LANG_TELUGU, - LANG_KANNADA, - LANG_MALAYALAM, - LANG_ASSAMESE, - LANG_MARATHI, - LANG_SANSKRIT, - LANG_MONGOLIAN, - LANG_TIBETAN, - LANG_WELSH, - LANG_KHMER, - LANG_LAO, // = 0x54 - LANG_GALICIAN = 0x56, - LANG_KONKANI, - LANG_MANIPURI, - LANG_SINDHI, - LANG_SYRIAC, - LANG_SINHALESE, // = 0x5B - LANG_INUKTITUT = 0x5D, - LANG_AMHARIC, - LANG_TAMAZIGHT, - LANG_KASHMIRI, - LANG_NEPALI, - LANG_FRISIAN, - LANG_PASHTO, - LANG_FILIPINO, - LANG_DIVEHI, // = 0x65 - LANG_HAUSA = 0x68, - LANG_YORUBA = 0x6A, - LANG_QUECHUA, - LANG_SOTHO, - LANG_BASHKIR, - LANG_LUXEMBOURGISH, - LANG_GREENLANDIC, - LANG_IGBO, // = 0x70 - LANG_TIGRIGNA = 0x73, - LANG_YI = 0x78, - LANG_MAPUDUNGUN = 0x7A, - LANG_MOHAWK = 0x7C, - LANG_BRETON = 0x7E, - LANG_UIGHUR = 0x80, - LANG_MAORI, - LANG_OCCITAN, - LANG_CORSICAN, - LANG_ALSATIAN, - LANG_YAKUT, - LANG_KICHE, - LANG_KINYARWANDA, - LANG_WOLOF, // = 0x88 - LANG_DARI = 0x8C, - LANG_MALAGASY, // = 0x8D - - LANG_SERBIAN_NEUTRAL = 0x7C1A, - LANG_BOSNIAN_NEUTRAL = 0x781A, - - LANG_INVARIANT = 0x7F + LANG_NEUTRAL, + LANG_ARABIC, + LANG_BULGARIAN, + LANG_CATALAN, + LANG_CHINESE, + LANG_CZECH, + LANG_DANISH, + LANG_GERMAN, + LANG_GREEK, + LANG_ENGLISH, + LANG_SPANISH, + LANG_FINNISH, + LANG_FRENCH, + LANG_HEBREW, + LANG_HUNGARIAN, + LANG_ICELANDIC, + LANG_ITALIAN, + LANG_JAPANESE, + LANG_KOREAN, + LANG_DUTCH, + LANG_NORWEGIAN, + LANG_POLISH, + LANG_PORTUGUESE, // = 0x16 + LANG_ROMANIAN = 0x18, + LANG_RUSSIAN, + LANG_CROATIAN, // = 0x1A + LANG_SERBIAN = 0x1A, + LANG_BOSNIAN = 0x1A, + LANG_SLOVAK, + LANG_ALBANIAN, + LANG_SWEDISH, + LANG_THAI, + LANG_TURKISH, + LANG_URDU, + LANG_INDONESIAN, + LANG_UKRAINIAN, + LANG_BELARUSIAN, + LANG_SLOVENIAN, + LANG_ESTONIAN, + LANG_LATVIAN, + LANG_LITHUANIAN, // = 0x27 + LANG_FARSI = 0x29, + LANG_PERSIAN = 0x29, + LANG_VIETNAMESE, + LANG_ARMENIAN, + LANG_AZERI, + LANG_BASQUE, + LANG_LOWER_SORBIAN, // = 0x2E + LANG_UPPER_SORBIAN = 0x2E, + LANG_MACEDONIAN, // = 0x2F + LANG_TSWANA = 0x32, + LANG_XHOSA = 0x34, + LANG_ZULU, + LANG_AFRIKAANS, + LANG_GEORGIAN, + LANG_FAEROESE, + LANG_HINDI, + LANG_MALTESE, + LANG_SAMI, + LANG_IRISH, // = 0x3C + LANG_MALAY = 0x3E, + LANG_KAZAK, + LANG_KYRGYZ, + LANG_SWAHILI, // = 0x41 + LANG_UZBEK = 0x43, + LANG_TATAR, + LANG_BENGALI, + LANG_PUNJABI, + LANG_GUJARATI, + LANG_ORIYA, + LANG_TAMIL, + LANG_TELUGU, + LANG_KANNADA, + LANG_MALAYALAM, + LANG_ASSAMESE, + LANG_MARATHI, + LANG_SANSKRIT, + LANG_MONGOLIAN, + LANG_TIBETAN, + LANG_WELSH, + LANG_KHMER, + LANG_LAO, // = 0x54 + LANG_GALICIAN = 0x56, + LANG_KONKANI, + LANG_MANIPURI, + LANG_SINDHI, + LANG_SYRIAC, + LANG_SINHALESE, // = 0x5B + LANG_INUKTITUT = 0x5D, + LANG_AMHARIC, + LANG_TAMAZIGHT, + LANG_KASHMIRI, + LANG_NEPALI, + LANG_FRISIAN, + LANG_PASHTO, + LANG_FILIPINO, + LANG_DIVEHI, // = 0x65 + LANG_HAUSA = 0x68, + LANG_YORUBA = 0x6A, + LANG_QUECHUA, + LANG_SOTHO, + LANG_BASHKIR, + LANG_LUXEMBOURGISH, + LANG_GREENLANDIC, + LANG_IGBO, // = 0x70 + LANG_TIGRIGNA = 0x73, + LANG_YI = 0x78, + LANG_MAPUDUNGUN = 0x7A, + LANG_MOHAWK = 0x7C, + LANG_BRETON = 0x7E, + LANG_UIGHUR = 0x80, + LANG_MAORI, + LANG_OCCITAN, + LANG_CORSICAN, + LANG_ALSATIAN, + LANG_YAKUT, + LANG_KICHE, + LANG_KINYARWANDA, + LANG_WOLOF, // = 0x88 + LANG_DARI = 0x8C, + LANG_MALAGASY, // = 0x8D + + LANG_SERBIAN_NEUTRAL = 0x7C1A, + LANG_BOSNIAN_NEUTRAL = 0x781A, + + LANG_INVARIANT = 0x7F } // Sublanguage identifiers enum : USHORT { - SUBLANG_NEUTRAL, - SUBLANG_DEFAULT, - SUBLANG_SYS_DEFAULT, - SUBLANG_CUSTOM_DEFAULT, // = 3 - SUBLANG_UI_CUSTOM_DEFAULT = 3, - SUBLANG_CUSTOM_UNSPECIFIED, // = 4 - - SUBLANG_AFRIKAANS_SOUTH_AFRICA = 1, - SUBLANG_ALBANIAN_ALBANIA = 1, - SUBLANG_ALSATIAN_FRANCE = 1, - SUBLANG_AMHARIC_ETHIOPIA = 1, - - SUBLANG_ARABIC_SAUDI_ARABIA = 1, - SUBLANG_ARABIC_IRAQ, - SUBLANG_ARABIC_EGYPT, - SUBLANG_ARABIC_LIBYA, - SUBLANG_ARABIC_ALGERIA, - SUBLANG_ARABIC_MOROCCO, - SUBLANG_ARABIC_TUNISIA, - SUBLANG_ARABIC_OMAN, - SUBLANG_ARABIC_YEMEN, - SUBLANG_ARABIC_SYRIA, - SUBLANG_ARABIC_JORDAN, - SUBLANG_ARABIC_LEBANON, - SUBLANG_ARABIC_KUWAIT, - SUBLANG_ARABIC_UAE, - SUBLANG_ARABIC_BAHRAIN, - SUBLANG_ARABIC_QATAR, // = 16 - - SUBLANG_ARMENIAN_ARMENIA = 1, - SUBLANG_ASSAMESE_INDIA = 1, - - SUBLANG_AZERI_LATIN = 1, - SUBLANG_AZERI_CYRILLIC, // = 2 - - SUBLANG_BASHKIR_RUSSIA = 1, - SUBLANG_BASQUE_BASQUE = 1, - SUBLANG_BELARUSIAN_BELARUS = 1, - SUBLANG_BENGALI_INDIA = 1, - - SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN = 5, - SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 8, - - SUBLANG_BRETON_FRANCE = 1, - SUBLANG_BULGARIAN_BULGARIA = 1, - SUBLANG_CATALAN_CATALAN = 1, - - SUBLANG_CHINESE_TRADITIONAL = 1, - SUBLANG_CHINESE_SIMPLIFIED, - SUBLANG_CHINESE_HONGKONG, - SUBLANG_CHINESE_SINGAPORE, - SUBLANG_CHINESE_MACAU, // = 5 - - SUBLANG_CORSICAN_FRANCE = 1, - - SUBLANG_CROATIAN_CROATIA = 1, - SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN = 4, - - SUBLANG_CZECH_CZECH_REPUBLIC = 1, - SUBLANG_DANISH_DENMARK = 1, - SUBLANG_DIVEHI_MALDIVES = 1, - - SUBLANG_DUTCH = 1, - SUBLANG_DUTCH_BELGIAN, // = 2 - - SUBLANG_ENGLISH_US = 1, - SUBLANG_ENGLISH_UK, - SUBLANG_ENGLISH_AUS, - SUBLANG_ENGLISH_CAN, - SUBLANG_ENGLISH_NZ, - SUBLANG_ENGLISH_EIRE, // = 6 - SUBLANG_ENGLISH_IRELAND = 6, - SUBLANG_ENGLISH_SOUTH_AFRICA, - SUBLANG_ENGLISH_JAMAICA, - SUBLANG_ENGLISH_CARIBBEAN, - SUBLANG_ENGLISH_BELIZE, - SUBLANG_ENGLISH_TRINIDAD, - SUBLANG_ENGLISH_ZIMBABWE, - SUBLANG_ENGLISH_PHILIPPINES, // = 13 - SUBLANG_ENGLISH_INDIA = 16, - SUBLANG_ENGLISH_MALAYSIA, - SUBLANG_ENGLISH_SINGAPORE, // = 18 - - SUBLANG_ESTONIAN_ESTONIA = 1, - SUBLANG_FAEROESE_FAROE_ISLANDS = 1, - SUBLANG_FILIPINO_PHILIPPINES = 1, - SUBLANG_FINNISH_FINLAND = 1, - - SUBLANG_FRENCH = 1, - SUBLANG_FRENCH_BELGIAN, - SUBLANG_FRENCH_CANADIAN, - SUBLANG_FRENCH_SWISS, - SUBLANG_FRENCH_LUXEMBOURG, - SUBLANG_FRENCH_MONACO, // = 6 - - SUBLANG_FRISIAN_NETHERLANDS = 1, - SUBLANG_GALICIAN_GALICIAN = 1, - SUBLANG_GEORGIAN_GEORGIA = 1, - - SUBLANG_GERMAN = 1, - SUBLANG_GERMAN_SWISS, - SUBLANG_GERMAN_AUSTRIAN, - SUBLANG_GERMAN_LUXEMBOURG, - SUBLANG_GERMAN_LIECHTENSTEIN, // = 5 - - SUBLANG_GREEK_GREECE = 1, - SUBLANG_GREENLANDIC_GREENLAND = 1, - SUBLANG_GUJARATI_INDIA = 1, - SUBLANG_HAUSA_NIGERIA = 1, - SUBLANG_HEBREW_ISRAEL = 1, - SUBLANG_HINDI_INDIA = 1, - SUBLANG_HUNGARIAN_HUNGARY = 1, - SUBLANG_ICELANDIC_ICELAND = 1, - SUBLANG_IGBO_NIGERIA = 1, - SUBLANG_INDONESIAN_INDONESIA = 1, - - SUBLANG_INUKTITUT_CANADA = 1, - SUBLANG_INUKTITUT_CANADA_LATIN = 1, - - SUBLANG_IRISH_IRELAND = 1, - - SUBLANG_ITALIAN = 1, - SUBLANG_ITALIAN_SWISS, // = 2 - - SUBLANG_JAPANESE_JAPAN = 1, - - SUBLANG_KASHMIRI_INDIA = 2, - SUBLANG_KASHMIRI_SASIA = 2, - - SUBLANG_KAZAK_KAZAKHSTAN = 1, - SUBLANG_KHMER_CAMBODIA = 1, - SUBLANG_KICHE_GUATEMALA = 1, - SUBLANG_KINYARWANDA_RWANDA = 1, - SUBLANG_KONKANI_INDIA = 1, - SUBLANG_KOREAN = 1, - SUBLANG_KYRGYZ_KYRGYZSTAN = 1, - SUBLANG_LAO_LAO_PDR = 1, - SUBLANG_LATVIAN_LATVIA = 1, - - SUBLANG_LITHUANIAN = 1, - SUBLANG_LITHUANIAN_LITHUANIA = 1, - - SUBLANG_LOWER_SORBIAN_GERMANY = 1, - SUBLANG_LUXEMBOURGISH_LUXEMBOURG = 1, - SUBLANG_MACEDONIAN_MACEDONIA = 1, - SUBLANG_MALAYALAM_INDIA = 1, - SUBLANG_MALTESE_MALTA = 1, - SUBLANG_MAORI_NEW_ZEALAND = 1, - SUBLANG_MAPUDUNGUN_CHILE = 1, - SUBLANG_MARATHI_INDIA = 1, - SUBLANG_MOHAWK_MOHAWK = 1, - - SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA = 1, - SUBLANG_MONGOLIAN_PRC, // = 2 - - SUBLANG_MALAY_MALAYSIA = 1, - SUBLANG_MALAY_BRUNEI_DARUSSALAM, // = 2 - - SUBLANG_NEPALI_NEPAL = 1, - SUBLANG_NEPALI_INDIA, // = 2 - - SUBLANG_NORWEGIAN_BOKMAL = 1, - SUBLANG_NORWEGIAN_NYNORSK, // = 2 - - SUBLANG_OCCITAN_FRANCE = 1, - SUBLANG_ORIYA_INDIA = 1, - SUBLANG_PASHTO_AFGHANISTAN = 1, - SUBLANG_PERSIAN_IRAN = 1, - SUBLANG_POLISH_POLAND = 1, - - SUBLANG_PORTUGUESE_BRAZILIAN = 1, - SUBLANG_PORTUGUESE = 2, - SUBLANG_PORTUGUESE_PORTUGAL, // = 2 - - SUBLANG_PUNJABI_INDIA = 1, - - SUBLANG_QUECHUA_BOLIVIA = 1, - SUBLANG_QUECHUA_ECUADOR, - SUBLANG_QUECHUA_PERU, // = 3 - - SUBLANG_ROMANIAN_ROMANIA = 1, - SUBLANG_ROMANSH_SWITZERLAND = 1, - SUBLANG_RUSSIAN_RUSSIA = 1, - - SUBLANG_SAMI_NORTHERN_NORWAY = 1, - SUBLANG_SAMI_NORTHERN_SWEDEN, - SUBLANG_SAMI_NORTHERN_FINLAND, // = 3 - SUBLANG_SAMI_SKOLT_FINLAND = 3, - SUBLANG_SAMI_INARI_FINLAND = 3, - SUBLANG_SAMI_LULE_NORWAY, - SUBLANG_SAMI_LULE_SWEDEN, - SUBLANG_SAMI_SOUTHERN_NORWAY, - SUBLANG_SAMI_SOUTHERN_SWEDEN, // = 7 - - SUBLANG_SANSKRIT_INDIA = 1, - - SUBLANG_SERBIAN_LATIN = 2, - SUBLANG_SERBIAN_CYRILLIC, // = 3 - SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN = 6, - SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 7, - - SUBLANG_SINDHI_AFGHANISTAN = 2, - SUBLANG_SINHALESE_SRI_LANKA = 1, - SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA = 1, - SUBLANG_SLOVAK_SLOVAKIA = 1, - SUBLANG_SLOVENIAN_SLOVENIA = 1, - - SUBLANG_SPANISH = 1, - SUBLANG_SPANISH_MEXICAN, - SUBLANG_SPANISH_MODERN, - SUBLANG_SPANISH_GUATEMALA, - SUBLANG_SPANISH_COSTA_RICA, - SUBLANG_SPANISH_PANAMA, - SUBLANG_SPANISH_DOMINICAN_REPUBLIC, - SUBLANG_SPANISH_VENEZUELA, - SUBLANG_SPANISH_COLOMBIA, - SUBLANG_SPANISH_PERU, - SUBLANG_SPANISH_ARGENTINA, - SUBLANG_SPANISH_ECUADOR, - SUBLANG_SPANISH_CHILE, - SUBLANG_SPANISH_URUGUAY, - SUBLANG_SPANISH_PARAGUAY, - SUBLANG_SPANISH_BOLIVIA, - SUBLANG_SPANISH_EL_SALVADOR, - SUBLANG_SPANISH_HONDURAS, - SUBLANG_SPANISH_NICARAGUA, - SUBLANG_SPANISH_PUERTO_RICO, - SUBLANG_SPANISH_US, // = 21 - - SUBLANG_SWEDISH = 1, - SUBLANG_SWEDISH_SWEDEN = 1, - SUBLANG_SWEDISH_FINLAND, // = 2 - - SUBLANG_SYRIAC = 1, - SUBLANG_TAJIK_TAJIKISTAN = 1, - SUBLANG_TAMAZIGHT_ALGERIA_LATIN = 2, - SUBLANG_TAMIL_INDIA = 1, - SUBLANG_TATAR_RUSSIA = 1, - SUBLANG_TELUGU_INDIA = 1, - SUBLANG_THAI_THAILAND = 1, - SUBLANG_TIBETAN_PRC = 1, - SUBLANG_TIBETAN_BHUTAN = 2, - SUBLANG_TIGRIGNA_ERITREA = 1, - SUBLANG_TSWANA_SOUTH_AFRICA = 1, - SUBLANG_TURKISH_TURKEY = 1, - SUBLANG_TURKMEN_TURKMENISTAN = 1, - SUBLANG_UIGHUR_PRC = 1, - SUBLANG_UKRAINIAN_UKRAINE = 1, - SUBLANG_UPPER_SORBIAN_GERMANY = 1, - - SUBLANG_URDU_PAKISTAN = 1, - SUBLANG_URDU_INDIA, // = 2 - - SUBLANG_UZBEK_LATIN = 1, - SUBLANG_UZBEK_CYRILLIC, // = 2 - - SUBLANG_VIETNAMESE_VIETNAM = 1, - SUBLANG_WELSH_UNITED_KINGDOM = 1, - SUBLANG_WOLOF_SENEGAL = 1, - SUBLANG_YORUBA_NIGERIA = 1, - SUBLANG_XHOSA_SOUTH_AFRICA = 1, - SUBLANG_YAKUT_RUSSIA = 1, - SUBLANG_YI_PRC = 1, - SUBLANG_ZULU_SOUTH_AFRICA = 1 + SUBLANG_NEUTRAL, + SUBLANG_DEFAULT, + SUBLANG_SYS_DEFAULT, + SUBLANG_CUSTOM_DEFAULT, // = 3 + SUBLANG_UI_CUSTOM_DEFAULT = 3, + SUBLANG_CUSTOM_UNSPECIFIED, // = 4 + + SUBLANG_AFRIKAANS_SOUTH_AFRICA = 1, + SUBLANG_ALBANIAN_ALBANIA = 1, + SUBLANG_ALSATIAN_FRANCE = 1, + SUBLANG_AMHARIC_ETHIOPIA = 1, + + SUBLANG_ARABIC_SAUDI_ARABIA = 1, + SUBLANG_ARABIC_IRAQ, + SUBLANG_ARABIC_EGYPT, + SUBLANG_ARABIC_LIBYA, + SUBLANG_ARABIC_ALGERIA, + SUBLANG_ARABIC_MOROCCO, + SUBLANG_ARABIC_TUNISIA, + SUBLANG_ARABIC_OMAN, + SUBLANG_ARABIC_YEMEN, + SUBLANG_ARABIC_SYRIA, + SUBLANG_ARABIC_JORDAN, + SUBLANG_ARABIC_LEBANON, + SUBLANG_ARABIC_KUWAIT, + SUBLANG_ARABIC_UAE, + SUBLANG_ARABIC_BAHRAIN, + SUBLANG_ARABIC_QATAR, // = 16 + + SUBLANG_ARMENIAN_ARMENIA = 1, + SUBLANG_ASSAMESE_INDIA = 1, + + SUBLANG_AZERI_LATIN = 1, + SUBLANG_AZERI_CYRILLIC, // = 2 + + SUBLANG_BASHKIR_RUSSIA = 1, + SUBLANG_BASQUE_BASQUE = 1, + SUBLANG_BELARUSIAN_BELARUS = 1, + SUBLANG_BENGALI_INDIA = 1, + + SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN = 5, + SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 8, + + SUBLANG_BRETON_FRANCE = 1, + SUBLANG_BULGARIAN_BULGARIA = 1, + SUBLANG_CATALAN_CATALAN = 1, + + SUBLANG_CHINESE_TRADITIONAL = 1, + SUBLANG_CHINESE_SIMPLIFIED, + SUBLANG_CHINESE_HONGKONG, + SUBLANG_CHINESE_SINGAPORE, + SUBLANG_CHINESE_MACAU, // = 5 + + SUBLANG_CORSICAN_FRANCE = 1, + + SUBLANG_CROATIAN_CROATIA = 1, + SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN = 4, + + SUBLANG_CZECH_CZECH_REPUBLIC = 1, + SUBLANG_DANISH_DENMARK = 1, + SUBLANG_DIVEHI_MALDIVES = 1, + + SUBLANG_DUTCH = 1, + SUBLANG_DUTCH_BELGIAN, // = 2 + + SUBLANG_ENGLISH_US = 1, + SUBLANG_ENGLISH_UK, + SUBLANG_ENGLISH_AUS, + SUBLANG_ENGLISH_CAN, + SUBLANG_ENGLISH_NZ, + SUBLANG_ENGLISH_EIRE, // = 6 + SUBLANG_ENGLISH_IRELAND = 6, + SUBLANG_ENGLISH_SOUTH_AFRICA, + SUBLANG_ENGLISH_JAMAICA, + SUBLANG_ENGLISH_CARIBBEAN, + SUBLANG_ENGLISH_BELIZE, + SUBLANG_ENGLISH_TRINIDAD, + SUBLANG_ENGLISH_ZIMBABWE, + SUBLANG_ENGLISH_PHILIPPINES, // = 13 + SUBLANG_ENGLISH_INDIA = 16, + SUBLANG_ENGLISH_MALAYSIA, + SUBLANG_ENGLISH_SINGAPORE, // = 18 + + SUBLANG_ESTONIAN_ESTONIA = 1, + SUBLANG_FAEROESE_FAROE_ISLANDS = 1, + SUBLANG_FILIPINO_PHILIPPINES = 1, + SUBLANG_FINNISH_FINLAND = 1, + + SUBLANG_FRENCH = 1, + SUBLANG_FRENCH_BELGIAN, + SUBLANG_FRENCH_CANADIAN, + SUBLANG_FRENCH_SWISS, + SUBLANG_FRENCH_LUXEMBOURG, + SUBLANG_FRENCH_MONACO, // = 6 + + SUBLANG_FRISIAN_NETHERLANDS = 1, + SUBLANG_GALICIAN_GALICIAN = 1, + SUBLANG_GEORGIAN_GEORGIA = 1, + + SUBLANG_GERMAN = 1, + SUBLANG_GERMAN_SWISS, + SUBLANG_GERMAN_AUSTRIAN, + SUBLANG_GERMAN_LUXEMBOURG, + SUBLANG_GERMAN_LIECHTENSTEIN, // = 5 + + SUBLANG_GREEK_GREECE = 1, + SUBLANG_GREENLANDIC_GREENLAND = 1, + SUBLANG_GUJARATI_INDIA = 1, + SUBLANG_HAUSA_NIGERIA = 1, + SUBLANG_HEBREW_ISRAEL = 1, + SUBLANG_HINDI_INDIA = 1, + SUBLANG_HUNGARIAN_HUNGARY = 1, + SUBLANG_ICELANDIC_ICELAND = 1, + SUBLANG_IGBO_NIGERIA = 1, + SUBLANG_INDONESIAN_INDONESIA = 1, + + SUBLANG_INUKTITUT_CANADA = 1, + SUBLANG_INUKTITUT_CANADA_LATIN = 1, + + SUBLANG_IRISH_IRELAND = 1, + + SUBLANG_ITALIAN = 1, + SUBLANG_ITALIAN_SWISS, // = 2 + + SUBLANG_JAPANESE_JAPAN = 1, + + SUBLANG_KASHMIRI_INDIA = 2, + SUBLANG_KASHMIRI_SASIA = 2, + + SUBLANG_KAZAK_KAZAKHSTAN = 1, + SUBLANG_KHMER_CAMBODIA = 1, + SUBLANG_KICHE_GUATEMALA = 1, + SUBLANG_KINYARWANDA_RWANDA = 1, + SUBLANG_KONKANI_INDIA = 1, + SUBLANG_KOREAN = 1, + SUBLANG_KYRGYZ_KYRGYZSTAN = 1, + SUBLANG_LAO_LAO_PDR = 1, + SUBLANG_LATVIAN_LATVIA = 1, + + SUBLANG_LITHUANIAN = 1, + SUBLANG_LITHUANIAN_LITHUANIA = 1, + + SUBLANG_LOWER_SORBIAN_GERMANY = 1, + SUBLANG_LUXEMBOURGISH_LUXEMBOURG = 1, + SUBLANG_MACEDONIAN_MACEDONIA = 1, + SUBLANG_MALAYALAM_INDIA = 1, + SUBLANG_MALTESE_MALTA = 1, + SUBLANG_MAORI_NEW_ZEALAND = 1, + SUBLANG_MAPUDUNGUN_CHILE = 1, + SUBLANG_MARATHI_INDIA = 1, + SUBLANG_MOHAWK_MOHAWK = 1, + + SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA = 1, + SUBLANG_MONGOLIAN_PRC, // = 2 + + SUBLANG_MALAY_MALAYSIA = 1, + SUBLANG_MALAY_BRUNEI_DARUSSALAM, // = 2 + + SUBLANG_NEPALI_NEPAL = 1, + SUBLANG_NEPALI_INDIA, // = 2 + + SUBLANG_NORWEGIAN_BOKMAL = 1, + SUBLANG_NORWEGIAN_NYNORSK, // = 2 + + SUBLANG_OCCITAN_FRANCE = 1, + SUBLANG_ORIYA_INDIA = 1, + SUBLANG_PASHTO_AFGHANISTAN = 1, + SUBLANG_PERSIAN_IRAN = 1, + SUBLANG_POLISH_POLAND = 1, + + SUBLANG_PORTUGUESE_BRAZILIAN = 1, + SUBLANG_PORTUGUESE = 2, + SUBLANG_PORTUGUESE_PORTUGAL, // = 2 + + SUBLANG_PUNJABI_INDIA = 1, + + SUBLANG_QUECHUA_BOLIVIA = 1, + SUBLANG_QUECHUA_ECUADOR, + SUBLANG_QUECHUA_PERU, // = 3 + + SUBLANG_ROMANIAN_ROMANIA = 1, + SUBLANG_ROMANSH_SWITZERLAND = 1, + SUBLANG_RUSSIAN_RUSSIA = 1, + + SUBLANG_SAMI_NORTHERN_NORWAY = 1, + SUBLANG_SAMI_NORTHERN_SWEDEN, + SUBLANG_SAMI_NORTHERN_FINLAND, // = 3 + SUBLANG_SAMI_SKOLT_FINLAND = 3, + SUBLANG_SAMI_INARI_FINLAND = 3, + SUBLANG_SAMI_LULE_NORWAY, + SUBLANG_SAMI_LULE_SWEDEN, + SUBLANG_SAMI_SOUTHERN_NORWAY, + SUBLANG_SAMI_SOUTHERN_SWEDEN, // = 7 + + SUBLANG_SANSKRIT_INDIA = 1, + + SUBLANG_SERBIAN_LATIN = 2, + SUBLANG_SERBIAN_CYRILLIC, // = 3 + SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN = 6, + SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 7, + + SUBLANG_SINDHI_AFGHANISTAN = 2, + SUBLANG_SINHALESE_SRI_LANKA = 1, + SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA = 1, + SUBLANG_SLOVAK_SLOVAKIA = 1, + SUBLANG_SLOVENIAN_SLOVENIA = 1, + + SUBLANG_SPANISH = 1, + SUBLANG_SPANISH_MEXICAN, + SUBLANG_SPANISH_MODERN, + SUBLANG_SPANISH_GUATEMALA, + SUBLANG_SPANISH_COSTA_RICA, + SUBLANG_SPANISH_PANAMA, + SUBLANG_SPANISH_DOMINICAN_REPUBLIC, + SUBLANG_SPANISH_VENEZUELA, + SUBLANG_SPANISH_COLOMBIA, + SUBLANG_SPANISH_PERU, + SUBLANG_SPANISH_ARGENTINA, + SUBLANG_SPANISH_ECUADOR, + SUBLANG_SPANISH_CHILE, + SUBLANG_SPANISH_URUGUAY, + SUBLANG_SPANISH_PARAGUAY, + SUBLANG_SPANISH_BOLIVIA, + SUBLANG_SPANISH_EL_SALVADOR, + SUBLANG_SPANISH_HONDURAS, + SUBLANG_SPANISH_NICARAGUA, + SUBLANG_SPANISH_PUERTO_RICO, + SUBLANG_SPANISH_US, // = 21 + + SUBLANG_SWEDISH = 1, + SUBLANG_SWEDISH_SWEDEN = 1, + SUBLANG_SWEDISH_FINLAND, // = 2 + + SUBLANG_SYRIAC = 1, + SUBLANG_TAJIK_TAJIKISTAN = 1, + SUBLANG_TAMAZIGHT_ALGERIA_LATIN = 2, + SUBLANG_TAMIL_INDIA = 1, + SUBLANG_TATAR_RUSSIA = 1, + SUBLANG_TELUGU_INDIA = 1, + SUBLANG_THAI_THAILAND = 1, + SUBLANG_TIBETAN_PRC = 1, + SUBLANG_TIBETAN_BHUTAN = 2, + SUBLANG_TIGRIGNA_ERITREA = 1, + SUBLANG_TSWANA_SOUTH_AFRICA = 1, + SUBLANG_TURKISH_TURKEY = 1, + SUBLANG_TURKMEN_TURKMENISTAN = 1, + SUBLANG_UIGHUR_PRC = 1, + SUBLANG_UKRAINIAN_UKRAINE = 1, + SUBLANG_UPPER_SORBIAN_GERMANY = 1, + + SUBLANG_URDU_PAKISTAN = 1, + SUBLANG_URDU_INDIA, // = 2 + + SUBLANG_UZBEK_LATIN = 1, + SUBLANG_UZBEK_CYRILLIC, // = 2 + + SUBLANG_VIETNAMESE_VIETNAM = 1, + SUBLANG_WELSH_UNITED_KINGDOM = 1, + SUBLANG_WOLOF_SENEGAL = 1, + SUBLANG_YORUBA_NIGERIA = 1, + SUBLANG_XHOSA_SOUTH_AFRICA = 1, + SUBLANG_YAKUT_RUSSIA = 1, + SUBLANG_YI_PRC = 1, + SUBLANG_ZULU_SOUTH_AFRICA = 1 } // This is not documented on MSDN @@ -833,21 +833,21 @@ const NLS_VALID_LOCALE_MASK = 1048575; // Sorting identifiers enum : WORD { - SORT_DEFAULT = 0, - SORT_JAPANESE_XJIS = 0, - SORT_JAPANESE_UNICODE = 1, - SORT_CHINESE_BIG5 = 0, - SORT_CHINESE_PRCP = 0, - SORT_CHINESE_UNICODE = 1, - SORT_CHINESE_PRC = 2, - SORT_CHINESE_BOPOMOFO = 3, - SORT_KOREAN_KSC = 0, - SORT_KOREAN_UNICODE = 1, - SORT_GERMAN_PHONE_BOOK = 1, - SORT_HUNGARIAN_DEFAULT = 0, - SORT_HUNGARIAN_TECHNICAL = 1, - SORT_GEORGIAN_TRADITIONAL = 0, - SORT_GEORGIAN_MODERN = 1 + SORT_DEFAULT = 0, + SORT_JAPANESE_XJIS = 0, + SORT_JAPANESE_UNICODE = 1, + SORT_CHINESE_BIG5 = 0, + SORT_CHINESE_PRCP = 0, + SORT_CHINESE_UNICODE = 1, + SORT_CHINESE_PRC = 2, + SORT_CHINESE_BOPOMOFO = 3, + SORT_KOREAN_KSC = 0, + SORT_KOREAN_UNICODE = 1, + SORT_GERMAN_PHONE_BOOK = 1, + SORT_HUNGARIAN_DEFAULT = 0, + SORT_HUNGARIAN_TECHNICAL = 1, + SORT_GEORGIAN_TRADITIONAL = 0, + SORT_GEORGIAN_MODERN = 1 } WORD MAKELANGID(USHORT p, USHORT s) { return cast(WORD)((s << 10) | p); } @@ -868,21 +868,21 @@ const DWORD LOCALE_NEUTRAL = (SORT_DEFAULT << 16) // --- enum : BYTE { - ACL_REVISION = 2, - ACL_REVISION_DS = 4 + ACL_REVISION = 2, + ACL_REVISION_DS = 4 } // These are not documented on MSDN enum : BYTE { - ACL_REVISION1 = 1, - ACL_REVISION2, - ACL_REVISION3, - ACL_REVISION4 // = 4 + ACL_REVISION1 = 1, + ACL_REVISION2, + ACL_REVISION3, + ACL_REVISION4 // = 4 } const BYTE - MIN_ACL_REVISION = 2, - MAX_ACL_REVISION = 4; + MIN_ACL_REVISION = 2, + MAX_ACL_REVISION = 4; /+ // These aren't necessary for D. @@ -899,70 +899,70 @@ const MAXDWORD=0xffffffff; // SYSTEM_INFO.dwProcessorType enum : DWORD { - PROCESSOR_INTEL_386 = 386, - PROCESSOR_INTEL_486 = 486, - PROCESSOR_INTEL_PENTIUM = 586, - PROCESSOR_MIPS_R4000 = 4000, - PROCESSOR_ALPHA_21064 = 21064, - PROCESSOR_INTEL_IA64 = 2200 + PROCESSOR_INTEL_386 = 386, + PROCESSOR_INTEL_486 = 486, + PROCESSOR_INTEL_PENTIUM = 586, + PROCESSOR_MIPS_R4000 = 4000, + PROCESSOR_ALPHA_21064 = 21064, + PROCESSOR_INTEL_IA64 = 2200 } // SYSTEM_INFO.wProcessorArchitecture enum : WORD { - PROCESSOR_ARCHITECTURE_INTEL, - PROCESSOR_ARCHITECTURE_MIPS, - PROCESSOR_ARCHITECTURE_ALPHA, - PROCESSOR_ARCHITECTURE_PPC, - PROCESSOR_ARCHITECTURE_SHX, - PROCESSOR_ARCHITECTURE_ARM, - PROCESSOR_ARCHITECTURE_IA64, - PROCESSOR_ARCHITECTURE_ALPHA64, - PROCESSOR_ARCHITECTURE_MSIL, - PROCESSOR_ARCHITECTURE_AMD64, - PROCESSOR_ARCHITECTURE_IA32_ON_WIN64, // = 10 - PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF + PROCESSOR_ARCHITECTURE_INTEL, + PROCESSOR_ARCHITECTURE_MIPS, + PROCESSOR_ARCHITECTURE_ALPHA, + PROCESSOR_ARCHITECTURE_PPC, + PROCESSOR_ARCHITECTURE_SHX, + PROCESSOR_ARCHITECTURE_ARM, + PROCESSOR_ARCHITECTURE_IA64, + PROCESSOR_ARCHITECTURE_ALPHA64, + PROCESSOR_ARCHITECTURE_MSIL, + PROCESSOR_ARCHITECTURE_AMD64, + PROCESSOR_ARCHITECTURE_IA32_ON_WIN64, // = 10 + PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF } // IsProcessorFeaturePresent() enum : DWORD { - PF_FLOATING_POINT_PRECISION_ERRATA, - PF_FLOATING_POINT_EMULATED, - PF_COMPARE_EXCHANGE_DOUBLE, - PF_MMX_INSTRUCTIONS_AVAILABLE, - PF_PPC_MOVEMEM_64BIT_OK, - PF_ALPHA_BYTE_INSTRUCTIONS, - PF_XMMI_INSTRUCTIONS_AVAILABLE, - PF_3DNOW_INSTRUCTIONS_AVAILABLE, - PF_RDTSC_INSTRUCTION_AVAILABLE, - PF_PAE_ENABLED, - PF_XMMI64_INSTRUCTIONS_AVAILABLE + PF_FLOATING_POINT_PRECISION_ERRATA, + PF_FLOATING_POINT_EMULATED, + PF_COMPARE_EXCHANGE_DOUBLE, + PF_MMX_INSTRUCTIONS_AVAILABLE, + PF_PPC_MOVEMEM_64BIT_OK, + PF_ALPHA_BYTE_INSTRUCTIONS, + PF_XMMI_INSTRUCTIONS_AVAILABLE, + PF_3DNOW_INSTRUCTIONS_AVAILABLE, + PF_RDTSC_INSTRUCTION_AVAILABLE, + PF_PAE_ENABLED, + PF_XMMI64_INSTRUCTIONS_AVAILABLE } // MinGW: also in ddk/ntifs.h enum : DWORD { - FILE_ACTION_ADDED = 1, - FILE_ACTION_REMOVED, - FILE_ACTION_MODIFIED, - FILE_ACTION_RENAMED_OLD_NAME, - FILE_ACTION_RENAMED_NEW_NAME, - FILE_ACTION_ADDED_STREAM, - FILE_ACTION_REMOVED_STREAM, - FILE_ACTION_MODIFIED_STREAM, - FILE_ACTION_REMOVED_BY_DELETE, - FILE_ACTION_ID_NOT_TUNNELLED, - FILE_ACTION_TUNNELLED_ID_COLLISION // = 11 + FILE_ACTION_ADDED = 1, + FILE_ACTION_REMOVED, + FILE_ACTION_MODIFIED, + FILE_ACTION_RENAMED_OLD_NAME, + FILE_ACTION_RENAMED_NEW_NAME, + FILE_ACTION_ADDED_STREAM, + FILE_ACTION_REMOVED_STREAM, + FILE_ACTION_MODIFIED_STREAM, + FILE_ACTION_REMOVED_BY_DELETE, + FILE_ACTION_ID_NOT_TUNNELLED, + FILE_ACTION_TUNNELLED_ID_COLLISION // = 11 } // MinGW: end ntifs.h const DWORD - HEAP_NO_SERIALIZE = 0x01, - HEAP_GROWABLE = 0x02, - HEAP_GENERATE_EXCEPTIONS = 0x04, - HEAP_ZERO_MEMORY = 0x08, - HEAP_REALLOC_IN_PLACE_ONLY = 0x10, - HEAP_TAIL_CHECKING_ENABLED = 0x20, - HEAP_FREE_CHECKING_ENABLED = 0x40, - HEAP_DISABLE_COALESCE_ON_FREE = 0x80; + HEAP_NO_SERIALIZE = 0x01, + HEAP_GROWABLE = 0x02, + HEAP_GENERATE_EXCEPTIONS = 0x04, + HEAP_ZERO_MEMORY = 0x08, + HEAP_REALLOC_IN_PLACE_ONLY = 0x10, + HEAP_TAIL_CHECKING_ENABLED = 0x20, + HEAP_FREE_CHECKING_ENABLED = 0x40, + HEAP_DISABLE_COALESCE_ON_FREE = 0x80; // These are not documented on MSDN const HEAP_CREATE_ALIGN_16 = 0; @@ -974,47 +974,47 @@ const HEAP_TAG_SHIFT = 16; //MACRO #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16))) const ACCESS_MASK - KEY_QUERY_VALUE = 0x000001, - KEY_SET_VALUE = 0x000002, - KEY_CREATE_SUB_KEY = 0x000004, - KEY_ENUMERATE_SUB_KEYS = 0x000008, - KEY_NOTIFY = 0x000010, - KEY_CREATE_LINK = 0x000020, - KEY_WRITE = 0x020006, - KEY_EXECUTE = 0x020019, - KEY_READ = 0x020019, - KEY_ALL_ACCESS = 0x0F003F; + KEY_QUERY_VALUE = 0x000001, + KEY_SET_VALUE = 0x000002, + KEY_CREATE_SUB_KEY = 0x000004, + KEY_ENUMERATE_SUB_KEYS = 0x000008, + KEY_NOTIFY = 0x000010, + KEY_CREATE_LINK = 0x000020, + KEY_WRITE = 0x020006, + KEY_EXECUTE = 0x020019, + KEY_READ = 0x020019, + KEY_ALL_ACCESS = 0x0F003F; static if (_WIN32_WINNT >= 0x502) { - const ACCESS_MASK - KEY_WOW64_64KEY = 0x000100, - KEY_WOW64_32KEY = 0x000200; + const ACCESS_MASK + KEY_WOW64_64KEY = 0x000100, + KEY_WOW64_32KEY = 0x000200; } const DWORD - REG_WHOLE_HIVE_VOLATILE = 1, - REG_REFRESH_HIVE = 2, - REG_NO_LAZY_FLUSH = 4; + REG_WHOLE_HIVE_VOLATILE = 1, + REG_REFRESH_HIVE = 2, + REG_NO_LAZY_FLUSH = 4; const DWORD - REG_OPTION_RESERVED = 0, - REG_OPTION_NON_VOLATILE = 0, - REG_OPTION_VOLATILE = 1, - REG_OPTION_CREATE_LINK = 2, - REG_OPTION_BACKUP_RESTORE = 4, - REG_OPTION_OPEN_LINK = 8, - REG_LEGAL_OPTION = 15; + REG_OPTION_RESERVED = 0, + REG_OPTION_NON_VOLATILE = 0, + REG_OPTION_VOLATILE = 1, + REG_OPTION_CREATE_LINK = 2, + REG_OPTION_BACKUP_RESTORE = 4, + REG_OPTION_OPEN_LINK = 8, + REG_LEGAL_OPTION = 15; const SECURITY_INFORMATION - OWNER_SECURITY_INFORMATION = 0x00000001, - GROUP_SECURITY_INFORMATION = 0x00000002, - DACL_SECURITY_INFORMATION = 0x00000004, - SACL_SECURITY_INFORMATION = 0x00000008, - LABEL_SECURITY_INFORMATION = 0x00000010, - UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000, - UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000, - PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000, - PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000; + OWNER_SECURITY_INFORMATION = 0x00000001, + GROUP_SECURITY_INFORMATION = 0x00000002, + DACL_SECURITY_INFORMATION = 0x00000004, + SACL_SECURITY_INFORMATION = 0x00000008, + LABEL_SECURITY_INFORMATION = 0x00000010, + UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000, + UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000, + PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000, + PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000; const DWORD MAXIMUM_PROCESSORS = 32; @@ -1022,55 +1022,55 @@ const DWORD MAXIMUM_PROCESSORS = 32; // ------------------- enum : DWORD { - PAGE_NOACCESS = 0x0001, - PAGE_READONLY = 0x0002, - PAGE_READWRITE = 0x0004, - PAGE_WRITECOPY = 0x0008, - PAGE_EXECUTE = 0x0010, - PAGE_EXECUTE_READ = 0x0020, - PAGE_EXECUTE_READWRITE = 0x0040, - PAGE_EXECUTE_WRITECOPY = 0x0080, - PAGE_GUARD = 0x0100, - PAGE_NOCACHE = 0x0200 + PAGE_NOACCESS = 0x0001, + PAGE_READONLY = 0x0002, + PAGE_READWRITE = 0x0004, + PAGE_WRITECOPY = 0x0008, + PAGE_EXECUTE = 0x0010, + PAGE_EXECUTE_READ = 0x0020, + PAGE_EXECUTE_READWRITE = 0x0040, + PAGE_EXECUTE_WRITECOPY = 0x0080, + PAGE_GUARD = 0x0100, + PAGE_NOCACHE = 0x0200 } enum : DWORD { - MEM_COMMIT = 0x00001000, - MEM_RESERVE = 0x00002000, - MEM_DECOMMIT = 0x00004000, - MEM_RELEASE = 0x00008000, - MEM_FREE = 0x00010000, - MEM_PRIVATE = 0x00020000, - MEM_MAPPED = 0x00040000, - MEM_RESET = 0x00080000, - MEM_TOP_DOWN = 0x00100000, - MEM_WRITE_WATCH = 0x00200000, // MinGW (???): 98/Me - MEM_PHYSICAL = 0x00400000, - MEM_4MB_PAGES = 0x80000000 + MEM_COMMIT = 0x00001000, + MEM_RESERVE = 0x00002000, + MEM_DECOMMIT = 0x00004000, + MEM_RELEASE = 0x00008000, + MEM_FREE = 0x00010000, + MEM_PRIVATE = 0x00020000, + MEM_MAPPED = 0x00040000, + MEM_RESET = 0x00080000, + MEM_TOP_DOWN = 0x00100000, + MEM_WRITE_WATCH = 0x00200000, // MinGW (???): 98/Me + MEM_PHYSICAL = 0x00400000, + MEM_4MB_PAGES = 0x80000000 } // MinGW: also in ddk/ntifs.h // CreateFileMapping() const DWORD - SEC_BASED = 0x00200000, - SEC_NO_CHANGE = 0x00400000, - SEC_FILE = 0x00800000, - SEC_IMAGE = 0x01000000, - SEC_VLM = 0x02000000, - SEC_RESERVE = 0x04000000, - SEC_COMMIT = 0x08000000, - SEC_NOCACHE = 0x10000000, - MEM_IMAGE = SEC_IMAGE; + SEC_BASED = 0x00200000, + SEC_NO_CHANGE = 0x00400000, + SEC_FILE = 0x00800000, + SEC_IMAGE = 0x01000000, + SEC_VLM = 0x02000000, + SEC_RESERVE = 0x04000000, + SEC_COMMIT = 0x08000000, + SEC_NOCACHE = 0x10000000, + MEM_IMAGE = SEC_IMAGE; // MinGW: end ntifs.h // ??? const ACCESS_MASK - SECTION_QUERY = 0x000001, - SECTION_MAP_WRITE = 0x000002, - SECTION_MAP_READ = 0x000004, - SECTION_MAP_EXECUTE = 0x000008, - SECTION_EXTEND_SIZE = 0x000010, - SECTION_ALL_ACCESS = 0x0F001F; + SECTION_QUERY = 0x000001, + SECTION_MAP_WRITE = 0x000002, + SECTION_MAP_READ = 0x000004, + SECTION_MAP_EXECUTE = 0x000008, + SECTION_EXTEND_SIZE = 0x000010, + SECTION_ALL_ACCESS = 0x0F001F; // These are not documented on MSDN const MESSAGE_RESOURCE_UNICODE = 1; @@ -1082,440 +1082,440 @@ const RTL_RESOURCE_TYPE = 1; // IMAGE_FILE_HEADER.Characteristics const WORD - IMAGE_FILE_RELOCS_STRIPPED = 0x0001, - IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, - IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004, - IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008, - IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010, - IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, - IMAGE_FILE_BYTES_REVERSED_LO = 0x0080, - IMAGE_FILE_32BIT_MACHINE = 0x0100, - IMAGE_FILE_DEBUG_STRIPPED = 0x0200, - IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400, - IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800, - IMAGE_FILE_SYSTEM = 0x1000, - IMAGE_FILE_DLL = 0x2000, - IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000, - IMAGE_FILE_BYTES_REVERSED_HI = 0x8000; + IMAGE_FILE_RELOCS_STRIPPED = 0x0001, + IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, + IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004, + IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008, + IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010, + IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, + IMAGE_FILE_BYTES_REVERSED_LO = 0x0080, + IMAGE_FILE_32BIT_MACHINE = 0x0100, + IMAGE_FILE_DEBUG_STRIPPED = 0x0200, + IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400, + IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800, + IMAGE_FILE_SYSTEM = 0x1000, + IMAGE_FILE_DLL = 0x2000, + IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000, + IMAGE_FILE_BYTES_REVERSED_HI = 0x8000; // IMAGE_FILE_HEADER.Machine enum : WORD { - IMAGE_FILE_MACHINE_UNKNOWN = 0x0000, - IMAGE_FILE_MACHINE_I386 = 0x014C, - IMAGE_FILE_MACHINE_R3000 = 0x0162, - IMAGE_FILE_MACHINE_R4000 = 0x0166, - IMAGE_FILE_MACHINE_R10000 = 0x0168, - IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169, - IMAGE_FILE_MACHINE_ALPHA = 0x0184, - IMAGE_FILE_MACHINE_SH3 = 0x01A2, - IMAGE_FILE_MACHINE_SH3DSP = 0x01A3, - IMAGE_FILE_MACHINE_SH4 = 0x01A6, - IMAGE_FILE_MACHINE_SH5 = 0x01A8, - IMAGE_FILE_MACHINE_ARM = 0x01C0, - IMAGE_FILE_MACHINE_THUMB = 0x01C2, - IMAGE_FILE_MACHINE_AM33 = 0x01D3, - IMAGE_FILE_MACHINE_POWERPC = 0x01F0, - IMAGE_FILE_MACHINE_POWERPCFP = 0x01F1, - IMAGE_FILE_MACHINE_IA64 = 0x0200, - IMAGE_FILE_MACHINE_MIPS16 = 0x0266, - IMAGE_FILE_MACHINE_MIPSFPU = 0x0366, - IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466, - IMAGE_FILE_MACHINE_EBC = 0x0EBC, - IMAGE_FILE_MACHINE_AMD64 = 0x8664, - IMAGE_FILE_MACHINE_M32R = 0x9041 + IMAGE_FILE_MACHINE_UNKNOWN = 0x0000, + IMAGE_FILE_MACHINE_I386 = 0x014C, + IMAGE_FILE_MACHINE_R3000 = 0x0162, + IMAGE_FILE_MACHINE_R4000 = 0x0166, + IMAGE_FILE_MACHINE_R10000 = 0x0168, + IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169, + IMAGE_FILE_MACHINE_ALPHA = 0x0184, + IMAGE_FILE_MACHINE_SH3 = 0x01A2, + IMAGE_FILE_MACHINE_SH3DSP = 0x01A3, + IMAGE_FILE_MACHINE_SH4 = 0x01A6, + IMAGE_FILE_MACHINE_SH5 = 0x01A8, + IMAGE_FILE_MACHINE_ARM = 0x01C0, + IMAGE_FILE_MACHINE_THUMB = 0x01C2, + IMAGE_FILE_MACHINE_AM33 = 0x01D3, + IMAGE_FILE_MACHINE_POWERPC = 0x01F0, + IMAGE_FILE_MACHINE_POWERPCFP = 0x01F1, + IMAGE_FILE_MACHINE_IA64 = 0x0200, + IMAGE_FILE_MACHINE_MIPS16 = 0x0266, + IMAGE_FILE_MACHINE_MIPSFPU = 0x0366, + IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466, + IMAGE_FILE_MACHINE_EBC = 0x0EBC, + IMAGE_FILE_MACHINE_AMD64 = 0x8664, + IMAGE_FILE_MACHINE_M32R = 0x9041 } // ??? enum { - IMAGE_DOS_SIGNATURE = 0x5A4D, - IMAGE_OS2_SIGNATURE = 0x454E, - IMAGE_OS2_SIGNATURE_LE = 0x454C, - IMAGE_VXD_SIGNATURE = 0x454C, - IMAGE_NT_SIGNATURE = 0x4550 + IMAGE_DOS_SIGNATURE = 0x5A4D, + IMAGE_OS2_SIGNATURE = 0x454E, + IMAGE_OS2_SIGNATURE_LE = 0x454C, + IMAGE_VXD_SIGNATURE = 0x454C, + IMAGE_NT_SIGNATURE = 0x4550 } // IMAGE_OPTIONAL_HEADER.Magic enum : WORD { - IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x010B, - IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x0107, - IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x020B + IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x010B, + IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x0107, + IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x020B } // IMAGE_OPTIONAL_HEADER.Subsystem enum : WORD { - IMAGE_SUBSYSTEM_UNKNOWN = 0, - IMAGE_SUBSYSTEM_NATIVE, - IMAGE_SUBSYSTEM_WINDOWS_GUI, - IMAGE_SUBSYSTEM_WINDOWS_CUI, // = 3 - IMAGE_SUBSYSTEM_OS2_CUI = 5, - IMAGE_SUBSYSTEM_POSIX_CUI = 7, - IMAGE_SUBSYSTEM_NATIVE_WINDOWS, - IMAGE_SUBSYSTEM_WINDOWS_CE_GUI, - IMAGE_SUBSYSTEM_EFI_APPLICATION, - IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER, - IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, - IMAGE_SUBSYSTEM_EFI_ROM, - IMAGE_SUBSYSTEM_XBOX, // = 14 - IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 + IMAGE_SUBSYSTEM_UNKNOWN = 0, + IMAGE_SUBSYSTEM_NATIVE, + IMAGE_SUBSYSTEM_WINDOWS_GUI, + IMAGE_SUBSYSTEM_WINDOWS_CUI, // = 3 + IMAGE_SUBSYSTEM_OS2_CUI = 5, + IMAGE_SUBSYSTEM_POSIX_CUI = 7, + IMAGE_SUBSYSTEM_NATIVE_WINDOWS, + IMAGE_SUBSYSTEM_WINDOWS_CE_GUI, + IMAGE_SUBSYSTEM_EFI_APPLICATION, + IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER, + IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, + IMAGE_SUBSYSTEM_EFI_ROM, + IMAGE_SUBSYSTEM_XBOX, // = 14 + IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 } // IMAGE_OPTIONAL_HEADER.DllCharacteristics const WORD - IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040, - IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, - IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, - IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200, - IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, - IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800, - IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000, - IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000; + IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040, + IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, + IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, + IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200, + IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, + IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800, + IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000, + IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000; // ??? const IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944; const size_t - IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16, - IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56, - IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28, - IMAGE_SIZEOF_NT_OPTIONAL_HEADER = 224, - IMAGE_SIZEOF_SHORT_NAME = 8, - IMAGE_SIZEOF_SECTION_HEADER = 40, - IMAGE_SIZEOF_SYMBOL = 18, - IMAGE_SIZEOF_AUX_SYMBOL = 18, - IMAGE_SIZEOF_RELOCATION = 10, - IMAGE_SIZEOF_BASE_RELOCATION = 8, - IMAGE_SIZEOF_LINENUMBER = 6, - IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60, - SIZEOF_RFPO_DATA = 16; + IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16, + IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56, + IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28, + IMAGE_SIZEOF_NT_OPTIONAL_HEADER = 224, + IMAGE_SIZEOF_SHORT_NAME = 8, + IMAGE_SIZEOF_SECTION_HEADER = 40, + IMAGE_SIZEOF_SYMBOL = 18, + IMAGE_SIZEOF_AUX_SYMBOL = 18, + IMAGE_SIZEOF_RELOCATION = 10, + IMAGE_SIZEOF_BASE_RELOCATION = 8, + IMAGE_SIZEOF_LINENUMBER = 6, + IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60, + SIZEOF_RFPO_DATA = 16; PIMAGE_SECTION_HEADER IMAGE_FIRST_SECTION(PIMAGE_NT_HEADERS h) { - return cast(PIMAGE_SECTION_HEADER) - (&h.OptionalHeader + h.FileHeader.SizeOfOptionalHeader); + return cast(PIMAGE_SECTION_HEADER) + (&h.OptionalHeader + h.FileHeader.SizeOfOptionalHeader); } // ImageDirectoryEntryToDataEx() enum : USHORT { - IMAGE_DIRECTORY_ENTRY_EXPORT = 0, - IMAGE_DIRECTORY_ENTRY_IMPORT, - IMAGE_DIRECTORY_ENTRY_RESOURCE, - IMAGE_DIRECTORY_ENTRY_EXCEPTION, - IMAGE_DIRECTORY_ENTRY_SECURITY, - IMAGE_DIRECTORY_ENTRY_BASERELOC, - IMAGE_DIRECTORY_ENTRY_DEBUG, - IMAGE_DIRECTORY_ENTRY_COPYRIGHT, // = 7 - IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7, - IMAGE_DIRECTORY_ENTRY_GLOBALPTR, - IMAGE_DIRECTORY_ENTRY_TLS, - IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, - IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, - IMAGE_DIRECTORY_ENTRY_IAT, - IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, - IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, // = 14 + IMAGE_DIRECTORY_ENTRY_EXPORT = 0, + IMAGE_DIRECTORY_ENTRY_IMPORT, + IMAGE_DIRECTORY_ENTRY_RESOURCE, + IMAGE_DIRECTORY_ENTRY_EXCEPTION, + IMAGE_DIRECTORY_ENTRY_SECURITY, + IMAGE_DIRECTORY_ENTRY_BASERELOC, + IMAGE_DIRECTORY_ENTRY_DEBUG, + IMAGE_DIRECTORY_ENTRY_COPYRIGHT, // = 7 + IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7, + IMAGE_DIRECTORY_ENTRY_GLOBALPTR, + IMAGE_DIRECTORY_ENTRY_TLS, + IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, + IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, + IMAGE_DIRECTORY_ENTRY_IAT, + IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, + IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, // = 14 } // IMAGE_SECTION_HEADER.Characteristics const DWORD - IMAGE_SCN_TYPE_REG = 0x00000000, - IMAGE_SCN_TYPE_DSECT = 0x00000001, - IMAGE_SCN_TYPE_NOLOAD = 0x00000002, - IMAGE_SCN_TYPE_GROUP = 0x00000004, - IMAGE_SCN_TYPE_NO_PAD = 0x00000008, - IMAGE_SCN_TYPE_COPY = 0x00000010, - IMAGE_SCN_CNT_CODE = 0x00000020, - IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040, - IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, - IMAGE_SCN_LNK_OTHER = 0x00000100, - IMAGE_SCN_LNK_INFO = 0x00000200, - IMAGE_SCN_TYPE_OVER = 0x00000400, - IMAGE_SCN_LNK_REMOVE = 0x00000800, - IMAGE_SCN_LNK_COMDAT = 0x00001000, - IMAGE_SCN_MEM_FARDATA = 0x00008000, - IMAGE_SCN_GPREL = 0x00008000, - IMAGE_SCN_MEM_PURGEABLE = 0x00020000, - IMAGE_SCN_MEM_16BIT = 0x00020000, - IMAGE_SCN_MEM_LOCKED = 0x00040000, - IMAGE_SCN_MEM_PRELOAD = 0x00080000, - IMAGE_SCN_ALIGN_1BYTES = 0x00100000, - IMAGE_SCN_ALIGN_2BYTES = 0x00200000, - IMAGE_SCN_ALIGN_4BYTES = 0x00300000, - IMAGE_SCN_ALIGN_8BYTES = 0x00400000, - IMAGE_SCN_ALIGN_16BYTES = 0x00500000, - IMAGE_SCN_ALIGN_32BYTES = 0x00600000, - IMAGE_SCN_ALIGN_64BYTES = 0x00700000, - IMAGE_SCN_ALIGN_128BYTES = 0x00800000, - IMAGE_SCN_ALIGN_256BYTES = 0x00900000, - IMAGE_SCN_ALIGN_512BYTES = 0x00A00000, - IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000, - IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000, - IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000, - IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000, - IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000, - IMAGE_SCN_MEM_DISCARDABLE = 0x02000000, - IMAGE_SCN_MEM_NOT_CACHED = 0x04000000, - IMAGE_SCN_MEM_NOT_PAGED = 0x08000000, - IMAGE_SCN_MEM_SHARED = 0x10000000, - IMAGE_SCN_MEM_EXECUTE = 0x20000000, - IMAGE_SCN_MEM_READ = 0x40000000, - IMAGE_SCN_MEM_WRITE = 0x80000000; + IMAGE_SCN_TYPE_REG = 0x00000000, + IMAGE_SCN_TYPE_DSECT = 0x00000001, + IMAGE_SCN_TYPE_NOLOAD = 0x00000002, + IMAGE_SCN_TYPE_GROUP = 0x00000004, + IMAGE_SCN_TYPE_NO_PAD = 0x00000008, + IMAGE_SCN_TYPE_COPY = 0x00000010, + IMAGE_SCN_CNT_CODE = 0x00000020, + IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040, + IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, + IMAGE_SCN_LNK_OTHER = 0x00000100, + IMAGE_SCN_LNK_INFO = 0x00000200, + IMAGE_SCN_TYPE_OVER = 0x00000400, + IMAGE_SCN_LNK_REMOVE = 0x00000800, + IMAGE_SCN_LNK_COMDAT = 0x00001000, + IMAGE_SCN_MEM_FARDATA = 0x00008000, + IMAGE_SCN_GPREL = 0x00008000, + IMAGE_SCN_MEM_PURGEABLE = 0x00020000, + IMAGE_SCN_MEM_16BIT = 0x00020000, + IMAGE_SCN_MEM_LOCKED = 0x00040000, + IMAGE_SCN_MEM_PRELOAD = 0x00080000, + IMAGE_SCN_ALIGN_1BYTES = 0x00100000, + IMAGE_SCN_ALIGN_2BYTES = 0x00200000, + IMAGE_SCN_ALIGN_4BYTES = 0x00300000, + IMAGE_SCN_ALIGN_8BYTES = 0x00400000, + IMAGE_SCN_ALIGN_16BYTES = 0x00500000, + IMAGE_SCN_ALIGN_32BYTES = 0x00600000, + IMAGE_SCN_ALIGN_64BYTES = 0x00700000, + IMAGE_SCN_ALIGN_128BYTES = 0x00800000, + IMAGE_SCN_ALIGN_256BYTES = 0x00900000, + IMAGE_SCN_ALIGN_512BYTES = 0x00A00000, + IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000, + IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000, + IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000, + IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000, + IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000, + IMAGE_SCN_MEM_DISCARDABLE = 0x02000000, + IMAGE_SCN_MEM_NOT_CACHED = 0x04000000, + IMAGE_SCN_MEM_NOT_PAGED = 0x08000000, + IMAGE_SCN_MEM_SHARED = 0x10000000, + IMAGE_SCN_MEM_EXECUTE = 0x20000000, + IMAGE_SCN_MEM_READ = 0x40000000, + IMAGE_SCN_MEM_WRITE = 0x80000000; /* The following constants are mostlydocumented at * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/pecoff.doc * but don't seem to be defined in the HTML docs. */ enum : SHORT { - IMAGE_SYM_UNDEFINED = 0, - IMAGE_SYM_ABSOLUTE = -1, - IMAGE_SYM_DEBUG = -2 + IMAGE_SYM_UNDEFINED = 0, + IMAGE_SYM_ABSOLUTE = -1, + IMAGE_SYM_DEBUG = -2 } enum : ubyte { - IMAGE_SYM_TYPE_NULL, - IMAGE_SYM_TYPE_VOID, - IMAGE_SYM_TYPE_CHAR, - IMAGE_SYM_TYPE_SHORT, - IMAGE_SYM_TYPE_INT, - IMAGE_SYM_TYPE_LONG, - IMAGE_SYM_TYPE_FLOAT, - IMAGE_SYM_TYPE_DOUBLE, - IMAGE_SYM_TYPE_STRUCT, - IMAGE_SYM_TYPE_UNION, - IMAGE_SYM_TYPE_ENUM, - IMAGE_SYM_TYPE_MOE, - IMAGE_SYM_TYPE_BYTE, - IMAGE_SYM_TYPE_WORD, - IMAGE_SYM_TYPE_UINT, - IMAGE_SYM_TYPE_DWORD // = 15 + IMAGE_SYM_TYPE_NULL, + IMAGE_SYM_TYPE_VOID, + IMAGE_SYM_TYPE_CHAR, + IMAGE_SYM_TYPE_SHORT, + IMAGE_SYM_TYPE_INT, + IMAGE_SYM_TYPE_LONG, + IMAGE_SYM_TYPE_FLOAT, + IMAGE_SYM_TYPE_DOUBLE, + IMAGE_SYM_TYPE_STRUCT, + IMAGE_SYM_TYPE_UNION, + IMAGE_SYM_TYPE_ENUM, + IMAGE_SYM_TYPE_MOE, + IMAGE_SYM_TYPE_BYTE, + IMAGE_SYM_TYPE_WORD, + IMAGE_SYM_TYPE_UINT, + IMAGE_SYM_TYPE_DWORD // = 15 } const IMAGE_SYM_TYPE_PCODE = 32768; // ??? enum : ubyte { - IMAGE_SYM_DTYPE_NULL, - IMAGE_SYM_DTYPE_POINTER, - IMAGE_SYM_DTYPE_FUNCTION, - IMAGE_SYM_DTYPE_ARRAY + IMAGE_SYM_DTYPE_NULL, + IMAGE_SYM_DTYPE_POINTER, + IMAGE_SYM_DTYPE_FUNCTION, + IMAGE_SYM_DTYPE_ARRAY } enum : BYTE { - IMAGE_SYM_CLASS_END_OF_FUNCTION = 0xFF, - IMAGE_SYM_CLASS_NULL = 0, - IMAGE_SYM_CLASS_AUTOMATIC, - IMAGE_SYM_CLASS_EXTERNAL, - IMAGE_SYM_CLASS_STATIC, - IMAGE_SYM_CLASS_REGISTER, - IMAGE_SYM_CLASS_EXTERNAL_DEF, - IMAGE_SYM_CLASS_LABEL, - IMAGE_SYM_CLASS_UNDEFINED_LABEL, - IMAGE_SYM_CLASS_MEMBER_OF_STRUCT, - IMAGE_SYM_CLASS_ARGUMENT, - IMAGE_SYM_CLASS_STRUCT_TAG, - IMAGE_SYM_CLASS_MEMBER_OF_UNION, - IMAGE_SYM_CLASS_UNION_TAG, - IMAGE_SYM_CLASS_TYPE_DEFINITION, - IMAGE_SYM_CLASS_UNDEFINED_STATIC, - IMAGE_SYM_CLASS_ENUM_TAG, - IMAGE_SYM_CLASS_MEMBER_OF_ENUM, - IMAGE_SYM_CLASS_REGISTER_PARAM, - IMAGE_SYM_CLASS_BIT_FIELD, // = 18 - IMAGE_SYM_CLASS_FAR_EXTERNAL = 68, - IMAGE_SYM_CLASS_BLOCK = 100, - IMAGE_SYM_CLASS_FUNCTION, - IMAGE_SYM_CLASS_END_OF_STRUCT, - IMAGE_SYM_CLASS_FILE, - IMAGE_SYM_CLASS_SECTION, - IMAGE_SYM_CLASS_WEAK_EXTERNAL,// = 105 - IMAGE_SYM_CLASS_CLR_TOKEN = 107 + IMAGE_SYM_CLASS_END_OF_FUNCTION = 0xFF, + IMAGE_SYM_CLASS_NULL = 0, + IMAGE_SYM_CLASS_AUTOMATIC, + IMAGE_SYM_CLASS_EXTERNAL, + IMAGE_SYM_CLASS_STATIC, + IMAGE_SYM_CLASS_REGISTER, + IMAGE_SYM_CLASS_EXTERNAL_DEF, + IMAGE_SYM_CLASS_LABEL, + IMAGE_SYM_CLASS_UNDEFINED_LABEL, + IMAGE_SYM_CLASS_MEMBER_OF_STRUCT, + IMAGE_SYM_CLASS_ARGUMENT, + IMAGE_SYM_CLASS_STRUCT_TAG, + IMAGE_SYM_CLASS_MEMBER_OF_UNION, + IMAGE_SYM_CLASS_UNION_TAG, + IMAGE_SYM_CLASS_TYPE_DEFINITION, + IMAGE_SYM_CLASS_UNDEFINED_STATIC, + IMAGE_SYM_CLASS_ENUM_TAG, + IMAGE_SYM_CLASS_MEMBER_OF_ENUM, + IMAGE_SYM_CLASS_REGISTER_PARAM, + IMAGE_SYM_CLASS_BIT_FIELD, // = 18 + IMAGE_SYM_CLASS_FAR_EXTERNAL = 68, + IMAGE_SYM_CLASS_BLOCK = 100, + IMAGE_SYM_CLASS_FUNCTION, + IMAGE_SYM_CLASS_END_OF_STRUCT, + IMAGE_SYM_CLASS_FILE, + IMAGE_SYM_CLASS_SECTION, + IMAGE_SYM_CLASS_WEAK_EXTERNAL,// = 105 + IMAGE_SYM_CLASS_CLR_TOKEN = 107 } enum : BYTE { - IMAGE_COMDAT_SELECT_NODUPLICATES = 1, - IMAGE_COMDAT_SELECT_ANY, - IMAGE_COMDAT_SELECT_SAME_SIZE, - IMAGE_COMDAT_SELECT_EXACT_MATCH, - IMAGE_COMDAT_SELECT_ASSOCIATIVE, - IMAGE_COMDAT_SELECT_LARGEST, - IMAGE_COMDAT_SELECT_NEWEST // = 7 + IMAGE_COMDAT_SELECT_NODUPLICATES = 1, + IMAGE_COMDAT_SELECT_ANY, + IMAGE_COMDAT_SELECT_SAME_SIZE, + IMAGE_COMDAT_SELECT_EXACT_MATCH, + IMAGE_COMDAT_SELECT_ASSOCIATIVE, + IMAGE_COMDAT_SELECT_LARGEST, + IMAGE_COMDAT_SELECT_NEWEST // = 7 } enum : DWORD { - IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1, - IMAGE_WEAK_EXTERN_SEARCH_LIBRARY, - IMAGE_WEAK_EXTERN_SEARCH_ALIAS + IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1, + IMAGE_WEAK_EXTERN_SEARCH_LIBRARY, + IMAGE_WEAK_EXTERN_SEARCH_ALIAS } enum : WORD { - IMAGE_REL_I386_ABSOLUTE = 0x0000, - IMAGE_REL_I386_DIR16 = 0x0001, - IMAGE_REL_I386_REL16 = 0x0002, - IMAGE_REL_I386_DIR32 = 0x0006, - IMAGE_REL_I386_DIR32NB = 0x0007, - IMAGE_REL_I386_SEG12 = 0x0009, - IMAGE_REL_I386_SECTION = 0x000A, - IMAGE_REL_I386_SECREL = 0x000B, - IMAGE_REL_I386_TOKEN = 0x000C, - IMAGE_REL_I386_SECREL7 = 0x000D, - IMAGE_REL_I386_REL32 = 0x0014 + IMAGE_REL_I386_ABSOLUTE = 0x0000, + IMAGE_REL_I386_DIR16 = 0x0001, + IMAGE_REL_I386_REL16 = 0x0002, + IMAGE_REL_I386_DIR32 = 0x0006, + IMAGE_REL_I386_DIR32NB = 0x0007, + IMAGE_REL_I386_SEG12 = 0x0009, + IMAGE_REL_I386_SECTION = 0x000A, + IMAGE_REL_I386_SECREL = 0x000B, + IMAGE_REL_I386_TOKEN = 0x000C, + IMAGE_REL_I386_SECREL7 = 0x000D, + IMAGE_REL_I386_REL32 = 0x0014 } enum : WORD { - IMAGE_REL_AMD64_ABSOLUTE = 0x0000, - IMAGE_REL_AMD64_ADDR64 = 0x0001, - IMAGE_REL_AMD64_ADDR32 = 0x0002, - IMAGE_REL_AMD64_ADDR32NB = 0x0003, - IMAGE_REL_AMD64_REL32 = 0x0004, - IMAGE_REL_AMD64_REL32_1 = 0x0005, - IMAGE_REL_AMD64_REL32_2 = 0x0006, - IMAGE_REL_AMD64_REL32_3 = 0x0007, - IMAGE_REL_AMD64_REL32_4 = 0x0008, - IMAGE_REL_AMD64_REL32_5 = 0x0009, - IMAGE_REL_AMD64_SECTION = 0x000A, - IMAGE_REL_AMD64_SECREL = 0x000B, - IMAGE_REL_AMD64_SECREL7 = 0x000C, - IMAGE_REL_AMD64_TOKEN = 0x000D, - IMAGE_REL_AMD64_SREL32 = 0x000E, - IMAGE_REL_AMD64_PAIR = 0x000F, - IMAGE_REL_AMD64_SSPAN32 = 0x0010 + IMAGE_REL_AMD64_ABSOLUTE = 0x0000, + IMAGE_REL_AMD64_ADDR64 = 0x0001, + IMAGE_REL_AMD64_ADDR32 = 0x0002, + IMAGE_REL_AMD64_ADDR32NB = 0x0003, + IMAGE_REL_AMD64_REL32 = 0x0004, + IMAGE_REL_AMD64_REL32_1 = 0x0005, + IMAGE_REL_AMD64_REL32_2 = 0x0006, + IMAGE_REL_AMD64_REL32_3 = 0x0007, + IMAGE_REL_AMD64_REL32_4 = 0x0008, + IMAGE_REL_AMD64_REL32_5 = 0x0009, + IMAGE_REL_AMD64_SECTION = 0x000A, + IMAGE_REL_AMD64_SECREL = 0x000B, + IMAGE_REL_AMD64_SECREL7 = 0x000C, + IMAGE_REL_AMD64_TOKEN = 0x000D, + IMAGE_REL_AMD64_SREL32 = 0x000E, + IMAGE_REL_AMD64_PAIR = 0x000F, + IMAGE_REL_AMD64_SSPAN32 = 0x0010 } enum : WORD { - IMAGE_REL_IA64_ABSOLUTE = 0x0000, - IMAGE_REL_IA64_IMM14 = 0x0001, - IMAGE_REL_IA64_IMM22 = 0x0002, - IMAGE_REL_IA64_IMM64 = 0x0003, - IMAGE_REL_IA64_DIR32 = 0x0004, - IMAGE_REL_IA64_DIR64 = 0x0005, - IMAGE_REL_IA64_PCREL21B = 0x0006, - IMAGE_REL_IA64_PCREL21M = 0x0007, - IMAGE_REL_IA64_PCREL21F = 0x0008, - IMAGE_REL_IA64_GPREL22 = 0x0009, - IMAGE_REL_IA64_LTOFF22 = 0x000A, - IMAGE_REL_IA64_SECTION = 0x000B, - IMAGE_REL_IA64_SECREL22 = 0x000C, - IMAGE_REL_IA64_SECREL64I = 0x000D, - IMAGE_REL_IA64_SECREL32 = 0x000E, - IMAGE_REL_IA64_DIR32NB = 0x0010, - IMAGE_REL_IA64_SREL14 = 0x0011, - IMAGE_REL_IA64_SREL22 = 0x0012, - IMAGE_REL_IA64_SREL32 = 0x0013, - IMAGE_REL_IA64_UREL32 = 0x0014, - IMAGE_REL_IA64_PCREL60X = 0x0015, - IMAGE_REL_IA64_PCREL60B = 0x0016, - IMAGE_REL_IA64_PCREL60F = 0x0017, - IMAGE_REL_IA64_PCREL60I = 0x0018, - IMAGE_REL_IA64_PCREL60M = 0x0019, - IMAGE_REL_IA64_IMMGPREL64 = 0x001A, - IMAGE_REL_IA64_TOKEN = 0x001B, - IMAGE_REL_IA64_GPREL32 = 0x001C, - IMAGE_REL_IA64_ADDEND = 0x001F + IMAGE_REL_IA64_ABSOLUTE = 0x0000, + IMAGE_REL_IA64_IMM14 = 0x0001, + IMAGE_REL_IA64_IMM22 = 0x0002, + IMAGE_REL_IA64_IMM64 = 0x0003, + IMAGE_REL_IA64_DIR32 = 0x0004, + IMAGE_REL_IA64_DIR64 = 0x0005, + IMAGE_REL_IA64_PCREL21B = 0x0006, + IMAGE_REL_IA64_PCREL21M = 0x0007, + IMAGE_REL_IA64_PCREL21F = 0x0008, + IMAGE_REL_IA64_GPREL22 = 0x0009, + IMAGE_REL_IA64_LTOFF22 = 0x000A, + IMAGE_REL_IA64_SECTION = 0x000B, + IMAGE_REL_IA64_SECREL22 = 0x000C, + IMAGE_REL_IA64_SECREL64I = 0x000D, + IMAGE_REL_IA64_SECREL32 = 0x000E, + IMAGE_REL_IA64_DIR32NB = 0x0010, + IMAGE_REL_IA64_SREL14 = 0x0011, + IMAGE_REL_IA64_SREL22 = 0x0012, + IMAGE_REL_IA64_SREL32 = 0x0013, + IMAGE_REL_IA64_UREL32 = 0x0014, + IMAGE_REL_IA64_PCREL60X = 0x0015, + IMAGE_REL_IA64_PCREL60B = 0x0016, + IMAGE_REL_IA64_PCREL60F = 0x0017, + IMAGE_REL_IA64_PCREL60I = 0x0018, + IMAGE_REL_IA64_PCREL60M = 0x0019, + IMAGE_REL_IA64_IMMGPREL64 = 0x001A, + IMAGE_REL_IA64_TOKEN = 0x001B, + IMAGE_REL_IA64_GPREL32 = 0x001C, + IMAGE_REL_IA64_ADDEND = 0x001F } enum : WORD { - IMAGE_REL_SH3_ABSOLUTE = 0x0000, - IMAGE_REL_SH3_DIRECT16 = 0x0001, - IMAGE_REL_SH3_DIRECT32 = 0x0002, - IMAGE_REL_SH3_DIRECT8 = 0x0003, - IMAGE_REL_SH3_DIRECT8_WORD = 0x0004, - IMAGE_REL_SH3_DIRECT8_LONG = 0x0005, - IMAGE_REL_SH3_DIRECT4 = 0x0006, - IMAGE_REL_SH3_DIRECT4_WORD = 0x0007, - IMAGE_REL_SH3_DIRECT4_LONG = 0x0008, - IMAGE_REL_SH3_PCREL8_WORD = 0x0009, - IMAGE_REL_SH3_PCREL8_LONG = 0x000A, - IMAGE_REL_SH3_PCREL12_WORD = 0x000B, - IMAGE_REL_SH3_STARTOF_SECTION = 0x000C, - IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D, - IMAGE_REL_SH3_SECTION = 0x000E, - IMAGE_REL_SH3_SECREL = 0x000F, - IMAGE_REL_SH3_DIRECT32_NB = 0x0010, - IMAGE_REL_SH3_GPREL4_LONG = 0x0011, - IMAGE_REL_SH3_TOKEN = 0x0012, - IMAGE_REL_SHM_PCRELPT = 0x0013, - IMAGE_REL_SHM_REFLO = 0x0014, - IMAGE_REL_SHM_REFHALF = 0x0015, - IMAGE_REL_SHM_RELLO = 0x0016, - IMAGE_REL_SHM_RELHALF = 0x0017, - IMAGE_REL_SHM_PAIR = 0x0018, - IMAGE_REL_SHM_NOMODE = 0x8000 + IMAGE_REL_SH3_ABSOLUTE = 0x0000, + IMAGE_REL_SH3_DIRECT16 = 0x0001, + IMAGE_REL_SH3_DIRECT32 = 0x0002, + IMAGE_REL_SH3_DIRECT8 = 0x0003, + IMAGE_REL_SH3_DIRECT8_WORD = 0x0004, + IMAGE_REL_SH3_DIRECT8_LONG = 0x0005, + IMAGE_REL_SH3_DIRECT4 = 0x0006, + IMAGE_REL_SH3_DIRECT4_WORD = 0x0007, + IMAGE_REL_SH3_DIRECT4_LONG = 0x0008, + IMAGE_REL_SH3_PCREL8_WORD = 0x0009, + IMAGE_REL_SH3_PCREL8_LONG = 0x000A, + IMAGE_REL_SH3_PCREL12_WORD = 0x000B, + IMAGE_REL_SH3_STARTOF_SECTION = 0x000C, + IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D, + IMAGE_REL_SH3_SECTION = 0x000E, + IMAGE_REL_SH3_SECREL = 0x000F, + IMAGE_REL_SH3_DIRECT32_NB = 0x0010, + IMAGE_REL_SH3_GPREL4_LONG = 0x0011, + IMAGE_REL_SH3_TOKEN = 0x0012, + IMAGE_REL_SHM_PCRELPT = 0x0013, + IMAGE_REL_SHM_REFLO = 0x0014, + IMAGE_REL_SHM_REFHALF = 0x0015, + IMAGE_REL_SHM_RELLO = 0x0016, + IMAGE_REL_SHM_RELHALF = 0x0017, + IMAGE_REL_SHM_PAIR = 0x0018, + IMAGE_REL_SHM_NOMODE = 0x8000 } enum : WORD { - IMAGE_REL_M32R_ABSOLUTE = 0x0000, - IMAGE_REL_M32R_ADDR32 = 0x0001, - IMAGE_REL_M32R_ADDR32NB = 0x0002, - IMAGE_REL_M32R_ADDR24 = 0x0003, - IMAGE_REL_M32R_GPREL16 = 0x0004, - IMAGE_REL_M32R_PCREL24 = 0x0005, - IMAGE_REL_M32R_PCREL16 = 0x0006, - IMAGE_REL_M32R_PCREL8 = 0x0007, - IMAGE_REL_M32R_REFHALF = 0x0008, - IMAGE_REL_M32R_REFHI = 0x0009, - IMAGE_REL_M32R_REFLO = 0x000A, - IMAGE_REL_M32R_PAIR = 0x000B, - IMAGE_REL_M32R_SECTION = 0x000C, - IMAGE_REL_M32R_SECREL = 0x000D, - IMAGE_REL_M32R_TOKEN = 0x000E + IMAGE_REL_M32R_ABSOLUTE = 0x0000, + IMAGE_REL_M32R_ADDR32 = 0x0001, + IMAGE_REL_M32R_ADDR32NB = 0x0002, + IMAGE_REL_M32R_ADDR24 = 0x0003, + IMAGE_REL_M32R_GPREL16 = 0x0004, + IMAGE_REL_M32R_PCREL24 = 0x0005, + IMAGE_REL_M32R_PCREL16 = 0x0006, + IMAGE_REL_M32R_PCREL8 = 0x0007, + IMAGE_REL_M32R_REFHALF = 0x0008, + IMAGE_REL_M32R_REFHI = 0x0009, + IMAGE_REL_M32R_REFLO = 0x000A, + IMAGE_REL_M32R_PAIR = 0x000B, + IMAGE_REL_M32R_SECTION = 0x000C, + IMAGE_REL_M32R_SECREL = 0x000D, + IMAGE_REL_M32R_TOKEN = 0x000E } enum : WORD { - IMAGE_REL_MIPS_ABSOLUTE = 0x0000, - IMAGE_REL_MIPS_REFHALF = 0x0001, - IMAGE_REL_MIPS_REFWORD = 0x0002, - IMAGE_REL_MIPS_JMPADDR = 0x0003, - IMAGE_REL_MIPS_REFHI = 0x0004, - IMAGE_REL_MIPS_REFLO = 0x0005, - IMAGE_REL_MIPS_GPREL = 0x0006, - IMAGE_REL_MIPS_LITERAL = 0x0007, - IMAGE_REL_MIPS_SECTION = 0x000A, - IMAGE_REL_MIPS_SECREL = 0x000B, - IMAGE_REL_MIPS_SECRELLO = 0x000C, - IMAGE_REL_MIPS_SECRELHI = 0x000D, - IMAGE_REL_MIPS_JMPADDR16 = 0x0010, - IMAGE_REL_MIPS_REFWORDNB = 0x0022, - IMAGE_REL_MIPS_PAIR = 0x0025 + IMAGE_REL_MIPS_ABSOLUTE = 0x0000, + IMAGE_REL_MIPS_REFHALF = 0x0001, + IMAGE_REL_MIPS_REFWORD = 0x0002, + IMAGE_REL_MIPS_JMPADDR = 0x0003, + IMAGE_REL_MIPS_REFHI = 0x0004, + IMAGE_REL_MIPS_REFLO = 0x0005, + IMAGE_REL_MIPS_GPREL = 0x0006, + IMAGE_REL_MIPS_LITERAL = 0x0007, + IMAGE_REL_MIPS_SECTION = 0x000A, + IMAGE_REL_MIPS_SECREL = 0x000B, + IMAGE_REL_MIPS_SECRELLO = 0x000C, + IMAGE_REL_MIPS_SECRELHI = 0x000D, + IMAGE_REL_MIPS_JMPADDR16 = 0x0010, + IMAGE_REL_MIPS_REFWORDNB = 0x0022, + IMAGE_REL_MIPS_PAIR = 0x0025 } enum : WORD { - IMAGE_REL_ALPHA_ABSOLUTE, - IMAGE_REL_ALPHA_REFLONG, - IMAGE_REL_ALPHA_REFQUAD, - IMAGE_REL_ALPHA_GPREL32, - IMAGE_REL_ALPHA_LITERAL, - IMAGE_REL_ALPHA_LITUSE, - IMAGE_REL_ALPHA_GPDISP, - IMAGE_REL_ALPHA_BRADDR, - IMAGE_REL_ALPHA_HINT, - IMAGE_REL_ALPHA_INLINE_REFLONG, - IMAGE_REL_ALPHA_REFHI, - IMAGE_REL_ALPHA_REFLO, - IMAGE_REL_ALPHA_PAIR, - IMAGE_REL_ALPHA_MATCH, - IMAGE_REL_ALPHA_SECTION, - IMAGE_REL_ALPHA_SECREL, - IMAGE_REL_ALPHA_REFLONGNB, - IMAGE_REL_ALPHA_SECRELLO, - IMAGE_REL_ALPHA_SECRELHI // = 18 + IMAGE_REL_ALPHA_ABSOLUTE, + IMAGE_REL_ALPHA_REFLONG, + IMAGE_REL_ALPHA_REFQUAD, + IMAGE_REL_ALPHA_GPREL32, + IMAGE_REL_ALPHA_LITERAL, + IMAGE_REL_ALPHA_LITUSE, + IMAGE_REL_ALPHA_GPDISP, + IMAGE_REL_ALPHA_BRADDR, + IMAGE_REL_ALPHA_HINT, + IMAGE_REL_ALPHA_INLINE_REFLONG, + IMAGE_REL_ALPHA_REFHI, + IMAGE_REL_ALPHA_REFLO, + IMAGE_REL_ALPHA_PAIR, + IMAGE_REL_ALPHA_MATCH, + IMAGE_REL_ALPHA_SECTION, + IMAGE_REL_ALPHA_SECREL, + IMAGE_REL_ALPHA_REFLONGNB, + IMAGE_REL_ALPHA_SECRELLO, + IMAGE_REL_ALPHA_SECRELHI // = 18 } enum : WORD { - IMAGE_REL_PPC_ABSOLUTE, - IMAGE_REL_PPC_ADDR64, - IMAGE_REL_PPC_ADDR32, - IMAGE_REL_PPC_ADDR24, - IMAGE_REL_PPC_ADDR16, - IMAGE_REL_PPC_ADDR14, - IMAGE_REL_PPC_REL24, - IMAGE_REL_PPC_REL14, - IMAGE_REL_PPC_TOCREL16, - IMAGE_REL_PPC_TOCREL14, - IMAGE_REL_PPC_ADDR32NB, - IMAGE_REL_PPC_SECREL, - IMAGE_REL_PPC_SECTION, - IMAGE_REL_PPC_IFGLUE, - IMAGE_REL_PPC_IMGLUE, - IMAGE_REL_PPC_SECREL16, - IMAGE_REL_PPC_REFHI, - IMAGE_REL_PPC_REFLO, - IMAGE_REL_PPC_PAIR // = 18 + IMAGE_REL_PPC_ABSOLUTE, + IMAGE_REL_PPC_ADDR64, + IMAGE_REL_PPC_ADDR32, + IMAGE_REL_PPC_ADDR24, + IMAGE_REL_PPC_ADDR16, + IMAGE_REL_PPC_ADDR14, + IMAGE_REL_PPC_REL24, + IMAGE_REL_PPC_REL14, + IMAGE_REL_PPC_TOCREL16, + IMAGE_REL_PPC_TOCREL14, + IMAGE_REL_PPC_ADDR32NB, + IMAGE_REL_PPC_SECREL, + IMAGE_REL_PPC_SECTION, + IMAGE_REL_PPC_IFGLUE, + IMAGE_REL_PPC_IMGLUE, + IMAGE_REL_PPC_SECREL16, + IMAGE_REL_PPC_REFHI, + IMAGE_REL_PPC_REFLO, + IMAGE_REL_PPC_PAIR // = 18 } // ??? @@ -1526,23 +1526,23 @@ const IMAGE_REL_PPC_BRNTAKEN = 0x0400; const IMAGE_REL_PPC_TOCDEFN = 0x0800; enum { - IMAGE_REL_BASED_ABSOLUTE, - IMAGE_REL_BASED_HIGH, - IMAGE_REL_BASED_LOW, - IMAGE_REL_BASED_HIGHLOW, - IMAGE_REL_BASED_HIGHADJ, - IMAGE_REL_BASED_MIPS_JMPADDR + IMAGE_REL_BASED_ABSOLUTE, + IMAGE_REL_BASED_HIGH, + IMAGE_REL_BASED_LOW, + IMAGE_REL_BASED_HIGHLOW, + IMAGE_REL_BASED_HIGHADJ, + IMAGE_REL_BASED_MIPS_JMPADDR } // End of constants documented in pecoff.doc const size_t IMAGE_ARCHIVE_START_SIZE = 8; const TCHAR[] - IMAGE_ARCHIVE_START = "!\n", - IMAGE_ARCHIVE_END = "`\n", - IMAGE_ARCHIVE_PAD = "\n", - IMAGE_ARCHIVE_LINKER_MEMBER = "/ ", - IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; + IMAGE_ARCHIVE_START = "!\n", + IMAGE_ARCHIVE_END = "`\n", + IMAGE_ARCHIVE_PAD = "\n", + IMAGE_ARCHIVE_LINKER_MEMBER = "/ ", + IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; const IMAGE_ORDINAL_FLAG32 = 0x80000000; @@ -1550,13 +1550,13 @@ ulong IMAGE_ORDINAL64(ulong Ordinal) { return Ordinal & 0xFFFF; } uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; } bool IMAGE_SNAP_BY_ORDINAL32(uint Ordinal) { - return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; + return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; } const ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; bool IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal) { - return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; + return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; } // ??? @@ -1564,23 +1564,23 @@ const IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000; const IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000; enum : DWORD { - IMAGE_DEBUG_TYPE_UNKNOWN, - IMAGE_DEBUG_TYPE_COFF, - IMAGE_DEBUG_TYPE_CODEVIEW, - IMAGE_DEBUG_TYPE_FPO, - IMAGE_DEBUG_TYPE_MISC, - IMAGE_DEBUG_TYPE_EXCEPTION, - IMAGE_DEBUG_TYPE_FIXUP, - IMAGE_DEBUG_TYPE_OMAP_TO_SRC, - IMAGE_DEBUG_TYPE_OMAP_FROM_SRC, - IMAGE_DEBUG_TYPE_BORLAND // = 9 + IMAGE_DEBUG_TYPE_UNKNOWN, + IMAGE_DEBUG_TYPE_COFF, + IMAGE_DEBUG_TYPE_CODEVIEW, + IMAGE_DEBUG_TYPE_FPO, + IMAGE_DEBUG_TYPE_MISC, + IMAGE_DEBUG_TYPE_EXCEPTION, + IMAGE_DEBUG_TYPE_FIXUP, + IMAGE_DEBUG_TYPE_OMAP_TO_SRC, + IMAGE_DEBUG_TYPE_OMAP_FROM_SRC, + IMAGE_DEBUG_TYPE_BORLAND // = 9 } enum : ubyte { - FRAME_FPO, - FRAME_TRAP, - FRAME_TSS, - FRAME_NONFPO + FRAME_FPO, + FRAME_TRAP, + FRAME_TSS, + FRAME_NONFPO } // ??? @@ -1595,70 +1595,70 @@ const N_BTSHFT = 4; const N_TSHIFT = 2; const int - IS_TEXT_UNICODE_ASCII16 = 0x0001, - IS_TEXT_UNICODE_STATISTICS = 0x0002, - IS_TEXT_UNICODE_CONTROLS = 0x0004, - IS_TEXT_UNICODE_SIGNATURE = 0x0008, - IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010, - IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020, - IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040, - IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080, - IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100, - IS_TEXT_UNICODE_ODD_LENGTH = 0x0200, - IS_TEXT_UNICODE_NULL_BYTES = 0x1000, - IS_TEXT_UNICODE_UNICODE_MASK = 0x000F, - IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0, - IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00, - IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000; + IS_TEXT_UNICODE_ASCII16 = 0x0001, + IS_TEXT_UNICODE_STATISTICS = 0x0002, + IS_TEXT_UNICODE_CONTROLS = 0x0004, + IS_TEXT_UNICODE_SIGNATURE = 0x0008, + IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010, + IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020, + IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040, + IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080, + IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100, + IS_TEXT_UNICODE_ODD_LENGTH = 0x0200, + IS_TEXT_UNICODE_NULL_BYTES = 0x1000, + IS_TEXT_UNICODE_UNICODE_MASK = 0x000F, + IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0, + IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00, + IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000; const DWORD - SERVICE_KERNEL_DRIVER = 0x0001, - SERVICE_FILE_SYSTEM_DRIVER = 0x0002, - SERVICE_ADAPTER = 0x0004, - SERVICE_RECOGNIZER_DRIVER = 0x0008, - SERVICE_WIN32_OWN_PROCESS = 0x0010, - SERVICE_WIN32_SHARE_PROCESS = 0x0020, - SERVICE_INTERACTIVE_PROCESS = 0x0100, - SERVICE_DRIVER = 0x000B, - SERVICE_WIN32 = 0x0030, - SERVICE_TYPE_ALL = 0x013F; + SERVICE_KERNEL_DRIVER = 0x0001, + SERVICE_FILE_SYSTEM_DRIVER = 0x0002, + SERVICE_ADAPTER = 0x0004, + SERVICE_RECOGNIZER_DRIVER = 0x0008, + SERVICE_WIN32_OWN_PROCESS = 0x0010, + SERVICE_WIN32_SHARE_PROCESS = 0x0020, + SERVICE_INTERACTIVE_PROCESS = 0x0100, + SERVICE_DRIVER = 0x000B, + SERVICE_WIN32 = 0x0030, + SERVICE_TYPE_ALL = 0x013F; enum : DWORD { - SERVICE_BOOT_START = 0, - SERVICE_SYSTEM_START = 1, - SERVICE_AUTO_START = 2, - SERVICE_DEMAND_START = 3, - SERVICE_DISABLED = 4 + SERVICE_BOOT_START = 0, + SERVICE_SYSTEM_START = 1, + SERVICE_AUTO_START = 2, + SERVICE_DEMAND_START = 3, + SERVICE_DISABLED = 4 } enum : DWORD { - SERVICE_ERROR_IGNORE = 0, - SERVICE_ERROR_NORMAL = 1, - SERVICE_ERROR_SEVERE = 2, - SERVICE_ERROR_CRITICAL = 3 + SERVICE_ERROR_IGNORE = 0, + SERVICE_ERROR_NORMAL = 1, + SERVICE_ERROR_SEVERE = 2, + SERVICE_ERROR_CRITICAL = 3 } const uint - SE_OWNER_DEFAULTED = 0x0001, - SE_GROUP_DEFAULTED = 0x0002, - SE_DACL_PRESENT = 0x0004, - SE_DACL_DEFAULTED = 0x0008, - SE_SACL_PRESENT = 0x0010, - SE_SACL_DEFAULTED = 0x0020, - SE_DACL_AUTO_INHERIT_REQ = 0x0100, - SE_SACL_AUTO_INHERIT_REQ = 0x0200, - SE_DACL_AUTO_INHERITED = 0x0400, - SE_SACL_AUTO_INHERITED = 0x0800, - SE_DACL_PROTECTED = 0x1000, - SE_SACL_PROTECTED = 0x2000, - SE_SELF_RELATIVE = 0x8000; + SE_OWNER_DEFAULTED = 0x0001, + SE_GROUP_DEFAULTED = 0x0002, + SE_DACL_PRESENT = 0x0004, + SE_DACL_DEFAULTED = 0x0008, + SE_SACL_PRESENT = 0x0010, + SE_SACL_DEFAULTED = 0x0020, + SE_DACL_AUTO_INHERIT_REQ = 0x0100, + SE_SACL_AUTO_INHERIT_REQ = 0x0200, + SE_DACL_AUTO_INHERITED = 0x0400, + SE_SACL_AUTO_INHERITED = 0x0800, + SE_DACL_PROTECTED = 0x1000, + SE_SACL_PROTECTED = 0x2000, + SE_SELF_RELATIVE = 0x8000; enum SECURITY_IMPERSONATION_LEVEL { - SecurityAnonymous, - SecurityIdentification, - SecurityImpersonation, - SecurityDelegation + SecurityAnonymous, + SecurityIdentification, + SecurityImpersonation, + SecurityDelegation } alias SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; @@ -1668,36 +1668,36 @@ alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; const size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; const DWORD - SECURITY_DESCRIPTOR_REVISION = 1, - SECURITY_DESCRIPTOR_REVISION1 = 1; + SECURITY_DESCRIPTOR_REVISION = 1, + SECURITY_DESCRIPTOR_REVISION1 = 1; const DWORD - SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, - SE_PRIVILEGE_ENABLED = 0x00000002, - SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; + SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, + SE_PRIVILEGE_ENABLED = 0x00000002, + SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; const DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; const SECURITY_IMPERSONATION_LEVEL - SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, - DEFAULT_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; + SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, + DEFAULT_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; const BOOLEAN - SECURITY_DYNAMIC_TRACKING = true, - SECURITY_STATIC_TRACKING = false; + SECURITY_DYNAMIC_TRACKING = true, + SECURITY_STATIC_TRACKING = false; // also in ddk/ntifs.h const DWORD - TOKEN_ASSIGN_PRIMARY = 0x0001, - TOKEN_DUPLICATE = 0x0002, - TOKEN_IMPERSONATE = 0x0004, - TOKEN_QUERY = 0x0008, - TOKEN_QUERY_SOURCE = 0x0010, - TOKEN_ADJUST_PRIVILEGES = 0x0020, - TOKEN_ADJUST_GROUPS = 0x0040, - TOKEN_ADJUST_DEFAULT = 0x0080, - - TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED + TOKEN_ASSIGN_PRIMARY = 0x0001, + TOKEN_DUPLICATE = 0x0002, + TOKEN_IMPERSONATE = 0x0004, + TOKEN_QUERY = 0x0008, + TOKEN_QUERY_SOURCE = 0x0010, + TOKEN_ADJUST_PRIVILEGES = 0x0020, + TOKEN_ADJUST_GROUPS = 0x0040, + TOKEN_ADJUST_DEFAULT = 0x0080, + + TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE @@ -1706,207 +1706,207 @@ const DWORD | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT, - TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY, - TOKEN_WRITE = STANDARD_RIGHTS_WRITE + TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY, + TOKEN_WRITE = STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT, - TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE; + TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE; const size_t TOKEN_SOURCE_LENGTH = 8; // end ddk/ntifs.h enum : DWORD { - DLL_PROCESS_DETACH, - DLL_PROCESS_ATTACH, - DLL_THREAD_ATTACH, - DLL_THREAD_DETACH + DLL_PROCESS_DETACH, + DLL_PROCESS_ATTACH, + DLL_THREAD_ATTACH, + DLL_THREAD_DETACH } enum : DWORD { - DBG_CONTINUE = 0x00010002, - DBG_TERMINATE_THREAD = 0x40010003, - DBG_TERMINATE_PROCESS = 0x40010004, - DBG_CONTROL_C = 0x40010005, - DBG_CONTROL_BREAK = 0x40010008, - DBG_EXCEPTION_NOT_HANDLED = 0x80010001 + DBG_CONTINUE = 0x00010002, + DBG_TERMINATE_THREAD = 0x40010003, + DBG_TERMINATE_PROCESS = 0x40010004, + DBG_CONTROL_C = 0x40010005, + DBG_CONTROL_BREAK = 0x40010008, + DBG_EXCEPTION_NOT_HANDLED = 0x80010001 } enum : DWORD { - TAPE_ABSOLUTE_POSITION, - TAPE_LOGICAL_POSITION, - TAPE_PSEUDO_LOGICAL_POSITION + TAPE_ABSOLUTE_POSITION, + TAPE_LOGICAL_POSITION, + TAPE_PSEUDO_LOGICAL_POSITION } enum : DWORD { - TAPE_REWIND, - TAPE_ABSOLUTE_BLOCK, - TAPE_LOGICAL_BLOCK, - TAPE_PSEUDO_LOGICAL_BLOCK, - TAPE_SPACE_END_OF_DATA, - TAPE_SPACE_RELATIVE_BLOCKS, - TAPE_SPACE_FILEMARKS, - TAPE_SPACE_SEQUENTIAL_FMKS, - TAPE_SPACE_SETMARKS, - TAPE_SPACE_SEQUENTIAL_SMKS + TAPE_REWIND, + TAPE_ABSOLUTE_BLOCK, + TAPE_LOGICAL_BLOCK, + TAPE_PSEUDO_LOGICAL_BLOCK, + TAPE_SPACE_END_OF_DATA, + TAPE_SPACE_RELATIVE_BLOCKS, + TAPE_SPACE_FILEMARKS, + TAPE_SPACE_SEQUENTIAL_FMKS, + TAPE_SPACE_SETMARKS, + TAPE_SPACE_SEQUENTIAL_SMKS } const DWORD - TAPE_DRIVE_FIXED = 0x00000001, - TAPE_DRIVE_SELECT = 0x00000002, - TAPE_DRIVE_INITIATOR = 0x00000004, - TAPE_DRIVE_ERASE_SHORT = 0x00000010, - TAPE_DRIVE_ERASE_LONG = 0x00000020, - TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040, - TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080, - TAPE_DRIVE_TAPE_CAPACITY = 0x00000100, - TAPE_DRIVE_TAPE_REMAINING = 0x00000200, - TAPE_DRIVE_FIXED_BLOCK = 0x00000400, - TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800, - TAPE_DRIVE_WRITE_PROTECT = 0x00001000, - TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000, - TAPE_DRIVE_ECC = 0x00010000, - TAPE_DRIVE_COMPRESSION = 0x00020000, - TAPE_DRIVE_PADDING = 0x00040000, - TAPE_DRIVE_REPORT_SMKS = 0x00080000, - TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000, - TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000, - TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000, - TAPE_DRIVE_EJECT_MEDIA = 0x01000000, - TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000, - TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000, - TAPE_DRIVE_RESERVED_BIT = 0x80000000; + TAPE_DRIVE_FIXED = 0x00000001, + TAPE_DRIVE_SELECT = 0x00000002, + TAPE_DRIVE_INITIATOR = 0x00000004, + TAPE_DRIVE_ERASE_SHORT = 0x00000010, + TAPE_DRIVE_ERASE_LONG = 0x00000020, + TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040, + TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080, + TAPE_DRIVE_TAPE_CAPACITY = 0x00000100, + TAPE_DRIVE_TAPE_REMAINING = 0x00000200, + TAPE_DRIVE_FIXED_BLOCK = 0x00000400, + TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800, + TAPE_DRIVE_WRITE_PROTECT = 0x00001000, + TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000, + TAPE_DRIVE_ECC = 0x00010000, + TAPE_DRIVE_COMPRESSION = 0x00020000, + TAPE_DRIVE_PADDING = 0x00040000, + TAPE_DRIVE_REPORT_SMKS = 0x00080000, + TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000, + TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000, + TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000, + TAPE_DRIVE_EJECT_MEDIA = 0x01000000, + TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000, + TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000, + TAPE_DRIVE_RESERVED_BIT = 0x80000000; const DWORD - TAPE_DRIVE_LOAD_UNLOAD = 0x80000001, - TAPE_DRIVE_TENSION = 0x80000002, - TAPE_DRIVE_LOCK_UNLOCK = 0x80000004, - TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008, - TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010, - TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020, - TAPE_DRIVE_TENSION_IMMED = 0x80000040, - TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080, - TAPE_DRIVE_SET_ECC = 0x80000100, - TAPE_DRIVE_SET_COMPRESSION = 0x80000200, - TAPE_DRIVE_SET_PADDING = 0x80000400, - TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800, - TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000, - TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000, - TAPE_DRIVE_LOGICAL_BLK = 0x80004000, - TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000, - TAPE_DRIVE_END_OF_DATA = 0x80010000, - TAPE_DRIVE_RELATIVE_BLKS = 0x80020000, - TAPE_DRIVE_FILEMARKS = 0x80040000, - TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000, - TAPE_DRIVE_SETMARKS = 0x80100000, - TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000, - TAPE_DRIVE_REVERSE_POSITION = 0x80400000, - TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000, - TAPE_DRIVE_WRITE_SETMARKS = 0x81000000, - TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000, - TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000, - TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000, - TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000, - TAPE_DRIVE_FORMAT = 0xA0000000, - TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000, - TAPE_DRIVE_HIGH_FEATURES = 0x80000000; + TAPE_DRIVE_LOAD_UNLOAD = 0x80000001, + TAPE_DRIVE_TENSION = 0x80000002, + TAPE_DRIVE_LOCK_UNLOCK = 0x80000004, + TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008, + TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010, + TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020, + TAPE_DRIVE_TENSION_IMMED = 0x80000040, + TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080, + TAPE_DRIVE_SET_ECC = 0x80000100, + TAPE_DRIVE_SET_COMPRESSION = 0x80000200, + TAPE_DRIVE_SET_PADDING = 0x80000400, + TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800, + TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000, + TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000, + TAPE_DRIVE_LOGICAL_BLK = 0x80004000, + TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000, + TAPE_DRIVE_END_OF_DATA = 0x80010000, + TAPE_DRIVE_RELATIVE_BLKS = 0x80020000, + TAPE_DRIVE_FILEMARKS = 0x80040000, + TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000, + TAPE_DRIVE_SETMARKS = 0x80100000, + TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000, + TAPE_DRIVE_REVERSE_POSITION = 0x80400000, + TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000, + TAPE_DRIVE_WRITE_SETMARKS = 0x81000000, + TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000, + TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000, + TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000, + TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000, + TAPE_DRIVE_FORMAT = 0xA0000000, + TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000, + TAPE_DRIVE_HIGH_FEATURES = 0x80000000; enum : DWORD { - TAPE_FIXED_PARTITIONS = 0, - TAPE_SELECT_PARTITIONS = 1, - TAPE_INITIATOR_PARTITIONS = 2 + TAPE_FIXED_PARTITIONS = 0, + TAPE_SELECT_PARTITIONS = 1, + TAPE_INITIATOR_PARTITIONS = 2 } enum : DWORD { - TAPE_SETMARKS, - TAPE_FILEMARKS, - TAPE_SHORT_FILEMARKS, - TAPE_LONG_FILEMARKS + TAPE_SETMARKS, + TAPE_FILEMARKS, + TAPE_SHORT_FILEMARKS, + TAPE_LONG_FILEMARKS } enum : DWORD { - TAPE_ERASE_SHORT, - TAPE_ERASE_LONG + TAPE_ERASE_SHORT, + TAPE_ERASE_LONG } enum : DWORD { - TAPE_LOAD, - TAPE_UNLOAD, - TAPE_TENSION, - TAPE_LOCK, - TAPE_UNLOCK, - TAPE_FORMAT + TAPE_LOAD, + TAPE_UNLOAD, + TAPE_TENSION, + TAPE_LOCK, + TAPE_UNLOCK, + TAPE_FORMAT } enum : ULONG32 { - VER_PLATFORM_WIN32s, - VER_PLATFORM_WIN32_WINDOWS, - VER_PLATFORM_WIN32_NT + VER_PLATFORM_WIN32s, + VER_PLATFORM_WIN32_WINDOWS, + VER_PLATFORM_WIN32_NT } enum : UCHAR { - VER_NT_WORKSTATION = 1, - VER_NT_DOMAIN_CONTROLLER, - VER_NT_SERVER + VER_NT_WORKSTATION = 1, + VER_NT_DOMAIN_CONTROLLER, + VER_NT_SERVER } const USHORT - VER_SUITE_SMALLBUSINESS = 0x0001, - VER_SUITE_ENTERPRISE = 0x0002, - VER_SUITE_BACKOFFICE = 0x0004, - VER_SUITE_TERMINAL = 0x0010, - VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x0020, - VER_SUITE_EMBEDDEDNT = 0x0040, - VER_SUITE_DATACENTER = 0x0080, - VER_SUITE_SINGLEUSERTS = 0x0100, - VER_SUITE_PERSONAL = 0x0200, - VER_SUITE_BLADE = 0x0400, - VER_SUITE_STORAGE_SERVER = 0x2000, - VER_SUITE_COMPUTE_SERVER = 0x4000; + VER_SUITE_SMALLBUSINESS = 0x0001, + VER_SUITE_ENTERPRISE = 0x0002, + VER_SUITE_BACKOFFICE = 0x0004, + VER_SUITE_TERMINAL = 0x0010, + VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x0020, + VER_SUITE_EMBEDDEDNT = 0x0040, + VER_SUITE_DATACENTER = 0x0080, + VER_SUITE_SINGLEUSERTS = 0x0100, + VER_SUITE_PERSONAL = 0x0200, + VER_SUITE_BLADE = 0x0400, + VER_SUITE_STORAGE_SERVER = 0x2000, + VER_SUITE_COMPUTE_SERVER = 0x4000; const ULONG - WT_EXECUTEDEFAULT = 0x00000000, - WT_EXECUTEINIOTHREAD = 0x00000001, - WT_EXECUTEINWAITTHREAD = 0x00000004, - WT_EXECUTEONLYONCE = 0x00000008, - WT_EXECUTELONGFUNCTION = 0x00000010, - WT_EXECUTEINTIMERTHREAD = 0x00000020, - WT_EXECUTEINPERSISTENTTHREAD = 0x00000080, - WT_TRANSFER_IMPERSONATION = 0x00000100; + WT_EXECUTEDEFAULT = 0x00000000, + WT_EXECUTEINIOTHREAD = 0x00000001, + WT_EXECUTEINWAITTHREAD = 0x00000004, + WT_EXECUTEONLYONCE = 0x00000008, + WT_EXECUTELONGFUNCTION = 0x00000010, + WT_EXECUTEINTIMERTHREAD = 0x00000020, + WT_EXECUTEINPERSISTENTTHREAD = 0x00000080, + WT_TRANSFER_IMPERSONATION = 0x00000100; static if (_WIN32_WINNT >= 0x500) { - const DWORD - VER_MINORVERSION = 0x01, - VER_MAJORVERSION = 0x02, - VER_BUILDNUMBER = 0x04, - VER_PLATFORMID = 0x08, - VER_SERVICEPACKMINOR = 0x10, - VER_SERVICEPACKMAJOR = 0x20, - VER_SUITENAME = 0x40, - VER_PRODUCT_TYPE = 0x80; - - enum : DWORD { - VER_EQUAL = 1, - VER_GREATER, - VER_GREATER_EQUAL, - VER_LESS, - VER_LESS_EQUAL, - VER_AND, - VER_OR // = 7 - } + const DWORD + VER_MINORVERSION = 0x01, + VER_MAJORVERSION = 0x02, + VER_BUILDNUMBER = 0x04, + VER_PLATFORMID = 0x08, + VER_SERVICEPACKMINOR = 0x10, + VER_SERVICEPACKMAJOR = 0x20, + VER_SUITENAME = 0x40, + VER_PRODUCT_TYPE = 0x80; + + enum : DWORD { + VER_EQUAL = 1, + VER_GREATER, + VER_GREATER_EQUAL, + VER_LESS, + VER_LESS_EQUAL, + VER_AND, + VER_OR // = 7 + } } static if (_WIN32_WINNT >= 0x501) { - enum : ULONG { - ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1, - ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7 - ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9 - } + enum : ULONG { + ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1, + ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7 + ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9 + } } // Macros @@ -1915,26 +1915,26 @@ bool ISPTR(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHF bool ISFCN(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } bool ISARY(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } bool ISTAG(uint x) { - return x == IMAGE_SYM_CLASS_STRUCT_TAG - || x == IMAGE_SYM_CLASS_UNION_TAG - || x == IMAGE_SYM_CLASS_ENUM_TAG; + return x == IMAGE_SYM_CLASS_STRUCT_TAG + || x == IMAGE_SYM_CLASS_UNION_TAG + || x == IMAGE_SYM_CLASS_ENUM_TAG; } uint INCREF(uint x) { - return ((x & ~N_BTMASK) << N_TSHIFT) | (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT) - | (x & N_BTMASK); + return ((x & ~N_BTMASK) << N_TSHIFT) | (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT) + | (x & N_BTMASK); } uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK) | (x & N_BTMASK); } const DWORD TLS_MINIMUM_AVAILABLE = 64; const ULONG - IO_REPARSE_TAG_RESERVED_ZERO = 0, - IO_REPARSE_TAG_RESERVED_ONE = 1, - IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE, - IO_REPARSE_TAG_SYMBOLIC_LINK = IO_REPARSE_TAG_RESERVED_ZERO, - IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003, - IO_REPARSE_TAG_SYMLINK = 0xA000000C, - IO_REPARSE_TAG_VALID_VALUES = 0xE000FFFF; + IO_REPARSE_TAG_RESERVED_ZERO = 0, + IO_REPARSE_TAG_RESERVED_ONE = 1, + IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE, + IO_REPARSE_TAG_SYMBOLIC_LINK = IO_REPARSE_TAG_RESERVED_ZERO, + IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003, + IO_REPARSE_TAG_SYMLINK = 0xA000000C, + IO_REPARSE_TAG_VALID_VALUES = 0xE000FFFF; /* Although these are semantically boolean, they are documented and * implemented to return ULONG; this behaviour is preserved for compatibility @@ -1944,344 +1944,344 @@ ULONG IsReparseTagHighLatency(ULONG x) { return x & 0x40000000; } ULONG IsReparseTagNameSurrogate(ULONG x) { return x & 0x20000000; } bool IsReparseTagValid(ULONG x) { - return !(x & ~IO_REPARSE_TAG_VALID_VALUES) && (x > IO_REPARSE_TAG_RESERVED_RANGE); + return !(x & ~IO_REPARSE_TAG_VALID_VALUES) && (x > IO_REPARSE_TAG_RESERVED_RANGE); } // Doesn't seem to make sense, but anyway.... ULONG WT_SET_MAX_THREADPOOL_THREADS(ref ULONG Flags, ushort Limit) { - return Flags |= Limit << 16; + return Flags |= Limit << 16; } import core.sys.windows.basetyps; /* also in core.sys.windows.basetyps struct GUID { - uint Data1; - ushort Data2; - ushort Data3; - ubyte Data4[8]; + uint Data1; + ushort Data2; + ushort Data3; + ubyte Data4[8]; } alias GUID* REFGUID, LPGUID; */ struct GENERIC_MAPPING { - ACCESS_MASK GenericRead; - ACCESS_MASK GenericWrite; - ACCESS_MASK GenericExecute; - ACCESS_MASK GenericAll; + ACCESS_MASK GenericRead; + ACCESS_MASK GenericWrite; + ACCESS_MASK GenericExecute; + ACCESS_MASK GenericAll; } alias GENERIC_MAPPING* PGENERIC_MAPPING; struct ACE_HEADER { - BYTE AceType; - BYTE AceFlags; - WORD AceSize; + BYTE AceType; + BYTE AceFlags; + WORD AceSize; } alias ACE_HEADER* PACE_HEADER; struct ACCESS_ALLOWED_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; } alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; struct ACCESS_DENIED_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; } alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; struct SYSTEM_AUDIT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; } alias SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; struct SYSTEM_ALARM_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; } alias SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE; struct ACCESS_ALLOWED_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; } alias ACCESS_ALLOWED_OBJECT_ACE* PACCESS_ALLOWED_OBJECT_ACE; struct ACCESS_DENIED_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; } alias ACCESS_DENIED_OBJECT_ACE* PACCESS_DENIED_OBJECT_ACE; struct SYSTEM_AUDIT_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; } alias SYSTEM_AUDIT_OBJECT_ACE* PSYSTEM_AUDIT_OBJECT_ACE; struct SYSTEM_ALARM_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; } alias SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; struct ACL { - BYTE AclRevision; - BYTE Sbz1; - WORD AclSize; - WORD AceCount; - WORD Sbz2; + BYTE AclRevision; + BYTE Sbz1; + WORD AclSize; + WORD AceCount; + WORD Sbz2; } alias ACL* PACL; struct ACL_REVISION_INFORMATION { - DWORD AclRevision; + DWORD AclRevision; } struct ACL_SIZE_INFORMATION { - DWORD AceCount; - DWORD AclBytesInUse; - DWORD AclBytesFree; + DWORD AceCount; + DWORD AclBytesInUse; + DWORD AclBytesFree; } version (X86) { - // ??? - const SIZE_OF_80387_REGISTERS = 80; - const CONTEXT_i386 = 0x010000; - const CONTEXT_i486 = 0x010000; - const CONTEXT_CONTROL = CONTEXT_i386 | 0x01; - const CONTEXT_INTEGER = CONTEXT_i386 | 0x02; - const CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04; - const CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08; - const CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; - const CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; - const CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; - const MAXIMUM_SUPPORTED_EXTENSION = 512; - - struct FLOATING_SAVE_AREA { - DWORD ControlWord; - DWORD StatusWord; - DWORD TagWord; - DWORD ErrorOffset; - DWORD ErrorSelector; - DWORD DataOffset; - DWORD DataSelector; - BYTE[80] RegisterArea; - DWORD Cr0NpxState; - } - - struct CONTEXT { - DWORD ContextFlags; - DWORD Dr0; - DWORD Dr1; - DWORD Dr2; - DWORD Dr3; - DWORD Dr6; - DWORD Dr7; - FLOATING_SAVE_AREA FloatSave; - DWORD SegGs; - DWORD SegFs; - DWORD SegEs; - DWORD SegDs; - DWORD Edi; - DWORD Esi; - DWORD Ebx; - DWORD Edx; - DWORD Ecx; - DWORD Eax; - DWORD Ebp; - DWORD Eip; - DWORD SegCs; - DWORD EFlags; - DWORD Esp; - DWORD SegSs; - BYTE[MAXIMUM_SUPPORTED_EXTENSION] ExtendedRegisters; - } + // ??? + const SIZE_OF_80387_REGISTERS = 80; + const CONTEXT_i386 = 0x010000; + const CONTEXT_i486 = 0x010000; + const CONTEXT_CONTROL = CONTEXT_i386 | 0x01; + const CONTEXT_INTEGER = CONTEXT_i386 | 0x02; + const CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04; + const CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08; + const CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; + const CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; + const CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; + const MAXIMUM_SUPPORTED_EXTENSION = 512; + + struct FLOATING_SAVE_AREA { + DWORD ControlWord; + DWORD StatusWord; + DWORD TagWord; + DWORD ErrorOffset; + DWORD ErrorSelector; + DWORD DataOffset; + DWORD DataSelector; + BYTE[80] RegisterArea; + DWORD Cr0NpxState; + } + + struct CONTEXT { + DWORD ContextFlags; + DWORD Dr0; + DWORD Dr1; + DWORD Dr2; + DWORD Dr3; + DWORD Dr6; + DWORD Dr7; + FLOATING_SAVE_AREA FloatSave; + DWORD SegGs; + DWORD SegFs; + DWORD SegEs; + DWORD SegDs; + DWORD Edi; + DWORD Esi; + DWORD Ebx; + DWORD Edx; + DWORD Ecx; + DWORD Eax; + DWORD Ebp; + DWORD Eip; + DWORD SegCs; + DWORD EFlags; + DWORD Esp; + DWORD SegSs; + BYTE[MAXIMUM_SUPPORTED_EXTENSION] ExtendedRegisters; + } } else version(X86_64) { - const CONTEXT_AMD64 = 0x100000; - - const CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L); - const CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L); - const CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L); - const CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L); - const CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L); - - const CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT); - const CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS); - - const CONTEXT_EXCEPTION_ACTIVE = 0x8000000; - const CONTEXT_SERVICE_ACTIVE = 0x10000000; - const CONTEXT_EXCEPTION_REQUEST = 0x40000000; - const CONTEXT_EXCEPTION_REPORTING = 0x80000000; - - const INITIAL_MXCSR = 0x1f80; - const INITIAL_FPCSR = 0x027f; - - align(16) struct M128A - { - ULONGLONG Low; - LONGLONG High; - } - alias M128A* PM128A; - - struct XMM_SAVE_AREA32 - { - WORD ControlWord; - WORD StatusWord; - BYTE TagWord; - BYTE Reserved1; - WORD ErrorOpcode; - DWORD ErrorOffset; - WORD ErrorSelector; - WORD Reserved2; - DWORD DataOffset; - WORD DataSelector; - WORD Reserved3; - DWORD MxCsr; - DWORD MxCsr_Mask; - M128A[8] FloatRegisters; - M128A[16] XmmRegisters; - BYTE[96] Reserved4; - } - alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32; - const LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof; - - align(16) struct CONTEXT - { - DWORD64 P1Home; - DWORD64 P2Home; - DWORD64 P3Home; - DWORD64 P4Home; - DWORD64 P5Home; - DWORD64 P6Home; - DWORD ContextFlags; - DWORD MxCsr; - WORD SegCs; - WORD SegDs; - WORD SegEs; - WORD SegFs; - WORD SegGs; - WORD SegSs; - DWORD EFlags; - DWORD64 Dr0; - DWORD64 Dr1; - DWORD64 Dr2; - DWORD64 Dr3; - DWORD64 Dr6; - DWORD64 Dr7; - DWORD64 Rax; - DWORD64 Rcx; - DWORD64 Rdx; - DWORD64 Rbx; - DWORD64 Rsp; - DWORD64 Rbp; - DWORD64 Rsi; - DWORD64 Rdi; - DWORD64 R8; - DWORD64 R9; - DWORD64 R10; - DWORD64 R11; - DWORD64 R12; - DWORD64 R13; - DWORD64 R14; - DWORD64 R15; - DWORD64 Rip; - union - { - XMM_SAVE_AREA32 FltSave; - XMM_SAVE_AREA32 FloatSave; - struct - { - M128A[2] Header; - M128A[8] Legacy; - M128A Xmm0; - M128A Xmm1; - M128A Xmm2; - M128A Xmm3; - M128A Xmm4; - M128A Xmm5; - M128A Xmm6; - M128A Xmm7; - M128A Xmm8; - M128A Xmm9; - M128A Xmm10; - M128A Xmm11; - M128A Xmm12; - M128A Xmm13; - M128A Xmm14; - M128A Xmm15; - }; - }; - M128A[26] VectorRegister; - DWORD64 VectorControl; - DWORD64 DebugControl; - DWORD64 LastBranchToRip; - DWORD64 LastBranchFromRip; - DWORD64 LastExceptionToRip; - DWORD64 LastExceptionFromRip; - } - + const CONTEXT_AMD64 = 0x100000; + + const CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L); + const CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L); + const CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L); + const CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L); + const CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L); + + const CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT); + const CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS); + + const CONTEXT_EXCEPTION_ACTIVE = 0x8000000; + const CONTEXT_SERVICE_ACTIVE = 0x10000000; + const CONTEXT_EXCEPTION_REQUEST = 0x40000000; + const CONTEXT_EXCEPTION_REPORTING = 0x80000000; + + const INITIAL_MXCSR = 0x1f80; + const INITIAL_FPCSR = 0x027f; + + align(16) struct M128A + { + ULONGLONG Low; + LONGLONG High; + } + alias M128A* PM128A; + + struct XMM_SAVE_AREA32 + { + WORD ControlWord; + WORD StatusWord; + BYTE TagWord; + BYTE Reserved1; + WORD ErrorOpcode; + DWORD ErrorOffset; + WORD ErrorSelector; + WORD Reserved2; + DWORD DataOffset; + WORD DataSelector; + WORD Reserved3; + DWORD MxCsr; + DWORD MxCsr_Mask; + M128A[8] FloatRegisters; + M128A[16] XmmRegisters; + BYTE[96] Reserved4; + } + alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32; + const LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof; + + align(16) struct CONTEXT + { + DWORD64 P1Home; + DWORD64 P2Home; + DWORD64 P3Home; + DWORD64 P4Home; + DWORD64 P5Home; + DWORD64 P6Home; + DWORD ContextFlags; + DWORD MxCsr; + WORD SegCs; + WORD SegDs; + WORD SegEs; + WORD SegFs; + WORD SegGs; + WORD SegSs; + DWORD EFlags; + DWORD64 Dr0; + DWORD64 Dr1; + DWORD64 Dr2; + DWORD64 Dr3; + DWORD64 Dr6; + DWORD64 Dr7; + DWORD64 Rax; + DWORD64 Rcx; + DWORD64 Rdx; + DWORD64 Rbx; + DWORD64 Rsp; + DWORD64 Rbp; + DWORD64 Rsi; + DWORD64 Rdi; + DWORD64 R8; + DWORD64 R9; + DWORD64 R10; + DWORD64 R11; + DWORD64 R12; + DWORD64 R13; + DWORD64 R14; + DWORD64 R15; + DWORD64 Rip; + union + { + XMM_SAVE_AREA32 FltSave; + XMM_SAVE_AREA32 FloatSave; + struct + { + M128A[2] Header; + M128A[8] Legacy; + M128A Xmm0; + M128A Xmm1; + M128A Xmm2; + M128A Xmm3; + M128A Xmm4; + M128A Xmm5; + M128A Xmm6; + M128A Xmm7; + M128A Xmm8; + M128A Xmm9; + M128A Xmm10; + M128A Xmm11; + M128A Xmm12; + M128A Xmm13; + M128A Xmm14; + M128A Xmm15; + }; + }; + M128A[26] VectorRegister; + DWORD64 VectorControl; + DWORD64 DebugControl; + DWORD64 LastBranchToRip; + DWORD64 LastBranchFromRip; + DWORD64 LastExceptionToRip; + DWORD64 LastExceptionFromRip; + } + } else { - static assert(false, "Unsupported CPU"); - // Versions for PowerPC, Alpha, SHX, and MIPS removed. + static assert(false, "Unsupported CPU"); + // Versions for PowerPC, Alpha, SHX, and MIPS removed. } alias CONTEXT* PCONTEXT, LPCONTEXT; struct EXCEPTION_RECORD { - DWORD ExceptionCode; - DWORD ExceptionFlags; - EXCEPTION_RECORD* ExceptionRecord; - PVOID ExceptionAddress; - DWORD NumberParameters; - DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; + DWORD ExceptionCode; + DWORD ExceptionFlags; + EXCEPTION_RECORD* ExceptionRecord; + PVOID ExceptionAddress; + DWORD NumberParameters; + DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; } alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; struct EXCEPTION_POINTERS { - PEXCEPTION_RECORD ExceptionRecord; - PCONTEXT ContextRecord; + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; } alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS, LPEXCEPTION_POINTERS; union LARGE_INTEGER { - struct { - uint LowPart; - int HighPart; - } - long QuadPart; + struct { + uint LowPart; + int HighPart; + } + long QuadPart; } alias LARGE_INTEGER* PLARGE_INTEGER; union ULARGE_INTEGER { - struct { - uint LowPart; - uint HighPart; - } - ulong QuadPart; + struct { + uint LowPart; + uint HighPart; + } + ulong QuadPart; } alias ULARGE_INTEGER* PULARGE_INTEGER; @@ -2291,135 +2291,135 @@ alias LUID* PLUID; const LUID SYSTEM_LUID = { QuadPart:999 }; align(4) struct LUID_AND_ATTRIBUTES { - LUID Luid; - DWORD Attributes; + LUID Luid; + DWORD Attributes; } alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; struct PRIVILEGE_SET { - DWORD PrivilegeCount; - DWORD Control; - LUID_AND_ATTRIBUTES _Privilege; + DWORD PrivilegeCount; + DWORD Control; + LUID_AND_ATTRIBUTES _Privilege; - LUID_AND_ATTRIBUTES* Privilege() { return &_Privilege; } + LUID_AND_ATTRIBUTES* Privilege() { return &_Privilege; } } alias PRIVILEGE_SET* PPRIVILEGE_SET; struct SECURITY_ATTRIBUTES { - DWORD nLength; - LPVOID lpSecurityDescriptor; - BOOL bInheritHandle; + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; } alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; struct SECURITY_QUALITY_OF_SERVICE { - DWORD Length; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; - BOOLEAN EffectiveOnly; + DWORD Length; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; + BOOLEAN EffectiveOnly; } alias SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE; alias PVOID PACCESS_TOKEN; struct SE_IMPERSONATION_STATE { - PACCESS_TOKEN Token; - BOOLEAN CopyOnOpen; - BOOLEAN EffectiveOnly; - SECURITY_IMPERSONATION_LEVEL Level; + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL Level; } alias SE_IMPERSONATION_STATE* PSE_IMPERSONATION_STATE; struct SID_IDENTIFIER_AUTHORITY { - BYTE[6] Value; + BYTE[6] Value; } alias SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY, LPSID_IDENTIFIER_AUTHORITY; alias PVOID PSID; struct SID { - BYTE Revision; - BYTE SubAuthorityCount; - SID_IDENTIFIER_AUTHORITY IdentifierAuthority; - DWORD _SubAuthority; + BYTE Revision; + BYTE SubAuthorityCount; + SID_IDENTIFIER_AUTHORITY IdentifierAuthority; + DWORD _SubAuthority; - DWORD* SubAuthority() { return &_SubAuthority; } + DWORD* SubAuthority() { return &_SubAuthority; } } alias SID* PISID; struct SID_AND_ATTRIBUTES { - PSID Sid; - DWORD Attributes; + PSID Sid; + DWORD Attributes; } alias SID_AND_ATTRIBUTES* PSID_AND_ATTRIBUTES; struct TOKEN_SOURCE { - CHAR[TOKEN_SOURCE_LENGTH] SourceName; - LUID SourceIdentifier; + CHAR[TOKEN_SOURCE_LENGTH] SourceName; + LUID SourceIdentifier; } alias TOKEN_SOURCE* PTOKEN_SOURCE; struct TOKEN_CONTROL { - LUID TokenId; - LUID AuthenticationId; - LUID ModifiedId; - TOKEN_SOURCE TokenSource; + LUID TokenId; + LUID AuthenticationId; + LUID ModifiedId; + TOKEN_SOURCE TokenSource; } alias TOKEN_CONTROL* PTOKEN_CONTROL; struct TOKEN_DEFAULT_DACL { - PACL DefaultDacl; + PACL DefaultDacl; } alias TOKEN_DEFAULT_DACL* PTOKEN_DEFAULT_DACL; struct TOKEN_GROUPS { - DWORD GroupCount; - SID_AND_ATTRIBUTES _Groups; + DWORD GroupCount; + SID_AND_ATTRIBUTES _Groups; - SID_AND_ATTRIBUTES* Groups() { return &_Groups; } + SID_AND_ATTRIBUTES* Groups() { return &_Groups; } } alias TOKEN_GROUPS* PTOKEN_GROUPS, LPTOKEN_GROUPS; struct TOKEN_OWNER { - PSID Owner; + PSID Owner; } alias TOKEN_OWNER* PTOKEN_OWNER; struct TOKEN_PRIMARY_GROUP { - PSID PrimaryGroup; + PSID PrimaryGroup; } alias TOKEN_PRIMARY_GROUP* PTOKEN_PRIMARY_GROUP; struct TOKEN_PRIVILEGES { - DWORD PrivilegeCount; - LUID_AND_ATTRIBUTES _Privileges; + DWORD PrivilegeCount; + LUID_AND_ATTRIBUTES _Privileges; - LUID_AND_ATTRIBUTES* Privileges() { return &_Privileges; } + LUID_AND_ATTRIBUTES* Privileges() { return &_Privileges; } } alias TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES, LPTOKEN_PRIVILEGES; enum TOKEN_TYPE { - TokenPrimary = 1, - TokenImpersonation + TokenPrimary = 1, + TokenImpersonation } alias TOKEN_TYPE* PTOKEN_TYPE; struct TOKEN_STATISTICS { - LUID TokenId; - LUID AuthenticationId; - LARGE_INTEGER ExpirationTime; - TOKEN_TYPE TokenType; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - DWORD DynamicCharged; - DWORD DynamicAvailable; - DWORD GroupCount; - DWORD PrivilegeCount; - LUID ModifiedId; + LUID TokenId; + LUID AuthenticationId; + LARGE_INTEGER ExpirationTime; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + DWORD DynamicCharged; + DWORD DynamicAvailable; + DWORD GroupCount; + DWORD PrivilegeCount; + LUID ModifiedId; } alias TOKEN_STATISTICS* PTOKEN_STATISTICS; struct TOKEN_USER { - SID_AND_ATTRIBUTES User; + SID_AND_ATTRIBUTES User; } alias TOKEN_USER* PTOKEN_USER; @@ -2429,1034 +2429,1034 @@ alias WORD SECURITY_DESCRIPTOR_CONTROL; alias SECURITY_DESCRIPTOR_CONTROL* PSECURITY_DESCRIPTOR_CONTROL; struct SECURITY_DESCRIPTOR { - BYTE Revision; - BYTE Sbz1; - SECURITY_DESCRIPTOR_CONTROL Control; - PSID Owner; - PSID Group; - PACL Sacl; - PACL Dacl; + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PSID Owner; + PSID Group; + PACL Sacl; + PACL Dacl; } alias SECURITY_DESCRIPTOR* PSECURITY_DESCRIPTOR, PISECURITY_DESCRIPTOR; enum TOKEN_INFORMATION_CLASS { - TokenUser = 1, - TokenGroups, - TokenPrivileges, - TokenOwner, - TokenPrimaryGroup, - TokenDefaultDacl, - TokenSource, - TokenType, - TokenImpersonationLevel, - TokenStatistics, - TokenRestrictedSids, - TokenSessionId, - TokenGroupsAndPrivileges, - TokenSessionReference, - TokenSandBoxInert, - TokenAuditPolicy, - TokenOrigin + TokenUser = 1, + TokenGroups, + TokenPrivileges, + TokenOwner, + TokenPrimaryGroup, + TokenDefaultDacl, + TokenSource, + TokenType, + TokenImpersonationLevel, + TokenStatistics, + TokenRestrictedSids, + TokenSessionId, + TokenGroupsAndPrivileges, + TokenSessionReference, + TokenSandBoxInert, + TokenAuditPolicy, + TokenOrigin } enum SID_NAME_USE { - SidTypeUser = 1, - SidTypeGroup, - SidTypeDomain, - SidTypeAlias, - SidTypeWellKnownGroup, - SidTypeDeletedAccount, - SidTypeInvalid, - SidTypeUnknown, - SidTypeComputer + SidTypeUser = 1, + SidTypeGroup, + SidTypeDomain, + SidTypeAlias, + SidTypeWellKnownGroup, + SidTypeDeletedAccount, + SidTypeInvalid, + SidTypeUnknown, + SidTypeComputer } alias SID_NAME_USE* PSID_NAME_USE; struct QUOTA_LIMITS { - SIZE_T PagedPoolLimit; - SIZE_T NonPagedPoolLimit; - SIZE_T MinimumWorkingSetSize; - SIZE_T MaximumWorkingSetSize; - SIZE_T PagefileLimit; - LARGE_INTEGER TimeLimit; + SIZE_T PagedPoolLimit; + SIZE_T NonPagedPoolLimit; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + SIZE_T PagefileLimit; + LARGE_INTEGER TimeLimit; } alias QUOTA_LIMITS* PQUOTA_LIMITS; struct IO_COUNTERS { - ULONGLONG ReadOperationCount; - ULONGLONG WriteOperationCount; - ULONGLONG OtherOperationCount; - ULONGLONG ReadTransferCount; - ULONGLONG WriteTransferCount; - ULONGLONG OtherTransferCount; + ULONGLONG ReadOperationCount; + ULONGLONG WriteOperationCount; + ULONGLONG OtherOperationCount; + ULONGLONG ReadTransferCount; + ULONGLONG WriteTransferCount; + ULONGLONG OtherTransferCount; } alias IO_COUNTERS* PIO_COUNTERS; struct FILE_NOTIFY_INFORMATION { - DWORD NextEntryOffset; - DWORD Action; - DWORD FileNameLength; - WCHAR _FileName; + DWORD NextEntryOffset; + DWORD Action; + DWORD FileNameLength; + WCHAR _FileName; - WCHAR* FileName() { return &_FileName; } + WCHAR* FileName() { return &_FileName; } } alias FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; struct TAPE_ERASE { - DWORD Type; - BOOLEAN Immediate; + DWORD Type; + BOOLEAN Immediate; } alias TAPE_ERASE* PTAPE_ERASE; struct TAPE_GET_DRIVE_PARAMETERS { - BOOLEAN ECC; - BOOLEAN Compression; - BOOLEAN DataPadding; - BOOLEAN ReportSetmarks; - DWORD DefaultBlockSize; - DWORD MaximumBlockSize; - DWORD MinimumBlockSize; - DWORD MaximumPartitionCount; - DWORD FeaturesLow; - DWORD FeaturesHigh; - DWORD EOTWarningZoneSize; + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + DWORD DefaultBlockSize; + DWORD MaximumBlockSize; + DWORD MinimumBlockSize; + DWORD MaximumPartitionCount; + DWORD FeaturesLow; + DWORD FeaturesHigh; + DWORD EOTWarningZoneSize; } alias TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; struct TAPE_GET_MEDIA_PARAMETERS { - LARGE_INTEGER Capacity; - LARGE_INTEGER Remaining; - DWORD BlockSize; - DWORD PartitionCount; - BOOLEAN WriteProtected; + LARGE_INTEGER Capacity; + LARGE_INTEGER Remaining; + DWORD BlockSize; + DWORD PartitionCount; + BOOLEAN WriteProtected; } alias TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; struct TAPE_GET_POSITION { - ULONG Type; - ULONG Partition; - ULONG OffsetLow; - ULONG OffsetHigh; + ULONG Type; + ULONG Partition; + ULONG OffsetLow; + ULONG OffsetHigh; } alias TAPE_GET_POSITION* PTAPE_GET_POSITION; struct TAPE_PREPARE { - DWORD Operation; - BOOLEAN Immediate; + DWORD Operation; + BOOLEAN Immediate; } alias TAPE_PREPARE* PTAPE_PREPARE; struct TAPE_SET_DRIVE_PARAMETERS { - BOOLEAN ECC; - BOOLEAN Compression; - BOOLEAN DataPadding; - BOOLEAN ReportSetmarks; - ULONG EOTWarningZoneSize; + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + ULONG EOTWarningZoneSize; } alias TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; struct TAPE_SET_MEDIA_PARAMETERS { - ULONG BlockSize; + ULONG BlockSize; } alias TAPE_SET_MEDIA_PARAMETERS* PTAPE_SET_MEDIA_PARAMETERS; struct TAPE_SET_POSITION { - DWORD Method; - DWORD Partition; - LARGE_INTEGER Offset; - BOOLEAN Immediate; + DWORD Method; + DWORD Partition; + LARGE_INTEGER Offset; + BOOLEAN Immediate; } alias TAPE_SET_POSITION* PTAPE_SET_POSITION; struct TAPE_WRITE_MARKS { - DWORD Type; - DWORD Count; - BOOLEAN Immediate; + DWORD Type; + DWORD Count; + BOOLEAN Immediate; } alias TAPE_WRITE_MARKS* PTAPE_WRITE_MARKS; struct TAPE_CREATE_PARTITION { - DWORD Method; - DWORD Count; - DWORD Size; + DWORD Method; + DWORD Count; + DWORD Size; } alias TAPE_CREATE_PARTITION* PTAPE_CREATE_PARTITION; struct MEMORY_BASIC_INFORMATION { - PVOID BaseAddress; - PVOID AllocationBase; - DWORD AllocationProtect; - DWORD RegionSize; - DWORD State; - DWORD Protect; - DWORD Type; + PVOID BaseAddress; + PVOID AllocationBase; + DWORD AllocationProtect; + DWORD RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; } alias MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION; struct MESSAGE_RESOURCE_ENTRY { - WORD Length; - WORD Flags; - BYTE _Text; + WORD Length; + WORD Flags; + BYTE _Text; - BYTE* Text() { return &_Text; } + BYTE* Text() { return &_Text; } } alias MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; struct MESSAGE_RESOURCE_BLOCK { - DWORD LowId; - DWORD HighId; - DWORD OffsetToEntries; + DWORD LowId; + DWORD HighId; + DWORD OffsetToEntries; } alias MESSAGE_RESOURCE_BLOCK* PMESSAGE_RESOURCE_BLOCK; struct MESSAGE_RESOURCE_DATA { - DWORD NumberOfBlocks; - MESSAGE_RESOURCE_BLOCK _Blocks; + DWORD NumberOfBlocks; + MESSAGE_RESOURCE_BLOCK _Blocks; - MESSAGE_RESOURCE_BLOCK* Blocks() { return &_Blocks; } + MESSAGE_RESOURCE_BLOCK* Blocks() { return &_Blocks; } } alias MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; struct LIST_ENTRY { - LIST_ENTRY* Flink; - LIST_ENTRY* Blink; + LIST_ENTRY* Flink; + LIST_ENTRY* Blink; } alias LIST_ENTRY* PLIST_ENTRY; struct SINGLE_LIST_ENTRY { - SINGLE_LIST_ENTRY* Next; + SINGLE_LIST_ENTRY* Next; } alias SINGLE_LIST_ENTRY SLIST_ENTRY; alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY, PSLIST_ENTRY; union SLIST_HEADER { - ULONGLONG Alignment; - struct { - SLIST_ENTRY Next; - WORD Depth; - WORD Sequence; - } + ULONGLONG Alignment; + struct { + SLIST_ENTRY Next; + WORD Depth; + WORD Sequence; + } } alias SLIST_HEADER* PSLIST_HEADER; struct RTL_CRITICAL_SECTION_DEBUG { - WORD Type; - WORD CreatorBackTraceIndex; - RTL_CRITICAL_SECTION* CriticalSection; - LIST_ENTRY ProcessLocksList; - DWORD EntryCount; - DWORD ContentionCount; - DWORD[2] Spare; + WORD Type; + WORD CreatorBackTraceIndex; + RTL_CRITICAL_SECTION* CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD[2] Spare; } alias RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; struct RTL_CRITICAL_SECTION { - PRTL_CRITICAL_SECTION_DEBUG DebugInfo; - LONG LockCount; - LONG RecursionCount; - HANDLE OwningThread; - HANDLE LockSemaphore; - DWORD Reserved; + PRTL_CRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + DWORD Reserved; } alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; struct EVENTLOGRECORD { - DWORD Length; - DWORD Reserved; - DWORD RecordNumber; - DWORD TimeGenerated; - DWORD TimeWritten; - DWORD EventID; - WORD EventType; - WORD NumStrings; - WORD EventCategory; - WORD ReservedFlags; - DWORD ClosingRecordNumber; - DWORD StringOffset; - DWORD UserSidLength; - DWORD UserSidOffset; - DWORD DataLength; - DWORD DataOffset; + DWORD Length; + DWORD Reserved; + DWORD RecordNumber; + DWORD TimeGenerated; + DWORD TimeWritten; + DWORD EventID; + WORD EventType; + WORD NumStrings; + WORD EventCategory; + WORD ReservedFlags; + DWORD ClosingRecordNumber; + DWORD StringOffset; + DWORD UserSidLength; + DWORD UserSidOffset; + DWORD DataLength; + DWORD DataOffset; } alias EVENTLOGRECORD* PEVENTLOGRECORD; struct OSVERSIONINFOA { - DWORD dwOSVersionInfoSize = OSVERSIONINFOA.sizeof; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - CHAR[128] szCSDVersion; + DWORD dwOSVersionInfoSize = OSVERSIONINFOA.sizeof; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR[128] szCSDVersion; } alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA; struct OSVERSIONINFOW { - DWORD dwOSVersionInfoSize = OSVERSIONINFOW.sizeof; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - WCHAR[128] szCSDVersion; + DWORD dwOSVersionInfoSize = OSVERSIONINFOW.sizeof; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR[128] szCSDVersion; } alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW; struct OSVERSIONINFOEXA { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - CHAR[128] szCSDVersion; - WORD wServicePackMajor; - WORD wServicePackMinor; - WORD wSuiteMask; - BYTE wProductType; - BYTE wReserved; + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR[128] szCSDVersion; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; } alias OSVERSIONINFOEXA* POSVERSIONINFOEXA, LPOSVERSIONINFOEXA; struct OSVERSIONINFOEXW { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - WCHAR[128] szCSDVersion; - WORD wServicePackMajor; - WORD wServicePackMinor; - WORD wSuiteMask; - BYTE wProductType; - BYTE wReserved; + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR[128] szCSDVersion; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; } alias OSVERSIONINFOEXW* POSVERSIONINFOEXW, LPOSVERSIONINFOEXW; align(2) struct IMAGE_VXD_HEADER { - WORD e32_magic; - BYTE e32_border; - BYTE e32_worder; - DWORD e32_level; - WORD e32_cpu; - WORD e32_os; - DWORD e32_ver; - DWORD e32_mflags; - DWORD e32_mpages; - DWORD e32_startobj; - DWORD e32_eip; - DWORD e32_stackobj; - DWORD e32_esp; - DWORD e32_pagesize; - DWORD e32_lastpagesize; - DWORD e32_fixupsize; - DWORD e32_fixupsum; - DWORD e32_ldrsize; - DWORD e32_ldrsum; - DWORD e32_objtab; - DWORD e32_objcnt; - DWORD e32_objmap; - DWORD e32_itermap; - DWORD e32_rsrctab; - DWORD e32_rsrccnt; - DWORD e32_restab; - DWORD e32_enttab; - DWORD e32_dirtab; - DWORD e32_dircnt; - DWORD e32_fpagetab; - DWORD e32_frectab; - DWORD e32_impmod; - DWORD e32_impmodcnt; - DWORD e32_impproc; - DWORD e32_pagesum; - DWORD e32_datapage; - DWORD e32_preload; - DWORD e32_nrestab; - DWORD e32_cbnrestab; - DWORD e32_nressum; - DWORD e32_autodata; - DWORD e32_debuginfo; - DWORD e32_debuglen; - DWORD e32_instpreload; - DWORD e32_instdemand; - DWORD e32_heapsize; - BYTE[12] e32_res3; - DWORD e32_winresoff; - DWORD e32_winreslen; - WORD e32_devid; - WORD e32_ddkver; + WORD e32_magic; + BYTE e32_border; + BYTE e32_worder; + DWORD e32_level; + WORD e32_cpu; + WORD e32_os; + DWORD e32_ver; + DWORD e32_mflags; + DWORD e32_mpages; + DWORD e32_startobj; + DWORD e32_eip; + DWORD e32_stackobj; + DWORD e32_esp; + DWORD e32_pagesize; + DWORD e32_lastpagesize; + DWORD e32_fixupsize; + DWORD e32_fixupsum; + DWORD e32_ldrsize; + DWORD e32_ldrsum; + DWORD e32_objtab; + DWORD e32_objcnt; + DWORD e32_objmap; + DWORD e32_itermap; + DWORD e32_rsrctab; + DWORD e32_rsrccnt; + DWORD e32_restab; + DWORD e32_enttab; + DWORD e32_dirtab; + DWORD e32_dircnt; + DWORD e32_fpagetab; + DWORD e32_frectab; + DWORD e32_impmod; + DWORD e32_impmodcnt; + DWORD e32_impproc; + DWORD e32_pagesum; + DWORD e32_datapage; + DWORD e32_preload; + DWORD e32_nrestab; + DWORD e32_cbnrestab; + DWORD e32_nressum; + DWORD e32_autodata; + DWORD e32_debuginfo; + DWORD e32_debuglen; + DWORD e32_instpreload; + DWORD e32_instdemand; + DWORD e32_heapsize; + BYTE[12] e32_res3; + DWORD e32_winresoff; + DWORD e32_winreslen; + WORD e32_devid; + WORD e32_ddkver; } alias IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; align(4): struct IMAGE_FILE_HEADER { - WORD Machine; - WORD NumberOfSections; - DWORD TimeDateStamp; - DWORD PointerToSymbolTable; - DWORD NumberOfSymbols; - WORD SizeOfOptionalHeader; - WORD Characteristics; + WORD Machine; + WORD NumberOfSections; + DWORD TimeDateStamp; + DWORD PointerToSymbolTable; + DWORD NumberOfSymbols; + WORD SizeOfOptionalHeader; + WORD Characteristics; } alias IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; // const IMAGE_SIZEOF_FILE_HEADER = IMAGE_FILE_HEADER.sizeof; struct IMAGE_DATA_DIRECTORY { - DWORD VirtualAddress; - DWORD Size; + DWORD VirtualAddress; + DWORD Size; } alias IMAGE_DATA_DIRECTORY* PIMAGE_DATA_DIRECTORY; struct IMAGE_OPTIONAL_HEADER32 { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - DWORD BaseOfData; - DWORD ImageBase; - DWORD SectionAlignment; - DWORD FileAlignment; - WORD MajorOperatingSystemVersion; - WORD MinorOperatingSystemVersion; - WORD MajorImageVersion; - WORD MinorImageVersion; - WORD MajorSubsystemVersion; - WORD MinorSubsystemVersion; - DWORD Win32VersionValue; - DWORD SizeOfImage; - DWORD SizeOfHeaders; - DWORD CheckSum; - WORD Subsystem; - WORD DllCharacteristics; - DWORD SizeOfStackReserve; - DWORD SizeOfStackCommit; - DWORD SizeOfHeapReserve; - DWORD SizeOfHeapCommit; - DWORD LoaderFlags; - DWORD NumberOfRvaAndSizes; - IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + DWORD BaseOfData; + DWORD ImageBase; + DWORD SectionAlignment; + DWORD FileAlignment; + WORD MajorOperatingSystemVersion; + WORD MinorOperatingSystemVersion; + WORD MajorImageVersion; + WORD MinorImageVersion; + WORD MajorSubsystemVersion; + WORD MinorSubsystemVersion; + DWORD Win32VersionValue; + DWORD SizeOfImage; + DWORD SizeOfHeaders; + DWORD CheckSum; + WORD Subsystem; + WORD DllCharacteristics; + DWORD SizeOfStackReserve; + DWORD SizeOfStackCommit; + DWORD SizeOfHeapReserve; + DWORD SizeOfHeapCommit; + DWORD LoaderFlags; + DWORD NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; } alias IMAGE_OPTIONAL_HEADER32* PIMAGE_OPTIONAL_HEADER32; struct IMAGE_OPTIONAL_HEADER64 { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - ULONGLONG ImageBase; - DWORD SectionAlignment; - DWORD FileAlignment; - WORD MajorOperatingSystemVersion; - WORD MinorOperatingSystemVersion; - WORD MajorImageVersion; - WORD MinorImageVersion; - WORD MajorSubsystemVersion; - WORD MinorSubsystemVersion; - DWORD Win32VersionValue; - DWORD SizeOfImage; - DWORD SizeOfHeaders; - DWORD CheckSum; - WORD Subsystem; - WORD DllCharacteristics; - ULONGLONG SizeOfStackReserve; - ULONGLONG SizeOfStackCommit; - ULONGLONG SizeOfHeapReserve; - ULONGLONG SizeOfHeapCommit; - DWORD LoaderFlags; - DWORD NumberOfRvaAndSizes; - IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + ULONGLONG ImageBase; + DWORD SectionAlignment; + DWORD FileAlignment; + WORD MajorOperatingSystemVersion; + WORD MinorOperatingSystemVersion; + WORD MajorImageVersion; + WORD MinorImageVersion; + WORD MajorSubsystemVersion; + WORD MinorSubsystemVersion; + DWORD Win32VersionValue; + DWORD SizeOfImage; + DWORD SizeOfHeaders; + DWORD CheckSum; + WORD Subsystem; + WORD DllCharacteristics; + ULONGLONG SizeOfStackReserve; + ULONGLONG SizeOfStackCommit; + ULONGLONG SizeOfHeapReserve; + ULONGLONG SizeOfHeapCommit; + DWORD LoaderFlags; + DWORD NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; } alias IMAGE_OPTIONAL_HEADER64* PIMAGE_OPTIONAL_HEADER64; struct IMAGE_ROM_OPTIONAL_HEADER { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - DWORD BaseOfData; - DWORD BaseOfBss; - DWORD GprMask; - DWORD[4] CprMask; - DWORD GpValue; + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + DWORD BaseOfData; + DWORD BaseOfBss; + DWORD GprMask; + DWORD[4] CprMask; + DWORD GpValue; } alias IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; align(2): struct IMAGE_DOS_HEADER { - WORD e_magic; - WORD e_cblp; - WORD e_cp; - WORD e_crlc; - WORD e_cparhdr; - WORD e_minalloc; - WORD e_maxalloc; - WORD e_ss; - WORD e_sp; - WORD e_csum; - WORD e_ip; - WORD e_cs; - WORD e_lfarlc; - WORD e_ovno; - WORD[4] e_res; - WORD e_oemid; - WORD e_oeminfo; - WORD[10] e_res2; - LONG e_lfanew; + WORD e_magic; + WORD e_cblp; + WORD e_cp; + WORD e_crlc; + WORD e_cparhdr; + WORD e_minalloc; + WORD e_maxalloc; + WORD e_ss; + WORD e_sp; + WORD e_csum; + WORD e_ip; + WORD e_cs; + WORD e_lfarlc; + WORD e_ovno; + WORD[4] e_res; + WORD e_oemid; + WORD e_oeminfo; + WORD[10] e_res2; + LONG e_lfanew; } alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER; struct IMAGE_OS2_HEADER { - WORD ne_magic; - CHAR ne_ver; - CHAR ne_rev; - WORD ne_enttab; - WORD ne_cbenttab; - LONG ne_crc; - WORD ne_flags; - WORD ne_autodata; - WORD ne_heap; - WORD ne_stack; - LONG ne_csip; - LONG ne_sssp; - WORD ne_cseg; - WORD ne_cmod; - WORD ne_cbnrestab; - WORD ne_segtab; - WORD ne_rsrctab; - WORD ne_restab; - WORD ne_modtab; - WORD ne_imptab; - LONG ne_nrestab; - WORD ne_cmovent; - WORD ne_align; - WORD ne_cres; - BYTE ne_exetyp; - BYTE ne_flagsothers; - WORD ne_pretthunks; - WORD ne_psegrefbytes; - WORD ne_swaparea; - WORD ne_expver; + WORD ne_magic; + CHAR ne_ver; + CHAR ne_rev; + WORD ne_enttab; + WORD ne_cbenttab; + LONG ne_crc; + WORD ne_flags; + WORD ne_autodata; + WORD ne_heap; + WORD ne_stack; + LONG ne_csip; + LONG ne_sssp; + WORD ne_cseg; + WORD ne_cmod; + WORD ne_cbnrestab; + WORD ne_segtab; + WORD ne_rsrctab; + WORD ne_restab; + WORD ne_modtab; + WORD ne_imptab; + LONG ne_nrestab; + WORD ne_cmovent; + WORD ne_align; + WORD ne_cres; + BYTE ne_exetyp; + BYTE ne_flagsothers; + WORD ne_pretthunks; + WORD ne_psegrefbytes; + WORD ne_swaparea; + WORD ne_expver; } alias IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER; align(4) struct IMAGE_NT_HEADERS32 { - DWORD Signature; - IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER OptionalHeader; + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER OptionalHeader; } alias IMAGE_NT_HEADERS32* PIMAGE_NT_HEADERS32; align(4) struct IMAGE_NT_HEADERS64 { - DWORD Signature; - IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER OptionalHeader; + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER OptionalHeader; } alias IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64; struct IMAGE_ROM_HEADERS { - IMAGE_FILE_HEADER FileHeader; - IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; + IMAGE_FILE_HEADER FileHeader; + IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; } alias IMAGE_ROM_HEADERS* PIMAGE_ROM_HEADERS; struct IMAGE_SECTION_HEADER { - BYTE[IMAGE_SIZEOF_SHORT_NAME] Name; - union _Misc { - DWORD PhysicalAddress; - DWORD VirtualSize; - } - _Misc Misc; - DWORD VirtualAddress; - DWORD SizeOfRawData; - DWORD PointerToRawData; - DWORD PointerToRelocations; - DWORD PointerToLinenumbers; - WORD NumberOfRelocations; - WORD NumberOfLinenumbers; - DWORD Characteristics; + BYTE[IMAGE_SIZEOF_SHORT_NAME] Name; + union _Misc { + DWORD PhysicalAddress; + DWORD VirtualSize; + } + _Misc Misc; + DWORD VirtualAddress; + DWORD SizeOfRawData; + DWORD PointerToRawData; + DWORD PointerToRelocations; + DWORD PointerToLinenumbers; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD Characteristics; } alias IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; struct IMAGE_SYMBOL { - union _N { - BYTE[8] ShortName; - struct Name { - DWORD Short; - DWORD Long; - } - PBYTE[2] LongName; - } - _N N; - DWORD Value; - SHORT SectionNumber; - WORD Type; - BYTE StorageClass; - BYTE NumberOfAuxSymbols; + union _N { + BYTE[8] ShortName; + struct Name { + DWORD Short; + DWORD Long; + } + PBYTE[2] LongName; + } + _N N; + DWORD Value; + SHORT SectionNumber; + WORD Type; + BYTE StorageClass; + BYTE NumberOfAuxSymbols; } alias IMAGE_SYMBOL* PIMAGE_SYMBOL; union IMAGE_AUX_SYMBOL { - struct _Sym { - DWORD TagIndex; - union _Misc { - struct _LnSz { - WORD Linenumber; - WORD Size; - } - _LnSz LnSz; - DWORD TotalSize; - } - _Misc Misc; - union _FcnAry { - struct _Function { - DWORD PointerToLinenumber; - DWORD PointerToNextFunction; - } - _Function Function; - struct _Array { - WORD[4] Dimension; - } - _Array Array; - } - _FcnAry FcnAry; - WORD TvIndex; - } - _Sym Sym; - struct _File { - BYTE[IMAGE_SIZEOF_SYMBOL] Name; - } - _File File; - struct _Section { - DWORD Length; - WORD NumberOfRelocations; - WORD NumberOfLinenumbers; - DWORD CheckSum; - SHORT Number; - BYTE Selection; - } - _Section Section; + struct _Sym { + DWORD TagIndex; + union _Misc { + struct _LnSz { + WORD Linenumber; + WORD Size; + } + _LnSz LnSz; + DWORD TotalSize; + } + _Misc Misc; + union _FcnAry { + struct _Function { + DWORD PointerToLinenumber; + DWORD PointerToNextFunction; + } + _Function Function; + struct _Array { + WORD[4] Dimension; + } + _Array Array; + } + _FcnAry FcnAry; + WORD TvIndex; + } + _Sym Sym; + struct _File { + BYTE[IMAGE_SIZEOF_SYMBOL] Name; + } + _File File; + struct _Section { + DWORD Length; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD CheckSum; + SHORT Number; + BYTE Selection; + } + _Section Section; } alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; struct IMAGE_COFF_SYMBOLS_HEADER { - DWORD NumberOfSymbols; - DWORD LvaToFirstSymbol; - DWORD NumberOfLinenumbers; - DWORD LvaToFirstLinenumber; - DWORD RvaToFirstByteOfCode; - DWORD RvaToLastByteOfCode; - DWORD RvaToFirstByteOfData; - DWORD RvaToLastByteOfData; + DWORD NumberOfSymbols; + DWORD LvaToFirstSymbol; + DWORD NumberOfLinenumbers; + DWORD LvaToFirstLinenumber; + DWORD RvaToFirstByteOfCode; + DWORD RvaToLastByteOfCode; + DWORD RvaToFirstByteOfData; + DWORD RvaToLastByteOfData; } alias IMAGE_COFF_SYMBOLS_HEADER* PIMAGE_COFF_SYMBOLS_HEADER; struct IMAGE_RELOCATION { - union { - DWORD VirtualAddress; - DWORD RelocCount; - } - DWORD SymbolTableIndex; - WORD Type; + union { + DWORD VirtualAddress; + DWORD RelocCount; + } + DWORD SymbolTableIndex; + WORD Type; } alias IMAGE_RELOCATION* PIMAGE_RELOCATION; align(4) struct IMAGE_BASE_RELOCATION { - DWORD VirtualAddress; - DWORD SizeOfBlock; + DWORD VirtualAddress; + DWORD SizeOfBlock; } alias IMAGE_BASE_RELOCATION* PIMAGE_BASE_RELOCATION; align(2) struct IMAGE_LINENUMBER { - union _Type { - DWORD SymbolTableIndex; - DWORD VirtualAddress; - } - _Type Type; - WORD Linenumber; + union _Type { + DWORD SymbolTableIndex; + DWORD VirtualAddress; + } + _Type Type; + WORD Linenumber; } alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; align(4): struct IMAGE_ARCHIVE_MEMBER_HEADER { - BYTE[16] Name; - BYTE[12] Date; - BYTE[6] UserID; - BYTE[6] GroupID; - BYTE[8] Mode; - BYTE[10] Size; - BYTE[2] EndHeader; + BYTE[16] Name; + BYTE[12] Date; + BYTE[6] UserID; + BYTE[6] GroupID; + BYTE[8] Mode; + BYTE[10] Size; + BYTE[2] EndHeader; } alias IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; struct IMAGE_EXPORT_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD Name; - DWORD Base; - DWORD NumberOfFunctions; - DWORD NumberOfNames; - DWORD AddressOfFunctions; - DWORD AddressOfNames; - DWORD AddressOfNameOrdinals; + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Name; + DWORD Base; + DWORD NumberOfFunctions; + DWORD NumberOfNames; + DWORD AddressOfFunctions; + DWORD AddressOfNames; + DWORD AddressOfNameOrdinals; } alias IMAGE_EXPORT_DIRECTORY* PIMAGE_EXPORT_DIRECTORY; struct IMAGE_IMPORT_BY_NAME { - WORD Hint; - BYTE _Name; + WORD Hint; + BYTE _Name; - BYTE* Name() { - return &_Name; - } + BYTE* Name() { + return &_Name; + } } alias IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; struct IMAGE_THUNK_DATA32 { - union _u1 { - DWORD ForwarderString; - DWORD Function; - DWORD Ordinal; - DWORD AddressOfData; - } - _u1 u1; + union _u1 { + DWORD ForwarderString; + DWORD Function; + DWORD Ordinal; + DWORD AddressOfData; + } + _u1 u1; } alias IMAGE_THUNK_DATA32* PIMAGE_THUNK_DATA32; struct IMAGE_THUNK_DATA64 { - union _u1 { - ULONGLONG ForwarderString; - ULONGLONG Function; - ULONGLONG Ordinal; - ULONGLONG AddressOfData; - } - _u1 u1; + union _u1 { + ULONGLONG ForwarderString; + ULONGLONG Function; + ULONGLONG Ordinal; + ULONGLONG AddressOfData; + } + _u1 u1; } alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; struct IMAGE_IMPORT_DESCRIPTOR { - union { - DWORD Characteristics; - DWORD OriginalFirstThunk; - } - DWORD TimeDateStamp; - DWORD ForwarderChain; - DWORD Name; - DWORD FirstThunk; + union { + DWORD Characteristics; + DWORD OriginalFirstThunk; + } + DWORD TimeDateStamp; + DWORD ForwarderChain; + DWORD Name; + DWORD FirstThunk; } alias IMAGE_IMPORT_DESCRIPTOR* PIMAGE_IMPORT_DESCRIPTOR; struct IMAGE_BOUND_IMPORT_DESCRIPTOR { - DWORD TimeDateStamp; - WORD OffsetModuleName; - WORD NumberOfModuleForwarderRefs; + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD NumberOfModuleForwarderRefs; } alias IMAGE_BOUND_IMPORT_DESCRIPTOR* PIMAGE_BOUND_IMPORT_DESCRIPTOR; struct IMAGE_BOUND_FORWARDER_REF { - DWORD TimeDateStamp; - WORD OffsetModuleName; - WORD Reserved; + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD Reserved; } alias IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; struct IMAGE_TLS_DIRECTORY32 { - DWORD StartAddressOfRawData; - DWORD EndAddressOfRawData; - DWORD AddressOfIndex; - DWORD AddressOfCallBacks; - DWORD SizeOfZeroFill; - DWORD Characteristics; + DWORD StartAddressOfRawData; + DWORD EndAddressOfRawData; + DWORD AddressOfIndex; + DWORD AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; } alias IMAGE_TLS_DIRECTORY32* PIMAGE_TLS_DIRECTORY32; struct IMAGE_TLS_DIRECTORY64 { - ULONGLONG StartAddressOfRawData; - ULONGLONG EndAddressOfRawData; - ULONGLONG AddressOfIndex; - ULONGLONG AddressOfCallBacks; - DWORD SizeOfZeroFill; - DWORD Characteristics; + ULONGLONG StartAddressOfRawData; + ULONGLONG EndAddressOfRawData; + ULONGLONG AddressOfIndex; + ULONGLONG AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; } alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; struct IMAGE_RESOURCE_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - WORD NumberOfNamedEntries; - WORD NumberOfIdEntries; + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + WORD NumberOfNamedEntries; + WORD NumberOfIdEntries; } alias IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; struct IMAGE_RESOURCE_DIRECTORY_ENTRY { - union { - /+struct { - DWORD NameOffset:31; - DWORD NameIsString:1; - }+/ - DWORD Name; - WORD Id; - } - DWORD OffsetToData; - /+struct { - DWORD OffsetToDirectory:31; - DWORD DataIsDirectory:1; - }+/ - - uint NameOffset() { return Name & 0x7FFFFFFF; } - bool NameIsString() { return cast(bool)(Name & 0x80000000); } - uint OffsetToDirectory() { return OffsetToData & 0x7FFFFFFF; } - bool DataIsDirectory() { return cast(bool)(OffsetToData & 0x80000000); } - - uint NameOffset(uint n) { - Name = (Name & 0x80000000) | (n & 0x7FFFFFFF); - return n & 0x7FFFFFFF; - } - - bool NameIsString(bool n) { - Name = (Name & 0x7FFFFFFF) | (n << 31); return n; - } - - uint OffsetToDirectory(uint o) { - OffsetToData = (OffsetToData & 0x80000000) | (o & 0x7FFFFFFF); - return o & 0x7FFFFFFF; - } - - bool DataIsDirectory(bool d) { - OffsetToData = (OffsetToData & 0x7FFFFFFF) | (d << 31); return d; - } + union { + /+struct { + DWORD NameOffset:31; + DWORD NameIsString:1; + }+/ + DWORD Name; + WORD Id; + } + DWORD OffsetToData; + /+struct { + DWORD OffsetToDirectory:31; + DWORD DataIsDirectory:1; + }+/ + + uint NameOffset() { return Name & 0x7FFFFFFF; } + bool NameIsString() { return cast(bool)(Name & 0x80000000); } + uint OffsetToDirectory() { return OffsetToData & 0x7FFFFFFF; } + bool DataIsDirectory() { return cast(bool)(OffsetToData & 0x80000000); } + + uint NameOffset(uint n) { + Name = (Name & 0x80000000) | (n & 0x7FFFFFFF); + return n & 0x7FFFFFFF; + } + + bool NameIsString(bool n) { + Name = (Name & 0x7FFFFFFF) | (n << 31); return n; + } + + uint OffsetToDirectory(uint o) { + OffsetToData = (OffsetToData & 0x80000000) | (o & 0x7FFFFFFF); + return o & 0x7FFFFFFF; + } + + bool DataIsDirectory(bool d) { + OffsetToData = (OffsetToData & 0x7FFFFFFF) | (d << 31); return d; + } } alias IMAGE_RESOURCE_DIRECTORY_ENTRY* PIMAGE_RESOURCE_DIRECTORY_ENTRY; struct IMAGE_RESOURCE_DIRECTORY_STRING { - WORD Length; - CHAR _NameString; + WORD Length; + CHAR _NameString; - CHAR* NameString() { return &_NameString; } + CHAR* NameString() { return &_NameString; } } alias IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; struct IMAGE_RESOURCE_DIR_STRING_U { - WORD Length; - WCHAR _NameString; + WORD Length; + WCHAR _NameString; - WCHAR* NameString() { return &_NameString; } + WCHAR* NameString() { return &_NameString; } } alias IMAGE_RESOURCE_DIR_STRING_U* PIMAGE_RESOURCE_DIR_STRING_U; struct IMAGE_RESOURCE_DATA_ENTRY { - DWORD OffsetToData; - DWORD Size; - DWORD CodePage; - DWORD Reserved; + DWORD OffsetToData; + DWORD Size; + DWORD CodePage; + DWORD Reserved; } alias IMAGE_RESOURCE_DATA_ENTRY* PIMAGE_RESOURCE_DATA_ENTRY; struct IMAGE_LOAD_CONFIG_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD GlobalFlagsClear; - DWORD GlobalFlagsSet; - DWORD CriticalSectionDefaultTimeout; - DWORD DeCommitFreeBlockThreshold; - DWORD DeCommitTotalFreeThreshold; - PVOID LockPrefixTable; - DWORD MaximumAllocationSize; - DWORD VirtualMemoryThreshold; - DWORD ProcessHeapFlags; - DWORD[4] Reserved; + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + DWORD DeCommitFreeBlockThreshold; + DWORD DeCommitTotalFreeThreshold; + PVOID LockPrefixTable; + DWORD MaximumAllocationSize; + DWORD VirtualMemoryThreshold; + DWORD ProcessHeapFlags; + DWORD[4] Reserved; } alias IMAGE_LOAD_CONFIG_DIRECTORY* PIMAGE_LOAD_CONFIG_DIRECTORY; struct IMAGE_LOAD_CONFIG_DIRECTORY64 { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD GlobalFlagsClear; - DWORD GlobalFlagsSet; - DWORD CriticalSectionDefaultTimeout; - ULONGLONG DeCommitFreeBlockThreshold; - ULONGLONG DeCommitTotalFreeThreshold; - ULONGLONG LockPrefixTable; - ULONGLONG MaximumAllocationSize; - ULONGLONG VirtualMemoryThreshold; - ULONGLONG ProcessAffinityMask; - DWORD ProcessHeapFlags; - WORD CSDFlags; - WORD Reserved1; - ULONGLONG EditList; - DWORD[2] Reserved; + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + ULONGLONG DeCommitFreeBlockThreshold; + ULONGLONG DeCommitTotalFreeThreshold; + ULONGLONG LockPrefixTable; + ULONGLONG MaximumAllocationSize; + ULONGLONG VirtualMemoryThreshold; + ULONGLONG ProcessAffinityMask; + DWORD ProcessHeapFlags; + WORD CSDFlags; + WORD Reserved1; + ULONGLONG EditList; + DWORD[2] Reserved; } alias IMAGE_LOAD_CONFIG_DIRECTORY64* PIMAGE_LOAD_CONFIG_DIRECTORY64; struct IMAGE_RUNTIME_FUNCTION_ENTRY { - DWORD BeginAddress; - DWORD EndAddress; - PVOID ExceptionHandler; - PVOID HandlerData; - DWORD PrologEndAddress; + DWORD BeginAddress; + DWORD EndAddress; + PVOID ExceptionHandler; + PVOID HandlerData; + DWORD PrologEndAddress; } alias IMAGE_RUNTIME_FUNCTION_ENTRY* PIMAGE_RUNTIME_FUNCTION_ENTRY; struct IMAGE_CE_RUNTIME_FUNCTION_ENTRY { - uint FuncStart; - union { - ubyte PrologLen; - uint _bf; - } + uint FuncStart; + union { + ubyte PrologLen; + uint _bf; + } /+ - unsigned int FuncLen:22; - unsigned int ThirtyTwoBit:1; - unsigned int ExceptionFlag:1; + unsigned int FuncLen:22; + unsigned int ThirtyTwoBit:1; + unsigned int ExceptionFlag:1; +/ - uint FuncLen() { return (_bf >> 8) & 0x3FFFFF; } - bool ThirtyTwoBit() { return cast(bool)(_bf & 0x40000000); } - bool ExceptionFlag() { return cast(bool)(_bf & 0x80000000); } + uint FuncLen() { return (_bf >> 8) & 0x3FFFFF; } + bool ThirtyTwoBit() { return cast(bool)(_bf & 0x40000000); } + bool ExceptionFlag() { return cast(bool)(_bf & 0x80000000); } - uint FuncLen(uint f) { - _bf = (_bf & ~0x3FFFFF00) | ((f & 0x3FFFFF) << 8); return f & 0x3FFFFF; - } + uint FuncLen(uint f) { + _bf = (_bf & ~0x3FFFFF00) | ((f & 0x3FFFFF) << 8); return f & 0x3FFFFF; + } - bool ThirtyTwoBit(bool t) { - _bf = (_bf & ~0x40000000) | (t << 30); return t; - } + bool ThirtyTwoBit(bool t) { + _bf = (_bf & ~0x40000000) | (t << 30); return t; + } - bool ExceptionFlag(bool e) { - _bf = (_bf & ~0x80000000) | (e << 31); return e; - } + bool ExceptionFlag(bool e) { + _bf = (_bf & ~0x80000000) | (e << 31); return e; + } } alias IMAGE_CE_RUNTIME_FUNCTION_ENTRY* PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; struct IMAGE_DEBUG_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD Type; - DWORD SizeOfData; - DWORD AddressOfRawData; - DWORD PointerToRawData; + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Type; + DWORD SizeOfData; + DWORD AddressOfRawData; + DWORD PointerToRawData; } alias IMAGE_DEBUG_DIRECTORY* PIMAGE_DEBUG_DIRECTORY; struct FPO_DATA { - DWORD ulOffStart; - DWORD cbProcSize; - DWORD cdwLocals; - WORD cdwParams; - ubyte cbProlog; - ubyte _bf; + DWORD ulOffStart; + DWORD cbProcSize; + DWORD cdwLocals; + WORD cdwParams; + ubyte cbProlog; + ubyte _bf; /+ - WORD cbRegs:3; - WORD fHasSEH:1; - WORD fUseBP:1; - WORD reserved:1; - WORD cbFrame:2; + WORD cbRegs:3; + WORD fHasSEH:1; + WORD fUseBP:1; + WORD reserved:1; + WORD cbFrame:2; +/ - ubyte cbRegs() { return cast(ubyte)(_bf & 0x07); } - bool fHasSEH() { return cast(bool)(_bf & 0x08); } - bool fUseBP() { return cast(bool)(_bf & 0x10); } - bool reserved() { return cast(bool)(_bf & 0x20); } - ubyte cbFrame() { return cast(ubyte)(_bf >> 6); } - - ubyte cbRegs(ubyte c) { - _bf = cast(ubyte) ((_bf & ~0x07) | (c & 0x07)); - return cast(ubyte)(c & 0x07); - } - - bool fHasSEH(bool f) { _bf = cast(ubyte)((_bf & ~0x08) | (f << 3)); return f; } - bool fUseBP(bool f) { _bf = cast(ubyte)((_bf & ~0x10) | (f << 4)); return f; } - bool reserved(bool r) { _bf = cast(ubyte)((_bf & ~0x20) | (r << 5)); return r; } - - ubyte cbFrame(ubyte c) { - _bf = cast(ubyte) ((_bf & ~0xC0) | ((c & 0x03) << 6)); - return cast(ubyte)(c & 0x03); - } + ubyte cbRegs() { return cast(ubyte)(_bf & 0x07); } + bool fHasSEH() { return cast(bool)(_bf & 0x08); } + bool fUseBP() { return cast(bool)(_bf & 0x10); } + bool reserved() { return cast(bool)(_bf & 0x20); } + ubyte cbFrame() { return cast(ubyte)(_bf >> 6); } + + ubyte cbRegs(ubyte c) { + _bf = cast(ubyte) ((_bf & ~0x07) | (c & 0x07)); + return cast(ubyte)(c & 0x07); + } + + bool fHasSEH(bool f) { _bf = cast(ubyte)((_bf & ~0x08) | (f << 3)); return f; } + bool fUseBP(bool f) { _bf = cast(ubyte)((_bf & ~0x10) | (f << 4)); return f; } + bool reserved(bool r) { _bf = cast(ubyte)((_bf & ~0x20) | (r << 5)); return r; } + + ubyte cbFrame(ubyte c) { + _bf = cast(ubyte) ((_bf & ~0xC0) | ((c & 0x03) << 6)); + return cast(ubyte)(c & 0x03); + } } alias FPO_DATA* PFPO_DATA; struct IMAGE_DEBUG_MISC { - DWORD DataType; - DWORD Length; - BOOLEAN Unicode; - BYTE[3] Reserved; - BYTE _Data; + DWORD DataType; + DWORD Length; + BOOLEAN Unicode; + BYTE[3] Reserved; + BYTE _Data; - BYTE* Data() { return &_Data; } + BYTE* Data() { return &_Data; } } alias IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; struct IMAGE_FUNCTION_ENTRY { - DWORD StartingAddress; - DWORD EndingAddress; - DWORD EndOfPrologue; + DWORD StartingAddress; + DWORD EndingAddress; + DWORD EndOfPrologue; } alias IMAGE_FUNCTION_ENTRY* PIMAGE_FUNCTION_ENTRY; struct IMAGE_FUNCTION_ENTRY64 { - ULONGLONG StartingAddress; - ULONGLONG EndingAddress; - union { - ULONGLONG EndOfPrologue; - ULONGLONG UnwindInfoAddress; - } + ULONGLONG StartingAddress; + ULONGLONG EndingAddress; + union { + ULONGLONG EndOfPrologue; + ULONGLONG UnwindInfoAddress; + } } alias IMAGE_FUNCTION_ENTRY64* PIMAGE_FUNCTION_ENTRY64; struct IMAGE_SEPARATE_DEBUG_HEADER { - WORD Signature; - WORD Flags; - WORD Machine; - WORD Characteristics; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD ImageBase; - DWORD SizeOfImage; - DWORD NumberOfSections; - DWORD ExportedNamesSize; - DWORD DebugDirectorySize; - DWORD SectionAlignment; - DWORD[2] Reserved; + WORD Signature; + WORD Flags; + WORD Machine; + WORD Characteristics; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD ImageBase; + DWORD SizeOfImage; + DWORD NumberOfSections; + DWORD ExportedNamesSize; + DWORD DebugDirectorySize; + DWORD SectionAlignment; + DWORD[2] Reserved; } alias IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER; enum SERVICE_NODE_TYPE { - DriverType = SERVICE_KERNEL_DRIVER, - FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, - Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, - Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, - AdapterType = SERVICE_ADAPTER, - RecognizerType = SERVICE_RECOGNIZER_DRIVER + DriverType = SERVICE_KERNEL_DRIVER, + FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, + Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, + Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, + AdapterType = SERVICE_ADAPTER, + RecognizerType = SERVICE_RECOGNIZER_DRIVER } enum SERVICE_LOAD_TYPE { - BootLoad = SERVICE_BOOT_START, - SystemLoad = SERVICE_SYSTEM_START, - AutoLoad = SERVICE_AUTO_START, - DemandLoad = SERVICE_DEMAND_START, - DisableLoad = SERVICE_DISABLED + BootLoad = SERVICE_BOOT_START, + SystemLoad = SERVICE_SYSTEM_START, + AutoLoad = SERVICE_AUTO_START, + DemandLoad = SERVICE_DEMAND_START, + DisableLoad = SERVICE_DISABLED } enum SERVICE_ERROR_TYPE { - IgnoreError = SERVICE_ERROR_IGNORE, - NormalError = SERVICE_ERROR_NORMAL, - SevereError = SERVICE_ERROR_SEVERE, - CriticalError = SERVICE_ERROR_CRITICAL + IgnoreError = SERVICE_ERROR_IGNORE, + NormalError = SERVICE_ERROR_NORMAL, + SevereError = SERVICE_ERROR_SEVERE, + CriticalError = SERVICE_ERROR_CRITICAL } alias SERVICE_ERROR_TYPE _CM_ERROR_CONTROL_TYPE; @@ -3466,231 +3466,231 @@ alias void EXCEPTION_REGISTRATION_RECORD; align: struct NT_TIB { - EXCEPTION_REGISTRATION_RECORD *ExceptionList; - PVOID StackBase; - PVOID StackLimit; - PVOID SubSystemTib; - union { - PVOID FiberData; - DWORD Version; - } - PVOID ArbitraryUserPointer; - NT_TIB *Self; + EXCEPTION_REGISTRATION_RECORD *ExceptionList; + PVOID StackBase; + PVOID StackLimit; + PVOID SubSystemTib; + union { + PVOID FiberData; + DWORD Version; + } + PVOID ArbitraryUserPointer; + NT_TIB *Self; } alias NT_TIB* PNT_TIB; struct REPARSE_DATA_BUFFER { - DWORD ReparseTag; - WORD ReparseDataLength; - WORD Reserved; - union { - struct _GenericReparseBuffer { - BYTE _DataBuffer; - - BYTE* DataBuffer() { return &_DataBuffer; } - } - _GenericReparseBuffer GenericReparseBuffer; - struct _SymbolicLinkReparseBuffer { - WORD SubstituteNameOffset; - WORD SubstituteNameLength; - WORD PrintNameOffset; - WORD PrintNameLength; - // ??? This is in MinGW, but absent in MSDN docs - ULONG Flags; - WCHAR _PathBuffer; - - WCHAR* PathBuffer() { return &_PathBuffer; } - } - _SymbolicLinkReparseBuffer SymbolicLinkReparseBuffer; - struct _MountPointReparseBuffer { - WORD SubstituteNameOffset; - WORD SubstituteNameLength; - WORD PrintNameOffset; - WORD PrintNameLength; - WCHAR _PathBuffer; - - WCHAR* PathBuffer() { return &_PathBuffer; } - } - _MountPointReparseBuffer MountPointReparseBuffer; - } + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + union { + struct _GenericReparseBuffer { + BYTE _DataBuffer; + + BYTE* DataBuffer() { return &_DataBuffer; } + } + _GenericReparseBuffer GenericReparseBuffer; + struct _SymbolicLinkReparseBuffer { + WORD SubstituteNameOffset; + WORD SubstituteNameLength; + WORD PrintNameOffset; + WORD PrintNameLength; + // ??? This is in MinGW, but absent in MSDN docs + ULONG Flags; + WCHAR _PathBuffer; + + WCHAR* PathBuffer() { return &_PathBuffer; } + } + _SymbolicLinkReparseBuffer SymbolicLinkReparseBuffer; + struct _MountPointReparseBuffer { + WORD SubstituteNameOffset; + WORD SubstituteNameLength; + WORD PrintNameOffset; + WORD PrintNameLength; + WCHAR _PathBuffer; + + WCHAR* PathBuffer() { return &_PathBuffer; } + } + _MountPointReparseBuffer MountPointReparseBuffer; + } } alias REPARSE_DATA_BUFFER *PREPARSE_DATA_BUFFER; struct REPARSE_GUID_DATA_BUFFER { - DWORD ReparseTag; - WORD ReparseDataLength; - WORD Reserved; - GUID ReparseGuid; - struct _GenericReparseBuffer { - BYTE _DataBuffer; + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + GUID ReparseGuid; + struct _GenericReparseBuffer { + BYTE _DataBuffer; - BYTE* DataBuffer() { return &_DataBuffer; } - } - _GenericReparseBuffer GenericReparseBuffer; + BYTE* DataBuffer() { return &_DataBuffer; } + } + _GenericReparseBuffer GenericReparseBuffer; } alias REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; const size_t - REPARSE_DATA_BUFFER_HEADER_SIZE = REPARSE_DATA_BUFFER.GenericReparseBuffer.offsetof, - REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = REPARSE_GUID_DATA_BUFFER.GenericReparseBuffer.offsetof, - MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384; + REPARSE_DATA_BUFFER_HEADER_SIZE = REPARSE_DATA_BUFFER.GenericReparseBuffer.offsetof, + REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = REPARSE_GUID_DATA_BUFFER.GenericReparseBuffer.offsetof, + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384; struct REPARSE_POINT_INFORMATION { - WORD ReparseDataLength; - WORD UnparsedNameLength; + WORD ReparseDataLength; + WORD UnparsedNameLength; } alias REPARSE_POINT_INFORMATION* PREPARSE_POINT_INFORMATION; union FILE_SEGMENT_ELEMENT { - PVOID64 Buffer; - ULONGLONG Alignment; + PVOID64 Buffer; + ULONGLONG Alignment; } alias FILE_SEGMENT_ELEMENT* PFILE_SEGMENT_ELEMENT; // JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants const DWORD - JOB_OBJECT_LIMIT_WORKINGSET = 0x0001, - JOB_OBJECT_LIMIT_PROCESS_TIME = 0x0002, - JOB_OBJECT_LIMIT_JOB_TIME = 0x0004, - JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x0008, - JOB_OBJECT_LIMIT_AFFINITY = 0x0010, - JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x0020, - JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x0040, - JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x0080, - JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x0100, - JOB_OBJECT_LIMIT_JOB_MEMORY = 0x0200, - JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x0400, - JOB_OBJECT_BREAKAWAY_OK = 0x0800, - JOB_OBJECT_SILENT_BREAKAWAY = 0x1000; + JOB_OBJECT_LIMIT_WORKINGSET = 0x0001, + JOB_OBJECT_LIMIT_PROCESS_TIME = 0x0002, + JOB_OBJECT_LIMIT_JOB_TIME = 0x0004, + JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x0008, + JOB_OBJECT_LIMIT_AFFINITY = 0x0010, + JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x0020, + JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x0040, + JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x0080, + JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x0100, + JOB_OBJECT_LIMIT_JOB_MEMORY = 0x0200, + JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x0400, + JOB_OBJECT_BREAKAWAY_OK = 0x0800, + JOB_OBJECT_SILENT_BREAKAWAY = 0x1000; // JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants const DWORD - JOB_OBJECT_UILIMIT_HANDLES = 0x0001, - JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x0002, - JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x0004, - JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x0008, - JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x0010, - JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x0020, - JOB_OBJECT_UILIMIT_DESKTOP = 0x0040, - JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x0080; + JOB_OBJECT_UILIMIT_HANDLES = 0x0001, + JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x0002, + JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x0004, + JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x0008, + JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x0010, + JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x0020, + JOB_OBJECT_UILIMIT_DESKTOP = 0x0040, + JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x0080; // JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants const DWORD - JOB_OBJECT_SECURITY_NO_ADMIN = 0x0001, - JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x0002, - JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x0004, - JOB_OBJECT_SECURITY_FILTER_TOKENS = 0x0008; + JOB_OBJECT_SECURITY_NO_ADMIN = 0x0001, + JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x0002, + JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x0004, + JOB_OBJECT_SECURITY_FILTER_TOKENS = 0x0008; // JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants enum : DWORD { - JOB_OBJECT_TERMINATE_AT_END_OF_JOB, - JOB_OBJECT_POST_AT_END_OF_JOB + JOB_OBJECT_TERMINATE_AT_END_OF_JOB, + JOB_OBJECT_POST_AT_END_OF_JOB } enum : DWORD { - JOB_OBJECT_MSG_END_OF_JOB_TIME = 1, - JOB_OBJECT_MSG_END_OF_PROCESS_TIME, - JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT, - JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO, - JOB_OBJECT_MSG_NEW_PROCESS, - JOB_OBJECT_MSG_EXIT_PROCESS, - JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS, - JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT, - JOB_OBJECT_MSG_JOB_MEMORY_LIMIT + JOB_OBJECT_MSG_END_OF_JOB_TIME = 1, + JOB_OBJECT_MSG_END_OF_PROCESS_TIME, + JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT, + JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO, + JOB_OBJECT_MSG_NEW_PROCESS, + JOB_OBJECT_MSG_EXIT_PROCESS, + JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS, + JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT, + JOB_OBJECT_MSG_JOB_MEMORY_LIMIT } enum JOBOBJECTINFOCLASS { - JobObjectBasicAccountingInformation = 1, - JobObjectBasicLimitInformation, - JobObjectBasicProcessIdList, - JobObjectBasicUIRestrictions, - JobObjectSecurityLimitInformation, - JobObjectEndOfJobTimeInformation, - JobObjectAssociateCompletionPortInformation, - JobObjectBasicAndIoAccountingInformation, - JobObjectExtendedLimitInformation, - JobObjectJobSetInformation, - MaxJobObjectInfoClass + JobObjectBasicAccountingInformation = 1, + JobObjectBasicLimitInformation, + JobObjectBasicProcessIdList, + JobObjectBasicUIRestrictions, + JobObjectSecurityLimitInformation, + JobObjectEndOfJobTimeInformation, + JobObjectAssociateCompletionPortInformation, + JobObjectBasicAndIoAccountingInformation, + JobObjectExtendedLimitInformation, + JobObjectJobSetInformation, + MaxJobObjectInfoClass } struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { - LARGE_INTEGER TotalUserTime; - LARGE_INTEGER TotalKernelTime; - LARGE_INTEGER ThisPeriodTotalUserTime; - LARGE_INTEGER ThisPeriodTotalKernelTime; - DWORD TotalPageFaultCount; - DWORD TotalProcesses; - DWORD ActiveProcesses; - DWORD TotalTerminatedProcesses; + LARGE_INTEGER TotalUserTime; + LARGE_INTEGER TotalKernelTime; + LARGE_INTEGER ThisPeriodTotalUserTime; + LARGE_INTEGER ThisPeriodTotalKernelTime; + DWORD TotalPageFaultCount; + DWORD TotalProcesses; + DWORD ActiveProcesses; + DWORD TotalTerminatedProcesses; } alias JOBOBJECT_BASIC_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; struct JOBOBJECT_BASIC_LIMIT_INFORMATION { - LARGE_INTEGER PerProcessUserTimeLimit; - LARGE_INTEGER PerJobUserTimeLimit; - DWORD LimitFlags; - SIZE_T MinimumWorkingSetSize; - SIZE_T MaximumWorkingSetSize; - DWORD ActiveProcessLimit; - ULONG_PTR Affinity; - DWORD PriorityClass; - DWORD SchedulingClass; + LARGE_INTEGER PerProcessUserTimeLimit; + LARGE_INTEGER PerJobUserTimeLimit; + DWORD LimitFlags; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + DWORD ActiveProcessLimit; + ULONG_PTR Affinity; + DWORD PriorityClass; + DWORD SchedulingClass; } alias JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_INFORMATION; struct JOBOBJECT_BASIC_PROCESS_ID_LIST { - DWORD NumberOfAssignedProcesses; - DWORD NumberOfProcessIdsInList; - ULONG_PTR _ProcessIdList; + DWORD NumberOfAssignedProcesses; + DWORD NumberOfProcessIdsInList; + ULONG_PTR _ProcessIdList; - ULONG_PTR* ProcessIdList() { return &_ProcessIdList; } + ULONG_PTR* ProcessIdList() { return &_ProcessIdList; } } alias JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; struct JOBOBJECT_BASIC_UI_RESTRICTIONS { - DWORD UIRestrictionsClass; + DWORD UIRestrictionsClass; } alias JOBOBJECT_BASIC_UI_RESTRICTIONS* PJOBOBJECT_BASIC_UI_RESTRICTIONS; struct JOBOBJECT_SECURITY_LIMIT_INFORMATION { - DWORD SecurityLimitFlags; - HANDLE JobToken; - PTOKEN_GROUPS SidsToDisable; - PTOKEN_PRIVILEGES PrivilegesToDelete; - PTOKEN_GROUPS RestrictedSids; + DWORD SecurityLimitFlags; + HANDLE JobToken; + PTOKEN_GROUPS SidsToDisable; + PTOKEN_PRIVILEGES PrivilegesToDelete; + PTOKEN_GROUPS RestrictedSids; } alias JOBOBJECT_SECURITY_LIMIT_INFORMATION* PJOBOBJECT_SECURITY_LIMIT_INFORMATION; struct JOBOBJECT_END_OF_JOB_TIME_INFORMATION { - DWORD EndOfJobTimeAction; + DWORD EndOfJobTimeAction; } alias JOBOBJECT_END_OF_JOB_TIME_INFORMATION* PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; struct JOBOBJECT_ASSOCIATE_COMPLETION_PORT { - PVOID CompletionKey; - HANDLE CompletionPort; + PVOID CompletionKey; + HANDLE CompletionPort; } alias JOBOBJECT_ASSOCIATE_COMPLETION_PORT* PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; struct JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { - JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; - IO_COUNTERS IoInfo; + JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; + IO_COUNTERS IoInfo; } alias JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION *PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION { - JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; - IO_COUNTERS IoInfo; - SIZE_T ProcessMemoryLimit; - SIZE_T JobMemoryLimit; - SIZE_T PeakProcessMemoryUsed; - SIZE_T PeakJobMemoryUsed; + JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; + IO_COUNTERS IoInfo; + SIZE_T ProcessMemoryLimit; + SIZE_T JobMemoryLimit; + SIZE_T PeakProcessMemoryUsed; + SIZE_T PeakJobMemoryUsed; } alias JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; struct JOBOBJECT_JOBSET_INFORMATION { - DWORD MemberLevel; + DWORD MemberLevel; } alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; @@ -3698,368 +3698,368 @@ alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; //static if (_WIN32_WINNT >= 0x500) { const DWORD - ES_SYSTEM_REQUIRED = 0x00000001, - ES_DISPLAY_REQUIRED = 0x00000002, - ES_USER_PRESENT = 0x00000004, - ES_CONTINUOUS = 0x80000000; + ES_SYSTEM_REQUIRED = 0x00000001, + ES_DISPLAY_REQUIRED = 0x00000002, + ES_USER_PRESENT = 0x00000004, + ES_CONTINUOUS = 0x80000000; enum LATENCY_TIME { - LT_DONT_CARE, - LT_LOWEST_LATENCY + LT_DONT_CARE, + LT_LOWEST_LATENCY } alias LATENCY_TIME* PLATENCY_TIME; enum SYSTEM_POWER_STATE { - PowerSystemUnspecified, - PowerSystemWorking, - PowerSystemSleeping1, - PowerSystemSleeping2, - PowerSystemSleeping3, - PowerSystemHibernate, - PowerSystemShutdown, - PowerSystemMaximum + PowerSystemUnspecified, + PowerSystemWorking, + PowerSystemSleeping1, + PowerSystemSleeping2, + PowerSystemSleeping3, + PowerSystemHibernate, + PowerSystemShutdown, + PowerSystemMaximum } alias SYSTEM_POWER_STATE* PSYSTEM_POWER_STATE; const POWER_SYSTEM_MAXIMUM = SYSTEM_POWER_STATE.PowerSystemMaximum; enum POWER_ACTION { - PowerActionNone, - PowerActionReserved, - PowerActionSleep, - PowerActionHibernate, - PowerActionShutdown, - PowerActionShutdownReset, - PowerActionShutdownOff, - PowerActionWarmEject + PowerActionNone, + PowerActionReserved, + PowerActionSleep, + PowerActionHibernate, + PowerActionShutdown, + PowerActionShutdownReset, + PowerActionShutdownOff, + PowerActionWarmEject } alias POWER_ACTION* PPOWER_ACTION; static if (_WIN32_WINNT >= 0x600) { - enum SYSTEM_POWER_CONDITION { - PoAc, - PoDc, - PoHot, - PoConditionMaximum - } - alias SYSTEM_POWER_CONDITION* PSYSTEM_POWER_CONDITION; + enum SYSTEM_POWER_CONDITION { + PoAc, + PoDc, + PoHot, + PoConditionMaximum + } + alias SYSTEM_POWER_CONDITION* PSYSTEM_POWER_CONDITION; } enum DEVICE_POWER_STATE { - PowerDeviceUnspecified, - PowerDeviceD0, - PowerDeviceD1, - PowerDeviceD2, - PowerDeviceD3, - PowerDeviceMaximum + PowerDeviceUnspecified, + PowerDeviceD0, + PowerDeviceD1, + PowerDeviceD2, + PowerDeviceD3, + PowerDeviceMaximum } alias DEVICE_POWER_STATE* PDEVICE_POWER_STATE; align(4): struct BATTERY_REPORTING_SCALE { - DWORD Granularity; - DWORD Capacity; + DWORD Granularity; + DWORD Capacity; } alias BATTERY_REPORTING_SCALE* PBATTERY_REPORTING_SCALE; struct POWER_ACTION_POLICY { - POWER_ACTION Action; - ULONG Flags; - ULONG EventCode; + POWER_ACTION Action; + ULONG Flags; + ULONG EventCode; } alias POWER_ACTION_POLICY* PPOWER_ACTION_POLICY; // POWER_ACTION_POLICY.Flags constants const ULONG - POWER_ACTION_QUERY_ALLOWED = 0x00000001, - POWER_ACTION_UI_ALLOWED = 0x00000002, - POWER_ACTION_OVERRIDE_APPS = 0x00000004, - POWER_ACTION_LIGHTEST_FIRST = 0x10000000, - POWER_ACTION_LOCK_CONSOLE = 0x20000000, - POWER_ACTION_DISABLE_WAKES = 0x40000000, - POWER_ACTION_CRITICAL = 0x80000000; + POWER_ACTION_QUERY_ALLOWED = 0x00000001, + POWER_ACTION_UI_ALLOWED = 0x00000002, + POWER_ACTION_OVERRIDE_APPS = 0x00000004, + POWER_ACTION_LIGHTEST_FIRST = 0x10000000, + POWER_ACTION_LOCK_CONSOLE = 0x20000000, + POWER_ACTION_DISABLE_WAKES = 0x40000000, + POWER_ACTION_CRITICAL = 0x80000000; // POWER_ACTION_POLICY.EventCode constants const ULONG - POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001, - POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002, - POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004, - POWER_USER_NOTIFY_BUTTON = 0x00000008, - POWER_USER_NOTIFY_SHUTDOWN = 0x00000010, - POWER_FORCE_TRIGGER_RESET = 0x80000000; + POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001, + POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002, + POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004, + POWER_USER_NOTIFY_BUTTON = 0x00000008, + POWER_USER_NOTIFY_SHUTDOWN = 0x00000010, + POWER_FORCE_TRIGGER_RESET = 0x80000000; const size_t - DISCHARGE_POLICY_CRITICAL = 0, - DISCHARGE_POLICY_LOW = 1, - NUM_DISCHARGE_POLICIES = 4; + DISCHARGE_POLICY_CRITICAL = 0, + DISCHARGE_POLICY_LOW = 1, + NUM_DISCHARGE_POLICIES = 4; enum : BYTE { - PO_THROTTLE_NONE, - PO_THROTTLE_CONSTANT, - PO_THROTTLE_DEGRADE, - PO_THROTTLE_ADAPTIVE, - PO_THROTTLE_MAXIMUM + PO_THROTTLE_NONE, + PO_THROTTLE_CONSTANT, + PO_THROTTLE_DEGRADE, + PO_THROTTLE_ADAPTIVE, + PO_THROTTLE_MAXIMUM } struct SYSTEM_POWER_LEVEL { - BOOLEAN Enable; - UCHAR[3] Spare; - ULONG BatteryLevel; - POWER_ACTION_POLICY PowerPolicy; - SYSTEM_POWER_STATE MinSystemState; + BOOLEAN Enable; + UCHAR[3] Spare; + ULONG BatteryLevel; + POWER_ACTION_POLICY PowerPolicy; + SYSTEM_POWER_STATE MinSystemState; } alias SYSTEM_POWER_LEVEL* PSYSTEM_POWER_LEVEL; struct SYSTEM_POWER_POLICY { - ULONG Revision; - POWER_ACTION_POLICY PowerButton; - POWER_ACTION_POLICY SleepButton; - POWER_ACTION_POLICY LidClose; - SYSTEM_POWER_STATE LidOpenWake; - ULONG Reserved; - POWER_ACTION_POLICY Idle; - ULONG IdleTimeout; - UCHAR IdleSensitivity; - UCHAR DynamicThrottle; - UCHAR[2] Spare2; - SYSTEM_POWER_STATE MinSleep; - SYSTEM_POWER_STATE MaxSleep; - SYSTEM_POWER_STATE ReducedLatencySleep; - ULONG WinLogonFlags; - ULONG Spare3; - ULONG DozeS4Timeout; - ULONG BroadcastCapacityResolution; - SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; - ULONG VideoTimeout; - BOOLEAN VideoDimDisplay; - ULONG[3] VideoReserved; - ULONG SpindownTimeout; - BOOLEAN OptimizeForPower; - UCHAR FanThrottleTolerance; - UCHAR ForcedThrottle; - UCHAR MinThrottle; - POWER_ACTION_POLICY OverThrottled; + ULONG Revision; + POWER_ACTION_POLICY PowerButton; + POWER_ACTION_POLICY SleepButton; + POWER_ACTION_POLICY LidClose; + SYSTEM_POWER_STATE LidOpenWake; + ULONG Reserved; + POWER_ACTION_POLICY Idle; + ULONG IdleTimeout; + UCHAR IdleSensitivity; + UCHAR DynamicThrottle; + UCHAR[2] Spare2; + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + SYSTEM_POWER_STATE ReducedLatencySleep; + ULONG WinLogonFlags; + ULONG Spare3; + ULONG DozeS4Timeout; + ULONG BroadcastCapacityResolution; + SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; + ULONG VideoTimeout; + BOOLEAN VideoDimDisplay; + ULONG[3] VideoReserved; + ULONG SpindownTimeout; + BOOLEAN OptimizeForPower; + UCHAR FanThrottleTolerance; + UCHAR ForcedThrottle; + UCHAR MinThrottle; + POWER_ACTION_POLICY OverThrottled; } alias SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY; struct SYSTEM_POWER_CAPABILITIES { - BOOLEAN PowerButtonPresent; - BOOLEAN SleepButtonPresent; - BOOLEAN LidPresent; - BOOLEAN SystemS1; - BOOLEAN SystemS2; - BOOLEAN SystemS3; - BOOLEAN SystemS4; - BOOLEAN SystemS5; - BOOLEAN HiberFilePresent; - BOOLEAN FullWake; - BOOLEAN VideoDimPresent; - BOOLEAN ApmPresent; - BOOLEAN UpsPresent; - BOOLEAN ThermalControl; - BOOLEAN ProcessorThrottle; - UCHAR ProcessorMinThrottle; - UCHAR ProcessorMaxThrottle; - UCHAR[4] spare2; - BOOLEAN DiskSpinDown; - UCHAR[8] spare3; - BOOLEAN SystemBatteriesPresent; - BOOLEAN BatteriesAreShortTerm; - BATTERY_REPORTING_SCALE[3] BatteryScale; - SYSTEM_POWER_STATE AcOnLineWake; - SYSTEM_POWER_STATE SoftLidWake; - SYSTEM_POWER_STATE RtcWake; - SYSTEM_POWER_STATE MinDeviceWakeState; - SYSTEM_POWER_STATE DefaultLowLatencyWake; + BOOLEAN PowerButtonPresent; + BOOLEAN SleepButtonPresent; + BOOLEAN LidPresent; + BOOLEAN SystemS1; + BOOLEAN SystemS2; + BOOLEAN SystemS3; + BOOLEAN SystemS4; + BOOLEAN SystemS5; + BOOLEAN HiberFilePresent; + BOOLEAN FullWake; + BOOLEAN VideoDimPresent; + BOOLEAN ApmPresent; + BOOLEAN UpsPresent; + BOOLEAN ThermalControl; + BOOLEAN ProcessorThrottle; + UCHAR ProcessorMinThrottle; + UCHAR ProcessorMaxThrottle; + UCHAR[4] spare2; + BOOLEAN DiskSpinDown; + UCHAR[8] spare3; + BOOLEAN SystemBatteriesPresent; + BOOLEAN BatteriesAreShortTerm; + BATTERY_REPORTING_SCALE[3] BatteryScale; + SYSTEM_POWER_STATE AcOnLineWake; + SYSTEM_POWER_STATE SoftLidWake; + SYSTEM_POWER_STATE RtcWake; + SYSTEM_POWER_STATE MinDeviceWakeState; + SYSTEM_POWER_STATE DefaultLowLatencyWake; } alias SYSTEM_POWER_CAPABILITIES* PSYSTEM_POWER_CAPABILITIES; struct SYSTEM_BATTERY_STATE { - BOOLEAN AcOnLine; - BOOLEAN BatteryPresent; - BOOLEAN Charging; - BOOLEAN Discharging; - BOOLEAN[4] Spare1; - ULONG MaxCapacity; - ULONG RemainingCapacity; - ULONG Rate; - ULONG EstimatedTime; - ULONG DefaultAlert1; - ULONG DefaultAlert2; + BOOLEAN AcOnLine; + BOOLEAN BatteryPresent; + BOOLEAN Charging; + BOOLEAN Discharging; + BOOLEAN[4] Spare1; + ULONG MaxCapacity; + ULONG RemainingCapacity; + ULONG Rate; + ULONG EstimatedTime; + ULONG DefaultAlert1; + ULONG DefaultAlert2; } alias SYSTEM_BATTERY_STATE* PSYSTEM_BATTERY_STATE; enum POWER_INFORMATION_LEVEL { - SystemPowerPolicyAc, - SystemPowerPolicyDc, - VerifySystemPolicyAc, - VerifySystemPolicyDc, - SystemPowerCapabilities, - SystemBatteryState, - SystemPowerStateHandler, - ProcessorStateHandler, - SystemPowerPolicyCurrent, - AdministratorPowerPolicy, - SystemReserveHiberFile, - ProcessorInformation, - SystemPowerInformation, - ProcessorStateHandler2, - LastWakeTime, - LastSleepTime, - SystemExecutionState, - SystemPowerStateNotifyHandler, - ProcessorPowerPolicyAc, - ProcessorPowerPolicyDc, - VerifyProcessorPowerPolicyAc, - VerifyProcessorPowerPolicyDc, - ProcessorPowerPolicyCurrent + SystemPowerPolicyAc, + SystemPowerPolicyDc, + VerifySystemPolicyAc, + VerifySystemPolicyDc, + SystemPowerCapabilities, + SystemBatteryState, + SystemPowerStateHandler, + ProcessorStateHandler, + SystemPowerPolicyCurrent, + AdministratorPowerPolicy, + SystemReserveHiberFile, + ProcessorInformation, + SystemPowerInformation, + ProcessorStateHandler2, + LastWakeTime, + LastSleepTime, + SystemExecutionState, + SystemPowerStateNotifyHandler, + ProcessorPowerPolicyAc, + ProcessorPowerPolicyDc, + VerifyProcessorPowerPolicyAc, + VerifyProcessorPowerPolicyDc, + ProcessorPowerPolicyCurrent } //#if 1 /* (WIN32_WINNT >= 0x0500) */ struct SYSTEM_POWER_INFORMATION { - ULONG MaxIdlenessAllowed; - ULONG Idleness; - ULONG TimeRemaining; - UCHAR CoolingMode; + ULONG MaxIdlenessAllowed; + ULONG Idleness; + ULONG TimeRemaining; + UCHAR CoolingMode; } alias SYSTEM_POWER_INFORMATION* PSYSTEM_POWER_INFORMATION; //#endif struct PROCESSOR_POWER_POLICY_INFO { - ULONG TimeCheck; - ULONG DemoteLimit; - ULONG PromoteLimit; - UCHAR DemotePercent; - UCHAR PromotePercent; - UCHAR[2] Spare; - uint _bf; - - bool AllowDemotion() { return cast(bool)(_bf & 1); } - bool AllowPromotion() { return cast(bool)(_bf & 2); } - - bool AllowDemotion(bool a) { _bf = (_bf & ~1) | a; return a; } - bool AllowPromotion(bool a) { _bf = (_bf & ~2) | (a << 1); return a; } + ULONG TimeCheck; + ULONG DemoteLimit; + ULONG PromoteLimit; + UCHAR DemotePercent; + UCHAR PromotePercent; + UCHAR[2] Spare; + uint _bf; + + bool AllowDemotion() { return cast(bool)(_bf & 1); } + bool AllowPromotion() { return cast(bool)(_bf & 2); } + + bool AllowDemotion(bool a) { _bf = (_bf & ~1) | a; return a; } + bool AllowPromotion(bool a) { _bf = (_bf & ~2) | (a << 1); return a; } /+ - ULONG AllowDemotion : 1; - ULONG AllowPromotion : 1; - ULONG Reserved : 30; + ULONG AllowDemotion : 1; + ULONG AllowPromotion : 1; + ULONG Reserved : 30; +/ } alias PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO; struct PROCESSOR_POWER_POLICY { - ULONG Revision; - UCHAR DynamicThrottle; - UCHAR[3] Spare; - ULONG Reserved; - ULONG PolicyCount; - PROCESSOR_POWER_POLICY_INFO[3] Policy; + ULONG Revision; + UCHAR DynamicThrottle; + UCHAR[3] Spare; + ULONG Reserved; + ULONG PolicyCount; + PROCESSOR_POWER_POLICY_INFO[3] Policy; } alias PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; struct ADMINISTRATOR_POWER_POLICY { - SYSTEM_POWER_STATE MinSleep; - SYSTEM_POWER_STATE MaxSleep; - ULONG MinVideoTimeout; - ULONG MaxVideoTimeout; - ULONG MinSpindownTimeout; - ULONG MaxSpindownTimeout; + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + ULONG MinVideoTimeout; + ULONG MaxVideoTimeout; + ULONG MinSpindownTimeout; + ULONG MaxSpindownTimeout; } alias ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; //}//#endif /* _WIN32_WINNT >= 0x500 */ extern (Windows) { - alias void function(PVOID, DWORD, PVOID) PIMAGE_TLS_CALLBACK; + alias void function(PVOID, DWORD, PVOID) PIMAGE_TLS_CALLBACK; - static if (_WIN32_WINNT >= 0x500) { - alias LONG function(PEXCEPTION_POINTERS) PVECTORED_EXCEPTION_HANDLER; - alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACKFUNC; - } + static if (_WIN32_WINNT >= 0x500) { + alias LONG function(PEXCEPTION_POINTERS) PVECTORED_EXCEPTION_HANDLER; + alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACKFUNC; + } } static if (_WIN32_WINNT >= 0x501) { - enum HEAP_INFORMATION_CLASS { - HeapCompatibilityInformation - } - - enum ACTIVATION_CONTEXT_INFO_CLASS { - ActivationContextBasicInformation = 1, - ActivationContextDetailedInformation, - AssemblyDetailedInformationInActivationContext, - FileInformationInAssemblyOfAssemblyInActivationContext - } - - struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { - DWORD ulFlags; - DWORD ulEncodedAssemblyIdentityLength; - DWORD ulManifestPathType; - DWORD ulManifestPathLength; - LARGE_INTEGER liManifestLastWriteTime; - DWORD ulPolicyPathType; - DWORD ulPolicyPathLength; - LARGE_INTEGER liPolicyLastWriteTime; - DWORD ulMetadataSatelliteRosterIndex; - DWORD ulManifestVersionMajor; - DWORD ulManifestVersionMinor; - DWORD ulPolicyVersionMajor; - DWORD ulPolicyVersionMinor; - DWORD ulAssemblyDirectoryNameLength; - PCWSTR lpAssemblyEncodedAssemblyIdentity; - PCWSTR lpAssemblyManifestPath; - PCWSTR lpAssemblyPolicyPath; - PCWSTR lpAssemblyDirectoryName; - } - alias ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* - PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; - alias const(ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION)* - PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; - - struct ACTIVATION_CONTEXT_DETAILED_INFORMATION { - DWORD dwFlags; - DWORD ulFormatVersion; - DWORD ulAssemblyCount; - DWORD ulRootManifestPathType; - DWORD ulRootManifestPathChars; - DWORD ulRootConfigurationPathType; - DWORD ulRootConfigurationPathChars; - DWORD ulAppDirPathType; - DWORD ulAppDirPathChars; - PCWSTR lpRootManifestPath; - PCWSTR lpRootConfigurationPath; - PCWSTR lpAppDirPath; - } - alias ACTIVATION_CONTEXT_DETAILED_INFORMATION* - PACTIVATION_CONTEXT_DETAILED_INFORMATION; - alias const(ACTIVATION_CONTEXT_DETAILED_INFORMATION)* - PCACTIVATION_CONTEXT_DETAILED_INFORMATION; - - struct ACTIVATION_CONTEXT_QUERY_INDEX { - ULONG ulAssemblyIndex; - ULONG ulFileIndexInAssembly; - } - alias ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX; - alias const(ACTIVATION_CONTEXT_QUERY_INDEX)* PCACTIVATION_CONTEXT_QUERY_INDEX; - - struct ASSEMBLY_FILE_DETAILED_INFORMATION { - DWORD ulFlags; - DWORD ulFilenameLength; - DWORD ulPathLength; - PCWSTR lpFileName; - PCWSTR lpFilePath; - } - alias ASSEMBLY_FILE_DETAILED_INFORMATION* - PASSEMBLY_FILE_DETAILED_INFORMATION; - alias const(ASSEMBLY_FILE_DETAILED_INFORMATION)* - PCASSEMBLY_FILE_DETAILED_INFORMATION; + enum HEAP_INFORMATION_CLASS { + HeapCompatibilityInformation + } + + enum ACTIVATION_CONTEXT_INFO_CLASS { + ActivationContextBasicInformation = 1, + ActivationContextDetailedInformation, + AssemblyDetailedInformationInActivationContext, + FileInformationInAssemblyOfAssemblyInActivationContext + } + + struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulEncodedAssemblyIdentityLength; + DWORD ulManifestPathType; + DWORD ulManifestPathLength; + LARGE_INTEGER liManifestLastWriteTime; + DWORD ulPolicyPathType; + DWORD ulPolicyPathLength; + LARGE_INTEGER liPolicyLastWriteTime; + DWORD ulMetadataSatelliteRosterIndex; + DWORD ulManifestVersionMajor; + DWORD ulManifestVersionMinor; + DWORD ulPolicyVersionMajor; + DWORD ulPolicyVersionMinor; + DWORD ulAssemblyDirectoryNameLength; + PCWSTR lpAssemblyEncodedAssemblyIdentity; + PCWSTR lpAssemblyManifestPath; + PCWSTR lpAssemblyPolicyPath; + PCWSTR lpAssemblyDirectoryName; + } + alias ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* + PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + alias const(ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION)* + PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + + struct ACTIVATION_CONTEXT_DETAILED_INFORMATION { + DWORD dwFlags; + DWORD ulFormatVersion; + DWORD ulAssemblyCount; + DWORD ulRootManifestPathType; + DWORD ulRootManifestPathChars; + DWORD ulRootConfigurationPathType; + DWORD ulRootConfigurationPathChars; + DWORD ulAppDirPathType; + DWORD ulAppDirPathChars; + PCWSTR lpRootManifestPath; + PCWSTR lpRootConfigurationPath; + PCWSTR lpAppDirPath; + } + alias ACTIVATION_CONTEXT_DETAILED_INFORMATION* + PACTIVATION_CONTEXT_DETAILED_INFORMATION; + alias const(ACTIVATION_CONTEXT_DETAILED_INFORMATION)* + PCACTIVATION_CONTEXT_DETAILED_INFORMATION; + + struct ACTIVATION_CONTEXT_QUERY_INDEX { + ULONG ulAssemblyIndex; + ULONG ulFileIndexInAssembly; + } + alias ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX; + alias const(ACTIVATION_CONTEXT_QUERY_INDEX)* PCACTIVATION_CONTEXT_QUERY_INDEX; + + struct ASSEMBLY_FILE_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulFilenameLength; + DWORD ulPathLength; + PCWSTR lpFileName; + PCWSTR lpFilePath; + } + alias ASSEMBLY_FILE_DETAILED_INFORMATION* + PASSEMBLY_FILE_DETAILED_INFORMATION; + alias const(ASSEMBLY_FILE_DETAILED_INFORMATION)* + PCASSEMBLY_FILE_DETAILED_INFORMATION; } version (Unicode) { - alias OSVERSIONINFOW OSVERSIONINFO; - alias OSVERSIONINFOEXW OSVERSIONINFOEX; + alias OSVERSIONINFOW OSVERSIONINFO; + alias OSVERSIONINFOEXW OSVERSIONINFOEX; } else { - alias OSVERSIONINFOA OSVERSIONINFO; - alias OSVERSIONINFOEXA OSVERSIONINFOEX; + alias OSVERSIONINFOA OSVERSIONINFO; + alias OSVERSIONINFOEXA OSVERSIONINFOEX; } alias OSVERSIONINFO* POSVERSIONINFO, LPOSVERSIONINFO; @@ -4067,29 +4067,29 @@ alias OSVERSIONINFOEX* POSVERSIONINFOEX, LPOSVERSIONINFOEX; static if (_WIN32_WINNT >= 0x500) { - extern (Windows) ULONGLONG VerSetConditionMask(ULONGLONG, DWORD, BYTE); + extern (Windows) ULONGLONG VerSetConditionMask(ULONGLONG, DWORD, BYTE); } version (Win64) { - const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR64_MAGIC; - - alias IMAGE_ORDINAL_FLAG64 IMAGE_ORDINAL_FLAG; - alias IMAGE_SNAP_BY_ORDINAL64 IMAGE_SNAP_BY_ORDINAL; - alias IMAGE_ORDINAL64 IMAGE_ORDINAL; - alias IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; - alias IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; - alias IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; - alias IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; + const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR64_MAGIC; + + alias IMAGE_ORDINAL_FLAG64 IMAGE_ORDINAL_FLAG; + alias IMAGE_SNAP_BY_ORDINAL64 IMAGE_SNAP_BY_ORDINAL; + alias IMAGE_ORDINAL64 IMAGE_ORDINAL; + alias IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; + alias IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; + alias IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; + alias IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; } else { - const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC; - - alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG; - alias IMAGE_ORDINAL32 IMAGE_ORDINAL; - alias IMAGE_SNAP_BY_ORDINAL32 IMAGE_SNAP_BY_ORDINAL; - alias IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; - alias IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; - alias IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; - alias IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; + const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC; + + alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG; + alias IMAGE_ORDINAL32 IMAGE_ORDINAL; + alias IMAGE_SNAP_BY_ORDINAL32 IMAGE_SNAP_BY_ORDINAL; + alias IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; + alias IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; + alias IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; + alias IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; } alias IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER; diff --git a/src/core/sys/windows/winperf.d b/src/core/sys/windows/winperf.d index 79a2a0064e..2a6e174af6 100644 --- a/src/core/sys/windows/winperf.d +++ b/src/core/sys/windows/winperf.d @@ -81,67 +81,67 @@ const PERF_RAW_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DI const PERF_ELAPSED_TIME=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS); struct PERF_DATA_BLOCK { - WCHAR[4] Signature; - DWORD LittleEndian; - DWORD Version; - DWORD Revision; - DWORD TotalByteLength; - DWORD HeaderLength; - DWORD NumObjectTypes; - LONG DefaultObject; - SYSTEMTIME SystemTime; - LARGE_INTEGER PerfTime; - LARGE_INTEGER PerfFreq; - LARGE_INTEGER PerfTime100nSec; - DWORD SystemNameLength; - DWORD SystemNameOffset; + WCHAR[4] Signature; + DWORD LittleEndian; + DWORD Version; + DWORD Revision; + DWORD TotalByteLength; + DWORD HeaderLength; + DWORD NumObjectTypes; + LONG DefaultObject; + SYSTEMTIME SystemTime; + LARGE_INTEGER PerfTime; + LARGE_INTEGER PerfFreq; + LARGE_INTEGER PerfTime100nSec; + DWORD SystemNameLength; + DWORD SystemNameOffset; } alias PERF_DATA_BLOCK * PPERF_DATA_BLOCK; struct PERF_OBJECT_TYPE { - DWORD TotalByteLength; - DWORD DefinitionLength; - DWORD HeaderLength; - DWORD ObjectNameTitleIndex; - LPWSTR ObjectNameTitle; - DWORD ObjectHelpTitleIndex; - LPWSTR ObjectHelpTitle; - DWORD DetailLevel; - DWORD NumCounters; - LONG DefaultCounter; - LONG NumInstances; - DWORD CodePage; - LARGE_INTEGER PerfTime; - LARGE_INTEGER PerfFreq; + DWORD TotalByteLength; + DWORD DefinitionLength; + DWORD HeaderLength; + DWORD ObjectNameTitleIndex; + LPWSTR ObjectNameTitle; + DWORD ObjectHelpTitleIndex; + LPWSTR ObjectHelpTitle; + DWORD DetailLevel; + DWORD NumCounters; + LONG DefaultCounter; + LONG NumInstances; + DWORD CodePage; + LARGE_INTEGER PerfTime; + LARGE_INTEGER PerfFreq; } alias PERF_OBJECT_TYPE * PPERF_OBJECT_TYPE; struct PERF_COUNTER_DEFINITION { - DWORD ByteLength; - DWORD CounterNameTitleIndex; - LPWSTR CounterNameTitle; - DWORD CounterHelpTitleIndex; - LPWSTR CounterHelpTitle; - LONG DefaultScale; - DWORD DetailLevel; - DWORD CounterType; - DWORD CounterSize; - DWORD CounterOffset; + DWORD ByteLength; + DWORD CounterNameTitleIndex; + LPWSTR CounterNameTitle; + DWORD CounterHelpTitleIndex; + LPWSTR CounterHelpTitle; + LONG DefaultScale; + DWORD DetailLevel; + DWORD CounterType; + DWORD CounterSize; + DWORD CounterOffset; } alias PERF_COUNTER_DEFINITION * PPERF_COUNTER_DEFINITION; struct PERF_INSTANCE_DEFINITION { - DWORD ByteLength; - DWORD ParentObjectTitleIndex; - DWORD ParentObjectInstance; - LONG UniqueID; - DWORD NameOffset; - DWORD NameLength; + DWORD ByteLength; + DWORD ParentObjectTitleIndex; + DWORD ParentObjectInstance; + LONG UniqueID; + DWORD NameOffset; + DWORD NameLength; } alias PERF_INSTANCE_DEFINITION * PPERF_INSTANCE_DEFINITION; struct PERF_COUNTER_BLOCK { - DWORD ByteLength; + DWORD ByteLength; } alias PERF_COUNTER_BLOCK * PPERF_COUNTER_BLOCK; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index 3b4baef8ae..7d5a953d98 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -13,238 +13,238 @@ pragma(lib, "advapi32"); private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; enum : HKEY { // for some reason, DMD errors if I don't give all the values explicitly - HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, - HKEY_CURRENT_USER = cast(HKEY) 0x80000001, - HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, - HKEY_USERS = cast(HKEY) 0x80000003, - HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, - HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, - HKEY_DYN_DATA = cast(HKEY) 0x80000006 + HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, + HKEY_CURRENT_USER = cast(HKEY) 0x80000001, + HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, + HKEY_USERS = cast(HKEY) 0x80000003, + HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, + HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, + HKEY_DYN_DATA = cast(HKEY) 0x80000006 } enum : DWORD { - REG_OPTION_NON_VOLATILE, - REG_OPTION_VOLATILE + REG_OPTION_NON_VOLATILE, + REG_OPTION_VOLATILE } enum : DWORD { - REG_CREATED_NEW_KEY = 1, - REG_OPENED_EXISTING_KEY + REG_CREATED_NEW_KEY = 1, + REG_OPENED_EXISTING_KEY } enum : DWORD { - REG_NONE = 0, - REG_SZ, - REG_EXPAND_SZ, - REG_BINARY, - REG_DWORD_LITTLE_ENDIAN, - REG_DWORD = REG_DWORD_LITTLE_ENDIAN, - REG_DWORD_BIG_ENDIAN, - REG_LINK, - REG_MULTI_SZ, - REG_RESOURCE_LIST, - REG_FULL_RESOURCE_DESCRIPTOR, - REG_RESOURCE_REQUIREMENTS_LIST, - REG_QWORD_LITTLE_ENDIAN, - REG_QWORD = REG_QWORD_LITTLE_ENDIAN + REG_NONE = 0, + REG_SZ, + REG_EXPAND_SZ, + REG_BINARY, + REG_DWORD_LITTLE_ENDIAN, + REG_DWORD = REG_DWORD_LITTLE_ENDIAN, + REG_DWORD_BIG_ENDIAN, + REG_LINK, + REG_MULTI_SZ, + REG_RESOURCE_LIST, + REG_FULL_RESOURCE_DESCRIPTOR, + REG_RESOURCE_REQUIREMENTS_LIST, + REG_QWORD_LITTLE_ENDIAN, + REG_QWORD = REG_QWORD_LITTLE_ENDIAN } const DWORD - REG_NOTIFY_CHANGE_NAME = 1, - REG_NOTIFY_CHANGE_ATTRIBUTES = 2, - REG_NOTIFY_CHANGE_LAST_SET = 4, - REG_NOTIFY_CHANGE_SECURITY = 8; + REG_NOTIFY_CHANGE_NAME = 1, + REG_NOTIFY_CHANGE_ATTRIBUTES = 2, + REG_NOTIFY_CHANGE_LAST_SET = 4, + REG_NOTIFY_CHANGE_SECURITY = 8; alias ACCESS_MASK REGSAM; struct VALENTA { - LPSTR ve_valuename; - DWORD ve_valuelen; - DWORD ve_valueptr; - DWORD ve_type; + LPSTR ve_valuename; + DWORD ve_valuelen; + DWORD ve_valueptr; + DWORD ve_type; } alias VALENTA* PVALENTA; struct VALENTW { - LPWSTR ve_valuename; - DWORD ve_valuelen; - DWORD ve_valueptr; - DWORD ve_type; + LPWSTR ve_valuename; + DWORD ve_valuelen; + DWORD ve_valueptr; + DWORD ve_type; } alias VALENTW* PVALENTW; // RRF - Registry Routine Flags (for RegGetValue) static if (_WIN32_WINNT >= 0x600) { - enum : DWORD { - RRF_RT_REG_NONE = 0x00000001, - RRF_RT_REG_SZ = 0x00000002, - RRF_RT_REG_EXPAND_SZ = 0x00000004, - RRF_RT_REG_BINARY = 0x00000008, - RRF_RT_REG_DWORD = 0x00000010, - RRF_RT_REG_MULTI_SZ = 0x00000020, - RRF_RT_REG_QWORD = 0x00000040, - RRF_RT_DWORD = RRF_RT_REG_BINARY | RRF_RT_REG_DWORD, - RRF_RT_QWORD = RRF_RT_REG_BINARY | RRF_RT_REG_QWORD, - RRF_RT_ANY = 0x0000FFFF, - RRF_NOEXPAND = 0x10000000, - RRF_ZEROONFAILURE = 0x20000000 - } + enum : DWORD { + RRF_RT_REG_NONE = 0x00000001, + RRF_RT_REG_SZ = 0x00000002, + RRF_RT_REG_EXPAND_SZ = 0x00000004, + RRF_RT_REG_BINARY = 0x00000008, + RRF_RT_REG_DWORD = 0x00000010, + RRF_RT_REG_MULTI_SZ = 0x00000020, + RRF_RT_REG_QWORD = 0x00000040, + RRF_RT_DWORD = RRF_RT_REG_BINARY | RRF_RT_REG_DWORD, + RRF_RT_QWORD = RRF_RT_REG_BINARY | RRF_RT_REG_QWORD, + RRF_RT_ANY = 0x0000FFFF, + RRF_NOEXPAND = 0x10000000, + RRF_ZEROONFAILURE = 0x20000000 + } } extern (Windows) { - LONG RegCloseKey(HKEY); - LONG RegConnectRegistryA(LPCSTR, HKEY, PHKEY); - LONG RegConnectRegistryW(LPCWSTR, HKEY, PHKEY); - LONG RegCreateKeyExA(HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, - LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); - LONG RegCreateKeyExW(HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, - LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); - LONG RegDeleteKeyA(HKEY, LPCSTR); - LONG RegDeleteKeyW(HKEY, LPCWSTR); - LONG RegDeleteValueA(HKEY, LPCSTR); - LONG RegDeleteValueW(HKEY, LPCWSTR); - LONG RegEnumKeyExA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, - PFILETIME); - LONG RegEnumKeyExW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, - PFILETIME); - LONG RegEnumValueA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, - PDWORD); - LONG RegEnumValueW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, - PDWORD); - LONG RegFlushKey(HKEY); - LONG RegLoadKeyA(HKEY, LPCSTR, LPCSTR); - LONG RegLoadKeyW(HKEY, LPCWSTR, LPCWSTR); - LONG RegOpenKeyExA(HKEY, LPCSTR, DWORD, REGSAM, PHKEY); - LONG RegOpenKeyExW(HKEY, LPCWSTR, DWORD, REGSAM, PHKEY); - LONG RegQueryInfoKeyA(HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, - PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); - LONG RegQueryInfoKeyW(HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, - PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); - LONG RegQueryMultipleValuesA(HKEY, PVALENTA, DWORD, LPSTR, LPDWORD); - LONG RegQueryMultipleValuesW(HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD); - LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); - LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); - LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR); - LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR); - LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); - LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); - LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, const(BYTE)*, DWORD); - LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, const(BYTE)*, DWORD); - LONG RegUnLoadKeyA(HKEY, LPCSTR); - LONG RegUnLoadKeyW(HKEY, LPCWSTR); - LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL); - - BOOL AbortSystemShutdownA(LPCSTR); - BOOL AbortSystemShutdownW(LPCWSTR); - BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL); - BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL); - LONG RegGetKeySecurity(HKEY, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, PDWORD); - LONG RegRestoreKeyA(HKEY, LPCSTR, DWORD); - LONG RegRestoreKeyW(HKEY, LPCWSTR, DWORD); - LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - - static if (_WIN32_WINNT >= 0x500) { - LONG RegDisablePredefinedCache(); - LONG RegOpenCurrentUser(REGSAM, PHKEY); - LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY); - } - - static if (_WIN32_WINNT >= 0x501) { - LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD); - LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD); - } - - static if (_WIN32_WINNT >= 0x600) { - LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, - DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); - LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, - DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); - } - - deprecated { - LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY); - LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY); - LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD); - LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD); - LONG RegOpenKeyA(HKEY, LPCSTR, PHKEY); - LONG RegOpenKeyW(HKEY, LPCWSTR, PHKEY); - LONG RegQueryValueA(HKEY, LPCSTR, LPSTR, PLONG); - LONG RegQueryValueW(HKEY, LPCWSTR, LPWSTR, PLONG); - LONG RegSetValueA(HKEY, LPCSTR, DWORD, LPCSTR, DWORD); - LONG RegSetValueW(HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); - } + LONG RegCloseKey(HKEY); + LONG RegConnectRegistryA(LPCSTR, HKEY, PHKEY); + LONG RegConnectRegistryW(LPCWSTR, HKEY, PHKEY); + LONG RegCreateKeyExA(HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, + LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); + LONG RegCreateKeyExW(HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, + LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); + LONG RegDeleteKeyA(HKEY, LPCSTR); + LONG RegDeleteKeyW(HKEY, LPCWSTR); + LONG RegDeleteValueA(HKEY, LPCSTR); + LONG RegDeleteValueW(HKEY, LPCWSTR); + LONG RegEnumKeyExA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, + PFILETIME); + LONG RegEnumKeyExW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, + PFILETIME); + LONG RegEnumValueA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, + PDWORD); + LONG RegEnumValueW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, + PDWORD); + LONG RegFlushKey(HKEY); + LONG RegLoadKeyA(HKEY, LPCSTR, LPCSTR); + LONG RegLoadKeyW(HKEY, LPCWSTR, LPCWSTR); + LONG RegOpenKeyExA(HKEY, LPCSTR, DWORD, REGSAM, PHKEY); + LONG RegOpenKeyExW(HKEY, LPCWSTR, DWORD, REGSAM, PHKEY); + LONG RegQueryInfoKeyA(HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, + PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); + LONG RegQueryInfoKeyW(HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, + PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); + LONG RegQueryMultipleValuesA(HKEY, PVALENTA, DWORD, LPSTR, LPDWORD); + LONG RegQueryMultipleValuesW(HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD); + LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); + LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); + LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR); + LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR); + LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); + LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); + LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, const(BYTE)*, DWORD); + LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, const(BYTE)*, DWORD); + LONG RegUnLoadKeyA(HKEY, LPCSTR); + LONG RegUnLoadKeyW(HKEY, LPCWSTR); + LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL); + + BOOL AbortSystemShutdownA(LPCSTR); + BOOL AbortSystemShutdownW(LPCWSTR); + BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL); + BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL); + LONG RegGetKeySecurity(HKEY, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, PDWORD); + LONG RegRestoreKeyA(HKEY, LPCSTR, DWORD); + LONG RegRestoreKeyW(HKEY, LPCWSTR, DWORD); + LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + + static if (_WIN32_WINNT >= 0x500) { + LONG RegDisablePredefinedCache(); + LONG RegOpenCurrentUser(REGSAM, PHKEY); + LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY); + } + + static if (_WIN32_WINNT >= 0x501) { + LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD); + LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD); + } + + static if (_WIN32_WINNT >= 0x600) { + LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, + DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); + LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, + DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); + } + + deprecated { + LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY); + LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY); + LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD); + LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD); + LONG RegOpenKeyA(HKEY, LPCSTR, PHKEY); + LONG RegOpenKeyW(HKEY, LPCWSTR, PHKEY); + LONG RegQueryValueA(HKEY, LPCSTR, LPSTR, PLONG); + LONG RegQueryValueW(HKEY, LPCWSTR, LPWSTR, PLONG); + LONG RegSetValueA(HKEY, LPCSTR, DWORD, LPCSTR, DWORD); + LONG RegSetValueW(HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); + } } version (Unicode) { - alias VALENTW VALENT; - alias RegConnectRegistryW RegConnectRegistry; - alias RegCreateKeyExW RegCreateKeyEx; - alias RegDeleteKeyW RegDeleteKey; - alias RegDeleteValueW RegDeleteValue; - alias RegEnumKeyExW RegEnumKeyEx; - alias RegEnumValueW RegEnumValue; - alias RegLoadKeyW RegLoadKey; - alias RegOpenKeyExW RegOpenKeyEx; - alias RegQueryInfoKeyW RegQueryInfoKey; - alias RegQueryMultipleValuesW RegQueryMultipleValues; - alias RegQueryValueExW RegQueryValueEx; - alias RegReplaceKeyW RegReplaceKey; - alias RegSaveKeyW RegSaveKey; - alias RegSetValueExW RegSetValueEx; - alias RegUnLoadKeyW RegUnLoadKey; - - alias AbortSystemShutdownW AbortSystemShutdown; - alias InitiateSystemShutdownW InitiateSystemShutdown; - alias RegRestoreKeyW RegRestoreKey; - static if (_WIN32_WINNT >= 0x501) { - alias RegSaveKeyExA RegSaveKeyEx; - } - static if (_WIN32_WINNT >= 0x600) { - alias RegGetValueW RegGetValue; - } - deprecated { - alias RegCreateKeyW RegCreateKey; - alias RegEnumKeyW RegEnumKey; - alias RegOpenKeyW RegOpenKey; - alias RegQueryValueW RegQueryValue; - alias RegSetValueW RegSetValue; - } + alias VALENTW VALENT; + alias RegConnectRegistryW RegConnectRegistry; + alias RegCreateKeyExW RegCreateKeyEx; + alias RegDeleteKeyW RegDeleteKey; + alias RegDeleteValueW RegDeleteValue; + alias RegEnumKeyExW RegEnumKeyEx; + alias RegEnumValueW RegEnumValue; + alias RegLoadKeyW RegLoadKey; + alias RegOpenKeyExW RegOpenKeyEx; + alias RegQueryInfoKeyW RegQueryInfoKey; + alias RegQueryMultipleValuesW RegQueryMultipleValues; + alias RegQueryValueExW RegQueryValueEx; + alias RegReplaceKeyW RegReplaceKey; + alias RegSaveKeyW RegSaveKey; + alias RegSetValueExW RegSetValueEx; + alias RegUnLoadKeyW RegUnLoadKey; + + alias AbortSystemShutdownW AbortSystemShutdown; + alias InitiateSystemShutdownW InitiateSystemShutdown; + alias RegRestoreKeyW RegRestoreKey; + static if (_WIN32_WINNT >= 0x501) { + alias RegSaveKeyExA RegSaveKeyEx; + } + static if (_WIN32_WINNT >= 0x600) { + alias RegGetValueW RegGetValue; + } + deprecated { + alias RegCreateKeyW RegCreateKey; + alias RegEnumKeyW RegEnumKey; + alias RegOpenKeyW RegOpenKey; + alias RegQueryValueW RegQueryValue; + alias RegSetValueW RegSetValue; + } } else { - alias VALENTA VALENT; - alias RegConnectRegistryA RegConnectRegistry; - alias RegCreateKeyExA RegCreateKeyEx; - alias RegDeleteKeyA RegDeleteKey; - alias RegDeleteValueA RegDeleteValue; - alias RegEnumKeyExA RegEnumKeyEx; - alias RegEnumValueA RegEnumValue; - alias RegLoadKeyA RegLoadKey; - alias RegOpenKeyExA RegOpenKeyEx; - alias RegQueryInfoKeyA RegQueryInfoKey; - alias RegQueryMultipleValuesA RegQueryMultipleValues; - alias RegQueryValueExA RegQueryValueEx; - alias RegReplaceKeyA RegReplaceKey; - alias RegSaveKeyA RegSaveKey; - alias RegSetValueExA RegSetValueEx; - alias RegUnLoadKeyA RegUnLoadKey; - alias AbortSystemShutdownA AbortSystemShutdown; - alias InitiateSystemShutdownA InitiateSystemShutdown; - alias RegRestoreKeyW RegRestoreKey; - static if (_WIN32_WINNT >= 0x501) { - alias RegSaveKeyExA RegSaveKeyEx; - } - static if (_WIN32_WINNT >= 0x600) { - alias RegGetValueA RegGetValue; - } - deprecated { - alias RegCreateKeyA RegCreateKey; - alias RegEnumKeyA RegEnumKey; - alias RegOpenKeyA RegOpenKey; - alias RegQueryValueA RegQueryValue; - alias RegSetValueA RegSetValue; - } + alias VALENTA VALENT; + alias RegConnectRegistryA RegConnectRegistry; + alias RegCreateKeyExA RegCreateKeyEx; + alias RegDeleteKeyA RegDeleteKey; + alias RegDeleteValueA RegDeleteValue; + alias RegEnumKeyExA RegEnumKeyEx; + alias RegEnumValueA RegEnumValue; + alias RegLoadKeyA RegLoadKey; + alias RegOpenKeyExA RegOpenKeyEx; + alias RegQueryInfoKeyA RegQueryInfoKey; + alias RegQueryMultipleValuesA RegQueryMultipleValues; + alias RegQueryValueExA RegQueryValueEx; + alias RegReplaceKeyA RegReplaceKey; + alias RegSaveKeyA RegSaveKey; + alias RegSetValueExA RegSetValueEx; + alias RegUnLoadKeyA RegUnLoadKey; + alias AbortSystemShutdownA AbortSystemShutdown; + alias InitiateSystemShutdownA InitiateSystemShutdown; + alias RegRestoreKeyW RegRestoreKey; + static if (_WIN32_WINNT >= 0x501) { + alias RegSaveKeyExA RegSaveKeyEx; + } + static if (_WIN32_WINNT >= 0x600) { + alias RegGetValueA RegGetValue; + } + deprecated { + alias RegCreateKeyA RegCreateKey; + alias RegEnumKeyA RegEnumKey; + alias RegOpenKeyA RegOpenKey; + alias RegQueryValueA RegQueryValue; + alias RegSetValueA RegSetValue; + } } alias VALENT* PVALENT; diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d index e00a9844a7..e1b1b62c92 100644 --- a/src/core/sys/windows/winspool.d +++ b/src/core/sys/windows/winspool.d @@ -245,440 +245,440 @@ const PORT_STATUS_WARMING_UP=11; const PORT_STATUS_POWER_SAVE=12; struct ADDJOB_INFO_1A { - LPSTR Path; - DWORD JobId; + LPSTR Path; + DWORD JobId; } alias ADDJOB_INFO_1A* PADDJOB_INFO_1A, LPADDJOB_INFO_1A; struct ADDJOB_INFO_1W { - LPWSTR Path; - DWORD JobId; + LPWSTR Path; + DWORD JobId; } alias ADDJOB_INFO_1W* PADDJOB_INFO_1W, LPADDJOB_INFO_1W; struct DATATYPES_INFO_1A { - LPSTR pName; + LPSTR pName; } alias DATATYPES_INFO_1A* PDATATYPES_INFO_1A, LPDATATYPES_INFO_1A; struct DATATYPES_INFO_1W { - LPWSTR pName; + LPWSTR pName; } alias DATATYPES_INFO_1W* PDATATYPES_INFO_1W, LPDATATYPES_INFO_1W; struct JOB_INFO_1A { - DWORD JobId; - LPSTR pPrinterName; - LPSTR pMachineName; - LPSTR pUserName; - LPSTR pDocument; - LPSTR pDatatype; - LPSTR pStatus; - DWORD Status; - DWORD Priority; - DWORD Position; - DWORD TotalPages; - DWORD PagesPrinted; - SYSTEMTIME Submitted; + DWORD JobId; + LPSTR pPrinterName; + LPSTR pMachineName; + LPSTR pUserName; + LPSTR pDocument; + LPSTR pDatatype; + LPSTR pStatus; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD TotalPages; + DWORD PagesPrinted; + SYSTEMTIME Submitted; } alias JOB_INFO_1A* PJOB_INFO_1A, LPJOB_INFO_1A; struct JOB_INFO_1W { - DWORD JobId; - LPWSTR pPrinterName; - LPWSTR pMachineName; - LPWSTR pUserName; - LPWSTR pDocument; - LPWSTR pDatatype; - LPWSTR pStatus; - DWORD Status; - DWORD Priority; - DWORD Position; - DWORD TotalPages; - DWORD PagesPrinted; - SYSTEMTIME Submitted; + DWORD JobId; + LPWSTR pPrinterName; + LPWSTR pMachineName; + LPWSTR pUserName; + LPWSTR pDocument; + LPWSTR pDatatype; + LPWSTR pStatus; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD TotalPages; + DWORD PagesPrinted; + SYSTEMTIME Submitted; } alias JOB_INFO_1W* PJOB_INFO_1W, LPJOB_INFO_1W; struct JOB_INFO_2A { - DWORD JobId; - LPSTR pPrinterName; - LPSTR pMachineName; - LPSTR pUserName; - LPSTR pDocument; - LPSTR pNotifyName; - LPSTR pDatatype; - LPSTR pPrintProcessor; - LPSTR pParameters; - LPSTR pDriverName; - LPDEVMODEA pDevMode; - LPSTR pStatus; - PSECURITY_DESCRIPTOR pSecurityDescriptor; - DWORD Status; - DWORD Priority; - DWORD Position; - DWORD StartTime; - DWORD UntilTime; - DWORD TotalPages; - DWORD Size; - SYSTEMTIME Submitted; - DWORD Time; - DWORD PagesPrinted; + DWORD JobId; + LPSTR pPrinterName; + LPSTR pMachineName; + LPSTR pUserName; + LPSTR pDocument; + LPSTR pNotifyName; + LPSTR pDatatype; + LPSTR pPrintProcessor; + LPSTR pParameters; + LPSTR pDriverName; + LPDEVMODEA pDevMode; + LPSTR pStatus; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD StartTime; + DWORD UntilTime; + DWORD TotalPages; + DWORD Size; + SYSTEMTIME Submitted; + DWORD Time; + DWORD PagesPrinted; } alias JOB_INFO_2A* PJOB_INFO_2A, LPJOB_INFO_2A; struct JOB_INFO_2W { - DWORD JobId; - LPWSTR pPrinterName; - LPWSTR pMachineName; - LPWSTR pUserName; - LPWSTR pDocument; - LPWSTR pNotifyName; - LPWSTR pDatatype; - LPWSTR pPrintProcessor; - LPWSTR pParameters; - LPWSTR pDriverName; - LPDEVMODEW pDevMode; - LPWSTR pStatus; - PSECURITY_DESCRIPTOR pSecurityDescriptor; - DWORD Status; - DWORD Priority; - DWORD Position; - DWORD StartTime; - DWORD UntilTime; - DWORD TotalPages; - DWORD Size; - SYSTEMTIME Submitted; - DWORD Time; - DWORD PagesPrinted; + DWORD JobId; + LPWSTR pPrinterName; + LPWSTR pMachineName; + LPWSTR pUserName; + LPWSTR pDocument; + LPWSTR pNotifyName; + LPWSTR pDatatype; + LPWSTR pPrintProcessor; + LPWSTR pParameters; + LPWSTR pDriverName; + LPDEVMODEW pDevMode; + LPWSTR pStatus; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD StartTime; + DWORD UntilTime; + DWORD TotalPages; + DWORD Size; + SYSTEMTIME Submitted; + DWORD Time; + DWORD PagesPrinted; } alias JOB_INFO_2W* PJOB_INFO_2W, LPJOB_INFO_2W; struct DOC_INFO_1A { - LPSTR pDocName; - LPSTR pOutputFile; - LPSTR pDatatype; + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; } alias DOC_INFO_1A* PDOC_INFO_1A, LPDOC_INFO_1A; struct DOC_INFO_1W { - LPWSTR pDocName; - LPWSTR pOutputFile; - LPWSTR pDatatype; + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; } alias DOC_INFO_1W* PDOC_INFO_1W, LPDOC_INFO_1W; struct DOC_INFO_2A { - LPSTR pDocName; - LPSTR pOutputFile; - LPSTR pDatatype; - DWORD dwMode; - DWORD JobId; + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwMode; + DWORD JobId; } alias DOC_INFO_2A* PDOC_INFO_2A, LPDOC_INFO_2A; struct DOC_INFO_2W { - LPWSTR pDocName; - LPWSTR pOutputFile; - LPWSTR pDatatype; - DWORD dwMode; - DWORD JobId; + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwMode; + DWORD JobId; } alias DOC_INFO_2W* PDOC_INFO_2W, LPDOC_INFO_2W; struct DRIVER_INFO_1A { - LPSTR pName; + LPSTR pName; } alias DRIVER_INFO_1A* PDRIVER_INFO_1A, LPDRIVER_INFO_1A; struct DRIVER_INFO_1W { - LPWSTR pName; + LPWSTR pName; } alias DRIVER_INFO_1W* PDRIVER_INFO_1W, LPDRIVER_INFO_1W; struct DRIVER_INFO_2A { - DWORD cVersion; - LPSTR pName; - LPSTR pEnvironment; - LPSTR pDriverPath; - LPSTR pDataFile; - LPSTR pConfigFile; + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; } alias DRIVER_INFO_2A* PDRIVER_INFO_2A, LPDRIVER_INFO_2A; struct DRIVER_INFO_2W { - DWORD cVersion; - LPWSTR pName; - LPWSTR pEnvironment; - LPWSTR pDriverPath; - LPWSTR pDataFile; - LPWSTR pConfigFile; + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; } alias DRIVER_INFO_2W* PDRIVER_INFO_2W, LPDRIVER_INFO_2W; struct DRIVER_INFO_3A { - DWORD cVersion; - LPSTR pName; - LPSTR pEnvironment; - LPSTR pDriverPath; - LPSTR pDataFile; - LPSTR pConfigFile; - LPSTR pHelpFile; - LPSTR pDependentFiles; - LPSTR pMonitorName; - LPSTR pDefaultDataType; + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; } alias DRIVER_INFO_3A* PDRIVER_INFO_3A, LPDRIVER_INFO_3A; struct DRIVER_INFO_3W { - DWORD cVersion; - LPWSTR pName; - LPWSTR pEnvironment; - LPWSTR pDriverPath; - LPWSTR pDataFile; - LPWSTR pConfigFile; - LPWSTR pHelpFile; - LPWSTR pDependentFiles; - LPWSTR pMonitorName; - LPWSTR pDefaultDataType; + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; } alias DRIVER_INFO_3W* PDRIVER_INFO_3W, LPDRIVER_INFO_3W; struct MONITOR_INFO_1A { - LPSTR pName; + LPSTR pName; } alias MONITOR_INFO_1A* PMONITOR_INFO_1A, LPMONITOR_INFO_1A; struct MONITOR_INFO_1W { - LPWSTR pName; + LPWSTR pName; } alias MONITOR_INFO_1W* PMONITOR_INFO_1W, LPMONITOR_INFO_1W; struct PORT_INFO_1A { - LPSTR pName; + LPSTR pName; } alias PORT_INFO_1A* PPORT_INFO_1A, LPPORT_INFO_1A; struct PORT_INFO_1W { - LPWSTR pName; + LPWSTR pName; } alias PORT_INFO_1W* PPORT_INFO_1W, LPPORT_INFO_1W; struct MONITOR_INFO_2A { - LPSTR pName; - LPSTR pEnvironment; - LPSTR pDLLName; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; } alias MONITOR_INFO_2A* PMONITOR_INFO_2A, LPMONITOR_INFO_2A; struct MONITOR_INFO_2W { - LPWSTR pName; - LPWSTR pEnvironment; - LPWSTR pDLLName; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; } alias MONITOR_INFO_2W* PMONITOR_INFO_2W, LPMONITOR_INFO_2W; struct PORT_INFO_2A { - LPSTR pPortName; - LPSTR pMonitorName; - LPSTR pDescription; - DWORD fPortType; - DWORD Reserved; + LPSTR pPortName; + LPSTR pMonitorName; + LPSTR pDescription; + DWORD fPortType; + DWORD Reserved; } alias PORT_INFO_2A* PPORT_INFO_2A, LPPORT_INFO_2A; struct PORT_INFO_2W { - LPWSTR pPortName; - LPWSTR pMonitorName; - LPWSTR pDescription; - DWORD fPortType; - DWORD Reserved; + LPWSTR pPortName; + LPWSTR pMonitorName; + LPWSTR pDescription; + DWORD fPortType; + DWORD Reserved; } alias PORT_INFO_2W* PPORT_INFO_2W, LPPORT_INFO_2W; struct PORT_INFO_3A { - DWORD dwStatus; - LPSTR pszStatus; - DWORD dwSeverity; + DWORD dwStatus; + LPSTR pszStatus; + DWORD dwSeverity; } alias PORT_INFO_3A* PPORT_INFO_3A, LPPORT_INFO_3A; struct PORT_INFO_3W { - DWORD dwStatus; - LPWSTR pszStatus; - DWORD dwSeverity; + DWORD dwStatus; + LPWSTR pszStatus; + DWORD dwSeverity; } alias PORT_INFO_3W* PPORT_INFO_3W, LPPORT_INFO_3W; struct PRINTER_INFO_1A { - DWORD Flags; - LPSTR pDescription; - LPSTR pName; - LPSTR pComment; + DWORD Flags; + LPSTR pDescription; + LPSTR pName; + LPSTR pComment; } alias PRINTER_INFO_1A* PPRINTER_INFO_1A, LPPRINTER_INFO_1A; struct PRINTER_INFO_1W { - DWORD Flags; - LPWSTR pDescription; - LPWSTR pName; - LPWSTR pComment; + DWORD Flags; + LPWSTR pDescription; + LPWSTR pName; + LPWSTR pComment; } alias PRINTER_INFO_1W* PPRINTER_INFO_1W, LPPRINTER_INFO_1W; struct PRINTER_INFO_2A { - LPSTR pServerName; - LPSTR pPrinterName; - LPSTR pShareName; - LPSTR pPortName; - LPSTR pDriverName; - LPSTR pComment; - LPSTR pLocation; - LPDEVMODEA pDevMode; - LPSTR pSepFile; - LPSTR pPrintProcessor; - LPSTR pDatatype; - LPSTR pParameters; - PSECURITY_DESCRIPTOR pSecurityDescriptor; - DWORD Attributes; - DWORD Priority; - DWORD DefaultPriority; - DWORD StartTime; - DWORD UntilTime; - DWORD Status; - DWORD cJobs; - DWORD AveragePPM; + LPSTR pServerName; + LPSTR pPrinterName; + LPSTR pShareName; + LPSTR pPortName; + LPSTR pDriverName; + LPSTR pComment; + LPSTR pLocation; + LPDEVMODEA pDevMode; + LPSTR pSepFile; + LPSTR pPrintProcessor; + LPSTR pDatatype; + LPSTR pParameters; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Attributes; + DWORD Priority; + DWORD DefaultPriority; + DWORD StartTime; + DWORD UntilTime; + DWORD Status; + DWORD cJobs; + DWORD AveragePPM; } alias PRINTER_INFO_2A* PPRINTER_INFO_2A, LPPRINTER_INFO_2A; struct PRINTER_INFO_2W { - LPWSTR pServerName; - LPWSTR pPrinterName; - LPWSTR pShareName; - LPWSTR pPortName; - LPWSTR pDriverName; - LPWSTR pComment; - LPWSTR pLocation; - LPDEVMODEW pDevMode; - LPWSTR pSepFile; - LPWSTR pPrintProcessor; - LPWSTR pDatatype; - LPWSTR pParameters; - PSECURITY_DESCRIPTOR pSecurityDescriptor; - DWORD Attributes; - DWORD Priority; - DWORD DefaultPriority; - DWORD StartTime; - DWORD UntilTime; - DWORD Status; - DWORD cJobs; - DWORD AveragePPM; + LPWSTR pServerName; + LPWSTR pPrinterName; + LPWSTR pShareName; + LPWSTR pPortName; + LPWSTR pDriverName; + LPWSTR pComment; + LPWSTR pLocation; + LPDEVMODEW pDevMode; + LPWSTR pSepFile; + LPWSTR pPrintProcessor; + LPWSTR pDatatype; + LPWSTR pParameters; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Attributes; + DWORD Priority; + DWORD DefaultPriority; + DWORD StartTime; + DWORD UntilTime; + DWORD Status; + DWORD cJobs; + DWORD AveragePPM; } alias PRINTER_INFO_2W* PPRINTER_INFO_2W, LPPRINTER_INFO_2W; struct PRINTER_INFO_3 { - PSECURITY_DESCRIPTOR pSecurityDescriptor; + PSECURITY_DESCRIPTOR pSecurityDescriptor; } alias PRINTER_INFO_3* PPRINTER_INFO_3, LPPRINTER_INFO_3; struct PRINTER_INFO_4A { - LPSTR pPrinterName; - LPSTR pServerName; - DWORD Attributes; + LPSTR pPrinterName; + LPSTR pServerName; + DWORD Attributes; } alias PRINTER_INFO_4A* PPRINTER_INFO_4A, LPPRINTER_INFO_4A; struct PRINTER_INFO_4W { - LPWSTR pPrinterName; - LPWSTR pServerName; - DWORD Attributes; + LPWSTR pPrinterName; + LPWSTR pServerName; + DWORD Attributes; } alias PRINTER_INFO_4W* PPRINTER_INFO_4W, LPPRINTER_INFO_4W; struct PRINTER_INFO_5A { - LPSTR pPrinterName; - LPSTR pPortName; - DWORD Attributes; - DWORD DeviceNotSelectedTimeout; - DWORD TransmissionRetryTimeout; + LPSTR pPrinterName; + LPSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; } alias PRINTER_INFO_5A* PPRINTER_INFO_5A, LPPRINTER_INFO_5A; struct PRINTER_INFO_5W { - LPWSTR pPrinterName; - LPWSTR pPortName; - DWORD Attributes; - DWORD DeviceNotSelectedTimeout; - DWORD TransmissionRetryTimeout; + LPWSTR pPrinterName; + LPWSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; } alias PRINTER_INFO_5W* PPRINTER_INFO_5W, LPPRINTER_INFO_5W; struct PRINTER_INFO_6 { - DWORD dwStatus; + DWORD dwStatus; } alias PRINTER_INFO_6* PPRINTER_INFO_6, LPPRINTER_INFO_6; struct PRINTPROCESSOR_INFO_1A { - LPSTR pName; + LPSTR pName; } alias PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A, LPPRINTPROCESSOR_INFO_1A; struct PRINTPROCESSOR_INFO_1W { - LPWSTR pName; + LPWSTR pName; } alias PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W, LPPRINTPROCESSOR_INFO_1W; struct PRINTER_NOTIFY_INFO_DATA { - WORD Type; - WORD Field; - DWORD Reserved; - DWORD Id; - union _NotifyData { - DWORD[2] adwData; - struct Data { - DWORD cbBuf; - PVOID pBuf; - } - } - _NotifyData NotifyData; + WORD Type; + WORD Field; + DWORD Reserved; + DWORD Id; + union _NotifyData { + DWORD[2] adwData; + struct Data { + DWORD cbBuf; + PVOID pBuf; + } + } + _NotifyData NotifyData; } alias PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA, LPPRINTER_NOTIFY_INFO_DATA; struct PRINTER_NOTIFY_INFO { - DWORD Version; - DWORD Flags; - DWORD Count; - PRINTER_NOTIFY_INFO_DATA[1] aData; + DWORD Version; + DWORD Flags; + DWORD Count; + PRINTER_NOTIFY_INFO_DATA[1] aData; } alias PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO, LPPRINTER_NOTIFY_INFO; struct FORM_INFO_1A { - DWORD Flags; - LPSTR pName; - SIZEL Size; - RECTL ImageableArea; + DWORD Flags; + LPSTR pName; + SIZEL Size; + RECTL ImageableArea; } alias FORM_INFO_1A* PFORM_INFO_1A, LPFORM_INFO_1A; struct FORM_INFO_1W { - DWORD Flags; - LPWSTR pName; - SIZEL Size; - RECTL ImageableArea; + DWORD Flags; + LPWSTR pName; + SIZEL Size; + RECTL ImageableArea; } alias FORM_INFO_1W* PFORM_INFO_1W, LPFORM_INFO_1W; struct PRINTER_DEFAULTSA { - LPSTR pDatatype; - LPDEVMODE pDevMode; - ACCESS_MASK DesiredAccess; + LPSTR pDatatype; + LPDEVMODE pDevMode; + ACCESS_MASK DesiredAccess; } alias PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA, LPPRINTER_DEFAULTSA; struct PRINTER_DEFAULTSW { - LPWSTR pDatatype; - LPDEVMODE pDevMode; - ACCESS_MASK DesiredAccess; + LPWSTR pDatatype; + LPDEVMODE pDevMode; + ACCESS_MASK DesiredAccess; } alias PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW, LPPRINTER_DEFAULTSW; diff --git a/src/core/sys/windows/winsvc.d b/src/core/sys/windows/winsvc.d index 7cae7432f4..4c32077f35 100644 --- a/src/core/sys/windows/winsvc.d +++ b/src/core/sys/windows/winsvc.d @@ -15,169 +15,169 @@ private import core.sys.windows.w32api, core.sys.windows.windef; // FIXME: check Windows version support const TCHAR[] - SERVICES_ACTIVE_DATABASE = "ServicesActive", - SERVICES_FAILED_DATABASE = "ServicesFailed"; + SERVICES_ACTIVE_DATABASE = "ServicesActive", + SERVICES_FAILED_DATABASE = "ServicesFailed"; const TCHAR SC_GROUP_IDENTIFIER = '+'; const DWORD - SC_MANAGER_ALL_ACCESS = 0xf003f, - SC_MANAGER_CONNECT = 1, - SC_MANAGER_CREATE_SERVICE = 2, - SC_MANAGER_ENUMERATE_SERVICE = 4, - SC_MANAGER_LOCK = 8, - SC_MANAGER_QUERY_LOCK_STATUS = 16, - SC_MANAGER_MODIFY_BOOT_CONFIG = 32; + SC_MANAGER_ALL_ACCESS = 0xf003f, + SC_MANAGER_CONNECT = 1, + SC_MANAGER_CREATE_SERVICE = 2, + SC_MANAGER_ENUMERATE_SERVICE = 4, + SC_MANAGER_LOCK = 8, + SC_MANAGER_QUERY_LOCK_STATUS = 16, + SC_MANAGER_MODIFY_BOOT_CONFIG = 32; const DWORD SERVICE_NO_CHANGE = 0xffffffff; enum : DWORD { - SERVICE_STOPPED = 1, - SERVICE_START_PENDING, - SERVICE_STOP_PENDING, - SERVICE_RUNNING, - SERVICE_CONTINUE_PENDING, - SERVICE_PAUSE_PENDING, - SERVICE_PAUSED // = 7 + SERVICE_STOPPED = 1, + SERVICE_START_PENDING, + SERVICE_STOP_PENDING, + SERVICE_RUNNING, + SERVICE_CONTINUE_PENDING, + SERVICE_PAUSE_PENDING, + SERVICE_PAUSED // = 7 } const DWORD - SERVICE_ACCEPT_STOP = 1, - SERVICE_ACCEPT_PAUSE_CONTINUE = 2, - SERVICE_ACCEPT_SHUTDOWN = 4, - SERVICE_ACCEPT_PARAMCHANGE = 8, - SERVICE_ACCEPT_NETBINDCHANGE = 16, - SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32, - SERVICE_ACCEPT_POWEREVENT = 64, - SERVICE_ACCEPT_SESSIONCHANGE = 128; + SERVICE_ACCEPT_STOP = 1, + SERVICE_ACCEPT_PAUSE_CONTINUE = 2, + SERVICE_ACCEPT_SHUTDOWN = 4, + SERVICE_ACCEPT_PARAMCHANGE = 8, + SERVICE_ACCEPT_NETBINDCHANGE = 16, + SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32, + SERVICE_ACCEPT_POWEREVENT = 64, + SERVICE_ACCEPT_SESSIONCHANGE = 128; enum : DWORD { - SERVICE_CONTROL_STOP = 1, - SERVICE_CONTROL_PAUSE, - SERVICE_CONTROL_CONTINUE, - SERVICE_CONTROL_INTERROGATE, - SERVICE_CONTROL_SHUTDOWN, - SERVICE_CONTROL_PARAMCHANGE, - SERVICE_CONTROL_NETBINDADD, - SERVICE_CONTROL_NETBINDREMOVE, - SERVICE_CONTROL_NETBINDENABLE, - SERVICE_CONTROL_NETBINDDISABLE, - SERVICE_CONTROL_DEVICEEVENT, - SERVICE_CONTROL_HARDWAREPROFILECHANGE, - SERVICE_CONTROL_POWEREVENT, - SERVICE_CONTROL_SESSIONCHANGE, // = 14 + SERVICE_CONTROL_STOP = 1, + SERVICE_CONTROL_PAUSE, + SERVICE_CONTROL_CONTINUE, + SERVICE_CONTROL_INTERROGATE, + SERVICE_CONTROL_SHUTDOWN, + SERVICE_CONTROL_PARAMCHANGE, + SERVICE_CONTROL_NETBINDADD, + SERVICE_CONTROL_NETBINDREMOVE, + SERVICE_CONTROL_NETBINDENABLE, + SERVICE_CONTROL_NETBINDDISABLE, + SERVICE_CONTROL_DEVICEEVENT, + SERVICE_CONTROL_HARDWAREPROFILECHANGE, + SERVICE_CONTROL_POWEREVENT, + SERVICE_CONTROL_SESSIONCHANGE, // = 14 } enum : DWORD { - SERVICE_ACTIVE = 1, - SERVICE_INACTIVE, - SERVICE_STATE_ALL + SERVICE_ACTIVE = 1, + SERVICE_INACTIVE, + SERVICE_STATE_ALL } const DWORD - SERVICE_QUERY_CONFIG = 0x0001, - SERVICE_CHANGE_CONFIG = 0x0002, - SERVICE_QUERY_STATUS = 0x0004, - SERVICE_ENUMERATE_DEPENDENTS = 0x0008, - SERVICE_START = 0x0010, - SERVICE_STOP = 0x0020, - SERVICE_PAUSE_CONTINUE = 0x0040, - SERVICE_INTERROGATE = 0x0080, - SERVICE_USER_DEFINED_CONTROL = 0x0100, - SERVICE_ALL_ACCESS = 0x01FF | STANDARD_RIGHTS_REQUIRED; + SERVICE_QUERY_CONFIG = 0x0001, + SERVICE_CHANGE_CONFIG = 0x0002, + SERVICE_QUERY_STATUS = 0x0004, + SERVICE_ENUMERATE_DEPENDENTS = 0x0008, + SERVICE_START = 0x0010, + SERVICE_STOP = 0x0020, + SERVICE_PAUSE_CONTINUE = 0x0040, + SERVICE_INTERROGATE = 0x0080, + SERVICE_USER_DEFINED_CONTROL = 0x0100, + SERVICE_ALL_ACCESS = 0x01FF | STANDARD_RIGHTS_REQUIRED; // This is not documented on the MSDN site const SERVICE_RUNS_IN_SYSTEM_PROCESS = 1; enum : DWORD { - SERVICE_CONFIG_DESCRIPTION = 1, - SERVICE_CONFIG_FAILURE_ACTIONS, - SERVICE_CONFIG_DELAYED_AUTO_START_INFO, - SERVICE_CONFIG_FAILURE_ACTIONS_FLAG, - SERVICE_CONFIG_SERVICE_SID_INFO, - SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO, - SERVICE_CONFIG_PRESHUTDOWN_INFO // = 7 + SERVICE_CONFIG_DESCRIPTION = 1, + SERVICE_CONFIG_FAILURE_ACTIONS, + SERVICE_CONFIG_DELAYED_AUTO_START_INFO, + SERVICE_CONFIG_FAILURE_ACTIONS_FLAG, + SERVICE_CONFIG_SERVICE_SID_INFO, + SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO, + SERVICE_CONFIG_PRESHUTDOWN_INFO // = 7 } struct SERVICE_STATUS { - DWORD dwServiceType; - DWORD dwCurrentState; - DWORD dwControlsAccepted; - DWORD dwWin32ExitCode; - DWORD dwServiceSpecificExitCode; - DWORD dwCheckPoint; - DWORD dwWaitHint; + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; } alias SERVICE_STATUS* LPSERVICE_STATUS; struct ENUM_SERVICE_STATUSA { - LPSTR lpServiceName; - LPSTR lpDisplayName; - SERVICE_STATUS ServiceStatus; + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; } alias ENUM_SERVICE_STATUSA* LPENUM_SERVICE_STATUSA; struct ENUM_SERVICE_STATUSW { - LPWSTR lpServiceName; - LPWSTR lpDisplayName; - SERVICE_STATUS ServiceStatus; + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; } alias ENUM_SERVICE_STATUSW* LPENUM_SERVICE_STATUSW; struct QUERY_SERVICE_CONFIGA { - DWORD dwServiceType; - DWORD dwStartType; - DWORD dwErrorControl; - LPSTR lpBinaryPathName; - LPSTR lpLoadOrderGroup; - DWORD dwTagId; - LPSTR lpDependencies; - LPSTR lpServiceStartName; - LPSTR lpDisplayName; + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPSTR lpBinaryPathName; + LPSTR lpLoadOrderGroup; + DWORD dwTagId; + LPSTR lpDependencies; + LPSTR lpServiceStartName; + LPSTR lpDisplayName; } alias QUERY_SERVICE_CONFIGA* LPQUERY_SERVICE_CONFIGA; struct QUERY_SERVICE_CONFIGW { - DWORD dwServiceType; - DWORD dwStartType; - DWORD dwErrorControl; - LPWSTR lpBinaryPathName; - LPWSTR lpLoadOrderGroup; - DWORD dwTagId; - LPWSTR lpDependencies; - LPWSTR lpServiceStartName; - LPWSTR lpDisplayName; + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPWSTR lpBinaryPathName; + LPWSTR lpLoadOrderGroup; + DWORD dwTagId; + LPWSTR lpDependencies; + LPWSTR lpServiceStartName; + LPWSTR lpDisplayName; } alias QUERY_SERVICE_CONFIGW* LPQUERY_SERVICE_CONFIGW; struct QUERY_SERVICE_LOCK_STATUSA { - DWORD fIsLocked; - LPSTR lpLockOwner; - DWORD dwLockDuration; + DWORD fIsLocked; + LPSTR lpLockOwner; + DWORD dwLockDuration; } alias QUERY_SERVICE_LOCK_STATUSA* LPQUERY_SERVICE_LOCK_STATUSA; struct QUERY_SERVICE_LOCK_STATUSW { - DWORD fIsLocked; - LPWSTR lpLockOwner; - DWORD dwLockDuration; + DWORD fIsLocked; + LPWSTR lpLockOwner; + DWORD dwLockDuration; } alias QUERY_SERVICE_LOCK_STATUSW* LPQUERY_SERVICE_LOCK_STATUSW; extern (Windows) { - alias void function(DWORD, LPSTR*) LPSERVICE_MAIN_FUNCTIONA; - alias void function(DWORD, LPWSTR*) LPSERVICE_MAIN_FUNCTIONW; + alias void function(DWORD, LPSTR*) LPSERVICE_MAIN_FUNCTIONA; + alias void function(DWORD, LPWSTR*) LPSERVICE_MAIN_FUNCTIONW; } struct SERVICE_TABLE_ENTRYA { - LPSTR lpServiceName; - LPSERVICE_MAIN_FUNCTIONA lpServiceProc; + LPSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONA lpServiceProc; } alias SERVICE_TABLE_ENTRYA* LPSERVICE_TABLE_ENTRYA; struct SERVICE_TABLE_ENTRYW { - LPWSTR lpServiceName; - LPSERVICE_MAIN_FUNCTIONW lpServiceProc; + LPWSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONW lpServiceProc; } alias SERVICE_TABLE_ENTRYW* LPSERVICE_TABLE_ENTRYW; @@ -187,228 +187,228 @@ alias void* SC_LOCK; mixin DECLARE_HANDLE!("SERVICE_STATUS_HANDLE"); extern (Windows) { - alias void function(DWORD) LPHANDLER_FUNCTION; - alias DWORD function(DWORD, DWORD, LPVOID, LPVOID) LPHANDLER_FUNCTION_EX; + alias void function(DWORD) LPHANDLER_FUNCTION; + alias DWORD function(DWORD, DWORD, LPVOID, LPVOID) LPHANDLER_FUNCTION_EX; } static if (_WIN32_WINNT >= 0x500) { - struct SERVICE_STATUS_PROCESS { - DWORD dwServiceType; - DWORD dwCurrentState; - DWORD dwControlsAccepted; - DWORD dwWin32ExitCode; - DWORD dwServiceSpecificExitCode; - DWORD dwCheckPoint; - DWORD dwWaitHint; - DWORD dwProcessId; - DWORD dwServiceFlags; - } - alias SERVICE_STATUS_PROCESS* LPSERVICE_STATUS_PROCESS; - - enum SC_STATUS_TYPE { - SC_STATUS_PROCESS_INFO = 0 - } - - enum SC_ENUM_TYPE { - SC_ENUM_PROCESS_INFO = 0 - } - - struct ENUM_SERVICE_STATUS_PROCESSA { - LPSTR lpServiceName; - LPSTR lpDisplayName; - SERVICE_STATUS_PROCESS ServiceStatusProcess; - } - alias ENUM_SERVICE_STATUS_PROCESSA* LPENUM_SERVICE_STATUS_PROCESSA; - - struct ENUM_SERVICE_STATUS_PROCESSW { - LPWSTR lpServiceName; - LPWSTR lpDisplayName; - SERVICE_STATUS_PROCESS ServiceStatusProcess; - } - alias ENUM_SERVICE_STATUS_PROCESSW* LPENUM_SERVICE_STATUS_PROCESSW; - - struct SERVICE_DESCRIPTIONA { - LPSTR lpDescription; - } - alias SERVICE_DESCRIPTIONA* LPSERVICE_DESCRIPTIONA; - - struct SERVICE_DESCRIPTIONW { - LPWSTR lpDescription; - } - alias SERVICE_DESCRIPTIONW* LPSERVICE_DESCRIPTIONW; - - enum SC_ACTION_TYPE { - SC_ACTION_NONE, - SC_ACTION_RESTART, - SC_ACTION_REBOOT, - SC_ACTION_RUN_COMMAND - } - - struct SC_ACTION { - SC_ACTION_TYPE Type; - DWORD Delay; - } - alias SC_ACTION* LPSC_ACTION; - - struct SERVICE_FAILURE_ACTIONSA { - DWORD dwResetPeriod; - LPSTR lpRebootMsg; - LPSTR lpCommand; - DWORD cActions; - SC_ACTION* lpsaActions; - } - alias SERVICE_FAILURE_ACTIONSA* LPSERVICE_FAILURE_ACTIONSA; - - struct SERVICE_FAILURE_ACTIONSW { - DWORD dwResetPeriod; - LPWSTR lpRebootMsg; - LPWSTR lpCommand; - DWORD cActions; - SC_ACTION* lpsaActions; - } - alias SERVICE_FAILURE_ACTIONSW* LPSERVICE_FAILURE_ACTIONSW; + struct SERVICE_STATUS_PROCESS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; + DWORD dwProcessId; + DWORD dwServiceFlags; + } + alias SERVICE_STATUS_PROCESS* LPSERVICE_STATUS_PROCESS; + + enum SC_STATUS_TYPE { + SC_STATUS_PROCESS_INFO = 0 + } + + enum SC_ENUM_TYPE { + SC_ENUM_PROCESS_INFO = 0 + } + + struct ENUM_SERVICE_STATUS_PROCESSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; + } + alias ENUM_SERVICE_STATUS_PROCESSA* LPENUM_SERVICE_STATUS_PROCESSA; + + struct ENUM_SERVICE_STATUS_PROCESSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; + } + alias ENUM_SERVICE_STATUS_PROCESSW* LPENUM_SERVICE_STATUS_PROCESSW; + + struct SERVICE_DESCRIPTIONA { + LPSTR lpDescription; + } + alias SERVICE_DESCRIPTIONA* LPSERVICE_DESCRIPTIONA; + + struct SERVICE_DESCRIPTIONW { + LPWSTR lpDescription; + } + alias SERVICE_DESCRIPTIONW* LPSERVICE_DESCRIPTIONW; + + enum SC_ACTION_TYPE { + SC_ACTION_NONE, + SC_ACTION_RESTART, + SC_ACTION_REBOOT, + SC_ACTION_RUN_COMMAND + } + + struct SC_ACTION { + SC_ACTION_TYPE Type; + DWORD Delay; + } + alias SC_ACTION* LPSC_ACTION; + + struct SERVICE_FAILURE_ACTIONSA { + DWORD dwResetPeriod; + LPSTR lpRebootMsg; + LPSTR lpCommand; + DWORD cActions; + SC_ACTION* lpsaActions; + } + alias SERVICE_FAILURE_ACTIONSA* LPSERVICE_FAILURE_ACTIONSA; + + struct SERVICE_FAILURE_ACTIONSW { + DWORD dwResetPeriod; + LPWSTR lpRebootMsg; + LPWSTR lpCommand; + DWORD cActions; + SC_ACTION* lpsaActions; + } + alias SERVICE_FAILURE_ACTIONSW* LPSERVICE_FAILURE_ACTIONSW; } extern (Windows) { - BOOL ChangeServiceConfigA(SC_HANDLE, DWORD, DWORD, DWORD, LPCSTR, - LPCSTR, LPDWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR); - BOOL ChangeServiceConfigW(SC_HANDLE, DWORD, DWORD, DWORD, LPCWSTR, - LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); - BOOL CloseServiceHandle(SC_HANDLE); - BOOL ControlService(SC_HANDLE, DWORD, LPSERVICE_STATUS); - SC_HANDLE CreateServiceA(SC_HANDLE, LPCSTR, LPCSTR, DWORD, DWORD, - DWORD, DWORD, LPCSTR, LPCSTR, PDWORD, LPCSTR, LPCSTR, LPCSTR); - SC_HANDLE CreateServiceW(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD, - DWORD, DWORD, LPCWSTR, LPCWSTR, PDWORD, LPCWSTR, LPCWSTR, LPCWSTR); - BOOL DeleteService(SC_HANDLE); - BOOL EnumDependentServicesA(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSA, - DWORD, PDWORD, PDWORD); - BOOL EnumDependentServicesW(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSW, - DWORD, PDWORD, PDWORD); - BOOL EnumServicesStatusA(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSA, - DWORD, PDWORD, PDWORD, PDWORD); - BOOL EnumServicesStatusW(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSW, - DWORD, PDWORD, PDWORD, PDWORD); - BOOL GetServiceDisplayNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); - BOOL GetServiceDisplayNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); - BOOL GetServiceKeyNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); - BOOL GetServiceKeyNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); - SC_LOCK LockServiceDatabase(SC_HANDLE); - BOOL NotifyBootConfigStatus(BOOL); - SC_HANDLE OpenSCManagerA(LPCSTR, LPCSTR, DWORD); - SC_HANDLE OpenSCManagerW(LPCWSTR, LPCWSTR, DWORD); - SC_HANDLE OpenServiceA(SC_HANDLE, LPCSTR, DWORD); - SC_HANDLE OpenServiceW(SC_HANDLE, LPCWSTR, DWORD); - BOOL QueryServiceConfigA(SC_HANDLE, LPQUERY_SERVICE_CONFIGA, DWORD, - PDWORD); - BOOL QueryServiceConfigW(SC_HANDLE, LPQUERY_SERVICE_CONFIGW, DWORD, - PDWORD); - BOOL QueryServiceLockStatusA(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSA, - DWORD, PDWORD); - BOOL QueryServiceLockStatusW(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSW, - DWORD, PDWORD); - BOOL QueryServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, DWORD, LPDWORD); - BOOL QueryServiceStatus(SC_HANDLE, LPSERVICE_STATUS); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(LPCSTR, - LPHANDLER_FUNCTION); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(LPCWSTR, - LPHANDLER_FUNCTION); - BOOL SetServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - BOOL SetServiceStatus(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS); - BOOL StartServiceA(SC_HANDLE, DWORD, LPCSTR*); - BOOL StartServiceW(SC_HANDLE, DWORD, LPCWSTR*); - BOOL StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA); - BOOL StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW); - BOOL UnlockServiceDatabase(SC_LOCK); - - static if (_WIN32_WINNT >= 0x500) { - BOOL EnumServicesStatusExA(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, - DWORD, LPDWORD, LPDWORD, LPDWORD, LPCSTR); - BOOL EnumServicesStatusExW(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, - DWORD, LPDWORD, LPDWORD, LPDWORD, LPCWSTR); - BOOL QueryServiceConfig2A(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); - BOOL QueryServiceConfig2W(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); - BOOL QueryServiceStatusEx(SC_HANDLE, SC_STATUS_TYPE, LPBYTE, DWORD, - LPDWORD); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(LPCSTR, - LPHANDLER_FUNCTION_EX, LPVOID); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(LPCWSTR, - LPHANDLER_FUNCTION_EX, LPVOID); - } - - static if (_WIN32_WINNT >= 0x501) { - BOOL ChangeServiceConfig2A(SC_HANDLE, DWORD, LPVOID); - BOOL ChangeServiceConfig2W(SC_HANDLE, DWORD, LPVOID); - } + BOOL ChangeServiceConfigA(SC_HANDLE, DWORD, DWORD, DWORD, LPCSTR, + LPCSTR, LPDWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR); + BOOL ChangeServiceConfigW(SC_HANDLE, DWORD, DWORD, DWORD, LPCWSTR, + LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL CloseServiceHandle(SC_HANDLE); + BOOL ControlService(SC_HANDLE, DWORD, LPSERVICE_STATUS); + SC_HANDLE CreateServiceA(SC_HANDLE, LPCSTR, LPCSTR, DWORD, DWORD, + DWORD, DWORD, LPCSTR, LPCSTR, PDWORD, LPCSTR, LPCSTR, LPCSTR); + SC_HANDLE CreateServiceW(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD, + DWORD, DWORD, LPCWSTR, LPCWSTR, PDWORD, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL DeleteService(SC_HANDLE); + BOOL EnumDependentServicesA(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSA, + DWORD, PDWORD, PDWORD); + BOOL EnumDependentServicesW(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSW, + DWORD, PDWORD, PDWORD); + BOOL EnumServicesStatusA(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSA, + DWORD, PDWORD, PDWORD, PDWORD); + BOOL EnumServicesStatusW(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSW, + DWORD, PDWORD, PDWORD, PDWORD); + BOOL GetServiceDisplayNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); + BOOL GetServiceDisplayNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); + BOOL GetServiceKeyNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); + BOOL GetServiceKeyNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); + SC_LOCK LockServiceDatabase(SC_HANDLE); + BOOL NotifyBootConfigStatus(BOOL); + SC_HANDLE OpenSCManagerA(LPCSTR, LPCSTR, DWORD); + SC_HANDLE OpenSCManagerW(LPCWSTR, LPCWSTR, DWORD); + SC_HANDLE OpenServiceA(SC_HANDLE, LPCSTR, DWORD); + SC_HANDLE OpenServiceW(SC_HANDLE, LPCWSTR, DWORD); + BOOL QueryServiceConfigA(SC_HANDLE, LPQUERY_SERVICE_CONFIGA, DWORD, + PDWORD); + BOOL QueryServiceConfigW(SC_HANDLE, LPQUERY_SERVICE_CONFIGW, DWORD, + PDWORD); + BOOL QueryServiceLockStatusA(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSA, + DWORD, PDWORD); + BOOL QueryServiceLockStatusW(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSW, + DWORD, PDWORD); + BOOL QueryServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, LPDWORD); + BOOL QueryServiceStatus(SC_HANDLE, LPSERVICE_STATUS); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(LPCSTR, + LPHANDLER_FUNCTION); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(LPCWSTR, + LPHANDLER_FUNCTION); + BOOL SetServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + BOOL SetServiceStatus(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS); + BOOL StartServiceA(SC_HANDLE, DWORD, LPCSTR*); + BOOL StartServiceW(SC_HANDLE, DWORD, LPCWSTR*); + BOOL StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA); + BOOL StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW); + BOOL UnlockServiceDatabase(SC_LOCK); + + static if (_WIN32_WINNT >= 0x500) { + BOOL EnumServicesStatusExA(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, + DWORD, LPDWORD, LPDWORD, LPDWORD, LPCSTR); + BOOL EnumServicesStatusExW(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, + DWORD, LPDWORD, LPDWORD, LPDWORD, LPCWSTR); + BOOL QueryServiceConfig2A(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); + BOOL QueryServiceConfig2W(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); + BOOL QueryServiceStatusEx(SC_HANDLE, SC_STATUS_TYPE, LPBYTE, DWORD, + LPDWORD); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(LPCSTR, + LPHANDLER_FUNCTION_EX, LPVOID); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(LPCWSTR, + LPHANDLER_FUNCTION_EX, LPVOID); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL ChangeServiceConfig2A(SC_HANDLE, DWORD, LPVOID); + BOOL ChangeServiceConfig2W(SC_HANDLE, DWORD, LPVOID); + } } version (Unicode) { - alias ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS; - alias QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG; - alias QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS; - alias LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION; - alias SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY; - alias ChangeServiceConfigW ChangeServiceConfig; - alias CreateServiceW CreateService; - alias EnumDependentServicesW EnumDependentServices; - alias EnumServicesStatusW EnumServicesStatus; - alias GetServiceDisplayNameW GetServiceDisplayName; - alias GetServiceKeyNameW GetServiceKeyName; - alias OpenSCManagerW OpenSCManager; - alias OpenServiceW OpenService; - alias QueryServiceConfigW QueryServiceConfig; - alias QueryServiceLockStatusW QueryServiceLockStatus; - alias RegisterServiceCtrlHandlerW RegisterServiceCtrlHandler; - alias StartServiceW StartService; - alias StartServiceCtrlDispatcherW StartServiceCtrlDispatcher; - - static if (_WIN32_WINNT >= 0x500) { - alias ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS; - alias SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION; - alias SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS; - alias EnumServicesStatusExW EnumServicesStatusEx; - alias QueryServiceConfig2W QueryServiceConfig2; - alias RegisterServiceCtrlHandlerExW RegisterServiceCtrlHandlerEx; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ChangeServiceConfig2W ChangeServiceConfig2; - } + alias ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS; + alias QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG; + alias QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS; + alias LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION; + alias SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY; + alias ChangeServiceConfigW ChangeServiceConfig; + alias CreateServiceW CreateService; + alias EnumDependentServicesW EnumDependentServices; + alias EnumServicesStatusW EnumServicesStatus; + alias GetServiceDisplayNameW GetServiceDisplayName; + alias GetServiceKeyNameW GetServiceKeyName; + alias OpenSCManagerW OpenSCManager; + alias OpenServiceW OpenService; + alias QueryServiceConfigW QueryServiceConfig; + alias QueryServiceLockStatusW QueryServiceLockStatus; + alias RegisterServiceCtrlHandlerW RegisterServiceCtrlHandler; + alias StartServiceW StartService; + alias StartServiceCtrlDispatcherW StartServiceCtrlDispatcher; + + static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS; + alias EnumServicesStatusExW EnumServicesStatusEx; + alias QueryServiceConfig2W QueryServiceConfig2; + alias RegisterServiceCtrlHandlerExW RegisterServiceCtrlHandlerEx; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ChangeServiceConfig2W ChangeServiceConfig2; + } } else { - alias ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS; - alias QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG; - alias QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS; - alias LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION; - alias SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY; - alias ChangeServiceConfigA ChangeServiceConfig; - alias CreateServiceA CreateService; - alias EnumDependentServicesA EnumDependentServices; - alias EnumServicesStatusA EnumServicesStatus; - alias GetServiceDisplayNameA GetServiceDisplayName; - alias GetServiceKeyNameA GetServiceKeyName; - alias OpenSCManagerA OpenSCManager; - alias OpenServiceA OpenService; - alias QueryServiceConfigA QueryServiceConfig; - alias QueryServiceLockStatusA QueryServiceLockStatus; - alias RegisterServiceCtrlHandlerA RegisterServiceCtrlHandler; - alias StartServiceA StartService; - alias StartServiceCtrlDispatcherA StartServiceCtrlDispatcher; - - static if (_WIN32_WINNT >= 0x500) { - alias ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS; - alias SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION; - alias SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; - alias EnumServicesStatusExA EnumServicesStatusEx; - alias QueryServiceConfig2A QueryServiceConfig2; - alias RegisterServiceCtrlHandlerExA RegisterServiceCtrlHandlerEx; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ChangeServiceConfig2A ChangeServiceConfig2; - } + alias ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS; + alias QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG; + alias QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS; + alias LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION; + alias SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY; + alias ChangeServiceConfigA ChangeServiceConfig; + alias CreateServiceA CreateService; + alias EnumDependentServicesA EnumDependentServices; + alias EnumServicesStatusA EnumServicesStatus; + alias GetServiceDisplayNameA GetServiceDisplayName; + alias GetServiceKeyNameA GetServiceKeyName; + alias OpenSCManagerA OpenSCManager; + alias OpenServiceA OpenService; + alias QueryServiceConfigA QueryServiceConfig; + alias QueryServiceLockStatusA QueryServiceLockStatus; + alias RegisterServiceCtrlHandlerA RegisterServiceCtrlHandler; + alias StartServiceA StartService; + alias StartServiceCtrlDispatcherA StartServiceCtrlDispatcher; + + static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; + alias EnumServicesStatusExA EnumServicesStatusEx; + alias QueryServiceConfig2A QueryServiceConfig2; + alias RegisterServiceCtrlHandlerExA RegisterServiceCtrlHandlerEx; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ChangeServiceConfig2A ChangeServiceConfig2; + } } @@ -418,7 +418,7 @@ alias QUERY_SERVICE_LOCK_STATUS* LPQUERY_SERVICE_LOCK_STATUS; alias SERVICE_TABLE_ENTRY* LPSERVICE_TABLE_ENTRY; static if (_WIN32_WINNT >= 0x500) { - alias ENUM_SERVICE_STATUS_PROCESS* LPENUM_SERVICE_STATUS_PROCESS; - alias SERVICE_DESCRIPTION* LPSERVICE_DESCRIPTION; - alias SERVICE_FAILURE_ACTIONS* LPSERVICE_FAILURE_ACTIONS; + alias ENUM_SERVICE_STATUS_PROCESS* LPENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTION* LPSERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONS* LPSERVICE_FAILURE_ACTIONS; } diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 6316bded35..8e3e44a7f3 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -25,113 +25,113 @@ private import core.sys.windows.windef; // for HMONITOR // FIXME: clean up Windows version support LPTSTR MAKEINTATOM_T()(int i) { - return cast(LPTSTR) i; + return cast(LPTSTR) i; } enum LPTSTR WC_DIALOG = MAKEINTATOM_T(0x8002); enum { - FAPPCOMMAND_MOUSE = 0x8000, - FAPPCOMMAND_KEY = 0, - FAPPCOMMAND_OEM = 0x1000, - FAPPCOMMAND_MASK = 0xF000 + FAPPCOMMAND_MOUSE = 0x8000, + FAPPCOMMAND_KEY = 0, + FAPPCOMMAND_OEM = 0x1000, + FAPPCOMMAND_MASK = 0xF000 } enum { - MNGO_NOINTERFACE = 0, - MNGO_NOERROR, - MNGOF_TOPGAP = 1, - MNGOF_BOTTOMGAP + MNGO_NOINTERFACE = 0, + MNGO_NOERROR, + MNGOF_TOPGAP = 1, + MNGOF_BOTTOMGAP } enum { - FVIRTKEY = 1, - FNOINVERT = 2, - FSHIFT = 4, - FCONTROL = 8, - FALT = 16 + FVIRTKEY = 1, + FNOINVERT = 2, + FSHIFT = 4, + FCONTROL = 8, + FALT = 16 } enum { - ATF_TIMEOUTON = 1, - ATF_ONOFFFEEDBACK = 2, - ATF_AVAILABLE = 4 // May be obsolete. Not in recent MS docs. + ATF_TIMEOUTON = 1, + ATF_ONOFFFEEDBACK = 2, + ATF_AVAILABLE = 4 // May be obsolete. Not in recent MS docs. } enum { - WH_MIN = -1, - WH_MSGFILTER = -1, - WH_JOURNALRECORD, - WH_JOURNALPLAYBACK, - WH_KEYBOARD, - WH_GETMESSAGE, - WH_CALLWNDPROC, - WH_CBT, - WH_SYSMSGFILTER, - WH_MOUSE, - WH_HARDWARE, - WH_DEBUG, - WH_SHELL, - WH_FOREGROUNDIDLE, - WH_CALLWNDPROCRET, - WH_KEYBOARD_LL, - WH_MOUSE_LL, // = 14 - WH_MAX = 14, - WH_MINHOOK = WH_MIN, - WH_MAXHOOK = WH_MAX + WH_MIN = -1, + WH_MSGFILTER = -1, + WH_JOURNALRECORD, + WH_JOURNALPLAYBACK, + WH_KEYBOARD, + WH_GETMESSAGE, + WH_CALLWNDPROC, + WH_CBT, + WH_SYSMSGFILTER, + WH_MOUSE, + WH_HARDWARE, + WH_DEBUG, + WH_SHELL, + WH_FOREGROUNDIDLE, + WH_CALLWNDPROCRET, + WH_KEYBOARD_LL, + WH_MOUSE_LL, // = 14 + WH_MAX = 14, + WH_MINHOOK = WH_MIN, + WH_MAXHOOK = WH_MAX } enum { - HC_ACTION = 0, - HC_GETNEXT, - HC_SKIP, - HC_NOREMOVE, // = 3 - HC_NOREM = HC_NOREMOVE, - HC_SYSMODALON, - HC_SYSMODALOFF + HC_ACTION = 0, + HC_GETNEXT, + HC_SKIP, + HC_NOREMOVE, // = 3 + HC_NOREM = HC_NOREMOVE, + HC_SYSMODALON, + HC_SYSMODALOFF } enum { - HCBT_MOVESIZE = 0, - HCBT_MINMAX, - HCBT_QS, - HCBT_CREATEWND, - HCBT_DESTROYWND, - HCBT_ACTIVATE, - HCBT_CLICKSKIPPED, - HCBT_KEYSKIPPED, - HCBT_SYSCOMMAND, - HCBT_SETFOCUS // = 9 + HCBT_MOVESIZE = 0, + HCBT_MINMAX, + HCBT_QS, + HCBT_CREATEWND, + HCBT_DESTROYWND, + HCBT_ACTIVATE, + HCBT_CLICKSKIPPED, + HCBT_KEYSKIPPED, + HCBT_SYSCOMMAND, + HCBT_SETFOCUS // = 9 } enum { - CF_TEXT = 0x0001, - CF_BITMAP, - CF_METAFILEPICT, - CF_SYLK, - CF_DIF, - CF_TIFF, - CF_OEMTEXT, - CF_DIB, - CF_PALETTE, - CF_PENDATA, - CF_RIFF, - CF_WAVE, - CF_UNICODETEXT, - CF_ENHMETAFILE, - CF_HDROP, - CF_LOCALE, - CF_DIBV5, - CF_MAX, // = 0x0012 - CF_OWNERDISPLAY = 0x0080, - CF_DSPTEXT, - CF_DSPBITMAP, - CF_DSPMETAFILEPICT, // = 0x0083 - CF_DSPENHMETAFILE = 0x008E, - CF_PRIVATEFIRST = 0x0200, - CF_PRIVATELAST = 0x02FF, - CF_GDIOBJFIRST = 0x0300, - CF_GDIOBJLAST = 0x03FF + CF_TEXT = 0x0001, + CF_BITMAP, + CF_METAFILEPICT, + CF_SYLK, + CF_DIF, + CF_TIFF, + CF_OEMTEXT, + CF_DIB, + CF_PALETTE, + CF_PENDATA, + CF_RIFF, + CF_WAVE, + CF_UNICODETEXT, + CF_ENHMETAFILE, + CF_HDROP, + CF_LOCALE, + CF_DIBV5, + CF_MAX, // = 0x0012 + CF_OWNERDISPLAY = 0x0080, + CF_DSPTEXT, + CF_DSPBITMAP, + CF_DSPMETAFILEPICT, // = 0x0083 + CF_DSPENHMETAFILE = 0x008E, + CF_PRIVATEFIRST = 0x0200, + CF_PRIVATELAST = 0x02FF, + CF_GDIOBJFIRST = 0x0300, + CF_GDIOBJLAST = 0x03FF } enum HKL_PREV = 0; @@ -182,21 +182,21 @@ enum BSM_APPLICATIONS = 8; enum BSM_ALLDESKTOPS = 16; enum { - BSF_QUERY = 0x0001, - BSF_IGNORECURRENTTASK = 0x0002, - BSF_FLUSHDISK = 0x0004, - BSF_NOHANG = 0x0008, - BSF_POSTMESSAGE = 0x0010, - BSF_FORCEIFHUNG = 0x0020, - BSF_NOTIMEOUTIFNOTHUNG = 0x0040, - BSF_ALLOWSFW = 0x0080, - BSF_SENDNOTIFYMESSAGE = 0x0100 + BSF_QUERY = 0x0001, + BSF_IGNORECURRENTTASK = 0x0002, + BSF_FLUSHDISK = 0x0004, + BSF_NOHANG = 0x0008, + BSF_POSTMESSAGE = 0x0010, + BSF_FORCEIFHUNG = 0x0020, + BSF_NOTIMEOUTIFNOTHUNG = 0x0040, + BSF_ALLOWSFW = 0x0080, + BSF_SENDNOTIFYMESSAGE = 0x0100 } static if (_WIN32_WINNT >= 0x501) { - enum { - BSF_RETURNHDESK = 0x0200, - BSF_LUID = 0x0400 - } + enum { + BSF_RETURNHDESK = 0x0200, + BSF_LUID = 0x0400 + } } enum BROADCAST_QUERY_DENY = 1112363332; @@ -213,13 +213,13 @@ enum CDS_SETRECT = 0x20000000; enum CDS_RESET = 0x40000000; enum { - DISP_CHANGE_BADPARAM = -5, - DISP_CHANGE_BADFLAGS, - DISP_CHANGE_NOTUPDATED, - DISP_CHANGE_BADMODE, - DISP_CHANGE_FAILED, - DISP_CHANGE_SUCCESSFUL, - DISP_CHANGE_RESTART // = 1 + DISP_CHANGE_BADPARAM = -5, + DISP_CHANGE_BADFLAGS, + DISP_CHANGE_NOTUPDATED, + DISP_CHANGE_BADMODE, + DISP_CHANGE_FAILED, + DISP_CHANGE_SUCCESSFUL, + DISP_CHANGE_RESTART // = 1 } enum BST_UNCHECKED = 0; @@ -259,33 +259,33 @@ enum DESKTOP_SWITCHDESKTOP = 256; enum CW_USEDEFAULT = 0x80000000; enum { - WS_OVERLAPPED = 0, - WS_TILED = WS_OVERLAPPED, - WS_MAXIMIZEBOX = 0x00010000, - WS_MINIMIZEBOX = 0x00020000, - WS_TABSTOP = 0x00010000, - WS_GROUP = 0x00020000, - WS_THICKFRAME = 0x00040000, - WS_SIZEBOX = WS_THICKFRAME, - WS_SYSMENU = 0x00080000, - WS_HSCROLL = 0x00100000, - WS_VSCROLL = 0x00200000, - WS_DLGFRAME = 0x00400000, - WS_BORDER = 0x00800000, - WS_CAPTION = 0x00c00000, - WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, - WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, - WS_MAXIMIZE = 0x01000000, - WS_CLIPCHILDREN = 0x02000000, - WS_CLIPSIBLINGS = 0x04000000, - WS_DISABLED = 0x08000000, - WS_VISIBLE = 0x10000000, - WS_MINIMIZE = 0x20000000, - WS_ICONIC = WS_MINIMIZE, - WS_CHILD = 0x40000000, - WS_CHILDWINDOW = 0x40000000, - WS_POPUP = 0x80000000, - WS_POPUPWINDOW = WS_POPUP|WS_BORDER|WS_SYSMENU, + WS_OVERLAPPED = 0, + WS_TILED = WS_OVERLAPPED, + WS_MAXIMIZEBOX = 0x00010000, + WS_MINIMIZEBOX = 0x00020000, + WS_TABSTOP = 0x00010000, + WS_GROUP = 0x00020000, + WS_THICKFRAME = 0x00040000, + WS_SIZEBOX = WS_THICKFRAME, + WS_SYSMENU = 0x00080000, + WS_HSCROLL = 0x00100000, + WS_VSCROLL = 0x00200000, + WS_DLGFRAME = 0x00400000, + WS_BORDER = 0x00800000, + WS_CAPTION = 0x00c00000, + WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, + WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, + WS_MAXIMIZE = 0x01000000, + WS_CLIPCHILDREN = 0x02000000, + WS_CLIPSIBLINGS = 0x04000000, + WS_DISABLED = 0x08000000, + WS_VISIBLE = 0x10000000, + WS_MINIMIZE = 0x20000000, + WS_ICONIC = WS_MINIMIZE, + WS_CHILD = 0x40000000, + WS_CHILDWINDOW = 0x40000000, + WS_POPUP = 0x80000000, + WS_POPUPWINDOW = WS_POPUP|WS_BORDER|WS_SYSMENU, } enum MDIS_ALLCHILDSTYLES = 1; @@ -469,15 +469,15 @@ enum DDL_DRIVES = 16384; enum DDL_EXCLUSIVE = 32768; enum { - DC_ACTIVE = 0x0001, - DC_SMALLCAP = 0x0002, - DC_ICON = 0x0004, - DC_TEXT = 0x0008, - DC_INBUTTON = 0x0010, - DC_GRADIENT = 0x0020 + DC_ACTIVE = 0x0001, + DC_SMALLCAP = 0x0002, + DC_ICON = 0x0004, + DC_TEXT = 0x0008, + DC_INBUTTON = 0x0010, + DC_GRADIENT = 0x0020 } static if (_WIN32_WINNT >= 0x501) { - enum DC_BUTTONS = 0x1000; + enum DC_BUTTONS = 0x1000; } // Where are these documented? @@ -519,61 +519,61 @@ enum BF_FLAT = 0x4000; enum BF_MONO = 0x8000; enum { - DFC_CAPTION = 1, - DFC_MENU, - DFC_SCROLL, - DFC_BUTTON, - DFC_POPUPMENU // = 5 + DFC_CAPTION = 1, + DFC_MENU, + DFC_SCROLL, + DFC_BUTTON, + DFC_POPUPMENU // = 5 } enum { - DFCS_CAPTIONCLOSE, - DFCS_CAPTIONMIN, - DFCS_CAPTIONMAX, - DFCS_CAPTIONRESTORE, - DFCS_CAPTIONHELP // = 4 + DFCS_CAPTIONCLOSE, + DFCS_CAPTIONMIN, + DFCS_CAPTIONMAX, + DFCS_CAPTIONRESTORE, + DFCS_CAPTIONHELP // = 4 } enum { - DFCS_MENUARROW = 0, - DFCS_MENUCHECK = 1, - DFCS_MENUBULLET = 2, - DFCS_MENUARROWRIGHT = 4 + DFCS_MENUARROW = 0, + DFCS_MENUCHECK = 1, + DFCS_MENUBULLET = 2, + DFCS_MENUARROWRIGHT = 4 } enum { - DFCS_SCROLLUP = 0, - DFCS_SCROLLDOWN = 1, - DFCS_SCROLLLEFT = 2, - DFCS_SCROLLRIGHT = 3, - DFCS_SCROLLCOMBOBOX = 5, - DFCS_SCROLLSIZEGRIP = 8, - DFCS_SCROLLSIZEGRIPRIGHT = 16 + DFCS_SCROLLUP = 0, + DFCS_SCROLLDOWN = 1, + DFCS_SCROLLLEFT = 2, + DFCS_SCROLLRIGHT = 3, + DFCS_SCROLLCOMBOBOX = 5, + DFCS_SCROLLSIZEGRIP = 8, + DFCS_SCROLLSIZEGRIPRIGHT = 16 } enum { - DFCS_BUTTONCHECK = 0, - DFCS_BUTTONRADIOIMAGE = 0x0001, - DFCS_BUTTONRADIOMASK = 0x0002, - DFCS_BUTTONRADIO = 0x0004, - DFCS_BUTTON3STATE = 0x0008, - DFCS_BUTTONPUSH = 0x0010, - DFCS_INACTIVE = 0x0100, - DFCS_PUSHED = 0x0200, - DFCS_CHECKED = 0x0400, - DFCS_TRANSPARENT = 0x0800, - DFCS_HOT = 0x1000, - DFCS_ADJUSTRECT = 0x2000, - DFCS_FLAT = 0x4000, - DFCS_MONO = 0x8000 + DFCS_BUTTONCHECK = 0, + DFCS_BUTTONRADIOIMAGE = 0x0001, + DFCS_BUTTONRADIOMASK = 0x0002, + DFCS_BUTTONRADIO = 0x0004, + DFCS_BUTTON3STATE = 0x0008, + DFCS_BUTTONPUSH = 0x0010, + DFCS_INACTIVE = 0x0100, + DFCS_PUSHED = 0x0200, + DFCS_CHECKED = 0x0400, + DFCS_TRANSPARENT = 0x0800, + DFCS_HOT = 0x1000, + DFCS_ADJUSTRECT = 0x2000, + DFCS_FLAT = 0x4000, + DFCS_MONO = 0x8000 } enum { - DST_COMPLEX = 0, - DST_TEXT, - DST_PREFIXTEXT, - DST_ICON, - DST_BITMAP // = 4 + DST_COMPLEX = 0, + DST_TEXT, + DST_PREFIXTEXT, + DST_ICON, + DST_BITMAP // = 4 } enum DSS_NORMAL = 0; @@ -641,15 +641,15 @@ enum SB_TOP = 6; //MACRO #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0) template MAKEINTRESOURCE_T(WORD i) { - enum LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i); + enum LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i); } LPSTR MAKEINTRESOURCEA()(WORD i) { - return cast(LPSTR) i; + return cast(LPSTR) i; } LPWSTR MAKEINTRESOURCEW()(WORD i) { - return cast(LPWSTR) i; + return cast(LPWSTR) i; } enum RT_CURSOR = MAKEINTRESOURCE_T!(1); @@ -680,12 +680,12 @@ enum ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(2); enum ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(3); enum { - EWX_LOGOFF = 0, - EWX_SHUTDOWN = 1, - EWX_REBOOT = 2, - EWX_FORCE = 4, - EWX_POWEROFF = 8, - EWX_FORCEIFHUNG = 16 + EWX_LOGOFF = 0, + EWX_SHUTDOWN = 1, + EWX_REBOOT = 2, + EWX_FORCE = 4, + EWX_POWEROFF = 8, + EWX_FORCEIFHUNG = 16 } enum CS_BYTEALIGNCLIENT = 4096; @@ -724,168 +724,168 @@ alias GCL_MENUNAME GCLP_MENUNAME; alias GCL_WNDPROC GCLP_WNDPROC; enum { - IDC_ARROW = MAKEINTRESOURCE_T!(32512), - IDC_IBEAM = MAKEINTRESOURCE_T!(32513), - IDC_WAIT = MAKEINTRESOURCE_T!(32514), - IDC_CROSS = MAKEINTRESOURCE_T!(32515), - IDC_UPARROW = MAKEINTRESOURCE_T!(32516), - IDC_SIZE = MAKEINTRESOURCE_T!(32640), - IDC_ICON = MAKEINTRESOURCE_T!(32641), - IDC_SIZENWSE = MAKEINTRESOURCE_T!(32642), - IDC_SIZENESW = MAKEINTRESOURCE_T!(32643), - IDC_SIZEWE = MAKEINTRESOURCE_T!(32644), - IDC_SIZENS = MAKEINTRESOURCE_T!(32645), - IDC_SIZEALL = MAKEINTRESOURCE_T!(32646), - IDC_NO = MAKEINTRESOURCE_T!(32648), - IDC_HAND = MAKEINTRESOURCE_T!(32649), - IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650), - IDC_HELP = MAKEINTRESOURCE_T!(32651), - IDI_APPLICATION = MAKEINTRESOURCE_T!(32512), - IDI_HAND = MAKEINTRESOURCE_T!(32513), - IDI_QUESTION = MAKEINTRESOURCE_T!(32514), - IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515), - IDI_ASTERISK = MAKEINTRESOURCE_T!(32516), - IDI_WINLOGO = MAKEINTRESOURCE_T!(32517), - IDI_WARNING = IDI_EXCLAMATION, - IDI_ERROR = IDI_HAND, - IDI_INFORMATION = IDI_ASTERISK + IDC_ARROW = MAKEINTRESOURCE_T!(32512), + IDC_IBEAM = MAKEINTRESOURCE_T!(32513), + IDC_WAIT = MAKEINTRESOURCE_T!(32514), + IDC_CROSS = MAKEINTRESOURCE_T!(32515), + IDC_UPARROW = MAKEINTRESOURCE_T!(32516), + IDC_SIZE = MAKEINTRESOURCE_T!(32640), + IDC_ICON = MAKEINTRESOURCE_T!(32641), + IDC_SIZENWSE = MAKEINTRESOURCE_T!(32642), + IDC_SIZENESW = MAKEINTRESOURCE_T!(32643), + IDC_SIZEWE = MAKEINTRESOURCE_T!(32644), + IDC_SIZENS = MAKEINTRESOURCE_T!(32645), + IDC_SIZEALL = MAKEINTRESOURCE_T!(32646), + IDC_NO = MAKEINTRESOURCE_T!(32648), + IDC_HAND = MAKEINTRESOURCE_T!(32649), + IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650), + IDC_HELP = MAKEINTRESOURCE_T!(32651), + IDI_APPLICATION = MAKEINTRESOURCE_T!(32512), + IDI_HAND = MAKEINTRESOURCE_T!(32513), + IDI_QUESTION = MAKEINTRESOURCE_T!(32514), + IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515), + IDI_ASTERISK = MAKEINTRESOURCE_T!(32516), + IDI_WINLOGO = MAKEINTRESOURCE_T!(32517), + IDI_WARNING = IDI_EXCLAMATION, + IDI_ERROR = IDI_HAND, + IDI_INFORMATION = IDI_ASTERISK } static if (_WIN32_WINNT >= 0x600) { - enum IDI_SHIELD = MAKEINTRESOURCE_T!(32518); + enum IDI_SHIELD = MAKEINTRESOURCE_T!(32518); } enum { - MIIM_STATE = 0x0001, - MIIM_ID = 0x0002, - MIIM_SUBMENU = 0x0004, - MIIM_CHECKMARKS = 0x0008, - MIIM_TYPE = 0x0010, - MIIM_DATA = 0x0020, - MIIM_STRING = 0x0040, - MIIM_BITMAP = 0x0080, - MIIM_FTYPE = 0x0100 + MIIM_STATE = 0x0001, + MIIM_ID = 0x0002, + MIIM_SUBMENU = 0x0004, + MIIM_CHECKMARKS = 0x0008, + MIIM_TYPE = 0x0010, + MIIM_DATA = 0x0020, + MIIM_STRING = 0x0040, + MIIM_BITMAP = 0x0080, + MIIM_FTYPE = 0x0100 } enum { - MFT_BITMAP = 0x0004, - MFT_MENUBARBREAK = 0x0020, - MFT_MENUBREAK = 0x0040, - MFT_OWNERDRAW = 0x0100, - MFT_RADIOCHECK = 0x0200, - MFT_RIGHTJUSTIFY = 0x4000, - MFT_SEPARATOR = 0x0800, - MFT_RIGHTORDER = 0x2000, - MFT_STRING = 0 + MFT_BITMAP = 0x0004, + MFT_MENUBARBREAK = 0x0020, + MFT_MENUBREAK = 0x0040, + MFT_OWNERDRAW = 0x0100, + MFT_RADIOCHECK = 0x0200, + MFT_RIGHTJUSTIFY = 0x4000, + MFT_SEPARATOR = 0x0800, + MFT_RIGHTORDER = 0x2000, + MFT_STRING = 0 } enum { - MFS_CHECKED = 8, - MFS_DEFAULT = 4096, - MFS_DISABLED = 3, - MFS_ENABLED = 0, - MFS_GRAYED = 3, - MFS_HILITE = 128, - MFS_UNCHECKED = 0, - MFS_UNHILITE = 0 + MFS_CHECKED = 8, + MFS_DEFAULT = 4096, + MFS_DISABLED = 3, + MFS_ENABLED = 0, + MFS_GRAYED = 3, + MFS_HILITE = 128, + MFS_UNCHECKED = 0, + MFS_UNHILITE = 0 } enum { - GW_HWNDFIRST = 0, - GW_HWNDLAST, - GW_HWNDNEXT, - GW_HWNDPREV, - GW_OWNER, - GW_CHILD // = 5 + GW_HWNDFIRST = 0, + GW_HWNDLAST, + GW_HWNDNEXT, + GW_HWNDPREV, + GW_OWNER, + GW_CHILD // = 5 } enum { - SW_HIDE = 0, - SW_NORMAL = 1, - SW_SHOWNORMAL = 1, - SW_SHOWMINIMIZED = 2, - SW_MAXIMIZE = 3, - SW_SHOWMAXIMIZED = 3, - SW_SHOWNOACTIVATE = 4, - SW_SHOW = 5, - SW_MINIMIZE = 6, - SW_SHOWMINNOACTIVE = 7, - SW_SHOWNA = 8, - SW_RESTORE = 9, - SW_SHOWDEFAULT = 10, - SW_FORCEMINIMIZE = 11, - SW_MAX = 11 + SW_HIDE = 0, + SW_NORMAL = 1, + SW_SHOWNORMAL = 1, + SW_SHOWMINIMIZED = 2, + SW_MAXIMIZE = 3, + SW_SHOWMAXIMIZED = 3, + SW_SHOWNOACTIVATE = 4, + SW_SHOW = 5, + SW_MINIMIZE = 6, + SW_SHOWMINNOACTIVE = 7, + SW_SHOWNA = 8, + SW_RESTORE = 9, + SW_SHOWDEFAULT = 10, + SW_FORCEMINIMIZE = 11, + SW_MAX = 11 } enum { - SW_PARENTCLOSING = 1, - SW_OTHERZOOM, - SW_PARENTOPENING, - SW_OTHERUNZOOM // = 4 + SW_PARENTCLOSING = 1, + SW_OTHERZOOM, + SW_PARENTOPENING, + SW_OTHERUNZOOM // = 4 } enum { // is this a different SW from the previous? - SW_SCROLLCHILDREN = 0x01, - SW_INVALIDATE = 0x02, - SW_ERASE = 0x04, - SW_SMOOTHSCROLL = 0x10 + SW_SCROLLCHILDREN = 0x01, + SW_INVALIDATE = 0x02, + SW_ERASE = 0x04, + SW_SMOOTHSCROLL = 0x10 } enum { - MB_OK = 0, - MB_OKCANCEL, - MB_ABORTRETRYIGNORE, - MB_YESNOCANCEL, - MB_YESNO, - MB_RETRYCANCEL, - MB_CANCELTRYCONTINUE, // = 6 - MB_TYPEMASK = 0x0000000F, - MB_ICONHAND = 0x00000010, - MB_ICONSTOP = MB_ICONHAND, - MB_ICONERROR = MB_ICONHAND, - MB_ICONQUESTION = 0x00000020, - MB_ICONEXCLAMATION = 0x00000030, - MB_ICONWARNING = MB_ICONEXCLAMATION, - MB_ICONASTERISK = 0x00000040, - MB_ICONINFORMATION = MB_ICONASTERISK, - MB_USERICON = 0x00000080, - MB_ICONMASK = 0x000000F0, - - MB_DEFBUTTON1 = 0, - MB_DEFBUTTON2 = 0x00000100, - MB_DEFBUTTON3 = 0x00000200, - MB_DEFBUTTON4 = 0x00000300, - MB_DEFMASK = 0x00000F00, - - MB_APPLMODAL = 0, - MB_SYSTEMMODAL = 0x00001000, - MB_TASKMODAL = 0x00002000, - MB_MODEMASK = 0x00003000, - - MB_HELP = 0x00004000, - MB_NOFOCUS = 0x00008000, - MB_MISCMASK = 0x0000C000, - - MB_SETFOREGROUND = 0x00010000, - MB_DEFAULT_DESKTOP_ONLY = 0x00020000, - MB_TOPMOST = 0x00040000, - MB_SERVICE_NOTIFICATION_NT3X = 0x00040000, - MB_RIGHT = 0x00080000, - MB_RTLREADING = 0x00100000, - MB_SERVICE_NOTIFICATION = 0x00200000 + MB_OK = 0, + MB_OKCANCEL, + MB_ABORTRETRYIGNORE, + MB_YESNOCANCEL, + MB_YESNO, + MB_RETRYCANCEL, + MB_CANCELTRYCONTINUE, // = 6 + MB_TYPEMASK = 0x0000000F, + MB_ICONHAND = 0x00000010, + MB_ICONSTOP = MB_ICONHAND, + MB_ICONERROR = MB_ICONHAND, + MB_ICONQUESTION = 0x00000020, + MB_ICONEXCLAMATION = 0x00000030, + MB_ICONWARNING = MB_ICONEXCLAMATION, + MB_ICONASTERISK = 0x00000040, + MB_ICONINFORMATION = MB_ICONASTERISK, + MB_USERICON = 0x00000080, + MB_ICONMASK = 0x000000F0, + + MB_DEFBUTTON1 = 0, + MB_DEFBUTTON2 = 0x00000100, + MB_DEFBUTTON3 = 0x00000200, + MB_DEFBUTTON4 = 0x00000300, + MB_DEFMASK = 0x00000F00, + + MB_APPLMODAL = 0, + MB_SYSTEMMODAL = 0x00001000, + MB_TASKMODAL = 0x00002000, + MB_MODEMASK = 0x00003000, + + MB_HELP = 0x00004000, + MB_NOFOCUS = 0x00008000, + MB_MISCMASK = 0x0000C000, + + MB_SETFOREGROUND = 0x00010000, + MB_DEFAULT_DESKTOP_ONLY = 0x00020000, + MB_TOPMOST = 0x00040000, + MB_SERVICE_NOTIFICATION_NT3X = 0x00040000, + MB_RIGHT = 0x00080000, + MB_RTLREADING = 0x00100000, + MB_SERVICE_NOTIFICATION = 0x00200000 } enum { - IDOK = 1, - IDCANCEL, - IDABORT, - IDRETRY, - IDIGNORE, - IDYES, - IDNO, - IDCLOSE, - IDHELP, - IDTRYAGAIN, - IDCONTINUE // = 11 + IDOK = 1, + IDCANCEL, + IDABORT, + IDRETRY, + IDIGNORE, + IDYES, + IDNO, + IDCLOSE, + IDHELP, + IDTRYAGAIN, + IDCONTINUE // = 11 } enum GWL_EXSTYLE = -20; @@ -979,104 +979,104 @@ enum CTLCOLOR_MAX = 7; // For GetSystemMetrics() enum : int { - SM_CXSCREEN = 0, - SM_CYSCREEN, - SM_CXVSCROLL, - SM_CYHSCROLL, - SM_CYCAPTION, - SM_CXBORDER, - SM_CYBORDER, - SM_CXDLGFRAME, // = 7 - SM_CXFIXEDFRAME = SM_CXDLGFRAME, - SM_CYDLGFRAME, // = 8 - SM_CYFIXEDFRAME = SM_CYDLGFRAME, - SM_CYVTHUMB, // = 9 - SM_CXHTHUMB, - SM_CXICON, - SM_CYICON, - SM_CXCURSOR, - SM_CYCURSOR, - SM_CYMENU, - SM_CXFULLSCREEN, - SM_CYFULLSCREEN, - SM_CYKANJIWINDOW, - SM_MOUSEPRESENT, - SM_CYVSCROLL, - SM_CXHSCROLL, - SM_DEBUG, - SM_SWAPBUTTON, - SM_RESERVED1, - SM_RESERVED2, - SM_RESERVED3, - SM_RESERVED4, - SM_CXMIN, - SM_CYMIN, - SM_CXSIZE, - SM_CYSIZE, - SM_CXSIZEFRAME, // = 32, - SM_CXFRAME = SM_CXSIZEFRAME, - SM_CYSIZEFRAME, // = 33 - SM_CYFRAME = SM_CYSIZEFRAME, - SM_CXMINTRACK, - SM_CYMINTRACK, - SM_CXDOUBLECLK, - SM_CYDOUBLECLK, - SM_CXICONSPACING, - SM_CYICONSPACING, - SM_MENUDROPALIGNMENT, - SM_PENWINDOWS, - SM_DBCSENABLED, - SM_CMOUSEBUTTONS, - SM_SECURE, - SM_CXEDGE, - SM_CYEDGE, - SM_CXMINSPACING, - SM_CYMINSPACING, - SM_CXSMICON, - SM_CYSMICON, - SM_CYSMCAPTION, - SM_CXSMSIZE, - SM_CYSMSIZE, - SM_CXMENUSIZE, - SM_CYMENUSIZE, - SM_ARRANGE, - SM_CXMINIMIZED, - SM_CYMINIMIZED, - SM_CXMAXTRACK, - SM_CYMAXTRACK, - SM_CXMAXIMIZED, - SM_CYMAXIMIZED, - SM_NETWORK, // = 63 - SM_CLEANBOOT = 67, - SM_CXDRAG, - SM_CYDRAG, - SM_SHOWSOUNDS, - SM_CXMENUCHECK, - SM_CYMENUCHECK, - SM_SLOWMACHINE, - SM_MIDEASTENABLED, - SM_MOUSEWHEELPRESENT, - SM_XVIRTUALSCREEN, - SM_YVIRTUALSCREEN, - SM_CXVIRTUALSCREEN, - SM_CYVIRTUALSCREEN, - SM_CMONITORS, - SM_SAMEDISPLAYFORMAT, - SM_IMMENABLED, - SM_CXFOCUSBORDER, - SM_CYFOCUSBORDER, // = 84 - SM_TABLETPC = 86, - SM_MEDIACENTER, - SM_STARTER, // = 88 - SM_CMETRICS = 88, - SM_SERVERR2, - SM_REMOTESESSION = 0x1000, + SM_CXSCREEN = 0, + SM_CYSCREEN, + SM_CXVSCROLL, + SM_CYHSCROLL, + SM_CYCAPTION, + SM_CXBORDER, + SM_CYBORDER, + SM_CXDLGFRAME, // = 7 + SM_CXFIXEDFRAME = SM_CXDLGFRAME, + SM_CYDLGFRAME, // = 8 + SM_CYFIXEDFRAME = SM_CYDLGFRAME, + SM_CYVTHUMB, // = 9 + SM_CXHTHUMB, + SM_CXICON, + SM_CYICON, + SM_CXCURSOR, + SM_CYCURSOR, + SM_CYMENU, + SM_CXFULLSCREEN, + SM_CYFULLSCREEN, + SM_CYKANJIWINDOW, + SM_MOUSEPRESENT, + SM_CYVSCROLL, + SM_CXHSCROLL, + SM_DEBUG, + SM_SWAPBUTTON, + SM_RESERVED1, + SM_RESERVED2, + SM_RESERVED3, + SM_RESERVED4, + SM_CXMIN, + SM_CYMIN, + SM_CXSIZE, + SM_CYSIZE, + SM_CXSIZEFRAME, // = 32, + SM_CXFRAME = SM_CXSIZEFRAME, + SM_CYSIZEFRAME, // = 33 + SM_CYFRAME = SM_CYSIZEFRAME, + SM_CXMINTRACK, + SM_CYMINTRACK, + SM_CXDOUBLECLK, + SM_CYDOUBLECLK, + SM_CXICONSPACING, + SM_CYICONSPACING, + SM_MENUDROPALIGNMENT, + SM_PENWINDOWS, + SM_DBCSENABLED, + SM_CMOUSEBUTTONS, + SM_SECURE, + SM_CXEDGE, + SM_CYEDGE, + SM_CXMINSPACING, + SM_CYMINSPACING, + SM_CXSMICON, + SM_CYSMICON, + SM_CYSMCAPTION, + SM_CXSMSIZE, + SM_CYSMSIZE, + SM_CXMENUSIZE, + SM_CYMENUSIZE, + SM_ARRANGE, + SM_CXMINIMIZED, + SM_CYMINIMIZED, + SM_CXMAXTRACK, + SM_CYMAXTRACK, + SM_CXMAXIMIZED, + SM_CYMAXIMIZED, + SM_NETWORK, // = 63 + SM_CLEANBOOT = 67, + SM_CXDRAG, + SM_CYDRAG, + SM_SHOWSOUNDS, + SM_CXMENUCHECK, + SM_CYMENUCHECK, + SM_SLOWMACHINE, + SM_MIDEASTENABLED, + SM_MOUSEWHEELPRESENT, + SM_XVIRTUALSCREEN, + SM_YVIRTUALSCREEN, + SM_CXVIRTUALSCREEN, + SM_CYVIRTUALSCREEN, + SM_CMONITORS, + SM_SAMEDISPLAYFORMAT, + SM_IMMENABLED, + SM_CXFOCUSBORDER, + SM_CYFOCUSBORDER, // = 84 + SM_TABLETPC = 86, + SM_MEDIACENTER, + SM_STARTER, // = 88 + SM_CMETRICS = 88, + SM_SERVERR2, + SM_REMOTESESSION = 0x1000, } static if (_WIN32_WINNT >= 0x501) { - enum { // These are only for WinXP and later - SM_SHUTTINGDOWN = 0x2000, - SM_REMOTECONTROL = 0x2001 - } + enum { // These are only for WinXP and later + SM_SHUTTINGDOWN = 0x2000, + SM_REMOTECONTROL = 0x2001 + } } enum ARW_BOTTOMLEFT = 0; @@ -1096,27 +1096,27 @@ enum UOI_USER_SID = 4; // For the fuLoad parameter of LoadImage() enum : UINT { - LR_DEFAULTCOLOR = 0, - LR_MONOCHROME = 0x0001, - LR_COLOR = 0x0002, - LR_COPYRETURNORG = 0x0004, - LR_COPYDELETEORG = 0x0008, - LR_LOADFROMFILE = 0x0010, - LR_LOADTRANSPARENT = 0x0020, - LR_DEFAULTSIZE = 0x0040, - LR_VGACOLOR = 0x0080, - LR_LOADREALSIZE = 0x0080, - LR_LOADMAP3DCOLORS = 0x1000, - LR_CREATEDIBSECTION = 0x2000, - LR_COPYFROMRESOURCE = 0x4000, - LR_SHARED = 0x8000 + LR_DEFAULTCOLOR = 0, + LR_MONOCHROME = 0x0001, + LR_COLOR = 0x0002, + LR_COPYRETURNORG = 0x0004, + LR_COPYDELETEORG = 0x0008, + LR_LOADFROMFILE = 0x0010, + LR_LOADTRANSPARENT = 0x0020, + LR_DEFAULTSIZE = 0x0040, + LR_VGACOLOR = 0x0080, + LR_LOADREALSIZE = 0x0080, + LR_LOADMAP3DCOLORS = 0x1000, + LR_CREATEDIBSECTION = 0x2000, + LR_COPYFROMRESOURCE = 0x4000, + LR_SHARED = 0x8000 } enum { - KEYEVENTF_EXTENDEDKEY = 1, - KEYEVENTF_KEYUP = 2, - KEYEVENTF_UNICODE = 4, - KEYEVENTF_SCANCODE = 8 + KEYEVENTF_EXTENDEDKEY = 1, + KEYEVENTF_KEYUP = 2, + KEYEVENTF_UNICODE = 4, + KEYEVENTF_SCANCODE = 8 } enum OBM_BTNCORNERS = 32758; @@ -1183,17 +1183,17 @@ enum HELPINFO_MENUITEM = 2; enum HELPINFO_WINDOW = 1; static if (_WIN32_WINNT >= 0x501) { - enum { - WTS_CONSOLE_CONNECT = 1, - WTS_CONSOLE_DISCONNECT, - WTS_REMOTE_CONNECT, - WTS_REMOTE_DISCONNECT, - WTS_SESSION_LOGON, - WTS_SESSION_LOGOFF, - WTS_SESSION_LOCK, - WTS_SESSION_UNLOCK, - WTS_SESSION_REMOTE_CONTROL // = 9 - } + enum { + WTS_CONSOLE_CONNECT = 1, + WTS_CONSOLE_DISCONNECT, + WTS_REMOTE_CONNECT, + WTS_REMOTE_DISCONNECT, + WTS_SESSION_LOGON, + WTS_SESSION_LOGOFF, + WTS_SESSION_LOCK, + WTS_SESSION_UNLOCK, + WTS_SESSION_REMOTE_CONTROL // = 9 + } } enum MSGF_DIALOGBOX = 0; @@ -1207,17 +1207,17 @@ enum MSGF_MAINLOOP = 8; enum MSGF_USER = 4096; enum { - MOUSEEVENTF_MOVE = 0x0001, - MOUSEEVENTF_LEFTDOWN = 0x0002, - MOUSEEVENTF_LEFTUP = 0x0004, - MOUSEEVENTF_RIGHTDOWN = 0x0008, - MOUSEEVENTF_RIGHTUP = 0x0010, - MOUSEEVENTF_MIDDLEDOWN = 0x0020, - MOUSEEVENTF_MIDDLEUP = 0x0040, - MOUSEEVENTF_XDOWN = 0x0080, - MOUSEEVENTF_XUP = 0x0100, - MOUSEEVENTF_WHEEL = 0x0800, - MOUSEEVENTF_ABSOLUTE = 0x8000 + MOUSEEVENTF_MOVE = 0x0001, + MOUSEEVENTF_LEFTDOWN = 0x0002, + MOUSEEVENTF_LEFTUP = 0x0004, + MOUSEEVENTF_RIGHTDOWN = 0x0008, + MOUSEEVENTF_RIGHTUP = 0x0010, + MOUSEEVENTF_MIDDLEDOWN = 0x0020, + MOUSEEVENTF_MIDDLEUP = 0x0040, + MOUSEEVENTF_XDOWN = 0x0080, + MOUSEEVENTF_XUP = 0x0100, + MOUSEEVENTF_WHEEL = 0x0800, + MOUSEEVENTF_ABSOLUTE = 0x8000 } enum PM_NOREMOVE = 0; @@ -1225,13 +1225,13 @@ enum PM_REMOVE = 1; enum PM_NOYIELD = 2; enum : HWND { - HWND_BROADCAST = cast(HWND) 0xFFFF, - HWND_MESSAGE = cast(HWND) -3, - HWND_NOTOPMOST = cast(HWND) -2, - HWND_TOPMOST = cast(HWND) -1, - HWND_TOP = cast(HWND) 0, - HWND_DESKTOP = cast(HWND) 0, - HWND_BOTTOM = cast(HWND) 1 + HWND_BROADCAST = cast(HWND) 0xFFFF, + HWND_MESSAGE = cast(HWND) -3, + HWND_NOTOPMOST = cast(HWND) -2, + HWND_TOPMOST = cast(HWND) -1, + HWND_TOP = cast(HWND) 0, + HWND_DESKTOP = cast(HWND) 0, + HWND_BOTTOM = cast(HWND) 1 } enum RDW_INVALIDATE = 1; @@ -1248,10 +1248,10 @@ enum RDW_FRAME = 1024; enum RDW_NOFRAME = 2048; enum { - SMTO_NORMAL = 0, - SMTO_BLOCK = 1, - SMTO_ABORTIFHUNG = 2, - SMTO_NOTIMEOUTIFNOTHUNG = 8 + SMTO_NORMAL = 0, + SMTO_BLOCK = 1, + SMTO_ABORTIFHUNG = 2, + SMTO_NOTIMEOUTIFNOTHUNG = 8 } enum SIF_ALL = 23; @@ -1278,184 +1278,184 @@ enum SWP_DEFERERASE = 8192; enum SWP_ASYNCWINDOWPOS = 16384; enum { // passed variously as int or WPARAM - HSHELL_WINDOWCREATED = 1, - HSHELL_WINDOWDESTROYED, - HSHELL_ACTIVATESHELLWINDOW, - HSHELL_WINDOWACTIVATED, - HSHELL_GETMINRECT, - HSHELL_REDRAW, - HSHELL_TASKMAN, - HSHELL_LANGUAGE, // = 8 - HSHELL_ENDTASK = 10, - HSHELL_ACCESSIBILITYSTATE, - HSHELL_APPCOMMAND, // = 12 - HSHELL_RUDEAPPACTIVATED = 32772, - HSHELL_FLASH = 32774 + HSHELL_WINDOWCREATED = 1, + HSHELL_WINDOWDESTROYED, + HSHELL_ACTIVATESHELLWINDOW, + HSHELL_WINDOWACTIVATED, + HSHELL_GETMINRECT, + HSHELL_REDRAW, + HSHELL_TASKMAN, + HSHELL_LANGUAGE, // = 8 + HSHELL_ENDTASK = 10, + HSHELL_ACCESSIBILITYSTATE, + HSHELL_APPCOMMAND, // = 12 + HSHELL_RUDEAPPACTIVATED = 32772, + HSHELL_FLASH = 32774 } static if (_WIN32_WINNT >= 0x501) { - enum { - HSHELL_WINDOWREPLACED = 13, - HSHELL_WINDOWREPLACING - } + enum { + HSHELL_WINDOWREPLACED = 13, + HSHELL_WINDOWREPLACING + } } enum { - SPI_GETBEEP = 0x0001, - SPI_SETBEEP = 0x0002, - SPI_GETMOUSE = 0x0003, - SPI_SETMOUSE = 0x0004, - SPI_GETBORDER = 0x0005, - SPI_SETBORDER = 0x0006, - SPI_GETKEYBOARDSPEED = 0x000A, - SPI_SETKEYBOARDSPEED = 0x000B, - SPI_LANGDRIVER = 0x000C, - SPI_ICONHORIZONTALSPACING = 0x000D, - SPI_GETSCREENSAVETIMEOUT = 0x000E, - SPI_SETSCREENSAVETIMEOUT = 0x000F, - SPI_GETSCREENSAVEACTIVE = 0x0010, - SPI_SETSCREENSAVEACTIVE = 0x0011, - SPI_GETGRIDGRANULARITY = 0x0012, - SPI_SETGRIDGRANULARITY = 0x0013, - SPI_SETDESKWALLPAPER = 0x0014, - SPI_SETDESKPATTERN = 0x0015, - SPI_GETKEYBOARDDELAY = 0x0016, - SPI_SETKEYBOARDDELAY = 0x0017, - SPI_ICONVERTICALSPACING = 0x0018, - SPI_GETICONTITLEWRAP = 0x0019, - SPI_SETICONTITLEWRAP = 0x001A, - SPI_GETMENUDROPALIGNMENT = 0x001B, - SPI_SETMENUDROPALIGNMENT = 0x001C, - SPI_SETDOUBLECLKWIDTH = 0x001D, - SPI_SETDOUBLECLKHEIGHT = 0x001E, - SPI_GETICONTITLELOGFONT = 0x001F, - SPI_SETDOUBLECLICKTIME = 0x0020, - SPI_SETMOUSEBUTTONSWAP = 0x0021, - SPI_SETICONTITLELOGFONT = 0x0022, - SPI_GETFASTTASKSWITCH = 0x0023, - SPI_SETFASTTASKSWITCH = 0x0024, - SPI_SETDRAGFULLWINDOWS = 0x0025, - SPI_GETDRAGFULLWINDOWS = 0x0026, - SPI_GETNONCLIENTMETRICS = 0x0029, - SPI_SETNONCLIENTMETRICS = 0x002A, - SPI_GETMINIMIZEDMETRICS = 0x002B, - SPI_SETMINIMIZEDMETRICS = 0x002C, - SPI_GETICONMETRICS = 0x002D, - SPI_SETICONMETRICS = 0x002E, - SPI_SETWORKAREA = 0x002F, - SPI_GETWORKAREA = 0x0030, - SPI_SETPENWINDOWS = 0x0031, - SPI_GETFILTERKEYS = 0x0032, - SPI_SETFILTERKEYS = 0x0033, - SPI_GETTOGGLEKEYS = 0x0034, - SPI_SETTOGGLEKEYS = 0x0035, - SPI_GETMOUSEKEYS = 0x0036, - SPI_SETMOUSEKEYS = 0x0037, - SPI_GETSHOWSOUNDS = 0x0038, - SPI_SETSHOWSOUNDS = 0x0039, - SPI_GETSTICKYKEYS = 0x003A, - SPI_SETSTICKYKEYS = 0x003B, - SPI_GETACCESSTIMEOUT = 0x003C, - SPI_SETACCESSTIMEOUT = 0x003D, - SPI_GETSERIALKEYS = 0x003E, - SPI_SETSERIALKEYS = 0x003F, - SPI_GETSOUNDSENTRY = 0x0040, - SPI_SETSOUNDSENTRY = 0x0041, - SPI_GETHIGHCONTRAST = 0x0042, - SPI_SETHIGHCONTRAST = 0x0043, - SPI_GETKEYBOARDPREF = 0x0044, - SPI_SETKEYBOARDPREF = 0x0045, - SPI_GETSCREENREADER = 0x0046, - SPI_SETSCREENREADER = 0x0047, - SPI_GETANIMATION = 0x0048, - SPI_SETANIMATION = 0x0049, - SPI_GETFONTSMOOTHING = 0x004A, - SPI_SETFONTSMOOTHING = 0x004B, - SPI_SETDRAGWIDTH = 0x004C, - SPI_SETDRAGHEIGHT = 0x004D, - SPI_SETHANDHELD = 0x004E, - SPI_GETLOWPOWERTIMEOUT = 0x004F, - SPI_GETPOWEROFFTIMEOUT = 0x0050, - SPI_SETLOWPOWERTIMEOUT = 0x0051, - SPI_SETPOWEROFFTIMEOUT = 0x0052, - SPI_GETLOWPOWERACTIVE = 0x0053, - SPI_GETPOWEROFFACTIVE = 0x0054, - SPI_SETLOWPOWERACTIVE = 0x0055, - SPI_SETPOWEROFFACTIVE = 0x0056, - SPI_SETCURSORS = 0x0057, - SPI_SETICONS = 0x0058, - SPI_GETDEFAULTINPUTLANG = 0x0059, - SPI_SETDEFAULTINPUTLANG = 0x005A, - SPI_SETLANGTOGGLE = 0x005B, - SPI_GETWINDOWSEXTENSION = 0x005C, - SPI_SETMOUSETRAILS = 0x005D, - SPI_GETMOUSETRAILS = 0x005E, - SPI_GETSNAPTODEFBUTTON = 0x005F, - SPI_SETSNAPTODEFBUTTON = 0x0060, - //SPI_SCREENSAVERRUNNING = 0x0061, // mistake in older MinGW? - SPI_SETSCREENSAVERRUNNING = 0x0061, - SPI_GETMOUSEHOVERWIDTH = 0x0062, - SPI_SETMOUSEHOVERWIDTH = 0x0063, - SPI_GETMOUSEHOVERHEIGHT = 0x0064, - SPI_SETMOUSEHOVERHEIGHT = 0x0065, - SPI_GETMOUSEHOVERTIME = 0x0066, - SPI_SETMOUSEHOVERTIME = 0x0067, - SPI_GETWHEELSCROLLLINES = 0x0068, - SPI_SETWHEELSCROLLLINES = 0x0069, - SPI_GETMENUSHOWDELAY = 0x006A, - SPI_SETMENUSHOWDELAY = 0x006B, - SPI_GETSHOWIMEUI = 0x006E, - SPI_SETSHOWIMEUI = 0x006F, - SPI_GETMOUSESPEED = 0x0070, - SPI_SETMOUSESPEED = 0x0071, - SPI_GETSCREENSAVERRUNNING = 0x0072, - SPI_GETDESKWALLPAPER = 0x0073, - SPI_GETACTIVEWINDOWTRACKING = 0x1000, - SPI_SETACTIVEWINDOWTRACKING = 0x1001, - SPI_GETMENUANIMATION = 0x1002, - SPI_SETMENUANIMATION = 0x1003, - SPI_GETCOMBOBOXANIMATION = 0x1004, - SPI_SETCOMBOBOXANIMATION = 0x1005, - SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006, - SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007, - SPI_GETGRADIENTCAPTIONS = 0x1008, - SPI_SETGRADIENTCAPTIONS = 0x1009, - SPI_GETKEYBOARDCUES = 0x100A, - SPI_GETMENUUNDERLINES = SPI_GETKEYBOARDCUES, - SPI_SETKEYBOARDCUES = 0x100B, - SPI_SETMENUUNDERLINES = SPI_SETKEYBOARDCUES, - SPI_GETACTIVEWNDTRKZORDER = 0x100C, - SPI_SETACTIVEWNDTRKZORDER = 0x100D, - SPI_GETHOTTRACKING = 0x100E, - SPI_SETHOTTRACKING = 0x100F, - SPI_GETMENUFADE = 0x1012, - SPI_SETMENUFADE = 0x1013, - SPI_GETSELECTIONFADE = 0x1014, - SPI_SETSELECTIONFADE = 0x1015, - SPI_GETTOOLTIPANIMATION = 0x1016, - SPI_SETTOOLTIPANIMATION = 0x1017, - SPI_GETTOOLTIPFADE = 0x1018, - SPI_SETTOOLTIPFADE = 0x1019, - SPI_GETCURSORSHADOW = 0x101A, - SPI_SETCURSORSHADOW = 0x101B, - SPI_GETBLOCKSENDINPUTRESETS = 0x1026, - SPI_SETBLOCKSENDINPUTRESETS = 0x1027, - SPI_GETUIEFFECTS = 0x103E, - SPI_SETUIEFFECTS = 0x103F, - SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000, - SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001, - SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002, - SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003, - SPI_GETFOREGROUNDFLASHCOUNT = 0x2004, - SPI_SETFOREGROUNDFLASHCOUNT = 0x2005, - SPI_GETCARETWIDTH = 0x2006, - SPI_SETCARETWIDTH = 0x2007 + SPI_GETBEEP = 0x0001, + SPI_SETBEEP = 0x0002, + SPI_GETMOUSE = 0x0003, + SPI_SETMOUSE = 0x0004, + SPI_GETBORDER = 0x0005, + SPI_SETBORDER = 0x0006, + SPI_GETKEYBOARDSPEED = 0x000A, + SPI_SETKEYBOARDSPEED = 0x000B, + SPI_LANGDRIVER = 0x000C, + SPI_ICONHORIZONTALSPACING = 0x000D, + SPI_GETSCREENSAVETIMEOUT = 0x000E, + SPI_SETSCREENSAVETIMEOUT = 0x000F, + SPI_GETSCREENSAVEACTIVE = 0x0010, + SPI_SETSCREENSAVEACTIVE = 0x0011, + SPI_GETGRIDGRANULARITY = 0x0012, + SPI_SETGRIDGRANULARITY = 0x0013, + SPI_SETDESKWALLPAPER = 0x0014, + SPI_SETDESKPATTERN = 0x0015, + SPI_GETKEYBOARDDELAY = 0x0016, + SPI_SETKEYBOARDDELAY = 0x0017, + SPI_ICONVERTICALSPACING = 0x0018, + SPI_GETICONTITLEWRAP = 0x0019, + SPI_SETICONTITLEWRAP = 0x001A, + SPI_GETMENUDROPALIGNMENT = 0x001B, + SPI_SETMENUDROPALIGNMENT = 0x001C, + SPI_SETDOUBLECLKWIDTH = 0x001D, + SPI_SETDOUBLECLKHEIGHT = 0x001E, + SPI_GETICONTITLELOGFONT = 0x001F, + SPI_SETDOUBLECLICKTIME = 0x0020, + SPI_SETMOUSEBUTTONSWAP = 0x0021, + SPI_SETICONTITLELOGFONT = 0x0022, + SPI_GETFASTTASKSWITCH = 0x0023, + SPI_SETFASTTASKSWITCH = 0x0024, + SPI_SETDRAGFULLWINDOWS = 0x0025, + SPI_GETDRAGFULLWINDOWS = 0x0026, + SPI_GETNONCLIENTMETRICS = 0x0029, + SPI_SETNONCLIENTMETRICS = 0x002A, + SPI_GETMINIMIZEDMETRICS = 0x002B, + SPI_SETMINIMIZEDMETRICS = 0x002C, + SPI_GETICONMETRICS = 0x002D, + SPI_SETICONMETRICS = 0x002E, + SPI_SETWORKAREA = 0x002F, + SPI_GETWORKAREA = 0x0030, + SPI_SETPENWINDOWS = 0x0031, + SPI_GETFILTERKEYS = 0x0032, + SPI_SETFILTERKEYS = 0x0033, + SPI_GETTOGGLEKEYS = 0x0034, + SPI_SETTOGGLEKEYS = 0x0035, + SPI_GETMOUSEKEYS = 0x0036, + SPI_SETMOUSEKEYS = 0x0037, + SPI_GETSHOWSOUNDS = 0x0038, + SPI_SETSHOWSOUNDS = 0x0039, + SPI_GETSTICKYKEYS = 0x003A, + SPI_SETSTICKYKEYS = 0x003B, + SPI_GETACCESSTIMEOUT = 0x003C, + SPI_SETACCESSTIMEOUT = 0x003D, + SPI_GETSERIALKEYS = 0x003E, + SPI_SETSERIALKEYS = 0x003F, + SPI_GETSOUNDSENTRY = 0x0040, + SPI_SETSOUNDSENTRY = 0x0041, + SPI_GETHIGHCONTRAST = 0x0042, + SPI_SETHIGHCONTRAST = 0x0043, + SPI_GETKEYBOARDPREF = 0x0044, + SPI_SETKEYBOARDPREF = 0x0045, + SPI_GETSCREENREADER = 0x0046, + SPI_SETSCREENREADER = 0x0047, + SPI_GETANIMATION = 0x0048, + SPI_SETANIMATION = 0x0049, + SPI_GETFONTSMOOTHING = 0x004A, + SPI_SETFONTSMOOTHING = 0x004B, + SPI_SETDRAGWIDTH = 0x004C, + SPI_SETDRAGHEIGHT = 0x004D, + SPI_SETHANDHELD = 0x004E, + SPI_GETLOWPOWERTIMEOUT = 0x004F, + SPI_GETPOWEROFFTIMEOUT = 0x0050, + SPI_SETLOWPOWERTIMEOUT = 0x0051, + SPI_SETPOWEROFFTIMEOUT = 0x0052, + SPI_GETLOWPOWERACTIVE = 0x0053, + SPI_GETPOWEROFFACTIVE = 0x0054, + SPI_SETLOWPOWERACTIVE = 0x0055, + SPI_SETPOWEROFFACTIVE = 0x0056, + SPI_SETCURSORS = 0x0057, + SPI_SETICONS = 0x0058, + SPI_GETDEFAULTINPUTLANG = 0x0059, + SPI_SETDEFAULTINPUTLANG = 0x005A, + SPI_SETLANGTOGGLE = 0x005B, + SPI_GETWINDOWSEXTENSION = 0x005C, + SPI_SETMOUSETRAILS = 0x005D, + SPI_GETMOUSETRAILS = 0x005E, + SPI_GETSNAPTODEFBUTTON = 0x005F, + SPI_SETSNAPTODEFBUTTON = 0x0060, + //SPI_SCREENSAVERRUNNING = 0x0061, // mistake in older MinGW? + SPI_SETSCREENSAVERRUNNING = 0x0061, + SPI_GETMOUSEHOVERWIDTH = 0x0062, + SPI_SETMOUSEHOVERWIDTH = 0x0063, + SPI_GETMOUSEHOVERHEIGHT = 0x0064, + SPI_SETMOUSEHOVERHEIGHT = 0x0065, + SPI_GETMOUSEHOVERTIME = 0x0066, + SPI_SETMOUSEHOVERTIME = 0x0067, + SPI_GETWHEELSCROLLLINES = 0x0068, + SPI_SETWHEELSCROLLLINES = 0x0069, + SPI_GETMENUSHOWDELAY = 0x006A, + SPI_SETMENUSHOWDELAY = 0x006B, + SPI_GETSHOWIMEUI = 0x006E, + SPI_SETSHOWIMEUI = 0x006F, + SPI_GETMOUSESPEED = 0x0070, + SPI_SETMOUSESPEED = 0x0071, + SPI_GETSCREENSAVERRUNNING = 0x0072, + SPI_GETDESKWALLPAPER = 0x0073, + SPI_GETACTIVEWINDOWTRACKING = 0x1000, + SPI_SETACTIVEWINDOWTRACKING = 0x1001, + SPI_GETMENUANIMATION = 0x1002, + SPI_SETMENUANIMATION = 0x1003, + SPI_GETCOMBOBOXANIMATION = 0x1004, + SPI_SETCOMBOBOXANIMATION = 0x1005, + SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006, + SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007, + SPI_GETGRADIENTCAPTIONS = 0x1008, + SPI_SETGRADIENTCAPTIONS = 0x1009, + SPI_GETKEYBOARDCUES = 0x100A, + SPI_GETMENUUNDERLINES = SPI_GETKEYBOARDCUES, + SPI_SETKEYBOARDCUES = 0x100B, + SPI_SETMENUUNDERLINES = SPI_SETKEYBOARDCUES, + SPI_GETACTIVEWNDTRKZORDER = 0x100C, + SPI_SETACTIVEWNDTRKZORDER = 0x100D, + SPI_GETHOTTRACKING = 0x100E, + SPI_SETHOTTRACKING = 0x100F, + SPI_GETMENUFADE = 0x1012, + SPI_SETMENUFADE = 0x1013, + SPI_GETSELECTIONFADE = 0x1014, + SPI_SETSELECTIONFADE = 0x1015, + SPI_GETTOOLTIPANIMATION = 0x1016, + SPI_SETTOOLTIPANIMATION = 0x1017, + SPI_GETTOOLTIPFADE = 0x1018, + SPI_SETTOOLTIPFADE = 0x1019, + SPI_GETCURSORSHADOW = 0x101A, + SPI_SETCURSORSHADOW = 0x101B, + SPI_GETBLOCKSENDINPUTRESETS = 0x1026, + SPI_SETBLOCKSENDINPUTRESETS = 0x1027, + SPI_GETUIEFFECTS = 0x103E, + SPI_SETUIEFFECTS = 0x103F, + SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000, + SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001, + SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002, + SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003, + SPI_GETFOREGROUNDFLASHCOUNT = 0x2004, + SPI_SETFOREGROUNDFLASHCOUNT = 0x2005, + SPI_GETCARETWIDTH = 0x2006, + SPI_SETCARETWIDTH = 0x2007 } enum { - SPIF_UPDATEINIFILE = 1, - SPIF_SENDWININICHANGE = 2, - SPIF_SENDCHANGE = SPIF_SENDWININICHANGE + SPIF_UPDATEINIFILE = 1, + SPIF_SENDWININICHANGE = 2, + SPIF_SENDCHANGE = SPIF_SENDWININICHANGE } // [Redefined] ATF_ONOFFFEEDBACK = 2 @@ -1557,24 +1557,24 @@ enum WM_QUERYUISTATE = 0x0129; // LOWORD(wParam) values in WM_*UISTATE* enum { - UIS_SET = 1, - UIS_CLEAR = 2, - UIS_INITIALIZE = 3 + UIS_SET = 1, + UIS_CLEAR = 2, + UIS_INITIALIZE = 3 } // HIWORD(wParam) values in WM_*UISTATE* enum { - UISF_HIDEFOCUS = 0x1, - UISF_HIDEACCEL = 0x2 + UISF_HIDEFOCUS = 0x1, + UISF_HIDEACCEL = 0x2 } static if (_WIN32_WINNT >= 0x501) { - // HIWORD(wParam) values in WM_*UISTATE* - enum { - UISF_ACTIVE = 0x4 - } + // HIWORD(wParam) values in WM_*UISTATE* + enum { + UISF_ACTIVE = 0x4 + } } @@ -1652,8 +1652,8 @@ enum WM_SYSDEADCHAR = 263; enum WM_SYSKEYDOWN = 260; enum WM_SYSKEYUP = 261; static if (_WIN32_WINNT >= 0x501) { - enum WM_TABLET_FIRST = 704; - enum WM_TABLET_LAST = 735; + enum WM_TABLET_FIRST = 704; + enum WM_TABLET_LAST = 735; } enum WM_TCARD = 82; enum WM_THEMECHANGED = 794; @@ -1695,20 +1695,20 @@ enum WM_MBUTTONDBLCLK = 521; enum WM_MOUSEWHEEL = 522; enum WM_MOUSEFIRST = 512; static if (_WIN32_WINNT >= 0x501) { - enum WM_XBUTTONDOWN = 523; - enum WM_XBUTTONUP = 524; - enum WM_XBUTTONDBLCLK = 525; + enum WM_XBUTTONDOWN = 523; + enum WM_XBUTTONUP = 524; + enum WM_XBUTTONDBLCLK = 525; } static if (_WIN32_WINNT >= 0x600) { // FIXME: where did this come from? what version is it? - enum WM_MOUSEHWHEEL = 526; + enum WM_MOUSEHWHEEL = 526; } static if (_WIN32_WINNT >= 0x600) { - enum WM_MOUSELAST = WM_MOUSEHWHEEL; + enum WM_MOUSELAST = WM_MOUSEHWHEEL; } else static if (_WIN32_WINNT >= 0x501) { - enum WM_MOUSELAST = WM_XBUTTONDBLCLK; + enum WM_MOUSELAST = WM_XBUTTONDBLCLK; } else { - enum WM_MOUSELAST = WM_MOUSEWHEEL; + enum WM_MOUSELAST = WM_MOUSEWHEEL; } enum WM_MOUSEHOVER = 0x2A1; @@ -1717,7 +1717,7 @@ enum WM_MOUSELEAVE = 0x2A3; enum WHEEL_DELTA = 120; SHORT GET_WHEEL_DELTA_WPARAM()(WPARAM wparam) { - return cast(SHORT) HIWORD(wparam); + return cast(SHORT) HIWORD(wparam); } enum WHEEL_PAGESCROLL = uint.max; @@ -1729,7 +1729,7 @@ enum BM_GETSTATE = 242; enum BM_SETCHECK = 241; enum BM_SETIMAGE = 247; static if(_WIN32_WINNT >= 0x600) { - enum BM_SETDONTCLICK = 248; + enum BM_SETDONTCLICK = 248; } enum BM_SETSTATE = 243; enum BM_SETSTYLE = 244; @@ -2007,143 +2007,143 @@ enum MDITILE_HORIZONTAL = 1; enum MDITILE_VERTICAL = 0; enum { - VK_LBUTTON = 0x01, - VK_RBUTTON = 0x02, - VK_CANCEL = 0x03, - VK_MBUTTON = 0x04, - VK_XBUTTON1 = 0x05, - VK_XBUTTON2 = 0x06, - VK_BACK = 0x08, - VK_TAB = 0x09, - VK_CLEAR = 0x0C, - VK_RETURN = 0x0D, - VK_SHIFT = 0x10, - VK_CONTROL = 0x11, - VK_MENU = 0x12, - VK_PAUSE = 0x13, - VK_CAPITAL = 0x14, - VK_KANA = 0x15, - VK_HANGEUL = 0x15, - VK_HANGUL = 0x15, - VK_JUNJA = 0x17, - VK_FINAL = 0x18, - VK_HANJA = 0x19, - VK_KANJI = 0x19, - VK_ESCAPE = 0x1B, - VK_CONVERT = 0x1C, - VK_NONCONVERT = 0x1D, - VK_ACCEPT = 0x1E, - VK_MODECHANGE = 0x1F, - VK_SPACE = 0x20, - VK_PRIOR = 0x21, - VK_NEXT = 0x22, - VK_END = 0x23, - VK_HOME = 0x24, - VK_LEFT = 0x25, - VK_UP = 0x26, - VK_RIGHT = 0x27, - VK_DOWN = 0x28, - VK_SELECT = 0x29, - VK_PRINT = 0x2A, - VK_EXECUTE = 0x2B, - VK_SNAPSHOT = 0x2C, - VK_INSERT = 0x2D, - VK_DELETE = 0x2E, - VK_HELP = 0x2F, - VK_LWIN = 0x5B, - VK_RWIN = 0x5C, - VK_APPS = 0x5D, - VK_SLEEP = 0x5F, - VK_NUMPAD0 = 0x60, - VK_NUMPAD1 = 0x61, - VK_NUMPAD2 = 0x62, - VK_NUMPAD3 = 0x63, - VK_NUMPAD4 = 0x64, - VK_NUMPAD5 = 0x65, - VK_NUMPAD6 = 0x66, - VK_NUMPAD7 = 0x67, - VK_NUMPAD8 = 0x68, - VK_NUMPAD9 = 0x69, - VK_MULTIPLY = 0x6A, - VK_ADD = 0x6B, - VK_SEPARATOR = 0x6C, - VK_SUBTRACT = 0x6D, - VK_DECIMAL = 0x6E, - VK_DIVIDE = 0x6F, - VK_F1 = 0x70, - VK_F2 = 0x71, - VK_F3 = 0x72, - VK_F4 = 0x73, - VK_F5 = 0x74, - VK_F6 = 0x75, - VK_F7 = 0x76, - VK_F8 = 0x77, - VK_F9 = 0x78, - VK_F10 = 0x79, - VK_F11 = 0x7A, - VK_F12 = 0x7B, - VK_F13 = 0x7C, - VK_F14 = 0x7D, - VK_F15 = 0x7E, - VK_F16 = 0x7F, - VK_F17 = 0x80, - VK_F18 = 0x81, - VK_F19 = 0x82, - VK_F20 = 0x83, - VK_F21 = 0x84, - VK_F22 = 0x85, - VK_F23 = 0x86, - VK_F24 = 0x87, - VK_NUMLOCK = 0x90, - VK_SCROLL = 0x91, - VK_LSHIFT = 0xA0, - VK_RSHIFT = 0xA1, - VK_LCONTROL = 0xA2, - VK_RCONTROL = 0xA3, - VK_LMENU = 0xA4, - VK_RMENU = 0xA5, - VK_BROWSER_BACK = 0xA6, - VK_BROWSER_FORWARD = 0xA7, - VK_BROWSER_REFRESH = 0xA8, - VK_BROWSER_STOP = 0xA9, - VK_BROWSER_SEARCH = 0xAA, - VK_BROWSER_FAVORITES = 0xAB, - VK_BROWSER_HOME = 0xAC, - VK_VOLUME_MUTE = 0xAD, - VK_VOLUME_DOWN = 0xAE, - VK_VOLUME_UP = 0xAF, - VK_MEDIA_NEXT_TRACK = 0xB0, - VK_MEDIA_PREV_TRACK = 0xB1, - VK_MEDIA_STOP = 0xB2, - VK_MEDIA_PLAY_PAUSE = 0xB3, - VK_LAUNCH_MAIL = 0xB4, - VK_LAUNCH_MEDIA_SELECT = 0xB5, - VK_LAUNCH_APP1 = 0xB6, - VK_LAUNCH_APP2 = 0xB7, - VK_OEM_1 = 0xBA, - VK_OEM_PLUS = 0xBB, - VK_OEM_COMMA = 0xBC, - VK_OEM_MINUS = 0xBD, - VK_OEM_PERIOD = 0xBE, - VK_OEM_2 = 0xBF, - VK_OEM_3 = 0xC0, - VK_OEM_4 = 0xDB, - VK_OEM_5 = 0xDC, - VK_OEM_6 = 0xDD, - VK_OEM_7 = 0xDE, - VK_OEM_8 = 0xDF, - VK_OEM_102 = 0xE2, - VK_PROCESSKEY = 0xE5, - VK_PACKET = 0xE7, - VK_ATTN = 0xF6, - VK_CRSEL = 0xF7, - VK_EXSEL = 0xF8, - VK_EREOF = 0xF9, - VK_PLAY = 0xFA, - VK_ZOOM = 0xFB, - VK_NONAME = 0xFC, - VK_PA1 = 0xFD, - VK_OEM_CLEAR = 0xFE, + VK_LBUTTON = 0x01, + VK_RBUTTON = 0x02, + VK_CANCEL = 0x03, + VK_MBUTTON = 0x04, + VK_XBUTTON1 = 0x05, + VK_XBUTTON2 = 0x06, + VK_BACK = 0x08, + VK_TAB = 0x09, + VK_CLEAR = 0x0C, + VK_RETURN = 0x0D, + VK_SHIFT = 0x10, + VK_CONTROL = 0x11, + VK_MENU = 0x12, + VK_PAUSE = 0x13, + VK_CAPITAL = 0x14, + VK_KANA = 0x15, + VK_HANGEUL = 0x15, + VK_HANGUL = 0x15, + VK_JUNJA = 0x17, + VK_FINAL = 0x18, + VK_HANJA = 0x19, + VK_KANJI = 0x19, + VK_ESCAPE = 0x1B, + VK_CONVERT = 0x1C, + VK_NONCONVERT = 0x1D, + VK_ACCEPT = 0x1E, + VK_MODECHANGE = 0x1F, + VK_SPACE = 0x20, + VK_PRIOR = 0x21, + VK_NEXT = 0x22, + VK_END = 0x23, + VK_HOME = 0x24, + VK_LEFT = 0x25, + VK_UP = 0x26, + VK_RIGHT = 0x27, + VK_DOWN = 0x28, + VK_SELECT = 0x29, + VK_PRINT = 0x2A, + VK_EXECUTE = 0x2B, + VK_SNAPSHOT = 0x2C, + VK_INSERT = 0x2D, + VK_DELETE = 0x2E, + VK_HELP = 0x2F, + VK_LWIN = 0x5B, + VK_RWIN = 0x5C, + VK_APPS = 0x5D, + VK_SLEEP = 0x5F, + VK_NUMPAD0 = 0x60, + VK_NUMPAD1 = 0x61, + VK_NUMPAD2 = 0x62, + VK_NUMPAD3 = 0x63, + VK_NUMPAD4 = 0x64, + VK_NUMPAD5 = 0x65, + VK_NUMPAD6 = 0x66, + VK_NUMPAD7 = 0x67, + VK_NUMPAD8 = 0x68, + VK_NUMPAD9 = 0x69, + VK_MULTIPLY = 0x6A, + VK_ADD = 0x6B, + VK_SEPARATOR = 0x6C, + VK_SUBTRACT = 0x6D, + VK_DECIMAL = 0x6E, + VK_DIVIDE = 0x6F, + VK_F1 = 0x70, + VK_F2 = 0x71, + VK_F3 = 0x72, + VK_F4 = 0x73, + VK_F5 = 0x74, + VK_F6 = 0x75, + VK_F7 = 0x76, + VK_F8 = 0x77, + VK_F9 = 0x78, + VK_F10 = 0x79, + VK_F11 = 0x7A, + VK_F12 = 0x7B, + VK_F13 = 0x7C, + VK_F14 = 0x7D, + VK_F15 = 0x7E, + VK_F16 = 0x7F, + VK_F17 = 0x80, + VK_F18 = 0x81, + VK_F19 = 0x82, + VK_F20 = 0x83, + VK_F21 = 0x84, + VK_F22 = 0x85, + VK_F23 = 0x86, + VK_F24 = 0x87, + VK_NUMLOCK = 0x90, + VK_SCROLL = 0x91, + VK_LSHIFT = 0xA0, + VK_RSHIFT = 0xA1, + VK_LCONTROL = 0xA2, + VK_RCONTROL = 0xA3, + VK_LMENU = 0xA4, + VK_RMENU = 0xA5, + VK_BROWSER_BACK = 0xA6, + VK_BROWSER_FORWARD = 0xA7, + VK_BROWSER_REFRESH = 0xA8, + VK_BROWSER_STOP = 0xA9, + VK_BROWSER_SEARCH = 0xAA, + VK_BROWSER_FAVORITES = 0xAB, + VK_BROWSER_HOME = 0xAC, + VK_VOLUME_MUTE = 0xAD, + VK_VOLUME_DOWN = 0xAE, + VK_VOLUME_UP = 0xAF, + VK_MEDIA_NEXT_TRACK = 0xB0, + VK_MEDIA_PREV_TRACK = 0xB1, + VK_MEDIA_STOP = 0xB2, + VK_MEDIA_PLAY_PAUSE = 0xB3, + VK_LAUNCH_MAIL = 0xB4, + VK_LAUNCH_MEDIA_SELECT = 0xB5, + VK_LAUNCH_APP1 = 0xB6, + VK_LAUNCH_APP2 = 0xB7, + VK_OEM_1 = 0xBA, + VK_OEM_PLUS = 0xBB, + VK_OEM_COMMA = 0xBC, + VK_OEM_MINUS = 0xBD, + VK_OEM_PERIOD = 0xBE, + VK_OEM_2 = 0xBF, + VK_OEM_3 = 0xC0, + VK_OEM_4 = 0xDB, + VK_OEM_5 = 0xDC, + VK_OEM_6 = 0xDD, + VK_OEM_7 = 0xDE, + VK_OEM_8 = 0xDF, + VK_OEM_102 = 0xE2, + VK_PROCESSKEY = 0xE5, + VK_PACKET = 0xE7, + VK_ATTN = 0xF6, + VK_CRSEL = 0xF7, + VK_EXSEL = 0xF8, + VK_EREOF = 0xF9, + VK_PLAY = 0xFA, + VK_ZOOM = 0xFB, + VK_NONAME = 0xFC, + VK_PA1 = 0xFD, + VK_OEM_CLEAR = 0xFE, } enum TME_HOVER = 1; @@ -2162,19 +2162,19 @@ enum MK_XBUTTON1 = 32; enum MK_XBUTTON2 = 64; enum { - TPM_RECURSE = 0x0001, - TPM_LEFTBUTTON = 0, - TPM_RIGHTBUTTON = 0x0002, - TPM_LEFTALIGN = 0, - TPM_CENTERALIGN = 0x0004, - TPM_RIGHTALIGN = 0x0008, - TPM_TOPALIGN = 0, - TPM_VCENTERALIGN = 0x0010, - TPM_BOTTOMALIGN = 0x0020, - TPM_HORIZONTAL = 0, - TPM_VERTICAL = 0x0040, - TPM_NONOTIFY = 0x0080, - TPM_RETURNCMD = 0x0100 + TPM_RECURSE = 0x0001, + TPM_LEFTBUTTON = 0, + TPM_RIGHTBUTTON = 0x0002, + TPM_LEFTALIGN = 0, + TPM_CENTERALIGN = 0x0004, + TPM_RIGHTALIGN = 0x0008, + TPM_TOPALIGN = 0, + TPM_VCENTERALIGN = 0x0010, + TPM_BOTTOMALIGN = 0x0020, + TPM_HORIZONTAL = 0, + TPM_VERTICAL = 0x0040, + TPM_NONOTIFY = 0x0080, + TPM_RETURNCMD = 0x0100 } enum HELP_COMMAND = 0x102; @@ -2409,17 +2409,17 @@ enum ICON_SMALL2 = 2; } enum HBITMAP - HBMMENU_CALLBACK = cast(HBITMAP)-1, - HBMMENU_SYSTEM = cast(HBITMAP)1, - HBMMENU_MBAR_RESTORE = cast(HBITMAP)2, - HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3, - HBMMENU_MBAR_CLOSE = cast(HBITMAP)5, - HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6, - HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7, - HBMMENU_POPUP_CLOSE = cast(HBITMAP)8, - HBMMENU_POPUP_RESTORE = cast(HBITMAP)9, - HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10, - HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11; + HBMMENU_CALLBACK = cast(HBITMAP)-1, + HBMMENU_SYSTEM = cast(HBITMAP)1, + HBMMENU_MBAR_RESTORE = cast(HBITMAP)2, + HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3, + HBMMENU_MBAR_CLOSE = cast(HBITMAP)5, + HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6, + HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7, + HBMMENU_POPUP_CLOSE = cast(HBITMAP)8, + HBMMENU_POPUP_RESTORE = cast(HBITMAP)9, + HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10, + HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11; enum MOD_ALT = 1; enum MOD_CONTROL = 2; @@ -2444,128 +2444,128 @@ enum GA_ROOT = 2; enum GA_ROOTOWNER = 3; enum { - MAPVK_VK_TO_VSC, - MAPVK_VSC_TO_VK, - MAPVK_VK_TO_CHAR, - MAPVK_VSC_TO_VK_EX, - MAPVK_VK_TO_VSC_EX // = 4 + MAPVK_VK_TO_VSC, + MAPVK_VSC_TO_VK, + MAPVK_VK_TO_CHAR, + MAPVK_VSC_TO_VK_EX, + MAPVK_VK_TO_VSC_EX // = 4 } enum { - INPUT_MOUSE, - INPUT_KEYBOARD, - INPUT_HARDWARE // = 2 + INPUT_MOUSE, + INPUT_KEYBOARD, + INPUT_HARDWARE // = 2 } // Callbacks // --------- extern (Windows) { - alias INT_PTR function(HWND, UINT, WPARAM, LPARAM) DLGPROC; - alias void function(HWND, UINT, UINT_PTR, DWORD) TIMERPROC; - alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC; - alias LRESULT function(int, WPARAM, LPARAM) HOOKPROC; - alias BOOL function(HWND, LPCSTR, HANDLE) PROPENUMPROCA; - alias BOOL function(HWND, LPCWSTR, HANDLE) PROPENUMPROCW; - alias BOOL function(HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; - alias BOOL function(HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; - alias int function(LPSTR, int, int, int) EDITWORDBREAKPROCA; - alias int function(LPWSTR, int, int, int) EDITWORDBREAKPROCW; - alias LRESULT function(HWND, UINT, WPARAM, LPARAM) WNDPROC; - alias BOOL function(HDC, LPARAM, WPARAM, int, int) DRAWSTATEPROC; - alias BOOL function(HWND, LPARAM) WNDENUMPROC; - alias BOOL function(HWND, LPARAM) ENUMWINDOWSPROC; - alias void function(LPHELPINFO) MSGBOXCALLBACK; - - alias BOOL function(HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; - alias BOOL function(LPSTR, LPARAM) NAMEENUMPROCA; - alias BOOL function(LPWSTR, LPARAM) NAMEENUMPROCW; - alias void function(HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; - - alias NAMEENUMPROCA DESKTOPENUMPROCA; - alias NAMEENUMPROCW DESKTOPENUMPROCW; - alias NAMEENUMPROCA WINSTAENUMPROCA; - alias NAMEENUMPROCW WINSTAENUMPROCW; + alias INT_PTR function(HWND, UINT, WPARAM, LPARAM) DLGPROC; + alias void function(HWND, UINT, UINT_PTR, DWORD) TIMERPROC; + alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC; + alias LRESULT function(int, WPARAM, LPARAM) HOOKPROC; + alias BOOL function(HWND, LPCSTR, HANDLE) PROPENUMPROCA; + alias BOOL function(HWND, LPCWSTR, HANDLE) PROPENUMPROCW; + alias BOOL function(HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; + alias BOOL function(HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; + alias int function(LPSTR, int, int, int) EDITWORDBREAKPROCA; + alias int function(LPWSTR, int, int, int) EDITWORDBREAKPROCW; + alias LRESULT function(HWND, UINT, WPARAM, LPARAM) WNDPROC; + alias BOOL function(HDC, LPARAM, WPARAM, int, int) DRAWSTATEPROC; + alias BOOL function(HWND, LPARAM) WNDENUMPROC; + alias BOOL function(HWND, LPARAM) ENUMWINDOWSPROC; + alias void function(LPHELPINFO) MSGBOXCALLBACK; + + alias BOOL function(HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; + alias BOOL function(LPSTR, LPARAM) NAMEENUMPROCA; + alias BOOL function(LPWSTR, LPARAM) NAMEENUMPROCW; + alias void function(HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; + + alias NAMEENUMPROCA DESKTOPENUMPROCA; + alias NAMEENUMPROCW DESKTOPENUMPROCW; + alias NAMEENUMPROCA WINSTAENUMPROCA; + alias NAMEENUMPROCW WINSTAENUMPROCW; } mixin DECLARE_HANDLE!("HDWP"); mixin DECLARE_HANDLE!("HDEVNOTIFY"); struct MENUGETOBJECTINFO { - DWORD dwFlags; - UINT uPos; - HMENU hmenu; - PVOID riid; - PVOID pvObj; + DWORD dwFlags; + UINT uPos; + HMENU hmenu; + PVOID riid; + PVOID pvObj; } alias MENUGETOBJECTINFO* PMENUGETOBJECTINFO; struct ACCEL { - BYTE fVirt; - WORD key; - WORD cmd; + BYTE fVirt; + WORD key; + WORD cmd; } alias ACCEL* LPACCEL; struct ACCESSTIMEOUT { - UINT cbSize = ACCESSTIMEOUT.sizeof; - DWORD dwFlags; - DWORD iTimeOutMSec; + UINT cbSize = ACCESSTIMEOUT.sizeof; + DWORD dwFlags; + DWORD iTimeOutMSec; } alias ACCESSTIMEOUT* LPACCESSTIMEOUT; struct ANIMATIONINFO { - UINT cbSize = ANIMATIONINFO.sizeof; - int iMinAnimate; + UINT cbSize = ANIMATIONINFO.sizeof; + int iMinAnimate; } alias ANIMATIONINFO* LPANIMATIONINFO; struct CREATESTRUCTA { - LPVOID lpCreateParams; - HINSTANCE hInstance; - HMENU hMenu; - HWND hwndParent; - int cy; - int cx; - int y; - int x; - LONG style; - LPCSTR lpszName; - LPCSTR lpszClass; - DWORD dwExStyle; + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCSTR lpszName; + LPCSTR lpszClass; + DWORD dwExStyle; } alias CREATESTRUCTA* LPCREATESTRUCTA; struct CREATESTRUCTW { - LPVOID lpCreateParams; - HINSTANCE hInstance; - HMENU hMenu; - HWND hwndParent; - int cy; - int cx; - int y; - int x; - LONG style; - LPCWSTR lpszName; - LPCWSTR lpszClass; - DWORD dwExStyle; + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCWSTR lpszName; + LPCWSTR lpszClass; + DWORD dwExStyle; } alias CREATESTRUCTW* LPCREATESTRUCTW; struct CBT_CREATEWNDA { - LPCREATESTRUCTA lpcs; - HWND hwndInsertAfter; + LPCREATESTRUCTA lpcs; + HWND hwndInsertAfter; } alias CBT_CREATEWNDA* LPCBT_CREATEWNDA; struct CBT_CREATEWNDW { - LPCREATESTRUCTW lpcs; - HWND hwndInsertAfter; + LPCREATESTRUCTW lpcs; + HWND hwndInsertAfter; } alias CBT_CREATEWNDW* LPCBT_CREATEWNDW; struct CBTACTIVATESTRUCT { - BOOL fMouse; - HWND hWndActive; + BOOL fMouse; + HWND hWndActive; } alias CBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT; @@ -2581,95 +2581,95 @@ alias WTSSESSION_NOTIFICATION* PWTSSESSION_NOTIFICATION; } struct CLIENTCREATESTRUCT { - HANDLE hWindowMenu; - UINT idFirstChild; + HANDLE hWindowMenu; + UINT idFirstChild; } alias CLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT; struct COMPAREITEMSTRUCT { - UINT CtlType; - UINT CtlID; - HWND hwndItem; - UINT itemID1; - DWORD itemData1; - UINT itemID2; - DWORD itemData2; - DWORD dwLocaleId; + UINT CtlType; + UINT CtlID; + HWND hwndItem; + UINT itemID1; + DWORD itemData1; + UINT itemID2; + DWORD itemData2; + DWORD dwLocaleId; } alias COMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT; struct COPYDATASTRUCT { - DWORD dwData; - DWORD cbData; - PVOID lpData; + DWORD dwData; + DWORD cbData; + PVOID lpData; } alias COPYDATASTRUCT* PCOPYDATASTRUCT; struct CURSORSHAPE { - int xHotSpot; - int yHotSpot; - int cx; - int cy; - int cbWidth; - BYTE Planes; - BYTE BitsPixel; + int xHotSpot; + int yHotSpot; + int cx; + int cy; + int cbWidth; + BYTE Planes; + BYTE BitsPixel; } alias CURSORSHAPE* LPCURSORSHAPE; struct CWPRETSTRUCT { - LRESULT lResult; - LPARAM lParam; - WPARAM wParam; - DWORD message; - HWND hwnd; + LRESULT lResult; + LPARAM lParam; + WPARAM wParam; + DWORD message; + HWND hwnd; } struct CWPSTRUCT { - LPARAM lParam; - WPARAM wParam; - UINT message; - HWND hwnd; + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; } alias CWPSTRUCT* PCWPSTRUCT; struct DEBUGHOOKINFO { - DWORD idThread; - DWORD idThreadInstaller; - LPARAM lParam; - WPARAM wParam; - int code; + DWORD idThread; + DWORD idThreadInstaller; + LPARAM lParam; + WPARAM wParam; + int code; } alias DEBUGHOOKINFO* PDEBUGHOOKINFO, LPDEBUGHOOKINFO; struct DELETEITEMSTRUCT { - UINT CtlType; - UINT CtlID; - UINT itemID; - HWND hwndItem; - UINT itemData; + UINT CtlType; + UINT CtlID; + UINT itemID; + HWND hwndItem; + UINT itemData; } alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT, LPDELETEITEMSTRUCT; align(2): struct DLGITEMTEMPLATE { - DWORD style; - DWORD dwExtendedStyle; - short x; - short y; - short cx; - short cy; - WORD id; + DWORD style; + DWORD dwExtendedStyle; + short x; + short y; + short cx; + short cy; + WORD id; } alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATE; struct DLGTEMPLATE { - DWORD style; - DWORD dwExtendedStyle; - WORD cdit; - short x; - short y; - short cx; - short cy; + DWORD style; + DWORD dwExtendedStyle; + WORD cdit; + short x; + short y; + short cx; + short cy; } alias DLGTEMPLATE* LPDLGTEMPLATE, LPDLGTEMPLATEA, LPDLGTEMPLATEW; alias const(DLGTEMPLATE)* LPCDLGTEMPLATE; @@ -2677,188 +2677,188 @@ alias const(DLGTEMPLATE)* LPCDLGTEMPLATE; align: struct DRAWITEMSTRUCT { - UINT CtlType; - UINT CtlID; - UINT itemID; - UINT itemAction; - UINT itemState; - HWND hwndItem; - HDC hDC; - RECT rcItem; - DWORD itemData; + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemAction; + UINT itemState; + HWND hwndItem; + HDC hDC; + RECT rcItem; + DWORD itemData; } alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT, PDRAWITEMSTRUCT; struct DRAWTEXTPARAMS { - UINT cbSize = DRAWTEXTPARAMS.sizeof; - int iTabLength; - int iLeftMargin; - int iRightMargin; - UINT uiLengthDrawn; + UINT cbSize = DRAWTEXTPARAMS.sizeof; + int iTabLength; + int iLeftMargin; + int iRightMargin; + UINT uiLengthDrawn; } alias DRAWTEXTPARAMS* LPDRAWTEXTPARAMS; struct PAINTSTRUCT { - HDC hdc; - BOOL fErase; - RECT rcPaint; - BOOL fRestore; - BOOL fIncUpdate; - BYTE[32] rgbReserved; + HDC hdc; + BOOL fErase; + RECT rcPaint; + BOOL fRestore; + BOOL fIncUpdate; + BYTE[32] rgbReserved; } alias PAINTSTRUCT* LPPAINTSTRUCT; struct MSG { - HWND hwnd; - UINT message; - WPARAM wParam; - LPARAM lParam; - DWORD time; - POINT pt; + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; } alias MSG* LPMSG, PMSG; struct ICONINFO { - BOOL fIcon; - DWORD xHotspot; - DWORD yHotspot; - HBITMAP hbmMask; - HBITMAP hbmColor; + BOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; } alias ICONINFO* PICONINFO; struct NMHDR { - HWND hwndFrom; - UINT_PTR idFrom; - UINT code; + HWND hwndFrom; + UINT_PTR idFrom; + UINT code; } alias NMHDR* LPNMHDR; struct WNDCLASSA { - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCSTR lpszMenuName; - LPCSTR lpszClassName; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; } alias WNDCLASSA* LPWNDCLASSA, PWNDCLASSA; struct WNDCLASSW { - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCWSTR lpszMenuName; - LPCWSTR lpszClassName; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; } alias WNDCLASSW* LPWNDCLASSW, PWNDCLASSW; struct WNDCLASSEXA { - UINT cbSize = WNDCLASSEXA.sizeof; - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCSTR lpszMenuName; - LPCSTR lpszClassName; - HICON hIconSm; + UINT cbSize = WNDCLASSEXA.sizeof; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; + HICON hIconSm; } alias WNDCLASSEXA* LPWNDCLASSEXA, PWNDCLASSEXA; struct WNDCLASSEXW { - UINT cbSize = WNDCLASSEXW.sizeof; - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCWSTR lpszMenuName; - LPCWSTR lpszClassName; - HICON hIconSm; + UINT cbSize = WNDCLASSEXW.sizeof; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; + HICON hIconSm; } alias WNDCLASSEXW* LPWNDCLASSEXW, PWNDCLASSEXW; struct MENUITEMINFOA { - UINT cbSize = MENUITEMINFOA.sizeof; - UINT fMask; - UINT fType; - UINT fState; - UINT wID; - HMENU hSubMenu; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - ULONG_PTR dwItemData; - LPSTR dwTypeData; - UINT cch; - HBITMAP hbmpItem; + UINT cbSize = MENUITEMINFOA.sizeof; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPSTR dwTypeData; + UINT cch; + HBITMAP hbmpItem; } alias MENUITEMINFOA* LPMENUITEMINFOA; alias const(MENUITEMINFOA)* LPCMENUITEMINFOA; struct MENUITEMINFOW { - UINT cbSize = MENUITEMINFOW.sizeof; - UINT fMask; - UINT fType; - UINT fState; - UINT wID; - HMENU hSubMenu; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - ULONG_PTR dwItemData; - LPWSTR dwTypeData; - UINT cch; - HBITMAP hbmpItem; + UINT cbSize = MENUITEMINFOW.sizeof; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPWSTR dwTypeData; + UINT cch; + HBITMAP hbmpItem; } alias MENUITEMINFOW* LPMENUITEMINFOW; alias const(MENUITEMINFOW)* LPCMENUITEMINFOW; struct SCROLLINFO { - UINT cbSize = this.sizeof; - UINT fMask; - int nMin; - int nMax; - UINT nPage; - int nPos; - int nTrackPos; + UINT cbSize = this.sizeof; + UINT fMask; + int nMin; + int nMax; + UINT nPage; + int nPos; + int nTrackPos; } alias SCROLLINFO* LPSCROLLINFO; alias const(SCROLLINFO)* LPCSCROLLINFO; struct WINDOWPLACEMENT { - UINT length; - UINT flags; - UINT showCmd; - POINT ptMinPosition; - POINT ptMaxPosition; - RECT rcNormalPosition; + UINT length; + UINT flags; + UINT showCmd; + POINT ptMinPosition; + POINT ptMaxPosition; + RECT rcNormalPosition; } alias WINDOWPLACEMENT* LPWINDOWPLACEMENT, PWINDOWPLACEMENT; struct MENUITEMTEMPLATEHEADER { - WORD versionNumber; - WORD offset; + WORD versionNumber; + WORD offset; } struct MENUITEMTEMPLATE { - WORD mtOption; - WORD mtID; - WCHAR[1] mtString; + WORD mtOption; + WORD mtID; + WCHAR[1] mtString; } alias void MENUTEMPLATE, MENUTEMPLATEA, MENUTEMPLATEW; @@ -2866,422 +2866,422 @@ alias void MENUTEMPLATE, MENUTEMPLATEA, MENUTEMPLATEW; alias MENUTEMPLATE* LPMENUTEMPLATEA, LPMENUTEMPLATEW, LPMENUTEMPLATE; struct HELPINFO { - UINT cbSize = this.sizeof; - int iContextType; - int iCtrlId; - HANDLE hItemHandle; - DWORD dwContextId; - POINT MousePos; + UINT cbSize = this.sizeof; + int iContextType; + int iCtrlId; + HANDLE hItemHandle; + DWORD dwContextId; + POINT MousePos; } alias HELPINFO* LPHELPINFO; struct MSGBOXPARAMSA { - UINT cbSize = this.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - LPCSTR lpszText; - LPCSTR lpszCaption; - DWORD dwStyle; - LPCSTR lpszIcon; - DWORD dwContextHelpId; - MSGBOXCALLBACK lpfnMsgBoxCallback; - DWORD dwLanguageId; + UINT cbSize = this.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpszText; + LPCSTR lpszCaption; + DWORD dwStyle; + LPCSTR lpszIcon; + DWORD dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; } alias MSGBOXPARAMSA* PMSGBOXPARAMSA, LPMSGBOXPARAMSA; struct MSGBOXPARAMSW { - UINT cbSize = this.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - LPCWSTR lpszText; - LPCWSTR lpszCaption; - DWORD dwStyle; - LPCWSTR lpszIcon; - DWORD dwContextHelpId; - MSGBOXCALLBACK lpfnMsgBoxCallback; - DWORD dwLanguageId; + UINT cbSize = this.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpszText; + LPCWSTR lpszCaption; + DWORD dwStyle; + LPCWSTR lpszIcon; + DWORD dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; } alias MSGBOXPARAMSW* PMSGBOXPARAMSW, LPMSGBOXPARAMSW; struct USEROBJECTFLAGS { - BOOL fInherit; - BOOL fReserved; - DWORD dwFlags; + BOOL fInherit; + BOOL fReserved; + DWORD dwFlags; } struct FILTERKEYS { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iWaitMSec; - DWORD iDelayMSec; - DWORD iRepeatMSec; - DWORD iBounceMSec; + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iWaitMSec; + DWORD iDelayMSec; + DWORD iRepeatMSec; + DWORD iBounceMSec; } struct HIGHCONTRASTA { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPSTR lpszDefaultScheme; + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPSTR lpszDefaultScheme; } alias HIGHCONTRASTA* LPHIGHCONTRASTA; struct HIGHCONTRASTW { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPWSTR lpszDefaultScheme; + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPWSTR lpszDefaultScheme; } alias HIGHCONTRASTW* LPHIGHCONTRASTW; struct ICONMETRICSA { - UINT cbSize = this.sizeof; - int iHorzSpacing; - int iVertSpacing; - int iTitleWrap; - LOGFONTA lfFont; + UINT cbSize = this.sizeof; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTA lfFont; } alias ICONMETRICSA* LPICONMETRICSA; struct ICONMETRICSW { - UINT cbSize = this.sizeof; - int iHorzSpacing; - int iVertSpacing; - int iTitleWrap; - LOGFONTW lfFont; + UINT cbSize = this.sizeof; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTW lfFont; } alias ICONMETRICSW* LPICONMETRICSW; struct MINIMIZEDMETRICS { - UINT cbSize = this.sizeof; - int iWidth; - int iHorzGap; - int iVertGap; - int iArrange; + UINT cbSize = this.sizeof; + int iWidth; + int iHorzGap; + int iVertGap; + int iArrange; } alias MINIMIZEDMETRICS* LPMINIMIZEDMETRICS; struct MOUSEKEYS { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iMaxSpeed; - DWORD iTimeToMaxSpeed; - DWORD iCtrlSpeed; - DWORD dwReserved1; - DWORD dwReserved2; + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iMaxSpeed; + DWORD iTimeToMaxSpeed; + DWORD iCtrlSpeed; + DWORD dwReserved1; + DWORD dwReserved2; } alias MOUSEKEYS* LPMOUSEKEYS; struct NONCLIENTMETRICSA { - UINT cbSize = this.sizeof; - int iBorderWidth; - int iScrollWidth; - int iScrollHeight; - int iCaptionWidth; - int iCaptionHeight; - LOGFONTA lfCaptionFont; - int iSmCaptionWidth; - int iSmCaptionHeight; - LOGFONTA lfSmCaptionFont; - int iMenuWidth; - int iMenuHeight; - LOGFONTA lfMenuFont; - LOGFONTA lfStatusFont; - LOGFONTA lfMessageFont; + UINT cbSize = this.sizeof; + int iBorderWidth; + int iScrollWidth; + int iScrollHeight; + int iCaptionWidth; + int iCaptionHeight; + LOGFONTA lfCaptionFont; + int iSmCaptionWidth; + int iSmCaptionHeight; + LOGFONTA lfSmCaptionFont; + int iMenuWidth; + int iMenuHeight; + LOGFONTA lfMenuFont; + LOGFONTA lfStatusFont; + LOGFONTA lfMessageFont; } alias NONCLIENTMETRICSA* LPNONCLIENTMETRICSA; struct NONCLIENTMETRICSW { - UINT cbSize = this.sizeof; - int iBorderWidth; - int iScrollWidth; - int iScrollHeight; - int iCaptionWidth; - int iCaptionHeight; - LOGFONTW lfCaptionFont; - int iSmCaptionWidth; - int iSmCaptionHeight; - LOGFONTW lfSmCaptionFont; - int iMenuWidth; - int iMenuHeight; - LOGFONTW lfMenuFont; - LOGFONTW lfStatusFont; - LOGFONTW lfMessageFont; + UINT cbSize = this.sizeof; + int iBorderWidth; + int iScrollWidth; + int iScrollHeight; + int iCaptionWidth; + int iCaptionHeight; + LOGFONTW lfCaptionFont; + int iSmCaptionWidth; + int iSmCaptionHeight; + LOGFONTW lfSmCaptionFont; + int iMenuWidth; + int iMenuHeight; + LOGFONTW lfMenuFont; + LOGFONTW lfStatusFont; + LOGFONTW lfMessageFont; } alias NONCLIENTMETRICSW* LPNONCLIENTMETRICSW; struct SERIALKEYSA { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPSTR lpszActivePort; - LPSTR lpszPort; - UINT iBaudRate; - UINT iPortState; - UINT iActive; + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPSTR lpszActivePort; + LPSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; } alias SERIALKEYSA* LPSERIALKEYSA; struct SERIALKEYSW { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPWSTR lpszActivePort; - LPWSTR lpszPort; - UINT iBaudRate; - UINT iPortState; - UINT iActive; + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPWSTR lpszActivePort; + LPWSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; } alias SERIALKEYSW* LPSERIALKEYSW; struct SOUNDSENTRYA { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iFSTextEffect; - DWORD iFSTextEffectMSec; - DWORD iFSTextEffectColorBits; - DWORD iFSGrafEffect; - DWORD iFSGrafEffectMSec; - DWORD iFSGrafEffectColor; - DWORD iWindowsEffect; - DWORD iWindowsEffectMSec; - LPSTR lpszWindowsEffectDLL; - DWORD iWindowsEffectOrdinal; + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; } alias SOUNDSENTRYA* LPSOUNDSENTRYA; struct SOUNDSENTRYW { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iFSTextEffect; - DWORD iFSTextEffectMSec; - DWORD iFSTextEffectColorBits; - DWORD iFSGrafEffect; - DWORD iFSGrafEffectMSec; - DWORD iFSGrafEffectColor; - DWORD iWindowsEffect; - DWORD iWindowsEffectMSec; - LPWSTR lpszWindowsEffectDLL; - DWORD iWindowsEffectOrdinal; + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPWSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; } alias SOUNDSENTRYW* LPSOUNDSENTRYW; struct STICKYKEYS { - DWORD cbSize = this.sizeof; - DWORD dwFlags; + DWORD cbSize = this.sizeof; + DWORD dwFlags; } alias STICKYKEYS* LPSTICKYKEYS; struct TOGGLEKEYS { - DWORD cbSize = this.sizeof; - DWORD dwFlags; + DWORD cbSize = this.sizeof; + DWORD dwFlags; } struct MOUSEHOOKSTRUCT { - POINT pt; - HWND hwnd; - UINT wHitTestCode; - DWORD dwExtraInfo; + POINT pt; + HWND hwnd; + UINT wHitTestCode; + DWORD dwExtraInfo; } alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT, PMOUSEHOOKSTRUCT; struct TRACKMOUSEEVENT { - DWORD cbSize = this.sizeof; - DWORD dwFlags; - HWND hwndTrack; - DWORD dwHoverTime; + DWORD cbSize = this.sizeof; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; } alias TRACKMOUSEEVENT* LPTRACKMOUSEEVENT; struct TPMPARAMS { - UINT cbSize = this.sizeof; - RECT rcExclude; + UINT cbSize = this.sizeof; + RECT rcExclude; } alias TPMPARAMS* LPTPMPARAMS; struct EVENTMSG { - UINT message; - UINT paramL; - UINT paramH; - DWORD time; - HWND hwnd; + UINT message; + UINT paramL; + UINT paramH; + DWORD time; + HWND hwnd; } alias EVENTMSG* PEVENTMSGMSG, LPEVENTMSGMSG, PEVENTMSG, LPEVENTMSG; struct WINDOWPOS { - HWND hwnd; - HWND hwndInsertAfter; - int x; - int y; - int cx; - int cy; - UINT flags; + HWND hwnd; + HWND hwndInsertAfter; + int x; + int y; + int cx; + int cy; + UINT flags; } alias WINDOWPOS* PWINDOWPOS, LPWINDOWPOS; struct NCCALCSIZE_PARAMS { - RECT[3] rgrc; - PWINDOWPOS lppos; + RECT[3] rgrc; + PWINDOWPOS lppos; } alias NCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS; struct MDICREATESTRUCTA { - LPCSTR szClass; - LPCSTR szTitle; - HANDLE hOwner; - int x; - int y; - int cx; - int cy; - DWORD style; - LPARAM lParam; + LPCSTR szClass; + LPCSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; } alias MDICREATESTRUCTA* LPMDICREATESTRUCTA; struct MDICREATESTRUCTW { - LPCWSTR szClass; - LPCWSTR szTitle; - HANDLE hOwner; - int x; - int y; - int cx; - int cy; - DWORD style; - LPARAM lParam; + LPCWSTR szClass; + LPCWSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; } alias MDICREATESTRUCTW* LPMDICREATESTRUCTW; struct MINMAXINFO { - POINT ptReserved; - POINT ptMaxSize; - POINT ptMaxPosition; - POINT ptMinTrackSize; - POINT ptMaxTrackSize; + POINT ptReserved; + POINT ptMaxSize; + POINT ptMaxPosition; + POINT ptMinTrackSize; + POINT ptMaxTrackSize; } alias MINMAXINFO* PMINMAXINFO, LPMINMAXINFO; struct MDINEXTMENU { - HMENU hmenuIn; - HMENU hmenuNext; - HWND hwndNext; + HMENU hmenuIn; + HMENU hmenuNext; + HWND hwndNext; } alias MDINEXTMENU* PMDINEXTMENU, LPMDINEXTMENU; struct MEASUREITEMSTRUCT { - UINT CtlType; - UINT CtlID; - UINT itemID; - UINT itemWidth; - UINT itemHeight; - DWORD itemData; + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemWidth; + UINT itemHeight; + DWORD itemData; } alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT, LPMEASUREITEMSTRUCT; struct DROPSTRUCT { - HWND hwndSource; - HWND hwndSink; - DWORD wFmt; - DWORD dwData; - POINT ptDrop; - DWORD dwControlData; + HWND hwndSource; + HWND hwndSink; + DWORD wFmt; + DWORD dwData; + POINT ptDrop; + DWORD dwControlData; } alias DROPSTRUCT* PDROPSTRUCT, LPDROPSTRUCT; alias DWORD HELPPOLY; struct MULTIKEYHELPA { - DWORD mkSize; - CHAR mkKeylist; - CHAR[1] szKeyphrase; + DWORD mkSize; + CHAR mkKeylist; + CHAR[1] szKeyphrase; } alias MULTIKEYHELPA* PMULTIKEYHELPA, LPMULTIKEYHELPA; struct MULTIKEYHELPW { - DWORD mkSize; - WCHAR mkKeylist; - WCHAR[1] szKeyphrase; + DWORD mkSize; + WCHAR mkKeylist; + WCHAR[1] szKeyphrase; } alias MULTIKEYHELPW* PMULTIKEYHELPW, LPMULTIKEYHELPW; struct HELPWININFOA { - int wStructSize; - int x; - int y; - int dx; - int dy; - int wMax; - CHAR[2] rgchMember; + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + CHAR[2] rgchMember; } alias HELPWININFOA* PHELPWININFOA, LPHELPWININFOA; struct HELPWININFOW { - int wStructSize; - int x; - int y; - int dx; - int dy; - int wMax; - WCHAR[2] rgchMember; + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + WCHAR[2] rgchMember; } alias HELPWININFOW* PHELPWININFOW, LPHELPWININFOW; struct STYLESTRUCT { - DWORD styleOld; - DWORD styleNew; + DWORD styleOld; + DWORD styleNew; } alias STYLESTRUCT* LPSTYLESTRUCT; struct ALTTABINFO { - DWORD cbSize = this.sizeof; - int cItems; - int cColumns; - int cRows; - int iColFocus; - int iRowFocus; - int cxItem; - int cyItem; - POINT ptStart; + DWORD cbSize = this.sizeof; + int cItems; + int cColumns; + int cRows; + int iColFocus; + int iRowFocus; + int cxItem; + int cyItem; + POINT ptStart; } alias ALTTABINFO* PALTTABINFO, LPALTTABINFO; struct COMBOBOXINFO { - DWORD cbSize = this.sizeof; - RECT rcItem; - RECT rcButton; - DWORD stateButton; - HWND hwndCombo; - HWND hwndItem; - HWND hwndList; + DWORD cbSize = this.sizeof; + RECT rcItem; + RECT rcButton; + DWORD stateButton; + HWND hwndCombo; + HWND hwndItem; + HWND hwndList; } alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO; struct CURSORINFO { - DWORD cbSize = this.sizeof; - DWORD flags; - HCURSOR hCursor; - POINT ptScreenPos; + DWORD cbSize = this.sizeof; + DWORD flags; + HCURSOR hCursor; + POINT ptScreenPos; } alias CURSORINFO* PCURSORINFO, LPCURSORINFO; struct MENUBARINFO { - DWORD cbSize = this.sizeof; - RECT rcBar; - HMENU hMenu; - HWND hwndMenu; - byte bf_; // Simulated bitfield + DWORD cbSize = this.sizeof; + RECT rcBar; + HMENU hMenu; + HWND hwndMenu; + byte bf_; // Simulated bitfield // BOOL fBarFocused:1; // BOOL fFocused:1; - bool fBarFocused() { return (bf_ & 1) == 1; } - bool fFocused() { return (bf_ & 2) == 2; } - bool fBarFocused(bool b) { bf_ = cast(byte) ((bf_ & 0xFE) | b); return b; } - bool fFocused(bool b) { bf_ = cast(byte) (b ? (bf_ | 2) : bf_ & 0xFD); return b; } + bool fBarFocused() { return (bf_ & 1) == 1; } + bool fFocused() { return (bf_ & 2) == 2; } + bool fBarFocused(bool b) { bf_ = cast(byte) ((bf_ & 0xFE) | b); return b; } + bool fFocused(bool b) { bf_ = cast(byte) (b ? (bf_ | 2) : bf_ & 0xFD); return b; } } alias MENUBARINFO* PMENUBARINFO; struct MENUINFO { - DWORD cbSize = this.sizeof; - DWORD fMask; - DWORD dwStyle; - UINT cyMax; - HBRUSH hbrBack; - DWORD dwContextHelpID; - ULONG_PTR dwMenuData; + DWORD cbSize = this.sizeof; + DWORD fMask; + DWORD dwStyle; + UINT cyMax; + HBRUSH hbrBack; + DWORD dwContextHelpID; + ULONG_PTR dwMenuData; } alias MENUINFO* LPMENUINFO; alias const(MENUINFO)* LPCMENUINFO; @@ -3290,231 +3290,231 @@ alias const(MENUINFO)* LPCMENUINFO; enum CCHILDREN_SCROLLBAR = 5; struct SCROLLBARINFO { - DWORD cbSize = this.sizeof; - RECT rcScrollBar; - int dxyLineButton; - int xyThumbTop; - int xyThumbBottom; - int reserved; - DWORD[CCHILDREN_SCROLLBAR+1] rgstate; + DWORD cbSize = this.sizeof; + RECT rcScrollBar; + int dxyLineButton; + int xyThumbTop; + int xyThumbBottom; + int reserved; + DWORD[CCHILDREN_SCROLLBAR+1] rgstate; } alias SCROLLBARINFO* PSCROLLBARINFO, LPSCROLLBARINFO; enum CCHILDREN_TITLEBAR = 5; struct WINDOWINFO { - DWORD cbSize = WINDOWINFO.sizeof; - RECT rcWindow; - RECT rcClient; - DWORD dwStyle; - DWORD dwExStyle; - DWORD dwWindowStatus; - UINT cxWindowBorders; - UINT cyWindowBorders; - ATOM atomWindowType; - WORD wCreatorVersion; + DWORD cbSize = WINDOWINFO.sizeof; + RECT rcWindow; + RECT rcClient; + DWORD dwStyle; + DWORD dwExStyle; + DWORD dwWindowStatus; + UINT cxWindowBorders; + UINT cyWindowBorders; + ATOM atomWindowType; + WORD wCreatorVersion; } alias WINDOWINFO* PWINDOWINFO, LPWINDOWINFO; struct LASTINPUTINFO { - UINT cbSize = this.sizeof; - DWORD dwTime; + UINT cbSize = this.sizeof; + DWORD dwTime; } alias LASTINPUTINFO* PLASTINPUTINFO; struct MONITORINFO { - DWORD cbSize = this.sizeof; - RECT rcMonitor; - RECT rcWork; - DWORD dwFlags; + DWORD cbSize = this.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; } alias MONITORINFO* LPMONITORINFO; enum CCHDEVICENAME = 32; struct MONITORINFOEXA { - DWORD cbSize = MONITORINFOEXA.sizeof; - RECT rcMonitor; - RECT rcWork; - DWORD dwFlags; - CHAR[CCHDEVICENAME] szDevice; + DWORD cbSize = MONITORINFOEXA.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + CHAR[CCHDEVICENAME] szDevice; } alias MONITORINFOEXA* LPMONITORINFOEXA; struct MONITORINFOEXW { - DWORD cbSize = MONITORINFOEXW.sizeof; - RECT rcMonitor; - RECT rcWork; - DWORD dwFlags; - WCHAR[CCHDEVICENAME] szDevice; + DWORD cbSize = MONITORINFOEXW.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + WCHAR[CCHDEVICENAME] szDevice; } alias MONITORINFOEXW* LPMONITORINFOEXW; struct KBDLLHOOKSTRUCT { - DWORD vkCode; - DWORD scanCode; - DWORD flags; - DWORD time; - DWORD dwExtraInfo; + DWORD vkCode; + DWORD scanCode; + DWORD flags; + DWORD time; + DWORD dwExtraInfo; } alias KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT; struct MSLLHOOKSTRUCT { - POINT pt; - DWORD mouseData; - DWORD flags; - DWORD time; - ULONG_PTR dwExtraInfo; + POINT pt; + DWORD mouseData; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; } alias MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT; struct MOUSEINPUT { - LONG dx; - LONG dy; - DWORD mouseData; - DWORD dwFlags; - DWORD time; - ULONG_PTR dwExtraInfo; + LONG dx; + LONG dy; + DWORD mouseData; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; } alias MOUSEINPUT* PMOUSEINPUT; struct KEYBDINPUT { - WORD wVk; - WORD wScan; - DWORD dwFlags; - DWORD time; - ULONG_PTR dwExtraInfo; + WORD wVk; + WORD wScan; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; } alias KEYBDINPUT* PKEYBDINPUT; struct HARDWAREINPUT { - DWORD uMsg; - WORD wParamL; - WORD wParamH; + DWORD uMsg; + WORD wParamL; + WORD wParamH; } alias HARDWAREINPUT* PHARDWAREINPUT; struct INPUT { - DWORD type; - union { - MOUSEINPUT mi; - KEYBDINPUT ki; - HARDWAREINPUT hi; - } + DWORD type; + union { + MOUSEINPUT mi; + KEYBDINPUT ki; + HARDWAREINPUT hi; + } } alias INPUT* PINPUT, LPINPUT; static if (_WIN32_WINNT >= 0x501) { - struct BSMINFO { - UINT cbSize = this.sizeof; - HDESK hdesk; - HWND hwnd; - LUID luid; - } - alias BSMINFO* PBSMINFO; - - alias TypeDef!(HANDLE) HRAWINPUT; - - struct RAWINPUTHEADER { - DWORD dwType; - DWORD dwSize; - HANDLE hDevice; - WPARAM wParam; - } - alias RAWINPUTHEADER* PRAWINPUTHEADER; - - struct RAWMOUSE { - USHORT usFlags; - union { - ULONG ulButtons; - struct { - USHORT usButtonFlags; - USHORT usButtonData; - } - } - ULONG ulRawButtons; - LONG lLastX; - LONG lLastY; - ULONG ulExtraInformation; - } - alias RAWMOUSE* PRAWMOUSE, LPRAWMOUSE; - - struct RAWKEYBOARD { - USHORT MakeCode; - USHORT Flags; - USHORT Reserved; - USHORT VKey; - UINT Message; - ULONG ExtraInformation; - } - alias RAWKEYBOARD* PRAWKEYBOARD, LPRAWKEYBOARD; - - struct RAWHID { - DWORD dwSizeHid; - DWORD dwCount; - BYTE bRawData; - } - alias RAWHID* PRAWHID, LPRAWHID; - - struct RAWINPUT { - RAWINPUTHEADER header; - union _data { - RAWMOUSE mouse; - RAWKEYBOARD keyboard; - RAWHID hid; - } - _data data; - } - alias RAWINPUT* PRAWINPUT, LPRAWINPUT; - - struct RAWINPUTDEVICE { - USHORT usUsagePage; - USHORT usUsage; - DWORD dwFlags; - HWND hwndTarget; - } - alias RAWINPUTDEVICE* PRAWINPUTDEVICE, LPRAWINPUTDEVICE; - alias const(RAWINPUTDEVICE)* PCRAWINPUTDEVICE; - - struct RAWINPUTDEVICELIST { - HANDLE hDevice; - DWORD dwType; - } - alias RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST; - - struct RID_DEVICE_INFO_MOUSE { - DWORD dwId; - DWORD dwNumberOfButtons; - DWORD dwSampleRate; - BOOL fHasHorizontalWheel; - } - - struct RID_DEVICE_INFO_KEYBOARD { - DWORD dwType; - DWORD dwSubType; - DWORD dwKeyboardMode; - DWORD dwNumberOfFunctionKeys; - DWORD dwNumberOfIndicators; - DWORD dwNumberOfKeysTotal; - } - - struct RID_DEVICE_INFO_HID { - DWORD dwVendorId; - DWORD dwProductId; - DWORD dwVersionNumber; - USHORT usUsagePage; - USHORT usUsage; - } - - struct RID_DEVICE_INFO { - DWORD cbSize = this.sizeof; - DWORD dwType; - union { - RID_DEVICE_INFO_MOUSE mouse; - RID_DEVICE_INFO_KEYBOARD keyboard; - RID_DEVICE_INFO_HID hid; - } - } + struct BSMINFO { + UINT cbSize = this.sizeof; + HDESK hdesk; + HWND hwnd; + LUID luid; + } + alias BSMINFO* PBSMINFO; + + alias TypeDef!(HANDLE) HRAWINPUT; + + struct RAWINPUTHEADER { + DWORD dwType; + DWORD dwSize; + HANDLE hDevice; + WPARAM wParam; + } + alias RAWINPUTHEADER* PRAWINPUTHEADER; + + struct RAWMOUSE { + USHORT usFlags; + union { + ULONG ulButtons; + struct { + USHORT usButtonFlags; + USHORT usButtonData; + } + } + ULONG ulRawButtons; + LONG lLastX; + LONG lLastY; + ULONG ulExtraInformation; + } + alias RAWMOUSE* PRAWMOUSE, LPRAWMOUSE; + + struct RAWKEYBOARD { + USHORT MakeCode; + USHORT Flags; + USHORT Reserved; + USHORT VKey; + UINT Message; + ULONG ExtraInformation; + } + alias RAWKEYBOARD* PRAWKEYBOARD, LPRAWKEYBOARD; + + struct RAWHID { + DWORD dwSizeHid; + DWORD dwCount; + BYTE bRawData; + } + alias RAWHID* PRAWHID, LPRAWHID; + + struct RAWINPUT { + RAWINPUTHEADER header; + union _data { + RAWMOUSE mouse; + RAWKEYBOARD keyboard; + RAWHID hid; + } + _data data; + } + alias RAWINPUT* PRAWINPUT, LPRAWINPUT; + + struct RAWINPUTDEVICE { + USHORT usUsagePage; + USHORT usUsage; + DWORD dwFlags; + HWND hwndTarget; + } + alias RAWINPUTDEVICE* PRAWINPUTDEVICE, LPRAWINPUTDEVICE; + alias const(RAWINPUTDEVICE)* PCRAWINPUTDEVICE; + + struct RAWINPUTDEVICELIST { + HANDLE hDevice; + DWORD dwType; + } + alias RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST; + + struct RID_DEVICE_INFO_MOUSE { + DWORD dwId; + DWORD dwNumberOfButtons; + DWORD dwSampleRate; + BOOL fHasHorizontalWheel; + } + + struct RID_DEVICE_INFO_KEYBOARD { + DWORD dwType; + DWORD dwSubType; + DWORD dwKeyboardMode; + DWORD dwNumberOfFunctionKeys; + DWORD dwNumberOfIndicators; + DWORD dwNumberOfKeysTotal; + } + + struct RID_DEVICE_INFO_HID { + DWORD dwVendorId; + DWORD dwProductId; + DWORD dwVersionNumber; + USHORT usUsagePage; + USHORT usUsage; + } + + struct RID_DEVICE_INFO { + DWORD cbSize = this.sizeof; + DWORD dwType; + union { + RID_DEVICE_INFO_MOUSE mouse; + RID_DEVICE_INFO_KEYBOARD keyboard; + RID_DEVICE_INFO_HID hid; + } + } }// (_WIN32_WINNT >= 0x501) alias CharToOemA AnsiToOem; @@ -3533,179 +3533,179 @@ alias MAKELONG MAKELPARAM; alias MAKELONG MAKELRESULT; void POINTSTOPOINT()(out POINT p, LONG ps) { - p.x = LOWORD(ps); - p.y = HIWORD(ps); + p.x = LOWORD(ps); + p.y = HIWORD(ps); } POINTS POINTTOPOINTS()(in POINT p) { - return MAKELONG(p.x, p.y); + return MAKELONG(p.x, p.y); } extern (Windows) { - HKL ActivateKeyboardLayout(HKL, UINT); - BOOL AdjustWindowRect(LPRECT, DWORD, BOOL); - BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD); - BOOL AnyPopup(); - BOOL AppendMenuA(HMENU, UINT, UINT_PTR, LPCSTR); - BOOL AppendMenuW(HMENU, UINT, UINT_PTR, LPCWSTR); - UINT ArrangeIconicWindows(HWND); - BOOL AttachThreadInput(DWORD, DWORD, BOOL); - HDWP BeginDeferWindowPos(int); - HDC BeginPaint(HWND, LPPAINTSTRUCT); - BOOL BringWindowToTop(HWND); - BOOL CallMsgFilterA(LPMSG, INT); - BOOL CallMsgFilterW(LPMSG, INT); - LRESULT CallNextHookEx(HHOOK, int, WPARAM, LPARAM); - LRESULT CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM); - LRESULT CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM); - WORD CascadeWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*); - BOOL ChangeClipboardChain(HWND, HWND); - - LONG ChangeDisplaySettingsA(PDEVMODEA, DWORD); - LONG ChangeDisplaySettingsW(PDEVMODEW, DWORD); - LONG ChangeDisplaySettingsExA(LPCSTR, LPDEVMODEA, HWND, DWORD, LPVOID); - LONG ChangeDisplaySettingsExW(LPCWSTR, LPDEVMODEW, HWND, DWORD, LPVOID); - - BOOL ChangeMenuA(HMENU, UINT, LPCSTR, UINT, UINT); - BOOL ChangeMenuW(HMENU, UINT, LPCWSTR, UINT, UINT); - LPSTR CharLowerA(LPSTR); - LPWSTR CharLowerW(LPWSTR); - DWORD CharLowerBuffA(LPSTR, DWORD); - DWORD CharLowerBuffW(LPWSTR, DWORD); - LPSTR CharNextA(LPCSTR); - LPWSTR CharNextW(LPCWSTR); - LPSTR CharNextExA(WORD, LPCSTR, DWORD); - LPWSTR CharNextExW(WORD, LPCWSTR, DWORD); - LPSTR CharPrevA(LPCSTR, LPCSTR); - LPWSTR CharPrevW(LPCWSTR, LPCWSTR); - LPSTR CharPrevExA(WORD, LPCSTR, LPCSTR, DWORD); - LPWSTR CharPrevExW(WORD, LPCWSTR, LPCWSTR, DWORD); - BOOL CharToOemA(LPCSTR, LPSTR); - BOOL CharToOemW(LPCWSTR, LPSTR); - BOOL CharToOemBuffA(LPCSTR, LPSTR, DWORD); - BOOL CharToOemBuffW(LPCWSTR, LPSTR, DWORD); - LPSTR CharUpperA(LPSTR); - LPWSTR CharUpperW(LPWSTR); - DWORD CharUpperBuffA(LPSTR, DWORD); - DWORD CharUpperBuffW(LPWSTR, DWORD); - BOOL CheckDlgButton(HWND, int, UINT); - DWORD CheckMenuItem(HMENU, UINT, UINT); - BOOL CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT); - BOOL CheckRadioButton(HWND, int, int, int); - HWND ChildWindowFromPoint(HWND, POINT); - HWND ChildWindowFromPointEx(HWND, POINT, UINT); - BOOL ClientToScreen(HWND, LPPOINT); - BOOL ClipCursor(LPCRECT); - BOOL CloseClipboard(); - BOOL CloseDesktop(HDESK); - BOOL CloseWindow(HWND); - BOOL CloseWindowStation(HWINSTA); - int CopyAcceleratorTableA(HACCEL, LPACCEL, int); - int CopyAcceleratorTableW(HACCEL, LPACCEL, int); - - HICON CopyIcon(HICON); - HANDLE CopyImage(HANDLE, UINT, int, int, UINT); - BOOL CopyRect(LPRECT, LPCRECT); - int CountClipboardFormats(); - HACCEL CreateAcceleratorTableA(LPACCEL, int); - HACCEL CreateAcceleratorTableW(LPACCEL, int); - BOOL CreateCaret(HWND, HBITMAP, int, int); - HCURSOR CreateCursor(HINSTANCE, int, int, int, int, PCVOID, PCVOID); - - HDESK CreateDesktopA(LPCSTR, LPCSTR, LPDEVMODEA, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); - HDESK CreateDesktopW(LPCWSTR, LPCWSTR, LPDEVMODEW, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); - - HWND CreateDialogParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); - HWND CreateDialogParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); - HWND CreateDialogIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); - HWND CreateDialogIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); - - HICON CreateIcon(HINSTANCE, int, int, BYTE, BYTE, const(BYTE)*, BYTE*); - HICON CreateIconFromResource(PBYTE, DWORD, BOOL, DWORD); - HICON CreateIconFromResourceEx(PBYTE, DWORD, BOOL, DWORD, int, int, UINT); - HICON CreateIconIndirect(PICONINFO); - HWND CreateMDIWindowA(LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); - HWND CreateMDIWindowW(LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); - HMENU CreateMenu(); - HMENU CreatePopupMenu(); - - HWND CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); - HWND CreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); - - HWINSTA CreateWindowStationA(LPSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HWINSTA CreateWindowStationW(LPWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - LRESULT DefDlgProcA(HWND, UINT, WPARAM, LPARAM); - LRESULT DefDlgProcW(HWND, UINT, WPARAM, LPARAM); - HDWP DeferWindowPos(HDWP, HWND, HWND, int, int, int, int, UINT); - LRESULT DefFrameProcA(HWND, HWND, UINT, WPARAM, LPARAM); - LRESULT DefFrameProcW(HWND, HWND, UINT, WPARAM, LPARAM); - - LRESULT DefMDIChildProcA(HWND, UINT, WPARAM, LPARAM); - LRESULT DefMDIChildProcW(HWND, UINT, WPARAM, LPARAM); - LRESULT DefWindowProcA(HWND, UINT, WPARAM, LPARAM); - LRESULT DefWindowProcW(HWND, UINT, WPARAM, LPARAM); - BOOL DeleteMenu(HMENU, UINT, UINT); - BOOL DeregisterShellHookWindow(HWND); - BOOL DestroyAcceleratorTable(HACCEL); - BOOL DestroyCaret(); - BOOL DestroyCursor(HCURSOR); - BOOL DestroyIcon(HICON); - BOOL DestroyMenu(HMENU); - BOOL DestroyWindow(HWND); - - INT_PTR DialogBoxParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); - INT_PTR DialogBoxParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); - INT_PTR DialogBoxIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); - INT_PTR DialogBoxIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + HKL ActivateKeyboardLayout(HKL, UINT); + BOOL AdjustWindowRect(LPRECT, DWORD, BOOL); + BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD); + BOOL AnyPopup(); + BOOL AppendMenuA(HMENU, UINT, UINT_PTR, LPCSTR); + BOOL AppendMenuW(HMENU, UINT, UINT_PTR, LPCWSTR); + UINT ArrangeIconicWindows(HWND); + BOOL AttachThreadInput(DWORD, DWORD, BOOL); + HDWP BeginDeferWindowPos(int); + HDC BeginPaint(HWND, LPPAINTSTRUCT); + BOOL BringWindowToTop(HWND); + BOOL CallMsgFilterA(LPMSG, INT); + BOOL CallMsgFilterW(LPMSG, INT); + LRESULT CallNextHookEx(HHOOK, int, WPARAM, LPARAM); + LRESULT CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM); + LRESULT CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM); + WORD CascadeWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*); + BOOL ChangeClipboardChain(HWND, HWND); + + LONG ChangeDisplaySettingsA(PDEVMODEA, DWORD); + LONG ChangeDisplaySettingsW(PDEVMODEW, DWORD); + LONG ChangeDisplaySettingsExA(LPCSTR, LPDEVMODEA, HWND, DWORD, LPVOID); + LONG ChangeDisplaySettingsExW(LPCWSTR, LPDEVMODEW, HWND, DWORD, LPVOID); + + BOOL ChangeMenuA(HMENU, UINT, LPCSTR, UINT, UINT); + BOOL ChangeMenuW(HMENU, UINT, LPCWSTR, UINT, UINT); + LPSTR CharLowerA(LPSTR); + LPWSTR CharLowerW(LPWSTR); + DWORD CharLowerBuffA(LPSTR, DWORD); + DWORD CharLowerBuffW(LPWSTR, DWORD); + LPSTR CharNextA(LPCSTR); + LPWSTR CharNextW(LPCWSTR); + LPSTR CharNextExA(WORD, LPCSTR, DWORD); + LPWSTR CharNextExW(WORD, LPCWSTR, DWORD); + LPSTR CharPrevA(LPCSTR, LPCSTR); + LPWSTR CharPrevW(LPCWSTR, LPCWSTR); + LPSTR CharPrevExA(WORD, LPCSTR, LPCSTR, DWORD); + LPWSTR CharPrevExW(WORD, LPCWSTR, LPCWSTR, DWORD); + BOOL CharToOemA(LPCSTR, LPSTR); + BOOL CharToOemW(LPCWSTR, LPSTR); + BOOL CharToOemBuffA(LPCSTR, LPSTR, DWORD); + BOOL CharToOemBuffW(LPCWSTR, LPSTR, DWORD); + LPSTR CharUpperA(LPSTR); + LPWSTR CharUpperW(LPWSTR); + DWORD CharUpperBuffA(LPSTR, DWORD); + DWORD CharUpperBuffW(LPWSTR, DWORD); + BOOL CheckDlgButton(HWND, int, UINT); + DWORD CheckMenuItem(HMENU, UINT, UINT); + BOOL CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT); + BOOL CheckRadioButton(HWND, int, int, int); + HWND ChildWindowFromPoint(HWND, POINT); + HWND ChildWindowFromPointEx(HWND, POINT, UINT); + BOOL ClientToScreen(HWND, LPPOINT); + BOOL ClipCursor(LPCRECT); + BOOL CloseClipboard(); + BOOL CloseDesktop(HDESK); + BOOL CloseWindow(HWND); + BOOL CloseWindowStation(HWINSTA); + int CopyAcceleratorTableA(HACCEL, LPACCEL, int); + int CopyAcceleratorTableW(HACCEL, LPACCEL, int); + + HICON CopyIcon(HICON); + HANDLE CopyImage(HANDLE, UINT, int, int, UINT); + BOOL CopyRect(LPRECT, LPCRECT); + int CountClipboardFormats(); + HACCEL CreateAcceleratorTableA(LPACCEL, int); + HACCEL CreateAcceleratorTableW(LPACCEL, int); + BOOL CreateCaret(HWND, HBITMAP, int, int); + HCURSOR CreateCursor(HINSTANCE, int, int, int, int, PCVOID, PCVOID); + + HDESK CreateDesktopA(LPCSTR, LPCSTR, LPDEVMODEA, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); + HDESK CreateDesktopW(LPCWSTR, LPCWSTR, LPDEVMODEW, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); + + HWND CreateDialogParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); + HWND CreateDialogParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); + HWND CreateDialogIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + HWND CreateDialogIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + + HICON CreateIcon(HINSTANCE, int, int, BYTE, BYTE, const(BYTE)*, BYTE*); + HICON CreateIconFromResource(PBYTE, DWORD, BOOL, DWORD); + HICON CreateIconFromResourceEx(PBYTE, DWORD, BOOL, DWORD, int, int, UINT); + HICON CreateIconIndirect(PICONINFO); + HWND CreateMDIWindowA(LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); + HWND CreateMDIWindowW(LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); + HMENU CreateMenu(); + HMENU CreatePopupMenu(); + + HWND CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); + HWND CreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); + + HWINSTA CreateWindowStationA(LPSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HWINSTA CreateWindowStationW(LPWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + LRESULT DefDlgProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefDlgProcW(HWND, UINT, WPARAM, LPARAM); + HDWP DeferWindowPos(HDWP, HWND, HWND, int, int, int, int, UINT); + LRESULT DefFrameProcA(HWND, HWND, UINT, WPARAM, LPARAM); + LRESULT DefFrameProcW(HWND, HWND, UINT, WPARAM, LPARAM); + + LRESULT DefMDIChildProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefMDIChildProcW(HWND, UINT, WPARAM, LPARAM); + LRESULT DefWindowProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefWindowProcW(HWND, UINT, WPARAM, LPARAM); + BOOL DeleteMenu(HMENU, UINT, UINT); + BOOL DeregisterShellHookWindow(HWND); + BOOL DestroyAcceleratorTable(HACCEL); + BOOL DestroyCaret(); + BOOL DestroyCursor(HCURSOR); + BOOL DestroyIcon(HICON); + BOOL DestroyMenu(HMENU); + BOOL DestroyWindow(HWND); + + INT_PTR DialogBoxParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); } // extern (Windows) HCURSOR CopyCursor()(HCURSOR c) { - return cast(HCURSOR)CopyIcon(cast(HICON)c); + return cast(HCURSOR)CopyIcon(cast(HICON)c); } HWND CreateDialogA()(HINSTANCE h, LPCSTR n, HWND w, DLGPROC f) { - return CreateDialogParamA(h, n, w, f, 0); + return CreateDialogParamA(h, n, w, f, 0); } HWND CreateDialogW()(HINSTANCE h, LPCWSTR n, HWND w, DLGPROC f) { - return CreateDialogParamW(h, n, w, f, 0); + return CreateDialogParamW(h, n, w, f, 0); } HWND CreateDialogIndirectA()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { - return CreateDialogIndirectParamA(h, t, w, f, 0); + return CreateDialogIndirectParamA(h, t, w, f, 0); } HWND CreateDialogIndirectW()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { - return CreateDialogIndirectParamW(h, t, w, f, 0); + return CreateDialogIndirectParamW(h, t, w, f, 0); } HWND CreateWindowA()(LPCSTR a, LPCSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { - return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k); + return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k); } HWND CreateWindowW()(LPCWSTR a, LPCWSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { - return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k); + return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k); } INT_PTR DialogBoxA()(HINSTANCE i, LPCSTR t, HWND p, DLGPROC f) { - return DialogBoxParamA(i, t, p, f, 0); + return DialogBoxParamA(i, t, p, f, 0); } INT_PTR DialogBoxW()(HINSTANCE i, LPCWSTR t, HWND p, DLGPROC f) { - return DialogBoxParamW(i, t, p, f, 0); + return DialogBoxParamW(i, t, p, f, 0); } INT_PTR DialogBoxIndirectA()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { - return DialogBoxIndirectParamA(i, t, p, f, 0); + return DialogBoxIndirectParamA(i, t, p, f, 0); } INT_PTR DialogBoxIndirectW()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { - return DialogBoxIndirectParamW(i, t, p, f, 0); + return DialogBoxIndirectParamW(i, t, p, f, 0); } BOOL ExitWindows()(UINT r, DWORD c) { - return ExitWindowsEx(EWX_LOGOFF, 0); + return ExitWindowsEx(EWX_LOGOFF, 0); } alias GetWindow GetNextWindow; @@ -4139,8 +4139,8 @@ BOOL WinHelpA(HWND, LPCSTR, UINT, DWORD); BOOL WinHelpW(HWND, LPCWSTR, UINT, DWORD); extern (C) { - int wsprintfA(LPSTR, LPCSTR, ...); - int wsprintfW(LPWSTR, LPCWSTR, ...); + int wsprintfA(LPSTR, LPCSTR, ...); + int wsprintfW(LPWSTR, LPCWSTR, ...); } @@ -4150,81 +4150,81 @@ int wvsprintfA(LPSTR, LPCSTR, va_list_ arglist); int wvsprintfW(LPWSTR, LPCWSTR, va_list_ arglist); enum : DWORD { - MONITOR_DEFAULTTONULL, - MONITOR_DEFAULTTOPRIMARY, - MONITOR_DEFAULTTONEAREST // = 2 + MONITOR_DEFAULTTONULL, + MONITOR_DEFAULTTOPRIMARY, + MONITOR_DEFAULTTONEAREST // = 2 } enum MONITORINFOF_PRIMARY = 1; enum EDS_RAWMODE = 0x00000002; enum { - ISMEX_NOSEND = 0, - ISMEX_SEND = 1, - ISMEX_NOTIFY = 2, - ISMEX_CALLBACK = 4, - ISMEX_REPLIED = 8 + ISMEX_NOSEND = 0, + ISMEX_SEND = 1, + ISMEX_NOTIFY = 2, + ISMEX_CALLBACK = 4, + ISMEX_REPLIED = 8 } struct TITLEBARINFO { - DWORD cbSize = TITLEBARINFO.sizeof; - RECT rcTitleBar; - DWORD[CCHILDREN_TITLEBAR+1] rgstate; + DWORD cbSize = TITLEBARINFO.sizeof; + RECT rcTitleBar; + DWORD[CCHILDREN_TITLEBAR+1] rgstate; } alias TITLEBARINFO* PTITLEBARINFO, LPTITLEBARINFO; static if (_WIN32_WINNT >= 0x501) { // *** correct? - struct FLASHWINFO { - UINT cbSize = this.sizeof; - HWND hwnd; - DWORD dwFlags; - UINT uCount; - DWORD dwTimeout; - } - alias FLASHWINFO* PFLASHWINFO; + struct FLASHWINFO { + UINT cbSize = this.sizeof; + HWND hwnd; + DWORD dwFlags; + UINT uCount; + DWORD dwTimeout; + } + alias FLASHWINFO* PFLASHWINFO; } enum DWORD ASFW_ANY = -1; enum : UINT { - LSFW_LOCK = 1, - LSFW_UNLOCK + LSFW_LOCK = 1, + LSFW_UNLOCK } enum { - GMMP_USE_DISPLAY_POINTS = 1, - GMMP_USE_HIGH_RESOLUTION_POINTS + GMMP_USE_DISPLAY_POINTS = 1, + GMMP_USE_HIGH_RESOLUTION_POINTS } struct MOUSEMOVEPOINT { - int x; - int y; - DWORD time; - ULONG_PTR dwExtraInfo; + int x; + int y; + DWORD time; + ULONG_PTR dwExtraInfo; } alias MOUSEMOVEPOINT* PMOUSEMOVEPOINT, LPMOUSEMOVEPOINT; enum { - MIM_MAXHEIGHT = 1, - MIM_BACKGROUND = 2, - MIM_HELPID = 4, - MIM_MENUDATA = 8, - MIM_STYLE = 16, - MIM_APPLYTOSUBMENUS = 0x80000000L + MIM_MAXHEIGHT = 1, + MIM_BACKGROUND = 2, + MIM_HELPID = 4, + MIM_MENUDATA = 8, + MIM_STYLE = 16, + MIM_APPLYTOSUBMENUS = 0x80000000L } enum { - MNS_NOCHECK = 0x80000000, - MNS_MODELESS = 0x40000000, - MNS_DRAGDROP = 0x20000000, - MNS_AUTODISMISS = 0x10000000, - MNS_NOTIFYBYPOS = 0x08000000, - MNS_CHECKORBMP = 0x04000000 + MNS_NOCHECK = 0x80000000, + MNS_MODELESS = 0x40000000, + MNS_DRAGDROP = 0x20000000, + MNS_AUTODISMISS = 0x10000000, + MNS_NOTIFYBYPOS = 0x08000000, + MNS_CHECKORBMP = 0x04000000 } enum { - PM_QS_INPUT = (QS_INPUT << 16), - PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16), - PM_QS_PAINT = (QS_PAINT << 16), - PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16) + PM_QS_INPUT = (QS_INPUT << 16), + PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16), + PM_QS_PAINT = (QS_PAINT << 16), + PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16) } /* #define WM_GETOBJECT 0x003D @@ -4244,168 +4244,168 @@ enum { #define WM_NCMOUSELEAVE 0x02A2*/ enum { - FLASHW_STOP = 0, - FLASHW_CAPTION = 0x01, - FLASHW_TRAY = 0x02, - FLASHW_ALL = 0x03, - FLASHW_TIMER = 0x04, - FLASHW_TIMERNOFG = 0x0C + FLASHW_STOP = 0, + FLASHW_CAPTION = 0x01, + FLASHW_TRAY = 0x02, + FLASHW_ALL = 0x03, + FLASHW_TIMER = 0x04, + FLASHW_TIMERNOFG = 0x0C } enum CHILDID_SELF = 0; enum { - OBJID_WINDOW = 0x00000000, - OBJID_SOUND = 0xFFFFFFF5, - OBJID_ALERT = 0xFFFFFFF6, - OBJID_CURSOR = 0xFFFFFFF7, - OBJID_CARET = 0xFFFFFFF8, - OBJID_SIZEGRIP = 0xFFFFFFF9, - OBJID_HSCROLL = 0xFFFFFFFA, - OBJID_VSCROLL = 0xFFFFFFFB, - OBJID_CLIENT = 0xFFFFFFFC, - OBJID_MENU = 0xFFFFFFFD, - OBJID_TITLEBAR = 0xFFFFFFFE, - OBJID_SYSMENU = 0xFFFFFFFF + OBJID_WINDOW = 0x00000000, + OBJID_SOUND = 0xFFFFFFF5, + OBJID_ALERT = 0xFFFFFFF6, + OBJID_CURSOR = 0xFFFFFFF7, + OBJID_CARET = 0xFFFFFFF8, + OBJID_SIZEGRIP = 0xFFFFFFF9, + OBJID_HSCROLL = 0xFFFFFFFA, + OBJID_VSCROLL = 0xFFFFFFFB, + OBJID_CLIENT = 0xFFFFFFFC, + OBJID_MENU = 0xFFFFFFFD, + OBJID_TITLEBAR = 0xFFFFFFFE, + OBJID_SYSMENU = 0xFFFFFFFF } enum { - GUI_CARETBLINKING = 0x0001, - GUI_INMOVESIZE = 0x0002, - GUI_INMENUMODE = 0x0004, - GUI_SYSTEMMENUMODE = 0x0008, - GUI_POPUPMENUMODE = 0x0010 + GUI_CARETBLINKING = 0x0001, + GUI_INMOVESIZE = 0x0002, + GUI_INMENUMODE = 0x0004, + GUI_SYSTEMMENUMODE = 0x0008, + GUI_POPUPMENUMODE = 0x0010 } static if (_WIN32_WINNT >= 0x501) { - enum GUI_16BITTASK = 0x0020; + enum GUI_16BITTASK = 0x0020; } enum { - WINEVENT_OUTOFCONTEXT = 0x00, - WINEVENT_SKIPOWNTHREAD = 0x01, - WINEVENT_SKIPOWNPROCESS = 0x02, - WINEVENT_INCONTEXT = 0x04 + WINEVENT_OUTOFCONTEXT = 0x00, + WINEVENT_SKIPOWNTHREAD = 0x01, + WINEVENT_SKIPOWNPROCESS = 0x02, + WINEVENT_INCONTEXT = 0x04 } enum { - AW_HOR_POSITIVE = 0x00000001, - AW_HOR_NEGATIVE = 0x00000002, - AW_VER_POSITIVE = 0x00000004, - AW_VER_NEGATIVE = 0x00000008, - AW_CENTER = 0x00000010, - AW_HIDE = 0x00010000, - AW_ACTIVATE = 0x00020000, - AW_SLIDE = 0x00040000, - AW_BLEND = 0x00080000 + AW_HOR_POSITIVE = 0x00000001, + AW_HOR_NEGATIVE = 0x00000002, + AW_VER_POSITIVE = 0x00000004, + AW_VER_NEGATIVE = 0x00000008, + AW_CENTER = 0x00000010, + AW_HIDE = 0x00010000, + AW_ACTIVATE = 0x00020000, + AW_SLIDE = 0x00040000, + AW_BLEND = 0x00080000 } enum { - DEVICE_NOTIFY_WINDOW_HANDLE = 0x00000000, - DEVICE_NOTIFY_SERVICE_HANDLE = 0x00000001 + DEVICE_NOTIFY_WINDOW_HANDLE = 0x00000000, + DEVICE_NOTIFY_SERVICE_HANDLE = 0x00000001 } static if (_WIN32_WINNT >= 0x501) { - enum DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 0x00000004; + enum DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 0x00000004; } enum : DWORD { - EVENT_MIN = 0x00000001, - EVENT_SYSTEM_SOUND = 0x00000001, - EVENT_SYSTEM_ALERT, - EVENT_SYSTEM_FOREGROUND, - EVENT_SYSTEM_MENUSTART, - EVENT_SYSTEM_MENUEND, - EVENT_SYSTEM_MENUPOPUPSTART, - EVENT_SYSTEM_MENUPOPUPEND, - EVENT_SYSTEM_CAPTURESTART, - EVENT_SYSTEM_CAPTUREEND, - EVENT_SYSTEM_MOVESIZESTART, - EVENT_SYSTEM_MOVESIZEEND, - EVENT_SYSTEM_CONTEXTHELPSTART, - EVENT_SYSTEM_CONTEXTHELPEND, - EVENT_SYSTEM_DRAGDROPSTART, - EVENT_SYSTEM_DRAGDROPEND, - EVENT_SYSTEM_DIALOGSTART, - EVENT_SYSTEM_DIALOGEND, - EVENT_SYSTEM_SCROLLINGSTART, - EVENT_SYSTEM_SCROLLINGEND, - EVENT_SYSTEM_SWITCHSTART, - EVENT_SYSTEM_SWITCHEND, - EVENT_SYSTEM_MINIMIZESTART, - EVENT_SYSTEM_MINIMIZEEND, // = 0x00000017 - EVENT_OBJECT_CREATE = 0x00008000, - EVENT_OBJECT_DESTROY, - EVENT_OBJECT_SHOW, - EVENT_OBJECT_HIDE, - EVENT_OBJECT_REORDER, - EVENT_OBJECT_FOCUS, - EVENT_OBJECT_SELECTION, - EVENT_OBJECT_SELECTIONADD, - EVENT_OBJECT_SELECTIONREMOVE, - EVENT_OBJECT_SELECTIONWITHIN, - EVENT_OBJECT_STATECHANGE, - EVENT_OBJECT_LOCATIONCHANGE, - EVENT_OBJECT_NAMECHANGE, - EVENT_OBJECT_DESCRIPTIONCHANGE, - EVENT_OBJECT_VALUECHANGE, - EVENT_OBJECT_PARENTCHANGE, - EVENT_OBJECT_HELPCHANGE, - EVENT_OBJECT_DEFACTIONCHANGE, - EVENT_OBJECT_ACCELERATORCHANGE, // = 0x00008012 - EVENT_MAX = 0x7FFFFFFF + EVENT_MIN = 0x00000001, + EVENT_SYSTEM_SOUND = 0x00000001, + EVENT_SYSTEM_ALERT, + EVENT_SYSTEM_FOREGROUND, + EVENT_SYSTEM_MENUSTART, + EVENT_SYSTEM_MENUEND, + EVENT_SYSTEM_MENUPOPUPSTART, + EVENT_SYSTEM_MENUPOPUPEND, + EVENT_SYSTEM_CAPTURESTART, + EVENT_SYSTEM_CAPTUREEND, + EVENT_SYSTEM_MOVESIZESTART, + EVENT_SYSTEM_MOVESIZEEND, + EVENT_SYSTEM_CONTEXTHELPSTART, + EVENT_SYSTEM_CONTEXTHELPEND, + EVENT_SYSTEM_DRAGDROPSTART, + EVENT_SYSTEM_DRAGDROPEND, + EVENT_SYSTEM_DIALOGSTART, + EVENT_SYSTEM_DIALOGEND, + EVENT_SYSTEM_SCROLLINGSTART, + EVENT_SYSTEM_SCROLLINGEND, + EVENT_SYSTEM_SWITCHSTART, + EVENT_SYSTEM_SWITCHEND, + EVENT_SYSTEM_MINIMIZESTART, + EVENT_SYSTEM_MINIMIZEEND, // = 0x00000017 + EVENT_OBJECT_CREATE = 0x00008000, + EVENT_OBJECT_DESTROY, + EVENT_OBJECT_SHOW, + EVENT_OBJECT_HIDE, + EVENT_OBJECT_REORDER, + EVENT_OBJECT_FOCUS, + EVENT_OBJECT_SELECTION, + EVENT_OBJECT_SELECTIONADD, + EVENT_OBJECT_SELECTIONREMOVE, + EVENT_OBJECT_SELECTIONWITHIN, + EVENT_OBJECT_STATECHANGE, + EVENT_OBJECT_LOCATIONCHANGE, + EVENT_OBJECT_NAMECHANGE, + EVENT_OBJECT_DESCRIPTIONCHANGE, + EVENT_OBJECT_VALUECHANGE, + EVENT_OBJECT_PARENTCHANGE, + EVENT_OBJECT_HELPCHANGE, + EVENT_OBJECT_DEFACTIONCHANGE, + EVENT_OBJECT_ACCELERATORCHANGE, // = 0x00008012 + EVENT_MAX = 0x7FFFFFFF } static if (_WIN32_WINNT >= 0x501) { - enum : DWORD { - EVENT_CONSOLE_CARET = 0x00004000, - EVENT_CONSOLE_UPDATE_REGION, - EVENT_CONSOLE_UPDATE_SIMPLE, - EVENT_CONSOLE_UPDATE_SCROLL, - EVENT_CONSOLE_LAYOUT, - EVENT_CONSOLE_START_APPLICATION, - EVENT_CONSOLE_END_APPLICATION, // = 0x00004007 - } - - enum : LONG { - CONSOLE_CARET_SELECTION = 1, - CONSOLE_CARET_VISIBLE // = 2 - } - enum LONG CONSOLE_APPLICATION_16BIT = 1; + enum : DWORD { + EVENT_CONSOLE_CARET = 0x00004000, + EVENT_CONSOLE_UPDATE_REGION, + EVENT_CONSOLE_UPDATE_SIMPLE, + EVENT_CONSOLE_UPDATE_SCROLL, + EVENT_CONSOLE_LAYOUT, + EVENT_CONSOLE_START_APPLICATION, + EVENT_CONSOLE_END_APPLICATION, // = 0x00004007 + } + + enum : LONG { + CONSOLE_CARET_SELECTION = 1, + CONSOLE_CARET_VISIBLE // = 2 + } + enum LONG CONSOLE_APPLICATION_16BIT = 1; } enum { - LWA_COLORKEY = 1, - LWA_ALPHA + LWA_COLORKEY = 1, + LWA_ALPHA } enum { - ULW_COLORKEY = 1, - ULW_ALPHA = 2, - ULW_OPAQUE = 4 + ULW_COLORKEY = 1, + ULW_ALPHA = 2, + ULW_OPAQUE = 4 } enum { - GR_GDIOBJECTS, - GR_USEROBJECTS + GR_GDIOBJECTS, + GR_USEROBJECTS } enum { - XBUTTON1 = 1, - XBUTTON2 + XBUTTON1 = 1, + XBUTTON2 } struct GUITHREADINFO { - DWORD cbSize = this.sizeof; - DWORD flags; - HWND hwndActive; - HWND hwndFocus; - HWND hwndCapture; - HWND hwndMenuOwner; - HWND hwndMoveSize; - HWND hwndCaret; - RECT rcCaret; + DWORD cbSize = this.sizeof; + DWORD flags; + HWND hwndActive; + HWND hwndFocus; + HWND hwndCapture; + HWND hwndMenuOwner; + HWND hwndMoveSize; + HWND hwndCaret; + RECT rcCaret; } alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO; extern (Windows) { - alias void function(HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC; + alias void function(HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC; } // *** line 4680 of MinGW 4.0 int BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM); @@ -4449,374 +4449,374 @@ BOOL UnhookWinEvent(HWINEVENTHOOK); BOOL UnregisterDeviceNotification(HANDLE); static if (_WIN32_WINNT >= 0x501) { - int BroadcastSystemMessageExA(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); - int BroadcastSystemMessageExW(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); - LRESULT DefRawInputProc(PRAWINPUT*, INT, UINT); - BOOL FlashWindowEx(PFLASHWINFO); - BOOL GetLayeredWindowAttributes(HWND, COLORREF*, BYTE*, DWORD*); - UINT GetRawInputBuffer(PRAWINPUT, PUINT, UINT); - UINT GetRawInputData(HRAWINPUT, UINT, LPVOID, PUINT, UINT); - UINT GetRawInputDeviceInfoA(HANDLE, UINT, LPVOID, PUINT); - UINT GetRawInputDeviceInfoW(HANDLE, UINT, LPVOID, PUINT); - UINT GetRawInputDeviceList(PRAWINPUTDEVICELIST, PUINT, UINT); - UINT GetRegisteredRawInputDevices(PRAWINPUTDEVICE, PUINT, UINT); - BOOL IsGUIThread(BOOL); - BOOL IsWinEventHookInstalled(DWORD); - BOOL PrintWindow(HWND, HDC, UINT); - BOOL RegisterRawInputDevices(PCRAWINPUTDEVICE, UINT, UINT); + int BroadcastSystemMessageExA(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); + int BroadcastSystemMessageExW(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); + LRESULT DefRawInputProc(PRAWINPUT*, INT, UINT); + BOOL FlashWindowEx(PFLASHWINFO); + BOOL GetLayeredWindowAttributes(HWND, COLORREF*, BYTE*, DWORD*); + UINT GetRawInputBuffer(PRAWINPUT, PUINT, UINT); + UINT GetRawInputData(HRAWINPUT, UINT, LPVOID, PUINT, UINT); + UINT GetRawInputDeviceInfoA(HANDLE, UINT, LPVOID, PUINT); + UINT GetRawInputDeviceInfoW(HANDLE, UINT, LPVOID, PUINT); + UINT GetRawInputDeviceList(PRAWINPUTDEVICELIST, PUINT, UINT); + UINT GetRegisteredRawInputDevices(PRAWINPUTDEVICE, PUINT, UINT); + BOOL IsGUIThread(BOOL); + BOOL IsWinEventHookInstalled(DWORD); + BOOL PrintWindow(HWND, HDC, UINT); + BOOL RegisterRawInputDevices(PCRAWINPUTDEVICE, UINT, UINT); } version (Win64) { - LONG_PTR GetWindowLongPtrA(HWND, int); - LONG_PTR GetWindowLongPtrW(HWND, int); - LONG_PTR SetWindowLongPtrA(HWND, int, LONG_PTR); - LONG_PTR SetWindowLongPtrW(HWND, int, LONG_PTR); + LONG_PTR GetWindowLongPtrA(HWND, int); + LONG_PTR GetWindowLongPtrW(HWND, int); + LONG_PTR SetWindowLongPtrA(HWND, int, LONG_PTR); + LONG_PTR SetWindowLongPtrW(HWND, int, LONG_PTR); } else { - alias GetWindowLongA GetWindowLongPtrA; - alias GetWindowLongW GetWindowLongPtrW; - alias SetWindowLongA SetWindowLongPtrA; - alias SetWindowLongW SetWindowLongPtrW; + alias GetWindowLongA GetWindowLongPtrA; + alias GetWindowLongW GetWindowLongPtrW; + alias SetWindowLongA SetWindowLongPtrA; + alias SetWindowLongW SetWindowLongPtrW; } // ----- // Aliases for Unicode or Ansi version(Unicode) { - alias EDITWORDBREAKPROCW EDITWORDBREAKPROC; - alias PROPENUMPROCW PROPENUMPROC; - alias PROPENUMPROCEXW PROPENUMPROCEX; - alias DESKTOPENUMPROCW DESKTOPENUMPROC; - alias WINSTAENUMPROCW WINSTAENUMPROC; - alias MAKEINTRESOURCEW MAKEINTRESOURCE; - - alias WNDCLASSW WNDCLASS; - alias WNDCLASSEXW WNDCLASSEX; - alias MENUITEMINFOW MENUITEMINFO; - alias LPCMENUITEMINFOW LPCMENUITEMINFO; - alias MSGBOXPARAMSW MSGBOXPARAMS; - alias HIGHCONTRASTW HIGHCONTRAST; - alias SERIALKEYSW SERIALKEYS; - alias SOUNDSENTRYW SOUNDSENTRY; - alias CREATESTRUCTW CREATESTRUCT; - alias CBT_CREATEWNDW CBT_CREATEWND; - alias MDICREATESTRUCTW MDICREATESTRUCT; - alias MULTIKEYHELPW MULTIKEYHELP; - alias MONITORINFOEXW MONITORINFOEX; - alias ICONMETRICSW ICONMETRICS; - alias NONCLIENTMETRICSW NONCLIENTMETRICS; - - alias AppendMenuW AppendMenu; - alias BroadcastSystemMessageW BroadcastSystemMessage; - static if (_WIN32_WINNT >= 0x501) { - alias BroadcastSystemMessageExW BroadcastSystemMessageEx; - } - alias CallMsgFilterW CallMsgFilter; - alias CallWindowProcW CallWindowProc; - alias ChangeMenuW ChangeMenu; - alias CharLowerW CharLower; - alias CharLowerBuffW CharLowerBuff; - alias CharNextW CharNext; - alias CharNextExW CharNextEx; - alias CharPrevW CharPrev; - alias CharPrevExW CharPrevEx; - alias CharToOemW CharToOem; - alias CharToOemBuffW CharToOemBuff; - alias CharUpperW CharUpper; - alias CharUpperBuffW CharUpperBuff; - alias CopyAcceleratorTableW CopyAcceleratorTable; - alias CreateAcceleratorTableW CreateAcceleratorTable; - alias CreateDialogW CreateDialog; - alias CreateDialogIndirectW CreateDialogIndirect; - alias CreateDialogIndirectParamW CreateDialogIndirectParam; - alias CreateDialogParamW CreateDialogParam; - alias CreateMDIWindowW CreateMDIWindow; - alias CreateWindowW CreateWindow; - alias CreateWindowExW CreateWindowEx; - alias CreateWindowStationW CreateWindowStation; - alias DefDlgProcW DefDlgProc; - alias DefFrameProcW DefFrameProc; - alias DefMDIChildProcW DefMDIChildProc; - alias DefWindowProcW DefWindowProc; - alias DialogBoxW DialogBox; - alias DialogBoxIndirectW DialogBoxIndirect; - alias DialogBoxIndirectParamW DialogBoxIndirectParam; - alias DialogBoxParamW DialogBoxParam; - alias DispatchMessageW DispatchMessage; - alias DlgDirListW DlgDirList; - alias DlgDirListComboBoxW DlgDirListComboBox; - alias DlgDirSelectComboBoxExW DlgDirSelectComboBoxEx; - alias DlgDirSelectExW DlgDirSelectEx; - alias DrawStateW DrawState; - alias DrawTextW DrawText; - alias DrawTextExW DrawTextEx; - alias EnumDesktopsW EnumDesktops; - alias EnumPropsW EnumProps; - alias EnumPropsExW EnumPropsEx; - alias EnumWindowStationsW EnumWindowStations; - alias FindWindowW FindWindow; - alias FindWindowExW FindWindowEx; - alias GetClassInfoW GetClassInfo; - alias GetClassInfoExW GetClassInfoEx; - alias GetClassLongW GetClassLong; - alias GetClassNameW GetClassName; - alias GetClipboardFormatNameW GetClipboardFormatName; - alias GetDlgItemTextW GetDlgItemText; - alias GetKeyboardLayoutNameW GetKeyboardLayoutName; - alias GetKeyNameTextW GetKeyNameText; - alias GetMenuItemInfoW GetMenuItemInfo; - alias GetMenuStringW GetMenuString; - alias GetMessageW GetMessage; - alias GetMonitorInfoW GetMonitorInfo; - alias GetPropW GetProp; - static if (_WIN32_WINNT >= 0x501) { - alias GetRawInputDeviceInfoW GetRawInputDeviceInfo; - } - alias GetTabbedTextExtentW GetTabbedTextExtent; - alias GetUserObjectInformationW GetUserObjectInformation; - alias GetWindowLongW GetWindowLong; - alias GetWindowLongPtrW GetWindowLongPtr; - alias GetWindowTextW GetWindowText; - alias GetWindowTextLengthW GetWindowTextLength; - alias GetAltTabInfoW GetAltTabInfo; - alias GetWindowModuleFileNameW GetWindowModuleFileName; - alias GrayStringW GrayString; - alias InsertMenuW InsertMenu; - alias InsertMenuItemW InsertMenuItem; - alias IsCharAlphaW IsCharAlpha; - alias IsCharAlphaNumericW IsCharAlphaNumeric; - alias IsCharLowerW IsCharLower; - alias IsCharUpperW IsCharUpper; - alias IsDialogMessageW IsDialogMessage; - alias LoadAcceleratorsW LoadAccelerators; - alias LoadBitmapW LoadBitmap; - alias LoadCursorW LoadCursor; - alias LoadCursorFromFileW LoadCursorFromFile; - alias LoadIconW LoadIcon; - alias LoadImageW LoadImage; - alias LoadKeyboardLayoutW LoadKeyboardLayout; - alias LoadMenuW LoadMenu; - alias LoadMenuIndirectW LoadMenuIndirect; - alias LoadStringW LoadString; - alias MapVirtualKeyW MapVirtualKey; - alias MapVirtualKeyExW MapVirtualKeyEx; - alias MessageBoxW MessageBox; - alias MessageBoxExW MessageBoxEx; - alias MessageBoxIndirectW MessageBoxIndirect; - alias ModifyMenuW ModifyMenu; - alias OemToCharW OemToChar; - alias OemToCharBuffW OemToCharBuff; - alias OpenDesktopW OpenDesktop; - alias OpenWindowStationW OpenWindowStation; - alias PeekMessageW PeekMessage; - alias PostMessageW PostMessage; - alias PostThreadMessageW PostThreadMessage; - alias RealGetWindowClassW RealGetWindowClass; - alias RegisterClassW RegisterClass; - alias RegisterClassExW RegisterClassEx; - alias RegisterClipboardFormatW RegisterClipboardFormat; - alias RegisterDeviceNotificationW RegisterDeviceNotification; - alias RegisterWindowMessageW RegisterWindowMessage; - alias RemovePropW RemoveProp; - alias SendDlgItemMessageW SendDlgItemMessage; - alias SendMessageW SendMessage; - alias SendMessageCallbackW SendMessageCallback; - alias SendMessageTimeoutW SendMessageTimeout; - alias SendNotifyMessageW SendNotifyMessage; - alias SetClassLongW SetClassLong; - alias SetDlgItemTextW SetDlgItemText; - alias SetMenuItemInfoW SetMenuItemInfo; - alias SetPropW SetProp; - alias SetUserObjectInformationW SetUserObjectInformation; - alias SetWindowLongW SetWindowLong; - alias SetWindowLongPtrW SetWindowLongPtr; - alias SetWindowsHookW SetWindowsHook; - alias SetWindowsHookExW SetWindowsHookEx; - alias SetWindowTextW SetWindowText; - alias SystemParametersInfoW SystemParametersInfo; - alias TabbedTextOutW TabbedTextOut; - alias TranslateAcceleratorW TranslateAccelerator; - alias UnregisterClassW UnregisterClass; - alias VkKeyScanW VkKeyScan; - alias VkKeyScanExW VkKeyScanEx; - alias WinHelpW WinHelp; - alias wsprintfW wsprintf; - alias wvsprintfW wvsprintf; - - alias ChangeDisplaySettingsW ChangeDisplaySettings; - alias ChangeDisplaySettingsExW ChangeDisplaySettingsEx; - alias CreateDesktopW CreateDesktop; - alias EnumDisplaySettingsW EnumDisplaySettings; - alias EnumDisplaySettingsExW EnumDisplaySettingsEx; - alias EnumDisplayDevicesW EnumDisplayDevices; + alias EDITWORDBREAKPROCW EDITWORDBREAKPROC; + alias PROPENUMPROCW PROPENUMPROC; + alias PROPENUMPROCEXW PROPENUMPROCEX; + alias DESKTOPENUMPROCW DESKTOPENUMPROC; + alias WINSTAENUMPROCW WINSTAENUMPROC; + alias MAKEINTRESOURCEW MAKEINTRESOURCE; + + alias WNDCLASSW WNDCLASS; + alias WNDCLASSEXW WNDCLASSEX; + alias MENUITEMINFOW MENUITEMINFO; + alias LPCMENUITEMINFOW LPCMENUITEMINFO; + alias MSGBOXPARAMSW MSGBOXPARAMS; + alias HIGHCONTRASTW HIGHCONTRAST; + alias SERIALKEYSW SERIALKEYS; + alias SOUNDSENTRYW SOUNDSENTRY; + alias CREATESTRUCTW CREATESTRUCT; + alias CBT_CREATEWNDW CBT_CREATEWND; + alias MDICREATESTRUCTW MDICREATESTRUCT; + alias MULTIKEYHELPW MULTIKEYHELP; + alias MONITORINFOEXW MONITORINFOEX; + alias ICONMETRICSW ICONMETRICS; + alias NONCLIENTMETRICSW NONCLIENTMETRICS; + + alias AppendMenuW AppendMenu; + alias BroadcastSystemMessageW BroadcastSystemMessage; + static if (_WIN32_WINNT >= 0x501) { + alias BroadcastSystemMessageExW BroadcastSystemMessageEx; + } + alias CallMsgFilterW CallMsgFilter; + alias CallWindowProcW CallWindowProc; + alias ChangeMenuW ChangeMenu; + alias CharLowerW CharLower; + alias CharLowerBuffW CharLowerBuff; + alias CharNextW CharNext; + alias CharNextExW CharNextEx; + alias CharPrevW CharPrev; + alias CharPrevExW CharPrevEx; + alias CharToOemW CharToOem; + alias CharToOemBuffW CharToOemBuff; + alias CharUpperW CharUpper; + alias CharUpperBuffW CharUpperBuff; + alias CopyAcceleratorTableW CopyAcceleratorTable; + alias CreateAcceleratorTableW CreateAcceleratorTable; + alias CreateDialogW CreateDialog; + alias CreateDialogIndirectW CreateDialogIndirect; + alias CreateDialogIndirectParamW CreateDialogIndirectParam; + alias CreateDialogParamW CreateDialogParam; + alias CreateMDIWindowW CreateMDIWindow; + alias CreateWindowW CreateWindow; + alias CreateWindowExW CreateWindowEx; + alias CreateWindowStationW CreateWindowStation; + alias DefDlgProcW DefDlgProc; + alias DefFrameProcW DefFrameProc; + alias DefMDIChildProcW DefMDIChildProc; + alias DefWindowProcW DefWindowProc; + alias DialogBoxW DialogBox; + alias DialogBoxIndirectW DialogBoxIndirect; + alias DialogBoxIndirectParamW DialogBoxIndirectParam; + alias DialogBoxParamW DialogBoxParam; + alias DispatchMessageW DispatchMessage; + alias DlgDirListW DlgDirList; + alias DlgDirListComboBoxW DlgDirListComboBox; + alias DlgDirSelectComboBoxExW DlgDirSelectComboBoxEx; + alias DlgDirSelectExW DlgDirSelectEx; + alias DrawStateW DrawState; + alias DrawTextW DrawText; + alias DrawTextExW DrawTextEx; + alias EnumDesktopsW EnumDesktops; + alias EnumPropsW EnumProps; + alias EnumPropsExW EnumPropsEx; + alias EnumWindowStationsW EnumWindowStations; + alias FindWindowW FindWindow; + alias FindWindowExW FindWindowEx; + alias GetClassInfoW GetClassInfo; + alias GetClassInfoExW GetClassInfoEx; + alias GetClassLongW GetClassLong; + alias GetClassNameW GetClassName; + alias GetClipboardFormatNameW GetClipboardFormatName; + alias GetDlgItemTextW GetDlgItemText; + alias GetKeyboardLayoutNameW GetKeyboardLayoutName; + alias GetKeyNameTextW GetKeyNameText; + alias GetMenuItemInfoW GetMenuItemInfo; + alias GetMenuStringW GetMenuString; + alias GetMessageW GetMessage; + alias GetMonitorInfoW GetMonitorInfo; + alias GetPropW GetProp; + static if (_WIN32_WINNT >= 0x501) { + alias GetRawInputDeviceInfoW GetRawInputDeviceInfo; + } + alias GetTabbedTextExtentW GetTabbedTextExtent; + alias GetUserObjectInformationW GetUserObjectInformation; + alias GetWindowLongW GetWindowLong; + alias GetWindowLongPtrW GetWindowLongPtr; + alias GetWindowTextW GetWindowText; + alias GetWindowTextLengthW GetWindowTextLength; + alias GetAltTabInfoW GetAltTabInfo; + alias GetWindowModuleFileNameW GetWindowModuleFileName; + alias GrayStringW GrayString; + alias InsertMenuW InsertMenu; + alias InsertMenuItemW InsertMenuItem; + alias IsCharAlphaW IsCharAlpha; + alias IsCharAlphaNumericW IsCharAlphaNumeric; + alias IsCharLowerW IsCharLower; + alias IsCharUpperW IsCharUpper; + alias IsDialogMessageW IsDialogMessage; + alias LoadAcceleratorsW LoadAccelerators; + alias LoadBitmapW LoadBitmap; + alias LoadCursorW LoadCursor; + alias LoadCursorFromFileW LoadCursorFromFile; + alias LoadIconW LoadIcon; + alias LoadImageW LoadImage; + alias LoadKeyboardLayoutW LoadKeyboardLayout; + alias LoadMenuW LoadMenu; + alias LoadMenuIndirectW LoadMenuIndirect; + alias LoadStringW LoadString; + alias MapVirtualKeyW MapVirtualKey; + alias MapVirtualKeyExW MapVirtualKeyEx; + alias MessageBoxW MessageBox; + alias MessageBoxExW MessageBoxEx; + alias MessageBoxIndirectW MessageBoxIndirect; + alias ModifyMenuW ModifyMenu; + alias OemToCharW OemToChar; + alias OemToCharBuffW OemToCharBuff; + alias OpenDesktopW OpenDesktop; + alias OpenWindowStationW OpenWindowStation; + alias PeekMessageW PeekMessage; + alias PostMessageW PostMessage; + alias PostThreadMessageW PostThreadMessage; + alias RealGetWindowClassW RealGetWindowClass; + alias RegisterClassW RegisterClass; + alias RegisterClassExW RegisterClassEx; + alias RegisterClipboardFormatW RegisterClipboardFormat; + alias RegisterDeviceNotificationW RegisterDeviceNotification; + alias RegisterWindowMessageW RegisterWindowMessage; + alias RemovePropW RemoveProp; + alias SendDlgItemMessageW SendDlgItemMessage; + alias SendMessageW SendMessage; + alias SendMessageCallbackW SendMessageCallback; + alias SendMessageTimeoutW SendMessageTimeout; + alias SendNotifyMessageW SendNotifyMessage; + alias SetClassLongW SetClassLong; + alias SetDlgItemTextW SetDlgItemText; + alias SetMenuItemInfoW SetMenuItemInfo; + alias SetPropW SetProp; + alias SetUserObjectInformationW SetUserObjectInformation; + alias SetWindowLongW SetWindowLong; + alias SetWindowLongPtrW SetWindowLongPtr; + alias SetWindowsHookW SetWindowsHook; + alias SetWindowsHookExW SetWindowsHookEx; + alias SetWindowTextW SetWindowText; + alias SystemParametersInfoW SystemParametersInfo; + alias TabbedTextOutW TabbedTextOut; + alias TranslateAcceleratorW TranslateAccelerator; + alias UnregisterClassW UnregisterClass; + alias VkKeyScanW VkKeyScan; + alias VkKeyScanExW VkKeyScanEx; + alias WinHelpW WinHelp; + alias wsprintfW wsprintf; + alias wvsprintfW wvsprintf; + + alias ChangeDisplaySettingsW ChangeDisplaySettings; + alias ChangeDisplaySettingsExW ChangeDisplaySettingsEx; + alias CreateDesktopW CreateDesktop; + alias EnumDisplaySettingsW EnumDisplaySettings; + alias EnumDisplaySettingsExW EnumDisplaySettingsEx; + alias EnumDisplayDevicesW EnumDisplayDevices; } else { // ANSI - alias EDITWORDBREAKPROCA EDITWORDBREAKPROC; - alias PROPENUMPROCA PROPENUMPROC; - alias PROPENUMPROCEXA PROPENUMPROCEX; - alias DESKTOPENUMPROCA DESKTOPENUMPROC; - alias WINSTAENUMPROCA WINSTAENUMPROC; - alias MAKEINTRESOURCEA MAKEINTRESOURCE; - - alias WNDCLASSA WNDCLASS; - alias WNDCLASSEXA WNDCLASSEX; - alias MENUITEMINFOA MENUITEMINFO; - alias LPCMENUITEMINFOA LPCMENUITEMINFO; - alias MSGBOXPARAMSA MSGBOXPARAMS; - alias HIGHCONTRASTA HIGHCONTRAST; - alias SERIALKEYSA SERIALKEYS; - alias SOUNDSENTRYA SOUNDSENTRY; - alias CREATESTRUCTA CREATESTRUCT; - alias CBT_CREATEWNDA CBT_CREATEWND; - alias MDICREATESTRUCTA MDICREATESTRUCT; - alias MULTIKEYHELPA MULTIKEYHELP; - alias MONITORINFOEXA MONITORINFOEX; - alias ICONMETRICSA ICONMETRICS; - alias NONCLIENTMETRICSA NONCLIENTMETRICS; - - alias AppendMenuA AppendMenu; - alias BroadcastSystemMessageA BroadcastSystemMessage; - static if (_WIN32_WINNT >= 0x501) { - alias BroadcastSystemMessageExA BroadcastSystemMessageEx; - } - alias CallMsgFilterA CallMsgFilter; - alias CallWindowProcA CallWindowProc; - alias ChangeMenuA ChangeMenu; - alias CharLowerA CharLower; - alias CharLowerBuffA CharLowerBuff; - alias CharNextA CharNext; - alias CharNextExA CharNextEx; - alias CharPrevA CharPrev; - alias CharPrevExA CharPrevEx; - alias CharToOemA CharToOem; - alias CharToOemBuffA CharToOemBuff; - alias CharUpperA CharUpper; - alias CharUpperBuffA CharUpperBuff; - alias CopyAcceleratorTableA CopyAcceleratorTable; - alias CreateAcceleratorTableA CreateAcceleratorTable; - alias CreateDialogA CreateDialog; - alias CreateDialogIndirectA CreateDialogIndirect; - alias CreateDialogIndirectParamA CreateDialogIndirectParam; - alias CreateDialogParamA CreateDialogParam; - alias CreateMDIWindowA CreateMDIWindow; - alias CreateWindowA CreateWindow; - alias CreateWindowExA CreateWindowEx; - alias CreateWindowStationA CreateWindowStation; - alias DefDlgProcA DefDlgProc; - alias DefFrameProcA DefFrameProc; - alias DefMDIChildProcA DefMDIChildProc; - alias DefWindowProcA DefWindowProc; - alias DialogBoxA DialogBox; - alias DialogBoxIndirectA DialogBoxIndirect; - alias DialogBoxIndirectParamA DialogBoxIndirectParam; - alias DialogBoxParamA DialogBoxParam; - alias DispatchMessageA DispatchMessage; - alias DlgDirListA DlgDirList; - alias DlgDirListComboBoxA DlgDirListComboBox; - alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx; - alias DlgDirSelectExA DlgDirSelectEx; - alias DrawStateA DrawState; - alias DrawTextA DrawText; - alias DrawTextExA DrawTextEx; - alias EnumDesktopsA EnumDesktops; - alias EnumPropsA EnumProps; - alias EnumPropsExA EnumPropsEx; - alias EnumWindowStationsA EnumWindowStations; - alias FindWindowA FindWindow; - alias FindWindowExA FindWindowEx; - alias GetClassInfoA GetClassInfo; - alias GetClassInfoExA GetClassInfoEx; - alias GetClassLongA GetClassLong; - alias GetClassNameA GetClassName; - alias GetClipboardFormatNameA GetClipboardFormatName; - alias GetDlgItemTextA GetDlgItemText; - alias GetKeyboardLayoutNameA GetKeyboardLayoutName; - alias GetKeyNameTextA GetKeyNameText; - alias GetMenuItemInfoA GetMenuItemInfo; - alias GetMenuStringA GetMenuString; - alias GetMessageA GetMessage; - alias GetMonitorInfoA GetMonitorInfo; - alias GetPropA GetProp; - static if (_WIN32_WINNT >= 0x501) { - alias GetRawInputDeviceInfoA GetRawInputDeviceInfo; - } - alias GetTabbedTextExtentA GetTabbedTextExtent; - alias GetUserObjectInformationA GetUserObjectInformation; - alias GetWindowLongA GetWindowLong; - alias GetWindowLongPtrA GetWindowLongPtr; - alias GetWindowTextA GetWindowText; - alias GetWindowTextLengthA GetWindowTextLength; - alias GetAltTabInfoA GetAltTabInfo; - alias GetWindowModuleFileNameA GetWindowModuleFileName; - alias GrayStringA GrayString; - alias InsertMenuA InsertMenu; - alias InsertMenuItemA InsertMenuItem; - alias IsCharAlphaA IsCharAlpha; - alias IsCharAlphaNumericA IsCharAlphaNumeric; - alias IsCharLowerA IsCharLower; - alias IsCharUpperA IsCharUpper; - alias IsDialogMessageA IsDialogMessage; - alias LoadAcceleratorsA LoadAccelerators; - alias LoadBitmapA LoadBitmap; - alias LoadCursorA LoadCursor; - alias LoadIconA LoadIcon; - alias LoadCursorFromFileA LoadCursorFromFile; - alias LoadImageA LoadImage; - alias LoadKeyboardLayoutA LoadKeyboardLayout; - alias LoadMenuA LoadMenu; - alias LoadMenuIndirectA LoadMenuIndirect; - alias LoadStringA LoadString; - alias MapVirtualKeyA MapVirtualKey; - alias MapVirtualKeyExA MapVirtualKeyEx; - alias MessageBoxA MessageBox; - alias MessageBoxExA MessageBoxEx; - alias MessageBoxIndirectA MessageBoxIndirect; - alias ModifyMenuA ModifyMenu; - alias OemToCharA OemToChar; - alias OemToCharBuffA OemToCharBuff; - alias OpenDesktopA OpenDesktop; - alias OpenWindowStationA OpenWindowStation; - alias PeekMessageA PeekMessage; - alias PostMessageA PostMessage; - alias PostThreadMessageA PostThreadMessage; - alias RealGetWindowClassA RealGetWindowClass; - alias RegisterClassA RegisterClass; - alias RegisterClassExA RegisterClassEx; - alias RegisterClipboardFormatA RegisterClipboardFormat; - alias RegisterDeviceNotificationA RegisterDeviceNotification; - alias RegisterWindowMessageA RegisterWindowMessage; - alias RemovePropA RemoveProp; - alias SendDlgItemMessageA SendDlgItemMessage; - alias SendMessageA SendMessage; - alias SendMessageCallbackA SendMessageCallback; - alias SendMessageTimeoutA SendMessageTimeout; - alias SendNotifyMessageA SendNotifyMessage; - alias SetClassLongA SetClassLong; - alias SetDlgItemTextA SetDlgItemText; - alias SetMenuItemInfoA SetMenuItemInfo; - alias SetPropA SetProp; - alias SetUserObjectInformationA SetUserObjectInformation; - alias SetWindowLongA SetWindowLong; - alias SetWindowLongPtrA SetWindowLongPtr; - alias SetWindowsHookA SetWindowsHook; - alias SetWindowsHookExA SetWindowsHookEx; - alias SetWindowTextA SetWindowText; - alias SystemParametersInfoA SystemParametersInfo; - alias TabbedTextOutA TabbedTextOut; - alias TranslateAcceleratorA TranslateAccelerator; - alias UnregisterClassA UnregisterClass; - alias VkKeyScanA VkKeyScan; - alias VkKeyScanExA VkKeyScanEx; - alias WinHelpA WinHelp; - alias wsprintfA wsprintf; - alias wvsprintfA wvsprintf; - - alias ChangeDisplaySettingsA ChangeDisplaySettings; - alias ChangeDisplaySettingsExA ChangeDisplaySettingsEx; - alias CreateDesktopA CreateDesktop; - alias EnumDisplaySettingsA EnumDisplaySettings; - alias EnumDisplaySettingsExA EnumDisplaySettingsEx; - alias EnumDisplayDevicesA EnumDisplayDevices; + alias EDITWORDBREAKPROCA EDITWORDBREAKPROC; + alias PROPENUMPROCA PROPENUMPROC; + alias PROPENUMPROCEXA PROPENUMPROCEX; + alias DESKTOPENUMPROCA DESKTOPENUMPROC; + alias WINSTAENUMPROCA WINSTAENUMPROC; + alias MAKEINTRESOURCEA MAKEINTRESOURCE; + + alias WNDCLASSA WNDCLASS; + alias WNDCLASSEXA WNDCLASSEX; + alias MENUITEMINFOA MENUITEMINFO; + alias LPCMENUITEMINFOA LPCMENUITEMINFO; + alias MSGBOXPARAMSA MSGBOXPARAMS; + alias HIGHCONTRASTA HIGHCONTRAST; + alias SERIALKEYSA SERIALKEYS; + alias SOUNDSENTRYA SOUNDSENTRY; + alias CREATESTRUCTA CREATESTRUCT; + alias CBT_CREATEWNDA CBT_CREATEWND; + alias MDICREATESTRUCTA MDICREATESTRUCT; + alias MULTIKEYHELPA MULTIKEYHELP; + alias MONITORINFOEXA MONITORINFOEX; + alias ICONMETRICSA ICONMETRICS; + alias NONCLIENTMETRICSA NONCLIENTMETRICS; + + alias AppendMenuA AppendMenu; + alias BroadcastSystemMessageA BroadcastSystemMessage; + static if (_WIN32_WINNT >= 0x501) { + alias BroadcastSystemMessageExA BroadcastSystemMessageEx; + } + alias CallMsgFilterA CallMsgFilter; + alias CallWindowProcA CallWindowProc; + alias ChangeMenuA ChangeMenu; + alias CharLowerA CharLower; + alias CharLowerBuffA CharLowerBuff; + alias CharNextA CharNext; + alias CharNextExA CharNextEx; + alias CharPrevA CharPrev; + alias CharPrevExA CharPrevEx; + alias CharToOemA CharToOem; + alias CharToOemBuffA CharToOemBuff; + alias CharUpperA CharUpper; + alias CharUpperBuffA CharUpperBuff; + alias CopyAcceleratorTableA CopyAcceleratorTable; + alias CreateAcceleratorTableA CreateAcceleratorTable; + alias CreateDialogA CreateDialog; + alias CreateDialogIndirectA CreateDialogIndirect; + alias CreateDialogIndirectParamA CreateDialogIndirectParam; + alias CreateDialogParamA CreateDialogParam; + alias CreateMDIWindowA CreateMDIWindow; + alias CreateWindowA CreateWindow; + alias CreateWindowExA CreateWindowEx; + alias CreateWindowStationA CreateWindowStation; + alias DefDlgProcA DefDlgProc; + alias DefFrameProcA DefFrameProc; + alias DefMDIChildProcA DefMDIChildProc; + alias DefWindowProcA DefWindowProc; + alias DialogBoxA DialogBox; + alias DialogBoxIndirectA DialogBoxIndirect; + alias DialogBoxIndirectParamA DialogBoxIndirectParam; + alias DialogBoxParamA DialogBoxParam; + alias DispatchMessageA DispatchMessage; + alias DlgDirListA DlgDirList; + alias DlgDirListComboBoxA DlgDirListComboBox; + alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx; + alias DlgDirSelectExA DlgDirSelectEx; + alias DrawStateA DrawState; + alias DrawTextA DrawText; + alias DrawTextExA DrawTextEx; + alias EnumDesktopsA EnumDesktops; + alias EnumPropsA EnumProps; + alias EnumPropsExA EnumPropsEx; + alias EnumWindowStationsA EnumWindowStations; + alias FindWindowA FindWindow; + alias FindWindowExA FindWindowEx; + alias GetClassInfoA GetClassInfo; + alias GetClassInfoExA GetClassInfoEx; + alias GetClassLongA GetClassLong; + alias GetClassNameA GetClassName; + alias GetClipboardFormatNameA GetClipboardFormatName; + alias GetDlgItemTextA GetDlgItemText; + alias GetKeyboardLayoutNameA GetKeyboardLayoutName; + alias GetKeyNameTextA GetKeyNameText; + alias GetMenuItemInfoA GetMenuItemInfo; + alias GetMenuStringA GetMenuString; + alias GetMessageA GetMessage; + alias GetMonitorInfoA GetMonitorInfo; + alias GetPropA GetProp; + static if (_WIN32_WINNT >= 0x501) { + alias GetRawInputDeviceInfoA GetRawInputDeviceInfo; + } + alias GetTabbedTextExtentA GetTabbedTextExtent; + alias GetUserObjectInformationA GetUserObjectInformation; + alias GetWindowLongA GetWindowLong; + alias GetWindowLongPtrA GetWindowLongPtr; + alias GetWindowTextA GetWindowText; + alias GetWindowTextLengthA GetWindowTextLength; + alias GetAltTabInfoA GetAltTabInfo; + alias GetWindowModuleFileNameA GetWindowModuleFileName; + alias GrayStringA GrayString; + alias InsertMenuA InsertMenu; + alias InsertMenuItemA InsertMenuItem; + alias IsCharAlphaA IsCharAlpha; + alias IsCharAlphaNumericA IsCharAlphaNumeric; + alias IsCharLowerA IsCharLower; + alias IsCharUpperA IsCharUpper; + alias IsDialogMessageA IsDialogMessage; + alias LoadAcceleratorsA LoadAccelerators; + alias LoadBitmapA LoadBitmap; + alias LoadCursorA LoadCursor; + alias LoadIconA LoadIcon; + alias LoadCursorFromFileA LoadCursorFromFile; + alias LoadImageA LoadImage; + alias LoadKeyboardLayoutA LoadKeyboardLayout; + alias LoadMenuA LoadMenu; + alias LoadMenuIndirectA LoadMenuIndirect; + alias LoadStringA LoadString; + alias MapVirtualKeyA MapVirtualKey; + alias MapVirtualKeyExA MapVirtualKeyEx; + alias MessageBoxA MessageBox; + alias MessageBoxExA MessageBoxEx; + alias MessageBoxIndirectA MessageBoxIndirect; + alias ModifyMenuA ModifyMenu; + alias OemToCharA OemToChar; + alias OemToCharBuffA OemToCharBuff; + alias OpenDesktopA OpenDesktop; + alias OpenWindowStationA OpenWindowStation; + alias PeekMessageA PeekMessage; + alias PostMessageA PostMessage; + alias PostThreadMessageA PostThreadMessage; + alias RealGetWindowClassA RealGetWindowClass; + alias RegisterClassA RegisterClass; + alias RegisterClassExA RegisterClassEx; + alias RegisterClipboardFormatA RegisterClipboardFormat; + alias RegisterDeviceNotificationA RegisterDeviceNotification; + alias RegisterWindowMessageA RegisterWindowMessage; + alias RemovePropA RemoveProp; + alias SendDlgItemMessageA SendDlgItemMessage; + alias SendMessageA SendMessage; + alias SendMessageCallbackA SendMessageCallback; + alias SendMessageTimeoutA SendMessageTimeout; + alias SendNotifyMessageA SendNotifyMessage; + alias SetClassLongA SetClassLong; + alias SetDlgItemTextA SetDlgItemText; + alias SetMenuItemInfoA SetMenuItemInfo; + alias SetPropA SetProp; + alias SetUserObjectInformationA SetUserObjectInformation; + alias SetWindowLongA SetWindowLong; + alias SetWindowLongPtrA SetWindowLongPtr; + alias SetWindowsHookA SetWindowsHook; + alias SetWindowsHookExA SetWindowsHookEx; + alias SetWindowTextA SetWindowText; + alias SystemParametersInfoA SystemParametersInfo; + alias TabbedTextOutA TabbedTextOut; + alias TranslateAcceleratorA TranslateAccelerator; + alias UnregisterClassA UnregisterClass; + alias VkKeyScanA VkKeyScan; + alias VkKeyScanExA VkKeyScanEx; + alias WinHelpA WinHelp; + alias wsprintfA wsprintf; + alias wvsprintfA wvsprintf; + + alias ChangeDisplaySettingsA ChangeDisplaySettings; + alias ChangeDisplaySettingsExA ChangeDisplaySettingsEx; + alias CreateDesktopA CreateDesktop; + alias EnumDisplaySettingsA EnumDisplaySettings; + alias EnumDisplaySettingsExA EnumDisplaySettingsEx; + alias EnumDisplayDevicesA EnumDisplayDevices; } alias WNDCLASS* LPWNDCLASS, PWNDCLASS; @@ -4835,54 +4835,54 @@ alias ICONMETRICS* LPICONMETRICS; alias NONCLIENTMETRICS* LPNONCLIENTMETRICS; static if (_WIN32_WINNT >= 0x501) { - enum PW_CLIENTONLY = 0x00000001; - enum RIM_INPUT = 0x00000000; - enum RIM_INPUTSINK = 0x00000001; - enum RIM_TYPEMOUSE = 0x00000000; - enum RIM_TYPEKEYBOARD = 0x00000001; - enum RIM_TYPEHID = 0x00000002; - enum MOUSE_MOVE_RELATIVE = 0x00000000; - enum MOUSE_MOVE_ABSOLUTE = 0x00000001; - enum MOUSE_VIRTUAL_DESKTOP = 0x00000002; - enum MOUSE_ATTRIBUTES_CHANGED = 0x00000004; - enum RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001; - enum RI_MOUSE_LEFT_BUTTON_UP = 0x0002; - enum RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004; - enum RI_MOUSE_RIGHT_BUTTON_UP = 0x0008; - enum RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010; - enum RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020; - enum RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN; - enum RI_MOUSE_BUTTON_1_UP = RI_MOUSE_LEFT_BUTTON_UP; - enum RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN; - enum RI_MOUSE_BUTTON_2_UP = RI_MOUSE_RIGHT_BUTTON_UP; - enum RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN; - enum RI_MOUSE_BUTTON_3_UP = RI_MOUSE_MIDDLE_BUTTON_UP; - enum RI_MOUSE_BUTTON_4_DOWN = 0x0040; - enum RI_MOUSE_BUTTON_4_UP = 0x0080; - enum RI_MOUSE_BUTTON_5_DOWN = 0x0100; - enum RI_MOUSE_BUTTON_5_UP = 0x0200; - enum RI_MOUSE_WHEEL = 0x0400; - enum KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff; - enum RI_KEY_MAKE = 0x0000; - enum RI_KEY_BREAK = 0x0001; - enum RI_KEY_E0 = 0x0002; - enum RI_KEY_E1 = 0x0004; - enum RI_KEY_TERMSRV_SET_LED = 0x0008; - enum RI_KEY_TERMSRV_SHADOW = 0x0010; - - enum RID_INPUT = 0x10000003; - enum RID_HEADER = 0x10000005; - - enum RIDI_PREPARSEDDATA = 0x20000005; - enum RIDI_DEVICENAME = 0x20000007; - enum RIDI_DEVICEINFO = 0x2000000b; - - enum RIDEV_REMOVE = 0x00000001; - enum RIDEV_EXCLUDE = 0x00000010; - enum RIDEV_PAGEONLY = 0x00000020; - enum RIDEV_NOLEGACY = 0x00000030; - enum RIDEV_INPUTSINK = 0x00000100; - enum RIDEV_CAPTUREMOUSE = 0x00000200; - enum RIDEV_NOHOTKEYS = 0x00000200; - enum RIDEV_APPKEYS = 0x00000400; + enum PW_CLIENTONLY = 0x00000001; + enum RIM_INPUT = 0x00000000; + enum RIM_INPUTSINK = 0x00000001; + enum RIM_TYPEMOUSE = 0x00000000; + enum RIM_TYPEKEYBOARD = 0x00000001; + enum RIM_TYPEHID = 0x00000002; + enum MOUSE_MOVE_RELATIVE = 0x00000000; + enum MOUSE_MOVE_ABSOLUTE = 0x00000001; + enum MOUSE_VIRTUAL_DESKTOP = 0x00000002; + enum MOUSE_ATTRIBUTES_CHANGED = 0x00000004; + enum RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001; + enum RI_MOUSE_LEFT_BUTTON_UP = 0x0002; + enum RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004; + enum RI_MOUSE_RIGHT_BUTTON_UP = 0x0008; + enum RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010; + enum RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020; + enum RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN; + enum RI_MOUSE_BUTTON_1_UP = RI_MOUSE_LEFT_BUTTON_UP; + enum RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN; + enum RI_MOUSE_BUTTON_2_UP = RI_MOUSE_RIGHT_BUTTON_UP; + enum RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN; + enum RI_MOUSE_BUTTON_3_UP = RI_MOUSE_MIDDLE_BUTTON_UP; + enum RI_MOUSE_BUTTON_4_DOWN = 0x0040; + enum RI_MOUSE_BUTTON_4_UP = 0x0080; + enum RI_MOUSE_BUTTON_5_DOWN = 0x0100; + enum RI_MOUSE_BUTTON_5_UP = 0x0200; + enum RI_MOUSE_WHEEL = 0x0400; + enum KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff; + enum RI_KEY_MAKE = 0x0000; + enum RI_KEY_BREAK = 0x0001; + enum RI_KEY_E0 = 0x0002; + enum RI_KEY_E1 = 0x0004; + enum RI_KEY_TERMSRV_SET_LED = 0x0008; + enum RI_KEY_TERMSRV_SHADOW = 0x0010; + + enum RID_INPUT = 0x10000003; + enum RID_HEADER = 0x10000005; + + enum RIDI_PREPARSEDDATA = 0x20000005; + enum RIDI_DEVICENAME = 0x20000007; + enum RIDI_DEVICEINFO = 0x2000000b; + + enum RIDEV_REMOVE = 0x00000001; + enum RIDEV_EXCLUDE = 0x00000010; + enum RIDEV_PAGEONLY = 0x00000020; + enum RIDEV_NOLEGACY = 0x00000030; + enum RIDEV_INPUTSINK = 0x00000100; + enum RIDEV_CAPTUREMOUSE = 0x00000200; + enum RIDEV_NOHOTKEYS = 0x00000200; + enum RIDEV_APPKEYS = 0x00000400; } diff --git a/src/core/sys/windows/winver.d b/src/core/sys/windows/winver.d index f21830788c..2c375044c6 100644 --- a/src/core/sys/windows/winver.d +++ b/src/core/sys/windows/winver.d @@ -14,158 +14,158 @@ private import core.sys.windows.windef; // FIXME: type weirdness enum { - VS_FILE_INFO = 16, - VS_VERSION_INFO = 1, - VS_USER_DEFINED = 100 + VS_FILE_INFO = 16, + VS_VERSION_INFO = 1, + VS_USER_DEFINED = 100 } enum { - VS_FFI_SIGNATURE = 0xFEEF04BD, - VS_FFI_STRUCVERSION = 0x10000, - VS_FFI_FILEFLAGSMASK = 0x3F + VS_FFI_SIGNATURE = 0xFEEF04BD, + VS_FFI_STRUCVERSION = 0x10000, + VS_FFI_FILEFLAGSMASK = 0x3F } enum { - VS_FF_DEBUG = 1, - VS_FF_PRERELEASE = 2, - VS_FF_PATCHED = 4, - VS_FF_PRIVATEBUILD = 8, - VS_FF_INFOINFERRED = 16, - VS_FF_SPECIALBUILD = 32 + VS_FF_DEBUG = 1, + VS_FF_PRERELEASE = 2, + VS_FF_PATCHED = 4, + VS_FF_PRIVATEBUILD = 8, + VS_FF_INFOINFERRED = 16, + VS_FF_SPECIALBUILD = 32 } enum { - VOS_UNKNOWN = 0, - VOS_DOS = 0x10000, - VOS_OS216 = 0x20000, - VOS_OS232 = 0x30000, - VOS_NT = 0x40000, - VOS__BASE = 0, - VOS__WINDOWS16 = 1, - VOS__PM16 = 2, - VOS__PM32 = 3, - VOS__WINDOWS32 = 4, - VOS_DOS_WINDOWS16 = 0x10001, - VOS_DOS_WINDOWS32 = 0x10004, - VOS_OS216_PM16 = 0x20002, - VOS_OS232_PM32 = 0x30003, - VOS_NT_WINDOWS32 = 0x40004 + VOS_UNKNOWN = 0, + VOS_DOS = 0x10000, + VOS_OS216 = 0x20000, + VOS_OS232 = 0x30000, + VOS_NT = 0x40000, + VOS__BASE = 0, + VOS__WINDOWS16 = 1, + VOS__PM16 = 2, + VOS__PM32 = 3, + VOS__WINDOWS32 = 4, + VOS_DOS_WINDOWS16 = 0x10001, + VOS_DOS_WINDOWS32 = 0x10004, + VOS_OS216_PM16 = 0x20002, + VOS_OS232_PM32 = 0x30003, + VOS_NT_WINDOWS32 = 0x40004 } enum { - VFT_UNKNOWN = 0, - VFT_APP = 1, - VFT_DLL = 2, - VFT_DRV = 3, - VFT_FONT = 4, - VFT_VXD = 5, - VFT_STATIC_LIB = 7 + VFT_UNKNOWN = 0, + VFT_APP = 1, + VFT_DLL = 2, + VFT_DRV = 3, + VFT_FONT = 4, + VFT_VXD = 5, + VFT_STATIC_LIB = 7 } enum { - VFT2_UNKNOWN = 0, - VFT2_DRV_PRINTER = 1, - VFT2_DRV_KEYBOARD = 2, - VFT2_DRV_LANGUAGE = 3, - VFT2_DRV_DISPLAY = 4, - VFT2_DRV_MOUSE = 5, - VFT2_DRV_NETWORK = 6, - VFT2_DRV_SYSTEM = 7, - VFT2_DRV_INSTALLABLE = 8, - VFT2_DRV_SOUND = 9, - VFT2_DRV_COMM = 10, - VFT2_DRV_INPUTMETHOD = 11, - VFT2_FONT_RASTER = 1, - VFT2_FONT_VECTOR = 2, - VFT2_FONT_TRUETYPE = 3 + VFT2_UNKNOWN = 0, + VFT2_DRV_PRINTER = 1, + VFT2_DRV_KEYBOARD = 2, + VFT2_DRV_LANGUAGE = 3, + VFT2_DRV_DISPLAY = 4, + VFT2_DRV_MOUSE = 5, + VFT2_DRV_NETWORK = 6, + VFT2_DRV_SYSTEM = 7, + VFT2_DRV_INSTALLABLE = 8, + VFT2_DRV_SOUND = 9, + VFT2_DRV_COMM = 10, + VFT2_DRV_INPUTMETHOD = 11, + VFT2_FONT_RASTER = 1, + VFT2_FONT_VECTOR = 2, + VFT2_FONT_TRUETYPE = 3 } enum : DWORD { - VFFF_ISSHAREDFILE = 1 + VFFF_ISSHAREDFILE = 1 } enum : DWORD { - VFF_CURNEDEST = 1, - VFF_FILEINUSE = 2, - VFF_BUFFTOOSMALL = 4 + VFF_CURNEDEST = 1, + VFF_FILEINUSE = 2, + VFF_BUFFTOOSMALL = 4 } enum : DWORD { - VIFF_FORCEINSTALL = 1, - VIFF_DONTDELETEOLD + VIFF_FORCEINSTALL = 1, + VIFF_DONTDELETEOLD } enum { - VIF_TEMPFILE = 0x00001, - VIF_MISMATCH = 0x00002, - VIF_SRCOLD = 0x00004, - VIF_DIFFLANG = 0x00008, - VIF_DIFFCODEPG = 0x00010, - VIF_DIFFTYPE = 0x00020, - VIF_WRITEPROT = 0x00040, - VIF_FILEINUSE = 0x00080, - VIF_OUTOFSPACE = 0x00100, - VIF_ACCESSVIOLATION = 0x00200, - VIF_SHARINGVIOLATION = 0x00400, - VIF_CANNOTCREATE = 0x00800, - VIF_CANNOTDELETE = 0x01000, - VIF_CANNOTRENAME = 0x02000, - VIF_CANNOTDELETECUR = 0x04000, - VIF_OUTOFMEMORY = 0x08000, - VIF_CANNOTREADSRC = 0x10000, - VIF_CANNOTREADDST = 0x20000, - VIF_BUFFTOOSMALL = 0x40000 + VIF_TEMPFILE = 0x00001, + VIF_MISMATCH = 0x00002, + VIF_SRCOLD = 0x00004, + VIF_DIFFLANG = 0x00008, + VIF_DIFFCODEPG = 0x00010, + VIF_DIFFTYPE = 0x00020, + VIF_WRITEPROT = 0x00040, + VIF_FILEINUSE = 0x00080, + VIF_OUTOFSPACE = 0x00100, + VIF_ACCESSVIOLATION = 0x00200, + VIF_SHARINGVIOLATION = 0x00400, + VIF_CANNOTCREATE = 0x00800, + VIF_CANNOTDELETE = 0x01000, + VIF_CANNOTRENAME = 0x02000, + VIF_CANNOTDELETECUR = 0x04000, + VIF_OUTOFMEMORY = 0x08000, + VIF_CANNOTREADSRC = 0x10000, + VIF_CANNOTREADDST = 0x20000, + VIF_BUFFTOOSMALL = 0x40000 } struct VS_FIXEDFILEINFO { - DWORD dwSignature; - DWORD dwStrucVersion; - DWORD dwFileVersionMS; - DWORD dwFileVersionLS; - DWORD dwProductVersionMS; - DWORD dwProductVersionLS; - DWORD dwFileFlagsMask; - DWORD dwFileFlags; - DWORD dwFileOS; - DWORD dwFileType; - DWORD dwFileSubtype; - DWORD dwFileDateMS; - DWORD dwFileDateLS; + DWORD dwSignature; + DWORD dwStrucVersion; + DWORD dwFileVersionMS; + DWORD dwFileVersionLS; + DWORD dwProductVersionMS; + DWORD dwProductVersionLS; + DWORD dwFileFlagsMask; + DWORD dwFileFlags; + DWORD dwFileOS; + DWORD dwFileType; + DWORD dwFileSubtype; + DWORD dwFileDateMS; + DWORD dwFileDateLS; } extern (Windows) { - DWORD VerFindFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, - PUINT); - DWORD VerFindFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, - PUINT); - DWORD VerInstallFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, - PUINT); - DWORD VerInstallFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, - LPWSTR, PUINT); - DWORD GetFileVersionInfoSizeA(LPCSTR, PDWORD); - DWORD GetFileVersionInfoSizeW(LPCWSTR, PDWORD); - BOOL GetFileVersionInfoA(LPCSTR, DWORD, DWORD, PVOID); - BOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, PVOID); - DWORD VerLanguageNameA(DWORD, LPSTR, DWORD); - DWORD VerLanguageNameW(DWORD, LPWSTR, DWORD); - BOOL VerQueryValueA(LPCVOID, LPCSTR, LPVOID*, PUINT); - BOOL VerQueryValueW(LPCVOID, LPCWSTR, LPVOID*, PUINT); + DWORD VerFindFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, + PUINT); + DWORD VerFindFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, + PUINT); + DWORD VerInstallFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, + PUINT); + DWORD VerInstallFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, + LPWSTR, PUINT); + DWORD GetFileVersionInfoSizeA(LPCSTR, PDWORD); + DWORD GetFileVersionInfoSizeW(LPCWSTR, PDWORD); + BOOL GetFileVersionInfoA(LPCSTR, DWORD, DWORD, PVOID); + BOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, PVOID); + DWORD VerLanguageNameA(DWORD, LPSTR, DWORD); + DWORD VerLanguageNameW(DWORD, LPWSTR, DWORD); + BOOL VerQueryValueA(LPCVOID, LPCSTR, LPVOID*, PUINT); + BOOL VerQueryValueW(LPCVOID, LPCWSTR, LPVOID*, PUINT); } version (Unicode) { - alias VerFindFileW VerFindFile; - alias VerQueryValueW VerQueryValue; - alias VerInstallFileW VerInstallFile; - alias GetFileVersionInfoSizeW GetFileVersionInfoSize; - alias GetFileVersionInfoW GetFileVersionInfo; - alias VerLanguageNameW VerLanguageName; - alias VerQueryValueW VerQueryValue; + alias VerFindFileW VerFindFile; + alias VerQueryValueW VerQueryValue; + alias VerInstallFileW VerInstallFile; + alias GetFileVersionInfoSizeW GetFileVersionInfoSize; + alias GetFileVersionInfoW GetFileVersionInfo; + alias VerLanguageNameW VerLanguageName; + alias VerQueryValueW VerQueryValue; } else { - alias VerQueryValueA VerQueryValue; - alias VerFindFileA VerFindFile; - alias VerInstallFileA VerInstallFile; - alias GetFileVersionInfoSizeA GetFileVersionInfoSize; - alias GetFileVersionInfoA GetFileVersionInfo; - alias VerLanguageNameA VerLanguageName; - alias VerQueryValueA VerQueryValue; + alias VerQueryValueA VerQueryValue; + alias VerFindFileA VerFindFile; + alias VerInstallFileA VerInstallFile; + alias GetFileVersionInfoSizeA GetFileVersionInfoSize; + alias GetFileVersionInfoA GetFileVersionInfo; + alias VerLanguageNameA VerLanguageName; + alias VerQueryValueA VerQueryValue; } diff --git a/src/core/sys/windows/ws2tcpip.d b/src/core/sys/windows/ws2tcpip.d index 9d084f87a5..1b711a6902 100644 --- a/src/core/sys/windows/ws2tcpip.d +++ b/src/core/sys/windows/ws2tcpip.d @@ -16,34 +16,34 @@ import core.sys.windows.windef; import core.sys.windows.winsock2; enum { - IP_OPTIONS = 1, - - IP_HDRINCL = 2, - IP_TOS = 3, - IP_TTL = 4, - IP_MULTICAST_IF = 9, - IP_MULTICAST_TTL = 10, - IP_MULTICAST_LOOP = 11, - IP_ADD_MEMBERSHIP = 12, - IP_DROP_MEMBERSHIP = 13, - IP_DONTFRAGMENT = 14, - IP_ADD_SOURCE_MEMBERSHIP = 15, - IP_DROP_SOURCE_MEMBERSHIP = 16, - IP_BLOCK_SOURCE = 17, - IP_UNBLOCK_SOURCE = 18, - IP_PKTINFO = 19 + IP_OPTIONS = 1, + + IP_HDRINCL = 2, + IP_TOS = 3, + IP_TTL = 4, + IP_MULTICAST_IF = 9, + IP_MULTICAST_TTL = 10, + IP_MULTICAST_LOOP = 11, + IP_ADD_MEMBERSHIP = 12, + IP_DROP_MEMBERSHIP = 13, + IP_DONTFRAGMENT = 14, + IP_ADD_SOURCE_MEMBERSHIP = 15, + IP_DROP_SOURCE_MEMBERSHIP = 16, + IP_BLOCK_SOURCE = 17, + IP_UNBLOCK_SOURCE = 18, + IP_PKTINFO = 19 } enum { - IPV6_UNICAST_HOPS = 4, - IPV6_MULTICAST_IF = 9, - IPV6_MULTICAST_HOPS = 10, - IPV6_MULTICAST_LOOP = 11, - IPV6_ADD_MEMBERSHIP = 12, - IPV6_DROP_MEMBERSHIP = 13, - IPV6_JOIN_GROUP = IPV6_ADD_MEMBERSHIP, - IPV6_LEAVE_GROUP = IPV6_DROP_MEMBERSHIP, - IPV6_PKTINFO = 19 + IPV6_UNICAST_HOPS = 4, + IPV6_MULTICAST_IF = 9, + IPV6_MULTICAST_HOPS = 10, + IPV6_MULTICAST_LOOP = 11, + IPV6_ADD_MEMBERSHIP = 12, + IPV6_DROP_MEMBERSHIP = 13, + IPV6_JOIN_GROUP = IPV6_ADD_MEMBERSHIP, + IPV6_LEAVE_GROUP = IPV6_DROP_MEMBERSHIP, + IPV6_PKTINFO = 19 } const IP_DEFAULT_MULTICAST_TTL = 1; @@ -55,11 +55,11 @@ const TCP_EXPEDITED_1122 = 2; const UDP_NOCHECKSUM = 1; enum { - IFF_UP = 1, - IFF_BROADCAST = 2, - IFF_LOOPBACK = 4, - IFF_POINTTOPOINT = 8, - IFF_MULTICAST = 16 + IFF_UP = 1, + IFF_BROADCAST = 2, + IFF_LOOPBACK = 4, + IFF_POINTTOPOINT = 8, + IFF_MULTICAST = 16 } const SIO_GET_INTERFACE_LIST = _IOR!('t', 127, u_long); @@ -91,48 +91,48 @@ const EAI_SERVICE = WSATYPE_NOT_FOUND; const EAI_SOCKTYPE = WSAESOCKTNOSUPPORT; struct ip_mreq { - IN_ADDR imr_multiaddr; - IN_ADDR imr_interface; + IN_ADDR imr_multiaddr; + IN_ADDR imr_interface; } struct ip_mreq_source { - IN_ADDR imr_multiaddr; - IN_ADDR imr_sourceaddr; - IN_ADDR imr_interface; + IN_ADDR imr_multiaddr; + IN_ADDR imr_sourceaddr; + IN_ADDR imr_interface; } struct ip_msfilter { - IN_ADDR imsf_multiaddr; - IN_ADDR imsf_interface; - u_long imsf_fmode; - u_long imsf_numsrc; - IN_ADDR[1] imsf_slist; + IN_ADDR imsf_multiaddr; + IN_ADDR imsf_interface; + u_long imsf_fmode; + u_long imsf_numsrc; + IN_ADDR[1] imsf_slist; } template IP_MSFILTER_SIZE(ULONG numsrc) { - const DWORD IP_MSFILTER_SIZE = ip_msfilter.sizeof - IN_ADDR.sizeof + numsrc * IN_ADDR.sizeof; + const DWORD IP_MSFILTER_SIZE = ip_msfilter.sizeof - IN_ADDR.sizeof + numsrc * IN_ADDR.sizeof; } struct IN_PKTINFO { - IN_ADDR ipi_addr; - UINT ipi_ifindex; + IN_ADDR ipi_addr; + UINT ipi_ifindex; } struct IN6_ADDR { - union { - u_char[16] _S6_u8; - u_short[8] _S6_u16; - u_long[4] _S6_u32; - } + union { + u_char[16] _S6_u8; + u_short[8] _S6_u16; + u_long[4] _S6_u32; + } } alias IN6_ADDR* PIN6_ADDR, LPIN6_ADDR; struct SOCKADDR_IN6 { - short sin6_family; - u_short sin6_port; - u_long sin6_flowinfo; - IN6_ADDR sin6_addr; - u_long sin6_scope_id; + short sin6_family; + u_short sin6_port; + u_long sin6_flowinfo; + IN6_ADDR sin6_addr; + u_long sin6_scope_id; }; alias SOCKADDR_IN6* PSOCKADDR_IN6, LPSOCKADDR_IN6; @@ -144,113 +144,113 @@ extern IN6_ADDR in6addr_loopback; (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0) #define IN6_IS_ADDR_UNSPECIFIED(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] == 0)) + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] == 0)) #define IN6_IS_ADDR_LOOPBACK(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] == 0x01000000)) + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] == 0x01000000)) #define IN6_IS_ADDR_MULTICAST(_addr) (((const u_char *) (_addr))[0] == 0xff) #define IN6_IS_ADDR_LINKLOCAL(_addr) \ - ( (((const u_char *)(_addr))[0] == 0xfe) \ - && ((((const u_char *)(_addr))[1] & 0xc0) == 0x80)) + ( (((const u_char *)(_addr))[0] == 0xfe) \ + && ((((const u_char *)(_addr))[1] & 0xc0) == 0x80)) #define IN6_IS_ADDR_SITELOCAL(_addr) \ - ( (((const u_char *)(_addr))[0] == 0xfe) \ - && ((((const u_char *)(_addr))[1] & 0xc0) == 0xc0)) + ( (((const u_char *)(_addr))[0] == 0xfe) \ + && ((((const u_char *)(_addr))[1] & 0xc0) == 0xc0)) #define IN6_IS_ADDR_V4MAPPED(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0xffff0000)) + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0xffff0000)) #define IN6_IS_ADDR_V4COMPAT(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] != 0) \ - && (((const u_long *)(_addr))[3] != 0x01000000)) + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] != 0) \ + && (((const u_long *)(_addr))[3] != 0x01000000)) #define IN6_IS_ADDR_MC_NODELOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) #define IN6_IS_ADDR_MC_LINKLOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST (_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x2)) + ( IN6_IS_ADDR_MULTICAST (_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x2)) #define IN6_IS_ADDR_MC_SITELOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x5)) + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x5)) #define IN6_IS_ADDR_MC_ORGLOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x8)) + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0x8)) #define IN6_IS_ADDR_MC_GLOBAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0xe)) + ( IN6_IS_ADDR_MULTICAST(_addr) \ + && ((((const u_char *)(_addr))[1] & 0xf) == 0xe)) +/ alias int socklen_t; struct IPV6_MREG { - IN6_ADDR ipv6mr_multiaddr; - uint ipv6mr_interface; + IN6_ADDR ipv6mr_multiaddr; + uint ipv6mr_interface; } struct IN6_PKTINFO { - IN6_ADDR ipi6_addr; - UINT ipi6_ifindex; + IN6_ADDR ipi6_addr; + UINT ipi6_ifindex; } struct addrinfo { - int ai_flags; - int ai_family; - int ai_socktype; - int ai_protocol; - size_t ai_addrlen; - char* ai_canonname; - SOCKADDR* ai_addr; - addrinfo* ai_next; + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + char* ai_canonname; + SOCKADDR* ai_addr; + addrinfo* ai_next; } extern(Windows) { - static if (_WIN32_WINNT >= 0x501) { - void freeaddrinfo(addrinfo*); - int getaddrinfo (const(char)*, const(char)*, const(addrinfo)*, addrinfo**); - int getnameinfo(const(SOCKADDR)*, socklen_t, char*, DWORD, char*, DWORD, int); - } + static if (_WIN32_WINNT >= 0x501) { + void freeaddrinfo(addrinfo*); + int getaddrinfo (const(char)*, const(char)*, const(addrinfo)*, addrinfo**); + int getnameinfo(const(SOCKADDR)*, socklen_t, char*, DWORD, char*, DWORD, int); + } } /+ TODO static __inline char* gai_strerrorA(int ecode) { - static char[1024+1] message; - DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS - | FORMAT_MESSAGE_MAX_WIDTH_MASK; - DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); + static char[1024+1] message; + DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS + | FORMAT_MESSAGE_MAX_WIDTH_MASK; + DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL); - return message; + return message; } static __inline WCHAR* gai_strerrorW(int ecode) { - static WCHAR[1024+1] message; - DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS - | FORMAT_MESSAGE_MAX_WIDTH_MASK; - DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); + static WCHAR[1024+1] message; + DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS + | FORMAT_MESSAGE_MAX_WIDTH_MASK; + DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL); - return message; + return message; } #ifdef UNICODE #define gai_strerror gai_strerrorW @@ -260,21 +260,21 @@ gai_strerrorW(int ecode) +/ extern(Windows) { - INT getnameinfo(SOCKADDR* pSockaddr, socklen_t SockaddrLength, - PCHAR pNodeBuffer, DWORD NodeBufferSize, PCHAR pServiceBuffer, - DWORD ServiceBufferSize, INT Flags); - - static if (_WIN32_WINNT >= 0x502) { - INT GetNameInfoW(SOCKADDR* pSockaddr, socklen_t SockaddrLength, - PWCHAR pNodeBuffer, DWORD NodeBufferSize, PWCHAR pServiceBuffer, - DWORD ServiceBufferSize, INT Flags); - - alias getnameinfo GetNameInfoA; - - version(Unicode) { - alias GetNameInfoW GetNameInfo; - } else { - alias GetNameInfoA GetNameInfo; - } - } + INT getnameinfo(SOCKADDR* pSockaddr, socklen_t SockaddrLength, + PCHAR pNodeBuffer, DWORD NodeBufferSize, PCHAR pServiceBuffer, + DWORD ServiceBufferSize, INT Flags); + + static if (_WIN32_WINNT >= 0x502) { + INT GetNameInfoW(SOCKADDR* pSockaddr, socklen_t SockaddrLength, + PWCHAR pNodeBuffer, DWORD NodeBufferSize, PWCHAR pServiceBuffer, + DWORD ServiceBufferSize, INT Flags); + + alias getnameinfo GetNameInfoA; + + version(Unicode) { + alias GetNameInfoW GetNameInfo; + } else { + alias GetNameInfoA GetNameInfo; + } + } } diff --git a/src/core/sys/windows/wtsapi32.d b/src/core/sys/windows/wtsapi32.d index 34a5255dfb..7838c542fd 100644 --- a/src/core/sys/windows/wtsapi32.d +++ b/src/core/sys/windows/wtsapi32.d @@ -12,417 +12,417 @@ private import core.sys.windows.w32api; import core.sys.windows.windef; enum { - WTS_CURRENT_SERVER = null, - WTS_CURRENT_SERVER_HANDLE = null, - WTS_CURRENT_SERVER_NAME = null + WTS_CURRENT_SERVER = null, + WTS_CURRENT_SERVER_HANDLE = null, + WTS_CURRENT_SERVER_NAME = null } enum DWORD WTS_CURRENT_SESSION = cast(DWORD) -1; enum { - IDTIMEOUT = 32000, - IDASYNC = 32001 + IDTIMEOUT = 32000, + IDASYNC = 32001 } enum { - WTS_WSD_LOGOFF = 0x01, - WTS_WSD_SHUTDOWN = 0x02, - WTS_WSD_REBOOT = 0x04, - WTS_WSD_POWEROFF = 0x08, - WTS_WSD_FASTREBOOT = 0x10 + WTS_WSD_LOGOFF = 0x01, + WTS_WSD_SHUTDOWN = 0x02, + WTS_WSD_REBOOT = 0x04, + WTS_WSD_POWEROFF = 0x08, + WTS_WSD_FASTREBOOT = 0x10 } enum WTS_CONNECTSTATE_CLASS { - WTSActive, - WTSConnected, - WTSConnectQuery, - WTSShadow, - WTSDisconnected, - WTSIdle, - WTSListen, - WTSReset, - WTSDown, - WTSInit + WTSActive, + WTSConnected, + WTSConnectQuery, + WTSShadow, + WTSDisconnected, + WTSIdle, + WTSListen, + WTSReset, + WTSDown, + WTSInit } struct WTS_SERVER_INFOW { - LPWSTR pServerName; + LPWSTR pServerName; } alias WTS_SERVER_INFOW* PWTS_SERVER_INFOW; struct WTS_SERVER_INFOA { - LPSTR pServerName; + LPSTR pServerName; } alias WTS_SERVER_INFOA* PWTS_SERVER_INFOA; version(Unicode) { - alias WTS_SERVER_INFOW WTS_SERVER_INFO; - alias PWTS_SERVER_INFOW PWTS_SERVER_INFO; + alias WTS_SERVER_INFOW WTS_SERVER_INFO; + alias PWTS_SERVER_INFOW PWTS_SERVER_INFO; } else { - alias WTS_SERVER_INFOA WTS_SERVER_INFO; - alias PWTS_SERVER_INFOA PWTS_SERVER_INFO; + alias WTS_SERVER_INFOA WTS_SERVER_INFO; + alias PWTS_SERVER_INFOA PWTS_SERVER_INFO; } struct WTS_SESSION_INFOW { - DWORD SessionId; - LPWSTR pWinStationName; - WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + LPWSTR pWinStationName; + WTS_CONNECTSTATE_CLASS State; } alias WTS_SESSION_INFOW* PWTS_SESSION_INFOW; struct WTS_SESSION_INFOA { - DWORD SessionId; - LPSTR pWinStationName; - WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + LPSTR pWinStationName; + WTS_CONNECTSTATE_CLASS State; } alias WTS_SESSION_INFOA* PWTS_SESSION_INFOA; version(Unicode) { - alias WTS_SESSION_INFOW WTS_SESSION_INFO; - alias PWTS_SESSION_INFOW PWTS_SESSION_INFO; + alias WTS_SESSION_INFOW WTS_SESSION_INFO; + alias PWTS_SESSION_INFOW PWTS_SESSION_INFO; } else { - alias WTS_SESSION_INFOA WTS_SESSION_INFO; - alias PWTS_SESSION_INFOA PWTS_SESSION_INFO; + alias WTS_SESSION_INFOA WTS_SESSION_INFO; + alias PWTS_SESSION_INFOA PWTS_SESSION_INFO; } struct WTS_PROCESS_INFOW { - DWORD SessionId; - DWORD ProcessId; - LPWSTR pProcessName; - PSID pUserSid; + DWORD SessionId; + DWORD ProcessId; + LPWSTR pProcessName; + PSID pUserSid; } alias WTS_PROCESS_INFOW* PWTS_PROCESS_INFOW; struct WTS_PROCESS_INFOA { - DWORD SessionId; - DWORD ProcessId; - LPSTR pProcessName; - PSID pUserSid; + DWORD SessionId; + DWORD ProcessId; + LPSTR pProcessName; + PSID pUserSid; } alias WTS_PROCESS_INFOA* PWTS_PROCESS_INFOA; version(Unicode) { - alias WTS_PROCESS_INFOW WTS_PROCESS_INFO; - alias PWTS_PROCESS_INFOW PWTS_PROCESS_INFO; + alias WTS_PROCESS_INFOW WTS_PROCESS_INFO; + alias PWTS_PROCESS_INFOW PWTS_PROCESS_INFO; } else { - alias WTS_PROCESS_INFOA WTS_PROCESS_INFO; - alias PWTS_PROCESS_INFOA PWTS_PROCESS_INFO; + alias WTS_PROCESS_INFOA WTS_PROCESS_INFO; + alias PWTS_PROCESS_INFOA PWTS_PROCESS_INFO; } enum { - WTS_PROTOCOL_TYPE_CONSOLE, - WTS_PROTOCOL_TYPE_ICA, - WTS_PROTOCOL_TYPE_RDP + WTS_PROTOCOL_TYPE_CONSOLE, + WTS_PROTOCOL_TYPE_ICA, + WTS_PROTOCOL_TYPE_RDP } enum WTS_INFO_CLASS { - WTSInitialProgram, - WTSApplicationName, - WTSWorkingDirectory, - WTSOEMId, - WTSSessionId, - WTSUserName, - WTSWinStationName, - WTSDomainName, - WTSConnectState, - WTSClientBuildNumber, - WTSClientName, - WTSClientDirectory, - WTSClientProductId, - WTSClientHardwareId, - WTSClientAddress, - WTSClientDisplay, - WTSClientProtocolType, - WTSIdleTime, - WTSLogonTime, - WTSIncomingBytes, - WTSOutgoingBytes, - WTSIncomingFrames, - WTSOutgoingFrames, - WTSClientInfo, - WTSSessionInfo, // = 24 + WTSInitialProgram, + WTSApplicationName, + WTSWorkingDirectory, + WTSOEMId, + WTSSessionId, + WTSUserName, + WTSWinStationName, + WTSDomainName, + WTSConnectState, + WTSClientBuildNumber, + WTSClientName, + WTSClientDirectory, + WTSClientProductId, + WTSClientHardwareId, + WTSClientAddress, + WTSClientDisplay, + WTSClientProtocolType, + WTSIdleTime, + WTSLogonTime, + WTSIncomingBytes, + WTSOutgoingBytes, + WTSIncomingFrames, + WTSOutgoingFrames, + WTSClientInfo, + WTSSessionInfo, // = 24 } struct WTS_CLIENT_ADDRESS { - DWORD AddressFamily; - BYTE[20] Address; + DWORD AddressFamily; + BYTE[20] Address; } alias WTS_CLIENT_ADDRESS* PWTS_CLIENT_ADDRESS; struct WTS_CLIENT_DISPLAY { - DWORD HorizontalResolution; - DWORD VerticalResolution; - DWORD ColorDepth; + DWORD HorizontalResolution; + DWORD VerticalResolution; + DWORD ColorDepth; } alias WTS_CLIENT_DISPLAY* PWTS_CLIENT_DISPLAY; enum WTS_CONFIG_CLASS { - WTSUserConfigInitialProgram, - WTSUserConfigWorkingDirectory, - WTSUserConfigfInheritInitialProgram, - WTSUserConfigfAllowLogonTerminalServer, - WTSUserConfigTimeoutSettingsConnections, - WTSUserConfigTimeoutSettingsDisconnections, - WTSUserConfigTimeoutSettingsIdle, - WTSUserConfigfDeviceClientDrives, - WTSUserConfigfDeviceClientPrinters, - WTSUserConfigfDeviceClientDefaultPrinter, - WTSUserConfigBrokenTimeoutSettings, - WTSUserConfigReconnectSettings, - WTSUserConfigModemCallbackSettings, - WTSUserConfigModemCallbackPhoneNumber, - WTSUserConfigShadowingSettings, - WTSUserConfigTerminalServerProfilePath, - WTSUserConfigTerminalServerHomeDir, - WTSUserConfigTerminalServerHomeDirDrive, - WTSUserConfigfTerminalServerRemoteHomeDir + WTSUserConfigInitialProgram, + WTSUserConfigWorkingDirectory, + WTSUserConfigfInheritInitialProgram, + WTSUserConfigfAllowLogonTerminalServer, + WTSUserConfigTimeoutSettingsConnections, + WTSUserConfigTimeoutSettingsDisconnections, + WTSUserConfigTimeoutSettingsIdle, + WTSUserConfigfDeviceClientDrives, + WTSUserConfigfDeviceClientPrinters, + WTSUserConfigfDeviceClientDefaultPrinter, + WTSUserConfigBrokenTimeoutSettings, + WTSUserConfigReconnectSettings, + WTSUserConfigModemCallbackSettings, + WTSUserConfigModemCallbackPhoneNumber, + WTSUserConfigShadowingSettings, + WTSUserConfigTerminalServerProfilePath, + WTSUserConfigTerminalServerHomeDir, + WTSUserConfigTerminalServerHomeDirDrive, + WTSUserConfigfTerminalServerRemoteHomeDir } enum { - WTS_EVENT_NONE = 0x0, - WTS_EVENT_CREATE = 0x1, - WTS_EVENT_DELETE = 0x2, - WTS_EVENT_RENAME = 0x4, - WTS_EVENT_CONNECT = 0x8, - WTS_EVENT_DISCONNECT = 0x10, - WTS_EVENT_LOGON = 0x20, - WTS_EVENT_LOGOFF = 0x40, - WTS_EVENT_STATECHANGE = 0x80, - WTS_EVENT_LICENSE = 0x100, - WTS_EVENT_ALL = 0x7fffffff, - WTS_EVENT_FLUSH = 0x80000000 + WTS_EVENT_NONE = 0x0, + WTS_EVENT_CREATE = 0x1, + WTS_EVENT_DELETE = 0x2, + WTS_EVENT_RENAME = 0x4, + WTS_EVENT_CONNECT = 0x8, + WTS_EVENT_DISCONNECT = 0x10, + WTS_EVENT_LOGON = 0x20, + WTS_EVENT_LOGOFF = 0x40, + WTS_EVENT_STATECHANGE = 0x80, + WTS_EVENT_LICENSE = 0x100, + WTS_EVENT_ALL = 0x7fffffff, + WTS_EVENT_FLUSH = 0x80000000 } enum WTS_VIRTUAL_CLASS { - WTSVirtualClientData, - WTSVirtualFileHandle + WTSVirtualClientData, + WTSVirtualFileHandle } version(Unicode) { - alias WTSEnumerateServersW WTSEnumerateServers; - alias WTSOpenServerW WTSOpenServer; - alias WTSEnumerateSessionsW WTSEnumerateSessions; - alias WTSEnumerateProcessesW WTSEnumerateProcesses; - alias WTSQuerySessionInformationW WTSQuerySessionInformation; - alias WTSQueryUserConfigW WTSQueryUserConfig; - alias WTSSetUserConfigW WTSSetUserConfig; - alias WTSSendMessageW WTSSendMessage; + alias WTSEnumerateServersW WTSEnumerateServers; + alias WTSOpenServerW WTSOpenServer; + alias WTSEnumerateSessionsW WTSEnumerateSessions; + alias WTSEnumerateProcessesW WTSEnumerateProcesses; + alias WTSQuerySessionInformationW WTSQuerySessionInformation; + alias WTSQueryUserConfigW WTSQueryUserConfig; + alias WTSSetUserConfigW WTSSetUserConfig; + alias WTSSendMessageW WTSSendMessage; } else { - alias WTSEnumerateServersA WTSEnumerateServers; - alias WTSOpenServerA WTSOpenServer; - alias WTSEnumerateSessionsA WTSEnumerateSessions; - alias WTSEnumerateProcessesA WTSEnumerateProcesses; - alias WTSQuerySessionInformationA WTSQuerySessionInformation; - alias WTSQueryUserConfigA WTSQueryUserConfig; - alias WTSSetUserConfigA WTSSetUserConfig; - alias WTSSendMessageA WTSSendMessage; + alias WTSEnumerateServersA WTSEnumerateServers; + alias WTSOpenServerA WTSOpenServer; + alias WTSEnumerateSessionsA WTSEnumerateSessions; + alias WTSEnumerateProcessesA WTSEnumerateProcesses; + alias WTSQuerySessionInformationA WTSQuerySessionInformation; + alias WTSQueryUserConfigA WTSQueryUserConfig; + alias WTSSetUserConfigA WTSSetUserConfig; + alias WTSSendMessageA WTSSendMessage; } extern(Windows) { - WINBOOL WTSEnumerateServersW(LPWSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOW* ppServerInfo, DWORD* pCount); - WINBOOL WTSEnumerateServersA(LPSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOA* ppServerInfo, DWORD* pCount); - HANDLE WTSOpenServerW(LPWSTR pServerName); - HANDLE WTSOpenServerA(LPSTR pServerName); - VOID WTSCloseServer(HANDLE hServer); - WINBOOL WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOW* ppSessionInfo, DWORD* pCount); - WINBOOL WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOA* ppSessionInfo, DWORD* pCount); - WINBOOL WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount); - WINBOOL WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOA* ppProcessInfo, DWORD* pCount); - WINBOOL WTSTerminateProcess(HANDLE hServer, DWORD ProcessId, DWORD ExitCode); - WINBOOL WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); - WINBOOL WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPSTR* ppBuffer, DWORD* pBytesReturned); - WINBOOL WTSQueryUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); - WINBOOL WTSQueryUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR* ppBuffer, DWORD* pBytesReturned); - WINBOOL WTSSetUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR pBuffer, DWORD DataLength); - WINBOOL WTSSetUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR pBuffer, DWORD DataLength); - WINBOOL WTSSendMessageW(HANDLE hServer, DWORD SessionId, LPWSTR pTitle, DWORD TitleLength, LPWSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); - WINBOOL WTSSendMessageA(HANDLE hServer, DWORD SessionId, LPSTR pTitle, DWORD TitleLength, LPSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); - WINBOOL WTSDisconnectSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); - WINBOOL WTSLogoffSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); - WINBOOL WTSShutdownSystem(HANDLE hServer, DWORD ShutdownFlag); - WINBOOL WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags); - HANDLE WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId, LPSTR pVirtualName); - WINBOOL WTSVirtualChannelClose(HANDLE hChannelHandle); - WINBOOL WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut, PCHAR Buffer, ULONG BufferSize, PULONG pBytesRead); - WINBOOL WTSVirtualChannelWrite(HANDLE hChannelHandle, PCHAR Buffer, ULONG Length, PULONG pBytesWritten); - WINBOOL WTSVirtualChannelPurgeInput(HANDLE hChannelHandle); - WINBOOL WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle); - WINBOOL WTSVirtualChannelQuery(HANDLE hChannelHandle, WTS_VIRTUAL_CLASS, PVOID* ppBuffer, DWORD* pBytesReturned); - VOID WTSFreeMemory(PVOID pMemory); - - WINBOOL WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags); - WINBOOL WTSUnRegisterSessionNotification(HWND hWnd); - WINBOOL WTSQueryUserToken(ULONG SessionId, PHANDLE phToken); + WINBOOL WTSEnumerateServersW(LPWSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOW* ppServerInfo, DWORD* pCount); + WINBOOL WTSEnumerateServersA(LPSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOA* ppServerInfo, DWORD* pCount); + HANDLE WTSOpenServerW(LPWSTR pServerName); + HANDLE WTSOpenServerA(LPSTR pServerName); + VOID WTSCloseServer(HANDLE hServer); + WINBOOL WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOW* ppSessionInfo, DWORD* pCount); + WINBOOL WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOA* ppSessionInfo, DWORD* pCount); + WINBOOL WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount); + WINBOOL WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOA* ppProcessInfo, DWORD* pCount); + WINBOOL WTSTerminateProcess(HANDLE hServer, DWORD ProcessId, DWORD ExitCode); + WINBOOL WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQueryUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQueryUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSSetUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR pBuffer, DWORD DataLength); + WINBOOL WTSSetUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR pBuffer, DWORD DataLength); + WINBOOL WTSSendMessageW(HANDLE hServer, DWORD SessionId, LPWSTR pTitle, DWORD TitleLength, LPWSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); + WINBOOL WTSSendMessageA(HANDLE hServer, DWORD SessionId, LPSTR pTitle, DWORD TitleLength, LPSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); + WINBOOL WTSDisconnectSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); + WINBOOL WTSLogoffSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); + WINBOOL WTSShutdownSystem(HANDLE hServer, DWORD ShutdownFlag); + WINBOOL WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags); + HANDLE WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId, LPSTR pVirtualName); + WINBOOL WTSVirtualChannelClose(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut, PCHAR Buffer, ULONG BufferSize, PULONG pBytesRead); + WINBOOL WTSVirtualChannelWrite(HANDLE hChannelHandle, PCHAR Buffer, ULONG Length, PULONG pBytesWritten); + WINBOOL WTSVirtualChannelPurgeInput(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelQuery(HANDLE hChannelHandle, WTS_VIRTUAL_CLASS, PVOID* ppBuffer, DWORD* pBytesReturned); + VOID WTSFreeMemory(PVOID pMemory); + + WINBOOL WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags); + WINBOOL WTSUnRegisterSessionNotification(HWND hWnd); + WINBOOL WTSQueryUserToken(ULONG SessionId, PHANDLE phToken); } enum { - NOTIFY_FOR_ALL_SESSIONS = 1, - NOTIFY_FOR_THIS_SESSION = 0 + NOTIFY_FOR_ALL_SESSIONS = 1, + NOTIFY_FOR_THIS_SESSION = 0 } enum { - USERNAME_LENGTH = 20, - CLIENTNAME_LENGTH = 20, - CLIENTADDRESS_LENGTH = 30, - WINSTATIONNAME_LENGTH = 32, - DOMAIN_LENGTH = 17 + USERNAME_LENGTH = 20, + CLIENTNAME_LENGTH = 20, + CLIENTADDRESS_LENGTH = 30, + WINSTATIONNAME_LENGTH = 32, + DOMAIN_LENGTH = 17 } static if (_WIN32_WINNT >= 0x600) { - struct WTSCLIENTW { - WCHAR ClientName[CLIENTNAME_LENGTH + 1]; - WCHAR Domain[DOMAIN_LENGTH + 1]; - WCHAR UserName[USERNAME_LENGTH + 1]; - WCHAR WorkDirectory[MAX_PATH + 1]; - WCHAR InitialProgram[MAX_PATH + 1]; - BYTE EncryptionLevel; - ULONG ClientAddressFamily; - USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; - USHORT HRes; - USHORT VRes; - USHORT ColorDepth; - WCHAR ClientDirectory[MAX_PATH + 1]; - ULONG ClientBuildNumber; - ULONG ClientHardwareId; - USHORT ClientProductId; - USHORT OutBufCountHost; - USHORT OutBufCountClient; - USHORT OutBufLength; - WCHAR DeviceId[MAX_PATH + 1]; - } - alias WTSCLIENTW* PWTSCLIENTW; - - struct WTSCLIENTA { - CHAR ClientName[CLIENTNAME_LENGTH + 1]; - CHAR Domain[DOMAIN_LENGTH + 1 ]; - CHAR UserName[USERNAME_LENGTH + 1]; - CHAR WorkDirectory[MAX_PATH + 1]; - CHAR InitialProgram[MAX_PATH + 1]; - BYTE EncryptionLevel; - ULONG ClientAddressFamily; - USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; - USHORT HRes; - USHORT VRes; - USHORT ColorDepth; - CHAR ClientDirectory[MAX_PATH + 1]; - ULONG ClientBuildNumber; - ULONG ClientHardwareId; - USHORT ClientProductId; - USHORT OutBufCountHost; - USHORT OutBufCountClient; - USHORT OutBufLength; - CHAR DeviceId[MAX_PATH + 1]; - } - alias WTSCLIENTA* PWTSCLIENTA; - - version(Unicode) { - alias WTSCLIENTW WTSCLIENT; - alias PWTSCLIENTW PWTSCLIENT; - } else { - alias WTSCLIENTA WTSCLIENT; - alias PWTSCLIENTA PWTSCLIENT; - } - - struct WTSINFOW { - WTS_CONNECTSTATE_CLASS State; - DWORD SessionId; - DWORD IncomingBytes; - DWORD OutgoingBytes; - DWORD IncomingCompressedBytes; - DWORD OutgoingCompressedBytes; - WCHAR WinStationName[WINSTATIONNAME_LENGTH]; - WCHAR Domain[DOMAIN_LENGTH]; - WCHAR UserName[USERNAME_LENGTH+1]; - LARGE_INTEGER ConnectTime; - LARGE_INTEGER DisconnectTime; - LARGE_INTEGER LastInputTime; - LARGE_INTEGER LogonTime; - LARGE_INTEGER CurrentTime; - } - alias WTSINFOW* PWTSINFOW; - - struct WTSINFOA { - WTS_CONNECTSTATE_CLASS State; - DWORD SessionId; - DWORD IncomingBytes; - DWORD OutgoingBytes; - DWORD IncomingCompressedBytes; - DWORD OutgoingCompressedBytes; - CHAR WinStationName[WINSTATIONNAME_LENGTH]; - CHAR Domain[DOMAIN_LENGTH]; - CHAR UserName[USERNAME_LENGTH+1]; - LARGE_INTEGER ConnectTime; - LARGE_INTEGER DisconnectTime; - LARGE_INTEGER LastInputTime; - LARGE_INTEGER LogonTime; - LARGE_INTEGER CurrentTime; - } - alias WTSINFOA* PWTSINFOA; - - version(Unicode) { - alias WTSINFOW WTSINFO; - alias PWTSINFOW PWTSINFO; - } else { - alias WTSINFOA WTSINFO; - alias PWTSINFOA PWTSINFO; - } - - extern(Windows) { - WINBOOL WTSConnectSessionA( - ULONG LogonId, - ULONG TargetLogonId, - PSTR pPassword, - WINBOOL bWait - ); - - WINBOOL WTSConnectSessionW( - ULONG LogonId, - ULONG TargetLogonId, - PWSTR pPassword, - WINBOOL bWait - ); - - WINBOOL WTSRegisterSessionNotificationEx( - HANDLE hServer, - HWND hWnd, - DWORD dwFlags - ); - - WINBOOL WTSStartRemoteControlSessionA( - LPSTR pTargetServerName, - ULONG TargetLogonId, - BYTE HotkeyVk, - USHORT HotkeyModifiers - ); - - WINBOOL WTSStartRemoteControlSessionW( - LPWSTR pTargetServerName, - ULONG TargetLogonId, - BYTE HotkeyVk, - USHORT HotkeyModifiers - ); - - version(Unicode) { - alias WTSStartRemoteControlSessionW WTSStartRemoteControlSession; - alias WTSConnectSessionW WTSConnectSession; - } else { - alias WTSStartRemoteControlSessionA WTSStartRemoteControlSession; - alias WTSConnectSessionA WTSConnectSession; - } - - WINBOOL WTSStopRemoteControlSession( - ULONG LogonId - ); - - WINBOOL WTSUnRegisterSessionNotificationEx( - HANDLE hServer, - HWND hWnd - ); - - HANDLE WTSVirtualChannelOpenEx( - DWORD SessionId, - LPSTR pVirtualName, - DWORD flags - ); - } /* extern(Windows) */ + struct WTSCLIENTW { + WCHAR ClientName[CLIENTNAME_LENGTH + 1]; + WCHAR Domain[DOMAIN_LENGTH + 1]; + WCHAR UserName[USERNAME_LENGTH + 1]; + WCHAR WorkDirectory[MAX_PATH + 1]; + WCHAR InitialProgram[MAX_PATH + 1]; + BYTE EncryptionLevel; + ULONG ClientAddressFamily; + USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; + USHORT HRes; + USHORT VRes; + USHORT ColorDepth; + WCHAR ClientDirectory[MAX_PATH + 1]; + ULONG ClientBuildNumber; + ULONG ClientHardwareId; + USHORT ClientProductId; + USHORT OutBufCountHost; + USHORT OutBufCountClient; + USHORT OutBufLength; + WCHAR DeviceId[MAX_PATH + 1]; + } + alias WTSCLIENTW* PWTSCLIENTW; + + struct WTSCLIENTA { + CHAR ClientName[CLIENTNAME_LENGTH + 1]; + CHAR Domain[DOMAIN_LENGTH + 1 ]; + CHAR UserName[USERNAME_LENGTH + 1]; + CHAR WorkDirectory[MAX_PATH + 1]; + CHAR InitialProgram[MAX_PATH + 1]; + BYTE EncryptionLevel; + ULONG ClientAddressFamily; + USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; + USHORT HRes; + USHORT VRes; + USHORT ColorDepth; + CHAR ClientDirectory[MAX_PATH + 1]; + ULONG ClientBuildNumber; + ULONG ClientHardwareId; + USHORT ClientProductId; + USHORT OutBufCountHost; + USHORT OutBufCountClient; + USHORT OutBufLength; + CHAR DeviceId[MAX_PATH + 1]; + } + alias WTSCLIENTA* PWTSCLIENTA; + + version(Unicode) { + alias WTSCLIENTW WTSCLIENT; + alias PWTSCLIENTW PWTSCLIENT; + } else { + alias WTSCLIENTA WTSCLIENT; + alias PWTSCLIENTA PWTSCLIENT; + } + + struct WTSINFOW { + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBytes; + WCHAR WinStationName[WINSTATIONNAME_LENGTH]; + WCHAR Domain[DOMAIN_LENGTH]; + WCHAR UserName[USERNAME_LENGTH+1]; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; + } + alias WTSINFOW* PWTSINFOW; + + struct WTSINFOA { + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBytes; + CHAR WinStationName[WINSTATIONNAME_LENGTH]; + CHAR Domain[DOMAIN_LENGTH]; + CHAR UserName[USERNAME_LENGTH+1]; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; + } + alias WTSINFOA* PWTSINFOA; + + version(Unicode) { + alias WTSINFOW WTSINFO; + alias PWTSINFOW PWTSINFO; + } else { + alias WTSINFOA WTSINFO; + alias PWTSINFOA PWTSINFO; + } + + extern(Windows) { + WINBOOL WTSConnectSessionA( + ULONG LogonId, + ULONG TargetLogonId, + PSTR pPassword, + WINBOOL bWait + ); + + WINBOOL WTSConnectSessionW( + ULONG LogonId, + ULONG TargetLogonId, + PWSTR pPassword, + WINBOOL bWait + ); + + WINBOOL WTSRegisterSessionNotificationEx( + HANDLE hServer, + HWND hWnd, + DWORD dwFlags + ); + + WINBOOL WTSStartRemoteControlSessionA( + LPSTR pTargetServerName, + ULONG TargetLogonId, + BYTE HotkeyVk, + USHORT HotkeyModifiers + ); + + WINBOOL WTSStartRemoteControlSessionW( + LPWSTR pTargetServerName, + ULONG TargetLogonId, + BYTE HotkeyVk, + USHORT HotkeyModifiers + ); + + version(Unicode) { + alias WTSStartRemoteControlSessionW WTSStartRemoteControlSession; + alias WTSConnectSessionW WTSConnectSession; + } else { + alias WTSStartRemoteControlSessionA WTSStartRemoteControlSession; + alias WTSConnectSessionA WTSConnectSession; + } + + WINBOOL WTSStopRemoteControlSession( + ULONG LogonId + ); + + WINBOOL WTSUnRegisterSessionNotificationEx( + HANDLE hServer, + HWND hWnd + ); + + HANDLE WTSVirtualChannelOpenEx( + DWORD SessionId, + LPSTR pVirtualName, + DWORD flags + ); + } /* extern(Windows) */ } /* static if (_WIN32_WINNT >= 0x600) */ diff --git a/src/core/sys/windows/wtypes.d b/src/core/sys/windows/wtypes.d index 0532b1e3d0..3e65d70448 100644 --- a/src/core/sys/windows/wtypes.d +++ b/src/core/sys/windows/wtypes.d @@ -19,63 +19,63 @@ const ROTFLAGS_ALLOWANYCLIENT = 0x02; // also in winsock2.h struct BLOB { - ULONG cbSize; - BYTE* pBlobData; + ULONG cbSize; + BYTE* pBlobData; } alias BLOB* PBLOB, LPBLOB; enum DVASPECT { - DVASPECT_CONTENT = 1, - DVASPECT_THUMBNAIL = 2, - DVASPECT_ICON = 4, - DVASPECT_DOCPRINT = 8 + DVASPECT_CONTENT = 1, + DVASPECT_THUMBNAIL = 2, + DVASPECT_ICON = 4, + DVASPECT_DOCPRINT = 8 } enum DVASPECT2 { - DVASPECT_OPAQUE = 16, - DVASPECT_TRANSPARENT = 32 + DVASPECT_OPAQUE = 16, + DVASPECT_TRANSPARENT = 32 } enum STATFLAG { - STATFLAG_DEFAULT = 0, - STATFLAG_NONAME = 1 + STATFLAG_DEFAULT = 0, + STATFLAG_NONAME = 1 } enum MEMCTX { - MEMCTX_LOCAL = 0, - MEMCTX_TASK, - MEMCTX_SHARED, - MEMCTX_MACSYSTEM, - MEMCTX_UNKNOWN = -1, - MEMCTX_SAME = -2 + MEMCTX_LOCAL = 0, + MEMCTX_TASK, + MEMCTX_SHARED, + MEMCTX_MACSYSTEM, + MEMCTX_UNKNOWN = -1, + MEMCTX_SAME = -2 } enum MSHCTX { - MSHCTX_LOCAL = 0, - MSHCTX_NOSHAREDMEM, - MSHCTX_DIFFERENTMACHINE, - MSHCTX_INPROC, - MSHCTX_CROSSCTX + MSHCTX_LOCAL = 0, + MSHCTX_NOSHAREDMEM, + MSHCTX_DIFFERENTMACHINE, + MSHCTX_INPROC, + MSHCTX_CROSSCTX } enum CLSCTX { - CLSCTX_INPROC_SERVER = 1, - CLSCTX_INPROC_HANDLER = 2, - CLSCTX_LOCAL_SERVER = 4, - CLSCTX_INPROC_SERVER16 = 8, - CLSCTX_REMOTE_SERVER = 16 + CLSCTX_INPROC_SERVER = 1, + CLSCTX_INPROC_HANDLER = 2, + CLSCTX_LOCAL_SERVER = 4, + CLSCTX_INPROC_SERVER16 = 8, + CLSCTX_REMOTE_SERVER = 16 } enum MSHLFLAGS { - MSHLFLAGS_NORMAL, - MSHLFLAGS_TABLESTRONG, - MSHLFLAGS_TABLEWEAK + MSHLFLAGS_NORMAL, + MSHLFLAGS_TABLESTRONG, + MSHLFLAGS_TABLEWEAK } struct FLAGGED_WORD_BLOB { - uint fFlags; - uint clSize; - ushort[1] asData; + uint fFlags; + uint clSize; + ushort[1] asData; } alias WCHAR OLECHAR; @@ -96,103 +96,103 @@ mixin DECLARE_HANDLE!("HCONTEXT"); mixin DECLARE_HANDLE!("HMETAFILEPICT"); union CY { - struct { - uint Lo; - int Hi; - } - LONGLONG int64; + struct { + uint Lo; + int Hi; + } + LONGLONG int64; } alias double DATE; struct BSTRBLOB { - ULONG cbSize; - PBYTE pData; + ULONG cbSize; + PBYTE pData; } alias BSTRBLOB* LPBSTRBLOB; // Used only in the PROPVARIANT structure // According to the 2003 SDK, this should be in propidl.h, not here. struct CLIPDATA { - ULONG cbSize; - int ulClipFmt; - PBYTE pClipData; + ULONG cbSize; + int ulClipFmt; + PBYTE pClipData; } enum STGC { - STGC_DEFAULT, - STGC_OVERWRITE, - STGC_ONLYIFCURRENT, - STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE + STGC_DEFAULT, + STGC_OVERWRITE, + STGC_ONLYIFCURRENT, + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE } enum STGMOVE { - STGMOVE_MOVE, - STGMOVE_COPY, - STGMOVE_SHALLOWCOPY + STGMOVE_MOVE, + STGMOVE_COPY, + STGMOVE_SHALLOWCOPY } enum VARENUM { - VT_EMPTY, - VT_NULL, - VT_I2, - VT_I4, - VT_R4, - VT_R8, - VT_CY, - VT_DATE, - VT_BSTR, - VT_DISPATCH, - VT_ERROR, - VT_BOOL, - VT_VARIANT, - VT_UNKNOWN, - VT_DECIMAL, - VT_I1 = 16, - VT_UI1, - VT_UI2, - VT_UI4, - VT_I8, - VT_UI8, - VT_INT, - VT_UINT, - VT_VOID, - VT_HRESULT, - VT_PTR, - VT_SAFEARRAY, - VT_CARRAY, - VT_USERDEFINED, - VT_LPSTR, - VT_LPWSTR, - VT_RECORD = 36, - VT_INT_PTR = 37, - VT_UINT_PTR = 38, - VT_FILETIME = 64, - VT_BLOB, - VT_STREAM, - VT_STORAGE, - VT_STREAMED_OBJECT, - VT_STORED_OBJECT, - VT_BLOB_OBJECT, - VT_CF, - VT_CLSID, - VT_BSTR_BLOB = 0xfff, - VT_VECTOR = 0x1000, - VT_ARRAY = 0x2000, - VT_BYREF = 0x4000, - VT_RESERVED = 0x8000, - VT_ILLEGAL = 0xffff, - VT_ILLEGALMASKED = 0xfff, - VT_TYPEMASK = 0xfff + VT_EMPTY, + VT_NULL, + VT_I2, + VT_I4, + VT_R4, + VT_R8, + VT_CY, + VT_DATE, + VT_BSTR, + VT_DISPATCH, + VT_ERROR, + VT_BOOL, + VT_VARIANT, + VT_UNKNOWN, + VT_DECIMAL, + VT_I1 = 16, + VT_UI1, + VT_UI2, + VT_UI4, + VT_I8, + VT_UI8, + VT_INT, + VT_UINT, + VT_VOID, + VT_HRESULT, + VT_PTR, + VT_SAFEARRAY, + VT_CARRAY, + VT_USERDEFINED, + VT_LPSTR, + VT_LPWSTR, + VT_RECORD = 36, + VT_INT_PTR = 37, + VT_UINT_PTR = 38, + VT_FILETIME = 64, + VT_BLOB, + VT_STREAM, + VT_STORAGE, + VT_STREAMED_OBJECT, + VT_STORED_OBJECT, + VT_BLOB_OBJECT, + VT_CF, + VT_CLSID, + VT_BSTR_BLOB = 0xfff, + VT_VECTOR = 0x1000, + VT_ARRAY = 0x2000, + VT_BYREF = 0x4000, + VT_RESERVED = 0x8000, + VT_ILLEGAL = 0xffff, + VT_ILLEGALMASKED = 0xfff, + VT_TYPEMASK = 0xfff }; struct BYTE_SIZEDARR { - uint clSize; - byte* pData; + uint clSize; + byte* pData; } struct WORD_SIZEDARR { - uint clSize; - ushort* pData; + uint clSize; + ushort* pData; } struct DWORD_SIZEDARR { @@ -201,31 +201,31 @@ uint* pData; } struct HYPER_SIZEDARR { - uint clSize; - hyper* pData; + uint clSize; + hyper* pData; } alias double DOUBLE; struct DECIMAL { - USHORT wReserved; - union { - struct { - ubyte scale; // valid values are 0 to 28 - ubyte sign; // 0 for positive, DECIMAL_NEG for negatives. - enum ubyte DECIMAL_NEG = 0x80; - } - USHORT signscale; - } - ULONG Hi32; - union { - struct { - ULONG Lo32; - ULONG Mid32; - } - ULONGLONG Lo64; - } - // #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;} - void setZero() { Lo64 = 0; Hi32 = 0; signscale = 0; } + USHORT wReserved; + union { + struct { + ubyte scale; // valid values are 0 to 28 + ubyte sign; // 0 for positive, DECIMAL_NEG for negatives. + enum ubyte DECIMAL_NEG = 0x80; + } + USHORT signscale; + } + ULONG Hi32; + union { + struct { + ULONG Lo32; + ULONG Mid32; + } + ULONGLONG Lo64; + } + // #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;} + void setZero() { Lo64 = 0; Hi32 = 0; signscale = 0; } } From ca7c1603fd1a757b4e7696a1b1167841b6ebe293 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 20:05:18 +0000 Subject: [PATCH 114/768] Strip trailing whitespace --- src/core/sys/windows/ntsecpkg.d | 40 +++--- src/core/sys/windows/oaidl.d | 2 +- src/core/sys/windows/rpcdcep.d | 2 +- src/core/sys/windows/rpcndr.d | 2 +- src/core/sys/windows/sqltypes.d | 2 +- src/core/sys/windows/sspi.d | 42 +++--- src/core/sys/windows/tlhelp32.d | 4 +- src/core/sys/windows/vfw.d | 12 +- src/core/sys/windows/winber.d | 2 +- src/core/sys/windows/wincon.d | 6 +- src/core/sys/windows/winhttp.d | 236 ++++++++++++++++---------------- src/core/sys/windows/winldap.d | 2 +- src/core/sys/windows/winnt.d | 16 +-- src/core/sys/windows/winspool.d | 2 +- src/core/sys/windows/ws2tcpip.d | 6 +- 15 files changed, 188 insertions(+), 188 deletions(-) diff --git a/src/core/sys/windows/ntsecpkg.d b/src/core/sys/windows/ntsecpkg.d index 743b16511b..0af2d4680b 100644 --- a/src/core/sys/windows/ntsecpkg.d +++ b/src/core/sys/windows/ntsecpkg.d @@ -68,7 +68,7 @@ enum :ULONG{ enum LSA_TOKEN_INFORMATION_TYPE { LsaTokenInformationNull, LsaTokenInformationV1 -} +} alias LSA_TOKEN_INFORMATION_TYPE* PLSA_TOKEN_INFORMATION_TYPE; enum SECPKG_EXTENDED_INFORMATION_CLASS { @@ -76,13 +76,13 @@ enum SECPKG_EXTENDED_INFORMATION_CLASS SecpkgContextThunks, SecpkgMutualAuthLevel, SecpkgMaxInfo -} +} enum SECPKG_NAME_TYPE { SecNameSamCompatible, SecNameAlternateId, SecNameFlat, SecNameDN -} +} /* struct definitions for SSP/AP */ struct SECPKG_PRIMARY_CRED { @@ -100,18 +100,18 @@ struct SECPKG_PRIMARY_CRED { UNICODE_STRING Spare2; UNICODE_STRING Spare3; UNICODE_STRING Spare4; -} +} alias SECPKG_PRIMARY_CRED* PSECPKG_PRIMARY_CRED; struct SECPKG_SUPPLEMENTAL_CRED { UNICODE_STRING PackageName; ULONG CredentialSize; PUCHAR Credentials; -} +} alias SECPKG_SUPPLEMENTAL_CRED* PSECPKG_SUPPLEMENTAL_CRED; struct SECPKG_SUPPLEMENTAL_CRED_ARRAY { ULONG CredentialCount; SECPKG_SUPPLEMENTAL_CRED[1] Credentials; -} +} alias SECPKG_SUPPLEMENTAL_CRED_ARRAY* PSECPKG_SUPPLEMENTAL_CRED_ARRAY; struct SECPKG_PARAMETERS { ULONG Version; @@ -121,7 +121,7 @@ struct SECPKG_PARAMETERS { UNICODE_STRING DomainName; UNICODE_STRING DnsDomainName; GUID DomainGuid; -} +} alias SECPKG_PARAMETERS* PSECPKG_PARAMETERS,PSECPKG_EVENT_DOMAIN_CHANGE; alias SECPKG_PARAMETERS SECPKG_EVENT_DOMAIN_CHANGE; struct SECPKG_CLIENT_INFO { @@ -131,36 +131,36 @@ struct SECPKG_CLIENT_INFO { BOOLEAN HasTcbPrivilege; BOOLEAN Impersonating; BOOLEAN Restricted; -} +} alias SECPKG_CLIENT_INFO* PSECPKG_CLIENT_INFO; struct SECURITY_USER_DATA { SECURITY_STRING UserName; SECURITY_STRING LogonDomainName; SECURITY_STRING LogonServer; PSID pSid; -} +} alias SECURITY_USER_DATA* PSECURITY_USER_DATA,PSecurityUserData; alias SECURITY_USER_DATA SecurityUserData; struct SECPKG_GSS_INFO { ULONG EncodedIdLength; UCHAR[4] EncodedId; -} +} alias SECPKG_GSS_INFO* PSECPKG_GSS_INFO; struct SECPKG_CONTEXT_THUNKS { ULONG InfoLevelCount; ULONG[1] Levels; -} +} alias SECPKG_CONTEXT_THUNKS* PSECPKG_CONTEXT_THUNKS; struct SECPKG_MUTUAL_AUTH_LEVEL { ULONG MutualAuthLevel; -} +} alias SECPKG_MUTUAL_AUTH_LEVEL* PSECPKG_MUTUAL_AUTH_LEVEL; struct SECPKG_CALL_INFO { ULONG ProcessId; ULONG ThreadId; ULONG Attributes; ULONG CallCount; -} +} alias SECPKG_CALL_INFO* PSECPKG_CALL_INFO; struct SECPKG_EXTENDED_INFORMATION { SECPKG_EXTENDED_INFORMATION_CLASS Class; @@ -168,9 +168,9 @@ struct SECPKG_EXTENDED_INFORMATION { SECPKG_GSS_INFO GssInfo; SECPKG_CONTEXT_THUNKS ContextThunks; SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel; - } + } _Info Info; -} +} alias SECPKG_EXTENDED_INFORMATION* PSECPKG_EXTENDED_INFORMATION; /* callbacks implemented by SSP/AP dlls and called by the LSA */ @@ -257,7 +257,7 @@ struct SECPKG_DLL_FUNCTIONS { PLSA_ALLOCATE_LSA_HEAP AllocateHeap; PLSA_FREE_LSA_HEAP FreeHeap; PLSA_REGISTER_CALLBACK RegisterCallback; -} +} alias SECPKG_DLL_FUNCTIONS* PSECPKG_DLL_FUNCTIONS; struct LSA_DISPATCH_TABLE { PLSA_CREATE_LOGON_SESSION CreateLogonSession; @@ -271,7 +271,7 @@ struct LSA_DISPATCH_TABLE { PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; -} +} alias LSA_DISPATCH_TABLE* PLSA_DISPATCH_TABLE; struct LSA_SECPKG_FUNCTION_TABLE { PLSA_CREATE_LOGON_SESSION CreateLogonSession; @@ -315,7 +315,7 @@ struct LSA_SECPKG_FUNCTION_TABLE { PLSA_CRACK_SINGLE_NAME CrackSingleName; PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; -} +} alias LSA_SECPKG_FUNCTION_TABLE* PLSA_SECPKG_FUNCTION_TABLE; /* functions implemented by SSP/AP obtainable by dispatch tables */ @@ -416,7 +416,7 @@ struct SECPKG_FUNCTION_TABLE { SpQueryContextAttributesFn *QueryContextAttributes; SpAddCredentialsFn *AddCredentials; SpSetExtendedInformationFn *SetExtendedInformation; -} +} alias SECPKG_FUNCTION_TABLE* PSECPKG_FUNCTION_TABLE; struct SECPKG_USER_FUNCTION_TABLE { @@ -434,7 +434,7 @@ struct SECPKG_USER_FUNCTION_TABLE { SpMarshallSupplementalCredsFn *MarshallSupplementalCreds; SpExportSecurityContextFn *ExportContext; SpImportSecurityContextFn *ImportContext; -} +} alias SECPKG_USER_FUNCTION_TABLE* PSECPKG_USER_FUNCTION_TABLE; /* Entry points to SSP/AP */ diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d index 878f05fd06..5586911c8c 100644 --- a/src/core/sys/windows/oaidl.d +++ b/src/core/sys/windows/oaidl.d @@ -150,7 +150,7 @@ struct SAFEARRAYUNION { DWORD_SIZEDARR LongStr; HYPER_SIZEDARR HyperStr; } - _u u; + _u u; } struct _wireSAFEARRAY { diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d index 124402c19c..cbed8cb30b 100644 --- a/src/core/sys/windows/rpcdcep.d +++ b/src/core/sys/windows/rpcdcep.d @@ -105,7 +105,7 @@ alias RPC_STATUS function(void*, void*, void*) RPC_BLOCKING_FN; extern (Windows) { alias void function(void*) PRPC_RUNDOWN; - + int I_RpcGetBuffer(RPC_MESSAGE*); int I_RpcSendReceive(RPC_MESSAGE*); int I_RpcSend(RPC_MESSAGE*); diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index 078d2e5070..8e71502e48 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -291,7 +291,7 @@ struct MIDL_STUB_DESC { handle_t *pPrimitiveHandle; PGENERIC_BINDING_INFO pGenericBindingInfo; } - _IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO; + _IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO; const(NDR_RUNDOWN)* apfnNdrRundownRoutines; const(GENERIC_BINDING_ROUTINE_PAIR)* aGenericBindingRoutinePairs; const(EXPR_EVAL)* apfnExprEval; diff --git a/src/core/sys/windows/sqltypes.d b/src/core/sys/windows/sqltypes.d index 95aeb088c7..6dd7b6951d 100644 --- a/src/core/sys/windows/sqltypes.d +++ b/src/core/sys/windows/sqltypes.d @@ -126,7 +126,7 @@ struct SQL_INTERVAL_STRUCT { SQL_YEAR_MONTH_STRUCT year_month; SQL_DAY_SECOND_STRUCT day_second; } - _intval intval; + _intval intval; } const SQL_MAX_NUMERIC_LEN = 16; diff --git a/src/core/sys/windows/sspi.d b/src/core/sys/windows/sspi.d index 5c583476f7..5ba9941e71 100644 --- a/src/core/sys/windows/sspi.d +++ b/src/core/sys/windows/sspi.d @@ -81,13 +81,13 @@ extern(Windows): struct SecHandle { ULONG_PTR dwLower; ULONG_PTR dwUpper; -} +} alias SecHandle* PSecHandle; struct SecBuffer { ULONG cbBuffer; ULONG BufferType; PVOID pvBuffer; -} +} alias SecBuffer* PSecBuffer; alias SecHandle CredHandle; alias PSecHandle PCredHandle; @@ -96,14 +96,14 @@ alias PSecHandle PCtxtHandle; struct SECURITY_INTEGER { uint LowPart; int HighPart; -} +} alias SECURITY_INTEGER TimeStamp; alias SECURITY_INTEGER* PTimeStamp; struct SecBufferDesc { ULONG ulVersion; ULONG cBuffers; PSecBuffer pBuffers; -} +} alias SecBufferDesc* PSecBufferDesc; struct SecPkgContext_StreamSizes { ULONG cbHeader; @@ -111,22 +111,22 @@ struct SecPkgContext_StreamSizes { ULONG cbMaximumMessage; ULONG cBuffers; ULONG cbBlockSize; -} +} alias SecPkgContext_StreamSizes* PSecPkgContext_StreamSizes; struct SecPkgContext_Sizes { ULONG cbMaxToken; ULONG cbMaxSignature; ULONG cbBlockSize; ULONG cbSecurityTrailer; -} +} alias SecPkgContext_Sizes* PSecPkgContext_Sizes; struct SecPkgContext_AuthorityW { SEC_WCHAR* sAuthorityName; -} +} alias SecPkgContext_AuthorityW* PSecPkgContext_AuthorityW; struct SecPkgContext_AuthorityA { SEC_CHAR* sAuthorityName; -} +} alias SecPkgContext_AuthorityA* PSecPkgContext_AuthorityA; struct SecPkgContext_KeyInfoW { SEC_WCHAR* sSignatureAlgorithmName; @@ -134,7 +134,7 @@ struct SecPkgContext_KeyInfoW { ULONG KeySize; ULONG SignatureAlgorithm; ULONG EncryptAlgorithm; -} +} alias SecPkgContext_KeyInfoW* PSecPkgContext_KeyInfoW; struct SecPkgContext_KeyInfoA { SEC_CHAR* sSignatureAlgorithmName; @@ -142,20 +142,20 @@ struct SecPkgContext_KeyInfoA { ULONG KeySize; ULONG SignatureAlgorithm; ULONG EncryptAlgorithm; -} +} alias SecPkgContext_KeyInfoA* PSecPkgContext_KeyInfoA; struct SecPkgContext_LifeSpan { TimeStamp tsStart; TimeStamp tsExpiry; -} +} alias SecPkgContext_LifeSpan* PSecPkgContext_LifeSpan; struct SecPkgContext_NamesW { SEC_WCHAR* sUserName; -} +} alias SecPkgContext_NamesW* PSecPkgContext_NamesW; struct SecPkgContext_NamesA { SEC_CHAR* sUserName; -} +} alias SecPkgContext_NamesA* PSecPkgContext_NamesA; struct SecPkgInfoW { ULONG fCapabilities; @@ -164,7 +164,7 @@ struct SecPkgInfoW { ULONG cbMaxToken; SEC_WCHAR* Name; SEC_WCHAR* Comment; -} +} alias SecPkgInfoW* PSecPkgInfoW; struct SecPkgInfoA { ULONG fCapabilities; @@ -173,21 +173,21 @@ struct SecPkgInfoA { ULONG cbMaxToken; SEC_CHAR* Name; SEC_CHAR* Comment; -} +} alias SecPkgInfoA* PSecPkgInfoA; /* supported only in win2k+, so it should be a PSecPkgInfoW */ /* PSDK does not say it has ANSI/Unicode versions */ struct SecPkgContext_PackageInfo { PSecPkgInfoW PackageInfo; -} +} alias SecPkgContext_PackageInfo* PSecPkgContext_PackageInfo; struct SecPkgCredentials_NamesW { SEC_WCHAR* sUserName; -} +} alias SecPkgCredentials_NamesW* PSecPkgCredentials_NamesW; struct SecPkgCredentials_NamesA { SEC_CHAR* sUserName; -} +} alias SecPkgCredentials_NamesA* PSecPkgCredentials_NamesA; /* TODO: missing type in SDK */ @@ -220,7 +220,7 @@ alias SECURITY_STATUS function(SEC_WCHAR*,PSecPkgInfoW*) QUERY_SECURITY_PACKAGE_ alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) ENCRYPT_MESSAGE_FN; alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) DECRYPT_MESSAGE_FN; -/* No, it really is FreeCredentialsHandle, see the thread beginning +/* No, it really is FreeCredentialsHandle, see the thread beginning * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a * discovery discussion. */ struct SecurityFunctionTableW{ @@ -251,7 +251,7 @@ struct SecurityFunctionTableW{ QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; ENCRYPT_MESSAGE_FN EncryptMessage; DECRYPT_MESSAGE_FN DecryptMessage; -} +} alias SecurityFunctionTableW* PSecurityFunctionTableW; struct SecurityFunctionTableA{ uint dwVersion; @@ -281,7 +281,7 @@ struct SecurityFunctionTableA{ void* Unknown5; ENCRYPT_MESSAGE_FN EncryptMessage; DECRYPT_MESSAGE_FN DecryptMessage; -} +} alias SecurityFunctionTableA* PSecurityFunctionTableA; alias PSecurityFunctionTableA function() INIT_SECURITY_INTERFACE_A; alias PSecurityFunctionTableW function() INIT_SECURITY_INTERFACE_W; diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index 2cd4990fd8..6da96a3b17 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -37,7 +37,7 @@ struct HEAPLIST32 { DWORD th32ProcessID; ULONG_PTR th32HeapID; DWORD dwFlags; -} +} alias HEAPLIST32* PHEAPLIST32; alias HEAPLIST32* LPHEAPLIST32; @@ -90,7 +90,7 @@ struct MODULEENTRY32W { DWORD ProccntUsage; BYTE *modBaseAddr; DWORD modBaseSize; - HMODULE hModule; + HMODULE hModule; WCHAR[MAX_MODULE_NAME32 + 1] szModule; WCHAR[MAX_PATH] szExePath; } diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index 6cb11c2651..2c2425cacf 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -748,7 +748,7 @@ extern (Windows) { void StretchDIB(LPBITMAPINFOHEADER biDst, LPVOID lpDst, int DstX, int DstY, int DstXE, int DstYE, LPBITMAPINFOHEADER biSrc, LPVOID lpSrc, int SrcX, int SrcY, int SrcXE, int SrcYE); -} +} alias DWORD FOURCC; @@ -832,7 +832,7 @@ struct AVIStreamHeader { WORD wPriority; WORD wLanguage; DWORD dwInitialFrames; - DWORD dwScale; + DWORD dwScale; DWORD dwRate; DWORD dwStart; DWORD dwLength; @@ -930,7 +930,7 @@ struct AVIFILEINFOW { DWORD dwSuggestedBufferSize; DWORD dwWidth; DWORD dwHeight; - DWORD dwScale; + DWORD dwScale; DWORD dwRate; DWORD dwLength; DWORD dwEditCount; @@ -946,7 +946,7 @@ struct AVIFILEINFOA { DWORD dwSuggestedBufferSize; DWORD dwWidth; DWORD dwHeight; - DWORD dwScale; + DWORD dwScale; DWORD dwRate; DWORD dwLength; DWORD dwEditCount; @@ -1186,9 +1186,9 @@ STDAPI AVIFileOpenA (PAVIFILE FAR * ppfile, LPCSTR szFile, STDAPI AVIFileOpenW (PAVIFILE FAR * ppfile, LPCWSTR szFile, UINT uMode, LPCLSID lpHandler); #ifdef UNICODE -#define AVIFileOpen AVIFileOpenW +#define AVIFileOpen AVIFileOpenW #else -#define AVIFileOpen AVIFileOpenA +#define AVIFileOpen AVIFileOpenA #endif #else STDAPI AVIFileOpen (PAVIFILE FAR * ppfile, LPCSTR szFile, diff --git a/src/core/sys/windows/winber.d b/src/core/sys/windows/winber.d index 2b021801dc..e22558eded 100644 --- a/src/core/sys/windows/winber.d +++ b/src/core/sys/windows/winber.d @@ -27,7 +27,7 @@ module core.sys.windows.winber; */ import core.sys.windows.basetsd; - + /* Opaque structure * http://msdn.microsoft.com/library/en-us/ldap/ldap/berelement.asp */ diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index 086c258894..a18aad2720 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -89,7 +89,7 @@ struct CHAR_INFO { WCHAR UnicodeChar; CHAR AsciiChar; } - _Char Char; + _Char Char; WORD Attributes; } alias CHAR_INFO* PCHAR_INFO; @@ -140,7 +140,7 @@ struct KEY_EVENT_RECORD { WCHAR UnicodeChar; CHAR AsciiChar; } - _uChar uChar; + _uChar uChar; DWORD dwControlKeyState; } @@ -173,7 +173,7 @@ struct INPUT_RECORD { MENU_EVENT_RECORD MenuEvent; FOCUS_EVENT_RECORD FocusEvent; } - _Event Event; + _Event Event; } alias INPUT_RECORD* PINPUT_RECORD; diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d index b3ade01818..e1ee1b15f3 100644 --- a/src/core/sys/windows/winhttp.d +++ b/src/core/sys/windows/winhttp.d @@ -35,23 +35,23 @@ enum DWORD WINHTTP_FLAG_ASYNC = 0x10000000; // WinHttpOpenRequest() Flags: enum : DWORD { - WINHTTP_FLAG_SECURE = 0x00800000, - WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, - WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, - WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, + WINHTTP_FLAG_SECURE = 0x00800000, + WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, + WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, + WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, - WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, - WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, - + WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, + WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, - SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = 0x00000200 } struct WINHTTP_ASYNC_RESULT { - DWORD_PTR dwResult; - DWORD dwError; + DWORD_PTR dwResult; + DWORD dwError; } alias LPWINHTTP_ASYNC_RESULT = WINHTTP_ASYNC_RESULT*; @@ -70,30 +70,30 @@ enum : DWORD { } struct URL_COMPONENTS { - DWORD dwStructSize; - LPWSTR lpszScheme; - DWORD dwSchemeLength; - INTERNET_SCHEME nScheme; - LPWSTR lpszHostName; - DWORD dwHostNameLength; - INTERNET_PORT nPort; - LPWSTR lpszUserName; - DWORD dwUserNameLength; - LPWSTR lpszPassword; - DWORD dwPasswordLength; - LPWSTR lpszUrlPath; - DWORD dwUrlPathLength; - LPWSTR lpszExtraInfo; - DWORD dwExtraInfoLength; + DWORD dwStructSize; + LPWSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPWSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPWSTR lpszUserName; + DWORD dwUserNameLength; + LPWSTR lpszPassword; + DWORD dwPasswordLength; + LPWSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPWSTR lpszExtraInfo; + DWORD dwExtraInfoLength; } alias LPURL_COMPONENTS = URL_COMPONENTS*; alias URL_COMPONENTSW = URL_COMPONENTS; alias LPURL_COMPONENTSW = URL_COMPONENTS*; struct WINHTTP_PROXY_INFO { - DWORD dwAccessType; - LPWSTR lpszProxy; - LPWSTR lpszProxyBypass; + DWORD dwAccessType; + LPWSTR lpszProxy; + LPWSTR lpszProxyBypass; } alias LPWINHTTP_PROXY_INFO = WINHTTP_PROXY_INFO*; alias WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO; @@ -142,8 +142,8 @@ struct WINHTTP_CERTIFICATE_INFO { // This structure is only defined #if _WS2DEF_ defined (from ) - per Windows SDK struct WINHTTP_CONNECTION_INFO { DWORD cbSize; - SOCKADDR_STORAGE LocalAddress; - SOCKADDR_STORAGE RemoteAddress; + SOCKADDR_STORAGE LocalAddress; + SOCKADDR_STORAGE RemoteAddress; } // WinHttpTimeFromSystemTime @@ -151,18 +151,18 @@ enum DWORD WINHTTP_TIME_FORMAT_BUFSIZE = 62; // CrackUrl, CombineUrl enum : DWORD { - ICU_NO_ENCODE = 0x20000000, - ICU_DECODE = 0x10000000, - ICU_NO_META = 0x08000000, - ICU_ENCODE_SPACES_ONLY = 0x04000000, - ICU_BROWSER_MODE = 0x02000000, - ICU_ENCODE_PERCENT = 0x00001000 + ICU_NO_ENCODE = 0x20000000, + ICU_DECODE = 0x10000000, + ICU_NO_META = 0x08000000, + ICU_ENCODE_SPACES_ONLY = 0x04000000, + ICU_BROWSER_MODE = 0x02000000, + ICU_ENCODE_PERCENT = 0x00001000 } // WinHttpCrackUrl, WinHttpCreateUrl enum : DWORD { - ICU_ESCAPE = 0x80000000, - ICU_ESCAPE_AUTHORITY = 0x00002000, - ICU_REJECT_USERPWD = 0x00004000 + ICU_ESCAPE = 0x80000000, + ICU_ESCAPE_AUTHORITY = 0x00002000, + ICU_REJECT_USERPWD = 0x00004000 } enum : DWORD { WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, @@ -198,14 +198,14 @@ enum : DWORD { WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36, WINHTTP_OPTION_PROXY = 38, WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39, - + WINHTTP_OPTION_USER_AGENT = 41, WINHTTP_OPTION_CONTEXT_VALUE = 45, WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47, WINHTTP_OPTION_REQUEST_PRIORITY = 58, WINHTTP_OPTION_HTTP_VERSION = 59, WINHTTP_OPTION_DISABLE_FEATURE = 63, - + WINHTTP_OPTION_CODEPAGE = 68, WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73, WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74, @@ -228,7 +228,7 @@ enum : DWORD { WINHTTP_OPTION_CONNECTION_INFO = 93, WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94, WINHTTP_OPTION_SPN = 96, - + WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97, WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98, @@ -243,10 +243,10 @@ enum : DWORD { WINHTTP_OPTION_PROXY_SPN_USED = 107, WINHTTP_OPTION_SERVER_CBT = 108, - + WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110, WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111, - + WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114, WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT = 115, WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116, @@ -262,15 +262,15 @@ enum : DWORD { WINHTTP_OPTION_PASSWORD = 0x1001, WINHTTP_OPTION_PROXY_USERNAME = 0x1002, WINHTTP_OPTION_PROXY_PASSWORD = 0x1003, - + WINHTTP_CONNS_PER_SERVER_UNLIMITED = 0xFFFFFFFF, - + WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0, WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1, WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2, WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM, - + WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0, WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1, WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2, @@ -282,22 +282,22 @@ enum : DWORD { WINHTTP_ENABLE_PASSPORT_AUTH = 0x10000000, WINHTTP_DISABLE_PASSPORT_KEYRING = 0x20000000, WINHTTP_ENABLE_PASSPORT_KEYRING = 0x40000000, - + WINHTTP_DISABLE_COOKIES = 0x00000001, WINHTTP_DISABLE_REDIRECTS = 0x00000002, WINHTTP_DISABLE_AUTHENTICATION = 0x00000004, WINHTTP_DISABLE_KEEP_ALIVE = 0x00000008, - + WINHTTP_ENABLE_SSL_REVOCATION = 0x00000001, WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = 0x00000002, - + WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000, WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001, WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT } // Windows 8.1 SDK: -static if (_WIN32_WINNT >= 0x602) { +static if (_WIN32_WINNT >= 0x602) { enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; } else { // Windows 7.0A SDK: enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; @@ -340,15 +340,15 @@ enum : DWORD { WINHTTP_AUTH_SCHEME_PASSPORT = 0x00000004, WINHTTP_AUTH_SCHEME_DIGEST = 0x00000008, WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, - + WINHTTP_AUTH_TARGET_SERVER = 0x00000000, WINHTTP_AUTH_TARGET_PROXY = 0x00000001, - - SECURITY_FLAG_SECURE = 0x00000001, + + SECURITY_FLAG_SECURE = 0x00000001, SECURITY_FLAG_STRENGTH_WEAK = 0x10000000, SECURITY_FLAG_STRENGTH_MEDIUM = 0x40000000, SECURITY_FLAG_STRENGTH_STRONG = 0x20000000, - + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = 0x00000001, WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = 0x00000002, WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = 0x00000004, @@ -363,8 +363,8 @@ enum : DWORD { WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = 0x00000080, WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = 0x00000200, WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = 0x00000800, - WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | - WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | + WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1) } @@ -447,7 +447,7 @@ static if (_WIN32_WINNT >= 0x602) { | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE | WINHTTP_CALLBACK_STATUS_READ_COMPLETE | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE - | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR + | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE); } @@ -474,11 +474,11 @@ enum : DWORD { WINHTTP_QUERY_COST = 15, WINHTTP_QUERY_LINK = 16, WINHTTP_QUERY_PRAGMA = 17, - WINHTTP_QUERY_VERSION = 18, - WINHTTP_QUERY_STATUS_CODE = 19, - WINHTTP_QUERY_STATUS_TEXT = 20, - WINHTTP_QUERY_RAW_HEADERS = 21, - WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, + WINHTTP_QUERY_VERSION = 18, + WINHTTP_QUERY_STATUS_CODE = 19, + WINHTTP_QUERY_STATUS_TEXT = 20, + WINHTTP_QUERY_RAW_HEADERS = 21, + WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, WINHTTP_QUERY_CONNECTION = 23, WINHTTP_QUERY_ACCEPT = 24, WINHTTP_QUERY_ACCEPT_CHARSET = 25, @@ -501,7 +501,7 @@ enum : DWORD { WINHTTP_QUERY_ACCEPT_RANGES = 42, WINHTTP_QUERY_SET_COOKIE = 43, WINHTTP_QUERY_COOKIE = 44, - WINHTTP_QUERY_REQUEST_METHOD = 45, + WINHTTP_QUERY_REQUEST_METHOD = 45, WINHTTP_QUERY_REFRESH = 46, WINHTTP_QUERY_CONTENT_DISPOSITION = 47, @@ -548,50 +548,50 @@ enum : DWORD { } enum : DWORD { - HTTP_STATUS_CONTINUE = 100, - HTTP_STATUS_SWITCH_PROTOCOLS = 101, - - HTTP_STATUS_OK = 200, - HTTP_STATUS_CREATED = 201, - HTTP_STATUS_ACCEPTED = 202, - HTTP_STATUS_PARTIAL = 203, - HTTP_STATUS_NO_CONTENT = 204, - HTTP_STATUS_RESET_CONTENT = 205, - HTTP_STATUS_PARTIAL_CONTENT = 206, - HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, - - HTTP_STATUS_AMBIGUOUS = 300, - HTTP_STATUS_MOVED = 301, - HTTP_STATUS_REDIRECT = 302, - HTTP_STATUS_REDIRECT_METHOD = 303, - HTTP_STATUS_NOT_MODIFIED = 304, - HTTP_STATUS_USE_PROXY = 305, - HTTP_STATUS_REDIRECT_KEEP_VERB = 307, - - HTTP_STATUS_BAD_REQUEST = 400, - HTTP_STATUS_DENIED = 401, - HTTP_STATUS_PAYMENT_REQ = 402, - HTTP_STATUS_FORBIDDEN = 403, - HTTP_STATUS_NOT_FOUND = 404, - HTTP_STATUS_BAD_METHOD = 405, - HTTP_STATUS_NONE_ACCEPTABLE = 406, - HTTP_STATUS_PROXY_AUTH_REQ = 407, - HTTP_STATUS_REQUEST_TIMEOUT = 408, - HTTP_STATUS_CONFLICT = 409, - HTTP_STATUS_GONE = 410, - HTTP_STATUS_LENGTH_REQUIRED = 411, - HTTP_STATUS_PRECOND_FAILED = 412, - HTTP_STATUS_REQUEST_TOO_LARGE = 413, - HTTP_STATUS_URI_TOO_LONG = 414, - HTTP_STATUS_UNSUPPORTED_MEDIA = 415, - HTTP_STATUS_RETRY_WITH = 449, - - HTTP_STATUS_SERVER_ERROR = 500, - HTTP_STATUS_NOT_SUPPORTED = 501, - HTTP_STATUS_BAD_GATEWAY = 502, - HTTP_STATUS_SERVICE_UNAVAIL = 503, - HTTP_STATUS_GATEWAY_TIMEOUT = 504, - HTTP_STATUS_VERSION_NOT_SUP = 505, + HTTP_STATUS_CONTINUE = 100, + HTTP_STATUS_SWITCH_PROTOCOLS = 101, + + HTTP_STATUS_OK = 200, + HTTP_STATUS_CREATED = 201, + HTTP_STATUS_ACCEPTED = 202, + HTTP_STATUS_PARTIAL = 203, + HTTP_STATUS_NO_CONTENT = 204, + HTTP_STATUS_RESET_CONTENT = 205, + HTTP_STATUS_PARTIAL_CONTENT = 206, + HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, + + HTTP_STATUS_AMBIGUOUS = 300, + HTTP_STATUS_MOVED = 301, + HTTP_STATUS_REDIRECT = 302, + HTTP_STATUS_REDIRECT_METHOD = 303, + HTTP_STATUS_NOT_MODIFIED = 304, + HTTP_STATUS_USE_PROXY = 305, + HTTP_STATUS_REDIRECT_KEEP_VERB = 307, + + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_DENIED = 401, + HTTP_STATUS_PAYMENT_REQ = 402, + HTTP_STATUS_FORBIDDEN = 403, + HTTP_STATUS_NOT_FOUND = 404, + HTTP_STATUS_BAD_METHOD = 405, + HTTP_STATUS_NONE_ACCEPTABLE = 406, + HTTP_STATUS_PROXY_AUTH_REQ = 407, + HTTP_STATUS_REQUEST_TIMEOUT = 408, + HTTP_STATUS_CONFLICT = 409, + HTTP_STATUS_GONE = 410, + HTTP_STATUS_LENGTH_REQUIRED = 411, + HTTP_STATUS_PRECOND_FAILED = 412, + HTTP_STATUS_REQUEST_TOO_LARGE = 413, + HTTP_STATUS_URI_TOO_LONG = 414, + HTTP_STATUS_UNSUPPORTED_MEDIA = 415, + HTTP_STATUS_RETRY_WITH = 449, + + HTTP_STATUS_SERVER_ERROR = 500, + HTTP_STATUS_NOT_SUPPORTED = 501, + HTTP_STATUS_BAD_GATEWAY = 502, + HTTP_STATUS_SERVICE_UNAVAIL = 503, + HTTP_STATUS_GATEWAY_TIMEOUT = 504, + HTTP_STATUS_VERSION_NOT_SUP = 505, HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE, HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP @@ -654,7 +654,7 @@ enum : DWORD { ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE, + 44), - + ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = (WINHTTP_ERROR_BASE + 102), @@ -693,7 +693,7 @@ enum : DWORD { ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 185), ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 186), - WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) + WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) } enum : DWORD { @@ -712,7 +712,7 @@ enum : DWORD { } // Version(Windows8) || Version(Windows2012): -static if (_WIN32_WINNT >= 0x602) +static if (_WIN32_WINNT >= 0x602) { enum WINHTTP_WEB_SOCKET_OPERATION : DWORD { @@ -745,11 +745,11 @@ static if (_WIN32_WINNT >= 0x602) WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015 } struct WINHTTP_PROXY_RESULT_ENTRY { - BOOL fProxy; - BOOL fBypass; - INTERNET_SCHEME ProxyScheme; - PWSTR pwszProxy; - INTERNET_PORT ProxyPort; + BOOL fProxy; + BOOL fBypass; + INTERNET_SCHEME ProxyScheme; + PWSTR pwszProxy; + INTERNET_PORT ProxyPort; } struct WINHTTP_PROXY_RESULT { DWORD cEntries; @@ -803,7 +803,7 @@ extern (Windows) { LPDWORD lpdwNumberOfBytesRead); BOOL WinHttpReceiveResponse(HINTERNET hRequest, LPVOID lpReserved); - BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, + BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext); BOOL WinHttpSetCredentials(HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, @@ -829,7 +829,7 @@ extern (Windows) { DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, DWORD_PTR pContext); DWORD WinHttpGetProxyResult(HINTERNET hResolver, WINHTTP_PROXY_RESULT *pProxyResult); - DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); + DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); DWORD WinHttpWebSocketClose(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); HINTERNET WinHttpWebSocketCompleteUpgrade(HINTERNET hRequest, DWORD_PTR pContext); DWORD WinHttpWebSocketQueryCloseStatus(HINTERNET hWebSocket, USHORT *pusStatus, PVOID pvReason, diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index bba40dd611..1f03973638 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -452,7 +452,7 @@ struct LDAPVLVInfo { * Under Microsoft WinLDAP the function ldap_error is only stub. * This macro uses LDAP structure to get error string and pass it to the user. */ -private extern (C) int printf(in char* format, ...); +private extern (C) int printf(in char* format, ...); int ldap_perror(LDAP* handle, char* message) { return printf("%s: %s\n", message, handle.ld_error); } diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index 2131987d44..8384094819 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -2140,14 +2140,14 @@ version (X86) { const INITIAL_MXCSR = 0x1f80; const INITIAL_FPCSR = 0x027f; - align(16) struct M128A + align(16) struct M128A { ULONGLONG Low; LONGLONG High; - } + } alias M128A* PM128A; - struct XMM_SAVE_AREA32 + struct XMM_SAVE_AREA32 { WORD ControlWord; WORD StatusWord; @@ -2165,10 +2165,10 @@ version (X86) { M128A[8] FloatRegisters; M128A[16] XmmRegisters; BYTE[96] Reserved4; - } + } alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32; const LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof; - + align(16) struct CONTEXT { DWORD64 P1Home; @@ -2209,11 +2209,11 @@ version (X86) { DWORD64 R14; DWORD64 R15; DWORD64 Rip; - union + union { XMM_SAVE_AREA32 FltSave; XMM_SAVE_AREA32 FloatSave; - struct + struct { M128A[2] Header; M128A[8] Legacy; @@ -2243,7 +2243,7 @@ version (X86) { DWORD64 LastExceptionToRip; DWORD64 LastExceptionFromRip; } - + } else { static assert(false, "Unsupported CPU"); // Versions for PowerPC, Alpha, SHX, and MIPS removed. diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d index e1b1b62c92..c27d2ebcdd 100644 --- a/src/core/sys/windows/winspool.d +++ b/src/core/sys/windows/winspool.d @@ -640,7 +640,7 @@ struct PRINTER_NOTIFY_INFO_DATA { PVOID pBuf; } } - _NotifyData NotifyData; + _NotifyData NotifyData; } alias PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA, LPPRINTER_NOTIFY_INFO_DATA; diff --git a/src/core/sys/windows/ws2tcpip.d b/src/core/sys/windows/ws2tcpip.d index 1b711a6902..92e33f108c 100644 --- a/src/core/sys/windows/ws2tcpip.d +++ b/src/core/sys/windows/ws2tcpip.d @@ -32,7 +32,7 @@ enum { IP_BLOCK_SOURCE = 17, IP_UNBLOCK_SOURCE = 18, IP_PKTINFO = 19 -} +} enum { IPV6_UNICAST_HOPS = 4, @@ -139,7 +139,7 @@ alias SOCKADDR_IN6* PSOCKADDR_IN6, LPSOCKADDR_IN6; extern IN6_ADDR in6addr_any; extern IN6_ADDR in6addr_loopback; -/+ TODO: +/+ TODO: #define IN6_ARE_ADDR_EQUAL(a, b) \ (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0) @@ -179,7 +179,7 @@ extern IN6_ADDR in6addr_loopback; #define IN6_IS_ADDR_MC_NODELOCAL(_addr) \ ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) + && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) #define IN6_IS_ADDR_MC_LINKLOCAL(_addr) \ ( IN6_IS_ADDR_MULTICAST (_addr) \ From f71c2a3c3a01c094570369eab1f1fb1ebf0bd547 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 20:06:06 +0000 Subject: [PATCH 115/768] detab (all) --- src/core/sys/windows/basetsd.d | 8 +- src/core/sys/windows/commctrl.d | 10 +- src/core/sys/windows/ddeml.d | 32 +- src/core/sys/windows/lmstats.d | 60 +- src/core/sys/windows/mapi.d | 2 +- src/core/sys/windows/mmsystem.d | 12 +- src/core/sys/windows/mswsock.d | 20 +- src/core/sys/windows/nb30.d | 16 +- src/core/sys/windows/nddeapi.d | 2 +- src/core/sys/windows/nspapi.d | 4 +- src/core/sys/windows/ntdef.d | 10 +- src/core/sys/windows/ntldap.d | 4 +- src/core/sys/windows/ntsecapi.d | 10 +- src/core/sys/windows/odbcinst.d | 4 +- src/core/sys/windows/ras.d | 8 +- src/core/sys/windows/rassapi.d | 4 +- src/core/sys/windows/regstr.d | 16 +- src/core/sys/windows/rpcndr.d | 8 +- src/core/sys/windows/shlobj.d | 4 +- src/core/sys/windows/vfw.d | 1976 +++++++++++++++---------------- src/core/sys/windows/w32api.d | 10 +- src/core/sys/windows/winbase.d | 38 +- src/core/sys/windows/winber.d | 6 +- src/core/sys/windows/wincrypt.d | 30 +- src/core/sys/windows/winerror.d | 2 +- src/core/sys/windows/winhttp.d | 8 +- src/core/sys/windows/winioctl.d | 4 +- src/core/sys/windows/winldap.d | 22 +- src/core/sys/windows/winnt.d | 12 +- src/core/sys/windows/winuser.d | 18 +- src/core/sys/windows/ws2tcpip.d | 200 ++-- 31 files changed, 1280 insertions(+), 1280 deletions(-) diff --git a/src/core/sys/windows/basetsd.d b/src/core/sys/windows/basetsd.d index 36797a62a8..dc8407a04d 100644 --- a/src/core/sys/windows/basetsd.d +++ b/src/core/sys/windows/basetsd.d @@ -9,9 +9,9 @@ */ module core.sys.windows.basetsd; -/* This template is used in these modules to declare constant pointer types, - * in order to support both D 1.x and 2.x. - * Since removed - now supporting only D2 +/* This template is used in these modules to declare constant pointer types, + * in order to support both D 1.x and 2.x. + * Since removed - now supporting only D2 */ /*template CPtr(T) { version (D_Version2) { @@ -22,7 +22,7 @@ module core.sys.windows.basetsd; } }*/ -/* [CyberShadow VP 2011.12.22] typedef is now deprecated in D2. +/* [CyberShadow VP 2011.12.22] typedef is now deprecated in D2. */ template TypeDef(T) { version (D_Version2) { diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 46f0af5ec9..ad104fd4ce 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -2710,7 +2710,7 @@ static if (_WIN32_WINNT >= 0x501) { LIF_ITEMINDEX = 1, LIF_STATE = 2, LIF_ITEMID = 4, - LIF_URL = 8 + LIF_URL = 8 } enum { @@ -3780,8 +3780,8 @@ alias LVCOLUMNA LV_COLUMNA; alias LVCOLUMNW LV_COLUMNW; static if (_WIN32_WINNT >= 0x501) { - /* SG: The definitions in this static if block are from the MSDN docs. - * They are not in MinGW, but nonetheless required for macros that are. + /* SG: The definitions in this static if block are from the MSDN docs. + * They are not in MinGW, but nonetheless required for macros that are. */ struct LVGROUP { UINT cbSize = LVGROUP.sizeof; @@ -5550,8 +5550,8 @@ static if (_WIN32_WINNT >= 0x501) { return cast(UINT) SendMessage(w, LVM_MAPIDTOINDEX, i, 0); } - /* ??? MSDN documents this as "Not implemented", except in relation to - * Windows CE/Mobile. + /* ??? MSDN documents this as "Not implemented", except in relation to + * Windows CE/Mobile. */ void ListView_MoveGroup(HWND w, int i, int t) { SendMessage(w, LVM_MOVEGROUP, i, t); diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index 325ba21378..0c29e470fa 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -118,20 +118,20 @@ enum : UINT { } /+ -#define DDE_FACK 0x8000 -#define DDE_FBUSY 0x4000 -#define DDE_FDEFERUPD 0x4000 -#define DDE_FACKREQ 0x8000 -#define DDE_FRELEASE 0x2000 -#define DDE_FREQUESTED 0x1000 -#define DDE_FAPPSTATUS 0x00ff -#define DDE_FNOTPROCESSED 0 -#define DDE_FACKRESERVED (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS)) -#define DDE_FADVRESERVED (~(DDE_FACKREQ|DDE_FDEFERUPD)) -#define DDE_FDATRESERVED (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED)) -#define DDE_FPOKRESERVED (~DDE_FRELEASE) -#define MSGF_DDEMGR 0x8001 -#define CBR_BLOCK ((HDDEDATA)0xffffffff) +#define DDE_FACK 0x8000 +#define DDE_FBUSY 0x4000 +#define DDE_FDEFERUPD 0x4000 +#define DDE_FACKREQ 0x8000 +#define DDE_FRELEASE 0x2000 +#define DDE_FREQUESTED 0x1000 +#define DDE_FAPPSTATUS 0x00ff +#define DDE_FNOTPROCESSED 0 +#define DDE_FACKRESERVED (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS)) +#define DDE_FADVRESERVED (~(DDE_FACKREQ|DDE_FDEFERUPD)) +#define DDE_FDATRESERVED (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED)) +#define DDE_FPOKRESERVED (~DDE_FRELEASE) +#define MSGF_DDEMGR 0x8001 +#define CBR_BLOCK ((HDDEDATA)0xffffffff) +/ const DWORD @@ -177,8 +177,8 @@ enum : UINT { } /+ -#define HDATA_APPOWNED 1 -#define MAX_MONITORS 4 +#define HDATA_APPOWNED 1 +#define MAX_MONITORS 4 +/ enum : int { diff --git a/src/core/sys/windows/lmstats.d b/src/core/sys/windows/lmstats.d index 7932e1d9cf..95cf81e362 100644 --- a/src/core/sys/windows/lmstats.d +++ b/src/core/sys/windows/lmstats.d @@ -39,36 +39,36 @@ alias STAT_SERVER_0* PSTAT_SERVER_0, LPSTAT_SERVER_0; // #ifdef LM20_WORKSTATION_STATISTICS // typedef struct _STAT_WORKSTATION_0 { -// DWORD stw0_start; -// DWORD stw0_numNCB_r; -// DWORD stw0_numNCB_s; -// DWORD stw0_numNCB_a; -// DWORD stw0_fiNCB_r; -// DWORD stw0_fiNCB_s; -// DWORD stw0_fiNCB_a; -// DWORD stw0_fcNCB_r; -// DWORD stw0_fcNCB_s; -// DWORD stw0_fcNCB_a; -// DWORD stw0_sesstart; -// DWORD stw0_sessfailcon; -// DWORD stw0_sessbroke; -// DWORD stw0_uses; -// DWORD stw0_usefail; -// DWORD stw0_autorec; -// DWORD stw0_bytessent_r_lo; -// DWORD stw0_bytessent_r_hi; -// DWORD stw0_bytesrcvd_r_lo; -// DWORD stw0_bytesrcvd_r_hi; -// DWORD stw0_bytessent_s_lo; -// DWORD stw0_bytessent_s_hi; -// DWORD stw0_bytesrcvd_s_lo; -// DWORD stw0_bytesrcvd_s_hi; -// DWORD stw0_bytessent_a_lo; -// DWORD stw0_bytessent_a_hi; -// DWORD stw0_bytesrcvd_a_lo; -// DWORD stw0_bytesrcvd_a_hi; -// DWORD stw0_reqbufneed; -// DWORD stw0_bigbufneed; +// DWORD stw0_start; +// DWORD stw0_numNCB_r; +// DWORD stw0_numNCB_s; +// DWORD stw0_numNCB_a; +// DWORD stw0_fiNCB_r; +// DWORD stw0_fiNCB_s; +// DWORD stw0_fiNCB_a; +// DWORD stw0_fcNCB_r; +// DWORD stw0_fcNCB_s; +// DWORD stw0_fcNCB_a; +// DWORD stw0_sesstart; +// DWORD stw0_sessfailcon; +// DWORD stw0_sessbroke; +// DWORD stw0_uses; +// DWORD stw0_usefail; +// DWORD stw0_autorec; +// DWORD stw0_bytessent_r_lo; +// DWORD stw0_bytessent_r_hi; +// DWORD stw0_bytesrcvd_r_lo; +// DWORD stw0_bytesrcvd_r_hi; +// DWORD stw0_bytessent_s_lo; +// DWORD stw0_bytessent_s_hi; +// DWORD stw0_bytesrcvd_s_lo; +// DWORD stw0_bytesrcvd_s_hi; +// DWORD stw0_bytessent_a_lo; +// DWORD stw0_bytessent_a_hi; +// DWORD stw0_bytesrcvd_a_lo; +// DWORD stw0_bytesrcvd_a_hi; +// DWORD stw0_reqbufneed; +// DWORD stw0_bigbufneed; // } STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0; // #else diff --git a/src/core/sys/windows/mapi.d b/src/core/sys/windows/mapi.d index f902d1dce9..8c96568a9e 100644 --- a/src/core/sys/windows/mapi.d +++ b/src/core/sys/windows/mapi.d @@ -20,7 +20,7 @@ enum { MAPI_E_FAILURE, MAPI_E_LOGIN_FAILURE, MAPI_E_LOGON_FAILURE = MAPI_E_LOGIN_FAILURE, - MAPI_E_DISK_FULL = 4, + MAPI_E_DISK_FULL = 4, MAPI_E_INSUFFICIENT_MEMORY, MAPI_E_ACCESS_DENIED, MAPI_E_BLK_TOO_SMALL = MAPI_E_ACCESS_DENIED, // = 6 diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index 8713ab2f51..7060288723 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -9,8 +9,8 @@ module core.sys.windows.mmsystem; pragma(lib, "winmm"); -/* The #defines MAKEFOURCC, mmioFOURCC, sndAlias are used to define - * compile-time constants, so they are implemented as templates. +/* The #defines MAKEFOURCC, mmioFOURCC, sndAlias are used to define + * compile-time constants, so they are implemented as templates. */ private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winver; @@ -2048,8 +2048,8 @@ alias MCI_ANIM_WINDOW_PARMSW* PMCI_ANIM_WINDOW_PARMSW, LPMCI_ANIM_WINDOW_PARMSW; struct MCI_ANIM_RECT_PARMS { DWORD dwCallback; //#ifdef MCI_USE_OFFEXT - // POINT ptOffset; - // POINT ptExtent; + // POINT ptOffset; + // POINT ptExtent; //#else RECT rc; //#endif @@ -2104,8 +2104,8 @@ alias MCI_OVLY_WINDOW_PARMSW* PMCI_OVLY_WINDOW_PARMSW, LPMCI_OVLY_WINDOW_PARMSW; struct MCI_OVLY_RECT_PARMS { DWORD dwCallback; //#ifdef MCI_USE_OFFEXT - // POINT ptOffset; - // POINT ptExtent; + // POINT ptOffset; + // POINT ptExtent; //#else RECT rc; //#endif diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index b1163305cc..2cf011076c 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -119,8 +119,8 @@ extern(Windows) { version(Win32_Winsock1) { } else { static if (_WIN32_WINNT > 0x501) { - /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT - * structure below, so I've given them the same minimum version + /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT + * structure below, so I've given them the same minimum version */ enum { TP_ELEMENT_FILE = 1, @@ -128,8 +128,8 @@ version(Win32_Winsock1) { TP_ELEMENT_EOP = 4 } - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm */ struct TRANSMIT_PACKETS_ELEMENT { ULONG dwElFlags; @@ -143,8 +143,8 @@ version(Win32_Winsock1) { } } - /* WinXP+, Server2003+: - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm + /* WinXP+, Server2003+: + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm */ struct WSAMSG { LPSOCKADDR name; @@ -182,13 +182,13 @@ version(Win32_Winsock1) { extern(Windows) { - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm */ BOOL DisconnectEx(SOCKET, LPOVERLAPPED, DWORD, DWORD); - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm */ int WSARecvMsg(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); } diff --git a/src/core/sys/windows/nb30.d b/src/core/sys/windows/nb30.d index 756de0c6a3..139da29f44 100644 --- a/src/core/sys/windows/nb30.d +++ b/src/core/sys/windows/nb30.d @@ -115,8 +115,8 @@ enum : UCHAR { struct ACTION_HEADER { union { - /* transport_id is defined as a ULONG, but both the above constants - * and the documented description suggest it should be a char[4] + /* transport_id is defined as a ULONG, but both the above constants + * and the documented description suggest it should be a char[4] */ ULONG transport_id; char[4] c_transport_id; @@ -158,14 +158,14 @@ struct ADAPTER_STATUS { alias ADAPTER_STATUS* PADAPTER_STATUS; struct FIND_NAME_BUFFER { - /* From Win32 API docs + /* From Win32 API docs * - * length - * Specifies the length, in bytes, of the FIND_NAME_BUFFER - * structure. Although this structure always occupies 33 bytes, - * not all of the structure is necessarily valid. + * length + * Specifies the length, in bytes, of the FIND_NAME_BUFFER + * structure. Although this structure always occupies 33 bytes, + * not all of the structure is necessarily valid. * - * On this basis, should length be initialised? + * On this basis, should length be initialised? */ UCHAR length; UCHAR access_control; diff --git a/src/core/sys/windows/nddeapi.d b/src/core/sys/windows/nddeapi.d index 0565cc665a..7ee251f2c4 100644 --- a/src/core/sys/windows/nddeapi.d +++ b/src/core/sys/windows/nddeapi.d @@ -92,7 +92,7 @@ struct NDdeShareInfo_tag { LONG cNumItems; LPTSTR lpszItemList; } -extern (C) { // huh? +extern (C) { // huh? NDdeShareInfo_tag NDDESHAREINFO; NDdeShareInfo_tag* PNDDESHAREINFO; } diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d index 6ad9176186..43c65d327d 100644 --- a/src/core/sys/windows/nspapi.d +++ b/src/core/sys/windows/nspapi.d @@ -46,8 +46,8 @@ enum { SERVICE_FLAG_HARD = 2 } -/* MinGW makes the next section conditional on winsock.h or winsock2.h - * being included. But that doesn't translate well into D. +/* MinGW makes the next section conditional on winsock.h or winsock2.h + * being included. But that doesn't translate well into D. */ version (Win32_Winsock1) { import core.sys.windows.winsock; diff --git a/src/core/sys/windows/ntdef.d b/src/core/sys/windows/ntdef.d index cd34522758..2fc147732b 100644 --- a/src/core/sys/windows/ntdef.d +++ b/src/core/sys/windows/ntdef.d @@ -34,9 +34,9 @@ void InitializeObjectAttributes(OBJECT_ATTRIBUTES* p, UNICODE_STRING* n, bool NT_SUCCESS(int x) { return x >= 0; } -/* In MinGW, NTSTATUS, UNICODE_STRING, STRING and their associated pointer - * type aliases are defined in ntdef.h, ntsecapi.h and subauth.h, each of - * which checks that none of the others is already included. +/* In MinGW, NTSTATUS, UNICODE_STRING, STRING and their associated pointer + * type aliases are defined in ntdef.h, ntsecapi.h and subauth.h, each of + * which checks that none of the others is already included. */ alias int NTSTATUS; alias int* PNTSTATUS; @@ -65,8 +65,8 @@ enum SECTION_INHERIT { ViewUnmap } -/* In MinGW, this is defined in ntdef.h and ntsecapi.h, each of which checks - * that the other isn't already included. +/* In MinGW, this is defined in ntdef.h and ntsecapi.h, each of which checks + * that the other isn't already included. */ struct OBJECT_ATTRIBUTES { ULONG Length = OBJECT_ATTRIBUTES.sizeof; diff --git a/src/core/sys/windows/ntldap.d b/src/core/sys/windows/ntldap.d index b5ca4e9338..2147c9e050 100644 --- a/src/core/sys/windows/ntldap.d +++ b/src/core/sys/windows/ntldap.d @@ -9,8 +9,8 @@ */ module core.sys.windows.ntldap; -/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned - * aliases. Should we merge them anyway? +/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned + * aliases. Should we merge them anyway? */ const char[] diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index 7dc5a023ac..ed3601a7f4 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -38,8 +38,8 @@ enum { bool LSA_SUCCESS(int x) { return x >= 0; } -/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned - * aliases. Should we merge them anyway? +/* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned + * aliases. Should we merge them anyway? */ const char[] MICROSOFT_KERBEROS_NAME_A = "Kerberos"; const wchar[] MICROSOFT_KERBEROS_NAME_W = "Kerberos"; @@ -339,9 +339,9 @@ struct LSA_TRUST_INFORMATION { } alias LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; alias LSA_TRUST_INFORMATION* PLSA_TRUST_INFORMATION; -/* in MinGW (further down the code): - * typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; - * but it doesn't look right.... +/* in MinGW (further down the code): + * typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; + * but it doesn't look right.... */ alias LSA_TRUST_INFORMATION** PTRUSTED_DOMAIN_INFORMATION_BASIC; diff --git a/src/core/sys/windows/odbcinst.d b/src/core/sys/windows/odbcinst.d index f6d63302f1..0d062629d5 100644 --- a/src/core/sys/windows/odbcinst.d +++ b/src/core/sys/windows/odbcinst.d @@ -11,8 +11,8 @@ module core.sys.windows.odbcinst; import core.sys.windows.sql; private import core.sys.windows.windef; -/* FIXME: The Unicode/Ansi functions situation is a mess. How do the xxxA - * versions of these functions fit into the scheme? +/* FIXME: The Unicode/Ansi functions situation is a mess. How do the xxxA + * versions of these functions fit into the scheme? */ // SQLConfigDataSource() diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index da6841541d..09525aa962 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -199,9 +199,9 @@ enum RASCONNSTATE { RASCS_RetryAuthentication, RASCS_CallbackSetByCaller, RASCS_PasswordExpired, -// static if (_WIN32_WINNT >= 0x500) { +// static if (_WIN32_WINNT >= 0x500) { RASCS_InvokeEapUI, -// } +// } RASCS_Connected = RASCS_DONE, RASCS_Disconnected } @@ -212,9 +212,9 @@ enum RASPROJECTION { RASP_PppNbf = 0x803F, RASP_PppIpx = 0x802B, RASP_PppIp = 0x8021, -// static if (_WIN32_WINNT >= 0x500) { +// static if (_WIN32_WINNT >= 0x500) { RASP_PppCcp = 0x80FD, -// } +// } RASP_PppLcp = 0xC021, RASP_Slip = 0x20000 } diff --git a/src/core/sys/windows/rassapi.d b/src/core/sys/windows/rassapi.d index 2f7532730c..cbd2622121 100644 --- a/src/core/sys/windows/rassapi.d +++ b/src/core/sys/windows/rassapi.d @@ -15,8 +15,8 @@ private import core.sys.windows.lmcons, core.sys.windows.windef; const size_t RASSAPI_MAX_PHONENUMBER_SIZE = 128, - RASSAPI_MAX_MEDIA_NAME = 16, - RASSAPI_MAX_PORT_NAME = 16, + RASSAPI_MAX_MEDIA_NAME = 16, + RASSAPI_MAX_PORT_NAME = 16, RASSAPI_MAX_DEVICE_NAME = 128, RASSAPI_MAX_DEVICETYPE_NAME = 16, RASSAPI_MAX_PARAM_KEY_SIZE = 32; diff --git a/src/core/sys/windows/regstr.d b/src/core/sys/windows/regstr.d index ab5ae2e6f3..d0a35f2abd 100644 --- a/src/core/sys/windows/regstr.d +++ b/src/core/sys/windows/regstr.d @@ -140,13 +140,13 @@ const TCHAR[] REGSTR_VAL_EISA_FLAGS = "EISAFlags", REGSTR_VAL_EISA_SIMULATE_INT15 = "EISASimulateInt15"; // #else -// #define REGSTR_KEY_ISAENUM TEXT("C98PnP") -// #define REGSTR_KEY_EISAENUM TEXT("NESA") -// #define REGSTR_VAL_EISA_RANGES TEXT("NESARanges") -// #define REGSTR_VAL_EISA_FUNCTIONS TEXT("NESAFunctions") -// #define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("NESAFunctionsMask") -// #define REGSTR_VAL_EISA_FLAGS TEXT("NESAFlags") -// #define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("NESASimulateInt15") +// #define REGSTR_KEY_ISAENUM TEXT("C98PnP") +// #define REGSTR_KEY_EISAENUM TEXT("NESA") +// #define REGSTR_VAL_EISA_RANGES TEXT("NESARanges") +// #define REGSTR_VAL_EISA_FUNCTIONS TEXT("NESAFunctions") +// #define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("NESAFunctionsMask") +// #define REGSTR_VAL_EISA_FLAGS TEXT("NESAFlags") +// #define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("NESASimulateInt15") // #endif const TCHAR[] @@ -797,7 +797,7 @@ enum { //#ifndef NEC_98 const PCIC_DEFAULT_IRQMASK = 0x4EB8; //#else -//#define PCIC_DEFAULT_IRQMASK 0x1468 +//#define PCIC_DEFAULT_IRQMASK 0x1468 //#endif const PCIC_DEFAULT_NUMSOCKETS = 0; diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index 8e71502e48..14b9fb287a 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -194,10 +194,10 @@ struct MIDL_STUB_MESSAGE { int fCheckBounds; // FIXME: byte bit_fields_for_D; // FIXME: Bitfields -// int fInDontFree :1; -// int fDontCallFreeInst :1; -// int fInOnlyParam :1; -// int fHasReturn :1; +// int fInDontFree :1; +// int fDontCallFreeInst :1; +// int fInOnlyParam :1; +// int fHasReturn :1; uint dwDestContext; void* pvDestContext; NDR_SCONTEXT * SavedContextHandles; diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index 544a303fe0..269f8bd4e1 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -950,7 +950,7 @@ interface IShellView : IOleWindow { HRESULT ContextSensitiveHelp(BOOL); HRESULT TranslateAccelerator(LPMSG); //[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT -//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; //[Yes] #else HRESULT EnableModeless(BOOL); //[Yes] #endif @@ -990,7 +990,7 @@ interface IShellView2 : IShellView { HRESULT ContextSensitiveHelp(BOOL); HRESULT TranslateAccelerator(LPMSG); //[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT -//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; //[Yes] #else HRESULT EnableModeless(BOOL); //[Yes] #endif diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index 2c2425cacf..e22ab66e64 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -43,310 +43,310 @@ template aviTWOCC(char c0, char c1) { const WORD aviTWOCC = c0 | (c1 << 8); } -const ICTYPE_VIDEO = mmioFOURCC!('v', 'i', 'd', 'c'); -const ICTYPE_AUDIO = mmioFOURCC!('a', 'u', 'd', 'c'); +const ICTYPE_VIDEO = mmioFOURCC!('v', 'i', 'd', 'c'); +const ICTYPE_AUDIO = mmioFOURCC!('a', 'u', 'd', 'c'); enum { - ICERR_OK = 0, - ICERR_DONTDRAW = 1, - ICERR_NEWPALETTE = 2, - ICERR_GOTOKEYFRAME = 3, - ICERR_STOPDRAWING = 4, -} - -const ICERR_UNSUPPORTED = -1; -const ICERR_BADFORMAT = -2; -const ICERR_MEMORY = -3; -const ICERR_INTERNAL = -4; -const ICERR_BADFLAGS = -5; -const ICERR_BADPARAM = -6; -const ICERR_BADSIZE = -7; -const ICERR_BADHANDLE = -8; -const ICERR_CANTUPDATE = -9; -const ICERR_ABORT = -10; -const ICERR_ERROR = -100; -const ICERR_BADBITDEPTH = -200; + ICERR_OK = 0, + ICERR_DONTDRAW = 1, + ICERR_NEWPALETTE = 2, + ICERR_GOTOKEYFRAME = 3, + ICERR_STOPDRAWING = 4, +} + +const ICERR_UNSUPPORTED = -1; +const ICERR_BADFORMAT = -2; +const ICERR_MEMORY = -3; +const ICERR_INTERNAL = -4; +const ICERR_BADFLAGS = -5; +const ICERR_BADPARAM = -6; +const ICERR_BADSIZE = -7; +const ICERR_BADHANDLE = -8; +const ICERR_CANTUPDATE = -9; +const ICERR_ABORT = -10; +const ICERR_ERROR = -100; +const ICERR_BADBITDEPTH = -200; const ICERR_BADIMAGESIZE = -201; const ICERR_CUSTOM = -400; enum { - ICMODE_COMPRESS = 1, + ICMODE_COMPRESS = 1, ICMODE_DECOMPRESS, ICMODE_FASTDECOMPRESS, ICMODE_QUERY, ICMODE_FASTCOMPRESS, - ICMODE_DRAW = 8, + ICMODE_DRAW = 8, } -const ICMODE_INTERNALF_FUNCTION32 = 0x8000; -const ICMODE_INTERNALF_MASK = 0x8000; +const ICMODE_INTERNALF_FUNCTION32 = 0x8000; +const ICMODE_INTERNALF_MASK = 0x8000; enum { - AVIIF_LIST = 0x00000001, - AVIIF_TWOCC = 0x00000002, - AVIIF_KEYFRAME = 0x00000010, + AVIIF_LIST = 0x00000001, + AVIIF_TWOCC = 0x00000002, + AVIIF_KEYFRAME = 0x00000010, } -const ICQUALITY_LOW = 0; -const ICQUALITY_HIGH = 10000; +const ICQUALITY_LOW = 0; +const ICQUALITY_HIGH = 10000; const ICQUALITY_DEFAULT = -1; enum { - ICM_USER = DRV_USER + 0x0000, - ICM_RESERVED_LOW = DRV_USER + 0x1000, - ICM_RESERVED_HIGH = DRV_USER + 0x2000, - ICM_RESERVED = ICM_RESERVED_LOW, + ICM_USER = DRV_USER + 0x0000, + ICM_RESERVED_LOW = DRV_USER + 0x1000, + ICM_RESERVED_HIGH = DRV_USER + 0x2000, + ICM_RESERVED = ICM_RESERVED_LOW, } // messages enum { - ICM_GETSTATE = ICM_RESERVED + 0, - ICM_SETSTATE = ICM_RESERVED + 1, - ICM_GETINFO = ICM_RESERVED + 2, - ICM_CONFIGURE = ICM_RESERVED + 10, - ICM_ABOUT = ICM_RESERVED + 11, - ICM_GETERRORTEXT = ICM_RESERVED + 12, - ICM_GETFORMATNAME = ICM_RESERVED + 20, - ICM_ENUMFORMATS = ICM_RESERVED + 21, - ICM_GETDEFAULTQUALITY = ICM_RESERVED + 30, - ICM_GETQUALITY = ICM_RESERVED + 31, - ICM_SETQUALITY = ICM_RESERVED + 32, - ICM_SET = ICM_RESERVED + 40, - ICM_GET = ICM_RESERVED + 41, -} - -const ICM_FRAMERATE = mmioFOURCC!('F','r','m','R'); -const ICM_KEYFRAMERATE = mmioFOURCC!('K','e','y','R'); + ICM_GETSTATE = ICM_RESERVED + 0, + ICM_SETSTATE = ICM_RESERVED + 1, + ICM_GETINFO = ICM_RESERVED + 2, + ICM_CONFIGURE = ICM_RESERVED + 10, + ICM_ABOUT = ICM_RESERVED + 11, + ICM_GETERRORTEXT = ICM_RESERVED + 12, + ICM_GETFORMATNAME = ICM_RESERVED + 20, + ICM_ENUMFORMATS = ICM_RESERVED + 21, + ICM_GETDEFAULTQUALITY = ICM_RESERVED + 30, + ICM_GETQUALITY = ICM_RESERVED + 31, + ICM_SETQUALITY = ICM_RESERVED + 32, + ICM_SET = ICM_RESERVED + 40, + ICM_GET = ICM_RESERVED + 41, +} + +const ICM_FRAMERATE = mmioFOURCC!('F','r','m','R'); +const ICM_KEYFRAMERATE = mmioFOURCC!('K','e','y','R'); // ICM specific messages. enum { - ICM_COMPRESS_GET_FORMAT = ICM_USER + 4, - ICM_COMPRESS_GET_SIZE = ICM_USER + 5, - ICM_COMPRESS_QUERY = ICM_USER + 6, - ICM_COMPRESS_BEGIN = ICM_USER + 7, - ICM_COMPRESS = ICM_USER + 8, - ICM_COMPRESS_END = ICM_USER + 9, - ICM_DECOMPRESS_GET_FORMAT = ICM_USER + 10, - ICM_DECOMPRESS_QUERY = ICM_USER + 11, - ICM_DECOMPRESS_BEGIN = ICM_USER + 12, - ICM_DECOMPRESS = ICM_USER + 13, - ICM_DECOMPRESS_END = ICM_USER + 14, - ICM_DECOMPRESS_SET_PALETTE = ICM_USER + 29, - ICM_DECOMPRESS_GET_PALETTE = ICM_USER + 30, - ICM_DRAW_QUERY = ICM_USER + 31, - ICM_DRAW_BEGIN = ICM_USER + 15, - ICM_DRAW_GET_PALETTE = ICM_USER + 16, - ICM_DRAW_UPDATE = ICM_USER + 17, - ICM_DRAW_START = ICM_USER + 18, - ICM_DRAW_STOP = ICM_USER + 19, - ICM_DRAW_BITS = ICM_USER + 20, - ICM_DRAW_END = ICM_USER + 21, - ICM_DRAW_GETTIME = ICM_USER + 32, - ICM_DRAW = ICM_USER + 33, - ICM_DRAW_WINDOW = ICM_USER + 34, - ICM_DRAW_SETTIME = ICM_USER + 35, - ICM_DRAW_REALIZE = ICM_USER + 36, - ICM_DRAW_FLUSH = ICM_USER + 37, - ICM_DRAW_RENDERBUFFER = ICM_USER + 38, - ICM_DRAW_START_PLAY = ICM_USER + 39, - ICM_DRAW_STOP_PLAY = ICM_USER + 40, - ICM_DRAW_SUGGESTFORMAT = ICM_USER + 50, - ICM_DRAW_CHANGEPALETTE = ICM_USER + 51, - ICM_DRAW_IDLE = ICM_USER + 52, - ICM_GETBUFFERSWANTED = ICM_USER + 41, - ICM_GETDEFAULTKEYFRAMERATE = ICM_USER + 42, - ICM_DECOMPRESSEX_BEGIN = ICM_USER + 60, - ICM_DECOMPRESSEX_QUERY = ICM_USER + 61, - ICM_DECOMPRESSEX = ICM_USER + 62, - ICM_DECOMPRESSEX_END = ICM_USER + 63, - ICM_COMPRESS_FRAMES_INFO = ICM_USER + 70, - ICM_COMPRESS_FRAMES = ICM_USER + 71, - ICM_SET_STATUS_PROC = ICM_USER + 72, + ICM_COMPRESS_GET_FORMAT = ICM_USER + 4, + ICM_COMPRESS_GET_SIZE = ICM_USER + 5, + ICM_COMPRESS_QUERY = ICM_USER + 6, + ICM_COMPRESS_BEGIN = ICM_USER + 7, + ICM_COMPRESS = ICM_USER + 8, + ICM_COMPRESS_END = ICM_USER + 9, + ICM_DECOMPRESS_GET_FORMAT = ICM_USER + 10, + ICM_DECOMPRESS_QUERY = ICM_USER + 11, + ICM_DECOMPRESS_BEGIN = ICM_USER + 12, + ICM_DECOMPRESS = ICM_USER + 13, + ICM_DECOMPRESS_END = ICM_USER + 14, + ICM_DECOMPRESS_SET_PALETTE = ICM_USER + 29, + ICM_DECOMPRESS_GET_PALETTE = ICM_USER + 30, + ICM_DRAW_QUERY = ICM_USER + 31, + ICM_DRAW_BEGIN = ICM_USER + 15, + ICM_DRAW_GET_PALETTE = ICM_USER + 16, + ICM_DRAW_UPDATE = ICM_USER + 17, + ICM_DRAW_START = ICM_USER + 18, + ICM_DRAW_STOP = ICM_USER + 19, + ICM_DRAW_BITS = ICM_USER + 20, + ICM_DRAW_END = ICM_USER + 21, + ICM_DRAW_GETTIME = ICM_USER + 32, + ICM_DRAW = ICM_USER + 33, + ICM_DRAW_WINDOW = ICM_USER + 34, + ICM_DRAW_SETTIME = ICM_USER + 35, + ICM_DRAW_REALIZE = ICM_USER + 36, + ICM_DRAW_FLUSH = ICM_USER + 37, + ICM_DRAW_RENDERBUFFER = ICM_USER + 38, + ICM_DRAW_START_PLAY = ICM_USER + 39, + ICM_DRAW_STOP_PLAY = ICM_USER + 40, + ICM_DRAW_SUGGESTFORMAT = ICM_USER + 50, + ICM_DRAW_CHANGEPALETTE = ICM_USER + 51, + ICM_DRAW_IDLE = ICM_USER + 52, + ICM_GETBUFFERSWANTED = ICM_USER + 41, + ICM_GETDEFAULTKEYFRAMERATE = ICM_USER + 42, + ICM_DECOMPRESSEX_BEGIN = ICM_USER + 60, + ICM_DECOMPRESSEX_QUERY = ICM_USER + 61, + ICM_DECOMPRESSEX = ICM_USER + 62, + ICM_DECOMPRESSEX_END = ICM_USER + 63, + ICM_COMPRESS_FRAMES_INFO = ICM_USER + 70, + ICM_COMPRESS_FRAMES = ICM_USER + 71, + ICM_SET_STATUS_PROC = ICM_USER + 72, } struct ICOPEN { - DWORD dwSize; - DWORD fccType; - DWORD fccHandler; - DWORD dwVersion; - DWORD dwFlags; - LRESULT dwError; - LPVOID pV1Reserved; - LPVOID pV2Reserved; - DWORD dnDevNode; + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwVersion; + DWORD dwFlags; + LRESULT dwError; + LPVOID pV1Reserved; + LPVOID pV2Reserved; + DWORD dnDevNode; } struct ICINFO { - DWORD dwSize; - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwVersion; - DWORD dwVersionICM; - WCHAR[16] szName; - WCHAR[128] szDescription; - WCHAR[128] szDriver; + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwVersion; + DWORD dwVersionICM; + WCHAR[16] szName; + WCHAR[128] szDescription; + WCHAR[128] szDriver; } enum { - VIDCF_QUALITY = 0x0001, - VIDCF_CRUNCH = 0x0002, - VIDCF_TEMPORAL = 0x0004, - VIDCF_COMPRESSFRAMES = 0x0008, - VIDCF_DRAW = 0x0010, - VIDCF_FASTTEMPORALC = 0x0020, - VIDCF_FASTTEMPORALD = 0x0080, + VIDCF_QUALITY = 0x0001, + VIDCF_CRUNCH = 0x0002, + VIDCF_TEMPORAL = 0x0004, + VIDCF_COMPRESSFRAMES = 0x0008, + VIDCF_DRAW = 0x0010, + VIDCF_FASTTEMPORALC = 0x0020, + VIDCF_FASTTEMPORALD = 0x0080, } const ICCOMPRESS_KEYFRAME = 0x00000001L; struct ICCOMPRESS { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiOutput; - LPVOID lpOutput; - LPBITMAPINFOHEADER lpbiInput; - LPVOID lpInput; - LPDWORD lpckid; - LPDWORD lpdwFlags; - LONG lFrameNum; - DWORD dwFrameSize; - DWORD dwQuality; - LPBITMAPINFOHEADER lpbiPrev; - LPVOID lpPrev; + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPDWORD lpckid; + LPDWORD lpdwFlags; + LONG lFrameNum; + DWORD dwFrameSize; + DWORD dwQuality; + LPBITMAPINFOHEADER lpbiPrev; + LPVOID lpPrev; } const ICCOMPRESSFRAMES_PADDING = 0x00000001; struct ICCOMPRESSFRAMES { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiOutput; - LPARAM lOutput; - LPBITMAPINFOHEADER lpbiInput; - LPARAM lInput; - LONG lStartFrame; - LONG lFrameCount; - LONG lQuality; - LONG lDataRate; - LONG lKeyRate; - DWORD dwRate; - DWORD dwScale; DWORD dwOverheadPerFrame; - DWORD dwReserved2; + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPARAM lOutput; + LPBITMAPINFOHEADER lpbiInput; + LPARAM lInput; + LONG lStartFrame; + LONG lFrameCount; + LONG lQuality; + LONG lDataRate; + LONG lKeyRate; + DWORD dwRate; + DWORD dwScale; DWORD dwOverheadPerFrame; + DWORD dwReserved2; LONG function(LPARAM lInput, LONG lFrame, LPVOID lpBits, LONG len) GetData; LONG function(LPARAM lOutput, LONG lFrame, LPVOID lpBits, LONG len) PutData; } enum { - ICSTATUS_START = 0, - ICSTATUS_STATUS = 1, - ICSTATUS_END = 2, - ICSTATUS_ERROR = 3, - ICSTATUS_YIELD = 4, + ICSTATUS_START = 0, + ICSTATUS_STATUS = 1, + ICSTATUS_END = 2, + ICSTATUS_ERROR = 3, + ICSTATUS_YIELD = 4, } struct ICSETSTATUSPROC { - DWORD dwFlags; - LPARAM lParam; + DWORD dwFlags; + LPARAM lParam; LONG function(LPARAM lParam, UINT message, LONG l) Status; } enum { - ICDECOMPRESS_NOTKEYFRAME = 0x08000000, - ICDECOMPRESS_NULLFRAME = 0x10000000, - ICDECOMPRESS_PREROLL = 0x20000000, - ICDECOMPRESS_UPDATE = 0x40000000, - ICDECOMPRESS_HURRYUP = 0x80000000, + ICDECOMPRESS_NOTKEYFRAME = 0x08000000, + ICDECOMPRESS_NULLFRAME = 0x10000000, + ICDECOMPRESS_PREROLL = 0x20000000, + ICDECOMPRESS_UPDATE = 0x40000000, + ICDECOMPRESS_HURRYUP = 0x80000000, } struct ICDECOMPRESS { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiInput; - LPVOID lpInput; - LPBITMAPINFOHEADER lpbiOutput; - LPVOID lpOutput; - DWORD ckid; + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + DWORD ckid; } struct ICDECOMPRESSEX { - DWORD dwFlags; + DWORD dwFlags; LPBITMAPINFOHEADER lpbiSrc; - LPVOID lpSrc; - LPBITMAPINFOHEADER lpbiDst; - LPVOID lpDst; - int xDst; - int yDst; - int dxDst; - int dyDst; - int xSrc; - int ySrc; - int dxSrc; - int dySrc; + LPVOID lpSrc; + LPBITMAPINFOHEADER lpbiDst; + LPVOID lpDst; + int xDst; + int yDst; + int dxDst; + int dyDst; + int xSrc; + int ySrc; + int dxSrc; + int dySrc; } enum { - ICDRAW_QUERY = 0x00000001, - ICDRAW_FULLSCREEN = 0x00000002, - ICDRAW_HDC = 0x00000004, - ICDRAW_ANIMATE = 0x00000008, - ICDRAW_CONTINUE = 0x00000010, - ICDRAW_MEMORYDC = 0x00000020, - ICDRAW_UPDATING = 0x00000040, - ICDRAW_RENDER = 0x00000080, - ICDRAW_BUFFER = 0x00000100, + ICDRAW_QUERY = 0x00000001, + ICDRAW_FULLSCREEN = 0x00000002, + ICDRAW_HDC = 0x00000004, + ICDRAW_ANIMATE = 0x00000008, + ICDRAW_CONTINUE = 0x00000010, + ICDRAW_MEMORYDC = 0x00000020, + ICDRAW_UPDATING = 0x00000040, + ICDRAW_RENDER = 0x00000080, + ICDRAW_BUFFER = 0x00000100, } struct ICDRAWBEGIN { - DWORD dwFlags; - HPALETTE hpal; - HWND hwnd; - HDC hdc; - int xDst; - int yDst; - int dxDst; - int dyDst; - LPBITMAPINFOHEADER lpbi; - int xSrc; - int ySrc; - int dxSrc; - int dySrc; - DWORD dwRate; - DWORD dwScale; + DWORD dwFlags; + HPALETTE hpal; + HWND hwnd; + HDC hdc; + int xDst; + int yDst; + int dxDst; + int dyDst; + LPBITMAPINFOHEADER lpbi; + int xSrc; + int ySrc; + int dxSrc; + int dySrc; + DWORD dwRate; + DWORD dwScale; } enum { - ICDRAW_NOTKEYFRAME = 0x08000000, - ICDRAW_NULLFRAME = 0x10000000, - ICDRAW_PREROLL = 0x20000000, - ICDRAW_UPDATE = 0x40000000, - ICDRAW_HURRYUP = 0x80000000, + ICDRAW_NOTKEYFRAME = 0x08000000, + ICDRAW_NULLFRAME = 0x10000000, + ICDRAW_PREROLL = 0x20000000, + ICDRAW_UPDATE = 0x40000000, + ICDRAW_HURRYUP = 0x80000000, } struct ICDRAW { - DWORD dwFlags; - LPVOID lpFormat; - LPVOID lpData; - DWORD cbData; - LONG lTime; + DWORD dwFlags; + LPVOID lpFormat; + LPVOID lpData; + DWORD cbData; + LONG lTime; } struct ICDRAWSUGGEST { - LPBITMAPINFOHEADER lpbiIn; - LPBITMAPINFOHEADER lpbiSuggest; - int dxSrc; - int dySrc; - int dxDst; - int dyDst; - HIC hicDecompressor; + LPBITMAPINFOHEADER lpbiIn; + LPBITMAPINFOHEADER lpbiSuggest; + int dxSrc; + int dySrc; + int dxDst; + int dyDst; + HIC hicDecompressor; } struct ICPALETTE { - DWORD dwFlags; - int iStart; - int iLen; - LPPALETTEENTRY lppe; + DWORD dwFlags; + int iStart; + int iLen; + LPPALETTEENTRY lppe; } @@ -366,17 +366,17 @@ extern (Windows) { } enum { - ICINSTALL_FUNCTION = 0x0001, - ICINSTALL_DRIVER = 0x0002, - ICINSTALL_HDRV = 0x0004, - ICINSTALL_UNICODE = 0x8000, - ICINSTALL_DRIVERW = 0x8002, + ICINSTALL_FUNCTION = 0x0001, + ICINSTALL_DRIVER = 0x0002, + ICINSTALL_HDRV = 0x0004, + ICINSTALL_UNICODE = 0x8000, + ICINSTALL_DRIVERW = 0x8002, } // query macros -const ICMF_CONFIGURE_QUERY = 0x00000001; -const ICMF_ABOUT_QUERY = 0x00000001; +const ICMF_CONFIGURE_QUERY = 0x00000001; +const ICMF_ABOUT_QUERY = 0x00000001; DWORD ICQueryAbout(HIC hic) { return ICSendMessage(hic, ICM_ABOUT, -1, ICMF_ABOUT_QUERY) == ICERR_OK; @@ -474,7 +474,7 @@ LRESULT ICDecompressEnd(HIC hic) { } LRESULT ICDecompressEx(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, - LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { ICDECOMPRESSEX ic; @@ -634,22 +634,22 @@ extern (Windows) { } struct COMPVARS { - LONG cbSize = this.sizeof; - DWORD dwFlags; - HIC hic; + LONG cbSize = this.sizeof; + DWORD dwFlags; + HIC hic; DWORD fccType; DWORD fccHandler; - LPBITMAPINFO lpbiIn; - LPBITMAPINFO lpbiOut; - LPVOID lpBitsOut; - LPVOID lpBitsPrev; - LONG lFrame; - LONG lKey; - LONG lDataRate; - LONG lQ; - LONG lKeyCount; - LPVOID lpState; - LONG cbState; + LPBITMAPINFO lpbiIn; + LPBITMAPINFO lpbiOut; + LPVOID lpBitsOut; + LPVOID lpBitsPrev; + LONG lFrame; + LONG lKey; + LONG lDataRate; + LONG lQ; + LONG lKeyCount; + LPVOID lpState; + LONG cbState; } alias COMPVARS* PCOMPVARS; @@ -660,10 +660,10 @@ extern (Windows) { } enum { - ICMF_CHOOSE_KEYFRAME = 0x0001, - ICMF_CHOOSE_DATARATE = 0x0002, - ICMF_CHOOSE_PREVIEW = 0x0004, - ICMF_CHOOSE_ALLCOMPRESSORS = 0x0008, + ICMF_CHOOSE_KEYFRAME = 0x0001, + ICMF_CHOOSE_DATARATE = 0x0002, + ICMF_CHOOSE_PREVIEW = 0x0004, + ICMF_CHOOSE_ALLCOMPRESSORS = 0x0008, } extern (Windows) { @@ -676,23 +676,23 @@ extern (Windows) { mixin DECLARE_HANDLE!("HDRAWDIB"); enum { - DDF_0001 = 0x0001, - DDF_UPDATE = 0x0002, - DDF_SAME_HDC = 0x0004, - DDF_SAME_DRAW = 0x0008, - DDF_DONTDRAW = 0x0010, - DDF_ANIMATE = 0x0020, - DDF_BUFFER = 0x0040, - DDF_JUSTDRAWIT = 0x0080, - DDF_FULLSCREEN = 0x0100, - DDF_BACKGROUNDPAL = 0x0200, - DDF_NOTKEYFRAME = 0x0400, - DDF_HURRYUP = 0x0800, - DDF_HALFTONE = 0x1000, - DDF_2000 = 0x2000, - DDF_PREROLL = DDF_DONTDRAW, - DDF_SAME_DIB = DDF_SAME_DRAW, - DDF_SAME_SIZE = DDF_SAME_DRAW, + DDF_0001 = 0x0001, + DDF_UPDATE = 0x0002, + DDF_SAME_HDC = 0x0004, + DDF_SAME_DRAW = 0x0008, + DDF_DONTDRAW = 0x0010, + DDF_ANIMATE = 0x0020, + DDF_BUFFER = 0x0040, + DDF_JUSTDRAWIT = 0x0080, + DDF_FULLSCREEN = 0x0100, + DDF_BACKGROUNDPAL = 0x0200, + DDF_NOTKEYFRAME = 0x0400, + DDF_HURRYUP = 0x0800, + DDF_HALFTONE = 0x1000, + DDF_2000 = 0x2000, + DDF_PREROLL = DDF_DONTDRAW, + DDF_SAME_DIB = DDF_SAME_DRAW, + DDF_SAME_SIZE = DDF_SAME_DRAW, } extern (Windows) { @@ -736,16 +736,16 @@ extern (Windows) { } enum { - PD_CAN_DRAW_DIB = 0x0001, - PD_CAN_STRETCHDIB = 0x0002, - PD_STRETCHDIB_1_1_OK = 0x0004, - PD_STRETCHDIB_1_2_OK = 0x0008, - PD_STRETCHDIB_1_N_OK = 0x0010, + PD_CAN_DRAW_DIB = 0x0001, + PD_CAN_STRETCHDIB = 0x0002, + PD_STRETCHDIB_1_1_OK = 0x0004, + PD_STRETCHDIB_1_2_OK = 0x0008, + PD_STRETCHDIB_1_N_OK = 0x0010, } extern (Windows) { LRESULT DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi); - void StretchDIB(LPBITMAPINFOHEADER biDst, LPVOID lpDst, int DstX, int DstY, + void StretchDIB(LPBITMAPINFOHEADER biDst, LPVOID lpDst, int DstX, int DstY, int DstXE, int DstYE, LPBITMAPINFOHEADER biSrc, LPVOID lpSrc, int SrcX, int SrcY, int SrcXE, int SrcYE); } @@ -754,28 +754,28 @@ alias DWORD FOURCC; alias WORD TWOCC; -const formtypeAVI = mmioFOURCC!('A', 'V', 'I', ' '); -const listtypeAVIHEADER = mmioFOURCC!('h', 'd', 'r', 'l'); -const ckidAVIMAINHDR = mmioFOURCC!('a', 'v', 'i', 'h'); -const listtypeSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'l'); -const ckidSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'h'); -const ckidSTREAMFORMAT = mmioFOURCC!('s', 't', 'r', 'f'); -const ckidSTREAMHANDLERDATA = mmioFOURCC!('s', 't', 'r', 'd'); -const ckidSTREAMNAME = mmioFOURCC!('s', 't', 'r', 'n'); -const listtypeAVIMOVIE = mmioFOURCC!('m', 'o', 'v', 'i'); -const listtypeAVIRECORD = mmioFOURCC!('r', 'e', 'c', ' '); -const ckidAVINEWINDEX = mmioFOURCC!('i', 'd', 'x', '1'); -const streamtypeVIDEO = mmioFOURCC!('v', 'i', 'd', 's'); -const streamtypeAUDIO = mmioFOURCC!('a', 'u', 'd', 's'); -const streamtypeMIDI = mmioFOURCC!('m', 'i', 'd', 's'); -const streamtypeTEXT = mmioFOURCC!('t', 'x', 't', 's'); - -const cktypeDIBbits = aviTWOCC!('d', 'b'); -const cktypeDIBcompressed = aviTWOCC!('d', 'c'); -const cktypePALchange = aviTWOCC!('p', 'c'); -const cktypeWAVEbytes = aviTWOCC!('w', 'b'); - -const ckidAVIPADDING = mmioFOURCC!('J', 'U', 'N', 'K'); +const formtypeAVI = mmioFOURCC!('A', 'V', 'I', ' '); +const listtypeAVIHEADER = mmioFOURCC!('h', 'd', 'r', 'l'); +const ckidAVIMAINHDR = mmioFOURCC!('a', 'v', 'i', 'h'); +const listtypeSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'l'); +const ckidSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'h'); +const ckidSTREAMFORMAT = mmioFOURCC!('s', 't', 'r', 'f'); +const ckidSTREAMHANDLERDATA = mmioFOURCC!('s', 't', 'r', 'd'); +const ckidSTREAMNAME = mmioFOURCC!('s', 't', 'r', 'n'); +const listtypeAVIMOVIE = mmioFOURCC!('m', 'o', 'v', 'i'); +const listtypeAVIRECORD = mmioFOURCC!('r', 'e', 'c', ' '); +const ckidAVINEWINDEX = mmioFOURCC!('i', 'd', 'x', '1'); +const streamtypeVIDEO = mmioFOURCC!('v', 'i', 'd', 's'); +const streamtypeAUDIO = mmioFOURCC!('a', 'u', 'd', 's'); +const streamtypeMIDI = mmioFOURCC!('m', 'i', 'd', 's'); +const streamtypeTEXT = mmioFOURCC!('t', 'x', 't', 's'); + +const cktypeDIBbits = aviTWOCC!('d', 'b'); +const cktypeDIBcompressed = aviTWOCC!('d', 'c'); +const cktypePALchange = aviTWOCC!('p', 'c'); +const cktypeWAVEbytes = aviTWOCC!('w', 'b'); + +const ckidAVIPADDING = mmioFOURCC!('J', 'U', 'N', 'K'); DWORD FromHex(char n) { return (n >= 'A') ? n + 10 - 'A' : n - '0'; @@ -798,11 +798,11 @@ DWORD MAKEAVICKID(WORD tcc, WORD stream) { } enum { - AVIF_HASINDEX = 0x00000010, - AVIF_MUSTUSEINDEX = 0x00000020, - AVIF_ISINTERLEAVED = 0x00000100, - AVIF_WASCAPTUREFILE = 0x00010000, - AVIF_COPYRIGHTED = 0x00020000, + AVIF_HASINDEX = 0x00000010, + AVIF_MUSTUSEINDEX = 0x00000020, + AVIF_ISINTERLEAVED = 0x00000100, + AVIF_WASCAPTUREFILE = 0x00010000, + AVIF_COPYRIGHTED = 0x00020000, } const AVI_HEADERSIZE = 2048; @@ -826,155 +826,155 @@ const AVISF_DISABLED = 0x00000001; const AVISF_VIDEO_PALCHANGES = 0x00010000; struct AVIStreamHeader { - FOURCC fccType; - FOURCC fccHandler; - DWORD dwFlags; - WORD wPriority; - WORD wLanguage; - DWORD dwInitialFrames; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; + FOURCC fccType; + FOURCC fccHandler; + DWORD dwFlags; + WORD wPriority; + WORD wLanguage; + DWORD dwInitialFrames; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; } enum { - AVIIF_FIRSTPART = 0x00000020L, - AVIIF_LASTPART = 0x00000040L, - AVIIF_MIDPART = (AVIIF_LASTPART|AVIIF_FIRSTPART), - AVIIF_NOTIME = 0x00000100L, - AVIIF_COMPUSE = 0x0FFF0000L, + AVIIF_FIRSTPART = 0x00000020L, + AVIIF_LASTPART = 0x00000040L, + AVIIF_MIDPART = (AVIIF_LASTPART|AVIIF_FIRSTPART), + AVIIF_NOTIME = 0x00000100L, + AVIIF_COMPUSE = 0x0FFF0000L, } struct AVIINDEXENTRY { - DWORD ckid; - DWORD dwFlags; - DWORD dwChunkOffset; - DWORD dwChunkLength; + DWORD ckid; + DWORD dwFlags; + DWORD dwChunkOffset; + DWORD dwChunkLength; } struct AVIPALCHANGE { - BYTE bFirstEntry; - BYTE bNumEntries; - WORD wFlags; - PALETTEENTRY[1] _peNew; + BYTE bFirstEntry; + BYTE bNumEntries; + WORD wFlags; + PALETTEENTRY[1] _peNew; PALETTEENTRY* peNew() { return _peNew.ptr; } } const AVIGETFRAMEF_BESTDISPLAYFMT = 1; struct AVISTREAMINFOW { - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwCaps; - WORD wPriority; - WORD wLanguage; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwInitialFrames; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; - DWORD dwEditCount; - DWORD dwFormatChangeCount; - WCHAR[64] szName; + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + WCHAR[64] szName; } alias AVISTREAMINFOW* LPAVISTREAMINFOW; struct AVISTREAMINFOA { - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwCaps; - WORD wPriority; - WORD wLanguage; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwInitialFrames; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; - DWORD dwEditCount; - DWORD dwFormatChangeCount; - char[64] szName; + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + char[64] szName; } alias AVISTREAMINFOA* LPAVISTREAMINFOA; version(Unicode) { - alias AVISTREAMINFOW AVISTREAMINFO; - alias LPAVISTREAMINFOW LPAVISTREAMINFO; + alias AVISTREAMINFOW AVISTREAMINFO; + alias LPAVISTREAMINFOW LPAVISTREAMINFO; } else { // Unicode - alias AVISTREAMINFOA AVISTREAMINFO; - alias LPAVISTREAMINFOA LPAVISTREAMINFO; + alias AVISTREAMINFOA AVISTREAMINFO; + alias LPAVISTREAMINFOA LPAVISTREAMINFO; } -const AVISTREAMINFO_DISABLED = 0x00000001; -const AVISTREAMINFO_FORMATCHANGES = 0x00010000; +const AVISTREAMINFO_DISABLED = 0x00000001; +const AVISTREAMINFO_FORMATCHANGES = 0x00010000; struct AVIFILEINFOW { - DWORD dwMaxBytesPerSec; - DWORD dwFlags; - DWORD dwCaps; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwScale; - DWORD dwRate; - DWORD dwLength; - DWORD dwEditCount; - WCHAR[64] szFileType; + DWORD dwMaxBytesPerSec; + DWORD dwFlags; + DWORD dwCaps; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwScale; + DWORD dwRate; + DWORD dwLength; + DWORD dwEditCount; + WCHAR[64] szFileType; } alias AVIFILEINFOW* LPAVIFILEINFOW; struct AVIFILEINFOA { - DWORD dwMaxBytesPerSec; - DWORD dwFlags; - DWORD dwCaps; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwScale; - DWORD dwRate; - DWORD dwLength; - DWORD dwEditCount; - char[64] szFileType; + DWORD dwMaxBytesPerSec; + DWORD dwFlags; + DWORD dwCaps; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwScale; + DWORD dwRate; + DWORD dwLength; + DWORD dwEditCount; + char[64] szFileType; } alias AVIFILEINFOA* LPAVIFILEINFOA; version(Unicode) { - alias AVIFILEINFOW AVIFILEINFO; - alias LPAVIFILEINFOW LPAVIFILEINFO; + alias AVIFILEINFOW AVIFILEINFO; + alias LPAVIFILEINFOW LPAVIFILEINFO; } else { // Unicode - alias AVIFILEINFOA AVIFILEINFO; - alias LPAVIFILEINFOA LPAVIFILEINFO; + alias AVIFILEINFOA AVIFILEINFO; + alias LPAVIFILEINFOA LPAVIFILEINFO; } enum { - AVIFILEINFO_HASINDEX = 0x00000010, - AVIFILEINFO_MUSTUSEINDEX = 0x00000020, - AVIFILEINFO_ISINTERLEAVED = 0x00000100, - AVIFILEINFO_WASCAPTUREFILE = 0x00010000, - AVIFILEINFO_COPYRIGHTED = 0x00020000, + AVIFILEINFO_HASINDEX = 0x00000010, + AVIFILEINFO_MUSTUSEINDEX = 0x00000020, + AVIFILEINFO_ISINTERLEAVED = 0x00000100, + AVIFILEINFO_WASCAPTUREFILE = 0x00010000, + AVIFILEINFO_COPYRIGHTED = 0x00020000, } enum { - AVIFILECAPS_CANREAD = 0x00000001, - AVIFILECAPS_CANWRITE = 0x00000002, - AVIFILECAPS_ALLKEYFRAMES = 0x00000010, - AVIFILECAPS_NOCOMPRESSION = 0x00000020, + AVIFILECAPS_CANREAD = 0x00000001, + AVIFILECAPS_CANWRITE = 0x00000002, + AVIFILECAPS_ALLKEYFRAMES = 0x00000010, + AVIFILECAPS_NOCOMPRESSION = 0x00000020, } extern (Windows) { @@ -982,25 +982,25 @@ extern (Windows) { } struct AVICOMPRESSOPTIONS { - DWORD fccType; - DWORD fccHandler; - DWORD dwKeyFrameEvery; - DWORD dwQuality; - DWORD dwBytesPerSecond; - DWORD dwFlags; - LPVOID lpFormat; - DWORD cbFormat; - LPVOID lpParms; - DWORD cbParms; - DWORD dwInterleaveEvery; + DWORD fccType; + DWORD fccHandler; + DWORD dwKeyFrameEvery; + DWORD dwQuality; + DWORD dwBytesPerSecond; + DWORD dwFlags; + LPVOID lpFormat; + DWORD cbFormat; + LPVOID lpParms; + DWORD cbParms; + DWORD dwInterleaveEvery; } alias AVICOMPRESSOPTIONS* LPAVICOMPRESSOPTIONS; enum { - AVICOMPRESSF_INTERLEAVE = 0x00000001, - AVICOMPRESSF_DATARATE = 0x00000002, - AVICOMPRESSF_KEYFRAMES = 0x00000004, - AVICOMPRESSF_VALID = 0x00000008, + AVICOMPRESSF_INTERLEAVE = 0x00000001, + AVICOMPRESSF_DATARATE = 0x00000002, + AVICOMPRESSF_KEYFRAMES = 0x00000004, + AVICOMPRESSF_VALID = 0x00000008, } /+ TODO: @@ -1170,9 +1170,9 @@ DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal, 0x00020009, 0, 0); DEFINE_AVIGUID(CLSID_AVIFile, 0x00020000, 0, 0); -#define AVIFILEHANDLER_CANREAD 0x0001 -#define AVIFILEHANDLER_CANWRITE 0x0002 -#define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004 +#define AVIFILEHANDLER_CANREAD 0x0001 +#define AVIFILEHANDLER_CANWRITE 0x0002 +#define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004 STDAPI_(void) AVIFileInit(void); STDAPI_(void) AVIFileExit(void); @@ -1186,23 +1186,23 @@ STDAPI AVIFileOpenA (PAVIFILE FAR * ppfile, LPCSTR szFile, STDAPI AVIFileOpenW (PAVIFILE FAR * ppfile, LPCWSTR szFile, UINT uMode, LPCLSID lpHandler); #ifdef UNICODE -#define AVIFileOpen AVIFileOpenW +#define AVIFileOpen AVIFileOpenW #else -#define AVIFileOpen AVIFileOpenA +#define AVIFileOpen AVIFileOpenA #endif #else STDAPI AVIFileOpen (PAVIFILE FAR * ppfile, LPCSTR szFile, UINT uMode, LPCLSID lpHandler); -#define AVIFileOpenW AVIFileOpen +#define AVIFileOpenW AVIFileOpen #endif #ifdef _WIN32 STDAPI AVIFileInfoW (PAVIFILE pfile, LPAVIFILEINFOW pfi, LONG lSize); STDAPI AVIFileInfoA (PAVIFILE pfile, LPAVIFILEINFOA pfi, LONG lSize); #ifdef UNICODE -#define AVIFileInfo AVIFileInfoW +#define AVIFileInfo AVIFileInfoW #else -#define AVIFileInfo AVIFileInfoA +#define AVIFileInfo AVIFileInfoA #endif #else STDAPI AVIFileInfo (PAVIFILE pfile, LPAVIFILEINFO pfi, LONG lSize); @@ -1217,24 +1217,24 @@ STDAPI AVIFileGetStream (PAVIFILE pfile, PAVISTREAM FAR * ppavi, DWORD fccTy STDAPI AVIFileCreateStreamW (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOW FAR * psi); STDAPI AVIFileCreateStreamA (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOA FAR * psi); #ifdef UNICODE -#define AVIFileCreateStream AVIFileCreateStreamW +#define AVIFileCreateStream AVIFileCreateStreamW #else -#define AVIFileCreateStream AVIFileCreateStreamA +#define AVIFileCreateStream AVIFileCreateStreamA #endif #else STDAPI AVIFileCreateStream(PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFO FAR * psi); #define AVIFileCreateStreamW AVIFileCreateStream #endif -STDAPI AVIFileWriteData (PAVIFILE pfile, +STDAPI AVIFileWriteData (PAVIFILE pfile, DWORD ckid, LPVOID lpData, LONG cbData); -STDAPI AVIFileReadData (PAVIFILE pfile, +STDAPI AVIFileReadData (PAVIFILE pfile, DWORD ckid, LPVOID lpData, LONG FAR *lpcbData); -STDAPI AVIFileEndRecord (PAVIFILE pfile); +STDAPI AVIFileEndRecord (PAVIFILE pfile); STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi); STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi); @@ -1242,9 +1242,9 @@ STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi); STDAPI AVIStreamInfoW (PAVISTREAM pavi, LPAVISTREAMINFOW psi, LONG lSize); STDAPI AVIStreamInfoA (PAVISTREAM pavi, LPAVISTREAMINFOA psi, LONG lSize); #ifdef UNICODE -#define AVIStreamInfo AVIStreamInfoW +#define AVIStreamInfo AVIStreamInfoW #else -#define AVIStreamInfo AVIStreamInfoA +#define AVIStreamInfo AVIStreamInfoA #endif STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi, LONG lPos, LONG lFlags); @@ -1260,7 +1260,7 @@ STDAPI AVIStreamRead (PAVISTREAM pavi, LONG cbBuffer, LONG FAR * plBytes, LONG FAR * plSamples); -#define AVISTREAMREAD_CONVENIENT (-1L) +#define AVISTREAMREAD_CONVENIENT (-1L) STDAPI AVIStreamWrite (PAVISTREAM pavi, LONG lStart, LONG lSamples, @@ -1289,9 +1289,9 @@ STDAPI AVIStreamOpenFromFileW(PAVISTREAM FAR *ppavi, LPCWSTR szFile, DWORD fccType, LONG lParam, UINT mode, CLSID FAR *pclsidHandler); #ifdef UNICODE -#define AVIStreamOpenFromFile AVIStreamOpenFromFileW +#define AVIStreamOpenFromFile AVIStreamOpenFromFileW #else -#define AVIStreamOpenFromFile AVIStreamOpenFromFileA +#define AVIStreamOpenFromFile AVIStreamOpenFromFileA #endif STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, @@ -1317,7 +1317,7 @@ STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, #define FIND_INDEX 0x00004000L #define AVIStreamFindKeyFrame AVIStreamFindSample -#define FindKeyFrame FindSample +#define FindKeyFrame FindSample #define AVIStreamClose AVIStreamRelease #define AVIFileClose AVIFileRelease @@ -1366,7 +1366,7 @@ STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, #define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi)) -#define AVIStreamSampleSize(pavi, lPos, plSize) AVIStreamRead(pavi,lPos,1,NULL,0,plSize,NULL) +#define AVIStreamSampleSize(pavi, lPos, plSize) AVIStreamRead(pavi,lPos,1,NULL,0,plSize,NULL) #define AVIStreamFormatSize(pavi, lPos, plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize) @@ -1377,8 +1377,8 @@ STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, #endif STDAPI AVIMakeCompressedStream( - PAVISTREAM FAR * ppsCompressed, - PAVISTREAM ppsSource, + PAVISTREAM FAR * ppsCompressed, + PAVISTREAM ppsSource, AVICOMPRESSOPTIONS FAR * lpOptions, CLSID FAR *pclsidHandler); @@ -1386,7 +1386,7 @@ EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile, CLSID FAR *pclsidHandler, AVISAVECALLBACK lpfnCallback, int nStreams, - PAVISTREAM pfile, + PAVISTREAM pfile, LPAVICOMPRESSOPTIONS lpOptions, ...); @@ -1400,7 +1400,7 @@ EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile, CLSID FAR *pclsidHandler, AVISAVECALLBACK lpfnCallback, int nStreams, - PAVISTREAM pfile, + PAVISTREAM pfile, LPAVICOMPRESSOPTIONS lpOptions, ...); @@ -1411,18 +1411,18 @@ STDAPI AVISaveVW(LPCWSTR szFile, PAVISTREAM FAR * ppavi, LPAVICOMPRESSOPTIONS FAR *plpOptions); #ifdef UNICODE -#define AVISave AVISaveW -#define AVISaveV AVISaveVW +#define AVISave AVISaveW +#define AVISaveV AVISaveVW #else -#define AVISave AVISaveA -#define AVISaveV AVISaveVA +#define AVISave AVISaveA +#define AVISaveV AVISaveVA #endif STDAPI_(INT_PTR) AVISaveOptions(HWND hwnd, - UINT uiFlags, - int nStreams, + UINT uiFlags, + int nStreams, PAVISTREAM FAR *ppavi, LPAVICOMPRESSOPTIONS FAR *plpOptions); @@ -1432,13 +1432,13 @@ STDAPI AVISaveOptionsFree(int nStreams, STDAPI AVIBuildFilterW(LPWSTR lpszFilter, LONG cbFilter, BOOL fSaving); STDAPI AVIBuildFilterA(LPSTR lpszFilter, LONG cbFilter, BOOL fSaving); #ifdef UNICODE -#define AVIBuildFilter AVIBuildFilterW +#define AVIBuildFilter AVIBuildFilterW #else -#define AVIBuildFilter AVIBuildFilterA +#define AVIBuildFilter AVIBuildFilterA #endif -STDAPI AVIMakeFileFromStreams(PAVIFILE FAR * ppfile, - int nStreams, - PAVISTREAM FAR * papStreams); +STDAPI AVIMakeFileFromStreams(PAVIFILE FAR * ppfile, + int nStreams, + PAVISTREAM FAR * papStreams); STDAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal, PAVISTREAM FAR *ppstream); @@ -1449,8 +1449,8 @@ STDAPI AVIGetFromClipboard(PAVIFILE FAR * lppf); STDAPI AVIClearClipboard(void); STDAPI CreateEditableStream( - PAVISTREAM FAR * ppsEditable, - PAVISTREAM psSource); + PAVISTREAM FAR * ppsEditable, + PAVISTREAM psSource); STDAPI EditStreamCut(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); @@ -1466,11 +1466,11 @@ STDAPI EditStreamSetNameW(PAVISTREAM pavi, LPCWSTR lpszName); STDAPI EditStreamSetInfoW(PAVISTREAM pavi, LPAVISTREAMINFOW lpInfo, LONG cbInfo); STDAPI EditStreamSetInfoA(PAVISTREAM pavi, LPAVISTREAMINFOA lpInfo, LONG cbInfo); #ifdef UNICODE -#define EditStreamSetInfo EditStreamSetInfoW -#define EditStreamSetName EditStreamSetNameW +#define EditStreamSetInfo EditStreamSetInfoW +#define EditStreamSetName EditStreamSetNameW #else -#define EditStreamSetInfo EditStreamSetInfoA -#define EditStreamSetName EditStreamSetNameA +#define EditStreamSetInfo EditStreamSetInfoA +#define EditStreamSetName EditStreamSetNameA #endif +/ const AVIERR_OK = 0L; @@ -1479,25 +1479,25 @@ SCODE MAKE_AVIERR(DWORD error) { return MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x4000 + error); } -const AVIERR_UNSUPPORTED = MAKE_AVIERR(101); -const AVIERR_BADFORMAT = MAKE_AVIERR(102); -const AVIERR_MEMORY = MAKE_AVIERR(103); -const AVIERR_INTERNAL = MAKE_AVIERR(104); -const AVIERR_BADFLAGS = MAKE_AVIERR(105); -const AVIERR_BADPARAM = MAKE_AVIERR(106); -const AVIERR_BADSIZE = MAKE_AVIERR(107); -const AVIERR_BADHANDLE = MAKE_AVIERR(108); -const AVIERR_FILEREAD = MAKE_AVIERR(109); -const AVIERR_FILEWRITE = MAKE_AVIERR(110); -const AVIERR_FILEOPEN = MAKE_AVIERR(111); -const AVIERR_COMPRESSOR = MAKE_AVIERR(112); -const AVIERR_NOCOMPRESSOR = MAKE_AVIERR(113); -const AVIERR_READONLY = MAKE_AVIERR(114); -const AVIERR_NODATA = MAKE_AVIERR(115); -const AVIERR_BUFFERTOOSMALL = MAKE_AVIERR(116); -const AVIERR_CANTCOMPRESS = MAKE_AVIERR(117); -const AVIERR_USERABORT = MAKE_AVIERR(198); -const AVIERR_ERROR = MAKE_AVIERR(199); +const AVIERR_UNSUPPORTED = MAKE_AVIERR(101); +const AVIERR_BADFORMAT = MAKE_AVIERR(102); +const AVIERR_MEMORY = MAKE_AVIERR(103); +const AVIERR_INTERNAL = MAKE_AVIERR(104); +const AVIERR_BADFLAGS = MAKE_AVIERR(105); +const AVIERR_BADPARAM = MAKE_AVIERR(106); +const AVIERR_BADSIZE = MAKE_AVIERR(107); +const AVIERR_BADHANDLE = MAKE_AVIERR(108); +const AVIERR_FILEREAD = MAKE_AVIERR(109); +const AVIERR_FILEWRITE = MAKE_AVIERR(110); +const AVIERR_FILEOPEN = MAKE_AVIERR(111); +const AVIERR_COMPRESSOR = MAKE_AVIERR(112); +const AVIERR_NOCOMPRESSOR = MAKE_AVIERR(113); +const AVIERR_READONLY = MAKE_AVIERR(114); +const AVIERR_NODATA = MAKE_AVIERR(115); +const AVIERR_BUFFERTOOSMALL = MAKE_AVIERR(116); +const AVIERR_CANTCOMPRESS = MAKE_AVIERR(117); +const AVIERR_USERABORT = MAKE_AVIERR(198); +const AVIERR_ERROR = MAKE_AVIERR(199); const TCHAR[] MCIWND_WINDOW_CLASS = "MCIWndClass"; @@ -1507,9 +1507,9 @@ extern (Windows) { } version(Unicode) { - alias MCIWndCreateW MCIWndCreate; + alias MCIWndCreateW MCIWndCreate; } else { // Unicode - alias MCIWndCreateA MCIWndCreate; + alias MCIWndCreateA MCIWndCreate; } extern(Windows) { @@ -1517,35 +1517,35 @@ extern(Windows) { } enum { - MCIWNDOPENF_NEW = 0x0001, - MCIWNDF_NOAUTOSIZEWINDOW = 0x0001, - MCIWNDF_NOPLAYBAR = 0x0002, - MCIWNDF_NOAUTOSIZEMOVIE = 0x0004, - MCIWNDF_NOMENU = 0x0008, - MCIWNDF_SHOWNAME = 0x0010, - MCIWNDF_SHOWPOS = 0x0020, - MCIWNDF_SHOWMODE = 0x0040, - MCIWNDF_SHOWALL = 0x0070, - MCIWNDF_NOTIFYMODE = 0x0100, - MCIWNDF_NOTIFYPOS = 0x0200, - MCIWNDF_NOTIFYSIZE = 0x0400, - MCIWNDF_NOTIFYERROR = 0x1000, - MCIWNDF_NOTIFYALL = 0x1F00, - MCIWNDF_NOTIFYANSI = 0x0080, - MCIWNDF_NOTIFYMEDIAA = 0x0880, - MCIWNDF_NOTIFYMEDIAW = 0x0800, + MCIWNDOPENF_NEW = 0x0001, + MCIWNDF_NOAUTOSIZEWINDOW = 0x0001, + MCIWNDF_NOPLAYBAR = 0x0002, + MCIWNDF_NOAUTOSIZEMOVIE = 0x0004, + MCIWNDF_NOMENU = 0x0008, + MCIWNDF_SHOWNAME = 0x0010, + MCIWNDF_SHOWPOS = 0x0020, + MCIWNDF_SHOWMODE = 0x0040, + MCIWNDF_SHOWALL = 0x0070, + MCIWNDF_NOTIFYMODE = 0x0100, + MCIWNDF_NOTIFYPOS = 0x0200, + MCIWNDF_NOTIFYSIZE = 0x0400, + MCIWNDF_NOTIFYERROR = 0x1000, + MCIWNDF_NOTIFYALL = 0x1F00, + MCIWNDF_NOTIFYANSI = 0x0080, + MCIWNDF_NOTIFYMEDIAA = 0x0880, + MCIWNDF_NOTIFYMEDIAW = 0x0800, } version(Unicode) { - alias MCIWNDF_NOTIFYMEDIAW MCIWNDF_NOTIFYMEDIA; + alias MCIWNDF_NOTIFYMEDIAW MCIWNDF_NOTIFYMEDIA; } else { // Unicode - alias MCIWNDF_NOTIFYMEDIAA MCIWNDF_NOTIFYMEDIA; + alias MCIWNDF_NOTIFYMEDIAA MCIWNDF_NOTIFYMEDIA; } enum { - MCIWNDF_RECORD = 0x2000, - MCIWNDF_NOERRORDLG = 0x4000, - MCIWNDF_NOOPEN = 0x8000, + MCIWNDF_RECORD = 0x2000, + MCIWNDF_NOERRORDLG = 0x4000, + MCIWNDF_NOOPEN = 0x8000, } // can macros @@ -1692,126 +1692,126 @@ LONG MCIWndSetOwner(HWND hwnd, HWND hwndP) { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETOWNER, cast(WPARAM)hwndP, 0); } enum { - MCIWNDM_GETDEVICEID = WM_USER + 100, - MCIWNDM_SENDSTRINGA = WM_USER + 101, - MCIWNDM_GETPOSITIONA = WM_USER + 102, - MCIWNDM_GETSTART = WM_USER + 103, - MCIWNDM_GETLENGTH = WM_USER + 104, - MCIWNDM_GETEND = WM_USER + 105, - MCIWNDM_GETMODEA = WM_USER + 106, - MCIWNDM_EJECT = WM_USER + 107, - MCIWNDM_SETZOOM = WM_USER + 108, - MCIWNDM_GETZOOM = WM_USER + 109, - MCIWNDM_SETVOLUME = WM_USER + 110, - MCIWNDM_GETVOLUME = WM_USER + 111, - MCIWNDM_SETSPEED = WM_USER + 112, - MCIWNDM_GETSPEED = WM_USER + 113, - MCIWNDM_SETREPEAT = WM_USER + 114, - MCIWNDM_GETREPEAT = WM_USER + 115, - MCIWNDM_REALIZE = WM_USER + 118, - MCIWNDM_SETTIMEFORMATA = WM_USER + 119, - MCIWNDM_GETTIMEFORMATA = WM_USER + 120, - MCIWNDM_VALIDATEMEDIA = WM_USER + 121, - MCIWNDM_PLAYFROM = WM_USER + 122, - MCIWNDM_PLAYTO = WM_USER + 123, - MCIWNDM_GETFILENAMEA = WM_USER + 124, - MCIWNDM_GETDEVICEA = WM_USER + 125, - MCIWNDM_GETPALETTE = WM_USER + 126, - MCIWNDM_SETPALETTE = WM_USER + 127, - MCIWNDM_GETERRORA = WM_USER + 128, - MCIWNDM_SETTIMERS = WM_USER + 129, - MCIWNDM_SETACTIVETIMER = WM_USER + 130, - MCIWNDM_SETINACTIVETIMER = WM_USER + 131, - MCIWNDM_GETACTIVETIMER = WM_USER + 132, - MCIWNDM_GETINACTIVETIMER = WM_USER + 133, - MCIWNDM_NEWA = WM_USER + 134, - MCIWNDM_CHANGESTYLES = WM_USER + 135, - MCIWNDM_GETSTYLES = WM_USER + 136, - MCIWNDM_GETALIAS = WM_USER + 137, - MCIWNDM_RETURNSTRINGA = WM_USER + 138, - MCIWNDM_PLAYREVERSE = WM_USER + 139, - MCIWNDM_GET_SOURCE = WM_USER + 140, - MCIWNDM_PUT_SOURCE = WM_USER + 141, - MCIWNDM_GET_DEST = WM_USER + 142, - MCIWNDM_PUT_DEST = WM_USER + 143, - MCIWNDM_CAN_PLAY = WM_USER + 144, - MCIWNDM_CAN_WINDOW = WM_USER + 145, - MCIWNDM_CAN_RECORD = WM_USER + 146, - MCIWNDM_CAN_SAVE = WM_USER + 147, - MCIWNDM_CAN_EJECT = WM_USER + 148, - MCIWNDM_CAN_CONFIG = WM_USER + 149, - MCIWNDM_PALETTEKICK = WM_USER + 150, - MCIWNDM_OPENINTERFACE = WM_USER + 151, - MCIWNDM_SETOWNER = WM_USER + 152, - MCIWNDM_OPENA = WM_USER + 153, - MCIWNDM_SENDSTRINGW = WM_USER + 201, - MCIWNDM_GETPOSITIONW = WM_USER + 202, - MCIWNDM_GETMODEW = WM_USER + 206, - MCIWNDM_SETTIMEFORMATW = WM_USER + 219, - MCIWNDM_GETTIMEFORMATW = WM_USER + 220, - MCIWNDM_GETFILENAMEW = WM_USER + 224, - MCIWNDM_GETDEVICEW = WM_USER + 225, - MCIWNDM_GETERRORW = WM_USER + 228, - MCIWNDM_NEWW = WM_USER + 234, - MCIWNDM_RETURNSTRINGW = WM_USER + 238, - MCIWNDM_OPENW = WM_USER + 252, + MCIWNDM_GETDEVICEID = WM_USER + 100, + MCIWNDM_SENDSTRINGA = WM_USER + 101, + MCIWNDM_GETPOSITIONA = WM_USER + 102, + MCIWNDM_GETSTART = WM_USER + 103, + MCIWNDM_GETLENGTH = WM_USER + 104, + MCIWNDM_GETEND = WM_USER + 105, + MCIWNDM_GETMODEA = WM_USER + 106, + MCIWNDM_EJECT = WM_USER + 107, + MCIWNDM_SETZOOM = WM_USER + 108, + MCIWNDM_GETZOOM = WM_USER + 109, + MCIWNDM_SETVOLUME = WM_USER + 110, + MCIWNDM_GETVOLUME = WM_USER + 111, + MCIWNDM_SETSPEED = WM_USER + 112, + MCIWNDM_GETSPEED = WM_USER + 113, + MCIWNDM_SETREPEAT = WM_USER + 114, + MCIWNDM_GETREPEAT = WM_USER + 115, + MCIWNDM_REALIZE = WM_USER + 118, + MCIWNDM_SETTIMEFORMATA = WM_USER + 119, + MCIWNDM_GETTIMEFORMATA = WM_USER + 120, + MCIWNDM_VALIDATEMEDIA = WM_USER + 121, + MCIWNDM_PLAYFROM = WM_USER + 122, + MCIWNDM_PLAYTO = WM_USER + 123, + MCIWNDM_GETFILENAMEA = WM_USER + 124, + MCIWNDM_GETDEVICEA = WM_USER + 125, + MCIWNDM_GETPALETTE = WM_USER + 126, + MCIWNDM_SETPALETTE = WM_USER + 127, + MCIWNDM_GETERRORA = WM_USER + 128, + MCIWNDM_SETTIMERS = WM_USER + 129, + MCIWNDM_SETACTIVETIMER = WM_USER + 130, + MCIWNDM_SETINACTIVETIMER = WM_USER + 131, + MCIWNDM_GETACTIVETIMER = WM_USER + 132, + MCIWNDM_GETINACTIVETIMER = WM_USER + 133, + MCIWNDM_NEWA = WM_USER + 134, + MCIWNDM_CHANGESTYLES = WM_USER + 135, + MCIWNDM_GETSTYLES = WM_USER + 136, + MCIWNDM_GETALIAS = WM_USER + 137, + MCIWNDM_RETURNSTRINGA = WM_USER + 138, + MCIWNDM_PLAYREVERSE = WM_USER + 139, + MCIWNDM_GET_SOURCE = WM_USER + 140, + MCIWNDM_PUT_SOURCE = WM_USER + 141, + MCIWNDM_GET_DEST = WM_USER + 142, + MCIWNDM_PUT_DEST = WM_USER + 143, + MCIWNDM_CAN_PLAY = WM_USER + 144, + MCIWNDM_CAN_WINDOW = WM_USER + 145, + MCIWNDM_CAN_RECORD = WM_USER + 146, + MCIWNDM_CAN_SAVE = WM_USER + 147, + MCIWNDM_CAN_EJECT = WM_USER + 148, + MCIWNDM_CAN_CONFIG = WM_USER + 149, + MCIWNDM_PALETTEKICK = WM_USER + 150, + MCIWNDM_OPENINTERFACE = WM_USER + 151, + MCIWNDM_SETOWNER = WM_USER + 152, + MCIWNDM_OPENA = WM_USER + 153, + MCIWNDM_SENDSTRINGW = WM_USER + 201, + MCIWNDM_GETPOSITIONW = WM_USER + 202, + MCIWNDM_GETMODEW = WM_USER + 206, + MCIWNDM_SETTIMEFORMATW = WM_USER + 219, + MCIWNDM_GETTIMEFORMATW = WM_USER + 220, + MCIWNDM_GETFILENAMEW = WM_USER + 224, + MCIWNDM_GETDEVICEW = WM_USER + 225, + MCIWNDM_GETERRORW = WM_USER + 228, + MCIWNDM_NEWW = WM_USER + 234, + MCIWNDM_RETURNSTRINGW = WM_USER + 238, + MCIWNDM_OPENW = WM_USER + 252, } version(Unicode) { - alias MCIWNDM_SENDSTRINGW MCIWNDM_SENDSTRING; - alias MCIWNDM_GETPOSITIONW MCIWNDM_GETPOSITION; - alias MCIWNDM_GETMODEW MCIWNDM_GETMODE; - alias MCIWNDM_SETTIMEFORMATW MCIWNDM_SETTIMEFORMAT; - alias MCIWNDM_GETTIMEFORMATW MCIWNDM_GETTIMEFORMAT; - alias MCIWNDM_GETFILENAMEW MCIWNDM_GETFILENAME; - alias MCIWNDM_GETDEVICEW MCIWNDM_GETDEVICE; - alias MCIWNDM_GETERRORW MCIWNDM_GETERROR; - alias MCIWNDM_NEWW MCIWNDM_NEW; - alias MCIWNDM_RETURNSTRINGW MCIWNDM_RETURNSTRING; - alias MCIWNDM_OPENW MCIWNDM_OPEN; + alias MCIWNDM_SENDSTRINGW MCIWNDM_SENDSTRING; + alias MCIWNDM_GETPOSITIONW MCIWNDM_GETPOSITION; + alias MCIWNDM_GETMODEW MCIWNDM_GETMODE; + alias MCIWNDM_SETTIMEFORMATW MCIWNDM_SETTIMEFORMAT; + alias MCIWNDM_GETTIMEFORMATW MCIWNDM_GETTIMEFORMAT; + alias MCIWNDM_GETFILENAMEW MCIWNDM_GETFILENAME; + alias MCIWNDM_GETDEVICEW MCIWNDM_GETDEVICE; + alias MCIWNDM_GETERRORW MCIWNDM_GETERROR; + alias MCIWNDM_NEWW MCIWNDM_NEW; + alias MCIWNDM_RETURNSTRINGW MCIWNDM_RETURNSTRING; + alias MCIWNDM_OPENW MCIWNDM_OPEN; } else { // Unicode - alias MCIWNDM_SENDSTRINGA MCIWNDM_SENDSTRING; - alias MCIWNDM_GETPOSITIONA MCIWNDM_GETPOSITION; - alias MCIWNDM_GETMODEA MCIWNDM_GETMODE; - alias MCIWNDM_SETTIMEFORMATA MCIWNDM_SETTIMEFORMAT; - alias MCIWNDM_GETTIMEFORMATA MCIWNDM_GETTIMEFORMAT; - alias MCIWNDM_GETFILENAMEA MCIWNDM_GETFILENAME; - alias MCIWNDM_GETDEVICEA MCIWNDM_GETDEVICE; - alias MCIWNDM_GETERRORA MCIWNDM_GETERROR; - alias MCIWNDM_NEWA MCIWNDM_NEW; - alias MCIWNDM_RETURNSTRINGA MCIWNDM_RETURNSTRING; - alias MCIWNDM_OPENA MCIWNDM_OPEN; + alias MCIWNDM_SENDSTRINGA MCIWNDM_SENDSTRING; + alias MCIWNDM_GETPOSITIONA MCIWNDM_GETPOSITION; + alias MCIWNDM_GETMODEA MCIWNDM_GETMODE; + alias MCIWNDM_SETTIMEFORMATA MCIWNDM_SETTIMEFORMAT; + alias MCIWNDM_GETTIMEFORMATA MCIWNDM_GETTIMEFORMAT; + alias MCIWNDM_GETFILENAMEA MCIWNDM_GETFILENAME; + alias MCIWNDM_GETDEVICEA MCIWNDM_GETDEVICE; + alias MCIWNDM_GETERRORA MCIWNDM_GETERROR; + alias MCIWNDM_NEWA MCIWNDM_NEW; + alias MCIWNDM_RETURNSTRINGA MCIWNDM_RETURNSTRING; + alias MCIWNDM_OPENA MCIWNDM_OPEN; } enum { - MCIWNDM_NOTIFYMODE = WM_USER + 200, - MCIWNDM_NOTIFYPOS = WM_USER + 201, - MCIWNDM_NOTIFYSIZE = WM_USER + 202, - MCIWNDM_NOTIFYMEDIA = WM_USER + 203, - MCIWNDM_NOTIFYERROR = WM_USER + 205, + MCIWNDM_NOTIFYMODE = WM_USER + 200, + MCIWNDM_NOTIFYPOS = WM_USER + 201, + MCIWNDM_NOTIFYSIZE = WM_USER + 202, + MCIWNDM_NOTIFYMEDIA = WM_USER + 203, + MCIWNDM_NOTIFYERROR = WM_USER + 205, } -const MCIWND_START = -1; -const MCIWND_END = -2; +const MCIWND_START = -1; +const MCIWND_END = -2; enum { - MCI_CLOSE = 0x0804, - MCI_PLAY = 0x0806, - MCI_SEEK = 0x0807, - MCI_STOP = 0x0808, - MCI_PAUSE = 0x0809, - MCI_STEP = 0x080E, - MCI_RECORD = 0x080F, - MCI_SAVE = 0x0813, - MCI_CUT = 0x0851, - MCI_COPY = 0x0852, - MCI_PASTE = 0x0853, - MCI_RESUME = 0x0855, - MCI_DELETE = 0x0856, + MCI_CLOSE = 0x0804, + MCI_PLAY = 0x0806, + MCI_SEEK = 0x0807, + MCI_STOP = 0x0808, + MCI_PAUSE = 0x0809, + MCI_STEP = 0x080E, + MCI_RECORD = 0x080F, + MCI_SAVE = 0x0813, + MCI_CUT = 0x0851, + MCI_COPY = 0x0852, + MCI_PASTE = 0x0853, + MCI_RESUME = 0x0855, + MCI_DELETE = 0x0856, } enum { - MCI_MODE_NOT_READY = 524, + MCI_MODE_NOT_READY = 524, MCI_MODE_STOP, MCI_MODE_PLAY, MCI_MODE_RECORD, @@ -1826,54 +1826,54 @@ alias HVIDEO* LPHVIDEO; // Error Return Values enum { - DV_ERR_OK = 0, - DV_ERR_BASE = 1, - DV_ERR_NONSPECIFIC = DV_ERR_BASE, - DV_ERR_BADFORMAT = DV_ERR_BASE + 1, - DV_ERR_STILLPLAYING = DV_ERR_BASE + 2, - DV_ERR_UNPREPARED = DV_ERR_BASE + 3, - DV_ERR_SYNC = DV_ERR_BASE + 4, - DV_ERR_TOOMANYCHANNELS = DV_ERR_BASE + 5, - DV_ERR_NOTDETECTED = DV_ERR_BASE + 6, - DV_ERR_BADINSTALL = DV_ERR_BASE + 7, - DV_ERR_CREATEPALETTE = DV_ERR_BASE + 8, - DV_ERR_SIZEFIELD = DV_ERR_BASE + 9, - DV_ERR_PARAM1 = DV_ERR_BASE + 10, - DV_ERR_PARAM2 = DV_ERR_BASE + 11, - DV_ERR_CONFIG1 = DV_ERR_BASE + 12, - DV_ERR_CONFIG2 = DV_ERR_BASE + 13, - DV_ERR_FLAGS = DV_ERR_BASE + 14, - DV_ERR_13 = DV_ERR_BASE + 15, - DV_ERR_NOTSUPPORTED = DV_ERR_BASE + 16, - DV_ERR_NOMEM = DV_ERR_BASE + 17, - DV_ERR_ALLOCATED = DV_ERR_BASE + 18, - DV_ERR_BADDEVICEID = DV_ERR_BASE + 19, - DV_ERR_INVALHANDLE = DV_ERR_BASE + 20, - DV_ERR_BADERRNUM = DV_ERR_BASE + 21, - DV_ERR_NO_BUFFERS = DV_ERR_BASE + 22, - DV_ERR_MEM_CONFLICT = DV_ERR_BASE + 23, - DV_ERR_IO_CONFLICT = DV_ERR_BASE + 24, - DV_ERR_DMA_CONFLICT = DV_ERR_BASE + 25, - DV_ERR_INT_CONFLICT = DV_ERR_BASE + 26, - DV_ERR_PROTECT_ONLY = DV_ERR_BASE + 27, - DV_ERR_LASTERROR = DV_ERR_BASE + 27, - DV_ERR_USER_MSG = DV_ERR_BASE + 1000, + DV_ERR_OK = 0, + DV_ERR_BASE = 1, + DV_ERR_NONSPECIFIC = DV_ERR_BASE, + DV_ERR_BADFORMAT = DV_ERR_BASE + 1, + DV_ERR_STILLPLAYING = DV_ERR_BASE + 2, + DV_ERR_UNPREPARED = DV_ERR_BASE + 3, + DV_ERR_SYNC = DV_ERR_BASE + 4, + DV_ERR_TOOMANYCHANNELS = DV_ERR_BASE + 5, + DV_ERR_NOTDETECTED = DV_ERR_BASE + 6, + DV_ERR_BADINSTALL = DV_ERR_BASE + 7, + DV_ERR_CREATEPALETTE = DV_ERR_BASE + 8, + DV_ERR_SIZEFIELD = DV_ERR_BASE + 9, + DV_ERR_PARAM1 = DV_ERR_BASE + 10, + DV_ERR_PARAM2 = DV_ERR_BASE + 11, + DV_ERR_CONFIG1 = DV_ERR_BASE + 12, + DV_ERR_CONFIG2 = DV_ERR_BASE + 13, + DV_ERR_FLAGS = DV_ERR_BASE + 14, + DV_ERR_13 = DV_ERR_BASE + 15, + DV_ERR_NOTSUPPORTED = DV_ERR_BASE + 16, + DV_ERR_NOMEM = DV_ERR_BASE + 17, + DV_ERR_ALLOCATED = DV_ERR_BASE + 18, + DV_ERR_BADDEVICEID = DV_ERR_BASE + 19, + DV_ERR_INVALHANDLE = DV_ERR_BASE + 20, + DV_ERR_BADERRNUM = DV_ERR_BASE + 21, + DV_ERR_NO_BUFFERS = DV_ERR_BASE + 22, + DV_ERR_MEM_CONFLICT = DV_ERR_BASE + 23, + DV_ERR_IO_CONFLICT = DV_ERR_BASE + 24, + DV_ERR_DMA_CONFLICT = DV_ERR_BASE + 25, + DV_ERR_INT_CONFLICT = DV_ERR_BASE + 26, + DV_ERR_PROTECT_ONLY = DV_ERR_BASE + 27, + DV_ERR_LASTERROR = DV_ERR_BASE + 27, + DV_ERR_USER_MSG = DV_ERR_BASE + 1000, } // Callback Messages enum { - MM_DRVM_OPEN = 0x3D0, + MM_DRVM_OPEN = 0x3D0, MM_DRVM_CLOSE, MM_DRVM_DATA, MM_DRVM_ERROR, } enum { - DV_VM_OPEN = MM_DRVM_OPEN, - DV_VM_CLOSE = MM_DRVM_CLOSE, - DV_VM_DATA = MM_DRVM_DATA, - DV_VM_ERROR = MM_DRVM_ERROR, + DV_VM_OPEN = MM_DRVM_OPEN, + DV_VM_CLOSE = MM_DRVM_CLOSE, + DV_VM_DATA = MM_DRVM_DATA, + DV_VM_ERROR = MM_DRVM_ERROR, } /** @@ -1881,42 +1881,42 @@ enum { */ struct VIDEOHDR { - LPBYTE lpData; - DWORD dwBufferLength; - DWORD dwBytesUsed; - DWORD dwTimeCaptured; - DWORD_PTR dwUser; - DWORD dwFlags; + LPBYTE lpData; + DWORD dwBufferLength; + DWORD dwBytesUsed; + DWORD dwTimeCaptured; + DWORD_PTR dwUser; + DWORD dwFlags; DWORD_PTR[4]dwReserved; } alias VIDEOHDR* PVIDEOHDR, LPVIDEOHDR; enum { - VHDR_DONE = 0x00000001, - VHDR_PREPARED = 0x00000002, - VHDR_INQUEUE = 0x00000004, - VHDR_KEYFRAME = 0x00000008, - VHDR_VALID = 0x0000000F, + VHDR_DONE = 0x00000001, + VHDR_PREPARED = 0x00000002, + VHDR_INQUEUE = 0x00000004, + VHDR_KEYFRAME = 0x00000008, + VHDR_VALID = 0x0000000F, } struct CHANNEL_CAPS { - DWORD dwFlags; - DWORD dwSrcRectXMod; - DWORD dwSrcRectYMod; - DWORD dwSrcRectWidthMod; - DWORD dwSrcRectHeightMod; - DWORD dwDstRectXMod; - DWORD dwDstRectYMod; - DWORD dwDstRectWidthMod; - DWORD dwDstRectHeightMod; + DWORD dwFlags; + DWORD dwSrcRectXMod; + DWORD dwSrcRectYMod; + DWORD dwSrcRectWidthMod; + DWORD dwSrcRectHeightMod; + DWORD dwDstRectXMod; + DWORD dwDstRectYMod; + DWORD dwDstRectWidthMod; + DWORD dwDstRectHeightMod; } alias CHANNEL_CAPS* PCHANNEL_CAPS, LPCHANNEL_CAPS; enum { - VCAPS_OVERLAY = 0x00000001, - VCAPS_SRC_CAN_CLIP = 0x00000002, - VCAPS_DST_CAN_CLIP = 0x00000004, - VCAPS_CAN_SCALE = 0x00000008, + VCAPS_OVERLAY = 0x00000001, + VCAPS_SRC_CAN_CLIP = 0x00000002, + VCAPS_DST_CAN_CLIP = 0x00000004, + VCAPS_CAN_SCALE = 0x00000008, } /** @@ -1924,22 +1924,22 @@ enum { */ enum { - VIDEO_EXTERNALIN = 0x0001, - VIDEO_EXTERNALOUT = 0x0002, - VIDEO_IN = 0x0004, - VIDEO_OUT = 0x0008, - VIDEO_DLG_QUERY = 0x0010, + VIDEO_EXTERNALIN = 0x0001, + VIDEO_EXTERNALOUT = 0x0002, + VIDEO_IN = 0x0004, + VIDEO_OUT = 0x0008, + VIDEO_DLG_QUERY = 0x0010, } enum { - VIDEO_CONFIGURE_QUERYSIZE = 0x0001, - VIDEO_CONFIGURE_CURRENT = 0x0010, - VIDEO_CONFIGURE_NOMINAL = 0x0020, - VIDEO_CONFIGURE_MIN = 0x0040, - VIDEO_CONFIGURE_MAX = 0x0080, - VIDEO_CONFIGURE_SET = 0x1000, - VIDEO_CONFIGURE_GET = 0x2000, - VIDEO_CONFIGURE_QUERY = 0x8000, + VIDEO_CONFIGURE_QUERYSIZE = 0x0001, + VIDEO_CONFIGURE_CURRENT = 0x0010, + VIDEO_CONFIGURE_NOMINAL = 0x0020, + VIDEO_CONFIGURE_MIN = 0x0040, + VIDEO_CONFIGURE_MAX = 0x0080, + VIDEO_CONFIGURE_SET = 0x1000, + VIDEO_CONFIGURE_GET = 0x2000, + VIDEO_CONFIGURE_QUERY = 0x8000, } /** @@ -1947,14 +1947,14 @@ enum { */ enum { - DVM_USER = 0x4000, - DVM_CONFIGURE_START = 0x1000, - DVM_CONFIGURE_END = 0x1FFF, - DVM_PALETTE = DVM_CONFIGURE_START + 1, - DVM_FORMAT = DVM_CONFIGURE_START + 2, - DVM_PALETTERGB555 = DVM_CONFIGURE_START + 3, - DVM_SRC_RECT = DVM_CONFIGURE_START + 4, - DVM_DST_RECT = DVM_CONFIGURE_START + 5, + DVM_USER = 0x4000, + DVM_CONFIGURE_START = 0x1000, + DVM_CONFIGURE_END = 0x1FFF, + DVM_PALETTE = DVM_CONFIGURE_START + 1, + DVM_FORMAT = DVM_CONFIGURE_START + 2, + DVM_PALETTERGB555 = DVM_CONFIGURE_START + 3, + DVM_SRC_RECT = DVM_CONFIGURE_START + 4, + DVM_DST_RECT = DVM_CONFIGURE_START + 5, } /** @@ -1969,283 +1969,283 @@ LRESULT AVICapSM(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { } enum { - WM_CAP_START = WM_USER, - WM_CAP_UNICODE_START = WM_USER + 100, + WM_CAP_START = WM_USER, + WM_CAP_UNICODE_START = WM_USER + 100, - WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1, - WM_CAP_SET_CALLBACK_ERRORA = WM_CAP_START + 2, - WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3, + WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1, + WM_CAP_SET_CALLBACK_ERRORA = WM_CAP_START + 2, + WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3, - WM_CAP_SET_CALLBACK_ERRORW = WM_CAP_UNICODE_START + 2, - WM_CAP_SET_CALLBACK_STATUSW = WM_CAP_UNICODE_START + 3, + WM_CAP_SET_CALLBACK_ERRORW = WM_CAP_UNICODE_START + 2, + WM_CAP_SET_CALLBACK_STATUSW = WM_CAP_UNICODE_START + 3, } version(Unicode) { - alias WM_CAP_SET_CALLBACK_ERRORW WM_CAP_SET_CALLBACK_ERROR; - alias WM_CAP_SET_CALLBACK_STATUSW WM_CAP_SET_CALLBACK_STATUS; + alias WM_CAP_SET_CALLBACK_ERRORW WM_CAP_SET_CALLBACK_ERROR; + alias WM_CAP_SET_CALLBACK_STATUSW WM_CAP_SET_CALLBACK_STATUS; } else { // Unicode - alias WM_CAP_SET_CALLBACK_ERRORA WM_CAP_SET_CALLBACK_ERROR; - alias WM_CAP_SET_CALLBACK_STATUSA WM_CAP_SET_CALLBACK_STATUS; + alias WM_CAP_SET_CALLBACK_ERRORA WM_CAP_SET_CALLBACK_ERROR; + alias WM_CAP_SET_CALLBACK_STATUSA WM_CAP_SET_CALLBACK_STATUS; } enum { - WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4, - WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5, - WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6, - WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7, - WM_CAP_GET_USER_DATA = WM_CAP_START + 8, - WM_CAP_SET_USER_DATA = WM_CAP_START + 9, - WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10, - WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11, - WM_CAP_DRIVER_GET_NAMEA = WM_CAP_START + 12, - WM_CAP_DRIVER_GET_VERSIONA = WM_CAP_START + 13, + WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4, + WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5, + WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6, + WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7, + WM_CAP_GET_USER_DATA = WM_CAP_START + 8, + WM_CAP_SET_USER_DATA = WM_CAP_START + 9, + WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10, + WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11, + WM_CAP_DRIVER_GET_NAMEA = WM_CAP_START + 12, + WM_CAP_DRIVER_GET_VERSIONA = WM_CAP_START + 13, - WM_CAP_DRIVER_GET_NAMEW = WM_CAP_UNICODE_START + 12, - WM_CAP_DRIVER_GET_VERSIONW = WM_CAP_UNICODE_START + 13, + WM_CAP_DRIVER_GET_NAMEW = WM_CAP_UNICODE_START + 12, + WM_CAP_DRIVER_GET_VERSIONW = WM_CAP_UNICODE_START + 13, } version(Unicode) { - alias WM_CAP_DRIVER_GET_NAMEW WM_CAP_DRIVER_GET_NAME; - alias WM_CAP_DRIVER_GET_VERSIONW WM_CAP_DRIVER_GET_VERSION; + alias WM_CAP_DRIVER_GET_NAMEW WM_CAP_DRIVER_GET_NAME; + alias WM_CAP_DRIVER_GET_VERSIONW WM_CAP_DRIVER_GET_VERSION; } else { // Unicode - alias WM_CAP_DRIVER_GET_NAMEA WM_CAP_DRIVER_GET_NAME; - alias WM_CAP_DRIVER_GET_VERSIONA WM_CAP_DRIVER_GET_VERSION; + alias WM_CAP_DRIVER_GET_NAMEA WM_CAP_DRIVER_GET_NAME; + alias WM_CAP_DRIVER_GET_VERSIONA WM_CAP_DRIVER_GET_VERSION; } enum { - WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14, - WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20, - WM_CAP_FILE_GET_CAPTURE_FILEA = WM_CAP_START + 21, - WM_CAP_FILE_SAVEASA = WM_CAP_START + 23, - WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25, + WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14, + WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20, + WM_CAP_FILE_GET_CAPTURE_FILEA = WM_CAP_START + 21, + WM_CAP_FILE_SAVEASA = WM_CAP_START + 23, + WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25, - WM_CAP_FILE_SET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 20, - WM_CAP_FILE_GET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 21, - WM_CAP_FILE_SAVEASW = WM_CAP_UNICODE_START + 23, - WM_CAP_FILE_SAVEDIBW = WM_CAP_UNICODE_START + 25, + WM_CAP_FILE_SET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 20, + WM_CAP_FILE_GET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 21, + WM_CAP_FILE_SAVEASW = WM_CAP_UNICODE_START + 23, + WM_CAP_FILE_SAVEDIBW = WM_CAP_UNICODE_START + 25, } version(Unicode) { - alias WM_CAP_FILE_SET_CAPTURE_FILEW WM_CAP_FILE_SET_CAPTURE_FILE; - alias WM_CAP_FILE_GET_CAPTURE_FILEW WM_CAP_FILE_GET_CAPTURE_FILE; - alias WM_CAP_FILE_SAVEASW WM_CAP_FILE_SAVEAS; - alias WM_CAP_FILE_SAVEDIBW WM_CAP_FILE_SAVEDIB; + alias WM_CAP_FILE_SET_CAPTURE_FILEW WM_CAP_FILE_SET_CAPTURE_FILE; + alias WM_CAP_FILE_GET_CAPTURE_FILEW WM_CAP_FILE_GET_CAPTURE_FILE; + alias WM_CAP_FILE_SAVEASW WM_CAP_FILE_SAVEAS; + alias WM_CAP_FILE_SAVEDIBW WM_CAP_FILE_SAVEDIB; } else { // Unicode - alias WM_CAP_FILE_SET_CAPTURE_FILEA WM_CAP_FILE_SET_CAPTURE_FILE; - alias WM_CAP_FILE_GET_CAPTURE_FILEA WM_CAP_FILE_GET_CAPTURE_FILE; - alias WM_CAP_FILE_SAVEASA WM_CAP_FILE_SAVEAS; - alias WM_CAP_FILE_SAVEDIBA WM_CAP_FILE_SAVEDIB; + alias WM_CAP_FILE_SET_CAPTURE_FILEA WM_CAP_FILE_SET_CAPTURE_FILE; + alias WM_CAP_FILE_GET_CAPTURE_FILEA WM_CAP_FILE_GET_CAPTURE_FILE; + alias WM_CAP_FILE_SAVEASA WM_CAP_FILE_SAVEAS; + alias WM_CAP_FILE_SAVEDIBA WM_CAP_FILE_SAVEDIB; } enum { - WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22, - WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24, - WM_CAP_EDIT_COPY = WM_CAP_START + 30, - WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35, - WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36, - WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41, - WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42, - WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43, - WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44, - WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45, - WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46, - WM_CAP_SET_PREVIEW = WM_CAP_START + 50, - WM_CAP_SET_OVERLAY = WM_CAP_START + 51, - WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52, - WM_CAP_SET_SCALE = WM_CAP_START + 53, - WM_CAP_GET_STATUS = WM_CAP_START + 54, - WM_CAP_SET_SCROLL = WM_CAP_START + 55, - WM_CAP_GRAB_FRAME = WM_CAP_START + 60, - WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61, - WM_CAP_SEQUENCE = WM_CAP_START + 62, - WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63, - WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64, - WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65, - WM_CAP_SET_MCI_DEVICEA = WM_CAP_START + 66, - WM_CAP_GET_MCI_DEVICEA = WM_CAP_START + 67, - - WM_CAP_SET_MCI_DEVICEW = WM_CAP_UNICODE_START + 66, - WM_CAP_GET_MCI_DEVICEW = WM_CAP_UNICODE_START + 67, + WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22, + WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24, + WM_CAP_EDIT_COPY = WM_CAP_START + 30, + WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35, + WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36, + WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41, + WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42, + WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43, + WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44, + WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45, + WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46, + WM_CAP_SET_PREVIEW = WM_CAP_START + 50, + WM_CAP_SET_OVERLAY = WM_CAP_START + 51, + WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52, + WM_CAP_SET_SCALE = WM_CAP_START + 53, + WM_CAP_GET_STATUS = WM_CAP_START + 54, + WM_CAP_SET_SCROLL = WM_CAP_START + 55, + WM_CAP_GRAB_FRAME = WM_CAP_START + 60, + WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61, + WM_CAP_SEQUENCE = WM_CAP_START + 62, + WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63, + WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64, + WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65, + WM_CAP_SET_MCI_DEVICEA = WM_CAP_START + 66, + WM_CAP_GET_MCI_DEVICEA = WM_CAP_START + 67, + + WM_CAP_SET_MCI_DEVICEW = WM_CAP_UNICODE_START + 66, + WM_CAP_GET_MCI_DEVICEW = WM_CAP_UNICODE_START + 67, } version(Unicode) { - alias WM_CAP_SET_MCI_DEVICEW WM_CAP_SET_MCI_DEVICE; - alias WM_CAP_GET_MCI_DEVICEW WM_CAP_GET_MCI_DEVICE; + alias WM_CAP_SET_MCI_DEVICEW WM_CAP_SET_MCI_DEVICE; + alias WM_CAP_GET_MCI_DEVICEW WM_CAP_GET_MCI_DEVICE; } else { // Unicode - alias WM_CAP_SET_MCI_DEVICEA WM_CAP_SET_MCI_DEVICE; - alias WM_CAP_GET_MCI_DEVICEA WM_CAP_GET_MCI_DEVICE; + alias WM_CAP_SET_MCI_DEVICEA WM_CAP_SET_MCI_DEVICE; + alias WM_CAP_GET_MCI_DEVICEA WM_CAP_GET_MCI_DEVICE; } enum { - WM_CAP_STOP = WM_CAP_START + 68, - WM_CAP_ABORT = WM_CAP_START + 69, - WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70, - WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71, - WM_CAP_SINGLE_FRAME = WM_CAP_START + 72, - WM_CAP_PAL_OPENA = WM_CAP_START + 80, - WM_CAP_PAL_SAVEA = WM_CAP_START + 81, + WM_CAP_STOP = WM_CAP_START + 68, + WM_CAP_ABORT = WM_CAP_START + 69, + WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70, + WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71, + WM_CAP_SINGLE_FRAME = WM_CAP_START + 72, + WM_CAP_PAL_OPENA = WM_CAP_START + 80, + WM_CAP_PAL_SAVEA = WM_CAP_START + 81, - WM_CAP_PAL_OPENW = WM_CAP_UNICODE_START + 80, - WM_CAP_PAL_SAVEW = WM_CAP_UNICODE_START + 81, + WM_CAP_PAL_OPENW = WM_CAP_UNICODE_START + 80, + WM_CAP_PAL_SAVEW = WM_CAP_UNICODE_START + 81, } version(Unicode) { - alias WM_CAP_PAL_OPENW WM_CAP_PAL_OPEN; - alias WM_CAP_PAL_SAVEW WM_CAP_PAL_SAVE; + alias WM_CAP_PAL_OPENW WM_CAP_PAL_OPEN; + alias WM_CAP_PAL_SAVEW WM_CAP_PAL_SAVE; } else { // Unicode - alias WM_CAP_PAL_OPENA WM_CAP_PAL_OPEN; - alias WM_CAP_PAL_SAVEA WM_CAP_PAL_SAVE; + alias WM_CAP_PAL_OPENA WM_CAP_PAL_OPEN; + alias WM_CAP_PAL_SAVEA WM_CAP_PAL_SAVE; } enum { - WM_CAP_PAL_PASTE = WM_CAP_START + 82, - WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83, - WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84, - WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85, - WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW, - WM_CAP_END = WM_CAP_UNICODE_END, + WM_CAP_PAL_PASTE = WM_CAP_START + 82, + WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83, + WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84, + WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85, + WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW, + WM_CAP_END = WM_CAP_UNICODE_END, } /** * message wrapper */ -BOOL capSetCallbackOnError(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_ERROR, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnStatus(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_STATUS, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnYield(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_YIELD, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnFrame(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_FRAME, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnVideoStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnWaveStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnCapControl(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, cast(LPARAM)fpProc); } - -BOOL capSetUserData(HWND hWnd, LPARAM lUser) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_USER_DATA, 0, lUser); } -BOOL capGetUserData(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_USER_DATA, 0, 0); } - -BOOL capDriverConnect(HWND hWnd, WPARAM i) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_CONNECT, i, 0); } -BOOL capDriverDisconnect(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_DISCONNECT, 0, 0); } -BOOL capDriverGetName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_NAME, wSize, cast(LPARAM)szName); } -BOOL capDriverGetVersion(HWND hWnd, LPTSTR szVer, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_VERSION, wSize, cast(LPARAM)szVer); } -BOOL capDriverGetCaps(HWND hWnd, LPCAPDRIVERCAPS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_CAPS, wSize, cast(LPARAM)s); } - -BOOL capFileSetCaptureFile(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, cast(LPARAM)szName); } -BOOL capFileGetCaptureFile(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_GET_CAPTURE_FILE, wSize, cast(LPARAM)szName); } -BOOL capFileAlloc(HWND hWnd, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_ALLOCATE, wSize, 0); } -BOOL capFileSaveAs(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEAS, 0, cast(LPARAM)szName); } -BOOL capFileSetInfoChunk(HWND hWnd, LPCAPINFOCHUNK lpInfoChunk) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_INFOCHUNK, 0, cast(LPARAM)lpInfoChunk); } -BOOL capFileSaveDIB(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEDIB, 0, cast(LPARAM)szName); } - -BOOL capEditCopy(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_EDIT_COPY, 0, 0); } - -BOOL capSetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_AUDIOFORMAT, wSize, cast(LPARAM)s); } -DWORD capGetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, wSize, cast(LPARAM)s); } -DWORD capGetAudioFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, 0, 0); } - -BOOL capDlgVideoFormat(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0); } -BOOL capDlgVideoSource(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0); } -BOOL capDlgVideoDisplay(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0); } -BOOL capDlgVideoCompression(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0); } - -DWORD capGetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, wSize, cast(LPARAM)s); } -DWORD capGetVideoFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, 0, 0); } -BOOL capSetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_VIDEOFORMAT, wSize, cast(LPARAM)s); } - -BOOL capPreview(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEW, cast(WPARAM)f, 0); } -BOOL capPreviewRate(HWND hWnd, WPARAM wMS) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEWRATE, wMS, 0); } -BOOL capOverlay(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_OVERLAY, cast(WPARAM)f, 0); } -BOOL capPreviewScale(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCALE, cast(WPARAM)f, 0); } -BOOL capGetStatus(HWND hWnd, LPCAPSTATUS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_STATUS, wSize, cast(LPARAM)s); } -BOOL capSetScrollPos(HWND hWnd, LPPOINT lpP) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCROLL, 0, cast(LPARAM)lpP); } - -BOOL capGrabFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME, 0, 0); } -BOOL capGrabFrameNoStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0); } - -BOOL capCaptureSequence(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE, 0, 0); } -BOOL capCaptureSequenceNoFile(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE_NOFILE, 0, 0); } -BOOL capCaptureStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_STOP, 0, 0); } -BOOL capCaptureAbort(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_ABORT, 0, 0); } - -BOOL capCaptureSingleFrameOpen(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0); } -BOOL capCaptureSingleFrameClose(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0); } -BOOL capCaptureSingleFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME, 0, 0); } - -BOOL capCaptureGetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } -BOOL capCaptureSetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } - -BOOL capSetMCIDeviceName(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_MCI_DEVICE, 0, cast(LPARAM)szName); } -BOOL capGetMCIDeviceName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_MCI_DEVICE, wSize, cast(LPARAM)szName); } - -BOOL capPaletteOpen(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_OPEN, 0, cast(LPARAM)szName); } -BOOL capPaletteSave(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_SAVE, 0, cast(LPARAM)szName); } -BOOL capPalettePaste(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_PASTE, 0, 0); } -BOOL capPaletteAuto(HWND hWnd, WPARAM iFrames, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors); } -BOOL capPaletteManual(HWND hWnd, WPARAM fGrab, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors); } +BOOL capSetCallbackOnError(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_ERROR, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnStatus(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_STATUS, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnYield(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_YIELD, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnFrame(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_FRAME, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnVideoStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnWaveStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnCapControl(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, cast(LPARAM)fpProc); } + +BOOL capSetUserData(HWND hWnd, LPARAM lUser) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_USER_DATA, 0, lUser); } +BOOL capGetUserData(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_USER_DATA, 0, 0); } + +BOOL capDriverConnect(HWND hWnd, WPARAM i) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_CONNECT, i, 0); } +BOOL capDriverDisconnect(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_DISCONNECT, 0, 0); } +BOOL capDriverGetName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_NAME, wSize, cast(LPARAM)szName); } +BOOL capDriverGetVersion(HWND hWnd, LPTSTR szVer, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_VERSION, wSize, cast(LPARAM)szVer); } +BOOL capDriverGetCaps(HWND hWnd, LPCAPDRIVERCAPS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_CAPS, wSize, cast(LPARAM)s); } + +BOOL capFileSetCaptureFile(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, cast(LPARAM)szName); } +BOOL capFileGetCaptureFile(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_GET_CAPTURE_FILE, wSize, cast(LPARAM)szName); } +BOOL capFileAlloc(HWND hWnd, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_ALLOCATE, wSize, 0); } +BOOL capFileSaveAs(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEAS, 0, cast(LPARAM)szName); } +BOOL capFileSetInfoChunk(HWND hWnd, LPCAPINFOCHUNK lpInfoChunk) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_INFOCHUNK, 0, cast(LPARAM)lpInfoChunk); } +BOOL capFileSaveDIB(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEDIB, 0, cast(LPARAM)szName); } + +BOOL capEditCopy(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_EDIT_COPY, 0, 0); } + +BOOL capSetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_AUDIOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetAudioFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, 0, 0); } + +BOOL capDlgVideoFormat(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0); } +BOOL capDlgVideoSource(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0); } +BOOL capDlgVideoDisplay(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0); } +BOOL capDlgVideoCompression(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0); } + +DWORD capGetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetVideoFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, 0, 0); } +BOOL capSetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_VIDEOFORMAT, wSize, cast(LPARAM)s); } + +BOOL capPreview(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEW, cast(WPARAM)f, 0); } +BOOL capPreviewRate(HWND hWnd, WPARAM wMS) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEWRATE, wMS, 0); } +BOOL capOverlay(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_OVERLAY, cast(WPARAM)f, 0); } +BOOL capPreviewScale(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCALE, cast(WPARAM)f, 0); } +BOOL capGetStatus(HWND hWnd, LPCAPSTATUS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_STATUS, wSize, cast(LPARAM)s); } +BOOL capSetScrollPos(HWND hWnd, LPPOINT lpP) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCROLL, 0, cast(LPARAM)lpP); } + +BOOL capGrabFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME, 0, 0); } +BOOL capGrabFrameNoStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0); } + +BOOL capCaptureSequence(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE, 0, 0); } +BOOL capCaptureSequenceNoFile(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE_NOFILE, 0, 0); } +BOOL capCaptureStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_STOP, 0, 0); } +BOOL capCaptureAbort(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_ABORT, 0, 0); } + +BOOL capCaptureSingleFrameOpen(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0); } +BOOL capCaptureSingleFrameClose(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0); } +BOOL capCaptureSingleFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME, 0, 0); } + +BOOL capCaptureGetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } +BOOL capCaptureSetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } + +BOOL capSetMCIDeviceName(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_MCI_DEVICE, 0, cast(LPARAM)szName); } +BOOL capGetMCIDeviceName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_MCI_DEVICE, wSize, cast(LPARAM)szName); } + +BOOL capPaletteOpen(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_OPEN, 0, cast(LPARAM)szName); } +BOOL capPaletteSave(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_SAVE, 0, cast(LPARAM)szName); } +BOOL capPalettePaste(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_PASTE, 0, 0); } +BOOL capPaletteAuto(HWND hWnd, WPARAM iFrames, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors); } +BOOL capPaletteManual(HWND hWnd, WPARAM fGrab, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors); } /** * structs */ struct CAPDRIVERCAPS { - UINT wDeviceIndex; - BOOL fHasOverlay; - BOOL fHasDlgVideoSource; - BOOL fHasDlgVideoFormat; - BOOL fHasDlgVideoDisplay; - BOOL fCaptureInitialized; - BOOL fDriverSuppliesPalettes; - HANDLE hVideoIn; - HANDLE hVideoOut; - HANDLE hVideoExtIn; - HANDLE hVideoExtOut; + UINT wDeviceIndex; + BOOL fHasOverlay; + BOOL fHasDlgVideoSource; + BOOL fHasDlgVideoFormat; + BOOL fHasDlgVideoDisplay; + BOOL fCaptureInitialized; + BOOL fDriverSuppliesPalettes; + HANDLE hVideoIn; + HANDLE hVideoOut; + HANDLE hVideoExtIn; + HANDLE hVideoExtOut; } alias CAPDRIVERCAPS* PCAPDRIVERCAPS, LPCAPDRIVERCAPS; struct CAPSTATUS { - UINT uiImageWidth; - UINT uiImageHeight; - BOOL fLiveWindow; - BOOL fOverlayWindow; - BOOL fScale; - POINT ptScroll; - BOOL fUsingDefaultPalette; - BOOL fAudioHardware; - BOOL fCapFileExists; - DWORD dwCurrentVideoFrame; - DWORD dwCurrentVideoFramesDropped; - DWORD dwCurrentWaveSamples; - DWORD dwCurrentTimeElapsedMS; - HPALETTE hPalCurrent; - BOOL fCapturingNow; - DWORD dwReturn; - UINT wNumVideoAllocated; - UINT wNumAudioAllocated; + UINT uiImageWidth; + UINT uiImageHeight; + BOOL fLiveWindow; + BOOL fOverlayWindow; + BOOL fScale; + POINT ptScroll; + BOOL fUsingDefaultPalette; + BOOL fAudioHardware; + BOOL fCapFileExists; + DWORD dwCurrentVideoFrame; + DWORD dwCurrentVideoFramesDropped; + DWORD dwCurrentWaveSamples; + DWORD dwCurrentTimeElapsedMS; + HPALETTE hPalCurrent; + BOOL fCapturingNow; + DWORD dwReturn; + UINT wNumVideoAllocated; + UINT wNumAudioAllocated; } alias CAPSTATUS* PCAPSTATUS, LPCAPSTATUS; struct CAPTUREPARMS { - DWORD dwRequestMicroSecPerFrame; - BOOL fMakeUserHitOKToCapture; - UINT wPercentDropForError; - BOOL fYield; - DWORD dwIndexSize; - UINT wChunkGranularity; - BOOL fUsingDOSMemory; - UINT wNumVideoRequested; - BOOL fCaptureAudio; - UINT wNumAudioRequested; - UINT vKeyAbort; - BOOL fAbortLeftMouse; - BOOL fAbortRightMouse; - BOOL fLimitEnabled; - UINT wTimeLimit; - BOOL fMCIControl; - BOOL fStepMCIDevice; - DWORD dwMCIStartTime; - DWORD dwMCIStopTime; - BOOL fStepCaptureAt2x; - UINT wStepCaptureAverageFrames; - DWORD dwAudioBufferSize; - BOOL fDisableWriteCache; - UINT AVStreamMaster; + DWORD dwRequestMicroSecPerFrame; + BOOL fMakeUserHitOKToCapture; + UINT wPercentDropForError; + BOOL fYield; + DWORD dwIndexSize; + UINT wChunkGranularity; + BOOL fUsingDOSMemory; + UINT wNumVideoRequested; + BOOL fCaptureAudio; + UINT wNumAudioRequested; + UINT vKeyAbort; + BOOL fAbortLeftMouse; + BOOL fAbortRightMouse; + BOOL fLimitEnabled; + UINT wTimeLimit; + BOOL fMCIControl; + BOOL fStepMCIDevice; + DWORD dwMCIStartTime; + DWORD dwMCIStopTime; + BOOL fStepCaptureAt2x; + UINT wStepCaptureAverageFrames; + DWORD dwAudioBufferSize; + BOOL fDisableWriteCache; + UINT AVStreamMaster; } alias CAPTUREPARMS* PCAPTUREPARMS, LPCAPTUREPARMS; @@ -2253,9 +2253,9 @@ const AVSTREAMMASTER_AUDIO = 0; const AVSTREAMMASTER_NONE = 1; struct CAPINFOCHUNK { - FOURCC fccInfoID; - LPVOID lpData; - LONG cbData; + FOURCC fccInfoID; + LPVOID lpData; + LONG cbData; } alias CAPINFOCHUNK* PCAPINFOCHUNK, LPCAPINFOCHUNK; @@ -2270,11 +2270,11 @@ extern (Windows) { } version(Unicode) { - alias CAPSTATUSCALLBACKW CAPSTATUSCALLBACK; - alias CAPERRORCALLBACKW CAPERRORCALLBACK; + alias CAPSTATUSCALLBACKW CAPSTATUSCALLBACK; + alias CAPERRORCALLBACKW CAPERRORCALLBACK; } else { // Unicode - alias CAPSTATUSCALLBACKA CAPSTATUSCALLBACK; - alias CAPERRORCALLBACKA CAPERRORCALLBACK; + alias CAPSTATUSCALLBACKA CAPSTATUSCALLBACK; + alias CAPERRORCALLBACKA CAPERRORCALLBACK; } extern (Windows) { @@ -2284,8 +2284,8 @@ extern (Windows) { } // CapControlCallback states -const CONTROLCALLBACK_PREROLL = 1; -const CONTROLCALLBACK_CAPTURING = 2; +const CONTROLCALLBACK_PREROLL = 1; +const CONTROLCALLBACK_CAPTURING = 2; extern (Windows) { HWND capCreateCaptureWindowA(LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); @@ -2295,84 +2295,84 @@ extern (Windows) { } version(Unicode) { - alias capCreateCaptureWindowW capCreateCaptureWindow; - alias capGetDriverDescriptionW capGetDriverDescription; + alias capCreateCaptureWindowW capCreateCaptureWindow; + alias capGetDriverDescriptionW capGetDriverDescription; } else { // Unicode - alias capCreateCaptureWindowA capCreateCaptureWindow; - alias capGetDriverDescriptionA capGetDriverDescription; + alias capCreateCaptureWindowA capCreateCaptureWindow; + alias capGetDriverDescriptionA capGetDriverDescription; } // New Information chunk IDs -const infotypeDIGITIZATION_TIME = mmioFOURCC!('I', 'D', 'I', 'T'); -const infotypeSMPTE_TIME = mmioFOURCC!('I', 'S', 'M', 'P'); +const infotypeDIGITIZATION_TIME = mmioFOURCC!('I', 'D', 'I', 'T'); +const infotypeSMPTE_TIME = mmioFOURCC!('I', 'S', 'M', 'P'); // status and error callbacks enum { - IDS_CAP_BEGIN = 300, - IDS_CAP_END = 301, - - IDS_CAP_INFO = 401, - IDS_CAP_OUTOFMEM = 402, - IDS_CAP_FILEEXISTS = 403, - IDS_CAP_ERRORPALOPEN = 404, - IDS_CAP_ERRORPALSAVE = 405, - IDS_CAP_ERRORDIBSAVE = 406, - IDS_CAP_DEFAVIEXT = 407, - IDS_CAP_DEFPALEXT = 408, - IDS_CAP_CANTOPEN = 409, - IDS_CAP_SEQ_MSGSTART = 410, - IDS_CAP_SEQ_MSGSTOP = 411, - - IDS_CAP_VIDEDITERR = 412, - IDS_CAP_READONLYFILE = 413, - IDS_CAP_WRITEERROR = 414, - IDS_CAP_NODISKSPACE = 415, - IDS_CAP_SETFILESIZE = 416, - IDS_CAP_SAVEASPERCENT = 417, - - IDS_CAP_DRIVER_ERROR = 418, - - IDS_CAP_WAVE_OPEN_ERROR = 419, - IDS_CAP_WAVE_ALLOC_ERROR = 420, - IDS_CAP_WAVE_PREPARE_ERROR = 421, - IDS_CAP_WAVE_ADD_ERROR = 422, - IDS_CAP_WAVE_SIZE_ERROR = 423, - - IDS_CAP_VIDEO_OPEN_ERROR = 424, - IDS_CAP_VIDEO_ALLOC_ERROR = 425, - IDS_CAP_VIDEO_PREPARE_ERROR = 426, - IDS_CAP_VIDEO_ADD_ERROR = 427, - IDS_CAP_VIDEO_SIZE_ERROR = 428, - - IDS_CAP_FILE_OPEN_ERROR = 429, - IDS_CAP_FILE_WRITE_ERROR = 430, - IDS_CAP_RECORDING_ERROR = 431, - IDS_CAP_RECORDING_ERROR2 = 432, - IDS_CAP_AVI_INIT_ERROR = 433, - IDS_CAP_NO_FRAME_CAP_ERROR = 434, - IDS_CAP_NO_PALETTE_WARN = 435, - IDS_CAP_MCI_CONTROL_ERROR = 436, - IDS_CAP_MCI_CANT_STEP_ERROR = 437, - IDS_CAP_NO_AUDIO_CAP_ERROR = 438, - IDS_CAP_AVI_DRAWDIB_ERROR = 439, - IDS_CAP_COMPRESSOR_ERROR = 440, - IDS_CAP_AUDIO_DROP_ERROR = 441, - IDS_CAP_AUDIO_DROP_COMPERROR = 442, - - IDS_CAP_STAT_LIVE_MODE = 500, - IDS_CAP_STAT_OVERLAY_MODE = 501, - IDS_CAP_STAT_CAP_INIT = 502, - IDS_CAP_STAT_CAP_FINI = 503, - IDS_CAP_STAT_PALETTE_BUILD = 504, - IDS_CAP_STAT_OPTPAL_BUILD = 505, - IDS_CAP_STAT_I_FRAMES = 506, - IDS_CAP_STAT_L_FRAMES = 507, - IDS_CAP_STAT_CAP_L_FRAMES = 508, - IDS_CAP_STAT_CAP_AUDIO = 509, - IDS_CAP_STAT_VIDEOCURRENT = 510, - IDS_CAP_STAT_VIDEOAUDIO = 511, - IDS_CAP_STAT_VIDEOONLY = 512, - IDS_CAP_STAT_FRAMESDROPPED = 513, + IDS_CAP_BEGIN = 300, + IDS_CAP_END = 301, + + IDS_CAP_INFO = 401, + IDS_CAP_OUTOFMEM = 402, + IDS_CAP_FILEEXISTS = 403, + IDS_CAP_ERRORPALOPEN = 404, + IDS_CAP_ERRORPALSAVE = 405, + IDS_CAP_ERRORDIBSAVE = 406, + IDS_CAP_DEFAVIEXT = 407, + IDS_CAP_DEFPALEXT = 408, + IDS_CAP_CANTOPEN = 409, + IDS_CAP_SEQ_MSGSTART = 410, + IDS_CAP_SEQ_MSGSTOP = 411, + + IDS_CAP_VIDEDITERR = 412, + IDS_CAP_READONLYFILE = 413, + IDS_CAP_WRITEERROR = 414, + IDS_CAP_NODISKSPACE = 415, + IDS_CAP_SETFILESIZE = 416, + IDS_CAP_SAVEASPERCENT = 417, + + IDS_CAP_DRIVER_ERROR = 418, + + IDS_CAP_WAVE_OPEN_ERROR = 419, + IDS_CAP_WAVE_ALLOC_ERROR = 420, + IDS_CAP_WAVE_PREPARE_ERROR = 421, + IDS_CAP_WAVE_ADD_ERROR = 422, + IDS_CAP_WAVE_SIZE_ERROR = 423, + + IDS_CAP_VIDEO_OPEN_ERROR = 424, + IDS_CAP_VIDEO_ALLOC_ERROR = 425, + IDS_CAP_VIDEO_PREPARE_ERROR = 426, + IDS_CAP_VIDEO_ADD_ERROR = 427, + IDS_CAP_VIDEO_SIZE_ERROR = 428, + + IDS_CAP_FILE_OPEN_ERROR = 429, + IDS_CAP_FILE_WRITE_ERROR = 430, + IDS_CAP_RECORDING_ERROR = 431, + IDS_CAP_RECORDING_ERROR2 = 432, + IDS_CAP_AVI_INIT_ERROR = 433, + IDS_CAP_NO_FRAME_CAP_ERROR = 434, + IDS_CAP_NO_PALETTE_WARN = 435, + IDS_CAP_MCI_CONTROL_ERROR = 436, + IDS_CAP_MCI_CANT_STEP_ERROR = 437, + IDS_CAP_NO_AUDIO_CAP_ERROR = 438, + IDS_CAP_AVI_DRAWDIB_ERROR = 439, + IDS_CAP_COMPRESSOR_ERROR = 440, + IDS_CAP_AUDIO_DROP_ERROR = 441, + IDS_CAP_AUDIO_DROP_COMPERROR = 442, + + IDS_CAP_STAT_LIVE_MODE = 500, + IDS_CAP_STAT_OVERLAY_MODE = 501, + IDS_CAP_STAT_CAP_INIT = 502, + IDS_CAP_STAT_CAP_FINI = 503, + IDS_CAP_STAT_PALETTE_BUILD = 504, + IDS_CAP_STAT_OPTPAL_BUILD = 505, + IDS_CAP_STAT_I_FRAMES = 506, + IDS_CAP_STAT_L_FRAMES = 507, + IDS_CAP_STAT_CAP_L_FRAMES = 508, + IDS_CAP_STAT_CAP_AUDIO = 509, + IDS_CAP_STAT_VIDEOCURRENT = 510, + IDS_CAP_STAT_VIDEOAUDIO = 511, + IDS_CAP_STAT_VIDEOONLY = 512, + IDS_CAP_STAT_FRAMESDROPPED = 513, } /** @@ -2387,9 +2387,9 @@ extern (Windows) { } version(Unicode) { - alias GetOpenFileNamePreviewW GetOpenFileNamePreview; - alias GetSaveFileNamePreviewW GetSaveFileNamePreview; + alias GetOpenFileNamePreviewW GetOpenFileNamePreview; + alias GetSaveFileNamePreviewW GetSaveFileNamePreview; } else { // Unicode - alias GetOpenFileNamePreviewA GetOpenFileNamePreview; - alias GetSaveFileNamePreviewA GetSaveFileNamePreview; + alias GetOpenFileNamePreviewA GetOpenFileNamePreview; + alias GetSaveFileNamePreviewA GetSaveFileNamePreview; } diff --git a/src/core/sys/windows/w32api.d b/src/core/sys/windows/w32api.d index cf39f544c0..f91efda20f 100644 --- a/src/core/sys/windows/w32api.d +++ b/src/core/sys/windows/w32api.d @@ -13,12 +13,12 @@ enum __W32API_VERSION = 3.17; enum __W32API_MAJOR_VERSION = 3; enum __W32API_MINOR_VERSION = 17; -/* These version identifiers are used to specify the minimum version of Windows that an - * application will support. +/* These version identifiers are used to specify the minimum version of Windows that an + * application will support. * - * Previously the minimum Windows 9x and Windows NT versions could be specified. However, since - * Windows 9x is no longer supported, either by Microsoft or by DMD, this distinction has been - * removed in order to simplify the bindings. + * Previously the minimum Windows 9x and Windows NT versions could be specified. However, since + * Windows 9x is no longer supported, either by Microsoft or by DMD, this distinction has been + * removed in order to simplify the bindings. */ version (Windows10) { enum uint _WIN32_WINNT = 0x604; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index cbe98277f2..f9aa0836c8 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -398,8 +398,8 @@ const DWORD // Thread exit code const DWORD STILL_ACTIVE = 0x103; -/* ??? The only documentation of this seems to be about Windows CE and to - * state what _doesn't_ support it. +/* ??? The only documentation of this seems to be about Windows CE and to + * state what _doesn't_ support it. */ const DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; @@ -1283,7 +1283,7 @@ struct WIN32_FIND_DATAA { DWORD nFileSizeHigh; DWORD nFileSizeLow; // #ifdef _WIN32_WCE -// DWORD dwOID; +// DWORD dwOID; // #else DWORD dwReserved0; DWORD dwReserved1; @@ -1303,7 +1303,7 @@ struct WIN32_FIND_DATAW { DWORD nFileSizeHigh; DWORD nFileSizeLow; // #ifdef _WIN32_WCE -// DWORD dwOID; +// DWORD dwOID; // #else DWORD dwReserved0; DWORD dwReserved1; @@ -1357,8 +1357,8 @@ struct HW_PROFILE_INFOW { } alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; -/* ??? MSDN documents this only for Windows CE/Mobile, but it's used by - * GetFileAttributesEx, which is in desktop Windows. +/* ??? MSDN documents this only for Windows CE/Mobile, but it's used by + * GetFileAttributesEx, which is in desktop Windows. */ enum GET_FILEEX_INFO_LEVELS { GetFileExInfoStandard, @@ -1489,8 +1489,8 @@ struct LDT_ENTRY { } alias LDT_ENTRY* PLDT_ENTRY, LPLDT_ENTRY; -/* As with the other memory management functions and structures, MSDN's - * Windows version info shall be taken with a cup of salt. +/* As with the other memory management functions and structures, MSDN's + * Windows version info shall be taken with a cup of salt. */ struct PROCESS_HEAP_ENTRY { PVOID lpData; @@ -1523,8 +1523,8 @@ struct OFSTRUCT { } alias OFSTRUCT* LPOFSTRUCT, POFSTRUCT; -/* ??? MSDN documents this only for Windows CE, but it's used by - * ImageGetCertificateData, which is in desktop Windows. +/* ??? MSDN documents this only for Windows CE, but it's used by + * ImageGetCertificateData, which is in desktop Windows. */ struct WIN_CERTIFICATE { DWORD dwLength; @@ -1602,8 +1602,8 @@ static if (_WIN32_WINNT >= 0x501) { } // (_WIN32_WINNT >= 0x501) static if (_WIN32_WINNT >= 0x410) { - /* apparently used only by SetThreadExecutionState (Win2000+) - * and DDK functions (version compatibility not established) + /* apparently used only by SetThreadExecutionState (Win2000+) + * and DDK functions (version compatibility not established) */ alias DWORD EXECUTION_STATE; } @@ -1882,10 +1882,10 @@ WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); BOOL InitAtomTable(DWORD); VOID InitializeCriticalSection(LPCRITICAL_SECTION); - /* ??? The next two are allegedly obsolete and "supported only for - * backward compatibility with the 16-bit Windows API". Yet the - * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ - * only. Where's the mistake? + /* ??? The next two are allegedly obsolete and "supported only for + * backward compatibility with the 16-bit Windows API". Yet the + * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ + * only. Where's the mistake? */ BOOL IsBadHugeReadPtr(PCVOID, UINT_PTR); BOOL IsBadHugeWritePtr(PVOID, UINT_PTR); @@ -2041,9 +2041,9 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); BOOL WriteProfileStringA(LPCSTR, LPCSTR, LPCSTR); BOOL WriteProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR); - /* Memory allocation functions. - * MSDN documents these erroneously as Win2000+; thus it is uncertain what - * version compatibility they really have. + /* Memory allocation functions. + * MSDN documents these erroneously as Win2000+; thus it is uncertain what + * version compatibility they really have. */ HGLOBAL GlobalAlloc(UINT, DWORD); HGLOBAL GlobalDiscard(HGLOBAL); diff --git a/src/core/sys/windows/winber.d b/src/core/sys/windows/winber.d index e22558eded..a231a3d8ec 100644 --- a/src/core/sys/windows/winber.d +++ b/src/core/sys/windows/winber.d @@ -29,7 +29,7 @@ module core.sys.windows.winber; import core.sys.windows.basetsd; /* Opaque structure - * http://msdn.microsoft.com/library/en-us/ldap/ldap/berelement.asp + * http://msdn.microsoft.com/library/en-us/ldap/ldap/berelement.asp */ struct BerElement; @@ -49,8 +49,8 @@ const ber_tag_t LBER_DEFAULT = -1, LBER_USE_DER = 1; -/* FIXME: In MinGW, these are WINBERAPI == DECLSPEC_IMPORT. Linkage - * attribute? +/* FIXME: In MinGW, these are WINBERAPI == DECLSPEC_IMPORT. Linkage + * attribute? */ extern (C) { BerElement* ber_init(const(BerValue)*); diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index 363621b964..55d8aa15bf 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -12,10 +12,10 @@ module core.sys.windows.wincrypt; private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; /* FIXME: - * Types of some constants - * Types of macros - * Inits of various "size" and "version" members - * Why are some #ifdefs commented out? + * Types of some constants + * Types of macros + * Inits of various "size" and "version" members + * Why are some #ifdefs commented out? */ const TCHAR[] @@ -220,17 +220,17 @@ enum { PP_NAME = 4, PP_VERSION = 5, PP_CONTAINER = 6, - PP_CHANGE_PASSWORD = 7, - PP_KEYSET_SEC_DESCR = 8, - PP_CERTCHAIN = 9, - PP_KEY_TYPE_SUBTYPE = 10, - PP_PROVTYPE = 16, - PP_KEYSTORAGE = 17, - PP_APPLI_CERT = 18, - PP_SYM_KEYSIZE = 19, - PP_SESSION_KEYSIZE = 20, - PP_UI_PROMPT = 21, - PP_ENUMALGS_EX = 22, + PP_CHANGE_PASSWORD = 7, + PP_KEYSET_SEC_DESCR = 8, + PP_CERTCHAIN = 9, + PP_KEY_TYPE_SUBTYPE = 10, + PP_PROVTYPE = 16, + PP_KEYSTORAGE = 17, + PP_APPLI_CERT = 18, + PP_SYM_KEYSIZE = 19, + PP_SESSION_KEYSIZE = 20, + PP_UI_PROMPT = 21, + PP_ENUMALGS_EX = 22, PP_ENUMMANDROOTS = 25, PP_ENUMELECTROOTS = 26, PP_KEYSET_TYPE = 27, diff --git a/src/core/sys/windows/winerror.d b/src/core/sys/windows/winerror.d index a5664c9722..e5e0c371b4 100644 --- a/src/core/sys/windows/winerror.d +++ b/src/core/sys/windows/winerror.d @@ -1566,7 +1566,7 @@ enum : uint { DNS_ERROR_DP_ALREADY_ENLISTED, DNS_ERROR_DP_NOT_AVAILABLE, // = 9905 -/+ already in winsock2.d defined! +/+ already in winsock2.d defined! WSABASEERR = 10000, WSAEINTR = 10004, diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d index e1ee1b15f3..68f2a923b7 100644 --- a/src/core/sys/windows/winhttp.d +++ b/src/core/sys/windows/winhttp.d @@ -14,7 +14,7 @@ pragma(lib, "winhttp"); import win32.w32api; import win32.winbase; import win32.windef; -import win32.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) +import win32.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) alias HINTERNET = void*; alias LPHINTERNET = HINTERNET*; @@ -299,7 +299,7 @@ enum : DWORD { // Windows 8.1 SDK: static if (_WIN32_WINNT >= 0x602) { enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; -} else { // Windows 7.0A SDK: +} else { // Windows 7.0A SDK: enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; } @@ -434,7 +434,7 @@ enum : DWORD { enum DWORD WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE = WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE; // Windows 8+/2012+ -static if (_WIN32_WINNT >= 0x602) { +static if (_WIN32_WINNT >= 0x602) { enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE @@ -823,7 +823,7 @@ extern (Windows) { LPDWORD lpdwNumberOfBytesWritten); // Version(Windows8) || Version(Windows2012): - static if (_WIN32_WINNT >= 0x602) { + static if (_WIN32_WINNT >= 0x602) { DWORD WinHttpCreateProxyResolver(HINTERNET hSession, HINTERNET *phResolver); void WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT *pProxyResult); DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d index c8b0a0960f..6ae4b9d9cd 100644 --- a/src/core/sys/windows/winioctl.d +++ b/src/core/sys/windows/winioctl.d @@ -94,8 +94,8 @@ enum { FILE_WRITE_ACCESS } -/* Bit pattern: - * tttttttt tttttttt aaffffff ffffffmm +/* Bit pattern: + * tttttttt tttttttt aaffffff ffffffmm */ /+ #define CTL_CODE(t, f, m, a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index 1f03973638..6646cf6568 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -43,9 +43,9 @@ enum { LDAP_VERSION_MAX = LDAP_VERSION3 } -/* MinGW defines ANSI and Unicode versions as LDAP_VENDOR_NAME and - * LDAP_VENDOR_NAME_W respectively; similarly with other string constants - * defined in this module. +/* MinGW defines ANSI and Unicode versions as LDAP_VENDOR_NAME and + * LDAP_VENDOR_NAME_W respectively; similarly with other string constants + * defined in this module. */ const TCHAR[] LDAP_VENDOR_NAME = "Microsoft Corporation."; @@ -356,9 +356,9 @@ struct LDAPControlW { } alias LDAPControlW* PLDAPControlW; -/* Do we really need these? In MinGW, LDAPModA/W have only mod_op, mod_type - * and mod_vals, and macros are used to simulate anonymous unions in those - * structures. +/* Do we really need these? In MinGW, LDAPModA/W have only mod_op, mod_type + * and mod_vals, and macros are used to simulate anonymous unions in those + * structures. */ union mod_vals_u_tA { PCHAR* modv_strvals; @@ -397,7 +397,7 @@ struct LDAPModW { alias LDAPModW* PLDAPModW; /* Opaque structure - * http://msdn.microsoft.com/library/en-us/ldap/ldap/ldapsearch.asp + * http://msdn.microsoft.com/library/en-us/ldap/ldap/ldapsearch.asp */ struct LDAPSearch; alias LDAPSearch* PLDAPSearch; @@ -416,8 +416,8 @@ struct LDAPSortKeyW { } alias LDAPSortKeyW* PLDAPSortKeyW; -/* MinGW defines these as immediate function typedefs, which don't translate - * well into D. +/* MinGW defines these as immediate function typedefs, which don't translate + * well into D. */ extern (C) { alias ULONG function(PLDAP, PLDAP, PWCHAR, PCHAR, ULONG, PVOID, PVOID, @@ -457,8 +457,8 @@ int ldap_perror(LDAP* handle, char* message) { return printf("%s: %s\n", message, handle.ld_error); } -/* FIXME: In MinGW, these are WINLDAPAPI == DECLSPEC_IMPORT. Linkage - * attribute? +/* FIXME: In MinGW, these are WINLDAPAPI == DECLSPEC_IMPORT. Linkage + * attribute? */ extern (C) { PLDAP ldap_initA(PCHAR, ULONG); diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index 8384094819..18117ae158 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -1165,7 +1165,7 @@ const WORD IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200, - IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, + IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800, IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000, IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000; @@ -1258,9 +1258,9 @@ const DWORD IMAGE_SCN_MEM_READ = 0x40000000, IMAGE_SCN_MEM_WRITE = 0x80000000; -/* The following constants are mostlydocumented at - * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/pecoff.doc - * but don't seem to be defined in the HTML docs. +/* The following constants are mostlydocumented at + * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/pecoff.doc + * but don't seem to be defined in the HTML docs. */ enum : SHORT { IMAGE_SYM_UNDEFINED = 0, @@ -1936,8 +1936,8 @@ const ULONG IO_REPARSE_TAG_SYMLINK = 0xA000000C, IO_REPARSE_TAG_VALID_VALUES = 0xE000FFFF; -/* Although these are semantically boolean, they are documented and - * implemented to return ULONG; this behaviour is preserved for compatibility +/* Although these are semantically boolean, they are documented and + * implemented to return ULONG; this behaviour is preserved for compatibility */ ULONG IsReparseTagMicrosoft(ULONG x) { return x & 0x80000000; } ULONG IsReparseTagHighLatency(ULONG x) { return x & 0x40000000; } diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 8e3e44a7f3..cbc5eb3da6 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -1073,7 +1073,7 @@ enum : int { SM_REMOTESESSION = 0x1000, } static if (_WIN32_WINNT >= 0x501) { - enum { // These are only for WinXP and later + enum { // These are only for WinXP and later SM_SHUTTINGDOWN = 0x2000, SM_REMOTECONTROL = 0x2001 } @@ -1557,15 +1557,15 @@ enum WM_QUERYUISTATE = 0x0129; // LOWORD(wParam) values in WM_*UISTATE* enum { - UIS_SET = 1, - UIS_CLEAR = 2, - UIS_INITIALIZE = 3 + UIS_SET = 1, + UIS_CLEAR = 2, + UIS_INITIALIZE = 3 } // HIWORD(wParam) values in WM_*UISTATE* enum { - UISF_HIDEFOCUS = 0x1, - UISF_HIDEACCEL = 0x2 + UISF_HIDEFOCUS = 0x1, + UISF_HIDEACCEL = 0x2 } @@ -1573,7 +1573,7 @@ static if (_WIN32_WINNT >= 0x501) { // HIWORD(wParam) values in WM_*UISTATE* enum { - UISF_ACTIVE = 0x4 + UISF_ACTIVE = 0x4 } } @@ -3265,8 +3265,8 @@ struct MENUBARINFO { HMENU hMenu; HWND hwndMenu; byte bf_; // Simulated bitfield -// BOOL fBarFocused:1; -// BOOL fFocused:1; +// BOOL fBarFocused:1; +// BOOL fFocused:1; bool fBarFocused() { return (bf_ & 1) == 1; } bool fFocused() { return (bf_ & 2) == 2; } bool fBarFocused(bool b) { bf_ = cast(byte) ((bf_ & 0xFE) | b); return b; } diff --git a/src/core/sys/windows/ws2tcpip.d b/src/core/sys/windows/ws2tcpip.d index 92e33f108c..e263cc61e7 100644 --- a/src/core/sys/windows/ws2tcpip.d +++ b/src/core/sys/windows/ws2tcpip.d @@ -16,34 +16,34 @@ import core.sys.windows.windef; import core.sys.windows.winsock2; enum { - IP_OPTIONS = 1, - - IP_HDRINCL = 2, - IP_TOS = 3, - IP_TTL = 4, - IP_MULTICAST_IF = 9, - IP_MULTICAST_TTL = 10, - IP_MULTICAST_LOOP = 11, - IP_ADD_MEMBERSHIP = 12, - IP_DROP_MEMBERSHIP = 13, - IP_DONTFRAGMENT = 14, - IP_ADD_SOURCE_MEMBERSHIP = 15, - IP_DROP_SOURCE_MEMBERSHIP = 16, - IP_BLOCK_SOURCE = 17, - IP_UNBLOCK_SOURCE = 18, - IP_PKTINFO = 19 + IP_OPTIONS = 1, + + IP_HDRINCL = 2, + IP_TOS = 3, + IP_TTL = 4, + IP_MULTICAST_IF = 9, + IP_MULTICAST_TTL = 10, + IP_MULTICAST_LOOP = 11, + IP_ADD_MEMBERSHIP = 12, + IP_DROP_MEMBERSHIP = 13, + IP_DONTFRAGMENT = 14, + IP_ADD_SOURCE_MEMBERSHIP = 15, + IP_DROP_SOURCE_MEMBERSHIP = 16, + IP_BLOCK_SOURCE = 17, + IP_UNBLOCK_SOURCE = 18, + IP_PKTINFO = 19 } enum { - IPV6_UNICAST_HOPS = 4, - IPV6_MULTICAST_IF = 9, - IPV6_MULTICAST_HOPS = 10, - IPV6_MULTICAST_LOOP = 11, - IPV6_ADD_MEMBERSHIP = 12, - IPV6_DROP_MEMBERSHIP = 13, - IPV6_JOIN_GROUP = IPV6_ADD_MEMBERSHIP, - IPV6_LEAVE_GROUP = IPV6_DROP_MEMBERSHIP, - IPV6_PKTINFO = 19 + IPV6_UNICAST_HOPS = 4, + IPV6_MULTICAST_IF = 9, + IPV6_MULTICAST_HOPS = 10, + IPV6_MULTICAST_LOOP = 11, + IPV6_ADD_MEMBERSHIP = 12, + IPV6_DROP_MEMBERSHIP = 13, + IPV6_JOIN_GROUP = IPV6_ADD_MEMBERSHIP, + IPV6_LEAVE_GROUP = IPV6_DROP_MEMBERSHIP, + IPV6_PKTINFO = 19 } const IP_DEFAULT_MULTICAST_TTL = 1; @@ -55,40 +55,40 @@ const TCP_EXPEDITED_1122 = 2; const UDP_NOCHECKSUM = 1; enum { - IFF_UP = 1, - IFF_BROADCAST = 2, - IFF_LOOPBACK = 4, - IFF_POINTTOPOINT = 8, - IFF_MULTICAST = 16 + IFF_UP = 1, + IFF_BROADCAST = 2, + IFF_LOOPBACK = 4, + IFF_POINTTOPOINT = 8, + IFF_MULTICAST = 16 } const SIO_GET_INTERFACE_LIST = _IOR!('t', 127, u_long); -const INET_ADDRSTRLEN = 16; -const INET6_ADDRSTRLEN = 46; +const INET_ADDRSTRLEN = 16; +const INET6_ADDRSTRLEN = 46; -const NI_MAXHOST = 1025; -const NI_MAXSERV = 32; +const NI_MAXHOST = 1025; +const NI_MAXSERV = 32; -const NI_NOFQDN = 0x01; -const NI_NUMERICHOST = 0x02; -const NI_NAMEREQD = 0x04; -const NI_NUMERICSERV = 0x08; -const NI_DGRAM = 0x10; +const NI_NOFQDN = 0x01; +const NI_NUMERICHOST = 0x02; +const NI_NAMEREQD = 0x04; +const NI_NUMERICSERV = 0x08; +const NI_DGRAM = 0x10; -const AI_PASSIVE = 1; -const AI_CANONNAME = 2; -const AI_NUMERICHOST = 4; +const AI_PASSIVE = 1; +const AI_CANONNAME = 2; +const AI_NUMERICHOST = 4; -const EAI_AGAIN = WSATRY_AGAIN; -const EAI_BADFLAGS = WSAEINVAL; -const EAI_FAIL = WSANO_RECOVERY; -const EAI_FAMILY = WSAEAFNOSUPPORT; -const EAI_MEMORY = WSA_NOT_ENOUGH_MEMORY; -const EAI_NODATA = WSANO_DATA; -const EAI_NONAME = WSAHOST_NOT_FOUND; -const EAI_SERVICE = WSATYPE_NOT_FOUND; -const EAI_SOCKTYPE = WSAESOCKTNOSUPPORT; +const EAI_AGAIN = WSATRY_AGAIN; +const EAI_BADFLAGS = WSAEINVAL; +const EAI_FAIL = WSANO_RECOVERY; +const EAI_FAMILY = WSAEAFNOSUPPORT; +const EAI_MEMORY = WSA_NOT_ENOUGH_MEMORY; +const EAI_NODATA = WSANO_DATA; +const EAI_NONAME = WSAHOST_NOT_FOUND; +const EAI_SERVICE = WSATYPE_NOT_FOUND; +const EAI_SOCKTYPE = WSAESOCKTNOSUPPORT; struct ip_mreq { IN_ADDR imr_multiaddr; @@ -102,11 +102,11 @@ struct ip_mreq_source { } struct ip_msfilter { - IN_ADDR imsf_multiaddr; - IN_ADDR imsf_interface; - u_long imsf_fmode; - u_long imsf_numsrc; - IN_ADDR[1] imsf_slist; + IN_ADDR imsf_multiaddr; + IN_ADDR imsf_interface; + u_long imsf_fmode; + u_long imsf_numsrc; + IN_ADDR[1] imsf_slist; } template IP_MSFILTER_SIZE(ULONG numsrc) { @@ -114,15 +114,15 @@ template IP_MSFILTER_SIZE(ULONG numsrc) { } struct IN_PKTINFO { - IN_ADDR ipi_addr; - UINT ipi_ifindex; + IN_ADDR ipi_addr; + UINT ipi_ifindex; } struct IN6_ADDR { union { - u_char[16] _S6_u8; - u_short[8] _S6_u16; - u_long[4] _S6_u32; + u_char[16] _S6_u8; + u_short[8] _S6_u16; + u_long[4] _S6_u32; } } alias IN6_ADDR* PIN6_ADDR, LPIN6_ADDR; @@ -140,85 +140,85 @@ extern IN6_ADDR in6addr_any; extern IN6_ADDR in6addr_loopback; /+ TODO: -#define IN6_ARE_ADDR_EQUAL(a, b) \ +#define IN6_ARE_ADDR_EQUAL(a, b) \ (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0) #define IN6_IS_ADDR_UNSPECIFIED(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ && (((const u_long *)(_addr))[3] == 0)) #define IN6_IS_ADDR_LOOPBACK(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ && (((const u_long *)(_addr))[3] == 0x01000000)) #define IN6_IS_ADDR_MULTICAST(_addr) (((const u_char *) (_addr))[0] == 0xff) #define IN6_IS_ADDR_LINKLOCAL(_addr) \ - ( (((const u_char *)(_addr))[0] == 0xfe) \ + ( (((const u_char *)(_addr))[0] == 0xfe) \ && ((((const u_char *)(_addr))[1] & 0xc0) == 0x80)) #define IN6_IS_ADDR_SITELOCAL(_addr) \ - ( (((const u_char *)(_addr))[0] == 0xfe) \ + ( (((const u_char *)(_addr))[0] == 0xfe) \ && ((((const u_char *)(_addr))[1] & 0xc0) == 0xc0)) #define IN6_IS_ADDR_V4MAPPED(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ && (((const u_long *)(_addr))[2] == 0xffff0000)) #define IN6_IS_ADDR_V4COMPAT(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] != 0) \ + ( (((const u_long *)(_addr))[0] == 0) \ + && (((const u_long *)(_addr))[1] == 0) \ + && (((const u_long *)(_addr))[2] == 0) \ + && (((const u_long *)(_addr))[3] != 0) \ && (((const u_long *)(_addr))[3] != 0x01000000)) -#define IN6_IS_ADDR_MC_NODELOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ +#define IN6_IS_ADDR_MC_NODELOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) -#define IN6_IS_ADDR_MC_LINKLOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST (_addr) \ +#define IN6_IS_ADDR_MC_LINKLOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST (_addr) \ && ((((const u_char *)(_addr))[1] & 0xf) == 0x2)) -#define IN6_IS_ADDR_MC_SITELOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ +#define IN6_IS_ADDR_MC_SITELOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ && ((((const u_char *)(_addr))[1] & 0xf) == 0x5)) -#define IN6_IS_ADDR_MC_ORGLOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ +#define IN6_IS_ADDR_MC_ORGLOCAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ && ((((const u_char *)(_addr))[1] & 0xf) == 0x8)) -#define IN6_IS_ADDR_MC_GLOBAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ +#define IN6_IS_ADDR_MC_GLOBAL(_addr) \ + ( IN6_IS_ADDR_MULTICAST(_addr) \ && ((((const u_char *)(_addr))[1] & 0xf) == 0xe)) +/ alias int socklen_t; struct IPV6_MREG { - IN6_ADDR ipv6mr_multiaddr; - uint ipv6mr_interface; + IN6_ADDR ipv6mr_multiaddr; + uint ipv6mr_interface; } struct IN6_PKTINFO { - IN6_ADDR ipi6_addr; - UINT ipi6_ifindex; + IN6_ADDR ipi6_addr; + UINT ipi6_ifindex; } struct addrinfo { - int ai_flags; - int ai_family; - int ai_socktype; - int ai_protocol; - size_t ai_addrlen; - char* ai_canonname; - SOCKADDR* ai_addr; - addrinfo* ai_next; + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + char* ai_canonname; + SOCKADDR* ai_addr; + addrinfo* ai_next; } extern(Windows) { @@ -238,7 +238,7 @@ gai_strerrorA(int ecode) | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK; DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); - FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL); + FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL); return message; } static __inline WCHAR* @@ -249,7 +249,7 @@ gai_strerrorW(int ecode) | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK; DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); - FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL); + FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL); return message; } #ifdef UNICODE From 35f820af2880f130b9cba82b10a75888df42f80d Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 19:40:15 +0000 Subject: [PATCH 116/768] Remove ws2tcpip This currently relies too much on win32.winsock2. --- src/core/sys/windows/windows.d | 2 +- src/core/sys/windows/ws2tcpip.d | 280 -------------------------------- 2 files changed, 1 insertion(+), 281 deletions(-) delete mode 100644 src/core/sys/windows/ws2tcpip.d diff --git a/src/core/sys/windows/windows.d b/src/core/sys/windows/windows.d index a78b2dfa4d..df6808c6ea 100644 --- a/src/core/sys/windows/windows.d +++ b/src/core/sys/windows/windows.d @@ -47,7 +47,7 @@ version (Win32_Winsock1) { public import core.sys.windows.winsock; } else { public import core.sys.windows.winsock2; - public import core.sys.windows.ws2tcpip; + //public import core.sys.windows.ws2tcpip; } /+ diff --git a/src/core/sys/windows/ws2tcpip.d b/src/core/sys/windows/ws2tcpip.d deleted file mode 100644 index e263cc61e7..0000000000 --- a/src/core/sys/windows/ws2tcpip.d +++ /dev/null @@ -1,280 +0,0 @@ -/** - * Windows API header module - * - * Translated from MinGW Windows headers - * - * License: Placed into public domain - * Source: $(DRUNTIMESRC src/core/sys/windows/_ws2tcpip.d) - */ - -module core.sys.windows.ws2tcpip; - -import core.sys.windows.w32api; -//import core.sys.windows.winbase; -import core.sys.windows.windef; -//import core.sys.windows.basetyps; -import core.sys.windows.winsock2; - -enum { - IP_OPTIONS = 1, - - IP_HDRINCL = 2, - IP_TOS = 3, - IP_TTL = 4, - IP_MULTICAST_IF = 9, - IP_MULTICAST_TTL = 10, - IP_MULTICAST_LOOP = 11, - IP_ADD_MEMBERSHIP = 12, - IP_DROP_MEMBERSHIP = 13, - IP_DONTFRAGMENT = 14, - IP_ADD_SOURCE_MEMBERSHIP = 15, - IP_DROP_SOURCE_MEMBERSHIP = 16, - IP_BLOCK_SOURCE = 17, - IP_UNBLOCK_SOURCE = 18, - IP_PKTINFO = 19 -} - -enum { - IPV6_UNICAST_HOPS = 4, - IPV6_MULTICAST_IF = 9, - IPV6_MULTICAST_HOPS = 10, - IPV6_MULTICAST_LOOP = 11, - IPV6_ADD_MEMBERSHIP = 12, - IPV6_DROP_MEMBERSHIP = 13, - IPV6_JOIN_GROUP = IPV6_ADD_MEMBERSHIP, - IPV6_LEAVE_GROUP = IPV6_DROP_MEMBERSHIP, - IPV6_PKTINFO = 19 -} - -const IP_DEFAULT_MULTICAST_TTL = 1; -const IP_DEFAULT_MULTICAST_LOOP = 1; -const IP_MAX_MEMBERSHIPS = 20; - -const TCP_EXPEDITED_1122 = 2; - -const UDP_NOCHECKSUM = 1; - -enum { - IFF_UP = 1, - IFF_BROADCAST = 2, - IFF_LOOPBACK = 4, - IFF_POINTTOPOINT = 8, - IFF_MULTICAST = 16 -} - -const SIO_GET_INTERFACE_LIST = _IOR!('t', 127, u_long); - -const INET_ADDRSTRLEN = 16; -const INET6_ADDRSTRLEN = 46; - -const NI_MAXHOST = 1025; -const NI_MAXSERV = 32; - -const NI_NOFQDN = 0x01; -const NI_NUMERICHOST = 0x02; -const NI_NAMEREQD = 0x04; -const NI_NUMERICSERV = 0x08; -const NI_DGRAM = 0x10; - -const AI_PASSIVE = 1; -const AI_CANONNAME = 2; -const AI_NUMERICHOST = 4; - -const EAI_AGAIN = WSATRY_AGAIN; -const EAI_BADFLAGS = WSAEINVAL; -const EAI_FAIL = WSANO_RECOVERY; -const EAI_FAMILY = WSAEAFNOSUPPORT; -const EAI_MEMORY = WSA_NOT_ENOUGH_MEMORY; -const EAI_NODATA = WSANO_DATA; -const EAI_NONAME = WSAHOST_NOT_FOUND; -const EAI_SERVICE = WSATYPE_NOT_FOUND; -const EAI_SOCKTYPE = WSAESOCKTNOSUPPORT; - -struct ip_mreq { - IN_ADDR imr_multiaddr; - IN_ADDR imr_interface; -} - -struct ip_mreq_source { - IN_ADDR imr_multiaddr; - IN_ADDR imr_sourceaddr; - IN_ADDR imr_interface; -} - -struct ip_msfilter { - IN_ADDR imsf_multiaddr; - IN_ADDR imsf_interface; - u_long imsf_fmode; - u_long imsf_numsrc; - IN_ADDR[1] imsf_slist; -} - -template IP_MSFILTER_SIZE(ULONG numsrc) { - const DWORD IP_MSFILTER_SIZE = ip_msfilter.sizeof - IN_ADDR.sizeof + numsrc * IN_ADDR.sizeof; -} - -struct IN_PKTINFO { - IN_ADDR ipi_addr; - UINT ipi_ifindex; -} - -struct IN6_ADDR { - union { - u_char[16] _S6_u8; - u_short[8] _S6_u16; - u_long[4] _S6_u32; - } -} -alias IN6_ADDR* PIN6_ADDR, LPIN6_ADDR; - -struct SOCKADDR_IN6 { - short sin6_family; - u_short sin6_port; - u_long sin6_flowinfo; - IN6_ADDR sin6_addr; - u_long sin6_scope_id; -}; -alias SOCKADDR_IN6* PSOCKADDR_IN6, LPSOCKADDR_IN6; - -extern IN6_ADDR in6addr_any; -extern IN6_ADDR in6addr_loopback; - -/+ TODO: -#define IN6_ARE_ADDR_EQUAL(a, b) \ - (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0) - -#define IN6_IS_ADDR_UNSPECIFIED(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] == 0)) - -#define IN6_IS_ADDR_LOOPBACK(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] == 0x01000000)) - -#define IN6_IS_ADDR_MULTICAST(_addr) (((const u_char *) (_addr))[0] == 0xff) - -#define IN6_IS_ADDR_LINKLOCAL(_addr) \ - ( (((const u_char *)(_addr))[0] == 0xfe) \ - && ((((const u_char *)(_addr))[1] & 0xc0) == 0x80)) - -#define IN6_IS_ADDR_SITELOCAL(_addr) \ - ( (((const u_char *)(_addr))[0] == 0xfe) \ - && ((((const u_char *)(_addr))[1] & 0xc0) == 0xc0)) - -#define IN6_IS_ADDR_V4MAPPED(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0xffff0000)) - -#define IN6_IS_ADDR_V4COMPAT(_addr) \ - ( (((const u_long *)(_addr))[0] == 0) \ - && (((const u_long *)(_addr))[1] == 0) \ - && (((const u_long *)(_addr))[2] == 0) \ - && (((const u_long *)(_addr))[3] != 0) \ - && (((const u_long *)(_addr))[3] != 0x01000000)) - -#define IN6_IS_ADDR_MC_NODELOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x1)) - -#define IN6_IS_ADDR_MC_LINKLOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST (_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x2)) - -#define IN6_IS_ADDR_MC_SITELOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x5)) - -#define IN6_IS_ADDR_MC_ORGLOCAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0x8)) - -#define IN6_IS_ADDR_MC_GLOBAL(_addr) \ - ( IN6_IS_ADDR_MULTICAST(_addr) \ - && ((((const u_char *)(_addr))[1] & 0xf) == 0xe)) -+/ - -alias int socklen_t; - -struct IPV6_MREG { - IN6_ADDR ipv6mr_multiaddr; - uint ipv6mr_interface; -} - -struct IN6_PKTINFO { - IN6_ADDR ipi6_addr; - UINT ipi6_ifindex; -} - -struct addrinfo { - int ai_flags; - int ai_family; - int ai_socktype; - int ai_protocol; - size_t ai_addrlen; - char* ai_canonname; - SOCKADDR* ai_addr; - addrinfo* ai_next; -} - -extern(Windows) { - static if (_WIN32_WINNT >= 0x501) { - void freeaddrinfo(addrinfo*); - int getaddrinfo (const(char)*, const(char)*, const(addrinfo)*, addrinfo**); - int getnameinfo(const(SOCKADDR)*, socklen_t, char*, DWORD, char*, DWORD, int); - } -} - -/+ TODO -static __inline char* -gai_strerrorA(int ecode) -{ - static char[1024+1] message; - DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS - | FORMAT_MESSAGE_MAX_WIDTH_MASK; - DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); - FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL); - return message; -} -static __inline WCHAR* -gai_strerrorW(int ecode) -{ - static WCHAR[1024+1] message; - DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS - | FORMAT_MESSAGE_MAX_WIDTH_MASK; - DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); - FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL); - return message; -} -#ifdef UNICODE -#define gai_strerror gai_strerrorW -#else -#define gai_strerror gai_strerrorA -#endif -+/ - -extern(Windows) { - INT getnameinfo(SOCKADDR* pSockaddr, socklen_t SockaddrLength, - PCHAR pNodeBuffer, DWORD NodeBufferSize, PCHAR pServiceBuffer, - DWORD ServiceBufferSize, INT Flags); - - static if (_WIN32_WINNT >= 0x502) { - INT GetNameInfoW(SOCKADDR* pSockaddr, socklen_t SockaddrLength, - PWCHAR pNodeBuffer, DWORD NodeBufferSize, PWCHAR pServiceBuffer, - DWORD ServiceBufferSize, INT Flags); - - alias getnameinfo GetNameInfoA; - - version(Unicode) { - alias GetNameInfoW GetNameInfo; - } else { - alias GetNameInfoA GetNameInfo; - } - } -} From 80aade51884c683bc80d2240a514e6210e2e6126 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 20:30:25 +0000 Subject: [PATCH 117/768] gentests: Check alias type declarations --- winhlp/testgen/gentests.d | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/winhlp/testgen/gentests.d b/winhlp/testgen/gentests.d index 271d740340..b397b362b1 100644 --- a/winhlp/testgen/gentests.d +++ b/winhlp/testgen/gentests.d @@ -102,10 +102,14 @@ int main() o.writefln("\tstatic assert(is(typeof(%s) == typeof_orig_%s));", lname, lname); } break; + case "alias": + o.writefln("\talias aliasof_%s = %s;", lname, d.deco.demangleType()); + o.writefln("\tstatic assert(is(%s == aliasof_%s));", lname, lname); + break; case "struct": case "union": - case "alias": case "enum": + // will descend to d.members below break; default: stderr.writeln("Unknown kind: ", d.kind); From 8239e6dd27f401a8e4776e5676e4d07323c546d1 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 21:06:38 +0000 Subject: [PATCH 118/768] gentests: Check field offsets --- winhlp/testgen/gentests.d | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/winhlp/testgen/gentests.d b/winhlp/testgen/gentests.d index b397b362b1..ce94708b2b 100644 --- a/winhlp/testgen/gentests.d +++ b/winhlp/testgen/gentests.d @@ -29,7 +29,7 @@ int main() Member[] members; string type; uint endline, endchar; - uint offset; + uint offset = uint.max; @JSONName("default") string default_; string defaultDeco; @@ -116,6 +116,9 @@ int main() break; } + if (d.offset != uint.max) + o.writefln("\tstatic assert(%s.offsetof == %d);", lname, d.offset); + handleMembers(prefix ~ d.name, d.members); } } From 1ba35250017f2d1c86c3ced70738676f839c70d6 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 21:59:14 +0000 Subject: [PATCH 119/768] Add declarations present in old windows.d but missing in new bindings --- src/core/sys/windows/dbghelp.d | 164 +----------------------- src/core/sys/windows/dbghelp_types.d | 181 +++++++++++++++++++++++++++ src/core/sys/windows/imagehlp.d | 6 + src/core/sys/windows/winbase.d | 130 +++++++++++-------- src/core/sys/windows/wincon.d | 25 +++- src/core/sys/windows/windef.d | 6 +- src/core/sys/windows/windows.d | 8 ++ src/core/sys/windows/wingdi.d | 2 + src/core/sys/windows/winnt.d | 17 ++- src/core/sys/windows/winreg.d | 24 ++-- src/core/sys/windows/winuser.d | 14 ++- 11 files changed, 333 insertions(+), 244 deletions(-) create mode 100644 src/core/sys/windows/dbghelp_types.d diff --git a/src/core/sys/windows/dbghelp.d b/src/core/sys/windows/dbghelp.d index 6c55c3c8c0..b295c1e6f5 100644 --- a/src/core/sys/windows/dbghelp.d +++ b/src/core/sys/windows/dbghelp.d @@ -11,171 +11,11 @@ module core.sys.windows.dbghelp; -version (Windows): - import core.sys.windows.windows; -alias CHAR TCHAR; - -/* -enum ADDRESS_MODE : DWORD -{ - AddrMode1616 = 0, - AddrMode1632 = 1, - AddrModeReal = 2, - AddrModeFlat = 3, -} -*/ -enum : DWORD -{ - SYMOPT_DEFERRED_LOAD = 0x00000004, - SYMOPT_FAIL_CRITICAL_ERRORS = 0x00000200, - SYMOPT_LOAD_LINES = 0x00000010, - SYMOPT_DEBUG = 0x80000000, -} - -enum : ULONG -{ - CBA_READ_MEMORY = 0x00000006, - CBA_DEBUG_INFO = 0x10000000, -} - -struct GUID -{ - uint Data1; - ushort Data2; - ushort Data3; - ubyte[8] Data4; -} -/+ -struct ADDRESS64 -{ - DWORD64 Offset; - WORD Segment; - ADDRESS_MODE Mode; -} - -struct KDHELP64 -{ - DWORD64 Thread; - DWORD ThCallbackStack; - DWORD ThCallbackBStore; - DWORD NextCallback; - DWORD FramePointer; - DWORD64 KiCallUserMode; - DWORD64 KeUserCallbackDispatcher; - DWORD64 SystemRangeStart; - DWORD64 KiUserExceptionDispatcher; - DWORD64[7] Reserved; -} - -struct STACKFRAME64 -{ - ADDRESS64 AddrPC; - ADDRESS64 AddrReturn; - ADDRESS64 AddrFrame; - ADDRESS64 AddrStack; - ADDRESS64 AddrBStore; - PVOID FuncTableEntry; - DWORD64[4] Params; - BOOL Far; - BOOL Virtual; - DWORD64[3] Reserved; - KDHELP64 KdHelp; -} -+/ -enum : DWORD -{ - IMAGE_FILE_MACHINE_I386 = 0x014c, - IMGAE_FILE_MACHINE_IA64 = 0x0200, - IMAGE_FILE_MACHINE_AMD64 = 0x8664, -} - -struct IMAGEHLP_LINE64 -{ - DWORD SizeOfStruct; - PVOID Key; - DWORD LineNumber; - PTSTR FileName; - DWORD64 Address; -} - -enum SYM_TYPE : int -{ - SymNone = 0, - SymCoff, - SymCv, - SymPdb, - SymExport, - SymDeferred, - SymSym, - SymDia, - SymVirtual, - NumSymTypes, -} - -struct IMAGEHLP_MODULE64 -{ - DWORD SizeOfStruct; - DWORD64 BaseOfImage; - DWORD ImageSize; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD NumSyms; - SYM_TYPE SymType; - TCHAR[32] ModuleName; - TCHAR[256] ImageName; - TCHAR[256] LoadedImageName; - // new elements: 07-Jun-2002 - version (none) - { - TCHAR[256] LoadedPdbName; - DWORD CVSig; - TCHAR[MAX_PATH*3] CVData; - DWORD PdbSig; - GUID PdbSig70; - DWORD PdbAge; - BOOL PdbUnmatched; - BOOL DbgUnmachted; - BOOL LineNumbers; - BOOL GlobalSymbols; - BOOL TypeInfo; - } - // new elements: 17-Dec-2003 - version (none) - { - BOOL SourceIndexed; - BOOL Publics; - } -} - -struct IMAGEHLP_SYMBOL64 -{ - DWORD SizeOfStruct; - DWORD64 Address; - DWORD Size; - DWORD Flags; - DWORD MaxNameLength; - TCHAR[1] Name; -} - - -struct IMAGEHLP_CBA_READ_MEMORY -{ - DWORD64 addr; - PVOID buf; - DWORD bytes; - DWORD *bytesread; -}; - -struct API_VERSION -{ - USHORT MajorVersion; - USHORT MinorVersion; - USHORT Revision; - USHORT Reserved; -}; +public import core.sys.windows.dbghelp_types; +version (Windows): extern(System) { diff --git a/src/core/sys/windows/dbghelp_types.d b/src/core/sys/windows/dbghelp_types.d new file mode 100644 index 0000000000..22df9d78d0 --- /dev/null +++ b/src/core/sys/windows/dbghelp_types.d @@ -0,0 +1,181 @@ +/** + * ... + * + * Copyright: Copyright Benjamin Thaut 2010 - 2011. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). + * (See accompanying file LICENSE) + * Authors: Benjamin Thaut, Sean Kelly + * Source: $(DRUNTIMESRC core/sys/windows/_dbghelp_types.d) + */ + +module core.sys.windows.dbghelp_types; + +import core.sys.windows.windows; + +version (Windows): + +import core.sys.windows.windows; + +alias CHAR TCHAR; + +/* +enum ADDRESS_MODE : DWORD +{ + AddrMode1616 = 0, + AddrMode1632 = 1, + AddrModeReal = 2, + AddrModeFlat = 3, +} +*/ +enum : DWORD +{ + SYMOPT_DEFERRED_LOAD = 0x00000004, + SYMOPT_FAIL_CRITICAL_ERRORS = 0x00000200, + SYMOPT_LOAD_LINES = 0x00000010, + SYMOPT_DEBUG = 0x80000000, +} + +enum : ULONG +{ + CBA_READ_MEMORY = 0x00000006, + CBA_DEBUG_INFO = 0x10000000, +} + +struct GUID +{ + uint Data1; + ushort Data2; + ushort Data3; + ubyte[8] Data4; +} + +struct ADDRESS64 +{ + DWORD64 Offset; + WORD Segment; + ADDRESS_MODE Mode; +} + +struct KDHELP64 +{ + DWORD64 Thread; + DWORD ThCallbackStack; + DWORD ThCallbackBStore; + DWORD NextCallback; + DWORD FramePointer; + DWORD64 KiCallUserMode; + DWORD64 KeUserCallbackDispatcher; + DWORD64 SystemRangeStart; + DWORD64 KiUserExceptionDispatcher; + DWORD64 StackBase; + DWORD64 StackLimit; + DWORD64[5] Reserved; +} + +struct STACKFRAME64 +{ + ADDRESS64 AddrPC; + ADDRESS64 AddrReturn; + ADDRESS64 AddrFrame; + ADDRESS64 AddrStack; + ADDRESS64 AddrBStore; + PVOID FuncTableEntry; + DWORD64[4] Params; + BOOL Far; + BOOL Virtual; + DWORD64[3] Reserved; + KDHELP64 KdHelp; +} + +enum : DWORD +{ + IMAGE_FILE_MACHINE_I386 = 0x014c, + IMGAE_FILE_MACHINE_IA64 = 0x0200, + IMAGE_FILE_MACHINE_AMD64 = 0x8664, +} + +struct IMAGEHLP_LINE64 +{ + DWORD SizeOfStruct; + PVOID Key; + DWORD LineNumber; + PTSTR FileName; + DWORD64 Address; +} + +enum SYM_TYPE : int +{ + SymNone = 0, + SymCoff, + SymCv, + SymPdb, + SymExport, + SymDeferred, + SymSym, + SymDia, + SymVirtual, + NumSymTypes, +} + +struct IMAGEHLP_MODULE64 +{ + DWORD SizeOfStruct; + DWORD64 BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + TCHAR[32] ModuleName; + TCHAR[256] ImageName; + TCHAR[256] LoadedImageName; + // new elements: 07-Jun-2002 + version (none) + { + TCHAR[256] LoadedPdbName; + DWORD CVSig; + TCHAR[MAX_PATH*3] CVData; + DWORD PdbSig; + GUID PdbSig70; + DWORD PdbAge; + BOOL PdbUnmatched; + BOOL DbgUnmachted; + BOOL LineNumbers; + BOOL GlobalSymbols; + BOOL TypeInfo; + } + // new elements: 17-Dec-2003 + version (none) + { + BOOL SourceIndexed; + BOOL Publics; + } +} + +struct IMAGEHLP_SYMBOL64 +{ + DWORD SizeOfStruct; + DWORD64 Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + TCHAR[1] Name; +} + + +struct IMAGEHLP_CBA_READ_MEMORY +{ + DWORD64 addr; + PVOID buf; + DWORD bytes; + DWORD *bytesread; +} + +struct API_VERSION +{ + USHORT MajorVersion; + USHORT MinorVersion; + USHORT Revision; + USHORT Reserved; +} diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index c9e1e3f97d..3857923628 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -172,6 +172,11 @@ struct KDHELP { DWORD KiCallUserMode; DWORD KeUserCallbackDispatcher; DWORD SystemRangeStart; + DWORD ThCallbackBStore; + DWORD KiUserExceptionDispatcher; + DWORD StackBase; + DWORD StackLimit; + DWORD[5] Reserved; } alias KDHELP* PKDHELP; @@ -186,6 +191,7 @@ struct STACKFRAME { BOOL Virtual; DWORD[3] Reserved; KDHELP KdHelp; + ADDRESS AddrBStore; } alias STACKFRAME* LPSTACKFRAME; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index f9aa0836c8..7c687490ee 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -17,29 +17,6 @@ LockSegment(w), MakeProcInstance(p, i), UnlockResource(h), UnlockSegment(w) FreeModule(m), FreeProcInstance(p), GetFreeSpace(w), DefineHandleTable(w) SetSwapAreaSize(w), LimitEmsPages(n), Yield() -// The following Win16 functions are obselete in Win32. - - int _hread(HFILE, LPVOID, int); - int _hwrite(HFILE, LPCSTR, int); - HFILE _lclose(HFILE); - HFILE _lcreat(LPCSTR, int); - LONG _llseek(HFILE, LONG, int); - HFILE _lopen(LPCSTR, int); - UINT _lread(HFILE, LPVOID, UINT); - UINT _lwrite(HFILE, LPCSTR, UINT); - SIZE_T GlobalCompact(DWORD); - VOID GlobalFix(HGLOBAL); -* MSDN contradicts itself on GlobalFlags: -* "This function is provided only for compatibility with 16-bit versions of Windows." -* but also requires Windows 2000 or above - UINT GlobalFlags(HGLOBAL); - VOID GlobalUnfix(HGLOBAL); - BOOL GlobalUnWire(HGLOBAL); - PVOID GlobalWire(HGLOBAL); - SIZE_T LocalCompact(UINT); - UINT LocalFlags(HLOCAL); - SIZE_T LocalShrink(HLOCAL, UINT); - // These are not required for DMD. //FIXME: @@ -59,37 +36,6 @@ private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.wind alias void va_list; -/+ -//-------------------------------------- -// These functions are problematic - -version(UseNtoSKernel) {}else { - /* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h - as __fastcall functions, but are exported from kernel32.dll as __stdcall */ - static if (_WIN32_WINNT >= 0x501) { - VOID InitializeSListHead(PSLIST_HEADER); - } - LONG InterlockedCompareExchange(LPLONG, LONG, LONG); - // PVOID WINAPI InterlockedCompareExchangePointer(PVOID*, PVOID, PVOID); - (PVOID)InterlockedCompareExchange((LPLONG)(d) (PVOID)InterlockedCompareExchange((LPLONG)(d), (LONG)(e), (LONG)(c)) - LONG InterlockedDecrement(LPLONG); - LONG InterlockedExchange(LPLONG, LONG); - // PVOID WINAPI InterlockedExchangePointer(PVOID*, PVOID); - (PVOID)InterlockedExchange((LPLONG)((PVOID)InterlockedExchange((LPLONG)(t), (LONG)(v)) - LONG InterlockedExchangeAdd(LPLONG, LONG); - - static if (_WIN32_WINNT >= 0x501) { - PSLIST_ENTRY InterlockedFlushSList(PSLIST_HEADER); - } - LONG InterlockedIncrement(LPLONG); - static if (_WIN32_WINNT >= 0x501) { - PSLIST_ENTRY InterlockedPopEntrySList(PSLIST_HEADER); - PSLIST_ENTRY InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); - } -} // #endif // __USE_NTOSKRNL__ -//-------------------------------------- -+/ - // COMMPROP structure, used by GetCommProperties() // ----------------------------------------------- @@ -1222,7 +1168,8 @@ struct STARTUPINFOW { HANDLE hStdOutput; HANDLE hStdError; } -alias STARTUPINFOW* LPSTARTUPINFOW; +alias STARTUPINFOW STARTUPINFO_W; +alias STARTUPINFOW* LPSTARTUPINFOW, LPSTARTUPINFO_W; struct PROCESS_INFORMATION { HANDLE hProcess; @@ -1408,6 +1355,18 @@ struct TIME_ZONE_INFORMATION { } alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; +// Does not exist in Windows headers, only MSDN +// documentation (for TIME_ZONE_INFORMATION). +// Provided solely for compatibility with the old +// core.sys.windows.windows +struct REG_TZI_FORMAT { + LONG Bias; + LONG StandardBias; + LONG DaylightBias; + SYSTEMTIME StandardDate; + SYSTEMTIME DaylightDate; +} + // MSDN documents this, possibly erroneously, as Win2000+. struct MEMORYSTATUS { DWORD dwLength; @@ -1638,6 +1597,66 @@ LPTSTR MAKEINTATOM()(ushort i) { } extern (Windows) { + // The following Win16 functions are obselete in Win32. + int _hread(HFILE, LPVOID, int); + int _hwrite(HFILE, LPCSTR, int); + HFILE _lclose(HFILE); + HFILE _lcreat(LPCSTR, int); + LONG _llseek(HFILE, LONG, int); + HFILE _lopen(LPCSTR, int); + UINT _lread(HFILE, LPVOID, UINT); + UINT _lwrite(HFILE, LPCSTR, UINT); + SIZE_T GlobalCompact(DWORD); + VOID GlobalFix(HGLOBAL); + + // MSDN contradicts itself on GlobalFlags: + // "This function is provided only for compatibility with 16-bit versions of Windows." + // but also requires Windows 2000 or above + UINT GlobalFlags(HGLOBAL); + VOID GlobalUnfix(HGLOBAL); + BOOL GlobalUnWire(HGLOBAL); + PVOID GlobalWire(HGLOBAL); + SIZE_T LocalCompact(UINT); + UINT LocalFlags(HLOCAL); + SIZE_T LocalShrink(HLOCAL, UINT); + + /+ + //-------------------------------------- + // These functions are problematic + + version(UseNtoSKernel) {}else { + /* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h + as __fastcall functions, but are exported from kernel32.dll as __stdcall */ + static if (_WIN32_WINNT >= 0x501) { + VOID InitializeSListHead(PSLIST_HEADER); + } + LONG InterlockedCompareExchange(LPLONG, LONG, LONG); + // PVOID WINAPI InterlockedCompareExchangePointer(PVOID*, PVOID, PVOID); + (PVOID)InterlockedCompareExchange((LPLONG)(d) (PVOID)InterlockedCompareExchange((LPLONG)(d), (LONG)(e), (LONG)(c)) + LONG InterlockedDecrement(LPLONG); + LONG InterlockedExchange(LPLONG, LONG); + // PVOID WINAPI InterlockedExchangePointer(PVOID*, PVOID); + (PVOID)InterlockedExchange((LPLONG)((PVOID)InterlockedExchange((LPLONG)(t), (LONG)(v)) + LONG InterlockedExchangeAdd(LPLONG, LONG); + + static if (_WIN32_WINNT >= 0x501) { + PSLIST_ENTRY InterlockedFlushSList(PSLIST_HEADER); + } + LONG InterlockedIncrement(LPLONG); + static if (_WIN32_WINNT >= 0x501) { + PSLIST_ENTRY InterlockedPopEntrySList(PSLIST_HEADER); + PSLIST_ENTRY InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); + } + } // #endif // __USE_NTOSKRNL__ + //-------------------------------------- + +/ + + LONG InterlockedIncrement(LPLONG lpAddend); + LONG InterlockedDecrement(LPLONG lpAddend); + LONG InterlockedExchange(LPLONG Target, LONG Value); + LONG InterlockedExchangeAdd(LPLONG Addend, LONG Value); + LONG InterlockedCompareExchange(LONG *Destination, LONG Exchange, LONG Comperand); + ATOM AddAtomA(LPCSTR); ATOM AddAtomW(LPCWSTR); BOOL AreFileApisANSI(); @@ -2278,6 +2297,7 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); DWORD SignalObjectAndWait(HANDLE, HANDLE, DWORD, BOOL); BOOL SwitchToThread(); BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); + BOOL TzSpecificLocalTimeToSystemTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); BOOL TryEnterCriticalSection(LPCRITICAL_SECTION); BOOL UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED); BOOL UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, PVOID, DWORD); diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index a18aad2720..fa832ddd50 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -89,7 +89,11 @@ struct CHAR_INFO { WCHAR UnicodeChar; CHAR AsciiChar; } - _Char Char; + union { + _Char Char; + WCHAR UnicodeChar; + CHAR AsciiChar; + } WORD Attributes; } alias CHAR_INFO* PCHAR_INFO; @@ -140,9 +144,14 @@ struct KEY_EVENT_RECORD { WCHAR UnicodeChar; CHAR AsciiChar; } - _uChar uChar; + union { + WCHAR UnicodeChar; + CHAR AsciiChar; + _uChar uChar; + } DWORD dwControlKeyState; } +alias KEY_EVENT_RECORD* PKEY_EVENT_RECORD; struct MOUSE_EVENT_RECORD { COORD dwMousePosition; @@ -150,10 +159,12 @@ struct MOUSE_EVENT_RECORD { DWORD dwControlKeyState; DWORD dwEventFlags; } +alias MOUSE_EVENT_RECORD* PMOUSE_EVENT_RECORD; struct WINDOW_BUFFER_SIZE_RECORD { COORD dwSize; } +alias WINDOW_BUFFER_SIZE_RECORD* PWINDOW_BUFFER_SIZE_RECORD; struct MENU_EVENT_RECORD { UINT dwCommandId; @@ -163,6 +174,7 @@ alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD; struct FOCUS_EVENT_RECORD { BOOL bSetFocus; } +alias FOCUS_EVENT_RECORD* PFOCUS_EVENT_RECORD; struct INPUT_RECORD { WORD EventType; @@ -173,7 +185,14 @@ struct INPUT_RECORD { MENU_EVENT_RECORD MenuEvent; FOCUS_EVENT_RECORD FocusEvent; } - _Event Event; + union { + KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; + _Event Event; + } } alias INPUT_RECORD* PINPUT_RECORD; diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index 569d9e6897..a3459b0053 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -68,7 +68,7 @@ alias ubyte* PBYTE, LPBYTE; alias ushort USHORT, WORD, ATOM; alias ushort* PUSHORT, PWORD, LPWORD; alias uint ULONG, DWORD, UINT, COLORREF; -alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT; +alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT, LPCOLORREF; alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT; alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG; alias float FLOAT; @@ -126,7 +126,7 @@ struct RECT { LONG bottom; } alias RECT RECTL; -alias RECT* PRECT, LPRECT, PRECTL, LPRECTL; +alias RECT* PRECT, NPRECT, LPRECT, PRECTL, LPRECTL; alias const(RECT)* LPCRECT, LPCRECTL; struct POINT { @@ -134,7 +134,7 @@ struct POINT { LONG y; } alias POINT POINTL; -alias POINT* PPOINT, LPPOINT, PPOINTL, LPPOINTL; +alias POINT* PPOINT, NPPOINT, LPPOINT, PPOINTL, LPPOINTL; struct SIZE { LONG cx; diff --git a/src/core/sys/windows/windows.d b/src/core/sys/windows/windows.d index df6808c6ea..c9ac5bc810 100644 --- a/src/core/sys/windows/windows.d +++ b/src/core/sys/windows/windows.d @@ -41,6 +41,9 @@ public import core.sys.windows.commdlg; public import core.sys.windows.winspool; public import core.sys.windows.ole2; +public import core.sys.windows.winreg; + + // Select correct version of winsock. Importing the incorrect // module will cause a static assert to prevent problems later on. version (Win32_Winsock1) { @@ -62,3 +65,8 @@ version (Win32_Winsock1) { #include #endif /* (_WIN32_WINNT >= 0x400) */ +/ + +// For compatibility with previous +// core.sys.windows.windows... +public import core.sys.windows.imagehlp; +public import core.sys.windows.dbghelp_types; diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index 65e2ecba8e..7ab3168702 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -328,6 +328,8 @@ const DWORD PFD_SWAP_LAYER_BUFFERS = 0x00000800, PFD_GENERIC_ACCELERATED = 0x00001000, PFD_SUPPORT_DIRECTDRAW = 0x00002000, + PFD_DIRECT3D_ACCELERATED = 0x00004000, + PFD_SUPPORT_COMPOSITION = 0x00008000, /* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ PFD_DEPTH_DONTCARE = 0x20000000, PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index 18117ae158..6736dfa60f 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -43,7 +43,7 @@ alias ulong* PDWORDLONG, PULONGLONG; alias void* PVOID64; // const versions -alias const(char)* LPCCH, PCSTR, LPCSTR; +alias const(char)* PCCH, LPCCH, PCSTR, LPCSTR; alias const(wchar)* LPCWCH, PCWCH, LPCWSTR, PCWSTR; version (Unicode) { @@ -53,8 +53,8 @@ version (Unicode) { } alias TCHAR TBYTE; -alias TCHAR* PTCH, PTBYTE, LPTCH, PTSTR, LPTSTR, LP, PTCHAR; -alias const(TCHAR)* LPCTSTR; +alias TCHAR* PTCH , PTBYTE, LPTCH , PTSTR , LPTSTR , LP, PTCHAR; +alias const(TCHAR)* PCTCH, LPCTCH, PCTSTR, LPCTSTR ; const char ANSI_NULL = '\0'; const wchar UNICODE_NULL = '\0'; @@ -697,6 +697,7 @@ enum : USHORT { SUBLANG_KINYARWANDA_RWANDA = 1, SUBLANG_KONKANI_INDIA = 1, SUBLANG_KOREAN = 1, + SUBLANG_KOREAN_JOHAB = 2, SUBLANG_KYRGYZ_KYRGYZSTAN = 1, SUBLANG_LAO_LAO_PDR = 1, SUBLANG_LATVIAN_LATVIA = 1, @@ -2077,6 +2078,10 @@ version (X86) { const CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; const CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; const CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; + const CONTEXT_ALL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | + CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | + CONTEXT_EXTENDED_REGISTERS; + const MAXIMUM_SUPPORTED_EXTENSION = 512; struct FLOATING_SAVE_AREA { @@ -2622,6 +2627,7 @@ struct LIST_ENTRY { LIST_ENTRY* Blink; } alias LIST_ENTRY* PLIST_ENTRY; +alias LIST_ENTRY _LIST_ENTRY; struct SINGLE_LIST_ENTRY { SINGLE_LIST_ENTRY* Next; @@ -2649,6 +2655,7 @@ struct RTL_CRITICAL_SECTION_DEBUG { DWORD[2] Spare; } alias RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; +alias RTL_CRITICAL_SECTION_DEBUG _RTL_CRITICAL_SECTION_DEBUG; struct RTL_CRITICAL_SECTION { PRTL_CRITICAL_SECTION_DEBUG DebugInfo; @@ -2656,9 +2663,11 @@ struct RTL_CRITICAL_SECTION { LONG RecursionCount; HANDLE OwningThread; HANDLE LockSemaphore; - DWORD Reserved; + DWORD SpinCount; + alias Reserved = SpinCount; } alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; +alias RTL_CRITICAL_SECTION _RTL_CRITICAL_SECTION; struct EVENTLOGRECORD { DWORD Length; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index 7d5a953d98..e997119bda 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -13,19 +13,21 @@ pragma(lib, "advapi32"); private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; enum : HKEY { // for some reason, DMD errors if I don't give all the values explicitly - HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, - HKEY_CURRENT_USER = cast(HKEY) 0x80000001, - HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, - HKEY_USERS = cast(HKEY) 0x80000003, - HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, - HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, - HKEY_DYN_DATA = cast(HKEY) 0x80000006 + HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, + HKEY_CURRENT_USER = cast(HKEY) 0x80000001, + HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, + HKEY_USERS = cast(HKEY) 0x80000003, + HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, + HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, + HKEY_DYN_DATA = cast(HKEY) 0x80000006, + HKEY_PERFORMANCE_TEXT = cast(HKEY) 0x80000050, + HKEY_PERFORMANCE_NLSTEXT = cast(HKEY) 0x80000060, } -enum : DWORD { - REG_OPTION_NON_VOLATILE, - REG_OPTION_VOLATILE -} +//enum : DWORD { +// REG_OPTION_NON_VOLATILE, +// REG_OPTION_VOLATILE +//} enum : DWORD { REG_CREATED_NEW_KEY = 1, diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index cbc5eb3da6..8df1f341a9 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -1916,6 +1916,7 @@ enum STN_CLICKED = 0; enum STN_DBLCLK = 1; enum STN_DISABLE = 3; enum STN_ENABLE = 2; +enum STM_MSGMAX = 372; enum DM_GETDEFID = WM_USER; enum DM_SETDEFID = WM_USER+1; @@ -1945,6 +1946,7 @@ enum DCX_INTERSECTUPDATE = 0x200; enum DCX_LOCKWINDOWUPDATE = 0x400; enum DCX_EXCLUDERGN = 64; enum DCX_INTERSECTRGN = 128; +enum DCX_EXCLUDEUPDATE = 256; enum DCX_VALIDATE = 0x200000; enum GMDI_GOINTOPOPUPS = 2; @@ -2672,7 +2674,7 @@ struct DLGTEMPLATE { short cy; } alias DLGTEMPLATE* LPDLGTEMPLATE, LPDLGTEMPLATEA, LPDLGTEMPLATEW; -alias const(DLGTEMPLATE)* LPCDLGTEMPLATE; +alias const(DLGTEMPLATE)* LPCDLGTEMPLATE, LPCDLGTEMPLATEA, LPCDLGTEMPLATEW; align: @@ -2706,7 +2708,7 @@ struct PAINTSTRUCT { BOOL fIncUpdate; BYTE[32] rgbReserved; } -alias PAINTSTRUCT* LPPAINTSTRUCT; +alias PAINTSTRUCT* PPAINTSTRUCT, NPPAINTSTRUCT, LPPAINTSTRUCT; struct MSG { HWND hwnd; @@ -2716,7 +2718,7 @@ struct MSG { DWORD time; POINT pt; } -alias MSG* LPMSG, PMSG; +alias MSG* NPMSG, LPMSG, PMSG; struct ICONINFO { BOOL fIcon; @@ -2746,7 +2748,7 @@ struct WNDCLASSA { LPCSTR lpszMenuName; LPCSTR lpszClassName; } -alias WNDCLASSA* LPWNDCLASSA, PWNDCLASSA; +alias WNDCLASSA* NPWNDCLASSA, LPWNDCLASSA, PWNDCLASSA; struct WNDCLASSW { UINT style; @@ -2760,7 +2762,7 @@ struct WNDCLASSW { LPCWSTR lpszMenuName; LPCWSTR lpszClassName; } -alias WNDCLASSW* LPWNDCLASSW, PWNDCLASSW; +alias WNDCLASSW* NPWNDCLASSW, LPWNDCLASSW, PWNDCLASSW; struct WNDCLASSEXA { UINT cbSize = WNDCLASSEXA.sizeof; @@ -2776,7 +2778,7 @@ struct WNDCLASSEXA { LPCSTR lpszClassName; HICON hIconSm; } -alias WNDCLASSEXA* LPWNDCLASSEXA, PWNDCLASSEXA; +alias WNDCLASSEXA* NPWNDCLASSEXA, LPWNDCLASSEXA, PWNDCLASSEXA; struct WNDCLASSEXW { UINT cbSize = WNDCLASSEXW.sizeof; From 0cd3b6c0c24f99c7a24e0b00f4bdf635f53758be Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 23:51:49 +0000 Subject: [PATCH 120/768] gentests: Better type mismatch reporting --- winhlp/testgen/gentests.d | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/winhlp/testgen/gentests.d b/winhlp/testgen/gentests.d index ce94708b2b..9eb1147d65 100644 --- a/winhlp/testgen/gentests.d +++ b/winhlp/testgen/gentests.d @@ -55,6 +55,13 @@ int main() } File o = File("wintest.d", "wb"); + o.writeln("import std.format : format;"); + + void typeCheck(string name, string typeA, string typeB) + { + o.writefln("\tstatic if(!is(%s == %s)) pragma(msg, \"%%s(%%d): Error: type of %s is:\\n%%s\\nbut should be:\\n%%s\\n\".format(__FILE__, __LINE__, %s.stringof, %s.stringof));", + typeA, typeB, name, typeA, typeB); + } auto modules = "druntime.json".readText.jsonParse!(Member[]); foreach (m; modules) @@ -71,7 +78,8 @@ int main() foreach (d; members) { scope(failure) stderr.writefln("Error processing member %s:", d.name); - auto lname = (prefix ~ d.name).join(".").replace(".", "_"); + auto qname = (prefix ~ d.name).join("."); + auto lname = qname.replace(".", "_"); o.writefln("\talias %s = %s.%s;", lname, (m.name ~ prefix).join("."), d.name); // check existence switch (d.kind) { @@ -81,12 +89,12 @@ int main() if (type.isValidDType()) { o.writefln("\talias typeof_%s = %s;", lname, type); - o.writefln("\tstatic assert(is(typeof(&%s) == typeof_%s));", lname, lname); + typeCheck(qname, "typeof(&%s)".format(lname), "typeof_%s".format(lname)); } if (d.originalType) { o.writefln("\talias typeof_orig_%s = %s;", lname, d.originalType.functionToFunctionPointerType()); - o.writefln("\tstatic assert(is(typeof(&%s) == typeof_orig_%s));", lname, lname); + typeCheck(qname, "typeof(&%s)".format(lname), "typeof_orig_%s".format(lname)); } break; } From 870849d5969760f13607ccc42933c61f018d3567 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 23:52:01 +0000 Subject: [PATCH 121/768] gentests: Add support for an exclusion file --- winhlp/testgen/gentests.d | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/winhlp/testgen/gentests.d b/winhlp/testgen/gentests.d index 9eb1147d65..a94cc4dd63 100644 --- a/winhlp/testgen/gentests.d +++ b/winhlp/testgen/gentests.d @@ -6,6 +6,7 @@ import std.format; import std.process; import std.stdio; +import ae.sys.persistence; import ae.utils.array; import ae.utils.json; import ae.utils.text; @@ -54,6 +55,8 @@ int main() string constraint; } + auto exclusions = PersistentStringSet("exclusions.txt"); + File o = File("wintest.d", "wb"); o.writeln("import std.format : format;"); @@ -80,6 +83,7 @@ int main() scope(failure) stderr.writefln("Error processing member %s:", d.name); auto qname = (prefix ~ d.name).join("."); auto lname = qname.replace(".", "_"); + if (qname in exclusions) o.writeln("/+"); o.writefln("\talias %s = %s.%s;", lname, (m.name ~ prefix).join("."), d.name); // check existence switch (d.kind) { @@ -126,6 +130,7 @@ int main() if (d.offset != uint.max) o.writefln("\tstatic assert(%s.offsetof == %d);", lname, d.offset); + if (qname in exclusions) o.writeln("+/"); handleMembers(prefix ~ d.name, d.members); } From 10399ea32f0c6da63e7025abc4c122839ac48276 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 3 Oct 2015 23:52:42 +0000 Subject: [PATCH 122/768] Fix types of function declarations --- src/core/sys/windows/commdlg.d | 2 +- src/core/sys/windows/mmsystem.d | 2 +- src/core/sys/windows/shellapi.d | 2 +- src/core/sys/windows/winbase.d | 29 ++++-- src/core/sys/windows/wincon.d | 4 +- src/core/sys/windows/windef.d | 72 +++++++------- src/core/sys/windows/winerror.d | 96 ++++++++++--------- src/core/sys/windows/wingdi.d | 74 ++++++++------- src/core/sys/windows/winnls.d | 2 +- src/core/sys/windows/winnt.d | 20 ++-- src/core/sys/windows/winreg.d | 102 ++++++++++---------- src/core/sys/windows/winuser.d | 88 ++++++++--------- winhlp/testgen/exclusions.txt | 162 ++++++++++++++++++++++++++++++++ 13 files changed, 422 insertions(+), 233 deletions(-) create mode 100644 winhlp/testgen/exclusions.txt diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index 294cb964a2..b94b55e705 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -625,7 +625,7 @@ alias PRINTDLGW* LPPRINTDLGW; //} // _WIN32_WINNT >= 0x500 -extern (Windows) { +extern (Windows) nothrow @nogc { BOOL ChooseColorA(LPCHOOSECOLORA); BOOL ChooseColorW(LPCHOOSECOLORW); BOOL ChooseFontA(LPCHOOSEFONTA); diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index 7060288723..fae93d4949 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -1814,7 +1814,7 @@ struct MCI_WAVE_SET_PARMS { } alias MCI_WAVE_SET_PARMS* PMCI_WAVE_SET_PARMS, LPMCI_WAVE_SET_PARMS; -extern (Windows): +extern (Windows) nothrow @nogc: LRESULT CloseDriver(HDRVR, LONG, LONG); HDRVR OpenDriver(LPCWSTR, LPCWSTR, LONG); LRESULT SendDriverMessage(HDRVR, UINT, LONG, LONG); diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index 45dee85b29..d01bd01daf 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -338,7 +338,7 @@ align(1) struct SHQUERYRBINFO { } alias SHQUERYRBINFO* LPSHQUERYRBINFO; -extern (Windows) { +extern (Windows) nothrow @nogc { LPWSTR* CommandLineToArgvW(LPCWSTR, int*); void DragAcceptFiles(HWND, BOOL); void DragFinish(HDROP); diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index 7c687490ee..596b1fe7ae 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -1179,6 +1179,7 @@ struct PROCESS_INFORMATION { } alias PROCESS_INFORMATION* PPROCESS_INFORMATION, LPPROCESS_INFORMATION; +/* struct CRITICAL_SECTION_DEBUG { WORD Type; WORD CreatorBackTraceIndex; @@ -1199,6 +1200,13 @@ struct CRITICAL_SECTION { DWORD SpinCount; } alias CRITICAL_SECTION* PCRITICAL_SECTION, LPCRITICAL_SECTION; +*/ + +alias CRITICAL_SECTION_DEBUG = RTL_CRITICAL_SECTION_DEBUG; +alias CRITICAL_SECTION_DEBUG* PCRITICAL_SECTION_DEBUG; + +alias CRITICAL_SECTION = RTL_CRITICAL_SECTION; +alias CRITICAL_SECTION* PCRITICAL_SECTION, LPCRITICAL_SECTION; struct SYSTEMTIME { WORD wYear; @@ -1596,7 +1604,7 @@ LPTSTR MAKEINTATOM()(ushort i) { return cast(LPTSTR) cast(size_t) i; } -extern (Windows) { +extern (Windows) nothrow @nogc { // The following Win16 functions are obselete in Win32. int _hread(HFILE, LPVOID, int); int _hwrite(HFILE, LPCSTR, int); @@ -1673,7 +1681,7 @@ extern (Windows) { BOOL CheckTokenMembership(HANDLE, PSID, PBOOL); BOOL ClearCommBreak(HANDLE); BOOL ClearCommError(HANDLE, PDWORD, LPCOMSTAT); - BOOL CloseHandle(HANDLE); + BOOL CloseHandle(HANDLE) @trusted; BOOL CommConfigDialogA(LPCSTR, HWND, LPCOMMCONFIG); BOOL CommConfigDialogW(LPCWSTR, HWND, LPCOMMCONFIG); LONG CompareFileTime(const(FILETIME)*, const(FILETIME)*); @@ -1716,8 +1724,8 @@ extern (Windows) { BOOL CreatePipe(PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD); BOOL CreateProcessA(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR); - HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR); + HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR) @trusted; + HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR) @trusted; HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); BOOL DebugActiveProcess(DWORD); void DebugBreak(); @@ -1823,7 +1831,7 @@ WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); DWORD GetFileType(HANDLE); DWORD GetFullPathNameA(LPCSTR, DWORD, LPSTR, LPSTR*); DWORD GetFullPathNameW(LPCWSTR, DWORD, LPWSTR, LPWSTR*); - DWORD GetLastError(); + DWORD GetLastError() @trusted; void GetLocalTime(LPSYSTEMTIME); DWORD GetLogicalDrives(); DWORD GetLogicalDriveStringsA(DWORD, LPSTR); @@ -1900,7 +1908,7 @@ WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); } BOOL InitAtomTable(DWORD); - VOID InitializeCriticalSection(LPCRITICAL_SECTION); + VOID InitializeCriticalSection(LPCRITICAL_SECTION) @trusted; /* ??? The next two are allegedly obsolete and "supported only for * backward compatibility with the 16-bit Windows API". Yet the * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ @@ -2385,7 +2393,7 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); BOOL SetVolumeMountPointA(LPCSTR, LPCSTR); BOOL SetVolumeMountPointW(LPCWSTR, LPCWSTR); BOOL TerminateJobObject(HANDLE, UINT); - BOOL UnmapViewOfFile(PVOID); + BOOL UnmapViewOfFile(PCVOID); BOOL UnregisterWait(HANDLE); BOOL UnregisterWaitEx(HANDLE, HANDLE); BOOL VerifyVersionInfoA(LPOSVERSIONINFOEXA, DWORD, DWORDLONG); @@ -2457,6 +2465,13 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); } } +// For compatibility with old core.sys.windows.windows: +version (LittleEndian) nothrow @nogc +{ + BOOL QueryPerformanceCounter(long* lpPerformanceCount) { return QueryPerformanceCounter(cast(PLARGE_INTEGER)lpPerformanceCount); } + BOOL QueryPerformanceFrequency(long* lpFrequency) { return QueryPerformanceFrequency(cast(PLARGE_INTEGER)lpFrequency); } +} + mixin DECLARE_AW!("STARTUPINFO"); version (Unicode) { //alias STARTUPINFOW STARTUPINFO; diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index fa832ddd50..26eeb0d2af 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -196,10 +196,10 @@ struct INPUT_RECORD { } alias INPUT_RECORD* PINPUT_RECORD; -extern (Windows): +extern (Windows) nothrow @nogc: BOOL AllocConsole(); -HANDLE CreateConsoleScreenBuffer(DWORD, DWORD, SECURITY_ATTRIBUTES*, DWORD, LPVOID); +HANDLE CreateConsoleScreenBuffer(DWORD, DWORD, const(SECURITY_ATTRIBUTES)*, DWORD, LPVOID); BOOL FillConsoleOutputAttribute(HANDLE, WORD, DWORD, COORD, PDWORD); BOOL FillConsoleOutputCharacterA(HANDLE, CHAR, DWORD, COORD, PDWORD); BOOL FillConsoleOutputCharacterW(HANDLE, WCHAR, DWORD, COORD, PDWORD); diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index a3459b0053..e139f8ce8d 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -14,51 +14,53 @@ private import core.sys.windows.w32api; const size_t MAX_PATH = 260; -ushort MAKEWORD(ubyte a, ubyte b) { - return cast(ushort) ((b << 8) | a); -} +pure nothrow @nogc { + ushort MAKEWORD(ubyte a, ubyte b) { + return cast(ushort) ((b << 8) | a); + } -ushort MAKEWORD(ushort a, ushort b) { - assert((a & 0xFF00) == 0); - assert((b & 0xFF00) == 0); - return MAKEWORD(cast(ubyte)a, cast(ubyte)b); -} + ushort MAKEWORD(ushort a, ushort b) { + assert((a & 0xFF00) == 0); + assert((b & 0xFF00) == 0); + return MAKEWORD(cast(ubyte)a, cast(ubyte)b); + } -uint MAKELONG(ushort a, ushort b) { - return cast(uint) ((b << 16) | a); -} + uint MAKELONG(ushort a, ushort b) { + return cast(uint) ((b << 16) | a); + } -uint MAKELONG(uint a, uint b) { - assert((a & 0xFFFF0000) == 0); - assert((b & 0xFFFF0000) == 0); - return MAKELONG(cast(ushort)a, cast(ushort)b); -} + uint MAKELONG(uint a, uint b) { + assert((a & 0xFFFF0000) == 0); + assert((b & 0xFFFF0000) == 0); + return MAKELONG(cast(ushort)a, cast(ushort)b); + } -ushort LOWORD(ulong l) { - return cast(ushort) l; -} + ushort LOWORD(ulong l) { + return cast(ushort) l; + } -ushort HIWORD(ulong l) { - return cast(ushort) (l >>> 16); -} + ushort HIWORD(ulong l) { + return cast(ushort) (l >>> 16); + } -ubyte LOBYTE(ushort w) { - return cast(ubyte) w; -} + ubyte LOBYTE(ushort w) { + return cast(ubyte) w; + } -ubyte HIBYTE(ushort w) { - return cast(ubyte) (w >>> 8); -} + ubyte HIBYTE(ushort w) { + return cast(ubyte) (w >>> 8); + } -template max(T) { - T max(T a, T b) { - return a > b ? a : b; + template max(T) { + T max(T a, T b) { + return a > b ? a : b; + } } -} -template min(T) { - T min(T a, T b) { - return a < b ? a : b; + template min(T) { + T min(T a, T b) { + return a < b ? a : b; + } } } diff --git a/src/core/sys/windows/winerror.d b/src/core/sys/windows/winerror.d index e5e0c371b4..5a01c42397 100644 --- a/src/core/sys/windows/winerror.d +++ b/src/core/sys/windows/winerror.d @@ -2244,66 +2244,68 @@ enum : uint { // C Macros -bool SUCCEEDED(HRESULT Status) { - return Status >= 0; -} +pure nothrow @nogc { + bool SUCCEEDED(HRESULT Status) { + return Status >= 0; + } -bool FAILED(HRESULT Status) { - return Status < 0; -} + bool FAILED(HRESULT Status) { + return Status < 0; + } -bool IS_ERROR(HRESULT Status) { - return (Status >>> 31) == SEVERITY_ERROR; -} + bool IS_ERROR(HRESULT Status) { + return (Status >>> 31) == SEVERITY_ERROR; + } -ushort HRESULT_CODE(HRESULT r) { - return cast(ushort) (r & 0xFFFF); -} + ushort HRESULT_CODE(HRESULT r) { + return cast(ushort) (r & 0xFFFF); + } -ushort SCODE_CODE(SCODE r) { - return cast(ushort) (r & 0xFFFF); -} + ushort SCODE_CODE(SCODE r) { + return cast(ushort) (r & 0xFFFF); + } -ushort HRESULT_FACILITY(HRESULT r) { - return cast(ushort) ((r>>16) & 0x1fff); -} + ushort HRESULT_FACILITY(HRESULT r) { + return cast(ushort) ((r>>16) & 0x1fff); + } -ushort SCODE_FACILITY(SCODE r) { - return cast(ushort) ((r>>16) & 0x1fff); -} + ushort SCODE_FACILITY(SCODE r) { + return cast(ushort) ((r>>16) & 0x1fff); + } -ushort HRESULT_SEVERITY(HRESULT r) { - return cast(ushort) ((r>>31) & 0x1); -} + ushort HRESULT_SEVERITY(HRESULT r) { + return cast(ushort) ((r>>31) & 0x1); + } -ushort SCODE_SEVERITY(SCODE r) { - return cast(ushort) ((r>>31) & 0x1); -} + ushort SCODE_SEVERITY(SCODE r) { + return cast(ushort) ((r>>31) & 0x1); + } -HRESULT MAKE_HRESULT(bool s, uint f, uint c) { - return (s << 31) | (f << 16) | c; -} + HRESULT MAKE_HRESULT(bool s, uint f, uint c) { + return (s << 31) | (f << 16) | c; + } -SCODE MAKE_SCODE(bool s, uint f, uint c) { - return (s << 31) | (f << 16) | c; -} + SCODE MAKE_SCODE(bool s, uint f, uint c) { + return (s << 31) | (f << 16) | c; + } -SCODE GetScode(HRESULT hr) { - return hr; -} + SCODE GetScode(HRESULT hr) { + return hr; + } -HRESULT ResultFromScode(SCODE c) { - return c; -} + HRESULT ResultFromScode(SCODE c) { + return c; + } -HRESULT HRESULT_FROM_NT(HRESULT x) { - return x | FACILITY_NT_BIT; -} + HRESULT HRESULT_FROM_NT(HRESULT x) { + return x | FACILITY_NT_BIT; + } -HRESULT HRESULT_FROM_WIN32(HRESULT x) { - return x ? (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000 : 0; -} + HRESULT HRESULT_FROM_WIN32(HRESULT x) { + return x ? (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000 : 0; + } -HRESULT PropagateResult(HRESULT hrPrevious, SCODE scBase) { - return scBase; + HRESULT PropagateResult(HRESULT hrPrevious, SCODE scBase) { + return scBase; + } } diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index 7ab3168702..ffb28ab96b 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -3961,55 +3961,57 @@ alias DWORD function (LPSTR, LPSTR, UINT, LPSTR, LPDEVMODEA) LPFNDEVCAPS; // FIXME: //POINTS MAKEPOINTS(DWORD dwValue) #define MAKEPOINTS(l) (*((POINTS*)&(l))) -DWORD MAKEROP4(DWORD fore, DWORD back) { - return ((back<<8) & 0xFF000000) | (fore); -} +nothrow @nogc { + DWORD MAKEROP4(DWORD fore, DWORD back) { + return ((back<<8) & 0xFF000000) | (fore); + } -COLORREF CMYK(BYTE c, BYTE m, BYTE y, BYTE k) { - return cast(COLORREF)(k | (y << 8) | (m << 16) | (c << 24)); -} + COLORREF CMYK(BYTE c, BYTE m, BYTE y, BYTE k) { + return cast(COLORREF)(k | (y << 8) | (m << 16) | (c << 24)); + } -BYTE GetCValue(COLORREF cmyk) { - return cast(BYTE)(cmyk >> 24); -} + BYTE GetCValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 24); + } -BYTE GetMValue(COLORREF cmyk) { - return cast(BYTE)(cmyk >> 16); -} + BYTE GetMValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 16); + } -BYTE GetYValue(COLORREF cmyk) { - return cast(BYTE)(cmyk >> 8); -} + BYTE GetYValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 8); + } -BYTE GetKValue(COLORREF cmyk) { - return cast(BYTE)cmyk; -} + BYTE GetKValue(COLORREF cmyk) { + return cast(BYTE)cmyk; + } -COLORREF RGB(BYTE r, BYTE g, BYTE b) { - return cast(COLORREF)(r | (g << 8) | (b << 16)); -} + COLORREF RGB(/*BYTE*/uint r, /*BYTE*/uint g, /*BYTE*/uint b) { + return cast(COLORREF)(r | (g << 8) | (b << 16)); + } -BYTE GetRValue(COLORREF c) { - return cast(BYTE)c; -} + BYTE GetRValue(COLORREF c) { + return cast(BYTE)c; + } -BYTE GetGValue(COLORREF c) { - return cast(BYTE)(c >> 8); -} + BYTE GetGValue(COLORREF c) { + return cast(BYTE)(c >> 8); + } -BYTE GetBValue(COLORREF c) { - return cast(BYTE)(c >> 16); -} + BYTE GetBValue(COLORREF c) { + return cast(BYTE)(c >> 16); + } -COLORREF PALETTEINDEX(WORD i) { - return 0x01000000 | cast(COLORREF) i; -} + COLORREF PALETTEINDEX(WORD i) { + return 0x01000000 | cast(COLORREF) i; + } -COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b) { - return 0x02000000|RGB(r, g, b); + COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b) { + return 0x02000000|RGB(r, g, b); + } } -extern(Windows) { +extern(Windows) nothrow @nogc { int AbortDoc(HDC); BOOL AbortPath(HDC); int AddFontResourceA(LPCSTR); diff --git a/src/core/sys/windows/winnls.d b/src/core/sys/windows/winnls.d index d4e426cf21..958f3d3a1c 100644 --- a/src/core/sys/windows/winnls.d +++ b/src/core/sys/windows/winnls.d @@ -621,7 +621,7 @@ struct NUMBERFMTW { } alias NUMBERFMTW* LPNUMBERFMTW; -extern (Windows) { +extern (Windows) nothrow @nogc { int CompareStringA(LCID, DWORD, LPCSTR, int, LPCSTR, int); int CompareStringW(LCID, DWORD, LPCWSTR, int, LPCWSTR, int); LCID ConvertDefaultLocale(LCID); diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index 6736dfa60f..e3cf4a12f3 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -851,16 +851,18 @@ enum : WORD { SORT_GEORGIAN_MODERN = 1 } -WORD MAKELANGID(USHORT p, USHORT s) { return cast(WORD)((s << 10) | p); } -WORD PRIMARYLANGID(WORD lgid) { return cast(WORD)(lgid & 0x3FF); } -WORD SUBLANGID(WORD lgid) { return cast(WORD)(lgid >>> 10); } +pure nothrow @nogc { + WORD MAKELANGID(/*USHORT*/uint p, /*USHORT*/ uint s) { return cast(WORD)((s << 10) | p); } + WORD PRIMARYLANGID(/*WORD*/uint lgid) { return cast(WORD)(lgid & 0x3FF); } + WORD SUBLANGID(/*WORD*/uint lgid) { return cast(WORD)(lgid >>> 10); } -DWORD MAKELCID(WORD lgid, WORD srtid) { return (cast(DWORD) srtid << 16) | cast(DWORD) lgid; } -// ??? -//DWORD MAKESORTLCID(WORD lgid, WORD srtid, WORD ver) { return (MAKELCID(lgid, srtid)) | ((cast(DWORD)ver) << 20); } -WORD LANGIDFROMLCID(LCID lcid) { return cast(WORD) lcid; } -WORD SORTIDFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 16) & 0x0F); } -WORD SORTVERSIONFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 20) & 0x0F); } + DWORD MAKELCID(/*WORD*/uint lgid, /*WORD*/uint srtid) { return (cast(DWORD) srtid << 16) | cast(DWORD) lgid; } + // ??? + //DWORD MAKESORTLCID(WORD lgid, WORD srtid, WORD ver) { return (MAKELCID(lgid, srtid)) | ((cast(DWORD)ver) << 20); } + WORD LANGIDFROMLCID(LCID lcid) { return cast(WORD) lcid; } + WORD SORTIDFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 16) & 0x0F); } + WORD SORTVERSIONFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 20) & 0x0F); } +} const WORD LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL; const WORD LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index e997119bda..fe47589470 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -93,59 +93,59 @@ static if (_WIN32_WINNT >= 0x600) { } } -extern (Windows) { - LONG RegCloseKey(HKEY); +extern (Windows) nothrow @nogc { + LONG RegCloseKey(in HKEY); LONG RegConnectRegistryA(LPCSTR, HKEY, PHKEY); LONG RegConnectRegistryW(LPCWSTR, HKEY, PHKEY); - LONG RegCreateKeyExA(HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, + LONG RegCreateKeyExA(in HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); - LONG RegCreateKeyExW(HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, + LONG RegCreateKeyExW(in HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); - LONG RegDeleteKeyA(HKEY, LPCSTR); - LONG RegDeleteKeyW(HKEY, LPCWSTR); - LONG RegDeleteValueA(HKEY, LPCSTR); - LONG RegDeleteValueW(HKEY, LPCWSTR); - LONG RegEnumKeyExA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, + LONG RegDeleteKeyA(in HKEY, LPCSTR); + LONG RegDeleteKeyW(in HKEY, LPCWSTR); + LONG RegDeleteValueA(in HKEY, LPCSTR); + LONG RegDeleteValueW(in HKEY, LPCWSTR); + LONG RegEnumKeyExA(in HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, PFILETIME); - LONG RegEnumKeyExW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, + LONG RegEnumKeyExW(in HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, PFILETIME); - LONG RegEnumValueA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, + LONG RegEnumValueA(in HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, PDWORD); - LONG RegEnumValueW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, + LONG RegEnumValueW(in HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, PDWORD); - LONG RegFlushKey(HKEY); - LONG RegLoadKeyA(HKEY, LPCSTR, LPCSTR); - LONG RegLoadKeyW(HKEY, LPCWSTR, LPCWSTR); - LONG RegOpenKeyExA(HKEY, LPCSTR, DWORD, REGSAM, PHKEY); - LONG RegOpenKeyExW(HKEY, LPCWSTR, DWORD, REGSAM, PHKEY); - LONG RegQueryInfoKeyA(HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, + LONG RegFlushKey(in HKEY); + LONG RegLoadKeyA(in HKEY, LPCSTR, LPCSTR); + LONG RegLoadKeyW(in HKEY, LPCWSTR, LPCWSTR); + LONG RegOpenKeyExA(in HKEY, LPCSTR, DWORD, REGSAM, PHKEY); + LONG RegOpenKeyExW(in HKEY, LPCWSTR, DWORD, REGSAM, PHKEY); + LONG RegQueryInfoKeyA(in HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); - LONG RegQueryInfoKeyW(HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, + LONG RegQueryInfoKeyW(in HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); - LONG RegQueryMultipleValuesA(HKEY, PVALENTA, DWORD, LPSTR, LPDWORD); - LONG RegQueryMultipleValuesW(HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD); - LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); - LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); - LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR); - LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR); - LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); - LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); - LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, const(BYTE)*, DWORD); - LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, const(BYTE)*, DWORD); - LONG RegUnLoadKeyA(HKEY, LPCSTR); - LONG RegUnLoadKeyW(HKEY, LPCWSTR); - LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL); + LONG RegQueryMultipleValuesA(in HKEY, PVALENTA, DWORD, LPSTR, LPDWORD); + LONG RegQueryMultipleValuesW(in HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD); + LONG RegQueryValueExA(in HKEY, LPCSTR, LPDWORD, LPDWORD, /*LPBYTE*/LPVOID, LPDWORD); + LONG RegQueryValueExW(in HKEY, LPCWSTR, LPDWORD, LPDWORD, /*LPBYTE*/LPVOID, LPDWORD); + LONG RegReplaceKeyA(in HKEY, LPCSTR, LPCSTR, LPCSTR); + LONG RegReplaceKeyW(in HKEY, LPCWSTR, LPCWSTR, LPCWSTR); + LONG RegSaveKeyA(in HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); + LONG RegSaveKeyW(in HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); + LONG RegSetKeySecurity(in HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + LONG RegSetValueExA(in HKEY, LPCSTR, DWORD, DWORD, const(BYTE)*, DWORD); + LONG RegSetValueExW(in HKEY, LPCWSTR, DWORD, DWORD, const(BYTE)*, DWORD); + LONG RegUnLoadKeyA(in HKEY, LPCSTR); + LONG RegUnLoadKeyW(in HKEY, LPCWSTR); + LONG RegNotifyChangeKeyValue(in HKEY, BOOL, DWORD, HANDLE, BOOL); BOOL AbortSystemShutdownA(LPCSTR); BOOL AbortSystemShutdownW(LPCWSTR); BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL); BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL); - LONG RegGetKeySecurity(HKEY, SECURITY_INFORMATION, + LONG RegGetKeySecurity(in HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PDWORD); - LONG RegRestoreKeyA(HKEY, LPCSTR, DWORD); - LONG RegRestoreKeyW(HKEY, LPCWSTR, DWORD); - LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, + LONG RegRestoreKeyA(in HKEY, LPCSTR, DWORD); + LONG RegRestoreKeyW(in HKEY, LPCWSTR, DWORD); + LONG RegSetKeySecurity(in HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); static if (_WIN32_WINNT >= 0x500) { @@ -155,28 +155,28 @@ extern (Windows) { } static if (_WIN32_WINNT >= 0x501) { - LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD); - LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD); + LONG RegSaveKeyExA(in HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD); + LONG RegSaveKeyExW(in HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD); } static if (_WIN32_WINNT >= 0x600) { - LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, + LONG RegGetValueA(in HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); - LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, + LONG RegGetValueW(in HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); } deprecated { - LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY); - LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY); - LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD); - LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD); - LONG RegOpenKeyA(HKEY, LPCSTR, PHKEY); - LONG RegOpenKeyW(HKEY, LPCWSTR, PHKEY); - LONG RegQueryValueA(HKEY, LPCSTR, LPSTR, PLONG); - LONG RegQueryValueW(HKEY, LPCWSTR, LPWSTR, PLONG); - LONG RegSetValueA(HKEY, LPCSTR, DWORD, LPCSTR, DWORD); - LONG RegSetValueW(HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); + LONG RegCreateKeyA(in HKEY, LPCSTR, PHKEY); + LONG RegCreateKeyW(in HKEY, LPCWSTR, PHKEY); + LONG RegEnumKeyA(in HKEY, DWORD, LPSTR, DWORD); + LONG RegEnumKeyW(in HKEY, DWORD, LPWSTR, DWORD); + LONG RegOpenKeyA(in HKEY, LPCSTR, PHKEY); + LONG RegOpenKeyW(in HKEY, LPCWSTR, PHKEY); + LONG RegQueryValueA(in HKEY, LPCSTR, LPSTR, PLONG); + LONG RegQueryValueW(in HKEY, LPCWSTR, LPWSTR, PLONG); + LONG RegSetValueA(in HKEY, LPCSTR, DWORD, LPCSTR, DWORD); + LONG RegSetValueW(in HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); } } diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 8df1f341a9..10754032b1 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -644,12 +644,14 @@ template MAKEINTRESOURCE_T(WORD i) { enum LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i); } -LPSTR MAKEINTRESOURCEA()(WORD i) { - return cast(LPSTR) i; -} +nothrow @nogc { + LPSTR MAKEINTRESOURCEA(/*WORD*/uint i) { + return cast(LPSTR) i; + } -LPWSTR MAKEINTRESOURCEW()(WORD i) { - return cast(LPWSTR) i; + LPWSTR MAKEINTRESOURCEW(/*WORD*/uint i) { + return cast(LPWSTR) i; + } } enum RT_CURSOR = MAKEINTRESOURCE_T!(1); @@ -3543,7 +3545,7 @@ POINTS POINTTOPOINTS()(in POINT p) { return MAKELONG(p.x, p.y); } -extern (Windows) { +extern (Windows) nothrow @nogc { HKL ActivateKeyboardLayout(HKL, UINT); BOOL AdjustWindowRect(LPRECT, DWORD, BOOL); BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD); @@ -3662,56 +3664,58 @@ extern (Windows) { } // extern (Windows) -HCURSOR CopyCursor()(HCURSOR c) { - return cast(HCURSOR)CopyIcon(cast(HICON)c); -} +nothrow @nogc { + HCURSOR CopyCursor(HCURSOR c) { + return cast(HCURSOR)CopyIcon(cast(HICON)c); + } -HWND CreateDialogA()(HINSTANCE h, LPCSTR n, HWND w, DLGPROC f) { - return CreateDialogParamA(h, n, w, f, 0); -} + HWND CreateDialogA(HINSTANCE h, LPCSTR n, HWND w, DLGPROC f) { + return CreateDialogParamA(h, n, w, f, 0); + } -HWND CreateDialogW()(HINSTANCE h, LPCWSTR n, HWND w, DLGPROC f) { - return CreateDialogParamW(h, n, w, f, 0); -} + HWND CreateDialogW(HINSTANCE h, LPCWSTR n, HWND w, DLGPROC f) { + return CreateDialogParamW(h, n, w, f, 0); + } -HWND CreateDialogIndirectA()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { - return CreateDialogIndirectParamA(h, t, w, f, 0); -} + HWND CreateDialogIndirectA(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { + return CreateDialogIndirectParamA(h, t, w, f, 0); + } -HWND CreateDialogIndirectW()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { - return CreateDialogIndirectParamW(h, t, w, f, 0); -} + HWND CreateDialogIndirectW(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { + return CreateDialogIndirectParamW(h, t, w, f, 0); + } -HWND CreateWindowA()(LPCSTR a, LPCSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { - return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k); -} + HWND CreateWindowA(LPCSTR a, LPCSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { + return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k); + } -HWND CreateWindowW()(LPCWSTR a, LPCWSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { - return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k); -} + HWND CreateWindowW(LPCWSTR a, LPCWSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { + return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k); + } -INT_PTR DialogBoxA()(HINSTANCE i, LPCSTR t, HWND p, DLGPROC f) { - return DialogBoxParamA(i, t, p, f, 0); -} + INT_PTR DialogBoxA(HINSTANCE i, LPCSTR t, HWND p, DLGPROC f) { + return DialogBoxParamA(i, t, p, f, 0); + } -INT_PTR DialogBoxW()(HINSTANCE i, LPCWSTR t, HWND p, DLGPROC f) { - return DialogBoxParamW(i, t, p, f, 0); -} + INT_PTR DialogBoxW(HINSTANCE i, LPCWSTR t, HWND p, DLGPROC f) { + return DialogBoxParamW(i, t, p, f, 0); + } -INT_PTR DialogBoxIndirectA()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { - return DialogBoxIndirectParamA(i, t, p, f, 0); -} + INT_PTR DialogBoxIndirectA(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { + return DialogBoxIndirectParamA(i, t, p, f, 0); + } -INT_PTR DialogBoxIndirectW()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { - return DialogBoxIndirectParamW(i, t, p, f, 0); -} + INT_PTR DialogBoxIndirectW(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { + return DialogBoxIndirectParamW(i, t, p, f, 0); + } -BOOL ExitWindows()(UINT r, DWORD c) { - return ExitWindowsEx(EWX_LOGOFF, 0); + BOOL ExitWindows(UINT r, DWORD c) { + return ExitWindowsEx(EWX_LOGOFF, 0); + } } alias GetWindow GetNextWindow; -extern (Windows): +extern (Windows) nothrow @nogc: LONG DispatchMessageA(const(MSG)*); LONG DispatchMessageW(const(MSG)*); int DlgDirListA(HWND, LPSTR, int, int, UINT); diff --git a/winhlp/testgen/exclusions.txt b/winhlp/testgen/exclusions.txt new file mode 100644 index 0000000000..e2a7c941ef --- /dev/null +++ b/winhlp/testgen/exclusions.txt @@ -0,0 +1,162 @@ +# wants long, not ulong +HIWORD +LOWORD + + +# wants `in T*`, not `const(T)*` (head constness, thus purely cosmetic) + +## `in char*`, not `const(char)*` (aka LPCSTR) +CreateFileA +DeleteFileA +FindFirstFileA +FindFirstFileW +MoveFileA +MoveFileW +GetFileAttributesA +GetFileAttributesW +SetFileAttributesA +SetFileAttributesW + +## `in HANDLE`, not `HANDLE` +SetEndOfFile + +## `in void*`, not `PCVOID` +WriteFile +WriteConsoleA +WriteConsoleW + +## FILETIME +SetFileTime +SystemTimeToFileTime +FileTimeToLocalFileTime +LocalFileTimeToFileTime +FileTimeToSystemTime +CompareFileTime +FileTimeToDosDateTime + +## WNDCLASS* +RegisterClassA +RegisterClassExA +RegisterClassW +RegisterClassExW + +## INPUT_RECORD +WriteConsoleInputA +WriteConsoleInputW + +## CHAR_INFO +WriteConsoleOutputA +WriteConsoleOutputW + +## WORD +WriteConsoleOutputAttribute + +## CONSOLE_CURSOR_INFO +SetConsoleCursorInfo + +## SMALL_RECT +ScrollConsoleScreenBufferA +ScrollConsoleScreenBufferW +SetConsoleWindowInfo + +## SECURITY_ATTRIBUTES +CreateConsoleScreenBuffer + +# wants `T*`, not `const(T)*` (even though the value will not be modified) + +## void* +RegSetValueExA +RegSetValueExW +SetBitmapBits +SetDIBits +SetDIBitsToDevice +StretchDIBits + +## ubyte* +SetMetaFileBits +SetMetaFileBitsEx + +## SYSTEMTIME +SetSystemTime +SetLocalTime + +## TIME_ZONE_INFORMATION +SetTimeZoneInformation + +## CONTEXT +SetThreadContext + +## HANDLE +WaitForMultipleObjects + +## PAINTSTRUCT +EndPaint + +## RECT +InvalidateRect +ValidateRect +RedrawWindow +SetBoundsRect +ScrollWindow +ScrollWindowEx +ScrollDC +ClipCursor +TrackPopupMenu +CreateRectRgnIndirect +FillRect + +## POINT +CreatePolyPolygonRgn + +## PALETTEENTRY +SetPaletteEntries + +## PIXELFORMATDESCRIPTOR +SetPixelFormat +ChoosePixelFormat + +## MSG +TranslateMessage +DispatchMessageA +DispatchMessageW + +## LOGFONTA +CreateFontIndirectA + +## LOGPALETTE +CreatePalette + +## LOGPEN +CreatePenIndirect + + +# wants `const(T)*`, not `T*` (even though the value is not const) + +## LPTCH +GetEnvironmentStringsW +FreeEnvironmentStringsW + + +# wants `void**`, not `va_list*` (aka void* ?) +FormatMessageA +FormatMessageW + + +# wants different sign on parameter, narrower return values, and extern(Windows) even though this is a macro +MAKELANGID +PRIMARYLANGID +SUBLANGID +MAKEINTRESOURCEA +MAKEINTRESOURCEW +RGB + + +# wants completely different type, overload wrapper added +## long* / PLARGE_INTEGER +QueryPerformanceCounter +QueryPerformanceFrequency + + +# wants extern(Windows) even though this is a macro +CreateWindowA +CreateWindowW From 6cdd71b27a030fa78e902adb3ab415e676aaff00 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 00:30:01 +0000 Subject: [PATCH 123/768] gentests: Use improved type check for aliases --- winhlp/testgen/gentests.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winhlp/testgen/gentests.d b/winhlp/testgen/gentests.d index a94cc4dd63..17b1064036 100644 --- a/winhlp/testgen/gentests.d +++ b/winhlp/testgen/gentests.d @@ -83,8 +83,8 @@ int main() scope(failure) stderr.writefln("Error processing member %s:", d.name); auto qname = (prefix ~ d.name).join("."); auto lname = qname.replace(".", "_"); - if (qname in exclusions) o.writeln("/+"); o.writefln("\talias %s = %s.%s;", lname, (m.name ~ prefix).join("."), d.name); // check existence + if (qname in exclusions) o.writeln("/+"); switch (d.kind) { case "function": @@ -116,7 +116,7 @@ int main() break; case "alias": o.writefln("\talias aliasof_%s = %s;", lname, d.deco.demangleType()); - o.writefln("\tstatic assert(is(%s == aliasof_%s));", lname, lname); + typeCheck(qname, lname, "aliasof_" ~ lname); break; case "struct": case "union": From ffd643c9c65ecfa3b24a2fe20530baec4f29a60a Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 00:30:25 +0000 Subject: [PATCH 124/768] Fix type and constant declarations --- src/core/sys/windows/commdlg.d | 10 ++-- src/core/sys/windows/wincon.d | 2 +- src/core/sys/windows/windef.d | 2 +- src/core/sys/windows/wingdi.d | 4 +- src/core/sys/windows/winuser.d | 4 +- winhlp/testgen/exclusions.txt | 99 +++++++++++++++++++++------------- 6 files changed, 74 insertions(+), 47 deletions(-) diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index b94b55e705..c476454ff5 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -294,7 +294,7 @@ alias CommDlg_OpenSave_GetFolderPath // Callbacks. extern(Windows) { -alias UINT_PTR function (HWND, UINT, WPARAM, LPARAM) +alias UINT_PTR function (HWND, UINT, WPARAM, LPARAM) nothrow LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC, LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; } @@ -423,7 +423,7 @@ struct OPENFILENAMEA { WORD nFileOffset; WORD nFileExtension; LPCSTR lpstrDefExt; - DWORD lCustData; + LPARAM lCustData; LPOFNHOOKPROC lpfnHook; LPCSTR lpTemplateName; @@ -453,7 +453,7 @@ struct OPENFILENAMEW { WORD nFileOffset; WORD nFileExtension; LPCWSTR lpstrDefExt; - DWORD lCustData; + LPARAM lCustData; LPOFNHOOKPROC lpfnHook; LPCWSTR lpTemplateName; @@ -530,7 +530,7 @@ struct PRINTDLGA { WORD nMaxPage; WORD nCopies; HINSTANCE hInstance; - DWORD lCustData; + LPARAM lCustData; LPPRINTHOOKPROC lpfnPrintHook; LPSETUPHOOKPROC lpfnSetupHook; LPCSTR lpPrintTemplateName; @@ -553,7 +553,7 @@ struct PRINTDLGW { WORD nMaxPage; WORD nCopies; HINSTANCE hInstance; - DWORD lCustData; + LPARAM lCustData; LPPRINTHOOKPROC lpfnPrintHook; LPSETUPHOOKPROC lpfnSetupHook; LPCWSTR lpPrintTemplateName; diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index 26eeb0d2af..da94a75715 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -133,7 +133,7 @@ struct CONSOLE_SCREEN_BUFFER_INFO { } alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO; -alias BOOL function(DWORD) PHANDLER_ROUTINE; +alias extern(Windows) BOOL function(DWORD) nothrow PHANDLER_ROUTINE; struct KEY_EVENT_RECORD { BOOL bKeyDown; diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index e139f8ce8d..f24914e526 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -119,7 +119,7 @@ static if (_WIN32_WINNT >= 0x500) { mixin DECLARE_HANDLE!("HWINEVENTHOOK"); } -alias extern (Windows) INT_PTR function() FARPROC, NEARPROC, PROC; +alias extern (Windows) INT_PTR function() nothrow FARPROC, NEARPROC, PROC; struct RECT { LONG left; diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index ffb28ab96b..4a183b988f 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -305,13 +305,13 @@ enum : BYTE { PFD_TYPE_COLORINDEX = 1 } -deprecated { +//deprecated { // PIXELFORMATDESCRIPTOR. const byte PFD_MAIN_PLANE = 0, PFD_OVERLAY_PLANE = 1, PFD_UNDERLAY_PLANE = -1; -} +//} // PIXELFORMATDESCRIPTOR.dwFlags const DWORD PFD_DOUBLEBUFFER = 0x00000001, diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 10754032b1..ef0e086170 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -256,7 +256,7 @@ enum DESKTOP_ENUMERATE = 64; enum DESKTOP_WRITEOBJECTS = 128; enum DESKTOP_SWITCHDESKTOP = 256; -enum CW_USEDEFAULT = 0x80000000; +enum int CW_USEDEFAULT = 0x80000000; enum { WS_OVERLAPPED = 0, @@ -2463,7 +2463,7 @@ enum { // Callbacks // --------- -extern (Windows) { +extern (Windows) nothrow { alias INT_PTR function(HWND, UINT, WPARAM, LPARAM) DLGPROC; alias void function(HWND, UINT, UINT_PTR, DWORD) TIMERPROC; alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC; diff --git a/winhlp/testgen/exclusions.txt b/winhlp/testgen/exclusions.txt index e2a7c941ef..4e89a9e121 100644 --- a/winhlp/testgen/exclusions.txt +++ b/winhlp/testgen/exclusions.txt @@ -1,11 +1,13 @@ -# wants long, not ulong +# Functions + +## wants long, not ulong HIWORD LOWORD -# wants `in T*`, not `const(T)*` (head constness, thus purely cosmetic) +## wants `in T*`, not `const(T)*` (head constness, thus purely cosmetic) -## `in char*`, not `const(char)*` (aka LPCSTR) +### `in char*`, not `const(char)*` (aka LPCSTR) CreateFileA DeleteFileA FindFirstFileA @@ -17,15 +19,15 @@ GetFileAttributesW SetFileAttributesA SetFileAttributesW -## `in HANDLE`, not `HANDLE` +### `in HANDLE`, not `HANDLE` SetEndOfFile -## `in void*`, not `PCVOID` +### `in void*`, not `PCVOID` WriteFile WriteConsoleA WriteConsoleW -## FILETIME +### FILETIME SetFileTime SystemTimeToFileTime FileTimeToLocalFileTime @@ -34,37 +36,37 @@ FileTimeToSystemTime CompareFileTime FileTimeToDosDateTime -## WNDCLASS* +### WNDCLASS* RegisterClassA RegisterClassExA RegisterClassW RegisterClassExW -## INPUT_RECORD +### INPUT_RECORD WriteConsoleInputA WriteConsoleInputW -## CHAR_INFO +### CHAR_INFO WriteConsoleOutputA WriteConsoleOutputW -## WORD +### WORD WriteConsoleOutputAttribute -## CONSOLE_CURSOR_INFO +### CONSOLE_CURSOR_INFO SetConsoleCursorInfo -## SMALL_RECT +### SMALL_RECT ScrollConsoleScreenBufferA ScrollConsoleScreenBufferW SetConsoleWindowInfo -## SECURITY_ATTRIBUTES +### SECURITY_ATTRIBUTES CreateConsoleScreenBuffer -# wants `T*`, not `const(T)*` (even though the value will not be modified) +## wants `T*`, not `const(T)*` (even though the value will not be modified) -## void* +### void* RegSetValueExA RegSetValueExW SetBitmapBits @@ -72,27 +74,27 @@ SetDIBits SetDIBitsToDevice StretchDIBits -## ubyte* +### ubyte* SetMetaFileBits SetMetaFileBitsEx -## SYSTEMTIME +### SYSTEMTIME SetSystemTime SetLocalTime -## TIME_ZONE_INFORMATION +### TIME_ZONE_INFORMATION SetTimeZoneInformation -## CONTEXT +### CONTEXT SetThreadContext -## HANDLE +### HANDLE WaitForMultipleObjects -## PAINTSTRUCT +### PAINTSTRUCT EndPaint -## RECT +### RECT InvalidateRect ValidateRect RedrawWindow @@ -105,44 +107,44 @@ TrackPopupMenu CreateRectRgnIndirect FillRect -## POINT +### POINT CreatePolyPolygonRgn -## PALETTEENTRY +### PALETTEENTRY SetPaletteEntries -## PIXELFORMATDESCRIPTOR +### PIXELFORMATDESCRIPTOR SetPixelFormat ChoosePixelFormat -## MSG +### MSG TranslateMessage DispatchMessageA DispatchMessageW -## LOGFONTA +### LOGFONTA CreateFontIndirectA -## LOGPALETTE +### LOGPALETTE CreatePalette -## LOGPEN +### LOGPEN CreatePenIndirect -# wants `const(T)*`, not `T*` (even though the value is not const) +## wants `const(T)*`, not `T*` (even though the value is not const) -## LPTCH +### LPTCH GetEnvironmentStringsW FreeEnvironmentStringsW -# wants `void**`, not `va_list*` (aka void* ?) +## wants `void**`, not `va_list*` (aka void* ?) FormatMessageA FormatMessageW -# wants different sign on parameter, narrower return values, and extern(Windows) even though this is a macro +## wants different sign on parameter, narrower return values, and extern(Windows) even though this is a macro MAKELANGID PRIMARYLANGID SUBLANGID @@ -151,12 +153,37 @@ MAKEINTRESOURCEW RGB -# wants completely different type, overload wrapper added -## long* / PLARGE_INTEGER +## wants completely different type, overload wrapper added +### long* / PLARGE_INTEGER QueryPerformanceCounter QueryPerformanceFrequency -# wants extern(Windows) even though this is a macro +## wants extern(Windows) even though this is a macro CreateWindowA CreateWindowW + + + +# Types + +# wants non-const, even though should be const +LPCDLGTEMPLATE +LPCDLGTEMPLATEA +LPCDLGTEMPLATEW + + +# wants wrong signedness +CREATE_UNICODE_ENVIRONMENT +LOCKFILE_FAIL_IMMEDIATELY +LOCKFILE_EXCLUSIVE_LOCK + + +# Values + +## Changes depending on target Windows version +WM_KEYLAST +WM_MOUSELAST +STOCK_LAST +SW_MAX +SM_CMETRICS From 30b1884e38c8dfa8953de5724770dd994d640152 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 00:45:59 +0000 Subject: [PATCH 125/768] gentests: Verify for both 32/64 models --- winhlp/testgen/gentests.d | 148 ++++++++++++++++++++------------------ 1 file changed, 77 insertions(+), 71 deletions(-) diff --git a/winhlp/testgen/gentests.d b/winhlp/testgen/gentests.d index 17b1064036..78f3e6487c 100644 --- a/winhlp/testgen/gentests.d +++ b/winhlp/testgen/gentests.d @@ -57,94 +57,100 @@ int main() auto exclusions = PersistentStringSet("exclusions.txt"); - File o = File("wintest.d", "wb"); - o.writeln("import std.format : format;"); - - void typeCheck(string name, string typeA, string typeB) + foreach (model; ["32", "64"]) { - o.writefln("\tstatic if(!is(%s == %s)) pragma(msg, \"%%s(%%d): Error: type of %s is:\\n%%s\\nbut should be:\\n%%s\\n\".format(__FILE__, __LINE__, %s.stringof, %s.stringof));", - typeA, typeB, name, typeA, typeB); - } + auto fn = "wintest" ~ model ~ ".d"; + File o = File(fn, "wb"); + o.writeln("import std.format : format;"); - auto modules = "druntime.json".readText.jsonParse!(Member[]); - foreach (m; modules) - { - if (m.name != "core.sys.windows.windows") - continue; - - o.writefln("struct test_%s", m.name.replace(".", "_")); - o.writeln("{"); - o.writefln("\tstatic import %s;", m.name); + void typeCheck(string name, string typeA, string typeB) + { + o.writefln("\tstatic if(!is(%s == %s)) pragma(msg, \"%%s(%%d): Error: type of %s is:\\n%%s\\nbut should be:\\n%%s\\n\".format(__FILE__, __LINE__, %s.stringof, %s.stringof));", + typeA, typeB, name, typeA, typeB); + } - void handleMembers(string[] prefix, Member[] members) + auto modules = ("druntime" ~ model ~ ".json").readText.jsonParse!(Member[]); + foreach (m; modules) { - foreach (d; members) + if (m.name != "core.sys.windows.windows") + continue; + + o.writefln("struct test_%s", m.name.replace(".", "_")); + o.writeln("{"); + o.writefln("\tstatic import %s;", m.name); + + void handleMembers(string[] prefix, Member[] members) { - scope(failure) stderr.writefln("Error processing member %s:", d.name); - auto qname = (prefix ~ d.name).join("."); - auto lname = qname.replace(".", "_"); - o.writefln("\talias %s = %s.%s;", lname, (m.name ~ prefix).join("."), d.name); // check existence - if (qname in exclusions) o.writeln("/+"); - switch (d.kind) + foreach (d; members) { - case "function": + scope(failure) stderr.writefln("Error processing member %s:", d.name); + auto qname = (prefix ~ d.name).join("."); + auto lname = qname.replace(".", "_"); + o.writefln("\talias %s = %s.%s;", lname, (m.name ~ prefix).join("."), d.name); // check existence + if (qname in exclusions) o.writeln("/+"); + switch (d.kind) { - auto type = d.deco.demangleFunctionType().functionToFunctionPointerType(); - if (type.isValidDType()) - { - o.writefln("\talias typeof_%s = %s;", lname, type); - typeCheck(qname, "typeof(&%s)".format(lname), "typeof_%s".format(lname)); - } - if (d.originalType) + case "function": { - o.writefln("\talias typeof_orig_%s = %s;", lname, d.originalType.functionToFunctionPointerType()); - typeCheck(qname, "typeof(&%s)".format(lname), "typeof_orig_%s".format(lname)); + auto type = d.deco.demangleFunctionType().functionToFunctionPointerType(); + if (type.isValidDType()) + { + o.writefln("\talias typeof_%s = %s;", lname, type); + typeCheck(qname, "typeof(&%s)".format(lname), "typeof_%s".format(lname)); + } + if (d.originalType) + { + o.writefln("\talias typeof_orig_%s = %s;", lname, d.originalType.functionToFunctionPointerType()); + typeCheck(qname, "typeof(&%s)".format(lname), "typeof_orig_%s".format(lname)); + } + break; } - break; + case "enum member": + o.writefln("\tstatic assert(%s == (%s));", lname, d.value); + break; + case "variable": + o.writefln("\talias typeof_%s = %s;", lname, d.deco.demangleType()); + o.writefln("\tstatic assert(is(typeof(%s) == typeof_%s));", lname, lname); + if (d.originalType) + { + o.writefln("\talias typeof_orig_%s = %s;", lname, d.originalType); + o.writefln("\tstatic assert(is(typeof(%s) == typeof_orig_%s));", lname, lname); + } + break; + case "alias": + o.writefln("\talias aliasof_%s = %s;", lname, d.deco.demangleType()); + typeCheck(qname, lname, "aliasof_" ~ lname); + break; + case "struct": + case "union": + case "enum": + // will descend to d.members below + break; + default: + stderr.writeln("Unknown kind: ", d.kind); + break; } - case "enum member": - o.writefln("\tstatic assert(%s == (%s));", lname, d.value); - break; - case "variable": - o.writefln("\talias typeof_%s = %s;", lname, d.deco.demangleType()); - o.writefln("\tstatic assert(is(typeof(%s) == typeof_%s));", lname, lname); - if (d.originalType) - { - o.writefln("\talias typeof_orig_%s = %s;", lname, d.originalType); - o.writefln("\tstatic assert(is(typeof(%s) == typeof_orig_%s));", lname, lname); - } - break; - case "alias": - o.writefln("\talias aliasof_%s = %s;", lname, d.deco.demangleType()); - typeCheck(qname, lname, "aliasof_" ~ lname); - break; - case "struct": - case "union": - case "enum": - // will descend to d.members below - break; - default: - stderr.writeln("Unknown kind: ", d.kind); - break; - } - if (d.offset != uint.max) - o.writefln("\tstatic assert(%s.offsetof == %d);", lname, d.offset); - if (qname in exclusions) o.writeln("+/"); + if (d.offset != uint.max) + o.writefln("\tstatic assert(%s.offsetof == %d);", lname, d.offset); + if (qname in exclusions) o.writeln("+/"); - handleMembers(prefix ~ d.name, d.members); + handleMembers(prefix ~ d.name, d.members); + } } - } - handleMembers([], m.members); + handleMembers([], m.members); - o.writeln("}"); - o.writeln(""); - } + o.writeln("}"); + o.writeln(""); + } - o.close(); + o.close(); - return spawnProcess(["dmd", "-m32", "-I../../src", "-o-", "wintest.d"]).wait(); + if (spawnProcess(["dmd", "-m" ~ model, "-I../../src", "-o-", fn]).wait() != 0) + return 1; + } + return 0; } /// nothrow @nogc extern (Windows) BOOL(LPCSTR lpPathName) From 4c23fcf4529c50767b07c1c87488f4ca58aff145 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 01:12:53 +0000 Subject: [PATCH 126/768] 64-bit fixes --- src/core/sys/windows/winbase.d | 40 +++++++++++++++++----------------- src/core/sys/windows/winnt.d | 2 +- winhlp/testgen/exclusions.txt | 21 ++++++++++++++++-- 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index 596b1fe7ae..b2e1bcedd5 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -2072,23 +2072,23 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); * MSDN documents these erroneously as Win2000+; thus it is uncertain what * version compatibility they really have. */ - HGLOBAL GlobalAlloc(UINT, DWORD); + HGLOBAL GlobalAlloc(UINT, SIZE_T); HGLOBAL GlobalDiscard(HGLOBAL); HGLOBAL GlobalFree(HGLOBAL); HGLOBAL GlobalHandle(PCVOID); LPVOID GlobalLock(HGLOBAL); VOID GlobalMemoryStatus(LPMEMORYSTATUS); - HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); - DWORD GlobalSize(HGLOBAL); + HGLOBAL GlobalReAlloc(HGLOBAL, SIZE_T, UINT); + SIZE_T GlobalSize(HGLOBAL); BOOL GlobalUnlock(HGLOBAL); - PVOID HeapAlloc(HANDLE, DWORD, DWORD); + PVOID HeapAlloc(HANDLE, DWORD, SIZE_T); SIZE_T HeapCompact(HANDLE, DWORD); - HANDLE HeapCreate(DWORD, DWORD, DWORD); + HANDLE HeapCreate(DWORD, SIZE_T, SIZE_T); BOOL HeapDestroy(HANDLE); BOOL HeapFree(HANDLE, DWORD, PVOID); BOOL HeapLock(HANDLE); - PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); - DWORD HeapSize(HANDLE, DWORD, PCVOID); + PVOID HeapReAlloc(HANDLE, DWORD, PVOID, SIZE_T); + SIZE_T HeapSize(HANDLE, DWORD, PCVOID); BOOL HeapUnlock(HANDLE); BOOL HeapValidate(HANDLE, DWORD, PCVOID); BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); @@ -2100,16 +2100,16 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); UINT LocalSize(HLOCAL); BOOL LocalUnlock(HLOCAL); - PVOID VirtualAlloc(PVOID, DWORD, DWORD, DWORD); - PVOID VirtualAllocEx(HANDLE, PVOID, DWORD, DWORD, DWORD); - BOOL VirtualFree(PVOID, DWORD, DWORD); - BOOL VirtualFreeEx(HANDLE, PVOID, DWORD, DWORD); - BOOL VirtualLock(PVOID, DWORD); - BOOL VirtualProtect(PVOID, DWORD, DWORD, PDWORD); - BOOL VirtualProtectEx(HANDLE, PVOID, DWORD, DWORD, PDWORD); - DWORD VirtualQuery(LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); - DWORD VirtualQueryEx(HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); - BOOL VirtualUnlock(PVOID, DWORD); + PVOID VirtualAlloc(PVOID, SIZE_T, DWORD, DWORD); + PVOID VirtualAllocEx(HANDLE, PVOID, SIZE_T, DWORD, DWORD); + BOOL VirtualFree(PVOID, SIZE_T, DWORD); + BOOL VirtualFreeEx(HANDLE, PVOID, SIZE_T, DWORD); + BOOL VirtualLock(PVOID, SIZE_T); + BOOL VirtualProtect(PVOID, SIZE_T, DWORD, PDWORD); + BOOL VirtualProtectEx(HANDLE, PVOID, SIZE_T, DWORD, PDWORD); + SIZE_T VirtualQuery(LPCVOID, PMEMORY_BASIC_INFORMATION, SIZE_T); + SIZE_T VirtualQueryEx(HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, SIZE_T); + BOOL VirtualUnlock(PVOID, SIZE_T); // not in MinGW 4.0 - ??? static if (_WIN32_WINNT >= 0x600) { BOOL CancelIoEx(HANDLE, LPOVERLAPPED); @@ -2351,7 +2351,7 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); BOOL FindNextVolumeMountPointW(HANDLE, LPWSTR, DWORD); BOOL FindVolumeClose(HANDLE); BOOL FindVolumeMountPointClose(HANDLE); - BOOL FlushViewOfFile(PCVOID, DWORD); + BOOL FlushViewOfFile(PCVOID, SIZE_T); BOOL FreeUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); BOOL GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD); BOOL GetComputerNameExW(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD); @@ -2373,8 +2373,8 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); BOOL IsSystemResumeAutomatic(); BOOL MapUserPhysicalPages(PVOID, ULONG_PTR, PULONG_PTR); BOOL MapUserPhysicalPagesScatter(PVOID*, ULONG_PTR, PULONG_PTR); - PVOID MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, DWORD); - PVOID MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, PVOID); + PVOID MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, SIZE_T); + PVOID MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, SIZE_T, PVOID); HANDLE OpenFileMappingA(DWORD, BOOL, LPCSTR); HANDLE OpenFileMappingW(DWORD, BOOL, LPCWSTR); BOOL ProcessIdToSessionId(DWORD, DWORD*); diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index e3cf4a12f3..de495fd781 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -2665,7 +2665,7 @@ struct RTL_CRITICAL_SECTION { LONG RecursionCount; HANDLE OwningThread; HANDLE LockSemaphore; - DWORD SpinCount; + ULONG_PTR SpinCount; alias Reserved = SpinCount; } alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; diff --git a/winhlp/testgen/exclusions.txt b/winhlp/testgen/exclusions.txt index 4e89a9e121..64de1d2bcf 100644 --- a/winhlp/testgen/exclusions.txt +++ b/winhlp/testgen/exclusions.txt @@ -164,21 +164,38 @@ CreateWindowA CreateWindowW +## wants uint, not size_t (SIZE_T/INT_PTR) +GlobalCompact +LocalAlloc +LocalReAlloc +LocalShrink +LocalCompact +DialogBoxParamA +DialogBoxIndirectParamA +EndDialog + + # Types -# wants non-const, even though should be const +## wants non-const, even though should be const LPCDLGTEMPLATE LPCDLGTEMPLATEA LPCDLGTEMPLATEW -# wants wrong signedness +## wants wrong signedness CREATE_UNICODE_ENVIRONMENT LOCKFILE_FAIL_IMMEDIATELY LOCKFILE_EXCLUSIVE_LOCK +## wants uint, not size_t +LPOFNHOOKPROC +OPENFILENAMEA.lpfnHook +OPENFILENAMEW.lpfnHook + + # Values ## Changes depending on target Windows version From b0348bcc88fb7c7593a59ab1917c8280c2797c93 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 01:20:53 +0000 Subject: [PATCH 127/768] Fix name conflicts encountered when building Druntime --- src/core/sys/windows/dbghelp_types.d | 15 ++------------- src/core/sys/windows/imagehlp.d | 12 ++++++++++-- src/core/sys/windows/mmsystem.d | 7 ++++--- src/core/sys/windows/winbase.d | 3 ++- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/core/sys/windows/dbghelp_types.d b/src/core/sys/windows/dbghelp_types.d index 22df9d78d0..a0c41050b4 100644 --- a/src/core/sys/windows/dbghelp_types.d +++ b/src/core/sys/windows/dbghelp_types.d @@ -42,13 +42,7 @@ enum : ULONG CBA_DEBUG_INFO = 0x10000000, } -struct GUID -{ - uint Data1; - ushort Data2; - ushort Data3; - ubyte[8] Data4; -} +public import core.sys.windows.basetyps : GUID; struct ADDRESS64 { @@ -88,12 +82,7 @@ struct STACKFRAME64 KDHELP64 KdHelp; } -enum : DWORD -{ - IMAGE_FILE_MACHINE_I386 = 0x014c, - IMGAE_FILE_MACHINE_IA64 = 0x0200, - IMAGE_FILE_MACHINE_AMD64 = 0x8664, -} +public import core.sys.windows.winnt : IMAGE_FILE_MACHINE_I386, IMAGE_FILE_MACHINE_IA64, IMAGE_FILE_MACHINE_AMD64; struct IMAGEHLP_LINE64 { diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index 3857923628..2f3a2bedcd 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -62,8 +62,13 @@ const SYMOPT_CASE_INSENSITIVE = 1; const SYMOPT_UNDNAME = 2; const SYMOPT_DEFERRED_LOADS = 4; const SYMOPT_NO_CPP = 8; -const SYMOPT_LOAD_LINES = 16; -const SYMOPT_OMAP_FIND_NEAREST = 32; +//const SYMOPT_LOAD_LINES = 16; +//const SYMOPT_OMAP_FIND_NEAREST = 32; +public import core.sys.windows.dbghelp_types : + SYMOPT_DEFERRED_LOAD, + SYMOPT_FAIL_CRITICAL_ERRORS, + SYMOPT_LOAD_LINES, + SYMOPT_DEBUG; const UNDNAME_COMPLETE = 0; const UNDNAME_NO_LEADING_UNDERSCORES = 1; @@ -195,12 +200,15 @@ struct STACKFRAME { } alias STACKFRAME* LPSTACKFRAME; +/* struct API_VERSION { USHORT MajorVersion; USHORT MinorVersion; USHORT Revision; USHORT Reserved; } +*/ +public import core.sys.windows.dbghelp_types : API_VERSION; alias API_VERSION* LPAPI_VERSION; enum SYM_TYPE { diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index fae93d4949..bc11905a4a 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -1010,9 +1010,10 @@ LONG DIBINDEX(WORD n) { const CAPS1=94; const C1_TRANSPARENT=1; -const SEEK_SET=0; -const SEEK_CUR=1; -const SEEK_END=2; +//const SEEK_SET=0; +//const SEEK_CUR=1; +//const SEEK_END=2; +public import core.stdc.stdio : SEEK_SET, SEEK_CUR, SEEK_END; alias DWORD MCIERROR; alias UINT MCIDEVICEID; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index b2e1bcedd5..aa7162aeac 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -33,7 +33,8 @@ import core.sys.windows.windef, core.sys.windows.winver; private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winnt; // FIXME: -alias void va_list; +//alias void va_list; +import core.stdc.stdarg : va_list; // COMMPROP structure, used by GetCommProperties() From 4c8018aef9fa848e62fa78a6f47b4f4eec5c9e0c Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 01:21:09 +0000 Subject: [PATCH 128/768] Add missing winsock2 definitions needed for mswsock and nspapi --- src/core/sys/windows/winsock2.d | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/sys/windows/winsock2.d b/src/core/sys/windows/winsock2.d index ec5d4506f6..1ee85857f9 100644 --- a/src/core/sys/windows/winsock2.d +++ b/src/core/sys/windows/winsock2.d @@ -658,12 +658,15 @@ enum int INET_ADDRSTRLEN = 16; enum int INET6_ADDRSTRLEN = 46; + + struct sockaddr { short sa_family; ubyte[14] sa_data; } - +alias sockaddr SOCKADDR; +alias SOCKADDR* PSOCKADDR, LPSOCKADDR; struct sockaddr_in { @@ -672,6 +675,8 @@ struct sockaddr_in in_addr sin_addr; ubyte[8] sin_zero; } +alias sockaddr_in SOCKADDR_IN; +alias SOCKADDR_IN* PSOCKADDR_IN, LPSOCKADDR_IN; struct sockaddr_in6 From 4e5fcd21659db5e4accf73be8b8cd6171db87cf3 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 01:30:49 +0000 Subject: [PATCH 129/768] Update Makefiles --- mak/COPY | 157 +++++++++++++++++ mak/MANIFEST | 157 +++++++++++++++++ mak/SRCS | 157 +++++++++++++++++ win32.mak | 471 +++++++++++++++++++++++++++++++++++++++++++++++++++ win64.mak | 471 +++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 1413 insertions(+) diff --git a/mak/COPY b/mak/COPY index ca5f8cfafd..ac321c0fc8 100644 --- a/mak/COPY +++ b/mak/COPY @@ -150,13 +150,170 @@ COPY=\ $(IMPDIR)\core\sys\solaris\sys\types.d \ $(IMPDIR)\core\sys\solaris\sys\priocntl.d \ \ + $(IMPDIR)\core\sys\windows\accctrl.d \ + $(IMPDIR)\core\sys\windows\aclapi.d \ + $(IMPDIR)\core\sys\windows\aclui.d \ + $(IMPDIR)\core\sys\windows\basetsd.d \ + $(IMPDIR)\core\sys\windows\basetyps.d \ + $(IMPDIR)\core\sys\windows\cderr.d \ + $(IMPDIR)\core\sys\windows\cguid.d \ $(IMPDIR)\core\sys\windows\com.d \ + $(IMPDIR)\core\sys\windows\comcat.d \ + $(IMPDIR)\core\sys\windows\commctrl.d \ + $(IMPDIR)\core\sys\windows\commdlg.d \ + $(IMPDIR)\core\sys\windows\core.d \ + $(IMPDIR)\core\sys\windows\cpl.d \ + $(IMPDIR)\core\sys\windows\cplext.d \ + $(IMPDIR)\core\sys\windows\custcntl.d \ $(IMPDIR)\core\sys\windows\dbghelp.d \ + $(IMPDIR)\core\sys\windows\dbghelp_types.d \ + $(IMPDIR)\core\sys\windows\dbt.d \ + $(IMPDIR)\core\sys\windows\dde.d \ + $(IMPDIR)\core\sys\windows\ddeml.d \ + $(IMPDIR)\core\sys\windows\dhcpcsdk.d \ + $(IMPDIR)\core\sys\windows\dlgs.d \ $(IMPDIR)\core\sys\windows\dll.d \ + $(IMPDIR)\core\sys\windows\docobj.d \ + $(IMPDIR)\core\sys\windows\errorrep.d \ + $(IMPDIR)\core\sys\windows\exdisp.d \ + $(IMPDIR)\core\sys\windows\exdispid.d \ + $(IMPDIR)\core\sys\windows\httpext.d \ + $(IMPDIR)\core\sys\windows\idispids.d \ + $(IMPDIR)\core\sys\windows\imagehlp.d \ + $(IMPDIR)\core\sys\windows\imm.d \ + $(IMPDIR)\core\sys\windows\intshcut.d \ + $(IMPDIR)\core\sys\windows\ipexport.d \ + $(IMPDIR)\core\sys\windows\iphlpapi.d \ + $(IMPDIR)\core\sys\windows\ipifcons.d \ + $(IMPDIR)\core\sys\windows\iprtrmib.d \ + $(IMPDIR)\core\sys\windows\iptypes.d \ + $(IMPDIR)\core\sys\windows\isguids.d \ + $(IMPDIR)\core\sys\windows\lm.d \ + $(IMPDIR)\core\sys\windows\lmaccess.d \ + $(IMPDIR)\core\sys\windows\lmalert.d \ + $(IMPDIR)\core\sys\windows\lmapibuf.d \ + $(IMPDIR)\core\sys\windows\lmat.d \ + $(IMPDIR)\core\sys\windows\lmaudit.d \ + $(IMPDIR)\core\sys\windows\lmbrowsr.d \ + $(IMPDIR)\core\sys\windows\lmchdev.d \ + $(IMPDIR)\core\sys\windows\lmconfig.d \ + $(IMPDIR)\core\sys\windows\lmcons.d \ + $(IMPDIR)\core\sys\windows\lmerr.d \ + $(IMPDIR)\core\sys\windows\lmerrlog.d \ + $(IMPDIR)\core\sys\windows\lmmsg.d \ + $(IMPDIR)\core\sys\windows\lmremutl.d \ + $(IMPDIR)\core\sys\windows\lmrepl.d \ + $(IMPDIR)\core\sys\windows\lmserver.d \ + $(IMPDIR)\core\sys\windows\lmshare.d \ + $(IMPDIR)\core\sys\windows\lmsname.d \ + $(IMPDIR)\core\sys\windows\lmstats.d \ + $(IMPDIR)\core\sys\windows\lmsvc.d \ + $(IMPDIR)\core\sys\windows\lmuse.d \ + $(IMPDIR)\core\sys\windows\lmuseflg.d \ + $(IMPDIR)\core\sys\windows\lmwksta.d \ + $(IMPDIR)\core\sys\windows\lzexpand.d \ + $(IMPDIR)\core\sys\windows\mapi.d \ + $(IMPDIR)\core\sys\windows\mciavi.d \ + $(IMPDIR)\core\sys\windows\mcx.d \ + $(IMPDIR)\core\sys\windows\mgmtapi.d \ + $(IMPDIR)\core\sys\windows\mmsystem.d \ + $(IMPDIR)\core\sys\windows\msacm.d \ + $(IMPDIR)\core\sys\windows\mshtml.d \ + $(IMPDIR)\core\sys\windows\mswsock.d \ + $(IMPDIR)\core\sys\windows\nb30.d \ + $(IMPDIR)\core\sys\windows\nddeapi.d \ + $(IMPDIR)\core\sys\windows\nspapi.d \ + $(IMPDIR)\core\sys\windows\ntdef.d \ + $(IMPDIR)\core\sys\windows\ntdll.d \ + $(IMPDIR)\core\sys\windows\ntldap.d \ + $(IMPDIR)\core\sys\windows\ntsecapi.d \ + $(IMPDIR)\core\sys\windows\ntsecpkg.d \ + $(IMPDIR)\core\sys\windows\oaidl.d \ + $(IMPDIR)\core\sys\windows\objbase.d \ + $(IMPDIR)\core\sys\windows\objfwd.d \ + $(IMPDIR)\core\sys\windows\objidl.d \ + $(IMPDIR)\core\sys\windows\objsafe.d \ + $(IMPDIR)\core\sys\windows\ocidl.d \ + $(IMPDIR)\core\sys\windows\odbcinst.d \ + $(IMPDIR)\core\sys\windows\ole.d \ + $(IMPDIR)\core\sys\windows\ole2.d \ + $(IMPDIR)\core\sys\windows\ole2ver.d \ + $(IMPDIR)\core\sys\windows\oleacc.d \ + $(IMPDIR)\core\sys\windows\oleauto.d \ + $(IMPDIR)\core\sys\windows\olectl.d \ + $(IMPDIR)\core\sys\windows\olectlid.d \ + $(IMPDIR)\core\sys\windows\oledlg.d \ + $(IMPDIR)\core\sys\windows\oleidl.d \ + $(IMPDIR)\core\sys\windows\pbt.d \ + $(IMPDIR)\core\sys\windows\powrprof.d \ + $(IMPDIR)\core\sys\windows\prsht.d \ + $(IMPDIR)\core\sys\windows\psapi.d \ + $(IMPDIR)\core\sys\windows\rapi.d \ + $(IMPDIR)\core\sys\windows\ras.d \ + $(IMPDIR)\core\sys\windows\rasdlg.d \ + $(IMPDIR)\core\sys\windows\raserror.d \ + $(IMPDIR)\core\sys\windows\rassapi.d \ + $(IMPDIR)\core\sys\windows\reason.d \ + $(IMPDIR)\core\sys\windows\regstr.d \ + $(IMPDIR)\core\sys\windows\richedit.d \ + $(IMPDIR)\core\sys\windows\richole.d \ + $(IMPDIR)\core\sys\windows\rpc.d \ + $(IMPDIR)\core\sys\windows\rpcdce.d \ + $(IMPDIR)\core\sys\windows\rpcdce2.d \ + $(IMPDIR)\core\sys\windows\rpcdcep.d \ + $(IMPDIR)\core\sys\windows\rpcndr.d \ + $(IMPDIR)\core\sys\windows\rpcnsi.d \ + $(IMPDIR)\core\sys\windows\rpcnsip.d \ + $(IMPDIR)\core\sys\windows\rpcnterr.d \ + $(IMPDIR)\core\sys\windows\schannel.d \ + $(IMPDIR)\core\sys\windows\secext.d \ + $(IMPDIR)\core\sys\windows\security.d \ + $(IMPDIR)\core\sys\windows\servprov.d \ + $(IMPDIR)\core\sys\windows\setupapi.d \ + $(IMPDIR)\core\sys\windows\shellapi.d \ + $(IMPDIR)\core\sys\windows\shldisp.d \ + $(IMPDIR)\core\sys\windows\shlguid.d \ + $(IMPDIR)\core\sys\windows\shlobj.d \ + $(IMPDIR)\core\sys\windows\shlwapi.d \ + $(IMPDIR)\core\sys\windows\snmp.d \ + $(IMPDIR)\core\sys\windows\sql.d \ + $(IMPDIR)\core\sys\windows\sqlext.d \ + $(IMPDIR)\core\sys\windows\sqltypes.d \ + $(IMPDIR)\core\sys\windows\sqlucode.d \ + $(IMPDIR)\core\sys\windows\sspi.d \ $(IMPDIR)\core\sys\windows\stacktrace.d \ $(IMPDIR)\core\sys\windows\stat.d \ + $(IMPDIR)\core\sys\windows\subauth.d \ $(IMPDIR)\core\sys\windows\threadaux.d \ + $(IMPDIR)\core\sys\windows\tlhelp32.d \ + $(IMPDIR)\core\sys\windows\tmschema.d \ + $(IMPDIR)\core\sys\windows\unknwn.d \ + $(IMPDIR)\core\sys\windows\uuid.d \ + $(IMPDIR)\core\sys\windows\vfw.d \ + $(IMPDIR)\core\sys\windows\w32api.d \ + $(IMPDIR)\core\sys\windows\winbase.d \ + $(IMPDIR)\core\sys\windows\winber.d \ + $(IMPDIR)\core\sys\windows\wincon.d \ + $(IMPDIR)\core\sys\windows\wincrypt.d \ + $(IMPDIR)\core\sys\windows\windef.d \ $(IMPDIR)\core\sys\windows\windows.d \ + $(IMPDIR)\core\sys\windows\winerror.d \ + $(IMPDIR)\core\sys\windows\wingdi.d \ + $(IMPDIR)\core\sys\windows\winhttp.d \ + $(IMPDIR)\core\sys\windows\wininet.d \ + $(IMPDIR)\core\sys\windows\winioctl.d \ + $(IMPDIR)\core\sys\windows\winldap.d \ + $(IMPDIR)\core\sys\windows\winnetwk.d \ + $(IMPDIR)\core\sys\windows\winnls.d \ + $(IMPDIR)\core\sys\windows\winnt.d \ + $(IMPDIR)\core\sys\windows\winperf.d \ + $(IMPDIR)\core\sys\windows\winreg.d \ $(IMPDIR)\core\sys\windows\winsock2.d \ + $(IMPDIR)\core\sys\windows\winspool.d \ + $(IMPDIR)\core\sys\windows\winsvc.d \ + $(IMPDIR)\core\sys\windows\winuser.d \ + $(IMPDIR)\core\sys\windows\winver.d \ + $(IMPDIR)\core\sys\windows\wtsapi32.d \ + $(IMPDIR)\core\sys\windows\wtypes.d \ \ $(IMPDIR)\etc\linux\memoryerror.d diff --git a/mak/MANIFEST b/mak/MANIFEST index 7be926bb7a..10939252b2 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -181,14 +181,171 @@ MANIFEST=\ src\core\sys\solaris\sys\procset.d \ src\core\sys\solaris\sys\types.d \ \ + src\core\sys\windows\accctrl.d \ + src\core\sys\windows\aclapi.d \ + src\core\sys\windows\aclui.d \ + src\core\sys\windows\basetsd.d \ + src\core\sys\windows\basetyps.d \ + src\core\sys\windows\cderr.d \ + src\core\sys\windows\cguid.d \ src\core\sys\windows\com.d \ + src\core\sys\windows\comcat.d \ + src\core\sys\windows\commctrl.d \ + src\core\sys\windows\commdlg.d \ + src\core\sys\windows\core.d \ + src\core\sys\windows\cpl.d \ + src\core\sys\windows\cplext.d \ + src\core\sys\windows\custcntl.d \ src\core\sys\windows\dbghelp.d \ + src\core\sys\windows\dbghelp_types.d \ + src\core\sys\windows\dbt.d \ + src\core\sys\windows\dde.d \ + src\core\sys\windows\ddeml.d \ + src\core\sys\windows\dhcpcsdk.d \ + src\core\sys\windows\dlgs.d \ src\core\sys\windows\dll.d \ + src\core\sys\windows\docobj.d \ + src\core\sys\windows\errorrep.d \ + src\core\sys\windows\exdisp.d \ + src\core\sys\windows\exdispid.d \ + src\core\sys\windows\httpext.d \ + src\core\sys\windows\idispids.d \ + src\core\sys\windows\imagehlp.d \ + src\core\sys\windows\imm.d \ + src\core\sys\windows\intshcut.d \ + src\core\sys\windows\ipexport.d \ + src\core\sys\windows\iphlpapi.d \ + src\core\sys\windows\ipifcons.d \ + src\core\sys\windows\iprtrmib.d \ + src\core\sys\windows\iptypes.d \ + src\core\sys\windows\isguids.d \ + src\core\sys\windows\lm.d \ + src\core\sys\windows\lmaccess.d \ + src\core\sys\windows\lmalert.d \ + src\core\sys\windows\lmapibuf.d \ + src\core\sys\windows\lmat.d \ + src\core\sys\windows\lmaudit.d \ + src\core\sys\windows\lmbrowsr.d \ + src\core\sys\windows\lmchdev.d \ + src\core\sys\windows\lmconfig.d \ + src\core\sys\windows\lmcons.d \ + src\core\sys\windows\lmerr.d \ + src\core\sys\windows\lmerrlog.d \ + src\core\sys\windows\lmmsg.d \ + src\core\sys\windows\lmremutl.d \ + src\core\sys\windows\lmrepl.d \ + src\core\sys\windows\lmserver.d \ + src\core\sys\windows\lmshare.d \ + src\core\sys\windows\lmsname.d \ + src\core\sys\windows\lmstats.d \ + src\core\sys\windows\lmsvc.d \ + src\core\sys\windows\lmuse.d \ + src\core\sys\windows\lmuseflg.d \ + src\core\sys\windows\lmwksta.d \ + src\core\sys\windows\lzexpand.d \ + src\core\sys\windows\mapi.d \ + src\core\sys\windows\mciavi.d \ + src\core\sys\windows\mcx.d \ + src\core\sys\windows\mgmtapi.d \ + src\core\sys\windows\mmsystem.d \ + src\core\sys\windows\msacm.d \ + src\core\sys\windows\mshtml.d \ + src\core\sys\windows\mswsock.d \ + src\core\sys\windows\nb30.d \ + src\core\sys\windows\nddeapi.d \ + src\core\sys\windows\nspapi.d \ + src\core\sys\windows\ntdef.d \ + src\core\sys\windows\ntdll.d \ + src\core\sys\windows\ntldap.d \ + src\core\sys\windows\ntsecapi.d \ + src\core\sys\windows\ntsecpkg.d \ + src\core\sys\windows\oaidl.d \ + src\core\sys\windows\objbase.d \ + src\core\sys\windows\objfwd.d \ + src\core\sys\windows\objidl.d \ + src\core\sys\windows\objsafe.d \ + src\core\sys\windows\ocidl.d \ + src\core\sys\windows\odbcinst.d \ + src\core\sys\windows\ole.d \ + src\core\sys\windows\ole2.d \ + src\core\sys\windows\ole2ver.d \ + src\core\sys\windows\oleacc.d \ + src\core\sys\windows\oleauto.d \ + src\core\sys\windows\olectl.d \ + src\core\sys\windows\olectlid.d \ + src\core\sys\windows\oledlg.d \ + src\core\sys\windows\oleidl.d \ + src\core\sys\windows\pbt.d \ + src\core\sys\windows\powrprof.d \ + src\core\sys\windows\prsht.d \ + src\core\sys\windows\psapi.d \ + src\core\sys\windows\rapi.d \ + src\core\sys\windows\ras.d \ + src\core\sys\windows\rasdlg.d \ + src\core\sys\windows\raserror.d \ + src\core\sys\windows\rassapi.d \ + src\core\sys\windows\reason.d \ + src\core\sys\windows\regstr.d \ + src\core\sys\windows\richedit.d \ + src\core\sys\windows\richole.d \ + src\core\sys\windows\rpc.d \ + src\core\sys\windows\rpcdce.d \ + src\core\sys\windows\rpcdce2.d \ + src\core\sys\windows\rpcdcep.d \ + src\core\sys\windows\rpcndr.d \ + src\core\sys\windows\rpcnsi.d \ + src\core\sys\windows\rpcnsip.d \ + src\core\sys\windows\rpcnterr.d \ + src\core\sys\windows\schannel.d \ + src\core\sys\windows\secext.d \ + src\core\sys\windows\security.d \ + src\core\sys\windows\servprov.d \ + src\core\sys\windows\setupapi.d \ + src\core\sys\windows\shellapi.d \ + src\core\sys\windows\shldisp.d \ + src\core\sys\windows\shlguid.d \ + src\core\sys\windows\shlobj.d \ + src\core\sys\windows\shlwapi.d \ + src\core\sys\windows\snmp.d \ + src\core\sys\windows\sql.d \ + src\core\sys\windows\sqlext.d \ + src\core\sys\windows\sqltypes.d \ + src\core\sys\windows\sqlucode.d \ + src\core\sys\windows\sspi.d \ src\core\sys\windows\stacktrace.d \ src\core\sys\windows\stat.d \ + src\core\sys\windows\subauth.d \ src\core\sys\windows\threadaux.d \ + src\core\sys\windows\tlhelp32.d \ + src\core\sys\windows\tmschema.d \ + src\core\sys\windows\unknwn.d \ + src\core\sys\windows\uuid.d \ + src\core\sys\windows\vfw.d \ + src\core\sys\windows\w32api.d \ + src\core\sys\windows\winbase.d \ + src\core\sys\windows\winber.d \ + src\core\sys\windows\wincon.d \ + src\core\sys\windows\wincrypt.d \ + src\core\sys\windows\windef.d \ src\core\sys\windows\windows.d \ + src\core\sys\windows\winerror.d \ + src\core\sys\windows\wingdi.d \ + src\core\sys\windows\winhttp.d \ + src\core\sys\windows\wininet.d \ + src\core\sys\windows\winioctl.d \ + src\core\sys\windows\winldap.d \ + src\core\sys\windows\winnetwk.d \ + src\core\sys\windows\winnls.d \ + src\core\sys\windows\winnt.d \ + src\core\sys\windows\winperf.d \ + src\core\sys\windows\winreg.d \ src\core\sys\windows\winsock2.d \ + src\core\sys\windows\winspool.d \ + src\core\sys\windows\winsvc.d \ + src\core\sys\windows\winuser.d \ + src\core\sys\windows\winver.d \ + src\core\sys\windows\wtsapi32.d \ + src\core\sys\windows\wtypes.d \ \ src\gc\bits.d \ src\gc\config.d \ diff --git a/mak/SRCS b/mak/SRCS index 3c2f5125bf..0140101eb2 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -68,14 +68,171 @@ SRCS=\ src\core\sys\solaris\sys\types.d \ src\core\sys\solaris\sys\procset.d \ \ + src\core\sys\windows\accctrl.d \ + src\core\sys\windows\aclapi.d \ + src\core\sys\windows\aclui.d \ + src\core\sys\windows\basetsd.d \ + src\core\sys\windows\basetyps.d \ + src\core\sys\windows\cderr.d \ + src\core\sys\windows\cguid.d \ src\core\sys\windows\com.d \ + src\core\sys\windows\comcat.d \ + src\core\sys\windows\commctrl.d \ + src\core\sys\windows\commdlg.d \ + src\core\sys\windows\core.d \ + src\core\sys\windows\cpl.d \ + src\core\sys\windows\cplext.d \ + src\core\sys\windows\custcntl.d \ src\core\sys\windows\dbghelp.d \ + src\core\sys\windows\dbghelp_types.d \ + src\core\sys\windows\dbt.d \ + src\core\sys\windows\dde.d \ + src\core\sys\windows\ddeml.d \ + src\core\sys\windows\dhcpcsdk.d \ + src\core\sys\windows\dlgs.d \ src\core\sys\windows\dll.d \ + src\core\sys\windows\docobj.d \ + src\core\sys\windows\errorrep.d \ + src\core\sys\windows\exdisp.d \ + src\core\sys\windows\exdispid.d \ + src\core\sys\windows\httpext.d \ + src\core\sys\windows\idispids.d \ + src\core\sys\windows\imagehlp.d \ + src\core\sys\windows\imm.d \ + src\core\sys\windows\intshcut.d \ + src\core\sys\windows\ipexport.d \ + src\core\sys\windows\iphlpapi.d \ + src\core\sys\windows\ipifcons.d \ + src\core\sys\windows\iprtrmib.d \ + src\core\sys\windows\iptypes.d \ + src\core\sys\windows\isguids.d \ + src\core\sys\windows\lm.d \ + src\core\sys\windows\lmaccess.d \ + src\core\sys\windows\lmalert.d \ + src\core\sys\windows\lmapibuf.d \ + src\core\sys\windows\lmat.d \ + src\core\sys\windows\lmaudit.d \ + src\core\sys\windows\lmbrowsr.d \ + src\core\sys\windows\lmchdev.d \ + src\core\sys\windows\lmconfig.d \ + src\core\sys\windows\lmcons.d \ + src\core\sys\windows\lmerr.d \ + src\core\sys\windows\lmerrlog.d \ + src\core\sys\windows\lmmsg.d \ + src\core\sys\windows\lmremutl.d \ + src\core\sys\windows\lmrepl.d \ + src\core\sys\windows\lmserver.d \ + src\core\sys\windows\lmshare.d \ + src\core\sys\windows\lmsname.d \ + src\core\sys\windows\lmstats.d \ + src\core\sys\windows\lmsvc.d \ + src\core\sys\windows\lmuse.d \ + src\core\sys\windows\lmuseflg.d \ + src\core\sys\windows\lmwksta.d \ + src\core\sys\windows\lzexpand.d \ + src\core\sys\windows\mapi.d \ + src\core\sys\windows\mciavi.d \ + src\core\sys\windows\mcx.d \ + src\core\sys\windows\mgmtapi.d \ + src\core\sys\windows\mmsystem.d \ + src\core\sys\windows\msacm.d \ + src\core\sys\windows\mshtml.d \ + src\core\sys\windows\mswsock.d \ + src\core\sys\windows\nb30.d \ + src\core\sys\windows\nddeapi.d \ + src\core\sys\windows\nspapi.d \ + src\core\sys\windows\ntdef.d \ + src\core\sys\windows\ntdll.d \ + src\core\sys\windows\ntldap.d \ + src\core\sys\windows\ntsecapi.d \ + src\core\sys\windows\ntsecpkg.d \ + src\core\sys\windows\oaidl.d \ + src\core\sys\windows\objbase.d \ + src\core\sys\windows\objfwd.d \ + src\core\sys\windows\objidl.d \ + src\core\sys\windows\objsafe.d \ + src\core\sys\windows\ocidl.d \ + src\core\sys\windows\odbcinst.d \ + src\core\sys\windows\ole.d \ + src\core\sys\windows\ole2.d \ + src\core\sys\windows\ole2ver.d \ + src\core\sys\windows\oleacc.d \ + src\core\sys\windows\oleauto.d \ + src\core\sys\windows\olectl.d \ + src\core\sys\windows\olectlid.d \ + src\core\sys\windows\oledlg.d \ + src\core\sys\windows\oleidl.d \ + src\core\sys\windows\pbt.d \ + src\core\sys\windows\powrprof.d \ + src\core\sys\windows\prsht.d \ + src\core\sys\windows\psapi.d \ + src\core\sys\windows\rapi.d \ + src\core\sys\windows\ras.d \ + src\core\sys\windows\rasdlg.d \ + src\core\sys\windows\raserror.d \ + src\core\sys\windows\rassapi.d \ + src\core\sys\windows\reason.d \ + src\core\sys\windows\regstr.d \ + src\core\sys\windows\richedit.d \ + src\core\sys\windows\richole.d \ + src\core\sys\windows\rpc.d \ + src\core\sys\windows\rpcdce.d \ + src\core\sys\windows\rpcdce2.d \ + src\core\sys\windows\rpcdcep.d \ + src\core\sys\windows\rpcndr.d \ + src\core\sys\windows\rpcnsi.d \ + src\core\sys\windows\rpcnsip.d \ + src\core\sys\windows\rpcnterr.d \ + src\core\sys\windows\schannel.d \ + src\core\sys\windows\secext.d \ + src\core\sys\windows\security.d \ + src\core\sys\windows\servprov.d \ + src\core\sys\windows\setupapi.d \ + src\core\sys\windows\shellapi.d \ + src\core\sys\windows\shldisp.d \ + src\core\sys\windows\shlguid.d \ + src\core\sys\windows\shlobj.d \ + src\core\sys\windows\shlwapi.d \ + src\core\sys\windows\snmp.d \ + src\core\sys\windows\sql.d \ + src\core\sys\windows\sqlext.d \ + src\core\sys\windows\sqltypes.d \ + src\core\sys\windows\sqlucode.d \ + src\core\sys\windows\sspi.d \ src\core\sys\windows\stacktrace.d \ src\core\sys\windows\stat.d \ + src\core\sys\windows\subauth.d \ src\core\sys\windows\threadaux.d \ + src\core\sys\windows\tlhelp32.d \ + src\core\sys\windows\tmschema.d \ + src\core\sys\windows\unknwn.d \ + src\core\sys\windows\uuid.d \ + src\core\sys\windows\vfw.d \ + src\core\sys\windows\w32api.d \ + src\core\sys\windows\winbase.d \ + src\core\sys\windows\winber.d \ + src\core\sys\windows\wincon.d \ + src\core\sys\windows\wincrypt.d \ + src\core\sys\windows\windef.d \ src\core\sys\windows\windows.d \ + src\core\sys\windows\winerror.d \ + src\core\sys\windows\wingdi.d \ + src\core\sys\windows\winhttp.d \ + src\core\sys\windows\wininet.d \ + src\core\sys\windows\winioctl.d \ + src\core\sys\windows\winldap.d \ + src\core\sys\windows\winnetwk.d \ + src\core\sys\windows\winnls.d \ + src\core\sys\windows\winnt.d \ + src\core\sys\windows\winperf.d \ + src\core\sys\windows\winreg.d \ src\core\sys\windows\winsock2.d \ + src\core\sys\windows\winspool.d \ + src\core\sys\windows\winsvc.d \ + src\core\sys\windows\winuser.d \ + src\core\sys\windows\winver.d \ + src\core\sys\windows\wtsapi32.d \ + src\core\sys\windows\wtypes.d \ \ src\gc\bits.d \ src\gc\config.d \ diff --git a/win32.mak b/win32.mak index 2faaf16a83..496241c2f6 100644 --- a/win32.mak +++ b/win32.mak @@ -622,30 +622,501 @@ $(IMPDIR)\core\sys\solaris\sys\types.d : src\core\sys\solaris\sys\types.d $(IMPDIR)\core\sys\solaris\sys\priocntl.d : src\core\sys\solaris\sys\priocntl.d copy $** $@ +$(IMPDIR)\core\sys\windows\accctrl.d : src\core\sys\windows\accctrl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\aclapi.d : src\core\sys\windows\aclapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\aclui.d : src\core\sys\windows\aclui.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\basetsd.d : src\core\sys\windows\basetsd.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\basetyps.d : src\core\sys\windows\basetyps.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\cderr.d : src\core\sys\windows\cderr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\cguid.d : src\core\sys\windows\cguid.d + copy $** $@ + $(IMPDIR)\core\sys\windows\com.d : src\core\sys\windows\com.d copy $** $@ +$(IMPDIR)\core\sys\windows\comcat.d : src\core\sys\windows\comcat.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\commctrl.d : src\core\sys\windows\commctrl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\commdlg.d : src\core\sys\windows\commdlg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\core.d : src\core\sys\windows\core.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\cpl.d : src\core\sys\windows\cpl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\cplext.d : src\core\sys\windows\cplext.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\custcntl.d : src\core\sys\windows\custcntl.d + copy $** $@ + $(IMPDIR)\core\sys\windows\dbghelp.d : src\core\sys\windows\dbghelp.d copy $** $@ +$(IMPDIR)\core\sys\windows\dbghelp_types.d : src\core\sys\windows\dbghelp_types.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\dbt.d : src\core\sys\windows\dbt.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\dde.d : src\core\sys\windows\dde.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ddeml.d : src\core\sys\windows\ddeml.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\dhcpcsdk.d : src\core\sys\windows\dhcpcsdk.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\dlgs.d : src\core\sys\windows\dlgs.d + copy $** $@ + $(IMPDIR)\core\sys\windows\dll.d : src\core\sys\windows\dll.d copy $** $@ +$(IMPDIR)\core\sys\windows\docobj.d : src\core\sys\windows\docobj.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\errorrep.d : src\core\sys\windows\errorrep.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\exdisp.d : src\core\sys\windows\exdisp.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\exdispid.d : src\core\sys\windows\exdispid.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\httpext.d : src\core\sys\windows\httpext.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\idispids.d : src\core\sys\windows\idispids.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\imagehlp.d : src\core\sys\windows\imagehlp.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\imm.d : src\core\sys\windows\imm.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\intshcut.d : src\core\sys\windows\intshcut.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ipexport.d : src\core\sys\windows\ipexport.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\iphlpapi.d : src\core\sys\windows\iphlpapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ipifcons.d : src\core\sys\windows\ipifcons.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\iprtrmib.d : src\core\sys\windows\iprtrmib.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\iptypes.d : src\core\sys\windows\iptypes.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\isguids.d : src\core\sys\windows\isguids.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lm.d : src\core\sys\windows\lm.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmaccess.d : src\core\sys\windows\lmaccess.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmalert.d : src\core\sys\windows\lmalert.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmapibuf.d : src\core\sys\windows\lmapibuf.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmat.d : src\core\sys\windows\lmat.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmaudit.d : src\core\sys\windows\lmaudit.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmbrowsr.d : src\core\sys\windows\lmbrowsr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmchdev.d : src\core\sys\windows\lmchdev.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmconfig.d : src\core\sys\windows\lmconfig.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmcons.d : src\core\sys\windows\lmcons.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmerr.d : src\core\sys\windows\lmerr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmerrlog.d : src\core\sys\windows\lmerrlog.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmmsg.d : src\core\sys\windows\lmmsg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmremutl.d : src\core\sys\windows\lmremutl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmrepl.d : src\core\sys\windows\lmrepl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmserver.d : src\core\sys\windows\lmserver.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmshare.d : src\core\sys\windows\lmshare.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmsname.d : src\core\sys\windows\lmsname.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmstats.d : src\core\sys\windows\lmstats.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmsvc.d : src\core\sys\windows\lmsvc.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmuse.d : src\core\sys\windows\lmuse.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmuseflg.d : src\core\sys\windows\lmuseflg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmwksta.d : src\core\sys\windows\lmwksta.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lzexpand.d : src\core\sys\windows\lzexpand.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mapi.d : src\core\sys\windows\mapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mciavi.d : src\core\sys\windows\mciavi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mcx.d : src\core\sys\windows\mcx.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mgmtapi.d : src\core\sys\windows\mgmtapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mmsystem.d : src\core\sys\windows\mmsystem.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\msacm.d : src\core\sys\windows\msacm.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mshtml.d : src\core\sys\windows\mshtml.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mswsock.d : src\core\sys\windows\mswsock.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\nb30.d : src\core\sys\windows\nb30.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\nddeapi.d : src\core\sys\windows\nddeapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\nspapi.d : src\core\sys\windows\nspapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ntdef.d : src\core\sys\windows\ntdef.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ntdll.d : src\core\sys\windows\ntdll.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ntldap.d : src\core\sys\windows\ntldap.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ntsecapi.d : src\core\sys\windows\ntsecapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ntsecpkg.d : src\core\sys\windows\ntsecpkg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\oaidl.d : src\core\sys\windows\oaidl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\objbase.d : src\core\sys\windows\objbase.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\objfwd.d : src\core\sys\windows\objfwd.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\objidl.d : src\core\sys\windows\objidl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\objsafe.d : src\core\sys\windows\objsafe.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ocidl.d : src\core\sys\windows\ocidl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\odbcinst.d : src\core\sys\windows\odbcinst.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ole.d : src\core\sys\windows\ole.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ole2.d : src\core\sys\windows\ole2.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ole2ver.d : src\core\sys\windows\ole2ver.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\oleacc.d : src\core\sys\windows\oleacc.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\oleauto.d : src\core\sys\windows\oleauto.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\olectl.d : src\core\sys\windows\olectl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\olectlid.d : src\core\sys\windows\olectlid.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\oledlg.d : src\core\sys\windows\oledlg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\oleidl.d : src\core\sys\windows\oleidl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\pbt.d : src\core\sys\windows\pbt.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\powrprof.d : src\core\sys\windows\powrprof.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\prsht.d : src\core\sys\windows\prsht.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\psapi.d : src\core\sys\windows\psapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rapi.d : src\core\sys\windows\rapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ras.d : src\core\sys\windows\ras.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rasdlg.d : src\core\sys\windows\rasdlg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\raserror.d : src\core\sys\windows\raserror.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rassapi.d : src\core\sys\windows\rassapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\reason.d : src\core\sys\windows\reason.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\regstr.d : src\core\sys\windows\regstr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\richedit.d : src\core\sys\windows\richedit.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\richole.d : src\core\sys\windows\richole.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpc.d : src\core\sys\windows\rpc.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcdce.d : src\core\sys\windows\rpcdce.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcdce2.d : src\core\sys\windows\rpcdce2.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcdcep.d : src\core\sys\windows\rpcdcep.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcndr.d : src\core\sys\windows\rpcndr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcnsi.d : src\core\sys\windows\rpcnsi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcnsip.d : src\core\sys\windows\rpcnsip.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcnterr.d : src\core\sys\windows\rpcnterr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\schannel.d : src\core\sys\windows\schannel.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\secext.d : src\core\sys\windows\secext.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\security.d : src\core\sys\windows\security.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\servprov.d : src\core\sys\windows\servprov.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\setupapi.d : src\core\sys\windows\setupapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\shellapi.d : src\core\sys\windows\shellapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\shldisp.d : src\core\sys\windows\shldisp.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\shlguid.d : src\core\sys\windows\shlguid.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\shlobj.d : src\core\sys\windows\shlobj.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\shlwapi.d : src\core\sys\windows\shlwapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\snmp.d : src\core\sys\windows\snmp.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\sql.d : src\core\sys\windows\sql.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\sqlext.d : src\core\sys\windows\sqlext.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\sqltypes.d : src\core\sys\windows\sqltypes.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\sqlucode.d : src\core\sys\windows\sqlucode.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\sspi.d : src\core\sys\windows\sspi.d + copy $** $@ + $(IMPDIR)\core\sys\windows\stacktrace.d : src\core\sys\windows\stacktrace.d copy $** $@ $(IMPDIR)\core\sys\windows\stat.d : src\core\sys\windows\stat.d copy $** $@ +$(IMPDIR)\core\sys\windows\subauth.d : src\core\sys\windows\subauth.d + copy $** $@ + $(IMPDIR)\core\sys\windows\threadaux.d : src\core\sys\windows\threadaux.d copy $** $@ +$(IMPDIR)\core\sys\windows\tlhelp32.d : src\core\sys\windows\tlhelp32.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\tmschema.d : src\core\sys\windows\tmschema.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\unknwn.d : src\core\sys\windows\unknwn.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\uuid.d : src\core\sys\windows\uuid.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\vfw.d : src\core\sys\windows\vfw.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\w32api.d : src\core\sys\windows\w32api.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winbase.d : src\core\sys\windows\winbase.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winber.d : src\core\sys\windows\winber.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wincon.d : src\core\sys\windows\wincon.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wincrypt.d : src\core\sys\windows\wincrypt.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\windef.d : src\core\sys\windows\windef.d + copy $** $@ + $(IMPDIR)\core\sys\windows\windows.d : src\core\sys\windows\windows.d copy $** $@ +$(IMPDIR)\core\sys\windows\winerror.d : src\core\sys\windows\winerror.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wingdi.d : src\core\sys\windows\wingdi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winhttp.d : src\core\sys\windows\winhttp.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wininet.d : src\core\sys\windows\wininet.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winioctl.d : src\core\sys\windows\winioctl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winldap.d : src\core\sys\windows\winldap.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winnetwk.d : src\core\sys\windows\winnetwk.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winnls.d : src\core\sys\windows\winnls.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winnt.d : src\core\sys\windows\winnt.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winperf.d : src\core\sys\windows\winperf.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winreg.d : src\core\sys\windows\winreg.d + copy $** $@ + $(IMPDIR)\core\sys\windows\winsock2.d : src\core\sys\windows\winsock2.d copy $** $@ +$(IMPDIR)\core\sys\windows\winspool.d : src\core\sys\windows\winspool.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winsvc.d : src\core\sys\windows\winsvc.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winuser.d : src\core\sys\windows\winuser.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winver.d : src\core\sys\windows\winver.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wtsapi32.d : src\core\sys\windows\wtsapi32.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wtypes.d : src\core\sys\windows\wtypes.d + copy $** $@ + $(IMPDIR)\etc\linux\memoryerror.d : src\etc\linux\memoryerror.d copy $** $@ diff --git a/win64.mak b/win64.mak index 37dc908d46..58248e66fe 100644 --- a/win64.mak +++ b/win64.mak @@ -632,30 +632,501 @@ $(IMPDIR)\core\sys\solaris\sys\types.d : src\core\sys\solaris\sys\types.d $(IMPDIR)\core\sys\solaris\sys\priocntl.d : src\core\sys\solaris\sys\priocntl.d copy $** $@ +$(IMPDIR)\core\sys\windows\accctrl.d : src\core\sys\windows\accctrl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\aclapi.d : src\core\sys\windows\aclapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\aclui.d : src\core\sys\windows\aclui.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\basetsd.d : src\core\sys\windows\basetsd.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\basetyps.d : src\core\sys\windows\basetyps.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\cderr.d : src\core\sys\windows\cderr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\cguid.d : src\core\sys\windows\cguid.d + copy $** $@ + $(IMPDIR)\core\sys\windows\com.d : src\core\sys\windows\com.d copy $** $@ +$(IMPDIR)\core\sys\windows\comcat.d : src\core\sys\windows\comcat.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\commctrl.d : src\core\sys\windows\commctrl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\commdlg.d : src\core\sys\windows\commdlg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\core.d : src\core\sys\windows\core.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\cpl.d : src\core\sys\windows\cpl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\cplext.d : src\core\sys\windows\cplext.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\custcntl.d : src\core\sys\windows\custcntl.d + copy $** $@ + $(IMPDIR)\core\sys\windows\dbghelp.d : src\core\sys\windows\dbghelp.d copy $** $@ +$(IMPDIR)\core\sys\windows\dbghelp_types.d : src\core\sys\windows\dbghelp_types.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\dbt.d : src\core\sys\windows\dbt.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\dde.d : src\core\sys\windows\dde.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ddeml.d : src\core\sys\windows\ddeml.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\dhcpcsdk.d : src\core\sys\windows\dhcpcsdk.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\dlgs.d : src\core\sys\windows\dlgs.d + copy $** $@ + $(IMPDIR)\core\sys\windows\dll.d : src\core\sys\windows\dll.d copy $** $@ +$(IMPDIR)\core\sys\windows\docobj.d : src\core\sys\windows\docobj.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\errorrep.d : src\core\sys\windows\errorrep.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\exdisp.d : src\core\sys\windows\exdisp.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\exdispid.d : src\core\sys\windows\exdispid.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\httpext.d : src\core\sys\windows\httpext.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\idispids.d : src\core\sys\windows\idispids.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\imagehlp.d : src\core\sys\windows\imagehlp.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\imm.d : src\core\sys\windows\imm.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\intshcut.d : src\core\sys\windows\intshcut.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ipexport.d : src\core\sys\windows\ipexport.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\iphlpapi.d : src\core\sys\windows\iphlpapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ipifcons.d : src\core\sys\windows\ipifcons.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\iprtrmib.d : src\core\sys\windows\iprtrmib.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\iptypes.d : src\core\sys\windows\iptypes.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\isguids.d : src\core\sys\windows\isguids.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lm.d : src\core\sys\windows\lm.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmaccess.d : src\core\sys\windows\lmaccess.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmalert.d : src\core\sys\windows\lmalert.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmapibuf.d : src\core\sys\windows\lmapibuf.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmat.d : src\core\sys\windows\lmat.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmaudit.d : src\core\sys\windows\lmaudit.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmbrowsr.d : src\core\sys\windows\lmbrowsr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmchdev.d : src\core\sys\windows\lmchdev.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmconfig.d : src\core\sys\windows\lmconfig.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmcons.d : src\core\sys\windows\lmcons.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmerr.d : src\core\sys\windows\lmerr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmerrlog.d : src\core\sys\windows\lmerrlog.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmmsg.d : src\core\sys\windows\lmmsg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmremutl.d : src\core\sys\windows\lmremutl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmrepl.d : src\core\sys\windows\lmrepl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmserver.d : src\core\sys\windows\lmserver.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmshare.d : src\core\sys\windows\lmshare.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmsname.d : src\core\sys\windows\lmsname.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmstats.d : src\core\sys\windows\lmstats.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmsvc.d : src\core\sys\windows\lmsvc.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmuse.d : src\core\sys\windows\lmuse.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmuseflg.d : src\core\sys\windows\lmuseflg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lmwksta.d : src\core\sys\windows\lmwksta.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\lzexpand.d : src\core\sys\windows\lzexpand.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mapi.d : src\core\sys\windows\mapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mciavi.d : src\core\sys\windows\mciavi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mcx.d : src\core\sys\windows\mcx.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mgmtapi.d : src\core\sys\windows\mgmtapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mmsystem.d : src\core\sys\windows\mmsystem.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\msacm.d : src\core\sys\windows\msacm.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mshtml.d : src\core\sys\windows\mshtml.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\mswsock.d : src\core\sys\windows\mswsock.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\nb30.d : src\core\sys\windows\nb30.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\nddeapi.d : src\core\sys\windows\nddeapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\nspapi.d : src\core\sys\windows\nspapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ntdef.d : src\core\sys\windows\ntdef.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ntdll.d : src\core\sys\windows\ntdll.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ntldap.d : src\core\sys\windows\ntldap.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ntsecapi.d : src\core\sys\windows\ntsecapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ntsecpkg.d : src\core\sys\windows\ntsecpkg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\oaidl.d : src\core\sys\windows\oaidl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\objbase.d : src\core\sys\windows\objbase.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\objfwd.d : src\core\sys\windows\objfwd.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\objidl.d : src\core\sys\windows\objidl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\objsafe.d : src\core\sys\windows\objsafe.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ocidl.d : src\core\sys\windows\ocidl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\odbcinst.d : src\core\sys\windows\odbcinst.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ole.d : src\core\sys\windows\ole.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ole2.d : src\core\sys\windows\ole2.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ole2ver.d : src\core\sys\windows\ole2ver.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\oleacc.d : src\core\sys\windows\oleacc.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\oleauto.d : src\core\sys\windows\oleauto.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\olectl.d : src\core\sys\windows\olectl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\olectlid.d : src\core\sys\windows\olectlid.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\oledlg.d : src\core\sys\windows\oledlg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\oleidl.d : src\core\sys\windows\oleidl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\pbt.d : src\core\sys\windows\pbt.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\powrprof.d : src\core\sys\windows\powrprof.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\prsht.d : src\core\sys\windows\prsht.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\psapi.d : src\core\sys\windows\psapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rapi.d : src\core\sys\windows\rapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\ras.d : src\core\sys\windows\ras.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rasdlg.d : src\core\sys\windows\rasdlg.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\raserror.d : src\core\sys\windows\raserror.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rassapi.d : src\core\sys\windows\rassapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\reason.d : src\core\sys\windows\reason.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\regstr.d : src\core\sys\windows\regstr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\richedit.d : src\core\sys\windows\richedit.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\richole.d : src\core\sys\windows\richole.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpc.d : src\core\sys\windows\rpc.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcdce.d : src\core\sys\windows\rpcdce.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcdce2.d : src\core\sys\windows\rpcdce2.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcdcep.d : src\core\sys\windows\rpcdcep.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcndr.d : src\core\sys\windows\rpcndr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcnsi.d : src\core\sys\windows\rpcnsi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcnsip.d : src\core\sys\windows\rpcnsip.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\rpcnterr.d : src\core\sys\windows\rpcnterr.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\schannel.d : src\core\sys\windows\schannel.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\secext.d : src\core\sys\windows\secext.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\security.d : src\core\sys\windows\security.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\servprov.d : src\core\sys\windows\servprov.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\setupapi.d : src\core\sys\windows\setupapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\shellapi.d : src\core\sys\windows\shellapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\shldisp.d : src\core\sys\windows\shldisp.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\shlguid.d : src\core\sys\windows\shlguid.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\shlobj.d : src\core\sys\windows\shlobj.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\shlwapi.d : src\core\sys\windows\shlwapi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\snmp.d : src\core\sys\windows\snmp.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\sql.d : src\core\sys\windows\sql.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\sqlext.d : src\core\sys\windows\sqlext.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\sqltypes.d : src\core\sys\windows\sqltypes.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\sqlucode.d : src\core\sys\windows\sqlucode.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\sspi.d : src\core\sys\windows\sspi.d + copy $** $@ + $(IMPDIR)\core\sys\windows\stacktrace.d : src\core\sys\windows\stacktrace.d copy $** $@ $(IMPDIR)\core\sys\windows\stat.d : src\core\sys\windows\stat.d copy $** $@ +$(IMPDIR)\core\sys\windows\subauth.d : src\core\sys\windows\subauth.d + copy $** $@ + $(IMPDIR)\core\sys\windows\threadaux.d : src\core\sys\windows\threadaux.d copy $** $@ +$(IMPDIR)\core\sys\windows\tlhelp32.d : src\core\sys\windows\tlhelp32.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\tmschema.d : src\core\sys\windows\tmschema.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\unknwn.d : src\core\sys\windows\unknwn.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\uuid.d : src\core\sys\windows\uuid.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\vfw.d : src\core\sys\windows\vfw.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\w32api.d : src\core\sys\windows\w32api.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winbase.d : src\core\sys\windows\winbase.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winber.d : src\core\sys\windows\winber.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wincon.d : src\core\sys\windows\wincon.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wincrypt.d : src\core\sys\windows\wincrypt.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\windef.d : src\core\sys\windows\windef.d + copy $** $@ + $(IMPDIR)\core\sys\windows\windows.d : src\core\sys\windows\windows.d copy $** $@ +$(IMPDIR)\core\sys\windows\winerror.d : src\core\sys\windows\winerror.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wingdi.d : src\core\sys\windows\wingdi.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winhttp.d : src\core\sys\windows\winhttp.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wininet.d : src\core\sys\windows\wininet.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winioctl.d : src\core\sys\windows\winioctl.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winldap.d : src\core\sys\windows\winldap.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winnetwk.d : src\core\sys\windows\winnetwk.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winnls.d : src\core\sys\windows\winnls.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winnt.d : src\core\sys\windows\winnt.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winperf.d : src\core\sys\windows\winperf.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winreg.d : src\core\sys\windows\winreg.d + copy $** $@ + $(IMPDIR)\core\sys\windows\winsock2.d : src\core\sys\windows\winsock2.d copy $** $@ +$(IMPDIR)\core\sys\windows\winspool.d : src\core\sys\windows\winspool.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winsvc.d : src\core\sys\windows\winsvc.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winuser.d : src\core\sys\windows\winuser.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\winver.d : src\core\sys\windows\winver.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wtsapi32.d : src\core\sys\windows\wtsapi32.d + copy $** $@ + +$(IMPDIR)\core\sys\windows\wtypes.d : src\core\sys\windows\wtypes.d + copy $** $@ + $(IMPDIR)\etc\linux\memoryerror.d : src\etc\linux\memoryerror.d copy $** $@ From 4f601e1158a55d22c518b4a14afc5fce80792379 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 01:32:51 +0000 Subject: [PATCH 130/768] winhttp: Fix module names --- src/core/sys/windows/winhttp.d | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d index 68f2a923b7..1f6fa43973 100644 --- a/src/core/sys/windows/winhttp.d +++ b/src/core/sys/windows/winhttp.d @@ -6,15 +6,15 @@ * License: Placed into public domain * Source: $(DRUNTIMESRC src/core/sys/windows/_winhttp.d) */ -module win32.winhttp; +module core.sys.windows.winhttp; pragma(lib, "winhttp"); // FIXME: Grouping of constants. Windows SDK doesn't make this entirely clear // FIXME: Verify WINHTTP_STATUS_CALLBACK function declaration works correctly -import win32.w32api; -import win32.winbase; -import win32.windef; -import win32.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) +import core.sys.windows.w32api; +import core.sys.windows.winbase; +import core.sys.windows.windef; +import core.sys.windows.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) alias HINTERNET = void*; alias LPHINTERNET = HINTERNET*; From 01a423683b6e06bb9ab596c582340fed9153903f Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 01:39:44 +0000 Subject: [PATCH 131/768] wtsapi32: Array syntax fixes --- src/core/sys/windows/wtsapi32.d | 132 ++++++++++++++++---------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/src/core/sys/windows/wtsapi32.d b/src/core/sys/windows/wtsapi32.d index 7838c542fd..c613396a44 100644 --- a/src/core/sys/windows/wtsapi32.d +++ b/src/core/sys/windows/wtsapi32.d @@ -270,48 +270,48 @@ enum { static if (_WIN32_WINNT >= 0x600) { struct WTSCLIENTW { - WCHAR ClientName[CLIENTNAME_LENGTH + 1]; - WCHAR Domain[DOMAIN_LENGTH + 1]; - WCHAR UserName[USERNAME_LENGTH + 1]; - WCHAR WorkDirectory[MAX_PATH + 1]; - WCHAR InitialProgram[MAX_PATH + 1]; - BYTE EncryptionLevel; - ULONG ClientAddressFamily; - USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; - USHORT HRes; - USHORT VRes; - USHORT ColorDepth; - WCHAR ClientDirectory[MAX_PATH + 1]; - ULONG ClientBuildNumber; - ULONG ClientHardwareId; - USHORT ClientProductId; - USHORT OutBufCountHost; - USHORT OutBufCountClient; - USHORT OutBufLength; - WCHAR DeviceId[MAX_PATH + 1]; + WCHAR[CLIENTNAME_LENGTH + 1] ClientName; + WCHAR[DOMAIN_LENGTH + 1] Domain; + WCHAR[USERNAME_LENGTH + 1] UserName; + WCHAR[MAX_PATH + 1] WorkDirectory; + WCHAR[MAX_PATH + 1] InitialProgram; + BYTE EncryptionLevel; + ULONG ClientAddressFamily; + USHORT[CLIENTADDRESS_LENGTH + 1] ClientAddress; + USHORT HRes; + USHORT VRes; + USHORT ColorDepth; + WCHAR[MAX_PATH + 1] ClientDirectory; + ULONG ClientBuildNumber; + ULONG ClientHardwareId; + USHORT ClientProductId; + USHORT OutBufCountHost; + USHORT OutBufCountClient; + USHORT OutBufLength; + WCHAR[MAX_PATH + 1] DeviceId; } alias WTSCLIENTW* PWTSCLIENTW; struct WTSCLIENTA { - CHAR ClientName[CLIENTNAME_LENGTH + 1]; - CHAR Domain[DOMAIN_LENGTH + 1 ]; - CHAR UserName[USERNAME_LENGTH + 1]; - CHAR WorkDirectory[MAX_PATH + 1]; - CHAR InitialProgram[MAX_PATH + 1]; - BYTE EncryptionLevel; - ULONG ClientAddressFamily; - USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; - USHORT HRes; - USHORT VRes; - USHORT ColorDepth; - CHAR ClientDirectory[MAX_PATH + 1]; - ULONG ClientBuildNumber; - ULONG ClientHardwareId; - USHORT ClientProductId; - USHORT OutBufCountHost; - USHORT OutBufCountClient; - USHORT OutBufLength; - CHAR DeviceId[MAX_PATH + 1]; + CHAR[CLIENTNAME_LENGTH + 1] ClientName; + CHAR[DOMAIN_LENGTH + 1 ] Domain; + CHAR[USERNAME_LENGTH + 1] UserName; + CHAR[MAX_PATH + 1] WorkDirectory; + CHAR[MAX_PATH + 1] InitialProgram; + BYTE EncryptionLevel; + ULONG ClientAddressFamily; + USHORT[CLIENTADDRESS_LENGTH + 1] ClientAddress; + USHORT HRes; + USHORT VRes; + USHORT ColorDepth; + CHAR[MAX_PATH + 1] ClientDirectory; + ULONG ClientBuildNumber; + ULONG ClientHardwareId; + USHORT ClientProductId; + USHORT OutBufCountHost; + USHORT OutBufCountClient; + USHORT OutBufLength; + CHAR[MAX_PATH + 1] DeviceId; } alias WTSCLIENTA* PWTSCLIENTA; @@ -324,38 +324,38 @@ static if (_WIN32_WINNT >= 0x600) { } struct WTSINFOW { - WTS_CONNECTSTATE_CLASS State; - DWORD SessionId; - DWORD IncomingBytes; - DWORD OutgoingBytes; - DWORD IncomingCompressedBytes; - DWORD OutgoingCompressedBytes; - WCHAR WinStationName[WINSTATIONNAME_LENGTH]; - WCHAR Domain[DOMAIN_LENGTH]; - WCHAR UserName[USERNAME_LENGTH+1]; - LARGE_INTEGER ConnectTime; - LARGE_INTEGER DisconnectTime; - LARGE_INTEGER LastInputTime; - LARGE_INTEGER LogonTime; - LARGE_INTEGER CurrentTime; + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBytes; + WCHAR[WINSTATIONNAME_LENGTH] WinStationName; + WCHAR[DOMAIN_LENGTH] Domain; + WCHAR[USERNAME_LENGTH+1] UserName; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; } alias WTSINFOW* PWTSINFOW; struct WTSINFOA { - WTS_CONNECTSTATE_CLASS State; - DWORD SessionId; - DWORD IncomingBytes; - DWORD OutgoingBytes; - DWORD IncomingCompressedBytes; - DWORD OutgoingCompressedBytes; - CHAR WinStationName[WINSTATIONNAME_LENGTH]; - CHAR Domain[DOMAIN_LENGTH]; - CHAR UserName[USERNAME_LENGTH+1]; - LARGE_INTEGER ConnectTime; - LARGE_INTEGER DisconnectTime; - LARGE_INTEGER LastInputTime; - LARGE_INTEGER LogonTime; - LARGE_INTEGER CurrentTime; + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBytes; + CHAR[WINSTATIONNAME_LENGTH] WinStationName; + CHAR[DOMAIN_LENGTH] Domain; + CHAR[USERNAME_LENGTH+1] UserName; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; } alias WTSINFOA* PWTSINFOA; From 4657431e993829cbbde9dc676e53497eeca43024 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 01:39:55 +0000 Subject: [PATCH 132/768] winsock2: Add missing declarations for winhttp --- src/core/sys/windows/winsock2.d | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/core/sys/windows/winsock2.d b/src/core/sys/windows/winsock2.d index 1ee85857f9..50b9c5502b 100644 --- a/src/core/sys/windows/winsock2.d +++ b/src/core/sys/windows/winsock2.d @@ -668,6 +668,15 @@ struct sockaddr alias sockaddr SOCKADDR; alias SOCKADDR* PSOCKADDR, LPSOCKADDR; +struct SOCKADDR_STORAGE +{ + short ss_family; + char[6] __ss_pad1; + long __ss_align; + char[112] __ss_pad2; +} +alias SOCKADDR_STORAGE* PSOCKADDR_STORAGE; + struct sockaddr_in { short sin_family = AF_INET; From b72b5b7db95282f611c0ebb3862e031f57f48d99 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 01:45:27 +0000 Subject: [PATCH 133/768] DIP25 fixes --- src/core/sys/windows/dbt.d | 12 ++++++------ src/core/sys/windows/dde.d | 6 +++--- src/core/sys/windows/ddeml.d | 2 +- src/core/sys/windows/ipexport.d | 4 ++-- src/core/sys/windows/iprtrmib.d | 12 ++++++------ src/core/sys/windows/mcx.d | 4 ++-- src/core/sys/windows/nspapi.d | 2 +- src/core/sys/windows/ntsecapi.d | 6 +++--- src/core/sys/windows/ole.d | 2 +- src/core/sys/windows/setupapi.d | 10 +++++----- src/core/sys/windows/vfw.d | 2 +- src/core/sys/windows/winbase.d | 8 ++++---- src/core/sys/windows/winioctl.d | 20 +++++++++---------- src/core/sys/windows/winnt.d | 34 ++++++++++++++++----------------- 14 files changed, 61 insertions(+), 63 deletions(-) diff --git a/src/core/sys/windows/dbt.d b/src/core/sys/windows/dbt.d index 2aaebffc99..d5ec29e518 100644 --- a/src/core/sys/windows/dbt.d +++ b/src/core/sys/windows/dbt.d @@ -110,7 +110,7 @@ struct DEV_BROADCAST_PORT_A { DWORD dbcp_devicetype; DWORD dbcp_reserved; char _dbcp_name; - char* dbcp_name() { return &_dbcp_name; } + char* dbcp_name() return { return &_dbcp_name; } } alias DEV_BROADCAST_PORT_A* PDEV_BROADCAST_PORT_A; @@ -119,14 +119,14 @@ struct DEV_BROADCAST_PORT_W { DWORD dbcp_devicetype; DWORD dbcp_reserved; WCHAR _dbcp_name; - WCHAR* dbcp_name() { return &_dbcp_name; } + WCHAR* dbcp_name() return { return &_dbcp_name; } } alias DEV_BROADCAST_PORT_W* PDEV_BROADCAST_PORT_W; struct DEV_BROADCAST_USERDEFINED { DEV_BROADCAST_HDR dbud_dbh; char _dbud_szName; - char* dbud_szName() { return &_dbud_szName; } + char* dbud_szName() return { return &_dbud_szName; } } struct DEV_BROADCAST_VOLUME { @@ -152,7 +152,7 @@ alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; DWORD dbcc_reserved; GUID dbcc_classguid; char _dbcc_name; - char* dbcc_name() { return &_dbcc_name; } + char* dbcc_name() return { return &_dbcc_name; } } alias DEV_BROADCAST_DEVICEINTERFACE_A* PDEV_BROADCAST_DEVICEINTERFACE_A; @@ -162,7 +162,7 @@ alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; DWORD dbcc_reserved; GUID dbcc_classguid; WCHAR _dbcc_name; - WCHAR* dbcc_name() { return &_dbcc_name; } + WCHAR* dbcc_name() return { return &_dbcc_name; } } alias DEV_BROADCAST_DEVICEINTERFACE_W* PDEV_BROADCAST_DEVICEINTERFACE_W; @@ -182,7 +182,7 @@ alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; GUID dbch_eventguid; LONG dbch_nameoffset; BYTE _dbch_data; - BYTE* dbch_data() { return &_dbch_data; } + BYTE* dbch_data() return { return &_dbch_data; } } alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; //} diff --git a/src/core/sys/windows/dde.d b/src/core/sys/windows/dde.d index de4e9c11a1..cedff020a4 100644 --- a/src/core/sys/windows/dde.d +++ b/src/core/sys/windows/dde.d @@ -71,7 +71,7 @@ struct DDEDATA { @property bool reserved() { return cast(bool) (_bf & 0x4000); } @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } - @property byte* Value() { return &_Value; } + @property byte* Value() return { return &_Value; } @property ushort unused(ushort r) { _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); @@ -93,7 +93,7 @@ struct DDEPOKE { @property bool fRelease() { return cast(bool) (_bf & 0x2000); } @property ubyte fReserved() { return cast(ubyte) ((_bf & 0xC000) >>> 14); } - @property byte* Value() { return &_Value; } + @property byte* Value() return { return &_Value; } @property ushort unused(ushort u) { _bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF)); @@ -134,7 +134,7 @@ deprecated struct DDEUP { @property bool fReserved() { return cast(bool) (_bf & 0x4000); } @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } - @property byte* rgb() { return &_rgb; } + @property byte* rgb() return { return &_rgb; } @property ushort unused(ushort r) { _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index 0c29e470fa..c90c5f69da 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -248,7 +248,7 @@ struct MONHSZSTRUCT { HANDLE hTask; TCHAR[1] _str; - TCHAR* str() { return _str.ptr; } + TCHAR* str() return { return _str.ptr; } } alias MONHSZSTRUCT* PMONHSZSTRUCT; diff --git a/src/core/sys/windows/ipexport.d b/src/core/sys/windows/ipexport.d index e6b8b74f27..d391a271e4 100644 --- a/src/core/sys/windows/ipexport.d +++ b/src/core/sys/windows/ipexport.d @@ -94,7 +94,7 @@ struct IP_INTERFACE_INFO { LONG NumAdapters; IP_ADAPTER_INDEX_MAP[1] _Adapter; - IP_ADAPTER_INDEX_MAP* Adapter() { return _Adapter.ptr; } + IP_ADAPTER_INDEX_MAP* Adapter() return { return _Adapter.ptr; } } alias IP_INTERFACE_INFO* PIP_INTERFACE_INFO; @@ -102,6 +102,6 @@ struct IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { ULONG NumAdapters; IPAddr[1] _Address; - IPAddr* Address() { return _Address.ptr; } + IPAddr* Address() return { return _Address.ptr; } } alias IP_UNIDIRECTIONAL_ADAPTER_ADDRESS* PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; diff --git a/src/core/sys/windows/iprtrmib.d b/src/core/sys/windows/iprtrmib.d index 10f8e4ad55..fb3b2b0803 100644 --- a/src/core/sys/windows/iprtrmib.d +++ b/src/core/sys/windows/iprtrmib.d @@ -68,7 +68,7 @@ struct MIB_IPADDRTABLE { DWORD dwNumEntries; MIB_IPADDRROW[1] _table; - MIB_IPADDRROW* table() { return _table.ptr; } + MIB_IPADDRROW* table() return { return _table.ptr; } } alias MIB_IPADDRTABLE* PMIB_IPADDRTABLE; @@ -94,7 +94,7 @@ struct MIB_IPFORWARDTABLE { DWORD dwNumEntries; MIB_IPFORWARDROW[1] _table; - MIB_IPFORWARDROW* table() { return _table.ptr; } + MIB_IPFORWARDROW* table() return { return _table.ptr; } } alias MIB_IPFORWARDTABLE* PMIB_IPFORWARDTABLE; @@ -111,7 +111,7 @@ struct MIB_IPNETTABLE { DWORD dwNumEntries; MIB_IPNETROW[1] _table; - MIB_IPNETROW* table() { return _table.ptr; } + MIB_IPNETROW* table() return { return _table.ptr; } } alias MIB_IPNETTABLE* PMIB_IPNETTABLE; @@ -175,7 +175,7 @@ struct MIB_IFTABLE { DWORD dwNumEntries; MIB_IFROW[1] _table; - MIB_IFROW* table() { return _table.ptr; } + MIB_IFROW* table() return { return _table.ptr; } } alias MIB_IFTABLE* PMIB_IFTABLE; @@ -238,7 +238,7 @@ struct MIB_TCPTABLE { DWORD dwNumEntries; MIB_TCPROW[1] _table; - MIB_TCPROW* table() { return _table.ptr; } + MIB_TCPROW* table() return { return _table.ptr; } } alias MIB_TCPTABLE* PMIB_TCPTABLE; @@ -261,6 +261,6 @@ struct MIB_UDPTABLE { DWORD dwNumEntries; MIB_UDPROW[1] _table; - MIB_UDPROW* table() { return _table.ptr; } + MIB_UDPROW* table() return { return _table.ptr; } } alias MIB_UDPTABLE* PMIB_UDPTABLE; diff --git a/src/core/sys/windows/mcx.d b/src/core/sys/windows/mcx.d index fc5bfa9b40..6c0585bb03 100644 --- a/src/core/sys/windows/mcx.d +++ b/src/core/sys/windows/mcx.d @@ -75,7 +75,7 @@ struct MODEMDEVCAPS { DWORD dwMaxDCERate; BYTE _abVariablePortion; - BYTE* abVariablePortion() { return &_abVariablePortion; } + BYTE* abVariablePortion() return { return &_abVariablePortion; } } alias MODEMDEVCAPS* PMODEMDEVCAPS, LPMODEMDEVCAPS; @@ -93,6 +93,6 @@ struct MODEMSETTINGS { DWORD dwNegotiatedDCERate; BYTE _abVariablePortion; - BYTE* abVariablePortion() { return &_abVariablePortion; } + BYTE* abVariablePortion() return { return &_abVariablePortion; } } alias MODEMSETTINGS* PMODEMSETTINGS, LPMODEMSETTINGS; diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d index 43c65d327d..989bdc75bc 100644 --- a/src/core/sys/windows/nspapi.d +++ b/src/core/sys/windows/nspapi.d @@ -88,7 +88,7 @@ struct SERVICE_ADDRESSES { DWORD dwAddressCount; SERVICE_ADDRESS _Addresses; - SERVICE_ADDRESS* Addresses() { return &_Addresses; } + SERVICE_ADDRESS* Addresses() return { return &_Addresses; } } alias SERVICE_ADDRESSES* PSERVICE_ADDRESSES, LPSERVICE_ADDRESSES; diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index ed3601a7f4..a8dd3b9802 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -451,7 +451,7 @@ struct MSV1_0_NTLM3_RESPONSE { UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeFromClient; ULONG AvPairsOff; UCHAR _Buffer; - UCHAR* Buffer() { return &_Buffer; } + UCHAR* Buffer() return { return &_Buffer; } } alias MSV1_0_NTLM3_RESPONSE* PMSV1_0_NTLM3_RESPONSE; @@ -501,7 +501,7 @@ struct MSV1_0_DERIVECRED_REQUEST { ULONG DeriveCredType; ULONG DeriveCredInfoLength; UCHAR _DeriveCredSubmitBuffer; - UCHAR* DeriveCredSubmitBuffer() { return &_DeriveCredSubmitBuffer; } + UCHAR* DeriveCredSubmitBuffer() return { return &_DeriveCredSubmitBuffer; } } alias MSV1_0_DERIVECRED_REQUEST* PMSV1_0_DERIVECRED_REQUEST; @@ -509,7 +509,7 @@ struct MSV1_0_DERIVECRED_RESPONSE { MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; ULONG DeriveCredInfoLength; UCHAR _DeriveCredReturnBuffer; - UCHAR* DeriveCredReturnBuffer() { return &_DeriveCredReturnBuffer; } + UCHAR* DeriveCredReturnBuffer() return { return &_DeriveCredReturnBuffer; } } alias MSV1_0_DERIVECRED_RESPONSE* PMSV1_0_DERIVECRED_RESPONSE; diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index 48bb9826ab..3d573af8da 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -36,7 +36,7 @@ struct OLETARGETDEVICE { USHORT otdEnvironmentOffset; USHORT otdEnvironmentSize; BYTE _otdData; - BYTE* otdData() { return &_otdData; } + BYTE* otdData() return { return &_otdData; } } alias OLETARGETDEVICE* LPOLETARGETDEVICE; diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d index 6f232a3207..c89c38c78a 100644 --- a/src/core/sys/windows/setupapi.d +++ b/src/core/sys/windows/setupapi.d @@ -882,7 +882,7 @@ struct SP_INF_INFORMATION { DWORD InfStyle; DWORD InfCount; BYTE[1] _VersionData; - BYTE* VersionData() { return _VersionData.ptr; } + BYTE* VersionData() return { return _VersionData.ptr; } } alias SP_INF_INFORMATION* PSP_INF_INFORMATION; @@ -1039,14 +1039,14 @@ deprecated alias SP_DEVICE_INTERFACE_DATA* PSP_INTERFACE_DEVICE_DATA; struct SP_DEVICE_INTERFACE_DETAIL_DATA_A { DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_A.sizeof; CHAR[1] _DevicePath; - CHAR* DevicePath() { return _DevicePath.ptr; } + CHAR* DevicePath() return { return _DevicePath.ptr; } } alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA_A; struct SP_DEVICE_INTERFACE_DETAIL_DATA_W { DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_W.sizeof; WCHAR[1] _DevicePath; - WCHAR* DevicePath() { return _DevicePath.ptr; } + WCHAR* DevicePath() return { return _DevicePath.ptr; } } alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA_W; @@ -1302,7 +1302,7 @@ struct SP_DRVINFO_DETAIL_DATA_A { CHAR[MAX_PATH] InfFileName; CHAR[LINE_LEN] DrvDescription; CHAR[1] _HardwareID; - CHAR* HardwareID() { return _HardwareID.ptr; } + CHAR* HardwareID() return { return _HardwareID.ptr; } } alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA_A; @@ -1316,7 +1316,7 @@ struct SP_DRVINFO_DETAIL_DATA_W { WCHAR[MAX_PATH] InfFileName; WCHAR[LINE_LEN] DrvDescription; WCHAR[1] _HardwareID; - WCHAR* HardwareID() { return _HardwareID.ptr; } + WCHAR* HardwareID() return { return _HardwareID.ptr; } } alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA_W; diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index e22ab66e64..5312f0cb16 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -862,7 +862,7 @@ struct AVIPALCHANGE { BYTE bNumEntries; WORD wFlags; PALETTEENTRY[1] _peNew; - PALETTEENTRY* peNew() { return _peNew.ptr; } + PALETTEENTRY* peNew() return { return _peNew.ptr; } } const AVIGETFRAMEF_BESTDISPLAYFMT = 1; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index aa7162aeac..c0f3f48062 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -148,7 +148,7 @@ struct COMMPROP { DWORD dwProvSpec2; WCHAR _wcProvChar; - WCHAR* wcProvChar() { return &_wcProvChar; } + WCHAR* wcProvChar() return { return &_wcProvChar; } } alias COMMPROP* LPCOMMPROP; @@ -984,7 +984,7 @@ struct COMMCONFIG { DWORD dwProviderSize; WCHAR _wcProviderData; - WCHAR* wcProviderData() { return &_wcProviderData; } + WCHAR* wcProviderData() return { return &_wcProviderData; } } alias COMMCONFIG* LPCOMMCONFIG; @@ -1278,7 +1278,7 @@ struct WIN32_STREAM_ID { DWORD dwStreamNameSize; WCHAR _cStreamName; - WCHAR* cStreamName() { return &_cStreamName; } + WCHAR* cStreamName() return { return &_cStreamName; } } alias WIN32_STREAM_ID* LPWIN32_STREAM_ID; @@ -1500,7 +1500,7 @@ struct WIN_CERTIFICATE { WORD wCertificateType; BYTE _bCertificate; - BYTE* bCertificate() { return &_bCertificate; } + BYTE* bCertificate() return { return &_bCertificate; } } alias WIN_CERTIFICATE* LPWIN_CERTIFICATE; diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d index 6ae4b9d9cd..5f50520933 100644 --- a/src/core/sys/windows/winioctl.d +++ b/src/core/sys/windows/winioctl.d @@ -255,7 +255,7 @@ struct BIN_RESULTS { DWORD NumberOfBins; BIN_COUNT _BinCounts; - BIN_COUNT* BinCounts() { return &_BinCounts; } + BIN_COUNT* BinCounts() return { return &_BinCounts; } } alias BIN_RESULTS* PBIN_RESULTS; @@ -394,7 +394,7 @@ struct DISK_GEOMETRY_EX { LARGE_INTEGER DiskSize; BYTE _Data; - BYTE* Data() { return &_Data; } + BYTE* Data() return { return &_Data; } } alias DISK_GEOMETRY_EX* PDISK_GEOMETRY_EX; @@ -473,7 +473,7 @@ struct FORMAT_EX_PARAMETERS { WORD SectorsPerTrack; WORD _SectorNumber; - WORD* SectorNumber() { return &_SectorNumber; } + WORD* SectorNumber() return { return &_SectorNumber; } } alias FORMAT_EX_PARAMETERS* PFORMAT_EX_PARAMETERS; @@ -513,7 +513,7 @@ struct VOLUME_DISK_EXTENTS { DWORD NumberOfDiskExtents; DISK_EXTENT _Extents; - DISK_EXTENT* Extents() { return &_Extents; } + DISK_EXTENT* Extents() return { return &_Extents; } } alias VOLUME_DISK_EXTENTS* PVOLUME_DISK_EXTENTS; @@ -534,7 +534,7 @@ struct DRIVE_LAYOUT_INFORMATION { DWORD Signature; PARTITION_INFORMATION _PartitionEntry; - PARTITION_INFORMATION* PartitionEntry() { return &_PartitionEntry; } + PARTITION_INFORMATION* PartitionEntry() return { return &_PartitionEntry; } } alias DRIVE_LAYOUT_INFORMATION* PDRIVE_LAYOUT_INFORMATION; @@ -586,7 +586,7 @@ struct DRIVE_LAYOUT_INFORMATION_EX { } PARTITION_INFORMATION_EX _PartitionEntry; - PARTITION_INFORMATION_EX* PartitionEntry() { return &_PartitionEntry; } + PARTITION_INFORMATION_EX* PartitionEntry() return { return &_PartitionEntry; } } alias DRIVE_LAYOUT_INFORMATION_EX* PDRIVE_LAYOUT_INFORMATION_EX; @@ -603,7 +603,7 @@ struct PERF_BIN { DWORD TypeOfBin; BIN_RANGE _BinsRanges; - BIN_RANGE* BinsRanges() { return &_BinsRanges; } + BIN_RANGE* BinsRanges() return { return &_BinsRanges; } } alias PERF_BIN* PPERF_BIN; @@ -622,7 +622,7 @@ struct RETRIEVAL_POINTERS_BUFFER { } Extent _Extents; - Extent* Extents() { return &_Extents; } + Extent* Extents() return { return &_Extents; } } alias RETRIEVAL_POINTERS_BUFFER* PRETRIEVAL_POINTERS_BUFFER; @@ -631,7 +631,7 @@ struct REASSIGN_BLOCKS { WORD Count; DWORD _BlockNumber; - DWORD* BlockNumber() { return &_BlockNumber; } + DWORD* BlockNumber() return { return &_BlockNumber; } } alias REASSIGN_BLOCKS* PREASSIGN_BLOCKS; @@ -661,7 +661,7 @@ struct VOLUME_BITMAP_BUFFER { LARGE_INTEGER BitmapSize; BYTE _Buffer; - BYTE* Buffer() { return &_Buffer; } + BYTE* Buffer() return { return &_Buffer; } } alias VOLUME_BITMAP_BUFFER* PVOLUME_BITMAP_BUFFER; diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index de495fd781..ea8d513c5c 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -2308,7 +2308,7 @@ struct PRIVILEGE_SET { DWORD Control; LUID_AND_ATTRIBUTES _Privilege; - LUID_AND_ATTRIBUTES* Privilege() { return &_Privilege; } + LUID_AND_ATTRIBUTES* Privilege() return { return &_Privilege; } } alias PRIVILEGE_SET* PPRIVILEGE_SET; @@ -2350,7 +2350,7 @@ struct SID { SID_IDENTIFIER_AUTHORITY IdentifierAuthority; DWORD _SubAuthority; - DWORD* SubAuthority() { return &_SubAuthority; } + DWORD* SubAuthority() return { return &_SubAuthority; } } alias SID* PISID; @@ -2383,7 +2383,7 @@ struct TOKEN_GROUPS { DWORD GroupCount; SID_AND_ATTRIBUTES _Groups; - SID_AND_ATTRIBUTES* Groups() { return &_Groups; } + SID_AND_ATTRIBUTES* Groups() return { return &_Groups; } } alias TOKEN_GROUPS* PTOKEN_GROUPS, LPTOKEN_GROUPS; @@ -2401,7 +2401,7 @@ struct TOKEN_PRIVILEGES { DWORD PrivilegeCount; LUID_AND_ATTRIBUTES _Privileges; - LUID_AND_ATTRIBUTES* Privileges() { return &_Privileges; } + LUID_AND_ATTRIBUTES* Privileges() return { return &_Privileges; } } alias TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES, LPTOKEN_PRIVILEGES; @@ -2505,7 +2505,7 @@ struct FILE_NOTIFY_INFORMATION { DWORD FileNameLength; WCHAR _FileName; - WCHAR* FileName() { return &_FileName; } + WCHAR* FileName() return { return &_FileName; } } alias FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; @@ -2605,7 +2605,7 @@ struct MESSAGE_RESOURCE_ENTRY { WORD Flags; BYTE _Text; - BYTE* Text() { return &_Text; } + BYTE* Text() return { return &_Text; } } alias MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; @@ -2620,7 +2620,7 @@ struct MESSAGE_RESOURCE_DATA { DWORD NumberOfBlocks; MESSAGE_RESOURCE_BLOCK _Blocks; - MESSAGE_RESOURCE_BLOCK* Blocks() { return &_Blocks; } + MESSAGE_RESOURCE_BLOCK* Blocks() return { return &_Blocks; } } alias MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; @@ -3127,9 +3127,7 @@ struct IMAGE_IMPORT_BY_NAME { WORD Hint; BYTE _Name; - BYTE* Name() { - return &_Name; - } + BYTE* Name() return { return &_Name; } } alias IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; @@ -3255,7 +3253,7 @@ struct IMAGE_RESOURCE_DIRECTORY_STRING { WORD Length; CHAR _NameString; - CHAR* NameString() { return &_NameString; } + CHAR* NameString() return { return &_NameString; } } alias IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; @@ -3263,7 +3261,7 @@ struct IMAGE_RESOURCE_DIR_STRING_U { WORD Length; WCHAR _NameString; - WCHAR* NameString() { return &_NameString; } + WCHAR* NameString() return { return &_NameString; } } alias IMAGE_RESOURCE_DIR_STRING_U* PIMAGE_RESOURCE_DIR_STRING_U; @@ -3408,7 +3406,7 @@ struct IMAGE_DEBUG_MISC { BYTE[3] Reserved; BYTE _Data; - BYTE* Data() { return &_Data; } + BYTE* Data() return { return &_Data; } } alias IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; @@ -3498,7 +3496,7 @@ struct REPARSE_DATA_BUFFER { struct _GenericReparseBuffer { BYTE _DataBuffer; - BYTE* DataBuffer() { return &_DataBuffer; } + BYTE* DataBuffer() return { return &_DataBuffer; } } _GenericReparseBuffer GenericReparseBuffer; struct _SymbolicLinkReparseBuffer { @@ -3510,7 +3508,7 @@ struct REPARSE_DATA_BUFFER { ULONG Flags; WCHAR _PathBuffer; - WCHAR* PathBuffer() { return &_PathBuffer; } + WCHAR* PathBuffer() return { return &_PathBuffer; } } _SymbolicLinkReparseBuffer SymbolicLinkReparseBuffer; struct _MountPointReparseBuffer { @@ -3520,7 +3518,7 @@ struct REPARSE_DATA_BUFFER { WORD PrintNameLength; WCHAR _PathBuffer; - WCHAR* PathBuffer() { return &_PathBuffer; } + WCHAR* PathBuffer() return { return &_PathBuffer; } } _MountPointReparseBuffer MountPointReparseBuffer; } @@ -3535,7 +3533,7 @@ struct REPARSE_GUID_DATA_BUFFER { struct _GenericReparseBuffer { BYTE _DataBuffer; - BYTE* DataBuffer() { return &_DataBuffer; } + BYTE* DataBuffer() return { return &_DataBuffer; } } _GenericReparseBuffer GenericReparseBuffer; } @@ -3655,7 +3653,7 @@ struct JOBOBJECT_BASIC_PROCESS_ID_LIST { DWORD NumberOfProcessIdsInList; ULONG_PTR _ProcessIdList; - ULONG_PTR* ProcessIdList() { return &_ProcessIdList; } + ULONG_PTR* ProcessIdList() return { return &_ProcessIdList; } } alias JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; From 2defac94e5f0facbf61a8e99c52c3a603dbca674 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 01:59:55 +0000 Subject: [PATCH 134/768] gentests: Test for newly-deprecated symbols --- winhlp/testgen/gentests.d | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/winhlp/testgen/gentests.d b/winhlp/testgen/gentests.d index 78f3e6487c..a29ef89c0f 100644 --- a/winhlp/testgen/gentests.d +++ b/winhlp/testgen/gentests.d @@ -63,6 +63,9 @@ int main() File o = File(fn, "wb"); o.writeln("import std.format : format;"); + auto fnB = "wintest" ~ model ~ "b.d"; + File b = File(fnB, "wb"); + void typeCheck(string name, string typeA, string typeB) { o.writefln("\tstatic if(!is(%s == %s)) pragma(msg, \"%%s(%%d): Error: type of %s is:\\n%%s\\nbut should be:\\n%%s\\n\".format(__FILE__, __LINE__, %s.stringof, %s.stringof));", @@ -78,6 +81,7 @@ int main() o.writefln("struct test_%s", m.name.replace(".", "_")); o.writeln("{"); o.writefln("\tstatic import %s;", m.name); + b.writefln("\timport %s;", m.name); void handleMembers(string[] prefix, Member[] members) { @@ -87,6 +91,7 @@ int main() auto qname = (prefix ~ d.name).join("."); auto lname = qname.replace(".", "_"); o.writefln("\talias %s = %s.%s;", lname, (m.name ~ prefix).join("."), d.name); // check existence + b.writefln("\talias local_%s = %s;", lname, qname); if (qname in exclusions) o.writeln("/+"); switch (d.kind) { @@ -146,8 +151,9 @@ int main() } o.close(); + b.close(); - if (spawnProcess(["dmd", "-m" ~ model, "-I../../src", "-o-", fn]).wait() != 0) + if (spawnProcess(["dmd", "-m" ~ model, "-I../../src", "-o-", fn, fnB]).wait() != 0) return 1; } return 0; From 81eb1b7131670a23d3e8e27fdc75ed0efe68c3ec Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 02:00:18 +0000 Subject: [PATCH 135/768] winreg: Remove deprecations --- src/core/sys/windows/winreg.d | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index fe47589470..e6c84eb5ee 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -166,7 +166,7 @@ extern (Windows) nothrow @nogc { DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); } - deprecated { + //deprecated { LONG RegCreateKeyA(in HKEY, LPCSTR, PHKEY); LONG RegCreateKeyW(in HKEY, LPCWSTR, PHKEY); LONG RegEnumKeyA(in HKEY, DWORD, LPSTR, DWORD); @@ -177,7 +177,7 @@ extern (Windows) nothrow @nogc { LONG RegQueryValueW(in HKEY, LPCWSTR, LPWSTR, PLONG); LONG RegSetValueA(in HKEY, LPCSTR, DWORD, LPCSTR, DWORD); LONG RegSetValueW(in HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); - } + //} } version (Unicode) { @@ -207,13 +207,13 @@ version (Unicode) { static if (_WIN32_WINNT >= 0x600) { alias RegGetValueW RegGetValue; } - deprecated { + //deprecated { alias RegCreateKeyW RegCreateKey; alias RegEnumKeyW RegEnumKey; alias RegOpenKeyW RegOpenKey; alias RegQueryValueW RegQueryValue; alias RegSetValueW RegSetValue; - } + //} } else { alias VALENTA VALENT; alias RegConnectRegistryA RegConnectRegistry; @@ -240,13 +240,13 @@ version (Unicode) { static if (_WIN32_WINNT >= 0x600) { alias RegGetValueA RegGetValue; } - deprecated { + //deprecated { alias RegCreateKeyA RegCreateKey; alias RegEnumKeyA RegEnumKey; alias RegOpenKeyA RegOpenKey; alias RegQueryValueA RegQueryValue; alias RegSetValueA RegSetValue; - } + //} } alias VALENT* PVALENT; From 136ff8cd0c8ec300e9e1d177a94b336cf526d9ff Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 4 Oct 2015 02:07:35 +0000 Subject: [PATCH 136/768] Prefix all Windows modules' code with version(Windows) --- src/core/sys/windows/accctrl.d | 1 + src/core/sys/windows/aclapi.d | 1 + src/core/sys/windows/aclui.d | 1 + src/core/sys/windows/basetsd.d | 1 + src/core/sys/windows/basetyps.d | 1 + src/core/sys/windows/cderr.d | 1 + src/core/sys/windows/cguid.d | 1 + src/core/sys/windows/comcat.d | 1 + src/core/sys/windows/commctrl.d | 1 + src/core/sys/windows/commdlg.d | 1 + src/core/sys/windows/core.d | 1 + src/core/sys/windows/cpl.d | 1 + src/core/sys/windows/cplext.d | 1 + src/core/sys/windows/custcntl.d | 1 + src/core/sys/windows/dbghelp.d | 3 +- src/core/sys/windows/dbghelp_types.d | 3 - src/core/sys/windows/dbt.d | 1 + src/core/sys/windows/dde.d | 1 + src/core/sys/windows/ddeml.d | 1 + src/core/sys/windows/dhcpcsdk.d | 1 + src/core/sys/windows/dlgs.d | 1 + src/core/sys/windows/dll.d | 821 +++++++++++++-------------- src/core/sys/windows/docobj.d | 1 + src/core/sys/windows/errorrep.d | 1 + src/core/sys/windows/exdisp.d | 1 + src/core/sys/windows/exdispid.d | 1 + src/core/sys/windows/httpext.d | 1 + src/core/sys/windows/idispids.d | 1 + src/core/sys/windows/imagehlp.d | 1 + src/core/sys/windows/imm.d | 1 + src/core/sys/windows/intshcut.d | 1 + src/core/sys/windows/ipexport.d | 1 + src/core/sys/windows/iphlpapi.d | 1 + src/core/sys/windows/ipifcons.d | 1 + src/core/sys/windows/iprtrmib.d | 1 + src/core/sys/windows/iptypes.d | 1 + src/core/sys/windows/isguids.d | 1 + src/core/sys/windows/lm.d | 1 + src/core/sys/windows/lmaccess.d | 1 + src/core/sys/windows/lmalert.d | 1 + src/core/sys/windows/lmapibuf.d | 1 + src/core/sys/windows/lmat.d | 1 + src/core/sys/windows/lmaudit.d | 1 + src/core/sys/windows/lmbrowsr.d | 1 + src/core/sys/windows/lmchdev.d | 1 + src/core/sys/windows/lmconfig.d | 1 + src/core/sys/windows/lmcons.d | 1 + src/core/sys/windows/lmerr.d | 1 + src/core/sys/windows/lmerrlog.d | 1 + src/core/sys/windows/lmmsg.d | 1 + src/core/sys/windows/lmremutl.d | 1 + src/core/sys/windows/lmrepl.d | 1 + src/core/sys/windows/lmserver.d | 1 + src/core/sys/windows/lmshare.d | 1 + src/core/sys/windows/lmsname.d | 1 + src/core/sys/windows/lmstats.d | 1 + src/core/sys/windows/lmsvc.d | 1 + src/core/sys/windows/lmuse.d | 1 + src/core/sys/windows/lmuseflg.d | 1 + src/core/sys/windows/lmwksta.d | 1 + src/core/sys/windows/lzexpand.d | 1 + src/core/sys/windows/mapi.d | 1 + src/core/sys/windows/mciavi.d | 1 + src/core/sys/windows/mcx.d | 1 + src/core/sys/windows/mgmtapi.d | 1 + src/core/sys/windows/mmsystem.d | 1 + src/core/sys/windows/msacm.d | 1 + src/core/sys/windows/mshtml.d | 1 + src/core/sys/windows/mswsock.d | 1 + src/core/sys/windows/nb30.d | 1 + src/core/sys/windows/nddeapi.d | 1 + src/core/sys/windows/nspapi.d | 1 + src/core/sys/windows/ntdef.d | 1 + src/core/sys/windows/ntdll.d | 1 + src/core/sys/windows/ntldap.d | 1 + src/core/sys/windows/ntsecapi.d | 1 + src/core/sys/windows/ntsecpkg.d | 1 + src/core/sys/windows/oaidl.d | 1 + src/core/sys/windows/objbase.d | 1 + src/core/sys/windows/objfwd.d | 1 + src/core/sys/windows/objidl.d | 1 + src/core/sys/windows/objsafe.d | 1 + src/core/sys/windows/ocidl.d | 1 + src/core/sys/windows/odbcinst.d | 1 + src/core/sys/windows/ole.d | 1 + src/core/sys/windows/ole2.d | 1 + src/core/sys/windows/ole2ver.d | 1 + src/core/sys/windows/oleacc.d | 1 + src/core/sys/windows/oleauto.d | 1 + src/core/sys/windows/olectl.d | 1 + src/core/sys/windows/olectlid.d | 1 + src/core/sys/windows/oledlg.d | 1 + src/core/sys/windows/oleidl.d | 1 + src/core/sys/windows/pbt.d | 1 + src/core/sys/windows/powrprof.d | 1 + src/core/sys/windows/prsht.d | 1 + src/core/sys/windows/psapi.d | 1 + src/core/sys/windows/rapi.d | 1 + src/core/sys/windows/ras.d | 1 + src/core/sys/windows/rasdlg.d | 1 + src/core/sys/windows/raserror.d | 1 + src/core/sys/windows/rassapi.d | 1 + src/core/sys/windows/reason.d | 1 + src/core/sys/windows/regstr.d | 1 + src/core/sys/windows/richedit.d | 1 + src/core/sys/windows/richole.d | 1 + src/core/sys/windows/rpc.d | 1 + src/core/sys/windows/rpcdce.d | 1 + src/core/sys/windows/rpcdce2.d | 1 + src/core/sys/windows/rpcdcep.d | 1 + src/core/sys/windows/rpcndr.d | 1 + src/core/sys/windows/rpcnsi.d | 1 + src/core/sys/windows/rpcnsip.d | 1 + src/core/sys/windows/rpcnterr.d | 1 + src/core/sys/windows/schannel.d | 1 + src/core/sys/windows/secext.d | 1 + src/core/sys/windows/security.d | 1 + src/core/sys/windows/servprov.d | 1 + src/core/sys/windows/setupapi.d | 1 + src/core/sys/windows/shellapi.d | 1 + src/core/sys/windows/shldisp.d | 1 + src/core/sys/windows/shlguid.d | 1 + src/core/sys/windows/shlobj.d | 1 + src/core/sys/windows/shlwapi.d | 1 + src/core/sys/windows/snmp.d | 1 + src/core/sys/windows/sql.d | 1 + src/core/sys/windows/sqlext.d | 1 + src/core/sys/windows/sqltypes.d | 1 + src/core/sys/windows/sqlucode.d | 1 + src/core/sys/windows/sspi.d | 1 + src/core/sys/windows/stacktrace.d | 2 +- src/core/sys/windows/subauth.d | 1 + src/core/sys/windows/threadaux.d | 534 +++++++++-------- src/core/sys/windows/tlhelp32.d | 1 + src/core/sys/windows/tmschema.d | 1 + src/core/sys/windows/unknwn.d | 1 + src/core/sys/windows/uuid.d | 1 + src/core/sys/windows/vfw.d | 1 + src/core/sys/windows/w32api.d | 1 + src/core/sys/windows/winbase.d | 1 + src/core/sys/windows/winber.d | 1 + src/core/sys/windows/wincon.d | 1 + src/core/sys/windows/wincrypt.d | 1 + src/core/sys/windows/windef.d | 1 + src/core/sys/windows/windows.d | 1 + src/core/sys/windows/winerror.d | 1 + src/core/sys/windows/wingdi.d | 1 + src/core/sys/windows/winhttp.d | 1 + src/core/sys/windows/wininet.d | 1 + src/core/sys/windows/winioctl.d | 1 + src/core/sys/windows/winldap.d | 1 + src/core/sys/windows/winnetwk.d | 1 + src/core/sys/windows/winnls.d | 1 + src/core/sys/windows/winnt.d | 1 + src/core/sys/windows/winperf.d | 1 + src/core/sys/windows/winreg.d | 1 + src/core/sys/windows/winspool.d | 1 + src/core/sys/windows/winsvc.d | 1 + src/core/sys/windows/winuser.d | 1 + src/core/sys/windows/winver.d | 1 + src/core/sys/windows/wtsapi32.d | 1 + src/core/sys/windows/wtypes.d | 1 + 162 files changed, 835 insertions(+), 685 deletions(-) diff --git a/src/core/sys/windows/accctrl.d b/src/core/sys/windows/accctrl.d index 2c36d9b9bf..2157830069 100644 --- a/src/core/sys/windows/accctrl.d +++ b/src/core/sys/windows/accctrl.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_accctrl.d) */ module core.sys.windows.accctrl; +version (Windows): private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/aclapi.d b/src/core/sys/windows/aclapi.d index 5ee322bd87..d94a0808db 100644 --- a/src/core/sys/windows/aclapi.d +++ b/src/core/sys/windows/aclapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_aclapi.d) */ module core.sys.windows.aclapi; +version (Windows): pragma(lib, "advapi32"); import core.sys.windows.windows, core.sys.windows.accctrl; diff --git a/src/core/sys/windows/aclui.d b/src/core/sys/windows/aclui.d index 0b97451f6f..f58bf86ddb 100644 --- a/src/core/sys/windows/aclui.d +++ b/src/core/sys/windows/aclui.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_aclui.d) */ module core.sys.windows.aclui; +version (Windows): pragma(lib, "aclui"); private import core.sys.windows.w32api; diff --git a/src/core/sys/windows/basetsd.d b/src/core/sys/windows/basetsd.d index dc8407a04d..fe8dc5ce92 100644 --- a/src/core/sys/windows/basetsd.d +++ b/src/core/sys/windows/basetsd.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_basetsd.d) */ module core.sys.windows.basetsd; +version (Windows): /* This template is used in these modules to declare constant pointer types, * in order to support both D 1.x and 2.x. diff --git a/src/core/sys/windows/basetyps.d b/src/core/sys/windows/basetyps.d index 1cbf28da58..5ab6528e3b 100644 --- a/src/core/sys/windows/basetyps.d +++ b/src/core/sys/windows/basetyps.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_basetyps.d) */ module core.sys.windows.basetyps; +version (Windows): private import core.sys.windows.windef, core.sys.windows.basetsd; diff --git a/src/core/sys/windows/cderr.d b/src/core/sys/windows/cderr.d index c81ae750a0..e049a9dd9c 100644 --- a/src/core/sys/windows/cderr.d +++ b/src/core/sys/windows/cderr.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_cderr.d) */ module core.sys.windows.cderr; +version (Windows): enum { CDERR_DIALOGFAILURE = 0xFFFF, diff --git a/src/core/sys/windows/cguid.d b/src/core/sys/windows/cguid.d index e2007a6edd..82f36c8a13 100644 --- a/src/core/sys/windows/cguid.d +++ b/src/core/sys/windows/cguid.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_cguid.d) */ module core.sys.windows.cguid; +version (Windows): private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/comcat.d b/src/core/sys/windows/comcat.d index 419eb509f0..8e1dc5ba21 100644 --- a/src/core/sys/windows/comcat.d +++ b/src/core/sys/windows/comcat.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_comcat.d) */ module core.sys.windows.comcat; +version (Windows): import core.sys.windows.windows, core.sys.windows.ole2; private import core.sys.windows.basetyps, core.sys.windows.cguid, core.sys.windows.objbase, core.sys.windows.unknwn, diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index ad104fd4ce..11540a8bd8 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_commctrl.d) */ module core.sys.windows.commctrl; +version (Windows): pragma(lib, "comctl32"); private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index c476454ff5..4675dd1e75 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_commdlg.d) */ module core.sys.windows.commdlg; +version (Windows): pragma(lib, "comdlg32"); private import core.sys.windows.w32api; diff --git a/src/core/sys/windows/core.d b/src/core/sys/windows/core.d index 74e3f8ca68..e821dfae6d 100644 --- a/src/core/sys/windows/core.d +++ b/src/core/sys/windows/core.d @@ -5,6 +5,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_core.d) */ module core.sys.windows.core; +version (Windows): /** The core Windows API functions. diff --git a/src/core/sys/windows/cpl.d b/src/core/sys/windows/cpl.d index 7131fec51a..80be01cea2 100644 --- a/src/core/sys/windows/cpl.d +++ b/src/core/sys/windows/cpl.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_cpl.d) */ module core.sys.windows.cpl; +version (Windows): private import core.sys.windows.windef, core.sys.windows.winuser; diff --git a/src/core/sys/windows/cplext.d b/src/core/sys/windows/cplext.d index baf5707362..85d6a4b0c4 100644 --- a/src/core/sys/windows/cplext.d +++ b/src/core/sys/windows/cplext.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_cplext.d) */ module core.sys.windows.cplext; +version (Windows): enum : uint { CPLPAGE_MOUSE_BUTTONS = 1, diff --git a/src/core/sys/windows/custcntl.d b/src/core/sys/windows/custcntl.d index 573d2d5fa0..9dd7808022 100644 --- a/src/core/sys/windows/custcntl.d +++ b/src/core/sys/windows/custcntl.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_custcntl.d) */ module core.sys.windows.custcntl; +version (Windows): private import core.sys.windows.windef; diff --git a/src/core/sys/windows/dbghelp.d b/src/core/sys/windows/dbghelp.d index b295c1e6f5..e8c95bb81c 100644 --- a/src/core/sys/windows/dbghelp.d +++ b/src/core/sys/windows/dbghelp.d @@ -10,13 +10,12 @@ */ module core.sys.windows.dbghelp; +version (Windows): import core.sys.windows.windows; public import core.sys.windows.dbghelp_types; -version (Windows): - extern(System) { alias BOOL function(HANDLE hProcess, DWORD64 lpBaseAddress, PVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead) ReadProcessMemoryProc64; diff --git a/src/core/sys/windows/dbghelp_types.d b/src/core/sys/windows/dbghelp_types.d index a0c41050b4..4ac047aab5 100644 --- a/src/core/sys/windows/dbghelp_types.d +++ b/src/core/sys/windows/dbghelp_types.d @@ -10,9 +10,6 @@ */ module core.sys.windows.dbghelp_types; - -import core.sys.windows.windows; - version (Windows): import core.sys.windows.windows; diff --git a/src/core/sys/windows/dbt.d b/src/core/sys/windows/dbt.d index d5ec29e518..f73bce5562 100644 --- a/src/core/sys/windows/dbt.d +++ b/src/core/sys/windows/dbt.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_dbt.d) */ module core.sys.windows.dbt; +version (Windows): import core.sys.windows.w32api, core.sys.windows.windef; import core.sys.windows.basetyps; // for GUID diff --git a/src/core/sys/windows/dde.d b/src/core/sys/windows/dde.d index cedff020a4..262f16c94b 100644 --- a/src/core/sys/windows/dde.d +++ b/src/core/sys/windows/dde.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_dde.d) */ module core.sys.windows.dde; +version (Windows): pragma(lib, "user32"); private import core.sys.windows.windef; diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index c90c5f69da..7e3ac36462 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ddeml.d) */ module core.sys.windows.ddeml; +version (Windows): pragma(lib, "user32"); private import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winnt; diff --git a/src/core/sys/windows/dhcpcsdk.d b/src/core/sys/windows/dhcpcsdk.d index 92a90b415f..e4ef566641 100644 --- a/src/core/sys/windows/dhcpcsdk.d +++ b/src/core/sys/windows/dhcpcsdk.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_dhcpcsdk.d) */ module core.sys.windows.dhcpcsdk; +version (Windows): private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/dlgs.d b/src/core/sys/windows/dlgs.d index 30bfd22349..f3d0a53050 100644 --- a/src/core/sys/windows/dlgs.d +++ b/src/core/sys/windows/dlgs.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_dlgs.d) */ module core.sys.windows.dlgs; +version (Windows): private import core.sys.windows.windef; diff --git a/src/core/sys/windows/dll.d b/src/core/sys/windows/dll.d index 99ba4286e8..59babbce9e 100644 --- a/src/core/sys/windows/dll.d +++ b/src/core/sys/windows/dll.d @@ -10,493 +10,492 @@ */ module core.sys.windows.dll; +version (Windows): -version( Windows ) -{ - import core.sys.windows.windows; - import core.stdc.string; - import core.runtime; +import core.sys.windows.windows; +import core.stdc.string; +import core.runtime; - public import core.sys.windows.threadaux; +public import core.sys.windows.threadaux; - /////////////////////////////////////////////////////////////////// - // support fixing implicit TLS for dynamically loaded DLLs on Windows XP +/////////////////////////////////////////////////////////////////// +// support fixing implicit TLS for dynamically loaded DLLs on Windows XP - // in this special case, we have to treat _tlsstart and _tlsend as non-TLS variables - // as they are used to simulate TLS when it is not set up under XP. In this case we must - // not access tls_array[tls_index] as needed for thread local _tlsstart and _tlsend - extern (C) +// in this special case, we have to treat _tlsstart and _tlsend as non-TLS variables +// as they are used to simulate TLS when it is not set up under XP. In this case we must +// not access tls_array[tls_index] as needed for thread local _tlsstart and _tlsend +extern (C) +{ + version (Win32) { - version (Win32) + version(CRuntime_DigitalMars) { - version(CRuntime_DigitalMars) - { - extern __gshared byte _tlsstart; - extern __gshared byte _tlsend; - extern __gshared void* _tls_callbacks_a; - } - else version(CRuntime_Microsoft) - { - extern __gshared byte _tls_start; - extern __gshared byte _tls_end; - extern __gshared void* __xl_a; - alias _tls_start _tlsstart; - alias _tls_end _tlsend; - alias __xl_a _tls_callbacks_a; - } - extern __gshared int _tls_index; + extern __gshared byte _tlsstart; + extern __gshared byte _tlsend; + extern __gshared void* _tls_callbacks_a; } + else version(CRuntime_Microsoft) + { + extern __gshared byte _tls_start; + extern __gshared byte _tls_end; + extern __gshared void* __xl_a; + alias _tls_start _tlsstart; + alias _tls_end _tlsend; + alias __xl_a _tls_callbacks_a; + } + extern __gshared int _tls_index; } +} - extern (C) // rt.minfo - { - void rt_moduleTlsCtor(); - void rt_moduleTlsDtor(); - } +extern (C) // rt.minfo +{ + void rt_moduleTlsCtor(); + void rt_moduleTlsDtor(); +} private: - version (Win32) - { - struct dll_aux +version (Win32) +{ +struct dll_aux +{ + // don't let symbols leak into other modules + struct LdrpTlsListEntry { - // don't let symbols leak into other modules - struct LdrpTlsListEntry - { - LdrpTlsListEntry* next; - LdrpTlsListEntry* prev; - void* tlsstart; - void* tlsend; - void* ptr_tlsindex; - void* callbacks; - void* zerofill; - int tlsindex; - } + LdrpTlsListEntry* next; + LdrpTlsListEntry* prev; + void* tlsstart; + void* tlsend; + void* ptr_tlsindex; + void* callbacks; + void* zerofill; + int tlsindex; + } - alias fnRtlAllocateHeap = extern(Windows) - void* function(void* HeapHandle, uint Flags, size_t Size) nothrow; + alias fnRtlAllocateHeap = extern(Windows) + void* function(void* HeapHandle, uint Flags, size_t Size) nothrow; - // find a code sequence and return the address after the sequence - static void* findCodeSequence( void* adr, int len, ref ubyte[] pattern ) nothrow - { - if( !adr ) - return null; - - ubyte* code = cast(ubyte*) adr; - for( int p = 0; p < len; p++ ) - { - if( code[ p .. p + pattern.length ] == pattern[ 0 .. $ ] ) - { - ubyte* padr = code + p + pattern.length; - return padr; - } - } + // find a code sequence and return the address after the sequence + static void* findCodeSequence( void* adr, int len, ref ubyte[] pattern ) nothrow + { + if( !adr ) return null; - } - // find a code sequence and return the (relative) address that follows - static void* findCodeReference( void* adr, int len, ref ubyte[] pattern, bool relative ) nothrow + ubyte* code = cast(ubyte*) adr; + for( int p = 0; p < len; p++ ) { - if( !adr ) - return null; - - ubyte* padr = cast(ubyte*) findCodeSequence( adr, len, pattern ); - if( padr ) + if( code[ p .. p + pattern.length ] == pattern[ 0 .. $ ] ) { - if( relative ) - return padr + 4 + *cast(int*) padr; - return *cast(void**) padr; + ubyte* padr = code + p + pattern.length; + return padr; } - return null; } + return null; + } - // crawl through ntdll to find function _LdrpAllocateTls@0 and references - // to _LdrpNumberOfTlsEntries, _NtdllBaseTag and _LdrpTlsList - // LdrInitializeThunk - // -> _LdrpInitialize@12 - // -> _LdrpInitializeThread@4 - // -> _LdrpAllocateTls@0 - // -> je chunk - // _LdrpNumberOfTlsEntries - number of entries in TlsList - // _NtdllBaseTag - tag used for RtlAllocateHeap - // _LdrpTlsList - root of the double linked list with TlsList entries - - static __gshared int* pNtdllBaseTag; // remembered for reusage in addTlsData - - static __gshared ubyte[] jmp_LdrpInitialize = [ 0x33, 0xED, 0xE9 ]; // xor ebp,ebp; jmp _LdrpInitialize - static __gshared ubyte[] jmp__LdrpInitialize = [ 0x5D, 0xE9 ]; // pop ebp; jmp __LdrpInitialize - static __gshared ubyte[] jmp__LdrpInitialize_xp64 = [ 0x5D, 0x90, 0x90, 0x90, 0x90, 0x90 ]; // pop ebp; nop; nop; nop; nop; nop; - static __gshared ubyte[] call_LdrpInitializeThread = [ 0xFF, 0x75, 0x08, 0xE8 ]; // push [ebp+8]; call _LdrpInitializeThread - static __gshared ubyte[] call_LdrpAllocateTls = [ 0x00, 0x00, 0xE8 ]; // jne 0xc3; call _LdrpAllocateTls - static __gshared ubyte[] call_LdrpAllocateTls_svr03 = [ 0x65, 0xfc, 0x00, 0xE8 ]; // and [ebp+fc], 0; call _LdrpAllocateTls - static __gshared ubyte[] jne_LdrpAllocateTls = [ 0x0f, 0x85 ]; // jne body_LdrpAllocateTls - static __gshared ubyte[] mov_LdrpNumberOfTlsEntries = [ 0x8B, 0x0D ]; // mov ecx, _LdrpNumberOfTlsEntries - static __gshared ubyte[] mov_NtdllBaseTag = [ 0x51, 0x8B, 0x0D ]; // push ecx; mov ecx, _NtdllBaseTag - static __gshared ubyte[] mov_NtdllBaseTag_srv03 = [ 0x50, 0xA1 ]; // push eax; mov eax, _NtdllBaseTag - static __gshared ubyte[] mov_LdrpTlsList = [ 0x8B, 0x3D ]; // mov edi, _LdrpTlsList - - static LdrpTlsListEntry* addTlsListEntry( void** peb, void* tlsstart, void* tlsend, void* tls_callbacks_a, int* tlsindex ) nothrow - { - HANDLE hnd = GetModuleHandleA( "NTDLL" ); - assert( hnd, "cannot get module handle for ntdll" ); - ubyte* fn = cast(ubyte*) GetProcAddress( hnd, "LdrInitializeThunk" ); - assert( fn, "cannot find LdrInitializeThunk in ntdll" ); - - void* pLdrpInitialize = findCodeReference( fn, 20, jmp_LdrpInitialize, true ); - void* p_LdrpInitialize = findCodeReference( pLdrpInitialize, 40, jmp__LdrpInitialize, true ); - if( !p_LdrpInitialize ) - p_LdrpInitialize = findCodeSequence( pLdrpInitialize, 40, jmp__LdrpInitialize_xp64 ); - void* pLdrpInitializeThread = findCodeReference( p_LdrpInitialize, 200, call_LdrpInitializeThread, true ); - void* pLdrpAllocateTls = findCodeReference( pLdrpInitializeThread, 40, call_LdrpAllocateTls, true ); - if(!pLdrpAllocateTls) - pLdrpAllocateTls = findCodeReference( pLdrpInitializeThread, 100, call_LdrpAllocateTls_svr03, true ); - void* pBodyAllocateTls = findCodeReference( pLdrpAllocateTls, 40, jne_LdrpAllocateTls, true ); - - int* pLdrpNumberOfTlsEntries = cast(int*) findCodeReference( pBodyAllocateTls, 60, mov_LdrpNumberOfTlsEntries, false ); - pNtdllBaseTag = cast(int*) findCodeReference( pBodyAllocateTls, 30, mov_NtdllBaseTag, false ); - if(!pNtdllBaseTag) - pNtdllBaseTag = cast(int*) findCodeReference( pBodyAllocateTls, 30, mov_NtdllBaseTag_srv03, false ); - LdrpTlsListEntry* pLdrpTlsList = cast(LdrpTlsListEntry*)findCodeReference( pBodyAllocateTls, 80, mov_LdrpTlsList, false ); - - if( !pLdrpNumberOfTlsEntries || !pNtdllBaseTag || !pLdrpTlsList ) - return null; - - fnRtlAllocateHeap fnAlloc = cast(fnRtlAllocateHeap) GetProcAddress( hnd, "RtlAllocateHeap" ); - if( !fnAlloc ) - return null; - - // allocate new TlsList entry (adding 0xC0000 to the tag is obviously a flag also usesd by - // the nt-loader, could be the result of HEAP_MAKE_TAG_FLAGS(0,HEAP_NO_SERIALIZE|HEAP_GROWABLE) - // but this is not documented in the msdn entry for RtlAlloateHeap - void* heap = peb[6]; - LdrpTlsListEntry* entry = cast(LdrpTlsListEntry*) (*fnAlloc)( heap, *pNtdllBaseTag | 0xc0000, LdrpTlsListEntry.sizeof ); - if( !entry ) - return null; - - // fill entry - entry.tlsstart = tlsstart; - entry.tlsend = tlsend; - entry.ptr_tlsindex = tlsindex; - entry.callbacks = tls_callbacks_a; - entry.zerofill = null; - entry.tlsindex = *pLdrpNumberOfTlsEntries; - - // and add it to the end of TlsList - *tlsindex = *pLdrpNumberOfTlsEntries; - entry.next = pLdrpTlsList; - entry.prev = pLdrpTlsList.prev; - pLdrpTlsList.prev.next = entry; - pLdrpTlsList.prev = entry; - (*pLdrpNumberOfTlsEntries)++; - - return entry; - } + // find a code sequence and return the (relative) address that follows + static void* findCodeReference( void* adr, int len, ref ubyte[] pattern, bool relative ) nothrow + { + if( !adr ) + return null; - // reallocate TLS array and create a copy of the TLS data section - static bool addTlsData( void** teb, void* tlsstart, void* tlsend, int tlsindex ) nothrow + ubyte* padr = cast(ubyte*) findCodeSequence( adr, len, pattern ); + if( padr ) { - HANDLE hnd = GetModuleHandleA( "NTDLL" ); - assert( hnd, "cannot get module handle for ntdll" ); + if( relative ) + return padr + 4 + *cast(int*) padr; + return *cast(void**) padr; + } + return null; + } - fnRtlAllocateHeap fnAlloc = cast(fnRtlAllocateHeap) GetProcAddress( hnd, "RtlAllocateHeap" ); - if( !fnAlloc || !pNtdllBaseTag ) - return false; + // crawl through ntdll to find function _LdrpAllocateTls@0 and references + // to _LdrpNumberOfTlsEntries, _NtdllBaseTag and _LdrpTlsList + // LdrInitializeThunk + // -> _LdrpInitialize@12 + // -> _LdrpInitializeThread@4 + // -> _LdrpAllocateTls@0 + // -> je chunk + // _LdrpNumberOfTlsEntries - number of entries in TlsList + // _NtdllBaseTag - tag used for RtlAllocateHeap + // _LdrpTlsList - root of the double linked list with TlsList entries + + static __gshared int* pNtdllBaseTag; // remembered for reusage in addTlsData + + static __gshared ubyte[] jmp_LdrpInitialize = [ 0x33, 0xED, 0xE9 ]; // xor ebp,ebp; jmp _LdrpInitialize + static __gshared ubyte[] jmp__LdrpInitialize = [ 0x5D, 0xE9 ]; // pop ebp; jmp __LdrpInitialize + static __gshared ubyte[] jmp__LdrpInitialize_xp64 = [ 0x5D, 0x90, 0x90, 0x90, 0x90, 0x90 ]; // pop ebp; nop; nop; nop; nop; nop; + static __gshared ubyte[] call_LdrpInitializeThread = [ 0xFF, 0x75, 0x08, 0xE8 ]; // push [ebp+8]; call _LdrpInitializeThread + static __gshared ubyte[] call_LdrpAllocateTls = [ 0x00, 0x00, 0xE8 ]; // jne 0xc3; call _LdrpAllocateTls + static __gshared ubyte[] call_LdrpAllocateTls_svr03 = [ 0x65, 0xfc, 0x00, 0xE8 ]; // and [ebp+fc], 0; call _LdrpAllocateTls + static __gshared ubyte[] jne_LdrpAllocateTls = [ 0x0f, 0x85 ]; // jne body_LdrpAllocateTls + static __gshared ubyte[] mov_LdrpNumberOfTlsEntries = [ 0x8B, 0x0D ]; // mov ecx, _LdrpNumberOfTlsEntries + static __gshared ubyte[] mov_NtdllBaseTag = [ 0x51, 0x8B, 0x0D ]; // push ecx; mov ecx, _NtdllBaseTag + static __gshared ubyte[] mov_NtdllBaseTag_srv03 = [ 0x50, 0xA1 ]; // push eax; mov eax, _NtdllBaseTag + static __gshared ubyte[] mov_LdrpTlsList = [ 0x8B, 0x3D ]; // mov edi, _LdrpTlsList + + static LdrpTlsListEntry* addTlsListEntry( void** peb, void* tlsstart, void* tlsend, void* tls_callbacks_a, int* tlsindex ) nothrow + { + HANDLE hnd = GetModuleHandleA( "NTDLL" ); + assert( hnd, "cannot get module handle for ntdll" ); + ubyte* fn = cast(ubyte*) GetProcAddress( hnd, "LdrInitializeThunk" ); + assert( fn, "cannot find LdrInitializeThunk in ntdll" ); + + void* pLdrpInitialize = findCodeReference( fn, 20, jmp_LdrpInitialize, true ); + void* p_LdrpInitialize = findCodeReference( pLdrpInitialize, 40, jmp__LdrpInitialize, true ); + if( !p_LdrpInitialize ) + p_LdrpInitialize = findCodeSequence( pLdrpInitialize, 40, jmp__LdrpInitialize_xp64 ); + void* pLdrpInitializeThread = findCodeReference( p_LdrpInitialize, 200, call_LdrpInitializeThread, true ); + void* pLdrpAllocateTls = findCodeReference( pLdrpInitializeThread, 40, call_LdrpAllocateTls, true ); + if(!pLdrpAllocateTls) + pLdrpAllocateTls = findCodeReference( pLdrpInitializeThread, 100, call_LdrpAllocateTls_svr03, true ); + void* pBodyAllocateTls = findCodeReference( pLdrpAllocateTls, 40, jne_LdrpAllocateTls, true ); + + int* pLdrpNumberOfTlsEntries = cast(int*) findCodeReference( pBodyAllocateTls, 60, mov_LdrpNumberOfTlsEntries, false ); + pNtdllBaseTag = cast(int*) findCodeReference( pBodyAllocateTls, 30, mov_NtdllBaseTag, false ); + if(!pNtdllBaseTag) + pNtdllBaseTag = cast(int*) findCodeReference( pBodyAllocateTls, 30, mov_NtdllBaseTag_srv03, false ); + LdrpTlsListEntry* pLdrpTlsList = cast(LdrpTlsListEntry*)findCodeReference( pBodyAllocateTls, 80, mov_LdrpTlsList, false ); + + if( !pLdrpNumberOfTlsEntries || !pNtdllBaseTag || !pLdrpTlsList ) + return null; - void** peb = cast(void**) teb[12]; - void* heap = peb[6]; + fnRtlAllocateHeap fnAlloc = cast(fnRtlAllocateHeap) GetProcAddress( hnd, "RtlAllocateHeap" ); + if( !fnAlloc ) + return null; - auto sz = tlsend - tlsstart; - void* tlsdata = cast(void*) (*fnAlloc)( heap, *pNtdllBaseTag | 0xc0000, sz ); - if( !tlsdata ) - return false; + // allocate new TlsList entry (adding 0xC0000 to the tag is obviously a flag also usesd by + // the nt-loader, could be the result of HEAP_MAKE_TAG_FLAGS(0,HEAP_NO_SERIALIZE|HEAP_GROWABLE) + // but this is not documented in the msdn entry for RtlAlloateHeap + void* heap = peb[6]; + LdrpTlsListEntry* entry = cast(LdrpTlsListEntry*) (*fnAlloc)( heap, *pNtdllBaseTag | 0xc0000, LdrpTlsListEntry.sizeof ); + if( !entry ) + return null; - // no relocations! not even self-relocations. Windows does not do them. - core.stdc.string.memcpy( tlsdata, tlsstart, sz ); + // fill entry + entry.tlsstart = tlsstart; + entry.tlsend = tlsend; + entry.ptr_tlsindex = tlsindex; + entry.callbacks = tls_callbacks_a; + entry.zerofill = null; + entry.tlsindex = *pLdrpNumberOfTlsEntries; + + // and add it to the end of TlsList + *tlsindex = *pLdrpNumberOfTlsEntries; + entry.next = pLdrpTlsList; + entry.prev = pLdrpTlsList.prev; + pLdrpTlsList.prev.next = entry; + pLdrpTlsList.prev = entry; + (*pLdrpNumberOfTlsEntries)++; + + return entry; + } - // create copy of tls pointer array - void** array = cast(void**) (*fnAlloc)( heap, *pNtdllBaseTag | 0xc0000, (tlsindex + 1) * (void*).sizeof ); - if( !array ) - return false; + // reallocate TLS array and create a copy of the TLS data section + static bool addTlsData( void** teb, void* tlsstart, void* tlsend, int tlsindex ) nothrow + { + HANDLE hnd = GetModuleHandleA( "NTDLL" ); + assert( hnd, "cannot get module handle for ntdll" ); - if( tlsindex > 0 && teb[11] ) - core.stdc.string.memcpy( array, teb[11], tlsindex * (void*).sizeof); - array[tlsindex] = tlsdata; - teb[11] = cast(void*) array; + fnRtlAllocateHeap fnAlloc = cast(fnRtlAllocateHeap) GetProcAddress( hnd, "RtlAllocateHeap" ); + if( !fnAlloc || !pNtdllBaseTag ) + return false; - // let the old array leak, in case a oncurrent thread is still relying on it - return true; - } + void** peb = cast(void**) teb[12]; + void* heap = peb[6]; - alias bool BOOLEAN; + auto sz = tlsend - tlsstart; + void* tlsdata = cast(void*) (*fnAlloc)( heap, *pNtdllBaseTag | 0xc0000, sz ); + if( !tlsdata ) + return false; - struct UNICODE_STRING - { - short Length; - short MaximumLength; - wchar* Buffer; - } + // no relocations! not even self-relocations. Windows does not do them. + core.stdc.string.memcpy( tlsdata, tlsstart, sz ); - struct LIST_ENTRY - { - LIST_ENTRY* next; - LIST_ENTRY* prev; - } + // create copy of tls pointer array + void** array = cast(void**) (*fnAlloc)( heap, *pNtdllBaseTag | 0xc0000, (tlsindex + 1) * (void*).sizeof ); + if( !array ) + return false; - // the following structures can be found here: http://undocumented.ntinternals.net/ - struct LDR_MODULE - { - LIST_ENTRY InLoadOrderModuleList; - LIST_ENTRY InMemoryOrderModuleList; - LIST_ENTRY InInitializationOrderModuleList; - PVOID BaseAddress; - PVOID EntryPoint; - ULONG SizeOfImage; - UNICODE_STRING FullDllName; - UNICODE_STRING BaseDllName; - ULONG Flags; - SHORT LoadCount; - SHORT TlsIndex; - LIST_ENTRY HashTableEntry; - ULONG TimeDateStamp; - } + if( tlsindex > 0 && teb[11] ) + core.stdc.string.memcpy( array, teb[11], tlsindex * (void*).sizeof); + array[tlsindex] = tlsdata; + teb[11] = cast(void*) array; - struct PEB_LDR_DATA - { - ULONG Length; - BOOLEAN Initialized; - PVOID SsHandle; - LIST_ENTRY InLoadOrderModuleList; - LIST_ENTRY InMemoryOrderModuleList; - LIST_ENTRY InInitializationOrderModuleList; - } + // let the old array leak, in case a oncurrent thread is still relying on it + return true; + } - static LDR_MODULE* findLdrModule( HINSTANCE hInstance, void** peb ) nothrow - { - PEB_LDR_DATA* ldrData = cast(PEB_LDR_DATA*) peb[3]; - LIST_ENTRY* root = &ldrData.InLoadOrderModuleList; - for(LIST_ENTRY* entry = root.next; entry != root; entry = entry.next) - { - LDR_MODULE *ldrMod = cast(LDR_MODULE*) entry; - if(ldrMod.BaseAddress == hInstance) - return ldrMod; - } - return null; - } + alias bool BOOLEAN; - static bool setDllTlsUsage( HINSTANCE hInstance, void** peb ) nothrow - { - LDR_MODULE *thisMod = findLdrModule( hInstance, peb ); - if( !thisMod ) - return false; + struct UNICODE_STRING + { + short Length; + short MaximumLength; + wchar* Buffer; + } - thisMod.TlsIndex = -1; // uses TLS (not the index itself) - thisMod.LoadCount = -1; // never unload - return true; - } + struct LIST_ENTRY + { + LIST_ENTRY* next; + LIST_ENTRY* prev; } + + // the following structures can be found here: http://undocumented.ntinternals.net/ + struct LDR_MODULE + { + LIST_ENTRY InLoadOrderModuleList; + LIST_ENTRY InMemoryOrderModuleList; + LIST_ENTRY InInitializationOrderModuleList; + PVOID BaseAddress; + PVOID EntryPoint; + ULONG SizeOfImage; + UNICODE_STRING FullDllName; + UNICODE_STRING BaseDllName; + ULONG Flags; + SHORT LoadCount; + SHORT TlsIndex; + LIST_ENTRY HashTableEntry; + ULONG TimeDateStamp; } -public: - /* ***************************************************** - * Fix implicit thread local storage for the case when a DLL is loaded - * dynamically after process initialization. - * The link time variables are passed to allow placing this function into - * an RTL DLL itself. - * The problem is described in Bugzilla 3342 and - * http://www.nynaeve.net/?p=187, to quote from the latter: - * - * "When a DLL using implicit TLS is loaded, because the loader doesn't process the TLS - * directory, the _tls_index value is not initialized by the loader, nor is there space - * allocated for module's TLS data in the ThreadLocalStoragePointer arrays of running - * threads. The DLL continues to load, however, and things will appear to work... until the - * first access to a __declspec(thread) variable occurs, that is." - * - * _tls_index is initialized by the compiler to 0, so we can use this as a test. - */ - bool dll_fixTLS( HINSTANCE hInstance, void* tlsstart, void* tlsend, void* tls_callbacks_a, int* tlsindex ) nothrow + struct PEB_LDR_DATA { - version (Win64) - return true; // fixed - else version (Win32) - { - /* If the OS has allocated a TLS slot for us, we don't have to do anything - * tls_index 0 means: the OS has not done anything, or it has allocated slot 0 - * Vista and later Windows systems should do this correctly and not need - * this function. - */ - if( *tlsindex != 0 ) - return true; + ULONG Length; + BOOLEAN Initialized; + PVOID SsHandle; + LIST_ENTRY InLoadOrderModuleList; + LIST_ENTRY InMemoryOrderModuleList; + LIST_ENTRY InInitializationOrderModuleList; + } - void** peb; - asm pure nothrow @nogc + static LDR_MODULE* findLdrModule( HINSTANCE hInstance, void** peb ) nothrow + { + PEB_LDR_DATA* ldrData = cast(PEB_LDR_DATA*) peb[3]; + LIST_ENTRY* root = &ldrData.InLoadOrderModuleList; + for(LIST_ENTRY* entry = root.next; entry != root; entry = entry.next) { - mov EAX,FS:[0x30]; - mov peb, EAX; + LDR_MODULE *ldrMod = cast(LDR_MODULE*) entry; + if(ldrMod.BaseAddress == hInstance) + return ldrMod; } - dll_aux.LDR_MODULE *ldrMod = dll_aux.findLdrModule( hInstance, peb ); - if( !ldrMod ) - return false; // not in module list, bail out - if( ldrMod.TlsIndex != 0 ) - return true; // the OS has already setup TLS + return null; + } - dll_aux.LdrpTlsListEntry* entry = dll_aux.addTlsListEntry( peb, tlsstart, tlsend, tls_callbacks_a, tlsindex ); - if( !entry ) + static bool setDllTlsUsage( HINSTANCE hInstance, void** peb ) nothrow + { + LDR_MODULE *thisMod = findLdrModule( hInstance, peb ); + if( !thisMod ) return false; - scope (failure) assert(0); // enforce nothrow, Bugzilla 13561 - - if( !enumProcessThreads( - function (uint id, void* context) nothrow { - dll_aux.LdrpTlsListEntry* entry = cast(dll_aux.LdrpTlsListEntry*) context; - return dll_aux.addTlsData( getTEB( id ), entry.tlsstart, entry.tlsend, entry.tlsindex ); - }, entry ) ) - return false; + thisMod.TlsIndex = -1; // uses TLS (not the index itself) + thisMod.LoadCount = -1; // never unload + return true; + } +} +} - ldrMod.TlsIndex = -1; // flag TLS usage (not the index itself) - ldrMod.LoadCount = -1; // prevent unloading of the DLL, - // since XP does not keep track of used TLS entries +public: +/* ***************************************************** + * Fix implicit thread local storage for the case when a DLL is loaded + * dynamically after process initialization. + * The link time variables are passed to allow placing this function into + * an RTL DLL itself. + * The problem is described in Bugzilla 3342 and + * http://www.nynaeve.net/?p=187, to quote from the latter: + * + * "When a DLL using implicit TLS is loaded, because the loader doesn't process the TLS + * directory, the _tls_index value is not initialized by the loader, nor is there space + * allocated for module's TLS data in the ThreadLocalStoragePointer arrays of running + * threads. The DLL continues to load, however, and things will appear to work... until the + * first access to a __declspec(thread) variable occurs, that is." + * + * _tls_index is initialized by the compiler to 0, so we can use this as a test. + */ +bool dll_fixTLS( HINSTANCE hInstance, void* tlsstart, void* tlsend, void* tls_callbacks_a, int* tlsindex ) nothrow +{ + version (Win64) + return true; // fixed + else version (Win32) + { + /* If the OS has allocated a TLS slot for us, we don't have to do anything + * tls_index 0 means: the OS has not done anything, or it has allocated slot 0 + * Vista and later Windows systems should do this correctly and not need + * this function. + */ + if( *tlsindex != 0 ) return true; - } + + void** peb; + asm pure nothrow @nogc + { + mov EAX,FS:[0x30]; + mov peb, EAX; } + dll_aux.LDR_MODULE *ldrMod = dll_aux.findLdrModule( hInstance, peb ); + if( !ldrMod ) + return false; // not in module list, bail out + if( ldrMod.TlsIndex != 0 ) + return true; // the OS has already setup TLS + + dll_aux.LdrpTlsListEntry* entry = dll_aux.addTlsListEntry( peb, tlsstart, tlsend, tls_callbacks_a, tlsindex ); + if( !entry ) + return false; + + scope (failure) assert(0); // enforce nothrow, Bugzilla 13561 + + if( !enumProcessThreads( + function (uint id, void* context) nothrow { + dll_aux.LdrpTlsListEntry* entry = cast(dll_aux.LdrpTlsListEntry*) context; + return dll_aux.addTlsData( getTEB( id ), entry.tlsstart, entry.tlsend, entry.tlsindex ); + }, entry ) ) + return false; + + ldrMod.TlsIndex = -1; // flag TLS usage (not the index itself) + ldrMod.LoadCount = -1; // prevent unloading of the DLL, + // since XP does not keep track of used TLS entries + return true; + } +} - // fixup TLS storage, initialize runtime and attach to threads - // to be called from DllMain with reason DLL_PROCESS_ATTACH - bool dll_process_attach( HINSTANCE hInstance, bool attach_threads, - void* tlsstart, void* tlsend, void* tls_callbacks_a, int* tlsindex ) +// fixup TLS storage, initialize runtime and attach to threads +// to be called from DllMain with reason DLL_PROCESS_ATTACH +bool dll_process_attach( HINSTANCE hInstance, bool attach_threads, + void* tlsstart, void* tlsend, void* tls_callbacks_a, int* tlsindex ) +{ + version (Win32) { - version (Win32) - { - if( !dll_fixTLS( hInstance, tlsstart, tlsend, tls_callbacks_a, tlsindex ) ) - return false; - } + if( !dll_fixTLS( hInstance, tlsstart, tlsend, tls_callbacks_a, tlsindex ) ) + return false; + } - Runtime.initialize(); + Runtime.initialize(); - if( !attach_threads ) - return true; + if( !attach_threads ) + return true; - // attach to all other threads - return enumProcessThreads( - function (uint id, void* context) { - if( !thread_findByAddr( id ) ) + // attach to all other threads + return enumProcessThreads( + function (uint id, void* context) { + if( !thread_findByAddr( id ) ) + { + // if the OS has not prepared TLS for us, don't attach to the thread + if( GetTlsDataAddress( id ) ) { - // if the OS has not prepared TLS for us, don't attach to the thread - if( GetTlsDataAddress( id ) ) - { - thread_attachByAddr( id ); - thread_moduleTlsCtor( id ); - } + thread_attachByAddr( id ); + thread_moduleTlsCtor( id ); } - return true; - }, null ); - } + } + return true; + }, null ); +} - // same as above, but only usable if druntime is linked statically - bool dll_process_attach( HINSTANCE hInstance, bool attach_threads = true ) +// same as above, but only usable if druntime is linked statically +bool dll_process_attach( HINSTANCE hInstance, bool attach_threads = true ) +{ + version (Win64) { - version (Win64) - { - return dll_process_attach( hInstance, attach_threads, - null, null, null, null ); - } - else version (Win32) - { - return dll_process_attach( hInstance, attach_threads, - &_tlsstart, &_tlsend, &_tls_callbacks_a, &_tls_index ); - } + return dll_process_attach( hInstance, attach_threads, + null, null, null, null ); } - - // to be called from DllMain with reason DLL_PROCESS_DETACH - void dll_process_detach( HINSTANCE hInstance, bool detach_threads = true ) + else version (Win32) { - // detach from all other threads - if( detach_threads ) - enumProcessThreads( - function (uint id, void* context) { - if( id != GetCurrentThreadId() && thread_findByAddr( id ) ) - { - thread_moduleTlsDtor( id ); - thread_detachByAddr( id ); - } - return true; - }, null ); - - Runtime.terminate(); + return dll_process_attach( hInstance, attach_threads, + &_tlsstart, &_tlsend, &_tls_callbacks_a, &_tls_index ); } +} - /* Make sure that tlsCtorRun is itself a tls variable - */ - static bool tlsCtorRun; - static this() { tlsCtorRun = true; } - static ~this() { tlsCtorRun = false; } +// to be called from DllMain with reason DLL_PROCESS_DETACH +void dll_process_detach( HINSTANCE hInstance, bool detach_threads = true ) +{ + // detach from all other threads + if( detach_threads ) + enumProcessThreads( + function (uint id, void* context) { + if( id != GetCurrentThreadId() && thread_findByAddr( id ) ) + { + thread_moduleTlsDtor( id ); + thread_detachByAddr( id ); + } + return true; + }, null ); + + Runtime.terminate(); +} - // to be called from DllMain with reason DLL_THREAD_ATTACH - bool dll_thread_attach( bool attach_thread = true, bool initTls = true ) +/* Make sure that tlsCtorRun is itself a tls variable + */ +static bool tlsCtorRun; +static this() { tlsCtorRun = true; } +static ~this() { tlsCtorRun = false; } + +// to be called from DllMain with reason DLL_THREAD_ATTACH +bool dll_thread_attach( bool attach_thread = true, bool initTls = true ) +{ + // if the OS has not prepared TLS for us, don't attach to the thread + // (happened when running under x64 OS) + if( !GetTlsDataAddress( GetCurrentThreadId() ) ) + return false; + if( !thread_findByAddr( GetCurrentThreadId() ) ) { - // if the OS has not prepared TLS for us, don't attach to the thread - // (happened when running under x64 OS) - if( !GetTlsDataAddress( GetCurrentThreadId() ) ) - return false; - if( !thread_findByAddr( GetCurrentThreadId() ) ) - { - // only attach to thread and initalize it if it is not in the thread list (so it's not created by "new Thread") - if( attach_thread ) - thread_attachThis(); - if( initTls && !tlsCtorRun ) // avoid duplicate calls - rt_moduleTlsCtor(); - } - return true; + // only attach to thread and initalize it if it is not in the thread list (so it's not created by "new Thread") + if( attach_thread ) + thread_attachThis(); + if( initTls && !tlsCtorRun ) // avoid duplicate calls + rt_moduleTlsCtor(); } + return true; +} - // to be called from DllMain with reason DLL_THREAD_DETACH - bool dll_thread_detach( bool detach_thread = true, bool exitTls = true ) +// to be called from DllMain with reason DLL_THREAD_DETACH +bool dll_thread_detach( bool detach_thread = true, bool exitTls = true ) +{ + // if the OS has not prepared TLS for us, we did not attach to the thread + if( !GetTlsDataAddress( GetCurrentThreadId() ) ) + return false; + if( thread_findByAddr( GetCurrentThreadId() ) ) { - // if the OS has not prepared TLS for us, we did not attach to the thread - if( !GetTlsDataAddress( GetCurrentThreadId() ) ) - return false; - if( thread_findByAddr( GetCurrentThreadId() ) ) - { - if( exitTls && tlsCtorRun ) // avoid dtors to be run twice - rt_moduleTlsDtor(); - if( detach_thread ) - thread_detachThis(); - } - return true; + if( exitTls && tlsCtorRun ) // avoid dtors to be run twice + rt_moduleTlsDtor(); + if( detach_thread ) + thread_detachThis(); } + return true; +} - /// A simple mixin to provide a $(D DllMain) which calls the necessary - /// runtime initialization and termination functions automatically. - /// - /// Instead of writing a custom $(D DllMain), simply write: - /// - /// --- - /// mixin SimpleDllMain; - /// --- - mixin template SimpleDllMain() - { - import core.sys.windows.windows : HINSTANCE; +/// A simple mixin to provide a $(D DllMain) which calls the necessary +/// runtime initialization and termination functions automatically. +/// +/// Instead of writing a custom $(D DllMain), simply write: +/// +/// --- +/// mixin SimpleDllMain; +/// --- +mixin template SimpleDllMain() +{ + import core.sys.windows.windows : HINSTANCE; - extern(Windows) - bool DllMain(HINSTANCE hInstance, uint ulReason, void* reserved) + extern(Windows) + bool DllMain(HINSTANCE hInstance, uint ulReason, void* reserved) + { + import core.sys.windows.windows; + import core.sys.windows.dll : + dll_process_attach, dll_process_detach, + dll_thread_attach, dll_thread_detach; + switch(ulReason) { - import core.sys.windows.dll : - dll_process_attach, dll_process_detach, - dll_thread_attach, dll_thread_detach; - switch(ulReason) - { - default: assert(0); - case DLL_PROCESS_ATTACH: - return dll_process_attach( hInstance, true ); + default: assert(0); + case DLL_PROCESS_ATTACH: + return dll_process_attach( hInstance, true ); - case DLL_PROCESS_DETACH: - dll_process_detach( hInstance, true ); - return true; + case DLL_PROCESS_DETACH: + dll_process_detach( hInstance, true ); + return true; - case DLL_THREAD_ATTACH: - return dll_thread_attach( true, true ); + case DLL_THREAD_ATTACH: + return dll_thread_attach( true, true ); - case DLL_THREAD_DETACH: - return dll_thread_detach( true, true ); - } + case DLL_THREAD_DETACH: + return dll_thread_detach( true, true ); } } } diff --git a/src/core/sys/windows/docobj.d b/src/core/sys/windows/docobj.d index 42a6e5daea..bf9f04cd24 100644 --- a/src/core/sys/windows/docobj.d +++ b/src/core/sys/windows/docobj.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_docobj.d) */ module core.sys.windows.docobj; +version (Windows): private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.objidl, core.sys.windows.oleidl, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/errorrep.d b/src/core/sys/windows/errorrep.d index 19791fd3d5..e6faeb6997 100644 --- a/src/core/sys/windows/errorrep.d +++ b/src/core/sys/windows/errorrep.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_errorrep.d) */ module core.sys.windows.errorrep; +version (Windows): private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/exdisp.d b/src/core/sys/windows/exdisp.d index f6c1ff2a7c..b9e55a244c 100644 --- a/src/core/sys/windows/exdisp.d +++ b/src/core/sys/windows/exdisp.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_exdisp.d) */ module core.sys.windows.exdisp; +version (Windows): import core.sys.windows.docobj, core.sys.windows.oaidl, core.sys.windows.ocidl; private import core.sys.windows.basetyps, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/exdispid.d b/src/core/sys/windows/exdispid.d index 156784b792..d0cfd58de2 100644 --- a/src/core/sys/windows/exdispid.d +++ b/src/core/sys/windows/exdispid.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_exdispid.d) */ module core.sys.windows.exdispid; +version (Windows): enum : int { DISPID_STATUSTEXTCHANGE = 102, diff --git a/src/core/sys/windows/httpext.d b/src/core/sys/windows/httpext.d index 3707c4b86d..309ddc50db 100644 --- a/src/core/sys/windows/httpext.d +++ b/src/core/sys/windows/httpext.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_httpext.d) */ module core.sys.windows.httpext; +version (Windows): /* Comment from MinGW httpext.h - Header for ISAPI extensions. diff --git a/src/core/sys/windows/idispids.d b/src/core/sys/windows/idispids.d index b1c8b001dc..82a5c795e1 100644 --- a/src/core/sys/windows/idispids.d +++ b/src/core/sys/windows/idispids.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_idispids.d) */ module core.sys.windows.idispids; +version (Windows): enum : int { DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501, diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index 2f3a2bedcd..0e8483f593 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_imagehlp.d) */ module core.sys.windows.imagehlp; +version (Windows): /* Comment from MinGW NOTE: This strictly does not belong in the Win32 API since it's diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d index 966132e6af..38d69541df 100644 --- a/src/core/sys/windows/imm.d +++ b/src/core/sys/windows/imm.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_imm.d) */ module core.sys.windows.imm; +version (Windows): pragma(lib, "imm32"); import core.sys.windows.windef, core.sys.windows.wingdi; diff --git a/src/core/sys/windows/intshcut.d b/src/core/sys/windows/intshcut.d index 26e194e5f2..96e2e74438 100644 --- a/src/core/sys/windows/intshcut.d +++ b/src/core/sys/windows/intshcut.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_intshcut.d) */ module core.sys.windows.intshcut; +version (Windows): private import core.sys.windows.unknwn, core.sys.windows.windef; diff --git a/src/core/sys/windows/ipexport.d b/src/core/sys/windows/ipexport.d index d391a271e4..488f7eab78 100644 --- a/src/core/sys/windows/ipexport.d +++ b/src/core/sys/windows/ipexport.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ipexport.d) */ module core.sys.windows.ipexport; +version (Windows): private import core.sys.windows.windef; diff --git a/src/core/sys/windows/iphlpapi.d b/src/core/sys/windows/iphlpapi.d index dd361012cb..454d7390dd 100644 --- a/src/core/sys/windows/iphlpapi.d +++ b/src/core/sys/windows/iphlpapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_iphlpapi.d) */ module core.sys.windows.iphlpapi; +version (Windows): import core.sys.windows.ipexport, core.sys.windows.iprtrmib, core.sys.windows.iptypes; private import core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/ipifcons.d b/src/core/sys/windows/ipifcons.d index d71d099c7b..747438e33b 100644 --- a/src/core/sys/windows/ipifcons.d +++ b/src/core/sys/windows/ipifcons.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ipifcons.d) */ module core.sys.windows.ipifcons; +version (Windows): // FIXME: check types of constants diff --git a/src/core/sys/windows/iprtrmib.d b/src/core/sys/windows/iprtrmib.d index fb3b2b0803..6b1e808060 100644 --- a/src/core/sys/windows/iprtrmib.d +++ b/src/core/sys/windows/iprtrmib.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_iprtrmib.d) */ module core.sys.windows.iprtrmib; +version (Windows): import core.sys.windows.ipifcons; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/iptypes.d b/src/core/sys/windows/iptypes.d index a594aa34bc..dc02bede28 100644 --- a/src/core/sys/windows/iptypes.d +++ b/src/core/sys/windows/iptypes.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_iptypes.d) */ module core.sys.windows.iptypes; +version (Windows): import core.sys.windows.windef; version(Tango){ diff --git a/src/core/sys/windows/isguids.d b/src/core/sys/windows/isguids.d index 5f3067cbf2..c97b994a40 100644 --- a/src/core/sys/windows/isguids.d +++ b/src/core/sys/windows/isguids.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_isguids.d) */ module core.sys.windows.isguids; +version (Windows): private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/lm.d b/src/core/sys/windows/lm.d index df4103f53f..cb4467ddd2 100644 --- a/src/core/sys/windows/lm.d +++ b/src/core/sys/windows/lm.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lm.d) */ module core.sys.windows.lm; +version (Windows): /* removed - now supporting only Win2k up version (WindowsVista) { version = WIN32_WINNT_ONLY; diff --git a/src/core/sys/windows/lmaccess.d b/src/core/sys/windows/lmaccess.d index 4e7f9363d7..b7a2ae1a78 100644 --- a/src/core/sys/windows/lmaccess.d +++ b/src/core/sys/windows/lmaccess.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmaccess.d) */ module core.sys.windows.lmaccess; +version (Windows): pragma(lib, "netapi32"); /** diff --git a/src/core/sys/windows/lmalert.d b/src/core/sys/windows/lmalert.d index de23bdb57b..4d5bf3a541 100644 --- a/src/core/sys/windows/lmalert.d +++ b/src/core/sys/windows/lmalert.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmalert.d) */ module core.sys.windows.lmalert; +version (Windows): pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/lmapibuf.d b/src/core/sys/windows/lmapibuf.d index bd6b8663ad..ae3d64a31f 100644 --- a/src/core/sys/windows/lmapibuf.d +++ b/src/core/sys/windows/lmapibuf.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmapibuf.d) */ module core.sys.windows.lmapibuf; +version (Windows): pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/lmat.d b/src/core/sys/windows/lmat.d index df1daab58d..faba56978c 100644 --- a/src/core/sys/windows/lmat.d +++ b/src/core/sys/windows/lmat.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmat.d) */ module core.sys.windows.lmat; +version (Windows): pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/lmaudit.d b/src/core/sys/windows/lmaudit.d index f1c69934e1..ec7c1ee8be 100644 --- a/src/core/sys/windows/lmaudit.d +++ b/src/core/sys/windows/lmaudit.d @@ -8,6 +8,7 @@ */ // COMMENT: This file may be deprecated. module core.sys.windows.lmaudit; +version (Windows): private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/lmbrowsr.d b/src/core/sys/windows/lmbrowsr.d index 25f31e57ac..3bde93855b 100644 --- a/src/core/sys/windows/lmbrowsr.d +++ b/src/core/sys/windows/lmbrowsr.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmbrowsr.d) */ module core.sys.windows.lmbrowsr; +version (Windows): private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/lmchdev.d b/src/core/sys/windows/lmchdev.d index ad6044975a..29bedc8a44 100644 --- a/src/core/sys/windows/lmchdev.d +++ b/src/core/sys/windows/lmchdev.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmchdev.d) */ module core.sys.windows.lmchdev; +version (Windows): // COMMENT: This file might be deprecated. diff --git a/src/core/sys/windows/lmconfig.d b/src/core/sys/windows/lmconfig.d index cec9c90d8e..93bc6b2caa 100644 --- a/src/core/sys/windows/lmconfig.d +++ b/src/core/sys/windows/lmconfig.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmconfig.d) */ module core.sys.windows.lmconfig; +version (Windows): // All functions in this file are deprecated! diff --git a/src/core/sys/windows/lmcons.d b/src/core/sys/windows/lmcons.d index 3deb27a844..91f18038e2 100644 --- a/src/core/sys/windows/lmcons.d +++ b/src/core/sys/windows/lmcons.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmcons.d) */ module core.sys.windows.lmcons; +version (Windows): private import core.sys.windows.windef; private import core.sys.windows.lmerr; // for NERR_BASE diff --git a/src/core/sys/windows/lmerr.d b/src/core/sys/windows/lmerr.d index 84cfb0ecec..5352b2ba19 100644 --- a/src/core/sys/windows/lmerr.d +++ b/src/core/sys/windows/lmerr.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmerr.d) */ module core.sys.windows.lmerr; +version (Windows): import core.sys.windows.winerror; diff --git a/src/core/sys/windows/lmerrlog.d b/src/core/sys/windows/lmerrlog.d index 2ccad92b74..2797ec5ff0 100644 --- a/src/core/sys/windows/lmerrlog.d +++ b/src/core/sys/windows/lmerrlog.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmerrlog.d) */ module core.sys.windows.lmerrlog; +version (Windows): // COMMENT: This appears to be only for Win16. All functions are deprecated. diff --git a/src/core/sys/windows/lmmsg.d b/src/core/sys/windows/lmmsg.d index 0043b3b030..546cdd19e6 100644 --- a/src/core/sys/windows/lmmsg.d +++ b/src/core/sys/windows/lmmsg.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmmsg.d) */ module core.sys.windows.lmmsg; +version (Windows): pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef, core.sys.windows.w32api; diff --git a/src/core/sys/windows/lmremutl.d b/src/core/sys/windows/lmremutl.d index 3bf693387f..2ebc45d664 100644 --- a/src/core/sys/windows/lmremutl.d +++ b/src/core/sys/windows/lmremutl.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmremutl.d) */ module core.sys.windows.lmremutl; +version (Windows): pragma(lib, "netapi32"); // D Conversion Note: DESC_CHAR is defined as TCHAR. diff --git a/src/core/sys/windows/lmrepl.d b/src/core/sys/windows/lmrepl.d index 3da318261d..473a5364eb 100644 --- a/src/core/sys/windows/lmrepl.d +++ b/src/core/sys/windows/lmrepl.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmrepl.d) */ module core.sys.windows.lmrepl; +version (Windows): pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/lmserver.d b/src/core/sys/windows/lmserver.d index 53013220bd..9402fccb65 100644 --- a/src/core/sys/windows/lmserver.d +++ b/src/core/sys/windows/lmserver.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmserver.d) */ module core.sys.windows.lmserver; +version (Windows): import core.sys.windows.winsvc; private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/lmshare.d b/src/core/sys/windows/lmshare.d index bfd951cd4e..dca2a57633 100644 --- a/src/core/sys/windows/lmshare.d +++ b/src/core/sys/windows/lmshare.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmshare.d) */ module core.sys.windows.lmshare; +version (Windows): pragma(lib, "netapi"); import core.sys.windows.lmcons; diff --git a/src/core/sys/windows/lmsname.d b/src/core/sys/windows/lmsname.d index 895299f0ca..8e49bf4fae 100644 --- a/src/core/sys/windows/lmsname.d +++ b/src/core/sys/windows/lmsname.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmsname.d) */ module core.sys.windows.lmsname; +version (Windows): private import core.sys.windows.windef; diff --git a/src/core/sys/windows/lmstats.d b/src/core/sys/windows/lmstats.d index 95cf81e362..0aa30c7ae9 100644 --- a/src/core/sys/windows/lmstats.d +++ b/src/core/sys/windows/lmstats.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmstats.d) */ module core.sys.windows.lmstats; +version (Windows): pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/lmsvc.d b/src/core/sys/windows/lmsvc.d index eef4d92a1e..3907b2c96d 100644 --- a/src/core/sys/windows/lmsvc.d +++ b/src/core/sys/windows/lmsvc.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmsvc.d) */ module core.sys.windows.lmsvc; +version (Windows): // FIXME: Is this file deprecated? All of the functions are only for Win16. /** diff --git a/src/core/sys/windows/lmuse.d b/src/core/sys/windows/lmuse.d index cd34be3d8f..edbd942701 100644 --- a/src/core/sys/windows/lmuse.d +++ b/src/core/sys/windows/lmuse.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmuse.d) */ module core.sys.windows.lmuse; +version (Windows): pragma(lib, "netapi32"); import core.sys.windows.lmuseflg; diff --git a/src/core/sys/windows/lmuseflg.d b/src/core/sys/windows/lmuseflg.d index be86809b6a..3f8a0baa7f 100644 --- a/src/core/sys/windows/lmuseflg.d +++ b/src/core/sys/windows/lmuseflg.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmuseflg.d) */ module core.sys.windows.lmuseflg; +version (Windows): enum : uint { USE_NOFORCE = 0, diff --git a/src/core/sys/windows/lmwksta.d b/src/core/sys/windows/lmwksta.d index 81796d799b..3ef200399b 100644 --- a/src/core/sys/windows/lmwksta.d +++ b/src/core/sys/windows/lmwksta.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lmwksta.d) */ module core.sys.windows.lmwksta; +version (Windows): pragma(lib, "netapi32"); import core.sys.windows.lmuseflg; diff --git a/src/core/sys/windows/lzexpand.d b/src/core/sys/windows/lzexpand.d index 1c194a7204..189db7c82b 100644 --- a/src/core/sys/windows/lzexpand.d +++ b/src/core/sys/windows/lzexpand.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_lzexpand.d) */ module core.sys.windows.lzexpand; +version (Windows): pragma(lib, "lz32"); private import core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/mapi.d b/src/core/sys/windows/mapi.d index 8c96568a9e..e3d2e79d10 100644 --- a/src/core/sys/windows/mapi.d +++ b/src/core/sys/windows/mapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_mapi.d) */ module core.sys.windows.mapi; +version (Windows): private import core.sys.windows.windef; diff --git a/src/core/sys/windows/mciavi.d b/src/core/sys/windows/mciavi.d index 3b5e640c4f..c2de0009e3 100644 --- a/src/core/sys/windows/mciavi.d +++ b/src/core/sys/windows/mciavi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_mciavi.d) */ module core.sys.windows.mciavi; +version (Windows): private import core.sys.windows.mmsystem; diff --git a/src/core/sys/windows/mcx.d b/src/core/sys/windows/mcx.d index 6c0585bb03..2afb2da24e 100644 --- a/src/core/sys/windows/mcx.d +++ b/src/core/sys/windows/mcx.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_mcx.d) */ module core.sys.windows.mcx; +version (Windows): private import core.sys.windows.windef; diff --git a/src/core/sys/windows/mgmtapi.d b/src/core/sys/windows/mgmtapi.d index f0b35380ba..4a19c4aade 100644 --- a/src/core/sys/windows/mgmtapi.d +++ b/src/core/sys/windows/mgmtapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_mgmtapi.d) */ module core.sys.windows.mgmtapi; +version (Windows): import core.sys.windows.snmp; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index bc11905a4a..17b9062d33 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_mmsystem.d) */ module core.sys.windows.mmsystem; +version (Windows): pragma(lib, "winmm"); /* The #defines MAKEFOURCC, mmioFOURCC, sndAlias are used to define diff --git a/src/core/sys/windows/msacm.d b/src/core/sys/windows/msacm.d index b4626e22ef..977cf98da4 100644 --- a/src/core/sys/windows/msacm.d +++ b/src/core/sys/windows/msacm.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_msacm.d) */ module core.sys.windows.msacm; +version (Windows): private import core.sys.windows.basetsd, core.sys.windows.mmsystem, core.sys.windows.windef; diff --git a/src/core/sys/windows/mshtml.d b/src/core/sys/windows/mshtml.d index 2578abc0c9..c6ce136033 100644 --- a/src/core/sys/windows/mshtml.d +++ b/src/core/sys/windows/mshtml.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_mshtml.d) */ module core.sys.windows.mshtml; +version (Windows): private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index 2cf011076c..2d5872a955 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_mswsock.d) */ module core.sys.windows.mswsock; +version (Windows): import core.sys.windows.winbase, core.sys.windows.windef; private import core.sys.windows.basetyps, core.sys.windows.w32api; diff --git a/src/core/sys/windows/nb30.d b/src/core/sys/windows/nb30.d index 139da29f44..f32bbd9bc7 100644 --- a/src/core/sys/windows/nb30.d +++ b/src/core/sys/windows/nb30.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_nb30.d) */ module core.sys.windows.nb30; +version (Windows): private import core.sys.windows.windef; diff --git a/src/core/sys/windows/nddeapi.d b/src/core/sys/windows/nddeapi.d index 7ee251f2c4..6e5c44a0d8 100644 --- a/src/core/sys/windows/nddeapi.d +++ b/src/core/sys/windows/nddeapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_nddeapi.d) */ module core.sys.windows.nddeapi; +version (Windows): private import core.sys.windows.windef; diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d index 989bdc75bc..ed0551f6ef 100644 --- a/src/core/sys/windows/nspapi.d +++ b/src/core/sys/windows/nspapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_nspapi.d) */ module core.sys.windows.nspapi; +version (Windows): private import core.sys.windows.basetyps, core.sys.windows.windef; diff --git a/src/core/sys/windows/ntdef.d b/src/core/sys/windows/ntdef.d index 2fc147732b..4e6c8862d9 100644 --- a/src/core/sys/windows/ntdef.d +++ b/src/core/sys/windows/ntdef.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ntdef.d) */ module core.sys.windows.ntdef; +version (Windows): private import core.sys.windows.basetsd, core.sys.windows.subauth, core.sys.windows.windef, core.sys.windows.winnt; diff --git a/src/core/sys/windows/ntdll.d b/src/core/sys/windows/ntdll.d index ac24b82f52..c503535919 100644 --- a/src/core/sys/windows/ntdll.d +++ b/src/core/sys/windows/ntdll.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ntdll.d) */ module core.sys.windows.ntdll; +version (Windows): private import core.sys.windows.w32api; diff --git a/src/core/sys/windows/ntldap.d b/src/core/sys/windows/ntldap.d index 2147c9e050..edb7381a05 100644 --- a/src/core/sys/windows/ntldap.d +++ b/src/core/sys/windows/ntldap.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ntldap.d) */ module core.sys.windows.ntldap; +version (Windows): /* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned * aliases. Should we merge them anyway? diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index a8dd3b9802..581c210e8d 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ntsecapi.d) */ module core.sys.windows.ntsecapi; +version (Windows): private import core.sys.windows.basetyps, core.sys.windows.ntdef, core.sys.windows.windef, core.sys.windows.winnt, core.sys.windows.w32api; diff --git a/src/core/sys/windows/ntsecpkg.d b/src/core/sys/windows/ntsecpkg.d index 0af2d4680b..25fd6dd23d 100644 --- a/src/core/sys/windows/ntsecpkg.d +++ b/src/core/sys/windows/ntsecpkg.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ntsecpkg.d) */ module core.sys.windows.ntsecpkg; +version (Windows): import core.sys.windows.windef, core.sys.windows.ntsecapi, core.sys.windows.security, core.sys.windows.ntdef, core.sys.windows.sspi; import core.sys.windows.winnt: GUID; diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d index 5586911c8c..1e16dd2ec2 100644 --- a/src/core/sys/windows/oaidl.d +++ b/src/core/sys/windows/oaidl.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_oaidl.d) */ module core.sys.windows.oaidl; +version (Windows): private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/objbase.d b/src/core/sys/windows/objbase.d index 514456d0aa..e881a51335 100644 --- a/src/core/sys/windows/objbase.d +++ b/src/core/sys/windows/objbase.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_objbase.d) */ module core.sys.windows.objbase; +version (Windows): pragma(lib, "ole32"); import core.sys.windows.cguid, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/objfwd.d b/src/core/sys/windows/objfwd.d index f7ced6f8bc..589b49dc75 100644 --- a/src/core/sys/windows/objfwd.d +++ b/src/core/sys/windows/objfwd.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_objfwd.d) */ module core.sys.windows.objfwd; +version (Windows): private import core.sys.windows.objidl; diff --git a/src/core/sys/windows/objidl.d b/src/core/sys/windows/objidl.d index 6cf8f14f9e..54ce0011db 100644 --- a/src/core/sys/windows/objidl.d +++ b/src/core/sys/windows/objidl.d @@ -11,6 +11,7 @@ // rather than in objfwd ? // # do we need the proxies that are defined in this file? module core.sys.windows.objidl; +version (Windows): import core.sys.windows.unknwn; import core.sys.windows.objfwd; diff --git a/src/core/sys/windows/objsafe.d b/src/core/sys/windows/objsafe.d index 895a245e9c..08de8c6f34 100644 --- a/src/core/sys/windows/objsafe.d +++ b/src/core/sys/windows/objsafe.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_objsafe.d) */ module core.sys.windows.objsafe; +version (Windows): private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef; diff --git a/src/core/sys/windows/ocidl.d b/src/core/sys/windows/ocidl.d index 3ec8ef1040..df151f7807 100644 --- a/src/core/sys/windows/ocidl.d +++ b/src/core/sys/windows/ocidl.d @@ -9,6 +9,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ocidl.d) */ module core.sys.windows.ocidl; +version (Windows): private import core.sys.windows.ole2, core.sys.windows.oleidl, core.sys.windows.oaidl, core.sys.windows.objfwd, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/odbcinst.d b/src/core/sys/windows/odbcinst.d index 0d062629d5..9dda050c13 100644 --- a/src/core/sys/windows/odbcinst.d +++ b/src/core/sys/windows/odbcinst.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_odbcinst.d) */ module core.sys.windows.odbcinst; +version (Windows): import core.sys.windows.sql; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index 3d573af8da..0419a3eeaf 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ole.d) */ module core.sys.windows.ole; +version (Windows): private import core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.uuid; diff --git a/src/core/sys/windows/ole2.d b/src/core/sys/windows/ole2.d index 278fd9218c..1731b55d78 100644 --- a/src/core/sys/windows/ole2.d +++ b/src/core/sys/windows/ole2.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ole2.d) */ module core.sys.windows.ole2; +version (Windows): pragma(lib, "ole32"); public import core.sys.windows.basetyps, core.sys.windows.objbase, core.sys.windows.oleauto, core.sys.windows.olectlid, diff --git a/src/core/sys/windows/ole2ver.d b/src/core/sys/windows/ole2ver.d index 675a8e5ceb..66918ce5cb 100644 --- a/src/core/sys/windows/ole2ver.d +++ b/src/core/sys/windows/ole2ver.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ole2ver.d) */ module core.sys.windows.ole2ver; +version (Windows): // These are apparently not documented on the MSDN site const rmm = 23; diff --git a/src/core/sys/windows/oleacc.d b/src/core/sys/windows/oleacc.d index a179871157..0f7581f59b 100644 --- a/src/core/sys/windows/oleacc.d +++ b/src/core/sys/windows/oleacc.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_oleacc.d) */ module core.sys.windows.oleacc; +version (Windows): pragma(lib, "oleacc"); private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.unknwn, core.sys.windows.wtypes, diff --git a/src/core/sys/windows/oleauto.d b/src/core/sys/windows/oleauto.d index a625b11787..015187decc 100644 --- a/src/core/sys/windows/oleauto.d +++ b/src/core/sys/windows/oleauto.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_oleauto.d) */ module core.sys.windows.oleauto; +version (Windows): pragma(lib, "oleaut32"); import core.sys.windows.oaidl; diff --git a/src/core/sys/windows/olectl.d b/src/core/sys/windows/olectl.d index c148921627..73ce036f3a 100644 --- a/src/core/sys/windows/olectl.d +++ b/src/core/sys/windows/olectl.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_olectl.d) */ module core.sys.windows.olectl; +version (Windows): // In conversion from MinGW, the following was deleted: //#define FONTSIZE(n) {n##0000, 0} diff --git a/src/core/sys/windows/olectlid.d b/src/core/sys/windows/olectlid.d index 842f0a00ca..a39a56eb3c 100644 --- a/src/core/sys/windows/olectlid.d +++ b/src/core/sys/windows/olectlid.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_olectlid.d) */ module core.sys.windows.olectlid; +version (Windows): private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d index 9ec05f2117..ccc5e1a8f1 100644 --- a/src/core/sys/windows/oledlg.d +++ b/src/core/sys/windows/oledlg.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_oledlg.d) */ module core.sys.windows.oledlg; +version (Windows): import core.sys.windows.commdlg, core.sys.windows.dlgs, core.sys.windows.ole2, core.sys.windows.prsht, core.sys.windows.shellapi, core.sys.windows.windows; diff --git a/src/core/sys/windows/oleidl.d b/src/core/sys/windows/oleidl.d index 4b6076c18a..5437a11e4e 100644 --- a/src/core/sys/windows/oleidl.d +++ b/src/core/sys/windows/oleidl.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_oleidl.d) */ module core.sys.windows.oleidl; +version (Windows): // DAC: This is defined in ocidl !! // what is it doing in here? diff --git a/src/core/sys/windows/pbt.d b/src/core/sys/windows/pbt.d index 88f926217e..80bfe71d32 100644 --- a/src/core/sys/windows/pbt.d +++ b/src/core/sys/windows/pbt.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_pbt.d) */ module core.sys.windows.pbt; +version (Windows): private import core.sys.windows.windef; diff --git a/src/core/sys/windows/powrprof.d b/src/core/sys/windows/powrprof.d index 2e6ebe4e6a..0000b43a91 100644 --- a/src/core/sys/windows/powrprof.d +++ b/src/core/sys/windows/powrprof.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_powrprof.d) */ module core.sys.windows.powrprof; +version (Windows): pragma(lib, "powrprof"); private import core.sys.windows.windef; diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d index 25375a4b8d..65ec6b5355 100644 --- a/src/core/sys/windows/prsht.d +++ b/src/core/sys/windows/prsht.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_prsht.d) */ module core.sys.windows.prsht; +version (Windows): pragma(lib, "comctl32"); private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; diff --git a/src/core/sys/windows/psapi.d b/src/core/sys/windows/psapi.d index 66c8325945..513d92ef54 100644 --- a/src/core/sys/windows/psapi.d +++ b/src/core/sys/windows/psapi.d @@ -12,6 +12,7 @@ */ module core.sys.windows.psapi; +version (Windows): private import core.sys.windows.w32api; private import core.sys.windows.winbase; diff --git a/src/core/sys/windows/rapi.d b/src/core/sys/windows/rapi.d index afa18f0a55..c543453f2a 100644 --- a/src/core/sys/windows/rapi.d +++ b/src/core/sys/windows/rapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rapi.d) */ module core.sys.windows.rapi; +version (Windows): /* Comment from MinGW NOTE: This strictly does not belong in the Win32 API since it's diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index 09525aa962..9f75294e54 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_ras.d) */ module core.sys.windows.ras; +version (Windows): pragma(lib, "rasapi32"); private import core.sys.windows.basetyps, core.sys.windows.lmcons, core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d index a3fd494fb8..c286809ea5 100644 --- a/src/core/sys/windows/rasdlg.d +++ b/src/core/sys/windows/rasdlg.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rasdlg.d) */ module core.sys.windows.rasdlg; +version (Windows): import core.sys.windows.ras; private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/raserror.d b/src/core/sys/windows/raserror.d index b5490d39a8..c48740abc6 100644 --- a/src/core/sys/windows/raserror.d +++ b/src/core/sys/windows/raserror.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_raserror.d) */ module core.sys.windows.raserror; +version (Windows): enum { SUCCESS = 0, diff --git a/src/core/sys/windows/rassapi.d b/src/core/sys/windows/rassapi.d index cbd2622121..e0b565516b 100644 --- a/src/core/sys/windows/rassapi.d +++ b/src/core/sys/windows/rassapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rassapi.d) */ module core.sys.windows.rassapi; +version (Windows): private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/reason.d b/src/core/sys/windows/reason.d index 831f822543..93f66c624d 100644 --- a/src/core/sys/windows/reason.d +++ b/src/core/sys/windows/reason.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_reason.d) */ module core.sys.windows.reason; +version (Windows): private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/regstr.d b/src/core/sys/windows/regstr.d index d0a35f2abd..aad16ebe70 100644 --- a/src/core/sys/windows/regstr.d +++ b/src/core/sys/windows/regstr.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_regstr.d) */ module core.sys.windows.regstr; +version (Windows): // TODO: fix possible conflict with shloj. Sort out NEC_98 issue. diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d index a9d38a0182..b77242582b 100644 --- a/src/core/sys/windows/richedit.d +++ b/src/core/sys/windows/richedit.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_richedit.d) */ module core.sys.windows.richedit; +version (Windows): private import core.sys.windows.windef, core.sys.windows.winuser; private import core.sys.windows.wingdi; // for LF_FACESIZE diff --git a/src/core/sys/windows/richole.d b/src/core/sys/windows/richole.d index ec4287f34f..8c432ce4c2 100644 --- a/src/core/sys/windows/richole.d +++ b/src/core/sys/windows/richole.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_richole.d) */ module core.sys.windows.richole; +version (Windows): private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.windows.ole2, core.sys.windows.unknwn, core.sys.windows.windef; diff --git a/src/core/sys/windows/rpc.d b/src/core/sys/windows/rpc.d index 0ed1e1476a..00c6da785f 100644 --- a/src/core/sys/windows/rpc.d +++ b/src/core/sys/windows/rpc.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rpc.d) */ module core.sys.windows.rpc; +version (Windows): /* Moved to rpcdecp (duplicate definition). typedef void *I_RPC_HANDLE; diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d index 42c42fa9ec..1c2c6e6b1e 100644 --- a/src/core/sys/windows/rpcdce.d +++ b/src/core/sys/windows/rpcdce.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdce.d) */ module core.sys.windows.rpcdce; +version (Windows): pragma(lib, "Rpcrt4"); // TODO: I think MinGW got this wrong. RPC_UNICODE_SUPPORTED should be diff --git a/src/core/sys/windows/rpcdce2.d b/src/core/sys/windows/rpcdce2.d index b168cd2666..a792d836bd 100644 --- a/src/core/sys/windows/rpcdce2.d +++ b/src/core/sys/windows/rpcdce2.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdce2.d) */ module core.sys.windows.rpcdce2; +version (Windows): import core.sys.windows.rpcdce; private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d index cbed8cb30b..4d21253b6e 100644 --- a/src/core/sys/windows/rpcdcep.d +++ b/src/core/sys/windows/rpcdcep.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdcep.d) */ module core.sys.windows.rpcdcep; +version (Windows): private import core.sys.windows.basetyps; private import core.sys.windows.w32api; diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index 14b9fb287a..66cabc5d39 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcndr.d) */ module core.sys.windows.rpcndr; +version (Windows): pragma(lib, "rpcrt4"); /* Translation notes: diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d index 5cef4e5b12..1c2ead3472 100644 --- a/src/core/sys/windows/rpcnsi.d +++ b/src/core/sys/windows/rpcnsi.d @@ -9,6 +9,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnsi.d) */ module core.sys.windows.rpcnsi; +version (Windows): pragma(lib, "rpcns4"); private import core.sys.windows.basetyps, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi, core.sys.windows.rpcdce, diff --git a/src/core/sys/windows/rpcnsip.d b/src/core/sys/windows/rpcnsip.d index 373c74c026..59ddddd0d7 100644 --- a/src/core/sys/windows/rpcnsip.d +++ b/src/core/sys/windows/rpcnsip.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnsip.d) */ module core.sys.windows.rpcnsip; +version (Windows): private import core.sys.windows.rpcdce, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi; diff --git a/src/core/sys/windows/rpcnterr.d b/src/core/sys/windows/rpcnterr.d index 37c14fded9..e791e04824 100644 --- a/src/core/sys/windows/rpcnterr.d +++ b/src/core/sys/windows/rpcnterr.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnterr.d) */ module core.sys.windows.rpcnterr; +version (Windows): import core.sys.windows.winerror; diff --git a/src/core/sys/windows/schannel.d b/src/core/sys/windows/schannel.d index 7964ed87fb..eb4bc549fb 100644 --- a/src/core/sys/windows/schannel.d +++ b/src/core/sys/windows/schannel.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_schannel.d) */ module core.sys.windows.schannel; +version (Windows): import core.sys.windows.wincrypt; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/secext.d b/src/core/sys/windows/secext.d index e4784ebe2a..12b0a2cca4 100644 --- a/src/core/sys/windows/secext.d +++ b/src/core/sys/windows/secext.d @@ -8,6 +8,7 @@ */ // Don't include this file directly, use core.sys.windows.security instead. module core.sys.windows.secext; +version (Windows): pragma(lib, "secur32"); private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/security.d b/src/core/sys/windows/security.d index bcd5eee21c..3758d844b7 100644 --- a/src/core/sys/windows/security.d +++ b/src/core/sys/windows/security.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_security.d) */ module core.sys.windows.security; +version (Windows): enum :SECURITY_STATUS{ SEC_E_OK = 0, diff --git a/src/core/sys/windows/servprov.d b/src/core/sys/windows/servprov.d index f37c16f14f..49a75791c4 100644 --- a/src/core/sys/windows/servprov.d +++ b/src/core/sys/windows/servprov.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_servprov.d) */ module core.sys.windows.servprov; +version (Windows): private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d index c89c38c78a..e0ce69d9e8 100644 --- a/src/core/sys/windows/setupapi.d +++ b/src/core/sys/windows/setupapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_setupapi.d) */ module core.sys.windows.setupapi; +version (Windows): pragma(lib, "setupapi"); private import core.sys.windows.basetyps, core.sys.windows.commctrl, core.sys.windows.prsht, core.sys.windows.w32api, diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index d01bd01daf..1f78e63036 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_shellapi.d) */ module core.sys.windows.shellapi; +version (Windows): pragma(lib, "shell32"); private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.basetyps; diff --git a/src/core/sys/windows/shldisp.d b/src/core/sys/windows/shldisp.d index 33ecb621c1..c0ee909c86 100644 --- a/src/core/sys/windows/shldisp.d +++ b/src/core/sys/windows/shldisp.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_shldisp.d) */ module core.sys.windows.shldisp; +version (Windows): private import core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/shlguid.d b/src/core/sys/windows/shlguid.d index d980842cb3..4bc67b9096 100644 --- a/src/core/sys/windows/shlguid.d +++ b/src/core/sys/windows/shlguid.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_shlguid.d) */ module core.sys.windows.shlguid; +version (Windows): private import core.sys.windows.basetyps, core.sys.windows.w32api; diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index 269f8bd4e1..e556e79422 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_shlobj.d) */ module core.sys.windows.shlobj; +version (Windows): pragma(lib, "shell32"); // TODO: fix bitfields diff --git a/src/core/sys/windows/shlwapi.d b/src/core/sys/windows/shlwapi.d index e7af4cf9a4..1881d1ad57 100644 --- a/src/core/sys/windows/shlwapi.d +++ b/src/core/sys/windows/shlwapi.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_shlwapi.d) */ module core.sys.windows.shlwapi; +version (Windows): pragma(lib, "shlwapi"); /* Changes compared to MinGW: diff --git a/src/core/sys/windows/snmp.d b/src/core/sys/windows/snmp.d index c65d273b21..03ddaba44f 100644 --- a/src/core/sys/windows/snmp.d +++ b/src/core/sys/windows/snmp.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_snmp.d) */ module core.sys.windows.snmp; +version (Windows): private import core.sys.windows.windows; diff --git a/src/core/sys/windows/sql.d b/src/core/sys/windows/sql.d index b9cfa2853c..6d232d0afe 100644 --- a/src/core/sys/windows/sql.d +++ b/src/core/sys/windows/sql.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_sql.d) */ module core.sys.windows.sql; +version (Windows): public import core.sys.windows.sqltypes; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/sqlext.d b/src/core/sys/windows/sqlext.d index 6f5035970b..d7ccb1b30c 100644 --- a/src/core/sys/windows/sqlext.d +++ b/src/core/sys/windows/sqlext.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_sqlext.d) */ module core.sys.windows.sqlext; +version (Windows): /* Conversion notes: The MinGW file was a horrible mess. All of the #defines were sorted alphabetically, diff --git a/src/core/sys/windows/sqltypes.d b/src/core/sys/windows/sqltypes.d index 6dd7b6951d..fba1ccfeb4 100644 --- a/src/core/sys/windows/sqltypes.d +++ b/src/core/sys/windows/sqltypes.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_sqltypes.d) */ module core.sys.windows.sqltypes; +version (Windows): /* Conversion notes: It's assumed that ODBC >= 0x0300. diff --git a/src/core/sys/windows/sqlucode.d b/src/core/sys/windows/sqlucode.d index 84efb9003f..fa027a6d8e 100644 --- a/src/core/sys/windows/sqlucode.d +++ b/src/core/sys/windows/sqlucode.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_sqlucode.d) */ module core.sys.windows.sqlucode; +version (Windows): private import core.sys.windows.sqlext; diff --git a/src/core/sys/windows/sspi.d b/src/core/sys/windows/sspi.d index 5ba9941e71..c5146ffd1c 100644 --- a/src/core/sys/windows/sspi.d +++ b/src/core/sys/windows/sspi.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_sspi.d) */ module core.sys.windows.sspi; +version (Windows): import core.sys.windows.windef; import core.sys.windows.ntdef; diff --git a/src/core/sys/windows/stacktrace.d b/src/core/sys/windows/stacktrace.d index 3f74ffd82d..85ce2a415b 100644 --- a/src/core/sys/windows/stacktrace.d +++ b/src/core/sys/windows/stacktrace.d @@ -10,7 +10,7 @@ */ module core.sys.windows.stacktrace; -version(Windows): +version (Windows): import core.demangle; import core.runtime; diff --git a/src/core/sys/windows/subauth.d b/src/core/sys/windows/subauth.d index f4f80391dd..d43bd35ce6 100644 --- a/src/core/sys/windows/subauth.d +++ b/src/core/sys/windows/subauth.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_subauth.d) */ module core.sys.windows.subauth; +version (Windows): private import core.sys.windows.ntdef, core.sys.windows.windef; diff --git a/src/core/sys/windows/threadaux.d b/src/core/sys/windows/threadaux.d index 17c7dd0246..13a6835dbb 100644 --- a/src/core/sys/windows/threadaux.d +++ b/src/core/sys/windows/threadaux.d @@ -10,326 +10,324 @@ */ module core.sys.windows.threadaux; +version (Windows): -version( Windows ) -{ - import core.sys.windows.windows; - import core.stdc.stdlib; +import core.sys.windows.windows; +import core.stdc.stdlib; - public import core.thread; +public import core.thread; - extern(Windows) - HANDLE OpenThread(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwThreadId) nothrow; +extern(Windows) +HANDLE OpenThread(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwThreadId) nothrow; - extern (C) extern __gshared int _tls_index; +extern (C) extern __gshared int _tls_index; - extern (C) // rt.minfo - { - void rt_moduleTlsCtor(); - void rt_moduleTlsDtor(); - } +extern (C) // rt.minfo +{ + void rt_moduleTlsCtor(); + void rt_moduleTlsDtor(); +} private: - /////////////////////////////////////////////////////////////////// - struct thread_aux - { - // don't let symbols leak into other modules +/////////////////////////////////////////////////////////////////// +struct thread_aux +{ + // don't let symbols leak into other modules - enum SystemProcessInformation = 5; - enum STATUS_INFO_LENGTH_MISMATCH = 0xc0000004; + enum SystemProcessInformation = 5; + enum STATUS_INFO_LENGTH_MISMATCH = 0xc0000004; - // structs subject to change according to MSDN, more info at http://undocumented.ntinternals.net - // declarations according to http://processhacker.sourceforge.net/doc/ntexapi_8h_source.html - // NOTE: the declarations assume default alignment for Win64 and contain some padding data - struct UNICODE_STRING - { - short Length; - short MaximumLength; - wchar* Buffer; - } - // process or thread ID, documentation says it is a HANDLE, but it's actually the ID (a DWORD) - alias size_t PTID; + // structs subject to change according to MSDN, more info at http://undocumented.ntinternals.net + // declarations according to http://processhacker.sourceforge.net/doc/ntexapi_8h_source.html + // NOTE: the declarations assume default alignment for Win64 and contain some padding data + struct UNICODE_STRING + { + short Length; + short MaximumLength; + wchar* Buffer; + } + // process or thread ID, documentation says it is a HANDLE, but it's actually the ID (a DWORD) + alias size_t PTID; - struct _SYSTEM_PROCESS_INFORMATION - { - int NextEntryOffset; // When this entry is 0, there are no more processes to be read. - int NumberOfThreads; - long WorkingSetPrivateSize; - uint HardFaultCount; - uint NumberOfThreadsHighWatermark; - ulong CycleTime; - long CreateTime; - long UserTime; - long KernelTime; - UNICODE_STRING ImageName; - int BasePriority; - PTID /*Unique*/ProcessId; - PTID InheritedFromUniqueProcessId; - uint HandleCount; - uint SessionId; - size_t UniqueProcessKey; - size_t PeakVirtualSize; - size_t VirtualSize; - uint PageFaultCount; - size_t PeakWorkingSetSize; - size_t WorkingSetSize; - size_t QuotaPeakPagedPoolUsage; - size_t QuotaPagedPoolUsage; - size_t QuotaPeakNonPagedPoolUsage; - size_t QuotaNonPagedPoolUsage; - size_t PagefileUsage; - size_t PeakPagefileUsage; - size_t PrivatePageCount; - long ReadOperationCount; - long WriteOperationCount; - long OtherOperationCount; - long ReadTransferCount; - long WriteTransferCount; - long OtherTransferCount; - - // SYSTEM_THREAD_INFORMATION or SYSTEM_EXTENDED_THREAD_INFORMATION structures follow. - } + struct _SYSTEM_PROCESS_INFORMATION + { + int NextEntryOffset; // When this entry is 0, there are no more processes to be read. + int NumberOfThreads; + long WorkingSetPrivateSize; + uint HardFaultCount; + uint NumberOfThreadsHighWatermark; + ulong CycleTime; + long CreateTime; + long UserTime; + long KernelTime; + UNICODE_STRING ImageName; + int BasePriority; + PTID /*Unique*/ProcessId; + PTID InheritedFromUniqueProcessId; + uint HandleCount; + uint SessionId; + size_t UniqueProcessKey; + size_t PeakVirtualSize; + size_t VirtualSize; + uint PageFaultCount; + size_t PeakWorkingSetSize; + size_t WorkingSetSize; + size_t QuotaPeakPagedPoolUsage; + size_t QuotaPagedPoolUsage; + size_t QuotaPeakNonPagedPoolUsage; + size_t QuotaNonPagedPoolUsage; + size_t PagefileUsage; + size_t PeakPagefileUsage; + size_t PrivatePageCount; + long ReadOperationCount; + long WriteOperationCount; + long OtherOperationCount; + long ReadTransferCount; + long WriteTransferCount; + long OtherTransferCount; + + // SYSTEM_THREAD_INFORMATION or SYSTEM_EXTENDED_THREAD_INFORMATION structures follow. + } - struct _SYSTEM_THREAD_INFORMATION - { - long KernelTime; - long UserTime; - long CreateTime; - uint WaitTime; - void* StartAddress; - PTID ProcessId; - PTID ThreadId; - int Priority; - int BasePriority; - uint ContextSwitches; - uint ThreadState; - int WaitReason; - int reserved; - } + struct _SYSTEM_THREAD_INFORMATION + { + long KernelTime; + long UserTime; + long CreateTime; + uint WaitTime; + void* StartAddress; + PTID ProcessId; + PTID ThreadId; + int Priority; + int BasePriority; + uint ContextSwitches; + uint ThreadState; + int WaitReason; + int reserved; + } - alias fnNtQuerySystemInformation = extern(Windows) - HRESULT function( uint SystemInformationClass, void* info, uint infoLength, uint* ReturnLength ) nothrow; + alias fnNtQuerySystemInformation = extern(Windows) + HRESULT function( uint SystemInformationClass, void* info, uint infoLength, uint* ReturnLength ) nothrow; - enum ThreadBasicInformation = 0; + enum ThreadBasicInformation = 0; - struct THREAD_BASIC_INFORMATION - { - int ExitStatus; - void** TebBaseAddress; - PTID ProcessId; - PTID ThreadId; - size_t AffinityMask; - int Priority; - int BasePriority; - } + struct THREAD_BASIC_INFORMATION + { + int ExitStatus; + void** TebBaseAddress; + PTID ProcessId; + PTID ThreadId; + size_t AffinityMask; + int Priority; + int BasePriority; + } - alias fnNtQueryInformationThread = extern(Windows) - int function( HANDLE ThreadHandle, uint ThreadInformationClass, void* buf, uint size, uint* ReturnLength ) nothrow; + alias fnNtQueryInformationThread = extern(Windows) + int function( HANDLE ThreadHandle, uint ThreadInformationClass, void* buf, uint size, uint* ReturnLength ) nothrow; - enum SYNCHRONIZE = 0x00100000; - enum THREAD_GET_CONTEXT = 8; - enum THREAD_QUERY_INFORMATION = 0x40; - enum THREAD_SUSPEND_RESUME = 2; + enum SYNCHRONIZE = 0x00100000; + enum THREAD_GET_CONTEXT = 8; + enum THREAD_QUERY_INFORMATION = 0x40; + enum THREAD_SUSPEND_RESUME = 2; - /////////////////////////////////////////////////////////////////// - // get the thread environment block (TEB) of the thread with the given handle - static void** getTEB( HANDLE hnd ) nothrow - { - HANDLE nthnd = GetModuleHandleA( "NTDLL" ); - assert( nthnd, "cannot get module handle for ntdll" ); - fnNtQueryInformationThread fn = cast(fnNtQueryInformationThread) GetProcAddress( nthnd, "NtQueryInformationThread" ); - assert( fn, "cannot find NtQueryInformationThread in ntdll" ); + /////////////////////////////////////////////////////////////////// + // get the thread environment block (TEB) of the thread with the given handle + static void** getTEB( HANDLE hnd ) nothrow + { + HANDLE nthnd = GetModuleHandleA( "NTDLL" ); + assert( nthnd, "cannot get module handle for ntdll" ); + fnNtQueryInformationThread fn = cast(fnNtQueryInformationThread) GetProcAddress( nthnd, "NtQueryInformationThread" ); + assert( fn, "cannot find NtQueryInformationThread in ntdll" ); - THREAD_BASIC_INFORMATION tbi; - int Status = (*fn)(hnd, ThreadBasicInformation, &tbi, tbi.sizeof, null); - assert(Status == 0); + THREAD_BASIC_INFORMATION tbi; + int Status = (*fn)(hnd, ThreadBasicInformation, &tbi, tbi.sizeof, null); + assert(Status == 0); - return tbi.TebBaseAddress; - } + return tbi.TebBaseAddress; + } - // get the thread environment block (TEB) of the thread with the given identifier - static void** getTEB( uint id ) nothrow - { - HANDLE hnd = OpenThread( THREAD_QUERY_INFORMATION, FALSE, id ); - assert( hnd, "OpenThread failed" ); + // get the thread environment block (TEB) of the thread with the given identifier + static void** getTEB( uint id ) nothrow + { + HANDLE hnd = OpenThread( THREAD_QUERY_INFORMATION, FALSE, id ); + assert( hnd, "OpenThread failed" ); - void** teb = getTEB( hnd ); - CloseHandle( hnd ); - return teb; - } + void** teb = getTEB( hnd ); + CloseHandle( hnd ); + return teb; + } - // get linear address of TEB of current thread - static void** getTEB() nothrow + // get linear address of TEB of current thread + static void** getTEB() nothrow + { + version(Win32) { - version(Win32) - { - asm pure nothrow @nogc - { - naked; - mov EAX,FS:[0x18]; - ret; - } - } - else version(Win64) + asm pure nothrow @nogc { - asm pure nothrow @nogc - { - naked; - mov RAX,0x30; - mov RAX,GS:[RAX]; // immediate value causes fixup - ret; - } + naked; + mov EAX,FS:[0x18]; + ret; } - else + } + else version(Win64) + { + asm pure nothrow @nogc { - static assert(false); + naked; + mov RAX,0x30; + mov RAX,GS:[RAX]; // immediate value causes fixup + ret; } } - - // get the stack bottom (the top address) of the thread with the given handle - static void* getThreadStackBottom( HANDLE hnd ) nothrow + else { - void** teb = getTEB( hnd ); - return teb[1]; + static assert(false); } + } - // get the stack bottom (the top address) of the thread with the given identifier - static void* getThreadStackBottom( uint id ) nothrow - { - void** teb = getTEB( id ); - return teb[1]; - } + // get the stack bottom (the top address) of the thread with the given handle + static void* getThreadStackBottom( HANDLE hnd ) nothrow + { + void** teb = getTEB( hnd ); + return teb[1]; + } - // create a thread handle with full access to the thread with the given identifier - static HANDLE OpenThreadHandle( uint id ) nothrow - { - return OpenThread( SYNCHRONIZE|THREAD_GET_CONTEXT|THREAD_QUERY_INFORMATION|THREAD_SUSPEND_RESUME, FALSE, id ); - } + // get the stack bottom (the top address) of the thread with the given identifier + static void* getThreadStackBottom( uint id ) nothrow + { + void** teb = getTEB( id ); + return teb[1]; + } + + // create a thread handle with full access to the thread with the given identifier + static HANDLE OpenThreadHandle( uint id ) nothrow + { + return OpenThread( SYNCHRONIZE|THREAD_GET_CONTEXT|THREAD_QUERY_INFORMATION|THREAD_SUSPEND_RESUME, FALSE, id ); + } - /////////////////////////////////////////////////////////////////// - // enumerate threads of the given process calling the passed function on each thread - // using function instead of delegate here to avoid allocating closure - static bool enumProcessThreads( uint procid, bool function( uint id, void* context ) dg, void* context ) + /////////////////////////////////////////////////////////////////// + // enumerate threads of the given process calling the passed function on each thread + // using function instead of delegate here to avoid allocating closure + static bool enumProcessThreads( uint procid, bool function( uint id, void* context ) dg, void* context ) + { + HANDLE hnd = GetModuleHandleA( "NTDLL" ); + fnNtQuerySystemInformation fn = cast(fnNtQuerySystemInformation) GetProcAddress( hnd, "NtQuerySystemInformation" ); + if( !fn ) + return false; + + uint sz = 16384; + uint retLength; + HRESULT rc; + char* buf; + for( ; ; ) { - HANDLE hnd = GetModuleHandleA( "NTDLL" ); - fnNtQuerySystemInformation fn = cast(fnNtQuerySystemInformation) GetProcAddress( hnd, "NtQuerySystemInformation" ); - if( !fn ) + buf = cast(char*) core.stdc.stdlib.malloc(sz); + if(!buf) return false; + rc = fn( SystemProcessInformation, buf, sz, &retLength ); + if( rc != STATUS_INFO_LENGTH_MISMATCH ) + break; + core.stdc.stdlib.free( buf ); + sz *= 2; + } + scope(exit) core.stdc.stdlib.free( buf ); - uint sz = 16384; - uint retLength; - HRESULT rc; - char* buf; - for( ; ; ) - { - buf = cast(char*) core.stdc.stdlib.malloc(sz); - if(!buf) - return false; - rc = fn( SystemProcessInformation, buf, sz, &retLength ); - if( rc != STATUS_INFO_LENGTH_MISMATCH ) - break; - core.stdc.stdlib.free( buf ); - sz *= 2; - } - scope(exit) core.stdc.stdlib.free( buf ); - - if(rc != 0) - return false; + if(rc != 0) + return false; - auto pinfo = cast(_SYSTEM_PROCESS_INFORMATION*) buf; - auto pend = cast(_SYSTEM_PROCESS_INFORMATION*) (buf + retLength); - for( ; pinfo < pend; ) + auto pinfo = cast(_SYSTEM_PROCESS_INFORMATION*) buf; + auto pend = cast(_SYSTEM_PROCESS_INFORMATION*) (buf + retLength); + for( ; pinfo < pend; ) + { + if( pinfo.ProcessId == procid ) { - if( pinfo.ProcessId == procid ) - { - auto tinfo = cast(_SYSTEM_THREAD_INFORMATION*)(pinfo + 1); - for( int i = 0; i < pinfo.NumberOfThreads; i++, tinfo++ ) - if( tinfo.ProcessId == procid ) - if( !dg( cast(uint) tinfo.ThreadId, context ) ) // IDs are actually DWORDs - return false; - } - if( pinfo.NextEntryOffset == 0 ) - break; - pinfo = cast(_SYSTEM_PROCESS_INFORMATION*) (cast(char*) pinfo + pinfo.NextEntryOffset); + auto tinfo = cast(_SYSTEM_THREAD_INFORMATION*)(pinfo + 1); + for( int i = 0; i < pinfo.NumberOfThreads; i++, tinfo++ ) + if( tinfo.ProcessId == procid ) + if( !dg( cast(uint) tinfo.ThreadId, context ) ) // IDs are actually DWORDs + return false; } - return true; + if( pinfo.NextEntryOffset == 0 ) + break; + pinfo = cast(_SYSTEM_PROCESS_INFORMATION*) (cast(char*) pinfo + pinfo.NextEntryOffset); } + return true; + } - static bool enumProcessThreads( bool function( uint id, void* context ) dg, void* context ) - { - return enumProcessThreads( GetCurrentProcessId(), dg, context ); - } + static bool enumProcessThreads( bool function( uint id, void* context ) dg, void* context ) + { + return enumProcessThreads( GetCurrentProcessId(), dg, context ); + } - // execute function on the TLS for the given thread - alias extern(C) void function() externCVoidFunc; - static void impersonate_thread( uint id, externCVoidFunc fn ) - { - impersonate_thread(id, () => fn()); - } + // execute function on the TLS for the given thread + alias extern(C) void function() externCVoidFunc; + static void impersonate_thread( uint id, externCVoidFunc fn ) + { + impersonate_thread(id, () => fn()); + } - static void impersonate_thread( uint id, scope void delegate() dg) + static void impersonate_thread( uint id, scope void delegate() dg) + { + if( id == GetCurrentThreadId() ) { - if( id == GetCurrentThreadId() ) - { - dg(); - return; - } + dg(); + return; + } - // temporarily set current TLS array pointer to the array pointer of the referenced thread - void** curteb = getTEB(); - void** teb = getTEB( id ); - assert( teb && curteb ); + // temporarily set current TLS array pointer to the array pointer of the referenced thread + void** curteb = getTEB(); + void** teb = getTEB( id ); + assert( teb && curteb ); - void** curtlsarray = cast(void**) curteb[11]; - void** tlsarray = cast(void**) teb[11]; - if( !curtlsarray || !tlsarray ) - return; + void** curtlsarray = cast(void**) curteb[11]; + void** tlsarray = cast(void**) teb[11]; + if( !curtlsarray || !tlsarray ) + return; - curteb[11] = tlsarray; - dg(); - curteb[11] = curtlsarray; - } + curteb[11] = tlsarray; + dg(); + curteb[11] = curtlsarray; } +} public: - // forward as few symbols as possible into the "global" name space - alias thread_aux.getTEB getTEB; - alias thread_aux.getThreadStackBottom getThreadStackBottom; - alias thread_aux.OpenThreadHandle OpenThreadHandle; - alias thread_aux.enumProcessThreads enumProcessThreads; - alias thread_aux.impersonate_thread impersonate_thread; - - // get the start of the TLS memory of the thread with the given handle - void* GetTlsDataAddress( HANDLE hnd ) nothrow - { - if( void** teb = getTEB( hnd ) ) - if( void** tlsarray = cast(void**) teb[11] ) - return tlsarray[_tls_index]; - return null; - } +// forward as few symbols as possible into the "global" name space +alias thread_aux.getTEB getTEB; +alias thread_aux.getThreadStackBottom getThreadStackBottom; +alias thread_aux.OpenThreadHandle OpenThreadHandle; +alias thread_aux.enumProcessThreads enumProcessThreads; +alias thread_aux.impersonate_thread impersonate_thread; + +// get the start of the TLS memory of the thread with the given handle +void* GetTlsDataAddress( HANDLE hnd ) nothrow +{ + if( void** teb = getTEB( hnd ) ) + if( void** tlsarray = cast(void**) teb[11] ) + return tlsarray[_tls_index]; + return null; +} - // get the start of the TLS memory of the thread with the given identifier - void* GetTlsDataAddress( uint id ) nothrow - { - HANDLE hnd = OpenThread( thread_aux.THREAD_QUERY_INFORMATION, FALSE, id ); - assert( hnd, "OpenThread failed" ); +// get the start of the TLS memory of the thread with the given identifier +void* GetTlsDataAddress( uint id ) nothrow +{ + HANDLE hnd = OpenThread( thread_aux.THREAD_QUERY_INFORMATION, FALSE, id ); + assert( hnd, "OpenThread failed" ); - void* tls = GetTlsDataAddress( hnd ); - CloseHandle( hnd ); - return tls; - } + void* tls = GetTlsDataAddress( hnd ); + CloseHandle( hnd ); + return tls; +} - /////////////////////////////////////////////////////////////////// - // run rt_moduleTlsCtor in the context of the given thread - void thread_moduleTlsCtor( uint id ) - { - thread_aux.impersonate_thread(id, &rt_moduleTlsCtor); - } +/////////////////////////////////////////////////////////////////// +// run rt_moduleTlsCtor in the context of the given thread +void thread_moduleTlsCtor( uint id ) +{ + thread_aux.impersonate_thread(id, &rt_moduleTlsCtor); +} - /////////////////////////////////////////////////////////////////// - // run rt_moduleTlsDtor in the context of the given thread - void thread_moduleTlsDtor( uint id ) - { - thread_aux.impersonate_thread(id, &rt_moduleTlsDtor); - } +/////////////////////////////////////////////////////////////////// +// run rt_moduleTlsDtor in the context of the given thread +void thread_moduleTlsDtor( uint id ) +{ + thread_aux.impersonate_thread(id, &rt_moduleTlsDtor); } diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index 6da96a3b17..79e4b78444 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_tlhelp32.d) */ module core.sys.windows.tlhelp32; +version (Windows): private import core.sys.windows.windef; diff --git a/src/core/sys/windows/tmschema.d b/src/core/sys/windows/tmschema.d index 65302f1280..93159c591e 100644 --- a/src/core/sys/windows/tmschema.d +++ b/src/core/sys/windows/tmschema.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_tmschema.d) */ module core.sys.windows.tmschema; +version (Windows): /* BUTTON parts */ enum { diff --git a/src/core/sys/windows/unknwn.d b/src/core/sys/windows/unknwn.d index e9ce64310c..f3c392e619 100644 --- a/src/core/sys/windows/unknwn.d +++ b/src/core/sys/windows/unknwn.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_unknwn.d) */ module core.sys.windows.unknwn; +version (Windows): import core.sys.windows.objfwd, core.sys.windows.windef, core.sys.windows.wtypes; private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/uuid.d b/src/core/sys/windows/uuid.d index c56a9d6bbc..91d40d0bd3 100644 --- a/src/core/sys/windows/uuid.d +++ b/src/core/sys/windows/uuid.d @@ -1,4 +1,5 @@ module core.sys.windows.uuid; +version (Windows): import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index 5312f0cb16..bf5ee5d104 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -8,6 +8,7 @@ */ module core.sys.windows.vfw; +version (Windows): pragma(lib, "vfw32"); private import diff --git a/src/core/sys/windows/w32api.d b/src/core/sys/windows/w32api.d index f91efda20f..dd86cee861 100644 --- a/src/core/sys/windows/w32api.d +++ b/src/core/sys/windows/w32api.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_w32api.d) */ module core.sys.windows.w32api; +version (Windows): enum __W32API_VERSION = 3.17; enum __W32API_MAJOR_VERSION = 3; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index c0f3f48062..9f1b15c6e5 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winbase.d) */ module core.sys.windows.winbase; +version (Windows): pragma(lib, "kernel32"); /** diff --git a/src/core/sys/windows/winber.d b/src/core/sys/windows/winber.d index a231a3d8ec..623eca0569 100644 --- a/src/core/sys/windows/winber.d +++ b/src/core/sys/windows/winber.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winber.d) */ module core.sys.windows.winber; +version (Windows): /* Comment from MinGW winber.h - Header file for the Windows LDAP Basic Encoding Rules API diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index da94a75715..711b05a5dd 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_wincon.d) */ module core.sys.windows.wincon; +version (Windows): pragma(lib, "kernel32"); private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index 55d8aa15bf..27c8a81b17 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_wincrypt.d) */ module core.sys.windows.wincrypt; +version (Windows): private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index f24914e526..023da901da 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_windef.d) */ module core.sys.windows.windef; +version (Windows): public import core.sys.windows.winnt; private import core.sys.windows.w32api; diff --git a/src/core/sys/windows/windows.d b/src/core/sys/windows/windows.d index c9ac5bc810..60ef2e621c 100644 --- a/src/core/sys/windows/windows.d +++ b/src/core/sys/windows/windows.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_windows.d) */ module core.sys.windows.windows; +version (Windows): /* windows.h - main header file for the Win32 API diff --git a/src/core/sys/windows/winerror.d b/src/core/sys/windows/winerror.d index 5a01c42397..ba4ee34d51 100644 --- a/src/core/sys/windows/winerror.d +++ b/src/core/sys/windows/winerror.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winerror.d) */ module core.sys.windows.winerror; +version (Windows): /* Comments from the Mingw header: * WAIT_TIMEOUT is also defined in winbase.h diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index 4a183b988f..7cac9730a7 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_wingdi.d) */ module core.sys.windows.wingdi; +version (Windows): pragma(lib, "gdi32"); // FIXME: clean up Windows version support diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d index 1f6fa43973..a54d2c3e78 100644 --- a/src/core/sys/windows/winhttp.d +++ b/src/core/sys/windows/winhttp.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winhttp.d) */ module core.sys.windows.winhttp; +version (Windows): pragma(lib, "winhttp"); // FIXME: Grouping of constants. Windows SDK doesn't make this entirely clear // FIXME: Verify WINHTTP_STATUS_CALLBACK function declaration works correctly diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index 2a6391d35e..34b2818471 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_wininet.d) */ module core.sys.windows.wininet; +version (Windows): pragma(lib, "wininet"); // FIXME: check types and grouping of constants diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d index 5f50520933..5d03888e45 100644 --- a/src/core/sys/windows/winioctl.d +++ b/src/core/sys/windows/winioctl.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winioctl.d) */ module core.sys.windows.winioctl; +version (Windows): // FIXME: check types of some constants diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index 6646cf6568..e341fbb7ec 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winldap.d) */ module core.sys.windows.winldap; +version (Windows): /* Comment from MinGW winldap.h - Header file for the Windows LDAP API diff --git a/src/core/sys/windows/winnetwk.d b/src/core/sys/windows/winnetwk.d index 84ec2a1095..a43bd9d4c7 100644 --- a/src/core/sys/windows/winnetwk.d +++ b/src/core/sys/windows/winnetwk.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winnetwk.d) */ module core.sys.windows.winnetwk; +version (Windows): pragma(lib, "mpr"); private import core.sys.windows.winbase, core.sys.windows.winerror, core.sys.windows.winnt; diff --git a/src/core/sys/windows/winnls.d b/src/core/sys/windows/winnls.d index 958f3d3a1c..118dbeb548 100644 --- a/src/core/sys/windows/winnls.d +++ b/src/core/sys/windows/winnls.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winnls.d) */ module core.sys.windows.winnls; +version (Windows): pragma(lib, "kernel32"); private import core.sys.windows.basetsd, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index ea8d513c5c..c4427e5683 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winnt.d) */ module core.sys.windows.winnt; +version (Windows): public import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winerror; private import core.sys.windows.w32api; diff --git a/src/core/sys/windows/winperf.d b/src/core/sys/windows/winperf.d index 2a6e174af6..b9ee7d9d66 100644 --- a/src/core/sys/windows/winperf.d +++ b/src/core/sys/windows/winperf.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winperf.d) */ module core.sys.windows.winperf; +version (Windows): import core.sys.windows.windef; import core.sys.windows.winbase; // for SYSTEMTIME diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index e6c84eb5ee..1ac08a26f1 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winreg.d) */ module core.sys.windows.winreg; +version (Windows): pragma(lib, "advapi32"); private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d index c27d2ebcdd..bfe0bea661 100644 --- a/src/core/sys/windows/winspool.d +++ b/src/core/sys/windows/winspool.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winspool.d) */ module core.sys.windows.winspool; +version (Windows): pragma(lib, "winspool"); private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.wingdi; diff --git a/src/core/sys/windows/winsvc.d b/src/core/sys/windows/winsvc.d index 4c32077f35..1161cb928c 100644 --- a/src/core/sys/windows/winsvc.d +++ b/src/core/sys/windows/winsvc.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winsvc.d) */ module core.sys.windows.winsvc; +version (Windows): pragma(lib, "advapi32"); private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index ef0e086170..1c7590c23a 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winuser.d) */ module core.sys.windows.winuser; +version (Windows): pragma(lib, "user32"); // Conversion Notes: diff --git a/src/core/sys/windows/winver.d b/src/core/sys/windows/winver.d index 2c375044c6..122a94e4f7 100644 --- a/src/core/sys/windows/winver.d +++ b/src/core/sys/windows/winver.d @@ -8,6 +8,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_winver.d) */ module core.sys.windows.winver; +version (Windows): pragma(lib, "version"); private import core.sys.windows.windef; diff --git a/src/core/sys/windows/wtsapi32.d b/src/core/sys/windows/wtsapi32.d index c613396a44..70826389a8 100644 --- a/src/core/sys/windows/wtsapi32.d +++ b/src/core/sys/windows/wtsapi32.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_wtsapi32.d) */ module core.sys.windows.wtsapi32; +version (Windows): pragma(lib, "wtsapi32"); private import core.sys.windows.w32api; import core.sys.windows.windef; diff --git a/src/core/sys/windows/wtypes.d b/src/core/sys/windows/wtypes.d index 3e65d70448..b160b4785d 100644 --- a/src/core/sys/windows/wtypes.d +++ b/src/core/sys/windows/wtypes.d @@ -7,6 +7,7 @@ * Source: $(DRUNTIMESRC src/core/sys/windows/_wtypes.d) */ module core.sys.windows.wtypes; +version (Windows): import core.sys.windows.rpc, core.sys.windows.rpcndr; private import core.sys.windows.windef; From 7827ee4302a9976e9bd6216607925bd08df187aa Mon Sep 17 00:00:00 2001 From: "Adam D. Ruppe" Date: Fri, 9 Oct 2015 10:56:08 -0400 Subject: [PATCH 137/768] the druntime build system is error-prone --- mak/MANIFEST | 1 + mak/SRCS | 2 ++ 2 files changed, 3 insertions(+) diff --git a/mak/MANIFEST b/mak/MANIFEST index 7be926bb7a..4b8d960c7f 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -94,6 +94,7 @@ MANIFEST=\ src\core\sys\linux\stdio.d \ src\core\sys\linux\termios.d \ src\core\sys\linux\time.d \ + src\core\sys\linux\timerfd.d \ src\core\sys\linux\tipc.d \ \ src\core\sys\linux\sys\inotify.d \ diff --git a/mak/SRCS b/mak/SRCS index 3f331bf4c1..f2b4cb5b51 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -48,7 +48,9 @@ SRCS=\ src\core\sys\freebsd\execinfo.d \ src\core\sys\freebsd\sys\event.d \ \ + src\core\sys\linux\epoll.d \ src\core\sys\linux\stdio.d \ + src\core\sys\linux\timerfd.d \ src\core\sys\linux\tipc.d \ \ src\core\sys\posix\signal.d \ From 6601ae8c59473c43fbb66d38bca2e6f9a92c3a1c Mon Sep 17 00:00:00 2001 From: "Adam D. Ruppe" Date: Fri, 9 Oct 2015 11:07:53 -0400 Subject: [PATCH 138/768] seriously, THREE files?!? --- mak/COPY | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mak/COPY b/mak/COPY index ca5f8cfafd..94bfd5f1a9 100644 --- a/mak/COPY +++ b/mak/COPY @@ -64,8 +64,10 @@ COPY=\ $(IMPDIR)\core\sys\linux\execinfo.d \ $(IMPDIR)\core\sys\linux\fcntl.d \ $(IMPDIR)\core\sys\linux\link.d \ + $(IMPDIR)\core\sys\linux\stdio.d \ $(IMPDIR)\core\sys\linux\termios.d \ $(IMPDIR)\core\sys\linux\time.d \ + $(IMPDIR)\core\sys\linux\timerfd.d \ $(IMPDIR)\core\sys\linux\tipc.d \ $(IMPDIR)\core\sys\linux\unistd.d \ \ From 1a9e8090db248ba2481310407bc15b59a2b594c6 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 9 Oct 2015 18:05:02 -0700 Subject: [PATCH 139/768] Treat division by 0 as an error in Duration and consolidate code. Duration should never have checked for division by 0 and thrown a TimeException when it occurred. The OS/hardware already checks for that, and it should be considered a logic error. Checking for it and possibly throwing just slows the code down and makes it so that it can't be @nogc. This is technically a breaking change, but it will only break code which doesn't bother to avoid dividing by 0 and then catches TimeException when it occurs, and such code is likely extremely rare, if it exists at all. Given the fact that the odds of actually breaking code are extremely low and that this allows us to make Duration fully @nogc except for toString, I think that it's worth the risk. --- src/core/time.d | 127 +++++++++++------------------------------------- 1 file changed, 28 insertions(+), 99 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index c928a7135a..11cac447eb 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -465,7 +465,6 @@ public: return -1; if(_hnsecs > rhs._hnsecs) return 1; - return 0; } @@ -681,7 +680,6 @@ public: mixin("_hnsecs " ~ op ~ "= rhs._hnsecs;"); else if(is(_Unqual!D == TickDuration)) mixin("_hnsecs " ~ op ~ "= rhs.hnsecs;"); - return this; } @@ -770,26 +768,24 @@ public: } - // Note: opBinary!"*" and opBinary!"/" have to be implemented separately - // because opBinary!"/" may throw TimeException, and opBinary!"*" is nothrow - /++ - Multiplies the duration by an integer value. + Multiplies or divides the duration by an integer value. The legal types of arithmetic for $(D Duration) using this operator overload are $(TABLE $(TR $(TD Duration) $(TD *) $(TD long) $(TD -->) $(TD Duration)) + $(TR $(TD Duration) $(TD /) $(TD long) $(TD -->) $(TD Duration)) ) Params: value = The value to multiply this $(D Duration) by. +/ Duration opBinary(string op)(long value) const nothrow @nogc - if(op == "*") + if(op == "*" || op == "/") { - return Duration(_hnsecs * value); + mixin("return Duration(_hnsecs " ~ op ~ " value);"); } unittest @@ -813,9 +809,27 @@ public: } } + unittest + { + foreach(D; _TypeTuple!(Duration, const Duration, immutable Duration)) + { + assert((cast(D)Duration(5)) / 7 == Duration(0)); + assert((cast(D)Duration(7)) / 5 == Duration(1)); + + assert((cast(D)Duration(5)) / -7 == Duration(0)); + assert((cast(D)Duration(7)) / -5 == Duration(-1)); + + assert((cast(D)Duration(-5)) / 7 == Duration(0)); + assert((cast(D)Duration(-7)) / 5 == Duration(-1)); + + assert((cast(D)Duration(-5)) / -7 == Duration(0)); + assert((cast(D)Duration(-7)) / -5 == Duration(1)); + } + } + /++ - Multiplies the duration by an integer value as well as + Multiplies/Divides the duration by an integer value as well as assigning the result to this $(D Duration). The legal types of arithmetic for $(D Duration) using this operator @@ -823,17 +837,17 @@ public: $(TABLE $(TR $(TD Duration) $(TD *) $(TD long) $(TD -->) $(TD Duration)) + $(TR $(TD Duration) $(TD /) $(TD long) $(TD -->) $(TD Duration)) ) Params: - value = The value to multiply this $(D Duration) by. + value = The value to multiply/divide this $(D Duration) by. +/ ref Duration opOpAssign(string op)(long value) nothrow @nogc - if(op == "*") + if(op == "*" || op == "/") { - _hnsecs *= value; - - return this; + mixin("_hnsecs " ~ op ~ "= value;"); + return this; } unittest @@ -868,93 +882,8 @@ public: static assert(!__traits(compiles, idur *= 12)); } - - /++ - Divides the duration by an integer value. - - The legal types of arithmetic for $(D Duration) using this operator - overload are - - $(TABLE - $(TR $(TD Duration) $(TD /) $(TD long) $(TD -->) $(TD Duration)) - ) - - Params: - value = The value to divide from this duration. - - Throws: - $(D TimeException) if an attempt to divide by $(D 0) is made. - +/ - Duration opBinary(string op)(long value) const - if(op == "/") - { - if(value == 0) - throw new TimeException("Attempted division by 0."); - - return Duration(_hnsecs / value); - } - - unittest - { - //Unfortunately, putting these inside of the foreach loop results in - //linker errors regarding multiple definitions and the lambdas. - _assertThrown!TimeException((){Duration(5) / 0;}()); - _assertThrown!TimeException((){Duration(-5) / 0;}()); - _assertThrown!TimeException((){(cast(const Duration)Duration(5)) / 0;}()); - _assertThrown!TimeException((){(cast(const Duration)Duration(-5)) / 0;}()); - _assertThrown!TimeException((){(cast(immutable Duration)Duration(5)) / 0;}()); - _assertThrown!TimeException((){(cast(immutable Duration)Duration(-5)) / 0;}()); - - foreach(D; _TypeTuple!(Duration, const Duration, immutable Duration)) - { - assert((cast(D)Duration(5)) / 7 == Duration(0)); - assert((cast(D)Duration(7)) / 5 == Duration(1)); - - assert((cast(D)Duration(5)) / -7 == Duration(0)); - assert((cast(D)Duration(7)) / -5 == Duration(-1)); - - assert((cast(D)Duration(-5)) / 7 == Duration(0)); - assert((cast(D)Duration(-7)) / 5 == Duration(-1)); - - assert((cast(D)Duration(-5)) / -7 == Duration(0)); - assert((cast(D)Duration(-7)) / -5 == Duration(1)); - } - } - - - /++ - Divides the duration by an integer value as well as - assigning the result to this $(D Duration). - - The legal types of arithmetic for $(D Duration) using this operator - overload are - - $(TABLE - $(TR $(TD Duration) $(TD /) $(TD long) $(TD -->) $(TD Duration)) - ) - - Params: - value = The value to divide from this $(D Duration). - - Throws: - $(D TimeException) if an attempt to divide by $(D 0) is made. - +/ - ref Duration opOpAssign(string op)(long value) - if(op == "/") - { - if(value == 0) - throw new TimeException("Attempted division by 0."); - - _hnsecs /= value; - - return this; - } - unittest { - _assertThrown!TimeException((){Duration(5) /= 0;}()); - _assertThrown!TimeException((){Duration(-5) /= 0;}()); - static void test(Duration actual, long value, Duration expected, size_t line = __LINE__) { if((actual /= value) != expected) From bf7b39e6dcabc8d95f1ef81f639ca898a1628e77 Mon Sep 17 00:00:00 2001 From: Tomer Filiba Date: Mon, 12 Oct 2015 11:27:50 +0300 Subject: [PATCH 140/768] SIGRTMIN/MAX: Add constants for FreeBSD --- src/core/sys/posix/signal.d | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index 0860c2eafa..137c9ec93c 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -149,7 +149,12 @@ else version( linux ) return sig; } } -// Note: it appears that FreeBSD/OSX do not support realtime signals +else version (FreeBSD) { + // https://github.com/freebsd/freebsd/blob/e79c62ff68fc74d88cb6f479859f6fae9baa5101/sys/sys/signal.h#L117 + enum SIGRTMIN = 65; + enum SIGRTMAX = 126; +} +// Note: it appears that FreeBSD (prior to 7) and OSX do not support realtime signals version( linux ) { From ee306cc93e7feb894f8fb618b4aae340878c0d54 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Mon, 12 Oct 2015 18:16:51 +0200 Subject: [PATCH 141/768] fix Issue 14993 - segfault for InvalidMemoryOperationError - creating a stacktrace currently uses the GC (thus might recurse infinetely when the GC throws an exception itself) - suppress stack traces for OutOfMemoryError, InvalidMemoryOperationError, and FinalizeError --- src/core/exception.d | 31 ++++++++++++++++++- src/gc/gc.d | 18 +++++------ src/rt/lifetime.d | 21 +++++-------- test/exceptions/Makefile | 29 +++++++---------- .../exceptions/src/invalid_memory_operation.d | 12 +++++++ 5 files changed, 69 insertions(+), 42 deletions(-) create mode 100644 test/exceptions/src/invalid_memory_operation.d diff --git a/src/core/exception.d b/src/core/exception.d index fe3322a786..f3581cb292 100644 --- a/src/core/exception.d +++ b/src/core/exception.d @@ -130,6 +130,7 @@ class FinalizeError : Error this( TypeInfo ci, string file = __FILE__, size_t line = __LINE__, Throwable next = null ) @safe pure nothrow @nogc { super( "Finalization error", file, line, next ); + super.info = SuppressTraceInfo.instance; info = ci; } @@ -214,7 +215,14 @@ class OutOfMemoryError : Error { this(string file = __FILE__, size_t line = __LINE__, Throwable next = null ) @safe pure nothrow @nogc { - super( "Memory allocation failed", file, line, next ); + this(true, file, line, next); + } + + this(bool trace, string file = __FILE__, size_t line = __LINE__, Throwable next = null ) @safe pure nothrow @nogc + { + super("Memory allocation failed", file, line, next); + if (!trace) + this.info = SuppressTraceInfo.instance; } override string toString() const @trusted @@ -256,6 +264,7 @@ class InvalidMemoryOperationError : Error this(string file = __FILE__, size_t line = __LINE__, Throwable next = null ) @safe pure nothrow @nogc { super( "Invalid memory operation", file, line, next ); + this.info = SuppressTraceInfo.instance; } override string toString() const @trusted @@ -519,6 +528,12 @@ extern (C) void onOutOfMemoryError(void* pretend_sideffect = null) @trusted pure throw staticError!OutOfMemoryError(); } +extern (C) void onOutOfMemoryErrorNoGC() @trusted nothrow @nogc +{ + // suppress stacktrace until they are @nogc + throw staticError!OutOfMemoryError(false); +} + /** * A callback for invalid memory operations in D. An @@ -664,3 +679,17 @@ private T staticError(T, Args...)(auto ref Args args) res.__ctor(args); return res; } + +// Suppress traceinfo generation when the GC cannot be used. Workaround for +// Bugzilla 14993. We should make stack traces @nogc instead. +private class SuppressTraceInfo : Throwable.TraceInfo +{ + override int opApply(scope int delegate(ref const(char[]))) const { return 0; } + override int opApply(scope int delegate(ref size_t, ref const(char[]))) const { return 0; } + override string toString() const { return null; } + static SuppressTraceInfo instance() @trusted @nogc pure nothrow + { + static immutable SuppressTraceInfo it = new SuppressTraceInfo; + return cast(SuppressTraceInfo)it; + } +} diff --git a/src/gc/gc.d b/src/gc/gc.d index 3655186f7b..4ae84f3069 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -137,7 +137,7 @@ private // Declared as an extern instead of importing core.exception // to avoid inlining - see issue 13725. void onInvalidMemoryOperationError() nothrow; - void onOutOfMemoryError() nothrow; + void onOutOfMemoryErrorNoGC() @nogc nothrow; } enum @@ -199,14 +199,14 @@ debug (LOGGING) { data = cast(Log*)cstdlib.malloc(allocdim * Log.sizeof); if (!data && allocdim) - onOutOfMemoryError(); + onOutOfMemoryErrorNoGC(); } else { Log *newdata; newdata = cast(Log*)cstdlib.malloc(allocdim * Log.sizeof); if (!newdata && allocdim) - onOutOfMemoryError(); + onOutOfMemoryErrorNoGC(); memcpy(newdata, data, dim * Log.sizeof); cstdlib.free(data); data = newdata; @@ -296,7 +296,7 @@ struct GC gcLock.__ctor(); gcx = cast(Gcx*)cstdlib.calloc(1, Gcx.sizeof); if (!gcx) - onOutOfMemoryError(); + onOutOfMemoryErrorNoGC(); gcx.initialize(); if (config.initReserve) @@ -526,7 +526,7 @@ struct GC auto p = gcx.alloc(size + SENTINEL_EXTRA, alloc_size, bits); if (!p) - onOutOfMemoryError(); + onOutOfMemoryErrorNoGC(); debug (SENTINEL) { @@ -1805,7 +1805,7 @@ struct Gcx // tryAlloc will succeed if a new pool was allocated above, if it fails allocate a new pool now if (!tryAlloc() && (!newPool(1, false) || !tryAlloc())) // out of luck or memory - onOutOfMemoryError(); + onOutOfMemoryErrorNoGC(); } assert(p !is null); @@ -2021,7 +2021,7 @@ struct Gcx enum initSize = 64 * 1024; // Windows VirtualAlloc granularity immutable ncap = _cap ? 2 * _cap : initSize / Range.sizeof; auto p = cast(Range*)os_mem_map(ncap * Range.sizeof); - if (p is null) onOutOfMemoryError(); + if (p is null) onOutOfMemoryErrorNoGC(); if (_p !is null) { p[0 .. _length] = _p[0 .. _length]; @@ -2722,13 +2722,13 @@ struct Pool pagetable = cast(ubyte*)cstdlib.malloc(npages); if (!pagetable) - onOutOfMemoryError(); + onOutOfMemoryErrorNoGC(); if(isLargeObject) { bPageOffsets = cast(uint*)cstdlib.malloc(npages * uint.sizeof); if (!bPageOffsets) - onOutOfMemoryError(); + onOutOfMemoryErrorNoGC(); } memset(pagetable, B_FREE, npages); diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index 7433dc9c65..15d89bd77f 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -2571,16 +2571,13 @@ unittest import core.exception; static class C1 { - // preallocate to not call new in destructor - __gshared E exc = new E("test onFinalizeError"); - ~this() - { - throw exc; - } + E exc; + this(E exc) { this.exc = exc; } + ~this() { throw exc; } } bool caught = false; - C1 c = new C1; + C1 c = new C1(new E("test onFinalizeError")); try { GC.runFinalizers((cast(uint*)&C1.__dtor)[0..1]); @@ -2613,16 +2610,12 @@ unittest import core.exception; static struct S1 { - // preallocate to not call new in destructor - __gshared E exc = new E("test onFinalizeError"); - ~this() - { - throw exc; - } + E exc; + ~this() { throw exc; } } bool caught = false; - S1* s = new S1; + S1* s = new S1(new E("test onFinalizeError")); try { GC.runFinalizers((cast(char*)(typeid(S1).xdtor))[0..1]); diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index b752f2587e..19372218dc 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -1,6 +1,6 @@ include ../common.mak -TESTS:=stderr_msg unittest_assert +TESTS:=stderr_msg unittest_assert invalid_memory_operation ifeq ($(OS)-$(BUILD),linux-debug) TESTS:=$(TESTS) line_trace endif @@ -14,26 +14,19 @@ SED:=sed .PHONY: all clean all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) -$(ROOT)/%.done: $(ROOT)/% - @echo Testing $* - $(QUIET)$(ROOT)/$* $(RUN_ARGS) - @touch $@ - -$(ROOT)/stderr_msg.done: $(ROOT)/stderr_msg - @echo Testing stderr_msg - $(QUIET)./$(ROOT)/stderr_msg $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF "stderr_msg msg" - @touch $@ - -$(ROOT)/unittest_assert.done: $(ROOT)/unittest_assert - @echo Testing unittest_assert - $(QUIET)./$(ROOT)/unittest_assert $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF "unittest_assert msg" - @touch $@ - $(ROOT)/line_trace.done: $(ROOT)/line_trace @echo Testing line_trace - @rm -f $(ROOT)/line_trace.output - $(QUIET)./$(ROOT)/line_trace $(RUN_ARGS) > $(ROOT)/line_trace.output + $(QUIET)$(ROOT)/line_trace $(RUN_ARGS) > $(ROOT)/line_trace.output $(QUIET)$(SED) "s/\[0x[0-9a-f]*\]/\[ADDR\]/g" $(ROOT)/line_trace.output | $(DIFF) line_trace.exp - + @rm -f $(ROOT)/line_trace.output + @touch $@ + +$(ROOT)/stderr_msg.done: STDERR_EXP="stderr_msg msg" +$(ROOT)/unittest_assert.done: STDERR_EXP="unittest_assert msg" +$(ROOT)/invalid_memory_operation.done: STDERR_EXP="InvalidMemoryOperationError" +$(ROOT)/%.done: $(ROOT)/% + @echo Testing $* + $(QUIET)$(ROOT)/$* $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) @touch $@ $(ROOT)/unittest_assert: DFLAGS+=-unittest diff --git a/test/exceptions/src/invalid_memory_operation.d b/test/exceptions/src/invalid_memory_operation.d new file mode 100644 index 0000000000..1cf1a9fd4b --- /dev/null +++ b/test/exceptions/src/invalid_memory_operation.d @@ -0,0 +1,12 @@ +struct S +{ + ~this() + { + new int; + } +} + +void main() +{ + new S; +} From 2c90e06f95e5f760a1782c97a9882a6ff75bfeda Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 8 Oct 2015 04:04:13 +0000 Subject: [PATCH 142/768] core.sys.windows.lmshare: Fix library file name --- src/core/sys/windows/lmshare.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/windows/lmshare.d b/src/core/sys/windows/lmshare.d index dca2a57633..96db240fcb 100644 --- a/src/core/sys/windows/lmshare.d +++ b/src/core/sys/windows/lmshare.d @@ -8,7 +8,7 @@ */ module core.sys.windows.lmshare; version (Windows): -pragma(lib, "netapi"); +pragma(lib, "netapi32"); import core.sys.windows.lmcons; private import core.sys.windows.w32api, core.sys.windows.windef; From 3b89c4a1794f45864d3a6c8e453b0da7707e9673 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 04:00:12 +0000 Subject: [PATCH 143/768] Add duplicates test generator script --- winhlp/dupcheck/dupcheck.d | 110 +++++++++++++++++++++++++++++++++ winhlp/dupcheck/exclusions.txt | 12 ++++ 2 files changed, 122 insertions(+) create mode 100644 winhlp/dupcheck/dupcheck.d create mode 100644 winhlp/dupcheck/exclusions.txt diff --git a/winhlp/dupcheck/dupcheck.d b/winhlp/dupcheck/dupcheck.d new file mode 100644 index 0000000000..3eed55a9f1 --- /dev/null +++ b/winhlp/dupcheck/dupcheck.d @@ -0,0 +1,110 @@ +import std.algorithm.iteration; +import std.algorithm.searching; +import std.algorithm.sorting; +import std.array; +import std.conv; +import std.demangle; +import std.file; +import std.format; +import std.process; +import std.range; +import std.stdio; + +import ae.sys.persistence; +import ae.utils.array; +import ae.utils.json; +import ae.utils.text; + +int main() +{ + static struct Member + { + string file, name, kind; + uint line; + @JSONName("char") + uint char_; + + string protection; + string[] selective; + string[] storageClass; + string deco; + string originalType; + Member[] parameters; + string init; + Member[] members; + string type; + uint endline, endchar; + uint offset = uint.max; + @JSONName("default") + string default_; + string defaultDeco; + string defaultValue; + string base; + string baseDeco; + string specValue; + string defaultAlias; + @JSONName("in") + Member* in_; + @JSONName("out") + Member* out_; + string[] overrides; + string[string] renamed; + string[] interfaces; + @JSONName("alias") + string alias_; + @JSONName("align") + uint align_; + string specAlias; + string value; + string constraint; + } + + bool[string][string][2] sets; + + auto exclusions = PersistentStringSet("exclusions.txt"); + + auto modules = + "druntime.json".readText.jsonParse!(Member[]) ~ + "phobos.json" .readText.jsonParse!(Member[]); + foreach (m; modules) + { + if (!m.name.length || !(m.name.startsWith("core.") || m.name.startsWith("std.") || m.name.startsWith("etc.")) || m.name in exclusions) + continue; + int setIndex = + (m.name.startsWith("core.sys.windows.") + && !m.name.split(".")[3].isOneOf("com", "dbghelp", "dll", "stacktrace", "stat", "threadaux", "winsock2")) + ? 0 : 1; + + foreach (d; m.members) + if (!d.kind.isOneOf("import") && (m.name ~ "." ~ d.name) !in exclusions) + sets[setIndex][d.name][m.name] = true; + } + + auto o = File("duptests.d", "wb"); + + bool[string][2] neededModules; + foreach (name; sets[0].byKey) + if (name in sets[1]) + foreach (set; sets) + foreach (i, m; set[name].keys) + neededModules[i][m] = true; + + foreach (set; neededModules) + { + foreach (name; set.keys.sort()) + o.writefln("import %s;", name); + o.writeln(); + } + + foreach (name; sets[0].byKeyValue.array.sort!((a, b) => a.value.byKey.front < b.value.byKey.front).map!(pair => pair.key)) + if (name in sets[1]) + { + o.writefln("// Duplicate symbol: %s (%-(%s, %) / %-(%s, %))", name, sets[0][name].byKey, sets[1][name].byKey); + o.writefln("alias local_%s = %s;", name, name); + o.writeln(); + } + + o.close(); + + return spawnProcess(["dmd", "-I../../src", "-o-", "-d", "duptests.d"]).wait(); +} diff --git a/winhlp/dupcheck/exclusions.txt b/winhlp/dupcheck/exclusions.txt new file mode 100644 index 0000000000..43cf15e995 --- /dev/null +++ b/winhlp/dupcheck/exclusions.txt @@ -0,0 +1,12 @@ +etc.c.curl.LONG + +etc.c.odbc.sql +etc.c.odbc.sqltypes +etc.c.odbc.sqlext +etc.c.odbc.sqlucode + +std.concurrency.MessageBox + +std.uuid + +std.windows.registry.REGSAM From ef233718d55d70aa3b990f9f444cbf6a930a71ae Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 04:02:10 +0000 Subject: [PATCH 144/768] Consolidate duplicate declarations --- src/core/sys/windows/basetyps.d | 7 +- src/core/sys/windows/com.d | 252 +++++---------------------- src/core/sys/windows/dbghelp_types.d | 2 +- src/core/sys/windows/wtypes.d | 13 +- src/core/thread.d | 3 - 5 files changed, 62 insertions(+), 215 deletions(-) diff --git a/src/core/sys/windows/basetyps.d b/src/core/sys/windows/basetyps.d index 5ab6528e3b..2538ed9a47 100644 --- a/src/core/sys/windows/basetyps.d +++ b/src/core/sys/windows/basetyps.d @@ -12,13 +12,16 @@ version (Windows): private import core.sys.windows.windef, core.sys.windows.basetsd; align(1) struct GUID { // size is 16 + align(1): DWORD Data1; WORD Data2; WORD Data3; BYTE[8] Data4; } -alias GUID UUID, IID, CLSID, FMTID, uuid_t; +alias GUID UUID, /*IID, CLSID, */FMTID, uuid_t; +alias IID = const(GUID); +alias CLSID = const(GUID); + alias GUID* LPGUID, LPCLSID, LPIID; alias const(GUID)* LPCGUID, REFGUID, REFIID, REFCLSID, REFFMTID; - alias uint error_status_t, PROPID; diff --git a/src/core/sys/windows/com.d b/src/core/sys/windows/com.d index 215a55fa9d..15b3d9db07 100644 --- a/src/core/sys/windows/com.d +++ b/src/core/sys/windows/com.d @@ -7,214 +7,58 @@ import core.atomic; import core.sys.windows.windows; //import std.string; -alias WCHAR OLECHAR; -alias LPOLESTR = OLECHAR*; -alias LPCOLESTR = OLECHAR*; - -enum -{ - rmm = 23, // OLE 2 version number info - rup = 639, -} - -enum : int -{ - S_OK = 0, - S_FALSE = 0x00000001, - NOERROR = 0, - E_NOTIMPL = cast(int)0x80004001, - E_NOINTERFACE = cast(int)0x80004002, - E_POINTER = cast(int)0x80004003, - E_ABORT = cast(int)0x80004004, - E_FAIL = cast(int)0x80004005, - E_HANDLE = cast(int)0x80070006, - CLASS_E_NOAGGREGATION = cast(int)0x80040110, - E_OUTOFMEMORY = cast(int)0x8007000E, - E_INVALIDARG = cast(int)0x80070057, - E_UNEXPECTED = cast(int)0x8000FFFF, -} - -struct GUID { // size is 16 - align(1): - DWORD Data1; - WORD Data2; - WORD Data3; - BYTE[8] Data4; -} - -enum -{ - CLSCTX_INPROC_SERVER = 0x1, - CLSCTX_INPROC_HANDLER = 0x2, - CLSCTX_LOCAL_SERVER = 0x4, - CLSCTX_INPROC_SERVER16 = 0x8, - CLSCTX_REMOTE_SERVER = 0x10, - CLSCTX_INPROC_HANDLER16 = 0x20, - CLSCTX_INPROC_SERVERX86 = 0x40, - CLSCTX_INPROC_HANDLERX86 = 0x80, - - CLSCTX_INPROC = (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER), - CLSCTX_ALL = (CLSCTX_INPROC_SERVER| CLSCTX_INPROC_HANDLER| CLSCTX_LOCAL_SERVER), - CLSCTX_SERVER = (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER), -} - -enum -{ - COINIT_APARTMENTTHREADED = 0x2, - COINIT_MULTITHREADED = 0x0, - COINIT_DISABLE_OLE1DDE = 0x4, - COINIT_SPEED_OVER_MEMORY = 0x8 -} -alias COINIT = DWORD; -enum RPC_E_CHANGED_MODE = 0x80010106; - -alias IID = const(GUID); -alias CLSID = const(GUID); - -extern (C) -{ - extern IID IID_IUnknown; - extern IID IID_IClassFactory; - extern IID IID_IMarshal; - extern IID IID_IMallocSpy; - extern IID IID_IStdMarshalInfo; - extern IID IID_IExternalConnection; - extern IID IID_IMultiQI; - extern IID IID_IEnumUnknown; - extern IID IID_IBindCtx; - extern IID IID_IEnumMoniker; - extern IID IID_IRunnableObject; - extern IID IID_IRunningObjectTable; - extern IID IID_IPersist; - extern IID IID_IPersistStream; - extern IID IID_IMoniker; - extern IID IID_IROTData; - extern IID IID_IEnumString; - extern IID IID_ISequentialStream; - extern IID IID_IStream; - extern IID IID_IEnumSTATSTG; - extern IID IID_IStorage; - extern IID IID_IPersistFile; - extern IID IID_IPersistStorage; - extern IID IID_ILockBytes; - extern IID IID_IEnumFORMATETC; - extern IID IID_IEnumSTATDATA; - extern IID IID_IRootStorage; - extern IID IID_IAdviseSink; - extern IID IID_IAdviseSink2; - extern IID IID_IDataObject; - extern IID IID_IDataAdviseHolder; - extern IID IID_IMessageFilter; - extern IID IID_IRpcChannelBuffer; - extern IID IID_IRpcProxyBuffer; - extern IID IID_IRpcStubBuffer; - extern IID IID_IPSFactoryBuffer; - extern IID IID_IPropertyStorage; - extern IID IID_IPropertySetStorage; - extern IID IID_IEnumSTATPROPSTG; - extern IID IID_IEnumSTATPROPSETSTG; - extern IID IID_IFillLockBytes; - extern IID IID_IProgressNotify; - extern IID IID_ILayoutStorage; - extern IID GUID_NULL; - extern IID IID_IRpcChannel; - extern IID IID_IRpcStub; - extern IID IID_IStubManager; - extern IID IID_IRpcProxy; - extern IID IID_IProxyManager; - extern IID IID_IPSFactory; - extern IID IID_IInternalMoniker; - extern IID IID_IDfReserved1; - extern IID IID_IDfReserved2; - extern IID IID_IDfReserved3; - extern IID IID_IStub; - extern IID IID_IProxy; - extern IID IID_IEnumGeneric; - extern IID IID_IEnumHolder; - extern IID IID_IEnumCallback; - extern IID IID_IOleManager; - extern IID IID_IOlePresObj; - extern IID IID_IDebug; - extern IID IID_IDebugStream; - extern IID IID_StdOle; - extern IID IID_ICreateTypeInfo; - extern IID IID_ICreateTypeInfo2; - extern IID IID_ICreateTypeLib; - extern IID IID_ICreateTypeLib2; - extern IID IID_IDispatch; - extern IID IID_IEnumVARIANT; - extern IID IID_ITypeComp; - extern IID IID_ITypeInfo; - extern IID IID_ITypeInfo2; - extern IID IID_ITypeLib; - extern IID IID_ITypeLib2; - extern IID IID_ITypeChangeEvents; - extern IID IID_IErrorInfo; - extern IID IID_ICreateErrorInfo; - extern IID IID_ISupportErrorInfo; - extern IID IID_IOleAdviseHolder; - extern IID IID_IOleCache; - extern IID IID_IOleCache2; - extern IID IID_IOleCacheControl; - extern IID IID_IParseDisplayName; - extern IID IID_IOleContainer; - extern IID IID_IOleClientSite; - extern IID IID_IOleObject; - extern IID IID_IOleWindow; - extern IID IID_IOleLink; - extern IID IID_IOleItemContainer; - extern IID IID_IOleInPlaceUIWindow; - extern IID IID_IOleInPlaceActiveObject; - extern IID IID_IOleInPlaceFrame; - extern IID IID_IOleInPlaceObject; - extern IID IID_IOleInPlaceSite; - extern IID IID_IContinue; - extern IID IID_IViewObject; - extern IID IID_IViewObject2; - extern IID IID_IDropSource; - extern IID IID_IDropTarget; - extern IID IID_IEnumOLEVERB; -} +public import core.sys.windows.basetyps : GUID, IID, CLSID; + +public import core.sys.windows.objbase : + CLSCTX_INPROC, CLSCTX_ALL, CLSCTX_SERVER, + COINIT, + CoBuildVersion, StringFromGUID2, + CoInitialize, CoInitializeEx, CoUninitialize, CoGetCurrentProcess, + CoCreateInstance, + CoFreeLibrary, CoFreeAllLibraries, CoFreeUnusedLibraries; + +public import core.sys.windows.ole2ver : rmm, rup; + +public import core.sys.windows.unknwn : IUnknown, IClassFactory; + +public import core.sys.windows.winerror : + S_OK, + S_FALSE, + NOERROR, + E_NOTIMPL, + E_NOINTERFACE, + E_POINTER, + E_ABORT, + E_FAIL, + E_HANDLE, + CLASS_E_NOAGGREGATION, + E_OUTOFMEMORY, + E_INVALIDARG, + E_UNEXPECTED, + RPC_E_CHANGED_MODE; + +public import core.sys.windows.wtypes : + OLECHAR, LPOLESTR, LPCOLESTR; + +alias CLSCTX_INPROC_SERVER = core.sys.windows.wtypes.CLSCTX.CLSCTX_INPROC_SERVER ; +alias CLSCTX_INPROC_HANDLER = core.sys.windows.wtypes.CLSCTX.CLSCTX_INPROC_HANDLER ; +alias CLSCTX_LOCAL_SERVER = core.sys.windows.wtypes.CLSCTX.CLSCTX_LOCAL_SERVER ; +alias CLSCTX_INPROC_SERVER16 = core.sys.windows.wtypes.CLSCTX.CLSCTX_INPROC_SERVER16 ; +alias CLSCTX_REMOTE_SERVER = core.sys.windows.wtypes.CLSCTX.CLSCTX_REMOTE_SERVER ; +alias CLSCTX_INPROC_HANDLER16 = core.sys.windows.wtypes.CLSCTX.CLSCTX_INPROC_HANDLER16 ; +alias CLSCTX_INPROC_SERVERX86 = core.sys.windows.wtypes.CLSCTX.CLSCTX_INPROC_SERVERX86 ; +alias CLSCTX_INPROC_HANDLERX86 = core.sys.windows.wtypes.CLSCTX.CLSCTX_INPROC_HANDLERX86; + +alias COINIT_APARTMENTTHREADED = COINIT.COINIT_APARTMENTTHREADED; +alias COINIT_MULTITHREADED = COINIT.COINIT_MULTITHREADED ; +alias COINIT_DISABLE_OLE1DDE = COINIT.COINIT_DISABLE_OLE1DDE ; +alias COINIT_SPEED_OVER_MEMORY = COINIT.COINIT_SPEED_OVER_MEMORY; + +public import core.sys.windows.uuid; extern (System) { -export -{ -DWORD CoBuildVersion(); - -int StringFromGUID2(GUID *rguid, LPOLESTR lpsz, int cbMax); - -/* init/uninit */ - -HRESULT CoInitialize(LPVOID pvReserved); -HRESULT CoInitializeEx(LPVOID pvReserved, DWORD dwCoInit); -void CoUninitialize(); -DWORD CoGetCurrentProcess(); - - -HRESULT CoCreateInstance(const(CLSID) *rclsid, IUnknown UnkOuter, - DWORD dwClsContext, const(IID)* riid, void* ppv); - -//HINSTANCE CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree); -void CoFreeLibrary(HINSTANCE hInst); -void CoFreeAllLibraries(); -void CoFreeUnusedLibraries(); -} - -interface IUnknown -{ - HRESULT QueryInterface(const(IID)* riid, void** pvObject); - ULONG AddRef(); - ULONG Release(); -} - -interface IClassFactory : IUnknown -{ - HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject); - HRESULT LockServer(BOOL fLock); -} - class ComObject : IUnknown { extern (System): diff --git a/src/core/sys/windows/dbghelp_types.d b/src/core/sys/windows/dbghelp_types.d index 4ac047aab5..edb13f4ad7 100644 --- a/src/core/sys/windows/dbghelp_types.d +++ b/src/core/sys/windows/dbghelp_types.d @@ -14,7 +14,7 @@ version (Windows): import core.sys.windows.windows; -alias CHAR TCHAR; +public import core.sys.windows.winnt : TCHAR; /* enum ADDRESS_MODE : DWORD diff --git a/src/core/sys/windows/wtypes.d b/src/core/sys/windows/wtypes.d index b160b4785d..15ebe6c119 100644 --- a/src/core/sys/windows/wtypes.d +++ b/src/core/sys/windows/wtypes.d @@ -60,11 +60,14 @@ enum MSHCTX { } enum CLSCTX { - CLSCTX_INPROC_SERVER = 1, - CLSCTX_INPROC_HANDLER = 2, - CLSCTX_LOCAL_SERVER = 4, - CLSCTX_INPROC_SERVER16 = 8, - CLSCTX_REMOTE_SERVER = 16 + CLSCTX_INPROC_SERVER = 0x1, + CLSCTX_INPROC_HANDLER = 0x2, + CLSCTX_LOCAL_SERVER = 0x4, + CLSCTX_INPROC_SERVER16 = 0x8, + CLSCTX_REMOTE_SERVER = 0x10, + CLSCTX_INPROC_HANDLER16 = 0x20, + CLSCTX_INPROC_SERVERX86 = 0x40, + CLSCTX_INPROC_HANDLERX86 = 0x80, } enum MSHLFLAGS { diff --git a/src/core/thread.d b/src/core/thread.d index ed032ef343..2af8f1874a 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -135,9 +135,6 @@ version( Windows ) import core.sys.windows.windows; import core.sys.windows.threadaux; // for OpenThreadHandle - const DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; - const CREATE_SUSPENDED = 0x00000004; - extern (Windows) alias uint function(void*) btex_fptr; extern (C) uintptr_t _beginthreadex(void*, uint, btex_fptr, void*, uint, uint*) nothrow; From e65f81a8e7f435d50b374beb3acb292c1e997b86 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 04:03:57 +0000 Subject: [PATCH 145/768] Delete helper scripts --- winhlp/dupcheck/dupcheck.d | 110 ---------------- winhlp/dupcheck/exclusions.txt | 12 -- winhlp/hdrconv/hdrconv.d | 100 --------------- winhlp/testgen/exclusions.txt | 206 ------------------------------ winhlp/testgen/gentests.d | 222 --------------------------------- 5 files changed, 650 deletions(-) delete mode 100644 winhlp/dupcheck/dupcheck.d delete mode 100644 winhlp/dupcheck/exclusions.txt delete mode 100644 winhlp/hdrconv/hdrconv.d delete mode 100644 winhlp/testgen/exclusions.txt delete mode 100644 winhlp/testgen/gentests.d diff --git a/winhlp/dupcheck/dupcheck.d b/winhlp/dupcheck/dupcheck.d deleted file mode 100644 index 3eed55a9f1..0000000000 --- a/winhlp/dupcheck/dupcheck.d +++ /dev/null @@ -1,110 +0,0 @@ -import std.algorithm.iteration; -import std.algorithm.searching; -import std.algorithm.sorting; -import std.array; -import std.conv; -import std.demangle; -import std.file; -import std.format; -import std.process; -import std.range; -import std.stdio; - -import ae.sys.persistence; -import ae.utils.array; -import ae.utils.json; -import ae.utils.text; - -int main() -{ - static struct Member - { - string file, name, kind; - uint line; - @JSONName("char") - uint char_; - - string protection; - string[] selective; - string[] storageClass; - string deco; - string originalType; - Member[] parameters; - string init; - Member[] members; - string type; - uint endline, endchar; - uint offset = uint.max; - @JSONName("default") - string default_; - string defaultDeco; - string defaultValue; - string base; - string baseDeco; - string specValue; - string defaultAlias; - @JSONName("in") - Member* in_; - @JSONName("out") - Member* out_; - string[] overrides; - string[string] renamed; - string[] interfaces; - @JSONName("alias") - string alias_; - @JSONName("align") - uint align_; - string specAlias; - string value; - string constraint; - } - - bool[string][string][2] sets; - - auto exclusions = PersistentStringSet("exclusions.txt"); - - auto modules = - "druntime.json".readText.jsonParse!(Member[]) ~ - "phobos.json" .readText.jsonParse!(Member[]); - foreach (m; modules) - { - if (!m.name.length || !(m.name.startsWith("core.") || m.name.startsWith("std.") || m.name.startsWith("etc.")) || m.name in exclusions) - continue; - int setIndex = - (m.name.startsWith("core.sys.windows.") - && !m.name.split(".")[3].isOneOf("com", "dbghelp", "dll", "stacktrace", "stat", "threadaux", "winsock2")) - ? 0 : 1; - - foreach (d; m.members) - if (!d.kind.isOneOf("import") && (m.name ~ "." ~ d.name) !in exclusions) - sets[setIndex][d.name][m.name] = true; - } - - auto o = File("duptests.d", "wb"); - - bool[string][2] neededModules; - foreach (name; sets[0].byKey) - if (name in sets[1]) - foreach (set; sets) - foreach (i, m; set[name].keys) - neededModules[i][m] = true; - - foreach (set; neededModules) - { - foreach (name; set.keys.sort()) - o.writefln("import %s;", name); - o.writeln(); - } - - foreach (name; sets[0].byKeyValue.array.sort!((a, b) => a.value.byKey.front < b.value.byKey.front).map!(pair => pair.key)) - if (name in sets[1]) - { - o.writefln("// Duplicate symbol: %s (%-(%s, %) / %-(%s, %))", name, sets[0][name].byKey, sets[1][name].byKey); - o.writefln("alias local_%s = %s;", name, name); - o.writeln(); - } - - o.close(); - - return spawnProcess(["dmd", "-I../../src", "-o-", "-d", "duptests.d"]).wait(); -} diff --git a/winhlp/dupcheck/exclusions.txt b/winhlp/dupcheck/exclusions.txt deleted file mode 100644 index 43cf15e995..0000000000 --- a/winhlp/dupcheck/exclusions.txt +++ /dev/null @@ -1,12 +0,0 @@ -etc.c.curl.LONG - -etc.c.odbc.sql -etc.c.odbc.sqltypes -etc.c.odbc.sqlext -etc.c.odbc.sqlucode - -std.concurrency.MessageBox - -std.uuid - -std.windows.registry.REGSAM diff --git a/winhlp/hdrconv/hdrconv.d b/winhlp/hdrconv/hdrconv.d deleted file mode 100644 index 8025fac663..0000000000 --- a/winhlp/hdrconv/hdrconv.d +++ /dev/null @@ -1,100 +0,0 @@ -import ae.utils.aa; - -import std.exception; -import std.file; -import std.path; -import std.range.primitives; -import std.stdio; -import std.string; - -void main() -{ - foreach (de; `..\..\src\core\sys\windows`.dirEntries("*.d", SpanMode.shallow)) - { - scope(failure) stderr.writeln("Error with file: ", de.name); - auto lines = de.name.readText.splitLines(); - if (lines.front != `/***********************************************************************\`) - continue; - lines.popFront(); - - string[] description; - OrderedMap!(string, string) fields; - - while (!lines.empty) - { - auto line = lines.front; lines.popFront(); - auto oline = line; - scope(failure) stderr.writeln("Error with line: ", oline); - - if (line == `\***********************************************************************/`) - break; - - enforce(line[0] == '*' && line[$-1] == '*'); - line = line[1..$-1].strip(); - - if (line == de.baseName) - {} - else - if (line == "Placed into public domain") - fields["License"] = line; - else - if (line.startsWith("by ")) - fields["Authors"] = line[3..$]; - else - if (line == "Windows API header module" - || line == "Translated from MinGW Windows headers" - || line.startsWith("Translated from MinGW API for MS-Windows ") - ) - description ~= line; - else - if (!line.length) - {} //f.writeln(" *"); - else - { - description ~= line; - stderr.writeln("Unknown header line: " ~ line); - } - } - - auto f = File("temp.d", "wt"); - f.writeln("/**"); - foreach (line; description) - { - f.writeln(" * ", line); - f.writeln(" *"); - } - foreach (name, value; fields) - f.writeln(" * ", name, ": ", value); - f.writeln(" * Source: $(DRUNTIMESRC src/core/sys/windows/_", de.baseName, ")"); - f.writeln(" */"); - foreach (l; lines) - f.writeln(l); - f.close(); - "temp.d".rename("out/" ~ de.baseName); - //break; - } -} - - -/***********************************************************************\ -* docobj.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ - - -/** - * This module provides OS specific helper function for DLL support - * - * Copyright: Copyright Digital Mars 2010 - 2012. - * License: Distributed under the - * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). - * (See accompanying file LICENSE) - * Authors: Rainer Schuetze - * Source: $(DRUNTIMESRC src/core/sys/windows/_dll.d) - */ - diff --git a/winhlp/testgen/exclusions.txt b/winhlp/testgen/exclusions.txt deleted file mode 100644 index 64de1d2bcf..0000000000 --- a/winhlp/testgen/exclusions.txt +++ /dev/null @@ -1,206 +0,0 @@ -# Functions - -## wants long, not ulong -HIWORD -LOWORD - - -## wants `in T*`, not `const(T)*` (head constness, thus purely cosmetic) - -### `in char*`, not `const(char)*` (aka LPCSTR) -CreateFileA -DeleteFileA -FindFirstFileA -FindFirstFileW -MoveFileA -MoveFileW -GetFileAttributesA -GetFileAttributesW -SetFileAttributesA -SetFileAttributesW - -### `in HANDLE`, not `HANDLE` -SetEndOfFile - -### `in void*`, not `PCVOID` -WriteFile -WriteConsoleA -WriteConsoleW - -### FILETIME -SetFileTime -SystemTimeToFileTime -FileTimeToLocalFileTime -LocalFileTimeToFileTime -FileTimeToSystemTime -CompareFileTime -FileTimeToDosDateTime - -### WNDCLASS* -RegisterClassA -RegisterClassExA -RegisterClassW -RegisterClassExW - -### INPUT_RECORD -WriteConsoleInputA -WriteConsoleInputW - -### CHAR_INFO -WriteConsoleOutputA -WriteConsoleOutputW - -### WORD -WriteConsoleOutputAttribute - -### CONSOLE_CURSOR_INFO -SetConsoleCursorInfo - -### SMALL_RECT -ScrollConsoleScreenBufferA -ScrollConsoleScreenBufferW -SetConsoleWindowInfo - -### SECURITY_ATTRIBUTES -CreateConsoleScreenBuffer - -## wants `T*`, not `const(T)*` (even though the value will not be modified) - -### void* -RegSetValueExA -RegSetValueExW -SetBitmapBits -SetDIBits -SetDIBitsToDevice -StretchDIBits - -### ubyte* -SetMetaFileBits -SetMetaFileBitsEx - -### SYSTEMTIME -SetSystemTime -SetLocalTime - -### TIME_ZONE_INFORMATION -SetTimeZoneInformation - -### CONTEXT -SetThreadContext - -### HANDLE -WaitForMultipleObjects - -### PAINTSTRUCT -EndPaint - -### RECT -InvalidateRect -ValidateRect -RedrawWindow -SetBoundsRect -ScrollWindow -ScrollWindowEx -ScrollDC -ClipCursor -TrackPopupMenu -CreateRectRgnIndirect -FillRect - -### POINT -CreatePolyPolygonRgn - -### PALETTEENTRY -SetPaletteEntries - -### PIXELFORMATDESCRIPTOR -SetPixelFormat -ChoosePixelFormat - -### MSG -TranslateMessage -DispatchMessageA -DispatchMessageW - -### LOGFONTA -CreateFontIndirectA - -### LOGPALETTE -CreatePalette - -### LOGPEN -CreatePenIndirect - - -## wants `const(T)*`, not `T*` (even though the value is not const) - -### LPTCH -GetEnvironmentStringsW -FreeEnvironmentStringsW - - -## wants `void**`, not `va_list*` (aka void* ?) -FormatMessageA -FormatMessageW - - -## wants different sign on parameter, narrower return values, and extern(Windows) even though this is a macro -MAKELANGID -PRIMARYLANGID -SUBLANGID -MAKEINTRESOURCEA -MAKEINTRESOURCEW -RGB - - -## wants completely different type, overload wrapper added -### long* / PLARGE_INTEGER -QueryPerformanceCounter -QueryPerformanceFrequency - - -## wants extern(Windows) even though this is a macro -CreateWindowA -CreateWindowW - - -## wants uint, not size_t (SIZE_T/INT_PTR) -GlobalCompact -LocalAlloc -LocalReAlloc -LocalShrink -LocalCompact -DialogBoxParamA -DialogBoxIndirectParamA -EndDialog - - - -# Types - -## wants non-const, even though should be const -LPCDLGTEMPLATE -LPCDLGTEMPLATEA -LPCDLGTEMPLATEW - - -## wants wrong signedness -CREATE_UNICODE_ENVIRONMENT -LOCKFILE_FAIL_IMMEDIATELY -LOCKFILE_EXCLUSIVE_LOCK - - -## wants uint, not size_t -LPOFNHOOKPROC -OPENFILENAMEA.lpfnHook -OPENFILENAMEW.lpfnHook - - -# Values - -## Changes depending on target Windows version -WM_KEYLAST -WM_MOUSELAST -STOCK_LAST -SW_MAX -SM_CMETRICS diff --git a/winhlp/testgen/gentests.d b/winhlp/testgen/gentests.d deleted file mode 100644 index a29ef89c0f..0000000000 --- a/winhlp/testgen/gentests.d +++ /dev/null @@ -1,222 +0,0 @@ -import std.algorithm.searching; -import std.array; -import std.demangle; -import std.file; -import std.format; -import std.process; -import std.stdio; - -import ae.sys.persistence; -import ae.utils.array; -import ae.utils.json; -import ae.utils.text; - -int main() -{ - static struct Member - { - string file, name, kind; - uint line; - @JSONName("char") - uint char_; - - string protection; - string[] selective; - string[] storageClass; - string deco; - string originalType; - Member[] parameters; - string init; - Member[] members; - string type; - uint endline, endchar; - uint offset = uint.max; - @JSONName("default") - string default_; - string defaultDeco; - string defaultValue; - string base; - string baseDeco; - string specValue; - string defaultAlias; - @JSONName("in") - Member* in_; - @JSONName("out") - Member* out_; - string[] overrides; - string[string] renamed; - string[] interfaces; - @JSONName("alias") - string alias_; - @JSONName("align") - uint align_; - string specAlias; - string value; - string constraint; - } - - auto exclusions = PersistentStringSet("exclusions.txt"); - - foreach (model; ["32", "64"]) - { - auto fn = "wintest" ~ model ~ ".d"; - File o = File(fn, "wb"); - o.writeln("import std.format : format;"); - - auto fnB = "wintest" ~ model ~ "b.d"; - File b = File(fnB, "wb"); - - void typeCheck(string name, string typeA, string typeB) - { - o.writefln("\tstatic if(!is(%s == %s)) pragma(msg, \"%%s(%%d): Error: type of %s is:\\n%%s\\nbut should be:\\n%%s\\n\".format(__FILE__, __LINE__, %s.stringof, %s.stringof));", - typeA, typeB, name, typeA, typeB); - } - - auto modules = ("druntime" ~ model ~ ".json").readText.jsonParse!(Member[]); - foreach (m; modules) - { - if (m.name != "core.sys.windows.windows") - continue; - - o.writefln("struct test_%s", m.name.replace(".", "_")); - o.writeln("{"); - o.writefln("\tstatic import %s;", m.name); - b.writefln("\timport %s;", m.name); - - void handleMembers(string[] prefix, Member[] members) - { - foreach (d; members) - { - scope(failure) stderr.writefln("Error processing member %s:", d.name); - auto qname = (prefix ~ d.name).join("."); - auto lname = qname.replace(".", "_"); - o.writefln("\talias %s = %s.%s;", lname, (m.name ~ prefix).join("."), d.name); // check existence - b.writefln("\talias local_%s = %s;", lname, qname); - if (qname in exclusions) o.writeln("/+"); - switch (d.kind) - { - case "function": - { - auto type = d.deco.demangleFunctionType().functionToFunctionPointerType(); - if (type.isValidDType()) - { - o.writefln("\talias typeof_%s = %s;", lname, type); - typeCheck(qname, "typeof(&%s)".format(lname), "typeof_%s".format(lname)); - } - if (d.originalType) - { - o.writefln("\talias typeof_orig_%s = %s;", lname, d.originalType.functionToFunctionPointerType()); - typeCheck(qname, "typeof(&%s)".format(lname), "typeof_orig_%s".format(lname)); - } - break; - } - case "enum member": - o.writefln("\tstatic assert(%s == (%s));", lname, d.value); - break; - case "variable": - o.writefln("\talias typeof_%s = %s;", lname, d.deco.demangleType()); - o.writefln("\tstatic assert(is(typeof(%s) == typeof_%s));", lname, lname); - if (d.originalType) - { - o.writefln("\talias typeof_orig_%s = %s;", lname, d.originalType); - o.writefln("\tstatic assert(is(typeof(%s) == typeof_orig_%s));", lname, lname); - } - break; - case "alias": - o.writefln("\talias aliasof_%s = %s;", lname, d.deco.demangleType()); - typeCheck(qname, lname, "aliasof_" ~ lname); - break; - case "struct": - case "union": - case "enum": - // will descend to d.members below - break; - default: - stderr.writeln("Unknown kind: ", d.kind); - break; - } - - if (d.offset != uint.max) - o.writefln("\tstatic assert(%s.offsetof == %d);", lname, d.offset); - if (qname in exclusions) o.writeln("+/"); - - handleMembers(prefix ~ d.name, d.members); - } - } - - handleMembers([], m.members); - - o.writeln("}"); - o.writeln(""); - } - - o.close(); - b.close(); - - if (spawnProcess(["dmd", "-m" ~ model, "-I../../src", "-o-", fn, fnB]).wait() != 0) - return 1; - } - return 0; -} - -/// nothrow @nogc extern (Windows) BOOL(LPCSTR lpPathName) -/// -- to -- -/// nothrow @nogc extern (Windows) BOOL function(LPCSTR lpPathName) -string functionToFunctionPointerType(string type) -{ - if (type.contains(" @trusted")) - type = type.replace(" @trusted", "") ~ " @trusted"; - - int parens; - foreach_reverse (i, char c; type) - if (c == ')') - parens++; - else - if (c == '(') - { - parens--; - if (!parens) - return type[0..i] ~ " function" ~ type[i..$]; - } - assert(false, "Not a function type: " ~ type); -} - -string demangleType(string mangledType) -{ - auto result = demangle("_D1x" ~ mangledType)[0..$-2]; - if (result.endsWith("*") && result.canFind(" function(")) - result = result[0..$-1]; // https://issues.dlang.org/show_bug.cgi?id=15143 - return result; -} - -string demangleFunctionType(string mangledType) -{ - auto placeholder = "dftPlaceholder"; - return "_D%s%s%s" - .format(placeholder.length, placeholder, mangledType) - .demangle() - .replace(" " ~ placeholder, "") - ; -} - -/// Filter types unrepresentable in D grammar -bool isValidDType(string type) -{ - if (type.contains("* function")) - return false; // function returning function pointer - - int parenLevel; - foreach (i, c; type) - { - if (c == '(') - parenLevel++; - else - if (c == ')') - parenLevel++; - else - if (parenLevel && type[i..$].startsWith("extern (")) - return false; - } - - return true; -} From 19d201077c9059f9bbc60a721db51f396e346e6c Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 17:56:47 +0000 Subject: [PATCH 146/768] Add .def files from the bindings project, verbatim --- def/glu32.def | 55 ++++++ def/odbc32.def | 21 +++ def/opengl32.def | 371 +++++++++++++++++++++++++++++++++++++ def/rpcrt4.def | 468 +++++++++++++++++++++++++++++++++++++++++++++++ def/shell32.def | 252 +++++++++++++++++++++++++ def/version.def | 16 ++ def/wininet.def | 216 ++++++++++++++++++++++ def/winspool.def | 187 +++++++++++++++++++ 8 files changed, 1586 insertions(+) create mode 100644 def/glu32.def create mode 100644 def/odbc32.def create mode 100644 def/opengl32.def create mode 100644 def/rpcrt4.def create mode 100644 def/shell32.def create mode 100644 def/version.def create mode 100644 def/wininet.def create mode 100644 def/winspool.def diff --git a/def/glu32.def b/def/glu32.def new file mode 100644 index 0000000000..6a848a1e60 --- /dev/null +++ b/def/glu32.def @@ -0,0 +1,55 @@ +LIBRARY GLU32 + +EXPORTS + _gluBeginCurve@4 = gluBeginCurve ; gluBeginCurve + _gluBeginPolygon@4 = gluBeginPolygon ; gluBeginPolygon + _gluBeginSurface@4 = gluBeginSurface ; gluBeginSurface + _gluBeginTrim@4 = gluBeginTrim ; gluBeginTrim + _gluBuild1DMipmaps@24 = gluBuild1DMipmaps ; gluBuild1DMipmaps + _gluBuild2DMipmaps@28 = gluBuild2DMipmaps ; gluBuild2DMipmaps + _gluCylinder@36 = gluCylinder ; gluCylinder + _gluDeleteNurbsRenderer@4 = gluDeleteNurbsRenderer ; gluDeleteNurbsRenderer + _gluDeleteQuadric@4 = gluDeleteQuadric ; gluDeleteQuadric + _gluDeleteTess@4 = gluDeleteTess ; gluDeleteTess + _gluDisk@28 = gluDisk ; gluDisk + _gluEndCurve@4 = gluEndCurve ; gluEndCurve + _gluEndPolygon@4 = gluEndPolygon ; gluEndPolygon + _gluEndSurface@4 = gluEndSurface ; gluEndSurface + _gluEndTrim@4 = gluEndTrim ; gluEndTrim + _gluErrorString@4 = gluErrorString ; gluErrorString + _gluErrorUnicodeStringEXT@4 = gluErrorUnicodeStringEXT ; gluErrorUnicodeStringEXT + _gluGetNurbsProperty@12 = gluGetNurbsProperty ; gluGetNurbsProperty + _gluGetString@4 = gluGetString ; gluGetString + _gluGetTessProperty@12 = gluGetTessProperty ; gluGetTessProperty + _gluLoadSamplingMatrices@16 = gluLoadSamplingMatrices ; gluLoadSamplingMatrices + _gluLookAt@72 = gluLookAt ; gluLookAt + _gluNewNurbsRenderer@0 = gluNewNurbsRenderer ; gluNewNurbsRenderer + _gluNewQuadric@0 = gluNewQuadric ; gluNewQuadric + _gluNewTess@0 = gluNewTess ; gluNewTess + _gluNextContour@8 = gluNextContour ; gluNextContour + _gluNurbsCallback@12 = gluNurbsCallback ; gluNurbsCallback + _gluNurbsCurve@28 = gluNurbsCurve ; gluNurbsCurve + _gluNurbsProperty@12 = gluNurbsProperty ; gluNurbsProperty + _gluNurbsSurface@44 = gluNurbsSurface ; gluNurbsSurface + _gluOrtho2D@32 = gluOrtho2D ; gluOrtho2D + _gluPartialDisk@44 = gluPartialDisk ; gluPartialDisk + _gluPerspective@32 = gluPerspective ; gluPerspective + _gluPickMatrix@36 = gluPickMatrix ; gluPickMatrix + _gluProject@48 = gluProject ; gluProject + _gluPwlCurve@20 = gluPwlCurve ; gluPwlCurve + _gluQuadricCallback@12 = gluQuadricCallback ; gluQuadricCallback + _gluQuadricDrawStyle@8 = gluQuadricDrawStyle ; gluQuadricDrawStyle + _gluQuadricNormals@8 = gluQuadricNormals ; gluQuadricNormals + _gluQuadricOrientation@8 = gluQuadricOrientation ; gluQuadricOrientation + _gluQuadricTexture@8 = gluQuadricTexture ; gluQuadricTexture + _gluScaleImage@36 = gluScaleImage ; gluScaleImage + _gluSphere@20 = gluSphere ; gluSphere + _gluTessBeginContour@4 = gluTessBeginContour ; gluTessBeginContour + _gluTessBeginPolygon@8 = gluTessBeginPolygon ; gluTessBeginPolygon + _gluTessCallback@12 = gluTessCallback ; gluTessCallback + _gluTessEndContour@4 = gluTessEndContour ; gluTessEndContour + _gluTessEndPolygon@4 = gluTessEndPolygon ; gluTessEndPolygon + _gluTessNormal@28 = gluTessNormal ; gluTessNormal + _gluTessProperty@16 = gluTessProperty ; gluTessProperty + _gluTessVertex@12 = gluTessVertex ; gluTessVertex + _gluUnProject@48 = gluUnProject ; gluUnProject diff --git a/def/odbc32.def b/def/odbc32.def new file mode 100644 index 0000000000..5b6e7f8f54 --- /dev/null +++ b/def/odbc32.def @@ -0,0 +1,21 @@ +LIBRARY odbc32 +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_SQLAllocEnv@4 = SQLAllocEnv +_SQLAllocConnect@8 = SQLAllocConnect +_SQLAllocHandle@12 = SQLAllocHandle +_SQLColAttribute@28 = SQLColAttribute +_SQLConnect@28 = SQLConnect +_SQLDisconnect@4 = SQLDisconnect +_SQLDriverConnect@32 = SQLDriverConnect +_SQLExecDirect@16 = SQLExecDirect +_SQLFetch@4 = SQLFetch +_SQLFreeConnect@4 = SQLFreeConnect +_SQLFreeEnv@4 = SQLFreeEnv +_SQLFreeStmt@8 = SQLFreeStmt +_SQLGetData@28 = SQLGetData +_SQLGetInfo@20 = SQLGetInfo +_SQLNumResultCols@8 = SQLNumResultCols +_SQLSetConnectOption@12 = SQLSetConnectOption +_SQLSetStmtOption@12 = SQLSetStmtOption diff --git a/def/opengl32.def b/def/opengl32.def new file mode 100644 index 0000000000..4ad3281484 --- /dev/null +++ b/def/opengl32.def @@ -0,0 +1,371 @@ +LIBRARY OPENGL32 + +EXPORTS +; _GlmfBeginGlsBlock@4 = GlmfBeginGlsBlock GlmfBeginGlsBlock +; _GlmfCloseMetaFile@4 = GlmfCloseMetaFile GlmfCloseMetaFile +; _GlmfEndGlsBlock@4 = GlmfEndGlsBlock GlmfEndGlsBlock +; _GlmfEndPlayback@4 = GlmfEndPlayback GlmfEndPlayback +; _GlmfInitPlayback@12 = GlmfInitPlayback GlmfInitPlayback +; _GlmfPlayGlsRecord@16 = GlmfPlayGlsRecord GlmfPlayGlsRecord + _glAccum@8 = glAccum ; glAccum + _glAlphaFunc@8 = glAlphaFunc ; glAlphaFunc + _glAreTexturesResident@12 = glAreTexturesResident ; glAreTexturesResident + _glArrayElement@4 = glArrayElement ; glArrayElement + _glBegin@4 = glBegin ; glBegin + _glBindTexture@8 = glBindTexture ; glBindTexture + _glBitmap@28 = glBitmap ; glBitmap + _glBlendFunc@8 = glBlendFunc ; glBlendFunc + _glCallList@4 = glCallList ; glCallList + _glCallLists@12 = glCallLists ; glCallLists + _glClear@4 = glClear ; glClear + _glClearAccum@16 = glClearAccum ; glClearAccum + _glClearColor@16 = glClearColor ; glClearColor + _glClearDepth@8 = glClearDepth ; glClearDepth + _glClearIndex@4 = glClearIndex ; glClearIndex + _glClearStencil@4 = glClearStencil ; glClearStencil + _glClipPlane@8 = glClipPlane ; glClipPlane + _glColor3b@12 = glColor3b ; glColor3b + _glColor3bv@4 = glColor3bv ; glColor3bv + _glColor3d@24 = glColor3d ; glColor3d + _glColor3dv@4 = glColor3dv ; glColor3dv + _glColor3f@12 = glColor3f ; glColor3f + _glColor3fv@4 = glColor3fv ; glColor3fv + _glColor3i@12 = glColor3i ; glColor3i + _glColor3iv@4 = glColor3iv ; glColor3iv + _glColor3s@12 = glColor3s ; glColor3s + _glColor3sv@4 = glColor3sv ; glColor3sv + _glColor3ub@12 = glColor3ub ; glColor3ub + _glColor3ubv@4 = glColor3ubv ; glColor3ubv + _glColor3ui@12 = glColor3ui ; glColor3ui + _glColor3uiv@4 = glColor3uiv ; glColor3uiv + _glColor3us@12 = glColor3us ; glColor3us + _glColor3usv@4 = glColor3usv ; glColor3usv + _glColor4b@16 = glColor4b ; glColor4b + _glColor4bv@4 = glColor4bv ; glColor4bv + _glColor4d@32 = glColor4d ; glColor4d + _glColor4dv@4 = glColor4dv ; glColor4dv + _glColor4f@16 = glColor4f ; glColor4f + _glColor4fv@4 = glColor4fv ; glColor4fv + _glColor4i@16 = glColor4i ; glColor4i + _glColor4iv@4 = glColor4iv ; glColor4iv + _glColor4s@16 = glColor4s ; glColor4s + _glColor4sv@4 = glColor4sv ; glColor4sv + _glColor4ub@16 = glColor4ub ; glColor4ub + _glColor4ubv@4 = glColor4ubv ; glColor4ubv + _glColor4ui@16 = glColor4ui ; glColor4ui + _glColor4uiv@4 = glColor4uiv ; glColor4uiv + _glColor4us@16 = glColor4us ; glColor4us + _glColor4usv@4 = glColor4usv ; glColor4usv + _glColorMask@16 = glColorMask ; glColorMask + _glColorMaterial@8 = glColorMaterial ; glColorMaterial + _glColorPointer@16 = glColorPointer ; glColorPointer + _glCopyPixels@20 = glCopyPixels ; glCopyPixels + _glCopyTexImage1D@28 = glCopyTexImage1D ; glCopyTexImage1D + _glCopyTexImage2D@32 = glCopyTexImage2D ; glCopyTexImage2D + _glCopyTexSubImage1D@24 = glCopyTexSubImage1D ; glCopyTexSubImage1D + _glCopyTexSubImage2D@32 = glCopyTexSubImage2D ; glCopyTexSubImage2D + _glCullFace@4 = glCullFace ; glCullFace + _glDebugEntry@8 = glDebugEntry ; glDebugEntry + _glDeleteLists@8 = glDeleteLists ; glDeleteLists + _glDeleteTextures@8 = glDeleteTextures ; glDeleteTextures + _glDepthFunc@4 = glDepthFunc ; glDepthFunc + _glDepthMask@4 = glDepthMask ; glDepthMask + _glDepthRange@16 = glDepthRange ; glDepthRange + _glDisable@4 = glDisable ; glDisable + _glDisableClientState@4 = glDisableClientState ; glDisableClientState + _glDrawArrays@12 = glDrawArrays ; glDrawArrays + _glDrawBuffer@4 = glDrawBuffer ; glDrawBuffer + _glDrawElements@16 = glDrawElements ; glDrawElements + _glDrawPixels@20 = glDrawPixels ; glDrawPixels + _glEdgeFlag@4 = glEdgeFlag ; glEdgeFlag + _glEdgeFlagPointer@8 = glEdgeFlagPointer ; glEdgeFlagPointer + _glEdgeFlagv@4 = glEdgeFlagv ; glEdgeFlagv + _glEnable@4 = glEnable ; glEnable + _glEnableClientState@4 = glEnableClientState ; glEnableClientState + _glEnd@0 = glEnd ; glEnd + _glEndList@0 = glEndList ; glEndList + _glEvalCoord1d@8 = glEvalCoord1d ; glEvalCoord1d + _glEvalCoord1dv@4 = glEvalCoord1dv ; glEvalCoord1dv + _glEvalCoord1f@4 = glEvalCoord1f ; glEvalCoord1f + _glEvalCoord1fv@4 = glEvalCoord1fv ; glEvalCoord1fv + _glEvalCoord2d@16 = glEvalCoord2d ; glEvalCoord2d + _glEvalCoord2dv@4 = glEvalCoord2dv ; glEvalCoord2dv + _glEvalCoord2f@8 = glEvalCoord2f ; glEvalCoord2f + _glEvalCoord2fv@4 = glEvalCoord2fv ; glEvalCoord2fv + _glEvalMesh1@12 = glEvalMesh1 ; glEvalMesh1 + _glEvalMesh2@20 = glEvalMesh2 ; glEvalMesh2 + _glEvalPoint1@4 = glEvalPoint1 ; glEvalPoint1 + _glEvalPoint2@8 = glEvalPoint2 ; glEvalPoint2 + _glFeedbackBuffer@12 = glFeedbackBuffer ; glFeedbackBuffer + _glFinish@0 = glFinish ; glFinish + _glFlush@0 = glFlush ; glFlush + _glFogf@8 = glFogf ; glFogf + _glFogfv@8 = glFogfv ; glFogfv + _glFogi@8 = glFogi ; glFogi + _glFogiv@8 = glFogiv ; glFogiv + _glFrontFace@4 = glFrontFace ; glFrontFace + _glFrustum@48 = glFrustum ; glFrustum + _glGenLists@4 = glGenLists ; glGenLists + _glGenTextures@8 = glGenTextures ; glGenTextures + _glGetBooleanv@8 = glGetBooleanv ; glGetBooleanv + _glGetClipPlane@8 = glGetClipPlane ; glGetClipPlane + _glGetDoublev@8 = glGetDoublev ; glGetDoublev + _glGetError@0 = glGetError ; glGetError + _glGetFloatv@8 = glGetFloatv ; glGetFloatv + _glGetIntegerv@8 = glGetIntegerv ; glGetIntegerv + _glGetLightfv@12 = glGetLightfv ; glGetLightfv + _glGetLightiv@12 = glGetLightiv ; glGetLightiv + _glGetMapdv@12 = glGetMapdv ; glGetMapdv + _glGetMapfv@12 = glGetMapfv ; glGetMapfv + _glGetMapiv@12 = glGetMapiv ; glGetMapiv + _glGetMaterialfv@12 = glGetMaterialfv ; glGetMaterialfv + _glGetMaterialiv@12 = glGetMaterialiv ; glGetMaterialiv + _glGetPixelMapfv@8 = glGetPixelMapfv ; glGetPixelMapfv + _glGetPixelMapuiv@8 = glGetPixelMapuiv ; glGetPixelMapuiv + _glGetPixelMapusv@8 = glGetPixelMapusv ; glGetPixelMapusv + _glGetPointerv@8 = glGetPointerv ; glGetPointerv + _glGetPolygonStipple@4 = glGetPolygonStipple ; glGetPolygonStipple + _glGetString@4 = glGetString ; glGetString + _glGetTexEnvfv@12 = glGetTexEnvfv ; glGetTexEnvfv + _glGetTexEnviv@12 = glGetTexEnviv ; glGetTexEnviv + _glGetTexGendv@12 = glGetTexGendv ; glGetTexGendv + _glGetTexGenfv@12 = glGetTexGenfv ; glGetTexGenfv + _glGetTexGeniv@12 = glGetTexGeniv ; glGetTexGeniv + _glGetTexImage@20 = glGetTexImage ; glGetTexImage + _glGetTexLevelParameterfv@16 = glGetTexLevelParameterfv ; glGetTexLevelParameterfv + _glGetTexLevelParameteriv@16 = glGetTexLevelParameteriv ; glGetTexLevelParameteriv + _glGetTexParameterfv@12 = glGetTexParameterfv ; glGetTexParameterfv + _glGetTexParameteriv@12 = glGetTexParameteriv ; glGetTexParameteriv + _glHint@8 = glHint ; glHint + _glIndexMask@4 = glIndexMask ; glIndexMask + _glIndexPointer@12 = glIndexPointer ; glIndexPointer + _glIndexd@8 = glIndexd ; glIndexd + _glIndexdv@4 = glIndexdv ; glIndexdv + _glIndexf@4 = glIndexf ; glIndexf + _glIndexfv@4 = glIndexfv ; glIndexfv + _glIndexi@4 = glIndexi ; glIndexi + _glIndexiv@4 = glIndexiv ; glIndexiv + _glIndexs@4 = glIndexs ; glIndexs + _glIndexsv@4 = glIndexsv ; glIndexsv + _glIndexub@4 = glIndexub ; glIndexub + _glIndexubv@4 = glIndexubv ; glIndexubv + _glInitNames@0 = glInitNames ; glInitNames + _glInterleavedArrays@12 = glInterleavedArrays ; glInterleavedArrays + _glIsEnabled@4 = glIsEnabled ; glIsEnabled + _glIsList@4 = glIsList ; glIsList + _glIsTexture@4 = glIsTexture ; glIsTexture + _glLightModelf@8 = glLightModelf ; glLightModelf + _glLightModelfv@8 = glLightModelfv ; glLightModelfv + _glLightModeli@8 = glLightModeli ; glLightModeli + _glLightModeliv@8 = glLightModeliv ; glLightModeliv + _glLightf@12 = glLightf ; glLightf + _glLightfv@12 = glLightfv ; glLightfv + _glLighti@12 = glLighti ; glLighti + _glLightiv@12 = glLightiv ; glLightiv + _glLineStipple@8 = glLineStipple ; glLineStipple + _glLineWidth@4 = glLineWidth ; glLineWidth + _glListBase@4 = glListBase ; glListBase + _glLoadIdentity@0 = glLoadIdentity ; glLoadIdentity + _glLoadMatrixd@4 = glLoadMatrixd ; glLoadMatrixd + _glLoadMatrixf@4 = glLoadMatrixf ; glLoadMatrixf + _glLoadName@4 = glLoadName ; glLoadName + _glLogicOp@4 = glLogicOp ; glLogicOp + _glMap1d@32 = glMap1d ; glMap1d + _glMap1f@24 = glMap1f ; glMap1f + _glMap2d@56 = glMap2d ; glMap2d + _glMap2f@40 = glMap2f ; glMap2f + _glMapGrid1d@20 = glMapGrid1d ; glMapGrid1d + _glMapGrid1f@12 = glMapGrid1f ; glMapGrid1f + _glMapGrid2d@40 = glMapGrid2d ; glMapGrid2d + _glMapGrid2f@24 = glMapGrid2f ; glMapGrid2f + _glMaterialf@12 = glMaterialf ; glMaterialf + _glMaterialfv@12 = glMaterialfv ; glMaterialfv + _glMateriali@12 = glMateriali ; glMateriali + _glMaterialiv@12 = glMaterialiv ; glMaterialiv + _glMatrixMode@4 = glMatrixMode ; glMatrixMode + _glMultMatrixd@4 = glMultMatrixd ; glMultMatrixd + _glMultMatrixf@4 = glMultMatrixf ; glMultMatrixf + _glNewList@8 = glNewList ; glNewList + _glNormal3b@12 = glNormal3b ; glNormal3b + _glNormal3bv@4 = glNormal3bv ; glNormal3bv + _glNormal3d@24 = glNormal3d ; glNormal3d + _glNormal3dv@4 = glNormal3dv ; glNormal3dv + _glNormal3f@12 = glNormal3f ; glNormal3f + _glNormal3fv@4 = glNormal3fv ; glNormal3fv + _glNormal3i@12 = glNormal3i ; glNormal3i + _glNormal3iv@4 = glNormal3iv ; glNormal3iv + _glNormal3s@12 = glNormal3s ; glNormal3s + _glNormal3sv@4 = glNormal3sv ; glNormal3sv + _glNormalPointer@12 = glNormalPointer ; glNormalPointer + _glOrtho@48 = glOrtho ; glOrtho + _glPassThrough@4 = glPassThrough ; glPassThrough + _glPixelMapfv@12 = glPixelMapfv ; glPixelMapfv + _glPixelMapuiv@12 = glPixelMapuiv ; glPixelMapuiv + _glPixelMapusv@12 = glPixelMapusv ; glPixelMapusv + _glPixelStoref@8 = glPixelStoref ; glPixelStoref + _glPixelStorei@8 = glPixelStorei ; glPixelStorei + _glPixelTransferf@8 = glPixelTransferf ; glPixelTransferf + _glPixelTransferi@8 = glPixelTransferi ; glPixelTransferi + _glPixelZoom@8 = glPixelZoom ; glPixelZoom + _glPointSize@4 = glPointSize ; glPointSize + _glPolygonMode@8 = glPolygonMode ; glPolygonMode + _glPolygonOffset@8 = glPolygonOffset ; glPolygonOffset + _glPolygonStipple@4 = glPolygonStipple ; glPolygonStipple + _glPopAttrib@0 = glPopAttrib ; glPopAttrib + _glPopClientAttrib@0 = glPopClientAttrib ; glPopClientAttrib + _glPopMatrix@0 = glPopMatrix ; glPopMatrix + _glPopName@0 = glPopName ; glPopName + _glPrioritizeTextures@12 = glPrioritizeTextures ; glPrioritizeTextures + _glPushAttrib@4 = glPushAttrib ; glPushAttrib + _glPushClientAttrib@4 = glPushClientAttrib ; glPushClientAttrib + _glPushMatrix@0 = glPushMatrix ; glPushMatrix + _glPushName@4 = glPushName ; glPushName + _glRasterPos2d@16 = glRasterPos2d ; glRasterPos2d + _glRasterPos2dv@4 = glRasterPos2dv ; glRasterPos2dv + _glRasterPos2f@8 = glRasterPos2f ; glRasterPos2f + _glRasterPos2fv@4 = glRasterPos2fv ; glRasterPos2fv + _glRasterPos2i@8 = glRasterPos2i ; glRasterPos2i + _glRasterPos2iv@4 = glRasterPos2iv ; glRasterPos2iv + _glRasterPos2s@8 = glRasterPos2s ; glRasterPos2s + _glRasterPos2sv@4 = glRasterPos2sv ; glRasterPos2sv + _glRasterPos3d@24 = glRasterPos3d ; glRasterPos3d + _glRasterPos3dv@4 = glRasterPos3dv ; glRasterPos3dv + _glRasterPos3f@12 = glRasterPos3f ; glRasterPos3f + _glRasterPos3fv@4 = glRasterPos3fv ; glRasterPos3fv + _glRasterPos3i@12 = glRasterPos3i ; glRasterPos3i + _glRasterPos3iv@4 = glRasterPos3iv ; glRasterPos3iv + _glRasterPos3s@12 = glRasterPos3s ; glRasterPos3s + _glRasterPos3sv@4 = glRasterPos3sv ; glRasterPos3sv + _glRasterPos4d@32 = glRasterPos4d ; glRasterPos4d + _glRasterPos4dv@4 = glRasterPos4dv ; glRasterPos4dv + _glRasterPos4f@16 = glRasterPos4f ; glRasterPos4f + _glRasterPos4fv@4 = glRasterPos4fv ; glRasterPos4fv + _glRasterPos4i@16 = glRasterPos4i ; glRasterPos4i + _glRasterPos4iv@4 = glRasterPos4iv ; glRasterPos4iv + _glRasterPos4s@16 = glRasterPos4s ; glRasterPos4s + _glRasterPos4sv@4 = glRasterPos4sv ; glRasterPos4sv + _glReadBuffer@4 = glReadBuffer ; glReadBuffer + _glReadPixels@28 = glReadPixels ; glReadPixels + _glRectd@32 = glRectd ; glRectd + _glRectdv@8 = glRectdv ; glRectdv + _glRectf@16 = glRectf ; glRectf + _glRectfv@8 = glRectfv ; glRectfv + _glRecti@16 = glRecti ; glRecti + _glRectiv@8 = glRectiv ; glRectiv + _glRects@16 = glRects ; glRects + _glRectsv@8 = glRectsv ; glRectsv + _glRenderMode@4 = glRenderMode ; glRenderMode + _glRotated@32 = glRotated ; glRotated + _glRotatef@16 = glRotatef ; glRotatef + _glScaled@24 = glScaled ; glScaled + _glScalef@12 = glScalef ; glScalef + _glScissor@16 = glScissor ; glScissor + _glSelectBuffer@8 = glSelectBuffer ; glSelectBuffer + _glShadeModel@4 = glShadeModel ; glShadeModel + _glStencilFunc@12 = glStencilFunc ; glStencilFunc + _glStencilMask@4 = glStencilMask ; glStencilMask + _glStencilOp@12 = glStencilOp ; glStencilOp + _glTexCoord1d@8 = glTexCoord1d ; glTexCoord1d + _glTexCoord1dv@4 = glTexCoord1dv ; glTexCoord1dv + _glTexCoord1f@4 = glTexCoord1f ; glTexCoord1f + _glTexCoord1fv@4 = glTexCoord1fv ; glTexCoord1fv + _glTexCoord1i@4 = glTexCoord1i ; glTexCoord1i + _glTexCoord1iv@4 = glTexCoord1iv ; glTexCoord1iv + _glTexCoord1s@4 = glTexCoord1s ; glTexCoord1s + _glTexCoord1sv@4 = glTexCoord1sv ; glTexCoord1sv + _glTexCoord2d@16 = glTexCoord2d ; glTexCoord2d + _glTexCoord2dv@4 = glTexCoord2dv ; glTexCoord2dv + _glTexCoord2f@8 = glTexCoord2f ; glTexCoord2f + _glTexCoord2fv@4 = glTexCoord2fv ; glTexCoord2fv + _glTexCoord2i@8 = glTexCoord2i ; glTexCoord2i + _glTexCoord2iv@4 = glTexCoord2iv ; glTexCoord2iv + _glTexCoord2s@8 = glTexCoord2s ; glTexCoord2s + _glTexCoord2sv@4 = glTexCoord2sv ; glTexCoord2sv + _glTexCoord3d@24 = glTexCoord3d ; glTexCoord3d + _glTexCoord3dv@4 = glTexCoord3dv ; glTexCoord3dv + _glTexCoord3f@12 = glTexCoord3f ; glTexCoord3f + _glTexCoord3fv@4 = glTexCoord3fv ; glTexCoord3fv + _glTexCoord3i@12 = glTexCoord3i ; glTexCoord3i + _glTexCoord3iv@4 = glTexCoord3iv ; glTexCoord3iv + _glTexCoord3s@12 = glTexCoord3s ; glTexCoord3s + _glTexCoord3sv@4 = glTexCoord3sv ; glTexCoord3sv + _glTexCoord4d@32 = glTexCoord4d ; glTexCoord4d + _glTexCoord4dv@4 = glTexCoord4dv ; glTexCoord4dv + _glTexCoord4f@16 = glTexCoord4f ; glTexCoord4f + _glTexCoord4fv@4 = glTexCoord4fv ; glTexCoord4fv + _glTexCoord4i@16 = glTexCoord4i ; glTexCoord4i + _glTexCoord4iv@4 = glTexCoord4iv ; glTexCoord4iv + _glTexCoord4s@16 = glTexCoord4s ; glTexCoord4s + _glTexCoord4sv@4 = glTexCoord4sv ; glTexCoord4sv + _glTexCoordPointer@16 = glTexCoordPointer ; glTexCoordPointer + _glTexEnvf@12 = glTexEnvf ; glTexEnvf + _glTexEnvfv@12 = glTexEnvfv ; glTexEnvfv + _glTexEnvi@12 = glTexEnvi ; glTexEnvi + _glTexEnviv@12 = glTexEnviv ; glTexEnviv + _glTexGend@16 = glTexGend ; glTexGend + _glTexGendv@12 = glTexGendv ; glTexGendv + _glTexGenf@12 = glTexGenf ; glTexGenf + _glTexGenfv@12 = glTexGenfv ; glTexGenfv + _glTexGeni@12 = glTexGeni ; glTexGeni + _glTexGeniv@12 = glTexGeniv ; glTexGeniv + _glTexImage1D@32 = glTexImage1D ; glTexImage1D + _glTexImage2D@36 = glTexImage2D ; glTexImage2D + _glTexParameterf@12 = glTexParameterf ; glTexParameterf + _glTexParameterfv@12 = glTexParameterfv ; glTexParameterfv + _glTexParameteri@12 = glTexParameteri ; glTexParameteri + _glTexParameteriv@12 = glTexParameteriv ; glTexParameteriv + _glTexSubImage1D@28 = glTexSubImage1D ; glTexSubImage1D + _glTexSubImage2D@36 = glTexSubImage2D ; glTexSubImage2D + _glTranslated@24 = glTranslated ; glTranslated + _glTranslatef@12 = glTranslatef ; glTranslatef + _glVertex2d@16 = glVertex2d ; glVertex2d + _glVertex2dv@4 = glVertex2dv ; glVertex2dv + _glVertex2f@8 = glVertex2f ; glVertex2f + _glVertex2fv@4 = glVertex2fv ; glVertex2fv + _glVertex2i@8 = glVertex2i ; glVertex2i + _glVertex2iv@4 = glVertex2iv ; glVertex2iv + _glVertex2s@8 = glVertex2s ; glVertex2s + _glVertex2sv@4 = glVertex2sv ; glVertex2sv + _glVertex3d@24 = glVertex3d ; glVertex3d + _glVertex3dv@4 = glVertex3dv ; glVertex3dv + _glVertex3f@12 = glVertex3f ; glVertex3f + _glVertex3fv@4 = glVertex3fv ; glVertex3fv + _glVertex3i@12 = glVertex3i ; glVertex3i + _glVertex3iv@4 = glVertex3iv ; glVertex3iv + _glVertex3s@12 = glVertex3s ; glVertex3s + _glVertex3sv@4 = glVertex3sv ; glVertex3sv + _glVertex4d@32 = glVertex4d ; glVertex4d + _glVertex4dv@4 = glVertex4dv ; glVertex4dv + _glVertex4f@16 = glVertex4f ; glVertex4f + _glVertex4fv@4 = glVertex4fv ; glVertex4fv + _glVertex4i@16 = glVertex4i ; glVertex4i + _glVertex4iv@4 = glVertex4iv ; glVertex4iv + _glVertex4s@16 = glVertex4s ; glVertex4s + _glVertex4sv@4 = glVertex4sv ; glVertex4sv + _glVertexPointer@16 = glVertexPointer ; glVertexPointer + _glViewport@16 = glViewport ; glViewport + _wglChoosePixelFormat@8 = wglChoosePixelFormat ; wglChoosePixelFormat + _wglCopyContext@12 = wglCopyContext ; wglCopyContext + _wglCreateContext@4 = wglCreateContext ; wglCreateContext + _wglCreateLayerContext@8 = wglCreateLayerContext ; wglCreateLayerContext + _wglDeleteContext@4 = wglDeleteContext ; wglDeleteContext + _wglDescribeLayerPlane@20 = wglDescribeLayerPlane ; wglDescribeLayerPlane + _wglDescribePixelFormat@16 = wglDescribePixelFormat ; wglDescribePixelFormat + _wglGetCurrentContext@0 = wglGetCurrentContext ; wglGetCurrentContext + _wglGetCurrentDC@0 = wglGetCurrentDC ; wglGetCurrentDC + _wglGetDefaultProcAddress@4 = wglGetDefaultProcAddress ; wglGetDefaultProcAddress + _wglGetLayerPaletteEntries@20 = wglGetLayerPaletteEntries ; wglGetLayerPaletteEntries + _wglGetPixelFormat@4 = wglGetPixelFormat ; wglGetPixelFormat + _wglGetProcAddress@4 = wglGetProcAddress ; wglGetProcAddress + _wglMakeCurrent@8 = wglMakeCurrent ; wglMakeCurrent + _wglRealizeLayerPalette@12 = wglRealizeLayerPalette ; wglRealizeLayerPalette + _wglSetLayerPaletteEntries@20 = wglSetLayerPaletteEntries ; wglSetLayerPaletteEntries + _wglSetPixelFormat@12 = wglSetPixelFormat ; wglSetPixelFormat + _wglShareLists@8 = wglShareLists ; wglShareLists + _wglSwapBuffers@4 = wglSwapBuffers ; wglSwapBuffers + _wglSwapLayerBuffers@8 = wglSwapLayerBuffers ; wglSwapLayerBuffers + _wglSwapMultipleBuffers@8 = wglSwapMultipleBuffers ; wglSwapMultipleBuffers + _wglUseFontBitmapsA@16 = wglUseFontBitmapsA ; wglUseFontBitmapsA + _wglUseFontBitmapsW@16 = wglUseFontBitmapsW ; wglUseFontBitmapsW + _wglUseFontOutlinesA@32 = wglUseFontOutlinesA ; wglUseFontOutlinesA + _wglUseFontOutlinesW@32 = wglUseFontOutlinesW ; wglUseFontOutlinesW diff --git a/def/rpcrt4.def b/def/rpcrt4.def new file mode 100644 index 0000000000..1eaa67b342 --- /dev/null +++ b/def/rpcrt4.def @@ -0,0 +1,468 @@ +LIBRARY rpcrt4 +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_CStdStubBuffer_AddRef@4 = CStdStubBuffer_AddRef +_CStdStubBuffer_Connect@8 = CStdStubBuffer_Connect +_CStdStubBuffer_CountRefs@4 = CStdStubBuffer_CountRefs +_CStdStubBuffer_DebugServerQueryInterface@8 = CStdStubBuffer_DebugServerQueryInterface +_CStdStubBuffer_DebugServerRelease@8 = CStdStubBuffer_DebugServerRelease +_CStdStubBuffer_Disconnect@4 = CStdStubBuffer_Disconnect +_CStdStubBuffer_Invoke@12 = CStdStubBuffer_Invoke +_CStdStubBuffer_IsIIDSupported@8 = CStdStubBuffer_IsIIDSupported +_CStdStubBuffer_QueryInterface@12 = CStdStubBuffer_QueryInterface +_DceErrorInqTextA@8 = DceErrorInqTextA +_DceErrorInqTextW@8 = DceErrorInqTextW +_I_RpcAllocate@4 = I_RpcAllocate +_I_RpcAsyncAbortCall@8 = I_RpcAsyncAbortCall +_I_RpcAsyncSetHandle@8 = I_RpcAsyncSetHandle +_I_RpcBCacheAllocate@4 = I_RpcBCacheAllocate +_I_RpcBCacheFree@4 = I_RpcBCacheFree +_I_RpcBindingCopy@8 = I_RpcBindingCopy +_I_RpcBindingInqConnId@12 = I_RpcBindingInqConnId +_I_RpcBindingInqDynamicEndpoint@8 = I_RpcBindingInqDynamicEndpoint +_I_RpcBindingInqDynamicEndpointA@8 = I_RpcBindingInqDynamicEndpointA +_I_RpcBindingInqDynamicEndpointW@8 = I_RpcBindingInqDynamicEndpointW +_I_RpcBindingInqTransportType@8 = I_RpcBindingInqTransportType +_I_RpcBindingIsClientLocal@8 = I_RpcBindingIsClientLocal +_I_RpcBindingToStaticStringBindingW@8 = I_RpcBindingToStaticStringBindingW +_I_RpcClearMutex@4 = I_RpcClearMutex +_I_RpcConnectionSetSockBuffSize@8 = I_RpcConnectionSetSockBuffSize +_I_RpcConnectionInqSockBuffSize@8 = I_RpcConnectionInqSockBuffSize +_I_RpcDeleteMutex@4 = I_RpcDeleteMutex +_I_RpcFree@4 = I_RpcFree +_I_RpcFreeBuffer@4 = I_RpcFreeBuffer +_I_RpcFreePipeBuffer@4 = I_RpcFreePipeBuffer +_I_RpcGetAssociationContext@8 = I_RpcGetAssociationContext +_I_RpcGetBuffer@4 = I_RpcGetBuffer +_I_RpcGetBufferWithObject@8 = I_RpcGetBufferWithObject +_I_RpcGetCurrentCallHandle@0 = I_RpcGetCurrentCallHandle +_I_RpcGetExtendedError@0 = I_RpcGetExtendedError +_I_RpcGetServerContextList@4 = I_RpcGetServerContextList +_I_RpcIfInqTransferSyntaxes@16 = I_RpcIfInqTransferSyntaxes +_I_RpcBindingInqSecurityContext@8 = I_RpcBindingInqSecurityContext +_I_RpcBindingInqWireIdForSnego@8 = I_RpcBindingInqWireIdForSnego +_I_RpcLogEvent@28 = I_RpcLogEvent +_I_RpcMapWin32Status@4 = I_RpcMapWin32Status +_I_RpcMonitorAssociation@12 = I_RpcMonitorAssociation +_I_RpcNsBindingSetEntryName@12 = I_RpcNsBindingSetEntryName +_I_RpcNsBindingSetEntryNameA@12 = I_RpcNsBindingSetEntryNameA +_I_RpcNsBindingSetEntryNameW@12 = I_RpcNsBindingSetEntryNameW +_I_RpcNsInterfaceExported@12 = I_RpcNsInterfaceExported +_I_RpcNsInterfaceUnexported@12 = I_RpcNsInterfaceUnexported +_I_RpcParseSecurity@8 = I_RpcParseSecurity +_I_RpcPauseExecution@4 = I_RpcPauseExecution +_I_RpcReallocPipeBuffer@8 = I_RpcReallocPipeBuffer +_I_RpcReceive@8 = I_RpcReceive +_I_RpcRequestMutex@4 = I_RpcRequestMutex +_I_RpcSend@4 = I_RpcSend +_I_RpcSendReceive@4 = I_RpcSendReceive +_I_RpcServerAllocateIpPort@8 = I_RpcServerAllocateIpPort +_I_RpcServerSetAddressChangeFn@4 = I_RpcServerSetAddressChangeFn +_I_RpcServerInqAddressChangeFn@0 = I_RpcServerInqAddressChangeFn +_I_RpcServerInqTransportType@4 = I_RpcServerInqTransportType +_I_RpcServerRegisterForwardFunction@4 = I_RpcServerRegisterForwardFunction +_I_RpcServerUseProtseq2A@20 = I_RpcServerUseProtseq2A +_I_RpcServerUseProtseqEp2A@24 = I_RpcServerUseProtseqEp2A +_I_RpcServerUseProtseq2W@20 = I_RpcServerUseProtseq2W +_I_RpcServerUseProtseqEp2W@24 = I_RpcServerUseProtseqEp2W +_I_RpcSetServerContextList@8 = I_RpcSetServerContextList +_I_RpcSsDontSerializeContext@0 = I_RpcSsDontSerializeContext +_I_RpcStopMonitorAssociation@4 = I_RpcStopMonitorAssociation +_I_RpcTransConnectionAllocatePacket@8 = I_RpcTransConnectionAllocatePacket +_I_RpcTransConnectionFreePacket@8 = I_RpcTransConnectionFreePacket +_I_RpcTransConnectionReallocPacket@16 = I_RpcTransConnectionReallocPacket +_I_RpcTransDatagramAllocate@16 = I_RpcTransDatagramAllocate +_I_RpcTransDatagramAllocate2@16 = I_RpcTransDatagramAllocate2 +_I_RpcTransDatagramFree@12 = I_RpcTransDatagramFree +_I_RpcTransGetAddressList@8 = I_RpcTransGetAddressList +_I_RpcTransGetThreadEvent@0 = I_RpcTransGetThreadEvent +_I_RpcTransIoCancelled@8 = I_RpcTransIoCancelled +_I_RpcTransServerNewConnection@4 = I_RpcTransServerNewConnection +_I_UuidCreate@4 = I_UuidCreate +_IUnknown_AddRef_Proxy@4 = IUnknown_AddRef_Proxy +_IUnknown_QueryInterface_Proxy@12 = IUnknown_QueryInterface_Proxy +_IUnknown_Release_Proxy@4 = IUnknown_Release_Proxy +_MIDL_wchar_strcpy@8 = MIDL_wchar_strcpy +_MIDL_wchar_strlen@4 = MIDL_wchar_strlen +_MesBufferHandleReset@24 = MesBufferHandleReset +_MesDecodeBufferHandleCreate@12 = MesDecodeBufferHandleCreate +_MesDecodeIncrementalHandleCreate@12 = MesDecodeIncrementalHandleCreate +_MesEncodeDynBufferHandleCreate@12 = MesEncodeDynBufferHandleCreate +_MesEncodeFixedBufferHandleCreate@16 = MesEncodeFixedBufferHandleCreate +_MesEncodeIncrementalHandleCreate@16 = MesEncodeIncrementalHandleCreate +_MesHandleFree@4 = MesHandleFree +_MesIncrementalHandleReset@24 = MesIncrementalHandleReset +_MesInqProcEncodingId@12 = MesInqProcEncodingId +_NDRCContextBinding@4 = NDRCContextBinding +_NDRCContextMarshall@8 = NDRCContextMarshall +_NDRCContextUnmarshall@16 = NDRCContextUnmarshall +_NDRSContextMarshall@12 = NDRSContextMarshall +_NDRSContextUnmarshall@8 = NDRSContextUnmarshall +_NDRSContextMarshallEx@16 = NDRSContextMarshallEx +_NDRSContextUnmarshallEx@12 = NDRSContextUnmarshallEx +_NDRSContextMarshall2@24 = NDRSContextMarshall2 +_NDRSContextUnmarshall2@20 = NDRSContextUnmarshall2 +_NDRcopy@12 = NDRcopy +_NdrAllocate@8 = NdrAllocate +_NdrAsyncClientCall = NdrAsyncClientCall +_NdrAsyncServerCall@4 = NdrAsyncServerCall +_NdrByteCountPointerBufferSize@12 = NdrByteCountPointerBufferSize +_NdrByteCountPointerFree@12 = NdrByteCountPointerFree +_NdrByteCountPointerMarshall@12 = NdrByteCountPointerMarshall +_NdrByteCountPointerUnmarshall@16 = NdrByteCountPointerUnmarshall +_NdrClearOutParameters@12 = NdrClearOutParameters +_NdrClientCall = NdrClientCall +_NdrClientCall2 = NdrClientCall2 +_NdrClientContextMarshall@12 = NdrClientContextMarshall +_NdrClientContextUnmarshall@12 = NdrClientContextUnmarshall +_NdrClientInitialize@16 = NdrClientInitialize +_NdrClientInitializeNew@16 = NdrClientInitializeNew +_NdrComplexArrayBufferSize@12 = NdrComplexArrayBufferSize +_NdrComplexArrayFree@12 = NdrComplexArrayFree +_NdrComplexArrayMarshall@12 = NdrComplexArrayMarshall +_NdrComplexArrayMemorySize@8 = NdrComplexArrayMemorySize +_NdrComplexArrayUnmarshall@16 = NdrComplexArrayUnmarshall +_NdrComplexStructBufferSize@12 = NdrComplexStructBufferSize +_NdrComplexStructFree@12 = NdrComplexStructFree +_NdrComplexStructMarshall@12 = NdrComplexStructMarshall +_NdrComplexStructMemorySize@8 = NdrComplexStructMemorySize +_NdrComplexStructUnmarshall@16 = NdrComplexStructUnmarshall +_NdrConformantArrayBufferSize@12 = NdrConformantArrayBufferSize +_NdrConformantArrayFree@12 = NdrConformantArrayFree +_NdrConformantArrayMarshall@12 = NdrConformantArrayMarshall +_NdrConformantArrayMemorySize@8 = NdrConformantArrayMemorySize +_NdrConformantArrayUnmarshall@16 = NdrConformantArrayUnmarshall +_NdrConformantStringBufferSize@12 = NdrConformantStringBufferSize +_NdrConformantStringMarshall@12 = NdrConformantStringMarshall +_NdrConformantStringMemorySize@8 = NdrConformantStringMemorySize +_NdrConformantStringUnmarshall@16 = NdrConformantStringUnmarshall +_NdrConformantStructBufferSize@12 = NdrConformantStructBufferSize +_NdrConformantStructFree@12 = NdrConformantStructFree +_NdrConformantStructMarshall@12 = NdrConformantStructMarshall +_NdrConformantStructMemorySize@8 = NdrConformantStructMemorySize +_NdrConformantStructUnmarshall@16 = NdrConformantStructUnmarshall +_NdrConformantVaryingArrayBufferSize@12 = NdrConformantVaryingArrayBufferSize +_NdrConformantVaryingArrayFree@12 = NdrConformantVaryingArrayFree +_NdrConformantVaryingArrayMarshall@12 = NdrConformantVaryingArrayMarshall +_NdrConformantVaryingArrayMemorySize@8 = NdrConformantVaryingArrayMemorySize +_NdrConformantVaryingArrayUnmarshall@16 = NdrConformantVaryingArrayUnmarshall +_NdrConformantVaryingStructBufferSize@12 = NdrConformantVaryingStructBufferSize +_NdrConformantVaryingStructFree@12 = NdrConformantVaryingStructFree +_NdrConformantVaryingStructMarshall@12 = NdrConformantVaryingStructMarshall +_NdrConformantVaryingStructMemorySize@8 = NdrConformantVaryingStructMemorySize +_NdrConformantVaryingStructUnmarshall@16 = NdrConformantVaryingStructUnmarshall +_NdrContextHandleInitialize@8 = NdrContextHandleInitialize +_NdrContextHandleSize@12 = NdrContextHandleSize +_NdrConvert@8 = NdrConvert +_NdrConvert2@12 = NdrConvert2 +_NdrCorrelationFree@4 = NdrCorrelationFree +_NdrCorrelationInitialize@16 = NdrCorrelationInitialize +_NdrCorrelationPass@4 = NdrCorrelationPass +_NdrCStdStubBuffer_Release@8 = NdrCStdStubBuffer_Release +_NdrCStdStubBuffer2_Release@8 = NdrCStdStubBuffer2_Release +_NdrDcomAsyncClientCall = NdrDcomAsyncClientCall +_NdrDcomAsyncStubCall@16 = NdrDcomAsyncStubCall +_NdrDllCanUnloadNow@4 = NdrDllCanUnloadNow +_NdrDllGetClassObject@24 = NdrDllGetClassObject +_NdrDllRegisterProxy@12 = NdrDllRegisterProxy +_NdrDllUnregisterProxy@12 = NdrDllUnregisterProxy +_NdrEncapsulatedUnionBufferSize@12 = NdrEncapsulatedUnionBufferSize +_NdrEncapsulatedUnionFree@12 = NdrEncapsulatedUnionFree +_NdrEncapsulatedUnionMarshall@12 = NdrEncapsulatedUnionMarshall +_NdrEncapsulatedUnionMemorySize@8 = NdrEncapsulatedUnionMemorySize +_NdrEncapsulatedUnionUnmarshall@16 = NdrEncapsulatedUnionUnmarshall +_NdrFixedArrayBufferSize@12 = NdrFixedArrayBufferSize +_NdrFixedArrayFree@12 = NdrFixedArrayFree +_NdrFixedArrayMarshall@12 = NdrFixedArrayMarshall +_NdrFixedArrayMemorySize@8 = NdrFixedArrayMemorySize +_NdrFixedArrayUnmarshall@16 = NdrFixedArrayUnmarshall +_NdrFreeBuffer@4 = NdrFreeBuffer +_NdrFullPointerFree@8 = NdrFullPointerFree +_NdrFullPointerInsertRefId@12 = NdrFullPointerInsertRefId +_NdrFullPointerQueryPointer@16 = NdrFullPointerQueryPointer +_NdrFullPointerQueryRefId@16 = NdrFullPointerQueryRefId +_NdrFullPointerXlatFree@4 = NdrFullPointerXlatFree +_NdrFullPointerXlatInit@8 = NdrFullPointerXlatInit +_NdrGetBuffer@12 = NdrGetBuffer +_NdrGetDcomProtocolVersion@8 = NdrGetDcomProtocolVersion +_NdrGetPipeBuffer@12 = NdrGetPipeBuffer +_NdrGetPartialBuffer@4 = NdrGetPartialBuffer +_NdrGetUserMarshalInfo@12 = NdrGetUserMarshalInfo +_NdrInterfacePointerBufferSize@12 = NdrInterfacePointerBufferSize +_NdrInterfacePointerFree@12 = NdrInterfacePointerFree +_NdrInterfacePointerMarshall@12 = NdrInterfacePointerMarshall +_NdrInterfacePointerMemorySize@8 = NdrInterfacePointerMemorySize +_NdrInterfacePointerUnmarshall@16 = NdrInterfacePointerUnmarshall +_NdrIsAppDoneWithPipes@4 = NdrIsAppDoneWithPipes +_NdrMapCommAndFaultStatus@16 = NdrMapCommAndFaultStatus +_NdrMarkNextActivePipe@4 = NdrMarkNextActivePipe +_NdrMesProcEncodeDecode = NdrMesProcEncodeDecode +_NdrMesProcEncodeDecode2 = NdrMesProcEncodeDecode2 +_NdrMesSimpleTypeAlignSize@4 = NdrMesSimpleTypeAlignSize +_NdrMesSimpleTypeDecode@12 = NdrMesSimpleTypeDecode +_NdrMesSimpleTypeEncode@16 = NdrMesSimpleTypeEncode +_NdrMesTypeAlignSize@16 = NdrMesTypeAlignSize +_NdrMesTypeDecode@16 = NdrMesTypeDecode +_NdrMesTypeEncode@16 = NdrMesTypeEncode +_NdrMesTypeAlignSize2@20 = NdrMesTypeAlignSize2 +_NdrMesTypeDecode2@20 = NdrMesTypeDecode2 +_NdrMesTypeEncode2@20 = NdrMesTypeEncode2 +_NdrMesTypeFree2@20 = NdrMesTypeFree2 +_NdrNonConformantStringBufferSize@12 = NdrNonConformantStringBufferSize +_NdrNonConformantStringMarshall@12 = NdrNonConformantStringMarshall +_NdrNonConformantStringMemorySize@8 = NdrNonConformantStringMemorySize +_NdrNonConformantStringUnmarshall@16 = NdrNonConformantStringUnmarshall +_NdrNonEncapsulatedUnionBufferSize@12 = NdrNonEncapsulatedUnionBufferSize +_NdrNonEncapsulatedUnionFree@12 = NdrNonEncapsulatedUnionFree +_NdrNonEncapsulatedUnionMarshall@12 = NdrNonEncapsulatedUnionMarshall +_NdrNonEncapsulatedUnionMemorySize@8 = NdrNonEncapsulatedUnionMemorySize +_NdrNonEncapsulatedUnionUnmarshall@16 = NdrNonEncapsulatedUnionUnmarshall +_NdrNsGetBuffer@12 = NdrNsGetBuffer +_NdrNsSendReceive@12 = NdrNsSendReceive +_NdrOleAllocate@4 = NdrOleAllocate +_NdrOleFree@4 = NdrOleFree +_NdrPipePull@16 = NdrPipePull +_NdrPipePush@12 = NdrPipePush +_NdrPipeSendReceive@8 = NdrPipeSendReceive +_NdrPipesInitialize@24 = NdrPipesInitialize +_NdrPipesDone@4 = NdrPipesDone +_NdrPointerBufferSize@12 = NdrPointerBufferSize +_NdrPointerFree@12 = NdrPointerFree +_NdrPointerMarshall@12 = NdrPointerMarshall +_NdrPointerMemorySize@8 = NdrPointerMemorySize +_NdrPointerUnmarshall@16 = NdrPointerUnmarshall +_NdrProxyErrorHandler@4 = NdrProxyErrorHandler +_NdrProxyFreeBuffer@8 = NdrProxyFreeBuffer +_NdrProxyGetBuffer@8 = NdrProxyGetBuffer +_NdrProxyInitialize@20 = NdrProxyInitialize +_NdrProxySendReceive@8 = NdrProxySendReceive +_NdrRangeUnmarshall@16 = NdrRangeUnmarshall +_NdrRpcSmClientAllocate@4 = NdrRpcSmClientAllocate +_NdrRpcSmClientFree@4 = NdrRpcSmClientFree +_NdrRpcSsDefaultAllocate@4 = NdrRpcSsDefaultAllocate +_NdrRpcSsDefaultFree@4 = NdrRpcSsDefaultFree +_NdrRpcSmSetClientToOsf@4 = NdrRpcSmSetClientToOsf +_NdrRpcSsDisableAllocate@4 = NdrRpcSsDisableAllocate +_NdrRpcSsEnableAllocate@4 = NdrRpcSsEnableAllocate +_NdrSendReceive@8 = NdrSendReceive +_NdrServerCall@4 = NdrServerCall +_NdrServerCall2@4 = NdrServerCall2 +_NdrServerContextMarshall@12 = NdrServerContextMarshall +_NdrServerContextUnmarshall@4 = NdrServerContextUnmarshall +_NdrServerContextNewMarshall@16 = NdrServerContextNewMarshall +_NdrServerContextNewUnmarshall@8 = NdrServerContextNewUnmarshall +_NdrServerInitialize@12 = NdrServerInitialize +_NdrServerInitializeMarshall@8 = NdrServerInitializeMarshall +_NdrServerInitializeNew@12 = NdrServerInitializeNew +_NdrServerInitializePartial@16 = NdrServerInitializePartial +_NdrServerInitializeUnmarshall@12 = NdrServerInitializeUnmarshall +_NdrServerMarshall@16 = NdrServerMarshall +_NdrServerUnmarshall@24 = NdrServerUnmarshall +_NdrSimpleStructBufferSize@12 = NdrSimpleStructBufferSize +_NdrSimpleStructFree@12 = NdrSimpleStructFree +_NdrSimpleStructMarshall@12 = NdrSimpleStructMarshall +_NdrSimpleStructMemorySize@8 = NdrSimpleStructMemorySize +_NdrSimpleStructUnmarshall@16 = NdrSimpleStructUnmarshall +_NdrSimpleTypeMarshall@12 = NdrSimpleTypeMarshall +_NdrSimpleTypeUnmarshall@12 = NdrSimpleTypeUnmarshall +_NdrStubCall@16 = NdrStubCall +_NdrStubCall2@16 = NdrStubCall2 +_NdrStubForwardingFunction@16 = NdrStubForwardingFunction +_NdrStubGetBuffer@12 = NdrStubGetBuffer +_NdrStubInitialize@16 = NdrStubInitialize +_NdrStubInitializeMarshall@12 = NdrStubInitializeMarshall +_NdrVaryingArrayBufferSize@12 = NdrVaryingArrayBufferSize +_NdrVaryingArrayFree@12 = NdrVaryingArrayFree +_NdrVaryingArrayMarshall@12 = NdrVaryingArrayMarshall +_NdrVaryingArrayMemorySize@8 = NdrVaryingArrayMemorySize +_NdrVaryingArrayUnmarshall@16 = NdrVaryingArrayUnmarshall +_NdrXmitOrRepAsBufferSize@12 = NdrXmitOrRepAsBufferSize +_NdrXmitOrRepAsFree@12 = NdrXmitOrRepAsFree +_NdrXmitOrRepAsMarshall@12 = NdrXmitOrRepAsMarshall +_NdrXmitOrRepAsMemorySize@8 = NdrXmitOrRepAsMemorySize +_NdrXmitOrRepAsUnmarshall@16 = NdrXmitOrRepAsUnmarshall +_NdrUserMarshalSimpleTypeConvert@12 = NdrUserMarshalSimpleTypeConvert +_NdrUserMarshalBufferSize@12 = NdrUserMarshalBufferSize +_NdrUserMarshalFree@12 = NdrUserMarshalFree +_NdrUserMarshalMarshall@12 = NdrUserMarshalMarshall +_NdrUserMarshalMemorySize@8 = NdrUserMarshalMemorySize +_NdrUserMarshalUnmarshall@16 = NdrUserMarshalUnmarshall +_RpcAsyncAbortCall@8 = RpcAsyncAbortCall +_RpcAsyncCancelCall@8 = RpcAsyncCancelCall +_RpcAsyncCompleteCall@8 = RpcAsyncCompleteCall +_RpcAsyncGetCallStatus@4 = RpcAsyncGetCallStatus +_RpcAsyncInitializeHandle@8 = RpcAsyncInitializeHandle +_RpcAsyncRegisterInfo@4 = RpcAsyncRegisterInfo +_RpcBindingCopy@8 = RpcBindingCopy +_RpcBindingFree@4 = RpcBindingFree +_RpcBindingFromStringBindingA@8 = RpcBindingFromStringBindingA +_RpcBindingFromStringBindingW@8 = RpcBindingFromStringBindingW +_RpcBindingInqAuthClientA@24 = RpcBindingInqAuthClientA +_RpcBindingInqAuthClientW@24 = RpcBindingInqAuthClientW +_RpcBindingInqAuthClientExA@28 = RpcBindingInqAuthClientExA +_RpcBindingInqAuthClientExW@28 = RpcBindingInqAuthClientExW +_RpcBindingInqAuthInfoA@24 = RpcBindingInqAuthInfoA +_RpcBindingInqAuthInfoExA@32 = RpcBindingInqAuthInfoExA +_RpcBindingInqAuthInfoExW@32 = RpcBindingInqAuthInfoExW +_RpcBindingInqAuthInfoW@24 = RpcBindingInqAuthInfoW +_RpcBindingInqObject@8 = RpcBindingInqObject +_RpcBindingReset@4 = RpcBindingReset +_RpcBindingServerFromClient@8 = RpcBindingServerFromClient +_RpcBindingSetAuthInfoA@24 = RpcBindingSetAuthInfoA +_RpcBindingSetAuthInfoExA@28 = RpcBindingSetAuthInfoExA +_RpcBindingSetAuthInfoExW@28 = RpcBindingSetAuthInfoExW +_RpcBindingSetAuthInfoW@24 = RpcBindingSetAuthInfoW +_RpcBindingSetObject@8 = RpcBindingSetObject +_RpcBindingSetOption@12 = RpcBindingSetOption +_RpcBindingInqOption@12 = RpcBindingInqOption +_RpcBindingToStringBindingA@8 = RpcBindingToStringBindingA +_RpcBindingToStringBindingW@8 = RpcBindingToStringBindingW +_RpcBindingVectorFree@4 = RpcBindingVectorFree +_RpcCancelThread@4 = RpcCancelThread +_RpcCancelThreadEx@8 = RpcCancelThreadEx +_RpcCertGeneratePrincipalNameA@12 = RpcCertGeneratePrincipalNameA +_RpcCertGeneratePrincipalNameW@12 = RpcCertGeneratePrincipalNameW +_RpcEpRegisterA@16 = RpcEpRegisterA +_RpcEpRegisterNoReplaceA@16 = RpcEpRegisterNoReplaceA +_RpcEpRegisterNoReplaceW@16 = RpcEpRegisterNoReplaceW +_RpcEpRegisterW@16 = RpcEpRegisterW +_RpcEpResolveBinding@8 = RpcEpResolveBinding +_RpcEpUnregister@12 = RpcEpUnregister +_RpcIfIdVectorFree@4 = RpcIfIdVectorFree +_RpcIfInqId@8 = RpcIfInqId +_RpcImpersonateClient@4 = RpcImpersonateClient +_RpcMgmtEnableIdleCleanup@0 = RpcMgmtEnableIdleCleanup +_RpcMgmtEpEltInqBegin@24 = RpcMgmtEpEltInqBegin +_RpcMgmtEpEltInqDone@4 = RpcMgmtEpEltInqDone +_RpcMgmtEpEltInqNextA@20 = RpcMgmtEpEltInqNextA +_RpcMgmtEpEltInqNextW@20 = RpcMgmtEpEltInqNextW +_RpcMgmtEpUnregister@16 = RpcMgmtEpUnregister +_RpcMgmtInqComTimeout@8 = RpcMgmtInqComTimeout +_RpcMgmtInqDefaultProtectLevel@8 = RpcMgmtInqDefaultProtectLevel +_RpcMgmtInqIfIds@8 = RpcMgmtInqIfIds +_RpcMgmtInqServerPrincNameA@12 = RpcMgmtInqServerPrincNameA +_RpcMgmtInqServerPrincNameW@12 = RpcMgmtInqServerPrincNameW +_RpcMgmtInqStats@8 = RpcMgmtInqStats +_RpcMgmtIsServerListening@4 = RpcMgmtIsServerListening +_RpcMgmtSetAuthorizationFn@4 = RpcMgmtSetAuthorizationFn +_RpcMgmtSetCancelTimeout@4 = RpcMgmtSetCancelTimeout +_RpcMgmtSetComTimeout@8 = RpcMgmtSetComTimeout +_RpcMgmtSetServerStackSize@4 = RpcMgmtSetServerStackSize +_RpcMgmtStatsVectorFree@4 = RpcMgmtStatsVectorFree +_RpcMgmtStopServerListening@4 = RpcMgmtStopServerListening +_RpcMgmtWaitServerListen@0 = RpcMgmtWaitServerListen +_RpcNetworkInqProtseqsA@4 = RpcNetworkInqProtseqsA +_RpcNetworkInqProtseqsW@4 = RpcNetworkInqProtseqsW +_RpcNetworkIsProtseqValidA@4 = RpcNetworkIsProtseqValidA +_RpcNetworkIsProtseqValidW@4 = RpcNetworkIsProtseqValidW +_RpcNsBindingInqEntryNameA@12 = RpcNsBindingInqEntryNameA +_RpcNsBindingInqEntryNameW@12 = RpcNsBindingInqEntryNameW +_RpcObjectInqType@8 = RpcObjectInqType +_RpcObjectSetInqFn@4 = RpcObjectSetInqFn +_RpcObjectSetType@8 = RpcObjectSetType +_RpcProtseqVectorFreeA@4 = RpcProtseqVectorFreeA +_RpcProtseqVectorFreeW@4 = RpcProtseqVectorFreeW +_RpcRaiseException@4 = RpcRaiseException +_RpcRevertToSelf@0 = RpcRevertToSelf +_RpcRevertToSelfEx@4 = RpcRevertToSelfEx +_RpcServerInqBindings@4 = RpcServerInqBindings +_RpcServerInqDefaultPrincNameA@8 = RpcServerInqDefaultPrincNameA +_RpcServerInqDefaultPrincNameW@8 = RpcServerInqDefaultPrincNameW +_RpcServerInqIf@12 = RpcServerInqIf +_RpcServerListen@12 = RpcServerListen +_RpcServerRegisterAuthInfoA@16 = RpcServerRegisterAuthInfoA +_RpcServerRegisterAuthInfoW@16 = RpcServerRegisterAuthInfoW +_RpcServerRegisterIf@12 = RpcServerRegisterIf +_RpcServerRegisterIf2@28 = RpcServerRegisterIf2 +_RpcServerRegisterIfEx@24 = RpcServerRegisterIfEx +_RpcServerTestCancel@4 = RpcServerTestCancel +_RpcServerUnregisterIf@12 = RpcServerUnregisterIf +_RpcServerUseAllProtseqs@8 = RpcServerUseAllProtseqs +_RpcServerUseAllProtseqsEx@12 = RpcServerUseAllProtseqsEx +_RpcServerUseAllProtseqsIf@12 = RpcServerUseAllProtseqsIf +_RpcServerUseAllProtseqsIfEx@16 = RpcServerUseAllProtseqsIfEx +_RpcServerUseProtseqA@12 = RpcServerUseProtseqA +_RpcServerUseProtseqExA@16 = RpcServerUseProtseqExA +_RpcServerUseProtseqEpA@16 = RpcServerUseProtseqEpA +_RpcServerUseProtseqEpExA@20 = RpcServerUseProtseqEpExA +_RpcServerUseProtseqEpW@16 = RpcServerUseProtseqEpW +_RpcServerUseProtseqEpExW@20 = RpcServerUseProtseqEpExW +_RpcServerUseProtseqIfA@16 = RpcServerUseProtseqIfA +_RpcServerUseProtseqIfExA@20 = RpcServerUseProtseqIfExA +_RpcServerUseProtseqIfW@16 = RpcServerUseProtseqIfW +_RpcServerUseProtseqIfExW@20 = RpcServerUseProtseqIfExW +_RpcServerUseProtseqW@12 = RpcServerUseProtseqW +_RpcServerUseProtseqExW@16 = RpcServerUseProtseqExW +_RpcServerYield@0 = RpcServerYield +_RpcSmAllocate@8 = RpcSmAllocate +_RpcSmClientFree@4 = RpcSmClientFree +_RpcSmDestroyClientContext@4 = RpcSmDestroyClientContext +_RpcSmDisableAllocate@0 = RpcSmDisableAllocate +_RpcSmEnableAllocate@0 = RpcSmEnableAllocate +_RpcSmFree@4 = RpcSmFree +_RpcSmGetThreadHandle@4 = RpcSmGetThreadHandle +_RpcSmSetClientAllocFree@8 = RpcSmSetClientAllocFree +_RpcSmSetThreadHandle@4 = RpcSmSetThreadHandle +_RpcSmSwapClientAllocFree@16 = RpcSmSwapClientAllocFree +_RpcSsAllocate@4 = RpcSsAllocate +_RpcSsDestroyClientContext@4 = RpcSsDestroyClientContext +_RpcSsDisableAllocate@0 = RpcSsDisableAllocate +_RpcSsDontSerializeContext@0 = RpcSsDontSerializeContext +_RpcSsEnableAllocate@0 = RpcSsEnableAllocate +_RpcSsFree@4 = RpcSsFree +_RpcSsGetContextBinding@8 = RpcSsGetContextBinding +_RpcSsGetThreadHandle@0 = RpcSsGetThreadHandle +_RpcSsSetClientAllocFree@8 = RpcSsSetClientAllocFree +_RpcSsSetThreadHandle@4 = RpcSsSetThreadHandle +_RpcSsSwapClientAllocFree@16 = RpcSsSwapClientAllocFree +_RpcStringBindingComposeA@24 = RpcStringBindingComposeA +_RpcStringBindingComposeW@24 = RpcStringBindingComposeW +_RpcStringBindingParseA@24 = RpcStringBindingParseA +_RpcStringBindingParseW@24 = RpcStringBindingParseW +_RpcStringFreeA@4 = RpcStringFreeA +_RpcStringFreeW@4 = RpcStringFreeW +_RpcTestCancel@0 = RpcTestCancel +_TowerConstruct@24 = TowerConstruct +_TowerExplode@24 = TowerExplode +_UuidCompare@12 = UuidCompare +_UuidCreate@4 = UuidCreate +_UuidCreateNil@4 = UuidCreateNil +_UuidCreateSequential@4 = UuidCreateSequential +_UuidEqual@12 = UuidEqual +_UuidFromStringA@8 = UuidFromStringA +_UuidFromStringW@8 = UuidFromStringW +_UuidHash@8 = UuidHash +_UuidIsNil@8 = UuidIsNil +_UuidToStringA@8 = UuidToStringA +_UuidToStringW@8 = UuidToStringW +_char_array_from_ndr@16 = char_array_from_ndr +_char_from_ndr@8 = char_from_ndr +_data_from_ndr@16 = data_from_ndr +_data_into_ndr@16 = data_into_ndr +_data_size_ndr@16 = data_size_ndr +_double_array_from_ndr@16 = double_array_from_ndr +_double_from_ndr@8 = double_from_ndr +_enum_from_ndr@8 = enum_from_ndr +_float_array_from_ndr@16 = float_array_from_ndr +_float_from_ndr@8 = float_from_ndr +_long_array_from_ndr@16 = long_array_from_ndr +_long_from_ndr@8 = long_from_ndr +_long_from_ndr_temp@12 = long_from_ndr_temp +_short_array_from_ndr@16 = short_array_from_ndr +_short_from_ndr@8 = short_from_ndr +_short_from_ndr_temp@12 = short_from_ndr_temp +_tree_into_ndr@16 = tree_into_ndr +_tree_peek_ndr@16 = tree_peek_ndr +_tree_size_ndr@16 = tree_size_ndr +_RpcInitializeAsyncHandle@8 = RpcInitializeAsyncHandle +_RpcRegisterAsyncInfo@4 = RpcRegisterAsyncInfo +_RpcGetAsyncCallStatus@4 = RpcGetAsyncCallStatus +_RpcCompleteAsyncCall@8 = RpcCompleteAsyncCall +_RpcAbortAsyncCall@8 = RpcAbortAsyncCall +_RpcCancelAsyncCall@8 = RpcCancelAsyncCall +_I_RpcSetAsyncHandle@8 = I_RpcSetAsyncHandle +_I_RpcAbortAsyncCall@8 = I_RpcAbortAsyncCall +_GlobalMutexRequestExternal@0 = GlobalMutexRequestExternal +_GlobalMutexClearExternal@0 = GlobalMutexClearExternal +_NdrpSetRpcSsDefaults@8 = NdrpSetRpcSsDefaults@8 diff --git a/def/shell32.def b/def/shell32.def new file mode 100644 index 0000000000..ea89b03c6e --- /dev/null +++ b/def/shell32.def @@ -0,0 +1,252 @@ +LIBRARY shell32 +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_WriteCabinetState@4 = WriteCabinetState +_Win32DeleteFile@4 = Win32DeleteFile +_WOWShellExecute@28 = WOWShellExecute +_SignalFileOpen@4 = SignalFileOpen +_Shell_NotifyIconW@8 = Shell_NotifyIconW +_Shell_NotifyIconA@8 = Shell_NotifyIconA +_Shell_NotifyIcon@8 = Shell_NotifyIcon +_Shell_MergeMenus@24 = Shell_MergeMenus +_Shell_GetImageLists@8 = Shell_GetImageLists +_Shell_GetCachedImageIndex@12 = Shell_GetCachedImageIndex +_ShellMessageBoxW = ShellMessageBoxW +_ShellMessageBoxA = ShellMessageBoxA +_ShellHookProc@12 = ShellHookProc +_ShellExecuteW@24 = ShellExecuteW +_ShellExecuteExW@4 = ShellExecuteExW +_ShellExecuteExA@4 = ShellExecuteExA +_ShellExecuteEx@4 = ShellExecuteEx +_ShellExecuteA@24 = ShellExecuteA +_ShellAboutW@16 = ShellAboutW +_ShellAboutA@16 = ShellAboutA +_SheShortenPathW@8 = SheShortenPathW +_SheShortenPathA@8 = SheShortenPathA +_SheSetCurDrive@4 = SheSetCurDrive +_SheRemoveQuotesW@4 = SheRemoveQuotesW +_SheRemoveQuotesA@4 = SheRemoveQuotesA +_SheGetPathOffsetW@4 = SheGetPathOffsetW +_SheGetDirW@8 = SheGetDirW +_SheGetDirExW@12 = SheGetDirExW +_SheGetDirA@8 = SheGetDirA +_SheGetCurDrive@0 = SheGetCurDrive +_SheFullPathW@12 = SheFullPathW +_SheFullPathA@12 = SheFullPathA +_SheConvertPathW@12 = SheConvertPathW +_SheChangeDirW@4 = SheChangeDirW +_SheChangeDirExW@4 = SheChangeDirExW +_SheChangeDirExA@4 = SheChangeDirExA +_SheChangeDirA@4 = SheChangeDirA +_SHValidateUNC@12 = SHValidateUNC +_SHUpdateRecycleBinIcon@0 = SHUpdateRecycleBinIcon +_SHUpdateImageW@16 = SHUpdateImageW +_SHUpdateImageA@16 = SHUpdateImageA +_SHUnlockShared@4 = SHUnlockShared +_SHTestTokenMembership@8 = SHTestTokenMembership +_SHStartNetConnectionDialogW@12 = SHStartNetConnectionDialogW +_SHSimpleIDListFromPath@4 = SHSimpleIDListFromPath +_SHShellFolderView_Message@12 = SHShellFolderView_Message +_SHSetUnreadMailCountW@12 = SHSetUnreadMailCountW +_SHSetLocalizedName@12 = SHSetLocalizedName +_SHSetInstanceExplorer@4 = SHSetInstanceExplorer +_SHRunControlPanel@8 = SHRunControlPanel +_SHRestricted@4 = SHRestricted +_SHReplaceFromPropSheetExtArray@16 = SHReplaceFromPropSheetExtArray +_SHQueryRecycleBinW@8 = SHQueryRecycleBinW +_SHQueryRecycleBinA@8 = SHQueryRecycleBinA +_SHPropStgWriteMultiple@24 = SHPropStgWriteMultiple +_SHPropStgReadMultiple@20 = SHPropStgReadMultiple +_SHPropStgCreate@32 = SHPropStgCreate +_SHPathPrepareForWriteW@16 = SHPathPrepareForWriteW +_SHPathPrepareForWriteA@16 = SHPathPrepareForWriteA +_SHParseDisplayName@20 = SHParseDisplayName +_SHOpenPropSheetW@28 = SHOpenPropSheetW +_SHOpenFolderAndSelectItems@16 = SHOpenFolderAndSelectItems +_SHObjectProperties@16 = SHObjectProperties +_SHMultiFileProperties@8 = SHMultiFileProperties +_SHMapPIDLToSystemImageListIndex@12 = SHMapPIDLToSystemImageListIndex +_SHMapIDListToImageListIndexAsync@36 = SHMapIDListToImageListIndexAsync +_SHLockShared@8 = SHLockShared +_SHLoadOLE@4 = SHLoadOLE +_SHLoadNonloadedIconOverlayIdentifiers@0 = SHLoadNonloadedIconOverlayIdentifiers +_SHLoadInProc@4 = SHLoadInProc +_SHLimitInputEdit@8 = SHLimitInputEdit +_SHIsFileAvailableOffline@8 = SHIsFileAvailableOffline +_SHInvokePrinterCommandW@20 = SHInvokePrinterCommandW +_SHInvokePrinterCommandA@20 = SHInvokePrinterCommandA +_SHILCreateFromPath@12 = SHILCreateFromPath +_SHHandleUpdateImage@4 = SHHandleUpdateImage +_SHGetUnreadMailCountW@24 = SHGetUnreadMailCountW +_SHGetSpecialFolderPathW@16 = SHGetSpecialFolderPathW +_SHGetSpecialFolderPathA@16 = SHGetSpecialFolderPathA +_SHGetSpecialFolderPath@16 = SHGetSpecialFolderPath +_SHGetSpecialFolderLocation@12 = SHGetSpecialFolderLocation +_SHGetShellStyleHInstance@0 = SHGetShellStyleHInstance +_SHGetSettings@8 = SHGetSettings +_SHGetSetSettings@12 = SHGetSetSettings +_SHGetSetFolderCustomSettingsW@12 = SHGetSetFolderCustomSettingsW +_SHGetRealIDL@12 = SHGetRealIDL +_SHGetPathFromIDListW@8 = SHGetPathFromIDListW +_SHGetPathFromIDListA@8 = SHGetPathFromIDListA +_SHGetPathFromIDList@8 = SHGetPathFromIDList +_SHGetNewLinkInfoW@20 = SHGetNewLinkInfoW +_SHGetNewLinkInfoA@20 = SHGetNewLinkInfoA +_SHGetNewLinkInfo@20 = SHGetNewLinkInfo +_SHGetMalloc@4 = SHGetMalloc +_SHGetInstanceExplorer@4 = SHGetInstanceExplorer +_SHGetIconOverlayIndexW@8 = SHGetIconOverlayIndexW +_SHGetIconOverlayIndexA@8 = SHGetIconOverlayIndexA +_SHGetFolderPathW@20 = SHGetFolderPathW +_SHGetFolderPathAndSubDirW@24 = SHGetFolderPathAndSubDirW +_SHGetFolderPathAndSubDirA@24 = SHGetFolderPathAndSubDirA +_SHGetFolderPathA@20 = SHGetFolderPathA +_SHGetFolderLocation@20 = SHGetFolderLocation +_SHGetFileInfoW@20 = SHGetFileInfoW +_SHGetFileInfoA@20 = SHGetFileInfoA +_SHGetFileInfo@20 = SHGetFileInfo +_SHGetDiskFreeSpaceExW@16 = SHGetDiskFreeSpaceExW +_SHGetDiskFreeSpaceExA@16 = SHGetDiskFreeSpaceExA +_SHGetDiskFreeSpaceA@16 = SHGetDiskFreeSpaceA +_SHGetDesktopFolder@4 = SHGetDesktopFolder +_SHGetDataFromIDListW@20 = SHGetDataFromIDListW +_SHGetDataFromIDListA@20 = SHGetDataFromIDListA +_SHGetAttributesFromDataObject@16 = SHGetAttributesFromDataObject +_SHFreeShared@8 = SHFreeShared +_SHFreeNameMappings@4 = SHFreeNameMappings +_SHFree@4 = SHFree +_SHFormatDrive@16 = SHFormatDrive +_SHFlushSFCache@0 = SHFlushSFCache +_SHFlushClipboard@0 = SHFlushClipboard +_SHFind_InitMenuPopup@16 = SHFind_InitMenuPopup +_SHFindFiles@8 = SHFindFiles +_SHFileOperationW@4 = SHFileOperationW +_SHFileOperationA@4 = SHFileOperationA +_SHFileOperation@4 = SHFileOperation +_SHExtractIconsW@32 = SHExtractIconsW +_SHEnumerateUnreadMailAccountsW@16 = SHEnumerateUnreadMailAccountsW +_SHEmptyRecycleBinW@12 = SHEmptyRecycleBinW +_SHEmptyRecycleBinA@12 = SHEmptyRecycleBinA +_SHDoDragDrop@20 = SHDoDragDrop +_SHDestroyPropSheetExtArray@4 = SHDestroyPropSheetExtArray +_SHDefExtractIconW@24 = SHDefExtractIconW +_SHDefExtractIconA@24 = SHDefExtractIconA +_SHCreateStdEnumFmtEtc@12 = SHCreateStdEnumFmtEtc +_SHCreateShellItem@16 = SHCreateShellItem +_SHCreateShellFolderViewEx@8 = SHCreateShellFolderViewEx +_SHCreateShellFolderView@8 = SHCreateShellFolderView +_SHCreateQueryCancelAutoPlayMoniker@4 = SHCreateQueryCancelAutoPlayMoniker +_SHCreatePropSheetExtArray@12 = SHCreatePropSheetExtArray +_SHCreateProcessAsUserW@4 = SHCreateProcessAsUserW +_SHCreateFileExtractIconW@16 = SHCreateFileExtractIconW +_SHCreateDirectoryExW@12 = SHCreateDirectoryExW +_SHCreateDirectoryExA@12 = SHCreateDirectoryExA +_SHCreateDirectory@8 = SHCreateDirectory +_SHCoCreateInstance@20 = SHCoCreateInstance +_SHCloneSpecialIDList@12 = SHCloneSpecialIDList +_SHChangeNotifyRegister@24 = SHChangeNotifyRegister +_SHChangeNotifyDeregister@4 = SHChangeNotifyDeregister +_SHChangeNotify@16 = SHChangeNotify +_SHChangeNotification_Unlock@4 = SHChangeNotification_Unlock +_SHChangeNotification_Lock@16 = SHChangeNotification_Lock +_SHCLSIDFromString@8 = SHCLSIDFromString +_SHBrowseForFolderW@4 = SHBrowseForFolderW +_SHBrowseForFolderA@4 = SHBrowseForFolderA +_SHBrowseForFolder@4 = SHBrowseForFolder +_SHBindToParent@16 = SHBindToParent +_SHAppBarMessage@8 = SHAppBarMessage +_SHAllocShared@12 = SHAllocShared +_SHAlloc@4 = SHAlloc +_SHAddToRecentDocs@8 = SHAddToRecentDocs +_SHAddFromPropSheetExtArray@12 = SHAddFromPropSheetExtArray +_RestartDialogEx@16 = RestartDialogEx +_RestartDialog@12 = RestartDialog +_RegenerateUserEnvironment@8 = RegenerateUserEnvironment +_RealShellExecuteW@40 = RealShellExecuteW +_RealShellExecuteExW@44 = RealShellExecuteExW +_RealShellExecuteExA@44 = RealShellExecuteExA +_RealShellExecuteA@40 = RealShellExecuteA +_RealDriveType@8 = RealDriveType +_ReadCabinetState@8 = ReadCabinetState +_PifMgr_SetProperties@20 = PifMgr_SetProperties +_PifMgr_OpenProperties@16 = PifMgr_OpenProperties +_PifMgr_GetProperties@20 = PifMgr_GetProperties +_PifMgr_CloseProperties@8 = PifMgr_CloseProperties +_PickIconDlg@16 = PickIconDlg +_PathYetAnotherMakeUniqueName@16 = PathYetAnotherMakeUniqueName +_PathResolve@12 = PathResolve +_PathQualify@4 = PathQualify +_PathProcessCommand@16 = PathProcessCommand +_PathMakeUniqueName@20 = PathMakeUniqueName +_PathIsSlowW@8 = PathIsSlowW +_PathIsSlowA@8 = PathIsSlowA +_PathIsExe@4 = PathIsExe +_PathGetShortPath@4 = PathGetShortPath +_PathCleanupSpec@8 = PathCleanupSpec +_OpenRegStream@16 = OpenRegStream +_IsUserAnAdmin@0 = IsUserAnAdmin +_IsNetDrive@4 = IsNetDrive +_IsLFNDriveW@4 = IsLFNDriveW +_IsLFNDriveA@4 = IsLFNDriveA +_IsLFNDrive@4 = IsLFNDrive +_InternalExtractIconListW@12 = InternalExtractIconListW +_InternalExtractIconListA@12 = InternalExtractIconListA +_ILSaveToStream@8 = ILSaveToStream +_ILRemoveLastID@4 = ILRemoveLastID +_ILLoadFromStream@8 = ILLoadFromStream +_ILIsParent@12 = ILIsParent +_ILIsEqual@8 = ILIsEqual +_ILGetSize@4 = ILGetSize +_ILGetNext@4 = ILGetNext +_ILFree@4 = ILFree +_ILFindLastID@4 = ILFindLastID +_ILFindChild@8 = ILFindChild +_ILCreateFromPathW@4 = ILCreateFromPathW +_ILCreateFromPathA@4 = ILCreateFromPathA +_ILCreateFromPath@4 = ILCreateFromPath +_ILCombine@8 = ILCombine +_ILCloneFirst@4 = ILCloneFirst +_ILClone@4 = ILClone +_ILAppendID@12 = ILAppendID +_GetFileNameFromBrowse@28 = GetFileNameFromBrowse +_FreeIconList@8 = FreeIconList +_FindExecutableW@12 = FindExecutableW +_FindExecutableA@12 = FindExecutableA +_FindExeDlgProc@16 = FindExeDlgProc +_ExtractVersionResource16W@8 = ExtractVersionResource16W +_ExtractIconW@12 = ExtractIconW +_ExtractIconResInfoW@20 = ExtractIconResInfoW +_ExtractIconResInfoA@20 = ExtractIconResInfoA +_ExtractIconExW@20 = ExtractIconExW +_ExtractIconExA@20 = ExtractIconExA +_ExtractIconEx@20 = ExtractIconEx +_ExtractIconA@12 = ExtractIconA +_ExtractAssociatedIconW@12 = ExtractAssociatedIconW +_ExtractAssociatedIconExW@16 = ExtractAssociatedIconExW +_ExtractAssociatedIconExA@16 = ExtractAssociatedIconExA +_ExtractAssociatedIconA@12 = ExtractAssociatedIconA +_DuplicateIcon@8 = DuplicateIcon +_DriveType@4 = DriveType +_DragQueryPoint@8 = DragQueryPoint +_DragQueryFileW@16 = DragQueryFileW +_DragQueryFileAorW@24 = DragQueryFileAorW +_DragQueryFileA@16 = DragQueryFileA +_DragQueryFile@16 = DragQueryFile +_DragFinish@4 = DragFinish +_DragAcceptFiles@8 = DragAcceptFiles +_DoEnvironmentSubstW@8 = DoEnvironmentSubstW +_DoEnvironmentSubstA@8 = DoEnvironmentSubstA +_DAD_ShowDragImage@4 = DAD_ShowDragImage +_DAD_SetDragImage@8 = DAD_SetDragImage +_DAD_DragMove@8 = DAD_DragMove +_DAD_DragLeave@0 = DAD_DragLeave +_DAD_DragEnterEx@12 = DAD_DragEnterEx +_DAD_DragEnterEx2@16 = DAD_DragEnterEx2 +_DAD_AutoScroll@12 = DAD_AutoScroll +_CommandLineToArgvW@8 = CommandLineToArgvW +_CheckEscapesW@8 = CheckEscapesW +_CheckEscapesA@8 = CheckEscapesA +_CallCPLEntry16@24 = CallCPLEntry16 +_CDefFolderMenu_Create@36 = CDefFolderMenu_Create +_CDefFolderMenu_Create2@36 = CDefFolderMenu_Create diff --git a/def/version.def b/def/version.def new file mode 100644 index 0000000000..512336acb3 --- /dev/null +++ b/def/version.def @@ -0,0 +1,16 @@ +LIBRARY version +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_VerFindFileA@32 = VerFindFileA +_VerQueryValueA@16 = VerQueryValueA +_VerInstallFileA@32 = VerInstallFileA +_GetFileVersionInfoSizeA@8 = GetFileVersionInfoSizeA +_GetFileVersionInfoA@16 = GetFileVersionInfoA +_VerLanguageNameA@12 = VerLanguageNameA +_VerFindFileW@32 = VerFindFileW +_VerQueryValueW@16 = VerQueryValueW +_VerInstallFileW@32 = VerInstallFileW +_GetFileVersionInfoSizeW@8 = GetFileVersionInfoSizeW +_GetFileVersionInfoW@16 = GetFileVersionInfoW +_VerLanguageNameW@12 = VerLanguageNameW diff --git a/def/wininet.def b/def/wininet.def new file mode 100644 index 0000000000..40cfb6020d --- /dev/null +++ b/def/wininet.def @@ -0,0 +1,216 @@ +LIBRARY wininet +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_CommitUrlCacheEntryA@44 = CommitUrlCacheEntryA +_CommitUrlCacheEntryW@44 = CommitUrlCacheEntryW +_CreateUrlCacheContainerA@32 = CreateUrlCacheContainerA +_CreateUrlCacheContainerW@32 = CreateUrlCacheContainerW +_CreateUrlCacheEntryA@20 = CreateUrlCacheEntryA +_CreateUrlCacheEntryW@20 = CreateUrlCacheEntryW +_CreateUrlCacheGroup@8 = CreateUrlCacheGroup +_DeleteIE3Cache@16 = DeleteIE3Cache +_DeleteUrlCacheContainerA@8 = DeleteUrlCacheContainerA +_DeleteUrlCacheContainerW@8 = DeleteUrlCacheContainerW +_DeleteUrlCacheEntry@4 = DeleteUrlCacheEntry +_DeleteUrlCacheEntryA@4 = DeleteUrlCacheEntryA +_DeleteUrlCacheEntryW@4 = DeleteUrlCacheEntryW +_DeleteUrlCacheGroup@16 = DeleteUrlCacheGroup +_DoConnectoidsExist@0 = DoConnectoidsExist +_ExportCookieFileA@8 = ExportCookieFileA +_ExportCookieFileW@8 = ExportCookieFileW +_FindCloseUrlCache@4 = FindCloseUrlCache +_FindFirstUrlCacheContainerA@16 = FindFirstUrlCacheContainerA +_FindFirstUrlCacheContainerW@16 = FindFirstUrlCacheContainerW +_FindFirstUrlCacheEntryA@12 = FindFirstUrlCacheEntryA +_FindFirstUrlCacheEntryExA@40 = FindFirstUrlCacheEntryExA +_FindFirstUrlCacheEntryExW@40 = FindFirstUrlCacheEntryExW +_FindFirstUrlCacheEntryW@12 = FindFirstUrlCacheEntryW +_FindFirstUrlCacheGroup@24 = FindFirstUrlCacheGroup +_FindNextUrlCacheContainerA@12 = FindNextUrlCacheContainerA +_FindNextUrlCacheContainerW@12 = FindNextUrlCacheContainerW +_FindNextUrlCacheEntryA@12 = FindNextUrlCacheEntryA +_FindNextUrlCacheEntryExA@24 = FindNextUrlCacheEntryExA +_FindNextUrlCacheEntryExW@24 = FindNextUrlCacheEntryExW +_FindNextUrlCacheEntryW@12 = FindNextUrlCacheEntryW +_FindNextUrlCacheGroup@12 = FindNextUrlCacheGroup +_FreeUrlCacheSpaceA@12 = FreeUrlCacheSpaceA +_FreeUrlCacheSpaceW@12 = FreeUrlCacheSpaceW +_FtpCommandA@24 = FtpCommandA +_FtpCommandW@24 = FtpCommandW +_FtpCreateDirectoryA@8 = FtpCreateDirectoryA +_FtpCreateDirectoryW@8 = FtpCreateDirectoryW +_FtpDeleteFileA@8 = FtpDeleteFileA +_FtpDeleteFileW@8 = FtpDeleteFileW +_FtpFindFirstFileA@20 = FtpFindFirstFileA +_FtpFindFirstFileW@20 = FtpFindFirstFileW +_FtpGetCurrentDirectoryA@12 = FtpGetCurrentDirectoryA +_FtpGetCurrentDirectoryW@12 = FtpGetCurrentDirectoryW +_FtpGetFileA@28 = FtpGetFileA +_FtpGetFileEx@28 = FtpGetFileEx +_FtpGetFileSize@8 = FtpGetFileSize +_FtpGetFileW@28 = FtpGetFileW +_FtpOpenFileA@20 = FtpOpenFileA +_FtpOpenFileW@20 = FtpOpenFileW +_FtpPutFileA@20 = FtpPutFileA +_FtpPutFileEx@20 = FtpPutFileEx +_FtpPutFileW@20 = FtpPutFileW +_FtpRemoveDirectoryA@8 = FtpRemoveDirectoryA +_FtpRemoveDirectoryW@8 = FtpRemoveDirectoryW +_FtpRenameFileA@12 = FtpRenameFileA +_FtpRenameFileW@12 = FtpRenameFileW +_FtpSetCurrentDirectoryA@8 = FtpSetCurrentDirectoryA +_FtpSetCurrentDirectoryW@8 = FtpSetCurrentDirectoryW +_GetDiskInfoA@16 = GetDiskInfoA +_GetUrlCacheConfigInfoA@12 = GetUrlCacheConfigInfoA +_GetUrlCacheConfigInfoW@12 = GetUrlCacheConfigInfoW +_GetUrlCacheEntryInfoA@12 = GetUrlCacheEntryInfoA +_GetUrlCacheEntryInfoExA@28 = GetUrlCacheEntryInfoExA +_GetUrlCacheEntryInfoExW@28 = GetUrlCacheEntryInfoExW +_GetUrlCacheEntryInfoW@12 = GetUrlCacheEntryInfoW +_GetUrlCacheGroupAttributeA@28 = GetUrlCacheGroupAttributeA +_GetUrlCacheGroupAttributeW@28 = GetUrlCacheGroupAttributeW +_GetUrlCacheHeaderData@8 = GetUrlCacheHeaderData +_GopherCreateLocatorA@28 = GopherCreateLocatorA +_GopherCreateLocatorW@28 = GopherCreateLocatorW +_GopherFindFirstFileA@24 = GopherFindFirstFileA +_GopherFindFirstFileW@24 = GopherFindFirstFileW +_GopherGetAttributeA@32 = GopherGetAttributeA +_GopherGetAttributeW@32 = GopherGetAttributeW +_GopherGetLocatorTypeA@8 = GopherGetLocatorTypeA +_GopherGetLocatorTypeW@8 = GopherGetLocatorTypeW +_GopherOpenFileA@20 = GopherOpenFileA +_GopherOpenFileW@20 = GopherOpenFileW +_HttpAddRequestHeadersA@16 = HttpAddRequestHeadersA +_HttpAddRequestHeadersW@16 = HttpAddRequestHeadersW +_HttpCheckDavCompliance@20 = HttpCheckDavCompliance +_HttpCheckDavComplianceA@20 = HttpCheckDavComplianceA +_HttpCheckDavComplianceW@20 = HttpCheckDavComplianceW +_HttpEndRequestA@16 = HttpEndRequestA +_HttpEndRequestW@16 = HttpEndRequestW +_HttpOpenRequestA@32 = HttpOpenRequestA +_HttpOpenRequestW@32 = HttpOpenRequestW +_HttpQueryInfoA@20 = HttpQueryInfoA +_HttpQueryInfoW@20 = HttpQueryInfoW +_HttpSendRequestA@20 = HttpSendRequestA +_HttpSendRequestExA@20 = HttpSendRequestExA +_HttpSendRequestExW@20 = HttpSendRequestExW +_HttpSendRequestW@20 = HttpSendRequestW +_ImportCookieFileA@4 = ImportCookieFileA +_ImportCookieFileW@4 = ImportCookieFileW +_IncrementUrlCacheHeaderData@8 = IncrementUrlCacheHeaderData +_InternetAlgIdToStringA@16 = InternetAlgIdToStringA +_InternetAlgIdToStringW@16 = InternetAlgIdToStringW +_InternetAttemptConnect@4 = InternetAttemptConnect +_InternetAutodial@8 = InternetAutodial +_InternetAutodialCallback@8 = InternetAutodialCallback +_InternetAutodialHangup@4 = InternetAutodialHangup +_InternetCanonicalizeUrlA@16 = InternetCanonicalizeUrlA +_InternetCanonicalizeUrlW@16 = InternetCanonicalizeUrlW +_InternetCheckConnectionA@12 = InternetCheckConnectionA +_InternetCheckConnectionW@12 = InternetCheckConnectionW +_InternetCloseHandle@4 = InternetCloseHandle +_InternetCombineUrlA@20 = InternetCombineUrlA +_InternetCombineUrlW@20 = InternetCombineUrlW +_InternetConfirmZoneCrossing@16 = InternetConfirmZoneCrossing +_InternetConfirmZoneCrossingA@16 = InternetConfirmZoneCrossingA +_InternetConfirmZoneCrossingW@16 = InternetConfirmZoneCrossingW +_InternetConnectA@32 = InternetConnectA +_InternetConnectW@32 = InternetConnectW +_InternetCrackUrlA@16 = InternetCrackUrlA +_InternetCrackUrlW@16 = InternetCrackUrlW +_InternetCreateUrlA@16 = InternetCreateUrlA +_InternetCreateUrlW@16 = InternetCreateUrlW +_InternetDial@20 = InternetDial +_InternetDialA@20 = InternetDialA +_InternetDialW@20 = InternetDialW +_InternetErrorDlg@20 = InternetErrorDlg +_InternetFindNextFileA@8 = InternetFindNextFileA +_InternetFindNextFileW@8 = InternetFindNextFileW +_InternetFortezzaCommand@12 = InternetFortezzaCommand +_InternetGetCertByURL@12 = InternetGetCertByURL +_InternetGetCertByURLA@12 = InternetGetCertByURLA +_InternetGetConnectedState@8 = InternetGetConnectedState +_InternetGetConnectedStateEx@16 = InternetGetConnectedStateEx +_InternetGetConnectedStateExA@16 = InternetGetConnectedStateExA +_InternetGetConnectedStateExW@16 = InternetGetConnectedStateExW +_InternetGetCookieA@16 = InternetGetCookieA +_InternetGetCookieW@16 = InternetGetCookieW +_InternetGetLastResponseInfoA@12 = InternetGetLastResponseInfoA +_InternetGetLastResponseInfoW@12 = InternetGetLastResponseInfoW +_InternetGoOnline@12 = InternetGoOnline +_InternetGoOnlineA@12 = InternetGoOnlineA +_InternetGoOnlineW@12 = InternetGoOnlineW +_InternetHangUp@8 = InternetHangUp +_InternetLockRequestFile@8 = InternetLockRequestFile +_InternetOpenA@20 = InternetOpenA +_InternetOpenUrlA@24 = InternetOpenUrlA +_InternetOpenUrlW@24 = InternetOpenUrlW +_InternetOpenW@20 = InternetOpenW +_InternetQueryDataAvailable@16 = InternetQueryDataAvailable +_InternetQueryFortezzaStatus@8 = InternetQueryFortezzaStatus +_InternetQueryOptionA@16 = InternetQueryOptionA +_InternetQueryOptionW@16 = InternetQueryOptionW +_InternetReadFile@16 = InternetReadFile +_InternetReadFileExA@16 = InternetReadFileExA +_InternetReadFileExW@16 = InternetReadFileExW +_InternetSecurityProtocolToStringA@16 = InternetSecurityProtocolToStringA +_InternetSecurityProtocolToStringW@16 = InternetSecurityProtocolToStringW +_InternetSetCookieA@12 = InternetSetCookieA +_InternetSetCookieW@12 = InternetSetCookieW +_InternetSetDialState@12 = InternetSetDialState +_InternetSetDialStateA@12 = InternetSetDialStateA +_InternetSetDialStateW@12 = InternetSetDialStateW +_InternetSetFilePointer@20 = InternetSetFilePointer +_InternetSetOptionA@16 = InternetSetOptionA +_InternetSetOptionExA@20 = InternetSetOptionExA +_InternetSetOptionExW@20 = InternetSetOptionExW +_InternetSetOptionW@16 = InternetSetOptionW +_InternetSetStatusCallback@8 = InternetSetStatusCallback +_InternetSetStatusCallbackA@8 = InternetSetStatusCallbackA +_InternetSetStatusCallbackW@8 = InternetSetStatusCallbackW +_InternetShowSecurityInfoByURL@8 = InternetShowSecurityInfoByURL +_InternetShowSecurityInfoByURLA@8 = InternetShowSecurityInfoByURLA +_InternetShowSecurityInfoByURLW@8 = InternetShowSecurityInfoByURLW +_InternetTimeFromSystemTime@16 = InternetTimeFromSystemTime +_InternetTimeFromSystemTimeA@16 = InternetTimeFromSystemTimeA +_InternetTimeFromSystemTimeW@16 = InternetTimeFromSystemTimeW +_InternetTimeToSystemTime@12 = InternetTimeToSystemTime +_InternetTimeToSystemTimeA@12 = InternetTimeToSystemTimeA +_InternetTimeToSystemTimeW@12 = InternetTimeToSystemTimeW +_InternetUnlockRequestFile@4 = InternetUnlockRequestFile +_InternetWriteFile@16 = InternetWriteFile +_InternetWriteFileExA@16 = InternetWriteFileExA +_InternetWriteFileExW@16 = InternetWriteFileExW +_IsHostInProxyBypassList@12 = IsHostInProxyBypassList +_IsUrlCacheEntryExpiredA@12 = IsUrlCacheEntryExpiredA +_IsUrlCacheEntryExpiredW@12 = IsUrlCacheEntryExpiredW +_LoadUrlCacheContent@0 = LoadUrlCacheContent +_ParseX509EncodedCertificateForListBoxEntry@16 = ParseX509EncodedCertificateForListBoxEntry +_PerformOperationOverUrlCacheA@40 = PerformOperationOverUrlCacheA +_ReadUrlCacheEntryStream@20 = ReadUrlCacheEntryStream +_RegisterUrlCacheNotification@24 = RegisterUrlCacheNotification +_ResumeSuspendedDownload@8 = ResumeSuspendedDownload +_RetrieveUrlCacheEntryFileA@16 = RetrieveUrlCacheEntryFileA +_RetrieveUrlCacheEntryFileW@16 = RetrieveUrlCacheEntryFileW +_RetrieveUrlCacheEntryStreamA@20 = RetrieveUrlCacheEntryStreamA +_RetrieveUrlCacheEntryStreamW@20 = RetrieveUrlCacheEntryStreamW +_RunOnceUrlCache@16 = RunOnceUrlCache +_SetUrlCacheConfigInfoA@8 = SetUrlCacheConfigInfoA +_SetUrlCacheConfigInfoW@8 = SetUrlCacheConfigInfoW +_SetUrlCacheEntryGroup@28 = SetUrlCacheEntryGroup +_SetUrlCacheEntryGroupA@28 = SetUrlCacheEntryGroupA +_SetUrlCacheEntryGroupW@28 = SetUrlCacheEntryGroupW +_SetUrlCacheEntryInfoA@12 = SetUrlCacheEntryInfoA +_SetUrlCacheEntryInfoW@12 = SetUrlCacheEntryInfoW +_SetUrlCacheGroupAttributeA@24 = SetUrlCacheGroupAttributeA +_SetUrlCacheGroupAttributeW@24 = SetUrlCacheGroupAttributeW +_SetUrlCacheHeaderData@8 = SetUrlCacheHeaderData +_ShowClientAuthCerts@4 = ShowClientAuthCerts +_ShowSecurityInfo@8 = ShowSecurityInfo +_ShowX509EncodedCertificate@12 = ShowX509EncodedCertificate +_UnlockUrlCacheEntryFile@8 = UnlockUrlCacheEntryFile +_UnlockUrlCacheEntryFileA@8 = UnlockUrlCacheEntryFileA +_UnlockUrlCacheEntryFileW@8 = UnlockUrlCacheEntryFileW +_UnlockUrlCacheEntryStream@8 = UnlockUrlCacheEntryStream +_UpdateUrlCacheContentPath@4 = UpdateUrlCacheContentPath@4 diff --git a/def/winspool.def b/def/winspool.def new file mode 100644 index 0000000000..17728fe92a --- /dev/null +++ b/def/winspool.def @@ -0,0 +1,187 @@ +LIBRARY winspool +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_InitializeDll@12 = InitializeDll +_SetJobA@20 = SetJobA +_SetJobW@20 = SetJobW +_GetJobA@24 = GetJobA +_GetJobW@24 = GetJobW +_EnumJobsA@32 = EnumJobsA +_EnumJobsW@32 = EnumJobsW +_AddPrinterA@12 = AddPrinterA +_AddPrinterW@12 = AddPrinterW +_DeletePrinter@4 = DeletePrinter +_SetPrinterA@16 = SetPrinterA +_SetPrinterW@16 = SetPrinterW +_GetPrinterA@20 = GetPrinterA +_GetPrinterW@20 = GetPrinterW +_GetPrinterDriverA@24 = GetPrinterDriverA +_GetPrinterDriverW@24 = GetPrinterDriverW +_GetPrinterDriverDirectoryA@24 = GetPrinterDriverDirectoryA +_GetPrinterDriverDirectoryW@24 = GetPrinterDriverDirectoryW +_EnumPrintersA@28 = EnumPrintersA +_EnumPrintersW@28 = EnumPrintersW +_AddPrinterConnectionA@4 = AddPrinterConnectionA +_AddPrinterConnectionW@4 = AddPrinterConnectionW +_DeletePrinterConnectionA@4 = DeletePrinterConnectionA +_DeletePrinterConnectionW@4 = DeletePrinterConnectionW +_AddPrinterDriverA@12 = AddPrinterDriverA +_AddPrinterDriverW@12 = AddPrinterDriverW +_AddPrinterDriverExA@16 = AddPrinterDriverExA +_AddPrinterDriverExW@16 = AddPrinterDriverExW +_EnumPrinterDriversA@28 = EnumPrinterDriversA +_EnumPrinterDriversW@28 = EnumPrinterDriversW +_DeletePrinterDriverA@12 = DeletePrinterDriverA +_DeletePrinterDriverW@12 = DeletePrinterDriverW +_DeletePrinterDriverExA@20 = DeletePrinterDriverExA +_DeletePrinterDriverExW@20 = DeletePrinterDriverExW +_AddPrintProcessorA@16 = AddPrintProcessorA +_AddPrintProcessorW@16 = AddPrintProcessorW +_EnumPrintProcessorsA@28 = EnumPrintProcessorsA +_EnumPrintProcessorsW@28 = EnumPrintProcessorsW +_GetPrintProcessorDirectoryA@24 = GetPrintProcessorDirectoryA +_GetPrintProcessorDirectoryW@24 = GetPrintProcessorDirectoryW +_EnumPrintProcessorDatatypesA@28 = EnumPrintProcessorDatatypesA +_EnumPrintProcessorDatatypesW@28 = EnumPrintProcessorDatatypesW +_AddPerMachineConnectionA@16 = AddPerMachineConnectionA +_AddPerMachineConnectionW@16 = AddPerMachineConnectionW +_DeletePerMachineConnectionA@8 = DeletePerMachineConnectionA +_DeletePerMachineConnectionW@8 = DeletePerMachineConnectionW +_EnumPerMachineConnectionsA@20 = EnumPerMachineConnectionsA +_EnumPerMachineConnectionsW@20 = EnumPerMachineConnectionsW +_LoadPrinterDriver@4 = LoadPrinterDriver +_SplDriverUnloadComplete@4 = SplDriverUnloadComplete +_RefCntLoadDriver@16 = RefCntLoadDriver +_RefCntUnloadDriver@8 = RefCntUnloadDriver +_ForceUnloadDriver@4 = ForceUnloadDriver +_OpenPrinterA@12 = OpenPrinterA +_OpenPrinterW@12 = OpenPrinterW +_ResetPrinterA@8 = ResetPrinterA +_ResetPrinterW@8 = ResetPrinterW +_StartDocPrinterA@12 = StartDocPrinterA +_StartDocPrinterW@12 = StartDocPrinterW +_StartPagePrinter@4 = StartPagePrinter +_WritePrinter@16 = WritePrinter +_SeekPrinter@24 = SeekPrinter +_EndPagePrinter@4 = EndPagePrinter +_GetPrinterDataA@24 = GetPrinterDataA +_GetPrinterDataW@24 = GetPrinterDataW +_SetPrinterDataA@20 = SetPrinterDataA +_SetPrinterDataW@20 = SetPrinterDataW +_AbortPrinter@4 = AbortPrinter +_ReadPrinter@16 = ReadPrinter +_SplReadPrinter@12 = SplReadPrinter +_EndDocPrinter@4 = EndDocPrinter +_AddJobA@20 = AddJobA +_AddJobW@20 = AddJobW +_ScheduleJob@8 = ScheduleJob +_WaitForPrinterChange@8 = WaitForPrinterChange +_FindFirstPrinterChangeNotification@16 = FindFirstPrinterChangeNotification +_FindNextPrinterChangeNotification@16 = FindNextPrinterChangeNotification +_FindClosePrinterChangeNotification@4 = FindClosePrinterChangeNotification +_FreePrinterNotifyInfo@4 = FreePrinterNotifyInfo +_PrinterMessageBoxA@24 = PrinterMessageBoxA +_PrinterMessageBoxW@24 = PrinterMessageBoxW +_ClosePrinter@4 = ClosePrinter +_GetSpoolFileHandle@4 = GetSpoolFileHandle +_CommitSpoolData@12 = CommitSpoolData +_CloseSpoolFileHandle@8 = CloseSpoolFileHandle +_AddFormA@12 = AddFormA +_AddFormW@12 = AddFormW +_DeleteFormA@8 = DeleteFormA +_DeleteFormW@8 = DeleteFormW +_GetFormA@24 = GetFormA +_GetFormW@24 = GetFormW +_SetFormA@16 = SetFormA +_SetFormW@16 = SetFormW +_EnumFormsA@24 = EnumFormsA +_EnumFormsW@24 = EnumFormsW +_EnumPortsA@24 = EnumPortsA +_EnumPortsW@24 = EnumPortsW +_EnumMonitorsA@24 = EnumMonitorsA +_EnumMonitorsW@24 = EnumMonitorsW +_AddPortA@12 = AddPortA +_AddPortW@12 = AddPortW +_ConfigurePortA@12 = ConfigurePortA +_ConfigurePortW@12 = ConfigurePortW +_DeletePortA@12 = DeletePortA +_DeletePortW@12 = DeletePortW +_CreatePrinterIC@8 = CreatePrinterIC +_PlayGdiScriptOnPrinterIC@24 = PlayGdiScriptOnPrinterIC +_DeletePrinterIC@4 = DeletePrinterIC +_DeviceMode@16 = DeviceMode +_ExtDeviceMode@32 = ExtDeviceMode +_AdvancedSetupDialog@16 = AdvancedSetupDialog +_DeviceCapabilities@20 = DeviceCapabilities +_DeviceCapabilitiesA@20 = DeviceCapabilitiesA +_DeviceCapabilitiesW@20 = DeviceCapabilitiesW +_DocumentPropertiesA@24 = DocumentPropertiesA +_DocumentPropertiesW@24 = DocumentPropertiesW +_AdvancedDocumentPropertiesA@20 = AdvancedDocumentPropertiesA +_AdvancedDocumentPropertiesW@20 = AdvancedDocumentPropertiesW +_PrinterProperties@8 = PrinterProperties +_ConnectToPrinterDlg@8 = ConnectToPrinterDlg +_StartDocDlgW@8 = StartDocDlgW +_StartDocDlgA@8 = StartDocDlgA +_AddMonitorA@12 = AddMonitorA +_AddMonitorW@12 = AddMonitorW +_DeleteMonitorA@12 = DeleteMonitorA +_DeleteMonitorW@12 = DeleteMonitorW +_DeletePrintProcessorA@12 = DeletePrintProcessorA +_DeletePrintProcessorW@12 = DeletePrintProcessorW +_AddPrintProvidorA@12 = AddPrintProvidorA +_AddPrintProvidorW@12 = AddPrintProvidorW +_DeletePrintProvidorA@12 = DeletePrintProvidorA +_DeletePrintProvidorW@12 = DeletePrintProvidorW +_AddPortExW@16 = AddPortExW +_AddPortExA@16 = AddPortExA +_DevQueryPrint@12 = DevQueryPrint +_DevQueryPrintEx@4 = DevQueryPrintEx +_SpoolerDevQueryPrintW@20 = SpoolerDevQueryPrintW +_SpoolerInit@0 = SpoolerInit +_SetAllocFailCount@20 = SetAllocFailCount +_DocumentEvent@28 = DocumentEvent +_QueryColorProfile@24 = QueryColorProfile +_QuerySpoolMode@12 = QuerySpoolMode +_QueryRemoteFonts@12 = QueryRemoteFonts +_DevicePropertySheets@8 = DevicePropertySheets +_DocumentPropertySheets@8 = DocumentPropertySheets +_AddPrinterConnectionUI@12 = AddPrinterConnectionUI +_ConvertAnsiDevModeToUnicodeDevmode@16 = ConvertAnsiDevModeToUnicodeDevmode +_ConvertUnicodeDevModeToAnsiDevmode@16 = ConvertUnicodeDevModeToAnsiDevmode +_SetPortA@16 = SetPortA +_SetPortW@16 = SetPortW +_SpoolerPrinterEvent@16 = SpoolerPrinterEvent +_EnumPrinterDataA@36 = EnumPrinterDataA +_EnumPrinterDataW@36 = EnumPrinterDataW +_DeletePrinterDataA@8 = DeletePrinterDataA +_DeletePrinterDataW@8 = DeletePrinterDataW +_SetPrinterDataExA@24 = SetPrinterDataExA +_SetPrinterDataExW@24 = SetPrinterDataExW +_GetPrinterDataExA@28 = GetPrinterDataExA +_GetPrinterDataExW@28 = GetPrinterDataExW +_EnumPrinterDataExA@24 = EnumPrinterDataExA +_EnumPrinterDataExW@24 = EnumPrinterDataExW +_EnumPrinterKeyA@20 = EnumPrinterKeyA +_EnumPrinterKeyW@20 = EnumPrinterKeyW +_DeletePrinterDataExA@12 = DeletePrinterDataExA +_DeletePrinterDataExW@12 = DeletePrinterDataExW +_DeletePrinterKeyA@8 = DeletePrinterKeyA +_DeletePrinterKeyW@8 = DeletePrinterKeyW +_EnumPrinterPropertySheets@16 = EnumPrinterPropertySheets +_GetPrinterWebInformation@16 = GetPrinterWebInformation +_ClusterSplOpen@20 = ClusterSplOpen +_ClusterSplClose@4 = ClusterSplClose +_ClusterSplIsAlive@4 = ClusterSplIsAlive +_GetDefaultPrinterA@8 = GetDefaultPrinterA +_SetDefaultPrinterA@4 = SetDefaultPrinterA +_GetDefaultPrinterW@8 = GetDefaultPrinterW +_SetDefaultPrinterW@4 = SetDefaultPrinterW +_SetPrinterHTMLViewA@12 = SetPrinterHTMLViewA +_SetPrinterHTMLViewW@12 = SetPrinterHTMLViewW +_GetPrinterHTMLViewA@20 = GetPrinterHTMLViewA +_GetPrinterHTMLViewW@20 = GetPrinterHTMLViewW +_XcvDataW@32 = XcvDataW +_PublishPrinterA@24 = PublishPrinterA +_PublishPrinterW@24 = PublishPrinterW@24 \ No newline at end of file From 13ae9a402c03c2fe23d0a89ecd2ca4b2179eee3e Mon Sep 17 00:00:00 2001 From: Nick Sabalausky Date: Wed, 14 Oct 2015 15:36:44 -0400 Subject: [PATCH 147/768] Doc formatting fixes for https://github.com/D-Programming-Language/dmd/pull/4745 --- src/core/cpuid.d | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/core/cpuid.d b/src/core/cpuid.d index 936d6e2484..bc7dfd7533 100644 --- a/src/core/cpuid.d +++ b/src/core/cpuid.d @@ -101,10 +101,12 @@ struct CacheInfo /// data size is much greater than code size for critical loops). size_t size; /// Number of ways of associativity, eg: - /// 1 = direct mapped - /// 2 = 2-way set associative - /// 3 = 3-way set associative - /// ubyte.max = fully associative + /// $(UL + /// $(LI 1 = direct mapped) + /// $(LI 2 = 2-way set associative) + /// $(LI 3 = 3-way set associative) + /// $(LI ubyte.max = fully associative) + /// ) ubyte associativity; /// Number of bytes read into the cache when a cache miss occurs. uint lineSize; @@ -219,18 +221,22 @@ public: /// /// The major 32-bit x86 microarchitecture 'dynasties' have been: /// - /// * Intel P6 (PentiumPro, PII, PIII, PM, Core, Core2). - /// * AMD Athlon (K7, K8, K10). - /// * Intel NetBurst (Pentium 4, Pentium D). - /// * In-order Pentium (Pentium1, PMMX, Atom) + /// $(UL + /// $(LI Intel P6 (PentiumPro, PII, PIII, PM, Core, Core2). ) + /// $(LI AMD Athlon (K7, K8, K10). ) + /// $(LI Intel NetBurst (Pentium 4, Pentium D). ) + /// $(LI In-order Pentium (Pentium1, PMMX, Atom) ) + /// ) /// /// Other early CPUs (Nx586, AMD K5, K6, Centaur C3, Transmeta, /// Cyrix, Rise) were mostly in-order. /// /// Some new processors do not fit into the existing categories: /// - /// * Intel Atom 230/330 (family 6, model 0x1C) is an in-order core. - /// * Centaur Isiah = VIA Nano (family 6, model F) is an out-of-order core. + /// $(UL + /// $(LI Intel Atom 230/330 (family 6, model 0x1C) is an in-order core. ) + /// $(LI Centaur Isiah = VIA Nano (family 6, model F) is an out-of-order core. ) + /// ) /// /// Within each dynasty, the optimisation techniques are largely /// identical (eg, use instruction pairing for group 4). Major From a74549266b66c898088a684bedd857318c1bae6a Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 20:14:58 +0000 Subject: [PATCH 148/768] def: Convert to UNIX line endings --- def/glu32.def | 110 +++--- def/odbc32.def | 42 +-- def/opengl32.def | 742 ++++++++++++++++++------------------- def/rpcrt4.def | 936 +++++++++++++++++++++++------------------------ def/shell32.def | 504 ++++++++++++------------- def/version.def | 32 +- def/wininet.def | 432 +++++++++++----------- def/winspool.def | 372 +++++++++---------- 8 files changed, 1585 insertions(+), 1585 deletions(-) diff --git a/def/glu32.def b/def/glu32.def index 6a848a1e60..21d4626504 100644 --- a/def/glu32.def +++ b/def/glu32.def @@ -1,55 +1,55 @@ -LIBRARY GLU32 - -EXPORTS - _gluBeginCurve@4 = gluBeginCurve ; gluBeginCurve - _gluBeginPolygon@4 = gluBeginPolygon ; gluBeginPolygon - _gluBeginSurface@4 = gluBeginSurface ; gluBeginSurface - _gluBeginTrim@4 = gluBeginTrim ; gluBeginTrim - _gluBuild1DMipmaps@24 = gluBuild1DMipmaps ; gluBuild1DMipmaps - _gluBuild2DMipmaps@28 = gluBuild2DMipmaps ; gluBuild2DMipmaps - _gluCylinder@36 = gluCylinder ; gluCylinder - _gluDeleteNurbsRenderer@4 = gluDeleteNurbsRenderer ; gluDeleteNurbsRenderer - _gluDeleteQuadric@4 = gluDeleteQuadric ; gluDeleteQuadric - _gluDeleteTess@4 = gluDeleteTess ; gluDeleteTess - _gluDisk@28 = gluDisk ; gluDisk - _gluEndCurve@4 = gluEndCurve ; gluEndCurve - _gluEndPolygon@4 = gluEndPolygon ; gluEndPolygon - _gluEndSurface@4 = gluEndSurface ; gluEndSurface - _gluEndTrim@4 = gluEndTrim ; gluEndTrim - _gluErrorString@4 = gluErrorString ; gluErrorString - _gluErrorUnicodeStringEXT@4 = gluErrorUnicodeStringEXT ; gluErrorUnicodeStringEXT - _gluGetNurbsProperty@12 = gluGetNurbsProperty ; gluGetNurbsProperty - _gluGetString@4 = gluGetString ; gluGetString - _gluGetTessProperty@12 = gluGetTessProperty ; gluGetTessProperty - _gluLoadSamplingMatrices@16 = gluLoadSamplingMatrices ; gluLoadSamplingMatrices - _gluLookAt@72 = gluLookAt ; gluLookAt - _gluNewNurbsRenderer@0 = gluNewNurbsRenderer ; gluNewNurbsRenderer - _gluNewQuadric@0 = gluNewQuadric ; gluNewQuadric - _gluNewTess@0 = gluNewTess ; gluNewTess - _gluNextContour@8 = gluNextContour ; gluNextContour - _gluNurbsCallback@12 = gluNurbsCallback ; gluNurbsCallback - _gluNurbsCurve@28 = gluNurbsCurve ; gluNurbsCurve - _gluNurbsProperty@12 = gluNurbsProperty ; gluNurbsProperty - _gluNurbsSurface@44 = gluNurbsSurface ; gluNurbsSurface - _gluOrtho2D@32 = gluOrtho2D ; gluOrtho2D - _gluPartialDisk@44 = gluPartialDisk ; gluPartialDisk - _gluPerspective@32 = gluPerspective ; gluPerspective - _gluPickMatrix@36 = gluPickMatrix ; gluPickMatrix - _gluProject@48 = gluProject ; gluProject - _gluPwlCurve@20 = gluPwlCurve ; gluPwlCurve - _gluQuadricCallback@12 = gluQuadricCallback ; gluQuadricCallback - _gluQuadricDrawStyle@8 = gluQuadricDrawStyle ; gluQuadricDrawStyle - _gluQuadricNormals@8 = gluQuadricNormals ; gluQuadricNormals - _gluQuadricOrientation@8 = gluQuadricOrientation ; gluQuadricOrientation - _gluQuadricTexture@8 = gluQuadricTexture ; gluQuadricTexture - _gluScaleImage@36 = gluScaleImage ; gluScaleImage - _gluSphere@20 = gluSphere ; gluSphere - _gluTessBeginContour@4 = gluTessBeginContour ; gluTessBeginContour - _gluTessBeginPolygon@8 = gluTessBeginPolygon ; gluTessBeginPolygon - _gluTessCallback@12 = gluTessCallback ; gluTessCallback - _gluTessEndContour@4 = gluTessEndContour ; gluTessEndContour - _gluTessEndPolygon@4 = gluTessEndPolygon ; gluTessEndPolygon - _gluTessNormal@28 = gluTessNormal ; gluTessNormal - _gluTessProperty@16 = gluTessProperty ; gluTessProperty - _gluTessVertex@12 = gluTessVertex ; gluTessVertex - _gluUnProject@48 = gluUnProject ; gluUnProject +LIBRARY GLU32 + +EXPORTS + _gluBeginCurve@4 = gluBeginCurve ; gluBeginCurve + _gluBeginPolygon@4 = gluBeginPolygon ; gluBeginPolygon + _gluBeginSurface@4 = gluBeginSurface ; gluBeginSurface + _gluBeginTrim@4 = gluBeginTrim ; gluBeginTrim + _gluBuild1DMipmaps@24 = gluBuild1DMipmaps ; gluBuild1DMipmaps + _gluBuild2DMipmaps@28 = gluBuild2DMipmaps ; gluBuild2DMipmaps + _gluCylinder@36 = gluCylinder ; gluCylinder + _gluDeleteNurbsRenderer@4 = gluDeleteNurbsRenderer ; gluDeleteNurbsRenderer + _gluDeleteQuadric@4 = gluDeleteQuadric ; gluDeleteQuadric + _gluDeleteTess@4 = gluDeleteTess ; gluDeleteTess + _gluDisk@28 = gluDisk ; gluDisk + _gluEndCurve@4 = gluEndCurve ; gluEndCurve + _gluEndPolygon@4 = gluEndPolygon ; gluEndPolygon + _gluEndSurface@4 = gluEndSurface ; gluEndSurface + _gluEndTrim@4 = gluEndTrim ; gluEndTrim + _gluErrorString@4 = gluErrorString ; gluErrorString + _gluErrorUnicodeStringEXT@4 = gluErrorUnicodeStringEXT ; gluErrorUnicodeStringEXT + _gluGetNurbsProperty@12 = gluGetNurbsProperty ; gluGetNurbsProperty + _gluGetString@4 = gluGetString ; gluGetString + _gluGetTessProperty@12 = gluGetTessProperty ; gluGetTessProperty + _gluLoadSamplingMatrices@16 = gluLoadSamplingMatrices ; gluLoadSamplingMatrices + _gluLookAt@72 = gluLookAt ; gluLookAt + _gluNewNurbsRenderer@0 = gluNewNurbsRenderer ; gluNewNurbsRenderer + _gluNewQuadric@0 = gluNewQuadric ; gluNewQuadric + _gluNewTess@0 = gluNewTess ; gluNewTess + _gluNextContour@8 = gluNextContour ; gluNextContour + _gluNurbsCallback@12 = gluNurbsCallback ; gluNurbsCallback + _gluNurbsCurve@28 = gluNurbsCurve ; gluNurbsCurve + _gluNurbsProperty@12 = gluNurbsProperty ; gluNurbsProperty + _gluNurbsSurface@44 = gluNurbsSurface ; gluNurbsSurface + _gluOrtho2D@32 = gluOrtho2D ; gluOrtho2D + _gluPartialDisk@44 = gluPartialDisk ; gluPartialDisk + _gluPerspective@32 = gluPerspective ; gluPerspective + _gluPickMatrix@36 = gluPickMatrix ; gluPickMatrix + _gluProject@48 = gluProject ; gluProject + _gluPwlCurve@20 = gluPwlCurve ; gluPwlCurve + _gluQuadricCallback@12 = gluQuadricCallback ; gluQuadricCallback + _gluQuadricDrawStyle@8 = gluQuadricDrawStyle ; gluQuadricDrawStyle + _gluQuadricNormals@8 = gluQuadricNormals ; gluQuadricNormals + _gluQuadricOrientation@8 = gluQuadricOrientation ; gluQuadricOrientation + _gluQuadricTexture@8 = gluQuadricTexture ; gluQuadricTexture + _gluScaleImage@36 = gluScaleImage ; gluScaleImage + _gluSphere@20 = gluSphere ; gluSphere + _gluTessBeginContour@4 = gluTessBeginContour ; gluTessBeginContour + _gluTessBeginPolygon@8 = gluTessBeginPolygon ; gluTessBeginPolygon + _gluTessCallback@12 = gluTessCallback ; gluTessCallback + _gluTessEndContour@4 = gluTessEndContour ; gluTessEndContour + _gluTessEndPolygon@4 = gluTessEndPolygon ; gluTessEndPolygon + _gluTessNormal@28 = gluTessNormal ; gluTessNormal + _gluTessProperty@16 = gluTessProperty ; gluTessProperty + _gluTessVertex@12 = gluTessVertex ; gluTessVertex + _gluUnProject@48 = gluUnProject ; gluUnProject diff --git a/def/odbc32.def b/def/odbc32.def index 5b6e7f8f54..490f678b28 100644 --- a/def/odbc32.def +++ b/def/odbc32.def @@ -1,21 +1,21 @@ -LIBRARY odbc32 -EXETYPE NT -SUBSYSTEM WINDOWS -EXPORTS -_SQLAllocEnv@4 = SQLAllocEnv -_SQLAllocConnect@8 = SQLAllocConnect -_SQLAllocHandle@12 = SQLAllocHandle -_SQLColAttribute@28 = SQLColAttribute -_SQLConnect@28 = SQLConnect -_SQLDisconnect@4 = SQLDisconnect -_SQLDriverConnect@32 = SQLDriverConnect -_SQLExecDirect@16 = SQLExecDirect -_SQLFetch@4 = SQLFetch -_SQLFreeConnect@4 = SQLFreeConnect -_SQLFreeEnv@4 = SQLFreeEnv -_SQLFreeStmt@8 = SQLFreeStmt -_SQLGetData@28 = SQLGetData -_SQLGetInfo@20 = SQLGetInfo -_SQLNumResultCols@8 = SQLNumResultCols -_SQLSetConnectOption@12 = SQLSetConnectOption -_SQLSetStmtOption@12 = SQLSetStmtOption +LIBRARY odbc32 +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_SQLAllocEnv@4 = SQLAllocEnv +_SQLAllocConnect@8 = SQLAllocConnect +_SQLAllocHandle@12 = SQLAllocHandle +_SQLColAttribute@28 = SQLColAttribute +_SQLConnect@28 = SQLConnect +_SQLDisconnect@4 = SQLDisconnect +_SQLDriverConnect@32 = SQLDriverConnect +_SQLExecDirect@16 = SQLExecDirect +_SQLFetch@4 = SQLFetch +_SQLFreeConnect@4 = SQLFreeConnect +_SQLFreeEnv@4 = SQLFreeEnv +_SQLFreeStmt@8 = SQLFreeStmt +_SQLGetData@28 = SQLGetData +_SQLGetInfo@20 = SQLGetInfo +_SQLNumResultCols@8 = SQLNumResultCols +_SQLSetConnectOption@12 = SQLSetConnectOption +_SQLSetStmtOption@12 = SQLSetStmtOption diff --git a/def/opengl32.def b/def/opengl32.def index 4ad3281484..23fac8df84 100644 --- a/def/opengl32.def +++ b/def/opengl32.def @@ -1,371 +1,371 @@ -LIBRARY OPENGL32 - -EXPORTS -; _GlmfBeginGlsBlock@4 = GlmfBeginGlsBlock GlmfBeginGlsBlock -; _GlmfCloseMetaFile@4 = GlmfCloseMetaFile GlmfCloseMetaFile -; _GlmfEndGlsBlock@4 = GlmfEndGlsBlock GlmfEndGlsBlock -; _GlmfEndPlayback@4 = GlmfEndPlayback GlmfEndPlayback -; _GlmfInitPlayback@12 = GlmfInitPlayback GlmfInitPlayback -; _GlmfPlayGlsRecord@16 = GlmfPlayGlsRecord GlmfPlayGlsRecord - _glAccum@8 = glAccum ; glAccum - _glAlphaFunc@8 = glAlphaFunc ; glAlphaFunc - _glAreTexturesResident@12 = glAreTexturesResident ; glAreTexturesResident - _glArrayElement@4 = glArrayElement ; glArrayElement - _glBegin@4 = glBegin ; glBegin - _glBindTexture@8 = glBindTexture ; glBindTexture - _glBitmap@28 = glBitmap ; glBitmap - _glBlendFunc@8 = glBlendFunc ; glBlendFunc - _glCallList@4 = glCallList ; glCallList - _glCallLists@12 = glCallLists ; glCallLists - _glClear@4 = glClear ; glClear - _glClearAccum@16 = glClearAccum ; glClearAccum - _glClearColor@16 = glClearColor ; glClearColor - _glClearDepth@8 = glClearDepth ; glClearDepth - _glClearIndex@4 = glClearIndex ; glClearIndex - _glClearStencil@4 = glClearStencil ; glClearStencil - _glClipPlane@8 = glClipPlane ; glClipPlane - _glColor3b@12 = glColor3b ; glColor3b - _glColor3bv@4 = glColor3bv ; glColor3bv - _glColor3d@24 = glColor3d ; glColor3d - _glColor3dv@4 = glColor3dv ; glColor3dv - _glColor3f@12 = glColor3f ; glColor3f - _glColor3fv@4 = glColor3fv ; glColor3fv - _glColor3i@12 = glColor3i ; glColor3i - _glColor3iv@4 = glColor3iv ; glColor3iv - _glColor3s@12 = glColor3s ; glColor3s - _glColor3sv@4 = glColor3sv ; glColor3sv - _glColor3ub@12 = glColor3ub ; glColor3ub - _glColor3ubv@4 = glColor3ubv ; glColor3ubv - _glColor3ui@12 = glColor3ui ; glColor3ui - _glColor3uiv@4 = glColor3uiv ; glColor3uiv - _glColor3us@12 = glColor3us ; glColor3us - _glColor3usv@4 = glColor3usv ; glColor3usv - _glColor4b@16 = glColor4b ; glColor4b - _glColor4bv@4 = glColor4bv ; glColor4bv - _glColor4d@32 = glColor4d ; glColor4d - _glColor4dv@4 = glColor4dv ; glColor4dv - _glColor4f@16 = glColor4f ; glColor4f - _glColor4fv@4 = glColor4fv ; glColor4fv - _glColor4i@16 = glColor4i ; glColor4i - _glColor4iv@4 = glColor4iv ; glColor4iv - _glColor4s@16 = glColor4s ; glColor4s - _glColor4sv@4 = glColor4sv ; glColor4sv - _glColor4ub@16 = glColor4ub ; glColor4ub - _glColor4ubv@4 = glColor4ubv ; glColor4ubv - _glColor4ui@16 = glColor4ui ; glColor4ui - _glColor4uiv@4 = glColor4uiv ; glColor4uiv - _glColor4us@16 = glColor4us ; glColor4us - _glColor4usv@4 = glColor4usv ; glColor4usv - _glColorMask@16 = glColorMask ; glColorMask - _glColorMaterial@8 = glColorMaterial ; glColorMaterial - _glColorPointer@16 = glColorPointer ; glColorPointer - _glCopyPixels@20 = glCopyPixels ; glCopyPixels - _glCopyTexImage1D@28 = glCopyTexImage1D ; glCopyTexImage1D - _glCopyTexImage2D@32 = glCopyTexImage2D ; glCopyTexImage2D - _glCopyTexSubImage1D@24 = glCopyTexSubImage1D ; glCopyTexSubImage1D - _glCopyTexSubImage2D@32 = glCopyTexSubImage2D ; glCopyTexSubImage2D - _glCullFace@4 = glCullFace ; glCullFace - _glDebugEntry@8 = glDebugEntry ; glDebugEntry - _glDeleteLists@8 = glDeleteLists ; glDeleteLists - _glDeleteTextures@8 = glDeleteTextures ; glDeleteTextures - _glDepthFunc@4 = glDepthFunc ; glDepthFunc - _glDepthMask@4 = glDepthMask ; glDepthMask - _glDepthRange@16 = glDepthRange ; glDepthRange - _glDisable@4 = glDisable ; glDisable - _glDisableClientState@4 = glDisableClientState ; glDisableClientState - _glDrawArrays@12 = glDrawArrays ; glDrawArrays - _glDrawBuffer@4 = glDrawBuffer ; glDrawBuffer - _glDrawElements@16 = glDrawElements ; glDrawElements - _glDrawPixels@20 = glDrawPixels ; glDrawPixels - _glEdgeFlag@4 = glEdgeFlag ; glEdgeFlag - _glEdgeFlagPointer@8 = glEdgeFlagPointer ; glEdgeFlagPointer - _glEdgeFlagv@4 = glEdgeFlagv ; glEdgeFlagv - _glEnable@4 = glEnable ; glEnable - _glEnableClientState@4 = glEnableClientState ; glEnableClientState - _glEnd@0 = glEnd ; glEnd - _glEndList@0 = glEndList ; glEndList - _glEvalCoord1d@8 = glEvalCoord1d ; glEvalCoord1d - _glEvalCoord1dv@4 = glEvalCoord1dv ; glEvalCoord1dv - _glEvalCoord1f@4 = glEvalCoord1f ; glEvalCoord1f - _glEvalCoord1fv@4 = glEvalCoord1fv ; glEvalCoord1fv - _glEvalCoord2d@16 = glEvalCoord2d ; glEvalCoord2d - _glEvalCoord2dv@4 = glEvalCoord2dv ; glEvalCoord2dv - _glEvalCoord2f@8 = glEvalCoord2f ; glEvalCoord2f - _glEvalCoord2fv@4 = glEvalCoord2fv ; glEvalCoord2fv - _glEvalMesh1@12 = glEvalMesh1 ; glEvalMesh1 - _glEvalMesh2@20 = glEvalMesh2 ; glEvalMesh2 - _glEvalPoint1@4 = glEvalPoint1 ; glEvalPoint1 - _glEvalPoint2@8 = glEvalPoint2 ; glEvalPoint2 - _glFeedbackBuffer@12 = glFeedbackBuffer ; glFeedbackBuffer - _glFinish@0 = glFinish ; glFinish - _glFlush@0 = glFlush ; glFlush - _glFogf@8 = glFogf ; glFogf - _glFogfv@8 = glFogfv ; glFogfv - _glFogi@8 = glFogi ; glFogi - _glFogiv@8 = glFogiv ; glFogiv - _glFrontFace@4 = glFrontFace ; glFrontFace - _glFrustum@48 = glFrustum ; glFrustum - _glGenLists@4 = glGenLists ; glGenLists - _glGenTextures@8 = glGenTextures ; glGenTextures - _glGetBooleanv@8 = glGetBooleanv ; glGetBooleanv - _glGetClipPlane@8 = glGetClipPlane ; glGetClipPlane - _glGetDoublev@8 = glGetDoublev ; glGetDoublev - _glGetError@0 = glGetError ; glGetError - _glGetFloatv@8 = glGetFloatv ; glGetFloatv - _glGetIntegerv@8 = glGetIntegerv ; glGetIntegerv - _glGetLightfv@12 = glGetLightfv ; glGetLightfv - _glGetLightiv@12 = glGetLightiv ; glGetLightiv - _glGetMapdv@12 = glGetMapdv ; glGetMapdv - _glGetMapfv@12 = glGetMapfv ; glGetMapfv - _glGetMapiv@12 = glGetMapiv ; glGetMapiv - _glGetMaterialfv@12 = glGetMaterialfv ; glGetMaterialfv - _glGetMaterialiv@12 = glGetMaterialiv ; glGetMaterialiv - _glGetPixelMapfv@8 = glGetPixelMapfv ; glGetPixelMapfv - _glGetPixelMapuiv@8 = glGetPixelMapuiv ; glGetPixelMapuiv - _glGetPixelMapusv@8 = glGetPixelMapusv ; glGetPixelMapusv - _glGetPointerv@8 = glGetPointerv ; glGetPointerv - _glGetPolygonStipple@4 = glGetPolygonStipple ; glGetPolygonStipple - _glGetString@4 = glGetString ; glGetString - _glGetTexEnvfv@12 = glGetTexEnvfv ; glGetTexEnvfv - _glGetTexEnviv@12 = glGetTexEnviv ; glGetTexEnviv - _glGetTexGendv@12 = glGetTexGendv ; glGetTexGendv - _glGetTexGenfv@12 = glGetTexGenfv ; glGetTexGenfv - _glGetTexGeniv@12 = glGetTexGeniv ; glGetTexGeniv - _glGetTexImage@20 = glGetTexImage ; glGetTexImage - _glGetTexLevelParameterfv@16 = glGetTexLevelParameterfv ; glGetTexLevelParameterfv - _glGetTexLevelParameteriv@16 = glGetTexLevelParameteriv ; glGetTexLevelParameteriv - _glGetTexParameterfv@12 = glGetTexParameterfv ; glGetTexParameterfv - _glGetTexParameteriv@12 = glGetTexParameteriv ; glGetTexParameteriv - _glHint@8 = glHint ; glHint - _glIndexMask@4 = glIndexMask ; glIndexMask - _glIndexPointer@12 = glIndexPointer ; glIndexPointer - _glIndexd@8 = glIndexd ; glIndexd - _glIndexdv@4 = glIndexdv ; glIndexdv - _glIndexf@4 = glIndexf ; glIndexf - _glIndexfv@4 = glIndexfv ; glIndexfv - _glIndexi@4 = glIndexi ; glIndexi - _glIndexiv@4 = glIndexiv ; glIndexiv - _glIndexs@4 = glIndexs ; glIndexs - _glIndexsv@4 = glIndexsv ; glIndexsv - _glIndexub@4 = glIndexub ; glIndexub - _glIndexubv@4 = glIndexubv ; glIndexubv - _glInitNames@0 = glInitNames ; glInitNames - _glInterleavedArrays@12 = glInterleavedArrays ; glInterleavedArrays - _glIsEnabled@4 = glIsEnabled ; glIsEnabled - _glIsList@4 = glIsList ; glIsList - _glIsTexture@4 = glIsTexture ; glIsTexture - _glLightModelf@8 = glLightModelf ; glLightModelf - _glLightModelfv@8 = glLightModelfv ; glLightModelfv - _glLightModeli@8 = glLightModeli ; glLightModeli - _glLightModeliv@8 = glLightModeliv ; glLightModeliv - _glLightf@12 = glLightf ; glLightf - _glLightfv@12 = glLightfv ; glLightfv - _glLighti@12 = glLighti ; glLighti - _glLightiv@12 = glLightiv ; glLightiv - _glLineStipple@8 = glLineStipple ; glLineStipple - _glLineWidth@4 = glLineWidth ; glLineWidth - _glListBase@4 = glListBase ; glListBase - _glLoadIdentity@0 = glLoadIdentity ; glLoadIdentity - _glLoadMatrixd@4 = glLoadMatrixd ; glLoadMatrixd - _glLoadMatrixf@4 = glLoadMatrixf ; glLoadMatrixf - _glLoadName@4 = glLoadName ; glLoadName - _glLogicOp@4 = glLogicOp ; glLogicOp - _glMap1d@32 = glMap1d ; glMap1d - _glMap1f@24 = glMap1f ; glMap1f - _glMap2d@56 = glMap2d ; glMap2d - _glMap2f@40 = glMap2f ; glMap2f - _glMapGrid1d@20 = glMapGrid1d ; glMapGrid1d - _glMapGrid1f@12 = glMapGrid1f ; glMapGrid1f - _glMapGrid2d@40 = glMapGrid2d ; glMapGrid2d - _glMapGrid2f@24 = glMapGrid2f ; glMapGrid2f - _glMaterialf@12 = glMaterialf ; glMaterialf - _glMaterialfv@12 = glMaterialfv ; glMaterialfv - _glMateriali@12 = glMateriali ; glMateriali - _glMaterialiv@12 = glMaterialiv ; glMaterialiv - _glMatrixMode@4 = glMatrixMode ; glMatrixMode - _glMultMatrixd@4 = glMultMatrixd ; glMultMatrixd - _glMultMatrixf@4 = glMultMatrixf ; glMultMatrixf - _glNewList@8 = glNewList ; glNewList - _glNormal3b@12 = glNormal3b ; glNormal3b - _glNormal3bv@4 = glNormal3bv ; glNormal3bv - _glNormal3d@24 = glNormal3d ; glNormal3d - _glNormal3dv@4 = glNormal3dv ; glNormal3dv - _glNormal3f@12 = glNormal3f ; glNormal3f - _glNormal3fv@4 = glNormal3fv ; glNormal3fv - _glNormal3i@12 = glNormal3i ; glNormal3i - _glNormal3iv@4 = glNormal3iv ; glNormal3iv - _glNormal3s@12 = glNormal3s ; glNormal3s - _glNormal3sv@4 = glNormal3sv ; glNormal3sv - _glNormalPointer@12 = glNormalPointer ; glNormalPointer - _glOrtho@48 = glOrtho ; glOrtho - _glPassThrough@4 = glPassThrough ; glPassThrough - _glPixelMapfv@12 = glPixelMapfv ; glPixelMapfv - _glPixelMapuiv@12 = glPixelMapuiv ; glPixelMapuiv - _glPixelMapusv@12 = glPixelMapusv ; glPixelMapusv - _glPixelStoref@8 = glPixelStoref ; glPixelStoref - _glPixelStorei@8 = glPixelStorei ; glPixelStorei - _glPixelTransferf@8 = glPixelTransferf ; glPixelTransferf - _glPixelTransferi@8 = glPixelTransferi ; glPixelTransferi - _glPixelZoom@8 = glPixelZoom ; glPixelZoom - _glPointSize@4 = glPointSize ; glPointSize - _glPolygonMode@8 = glPolygonMode ; glPolygonMode - _glPolygonOffset@8 = glPolygonOffset ; glPolygonOffset - _glPolygonStipple@4 = glPolygonStipple ; glPolygonStipple - _glPopAttrib@0 = glPopAttrib ; glPopAttrib - _glPopClientAttrib@0 = glPopClientAttrib ; glPopClientAttrib - _glPopMatrix@0 = glPopMatrix ; glPopMatrix - _glPopName@0 = glPopName ; glPopName - _glPrioritizeTextures@12 = glPrioritizeTextures ; glPrioritizeTextures - _glPushAttrib@4 = glPushAttrib ; glPushAttrib - _glPushClientAttrib@4 = glPushClientAttrib ; glPushClientAttrib - _glPushMatrix@0 = glPushMatrix ; glPushMatrix - _glPushName@4 = glPushName ; glPushName - _glRasterPos2d@16 = glRasterPos2d ; glRasterPos2d - _glRasterPos2dv@4 = glRasterPos2dv ; glRasterPos2dv - _glRasterPos2f@8 = glRasterPos2f ; glRasterPos2f - _glRasterPos2fv@4 = glRasterPos2fv ; glRasterPos2fv - _glRasterPos2i@8 = glRasterPos2i ; glRasterPos2i - _glRasterPos2iv@4 = glRasterPos2iv ; glRasterPos2iv - _glRasterPos2s@8 = glRasterPos2s ; glRasterPos2s - _glRasterPos2sv@4 = glRasterPos2sv ; glRasterPos2sv - _glRasterPos3d@24 = glRasterPos3d ; glRasterPos3d - _glRasterPos3dv@4 = glRasterPos3dv ; glRasterPos3dv - _glRasterPos3f@12 = glRasterPos3f ; glRasterPos3f - _glRasterPos3fv@4 = glRasterPos3fv ; glRasterPos3fv - _glRasterPos3i@12 = glRasterPos3i ; glRasterPos3i - _glRasterPos3iv@4 = glRasterPos3iv ; glRasterPos3iv - _glRasterPos3s@12 = glRasterPos3s ; glRasterPos3s - _glRasterPos3sv@4 = glRasterPos3sv ; glRasterPos3sv - _glRasterPos4d@32 = glRasterPos4d ; glRasterPos4d - _glRasterPos4dv@4 = glRasterPos4dv ; glRasterPos4dv - _glRasterPos4f@16 = glRasterPos4f ; glRasterPos4f - _glRasterPos4fv@4 = glRasterPos4fv ; glRasterPos4fv - _glRasterPos4i@16 = glRasterPos4i ; glRasterPos4i - _glRasterPos4iv@4 = glRasterPos4iv ; glRasterPos4iv - _glRasterPos4s@16 = glRasterPos4s ; glRasterPos4s - _glRasterPos4sv@4 = glRasterPos4sv ; glRasterPos4sv - _glReadBuffer@4 = glReadBuffer ; glReadBuffer - _glReadPixels@28 = glReadPixels ; glReadPixels - _glRectd@32 = glRectd ; glRectd - _glRectdv@8 = glRectdv ; glRectdv - _glRectf@16 = glRectf ; glRectf - _glRectfv@8 = glRectfv ; glRectfv - _glRecti@16 = glRecti ; glRecti - _glRectiv@8 = glRectiv ; glRectiv - _glRects@16 = glRects ; glRects - _glRectsv@8 = glRectsv ; glRectsv - _glRenderMode@4 = glRenderMode ; glRenderMode - _glRotated@32 = glRotated ; glRotated - _glRotatef@16 = glRotatef ; glRotatef - _glScaled@24 = glScaled ; glScaled - _glScalef@12 = glScalef ; glScalef - _glScissor@16 = glScissor ; glScissor - _glSelectBuffer@8 = glSelectBuffer ; glSelectBuffer - _glShadeModel@4 = glShadeModel ; glShadeModel - _glStencilFunc@12 = glStencilFunc ; glStencilFunc - _glStencilMask@4 = glStencilMask ; glStencilMask - _glStencilOp@12 = glStencilOp ; glStencilOp - _glTexCoord1d@8 = glTexCoord1d ; glTexCoord1d - _glTexCoord1dv@4 = glTexCoord1dv ; glTexCoord1dv - _glTexCoord1f@4 = glTexCoord1f ; glTexCoord1f - _glTexCoord1fv@4 = glTexCoord1fv ; glTexCoord1fv - _glTexCoord1i@4 = glTexCoord1i ; glTexCoord1i - _glTexCoord1iv@4 = glTexCoord1iv ; glTexCoord1iv - _glTexCoord1s@4 = glTexCoord1s ; glTexCoord1s - _glTexCoord1sv@4 = glTexCoord1sv ; glTexCoord1sv - _glTexCoord2d@16 = glTexCoord2d ; glTexCoord2d - _glTexCoord2dv@4 = glTexCoord2dv ; glTexCoord2dv - _glTexCoord2f@8 = glTexCoord2f ; glTexCoord2f - _glTexCoord2fv@4 = glTexCoord2fv ; glTexCoord2fv - _glTexCoord2i@8 = glTexCoord2i ; glTexCoord2i - _glTexCoord2iv@4 = glTexCoord2iv ; glTexCoord2iv - _glTexCoord2s@8 = glTexCoord2s ; glTexCoord2s - _glTexCoord2sv@4 = glTexCoord2sv ; glTexCoord2sv - _glTexCoord3d@24 = glTexCoord3d ; glTexCoord3d - _glTexCoord3dv@4 = glTexCoord3dv ; glTexCoord3dv - _glTexCoord3f@12 = glTexCoord3f ; glTexCoord3f - _glTexCoord3fv@4 = glTexCoord3fv ; glTexCoord3fv - _glTexCoord3i@12 = glTexCoord3i ; glTexCoord3i - _glTexCoord3iv@4 = glTexCoord3iv ; glTexCoord3iv - _glTexCoord3s@12 = glTexCoord3s ; glTexCoord3s - _glTexCoord3sv@4 = glTexCoord3sv ; glTexCoord3sv - _glTexCoord4d@32 = glTexCoord4d ; glTexCoord4d - _glTexCoord4dv@4 = glTexCoord4dv ; glTexCoord4dv - _glTexCoord4f@16 = glTexCoord4f ; glTexCoord4f - _glTexCoord4fv@4 = glTexCoord4fv ; glTexCoord4fv - _glTexCoord4i@16 = glTexCoord4i ; glTexCoord4i - _glTexCoord4iv@4 = glTexCoord4iv ; glTexCoord4iv - _glTexCoord4s@16 = glTexCoord4s ; glTexCoord4s - _glTexCoord4sv@4 = glTexCoord4sv ; glTexCoord4sv - _glTexCoordPointer@16 = glTexCoordPointer ; glTexCoordPointer - _glTexEnvf@12 = glTexEnvf ; glTexEnvf - _glTexEnvfv@12 = glTexEnvfv ; glTexEnvfv - _glTexEnvi@12 = glTexEnvi ; glTexEnvi - _glTexEnviv@12 = glTexEnviv ; glTexEnviv - _glTexGend@16 = glTexGend ; glTexGend - _glTexGendv@12 = glTexGendv ; glTexGendv - _glTexGenf@12 = glTexGenf ; glTexGenf - _glTexGenfv@12 = glTexGenfv ; glTexGenfv - _glTexGeni@12 = glTexGeni ; glTexGeni - _glTexGeniv@12 = glTexGeniv ; glTexGeniv - _glTexImage1D@32 = glTexImage1D ; glTexImage1D - _glTexImage2D@36 = glTexImage2D ; glTexImage2D - _glTexParameterf@12 = glTexParameterf ; glTexParameterf - _glTexParameterfv@12 = glTexParameterfv ; glTexParameterfv - _glTexParameteri@12 = glTexParameteri ; glTexParameteri - _glTexParameteriv@12 = glTexParameteriv ; glTexParameteriv - _glTexSubImage1D@28 = glTexSubImage1D ; glTexSubImage1D - _glTexSubImage2D@36 = glTexSubImage2D ; glTexSubImage2D - _glTranslated@24 = glTranslated ; glTranslated - _glTranslatef@12 = glTranslatef ; glTranslatef - _glVertex2d@16 = glVertex2d ; glVertex2d - _glVertex2dv@4 = glVertex2dv ; glVertex2dv - _glVertex2f@8 = glVertex2f ; glVertex2f - _glVertex2fv@4 = glVertex2fv ; glVertex2fv - _glVertex2i@8 = glVertex2i ; glVertex2i - _glVertex2iv@4 = glVertex2iv ; glVertex2iv - _glVertex2s@8 = glVertex2s ; glVertex2s - _glVertex2sv@4 = glVertex2sv ; glVertex2sv - _glVertex3d@24 = glVertex3d ; glVertex3d - _glVertex3dv@4 = glVertex3dv ; glVertex3dv - _glVertex3f@12 = glVertex3f ; glVertex3f - _glVertex3fv@4 = glVertex3fv ; glVertex3fv - _glVertex3i@12 = glVertex3i ; glVertex3i - _glVertex3iv@4 = glVertex3iv ; glVertex3iv - _glVertex3s@12 = glVertex3s ; glVertex3s - _glVertex3sv@4 = glVertex3sv ; glVertex3sv - _glVertex4d@32 = glVertex4d ; glVertex4d - _glVertex4dv@4 = glVertex4dv ; glVertex4dv - _glVertex4f@16 = glVertex4f ; glVertex4f - _glVertex4fv@4 = glVertex4fv ; glVertex4fv - _glVertex4i@16 = glVertex4i ; glVertex4i - _glVertex4iv@4 = glVertex4iv ; glVertex4iv - _glVertex4s@16 = glVertex4s ; glVertex4s - _glVertex4sv@4 = glVertex4sv ; glVertex4sv - _glVertexPointer@16 = glVertexPointer ; glVertexPointer - _glViewport@16 = glViewport ; glViewport - _wglChoosePixelFormat@8 = wglChoosePixelFormat ; wglChoosePixelFormat - _wglCopyContext@12 = wglCopyContext ; wglCopyContext - _wglCreateContext@4 = wglCreateContext ; wglCreateContext - _wglCreateLayerContext@8 = wglCreateLayerContext ; wglCreateLayerContext - _wglDeleteContext@4 = wglDeleteContext ; wglDeleteContext - _wglDescribeLayerPlane@20 = wglDescribeLayerPlane ; wglDescribeLayerPlane - _wglDescribePixelFormat@16 = wglDescribePixelFormat ; wglDescribePixelFormat - _wglGetCurrentContext@0 = wglGetCurrentContext ; wglGetCurrentContext - _wglGetCurrentDC@0 = wglGetCurrentDC ; wglGetCurrentDC - _wglGetDefaultProcAddress@4 = wglGetDefaultProcAddress ; wglGetDefaultProcAddress - _wglGetLayerPaletteEntries@20 = wglGetLayerPaletteEntries ; wglGetLayerPaletteEntries - _wglGetPixelFormat@4 = wglGetPixelFormat ; wglGetPixelFormat - _wglGetProcAddress@4 = wglGetProcAddress ; wglGetProcAddress - _wglMakeCurrent@8 = wglMakeCurrent ; wglMakeCurrent - _wglRealizeLayerPalette@12 = wglRealizeLayerPalette ; wglRealizeLayerPalette - _wglSetLayerPaletteEntries@20 = wglSetLayerPaletteEntries ; wglSetLayerPaletteEntries - _wglSetPixelFormat@12 = wglSetPixelFormat ; wglSetPixelFormat - _wglShareLists@8 = wglShareLists ; wglShareLists - _wglSwapBuffers@4 = wglSwapBuffers ; wglSwapBuffers - _wglSwapLayerBuffers@8 = wglSwapLayerBuffers ; wglSwapLayerBuffers - _wglSwapMultipleBuffers@8 = wglSwapMultipleBuffers ; wglSwapMultipleBuffers - _wglUseFontBitmapsA@16 = wglUseFontBitmapsA ; wglUseFontBitmapsA - _wglUseFontBitmapsW@16 = wglUseFontBitmapsW ; wglUseFontBitmapsW - _wglUseFontOutlinesA@32 = wglUseFontOutlinesA ; wglUseFontOutlinesA - _wglUseFontOutlinesW@32 = wglUseFontOutlinesW ; wglUseFontOutlinesW +LIBRARY OPENGL32 + +EXPORTS +; _GlmfBeginGlsBlock@4 = GlmfBeginGlsBlock GlmfBeginGlsBlock +; _GlmfCloseMetaFile@4 = GlmfCloseMetaFile GlmfCloseMetaFile +; _GlmfEndGlsBlock@4 = GlmfEndGlsBlock GlmfEndGlsBlock +; _GlmfEndPlayback@4 = GlmfEndPlayback GlmfEndPlayback +; _GlmfInitPlayback@12 = GlmfInitPlayback GlmfInitPlayback +; _GlmfPlayGlsRecord@16 = GlmfPlayGlsRecord GlmfPlayGlsRecord + _glAccum@8 = glAccum ; glAccum + _glAlphaFunc@8 = glAlphaFunc ; glAlphaFunc + _glAreTexturesResident@12 = glAreTexturesResident ; glAreTexturesResident + _glArrayElement@4 = glArrayElement ; glArrayElement + _glBegin@4 = glBegin ; glBegin + _glBindTexture@8 = glBindTexture ; glBindTexture + _glBitmap@28 = glBitmap ; glBitmap + _glBlendFunc@8 = glBlendFunc ; glBlendFunc + _glCallList@4 = glCallList ; glCallList + _glCallLists@12 = glCallLists ; glCallLists + _glClear@4 = glClear ; glClear + _glClearAccum@16 = glClearAccum ; glClearAccum + _glClearColor@16 = glClearColor ; glClearColor + _glClearDepth@8 = glClearDepth ; glClearDepth + _glClearIndex@4 = glClearIndex ; glClearIndex + _glClearStencil@4 = glClearStencil ; glClearStencil + _glClipPlane@8 = glClipPlane ; glClipPlane + _glColor3b@12 = glColor3b ; glColor3b + _glColor3bv@4 = glColor3bv ; glColor3bv + _glColor3d@24 = glColor3d ; glColor3d + _glColor3dv@4 = glColor3dv ; glColor3dv + _glColor3f@12 = glColor3f ; glColor3f + _glColor3fv@4 = glColor3fv ; glColor3fv + _glColor3i@12 = glColor3i ; glColor3i + _glColor3iv@4 = glColor3iv ; glColor3iv + _glColor3s@12 = glColor3s ; glColor3s + _glColor3sv@4 = glColor3sv ; glColor3sv + _glColor3ub@12 = glColor3ub ; glColor3ub + _glColor3ubv@4 = glColor3ubv ; glColor3ubv + _glColor3ui@12 = glColor3ui ; glColor3ui + _glColor3uiv@4 = glColor3uiv ; glColor3uiv + _glColor3us@12 = glColor3us ; glColor3us + _glColor3usv@4 = glColor3usv ; glColor3usv + _glColor4b@16 = glColor4b ; glColor4b + _glColor4bv@4 = glColor4bv ; glColor4bv + _glColor4d@32 = glColor4d ; glColor4d + _glColor4dv@4 = glColor4dv ; glColor4dv + _glColor4f@16 = glColor4f ; glColor4f + _glColor4fv@4 = glColor4fv ; glColor4fv + _glColor4i@16 = glColor4i ; glColor4i + _glColor4iv@4 = glColor4iv ; glColor4iv + _glColor4s@16 = glColor4s ; glColor4s + _glColor4sv@4 = glColor4sv ; glColor4sv + _glColor4ub@16 = glColor4ub ; glColor4ub + _glColor4ubv@4 = glColor4ubv ; glColor4ubv + _glColor4ui@16 = glColor4ui ; glColor4ui + _glColor4uiv@4 = glColor4uiv ; glColor4uiv + _glColor4us@16 = glColor4us ; glColor4us + _glColor4usv@4 = glColor4usv ; glColor4usv + _glColorMask@16 = glColorMask ; glColorMask + _glColorMaterial@8 = glColorMaterial ; glColorMaterial + _glColorPointer@16 = glColorPointer ; glColorPointer + _glCopyPixels@20 = glCopyPixels ; glCopyPixels + _glCopyTexImage1D@28 = glCopyTexImage1D ; glCopyTexImage1D + _glCopyTexImage2D@32 = glCopyTexImage2D ; glCopyTexImage2D + _glCopyTexSubImage1D@24 = glCopyTexSubImage1D ; glCopyTexSubImage1D + _glCopyTexSubImage2D@32 = glCopyTexSubImage2D ; glCopyTexSubImage2D + _glCullFace@4 = glCullFace ; glCullFace + _glDebugEntry@8 = glDebugEntry ; glDebugEntry + _glDeleteLists@8 = glDeleteLists ; glDeleteLists + _glDeleteTextures@8 = glDeleteTextures ; glDeleteTextures + _glDepthFunc@4 = glDepthFunc ; glDepthFunc + _glDepthMask@4 = glDepthMask ; glDepthMask + _glDepthRange@16 = glDepthRange ; glDepthRange + _glDisable@4 = glDisable ; glDisable + _glDisableClientState@4 = glDisableClientState ; glDisableClientState + _glDrawArrays@12 = glDrawArrays ; glDrawArrays + _glDrawBuffer@4 = glDrawBuffer ; glDrawBuffer + _glDrawElements@16 = glDrawElements ; glDrawElements + _glDrawPixels@20 = glDrawPixels ; glDrawPixels + _glEdgeFlag@4 = glEdgeFlag ; glEdgeFlag + _glEdgeFlagPointer@8 = glEdgeFlagPointer ; glEdgeFlagPointer + _glEdgeFlagv@4 = glEdgeFlagv ; glEdgeFlagv + _glEnable@4 = glEnable ; glEnable + _glEnableClientState@4 = glEnableClientState ; glEnableClientState + _glEnd@0 = glEnd ; glEnd + _glEndList@0 = glEndList ; glEndList + _glEvalCoord1d@8 = glEvalCoord1d ; glEvalCoord1d + _glEvalCoord1dv@4 = glEvalCoord1dv ; glEvalCoord1dv + _glEvalCoord1f@4 = glEvalCoord1f ; glEvalCoord1f + _glEvalCoord1fv@4 = glEvalCoord1fv ; glEvalCoord1fv + _glEvalCoord2d@16 = glEvalCoord2d ; glEvalCoord2d + _glEvalCoord2dv@4 = glEvalCoord2dv ; glEvalCoord2dv + _glEvalCoord2f@8 = glEvalCoord2f ; glEvalCoord2f + _glEvalCoord2fv@4 = glEvalCoord2fv ; glEvalCoord2fv + _glEvalMesh1@12 = glEvalMesh1 ; glEvalMesh1 + _glEvalMesh2@20 = glEvalMesh2 ; glEvalMesh2 + _glEvalPoint1@4 = glEvalPoint1 ; glEvalPoint1 + _glEvalPoint2@8 = glEvalPoint2 ; glEvalPoint2 + _glFeedbackBuffer@12 = glFeedbackBuffer ; glFeedbackBuffer + _glFinish@0 = glFinish ; glFinish + _glFlush@0 = glFlush ; glFlush + _glFogf@8 = glFogf ; glFogf + _glFogfv@8 = glFogfv ; glFogfv + _glFogi@8 = glFogi ; glFogi + _glFogiv@8 = glFogiv ; glFogiv + _glFrontFace@4 = glFrontFace ; glFrontFace + _glFrustum@48 = glFrustum ; glFrustum + _glGenLists@4 = glGenLists ; glGenLists + _glGenTextures@8 = glGenTextures ; glGenTextures + _glGetBooleanv@8 = glGetBooleanv ; glGetBooleanv + _glGetClipPlane@8 = glGetClipPlane ; glGetClipPlane + _glGetDoublev@8 = glGetDoublev ; glGetDoublev + _glGetError@0 = glGetError ; glGetError + _glGetFloatv@8 = glGetFloatv ; glGetFloatv + _glGetIntegerv@8 = glGetIntegerv ; glGetIntegerv + _glGetLightfv@12 = glGetLightfv ; glGetLightfv + _glGetLightiv@12 = glGetLightiv ; glGetLightiv + _glGetMapdv@12 = glGetMapdv ; glGetMapdv + _glGetMapfv@12 = glGetMapfv ; glGetMapfv + _glGetMapiv@12 = glGetMapiv ; glGetMapiv + _glGetMaterialfv@12 = glGetMaterialfv ; glGetMaterialfv + _glGetMaterialiv@12 = glGetMaterialiv ; glGetMaterialiv + _glGetPixelMapfv@8 = glGetPixelMapfv ; glGetPixelMapfv + _glGetPixelMapuiv@8 = glGetPixelMapuiv ; glGetPixelMapuiv + _glGetPixelMapusv@8 = glGetPixelMapusv ; glGetPixelMapusv + _glGetPointerv@8 = glGetPointerv ; glGetPointerv + _glGetPolygonStipple@4 = glGetPolygonStipple ; glGetPolygonStipple + _glGetString@4 = glGetString ; glGetString + _glGetTexEnvfv@12 = glGetTexEnvfv ; glGetTexEnvfv + _glGetTexEnviv@12 = glGetTexEnviv ; glGetTexEnviv + _glGetTexGendv@12 = glGetTexGendv ; glGetTexGendv + _glGetTexGenfv@12 = glGetTexGenfv ; glGetTexGenfv + _glGetTexGeniv@12 = glGetTexGeniv ; glGetTexGeniv + _glGetTexImage@20 = glGetTexImage ; glGetTexImage + _glGetTexLevelParameterfv@16 = glGetTexLevelParameterfv ; glGetTexLevelParameterfv + _glGetTexLevelParameteriv@16 = glGetTexLevelParameteriv ; glGetTexLevelParameteriv + _glGetTexParameterfv@12 = glGetTexParameterfv ; glGetTexParameterfv + _glGetTexParameteriv@12 = glGetTexParameteriv ; glGetTexParameteriv + _glHint@8 = glHint ; glHint + _glIndexMask@4 = glIndexMask ; glIndexMask + _glIndexPointer@12 = glIndexPointer ; glIndexPointer + _glIndexd@8 = glIndexd ; glIndexd + _glIndexdv@4 = glIndexdv ; glIndexdv + _glIndexf@4 = glIndexf ; glIndexf + _glIndexfv@4 = glIndexfv ; glIndexfv + _glIndexi@4 = glIndexi ; glIndexi + _glIndexiv@4 = glIndexiv ; glIndexiv + _glIndexs@4 = glIndexs ; glIndexs + _glIndexsv@4 = glIndexsv ; glIndexsv + _glIndexub@4 = glIndexub ; glIndexub + _glIndexubv@4 = glIndexubv ; glIndexubv + _glInitNames@0 = glInitNames ; glInitNames + _glInterleavedArrays@12 = glInterleavedArrays ; glInterleavedArrays + _glIsEnabled@4 = glIsEnabled ; glIsEnabled + _glIsList@4 = glIsList ; glIsList + _glIsTexture@4 = glIsTexture ; glIsTexture + _glLightModelf@8 = glLightModelf ; glLightModelf + _glLightModelfv@8 = glLightModelfv ; glLightModelfv + _glLightModeli@8 = glLightModeli ; glLightModeli + _glLightModeliv@8 = glLightModeliv ; glLightModeliv + _glLightf@12 = glLightf ; glLightf + _glLightfv@12 = glLightfv ; glLightfv + _glLighti@12 = glLighti ; glLighti + _glLightiv@12 = glLightiv ; glLightiv + _glLineStipple@8 = glLineStipple ; glLineStipple + _glLineWidth@4 = glLineWidth ; glLineWidth + _glListBase@4 = glListBase ; glListBase + _glLoadIdentity@0 = glLoadIdentity ; glLoadIdentity + _glLoadMatrixd@4 = glLoadMatrixd ; glLoadMatrixd + _glLoadMatrixf@4 = glLoadMatrixf ; glLoadMatrixf + _glLoadName@4 = glLoadName ; glLoadName + _glLogicOp@4 = glLogicOp ; glLogicOp + _glMap1d@32 = glMap1d ; glMap1d + _glMap1f@24 = glMap1f ; glMap1f + _glMap2d@56 = glMap2d ; glMap2d + _glMap2f@40 = glMap2f ; glMap2f + _glMapGrid1d@20 = glMapGrid1d ; glMapGrid1d + _glMapGrid1f@12 = glMapGrid1f ; glMapGrid1f + _glMapGrid2d@40 = glMapGrid2d ; glMapGrid2d + _glMapGrid2f@24 = glMapGrid2f ; glMapGrid2f + _glMaterialf@12 = glMaterialf ; glMaterialf + _glMaterialfv@12 = glMaterialfv ; glMaterialfv + _glMateriali@12 = glMateriali ; glMateriali + _glMaterialiv@12 = glMaterialiv ; glMaterialiv + _glMatrixMode@4 = glMatrixMode ; glMatrixMode + _glMultMatrixd@4 = glMultMatrixd ; glMultMatrixd + _glMultMatrixf@4 = glMultMatrixf ; glMultMatrixf + _glNewList@8 = glNewList ; glNewList + _glNormal3b@12 = glNormal3b ; glNormal3b + _glNormal3bv@4 = glNormal3bv ; glNormal3bv + _glNormal3d@24 = glNormal3d ; glNormal3d + _glNormal3dv@4 = glNormal3dv ; glNormal3dv + _glNormal3f@12 = glNormal3f ; glNormal3f + _glNormal3fv@4 = glNormal3fv ; glNormal3fv + _glNormal3i@12 = glNormal3i ; glNormal3i + _glNormal3iv@4 = glNormal3iv ; glNormal3iv + _glNormal3s@12 = glNormal3s ; glNormal3s + _glNormal3sv@4 = glNormal3sv ; glNormal3sv + _glNormalPointer@12 = glNormalPointer ; glNormalPointer + _glOrtho@48 = glOrtho ; glOrtho + _glPassThrough@4 = glPassThrough ; glPassThrough + _glPixelMapfv@12 = glPixelMapfv ; glPixelMapfv + _glPixelMapuiv@12 = glPixelMapuiv ; glPixelMapuiv + _glPixelMapusv@12 = glPixelMapusv ; glPixelMapusv + _glPixelStoref@8 = glPixelStoref ; glPixelStoref + _glPixelStorei@8 = glPixelStorei ; glPixelStorei + _glPixelTransferf@8 = glPixelTransferf ; glPixelTransferf + _glPixelTransferi@8 = glPixelTransferi ; glPixelTransferi + _glPixelZoom@8 = glPixelZoom ; glPixelZoom + _glPointSize@4 = glPointSize ; glPointSize + _glPolygonMode@8 = glPolygonMode ; glPolygonMode + _glPolygonOffset@8 = glPolygonOffset ; glPolygonOffset + _glPolygonStipple@4 = glPolygonStipple ; glPolygonStipple + _glPopAttrib@0 = glPopAttrib ; glPopAttrib + _glPopClientAttrib@0 = glPopClientAttrib ; glPopClientAttrib + _glPopMatrix@0 = glPopMatrix ; glPopMatrix + _glPopName@0 = glPopName ; glPopName + _glPrioritizeTextures@12 = glPrioritizeTextures ; glPrioritizeTextures + _glPushAttrib@4 = glPushAttrib ; glPushAttrib + _glPushClientAttrib@4 = glPushClientAttrib ; glPushClientAttrib + _glPushMatrix@0 = glPushMatrix ; glPushMatrix + _glPushName@4 = glPushName ; glPushName + _glRasterPos2d@16 = glRasterPos2d ; glRasterPos2d + _glRasterPos2dv@4 = glRasterPos2dv ; glRasterPos2dv + _glRasterPos2f@8 = glRasterPos2f ; glRasterPos2f + _glRasterPos2fv@4 = glRasterPos2fv ; glRasterPos2fv + _glRasterPos2i@8 = glRasterPos2i ; glRasterPos2i + _glRasterPos2iv@4 = glRasterPos2iv ; glRasterPos2iv + _glRasterPos2s@8 = glRasterPos2s ; glRasterPos2s + _glRasterPos2sv@4 = glRasterPos2sv ; glRasterPos2sv + _glRasterPos3d@24 = glRasterPos3d ; glRasterPos3d + _glRasterPos3dv@4 = glRasterPos3dv ; glRasterPos3dv + _glRasterPos3f@12 = glRasterPos3f ; glRasterPos3f + _glRasterPos3fv@4 = glRasterPos3fv ; glRasterPos3fv + _glRasterPos3i@12 = glRasterPos3i ; glRasterPos3i + _glRasterPos3iv@4 = glRasterPos3iv ; glRasterPos3iv + _glRasterPos3s@12 = glRasterPos3s ; glRasterPos3s + _glRasterPos3sv@4 = glRasterPos3sv ; glRasterPos3sv + _glRasterPos4d@32 = glRasterPos4d ; glRasterPos4d + _glRasterPos4dv@4 = glRasterPos4dv ; glRasterPos4dv + _glRasterPos4f@16 = glRasterPos4f ; glRasterPos4f + _glRasterPos4fv@4 = glRasterPos4fv ; glRasterPos4fv + _glRasterPos4i@16 = glRasterPos4i ; glRasterPos4i + _glRasterPos4iv@4 = glRasterPos4iv ; glRasterPos4iv + _glRasterPos4s@16 = glRasterPos4s ; glRasterPos4s + _glRasterPos4sv@4 = glRasterPos4sv ; glRasterPos4sv + _glReadBuffer@4 = glReadBuffer ; glReadBuffer + _glReadPixels@28 = glReadPixels ; glReadPixels + _glRectd@32 = glRectd ; glRectd + _glRectdv@8 = glRectdv ; glRectdv + _glRectf@16 = glRectf ; glRectf + _glRectfv@8 = glRectfv ; glRectfv + _glRecti@16 = glRecti ; glRecti + _glRectiv@8 = glRectiv ; glRectiv + _glRects@16 = glRects ; glRects + _glRectsv@8 = glRectsv ; glRectsv + _glRenderMode@4 = glRenderMode ; glRenderMode + _glRotated@32 = glRotated ; glRotated + _glRotatef@16 = glRotatef ; glRotatef + _glScaled@24 = glScaled ; glScaled + _glScalef@12 = glScalef ; glScalef + _glScissor@16 = glScissor ; glScissor + _glSelectBuffer@8 = glSelectBuffer ; glSelectBuffer + _glShadeModel@4 = glShadeModel ; glShadeModel + _glStencilFunc@12 = glStencilFunc ; glStencilFunc + _glStencilMask@4 = glStencilMask ; glStencilMask + _glStencilOp@12 = glStencilOp ; glStencilOp + _glTexCoord1d@8 = glTexCoord1d ; glTexCoord1d + _glTexCoord1dv@4 = glTexCoord1dv ; glTexCoord1dv + _glTexCoord1f@4 = glTexCoord1f ; glTexCoord1f + _glTexCoord1fv@4 = glTexCoord1fv ; glTexCoord1fv + _glTexCoord1i@4 = glTexCoord1i ; glTexCoord1i + _glTexCoord1iv@4 = glTexCoord1iv ; glTexCoord1iv + _glTexCoord1s@4 = glTexCoord1s ; glTexCoord1s + _glTexCoord1sv@4 = glTexCoord1sv ; glTexCoord1sv + _glTexCoord2d@16 = glTexCoord2d ; glTexCoord2d + _glTexCoord2dv@4 = glTexCoord2dv ; glTexCoord2dv + _glTexCoord2f@8 = glTexCoord2f ; glTexCoord2f + _glTexCoord2fv@4 = glTexCoord2fv ; glTexCoord2fv + _glTexCoord2i@8 = glTexCoord2i ; glTexCoord2i + _glTexCoord2iv@4 = glTexCoord2iv ; glTexCoord2iv + _glTexCoord2s@8 = glTexCoord2s ; glTexCoord2s + _glTexCoord2sv@4 = glTexCoord2sv ; glTexCoord2sv + _glTexCoord3d@24 = glTexCoord3d ; glTexCoord3d + _glTexCoord3dv@4 = glTexCoord3dv ; glTexCoord3dv + _glTexCoord3f@12 = glTexCoord3f ; glTexCoord3f + _glTexCoord3fv@4 = glTexCoord3fv ; glTexCoord3fv + _glTexCoord3i@12 = glTexCoord3i ; glTexCoord3i + _glTexCoord3iv@4 = glTexCoord3iv ; glTexCoord3iv + _glTexCoord3s@12 = glTexCoord3s ; glTexCoord3s + _glTexCoord3sv@4 = glTexCoord3sv ; glTexCoord3sv + _glTexCoord4d@32 = glTexCoord4d ; glTexCoord4d + _glTexCoord4dv@4 = glTexCoord4dv ; glTexCoord4dv + _glTexCoord4f@16 = glTexCoord4f ; glTexCoord4f + _glTexCoord4fv@4 = glTexCoord4fv ; glTexCoord4fv + _glTexCoord4i@16 = glTexCoord4i ; glTexCoord4i + _glTexCoord4iv@4 = glTexCoord4iv ; glTexCoord4iv + _glTexCoord4s@16 = glTexCoord4s ; glTexCoord4s + _glTexCoord4sv@4 = glTexCoord4sv ; glTexCoord4sv + _glTexCoordPointer@16 = glTexCoordPointer ; glTexCoordPointer + _glTexEnvf@12 = glTexEnvf ; glTexEnvf + _glTexEnvfv@12 = glTexEnvfv ; glTexEnvfv + _glTexEnvi@12 = glTexEnvi ; glTexEnvi + _glTexEnviv@12 = glTexEnviv ; glTexEnviv + _glTexGend@16 = glTexGend ; glTexGend + _glTexGendv@12 = glTexGendv ; glTexGendv + _glTexGenf@12 = glTexGenf ; glTexGenf + _glTexGenfv@12 = glTexGenfv ; glTexGenfv + _glTexGeni@12 = glTexGeni ; glTexGeni + _glTexGeniv@12 = glTexGeniv ; glTexGeniv + _glTexImage1D@32 = glTexImage1D ; glTexImage1D + _glTexImage2D@36 = glTexImage2D ; glTexImage2D + _glTexParameterf@12 = glTexParameterf ; glTexParameterf + _glTexParameterfv@12 = glTexParameterfv ; glTexParameterfv + _glTexParameteri@12 = glTexParameteri ; glTexParameteri + _glTexParameteriv@12 = glTexParameteriv ; glTexParameteriv + _glTexSubImage1D@28 = glTexSubImage1D ; glTexSubImage1D + _glTexSubImage2D@36 = glTexSubImage2D ; glTexSubImage2D + _glTranslated@24 = glTranslated ; glTranslated + _glTranslatef@12 = glTranslatef ; glTranslatef + _glVertex2d@16 = glVertex2d ; glVertex2d + _glVertex2dv@4 = glVertex2dv ; glVertex2dv + _glVertex2f@8 = glVertex2f ; glVertex2f + _glVertex2fv@4 = glVertex2fv ; glVertex2fv + _glVertex2i@8 = glVertex2i ; glVertex2i + _glVertex2iv@4 = glVertex2iv ; glVertex2iv + _glVertex2s@8 = glVertex2s ; glVertex2s + _glVertex2sv@4 = glVertex2sv ; glVertex2sv + _glVertex3d@24 = glVertex3d ; glVertex3d + _glVertex3dv@4 = glVertex3dv ; glVertex3dv + _glVertex3f@12 = glVertex3f ; glVertex3f + _glVertex3fv@4 = glVertex3fv ; glVertex3fv + _glVertex3i@12 = glVertex3i ; glVertex3i + _glVertex3iv@4 = glVertex3iv ; glVertex3iv + _glVertex3s@12 = glVertex3s ; glVertex3s + _glVertex3sv@4 = glVertex3sv ; glVertex3sv + _glVertex4d@32 = glVertex4d ; glVertex4d + _glVertex4dv@4 = glVertex4dv ; glVertex4dv + _glVertex4f@16 = glVertex4f ; glVertex4f + _glVertex4fv@4 = glVertex4fv ; glVertex4fv + _glVertex4i@16 = glVertex4i ; glVertex4i + _glVertex4iv@4 = glVertex4iv ; glVertex4iv + _glVertex4s@16 = glVertex4s ; glVertex4s + _glVertex4sv@4 = glVertex4sv ; glVertex4sv + _glVertexPointer@16 = glVertexPointer ; glVertexPointer + _glViewport@16 = glViewport ; glViewport + _wglChoosePixelFormat@8 = wglChoosePixelFormat ; wglChoosePixelFormat + _wglCopyContext@12 = wglCopyContext ; wglCopyContext + _wglCreateContext@4 = wglCreateContext ; wglCreateContext + _wglCreateLayerContext@8 = wglCreateLayerContext ; wglCreateLayerContext + _wglDeleteContext@4 = wglDeleteContext ; wglDeleteContext + _wglDescribeLayerPlane@20 = wglDescribeLayerPlane ; wglDescribeLayerPlane + _wglDescribePixelFormat@16 = wglDescribePixelFormat ; wglDescribePixelFormat + _wglGetCurrentContext@0 = wglGetCurrentContext ; wglGetCurrentContext + _wglGetCurrentDC@0 = wglGetCurrentDC ; wglGetCurrentDC + _wglGetDefaultProcAddress@4 = wglGetDefaultProcAddress ; wglGetDefaultProcAddress + _wglGetLayerPaletteEntries@20 = wglGetLayerPaletteEntries ; wglGetLayerPaletteEntries + _wglGetPixelFormat@4 = wglGetPixelFormat ; wglGetPixelFormat + _wglGetProcAddress@4 = wglGetProcAddress ; wglGetProcAddress + _wglMakeCurrent@8 = wglMakeCurrent ; wglMakeCurrent + _wglRealizeLayerPalette@12 = wglRealizeLayerPalette ; wglRealizeLayerPalette + _wglSetLayerPaletteEntries@20 = wglSetLayerPaletteEntries ; wglSetLayerPaletteEntries + _wglSetPixelFormat@12 = wglSetPixelFormat ; wglSetPixelFormat + _wglShareLists@8 = wglShareLists ; wglShareLists + _wglSwapBuffers@4 = wglSwapBuffers ; wglSwapBuffers + _wglSwapLayerBuffers@8 = wglSwapLayerBuffers ; wglSwapLayerBuffers + _wglSwapMultipleBuffers@8 = wglSwapMultipleBuffers ; wglSwapMultipleBuffers + _wglUseFontBitmapsA@16 = wglUseFontBitmapsA ; wglUseFontBitmapsA + _wglUseFontBitmapsW@16 = wglUseFontBitmapsW ; wglUseFontBitmapsW + _wglUseFontOutlinesA@32 = wglUseFontOutlinesA ; wglUseFontOutlinesA + _wglUseFontOutlinesW@32 = wglUseFontOutlinesW ; wglUseFontOutlinesW diff --git a/def/rpcrt4.def b/def/rpcrt4.def index 1eaa67b342..91c6e4f274 100644 --- a/def/rpcrt4.def +++ b/def/rpcrt4.def @@ -1,468 +1,468 @@ -LIBRARY rpcrt4 -EXETYPE NT -SUBSYSTEM WINDOWS -EXPORTS -_CStdStubBuffer_AddRef@4 = CStdStubBuffer_AddRef -_CStdStubBuffer_Connect@8 = CStdStubBuffer_Connect -_CStdStubBuffer_CountRefs@4 = CStdStubBuffer_CountRefs -_CStdStubBuffer_DebugServerQueryInterface@8 = CStdStubBuffer_DebugServerQueryInterface -_CStdStubBuffer_DebugServerRelease@8 = CStdStubBuffer_DebugServerRelease -_CStdStubBuffer_Disconnect@4 = CStdStubBuffer_Disconnect -_CStdStubBuffer_Invoke@12 = CStdStubBuffer_Invoke -_CStdStubBuffer_IsIIDSupported@8 = CStdStubBuffer_IsIIDSupported -_CStdStubBuffer_QueryInterface@12 = CStdStubBuffer_QueryInterface -_DceErrorInqTextA@8 = DceErrorInqTextA -_DceErrorInqTextW@8 = DceErrorInqTextW -_I_RpcAllocate@4 = I_RpcAllocate -_I_RpcAsyncAbortCall@8 = I_RpcAsyncAbortCall -_I_RpcAsyncSetHandle@8 = I_RpcAsyncSetHandle -_I_RpcBCacheAllocate@4 = I_RpcBCacheAllocate -_I_RpcBCacheFree@4 = I_RpcBCacheFree -_I_RpcBindingCopy@8 = I_RpcBindingCopy -_I_RpcBindingInqConnId@12 = I_RpcBindingInqConnId -_I_RpcBindingInqDynamicEndpoint@8 = I_RpcBindingInqDynamicEndpoint -_I_RpcBindingInqDynamicEndpointA@8 = I_RpcBindingInqDynamicEndpointA -_I_RpcBindingInqDynamicEndpointW@8 = I_RpcBindingInqDynamicEndpointW -_I_RpcBindingInqTransportType@8 = I_RpcBindingInqTransportType -_I_RpcBindingIsClientLocal@8 = I_RpcBindingIsClientLocal -_I_RpcBindingToStaticStringBindingW@8 = I_RpcBindingToStaticStringBindingW -_I_RpcClearMutex@4 = I_RpcClearMutex -_I_RpcConnectionSetSockBuffSize@8 = I_RpcConnectionSetSockBuffSize -_I_RpcConnectionInqSockBuffSize@8 = I_RpcConnectionInqSockBuffSize -_I_RpcDeleteMutex@4 = I_RpcDeleteMutex -_I_RpcFree@4 = I_RpcFree -_I_RpcFreeBuffer@4 = I_RpcFreeBuffer -_I_RpcFreePipeBuffer@4 = I_RpcFreePipeBuffer -_I_RpcGetAssociationContext@8 = I_RpcGetAssociationContext -_I_RpcGetBuffer@4 = I_RpcGetBuffer -_I_RpcGetBufferWithObject@8 = I_RpcGetBufferWithObject -_I_RpcGetCurrentCallHandle@0 = I_RpcGetCurrentCallHandle -_I_RpcGetExtendedError@0 = I_RpcGetExtendedError -_I_RpcGetServerContextList@4 = I_RpcGetServerContextList -_I_RpcIfInqTransferSyntaxes@16 = I_RpcIfInqTransferSyntaxes -_I_RpcBindingInqSecurityContext@8 = I_RpcBindingInqSecurityContext -_I_RpcBindingInqWireIdForSnego@8 = I_RpcBindingInqWireIdForSnego -_I_RpcLogEvent@28 = I_RpcLogEvent -_I_RpcMapWin32Status@4 = I_RpcMapWin32Status -_I_RpcMonitorAssociation@12 = I_RpcMonitorAssociation -_I_RpcNsBindingSetEntryName@12 = I_RpcNsBindingSetEntryName -_I_RpcNsBindingSetEntryNameA@12 = I_RpcNsBindingSetEntryNameA -_I_RpcNsBindingSetEntryNameW@12 = I_RpcNsBindingSetEntryNameW -_I_RpcNsInterfaceExported@12 = I_RpcNsInterfaceExported -_I_RpcNsInterfaceUnexported@12 = I_RpcNsInterfaceUnexported -_I_RpcParseSecurity@8 = I_RpcParseSecurity -_I_RpcPauseExecution@4 = I_RpcPauseExecution -_I_RpcReallocPipeBuffer@8 = I_RpcReallocPipeBuffer -_I_RpcReceive@8 = I_RpcReceive -_I_RpcRequestMutex@4 = I_RpcRequestMutex -_I_RpcSend@4 = I_RpcSend -_I_RpcSendReceive@4 = I_RpcSendReceive -_I_RpcServerAllocateIpPort@8 = I_RpcServerAllocateIpPort -_I_RpcServerSetAddressChangeFn@4 = I_RpcServerSetAddressChangeFn -_I_RpcServerInqAddressChangeFn@0 = I_RpcServerInqAddressChangeFn -_I_RpcServerInqTransportType@4 = I_RpcServerInqTransportType -_I_RpcServerRegisterForwardFunction@4 = I_RpcServerRegisterForwardFunction -_I_RpcServerUseProtseq2A@20 = I_RpcServerUseProtseq2A -_I_RpcServerUseProtseqEp2A@24 = I_RpcServerUseProtseqEp2A -_I_RpcServerUseProtseq2W@20 = I_RpcServerUseProtseq2W -_I_RpcServerUseProtseqEp2W@24 = I_RpcServerUseProtseqEp2W -_I_RpcSetServerContextList@8 = I_RpcSetServerContextList -_I_RpcSsDontSerializeContext@0 = I_RpcSsDontSerializeContext -_I_RpcStopMonitorAssociation@4 = I_RpcStopMonitorAssociation -_I_RpcTransConnectionAllocatePacket@8 = I_RpcTransConnectionAllocatePacket -_I_RpcTransConnectionFreePacket@8 = I_RpcTransConnectionFreePacket -_I_RpcTransConnectionReallocPacket@16 = I_RpcTransConnectionReallocPacket -_I_RpcTransDatagramAllocate@16 = I_RpcTransDatagramAllocate -_I_RpcTransDatagramAllocate2@16 = I_RpcTransDatagramAllocate2 -_I_RpcTransDatagramFree@12 = I_RpcTransDatagramFree -_I_RpcTransGetAddressList@8 = I_RpcTransGetAddressList -_I_RpcTransGetThreadEvent@0 = I_RpcTransGetThreadEvent -_I_RpcTransIoCancelled@8 = I_RpcTransIoCancelled -_I_RpcTransServerNewConnection@4 = I_RpcTransServerNewConnection -_I_UuidCreate@4 = I_UuidCreate -_IUnknown_AddRef_Proxy@4 = IUnknown_AddRef_Proxy -_IUnknown_QueryInterface_Proxy@12 = IUnknown_QueryInterface_Proxy -_IUnknown_Release_Proxy@4 = IUnknown_Release_Proxy -_MIDL_wchar_strcpy@8 = MIDL_wchar_strcpy -_MIDL_wchar_strlen@4 = MIDL_wchar_strlen -_MesBufferHandleReset@24 = MesBufferHandleReset -_MesDecodeBufferHandleCreate@12 = MesDecodeBufferHandleCreate -_MesDecodeIncrementalHandleCreate@12 = MesDecodeIncrementalHandleCreate -_MesEncodeDynBufferHandleCreate@12 = MesEncodeDynBufferHandleCreate -_MesEncodeFixedBufferHandleCreate@16 = MesEncodeFixedBufferHandleCreate -_MesEncodeIncrementalHandleCreate@16 = MesEncodeIncrementalHandleCreate -_MesHandleFree@4 = MesHandleFree -_MesIncrementalHandleReset@24 = MesIncrementalHandleReset -_MesInqProcEncodingId@12 = MesInqProcEncodingId -_NDRCContextBinding@4 = NDRCContextBinding -_NDRCContextMarshall@8 = NDRCContextMarshall -_NDRCContextUnmarshall@16 = NDRCContextUnmarshall -_NDRSContextMarshall@12 = NDRSContextMarshall -_NDRSContextUnmarshall@8 = NDRSContextUnmarshall -_NDRSContextMarshallEx@16 = NDRSContextMarshallEx -_NDRSContextUnmarshallEx@12 = NDRSContextUnmarshallEx -_NDRSContextMarshall2@24 = NDRSContextMarshall2 -_NDRSContextUnmarshall2@20 = NDRSContextUnmarshall2 -_NDRcopy@12 = NDRcopy -_NdrAllocate@8 = NdrAllocate -_NdrAsyncClientCall = NdrAsyncClientCall -_NdrAsyncServerCall@4 = NdrAsyncServerCall -_NdrByteCountPointerBufferSize@12 = NdrByteCountPointerBufferSize -_NdrByteCountPointerFree@12 = NdrByteCountPointerFree -_NdrByteCountPointerMarshall@12 = NdrByteCountPointerMarshall -_NdrByteCountPointerUnmarshall@16 = NdrByteCountPointerUnmarshall -_NdrClearOutParameters@12 = NdrClearOutParameters -_NdrClientCall = NdrClientCall -_NdrClientCall2 = NdrClientCall2 -_NdrClientContextMarshall@12 = NdrClientContextMarshall -_NdrClientContextUnmarshall@12 = NdrClientContextUnmarshall -_NdrClientInitialize@16 = NdrClientInitialize -_NdrClientInitializeNew@16 = NdrClientInitializeNew -_NdrComplexArrayBufferSize@12 = NdrComplexArrayBufferSize -_NdrComplexArrayFree@12 = NdrComplexArrayFree -_NdrComplexArrayMarshall@12 = NdrComplexArrayMarshall -_NdrComplexArrayMemorySize@8 = NdrComplexArrayMemorySize -_NdrComplexArrayUnmarshall@16 = NdrComplexArrayUnmarshall -_NdrComplexStructBufferSize@12 = NdrComplexStructBufferSize -_NdrComplexStructFree@12 = NdrComplexStructFree -_NdrComplexStructMarshall@12 = NdrComplexStructMarshall -_NdrComplexStructMemorySize@8 = NdrComplexStructMemorySize -_NdrComplexStructUnmarshall@16 = NdrComplexStructUnmarshall -_NdrConformantArrayBufferSize@12 = NdrConformantArrayBufferSize -_NdrConformantArrayFree@12 = NdrConformantArrayFree -_NdrConformantArrayMarshall@12 = NdrConformantArrayMarshall -_NdrConformantArrayMemorySize@8 = NdrConformantArrayMemorySize -_NdrConformantArrayUnmarshall@16 = NdrConformantArrayUnmarshall -_NdrConformantStringBufferSize@12 = NdrConformantStringBufferSize -_NdrConformantStringMarshall@12 = NdrConformantStringMarshall -_NdrConformantStringMemorySize@8 = NdrConformantStringMemorySize -_NdrConformantStringUnmarshall@16 = NdrConformantStringUnmarshall -_NdrConformantStructBufferSize@12 = NdrConformantStructBufferSize -_NdrConformantStructFree@12 = NdrConformantStructFree -_NdrConformantStructMarshall@12 = NdrConformantStructMarshall -_NdrConformantStructMemorySize@8 = NdrConformantStructMemorySize -_NdrConformantStructUnmarshall@16 = NdrConformantStructUnmarshall -_NdrConformantVaryingArrayBufferSize@12 = NdrConformantVaryingArrayBufferSize -_NdrConformantVaryingArrayFree@12 = NdrConformantVaryingArrayFree -_NdrConformantVaryingArrayMarshall@12 = NdrConformantVaryingArrayMarshall -_NdrConformantVaryingArrayMemorySize@8 = NdrConformantVaryingArrayMemorySize -_NdrConformantVaryingArrayUnmarshall@16 = NdrConformantVaryingArrayUnmarshall -_NdrConformantVaryingStructBufferSize@12 = NdrConformantVaryingStructBufferSize -_NdrConformantVaryingStructFree@12 = NdrConformantVaryingStructFree -_NdrConformantVaryingStructMarshall@12 = NdrConformantVaryingStructMarshall -_NdrConformantVaryingStructMemorySize@8 = NdrConformantVaryingStructMemorySize -_NdrConformantVaryingStructUnmarshall@16 = NdrConformantVaryingStructUnmarshall -_NdrContextHandleInitialize@8 = NdrContextHandleInitialize -_NdrContextHandleSize@12 = NdrContextHandleSize -_NdrConvert@8 = NdrConvert -_NdrConvert2@12 = NdrConvert2 -_NdrCorrelationFree@4 = NdrCorrelationFree -_NdrCorrelationInitialize@16 = NdrCorrelationInitialize -_NdrCorrelationPass@4 = NdrCorrelationPass -_NdrCStdStubBuffer_Release@8 = NdrCStdStubBuffer_Release -_NdrCStdStubBuffer2_Release@8 = NdrCStdStubBuffer2_Release -_NdrDcomAsyncClientCall = NdrDcomAsyncClientCall -_NdrDcomAsyncStubCall@16 = NdrDcomAsyncStubCall -_NdrDllCanUnloadNow@4 = NdrDllCanUnloadNow -_NdrDllGetClassObject@24 = NdrDllGetClassObject -_NdrDllRegisterProxy@12 = NdrDllRegisterProxy -_NdrDllUnregisterProxy@12 = NdrDllUnregisterProxy -_NdrEncapsulatedUnionBufferSize@12 = NdrEncapsulatedUnionBufferSize -_NdrEncapsulatedUnionFree@12 = NdrEncapsulatedUnionFree -_NdrEncapsulatedUnionMarshall@12 = NdrEncapsulatedUnionMarshall -_NdrEncapsulatedUnionMemorySize@8 = NdrEncapsulatedUnionMemorySize -_NdrEncapsulatedUnionUnmarshall@16 = NdrEncapsulatedUnionUnmarshall -_NdrFixedArrayBufferSize@12 = NdrFixedArrayBufferSize -_NdrFixedArrayFree@12 = NdrFixedArrayFree -_NdrFixedArrayMarshall@12 = NdrFixedArrayMarshall -_NdrFixedArrayMemorySize@8 = NdrFixedArrayMemorySize -_NdrFixedArrayUnmarshall@16 = NdrFixedArrayUnmarshall -_NdrFreeBuffer@4 = NdrFreeBuffer -_NdrFullPointerFree@8 = NdrFullPointerFree -_NdrFullPointerInsertRefId@12 = NdrFullPointerInsertRefId -_NdrFullPointerQueryPointer@16 = NdrFullPointerQueryPointer -_NdrFullPointerQueryRefId@16 = NdrFullPointerQueryRefId -_NdrFullPointerXlatFree@4 = NdrFullPointerXlatFree -_NdrFullPointerXlatInit@8 = NdrFullPointerXlatInit -_NdrGetBuffer@12 = NdrGetBuffer -_NdrGetDcomProtocolVersion@8 = NdrGetDcomProtocolVersion -_NdrGetPipeBuffer@12 = NdrGetPipeBuffer -_NdrGetPartialBuffer@4 = NdrGetPartialBuffer -_NdrGetUserMarshalInfo@12 = NdrGetUserMarshalInfo -_NdrInterfacePointerBufferSize@12 = NdrInterfacePointerBufferSize -_NdrInterfacePointerFree@12 = NdrInterfacePointerFree -_NdrInterfacePointerMarshall@12 = NdrInterfacePointerMarshall -_NdrInterfacePointerMemorySize@8 = NdrInterfacePointerMemorySize -_NdrInterfacePointerUnmarshall@16 = NdrInterfacePointerUnmarshall -_NdrIsAppDoneWithPipes@4 = NdrIsAppDoneWithPipes -_NdrMapCommAndFaultStatus@16 = NdrMapCommAndFaultStatus -_NdrMarkNextActivePipe@4 = NdrMarkNextActivePipe -_NdrMesProcEncodeDecode = NdrMesProcEncodeDecode -_NdrMesProcEncodeDecode2 = NdrMesProcEncodeDecode2 -_NdrMesSimpleTypeAlignSize@4 = NdrMesSimpleTypeAlignSize -_NdrMesSimpleTypeDecode@12 = NdrMesSimpleTypeDecode -_NdrMesSimpleTypeEncode@16 = NdrMesSimpleTypeEncode -_NdrMesTypeAlignSize@16 = NdrMesTypeAlignSize -_NdrMesTypeDecode@16 = NdrMesTypeDecode -_NdrMesTypeEncode@16 = NdrMesTypeEncode -_NdrMesTypeAlignSize2@20 = NdrMesTypeAlignSize2 -_NdrMesTypeDecode2@20 = NdrMesTypeDecode2 -_NdrMesTypeEncode2@20 = NdrMesTypeEncode2 -_NdrMesTypeFree2@20 = NdrMesTypeFree2 -_NdrNonConformantStringBufferSize@12 = NdrNonConformantStringBufferSize -_NdrNonConformantStringMarshall@12 = NdrNonConformantStringMarshall -_NdrNonConformantStringMemorySize@8 = NdrNonConformantStringMemorySize -_NdrNonConformantStringUnmarshall@16 = NdrNonConformantStringUnmarshall -_NdrNonEncapsulatedUnionBufferSize@12 = NdrNonEncapsulatedUnionBufferSize -_NdrNonEncapsulatedUnionFree@12 = NdrNonEncapsulatedUnionFree -_NdrNonEncapsulatedUnionMarshall@12 = NdrNonEncapsulatedUnionMarshall -_NdrNonEncapsulatedUnionMemorySize@8 = NdrNonEncapsulatedUnionMemorySize -_NdrNonEncapsulatedUnionUnmarshall@16 = NdrNonEncapsulatedUnionUnmarshall -_NdrNsGetBuffer@12 = NdrNsGetBuffer -_NdrNsSendReceive@12 = NdrNsSendReceive -_NdrOleAllocate@4 = NdrOleAllocate -_NdrOleFree@4 = NdrOleFree -_NdrPipePull@16 = NdrPipePull -_NdrPipePush@12 = NdrPipePush -_NdrPipeSendReceive@8 = NdrPipeSendReceive -_NdrPipesInitialize@24 = NdrPipesInitialize -_NdrPipesDone@4 = NdrPipesDone -_NdrPointerBufferSize@12 = NdrPointerBufferSize -_NdrPointerFree@12 = NdrPointerFree -_NdrPointerMarshall@12 = NdrPointerMarshall -_NdrPointerMemorySize@8 = NdrPointerMemorySize -_NdrPointerUnmarshall@16 = NdrPointerUnmarshall -_NdrProxyErrorHandler@4 = NdrProxyErrorHandler -_NdrProxyFreeBuffer@8 = NdrProxyFreeBuffer -_NdrProxyGetBuffer@8 = NdrProxyGetBuffer -_NdrProxyInitialize@20 = NdrProxyInitialize -_NdrProxySendReceive@8 = NdrProxySendReceive -_NdrRangeUnmarshall@16 = NdrRangeUnmarshall -_NdrRpcSmClientAllocate@4 = NdrRpcSmClientAllocate -_NdrRpcSmClientFree@4 = NdrRpcSmClientFree -_NdrRpcSsDefaultAllocate@4 = NdrRpcSsDefaultAllocate -_NdrRpcSsDefaultFree@4 = NdrRpcSsDefaultFree -_NdrRpcSmSetClientToOsf@4 = NdrRpcSmSetClientToOsf -_NdrRpcSsDisableAllocate@4 = NdrRpcSsDisableAllocate -_NdrRpcSsEnableAllocate@4 = NdrRpcSsEnableAllocate -_NdrSendReceive@8 = NdrSendReceive -_NdrServerCall@4 = NdrServerCall -_NdrServerCall2@4 = NdrServerCall2 -_NdrServerContextMarshall@12 = NdrServerContextMarshall -_NdrServerContextUnmarshall@4 = NdrServerContextUnmarshall -_NdrServerContextNewMarshall@16 = NdrServerContextNewMarshall -_NdrServerContextNewUnmarshall@8 = NdrServerContextNewUnmarshall -_NdrServerInitialize@12 = NdrServerInitialize -_NdrServerInitializeMarshall@8 = NdrServerInitializeMarshall -_NdrServerInitializeNew@12 = NdrServerInitializeNew -_NdrServerInitializePartial@16 = NdrServerInitializePartial -_NdrServerInitializeUnmarshall@12 = NdrServerInitializeUnmarshall -_NdrServerMarshall@16 = NdrServerMarshall -_NdrServerUnmarshall@24 = NdrServerUnmarshall -_NdrSimpleStructBufferSize@12 = NdrSimpleStructBufferSize -_NdrSimpleStructFree@12 = NdrSimpleStructFree -_NdrSimpleStructMarshall@12 = NdrSimpleStructMarshall -_NdrSimpleStructMemorySize@8 = NdrSimpleStructMemorySize -_NdrSimpleStructUnmarshall@16 = NdrSimpleStructUnmarshall -_NdrSimpleTypeMarshall@12 = NdrSimpleTypeMarshall -_NdrSimpleTypeUnmarshall@12 = NdrSimpleTypeUnmarshall -_NdrStubCall@16 = NdrStubCall -_NdrStubCall2@16 = NdrStubCall2 -_NdrStubForwardingFunction@16 = NdrStubForwardingFunction -_NdrStubGetBuffer@12 = NdrStubGetBuffer -_NdrStubInitialize@16 = NdrStubInitialize -_NdrStubInitializeMarshall@12 = NdrStubInitializeMarshall -_NdrVaryingArrayBufferSize@12 = NdrVaryingArrayBufferSize -_NdrVaryingArrayFree@12 = NdrVaryingArrayFree -_NdrVaryingArrayMarshall@12 = NdrVaryingArrayMarshall -_NdrVaryingArrayMemorySize@8 = NdrVaryingArrayMemorySize -_NdrVaryingArrayUnmarshall@16 = NdrVaryingArrayUnmarshall -_NdrXmitOrRepAsBufferSize@12 = NdrXmitOrRepAsBufferSize -_NdrXmitOrRepAsFree@12 = NdrXmitOrRepAsFree -_NdrXmitOrRepAsMarshall@12 = NdrXmitOrRepAsMarshall -_NdrXmitOrRepAsMemorySize@8 = NdrXmitOrRepAsMemorySize -_NdrXmitOrRepAsUnmarshall@16 = NdrXmitOrRepAsUnmarshall -_NdrUserMarshalSimpleTypeConvert@12 = NdrUserMarshalSimpleTypeConvert -_NdrUserMarshalBufferSize@12 = NdrUserMarshalBufferSize -_NdrUserMarshalFree@12 = NdrUserMarshalFree -_NdrUserMarshalMarshall@12 = NdrUserMarshalMarshall -_NdrUserMarshalMemorySize@8 = NdrUserMarshalMemorySize -_NdrUserMarshalUnmarshall@16 = NdrUserMarshalUnmarshall -_RpcAsyncAbortCall@8 = RpcAsyncAbortCall -_RpcAsyncCancelCall@8 = RpcAsyncCancelCall -_RpcAsyncCompleteCall@8 = RpcAsyncCompleteCall -_RpcAsyncGetCallStatus@4 = RpcAsyncGetCallStatus -_RpcAsyncInitializeHandle@8 = RpcAsyncInitializeHandle -_RpcAsyncRegisterInfo@4 = RpcAsyncRegisterInfo -_RpcBindingCopy@8 = RpcBindingCopy -_RpcBindingFree@4 = RpcBindingFree -_RpcBindingFromStringBindingA@8 = RpcBindingFromStringBindingA -_RpcBindingFromStringBindingW@8 = RpcBindingFromStringBindingW -_RpcBindingInqAuthClientA@24 = RpcBindingInqAuthClientA -_RpcBindingInqAuthClientW@24 = RpcBindingInqAuthClientW -_RpcBindingInqAuthClientExA@28 = RpcBindingInqAuthClientExA -_RpcBindingInqAuthClientExW@28 = RpcBindingInqAuthClientExW -_RpcBindingInqAuthInfoA@24 = RpcBindingInqAuthInfoA -_RpcBindingInqAuthInfoExA@32 = RpcBindingInqAuthInfoExA -_RpcBindingInqAuthInfoExW@32 = RpcBindingInqAuthInfoExW -_RpcBindingInqAuthInfoW@24 = RpcBindingInqAuthInfoW -_RpcBindingInqObject@8 = RpcBindingInqObject -_RpcBindingReset@4 = RpcBindingReset -_RpcBindingServerFromClient@8 = RpcBindingServerFromClient -_RpcBindingSetAuthInfoA@24 = RpcBindingSetAuthInfoA -_RpcBindingSetAuthInfoExA@28 = RpcBindingSetAuthInfoExA -_RpcBindingSetAuthInfoExW@28 = RpcBindingSetAuthInfoExW -_RpcBindingSetAuthInfoW@24 = RpcBindingSetAuthInfoW -_RpcBindingSetObject@8 = RpcBindingSetObject -_RpcBindingSetOption@12 = RpcBindingSetOption -_RpcBindingInqOption@12 = RpcBindingInqOption -_RpcBindingToStringBindingA@8 = RpcBindingToStringBindingA -_RpcBindingToStringBindingW@8 = RpcBindingToStringBindingW -_RpcBindingVectorFree@4 = RpcBindingVectorFree -_RpcCancelThread@4 = RpcCancelThread -_RpcCancelThreadEx@8 = RpcCancelThreadEx -_RpcCertGeneratePrincipalNameA@12 = RpcCertGeneratePrincipalNameA -_RpcCertGeneratePrincipalNameW@12 = RpcCertGeneratePrincipalNameW -_RpcEpRegisterA@16 = RpcEpRegisterA -_RpcEpRegisterNoReplaceA@16 = RpcEpRegisterNoReplaceA -_RpcEpRegisterNoReplaceW@16 = RpcEpRegisterNoReplaceW -_RpcEpRegisterW@16 = RpcEpRegisterW -_RpcEpResolveBinding@8 = RpcEpResolveBinding -_RpcEpUnregister@12 = RpcEpUnregister -_RpcIfIdVectorFree@4 = RpcIfIdVectorFree -_RpcIfInqId@8 = RpcIfInqId -_RpcImpersonateClient@4 = RpcImpersonateClient -_RpcMgmtEnableIdleCleanup@0 = RpcMgmtEnableIdleCleanup -_RpcMgmtEpEltInqBegin@24 = RpcMgmtEpEltInqBegin -_RpcMgmtEpEltInqDone@4 = RpcMgmtEpEltInqDone -_RpcMgmtEpEltInqNextA@20 = RpcMgmtEpEltInqNextA -_RpcMgmtEpEltInqNextW@20 = RpcMgmtEpEltInqNextW -_RpcMgmtEpUnregister@16 = RpcMgmtEpUnregister -_RpcMgmtInqComTimeout@8 = RpcMgmtInqComTimeout -_RpcMgmtInqDefaultProtectLevel@8 = RpcMgmtInqDefaultProtectLevel -_RpcMgmtInqIfIds@8 = RpcMgmtInqIfIds -_RpcMgmtInqServerPrincNameA@12 = RpcMgmtInqServerPrincNameA -_RpcMgmtInqServerPrincNameW@12 = RpcMgmtInqServerPrincNameW -_RpcMgmtInqStats@8 = RpcMgmtInqStats -_RpcMgmtIsServerListening@4 = RpcMgmtIsServerListening -_RpcMgmtSetAuthorizationFn@4 = RpcMgmtSetAuthorizationFn -_RpcMgmtSetCancelTimeout@4 = RpcMgmtSetCancelTimeout -_RpcMgmtSetComTimeout@8 = RpcMgmtSetComTimeout -_RpcMgmtSetServerStackSize@4 = RpcMgmtSetServerStackSize -_RpcMgmtStatsVectorFree@4 = RpcMgmtStatsVectorFree -_RpcMgmtStopServerListening@4 = RpcMgmtStopServerListening -_RpcMgmtWaitServerListen@0 = RpcMgmtWaitServerListen -_RpcNetworkInqProtseqsA@4 = RpcNetworkInqProtseqsA -_RpcNetworkInqProtseqsW@4 = RpcNetworkInqProtseqsW -_RpcNetworkIsProtseqValidA@4 = RpcNetworkIsProtseqValidA -_RpcNetworkIsProtseqValidW@4 = RpcNetworkIsProtseqValidW -_RpcNsBindingInqEntryNameA@12 = RpcNsBindingInqEntryNameA -_RpcNsBindingInqEntryNameW@12 = RpcNsBindingInqEntryNameW -_RpcObjectInqType@8 = RpcObjectInqType -_RpcObjectSetInqFn@4 = RpcObjectSetInqFn -_RpcObjectSetType@8 = RpcObjectSetType -_RpcProtseqVectorFreeA@4 = RpcProtseqVectorFreeA -_RpcProtseqVectorFreeW@4 = RpcProtseqVectorFreeW -_RpcRaiseException@4 = RpcRaiseException -_RpcRevertToSelf@0 = RpcRevertToSelf -_RpcRevertToSelfEx@4 = RpcRevertToSelfEx -_RpcServerInqBindings@4 = RpcServerInqBindings -_RpcServerInqDefaultPrincNameA@8 = RpcServerInqDefaultPrincNameA -_RpcServerInqDefaultPrincNameW@8 = RpcServerInqDefaultPrincNameW -_RpcServerInqIf@12 = RpcServerInqIf -_RpcServerListen@12 = RpcServerListen -_RpcServerRegisterAuthInfoA@16 = RpcServerRegisterAuthInfoA -_RpcServerRegisterAuthInfoW@16 = RpcServerRegisterAuthInfoW -_RpcServerRegisterIf@12 = RpcServerRegisterIf -_RpcServerRegisterIf2@28 = RpcServerRegisterIf2 -_RpcServerRegisterIfEx@24 = RpcServerRegisterIfEx -_RpcServerTestCancel@4 = RpcServerTestCancel -_RpcServerUnregisterIf@12 = RpcServerUnregisterIf -_RpcServerUseAllProtseqs@8 = RpcServerUseAllProtseqs -_RpcServerUseAllProtseqsEx@12 = RpcServerUseAllProtseqsEx -_RpcServerUseAllProtseqsIf@12 = RpcServerUseAllProtseqsIf -_RpcServerUseAllProtseqsIfEx@16 = RpcServerUseAllProtseqsIfEx -_RpcServerUseProtseqA@12 = RpcServerUseProtseqA -_RpcServerUseProtseqExA@16 = RpcServerUseProtseqExA -_RpcServerUseProtseqEpA@16 = RpcServerUseProtseqEpA -_RpcServerUseProtseqEpExA@20 = RpcServerUseProtseqEpExA -_RpcServerUseProtseqEpW@16 = RpcServerUseProtseqEpW -_RpcServerUseProtseqEpExW@20 = RpcServerUseProtseqEpExW -_RpcServerUseProtseqIfA@16 = RpcServerUseProtseqIfA -_RpcServerUseProtseqIfExA@20 = RpcServerUseProtseqIfExA -_RpcServerUseProtseqIfW@16 = RpcServerUseProtseqIfW -_RpcServerUseProtseqIfExW@20 = RpcServerUseProtseqIfExW -_RpcServerUseProtseqW@12 = RpcServerUseProtseqW -_RpcServerUseProtseqExW@16 = RpcServerUseProtseqExW -_RpcServerYield@0 = RpcServerYield -_RpcSmAllocate@8 = RpcSmAllocate -_RpcSmClientFree@4 = RpcSmClientFree -_RpcSmDestroyClientContext@4 = RpcSmDestroyClientContext -_RpcSmDisableAllocate@0 = RpcSmDisableAllocate -_RpcSmEnableAllocate@0 = RpcSmEnableAllocate -_RpcSmFree@4 = RpcSmFree -_RpcSmGetThreadHandle@4 = RpcSmGetThreadHandle -_RpcSmSetClientAllocFree@8 = RpcSmSetClientAllocFree -_RpcSmSetThreadHandle@4 = RpcSmSetThreadHandle -_RpcSmSwapClientAllocFree@16 = RpcSmSwapClientAllocFree -_RpcSsAllocate@4 = RpcSsAllocate -_RpcSsDestroyClientContext@4 = RpcSsDestroyClientContext -_RpcSsDisableAllocate@0 = RpcSsDisableAllocate -_RpcSsDontSerializeContext@0 = RpcSsDontSerializeContext -_RpcSsEnableAllocate@0 = RpcSsEnableAllocate -_RpcSsFree@4 = RpcSsFree -_RpcSsGetContextBinding@8 = RpcSsGetContextBinding -_RpcSsGetThreadHandle@0 = RpcSsGetThreadHandle -_RpcSsSetClientAllocFree@8 = RpcSsSetClientAllocFree -_RpcSsSetThreadHandle@4 = RpcSsSetThreadHandle -_RpcSsSwapClientAllocFree@16 = RpcSsSwapClientAllocFree -_RpcStringBindingComposeA@24 = RpcStringBindingComposeA -_RpcStringBindingComposeW@24 = RpcStringBindingComposeW -_RpcStringBindingParseA@24 = RpcStringBindingParseA -_RpcStringBindingParseW@24 = RpcStringBindingParseW -_RpcStringFreeA@4 = RpcStringFreeA -_RpcStringFreeW@4 = RpcStringFreeW -_RpcTestCancel@0 = RpcTestCancel -_TowerConstruct@24 = TowerConstruct -_TowerExplode@24 = TowerExplode -_UuidCompare@12 = UuidCompare -_UuidCreate@4 = UuidCreate -_UuidCreateNil@4 = UuidCreateNil -_UuidCreateSequential@4 = UuidCreateSequential -_UuidEqual@12 = UuidEqual -_UuidFromStringA@8 = UuidFromStringA -_UuidFromStringW@8 = UuidFromStringW -_UuidHash@8 = UuidHash -_UuidIsNil@8 = UuidIsNil -_UuidToStringA@8 = UuidToStringA -_UuidToStringW@8 = UuidToStringW -_char_array_from_ndr@16 = char_array_from_ndr -_char_from_ndr@8 = char_from_ndr -_data_from_ndr@16 = data_from_ndr -_data_into_ndr@16 = data_into_ndr -_data_size_ndr@16 = data_size_ndr -_double_array_from_ndr@16 = double_array_from_ndr -_double_from_ndr@8 = double_from_ndr -_enum_from_ndr@8 = enum_from_ndr -_float_array_from_ndr@16 = float_array_from_ndr -_float_from_ndr@8 = float_from_ndr -_long_array_from_ndr@16 = long_array_from_ndr -_long_from_ndr@8 = long_from_ndr -_long_from_ndr_temp@12 = long_from_ndr_temp -_short_array_from_ndr@16 = short_array_from_ndr -_short_from_ndr@8 = short_from_ndr -_short_from_ndr_temp@12 = short_from_ndr_temp -_tree_into_ndr@16 = tree_into_ndr -_tree_peek_ndr@16 = tree_peek_ndr -_tree_size_ndr@16 = tree_size_ndr -_RpcInitializeAsyncHandle@8 = RpcInitializeAsyncHandle -_RpcRegisterAsyncInfo@4 = RpcRegisterAsyncInfo -_RpcGetAsyncCallStatus@4 = RpcGetAsyncCallStatus -_RpcCompleteAsyncCall@8 = RpcCompleteAsyncCall -_RpcAbortAsyncCall@8 = RpcAbortAsyncCall -_RpcCancelAsyncCall@8 = RpcCancelAsyncCall -_I_RpcSetAsyncHandle@8 = I_RpcSetAsyncHandle -_I_RpcAbortAsyncCall@8 = I_RpcAbortAsyncCall -_GlobalMutexRequestExternal@0 = GlobalMutexRequestExternal -_GlobalMutexClearExternal@0 = GlobalMutexClearExternal -_NdrpSetRpcSsDefaults@8 = NdrpSetRpcSsDefaults@8 +LIBRARY rpcrt4 +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_CStdStubBuffer_AddRef@4 = CStdStubBuffer_AddRef +_CStdStubBuffer_Connect@8 = CStdStubBuffer_Connect +_CStdStubBuffer_CountRefs@4 = CStdStubBuffer_CountRefs +_CStdStubBuffer_DebugServerQueryInterface@8 = CStdStubBuffer_DebugServerQueryInterface +_CStdStubBuffer_DebugServerRelease@8 = CStdStubBuffer_DebugServerRelease +_CStdStubBuffer_Disconnect@4 = CStdStubBuffer_Disconnect +_CStdStubBuffer_Invoke@12 = CStdStubBuffer_Invoke +_CStdStubBuffer_IsIIDSupported@8 = CStdStubBuffer_IsIIDSupported +_CStdStubBuffer_QueryInterface@12 = CStdStubBuffer_QueryInterface +_DceErrorInqTextA@8 = DceErrorInqTextA +_DceErrorInqTextW@8 = DceErrorInqTextW +_I_RpcAllocate@4 = I_RpcAllocate +_I_RpcAsyncAbortCall@8 = I_RpcAsyncAbortCall +_I_RpcAsyncSetHandle@8 = I_RpcAsyncSetHandle +_I_RpcBCacheAllocate@4 = I_RpcBCacheAllocate +_I_RpcBCacheFree@4 = I_RpcBCacheFree +_I_RpcBindingCopy@8 = I_RpcBindingCopy +_I_RpcBindingInqConnId@12 = I_RpcBindingInqConnId +_I_RpcBindingInqDynamicEndpoint@8 = I_RpcBindingInqDynamicEndpoint +_I_RpcBindingInqDynamicEndpointA@8 = I_RpcBindingInqDynamicEndpointA +_I_RpcBindingInqDynamicEndpointW@8 = I_RpcBindingInqDynamicEndpointW +_I_RpcBindingInqTransportType@8 = I_RpcBindingInqTransportType +_I_RpcBindingIsClientLocal@8 = I_RpcBindingIsClientLocal +_I_RpcBindingToStaticStringBindingW@8 = I_RpcBindingToStaticStringBindingW +_I_RpcClearMutex@4 = I_RpcClearMutex +_I_RpcConnectionSetSockBuffSize@8 = I_RpcConnectionSetSockBuffSize +_I_RpcConnectionInqSockBuffSize@8 = I_RpcConnectionInqSockBuffSize +_I_RpcDeleteMutex@4 = I_RpcDeleteMutex +_I_RpcFree@4 = I_RpcFree +_I_RpcFreeBuffer@4 = I_RpcFreeBuffer +_I_RpcFreePipeBuffer@4 = I_RpcFreePipeBuffer +_I_RpcGetAssociationContext@8 = I_RpcGetAssociationContext +_I_RpcGetBuffer@4 = I_RpcGetBuffer +_I_RpcGetBufferWithObject@8 = I_RpcGetBufferWithObject +_I_RpcGetCurrentCallHandle@0 = I_RpcGetCurrentCallHandle +_I_RpcGetExtendedError@0 = I_RpcGetExtendedError +_I_RpcGetServerContextList@4 = I_RpcGetServerContextList +_I_RpcIfInqTransferSyntaxes@16 = I_RpcIfInqTransferSyntaxes +_I_RpcBindingInqSecurityContext@8 = I_RpcBindingInqSecurityContext +_I_RpcBindingInqWireIdForSnego@8 = I_RpcBindingInqWireIdForSnego +_I_RpcLogEvent@28 = I_RpcLogEvent +_I_RpcMapWin32Status@4 = I_RpcMapWin32Status +_I_RpcMonitorAssociation@12 = I_RpcMonitorAssociation +_I_RpcNsBindingSetEntryName@12 = I_RpcNsBindingSetEntryName +_I_RpcNsBindingSetEntryNameA@12 = I_RpcNsBindingSetEntryNameA +_I_RpcNsBindingSetEntryNameW@12 = I_RpcNsBindingSetEntryNameW +_I_RpcNsInterfaceExported@12 = I_RpcNsInterfaceExported +_I_RpcNsInterfaceUnexported@12 = I_RpcNsInterfaceUnexported +_I_RpcParseSecurity@8 = I_RpcParseSecurity +_I_RpcPauseExecution@4 = I_RpcPauseExecution +_I_RpcReallocPipeBuffer@8 = I_RpcReallocPipeBuffer +_I_RpcReceive@8 = I_RpcReceive +_I_RpcRequestMutex@4 = I_RpcRequestMutex +_I_RpcSend@4 = I_RpcSend +_I_RpcSendReceive@4 = I_RpcSendReceive +_I_RpcServerAllocateIpPort@8 = I_RpcServerAllocateIpPort +_I_RpcServerSetAddressChangeFn@4 = I_RpcServerSetAddressChangeFn +_I_RpcServerInqAddressChangeFn@0 = I_RpcServerInqAddressChangeFn +_I_RpcServerInqTransportType@4 = I_RpcServerInqTransportType +_I_RpcServerRegisterForwardFunction@4 = I_RpcServerRegisterForwardFunction +_I_RpcServerUseProtseq2A@20 = I_RpcServerUseProtseq2A +_I_RpcServerUseProtseqEp2A@24 = I_RpcServerUseProtseqEp2A +_I_RpcServerUseProtseq2W@20 = I_RpcServerUseProtseq2W +_I_RpcServerUseProtseqEp2W@24 = I_RpcServerUseProtseqEp2W +_I_RpcSetServerContextList@8 = I_RpcSetServerContextList +_I_RpcSsDontSerializeContext@0 = I_RpcSsDontSerializeContext +_I_RpcStopMonitorAssociation@4 = I_RpcStopMonitorAssociation +_I_RpcTransConnectionAllocatePacket@8 = I_RpcTransConnectionAllocatePacket +_I_RpcTransConnectionFreePacket@8 = I_RpcTransConnectionFreePacket +_I_RpcTransConnectionReallocPacket@16 = I_RpcTransConnectionReallocPacket +_I_RpcTransDatagramAllocate@16 = I_RpcTransDatagramAllocate +_I_RpcTransDatagramAllocate2@16 = I_RpcTransDatagramAllocate2 +_I_RpcTransDatagramFree@12 = I_RpcTransDatagramFree +_I_RpcTransGetAddressList@8 = I_RpcTransGetAddressList +_I_RpcTransGetThreadEvent@0 = I_RpcTransGetThreadEvent +_I_RpcTransIoCancelled@8 = I_RpcTransIoCancelled +_I_RpcTransServerNewConnection@4 = I_RpcTransServerNewConnection +_I_UuidCreate@4 = I_UuidCreate +_IUnknown_AddRef_Proxy@4 = IUnknown_AddRef_Proxy +_IUnknown_QueryInterface_Proxy@12 = IUnknown_QueryInterface_Proxy +_IUnknown_Release_Proxy@4 = IUnknown_Release_Proxy +_MIDL_wchar_strcpy@8 = MIDL_wchar_strcpy +_MIDL_wchar_strlen@4 = MIDL_wchar_strlen +_MesBufferHandleReset@24 = MesBufferHandleReset +_MesDecodeBufferHandleCreate@12 = MesDecodeBufferHandleCreate +_MesDecodeIncrementalHandleCreate@12 = MesDecodeIncrementalHandleCreate +_MesEncodeDynBufferHandleCreate@12 = MesEncodeDynBufferHandleCreate +_MesEncodeFixedBufferHandleCreate@16 = MesEncodeFixedBufferHandleCreate +_MesEncodeIncrementalHandleCreate@16 = MesEncodeIncrementalHandleCreate +_MesHandleFree@4 = MesHandleFree +_MesIncrementalHandleReset@24 = MesIncrementalHandleReset +_MesInqProcEncodingId@12 = MesInqProcEncodingId +_NDRCContextBinding@4 = NDRCContextBinding +_NDRCContextMarshall@8 = NDRCContextMarshall +_NDRCContextUnmarshall@16 = NDRCContextUnmarshall +_NDRSContextMarshall@12 = NDRSContextMarshall +_NDRSContextUnmarshall@8 = NDRSContextUnmarshall +_NDRSContextMarshallEx@16 = NDRSContextMarshallEx +_NDRSContextUnmarshallEx@12 = NDRSContextUnmarshallEx +_NDRSContextMarshall2@24 = NDRSContextMarshall2 +_NDRSContextUnmarshall2@20 = NDRSContextUnmarshall2 +_NDRcopy@12 = NDRcopy +_NdrAllocate@8 = NdrAllocate +_NdrAsyncClientCall = NdrAsyncClientCall +_NdrAsyncServerCall@4 = NdrAsyncServerCall +_NdrByteCountPointerBufferSize@12 = NdrByteCountPointerBufferSize +_NdrByteCountPointerFree@12 = NdrByteCountPointerFree +_NdrByteCountPointerMarshall@12 = NdrByteCountPointerMarshall +_NdrByteCountPointerUnmarshall@16 = NdrByteCountPointerUnmarshall +_NdrClearOutParameters@12 = NdrClearOutParameters +_NdrClientCall = NdrClientCall +_NdrClientCall2 = NdrClientCall2 +_NdrClientContextMarshall@12 = NdrClientContextMarshall +_NdrClientContextUnmarshall@12 = NdrClientContextUnmarshall +_NdrClientInitialize@16 = NdrClientInitialize +_NdrClientInitializeNew@16 = NdrClientInitializeNew +_NdrComplexArrayBufferSize@12 = NdrComplexArrayBufferSize +_NdrComplexArrayFree@12 = NdrComplexArrayFree +_NdrComplexArrayMarshall@12 = NdrComplexArrayMarshall +_NdrComplexArrayMemorySize@8 = NdrComplexArrayMemorySize +_NdrComplexArrayUnmarshall@16 = NdrComplexArrayUnmarshall +_NdrComplexStructBufferSize@12 = NdrComplexStructBufferSize +_NdrComplexStructFree@12 = NdrComplexStructFree +_NdrComplexStructMarshall@12 = NdrComplexStructMarshall +_NdrComplexStructMemorySize@8 = NdrComplexStructMemorySize +_NdrComplexStructUnmarshall@16 = NdrComplexStructUnmarshall +_NdrConformantArrayBufferSize@12 = NdrConformantArrayBufferSize +_NdrConformantArrayFree@12 = NdrConformantArrayFree +_NdrConformantArrayMarshall@12 = NdrConformantArrayMarshall +_NdrConformantArrayMemorySize@8 = NdrConformantArrayMemorySize +_NdrConformantArrayUnmarshall@16 = NdrConformantArrayUnmarshall +_NdrConformantStringBufferSize@12 = NdrConformantStringBufferSize +_NdrConformantStringMarshall@12 = NdrConformantStringMarshall +_NdrConformantStringMemorySize@8 = NdrConformantStringMemorySize +_NdrConformantStringUnmarshall@16 = NdrConformantStringUnmarshall +_NdrConformantStructBufferSize@12 = NdrConformantStructBufferSize +_NdrConformantStructFree@12 = NdrConformantStructFree +_NdrConformantStructMarshall@12 = NdrConformantStructMarshall +_NdrConformantStructMemorySize@8 = NdrConformantStructMemorySize +_NdrConformantStructUnmarshall@16 = NdrConformantStructUnmarshall +_NdrConformantVaryingArrayBufferSize@12 = NdrConformantVaryingArrayBufferSize +_NdrConformantVaryingArrayFree@12 = NdrConformantVaryingArrayFree +_NdrConformantVaryingArrayMarshall@12 = NdrConformantVaryingArrayMarshall +_NdrConformantVaryingArrayMemorySize@8 = NdrConformantVaryingArrayMemorySize +_NdrConformantVaryingArrayUnmarshall@16 = NdrConformantVaryingArrayUnmarshall +_NdrConformantVaryingStructBufferSize@12 = NdrConformantVaryingStructBufferSize +_NdrConformantVaryingStructFree@12 = NdrConformantVaryingStructFree +_NdrConformantVaryingStructMarshall@12 = NdrConformantVaryingStructMarshall +_NdrConformantVaryingStructMemorySize@8 = NdrConformantVaryingStructMemorySize +_NdrConformantVaryingStructUnmarshall@16 = NdrConformantVaryingStructUnmarshall +_NdrContextHandleInitialize@8 = NdrContextHandleInitialize +_NdrContextHandleSize@12 = NdrContextHandleSize +_NdrConvert@8 = NdrConvert +_NdrConvert2@12 = NdrConvert2 +_NdrCorrelationFree@4 = NdrCorrelationFree +_NdrCorrelationInitialize@16 = NdrCorrelationInitialize +_NdrCorrelationPass@4 = NdrCorrelationPass +_NdrCStdStubBuffer_Release@8 = NdrCStdStubBuffer_Release +_NdrCStdStubBuffer2_Release@8 = NdrCStdStubBuffer2_Release +_NdrDcomAsyncClientCall = NdrDcomAsyncClientCall +_NdrDcomAsyncStubCall@16 = NdrDcomAsyncStubCall +_NdrDllCanUnloadNow@4 = NdrDllCanUnloadNow +_NdrDllGetClassObject@24 = NdrDllGetClassObject +_NdrDllRegisterProxy@12 = NdrDllRegisterProxy +_NdrDllUnregisterProxy@12 = NdrDllUnregisterProxy +_NdrEncapsulatedUnionBufferSize@12 = NdrEncapsulatedUnionBufferSize +_NdrEncapsulatedUnionFree@12 = NdrEncapsulatedUnionFree +_NdrEncapsulatedUnionMarshall@12 = NdrEncapsulatedUnionMarshall +_NdrEncapsulatedUnionMemorySize@8 = NdrEncapsulatedUnionMemorySize +_NdrEncapsulatedUnionUnmarshall@16 = NdrEncapsulatedUnionUnmarshall +_NdrFixedArrayBufferSize@12 = NdrFixedArrayBufferSize +_NdrFixedArrayFree@12 = NdrFixedArrayFree +_NdrFixedArrayMarshall@12 = NdrFixedArrayMarshall +_NdrFixedArrayMemorySize@8 = NdrFixedArrayMemorySize +_NdrFixedArrayUnmarshall@16 = NdrFixedArrayUnmarshall +_NdrFreeBuffer@4 = NdrFreeBuffer +_NdrFullPointerFree@8 = NdrFullPointerFree +_NdrFullPointerInsertRefId@12 = NdrFullPointerInsertRefId +_NdrFullPointerQueryPointer@16 = NdrFullPointerQueryPointer +_NdrFullPointerQueryRefId@16 = NdrFullPointerQueryRefId +_NdrFullPointerXlatFree@4 = NdrFullPointerXlatFree +_NdrFullPointerXlatInit@8 = NdrFullPointerXlatInit +_NdrGetBuffer@12 = NdrGetBuffer +_NdrGetDcomProtocolVersion@8 = NdrGetDcomProtocolVersion +_NdrGetPipeBuffer@12 = NdrGetPipeBuffer +_NdrGetPartialBuffer@4 = NdrGetPartialBuffer +_NdrGetUserMarshalInfo@12 = NdrGetUserMarshalInfo +_NdrInterfacePointerBufferSize@12 = NdrInterfacePointerBufferSize +_NdrInterfacePointerFree@12 = NdrInterfacePointerFree +_NdrInterfacePointerMarshall@12 = NdrInterfacePointerMarshall +_NdrInterfacePointerMemorySize@8 = NdrInterfacePointerMemorySize +_NdrInterfacePointerUnmarshall@16 = NdrInterfacePointerUnmarshall +_NdrIsAppDoneWithPipes@4 = NdrIsAppDoneWithPipes +_NdrMapCommAndFaultStatus@16 = NdrMapCommAndFaultStatus +_NdrMarkNextActivePipe@4 = NdrMarkNextActivePipe +_NdrMesProcEncodeDecode = NdrMesProcEncodeDecode +_NdrMesProcEncodeDecode2 = NdrMesProcEncodeDecode2 +_NdrMesSimpleTypeAlignSize@4 = NdrMesSimpleTypeAlignSize +_NdrMesSimpleTypeDecode@12 = NdrMesSimpleTypeDecode +_NdrMesSimpleTypeEncode@16 = NdrMesSimpleTypeEncode +_NdrMesTypeAlignSize@16 = NdrMesTypeAlignSize +_NdrMesTypeDecode@16 = NdrMesTypeDecode +_NdrMesTypeEncode@16 = NdrMesTypeEncode +_NdrMesTypeAlignSize2@20 = NdrMesTypeAlignSize2 +_NdrMesTypeDecode2@20 = NdrMesTypeDecode2 +_NdrMesTypeEncode2@20 = NdrMesTypeEncode2 +_NdrMesTypeFree2@20 = NdrMesTypeFree2 +_NdrNonConformantStringBufferSize@12 = NdrNonConformantStringBufferSize +_NdrNonConformantStringMarshall@12 = NdrNonConformantStringMarshall +_NdrNonConformantStringMemorySize@8 = NdrNonConformantStringMemorySize +_NdrNonConformantStringUnmarshall@16 = NdrNonConformantStringUnmarshall +_NdrNonEncapsulatedUnionBufferSize@12 = NdrNonEncapsulatedUnionBufferSize +_NdrNonEncapsulatedUnionFree@12 = NdrNonEncapsulatedUnionFree +_NdrNonEncapsulatedUnionMarshall@12 = NdrNonEncapsulatedUnionMarshall +_NdrNonEncapsulatedUnionMemorySize@8 = NdrNonEncapsulatedUnionMemorySize +_NdrNonEncapsulatedUnionUnmarshall@16 = NdrNonEncapsulatedUnionUnmarshall +_NdrNsGetBuffer@12 = NdrNsGetBuffer +_NdrNsSendReceive@12 = NdrNsSendReceive +_NdrOleAllocate@4 = NdrOleAllocate +_NdrOleFree@4 = NdrOleFree +_NdrPipePull@16 = NdrPipePull +_NdrPipePush@12 = NdrPipePush +_NdrPipeSendReceive@8 = NdrPipeSendReceive +_NdrPipesInitialize@24 = NdrPipesInitialize +_NdrPipesDone@4 = NdrPipesDone +_NdrPointerBufferSize@12 = NdrPointerBufferSize +_NdrPointerFree@12 = NdrPointerFree +_NdrPointerMarshall@12 = NdrPointerMarshall +_NdrPointerMemorySize@8 = NdrPointerMemorySize +_NdrPointerUnmarshall@16 = NdrPointerUnmarshall +_NdrProxyErrorHandler@4 = NdrProxyErrorHandler +_NdrProxyFreeBuffer@8 = NdrProxyFreeBuffer +_NdrProxyGetBuffer@8 = NdrProxyGetBuffer +_NdrProxyInitialize@20 = NdrProxyInitialize +_NdrProxySendReceive@8 = NdrProxySendReceive +_NdrRangeUnmarshall@16 = NdrRangeUnmarshall +_NdrRpcSmClientAllocate@4 = NdrRpcSmClientAllocate +_NdrRpcSmClientFree@4 = NdrRpcSmClientFree +_NdrRpcSsDefaultAllocate@4 = NdrRpcSsDefaultAllocate +_NdrRpcSsDefaultFree@4 = NdrRpcSsDefaultFree +_NdrRpcSmSetClientToOsf@4 = NdrRpcSmSetClientToOsf +_NdrRpcSsDisableAllocate@4 = NdrRpcSsDisableAllocate +_NdrRpcSsEnableAllocate@4 = NdrRpcSsEnableAllocate +_NdrSendReceive@8 = NdrSendReceive +_NdrServerCall@4 = NdrServerCall +_NdrServerCall2@4 = NdrServerCall2 +_NdrServerContextMarshall@12 = NdrServerContextMarshall +_NdrServerContextUnmarshall@4 = NdrServerContextUnmarshall +_NdrServerContextNewMarshall@16 = NdrServerContextNewMarshall +_NdrServerContextNewUnmarshall@8 = NdrServerContextNewUnmarshall +_NdrServerInitialize@12 = NdrServerInitialize +_NdrServerInitializeMarshall@8 = NdrServerInitializeMarshall +_NdrServerInitializeNew@12 = NdrServerInitializeNew +_NdrServerInitializePartial@16 = NdrServerInitializePartial +_NdrServerInitializeUnmarshall@12 = NdrServerInitializeUnmarshall +_NdrServerMarshall@16 = NdrServerMarshall +_NdrServerUnmarshall@24 = NdrServerUnmarshall +_NdrSimpleStructBufferSize@12 = NdrSimpleStructBufferSize +_NdrSimpleStructFree@12 = NdrSimpleStructFree +_NdrSimpleStructMarshall@12 = NdrSimpleStructMarshall +_NdrSimpleStructMemorySize@8 = NdrSimpleStructMemorySize +_NdrSimpleStructUnmarshall@16 = NdrSimpleStructUnmarshall +_NdrSimpleTypeMarshall@12 = NdrSimpleTypeMarshall +_NdrSimpleTypeUnmarshall@12 = NdrSimpleTypeUnmarshall +_NdrStubCall@16 = NdrStubCall +_NdrStubCall2@16 = NdrStubCall2 +_NdrStubForwardingFunction@16 = NdrStubForwardingFunction +_NdrStubGetBuffer@12 = NdrStubGetBuffer +_NdrStubInitialize@16 = NdrStubInitialize +_NdrStubInitializeMarshall@12 = NdrStubInitializeMarshall +_NdrVaryingArrayBufferSize@12 = NdrVaryingArrayBufferSize +_NdrVaryingArrayFree@12 = NdrVaryingArrayFree +_NdrVaryingArrayMarshall@12 = NdrVaryingArrayMarshall +_NdrVaryingArrayMemorySize@8 = NdrVaryingArrayMemorySize +_NdrVaryingArrayUnmarshall@16 = NdrVaryingArrayUnmarshall +_NdrXmitOrRepAsBufferSize@12 = NdrXmitOrRepAsBufferSize +_NdrXmitOrRepAsFree@12 = NdrXmitOrRepAsFree +_NdrXmitOrRepAsMarshall@12 = NdrXmitOrRepAsMarshall +_NdrXmitOrRepAsMemorySize@8 = NdrXmitOrRepAsMemorySize +_NdrXmitOrRepAsUnmarshall@16 = NdrXmitOrRepAsUnmarshall +_NdrUserMarshalSimpleTypeConvert@12 = NdrUserMarshalSimpleTypeConvert +_NdrUserMarshalBufferSize@12 = NdrUserMarshalBufferSize +_NdrUserMarshalFree@12 = NdrUserMarshalFree +_NdrUserMarshalMarshall@12 = NdrUserMarshalMarshall +_NdrUserMarshalMemorySize@8 = NdrUserMarshalMemorySize +_NdrUserMarshalUnmarshall@16 = NdrUserMarshalUnmarshall +_RpcAsyncAbortCall@8 = RpcAsyncAbortCall +_RpcAsyncCancelCall@8 = RpcAsyncCancelCall +_RpcAsyncCompleteCall@8 = RpcAsyncCompleteCall +_RpcAsyncGetCallStatus@4 = RpcAsyncGetCallStatus +_RpcAsyncInitializeHandle@8 = RpcAsyncInitializeHandle +_RpcAsyncRegisterInfo@4 = RpcAsyncRegisterInfo +_RpcBindingCopy@8 = RpcBindingCopy +_RpcBindingFree@4 = RpcBindingFree +_RpcBindingFromStringBindingA@8 = RpcBindingFromStringBindingA +_RpcBindingFromStringBindingW@8 = RpcBindingFromStringBindingW +_RpcBindingInqAuthClientA@24 = RpcBindingInqAuthClientA +_RpcBindingInqAuthClientW@24 = RpcBindingInqAuthClientW +_RpcBindingInqAuthClientExA@28 = RpcBindingInqAuthClientExA +_RpcBindingInqAuthClientExW@28 = RpcBindingInqAuthClientExW +_RpcBindingInqAuthInfoA@24 = RpcBindingInqAuthInfoA +_RpcBindingInqAuthInfoExA@32 = RpcBindingInqAuthInfoExA +_RpcBindingInqAuthInfoExW@32 = RpcBindingInqAuthInfoExW +_RpcBindingInqAuthInfoW@24 = RpcBindingInqAuthInfoW +_RpcBindingInqObject@8 = RpcBindingInqObject +_RpcBindingReset@4 = RpcBindingReset +_RpcBindingServerFromClient@8 = RpcBindingServerFromClient +_RpcBindingSetAuthInfoA@24 = RpcBindingSetAuthInfoA +_RpcBindingSetAuthInfoExA@28 = RpcBindingSetAuthInfoExA +_RpcBindingSetAuthInfoExW@28 = RpcBindingSetAuthInfoExW +_RpcBindingSetAuthInfoW@24 = RpcBindingSetAuthInfoW +_RpcBindingSetObject@8 = RpcBindingSetObject +_RpcBindingSetOption@12 = RpcBindingSetOption +_RpcBindingInqOption@12 = RpcBindingInqOption +_RpcBindingToStringBindingA@8 = RpcBindingToStringBindingA +_RpcBindingToStringBindingW@8 = RpcBindingToStringBindingW +_RpcBindingVectorFree@4 = RpcBindingVectorFree +_RpcCancelThread@4 = RpcCancelThread +_RpcCancelThreadEx@8 = RpcCancelThreadEx +_RpcCertGeneratePrincipalNameA@12 = RpcCertGeneratePrincipalNameA +_RpcCertGeneratePrincipalNameW@12 = RpcCertGeneratePrincipalNameW +_RpcEpRegisterA@16 = RpcEpRegisterA +_RpcEpRegisterNoReplaceA@16 = RpcEpRegisterNoReplaceA +_RpcEpRegisterNoReplaceW@16 = RpcEpRegisterNoReplaceW +_RpcEpRegisterW@16 = RpcEpRegisterW +_RpcEpResolveBinding@8 = RpcEpResolveBinding +_RpcEpUnregister@12 = RpcEpUnregister +_RpcIfIdVectorFree@4 = RpcIfIdVectorFree +_RpcIfInqId@8 = RpcIfInqId +_RpcImpersonateClient@4 = RpcImpersonateClient +_RpcMgmtEnableIdleCleanup@0 = RpcMgmtEnableIdleCleanup +_RpcMgmtEpEltInqBegin@24 = RpcMgmtEpEltInqBegin +_RpcMgmtEpEltInqDone@4 = RpcMgmtEpEltInqDone +_RpcMgmtEpEltInqNextA@20 = RpcMgmtEpEltInqNextA +_RpcMgmtEpEltInqNextW@20 = RpcMgmtEpEltInqNextW +_RpcMgmtEpUnregister@16 = RpcMgmtEpUnregister +_RpcMgmtInqComTimeout@8 = RpcMgmtInqComTimeout +_RpcMgmtInqDefaultProtectLevel@8 = RpcMgmtInqDefaultProtectLevel +_RpcMgmtInqIfIds@8 = RpcMgmtInqIfIds +_RpcMgmtInqServerPrincNameA@12 = RpcMgmtInqServerPrincNameA +_RpcMgmtInqServerPrincNameW@12 = RpcMgmtInqServerPrincNameW +_RpcMgmtInqStats@8 = RpcMgmtInqStats +_RpcMgmtIsServerListening@4 = RpcMgmtIsServerListening +_RpcMgmtSetAuthorizationFn@4 = RpcMgmtSetAuthorizationFn +_RpcMgmtSetCancelTimeout@4 = RpcMgmtSetCancelTimeout +_RpcMgmtSetComTimeout@8 = RpcMgmtSetComTimeout +_RpcMgmtSetServerStackSize@4 = RpcMgmtSetServerStackSize +_RpcMgmtStatsVectorFree@4 = RpcMgmtStatsVectorFree +_RpcMgmtStopServerListening@4 = RpcMgmtStopServerListening +_RpcMgmtWaitServerListen@0 = RpcMgmtWaitServerListen +_RpcNetworkInqProtseqsA@4 = RpcNetworkInqProtseqsA +_RpcNetworkInqProtseqsW@4 = RpcNetworkInqProtseqsW +_RpcNetworkIsProtseqValidA@4 = RpcNetworkIsProtseqValidA +_RpcNetworkIsProtseqValidW@4 = RpcNetworkIsProtseqValidW +_RpcNsBindingInqEntryNameA@12 = RpcNsBindingInqEntryNameA +_RpcNsBindingInqEntryNameW@12 = RpcNsBindingInqEntryNameW +_RpcObjectInqType@8 = RpcObjectInqType +_RpcObjectSetInqFn@4 = RpcObjectSetInqFn +_RpcObjectSetType@8 = RpcObjectSetType +_RpcProtseqVectorFreeA@4 = RpcProtseqVectorFreeA +_RpcProtseqVectorFreeW@4 = RpcProtseqVectorFreeW +_RpcRaiseException@4 = RpcRaiseException +_RpcRevertToSelf@0 = RpcRevertToSelf +_RpcRevertToSelfEx@4 = RpcRevertToSelfEx +_RpcServerInqBindings@4 = RpcServerInqBindings +_RpcServerInqDefaultPrincNameA@8 = RpcServerInqDefaultPrincNameA +_RpcServerInqDefaultPrincNameW@8 = RpcServerInqDefaultPrincNameW +_RpcServerInqIf@12 = RpcServerInqIf +_RpcServerListen@12 = RpcServerListen +_RpcServerRegisterAuthInfoA@16 = RpcServerRegisterAuthInfoA +_RpcServerRegisterAuthInfoW@16 = RpcServerRegisterAuthInfoW +_RpcServerRegisterIf@12 = RpcServerRegisterIf +_RpcServerRegisterIf2@28 = RpcServerRegisterIf2 +_RpcServerRegisterIfEx@24 = RpcServerRegisterIfEx +_RpcServerTestCancel@4 = RpcServerTestCancel +_RpcServerUnregisterIf@12 = RpcServerUnregisterIf +_RpcServerUseAllProtseqs@8 = RpcServerUseAllProtseqs +_RpcServerUseAllProtseqsEx@12 = RpcServerUseAllProtseqsEx +_RpcServerUseAllProtseqsIf@12 = RpcServerUseAllProtseqsIf +_RpcServerUseAllProtseqsIfEx@16 = RpcServerUseAllProtseqsIfEx +_RpcServerUseProtseqA@12 = RpcServerUseProtseqA +_RpcServerUseProtseqExA@16 = RpcServerUseProtseqExA +_RpcServerUseProtseqEpA@16 = RpcServerUseProtseqEpA +_RpcServerUseProtseqEpExA@20 = RpcServerUseProtseqEpExA +_RpcServerUseProtseqEpW@16 = RpcServerUseProtseqEpW +_RpcServerUseProtseqEpExW@20 = RpcServerUseProtseqEpExW +_RpcServerUseProtseqIfA@16 = RpcServerUseProtseqIfA +_RpcServerUseProtseqIfExA@20 = RpcServerUseProtseqIfExA +_RpcServerUseProtseqIfW@16 = RpcServerUseProtseqIfW +_RpcServerUseProtseqIfExW@20 = RpcServerUseProtseqIfExW +_RpcServerUseProtseqW@12 = RpcServerUseProtseqW +_RpcServerUseProtseqExW@16 = RpcServerUseProtseqExW +_RpcServerYield@0 = RpcServerYield +_RpcSmAllocate@8 = RpcSmAllocate +_RpcSmClientFree@4 = RpcSmClientFree +_RpcSmDestroyClientContext@4 = RpcSmDestroyClientContext +_RpcSmDisableAllocate@0 = RpcSmDisableAllocate +_RpcSmEnableAllocate@0 = RpcSmEnableAllocate +_RpcSmFree@4 = RpcSmFree +_RpcSmGetThreadHandle@4 = RpcSmGetThreadHandle +_RpcSmSetClientAllocFree@8 = RpcSmSetClientAllocFree +_RpcSmSetThreadHandle@4 = RpcSmSetThreadHandle +_RpcSmSwapClientAllocFree@16 = RpcSmSwapClientAllocFree +_RpcSsAllocate@4 = RpcSsAllocate +_RpcSsDestroyClientContext@4 = RpcSsDestroyClientContext +_RpcSsDisableAllocate@0 = RpcSsDisableAllocate +_RpcSsDontSerializeContext@0 = RpcSsDontSerializeContext +_RpcSsEnableAllocate@0 = RpcSsEnableAllocate +_RpcSsFree@4 = RpcSsFree +_RpcSsGetContextBinding@8 = RpcSsGetContextBinding +_RpcSsGetThreadHandle@0 = RpcSsGetThreadHandle +_RpcSsSetClientAllocFree@8 = RpcSsSetClientAllocFree +_RpcSsSetThreadHandle@4 = RpcSsSetThreadHandle +_RpcSsSwapClientAllocFree@16 = RpcSsSwapClientAllocFree +_RpcStringBindingComposeA@24 = RpcStringBindingComposeA +_RpcStringBindingComposeW@24 = RpcStringBindingComposeW +_RpcStringBindingParseA@24 = RpcStringBindingParseA +_RpcStringBindingParseW@24 = RpcStringBindingParseW +_RpcStringFreeA@4 = RpcStringFreeA +_RpcStringFreeW@4 = RpcStringFreeW +_RpcTestCancel@0 = RpcTestCancel +_TowerConstruct@24 = TowerConstruct +_TowerExplode@24 = TowerExplode +_UuidCompare@12 = UuidCompare +_UuidCreate@4 = UuidCreate +_UuidCreateNil@4 = UuidCreateNil +_UuidCreateSequential@4 = UuidCreateSequential +_UuidEqual@12 = UuidEqual +_UuidFromStringA@8 = UuidFromStringA +_UuidFromStringW@8 = UuidFromStringW +_UuidHash@8 = UuidHash +_UuidIsNil@8 = UuidIsNil +_UuidToStringA@8 = UuidToStringA +_UuidToStringW@8 = UuidToStringW +_char_array_from_ndr@16 = char_array_from_ndr +_char_from_ndr@8 = char_from_ndr +_data_from_ndr@16 = data_from_ndr +_data_into_ndr@16 = data_into_ndr +_data_size_ndr@16 = data_size_ndr +_double_array_from_ndr@16 = double_array_from_ndr +_double_from_ndr@8 = double_from_ndr +_enum_from_ndr@8 = enum_from_ndr +_float_array_from_ndr@16 = float_array_from_ndr +_float_from_ndr@8 = float_from_ndr +_long_array_from_ndr@16 = long_array_from_ndr +_long_from_ndr@8 = long_from_ndr +_long_from_ndr_temp@12 = long_from_ndr_temp +_short_array_from_ndr@16 = short_array_from_ndr +_short_from_ndr@8 = short_from_ndr +_short_from_ndr_temp@12 = short_from_ndr_temp +_tree_into_ndr@16 = tree_into_ndr +_tree_peek_ndr@16 = tree_peek_ndr +_tree_size_ndr@16 = tree_size_ndr +_RpcInitializeAsyncHandle@8 = RpcInitializeAsyncHandle +_RpcRegisterAsyncInfo@4 = RpcRegisterAsyncInfo +_RpcGetAsyncCallStatus@4 = RpcGetAsyncCallStatus +_RpcCompleteAsyncCall@8 = RpcCompleteAsyncCall +_RpcAbortAsyncCall@8 = RpcAbortAsyncCall +_RpcCancelAsyncCall@8 = RpcCancelAsyncCall +_I_RpcSetAsyncHandle@8 = I_RpcSetAsyncHandle +_I_RpcAbortAsyncCall@8 = I_RpcAbortAsyncCall +_GlobalMutexRequestExternal@0 = GlobalMutexRequestExternal +_GlobalMutexClearExternal@0 = GlobalMutexClearExternal +_NdrpSetRpcSsDefaults@8 = NdrpSetRpcSsDefaults@8 diff --git a/def/shell32.def b/def/shell32.def index ea89b03c6e..fb3bea0add 100644 --- a/def/shell32.def +++ b/def/shell32.def @@ -1,252 +1,252 @@ -LIBRARY shell32 -EXETYPE NT -SUBSYSTEM WINDOWS -EXPORTS -_WriteCabinetState@4 = WriteCabinetState -_Win32DeleteFile@4 = Win32DeleteFile -_WOWShellExecute@28 = WOWShellExecute -_SignalFileOpen@4 = SignalFileOpen -_Shell_NotifyIconW@8 = Shell_NotifyIconW -_Shell_NotifyIconA@8 = Shell_NotifyIconA -_Shell_NotifyIcon@8 = Shell_NotifyIcon -_Shell_MergeMenus@24 = Shell_MergeMenus -_Shell_GetImageLists@8 = Shell_GetImageLists -_Shell_GetCachedImageIndex@12 = Shell_GetCachedImageIndex -_ShellMessageBoxW = ShellMessageBoxW -_ShellMessageBoxA = ShellMessageBoxA -_ShellHookProc@12 = ShellHookProc -_ShellExecuteW@24 = ShellExecuteW -_ShellExecuteExW@4 = ShellExecuteExW -_ShellExecuteExA@4 = ShellExecuteExA -_ShellExecuteEx@4 = ShellExecuteEx -_ShellExecuteA@24 = ShellExecuteA -_ShellAboutW@16 = ShellAboutW -_ShellAboutA@16 = ShellAboutA -_SheShortenPathW@8 = SheShortenPathW -_SheShortenPathA@8 = SheShortenPathA -_SheSetCurDrive@4 = SheSetCurDrive -_SheRemoveQuotesW@4 = SheRemoveQuotesW -_SheRemoveQuotesA@4 = SheRemoveQuotesA -_SheGetPathOffsetW@4 = SheGetPathOffsetW -_SheGetDirW@8 = SheGetDirW -_SheGetDirExW@12 = SheGetDirExW -_SheGetDirA@8 = SheGetDirA -_SheGetCurDrive@0 = SheGetCurDrive -_SheFullPathW@12 = SheFullPathW -_SheFullPathA@12 = SheFullPathA -_SheConvertPathW@12 = SheConvertPathW -_SheChangeDirW@4 = SheChangeDirW -_SheChangeDirExW@4 = SheChangeDirExW -_SheChangeDirExA@4 = SheChangeDirExA -_SheChangeDirA@4 = SheChangeDirA -_SHValidateUNC@12 = SHValidateUNC -_SHUpdateRecycleBinIcon@0 = SHUpdateRecycleBinIcon -_SHUpdateImageW@16 = SHUpdateImageW -_SHUpdateImageA@16 = SHUpdateImageA -_SHUnlockShared@4 = SHUnlockShared -_SHTestTokenMembership@8 = SHTestTokenMembership -_SHStartNetConnectionDialogW@12 = SHStartNetConnectionDialogW -_SHSimpleIDListFromPath@4 = SHSimpleIDListFromPath -_SHShellFolderView_Message@12 = SHShellFolderView_Message -_SHSetUnreadMailCountW@12 = SHSetUnreadMailCountW -_SHSetLocalizedName@12 = SHSetLocalizedName -_SHSetInstanceExplorer@4 = SHSetInstanceExplorer -_SHRunControlPanel@8 = SHRunControlPanel -_SHRestricted@4 = SHRestricted -_SHReplaceFromPropSheetExtArray@16 = SHReplaceFromPropSheetExtArray -_SHQueryRecycleBinW@8 = SHQueryRecycleBinW -_SHQueryRecycleBinA@8 = SHQueryRecycleBinA -_SHPropStgWriteMultiple@24 = SHPropStgWriteMultiple -_SHPropStgReadMultiple@20 = SHPropStgReadMultiple -_SHPropStgCreate@32 = SHPropStgCreate -_SHPathPrepareForWriteW@16 = SHPathPrepareForWriteW -_SHPathPrepareForWriteA@16 = SHPathPrepareForWriteA -_SHParseDisplayName@20 = SHParseDisplayName -_SHOpenPropSheetW@28 = SHOpenPropSheetW -_SHOpenFolderAndSelectItems@16 = SHOpenFolderAndSelectItems -_SHObjectProperties@16 = SHObjectProperties -_SHMultiFileProperties@8 = SHMultiFileProperties -_SHMapPIDLToSystemImageListIndex@12 = SHMapPIDLToSystemImageListIndex -_SHMapIDListToImageListIndexAsync@36 = SHMapIDListToImageListIndexAsync -_SHLockShared@8 = SHLockShared -_SHLoadOLE@4 = SHLoadOLE -_SHLoadNonloadedIconOverlayIdentifiers@0 = SHLoadNonloadedIconOverlayIdentifiers -_SHLoadInProc@4 = SHLoadInProc -_SHLimitInputEdit@8 = SHLimitInputEdit -_SHIsFileAvailableOffline@8 = SHIsFileAvailableOffline -_SHInvokePrinterCommandW@20 = SHInvokePrinterCommandW -_SHInvokePrinterCommandA@20 = SHInvokePrinterCommandA -_SHILCreateFromPath@12 = SHILCreateFromPath -_SHHandleUpdateImage@4 = SHHandleUpdateImage -_SHGetUnreadMailCountW@24 = SHGetUnreadMailCountW -_SHGetSpecialFolderPathW@16 = SHGetSpecialFolderPathW -_SHGetSpecialFolderPathA@16 = SHGetSpecialFolderPathA -_SHGetSpecialFolderPath@16 = SHGetSpecialFolderPath -_SHGetSpecialFolderLocation@12 = SHGetSpecialFolderLocation -_SHGetShellStyleHInstance@0 = SHGetShellStyleHInstance -_SHGetSettings@8 = SHGetSettings -_SHGetSetSettings@12 = SHGetSetSettings -_SHGetSetFolderCustomSettingsW@12 = SHGetSetFolderCustomSettingsW -_SHGetRealIDL@12 = SHGetRealIDL -_SHGetPathFromIDListW@8 = SHGetPathFromIDListW -_SHGetPathFromIDListA@8 = SHGetPathFromIDListA -_SHGetPathFromIDList@8 = SHGetPathFromIDList -_SHGetNewLinkInfoW@20 = SHGetNewLinkInfoW -_SHGetNewLinkInfoA@20 = SHGetNewLinkInfoA -_SHGetNewLinkInfo@20 = SHGetNewLinkInfo -_SHGetMalloc@4 = SHGetMalloc -_SHGetInstanceExplorer@4 = SHGetInstanceExplorer -_SHGetIconOverlayIndexW@8 = SHGetIconOverlayIndexW -_SHGetIconOverlayIndexA@8 = SHGetIconOverlayIndexA -_SHGetFolderPathW@20 = SHGetFolderPathW -_SHGetFolderPathAndSubDirW@24 = SHGetFolderPathAndSubDirW -_SHGetFolderPathAndSubDirA@24 = SHGetFolderPathAndSubDirA -_SHGetFolderPathA@20 = SHGetFolderPathA -_SHGetFolderLocation@20 = SHGetFolderLocation -_SHGetFileInfoW@20 = SHGetFileInfoW -_SHGetFileInfoA@20 = SHGetFileInfoA -_SHGetFileInfo@20 = SHGetFileInfo -_SHGetDiskFreeSpaceExW@16 = SHGetDiskFreeSpaceExW -_SHGetDiskFreeSpaceExA@16 = SHGetDiskFreeSpaceExA -_SHGetDiskFreeSpaceA@16 = SHGetDiskFreeSpaceA -_SHGetDesktopFolder@4 = SHGetDesktopFolder -_SHGetDataFromIDListW@20 = SHGetDataFromIDListW -_SHGetDataFromIDListA@20 = SHGetDataFromIDListA -_SHGetAttributesFromDataObject@16 = SHGetAttributesFromDataObject -_SHFreeShared@8 = SHFreeShared -_SHFreeNameMappings@4 = SHFreeNameMappings -_SHFree@4 = SHFree -_SHFormatDrive@16 = SHFormatDrive -_SHFlushSFCache@0 = SHFlushSFCache -_SHFlushClipboard@0 = SHFlushClipboard -_SHFind_InitMenuPopup@16 = SHFind_InitMenuPopup -_SHFindFiles@8 = SHFindFiles -_SHFileOperationW@4 = SHFileOperationW -_SHFileOperationA@4 = SHFileOperationA -_SHFileOperation@4 = SHFileOperation -_SHExtractIconsW@32 = SHExtractIconsW -_SHEnumerateUnreadMailAccountsW@16 = SHEnumerateUnreadMailAccountsW -_SHEmptyRecycleBinW@12 = SHEmptyRecycleBinW -_SHEmptyRecycleBinA@12 = SHEmptyRecycleBinA -_SHDoDragDrop@20 = SHDoDragDrop -_SHDestroyPropSheetExtArray@4 = SHDestroyPropSheetExtArray -_SHDefExtractIconW@24 = SHDefExtractIconW -_SHDefExtractIconA@24 = SHDefExtractIconA -_SHCreateStdEnumFmtEtc@12 = SHCreateStdEnumFmtEtc -_SHCreateShellItem@16 = SHCreateShellItem -_SHCreateShellFolderViewEx@8 = SHCreateShellFolderViewEx -_SHCreateShellFolderView@8 = SHCreateShellFolderView -_SHCreateQueryCancelAutoPlayMoniker@4 = SHCreateQueryCancelAutoPlayMoniker -_SHCreatePropSheetExtArray@12 = SHCreatePropSheetExtArray -_SHCreateProcessAsUserW@4 = SHCreateProcessAsUserW -_SHCreateFileExtractIconW@16 = SHCreateFileExtractIconW -_SHCreateDirectoryExW@12 = SHCreateDirectoryExW -_SHCreateDirectoryExA@12 = SHCreateDirectoryExA -_SHCreateDirectory@8 = SHCreateDirectory -_SHCoCreateInstance@20 = SHCoCreateInstance -_SHCloneSpecialIDList@12 = SHCloneSpecialIDList -_SHChangeNotifyRegister@24 = SHChangeNotifyRegister -_SHChangeNotifyDeregister@4 = SHChangeNotifyDeregister -_SHChangeNotify@16 = SHChangeNotify -_SHChangeNotification_Unlock@4 = SHChangeNotification_Unlock -_SHChangeNotification_Lock@16 = SHChangeNotification_Lock -_SHCLSIDFromString@8 = SHCLSIDFromString -_SHBrowseForFolderW@4 = SHBrowseForFolderW -_SHBrowseForFolderA@4 = SHBrowseForFolderA -_SHBrowseForFolder@4 = SHBrowseForFolder -_SHBindToParent@16 = SHBindToParent -_SHAppBarMessage@8 = SHAppBarMessage -_SHAllocShared@12 = SHAllocShared -_SHAlloc@4 = SHAlloc -_SHAddToRecentDocs@8 = SHAddToRecentDocs -_SHAddFromPropSheetExtArray@12 = SHAddFromPropSheetExtArray -_RestartDialogEx@16 = RestartDialogEx -_RestartDialog@12 = RestartDialog -_RegenerateUserEnvironment@8 = RegenerateUserEnvironment -_RealShellExecuteW@40 = RealShellExecuteW -_RealShellExecuteExW@44 = RealShellExecuteExW -_RealShellExecuteExA@44 = RealShellExecuteExA -_RealShellExecuteA@40 = RealShellExecuteA -_RealDriveType@8 = RealDriveType -_ReadCabinetState@8 = ReadCabinetState -_PifMgr_SetProperties@20 = PifMgr_SetProperties -_PifMgr_OpenProperties@16 = PifMgr_OpenProperties -_PifMgr_GetProperties@20 = PifMgr_GetProperties -_PifMgr_CloseProperties@8 = PifMgr_CloseProperties -_PickIconDlg@16 = PickIconDlg -_PathYetAnotherMakeUniqueName@16 = PathYetAnotherMakeUniqueName -_PathResolve@12 = PathResolve -_PathQualify@4 = PathQualify -_PathProcessCommand@16 = PathProcessCommand -_PathMakeUniqueName@20 = PathMakeUniqueName -_PathIsSlowW@8 = PathIsSlowW -_PathIsSlowA@8 = PathIsSlowA -_PathIsExe@4 = PathIsExe -_PathGetShortPath@4 = PathGetShortPath -_PathCleanupSpec@8 = PathCleanupSpec -_OpenRegStream@16 = OpenRegStream -_IsUserAnAdmin@0 = IsUserAnAdmin -_IsNetDrive@4 = IsNetDrive -_IsLFNDriveW@4 = IsLFNDriveW -_IsLFNDriveA@4 = IsLFNDriveA -_IsLFNDrive@4 = IsLFNDrive -_InternalExtractIconListW@12 = InternalExtractIconListW -_InternalExtractIconListA@12 = InternalExtractIconListA -_ILSaveToStream@8 = ILSaveToStream -_ILRemoveLastID@4 = ILRemoveLastID -_ILLoadFromStream@8 = ILLoadFromStream -_ILIsParent@12 = ILIsParent -_ILIsEqual@8 = ILIsEqual -_ILGetSize@4 = ILGetSize -_ILGetNext@4 = ILGetNext -_ILFree@4 = ILFree -_ILFindLastID@4 = ILFindLastID -_ILFindChild@8 = ILFindChild -_ILCreateFromPathW@4 = ILCreateFromPathW -_ILCreateFromPathA@4 = ILCreateFromPathA -_ILCreateFromPath@4 = ILCreateFromPath -_ILCombine@8 = ILCombine -_ILCloneFirst@4 = ILCloneFirst -_ILClone@4 = ILClone -_ILAppendID@12 = ILAppendID -_GetFileNameFromBrowse@28 = GetFileNameFromBrowse -_FreeIconList@8 = FreeIconList -_FindExecutableW@12 = FindExecutableW -_FindExecutableA@12 = FindExecutableA -_FindExeDlgProc@16 = FindExeDlgProc -_ExtractVersionResource16W@8 = ExtractVersionResource16W -_ExtractIconW@12 = ExtractIconW -_ExtractIconResInfoW@20 = ExtractIconResInfoW -_ExtractIconResInfoA@20 = ExtractIconResInfoA -_ExtractIconExW@20 = ExtractIconExW -_ExtractIconExA@20 = ExtractIconExA -_ExtractIconEx@20 = ExtractIconEx -_ExtractIconA@12 = ExtractIconA -_ExtractAssociatedIconW@12 = ExtractAssociatedIconW -_ExtractAssociatedIconExW@16 = ExtractAssociatedIconExW -_ExtractAssociatedIconExA@16 = ExtractAssociatedIconExA -_ExtractAssociatedIconA@12 = ExtractAssociatedIconA -_DuplicateIcon@8 = DuplicateIcon -_DriveType@4 = DriveType -_DragQueryPoint@8 = DragQueryPoint -_DragQueryFileW@16 = DragQueryFileW -_DragQueryFileAorW@24 = DragQueryFileAorW -_DragQueryFileA@16 = DragQueryFileA -_DragQueryFile@16 = DragQueryFile -_DragFinish@4 = DragFinish -_DragAcceptFiles@8 = DragAcceptFiles -_DoEnvironmentSubstW@8 = DoEnvironmentSubstW -_DoEnvironmentSubstA@8 = DoEnvironmentSubstA -_DAD_ShowDragImage@4 = DAD_ShowDragImage -_DAD_SetDragImage@8 = DAD_SetDragImage -_DAD_DragMove@8 = DAD_DragMove -_DAD_DragLeave@0 = DAD_DragLeave -_DAD_DragEnterEx@12 = DAD_DragEnterEx -_DAD_DragEnterEx2@16 = DAD_DragEnterEx2 -_DAD_AutoScroll@12 = DAD_AutoScroll -_CommandLineToArgvW@8 = CommandLineToArgvW -_CheckEscapesW@8 = CheckEscapesW -_CheckEscapesA@8 = CheckEscapesA -_CallCPLEntry16@24 = CallCPLEntry16 -_CDefFolderMenu_Create@36 = CDefFolderMenu_Create -_CDefFolderMenu_Create2@36 = CDefFolderMenu_Create +LIBRARY shell32 +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_WriteCabinetState@4 = WriteCabinetState +_Win32DeleteFile@4 = Win32DeleteFile +_WOWShellExecute@28 = WOWShellExecute +_SignalFileOpen@4 = SignalFileOpen +_Shell_NotifyIconW@8 = Shell_NotifyIconW +_Shell_NotifyIconA@8 = Shell_NotifyIconA +_Shell_NotifyIcon@8 = Shell_NotifyIcon +_Shell_MergeMenus@24 = Shell_MergeMenus +_Shell_GetImageLists@8 = Shell_GetImageLists +_Shell_GetCachedImageIndex@12 = Shell_GetCachedImageIndex +_ShellMessageBoxW = ShellMessageBoxW +_ShellMessageBoxA = ShellMessageBoxA +_ShellHookProc@12 = ShellHookProc +_ShellExecuteW@24 = ShellExecuteW +_ShellExecuteExW@4 = ShellExecuteExW +_ShellExecuteExA@4 = ShellExecuteExA +_ShellExecuteEx@4 = ShellExecuteEx +_ShellExecuteA@24 = ShellExecuteA +_ShellAboutW@16 = ShellAboutW +_ShellAboutA@16 = ShellAboutA +_SheShortenPathW@8 = SheShortenPathW +_SheShortenPathA@8 = SheShortenPathA +_SheSetCurDrive@4 = SheSetCurDrive +_SheRemoveQuotesW@4 = SheRemoveQuotesW +_SheRemoveQuotesA@4 = SheRemoveQuotesA +_SheGetPathOffsetW@4 = SheGetPathOffsetW +_SheGetDirW@8 = SheGetDirW +_SheGetDirExW@12 = SheGetDirExW +_SheGetDirA@8 = SheGetDirA +_SheGetCurDrive@0 = SheGetCurDrive +_SheFullPathW@12 = SheFullPathW +_SheFullPathA@12 = SheFullPathA +_SheConvertPathW@12 = SheConvertPathW +_SheChangeDirW@4 = SheChangeDirW +_SheChangeDirExW@4 = SheChangeDirExW +_SheChangeDirExA@4 = SheChangeDirExA +_SheChangeDirA@4 = SheChangeDirA +_SHValidateUNC@12 = SHValidateUNC +_SHUpdateRecycleBinIcon@0 = SHUpdateRecycleBinIcon +_SHUpdateImageW@16 = SHUpdateImageW +_SHUpdateImageA@16 = SHUpdateImageA +_SHUnlockShared@4 = SHUnlockShared +_SHTestTokenMembership@8 = SHTestTokenMembership +_SHStartNetConnectionDialogW@12 = SHStartNetConnectionDialogW +_SHSimpleIDListFromPath@4 = SHSimpleIDListFromPath +_SHShellFolderView_Message@12 = SHShellFolderView_Message +_SHSetUnreadMailCountW@12 = SHSetUnreadMailCountW +_SHSetLocalizedName@12 = SHSetLocalizedName +_SHSetInstanceExplorer@4 = SHSetInstanceExplorer +_SHRunControlPanel@8 = SHRunControlPanel +_SHRestricted@4 = SHRestricted +_SHReplaceFromPropSheetExtArray@16 = SHReplaceFromPropSheetExtArray +_SHQueryRecycleBinW@8 = SHQueryRecycleBinW +_SHQueryRecycleBinA@8 = SHQueryRecycleBinA +_SHPropStgWriteMultiple@24 = SHPropStgWriteMultiple +_SHPropStgReadMultiple@20 = SHPropStgReadMultiple +_SHPropStgCreate@32 = SHPropStgCreate +_SHPathPrepareForWriteW@16 = SHPathPrepareForWriteW +_SHPathPrepareForWriteA@16 = SHPathPrepareForWriteA +_SHParseDisplayName@20 = SHParseDisplayName +_SHOpenPropSheetW@28 = SHOpenPropSheetW +_SHOpenFolderAndSelectItems@16 = SHOpenFolderAndSelectItems +_SHObjectProperties@16 = SHObjectProperties +_SHMultiFileProperties@8 = SHMultiFileProperties +_SHMapPIDLToSystemImageListIndex@12 = SHMapPIDLToSystemImageListIndex +_SHMapIDListToImageListIndexAsync@36 = SHMapIDListToImageListIndexAsync +_SHLockShared@8 = SHLockShared +_SHLoadOLE@4 = SHLoadOLE +_SHLoadNonloadedIconOverlayIdentifiers@0 = SHLoadNonloadedIconOverlayIdentifiers +_SHLoadInProc@4 = SHLoadInProc +_SHLimitInputEdit@8 = SHLimitInputEdit +_SHIsFileAvailableOffline@8 = SHIsFileAvailableOffline +_SHInvokePrinterCommandW@20 = SHInvokePrinterCommandW +_SHInvokePrinterCommandA@20 = SHInvokePrinterCommandA +_SHILCreateFromPath@12 = SHILCreateFromPath +_SHHandleUpdateImage@4 = SHHandleUpdateImage +_SHGetUnreadMailCountW@24 = SHGetUnreadMailCountW +_SHGetSpecialFolderPathW@16 = SHGetSpecialFolderPathW +_SHGetSpecialFolderPathA@16 = SHGetSpecialFolderPathA +_SHGetSpecialFolderPath@16 = SHGetSpecialFolderPath +_SHGetSpecialFolderLocation@12 = SHGetSpecialFolderLocation +_SHGetShellStyleHInstance@0 = SHGetShellStyleHInstance +_SHGetSettings@8 = SHGetSettings +_SHGetSetSettings@12 = SHGetSetSettings +_SHGetSetFolderCustomSettingsW@12 = SHGetSetFolderCustomSettingsW +_SHGetRealIDL@12 = SHGetRealIDL +_SHGetPathFromIDListW@8 = SHGetPathFromIDListW +_SHGetPathFromIDListA@8 = SHGetPathFromIDListA +_SHGetPathFromIDList@8 = SHGetPathFromIDList +_SHGetNewLinkInfoW@20 = SHGetNewLinkInfoW +_SHGetNewLinkInfoA@20 = SHGetNewLinkInfoA +_SHGetNewLinkInfo@20 = SHGetNewLinkInfo +_SHGetMalloc@4 = SHGetMalloc +_SHGetInstanceExplorer@4 = SHGetInstanceExplorer +_SHGetIconOverlayIndexW@8 = SHGetIconOverlayIndexW +_SHGetIconOverlayIndexA@8 = SHGetIconOverlayIndexA +_SHGetFolderPathW@20 = SHGetFolderPathW +_SHGetFolderPathAndSubDirW@24 = SHGetFolderPathAndSubDirW +_SHGetFolderPathAndSubDirA@24 = SHGetFolderPathAndSubDirA +_SHGetFolderPathA@20 = SHGetFolderPathA +_SHGetFolderLocation@20 = SHGetFolderLocation +_SHGetFileInfoW@20 = SHGetFileInfoW +_SHGetFileInfoA@20 = SHGetFileInfoA +_SHGetFileInfo@20 = SHGetFileInfo +_SHGetDiskFreeSpaceExW@16 = SHGetDiskFreeSpaceExW +_SHGetDiskFreeSpaceExA@16 = SHGetDiskFreeSpaceExA +_SHGetDiskFreeSpaceA@16 = SHGetDiskFreeSpaceA +_SHGetDesktopFolder@4 = SHGetDesktopFolder +_SHGetDataFromIDListW@20 = SHGetDataFromIDListW +_SHGetDataFromIDListA@20 = SHGetDataFromIDListA +_SHGetAttributesFromDataObject@16 = SHGetAttributesFromDataObject +_SHFreeShared@8 = SHFreeShared +_SHFreeNameMappings@4 = SHFreeNameMappings +_SHFree@4 = SHFree +_SHFormatDrive@16 = SHFormatDrive +_SHFlushSFCache@0 = SHFlushSFCache +_SHFlushClipboard@0 = SHFlushClipboard +_SHFind_InitMenuPopup@16 = SHFind_InitMenuPopup +_SHFindFiles@8 = SHFindFiles +_SHFileOperationW@4 = SHFileOperationW +_SHFileOperationA@4 = SHFileOperationA +_SHFileOperation@4 = SHFileOperation +_SHExtractIconsW@32 = SHExtractIconsW +_SHEnumerateUnreadMailAccountsW@16 = SHEnumerateUnreadMailAccountsW +_SHEmptyRecycleBinW@12 = SHEmptyRecycleBinW +_SHEmptyRecycleBinA@12 = SHEmptyRecycleBinA +_SHDoDragDrop@20 = SHDoDragDrop +_SHDestroyPropSheetExtArray@4 = SHDestroyPropSheetExtArray +_SHDefExtractIconW@24 = SHDefExtractIconW +_SHDefExtractIconA@24 = SHDefExtractIconA +_SHCreateStdEnumFmtEtc@12 = SHCreateStdEnumFmtEtc +_SHCreateShellItem@16 = SHCreateShellItem +_SHCreateShellFolderViewEx@8 = SHCreateShellFolderViewEx +_SHCreateShellFolderView@8 = SHCreateShellFolderView +_SHCreateQueryCancelAutoPlayMoniker@4 = SHCreateQueryCancelAutoPlayMoniker +_SHCreatePropSheetExtArray@12 = SHCreatePropSheetExtArray +_SHCreateProcessAsUserW@4 = SHCreateProcessAsUserW +_SHCreateFileExtractIconW@16 = SHCreateFileExtractIconW +_SHCreateDirectoryExW@12 = SHCreateDirectoryExW +_SHCreateDirectoryExA@12 = SHCreateDirectoryExA +_SHCreateDirectory@8 = SHCreateDirectory +_SHCoCreateInstance@20 = SHCoCreateInstance +_SHCloneSpecialIDList@12 = SHCloneSpecialIDList +_SHChangeNotifyRegister@24 = SHChangeNotifyRegister +_SHChangeNotifyDeregister@4 = SHChangeNotifyDeregister +_SHChangeNotify@16 = SHChangeNotify +_SHChangeNotification_Unlock@4 = SHChangeNotification_Unlock +_SHChangeNotification_Lock@16 = SHChangeNotification_Lock +_SHCLSIDFromString@8 = SHCLSIDFromString +_SHBrowseForFolderW@4 = SHBrowseForFolderW +_SHBrowseForFolderA@4 = SHBrowseForFolderA +_SHBrowseForFolder@4 = SHBrowseForFolder +_SHBindToParent@16 = SHBindToParent +_SHAppBarMessage@8 = SHAppBarMessage +_SHAllocShared@12 = SHAllocShared +_SHAlloc@4 = SHAlloc +_SHAddToRecentDocs@8 = SHAddToRecentDocs +_SHAddFromPropSheetExtArray@12 = SHAddFromPropSheetExtArray +_RestartDialogEx@16 = RestartDialogEx +_RestartDialog@12 = RestartDialog +_RegenerateUserEnvironment@8 = RegenerateUserEnvironment +_RealShellExecuteW@40 = RealShellExecuteW +_RealShellExecuteExW@44 = RealShellExecuteExW +_RealShellExecuteExA@44 = RealShellExecuteExA +_RealShellExecuteA@40 = RealShellExecuteA +_RealDriveType@8 = RealDriveType +_ReadCabinetState@8 = ReadCabinetState +_PifMgr_SetProperties@20 = PifMgr_SetProperties +_PifMgr_OpenProperties@16 = PifMgr_OpenProperties +_PifMgr_GetProperties@20 = PifMgr_GetProperties +_PifMgr_CloseProperties@8 = PifMgr_CloseProperties +_PickIconDlg@16 = PickIconDlg +_PathYetAnotherMakeUniqueName@16 = PathYetAnotherMakeUniqueName +_PathResolve@12 = PathResolve +_PathQualify@4 = PathQualify +_PathProcessCommand@16 = PathProcessCommand +_PathMakeUniqueName@20 = PathMakeUniqueName +_PathIsSlowW@8 = PathIsSlowW +_PathIsSlowA@8 = PathIsSlowA +_PathIsExe@4 = PathIsExe +_PathGetShortPath@4 = PathGetShortPath +_PathCleanupSpec@8 = PathCleanupSpec +_OpenRegStream@16 = OpenRegStream +_IsUserAnAdmin@0 = IsUserAnAdmin +_IsNetDrive@4 = IsNetDrive +_IsLFNDriveW@4 = IsLFNDriveW +_IsLFNDriveA@4 = IsLFNDriveA +_IsLFNDrive@4 = IsLFNDrive +_InternalExtractIconListW@12 = InternalExtractIconListW +_InternalExtractIconListA@12 = InternalExtractIconListA +_ILSaveToStream@8 = ILSaveToStream +_ILRemoveLastID@4 = ILRemoveLastID +_ILLoadFromStream@8 = ILLoadFromStream +_ILIsParent@12 = ILIsParent +_ILIsEqual@8 = ILIsEqual +_ILGetSize@4 = ILGetSize +_ILGetNext@4 = ILGetNext +_ILFree@4 = ILFree +_ILFindLastID@4 = ILFindLastID +_ILFindChild@8 = ILFindChild +_ILCreateFromPathW@4 = ILCreateFromPathW +_ILCreateFromPathA@4 = ILCreateFromPathA +_ILCreateFromPath@4 = ILCreateFromPath +_ILCombine@8 = ILCombine +_ILCloneFirst@4 = ILCloneFirst +_ILClone@4 = ILClone +_ILAppendID@12 = ILAppendID +_GetFileNameFromBrowse@28 = GetFileNameFromBrowse +_FreeIconList@8 = FreeIconList +_FindExecutableW@12 = FindExecutableW +_FindExecutableA@12 = FindExecutableA +_FindExeDlgProc@16 = FindExeDlgProc +_ExtractVersionResource16W@8 = ExtractVersionResource16W +_ExtractIconW@12 = ExtractIconW +_ExtractIconResInfoW@20 = ExtractIconResInfoW +_ExtractIconResInfoA@20 = ExtractIconResInfoA +_ExtractIconExW@20 = ExtractIconExW +_ExtractIconExA@20 = ExtractIconExA +_ExtractIconEx@20 = ExtractIconEx +_ExtractIconA@12 = ExtractIconA +_ExtractAssociatedIconW@12 = ExtractAssociatedIconW +_ExtractAssociatedIconExW@16 = ExtractAssociatedIconExW +_ExtractAssociatedIconExA@16 = ExtractAssociatedIconExA +_ExtractAssociatedIconA@12 = ExtractAssociatedIconA +_DuplicateIcon@8 = DuplicateIcon +_DriveType@4 = DriveType +_DragQueryPoint@8 = DragQueryPoint +_DragQueryFileW@16 = DragQueryFileW +_DragQueryFileAorW@24 = DragQueryFileAorW +_DragQueryFileA@16 = DragQueryFileA +_DragQueryFile@16 = DragQueryFile +_DragFinish@4 = DragFinish +_DragAcceptFiles@8 = DragAcceptFiles +_DoEnvironmentSubstW@8 = DoEnvironmentSubstW +_DoEnvironmentSubstA@8 = DoEnvironmentSubstA +_DAD_ShowDragImage@4 = DAD_ShowDragImage +_DAD_SetDragImage@8 = DAD_SetDragImage +_DAD_DragMove@8 = DAD_DragMove +_DAD_DragLeave@0 = DAD_DragLeave +_DAD_DragEnterEx@12 = DAD_DragEnterEx +_DAD_DragEnterEx2@16 = DAD_DragEnterEx2 +_DAD_AutoScroll@12 = DAD_AutoScroll +_CommandLineToArgvW@8 = CommandLineToArgvW +_CheckEscapesW@8 = CheckEscapesW +_CheckEscapesA@8 = CheckEscapesA +_CallCPLEntry16@24 = CallCPLEntry16 +_CDefFolderMenu_Create@36 = CDefFolderMenu_Create +_CDefFolderMenu_Create2@36 = CDefFolderMenu_Create diff --git a/def/version.def b/def/version.def index 512336acb3..a238828f1e 100644 --- a/def/version.def +++ b/def/version.def @@ -1,16 +1,16 @@ -LIBRARY version -EXETYPE NT -SUBSYSTEM WINDOWS -EXPORTS -_VerFindFileA@32 = VerFindFileA -_VerQueryValueA@16 = VerQueryValueA -_VerInstallFileA@32 = VerInstallFileA -_GetFileVersionInfoSizeA@8 = GetFileVersionInfoSizeA -_GetFileVersionInfoA@16 = GetFileVersionInfoA -_VerLanguageNameA@12 = VerLanguageNameA -_VerFindFileW@32 = VerFindFileW -_VerQueryValueW@16 = VerQueryValueW -_VerInstallFileW@32 = VerInstallFileW -_GetFileVersionInfoSizeW@8 = GetFileVersionInfoSizeW -_GetFileVersionInfoW@16 = GetFileVersionInfoW -_VerLanguageNameW@12 = VerLanguageNameW +LIBRARY version +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_VerFindFileA@32 = VerFindFileA +_VerQueryValueA@16 = VerQueryValueA +_VerInstallFileA@32 = VerInstallFileA +_GetFileVersionInfoSizeA@8 = GetFileVersionInfoSizeA +_GetFileVersionInfoA@16 = GetFileVersionInfoA +_VerLanguageNameA@12 = VerLanguageNameA +_VerFindFileW@32 = VerFindFileW +_VerQueryValueW@16 = VerQueryValueW +_VerInstallFileW@32 = VerInstallFileW +_GetFileVersionInfoSizeW@8 = GetFileVersionInfoSizeW +_GetFileVersionInfoW@16 = GetFileVersionInfoW +_VerLanguageNameW@12 = VerLanguageNameW diff --git a/def/wininet.def b/def/wininet.def index 40cfb6020d..d6f8d8ba24 100644 --- a/def/wininet.def +++ b/def/wininet.def @@ -1,216 +1,216 @@ -LIBRARY wininet -EXETYPE NT -SUBSYSTEM WINDOWS -EXPORTS -_CommitUrlCacheEntryA@44 = CommitUrlCacheEntryA -_CommitUrlCacheEntryW@44 = CommitUrlCacheEntryW -_CreateUrlCacheContainerA@32 = CreateUrlCacheContainerA -_CreateUrlCacheContainerW@32 = CreateUrlCacheContainerW -_CreateUrlCacheEntryA@20 = CreateUrlCacheEntryA -_CreateUrlCacheEntryW@20 = CreateUrlCacheEntryW -_CreateUrlCacheGroup@8 = CreateUrlCacheGroup -_DeleteIE3Cache@16 = DeleteIE3Cache -_DeleteUrlCacheContainerA@8 = DeleteUrlCacheContainerA -_DeleteUrlCacheContainerW@8 = DeleteUrlCacheContainerW -_DeleteUrlCacheEntry@4 = DeleteUrlCacheEntry -_DeleteUrlCacheEntryA@4 = DeleteUrlCacheEntryA -_DeleteUrlCacheEntryW@4 = DeleteUrlCacheEntryW -_DeleteUrlCacheGroup@16 = DeleteUrlCacheGroup -_DoConnectoidsExist@0 = DoConnectoidsExist -_ExportCookieFileA@8 = ExportCookieFileA -_ExportCookieFileW@8 = ExportCookieFileW -_FindCloseUrlCache@4 = FindCloseUrlCache -_FindFirstUrlCacheContainerA@16 = FindFirstUrlCacheContainerA -_FindFirstUrlCacheContainerW@16 = FindFirstUrlCacheContainerW -_FindFirstUrlCacheEntryA@12 = FindFirstUrlCacheEntryA -_FindFirstUrlCacheEntryExA@40 = FindFirstUrlCacheEntryExA -_FindFirstUrlCacheEntryExW@40 = FindFirstUrlCacheEntryExW -_FindFirstUrlCacheEntryW@12 = FindFirstUrlCacheEntryW -_FindFirstUrlCacheGroup@24 = FindFirstUrlCacheGroup -_FindNextUrlCacheContainerA@12 = FindNextUrlCacheContainerA -_FindNextUrlCacheContainerW@12 = FindNextUrlCacheContainerW -_FindNextUrlCacheEntryA@12 = FindNextUrlCacheEntryA -_FindNextUrlCacheEntryExA@24 = FindNextUrlCacheEntryExA -_FindNextUrlCacheEntryExW@24 = FindNextUrlCacheEntryExW -_FindNextUrlCacheEntryW@12 = FindNextUrlCacheEntryW -_FindNextUrlCacheGroup@12 = FindNextUrlCacheGroup -_FreeUrlCacheSpaceA@12 = FreeUrlCacheSpaceA -_FreeUrlCacheSpaceW@12 = FreeUrlCacheSpaceW -_FtpCommandA@24 = FtpCommandA -_FtpCommandW@24 = FtpCommandW -_FtpCreateDirectoryA@8 = FtpCreateDirectoryA -_FtpCreateDirectoryW@8 = FtpCreateDirectoryW -_FtpDeleteFileA@8 = FtpDeleteFileA -_FtpDeleteFileW@8 = FtpDeleteFileW -_FtpFindFirstFileA@20 = FtpFindFirstFileA -_FtpFindFirstFileW@20 = FtpFindFirstFileW -_FtpGetCurrentDirectoryA@12 = FtpGetCurrentDirectoryA -_FtpGetCurrentDirectoryW@12 = FtpGetCurrentDirectoryW -_FtpGetFileA@28 = FtpGetFileA -_FtpGetFileEx@28 = FtpGetFileEx -_FtpGetFileSize@8 = FtpGetFileSize -_FtpGetFileW@28 = FtpGetFileW -_FtpOpenFileA@20 = FtpOpenFileA -_FtpOpenFileW@20 = FtpOpenFileW -_FtpPutFileA@20 = FtpPutFileA -_FtpPutFileEx@20 = FtpPutFileEx -_FtpPutFileW@20 = FtpPutFileW -_FtpRemoveDirectoryA@8 = FtpRemoveDirectoryA -_FtpRemoveDirectoryW@8 = FtpRemoveDirectoryW -_FtpRenameFileA@12 = FtpRenameFileA -_FtpRenameFileW@12 = FtpRenameFileW -_FtpSetCurrentDirectoryA@8 = FtpSetCurrentDirectoryA -_FtpSetCurrentDirectoryW@8 = FtpSetCurrentDirectoryW -_GetDiskInfoA@16 = GetDiskInfoA -_GetUrlCacheConfigInfoA@12 = GetUrlCacheConfigInfoA -_GetUrlCacheConfigInfoW@12 = GetUrlCacheConfigInfoW -_GetUrlCacheEntryInfoA@12 = GetUrlCacheEntryInfoA -_GetUrlCacheEntryInfoExA@28 = GetUrlCacheEntryInfoExA -_GetUrlCacheEntryInfoExW@28 = GetUrlCacheEntryInfoExW -_GetUrlCacheEntryInfoW@12 = GetUrlCacheEntryInfoW -_GetUrlCacheGroupAttributeA@28 = GetUrlCacheGroupAttributeA -_GetUrlCacheGroupAttributeW@28 = GetUrlCacheGroupAttributeW -_GetUrlCacheHeaderData@8 = GetUrlCacheHeaderData -_GopherCreateLocatorA@28 = GopherCreateLocatorA -_GopherCreateLocatorW@28 = GopherCreateLocatorW -_GopherFindFirstFileA@24 = GopherFindFirstFileA -_GopherFindFirstFileW@24 = GopherFindFirstFileW -_GopherGetAttributeA@32 = GopherGetAttributeA -_GopherGetAttributeW@32 = GopherGetAttributeW -_GopherGetLocatorTypeA@8 = GopherGetLocatorTypeA -_GopherGetLocatorTypeW@8 = GopherGetLocatorTypeW -_GopherOpenFileA@20 = GopherOpenFileA -_GopherOpenFileW@20 = GopherOpenFileW -_HttpAddRequestHeadersA@16 = HttpAddRequestHeadersA -_HttpAddRequestHeadersW@16 = HttpAddRequestHeadersW -_HttpCheckDavCompliance@20 = HttpCheckDavCompliance -_HttpCheckDavComplianceA@20 = HttpCheckDavComplianceA -_HttpCheckDavComplianceW@20 = HttpCheckDavComplianceW -_HttpEndRequestA@16 = HttpEndRequestA -_HttpEndRequestW@16 = HttpEndRequestW -_HttpOpenRequestA@32 = HttpOpenRequestA -_HttpOpenRequestW@32 = HttpOpenRequestW -_HttpQueryInfoA@20 = HttpQueryInfoA -_HttpQueryInfoW@20 = HttpQueryInfoW -_HttpSendRequestA@20 = HttpSendRequestA -_HttpSendRequestExA@20 = HttpSendRequestExA -_HttpSendRequestExW@20 = HttpSendRequestExW -_HttpSendRequestW@20 = HttpSendRequestW -_ImportCookieFileA@4 = ImportCookieFileA -_ImportCookieFileW@4 = ImportCookieFileW -_IncrementUrlCacheHeaderData@8 = IncrementUrlCacheHeaderData -_InternetAlgIdToStringA@16 = InternetAlgIdToStringA -_InternetAlgIdToStringW@16 = InternetAlgIdToStringW -_InternetAttemptConnect@4 = InternetAttemptConnect -_InternetAutodial@8 = InternetAutodial -_InternetAutodialCallback@8 = InternetAutodialCallback -_InternetAutodialHangup@4 = InternetAutodialHangup -_InternetCanonicalizeUrlA@16 = InternetCanonicalizeUrlA -_InternetCanonicalizeUrlW@16 = InternetCanonicalizeUrlW -_InternetCheckConnectionA@12 = InternetCheckConnectionA -_InternetCheckConnectionW@12 = InternetCheckConnectionW -_InternetCloseHandle@4 = InternetCloseHandle -_InternetCombineUrlA@20 = InternetCombineUrlA -_InternetCombineUrlW@20 = InternetCombineUrlW -_InternetConfirmZoneCrossing@16 = InternetConfirmZoneCrossing -_InternetConfirmZoneCrossingA@16 = InternetConfirmZoneCrossingA -_InternetConfirmZoneCrossingW@16 = InternetConfirmZoneCrossingW -_InternetConnectA@32 = InternetConnectA -_InternetConnectW@32 = InternetConnectW -_InternetCrackUrlA@16 = InternetCrackUrlA -_InternetCrackUrlW@16 = InternetCrackUrlW -_InternetCreateUrlA@16 = InternetCreateUrlA -_InternetCreateUrlW@16 = InternetCreateUrlW -_InternetDial@20 = InternetDial -_InternetDialA@20 = InternetDialA -_InternetDialW@20 = InternetDialW -_InternetErrorDlg@20 = InternetErrorDlg -_InternetFindNextFileA@8 = InternetFindNextFileA -_InternetFindNextFileW@8 = InternetFindNextFileW -_InternetFortezzaCommand@12 = InternetFortezzaCommand -_InternetGetCertByURL@12 = InternetGetCertByURL -_InternetGetCertByURLA@12 = InternetGetCertByURLA -_InternetGetConnectedState@8 = InternetGetConnectedState -_InternetGetConnectedStateEx@16 = InternetGetConnectedStateEx -_InternetGetConnectedStateExA@16 = InternetGetConnectedStateExA -_InternetGetConnectedStateExW@16 = InternetGetConnectedStateExW -_InternetGetCookieA@16 = InternetGetCookieA -_InternetGetCookieW@16 = InternetGetCookieW -_InternetGetLastResponseInfoA@12 = InternetGetLastResponseInfoA -_InternetGetLastResponseInfoW@12 = InternetGetLastResponseInfoW -_InternetGoOnline@12 = InternetGoOnline -_InternetGoOnlineA@12 = InternetGoOnlineA -_InternetGoOnlineW@12 = InternetGoOnlineW -_InternetHangUp@8 = InternetHangUp -_InternetLockRequestFile@8 = InternetLockRequestFile -_InternetOpenA@20 = InternetOpenA -_InternetOpenUrlA@24 = InternetOpenUrlA -_InternetOpenUrlW@24 = InternetOpenUrlW -_InternetOpenW@20 = InternetOpenW -_InternetQueryDataAvailable@16 = InternetQueryDataAvailable -_InternetQueryFortezzaStatus@8 = InternetQueryFortezzaStatus -_InternetQueryOptionA@16 = InternetQueryOptionA -_InternetQueryOptionW@16 = InternetQueryOptionW -_InternetReadFile@16 = InternetReadFile -_InternetReadFileExA@16 = InternetReadFileExA -_InternetReadFileExW@16 = InternetReadFileExW -_InternetSecurityProtocolToStringA@16 = InternetSecurityProtocolToStringA -_InternetSecurityProtocolToStringW@16 = InternetSecurityProtocolToStringW -_InternetSetCookieA@12 = InternetSetCookieA -_InternetSetCookieW@12 = InternetSetCookieW -_InternetSetDialState@12 = InternetSetDialState -_InternetSetDialStateA@12 = InternetSetDialStateA -_InternetSetDialStateW@12 = InternetSetDialStateW -_InternetSetFilePointer@20 = InternetSetFilePointer -_InternetSetOptionA@16 = InternetSetOptionA -_InternetSetOptionExA@20 = InternetSetOptionExA -_InternetSetOptionExW@20 = InternetSetOptionExW -_InternetSetOptionW@16 = InternetSetOptionW -_InternetSetStatusCallback@8 = InternetSetStatusCallback -_InternetSetStatusCallbackA@8 = InternetSetStatusCallbackA -_InternetSetStatusCallbackW@8 = InternetSetStatusCallbackW -_InternetShowSecurityInfoByURL@8 = InternetShowSecurityInfoByURL -_InternetShowSecurityInfoByURLA@8 = InternetShowSecurityInfoByURLA -_InternetShowSecurityInfoByURLW@8 = InternetShowSecurityInfoByURLW -_InternetTimeFromSystemTime@16 = InternetTimeFromSystemTime -_InternetTimeFromSystemTimeA@16 = InternetTimeFromSystemTimeA -_InternetTimeFromSystemTimeW@16 = InternetTimeFromSystemTimeW -_InternetTimeToSystemTime@12 = InternetTimeToSystemTime -_InternetTimeToSystemTimeA@12 = InternetTimeToSystemTimeA -_InternetTimeToSystemTimeW@12 = InternetTimeToSystemTimeW -_InternetUnlockRequestFile@4 = InternetUnlockRequestFile -_InternetWriteFile@16 = InternetWriteFile -_InternetWriteFileExA@16 = InternetWriteFileExA -_InternetWriteFileExW@16 = InternetWriteFileExW -_IsHostInProxyBypassList@12 = IsHostInProxyBypassList -_IsUrlCacheEntryExpiredA@12 = IsUrlCacheEntryExpiredA -_IsUrlCacheEntryExpiredW@12 = IsUrlCacheEntryExpiredW -_LoadUrlCacheContent@0 = LoadUrlCacheContent -_ParseX509EncodedCertificateForListBoxEntry@16 = ParseX509EncodedCertificateForListBoxEntry -_PerformOperationOverUrlCacheA@40 = PerformOperationOverUrlCacheA -_ReadUrlCacheEntryStream@20 = ReadUrlCacheEntryStream -_RegisterUrlCacheNotification@24 = RegisterUrlCacheNotification -_ResumeSuspendedDownload@8 = ResumeSuspendedDownload -_RetrieveUrlCacheEntryFileA@16 = RetrieveUrlCacheEntryFileA -_RetrieveUrlCacheEntryFileW@16 = RetrieveUrlCacheEntryFileW -_RetrieveUrlCacheEntryStreamA@20 = RetrieveUrlCacheEntryStreamA -_RetrieveUrlCacheEntryStreamW@20 = RetrieveUrlCacheEntryStreamW -_RunOnceUrlCache@16 = RunOnceUrlCache -_SetUrlCacheConfigInfoA@8 = SetUrlCacheConfigInfoA -_SetUrlCacheConfigInfoW@8 = SetUrlCacheConfigInfoW -_SetUrlCacheEntryGroup@28 = SetUrlCacheEntryGroup -_SetUrlCacheEntryGroupA@28 = SetUrlCacheEntryGroupA -_SetUrlCacheEntryGroupW@28 = SetUrlCacheEntryGroupW -_SetUrlCacheEntryInfoA@12 = SetUrlCacheEntryInfoA -_SetUrlCacheEntryInfoW@12 = SetUrlCacheEntryInfoW -_SetUrlCacheGroupAttributeA@24 = SetUrlCacheGroupAttributeA -_SetUrlCacheGroupAttributeW@24 = SetUrlCacheGroupAttributeW -_SetUrlCacheHeaderData@8 = SetUrlCacheHeaderData -_ShowClientAuthCerts@4 = ShowClientAuthCerts -_ShowSecurityInfo@8 = ShowSecurityInfo -_ShowX509EncodedCertificate@12 = ShowX509EncodedCertificate -_UnlockUrlCacheEntryFile@8 = UnlockUrlCacheEntryFile -_UnlockUrlCacheEntryFileA@8 = UnlockUrlCacheEntryFileA -_UnlockUrlCacheEntryFileW@8 = UnlockUrlCacheEntryFileW -_UnlockUrlCacheEntryStream@8 = UnlockUrlCacheEntryStream -_UpdateUrlCacheContentPath@4 = UpdateUrlCacheContentPath@4 +LIBRARY wininet +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_CommitUrlCacheEntryA@44 = CommitUrlCacheEntryA +_CommitUrlCacheEntryW@44 = CommitUrlCacheEntryW +_CreateUrlCacheContainerA@32 = CreateUrlCacheContainerA +_CreateUrlCacheContainerW@32 = CreateUrlCacheContainerW +_CreateUrlCacheEntryA@20 = CreateUrlCacheEntryA +_CreateUrlCacheEntryW@20 = CreateUrlCacheEntryW +_CreateUrlCacheGroup@8 = CreateUrlCacheGroup +_DeleteIE3Cache@16 = DeleteIE3Cache +_DeleteUrlCacheContainerA@8 = DeleteUrlCacheContainerA +_DeleteUrlCacheContainerW@8 = DeleteUrlCacheContainerW +_DeleteUrlCacheEntry@4 = DeleteUrlCacheEntry +_DeleteUrlCacheEntryA@4 = DeleteUrlCacheEntryA +_DeleteUrlCacheEntryW@4 = DeleteUrlCacheEntryW +_DeleteUrlCacheGroup@16 = DeleteUrlCacheGroup +_DoConnectoidsExist@0 = DoConnectoidsExist +_ExportCookieFileA@8 = ExportCookieFileA +_ExportCookieFileW@8 = ExportCookieFileW +_FindCloseUrlCache@4 = FindCloseUrlCache +_FindFirstUrlCacheContainerA@16 = FindFirstUrlCacheContainerA +_FindFirstUrlCacheContainerW@16 = FindFirstUrlCacheContainerW +_FindFirstUrlCacheEntryA@12 = FindFirstUrlCacheEntryA +_FindFirstUrlCacheEntryExA@40 = FindFirstUrlCacheEntryExA +_FindFirstUrlCacheEntryExW@40 = FindFirstUrlCacheEntryExW +_FindFirstUrlCacheEntryW@12 = FindFirstUrlCacheEntryW +_FindFirstUrlCacheGroup@24 = FindFirstUrlCacheGroup +_FindNextUrlCacheContainerA@12 = FindNextUrlCacheContainerA +_FindNextUrlCacheContainerW@12 = FindNextUrlCacheContainerW +_FindNextUrlCacheEntryA@12 = FindNextUrlCacheEntryA +_FindNextUrlCacheEntryExA@24 = FindNextUrlCacheEntryExA +_FindNextUrlCacheEntryExW@24 = FindNextUrlCacheEntryExW +_FindNextUrlCacheEntryW@12 = FindNextUrlCacheEntryW +_FindNextUrlCacheGroup@12 = FindNextUrlCacheGroup +_FreeUrlCacheSpaceA@12 = FreeUrlCacheSpaceA +_FreeUrlCacheSpaceW@12 = FreeUrlCacheSpaceW +_FtpCommandA@24 = FtpCommandA +_FtpCommandW@24 = FtpCommandW +_FtpCreateDirectoryA@8 = FtpCreateDirectoryA +_FtpCreateDirectoryW@8 = FtpCreateDirectoryW +_FtpDeleteFileA@8 = FtpDeleteFileA +_FtpDeleteFileW@8 = FtpDeleteFileW +_FtpFindFirstFileA@20 = FtpFindFirstFileA +_FtpFindFirstFileW@20 = FtpFindFirstFileW +_FtpGetCurrentDirectoryA@12 = FtpGetCurrentDirectoryA +_FtpGetCurrentDirectoryW@12 = FtpGetCurrentDirectoryW +_FtpGetFileA@28 = FtpGetFileA +_FtpGetFileEx@28 = FtpGetFileEx +_FtpGetFileSize@8 = FtpGetFileSize +_FtpGetFileW@28 = FtpGetFileW +_FtpOpenFileA@20 = FtpOpenFileA +_FtpOpenFileW@20 = FtpOpenFileW +_FtpPutFileA@20 = FtpPutFileA +_FtpPutFileEx@20 = FtpPutFileEx +_FtpPutFileW@20 = FtpPutFileW +_FtpRemoveDirectoryA@8 = FtpRemoveDirectoryA +_FtpRemoveDirectoryW@8 = FtpRemoveDirectoryW +_FtpRenameFileA@12 = FtpRenameFileA +_FtpRenameFileW@12 = FtpRenameFileW +_FtpSetCurrentDirectoryA@8 = FtpSetCurrentDirectoryA +_FtpSetCurrentDirectoryW@8 = FtpSetCurrentDirectoryW +_GetDiskInfoA@16 = GetDiskInfoA +_GetUrlCacheConfigInfoA@12 = GetUrlCacheConfigInfoA +_GetUrlCacheConfigInfoW@12 = GetUrlCacheConfigInfoW +_GetUrlCacheEntryInfoA@12 = GetUrlCacheEntryInfoA +_GetUrlCacheEntryInfoExA@28 = GetUrlCacheEntryInfoExA +_GetUrlCacheEntryInfoExW@28 = GetUrlCacheEntryInfoExW +_GetUrlCacheEntryInfoW@12 = GetUrlCacheEntryInfoW +_GetUrlCacheGroupAttributeA@28 = GetUrlCacheGroupAttributeA +_GetUrlCacheGroupAttributeW@28 = GetUrlCacheGroupAttributeW +_GetUrlCacheHeaderData@8 = GetUrlCacheHeaderData +_GopherCreateLocatorA@28 = GopherCreateLocatorA +_GopherCreateLocatorW@28 = GopherCreateLocatorW +_GopherFindFirstFileA@24 = GopherFindFirstFileA +_GopherFindFirstFileW@24 = GopherFindFirstFileW +_GopherGetAttributeA@32 = GopherGetAttributeA +_GopherGetAttributeW@32 = GopherGetAttributeW +_GopherGetLocatorTypeA@8 = GopherGetLocatorTypeA +_GopherGetLocatorTypeW@8 = GopherGetLocatorTypeW +_GopherOpenFileA@20 = GopherOpenFileA +_GopherOpenFileW@20 = GopherOpenFileW +_HttpAddRequestHeadersA@16 = HttpAddRequestHeadersA +_HttpAddRequestHeadersW@16 = HttpAddRequestHeadersW +_HttpCheckDavCompliance@20 = HttpCheckDavCompliance +_HttpCheckDavComplianceA@20 = HttpCheckDavComplianceA +_HttpCheckDavComplianceW@20 = HttpCheckDavComplianceW +_HttpEndRequestA@16 = HttpEndRequestA +_HttpEndRequestW@16 = HttpEndRequestW +_HttpOpenRequestA@32 = HttpOpenRequestA +_HttpOpenRequestW@32 = HttpOpenRequestW +_HttpQueryInfoA@20 = HttpQueryInfoA +_HttpQueryInfoW@20 = HttpQueryInfoW +_HttpSendRequestA@20 = HttpSendRequestA +_HttpSendRequestExA@20 = HttpSendRequestExA +_HttpSendRequestExW@20 = HttpSendRequestExW +_HttpSendRequestW@20 = HttpSendRequestW +_ImportCookieFileA@4 = ImportCookieFileA +_ImportCookieFileW@4 = ImportCookieFileW +_IncrementUrlCacheHeaderData@8 = IncrementUrlCacheHeaderData +_InternetAlgIdToStringA@16 = InternetAlgIdToStringA +_InternetAlgIdToStringW@16 = InternetAlgIdToStringW +_InternetAttemptConnect@4 = InternetAttemptConnect +_InternetAutodial@8 = InternetAutodial +_InternetAutodialCallback@8 = InternetAutodialCallback +_InternetAutodialHangup@4 = InternetAutodialHangup +_InternetCanonicalizeUrlA@16 = InternetCanonicalizeUrlA +_InternetCanonicalizeUrlW@16 = InternetCanonicalizeUrlW +_InternetCheckConnectionA@12 = InternetCheckConnectionA +_InternetCheckConnectionW@12 = InternetCheckConnectionW +_InternetCloseHandle@4 = InternetCloseHandle +_InternetCombineUrlA@20 = InternetCombineUrlA +_InternetCombineUrlW@20 = InternetCombineUrlW +_InternetConfirmZoneCrossing@16 = InternetConfirmZoneCrossing +_InternetConfirmZoneCrossingA@16 = InternetConfirmZoneCrossingA +_InternetConfirmZoneCrossingW@16 = InternetConfirmZoneCrossingW +_InternetConnectA@32 = InternetConnectA +_InternetConnectW@32 = InternetConnectW +_InternetCrackUrlA@16 = InternetCrackUrlA +_InternetCrackUrlW@16 = InternetCrackUrlW +_InternetCreateUrlA@16 = InternetCreateUrlA +_InternetCreateUrlW@16 = InternetCreateUrlW +_InternetDial@20 = InternetDial +_InternetDialA@20 = InternetDialA +_InternetDialW@20 = InternetDialW +_InternetErrorDlg@20 = InternetErrorDlg +_InternetFindNextFileA@8 = InternetFindNextFileA +_InternetFindNextFileW@8 = InternetFindNextFileW +_InternetFortezzaCommand@12 = InternetFortezzaCommand +_InternetGetCertByURL@12 = InternetGetCertByURL +_InternetGetCertByURLA@12 = InternetGetCertByURLA +_InternetGetConnectedState@8 = InternetGetConnectedState +_InternetGetConnectedStateEx@16 = InternetGetConnectedStateEx +_InternetGetConnectedStateExA@16 = InternetGetConnectedStateExA +_InternetGetConnectedStateExW@16 = InternetGetConnectedStateExW +_InternetGetCookieA@16 = InternetGetCookieA +_InternetGetCookieW@16 = InternetGetCookieW +_InternetGetLastResponseInfoA@12 = InternetGetLastResponseInfoA +_InternetGetLastResponseInfoW@12 = InternetGetLastResponseInfoW +_InternetGoOnline@12 = InternetGoOnline +_InternetGoOnlineA@12 = InternetGoOnlineA +_InternetGoOnlineW@12 = InternetGoOnlineW +_InternetHangUp@8 = InternetHangUp +_InternetLockRequestFile@8 = InternetLockRequestFile +_InternetOpenA@20 = InternetOpenA +_InternetOpenUrlA@24 = InternetOpenUrlA +_InternetOpenUrlW@24 = InternetOpenUrlW +_InternetOpenW@20 = InternetOpenW +_InternetQueryDataAvailable@16 = InternetQueryDataAvailable +_InternetQueryFortezzaStatus@8 = InternetQueryFortezzaStatus +_InternetQueryOptionA@16 = InternetQueryOptionA +_InternetQueryOptionW@16 = InternetQueryOptionW +_InternetReadFile@16 = InternetReadFile +_InternetReadFileExA@16 = InternetReadFileExA +_InternetReadFileExW@16 = InternetReadFileExW +_InternetSecurityProtocolToStringA@16 = InternetSecurityProtocolToStringA +_InternetSecurityProtocolToStringW@16 = InternetSecurityProtocolToStringW +_InternetSetCookieA@12 = InternetSetCookieA +_InternetSetCookieW@12 = InternetSetCookieW +_InternetSetDialState@12 = InternetSetDialState +_InternetSetDialStateA@12 = InternetSetDialStateA +_InternetSetDialStateW@12 = InternetSetDialStateW +_InternetSetFilePointer@20 = InternetSetFilePointer +_InternetSetOptionA@16 = InternetSetOptionA +_InternetSetOptionExA@20 = InternetSetOptionExA +_InternetSetOptionExW@20 = InternetSetOptionExW +_InternetSetOptionW@16 = InternetSetOptionW +_InternetSetStatusCallback@8 = InternetSetStatusCallback +_InternetSetStatusCallbackA@8 = InternetSetStatusCallbackA +_InternetSetStatusCallbackW@8 = InternetSetStatusCallbackW +_InternetShowSecurityInfoByURL@8 = InternetShowSecurityInfoByURL +_InternetShowSecurityInfoByURLA@8 = InternetShowSecurityInfoByURLA +_InternetShowSecurityInfoByURLW@8 = InternetShowSecurityInfoByURLW +_InternetTimeFromSystemTime@16 = InternetTimeFromSystemTime +_InternetTimeFromSystemTimeA@16 = InternetTimeFromSystemTimeA +_InternetTimeFromSystemTimeW@16 = InternetTimeFromSystemTimeW +_InternetTimeToSystemTime@12 = InternetTimeToSystemTime +_InternetTimeToSystemTimeA@12 = InternetTimeToSystemTimeA +_InternetTimeToSystemTimeW@12 = InternetTimeToSystemTimeW +_InternetUnlockRequestFile@4 = InternetUnlockRequestFile +_InternetWriteFile@16 = InternetWriteFile +_InternetWriteFileExA@16 = InternetWriteFileExA +_InternetWriteFileExW@16 = InternetWriteFileExW +_IsHostInProxyBypassList@12 = IsHostInProxyBypassList +_IsUrlCacheEntryExpiredA@12 = IsUrlCacheEntryExpiredA +_IsUrlCacheEntryExpiredW@12 = IsUrlCacheEntryExpiredW +_LoadUrlCacheContent@0 = LoadUrlCacheContent +_ParseX509EncodedCertificateForListBoxEntry@16 = ParseX509EncodedCertificateForListBoxEntry +_PerformOperationOverUrlCacheA@40 = PerformOperationOverUrlCacheA +_ReadUrlCacheEntryStream@20 = ReadUrlCacheEntryStream +_RegisterUrlCacheNotification@24 = RegisterUrlCacheNotification +_ResumeSuspendedDownload@8 = ResumeSuspendedDownload +_RetrieveUrlCacheEntryFileA@16 = RetrieveUrlCacheEntryFileA +_RetrieveUrlCacheEntryFileW@16 = RetrieveUrlCacheEntryFileW +_RetrieveUrlCacheEntryStreamA@20 = RetrieveUrlCacheEntryStreamA +_RetrieveUrlCacheEntryStreamW@20 = RetrieveUrlCacheEntryStreamW +_RunOnceUrlCache@16 = RunOnceUrlCache +_SetUrlCacheConfigInfoA@8 = SetUrlCacheConfigInfoA +_SetUrlCacheConfigInfoW@8 = SetUrlCacheConfigInfoW +_SetUrlCacheEntryGroup@28 = SetUrlCacheEntryGroup +_SetUrlCacheEntryGroupA@28 = SetUrlCacheEntryGroupA +_SetUrlCacheEntryGroupW@28 = SetUrlCacheEntryGroupW +_SetUrlCacheEntryInfoA@12 = SetUrlCacheEntryInfoA +_SetUrlCacheEntryInfoW@12 = SetUrlCacheEntryInfoW +_SetUrlCacheGroupAttributeA@24 = SetUrlCacheGroupAttributeA +_SetUrlCacheGroupAttributeW@24 = SetUrlCacheGroupAttributeW +_SetUrlCacheHeaderData@8 = SetUrlCacheHeaderData +_ShowClientAuthCerts@4 = ShowClientAuthCerts +_ShowSecurityInfo@8 = ShowSecurityInfo +_ShowX509EncodedCertificate@12 = ShowX509EncodedCertificate +_UnlockUrlCacheEntryFile@8 = UnlockUrlCacheEntryFile +_UnlockUrlCacheEntryFileA@8 = UnlockUrlCacheEntryFileA +_UnlockUrlCacheEntryFileW@8 = UnlockUrlCacheEntryFileW +_UnlockUrlCacheEntryStream@8 = UnlockUrlCacheEntryStream +_UpdateUrlCacheContentPath@4 = UpdateUrlCacheContentPath@4 diff --git a/def/winspool.def b/def/winspool.def index 17728fe92a..0bd38cae18 100644 --- a/def/winspool.def +++ b/def/winspool.def @@ -1,187 +1,187 @@ -LIBRARY winspool -EXETYPE NT -SUBSYSTEM WINDOWS -EXPORTS -_InitializeDll@12 = InitializeDll -_SetJobA@20 = SetJobA -_SetJobW@20 = SetJobW -_GetJobA@24 = GetJobA -_GetJobW@24 = GetJobW -_EnumJobsA@32 = EnumJobsA -_EnumJobsW@32 = EnumJobsW -_AddPrinterA@12 = AddPrinterA -_AddPrinterW@12 = AddPrinterW -_DeletePrinter@4 = DeletePrinter -_SetPrinterA@16 = SetPrinterA -_SetPrinterW@16 = SetPrinterW -_GetPrinterA@20 = GetPrinterA -_GetPrinterW@20 = GetPrinterW -_GetPrinterDriverA@24 = GetPrinterDriverA -_GetPrinterDriverW@24 = GetPrinterDriverW -_GetPrinterDriverDirectoryA@24 = GetPrinterDriverDirectoryA -_GetPrinterDriverDirectoryW@24 = GetPrinterDriverDirectoryW -_EnumPrintersA@28 = EnumPrintersA -_EnumPrintersW@28 = EnumPrintersW -_AddPrinterConnectionA@4 = AddPrinterConnectionA -_AddPrinterConnectionW@4 = AddPrinterConnectionW -_DeletePrinterConnectionA@4 = DeletePrinterConnectionA -_DeletePrinterConnectionW@4 = DeletePrinterConnectionW -_AddPrinterDriverA@12 = AddPrinterDriverA -_AddPrinterDriverW@12 = AddPrinterDriverW -_AddPrinterDriverExA@16 = AddPrinterDriverExA -_AddPrinterDriverExW@16 = AddPrinterDriverExW -_EnumPrinterDriversA@28 = EnumPrinterDriversA -_EnumPrinterDriversW@28 = EnumPrinterDriversW -_DeletePrinterDriverA@12 = DeletePrinterDriverA -_DeletePrinterDriverW@12 = DeletePrinterDriverW -_DeletePrinterDriverExA@20 = DeletePrinterDriverExA -_DeletePrinterDriverExW@20 = DeletePrinterDriverExW -_AddPrintProcessorA@16 = AddPrintProcessorA -_AddPrintProcessorW@16 = AddPrintProcessorW -_EnumPrintProcessorsA@28 = EnumPrintProcessorsA -_EnumPrintProcessorsW@28 = EnumPrintProcessorsW -_GetPrintProcessorDirectoryA@24 = GetPrintProcessorDirectoryA -_GetPrintProcessorDirectoryW@24 = GetPrintProcessorDirectoryW -_EnumPrintProcessorDatatypesA@28 = EnumPrintProcessorDatatypesA -_EnumPrintProcessorDatatypesW@28 = EnumPrintProcessorDatatypesW -_AddPerMachineConnectionA@16 = AddPerMachineConnectionA -_AddPerMachineConnectionW@16 = AddPerMachineConnectionW -_DeletePerMachineConnectionA@8 = DeletePerMachineConnectionA -_DeletePerMachineConnectionW@8 = DeletePerMachineConnectionW -_EnumPerMachineConnectionsA@20 = EnumPerMachineConnectionsA -_EnumPerMachineConnectionsW@20 = EnumPerMachineConnectionsW -_LoadPrinterDriver@4 = LoadPrinterDriver -_SplDriverUnloadComplete@4 = SplDriverUnloadComplete -_RefCntLoadDriver@16 = RefCntLoadDriver -_RefCntUnloadDriver@8 = RefCntUnloadDriver -_ForceUnloadDriver@4 = ForceUnloadDriver -_OpenPrinterA@12 = OpenPrinterA -_OpenPrinterW@12 = OpenPrinterW -_ResetPrinterA@8 = ResetPrinterA -_ResetPrinterW@8 = ResetPrinterW -_StartDocPrinterA@12 = StartDocPrinterA -_StartDocPrinterW@12 = StartDocPrinterW -_StartPagePrinter@4 = StartPagePrinter -_WritePrinter@16 = WritePrinter -_SeekPrinter@24 = SeekPrinter -_EndPagePrinter@4 = EndPagePrinter -_GetPrinterDataA@24 = GetPrinterDataA -_GetPrinterDataW@24 = GetPrinterDataW -_SetPrinterDataA@20 = SetPrinterDataA -_SetPrinterDataW@20 = SetPrinterDataW -_AbortPrinter@4 = AbortPrinter -_ReadPrinter@16 = ReadPrinter -_SplReadPrinter@12 = SplReadPrinter -_EndDocPrinter@4 = EndDocPrinter -_AddJobA@20 = AddJobA -_AddJobW@20 = AddJobW -_ScheduleJob@8 = ScheduleJob -_WaitForPrinterChange@8 = WaitForPrinterChange -_FindFirstPrinterChangeNotification@16 = FindFirstPrinterChangeNotification -_FindNextPrinterChangeNotification@16 = FindNextPrinterChangeNotification -_FindClosePrinterChangeNotification@4 = FindClosePrinterChangeNotification -_FreePrinterNotifyInfo@4 = FreePrinterNotifyInfo -_PrinterMessageBoxA@24 = PrinterMessageBoxA -_PrinterMessageBoxW@24 = PrinterMessageBoxW -_ClosePrinter@4 = ClosePrinter -_GetSpoolFileHandle@4 = GetSpoolFileHandle -_CommitSpoolData@12 = CommitSpoolData -_CloseSpoolFileHandle@8 = CloseSpoolFileHandle -_AddFormA@12 = AddFormA -_AddFormW@12 = AddFormW -_DeleteFormA@8 = DeleteFormA -_DeleteFormW@8 = DeleteFormW -_GetFormA@24 = GetFormA -_GetFormW@24 = GetFormW -_SetFormA@16 = SetFormA -_SetFormW@16 = SetFormW -_EnumFormsA@24 = EnumFormsA -_EnumFormsW@24 = EnumFormsW -_EnumPortsA@24 = EnumPortsA -_EnumPortsW@24 = EnumPortsW -_EnumMonitorsA@24 = EnumMonitorsA -_EnumMonitorsW@24 = EnumMonitorsW -_AddPortA@12 = AddPortA -_AddPortW@12 = AddPortW -_ConfigurePortA@12 = ConfigurePortA -_ConfigurePortW@12 = ConfigurePortW -_DeletePortA@12 = DeletePortA -_DeletePortW@12 = DeletePortW -_CreatePrinterIC@8 = CreatePrinterIC -_PlayGdiScriptOnPrinterIC@24 = PlayGdiScriptOnPrinterIC -_DeletePrinterIC@4 = DeletePrinterIC -_DeviceMode@16 = DeviceMode -_ExtDeviceMode@32 = ExtDeviceMode -_AdvancedSetupDialog@16 = AdvancedSetupDialog -_DeviceCapabilities@20 = DeviceCapabilities -_DeviceCapabilitiesA@20 = DeviceCapabilitiesA -_DeviceCapabilitiesW@20 = DeviceCapabilitiesW -_DocumentPropertiesA@24 = DocumentPropertiesA -_DocumentPropertiesW@24 = DocumentPropertiesW -_AdvancedDocumentPropertiesA@20 = AdvancedDocumentPropertiesA -_AdvancedDocumentPropertiesW@20 = AdvancedDocumentPropertiesW -_PrinterProperties@8 = PrinterProperties -_ConnectToPrinterDlg@8 = ConnectToPrinterDlg -_StartDocDlgW@8 = StartDocDlgW -_StartDocDlgA@8 = StartDocDlgA -_AddMonitorA@12 = AddMonitorA -_AddMonitorW@12 = AddMonitorW -_DeleteMonitorA@12 = DeleteMonitorA -_DeleteMonitorW@12 = DeleteMonitorW -_DeletePrintProcessorA@12 = DeletePrintProcessorA -_DeletePrintProcessorW@12 = DeletePrintProcessorW -_AddPrintProvidorA@12 = AddPrintProvidorA -_AddPrintProvidorW@12 = AddPrintProvidorW -_DeletePrintProvidorA@12 = DeletePrintProvidorA -_DeletePrintProvidorW@12 = DeletePrintProvidorW -_AddPortExW@16 = AddPortExW -_AddPortExA@16 = AddPortExA -_DevQueryPrint@12 = DevQueryPrint -_DevQueryPrintEx@4 = DevQueryPrintEx -_SpoolerDevQueryPrintW@20 = SpoolerDevQueryPrintW -_SpoolerInit@0 = SpoolerInit -_SetAllocFailCount@20 = SetAllocFailCount -_DocumentEvent@28 = DocumentEvent -_QueryColorProfile@24 = QueryColorProfile -_QuerySpoolMode@12 = QuerySpoolMode -_QueryRemoteFonts@12 = QueryRemoteFonts -_DevicePropertySheets@8 = DevicePropertySheets -_DocumentPropertySheets@8 = DocumentPropertySheets -_AddPrinterConnectionUI@12 = AddPrinterConnectionUI -_ConvertAnsiDevModeToUnicodeDevmode@16 = ConvertAnsiDevModeToUnicodeDevmode -_ConvertUnicodeDevModeToAnsiDevmode@16 = ConvertUnicodeDevModeToAnsiDevmode -_SetPortA@16 = SetPortA -_SetPortW@16 = SetPortW -_SpoolerPrinterEvent@16 = SpoolerPrinterEvent -_EnumPrinterDataA@36 = EnumPrinterDataA -_EnumPrinterDataW@36 = EnumPrinterDataW -_DeletePrinterDataA@8 = DeletePrinterDataA -_DeletePrinterDataW@8 = DeletePrinterDataW -_SetPrinterDataExA@24 = SetPrinterDataExA -_SetPrinterDataExW@24 = SetPrinterDataExW -_GetPrinterDataExA@28 = GetPrinterDataExA -_GetPrinterDataExW@28 = GetPrinterDataExW -_EnumPrinterDataExA@24 = EnumPrinterDataExA -_EnumPrinterDataExW@24 = EnumPrinterDataExW -_EnumPrinterKeyA@20 = EnumPrinterKeyA -_EnumPrinterKeyW@20 = EnumPrinterKeyW -_DeletePrinterDataExA@12 = DeletePrinterDataExA -_DeletePrinterDataExW@12 = DeletePrinterDataExW -_DeletePrinterKeyA@8 = DeletePrinterKeyA -_DeletePrinterKeyW@8 = DeletePrinterKeyW -_EnumPrinterPropertySheets@16 = EnumPrinterPropertySheets -_GetPrinterWebInformation@16 = GetPrinterWebInformation -_ClusterSplOpen@20 = ClusterSplOpen -_ClusterSplClose@4 = ClusterSplClose -_ClusterSplIsAlive@4 = ClusterSplIsAlive -_GetDefaultPrinterA@8 = GetDefaultPrinterA -_SetDefaultPrinterA@4 = SetDefaultPrinterA -_GetDefaultPrinterW@8 = GetDefaultPrinterW -_SetDefaultPrinterW@4 = SetDefaultPrinterW -_SetPrinterHTMLViewA@12 = SetPrinterHTMLViewA -_SetPrinterHTMLViewW@12 = SetPrinterHTMLViewW -_GetPrinterHTMLViewA@20 = GetPrinterHTMLViewA -_GetPrinterHTMLViewW@20 = GetPrinterHTMLViewW -_XcvDataW@32 = XcvDataW -_PublishPrinterA@24 = PublishPrinterA +LIBRARY winspool +EXETYPE NT +SUBSYSTEM WINDOWS +EXPORTS +_InitializeDll@12 = InitializeDll +_SetJobA@20 = SetJobA +_SetJobW@20 = SetJobW +_GetJobA@24 = GetJobA +_GetJobW@24 = GetJobW +_EnumJobsA@32 = EnumJobsA +_EnumJobsW@32 = EnumJobsW +_AddPrinterA@12 = AddPrinterA +_AddPrinterW@12 = AddPrinterW +_DeletePrinter@4 = DeletePrinter +_SetPrinterA@16 = SetPrinterA +_SetPrinterW@16 = SetPrinterW +_GetPrinterA@20 = GetPrinterA +_GetPrinterW@20 = GetPrinterW +_GetPrinterDriverA@24 = GetPrinterDriverA +_GetPrinterDriverW@24 = GetPrinterDriverW +_GetPrinterDriverDirectoryA@24 = GetPrinterDriverDirectoryA +_GetPrinterDriverDirectoryW@24 = GetPrinterDriverDirectoryW +_EnumPrintersA@28 = EnumPrintersA +_EnumPrintersW@28 = EnumPrintersW +_AddPrinterConnectionA@4 = AddPrinterConnectionA +_AddPrinterConnectionW@4 = AddPrinterConnectionW +_DeletePrinterConnectionA@4 = DeletePrinterConnectionA +_DeletePrinterConnectionW@4 = DeletePrinterConnectionW +_AddPrinterDriverA@12 = AddPrinterDriverA +_AddPrinterDriverW@12 = AddPrinterDriverW +_AddPrinterDriverExA@16 = AddPrinterDriverExA +_AddPrinterDriverExW@16 = AddPrinterDriverExW +_EnumPrinterDriversA@28 = EnumPrinterDriversA +_EnumPrinterDriversW@28 = EnumPrinterDriversW +_DeletePrinterDriverA@12 = DeletePrinterDriverA +_DeletePrinterDriverW@12 = DeletePrinterDriverW +_DeletePrinterDriverExA@20 = DeletePrinterDriverExA +_DeletePrinterDriverExW@20 = DeletePrinterDriverExW +_AddPrintProcessorA@16 = AddPrintProcessorA +_AddPrintProcessorW@16 = AddPrintProcessorW +_EnumPrintProcessorsA@28 = EnumPrintProcessorsA +_EnumPrintProcessorsW@28 = EnumPrintProcessorsW +_GetPrintProcessorDirectoryA@24 = GetPrintProcessorDirectoryA +_GetPrintProcessorDirectoryW@24 = GetPrintProcessorDirectoryW +_EnumPrintProcessorDatatypesA@28 = EnumPrintProcessorDatatypesA +_EnumPrintProcessorDatatypesW@28 = EnumPrintProcessorDatatypesW +_AddPerMachineConnectionA@16 = AddPerMachineConnectionA +_AddPerMachineConnectionW@16 = AddPerMachineConnectionW +_DeletePerMachineConnectionA@8 = DeletePerMachineConnectionA +_DeletePerMachineConnectionW@8 = DeletePerMachineConnectionW +_EnumPerMachineConnectionsA@20 = EnumPerMachineConnectionsA +_EnumPerMachineConnectionsW@20 = EnumPerMachineConnectionsW +_LoadPrinterDriver@4 = LoadPrinterDriver +_SplDriverUnloadComplete@4 = SplDriverUnloadComplete +_RefCntLoadDriver@16 = RefCntLoadDriver +_RefCntUnloadDriver@8 = RefCntUnloadDriver +_ForceUnloadDriver@4 = ForceUnloadDriver +_OpenPrinterA@12 = OpenPrinterA +_OpenPrinterW@12 = OpenPrinterW +_ResetPrinterA@8 = ResetPrinterA +_ResetPrinterW@8 = ResetPrinterW +_StartDocPrinterA@12 = StartDocPrinterA +_StartDocPrinterW@12 = StartDocPrinterW +_StartPagePrinter@4 = StartPagePrinter +_WritePrinter@16 = WritePrinter +_SeekPrinter@24 = SeekPrinter +_EndPagePrinter@4 = EndPagePrinter +_GetPrinterDataA@24 = GetPrinterDataA +_GetPrinterDataW@24 = GetPrinterDataW +_SetPrinterDataA@20 = SetPrinterDataA +_SetPrinterDataW@20 = SetPrinterDataW +_AbortPrinter@4 = AbortPrinter +_ReadPrinter@16 = ReadPrinter +_SplReadPrinter@12 = SplReadPrinter +_EndDocPrinter@4 = EndDocPrinter +_AddJobA@20 = AddJobA +_AddJobW@20 = AddJobW +_ScheduleJob@8 = ScheduleJob +_WaitForPrinterChange@8 = WaitForPrinterChange +_FindFirstPrinterChangeNotification@16 = FindFirstPrinterChangeNotification +_FindNextPrinterChangeNotification@16 = FindNextPrinterChangeNotification +_FindClosePrinterChangeNotification@4 = FindClosePrinterChangeNotification +_FreePrinterNotifyInfo@4 = FreePrinterNotifyInfo +_PrinterMessageBoxA@24 = PrinterMessageBoxA +_PrinterMessageBoxW@24 = PrinterMessageBoxW +_ClosePrinter@4 = ClosePrinter +_GetSpoolFileHandle@4 = GetSpoolFileHandle +_CommitSpoolData@12 = CommitSpoolData +_CloseSpoolFileHandle@8 = CloseSpoolFileHandle +_AddFormA@12 = AddFormA +_AddFormW@12 = AddFormW +_DeleteFormA@8 = DeleteFormA +_DeleteFormW@8 = DeleteFormW +_GetFormA@24 = GetFormA +_GetFormW@24 = GetFormW +_SetFormA@16 = SetFormA +_SetFormW@16 = SetFormW +_EnumFormsA@24 = EnumFormsA +_EnumFormsW@24 = EnumFormsW +_EnumPortsA@24 = EnumPortsA +_EnumPortsW@24 = EnumPortsW +_EnumMonitorsA@24 = EnumMonitorsA +_EnumMonitorsW@24 = EnumMonitorsW +_AddPortA@12 = AddPortA +_AddPortW@12 = AddPortW +_ConfigurePortA@12 = ConfigurePortA +_ConfigurePortW@12 = ConfigurePortW +_DeletePortA@12 = DeletePortA +_DeletePortW@12 = DeletePortW +_CreatePrinterIC@8 = CreatePrinterIC +_PlayGdiScriptOnPrinterIC@24 = PlayGdiScriptOnPrinterIC +_DeletePrinterIC@4 = DeletePrinterIC +_DeviceMode@16 = DeviceMode +_ExtDeviceMode@32 = ExtDeviceMode +_AdvancedSetupDialog@16 = AdvancedSetupDialog +_DeviceCapabilities@20 = DeviceCapabilities +_DeviceCapabilitiesA@20 = DeviceCapabilitiesA +_DeviceCapabilitiesW@20 = DeviceCapabilitiesW +_DocumentPropertiesA@24 = DocumentPropertiesA +_DocumentPropertiesW@24 = DocumentPropertiesW +_AdvancedDocumentPropertiesA@20 = AdvancedDocumentPropertiesA +_AdvancedDocumentPropertiesW@20 = AdvancedDocumentPropertiesW +_PrinterProperties@8 = PrinterProperties +_ConnectToPrinterDlg@8 = ConnectToPrinterDlg +_StartDocDlgW@8 = StartDocDlgW +_StartDocDlgA@8 = StartDocDlgA +_AddMonitorA@12 = AddMonitorA +_AddMonitorW@12 = AddMonitorW +_DeleteMonitorA@12 = DeleteMonitorA +_DeleteMonitorW@12 = DeleteMonitorW +_DeletePrintProcessorA@12 = DeletePrintProcessorA +_DeletePrintProcessorW@12 = DeletePrintProcessorW +_AddPrintProvidorA@12 = AddPrintProvidorA +_AddPrintProvidorW@12 = AddPrintProvidorW +_DeletePrintProvidorA@12 = DeletePrintProvidorA +_DeletePrintProvidorW@12 = DeletePrintProvidorW +_AddPortExW@16 = AddPortExW +_AddPortExA@16 = AddPortExA +_DevQueryPrint@12 = DevQueryPrint +_DevQueryPrintEx@4 = DevQueryPrintEx +_SpoolerDevQueryPrintW@20 = SpoolerDevQueryPrintW +_SpoolerInit@0 = SpoolerInit +_SetAllocFailCount@20 = SetAllocFailCount +_DocumentEvent@28 = DocumentEvent +_QueryColorProfile@24 = QueryColorProfile +_QuerySpoolMode@12 = QuerySpoolMode +_QueryRemoteFonts@12 = QueryRemoteFonts +_DevicePropertySheets@8 = DevicePropertySheets +_DocumentPropertySheets@8 = DocumentPropertySheets +_AddPrinterConnectionUI@12 = AddPrinterConnectionUI +_ConvertAnsiDevModeToUnicodeDevmode@16 = ConvertAnsiDevModeToUnicodeDevmode +_ConvertUnicodeDevModeToAnsiDevmode@16 = ConvertUnicodeDevModeToAnsiDevmode +_SetPortA@16 = SetPortA +_SetPortW@16 = SetPortW +_SpoolerPrinterEvent@16 = SpoolerPrinterEvent +_EnumPrinterDataA@36 = EnumPrinterDataA +_EnumPrinterDataW@36 = EnumPrinterDataW +_DeletePrinterDataA@8 = DeletePrinterDataA +_DeletePrinterDataW@8 = DeletePrinterDataW +_SetPrinterDataExA@24 = SetPrinterDataExA +_SetPrinterDataExW@24 = SetPrinterDataExW +_GetPrinterDataExA@28 = GetPrinterDataExA +_GetPrinterDataExW@28 = GetPrinterDataExW +_EnumPrinterDataExA@24 = EnumPrinterDataExA +_EnumPrinterDataExW@24 = EnumPrinterDataExW +_EnumPrinterKeyA@20 = EnumPrinterKeyA +_EnumPrinterKeyW@20 = EnumPrinterKeyW +_DeletePrinterDataExA@12 = DeletePrinterDataExA +_DeletePrinterDataExW@12 = DeletePrinterDataExW +_DeletePrinterKeyA@8 = DeletePrinterKeyA +_DeletePrinterKeyW@8 = DeletePrinterKeyW +_EnumPrinterPropertySheets@16 = EnumPrinterPropertySheets +_GetPrinterWebInformation@16 = GetPrinterWebInformation +_ClusterSplOpen@20 = ClusterSplOpen +_ClusterSplClose@4 = ClusterSplClose +_ClusterSplIsAlive@4 = ClusterSplIsAlive +_GetDefaultPrinterA@8 = GetDefaultPrinterA +_SetDefaultPrinterA@4 = SetDefaultPrinterA +_GetDefaultPrinterW@8 = GetDefaultPrinterW +_SetDefaultPrinterW@4 = SetDefaultPrinterW +_SetPrinterHTMLViewA@12 = SetPrinterHTMLViewA +_SetPrinterHTMLViewW@12 = SetPrinterHTMLViewW +_GetPrinterHTMLViewA@20 = GetPrinterHTMLViewA +_GetPrinterHTMLViewW@20 = GetPrinterHTMLViewW +_XcvDataW@32 = XcvDataW +_PublishPrinterA@24 = PublishPrinterA _PublishPrinterW@24 = PublishPrinterW@24 \ No newline at end of file From 7884c9c55c998164a7515fcd3e8ae31300944c91 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 18:28:07 +0000 Subject: [PATCH 149/768] def: Sort exported definition lists --- def/odbc32.def | 2 +- def/rpcrt4.def | 96 ++++----- def/shell32.def | 494 +++++++++++++++++++++++------------------------ def/version.def | 16 +- def/winspool.def | 300 ++++++++++++++-------------- 5 files changed, 454 insertions(+), 454 deletions(-) diff --git a/def/odbc32.def b/def/odbc32.def index 490f678b28..3786e5ba03 100644 --- a/def/odbc32.def +++ b/def/odbc32.def @@ -2,8 +2,8 @@ LIBRARY odbc32 EXETYPE NT SUBSYSTEM WINDOWS EXPORTS -_SQLAllocEnv@4 = SQLAllocEnv _SQLAllocConnect@8 = SQLAllocConnect +_SQLAllocEnv@4 = SQLAllocEnv _SQLAllocHandle@12 = SQLAllocHandle _SQLColAttribute@28 = SQLColAttribute _SQLConnect@28 = SQLConnect diff --git a/def/rpcrt4.def b/def/rpcrt4.def index 91c6e4f274..dfe6e9d17e 100644 --- a/def/rpcrt4.def +++ b/def/rpcrt4.def @@ -13,6 +13,12 @@ _CStdStubBuffer_IsIIDSupported@8 = CStdStubBuffer_IsIIDSupported _CStdStubBuffer_QueryInterface@12 = CStdStubBuffer_QueryInterface _DceErrorInqTextA@8 = DceErrorInqTextA _DceErrorInqTextW@8 = DceErrorInqTextW +_GlobalMutexClearExternal@0 = GlobalMutexClearExternal +_GlobalMutexRequestExternal@0 = GlobalMutexRequestExternal +_IUnknown_AddRef_Proxy@4 = IUnknown_AddRef_Proxy +_IUnknown_QueryInterface_Proxy@12 = IUnknown_QueryInterface_Proxy +_IUnknown_Release_Proxy@4 = IUnknown_Release_Proxy +_I_RpcAbortAsyncCall@8 = I_RpcAbortAsyncCall _I_RpcAllocate@4 = I_RpcAllocate _I_RpcAsyncAbortCall@8 = I_RpcAsyncAbortCall _I_RpcAsyncSetHandle@8 = I_RpcAsyncSetHandle @@ -23,12 +29,14 @@ _I_RpcBindingInqConnId@12 = I_RpcBindingInqConnId _I_RpcBindingInqDynamicEndpoint@8 = I_RpcBindingInqDynamicEndpoint _I_RpcBindingInqDynamicEndpointA@8 = I_RpcBindingInqDynamicEndpointA _I_RpcBindingInqDynamicEndpointW@8 = I_RpcBindingInqDynamicEndpointW +_I_RpcBindingInqSecurityContext@8 = I_RpcBindingInqSecurityContext _I_RpcBindingInqTransportType@8 = I_RpcBindingInqTransportType +_I_RpcBindingInqWireIdForSnego@8 = I_RpcBindingInqWireIdForSnego _I_RpcBindingIsClientLocal@8 = I_RpcBindingIsClientLocal _I_RpcBindingToStaticStringBindingW@8 = I_RpcBindingToStaticStringBindingW _I_RpcClearMutex@4 = I_RpcClearMutex -_I_RpcConnectionSetSockBuffSize@8 = I_RpcConnectionSetSockBuffSize _I_RpcConnectionInqSockBuffSize@8 = I_RpcConnectionInqSockBuffSize +_I_RpcConnectionSetSockBuffSize@8 = I_RpcConnectionSetSockBuffSize _I_RpcDeleteMutex@4 = I_RpcDeleteMutex _I_RpcFree@4 = I_RpcFree _I_RpcFreeBuffer@4 = I_RpcFreeBuffer @@ -40,8 +48,6 @@ _I_RpcGetCurrentCallHandle@0 = I_RpcGetCurrentCallHandle _I_RpcGetExtendedError@0 = I_RpcGetExtendedError _I_RpcGetServerContextList@4 = I_RpcGetServerContextList _I_RpcIfInqTransferSyntaxes@16 = I_RpcIfInqTransferSyntaxes -_I_RpcBindingInqSecurityContext@8 = I_RpcBindingInqSecurityContext -_I_RpcBindingInqWireIdForSnego@8 = I_RpcBindingInqWireIdForSnego _I_RpcLogEvent@28 = I_RpcLogEvent _I_RpcMapWin32Status@4 = I_RpcMapWin32Status _I_RpcMonitorAssociation@12 = I_RpcMonitorAssociation @@ -58,31 +64,29 @@ _I_RpcRequestMutex@4 = I_RpcRequestMutex _I_RpcSend@4 = I_RpcSend _I_RpcSendReceive@4 = I_RpcSendReceive _I_RpcServerAllocateIpPort@8 = I_RpcServerAllocateIpPort -_I_RpcServerSetAddressChangeFn@4 = I_RpcServerSetAddressChangeFn _I_RpcServerInqAddressChangeFn@0 = I_RpcServerInqAddressChangeFn _I_RpcServerInqTransportType@4 = I_RpcServerInqTransportType _I_RpcServerRegisterForwardFunction@4 = I_RpcServerRegisterForwardFunction +_I_RpcServerSetAddressChangeFn@4 = I_RpcServerSetAddressChangeFn _I_RpcServerUseProtseq2A@20 = I_RpcServerUseProtseq2A -_I_RpcServerUseProtseqEp2A@24 = I_RpcServerUseProtseqEp2A _I_RpcServerUseProtseq2W@20 = I_RpcServerUseProtseq2W +_I_RpcServerUseProtseqEp2A@24 = I_RpcServerUseProtseqEp2A _I_RpcServerUseProtseqEp2W@24 = I_RpcServerUseProtseqEp2W +_I_RpcSetAsyncHandle@8 = I_RpcSetAsyncHandle _I_RpcSetServerContextList@8 = I_RpcSetServerContextList _I_RpcSsDontSerializeContext@0 = I_RpcSsDontSerializeContext _I_RpcStopMonitorAssociation@4 = I_RpcStopMonitorAssociation _I_RpcTransConnectionAllocatePacket@8 = I_RpcTransConnectionAllocatePacket _I_RpcTransConnectionFreePacket@8 = I_RpcTransConnectionFreePacket _I_RpcTransConnectionReallocPacket@16 = I_RpcTransConnectionReallocPacket -_I_RpcTransDatagramAllocate@16 = I_RpcTransDatagramAllocate _I_RpcTransDatagramAllocate2@16 = I_RpcTransDatagramAllocate2 +_I_RpcTransDatagramAllocate@16 = I_RpcTransDatagramAllocate _I_RpcTransDatagramFree@12 = I_RpcTransDatagramFree _I_RpcTransGetAddressList@8 = I_RpcTransGetAddressList _I_RpcTransGetThreadEvent@0 = I_RpcTransGetThreadEvent _I_RpcTransIoCancelled@8 = I_RpcTransIoCancelled _I_RpcTransServerNewConnection@4 = I_RpcTransServerNewConnection _I_UuidCreate@4 = I_UuidCreate -_IUnknown_AddRef_Proxy@4 = IUnknown_AddRef_Proxy -_IUnknown_QueryInterface_Proxy@12 = IUnknown_QueryInterface_Proxy -_IUnknown_Release_Proxy@4 = IUnknown_Release_Proxy _MIDL_wchar_strcpy@8 = MIDL_wchar_strcpy _MIDL_wchar_strlen@4 = MIDL_wchar_strlen _MesBufferHandleReset@24 = MesBufferHandleReset @@ -97,12 +101,12 @@ _MesInqProcEncodingId@12 = MesInqProcEncodingId _NDRCContextBinding@4 = NDRCContextBinding _NDRCContextMarshall@8 = NDRCContextMarshall _NDRCContextUnmarshall@16 = NDRCContextUnmarshall +_NDRSContextMarshall2@24 = NDRSContextMarshall2 _NDRSContextMarshall@12 = NDRSContextMarshall -_NDRSContextUnmarshall@8 = NDRSContextUnmarshall _NDRSContextMarshallEx@16 = NDRSContextMarshallEx -_NDRSContextUnmarshallEx@12 = NDRSContextUnmarshallEx -_NDRSContextMarshall2@24 = NDRSContextMarshall2 _NDRSContextUnmarshall2@20 = NDRSContextUnmarshall2 +_NDRSContextUnmarshall@8 = NDRSContextUnmarshall +_NDRSContextUnmarshallEx@12 = NDRSContextUnmarshallEx _NDRcopy@12 = NDRcopy _NdrAllocate@8 = NdrAllocate _NdrAsyncClientCall = NdrAsyncClientCall @@ -111,6 +115,8 @@ _NdrByteCountPointerBufferSize@12 = NdrByteCountPointerBufferSize _NdrByteCountPointerFree@12 = NdrByteCountPointerFree _NdrByteCountPointerMarshall@12 = NdrByteCountPointerMarshall _NdrByteCountPointerUnmarshall@16 = NdrByteCountPointerUnmarshall +_NdrCStdStubBuffer2_Release@8 = NdrCStdStubBuffer2_Release +_NdrCStdStubBuffer_Release@8 = NdrCStdStubBuffer_Release _NdrClearOutParameters@12 = NdrClearOutParameters _NdrClientCall = NdrClientCall _NdrClientCall2 = NdrClientCall2 @@ -154,13 +160,11 @@ _NdrConformantVaryingStructMemorySize@8 = NdrConformantVaryingStructMemorySize _NdrConformantVaryingStructUnmarshall@16 = NdrConformantVaryingStructUnmarshall _NdrContextHandleInitialize@8 = NdrContextHandleInitialize _NdrContextHandleSize@12 = NdrContextHandleSize -_NdrConvert@8 = NdrConvert _NdrConvert2@12 = NdrConvert2 +_NdrConvert@8 = NdrConvert _NdrCorrelationFree@4 = NdrCorrelationFree _NdrCorrelationInitialize@16 = NdrCorrelationInitialize _NdrCorrelationPass@4 = NdrCorrelationPass -_NdrCStdStubBuffer_Release@8 = NdrCStdStubBuffer_Release -_NdrCStdStubBuffer2_Release@8 = NdrCStdStubBuffer2_Release _NdrDcomAsyncClientCall = NdrDcomAsyncClientCall _NdrDcomAsyncStubCall@16 = NdrDcomAsyncStubCall _NdrDllCanUnloadNow@4 = NdrDllCanUnloadNow @@ -186,8 +190,8 @@ _NdrFullPointerXlatFree@4 = NdrFullPointerXlatFree _NdrFullPointerXlatInit@8 = NdrFullPointerXlatInit _NdrGetBuffer@12 = NdrGetBuffer _NdrGetDcomProtocolVersion@8 = NdrGetDcomProtocolVersion -_NdrGetPipeBuffer@12 = NdrGetPipeBuffer _NdrGetPartialBuffer@4 = NdrGetPartialBuffer +_NdrGetPipeBuffer@12 = NdrGetPipeBuffer _NdrGetUserMarshalInfo@12 = NdrGetUserMarshalInfo _NdrInterfacePointerBufferSize@12 = NdrInterfacePointerBufferSize _NdrInterfacePointerFree@12 = NdrInterfacePointerFree @@ -202,12 +206,12 @@ _NdrMesProcEncodeDecode2 = NdrMesProcEncodeDecode2 _NdrMesSimpleTypeAlignSize@4 = NdrMesSimpleTypeAlignSize _NdrMesSimpleTypeDecode@12 = NdrMesSimpleTypeDecode _NdrMesSimpleTypeEncode@16 = NdrMesSimpleTypeEncode -_NdrMesTypeAlignSize@16 = NdrMesTypeAlignSize -_NdrMesTypeDecode@16 = NdrMesTypeDecode -_NdrMesTypeEncode@16 = NdrMesTypeEncode _NdrMesTypeAlignSize2@20 = NdrMesTypeAlignSize2 +_NdrMesTypeAlignSize@16 = NdrMesTypeAlignSize _NdrMesTypeDecode2@20 = NdrMesTypeDecode2 +_NdrMesTypeDecode@16 = NdrMesTypeDecode _NdrMesTypeEncode2@20 = NdrMesTypeEncode2 +_NdrMesTypeEncode@16 = NdrMesTypeEncode _NdrMesTypeFree2@20 = NdrMesTypeFree2 _NdrNonConformantStringBufferSize@12 = NdrNonConformantStringBufferSize _NdrNonConformantStringMarshall@12 = NdrNonConformantStringMarshall @@ -225,8 +229,8 @@ _NdrOleFree@4 = NdrOleFree _NdrPipePull@16 = NdrPipePull _NdrPipePush@12 = NdrPipePush _NdrPipeSendReceive@8 = NdrPipeSendReceive -_NdrPipesInitialize@24 = NdrPipesInitialize _NdrPipesDone@4 = NdrPipesDone +_NdrPipesInitialize@24 = NdrPipesInitialize _NdrPointerBufferSize@12 = NdrPointerBufferSize _NdrPointerFree@12 = NdrPointerFree _NdrPointerMarshall@12 = NdrPointerMarshall @@ -240,18 +244,18 @@ _NdrProxySendReceive@8 = NdrProxySendReceive _NdrRangeUnmarshall@16 = NdrRangeUnmarshall _NdrRpcSmClientAllocate@4 = NdrRpcSmClientAllocate _NdrRpcSmClientFree@4 = NdrRpcSmClientFree +_NdrRpcSmSetClientToOsf@4 = NdrRpcSmSetClientToOsf _NdrRpcSsDefaultAllocate@4 = NdrRpcSsDefaultAllocate _NdrRpcSsDefaultFree@4 = NdrRpcSsDefaultFree -_NdrRpcSmSetClientToOsf@4 = NdrRpcSmSetClientToOsf _NdrRpcSsDisableAllocate@4 = NdrRpcSsDisableAllocate _NdrRpcSsEnableAllocate@4 = NdrRpcSsEnableAllocate _NdrSendReceive@8 = NdrSendReceive -_NdrServerCall@4 = NdrServerCall _NdrServerCall2@4 = NdrServerCall2 +_NdrServerCall@4 = NdrServerCall _NdrServerContextMarshall@12 = NdrServerContextMarshall -_NdrServerContextUnmarshall@4 = NdrServerContextUnmarshall _NdrServerContextNewMarshall@16 = NdrServerContextNewMarshall _NdrServerContextNewUnmarshall@8 = NdrServerContextNewUnmarshall +_NdrServerContextUnmarshall@4 = NdrServerContextUnmarshall _NdrServerInitialize@12 = NdrServerInitialize _NdrServerInitializeMarshall@8 = NdrServerInitializeMarshall _NdrServerInitializeNew@12 = NdrServerInitializeNew @@ -266,12 +270,18 @@ _NdrSimpleStructMemorySize@8 = NdrSimpleStructMemorySize _NdrSimpleStructUnmarshall@16 = NdrSimpleStructUnmarshall _NdrSimpleTypeMarshall@12 = NdrSimpleTypeMarshall _NdrSimpleTypeUnmarshall@12 = NdrSimpleTypeUnmarshall -_NdrStubCall@16 = NdrStubCall _NdrStubCall2@16 = NdrStubCall2 +_NdrStubCall@16 = NdrStubCall _NdrStubForwardingFunction@16 = NdrStubForwardingFunction _NdrStubGetBuffer@12 = NdrStubGetBuffer _NdrStubInitialize@16 = NdrStubInitialize _NdrStubInitializeMarshall@12 = NdrStubInitializeMarshall +_NdrUserMarshalBufferSize@12 = NdrUserMarshalBufferSize +_NdrUserMarshalFree@12 = NdrUserMarshalFree +_NdrUserMarshalMarshall@12 = NdrUserMarshalMarshall +_NdrUserMarshalMemorySize@8 = NdrUserMarshalMemorySize +_NdrUserMarshalSimpleTypeConvert@12 = NdrUserMarshalSimpleTypeConvert +_NdrUserMarshalUnmarshall@16 = NdrUserMarshalUnmarshall _NdrVaryingArrayBufferSize@12 = NdrVaryingArrayBufferSize _NdrVaryingArrayFree@12 = NdrVaryingArrayFree _NdrVaryingArrayMarshall@12 = NdrVaryingArrayMarshall @@ -282,12 +292,8 @@ _NdrXmitOrRepAsFree@12 = NdrXmitOrRepAsFree _NdrXmitOrRepAsMarshall@12 = NdrXmitOrRepAsMarshall _NdrXmitOrRepAsMemorySize@8 = NdrXmitOrRepAsMemorySize _NdrXmitOrRepAsUnmarshall@16 = NdrXmitOrRepAsUnmarshall -_NdrUserMarshalSimpleTypeConvert@12 = NdrUserMarshalSimpleTypeConvert -_NdrUserMarshalBufferSize@12 = NdrUserMarshalBufferSize -_NdrUserMarshalFree@12 = NdrUserMarshalFree -_NdrUserMarshalMarshall@12 = NdrUserMarshalMarshall -_NdrUserMarshalMemorySize@8 = NdrUserMarshalMemorySize -_NdrUserMarshalUnmarshall@16 = NdrUserMarshalUnmarshall +_NdrpSetRpcSsDefaults@8 = NdrpSetRpcSsDefaults@8 +_RpcAbortAsyncCall@8 = RpcAbortAsyncCall _RpcAsyncAbortCall@8 = RpcAsyncAbortCall _RpcAsyncCancelCall@8 = RpcAsyncCancelCall _RpcAsyncCompleteCall@8 = RpcAsyncCompleteCall @@ -299,14 +305,15 @@ _RpcBindingFree@4 = RpcBindingFree _RpcBindingFromStringBindingA@8 = RpcBindingFromStringBindingA _RpcBindingFromStringBindingW@8 = RpcBindingFromStringBindingW _RpcBindingInqAuthClientA@24 = RpcBindingInqAuthClientA -_RpcBindingInqAuthClientW@24 = RpcBindingInqAuthClientW _RpcBindingInqAuthClientExA@28 = RpcBindingInqAuthClientExA _RpcBindingInqAuthClientExW@28 = RpcBindingInqAuthClientExW +_RpcBindingInqAuthClientW@24 = RpcBindingInqAuthClientW _RpcBindingInqAuthInfoA@24 = RpcBindingInqAuthInfoA _RpcBindingInqAuthInfoExA@32 = RpcBindingInqAuthInfoExA _RpcBindingInqAuthInfoExW@32 = RpcBindingInqAuthInfoExW _RpcBindingInqAuthInfoW@24 = RpcBindingInqAuthInfoW _RpcBindingInqObject@8 = RpcBindingInqObject +_RpcBindingInqOption@12 = RpcBindingInqOption _RpcBindingReset@4 = RpcBindingReset _RpcBindingServerFromClient@8 = RpcBindingServerFromClient _RpcBindingSetAuthInfoA@24 = RpcBindingSetAuthInfoA @@ -315,23 +322,26 @@ _RpcBindingSetAuthInfoExW@28 = RpcBindingSetAuthInfoExW _RpcBindingSetAuthInfoW@24 = RpcBindingSetAuthInfoW _RpcBindingSetObject@8 = RpcBindingSetObject _RpcBindingSetOption@12 = RpcBindingSetOption -_RpcBindingInqOption@12 = RpcBindingInqOption _RpcBindingToStringBindingA@8 = RpcBindingToStringBindingA _RpcBindingToStringBindingW@8 = RpcBindingToStringBindingW _RpcBindingVectorFree@4 = RpcBindingVectorFree +_RpcCancelAsyncCall@8 = RpcCancelAsyncCall _RpcCancelThread@4 = RpcCancelThread _RpcCancelThreadEx@8 = RpcCancelThreadEx _RpcCertGeneratePrincipalNameA@12 = RpcCertGeneratePrincipalNameA _RpcCertGeneratePrincipalNameW@12 = RpcCertGeneratePrincipalNameW +_RpcCompleteAsyncCall@8 = RpcCompleteAsyncCall _RpcEpRegisterA@16 = RpcEpRegisterA _RpcEpRegisterNoReplaceA@16 = RpcEpRegisterNoReplaceA _RpcEpRegisterNoReplaceW@16 = RpcEpRegisterNoReplaceW _RpcEpRegisterW@16 = RpcEpRegisterW _RpcEpResolveBinding@8 = RpcEpResolveBinding _RpcEpUnregister@12 = RpcEpUnregister +_RpcGetAsyncCallStatus@4 = RpcGetAsyncCallStatus _RpcIfIdVectorFree@4 = RpcIfIdVectorFree _RpcIfInqId@8 = RpcIfInqId _RpcImpersonateClient@4 = RpcImpersonateClient +_RpcInitializeAsyncHandle@8 = RpcInitializeAsyncHandle _RpcMgmtEnableIdleCleanup@0 = RpcMgmtEnableIdleCleanup _RpcMgmtEpEltInqBegin@24 = RpcMgmtEpEltInqBegin _RpcMgmtEpEltInqDone@4 = RpcMgmtEpEltInqDone @@ -364,6 +374,7 @@ _RpcObjectSetType@8 = RpcObjectSetType _RpcProtseqVectorFreeA@4 = RpcProtseqVectorFreeA _RpcProtseqVectorFreeW@4 = RpcProtseqVectorFreeW _RpcRaiseException@4 = RpcRaiseException +_RpcRegisterAsyncInfo@4 = RpcRegisterAsyncInfo _RpcRevertToSelf@0 = RpcRevertToSelf _RpcRevertToSelfEx@4 = RpcRevertToSelfEx _RpcServerInqBindings@4 = RpcServerInqBindings @@ -373,8 +384,8 @@ _RpcServerInqIf@12 = RpcServerInqIf _RpcServerListen@12 = RpcServerListen _RpcServerRegisterAuthInfoA@16 = RpcServerRegisterAuthInfoA _RpcServerRegisterAuthInfoW@16 = RpcServerRegisterAuthInfoW -_RpcServerRegisterIf@12 = RpcServerRegisterIf _RpcServerRegisterIf2@28 = RpcServerRegisterIf2 +_RpcServerRegisterIf@12 = RpcServerRegisterIf _RpcServerRegisterIfEx@24 = RpcServerRegisterIfEx _RpcServerTestCancel@4 = RpcServerTestCancel _RpcServerUnregisterIf@12 = RpcServerUnregisterIf @@ -383,17 +394,17 @@ _RpcServerUseAllProtseqsEx@12 = RpcServerUseAllProtseqsEx _RpcServerUseAllProtseqsIf@12 = RpcServerUseAllProtseqsIf _RpcServerUseAllProtseqsIfEx@16 = RpcServerUseAllProtseqsIfEx _RpcServerUseProtseqA@12 = RpcServerUseProtseqA -_RpcServerUseProtseqExA@16 = RpcServerUseProtseqExA _RpcServerUseProtseqEpA@16 = RpcServerUseProtseqEpA _RpcServerUseProtseqEpExA@20 = RpcServerUseProtseqEpExA -_RpcServerUseProtseqEpW@16 = RpcServerUseProtseqEpW _RpcServerUseProtseqEpExW@20 = RpcServerUseProtseqEpExW +_RpcServerUseProtseqEpW@16 = RpcServerUseProtseqEpW +_RpcServerUseProtseqExA@16 = RpcServerUseProtseqExA +_RpcServerUseProtseqExW@16 = RpcServerUseProtseqExW _RpcServerUseProtseqIfA@16 = RpcServerUseProtseqIfA _RpcServerUseProtseqIfExA@20 = RpcServerUseProtseqIfExA -_RpcServerUseProtseqIfW@16 = RpcServerUseProtseqIfW _RpcServerUseProtseqIfExW@20 = RpcServerUseProtseqIfExW +_RpcServerUseProtseqIfW@16 = RpcServerUseProtseqIfW _RpcServerUseProtseqW@12 = RpcServerUseProtseqW -_RpcServerUseProtseqExW@16 = RpcServerUseProtseqExW _RpcServerYield@0 = RpcServerYield _RpcSmAllocate@8 = RpcSmAllocate _RpcSmClientFree@4 = RpcSmClientFree @@ -455,14 +466,3 @@ _short_from_ndr_temp@12 = short_from_ndr_temp _tree_into_ndr@16 = tree_into_ndr _tree_peek_ndr@16 = tree_peek_ndr _tree_size_ndr@16 = tree_size_ndr -_RpcInitializeAsyncHandle@8 = RpcInitializeAsyncHandle -_RpcRegisterAsyncInfo@4 = RpcRegisterAsyncInfo -_RpcGetAsyncCallStatus@4 = RpcGetAsyncCallStatus -_RpcCompleteAsyncCall@8 = RpcCompleteAsyncCall -_RpcAbortAsyncCall@8 = RpcAbortAsyncCall -_RpcCancelAsyncCall@8 = RpcCancelAsyncCall -_I_RpcSetAsyncHandle@8 = I_RpcSetAsyncHandle -_I_RpcAbortAsyncCall@8 = I_RpcAbortAsyncCall -_GlobalMutexRequestExternal@0 = GlobalMutexRequestExternal -_GlobalMutexClearExternal@0 = GlobalMutexClearExternal -_NdrpSetRpcSsDefaults@8 = NdrpSetRpcSsDefaults@8 diff --git a/def/shell32.def b/def/shell32.def index fb3bea0add..ae494f7c7f 100644 --- a/def/shell32.def +++ b/def/shell32.def @@ -2,251 +2,251 @@ LIBRARY shell32 EXETYPE NT SUBSYSTEM WINDOWS EXPORTS -_WriteCabinetState@4 = WriteCabinetState -_Win32DeleteFile@4 = Win32DeleteFile -_WOWShellExecute@28 = WOWShellExecute -_SignalFileOpen@4 = SignalFileOpen -_Shell_NotifyIconW@8 = Shell_NotifyIconW -_Shell_NotifyIconA@8 = Shell_NotifyIconA -_Shell_NotifyIcon@8 = Shell_NotifyIcon -_Shell_MergeMenus@24 = Shell_MergeMenus -_Shell_GetImageLists@8 = Shell_GetImageLists -_Shell_GetCachedImageIndex@12 = Shell_GetCachedImageIndex -_ShellMessageBoxW = ShellMessageBoxW -_ShellMessageBoxA = ShellMessageBoxA -_ShellHookProc@12 = ShellHookProc -_ShellExecuteW@24 = ShellExecuteW -_ShellExecuteExW@4 = ShellExecuteExW -_ShellExecuteExA@4 = ShellExecuteExA -_ShellExecuteEx@4 = ShellExecuteEx -_ShellExecuteA@24 = ShellExecuteA -_ShellAboutW@16 = ShellAboutW -_ShellAboutA@16 = ShellAboutA -_SheShortenPathW@8 = SheShortenPathW -_SheShortenPathA@8 = SheShortenPathA -_SheSetCurDrive@4 = SheSetCurDrive -_SheRemoveQuotesW@4 = SheRemoveQuotesW -_SheRemoveQuotesA@4 = SheRemoveQuotesA -_SheGetPathOffsetW@4 = SheGetPathOffsetW -_SheGetDirW@8 = SheGetDirW -_SheGetDirExW@12 = SheGetDirExW -_SheGetDirA@8 = SheGetDirA -_SheGetCurDrive@0 = SheGetCurDrive -_SheFullPathW@12 = SheFullPathW -_SheFullPathA@12 = SheFullPathA -_SheConvertPathW@12 = SheConvertPathW -_SheChangeDirW@4 = SheChangeDirW -_SheChangeDirExW@4 = SheChangeDirExW -_SheChangeDirExA@4 = SheChangeDirExA -_SheChangeDirA@4 = SheChangeDirA -_SHValidateUNC@12 = SHValidateUNC -_SHUpdateRecycleBinIcon@0 = SHUpdateRecycleBinIcon -_SHUpdateImageW@16 = SHUpdateImageW -_SHUpdateImageA@16 = SHUpdateImageA -_SHUnlockShared@4 = SHUnlockShared -_SHTestTokenMembership@8 = SHTestTokenMembership -_SHStartNetConnectionDialogW@12 = SHStartNetConnectionDialogW -_SHSimpleIDListFromPath@4 = SHSimpleIDListFromPath -_SHShellFolderView_Message@12 = SHShellFolderView_Message -_SHSetUnreadMailCountW@12 = SHSetUnreadMailCountW -_SHSetLocalizedName@12 = SHSetLocalizedName -_SHSetInstanceExplorer@4 = SHSetInstanceExplorer -_SHRunControlPanel@8 = SHRunControlPanel -_SHRestricted@4 = SHRestricted -_SHReplaceFromPropSheetExtArray@16 = SHReplaceFromPropSheetExtArray -_SHQueryRecycleBinW@8 = SHQueryRecycleBinW -_SHQueryRecycleBinA@8 = SHQueryRecycleBinA -_SHPropStgWriteMultiple@24 = SHPropStgWriteMultiple -_SHPropStgReadMultiple@20 = SHPropStgReadMultiple -_SHPropStgCreate@32 = SHPropStgCreate -_SHPathPrepareForWriteW@16 = SHPathPrepareForWriteW -_SHPathPrepareForWriteA@16 = SHPathPrepareForWriteA -_SHParseDisplayName@20 = SHParseDisplayName -_SHOpenPropSheetW@28 = SHOpenPropSheetW -_SHOpenFolderAndSelectItems@16 = SHOpenFolderAndSelectItems -_SHObjectProperties@16 = SHObjectProperties -_SHMultiFileProperties@8 = SHMultiFileProperties -_SHMapPIDLToSystemImageListIndex@12 = SHMapPIDLToSystemImageListIndex -_SHMapIDListToImageListIndexAsync@36 = SHMapIDListToImageListIndexAsync -_SHLockShared@8 = SHLockShared -_SHLoadOLE@4 = SHLoadOLE -_SHLoadNonloadedIconOverlayIdentifiers@0 = SHLoadNonloadedIconOverlayIdentifiers -_SHLoadInProc@4 = SHLoadInProc -_SHLimitInputEdit@8 = SHLimitInputEdit -_SHIsFileAvailableOffline@8 = SHIsFileAvailableOffline -_SHInvokePrinterCommandW@20 = SHInvokePrinterCommandW -_SHInvokePrinterCommandA@20 = SHInvokePrinterCommandA -_SHILCreateFromPath@12 = SHILCreateFromPath -_SHHandleUpdateImage@4 = SHHandleUpdateImage -_SHGetUnreadMailCountW@24 = SHGetUnreadMailCountW -_SHGetSpecialFolderPathW@16 = SHGetSpecialFolderPathW -_SHGetSpecialFolderPathA@16 = SHGetSpecialFolderPathA -_SHGetSpecialFolderPath@16 = SHGetSpecialFolderPath -_SHGetSpecialFolderLocation@12 = SHGetSpecialFolderLocation -_SHGetShellStyleHInstance@0 = SHGetShellStyleHInstance -_SHGetSettings@8 = SHGetSettings -_SHGetSetSettings@12 = SHGetSetSettings -_SHGetSetFolderCustomSettingsW@12 = SHGetSetFolderCustomSettingsW -_SHGetRealIDL@12 = SHGetRealIDL -_SHGetPathFromIDListW@8 = SHGetPathFromIDListW -_SHGetPathFromIDListA@8 = SHGetPathFromIDListA -_SHGetPathFromIDList@8 = SHGetPathFromIDList -_SHGetNewLinkInfoW@20 = SHGetNewLinkInfoW -_SHGetNewLinkInfoA@20 = SHGetNewLinkInfoA -_SHGetNewLinkInfo@20 = SHGetNewLinkInfo -_SHGetMalloc@4 = SHGetMalloc -_SHGetInstanceExplorer@4 = SHGetInstanceExplorer -_SHGetIconOverlayIndexW@8 = SHGetIconOverlayIndexW -_SHGetIconOverlayIndexA@8 = SHGetIconOverlayIndexA -_SHGetFolderPathW@20 = SHGetFolderPathW -_SHGetFolderPathAndSubDirW@24 = SHGetFolderPathAndSubDirW -_SHGetFolderPathAndSubDirA@24 = SHGetFolderPathAndSubDirA -_SHGetFolderPathA@20 = SHGetFolderPathA -_SHGetFolderLocation@20 = SHGetFolderLocation -_SHGetFileInfoW@20 = SHGetFileInfoW -_SHGetFileInfoA@20 = SHGetFileInfoA -_SHGetFileInfo@20 = SHGetFileInfo -_SHGetDiskFreeSpaceExW@16 = SHGetDiskFreeSpaceExW -_SHGetDiskFreeSpaceExA@16 = SHGetDiskFreeSpaceExA -_SHGetDiskFreeSpaceA@16 = SHGetDiskFreeSpaceA -_SHGetDesktopFolder@4 = SHGetDesktopFolder -_SHGetDataFromIDListW@20 = SHGetDataFromIDListW -_SHGetDataFromIDListA@20 = SHGetDataFromIDListA -_SHGetAttributesFromDataObject@16 = SHGetAttributesFromDataObject -_SHFreeShared@8 = SHFreeShared -_SHFreeNameMappings@4 = SHFreeNameMappings -_SHFree@4 = SHFree -_SHFormatDrive@16 = SHFormatDrive -_SHFlushSFCache@0 = SHFlushSFCache -_SHFlushClipboard@0 = SHFlushClipboard -_SHFind_InitMenuPopup@16 = SHFind_InitMenuPopup -_SHFindFiles@8 = SHFindFiles -_SHFileOperationW@4 = SHFileOperationW -_SHFileOperationA@4 = SHFileOperationA -_SHFileOperation@4 = SHFileOperation -_SHExtractIconsW@32 = SHExtractIconsW -_SHEnumerateUnreadMailAccountsW@16 = SHEnumerateUnreadMailAccountsW -_SHEmptyRecycleBinW@12 = SHEmptyRecycleBinW -_SHEmptyRecycleBinA@12 = SHEmptyRecycleBinA -_SHDoDragDrop@20 = SHDoDragDrop -_SHDestroyPropSheetExtArray@4 = SHDestroyPropSheetExtArray -_SHDefExtractIconW@24 = SHDefExtractIconW -_SHDefExtractIconA@24 = SHDefExtractIconA -_SHCreateStdEnumFmtEtc@12 = SHCreateStdEnumFmtEtc -_SHCreateShellItem@16 = SHCreateShellItem -_SHCreateShellFolderViewEx@8 = SHCreateShellFolderViewEx -_SHCreateShellFolderView@8 = SHCreateShellFolderView -_SHCreateQueryCancelAutoPlayMoniker@4 = SHCreateQueryCancelAutoPlayMoniker -_SHCreatePropSheetExtArray@12 = SHCreatePropSheetExtArray -_SHCreateProcessAsUserW@4 = SHCreateProcessAsUserW -_SHCreateFileExtractIconW@16 = SHCreateFileExtractIconW -_SHCreateDirectoryExW@12 = SHCreateDirectoryExW -_SHCreateDirectoryExA@12 = SHCreateDirectoryExA -_SHCreateDirectory@8 = SHCreateDirectory -_SHCoCreateInstance@20 = SHCoCreateInstance -_SHCloneSpecialIDList@12 = SHCloneSpecialIDList -_SHChangeNotifyRegister@24 = SHChangeNotifyRegister -_SHChangeNotifyDeregister@4 = SHChangeNotifyDeregister -_SHChangeNotify@16 = SHChangeNotify -_SHChangeNotification_Unlock@4 = SHChangeNotification_Unlock -_SHChangeNotification_Lock@16 = SHChangeNotification_Lock -_SHCLSIDFromString@8 = SHCLSIDFromString -_SHBrowseForFolderW@4 = SHBrowseForFolderW -_SHBrowseForFolderA@4 = SHBrowseForFolderA -_SHBrowseForFolder@4 = SHBrowseForFolder -_SHBindToParent@16 = SHBindToParent -_SHAppBarMessage@8 = SHAppBarMessage -_SHAllocShared@12 = SHAllocShared -_SHAlloc@4 = SHAlloc -_SHAddToRecentDocs@8 = SHAddToRecentDocs -_SHAddFromPropSheetExtArray@12 = SHAddFromPropSheetExtArray -_RestartDialogEx@16 = RestartDialogEx -_RestartDialog@12 = RestartDialog -_RegenerateUserEnvironment@8 = RegenerateUserEnvironment -_RealShellExecuteW@40 = RealShellExecuteW -_RealShellExecuteExW@44 = RealShellExecuteExW -_RealShellExecuteExA@44 = RealShellExecuteExA -_RealShellExecuteA@40 = RealShellExecuteA -_RealDriveType@8 = RealDriveType -_ReadCabinetState@8 = ReadCabinetState -_PifMgr_SetProperties@20 = PifMgr_SetProperties -_PifMgr_OpenProperties@16 = PifMgr_OpenProperties -_PifMgr_GetProperties@20 = PifMgr_GetProperties -_PifMgr_CloseProperties@8 = PifMgr_CloseProperties -_PickIconDlg@16 = PickIconDlg -_PathYetAnotherMakeUniqueName@16 = PathYetAnotherMakeUniqueName -_PathResolve@12 = PathResolve -_PathQualify@4 = PathQualify -_PathProcessCommand@16 = PathProcessCommand -_PathMakeUniqueName@20 = PathMakeUniqueName -_PathIsSlowW@8 = PathIsSlowW -_PathIsSlowA@8 = PathIsSlowA -_PathIsExe@4 = PathIsExe -_PathGetShortPath@4 = PathGetShortPath -_PathCleanupSpec@8 = PathCleanupSpec -_OpenRegStream@16 = OpenRegStream -_IsUserAnAdmin@0 = IsUserAnAdmin -_IsNetDrive@4 = IsNetDrive -_IsLFNDriveW@4 = IsLFNDriveW -_IsLFNDriveA@4 = IsLFNDriveA -_IsLFNDrive@4 = IsLFNDrive -_InternalExtractIconListW@12 = InternalExtractIconListW -_InternalExtractIconListA@12 = InternalExtractIconListA -_ILSaveToStream@8 = ILSaveToStream -_ILRemoveLastID@4 = ILRemoveLastID -_ILLoadFromStream@8 = ILLoadFromStream -_ILIsParent@12 = ILIsParent -_ILIsEqual@8 = ILIsEqual -_ILGetSize@4 = ILGetSize -_ILGetNext@4 = ILGetNext -_ILFree@4 = ILFree -_ILFindLastID@4 = ILFindLastID -_ILFindChild@8 = ILFindChild -_ILCreateFromPathW@4 = ILCreateFromPathW -_ILCreateFromPathA@4 = ILCreateFromPathA -_ILCreateFromPath@4 = ILCreateFromPath -_ILCombine@8 = ILCombine -_ILCloneFirst@4 = ILCloneFirst -_ILClone@4 = ILClone -_ILAppendID@12 = ILAppendID -_GetFileNameFromBrowse@28 = GetFileNameFromBrowse -_FreeIconList@8 = FreeIconList -_FindExecutableW@12 = FindExecutableW -_FindExecutableA@12 = FindExecutableA -_FindExeDlgProc@16 = FindExeDlgProc -_ExtractVersionResource16W@8 = ExtractVersionResource16W -_ExtractIconW@12 = ExtractIconW -_ExtractIconResInfoW@20 = ExtractIconResInfoW -_ExtractIconResInfoA@20 = ExtractIconResInfoA -_ExtractIconExW@20 = ExtractIconExW -_ExtractIconExA@20 = ExtractIconExA -_ExtractIconEx@20 = ExtractIconEx -_ExtractIconA@12 = ExtractIconA -_ExtractAssociatedIconW@12 = ExtractAssociatedIconW -_ExtractAssociatedIconExW@16 = ExtractAssociatedIconExW -_ExtractAssociatedIconExA@16 = ExtractAssociatedIconExA -_ExtractAssociatedIconA@12 = ExtractAssociatedIconA -_DuplicateIcon@8 = DuplicateIcon -_DriveType@4 = DriveType -_DragQueryPoint@8 = DragQueryPoint -_DragQueryFileW@16 = DragQueryFileW -_DragQueryFileAorW@24 = DragQueryFileAorW -_DragQueryFileA@16 = DragQueryFileA -_DragQueryFile@16 = DragQueryFile -_DragFinish@4 = DragFinish -_DragAcceptFiles@8 = DragAcceptFiles -_DoEnvironmentSubstW@8 = DoEnvironmentSubstW -_DoEnvironmentSubstA@8 = DoEnvironmentSubstA -_DAD_ShowDragImage@4 = DAD_ShowDragImage -_DAD_SetDragImage@8 = DAD_SetDragImage -_DAD_DragMove@8 = DAD_DragMove -_DAD_DragLeave@0 = DAD_DragLeave -_DAD_DragEnterEx@12 = DAD_DragEnterEx -_DAD_DragEnterEx2@16 = DAD_DragEnterEx2 -_DAD_AutoScroll@12 = DAD_AutoScroll -_CommandLineToArgvW@8 = CommandLineToArgvW -_CheckEscapesW@8 = CheckEscapesW -_CheckEscapesA@8 = CheckEscapesA -_CallCPLEntry16@24 = CallCPLEntry16 -_CDefFolderMenu_Create@36 = CDefFolderMenu_Create _CDefFolderMenu_Create2@36 = CDefFolderMenu_Create +_CDefFolderMenu_Create@36 = CDefFolderMenu_Create +_CallCPLEntry16@24 = CallCPLEntry16 +_CheckEscapesA@8 = CheckEscapesA +_CheckEscapesW@8 = CheckEscapesW +_CommandLineToArgvW@8 = CommandLineToArgvW +_DAD_AutoScroll@12 = DAD_AutoScroll +_DAD_DragEnterEx2@16 = DAD_DragEnterEx2 +_DAD_DragEnterEx@12 = DAD_DragEnterEx +_DAD_DragLeave@0 = DAD_DragLeave +_DAD_DragMove@8 = DAD_DragMove +_DAD_SetDragImage@8 = DAD_SetDragImage +_DAD_ShowDragImage@4 = DAD_ShowDragImage +_DoEnvironmentSubstA@8 = DoEnvironmentSubstA +_DoEnvironmentSubstW@8 = DoEnvironmentSubstW +_DragAcceptFiles@8 = DragAcceptFiles +_DragFinish@4 = DragFinish +_DragQueryFile@16 = DragQueryFile +_DragQueryFileA@16 = DragQueryFileA +_DragQueryFileAorW@24 = DragQueryFileAorW +_DragQueryFileW@16 = DragQueryFileW +_DragQueryPoint@8 = DragQueryPoint +_DriveType@4 = DriveType +_DuplicateIcon@8 = DuplicateIcon +_ExtractAssociatedIconA@12 = ExtractAssociatedIconA +_ExtractAssociatedIconExA@16 = ExtractAssociatedIconExA +_ExtractAssociatedIconExW@16 = ExtractAssociatedIconExW +_ExtractAssociatedIconW@12 = ExtractAssociatedIconW +_ExtractIconA@12 = ExtractIconA +_ExtractIconEx@20 = ExtractIconEx +_ExtractIconExA@20 = ExtractIconExA +_ExtractIconExW@20 = ExtractIconExW +_ExtractIconResInfoA@20 = ExtractIconResInfoA +_ExtractIconResInfoW@20 = ExtractIconResInfoW +_ExtractIconW@12 = ExtractIconW +_ExtractVersionResource16W@8 = ExtractVersionResource16W +_FindExeDlgProc@16 = FindExeDlgProc +_FindExecutableA@12 = FindExecutableA +_FindExecutableW@12 = FindExecutableW +_FreeIconList@8 = FreeIconList +_GetFileNameFromBrowse@28 = GetFileNameFromBrowse +_ILAppendID@12 = ILAppendID +_ILClone@4 = ILClone +_ILCloneFirst@4 = ILCloneFirst +_ILCombine@8 = ILCombine +_ILCreateFromPath@4 = ILCreateFromPath +_ILCreateFromPathA@4 = ILCreateFromPathA +_ILCreateFromPathW@4 = ILCreateFromPathW +_ILFindChild@8 = ILFindChild +_ILFindLastID@4 = ILFindLastID +_ILFree@4 = ILFree +_ILGetNext@4 = ILGetNext +_ILGetSize@4 = ILGetSize +_ILIsEqual@8 = ILIsEqual +_ILIsParent@12 = ILIsParent +_ILLoadFromStream@8 = ILLoadFromStream +_ILRemoveLastID@4 = ILRemoveLastID +_ILSaveToStream@8 = ILSaveToStream +_InternalExtractIconListA@12 = InternalExtractIconListA +_InternalExtractIconListW@12 = InternalExtractIconListW +_IsLFNDrive@4 = IsLFNDrive +_IsLFNDriveA@4 = IsLFNDriveA +_IsLFNDriveW@4 = IsLFNDriveW +_IsNetDrive@4 = IsNetDrive +_IsUserAnAdmin@0 = IsUserAnAdmin +_OpenRegStream@16 = OpenRegStream +_PathCleanupSpec@8 = PathCleanupSpec +_PathGetShortPath@4 = PathGetShortPath +_PathIsExe@4 = PathIsExe +_PathIsSlowA@8 = PathIsSlowA +_PathIsSlowW@8 = PathIsSlowW +_PathMakeUniqueName@20 = PathMakeUniqueName +_PathProcessCommand@16 = PathProcessCommand +_PathQualify@4 = PathQualify +_PathResolve@12 = PathResolve +_PathYetAnotherMakeUniqueName@16 = PathYetAnotherMakeUniqueName +_PickIconDlg@16 = PickIconDlg +_PifMgr_CloseProperties@8 = PifMgr_CloseProperties +_PifMgr_GetProperties@20 = PifMgr_GetProperties +_PifMgr_OpenProperties@16 = PifMgr_OpenProperties +_PifMgr_SetProperties@20 = PifMgr_SetProperties +_ReadCabinetState@8 = ReadCabinetState +_RealDriveType@8 = RealDriveType +_RealShellExecuteA@40 = RealShellExecuteA +_RealShellExecuteExA@44 = RealShellExecuteExA +_RealShellExecuteExW@44 = RealShellExecuteExW +_RealShellExecuteW@40 = RealShellExecuteW +_RegenerateUserEnvironment@8 = RegenerateUserEnvironment +_RestartDialog@12 = RestartDialog +_RestartDialogEx@16 = RestartDialogEx +_SHAddFromPropSheetExtArray@12 = SHAddFromPropSheetExtArray +_SHAddToRecentDocs@8 = SHAddToRecentDocs +_SHAlloc@4 = SHAlloc +_SHAllocShared@12 = SHAllocShared +_SHAppBarMessage@8 = SHAppBarMessage +_SHBindToParent@16 = SHBindToParent +_SHBrowseForFolder@4 = SHBrowseForFolder +_SHBrowseForFolderA@4 = SHBrowseForFolderA +_SHBrowseForFolderW@4 = SHBrowseForFolderW +_SHCLSIDFromString@8 = SHCLSIDFromString +_SHChangeNotification_Lock@16 = SHChangeNotification_Lock +_SHChangeNotification_Unlock@4 = SHChangeNotification_Unlock +_SHChangeNotify@16 = SHChangeNotify +_SHChangeNotifyDeregister@4 = SHChangeNotifyDeregister +_SHChangeNotifyRegister@24 = SHChangeNotifyRegister +_SHCloneSpecialIDList@12 = SHCloneSpecialIDList +_SHCoCreateInstance@20 = SHCoCreateInstance +_SHCreateDirectory@8 = SHCreateDirectory +_SHCreateDirectoryExA@12 = SHCreateDirectoryExA +_SHCreateDirectoryExW@12 = SHCreateDirectoryExW +_SHCreateFileExtractIconW@16 = SHCreateFileExtractIconW +_SHCreateProcessAsUserW@4 = SHCreateProcessAsUserW +_SHCreatePropSheetExtArray@12 = SHCreatePropSheetExtArray +_SHCreateQueryCancelAutoPlayMoniker@4 = SHCreateQueryCancelAutoPlayMoniker +_SHCreateShellFolderView@8 = SHCreateShellFolderView +_SHCreateShellFolderViewEx@8 = SHCreateShellFolderViewEx +_SHCreateShellItem@16 = SHCreateShellItem +_SHCreateStdEnumFmtEtc@12 = SHCreateStdEnumFmtEtc +_SHDefExtractIconA@24 = SHDefExtractIconA +_SHDefExtractIconW@24 = SHDefExtractIconW +_SHDestroyPropSheetExtArray@4 = SHDestroyPropSheetExtArray +_SHDoDragDrop@20 = SHDoDragDrop +_SHEmptyRecycleBinA@12 = SHEmptyRecycleBinA +_SHEmptyRecycleBinW@12 = SHEmptyRecycleBinW +_SHEnumerateUnreadMailAccountsW@16 = SHEnumerateUnreadMailAccountsW +_SHExtractIconsW@32 = SHExtractIconsW +_SHFileOperation@4 = SHFileOperation +_SHFileOperationA@4 = SHFileOperationA +_SHFileOperationW@4 = SHFileOperationW +_SHFindFiles@8 = SHFindFiles +_SHFind_InitMenuPopup@16 = SHFind_InitMenuPopup +_SHFlushClipboard@0 = SHFlushClipboard +_SHFlushSFCache@0 = SHFlushSFCache +_SHFormatDrive@16 = SHFormatDrive +_SHFree@4 = SHFree +_SHFreeNameMappings@4 = SHFreeNameMappings +_SHFreeShared@8 = SHFreeShared +_SHGetAttributesFromDataObject@16 = SHGetAttributesFromDataObject +_SHGetDataFromIDListA@20 = SHGetDataFromIDListA +_SHGetDataFromIDListW@20 = SHGetDataFromIDListW +_SHGetDesktopFolder@4 = SHGetDesktopFolder +_SHGetDiskFreeSpaceA@16 = SHGetDiskFreeSpaceA +_SHGetDiskFreeSpaceExA@16 = SHGetDiskFreeSpaceExA +_SHGetDiskFreeSpaceExW@16 = SHGetDiskFreeSpaceExW +_SHGetFileInfo@20 = SHGetFileInfo +_SHGetFileInfoA@20 = SHGetFileInfoA +_SHGetFileInfoW@20 = SHGetFileInfoW +_SHGetFolderLocation@20 = SHGetFolderLocation +_SHGetFolderPathA@20 = SHGetFolderPathA +_SHGetFolderPathAndSubDirA@24 = SHGetFolderPathAndSubDirA +_SHGetFolderPathAndSubDirW@24 = SHGetFolderPathAndSubDirW +_SHGetFolderPathW@20 = SHGetFolderPathW +_SHGetIconOverlayIndexA@8 = SHGetIconOverlayIndexA +_SHGetIconOverlayIndexW@8 = SHGetIconOverlayIndexW +_SHGetInstanceExplorer@4 = SHGetInstanceExplorer +_SHGetMalloc@4 = SHGetMalloc +_SHGetNewLinkInfo@20 = SHGetNewLinkInfo +_SHGetNewLinkInfoA@20 = SHGetNewLinkInfoA +_SHGetNewLinkInfoW@20 = SHGetNewLinkInfoW +_SHGetPathFromIDList@8 = SHGetPathFromIDList +_SHGetPathFromIDListA@8 = SHGetPathFromIDListA +_SHGetPathFromIDListW@8 = SHGetPathFromIDListW +_SHGetRealIDL@12 = SHGetRealIDL +_SHGetSetFolderCustomSettingsW@12 = SHGetSetFolderCustomSettingsW +_SHGetSetSettings@12 = SHGetSetSettings +_SHGetSettings@8 = SHGetSettings +_SHGetShellStyleHInstance@0 = SHGetShellStyleHInstance +_SHGetSpecialFolderLocation@12 = SHGetSpecialFolderLocation +_SHGetSpecialFolderPath@16 = SHGetSpecialFolderPath +_SHGetSpecialFolderPathA@16 = SHGetSpecialFolderPathA +_SHGetSpecialFolderPathW@16 = SHGetSpecialFolderPathW +_SHGetUnreadMailCountW@24 = SHGetUnreadMailCountW +_SHHandleUpdateImage@4 = SHHandleUpdateImage +_SHILCreateFromPath@12 = SHILCreateFromPath +_SHInvokePrinterCommandA@20 = SHInvokePrinterCommandA +_SHInvokePrinterCommandW@20 = SHInvokePrinterCommandW +_SHIsFileAvailableOffline@8 = SHIsFileAvailableOffline +_SHLimitInputEdit@8 = SHLimitInputEdit +_SHLoadInProc@4 = SHLoadInProc +_SHLoadNonloadedIconOverlayIdentifiers@0 = SHLoadNonloadedIconOverlayIdentifiers +_SHLoadOLE@4 = SHLoadOLE +_SHLockShared@8 = SHLockShared +_SHMapIDListToImageListIndexAsync@36 = SHMapIDListToImageListIndexAsync +_SHMapPIDLToSystemImageListIndex@12 = SHMapPIDLToSystemImageListIndex +_SHMultiFileProperties@8 = SHMultiFileProperties +_SHObjectProperties@16 = SHObjectProperties +_SHOpenFolderAndSelectItems@16 = SHOpenFolderAndSelectItems +_SHOpenPropSheetW@28 = SHOpenPropSheetW +_SHParseDisplayName@20 = SHParseDisplayName +_SHPathPrepareForWriteA@16 = SHPathPrepareForWriteA +_SHPathPrepareForWriteW@16 = SHPathPrepareForWriteW +_SHPropStgCreate@32 = SHPropStgCreate +_SHPropStgReadMultiple@20 = SHPropStgReadMultiple +_SHPropStgWriteMultiple@24 = SHPropStgWriteMultiple +_SHQueryRecycleBinA@8 = SHQueryRecycleBinA +_SHQueryRecycleBinW@8 = SHQueryRecycleBinW +_SHReplaceFromPropSheetExtArray@16 = SHReplaceFromPropSheetExtArray +_SHRestricted@4 = SHRestricted +_SHRunControlPanel@8 = SHRunControlPanel +_SHSetInstanceExplorer@4 = SHSetInstanceExplorer +_SHSetLocalizedName@12 = SHSetLocalizedName +_SHSetUnreadMailCountW@12 = SHSetUnreadMailCountW +_SHShellFolderView_Message@12 = SHShellFolderView_Message +_SHSimpleIDListFromPath@4 = SHSimpleIDListFromPath +_SHStartNetConnectionDialogW@12 = SHStartNetConnectionDialogW +_SHTestTokenMembership@8 = SHTestTokenMembership +_SHUnlockShared@4 = SHUnlockShared +_SHUpdateImageA@16 = SHUpdateImageA +_SHUpdateImageW@16 = SHUpdateImageW +_SHUpdateRecycleBinIcon@0 = SHUpdateRecycleBinIcon +_SHValidateUNC@12 = SHValidateUNC +_SheChangeDirA@4 = SheChangeDirA +_SheChangeDirExA@4 = SheChangeDirExA +_SheChangeDirExW@4 = SheChangeDirExW +_SheChangeDirW@4 = SheChangeDirW +_SheConvertPathW@12 = SheConvertPathW +_SheFullPathA@12 = SheFullPathA +_SheFullPathW@12 = SheFullPathW +_SheGetCurDrive@0 = SheGetCurDrive +_SheGetDirA@8 = SheGetDirA +_SheGetDirExW@12 = SheGetDirExW +_SheGetDirW@8 = SheGetDirW +_SheGetPathOffsetW@4 = SheGetPathOffsetW +_SheRemoveQuotesA@4 = SheRemoveQuotesA +_SheRemoveQuotesW@4 = SheRemoveQuotesW +_SheSetCurDrive@4 = SheSetCurDrive +_SheShortenPathA@8 = SheShortenPathA +_SheShortenPathW@8 = SheShortenPathW +_ShellAboutA@16 = ShellAboutA +_ShellAboutW@16 = ShellAboutW +_ShellExecuteA@24 = ShellExecuteA +_ShellExecuteEx@4 = ShellExecuteEx +_ShellExecuteExA@4 = ShellExecuteExA +_ShellExecuteExW@4 = ShellExecuteExW +_ShellExecuteW@24 = ShellExecuteW +_ShellHookProc@12 = ShellHookProc +_ShellMessageBoxA = ShellMessageBoxA +_ShellMessageBoxW = ShellMessageBoxW +_Shell_GetCachedImageIndex@12 = Shell_GetCachedImageIndex +_Shell_GetImageLists@8 = Shell_GetImageLists +_Shell_MergeMenus@24 = Shell_MergeMenus +_Shell_NotifyIcon@8 = Shell_NotifyIcon +_Shell_NotifyIconA@8 = Shell_NotifyIconA +_Shell_NotifyIconW@8 = Shell_NotifyIconW +_SignalFileOpen@4 = SignalFileOpen +_WOWShellExecute@28 = WOWShellExecute +_Win32DeleteFile@4 = Win32DeleteFile +_WriteCabinetState@4 = WriteCabinetState diff --git a/def/version.def b/def/version.def index a238828f1e..0d64064edc 100644 --- a/def/version.def +++ b/def/version.def @@ -2,15 +2,15 @@ LIBRARY version EXETYPE NT SUBSYSTEM WINDOWS EXPORTS -_VerFindFileA@32 = VerFindFileA -_VerQueryValueA@16 = VerQueryValueA -_VerInstallFileA@32 = VerInstallFileA -_GetFileVersionInfoSizeA@8 = GetFileVersionInfoSizeA _GetFileVersionInfoA@16 = GetFileVersionInfoA -_VerLanguageNameA@12 = VerLanguageNameA -_VerFindFileW@32 = VerFindFileW -_VerQueryValueW@16 = VerQueryValueW -_VerInstallFileW@32 = VerInstallFileW +_GetFileVersionInfoSizeA@8 = GetFileVersionInfoSizeA _GetFileVersionInfoSizeW@8 = GetFileVersionInfoSizeW _GetFileVersionInfoW@16 = GetFileVersionInfoW +_VerFindFileA@32 = VerFindFileA +_VerFindFileW@32 = VerFindFileW +_VerInstallFileA@32 = VerInstallFileA +_VerInstallFileW@32 = VerInstallFileW +_VerLanguageNameA@12 = VerLanguageNameA _VerLanguageNameW@12 = VerLanguageNameW +_VerQueryValueA@16 = VerQueryValueA +_VerQueryValueW@16 = VerQueryValueW diff --git a/def/winspool.def b/def/winspool.def index 0bd38cae18..314445cf8a 100644 --- a/def/winspool.def +++ b/def/winspool.def @@ -2,186 +2,186 @@ LIBRARY winspool EXETYPE NT SUBSYSTEM WINDOWS EXPORTS -_InitializeDll@12 = InitializeDll -_SetJobA@20 = SetJobA -_SetJobW@20 = SetJobW -_GetJobA@24 = GetJobA -_GetJobW@24 = GetJobW -_EnumJobsA@32 = EnumJobsA -_EnumJobsW@32 = EnumJobsW +_AbortPrinter@4 = AbortPrinter +_AddFormA@12 = AddFormA +_AddFormW@12 = AddFormW +_AddJobA@20 = AddJobA +_AddJobW@20 = AddJobW +_AddMonitorA@12 = AddMonitorA +_AddMonitorW@12 = AddMonitorW +_AddPerMachineConnectionA@16 = AddPerMachineConnectionA +_AddPerMachineConnectionW@16 = AddPerMachineConnectionW +_AddPortA@12 = AddPortA +_AddPortExA@16 = AddPortExA +_AddPortExW@16 = AddPortExW +_AddPortW@12 = AddPortW +_AddPrintProcessorA@16 = AddPrintProcessorA +_AddPrintProcessorW@16 = AddPrintProcessorW +_AddPrintProvidorA@12 = AddPrintProvidorA +_AddPrintProvidorW@12 = AddPrintProvidorW _AddPrinterA@12 = AddPrinterA -_AddPrinterW@12 = AddPrinterW -_DeletePrinter@4 = DeletePrinter -_SetPrinterA@16 = SetPrinterA -_SetPrinterW@16 = SetPrinterW -_GetPrinterA@20 = GetPrinterA -_GetPrinterW@20 = GetPrinterW -_GetPrinterDriverA@24 = GetPrinterDriverA -_GetPrinterDriverW@24 = GetPrinterDriverW -_GetPrinterDriverDirectoryA@24 = GetPrinterDriverDirectoryA -_GetPrinterDriverDirectoryW@24 = GetPrinterDriverDirectoryW -_EnumPrintersA@28 = EnumPrintersA -_EnumPrintersW@28 = EnumPrintersW _AddPrinterConnectionA@4 = AddPrinterConnectionA +_AddPrinterConnectionUI@12 = AddPrinterConnectionUI _AddPrinterConnectionW@4 = AddPrinterConnectionW -_DeletePrinterConnectionA@4 = DeletePrinterConnectionA -_DeletePrinterConnectionW@4 = DeletePrinterConnectionW _AddPrinterDriverA@12 = AddPrinterDriverA -_AddPrinterDriverW@12 = AddPrinterDriverW _AddPrinterDriverExA@16 = AddPrinterDriverExA _AddPrinterDriverExW@16 = AddPrinterDriverExW -_EnumPrinterDriversA@28 = EnumPrinterDriversA -_EnumPrinterDriversW@28 = EnumPrinterDriversW -_DeletePrinterDriverA@12 = DeletePrinterDriverA -_DeletePrinterDriverW@12 = DeletePrinterDriverW -_DeletePrinterDriverExA@20 = DeletePrinterDriverExA -_DeletePrinterDriverExW@20 = DeletePrinterDriverExW -_AddPrintProcessorA@16 = AddPrintProcessorA -_AddPrintProcessorW@16 = AddPrintProcessorW -_EnumPrintProcessorsA@28 = EnumPrintProcessorsA -_EnumPrintProcessorsW@28 = EnumPrintProcessorsW -_GetPrintProcessorDirectoryA@24 = GetPrintProcessorDirectoryA -_GetPrintProcessorDirectoryW@24 = GetPrintProcessorDirectoryW -_EnumPrintProcessorDatatypesA@28 = EnumPrintProcessorDatatypesA -_EnumPrintProcessorDatatypesW@28 = EnumPrintProcessorDatatypesW -_AddPerMachineConnectionA@16 = AddPerMachineConnectionA -_AddPerMachineConnectionW@16 = AddPerMachineConnectionW -_DeletePerMachineConnectionA@8 = DeletePerMachineConnectionA -_DeletePerMachineConnectionW@8 = DeletePerMachineConnectionW -_EnumPerMachineConnectionsA@20 = EnumPerMachineConnectionsA -_EnumPerMachineConnectionsW@20 = EnumPerMachineConnectionsW -_LoadPrinterDriver@4 = LoadPrinterDriver -_SplDriverUnloadComplete@4 = SplDriverUnloadComplete -_RefCntLoadDriver@16 = RefCntLoadDriver -_RefCntUnloadDriver@8 = RefCntUnloadDriver -_ForceUnloadDriver@4 = ForceUnloadDriver -_OpenPrinterA@12 = OpenPrinterA -_OpenPrinterW@12 = OpenPrinterW -_ResetPrinterA@8 = ResetPrinterA -_ResetPrinterW@8 = ResetPrinterW -_StartDocPrinterA@12 = StartDocPrinterA -_StartDocPrinterW@12 = StartDocPrinterW -_StartPagePrinter@4 = StartPagePrinter -_WritePrinter@16 = WritePrinter -_SeekPrinter@24 = SeekPrinter -_EndPagePrinter@4 = EndPagePrinter -_GetPrinterDataA@24 = GetPrinterDataA -_GetPrinterDataW@24 = GetPrinterDataW -_SetPrinterDataA@20 = SetPrinterDataA -_SetPrinterDataW@20 = SetPrinterDataW -_AbortPrinter@4 = AbortPrinter -_ReadPrinter@16 = ReadPrinter -_SplReadPrinter@12 = SplReadPrinter -_EndDocPrinter@4 = EndDocPrinter -_AddJobA@20 = AddJobA -_AddJobW@20 = AddJobW -_ScheduleJob@8 = ScheduleJob -_WaitForPrinterChange@8 = WaitForPrinterChange -_FindFirstPrinterChangeNotification@16 = FindFirstPrinterChangeNotification -_FindNextPrinterChangeNotification@16 = FindNextPrinterChangeNotification -_FindClosePrinterChangeNotification@4 = FindClosePrinterChangeNotification -_FreePrinterNotifyInfo@4 = FreePrinterNotifyInfo -_PrinterMessageBoxA@24 = PrinterMessageBoxA -_PrinterMessageBoxW@24 = PrinterMessageBoxW +_AddPrinterDriverW@12 = AddPrinterDriverW +_AddPrinterW@12 = AddPrinterW +_AdvancedDocumentPropertiesA@20 = AdvancedDocumentPropertiesA +_AdvancedDocumentPropertiesW@20 = AdvancedDocumentPropertiesW +_AdvancedSetupDialog@16 = AdvancedSetupDialog _ClosePrinter@4 = ClosePrinter -_GetSpoolFileHandle@4 = GetSpoolFileHandle -_CommitSpoolData@12 = CommitSpoolData _CloseSpoolFileHandle@8 = CloseSpoolFileHandle -_AddFormA@12 = AddFormA -_AddFormW@12 = AddFormW -_DeleteFormA@8 = DeleteFormA -_DeleteFormW@8 = DeleteFormW -_GetFormA@24 = GetFormA -_GetFormW@24 = GetFormW -_SetFormA@16 = SetFormA -_SetFormW@16 = SetFormW -_EnumFormsA@24 = EnumFormsA -_EnumFormsW@24 = EnumFormsW -_EnumPortsA@24 = EnumPortsA -_EnumPortsW@24 = EnumPortsW -_EnumMonitorsA@24 = EnumMonitorsA -_EnumMonitorsW@24 = EnumMonitorsW -_AddPortA@12 = AddPortA -_AddPortW@12 = AddPortW +_ClusterSplClose@4 = ClusterSplClose +_ClusterSplIsAlive@4 = ClusterSplIsAlive +_ClusterSplOpen@20 = ClusterSplOpen +_CommitSpoolData@12 = CommitSpoolData _ConfigurePortA@12 = ConfigurePortA _ConfigurePortW@12 = ConfigurePortW -_DeletePortA@12 = DeletePortA -_DeletePortW@12 = DeletePortW -_CreatePrinterIC@8 = CreatePrinterIC -_PlayGdiScriptOnPrinterIC@24 = PlayGdiScriptOnPrinterIC -_DeletePrinterIC@4 = DeletePrinterIC -_DeviceMode@16 = DeviceMode -_ExtDeviceMode@32 = ExtDeviceMode -_AdvancedSetupDialog@16 = AdvancedSetupDialog -_DeviceCapabilities@20 = DeviceCapabilities -_DeviceCapabilitiesA@20 = DeviceCapabilitiesA -_DeviceCapabilitiesW@20 = DeviceCapabilitiesW -_DocumentPropertiesA@24 = DocumentPropertiesA -_DocumentPropertiesW@24 = DocumentPropertiesW -_AdvancedDocumentPropertiesA@20 = AdvancedDocumentPropertiesA -_AdvancedDocumentPropertiesW@20 = AdvancedDocumentPropertiesW -_PrinterProperties@8 = PrinterProperties _ConnectToPrinterDlg@8 = ConnectToPrinterDlg -_StartDocDlgW@8 = StartDocDlgW -_StartDocDlgA@8 = StartDocDlgA -_AddMonitorA@12 = AddMonitorA -_AddMonitorW@12 = AddMonitorW +_ConvertAnsiDevModeToUnicodeDevmode@16 = ConvertAnsiDevModeToUnicodeDevmode +_ConvertUnicodeDevModeToAnsiDevmode@16 = ConvertUnicodeDevModeToAnsiDevmode +_CreatePrinterIC@8 = CreatePrinterIC +_DeleteFormA@8 = DeleteFormA +_DeleteFormW@8 = DeleteFormW _DeleteMonitorA@12 = DeleteMonitorA _DeleteMonitorW@12 = DeleteMonitorW +_DeletePerMachineConnectionA@8 = DeletePerMachineConnectionA +_DeletePerMachineConnectionW@8 = DeletePerMachineConnectionW +_DeletePortA@12 = DeletePortA +_DeletePortW@12 = DeletePortW _DeletePrintProcessorA@12 = DeletePrintProcessorA _DeletePrintProcessorW@12 = DeletePrintProcessorW -_AddPrintProvidorA@12 = AddPrintProvidorA -_AddPrintProvidorW@12 = AddPrintProvidorW _DeletePrintProvidorA@12 = DeletePrintProvidorA _DeletePrintProvidorW@12 = DeletePrintProvidorW -_AddPortExW@16 = AddPortExW -_AddPortExA@16 = AddPortExA +_DeletePrinter@4 = DeletePrinter +_DeletePrinterConnectionA@4 = DeletePrinterConnectionA +_DeletePrinterConnectionW@4 = DeletePrinterConnectionW +_DeletePrinterDataA@8 = DeletePrinterDataA +_DeletePrinterDataExA@12 = DeletePrinterDataExA +_DeletePrinterDataExW@12 = DeletePrinterDataExW +_DeletePrinterDataW@8 = DeletePrinterDataW +_DeletePrinterDriverA@12 = DeletePrinterDriverA +_DeletePrinterDriverExA@20 = DeletePrinterDriverExA +_DeletePrinterDriverExW@20 = DeletePrinterDriverExW +_DeletePrinterDriverW@12 = DeletePrinterDriverW +_DeletePrinterIC@4 = DeletePrinterIC +_DeletePrinterKeyA@8 = DeletePrinterKeyA +_DeletePrinterKeyW@8 = DeletePrinterKeyW _DevQueryPrint@12 = DevQueryPrint _DevQueryPrintEx@4 = DevQueryPrintEx -_SpoolerDevQueryPrintW@20 = SpoolerDevQueryPrintW -_SpoolerInit@0 = SpoolerInit -_SetAllocFailCount@20 = SetAllocFailCount -_DocumentEvent@28 = DocumentEvent -_QueryColorProfile@24 = QueryColorProfile -_QuerySpoolMode@12 = QuerySpoolMode -_QueryRemoteFonts@12 = QueryRemoteFonts +_DeviceCapabilities@20 = DeviceCapabilities +_DeviceCapabilitiesA@20 = DeviceCapabilitiesA +_DeviceCapabilitiesW@20 = DeviceCapabilitiesW +_DeviceMode@16 = DeviceMode _DevicePropertySheets@8 = DevicePropertySheets +_DocumentEvent@28 = DocumentEvent +_DocumentPropertiesA@24 = DocumentPropertiesA +_DocumentPropertiesW@24 = DocumentPropertiesW _DocumentPropertySheets@8 = DocumentPropertySheets -_AddPrinterConnectionUI@12 = AddPrinterConnectionUI -_ConvertAnsiDevModeToUnicodeDevmode@16 = ConvertAnsiDevModeToUnicodeDevmode -_ConvertUnicodeDevModeToAnsiDevmode@16 = ConvertUnicodeDevModeToAnsiDevmode -_SetPortA@16 = SetPortA -_SetPortW@16 = SetPortW -_SpoolerPrinterEvent@16 = SpoolerPrinterEvent +_EndDocPrinter@4 = EndDocPrinter +_EndPagePrinter@4 = EndPagePrinter +_EnumFormsA@24 = EnumFormsA +_EnumFormsW@24 = EnumFormsW +_EnumJobsA@32 = EnumJobsA +_EnumJobsW@32 = EnumJobsW +_EnumMonitorsA@24 = EnumMonitorsA +_EnumMonitorsW@24 = EnumMonitorsW +_EnumPerMachineConnectionsA@20 = EnumPerMachineConnectionsA +_EnumPerMachineConnectionsW@20 = EnumPerMachineConnectionsW +_EnumPortsA@24 = EnumPortsA +_EnumPortsW@24 = EnumPortsW +_EnumPrintProcessorDatatypesA@28 = EnumPrintProcessorDatatypesA +_EnumPrintProcessorDatatypesW@28 = EnumPrintProcessorDatatypesW +_EnumPrintProcessorsA@28 = EnumPrintProcessorsA +_EnumPrintProcessorsW@28 = EnumPrintProcessorsW _EnumPrinterDataA@36 = EnumPrinterDataA -_EnumPrinterDataW@36 = EnumPrinterDataW -_DeletePrinterDataA@8 = DeletePrinterDataA -_DeletePrinterDataW@8 = DeletePrinterDataW -_SetPrinterDataExA@24 = SetPrinterDataExA -_SetPrinterDataExW@24 = SetPrinterDataExW -_GetPrinterDataExA@28 = GetPrinterDataExA -_GetPrinterDataExW@28 = GetPrinterDataExW _EnumPrinterDataExA@24 = EnumPrinterDataExA _EnumPrinterDataExW@24 = EnumPrinterDataExW +_EnumPrinterDataW@36 = EnumPrinterDataW +_EnumPrinterDriversA@28 = EnumPrinterDriversA +_EnumPrinterDriversW@28 = EnumPrinterDriversW _EnumPrinterKeyA@20 = EnumPrinterKeyA _EnumPrinterKeyW@20 = EnumPrinterKeyW -_DeletePrinterDataExA@12 = DeletePrinterDataExA -_DeletePrinterDataExW@12 = DeletePrinterDataExW -_DeletePrinterKeyA@8 = DeletePrinterKeyA -_DeletePrinterKeyW@8 = DeletePrinterKeyW _EnumPrinterPropertySheets@16 = EnumPrinterPropertySheets -_GetPrinterWebInformation@16 = GetPrinterWebInformation -_ClusterSplOpen@20 = ClusterSplOpen -_ClusterSplClose@4 = ClusterSplClose -_ClusterSplIsAlive@4 = ClusterSplIsAlive +_EnumPrintersA@28 = EnumPrintersA +_EnumPrintersW@28 = EnumPrintersW +_ExtDeviceMode@32 = ExtDeviceMode +_FindClosePrinterChangeNotification@4 = FindClosePrinterChangeNotification +_FindFirstPrinterChangeNotification@16 = FindFirstPrinterChangeNotification +_FindNextPrinterChangeNotification@16 = FindNextPrinterChangeNotification +_ForceUnloadDriver@4 = ForceUnloadDriver +_FreePrinterNotifyInfo@4 = FreePrinterNotifyInfo _GetDefaultPrinterA@8 = GetDefaultPrinterA -_SetDefaultPrinterA@4 = SetDefaultPrinterA _GetDefaultPrinterW@8 = GetDefaultPrinterW +_GetFormA@24 = GetFormA +_GetFormW@24 = GetFormW +_GetJobA@24 = GetJobA +_GetJobW@24 = GetJobW +_GetPrintProcessorDirectoryA@24 = GetPrintProcessorDirectoryA +_GetPrintProcessorDirectoryW@24 = GetPrintProcessorDirectoryW +_GetPrinterA@20 = GetPrinterA +_GetPrinterDataA@24 = GetPrinterDataA +_GetPrinterDataExA@28 = GetPrinterDataExA +_GetPrinterDataExW@28 = GetPrinterDataExW +_GetPrinterDataW@24 = GetPrinterDataW +_GetPrinterDriverA@24 = GetPrinterDriverA +_GetPrinterDriverDirectoryA@24 = GetPrinterDriverDirectoryA +_GetPrinterDriverDirectoryW@24 = GetPrinterDriverDirectoryW +_GetPrinterDriverW@24 = GetPrinterDriverW +_GetPrinterHTMLViewA@20 = GetPrinterHTMLViewA +_GetPrinterHTMLViewW@20 = GetPrinterHTMLViewW +_GetPrinterW@20 = GetPrinterW +_GetPrinterWebInformation@16 = GetPrinterWebInformation +_GetSpoolFileHandle@4 = GetSpoolFileHandle +_InitializeDll@12 = InitializeDll +_LoadPrinterDriver@4 = LoadPrinterDriver +_OpenPrinterA@12 = OpenPrinterA +_OpenPrinterW@12 = OpenPrinterW +_PlayGdiScriptOnPrinterIC@24 = PlayGdiScriptOnPrinterIC +_PrinterMessageBoxA@24 = PrinterMessageBoxA +_PrinterMessageBoxW@24 = PrinterMessageBoxW +_PrinterProperties@8 = PrinterProperties +_PublishPrinterA@24 = PublishPrinterA +_PublishPrinterW@24 = PublishPrinterW@24 +_QueryColorProfile@24 = QueryColorProfile +_QueryRemoteFonts@12 = QueryRemoteFonts +_QuerySpoolMode@12 = QuerySpoolMode +_ReadPrinter@16 = ReadPrinter +_RefCntLoadDriver@16 = RefCntLoadDriver +_RefCntUnloadDriver@8 = RefCntUnloadDriver +_ResetPrinterA@8 = ResetPrinterA +_ResetPrinterW@8 = ResetPrinterW +_ScheduleJob@8 = ScheduleJob +_SeekPrinter@24 = SeekPrinter +_SetAllocFailCount@20 = SetAllocFailCount +_SetDefaultPrinterA@4 = SetDefaultPrinterA _SetDefaultPrinterW@4 = SetDefaultPrinterW +_SetFormA@16 = SetFormA +_SetFormW@16 = SetFormW +_SetJobA@20 = SetJobA +_SetJobW@20 = SetJobW +_SetPortA@16 = SetPortA +_SetPortW@16 = SetPortW +_SetPrinterA@16 = SetPrinterA +_SetPrinterDataA@20 = SetPrinterDataA +_SetPrinterDataExA@24 = SetPrinterDataExA +_SetPrinterDataExW@24 = SetPrinterDataExW +_SetPrinterDataW@20 = SetPrinterDataW _SetPrinterHTMLViewA@12 = SetPrinterHTMLViewA _SetPrinterHTMLViewW@12 = SetPrinterHTMLViewW -_GetPrinterHTMLViewA@20 = GetPrinterHTMLViewA -_GetPrinterHTMLViewW@20 = GetPrinterHTMLViewW +_SetPrinterW@16 = SetPrinterW +_SplDriverUnloadComplete@4 = SplDriverUnloadComplete +_SplReadPrinter@12 = SplReadPrinter +_SpoolerDevQueryPrintW@20 = SpoolerDevQueryPrintW +_SpoolerInit@0 = SpoolerInit +_SpoolerPrinterEvent@16 = SpoolerPrinterEvent +_StartDocDlgA@8 = StartDocDlgA +_StartDocDlgW@8 = StartDocDlgW +_StartDocPrinterA@12 = StartDocPrinterA +_StartDocPrinterW@12 = StartDocPrinterW +_StartPagePrinter@4 = StartPagePrinter +_WaitForPrinterChange@8 = WaitForPrinterChange +_WritePrinter@16 = WritePrinter _XcvDataW@32 = XcvDataW -_PublishPrinterA@24 = PublishPrinterA -_PublishPrinterW@24 = PublishPrinterW@24 \ No newline at end of file From 44a51c4c77ad3abea08f61ed860696c2d6600d2b Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 18:50:25 +0000 Subject: [PATCH 150/768] def: Specify library/executable types --- def/glu32.def | 5 +++-- def/opengl32.def | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/def/glu32.def b/def/glu32.def index 21d4626504..61bbc24e82 100644 --- a/def/glu32.def +++ b/def/glu32.def @@ -1,5 +1,6 @@ -LIBRARY GLU32 - +LIBRARY GLU32 +EXETYPE NT +SUBSYSTEM WINDOWS EXPORTS _gluBeginCurve@4 = gluBeginCurve ; gluBeginCurve _gluBeginPolygon@4 = gluBeginPolygon ; gluBeginPolygon diff --git a/def/opengl32.def b/def/opengl32.def index 23fac8df84..867e811c34 100644 --- a/def/opengl32.def +++ b/def/opengl32.def @@ -1,5 +1,6 @@ -LIBRARY OPENGL32 - +LIBRARY OPENGL32 +EXETYPE NT +SUBSYSTEM WINDOWS EXPORTS ; _GlmfBeginGlsBlock@4 = GlmfBeginGlsBlock GlmfBeginGlsBlock ; _GlmfCloseMetaFile@4 = GlmfCloseMetaFile GlmfCloseMetaFile From 5d94a271042bf13e4fd899cacf3990ad19b70750 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 18:35:17 +0000 Subject: [PATCH 151/768] def: Merge with definitions in .lib files distributed with DMD --- def/odbc32.def | 46 ++++++++++++++++++++++++++++++++++++++++++++++ def/rpcrt4.def | 16 +++++++++++++++- def/shell32.def | 30 +++++++++++++++++++++++++++++- def/winspool.def | 2 +- 4 files changed, 91 insertions(+), 3 deletions(-) diff --git a/def/odbc32.def b/def/odbc32.def index 3786e5ba03..133f54ba7e 100644 --- a/def/odbc32.def +++ b/def/odbc32.def @@ -2,20 +2,66 @@ LIBRARY odbc32 EXETYPE NT SUBSYSTEM WINDOWS EXPORTS +_ConnectDlg@16 = ConnectDlg +_PostError@20 = PostError +_PostODBCError@16 = PostODBCError _SQLAllocConnect@8 = SQLAllocConnect _SQLAllocEnv@4 = SQLAllocEnv _SQLAllocHandle@12 = SQLAllocHandle +_SQLAllocStmt@8 = SQLAllocStmt +_SQLBindCol@24 = SQLBindCol +_SQLBindParameter@40 = SQLBindParameter +_SQLBrowseConnect@24 = SQLBrowseConnect +_SQLCancel@4 = SQLCancel _SQLColAttribute@28 = SQLColAttribute +_SQLColAttributes@28 = SQLColAttributes +_SQLColumnPrivileges@36 = SQLColumnPrivileges +_SQLColumns@36 = SQLColumns _SQLConnect@28 = SQLConnect +_SQLDataSources@32 = SQLDataSources +_SQLDescribeCol@36 = SQLDescribeCol +_SQLDescribeParam@24 = SQLDescribeParam _SQLDisconnect@4 = SQLDisconnect _SQLDriverConnect@32 = SQLDriverConnect +_SQLDrivers@32 = SQLDrivers +_SQLError@32 = SQLError +_SQLExecDirect@12 = SQLExecDirect _SQLExecDirect@16 = SQLExecDirect +_SQLExecute@4 = SQLExecute +_SQLExtendedFetch@20 = SQLExtendedFetch _SQLFetch@4 = SQLFetch +_SQLForeignKeys@52 = SQLForeignKeys _SQLFreeConnect@4 = SQLFreeConnect _SQLFreeEnv@4 = SQLFreeEnv _SQLFreeStmt@8 = SQLFreeStmt +_SQLGetConnectOption@12 = SQLGetConnectOption +_SQLGetCursorName@16 = SQLGetCursorName +_SQLGetData@24 = SQLGetData _SQLGetData@28 = SQLGetData +_SQLGetFunctions@12 = SQLGetFunctions _SQLGetInfo@20 = SQLGetInfo +_SQLGetStmtOption@12 = SQLGetStmtOption +_SQLGetTypeInfo@8 = SQLGetTypeInfo +_SQLMoreResults@4 = SQLMoreResults +_SQLNativeSql@24 = SQLNativeSql +_SQLNumParams@8 = SQLNumParams _SQLNumResultCols@8 = SQLNumResultCols +_SQLParamData@8 = SQLParamData +_SQLParamOptions@12 = SQLParamOptions +_SQLPrepare@12 = SQLPrepare +_SQLPrimaryKeys@28 = SQLPrimaryKeys +_SQLProcedureColumns@36 = SQLProcedureColumns +_SQLProcedures@28 = SQLProcedures +_SQLPutData@12 = SQLPutData +_SQLRowCount@8 = SQLRowCount _SQLSetConnectOption@12 = SQLSetConnectOption +_SQLSetCursorName@12 = SQLSetCursorName +_SQLSetParam@32 = SQLSetParam +_SQLSetPos@16 = SQLSetPos +_SQLSetScrollOptions@16 = SQLSetScrollOptions _SQLSetStmtOption@12 = SQLSetStmtOption +_SQLSpecialColumns@40 = SQLSpecialColumns +_SQLStatistics@36 = SQLStatistics +_SQLTablePrivileges@28 = SQLTablePrivileges +_SQLTables@36 = SQLTables +_SQLTransact@12 = SQLTransact diff --git a/def/rpcrt4.def b/def/rpcrt4.def index dfe6e9d17e..d8fb718dac 100644 --- a/def/rpcrt4.def +++ b/def/rpcrt4.def @@ -13,7 +13,9 @@ _CStdStubBuffer_IsIIDSupported@8 = CStdStubBuffer_IsIIDSupported _CStdStubBuffer_QueryInterface@12 = CStdStubBuffer_QueryInterface _DceErrorInqTextA@8 = DceErrorInqTextA _DceErrorInqTextW@8 = DceErrorInqTextW +_GlobalMutexClear@0 = GlobalMutexClear _GlobalMutexClearExternal@0 = GlobalMutexClearExternal +_GlobalMutexRequest@0 = GlobalMutexRequest _GlobalMutexRequestExternal@0 = GlobalMutexRequestExternal _IUnknown_AddRef_Proxy@4 = IUnknown_AddRef_Proxy _IUnknown_QueryInterface_Proxy@12 = IUnknown_QueryInterface_Proxy @@ -85,7 +87,9 @@ _I_RpcTransDatagramFree@12 = I_RpcTransDatagramFree _I_RpcTransGetAddressList@8 = I_RpcTransGetAddressList _I_RpcTransGetThreadEvent@0 = I_RpcTransGetThreadEvent _I_RpcTransIoCancelled@8 = I_RpcTransIoCancelled +_I_RpcTransProtectThread@0 = I_RpcTransProtectThread _I_RpcTransServerNewConnection@4 = I_RpcTransServerNewConnection +_I_RpcTransUnprotectThread@4 = I_RpcTransUnprotectThread _I_UuidCreate@4 = I_UuidCreate _MIDL_wchar_strcpy@8 = MIDL_wchar_strcpy _MIDL_wchar_strlen@4 = MIDL_wchar_strlen @@ -111,6 +115,7 @@ _NDRcopy@12 = NDRcopy _NdrAllocate@8 = NdrAllocate _NdrAsyncClientCall = NdrAsyncClientCall _NdrAsyncServerCall@4 = NdrAsyncServerCall +_NdrAsyncStubCall@16 = NdrAsyncStubCall _NdrByteCountPointerBufferSize@12 = NdrByteCountPointerBufferSize _NdrByteCountPointerFree@12 = NdrByteCountPointerFree _NdrByteCountPointerMarshall@12 = NdrByteCountPointerMarshall @@ -193,6 +198,11 @@ _NdrGetDcomProtocolVersion@8 = NdrGetDcomProtocolVersion _NdrGetPartialBuffer@4 = NdrGetPartialBuffer _NdrGetPipeBuffer@12 = NdrGetPipeBuffer _NdrGetUserMarshalInfo@12 = NdrGetUserMarshalInfo +_NdrHardStructBufferSize@12 = NdrHardStructBufferSize +_NdrHardStructFree@12 = NdrHardStructFree +_NdrHardStructMarshall@12 = NdrHardStructMarshall +_NdrHardStructMemorySize@8 = NdrHardStructMemorySize +_NdrHardStructUnmarshall@16 = NdrHardStructUnmarshall _NdrInterfacePointerBufferSize@12 = NdrInterfacePointerBufferSize _NdrInterfacePointerFree@12 = NdrInterfacePointerFree _NdrInterfacePointerMarshall@12 = NdrInterfacePointerMarshall @@ -292,7 +302,7 @@ _NdrXmitOrRepAsFree@12 = NdrXmitOrRepAsFree _NdrXmitOrRepAsMarshall@12 = NdrXmitOrRepAsMarshall _NdrXmitOrRepAsMemorySize@8 = NdrXmitOrRepAsMemorySize _NdrXmitOrRepAsUnmarshall@16 = NdrXmitOrRepAsUnmarshall -_NdrpSetRpcSsDefaults@8 = NdrpSetRpcSsDefaults@8 +_NdrpSetRpcSsDefaults@8 = NdrpSetRpcSsDefaults _RpcAbortAsyncCall@8 = RpcAbortAsyncCall _RpcAsyncAbortCall@8 = RpcAsyncAbortCall _RpcAsyncCancelCall@8 = RpcAsyncCancelCall @@ -342,6 +352,8 @@ _RpcIfIdVectorFree@4 = RpcIfIdVectorFree _RpcIfInqId@8 = RpcIfInqId _RpcImpersonateClient@4 = RpcImpersonateClient _RpcInitializeAsyncHandle@8 = RpcInitializeAsyncHandle +_RpcMgmtBindingInqParameter@12 = RpcMgmtBindingInqParameter +_RpcMgmtBindingSetParameter@12 = RpcMgmtBindingSetParameter _RpcMgmtEnableIdleCleanup@0 = RpcMgmtEnableIdleCleanup _RpcMgmtEpEltInqBegin@24 = RpcMgmtEpEltInqBegin _RpcMgmtEpEltInqDone@4 = RpcMgmtEpEltInqDone @@ -351,6 +363,7 @@ _RpcMgmtEpUnregister@16 = RpcMgmtEpUnregister _RpcMgmtInqComTimeout@8 = RpcMgmtInqComTimeout _RpcMgmtInqDefaultProtectLevel@8 = RpcMgmtInqDefaultProtectLevel _RpcMgmtInqIfIds@8 = RpcMgmtInqIfIds +_RpcMgmtInqParameter@8 = RpcMgmtInqParameter _RpcMgmtInqServerPrincNameA@12 = RpcMgmtInqServerPrincNameA _RpcMgmtInqServerPrincNameW@12 = RpcMgmtInqServerPrincNameW _RpcMgmtInqStats@8 = RpcMgmtInqStats @@ -358,6 +371,7 @@ _RpcMgmtIsServerListening@4 = RpcMgmtIsServerListening _RpcMgmtSetAuthorizationFn@4 = RpcMgmtSetAuthorizationFn _RpcMgmtSetCancelTimeout@4 = RpcMgmtSetCancelTimeout _RpcMgmtSetComTimeout@8 = RpcMgmtSetComTimeout +_RpcMgmtSetParameter@8 = RpcMgmtSetParameter _RpcMgmtSetServerStackSize@4 = RpcMgmtSetServerStackSize _RpcMgmtStatsVectorFree@4 = RpcMgmtStatsVectorFree _RpcMgmtStopServerListening@4 = RpcMgmtStopServerListening diff --git a/def/shell32.def b/def/shell32.def index ae494f7c7f..04ecedee1b 100644 --- a/def/shell32.def +++ b/def/shell32.def @@ -2,7 +2,7 @@ LIBRARY shell32 EXETYPE NT SUBSYSTEM WINDOWS EXPORTS -_CDefFolderMenu_Create2@36 = CDefFolderMenu_Create +_CDefFolderMenu_Create2@36 = CDefFolderMenu_Create2 _CDefFolderMenu_Create@36 = CDefFolderMenu_Create _CallCPLEntry16@24 = CallCPLEntry16 _CheckEscapesA@8 = CheckEscapesA @@ -247,6 +247,34 @@ _Shell_NotifyIcon@8 = Shell_NotifyIcon _Shell_NotifyIconA@8 = Shell_NotifyIconA _Shell_NotifyIconW@8 = Shell_NotifyIconW _SignalFileOpen@4 = SignalFileOpen +_StrChrA@8 = StrChrA +_StrChrIA@8 = StrChrIA +_StrChrIW@8 = StrChrIW +_StrChrW@8 = StrChrW +_StrCmpNA@12 = StrCmpNA +_StrCmpNIA@12 = StrCmpNIA +_StrCmpNIW@12 = StrCmpNIW +_StrCmpNW@12 = StrCmpNW +_StrCpyNA@12 = StrCpyNA +_StrCpyNW@12 = StrCpyNW +_StrNCmpA@12 = StrNCmpA +_StrNCmpIA@12 = StrNCmpIA +_StrNCmpIW@12 = StrNCmpIW +_StrNCmpW@12 = StrNCmpW +_StrNCpyA@12 = StrNCpyA +_StrNCpyW@12 = StrNCpyW +_StrRChrA@12 = StrRChrA +_StrRChrIA@12 = StrRChrIA +_StrRChrIW@12 = StrRChrIW +_StrRChrW@12 = StrRChrW +_StrRStrA@12 = StrRStrA +_StrRStrIA@12 = StrRStrIA +_StrRStrIW@12 = StrRStrIW +_StrRStrW@12 = StrRStrW +_StrStrA@8 = StrStrA +_StrStrIA@8 = StrStrIA +_StrStrIW@8 = StrStrIW +_StrStrW@8 = StrStrW _WOWShellExecute@28 = WOWShellExecute _Win32DeleteFile@4 = Win32DeleteFile _WriteCabinetState@4 = WriteCabinetState diff --git a/def/winspool.def b/def/winspool.def index 314445cf8a..79af6ef972 100644 --- a/def/winspool.def +++ b/def/winspool.def @@ -144,7 +144,7 @@ _PrinterMessageBoxA@24 = PrinterMessageBoxA _PrinterMessageBoxW@24 = PrinterMessageBoxW _PrinterProperties@8 = PrinterProperties _PublishPrinterA@24 = PublishPrinterA -_PublishPrinterW@24 = PublishPrinterW@24 +_PublishPrinterW@24 = PublishPrinterW _QueryColorProfile@24 = QueryColorProfile _QueryRemoteFonts@12 = QueryRemoteFonts _QuerySpoolMode@12 = QuerySpoolMode From 34e19a4d7b5441767fc03dc334e7d496773adb3a Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 20:30:08 +0000 Subject: [PATCH 152/768] def: Merge with definitions in .lib files distributed with DMC --- def/odbc32.def | 5 +++++ def/wininet.def | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/def/odbc32.def b/def/odbc32.def index 133f54ba7e..a4260e17cc 100644 --- a/def/odbc32.def +++ b/def/odbc32.def @@ -24,6 +24,7 @@ _SQLDescribeParam@24 = SQLDescribeParam _SQLDisconnect@4 = SQLDisconnect _SQLDriverConnect@32 = SQLDriverConnect _SQLDrivers@32 = SQLDrivers +_SQLEndTran@12 = SQLEndTran _SQLError@32 = SQLError _SQLExecDirect@12 = SQLExecDirect _SQLExecDirect@16 = SQLExecDirect @@ -33,11 +34,14 @@ _SQLFetch@4 = SQLFetch _SQLForeignKeys@52 = SQLForeignKeys _SQLFreeConnect@4 = SQLFreeConnect _SQLFreeEnv@4 = SQLFreeEnv +_SQLFreeHandle@8 = SQLFreeHandle _SQLFreeStmt@8 = SQLFreeStmt _SQLGetConnectOption@12 = SQLGetConnectOption _SQLGetCursorName@16 = SQLGetCursorName _SQLGetData@24 = SQLGetData _SQLGetData@28 = SQLGetData +_SQLGetDiagField@28 = SQLGetDiagField +_SQLGetDiagRec@32 = SQLGetDiagRec _SQLGetFunctions@12 = SQLGetFunctions _SQLGetInfo@20 = SQLGetInfo _SQLGetStmtOption@12 = SQLGetStmtOption @@ -56,6 +60,7 @@ _SQLPutData@12 = SQLPutData _SQLRowCount@8 = SQLRowCount _SQLSetConnectOption@12 = SQLSetConnectOption _SQLSetCursorName@12 = SQLSetCursorName +_SQLSetEnvAttr@16 = SQLSetEnvAttr _SQLSetParam@32 = SQLSetParam _SQLSetPos@16 = SQLSetPos _SQLSetScrollOptions@16 = SQLSetScrollOptions diff --git a/def/wininet.def b/def/wininet.def index d6f8d8ba24..6a3f460379 100644 --- a/def/wininet.def +++ b/def/wininet.def @@ -213,4 +213,4 @@ _UnlockUrlCacheEntryFile@8 = UnlockUrlCacheEntryFile _UnlockUrlCacheEntryFileA@8 = UnlockUrlCacheEntryFileA _UnlockUrlCacheEntryFileW@8 = UnlockUrlCacheEntryFileW _UnlockUrlCacheEntryStream@8 = UnlockUrlCacheEntryStream -_UpdateUrlCacheContentPath@4 = UpdateUrlCacheContentPath@4 +_UpdateUrlCacheContentPath@4 = UpdateUrlCacheContentPath From ce5cd8d905c27a373fa1e388c1b909e8802afb5a Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 20:04:47 +0000 Subject: [PATCH 153/768] win32.mak: Build import libraries --- win32.mak | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/win32.mak b/win32.mak index 496241c2f6..274edd9329 100644 --- a/win32.mak +++ b/win32.mak @@ -21,7 +21,7 @@ GCSTUB=lib\gcstub.obj DOCFMT= -target : import copydir copy $(DRUNTIME) $(GCSTUB) +target : import copydir copy implibs $(DRUNTIME) $(GCSTUB) $(mak\COPY) $(mak\DOCS) @@ -1120,6 +1120,44 @@ $(IMPDIR)\core\sys\windows\wtypes.d : src\core\sys\windows\wtypes.d $(IMPDIR)\etc\linux\memoryerror.d : src\etc\linux\memoryerror.d copy $** $@ +################### Win32 Import Libraries ################### + +IMPLIBS= \ + lib\win32\glu32.lib \ + lib\win32\odbc32.lib \ + lib\win32\opengl32.lib \ + lib\win32\rpcrt4.lib \ + lib\win32\shell32.lib \ + lib\win32\version.lib \ + lib\win32\wininet.lib \ + lib\win32\winspool.lib + +implibs : $(IMPLIBS) + +lib\win32\glu32.lib : def\glu32.def + implib $@ $** + +lib\win32\odbc32.lib : def\odbc32.def + implib $@ $** + +lib\win32\opengl32.lib : def\opengl32.def + implib $@ $** + +lib\win32\rpcrt4.lib : def\rpcrt4.def + implib $@ $** + +lib\win32\shell32.lib : def\shell32.def + implib $@ $** + +lib\win32\version.lib : def\version.def + implib $@ $** + +lib\win32\wininet.lib : def\wininet.def + implib $@ $** + +lib\win32\winspool.lib : def\winspool.def + implib $@ $** + ################### C\ASM Targets ############################ errno_c_$(MODEL).obj : src\core\stdc\errno.c From 426f651ec81f509fc02c6c06bab29dd020920d04 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 14 Oct 2015 21:03:27 +0000 Subject: [PATCH 154/768] win32.mak: Make import library building opt-in The autotester does not have implib in PATH. --- win32.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/win32.mak b/win32.mak index 274edd9329..489c4af8e1 100644 --- a/win32.mak +++ b/win32.mak @@ -21,7 +21,7 @@ GCSTUB=lib\gcstub.obj DOCFMT= -target : import copydir copy implibs $(DRUNTIME) $(GCSTUB) +target : import copydir copy $(DRUNTIME) $(GCSTUB) $(mak\COPY) $(mak\DOCS) From 1410f8cc3ba738cc2805016c9a574ea3de5e300c Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 15 Oct 2015 16:15:05 +0000 Subject: [PATCH 155/768] core.sys.windows: Set license to Boost Software License 1.0 --- src/core/sys/windows/accctrl.d | 2 +- src/core/sys/windows/aclapi.d | 2 +- src/core/sys/windows/aclui.d | 2 +- src/core/sys/windows/basetsd.d | 2 +- src/core/sys/windows/basetyps.d | 2 +- src/core/sys/windows/cderr.d | 2 +- src/core/sys/windows/cguid.d | 2 +- src/core/sys/windows/comcat.d | 2 +- src/core/sys/windows/commctrl.d | 2 +- src/core/sys/windows/commdlg.d | 2 +- src/core/sys/windows/core.d | 2 +- src/core/sys/windows/cpl.d | 2 +- src/core/sys/windows/cplext.d | 2 +- src/core/sys/windows/custcntl.d | 2 +- src/core/sys/windows/dbt.d | 2 +- src/core/sys/windows/dde.d | 2 +- src/core/sys/windows/ddeml.d | 2 +- src/core/sys/windows/dhcpcsdk.d | 2 +- src/core/sys/windows/dlgs.d | 2 +- src/core/sys/windows/docobj.d | 2 +- src/core/sys/windows/errorrep.d | 2 +- src/core/sys/windows/exdisp.d | 2 +- src/core/sys/windows/exdispid.d | 2 +- src/core/sys/windows/httpext.d | 2 +- src/core/sys/windows/idispids.d | 2 +- src/core/sys/windows/imagehlp.d | 2 +- src/core/sys/windows/imm.d | 2 +- src/core/sys/windows/intshcut.d | 2 +- src/core/sys/windows/ipexport.d | 2 +- src/core/sys/windows/iphlpapi.d | 2 +- src/core/sys/windows/ipifcons.d | 2 +- src/core/sys/windows/iprtrmib.d | 2 +- src/core/sys/windows/iptypes.d | 2 +- src/core/sys/windows/isguids.d | 2 +- src/core/sys/windows/lm.d | 2 +- src/core/sys/windows/lmaccess.d | 2 +- src/core/sys/windows/lmalert.d | 2 +- src/core/sys/windows/lmapibuf.d | 2 +- src/core/sys/windows/lmat.d | 2 +- src/core/sys/windows/lmaudit.d | 2 +- src/core/sys/windows/lmbrowsr.d | 2 +- src/core/sys/windows/lmchdev.d | 2 +- src/core/sys/windows/lmconfig.d | 2 +- src/core/sys/windows/lmcons.d | 2 +- src/core/sys/windows/lmerr.d | 2 +- src/core/sys/windows/lmerrlog.d | 2 +- src/core/sys/windows/lmmsg.d | 2 +- src/core/sys/windows/lmremutl.d | 2 +- src/core/sys/windows/lmrepl.d | 2 +- src/core/sys/windows/lmserver.d | 2 +- src/core/sys/windows/lmshare.d | 2 +- src/core/sys/windows/lmsname.d | 2 +- src/core/sys/windows/lmstats.d | 2 +- src/core/sys/windows/lmsvc.d | 2 +- src/core/sys/windows/lmuse.d | 2 +- src/core/sys/windows/lmuseflg.d | 2 +- src/core/sys/windows/lmwksta.d | 2 +- src/core/sys/windows/lzexpand.d | 2 +- src/core/sys/windows/mapi.d | 2 +- src/core/sys/windows/mciavi.d | 2 +- src/core/sys/windows/mcx.d | 2 +- src/core/sys/windows/mgmtapi.d | 2 +- src/core/sys/windows/mmsystem.d | 2 +- src/core/sys/windows/msacm.d | 2 +- src/core/sys/windows/mshtml.d | 2 +- src/core/sys/windows/mswsock.d | 2 +- src/core/sys/windows/nb30.d | 2 +- src/core/sys/windows/nddeapi.d | 2 +- src/core/sys/windows/nspapi.d | 2 +- src/core/sys/windows/ntdef.d | 2 +- src/core/sys/windows/ntdll.d | 2 +- src/core/sys/windows/ntldap.d | 2 +- src/core/sys/windows/ntsecapi.d | 2 +- src/core/sys/windows/ntsecpkg.d | 2 +- src/core/sys/windows/oaidl.d | 2 +- src/core/sys/windows/objbase.d | 2 +- src/core/sys/windows/objfwd.d | 2 +- src/core/sys/windows/objidl.d | 2 +- src/core/sys/windows/objsafe.d | 2 +- src/core/sys/windows/ocidl.d | 2 +- src/core/sys/windows/odbcinst.d | 2 +- src/core/sys/windows/ole.d | 2 +- src/core/sys/windows/ole2.d | 2 +- src/core/sys/windows/ole2ver.d | 2 +- src/core/sys/windows/oleacc.d | 2 +- src/core/sys/windows/oleauto.d | 2 +- src/core/sys/windows/olectl.d | 2 +- src/core/sys/windows/olectlid.d | 2 +- src/core/sys/windows/oledlg.d | 2 +- src/core/sys/windows/oleidl.d | 2 +- src/core/sys/windows/pbt.d | 2 +- src/core/sys/windows/powrprof.d | 2 +- src/core/sys/windows/prsht.d | 2 +- src/core/sys/windows/psapi.d | 2 +- src/core/sys/windows/rapi.d | 2 +- src/core/sys/windows/ras.d | 2 +- src/core/sys/windows/rasdlg.d | 2 +- src/core/sys/windows/raserror.d | 2 +- src/core/sys/windows/rassapi.d | 2 +- src/core/sys/windows/reason.d | 2 +- src/core/sys/windows/regstr.d | 2 +- src/core/sys/windows/richedit.d | 2 +- src/core/sys/windows/richole.d | 2 +- src/core/sys/windows/rpc.d | 2 +- src/core/sys/windows/rpcdce.d | 2 +- src/core/sys/windows/rpcdce2.d | 2 +- src/core/sys/windows/rpcdcep.d | 2 +- src/core/sys/windows/rpcndr.d | 2 +- src/core/sys/windows/rpcnsi.d | 2 +- src/core/sys/windows/rpcnsip.d | 2 +- src/core/sys/windows/rpcnterr.d | 2 +- src/core/sys/windows/schannel.d | 2 +- src/core/sys/windows/secext.d | 2 +- src/core/sys/windows/security.d | 2 +- src/core/sys/windows/servprov.d | 2 +- src/core/sys/windows/setupapi.d | 2 +- src/core/sys/windows/shellapi.d | 2 +- src/core/sys/windows/shldisp.d | 2 +- src/core/sys/windows/shlguid.d | 2 +- src/core/sys/windows/shlobj.d | 2 +- src/core/sys/windows/shlwapi.d | 2 +- src/core/sys/windows/snmp.d | 2 +- src/core/sys/windows/sql.d | 2 +- src/core/sys/windows/sqlext.d | 2 +- src/core/sys/windows/sqltypes.d | 2 +- src/core/sys/windows/sqlucode.d | 2 +- src/core/sys/windows/sspi.d | 2 +- src/core/sys/windows/stat.d | 2 +- src/core/sys/windows/subauth.d | 2 +- src/core/sys/windows/tlhelp32.d | 2 +- src/core/sys/windows/tmschema.d | 2 +- src/core/sys/windows/unknwn.d | 2 +- src/core/sys/windows/vfw.d | 2 +- src/core/sys/windows/w32api.d | 2 +- src/core/sys/windows/winbase.d | 2 +- src/core/sys/windows/winber.d | 2 +- src/core/sys/windows/wincon.d | 2 +- src/core/sys/windows/wincrypt.d | 2 +- src/core/sys/windows/windef.d | 2 +- src/core/sys/windows/windows.d | 2 +- src/core/sys/windows/winerror.d | 2 +- src/core/sys/windows/wingdi.d | 2 +- src/core/sys/windows/winhttp.d | 2 +- src/core/sys/windows/wininet.d | 2 +- src/core/sys/windows/winioctl.d | 2 +- src/core/sys/windows/winldap.d | 2 +- src/core/sys/windows/winnetwk.d | 2 +- src/core/sys/windows/winnls.d | 2 +- src/core/sys/windows/winnt.d | 2 +- src/core/sys/windows/winperf.d | 2 +- src/core/sys/windows/winreg.d | 2 +- src/core/sys/windows/winsock2.d | 2 +- src/core/sys/windows/winspool.d | 2 +- src/core/sys/windows/winsvc.d | 2 +- src/core/sys/windows/winuser.d | 2 +- src/core/sys/windows/winver.d | 2 +- src/core/sys/windows/wtsapi32.d | 2 +- src/core/sys/windows/wtypes.d | 2 +- 158 files changed, 158 insertions(+), 158 deletions(-) diff --git a/src/core/sys/windows/accctrl.d b/src/core/sys/windows/accctrl.d index 2157830069..ec39f00afb 100644 --- a/src/core/sys/windows/accctrl.d +++ b/src/core/sys/windows/accctrl.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_accctrl.d) */ module core.sys.windows.accctrl; diff --git a/src/core/sys/windows/aclapi.d b/src/core/sys/windows/aclapi.d index d94a0808db..44826a408c 100644 --- a/src/core/sys/windows/aclapi.d +++ b/src/core/sys/windows/aclapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_aclapi.d) */ module core.sys.windows.aclapi; diff --git a/src/core/sys/windows/aclui.d b/src/core/sys/windows/aclui.d index f58bf86ddb..89e80a6bbf 100644 --- a/src/core/sys/windows/aclui.d +++ b/src/core/sys/windows/aclui.d @@ -4,7 +4,7 @@ * Translated from MinGW API for MS-Windows 3.10 * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_aclui.d) */ module core.sys.windows.aclui; diff --git a/src/core/sys/windows/basetsd.d b/src/core/sys/windows/basetsd.d index fe8dc5ce92..54f1529132 100644 --- a/src/core/sys/windows/basetsd.d +++ b/src/core/sys/windows/basetsd.d @@ -4,7 +4,7 @@ * Translated from MinGW API for MS-Windows 3.12 * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_basetsd.d) */ module core.sys.windows.basetsd; diff --git a/src/core/sys/windows/basetyps.d b/src/core/sys/windows/basetyps.d index 2538ed9a47..bef43075e2 100644 --- a/src/core/sys/windows/basetyps.d +++ b/src/core/sys/windows/basetyps.d @@ -3,7 +3,7 @@ * * Translated from MinGW API for MS-Windows 3.10 * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_basetyps.d) */ module core.sys.windows.basetyps; diff --git a/src/core/sys/windows/cderr.d b/src/core/sys/windows/cderr.d index e049a9dd9c..278a11c5b9 100644 --- a/src/core/sys/windows/cderr.d +++ b/src/core/sys/windows/cderr.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_cderr.d) */ module core.sys.windows.cderr; diff --git a/src/core/sys/windows/cguid.d b/src/core/sys/windows/cguid.d index 82f36c8a13..b6db658be9 100644 --- a/src/core/sys/windows/cguid.d +++ b/src/core/sys/windows/cguid.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_cguid.d) */ module core.sys.windows.cguid; diff --git a/src/core/sys/windows/comcat.d b/src/core/sys/windows/comcat.d index 8e1dc5ba21..36c6a9125c 100644 --- a/src/core/sys/windows/comcat.d +++ b/src/core/sys/windows/comcat.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_comcat.d) */ module core.sys.windows.comcat; diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 11540a8bd8..7db19bbd67 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -3,7 +3,7 @@ * * Translated from MinGW API for MS-Windows 3.12 * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_commctrl.d) */ module core.sys.windows.commctrl; diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index 4675dd1e75..861214479f 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -3,7 +3,7 @@ * * Translated from MinGW API for MS-Windows 3.12 * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_commdlg.d) */ module core.sys.windows.commdlg; diff --git a/src/core/sys/windows/core.d b/src/core/sys/windows/core.d index e821dfae6d..8b355b3e2a 100644 --- a/src/core/sys/windows/core.d +++ b/src/core/sys/windows/core.d @@ -1,7 +1,7 @@ /** * Helper module for the Windows API * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_core.d) */ module core.sys.windows.core; diff --git a/src/core/sys/windows/cpl.d b/src/core/sys/windows/cpl.d index 80be01cea2..e202c2cb8b 100644 --- a/src/core/sys/windows/cpl.d +++ b/src/core/sys/windows/cpl.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_cpl.d) */ module core.sys.windows.cpl; diff --git a/src/core/sys/windows/cplext.d b/src/core/sys/windows/cplext.d index 85d6a4b0c4..89d892e295 100644 --- a/src/core/sys/windows/cplext.d +++ b/src/core/sys/windows/cplext.d @@ -4,7 +4,7 @@ * Translated from MinGW API for MS-Windows 3.10 * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_cplext.d) */ module core.sys.windows.cplext; diff --git a/src/core/sys/windows/custcntl.d b/src/core/sys/windows/custcntl.d index 9dd7808022..dc92fa6c0b 100644 --- a/src/core/sys/windows/custcntl.d +++ b/src/core/sys/windows/custcntl.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_custcntl.d) */ module core.sys.windows.custcntl; diff --git a/src/core/sys/windows/dbt.d b/src/core/sys/windows/dbt.d index f73bce5562..e2648dc024 100644 --- a/src/core/sys/windows/dbt.d +++ b/src/core/sys/windows/dbt.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Vladimir Vlasov - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_dbt.d) */ module core.sys.windows.dbt; diff --git a/src/core/sys/windows/dde.d b/src/core/sys/windows/dde.d index 262f16c94b..168cbd185a 100644 --- a/src/core/sys/windows/dde.d +++ b/src/core/sys/windows/dde.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_dde.d) */ module core.sys.windows.dde; diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index 7e3ac36462..e0bdea19e1 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ddeml.d) */ module core.sys.windows.ddeml; diff --git a/src/core/sys/windows/dhcpcsdk.d b/src/core/sys/windows/dhcpcsdk.d index e4ef566641..e0d2f2b9ae 100644 --- a/src/core/sys/windows/dhcpcsdk.d +++ b/src/core/sys/windows/dhcpcsdk.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_dhcpcsdk.d) */ module core.sys.windows.dhcpcsdk; diff --git a/src/core/sys/windows/dlgs.d b/src/core/sys/windows/dlgs.d index f3d0a53050..f9306d6e62 100644 --- a/src/core/sys/windows/dlgs.d +++ b/src/core/sys/windows/dlgs.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_dlgs.d) */ module core.sys.windows.dlgs; diff --git a/src/core/sys/windows/docobj.d b/src/core/sys/windows/docobj.d index bf9f04cd24..1ea66db067 100644 --- a/src/core/sys/windows/docobj.d +++ b/src/core/sys/windows/docobj.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_docobj.d) */ module core.sys.windows.docobj; diff --git a/src/core/sys/windows/errorrep.d b/src/core/sys/windows/errorrep.d index e6faeb6997..70279efebf 100644 --- a/src/core/sys/windows/errorrep.d +++ b/src/core/sys/windows/errorrep.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_errorrep.d) */ module core.sys.windows.errorrep; diff --git a/src/core/sys/windows/exdisp.d b/src/core/sys/windows/exdisp.d index b9e55a244c..6b953bf2d6 100644 --- a/src/core/sys/windows/exdisp.d +++ b/src/core/sys/windows/exdisp.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_exdisp.d) */ module core.sys.windows.exdisp; diff --git a/src/core/sys/windows/exdispid.d b/src/core/sys/windows/exdispid.d index d0cfd58de2..fcf04f9945 100644 --- a/src/core/sys/windows/exdispid.d +++ b/src/core/sys/windows/exdispid.d @@ -4,7 +4,7 @@ * Translated from MinGW API for MS-Windows 3.10 * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_exdispid.d) */ module core.sys.windows.exdispid; diff --git a/src/core/sys/windows/httpext.d b/src/core/sys/windows/httpext.d index 309ddc50db..0a3d79c88c 100644 --- a/src/core/sys/windows/httpext.d +++ b/src/core/sys/windows/httpext.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_httpext.d) */ module core.sys.windows.httpext; diff --git a/src/core/sys/windows/idispids.d b/src/core/sys/windows/idispids.d index 82a5c795e1..074c3fa8b8 100644 --- a/src/core/sys/windows/idispids.d +++ b/src/core/sys/windows/idispids.d @@ -4,7 +4,7 @@ * Translated from MinGW API for MS-Windows 3.10 * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_idispids.d) */ module core.sys.windows.idispids; diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index 0e8483f593..ad3633d60d 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_imagehlp.d) */ module core.sys.windows.imagehlp; diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d index 38d69541df..0db1de03fd 100644 --- a/src/core/sys/windows/imm.d +++ b/src/core/sys/windows/imm.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_imm.d) */ module core.sys.windows.imm; diff --git a/src/core/sys/windows/intshcut.d b/src/core/sys/windows/intshcut.d index 96e2e74438..3f78733143 100644 --- a/src/core/sys/windows/intshcut.d +++ b/src/core/sys/windows/intshcut.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_intshcut.d) */ module core.sys.windows.intshcut; diff --git a/src/core/sys/windows/ipexport.d b/src/core/sys/windows/ipexport.d index 488f7eab78..ddaeadda68 100644 --- a/src/core/sys/windows/ipexport.d +++ b/src/core/sys/windows/ipexport.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ipexport.d) */ module core.sys.windows.ipexport; diff --git a/src/core/sys/windows/iphlpapi.d b/src/core/sys/windows/iphlpapi.d index 454d7390dd..6dabd0bc7d 100644 --- a/src/core/sys/windows/iphlpapi.d +++ b/src/core/sys/windows/iphlpapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_iphlpapi.d) */ module core.sys.windows.iphlpapi; diff --git a/src/core/sys/windows/ipifcons.d b/src/core/sys/windows/ipifcons.d index 747438e33b..b1de472f0b 100644 --- a/src/core/sys/windows/ipifcons.d +++ b/src/core/sys/windows/ipifcons.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ipifcons.d) */ module core.sys.windows.ipifcons; diff --git a/src/core/sys/windows/iprtrmib.d b/src/core/sys/windows/iprtrmib.d index 6b1e808060..37db3c9075 100644 --- a/src/core/sys/windows/iprtrmib.d +++ b/src/core/sys/windows/iprtrmib.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_iprtrmib.d) */ module core.sys.windows.iprtrmib; diff --git a/src/core/sys/windows/iptypes.d b/src/core/sys/windows/iptypes.d index dc02bede28..71f4d2878a 100644 --- a/src/core/sys/windows/iptypes.d +++ b/src/core/sys/windows/iptypes.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_iptypes.d) */ module core.sys.windows.iptypes; diff --git a/src/core/sys/windows/isguids.d b/src/core/sys/windows/isguids.d index c97b994a40..b78d352129 100644 --- a/src/core/sys/windows/isguids.d +++ b/src/core/sys/windows/isguids.d @@ -4,7 +4,7 @@ * Translated from MinGW API for MS-Windows 3.10 * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_isguids.d) */ module core.sys.windows.isguids; diff --git a/src/core/sys/windows/lm.d b/src/core/sys/windows/lm.d index cb4467ddd2..48a6f55c85 100644 --- a/src/core/sys/windows/lm.d +++ b/src/core/sys/windows/lm.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lm.d) */ module core.sys.windows.lm; diff --git a/src/core/sys/windows/lmaccess.d b/src/core/sys/windows/lmaccess.d index b7a2ae1a78..fe7e6fac5f 100644 --- a/src/core/sys/windows/lmaccess.d +++ b/src/core/sys/windows/lmaccess.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmaccess.d) */ module core.sys.windows.lmaccess; diff --git a/src/core/sys/windows/lmalert.d b/src/core/sys/windows/lmalert.d index 4d5bf3a541..0aa30ceb27 100644 --- a/src/core/sys/windows/lmalert.d +++ b/src/core/sys/windows/lmalert.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmalert.d) */ module core.sys.windows.lmalert; diff --git a/src/core/sys/windows/lmapibuf.d b/src/core/sys/windows/lmapibuf.d index ae3d64a31f..6c2df77105 100644 --- a/src/core/sys/windows/lmapibuf.d +++ b/src/core/sys/windows/lmapibuf.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmapibuf.d) */ module core.sys.windows.lmapibuf; diff --git a/src/core/sys/windows/lmat.d b/src/core/sys/windows/lmat.d index faba56978c..eac6b4ae79 100644 --- a/src/core/sys/windows/lmat.d +++ b/src/core/sys/windows/lmat.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmat.d) */ module core.sys.windows.lmat; diff --git a/src/core/sys/windows/lmaudit.d b/src/core/sys/windows/lmaudit.d index ec7c1ee8be..d349cf575d 100644 --- a/src/core/sys/windows/lmaudit.d +++ b/src/core/sys/windows/lmaudit.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmaudit.d) */ // COMMENT: This file may be deprecated. diff --git a/src/core/sys/windows/lmbrowsr.d b/src/core/sys/windows/lmbrowsr.d index 3bde93855b..06dd2c56d3 100644 --- a/src/core/sys/windows/lmbrowsr.d +++ b/src/core/sys/windows/lmbrowsr.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmbrowsr.d) */ module core.sys.windows.lmbrowsr; diff --git a/src/core/sys/windows/lmchdev.d b/src/core/sys/windows/lmchdev.d index 29bedc8a44..bb4c4790f0 100644 --- a/src/core/sys/windows/lmchdev.d +++ b/src/core/sys/windows/lmchdev.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmchdev.d) */ module core.sys.windows.lmchdev; diff --git a/src/core/sys/windows/lmconfig.d b/src/core/sys/windows/lmconfig.d index 93bc6b2caa..64e943ac04 100644 --- a/src/core/sys/windows/lmconfig.d +++ b/src/core/sys/windows/lmconfig.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmconfig.d) */ module core.sys.windows.lmconfig; diff --git a/src/core/sys/windows/lmcons.d b/src/core/sys/windows/lmcons.d index 91f18038e2..f47d8fec9d 100644 --- a/src/core/sys/windows/lmcons.d +++ b/src/core/sys/windows/lmcons.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmcons.d) */ module core.sys.windows.lmcons; diff --git a/src/core/sys/windows/lmerr.d b/src/core/sys/windows/lmerr.d index 5352b2ba19..5af4132535 100644 --- a/src/core/sys/windows/lmerr.d +++ b/src/core/sys/windows/lmerr.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmerr.d) */ module core.sys.windows.lmerr; diff --git a/src/core/sys/windows/lmerrlog.d b/src/core/sys/windows/lmerrlog.d index 2797ec5ff0..bff924b7d4 100644 --- a/src/core/sys/windows/lmerrlog.d +++ b/src/core/sys/windows/lmerrlog.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmerrlog.d) */ module core.sys.windows.lmerrlog; diff --git a/src/core/sys/windows/lmmsg.d b/src/core/sys/windows/lmmsg.d index 546cdd19e6..af9d4c8d66 100644 --- a/src/core/sys/windows/lmmsg.d +++ b/src/core/sys/windows/lmmsg.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmmsg.d) */ module core.sys.windows.lmmsg; diff --git a/src/core/sys/windows/lmremutl.d b/src/core/sys/windows/lmremutl.d index 2ebc45d664..94283376ac 100644 --- a/src/core/sys/windows/lmremutl.d +++ b/src/core/sys/windows/lmremutl.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmremutl.d) */ module core.sys.windows.lmremutl; diff --git a/src/core/sys/windows/lmrepl.d b/src/core/sys/windows/lmrepl.d index 473a5364eb..f85af9a568 100644 --- a/src/core/sys/windows/lmrepl.d +++ b/src/core/sys/windows/lmrepl.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmrepl.d) */ module core.sys.windows.lmrepl; diff --git a/src/core/sys/windows/lmserver.d b/src/core/sys/windows/lmserver.d index 9402fccb65..1212931830 100644 --- a/src/core/sys/windows/lmserver.d +++ b/src/core/sys/windows/lmserver.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmserver.d) */ module core.sys.windows.lmserver; diff --git a/src/core/sys/windows/lmshare.d b/src/core/sys/windows/lmshare.d index 96db240fcb..ebf494180c 100644 --- a/src/core/sys/windows/lmshare.d +++ b/src/core/sys/windows/lmshare.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmshare.d) */ module core.sys.windows.lmshare; diff --git a/src/core/sys/windows/lmsname.d b/src/core/sys/windows/lmsname.d index 8e49bf4fae..01dfe030dd 100644 --- a/src/core/sys/windows/lmsname.d +++ b/src/core/sys/windows/lmsname.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmsname.d) */ module core.sys.windows.lmsname; diff --git a/src/core/sys/windows/lmstats.d b/src/core/sys/windows/lmstats.d index 0aa30c7ae9..0f082f3e5a 100644 --- a/src/core/sys/windows/lmstats.d +++ b/src/core/sys/windows/lmstats.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmstats.d) */ module core.sys.windows.lmstats; diff --git a/src/core/sys/windows/lmsvc.d b/src/core/sys/windows/lmsvc.d index 3907b2c96d..fcaf5e54fe 100644 --- a/src/core/sys/windows/lmsvc.d +++ b/src/core/sys/windows/lmsvc.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmsvc.d) */ module core.sys.windows.lmsvc; diff --git a/src/core/sys/windows/lmuse.d b/src/core/sys/windows/lmuse.d index edbd942701..fca7e3a523 100644 --- a/src/core/sys/windows/lmuse.d +++ b/src/core/sys/windows/lmuse.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmuse.d) */ module core.sys.windows.lmuse; diff --git a/src/core/sys/windows/lmuseflg.d b/src/core/sys/windows/lmuseflg.d index 3f8a0baa7f..8157abd04e 100644 --- a/src/core/sys/windows/lmuseflg.d +++ b/src/core/sys/windows/lmuseflg.d @@ -3,7 +3,7 @@ * * Translated from MinGW API for MS-Windows 3.10 * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmuseflg.d) */ module core.sys.windows.lmuseflg; diff --git a/src/core/sys/windows/lmwksta.d b/src/core/sys/windows/lmwksta.d index 3ef200399b..33b57e5047 100644 --- a/src/core/sys/windows/lmwksta.d +++ b/src/core/sys/windows/lmwksta.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lmwksta.d) */ module core.sys.windows.lmwksta; diff --git a/src/core/sys/windows/lzexpand.d b/src/core/sys/windows/lzexpand.d index 189db7c82b..5a35bcaed5 100644 --- a/src/core/sys/windows/lzexpand.d +++ b/src/core/sys/windows/lzexpand.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_lzexpand.d) */ module core.sys.windows.lzexpand; diff --git a/src/core/sys/windows/mapi.d b/src/core/sys/windows/mapi.d index e3d2e79d10..5760022d00 100644 --- a/src/core/sys/windows/mapi.d +++ b/src/core/sys/windows/mapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_mapi.d) */ module core.sys.windows.mapi; diff --git a/src/core/sys/windows/mciavi.d b/src/core/sys/windows/mciavi.d index c2de0009e3..d3a26bc590 100644 --- a/src/core/sys/windows/mciavi.d +++ b/src/core/sys/windows/mciavi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_mciavi.d) */ module core.sys.windows.mciavi; diff --git a/src/core/sys/windows/mcx.d b/src/core/sys/windows/mcx.d index 2afb2da24e..266ccaacf1 100644 --- a/src/core/sys/windows/mcx.d +++ b/src/core/sys/windows/mcx.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_mcx.d) */ module core.sys.windows.mcx; diff --git a/src/core/sys/windows/mgmtapi.d b/src/core/sys/windows/mgmtapi.d index 4a19c4aade..a0a0d16c3c 100644 --- a/src/core/sys/windows/mgmtapi.d +++ b/src/core/sys/windows/mgmtapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_mgmtapi.d) */ module core.sys.windows.mgmtapi; diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index 17b9062d33..377d83e002 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_mmsystem.d) */ module core.sys.windows.mmsystem; diff --git a/src/core/sys/windows/msacm.d b/src/core/sys/windows/msacm.d index 977cf98da4..71a53f55d0 100644 --- a/src/core/sys/windows/msacm.d +++ b/src/core/sys/windows/msacm.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_msacm.d) */ module core.sys.windows.msacm; diff --git a/src/core/sys/windows/mshtml.d b/src/core/sys/windows/mshtml.d index c6ce136033..5a68176ffa 100644 --- a/src/core/sys/windows/mshtml.d +++ b/src/core/sys/windows/mshtml.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_mshtml.d) */ module core.sys.windows.mshtml; diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index 2d5872a955..efa08dc7dd 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Daniel Keep - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_mswsock.d) */ module core.sys.windows.mswsock; diff --git a/src/core/sys/windows/nb30.d b/src/core/sys/windows/nb30.d index f32bbd9bc7..7e6d5208da 100644 --- a/src/core/sys/windows/nb30.d +++ b/src/core/sys/windows/nb30.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_nb30.d) */ module core.sys.windows.nb30; diff --git a/src/core/sys/windows/nddeapi.d b/src/core/sys/windows/nddeapi.d index 6e5c44a0d8..df31475b5b 100644 --- a/src/core/sys/windows/nddeapi.d +++ b/src/core/sys/windows/nddeapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_nddeapi.d) */ module core.sys.windows.nddeapi; diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d index ed0551f6ef..cee7c48073 100644 --- a/src/core/sys/windows/nspapi.d +++ b/src/core/sys/windows/nspapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_nspapi.d) */ module core.sys.windows.nspapi; diff --git a/src/core/sys/windows/ntdef.d b/src/core/sys/windows/ntdef.d index 4e6c8862d9..9f133145e4 100644 --- a/src/core/sys/windows/ntdef.d +++ b/src/core/sys/windows/ntdef.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ntdef.d) */ module core.sys.windows.ntdef; diff --git a/src/core/sys/windows/ntdll.d b/src/core/sys/windows/ntdll.d index c503535919..72ad54d466 100644 --- a/src/core/sys/windows/ntdll.d +++ b/src/core/sys/windows/ntdll.d @@ -4,7 +4,7 @@ * Translated from MinGW API for MS-Windows 3.10 * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ntdll.d) */ module core.sys.windows.ntdll; diff --git a/src/core/sys/windows/ntldap.d b/src/core/sys/windows/ntldap.d index edb7381a05..e42df9b435 100644 --- a/src/core/sys/windows/ntldap.d +++ b/src/core/sys/windows/ntldap.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ntldap.d) */ module core.sys.windows.ntldap; diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index 581c210e8d..63aee4b822 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ntsecapi.d) */ module core.sys.windows.ntsecapi; diff --git a/src/core/sys/windows/ntsecpkg.d b/src/core/sys/windows/ntsecpkg.d index 25fd6dd23d..053029baeb 100644 --- a/src/core/sys/windows/ntsecpkg.d +++ b/src/core/sys/windows/ntsecpkg.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Ellery Newcomer - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ntsecpkg.d) */ module core.sys.windows.ntsecpkg; diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d index 1e16dd2ec2..a468e29cbc 100644 --- a/src/core/sys/windows/oaidl.d +++ b/src/core/sys/windows/oaidl.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_oaidl.d) */ module core.sys.windows.oaidl; diff --git a/src/core/sys/windows/objbase.d b/src/core/sys/windows/objbase.d index e881a51335..3d2f16a1d0 100644 --- a/src/core/sys/windows/objbase.d +++ b/src/core/sys/windows/objbase.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_objbase.d) */ module core.sys.windows.objbase; diff --git a/src/core/sys/windows/objfwd.d b/src/core/sys/windows/objfwd.d index 589b49dc75..70a2a1045f 100644 --- a/src/core/sys/windows/objfwd.d +++ b/src/core/sys/windows/objfwd.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_objfwd.d) */ module core.sys.windows.objfwd; diff --git a/src/core/sys/windows/objidl.d b/src/core/sys/windows/objidl.d index 54ce0011db..320bb86bf7 100644 --- a/src/core/sys/windows/objidl.d +++ b/src/core/sys/windows/objidl.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_objidl.d) */ // TODO (Don): diff --git a/src/core/sys/windows/objsafe.d b/src/core/sys/windows/objsafe.d index 08de8c6f34..25569845e7 100644 --- a/src/core/sys/windows/objsafe.d +++ b/src/core/sys/windows/objsafe.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_objsafe.d) */ module core.sys.windows.objsafe; diff --git a/src/core/sys/windows/ocidl.d b/src/core/sys/windows/ocidl.d index df151f7807..4244ba1a6c 100644 --- a/src/core/sys/windows/ocidl.d +++ b/src/core/sys/windows/ocidl.d @@ -5,7 +5,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ocidl.d) */ module core.sys.windows.ocidl; diff --git a/src/core/sys/windows/odbcinst.d b/src/core/sys/windows/odbcinst.d index 9dda050c13..148d66ee26 100644 --- a/src/core/sys/windows/odbcinst.d +++ b/src/core/sys/windows/odbcinst.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_odbcinst.d) */ module core.sys.windows.odbcinst; diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index 0419a3eeaf..8e814ff62e 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ole.d) */ module core.sys.windows.ole; diff --git a/src/core/sys/windows/ole2.d b/src/core/sys/windows/ole2.d index 1731b55d78..e295078a5a 100644 --- a/src/core/sys/windows/ole2.d +++ b/src/core/sys/windows/ole2.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ole2.d) */ module core.sys.windows.ole2; diff --git a/src/core/sys/windows/ole2ver.d b/src/core/sys/windows/ole2ver.d index 66918ce5cb..9a6d4d0005 100644 --- a/src/core/sys/windows/ole2ver.d +++ b/src/core/sys/windows/ole2ver.d @@ -3,7 +3,7 @@ * * Translated from MinGW API for MS-Windows 3.10 * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ole2ver.d) */ module core.sys.windows.ole2ver; diff --git a/src/core/sys/windows/oleacc.d b/src/core/sys/windows/oleacc.d index 0f7581f59b..f1ad3e5673 100644 --- a/src/core/sys/windows/oleacc.d +++ b/src/core/sys/windows/oleacc.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_oleacc.d) */ module core.sys.windows.oleacc; diff --git a/src/core/sys/windows/oleauto.d b/src/core/sys/windows/oleauto.d index 015187decc..2f331a60e0 100644 --- a/src/core/sys/windows/oleauto.d +++ b/src/core/sys/windows/oleauto.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_oleauto.d) */ module core.sys.windows.oleauto; diff --git a/src/core/sys/windows/olectl.d b/src/core/sys/windows/olectl.d index 73ce036f3a..17cfe71641 100644 --- a/src/core/sys/windows/olectl.d +++ b/src/core/sys/windows/olectl.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_olectl.d) */ module core.sys.windows.olectl; diff --git a/src/core/sys/windows/olectlid.d b/src/core/sys/windows/olectlid.d index a39a56eb3c..72156a1062 100644 --- a/src/core/sys/windows/olectlid.d +++ b/src/core/sys/windows/olectlid.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_olectlid.d) */ module core.sys.windows.olectlid; diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d index ccc5e1a8f1..70b9d52bdd 100644 --- a/src/core/sys/windows/oledlg.d +++ b/src/core/sys/windows/oledlg.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_oledlg.d) */ module core.sys.windows.oledlg; diff --git a/src/core/sys/windows/oleidl.d b/src/core/sys/windows/oleidl.d index 5437a11e4e..e778e14ce9 100644 --- a/src/core/sys/windows/oleidl.d +++ b/src/core/sys/windows/oleidl.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_oleidl.d) */ module core.sys.windows.oleidl; diff --git a/src/core/sys/windows/pbt.d b/src/core/sys/windows/pbt.d index 80bfe71d32..744a16edf8 100644 --- a/src/core/sys/windows/pbt.d +++ b/src/core/sys/windows/pbt.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_pbt.d) */ module core.sys.windows.pbt; diff --git a/src/core/sys/windows/powrprof.d b/src/core/sys/windows/powrprof.d index 0000b43a91..1aa878ce2b 100644 --- a/src/core/sys/windows/powrprof.d +++ b/src/core/sys/windows/powrprof.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_powrprof.d) */ module core.sys.windows.powrprof; diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d index 65ec6b5355..cd47963f0b 100644 --- a/src/core/sys/windows/prsht.d +++ b/src/core/sys/windows/prsht.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Vladimir Vlasov - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_prsht.d) */ module core.sys.windows.prsht; diff --git a/src/core/sys/windows/psapi.d b/src/core/sys/windows/psapi.d index 513d92ef54..6229bcd148 100644 --- a/src/core/sys/windows/psapi.d +++ b/src/core/sys/windows/psapi.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_psapi.d) */ /* Comment from MinGW diff --git a/src/core/sys/windows/rapi.d b/src/core/sys/windows/rapi.d index c543453f2a..b60a14b7e4 100644 --- a/src/core/sys/windows/rapi.d +++ b/src/core/sys/windows/rapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rapi.d) */ module core.sys.windows.rapi; diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index 9f75294e54..72bab0e55e 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_ras.d) */ module core.sys.windows.ras; diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d index c286809ea5..d8047355da 100644 --- a/src/core/sys/windows/rasdlg.d +++ b/src/core/sys/windows/rasdlg.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rasdlg.d) */ module core.sys.windows.rasdlg; diff --git a/src/core/sys/windows/raserror.d b/src/core/sys/windows/raserror.d index c48740abc6..9004444e9e 100644 --- a/src/core/sys/windows/raserror.d +++ b/src/core/sys/windows/raserror.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_raserror.d) */ module core.sys.windows.raserror; diff --git a/src/core/sys/windows/rassapi.d b/src/core/sys/windows/rassapi.d index e0b565516b..74411fce13 100644 --- a/src/core/sys/windows/rassapi.d +++ b/src/core/sys/windows/rassapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rassapi.d) */ module core.sys.windows.rassapi; diff --git a/src/core/sys/windows/reason.d b/src/core/sys/windows/reason.d index 93f66c624d..752f28e5c2 100644 --- a/src/core/sys/windows/reason.d +++ b/src/core/sys/windows/reason.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_reason.d) */ module core.sys.windows.reason; diff --git a/src/core/sys/windows/regstr.d b/src/core/sys/windows/regstr.d index aad16ebe70..339ca01203 100644 --- a/src/core/sys/windows/regstr.d +++ b/src/core/sys/windows/regstr.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_regstr.d) */ module core.sys.windows.regstr; diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d index b77242582b..40f280cbac 100644 --- a/src/core/sys/windows/richedit.d +++ b/src/core/sys/windows/richedit.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_richedit.d) */ module core.sys.windows.richedit; diff --git a/src/core/sys/windows/richole.d b/src/core/sys/windows/richole.d index 8c432ce4c2..cbe30c9388 100644 --- a/src/core/sys/windows/richole.d +++ b/src/core/sys/windows/richole.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_richole.d) */ module core.sys.windows.richole; diff --git a/src/core/sys/windows/rpc.d b/src/core/sys/windows/rpc.d index 00c6da785f..6097184e2d 100644 --- a/src/core/sys/windows/rpc.d +++ b/src/core/sys/windows/rpc.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rpc.d) */ module core.sys.windows.rpc; diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d index 1c2c6e6b1e..d9c421bd90 100644 --- a/src/core/sys/windows/rpcdce.d +++ b/src/core/sys/windows/rpcdce.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdce.d) */ module core.sys.windows.rpcdce; diff --git a/src/core/sys/windows/rpcdce2.d b/src/core/sys/windows/rpcdce2.d index a792d836bd..fe4d231c46 100644 --- a/src/core/sys/windows/rpcdce2.d +++ b/src/core/sys/windows/rpcdce2.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdce2.d) */ module core.sys.windows.rpcdce2; diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d index 4d21253b6e..606d362eb5 100644 --- a/src/core/sys/windows/rpcdcep.d +++ b/src/core/sys/windows/rpcdcep.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcdcep.d) */ module core.sys.windows.rpcdcep; diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index 66cabc5d39..9bc2933f91 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcndr.d) */ module core.sys.windows.rpcndr; diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d index 1c2ead3472..c968c4fee6 100644 --- a/src/core/sys/windows/rpcnsi.d +++ b/src/core/sys/windows/rpcnsi.d @@ -5,7 +5,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnsi.d) */ module core.sys.windows.rpcnsi; diff --git a/src/core/sys/windows/rpcnsip.d b/src/core/sys/windows/rpcnsip.d index 59ddddd0d7..fcf4389836 100644 --- a/src/core/sys/windows/rpcnsip.d +++ b/src/core/sys/windows/rpcnsip.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnsip.d) */ module core.sys.windows.rpcnsip; diff --git a/src/core/sys/windows/rpcnterr.d b/src/core/sys/windows/rpcnterr.d index e791e04824..8b1e5835b0 100644 --- a/src/core/sys/windows/rpcnterr.d +++ b/src/core/sys/windows/rpcnterr.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_rpcnterr.d) */ module core.sys.windows.rpcnterr; diff --git a/src/core/sys/windows/schannel.d b/src/core/sys/windows/schannel.d index eb4bc549fb..1ee7653451 100644 --- a/src/core/sys/windows/schannel.d +++ b/src/core/sys/windows/schannel.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_schannel.d) */ module core.sys.windows.schannel; diff --git a/src/core/sys/windows/secext.d b/src/core/sys/windows/secext.d index 12b0a2cca4..aafe1abce0 100644 --- a/src/core/sys/windows/secext.d +++ b/src/core/sys/windows/secext.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_secext.d) */ // Don't include this file directly, use core.sys.windows.security instead. diff --git a/src/core/sys/windows/security.d b/src/core/sys/windows/security.d index 3758d844b7..a5f57851cc 100644 --- a/src/core/sys/windows/security.d +++ b/src/core/sys/windows/security.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Ellery Newcomer - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_security.d) */ module core.sys.windows.security; diff --git a/src/core/sys/windows/servprov.d b/src/core/sys/windows/servprov.d index 49a75791c4..91a0a11845 100644 --- a/src/core/sys/windows/servprov.d +++ b/src/core/sys/windows/servprov.d @@ -3,7 +3,7 @@ * * Translated from MinGW API for MS-Windows 3.10 * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_servprov.d) */ module core.sys.windows.servprov; diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d index e0ce69d9e8..e192eb1622 100644 --- a/src/core/sys/windows/setupapi.d +++ b/src/core/sys/windows/setupapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Vladimir Vlasov - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_setupapi.d) */ module core.sys.windows.setupapi; diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index 1f78e63036..2ab5e428ff 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_shellapi.d) */ module core.sys.windows.shellapi; diff --git a/src/core/sys/windows/shldisp.d b/src/core/sys/windows/shldisp.d index c0ee909c86..1175677f3e 100644 --- a/src/core/sys/windows/shldisp.d +++ b/src/core/sys/windows/shldisp.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_shldisp.d) */ module core.sys.windows.shldisp; diff --git a/src/core/sys/windows/shlguid.d b/src/core/sys/windows/shlguid.d index 4bc67b9096..e2bbf020af 100644 --- a/src/core/sys/windows/shlguid.d +++ b/src/core/sys/windows/shlguid.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_shlguid.d) */ module core.sys.windows.shlguid; diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index e556e79422..d85603091b 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -3,7 +3,7 @@ * * Translated from MinGW API for MS-Windows 4.0 * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_shlobj.d) */ module core.sys.windows.shlobj; diff --git a/src/core/sys/windows/shlwapi.d b/src/core/sys/windows/shlwapi.d index 1881d1ad57..d9c667b606 100644 --- a/src/core/sys/windows/shlwapi.d +++ b/src/core/sys/windows/shlwapi.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_shlwapi.d) */ module core.sys.windows.shlwapi; diff --git a/src/core/sys/windows/snmp.d b/src/core/sys/windows/snmp.d index 03ddaba44f..8e77b3c3b6 100644 --- a/src/core/sys/windows/snmp.d +++ b/src/core/sys/windows/snmp.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_snmp.d) */ module core.sys.windows.snmp; diff --git a/src/core/sys/windows/sql.d b/src/core/sys/windows/sql.d index 6d232d0afe..1748fd5ce8 100644 --- a/src/core/sys/windows/sql.d +++ b/src/core/sys/windows/sql.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_sql.d) */ module core.sys.windows.sql; diff --git a/src/core/sys/windows/sqlext.d b/src/core/sys/windows/sqlext.d index d7ccb1b30c..e3a793a2aa 100644 --- a/src/core/sys/windows/sqlext.d +++ b/src/core/sys/windows/sqlext.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_sqlext.d) */ module core.sys.windows.sqlext; diff --git a/src/core/sys/windows/sqltypes.d b/src/core/sys/windows/sqltypes.d index fba1ccfeb4..9c53d0a3a1 100644 --- a/src/core/sys/windows/sqltypes.d +++ b/src/core/sys/windows/sqltypes.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_sqltypes.d) */ module core.sys.windows.sqltypes; diff --git a/src/core/sys/windows/sqlucode.d b/src/core/sys/windows/sqlucode.d index fa027a6d8e..ad24d9a9c5 100644 --- a/src/core/sys/windows/sqlucode.d +++ b/src/core/sys/windows/sqlucode.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_sqlucode.d) */ module core.sys.windows.sqlucode; diff --git a/src/core/sys/windows/sspi.d b/src/core/sys/windows/sspi.d index c5146ffd1c..a7b7d5b530 100644 --- a/src/core/sys/windows/sspi.d +++ b/src/core/sys/windows/sspi.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Ellery Newcomer - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_sspi.d) */ module core.sys.windows.sspi; diff --git a/src/core/sys/windows/stat.d b/src/core/sys/windows/stat.d index c4cde2ea33..1c216177c5 100644 --- a/src/core/sys/windows/stat.d +++ b/src/core/sys/windows/stat.d @@ -1,5 +1,5 @@ -/// Placed into public domain +/// $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) /// Author: Walter Bright module core.sys.windows.stat; diff --git a/src/core/sys/windows/subauth.d b/src/core/sys/windows/subauth.d index d43bd35ce6..eb13e15620 100644 --- a/src/core/sys/windows/subauth.d +++ b/src/core/sys/windows/subauth.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_subauth.d) */ module core.sys.windows.subauth; diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index 79e4b78444..07ba5c7ac1 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_tlhelp32.d) */ module core.sys.windows.tlhelp32; diff --git a/src/core/sys/windows/tmschema.d b/src/core/sys/windows/tmschema.d index 93159c591e..ad62d0e40b 100644 --- a/src/core/sys/windows/tmschema.d +++ b/src/core/sys/windows/tmschema.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_tmschema.d) */ module core.sys.windows.tmschema; diff --git a/src/core/sys/windows/unknwn.d b/src/core/sys/windows/unknwn.d index f3c392e619..8bcbc3c607 100644 --- a/src/core/sys/windows/unknwn.d +++ b/src/core/sys/windows/unknwn.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_unknwn.d) */ module core.sys.windows.unknwn; diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index bf5ee5d104..b889b44a67 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -3,7 +3,7 @@ * * written in the D programming language * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_vfw.d) */ diff --git a/src/core/sys/windows/w32api.d b/src/core/sys/windows/w32api.d index dd86cee861..9fd6e02fb3 100644 --- a/src/core/sys/windows/w32api.d +++ b/src/core/sys/windows/w32api.d @@ -4,7 +4,7 @@ * Translated from MinGW API for MS-Windows 4.0 * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_w32api.d) */ module core.sys.windows.w32api; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index 9f1b15c6e5..c0f5a2c572 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -3,7 +3,7 @@ * * Translated from MinGW API for MS-Windows 3.10 * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winbase.d) */ module core.sys.windows.winbase; diff --git a/src/core/sys/windows/winber.d b/src/core/sys/windows/winber.d index 623eca0569..9d20af8857 100644 --- a/src/core/sys/windows/winber.d +++ b/src/core/sys/windows/winber.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winber.d) */ module core.sys.windows.winber; diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index 711b05a5dd..b2724d6627 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_wincon.d) */ module core.sys.windows.wincon; diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index 27c8a81b17..dd54e1c0dc 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_wincrypt.d) */ module core.sys.windows.wincrypt; diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index 023da901da..fc34a104b6 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_windef.d) */ module core.sys.windows.windef; diff --git a/src/core/sys/windows/windows.d b/src/core/sys/windows/windows.d index 60ef2e621c..b474739240 100644 --- a/src/core/sys/windows/windows.d +++ b/src/core/sys/windows/windows.d @@ -3,7 +3,7 @@ * * Translated from MinGW API for MS-Windows 4.0 * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_windows.d) */ module core.sys.windows.windows; diff --git a/src/core/sys/windows/winerror.d b/src/core/sys/windows/winerror.d index ba4ee34d51..1f9a5e5af3 100644 --- a/src/core/sys/windows/winerror.d +++ b/src/core/sys/windows/winerror.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winerror.d) */ module core.sys.windows.winerror; diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index 7cac9730a7..0ff828058f 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_wingdi.d) */ module core.sys.windows.wingdi; diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d index a54d2c3e78..9a7592265c 100644 --- a/src/core/sys/windows/winhttp.d +++ b/src/core/sys/windows/winhttp.d @@ -3,7 +3,7 @@ * * Translated from Windows SDK Headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winhttp.d) */ module core.sys.windows.winhttp; diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index 34b2818471..b4ff649fd7 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_wininet.d) */ module core.sys.windows.wininet; diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d index 5d03888e45..d20bbd2eeb 100644 --- a/src/core/sys/windows/winioctl.d +++ b/src/core/sys/windows/winioctl.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winioctl.d) */ module core.sys.windows.winioctl; diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index e341fbb7ec..6554ff1327 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winldap.d) */ module core.sys.windows.winldap; diff --git a/src/core/sys/windows/winnetwk.d b/src/core/sys/windows/winnetwk.d index a43bd9d4c7..94b701fce5 100644 --- a/src/core/sys/windows/winnetwk.d +++ b/src/core/sys/windows/winnetwk.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winnetwk.d) */ module core.sys.windows.winnetwk; diff --git a/src/core/sys/windows/winnls.d b/src/core/sys/windows/winnls.d index 118dbeb548..5648e0fad5 100644 --- a/src/core/sys/windows/winnls.d +++ b/src/core/sys/windows/winnls.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winnls.d) */ module core.sys.windows.winnls; diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index c4427e5683..9bea53be49 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -3,7 +3,7 @@ * * Translated from MinGW API for MS-Windows 3.12 * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winnt.d) */ module core.sys.windows.winnt; diff --git a/src/core/sys/windows/winperf.d b/src/core/sys/windows/winperf.d index b9ee7d9d66..77bd72419b 100644 --- a/src/core/sys/windows/winperf.d +++ b/src/core/sys/windows/winperf.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winperf.d) */ module core.sys.windows.winperf; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index 1ac08a26f1..54b3beb6b3 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winreg.d) */ module core.sys.windows.winreg; diff --git a/src/core/sys/windows/winsock2.d b/src/core/sys/windows/winsock2.d index 50b9c5502b..5a2b75b9c3 100644 --- a/src/core/sys/windows/winsock2.d +++ b/src/core/sys/windows/winsock2.d @@ -1,6 +1,6 @@ /* Written by Christopher E. Miller - Placed into public domain. + $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0). */ diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d index bfe0bea661..e00a73ed09 100644 --- a/src/core/sys/windows/winspool.d +++ b/src/core/sys/windows/winspool.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winspool.d) */ module core.sys.windows.winspool; diff --git a/src/core/sys/windows/winsvc.d b/src/core/sys/windows/winsvc.d index 1161cb928c..cc0e10225c 100644 --- a/src/core/sys/windows/winsvc.d +++ b/src/core/sys/windows/winsvc.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winsvc.d) */ module core.sys.windows.winsvc; diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 1c7590c23a..b63dd09fc9 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winuser.d) */ module core.sys.windows.winuser; diff --git a/src/core/sys/windows/winver.d b/src/core/sys/windows/winver.d index 122a94e4f7..feb8aa770e 100644 --- a/src/core/sys/windows/winver.d +++ b/src/core/sys/windows/winver.d @@ -4,7 +4,7 @@ * Translated from MinGW Windows headers * * Authors: Stewart Gordon - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_winver.d) */ module core.sys.windows.winver; diff --git a/src/core/sys/windows/wtsapi32.d b/src/core/sys/windows/wtsapi32.d index 70826389a8..4afc7fe533 100644 --- a/src/core/sys/windows/wtsapi32.d +++ b/src/core/sys/windows/wtsapi32.d @@ -3,7 +3,7 @@ * * Translated from MinGW-w64 API * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_wtsapi32.d) */ module core.sys.windows.wtsapi32; diff --git a/src/core/sys/windows/wtypes.d b/src/core/sys/windows/wtypes.d index 15ebe6c119..5d8bbf72c8 100644 --- a/src/core/sys/windows/wtypes.d +++ b/src/core/sys/windows/wtypes.d @@ -3,7 +3,7 @@ * * Translated from MinGW Windows headers * - * License: Placed into public domain + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC src/core/sys/windows/_wtypes.d) */ module core.sys.windows.wtypes; From e854d0e207652ebfa9d84b21d74ef399196351f7 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 15 Oct 2015 18:28:30 +0000 Subject: [PATCH 156/768] fix Issue 15128 - "IP_ADD_MEMBERSHIP" error in winsock2.d --- src/core/sys/windows/winsock2.d | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/core/sys/windows/winsock2.d b/src/core/sys/windows/winsock2.d index ec5d4506f6..620f828daa 100644 --- a/src/core/sys/windows/winsock2.d +++ b/src/core/sys/windows/winsock2.d @@ -319,9 +319,22 @@ enum: int TCP_NODELAY = 1, - IP_MULTICAST_LOOP = 0x4, - IP_ADD_MEMBERSHIP = 0x5, - IP_DROP_MEMBERSHIP = 0x6, + IP_OPTIONS = 1, + + IP_HDRINCL = 2, + IP_TOS = 3, + IP_TTL = 4, + IP_MULTICAST_IF = 9, + IP_MULTICAST_TTL = 10, + IP_MULTICAST_LOOP = 11, + IP_ADD_MEMBERSHIP = 12, + IP_DROP_MEMBERSHIP = 13, + IP_DONTFRAGMENT = 14, + IP_ADD_SOURCE_MEMBERSHIP = 15, + IP_DROP_SOURCE_MEMBERSHIP = 16, + IP_BLOCK_SOURCE = 17, + IP_UNBLOCK_SOURCE = 18, + IP_PKTINFO = 19, IPV6_UNICAST_HOPS = 4, IPV6_MULTICAST_IF = 9, From c469cf5bb500a56e6ed717d2c93cdb2d634892e3 Mon Sep 17 00:00:00 2001 From: MetaLang Date: Thu, 15 Oct 2015 17:32:51 -0300 Subject: [PATCH 157/768] [Trivial] Fix typo in unittest --- src/object.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/object.d b/src/object.d index ac3cbbe974..e9b4635148 100644 --- a/src/object.d +++ b/src/object.d @@ -1669,7 +1669,7 @@ unittest } { - auto e = new Exception("msg", new Exception("It's an Excepton!"), "hello", 42); + auto e = new Exception("msg", new Exception("It's an Exception!"), "hello", 42); assert(e.file == "hello"); assert(e.line == 42); assert(e.next !is null); @@ -1732,7 +1732,7 @@ unittest } { - auto e = new Error("msg", new Exception("It's an Excepton!")); + auto e = new Error("msg", new Exception("It's an Exception!")); assert(e.file is null); assert(e.line == 0); assert(e.next !is null); From 848c97c52186934dae807e2b0923c8fbb0f17e15 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 18 Oct 2015 10:53:48 +0200 Subject: [PATCH 158/768] issue 14327: move call to init_msvc() into rt_init() --- src/rt/dmain2.d | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 4af1b13fa9..00116b90fd 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -164,6 +164,9 @@ extern (C) int rt_init() rt_init. */ if (atomicOp!"+="(_initCount, 1) > 1) return 1; + version (CRuntime_Microsoft) + init_msvc(); + _d_monitor_staticctor(); _d_critical_init(); @@ -325,8 +328,6 @@ extern (C) int _d_run_main(int argc, char **argv, MainFunc mainFunc) } version (CRuntime_Microsoft) { - init_msvc(); - // enable full precision for reals version(Win64) asm From 6bc890c6eb52ee040cb5d5fbc6564139d79179cd Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 19 Oct 2015 02:28:47 -0700 Subject: [PATCH 159/768] eliminate more custom int to string conversions --- src/core/demangle.d | 20 +++--------- src/core/internal/string.d | 62 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 65 insertions(+), 17 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index cf99c883db..235bd7e04e 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -1722,19 +1722,7 @@ char[] demangleType( const(char)[] buf, char[] dst = null ) */ char[] mangle(T)(const(char)[] fqn, char[] dst = null) @safe pure nothrow { - static size_t numToString(char[] dst, size_t val) @safe pure nothrow - { - char[20] buf = void; - size_t i = buf.length; - do - { - buf[--i] = cast(char)(val % 10 + '0'); - } while (val /= 10); - immutable len = buf.length - i; - if (dst.length >= len) - dst[0 .. len] = buf[i .. $]; - return len; - } + import core.internal.string : numDigits, unsignedToTempString; static struct DotSplitter { @@ -1764,7 +1752,7 @@ char[] mangle(T)(const(char)[] fqn, char[] dst = null) @safe pure nothrow size_t len = "_D".length; foreach (comp; DotSplitter(fqn)) - len += numToString(null, comp.length) + comp.length; + len += numDigits(comp.length) + comp.length; len += T.mangleof.length; if (dst.length < len) dst.length = len; @@ -1772,7 +1760,9 @@ char[] mangle(T)(const(char)[] fqn, char[] dst = null) @safe pure nothrow dst[0 .. i] = "_D"; foreach (comp; DotSplitter(fqn)) { - i += numToString(dst[i .. $], comp.length); + const ndigits = numDigits(comp.length); + unsignedToTempString(comp.length, dst[i .. i + ndigits]); + i += ndigits; dst[i .. i + comp.length] = comp[]; i += comp.length; } diff --git a/src/core/internal/string.d b/src/core/internal/string.d index 2474c683ce..cecec37fe3 100644 --- a/src/core/internal/string.d +++ b/src/core/internal/string.d @@ -15,7 +15,7 @@ nothrow: alias UnsignedStringBuf = char[20]; -char[] unsignedToTempString(ulong value, char[] buf, uint radix) @safe +char[] unsignedToTempString(ulong value, char[] buf, uint radix = 10) @safe { size_t i = buf.length; do @@ -41,7 +41,7 @@ private struct TempStringNoAlloc auto unsignedToTempString(ulong value, uint radix) @safe { - TempStringNoAlloc result; + TempStringNoAlloc result = void; result._len = unsignedToTempString(value, result._buf, radix).length & 0xff; return result; } @@ -132,6 +132,64 @@ unittest assert(long.min.signedToTempString(2) == "-1000000000000000000000000000000000000000000000000000000000000000"); } + +/******************************** + * Determine number of digits that will result from a + * conversion of value to a string. + * Params: + * value = number to convert + * radix = radix + * Returns: + * number of digits + */ +int numDigits(uint radix = 10)(ulong value) @safe +{ + int n = 1; + while (1) + { + if (value <= uint.max) + { + uint v = cast(uint)value; + while (1) + { + if (v < radix) + return n; + if (v < radix * radix) + return n + 1; + if (v < radix * radix * radix) + return n + 2; + if (v < radix * radix * radix * radix) + return n + 3; + n += 4; + v /= radix * radix * radix * radix; + } + } + n += 4; + value /= radix * radix * radix * radix; + } +} + +unittest +{ + assert(0.numDigits == 1); + assert(9.numDigits == 1); + assert(10.numDigits == 2); + assert(99.numDigits == 2); + assert(100.numDigits == 3); + assert(999.numDigits == 3); + assert(1000.numDigits == 4); + assert(9999.numDigits == 4); + assert(10000.numDigits == 5); + assert(99999.numDigits == 5); + assert(uint.max.numDigits == 10); + assert(ulong.max.numDigits == 20); + + assert(0.numDigits!2 == 1); + assert(1.numDigits!2 == 1); + assert(2.numDigits!2 == 2); + assert(3.numDigits!2 == 2); +} + int dstrcmp( in char[] s1, in char[] s2 ) @trusted { import core.stdc.string : memcmp; From c5e759c9824f6814d844a4dc569f19eff5d1ef56 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 19 Oct 2015 04:31:00 -0700 Subject: [PATCH 160/768] add missing files to MANIFEST --- mak/MANIFEST | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mak/MANIFEST b/mak/MANIFEST index 10939252b2..8260a023ec 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -95,6 +95,7 @@ MANIFEST=\ src\core\sys\linux\termios.d \ src\core\sys\linux\time.d \ src\core\sys\linux\tipc.d \ + src\core\sys\linux\unistd.d \ \ src\core\sys\linux\sys\inotify.d \ src\core\sys\linux\sys\mman.d \ @@ -405,6 +406,9 @@ MANIFEST=\ src\rt\trace.d \ src\rt\tracegc.d \ \ + src\rt\backtrace\dwarf.d \ + src\rt\backtrace\elf.d \ + \ src\rt\util\array.d \ src\rt\util\hash.d \ src\rt\util\random.d \ From 7c44720457eedab0afdf59ab626d4c70d839ee66 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Tue, 20 Oct 2015 01:14:32 +0200 Subject: [PATCH 161/768] fix line_trace test --- test/exceptions/line_trace.exp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/exceptions/line_trace.exp b/test/exceptions/line_trace.exp index 8ddcb9f87c..bec4cab697 100644 --- a/test/exceptions/line_trace.exp +++ b/test/exceptions/line_trace.exp @@ -2,8 +2,8 @@ object.Exception@src/line_trace.d(17): exception ---------------- src/line_trace.d:17 void line_trace.f1() [ADDR] src/line_trace.d:5 _Dmain [ADDR] -src/rt/dmain2.d:471 _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [ADDR] -src/rt/dmain2.d:446 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] -src/rt/dmain2.d:471 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [ADDR] -src/rt/dmain2.d:446 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] -src/rt/dmain2.d:479 _d_run_main [ADDR] +src/rt/dmain2.d:472 _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [ADDR] +src/rt/dmain2.d:447 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] +src/rt/dmain2.d:472 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [ADDR] +src/rt/dmain2.d:447 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] +src/rt/dmain2.d:480 _d_run_main [ADDR] From 6ef3d7b2ff9a1e5998f435e53b4eaa6dc86d5fff Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 24 Oct 2015 05:20:50 +0000 Subject: [PATCH 162/768] HTML fixes --- src/core/math.d | 2 +- src/object.d | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/math.d b/src/core/math.d index 0541cf3dbe..99951e7aa1 100644 --- a/src/core/math.d +++ b/src/core/math.d @@ -5,7 +5,7 @@ * * Source: $(DRUNTIMESRC core/_math.d) * Macros: - * TABLE_SV = + * TABLE_SV =
* * $0
Special Values
* diff --git a/src/object.d b/src/object.d index e9b4635148..926db328a0 100644 --- a/src/object.d +++ b/src/object.d @@ -3046,7 +3046,7 @@ bool _ArrayEq(T1, T2)(T1[] a1, T2[] a2) /** Calculates the hash value of $(D arg) with $(D seed) initial value. -Result may be non-equals with $(D typeid(T).getHash(&arg)) +Result may be non-equals with `typeid(T).getHash(&arg)` The $(D seed) value may be used for hash chaining: ---- struct Test From d823f073c9eeca55a6ea31ebdc97f142c33a5726 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Tue, 27 Oct 2015 08:50:09 +0100 Subject: [PATCH 163/768] document VS2015 support --- changelog.dd | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/changelog.dd b/changelog.dd index 8502c8c68a..2afa7f610a 100644 --- a/changelog.dd +++ b/changelog.dd @@ -5,6 +5,7 @@ $(COMMENT Pending changelog for 2.069.0. $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 backtraces-with-line-numbers, Backtraces now include file name and line number.)) +$(LI $(RELATIVE_LINK2 link-against-vs2015, support to link against VS2015 libraries)) ) $(BUGSTITLE Library Changes, @@ -30,7 +31,19 @@ $(LI $(LNAME2 backtraces-with-line-numbers, Backtraces now include file name and ??:? __libc_start_main [0xc3ae96ff] ) ) + +$(LI $(LNAME2 link-against-vs2015, support to link against VS2015 libraries) + + $(P Support for linking against the Microsoft runtime library distributed with VS 2015 + has been added. This affects both the 64-bit build for Win64 and the 32-bit build + targeting the MS runtime (-m32mscoff).) + + $(P The compiler detects the library version to adjust the link command line automatically. + If you don't use dmd for linking, make sure to add legacy_stdio_definitions.lib to your + command line when linking against the VS2015 runtime.) ) +) + Macros: TITLE=Change Log From ace324e7f0cdf809b298e7f686188392f2da5719 Mon Sep 17 00:00:00 2001 From: k-hara Date: Wed, 28 Oct 2015 23:24:07 +0900 Subject: [PATCH 164/768] fix imports --- src/core/sys/windows/ntsecpkg.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/windows/ntsecpkg.d b/src/core/sys/windows/ntsecpkg.d index 053029baeb..f0087decf6 100644 --- a/src/core/sys/windows/ntsecpkg.d +++ b/src/core/sys/windows/ntsecpkg.d @@ -11,7 +11,7 @@ module core.sys.windows.ntsecpkg; version (Windows): import core.sys.windows.windef, core.sys.windows.ntsecapi, core.sys.windows.security, core.sys.windows.ntdef, core.sys.windows.sspi; -import core.sys.windows.winnt: GUID; +import core.sys.windows.basetyps : GUID; import core.sys.windows.winbase; extern(Windows): From de2788d911129545531e0e42d1c8630b3f406e7c Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 29 Oct 2015 15:01:27 +0100 Subject: [PATCH 165/768] Merge pull request #1412 from rainers/issue_14327 issue 14327: move call to init_msvc() into rt_init() --- src/rt/dmain2.d | 5 +++-- test/exceptions/line_trace.exp | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 4af1b13fa9..00116b90fd 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -164,6 +164,9 @@ extern (C) int rt_init() rt_init. */ if (atomicOp!"+="(_initCount, 1) > 1) return 1; + version (CRuntime_Microsoft) + init_msvc(); + _d_monitor_staticctor(); _d_critical_init(); @@ -325,8 +328,6 @@ extern (C) int _d_run_main(int argc, char **argv, MainFunc mainFunc) } version (CRuntime_Microsoft) { - init_msvc(); - // enable full precision for reals version(Win64) asm diff --git a/test/exceptions/line_trace.exp b/test/exceptions/line_trace.exp index 8ddcb9f87c..bec4cab697 100644 --- a/test/exceptions/line_trace.exp +++ b/test/exceptions/line_trace.exp @@ -2,8 +2,8 @@ object.Exception@src/line_trace.d(17): exception ---------------- src/line_trace.d:17 void line_trace.f1() [ADDR] src/line_trace.d:5 _Dmain [ADDR] -src/rt/dmain2.d:471 _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [ADDR] -src/rt/dmain2.d:446 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] -src/rt/dmain2.d:471 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [ADDR] -src/rt/dmain2.d:446 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] -src/rt/dmain2.d:479 _d_run_main [ADDR] +src/rt/dmain2.d:472 _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [ADDR] +src/rt/dmain2.d:447 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] +src/rt/dmain2.d:472 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [ADDR] +src/rt/dmain2.d:447 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] +src/rt/dmain2.d:480 _d_run_main [ADDR] From 82715d0589d815a77c7139a59193899866a35f02 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 30 Oct 2015 16:31:36 +0100 Subject: [PATCH 166/768] fixed Issue 14327 - Unhandled exception from writeln() - this is an empty dummy commit to close the bugzilla issue and generate a changelog entry - see #1412 (and de2788d911) for the original fix From 828700134cd8dca4ab0324eb2f320277cc398c97 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 31 Oct 2015 01:20:28 +0100 Subject: [PATCH 167/768] remove incorrect comment - both Thread.remove and thread_suspendAll synchronize on slock so a double removal isn't possible - we still set isRunning to false b/c some functions must not be called on a stopped thread, e.g. setPriority --- src/core/thread.d | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index 2af8f1874a..a75bda2273 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -271,11 +271,8 @@ else version( Posix ) //Thread.add( obj ); scope( exit ) { - // NOTE: isRunning should be set to false after the thread is - // removed or a double-removal could occur between this - // function and thread_suspendAll. Thread.remove( obj ); - atomicStore!(MemoryOrder.raw)(obj.m_isRunning,false); + atomicStore!(MemoryOrder.raw)(obj.m_isRunning, false); } Thread.add( &obj.m_main ); @@ -2012,6 +2009,7 @@ extern (C) void thread_init() */ extern (C) void thread_term() { + assert(Thread.sm_tbeg && Thread.sm_tlen == 1); Thread.termLocks(); version( OSX ) From be0c48ec135e9263871cc549d690ef6fac4d1965 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 31 Oct 2015 01:22:29 +0100 Subject: [PATCH 168/768] fix double removal of thread - happens when removing a running thread (thread_detachInstance) that gets removed again at the end of thread_entryPoint - fixed by setting .prev/.next to null on removal and checking for that - requires the obvious care when removing threads while looping over the list - also helps the GC a bit to collect dead Thread objects --- src/core/thread.d | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index a75bda2273..5e4ed45160 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1198,16 +1198,16 @@ class Thread { synchronized( slock ) { - int ret = 0; - - for( Thread t = sm_tbeg; t; t = t.next ) + auto t = sm_tbeg; + while (t) { - ret = dg( t ); - if( ret ) - break; + auto tn = t.next; + if (auto ret = dg(t)) + return ret; + t = tn; } - return ret; } + return 0; } @@ -1787,10 +1787,12 @@ private: in { assert( t ); - assert( t.next || t.prev ); } body { + // Thread was already removed earlier, might happen b/c of thread_detachInstance + if (!t.next && !t.prev) + return; slock.lock_nothrow(); { // NOTE: When a thread is removed from the global thread list its @@ -1810,6 +1812,7 @@ private: t.next.prev = t.prev; if( sm_tbeg is t ) sm_tbeg = t.next; + t.prev = t.next = null; --sm_tlen; } // NOTE: Don't null out t.next or t.prev because opApply currently @@ -2288,11 +2291,13 @@ shared static ~this() // NOTE: The functionality related to garbage collection must be minimally // operable after this dtor completes. Therefore, only minimal // cleanup may occur. - - for( Thread t = Thread.sm_tbeg; t; t = t.next ) + auto t = Thread.sm_tbeg; + while (t) { - if( !t.isRunning ) - Thread.remove( t ); + auto tn = t.next; + if (!t.isRunning) + Thread.remove(t); + t = tn; } } @@ -2610,8 +2615,10 @@ extern (C) void thread_suspendAll() nothrow // abort, and Bad Things to occur. Thread.criticalRegionLock.lock_nothrow(); - for (Thread t = Thread.sm_tbeg; t !is null; t = t.next) + auto t = Thread.sm_tbeg; + while (t) { + auto tn = t.next; Duration waittime = dur!"usecs"(10); Lagain: if (!t.isRunning) @@ -2630,6 +2637,7 @@ extern (C) void thread_suspendAll() nothrow { suspend(t); } + t = tn; } Thread.criticalRegionLock.unlock_nothrow(); } From d56a25997c069d6f5e657288f5d2d857dbd1a4fc Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 31 Oct 2015 01:57:41 +0100 Subject: [PATCH 169/768] fix Issue 15268 - deadlock for Thread.getAll/Thread.opApply - fix a deadlock caused by lock order inversion - must not use the GC while holding slock --- src/core/exception.d | 2 +- src/core/thread.d | 80 +++++++++++++++++++++++++++++++++----------- 2 files changed, 62 insertions(+), 20 deletions(-) diff --git a/src/core/exception.d b/src/core/exception.d index f3581cb292..502b416a4f 100644 --- a/src/core/exception.d +++ b/src/core/exception.d @@ -682,7 +682,7 @@ private T staticError(T, Args...)(auto ref Args args) // Suppress traceinfo generation when the GC cannot be used. Workaround for // Bugzilla 14993. We should make stack traces @nogc instead. -private class SuppressTraceInfo : Throwable.TraceInfo +package class SuppressTraceInfo : Throwable.TraceInfo { override int opApply(scope int delegate(ref const(char[]))) const { return 0; } override int opApply(scope int delegate(ref size_t, ref const(char[]))) const { return 0; } diff --git a/src/core/thread.d b/src/core/thread.d index 5e4ed45160..60d0d78631 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1162,6 +1162,8 @@ class Thread /** * Provides a list of all threads currently being tracked by the system. + * Note that threads in the returned array might no longer run (see + * $(D Thread.)$(LREF isRunning)). * * Returns: * An array containing references to all threads currently being @@ -1170,23 +1172,19 @@ class Thread */ static Thread[] getAll() { - synchronized( slock ) + static void resize(ref Thread[] buf, size_t nlen) { - size_t pos = 0; - Thread[] buf = new Thread[sm_tlen]; - - foreach( Thread t; Thread ) - { - buf[pos++] = t; - } - return buf; + buf.length = nlen; } + return getAllImpl!resize(); } /** * Operates on all threads currently being tracked by the system. The * result of deleting any Thread object is undefined. + * Note that threads passed to the callback might no longer run (see + * $(D Thread.)$(LREF isRunning)). * * Params: * dg = The supplied code as a delegate. @@ -1194,22 +1192,61 @@ class Thread * Returns: * Zero if all elemented are visited, nonzero if not. */ - static int opApply( scope int delegate( ref Thread ) dg ) + static int opApply(scope int delegate(ref Thread) dg) { - synchronized( slock ) + import core.stdc.stdlib : free, realloc; + + static void resize(ref Thread[] buf, size_t nlen) { - auto t = sm_tbeg; - while (t) - { - auto tn = t.next; - if (auto ret = dg(t)) - return ret; - t = tn; - } + buf = (cast(Thread*)realloc(buf.ptr, nlen * Thread.sizeof))[0 .. nlen]; + } + auto buf = getAllImpl!resize; + scope(exit) if (buf.ptr) free(buf.ptr); + + foreach (t; buf) + { + if (auto res = dg(t)) + return res; } return 0; } + unittest + { + auto t1 = new Thread({ + foreach (_; 0 .. 20) + Thread.getAll; + }).start; + auto t2 = new Thread({ + foreach (_; 0 .. 20) + GC.collect; + }).start; + t1.join(); + t2.join(); + } + + private static Thread[] getAllImpl(alias resize)() + { + import core.atomic; + + Thread[] buf; + while (true) + { + immutable len = atomicLoad!(MemoryOrder.raw)(*cast(shared)&sm_tlen); + resize(buf, len); + assert(buf.length == len); + synchronized (slock) + { + if (len == sm_tlen) + { + size_t pos; + for (Thread t = sm_tbeg; t; t = t.next) + buf[pos++] = t; + return buf; + } + } + } + } /////////////////////////////////////////////////////////////////////////// // Static Initalizer @@ -1605,6 +1642,9 @@ private: // // All use of the global lists should synchronize on this lock. // + // Careful as the GC acquires this lock after the GC lock to suspend all + // threads any GC usage with slock held can result in a deadlock through + // lock order inversion. @property static Mutex slock() nothrow { return cast(Mutex)_locks[0].ptr; @@ -2942,6 +2982,8 @@ private void onThreadError(string msg = null, Throwable next = null) nothrow __gshared ThreadError error = new ThreadError(null); error.msg = msg; error.next = next; + import core.exception : SuppressTraceInfo; + error.info = SuppressTraceInfo.instance; throw error; } From 7ec6520adc92c4fcdef003efb1c348ec5d78f217 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 31 Oct 2015 04:05:56 +0100 Subject: [PATCH 170/768] simplify handling of thread starts and GC suspend - only keep threads in global thread list while they are running this directly avoids any issues with signals delivered during thread startup - add an aboutToStart array to keep track of just spawned threads this is needed so that thread_joinAll doesn't miss a thread also the windows dll_attach_thread code looks up a just spawned thread - remove all the misleading comments - remove all the cargo cult handling of situations that can no longer occur, e.g. suspendDepth being set while adding a thread --- src/core/thread.d | 215 +++++++++++++++++++++------------------------- 1 file changed, 99 insertions(+), 116 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index 60d0d78631..9988be9ba2 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -151,13 +151,13 @@ version( Windows ) obj.m_main.tstack = obj.m_main.bstack; obj.m_tlsgcdata = rt_tlsgc_init(); - Thread.setThis( obj ); - //Thread.add( obj ); - scope( exit ) + Thread.setThis(obj); + Thread.add(obj); + scope (exit) { - Thread.remove( obj ); + Thread.remove(obj); } - Thread.add( &obj.m_main ); + Thread.add(&obj.m_main); // NOTE: No GC allocations may occur until the stack pointers have // been set and Thread.getThis returns a valid reference to @@ -267,14 +267,14 @@ else version( Posix ) obj.m_tlsgcdata = rt_tlsgc_init(); atomicStore!(MemoryOrder.raw)(obj.m_isRunning, true); - Thread.setThis( obj ); - //Thread.add( obj ); - scope( exit ) + Thread.setThis(obj); + Thread.add(obj); + scope (exit) { - Thread.remove( obj ); + Thread.remove(obj); atomicStore!(MemoryOrder.raw)(obj.m_isRunning, false); } - Thread.add( &obj.m_main ); + Thread.add(&obj.m_main); static extern (C) void thread_cleanupHandler( void* arg ) nothrow { @@ -636,15 +636,12 @@ class Thread onThreadError( "Error creating thread" ); } - // NOTE: The starting thread must be added to the global thread list - // here rather than within thread_entryPoint to prevent a race - // with the main thread, which could finish and terminat the - // app without ever knowing that it should have waited for this - // starting thread. In effect, not doing the add here risks - // having thread being treated like a daemon thread. slock.lock_nothrow(); scope(exit) slock.unlock_nothrow(); { + ++nAboutToStart; + pAboutToStart = cast(Thread*)realloc(pAboutToStart, Thread.sizeof * nAboutToStart); + pAboutToStart[nAboutToStart - 1] = this; version( Windows ) { if( ResumeThread( m_hndl ) == -1 ) @@ -686,17 +683,6 @@ class Thread onThreadError( "Error creating thread" ); } - // NOTE: when creating threads from inside a DLL, DllMain(THREAD_ATTACH) - // might be called before ResumeThread returns, but the dll - // helper functions need to know whether the thread is created - // from the runtime itself or from another DLL or the application - // to just attach to it - // as a consequence, the new Thread object is added before actual - // creation of the thread. There should be no problem with the GC - // calling thread_suspendAll, because of the slock synchronization - // - // VERIFY: does this actually also apply to other platforms? - add( this ); return this; } } @@ -1640,7 +1626,7 @@ private: // - // All use of the global lists should synchronize on this lock. + // All use of the global thread lists/array should synchronize on this lock. // // Careful as the GC acquires this lock after the GC lock to suspend all // threads any GC usage with slock held can result in a deadlock through @@ -1677,6 +1663,10 @@ private: __gshared Thread sm_tbeg; __gshared size_t sm_tlen; + // can't use rt.util.array in public code + __gshared Thread* pAboutToStart; + __gshared size_t nAboutToStart; + // // Used for ordering threads in the global thread list. // @@ -1700,31 +1690,16 @@ private: } body { - // NOTE: This loop is necessary to avoid a race between newly created - // threads and the GC. If a collection starts between the time - // Thread.start is called and the new thread calls Thread.add, - // the thread will have its stack scanned without first having - // been properly suspended. Testing has shown this to sometimes - // cause a deadlock. + slock.lock_nothrow(); + scope(exit) slock.unlock_nothrow(); + assert(!suspendDepth); // must be 0 b/c it's only set with slock held - while( true ) + if (sm_cbeg) { - slock.lock_nothrow(); - scope(exit) slock.unlock_nothrow(); - { - if( !suspendDepth ) - { - if( sm_cbeg ) - { - c.next = sm_cbeg; - sm_cbeg.prev = c; - } - sm_cbeg = c; - return; - } - } - yield(); + c.next = sm_cbeg; + sm_cbeg.prev = c; } + sm_cbeg = c; } @@ -1764,7 +1739,7 @@ private: // // Add a thread to the global thread list. // - static void add( Thread t ) nothrow + static void add( Thread t, bool rmAboutToStart = true ) nothrow in { assert( t ); @@ -1773,50 +1748,35 @@ private: } body { - // NOTE: This loop is necessary to avoid a race between newly created - // threads and the GC. If a collection starts between the time - // Thread.start is called and the new thread calls Thread.add, - // the thread could manipulate global state while the collection - // is running, and by being added to the thread list it could be - // resumed by the GC when it was never suspended, which would - // result in an exception thrown by the GC code. - // - // An alternative would be to have Thread.start call Thread.add - // for the new thread, but this may introduce its own problems, - // since the thread object isn't entirely ready to be operated - // on by the GC. This could be fixed by tracking thread startup - // status, but it's far easier to simply have Thread.add wait - // for any running collection to stop before altering the thread - // list. - // - // After further testing, having add wait for a collect to end - // proved to have its own problems (explained in Thread.start), - // so add(Thread) is now being done in Thread.start. This - // reintroduced the deadlock issue mentioned in bugzilla 4890, - // which appears to have been solved by doing this same wait - // procedure in add(Context). These comments will remain in - // case other issues surface that require the startup state - // tracking described above. - - while( true ) - { - slock.lock_nothrow(); - scope(exit) slock.unlock_nothrow(); + slock.lock_nothrow(); + scope(exit) slock.unlock_nothrow(); + assert(!suspendDepth); // must be 0 b/c it's only set with slock held + + if (rmAboutToStart) + { + size_t idx = -1; + foreach (i, thr; pAboutToStart[0 .. nAboutToStart]) { - if( !suspendDepth ) + if (thr is t) { - if( sm_tbeg ) - { - t.next = sm_tbeg; - sm_tbeg.prev = t; - } - sm_tbeg = t; - ++sm_tlen; - return; + idx = i; + break; } } - yield(); + assert(idx != -1); + import core.stdc.string : memmove; + memmove(pAboutToStart + idx, pAboutToStart + idx + 1, Thread.sizeof * (nAboutToStart - idx - 1)); + pAboutToStart = + cast(Thread*)realloc(pAboutToStart, Thread.sizeof * --nAboutToStart); + } + + if (sm_tbeg) + { + t.next = sm_tbeg; + sm_tbeg.prev = t; } + sm_tbeg = t; + ++sm_tlen; } @@ -2053,6 +2013,12 @@ extern (C) void thread_init() extern (C) void thread_term() { assert(Thread.sm_tbeg && Thread.sm_tlen == 1); + assert(!Thread.nAboutToStart); + if (Thread.pAboutToStart) // in case realloc(p, 0) doesn't return null + { + free(Thread.pAboutToStart); + Thread.pAboutToStart = null; + } Thread.termLocks(); version( OSX ) @@ -2120,7 +2086,7 @@ extern (C) Thread thread_attachThis() assert( thisThread.m_tmach != thisThread.m_tmach.init ); } - Thread.add( thisThread ); + Thread.add( thisThread, false ); Thread.add( thisContext ); if( Thread.sm_main !is null ) multiThreadedFlag = true; @@ -2181,7 +2147,7 @@ version( Windows ) }); } - Thread.add( thisThread ); + Thread.add( thisThread, false ); Thread.add( thisContext ); if( Thread.sm_main !is null ) multiThreadedFlag = true; @@ -2264,13 +2230,17 @@ static Thread thread_findByAddr( ThreadID addr ) { Thread.slock.lock_nothrow(); scope(exit) Thread.slock.unlock_nothrow(); - { - foreach( t; Thread ) - { - if( t.m_addr == addr ) - return t; - } - } + + // also return just spawned thread so that + // DLL_THREAD_ATTACH knows it's a D thread + foreach (t; Thread.pAboutToStart[0 .. Thread.nAboutToStart]) + if (t.m_addr == addr) + return t; + + foreach (t; Thread) + if (t.m_addr == addr) + return t; + return null; } @@ -2298,28 +2268,38 @@ extern (C) void thread_setThis(Thread t) */ extern (C) void thread_joinAll() { - - while( true ) + Lagain: + Thread.slock.lock_nothrow(); + // wait for just spawned threads + if (Thread.nAboutToStart) { - Thread nonDaemon = null; + Thread.slock.unlock_nothrow(); + Thread.yield(); + goto Lagain; + } - foreach( t; Thread ) + // join all non-daemon threads, the main thread is also a daemon + auto t = Thread.sm_tbeg; + while (t) + { + if (!t.isRunning) { - if( !t.isRunning ) - { - Thread.remove( t ); - continue; - } - if( !t.isDaemon ) - { - nonDaemon = t; - break; - } + auto tn = t.next; + Thread.remove(t); + t = tn; + } + else if (t.isDaemon) + { + t = t.next; + } + else + { + Thread.slock.unlock_nothrow(); + t.join(); // might rethrow + goto Lagain; // must restart iteration b/c of unlock } - if( nonDaemon is null ) - return; - nonDaemon.join(); } + Thread.slock.unlock_nothrow(); } @@ -2854,6 +2834,9 @@ private void scanAllTypeImpl( scope ScanAllThreadsTypeFn scan, void* curStackTop // NOTE: Synchronizing on Thread.slock is not needed because this // function may only be called after all other threads have // been suspended from within the same lock. + if (Thread.nAboutToStart) + scan(ScanType.stack, Thread.pAboutToStart, Thread.pAboutToStart + Thread.nAboutToStart); + for( Thread.Context* c = Thread.sm_cbeg; c; c = c.next ) { version( StackGrowsDown ) From e226ff2bd26b1941ddadfa0b30ca4f162901ab13 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 31 Oct 2015 04:26:55 +0100 Subject: [PATCH 171/768] fix Issue 15270 - use TLS to store Thread.getThis - as signals are no longer send during thread startup we can use a TLS variable to store Thread.getThis() - make sure to set the variable (and probably trigger lazy TLS allocation) before adding the Thread to the global list --- src/core/thread.d | 59 ++++------------------------------------------- 1 file changed, 5 insertions(+), 54 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index 9988be9ba2..dc157abb7c 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -267,8 +267,8 @@ else version( Posix ) obj.m_tlsgcdata = rt_tlsgc_init(); atomicStore!(MemoryOrder.raw)(obj.m_isRunning, true); - Thread.setThis(obj); - Thread.add(obj); + Thread.setThis(obj); // allocates lazy TLS (see Issue 11981) + Thread.add(obj); // can only receive signals from here on scope (exit) { Thread.remove(obj); @@ -1130,19 +1130,7 @@ class Thread // NOTE: This function may not be called until thread_init has // completed. See thread_suspendAll for more information // on why this might occur. - version( OSX ) - { - return sm_this; - } - else version( Posix ) - { - auto t = cast(Thread) pthread_getspecific( sm_this ); - return t; - } - else - { - return sm_this; - } + return sm_this; } @@ -1401,22 +1389,7 @@ private: // // Local storage // - version( OSX ) - { - static Thread sm_this; - } - else version( Posix ) - { - // On Posix (excluding OSX), pthread_key_t is explicitly used to - // store and access thread reference. This is needed - // to avoid TLS access in signal handlers (malloc deadlock) - // when using shared libraries, see issue 11981. - __gshared pthread_key_t sm_this; - } - else - { - static Thread sm_this; - } + static Thread sm_this; // @@ -1475,18 +1448,7 @@ private: // static void setThis( Thread t ) { - version( OSX ) - { - sm_this = t; - } - else version( Posix ) - { - pthread_setspecific( sm_this, cast(void*) t ); - } - else - { - sm_this = t; - } + sm_this = t; } @@ -1998,9 +1960,6 @@ extern (C) void thread_init() status = sem_init( &suspendCount, 0, 0 ); assert( status == 0 ); - - status = pthread_key_create( &Thread.sm_this, null ); - assert( status == 0 ); } Thread.sm_main = thread_attachThis(); } @@ -2020,14 +1979,6 @@ extern (C) void thread_term() Thread.pAboutToStart = null; } Thread.termLocks(); - - version( OSX ) - { - } - else version( Posix ) - { - pthread_key_delete( Thread.sm_this ); - } } From 20f035005db31801ac53bb60a5a12a8bd70d534d Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 31 Oct 2015 14:34:29 +0100 Subject: [PATCH 172/768] fix race condition on m_addr - between pthread_create(&m_addr) and reading m_addr to asserting isRunning when adding the newly created thread - this race existed before but didn't manifest b/c the thread was added by the starting thread (after pthread_create) returned - check isRunning after acquiring slock to ensure pthread_create already returned --- src/core/thread.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/thread.d b/src/core/thread.d index dc157abb7c..df483d44e3 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1706,12 +1706,12 @@ private: { assert( t ); assert( !t.next && !t.prev ); - assert( t.isRunning ); } body { slock.lock_nothrow(); scope(exit) slock.unlock_nothrow(); + assert(t.isRunning); // check this with slock to ensure pthread_create already returned assert(!suspendDepth); // must be 0 b/c it's only set with slock held if (rmAboutToStart) From 9ac7bb0adeb43a2b9700378c01105083c0f5108c Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 31 Oct 2015 19:16:48 +0100 Subject: [PATCH 173/768] remove misleading comment - it's not possible to add a thread while suspendAll holds slock --- src/core/thread.d | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index df483d44e3..4eda214557 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -2577,14 +2577,6 @@ extern (C) void thread_suspendAll() nothrow if( ++suspendDepth > 1 ) return; - // NOTE: I'd really prefer not to check isRunning within this loop but - // not doing so could be problematic if threads are terminated - // abnormally and a new thread is created with the same thread - // address before the next GC run. This situation might cause - // the same thread to be suspended twice, which would likely - // cause the second suspend to fail, the garbage collection to - // abort, and Bad Things to occur. - Thread.criticalRegionLock.lock_nothrow(); auto t = Thread.sm_tbeg; while (t) From 7a2b19b0af1ad933a20e90b7793aaaa5839422c8 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 31 Oct 2015 19:37:35 +0100 Subject: [PATCH 174/768] threads are no longer suspended during startup - so Thread.getThis will always be set in the signal handler --- src/core/thread.d | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index 4eda214557..9adbc045f0 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -385,15 +385,10 @@ else version( Posix ) // NOTE: Since registers are being pushed and popped from the // stack, any other stack data used by this function should // be gone before the stack cleanup code is called below. - Thread obj = Thread.getThis(); - - // NOTE: The thread reference returned by getThis is set within - // the thread startup code, so it is possible that this - // handler may be called before the reference is set. In - // this case it is safe to simply suspend and not worry - // about the stack pointers as the thread will not have - // any references to GC-managed data. - if( obj && !obj.m_lock ) + Thread obj = Thread.getThis(); + assert(obj !is null); + + if( !obj.m_lock ) { obj.m_curr.tstack = getStackTop(); } @@ -413,7 +408,7 @@ else version( Posix ) sigsuspend( &sigres ); - if( obj && !obj.m_lock ) + if( !obj.m_lock ) { obj.m_curr.tstack = obj.m_curr.bstack; } From 277b5b2acbe5d66117ecce3ff81f7913d1a87d44 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 31 Oct 2015 19:42:02 +0100 Subject: [PATCH 175/768] suspend threads in parallel - heavily reduce suspendAll time with many threads by signalling all N threads in parallel and then waiting N times for the semaphore rather than doing that serially - won't improve anything on OSX/Windows which do use a synchronous suspend API - move critical region handling into suspend method - change FreeBSD's m_suspendagain workaround to a per thread flag --- src/core/thread.d | 99 ++++++++++++++++++++++++++++++----------------- 1 file changed, 63 insertions(+), 36 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index 9adbc045f0..d596862b72 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -402,7 +402,7 @@ else version( Posix ) status = sigdelset( &sigres, resumeSignalNumber ); assert( status == 0 ); - version (FreeBSD) Thread.sm_suspendagain = false; + version (FreeBSD) obj.m_suspendagain = false; status = sem_post( &suspendCount ); assert( status == 0 ); @@ -417,9 +417,10 @@ else version( Posix ) // avoid deadlocks on FreeBSD, see Issue 13416 version (FreeBSD) { - if (THR_IN_CRITICAL(pthread_self())) + auto obj = Thread.getThis(); + if (THR_IN_CRITICAL(obj.m_addr)) { - Thread.sm_suspendagain = true; + obj.m_suspendagain = true; if (sem_post(&suspendCount)) assert(0); return; } @@ -1395,7 +1396,7 @@ private: version (FreeBSD) { // set when suspend failed and should be retried, see Issue 13416 - static shared bool sm_suspendagain; + shared bool m_suspendagain; } @@ -2376,9 +2377,27 @@ private __gshared uint suspendDepth = 0; * * Throws: * ThreadError if the suspend operation fails for a running thread. + * Returns: + * Whether the thread is now suspended (true) or terminated (false). */ -private void suspend( Thread t ) nothrow +private bool suspend( Thread t ) nothrow { + Duration waittime = dur!"usecs"(10); + Lagain: + if (!t.isRunning) + { + Thread.remove(t); + return false; + } + else if (t.m_isInCriticalRegion) + { + Thread.criticalRegionLock.unlock_nothrow(); + Thread.sleep(waittime); + if (waittime < dur!"msecs"(10)) waittime *= 2; + Thread.criticalRegionLock.lock_nothrow(); + goto Lagain; + } + version( Windows ) { if( t.m_addr != GetCurrentThreadId() && SuspendThread( t.m_hndl ) == 0xFFFFFFFF ) @@ -2386,7 +2405,7 @@ private void suspend( Thread t ) nothrow if( !t.isRunning ) { Thread.remove( t ); - return; + return false; } onThreadError( "Unable to suspend thread" ); } @@ -2445,7 +2464,7 @@ private void suspend( Thread t ) nothrow if( !t.isRunning ) { Thread.remove( t ); - return; + return false; } onThreadError( "Unable to suspend thread" ); } @@ -2506,33 +2525,22 @@ private void suspend( Thread t ) nothrow { if( t.m_addr != pthread_self() ) { - Lagain: if( pthread_kill( t.m_addr, suspendSignalNumber ) != 0 ) { if( !t.isRunning ) { Thread.remove( t ); - return; + return false; } onThreadError( "Unable to suspend thread" ); } - while (sem_wait(&suspendCount) != 0) - { - if (errno != EINTR) - onThreadError( "Unable to wait for semaphore" ); - errno = 0; - } - version (FreeBSD) - { - // avoid deadlocks, see Issue 13416 - if (Thread.sm_suspendagain) goto Lagain; - } } else if( !t.m_lock ) { t.m_curr.tstack = getStackTop(); } } + return true; } /** @@ -2573,31 +2581,50 @@ extern (C) void thread_suspendAll() nothrow return; Thread.criticalRegionLock.lock_nothrow(); + scope (exit) Thread.criticalRegionLock.unlock_nothrow(); + size_t cnt; auto t = Thread.sm_tbeg; while (t) { auto tn = t.next; - Duration waittime = dur!"usecs"(10); + if (suspend(t)) + ++cnt; + t = tn; + } + + version (OSX) + {} + else version (Posix) + { + // subtract own thread + assert(cnt >= 1); + --cnt; Lagain: - if (!t.isRunning) - { - Thread.remove(t); - } - else if (t.m_isInCriticalRegion) + // wait for semaphore notifications + for (; cnt; --cnt) { - Thread.criticalRegionLock.unlock_nothrow(); - Thread.sleep(waittime); - if (waittime < dur!"msecs"(10)) waittime *= 2; - Thread.criticalRegionLock.lock_nothrow(); - goto Lagain; + while (sem_wait(&suspendCount) != 0) + { + if (errno != EINTR) + onThreadError("Unable to wait for semaphore"); + errno = 0; + } } - else + version (FreeBSD) { - suspend(t); - } - t = tn; + // avoid deadlocks, see Issue 13416 + t = Thread.sm_tbeg; + while (t) + { + auto tn = t.next; + if (t.m_suspendagain && suspend(t)) + ++cnt; + t = tn; + } + if (cnt) + goto Lagain; + } } - Thread.criticalRegionLock.unlock_nothrow(); } } From 75ac0e237d3db230d496fd8243d53f00bb00f574 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sat, 31 Oct 2015 21:50:05 +0100 Subject: [PATCH 176/768] Add strerror_r() for OpenSolaris. Required to compile Phobos on OpenSolaris. --- src/core/stdc/string.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/stdc/string.d b/src/core/stdc/string.d index fac47bfa52..1ed6e3a237 100644 --- a/src/core/stdc/string.d +++ b/src/core/stdc/string.d @@ -80,6 +80,10 @@ else version (FreeBSD) { int strerror_r(int errnum, char* buf, size_t buflen); } +else version (Solaris) +{ + int strerror_r(int errnum, char* buf, size_t buflen); +} else version (CRuntime_Bionic) { /// From 63633fa96fc629c5751b22f2355a8e2760c646e4 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sat, 31 Oct 2015 23:29:04 +0100 Subject: [PATCH 177/768] Add errno constants for Linux: AArch64, MIPS64, PPC64, SystemZ --- src/core/stdc/errno.d | 407 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 407 insertions(+) diff --git a/src/core/stdc/errno.d b/src/core/stdc/errno.d index 834bfb6b4a..d278d7d7af 100644 --- a/src/core/stdc/errno.d +++ b/src/core/stdc/errno.d @@ -410,6 +410,413 @@ else version( linux ) enum EOWNERDEAD = 130; /// enum ENOTRECOVERABLE = 131; /// } + else version(AArch64) + { + enum EDEADLK = 35; /// + enum ENAMETOOLONG = 36; /// + enum ENOLCK = 37; /// + enum ENOSYS = 38; /// + enum ENOTEMPTY = 39; /// + enum ELOOP = 40; /// + enum EWOULDBLOCK = EAGAIN; /// + enum ENOMSG = 42; /// + enum EIDRM = 43; /// + enum ECHRNG = 44; /// + enum EL2NSYNC = 45; /// + enum EL3HLT = 46; /// + enum EL3RST = 47; /// + enum ELNRNG = 48; /// + enum EUNATCH = 49; /// + enum ENOCSI = 50; /// + enum EL2HLT = 51; /// + enum EBADE = 52; /// + enum EBADR = 53; /// + enum EXFULL = 54; /// + enum ENOANO = 55; /// + enum EBADRQC = 56; /// + enum EBADSLT = 57; /// + enum EDEADLOCK = EDEADLK; /// + enum EBFONT = 59; /// + enum ENOSTR = 60; /// + enum ENODATA = 61; /// + enum ETIME = 62; /// + enum ENOSR = 63; /// + enum ENONET = 64; /// + enum ENOPKG = 65; /// + enum EREMOTE = 66; /// + enum ENOLINK = 67; /// + enum EADV = 68; /// + enum ESRMNT = 69; /// + enum ECOMM = 70; /// + enum EPROTO = 71; /// + enum EMULTIHOP = 72; /// + enum EDOTDOT = 73; /// + enum EBADMSG = 74; /// + enum EOVERFLOW = 75; /// + enum ENOTUNIQ = 76; /// + enum EBADFD = 77; /// + enum EREMCHG = 78; /// + enum ELIBACC = 79; /// + enum ELIBBAD = 80; /// + enum ELIBSCN = 81; /// + enum ELIBMAX = 82; /// + enum ELIBEXEC = 83; /// + enum EILSEQ = 84; /// + enum ERESTART = 85; /// + enum ESTRPIPE = 86; /// + enum EUSERS = 87; /// + enum ENOTSOCK = 88; /// + enum EDESTADDRREQ = 89; /// + enum EMSGSIZE = 90; /// + enum EPROTOTYPE = 91; /// + enum ENOPROTOOPT = 92; /// + enum EPROTONOSUPPORT = 93; /// + enum ESOCKTNOSUPPORT = 94; /// + enum EOPNOTSUPP = 95; /// + enum EPFNOSUPPORT = 96; /// + enum EAFNOSUPPORT = 97; /// + enum EADDRINUSE = 98; /// + enum EADDRNOTAVAIL = 99; /// + enum ENETDOWN = 100; /// + enum ENETUNREACH = 101; /// + enum ENETRESET = 102; /// + enum ECONNABORTED = 103; /// + enum ECONNRESET = 104; /// + enum ENOBUFS = 105; /// + enum EISCONN = 106; /// + enum ENOTCONN = 107; /// + enum ESHUTDOWN = 108; /// + enum ETOOMANYREFS = 109; /// + enum ETIMEDOUT = 110; /// + enum ECONNREFUSED = 111; /// + enum EHOSTDOWN = 112; /// + enum EHOSTUNREACH = 113; /// + enum EALREADY = 114; /// + enum EINPROGRESS = 115; /// + enum ESTALE = 116; /// + enum EUCLEAN = 117; /// + enum ENOTNAM = 118; /// + enum ENAVAIL = 119; /// + enum EISNAM = 120; /// + enum EREMOTEIO = 121; /// + enum EDQUOT = 122; /// + enum ENOMEDIUM = 123; /// + enum EMEDIUMTYPE = 124; /// + enum ECANCELED = 125; /// + enum ENOKEY = 126; /// + enum EKEYEXPIRED = 127; /// + enum EKEYREVOKED = 128; /// + enum EKEYREJECTED = 129; /// + enum EOWNERDEAD = 130; /// + enum ERFKILL = 132; /// + enum EHWPOISON = 133; /// + } + else version(MIPS64) + { + enum ENOMSG = 35; /// + enum EIDRM = 36; /// + enum ECHRNG = 37; /// + enum EL2NSYNC = 38; /// + enum EL3HLT = 39; /// + enum EL3RST = 40; /// + enum ELNRNG = 41; /// + enum EUNATCH = 42; /// + enum ENOCSI = 43; /// + enum EL2HLT = 44; /// + enum EDEADLK = 45; /// + enum ENOLCK = 46; /// + enum EBADE = 50; /// + enum EBADR = 51; /// + enum EXFULL = 52; /// + enum ENOANO = 53; /// + enum EBADRQC = 54; /// + enum EBADSLT = 55; /// + enum EDEADLOCK = 56; /// + enum EBFONT = 59; /// + enum ENOSTR = 60; /// + enum ENODATA = 61; /// + enum ETIME = 62; /// + enum ENOSR = 63; /// + enum ENONET = 64; /// + enum ENOPKG = 65; /// + enum EREMOTE = 66; /// + enum ENOLINK = 67; /// + enum EADV = 68; /// + enum ESRMNT = 69; /// + enum ECOMM = 70; /// + enum EPROTO = 71; /// + enum EDOTDOT = 73; /// + enum EMULTIHOP = 74; /// + enum EBADMSG = 77; /// + enum ENAMETOOLONG = 78; /// + enum EOVERFLOW = 79; /// + enum ENOTUNIQ = 80; /// + enum EBADFD = 81; /// + enum EREMCHG = 82; /// + enum ELIBACC = 83; /// + enum ELIBBAD = 84; /// + enum ELIBSCN = 85; /// + enum ELIBMAX = 86; /// + enum ELIBEXEC = 87; /// + enum EILSEQ = 88; /// + enum ENOSYS = 89; /// + enum ELOOP = 90; /// + enum ERESTART = 91; /// + enum ESTRPIPE = 92; /// + enum ENOTEMPTY = 93; /// + enum EUSERS = 94; /// + enum ENOTSOCK = 95; /// + enum EDESTADDRREQ = 96; /// + enum EMSGSIZE = 97; /// + enum EPROTOTYPE = 98; /// + enum ENOPROTOOPT = 99; /// + enum EPROTONOSUPPORT = 120; /// + enum ESOCKTNOSUPPORT = 121; /// + enum EOPNOTSUPP = 122; /// + enum EPFNOSUPPORT = 123; /// + enum EAFNOSUPPORT = 124; /// + enum EADDRINUSE = 125; /// + enum EADDRNOTAVAIL = 126; /// + enum ENETDOWN = 127; /// + enum ENETUNREACH = 128; /// + enum ENETRESET = 129; /// + enum ECONNABORTED = 130; /// + enum ECONNRESET = 131; /// + enum ENOBUFS = 132; /// + enum EISCONN = 133; /// + enum ENOTCONN = 134; /// + enum EUCLEAN = 135; /// + enum ENOTNAM = 137; /// + enum ENAVAIL = 138; /// + enum EISNAM = 139; /// + enum EREMOTEIO = 140; /// + enum EINIT = 141; /// + enum EREMDEV = 142; /// + enum ESHUTDOWN = 143; /// + enum ETOOMANYREFS = 144; /// + enum ETIMEDOUT = 145; /// + enum ECONNREFUSED = 146; /// + enum EHOSTDOWN = 147; /// + enum EHOSTUNREACH = 148; /// + enum EWOULDBLOCK = EAGAIN; /// + enum EALREADY = 149; /// + enum EINPROGRESS = 150; /// + enum ESTALE = 151; /// + enum ECANCELED = 158; /// + enum ENOMEDIUM = 159; /// + enum EMEDIUMTYPE = 160; /// + enum ENOKEY = 161; /// + enum EKEYEXPIRED = 162; /// + enum EKEYREVOKED = 163; /// + enum EKEYREJECTED = 164; /// + enum EOWNERDEAD = 165; /// + enum ENOTRECOVERABLE = 166; /// + enum ERFKILL = 167; /// + enum EHWPOISON = 168; /// + enum EDQUOT = 1133; /// + } + else version(PPC64) + { + enum EDEADLK = 35; /// + enum ENAMETOOLONG = 36; /// + enum ENOLCK = 37; /// + enum ENOSYS = 38; /// + enum ENOTEMPTY = 39; /// + enum ELOOP = 40; /// + enum EWOULDBLOCK = EAGAIN; /// + enum ENOMSG = 42; /// + enum EIDRM = 43; /// + enum ECHRNG = 44; /// + enum EL2NSYNC = 45; /// + enum EL3HLT = 46; /// + enum EL3RST = 47; /// + enum ELNRNG = 48; /// + enum EUNATCH = 49; /// + enum ENOCSI = 50; /// + enum EL2HLT = 51; /// + enum EBADE = 52; /// + enum EBADR = 53; /// + enum EXFULL = 54; /// + enum ENOANO = 55; /// + enum EBADRQC = 56; /// + enum EBADSLT = 57; /// + enum EDEADLOCK = EDEADLK; /// + enum EBFONT = 59; /// + enum ENOSTR = 60; /// + enum ENODATA = 61; /// + enum ETIME = 62; /// + enum ENOSR = 63; /// + enum ENONET = 64; /// + enum ENOPKG = 65; /// + enum EREMOTE = 66; /// + enum ENOLINK = 67; /// + enum EADV = 68; /// + enum ESRMNT = 69; /// + enum ECOMM = 70; /// + enum EPROTO = 71; /// + enum EMULTIHOP = 72; /// + enum EDOTDOT = 73; /// + enum EBADMSG = 74; /// + enum EOVERFLOW = 75; /// + enum ENOTUNIQ = 76; /// + enum EBADFD = 77; /// + enum EREMCHG = 78; /// + enum ELIBACC = 79; /// + enum ELIBBAD = 80; /// + enum ELIBSCN = 81; /// + enum ELIBMAX = 82; /// + enum ELIBEXEC = 83; /// + enum EILSEQ = 84; /// + enum ERESTART = 85; /// + enum ESTRPIPE = 86; /// + enum EUSERS = 87; /// + enum ENOTSOCK = 88; /// + enum EDESTADDRREQ = 89; /// + enum EMSGSIZE = 90; /// + enum EPROTOTYPE = 91; /// + enum ENOPROTOOPT = 92; /// + enum EPROTONOSUPPORT = 93; /// + enum ESOCKTNOSUPPORT = 94; /// + enum EOPNOTSUPP = 95; /// + enum EPFNOSUPPORT = 96; /// + enum EAFNOSUPPORT = 97; /// + enum EADDRINUSE = 98; /// + enum EADDRNOTAVAIL = 99; /// + enum ENETDOWN = 100; /// + enum ENETUNREACH = 101; /// + enum ENETRESET = 102; /// + enum ECONNABORTED = 103; /// + enum ECONNRESET = 104; /// + enum ENOBUFS = 105; /// + enum EISCONN = 106; /// + enum ENOTCONN = 107; /// + enum ESHUTDOWN = 108; /// + enum ETOOMANYREFS = 109; /// + enum ETIMEDOUT = 110; /// + enum ECONNREFUSED = 111; /// + enum EHOSTDOWN = 112; /// + enum EHOSTUNREACH = 113; /// + enum EALREADY = 114; /// + enum EINPROGRESS = 115; /// + enum ESTALE = 116; /// + enum EUCLEAN = 117; /// + enum ENOTNAM = 118; /// + enum ENAVAIL = 119; /// + enum EISNAM = 120; /// + enum EREMOTEIO = 121; /// + enum EDQUOT = 122; /// + enum ENOMEDIUM = 123; /// + enum EMEDIUMTYPE = 124; /// + enum ECANCELED = 125; /// + enum ENOKEY = 126; /// + enum EKEYEXPIRED = 127; /// + enum EKEYREVOKED = 128; /// + enum EKEYREJECTED = 129; /// + enum EOWNERDEAD = 130; /// + enum ERFKILL = 132; /// + enum EHWPOISON = 133; /// + } + else version(SystemZ) + { + enum EDEADLK = 35; /// + enum ENAMETOOLONG = 36; /// + enum ENOLCK = 37; /// + enum ENOSYS = 38; /// + enum ENOTEMPTY = 39; /// + enum ELOOP = 40; /// + enum EWOULDBLOCK = EAGAIN; /// + enum ENOMSG = 42; /// + enum EIDRM = 43; /// + enum ECHRNG = 44; /// + enum EL2NSYNC = 45; /// + enum EL3HLT = 46; /// + enum EL3RST = 47; /// + enum ELNRNG = 48; /// + enum EUNATCH = 49; /// + enum ENOCSI = 50; /// + enum EL2HLT = 51; /// + enum EBADE = 52; /// + enum EBADR = 53; /// + enum EXFULL = 54; /// + enum ENOANO = 55; /// + enum EBADRQC = 56; /// + enum EBADSLT = 57; /// + enum EDEADLOCK = EDEADLK; /// + enum EBFONT = 59; /// + enum ENOSTR = 60; /// + enum ENODATA = 61; /// + enum ETIME = 62; /// + enum ENOSR = 63; /// + enum ENONET = 64; /// + enum ENOPKG = 65; /// + enum EREMOTE = 66; /// + enum ENOLINK = 67; /// + enum EADV = 68; /// + enum ESRMNT = 69; /// + enum ECOMM = 70; /// + enum EPROTO = 71; /// + enum EMULTIHOP = 72; /// + enum EDOTDOT = 73; /// + enum EBADMSG = 74; /// + enum EOVERFLOW = 75; /// + enum ENOTUNIQ = 76; /// + enum EBADFD = 77; /// + enum EREMCHG = 78; /// + enum ELIBACC = 79; /// + enum ELIBBAD = 80; /// + enum ELIBSCN = 81; /// + enum ELIBMAX = 82; /// + enum ELIBEXEC = 83; /// + enum EILSEQ = 84; /// + enum ERESTART = 85; /// + enum ESTRPIPE = 86; /// + enum EUSERS = 87; /// + enum ENOTSOCK = 88; /// + enum EDESTADDRREQ = 89; /// + enum EMSGSIZE = 90; /// + enum EPROTOTYPE = 91; /// + enum ENOPROTOOPT = 92; /// + enum EPROTONOSUPPORT = 93; /// + enum ESOCKTNOSUPPORT = 94; /// + enum EOPNOTSUPP = 95; /// + enum EPFNOSUPPORT = 96; /// + enum EAFNOSUPPORT = 97; /// + enum EADDRINUSE = 98; /// + enum EADDRNOTAVAIL = 99; /// + enum ENETDOWN = 100; /// + enum ENETUNREACH = 101; /// + enum ENETRESET = 102; /// + enum ECONNABORTED = 103; /// + enum ECONNRESET = 104; /// + enum ENOBUFS = 105; /// + enum EISCONN = 106; /// + enum ENOTCONN = 107; /// + enum ESHUTDOWN = 108; /// + enum ETOOMANYREFS = 109; /// + enum ETIMEDOUT = 110; /// + enum ECONNREFUSED = 111; /// + enum EHOSTDOWN = 112; /// + enum EHOSTUNREACH = 113; /// + enum EALREADY = 114; /// + enum EINPROGRESS = 115; /// + enum ESTALE = 116; /// + enum EUCLEAN = 117; /// + enum ENOTNAM = 118; /// + enum ENAVAIL = 119; /// + enum EISNAM = 120; /// + enum EREMOTEIO = 121; /// + enum EDQUOT = 122; /// + enum ENOMEDIUM = 123; /// + enum EMEDIUMTYPE = 124; /// + enum ECANCELED = 125; /// + enum ENOKEY = 126; /// + enum EKEYEXPIRED = 127; /// + enum EKEYREVOKED = 128; /// + enum EKEYREJECTED = 129; /// + enum EOWNERDEAD = 130; /// + enum ERFKILL = 132; /// + enum EHWPOISON = 133; /// + } else { static assert(false, "Architecture not supported."); From 946e0f45ab2686eee146eae8c757d3a77f1e10d7 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sat, 31 Oct 2015 21:22:04 +0100 Subject: [PATCH 178/768] Add clock definitions for Solaris. Required to compile druntime on OpenSolaris 11.2. --- mak/COPY | 1 + mak/MANIFEST | 1 + src/core/sys/posix/time.d | 5 ++++- src/core/sys/solaris/time.d | 18 ++++++++++++++++++ src/core/time.d | 26 ++++++++++++++++++++++++-- win32.mak | 3 +++ win64.mak | 3 +++ 7 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 src/core/sys/solaris/time.d diff --git a/mak/COPY b/mak/COPY index ac321c0fc8..64676349b6 100644 --- a/mak/COPY +++ b/mak/COPY @@ -139,6 +139,7 @@ COPY=\ $(IMPDIR)\core\sys\solaris\execinfo.d \ $(IMPDIR)\core\sys\solaris\libelf.d \ $(IMPDIR)\core\sys\solaris\link.d \ + $(IMPDIR)\core\sys\solaris\time.d \ $(IMPDIR)\core\sys\solaris\sys\elf.d \ $(IMPDIR)\core\sys\solaris\sys\elf_386.d \ $(IMPDIR)\core\sys\solaris\sys\elf_amd64.d \ diff --git a/mak/MANIFEST b/mak/MANIFEST index 8260a023ec..f9e0e7f3fa 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -170,6 +170,7 @@ MANIFEST=\ src\core\sys\solaris\execinfo.d \ src\core\sys\solaris\libelf.d \ src\core\sys\solaris\link.d \ + src\core\sys\solaris\time.d \ \ src\core\sys\solaris\sys\elf.d \ src\core\sys\solaris\sys\elf_386.d \ diff --git a/src/core/sys/posix/time.d b/src/core/sys/posix/time.d index 6e4962e9b2..41fa358a62 100644 --- a/src/core/sys/posix/time.d +++ b/src/core/sys/posix/time.d @@ -247,13 +247,16 @@ else version( FreeBSD ) } else version (Solaris) { + enum CLOCK_PROCESS_CPUTIME_ID = 5; // + enum CLOCK_THREAD_CPUTIME_ID = 2; // + struct itimerspec { timespec it_interval; timespec it_value; } - enum CLOCK_REALTIME = 0; // + enum CLOCK_REALTIME = 3; // enum TIMER_ABSOLUTE = 0x1; alias int clockid_t; diff --git a/src/core/sys/solaris/time.d b/src/core/sys/solaris/time.d new file mode 100644 index 0000000000..c5407ee5e7 --- /dev/null +++ b/src/core/sys/solaris/time.d @@ -0,0 +1,18 @@ +//Written in the D programming language + +/++ + D header file for Solaris's extensions to POSIX's time.h. + + Copyright: Copyright 2014 + License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + Authors: Kai Nacke + +/ +module core.sys.solaris.time; + +public import core.sys.posix.time; + +version(Solaris): + +enum CLOCK_VIRTUAL = 1; +enum CLOCK_HIGHRES = CLOCK_MONOTONIC; +enum CLOCK_PROF = CLOCK_THREAD_CPUTIME_ID; diff --git a/src/core/time.d b/src/core/time.d index 11cac447eb..f6ebbd1356 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -206,7 +206,7 @@ version(CoreDdoc) enum ClockType precise = 3, /++ - $(BLUE Linux-Only) + $(BLUE Linux,Solaris-Only) Uses $(D CLOCK_PROCESS_CPUTIME_ID). +/ @@ -243,7 +243,7 @@ version(CoreDdoc) enum ClockType second = 6, /++ - $(BLUE Linux-Only) + $(BLUE Linux,Solaris-Only) Uses $(D CLOCK_THREAD_CPUTIME_ID). +/ @@ -305,6 +305,15 @@ else version(FreeBSD) enum ClockType uptimeCoarse = 9, uptimePrecise = 10, } +else version(Solaris) enum ClockType +{ + normal = 0, + coarse = 2, + precise = 3, + processCPUTime = 4, + second = 6, + threadCPUTime = 7, +} else { // It needs to be decided (and implemented in an appropriate version branch @@ -351,6 +360,19 @@ version(Posix) case second: assert(0); } } + else version(Solaris) + { + import core.sys.solaris.time; + with(ClockType) final switch(clockType) + { + case coarse: return CLOCK_MONOTONIC; + case normal: return CLOCK_MONOTONIC; + case precise: return CLOCK_MONOTONIC; + case processCPUTime: return CLOCK_PROCESS_CPUTIME_ID; + case threadCPUTime: return CLOCK_THREAD_CPUTIME_ID; + case second: assert(0); + } + } else // It needs to be decided (and implemented in an appropriate // version branch here) which clock types new platforms are going diff --git a/win32.mak b/win32.mak index 489c4af8e1..5292254aaa 100644 --- a/win32.mak +++ b/win32.mak @@ -592,6 +592,9 @@ $(IMPDIR)\core\sys\solaris\libelf.d : src\core\sys\solaris\libelf.d $(IMPDIR)\core\sys\solaris\link.d : src\core\sys\solaris\link.d copy $** $@ +$(IMPDIR)\core\sys\solaris\time.d : src\core\sys\solaris\time.d + copy $** $@ + $(IMPDIR)\core\sys\solaris\sys\elf.d : src\core\sys\solaris\sys\elf.d copy $** $@ diff --git a/win64.mak b/win64.mak index 58248e66fe..e8be9dc8f5 100644 --- a/win64.mak +++ b/win64.mak @@ -602,6 +602,9 @@ $(IMPDIR)\core\sys\solaris\libelf.d : src\core\sys\solaris\libelf.d $(IMPDIR)\core\sys\solaris\link.d : src\core\sys\solaris\link.d copy $** $@ +$(IMPDIR)\core\sys\solaris\time.d : src\core\sys\solaris\time.d + copy $** $@ + $(IMPDIR)\core\sys\solaris\sys\elf.d : src\core\sys\solaris\sys\elf.d copy $** $@ From de0b08047c7befcbb256b913125000b71d5a9bb6 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sun, 1 Nov 2015 00:48:13 +0100 Subject: [PATCH 179/768] Add more definitions for Linux/SystemZ. Adds ucontext, setjmp and inotify. --- src/core/sys/linux/sys/inotify.d | 5 ++++ src/core/sys/posix/setjmp.d | 9 +++++++ src/core/sys/posix/ucontext.d | 46 ++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) diff --git a/src/core/sys/linux/sys/inotify.d b/src/core/sys/linux/sys/inotify.d index 9ab8ea0cfc..41ad65c2e3 100644 --- a/src/core/sys/linux/sys/inotify.d +++ b/src/core/sys/linux/sys/inotify.d @@ -88,6 +88,11 @@ else version (AArch64) enum IN_CLOEXEC = 0x80000; // octal!2000000 enum IN_NONBLOCK = 0x800; // octal!4000 } +else version (SystemZ) +{ + enum IN_CLOEXEC = 0x80000; // octal!2000000 + enum IN_NONBLOCK = 0x800; // octal!4000 +} else static assert(0, "unimplemented"); diff --git a/src/core/sys/posix/setjmp.d b/src/core/sys/posix/setjmp.d index 931b80c1c8..e5758c524b 100644 --- a/src/core/sys/posix/setjmp.d +++ b/src/core/sys/posix/setjmp.d @@ -121,6 +121,15 @@ version( CRuntime_Glibc ) double[6] __fpregs; } } + else version (SystemZ) + { + struct __s390_jmp_buf + { + c_long[10] __gregs; + c_long[8] __fpregs; + } + alias __jmp_buf = __s390_jmp_buf[1]; + } else static assert(0, "unimplemented"); diff --git a/src/core/sys/posix/ucontext.d b/src/core/sys/posix/ucontext.d index 5236fab2b2..54e6cc095b 100644 --- a/src/core/sys/posix/ucontext.d +++ b/src/core/sys/posix/ucontext.d @@ -542,6 +542,52 @@ version( CRuntime_Glibc ) mcontext_t uc_mcontext; } } + else version (SystemZ) + { + public import core.sys.posix.signal : sigset_t; + + enum NGREG = 27; + + alias greg_t = c_ulong; + alias gregset_t = align(8) greg_t[NGREG]; + + align(8) struct __psw_t + { + c_ulong mask; + c_ulong addr; + } + + union fpreg_t + { + double d; + float f; + } + + struct fpregset_t + { + uint fpc; + fpreg_t[16] fprs; + } + + struct mcontext_t + { + __psw_t psw; + c_ulong[16] gregs; + uint[16] aregs; + fpregset_t fpregs; + } + + struct ucontext + { + c_ulong uc_flags; + ucontext* uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + } + + alias ucontext_t = ucontext; + } else static assert(0, "unimplemented"); } From 64da5da8e924e976dad1a6730baa867aee88478d Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Tue, 3 Nov 2015 19:32:41 +0000 Subject: [PATCH 180/768] core.sys.windows.windef: Remove min/max functions These are not part of the Windows API and will just conflict with the std.algorithm ones. --- src/core/sys/windows/windef.d | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index fc34a104b6..d4ed810309 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -51,18 +51,6 @@ pure nothrow @nogc { ubyte HIBYTE(ushort w) { return cast(ubyte) (w >>> 8); } - - template max(T) { - T max(T a, T b) { - return a > b ? a : b; - } - } - - template min(T) { - T min(T a, T b) { - return a < b ? a : b; - } - } } enum void* NULL = null; From 6dbcdd04d95e5316d62a61be40b3b4a5ec13266f Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Wed, 4 Nov 2015 08:32:58 +0100 Subject: [PATCH 181/768] fix, checkedint ddoc, return value --- src/core/checkedint.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/checkedint.d b/src/core/checkedint.d index 91f2a07191..422d59bde9 100644 --- a/src/core/checkedint.d +++ b/src/core/checkedint.d @@ -182,7 +182,7 @@ unittest * y = right operand * overflow = set if an overflow occurs, is not affected otherwise * Returns: - * the sum + * the difference */ pragma(inline, true) @@ -253,7 +253,7 @@ unittest * y = right operand * overflow = set if an overflow occurs, is not affected otherwise * Returns: - * the sum + * the difference */ pragma(inline, true) @@ -379,7 +379,7 @@ unittest * y = right operand * overflow = set if an overflow occurs, is not affected otherwise * Returns: - * the sum + * the product */ pragma(inline, true) @@ -456,7 +456,7 @@ unittest * y = right operand * overflow = set if an overflow occurs, is not affected otherwise * Returns: - * the sum + * the product */ pragma(inline, true) From dc9852f849baf6c5af6208be3118136f9236a8d3 Mon Sep 17 00:00:00 2001 From: Paul O'Neil Date: Sun, 26 Jul 2015 22:20:25 -0400 Subject: [PATCH 182/768] Add constants AF_RXRPC and PF_RXRPC on Linux --- src/core/sys/posix/sys/socket.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/sys/posix/sys/socket.d b/src/core/sys/posix/sys/socket.d index a9d978d6d1..30c013bff4 100644 --- a/src/core/sys/posix/sys/socket.d +++ b/src/core/sys/posix/sys/socket.d @@ -564,8 +564,10 @@ version( CRuntime_Glibc ) AF_IPX = 4, AF_UNIX = 1, AF_UNSPEC = 0, + AF_RXRPC = 33, PF_APPLETALK = AF_APPLETALK, - PF_IPX = AF_IPX + PF_IPX = AF_IPX, + PF_RXRPC = AF_RXRPC } enum int SOCK_RDM = 4; From da02c548bb695165257663a7bbea685f502147e3 Mon Sep 17 00:00:00 2001 From: Paul O'Neil Date: Tue, 22 Sep 2015 20:30:25 -0400 Subject: [PATCH 183/768] Move RXRPC constants from core.sys.posix to core.sys.linux since they are Linux specific. --- mak/COPY | 1 + mak/MANIFEST | 1 + src/core/sys/linux/sys/socket.d | 17 +++++++++++++++++ src/core/sys/posix/sys/socket.d | 4 +--- 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 src/core/sys/linux/sys/socket.d diff --git a/mak/COPY b/mak/COPY index 64676349b6..4cc94c6f23 100644 --- a/mak/COPY +++ b/mak/COPY @@ -72,6 +72,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\sys\inotify.d \ $(IMPDIR)\core\sys\linux\sys\mman.d \ $(IMPDIR)\core\sys\linux\sys\signalfd.d \ + $(IMPDIR)\core\sys\linux\sys\socket.d \ $(IMPDIR)\core\sys\linux\sys\sysinfo.d \ $(IMPDIR)\core\sys\linux\sys\xattr.d \ \ diff --git a/mak/MANIFEST b/mak/MANIFEST index f9e0e7f3fa..1daeea2cc0 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -100,6 +100,7 @@ MANIFEST=\ src\core\sys\linux\sys\inotify.d \ src\core\sys\linux\sys\mman.d \ src\core\sys\linux\sys\signalfd.d \ + src\core\sys\linux\sys\socket.d \ src\core\sys\linux\sys\sysinfo.d \ src\core\sys\linux\sys\xattr.d \ \ diff --git a/src/core/sys/linux/sys/socket.d b/src/core/sys/linux/sys/socket.d new file mode 100644 index 0000000000..7166d07f78 --- /dev/null +++ b/src/core/sys/linux/sys/socket.d @@ -0,0 +1,17 @@ +/** + * D header file for GNU/Linux. + * + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Authors: Paul O'Neil + */ +module core.sys.linux.sys.socket; + +version(linux): +extern(C): +@nogc: +nothrow: + +enum { + AF_RXRPC = 33, + PF_RXRPC = AF_RXRPC, +} diff --git a/src/core/sys/posix/sys/socket.d b/src/core/sys/posix/sys/socket.d index 30c013bff4..a9d978d6d1 100644 --- a/src/core/sys/posix/sys/socket.d +++ b/src/core/sys/posix/sys/socket.d @@ -564,10 +564,8 @@ version( CRuntime_Glibc ) AF_IPX = 4, AF_UNIX = 1, AF_UNSPEC = 0, - AF_RXRPC = 33, PF_APPLETALK = AF_APPLETALK, - PF_IPX = AF_IPX, - PF_RXRPC = AF_RXRPC + PF_IPX = AF_IPX } enum int SOCK_RDM = 4; From a7d260432de25e2b01dd8856b082bfce12a3ae68 Mon Sep 17 00:00:00 2001 From: Paul O'Neil Date: Mon, 26 Oct 2015 21:11:51 -0400 Subject: [PATCH 184/768] Try to fix Windows build for core.sys.linux.sys.socket --- win32.mak | 3 +++ win64.mak | 3 +++ 2 files changed, 6 insertions(+) diff --git a/win32.mak b/win32.mak index 5292254aaa..92b32b7edf 100644 --- a/win32.mak +++ b/win32.mak @@ -415,6 +415,9 @@ $(IMPDIR)\core\sys\linux\sys\mman.d : src\core\sys\linux\sys\mman.d $(IMPDIR)\core\sys\linux\sys\signalfd.d : src\core\sys\linux\sys\signalfd.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\socket.d : src\core\sys\linux\sys\socket.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\sysinfo.d : src\core\sys\linux\sys\sysinfo.d copy $** $@ diff --git a/win64.mak b/win64.mak index e8be9dc8f5..94de4f825a 100644 --- a/win64.mak +++ b/win64.mak @@ -425,6 +425,9 @@ $(IMPDIR)\core\sys\linux\sys\mman.d : src\core\sys\linux\sys\mman.d $(IMPDIR)\core\sys\linux\sys\signalfd.d : src\core\sys\linux\sys\signalfd.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\socket.d : src\core\sys\linux\sys\socket.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\sysinfo.d : src\core\sys\linux\sys\sysinfo.d copy $** $@ From 42e4a1243df07e34f2ea370ee8c853dc6a709a46 Mon Sep 17 00:00:00 2001 From: Paul O'Neil Date: Tue, 10 Nov 2015 23:33:17 -0500 Subject: [PATCH 185/768] Publicly import core.sys.posix.sys.socket, because you probably want that also. --- src/core/sys/linux/sys/socket.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/sys/linux/sys/socket.d b/src/core/sys/linux/sys/socket.d index 7166d07f78..4ae1b8f583 100644 --- a/src/core/sys/linux/sys/socket.d +++ b/src/core/sys/linux/sys/socket.d @@ -6,6 +6,8 @@ */ module core.sys.linux.sys.socket; +public import core.sys.posix.sys.socket; + version(linux): extern(C): @nogc: From 41bbe49d215deefad8c92bbc0e1bcda97bce9413 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 14 Nov 2015 00:09:10 +0100 Subject: [PATCH 186/768] add getpass to linux/unistd --- src/core/sys/linux/unistd.d | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/sys/linux/unistd.d b/src/core/sys/linux/unistd.d index 2f802e60b3..66cd2fbd6e 100644 --- a/src/core/sys/linux/unistd.d +++ b/src/core/sys/linux/unistd.d @@ -15,3 +15,6 @@ enum { /// Offset is relative to the next hole (or EOF if file is not sparse) SEEK_HOLE = 4 } + +/// Prompt for a password without echoing it. +char* getpass(const(char)* prompt); From def57c6a87e59b30990816372eaa425b3666704f Mon Sep 17 00:00:00 2001 From: Philpax Date: Sat, 14 Nov 2015 21:50:53 +1100 Subject: [PATCH 187/768] Fix Issue 15053 - make Runtime.cArgs @nogc --- src/core/runtime.d | 4 ++-- src/rt/dmain2.d | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/runtime.d b/src/core/runtime.d index e008ff8082..03fd4b2605 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -47,7 +47,7 @@ private extern (C) void* thread_stackBottom(); extern (C) string[] rt_args(); - extern (C) CArgs rt_cArgs(); + extern (C) CArgs rt_cArgs() @nogc; } @@ -156,7 +156,7 @@ struct Runtime * } * --- */ - static @property CArgs cArgs() + static @property CArgs cArgs() @nogc { return rt_cArgs(); } diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 00116b90fd..59f4b4ef4e 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -282,7 +282,7 @@ struct CArgs __gshared CArgs _cArgs; -extern (C) CArgs rt_cArgs() +extern (C) CArgs rt_cArgs() @nogc { return _cArgs; } From 03534c7eb7afc7f3879b5920958db55437424a28 Mon Sep 17 00:00:00 2001 From: Philpax Date: Sun, 15 Nov 2015 11:45:42 +1100 Subject: [PATCH 188/768] Mark GC.addRoot and GC.removeRoot as @nogc --- src/core/memory.d | 8 ++++---- src/gc/gc.d | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/memory.d b/src/core/memory.d index c222831ac8..485609247a 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -139,10 +139,10 @@ private extern (C) BlkInfo_ gc_query( void* p ) pure nothrow; - extern (C) void gc_addRoot( in void* p ) nothrow; + extern (C) void gc_addRoot( in void* p ) nothrow @nogc; extern (C) void gc_addRange( in void* p, size_t sz, const TypeInfo ti = null ) nothrow @nogc; - extern (C) void gc_removeRoot( in void* p ) nothrow; + extern (C) void gc_removeRoot( in void* p ) nothrow @nogc; extern (C) void gc_removeRange( in void* p ) nothrow @nogc; extern (C) void gc_runFinalizers( in void[] segment ); } @@ -703,7 +703,7 @@ struct GC * } * --- */ - static void addRoot( in void* p ) nothrow /* FIXME pure */ + static void addRoot( in void* p ) nothrow @nogc /* FIXME pure */ { gc_addRoot( p ); } @@ -717,7 +717,7 @@ struct GC * Params: * p = A pointer into a GC-managed memory block or null. */ - static void removeRoot( in void* p ) nothrow /* FIXME pure */ + static void removeRoot( in void* p ) nothrow @nogc /* FIXME pure */ { gc_removeRoot( p ); } diff --git a/src/gc/gc.d b/src/gc/gc.d index 4ae84f3069..02c9816538 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -1126,7 +1126,7 @@ struct GC /** * add p to list of roots */ - void addRoot(void *p) nothrow + void addRoot(void *p) nothrow @nogc { if (!p) { @@ -1142,7 +1142,7 @@ struct GC /** * remove p from list of roots */ - void removeRoot(void *p) nothrow + void removeRoot(void *p) nothrow @nogc { if (!p) { @@ -1547,7 +1547,7 @@ struct Gcx /** * */ - void addRoot(void *p) nothrow + void addRoot(void *p) nothrow @nogc { roots.insert(Root(p)); } @@ -1556,7 +1556,7 @@ struct Gcx /** * */ - void removeRoot(void *p) nothrow + void removeRoot(void *p) nothrow @nogc { roots.remove(Root(p)); } From a55719115c109a88789747f0ad2581e0100224cc Mon Sep 17 00:00:00 2001 From: Dan Olson Date: Fri, 13 Nov 2015 23:51:47 -0800 Subject: [PATCH 189/768] OSX/Darwin - Fix ticksPerSecond Flip denom and numer. It works the wrong way on Intel MacOS only because denom and numer are both 1, but not so on other Darwin family OS like iOS, and tvOS. --- src/core/time.d | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index c928a7135a..3b8088857d 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -2682,18 +2682,14 @@ extern(C) void _d_initMonoTime() } else version(OSX) { - mach_timebase_info_data_t info; - if(mach_timebase_info(&info) == 0) + immutable long ticksPerSecond = machTicksPerSecond(); + foreach(i, typeStr; __traits(allMembers, ClockType)) { - long ticksPerSecond = 1_000_000_000L * info.numer / info.denom; - foreach(i, typeStr; __traits(allMembers, ClockType)) - { - // ensure we are only writing immutable data once - if(tps[i] != 0) - // should only be called once - assert(0); - tps[i] = ticksPerSecond; - } + // ensure we are only writing immutable data once + if(tps[i] != 0) + // should only be called once + assert(0); + tps[i] = ticksPerSecond; } } else version(Posix) @@ -2993,17 +2989,7 @@ struct TickDuration } else version(OSX) { - static if(is(typeof(mach_absolute_time))) - { - mach_timebase_info_data_t info; - - if(mach_timebase_info(&info)) - ticksPerSec = 0; - else - ticksPerSec = (1_000_000_000L * info.denom) / info.numer; - } - else - ticksPerSec = 1_000_000; + ticksPerSec = machTicksPerSecond(); } else version(Posix) { @@ -4732,6 +4718,21 @@ unittest static assert(!__traits(compiles, nextLargerTimeUnits!"years")); } +version(OSX) +long machTicksPerSecond() +{ + // Be optimistic that ticksPerSecond (1e9*denom/numer) is integral. So far + // so good on Darwin based platforms OS X, iOS. + import core.internal.abort : abort; + mach_timebase_info_data_t info; + if(mach_timebase_info(&info) != 0) + abort("Failed in mach_timebase_info()."); + + long scaledDenom = 1_000_000_000L * info.denom; + if(scaledDenom % info.numer != 0) + abort("Non integral ticksPerSecond from mach_timebase_info."); + return scaledDenom / info.numer; +} /+ Local version of abs, since std.math.abs is in Phobos, not druntime. From 79f3042cb9dce0f74583b25d94dca2ba29939556 Mon Sep 17 00:00:00 2001 From: Dan Olson Date: Wed, 18 Nov 2015 23:35:11 -0800 Subject: [PATCH 190/768] OS X - Use 64-bit inode stat and dirent functions This updates the stat and dirent family of types and functions (dirent.h and sys/stat.h) to use the newer 64-bit inode versions. These functions are the default for C compiled code on OS X > 10.5. Also removes the 32-bit inode versions. --- src/core/sys/posix/dirent.d | 58 ++++++++++++++++++++++++++++------ src/core/sys/posix/sys/stat.d | 57 +++++++++++++++++---------------- src/core/sys/posix/sys/types.d | 6 +--- 3 files changed, 78 insertions(+), 43 deletions(-) diff --git a/src/core/sys/posix/dirent.d b/src/core/sys/posix/dirent.d index 80c31f8d06..d0db595237 100644 --- a/src/core/sys/posix/dirent.d +++ b/src/core/sys/posix/dirent.d @@ -96,14 +96,18 @@ else version( OSX ) DT_WHT = 14 } - align(4) + // _DARWIN_FEATURE_64_BIT_INODE dirent is default for Mac OSX >10.5 and is + // only meaningful type for other OS X/Darwin variants (e.g. iOS). + // man dir(5) has some info, man stat(2) gives details. struct dirent { ino_t d_ino; + alias d_fileno = d_ino; + ulong d_seekoff; ushort d_reclen; + ushort d_namlen; ubyte d_type; - ubyte d_namlen; - char[256] d_name; + char[1024] d_name; } struct DIR @@ -111,7 +115,9 @@ else version( OSX ) // Managed by OS } - dirent* readdir(DIR*); + // OS X maintains backwards compatibility with older binaries using 32-bit + // inode functions by appending $INODE64 to newer 64-bit inode functions. + pragma(mangle, "readdir$INODE64") dirent* readdir(DIR*); } else version( FreeBSD ) { @@ -205,10 +211,30 @@ else static assert(false, "Unsupported platform"); } -int closedir(DIR*); -DIR* opendir(in char*); -//dirent* readdir(DIR*); -void rewinddir(DIR*); +version( OSX ) +{ + version( D_LP64 ) + { + int closedir(DIR*); + pragma(mangle, "opendir$INODE64") DIR* opendir(in char*); + pragma(mangle, "rewinddir$INODE64") void rewinddir(DIR*); + } + else + { + // 32-bit mangles __DARWIN_UNIX03 specific functions with $UNIX2003 to + // maintain backward compatibility with binaries build pre 10.5 + pragma(mangle, "closedir$UNIX2003") int closedir(DIR*); + pragma(mangle, "opendir$INODE64$UNIX2003") DIR* opendir(in char*); + pragma(mangle, "rewinddir$INODE64$UNIX2003") void rewinddir(DIR*); + } +} +else +{ + int closedir(DIR*); + DIR* opendir(in char*); + //dirent* readdir(DIR*); + void rewinddir(DIR*); +} // // Thread-Safe Functions (TSF) @@ -231,7 +257,7 @@ version( CRuntime_Glibc ) } else version( OSX ) { - int readdir_r(DIR*, dirent*, dirent**); + pragma(mangle, "readdir_r$INODE64") int readdir_r(DIR*, dirent*, dirent**); } else version( FreeBSD ) { @@ -276,8 +302,20 @@ else version( FreeBSD ) void seekdir(DIR*, c_long); c_long telldir(DIR*); } -else version (OSX) +else version ( OSX ) { + version ( D_LP64 ) + { + pragma(mangle, "seekdir$INODE64") void seekdir(DIR*, c_long); + pragma(mangle, "telldir$INODE64") c_long telldir(DIR*); + } + else + { + // 32-bit mangles __DARWIN_UNIX03 specific functions with $UNIX2003 to + // maintain backward compatibility with binaries build pre 10.5 + pragma(mangle, "seekdir$INODE64$UNIX2003") void seekdir(DIR*, c_long); + pragma(mangle, "telldir$INODE64$UNIX2003") c_long telldir(DIR*); + } } else version (Solaris) { diff --git a/src/core/sys/posix/sys/stat.d b/src/core/sys/posix/sys/stat.d index b2cb663a26..a9631860e7 100644 --- a/src/core/sys/posix/sys/stat.d +++ b/src/core/sys/posix/sys/stat.d @@ -632,40 +632,39 @@ version( CRuntime_Glibc ) } else version( OSX ) { + // _DARWIN_FEATURE_64_BIT_INODE stat is default for Mac OSX >10.5 and is + // only meaningful type for other OS X/Darwin variants (e.g. iOS). + // man stat(2) gives details. struct stat_t { - version ( DARWIN_USE_64_BIT_INODE ) - { dev_t st_dev; mode_t st_mode; nlink_t st_nlink; ino_t st_ino; - } - else - { - dev_t st_dev; - ino_t st_ino; - mode_t st_mode; - nlink_t st_nlink; - } uid_t st_uid; gid_t st_gid; dev_t st_rdev; - static if( false /*!_POSIX_C_SOURCE || _DARWIN_C_SOURCE*/ ) - { - timespec st_atimespec; - timespec st_mtimespec; - timespec st_ctimespec; - } - else - { - time_t st_atime; - c_long st_atimensec; - time_t st_mtime; - c_long st_mtimensec; - time_t st_ctime; - c_long st_ctimensec; - } + union + { + struct + { + timespec st_atimespec; + timespec st_mtimespec; + timespec st_ctimespec; + timespec st_birthtimespec; + } + struct + { + time_t st_atime; + c_long st_atimensec; + time_t st_mtime; + c_long st_mtimensec; + time_t st_ctime; + c_long st_ctimensec; + time_t st_birthtime; + c_long st_birthtimensec; + } + } off_t st_size; blkcnt_t st_blocks; blksize_t st_blksize; @@ -1095,9 +1094,11 @@ else version (Solaris) } else version( OSX ) { - int fstat(int, stat_t*); - int lstat(in char*, stat_t*); - int stat(in char*, stat_t*); + // OS X maintains backwards compatibility with older binaries using 32-bit + // inode functions by appending $INODE64 to newer 64-bit inode functions. + pragma(mangle, "fstat$INODE64") int fstat(int, stat_t*); + pragma(mangle, "lstat$INODE64") int lstat(in char*, stat_t*); + pragma(mangle, "stat$INODE64") int stat(in char*, stat_t*); } else version( FreeBSD ) { diff --git a/src/core/sys/posix/sys/types.d b/src/core/sys/posix/sys/types.d index 55e37b482d..103b064482 100644 --- a/src/core/sys/posix/sys/types.d +++ b/src/core/sys/posix/sys/types.d @@ -107,11 +107,7 @@ else version( OSX ) alias int blksize_t; alias int dev_t; alias uint gid_t; - version( DARWIN_USE_64_BIT_INODE ) { - alias ulong ino_t; - } else { - alias uint ino_t; - } + alias ulong ino_t; alias ushort mode_t; alias ushort nlink_t; alias long off_t; From cbaca5965e9af6e774c3f2c87e55da007b6d1585 Mon Sep 17 00:00:00 2001 From: k-hara Date: Fri, 20 Nov 2015 21:49:28 +0900 Subject: [PATCH 191/768] fix Issue 15367 - array of delegates comparison fails --- src/object.d | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index 926db328a0..a6839086cd 100644 --- a/src/object.d +++ b/src/object.d @@ -762,7 +762,30 @@ class TypeInfo_Delegate : TypeInfo return c && this.deco == c.deco; } - // BUG: need to add the rest of the functions + override size_t getHash(in void* p) @trusted const + { + return hashOf(*cast(void delegate()*)p); + } + + override bool equals(in void* p1, in void* p2) const + { + auto dg1 = *cast(void delegate()*)p1; + auto dg2 = *cast(void delegate()*)p2; + return dg1 == dg2; + } + + override int compare(in void* p1, in void* p2) const + { + auto dg1 = *cast(void delegate()*)p1; + auto dg2 = *cast(void delegate()*)p2; + + if (dg1 < dg2) + return -1; + else if (dg1 > dg2) + return 1; + else + return 0; + } override @property size_t tsize() nothrow pure const { @@ -794,6 +817,34 @@ class TypeInfo_Delegate : TypeInfo } } +unittest +{ + // Bugzilla 15367 + void f1() {} + void f2() {} + + // TypeInfo_Delegate.getHash + int[void delegate()] aa; + assert(aa.length == 0); + aa[&f1] = 1; + assert(aa.length == 1); + aa[&f1] = 1; + assert(aa.length == 1); + + auto a1 = [&f2, &f1]; + auto a2 = [&f2, &f1]; + + // TypeInfo_Delegate.equals + for (auto i = 0; i < 2; i++) + assert(a1[i] == a2[i]); + assert(a1 == a2); + + // TypeInfo_Delegate.compare + for (auto i = 0; i < 2; i++) + assert(a1[i] <= a2[i]); + assert(a1 <= a2); +} + /** * Runtime type information about a class. * Can be retrieved from an object instance by using the From 33fe0487ed3a2759f0557023113de3f4df989409 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 21 Nov 2015 04:59:08 +0100 Subject: [PATCH 192/768] create output dir before building implibs --- win32.mak | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/win32.mak b/win32.mak index 92b32b7edf..66441f0f80 100644 --- a/win32.mak +++ b/win32.mak @@ -1138,7 +1138,10 @@ IMPLIBS= \ lib\win32\wininet.lib \ lib\win32\winspool.lib -implibs : $(IMPLIBS) +implibsdir : + if not exist lib\win32 mkdir lib\win32 + +implibs : implibsdir $(IMPLIBS) lib\win32\glu32.lib : def\glu32.def implib $@ $** From 040b55818a4a8f3ab8fba257642a2e1455b96ab2 Mon Sep 17 00:00:00 2001 From: anonymous Date: Tue, 24 Nov 2015 18:25:23 +0100 Subject: [PATCH 193/768] update links to spec pages --- src/object.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/object.d b/src/object.d index a6839086cd..0d183f3558 100644 --- a/src/object.d +++ b/src/object.d @@ -203,7 +203,7 @@ struct OffsetTypeInfo /** * Runtime type information about a type. * Can be retrieved for any type using a - * TypeidExpression. + * $(GLINK2 expression,TypeidExpression, TypeidExpression). */ class TypeInfo { @@ -848,7 +848,7 @@ unittest /** * Runtime type information about a class. * Can be retrieved from an object instance by using the - * $(LINK2 ../property.html#classinfo, .classinfo) property. + * $(LINK2 ../spec/property.html#classinfo, .classinfo) property. */ class TypeInfo_Class : TypeInfo { From ea4785d189ca7303e034e6c392f9b8fde31faef7 Mon Sep 17 00:00:00 2001 From: anonymous Date: Thu, 26 Nov 2015 15:18:37 +0100 Subject: [PATCH 194/768] use DDSUBLINK instead of LINK2 DDSUBLINK uses ROOT_DIR which is more robust than a relative path. --- src/object.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index 0d183f3558..a570aa22dd 100644 --- a/src/object.d +++ b/src/object.d @@ -848,7 +848,7 @@ unittest /** * Runtime type information about a class. * Can be retrieved from an object instance by using the - * $(LINK2 ../spec/property.html#classinfo, .classinfo) property. + * $(DDSUBLINK spec/property,classinfo, .classinfo) property. */ class TypeInfo_Class : TypeInfo { From 536bff6ccffbd10fc7aebdbcef313eacb6c57f0e Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 28 Nov 2015 17:55:46 +0100 Subject: [PATCH 195/768] purge already released changelog entries --- changelog.dd | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/changelog.dd b/changelog.dd index 8502c8c68a..6179d60b30 100644 --- a/changelog.dd +++ b/changelog.dd @@ -1,35 +1,12 @@ Ddoc -$(COMMENT Pending changelog for 2.069.0. +$(COMMENT Pending changelog for 2.069.2. ) $(BUGSTITLE Library Changes, -$(LI $(RELATIVE_LINK2 backtraces-with-line-numbers, Backtraces now include file name and line number.)) ) $(BUGSTITLE Library Changes, -$(LI $(LNAME2 backtraces-with-line-numbers, Backtraces now include file name and line number.) - - $(P The default tracehandler on linux and FreeBSD now parses DWARF - debug info to add file names and line numbers to backtraces. - ) - - $(PRE - std.conv.ConvException@DPL/dmd/src/../../phobos/std/conv.d(1720): Unexpected 'a' when converting from type string to type ulong - - DPL/dmd/src/../../phobos/std/conv.d:1720 pure @safe ulong std.conv.toImpl!(ulong, immutable(char)[]).toImpl(immutable(char)[]) [0x43b339] - DPL/dmd/src/../../phobos/std/conv.d:298 pure @safe ulong std.conv.to!(ulong).to!(immutable(char)[]).to(immutable(char)[]) [0x437717] - example.d:5 ulong example.foo(immutable(char)[]) [0x4376c7] - example.d:10 _Dmain [0x4376e5] - ??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [0x444576] - ??:? void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [0x4444cc] - ??:? void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [0x444532] - ??:? void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [0x4444cc] - ??:? _d_run_main [0x444429] - ??:? main [0x44039f] - ??:? __libc_start_main [0xc3ae96ff] - ) -) ) Macros: From 63d71e786ff947221c1ccaf412e025458c3b7570 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 29 Nov 2015 03:42:28 +0100 Subject: [PATCH 196/768] Use __c_long_double for CRuntime_Microsoft in general, not just DMD --- src/core/stdc/config.d | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/core/stdc/config.d b/src/core/stdc/config.d index 2680929df2..712714e0c0 100644 --- a/src/core/stdc/config.d +++ b/src/core/stdc/config.d @@ -86,27 +86,27 @@ else version( Posix ) } } -version( DigitalMars ) +version( CRuntime_Microsoft ) { - version( CRuntime_Microsoft ) + /* long double is 64 bits, not 80 bits, but is mangled differently + * than double. To distinguish double from long double, create a wrapper to represent + * long double, then recognize that wrapper specially in the compiler + * to generate the correct name mangling and correct function call/return + * ABI conformance. + */ + struct __c_long_double { - /* long double is 64 bits, not 80 bits, but is mangled differently - * than double. To distinguish double from long double, create a wrapper to represent - * long double, then recognize that wrapper specially in the compiler - * to generate the correct name mangling and correct function call/return - * ABI conformance. - */ - struct __c_long_double - { - pure nothrow @nogc @safe: - this(double d) { ld = d; } - double ld; - alias ld this; - } - - alias __c_long_double c_long_double; + pure nothrow @nogc @safe: + this(double d) { ld = d; } + double ld; + alias ld this; } - else version( X86 ) + + alias __c_long_double c_long_double; +} +else version( DigitalMars ) +{ + version( X86 ) { alias real c_long_double; } From 5376b4d782bff503156f11af7decb020cea3def1 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 29 Nov 2015 18:05:48 +0100 Subject: [PATCH 197/768] Popcnt intrinsic only available with DMD. --- src/core/bitop.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/bitop.d b/src/core/bitop.d index cf639463d0..719b97cb8d 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -194,7 +194,7 @@ version (DigitalMars) version (AnyX86) @system // not pure uint outpl(uint port_address, uint value); } -version (AnyX86) +version (DigitalMars) version (AnyX86) { /** * Calculates the number of set bits in a 32-bit integer From 98813c7f01c61114c3ab50461c4e5f3a329a9651 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 29 Nov 2015 21:23:04 +0100 Subject: [PATCH 198/768] MSVC: Provide alternate implementations for 32-bit math functions The 32-bit x86 runtime lacks most single-precision math functions (asinf(), acosf() etc.), i.e., they are only inline-declared in the C headers (and use the double-precision version). The available symbols apparently depend upon whether one's linking against the static or dynamic MS runtime (libcmt.lib vs. msvcrt.lib), and possibly upon the Visual Studio version too. So provide alternate implementations here in druntime to prevent linker errors. I came up with these 19 missing functions about a year ago by inspecting the VS 2013 headers (these should be all inline- declared ones, iirc). --- src/rt/{stdio_msvc.c => msvc.c} | 32 +++++++++++++++++++- src/rt/msvc_math.c | 52 +++++++++++++++++++++++++++++++++ win64.mak | 11 ++++--- 3 files changed, 90 insertions(+), 5 deletions(-) rename src/rt/{stdio_msvc.c => msvc.c} (77%) create mode 100644 src/rt/msvc_math.c diff --git a/src/rt/stdio_msvc.c b/src/rt/msvc.c similarity index 77% rename from src/rt/stdio_msvc.c rename to src/rt/msvc.c index d3e32a0c62..06d77e19d5 100644 --- a/src/rt/stdio_msvc.c +++ b/src/rt/msvc.c @@ -6,7 +6,7 @@ * License: Distributed under the * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * (See accompanying file LICENSE) -* Source: $(DRUNTIMESRC rt/_stdio_msvc.d) +* Source: $(DRUNTIMESRC rt/_msvc.c) * Authors: Rainer Schuetze */ @@ -156,3 +156,33 @@ int _msvc_fileno(FILE* stream) { return stream->_file; } + + + +/** + * 32-bit x86 MS VC runtimes lack most single-precision math functions. + * Declare alternate implementations to be pulled in from msvc_math.c. + */ +#if defined _M_IX86 + +DECLARE_ALTERNATE_NAME (acosf, _msvc_acosf); +DECLARE_ALTERNATE_NAME (asinf, _msvc_asinf); +DECLARE_ALTERNATE_NAME (atanf, _msvc_atanf); +DECLARE_ALTERNATE_NAME (atan2f, _msvc_atan2f); +DECLARE_ALTERNATE_NAME (cosf, _msvc_cosf); +DECLARE_ALTERNATE_NAME (sinf, _msvc_sinf); +DECLARE_ALTERNATE_NAME (tanf, _msvc_tanf); +DECLARE_ALTERNATE_NAME (coshf, _msvc_coshf); +DECLARE_ALTERNATE_NAME (sinhf, _msvc_sinhf); +DECLARE_ALTERNATE_NAME (tanhf, _msvc_tanhf); +DECLARE_ALTERNATE_NAME (expf, _msvc_expf); +DECLARE_ALTERNATE_NAME (logf, _msvc_logf); +DECLARE_ALTERNATE_NAME (log10f, _msvc_log10f); +DECLARE_ALTERNATE_NAME (powf, _msvc_powf); +DECLARE_ALTERNATE_NAME (sqrtf, _msvc_sqrtf); +DECLARE_ALTERNATE_NAME (ceilf, _msvc_ceilf); +DECLARE_ALTERNATE_NAME (floorf, _msvc_floorf); +DECLARE_ALTERNATE_NAME (fmodf, _msvc_fmodf); +DECLARE_ALTERNATE_NAME (modff, _msvc_modff); + +#endif // _M_IX86 diff --git a/src/rt/msvc_math.c b/src/rt/msvc_math.c new file mode 100644 index 0000000000..fb9676cf70 --- /dev/null +++ b/src/rt/msvc_math.c @@ -0,0 +1,52 @@ +/** +* This module provides alternate implementations of single-precision math +* functions missing in at least some 32-bit x86 MS VC runtimes +* +* Copyright: Copyright Digital Mars 2015. +* License: Distributed under the +* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). +* (See accompanying file LICENSE) +* Source: $(DRUNTIMESRC rt/_msvc_math.c) +* Authors: Martin Kinkelin +*/ + +#if defined _M_IX86 + +// Forward-declare double-precision version and implement single-precision +// wrapper. +#define ALT_IMPL(baseName) \ + double baseName(double x); \ + float _msvc_ ## baseName ## f(float x) { return (float)baseName(x); } +#define ALT_IMPL2(baseName) \ + double baseName(double x, double y); \ + float _msvc_ ## baseName ## f(float x, float y) { return (float)baseName(x, y); } + +ALT_IMPL(acos); +ALT_IMPL(asin); +ALT_IMPL(atan); +ALT_IMPL2(atan2); +ALT_IMPL(cos); +ALT_IMPL(sin); +ALT_IMPL(tan); +ALT_IMPL(cosh); +ALT_IMPL(sinh); +ALT_IMPL(tanh); +ALT_IMPL(exp); +ALT_IMPL(log); +ALT_IMPL(log10); +ALT_IMPL2(pow); +ALT_IMPL(sqrt); +ALT_IMPL(ceil); +ALT_IMPL(floor); +ALT_IMPL2(fmod); + +double modf(double value, double *iptr); +float _msvc_modff(float value, float *iptr) +{ + double di; + float result = (float)modf(value, &di); + *iptr = (float)di; + return result; +} + +#endif // _M_IX86 diff --git a/win64.mak b/win64.mak index 94de4f825a..880639041f 100644 --- a/win64.mak +++ b/win64.mak @@ -43,8 +43,8 @@ $(mak\SRCS) # NOTE: a pre-compiled minit.obj has been provided in dmd for Win32 and # minit.asm is not used by dmd for Linux -OBJS= errno_c_$(MODEL).obj stdio_msvc_$(MODEL).obj -OBJS_TO_DELETE= errno_c_$(MODEL).obj stdio_msvc_$(MODEL).obj +OBJS= errno_c_$(MODEL).obj msvc_$(MODEL).obj msvc_math_$(MODEL).obj +OBJS_TO_DELETE= errno_c_$(MODEL).obj msvc_$(MODEL).obj msvc_math_$(MODEL).obj ######################## Doc .html file generation ############################## @@ -1141,8 +1141,11 @@ $(IMPDIR)\etc\linux\memoryerror.d : src\etc\linux\memoryerror.d errno_c_$(MODEL).obj : src\core\stdc\errno.c $(CC) -c -Fo$@ $(CFLAGS) src\core\stdc\errno.c -stdio_msvc_$(MODEL).obj : src\rt\stdio_msvc.c win64.mak - $(CC) -c -Fo$@ $(CFLAGS) src\rt\stdio_msvc.c +msvc_$(MODEL).obj : src\rt\msvc.c win64.mak + $(CC) -c -Fo$@ $(CFLAGS) src\rt\msvc.c + +msvc_math_$(MODEL).obj : src\rt\msvc_math.c win64.mak + $(CC) -c -Fo$@ $(CFLAGS) src\rt\msvc_math.c src\rt\minit.obj : src\rt\minit.asm From 04700217971964fdc8edb1798eaa669ec37fa7e9 Mon Sep 17 00:00:00 2001 From: anonymous Date: Fri, 27 Nov 2015 17:08:10 +0100 Subject: [PATCH 199/768] rename TypeInfo's init method to initializer "init" clashes with the type property of the same name. Adding an alias called "init" to give people a chance to update their code. Further deprecation plan: * 2.071: Do nothing. Keep both init and initializer functional for a while. * 2.072: Deprecate the alias. * 2.073: Replace the alias with an `@disable`d method. * 2.074: Remove the init method, fixing issue 12233. --- changelog.dd | 23 ++++++++++ src/core/demangle.d | 4 +- src/core/exception.d | 2 +- src/core/sync/mutex.d | 4 +- src/core/thread.d | 2 +- src/gc/gc.d | 2 +- src/object.d | 79 +++++++++++++++++++++++----------- src/rt/aaA.d | 2 +- src/rt/deh.d | 2 +- src/rt/lifetime.d | 32 +++++++------- src/rt/sections_elf_shared.d | 2 +- src/rt/tracegc.d | 2 +- src/rt/typeinfo/ti_C.d | 2 +- src/rt/typeinfo/ti_byte.d | 2 +- src/rt/typeinfo/ti_cdouble.d | 2 +- src/rt/typeinfo/ti_cent.d | 2 +- src/rt/typeinfo/ti_cfloat.d | 2 +- src/rt/typeinfo/ti_char.d | 2 +- src/rt/typeinfo/ti_creal.d | 2 +- src/rt/typeinfo/ti_dchar.d | 2 +- src/rt/typeinfo/ti_delegate.d | 2 +- src/rt/typeinfo/ti_double.d | 2 +- src/rt/typeinfo/ti_float.d | 2 +- src/rt/typeinfo/ti_int.d | 2 +- src/rt/typeinfo/ti_long.d | 2 +- src/rt/typeinfo/ti_ptr.d | 2 +- src/rt/typeinfo/ti_real.d | 2 +- src/rt/typeinfo/ti_short.d | 2 +- src/rt/typeinfo/ti_ubyte.d | 2 +- src/rt/typeinfo/ti_ucent.d | 2 +- src/rt/typeinfo/ti_uint.d | 2 +- src/rt/typeinfo/ti_ulong.d | 2 +- src/rt/typeinfo/ti_ushort.d | 2 +- src/rt/typeinfo/ti_void.d | 2 +- src/rt/typeinfo/ti_wchar.d | 2 +- src/rt/util/container/common.d | 2 +- 36 files changed, 128 insertions(+), 76 deletions(-) diff --git a/changelog.dd b/changelog.dd index 6179d60b30..300c24e803 100644 --- a/changelog.dd +++ b/changelog.dd @@ -4,9 +4,32 @@ $(COMMENT Pending changelog for 2.069.2. ) $(BUGSTITLE Library Changes, + +$(LI $(RELATIVE_LINK2 TypeInfo.initializer, `TypeInfo.init` has been renamed to + `TypeInfo.initializer`.)) +) + ) $(BUGSTITLE Library Changes, + +$(LI $(LNAME2 TypeInfo.initializer, `TypeInfo.init` has been renamed to + `TypeInfo.initializer`.) + + $(P The method `TypeInfo.init` has been renamed to + $(A ../phobos-prerelease/object.html#.TypeInfo.initializer, + `TypeInfo.initializer`). + This is necessary because the method clashes with the + $(A ../property.html#init, type property of the same name). + ) + $(P An alias with the old name has been added, and it's supposed to stay + around through version 2.071.0. It's scheduled to be deprecated with the + 2.072.0 release, and is going to be `@disable`d with the 2.073.0 + release. Finally, the special casing is going to be removed with the + 2.074.0 release, so that the type property `init` takes over. + ) +) + ) Macros: diff --git a/src/core/demangle.d b/src/core/demangle.d index 235bd7e04e..1d497cfd21 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -86,7 +86,7 @@ private struct Demangle //throw new ParseException( msg ); debug(info) printf( "error: %.*s\n", cast(int) msg.length, msg.ptr ); throw __ctfe ? new ParseException(msg) - : cast(ParseException) cast(void*) typeid(ParseException).init; + : cast(ParseException) cast(void*) typeid(ParseException).initializer; } @@ -95,7 +95,7 @@ private struct Demangle { //throw new OverflowException( msg ); debug(info) printf( "overflow: %.*s\n", cast(int) msg.length, msg.ptr ); - throw cast(OverflowException) cast(void*) typeid(OverflowException).init; + throw cast(OverflowException) cast(void*) typeid(OverflowException).initializer; } diff --git a/src/core/exception.d b/src/core/exception.d index 502b416a4f..7c43d625be 100644 --- a/src/core/exception.d +++ b/src/core/exception.d @@ -672,7 +672,7 @@ private T staticError(T, Args...)(auto ref Args args) static assert(__traits(classInstanceSize, T) <= _store.length, T.stringof ~ " is too large for staticError()"); - _store[0 .. __traits(classInstanceSize, T)] = typeid(T).init[]; + _store[0 .. __traits(classInstanceSize, T)] = typeid(T).initializer[]; return cast(T) _store.ptr; } auto res = (cast(T function() @trusted pure nothrow @nogc) &get)(); diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index ebbe8c9d49..bdedb09986 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -145,7 +145,7 @@ class Mutex : int rc = pthread_mutex_lock( &m_hndl ); if( rc ) { - SyncError syncErr = cast(SyncError) cast(void*) typeid(SyncError).init; + SyncError syncErr = cast(SyncError) cast(void*) typeid(SyncError).initializer; syncErr.msg = "Unable to lock mutex."; throw syncErr; } @@ -176,7 +176,7 @@ class Mutex : int rc = pthread_mutex_unlock( &m_hndl ); if( rc ) { - SyncError syncErr = cast(SyncError) cast(void*) typeid(SyncError).init; + SyncError syncErr = cast(SyncError) cast(void*) typeid(SyncError).initializer; syncErr.msg = "Unable to unlock mutex."; throw syncErr; } diff --git a/src/core/thread.d b/src/core/thread.d index d596862b72..f7ef8f7021 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1605,7 +1605,7 @@ private: { foreach (ref lock; _locks) { - lock[] = typeid(Mutex).init[]; + lock[] = typeid(Mutex).initializer[]; (cast(Mutex)lock.ptr).__ctor(); } } diff --git a/src/gc/gc.d b/src/gc/gc.d index 4ae84f3069..955560cf27 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -291,7 +291,7 @@ struct GC { config.initialize(); - mutexStorage[] = typeid(GCMutex).init[]; + mutexStorage[] = typeid(GCMutex).initializer[]; gcLock = cast(GCMutex) mutexStorage.ptr; gcLock.__ctor(); gcx = cast(Gcx*)cstdlib.calloc(1, Gcx.sizeof); diff --git a/src/object.d b/src/object.d index a570aa22dd..eb1d9ec0b4 100644 --- a/src/object.d +++ b/src/object.d @@ -287,7 +287,14 @@ class TypeInfo /// Return default initializer. If the type should be initialized to all zeros, /// an array with a null ptr and a length equal to the type size will be returned. - abstract const(void)[] init() nothrow pure const @safe @nogc; + abstract const(void)[] initializer() nothrow pure const @safe @nogc; + + /// $(RED Scheduled for deprecation.) Please use `initializer` instead. + alias init = initializer; // added in 2.070, to stay in 2.071 + version(none) deprecated alias init = initializer; // planned for 2.072 + version(none) @disable static const(void)[] init(); // planned for 2.073 + /* Planned for 2.074: Remove init, making way for the init type property, + fixing issue 12233. */ /// Get flags for type: 1 means GC should scan for pointers, /// 2 means arg of this type is passed in XMM register @@ -339,7 +346,11 @@ class TypeInfo_Typedef : TypeInfo override @property inout(TypeInfo) next() nothrow pure inout { return base.next; } override @property uint flags() nothrow pure const { return base.flags; } - override const(void)[] init() const { return m_init.length ? m_init : base.init(); } + + override const(void)[] initializer() const + { + return m_init.length ? m_init : base.initializer(); + } override @property size_t talign() nothrow pure const { return base.talign; } @@ -398,7 +409,7 @@ class TypeInfo_Pointer : TypeInfo return (void*).sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. (void*).sizeof]; } @@ -472,7 +483,7 @@ class TypeInfo_Array : TypeInfo return (void[]).sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. (void[]).sizeof]; } @@ -588,7 +599,11 @@ class TypeInfo_StaticArray : TypeInfo GC.free(pbuffer); } - override const(void)[] init() nothrow pure const { return value.init(); } + override const(void)[] initializer() nothrow pure const + { + return value.initializer(); + } + override @property inout(TypeInfo) next() nothrow pure inout { return value; } override @property uint flags() nothrow pure const { return value.flags; } @@ -661,7 +676,7 @@ class TypeInfo_AssociativeArray : TypeInfo return (char[int]).sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. (char[int]).sizeof]; } @@ -704,7 +719,11 @@ class TypeInfo_Vector : TypeInfo override @property inout(TypeInfo) next() nothrow pure inout { return base.next; } override @property uint flags() nothrow pure const { return base.flags; } - override const(void)[] init() nothrow pure const { return base.init(); } + + override const(void)[] initializer() nothrow pure const + { + return base.initializer(); + } override @property size_t talign() nothrow pure const { return 16; } @@ -738,7 +757,7 @@ class TypeInfo_Function : TypeInfo return 0; // no size for functions } - override const(void)[] init() const @safe + override const(void)[] initializer() const @safe { return null; } @@ -793,7 +812,7 @@ class TypeInfo_Delegate : TypeInfo return dg.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. (int delegate()).sizeof]; } @@ -903,7 +922,10 @@ class TypeInfo_Class : TypeInfo return Object.sizeof; } - override const(void)[] init() nothrow pure const @safe { return m_init; } + override const(void)[] initializer() nothrow pure const @safe + { + return m_init; + } override @property uint flags() nothrow pure const { return 1; } @@ -993,10 +1015,10 @@ unittest int a; } - assert(typeid(X).init is typeid(X).m_init); - assert(typeid(X).init.length == typeid(const(X)).init.length); - assert(typeid(X).init.length == typeid(shared(X)).init.length); - assert(typeid(X).init.length == typeid(immutable(X)).init.length); + assert(typeid(X).initializer is typeid(X).m_init); + assert(typeid(X).initializer.length == typeid(const(X)).initializer.length); + assert(typeid(X).initializer.length == typeid(shared(X)).initializer.length); + assert(typeid(X).initializer.length == typeid(immutable(X)).initializer.length); } class TypeInfo_Interface : TypeInfo @@ -1058,7 +1080,7 @@ class TypeInfo_Interface : TypeInfo return Object.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. Object.sizeof]; } @@ -1078,7 +1100,7 @@ class TypeInfo_Struct : TypeInfo return true; auto s = cast(const TypeInfo_Struct)o; return s && this.name == s.name && - this.init().length == s.init().length; + this.initializer().length == s.initializer().length; } override size_t getHash(in void* p) @safe pure nothrow const @@ -1093,7 +1115,7 @@ class TypeInfo_Struct : TypeInfo import core.internal.traits : externDFunc; alias hashOf = externDFunc!("rt.util.hash.hashOf", size_t function(const(void)*, size_t, size_t) @trusted pure nothrow); - return hashOf(p, init().length, 0); + return hashOf(p, initializer().length, 0); } } @@ -1109,7 +1131,7 @@ class TypeInfo_Struct : TypeInfo return true; else // BUG: relies on the GC not moving objects - return memcmp(p1, p2, init().length) == 0; + return memcmp(p1, p2, initializer().length) == 0; } override int compare(in void* p1, in void* p2) @trusted pure nothrow const @@ -1127,7 +1149,7 @@ class TypeInfo_Struct : TypeInfo return (*xopCmp)(p2, p1); else // BUG: relies on the GC not moving objects - return memcmp(p1, p2, init().length); + return memcmp(p1, p2, initializer().length); } else return -1; @@ -1137,10 +1159,13 @@ class TypeInfo_Struct : TypeInfo override @property size_t tsize() nothrow pure const { - return init().length; + return initializer().length; } - override const(void)[] init() nothrow pure const @safe { return m_init; } + override const(void)[] initializer() nothrow pure const @safe + { + return m_init; + } override @property uint flags() nothrow pure const { return m_flags; } @@ -1164,7 +1189,7 @@ class TypeInfo_Struct : TypeInfo } string name; - void[] m_init; // initializer; init.ptr == null if 0 initialize + void[] m_init; // initializer; m_init.ptr == null if 0 initialize @safe pure nothrow { @@ -1273,7 +1298,7 @@ class TypeInfo_Tuple : TypeInfo assert(0); } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { assert(0); } @@ -1332,7 +1357,11 @@ class TypeInfo_Const : TypeInfo override @property inout(TypeInfo) next() nothrow pure inout { return base.next; } override @property uint flags() nothrow pure const { return base.flags; } - override const(void)[] init() nothrow pure const { return base.init(); } + + override const(void)[] initializer() nothrow pure const + { + return base.initializer(); + } override @property size_t talign() nothrow pure const { return base.talign; } @@ -2729,7 +2758,7 @@ void destroy(T)(ref T obj) if (is(T == struct)) _destructRecurse(obj); () @trusted { auto buf = (cast(ubyte*) &obj)[0 .. T.sizeof]; - auto init = cast(ubyte[])typeid(T).init(); + auto init = cast(ubyte[])typeid(T).initializer(); if (init.ptr is null) // null ptr means initialize to 0s buf[] = 0; else diff --git a/src/rt/aaA.d b/src/rt/aaA.d index 79561dc847..db34b8dfba 100644 --- a/src/rt/aaA.d +++ b/src/rt/aaA.d @@ -249,7 +249,7 @@ TypeInfo_Struct fakeEntryTI(const TypeInfo keyti, const TypeInfo valti) void* p = GC.malloc(sizeti + 2 * (void*).sizeof); import core.stdc.string : memcpy; - memcpy(p, typeid(TypeInfo_Struct).init().ptr, sizeti); + memcpy(p, typeid(TypeInfo_Struct).initializer().ptr, sizeti); auto ti = cast(TypeInfo_Struct) p; auto extra = cast(TypeInfo*)(p + sizeti); diff --git a/src/rt/deh.d b/src/rt/deh.d index d94af0de09..5a5127ff8e 100644 --- a/src/rt/deh.d +++ b/src/rt/deh.d @@ -19,7 +19,7 @@ extern (C) auto t = cast(Throwable) o; if (t !is null && t.info is null && - cast(byte*) t !is typeid(t).init.ptr) + cast(byte*) t !is typeid(t).initializer.ptr) { t.info = _d_traceContext(context); } diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index 15d89bd77f..d28edf8c58 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -79,7 +79,7 @@ extern (C) Object _d_newclass(const ClassInfo ci) * function called by Release() when Release()'s reference count goes * to zero. */ - p = malloc(ci.init.length); + p = malloc(ci.initializer.length); if (!p) onOutOfMemoryError(); } @@ -93,26 +93,26 @@ extern (C) Object _d_newclass(const ClassInfo ci) attr |= BlkAttr.FINALIZE; if (ci.m_flags & TypeInfo_Class.ClassFlags.noPointers) attr |= BlkAttr.NO_SCAN; - p = GC.malloc(ci.init.length, attr, ci); + p = GC.malloc(ci.initializer.length, attr, ci); debug(PRINTF) printf(" p = %p\n", p); } debug(PRINTF) { printf("p = %p\n", p); - printf("ci = %p, ci.init.ptr = %p, len = %llu\n", ci, ci.init.ptr, cast(ulong)ci.init.length); - printf("vptr = %p\n", *cast(void**) ci.init); - printf("vtbl[0] = %p\n", (*cast(void***) ci.init)[0]); - printf("vtbl[1] = %p\n", (*cast(void***) ci.init)[1]); - printf("init[0] = %x\n", (cast(uint*) ci.init)[0]); - printf("init[1] = %x\n", (cast(uint*) ci.init)[1]); - printf("init[2] = %x\n", (cast(uint*) ci.init)[2]); - printf("init[3] = %x\n", (cast(uint*) ci.init)[3]); - printf("init[4] = %x\n", (cast(uint*) ci.init)[4]); + printf("ci = %p, ci.init.ptr = %p, len = %llu\n", ci, ci.initializer.ptr, cast(ulong)ci.initializer.length); + printf("vptr = %p\n", *cast(void**) ci.initializer); + printf("vtbl[0] = %p\n", (*cast(void***) ci.initializer)[0]); + printf("vtbl[1] = %p\n", (*cast(void***) ci.initializer)[1]); + printf("init[0] = %x\n", (cast(uint*) ci.initializer)[0]); + printf("init[1] = %x\n", (cast(uint*) ci.initializer)[1]); + printf("init[2] = %x\n", (cast(uint*) ci.initializer)[2]); + printf("init[3] = %x\n", (cast(uint*) ci.initializer)[3]); + printf("init[4] = %x\n", (cast(uint*) ci.initializer)[4]); } // initialize it - p[0 .. ci.init.length] = ci.init[]; + p[0 .. ci.initializer.length] = ci.initializer[]; debug(PRINTF) printf("initialization done\n"); return cast(Object) p; @@ -959,7 +959,7 @@ extern (C) void[] _d_newarrayiT(const TypeInfo ti, size_t length) pure nothrow auto tinext = unqualify(ti.next); auto size = tinext.tsize; - auto init = tinext.init(); + auto init = tinext.initializer(); switch (init.length) { @@ -1087,7 +1087,7 @@ extern (C) void* _d_newitemT(in TypeInfo _ti) extern (C) void* _d_newitemiT(in TypeInfo _ti) { auto p = _d_newitemU(_ti); - auto init = _ti.init(); + auto init = _ti.initializer(); assert(init.length <= _ti.tsize); memcpy(p, init.ptr, init.length); return p; @@ -1376,7 +1376,7 @@ extern (C) void rt_finalize2(void* p, bool det = true, bool resetMemory = true) if (resetMemory) { - auto w = (*pc).init; + auto w = (*pc).initializer; p[0 .. w.length] = w[]; } } @@ -1604,7 +1604,7 @@ body void* newdata; auto tinext = unqualify(ti.next); auto sizeelem = tinext.tsize; - auto initializer = tinext.init(); + auto initializer = tinext.initializer(); auto initsize = initializer.length; assert(sizeelem); diff --git a/src/rt/sections_elf_shared.d b/src/rt/sections_elf_shared.d index 041b7c1b01..da24ecb999 100644 --- a/src/rt/sections_elf_shared.d +++ b/src/rt/sections_elf_shared.d @@ -341,7 +341,7 @@ extern(C) void _d_dso_registry(CompilerDSOData* data) if (firstDSO) initLocks(); DSO* pdso = cast(DSO*).calloc(1, DSO.sizeof); - assert(typeid(DSO).init().ptr is null); + assert(typeid(DSO).initializer().ptr is null); *data._slot = pdso; // store backlink in library record pdso._moduleGroup = ModuleGroup(toRange(data._minfo_beg, data._minfo_end)); diff --git a/src/rt/tracegc.d b/src/rt/tracegc.d index 23643f0ea0..708ca347be 100644 --- a/src/rt/tracegc.d +++ b/src/rt/tracegc.d @@ -102,7 +102,7 @@ extern (C) Object _d_newclassTrace(string file, int line, string funcname, const funcname.length, funcname.ptr ); } - accumulate(file, line, funcname, ci.name, ci.init.length); + accumulate(file, line, funcname, ci.name, ci.initializer.length); return _d_newclass(ci); } diff --git a/src/rt/typeinfo/ti_C.d b/src/rt/typeinfo/ti_C.d index 0d3908ab0d..8bfae7901e 100644 --- a/src/rt/typeinfo/ti_C.d +++ b/src/rt/typeinfo/ti_C.d @@ -63,7 +63,7 @@ class TypeInfo_C : TypeInfo return Object.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. Object.sizeof]; } diff --git a/src/rt/typeinfo/ti_byte.d b/src/rt/typeinfo/ti_byte.d index aaa1b3861d..6b0f310851 100644 --- a/src/rt/typeinfo/ti_byte.d +++ b/src/rt/typeinfo/ti_byte.d @@ -44,7 +44,7 @@ class TypeInfo_g : TypeInfo return byte.sizeof; } - override const(void)[] init() @trusted + override const(void)[] initializer() @trusted { return (cast(void *)null)[0 .. byte.sizeof]; } diff --git a/src/rt/typeinfo/ti_cdouble.d b/src/rt/typeinfo/ti_cdouble.d index e05e9e23ec..15bec35251 100644 --- a/src/rt/typeinfo/ti_cdouble.d +++ b/src/rt/typeinfo/ti_cdouble.d @@ -54,7 +54,7 @@ class TypeInfo_r : TypeInfo *cast(F*)p2 = t; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { static immutable F r; return (&r)[0 .. 1]; diff --git a/src/rt/typeinfo/ti_cent.d b/src/rt/typeinfo/ti_cent.d index a5311fd6fd..d7e45da298 100644 --- a/src/rt/typeinfo/ti_cent.d +++ b/src/rt/typeinfo/ti_cent.d @@ -52,7 +52,7 @@ class TypeInfo_zi : TypeInfo return cent.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. cent.sizeof]; } diff --git a/src/rt/typeinfo/ti_cfloat.d b/src/rt/typeinfo/ti_cfloat.d index dd0ae71d3e..3b82f04d0d 100644 --- a/src/rt/typeinfo/ti_cfloat.d +++ b/src/rt/typeinfo/ti_cfloat.d @@ -54,7 +54,7 @@ class TypeInfo_q : TypeInfo *cast(F*)p2 = t; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { static immutable F r; return (&r)[0 .. 1]; diff --git a/src/rt/typeinfo/ti_char.d b/src/rt/typeinfo/ti_char.d index 46d31cfbb2..ba3841792c 100644 --- a/src/rt/typeinfo/ti_char.d +++ b/src/rt/typeinfo/ti_char.d @@ -53,7 +53,7 @@ class TypeInfo_a : TypeInfo *cast(char *)p2 = t; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { static immutable char c; diff --git a/src/rt/typeinfo/ti_creal.d b/src/rt/typeinfo/ti_creal.d index 81fd0a386d..b77429cf89 100644 --- a/src/rt/typeinfo/ti_creal.d +++ b/src/rt/typeinfo/ti_creal.d @@ -54,7 +54,7 @@ class TypeInfo_c : TypeInfo *cast(F*)p2 = t; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { static immutable F r; return (&r)[0 .. 1]; diff --git a/src/rt/typeinfo/ti_dchar.d b/src/rt/typeinfo/ti_dchar.d index b0236ea5f0..2d4354c18a 100644 --- a/src/rt/typeinfo/ti_dchar.d +++ b/src/rt/typeinfo/ti_dchar.d @@ -53,7 +53,7 @@ class TypeInfo_w : TypeInfo *cast(dchar *)p2 = t; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { static immutable dchar c; diff --git a/src/rt/typeinfo/ti_delegate.d b/src/rt/typeinfo/ti_delegate.d index 2bc3bf618f..fa6b0a21e8 100644 --- a/src/rt/typeinfo/ti_delegate.d +++ b/src/rt/typeinfo/ti_delegate.d @@ -50,7 +50,7 @@ class TypeInfo_D : TypeInfo *cast(dg *)p2 = t; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { static immutable dg d; diff --git a/src/rt/typeinfo/ti_double.d b/src/rt/typeinfo/ti_double.d index 219d6528e2..8aa281f11b 100644 --- a/src/rt/typeinfo/ti_double.d +++ b/src/rt/typeinfo/ti_double.d @@ -54,7 +54,7 @@ class TypeInfo_d : TypeInfo *cast(F*)p2 = t; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { static immutable F r; return (&r)[0 .. 1]; diff --git a/src/rt/typeinfo/ti_float.d b/src/rt/typeinfo/ti_float.d index 052a2a20dc..60837d1c96 100644 --- a/src/rt/typeinfo/ti_float.d +++ b/src/rt/typeinfo/ti_float.d @@ -54,7 +54,7 @@ class TypeInfo_f : TypeInfo *cast(F*)p2 = t; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { static immutable F r; return (&r)[0 .. 1]; diff --git a/src/rt/typeinfo/ti_int.d b/src/rt/typeinfo/ti_int.d index 23770f41d8..b0418c06fc 100644 --- a/src/rt/typeinfo/ti_int.d +++ b/src/rt/typeinfo/ti_int.d @@ -48,7 +48,7 @@ class TypeInfo_i : TypeInfo return int.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. int.sizeof]; } diff --git a/src/rt/typeinfo/ti_long.d b/src/rt/typeinfo/ti_long.d index d383f479e3..d054022b26 100644 --- a/src/rt/typeinfo/ti_long.d +++ b/src/rt/typeinfo/ti_long.d @@ -50,7 +50,7 @@ class TypeInfo_l : TypeInfo return long.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. long.sizeof]; } diff --git a/src/rt/typeinfo/ti_ptr.d b/src/rt/typeinfo/ti_ptr.d index c882095620..a23511a6fd 100644 --- a/src/rt/typeinfo/ti_ptr.d +++ b/src/rt/typeinfo/ti_ptr.d @@ -48,7 +48,7 @@ class TypeInfo_P : TypeInfo return (void*).sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. (void*).sizeof]; } diff --git a/src/rt/typeinfo/ti_real.d b/src/rt/typeinfo/ti_real.d index ec473cf6c0..77ae126511 100644 --- a/src/rt/typeinfo/ti_real.d +++ b/src/rt/typeinfo/ti_real.d @@ -54,7 +54,7 @@ class TypeInfo_e : TypeInfo *cast(F*)p2 = t; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { static immutable F r; return (&r)[0 .. 1]; diff --git a/src/rt/typeinfo/ti_short.d b/src/rt/typeinfo/ti_short.d index 247fbdc791..f636fc3af3 100644 --- a/src/rt/typeinfo/ti_short.d +++ b/src/rt/typeinfo/ti_short.d @@ -44,7 +44,7 @@ class TypeInfo_s : TypeInfo return short.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. short.sizeof]; } diff --git a/src/rt/typeinfo/ti_ubyte.d b/src/rt/typeinfo/ti_ubyte.d index e24ecedd9d..97b902ab07 100644 --- a/src/rt/typeinfo/ti_ubyte.d +++ b/src/rt/typeinfo/ti_ubyte.d @@ -44,7 +44,7 @@ class TypeInfo_h : TypeInfo return ubyte.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. ubyte.sizeof]; } diff --git a/src/rt/typeinfo/ti_ucent.d b/src/rt/typeinfo/ti_ucent.d index 0e935175e7..0f04253aaf 100644 --- a/src/rt/typeinfo/ti_ucent.d +++ b/src/rt/typeinfo/ti_ucent.d @@ -52,7 +52,7 @@ class TypeInfo_zk : TypeInfo return ucent.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. ucent.sizeof]; } diff --git a/src/rt/typeinfo/ti_uint.d b/src/rt/typeinfo/ti_uint.d index bea3f3af95..6cd523ba2a 100644 --- a/src/rt/typeinfo/ti_uint.d +++ b/src/rt/typeinfo/ti_uint.d @@ -48,7 +48,7 @@ class TypeInfo_k : TypeInfo return uint.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. uint.sizeof]; } diff --git a/src/rt/typeinfo/ti_ulong.d b/src/rt/typeinfo/ti_ulong.d index 2f35c46ad8..af645a1a42 100644 --- a/src/rt/typeinfo/ti_ulong.d +++ b/src/rt/typeinfo/ti_ulong.d @@ -50,7 +50,7 @@ class TypeInfo_m : TypeInfo return ulong.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. ulong.sizeof]; } diff --git a/src/rt/typeinfo/ti_ushort.d b/src/rt/typeinfo/ti_ushort.d index 2cac88dafe..ae24656432 100644 --- a/src/rt/typeinfo/ti_ushort.d +++ b/src/rt/typeinfo/ti_ushort.d @@ -44,7 +44,7 @@ class TypeInfo_t : TypeInfo return ushort.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. ushort.sizeof]; } diff --git a/src/rt/typeinfo/ti_void.d b/src/rt/typeinfo/ti_void.d index 0023e330dc..28e8c15a06 100644 --- a/src/rt/typeinfo/ti_void.d +++ b/src/rt/typeinfo/ti_void.d @@ -44,7 +44,7 @@ class TypeInfo_v : TypeInfo return void.sizeof; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. void.sizeof]; } diff --git a/src/rt/typeinfo/ti_wchar.d b/src/rt/typeinfo/ti_wchar.d index 8a343397f5..3e2fba9b3b 100644 --- a/src/rt/typeinfo/ti_wchar.d +++ b/src/rt/typeinfo/ti_wchar.d @@ -53,7 +53,7 @@ class TypeInfo_u : TypeInfo *cast(wchar *)p2 = t; } - override const(void)[] init() const @trusted + override const(void)[] initializer() const @trusted { static immutable wchar c; diff --git a/src/rt/util/container/common.d b/src/rt/util/container/common.d index dba90b87d4..29939a47e3 100644 --- a/src/rt/util/container/common.d +++ b/src/rt/util/container/common.d @@ -45,7 +45,7 @@ void destroy(T)(ref T t) if (!is(T == struct)) void initialize(T)(ref T t) if (is(T == struct)) { import core.stdc.string; - if(auto p = typeid(T).init().ptr) + if(auto p = typeid(T).initializer().ptr) memcpy(&t, p, T.sizeof); else memset(&t, 0, T.sizeof); From 02615bc0d7fcbc9366f543b03e2fd6c6a899707f Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 7 Dec 2015 21:48:13 -0800 Subject: [PATCH 200/768] add core.sys.unwind --- mak/COPY | 2 + mak/MANIFEST | 2 + mak/SRCS | 2 + src/core/sys/unwind.d | 130 ++++++++++++++++++++++++++++++++++++++++++ win32.mak | 3 + win64.mak | 3 + 6 files changed, 142 insertions(+) create mode 100644 src/core/sys/unwind.d diff --git a/mak/COPY b/mak/COPY index 4cc94c6f23..5efd3b6450 100644 --- a/mak/COPY +++ b/mak/COPY @@ -43,6 +43,8 @@ COPY=\ $(IMPDIR)\core\stdc\wchar_.d \ $(IMPDIR)\core\stdc\wctype.d \ \ + $(IMPDIR)\core\sys\unwind.d \ + \ $(IMPDIR)\core\sys\freebsd\dlfcn.d \ $(IMPDIR)\core\sys\freebsd\execinfo.d \ \ diff --git a/mak/MANIFEST b/mak/MANIFEST index 1daeea2cc0..c45506a035 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -70,6 +70,8 @@ MANIFEST=\ src\core\sync\rwmutex.d \ src\core\sync\semaphore.d \ \ + src\core\sys\unwind.d \ + \ src\core\sys\freebsd\dlfcn.d \ src\core\sys\freebsd\execinfo.d \ src\core\sys\freebsd\time.d \ diff --git a/mak/SRCS b/mak/SRCS index 0140101eb2..25da1246da 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -45,6 +45,8 @@ SRCS=\ src\core\sync\rwmutex.d \ src\core\sync\semaphore.d \ \ + src\core\sys\unwind.d \ + \ src\core\sys\freebsd\execinfo.d \ src\core\sys\freebsd\sys\event.d \ \ diff --git a/src/core/sys/unwind.d b/src/core/sys/unwind.d new file mode 100644 index 0000000000..6d490629bd --- /dev/null +++ b/src/core/sys/unwind.d @@ -0,0 +1,130 @@ +/** + * Written in the D programming language. + * Equivalent to unwind.h + * + * See_Also: + * Itanium C++ ABI: Exception Handling ($Revision: 1.22 $) + * Source: $(DRUNTIMESRC src/core/sys/_unwind.d) + */ + +module core.sys.unwind; + +import core.stdc.stdint; + +extern (C): + +alias uintptr_t _Unwind_Word; +alias intptr_t _Unwind_Sword; +alias uintptr_t _Unwind_Ptr; +alias uintptr_t _Unwind_Internal_Ptr; + +alias ulong _Unwind_Exception_Class; + +alias uintptr_t _uleb128_t; +alias intptr_t sleb128_t; + +alias int _Unwind_Reason_Code; +enum +{ + _URC_NO_REASON = 0, + _URC_FOREIGN_EXCEPTION_CAUGHT = 1, + _URC_FATAL_PHASE2_ERROR = 2, + _URC_FATAL_PHASE1_ERROR = 3, + _URC_NORMAL_STOP = 4, + _URC_END_OF_STACK = 5, + _URC_HANDLER_FOUND = 6, + _URC_INSTALL_CONTEXT = 7, + _URC_CONTINUE_UNWIND = 8 +} + +alias int _Unwind_Action; +enum _Unwind_Action _UA_SEARCH_PHASE = 1; +enum _Unwind_Action _UA_CLEANUP_PHASE = 2; +enum _Unwind_Action _UA_HANDLER_FRAME = 4; +enum _Unwind_Action _UA_FORCE_UNWIND = 8; +enum _Unwind_Action _UA_END_OF_STACK = 16; + +alias _Unwind_Exception_Cleanup_Fn = void function( + _Unwind_Reason_Code reason, + _Unwind_Exception *exc); + +struct _Unwind_Exception +{ + _Unwind_Exception_Class exception_class; + _Unwind_Exception_Cleanup_Fn exception_cleanup; + _Unwind_Word private_1; + _Unwind_Word private_2; +} + +struct _Unwind_Context; + +_Unwind_Reason_Code _Unwind_RaiseException(_Unwind_Exception *exception_object); + +alias _Unwind_Stop_Fn = _Unwind_Reason_Code function( + int _version, + _Unwind_Action actions, + _Unwind_Exception_Class exceptionClass, + _Unwind_Exception* exceptionObject, + _Unwind_Context* context, + void* stop_parameter); + +_Unwind_Reason_Code _Unwind_ForcedUnwind( + _Unwind_Exception* exception_object, + _Unwind_Stop_Fn stop, + void* stop_parameter); + +alias _Unwind_Trace_Fn = _Unwind_Reason_Code function(_Unwind_Context*, void*); + +void _Unwind_DeleteException(_Unwind_Exception* exception_object); +void _Unwind_Resume(_Unwind_Exception* exception_object); +_Unwind_Reason_Code _Unwind_Resume_or_Rethrow(_Unwind_Exception* exception_object); +_Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void*); + +_Unwind_Word _Unwind_GetGR(_Unwind_Context* context, int index); +void _Unwind_SetGR(_Unwind_Context* context, int index, _Unwind_Word new_value); +_Unwind_Ptr _Unwind_GetIP(_Unwind_Context* context); +_Unwind_Ptr _Unwind_GetIPInfo(_Unwind_Context* context, int*); +void _Unwind_SetIP(_Unwind_Context* context, _Unwind_Ptr new_value); +_Unwind_Word _Unwind_GetCFA(_Unwind_Context*); +_Unwind_Word _Unwind_GetBSP(_Unwind_Context*); +void* _Unwind_GetLanguageSpecificData(_Unwind_Context*); +_Unwind_Ptr _Unwind_GetRegionStart(_Unwind_Context* context); +void* _Unwind_FindEnclosingFunction(void* pc); + +version (X68_64) +{ + _Unwind_Ptr _Unwind_GetDataRelBase(_Unwind_Context* context) + { + return _Unwind_GetGR(context, 1); + } + + _Unwind_Ptr _Unwind_GetTextRelBase(_Unwind_Context* context) + { + import core.stdc.stdlib; + abort(); + return 0; + } +} +else +{ + _Unwind_Ptr _Unwind_GetDataRelBase(_Unwind_Context* context); + _Unwind_Ptr _Unwind_GetTextRelBase(_Unwind_Context* context); +} + + +alias _Unwind_Personality_Fn = _Unwind_Reason_Code function( + int _version, + _Unwind_Action actions, + _Unwind_Exception_Class exceptionClass, + _Unwind_Exception* exceptionObject, + _Unwind_Context* context); + +struct SjLj_Function_Context; +void _Unwind_SjLj_Register(SjLj_Function_Context *); +void _Unwind_SjLj_Unregister(SjLj_Function_Context *); +_Unwind_Reason_Code _Unwind_SjLj_RaiseException(_Unwind_Exception*); +_Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind(_Unwind_Exception , _Unwind_Stop_Fn, void*); +void _Unwind_SjLj_Resume(_Unwind_Exception*); +_Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow(_Unwind_Exception*); + + diff --git a/win32.mak b/win32.mak index 66441f0f80..ffe15281a2 100644 --- a/win32.mak +++ b/win32.mak @@ -337,6 +337,9 @@ $(IMPDIR)\core\stdc\wchar_.d : src\core\stdc\wchar_.d $(IMPDIR)\core\stdc\wctype.d : src\core\stdc\wctype.d copy $** $@ +$(IMPDIR)\core\sys\unwind.d : src\core\sys\unwind.d + copy $** $@ + $(IMPDIR)\core\sys\freebsd\dlfcn.d : src\core\sys\freebsd\dlfcn.d copy $** $@ diff --git a/win64.mak b/win64.mak index 94de4f825a..42ed4c7529 100644 --- a/win64.mak +++ b/win64.mak @@ -347,6 +347,9 @@ $(IMPDIR)\core\stdc\wchar_.d : src\core\stdc\wchar_.d $(IMPDIR)\core\stdc\wctype.d : src\core\stdc\wctype.d copy $** $@ +$(IMPDIR)\core\sys\unwind.d : src\core\sys\unwind.d + copy $** $@ + $(IMPDIR)\core\sys\freebsd\dlfcn.d : src\core\sys\freebsd\dlfcn.d copy $** $@ From b572e441f104a7257e9331be3a13f031deed7bd1 Mon Sep 17 00:00:00 2001 From: Yazan Dabain Date: Fri, 11 Dec 2015 12:52:14 +0200 Subject: [PATCH 201/768] Fixes #15434: object.d must not import from rt --- src/object.d | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/object.d b/src/object.d index a570aa22dd..a7d32dc53f 100644 --- a/src/object.d +++ b/src/object.d @@ -1548,9 +1548,11 @@ const: static int opApply(scope int delegate(ModuleInfo*) dg) { - import rt.minfo; + import core.internal.traits : externDFunc; + alias moduleinfos_apply = externDFunc!("rt.minfo.moduleinfos_apply", + int function(scope int delegate(immutable(ModuleInfo*)))); // Bugzilla 13084 - enforcing immutable ModuleInfo would break client code - return rt.minfo.moduleinfos_apply( + return moduleinfos_apply( (immutable(ModuleInfo*)m) => dg(cast(ModuleInfo*)m)); } } From 2fbe4a8b393d73c468721da4c550987d9a2c8d14 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 29 Nov 2015 10:16:33 -0800 Subject: [PATCH 202/768] Add message() to object.Throwable --- src/object.d | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/object.d b/src/object.d index e9b4635148..b15ec6c7c5 100644 --- a/src/object.d +++ b/src/object.d @@ -1607,6 +1607,7 @@ class Throwable : Object sink("@"); sink(file); sink("("); sink(sizeToTempString(line, tmpBuff, 10)); sink(")"); + auto msg = message(); if (msg.length) { sink(": "); sink(msg); @@ -1627,6 +1628,19 @@ class Throwable : Object } } } + + /** + * Get the message describing the error. + * Base behavior is to return the `Throwable.msg` field. + * Override to return some other error message. + * + * Returns: + * message + */ + const(char)[] message() const + { + return msg; + } } From b70bf520327fdfef7663dc6c544b48e15c64a2e1 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 26 Dec 2015 16:02:32 +0100 Subject: [PATCH 203/768] build minit.obj explicitly - fixes sporadic build failures caused by different timestamps after checkout - requires to explicitly rebuild minit.obj, but we haven't touched the asm code since ages --- win32.mak | 3 ++- win64.mak | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/win32.mak b/win32.mak index ffe15281a2..bbd7e48376 100644 --- a/win32.mak +++ b/win32.mak @@ -1175,7 +1175,8 @@ lib\win32\winspool.lib : def\winspool.def errno_c_$(MODEL).obj : src\core\stdc\errno.c $(CC) -c -o$@ $(CFLAGS) src\core\stdc\errno.c -src\rt\minit.obj : src\rt\minit.asm +# only rebuild explicitly +rebuild_minit_obj : src\rt\minit.asm $(CC) -c $(CFLAGS) src\rt\minit.asm ################### gcstub generation ######################### diff --git a/win64.mak b/win64.mak index 2e30098666..3d2d7c6161 100644 --- a/win64.mak +++ b/win64.mak @@ -1150,8 +1150,8 @@ msvc_$(MODEL).obj : src\rt\msvc.c win64.mak msvc_math_$(MODEL).obj : src\rt\msvc_math.c win64.mak $(CC) -c -Fo$@ $(CFLAGS) src\rt\msvc_math.c - -src\rt\minit.obj : src\rt\minit.asm +# only rebuild explicitly +rebuild_minit_obj : src\rt\minit.asm $(CC) -c $(CFLAGS) src\rt\minit.asm ################### gcstub generation ######################### From d883ee7e7edc90ad7a6d986903319c2a203c4a09 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 27 Dec 2015 14:17:50 +0100 Subject: [PATCH 204/768] remove minit.obj from win64.mak --- win64.mak | 6 ------ 1 file changed, 6 deletions(-) diff --git a/win64.mak b/win64.mak index 3d2d7c6161..16e0ad8d35 100644 --- a/win64.mak +++ b/win64.mak @@ -40,8 +40,6 @@ $(mak\SRCS) # NOTE: trace.d and cover.d are not necessary for a successful build # as both are used for debugging features (profiling and coverage) -# NOTE: a pre-compiled minit.obj has been provided in dmd for Win32 and -# minit.asm is not used by dmd for Linux OBJS= errno_c_$(MODEL).obj msvc_$(MODEL).obj msvc_math_$(MODEL).obj OBJS_TO_DELETE= errno_c_$(MODEL).obj msvc_$(MODEL).obj msvc_math_$(MODEL).obj @@ -1150,10 +1148,6 @@ msvc_$(MODEL).obj : src\rt\msvc.c win64.mak msvc_math_$(MODEL).obj : src\rt\msvc_math.c win64.mak $(CC) -c -Fo$@ $(CFLAGS) src\rt\msvc_math.c -# only rebuild explicitly -rebuild_minit_obj : src\rt\minit.asm - $(CC) -c $(CFLAGS) src\rt\minit.asm - ################### gcstub generation ######################### $(GCSTUB) : src\gcstub\gc.d win64.mak From 3b034f732fa0e5e584d42d931a0d67d98b18d3b1 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 28 Dec 2015 04:12:58 -0800 Subject: [PATCH 205/768] add src/rt/dwarfeh.d --- mak/MANIFEST | 1 + mak/SRCS | 1 + src/core/sys/unwind.d | 8 +- src/rt/dwarfeh.d | 752 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 757 insertions(+), 5 deletions(-) create mode 100644 src/rt/dwarfeh.d diff --git a/mak/MANIFEST b/mak/MANIFEST index c45506a035..2e5d987c13 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -386,6 +386,7 @@ MANIFEST=\ src\rt\deh_win32.d \ src\rt\deh_win64_posix.d \ src\rt\dmain2.d \ + src\rt\dwarfeh.d \ src\rt\dylib_fixes.c \ src\rt\invariant.d \ src\rt\lifetime.d \ diff --git a/mak/SRCS b/mak/SRCS index 25da1246da..83b21378d1 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -267,6 +267,7 @@ SRCS=\ src\rt\deh_win32.d \ src\rt\deh_win64_posix.d \ src\rt\dmain2.d \ + src\rt\dwarfeh.d \ src\rt\invariant.d \ src\rt\lifetime.d \ src\rt\llmath.d \ diff --git a/src/core/sys/unwind.d b/src/core/sys/unwind.d index 6d490629bd..1b86e64985 100644 --- a/src/core/sys/unwind.d +++ b/src/core/sys/unwind.d @@ -21,7 +21,7 @@ alias uintptr_t _Unwind_Internal_Ptr; alias ulong _Unwind_Exception_Class; alias uintptr_t _uleb128_t; -alias intptr_t sleb128_t; +alias intptr_t _sleb128_t; alias int _Unwind_Reason_Code; enum @@ -50,7 +50,7 @@ alias _Unwind_Exception_Cleanup_Fn = void function( struct _Unwind_Exception { - _Unwind_Exception_Class exception_class; + align(8) _Unwind_Exception_Class exception_class; _Unwind_Exception_Cleanup_Fn exception_cleanup; _Unwind_Word private_1; _Unwind_Word private_2; @@ -100,9 +100,7 @@ version (X68_64) _Unwind_Ptr _Unwind_GetTextRelBase(_Unwind_Context* context) { - import core.stdc.stdlib; - abort(); - return 0; + assert(0); } } else diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d new file mode 100644 index 0000000000..c9b63275ca --- /dev/null +++ b/src/rt/dwarfeh.d @@ -0,0 +1,752 @@ +/* + * Exception handling support for Dwarf-style portable exceptions. + * + * Copyright: Copyright 2015 D Language Foundation + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). + * (See accompanying file LICENSE) + * Authors: Walter Bright + * Source: $(DRUNTIMESRC src/rt/_dwarfeh.d) + */ + +module rt.dwarfeh; + +version (Posix): + +import core.sys.unwind; +import core.stdc.stdio; +import core.stdc.stdlib; + +extern (C) +{ + int _d_isbaseof(ClassInfo b, ClassInfo c); + void _d_createTrace(Object o, void* context); +} + +/* High 4 bytes = vendor, low 4 bytes = language + * For us: "DMD\0D\0\0\0" + */ +enum _Unwind_Exception_Class dmdExceptionClass = + (cast(_Unwind_Exception_Class)'D' << 56) | + (cast(_Unwind_Exception_Class)'M' << 48) | + (cast(_Unwind_Exception_Class)'D' << 40) | + (cast(_Unwind_Exception_Class)'D' << 24); + +/** + * Wrap the unwinder's data with our own compiler specific struct + * with our own data. + */ +struct ExceptionHeader +{ + Throwable object; // the thrown D object + _Unwind_Exception exception_object; // the unwinder's data + + // Save info on the handler that was detected + int handler; // which catch + const(ubyte)* languageSpecificData; // Language Specific Data Area for function enclosing the handler + _Unwind_Ptr landingPad; // pointer to catch code + + // Stack other thrown exceptions in current thread through here. + ExceptionHeader* next; + + static ExceptionHeader* stack; // thread local stack of chained exceptions + + /* Pre-allocate storage for 1 instance per thread. + * Use calloc/free for multiple exceptions in flight. + * Does not use GC + */ + static ExceptionHeader ehstorage; + + /************ + * Allocate and initialize an ExceptionHeader. + * Params: + * o = thrown object + * Returns: + * allocated and initalized ExceptionHeader + */ + static ExceptionHeader* create(Throwable o) @nogc + { + auto eh = &ehstorage; + if (eh.object) // if in use + { + eh = cast(ExceptionHeader*)core.stdc.stdlib.calloc(ExceptionHeader.sizeof, 1); + if (!eh) + assert(0); // out of memory while throwing - not much else can be done + } + eh.object = o; + eh.exception_object.exception_class = dmdExceptionClass; + //printf("create(): %p\n", eh); + return eh; + } + + /********************** + * Free ExceptionHeader that was created by create(). + * Params: + * eh = ExceptionHeader to free + */ + static void free(ExceptionHeader* eh) + { + //printf("free(%p)\n", eh); + /* Smite contents even if subsequently free'd, + * to ward off dangling pointer bugs. + */ + *eh = ExceptionHeader.init; + if (eh != &ehstorage) + core.stdc.stdlib.free(eh); + } + + /************************* + * Push this onto stack of chained exceptions. + */ + void push() + { + next = stack; + stack = &this; + } + + /************************ + * Pop and return top of chained exception stack. + */ + static ExceptionHeader* pop() + { + auto eh = stack; + stack = eh.next; + return eh; + } + + /******************************* + * Convert from pointer to exception_object to pointer to ExceptionHeader + * that it is embedded inside of. + * Params: + * eo = pointer to exception_object field + * Returns: + * pointer to ExceptionHeader that eo points into. + */ + static ExceptionHeader* toExceptionHeader(_Unwind_Exception* eo) + { + return cast(ExceptionHeader*)(cast(void*)eo - ExceptionHeader.exception_object.offsetof); + } +} + +/******************************************* + * The first thing a catch handler does is call this. + * Params: + * exceptionObject = value passed to catch handler by unwinder + * Returns: + * object that was caught + */ +extern(C) Throwable __dmd_begin_catch(_Unwind_Exception* exceptionObject) +{ + ExceptionHeader *eh = ExceptionHeader.toExceptionHeader(exceptionObject); + //printf("__dmd_begin_catch(%p), object = %p\n", eh, eh.object); + + auto o = eh.object; + + // Pop off of chain + if (eh != ExceptionHeader.pop()) + assert(0); // eh should have been at top of stack + + _Unwind_DeleteException(&eh.exception_object); // done with eh + return o; +} + +/********************* + * Called by D code to throw an exception via + * --- + * throw o; + * --- + * Params: + * o = Object to throw + * Returns: + * doesn't return + */ +extern(C) void _d_throwdwarf(Throwable o) +{ + ExceptionHeader *eh = ExceptionHeader.create(o); + + eh.push(); // add to thrown exception stack + //printf("_d_throwdwarf: eh = %p, eh.next = %p\n", eh, eh.next); + + /* Called by unwinder when exception object needs destruction by other than our code. + */ + extern (C) static void exception_cleanup(_Unwind_Reason_Code reason, _Unwind_Exception* eo) + { + //printf("exception_cleanup()\n"); + switch (reason) + { + case _URC_FATAL_PHASE1_ERROR: // unknown error code + case _URC_FATAL_PHASE2_ERROR: // probably corruption + default: // uh-oh + assert(0); // C++ calls terminate() instead + + case _URC_FOREIGN_EXCEPTION_CAUGHT: + case _URC_NO_REASON: + auto eh = ExceptionHeader.toExceptionHeader(eo); + ExceptionHeader.free(eh); + break; + } + + } + + eh.exception_object.exception_cleanup = &exception_cleanup; + + _d_createTrace(o, null); + + auto r = _Unwind_RaiseException(&eh.exception_object); + + /* Shouldn't have returned, but if it did: + */ + switch (r) + { + case _URC_END_OF_STACK: + /* Unwound the stack without encountering a catch clause. + * In C++, this would mean call uncaught_exception(). + * In D, this should never happen since everything is enclosed + * by a top-level try/catch. + */ + fprintf(stderr, "uncaught exception\n"); + assert(0); // should never happen + + case _URC_FATAL_PHASE1_ERROR: + /* Unexpected error, likely some sort of corruption. + * In C++, terminate() would be called. + */ + assert(0); // should never happen + + case _URC_FATAL_PHASE2_ERROR: + /* Unexpected error. Program is in an unknown state. + * In C++, terminate() would be called. + */ + assert(0); // should never happen + + default: + assert(0); // should never happen + } +} + + +/***************************************** + * "personality" function, specific to each language. + * This one, of course, is specific to DMD. + * Params: + * ver = version must be 1 + * actions = bitwise OR of the 4 actions _UA_xxx. + * _UA_SEARCH_PHASE means return _URC_HANDLER_FOUND if current frame has a handler, + * _URC_CONTINUE_UNWIND if not. Cannot be used with _UA_CLEANUP_PHASE. + * _UA_CLEANUP_PHASE means perform cleanup for current frame by calling nested functions + * and returning _URC_CONTINUE_UNWIND. Or, set up registers and IP for Landing Pad + * and return _URC_INSTALL_CONTEXT. + * _UA_HANDLER_FRAME means this frame was the one with the handler in Phase 1, and now + * it is Phase 2 and the handler must be run. + * _UA_FORCE_UNWIND means unwinding the stack for longjmp or thread cancellation. Run + * finally clauses, not catch clauses, finallys must end with call to _Uwind_Resume(). + * exceptionClass = 8 byte value indicating type of thrown exception. If the low 4 bytes + * are "C++\0", it's a C++ exception. + * exceptionObject = language specific exception information + * context = opaque type of unwinder state information + * Returns: + * reason code + * See_Also: + * http://www.ucw.cz/~hubicka/papers/abi/node25.html + */ + +extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action actions, + _Unwind_Exception_Class exceptionClass, _Unwind_Exception* exceptionObject, + _Unwind_Context* context) +{ + //printf("__dmd_personality_v0(actions = x%x, eo = %p, context = %p)\n", cast(int)actions, exceptionObject, context); + if (ver != 1) + return _URC_FATAL_PHASE1_ERROR; + assert(context); + + const(ubyte)* language_specific_data; + int handler; + _Unwind_Ptr landing_pad; + + ExceptionHeader *eh = ExceptionHeader.toExceptionHeader(exceptionObject); + //for (auto ehx = eh; ehx; ehx = ehx.next) + //printf(" eh: %p next=%014p lsda=%p '%.*s'\n", ehx, ehx.next, ehx.languageSpecificData, ehx.object.msg.length, ehx.object.msg.ptr); + + language_specific_data = cast(const(ubyte)*)_Unwind_GetLanguageSpecificData(context); + //printf("lsda = %p\n", language_specific_data); + + auto Start = _Unwind_GetRegionStart(context); + + /* Get instruction pointer (ip) at start of instruction that threw + */ + int ip_before_insn = 0; + auto ip = _Unwind_GetIPInfo(context, &ip_before_insn); + if (!ip_before_insn) + --ip; + //printf("ip = x%x\n", cast(int)(ip - Start)); + //printf("\tStart = %p, ipoff = %p, lsda = %p\n", Start, ip - Start, language_specific_data); + + auto result = scanLSDA(language_specific_data, ip - Start, exceptionClass, + (actions & _UA_FORCE_UNWIND) != 0, // don't catch when forced unwinding + (actions & _UA_SEARCH_PHASE) != 0, // search phase is looking for handlers + getClassInfo(eh), + landing_pad, + handler); + landing_pad += Start; + + final switch (result) + { + case LsdaResult.notFound: + fprintf(stderr, "not found\n"); + assert(0); + + case LsdaResult.foreign: + assert(0); + + case LsdaResult.corrupt: + fprintf(stderr, "LSDA is corrupt\n"); + assert(0); + + case LsdaResult.noAction: + //printf(" no action\n"); + return _URC_CONTINUE_UNWIND; + + case LsdaResult.cleanup: + //printf(" cleanup\n"); + if (actions & _UA_SEARCH_PHASE) + { + return _URC_CONTINUE_UNWIND; + } + break; + + case LsdaResult.handler: + //printf(" handler\n"); + //printf(" eh.lsda = %p, lsda = %p\n", eh.languageSpecificData, language_specific_data); + assert(!(actions & _UA_FORCE_UNWIND)); + if (actions & _UA_SEARCH_PHASE) + { + assert(exceptionClass == dmdExceptionClass); // Can't do handlers for anything but D + eh.handler = handler; + eh.languageSpecificData = language_specific_data; + eh.landingPad = landing_pad; + + return _URC_HANDLER_FOUND; + } + break; + } + + //printf(" lsda = %p, landing_pad = %p, handler = %d\n", language_specific_data, landing_pad, handler); + //printf( '%.*s' next = %p\n", eh.object.msg.length, eh.object.msg.ptr, eh.next); + + // Figure out what to do when there are multiple exceptions in flight + while (eh.next) + { + ExceptionHeader* ehn = eh.next; + + // Don't combine when the exceptions are from different functions + if (language_specific_data != ehn.languageSpecificData) + { + //printf("break: %p %p\n", language_specific_data, ehn.languageSpecificData); + break; + } + + Error e = cast(Error)eh.object; + if (e !is null && (cast(Error)ehn.object) is null) + { + /* eh is an Error, ehn is not. Skip ehn. + */ + //printf("bypass\n"); + e.bypassedException = ehn.object; + } + else + { + //printf("chain\n"); + // Append eh's object to ehn's object chain + Throwable n = ehn.object; + while (n.next) + n = n.next; + n.next = eh.object; + + // Replace our exception object with in-flight one + eh.object = ehn.object; + if (ehn.handler != handler) + { + handler = ehn.handler; + + eh.handler = handler; + eh.languageSpecificData = language_specific_data; + eh.landingPad = landing_pad; + } + } + + // Remove ehn from threaded chain + eh.next = ehn.next; + //printf("delete %p\n", ehn); + _Unwind_DeleteException(&ehn.exception_object); // discard ehn + } + + // Set up registers and jump to cleanup or handler + int reg0 = 0; // RAX is __exception_object + int reg1 = 1; // RDX is __handler + _Unwind_SetGR(context, reg0, cast(_Unwind_Ptr)exceptionObject); + _Unwind_SetGR(context, reg1, handler); + _Unwind_SetIP(context, landing_pad); + + return _URC_INSTALL_CONTEXT; +} + +/************************************************* + * Look at the chain of inflight exceptions and pick the class type that'll + * be looked for in catch clauses. + * Params: + * eh = ExceptionHeader of unwinding exception + * Returns: + * class type to look for + */ +ClassInfo getClassInfo(ExceptionHeader* eh) +{ + Throwable ehobject = eh.object; + //printf("start: %p '%.*s'\n", ehobject, ehobject.classinfo.info.name.length, ehobject.classinfo.info.name.ptr); + for (ExceptionHeader* ehn = eh.next; ehn; ehn = ehn.next) + { + //printf("ehn = %p '%.*s'\n", ehn.object, cast(int)ehn.object.classinfo.info.name.length, ehn.object.classinfo.info.name.ptr); + Error e = cast(Error)ehobject; + if (e is null || (cast(Error)ehn.object) !is null) + ehobject = ehn.object; + } + //printf("end : %p\n", ehobject); + return ehobject.classinfo; +} + + +/****************************** + * Decode Unsigned LEB128. + * Params: + * p = pointer to data pointer, *p is updated + * to point past decoded value + * Returns: + * decoded value + * See_Also: + * https://en.wikipedia.org/wiki/LEB128 + */ +_uleb128_t uLEB128(const(ubyte)** p) +{ + auto q = *p; + _uleb128_t result = 0; + uint shift = 0; + while (1) + { + ubyte b = *q++; + result |= cast(_uleb128_t)(b & 0x7F) << shift; + if ((b & 0x80) == 0) + break; + shift += 7; + } + *p = q; + return result; +} + +/****************************** + * Decode Signed LEB128. + * Params: + * p = pointer to data pointer, *p is updated + * to point past decoded value + * Returns: + * decoded value + * See_Also: + * https://en.wikipedia.org/wiki/LEB128 + */ +_sleb128_t sLEB128(const(ubyte)** p) +{ + auto q = *p; + ubyte b; + + _sleb128_t result = 0; + uint shift = 0; + while (1) + { + b = *q++; + result |= cast(_sleb128_t)(b & 0x7F) << shift; + shift += 7; + if ((b & 0x80) == 0) + break; + } + if (shift < result.sizeof * 8 && (b & 0x40)) + result |= -(cast(_sleb128_t)1 << shift); + *p = q; + return result; +} + +enum +{ + DW_EH_PE_FORMAT_MASK = 0x0F, + DW_EH_PE_APPL_MASK = 0x70, + DW_EH_PE_indirect = 0x80, + + DW_EH_PE_omit = 0xFF, + DW_EH_PE_ptr = 0x00, + DW_EH_PE_uleb128 = 0x01, + DW_EH_PE_udata2 = 0x02, + DW_EH_PE_udata4 = 0x03, + DW_EH_PE_udata8 = 0x04, + DW_EH_PE_sleb128 = 0x09, + DW_EH_PE_sdata2 = 0x0A, + DW_EH_PE_sdata4 = 0x0B, + DW_EH_PE_sdata8 = 0x0C, + + DW_EH_PE_absptr = 0x00, + DW_EH_PE_pcrel = 0x10, + DW_EH_PE_textrel = 0x20, + DW_EH_PE_datarel = 0x30, + DW_EH_PE_funcrel = 0x40, + DW_EH_PE_aligned = 0x50, +} + + +/************************************************** + * Read and extract information from the LSDA (aka gcc_except_table section). + * The dmd Call Site Table is structurally different from other implementations. It + * is organized as nested ranges, and one ip can map to multiple ranges. The most + * nested candidate is selected when searched. Other implementations have one candidate + * per ip. + * Params: + * lsda = pointer to LSDA table + * ip = offset from start of function at which exception happened + * exceptionClass = which language threw the exception + * cleanupsOnly = only look for cleanups + * preferHandler = if a handler encloses a cleanup, prefer the handler + * catchType = type of thrown object + * landingPad = set to landing pad + * handler = set to index of which catch clause was matched + * Returns: + * LsdaResult + * See_Also: + * http://reverseengineering.stackexchange.com/questions/6311/how-to-recover-the-exception-info-from-gcc-except-table-and-eh-handle-sections + * http://www.airs.com/blog/archives/464 + * https://anarcheuz.github.io/2015/02/15/ELF%20internals%20part%202%20-%20exception%20handling/ + */ + +LsdaResult scanLSDA(const(ubyte)* lsda, _Unwind_Ptr ip, _Unwind_Exception_Class exceptionClass, + bool cleanupsOnly, + bool preferHandler, + ClassInfo catchType, + out _Unwind_Ptr landingPad, out int handler) +{ + auto p = lsda; + if (!p) + return LsdaResult.noAction; + + _Unwind_Ptr dw_pe_value(ubyte pe) + { + _Unwind_Ptr value = void; + switch (pe) + { + case DW_EH_PE_uleb128: value = cast(_Unwind_Ptr) uLEB128(&p); break; + case DW_EH_PE_udata2: value = cast(_Unwind_Ptr) *cast(ushort*)p; p += 2; break; + case DW_EH_PE_udata4: value = cast(_Unwind_Ptr) *cast(uint*)p; p += 4; break; + case DW_EH_PE_udata8: value = cast(_Unwind_Ptr) *cast(ulong*)p; p += 8; break; + case DW_EH_PE_sleb128: value = cast(_Unwind_Ptr) sLEB128(&p); break; + case DW_EH_PE_sdata2: value = cast(_Unwind_Ptr) *cast(short*)p; p += 2; break; + case DW_EH_PE_sdata4: value = cast(_Unwind_Ptr) *cast(int*)p; p += 4; break; + case DW_EH_PE_sdata8: value = cast(_Unwind_Ptr) *cast(long*)p; p += 8; break; + case DW_EH_PE_ptr: if (size_t.sizeof == 8) + goto case DW_EH_PE_udata8; + else + goto case DW_EH_PE_udata4; + default: + assert(0); + } + return value; + } + + ubyte LPstart = *p++; + + _Unwind_Ptr LPbase = 0; + if (LPstart != DW_EH_PE_omit) + { + LPbase = dw_pe_value(LPstart); + } + + ubyte TType = *p++; + _Unwind_Ptr TTbase = 0; + _Unwind_Ptr TToffset = 0; + if (TType != DW_EH_PE_omit) + { + TTbase = uLEB128(&p); + TToffset = (p - lsda) + TTbase; + } + ///*printf(" TType = "); print_dw_pe(TType);*/ printf(" TTbase = x%08llx\n", TTbase); + + ubyte CallSiteFormat = *p++; + + _Unwind_Ptr CallSiteTableSize = dw_pe_value(CallSiteFormat); + ///*printf(" CallSiteFormat = "); print_dw_pe(CallSiteFormat);*/ printf(" CallSiteTableSize = x%08llx\n", CallSiteTableSize); + + //printf(" Call Site Table\n"); + _Unwind_Ptr ipoffset = ip - LPbase; + //printf("ipoffset = x%x\n", cast(int)ipoffset); + bool noAction = false; + auto tt = lsda + TToffset; + const(ubyte)* pActionTable = p + CallSiteTableSize; + while (1) + { + if (p >= pActionTable) + { + if (p == pActionTable) + break; + fprintf(stderr, "no Call Site Table\n"); + + return LsdaResult.corrupt; + } + + _Unwind_Ptr CallSiteStart = dw_pe_value(CallSiteFormat); + _Unwind_Ptr CallSiteRange = dw_pe_value(CallSiteFormat); + _Unwind_Ptr LandingPad = dw_pe_value(CallSiteFormat); + _uleb128_t ActionRecordPtr = uLEB128(&p); + + //printf(" XT: start = x%x, range = x%x, landing pad = x%x, action = x%x\n", + //cast(int)CallSiteStart, cast(int)CallSiteRange, cast(int)LandingPad, cast(int)ActionRecordPtr); + + if (ipoffset < CallSiteStart) + break; + + // The most nested entry will be the last one that ip is in + if (ipoffset < CallSiteStart + CallSiteRange) + { + //printf("\tmatch\n"); + if (ActionRecordPtr) // if saw a catch + { + if (cleanupsOnly) + continue; // ignore catch + + auto h = actionTableLookup(catchType, cast(uint)ActionRecordPtr, pActionTable, tt, TType); + if (h < 0) + { + fprintf(stderr, "negative handler\n"); + return LsdaResult.corrupt; + } + if (h == 0) + continue; // ignore + + // The catch is good + noAction = false; + landingPad = LandingPad; + handler = h; + } + else if (LandingPad) // if saw a cleanup + { + if (preferHandler && handler) // enclosing handler overrides cleanup + continue; // keep looking + noAction = false; + landingPad = LandingPad; + handler = 0; // cleanup hides the handler + } + else // take no action + noAction = true; + } + } + + if (noAction) + { + assert(!landingPad && !handler); + return LsdaResult.noAction; + } + + if (landingPad) + return handler ? LsdaResult.handler : LsdaResult.cleanup; + + return LsdaResult.notFound; +} + +/******************************************** + * Look up classType in Action Table. + * Params: + * classType = type to loop up in Action Table + * actionRecordPtr = starting index in Action Table + 1 + * pActionTable = pointer to start of Action Table + * tt = pointer past end of Type Table + * TType = encoding of entries in Type Table + * Returns: + * >=1 means the handler index of the classType + * 0 means classType is not in the Action Table + * <0 means corrupt + */ +int actionTableLookup(ClassInfo catchType, uint actionRecordPtr, const(ubyte)* pActionTable, + const(ubyte)* tt, ubyte TType) +{ + //printf("actionTableLookup(catchType = %p, actionRecordPtr = %d, pActionTable = %p, tt = %p)\n", + //catchType, actionRecordPtr, pActionTable, tt); + assert(pActionTable < tt); + + for (auto ap = pActionTable + actionRecordPtr - 1; 1; ) + { + assert(pActionTable <= ap && ap < tt); + + auto TypeFilter = sLEB128(&ap); + auto apn = ap; + auto NextRecordPtr = sLEB128(&ap); + + //printf(" at: TypeFilter = %d, NextRecordPtr = %d\n", cast(int)TypeFilter, cast(int)NextRecordPtr); + + if (TypeFilter <= 0) // should never happen with DMD generated tables + { + fprintf(stderr, "TypeFilter = %d\n", cast(int)TypeFilter); + return -1; // corrupt + } + + /* TypeFilter is negative index from TToffset, + * which is where the ClassInfo is stored + */ + _Unwind_Ptr entry; + const(ubyte)* tt2; + switch (TType & DW_EH_PE_FORMAT_MASK) + { + case DW_EH_PE_udata2: entry = cast(_Unwind_Ptr) *cast(ushort*)(tt2 = tt - TypeFilter * 2); break; + case DW_EH_PE_udata4: entry = cast(_Unwind_Ptr) *cast(uint*) (tt2 = tt - TypeFilter * 4); break; + case DW_EH_PE_udata8: entry = cast(_Unwind_Ptr) *cast(ulong*) (tt2 = tt - TypeFilter * 8); break; + case DW_EH_PE_sdata2: entry = cast(_Unwind_Ptr) *cast(short*) (tt2 = tt - TypeFilter * 2); break; + case DW_EH_PE_sdata4: entry = cast(_Unwind_Ptr) *cast(int*) (tt2 = tt - TypeFilter * 4); break; + case DW_EH_PE_sdata8: entry = cast(_Unwind_Ptr) *cast(long*) (tt2 = tt - TypeFilter * 8); break; + case DW_EH_PE_ptr: if (size_t.sizeof == 8) + goto case DW_EH_PE_udata8; + else + goto case DW_EH_PE_udata4; + default: + fprintf(stderr, "TType = x%x\n", TType); + return -1; // corrupt + } + if (!entry) // the 'catch all' type + return -1; // corrupt: should never happen with DMD, which explicitly uses Throwable + + switch (TType & DW_EH_PE_APPL_MASK) + { + case DW_EH_PE_absptr: + break; + + case DW_EH_PE_pcrel: + entry += cast(_Unwind_Ptr)tt2; + break; + + default: + return -1; + } + if (TType & DW_EH_PE_indirect) + entry = *cast(_Unwind_Ptr*)entry; + + ClassInfo ci = cast(ClassInfo)cast(void*)(entry); + //printf(" catchType = %p, ci = %p\n", catchType, ci); + if (_d_isbaseof(catchType, ci)) + return cast(int)TypeFilter; // found it + + if (!NextRecordPtr) + return 0; // catch not found + + ap = apn + NextRecordPtr; + } + assert(0); +} + +enum LsdaResult +{ + notFound, // ip was not found in the LSDA - an exception shouldn't have happened + foreign, // found a result we cannot handle + corrupt, // the tables are corrupt + noAction, // found, but no action needed (i.e. no cleanup nor handler) + cleanup, // cleanup found (i.e. finally or destructor) + handler, // handler found (i.e. a catch) +} From 7e99ae19bb8eff10d517b8677163610df829350f Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Wed, 30 Dec 2015 03:48:56 -0800 Subject: [PATCH 206/768] Dwarf EH: add _d_eh_swapContextDwarf --- src/core/thread.d | 48 +++++++++++++++++++++++++++++++++++++++++++++-- src/rt/dwarfeh.d | 15 +++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index d596862b72..c55540412e 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -118,6 +118,50 @@ private * is switched in for the first time. */ extern(C) void* _d_eh_swapContext(void* newContext) nothrow; + + version (DigitalMars) + { + version (Windows) + alias _d_eh_swapContext swapContext; + else + { + extern(C) void* _d_eh_swapContextDwarf(void* newContext) nothrow; + + void* swapContext(void* newContext) nothrow + { + /* Detect at runtime which scheme is being used. + * Eventually, determine it statically. + */ + static int which = 0; + final switch (which) + { + case 0: + { + assert(newContext == null); + auto p = _d_eh_swapContext(newContext); + auto pdwarf = _d_eh_swapContextDwarf(newContext); + if (p) + { + which = 1; + return p; + } + else if (pdwarf) + { + which = 2; + return pdwarf; + } + return null; + } + case 1: + return _d_eh_swapContext(newContext); + case 2: + return _d_eh_swapContextDwarf(newContext); + } + } + } + } + else + alias _d_eh_swapContext swapContext; } @@ -1461,7 +1505,7 @@ private: } body { - m_curr.ehContext = _d_eh_swapContext(c.ehContext); + m_curr.ehContext = swapContext(c.ehContext); c.within = m_curr; m_curr = c; } @@ -1476,7 +1520,7 @@ private: { Context* c = m_curr; m_curr = c.within; - c.ehContext = _d_eh_swapContext(m_curr.ehContext); + c.ehContext = swapContext(m_curr.ehContext); c.within = null; } diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d index c9b63275ca..c348fd56e1 100644 --- a/src/rt/dwarfeh.d +++ b/src/rt/dwarfeh.d @@ -150,6 +150,21 @@ extern(C) Throwable __dmd_begin_catch(_Unwind_Exception* exceptionObject) return o; } +/**************************************** + * Called when fibers switch contexts. + * Params: + * newContext = stack to switch to + * Returns: + * previous value of stack + */ +extern(C) void* _d_eh_swapContextDwarf(void* newContext) nothrow +{ + auto old = ExceptionHeader.stack; + ExceptionHeader.stack = cast(ExceptionHeader*)newContext; + return old; +} + + /********************* * Called by D code to throw an exception via * --- From c4f6acf74a092ff9823598970a0ca696ce17d74e Mon Sep 17 00:00:00 2001 From: tcak Date: Wed, 30 Dec 2015 20:34:56 +0200 Subject: [PATCH 207/768] Example code to start thread with an anonymous function --- src/core/thread.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/thread.d b/src/core/thread.d index f7ef8f7021..e7d37534a5 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1808,6 +1808,8 @@ unittest // create and start instances of each type auto derived = new DerivedThread().start(); auto composed = new Thread(&threadFunc).start(); + + new Thread( (){ writeln("Hello world!"); } ).start(); } unittest From 0fd2b68f20028cc2e34140e513c0a04ae44f5845 Mon Sep 17 00:00:00 2001 From: tcak Date: Thu, 31 Dec 2015 05:30:12 +0200 Subject: [PATCH 208/768] Parentheses and redundant spaces are removed. --- src/core/thread.d | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index e7d37534a5..4eedcd7f97 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1808,8 +1808,7 @@ unittest // create and start instances of each type auto derived = new DerivedThread().start(); auto composed = new Thread(&threadFunc).start(); - - new Thread( (){ writeln("Hello world!"); } ).start(); + new Thread({ writeln("Hello world!"); }).start(); } unittest From 9868cd4d53683d9d943fa3db60bc23dc2f4b9de8 Mon Sep 17 00:00:00 2001 From: tcak Date: Thu, 31 Dec 2015 13:10:15 +0200 Subject: [PATCH 209/768] writeln is removed std.stdio wasn't imported in the previous commit. writeln is removed an a comment is added instead. --- src/core/thread.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/thread.d b/src/core/thread.d index 4eedcd7f97..96b1cdcaef 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1808,7 +1808,9 @@ unittest // create and start instances of each type auto derived = new DerivedThread().start(); auto composed = new Thread(&threadFunc).start(); - new Thread({ writeln("Hello world!"); }).start(); + new Thread({ + // Codes to run in the newly created thread. + }).start(); } unittest From 589e5c298623033e2a291f9214252e50845e6908 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 31 Dec 2015 08:11:37 -0800 Subject: [PATCH 210/768] add indication of which test is being started --- src/test_runner.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test_runner.d b/src/test_runner.d index 46584d5fe4..54950d643a 100644 --- a/src/test_runner.d +++ b/src/test_runner.d @@ -29,6 +29,8 @@ bool tester() try { immutable t0 = MonoTime.currTime; + printf("STARTING %.*s\n", + cast(uint)name.length, name.ptr); fp(); printf("%.3fs PASS %.*s %.*s\n", (MonoTime.currTime - t0).total!"msecs" / 1000.0, From 20dfddc88e72e9d4019f514c0bf48f0269fee00f Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 31 Dec 2015 04:10:08 -0800 Subject: [PATCH 211/768] Dwarf EH: terminate instead of assert --- src/rt/dwarfeh.d | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d index c348fd56e1..655a70f56a 100644 --- a/src/rt/dwarfeh.d +++ b/src/rt/dwarfeh.d @@ -71,7 +71,7 @@ struct ExceptionHeader { eh = cast(ExceptionHeader*)core.stdc.stdlib.calloc(ExceptionHeader.sizeof, 1); if (!eh) - assert(0); // out of memory while throwing - not much else can be done + terminate(__LINE__); // out of memory while throwing - not much else can be done } eh.object = o; eh.exception_object.exception_class = dmdExceptionClass; @@ -144,7 +144,7 @@ extern(C) Throwable __dmd_begin_catch(_Unwind_Exception* exceptionObject) // Pop off of chain if (eh != ExceptionHeader.pop()) - assert(0); // eh should have been at top of stack + terminate(__LINE__); // eh should have been at top of stack _Unwind_DeleteException(&eh.exception_object); // done with eh return o; @@ -192,7 +192,8 @@ extern(C) void _d_throwdwarf(Throwable o) case _URC_FATAL_PHASE1_ERROR: // unknown error code case _URC_FATAL_PHASE2_ERROR: // probably corruption default: // uh-oh - assert(0); // C++ calls terminate() instead + terminate(__LINE__); // C++ calls terminate() instead + break; case _URC_FOREIGN_EXCEPTION_CAUGHT: case _URC_NO_REASON: @@ -220,22 +221,26 @@ extern(C) void _d_throwdwarf(Throwable o) * by a top-level try/catch. */ fprintf(stderr, "uncaught exception\n"); - assert(0); // should never happen + terminate(__LINE__); // should never happen + assert(0); case _URC_FATAL_PHASE1_ERROR: /* Unexpected error, likely some sort of corruption. * In C++, terminate() would be called. */ - assert(0); // should never happen + terminate(__LINE__); // should never happen + assert(0); case _URC_FATAL_PHASE2_ERROR: /* Unexpected error. Program is in an unknown state. * In C++, terminate() would be called. */ - assert(0); // should never happen + terminate(__LINE__); // should never happen + assert(0); default: - assert(0); // should never happen + terminate(__LINE__); // should never happen + assert(0); } } @@ -308,13 +313,16 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti { case LsdaResult.notFound: fprintf(stderr, "not found\n"); + terminate(__LINE__); assert(0); case LsdaResult.foreign: + terminate(__LINE__); assert(0); case LsdaResult.corrupt: fprintf(stderr, "LSDA is corrupt\n"); + terminate(__LINE__); assert(0); case LsdaResult.noAction: @@ -564,7 +572,7 @@ LsdaResult scanLSDA(const(ubyte)* lsda, _Unwind_Ptr ip, _Unwind_Exception_Class else goto case DW_EH_PE_udata4; default: - assert(0); + terminate(__LINE__); } return value; } @@ -753,6 +761,7 @@ int actionTableLookup(ClassInfo catchType, uint actionRecordPtr, const(ubyte)* p ap = apn + NextRecordPtr; } + terminate(__LINE__); assert(0); } @@ -765,3 +774,9 @@ enum LsdaResult cleanup, // cleanup found (i.e. finally or destructor) handler, // handler found (i.e. a catch) } + +void terminate(uint line) @nogc +{ + printf("dwarfeh(%u) fatal error\n", line); + abort(); // unceremoniously exit +} From e5137db19710eaeaee68e4d0e2f419e4e3b3113f Mon Sep 17 00:00:00 2001 From: tsbockman Date: Mon, 28 Dec 2015 04:59:33 -0800 Subject: [PATCH 212/768] Added bsf(ulong), bsr(ulong), and popcnt(ulong). Fixed small error in _popcnt() docs. --- src/core/bitop.d | 83 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/src/core/bitop.d b/src/core/bitop.d index 719b97cb8d..5d085a9246 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -23,6 +23,31 @@ version (X86_64) else version (X86) version = AnyX86; +// Use to implement 64-bit bitops on 32-bit arch. +private union Split64 +{ + ulong u64; + struct + { + version(LittleEndian) + { + uint lo; + uint hi; + } + else + { + uint hi; + uint lo; + } + } +} + +unittest +{ + const s = Split64(1); + assert((s.lo == 1) && (s.hi == 0)); +} + /** * Scans the bits in v starting with bit 0, looking * for the first set bit. @@ -32,12 +57,31 @@ else version (X86) */ int bsf(size_t v) pure; +/// ditto +int bsf(ulong v) pure +{ + static if(size_t.sizeof == ulong.sizeof) + return bsf(cast(size_t)v); + else + static if(size_t.sizeof == uint.sizeof) + { + const sv = Split64(v); + return (sv.lo == 0)? + bsf(sv.hi) + 32 : + bsf(sv.lo); + } + else + static assert(false); +} + /// unittest { assert(bsf(0x21) == 0); + assert(bsf(ulong.max << 39) == 39); } + /** * Scans the bits in v from the most significant bit * to the least significant bit, looking @@ -48,10 +92,28 @@ unittest */ int bsr(size_t v) pure; +/// ditto +int bsr(ulong v) pure +{ + static if(size_t.sizeof == ulong.sizeof) + return bsr(cast(size_t)v); + else + static if(size_t.sizeof == uint.sizeof) + { + const sv = Split64(v); + return (sv.hi == 0)? + bsr(sv.lo) : + bsr(sv.hi) + 32; + } + else + static assert(false); +} + /// unittest { assert(bsr(0x21) == 5); + assert(bsr((ulong.max >> 15) - 1) == 48); } /** @@ -197,7 +259,7 @@ version (DigitalMars) version (AnyX86) @system // not pure version (DigitalMars) version (AnyX86) { /** - * Calculates the number of set bits in a 32-bit integer + * Calculates the number of set bits in an integer * using the X86 SSE4 POPCNT instruction. * POPCNT is not available on all X86 CPUs. */ @@ -302,7 +364,7 @@ void volatileStore(ulong * ptr, ulong value); /// ditto /** - * Calculates the number of set bits in a 32-bit integer. + * Calculates the number of set bits in an integer. */ int popcnt( uint x ) pure { @@ -347,6 +409,23 @@ unittest assert( popcnt( 0x7777_7777 ) == 24 ); } +/// ditto +int popcnt(ulong x) pure +{ + // TODO: How to detect when _popcnt() is safe to use? + const sx = Split64(x); + return popcnt(sx.lo) + popcnt(sx.hi); +} + +unittest +{ + assert(popcnt(0uL) == 0); + assert(popcnt(1uL) == 1); + assert(popcnt((1uL << 32) - 1) == 32); + assert(popcnt(0x48_65_6C_6C_6F_3F_21_00uL) == 28); + assert(popcnt(ulong.max) == 64); +} + /** * Reverses the order of bits in a 32-bit integer. From 67541346ff5109c91cf1a22ad2e0b52818020954 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 3 Jan 2016 15:04:06 +0100 Subject: [PATCH 213/768] merge stable into master --- changelog.dd | 5 ++--- src/core/time.d | 45 +++++++++++++++++++++++---------------------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/changelog.dd b/changelog.dd index 300c24e803..712ac99454 100644 --- a/changelog.dd +++ b/changelog.dd @@ -1,6 +1,6 @@ Ddoc -$(COMMENT Pending changelog for 2.069.2. +$(COMMENT Pending changelog for 2.067.0. ) $(BUGSTITLE Library Changes, @@ -8,7 +8,6 @@ $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 TypeInfo.initializer, `TypeInfo.init` has been renamed to `TypeInfo.initializer`.)) ) - ) $(BUGSTITLE Library Changes, @@ -29,9 +28,9 @@ $(LI $(LNAME2 TypeInfo.initializer, `TypeInfo.init` has been renamed to 2.074.0 release, so that the type property `init` takes over. ) ) - ) + Macros: TITLE=Change Log diff --git a/src/core/time.d b/src/core/time.d index f6ebbd1356..2494310401 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -2633,18 +2633,14 @@ extern(C) void _d_initMonoTime() } else version(OSX) { - mach_timebase_info_data_t info; - if(mach_timebase_info(&info) == 0) + immutable long ticksPerSecond = machTicksPerSecond(); + foreach(i, typeStr; __traits(allMembers, ClockType)) { - long ticksPerSecond = 1_000_000_000L * info.numer / info.denom; - foreach(i, typeStr; __traits(allMembers, ClockType)) - { - // ensure we are only writing immutable data once - if(tps[i] != 0) - // should only be called once - assert(0); - tps[i] = ticksPerSecond; - } + // ensure we are only writing immutable data once + if(tps[i] != 0) + // should only be called once + assert(0); + tps[i] = ticksPerSecond; } } else version(Posix) @@ -2944,17 +2940,7 @@ struct TickDuration } else version(OSX) { - static if(is(typeof(mach_absolute_time))) - { - mach_timebase_info_data_t info; - - if(mach_timebase_info(&info)) - ticksPerSec = 0; - else - ticksPerSec = (1_000_000_000L * info.denom) / info.numer; - } - else - ticksPerSec = 1_000_000; + ticksPerSec = machTicksPerSecond(); } else version(Posix) { @@ -4683,6 +4669,21 @@ unittest static assert(!__traits(compiles, nextLargerTimeUnits!"years")); } +version(OSX) +long machTicksPerSecond() +{ + // Be optimistic that ticksPerSecond (1e9*denom/numer) is integral. So far + // so good on Darwin based platforms OS X, iOS. + import core.internal.abort : abort; + mach_timebase_info_data_t info; + if(mach_timebase_info(&info) != 0) + abort("Failed in mach_timebase_info()."); + + long scaledDenom = 1_000_000_000L * info.denom; + if(scaledDenom % info.numer != 0) + abort("Non integral ticksPerSecond from mach_timebase_info."); + return scaledDenom / info.numer; +} /+ Local version of abs, since std.math.abs is in Phobos, not druntime. From 3df127effffd362089e7ee8aae2a5cdbfca251cd Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Mon, 4 Jan 2016 09:49:52 -0500 Subject: [PATCH 214/768] Add clear method to associative arrays to remove all elements. --- changelog.dd | 12 +++++++++++- src/object.d | 11 +++++++++++ src/rt/aaA.d | 54 +++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/changelog.dd b/changelog.dd index 712ac99454..3860b2ab76 100644 --- a/changelog.dd +++ b/changelog.dd @@ -7,7 +7,8 @@ $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 TypeInfo.initializer, `TypeInfo.init` has been renamed to `TypeInfo.initializer`.)) -) +$(LI $(RELATIVE_LINK2 AA.clear, Associative array `clear` method to remove all + elements has been added.)) ) $(BUGSTITLE Library Changes, @@ -28,6 +29,15 @@ $(LI $(LNAME2 TypeInfo.initializer, `TypeInfo.init` has been renamed to 2.074.0 release, so that the type property `init` takes over. ) ) +$(LI $(LNAME2 AA.clear, Associative array `clear` method to remove all + elements has been added.) + + $(P One can now use `aa.clear()` to remove all elements from an + associative array. This allows one to remove all elements from all + references to the same array (setting to `null` just cleared the + reference, not removed the elements). + ) +) ) diff --git a/src/object.d b/src/object.d index f0871015cb..fff68932b8 100644 --- a/src/object.d +++ b/src/object.d @@ -1857,6 +1857,7 @@ extern (C) inout(void)[] _aaValues(inout void* p, in size_t keysize, in size_t valuesize, const TypeInfo tiValArray) pure nothrow; inout(void)[] _aaKeys(inout void* p, in size_t keysize, const TypeInfo tiKeyArray) pure nothrow; void* _aaRehash(void** pp, in TypeInfo keyti) pure nothrow; + void _aaClear(void* p) pure nothrow; // alias _dg_t = extern(D) int delegate(void*); // int _aaApply(void* aa, size_t keysize, _dg_t dg); @@ -1890,6 +1891,16 @@ void* aaLiteral(Key, Value)(Key[] keys, Value[] values) @trusted pure alias AssociativeArray(Key, Value) = Value[Key]; +void clear(T : Value[Key], Value, Key)(T aa) +{ + _aaClear(*cast(void **)&aa); +} + +void clear(T : Value[Key], Value, Key)(T* aa) +{ + _aaClear(*cast(void **)aa); +} + T rehash(T : Value[Key], Value, Key)(T aa) { _aaRehash(cast(void**)&aa, typeid(Value[Key])); diff --git a/src/rt/aaA.d b/src/rt/aaA.d index db34b8dfba..dfc223d6d9 100644 --- a/src/rt/aaA.d +++ b/src/rt/aaA.d @@ -142,16 +142,36 @@ private: { auto obuckets = buckets; buckets = allocBuckets(ndim); + uint newFirstUsed = cast(uint)ndim; - foreach (ref b; obuckets) + foreach (ref b; obuckets[firstUsed..$]) if (b.filled) - *findSlotInsert(b.hash) = b; + { + auto x = findSlotInsert(b.hash); + newFirstUsed = min(newFirstUsed, cast(uint)(x - buckets.ptr)); + *x = b; + } - firstUsed = 0; + firstUsed = newFirstUsed; used -= deleted; deleted = 0; GC.free(obuckets.ptr); // safe to free b/c impossible to reference } + + void clear() pure nothrow + { + foreach(ref b; buckets[firstUsed..$]) + { + if(b.filled) + { + b.hash = HASH_DELETED; + b.entry = null; + } + } + deleted = used; + firstUsed = cast(uint)dim; + resize(INIT_NUM_BUCKETS); + } } //============================================================================== @@ -425,6 +445,15 @@ extern (C) bool _aaDelX(AA aa, in TypeInfo keyti, in void* pkey) return false; } +/// Remove all elements from AA. +extern (C) void _aaClear(AA aa) pure nothrow +{ + if(!aa.empty) + { + aa.impl.clear(); + } +} + /// Rehash AA extern (C) void* _aaRehash(AA* paa, in TypeInfo keyti) pure nothrow { @@ -932,3 +961,22 @@ unittest GC.runFinalizers((cast(char*)(&entryDtor))[0 .. 1]); assert(T.dtor == 6 && T.postblit == 2); } + +// for aa.clear +pure nothrow unittest +{ + int[int] aa; + assert(aa.length == 0); + foreach(i; 0..100) + aa[i] = i * 2; + assert(aa.length == 100); + auto aa2 = aa; + assert(aa2.length == 100); + aa.clear(); + assert(aa.length == 0); + assert(aa2.length == 0); + + aa2[5] = 6; + assert(aa.length == 1); + assert(aa[5] == 6); +} From de7d7ae35a3dd4632f1bc5267e881d8e746bbccf Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sat, 31 Oct 2015 21:39:51 +0100 Subject: [PATCH 215/768] Fix core.sys.posix.unistd for OpenSolaris. - Add F_ULOCK/F_LOCK/F_TLOCK/F_TEST - Remove duplicate definitions of lockf(), pread(), pwrite(), truncate() --- src/core/sys/posix/unistd.d | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/core/sys/posix/unistd.d b/src/core/sys/posix/unistd.d index 7d00da1bef..98e4a6e9cc 100644 --- a/src/core/sys/posix/unistd.d +++ b/src/core/sys/posix/unistd.d @@ -826,6 +826,11 @@ else version( Solaris ) enum W_OK = 2; enum X_OK = 1; + enum F_ULOCK = 0; + enum F_LOCK = 1; + enum F_TLOCK = 2; + enum F_TEST = 3; + enum { // large file compilation environment configuration @@ -1283,16 +1288,12 @@ else version( Solaris ) pid_t getsid(pid_t); char* getwd(char*); // LEGACY int lchown(in char*, uid_t, gid_t); - int lockf(int, int, off_t); int nice(int); - ssize_t pread(int, void*, size_t, off_t); - ssize_t pwrite(int, in void*, size_t, off_t); pid_t setpgrp(); int setregid(gid_t, gid_t); int setreuid(uid_t, uid_t); void swab(in void*, void*, ssize_t); void sync(); - int truncate(in char*, off_t); useconds_t ualarm(useconds_t, useconds_t); int usleep(useconds_t); pid_t vfork(); From 9ef7c08f8251cd5f9d09ee65c66d07a6845696b9 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 10 Jan 2016 09:54:38 -0800 Subject: [PATCH 216/768] add class Object.__cpp_type_info --- src/object.d | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/object.d b/src/object.d index f0871015cb..65b2f47a1f 100644 --- a/src/object.d +++ b/src/object.d @@ -1846,6 +1846,13 @@ unittest } } +/* Used in Exception Handling LSDA tables to 'wrap' C++ type info + * so it can be distinguished from D TypeInfo + */ +class __cpp_type_info_ptr +{ + void* ptr; // opaque pointer to C++ RTTI type info +} extern (C) { From 97d3999a4f3ab3c8409060bc6bb381fcc2a43c54 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 10 Jan 2016 23:43:36 +0100 Subject: [PATCH 217/768] fix Issue 15430 - amdMmx hangs up --- src/core/cpuid.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/cpuid.d b/src/core/cpuid.d index bc7dfd7533..304598b365 100644 --- a/src/core/cpuid.d +++ b/src/core/cpuid.d @@ -179,7 +179,7 @@ public: /// Is AMD 3DNOW Ext supported? bool amd3dnowExt() {return _amd3dnowExt;} /// Are AMD extensions to MMX supported? - bool amdMmx() {return amdMmx;} + bool amdMmx() {return _amdMmx;} /// Is fxsave/fxrstor supported? bool hasFxsr() {return _hasFxsr;} /// Is cmov supported? From 14dd5974d32277dadd3b95f8149d9209505fcd26 Mon Sep 17 00:00:00 2001 From: tsbockman Date: Mon, 11 Jan 2016 23:31:23 -0800 Subject: [PATCH 218/768] Optimized `popcnt()`. 1-50x faster depending on architecture and compiler. `popcnt()` moved next to `_popcnt()` where it belongs, to make the docs cleaner. --- src/core/bitop.d | 199 ++++++++++++++++++++++++++++++----------------- 1 file changed, 127 insertions(+), 72 deletions(-) diff --git a/src/core/bitop.d b/src/core/bitop.d index 5d085a9246..2ec0397542 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -60,10 +60,9 @@ int bsf(size_t v) pure; /// ditto int bsf(ulong v) pure { - static if(size_t.sizeof == ulong.sizeof) - return bsf(cast(size_t)v); - else - static if(size_t.sizeof == uint.sizeof) + static if (size_t.sizeof == ulong.sizeof) + return bsf(cast(size_t) v); + else static if (size_t.sizeof == uint.sizeof) { const sv = Split64(v); return (sv.lo == 0)? @@ -95,10 +94,9 @@ int bsr(size_t v) pure; /// ditto int bsr(ulong v) pure { - static if(size_t.sizeof == ulong.sizeof) - return bsr(cast(size_t)v); - else - static if(size_t.sizeof == uint.sizeof) + static if (size_t.sizeof == ulong.sizeof) + return bsr(cast(size_t) v); + else static if (size_t.sizeof == uint.sizeof) { const sv = Split64(v); return (sv.hi == 0)? @@ -256,6 +254,126 @@ version (DigitalMars) version (AnyX86) @system // not pure uint outpl(uint port_address, uint value); } + +/** + * Calculates the number of set bits in an integer. + */ +int popcnt(uint x) pure +{ + // Select the fastest method depending on the compiler and CPU architecture + version(LDC) + { + return _popcnt(x); + } + else + { + version(DigitalMars) + { + static if (is(typeof(_popcnt(uint.max)))) + { + import core.cpuid; + if (hasPopcnt) + return _popcnt(x); + } + } + + return soft_popcnt!uint(x); + } +} + +unittest +{ + assert( popcnt( 0 ) == 0 ); + assert( popcnt( 7 ) == 3 ); + assert( popcnt( 0xAA )== 4 ); + assert( popcnt( 0x8421_1248 ) == 8 ); + assert( popcnt( 0xFFFF_FFFF ) == 32 ); + assert( popcnt( 0xCCCC_CCCC ) == 16 ); + assert( popcnt( 0x7777_7777 ) == 24 ); +} + +/// ditto +int popcnt(ulong x) pure +{ + // Select the fastest method depending on the compiler and CPU architecture + version(LDC) + { + return _popcnt(x); + } + else + { + import core.cpuid; + + static if (size_t.sizeof == uint.sizeof) + { + const sx = Split64(x); + version(DigitalMars) + { + static if (is(typeof(_popcnt(uint.max)))) + { + if (hasPopcnt) + return _popcnt(sx.lo) + _popcnt(sx.hi); + } + } + + return soft_popcnt!uint(sx.lo) + soft_popcnt!uint(sx.hi); + } + else static if (size_t.sizeof == ulong.sizeof) + { + version(DigitalMars) + { + static if (is(typeof(_popcnt(ulong.max)))) + { + if (hasPopcnt) + return _popcnt(x); + } + } + + return soft_popcnt!ulong(x); + } + else + static assert(false); + } +} + +unittest +{ + assert(popcnt(0uL) == 0); + assert(popcnt(1uL) == 1); + assert(popcnt((1uL << 32) - 1) == 32); + assert(popcnt(0x48_65_6C_6C_6F_3F_21_00uL) == 28); + assert(popcnt(ulong.max) == 64); +} + +private int soft_popcnt(N)(N x) pure + if (is(N == uint) || is(N == ulong)) +{ + // Avoid branches, and the potential for cache misses which + // could be incurred with a table lookup. + + // We need to mask alternate bits to prevent the + // sum from overflowing. + // add neighbouring bits. Each bit is 0 or 1. + enum mask1 = cast(N) 0x5555_5555_5555_5555L; + x = x - ((x>>1) & mask1); + // now each two bits of x is a number 00,01 or 10. + // now add neighbouring pairs + enum mask2a = cast(N) 0xCCCC_CCCC_CCCC_CCCCL; + enum mask2b = cast(N) 0x3333_3333_3333_3333L; + x = ((x & mask2a)>>2) + (x & mask2b); + // now each nibble holds 0000-0100. Adding them won't + // overflow any more, so we don't need to mask any more + + enum mask4 = cast(N) 0x0F0F_0F0F_0F0F_0F0FL; + x = (x + (x >> 4)) & mask4; + + enum shiftbits = is(N == uint)? 24 : 56; + enum maskMul = cast(N) 0x0101_0101_0101_0101L; + x = (x * maskMul) >> shiftbits; + + return cast(int) x; +} + version (DigitalMars) version (AnyX86) { /** @@ -309,6 +427,7 @@ version (DigitalMars) version (AnyX86) } } + /************************************* * Read/write value from/to the memory location indicated by ptr. * @@ -363,70 +482,6 @@ void volatileStore(ulong * ptr, ulong value); /// ditto } -/** - * Calculates the number of set bits in an integer. - */ -int popcnt( uint x ) pure -{ - // Avoid branches, and the potential for cache misses which - // could be incurred with a table lookup. - - // We need to mask alternate bits to prevent the - // sum from overflowing. - // add neighbouring bits. Each bit is 0 or 1. - x = x - ((x>>1) & 0x5555_5555); - // now each two bits of x is a number 00,01 or 10. - // now add neighbouring pairs - x = ((x&0xCCCC_CCCC)>>2) + (x&0x3333_3333); - // now each nibble holds 0000-0100. Adding them won't - // overflow any more, so we don't need to mask any more - - // Now add the nibbles, then the bytes, then the words - // We still need to mask to prevent double-counting. - // Note that if we used a rotate instead of a shift, we - // wouldn't need the masks, and could just divide the sum - // by 8 to account for the double-counting. - // On some CPUs, it may be faster to perform a multiply. - - x += (x>>4); - x &= 0x0F0F_0F0F; - x += (x>>8); - x &= 0x00FF_00FF; - x += (x>>16); - x &= 0xFFFF; - return x; -} - - -unittest -{ - assert( popcnt( 0 ) == 0 ); - assert( popcnt( 7 ) == 3 ); - assert( popcnt( 0xAA )== 4 ); - assert( popcnt( 0x8421_1248 ) == 8 ); - assert( popcnt( 0xFFFF_FFFF ) == 32 ); - assert( popcnt( 0xCCCC_CCCC ) == 16 ); - assert( popcnt( 0x7777_7777 ) == 24 ); -} - -/// ditto -int popcnt(ulong x) pure -{ - // TODO: How to detect when _popcnt() is safe to use? - const sx = Split64(x); - return popcnt(sx.lo) + popcnt(sx.hi); -} - -unittest -{ - assert(popcnt(0uL) == 0); - assert(popcnt(1uL) == 1); - assert(popcnt((1uL << 32) - 1) == 32); - assert(popcnt(0x48_65_6C_6C_6F_3F_21_00uL) == 28); - assert(popcnt(ulong.max) == 64); -} - - /** * Reverses the order of bits in a 32-bit integer. */ From c101e685f41a74daafe909645d96c690523adc79 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 13 Jan 2016 21:12:46 +0100 Subject: [PATCH 219/768] Merge pull request #1404 from adamdruppe/timerfd_header forgot to add timerfd to the makefile --- mak/COPY | 2 ++ mak/MANIFEST | 1 + mak/SRCS | 2 ++ 3 files changed, 5 insertions(+) diff --git a/mak/COPY b/mak/COPY index 5efd3b6450..f42b096c49 100644 --- a/mak/COPY +++ b/mak/COPY @@ -66,8 +66,10 @@ COPY=\ $(IMPDIR)\core\sys\linux\execinfo.d \ $(IMPDIR)\core\sys\linux\fcntl.d \ $(IMPDIR)\core\sys\linux\link.d \ + $(IMPDIR)\core\sys\linux\stdio.d \ $(IMPDIR)\core\sys\linux\termios.d \ $(IMPDIR)\core\sys\linux\time.d \ + $(IMPDIR)\core\sys\linux\timerfd.d \ $(IMPDIR)\core\sys\linux\tipc.d \ $(IMPDIR)\core\sys\linux\unistd.d \ \ diff --git a/mak/MANIFEST b/mak/MANIFEST index 2e5d987c13..0471c3eb61 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -96,6 +96,7 @@ MANIFEST=\ src\core\sys\linux\stdio.d \ src\core\sys\linux\termios.d \ src\core\sys\linux\time.d \ + src\core\sys\linux\timerfd.d \ src\core\sys\linux\tipc.d \ src\core\sys\linux\unistd.d \ \ diff --git a/mak/SRCS b/mak/SRCS index 83b21378d1..74a0534a55 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -50,7 +50,9 @@ SRCS=\ src\core\sys\freebsd\execinfo.d \ src\core\sys\freebsd\sys\event.d \ \ + src\core\sys\linux\epoll.d \ src\core\sys\linux\stdio.d \ + src\core\sys\linux\timerfd.d \ src\core\sys\linux\tipc.d \ \ src\core\sys\posix\signal.d \ From d97ace393aa9f596ff428553fab1cf6181f58a44 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 13 Jan 2016 23:56:01 +0100 Subject: [PATCH 220/768] fixup broken windows build (#1404) --- mak/COPY | 1 - mak/SRCS | 2 -- win32.mak | 3 +++ win64.mak | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mak/COPY b/mak/COPY index f42b096c49..4f3f0a05b1 100644 --- a/mak/COPY +++ b/mak/COPY @@ -66,7 +66,6 @@ COPY=\ $(IMPDIR)\core\sys\linux\execinfo.d \ $(IMPDIR)\core\sys\linux\fcntl.d \ $(IMPDIR)\core\sys\linux\link.d \ - $(IMPDIR)\core\sys\linux\stdio.d \ $(IMPDIR)\core\sys\linux\termios.d \ $(IMPDIR)\core\sys\linux\time.d \ $(IMPDIR)\core\sys\linux\timerfd.d \ diff --git a/mak/SRCS b/mak/SRCS index 74a0534a55..83b21378d1 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -50,9 +50,7 @@ SRCS=\ src\core\sys\freebsd\execinfo.d \ src\core\sys\freebsd\sys\event.d \ \ - src\core\sys\linux\epoll.d \ src\core\sys\linux\stdio.d \ - src\core\sys\linux\timerfd.d \ src\core\sys\linux\tipc.d \ \ src\core\sys\posix\signal.d \ diff --git a/win32.mak b/win32.mak index bbd7e48376..a80f12f551 100644 --- a/win32.mak +++ b/win32.mak @@ -403,6 +403,9 @@ $(IMPDIR)\core\sys\linux\termios.d : src\core\sys\linux\termios.d $(IMPDIR)\core\sys\linux\time.d : src\core\sys\linux\time.d copy $** $@ +$(IMPDIR)\core\sys\linux\timerfd.d : src\core\sys\linux\timerfd.d + copy $** $@ + $(IMPDIR)\core\sys\linux\tipc.d : src\core\sys\linux\tipc.d copy $** $@ diff --git a/win64.mak b/win64.mak index 16e0ad8d35..cbcafeebba 100644 --- a/win64.mak +++ b/win64.mak @@ -411,6 +411,9 @@ $(IMPDIR)\core\sys\linux\termios.d : src\core\sys\linux\termios.d $(IMPDIR)\core\sys\linux\time.d : src\core\sys\linux\time.d copy $** $@ +$(IMPDIR)\core\sys\linux\timerfd.d : src\core\sys\linux\timerfd.d + copy $** $@ + $(IMPDIR)\core\sys\linux\tipc.d : src\core\sys\linux\tipc.d copy $** $@ From 502f7fbbacb6af2c04c6a144adfc3f3b2a9a5809 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 16 Jan 2016 18:44:47 +0100 Subject: [PATCH 221/768] fixup of #1449 - add unwind header as internal module --- mak/COPY | 2 -- mak/MANIFEST | 3 +-- mak/SRCS | 3 +-- src/rt/dwarfeh.d | 2 +- src/{core/sys => rt}/unwind.d | 6 ++---- win32.mak | 3 --- win64.mak | 3 --- 7 files changed, 5 insertions(+), 17 deletions(-) rename src/{core/sys => rt}/unwind.d (98%) diff --git a/mak/COPY b/mak/COPY index 5efd3b6450..4cc94c6f23 100644 --- a/mak/COPY +++ b/mak/COPY @@ -43,8 +43,6 @@ COPY=\ $(IMPDIR)\core\stdc\wchar_.d \ $(IMPDIR)\core\stdc\wctype.d \ \ - $(IMPDIR)\core\sys\unwind.d \ - \ $(IMPDIR)\core\sys\freebsd\dlfcn.d \ $(IMPDIR)\core\sys\freebsd\execinfo.d \ \ diff --git a/mak/MANIFEST b/mak/MANIFEST index 2e5d987c13..38cf2b7db7 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -70,8 +70,6 @@ MANIFEST=\ src\core\sync\rwmutex.d \ src\core\sync\semaphore.d \ \ - src\core\sys\unwind.d \ - \ src\core\sys\freebsd\dlfcn.d \ src\core\sys\freebsd\execinfo.d \ src\core\sys\freebsd\time.d \ @@ -410,6 +408,7 @@ MANIFEST=\ src\rt\tlsgc.d \ src\rt\trace.d \ src\rt\tracegc.d \ + src\rt\unwind.d \ \ src\rt\backtrace\dwarf.d \ src\rt\backtrace\elf.d \ diff --git a/mak/SRCS b/mak/SRCS index 83b21378d1..9a54c8c41b 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -45,8 +45,6 @@ SRCS=\ src\core\sync\rwmutex.d \ src\core\sync\semaphore.d \ \ - src\core\sys\unwind.d \ - \ src\core\sys\freebsd\execinfo.d \ src\core\sys\freebsd\sys\event.d \ \ @@ -289,6 +287,7 @@ SRCS=\ src\rt\tlsgc.d \ src\rt\trace.d \ src\rt\tracegc.d \ + src\rt\unwind.d \ \ src\rt\backtrace\dwarf.d \ src\rt\backtrace\elf.d \ diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d index 655a70f56a..3dfb216ded 100644 --- a/src/rt/dwarfeh.d +++ b/src/rt/dwarfeh.d @@ -13,7 +13,7 @@ module rt.dwarfeh; version (Posix): -import core.sys.unwind; +import rt.unwind; import core.stdc.stdio; import core.stdc.stdlib; diff --git a/src/core/sys/unwind.d b/src/rt/unwind.d similarity index 98% rename from src/core/sys/unwind.d rename to src/rt/unwind.d index 1b86e64985..6e7175afab 100644 --- a/src/core/sys/unwind.d +++ b/src/rt/unwind.d @@ -4,10 +4,10 @@ * * See_Also: * Itanium C++ ABI: Exception Handling ($Revision: 1.22 $) - * Source: $(DRUNTIMESRC src/core/sys/_unwind.d) + * Source: $(DRUNTIMESRC src/rt/_unwind.d) */ -module core.sys.unwind; +module rt.unwind; import core.stdc.stdint; @@ -124,5 +124,3 @@ _Unwind_Reason_Code _Unwind_SjLj_RaiseException(_Unwind_Exception*); _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind(_Unwind_Exception , _Unwind_Stop_Fn, void*); void _Unwind_SjLj_Resume(_Unwind_Exception*); _Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow(_Unwind_Exception*); - - diff --git a/win32.mak b/win32.mak index bbd7e48376..e0baf314d4 100644 --- a/win32.mak +++ b/win32.mak @@ -337,9 +337,6 @@ $(IMPDIR)\core\stdc\wchar_.d : src\core\stdc\wchar_.d $(IMPDIR)\core\stdc\wctype.d : src\core\stdc\wctype.d copy $** $@ -$(IMPDIR)\core\sys\unwind.d : src\core\sys\unwind.d - copy $** $@ - $(IMPDIR)\core\sys\freebsd\dlfcn.d : src\core\sys\freebsd\dlfcn.d copy $** $@ diff --git a/win64.mak b/win64.mak index 16e0ad8d35..934095b365 100644 --- a/win64.mak +++ b/win64.mak @@ -345,9 +345,6 @@ $(IMPDIR)\core\stdc\wchar_.d : src\core\stdc\wchar_.d $(IMPDIR)\core\stdc\wctype.d : src\core\stdc\wctype.d copy $** $@ -$(IMPDIR)\core\sys\unwind.d : src\core\sys\unwind.d - copy $** $@ - $(IMPDIR)\core\sys\freebsd\dlfcn.d : src\core\sys\freebsd\dlfcn.d copy $** $@ From 84d547f24084999a2e470d5c1861e6c1f5271848 Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Wed, 13 Jan 2016 19:17:05 -0500 Subject: [PATCH 222/768] Merge pull request #1466 from MartinNowak/fixup1404 fixup broken windows build (#1404) --- mak/COPY | 1 - mak/SRCS | 2 -- win32.mak | 3 +++ win64.mak | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mak/COPY b/mak/COPY index f42b096c49..4f3f0a05b1 100644 --- a/mak/COPY +++ b/mak/COPY @@ -66,7 +66,6 @@ COPY=\ $(IMPDIR)\core\sys\linux\execinfo.d \ $(IMPDIR)\core\sys\linux\fcntl.d \ $(IMPDIR)\core\sys\linux\link.d \ - $(IMPDIR)\core\sys\linux\stdio.d \ $(IMPDIR)\core\sys\linux\termios.d \ $(IMPDIR)\core\sys\linux\time.d \ $(IMPDIR)\core\sys\linux\timerfd.d \ diff --git a/mak/SRCS b/mak/SRCS index 74a0534a55..83b21378d1 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -50,9 +50,7 @@ SRCS=\ src\core\sys\freebsd\execinfo.d \ src\core\sys\freebsd\sys\event.d \ \ - src\core\sys\linux\epoll.d \ src\core\sys\linux\stdio.d \ - src\core\sys\linux\timerfd.d \ src\core\sys\linux\tipc.d \ \ src\core\sys\posix\signal.d \ diff --git a/win32.mak b/win32.mak index bbd7e48376..a80f12f551 100644 --- a/win32.mak +++ b/win32.mak @@ -403,6 +403,9 @@ $(IMPDIR)\core\sys\linux\termios.d : src\core\sys\linux\termios.d $(IMPDIR)\core\sys\linux\time.d : src\core\sys\linux\time.d copy $** $@ +$(IMPDIR)\core\sys\linux\timerfd.d : src\core\sys\linux\timerfd.d + copy $** $@ + $(IMPDIR)\core\sys\linux\tipc.d : src\core\sys\linux\tipc.d copy $** $@ diff --git a/win64.mak b/win64.mak index 16e0ad8d35..cbcafeebba 100644 --- a/win64.mak +++ b/win64.mak @@ -411,6 +411,9 @@ $(IMPDIR)\core\sys\linux\termios.d : src\core\sys\linux\termios.d $(IMPDIR)\core\sys\linux\time.d : src\core\sys\linux\time.d copy $** $@ +$(IMPDIR)\core\sys\linux\timerfd.d : src\core\sys\linux\timerfd.d + copy $** $@ + $(IMPDIR)\core\sys\linux\tipc.d : src\core\sys\linux\tipc.d copy $** $@ From 80e5059bed9235f2cdebea2ca5366898b36ed506 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 16 Jan 2016 19:24:04 +0100 Subject: [PATCH 223/768] Revert "Merge pull request #1445 from WalterBright/message" This reverts commit 74e5d87148028134e6927c31e99c293e0e2f91bd, reversing changes made to c36cc5180a3ad59b099dec91bf0055d2e6508753. --- src/object.d | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/object.d b/src/object.d index f0871015cb..f0eb55a044 100644 --- a/src/object.d +++ b/src/object.d @@ -1689,7 +1689,6 @@ class Throwable : Object sink("@"); sink(file); sink("("); sink(sizeToTempString(line, tmpBuff, 10)); sink(")"); - auto msg = message(); if (msg.length) { sink(": "); sink(msg); @@ -1710,19 +1709,6 @@ class Throwable : Object } } } - - /** - * Get the message describing the error. - * Base behavior is to return the `Throwable.msg` field. - * Override to return some other error message. - * - * Returns: - * message - */ - const(char)[] message() const - { - return msg; - } } From a2b449935967ed2bcfdbbf3f8f02864fb417d0eb Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Sun, 17 Jan 2016 15:29:28 -0500 Subject: [PATCH 224/768] Fix formatting --- src/object.d | 4 ++-- src/rt/aaA.d | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/object.d b/src/object.d index fff68932b8..309da0af0c 100644 --- a/src/object.d +++ b/src/object.d @@ -1893,12 +1893,12 @@ alias AssociativeArray(Key, Value) = Value[Key]; void clear(T : Value[Key], Value, Key)(T aa) { - _aaClear(*cast(void **)&aa); + _aaClear(*cast(void **) &aa); } void clear(T : Value[Key], Value, Key)(T* aa) { - _aaClear(*cast(void **)aa); + _aaClear(*cast(void **) aa); } T rehash(T : Value[Key], Value, Key)(T aa) diff --git a/src/rt/aaA.d b/src/rt/aaA.d index dfc223d6d9..29070417fa 100644 --- a/src/rt/aaA.d +++ b/src/rt/aaA.d @@ -142,13 +142,13 @@ private: { auto obuckets = buckets; buckets = allocBuckets(ndim); - uint newFirstUsed = cast(uint)ndim; + auto newFirstUsed = cast(uint) ndim; - foreach (ref b; obuckets[firstUsed..$]) + foreach (ref b; obuckets[firstUsed .. $]) if (b.filled) { auto x = findSlotInsert(b.hash); - newFirstUsed = min(newFirstUsed, cast(uint)(x - buckets.ptr)); + newFirstUsed = min(newFirstUsed, cast(uint) (x - buckets.ptr)); *x = b; } @@ -160,16 +160,16 @@ private: void clear() pure nothrow { - foreach(ref b; buckets[firstUsed..$]) + foreach (ref b; buckets[firstUsed .. $]) { - if(b.filled) + if (b.filled) { b.hash = HASH_DELETED; b.entry = null; } } deleted = used; - firstUsed = cast(uint)dim; + firstUsed = cast(uint) dim; resize(INIT_NUM_BUCKETS); } } @@ -448,7 +448,7 @@ extern (C) bool _aaDelX(AA aa, in TypeInfo keyti, in void* pkey) /// Remove all elements from AA. extern (C) void _aaClear(AA aa) pure nothrow { - if(!aa.empty) + if (!aa.empty) { aa.impl.clear(); } @@ -967,7 +967,7 @@ pure nothrow unittest { int[int] aa; assert(aa.length == 0); - foreach(i; 0..100) + foreach (i; 0 .. 100) aa[i] = i * 2; assert(aa.length == 100); auto aa2 = aa; From 07cf8f374a769cf401b781908f750787fde6b189 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 16 Jan 2016 19:29:22 -0800 Subject: [PATCH 225/768] Add catching C++ exception support to dwarfeh.d --- src/rt/dwarfeh.d | 237 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 180 insertions(+), 57 deletions(-) diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d index 655a70f56a..0ac178a747 100644 --- a/src/rt/dwarfeh.d +++ b/src/rt/dwarfeh.d @@ -1,7 +1,7 @@ -/* +/** * Exception handling support for Dwarf-style portable exceptions. * - * Copyright: Copyright 2015 D Language Foundation + * Copyright: Copyright (c) 2015-2016 by D Language Foundation * License: Distributed under the * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * (See accompanying file LICENSE) @@ -275,6 +275,7 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti _Unwind_Context* context) { //printf("__dmd_personality_v0(actions = x%x, eo = %p, context = %p)\n", cast(int)actions, exceptionObject, context); + //printf("exceptionClass = x%08lx\n", exceptionClass); if (ver != 1) return _URC_FATAL_PHASE1_ERROR; assert(context); @@ -283,7 +284,6 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti int handler; _Unwind_Ptr landing_pad; - ExceptionHeader *eh = ExceptionHeader.toExceptionHeader(exceptionObject); //for (auto ehx = eh; ehx; ehx = ehx.next) //printf(" eh: %p next=%014p lsda=%p '%.*s'\n", ehx, ehx.next, ehx.languageSpecificData, ehx.object.msg.length, ehx.object.msg.ptr); @@ -304,7 +304,7 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti auto result = scanLSDA(language_specific_data, ip - Start, exceptionClass, (actions & _UA_FORCE_UNWIND) != 0, // don't catch when forced unwinding (actions & _UA_SEARCH_PHASE) != 0, // search phase is looking for handlers - getClassInfo(eh), + exceptionObject, landing_pad, handler); landing_pad += Start; @@ -343,11 +343,13 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti assert(!(actions & _UA_FORCE_UNWIND)); if (actions & _UA_SEARCH_PHASE) { - assert(exceptionClass == dmdExceptionClass); // Can't do handlers for anything but D - eh.handler = handler; - eh.languageSpecificData = language_specific_data; - eh.landingPad = landing_pad; - + if (exceptionClass == dmdExceptionClass) + { + auto eh = ExceptionHeader.toExceptionHeader(exceptionObject); + eh.handler = handler; + eh.languageSpecificData = language_specific_data; + eh.landingPad = landing_pad; + } return _URC_HANDLER_FOUND; } break; @@ -357,50 +359,54 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti //printf( '%.*s' next = %p\n", eh.object.msg.length, eh.object.msg.ptr, eh.next); // Figure out what to do when there are multiple exceptions in flight - while (eh.next) + if (exceptionClass == dmdExceptionClass) { - ExceptionHeader* ehn = eh.next; - - // Don't combine when the exceptions are from different functions - if (language_specific_data != ehn.languageSpecificData) + auto eh = ExceptionHeader.toExceptionHeader(exceptionObject); + while (eh.next) { - //printf("break: %p %p\n", language_specific_data, ehn.languageSpecificData); - break; - } + ExceptionHeader* ehn = eh.next; - Error e = cast(Error)eh.object; - if (e !is null && (cast(Error)ehn.object) is null) - { - /* eh is an Error, ehn is not. Skip ehn. - */ - //printf("bypass\n"); - e.bypassedException = ehn.object; - } - else - { - //printf("chain\n"); - // Append eh's object to ehn's object chain - Throwable n = ehn.object; - while (n.next) - n = n.next; - n.next = eh.object; - - // Replace our exception object with in-flight one - eh.object = ehn.object; - if (ehn.handler != handler) + // Don't combine when the exceptions are from different functions + if (language_specific_data != ehn.languageSpecificData) { - handler = ehn.handler; + //printf("break: %p %p\n", language_specific_data, ehn.languageSpecificData); + break; + } - eh.handler = handler; - eh.languageSpecificData = language_specific_data; - eh.landingPad = landing_pad; + Error e = cast(Error)eh.object; + if (e !is null && !cast(Error)ehn.object) + { + /* eh is an Error, ehn is not. Skip ehn. + */ + //printf("bypass\n"); + e.bypassedException = ehn.object; } - } + else + { + //printf("chain\n"); + // Append eh's object to ehn's object chain + Throwable n = ehn.object; + while (n.next) + n = n.next; + n.next = eh.object; + + // Replace our exception object with in-flight one + eh.object = ehn.object; + if (ehn.handler != handler) + { + handler = ehn.handler; - // Remove ehn from threaded chain - eh.next = ehn.next; - //printf("delete %p\n", ehn); - _Unwind_DeleteException(&ehn.exception_object); // discard ehn + eh.handler = handler; + eh.languageSpecificData = language_specific_data; + eh.landingPad = landing_pad; + } + } + + // Remove ehn from threaded chain + eh.next = ehn.next; + //printf("delete %p\n", ehn); + _Unwind_DeleteException(&ehn.exception_object); // discard ehn + } } // Set up registers and jump to cleanup or handler @@ -417,12 +423,13 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti * Look at the chain of inflight exceptions and pick the class type that'll * be looked for in catch clauses. * Params: - * eh = ExceptionHeader of unwinding exception + * exceptionObject = language specific exception information * Returns: * class type to look for */ -ClassInfo getClassInfo(ExceptionHeader* eh) +ClassInfo getClassInfo(_Unwind_Exception* exceptionObject) { + ExceptionHeader* eh = ExceptionHeader.toExceptionHeader(exceptionObject); Throwable ehobject = eh.object; //printf("start: %p '%.*s'\n", ehobject, ehobject.classinfo.info.name.length, ehobject.classinfo.info.name.ptr); for (ExceptionHeader* ehn = eh.next; ehn; ehn = ehn.next) @@ -436,7 +443,6 @@ ClassInfo getClassInfo(ExceptionHeader* eh) return ehobject.classinfo; } - /****************************** * Decode Unsigned LEB128. * Params: @@ -533,7 +539,7 @@ enum * exceptionClass = which language threw the exception * cleanupsOnly = only look for cleanups * preferHandler = if a handler encloses a cleanup, prefer the handler - * catchType = type of thrown object + * exceptionObject = language specific exception information * landingPad = set to landing pad * handler = set to index of which catch clause was matched * Returns: @@ -547,7 +553,7 @@ enum LsdaResult scanLSDA(const(ubyte)* lsda, _Unwind_Ptr ip, _Unwind_Exception_Class exceptionClass, bool cleanupsOnly, bool preferHandler, - ClassInfo catchType, + _Unwind_Exception* exceptionObject, out _Unwind_Ptr landingPad, out int handler) { auto p = lsda; @@ -637,7 +643,7 @@ LsdaResult scanLSDA(const(ubyte)* lsda, _Unwind_Ptr ip, _Unwind_Exception_Class if (cleanupsOnly) continue; // ignore catch - auto h = actionTableLookup(catchType, cast(uint)ActionRecordPtr, pActionTable, tt, TType); + auto h = actionTableLookup(exceptionObject, cast(uint)ActionRecordPtr, pActionTable, tt, TType, exceptionClass); if (h < 0) { fprintf(stderr, "negative handler\n"); @@ -679,23 +685,30 @@ LsdaResult scanLSDA(const(ubyte)* lsda, _Unwind_Ptr ip, _Unwind_Exception_Class /******************************************** * Look up classType in Action Table. * Params: - * classType = type to loop up in Action Table + * exceptionObject = language specific exception information * actionRecordPtr = starting index in Action Table + 1 * pActionTable = pointer to start of Action Table * tt = pointer past end of Type Table * TType = encoding of entries in Type Table + * exceptionClass = which language threw the exception * Returns: * >=1 means the handler index of the classType * 0 means classType is not in the Action Table * <0 means corrupt */ -int actionTableLookup(ClassInfo catchType, uint actionRecordPtr, const(ubyte)* pActionTable, - const(ubyte)* tt, ubyte TType) +int actionTableLookup(_Unwind_Exception* exceptionObject, uint actionRecordPtr, const(ubyte)* pActionTable, + const(ubyte)* tt, ubyte TType, _Unwind_Exception_Class exceptionClass) { //printf("actionTableLookup(catchType = %p, actionRecordPtr = %d, pActionTable = %p, tt = %p)\n", //catchType, actionRecordPtr, pActionTable, tt); assert(pActionTable < tt); + ClassInfo thrownType; + if (exceptionClass == dmdExceptionClass) + { + thrownType = getClassInfo(exceptionObject); + } + for (auto ap = pActionTable + actionRecordPtr - 1; 1; ) { assert(pActionTable <= ap && ap < tt); @@ -752,8 +765,22 @@ int actionTableLookup(ClassInfo catchType, uint actionRecordPtr, const(ubyte)* p entry = *cast(_Unwind_Ptr*)entry; ClassInfo ci = cast(ClassInfo)cast(void*)(entry); - //printf(" catchType = %p, ci = %p\n", catchType, ci); - if (_d_isbaseof(catchType, ci)) + if (ci.classinfo is __cpp_type_info_ptr.classinfo) + { + if (exceptionClass == cppExceptionClass || exceptionClass == cppExceptionClass1) + { + // sti is catch clause type_info + auto sti = cast(CppTypeInfo)((cast(__cpp_type_info_ptr)cast(void*)ci).ptr); + auto p = getCppPtrToThrownObject(exceptionObject, sti); + if (p) // if found + { + auto eh = CppExceptionHeader.toExceptionHeader(exceptionObject); + eh.thrownPtr = p; // for __cxa_begin_catch() + return cast(int)TypeFilter; + } + } + } + else if (exceptionClass == dmdExceptionClass && _d_isbaseof(thrownType, ci)) return cast(int)TypeFilter; // found it if (!NextRecordPtr) @@ -780,3 +807,99 @@ void terminate(uint line) @nogc printf("dwarfeh(%u) fatal error\n", line); abort(); // unceremoniously exit } + + +/****************************** C++ Support *****************************/ + +enum _Unwind_Exception_Class cppExceptionClass = + (cast(_Unwind_Exception_Class)'G' << 56) | + (cast(_Unwind_Exception_Class)'N' << 48) | + (cast(_Unwind_Exception_Class)'U' << 40) | + (cast(_Unwind_Exception_Class)'C' << 32) | + (cast(_Unwind_Exception_Class)'C' << 24) | + (cast(_Unwind_Exception_Class)'+' << 16) | + (cast(_Unwind_Exception_Class)'+' << 8) | + (cast(_Unwind_Exception_Class)0 << 0); + +enum _Unwind_Exception_Class cppExceptionClass1 = cppExceptionClass + 1; + + +/***************************************** + * Get Pointer to Thrown Object if type of thrown object is implicitly + * convertible to the catch type. + * Params: + * exceptionObject = language specific exception information + * sti = type of catch clause + * Returns: + * null if not caught, pointer to thrown object if caught + */ +void* getCppPtrToThrownObject(_Unwind_Exception* exceptionObject, CppTypeInfo sti) +{ + void* p; // pointer to thrown object + if (exceptionObject.exception_class & 1) + p = CppExceptionHeader.toExceptionHeader(exceptionObject).ptr; + else + p = cast(void*)(exceptionObject + 1); // thrown object is immediately after it + + const tt = (cast(CppExceptionHeader*)p - 1).typeinfo; + + if (tt.__is_pointer_p()) + p = *cast(void**)p; + + // Pointer adjustment may be necessary due to multiple inheritance + return (sti is tt || sti.__do_catch(tt, &p, 1)) ? p : null; +} + +extern (C++) +{ + /** + * Access C++ std::type_info's virtual functions from D, + * being careful to not require linking with libstd++ + * or interfere with core.stdcpp.typeinfo. + * So, give it a different name. + */ + interface CppTypeInfo // map to C++ std::type_info's virtual functions + { + void dtor1(); // consume destructor slot in vtbl[] + void dtor2(); // consume destructor slot in vtbl[] + bool __is_pointer_p() const; + bool __is_function_p() const; + bool __do_catch(const CppTypeInfo, void**, uint) const; + bool __do_upcast(const void*, void**) const; + } +} + +/// The C++ version of D's ExceptionHeader wrapper +struct CppExceptionHeader +{ + union + { + CppTypeInfo typeinfo; // type that was thrown + void* ptr; // pointer to real exception + } + void* p1; // unreferenced placeholders... + void* p2; + void* p3; + void* p4; + int i1; + int i2; + const(ubyte)* p5; + const(ubyte)* p6; + _Unwind_Ptr p7; + void* thrownPtr; // pointer to thrown object + _Unwind_Exception exception_object; // the unwinder's data + + /******************************* + * Convert from pointer to exception_object field to pointer to CppExceptionHeader + * that it is embedded inside of. + * Params: + * eo = pointer to exception_object field + * Returns: + * pointer to CppExceptionHeader that eo points into. + */ + static CppExceptionHeader* toExceptionHeader(_Unwind_Exception* eo) + { + return cast(CppExceptionHeader*)(eo + 1) - 1; + } +} + From 1326a75a734b2c166ec13ada1557d75dfbbb76df Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 13 Jan 2016 12:38:24 +0000 Subject: [PATCH 226/768] .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ae4ef164bf..e820d19877 100644 --- a/.gitignore +++ b/.gitignore @@ -8,5 +8,6 @@ druntime.json trace.def trace.log Makefile -/errno_c.obj +/errno_c*.obj +/msvc*.obj make From 020f1725d24b5b1fedb5106df2df09af7a84a0da Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 13 Jan 2016 12:30:44 +0000 Subject: [PATCH 227/768] core.sys.windows.tlhelp32: nothrow @nogc --- src/core/sys/windows/tlhelp32.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index 07ba5c7ac1..108e9d520d 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -139,7 +139,7 @@ version(Unicode) { } -extern(Windows) { +extern(Windows) nothrow @nogc { BOOL Heap32First(LPHEAPENTRY32,DWORD,DWORD); BOOL Heap32ListFirst(HANDLE,LPHEAPLIST32); BOOL Heap32ListNext(HANDLE,LPHEAPLIST32); @@ -160,7 +160,7 @@ version(Unicode) { alias Process32FirstW Process32First; alias Process32NextW Process32Next; } else { - extern(Windows) { + extern(Windows) nothrow @nogc { BOOL Module32First(HANDLE,LPMODULEENTRY32); BOOL Module32Next(HANDLE,LPMODULEENTRY32); BOOL Process32First(HANDLE,LPPROCESSENTRY32); From 48ea15f188fb266c44d744c24fb0d5baa0029809 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Mon, 18 Jan 2016 15:59:33 +0000 Subject: [PATCH 228/768] core.sys.windows: Fix Unicode-correctness of dbghelp declarations --- src/core/sys/windows/dbghelp.d | 6 +- src/core/sys/windows/dbghelp_types.d | 84 ++++++++++++++++++++++++---- src/core/sys/windows/stacktrace.d | 10 ++-- 3 files changed, 82 insertions(+), 18 deletions(-) diff --git a/src/core/sys/windows/dbghelp.d b/src/core/sys/windows/dbghelp.d index e8c95bb81c..aa00b6921b 100644 --- a/src/core/sys/windows/dbghelp.d +++ b/src/core/sys/windows/dbghelp.d @@ -31,10 +31,10 @@ extern(System) alias BOOL function(DWORD MachineType, HANDLE hProcess, HANDLE hThread, STACKFRAME64 *StackFrame, PVOID ContextRecord, ReadProcessMemoryProc64 ReadMemoryRoutine, FunctionTableAccessProc64 FunctoinTableAccess, GetModuleBaseProc64 GetModuleBaseRoutine, TranslateAddressProc64 TranslateAddress) StackWalk64Func; - alias BOOL function(HANDLE hProcess, DWORD64 dwAddr, PDWORD pdwDisplacement, IMAGEHLP_LINE64 *line) SymGetLineFromAddr64Func; + alias BOOL function(HANDLE hProcess, DWORD64 dwAddr, PDWORD pdwDisplacement, IMAGEHLP_LINEA64 *line) SymGetLineFromAddr64Func; alias DWORD64 function(HANDLE hProcess, DWORD64 dwAddr) SymGetModuleBase64Func; - alias BOOL function(HANDLE hProcess, DWORD64 dwAddr, IMAGEHLP_MODULE64 *ModuleInfo) SymGetModuleInfo64Func; - alias BOOL function(HANDLE hProcess, DWORD64 Address, DWORD64 *Displacement, IMAGEHLP_SYMBOL64 *Symbol) SymGetSymFromAddr64Func; + alias BOOL function(HANDLE hProcess, DWORD64 dwAddr, IMAGEHLP_MODULEA64 *ModuleInfo) SymGetModuleInfo64Func; + alias BOOL function(HANDLE hProcess, DWORD64 Address, DWORD64 *Displacement, IMAGEHLP_SYMBOLA64 *Symbol) SymGetSymFromAddr64Func; alias DWORD function(PCTSTR DecoratedName, PTSTR UnDecoratedName, DWORD UndecoratedLength, DWORD Flags) UnDecorateSymbolNameFunc; alias DWORD64 function(HANDLE hProcess, HANDLE hFile, PCSTR ImageName, PCSTR ModuleName, DWORD64 BaseOfDll, DWORD SizeOfDll) SymLoadModule64Func; alias BOOL function(HANDLE HProcess, PTSTR SearchPath, DWORD SearchPathLength) SymGetSearchPathFunc; diff --git a/src/core/sys/windows/dbghelp_types.d b/src/core/sys/windows/dbghelp_types.d index edb13f4ad7..709e423d0c 100644 --- a/src/core/sys/windows/dbghelp_types.d +++ b/src/core/sys/windows/dbghelp_types.d @@ -81,12 +81,20 @@ struct STACKFRAME64 public import core.sys.windows.winnt : IMAGE_FILE_MACHINE_I386, IMAGE_FILE_MACHINE_IA64, IMAGE_FILE_MACHINE_AMD64; -struct IMAGEHLP_LINE64 +struct IMAGEHLP_LINEA64 { DWORD SizeOfStruct; PVOID Key; DWORD LineNumber; - PTSTR FileName; + PCSTR FileName; + DWORD64 Address; +} +struct IMAGEHLP_LINEW64 +{ + DWORD SizeOfStruct; + PVOID Key; + DWORD LineNumber; + PWSTR FileName; DWORD64 Address; } @@ -104,7 +112,41 @@ enum SYM_TYPE : int NumSymTypes, } -struct IMAGEHLP_MODULE64 +struct IMAGEHLP_MODULEA64 +{ + DWORD SizeOfStruct; + DWORD64 BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + CHAR[32] ModuleName; + CHAR[256] ImageName; + CHAR[256] LoadedImageName; + // new elements: 07-Jun-2002 + version (none) + { + CHAR[256] LoadedPdbName; + DWORD CVSig; + CHAR[MAX_PATH*3] CVData; + DWORD PdbSig; + GUID PdbSig70; + DWORD PdbAge; + BOOL PdbUnmatched; + BOOL DbgUnmachted; + BOOL LineNumbers; + BOOL GlobalSymbols; + BOOL TypeInfo; + } + // new elements: 17-Dec-2003 + version (none) + { + BOOL SourceIndexed; + BOOL Publics; + } +} +struct IMAGEHLP_MODULEW64 { DWORD SizeOfStruct; DWORD64 BaseOfImage; @@ -113,15 +155,15 @@ struct IMAGEHLP_MODULE64 DWORD CheckSum; DWORD NumSyms; SYM_TYPE SymType; - TCHAR[32] ModuleName; - TCHAR[256] ImageName; - TCHAR[256] LoadedImageName; + WCHAR[32] ModuleName; + WCHAR[256] ImageName; + WCHAR[256] LoadedImageName; // new elements: 07-Jun-2002 version (none) { - TCHAR[256] LoadedPdbName; + WCHAR[256] LoadedPdbName; DWORD CVSig; - TCHAR[MAX_PATH*3] CVData; + WCHAR[MAX_PATH*3] CVData; DWORD PdbSig; GUID PdbSig70; DWORD PdbAge; @@ -139,14 +181,23 @@ struct IMAGEHLP_MODULE64 } } -struct IMAGEHLP_SYMBOL64 +struct IMAGEHLP_SYMBOLA64 { DWORD SizeOfStruct; DWORD64 Address; DWORD Size; DWORD Flags; DWORD MaxNameLength; - TCHAR[1] Name; + CHAR[1] Name; +} +struct IMAGEHLP_SYMBOLW64 +{ + DWORD SizeOfStruct; + DWORD64 Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + WCHAR[1] Name; } @@ -165,3 +216,16 @@ struct API_VERSION USHORT Revision; USHORT Reserved; } + +version (Unicode) +{ + alias IMAGEHLP_LINEW64 IMAGEHLP_LINE64; + alias IMAGEHLP_MODULEW64 IMAGEHLP_MODULE64; + alias IMAGEHLP_SYMBOLW64 IMAGEHLP_SYMBOL64; +} +else +{ + alias IMAGEHLP_LINEA64 IMAGEHLP_LINE64; + alias IMAGEHLP_MODULEA64 IMAGEHLP_MODULE64; + alias IMAGEHLP_SYMBOLA64 IMAGEHLP_SYMBOL64; +} diff --git a/src/core/sys/windows/stacktrace.d b/src/core/sys/windows/stacktrace.d index 85ce2a415b..d034dfc8f2 100644 --- a/src/core/sys/windows/stacktrace.d +++ b/src/core/sys/windows/stacktrace.d @@ -242,12 +242,12 @@ private: static struct BufSymbol { align(1): - IMAGEHLP_SYMBOL64 _base; + IMAGEHLP_SYMBOLA64 _base; TCHAR[1024] _buf; } BufSymbol bufSymbol=void; - IMAGEHLP_SYMBOL64* symbol = &bufSymbol._base; - symbol.SizeOfStruct = IMAGEHLP_SYMBOL64.sizeof; + IMAGEHLP_SYMBOLA64* symbol = &bufSymbol._base; + symbol.SizeOfStruct = IMAGEHLP_SYMBOLA64.sizeof; symbol.MaxNameLength = bufSymbol._buf.length; char[][] trace; @@ -260,8 +260,8 @@ private: *symbol.Name.ptr) { DWORD disp; - IMAGEHLP_LINE64 line=void; - line.SizeOfStruct = IMAGEHLP_LINE64.sizeof; + IMAGEHLP_LINEA64 line=void; + line.SizeOfStruct = IMAGEHLP_LINEA64.sizeof; if (dbghelp.SymGetLineFromAddr64(hProcess, pc, &disp, &line)) res = formatStackFrame(cast(void*)pc, symbol.Name.ptr, From 8f62ab94ff3af6025f021eba3d43e43b4ee3d089 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 13 Jan 2016 12:37:30 +0000 Subject: [PATCH 229/768] core.sys.windows: Enable version(Unicode) by default --- src/core/sys/windows/accctrl.d | 2 ++ src/core/sys/windows/aclapi.d | 2 ++ src/core/sys/windows/commctrl.d | 2 ++ src/core/sys/windows/commdlg.d | 2 ++ src/core/sys/windows/cpl.d | 2 ++ src/core/sys/windows/custcntl.d | 2 ++ src/core/sys/windows/dbghelp_types.d | 2 ++ src/core/sys/windows/dbt.d | 2 ++ src/core/sys/windows/ddeml.d | 2 ++ src/core/sys/windows/errorrep.d | 2 ++ src/core/sys/windows/imagehlp.d | 2 ++ src/core/sys/windows/imm.d | 2 ++ src/core/sys/windows/intshcut.d | 2 ++ src/core/sys/windows/lmcons.d | 2 ++ src/core/sys/windows/lzexpand.d | 2 ++ src/core/sys/windows/mmsystem.d | 2 ++ src/core/sys/windows/msacm.d | 2 ++ src/core/sys/windows/nddeapi.d | 2 ++ src/core/sys/windows/nspapi.d | 2 ++ src/core/sys/windows/ntldap.d | 2 ++ src/core/sys/windows/ntsecapi.d | 2 ++ src/core/sys/windows/odbcinst.d | 2 ++ src/core/sys/windows/oleacc.d | 2 ++ src/core/sys/windows/oledlg.d | 2 ++ src/core/sys/windows/prsht.d | 2 ++ src/core/sys/windows/psapi.d | 2 ++ src/core/sys/windows/ras.d | 2 ++ src/core/sys/windows/rasdlg.d | 2 ++ src/core/sys/windows/richedit.d | 2 ++ src/core/sys/windows/rpcdce.d | 2 ++ src/core/sys/windows/rpcdce2.d | 2 ++ src/core/sys/windows/rpcdcep.d | 2 ++ src/core/sys/windows/rpcnsi.d | 2 ++ src/core/sys/windows/secext.d | 2 ++ src/core/sys/windows/setupapi.d | 2 ++ src/core/sys/windows/shellapi.d | 2 ++ src/core/sys/windows/shlobj.d | 2 ++ src/core/sys/windows/shlwapi.d | 2 ++ src/core/sys/windows/sqltypes.d | 2 ++ src/core/sys/windows/sqlucode.d | 2 ++ src/core/sys/windows/sspi.d | 2 ++ src/core/sys/windows/tlhelp32.d | 2 ++ src/core/sys/windows/vfw.d | 2 ++ src/core/sys/windows/w32api.d | 2 ++ src/core/sys/windows/winbase.d | 2 ++ src/core/sys/windows/wincon.d | 2 ++ src/core/sys/windows/wincrypt.d | 2 ++ src/core/sys/windows/wingdi.d | 2 ++ src/core/sys/windows/wininet.d | 2 ++ src/core/sys/windows/winldap.d | 2 ++ src/core/sys/windows/winnetwk.d | 2 ++ src/core/sys/windows/winnls.d | 2 ++ src/core/sys/windows/winnt.d | 2 ++ src/core/sys/windows/winreg.d | 2 ++ src/core/sys/windows/winspool.d | 2 ++ src/core/sys/windows/winsvc.d | 2 ++ src/core/sys/windows/winuser.d | 2 ++ src/core/sys/windows/winver.d | 2 ++ src/core/sys/windows/wtsapi32.d | 2 ++ 59 files changed, 118 insertions(+) diff --git a/src/core/sys/windows/accctrl.d b/src/core/sys/windows/accctrl.d index ec39f00afb..06dc4e163a 100644 --- a/src/core/sys/windows/accctrl.d +++ b/src/core/sys/windows/accctrl.d @@ -10,6 +10,8 @@ module core.sys.windows.accctrl; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; // FIXME: check types and grouping of constants diff --git a/src/core/sys/windows/aclapi.d b/src/core/sys/windows/aclapi.d index 44826a408c..ed05161bb0 100644 --- a/src/core/sys/windows/aclapi.d +++ b/src/core/sys/windows/aclapi.d @@ -9,6 +9,8 @@ */ module core.sys.windows.aclapi; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "advapi32"); import core.sys.windows.windows, core.sys.windows.accctrl; diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 7db19bbd67..467bc2a895 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -8,6 +8,8 @@ */ module core.sys.windows.commctrl; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "comctl32"); private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index 861214479f..0be7ca9f17 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -8,6 +8,8 @@ */ module core.sys.windows.commdlg; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "comdlg32"); private import core.sys.windows.w32api; diff --git a/src/core/sys/windows/cpl.d b/src/core/sys/windows/cpl.d index e202c2cb8b..a2fa35a605 100644 --- a/src/core/sys/windows/cpl.d +++ b/src/core/sys/windows/cpl.d @@ -10,6 +10,8 @@ module core.sys.windows.cpl; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.windef, core.sys.windows.winuser; enum : uint { diff --git a/src/core/sys/windows/custcntl.d b/src/core/sys/windows/custcntl.d index dc92fa6c0b..9c741a4b1d 100644 --- a/src/core/sys/windows/custcntl.d +++ b/src/core/sys/windows/custcntl.d @@ -10,6 +10,8 @@ module core.sys.windows.custcntl; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.windef; // FIXME: check type diff --git a/src/core/sys/windows/dbghelp_types.d b/src/core/sys/windows/dbghelp_types.d index 709e423d0c..ff52c565e1 100644 --- a/src/core/sys/windows/dbghelp_types.d +++ b/src/core/sys/windows/dbghelp_types.d @@ -12,6 +12,8 @@ module core.sys.windows.dbghelp_types; version (Windows): +version (ANSI) {} else version = Unicode; + import core.sys.windows.windows; public import core.sys.windows.winnt : TCHAR; diff --git a/src/core/sys/windows/dbt.d b/src/core/sys/windows/dbt.d index e2648dc024..c97944203e 100644 --- a/src/core/sys/windows/dbt.d +++ b/src/core/sys/windows/dbt.d @@ -10,6 +10,8 @@ module core.sys.windows.dbt; version (Windows): +version (ANSI) {} else version = Unicode; + import core.sys.windows.w32api, core.sys.windows.windef; import core.sys.windows.basetyps; // for GUID diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index e0bdea19e1..e596cb6214 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -9,6 +9,8 @@ */ module core.sys.windows.ddeml; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "user32"); private import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winnt; diff --git a/src/core/sys/windows/errorrep.d b/src/core/sys/windows/errorrep.d index 70279efebf..62782961b3 100644 --- a/src/core/sys/windows/errorrep.d +++ b/src/core/sys/windows/errorrep.d @@ -10,6 +10,8 @@ module core.sys.windows.errorrep; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.w32api, core.sys.windows.windef; static assert (_WIN32_WINNT >= 0x501, diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index ad3633d60d..bc5f7852f7 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -10,6 +10,8 @@ module core.sys.windows.imagehlp; version (Windows): +version (ANSI) {} else version = Unicode; + /* Comment from MinGW NOTE: This strictly does not belong in the Win32 API since it's really part of Platform SDK. However, GDB needs it and we might diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d index 0db1de03fd..54de0846a9 100644 --- a/src/core/sys/windows/imm.d +++ b/src/core/sys/windows/imm.d @@ -8,6 +8,8 @@ */ module core.sys.windows.imm; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "imm32"); import core.sys.windows.windef, core.sys.windows.wingdi; diff --git a/src/core/sys/windows/intshcut.d b/src/core/sys/windows/intshcut.d index 3f78733143..4070577514 100644 --- a/src/core/sys/windows/intshcut.d +++ b/src/core/sys/windows/intshcut.d @@ -10,6 +10,8 @@ module core.sys.windows.intshcut; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.unknwn, core.sys.windows.windef; enum : SCODE { diff --git a/src/core/sys/windows/lmcons.d b/src/core/sys/windows/lmcons.d index f47d8fec9d..a9d78b7bf3 100644 --- a/src/core/sys/windows/lmcons.d +++ b/src/core/sys/windows/lmcons.d @@ -9,6 +9,8 @@ module core.sys.windows.lmcons; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.windef; private import core.sys.windows.lmerr; // for NERR_BASE diff --git a/src/core/sys/windows/lzexpand.d b/src/core/sys/windows/lzexpand.d index 5a35bcaed5..0ed0855c7d 100644 --- a/src/core/sys/windows/lzexpand.d +++ b/src/core/sys/windows/lzexpand.d @@ -8,6 +8,8 @@ */ module core.sys.windows.lzexpand; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "lz32"); private import core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index 377d83e002..0d6f9a8df4 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -8,6 +8,8 @@ */ module core.sys.windows.mmsystem; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "winmm"); /* The #defines MAKEFOURCC, mmioFOURCC, sndAlias are used to define diff --git a/src/core/sys/windows/msacm.d b/src/core/sys/windows/msacm.d index 71a53f55d0..b0e36d73d1 100644 --- a/src/core/sys/windows/msacm.d +++ b/src/core/sys/windows/msacm.d @@ -10,6 +10,8 @@ module core.sys.windows.msacm; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.basetsd, core.sys.windows.mmsystem, core.sys.windows.windef; mixin DECLARE_HANDLE!("HACMDRIVERID"); diff --git a/src/core/sys/windows/nddeapi.d b/src/core/sys/windows/nddeapi.d index df31475b5b..5f2aa1632a 100644 --- a/src/core/sys/windows/nddeapi.d +++ b/src/core/sys/windows/nddeapi.d @@ -10,6 +10,8 @@ module core.sys.windows.nddeapi; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.windef; // FIXME: check types and grouping of constants diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d index cee7c48073..07120bbb68 100644 --- a/src/core/sys/windows/nspapi.d +++ b/src/core/sys/windows/nspapi.d @@ -10,6 +10,8 @@ module core.sys.windows.nspapi; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.basetyps, core.sys.windows.windef; // FIXME: check types of constants diff --git a/src/core/sys/windows/ntldap.d b/src/core/sys/windows/ntldap.d index e42df9b435..4ac68e3846 100644 --- a/src/core/sys/windows/ntldap.d +++ b/src/core/sys/windows/ntldap.d @@ -10,6 +10,8 @@ module core.sys.windows.ntldap; version (Windows): +version (ANSI) {} else version = Unicode; + /* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned * aliases. Should we merge them anyway? */ diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index 63aee4b822..eb464b6413 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -10,6 +10,8 @@ module core.sys.windows.ntsecapi; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.basetyps, core.sys.windows.ntdef, core.sys.windows.windef, core.sys.windows.winnt, core.sys.windows.w32api; diff --git a/src/core/sys/windows/odbcinst.d b/src/core/sys/windows/odbcinst.d index 148d66ee26..9cf7921e1a 100644 --- a/src/core/sys/windows/odbcinst.d +++ b/src/core/sys/windows/odbcinst.d @@ -9,6 +9,8 @@ module core.sys.windows.odbcinst; version (Windows): +version (ANSI) {} else version = Unicode; + import core.sys.windows.sql; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/oleacc.d b/src/core/sys/windows/oleacc.d index f1ad3e5673..808f04fa4b 100644 --- a/src/core/sys/windows/oleacc.d +++ b/src/core/sys/windows/oleacc.d @@ -8,6 +8,8 @@ */ module core.sys.windows.oleacc; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "oleacc"); private import core.sys.windows.basetyps, core.sys.windows.oaidl, core.sys.windows.unknwn, core.sys.windows.wtypes, diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d index 70b9d52bdd..3e862d33d7 100644 --- a/src/core/sys/windows/oledlg.d +++ b/src/core/sys/windows/oledlg.d @@ -9,6 +9,8 @@ module core.sys.windows.oledlg; version (Windows): +version (ANSI) {} else version = Unicode; + import core.sys.windows.commdlg, core.sys.windows.dlgs, core.sys.windows.ole2, core.sys.windows.prsht, core.sys.windows.shellapi, core.sys.windows.windows; private import core.sys.windows.winbase, core.sys.windows.objidl, core.sys.windows.objfwd, core.sys.windows.winnt; diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d index cd47963f0b..cf0f1fc747 100644 --- a/src/core/sys/windows/prsht.d +++ b/src/core/sys/windows/prsht.d @@ -9,6 +9,8 @@ */ module core.sys.windows.prsht; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "comctl32"); private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; diff --git a/src/core/sys/windows/psapi.d b/src/core/sys/windows/psapi.d index 6229bcd148..ed28515ad3 100644 --- a/src/core/sys/windows/psapi.d +++ b/src/core/sys/windows/psapi.d @@ -14,6 +14,8 @@ module core.sys.windows.psapi; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.w32api; private import core.sys.windows.winbase; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index 72bab0e55e..ff3f9bc9ad 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -8,6 +8,8 @@ */ module core.sys.windows.ras; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "rasapi32"); private import core.sys.windows.basetyps, core.sys.windows.lmcons, core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d index d8047355da..bf18d50931 100644 --- a/src/core/sys/windows/rasdlg.d +++ b/src/core/sys/windows/rasdlg.d @@ -10,6 +10,8 @@ module core.sys.windows.rasdlg; version (Windows): +version (ANSI) {} else version = Unicode; + import core.sys.windows.ras; private import core.sys.windows.lmcons, core.sys.windows.windef; diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d index 40f280cbac..41264dd13f 100644 --- a/src/core/sys/windows/richedit.d +++ b/src/core/sys/windows/richedit.d @@ -9,6 +9,8 @@ module core.sys.windows.richedit; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.windef, core.sys.windows.winuser; private import core.sys.windows.wingdi; // for LF_FACESIZE diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d index d9c421bd90..3f9fde2b02 100644 --- a/src/core/sys/windows/rpcdce.d +++ b/src/core/sys/windows/rpcdce.d @@ -8,6 +8,8 @@ */ module core.sys.windows.rpcdce; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "Rpcrt4"); // TODO: I think MinGW got this wrong. RPC_UNICODE_SUPPORTED should be diff --git a/src/core/sys/windows/rpcdce2.d b/src/core/sys/windows/rpcdce2.d index fe4d231c46..664bb6135a 100644 --- a/src/core/sys/windows/rpcdce2.d +++ b/src/core/sys/windows/rpcdce2.d @@ -9,6 +9,8 @@ module core.sys.windows.rpcdce2; version (Windows): +version (ANSI) {} else version = Unicode; + import core.sys.windows.rpcdce; private import core.sys.windows.basetyps; diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d index 606d362eb5..5ae077feaf 100644 --- a/src/core/sys/windows/rpcdcep.d +++ b/src/core/sys/windows/rpcdcep.d @@ -9,6 +9,8 @@ module core.sys.windows.rpcdcep; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.basetyps; private import core.sys.windows.w32api; private import core.sys.windows.windef; diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d index c968c4fee6..838e11f9c6 100644 --- a/src/core/sys/windows/rpcnsi.d +++ b/src/core/sys/windows/rpcnsi.d @@ -10,6 +10,8 @@ */ module core.sys.windows.rpcnsi; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "rpcns4"); private import core.sys.windows.basetyps, core.sys.windows.rpcdcep, core.sys.windows.rpcnsi, core.sys.windows.rpcdce, diff --git a/src/core/sys/windows/secext.d b/src/core/sys/windows/secext.d index aafe1abce0..486025d05c 100644 --- a/src/core/sys/windows/secext.d +++ b/src/core/sys/windows/secext.d @@ -9,6 +9,8 @@ // Don't include this file directly, use core.sys.windows.security instead. module core.sys.windows.secext; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "secur32"); private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d index e192eb1622..c017b8c80c 100644 --- a/src/core/sys/windows/setupapi.d +++ b/src/core/sys/windows/setupapi.d @@ -9,6 +9,8 @@ */ module core.sys.windows.setupapi; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "setupapi"); private import core.sys.windows.basetyps, core.sys.windows.commctrl, core.sys.windows.prsht, core.sys.windows.w32api, diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index 2ab5e428ff..5de86e8c5c 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -9,6 +9,8 @@ */ module core.sys.windows.shellapi; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "shell32"); private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.basetyps; diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index d85603091b..1b81de15dd 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -8,6 +8,8 @@ */ module core.sys.windows.shlobj; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "shell32"); // TODO: fix bitfields diff --git a/src/core/sys/windows/shlwapi.d b/src/core/sys/windows/shlwapi.d index d9c667b606..5bd60119b7 100644 --- a/src/core/sys/windows/shlwapi.d +++ b/src/core/sys/windows/shlwapi.d @@ -8,6 +8,8 @@ */ module core.sys.windows.shlwapi; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "shlwapi"); /* Changes compared to MinGW: diff --git a/src/core/sys/windows/sqltypes.d b/src/core/sys/windows/sqltypes.d index 9c53d0a3a1..952d8aa3db 100644 --- a/src/core/sys/windows/sqltypes.d +++ b/src/core/sys/windows/sqltypes.d @@ -9,6 +9,8 @@ module core.sys.windows.sqltypes; version (Windows): +version (ANSI) {} else version = Unicode; + /* Conversion notes: It's assumed that ODBC >= 0x0300. */ diff --git a/src/core/sys/windows/sqlucode.d b/src/core/sys/windows/sqlucode.d index ad24d9a9c5..bb24c3a27d 100644 --- a/src/core/sys/windows/sqlucode.d +++ b/src/core/sys/windows/sqlucode.d @@ -9,6 +9,8 @@ module core.sys.windows.sqlucode; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.sqlext; const SQL_WCHAR = -8; diff --git a/src/core/sys/windows/sspi.d b/src/core/sys/windows/sspi.d index a7b7d5b530..4354139ca0 100644 --- a/src/core/sys/windows/sspi.d +++ b/src/core/sys/windows/sspi.d @@ -10,6 +10,8 @@ module core.sys.windows.sspi; version (Windows): +version (ANSI) {} else version = Unicode; + import core.sys.windows.windef; import core.sys.windows.ntdef; import core.sys.windows.w32api; diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index 108e9d520d..7416d200dc 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -9,6 +9,8 @@ module core.sys.windows.tlhelp32; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.windef; enum : uint { diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index b889b44a67..c1654beeef 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -9,6 +9,8 @@ module core.sys.windows.vfw; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "vfw32"); private import diff --git a/src/core/sys/windows/w32api.d b/src/core/sys/windows/w32api.d index 9fd6e02fb3..33807c9daa 100644 --- a/src/core/sys/windows/w32api.d +++ b/src/core/sys/windows/w32api.d @@ -10,6 +10,8 @@ module core.sys.windows.w32api; version (Windows): +version (ANSI) {} else version = Unicode; + enum __W32API_VERSION = 3.17; enum __W32API_MAJOR_VERSION = 3; enum __W32API_MINOR_VERSION = 17; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index c0f5a2c572..3b4228fd8e 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -8,6 +8,8 @@ */ module core.sys.windows.winbase; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "kernel32"); /** diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index b2724d6627..901afb4e45 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -8,6 +8,8 @@ */ module core.sys.windows.wincon; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "kernel32"); private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index dd54e1c0dc..68735f6d07 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -10,6 +10,8 @@ module core.sys.windows.wincrypt; version (Windows): +version (ANSI) {} else version = Unicode; + private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; /* FIXME: diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index 0ff828058f..7366702508 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -8,6 +8,8 @@ */ module core.sys.windows.wingdi; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "gdi32"); // FIXME: clean up Windows version support diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index b4ff649fd7..29fcd242f6 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -9,6 +9,8 @@ */ module core.sys.windows.wininet; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "wininet"); // FIXME: check types and grouping of constants diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index 6554ff1327..e075079c6f 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -10,6 +10,8 @@ module core.sys.windows.winldap; version (Windows): +version (ANSI) {} else version = Unicode; + /* Comment from MinGW winldap.h - Header file for the Windows LDAP API diff --git a/src/core/sys/windows/winnetwk.d b/src/core/sys/windows/winnetwk.d index 94b701fce5..e92545ac94 100644 --- a/src/core/sys/windows/winnetwk.d +++ b/src/core/sys/windows/winnetwk.d @@ -9,6 +9,8 @@ */ module core.sys.windows.winnetwk; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "mpr"); private import core.sys.windows.winbase, core.sys.windows.winerror, core.sys.windows.winnt; diff --git a/src/core/sys/windows/winnls.d b/src/core/sys/windows/winnls.d index 5648e0fad5..c15163a2bb 100644 --- a/src/core/sys/windows/winnls.d +++ b/src/core/sys/windows/winnls.d @@ -9,6 +9,8 @@ */ module core.sys.windows.winnls; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "kernel32"); private import core.sys.windows.basetsd, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index 9bea53be49..7e31ffcf84 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -9,6 +9,8 @@ module core.sys.windows.winnt; version (Windows): +version (ANSI) {} else version = Unicode; + public import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winerror; private import core.sys.windows.w32api; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index 54b3beb6b3..d203288819 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -9,6 +9,8 @@ */ module core.sys.windows.winreg; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "advapi32"); private import core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef; diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d index e00a73ed09..bc5ac4b009 100644 --- a/src/core/sys/windows/winspool.d +++ b/src/core/sys/windows/winspool.d @@ -8,6 +8,8 @@ */ module core.sys.windows.winspool; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "winspool"); private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.wingdi; diff --git a/src/core/sys/windows/winsvc.d b/src/core/sys/windows/winsvc.d index cc0e10225c..0fdfe38c23 100644 --- a/src/core/sys/windows/winsvc.d +++ b/src/core/sys/windows/winsvc.d @@ -9,6 +9,8 @@ */ module core.sys.windows.winsvc; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "advapi32"); private import core.sys.windows.w32api, core.sys.windows.windef; diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index b63dd09fc9..4b7d8449c7 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -8,6 +8,8 @@ */ module core.sys.windows.winuser; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "user32"); // Conversion Notes: diff --git a/src/core/sys/windows/winver.d b/src/core/sys/windows/winver.d index feb8aa770e..e33ff4b498 100644 --- a/src/core/sys/windows/winver.d +++ b/src/core/sys/windows/winver.d @@ -9,6 +9,8 @@ */ module core.sys.windows.winver; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "version"); private import core.sys.windows.windef; diff --git a/src/core/sys/windows/wtsapi32.d b/src/core/sys/windows/wtsapi32.d index 4afc7fe533..0d502b941e 100644 --- a/src/core/sys/windows/wtsapi32.d +++ b/src/core/sys/windows/wtsapi32.d @@ -8,6 +8,8 @@ */ module core.sys.windows.wtsapi32; version (Windows): + +version (ANSI) {} else version = Unicode; pragma(lib, "wtsapi32"); private import core.sys.windows.w32api; import core.sys.windows.windef; From 5d3e087d1db61792ecc139e03bb2aba712a3773f Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Mon, 18 Jan 2016 16:02:41 +0000 Subject: [PATCH 230/768] core.sys.windows.windef: Fix typeof(NULL) --- src/core/sys/windows/windef.d | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index d4ed810309..71b83652eb 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -53,7 +53,12 @@ pure nothrow @nogc { } } -enum void* NULL = null; +enum NULL = null; +static assert (is(typeof({ + void test(int* p) {} + test(NULL); +}))); + alias ubyte BYTE; alias ubyte* PBYTE, LPBYTE; alias ushort USHORT, WORD, ATOM; From b785882f13da8c78a6f9fda4e5b1990e76e114e8 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Mon, 18 Jan 2016 16:12:39 +0000 Subject: [PATCH 231/768] core.sys.windows: const -> enum --- src/core/sys/windows/accctrl.d | 20 +- src/core/sys/windows/aclui.d | 10 +- src/core/sys/windows/basetsd.d | 6 +- src/core/sys/windows/commctrl.d | 50 +- src/core/sys/windows/commdlg.d | 6 +- src/core/sys/windows/custcntl.d | 4 +- src/core/sys/windows/ddeml.d | 2 +- src/core/sys/windows/dhcpcsdk.d | 6 +- src/core/sys/windows/imagehlp.d | 74 +- src/core/sys/windows/imm.d | 514 +- src/core/sys/windows/ipexport.d | 6 +- src/core/sys/windows/iprtrmib.d | 4 +- src/core/sys/windows/iptypes.d | 4 +- src/core/sys/windows/lmaccess.d | 402 +- src/core/sys/windows/lmalert.d | 28 +- src/core/sys/windows/lmat.d | 14 +- src/core/sys/windows/lmaudit.d | 192 +- src/core/sys/windows/lmbrowsr.d | 4 +- src/core/sys/windows/lmchdev.d | 34 +- src/core/sys/windows/lmcons.d | 102 +- src/core/sys/windows/lmerrlog.d | 366 +- src/core/sys/windows/lmmsg.d | 6 +- src/core/sys/windows/lmremutl.d | 20 +- src/core/sys/windows/lmrepl.d | 44 +- src/core/sys/windows/lmserver.d | 488 +- src/core/sys/windows/lmshare.d | 66 +- src/core/sys/windows/lmstats.d | 2 +- src/core/sys/windows/lmsvc.d | 184 +- src/core/sys/windows/lmuse.d | 2 +- src/core/sys/windows/mapi.d | 38 +- src/core/sys/windows/mciavi.d | 6 +- src/core/sys/windows/mcx.d | 8 +- src/core/sys/windows/mgmtapi.d | 2 +- src/core/sys/windows/mmsystem.d | 1430 ++--- src/core/sys/windows/msacm.d | 4 +- src/core/sys/windows/mswsock.d | 4 +- src/core/sys/windows/nb30.d | 6 +- src/core/sys/windows/nddeapi.d | 20 +- src/core/sys/windows/ntdef.d | 2 +- src/core/sys/windows/ntldap.d | 4 +- src/core/sys/windows/ntsecapi.d | 116 +- src/core/sys/windows/oaidl.d | 84 +- src/core/sys/windows/objbase.d | 74 +- src/core/sys/windows/objidl.d | 6 +- src/core/sys/windows/ole.d | 8 +- src/core/sys/windows/ole2.d | 12 +- src/core/sys/windows/ole2ver.d | 4 +- src/core/sys/windows/oleacc.d | 2 +- src/core/sys/windows/oleauto.d | 124 +- src/core/sys/windows/olectl.d | 50 +- src/core/sys/windows/oledlg.d | 556 +- src/core/sys/windows/oleidl.d | 2 +- src/core/sys/windows/pbt.d | 2 +- src/core/sys/windows/powrprof.d | 4 +- src/core/sys/windows/prsht.d | 2 +- src/core/sys/windows/ras.d | 270 +- src/core/sys/windows/rasdlg.d | 14 +- src/core/sys/windows/rassapi.d | 26 +- src/core/sys/windows/regstr.d | 210 +- src/core/sys/windows/richedit.d | 480 +- src/core/sys/windows/richole.d | 2 +- src/core/sys/windows/rpcdce.d | 102 +- src/core/sys/windows/rpcdce2.d | 2 +- src/core/sys/windows/rpcdcep.d | 28 +- src/core/sys/windows/rpcndr.d | 34 +- src/core/sys/windows/rpcnsi.d | 16 +- src/core/sys/windows/schannel.d | 8 +- src/core/sys/windows/setupapi.d | 26 +- src/core/sys/windows/shellapi.d | 28 +- src/core/sys/windows/shldisp.d | 2 +- src/core/sys/windows/shlobj.d | 326 +- src/core/sys/windows/shlwapi.d | 28 +- src/core/sys/windows/snmp.d | 4 +- src/core/sys/windows/sql.d | 642 +-- src/core/sys/windows/sqlext.d | 2242 ++++---- src/core/sys/windows/sqltypes.d | 2 +- src/core/sys/windows/sqlucode.d | 30 +- src/core/sys/windows/stacktrace.d | 2 +- src/core/sys/windows/stat.d | 20 +- src/core/sys/windows/subauth.d | 34 +- src/core/sys/windows/tlhelp32.d | 2 +- src/core/sys/windows/uuid.d | 8124 ++++++++++++++--------------- src/core/sys/windows/vfw.d | 174 +- src/core/sys/windows/winbase.d | 94 +- src/core/sys/windows/winber.d | 2 +- src/core/sys/windows/wincon.d | 2 +- src/core/sys/windows/wincrypt.d | 8 +- src/core/sys/windows/windef.d | 2 +- src/core/sys/windows/wingdi.d | 286 +- src/core/sys/windows/wininet.d | 114 +- src/core/sys/windows/winioctl.d | 8 +- src/core/sys/windows/winldap.d | 12 +- src/core/sys/windows/winnetwk.d | 22 +- src/core/sys/windows/winnls.d | 30 +- src/core/sys/windows/winnt.d | 306 +- src/core/sys/windows/winperf.d | 136 +- src/core/sys/windows/winreg.d | 2 +- src/core/sys/windows/winsock2.d | 18 +- src/core/sys/windows/winspool.d | 458 +- src/core/sys/windows/winsvc.d | 10 +- src/core/sys/windows/wtypes.d | 8 +- 101 files changed, 9813 insertions(+), 9813 deletions(-) diff --git a/src/core/sys/windows/accctrl.d b/src/core/sys/windows/accctrl.d index 06dc4e163a..e28f5df73a 100644 --- a/src/core/sys/windows/accctrl.d +++ b/src/core/sys/windows/accctrl.d @@ -19,7 +19,7 @@ private import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.wind alias LocalFree AccFree; -const uint +enum uint ACTRL_RESERVED = 0x00000000, ACTRL_ACCESS_PROTECTED = 0x00000001, ACTRL_ACCESS_ALLOWED = 0x00000001, @@ -34,7 +34,7 @@ const uint ACTRL_SYNCHRONIZE = 0x80000000, ACTRL_STD_RIGHTS_ALL = 0xf8000000; -const uint +enum uint ACTRL_FILE_READ = 0x00000001, ACTRL_FILE_WRITE = 0x00000002, ACTRL_FILE_APPEND = 0x00000004, @@ -45,14 +45,14 @@ const uint ACTRL_FILE_WRITE_ATTRIB = 0x00000100, ACTRL_FILE_CREATE_PIPE = 0x00000200; -const uint +enum uint ACTRL_DIR_LIST = 0x00000001, ACTRL_DIR_CREATE_OBJECT = 0x00000002, ACTRL_DIR_CREATE_CHILD = 0x00000004, ACTRL_DIR_DELETE_CHILD = 0x00000040, ACTRL_DIR_TRAVERSE = 0x00000020; -const uint +enum uint ACTRL_KERNEL_TERMINATE = 0x00000001, ACTRL_KERNEL_THREAD = 0x00000002, ACTRL_KERNEL_VM = 0x00000004, @@ -70,14 +70,14 @@ const uint ACTRL_KERNEL_IMPERSONATE = 0x00004000, ACTRL_KERNEL_DIMPERSONATE = 0x00008000; -const uint +enum uint ACTRL_PRINT_SADMIN = 0x00000001, ACTRL_PRINT_SLIST = 0x00000002, ACTRL_PRINT_PADMIN = 0x00000004, ACTRL_PRINT_PUSE = 0x00000008, ACTRL_PRINT_JADMIN = 0x00000010; -const uint +enum uint ACTRL_SVC_GET_INFO = 0x00000001, ACTRL_SVC_SET_INFO = 0x00000002, ACTRL_SVC_STATUS = 0x00000004, @@ -88,7 +88,7 @@ const uint ACTRL_SVC_INTERROGATE = 0x00000080, ACTRL_SVC_UCONTROL = 0x00000100; -const uint +enum uint ACTRL_REG_QUERY = 0x00000001, ACTRL_REG_SET = 0x00000002, ACTRL_REG_CREATE_CHILD = 0x00000004, @@ -96,7 +96,7 @@ const uint ACTRL_REG_NOTIFY = 0x00000010, ACTRL_REG_LINK = 0x00000020; -const uint +enum uint ACTRL_WIN_CLIPBRD = 0x00000001, ACTRL_WIN_GLOBAL_ATOMS = 0x00000002, ACTRL_WIN_CREATE = 0x00000004, @@ -114,7 +114,7 @@ enum : uint { const TCHAR[] ACCCTRL_DEFAULT_PROVIDER = "Windows NT Access Provider"; -const uint +enum uint TRUSTEE_ACCESS_ALLOWED = 0x00000001, TRUSTEE_ACCESS_READ = 0x00000002, TRUSTEE_ACCESS_WRITE = 0x00000004, @@ -122,7 +122,7 @@ const uint TRUSTEE_ACCESS_READ_WRITE = 0x00000006, TRUSTEE_ACCESS_ALL = 0xFFFFFFFF; -const uint +enum uint NO_INHERITANCE = 0x0, SUB_OBJECTS_ONLY_INHERIT = 0x1, SUB_CONTAINERS_ONLY_INHERIT = 0x2, diff --git a/src/core/sys/windows/aclui.d b/src/core/sys/windows/aclui.d index 89e80a6bbf..6000375454 100644 --- a/src/core/sys/windows/aclui.d +++ b/src/core/sys/windows/aclui.d @@ -33,7 +33,7 @@ struct SI_OBJECT_INFO { alias SI_OBJECT_INFO* PSI_OBJECT_INFO; // values for SI_OBJECT_INFO.dwFlags -const DWORD +enum DWORD SI_EDIT_PERMS = 0x00000000, SI_EDIT_OWNER = 0x00000001, SI_EDIT_AUDITS = 0x00000002, @@ -61,7 +61,7 @@ const DWORD | SI_EDIT_AUDITS; struct SI_ACCESS { - const(GUID)* pguid; +const(GUID)* pguid; ACCESS_MASK mask; LPCWSTR pszName; DWORD dwFlags; @@ -69,7 +69,7 @@ struct SI_ACCESS { alias SI_ACCESS* PSI_ACCESS; // values for SI_ACCESS.dwFlags -const DWORD +enum DWORD SI_ACCESS_SPECIFIC = 0x00010000, SI_ACCESS_GENERAL = 0x00020000, SI_ACCESS_CONTAINER = 0x00040000, @@ -77,7 +77,7 @@ const DWORD struct SI_INHERIT_TYPE { - const(GUID)* pguid; +const(GUID)* pguid; ULONG dwFlags; LPCWSTR pszName; } @@ -94,7 +94,7 @@ enum SI_PAGE_TYPE { SI_PAGE_OWNER } -const uint PSPCB_SI_INITDIALOG = WM_USER + 1; +enum uint PSPCB_SI_INITDIALOG = WM_USER + 1; interface ISecurityInformation : IUnknown { HRESULT GetObjectInformation(PSI_OBJECT_INFO); diff --git a/src/core/sys/windows/basetsd.d b/src/core/sys/windows/basetsd.d index 54f1529132..9ac18416ef 100644 --- a/src/core/sys/windows/basetsd.d +++ b/src/core/sys/windows/basetsd.d @@ -40,7 +40,7 @@ template TypeDef(T) { alias TypeDef!(void*) HANDLE; /+struct HANDLE { - const(void)* h; +const(void)* h; alias h this; }+/ @@ -51,7 +51,7 @@ alias HANDLE* PHANDLE, LPHANDLE; version (Win64) { alias long __int3264; - const ulong ADDRESS_TAG_BIT = 0x40000000000; +enum ulong ADDRESS_TAG_BIT = 0x40000000000; alias long INT_PTR, LONG_PTR; alias long* PINT_PTR, PLONG_PTR; @@ -79,7 +79,7 @@ version (Win64) { } else { alias int __int3264; - const uint ADDRESS_TAG_BIT = 0x80000000; +enum uint ADDRESS_TAG_BIT = 0x80000000; alias int INT_PTR, LONG_PTR; alias int* PINT_PTR, PLONG_PTR; diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 467bc2a895..ba39081628 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -18,7 +18,7 @@ private import core.sys.windows.objfwd; // for LPSTREAM import core.sys.windows.prsht; -const COMCTL32_VERSION = 6; +enum COMCTL32_VERSION = 6; const TCHAR[] DRAGLISTMSGSTRING = "commctrl_DragListMsg", @@ -104,7 +104,7 @@ enum { CBENF_DROPDOWN // = 4 } -const CBEMAXSTRLEN = 260; +enum CBEMAXSTRLEN = 260; enum { DL_BEGINDRAG = 1157, @@ -149,9 +149,9 @@ enum { PGS_DRAGNDROP = 0x00000004 } -const CMB_MASKED = 2; +enum CMB_MASKED = 2; -const MINSYSCOMMAND = SC_SIZE; +enum MINSYSCOMMAND = SC_SIZE; enum { SBT_OWNERDRAW = 0x1000, @@ -593,7 +593,7 @@ static if (_WIN32_IE >= 0x400) { } } -const HINST_COMMCTRL = cast(HINSTANCE) (-1); +enum HINST_COMMCTRL = cast(HINSTANCE) (-1); enum { IDB_STD_SMALL_COLOR, @@ -783,7 +783,7 @@ static if (_WIN32_WINNT >= 0x600) { } } -const TBBF_LARGE = 1; +enum TBBF_LARGE = 1; enum { TBN_GETBUTTONINFOA = TBN_FIRST -0, @@ -969,8 +969,8 @@ enum { TTN_POP = TTN_FIRST-2 } -const UD_MAXVAL = 0x7fff; -const UD_MINVAL = -UD_MAXVAL; +enum UD_MAXVAL = 0x7fff; +enum UD_MINVAL = -UD_MAXVAL; enum { UDN_DELTAPOS = UDN_FIRST-1, @@ -1451,10 +1451,10 @@ enum { LVIS_STATEIMAGEMASK = 0xF000 } -const LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR) -1; -const LPSTR LPSTR_TEXTCALLBACKA = cast(LPSTR) -1; +enum LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR) -1; +enum LPSTR LPSTR_TEXTCALLBACKA = cast(LPSTR) -1; -const I_IMAGECALLBACK = -1; +enum I_IMAGECALLBACK = -1; static if(_WIN32_IE >= 0x400) { enum { @@ -1745,13 +1745,13 @@ mixin DECLARE_HANDLE!("HIMAGELIST"); version(Win64) { -const HTREEITEM +enum HTREEITEM TVI_ROOT = cast(HTREEITEM) cast(ULONG_PTR)-0x10000, TVI_FIRST = cast(HTREEITEM) cast(ULONG_PTR)-0xffff, TVI_LAST = cast(HTREEITEM) cast(ULONG_PTR)-0xfffe, TVI_SORT = cast(HTREEITEM) cast(ULONG_PTR)-0xfffd; } else { -const HTREEITEM +enum HTREEITEM TVI_ROOT = cast(HTREEITEM) 0xFFFF0000, TVI_FIRST = cast(HTREEITEM) 0xFFFF0001, TVI_LAST = cast(HTREEITEM) 0xFFFF0002, @@ -2619,7 +2619,7 @@ static if(_WIN32_WINNT >= 0x600) { BCN_DROPDOWN = BCN_FIRST + 0x0002, } - const HIMAGELIST BCCL_NOGLYPH = cast(HIMAGELIST)-1; +enum HIMAGELIST BCCL_NOGLYPH = cast(HIMAGELIST)-1; struct BUTTON_SPLITINFO { @@ -2730,8 +2730,8 @@ static if (_WIN32_WINNT >= 0x501) { LM_GETIDEALSIZE = LM_GETIDEALHEIGHT, } - const size_t MAX_LINKID_TEXT = 48; - const size_t L_MAX_URL_LENGTH = 2084; +enum size_t MAX_LINKID_TEXT = 48; +enum size_t L_MAX_URL_LENGTH = 2084; } @@ -3458,7 +3458,7 @@ static if (_WIN32_WINNT >= 0x501) { void* lpReserved; } - const size_t +enum size_t TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, TTTOOLINFOA_V2_SIZE = TOOLINFOA.lpReserved.offsetof, @@ -3488,7 +3488,7 @@ static if (_WIN32_WINNT >= 0x501) { LPARAM lParam; } - const size_t +enum size_t TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, TTTOOLINFOA_V2_SIZE = TOOLINFOA.sizeof, @@ -3514,7 +3514,7 @@ static if (_WIN32_WINNT >= 0x501) { LPWSTR lpszText; } - const size_t +enum size_t TTTOOLINFOA_V1_SIZE = TOOLINFOA.sizeof, TTTOOLINFOW_V1_SIZE = TOOLINFOW.sizeof; } @@ -6270,13 +6270,13 @@ static if (_WIN32_WINNT >= 0x501) { } alias EDITBALLOONTIP* PEDITBALLOONTIP; - const EM_SETCUEBANNER = ECM_FIRST + 1; - const EM_GETCUEBANNER = ECM_FIRST + 2; - const EM_SHOWBALLOONTIP = ECM_FIRST + 3; - const EM_HIDEBALLOONTIP = ECM_FIRST + 4; +enum EM_SETCUEBANNER = ECM_FIRST + 1; +enum EM_GETCUEBANNER = ECM_FIRST + 2; +enum EM_SHOWBALLOONTIP = ECM_FIRST + 3; +enum EM_HIDEBALLOONTIP = ECM_FIRST + 4; } static if (_WIN32_WINNT >= 0x600) { - const EM_SETHILITE = ECM_FIRST + 5; - const EM_GETHILITE = ECM_FIRST + 6; +enum EM_SETHILITE = ECM_FIRST + 5; +enum EM_GETHILITE = ECM_FIRST + 6; } diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index 0be7ca9f17..81fafbd280 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -210,7 +210,7 @@ enum : DWORD { PD_RESULT_APPLY } - const DWORD START_PAGE_GENERAL = 0xFFFFFFFF; +enum DWORD START_PAGE_GENERAL = 0xFFFFFFFF; //} enum { @@ -251,7 +251,7 @@ enum : int { CD_LBSELADD } -const WORD DN_DEFAULTPRN = 1; +enum WORD DN_DEFAULTPRN = 1; /+ // Both MinGW and the windows docs indicate that there are macros for the send messages @@ -468,7 +468,7 @@ struct OPENFILENAMEW { } alias OPENFILENAMEW* LPOPENFILENAMEW; -const size_t OPENFILENAME_SIZE_VERSION_400 = 76; +enum size_t OPENFILENAME_SIZE_VERSION_400 = 76; struct OFNOTIFYA { NMHDR hdr; diff --git a/src/core/sys/windows/custcntl.d b/src/core/sys/windows/custcntl.d index 9c741a4b1d..4044ec3153 100644 --- a/src/core/sys/windows/custcntl.d +++ b/src/core/sys/windows/custcntl.d @@ -15,9 +15,9 @@ version (ANSI) {} else version = Unicode; private import core.sys.windows.windef; // FIXME: check type -const CCF_NOTEXT = 1; +enum CCF_NOTEXT = 1; -const size_t +enum size_t CCHCCCLASS = 32, CCHCCDESC = 32, CCHCCTEXT = 256; diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index e596cb6214..9cda322b35 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -137,7 +137,7 @@ enum : UINT { #define CBR_BLOCK ((HDDEDATA)0xffffffff) +/ -const DWORD +enum DWORD APPCLASS_STANDARD = 0, APPCLASS_MONITOR = 0x00000001, APPCLASS_MASK = 0x0000000F, diff --git a/src/core/sys/windows/dhcpcsdk.d b/src/core/sys/windows/dhcpcsdk.d index e0d2f2b9ae..4c0db442d6 100644 --- a/src/core/sys/windows/dhcpcsdk.d +++ b/src/core/sys/windows/dhcpcsdk.d @@ -19,9 +19,9 @@ or WindowsVista is set");*/ //#if (_WIN32_WINNT >= 0x500) // FIXME: check type -const DHCPCAPI_REGISTER_HANDLE_EVENT = 1; -const DHCPCAPI_REQUEST_PERSISTENT = 1; -const DHCPCAPI_REQUEST_SYNCHRONOUS = 2; +enum DHCPCAPI_REGISTER_HANDLE_EVENT = 1; +enum DHCPCAPI_REQUEST_PERSISTENT = 1; +enum DHCPCAPI_REQUEST_SYNCHRONOUS = 2; struct DHCPCAPI_CLASSID { ULONG Flags; diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index bc5f7852f7..1a1676ca24 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -22,12 +22,12 @@ private import core.sys.windows.winbase, core.sys.windows.windef; // FIXME: check types of constants -const API_VERSION_NUMBER = 7; +enum API_VERSION_NUMBER = 7; -const BIND_NO_BOUND_IMPORTS = 1; -const BIND_NO_UPDATE = 2; -const BIND_ALL_IMAGES = 4; -const BIND_CACHE_IMPORT_DLLS = 8; +enum BIND_NO_BOUND_IMPORTS = 1; +enum BIND_NO_UPDATE = 2; +enum BIND_ALL_IMAGES = 4; +enum BIND_CACHE_IMPORT_DLLS = 8; enum { CBA_DEFERRED_SYMBOL_LOAD_START = 1, @@ -37,12 +37,12 @@ enum { CBA_DUPLICATE_SYMBOL } -const CERT_PE_IMAGE_DIGEST_DEBUG_INFO = 1; -const CERT_PE_IMAGE_DIGEST_RESOURCES = 2; -const CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO = 4; -const CERT_PE_IMAGE_DIGEST_NON_PE_INFO = 8; +enum CERT_PE_IMAGE_DIGEST_DEBUG_INFO = 1; +enum CERT_PE_IMAGE_DIGEST_RESOURCES = 2; +enum CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO = 4; +enum CERT_PE_IMAGE_DIGEST_NON_PE_INFO = 8; -const CERT_SECTION_TYPE_ANY = 255; +enum CERT_SECTION_TYPE_ANY = 255; enum { CHECKSUM_SUCCESS = 0, @@ -52,19 +52,19 @@ enum { CHECKSUM_UNICODE_FAILURE } -const IMAGE_SEPARATION = 65536; +enum IMAGE_SEPARATION = 65536; -const SPLITSYM_REMOVE_PRIVATE = 1; -const SPLITSYM_EXTRACT_ALL = 2; -const SPLITSYM_SYMBOLPATH_IS_SRC = 4; +enum SPLITSYM_REMOVE_PRIVATE = 1; +enum SPLITSYM_EXTRACT_ALL = 2; +enum SPLITSYM_SYMBOLPATH_IS_SRC = 4; -const SYMF_OMAP_GENERATED = 1; -const SYMF_OMAP_MODIFIED = 2; +enum SYMF_OMAP_GENERATED = 1; +enum SYMF_OMAP_MODIFIED = 2; -const SYMOPT_CASE_INSENSITIVE = 1; -const SYMOPT_UNDNAME = 2; -const SYMOPT_DEFERRED_LOADS = 4; -const SYMOPT_NO_CPP = 8; +enum SYMOPT_CASE_INSENSITIVE = 1; +enum SYMOPT_UNDNAME = 2; +enum SYMOPT_DEFERRED_LOADS = 4; +enum SYMOPT_NO_CPP = 8; //const SYMOPT_LOAD_LINES = 16; //const SYMOPT_OMAP_FIND_NEAREST = 32; public import core.sys.windows.dbghelp_types : @@ -73,23 +73,23 @@ public import core.sys.windows.dbghelp_types : SYMOPT_LOAD_LINES, SYMOPT_DEBUG; -const UNDNAME_COMPLETE = 0; -const UNDNAME_NO_LEADING_UNDERSCORES = 1; -const UNDNAME_NO_MS_KEYWORDS = 2; -const UNDNAME_NO_FUNCTION_RETURNS = 4; -const UNDNAME_NO_ALLOCATION_MODEL = 8; -const UNDNAME_NO_ALLOCATION_LANGUAGE = 16; -const UNDNAME_NO_MS_THISTYPE = 32; -const UNDNAME_NO_CV_THISTYPE = 64; -const UNDNAME_NO_THISTYPE = 96; -const UNDNAME_NO_ACCESS_SPECIFIERS = 128; -const UNDNAME_NO_THROW_SIGNATURES = 256; -const UNDNAME_NO_MEMBER_TYPE = 512; -const UNDNAME_NO_RETURN_UDT_MODEL = 1024; -const UNDNAME_32_BIT_DECODE = 2048; -const UNDNAME_NAME_ONLY = 4096; -const UNDNAME_NO_ARGUMENTS = 8192; -const UNDNAME_NO_SPECIAL_SYMS = 16384; +enum UNDNAME_COMPLETE = 0; +enum UNDNAME_NO_LEADING_UNDERSCORES = 1; +enum UNDNAME_NO_MS_KEYWORDS = 2; +enum UNDNAME_NO_FUNCTION_RETURNS = 4; +enum UNDNAME_NO_ALLOCATION_MODEL = 8; +enum UNDNAME_NO_ALLOCATION_LANGUAGE = 16; +enum UNDNAME_NO_MS_THISTYPE = 32; +enum UNDNAME_NO_CV_THISTYPE = 64; +enum UNDNAME_NO_THISTYPE = 96; +enum UNDNAME_NO_ACCESS_SPECIFIERS = 128; +enum UNDNAME_NO_THROW_SIGNATURES = 256; +enum UNDNAME_NO_MEMBER_TYPE = 512; +enum UNDNAME_NO_RETURN_UDT_MODEL = 1024; +enum UNDNAME_32_BIT_DECODE = 2048; +enum UNDNAME_NAME_ONLY = 4096; +enum UNDNAME_NO_ARGUMENTS = 8192; +enum UNDNAME_NO_SPECIAL_SYMS = 16384; enum IMAGEHLP_STATUS_REASON { BindOutOfMemory, diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d index 54de0846a9..6f8f25a557 100644 --- a/src/core/sys/windows/imm.d +++ b/src/core/sys/windows/imm.d @@ -16,265 +16,265 @@ import core.sys.windows.windef, core.sys.windows.wingdi; import core.sys.windows.winuser; // for the MFS_xxx enums. private import core.sys.windows.w32api; -const WM_CONVERTREQUESTEX = 0x108; -const WM_IME_STARTCOMPOSITION = 0x10D; -const WM_IME_ENDCOMPOSITION = 0x10E; -const WM_IME_COMPOSITION = 0x10F; -const WM_IME_KEYLAST = 0x10F; -const WM_IME_SETCONTEXT = 0x281; -const WM_IME_NOTIFY = 0x282; -const WM_IME_CONTROL = 0x283; -const WM_IME_COMPOSITIONFULL = 0x284; -const WM_IME_SELECT = 0x285; -const WM_IME_CHAR = 0x286; +enum WM_CONVERTREQUESTEX = 0x108; +enum WM_IME_STARTCOMPOSITION = 0x10D; +enum WM_IME_ENDCOMPOSITION = 0x10E; +enum WM_IME_COMPOSITION = 0x10F; +enum WM_IME_KEYLAST = 0x10F; +enum WM_IME_SETCONTEXT = 0x281; +enum WM_IME_NOTIFY = 0x282; +enum WM_IME_CONTROL = 0x283; +enum WM_IME_COMPOSITIONFULL = 0x284; +enum WM_IME_SELECT = 0x285; +enum WM_IME_CHAR = 0x286; //static if (_WIN32_WINNT >= 0x500) { - const WM_IME_REQUEST = 0x288; +enum WM_IME_REQUEST = 0x288; //} -const WM_IME_KEYDOWN = 0x290; -const WM_IME_KEYUP = 0x291; - - -const IMC_GETCANDIDATEPOS=7; -const IMC_SETCANDIDATEPOS=8; -const IMC_GETCOMPOSITIONFONT=9; -const IMC_SETCOMPOSITIONFONT=10; -const IMC_GETCOMPOSITIONWINDOW=11; -const IMC_SETCOMPOSITIONWINDOW=12; -const IMC_GETSTATUSWINDOWPOS=15; -const IMC_SETSTATUSWINDOWPOS=16; -const IMC_CLOSESTATUSWINDOW=0x21; -const IMC_OPENSTATUSWINDOW=0x22; -const IMN_CLOSESTATUSWINDOW=1; -const IMN_OPENSTATUSWINDOW=2; -const IMN_CHANGECANDIDATE=3; -const IMN_CLOSECANDIDATE=4; -const IMN_OPENCANDIDATE=5; -const IMN_SETCONVERSIONMODE=6; -const IMN_SETSENTENCEMODE=7; -const IMN_SETOPENSTATUS=8; -const IMN_SETCANDIDATEPOS=9; -const IMN_SETCOMPOSITIONFONT=10; -const IMN_SETCOMPOSITIONWINDOW=11; -const IMN_SETSTATUSWINDOWPOS=12; -const IMN_GUIDELINE=13; -const IMN_PRIVATE=14; - -const NI_OPENCANDIDATE=16; -const NI_CLOSECANDIDATE=17; -const NI_SELECTCANDIDATESTR=18; -const NI_CHANGECANDIDATELIST=19; -const NI_FINALIZECONVERSIONRESULT=20; -const NI_COMPOSITIONSTR=21; -const NI_SETCANDIDATE_PAGESTART=22; -const NI_SETCANDIDATE_PAGESIZE=23; -const NI_IMEMENUSELECTED=24; - -const ISC_SHOWUICANDIDATEWINDOW=1; -const ISC_SHOWUICOMPOSITIONWINDOW=0x80000000; -const ISC_SHOWUIGUIDELINE=0x40000000; -const ISC_SHOWUIALLCANDIDATEWINDOW=15; -const ISC_SHOWUIALL=0xC000000F; - -const CPS_COMPLETE=1; -const CPS_CONVERT=2; -const CPS_REVERT=3; -const CPS_CANCEL=4; - -const IME_CHOTKEY_IME_NONIME_TOGGLE=16; -const IME_CHOTKEY_SHAPE_TOGGLE=17; -const IME_CHOTKEY_SYMBOL_TOGGLE=18; -const IME_JHOTKEY_CLOSE_OPEN=0x30; -const IME_KHOTKEY_SHAPE_TOGGLE=0x50; -const IME_KHOTKEY_HANJACONVERT=0x51; -const IME_KHOTKEY_ENGLISH=0x52; -const IME_THOTKEY_IME_NONIME_TOGGLE=0x70; -const IME_THOTKEY_SHAPE_TOGGLE=0x71; -const IME_THOTKEY_SYMBOL_TOGGLE=0x72; -const IME_HOTKEY_DSWITCH_FIRST=256; -const IME_HOTKEY_DSWITCH_LAST=0x11F; -const IME_ITHOTKEY_RESEND_RESULTSTR=512; -const IME_ITHOTKEY_PREVIOUS_COMPOSITION=513; -const IME_ITHOTKEY_UISTYLE_TOGGLE=514; - -const GCS_COMPREADSTR=1; -const GCS_COMPREADATTR=2; -const GCS_COMPREADCLAUSE=4; -const GCS_COMPSTR=8; -const GCS_COMPATTR=16; -const GCS_COMPCLAUSE=32; -const GCS_CURSORPOS=128; -const GCS_DELTASTART=256; -const GCS_RESULTREADSTR=512; -const GCS_RESULTREADCLAUSE=1024; -const GCS_RESULTSTR=2048; -const GCS_RESULTCLAUSE=4096; - -const CS_INSERTCHAR=0x2000; -const CS_NOMOVECARET=0x4000; - -const IMEVER_0310=0x3000A; -const IMEVER_0400=0x40000; - -const IME_PROP_AT_CARET=0x10000; -const IME_PROP_SPECIAL_UI=0x20000; -const IME_PROP_CANDLIST_START_FROM_1=0x40000; -const IME_PROP_UNICODE=0x80000; - -const UI_CAP_2700=1; -const UI_CAP_ROT90=2; -const UI_CAP_ROTANY=4; - -const SCS_CAP_COMPSTR=1; -const SCS_CAP_MAKEREAD=2; -const SELECT_CAP_CONVERSION=1; -const SELECT_CAP_SENTENCE=2; -const GGL_LEVEL=1; -const GGL_INDEX=2; -const GGL_STRING=3; -const GGL_PRIVATE=4; -const GL_LEVEL_NOGUIDELINE=0; -const GL_LEVEL_FATAL=1; -const GL_LEVEL_ERROR=2; -const GL_LEVEL_WARNING=3; -const GL_LEVEL_INFORMATION=4; -const GL_ID_UNKNOWN=0; -const GL_ID_NOMODULE=1; -const GL_ID_NODICTIONARY=16; -const GL_ID_CANNOTSAVE=17; -const GL_ID_NOCONVERT=32; -const GL_ID_TYPINGERROR=33; -const GL_ID_TOOMANYSTROKE=34; -const GL_ID_READINGCONFLICT=35; -const GL_ID_INPUTREADING=36; -const GL_ID_INPUTRADICAL=37; -const GL_ID_INPUTCODE=38; -const GL_ID_INPUTSYMBOL=39; -const GL_ID_CHOOSECANDIDATE=40; -const GL_ID_REVERSECONVERSION=41; -const GL_ID_PRIVATE_FIRST=0x8000; -const GL_ID_PRIVATE_LAST=0xFFFF; - -const DWORD IGP_GETIMEVERSION = -4; -const IGP_PROPERTY=4; -const IGP_CONVERSION=8; -const IGP_SENTENCE=12; -const IGP_UI=16; -const IGP_SETCOMPSTR=0x14; -const IGP_SELECT=0x18; - -const SCS_SETSTR = GCS_COMPREADSTR|GCS_COMPSTR; -const SCS_CHANGEATTR = GCS_COMPREADATTR|GCS_COMPATTR; -const SCS_CHANGECLAUSE = GCS_COMPREADCLAUSE|GCS_COMPCLAUSE; - -const ATTR_INPUT=0; -const ATTR_TARGET_CONVERTED=1; -const ATTR_CONVERTED=2; -const ATTR_TARGET_NOTCONVERTED=3; -const ATTR_INPUT_ERROR=4; -const ATTR_FIXEDCONVERTED=5; -const CFS_DEFAULT=0; -const CFS_RECT=1; -const CFS_POINT=2; -const CFS_SCREEN=4; -const CFS_FORCE_POSITION=32; -const CFS_CANDIDATEPOS=64; -const CFS_EXCLUDE=128; -const GCL_CONVERSION=1; -const GCL_REVERSECONVERSION=2; -const GCL_REVERSE_LENGTH=3; - -const IME_CMODE_ALPHANUMERIC=0; -const IME_CMODE_NATIVE=1; -const IME_CMODE_CHINESE=IME_CMODE_NATIVE; -const IME_CMODE_HANGEUL=IME_CMODE_NATIVE; -const IME_CMODE_HANGUL=IME_CMODE_NATIVE; -const IME_CMODE_JAPANESE=IME_CMODE_NATIVE; -const IME_CMODE_KATAKANA=2; -const IME_CMODE_LANGUAGE=3; -const IME_CMODE_FULLSHAPE=8; -const IME_CMODE_ROMAN=16; -const IME_CMODE_CHARCODE=32; -const IME_CMODE_HANJACONVERT=64; -const IME_CMODE_SOFTKBD=128; -const IME_CMODE_NOCONVERSION=256; -const IME_CMODE_EUDC=512; -const IME_CMODE_SYMBOL=1024; -const IME_CMODE_FIXED=2048; -const IME_SMODE_NONE=0; -const IME_SMODE_PLAURALCLAUSE=1; -const IME_SMODE_SINGLECONVERT=2; -const IME_SMODE_AUTOMATIC=4; -const IME_SMODE_PHRASEPREDICT=8; -const IME_CAND_UNKNOWN=0; -const IME_CAND_READ=1; -const IME_CAND_CODE=2; -const IME_CAND_MEANING=3; -const IME_CAND_RADICAL=4; -const IME_CAND_STROKE=5; -const IMM_ERROR_NODATA=(-1); -const IMM_ERROR_GENERAL=(-2); -const IME_CONFIG_GENERAL=1; -const IME_CONFIG_REGISTERWORD=2; -const IME_CONFIG_SELECTDICTIONARY=3; -const IME_ESC_QUERY_SUPPORT=3; -const IME_ESC_RESERVED_FIRST=4; -const IME_ESC_RESERVED_LAST=0x7FF; -const IME_ESC_PRIVATE_FIRST=0x800; -const IME_ESC_PRIVATE_LAST=0xFFF; -const IME_ESC_SEQUENCE_TO_INTERNAL=0x1001; -const IME_ESC_GET_EUDC_DICTIONARY=0x1003; -const IME_ESC_SET_EUDC_DICTIONARY=0x1004; -const IME_ESC_MAX_KEY=0x1005; -const IME_ESC_IME_NAME=0x1006; -const IME_ESC_SYNC_HOTKEY=0x1007; -const IME_ESC_HANJA_MODE=0x1008; -const IME_ESC_AUTOMATA=0x1009; -const IME_REGWORD_STYLE_EUDC=1; -const IME_REGWORD_STYLE_USER_FIRST=0x80000000; -const IME_REGWORD_STYLE_USER_LAST=0xFFFFFFFF; - -const SOFTKEYBOARD_TYPE_T1=1; -const SOFTKEYBOARD_TYPE_C1=2; - -const IMEMENUITEM_STRING_SIZE=80; - -const MOD_ALT=1; -const MOD_CONTROL=2; -const MOD_SHIFT=4; -const MOD_WIN=8; -const MOD_IGNORE_ALL_MODIFIER=1024; -const MOD_ON_KEYUP=2048; -const MOD_RIGHT=16384; -const MOD_LEFT=32768; - -const IACE_CHILDREN=1; -const IACE_DEFAULT=16; -const IACE_IGNORENOCONTEXT=32; - -const IGIMIF_RIGHTMENU=1; - -const IGIMII_CMODE=1; -const IGIMII_SMODE=2; -const IGIMII_CONFIGURE=4; -const IGIMII_TOOLS=8; -const IGIMII_HELP=16; -const IGIMII_OTHER=32; -const IGIMII_INPUTTOOLS=64; - -const IMFT_RADIOCHECK=1; -const IMFT_SEPARATOR=2; -const IMFT_SUBMENU=4; - -const IMFS_GRAYED=MFS_GRAYED; -const IMFS_DISABLED=MFS_DISABLED; -const IMFS_CHECKED=MFS_CHECKED; -const IMFS_HILITE=MFS_HILITE; -const IMFS_ENABLED=MFS_ENABLED; -const IMFS_UNCHECKED=MFS_UNCHECKED; -const IMFS_UNHILITE=MFS_UNHILITE; -const IMFS_DEFAULT=MFS_DEFAULT; - -const STYLE_DESCRIPTION_SIZE=32; +enum WM_IME_KEYDOWN = 0x290; +enum WM_IME_KEYUP = 0x291; + + +enum IMC_GETCANDIDATEPOS=7; +enum IMC_SETCANDIDATEPOS=8; +enum IMC_GETCOMPOSITIONFONT=9; +enum IMC_SETCOMPOSITIONFONT=10; +enum IMC_GETCOMPOSITIONWINDOW=11; +enum IMC_SETCOMPOSITIONWINDOW=12; +enum IMC_GETSTATUSWINDOWPOS=15; +enum IMC_SETSTATUSWINDOWPOS=16; +enum IMC_CLOSESTATUSWINDOW=0x21; +enum IMC_OPENSTATUSWINDOW=0x22; +enum IMN_CLOSESTATUSWINDOW=1; +enum IMN_OPENSTATUSWINDOW=2; +enum IMN_CHANGECANDIDATE=3; +enum IMN_CLOSECANDIDATE=4; +enum IMN_OPENCANDIDATE=5; +enum IMN_SETCONVERSIONMODE=6; +enum IMN_SETSENTENCEMODE=7; +enum IMN_SETOPENSTATUS=8; +enum IMN_SETCANDIDATEPOS=9; +enum IMN_SETCOMPOSITIONFONT=10; +enum IMN_SETCOMPOSITIONWINDOW=11; +enum IMN_SETSTATUSWINDOWPOS=12; +enum IMN_GUIDELINE=13; +enum IMN_PRIVATE=14; + +enum NI_OPENCANDIDATE=16; +enum NI_CLOSECANDIDATE=17; +enum NI_SELECTCANDIDATESTR=18; +enum NI_CHANGECANDIDATELIST=19; +enum NI_FINALIZECONVERSIONRESULT=20; +enum NI_COMPOSITIONSTR=21; +enum NI_SETCANDIDATE_PAGESTART=22; +enum NI_SETCANDIDATE_PAGESIZE=23; +enum NI_IMEMENUSELECTED=24; + +enum ISC_SHOWUICANDIDATEWINDOW=1; +enum ISC_SHOWUICOMPOSITIONWINDOW=0x80000000; +enum ISC_SHOWUIGUIDELINE=0x40000000; +enum ISC_SHOWUIALLCANDIDATEWINDOW=15; +enum ISC_SHOWUIALL=0xC000000F; + +enum CPS_COMPLETE=1; +enum CPS_CONVERT=2; +enum CPS_REVERT=3; +enum CPS_CANCEL=4; + +enum IME_CHOTKEY_IME_NONIME_TOGGLE=16; +enum IME_CHOTKEY_SHAPE_TOGGLE=17; +enum IME_CHOTKEY_SYMBOL_TOGGLE=18; +enum IME_JHOTKEY_CLOSE_OPEN=0x30; +enum IME_KHOTKEY_SHAPE_TOGGLE=0x50; +enum IME_KHOTKEY_HANJACONVERT=0x51; +enum IME_KHOTKEY_ENGLISH=0x52; +enum IME_THOTKEY_IME_NONIME_TOGGLE=0x70; +enum IME_THOTKEY_SHAPE_TOGGLE=0x71; +enum IME_THOTKEY_SYMBOL_TOGGLE=0x72; +enum IME_HOTKEY_DSWITCH_FIRST=256; +enum IME_HOTKEY_DSWITCH_LAST=0x11F; +enum IME_ITHOTKEY_RESEND_RESULTSTR=512; +enum IME_ITHOTKEY_PREVIOUS_COMPOSITION=513; +enum IME_ITHOTKEY_UISTYLE_TOGGLE=514; + +enum GCS_COMPREADSTR=1; +enum GCS_COMPREADATTR=2; +enum GCS_COMPREADCLAUSE=4; +enum GCS_COMPSTR=8; +enum GCS_COMPATTR=16; +enum GCS_COMPCLAUSE=32; +enum GCS_CURSORPOS=128; +enum GCS_DELTASTART=256; +enum GCS_RESULTREADSTR=512; +enum GCS_RESULTREADCLAUSE=1024; +enum GCS_RESULTSTR=2048; +enum GCS_RESULTCLAUSE=4096; + +enum CS_INSERTCHAR=0x2000; +enum CS_NOMOVECARET=0x4000; + +enum IMEVER_0310=0x3000A; +enum IMEVER_0400=0x40000; + +enum IME_PROP_AT_CARET=0x10000; +enum IME_PROP_SPECIAL_UI=0x20000; +enum IME_PROP_CANDLIST_START_FROM_1=0x40000; +enum IME_PROP_UNICODE=0x80000; + +enum UI_CAP_2700=1; +enum UI_CAP_ROT90=2; +enum UI_CAP_ROTANY=4; + +enum SCS_CAP_COMPSTR=1; +enum SCS_CAP_MAKEREAD=2; +enum SELECT_CAP_CONVERSION=1; +enum SELECT_CAP_SENTENCE=2; +enum GGL_LEVEL=1; +enum GGL_INDEX=2; +enum GGL_STRING=3; +enum GGL_PRIVATE=4; +enum GL_LEVEL_NOGUIDELINE=0; +enum GL_LEVEL_FATAL=1; +enum GL_LEVEL_ERROR=2; +enum GL_LEVEL_WARNING=3; +enum GL_LEVEL_INFORMATION=4; +enum GL_ID_UNKNOWN=0; +enum GL_ID_NOMODULE=1; +enum GL_ID_NODICTIONARY=16; +enum GL_ID_CANNOTSAVE=17; +enum GL_ID_NOCONVERT=32; +enum GL_ID_TYPINGERROR=33; +enum GL_ID_TOOMANYSTROKE=34; +enum GL_ID_READINGCONFLICT=35; +enum GL_ID_INPUTREADING=36; +enum GL_ID_INPUTRADICAL=37; +enum GL_ID_INPUTCODE=38; +enum GL_ID_INPUTSYMBOL=39; +enum GL_ID_CHOOSECANDIDATE=40; +enum GL_ID_REVERSECONVERSION=41; +enum GL_ID_PRIVATE_FIRST=0x8000; +enum GL_ID_PRIVATE_LAST=0xFFFF; + +enum DWORD IGP_GETIMEVERSION = -4; +enum IGP_PROPERTY=4; +enum IGP_CONVERSION=8; +enum IGP_SENTENCE=12; +enum IGP_UI=16; +enum IGP_SETCOMPSTR=0x14; +enum IGP_SELECT=0x18; + +enum SCS_SETSTR = GCS_COMPREADSTR|GCS_COMPSTR; +enum SCS_CHANGEATTR = GCS_COMPREADATTR|GCS_COMPATTR; +enum SCS_CHANGECLAUSE = GCS_COMPREADCLAUSE|GCS_COMPCLAUSE; + +enum ATTR_INPUT=0; +enum ATTR_TARGET_CONVERTED=1; +enum ATTR_CONVERTED=2; +enum ATTR_TARGET_NOTCONVERTED=3; +enum ATTR_INPUT_ERROR=4; +enum ATTR_FIXEDCONVERTED=5; +enum CFS_DEFAULT=0; +enum CFS_RECT=1; +enum CFS_POINT=2; +enum CFS_SCREEN=4; +enum CFS_FORCE_POSITION=32; +enum CFS_CANDIDATEPOS=64; +enum CFS_EXCLUDE=128; +enum GCL_CONVERSION=1; +enum GCL_REVERSECONVERSION=2; +enum GCL_REVERSE_LENGTH=3; + +enum IME_CMODE_ALPHANUMERIC=0; +enum IME_CMODE_NATIVE=1; +enum IME_CMODE_CHINESE=IME_CMODE_NATIVE; +enum IME_CMODE_HANGEUL=IME_CMODE_NATIVE; +enum IME_CMODE_HANGUL=IME_CMODE_NATIVE; +enum IME_CMODE_JAPANESE=IME_CMODE_NATIVE; +enum IME_CMODE_KATAKANA=2; +enum IME_CMODE_LANGUAGE=3; +enum IME_CMODE_FULLSHAPE=8; +enum IME_CMODE_ROMAN=16; +enum IME_CMODE_CHARCODE=32; +enum IME_CMODE_HANJACONVERT=64; +enum IME_CMODE_SOFTKBD=128; +enum IME_CMODE_NOCONVERSION=256; +enum IME_CMODE_EUDC=512; +enum IME_CMODE_SYMBOL=1024; +enum IME_CMODE_FIXED=2048; +enum IME_SMODE_NONE=0; +enum IME_SMODE_PLAURALCLAUSE=1; +enum IME_SMODE_SINGLECONVERT=2; +enum IME_SMODE_AUTOMATIC=4; +enum IME_SMODE_PHRASEPREDICT=8; +enum IME_CAND_UNKNOWN=0; +enum IME_CAND_READ=1; +enum IME_CAND_CODE=2; +enum IME_CAND_MEANING=3; +enum IME_CAND_RADICAL=4; +enum IME_CAND_STROKE=5; +enum IMM_ERROR_NODATA=(-1); +enum IMM_ERROR_GENERAL=(-2); +enum IME_CONFIG_GENERAL=1; +enum IME_CONFIG_REGISTERWORD=2; +enum IME_CONFIG_SELECTDICTIONARY=3; +enum IME_ESC_QUERY_SUPPORT=3; +enum IME_ESC_RESERVED_FIRST=4; +enum IME_ESC_RESERVED_LAST=0x7FF; +enum IME_ESC_PRIVATE_FIRST=0x800; +enum IME_ESC_PRIVATE_LAST=0xFFF; +enum IME_ESC_SEQUENCE_TO_INTERNAL=0x1001; +enum IME_ESC_GET_EUDC_DICTIONARY=0x1003; +enum IME_ESC_SET_EUDC_DICTIONARY=0x1004; +enum IME_ESC_MAX_KEY=0x1005; +enum IME_ESC_IME_NAME=0x1006; +enum IME_ESC_SYNC_HOTKEY=0x1007; +enum IME_ESC_HANJA_MODE=0x1008; +enum IME_ESC_AUTOMATA=0x1009; +enum IME_REGWORD_STYLE_EUDC=1; +enum IME_REGWORD_STYLE_USER_FIRST=0x80000000; +enum IME_REGWORD_STYLE_USER_LAST=0xFFFFFFFF; + +enum SOFTKEYBOARD_TYPE_T1=1; +enum SOFTKEYBOARD_TYPE_C1=2; + +enum IMEMENUITEM_STRING_SIZE=80; + +enum MOD_ALT=1; +enum MOD_CONTROL=2; +enum MOD_SHIFT=4; +enum MOD_WIN=8; +enum MOD_IGNORE_ALL_MODIFIER=1024; +enum MOD_ON_KEYUP=2048; +enum MOD_RIGHT=16384; +enum MOD_LEFT=32768; + +enum IACE_CHILDREN=1; +enum IACE_DEFAULT=16; +enum IACE_IGNORENOCONTEXT=32; + +enum IGIMIF_RIGHTMENU=1; + +enum IGIMII_CMODE=1; +enum IGIMII_SMODE=2; +enum IGIMII_CONFIGURE=4; +enum IGIMII_TOOLS=8; +enum IGIMII_HELP=16; +enum IGIMII_OTHER=32; +enum IGIMII_INPUTTOOLS=64; + +enum IMFT_RADIOCHECK=1; +enum IMFT_SEPARATOR=2; +enum IMFT_SUBMENU=4; + +enum IMFS_GRAYED=MFS_GRAYED; +enum IMFS_DISABLED=MFS_DISABLED; +enum IMFS_CHECKED=MFS_CHECKED; +enum IMFS_HILITE=MFS_HILITE; +enum IMFS_ENABLED=MFS_ENABLED; +enum IMFS_UNCHECKED=MFS_UNCHECKED; +enum IMFS_UNHILITE=MFS_UNHILITE; +enum IMFS_DEFAULT=MFS_DEFAULT; + +enum STYLE_DESCRIPTION_SIZE=32; alias DWORD HIMC; alias DWORD HIMCC; diff --git a/src/core/sys/windows/ipexport.d b/src/core/sys/windows/ipexport.d index ddaeadda68..6f4853567c 100644 --- a/src/core/sys/windows/ipexport.d +++ b/src/core/sys/windows/ipexport.d @@ -12,7 +12,7 @@ version (Windows): private import core.sys.windows.windef; -const size_t MAX_ADAPTER_NAME = 128; +enum size_t MAX_ADAPTER_NAME = 128; // IP STATUS flags enum : IP_STATUS { @@ -46,7 +46,7 @@ enum : IP_STATUS { } // IP header Flags values -const byte IP_FLAG_DF = 2; +enum byte IP_FLAG_DF = 2; // IP Option types enum : ubyte { @@ -61,7 +61,7 @@ enum : ubyte { IP_OPT_ROUTER_ALERT = 0x94 } -const ubyte MAX_OPT_SIZE = 40; +enum ubyte MAX_OPT_SIZE = 40; alias uint IPAddr, IPMask, IP_STATUS; diff --git a/src/core/sys/windows/iprtrmib.d b/src/core/sys/windows/iprtrmib.d index 37db3c9075..d4f622dba8 100644 --- a/src/core/sys/windows/iprtrmib.d +++ b/src/core/sys/windows/iprtrmib.d @@ -15,7 +15,7 @@ private import core.sys.windows.windef; // FIXME: check types of constants -const size_t +enum size_t MAXLEN_PHYSADDR = 8, MAXLEN_IFDESCR = 256, MAX_INTERFACE_NAME_LEN = 256; @@ -49,7 +49,7 @@ enum { MIB_TCP_STATE_DELETE_TCB // = 12 } -const DWORD +enum DWORD MIB_USE_CURRENT_TTL = -1, MIB_USE_CURRENT_FORWARDING = -1, MIB_TCP_MAXCONN_DYNAMIC = -1; diff --git a/src/core/sys/windows/iptypes.d b/src/core/sys/windows/iptypes.d index 71f4d2878a..875756f233 100644 --- a/src/core/sys/windows/iptypes.d +++ b/src/core/sys/windows/iptypes.d @@ -21,7 +21,7 @@ version(Tango){ } //#include -const size_t +enum size_t DEFAULT_MINIMUM_ENTITIES = 32, MAX_ADAPTER_ADDRESS_LENGTH = 8, MAX_ADAPTER_DESCRIPTION_LENGTH = 128, @@ -30,7 +30,7 @@ const size_t MAX_HOSTNAME_LEN = 128, MAX_SCOPE_ID_LEN = 256; -const UINT +enum UINT BROADCAST_NODETYPE = 1, PEER_TO_PEER_NODETYPE = 2, MIXED_NODETYPE = 4, diff --git a/src/core/sys/windows/lmaccess.d b/src/core/sys/windows/lmaccess.d index fe7e6fac5f..5846fa193b 100644 --- a/src/core/sys/windows/lmaccess.d +++ b/src/core/sys/windows/lmaccess.d @@ -24,212 +24,212 @@ const wchar[] GROUP_SPECIALGRP_GUESTS = "GUESTS", GROUP_SPECIALGRP_LOCAL = "LOCAL"; -const ACCESS_LETTERS = "RWCXDAP "; - -const NETLOGON_CONTROL_QUERY=1; -const NETLOGON_CONTROL_REPLICATE=2; -const NETLOGON_CONTROL_SYNCHRONIZE=3; -const NETLOGON_CONTROL_PDC_REPLICATE=4; -const NETLOGON_CONTROL_REDISCOVER=5; -const NETLOGON_CONTROL_TC_QUERY=6; -const NETLOGON_CONTROL_BACKUP_CHANGE_LOG=65532; -const NETLOGON_CONTROL_TRUNCATE_LOG=65533; -const NETLOGON_CONTROL_SET_DBFLAG=65534; -const NETLOGON_CONTROL_BREAKPOINT=65535; - -const UF_SCRIPT=1; -const UF_ACCOUNTDISABLE=2; -const UF_HOMEDIR_REQUIRED=8; -const UF_LOCKOUT=16; -const UF_PASSWD_NOTREQD=32; -const UF_PASSWD_CANT_CHANGE=64; -const UF_TEMP_DUPLICATE_ACCOUNT=256; -const UF_NORMAL_ACCOUNT=512; -const UF_INTERDOMAIN_TRUST_ACCOUNT=2048; -const UF_WORKSTATION_TRUST_ACCOUNT=4096; -const UF_SERVER_TRUST_ACCOUNT=8192; -const UF_MNS_LOGON_ACCOUNT=131072; -const UF_MACHINE_ACCOUNT_MASK=UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; -const UF_ACCOUNT_TYPE_MASK=UF_TEMP_DUPLICATE_ACCOUNT|UF_NORMAL_ACCOUNT|UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; -const UF_DONT_EXPIRE_PASSWD=65536; -const UF_SETTABLE_BITS=UF_SCRIPT|UF_ACCOUNTDISABLE|UF_LOCKOUT|UF_HOMEDIR_REQUIRED|UF_PASSWD_NOTREQD|UF_PASSWD_CANT_CHANGE|UF_ACCOUNT_TYPE_MASK|UF_DONT_EXPIRE_PASSWD; - -const FILTER_TEMP_DUPLICATE_ACCOUNT=1; -const FILTER_NORMAL_ACCOUNT=2; -const FILTER_INTERDOMAIN_TRUST_ACCOUNT=8; -const FILTER_WORKSTATION_TRUST_ACCOUNT=16; -const FILTER_SERVER_TRUST_ACCOUNT=32; - -const LG_INCLUDE_INDIRECT=1; - -const AF_OP_PRINT=1; -const AF_OP_COMM=2; -const AF_OP_SERVER=4; -const AF_OP_ACCOUNTS=8; -const AF_SETTABLE_BITS=(AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS); - -const UAS_ROLE_STANDALONE=0; -const UAS_ROLE_MEMBER=1; -const UAS_ROLE_BACKUP=2; -const UAS_ROLE_PRIMARY=3; - -const USER_NAME_PARMNUM=1; -const USER_PASSWORD_PARMNUM=3; -const USER_PASSWORD_AGE_PARMNUM=4; -const USER_PRIV_PARMNUM=5; -const USER_HOME_DIR_PARMNUM=6; -const USER_COMMENT_PARMNUM=7; -const USER_FLAGS_PARMNUM=8; -const USER_SCRIPT_PATH_PARMNUM=9; -const USER_AUTH_FLAGS_PARMNUM=10; -const USER_FULL_NAME_PARMNUM=11; -const USER_USR_COMMENT_PARMNUM=12; -const USER_PARMS_PARMNUM=13; -const USER_WORKSTATIONS_PARMNUM=14; -const USER_LAST_LOGON_PARMNUM=15; -const USER_LAST_LOGOFF_PARMNUM=16; -const USER_ACCT_EXPIRES_PARMNUM=17; -const USER_MAX_STORAGE_PARMNUM=18; -const USER_UNITS_PER_WEEK_PARMNUM=19; -const USER_LOGON_HOURS_PARMNUM=20; -const USER_PAD_PW_COUNT_PARMNUM=21; -const USER_NUM_LOGONS_PARMNUM=22; -const USER_LOGON_SERVER_PARMNUM=23; -const USER_COUNTRY_CODE_PARMNUM=24; -const USER_CODE_PAGE_PARMNUM=25; -const USER_PRIMARY_GROUP_PARMNUM=51; -const USER_PROFILE=52; -const USER_PROFILE_PARMNUM=52; -const USER_HOME_DIR_DRIVE_PARMNUM=53; - -const USER_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM; -const USER_PASSWORD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM; -const USER_PASSWORD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM; -const USER_PRIV_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM; -const USER_HOME_DIR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM; -const USER_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM; -const USER_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM; -const USER_SCRIPT_PATH_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM; -const USER_AUTH_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM; -const USER_FULL_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM; -const USER_USR_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM; -const USER_PARMS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM; -const USER_WORKSTATIONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM; -const USER_LAST_LOGON_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM; -const USER_LAST_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM; -const USER_ACCT_EXPIRES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM; -const USER_MAX_STORAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM; -const USER_UNITS_PER_WEEK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM; -const USER_LOGON_HOURS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM; -const USER_PAD_PW_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM; -const USER_NUM_LOGONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM; -const USER_LOGON_SERVER_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM; -const USER_COUNTRY_CODE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM; -const USER_CODE_PAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM; -const USER_PRIMARY_GROUP_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM; +enum ACCESS_LETTERS = "RWCXDAP "; + +enum NETLOGON_CONTROL_QUERY=1; +enum NETLOGON_CONTROL_REPLICATE=2; +enum NETLOGON_CONTROL_SYNCHRONIZE=3; +enum NETLOGON_CONTROL_PDC_REPLICATE=4; +enum NETLOGON_CONTROL_REDISCOVER=5; +enum NETLOGON_CONTROL_TC_QUERY=6; +enum NETLOGON_CONTROL_BACKUP_CHANGE_LOG=65532; +enum NETLOGON_CONTROL_TRUNCATE_LOG=65533; +enum NETLOGON_CONTROL_SET_DBFLAG=65534; +enum NETLOGON_CONTROL_BREAKPOINT=65535; + +enum UF_SCRIPT=1; +enum UF_ACCOUNTDISABLE=2; +enum UF_HOMEDIR_REQUIRED=8; +enum UF_LOCKOUT=16; +enum UF_PASSWD_NOTREQD=32; +enum UF_PASSWD_CANT_CHANGE=64; +enum UF_TEMP_DUPLICATE_ACCOUNT=256; +enum UF_NORMAL_ACCOUNT=512; +enum UF_INTERDOMAIN_TRUST_ACCOUNT=2048; +enum UF_WORKSTATION_TRUST_ACCOUNT=4096; +enum UF_SERVER_TRUST_ACCOUNT=8192; +enum UF_MNS_LOGON_ACCOUNT=131072; +enum UF_MACHINE_ACCOUNT_MASK=UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; +enum UF_ACCOUNT_TYPE_MASK=UF_TEMP_DUPLICATE_ACCOUNT|UF_NORMAL_ACCOUNT|UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; +enum UF_DONT_EXPIRE_PASSWD=65536; +enum UF_SETTABLE_BITS=UF_SCRIPT|UF_ACCOUNTDISABLE|UF_LOCKOUT|UF_HOMEDIR_REQUIRED|UF_PASSWD_NOTREQD|UF_PASSWD_CANT_CHANGE|UF_ACCOUNT_TYPE_MASK|UF_DONT_EXPIRE_PASSWD; + +enum FILTER_TEMP_DUPLICATE_ACCOUNT=1; +enum FILTER_NORMAL_ACCOUNT=2; +enum FILTER_INTERDOMAIN_TRUST_ACCOUNT=8; +enum FILTER_WORKSTATION_TRUST_ACCOUNT=16; +enum FILTER_SERVER_TRUST_ACCOUNT=32; + +enum LG_INCLUDE_INDIRECT=1; + +enum AF_OP_PRINT=1; +enum AF_OP_COMM=2; +enum AF_OP_SERVER=4; +enum AF_OP_ACCOUNTS=8; +enum AF_SETTABLE_BITS=(AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS); + +enum UAS_ROLE_STANDALONE=0; +enum UAS_ROLE_MEMBER=1; +enum UAS_ROLE_BACKUP=2; +enum UAS_ROLE_PRIMARY=3; + +enum USER_NAME_PARMNUM=1; +enum USER_PASSWORD_PARMNUM=3; +enum USER_PASSWORD_AGE_PARMNUM=4; +enum USER_PRIV_PARMNUM=5; +enum USER_HOME_DIR_PARMNUM=6; +enum USER_COMMENT_PARMNUM=7; +enum USER_FLAGS_PARMNUM=8; +enum USER_SCRIPT_PATH_PARMNUM=9; +enum USER_AUTH_FLAGS_PARMNUM=10; +enum USER_FULL_NAME_PARMNUM=11; +enum USER_USR_COMMENT_PARMNUM=12; +enum USER_PARMS_PARMNUM=13; +enum USER_WORKSTATIONS_PARMNUM=14; +enum USER_LAST_LOGON_PARMNUM=15; +enum USER_LAST_LOGOFF_PARMNUM=16; +enum USER_ACCT_EXPIRES_PARMNUM=17; +enum USER_MAX_STORAGE_PARMNUM=18; +enum USER_UNITS_PER_WEEK_PARMNUM=19; +enum USER_LOGON_HOURS_PARMNUM=20; +enum USER_PAD_PW_COUNT_PARMNUM=21; +enum USER_NUM_LOGONS_PARMNUM=22; +enum USER_LOGON_SERVER_PARMNUM=23; +enum USER_COUNTRY_CODE_PARMNUM=24; +enum USER_CODE_PAGE_PARMNUM=25; +enum USER_PRIMARY_GROUP_PARMNUM=51; +enum USER_PROFILE=52; +enum USER_PROFILE_PARMNUM=52; +enum USER_HOME_DIR_DRIVE_PARMNUM=53; + +enum USER_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM; +enum USER_PASSWORD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM; +enum USER_PASSWORD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM; +enum USER_PRIV_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM; +enum USER_HOME_DIR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM; +enum USER_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM; +enum USER_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM; +enum USER_SCRIPT_PATH_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM; +enum USER_AUTH_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM; +enum USER_FULL_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM; +enum USER_USR_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM; +enum USER_PARMS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM; +enum USER_WORKSTATIONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM; +enum USER_LAST_LOGON_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM; +enum USER_LAST_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM; +enum USER_ACCT_EXPIRES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM; +enum USER_MAX_STORAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM; +enum USER_UNITS_PER_WEEK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM; +enum USER_LOGON_HOURS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM; +enum USER_PAD_PW_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM; +enum USER_NUM_LOGONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM; +enum USER_LOGON_SERVER_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM; +enum USER_COUNTRY_CODE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM; +enum USER_CODE_PAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM; +enum USER_PRIMARY_GROUP_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM; // USER_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. //const USER_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_POSIX_ID_PARMNUM; -const USER_HOME_DIR_DRIVE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM; - -const NULL_USERSETINFO_PASSWD=" "; -const ULONG TIMEQ_FOREVER=-1; -const ULONG USER_MAXSTORAGE_UNLIMITED=-1; -const ULONG USER_NO_LOGOFF=-1; -const UNITS_PER_DAY=24; -const UNITS_PER_WEEK=168; -const USER_PRIV_MASK=3; -const USER_PRIV_GUEST=0; -const USER_PRIV_USER=1; -const USER_PRIV_ADMIN=2; -const MAX_PASSWD_LEN=PWLEN; -const DEF_MIN_PWLEN=6; -const DEF_PWUNIQUENESS=5; -const DEF_MAX_PWHIST=8; -const DEF_MAX_PWAGE=TIMEQ_FOREVER; -const DEF_MIN_PWAGE=0; -const ULONG DEF_FORCE_LOGOFF=0xffffffff; -const DEF_MAX_BADPW=0; -const ONE_DAY=86400; -const VALIDATED_LOGON=0; -const PASSWORD_EXPIRED=2; -const NON_VALIDATED_LOGON=3; -const VALID_LOGOFF=1; - -const MODALS_MIN_PASSWD_LEN_PARMNUM=1; -const MODALS_MAX_PASSWD_AGE_PARMNUM=2; -const MODALS_MIN_PASSWD_AGE_PARMNUM=3; -const MODALS_FORCE_LOGOFF_PARMNUM=4; -const MODALS_PASSWD_HIST_LEN_PARMNUM=5; -const MODALS_ROLE_PARMNUM=6; -const MODALS_PRIMARY_PARMNUM=7; -const MODALS_DOMAIN_NAME_PARMNUM=8; -const MODALS_DOMAIN_ID_PARMNUM=9; -const MODALS_LOCKOUT_DURATION_PARMNUM=10; -const MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM=11; -const MODALS_LOCKOUT_THRESHOLD_PARMNUM=12; - -const MODALS_MIN_PASSWD_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM); -const MODALS_MAX_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM); -const MODALS_MIN_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM); -const MODALS_FORCE_LOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM); -const MODALS_PASSWD_HIST_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM); -const MODALS_ROLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM); -const MODALS_PRIMARY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM); -const MODALS_DOMAIN_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM); -const MODALS_DOMAIN_ID_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM); - -const GROUPIDMASK=0x8000; -const GROUP_ALL_PARMNUM=0; -const GROUP_NAME_PARMNUM=1; -const GROUP_COMMENT_PARMNUM=2; -const GROUP_ATTRIBUTES_PARMNUM=3; - -const GROUP_ALL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM; -const GROUP_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM; -const GROUP_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM; -const GROUP_ATTRIBUTES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM; +enum USER_HOME_DIR_DRIVE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM; + +enum NULL_USERSETINFO_PASSWD=" "; +enum ULONG TIMEQ_FOREVER=-1; +enum ULONG USER_MAXSTORAGE_UNLIMITED=-1; +enum ULONG USER_NO_LOGOFF=-1; +enum UNITS_PER_DAY=24; +enum UNITS_PER_WEEK=168; +enum USER_PRIV_MASK=3; +enum USER_PRIV_GUEST=0; +enum USER_PRIV_USER=1; +enum USER_PRIV_ADMIN=2; +enum MAX_PASSWD_LEN=PWLEN; +enum DEF_MIN_PWLEN=6; +enum DEF_PWUNIQUENESS=5; +enum DEF_MAX_PWHIST=8; +enum DEF_MAX_PWAGE=TIMEQ_FOREVER; +enum DEF_MIN_PWAGE=0; +enum ULONG DEF_FORCE_LOGOFF=0xffffffff; +enum DEF_MAX_BADPW=0; +enum ONE_DAY=86400; +enum VALIDATED_LOGON=0; +enum PASSWORD_EXPIRED=2; +enum NON_VALIDATED_LOGON=3; +enum VALID_LOGOFF=1; + +enum MODALS_MIN_PASSWD_LEN_PARMNUM=1; +enum MODALS_MAX_PASSWD_AGE_PARMNUM=2; +enum MODALS_MIN_PASSWD_AGE_PARMNUM=3; +enum MODALS_FORCE_LOGOFF_PARMNUM=4; +enum MODALS_PASSWD_HIST_LEN_PARMNUM=5; +enum MODALS_ROLE_PARMNUM=6; +enum MODALS_PRIMARY_PARMNUM=7; +enum MODALS_DOMAIN_NAME_PARMNUM=8; +enum MODALS_DOMAIN_ID_PARMNUM=9; +enum MODALS_LOCKOUT_DURATION_PARMNUM=10; +enum MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM=11; +enum MODALS_LOCKOUT_THRESHOLD_PARMNUM=12; + +enum MODALS_MIN_PASSWD_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM); +enum MODALS_MAX_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM); +enum MODALS_MIN_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM); +enum MODALS_FORCE_LOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM); +enum MODALS_PASSWD_HIST_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM); +enum MODALS_ROLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM); +enum MODALS_PRIMARY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM); +enum MODALS_DOMAIN_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM); +enum MODALS_DOMAIN_ID_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM); + +enum GROUPIDMASK=0x8000; +enum GROUP_ALL_PARMNUM=0; +enum GROUP_NAME_PARMNUM=1; +enum GROUP_COMMENT_PARMNUM=2; +enum GROUP_ATTRIBUTES_PARMNUM=3; + +enum GROUP_ALL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM; +enum GROUP_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM; +enum GROUP_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM; +enum GROUP_ATTRIBUTES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM; // GROUP_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. //const GROUP_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_POSIX_ID_PARMNUM; -const LOCALGROUP_NAME_PARMNUM=1; -const LOCALGROUP_COMMENT_PARMNUM=2; -const MAXPERMENTRIES=64; -const ACCESS_NONE=0; -const ACCESS_READ=1; -const ACCESS_WRITE=2; -const ACCESS_CREATE=4; -const ACCESS_EXEC=8; -const ACCESS_DELETE=16; -const ACCESS_ATRIB=32; -const ACCESS_PERM=64; -const ACCESS_ALL = ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM; -const ACCESS_GROUP=0x8000; -const ACCESS_AUDIT=1; -const ACCESS_SUCCESS_OPEN=16; -const ACCESS_SUCCESS_WRITE=32; -const ACCESS_SUCCESS_DELETE=64; -const ACCESS_SUCCESS_ACL=128; -const ACCESS_SUCCESS_MASK=240; -const ACCESS_FAIL_OPEN=256; -const ACCESS_FAIL_WRITE=512; -const ACCESS_FAIL_DELETE=1024; -const ACCESS_FAIL_ACL=2048; -const ACCESS_FAIL_MASK=3840; -const ACCESS_FAIL_SHIFT=4; -const ACCESS_RESOURCE_NAME_PARMNUM=1; -const ACCESS_ATTR_PARMNUM=2; -const ACCESS_COUNT_PARMNUM=3; -const ACCESS_ACCESS_LIST_PARMNUM=4; - -const ACCESS_RESOURCE_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM); -const ACCESS_ATTR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM); -const ACCESS_COUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM); -const ACCESS_ACCESS_LIST_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM); - -const NETLOGON_REPLICATION_NEEDED=1; -const NETLOGON_REPLICATION_IN_PROGRESS=2; -const NETLOGON_FULL_SYNC_REPLICATION=4; -const NETLOGON_REDO_NEEDED=8; +enum LOCALGROUP_NAME_PARMNUM=1; +enum LOCALGROUP_COMMENT_PARMNUM=2; +enum MAXPERMENTRIES=64; +enum ACCESS_NONE=0; +enum ACCESS_READ=1; +enum ACCESS_WRITE=2; +enum ACCESS_CREATE=4; +enum ACCESS_EXEC=8; +enum ACCESS_DELETE=16; +enum ACCESS_ATRIB=32; +enum ACCESS_PERM=64; +enum ACCESS_ALL = ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM; +enum ACCESS_GROUP=0x8000; +enum ACCESS_AUDIT=1; +enum ACCESS_SUCCESS_OPEN=16; +enum ACCESS_SUCCESS_WRITE=32; +enum ACCESS_SUCCESS_DELETE=64; +enum ACCESS_SUCCESS_ACL=128; +enum ACCESS_SUCCESS_MASK=240; +enum ACCESS_FAIL_OPEN=256; +enum ACCESS_FAIL_WRITE=512; +enum ACCESS_FAIL_DELETE=1024; +enum ACCESS_FAIL_ACL=2048; +enum ACCESS_FAIL_MASK=3840; +enum ACCESS_FAIL_SHIFT=4; +enum ACCESS_RESOURCE_NAME_PARMNUM=1; +enum ACCESS_ATTR_PARMNUM=2; +enum ACCESS_COUNT_PARMNUM=3; +enum ACCESS_ACCESS_LIST_PARMNUM=4; + +enum ACCESS_RESOURCE_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM); +enum ACCESS_ATTR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM); +enum ACCESS_COUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM); +enum ACCESS_ACCESS_LIST_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM); + +enum NETLOGON_REPLICATION_NEEDED=1; +enum NETLOGON_REPLICATION_IN_PROGRESS=2; +enum NETLOGON_FULL_SYNC_REPLICATION=4; +enum NETLOGON_REDO_NEEDED=8; struct USER_INFO_0 { LPWSTR usri0_name; diff --git a/src/core/sys/windows/lmalert.d b/src/core/sys/windows/lmalert.d index 0aa30ceb27..babc16ad9a 100644 --- a/src/core/sys/windows/lmalert.d +++ b/src/core/sys/windows/lmalert.d @@ -23,20 +23,20 @@ const TCHAR[] //MACRO #define ALERT_VAR_DATA(p) ((PBYTE)(p)+sizeof(*p)) -const PRJOB_QSTATUS = 3; -const PRJOB_DEVSTATUS = 508; -const PRJOB_COMPLETE = 4; -const PRJOB_INTERV = 8; -const PRJOB_ = 16; -const PRJOB_DESTOFFLINE = 32; -const PRJOB_DESTPAUSED = 64; -const PRJOB_NOTIFY = 128; -const PRJOB_DESTNOPAPER = 256; -const PRJOB_DELETED = 32768; -const PRJOB_QS_QUEUED = 0; -const PRJOB_QS_PAUSED = 1; -const PRJOB_QS_SPOOLING = 2; -const PRJOB_QS_PRINTING = 3; +enum PRJOB_QSTATUS = 3; +enum PRJOB_DEVSTATUS = 508; +enum PRJOB_COMPLETE = 4; +enum PRJOB_INTERV = 8; +enum PRJOB_ = 16; +enum PRJOB_DESTOFFLINE = 32; +enum PRJOB_DESTPAUSED = 64; +enum PRJOB_NOTIFY = 128; +enum PRJOB_DESTNOPAPER = 256; +enum PRJOB_DELETED = 32768; +enum PRJOB_QS_QUEUED = 0; +enum PRJOB_QS_PAUSED = 1; +enum PRJOB_QS_SPOOLING = 2; +enum PRJOB_QS_PRINTING = 3; struct ADMIN_OTHER_INFO{ DWORD alrtad_errcode; diff --git a/src/core/sys/windows/lmat.d b/src/core/sys/windows/lmat.d index eac6b4ae79..d54a60c728 100644 --- a/src/core/sys/windows/lmat.d +++ b/src/core/sys/windows/lmat.d @@ -12,14 +12,14 @@ pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; -const JOB_RUN_PERIODICALLY = 1; -const JOB_EXEC_ERROR = 2; -const JOB_RUNS_TODAY = 4; -const JOB_ADD_CURRENT_DATE = 8; -const JOB_NONINTERACTIVE = 16; -const JOB_INPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_ADD_CURRENT_DATE +enum JOB_RUN_PERIODICALLY = 1; +enum JOB_EXEC_ERROR = 2; +enum JOB_RUNS_TODAY = 4; +enum JOB_ADD_CURRENT_DATE = 8; +enum JOB_NONINTERACTIVE = 16; +enum JOB_INPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_ADD_CURRENT_DATE | JOB_NONINTERACTIVE; -const JOB_OUTPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_EXEC_ERROR +enum JOB_OUTPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_EXEC_ERROR | JOB_RUNS_TODAY | JOB_NONINTERACTIVE; struct AT_ENUM { diff --git a/src/core/sys/windows/lmaudit.d b/src/core/sys/windows/lmaudit.d index d349cf575d..476ab5b709 100644 --- a/src/core/sys/windows/lmaudit.d +++ b/src/core/sys/windows/lmaudit.d @@ -12,82 +12,82 @@ version (Windows): private import core.sys.windows.lmcons, core.sys.windows.windef; -const LOGFLAGS_FORWARD = 0; -const LOGFLAGS_BACKWARD = 1; -const LOGFLAGS_SEEK = 2; +enum LOGFLAGS_FORWARD = 0; +enum LOGFLAGS_BACKWARD = 1; +enum LOGFLAGS_SEEK = 2; -const ACTION_LOCKOUT = 0; -const ACTION_ADMINUNLOCK = 1; +enum ACTION_LOCKOUT = 0; +enum ACTION_ADMINUNLOCK = 1; -const AE_GUEST=0; -const AE_USER=1; -const AE_ADMIN=2; -const AE_NORMAL=0; -const AE_USERLIMIT=0; -const AE_GENERAL=0; -const AE_ERROR=1; -const AE_SESSDIS=1; -const AE_BADPW=1; -const AE_AUTODIS=2; -const AE_UNSHARE=2; -const AE_ADMINPRIVREQD=2; -const AE_ADMINDIS=3; -const AE_NOACCESSPERM=3; -const AE_ACCRESTRICT=4; -const AE_NORMAL_CLOSE=0; -const AE_SES_CLOSE=1; -const AE_ADMIN_CLOSE=2; -const AE_LIM_UNKNOWN=0; -const AE_LIM_LOGONHOURS=1; -const AE_LIM_EXPIRED=2; -const AE_LIM_INVAL_WKSTA=3; -const AE_LIM_DISABLED=4; -const AE_LIM_DELETED=5; -const AE_MOD=0; -const AE_DELETE=1; -const AE_ADD=2; +enum AE_GUEST=0; +enum AE_USER=1; +enum AE_ADMIN=2; +enum AE_NORMAL=0; +enum AE_USERLIMIT=0; +enum AE_GENERAL=0; +enum AE_ERROR=1; +enum AE_SESSDIS=1; +enum AE_BADPW=1; +enum AE_AUTODIS=2; +enum AE_UNSHARE=2; +enum AE_ADMINPRIVREQD=2; +enum AE_ADMINDIS=3; +enum AE_NOACCESSPERM=3; +enum AE_ACCRESTRICT=4; +enum AE_NORMAL_CLOSE=0; +enum AE_SES_CLOSE=1; +enum AE_ADMIN_CLOSE=2; +enum AE_LIM_UNKNOWN=0; +enum AE_LIM_LOGONHOURS=1; +enum AE_LIM_EXPIRED=2; +enum AE_LIM_INVAL_WKSTA=3; +enum AE_LIM_DISABLED=4; +enum AE_LIM_DELETED=5; +enum AE_MOD=0; +enum AE_DELETE=1; +enum AE_ADD=2; -const AE_UAS_USER = 0; -const AE_UAS_GROUP = 1; -const AE_UAS_MODALS = 2; +enum AE_UAS_USER = 0; +enum AE_UAS_GROUP = 1; +enum AE_UAS_MODALS = 2; -const SVAUD_SERVICE = 1; -const SVAUD_GOODSESSLOGON = 6; -const SVAUD_BADSESSLOGON = 24; -const SVAUD_SESSLOGON = SVAUD_GOODSESSLOGON|SVAUD_BADSESSLOGON; -const SVAUD_GOODNETLOGON = 96; -const SVAUD_BADNETLOGON = 384; -const SVAUD_NETLOGON = SVAUD_GOODNETLOGON|SVAUD_BADNETLOGON; -const SVAUD_LOGON = SVAUD_NETLOGON|SVAUD_SESSLOGON; -const SVAUD_GOODUSE = 0x600; -const SVAUD_BADUSE = 0x1800; -const SVAUD_USE = SVAUD_GOODUSE|SVAUD_BADUSE; -const SVAUD_USERLIST = 8192; -const SVAUD_PERMISSIONS = 16384; -const SVAUD_RESOURCE = 32768; -const SVAUD_LOGONLIM = 65536; +enum SVAUD_SERVICE = 1; +enum SVAUD_GOODSESSLOGON = 6; +enum SVAUD_BADSESSLOGON = 24; +enum SVAUD_SESSLOGON = SVAUD_GOODSESSLOGON|SVAUD_BADSESSLOGON; +enum SVAUD_GOODNETLOGON = 96; +enum SVAUD_BADNETLOGON = 384; +enum SVAUD_NETLOGON = SVAUD_GOODNETLOGON|SVAUD_BADNETLOGON; +enum SVAUD_LOGON = SVAUD_NETLOGON|SVAUD_SESSLOGON; +enum SVAUD_GOODUSE = 0x600; +enum SVAUD_BADUSE = 0x1800; +enum SVAUD_USE = SVAUD_GOODUSE|SVAUD_BADUSE; +enum SVAUD_USERLIST = 8192; +enum SVAUD_PERMISSIONS = 16384; +enum SVAUD_RESOURCE = 32768; +enum SVAUD_LOGONLIM = 65536; -const AA_AUDIT_ALL=1; -const AA_A_OWNER=4; -const AA_CLOSE=8; -const AA_S_OPEN=16; -const AA_S_WRITE=32; -const AA_S_CREATE=32; -const AA_S_DELETE=64; -const AA_S_ACL=128; -const AA_S_ALL=253; -const AA_F_OPEN=256; -const AA_F_WRITE=512; -const AA_F_CREATE=512; -const AA_F_DELETE=1024; -const AA_F_ACL=2048; -const AA_F_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; -const AA_A_OPEN=2048; -const AA_A_WRITE=4096; -const AA_A_CREATE=8192; -const AA_A_DELETE=16384; -const AA_A_ACL=32768; -const AA_A_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; +enum AA_AUDIT_ALL=1; +enum AA_A_OWNER=4; +enum AA_CLOSE=8; +enum AA_S_OPEN=16; +enum AA_S_WRITE=32; +enum AA_S_CREATE=32; +enum AA_S_DELETE=64; +enum AA_S_ACL=128; +enum AA_S_ALL=253; +enum AA_F_OPEN=256; +enum AA_F_WRITE=512; +enum AA_F_CREATE=512; +enum AA_F_DELETE=1024; +enum AA_F_ACL=2048; +enum AA_F_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; +enum AA_A_OPEN=2048; +enum AA_A_WRITE=4096; +enum AA_A_CREATE=8192; +enum AA_A_DELETE=16384; +enum AA_A_ACL=32768; +enum AA_A_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; struct AUDIT_ENTRY{ DWORD ae_len; @@ -274,29 +274,29 @@ NET_API_STATUS NetAuditWrite(DWORD,PBYTE,DWORD,LPTSTR,PBYTE); /+ /* MinGW: These conflict with struct typedefs, why? */ -const AE_SRVSTATUS=0; -const AE_SESSLOGON=1; -const AE_SESSLOGOFF=2; -const AE_SESSPWERR=3; -const AE_CONNSTART=4; -const AE_CONNSTOP=5; -const AE_CONNREJ=6; -const AE_RESACCESS=7; -const AE_RESACCESSREJ=8; -const AE_CLOSEFILE=9; -const AE_SERVICESTAT=11; -const AE_ACLMOD=12; -const AE_UASMOD=13; -const AE_NETLOGON=14; -const AE_NETLOGOFF=15; -const AE_NETLOGDENIED=16; -const AE_ACCLIMITEXCD=17; -const AE_RESACCESS2=18; -const AE_ACLMODFAIL=19; -const AE_LOCKOUT=20; -const AE_GENERIC_TYPE=21; -const AE_SRVSTART=0; -const AE_SRVPAUSED=1; -const AE_SRVCONT=2; -const AE_SRVSTOP=3; +enum AE_SRVSTATUS=0; +enum AE_SESSLOGON=1; +enum AE_SESSLOGOFF=2; +enum AE_SESSPWERR=3; +enum AE_CONNSTART=4; +enum AE_CONNSTOP=5; +enum AE_CONNREJ=6; +enum AE_RESACCESS=7; +enum AE_RESACCESSREJ=8; +enum AE_CLOSEFILE=9; +enum AE_SERVICESTAT=11; +enum AE_ACLMOD=12; +enum AE_UASMOD=13; +enum AE_NETLOGON=14; +enum AE_NETLOGOFF=15; +enum AE_NETLOGDENIED=16; +enum AE_ACCLIMITEXCD=17; +enum AE_RESACCESS2=18; +enum AE_ACLMODFAIL=19; +enum AE_LOCKOUT=20; +enum AE_GENERIC_TYPE=21; +enum AE_SRVSTART=0; +enum AE_SRVPAUSED=1; +enum AE_SRVCONT=2; +enum AE_SRVSTOP=3; +/ diff --git a/src/core/sys/windows/lmbrowsr.d b/src/core/sys/windows/lmbrowsr.d index 06dd2c56d3..2bd303f91b 100644 --- a/src/core/sys/windows/lmbrowsr.d +++ b/src/core/sys/windows/lmbrowsr.d @@ -11,8 +11,8 @@ version (Windows): private import core.sys.windows.lmcons, core.sys.windows.windef; -const BROWSER_ROLE_PDC = 1; -const BROWSER_ROLE_BDC = 2; +enum BROWSER_ROLE_PDC = 1; +enum BROWSER_ROLE_BDC = 2; struct BROWSER_STATISTICS { LARGE_INTEGER StatisticsStartTime; diff --git a/src/core/sys/windows/lmchdev.d b/src/core/sys/windows/lmchdev.d index bb4c4790f0..2dcf9e314c 100644 --- a/src/core/sys/windows/lmchdev.d +++ b/src/core/sys/windows/lmchdev.d @@ -13,25 +13,25 @@ version (Windows): private import core.sys.windows.lmcons, core.sys.windows.windef; -const CHARDEVQ_NO_REQUESTS = -1; -const CHARDEV_CLOSE = 0; -const CHARDEVQ_MAX_PRIORITY = 1; -const CHARDEVQ_DEV_PARMNUM = 1; +enum CHARDEVQ_NO_REQUESTS = -1; +enum CHARDEV_CLOSE = 0; +enum CHARDEVQ_MAX_PRIORITY = 1; +enum CHARDEVQ_DEV_PARMNUM = 1; -const HANDLE_INFO_LEVEL_1 = 1; -const HANDLE_CHARTIME_PARMNUM = 1; -const HANDLE_CHARCOUNT_PARMNUM = 2; +enum HANDLE_INFO_LEVEL_1 = 1; +enum HANDLE_CHARTIME_PARMNUM = 1; +enum HANDLE_CHARCOUNT_PARMNUM = 2; -const CHARDEV_STAT_OPENED = 2; -const CHARDEVQ_PRIORITY_PARMNUM = 2; -const CHARDEVQ_DEVS_PARMNUM = 3; -const CHARDEV_STAT_ERROR = 4; -const CHARDEVQ_NUMUSERS_PARMNUM = 4; -const CHARDEVQ_NUMAHEAD_PARMNUM = 5; -const CHARDEVQ_DEF_PRIORITY = 5; -const CHARDEVQ_PRIORITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_PRIORITY_PARMNUM; -const CHARDEVQ_DEVS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_DEVS_PARMNUM; -const CHARDEVQ_MIN_PRIORITY = 9; +enum CHARDEV_STAT_OPENED = 2; +enum CHARDEVQ_PRIORITY_PARMNUM = 2; +enum CHARDEVQ_DEVS_PARMNUM = 3; +enum CHARDEV_STAT_ERROR = 4; +enum CHARDEVQ_NUMUSERS_PARMNUM = 4; +enum CHARDEVQ_NUMAHEAD_PARMNUM = 5; +enum CHARDEVQ_DEF_PRIORITY = 5; +enum CHARDEVQ_PRIORITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_PRIORITY_PARMNUM; +enum CHARDEVQ_DEVS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_DEVS_PARMNUM; +enum CHARDEVQ_MIN_PRIORITY = 9; struct CHARDEV_INFO_0 { LPWSTR ch0_dev; diff --git a/src/core/sys/windows/lmcons.d b/src/core/sys/windows/lmcons.d index a9d78b7bf3..c0fcb8f802 100644 --- a/src/core/sys/windows/lmcons.d +++ b/src/core/sys/windows/lmcons.d @@ -21,62 +21,62 @@ const TCHAR[] alias DWORD NET_API_STATUS, API_RET_TYPE; -const MIN_LANMAN_MESSAGE_ID = NERR_BASE; -const MAX_LANMAN_MESSAGE_ID = 5799; +enum MIN_LANMAN_MESSAGE_ID = NERR_BASE; +enum MAX_LANMAN_MESSAGE_ID = 5799; -const CNLEN = 15; /* also in nddeapi.h */ -const UNCLEN = CNLEN + 2; +enum CNLEN = 15; /* also in nddeapi.h */ +enum UNCLEN = CNLEN + 2; -const DNLEN = 15; -const LM20_CNLEN = 15; -const LM20_DNLEN = 15; -const LM20_SNLEN = 15; -const LM20_STXTLEN = 63; -const LM20_UNCLEN = LM20_CNLEN + 2; -const LM20_NNLEN = 12; -const LM20_RMLEN = LM20_UNCLEN + 1 + LM20_NNLEN; -const NNLEN = 80; -const RMLEN = UNCLEN + 1 + NNLEN; -const SNLEN = 80; -const STXTLEN = 256; -const PATHLEN = 256; -const LM20_PATHLEN = 256; -const DEVLEN = 80; -const LM20_DEVLEN = 8; -const EVLEN = 16; -const UNLEN = 256; -const LM20_UNLEN = 20; -const GNLEN = UNLEN; -const LM20_GNLEN = LM20_UNLEN; -const PWLEN = 256; -const LM20_PWLEN = 14; -const SHPWLEN = 8; -const CLTYPE_LEN = 12; -const QNLEN = NNLEN; -const LM20_QNLEN = LM20_NNLEN; +enum DNLEN = 15; +enum LM20_CNLEN = 15; +enum LM20_DNLEN = 15; +enum LM20_SNLEN = 15; +enum LM20_STXTLEN = 63; +enum LM20_UNCLEN = LM20_CNLEN + 2; +enum LM20_NNLEN = 12; +enum LM20_RMLEN = LM20_UNCLEN + 1 + LM20_NNLEN; +enum NNLEN = 80; +enum RMLEN = UNCLEN + 1 + NNLEN; +enum SNLEN = 80; +enum STXTLEN = 256; +enum PATHLEN = 256; +enum LM20_PATHLEN = 256; +enum DEVLEN = 80; +enum LM20_DEVLEN = 8; +enum EVLEN = 16; +enum UNLEN = 256; +enum LM20_UNLEN = 20; +enum GNLEN = UNLEN; +enum LM20_GNLEN = LM20_UNLEN; +enum PWLEN = 256; +enum LM20_PWLEN = 14; +enum SHPWLEN = 8; +enum CLTYPE_LEN = 12; +enum QNLEN = NNLEN; +enum LM20_QNLEN = LM20_NNLEN; -const MAXCOMMENTSZ = 256; -const LM20_MAXCOMMENTSZ = 48; -const ALERTSZ = 128; -const MAXDEVENTRIES = 32;// (sizeof(int)*8); -const NETBIOS_NAME_LEN = 16; -const DWORD MAX_PREFERRED_LENGTH = -1; -const CRYPT_KEY_LEN = 7; -const CRYPT_TXT_LEN = 8; -const ENCRYPTED_PWLEN = 16; -const SESSION_PWLEN = 24; -const SESSION_CRYPT_KLEN = 21; +enum MAXCOMMENTSZ = 256; +enum LM20_MAXCOMMENTSZ = 48; +enum ALERTSZ = 128; +enum MAXDEVENTRIES = 32;// (sizeof(int)*8); +enum NETBIOS_NAME_LEN = 16; +enum DWORD MAX_PREFERRED_LENGTH = -1; +enum CRYPT_KEY_LEN = 7; +enum CRYPT_TXT_LEN = 8; +enum ENCRYPTED_PWLEN = 16; +enum SESSION_PWLEN = 24; +enum SESSION_CRYPT_KLEN = 21; -const PARMNUM_ALL = 0; -const DWORD PARM_ERROR_UNKNOWN = -1; -const PARM_ERROR_NONE = 0; -const PARMNUM_BASE_INFOLEVEL = 1000; +enum PARMNUM_ALL = 0; +enum DWORD PARM_ERROR_UNKNOWN = -1; +enum PARM_ERROR_NONE = 0; +enum PARMNUM_BASE_INFOLEVEL = 1000; -const PLATFORM_ID_DOS = 300; -const PLATFORM_ID_OS2 = 400; -const PLATFORM_ID_NT = 500; -const PLATFORM_ID_OSF = 600; -const PLATFORM_ID_VMS = 700; +enum PLATFORM_ID_DOS = 300; +enum PLATFORM_ID_OS2 = 400; +enum PLATFORM_ID_NT = 500; +enum PLATFORM_ID_OSF = 600; +enum PLATFORM_ID_VMS = 700; // this is a new typedef in W2K, but it should be harmless for earlier Windows versions. version (Unicode) { diff --git a/src/core/sys/windows/lmerrlog.d b/src/core/sys/windows/lmerrlog.d index bff924b7d4..8bc627e4b7 100644 --- a/src/core/sys/windows/lmerrlog.d +++ b/src/core/sys/windows/lmerrlog.d @@ -14,189 +14,189 @@ version (Windows): private import core.sys.windows.lmcons, core.sys.windows.windef; private import core.sys.windows.lmaudit; // for LPHLOG -const ERRLOG_BASE=3100; -const ERRLOG2_BASE=5700; -const LOGFLAGS_FORWARD=0; -const LOGFLAGS_BACKWARD=1; -const LOGFLAGS_SEEK=2; -const NELOG_Internal_Error=ERRLOG_BASE; -const NELOG_Resource_Shortage=(ERRLOG_BASE+1); -const NELOG_Unable_To_Lock_Segment=(ERRLOG_BASE+2); -const NELOG_Unable_To_Unlock_Segment=(ERRLOG_BASE+3); -const NELOG_Uninstall_Service=(ERRLOG_BASE+4); -const NELOG_Init_Exec_Fail=(ERRLOG_BASE+5); -const NELOG_Ncb_Error=(ERRLOG_BASE+6); -const NELOG_Net_Not_Started=(ERRLOG_BASE+7); -const NELOG_Ioctl_Error=(ERRLOG_BASE+8); -const NELOG_System_Semaphore=(ERRLOG_BASE+9); -const NELOG_Init_OpenCreate_Err=(ERRLOG_BASE+10); -const NELOG_NetBios=(ERRLOG_BASE+11); -const NELOG_SMB_Illegal=(ERRLOG_BASE+12); -const NELOG_Service_Fail=(ERRLOG_BASE+13); -const NELOG_Entries_Lost=(ERRLOG_BASE+14); -const NELOG_Init_Seg_Overflow=(ERRLOG_BASE+20); -const NELOG_Srv_No_Mem_Grow=(ERRLOG_BASE+21); -const NELOG_Access_File_Bad=(ERRLOG_BASE+22); -const NELOG_Srvnet_Not_Started=(ERRLOG_BASE+23); -const NELOG_Init_Chardev_Err=(ERRLOG_BASE+24); -const NELOG_Remote_API=(ERRLOG_BASE+25); -const NELOG_Ncb_TooManyErr=(ERRLOG_BASE+26); -const NELOG_Mailslot_err=(ERRLOG_BASE+27); -const NELOG_ReleaseMem_Alert=(ERRLOG_BASE+28); -const NELOG_AT_cannot_write=(ERRLOG_BASE+29); -const NELOG_Cant_Make_Msg_File=(ERRLOG_BASE+30); -const NELOG_Exec_Netservr_NoMem=(ERRLOG_BASE+31); -const NELOG_Server_Lock_Failure=(ERRLOG_BASE+32); -const NELOG_Msg_Shutdown=(ERRLOG_BASE+40); -const NELOG_Msg_Sem_Shutdown=(ERRLOG_BASE+41); -const NELOG_Msg_Log_Err=(ERRLOG_BASE+50); -const NELOG_VIO_POPUP_ERR=(ERRLOG_BASE+51); -const NELOG_Msg_Unexpected_SMB_Type=(ERRLOG_BASE+52); -const NELOG_Wksta_Infoseg=(ERRLOG_BASE+60); -const NELOG_Wksta_Compname=(ERRLOG_BASE+61); -const NELOG_Wksta_BiosThreadFailure=(ERRLOG_BASE+62); -const NELOG_Wksta_IniSeg=(ERRLOG_BASE+63); -const NELOG_Wksta_HostTab_Full=(ERRLOG_BASE+64); -const NELOG_Wksta_Bad_Mailslot_SMB=(ERRLOG_BASE+65); -const NELOG_Wksta_UASInit=(ERRLOG_BASE+66); -const NELOG_Wksta_SSIRelogon=(ERRLOG_BASE+67); -const NELOG_Build_Name=(ERRLOG_BASE+70); -const NELOG_Name_Expansion=(ERRLOG_BASE+71); -const NELOG_Message_Send=(ERRLOG_BASE+72); -const NELOG_Mail_Slt_Err=(ERRLOG_BASE+73); -const NELOG_AT_cannot_read=(ERRLOG_BASE+74); -const NELOG_AT_sched_err=(ERRLOG_BASE+75); -const NELOG_AT_schedule_file_created=(ERRLOG_BASE+76); -const NELOG_Srvnet_NB_Open=(ERRLOG_BASE+77); -const NELOG_AT_Exec_Err=(ERRLOG_BASE+78); -const NELOG_Lazy_Write_Err=(ERRLOG_BASE+80); -const NELOG_HotFix=(ERRLOG_BASE+81); -const NELOG_HardErr_From_Server=(ERRLOG_BASE+82); -const NELOG_LocalSecFail1=(ERRLOG_BASE+83); -const NELOG_LocalSecFail2=(ERRLOG_BASE+84); -const NELOG_LocalSecFail3=(ERRLOG_BASE+85); -const NELOG_LocalSecGeneralFail=(ERRLOG_BASE+86); -const NELOG_NetWkSta_Internal_Error=(ERRLOG_BASE+90); -const NELOG_NetWkSta_No_Resource=(ERRLOG_BASE+91); -const NELOG_NetWkSta_SMB_Err=(ERRLOG_BASE+92); -const NELOG_NetWkSta_VC_Err=(ERRLOG_BASE+93); -const NELOG_NetWkSta_Stuck_VC_Err=(ERRLOG_BASE+94); -const NELOG_NetWkSta_NCB_Err=(ERRLOG_BASE+95); -const NELOG_NetWkSta_Write_Behind_Err=(ERRLOG_BASE+96); -const NELOG_NetWkSta_Reset_Err=(ERRLOG_BASE+97); -const NELOG_NetWkSta_Too_Many=(ERRLOG_BASE+98); -const NELOG_Srv_Thread_Failure=(ERRLOG_BASE+104); -const NELOG_Srv_Close_Failure=(ERRLOG_BASE+105); -const NELOG_ReplUserCurDir=(ERRLOG_BASE+106); -const NELOG_ReplCannotMasterDir=(ERRLOG_BASE+107); -const NELOG_ReplUpdateError=(ERRLOG_BASE+108); -const NELOG_ReplLostMaster=(ERRLOG_BASE+109); -const NELOG_NetlogonAuthDCFail=(ERRLOG_BASE+110); -const NELOG_ReplLogonFailed=(ERRLOG_BASE+111); -const NELOG_ReplNetErr=(ERRLOG_BASE+112); -const NELOG_ReplMaxFiles=(ERRLOG_BASE+113); -const NELOG_ReplMaxTreeDepth=(ERRLOG_BASE+114); -const NELOG_ReplBadMsg=(ERRLOG_BASE+115); -const NELOG_ReplSysErr=(ERRLOG_BASE+116); -const NELOG_ReplUserLoged=(ERRLOG_BASE+117); -const NELOG_ReplBadImport=(ERRLOG_BASE+118); -const NELOG_ReplBadExport=(ERRLOG_BASE+119); -const NELOG_ReplSignalFileErr=(ERRLOG_BASE+120); -const NELOG_DiskFT=(ERRLOG_BASE+121); -const NELOG_ReplAccessDenied=(ERRLOG_BASE+122); -const NELOG_NetlogonFailedPrimary=(ERRLOG_BASE+123); -const NELOG_NetlogonPasswdSetFailed=(ERRLOG_BASE+124); -const NELOG_NetlogonTrackingError=(ERRLOG_BASE+125); -const NELOG_NetlogonSyncError=(ERRLOG_BASE+126); -const NELOG_UPS_PowerOut=(ERRLOG_BASE+130); -const NELOG_UPS_Shutdown=(ERRLOG_BASE+131); -const NELOG_UPS_CmdFileError=(ERRLOG_BASE+132); -const NELOG_UPS_CannotOpenDriver=(ERRLOG_BASE+133); -const NELOG_UPS_PowerBack=(ERRLOG_BASE+134); -const NELOG_UPS_CmdFileConfig=(ERRLOG_BASE+135); -const NELOG_UPS_CmdFileExec=(ERRLOG_BASE+136); -const NELOG_Missing_Parameter=(ERRLOG_BASE+150); -const NELOG_Invalid_Config_Line=(ERRLOG_BASE+151); -const NELOG_Invalid_Config_File=(ERRLOG_BASE+152); -const NELOG_File_Changed=(ERRLOG_BASE+153); -const NELOG_Files_Dont_Fit=(ERRLOG_BASE+154); -const NELOG_Wrong_DLL_Version=(ERRLOG_BASE+155); -const NELOG_Error_in_DLL=(ERRLOG_BASE+156); -const NELOG_System_Error=(ERRLOG_BASE+157); -const NELOG_FT_ErrLog_Too_Large=(ERRLOG_BASE+158); -const NELOG_FT_Update_In_Progress=(ERRLOG_BASE+159); -const NELOG_OEM_Code=(ERRLOG_BASE+199); -const NELOG_NetlogonSSIInitError=ERRLOG2_BASE; -const NELOG_NetlogonFailedToUpdateTrustList=(ERRLOG2_BASE+1); -const NELOG_NetlogonFailedToAddRpcInterface=(ERRLOG2_BASE+2); -const NELOG_NetlogonFailedToReadMailslot=(ERRLOG2_BASE+3); -const NELOG_NetlogonFailedToRegisterSC=(ERRLOG2_BASE+4); -const NELOG_NetlogonChangeLogCorrupt=(ERRLOG2_BASE+5); -const NELOG_NetlogonFailedToCreateShare=(ERRLOG2_BASE+6); -const NELOG_NetlogonDownLevelLogonFailed=(ERRLOG2_BASE+7); -const NELOG_NetlogonDownLevelLogoffFailed=(ERRLOG2_BASE+8); -const NELOG_NetlogonNTLogonFailed=(ERRLOG2_BASE+9); -const NELOG_NetlogonNTLogoffFailed=(ERRLOG2_BASE+10); -const NELOG_NetlogonPartialSyncCallSuccess=(ERRLOG2_BASE+11); -const NELOG_NetlogonPartialSyncCallFailed=(ERRLOG2_BASE+12); -const NELOG_NetlogonFullSyncCallSuccess=(ERRLOG2_BASE+13); -const NELOG_NetlogonFullSyncCallFailed=(ERRLOG2_BASE+14); -const NELOG_NetlogonPartialSyncSuccess=(ERRLOG2_BASE+15); -const NELOG_NetlogonPartialSyncFailed=(ERRLOG2_BASE+16); -const NELOG_NetlogonFullSyncSuccess=(ERRLOG2_BASE+17); -const NELOG_NetlogonFullSyncFailed=(ERRLOG2_BASE+18); -const NELOG_NetlogonAuthNoDomainController=(ERRLOG2_BASE+19); -const NELOG_NetlogonAuthNoTrustLsaSecret=(ERRLOG2_BASE+20); -const NELOG_NetlogonAuthNoTrustSamAccount=(ERRLOG2_BASE+21); -const NELOG_NetlogonServerAuthFailed=(ERRLOG2_BASE+22); -const NELOG_NetlogonServerAuthNoTrustSamAccount=(ERRLOG2_BASE+23); -const NELOG_FailedToRegisterSC=(ERRLOG2_BASE+24); -const NELOG_FailedToSetServiceStatus=(ERRLOG2_BASE+25); -const NELOG_FailedToGetComputerName=(ERRLOG2_BASE+26); -const NELOG_DriverNotLoaded=(ERRLOG2_BASE+27); -const NELOG_NoTranportLoaded=(ERRLOG2_BASE+28); -const NELOG_NetlogonFailedDomainDelta=(ERRLOG2_BASE+29); -const NELOG_NetlogonFailedGlobalGroupDelta=(ERRLOG2_BASE+30); -const NELOG_NetlogonFailedLocalGroupDelta=(ERRLOG2_BASE+31); -const NELOG_NetlogonFailedUserDelta=(ERRLOG2_BASE+32); -const NELOG_NetlogonFailedPolicyDelta=(ERRLOG2_BASE+33); -const NELOG_NetlogonFailedTrustedDomainDelta=(ERRLOG2_BASE+34); -const NELOG_NetlogonFailedAccountDelta=(ERRLOG2_BASE+35); -const NELOG_NetlogonFailedSecretDelta=(ERRLOG2_BASE+36); -const NELOG_NetlogonSystemError=(ERRLOG2_BASE+37); -const NELOG_NetlogonDuplicateMachineAccounts=(ERRLOG2_BASE+38); -const NELOG_NetlogonTooManyGlobalGroups=(ERRLOG2_BASE+39); -const NELOG_NetlogonBrowserDriver=(ERRLOG2_BASE+40); -const NELOG_NetlogonAddNameFailure=(ERRLOG2_BASE+41); -const NELOG_RplMessages=(ERRLOG2_BASE+42); -const NELOG_RplXnsBoot=(ERRLOG2_BASE+43); -const NELOG_RplSystem=(ERRLOG2_BASE+44); -const NELOG_RplWkstaTimeout=(ERRLOG2_BASE+45); -const NELOG_RplWkstaFileOpen=(ERRLOG2_BASE+46); -const NELOG_RplWkstaFileRead=(ERRLOG2_BASE+47); -const NELOG_RplWkstaMemory=(ERRLOG2_BASE+48); -const NELOG_RplWkstaFileChecksum=(ERRLOG2_BASE+49); -const NELOG_RplWkstaFileLineCount=(ERRLOG2_BASE+50); -const NELOG_RplWkstaBbcFile=(ERRLOG2_BASE+51); -const NELOG_RplWkstaFileSize=(ERRLOG2_BASE+52); -const NELOG_RplWkstaInternal=(ERRLOG2_BASE+53); -const NELOG_RplWkstaWrongVersion=(ERRLOG2_BASE+54); -const NELOG_RplWkstaNetwork=(ERRLOG2_BASE+55); -const NELOG_RplAdapterResource=(ERRLOG2_BASE+56); -const NELOG_RplFileCopy=(ERRLOG2_BASE+57); -const NELOG_RplFileDelete=(ERRLOG2_BASE+58); -const NELOG_RplFilePerms=(ERRLOG2_BASE+59); -const NELOG_RplCheckConfigs=(ERRLOG2_BASE+60); -const NELOG_RplCreateProfiles=(ERRLOG2_BASE+61); -const NELOG_RplRegistry=(ERRLOG2_BASE+62); -const NELOG_RplReplaceRPLDISK=(ERRLOG2_BASE+63); -const NELOG_RplCheckSecurity=(ERRLOG2_BASE+64); -const NELOG_RplBackupDatabase=(ERRLOG2_BASE+65); -const NELOG_RplInitDatabase=(ERRLOG2_BASE+66); -const NELOG_RplRestoreDatabaseFailure=(ERRLOG2_BASE+67); -const NELOG_RplRestoreDatabaseSuccess=(ERRLOG2_BASE+68); -const NELOG_RplInitRestoredDatabase=(ERRLOG2_BASE+69); -const NELOG_NetlogonSessionTypeWrong=(ERRLOG2_BASE+70); +enum ERRLOG_BASE=3100; +enum ERRLOG2_BASE=5700; +enum LOGFLAGS_FORWARD=0; +enum LOGFLAGS_BACKWARD=1; +enum LOGFLAGS_SEEK=2; +enum NELOG_Internal_Error=ERRLOG_BASE; +enum NELOG_Resource_Shortage=(ERRLOG_BASE+1); +enum NELOG_Unable_To_Lock_Segment=(ERRLOG_BASE+2); +enum NELOG_Unable_To_Unlock_Segment=(ERRLOG_BASE+3); +enum NELOG_Uninstall_Service=(ERRLOG_BASE+4); +enum NELOG_Init_Exec_Fail=(ERRLOG_BASE+5); +enum NELOG_Ncb_Error=(ERRLOG_BASE+6); +enum NELOG_Net_Not_Started=(ERRLOG_BASE+7); +enum NELOG_Ioctl_Error=(ERRLOG_BASE+8); +enum NELOG_System_Semaphore=(ERRLOG_BASE+9); +enum NELOG_Init_OpenCreate_Err=(ERRLOG_BASE+10); +enum NELOG_NetBios=(ERRLOG_BASE+11); +enum NELOG_SMB_Illegal=(ERRLOG_BASE+12); +enum NELOG_Service_Fail=(ERRLOG_BASE+13); +enum NELOG_Entries_Lost=(ERRLOG_BASE+14); +enum NELOG_Init_Seg_Overflow=(ERRLOG_BASE+20); +enum NELOG_Srv_No_Mem_Grow=(ERRLOG_BASE+21); +enum NELOG_Access_File_Bad=(ERRLOG_BASE+22); +enum NELOG_Srvnet_Not_Started=(ERRLOG_BASE+23); +enum NELOG_Init_Chardev_Err=(ERRLOG_BASE+24); +enum NELOG_Remote_API=(ERRLOG_BASE+25); +enum NELOG_Ncb_TooManyErr=(ERRLOG_BASE+26); +enum NELOG_Mailslot_err=(ERRLOG_BASE+27); +enum NELOG_ReleaseMem_Alert=(ERRLOG_BASE+28); +enum NELOG_AT_cannot_write=(ERRLOG_BASE+29); +enum NELOG_Cant_Make_Msg_File=(ERRLOG_BASE+30); +enum NELOG_Exec_Netservr_NoMem=(ERRLOG_BASE+31); +enum NELOG_Server_Lock_Failure=(ERRLOG_BASE+32); +enum NELOG_Msg_Shutdown=(ERRLOG_BASE+40); +enum NELOG_Msg_Sem_Shutdown=(ERRLOG_BASE+41); +enum NELOG_Msg_Log_Err=(ERRLOG_BASE+50); +enum NELOG_VIO_POPUP_ERR=(ERRLOG_BASE+51); +enum NELOG_Msg_Unexpected_SMB_Type=(ERRLOG_BASE+52); +enum NELOG_Wksta_Infoseg=(ERRLOG_BASE+60); +enum NELOG_Wksta_Compname=(ERRLOG_BASE+61); +enum NELOG_Wksta_BiosThreadFailure=(ERRLOG_BASE+62); +enum NELOG_Wksta_IniSeg=(ERRLOG_BASE+63); +enum NELOG_Wksta_HostTab_Full=(ERRLOG_BASE+64); +enum NELOG_Wksta_Bad_Mailslot_SMB=(ERRLOG_BASE+65); +enum NELOG_Wksta_UASInit=(ERRLOG_BASE+66); +enum NELOG_Wksta_SSIRelogon=(ERRLOG_BASE+67); +enum NELOG_Build_Name=(ERRLOG_BASE+70); +enum NELOG_Name_Expansion=(ERRLOG_BASE+71); +enum NELOG_Message_Send=(ERRLOG_BASE+72); +enum NELOG_Mail_Slt_Err=(ERRLOG_BASE+73); +enum NELOG_AT_cannot_read=(ERRLOG_BASE+74); +enum NELOG_AT_sched_err=(ERRLOG_BASE+75); +enum NELOG_AT_schedule_file_created=(ERRLOG_BASE+76); +enum NELOG_Srvnet_NB_Open=(ERRLOG_BASE+77); +enum NELOG_AT_Exec_Err=(ERRLOG_BASE+78); +enum NELOG_Lazy_Write_Err=(ERRLOG_BASE+80); +enum NELOG_HotFix=(ERRLOG_BASE+81); +enum NELOG_HardErr_From_Server=(ERRLOG_BASE+82); +enum NELOG_LocalSecFail1=(ERRLOG_BASE+83); +enum NELOG_LocalSecFail2=(ERRLOG_BASE+84); +enum NELOG_LocalSecFail3=(ERRLOG_BASE+85); +enum NELOG_LocalSecGeneralFail=(ERRLOG_BASE+86); +enum NELOG_NetWkSta_Internal_Error=(ERRLOG_BASE+90); +enum NELOG_NetWkSta_No_Resource=(ERRLOG_BASE+91); +enum NELOG_NetWkSta_SMB_Err=(ERRLOG_BASE+92); +enum NELOG_NetWkSta_VC_Err=(ERRLOG_BASE+93); +enum NELOG_NetWkSta_Stuck_VC_Err=(ERRLOG_BASE+94); +enum NELOG_NetWkSta_NCB_Err=(ERRLOG_BASE+95); +enum NELOG_NetWkSta_Write_Behind_Err=(ERRLOG_BASE+96); +enum NELOG_NetWkSta_Reset_Err=(ERRLOG_BASE+97); +enum NELOG_NetWkSta_Too_Many=(ERRLOG_BASE+98); +enum NELOG_Srv_Thread_Failure=(ERRLOG_BASE+104); +enum NELOG_Srv_Close_Failure=(ERRLOG_BASE+105); +enum NELOG_ReplUserCurDir=(ERRLOG_BASE+106); +enum NELOG_ReplCannotMasterDir=(ERRLOG_BASE+107); +enum NELOG_ReplUpdateError=(ERRLOG_BASE+108); +enum NELOG_ReplLostMaster=(ERRLOG_BASE+109); +enum NELOG_NetlogonAuthDCFail=(ERRLOG_BASE+110); +enum NELOG_ReplLogonFailed=(ERRLOG_BASE+111); +enum NELOG_ReplNetErr=(ERRLOG_BASE+112); +enum NELOG_ReplMaxFiles=(ERRLOG_BASE+113); +enum NELOG_ReplMaxTreeDepth=(ERRLOG_BASE+114); +enum NELOG_ReplBadMsg=(ERRLOG_BASE+115); +enum NELOG_ReplSysErr=(ERRLOG_BASE+116); +enum NELOG_ReplUserLoged=(ERRLOG_BASE+117); +enum NELOG_ReplBadImport=(ERRLOG_BASE+118); +enum NELOG_ReplBadExport=(ERRLOG_BASE+119); +enum NELOG_ReplSignalFileErr=(ERRLOG_BASE+120); +enum NELOG_DiskFT=(ERRLOG_BASE+121); +enum NELOG_ReplAccessDenied=(ERRLOG_BASE+122); +enum NELOG_NetlogonFailedPrimary=(ERRLOG_BASE+123); +enum NELOG_NetlogonPasswdSetFailed=(ERRLOG_BASE+124); +enum NELOG_NetlogonTrackingError=(ERRLOG_BASE+125); +enum NELOG_NetlogonSyncError=(ERRLOG_BASE+126); +enum NELOG_UPS_PowerOut=(ERRLOG_BASE+130); +enum NELOG_UPS_Shutdown=(ERRLOG_BASE+131); +enum NELOG_UPS_CmdFileError=(ERRLOG_BASE+132); +enum NELOG_UPS_CannotOpenDriver=(ERRLOG_BASE+133); +enum NELOG_UPS_PowerBack=(ERRLOG_BASE+134); +enum NELOG_UPS_CmdFileConfig=(ERRLOG_BASE+135); +enum NELOG_UPS_CmdFileExec=(ERRLOG_BASE+136); +enum NELOG_Missing_Parameter=(ERRLOG_BASE+150); +enum NELOG_Invalid_Config_Line=(ERRLOG_BASE+151); +enum NELOG_Invalid_Config_File=(ERRLOG_BASE+152); +enum NELOG_File_Changed=(ERRLOG_BASE+153); +enum NELOG_Files_Dont_Fit=(ERRLOG_BASE+154); +enum NELOG_Wrong_DLL_Version=(ERRLOG_BASE+155); +enum NELOG_Error_in_DLL=(ERRLOG_BASE+156); +enum NELOG_System_Error=(ERRLOG_BASE+157); +enum NELOG_FT_ErrLog_Too_Large=(ERRLOG_BASE+158); +enum NELOG_FT_Update_In_Progress=(ERRLOG_BASE+159); +enum NELOG_OEM_Code=(ERRLOG_BASE+199); +enum NELOG_NetlogonSSIInitError=ERRLOG2_BASE; +enum NELOG_NetlogonFailedToUpdateTrustList=(ERRLOG2_BASE+1); +enum NELOG_NetlogonFailedToAddRpcInterface=(ERRLOG2_BASE+2); +enum NELOG_NetlogonFailedToReadMailslot=(ERRLOG2_BASE+3); +enum NELOG_NetlogonFailedToRegisterSC=(ERRLOG2_BASE+4); +enum NELOG_NetlogonChangeLogCorrupt=(ERRLOG2_BASE+5); +enum NELOG_NetlogonFailedToCreateShare=(ERRLOG2_BASE+6); +enum NELOG_NetlogonDownLevelLogonFailed=(ERRLOG2_BASE+7); +enum NELOG_NetlogonDownLevelLogoffFailed=(ERRLOG2_BASE+8); +enum NELOG_NetlogonNTLogonFailed=(ERRLOG2_BASE+9); +enum NELOG_NetlogonNTLogoffFailed=(ERRLOG2_BASE+10); +enum NELOG_NetlogonPartialSyncCallSuccess=(ERRLOG2_BASE+11); +enum NELOG_NetlogonPartialSyncCallFailed=(ERRLOG2_BASE+12); +enum NELOG_NetlogonFullSyncCallSuccess=(ERRLOG2_BASE+13); +enum NELOG_NetlogonFullSyncCallFailed=(ERRLOG2_BASE+14); +enum NELOG_NetlogonPartialSyncSuccess=(ERRLOG2_BASE+15); +enum NELOG_NetlogonPartialSyncFailed=(ERRLOG2_BASE+16); +enum NELOG_NetlogonFullSyncSuccess=(ERRLOG2_BASE+17); +enum NELOG_NetlogonFullSyncFailed=(ERRLOG2_BASE+18); +enum NELOG_NetlogonAuthNoDomainController=(ERRLOG2_BASE+19); +enum NELOG_NetlogonAuthNoTrustLsaSecret=(ERRLOG2_BASE+20); +enum NELOG_NetlogonAuthNoTrustSamAccount=(ERRLOG2_BASE+21); +enum NELOG_NetlogonServerAuthFailed=(ERRLOG2_BASE+22); +enum NELOG_NetlogonServerAuthNoTrustSamAccount=(ERRLOG2_BASE+23); +enum NELOG_FailedToRegisterSC=(ERRLOG2_BASE+24); +enum NELOG_FailedToSetServiceStatus=(ERRLOG2_BASE+25); +enum NELOG_FailedToGetComputerName=(ERRLOG2_BASE+26); +enum NELOG_DriverNotLoaded=(ERRLOG2_BASE+27); +enum NELOG_NoTranportLoaded=(ERRLOG2_BASE+28); +enum NELOG_NetlogonFailedDomainDelta=(ERRLOG2_BASE+29); +enum NELOG_NetlogonFailedGlobalGroupDelta=(ERRLOG2_BASE+30); +enum NELOG_NetlogonFailedLocalGroupDelta=(ERRLOG2_BASE+31); +enum NELOG_NetlogonFailedUserDelta=(ERRLOG2_BASE+32); +enum NELOG_NetlogonFailedPolicyDelta=(ERRLOG2_BASE+33); +enum NELOG_NetlogonFailedTrustedDomainDelta=(ERRLOG2_BASE+34); +enum NELOG_NetlogonFailedAccountDelta=(ERRLOG2_BASE+35); +enum NELOG_NetlogonFailedSecretDelta=(ERRLOG2_BASE+36); +enum NELOG_NetlogonSystemError=(ERRLOG2_BASE+37); +enum NELOG_NetlogonDuplicateMachineAccounts=(ERRLOG2_BASE+38); +enum NELOG_NetlogonTooManyGlobalGroups=(ERRLOG2_BASE+39); +enum NELOG_NetlogonBrowserDriver=(ERRLOG2_BASE+40); +enum NELOG_NetlogonAddNameFailure=(ERRLOG2_BASE+41); +enum NELOG_RplMessages=(ERRLOG2_BASE+42); +enum NELOG_RplXnsBoot=(ERRLOG2_BASE+43); +enum NELOG_RplSystem=(ERRLOG2_BASE+44); +enum NELOG_RplWkstaTimeout=(ERRLOG2_BASE+45); +enum NELOG_RplWkstaFileOpen=(ERRLOG2_BASE+46); +enum NELOG_RplWkstaFileRead=(ERRLOG2_BASE+47); +enum NELOG_RplWkstaMemory=(ERRLOG2_BASE+48); +enum NELOG_RplWkstaFileChecksum=(ERRLOG2_BASE+49); +enum NELOG_RplWkstaFileLineCount=(ERRLOG2_BASE+50); +enum NELOG_RplWkstaBbcFile=(ERRLOG2_BASE+51); +enum NELOG_RplWkstaFileSize=(ERRLOG2_BASE+52); +enum NELOG_RplWkstaInternal=(ERRLOG2_BASE+53); +enum NELOG_RplWkstaWrongVersion=(ERRLOG2_BASE+54); +enum NELOG_RplWkstaNetwork=(ERRLOG2_BASE+55); +enum NELOG_RplAdapterResource=(ERRLOG2_BASE+56); +enum NELOG_RplFileCopy=(ERRLOG2_BASE+57); +enum NELOG_RplFileDelete=(ERRLOG2_BASE+58); +enum NELOG_RplFilePerms=(ERRLOG2_BASE+59); +enum NELOG_RplCheckConfigs=(ERRLOG2_BASE+60); +enum NELOG_RplCreateProfiles=(ERRLOG2_BASE+61); +enum NELOG_RplRegistry=(ERRLOG2_BASE+62); +enum NELOG_RplReplaceRPLDISK=(ERRLOG2_BASE+63); +enum NELOG_RplCheckSecurity=(ERRLOG2_BASE+64); +enum NELOG_RplBackupDatabase=(ERRLOG2_BASE+65); +enum NELOG_RplInitDatabase=(ERRLOG2_BASE+66); +enum NELOG_RplRestoreDatabaseFailure=(ERRLOG2_BASE+67); +enum NELOG_RplRestoreDatabaseSuccess=(ERRLOG2_BASE+68); +enum NELOG_RplInitRestoredDatabase=(ERRLOG2_BASE+69); +enum NELOG_NetlogonSessionTypeWrong=(ERRLOG2_BASE+70); struct ERROR_LOG { DWORD el_len; diff --git a/src/core/sys/windows/lmmsg.d b/src/core/sys/windows/lmmsg.d index af9d4c8d66..7dfcde737a 100644 --- a/src/core/sys/windows/lmmsg.d +++ b/src/core/sys/windows/lmmsg.d @@ -16,9 +16,9 @@ static assert (_WIN32_WINNT >= 0x501, "core.sys.windows.lmmsg is available only if version WindowsXP, Windows2003 " "or WindowsVista is set"); -const MSGNAME_NOT_FORWARDED = 0; -const MSGNAME_FORWARDED_TO = 4; -const MSGNAME_FORWARDED_FROM = 16; +enum MSGNAME_NOT_FORWARDED = 0; +enum MSGNAME_FORWARDED_TO = 4; +enum MSGNAME_FORWARDED_FROM = 16; struct MSG_INFO_0 { LPWSTR msgi0_name; diff --git a/src/core/sys/windows/lmremutl.d b/src/core/sys/windows/lmremutl.d index 94283376ac..0d1229e44b 100644 --- a/src/core/sys/windows/lmremutl.d +++ b/src/core/sys/windows/lmremutl.d @@ -14,16 +14,16 @@ pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; -const SUPPORTS_REMOTE_ADMIN_PROTOCOL = 2; -const SUPPORTS_RPC = 4; -const SUPPORTS_SAM_PROTOCOL = 8; -const SUPPORTS_UNICODE = 16; -const SUPPORTS_LOCAL = 32; -const SUPPORTS_ANY = 0xFFFFFFFF; - -const NO_PERMISSION_REQUIRED = 1; -const ALLOCATE_RESPONSE = 2; -const USE_SPECIFIC_TRANSPORT = 0x80000000; +enum SUPPORTS_REMOTE_ADMIN_PROTOCOL = 2; +enum SUPPORTS_RPC = 4; +enum SUPPORTS_SAM_PROTOCOL = 8; +enum SUPPORTS_UNICODE = 16; +enum SUPPORTS_LOCAL = 32; +enum SUPPORTS_ANY = 0xFFFFFFFF; + +enum NO_PERMISSION_REQUIRED = 1; +enum ALLOCATE_RESPONSE = 2; +enum USE_SPECIFIC_TRANSPORT = 0x80000000; //[Yes] #ifndef DESC_CHAR_UNICODE //alias CHAR DESC_CHAR; diff --git a/src/core/sys/windows/lmrepl.d b/src/core/sys/windows/lmrepl.d index f85af9a568..7796728be0 100644 --- a/src/core/sys/windows/lmrepl.d +++ b/src/core/sys/windows/lmrepl.d @@ -12,28 +12,28 @@ pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; -const REPL_ROLE_EXPORT=1; -const REPL_ROLE_IMPORT=2; -const REPL_ROLE_BOTH=3; - -const REPL_INTERVAL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; -const REPL_PULSE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; -const REPL_GUARDTIME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+2; -const REPL_RANDOM_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+3; - -const REPL_UNLOCK_NOFORCE=0; -const REPL_UNLOCK_FORCE=1; -const REPL_STATE_OK=0; -const REPL_STATE_NO_MASTER=1; -const REPL_STATE_NO_SYNC=2; -const REPL_STATE_NEVER_REPLICATED=3; -const REPL_INTEGRITY_FILE=1; -const REPL_INTEGRITY_TREE=2; -const REPL_EXTENT_FILE=1; -const REPL_EXTENT_TREE=2; - -const REPL_EXPORT_INTEGRITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; -const REPL_EXPORT_EXTENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; +enum REPL_ROLE_EXPORT=1; +enum REPL_ROLE_IMPORT=2; +enum REPL_ROLE_BOTH=3; + +enum REPL_INTERVAL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; +enum REPL_PULSE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; +enum REPL_GUARDTIME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+2; +enum REPL_RANDOM_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+3; + +enum REPL_UNLOCK_NOFORCE=0; +enum REPL_UNLOCK_FORCE=1; +enum REPL_STATE_OK=0; +enum REPL_STATE_NO_MASTER=1; +enum REPL_STATE_NO_SYNC=2; +enum REPL_STATE_NEVER_REPLICATED=3; +enum REPL_INTEGRITY_FILE=1; +enum REPL_INTEGRITY_TREE=2; +enum REPL_EXTENT_FILE=1; +enum REPL_EXTENT_TREE=2; + +enum REPL_EXPORT_INTEGRITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; +enum REPL_EXPORT_EXTENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; struct REPL_INFO_0 { DWORD rp0_role; diff --git a/src/core/sys/windows/lmserver.d b/src/core/sys/windows/lmserver.d index 1212931830..f27c7efdba 100644 --- a/src/core/sys/windows/lmserver.d +++ b/src/core/sys/windows/lmserver.d @@ -695,247 +695,247 @@ NET_API_STATUS NetServerTransportDel(LPWSTR,DWORD,PBYTE); NET_API_STATUS NetServerTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); BOOL SetServiceBits(SERVICE_STATUS_HANDLE,DWORD,BOOL,BOOL); -const SVI1_NUM_ELEMENTS=5; -const SVI2_NUM_ELEMENTS=40; -const SVI3_NUM_ELEMENTS=44; -const SV_MAX_CMD_LEN=PATHLEN; -const SW_AUTOPROF_LOAD_MASK=1; -const SW_AUTOPROF_SAVE_MASK=2; -const SV_MAX_SRV_HEUR_LEN=32; -const SV_USERS_PER_LICENSE=5; -const SV_PLATFORM_ID_OS2=400; -const SV_PLATFORM_ID_NT=500; -const MAJOR_VERSION_MASK=15; -const SV_TYPE_WORKSTATION=1; -const SV_TYPE_SERVER=2; -const SV_TYPE_SQLSERVER=4; -const SV_TYPE_DOMAIN_CTRL=8; -const SV_TYPE_DOMAIN_BAKCTRL=16; -const SV_TYPE_TIME_SOURCE=32; -const SV_TYPE_AFP=64; -const SV_TYPE_NOVELL=128; -const SV_TYPE_DOMAIN_MEMBER=256; -const SV_TYPE_PRINTQ_SERVER=512; -const SV_TYPE_DIALIN_SERVER=1024; -const SV_TYPE_XENIX_SERVER=2048; -const SV_TYPE_SERVER_UNIX=SV_TYPE_XENIX_SERVER; -const SV_TYPE_NT=4096; -const SV_TYPE_WFW=8192; -const SV_TYPE_SERVER_MFPN=16384; -const SV_TYPE_SERVER_NT=32768; -const SV_TYPE_POTENTIAL_BROWSER=65536; -const SV_TYPE_BACKUP_BROWSER=0x20000; -const SV_TYPE_MASTER_BROWSER=0x40000; -const SV_TYPE_DOMAIN_MASTER=0x80000; -const SV_TYPE_SERVER_OSF=0x100000; -const SV_TYPE_SERVER_VMS=0x200000; -const SV_TYPE_WINDOWS=0x400000; -const SV_TYPE_ALTERNATE_XPORT=0x20000000; -const SV_TYPE_LOCAL_LIST_ONLY=0x40000000; -const SV_TYPE_DOMAIN_ENUM=0x80000000; -const SV_TYPE_ALL=0xFFFFFFFF; -const SV_NODISC=(-1); -const SV_USERSECURITY=1; -const SV_SHARESECURITY=0; -const SV_HIDDEN=1; -const SV_VISIBLE=0; -const SV_PLATFORM_ID_PARMNUM=101; -const SV_NAME_PARMNUM=102; -const SV_VERSION_MAJOR_PARMNUM=103; -const SV_VERSION_MINOR_PARMNUM=104; -const SV_TYPE_PARMNUM=105; -const SV_COMMENT_PARMNUM=5; -const SV_USERS_PARMNUM=107; -const SV_DISC_PARMNUM=10; -const SV_HIDDEN_PARMNUM=16; -const SV_ANNOUNCE_PARMNUM=17; -const SV_ANNDELTA_PARMNUM=18; -const SV_USERPATH_PARMNUM=112; -const SV_ULIST_MTIME_PARMNUM=401; -const SV_GLIST_MTIME_PARMNUM=402; -const SV_ALIST_MTIME_PARMNUM=403; -const SV_ALERTS_PARMNUM=11; -const SV_SECURITY_PARMNUM=405; -const SV_NUMADMIN_PARMNUM=406; -const SV_LANMASK_PARMNUM=407; -const SV_GUESTACC_PARMNUM=408; -const SV_CHDEVQ_PARMNUM=410; -const SV_CHDEVJOBS_PARMNUM=411; -const SV_CONNECTIONS_PARMNUM=412; -const SV_SHARES_PARMNUM=413; -const SV_OPENFILES_PARMNUM=414; -const SV_SESSREQS_PARMNUM=417; -const SV_ACTIVELOCKS_PARMNUM=419; -const SV_NUMREQBUF_PARMNUM=420; -const SV_NUMBIGBUF_PARMNUM=422; -const SV_NUMFILETASKS_PARMNUM=423; -const SV_ALERTSCHED_PARMNUM=37; -const SV_ERRORALERT_PARMNUM=38; -const SV_LOGONALERT_PARMNUM=39; -const SV_ACCESSALERT_PARMNUM=40; -const SV_DISKALERT_PARMNUM=41; -const SV_NETIOALERT_PARMNUM=42; -const SV_MAXAUDITSZ_PARMNUM=43; -const SV_SRVHEURISTICS_PARMNUM=431; -const SV_SESSOPENS_PARMNUM=501; -const SV_SESSVCS_PARMNUM=502; -const SV_OPENSEARCH_PARMNUM=503; -const SV_SIZREQBUF_PARMNUM=504; -const SV_INITWORKITEMS_PARMNUM=505; -const SV_MAXWORKITEMS_PARMNUM=506; -const SV_RAWWORKITEMS_PARMNUM=507; -const SV_IRPSTACKSIZE_PARMNUM=508; -const SV_MAXRAWBUFLEN_PARMNUM=509; -const SV_SESSUSERS_PARMNUM=510; -const SV_SESSCONNS_PARMNUM=511; -const SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM=512; -const SV_MAXPAGEDMEMORYUSAGE_PARMNUM=513; -const SV_ENABLESOFTCOMPAT_PARMNUM=514; -const SV_ENABLEFORCEDLOGOFF_PARMNUM=515; -const SV_TIMESOURCE_PARMNUM=516; -const SV_ACCEPTDOWNLEVELAPIS_PARMNUM=517; -const SV_LMANNOUNCE_PARMNUM=518; -const SV_DOMAIN_PARMNUM=519; -const SV_MAXCOPYREADLEN_PARMNUM=520; -const SV_MAXCOPYWRITELEN_PARMNUM=521; -const SV_MINKEEPSEARCH_PARMNUM=522; -const SV_MAXKEEPSEARCH_PARMNUM=523; -const SV_MINKEEPCOMPLSEARCH_PARMNUM=524; -const SV_MAXKEEPCOMPLSEARCH_PARMNUM=525; -const SV_THREADCOUNTADD_PARMNUM=526; -const SV_NUMBLOCKTHREADS_PARMNUM=527; -const SV_SCAVTIMEOUT_PARMNUM=528; -const SV_MINRCVQUEUE_PARMNUM=529; -const SV_MINFREEWORKITEMS_PARMNUM=530; -const SV_XACTMEMSIZE_PARMNUM=531; -const SV_THREADPRIORITY_PARMNUM=532; -const SV_MAXMPXCT_PARMNUM=533; -const SV_OPLOCKBREAKWAIT_PARMNUM=534; -const SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM=535; -const SV_ENABLEOPLOCKS_PARMNUM=536; -const SV_ENABLEOPLOCKFORCECLOSE_PARMNUM=537; -const SV_ENABLEFCBOPENS_PARMNUM=538; -const SV_ENABLERAW_PARMNUM=539; -const SV_ENABLESHAREDNETDRIVES_PARMNUM=540; -const SV_MINFREECONNECTIONS_PARMNUM=541; -const SV_MAXFREECONNECTIONS_PARMNUM=542; -const SV_INITSESSTABLE_PARMNUM=543; -const SV_INITCONNTABLE_PARMNUM=544; -const SV_INITFILETABLE_PARMNUM=545; -const SV_INITSEARCHTABLE_PARMNUM=546; -const SV_ALERTSCHEDULE_PARMNUM=547; -const SV_ERRORTHRESHOLD_PARMNUM=548; -const SV_NETWORKERRORTHRESHOLD_PARMNUM=549; -const SV_DISKSPACETHRESHOLD_PARMNUM=550; -const SV_MAXLINKDELAY_PARMNUM=552; -const SV_MINLINKTHROUGHPUT_PARMNUM=553; -const SV_LINKINFOVALIDTIME_PARMNUM=554; -const SV_SCAVQOSINFOUPDATETIME_PARMNUM=555; -const SV_MAXWORKITEMIDLETIME_PARMNUM=556; -const SV_MAXRAWWORKITEMS_PARMNUM=557; -const SV_PRODUCTTYPE_PARMNUM=560; -const SV_SERVERSIZE_PARMNUM=561; -const SV_CONNECTIONLESSAUTODISC_PARMNUM=562; -const SV_SHARINGVIOLATIONRETRIES_PARMNUM=563; -const SV_SHARINGVIOLATIONDELAY_PARMNUM=564; -const SV_MAXGLOBALOPENSEARCH_PARMNUM=565; -const SV_REMOVEDUPLICATESEARCHES_PARMNUM=566; -const SV_LOCKVIOLATIONRETRIES_PARMNUM=567; -const SV_LOCKVIOLATIONOFFSET_PARMNUM=568; -const SV_LOCKVIOLATIONDELAY_PARMNUM=569; -const SV_MDLREADSWITCHOVER_PARMNUM=570; -const SV_CACHEDOPENLIMIT_PARMNUM=571; -const SV_CRITICALTHREADS_PARMNUM=572; -const SV_RESTRICTNULLSESSACCESS_PARMNUM=573; -const SV_ENABLEWFW311DIRECTIPX_PARMNUM=574; -const SV_OTHERQUEUEAFFINITY_PARMNUM=575; -const SV_QUEUESAMPLESECS_PARMNUM=576; -const SV_BALANCECOUNT_PARMNUM=577; -const SV_PREFERREDAFFINITY_PARMNUM=578; -const SV_MAXFREERFCBS_PARMNUM=579; -const SV_MAXFREEMFCBS_PARMNUM=580; -const SV_MAXFREELFCBS_PARMNUM=581; -const SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM=582; -const SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM=583; -const SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM=584; -const SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM=585; -const SV_MAXTHREADSPERQUEUE_PARMNUM=586; -const SV_COMMENT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM); -const SV_USERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM); -const SV_DISC_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM); -const SV_HIDDEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM); -const SV_ANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM); -const SV_ANNDELTA_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM); -const SV_SESSOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM); -const SV_SESSVCS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM); -const SV_OPENSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM); -const SV_MAXWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM); -const SV_MAXRAWBUFLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM); -const SV_SESSUSERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM); -const SV_SESSCONNS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM); -const SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM); -const SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM); -const SV_ENABLESOFTCOMPAT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM); -const SV_ENABLEFORCEDLOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM); -const SV_TIMESOURCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM); -const SV_LMANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM); -const SV_MAXCOPYREADLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM); -const SV_MAXCOPYWRITELEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM); -const SV_MINKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM); -const SV_MAXKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM); -const SV_MINKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM); -const SV_MAXKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM); -const SV_SCAVTIMEOUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM); -const SV_MINRCVQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM); -const SV_MINFREEWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM); -const SV_MAXMPXCT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM); -const SV_OPLOCKBREAKWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM); -const SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM); -const SV_ENABLEOPLOCKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM); -const SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM); -const SV_ENABLEFCBOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM); -const SV_ENABLERAW_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM); -const SV_ENABLESHAREDNETDRIVES_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM); -const SV_MINFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM); -const SV_MAXFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM); -const SV_INITSESSTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM); -const SV_INITCONNTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM); -const SV_INITFILETABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM); -const SV_INITSEARCHTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM); -const SV_ALERTSCHEDULE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM); -const SV_ERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM); -const SV_NETWORKERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM); -const SV_DISKSPACETHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM); -const SV_MAXLINKDELAY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM); -const SV_MINLINKTHROUGHPUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM); -const SV_LINKINFOVALIDTIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM); -const SV_SCAVQOSINFOUPDATETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM); -const SV_MAXWORKITEMIDLETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM); -const SV_MAXRAWWORKITEMS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM); -const SV_PRODUCTTYPE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM); -const SV_SERVERSIZE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM); -const SV_CONNECTIONLESSAUTODISC_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM); -const SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM); -const SV_SHARINGVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM); -const SV_MAXGLOBALOPENSEARCH_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM); -const SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM); -const SV_LOCKVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM); -const SV_LOCKVIOLATIONOFFSET_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM); -const SV_LOCKVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM); -const SV_MDLREADSWITCHOVER_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM); -const SV_CACHEDOPENLIMIT_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM); -const SV_CRITICALTHREADS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM); -const SV_RESTRICTNULLSESSACCESS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM); -const SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM); -const SV_OTHERQUEUEAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM); -const SV_QUEUESAMPLESECS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM); -const SV_BALANCECOUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM); -const SV_PREFERREDAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM); -const SV_MAXFREERFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM); -const SV_MAXFREEMFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM); -const SV_MAXFREELFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM); -const SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM); -const SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM); -const SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM); -const SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM); -const SV_MAXTHREADSPERQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM); +enum SVI1_NUM_ELEMENTS=5; +enum SVI2_NUM_ELEMENTS=40; +enum SVI3_NUM_ELEMENTS=44; +enum SV_MAX_CMD_LEN=PATHLEN; +enum SW_AUTOPROF_LOAD_MASK=1; +enum SW_AUTOPROF_SAVE_MASK=2; +enum SV_MAX_SRV_HEUR_LEN=32; +enum SV_USERS_PER_LICENSE=5; +enum SV_PLATFORM_ID_OS2=400; +enum SV_PLATFORM_ID_NT=500; +enum MAJOR_VERSION_MASK=15; +enum SV_TYPE_WORKSTATION=1; +enum SV_TYPE_SERVER=2; +enum SV_TYPE_SQLSERVER=4; +enum SV_TYPE_DOMAIN_CTRL=8; +enum SV_TYPE_DOMAIN_BAKCTRL=16; +enum SV_TYPE_TIME_SOURCE=32; +enum SV_TYPE_AFP=64; +enum SV_TYPE_NOVELL=128; +enum SV_TYPE_DOMAIN_MEMBER=256; +enum SV_TYPE_PRINTQ_SERVER=512; +enum SV_TYPE_DIALIN_SERVER=1024; +enum SV_TYPE_XENIX_SERVER=2048; +enum SV_TYPE_SERVER_UNIX=SV_TYPE_XENIX_SERVER; +enum SV_TYPE_NT=4096; +enum SV_TYPE_WFW=8192; +enum SV_TYPE_SERVER_MFPN=16384; +enum SV_TYPE_SERVER_NT=32768; +enum SV_TYPE_POTENTIAL_BROWSER=65536; +enum SV_TYPE_BACKUP_BROWSER=0x20000; +enum SV_TYPE_MASTER_BROWSER=0x40000; +enum SV_TYPE_DOMAIN_MASTER=0x80000; +enum SV_TYPE_SERVER_OSF=0x100000; +enum SV_TYPE_SERVER_VMS=0x200000; +enum SV_TYPE_WINDOWS=0x400000; +enum SV_TYPE_ALTERNATE_XPORT=0x20000000; +enum SV_TYPE_LOCAL_LIST_ONLY=0x40000000; +enum SV_TYPE_DOMAIN_ENUM=0x80000000; +enum SV_TYPE_ALL=0xFFFFFFFF; +enum SV_NODISC=(-1); +enum SV_USERSECURITY=1; +enum SV_SHARESECURITY=0; +enum SV_HIDDEN=1; +enum SV_VISIBLE=0; +enum SV_PLATFORM_ID_PARMNUM=101; +enum SV_NAME_PARMNUM=102; +enum SV_VERSION_MAJOR_PARMNUM=103; +enum SV_VERSION_MINOR_PARMNUM=104; +enum SV_TYPE_PARMNUM=105; +enum SV_COMMENT_PARMNUM=5; +enum SV_USERS_PARMNUM=107; +enum SV_DISC_PARMNUM=10; +enum SV_HIDDEN_PARMNUM=16; +enum SV_ANNOUNCE_PARMNUM=17; +enum SV_ANNDELTA_PARMNUM=18; +enum SV_USERPATH_PARMNUM=112; +enum SV_ULIST_MTIME_PARMNUM=401; +enum SV_GLIST_MTIME_PARMNUM=402; +enum SV_ALIST_MTIME_PARMNUM=403; +enum SV_ALERTS_PARMNUM=11; +enum SV_SECURITY_PARMNUM=405; +enum SV_NUMADMIN_PARMNUM=406; +enum SV_LANMASK_PARMNUM=407; +enum SV_GUESTACC_PARMNUM=408; +enum SV_CHDEVQ_PARMNUM=410; +enum SV_CHDEVJOBS_PARMNUM=411; +enum SV_CONNECTIONS_PARMNUM=412; +enum SV_SHARES_PARMNUM=413; +enum SV_OPENFILES_PARMNUM=414; +enum SV_SESSREQS_PARMNUM=417; +enum SV_ACTIVELOCKS_PARMNUM=419; +enum SV_NUMREQBUF_PARMNUM=420; +enum SV_NUMBIGBUF_PARMNUM=422; +enum SV_NUMFILETASKS_PARMNUM=423; +enum SV_ALERTSCHED_PARMNUM=37; +enum SV_ERRORALERT_PARMNUM=38; +enum SV_LOGONALERT_PARMNUM=39; +enum SV_ACCESSALERT_PARMNUM=40; +enum SV_DISKALERT_PARMNUM=41; +enum SV_NETIOALERT_PARMNUM=42; +enum SV_MAXAUDITSZ_PARMNUM=43; +enum SV_SRVHEURISTICS_PARMNUM=431; +enum SV_SESSOPENS_PARMNUM=501; +enum SV_SESSVCS_PARMNUM=502; +enum SV_OPENSEARCH_PARMNUM=503; +enum SV_SIZREQBUF_PARMNUM=504; +enum SV_INITWORKITEMS_PARMNUM=505; +enum SV_MAXWORKITEMS_PARMNUM=506; +enum SV_RAWWORKITEMS_PARMNUM=507; +enum SV_IRPSTACKSIZE_PARMNUM=508; +enum SV_MAXRAWBUFLEN_PARMNUM=509; +enum SV_SESSUSERS_PARMNUM=510; +enum SV_SESSCONNS_PARMNUM=511; +enum SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM=512; +enum SV_MAXPAGEDMEMORYUSAGE_PARMNUM=513; +enum SV_ENABLESOFTCOMPAT_PARMNUM=514; +enum SV_ENABLEFORCEDLOGOFF_PARMNUM=515; +enum SV_TIMESOURCE_PARMNUM=516; +enum SV_ACCEPTDOWNLEVELAPIS_PARMNUM=517; +enum SV_LMANNOUNCE_PARMNUM=518; +enum SV_DOMAIN_PARMNUM=519; +enum SV_MAXCOPYREADLEN_PARMNUM=520; +enum SV_MAXCOPYWRITELEN_PARMNUM=521; +enum SV_MINKEEPSEARCH_PARMNUM=522; +enum SV_MAXKEEPSEARCH_PARMNUM=523; +enum SV_MINKEEPCOMPLSEARCH_PARMNUM=524; +enum SV_MAXKEEPCOMPLSEARCH_PARMNUM=525; +enum SV_THREADCOUNTADD_PARMNUM=526; +enum SV_NUMBLOCKTHREADS_PARMNUM=527; +enum SV_SCAVTIMEOUT_PARMNUM=528; +enum SV_MINRCVQUEUE_PARMNUM=529; +enum SV_MINFREEWORKITEMS_PARMNUM=530; +enum SV_XACTMEMSIZE_PARMNUM=531; +enum SV_THREADPRIORITY_PARMNUM=532; +enum SV_MAXMPXCT_PARMNUM=533; +enum SV_OPLOCKBREAKWAIT_PARMNUM=534; +enum SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM=535; +enum SV_ENABLEOPLOCKS_PARMNUM=536; +enum SV_ENABLEOPLOCKFORCECLOSE_PARMNUM=537; +enum SV_ENABLEFCBOPENS_PARMNUM=538; +enum SV_ENABLERAW_PARMNUM=539; +enum SV_ENABLESHAREDNETDRIVES_PARMNUM=540; +enum SV_MINFREECONNECTIONS_PARMNUM=541; +enum SV_MAXFREECONNECTIONS_PARMNUM=542; +enum SV_INITSESSTABLE_PARMNUM=543; +enum SV_INITCONNTABLE_PARMNUM=544; +enum SV_INITFILETABLE_PARMNUM=545; +enum SV_INITSEARCHTABLE_PARMNUM=546; +enum SV_ALERTSCHEDULE_PARMNUM=547; +enum SV_ERRORTHRESHOLD_PARMNUM=548; +enum SV_NETWORKERRORTHRESHOLD_PARMNUM=549; +enum SV_DISKSPACETHRESHOLD_PARMNUM=550; +enum SV_MAXLINKDELAY_PARMNUM=552; +enum SV_MINLINKTHROUGHPUT_PARMNUM=553; +enum SV_LINKINFOVALIDTIME_PARMNUM=554; +enum SV_SCAVQOSINFOUPDATETIME_PARMNUM=555; +enum SV_MAXWORKITEMIDLETIME_PARMNUM=556; +enum SV_MAXRAWWORKITEMS_PARMNUM=557; +enum SV_PRODUCTTYPE_PARMNUM=560; +enum SV_SERVERSIZE_PARMNUM=561; +enum SV_CONNECTIONLESSAUTODISC_PARMNUM=562; +enum SV_SHARINGVIOLATIONRETRIES_PARMNUM=563; +enum SV_SHARINGVIOLATIONDELAY_PARMNUM=564; +enum SV_MAXGLOBALOPENSEARCH_PARMNUM=565; +enum SV_REMOVEDUPLICATESEARCHES_PARMNUM=566; +enum SV_LOCKVIOLATIONRETRIES_PARMNUM=567; +enum SV_LOCKVIOLATIONOFFSET_PARMNUM=568; +enum SV_LOCKVIOLATIONDELAY_PARMNUM=569; +enum SV_MDLREADSWITCHOVER_PARMNUM=570; +enum SV_CACHEDOPENLIMIT_PARMNUM=571; +enum SV_CRITICALTHREADS_PARMNUM=572; +enum SV_RESTRICTNULLSESSACCESS_PARMNUM=573; +enum SV_ENABLEWFW311DIRECTIPX_PARMNUM=574; +enum SV_OTHERQUEUEAFFINITY_PARMNUM=575; +enum SV_QUEUESAMPLESECS_PARMNUM=576; +enum SV_BALANCECOUNT_PARMNUM=577; +enum SV_PREFERREDAFFINITY_PARMNUM=578; +enum SV_MAXFREERFCBS_PARMNUM=579; +enum SV_MAXFREEMFCBS_PARMNUM=580; +enum SV_MAXFREELFCBS_PARMNUM=581; +enum SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM=582; +enum SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM=583; +enum SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM=584; +enum SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM=585; +enum SV_MAXTHREADSPERQUEUE_PARMNUM=586; +enum SV_COMMENT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM); +enum SV_USERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM); +enum SV_DISC_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM); +enum SV_HIDDEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM); +enum SV_ANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM); +enum SV_ANNDELTA_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM); +enum SV_SESSOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM); +enum SV_SESSVCS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM); +enum SV_OPENSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM); +enum SV_MAXWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM); +enum SV_MAXRAWBUFLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM); +enum SV_SESSUSERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM); +enum SV_SESSCONNS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM); +enum SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM); +enum SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM); +enum SV_ENABLESOFTCOMPAT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM); +enum SV_ENABLEFORCEDLOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM); +enum SV_TIMESOURCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM); +enum SV_LMANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM); +enum SV_MAXCOPYREADLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM); +enum SV_MAXCOPYWRITELEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM); +enum SV_MINKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM); +enum SV_MAXKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM); +enum SV_MINKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM); +enum SV_MAXKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM); +enum SV_SCAVTIMEOUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM); +enum SV_MINRCVQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM); +enum SV_MINFREEWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM); +enum SV_MAXMPXCT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM); +enum SV_OPLOCKBREAKWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM); +enum SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM); +enum SV_ENABLEOPLOCKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM); +enum SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM); +enum SV_ENABLEFCBOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM); +enum SV_ENABLERAW_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM); +enum SV_ENABLESHAREDNETDRIVES_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM); +enum SV_MINFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM); +enum SV_MAXFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM); +enum SV_INITSESSTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM); +enum SV_INITCONNTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM); +enum SV_INITFILETABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM); +enum SV_INITSEARCHTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM); +enum SV_ALERTSCHEDULE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM); +enum SV_ERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM); +enum SV_NETWORKERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM); +enum SV_DISKSPACETHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM); +enum SV_MAXLINKDELAY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM); +enum SV_MINLINKTHROUGHPUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM); +enum SV_LINKINFOVALIDTIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM); +enum SV_SCAVQOSINFOUPDATETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM); +enum SV_MAXWORKITEMIDLETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM); +enum SV_MAXRAWWORKITEMS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM); +enum SV_PRODUCTTYPE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM); +enum SV_SERVERSIZE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM); +enum SV_CONNECTIONLESSAUTODISC_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM); +enum SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM); +enum SV_SHARINGVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM); +enum SV_MAXGLOBALOPENSEARCH_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM); +enum SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM); +enum SV_LOCKVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM); +enum SV_LOCKVIOLATIONOFFSET_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM); +enum SV_LOCKVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM); +enum SV_MDLREADSWITCHOVER_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM); +enum SV_CACHEDOPENLIMIT_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM); +enum SV_CRITICALTHREADS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM); +enum SV_RESTRICTNULLSESSACCESS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM); +enum SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM); +enum SV_OTHERQUEUEAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM); +enum SV_QUEUESAMPLESECS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM); +enum SV_BALANCECOUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM); +enum SV_PREFERREDAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM); +enum SV_MAXFREERFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM); +enum SV_MAXFREEMFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM); +enum SV_MAXFREELFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM); +enum SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM); +enum SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM); +enum SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM); +enum SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM); +enum SV_MAXTHREADSPERQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM); diff --git a/src/core/sys/windows/lmshare.d b/src/core/sys/windows/lmshare.d index ebf494180c..2aacc7e126 100644 --- a/src/core/sys/windows/lmshare.d +++ b/src/core/sys/windows/lmshare.d @@ -14,39 +14,39 @@ import core.sys.windows.lmcons; private import core.sys.windows.w32api, core.sys.windows.windef; -const SHARE_NETNAME_PARMNUM = 1; -const SHARE_TYPE_PARMNUM = 3; -const SHARE_REMARK_PARMNUM = 4; -const SHARE_PERMISSIONS_PARMNUM = 5; -const SHARE_MAX_USES_PARMNUM = 6; -const SHARE_CURRENT_USES_PARMNUM = 7; -const SHARE_PATH_PARMNUM = 8; -const SHARE_PASSWD_PARMNUM = 9; -const SHARE_FILE_SD_PARMNUM = 501; -const SHARE_REMARK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM; -const SHARE_MAX_USES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM; -const SHARE_FILE_SD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM; - -const SHI1_NUM_ELEMENTS = 4; -const SHI2_NUM_ELEMENTS = 10; - -const STYPE_DISKTREE = 0; -const STYPE_PRINTQ = 1; -const STYPE_DEVICE = 2; -const STYPE_IPC = 3; -const STYPE_DFS = 100; -const STYPE_SPECIAL = 0x80000000; - -const DWORD SHI_USES_UNLIMITED = -1; - -const SESS_GUEST = 1; -const SESS_NOENCRYPTION = 2; -const SESI1_NUM_ELEMENTS = 8; -const SESI2_NUM_ELEMENTS = 9; - -const PERM_FILE_READ = 1; -const PERM_FILE_WRITE = 2; -const PERM_FILE_CREATE = 4; +enum SHARE_NETNAME_PARMNUM = 1; +enum SHARE_TYPE_PARMNUM = 3; +enum SHARE_REMARK_PARMNUM = 4; +enum SHARE_PERMISSIONS_PARMNUM = 5; +enum SHARE_MAX_USES_PARMNUM = 6; +enum SHARE_CURRENT_USES_PARMNUM = 7; +enum SHARE_PATH_PARMNUM = 8; +enum SHARE_PASSWD_PARMNUM = 9; +enum SHARE_FILE_SD_PARMNUM = 501; +enum SHARE_REMARK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM; +enum SHARE_MAX_USES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM; +enum SHARE_FILE_SD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM; + +enum SHI1_NUM_ELEMENTS = 4; +enum SHI2_NUM_ELEMENTS = 10; + +enum STYPE_DISKTREE = 0; +enum STYPE_PRINTQ = 1; +enum STYPE_DEVICE = 2; +enum STYPE_IPC = 3; +enum STYPE_DFS = 100; +enum STYPE_SPECIAL = 0x80000000; + +enum DWORD SHI_USES_UNLIMITED = -1; + +enum SESS_GUEST = 1; +enum SESS_NOENCRYPTION = 2; +enum SESI1_NUM_ELEMENTS = 8; +enum SESI2_NUM_ELEMENTS = 9; + +enum PERM_FILE_READ = 1; +enum PERM_FILE_WRITE = 2; +enum PERM_FILE_CREATE = 4; struct FILE_INFO_2 { DWORD fi2_id; diff --git a/src/core/sys/windows/lmstats.d b/src/core/sys/windows/lmstats.d index 0f082f3e5a..084c3307bb 100644 --- a/src/core/sys/windows/lmstats.d +++ b/src/core/sys/windows/lmstats.d @@ -12,7 +12,7 @@ pragma(lib, "netapi32"); private import core.sys.windows.lmcons, core.sys.windows.windef; -const ULONG +enum ULONG STATSOPT_CLR = 1, STATS_NO_VALUE = -1, STATS_OVERFLOW = -2; diff --git a/src/core/sys/windows/lmsvc.d b/src/core/sys/windows/lmsvc.d index fcaf5e54fe..68a15920e2 100644 --- a/src/core/sys/windows/lmsvc.d +++ b/src/core/sys/windows/lmsvc.d @@ -20,99 +20,99 @@ private import core.sys.windows.lmcons, core.sys.windows.lmsname, core.sys.windo const TCHAR[] SERVICE_DOS_ENCRYPTION = "ENCRYPT"; -const SERVICE_UNINSTALLED=0; -const SERVICE_INSTALL_PENDING=1; -const SERVICE_UNINSTALL_PENDING=2; -const SERVICE_INSTALLED=3; -const SERVICE_INSTALL_STATE=3; -const SERVICE_PAUSE_STATE=18; -const LM20_SERVICE_ACTIVE=0; -const LM20_SERVICE_CONTINUE_PENDING=4; -const LM20_SERVICE_PAUSE_PENDING=8; -const LM20_SERVICE_PAUSED=18; -const SERVICE_NOT_UNINSTALLABLE=0; -const SERVICE_UNINSTALLABLE=16; -const SERVICE_NOT_PAUSABLE=0; -const SERVICE_PAUSABLE=32; -const SERVICE_REDIR_PAUSED=0x700; -const SERVICE_REDIR_DISK_PAUSED=256; -const SERVICE_REDIR_PRINT_PAUSED=512; -const SERVICE_REDIR_COMM_PAUSED=1024; -const SERVICE_CTRL_INTERROGATE=0; -const SERVICE_CTRL_PAUSE=1; -const SERVICE_CTRL_CONTINUE=2; -const SERVICE_CTRL_UNINSTALL=3; -const SERVICE_CTRL_REDIR_DISK=1; -const SERVICE_CTRL_REDIR_PRINT=2; -const SERVICE_CTRL_REDIR_COMM=4; -const SERVICE_IP_NO_HINT=0; -const SERVICE_CCP_NO_HINT=0; -const SERVICE_IP_QUERY_HINT=0x10000; -const SERVICE_CCP_QUERY_HINT=0x10000; -const SERVICE_IP_CHKPT_NUM=255; -const SERVICE_CCP_CHKPT_NUM=255; -const SERVICE_IP_WAIT_TIME=0xFF00; -const SERVICE_CCP_WAIT_TIME=0xFF00; -const SERVICE_IP_WAITTIME_SHIFT=8; -const SERVICE_NTIP_WAITTIME_SHIFT=12; -const UPPER_HINT_MASK=0xFF00; -const LOWER_HINT_MASK=255; -const UPPER_GET_HINT_MASK=0xFF00000; -const LOWER_GET_HINT_MASK=0xFF00; -const SERVICE_NT_MAXTIME=0xFFFF; -const SERVICE_RESRV_MASK=0x1FFFF; -const SERVICE_MAXTIME=255; -const SERVICE_BASE=3050; -const SERVICE_UIC_NORMAL=0; +enum SERVICE_UNINSTALLED=0; +enum SERVICE_INSTALL_PENDING=1; +enum SERVICE_UNINSTALL_PENDING=2; +enum SERVICE_INSTALLED=3; +enum SERVICE_INSTALL_STATE=3; +enum SERVICE_PAUSE_STATE=18; +enum LM20_SERVICE_ACTIVE=0; +enum LM20_SERVICE_CONTINUE_PENDING=4; +enum LM20_SERVICE_PAUSE_PENDING=8; +enum LM20_SERVICE_PAUSED=18; +enum SERVICE_NOT_UNINSTALLABLE=0; +enum SERVICE_UNINSTALLABLE=16; +enum SERVICE_NOT_PAUSABLE=0; +enum SERVICE_PAUSABLE=32; +enum SERVICE_REDIR_PAUSED=0x700; +enum SERVICE_REDIR_DISK_PAUSED=256; +enum SERVICE_REDIR_PRINT_PAUSED=512; +enum SERVICE_REDIR_COMM_PAUSED=1024; +enum SERVICE_CTRL_INTERROGATE=0; +enum SERVICE_CTRL_PAUSE=1; +enum SERVICE_CTRL_CONTINUE=2; +enum SERVICE_CTRL_UNINSTALL=3; +enum SERVICE_CTRL_REDIR_DISK=1; +enum SERVICE_CTRL_REDIR_PRINT=2; +enum SERVICE_CTRL_REDIR_COMM=4; +enum SERVICE_IP_NO_HINT=0; +enum SERVICE_CCP_NO_HINT=0; +enum SERVICE_IP_QUERY_HINT=0x10000; +enum SERVICE_CCP_QUERY_HINT=0x10000; +enum SERVICE_IP_CHKPT_NUM=255; +enum SERVICE_CCP_CHKPT_NUM=255; +enum SERVICE_IP_WAIT_TIME=0xFF00; +enum SERVICE_CCP_WAIT_TIME=0xFF00; +enum SERVICE_IP_WAITTIME_SHIFT=8; +enum SERVICE_NTIP_WAITTIME_SHIFT=12; +enum UPPER_HINT_MASK=0xFF00; +enum LOWER_HINT_MASK=255; +enum UPPER_GET_HINT_MASK=0xFF00000; +enum LOWER_GET_HINT_MASK=0xFF00; +enum SERVICE_NT_MAXTIME=0xFFFF; +enum SERVICE_RESRV_MASK=0x1FFFF; +enum SERVICE_MAXTIME=255; +enum SERVICE_BASE=3050; +enum SERVICE_UIC_NORMAL=0; -const SERVICE_UIC_BADPARMVAL = SERVICE_BASE+1; -const SERVICE_UIC_MISSPARM = SERVICE_BASE+2; -const SERVICE_UIC_UNKPARM = SERVICE_BASE+3; -const SERVICE_UIC_RESOURCE = SERVICE_BASE+4; -const SERVICE_UIC_CONFIG = SERVICE_BASE+5; -const SERVICE_UIC_SYSTEM = SERVICE_BASE+6; -const SERVICE_UIC_INTERNAL = SERVICE_BASE+7; -const SERVICE_UIC_AMBIGPARM = SERVICE_BASE+8; -const SERVICE_UIC_DUPPARM = SERVICE_BASE+9; -const SERVICE_UIC_KILL = SERVICE_BASE+10; -const SERVICE_UIC_EXEC = SERVICE_BASE+11; -const SERVICE_UIC_SUBSERV = SERVICE_BASE+12; -const SERVICE_UIC_CONFLPARM = SERVICE_BASE+13; -const SERVICE_UIC_FILE = SERVICE_BASE+14; -const SERVICE_UIC_M_NULL=0; -const SERVICE_UIC_M_MEMORY = SERVICE_BASE+20; -const SERVICE_UIC_M_DISK = SERVICE_BASE+21; -const SERVICE_UIC_M_THREADS = SERVICE_BASE+22; -const SERVICE_UIC_M_PROCESSES = SERVICE_BASE+23; -const SERVICE_UIC_M_SECURITY = SERVICE_BASE+24; -const SERVICE_UIC_M_LANROOT = SERVICE_BASE+25; -const SERVICE_UIC_M_REDIR = SERVICE_BASE+26; -const SERVICE_UIC_M_SERVER = SERVICE_BASE+27; -const SERVICE_UIC_M_SEC_FILE_ERR = SERVICE_BASE+28; -const SERVICE_UIC_M_FILES = SERVICE_BASE+29; -const SERVICE_UIC_M_LOGS = SERVICE_BASE+30; -const SERVICE_UIC_M_LANGROUP = SERVICE_BASE+31; -const SERVICE_UIC_M_MSGNAME = SERVICE_BASE+32; -const SERVICE_UIC_M_ANNOUNCE = SERVICE_BASE+33; -const SERVICE_UIC_M_UAS = SERVICE_BASE+34; -const SERVICE_UIC_M_SERVER_SEC_ERR = SERVICE_BASE+35; -const SERVICE_UIC_M_WKSTA = SERVICE_BASE+37; -const SERVICE_UIC_M_ERRLOG = SERVICE_BASE+38; -const SERVICE_UIC_M_FILE_UW = SERVICE_BASE+39; -const SERVICE_UIC_M_ADDPAK = SERVICE_BASE+40; -const SERVICE_UIC_M_LAZY = SERVICE_BASE+41; -const SERVICE_UIC_M_UAS_MACHINE_ACCT = SERVICE_BASE+42; -const SERVICE_UIC_M_UAS_SERVERS_NMEMB = SERVICE_BASE+43; -const SERVICE_UIC_M_UAS_SERVERS_NOGRP = SERVICE_BASE+44; -const SERVICE_UIC_M_UAS_INVALID_ROLE = SERVICE_BASE+45; -const SERVICE_UIC_M_NETLOGON_NO_DC = SERVICE_BASE+46; -const SERVICE_UIC_M_NETLOGON_DC_CFLCT = SERVICE_BASE+47; -const SERVICE_UIC_M_NETLOGON_AUTH = SERVICE_BASE+48; -const SERVICE_UIC_M_UAS_PROLOG = SERVICE_BASE+49; -const SERVICE2_BASE=5600; -const SERVICE_UIC_M_NETLOGON_MPATH = SERVICE2_BASE+0; -const SERVICE_UIC_M_LSA_MACHINE_ACCT = SERVICE2_BASE+1; -const SERVICE_UIC_M_DATABASE_ERROR = SERVICE2_BASE+2; +enum SERVICE_UIC_BADPARMVAL = SERVICE_BASE+1; +enum SERVICE_UIC_MISSPARM = SERVICE_BASE+2; +enum SERVICE_UIC_UNKPARM = SERVICE_BASE+3; +enum SERVICE_UIC_RESOURCE = SERVICE_BASE+4; +enum SERVICE_UIC_CONFIG = SERVICE_BASE+5; +enum SERVICE_UIC_SYSTEM = SERVICE_BASE+6; +enum SERVICE_UIC_INTERNAL = SERVICE_BASE+7; +enum SERVICE_UIC_AMBIGPARM = SERVICE_BASE+8; +enum SERVICE_UIC_DUPPARM = SERVICE_BASE+9; +enum SERVICE_UIC_KILL = SERVICE_BASE+10; +enum SERVICE_UIC_EXEC = SERVICE_BASE+11; +enum SERVICE_UIC_SUBSERV = SERVICE_BASE+12; +enum SERVICE_UIC_CONFLPARM = SERVICE_BASE+13; +enum SERVICE_UIC_FILE = SERVICE_BASE+14; +enum SERVICE_UIC_M_NULL=0; +enum SERVICE_UIC_M_MEMORY = SERVICE_BASE+20; +enum SERVICE_UIC_M_DISK = SERVICE_BASE+21; +enum SERVICE_UIC_M_THREADS = SERVICE_BASE+22; +enum SERVICE_UIC_M_PROCESSES = SERVICE_BASE+23; +enum SERVICE_UIC_M_SECURITY = SERVICE_BASE+24; +enum SERVICE_UIC_M_LANROOT = SERVICE_BASE+25; +enum SERVICE_UIC_M_REDIR = SERVICE_BASE+26; +enum SERVICE_UIC_M_SERVER = SERVICE_BASE+27; +enum SERVICE_UIC_M_SEC_FILE_ERR = SERVICE_BASE+28; +enum SERVICE_UIC_M_FILES = SERVICE_BASE+29; +enum SERVICE_UIC_M_LOGS = SERVICE_BASE+30; +enum SERVICE_UIC_M_LANGROUP = SERVICE_BASE+31; +enum SERVICE_UIC_M_MSGNAME = SERVICE_BASE+32; +enum SERVICE_UIC_M_ANNOUNCE = SERVICE_BASE+33; +enum SERVICE_UIC_M_UAS = SERVICE_BASE+34; +enum SERVICE_UIC_M_SERVER_SEC_ERR = SERVICE_BASE+35; +enum SERVICE_UIC_M_WKSTA = SERVICE_BASE+37; +enum SERVICE_UIC_M_ERRLOG = SERVICE_BASE+38; +enum SERVICE_UIC_M_FILE_UW = SERVICE_BASE+39; +enum SERVICE_UIC_M_ADDPAK = SERVICE_BASE+40; +enum SERVICE_UIC_M_LAZY = SERVICE_BASE+41; +enum SERVICE_UIC_M_UAS_MACHINE_ACCT = SERVICE_BASE+42; +enum SERVICE_UIC_M_UAS_SERVERS_NMEMB = SERVICE_BASE+43; +enum SERVICE_UIC_M_UAS_SERVERS_NOGRP = SERVICE_BASE+44; +enum SERVICE_UIC_M_UAS_INVALID_ROLE = SERVICE_BASE+45; +enum SERVICE_UIC_M_NETLOGON_NO_DC = SERVICE_BASE+46; +enum SERVICE_UIC_M_NETLOGON_DC_CFLCT = SERVICE_BASE+47; +enum SERVICE_UIC_M_NETLOGON_AUTH = SERVICE_BASE+48; +enum SERVICE_UIC_M_UAS_PROLOG = SERVICE_BASE+49; +enum SERVICE2_BASE=5600; +enum SERVICE_UIC_M_NETLOGON_MPATH = SERVICE2_BASE+0; +enum SERVICE_UIC_M_LSA_MACHINE_ACCT = SERVICE2_BASE+1; +enum SERVICE_UIC_M_DATABASE_ERROR = SERVICE2_BASE+2; struct SERVICE_INFO_0 { LPWSTR svci0_name; diff --git a/src/core/sys/windows/lmuse.d b/src/core/sys/windows/lmuse.d index fca7e3a523..8ceab4771e 100644 --- a/src/core/sys/windows/lmuse.d +++ b/src/core/sys/windows/lmuse.d @@ -32,7 +32,7 @@ enum { USE_RECONN } -const DWORD USE_WILDCARD = -1; +enum DWORD USE_WILDCARD = -1; enum { USE_DISKDEV, diff --git a/src/core/sys/windows/mapi.d b/src/core/sys/windows/mapi.d index 5760022d00..a82c927f9e 100644 --- a/src/core/sys/windows/mapi.d +++ b/src/core/sys/windows/mapi.d @@ -54,25 +54,25 @@ enum { MAPI_BCC } -const MAPI_LOGON_UI = 0x0001; -const MAPI_NEW_SESSION = 0x0002; -const MAPI_FORCE_DOWNLOAD = 0x1000; -const MAPI_LOGOFF_SHARED = 0x0001; -const MAPI_LOGOFF_UI = 0x0002; -const MAPI_DIALOG = 0x0008; -const MAPI_UNREAD_ONLY = 0x0020; -const MAPI_LONG_MSGID = 0x4000; -const MAPI_GUARANTEE_FIFO = 0x0100; -const MAPI_ENVELOPE_ONLY = 0x0040; -const MAPI_PEEK = 0x0080; -const MAPI_BODY_AS_FILE = 0x0200; -const MAPI_SUPPRESS_ATTACH = 0x0800; -const MAPI_AB_NOMODIFY = 0x0400; -const MAPI_OLE = 0x0001; -const MAPI_OLE_STATIC = 0x0002; -const MAPI_UNREAD = 0x0001; -const MAPI_RECEIPT_REQUESTED = 0x0002; -const MAPI_SENT = 0x0004; +enum MAPI_LOGON_UI = 0x0001; +enum MAPI_NEW_SESSION = 0x0002; +enum MAPI_FORCE_DOWNLOAD = 0x1000; +enum MAPI_LOGOFF_SHARED = 0x0001; +enum MAPI_LOGOFF_UI = 0x0002; +enum MAPI_DIALOG = 0x0008; +enum MAPI_UNREAD_ONLY = 0x0020; +enum MAPI_LONG_MSGID = 0x4000; +enum MAPI_GUARANTEE_FIFO = 0x0100; +enum MAPI_ENVELOPE_ONLY = 0x0040; +enum MAPI_PEEK = 0x0080; +enum MAPI_BODY_AS_FILE = 0x0200; +enum MAPI_SUPPRESS_ATTACH = 0x0800; +enum MAPI_AB_NOMODIFY = 0x0400; +enum MAPI_OLE = 0x0001; +enum MAPI_OLE_STATIC = 0x0002; +enum MAPI_UNREAD = 0x0001; +enum MAPI_RECEIPT_REQUESTED = 0x0002; +enum MAPI_SENT = 0x0004; alias uint FLAGS, LHANDLE; alias uint* LPLHANDLE, LPULONG; diff --git a/src/core/sys/windows/mciavi.d b/src/core/sys/windows/mciavi.d index d3a26bc590..537bd4829c 100644 --- a/src/core/sys/windows/mciavi.d +++ b/src/core/sys/windows/mciavi.d @@ -14,9 +14,9 @@ private import core.sys.windows.mmsystem; // FIXME: check types and grouping of constants -const MCI_MCIAVI_PLAY_WINDOW = 0x01000000; -const MCI_MCIAVI_PLAY_FULLSCREEN = 0x02000000; -const MCI_MCIAVI_PLAY_FULLBY2 = 0x04000000; +enum MCI_MCIAVI_PLAY_WINDOW = 0x01000000; +enum MCI_MCIAVI_PLAY_FULLSCREEN = 0x02000000; +enum MCI_MCIAVI_PLAY_FULLBY2 = 0x04000000; enum { MCI_AVI_STATUS_FRAMES_SKIPPED = 0x00008001, diff --git a/src/core/sys/windows/mcx.d b/src/core/sys/windows/mcx.d index 266ccaacf1..11f6a452d8 100644 --- a/src/core/sys/windows/mcx.d +++ b/src/core/sys/windows/mcx.d @@ -12,12 +12,12 @@ version (Windows): private import core.sys.windows.windef; -const DWORD +enum DWORD DIALOPTION_BILLING = 64, DIALOPTION_QUIET = 128, DIALOPTION_DIALTONE = 256; -const DWORD +enum DWORD MDMVOLFLAG_LOW = 1, MDMVOLFLAG_MEDIUM = 2, MDMVOLFLAG_HIGH = 4; @@ -28,7 +28,7 @@ enum : DWORD { MDMVOL_HIGH = 2 } -const DWORD +enum DWORD MDMSPKRFLAG_OFF = 1, MDMSPKRFLAG_DIAL = 2, MDMSPKRFLAG_ON = 4, @@ -41,7 +41,7 @@ enum : DWORD { MDMSPKR_CALLSETUP } -const DWORD +enum DWORD MDM_COMPRESSION = 0x0001, MDM_ERROR_CONTROL = 0x0002, MDM_FORCED_EC = 0x0004, diff --git a/src/core/sys/windows/mgmtapi.d b/src/core/sys/windows/mgmtapi.d index a0a0d16c3c..3a11e81bfc 100644 --- a/src/core/sys/windows/mgmtapi.d +++ b/src/core/sys/windows/mgmtapi.d @@ -25,7 +25,7 @@ enum { SNMP_MGMTAPI_INVALID_BUFFER // = 48 } -const MGMCTL_SETAGENTPORT = 1; +enum MGMCTL_SETAGENTPORT = 1; alias PVOID LPSNMP_MGR_SESSION; diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index 0d6f9a8df4..a11a4e1834 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -20,25 +20,25 @@ private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.window align(1): -const MAXPNAMELEN = 32; -const MAXERRORLENGTH = 256; -const MAX_JOYSTICKOEMVXDNAME = 260; +enum MAXPNAMELEN = 32; +enum MAXERRORLENGTH = 256; +enum MAX_JOYSTICKOEMVXDNAME = 260; -const TIME_MS = 1; -const TIME_SAMPLES = 2; -const TIME_BYTES = 4; -const TIME_SMPTE = 8; -const TIME_MIDI = 16; -const TIME_TICKS = 32; +enum TIME_MS = 1; +enum TIME_SAMPLES = 2; +enum TIME_BYTES = 4; +enum TIME_SMPTE = 8; +enum TIME_MIDI = 16; +enum TIME_TICKS = 32; template MAKEFOURCC(char c0, char c1, char c2, char c3) { - const DWORD MAKEFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); +enum DWORD MAKEFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); } template mmioFOURCC(char c0, char c1, char c2, char c3) { - const DWORD mmioFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); +enum DWORD mmioFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); } enum { @@ -81,18 +81,18 @@ enum { MM_MIXM_CONTROL_CHANGE = 0x3D1 } -const MMSYSERR_BASE = 0; -const WAVERR_BASE = 32; -const MIDIERR_BASE = 64; -const TIMERR_BASE = 96; -const JOYERR_BASE = 160; -const MCIERR_BASE = 256; -const MIXERR_BASE = 1024; -const MCI_STRING_OFFSET = 512; -const MCI_VD_OFFSET = 1024; -const MCI_CD_OFFSET = 1088; -const MCI_WAVE_OFFSET = 1152; -const MCI_SEQ_OFFSET = 1216; +enum MMSYSERR_BASE = 0; +enum WAVERR_BASE = 32; +enum MIDIERR_BASE = 64; +enum TIMERR_BASE = 96; +enum JOYERR_BASE = 160; +enum MCIERR_BASE = 256; +enum MIXERR_BASE = 1024; +enum MCI_STRING_OFFSET = 512; +enum MCI_VD_OFFSET = 1024; +enum MCI_CD_OFFSET = 1088; +enum MCI_WAVE_OFFSET = 1152; +enum MCI_SEQ_OFFSET = 1216; enum { MMSYSERR_NOERROR = 0, @@ -134,54 +134,54 @@ enum { DRV_POWER } -const DRV_RESERVED = 0x800; -const DRV_USER = 0x4000; - -const DRVCNF_CANCEL = 0; -const DRVCNF_OK = 1; -const DRVCNF_RESTART = 2; -const DRV_CANCEL = DRVCNF_CANCEL; -const DRV_OK = DRVCNF_OK; -const DRV_RESTART = DRVCNF_RESTART; -const DRV_MCI_FIRST = DRV_RESERVED; -const DRV_MCI_LAST = DRV_RESERVED + 0xFFF; - -const CALLBACK_TYPEMASK = 0x70000; -const CALLBACK_NULL = 0; -const CALLBACK_WINDOW = 0x10000; -const CALLBACK_TASK = 0x20000; -const CALLBACK_FUNCTION = 0x30000; -const CALLBACK_THREAD = CALLBACK_TASK; -const CALLBACK_EVENT = 0x50000; - -const SND_SYNC=0; -const SND_ASYNC=1; -const SND_NODEFAULT=2; -const SND_MEMORY=4; -const SND_LOOP=8; -const SND_NOSTOP=16; -const SND_NOWAIT=0x2000; -const SND_ALIAS=0x10000; -const SND_ALIAS_ID=0x110000; -const SND_FILENAME=0x20000; -const SND_RESOURCE=0x40004; -const SND_PURGE=0x40; -const SND_APPLICATION=0x80; -const SND_ALIAS_START=0; +enum DRV_RESERVED = 0x800; +enum DRV_USER = 0x4000; + +enum DRVCNF_CANCEL = 0; +enum DRVCNF_OK = 1; +enum DRVCNF_RESTART = 2; +enum DRV_CANCEL = DRVCNF_CANCEL; +enum DRV_OK = DRVCNF_OK; +enum DRV_RESTART = DRVCNF_RESTART; +enum DRV_MCI_FIRST = DRV_RESERVED; +enum DRV_MCI_LAST = DRV_RESERVED + 0xFFF; + +enum CALLBACK_TYPEMASK = 0x70000; +enum CALLBACK_NULL = 0; +enum CALLBACK_WINDOW = 0x10000; +enum CALLBACK_TASK = 0x20000; +enum CALLBACK_FUNCTION = 0x30000; +enum CALLBACK_THREAD = CALLBACK_TASK; +enum CALLBACK_EVENT = 0x50000; + +enum SND_SYNC=0; +enum SND_ASYNC=1; +enum SND_NODEFAULT=2; +enum SND_MEMORY=4; +enum SND_LOOP=8; +enum SND_NOSTOP=16; +enum SND_NOWAIT=0x2000; +enum SND_ALIAS=0x10000; +enum SND_ALIAS_ID=0x110000; +enum SND_FILENAME=0x20000; +enum SND_RESOURCE=0x40004; +enum SND_PURGE=0x40; +enum SND_APPLICATION=0x80; +enum SND_ALIAS_START=0; template sndAlias(char c0, char c1) { - const DWORD sndAlias = SND_ALIAS_START + c0 | (c1<<8); +enum DWORD sndAlias = SND_ALIAS_START + c0 | (c1<<8); } -const SND_ALIAS_SYSTEMASTERISK = sndAlias!('S', '*'); -const SND_ALIAS_SYSTEMQUESTION = sndAlias!('S', '?'); -const SND_ALIAS_SYSTEMHAND = sndAlias!('S', 'H'); -const SND_ALIAS_SYSTEMEXIT = sndAlias!('S', 'E'); -const SND_ALIAS_SYSTEMSTART = sndAlias!('S', 'S'); -const SND_ALIAS_SYSTEMWELCOME = sndAlias!('S', 'W'); -const SND_ALIAS_SYSTEMEXCLAMATION = sndAlias!('S', '!'); -const SND_ALIAS_SYSTEMDEFAULT = sndAlias!('S', 'D'); +enum SND_ALIAS_SYSTEMASTERISK = sndAlias!('S', '*'); +enum SND_ALIAS_SYSTEMQUESTION = sndAlias!('S', '?'); +enum SND_ALIAS_SYSTEMHAND = sndAlias!('S', 'H'); +enum SND_ALIAS_SYSTEMEXIT = sndAlias!('S', 'E'); +enum SND_ALIAS_SYSTEMSTART = sndAlias!('S', 'S'); +enum SND_ALIAS_SYSTEMWELCOME = sndAlias!('S', 'W'); +enum SND_ALIAS_SYSTEMEXCLAMATION = sndAlias!('S', '!'); +enum SND_ALIAS_SYSTEMDEFAULT = sndAlias!('S', 'D'); enum { WAVERR_BADFORMAT = (WAVERR_BASE + 0), @@ -191,47 +191,47 @@ enum { WAVERR_LASTERROR = WAVERR_SYNC } -const WOM_OPEN = MM_WOM_OPEN; -const WOM_CLOSE = MM_WOM_CLOSE; -const WOM_DONE = MM_WOM_DONE; -const WIM_OPEN = MM_WIM_OPEN; -const WIM_CLOSE = MM_WIM_CLOSE; -const WIM_DATA = MM_WIM_DATA; - -const UINT WAVE_MAPPER= -1; // FIXME: This doesn't make sense! -const WAVE_FORMAT_QUERY=1; -const WAVE_ALLOWSYNC=2; -const WAVE_MAPPED=4; -const WAVE_FORMAT_DIRECT=8; -const WAVE_FORMAT_DIRECT_QUERY=(WAVE_FORMAT_QUERY|WAVE_FORMAT_DIRECT); -const WHDR_DONE=1; -const WHDR_PREPARED=2; -const WHDR_BEGINLOOP=4; -const WHDR_ENDLOOP=8; -const WHDR_INQUEUE=16; - -const WAVECAPS_PITCH=1; -const WAVECAPS_PLAYBACKRATE=2; -const WAVECAPS_VOLUME=4; -const WAVECAPS_LRVOLUME=8; -const WAVECAPS_SYNC=16; -const WAVECAPS_SAMPLEACCURATE=32; -const WAVECAPS_DIRECTSOUND=64; - -const WAVE_INVALIDFORMAT=0; -const WAVE_FORMAT_1M08=1; -const WAVE_FORMAT_1S08=2; -const WAVE_FORMAT_1M16=4; -const WAVE_FORMAT_1S16=8; -const WAVE_FORMAT_2M08=16; -const WAVE_FORMAT_2S08=32; -const WAVE_FORMAT_2M16=64; -const WAVE_FORMAT_2S16=128; -const WAVE_FORMAT_4M08=256; -const WAVE_FORMAT_4S08=512; -const WAVE_FORMAT_4M16=1024; -const WAVE_FORMAT_4S16=2048; -const WAVE_FORMAT_PCM=1; +enum WOM_OPEN = MM_WOM_OPEN; +enum WOM_CLOSE = MM_WOM_CLOSE; +enum WOM_DONE = MM_WOM_DONE; +enum WIM_OPEN = MM_WIM_OPEN; +enum WIM_CLOSE = MM_WIM_CLOSE; +enum WIM_DATA = MM_WIM_DATA; + +enum UINT WAVE_MAPPER= -1; // FIXME: This doesn't make sense! +enum WAVE_FORMAT_QUERY=1; +enum WAVE_ALLOWSYNC=2; +enum WAVE_MAPPED=4; +enum WAVE_FORMAT_DIRECT=8; +enum WAVE_FORMAT_DIRECT_QUERY=(WAVE_FORMAT_QUERY|WAVE_FORMAT_DIRECT); +enum WHDR_DONE=1; +enum WHDR_PREPARED=2; +enum WHDR_BEGINLOOP=4; +enum WHDR_ENDLOOP=8; +enum WHDR_INQUEUE=16; + +enum WAVECAPS_PITCH=1; +enum WAVECAPS_PLAYBACKRATE=2; +enum WAVECAPS_VOLUME=4; +enum WAVECAPS_LRVOLUME=8; +enum WAVECAPS_SYNC=16; +enum WAVECAPS_SAMPLEACCURATE=32; +enum WAVECAPS_DIRECTSOUND=64; + +enum WAVE_INVALIDFORMAT=0; +enum WAVE_FORMAT_1M08=1; +enum WAVE_FORMAT_1S08=2; +enum WAVE_FORMAT_1M16=4; +enum WAVE_FORMAT_1S16=8; +enum WAVE_FORMAT_2M08=16; +enum WAVE_FORMAT_2S08=32; +enum WAVE_FORMAT_2M16=64; +enum WAVE_FORMAT_2S16=128; +enum WAVE_FORMAT_4M08=256; +enum WAVE_FORMAT_4S08=512; +enum WAVE_FORMAT_4M16=1024; +enum WAVE_FORMAT_4S16=2048; +enum WAVE_FORMAT_PCM=1; enum { MIDIERR_UNPREPARED = MIDIERR_BASE, @@ -245,116 +245,116 @@ enum { MIDIERR_LASTERROR = MIDIERR_DONT_CONTINUE } -const MIDIPATCHSIZE=128; - -const MIM_OPEN=MM_MIM_OPEN; -const MIM_CLOSE=MM_MIM_CLOSE; -const MIM_DATA=MM_MIM_DATA; -const MIM_LONGDATA=MM_MIM_LONGDATA; -const MIM_ERROR=MM_MIM_ERROR; -const MIM_LONGERROR=MM_MIM_LONGERROR; -const MOM_OPEN=MM_MOM_OPEN; -const MOM_CLOSE=MM_MOM_CLOSE; -const MOM_DONE=MM_MOM_DONE; -const MIM_MOREDATA=MM_MIM_MOREDATA; -const MOM_POSITIONCB=MM_MOM_POSITIONCB; - -const UINT MIDIMAPPER= -1; // FIXME: uint is nonsense for this! -const UINT MIDI_MAPPER= -1; // FIXME: uint is nonsense for this! -const MIDI_IO_STATUS=32; -const MIDI_CACHE_ALL=1; -const MIDI_CACHE_BESTFIT=2; -const MIDI_CACHE_QUERY=3; -const MIDI_UNCACHE=4; -const MOD_MIDIPORT=1; -const MOD_SYNTH=2; -const MOD_SQSYNTH=3; -const MOD_FMSYNTH=4; -const MOD_MAPPER=5; -const MIDICAPS_VOLUME=1; -const MIDICAPS_LRVOLUME=2; -const MIDICAPS_CACHE=4; -const MIDICAPS_STREAM=8; -const MHDR_DONE=1; -const MHDR_PREPARED=2; -const MHDR_INQUEUE=4; -const MHDR_ISSTRM=8; -const MEVT_F_SHORT=0; -const MEVT_F_LONG=0x80000000; -const MEVT_F_CALLBACK=0x40000000; +enum MIDIPATCHSIZE=128; + +enum MIM_OPEN=MM_MIM_OPEN; +enum MIM_CLOSE=MM_MIM_CLOSE; +enum MIM_DATA=MM_MIM_DATA; +enum MIM_LONGDATA=MM_MIM_LONGDATA; +enum MIM_ERROR=MM_MIM_ERROR; +enum MIM_LONGERROR=MM_MIM_LONGERROR; +enum MOM_OPEN=MM_MOM_OPEN; +enum MOM_CLOSE=MM_MOM_CLOSE; +enum MOM_DONE=MM_MOM_DONE; +enum MIM_MOREDATA=MM_MIM_MOREDATA; +enum MOM_POSITIONCB=MM_MOM_POSITIONCB; + +enum UINT MIDIMAPPER= -1; // FIXME: uint is nonsense for this! +enum UINT MIDI_MAPPER= -1; // FIXME: uint is nonsense for this! +enum MIDI_IO_STATUS=32; +enum MIDI_CACHE_ALL=1; +enum MIDI_CACHE_BESTFIT=2; +enum MIDI_CACHE_QUERY=3; +enum MIDI_UNCACHE=4; +enum MOD_MIDIPORT=1; +enum MOD_SYNTH=2; +enum MOD_SQSYNTH=3; +enum MOD_FMSYNTH=4; +enum MOD_MAPPER=5; +enum MIDICAPS_VOLUME=1; +enum MIDICAPS_LRVOLUME=2; +enum MIDICAPS_CACHE=4; +enum MIDICAPS_STREAM=8; +enum MHDR_DONE=1; +enum MHDR_PREPARED=2; +enum MHDR_INQUEUE=4; +enum MHDR_ISSTRM=8; +enum MEVT_F_SHORT=0; +enum MEVT_F_LONG=0x80000000; +enum MEVT_F_CALLBACK=0x40000000; BYTE MEVT_EVENTTYPE(DWORD x) { return cast(BYTE)((x>>24) &0xFF); } DWORD MEVT_EVENTPARM(DWORD x) { return x & 0xFFFFFF; } -const MEVT_SHORTMSG=0; -const MEVT_TEMPO=1; -const MEVT_NOP=2; - -const BYTE MEVT_LONGMSG = 0x80; -const BYTE MEVT_COMMENT = 0x82; -const BYTE MEVT_VERSION = 0x84; - -const MIDISTRM_ERROR = -2; - -const MIDIPROP_SET = 0x80000000; -const MIDIPROP_GET = 0x40000000; -const MIDIPROP_TIMEDIV = 1; -const MIDIPROP_TEMPO = 2; - -const UINT AUX_MAPPER = -1; - -const AUXCAPS_CDAUDIO=1; -const AUXCAPS_AUXIN=2; -const AUXCAPS_VOLUME=1; -const AUXCAPS_LRVOLUME=2; -const MIXER_SHORT_NAME_CHARS=16; -const MIXER_LONG_NAME_CHARS=64; -const MIXERR_INVALLINE=MIXERR_BASE; -const MIXERR_INVALCONTROL=(MIXERR_BASE+1); -const MIXERR_INVALVALUE=(MIXERR_BASE+2); -const MIXERR_LASTERROR=(MIXERR_BASE+2); - -const MIXER_OBJECTF_HANDLE=0x80000000; -const MIXER_OBJECTF_MIXER=0; -const MIXER_OBJECTF_HMIXER=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER); -const MIXER_OBJECTF_WAVEOUT=0x10000000; -const MIXER_OBJECTF_HWAVEOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT); -const MIXER_OBJECTF_WAVEIN=0x20000000; -const MIXER_OBJECTF_HWAVEIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN); -const MIXER_OBJECTF_MIDIOUT=0x30000000; -const MIXER_OBJECTF_HMIDIOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT); -const MIXER_OBJECTF_MIDIIN=0x40000000; -const MIXER_OBJECTF_HMIDIIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN); -const MIXER_OBJECTF_AUX=0x50000000; - -const MIXERLINE_LINEF_ACTIVE=1; -const MIXERLINE_LINEF_DISCONNECTED=0x8000; -const MIXERLINE_LINEF_SOURCE=0x80000000; - -const MIXERLINE_COMPONENTTYPE_DST_FIRST=0; -const MIXERLINE_COMPONENTTYPE_DST_UNDEFINED=MIXERLINE_COMPONENTTYPE_DST_FIRST; -const MIXERLINE_COMPONENTTYPE_DST_DIGITAL=(MIXERLINE_COMPONENTTYPE_DST_FIRST+1); -const MIXERLINE_COMPONENTTYPE_DST_LINE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+2); -const MIXERLINE_COMPONENTTYPE_DST_MONITOR=(MIXERLINE_COMPONENTTYPE_DST_FIRST+3); -const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS=(MIXERLINE_COMPONENTTYPE_DST_FIRST+4); -const MIXERLINE_COMPONENTTYPE_DST_HEADPHONES=(MIXERLINE_COMPONENTTYPE_DST_FIRST+5); -const MIXERLINE_COMPONENTTYPE_DST_TELEPHONE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+6); -const MIXERLINE_COMPONENTTYPE_DST_WAVEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+7); -const MIXERLINE_COMPONENTTYPE_DST_VOICEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); -const MIXERLINE_COMPONENTTYPE_DST_LAST=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); -const MIXERLINE_COMPONENTTYPE_SRC_FIRST=0x1000; -const MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED=MIXERLINE_COMPONENTTYPE_SRC_FIRST; -const MIXERLINE_COMPONENTTYPE_SRC_DIGITAL=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+1); -const MIXERLINE_COMPONENTTYPE_SRC_LINE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+2); -const MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+3); -const MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+4); -const MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+5); -const MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+6); -const MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+7); -const MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+8); -const MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+9); -const MIXERLINE_COMPONENTTYPE_SRC_ANALOG=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); -const MIXERLINE_COMPONENTTYPE_SRC_LAST=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); +enum MEVT_SHORTMSG=0; +enum MEVT_TEMPO=1; +enum MEVT_NOP=2; + +enum BYTE MEVT_LONGMSG = 0x80; +enum BYTE MEVT_COMMENT = 0x82; +enum BYTE MEVT_VERSION = 0x84; + +enum MIDISTRM_ERROR = -2; + +enum MIDIPROP_SET = 0x80000000; +enum MIDIPROP_GET = 0x40000000; +enum MIDIPROP_TIMEDIV = 1; +enum MIDIPROP_TEMPO = 2; + +enum UINT AUX_MAPPER = -1; + +enum AUXCAPS_CDAUDIO=1; +enum AUXCAPS_AUXIN=2; +enum AUXCAPS_VOLUME=1; +enum AUXCAPS_LRVOLUME=2; +enum MIXER_SHORT_NAME_CHARS=16; +enum MIXER_LONG_NAME_CHARS=64; +enum MIXERR_INVALLINE=MIXERR_BASE; +enum MIXERR_INVALCONTROL=(MIXERR_BASE+1); +enum MIXERR_INVALVALUE=(MIXERR_BASE+2); +enum MIXERR_LASTERROR=(MIXERR_BASE+2); + +enum MIXER_OBJECTF_HANDLE=0x80000000; +enum MIXER_OBJECTF_MIXER=0; +enum MIXER_OBJECTF_HMIXER=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER); +enum MIXER_OBJECTF_WAVEOUT=0x10000000; +enum MIXER_OBJECTF_HWAVEOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT); +enum MIXER_OBJECTF_WAVEIN=0x20000000; +enum MIXER_OBJECTF_HWAVEIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN); +enum MIXER_OBJECTF_MIDIOUT=0x30000000; +enum MIXER_OBJECTF_HMIDIOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT); +enum MIXER_OBJECTF_MIDIIN=0x40000000; +enum MIXER_OBJECTF_HMIDIIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN); +enum MIXER_OBJECTF_AUX=0x50000000; + +enum MIXERLINE_LINEF_ACTIVE=1; +enum MIXERLINE_LINEF_DISCONNECTED=0x8000; +enum MIXERLINE_LINEF_SOURCE=0x80000000; + +enum MIXERLINE_COMPONENTTYPE_DST_FIRST=0; +enum MIXERLINE_COMPONENTTYPE_DST_UNDEFINED=MIXERLINE_COMPONENTTYPE_DST_FIRST; +enum MIXERLINE_COMPONENTTYPE_DST_DIGITAL=(MIXERLINE_COMPONENTTYPE_DST_FIRST+1); +enum MIXERLINE_COMPONENTTYPE_DST_LINE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+2); +enum MIXERLINE_COMPONENTTYPE_DST_MONITOR=(MIXERLINE_COMPONENTTYPE_DST_FIRST+3); +enum MIXERLINE_COMPONENTTYPE_DST_SPEAKERS=(MIXERLINE_COMPONENTTYPE_DST_FIRST+4); +enum MIXERLINE_COMPONENTTYPE_DST_HEADPHONES=(MIXERLINE_COMPONENTTYPE_DST_FIRST+5); +enum MIXERLINE_COMPONENTTYPE_DST_TELEPHONE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+6); +enum MIXERLINE_COMPONENTTYPE_DST_WAVEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+7); +enum MIXERLINE_COMPONENTTYPE_DST_VOICEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); +enum MIXERLINE_COMPONENTTYPE_DST_LAST=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); +enum MIXERLINE_COMPONENTTYPE_SRC_FIRST=0x1000; +enum MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED=MIXERLINE_COMPONENTTYPE_SRC_FIRST; +enum MIXERLINE_COMPONENTTYPE_SRC_DIGITAL=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+1); +enum MIXERLINE_COMPONENTTYPE_SRC_LINE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+2); +enum MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+3); +enum MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+4); +enum MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+5); +enum MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+6); +enum MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+7); +enum MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+8); +enum MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+9); +enum MIXERLINE_COMPONENTTYPE_SRC_ANALOG=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); +enum MIXERLINE_COMPONENTTYPE_SRC_LAST=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); enum { MIXERLINE_TARGETTYPE_UNDEFINED = 0, @@ -365,139 +365,139 @@ enum { MIXERLINE_TARGETTYPE_AUX // =5 } -const MIXER_GETLINEINFOF_DESTINATION=0; -const MIXER_GETLINEINFOF_SOURCE=1; -const MIXER_GETLINEINFOF_LINEID=2; -const MIXER_GETLINEINFOF_COMPONENTTYPE=3; -const MIXER_GETLINEINFOF_TARGETTYPE=4; -const MIXER_GETLINEINFOF_QUERYMASK=15; - -const MIXERCONTROL_CONTROLF_UNIFORM=1; -const MIXERCONTROL_CONTROLF_MULTIPLE=2; -const MIXERCONTROL_CONTROLF_DISABLED=0x80000000; -const MIXERCONTROL_CT_CLASS_MASK=0xF0000000; -const MIXERCONTROL_CT_CLASS_CUSTOM=0; -const MIXERCONTROL_CT_CLASS_METER=0x10000000; -const MIXERCONTROL_CT_CLASS_SWITCH=0x20000000; -const MIXERCONTROL_CT_CLASS_NUMBER=0x30000000; -const MIXERCONTROL_CT_CLASS_SLIDER=0x40000000; -const MIXERCONTROL_CT_CLASS_FADER=0x50000000; -const MIXERCONTROL_CT_CLASS_TIME=0x60000000; -const MIXERCONTROL_CT_CLASS_LIST=0x70000000; -const MIXERCONTROL_CT_SUBCLASS_MASK=0xF000000; -const MIXERCONTROL_CT_SC_SWITCH_BOOLEAN=0; -const MIXERCONTROL_CT_SC_SWITCH_BUTTON=0x1000000; -const MIXERCONTROL_CT_SC_METER_POLLED=0; -const MIXERCONTROL_CT_SC_TIME_MICROSECS=0; -const MIXERCONTROL_CT_SC_TIME_MILLISECS=0x1000000; -const MIXERCONTROL_CT_SC_LIST_SINGLE=0; -const MIXERCONTROL_CT_SC_LIST_MULTIPLE=0x1000000; -const MIXERCONTROL_CT_UNITS_MASK=0xFF0000; -const MIXERCONTROL_CT_UNITS_CUSTOM=0; -const MIXERCONTROL_CT_UNITS_BOOLEAN=0x10000; -const MIXERCONTROL_CT_UNITS_SIGNED=0x20000; -const MIXERCONTROL_CT_UNITS_UNSIGNED=0x30000; -const MIXERCONTROL_CT_UNITS_DECIBELS=0x40000; -const MIXERCONTROL_CT_UNITS_PERCENT=0x50000; - -const MIXERCONTROL_CONTROLTYPE_CUSTOM=(MIXERCONTROL_CT_CLASS_CUSTOM|MIXERCONTROL_CT_UNITS_CUSTOM); -const MIXERCONTROL_CONTROLTYPE_BOOLEANMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_SIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_SIGNED); -const MIXERCONTROL_CONTROLTYPE_PEAKMETER=(MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1); -const MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_BOOLEAN=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BOOLEAN|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_ONOFF=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+1); -const MIXERCONTROL_CONTROLTYPE_MUTE=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+2); -const MIXERCONTROL_CONTROLTYPE_MONO=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+3); -const MIXERCONTROL_CONTROLTYPE_LOUDNESS=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+4); -const MIXERCONTROL_CONTROLTYPE_STEREOENH=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+5); -const MIXERCONTROL_CONTROLTYPE_BUTTON=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BUTTON|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_DECIBELS=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_DECIBELS); -const MIXERCONTROL_CONTROLTYPE_SIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_SIGNED); -const MIXERCONTROL_CONTROLTYPE_UNSIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_PERCENT=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_PERCENT); -const MIXERCONTROL_CONTROLTYPE_SLIDER=(MIXERCONTROL_CT_CLASS_SLIDER|MIXERCONTROL_CT_UNITS_SIGNED); -const MIXERCONTROL_CONTROLTYPE_PAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+1); -const MIXERCONTROL_CONTROLTYPE_QSOUNDPAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+2); -const MIXERCONTROL_CONTROLTYPE_FADER=(MIXERCONTROL_CT_CLASS_FADER|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_VOLUME=(MIXERCONTROL_CONTROLTYPE_FADER+1); -const MIXERCONTROL_CONTROLTYPE_BASS=(MIXERCONTROL_CONTROLTYPE_FADER+2); -const MIXERCONTROL_CONTROLTYPE_TREBLE=(MIXERCONTROL_CONTROLTYPE_FADER+3); -const MIXERCONTROL_CONTROLTYPE_EQUALIZER=(MIXERCONTROL_CONTROLTYPE_FADER+4); -const MIXERCONTROL_CONTROLTYPE_SINGLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_SINGLE|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_MUX=(MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1); -const MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_MULTIPLE|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_MIXER=(MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1); -const MIXERCONTROL_CONTROLTYPE_MICROTIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MICROSECS|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_MILLITIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MILLISECS|MIXERCONTROL_CT_UNITS_UNSIGNED); - -const MIXER_GETLINECONTROLSF_ALL=0; -const MIXER_GETLINECONTROLSF_ONEBYID=1; -const MIXER_GETLINECONTROLSF_ONEBYTYPE=2; -const MIXER_GETLINECONTROLSF_QUERYMASK=15; -const MIXER_GETCONTROLDETAILSF_VALUE=0; -const MIXER_GETCONTROLDETAILSF_LISTTEXT=1; -const MIXER_GETCONTROLDETAILSF_QUERYMASK=15; -const MIXER_SETCONTROLDETAILSF_VALUE=0; -const MIXER_SETCONTROLDETAILSF_CUSTOM=1; -const MIXER_SETCONTROLDETAILSF_QUERYMASK=15; - -const TIMERR_NOERROR=0; -const TIMERR_NOCANDO=(TIMERR_BASE+1); -const TIMERR_STRUCT=(TIMERR_BASE+33); -const TIME_ONESHOT=0; -const TIME_PERIODIC=1; -const TIME_CALLBACK_FUNCTION=0; -const TIME_CALLBACK_EVENT_SET=16; -const TIME_CALLBACK_EVENT_PULSE=32; +enum MIXER_GETLINEINFOF_DESTINATION=0; +enum MIXER_GETLINEINFOF_SOURCE=1; +enum MIXER_GETLINEINFOF_LINEID=2; +enum MIXER_GETLINEINFOF_COMPONENTTYPE=3; +enum MIXER_GETLINEINFOF_TARGETTYPE=4; +enum MIXER_GETLINEINFOF_QUERYMASK=15; + +enum MIXERCONTROL_CONTROLF_UNIFORM=1; +enum MIXERCONTROL_CONTROLF_MULTIPLE=2; +enum MIXERCONTROL_CONTROLF_DISABLED=0x80000000; +enum MIXERCONTROL_CT_CLASS_MASK=0xF0000000; +enum MIXERCONTROL_CT_CLASS_CUSTOM=0; +enum MIXERCONTROL_CT_CLASS_METER=0x10000000; +enum MIXERCONTROL_CT_CLASS_SWITCH=0x20000000; +enum MIXERCONTROL_CT_CLASS_NUMBER=0x30000000; +enum MIXERCONTROL_CT_CLASS_SLIDER=0x40000000; +enum MIXERCONTROL_CT_CLASS_FADER=0x50000000; +enum MIXERCONTROL_CT_CLASS_TIME=0x60000000; +enum MIXERCONTROL_CT_CLASS_LIST=0x70000000; +enum MIXERCONTROL_CT_SUBCLASS_MASK=0xF000000; +enum MIXERCONTROL_CT_SC_SWITCH_BOOLEAN=0; +enum MIXERCONTROL_CT_SC_SWITCH_BUTTON=0x1000000; +enum MIXERCONTROL_CT_SC_METER_POLLED=0; +enum MIXERCONTROL_CT_SC_TIME_MICROSECS=0; +enum MIXERCONTROL_CT_SC_TIME_MILLISECS=0x1000000; +enum MIXERCONTROL_CT_SC_LIST_SINGLE=0; +enum MIXERCONTROL_CT_SC_LIST_MULTIPLE=0x1000000; +enum MIXERCONTROL_CT_UNITS_MASK=0xFF0000; +enum MIXERCONTROL_CT_UNITS_CUSTOM=0; +enum MIXERCONTROL_CT_UNITS_BOOLEAN=0x10000; +enum MIXERCONTROL_CT_UNITS_SIGNED=0x20000; +enum MIXERCONTROL_CT_UNITS_UNSIGNED=0x30000; +enum MIXERCONTROL_CT_UNITS_DECIBELS=0x40000; +enum MIXERCONTROL_CT_UNITS_PERCENT=0x50000; + +enum MIXERCONTROL_CONTROLTYPE_CUSTOM=(MIXERCONTROL_CT_CLASS_CUSTOM|MIXERCONTROL_CT_UNITS_CUSTOM); +enum MIXERCONTROL_CONTROLTYPE_BOOLEANMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_BOOLEAN); +enum MIXERCONTROL_CONTROLTYPE_SIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_SIGNED); +enum MIXERCONTROL_CONTROLTYPE_PEAKMETER=(MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1); +enum MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_UNSIGNED); +enum MIXERCONTROL_CONTROLTYPE_BOOLEAN=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BOOLEAN|MIXERCONTROL_CT_UNITS_BOOLEAN); +enum MIXERCONTROL_CONTROLTYPE_ONOFF=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+1); +enum MIXERCONTROL_CONTROLTYPE_MUTE=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+2); +enum MIXERCONTROL_CONTROLTYPE_MONO=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+3); +enum MIXERCONTROL_CONTROLTYPE_LOUDNESS=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+4); +enum MIXERCONTROL_CONTROLTYPE_STEREOENH=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+5); +enum MIXERCONTROL_CONTROLTYPE_BUTTON=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BUTTON|MIXERCONTROL_CT_UNITS_BOOLEAN); +enum MIXERCONTROL_CONTROLTYPE_DECIBELS=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_DECIBELS); +enum MIXERCONTROL_CONTROLTYPE_SIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_SIGNED); +enum MIXERCONTROL_CONTROLTYPE_UNSIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_UNSIGNED); +enum MIXERCONTROL_CONTROLTYPE_PERCENT=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_PERCENT); +enum MIXERCONTROL_CONTROLTYPE_SLIDER=(MIXERCONTROL_CT_CLASS_SLIDER|MIXERCONTROL_CT_UNITS_SIGNED); +enum MIXERCONTROL_CONTROLTYPE_PAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+1); +enum MIXERCONTROL_CONTROLTYPE_QSOUNDPAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+2); +enum MIXERCONTROL_CONTROLTYPE_FADER=(MIXERCONTROL_CT_CLASS_FADER|MIXERCONTROL_CT_UNITS_UNSIGNED); +enum MIXERCONTROL_CONTROLTYPE_VOLUME=(MIXERCONTROL_CONTROLTYPE_FADER+1); +enum MIXERCONTROL_CONTROLTYPE_BASS=(MIXERCONTROL_CONTROLTYPE_FADER+2); +enum MIXERCONTROL_CONTROLTYPE_TREBLE=(MIXERCONTROL_CONTROLTYPE_FADER+3); +enum MIXERCONTROL_CONTROLTYPE_EQUALIZER=(MIXERCONTROL_CONTROLTYPE_FADER+4); +enum MIXERCONTROL_CONTROLTYPE_SINGLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_SINGLE|MIXERCONTROL_CT_UNITS_BOOLEAN); +enum MIXERCONTROL_CONTROLTYPE_MUX=(MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1); +enum MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_MULTIPLE|MIXERCONTROL_CT_UNITS_BOOLEAN); +enum MIXERCONTROL_CONTROLTYPE_MIXER=(MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1); +enum MIXERCONTROL_CONTROLTYPE_MICROTIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MICROSECS|MIXERCONTROL_CT_UNITS_UNSIGNED); +enum MIXERCONTROL_CONTROLTYPE_MILLITIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MILLISECS|MIXERCONTROL_CT_UNITS_UNSIGNED); + +enum MIXER_GETLINECONTROLSF_ALL=0; +enum MIXER_GETLINECONTROLSF_ONEBYID=1; +enum MIXER_GETLINECONTROLSF_ONEBYTYPE=2; +enum MIXER_GETLINECONTROLSF_QUERYMASK=15; +enum MIXER_GETCONTROLDETAILSF_VALUE=0; +enum MIXER_GETCONTROLDETAILSF_LISTTEXT=1; +enum MIXER_GETCONTROLDETAILSF_QUERYMASK=15; +enum MIXER_SETCONTROLDETAILSF_VALUE=0; +enum MIXER_SETCONTROLDETAILSF_CUSTOM=1; +enum MIXER_SETCONTROLDETAILSF_QUERYMASK=15; + +enum TIMERR_NOERROR=0; +enum TIMERR_NOCANDO=(TIMERR_BASE+1); +enum TIMERR_STRUCT=(TIMERR_BASE+33); +enum TIME_ONESHOT=0; +enum TIME_PERIODIC=1; +enum TIME_CALLBACK_FUNCTION=0; +enum TIME_CALLBACK_EVENT_SET=16; +enum TIME_CALLBACK_EVENT_PULSE=32; static if (_WIN32_WINNT >= 0x501) { -const TIME_KILL_SYNCHRONOUS=0x0100; - -} - -const JOYERR_NOERROR = 0; -const JOYERR_PARMS=(JOYERR_BASE+5); -const JOYERR_NOCANDO=(JOYERR_BASE+6); -const JOYERR_UNPLUGGED=(JOYERR_BASE+7); - -const JOY_BUTTON1=1; -const JOY_BUTTON2=2; -const JOY_BUTTON3=4; -const JOY_BUTTON4=8; -const JOY_BUTTON1CHG=256; -const JOY_BUTTON2CHG=512; -const JOY_BUTTON3CHG=1024; -const JOY_BUTTON4CHG=2048; -const JOY_BUTTON5=257; -const JOY_BUTTON6=513; -const JOY_BUTTON7=1025; -const JOY_BUTTON8=2049; -const JOY_BUTTON9=256; -const JOY_BUTTON10=512; -const JOY_BUTTON11=1024; -const JOY_BUTTON12=2048; -const JOY_BUTTON13=4096; -const JOY_BUTTON14=8192; -const JOY_BUTTON15=16384; -const JOY_BUTTON16=32768; -const JOY_BUTTON17=65536; -const JOY_BUTTON18=0x20000; -const JOY_BUTTON19=0x40000; -const JOY_BUTTON20=0x80000; -const JOY_BUTTON21=0x100000; -const JOY_BUTTON22=0x200000; -const JOY_BUTTON23=0x400000; -const JOY_BUTTON24=0x800000; -const JOY_BUTTON25=0x1000000; -const JOY_BUTTON26=0x2000000; -const JOY_BUTTON27=0x4000000; -const JOY_BUTTON28=0x8000000; -const JOY_BUTTON29=0x10000000; -const JOY_BUTTON30=0x20000000; -const JOY_BUTTON31=0x40000000; -const JOY_BUTTON32=0x80000000; +enum TIME_KILL_SYNCHRONOUS=0x0100; + +} + +enum JOYERR_NOERROR = 0; +enum JOYERR_PARMS=(JOYERR_BASE+5); +enum JOYERR_NOCANDO=(JOYERR_BASE+6); +enum JOYERR_UNPLUGGED=(JOYERR_BASE+7); + +enum JOY_BUTTON1=1; +enum JOY_BUTTON2=2; +enum JOY_BUTTON3=4; +enum JOY_BUTTON4=8; +enum JOY_BUTTON1CHG=256; +enum JOY_BUTTON2CHG=512; +enum JOY_BUTTON3CHG=1024; +enum JOY_BUTTON4CHG=2048; +enum JOY_BUTTON5=257; +enum JOY_BUTTON6=513; +enum JOY_BUTTON7=1025; +enum JOY_BUTTON8=2049; +enum JOY_BUTTON9=256; +enum JOY_BUTTON10=512; +enum JOY_BUTTON11=1024; +enum JOY_BUTTON12=2048; +enum JOY_BUTTON13=4096; +enum JOY_BUTTON14=8192; +enum JOY_BUTTON15=16384; +enum JOY_BUTTON16=32768; +enum JOY_BUTTON17=65536; +enum JOY_BUTTON18=0x20000; +enum JOY_BUTTON19=0x40000; +enum JOY_BUTTON20=0x80000; +enum JOY_BUTTON21=0x100000; +enum JOY_BUTTON22=0x200000; +enum JOY_BUTTON23=0x400000; +enum JOY_BUTTON24=0x800000; +enum JOY_BUTTON25=0x1000000; +enum JOY_BUTTON26=0x2000000; +enum JOY_BUTTON27=0x4000000; +enum JOY_BUTTON28=0x8000000; +enum JOY_BUTTON29=0x10000000; +enum JOY_BUTTON30=0x20000000; +enum JOY_BUTTON31=0x40000000; +enum JOY_BUTTON32=0x80000000; enum : DWORD { JOY_POVCENTERED = -1, @@ -507,7 +507,7 @@ enum : DWORD { JOY_POVRIGHT = 9000 } -const DWORD +enum DWORD JOY_RETURNX = 0x00000001, JOY_RETURNY = 0x00000002, JOY_RETURNZ = 0x00000004, @@ -536,82 +536,82 @@ const DWORD JOY_CAL_READUONLY = 0x04000000, JOY_CAL_READVONLY = 0x08000000; -const JOYSTICKID1=0; -const JOYSTICKID2=1; - -const JOYCAPS_HASZ=1; -const JOYCAPS_HASR=2; -const JOYCAPS_HASU=4; -const JOYCAPS_HASV=8; -const JOYCAPS_HASPOV=16; -const JOYCAPS_POV4DIR=32; -const JOYCAPS_POVCTS=64; - -const MMIOERR_BASE=256; -const MMIOERR_FILENOTFOUND=(MMIOERR_BASE+1); -const MMIOERR_OUTOFMEMORY=(MMIOERR_BASE+2); -const MMIOERR_CANNOTOPEN=(MMIOERR_BASE+3); -const MMIOERR_CANNOTCLOSE=(MMIOERR_BASE+4); -const MMIOERR_CANNOTREAD=(MMIOERR_BASE+5); -const MMIOERR_CANNOTWRITE=(MMIOERR_BASE+6); -const MMIOERR_CANNOTSEEK=(MMIOERR_BASE+7); -const MMIOERR_CANNOTEXPAND=(MMIOERR_BASE+8); -const MMIOERR_CHUNKNOTFOUND=(MMIOERR_BASE+9); -const MMIOERR_UNBUFFERED=(MMIOERR_BASE+10); -const MMIOERR_PATHNOTFOUND=(MMIOERR_BASE+11); -const MMIOERR_ACCESSDENIED=(MMIOERR_BASE+12); -const MMIOERR_SHARINGVIOLATION=(MMIOERR_BASE+13); -const MMIOERR_NETWORKERROR=(MMIOERR_BASE+14); -const MMIOERR_TOOMANYOPENFILES=(MMIOERR_BASE+15); -const MMIOERR_INVALIDFILE=(MMIOERR_BASE+16); - -const CFSEPCHAR='+'; - -const MMIO_RWMODE=3; -const MMIO_SHAREMODE=0x70; -const MMIO_CREATE=0x1000; -const MMIO_PARSE=256; -const MMIO_DELETE=512; -const MMIO_EXIST=0x4000; -const MMIO_ALLOCBUF=0x10000; -const MMIO_GETTEMP=0x20000; -const MMIO_DIRTY=0x10000000; -const MMIO_READ=0; -const MMIO_WRITE=1; -const MMIO_READWRITE=2; -const MMIO_COMPAT=0; -const MMIO_EXCLUSIVE=16; -const MMIO_DENYWRITE=32; -const MMIO_DENYREAD=0x30; -const MMIO_DENYNONE=64; -const MMIO_FHOPEN=16; -const MMIO_EMPTYBUF=16; -const MMIO_TOUPPER=16; -const MMIO_INSTALLPROC=0x10000; -const MMIO_GLOBALPROC=0x10000000; -const MMIO_REMOVEPROC=0x20000; -const MMIO_UNICODEPROC=0x1000000; -const MMIO_FINDPROC=0x40000; -const MMIO_FINDCHUNK=16; -const MMIO_FINDRIFF=32; -const MMIO_FINDLIST=64; -const MMIO_CREATERIFF=32; -const MMIO_CREATELIST=64; -const MMIOM_READ=MMIO_READ; -const MMIOM_WRITE=MMIO_WRITE; -const MMIOM_SEEK=2; -const MMIOM_OPEN=3; -const MMIOM_CLOSE=4; -const MMIOM_WRITEFLUSH=5; -const MMIOM_RENAME=6; -const MMIOM_USER=0x8000; - -const FOURCC_RIFF = mmioFOURCC!('R', 'I', 'F', 'F'); -const FOURCC_LIST = mmioFOURCC!('L', 'I', 'S', 'T'); -const FOURCC_DOS = mmioFOURCC!('D', 'O', 'S', ' '); -const FOURCC_MEM = mmioFOURCC!('M', 'E', 'M', ' '); - -const MMIO_DEFAULTBUFFER=8192; +enum JOYSTICKID1=0; +enum JOYSTICKID2=1; + +enum JOYCAPS_HASZ=1; +enum JOYCAPS_HASR=2; +enum JOYCAPS_HASU=4; +enum JOYCAPS_HASV=8; +enum JOYCAPS_HASPOV=16; +enum JOYCAPS_POV4DIR=32; +enum JOYCAPS_POVCTS=64; + +enum MMIOERR_BASE=256; +enum MMIOERR_FILENOTFOUND=(MMIOERR_BASE+1); +enum MMIOERR_OUTOFMEMORY=(MMIOERR_BASE+2); +enum MMIOERR_CANNOTOPEN=(MMIOERR_BASE+3); +enum MMIOERR_CANNOTCLOSE=(MMIOERR_BASE+4); +enum MMIOERR_CANNOTREAD=(MMIOERR_BASE+5); +enum MMIOERR_CANNOTWRITE=(MMIOERR_BASE+6); +enum MMIOERR_CANNOTSEEK=(MMIOERR_BASE+7); +enum MMIOERR_CANNOTEXPAND=(MMIOERR_BASE+8); +enum MMIOERR_CHUNKNOTFOUND=(MMIOERR_BASE+9); +enum MMIOERR_UNBUFFERED=(MMIOERR_BASE+10); +enum MMIOERR_PATHNOTFOUND=(MMIOERR_BASE+11); +enum MMIOERR_ACCESSDENIED=(MMIOERR_BASE+12); +enum MMIOERR_SHARINGVIOLATION=(MMIOERR_BASE+13); +enum MMIOERR_NETWORKERROR=(MMIOERR_BASE+14); +enum MMIOERR_TOOMANYOPENFILES=(MMIOERR_BASE+15); +enum MMIOERR_INVALIDFILE=(MMIOERR_BASE+16); + +enum CFSEPCHAR='+'; + +enum MMIO_RWMODE=3; +enum MMIO_SHAREMODE=0x70; +enum MMIO_CREATE=0x1000; +enum MMIO_PARSE=256; +enum MMIO_DELETE=512; +enum MMIO_EXIST=0x4000; +enum MMIO_ALLOCBUF=0x10000; +enum MMIO_GETTEMP=0x20000; +enum MMIO_DIRTY=0x10000000; +enum MMIO_READ=0; +enum MMIO_WRITE=1; +enum MMIO_READWRITE=2; +enum MMIO_COMPAT=0; +enum MMIO_EXCLUSIVE=16; +enum MMIO_DENYWRITE=32; +enum MMIO_DENYREAD=0x30; +enum MMIO_DENYNONE=64; +enum MMIO_FHOPEN=16; +enum MMIO_EMPTYBUF=16; +enum MMIO_TOUPPER=16; +enum MMIO_INSTALLPROC=0x10000; +enum MMIO_GLOBALPROC=0x10000000; +enum MMIO_REMOVEPROC=0x20000; +enum MMIO_UNICODEPROC=0x1000000; +enum MMIO_FINDPROC=0x40000; +enum MMIO_FINDCHUNK=16; +enum MMIO_FINDRIFF=32; +enum MMIO_FINDLIST=64; +enum MMIO_CREATERIFF=32; +enum MMIO_CREATELIST=64; +enum MMIOM_READ=MMIO_READ; +enum MMIOM_WRITE=MMIO_WRITE; +enum MMIOM_SEEK=2; +enum MMIOM_OPEN=3; +enum MMIOM_CLOSE=4; +enum MMIOM_WRITEFLUSH=5; +enum MMIOM_RENAME=6; +enum MMIOM_USER=0x8000; + +enum FOURCC_RIFF = mmioFOURCC!('R', 'I', 'F', 'F'); +enum FOURCC_LIST = mmioFOURCC!('L', 'I', 'S', 'T'); +enum FOURCC_DOS = mmioFOURCC!('D', 'O', 'S', ' '); +enum FOURCC_MEM = mmioFOURCC!('M', 'E', 'M', ' '); + +enum MMIO_DEFAULTBUFFER=8192; enum { MCIERR_INVALID_DEVICE_ID = MCIERR_BASE + 1, @@ -690,77 +690,77 @@ enum { MCIERR_FILE_WRITE, MCIERR_NO_IDENTITY // = MCIERR_BASE + 94 } -const MCIERR_CUSTOM_DRIVER_BASE = MCIERR_BASE + 256; - -const MCI_FIRST=DRV_MCI_FIRST; -const MCI_OPEN=0x803; -const MCI_CLOSE=0x804; -const MCI_ESCAPE=0x805; -const MCI_PLAY=0x806; -const MCI_SEEK=0x807; -const MCI_STOP=0x808; -const MCI_PAUSE=0x809; -const MCI_INFO=0x80A; -const MCI_GETDEVCAPS=0x80B; -const MCI_SPIN=0x80C; -const MCI_SET=0x80D; -const MCI_STEP=0x80E; -const MCI_RECORD=0x80F; -const MCI_SYSINFO=0x810; -const MCI_BREAK=0x811; -const MCI_SAVE=0x813; -const MCI_STATUS=0x814; -const MCI_CUE=0x830; -const MCI_REALIZE=0x840; -const MCI_WINDOW=0x841; -const MCI_PUT=0x842; -const MCI_WHERE=0x843; -const MCI_FREEZE=0x844; -const MCI_UNFREEZE=0x845; -const MCI_LOAD=0x850; -const MCI_CUT=0x851; -const MCI_COPY=0x852; -const MCI_PASTE=0x853; -const MCI_UPDATE=0x854; -const MCI_RESUME=0x855; -const MCI_DELETE=0x856; -const MCI_USER_MESSAGES=(DRV_MCI_FIRST+0x400); -const MCI_LAST=0xFFF; - -const MCIDEVICEID MCI_ALL_DEVICE_ID = -1; - -const MCI_DEVTYPE_VCR=513; -const MCI_DEVTYPE_VIDEODISC=514; -const MCI_DEVTYPE_OVERLAY=515; -const MCI_DEVTYPE_CD_AUDIO=516; -const MCI_DEVTYPE_DAT=517; -const MCI_DEVTYPE_SCANNER=518; -const MCI_DEVTYPE_ANIMATION=519; -const MCI_DEVTYPE_DIGITAL_VIDEO=520; -const MCI_DEVTYPE_OTHER=521; -const MCI_DEVTYPE_WAVEFORM_AUDIO=522; -const MCI_DEVTYPE_SEQUENCER=523; -const MCI_DEVTYPE_FIRST=MCI_DEVTYPE_VCR; -const MCI_DEVTYPE_LAST=MCI_DEVTYPE_SEQUENCER; -const MCI_DEVTYPE_FIRST_USER=0x1000; -const MCI_MODE_NOT_READY=(MCI_STRING_OFFSET+12); -const MCI_MODE_STOP=(MCI_STRING_OFFSET+13); -const MCI_MODE_PLAY=(MCI_STRING_OFFSET+14); -const MCI_MODE_RECORD=(MCI_STRING_OFFSET+15); -const MCI_MODE_SEEK=(MCI_STRING_OFFSET+16); -const MCI_MODE_PAUSE=(MCI_STRING_OFFSET+17); -const MCI_MODE_OPEN=(MCI_STRING_OFFSET+18); -const MCI_FORMAT_MILLISECONDS=0; -const MCI_FORMAT_HMS=1; -const MCI_FORMAT_MSF=2; -const MCI_FORMAT_FRAMES=3; -const MCI_FORMAT_SMPTE_24=4; -const MCI_FORMAT_SMPTE_25=5; -const MCI_FORMAT_SMPTE_30=6; -const MCI_FORMAT_SMPTE_30DROP=7; -const MCI_FORMAT_BYTES=8; -const MCI_FORMAT_SAMPLES=9; -const MCI_FORMAT_TMSF=10; +enum MCIERR_CUSTOM_DRIVER_BASE = MCIERR_BASE + 256; + +enum MCI_FIRST=DRV_MCI_FIRST; +enum MCI_OPEN=0x803; +enum MCI_CLOSE=0x804; +enum MCI_ESCAPE=0x805; +enum MCI_PLAY=0x806; +enum MCI_SEEK=0x807; +enum MCI_STOP=0x808; +enum MCI_PAUSE=0x809; +enum MCI_INFO=0x80A; +enum MCI_GETDEVCAPS=0x80B; +enum MCI_SPIN=0x80C; +enum MCI_SET=0x80D; +enum MCI_STEP=0x80E; +enum MCI_RECORD=0x80F; +enum MCI_SYSINFO=0x810; +enum MCI_BREAK=0x811; +enum MCI_SAVE=0x813; +enum MCI_STATUS=0x814; +enum MCI_CUE=0x830; +enum MCI_REALIZE=0x840; +enum MCI_WINDOW=0x841; +enum MCI_PUT=0x842; +enum MCI_WHERE=0x843; +enum MCI_FREEZE=0x844; +enum MCI_UNFREEZE=0x845; +enum MCI_LOAD=0x850; +enum MCI_CUT=0x851; +enum MCI_COPY=0x852; +enum MCI_PASTE=0x853; +enum MCI_UPDATE=0x854; +enum MCI_RESUME=0x855; +enum MCI_DELETE=0x856; +enum MCI_USER_MESSAGES=(DRV_MCI_FIRST+0x400); +enum MCI_LAST=0xFFF; + +enum MCIDEVICEID MCI_ALL_DEVICE_ID = -1; + +enum MCI_DEVTYPE_VCR=513; +enum MCI_DEVTYPE_VIDEODISC=514; +enum MCI_DEVTYPE_OVERLAY=515; +enum MCI_DEVTYPE_CD_AUDIO=516; +enum MCI_DEVTYPE_DAT=517; +enum MCI_DEVTYPE_SCANNER=518; +enum MCI_DEVTYPE_ANIMATION=519; +enum MCI_DEVTYPE_DIGITAL_VIDEO=520; +enum MCI_DEVTYPE_OTHER=521; +enum MCI_DEVTYPE_WAVEFORM_AUDIO=522; +enum MCI_DEVTYPE_SEQUENCER=523; +enum MCI_DEVTYPE_FIRST=MCI_DEVTYPE_VCR; +enum MCI_DEVTYPE_LAST=MCI_DEVTYPE_SEQUENCER; +enum MCI_DEVTYPE_FIRST_USER=0x1000; +enum MCI_MODE_NOT_READY=(MCI_STRING_OFFSET+12); +enum MCI_MODE_STOP=(MCI_STRING_OFFSET+13); +enum MCI_MODE_PLAY=(MCI_STRING_OFFSET+14); +enum MCI_MODE_RECORD=(MCI_STRING_OFFSET+15); +enum MCI_MODE_SEEK=(MCI_STRING_OFFSET+16); +enum MCI_MODE_PAUSE=(MCI_STRING_OFFSET+17); +enum MCI_MODE_OPEN=(MCI_STRING_OFFSET+18); +enum MCI_FORMAT_MILLISECONDS=0; +enum MCI_FORMAT_HMS=1; +enum MCI_FORMAT_MSF=2; +enum MCI_FORMAT_FRAMES=3; +enum MCI_FORMAT_SMPTE_24=4; +enum MCI_FORMAT_SMPTE_25=5; +enum MCI_FORMAT_SMPTE_30=6; +enum MCI_FORMAT_SMPTE_30DROP=7; +enum MCI_FORMAT_BYTES=8; +enum MCI_FORMAT_SAMPLES=9; +enum MCI_FORMAT_TMSF=10; @@ -784,234 +784,234 @@ BYTE MCI_TMSF_SECOND(DWORD t) { return cast(BYTE)(t>>16); } BYTE MCI_TMSF_FRAME(DWORD t) { return cast(BYTE)(t>>24); } -const MCI_NOTIFY_SUCCESSFUL=1; -const MCI_NOTIFY_SUPERSEDED=2; -const MCI_NOTIFY_ABORTED=4; -const MCI_NOTIFY_FAILURE=8; -const MCI_NOTIFY=1; -const MCI_WAIT=2; -const MCI_FROM=4; -const MCI_TO=8; -const MCI_TRACK=16; -const MCI_OPEN_SHAREABLE=256; -const MCI_OPEN_ELEMENT=512; -const MCI_OPEN_ALIAS=1024; -const MCI_OPEN_ELEMENT_ID=2048; -const MCI_OPEN_TYPE_ID=0x1000; -const MCI_OPEN_TYPE=0x2000; -const MCI_SEEK_TO_START=256; -const MCI_SEEK_TO_END=512; -const MCI_STATUS_ITEM=256; -const MCI_STATUS_START=512; -const MCI_STATUS_LENGTH=1; -const MCI_STATUS_POSITION=2; -const MCI_STATUS_NUMBER_OF_TRACKS=3; -const MCI_STATUS_MODE=4; -const MCI_STATUS_MEDIA_PRESENT=5; -const MCI_STATUS_TIME_FORMAT=6; -const MCI_STATUS_READY=7; -const MCI_STATUS_CURRENT_TRACK=8; -const MCI_INFO_PRODUCT=256; -const MCI_INFO_FILE=512; -const MCI_INFO_MEDIA_UPC=1024; -const MCI_INFO_MEDIA_IDENTITY=2048; -const MCI_INFO_NAME=0x1000; -const MCI_INFO_COPYRIGHT=0x2000; - -const MCI_GETDEVCAPS_ITEM=256; -const MCI_GETDEVCAPS_CAN_RECORD=1; -const MCI_GETDEVCAPS_HAS_AUDIO=2; -const MCI_GETDEVCAPS_HAS_VIDEO=3; -const MCI_GETDEVCAPS_DEVICE_TYPE=4; -const MCI_GETDEVCAPS_USES_FILES=5; -const MCI_GETDEVCAPS_COMPOUND_DEVICE=6; -const MCI_GETDEVCAPS_CAN_EJECT=7; -const MCI_GETDEVCAPS_CAN_PLAY=8; -const MCI_GETDEVCAPS_CAN_SAVE=9; - -const MCI_SYSINFO_QUANTITY=256; -const MCI_SYSINFO_OPEN=512; -const MCI_SYSINFO_NAME=1024; -const MCI_SYSINFO_INSTALLNAME=2048; -const MCI_SET_DOOR_OPEN=256; -const MCI_SET_DOOR_CLOSED=512; -const MCI_SET_TIME_FORMAT=1024; -const MCI_SET_AUDIO=2048; -const MCI_SET_VIDEO=0x1000; -const MCI_SET_ON=0x2000; -const MCI_SET_OFF=0x4000; - -const MCI_SET_AUDIO_ALL=0; -const MCI_SET_AUDIO_LEFT=1; -const MCI_SET_AUDIO_RIGHT=2; - -const MCI_BREAK_KEY=256; -const MCI_BREAK_HWND=512; -const MCI_BREAK_OFF=1024; - -const MCI_RECORD_INSERT=256; -const MCI_RECORD_OVERWRITE=512; -const MCI_SAVE_FILE=256; -const MCI_LOAD_FILE=256; - -const MCI_VD_MODE_PARK=(MCI_VD_OFFSET+1); -const MCI_VD_MEDIA_CLV=(MCI_VD_OFFSET+2); -const MCI_VD_MEDIA_CAV=(MCI_VD_OFFSET+3); -const MCI_VD_MEDIA_OTHER=(MCI_VD_OFFSET+4); - -const MCI_VD_FORMAT_TRACK=0x4001; -const MCI_VD_PLAY_REVERSE=0x10000; -const MCI_VD_PLAY_FAST=0x20000; -const MCI_VD_PLAY_SPEED=0x40000; -const MCI_VD_PLAY_SCAN=0x80000; -const MCI_VD_PLAY_SLOW=0x100000; -const MCI_VD_SEEK_REVERSE=0x10000; -const MCI_VD_STATUS_SPEED=0x4002; -const MCI_VD_STATUS_FORWARD=0x4003; -const MCI_VD_STATUS_MEDIA_TYPE=0x4004; -const MCI_VD_STATUS_SIDE=0x4005; -const MCI_VD_STATUS_DISC_SIZE=0x4006; -const MCI_VD_GETDEVCAPS_CLV=0x10000; -const MCI_VD_GETDEVCAPS_CAV=0x20000; -const MCI_VD_SPIN_UP=0x10000; -const MCI_VD_SPIN_DOWN=0x20000; -const MCI_VD_GETDEVCAPS_CAN_REVERSE=0x4002; -const MCI_VD_GETDEVCAPS_FAST_RATE=0x4003; -const MCI_VD_GETDEVCAPS_SLOW_RATE=0x4004; -const MCI_VD_GETDEVCAPS_NORMAL_RATE=0x4005; -const MCI_VD_STEP_FRAMES=0x10000; -const MCI_VD_STEP_REVERSE=0x20000; -const MCI_VD_ESCAPE_STRING=256; - -const MCI_CDA_STATUS_TYPE_TRACK=0x4001; -const MCI_CDA_TRACK_AUDIO=MCI_CD_OFFSET; -const MCI_CDA_TRACK_OTHER=(MCI_CD_OFFSET+1); - -const MCI_WAVE_PCM=MCI_WAVE_OFFSET; -const MCI_WAVE_MAPPER=(MCI_WAVE_OFFSET+1); -const MCI_WAVE_OPEN_BUFFER=0x10000; -const MCI_WAVE_SET_FORMATTAG=0x10000; -const MCI_WAVE_SET_CHANNELS=0x20000; -const MCI_WAVE_SET_SAMPLESPERSEC=0x40000; -const MCI_WAVE_SET_AVGBYTESPERSEC=0x80000; -const MCI_WAVE_SET_BLOCKALIGN=0x100000; -const MCI_WAVE_SET_BITSPERSAMPLE=0x200000; -const MCI_WAVE_INPUT=0x400000; -const MCI_WAVE_OUTPUT=0x800000; -const MCI_WAVE_STATUS_FORMATTAG=0x4001; -const MCI_WAVE_STATUS_CHANNELS=0x4002; -const MCI_WAVE_STATUS_SAMPLESPERSEC=0x4003; -const MCI_WAVE_STATUS_AVGBYTESPERSEC=0x4004; -const MCI_WAVE_STATUS_BLOCKALIGN=0x4005; -const MCI_WAVE_STATUS_BITSPERSAMPLE=0x4006; -const MCI_WAVE_STATUS_LEVEL=0x4007; -const MCI_WAVE_SET_ANYINPUT=0x4000000; -const MCI_WAVE_SET_ANYOUTPUT=0x8000000; -const MCI_WAVE_GETDEVCAPS_INPUTS=0x4001; -const MCI_WAVE_GETDEVCAPS_OUTPUTS=0x4002; - -const MCI_SEQ_DIV_PPQN=MCI_SEQ_OFFSET; -const MCI_SEQ_DIV_SMPTE_24=(MCI_SEQ_OFFSET+1); -const MCI_SEQ_DIV_SMPTE_25=(MCI_SEQ_OFFSET+2); -const MCI_SEQ_DIV_SMPTE_30DROP=(MCI_SEQ_OFFSET+3); -const MCI_SEQ_DIV_SMPTE_30=(MCI_SEQ_OFFSET+4); -const MCI_SEQ_FORMAT_SONGPTR=0x4001; -const MCI_SEQ_FILE=0x4002; -const MCI_SEQ_MIDI=0x4003; -const MCI_SEQ_SMPTE=0x4004; -const MCI_SEQ_NONE=65533; -const MCI_SEQ_MAPPER=65535; - -const MCI_SEQ_STATUS_TEMPO=0x4002; -const MCI_SEQ_STATUS_PORT=0x4003; -const MCI_SEQ_STATUS_SLAVE=0x4007; -const MCI_SEQ_STATUS_MASTER=0x4008; -const MCI_SEQ_STATUS_OFFSET=0x4009; -const MCI_SEQ_STATUS_DIVTYPE=0x400A; -const MCI_SEQ_STATUS_NAME=0x400B; -const MCI_SEQ_STATUS_COPYRIGHT=0x400C; - -const MCI_SEQ_SET_TEMPO=0x10000; -const MCI_SEQ_SET_PORT=0x20000; -const MCI_SEQ_SET_SLAVE=0x40000; -const MCI_SEQ_SET_MASTER=0x80000; -const MCI_SEQ_SET_OFFSET=0x1000000; - -const MCI_ANIM_OPEN_WS=0x10000; -const MCI_ANIM_OPEN_PARENT=0x20000; -const MCI_ANIM_OPEN_NOSTATIC=0x40000; -const MCI_ANIM_PLAY_SPEED=0x10000; -const MCI_ANIM_PLAY_REVERSE=0x20000; -const MCI_ANIM_PLAY_FAST=0x40000; -const MCI_ANIM_PLAY_SLOW=0x80000; -const MCI_ANIM_PLAY_SCAN=0x100000; -const MCI_ANIM_STEP_REVERSE=0x10000; -const MCI_ANIM_STEP_FRAMES=0x20000; -const MCI_ANIM_STATUS_SPEED=0x4001; -const MCI_ANIM_STATUS_FORWARD=0x4002; -const MCI_ANIM_STATUS_HWND=0x4003; -const MCI_ANIM_STATUS_HPAL=0x4004; -const MCI_ANIM_STATUS_STRETCH=0x4005; -const MCI_ANIM_INFO_TEXT=0x10000; - -const MCI_ANIM_GETDEVCAPS_CAN_REVERSE=0x4001; -const MCI_ANIM_GETDEVCAPS_FAST_RATE=0x4002; -const MCI_ANIM_GETDEVCAPS_SLOW_RATE=0x4003; -const MCI_ANIM_GETDEVCAPS_NORMAL_RATE=0x4004; -const MCI_ANIM_GETDEVCAPS_PALETTES=0x4006; -const MCI_ANIM_GETDEVCAPS_CAN_STRETCH=0x4007; -const MCI_ANIM_GETDEVCAPS_MAX_WINDOWS=0x4008; - -const MCI_ANIM_REALIZE_NORM=0x10000; -const MCI_ANIM_REALIZE_BKGD=0x20000; - -const MCI_ANIM_WINDOW_HWND=0x10000; -const MCI_ANIM_WINDOW_STATE=0x40000; -const MCI_ANIM_WINDOW_TEXT=0x80000; -const MCI_ANIM_WINDOW_ENABLE_STRETCH=0x100000; -const MCI_ANIM_WINDOW_DISABLE_STRETCH=0x200000; -const MCI_ANIM_WINDOW_DEFAULT=0x0; - -const MCI_ANIM_RECT=0x10000; -const MCI_ANIM_PUT_SOURCE=0x20000; -const MCI_ANIM_PUT_DESTINATION=0x40000; -const MCI_ANIM_WHERE_SOURCE=0x20000; -const MCI_ANIM_WHERE_DESTINATION=0x40000; -const MCI_ANIM_UPDATE_HDC=0x20000; - -const MCI_OVLY_OPEN_WS=0x10000; -const MCI_OVLY_OPEN_PARENT=0x20000; -const MCI_OVLY_STATUS_HWND=0x4001; -const MCI_OVLY_STATUS_STRETCH=0x4002; -const MCI_OVLY_INFO_TEXT=0x10000; -const MCI_OVLY_GETDEVCAPS_CAN_STRETCH=0x4001; -const MCI_OVLY_GETDEVCAPS_CAN_FREEZE=0x4002; -const MCI_OVLY_GETDEVCAPS_MAX_WINDOWS=0x4003; -const MCI_OVLY_WINDOW_HWND=0x10000; -const MCI_OVLY_WINDOW_STATE=0x40000; -const MCI_OVLY_WINDOW_TEXT=0x80000; -const MCI_OVLY_WINDOW_ENABLE_STRETCH=0x100000; -const MCI_OVLY_WINDOW_DISABLE_STRETCH=0x200000; -const MCI_OVLY_WINDOW_DEFAULT=0x0; -const MCI_OVLY_RECT=0x10000; -const MCI_OVLY_PUT_SOURCE=0x20000; -const MCI_OVLY_PUT_DESTINATION=0x40000; -const MCI_OVLY_PUT_FRAME=0x80000; -const MCI_OVLY_PUT_VIDEO=0x100000; -const MCI_OVLY_WHERE_SOURCE=0x20000; -const MCI_OVLY_WHERE_DESTINATION=0x40000; -const MCI_OVLY_WHERE_FRAME=0x80000; -const MCI_OVLY_WHERE_VIDEO=0x100000; - -const NEWTRANSPARENT=3; -const QUERYROPSUPPORT=40; -const SELECTDIB=41; +enum MCI_NOTIFY_SUCCESSFUL=1; +enum MCI_NOTIFY_SUPERSEDED=2; +enum MCI_NOTIFY_ABORTED=4; +enum MCI_NOTIFY_FAILURE=8; +enum MCI_NOTIFY=1; +enum MCI_WAIT=2; +enum MCI_FROM=4; +enum MCI_TO=8; +enum MCI_TRACK=16; +enum MCI_OPEN_SHAREABLE=256; +enum MCI_OPEN_ELEMENT=512; +enum MCI_OPEN_ALIAS=1024; +enum MCI_OPEN_ELEMENT_ID=2048; +enum MCI_OPEN_TYPE_ID=0x1000; +enum MCI_OPEN_TYPE=0x2000; +enum MCI_SEEK_TO_START=256; +enum MCI_SEEK_TO_END=512; +enum MCI_STATUS_ITEM=256; +enum MCI_STATUS_START=512; +enum MCI_STATUS_LENGTH=1; +enum MCI_STATUS_POSITION=2; +enum MCI_STATUS_NUMBER_OF_TRACKS=3; +enum MCI_STATUS_MODE=4; +enum MCI_STATUS_MEDIA_PRESENT=5; +enum MCI_STATUS_TIME_FORMAT=6; +enum MCI_STATUS_READY=7; +enum MCI_STATUS_CURRENT_TRACK=8; +enum MCI_INFO_PRODUCT=256; +enum MCI_INFO_FILE=512; +enum MCI_INFO_MEDIA_UPC=1024; +enum MCI_INFO_MEDIA_IDENTITY=2048; +enum MCI_INFO_NAME=0x1000; +enum MCI_INFO_COPYRIGHT=0x2000; + +enum MCI_GETDEVCAPS_ITEM=256; +enum MCI_GETDEVCAPS_CAN_RECORD=1; +enum MCI_GETDEVCAPS_HAS_AUDIO=2; +enum MCI_GETDEVCAPS_HAS_VIDEO=3; +enum MCI_GETDEVCAPS_DEVICE_TYPE=4; +enum MCI_GETDEVCAPS_USES_FILES=5; +enum MCI_GETDEVCAPS_COMPOUND_DEVICE=6; +enum MCI_GETDEVCAPS_CAN_EJECT=7; +enum MCI_GETDEVCAPS_CAN_PLAY=8; +enum MCI_GETDEVCAPS_CAN_SAVE=9; + +enum MCI_SYSINFO_QUANTITY=256; +enum MCI_SYSINFO_OPEN=512; +enum MCI_SYSINFO_NAME=1024; +enum MCI_SYSINFO_INSTALLNAME=2048; +enum MCI_SET_DOOR_OPEN=256; +enum MCI_SET_DOOR_CLOSED=512; +enum MCI_SET_TIME_FORMAT=1024; +enum MCI_SET_AUDIO=2048; +enum MCI_SET_VIDEO=0x1000; +enum MCI_SET_ON=0x2000; +enum MCI_SET_OFF=0x4000; + +enum MCI_SET_AUDIO_ALL=0; +enum MCI_SET_AUDIO_LEFT=1; +enum MCI_SET_AUDIO_RIGHT=2; + +enum MCI_BREAK_KEY=256; +enum MCI_BREAK_HWND=512; +enum MCI_BREAK_OFF=1024; + +enum MCI_RECORD_INSERT=256; +enum MCI_RECORD_OVERWRITE=512; +enum MCI_SAVE_FILE=256; +enum MCI_LOAD_FILE=256; + +enum MCI_VD_MODE_PARK=(MCI_VD_OFFSET+1); +enum MCI_VD_MEDIA_CLV=(MCI_VD_OFFSET+2); +enum MCI_VD_MEDIA_CAV=(MCI_VD_OFFSET+3); +enum MCI_VD_MEDIA_OTHER=(MCI_VD_OFFSET+4); + +enum MCI_VD_FORMAT_TRACK=0x4001; +enum MCI_VD_PLAY_REVERSE=0x10000; +enum MCI_VD_PLAY_FAST=0x20000; +enum MCI_VD_PLAY_SPEED=0x40000; +enum MCI_VD_PLAY_SCAN=0x80000; +enum MCI_VD_PLAY_SLOW=0x100000; +enum MCI_VD_SEEK_REVERSE=0x10000; +enum MCI_VD_STATUS_SPEED=0x4002; +enum MCI_VD_STATUS_FORWARD=0x4003; +enum MCI_VD_STATUS_MEDIA_TYPE=0x4004; +enum MCI_VD_STATUS_SIDE=0x4005; +enum MCI_VD_STATUS_DISC_SIZE=0x4006; +enum MCI_VD_GETDEVCAPS_CLV=0x10000; +enum MCI_VD_GETDEVCAPS_CAV=0x20000; +enum MCI_VD_SPIN_UP=0x10000; +enum MCI_VD_SPIN_DOWN=0x20000; +enum MCI_VD_GETDEVCAPS_CAN_REVERSE=0x4002; +enum MCI_VD_GETDEVCAPS_FAST_RATE=0x4003; +enum MCI_VD_GETDEVCAPS_SLOW_RATE=0x4004; +enum MCI_VD_GETDEVCAPS_NORMAL_RATE=0x4005; +enum MCI_VD_STEP_FRAMES=0x10000; +enum MCI_VD_STEP_REVERSE=0x20000; +enum MCI_VD_ESCAPE_STRING=256; + +enum MCI_CDA_STATUS_TYPE_TRACK=0x4001; +enum MCI_CDA_TRACK_AUDIO=MCI_CD_OFFSET; +enum MCI_CDA_TRACK_OTHER=(MCI_CD_OFFSET+1); + +enum MCI_WAVE_PCM=MCI_WAVE_OFFSET; +enum MCI_WAVE_MAPPER=(MCI_WAVE_OFFSET+1); +enum MCI_WAVE_OPEN_BUFFER=0x10000; +enum MCI_WAVE_SET_FORMATTAG=0x10000; +enum MCI_WAVE_SET_CHANNELS=0x20000; +enum MCI_WAVE_SET_SAMPLESPERSEC=0x40000; +enum MCI_WAVE_SET_AVGBYTESPERSEC=0x80000; +enum MCI_WAVE_SET_BLOCKALIGN=0x100000; +enum MCI_WAVE_SET_BITSPERSAMPLE=0x200000; +enum MCI_WAVE_INPUT=0x400000; +enum MCI_WAVE_OUTPUT=0x800000; +enum MCI_WAVE_STATUS_FORMATTAG=0x4001; +enum MCI_WAVE_STATUS_CHANNELS=0x4002; +enum MCI_WAVE_STATUS_SAMPLESPERSEC=0x4003; +enum MCI_WAVE_STATUS_AVGBYTESPERSEC=0x4004; +enum MCI_WAVE_STATUS_BLOCKALIGN=0x4005; +enum MCI_WAVE_STATUS_BITSPERSAMPLE=0x4006; +enum MCI_WAVE_STATUS_LEVEL=0x4007; +enum MCI_WAVE_SET_ANYINPUT=0x4000000; +enum MCI_WAVE_SET_ANYOUTPUT=0x8000000; +enum MCI_WAVE_GETDEVCAPS_INPUTS=0x4001; +enum MCI_WAVE_GETDEVCAPS_OUTPUTS=0x4002; + +enum MCI_SEQ_DIV_PPQN=MCI_SEQ_OFFSET; +enum MCI_SEQ_DIV_SMPTE_24=(MCI_SEQ_OFFSET+1); +enum MCI_SEQ_DIV_SMPTE_25=(MCI_SEQ_OFFSET+2); +enum MCI_SEQ_DIV_SMPTE_30DROP=(MCI_SEQ_OFFSET+3); +enum MCI_SEQ_DIV_SMPTE_30=(MCI_SEQ_OFFSET+4); +enum MCI_SEQ_FORMAT_SONGPTR=0x4001; +enum MCI_SEQ_FILE=0x4002; +enum MCI_SEQ_MIDI=0x4003; +enum MCI_SEQ_SMPTE=0x4004; +enum MCI_SEQ_NONE=65533; +enum MCI_SEQ_MAPPER=65535; + +enum MCI_SEQ_STATUS_TEMPO=0x4002; +enum MCI_SEQ_STATUS_PORT=0x4003; +enum MCI_SEQ_STATUS_SLAVE=0x4007; +enum MCI_SEQ_STATUS_MASTER=0x4008; +enum MCI_SEQ_STATUS_OFFSET=0x4009; +enum MCI_SEQ_STATUS_DIVTYPE=0x400A; +enum MCI_SEQ_STATUS_NAME=0x400B; +enum MCI_SEQ_STATUS_COPYRIGHT=0x400C; + +enum MCI_SEQ_SET_TEMPO=0x10000; +enum MCI_SEQ_SET_PORT=0x20000; +enum MCI_SEQ_SET_SLAVE=0x40000; +enum MCI_SEQ_SET_MASTER=0x80000; +enum MCI_SEQ_SET_OFFSET=0x1000000; + +enum MCI_ANIM_OPEN_WS=0x10000; +enum MCI_ANIM_OPEN_PARENT=0x20000; +enum MCI_ANIM_OPEN_NOSTATIC=0x40000; +enum MCI_ANIM_PLAY_SPEED=0x10000; +enum MCI_ANIM_PLAY_REVERSE=0x20000; +enum MCI_ANIM_PLAY_FAST=0x40000; +enum MCI_ANIM_PLAY_SLOW=0x80000; +enum MCI_ANIM_PLAY_SCAN=0x100000; +enum MCI_ANIM_STEP_REVERSE=0x10000; +enum MCI_ANIM_STEP_FRAMES=0x20000; +enum MCI_ANIM_STATUS_SPEED=0x4001; +enum MCI_ANIM_STATUS_FORWARD=0x4002; +enum MCI_ANIM_STATUS_HWND=0x4003; +enum MCI_ANIM_STATUS_HPAL=0x4004; +enum MCI_ANIM_STATUS_STRETCH=0x4005; +enum MCI_ANIM_INFO_TEXT=0x10000; + +enum MCI_ANIM_GETDEVCAPS_CAN_REVERSE=0x4001; +enum MCI_ANIM_GETDEVCAPS_FAST_RATE=0x4002; +enum MCI_ANIM_GETDEVCAPS_SLOW_RATE=0x4003; +enum MCI_ANIM_GETDEVCAPS_NORMAL_RATE=0x4004; +enum MCI_ANIM_GETDEVCAPS_PALETTES=0x4006; +enum MCI_ANIM_GETDEVCAPS_CAN_STRETCH=0x4007; +enum MCI_ANIM_GETDEVCAPS_MAX_WINDOWS=0x4008; + +enum MCI_ANIM_REALIZE_NORM=0x10000; +enum MCI_ANIM_REALIZE_BKGD=0x20000; + +enum MCI_ANIM_WINDOW_HWND=0x10000; +enum MCI_ANIM_WINDOW_STATE=0x40000; +enum MCI_ANIM_WINDOW_TEXT=0x80000; +enum MCI_ANIM_WINDOW_ENABLE_STRETCH=0x100000; +enum MCI_ANIM_WINDOW_DISABLE_STRETCH=0x200000; +enum MCI_ANIM_WINDOW_DEFAULT=0x0; + +enum MCI_ANIM_RECT=0x10000; +enum MCI_ANIM_PUT_SOURCE=0x20000; +enum MCI_ANIM_PUT_DESTINATION=0x40000; +enum MCI_ANIM_WHERE_SOURCE=0x20000; +enum MCI_ANIM_WHERE_DESTINATION=0x40000; +enum MCI_ANIM_UPDATE_HDC=0x20000; + +enum MCI_OVLY_OPEN_WS=0x10000; +enum MCI_OVLY_OPEN_PARENT=0x20000; +enum MCI_OVLY_STATUS_HWND=0x4001; +enum MCI_OVLY_STATUS_STRETCH=0x4002; +enum MCI_OVLY_INFO_TEXT=0x10000; +enum MCI_OVLY_GETDEVCAPS_CAN_STRETCH=0x4001; +enum MCI_OVLY_GETDEVCAPS_CAN_FREEZE=0x4002; +enum MCI_OVLY_GETDEVCAPS_MAX_WINDOWS=0x4003; +enum MCI_OVLY_WINDOW_HWND=0x10000; +enum MCI_OVLY_WINDOW_STATE=0x40000; +enum MCI_OVLY_WINDOW_TEXT=0x80000; +enum MCI_OVLY_WINDOW_ENABLE_STRETCH=0x100000; +enum MCI_OVLY_WINDOW_DISABLE_STRETCH=0x200000; +enum MCI_OVLY_WINDOW_DEFAULT=0x0; +enum MCI_OVLY_RECT=0x10000; +enum MCI_OVLY_PUT_SOURCE=0x20000; +enum MCI_OVLY_PUT_DESTINATION=0x40000; +enum MCI_OVLY_PUT_FRAME=0x80000; +enum MCI_OVLY_PUT_VIDEO=0x100000; +enum MCI_OVLY_WHERE_SOURCE=0x20000; +enum MCI_OVLY_WHERE_DESTINATION=0x40000; +enum MCI_OVLY_WHERE_FRAME=0x80000; +enum MCI_OVLY_WHERE_VIDEO=0x100000; + +enum NEWTRANSPARENT=3; +enum QUERYROPSUPPORT=40; +enum SELECTDIB=41; LONG DIBINDEX(WORD n) { return MAKELONG(n, 0x10FF); } -const CAPS1=94; -const C1_TRANSPARENT=1; +enum CAPS1=94; +enum C1_TRANSPARENT=1; //const SEEK_SET=0; //const SEEK_CUR=1; diff --git a/src/core/sys/windows/msacm.d b/src/core/sys/windows/msacm.d index b0e36d73d1..b00900491b 100644 --- a/src/core/sys/windows/msacm.d +++ b/src/core/sys/windows/msacm.d @@ -21,7 +21,7 @@ alias HACMDRIVER* LPHACMDRIVER; /* Comment from MinGW found through experimentation */ -const size_t +enum size_t ACMDRIVERDETAILS_SHORTNAME_CHARS = 32, ACMDRIVERDETAILS_LONGNAME_CHARS = 128, ACMDRIVERDETAILS_COPYRIGHT_CHARS = 80, @@ -30,7 +30,7 @@ const size_t /* Comment from MinGW I don't know the right values for these macros */ -const size_t +enum size_t ACMFORMATDETAILS_FORMAT_CHARS = 256, ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 256, ACMDRIVERDETAILS_FEATURES_CHARS = 256; diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index efa08dc7dd..7b10977b7e 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -111,10 +111,10 @@ extern(Windows) { /* WinNT3.51+ ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */ alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX; - const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; +enum GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX; - const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; +enum GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; } version(Win32_Winsock1) { diff --git a/src/core/sys/windows/nb30.d b/src/core/sys/windows/nb30.d index 7e6d5208da..db382dda03 100644 --- a/src/core/sys/windows/nb30.d +++ b/src/core/sys/windows/nb30.d @@ -12,7 +12,7 @@ version (Windows): private import core.sys.windows.windef; -const size_t +enum size_t NCBNAMSZ = 16, MAX_LANA = 254; @@ -37,7 +37,7 @@ enum : UCHAR { SESSION_ABORTED // = 6 } -const char[4] +enum char[4] ALL_TRANSPORTS = "M\0\0\0", MS_NBF = "MNBF"; @@ -70,7 +70,7 @@ enum : UCHAR { NCBTRACE // = 0x79 } -const UCHAR ASYNCH = 0x80; +enum UCHAR ASYNCH = 0x80; enum : UCHAR { NRC_GOODRET = 0x00, diff --git a/src/core/sys/windows/nddeapi.d b/src/core/sys/windows/nddeapi.d index 5f2aa1632a..b50e6ccc7e 100644 --- a/src/core/sys/windows/nddeapi.d +++ b/src/core/sys/windows/nddeapi.d @@ -23,9 +23,9 @@ private import core.sys.windows.windef; #endif +/ -const char SEP_CHAR = ','; +enum char SEP_CHAR = ','; const char[] BAR_CHAR = "|"; -const wchar SEP_WCHAR = ','; +enum wchar SEP_WCHAR = ','; const wchar[] BAR_WCHAR = "|"; enum { @@ -59,7 +59,7 @@ enum { NDDE_TRUST_SHARE_FAIL } -const size_t +enum size_t MAX_NDDESHARENAME = 256, MAX_DOMAINNAME = 15, MAX_USERNAME = 15, @@ -67,15 +67,15 @@ const size_t MAX_TOPICNAME = 255, MAX_ITEMNAME = 255; -const NDDEF_NOPASSWORDPROMPT = 1; -const NDDEF_NOCACHELOOKUP = 2; -const NDDEF_STRIP_NDDE = 4; +enum NDDEF_NOPASSWORDPROMPT = 1; +enum NDDEF_NOCACHELOOKUP = 2; +enum NDDEF_STRIP_NDDE = 4; -const SHARE_TYPE_OLD = 1; -const SHARE_TYPE_NEW = 2; -const SHARE_TYPE_STATIC = 4; +enum SHARE_TYPE_OLD = 1; +enum SHARE_TYPE_NEW = 2; +enum SHARE_TYPE_STATIC = 4; -const uint +enum uint NDDE_CMD_SHOW_MASK = 0x0000FFFF, NDDE_TRUST_CMD_SHOW = 0x10000000, NDDE_TRUST_SHARE_DEL = 0x20000000, diff --git a/src/core/sys/windows/ntdef.d b/src/core/sys/windows/ntdef.d index 9f133145e4..3dc875e18c 100644 --- a/src/core/sys/windows/ntdef.d +++ b/src/core/sys/windows/ntdef.d @@ -12,7 +12,7 @@ version (Windows): private import core.sys.windows.basetsd, core.sys.windows.subauth, core.sys.windows.windef, core.sys.windows.winnt; -const uint +enum uint OBJ_INHERIT = 0x0002, OBJ_PERMANENT = 0x0010, OBJ_EXCLUSIVE = 0x0020, diff --git a/src/core/sys/windows/ntldap.d b/src/core/sys/windows/ntldap.d index 4ac68e3846..3437658966 100644 --- a/src/core/sys/windows/ntldap.d +++ b/src/core/sys/windows/ntldap.d @@ -56,5 +56,5 @@ const wchar[] LDAP_SERVER_PERMISSIVE_MODIFY_OID_W = "1.2.840.113556.1.4.1413", LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID_W = "1.2.840.113556.1.4.521"; -const SERVER_SEARCH_FLAG_DOMAIN_SCOPE = 1; -const SERVER_SEARCH_FLAG_PHANTOM_ROOT = 2; +enum SERVER_SEARCH_FLAG_DOMAIN_SCOPE = 1; +enum SERVER_SEARCH_FLAG_PHANTOM_ROOT = 2; diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index eb464b6413..e6a41e844f 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -18,19 +18,19 @@ private import // FIXME: check types and grouping of constants // FIXME: check Windows version support -const KERB_WRAP_NO_ENCRYPT = 0x80000001; - -const LOGON_GUEST = 0x00000001; -const LOGON_NOENCRYPTION = 0x00000002; -const LOGON_CACHED_ACCOUNT = 0x00000004; -const LOGON_USED_LM_PASSWORD = 0x00000008; -const LOGON_EXTRA_SIDS = 0x00000020; -const LOGON_SUBAUTH_SESSION_KEY = 0x00000040; -const LOGON_SERVER_TRUST_ACCOUNT = 0x00000080; -const LOGON_NTLMV2_ENABLED = 0x00000100; -const LOGON_RESOURCE_GROUPS = 0x00000200; -const LOGON_PROFILE_PATH_RETURNED = 0x00000400; -const LOGON_GRACE_LOGON = 0x01000000; +enum KERB_WRAP_NO_ENCRYPT = 0x80000001; + +enum LOGON_GUEST = 0x00000001; +enum LOGON_NOENCRYPTION = 0x00000002; +enum LOGON_CACHED_ACCOUNT = 0x00000004; +enum LOGON_USED_LM_PASSWORD = 0x00000008; +enum LOGON_EXTRA_SIDS = 0x00000020; +enum LOGON_SUBAUTH_SESSION_KEY = 0x00000040; +enum LOGON_SERVER_TRUST_ACCOUNT = 0x00000080; +enum LOGON_NTLMV2_ENABLED = 0x00000100; +enum LOGON_RESOURCE_GROUPS = 0x00000200; +enum LOGON_PROFILE_PATH_RETURNED = 0x00000400; +enum LOGON_GRACE_LOGON = 0x01000000; enum { LSA_MODE_PASSWORD_PROTECTED = 1, @@ -49,18 +49,18 @@ const wchar[] MICROSOFT_KERBEROS_NAME_W = "Kerberos"; const char[] MSV1_0_PACKAGE_NAME = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; const wchar[] MSV1_0_PACKAGE_NAMEW = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; -const MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT = 32; -const MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT = 2048; -const MSV1_0_CLEARTEXT_PASSWORD_ALLOWED = 2; -const MSV1_0_CRED_LM_PRESENT = 1; -const MSV1_0_CRED_NT_PRESENT = 2; -const MSV1_0_CRED_VERSION = 0; -const MSV1_0_DONT_TRY_GUEST_ACCOUNT = 16; -const MSV1_0_MAX_NTLM3_LIFE = 1800; -const MSV1_0_MAX_AVL_SIZE = 64000; -const MSV1_0_MNS_LOGON = 16777216; - -const size_t +enum MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT = 32; +enum MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT = 2048; +enum MSV1_0_CLEARTEXT_PASSWORD_ALLOWED = 2; +enum MSV1_0_CRED_LM_PRESENT = 1; +enum MSV1_0_CRED_NT_PRESENT = 2; +enum MSV1_0_CRED_VERSION = 0; +enum MSV1_0_DONT_TRY_GUEST_ACCOUNT = 16; +enum MSV1_0_MAX_NTLM3_LIFE = 1800; +enum MSV1_0_MAX_AVL_SIZE = 64000; +enum MSV1_0_MNS_LOGON = 16777216; + +enum size_t MSV1_0_CHALLENGE_LENGTH = 8, MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8, MSV1_0_NTLM3_RESPONSE_LENGTH = 16, @@ -71,27 +71,27 @@ const size_t MSV1_0_PACKAGE_NAMEW_LENGTH = MSV1_0_PACKAGE_NAMEW.sizeof - WCHAR.sizeof; -const MSV1_0_RETURN_USER_PARAMETERS = 8; -const MSV1_0_RETURN_PASSWORD_EXPIRY = 64; -const MSV1_0_RETURN_PROFILE_PATH = 512; -const MSV1_0_SUBAUTHENTICATION_DLL_EX = 1048576; -const MSV1_0_SUBAUTHENTICATION_DLL = 0xff000000; -const MSV1_0_SUBAUTHENTICATION_DLL_SHIFT = 24; -const MSV1_0_SUBAUTHENTICATION_DLL_RAS = 2; -const MSV1_0_SUBAUTHENTICATION_DLL_IIS = 132; -const MSV1_0_SUBAUTHENTICATION_FLAGS = 0xff000000; -const MSV1_0_TRY_GUEST_ACCOUNT_ONLY = 256; -const MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY = 1024; -const MSV1_0_UPDATE_LOGON_STATISTICS = 4; -const MSV1_0_USE_CLIENT_CHALLENGE = 128; -const MSV1_0_USER_SESSION_KEY_LENGTH = 16; +enum MSV1_0_RETURN_USER_PARAMETERS = 8; +enum MSV1_0_RETURN_PASSWORD_EXPIRY = 64; +enum MSV1_0_RETURN_PROFILE_PATH = 512; +enum MSV1_0_SUBAUTHENTICATION_DLL_EX = 1048576; +enum MSV1_0_SUBAUTHENTICATION_DLL = 0xff000000; +enum MSV1_0_SUBAUTHENTICATION_DLL_SHIFT = 24; +enum MSV1_0_SUBAUTHENTICATION_DLL_RAS = 2; +enum MSV1_0_SUBAUTHENTICATION_DLL_IIS = 132; +enum MSV1_0_SUBAUTHENTICATION_FLAGS = 0xff000000; +enum MSV1_0_TRY_GUEST_ACCOUNT_ONLY = 256; +enum MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY = 1024; +enum MSV1_0_UPDATE_LOGON_STATISTICS = 4; +enum MSV1_0_USE_CLIENT_CHALLENGE = 128; +enum MSV1_0_USER_SESSION_KEY_LENGTH = 16; const char[] MSV1_0_SUBAUTHENTICATION_KEY = `System\CurrentControlSet\Control\Lsa\MSV1_0`, MSV1_0_SUBAUTHENTICATION_VALUE = "Auth"; -const ACCESS_MASK +enum ACCESS_MASK POLICY_VIEW_LOCAL_INFORMATION = 0x0001, POLICY_VIEW_AUDIT_INFORMATION = 0x0002, POLICY_GET_PRIVATE_INFORMATION = 0x0004, @@ -110,11 +110,11 @@ const ACCESS_MASK POLICY_EXECUTE = STANDARD_RIGHTS_EXECUTE | 0x0801, POLICY_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 0x0FFF; -const POLICY_AUDIT_EVENT_UNCHANGED = 0; -const POLICY_AUDIT_EVENT_SUCCESS = 1; -const POLICY_AUDIT_EVENT_FAILURE = 2; -const POLICY_AUDIT_EVENT_NONE = 4; -const POLICY_AUDIT_EVENT_MASK = 7; +enum POLICY_AUDIT_EVENT_UNCHANGED = 0; +enum POLICY_AUDIT_EVENT_SUCCESS = 1; +enum POLICY_AUDIT_EVENT_FAILURE = 2; +enum POLICY_AUDIT_EVENT_NONE = 4; +enum POLICY_AUDIT_EVENT_MASK = 7; enum { POLICY_LOCATION_LOCAL = 1, @@ -129,19 +129,19 @@ enum : uint { } -const POLICY_QOS_SCHANEL_REQUIRED = 0x0001; -const POLICY_QOS_OUTBOUND_INTEGRITY = 0x0002; -const POLICY_QOS_OUTBOUND_CONFIDENTIALITY = 0x0004; -const POLICY_QOS_INBOUND_INTEGREITY = 0x0008; -const POLICY_QOS_INBOUND_CONFIDENTIALITY = 0x0010; -const POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE = 0x0020; -const POLICY_QOS_RAS_SERVER_ALLOWED = 0x0040; -const POLICY_QOS_DHCP_SERVER_ALLOWD = 0x0080; +enum POLICY_QOS_SCHANEL_REQUIRED = 0x0001; +enum POLICY_QOS_OUTBOUND_INTEGRITY = 0x0002; +enum POLICY_QOS_OUTBOUND_CONFIDENTIALITY = 0x0004; +enum POLICY_QOS_INBOUND_INTEGREITY = 0x0008; +enum POLICY_QOS_INBOUND_CONFIDENTIALITY = 0x0010; +enum POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE = 0x0020; +enum POLICY_QOS_RAS_SERVER_ALLOWED = 0x0040; +enum POLICY_QOS_DHCP_SERVER_ALLOWD = 0x0080; -const POLICY_KERBEROS_FORWARDABLE = 1; -const POLICY_KERBEROS_PROXYABLE = 2; -const POLICY_KERBEROS_RENEWABLE = 4; -const POLICY_KERBEROS_POSTDATEABLE = 8; +enum POLICY_KERBEROS_FORWARDABLE = 1; +enum POLICY_KERBEROS_PROXYABLE = 2; +enum POLICY_KERBEROS_RENEWABLE = 4; +enum POLICY_KERBEROS_POSTDATEABLE = 8; const char[] SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = "PasswordChangeNotify", @@ -496,7 +496,7 @@ struct MSV1_0_SUBAUTH_RESPONSE { } alias MSV1_0_SUBAUTH_RESPONSE* PMSV1_0_SUBAUTH_RESPONSE; -const MSV1_0_DERIVECRED_TYPE_SHA1 = 0; +enum MSV1_0_DERIVECRED_TYPE_SHA1 = 0; struct MSV1_0_DERIVECRED_REQUEST { MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d index a468e29cbc..7d89901d6a 100644 --- a/src/core/sys/windows/oaidl.d +++ b/src/core/sys/windows/oaidl.d @@ -11,48 +11,48 @@ version (Windows): private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; -const DISPID_UNKNOWN = -1; -const DISPID_VALUE = 0; -const DISPID_PROPERTYPUT = -3; -const DISPID_NEWENUM = -4; -const DISPID_EVALUATE = -5; -const DISPID_CONSTRUCTOR = -6; -const DISPID_DESTRUCTOR = -7; -const DISPID_COLLECT = -8; - -const FADF_AUTO = 1; -const FADF_STATIC = 2; -const FADF_EMBEDDED = 4; -const FADF_FIXEDSIZE = 16; -const FADF_RECORD = 32; -const FADF_HAVEIID = 64; -const FADF_HAVEVARTYPE = 128; -const FADF_BSTR = 256; -const FADF_UNKNOWN = 512; -const FADF_DISPATCH = 1024; -const FADF_VARIANT = 2048; -const FADF_RESERVED = 0xf0e8; -const FADF_DATADELETED = 0x1000; -const FADF_CREATEVECTOR = 0x2000; - -const PARAMFLAG_NONE = 0; -const PARAMFLAG_FIN = 1; -const PARAMFLAG_FOUT = 2; -const PARAMFLAG_FLCID = 4; -const PARAMFLAG_FRETVAL = 8; -const PARAMFLAG_FOPT = 16; -const PARAMFLAG_FHASDEFAULT = 32; - -const IDLFLAG_NONE = PARAMFLAG_NONE; -const IDLFLAG_FIN = PARAMFLAG_FIN; -const IDLFLAG_FOUT = PARAMFLAG_FOUT; -const IDLFLAG_FLCID = PARAMFLAG_FLCID; -const IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; - -const IMPLTYPEFLAG_FDEFAULT = 1; -const IMPLTYPEFLAG_FSOURCE = 2; -const IMPLTYPEFLAG_FRESTRICTED = 4; -const IMPLTYPEFLAG_FDEFAULTVTABLE = 8; +enum DISPID_UNKNOWN = -1; +enum DISPID_VALUE = 0; +enum DISPID_PROPERTYPUT = -3; +enum DISPID_NEWENUM = -4; +enum DISPID_EVALUATE = -5; +enum DISPID_CONSTRUCTOR = -6; +enum DISPID_DESTRUCTOR = -7; +enum DISPID_COLLECT = -8; + +enum FADF_AUTO = 1; +enum FADF_STATIC = 2; +enum FADF_EMBEDDED = 4; +enum FADF_FIXEDSIZE = 16; +enum FADF_RECORD = 32; +enum FADF_HAVEIID = 64; +enum FADF_HAVEVARTYPE = 128; +enum FADF_BSTR = 256; +enum FADF_UNKNOWN = 512; +enum FADF_DISPATCH = 1024; +enum FADF_VARIANT = 2048; +enum FADF_RESERVED = 0xf0e8; +enum FADF_DATADELETED = 0x1000; +enum FADF_CREATEVECTOR = 0x2000; + +enum PARAMFLAG_NONE = 0; +enum PARAMFLAG_FIN = 1; +enum PARAMFLAG_FOUT = 2; +enum PARAMFLAG_FLCID = 4; +enum PARAMFLAG_FRETVAL = 8; +enum PARAMFLAG_FOPT = 16; +enum PARAMFLAG_FHASDEFAULT = 32; + +enum IDLFLAG_NONE = PARAMFLAG_NONE; +enum IDLFLAG_FIN = PARAMFLAG_FIN; +enum IDLFLAG_FOUT = PARAMFLAG_FOUT; +enum IDLFLAG_FLCID = PARAMFLAG_FLCID; +enum IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; + +enum IMPLTYPEFLAG_FDEFAULT = 1; +enum IMPLTYPEFLAG_FSOURCE = 2; +enum IMPLTYPEFLAG_FRESTRICTED = 4; +enum IMPLTYPEFLAG_FDEFAULTVTABLE = 8; enum SYSKIND { diff --git a/src/core/sys/windows/objbase.d b/src/core/sys/windows/objbase.d index 3d2f16a1d0..e57f554ad5 100644 --- a/src/core/sys/windows/objbase.d +++ b/src/core/sys/windows/objbase.d @@ -18,42 +18,42 @@ private import core.sys.windows.basetyps, core.sys.windows.objfwd, core.sys.wind //MACRO #define LISet32(li, v) ((li).HighPart=(v)<0?-1:0, (li).LowPart=(v)) //MACRO #define ULISet32(li, v) ((li).HighPart=0, (li).LowPart=(v)) -const CLSCTX_ALL = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER|CLSCTX.CLSCTX_LOCAL_SERVER; -const CLSCTX_INPROC = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER; -const CLSCTX_SERVER = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_LOCAL_SERVER|CLSCTX.CLSCTX_REMOTE_SERVER; -const MARSHALINTERFACE_MIN=500; -const CWCSTORAGENAME=32; - -const STGM_DIRECT = 0; -const STGM_TRANSACTED = 0x10000L; -const STGM_SIMPLE = 0x8000000L; -const STGM_READ = 0; -const STGM_WRITE = 1; -const STGM_READWRITE = 2; -const STGM_SHARE_DENY_NONE = 0x40; -const STGM_SHARE_DENY_READ = 0x30; -const STGM_SHARE_DENY_WRITE = 0x20; -const STGM_SHARE_EXCLUSIVE = 0x10; -const STGM_PRIORITY = 0x40000L; -const STGM_DELETEONRELEASE = 0x4000000; -const STGM_NOSCRATCH = 0x100000; -const STGM_CREATE = 0x1000; -const STGM_CONVERT = 0x20000; -const STGM_NOSNAPSHOT = 0x200000; -const STGM_FAILIFTHERE = 0; - -const ASYNC_MODE_COMPATIBILITY = 1; -const ASYNC_MODE_DEFAULT = 0; - -const STGTY_REPEAT = 256; -const STG_TOEND = 0xFFFFFFFF; -const STG_LAYOUT_SEQUENTIAL = 0; -const STG_LAYOUT_INTERLEAVED = 1; - -const COM_RIGHTS_EXECUTE = 1; -const COM_RIGHTS_SAFE_FOR_SCRIPTING = 2; - -const STGOPTIONS_VERSION = 2; +enum CLSCTX_ALL = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER|CLSCTX.CLSCTX_LOCAL_SERVER; +enum CLSCTX_INPROC = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER; +enum CLSCTX_SERVER = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_LOCAL_SERVER|CLSCTX.CLSCTX_REMOTE_SERVER; +enum MARSHALINTERFACE_MIN=500; +enum CWCSTORAGENAME=32; + +enum STGM_DIRECT = 0; +enum STGM_TRANSACTED = 0x10000L; +enum STGM_SIMPLE = 0x8000000L; +enum STGM_READ = 0; +enum STGM_WRITE = 1; +enum STGM_READWRITE = 2; +enum STGM_SHARE_DENY_NONE = 0x40; +enum STGM_SHARE_DENY_READ = 0x30; +enum STGM_SHARE_DENY_WRITE = 0x20; +enum STGM_SHARE_EXCLUSIVE = 0x10; +enum STGM_PRIORITY = 0x40000L; +enum STGM_DELETEONRELEASE = 0x4000000; +enum STGM_NOSCRATCH = 0x100000; +enum STGM_CREATE = 0x1000; +enum STGM_CONVERT = 0x20000; +enum STGM_NOSNAPSHOT = 0x200000; +enum STGM_FAILIFTHERE = 0; + +enum ASYNC_MODE_COMPATIBILITY = 1; +enum ASYNC_MODE_DEFAULT = 0; + +enum STGTY_REPEAT = 256; +enum STG_TOEND = 0xFFFFFFFF; +enum STG_LAYOUT_SEQUENTIAL = 0; +enum STG_LAYOUT_INTERLEAVED = 1; + +enum COM_RIGHTS_EXECUTE = 1; +enum COM_RIGHTS_SAFE_FOR_SCRIPTING = 2; + +enum STGOPTIONS_VERSION = 2; enum STGFMT { STGFMT_STORAGE = 0, @@ -66,7 +66,7 @@ struct STGOPTIONS { USHORT usVersion; USHORT reserved; ULONG ulSectorSize; - const(WCHAR)* pwcsTemplateFile; +const(WCHAR)* pwcsTemplateFile; } enum REGCLS { diff --git a/src/core/sys/windows/objidl.d b/src/core/sys/windows/objidl.d index 320bb86bf7..73b201bb85 100644 --- a/src/core/sys/windows/objidl.d +++ b/src/core/sys/windows/objidl.d @@ -139,7 +139,7 @@ enum EXTCONN { } struct MULTI_QI { - const(IID)* pIID; +const(IID)* pIID; IUnknown pItf; HRESULT hr; } @@ -474,7 +474,7 @@ struct SOLE_AUTHENTICATION_SERVICE { HRESULT hr; } -const OLECHAR* COLE_DEFAULT_PRINCIPAL = cast ( OLECHAR* )(-1); +enum OLECHAR* COLE_DEFAULT_PRINCIPAL = cast ( OLECHAR* )(-1); enum EOLE_AUTHENTICATION_CAPABILITIES { EOAC_NONE = 0, @@ -500,7 +500,7 @@ struct SOLE_AUTHENTICATION_INFO { void* pAuthInfo; } -const void* COLE_DEFAULT_AUTHINFO = cast( void* )(-1 ); +enum void* COLE_DEFAULT_AUTHINFO = cast( void* )(-1 ); struct SOLE_AUTHENTICATION_LIST { DWORD cAuthInfo; diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index 8e814ff62e..15d6845620 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -23,10 +23,10 @@ enum { OT_STATIC } -const OLEVERB_PRIMARY = 0; -const OF_SET = 1; -const OF_GET = 2; -const OF_HANDLER = 4; +enum OLEVERB_PRIMARY = 0; +enum OF_SET = 1; +enum OF_GET = 2; +enum OF_HANDLER = 4; struct OLETARGETDEVICE { USHORT otdDeviceNameOffset; diff --git a/src/core/sys/windows/ole2.d b/src/core/sys/windows/ole2.d index e295078a5a..0f216af547 100644 --- a/src/core/sys/windows/ole2.d +++ b/src/core/sys/windows/ole2.d @@ -15,9 +15,9 @@ public import core.sys.windows.basetyps, core.sys.windows.objbase, core.sys.wind private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.windows.windef, core.sys.windows.wtypes; private import core.sys.windows.winuser; // for LPMSG -const E_DRAW = VIEW_E_DRAW; +enum E_DRAW = VIEW_E_DRAW; -const DATA_E_FORMATETC = DV_E_FORMATETC; +enum DATA_E_FORMATETC = DV_E_FORMATETC; enum { OLEIVERB_PRIMARY = 0, @@ -29,10 +29,10 @@ enum { OLEIVERB_DISCARDUNDOSTATE = -6 } -const EMBDHLP_INPROC_HANDLER = 0x0000L; -const EMBDHLP_INPROC_SERVER = 0x0001L; -const EMBDHLP_CREATENOW = 0x00000000L; -const EMBDHLP_DELAYCREATE = 0x00010000L; +enum EMBDHLP_INPROC_HANDLER = 0x0000L; +enum EMBDHLP_INPROC_SERVER = 0x0001L; +enum EMBDHLP_CREATENOW = 0x00000000L; +enum EMBDHLP_DELAYCREATE = 0x00010000L; align(8): struct OLESTREAM { diff --git a/src/core/sys/windows/ole2ver.d b/src/core/sys/windows/ole2ver.d index 9a6d4d0005..9e3badcaed 100644 --- a/src/core/sys/windows/ole2ver.d +++ b/src/core/sys/windows/ole2ver.d @@ -10,5 +10,5 @@ module core.sys.windows.ole2ver; version (Windows): // These are apparently not documented on the MSDN site -const rmm = 23; -const rup = 639; +enum rmm = 23; +enum rup = 639; diff --git a/src/core/sys/windows/oleacc.d b/src/core/sys/windows/oleacc.d index 808f04fa4b..f37904c97b 100644 --- a/src/core/sys/windows/oleacc.d +++ b/src/core/sys/windows/oleacc.d @@ -155,7 +155,7 @@ enum SELFLAG SELFLAG_REMOVESELECTION = 16 } -const SELFLAG_VALID = 0x0000001F; +enum SELFLAG_VALID = 0x0000001F; interface IAccessible : IDispatch { diff --git a/src/core/sys/windows/oleauto.d b/src/core/sys/windows/oleauto.d index 2f331a60e0..113456c1c8 100644 --- a/src/core/sys/windows/oleauto.d +++ b/src/core/sys/windows/oleauto.d @@ -15,31 +15,31 @@ private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.wind private import core.sys.windows.winbase; // for SYSTEMTIME align(8): -const STDOLE_MAJORVERNUM = 1; -const STDOLE_MINORVERNUM = 0; -const STDOLE_LCID = 0; - -const VARIANT_NOVALUEPROP = 0x01; -const VARIANT_ALPHABOOL = 0x02; -const VARIANT_NOUSEOVERRIDE = 0x04; -const VARIANT_LOCALBOOL = 0x08; - -const VAR_TIMEVALUEONLY = 0x0001; -const VAR_DATEVALUEONLY = 0x0002; -const VAR_VALIDDATE = 0x0004; -const VAR_CALENDAR_HIJRI = 0x0008; -const VAR_LOCALBOOL = 0x0010; -const VAR_FORMAT_NOSUBSTITUTE = 0x0020; -const VAR_FOURDIGITYEARS = 0x0040; -const VAR_CALENDAR_THAI = 0x0080; -const VAR_CALENDAR_GREGORIAN = 0x0100; - -const MEMBERID_NIL = DISPID_UNKNOWN; -const ID_DEFAULTINST = -2; -const DISPATCH_METHOD = 1; -const DISPATCH_PROPERTYGET = 2; -const DISPATCH_PROPERTYPUT = 4; -const DISPATCH_PROPERTYPUTREF = 8; +enum STDOLE_MAJORVERNUM = 1; +enum STDOLE_MINORVERNUM = 0; +enum STDOLE_LCID = 0; + +enum VARIANT_NOVALUEPROP = 0x01; +enum VARIANT_ALPHABOOL = 0x02; +enum VARIANT_NOUSEOVERRIDE = 0x04; +enum VARIANT_LOCALBOOL = 0x08; + +enum VAR_TIMEVALUEONLY = 0x0001; +enum VAR_DATEVALUEONLY = 0x0002; +enum VAR_VALIDDATE = 0x0004; +enum VAR_CALENDAR_HIJRI = 0x0008; +enum VAR_LOCALBOOL = 0x0010; +enum VAR_FORMAT_NOSUBSTITUTE = 0x0020; +enum VAR_FOURDIGITYEARS = 0x0040; +enum VAR_CALENDAR_THAI = 0x0080; +enum VAR_CALENDAR_GREGORIAN = 0x0100; + +enum MEMBERID_NIL = DISPID_UNKNOWN; +enum ID_DEFAULTINST = -2; +enum DISPATCH_METHOD = 1; +enum DISPATCH_PROPERTYGET = 2; +enum DISPATCH_PROPERTYPUT = 4; +enum DISPATCH_PROPERTYPUTREF = 8; //ULONG LHashValOfName(LCID l, OLECHAR* n) { return LHashValOfNameSys(SYSKIND.SYS_WIN32, l, n); } @@ -126,43 +126,43 @@ enum { VARCMP_NULL // = 3 } -const LOCALE_USE_NLS = 0x10000000; - -const VARIANT_NOUSEROVERRIDE = 0x04; -const VARIANT_CALENDAR_HIJRI = 0x08; -const VARIANT_CALENDAR_THAI = 0x20; -const VARIANT_CALENDAR_GREGORIAN = 0x40; -const VARIANT_USE_NLS = 0x80; - -const NUMPRS_LEADING_WHITE = 0x00001; -const NUMPRS_TRAILING_WHITE = 0x00002; -const NUMPRS_LEADING_PLUS = 0x00004; -const NUMPRS_TRAILING_PLUS = 0x00008; -const NUMPRS_LEADING_MINUS = 0x00010; -const NUMPRS_TRAILING_MINUS = 0x00020; -const NUMPRS_HEX_OCT = 0x00040; -const NUMPRS_PARENS = 0x00080; -const NUMPRS_DECIMAL = 0x00100; -const NUMPRS_THOUSANDS = 0x00200; -const NUMPRS_CURRENCY = 0x00400; -const NUMPRS_EXPONENT = 0x00800; -const NUMPRS_USE_ALL = 0x01000; -const NUMPRS_STD = 0x01FFF; -const NUMPRS_NEG = 0x10000; -const NUMPRS_INEXACT = 0x20000; - -const VTBIT_I1 = 1 << VARENUM.VT_I1; -const VTBIT_UI1 = 1 << VARENUM.VT_UI1; -const VTBIT_I2 = 1 << VARENUM.VT_I2; -const VTBIT_UI2 = 1 << VARENUM.VT_UI2; -const VTBIT_I4 = 1 << VARENUM.VT_I4; -const VTBIT_UI4 = 1 << VARENUM.VT_UI4; -const VTBIT_I8 = 1 << VARENUM.VT_I8; -const VTBIT_UI8 = 1 << VARENUM.VT_UI8; -const VTBIT_R4 = 1 << VARENUM.VT_R4; -const VTBIT_R8 = 1 << VARENUM.VT_R8; -const VTBIT_CY = 1 << VARENUM.VT_CY; -const VTBIT_DECIMAL = 1 << VARENUM.VT_DECIMAL; +enum LOCALE_USE_NLS = 0x10000000; + +enum VARIANT_NOUSEROVERRIDE = 0x04; +enum VARIANT_CALENDAR_HIJRI = 0x08; +enum VARIANT_CALENDAR_THAI = 0x20; +enum VARIANT_CALENDAR_GREGORIAN = 0x40; +enum VARIANT_USE_NLS = 0x80; + +enum NUMPRS_LEADING_WHITE = 0x00001; +enum NUMPRS_TRAILING_WHITE = 0x00002; +enum NUMPRS_LEADING_PLUS = 0x00004; +enum NUMPRS_TRAILING_PLUS = 0x00008; +enum NUMPRS_LEADING_MINUS = 0x00010; +enum NUMPRS_TRAILING_MINUS = 0x00020; +enum NUMPRS_HEX_OCT = 0x00040; +enum NUMPRS_PARENS = 0x00080; +enum NUMPRS_DECIMAL = 0x00100; +enum NUMPRS_THOUSANDS = 0x00200; +enum NUMPRS_CURRENCY = 0x00400; +enum NUMPRS_EXPONENT = 0x00800; +enum NUMPRS_USE_ALL = 0x01000; +enum NUMPRS_STD = 0x01FFF; +enum NUMPRS_NEG = 0x10000; +enum NUMPRS_INEXACT = 0x20000; + +enum VTBIT_I1 = 1 << VARENUM.VT_I1; +enum VTBIT_UI1 = 1 << VARENUM.VT_UI1; +enum VTBIT_I2 = 1 << VARENUM.VT_I2; +enum VTBIT_UI2 = 1 << VARENUM.VT_UI2; +enum VTBIT_I4 = 1 << VARENUM.VT_I4; +enum VTBIT_UI4 = 1 << VARENUM.VT_UI4; +enum VTBIT_I8 = 1 << VARENUM.VT_I8; +enum VTBIT_UI8 = 1 << VARENUM.VT_UI8; +enum VTBIT_R4 = 1 << VARENUM.VT_R4; +enum VTBIT_R8 = 1 << VARENUM.VT_R8; +enum VTBIT_CY = 1 << VARENUM.VT_CY; +enum VTBIT_DECIMAL = 1 << VARENUM.VT_DECIMAL; enum REGKIND{ diff --git a/src/core/sys/windows/olectl.d b/src/core/sys/windows/olectl.d index 17cfe71641..a3368ff2f4 100644 --- a/src/core/sys/windows/olectl.d +++ b/src/core/sys/windows/olectl.d @@ -24,19 +24,19 @@ private { // These replace C macros. template ITF_ERROR_SCODE_FOR_D(int c) { - const SCODE ITF_ERROR_SCODE_FOR_D +enum SCODE ITF_ERROR_SCODE_FOR_D = (SEVERITY_ERROR << 31) | (FACILITY_ITF << 16) | c; } template ITF_SUCCESS_SCODE_FOR_D(int c) { - const SCODE ITF_SUCCESS_SCODE_FOR_D +enum SCODE ITF_SUCCESS_SCODE_FOR_D = (SEVERITY_SUCCESS << 31) | (FACILITY_ITF << 16) | c; } template STD_CTL_SCODE(int c) { - const SCODE STD_CTL_SCODE +enum SCODE STD_CTL_SCODE = (SEVERITY_ERROR << 31) | (FACILITY_CONTROL << 16) | c; } } @@ -85,7 +85,7 @@ enum : SCODE { CTL_E_CUSTOM_FIRST = STD_CTL_SCODE!(600) } -const SCODE CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST+2; +enum SCODE CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST+2; enum : SCODE { CONNECT_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), @@ -135,26 +135,26 @@ enum { OLEMISC_WANTSTOMENUMERGE = 0x100000, OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 } -const OLEIVERB_PROPERTIES = -7; - -const VT_STREAMED_PROPSET = 73; -const VT_STORED_PROPSET = 74; -const VT_BLOB_PROPSET = 75; -const VT_VERBOSE_ENUM = 76; -const VT_COLOR = VARENUM.VT_I4; -const VT_XPOS_PIXELS = VARENUM.VT_I4; -const VT_YPOS_PIXELS = VARENUM.VT_I4; -const VT_XSIZE_PIXELS = VARENUM.VT_I4; -const VT_YSIZE_PIXELS = VARENUM.VT_I4; -const VT_XPOS_HIMETRIC = VARENUM.VT_I4; -const VT_YPOS_HIMETRIC = VARENUM.VT_I4; -const VT_XSIZE_HIMETRIC = VARENUM.VT_I4; -const VT_YSIZE_HIMETRIC = VARENUM.VT_I4; -const VT_TRISTATE = VARENUM.VT_I2; -const VT_OPTEXCLUSIVE = VARENUM.VT_BOOL; -const VT_FONT = VARENUM.VT_DISPATCH; -const VT_PICTURE = VARENUM.VT_DISPATCH; -const VT_HANDLE = VARENUM.VT_I4; +enum OLEIVERB_PROPERTIES = -7; + +enum VT_STREAMED_PROPSET = 73; +enum VT_STORED_PROPSET = 74; +enum VT_BLOB_PROPSET = 75; +enum VT_VERBOSE_ENUM = 76; +enum VT_COLOR = VARENUM.VT_I4; +enum VT_XPOS_PIXELS = VARENUM.VT_I4; +enum VT_YPOS_PIXELS = VARENUM.VT_I4; +enum VT_XSIZE_PIXELS = VARENUM.VT_I4; +enum VT_YSIZE_PIXELS = VARENUM.VT_I4; +enum VT_XPOS_HIMETRIC = VARENUM.VT_I4; +enum VT_YPOS_HIMETRIC = VARENUM.VT_I4; +enum VT_XSIZE_HIMETRIC = VARENUM.VT_I4; +enum VT_YSIZE_HIMETRIC = VARENUM.VT_I4; +enum VT_TRISTATE = VARENUM.VT_I2; +enum VT_OPTEXCLUSIVE = VARENUM.VT_BOOL; +enum VT_FONT = VARENUM.VT_DISPATCH; +enum VT_PICTURE = VARENUM.VT_DISPATCH; +enum VT_HANDLE = VARENUM.VT_I4; enum { OCM__BASE = WM_USER + 0x1c00, @@ -190,7 +190,7 @@ enum { XFORMCOORDS_CONTAINERTOHIMETRIC = 8 } -const GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1; +enum GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1; enum { PROPPAGESTATUS_DIRTY = 1, diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d index 3e862d33d7..6461fc1de8 100644 --- a/src/core/sys/windows/oledlg.d +++ b/src/core/sys/windows/oledlg.d @@ -17,7 +17,7 @@ private import core.sys.windows.winbase, core.sys.windows.objidl, core.sys.windo // FIXME: remove inherited methods from interface definitions -const PS_MAXLINKTYPES=8; +enum PS_MAXLINKTYPES=8; const TCHAR[] OLESTDDELIM = "\\"; const TCHAR[] SZOLEUI_MSG_HELP = "OLEUI_MSG_HELP"; @@ -32,7 +32,7 @@ const TCHAR[] SZOLEUI_MSG_BROWSE_OFN = "OLEUI_MSG_BROWSE_OFN"; const TCHAR[] PROP_HWND_CHGICONDLG = "HWND_CIDLG"; -const IDC_OLEUIHELP=99; +enum IDC_OLEUIHELP=99; enum { IDC_IO_CREATENEW = 2100, @@ -54,282 +54,282 @@ enum { IDC_IO_CONTROLTYPELIST // = 2116 } -const IDC_PS_PASTE=500; -const IDC_PS_PASTELINK=501; -const IDC_PS_SOURCETEXT=502; -const IDC_PS_PASTELIST=503; -const IDC_PS_PASTELINKLIST=504; -const IDC_PS_DISPLAYLIST=505; -const IDC_PS_DISPLAYASICON=506; -const IDC_PS_ICONDISPLAY=507; -const IDC_PS_CHANGEICON=508; -const IDC_PS_RESULTIMAGE=509; -const IDC_PS_RESULTTEXT=510; - -const IDC_CI_GROUP=120; -const IDC_CI_CURRENT=121; -const IDC_CI_CURRENTICON=122; -const IDC_CI_DEFAULT=123; -const IDC_CI_DEFAULTICON=124; -const IDC_CI_FROMFILE=125; -const IDC_CI_FROMFILEEDIT=126; -const IDC_CI_ICONLIST=127; -const IDC_CI_LABEL=128; -const IDC_CI_LABELEDIT=129; -const IDC_CI_BROWSE=130; -const IDC_CI_ICONDISPLAY=131; - -const IDC_CV_OBJECTTYPE=150; -const IDC_CV_DISPLAYASICON=152; -const IDC_CV_CHANGEICON=153; -const IDC_CV_ACTIVATELIST=154; -const IDC_CV_CONVERTTO=155; -const IDC_CV_ACTIVATEAS=156; -const IDC_CV_RESULTTEXT=157; -const IDC_CV_CONVERTLIST=158; -const IDC_CV_ICONDISPLAY=165; - -const IDC_EL_CHANGESOURCE=201; -const IDC_EL_AUTOMATIC=202; -const IDC_EL_CANCELLINK=209; -const IDC_EL_UPDATENOW=210; -const IDC_EL_OPENSOURCE=211; -const IDC_EL_MANUAL=212; -const IDC_EL_LINKSOURCE=216; -const IDC_EL_LINKTYPE=217; -const IDC_EL_LINKSLISTBOX=206; -const IDC_EL_COL1=220; -const IDC_EL_COL2=221; -const IDC_EL_COL3=222; - -const IDC_BZ_RETRY=600; -const IDC_BZ_ICON=601; -const IDC_BZ_MESSAGE1=602; -const IDC_BZ_SWITCHTO=604; - -const IDC_UL_METER=1029; -const IDC_UL_STOP=1030; -const IDC_UL_PERCENT=1031; -const IDC_UL_PROGRESS=1032; - -const IDC_PU_LINKS=900; -const IDC_PU_TEXT=901; -const IDC_PU_CONVERT=902; -const IDC_PU_ICON=908; - -const IDC_GP_OBJECTNAME=1009; -const IDC_GP_OBJECTTYPE=1010; -const IDC_GP_OBJECTSIZE=1011; -const IDC_GP_CONVERT=1013; -const IDC_GP_OBJECTICON=1014; -const IDC_GP_OBJECTLOCATION=1022; - -const IDC_VP_PERCENT=1000; -const IDC_VP_CHANGEICON=1001; -const IDC_VP_EDITABLE=1002; -const IDC_VP_ASICON=1003; -const IDC_VP_RELATIVE=1005; -const IDC_VP_SPIN=1006; -const IDC_VP_SCALETXT=1034; -const IDC_VP_ICONDISPLAY=1021; -const IDC_VP_RESULTIMAGE=1033; - -const IDC_LP_OPENSOURCE=1006; -const IDC_LP_UPDATENOW=1007; -const IDC_LP_BREAKLINK=1008; -const IDC_LP_LINKSOURCE=1012; -const IDC_LP_CHANGESOURCE=1015; -const IDC_LP_AUTOMATIC=1016; -const IDC_LP_MANUAL=1017; -const IDC_LP_DATE=1018; -const IDC_LP_TIME=1019; - -const IDD_INSERTOBJECT=1000; -const IDD_CHANGEICON=1001; -const IDD_CONVERT=1002; -const IDD_PASTESPECIAL=1003; -const IDD_EDITLINKS=1004; -const IDD_BUSY=1006; -const IDD_UPDATELINKS=1007; -const IDD_CHANGESOURCE=1009; -const IDD_INSERTFILEBROWSE=1010; -const IDD_CHANGEICONBROWSE=1011; -const IDD_CONVERTONLY=1012; -const IDD_CHANGESOURCE4=1013; -const IDD_GNRLPROPS=1100; -const IDD_VIEWPROPS=1101; -const IDD_LINKPROPS=1102; -const IDD_CANNOTUPDATELINK=1008; -const IDD_LINKSOURCEUNAVAILABLE=1020; -const IDD_SERVERNOTFOUND=1023; -const IDD_OUTOFMEMORY=1024; -const IDD_SERVERNOTREGW=1021; -const IDD_LINKTYPECHANGEDW=1022; -const IDD_SERVERNOTREGA=1025; -const IDD_LINKTYPECHANGEDA=1026; - -const ID_BROWSE_CHANGEICON=1; -const ID_BROWSE_INSERTFILE=2; -const ID_BROWSE_ADDCONTROL=3; -const ID_BROWSE_CHANGESOURCE=4; - -const OLEUI_FALSE=0; -const OLEUI_SUCCESS=1; -const OLEUI_OK=1; -const OLEUI_CANCEL=2; - -const OLEUI_ERR_STANDARDMIN=100; -const OLEUI_ERR_STRUCTURENULL=101; -const OLEUI_ERR_STRUCTUREINVALID=102; -const OLEUI_ERR_CBSTRUCTINCORRECT=103; -const OLEUI_ERR_HWNDOWNERINVALID=104; -const OLEUI_ERR_LPSZCAPTIONINVALID=105; -const OLEUI_ERR_LPFNHOOKINVALID=106; -const OLEUI_ERR_HINSTANCEINVALID=107; -const OLEUI_ERR_LPSZTEMPLATEINVALID=108; -const OLEUI_ERR_HRESOURCEINVALID=109; -const OLEUI_ERR_FINDTEMPLATEFAILURE=110; -const OLEUI_ERR_LOADTEMPLATEFAILURE=111; -const OLEUI_ERR_DIALOGFAILURE=112; -const OLEUI_ERR_LOCALMEMALLOC=113; -const OLEUI_ERR_GLOBALMEMALLOC=114; -const OLEUI_ERR_LOADSTRING=115; -const OLEUI_ERR_OLEMEMALLOC=116; -const OLEUI_ERR_STANDARDMAX=116; - -const OPF_OBJECTISLINK=1; -const OPF_NOFILLDEFAULT=2; -const OPF_SHOWHELP=4; -const OPF_DISABLECONVERT=8; - -const OLEUI_OPERR_SUBPROPNULL=OLEUI_ERR_STANDARDMAX; -const OLEUI_OPERR_SUBPROPINVALID=(OLEUI_ERR_STANDARDMAX+1); -const OLEUI_OPERR_PROPSHEETNULL=(OLEUI_ERR_STANDARDMAX+2); -const OLEUI_OPERR_PROPSHEETINVALID=(OLEUI_ERR_STANDARDMAX+3); -const OLEUI_OPERR_SUPPROP=(OLEUI_ERR_STANDARDMAX+4); -const OLEUI_OPERR_PROPSINVALID=(OLEUI_ERR_STANDARDMAX+5); -const OLEUI_OPERR_PAGESINCORRECT=(OLEUI_ERR_STANDARDMAX+6); -const OLEUI_OPERR_INVALIDPAGES=(OLEUI_ERR_STANDARDMAX+7); -const OLEUI_OPERR_NOTSUPPORTED=(OLEUI_ERR_STANDARDMAX+8); -const OLEUI_OPERR_DLGPROCNOTNULL=(OLEUI_ERR_STANDARDMAX+9); -const OLEUI_OPERR_LPARAMNOTZERO=(OLEUI_ERR_STANDARDMAX+10); -const OLEUI_GPERR_STRINGINVALID=(OLEUI_ERR_STANDARDMAX+11); -const OLEUI_GPERR_CLASSIDINVALID=(OLEUI_ERR_STANDARDMAX+12); -const OLEUI_GPERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+13); -const OLEUI_GPERR_CBFORMATINVALID=(OLEUI_ERR_STANDARDMAX+14); -const OLEUI_VPERR_METAPICTINVALID=(OLEUI_ERR_STANDARDMAX+15); -const OLEUI_VPERR_DVASPECTINVALID=(OLEUI_ERR_STANDARDMAX+16); -const OLEUI_LPERR_LINKCNTRNULL=(OLEUI_ERR_STANDARDMAX+17); -const OLEUI_LPERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+18); -const OLEUI_OPERR_PROPERTYSHEET=(OLEUI_ERR_STANDARDMAX+19); -const OLEUI_OPERR_OBJINFOINVALID=(OLEUI_ERR_STANDARDMAX+20); -const OLEUI_OPERR_LINKINFOINVALID=(OLEUI_ERR_STANDARDMAX+21); - -const OLEUI_QUERY_GETCLASSID=65280; -const OLEUI_QUERY_LINKBROKEN=65281; - -const IOF_SHOWHELP=1; -const IOF_SELECTCREATENEW=2; -const IOF_SELECTCREATEFROMFILE=4; -const IOF_CHECKLINK=8; -const IOF_CHECKDISPLAYASICON=16; -const IOF_CREATENEWOBJECT=32; -const IOF_CREATEFILEOBJECT=64; -const IOF_CREATELINKOBJECT=128; -const IOF_DISABLELINK=256; -const IOF_VERIFYSERVERSEXIST=512; -const IOF_DISABLEDISPLAYASICON=1024; -const IOF_HIDECHANGEICON=2048; -const IOF_SHOWINSERTCONTROL=4096; -const IOF_SELECTCREATECONTROL=8192; - -const OLEUI_IOERR_LPSZFILEINVALID=OLEUI_ERR_STANDARDMAX; -const OLEUI_IOERR_LPSZLABELINVALID=(OLEUI_ERR_STANDARDMAX+1); -const OLEUI_IOERR_HICONINVALID=(OLEUI_ERR_STANDARDMAX+2); -const OLEUI_IOERR_LPFORMATETCINVALID=(OLEUI_ERR_STANDARDMAX+3); -const OLEUI_IOERR_PPVOBJINVALID=(OLEUI_ERR_STANDARDMAX+4); -const OLEUI_IOERR_LPIOLECLIENTSITEINVALID=(OLEUI_ERR_STANDARDMAX+5); -const OLEUI_IOERR_LPISTORAGEINVALID=(OLEUI_ERR_STANDARDMAX+6); -const OLEUI_IOERR_SCODEHASERROR=(OLEUI_ERR_STANDARDMAX+7); -const OLEUI_IOERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+8); -const OLEUI_IOERR_CCHFILEINVALID=(OLEUI_ERR_STANDARDMAX+9); - -const PSF_SHOWHELP=1; -const PSF_SELECTPASTE=2; -const PSF_SELECTPASTELINK=4; -const PSF_CHECKDISPLAYASICON=8; -const PSF_DISABLEDISPLAYASICON=16; -const PSF_HIDECHANGEICON=32; -const PSF_STAYONCLIPBOARDCHANGE=64; -const PSF_NOREFRESHDATAOBJECT=128; - -const OLEUI_IOERR_SRCDATAOBJECTINVALID=OLEUI_ERR_STANDARDMAX; -const OLEUI_IOERR_ARRPASTEENTRIESINVALID=(OLEUI_ERR_STANDARDMAX+1); -const OLEUI_IOERR_ARRLINKTYPESINVALID=(OLEUI_ERR_STANDARDMAX+2); -const OLEUI_PSERR_CLIPBOARDCHANGED=(OLEUI_ERR_STANDARDMAX+3); -const OLEUI_PSERR_GETCLIPBOARDFAILED=(OLEUI_ERR_STANDARDMAX+4); -const OLEUI_ELERR_LINKCNTRNULL=OLEUI_ERR_STANDARDMAX; -const OLEUI_ELERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+1); - -const ELF_SHOWHELP=1; -const ELF_DISABLEUPDATENOW=2; -const ELF_DISABLEOPENSOURCE=4; -const ELF_DISABLECHANGESOURCE=8; -const ELF_DISABLECANCELLINK=16; - -const CIF_SHOWHELP=1; -const CIF_SELECTCURRENT=2; -const CIF_SELECTDEFAULT=4; -const CIF_SELECTFROMFILE=8; -const CIF_USEICONEXE=16; - -const OLEUI_CIERR_MUSTHAVECLSID=OLEUI_ERR_STANDARDMAX; -const OLEUI_CIERR_MUSTHAVECURRENTMETAFILE=OLEUI_ERR_STANDARDMAX+1; -const OLEUI_CIERR_SZICONEXEINVALID=OLEUI_ERR_STANDARDMAX+2; - -const CF_SHOWHELPBUTTON=1; -const CF_SETCONVERTDEFAULT=2; -const CF_SETACTIVATEDEFAULT=4; -const CF_SELECTCONVERTTO=8; -const CF_SELECTACTIVATEAS=16; -const CF_DISABLEDISPLAYASICON=32; -const CF_DISABLEACTIVATEAS=64; -const CF_HIDECHANGEICON=128; -const CF_CONVERTONLY=256; - -const OLEUI_CTERR_CLASSIDINVALID = OLEUI_ERR_STANDARDMAX+1; -const OLEUI_CTERR_DVASPECTINVALID = OLEUI_ERR_STANDARDMAX+2; -const OLEUI_CTERR_CBFORMATINVALID = OLEUI_ERR_STANDARDMAX+3; -const OLEUI_CTERR_HMETAPICTINVALID = OLEUI_ERR_STANDARDMAX+4; -const OLEUI_CTERR_STRINGINVALID = OLEUI_ERR_STANDARDMAX+5; - -const BZ_DISABLECANCELBUTTON = 1; -const BZ_DISABLESWITCHTOBUTTON = 2; -const BZ_DISABLERETRYBUTTON = 4; -const BZ_NOTRESPONDINGDIALOG = 8; - -const OLEUI_BZERR_HTASKINVALID = OLEUI_ERR_STANDARDMAX; -const OLEUI_BZ_SWITCHTOSELECTED = OLEUI_ERR_STANDARDMAX+1; -const OLEUI_BZ_RETRYSELECTED = OLEUI_ERR_STANDARDMAX+2; -const OLEUI_BZ_CALLUNBLOCKED = OLEUI_ERR_STANDARDMAX+3; - -const CSF_SHOWHELP = 1; -const CSF_VALIDSOURCE = 2; -const CSF_ONLYGETSOURCE = 4; -const CSF_EXPLORER = 8; - -const OLEUI_CSERR_LINKCNTRNULL = OLEUI_ERR_STANDARDMAX; -const OLEUI_CSERR_LINKCNTRINVALID = OLEUI_ERR_STANDARDMAX+1; -const OLEUI_CSERR_FROMNOTNULL = OLEUI_ERR_STANDARDMAX+2; -const OLEUI_CSERR_TONOTNULL = OLEUI_ERR_STANDARDMAX+3; -const OLEUI_CSERR_SOURCENULL = OLEUI_ERR_STANDARDMAX+4; -const OLEUI_CSERR_SOURCEINVALID = OLEUI_ERR_STANDARDMAX+5; -const OLEUI_CSERR_SOURCEPARSERROR = OLEUI_ERR_STANDARDMAX+6; -const OLEUI_CSERR_SOURCEPARSEERROR = OLEUI_ERR_STANDARDMAX+7; - -const VPF_SELECTRELATIVE=1; -const VPF_DISABLERELATIVE=2; -const VPF_DISABLESCALE=4; +enum IDC_PS_PASTE=500; +enum IDC_PS_PASTELINK=501; +enum IDC_PS_SOURCETEXT=502; +enum IDC_PS_PASTELIST=503; +enum IDC_PS_PASTELINKLIST=504; +enum IDC_PS_DISPLAYLIST=505; +enum IDC_PS_DISPLAYASICON=506; +enum IDC_PS_ICONDISPLAY=507; +enum IDC_PS_CHANGEICON=508; +enum IDC_PS_RESULTIMAGE=509; +enum IDC_PS_RESULTTEXT=510; + +enum IDC_CI_GROUP=120; +enum IDC_CI_CURRENT=121; +enum IDC_CI_CURRENTICON=122; +enum IDC_CI_DEFAULT=123; +enum IDC_CI_DEFAULTICON=124; +enum IDC_CI_FROMFILE=125; +enum IDC_CI_FROMFILEEDIT=126; +enum IDC_CI_ICONLIST=127; +enum IDC_CI_LABEL=128; +enum IDC_CI_LABELEDIT=129; +enum IDC_CI_BROWSE=130; +enum IDC_CI_ICONDISPLAY=131; + +enum IDC_CV_OBJECTTYPE=150; +enum IDC_CV_DISPLAYASICON=152; +enum IDC_CV_CHANGEICON=153; +enum IDC_CV_ACTIVATELIST=154; +enum IDC_CV_CONVERTTO=155; +enum IDC_CV_ACTIVATEAS=156; +enum IDC_CV_RESULTTEXT=157; +enum IDC_CV_CONVERTLIST=158; +enum IDC_CV_ICONDISPLAY=165; + +enum IDC_EL_CHANGESOURCE=201; +enum IDC_EL_AUTOMATIC=202; +enum IDC_EL_CANCELLINK=209; +enum IDC_EL_UPDATENOW=210; +enum IDC_EL_OPENSOURCE=211; +enum IDC_EL_MANUAL=212; +enum IDC_EL_LINKSOURCE=216; +enum IDC_EL_LINKTYPE=217; +enum IDC_EL_LINKSLISTBOX=206; +enum IDC_EL_COL1=220; +enum IDC_EL_COL2=221; +enum IDC_EL_COL3=222; + +enum IDC_BZ_RETRY=600; +enum IDC_BZ_ICON=601; +enum IDC_BZ_MESSAGE1=602; +enum IDC_BZ_SWITCHTO=604; + +enum IDC_UL_METER=1029; +enum IDC_UL_STOP=1030; +enum IDC_UL_PERCENT=1031; +enum IDC_UL_PROGRESS=1032; + +enum IDC_PU_LINKS=900; +enum IDC_PU_TEXT=901; +enum IDC_PU_CONVERT=902; +enum IDC_PU_ICON=908; + +enum IDC_GP_OBJECTNAME=1009; +enum IDC_GP_OBJECTTYPE=1010; +enum IDC_GP_OBJECTSIZE=1011; +enum IDC_GP_CONVERT=1013; +enum IDC_GP_OBJECTICON=1014; +enum IDC_GP_OBJECTLOCATION=1022; + +enum IDC_VP_PERCENT=1000; +enum IDC_VP_CHANGEICON=1001; +enum IDC_VP_EDITABLE=1002; +enum IDC_VP_ASICON=1003; +enum IDC_VP_RELATIVE=1005; +enum IDC_VP_SPIN=1006; +enum IDC_VP_SCALETXT=1034; +enum IDC_VP_ICONDISPLAY=1021; +enum IDC_VP_RESULTIMAGE=1033; + +enum IDC_LP_OPENSOURCE=1006; +enum IDC_LP_UPDATENOW=1007; +enum IDC_LP_BREAKLINK=1008; +enum IDC_LP_LINKSOURCE=1012; +enum IDC_LP_CHANGESOURCE=1015; +enum IDC_LP_AUTOMATIC=1016; +enum IDC_LP_MANUAL=1017; +enum IDC_LP_DATE=1018; +enum IDC_LP_TIME=1019; + +enum IDD_INSERTOBJECT=1000; +enum IDD_CHANGEICON=1001; +enum IDD_CONVERT=1002; +enum IDD_PASTESPECIAL=1003; +enum IDD_EDITLINKS=1004; +enum IDD_BUSY=1006; +enum IDD_UPDATELINKS=1007; +enum IDD_CHANGESOURCE=1009; +enum IDD_INSERTFILEBROWSE=1010; +enum IDD_CHANGEICONBROWSE=1011; +enum IDD_CONVERTONLY=1012; +enum IDD_CHANGESOURCE4=1013; +enum IDD_GNRLPROPS=1100; +enum IDD_VIEWPROPS=1101; +enum IDD_LINKPROPS=1102; +enum IDD_CANNOTUPDATELINK=1008; +enum IDD_LINKSOURCEUNAVAILABLE=1020; +enum IDD_SERVERNOTFOUND=1023; +enum IDD_OUTOFMEMORY=1024; +enum IDD_SERVERNOTREGW=1021; +enum IDD_LINKTYPECHANGEDW=1022; +enum IDD_SERVERNOTREGA=1025; +enum IDD_LINKTYPECHANGEDA=1026; + +enum ID_BROWSE_CHANGEICON=1; +enum ID_BROWSE_INSERTFILE=2; +enum ID_BROWSE_ADDCONTROL=3; +enum ID_BROWSE_CHANGESOURCE=4; + +enum OLEUI_FALSE=0; +enum OLEUI_SUCCESS=1; +enum OLEUI_OK=1; +enum OLEUI_CANCEL=2; + +enum OLEUI_ERR_STANDARDMIN=100; +enum OLEUI_ERR_STRUCTURENULL=101; +enum OLEUI_ERR_STRUCTUREINVALID=102; +enum OLEUI_ERR_CBSTRUCTINCORRECT=103; +enum OLEUI_ERR_HWNDOWNERINVALID=104; +enum OLEUI_ERR_LPSZCAPTIONINVALID=105; +enum OLEUI_ERR_LPFNHOOKINVALID=106; +enum OLEUI_ERR_HINSTANCEINVALID=107; +enum OLEUI_ERR_LPSZTEMPLATEINVALID=108; +enum OLEUI_ERR_HRESOURCEINVALID=109; +enum OLEUI_ERR_FINDTEMPLATEFAILURE=110; +enum OLEUI_ERR_LOADTEMPLATEFAILURE=111; +enum OLEUI_ERR_DIALOGFAILURE=112; +enum OLEUI_ERR_LOCALMEMALLOC=113; +enum OLEUI_ERR_GLOBALMEMALLOC=114; +enum OLEUI_ERR_LOADSTRING=115; +enum OLEUI_ERR_OLEMEMALLOC=116; +enum OLEUI_ERR_STANDARDMAX=116; + +enum OPF_OBJECTISLINK=1; +enum OPF_NOFILLDEFAULT=2; +enum OPF_SHOWHELP=4; +enum OPF_DISABLECONVERT=8; + +enum OLEUI_OPERR_SUBPROPNULL=OLEUI_ERR_STANDARDMAX; +enum OLEUI_OPERR_SUBPROPINVALID=(OLEUI_ERR_STANDARDMAX+1); +enum OLEUI_OPERR_PROPSHEETNULL=(OLEUI_ERR_STANDARDMAX+2); +enum OLEUI_OPERR_PROPSHEETINVALID=(OLEUI_ERR_STANDARDMAX+3); +enum OLEUI_OPERR_SUPPROP=(OLEUI_ERR_STANDARDMAX+4); +enum OLEUI_OPERR_PROPSINVALID=(OLEUI_ERR_STANDARDMAX+5); +enum OLEUI_OPERR_PAGESINCORRECT=(OLEUI_ERR_STANDARDMAX+6); +enum OLEUI_OPERR_INVALIDPAGES=(OLEUI_ERR_STANDARDMAX+7); +enum OLEUI_OPERR_NOTSUPPORTED=(OLEUI_ERR_STANDARDMAX+8); +enum OLEUI_OPERR_DLGPROCNOTNULL=(OLEUI_ERR_STANDARDMAX+9); +enum OLEUI_OPERR_LPARAMNOTZERO=(OLEUI_ERR_STANDARDMAX+10); +enum OLEUI_GPERR_STRINGINVALID=(OLEUI_ERR_STANDARDMAX+11); +enum OLEUI_GPERR_CLASSIDINVALID=(OLEUI_ERR_STANDARDMAX+12); +enum OLEUI_GPERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+13); +enum OLEUI_GPERR_CBFORMATINVALID=(OLEUI_ERR_STANDARDMAX+14); +enum OLEUI_VPERR_METAPICTINVALID=(OLEUI_ERR_STANDARDMAX+15); +enum OLEUI_VPERR_DVASPECTINVALID=(OLEUI_ERR_STANDARDMAX+16); +enum OLEUI_LPERR_LINKCNTRNULL=(OLEUI_ERR_STANDARDMAX+17); +enum OLEUI_LPERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+18); +enum OLEUI_OPERR_PROPERTYSHEET=(OLEUI_ERR_STANDARDMAX+19); +enum OLEUI_OPERR_OBJINFOINVALID=(OLEUI_ERR_STANDARDMAX+20); +enum OLEUI_OPERR_LINKINFOINVALID=(OLEUI_ERR_STANDARDMAX+21); + +enum OLEUI_QUERY_GETCLASSID=65280; +enum OLEUI_QUERY_LINKBROKEN=65281; + +enum IOF_SHOWHELP=1; +enum IOF_SELECTCREATENEW=2; +enum IOF_SELECTCREATEFROMFILE=4; +enum IOF_CHECKLINK=8; +enum IOF_CHECKDISPLAYASICON=16; +enum IOF_CREATENEWOBJECT=32; +enum IOF_CREATEFILEOBJECT=64; +enum IOF_CREATELINKOBJECT=128; +enum IOF_DISABLELINK=256; +enum IOF_VERIFYSERVERSEXIST=512; +enum IOF_DISABLEDISPLAYASICON=1024; +enum IOF_HIDECHANGEICON=2048; +enum IOF_SHOWINSERTCONTROL=4096; +enum IOF_SELECTCREATECONTROL=8192; + +enum OLEUI_IOERR_LPSZFILEINVALID=OLEUI_ERR_STANDARDMAX; +enum OLEUI_IOERR_LPSZLABELINVALID=(OLEUI_ERR_STANDARDMAX+1); +enum OLEUI_IOERR_HICONINVALID=(OLEUI_ERR_STANDARDMAX+2); +enum OLEUI_IOERR_LPFORMATETCINVALID=(OLEUI_ERR_STANDARDMAX+3); +enum OLEUI_IOERR_PPVOBJINVALID=(OLEUI_ERR_STANDARDMAX+4); +enum OLEUI_IOERR_LPIOLECLIENTSITEINVALID=(OLEUI_ERR_STANDARDMAX+5); +enum OLEUI_IOERR_LPISTORAGEINVALID=(OLEUI_ERR_STANDARDMAX+6); +enum OLEUI_IOERR_SCODEHASERROR=(OLEUI_ERR_STANDARDMAX+7); +enum OLEUI_IOERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+8); +enum OLEUI_IOERR_CCHFILEINVALID=(OLEUI_ERR_STANDARDMAX+9); + +enum PSF_SHOWHELP=1; +enum PSF_SELECTPASTE=2; +enum PSF_SELECTPASTELINK=4; +enum PSF_CHECKDISPLAYASICON=8; +enum PSF_DISABLEDISPLAYASICON=16; +enum PSF_HIDECHANGEICON=32; +enum PSF_STAYONCLIPBOARDCHANGE=64; +enum PSF_NOREFRESHDATAOBJECT=128; + +enum OLEUI_IOERR_SRCDATAOBJECTINVALID=OLEUI_ERR_STANDARDMAX; +enum OLEUI_IOERR_ARRPASTEENTRIESINVALID=(OLEUI_ERR_STANDARDMAX+1); +enum OLEUI_IOERR_ARRLINKTYPESINVALID=(OLEUI_ERR_STANDARDMAX+2); +enum OLEUI_PSERR_CLIPBOARDCHANGED=(OLEUI_ERR_STANDARDMAX+3); +enum OLEUI_PSERR_GETCLIPBOARDFAILED=(OLEUI_ERR_STANDARDMAX+4); +enum OLEUI_ELERR_LINKCNTRNULL=OLEUI_ERR_STANDARDMAX; +enum OLEUI_ELERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+1); + +enum ELF_SHOWHELP=1; +enum ELF_DISABLEUPDATENOW=2; +enum ELF_DISABLEOPENSOURCE=4; +enum ELF_DISABLECHANGESOURCE=8; +enum ELF_DISABLECANCELLINK=16; + +enum CIF_SHOWHELP=1; +enum CIF_SELECTCURRENT=2; +enum CIF_SELECTDEFAULT=4; +enum CIF_SELECTFROMFILE=8; +enum CIF_USEICONEXE=16; + +enum OLEUI_CIERR_MUSTHAVECLSID=OLEUI_ERR_STANDARDMAX; +enum OLEUI_CIERR_MUSTHAVECURRENTMETAFILE=OLEUI_ERR_STANDARDMAX+1; +enum OLEUI_CIERR_SZICONEXEINVALID=OLEUI_ERR_STANDARDMAX+2; + +enum CF_SHOWHELPBUTTON=1; +enum CF_SETCONVERTDEFAULT=2; +enum CF_SETACTIVATEDEFAULT=4; +enum CF_SELECTCONVERTTO=8; +enum CF_SELECTACTIVATEAS=16; +enum CF_DISABLEDISPLAYASICON=32; +enum CF_DISABLEACTIVATEAS=64; +enum CF_HIDECHANGEICON=128; +enum CF_CONVERTONLY=256; + +enum OLEUI_CTERR_CLASSIDINVALID = OLEUI_ERR_STANDARDMAX+1; +enum OLEUI_CTERR_DVASPECTINVALID = OLEUI_ERR_STANDARDMAX+2; +enum OLEUI_CTERR_CBFORMATINVALID = OLEUI_ERR_STANDARDMAX+3; +enum OLEUI_CTERR_HMETAPICTINVALID = OLEUI_ERR_STANDARDMAX+4; +enum OLEUI_CTERR_STRINGINVALID = OLEUI_ERR_STANDARDMAX+5; + +enum BZ_DISABLECANCELBUTTON = 1; +enum BZ_DISABLESWITCHTOBUTTON = 2; +enum BZ_DISABLERETRYBUTTON = 4; +enum BZ_NOTRESPONDINGDIALOG = 8; + +enum OLEUI_BZERR_HTASKINVALID = OLEUI_ERR_STANDARDMAX; +enum OLEUI_BZ_SWITCHTOSELECTED = OLEUI_ERR_STANDARDMAX+1; +enum OLEUI_BZ_RETRYSELECTED = OLEUI_ERR_STANDARDMAX+2; +enum OLEUI_BZ_CALLUNBLOCKED = OLEUI_ERR_STANDARDMAX+3; + +enum CSF_SHOWHELP = 1; +enum CSF_VALIDSOURCE = 2; +enum CSF_ONLYGETSOURCE = 4; +enum CSF_EXPLORER = 8; + +enum OLEUI_CSERR_LINKCNTRNULL = OLEUI_ERR_STANDARDMAX; +enum OLEUI_CSERR_LINKCNTRINVALID = OLEUI_ERR_STANDARDMAX+1; +enum OLEUI_CSERR_FROMNOTNULL = OLEUI_ERR_STANDARDMAX+2; +enum OLEUI_CSERR_TONOTNULL = OLEUI_ERR_STANDARDMAX+3; +enum OLEUI_CSERR_SOURCENULL = OLEUI_ERR_STANDARDMAX+4; +enum OLEUI_CSERR_SOURCEINVALID = OLEUI_ERR_STANDARDMAX+5; +enum OLEUI_CSERR_SOURCEPARSERROR = OLEUI_ERR_STANDARDMAX+6; +enum OLEUI_CSERR_SOURCEPARSEERROR = OLEUI_ERR_STANDARDMAX+7; + +enum VPF_SELECTRELATIVE=1; +enum VPF_DISABLERELATIVE=2; +enum VPF_DISABLESCALE=4; align(8): extern (Windows) { diff --git a/src/core/sys/windows/oleidl.d b/src/core/sys/windows/oleidl.d index e778e14ce9..044e7d27bb 100644 --- a/src/core/sys/windows/oleidl.d +++ b/src/core/sys/windows/oleidl.d @@ -18,7 +18,7 @@ private import core.sys.windows.basetyps, core.sys.windows.objidl, core.sys.wind private import core.sys.windows.objfwd; // for LPMONIKER private import core.sys.windows.wingdi; // for LPLOGPALETTE -const MK_ALT = 32; +enum MK_ALT = 32; enum BINDSPEED { BINDSPEED_INDEFINITE = 1, diff --git a/src/core/sys/windows/pbt.d b/src/core/sys/windows/pbt.d index 744a16edf8..e6b7814eee 100644 --- a/src/core/sys/windows/pbt.d +++ b/src/core/sys/windows/pbt.d @@ -27,4 +27,4 @@ enum : WPARAM { PBT_APMOEMEVENT // = 11 } -const LPARAM PBTF_APMRESUMEFROMFAILURE = 1; +enum LPARAM PBTF_APMRESUMEFROMFAILURE = 1; diff --git a/src/core/sys/windows/powrprof.d b/src/core/sys/windows/powrprof.d index 1aa878ce2b..59a90c55a5 100644 --- a/src/core/sys/windows/powrprof.d +++ b/src/core/sys/windows/powrprof.d @@ -16,14 +16,14 @@ private import core.sys.windows.ntdef; // FIXME: look up Windows version support -const ULONG +enum ULONG EnableSysTrayBatteryMeter = 1, EnableMultiBatteryDisplay = 2, EnablePasswordLogon = 4, EnableWakeOnRing = 8, EnableVideoDimDisplay = 16; -const UINT NEWSCHEME = -1; +enum UINT NEWSCHEME = -1; struct GLOBAL_MACHINE_POWER_POLICY { ULONG Revision; diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d index cf0f1fc747..c24fe3adb0 100644 --- a/src/core/sys/windows/prsht.d +++ b/src/core/sys/windows/prsht.d @@ -15,7 +15,7 @@ pragma(lib, "comctl32"); private import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.winuser; -const MAXPROPPAGES = 100; +enum MAXPROPPAGES = 100; enum { PSP_DEFAULT = 0x00000000, diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index ff3f9bc9ad..05085400c4 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -16,66 +16,66 @@ private import core.sys.windows.basetyps, core.sys.windows.lmcons, core.sys.wind align(4): -const RAS_MaxDeviceType = 16; -const RAS_MaxPhoneNumber = 128; -const RAS_MaxIpAddress = 15; -const RAS_MaxIpxAddress = 21; -const RAS_MaxEntryName = 256; -const RAS_MaxDeviceName = 128; -const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber; -const RAS_MaxAreaCode = 10; -const RAS_MaxPadType = 32; -const RAS_MaxX25Address = 200; -const RAS_MaxFacilities = 200; -const RAS_MaxUserData = 200; -const RAS_MaxReplyMessage = 1024; - -const RDEOPT_UsePrefixSuffix = 0x00000001; -const RDEOPT_PausedStates = 0x00000002; -const RDEOPT_IgnoreModemSpeaker = 0x00000004; -const RDEOPT_SetModemSpeaker = 0x00000008; -const RDEOPT_IgnoreSoftwareCompression = 0x00000010; -const RDEOPT_SetSoftwareCompression = 0x00000020; -const RDEOPT_DisableConnectedUI = 0x00000040; -const RDEOPT_DisableReconnectUI = 0x00000080; -const RDEOPT_DisableReconnect = 0x00000100; -const RDEOPT_NoUser = 0x00000200; -const RDEOPT_PauseOnScript = 0x00000400; -const RDEOPT_Router = 0x00000800; - -const REN_User = 0x00000000; -const REN_AllUsers = 0x00000001; -const VS_Default = 0; -const VS_PptpOnly = 1; -const VS_PptpFirst = 2; -const VS_L2tpOnly = 3; -const VS_L2tpFirst = 4; - -const RASDIALEVENT = "RasDialEvent"; -const WM_RASDIALEVENT = 0xCCCD; - -const RASEO_UseCountryAndAreaCodes = 0x00000001; -const RASEO_SpecificIpAddr = 0x00000002; -const RASEO_SpecificNameServers = 0x00000004; -const RASEO_IpHeaderCompression = 0x00000008; -const RASEO_RemoteDefaultGateway = 0x00000010; -const RASEO_DisableLcpExtensions = 0x00000020; -const RASEO_TerminalBeforeDial = 0x00000040; -const RASEO_TerminalAfterDial = 0x00000080; -const RASEO_ModemLights = 0x00000100; -const RASEO_SwCompression = 0x00000200; -const RASEO_RequireEncryptedPw = 0x00000400; -const RASEO_RequireMsEncryptedPw = 0x00000800; -const RASEO_RequireDataEncryption = 0x00001000; -const RASEO_NetworkLogon = 0x00002000; -const RASEO_UseLogonCredentials = 0x00004000; -const RASEO_PromoteAlternates = 0x00008000; -const RASNP_NetBEUI = 0x00000001; -const RASNP_Ipx = 0x00000002; -const RASNP_Ip = 0x00000004; -const RASFP_Ppp = 0x00000001; -const RASFP_Slip = 0x00000002; -const RASFP_Ras = 0x00000004; +enum RAS_MaxDeviceType = 16; +enum RAS_MaxPhoneNumber = 128; +enum RAS_MaxIpAddress = 15; +enum RAS_MaxIpxAddress = 21; +enum RAS_MaxEntryName = 256; +enum RAS_MaxDeviceName = 128; +enum RAS_MaxCallbackNumber = RAS_MaxPhoneNumber; +enum RAS_MaxAreaCode = 10; +enum RAS_MaxPadType = 32; +enum RAS_MaxX25Address = 200; +enum RAS_MaxFacilities = 200; +enum RAS_MaxUserData = 200; +enum RAS_MaxReplyMessage = 1024; + +enum RDEOPT_UsePrefixSuffix = 0x00000001; +enum RDEOPT_PausedStates = 0x00000002; +enum RDEOPT_IgnoreModemSpeaker = 0x00000004; +enum RDEOPT_SetModemSpeaker = 0x00000008; +enum RDEOPT_IgnoreSoftwareCompression = 0x00000010; +enum RDEOPT_SetSoftwareCompression = 0x00000020; +enum RDEOPT_DisableConnectedUI = 0x00000040; +enum RDEOPT_DisableReconnectUI = 0x00000080; +enum RDEOPT_DisableReconnect = 0x00000100; +enum RDEOPT_NoUser = 0x00000200; +enum RDEOPT_PauseOnScript = 0x00000400; +enum RDEOPT_Router = 0x00000800; + +enum REN_User = 0x00000000; +enum REN_AllUsers = 0x00000001; +enum VS_Default = 0; +enum VS_PptpOnly = 1; +enum VS_PptpFirst = 2; +enum VS_L2tpOnly = 3; +enum VS_L2tpFirst = 4; + +enum RASDIALEVENT = "RasDialEvent"; +enum WM_RASDIALEVENT = 0xCCCD; + +enum RASEO_UseCountryAndAreaCodes = 0x00000001; +enum RASEO_SpecificIpAddr = 0x00000002; +enum RASEO_SpecificNameServers = 0x00000004; +enum RASEO_IpHeaderCompression = 0x00000008; +enum RASEO_RemoteDefaultGateway = 0x00000010; +enum RASEO_DisableLcpExtensions = 0x00000020; +enum RASEO_TerminalBeforeDial = 0x00000040; +enum RASEO_TerminalAfterDial = 0x00000080; +enum RASEO_ModemLights = 0x00000100; +enum RASEO_SwCompression = 0x00000200; +enum RASEO_RequireEncryptedPw = 0x00000400; +enum RASEO_RequireMsEncryptedPw = 0x00000800; +enum RASEO_RequireDataEncryption = 0x00001000; +enum RASEO_NetworkLogon = 0x00002000; +enum RASEO_UseLogonCredentials = 0x00004000; +enum RASEO_PromoteAlternates = 0x00008000; +enum RASNP_NetBEUI = 0x00000001; +enum RASNP_Ipx = 0x00000002; +enum RASNP_Ip = 0x00000004; +enum RASFP_Ppp = 0x00000001; +enum RASFP_Slip = 0x00000002; +enum RASFP_Ras = 0x00000004; const TCHAR[] RASDT_Modem = "modem", @@ -92,87 +92,87 @@ const TCHAR[] RASDT_Irda = "IRDA", RASDT_Parallel = "PARALLEL"; -const RASET_Phone = 1; -const RASET_Vpn = 2; -const RASET_Direct = 3; -const RASET_Internet = 4; +enum RASET_Phone = 1; +enum RASET_Vpn = 2; +enum RASET_Direct = 3; +enum RASET_Internet = 4; static if (_WIN32_WINNT >= 0x401) { - const RASEO_SecureLocalFiles = 0x00010000; - const RASCN_Connection = 0x00000001; - const RASCN_Disconnection = 0x00000002; - const RASCN_BandwidthAdded = 0x00000004; - const RASCN_BandwidthRemoved = 0x00000008; - const RASEDM_DialAll = 1; - const RASEDM_DialAsNeeded = 2; - const RASIDS_Disabled = 0xffffffff; - const RASIDS_UseGlobalValue = 0; - const RASADFLG_PositionDlg = 0x00000001; - const RASCM_UserName = 0x00000001; - const RASCM_Password = 0x00000002; - const RASCM_Domain = 0x00000004; - const RASADP_DisableConnectionQuery = 0; - const RASADP_LoginSessionDisable = 1; - const RASADP_SavedAddressesLimit = 2; - const RASADP_FailedConnectionTimeout = 3; - const RASADP_ConnectionQueryTimeout = 4; +enum RASEO_SecureLocalFiles = 0x00010000; +enum RASCN_Connection = 0x00000001; +enum RASCN_Disconnection = 0x00000002; +enum RASCN_BandwidthAdded = 0x00000004; +enum RASCN_BandwidthRemoved = 0x00000008; +enum RASEDM_DialAll = 1; +enum RASEDM_DialAsNeeded = 2; +enum RASIDS_Disabled = 0xffffffff; +enum RASIDS_UseGlobalValue = 0; +enum RASADFLG_PositionDlg = 0x00000001; +enum RASCM_UserName = 0x00000001; +enum RASCM_Password = 0x00000002; +enum RASCM_Domain = 0x00000004; +enum RASADP_DisableConnectionQuery = 0; +enum RASADP_LoginSessionDisable = 1; +enum RASADP_SavedAddressesLimit = 2; +enum RASADP_FailedConnectionTimeout = 3; +enum RASADP_ConnectionQueryTimeout = 4; } //static if (_WIN32_WINNT >= 0x500) { - const RDEOPT_CustomDial = 0x00001000; - const RASLCPAP_PAP = 0xC023; - const RASLCPAP_SPAP = 0xC027; - const RASLCPAP_CHAP = 0xC223; - const RASLCPAP_EAP = 0xC227; - const RASLCPAD_CHAP_MD5 = 0x05; - const RASLCPAD_CHAP_MS = 0x80; - const RASLCPAD_CHAP_MSV2 = 0x81; - const RASLCPO_PFC = 0x00000001; - const RASLCPO_ACFC = 0x00000002; - const RASLCPO_SSHF = 0x00000004; - const RASLCPO_DES_56 = 0x00000008; - const RASLCPO_3_DES = 0x00000010; - - const RASCCPCA_MPPC = 0x00000006; - const RASCCPCA_STAC = 0x00000005; - - const RASCCPO_Compression = 0x00000001; - const RASCCPO_HistoryLess = 0x00000002; - const RASCCPO_Encryption56bit = 0x00000010; - const RASCCPO_Encryption40bit = 0x00000020; - const RASCCPO_Encryption128bit = 0x00000040; - - const RASEO_RequireEAP = 0x00020000; - const RASEO_RequirePAP = 0x00040000; - const RASEO_RequireSPAP = 0x00080000; - const RASEO_Custom = 0x00100000; - const RASEO_PreviewPhoneNumber = 0x00200000; - const RASEO_SharedPhoneNumbers = 0x00800000; - const RASEO_PreviewUserPw = 0x01000000; - const RASEO_PreviewDomain = 0x02000000; - const RASEO_ShowDialingProgress = 0x04000000; - const RASEO_RequireCHAP = 0x08000000; - const RASEO_RequireMsCHAP = 0x10000000; - const RASEO_RequireMsCHAP2 = 0x20000000; - const RASEO_RequireW95MSCHAP = 0x40000000; - const RASEO_CustomScript = 0x80000000; - - const RASIPO_VJ = 0x00000001; - const RCD_SingleUser = 0; - const RCD_AllUsers = 0x00000001; - const RCD_Eap = 0x00000002; - const RASEAPF_NonInteractive = 0x00000002; - const RASEAPF_Logon = 0x00000004; - const RASEAPF_Preview = 0x00000008; - const ET_40Bit = 1; - const ET_128Bit = 2; - const ET_None = 0; - const ET_Require = 1; - const ET_RequireMax = 2; - const ET_Optional = 3; +enum RDEOPT_CustomDial = 0x00001000; +enum RASLCPAP_PAP = 0xC023; +enum RASLCPAP_SPAP = 0xC027; +enum RASLCPAP_CHAP = 0xC223; +enum RASLCPAP_EAP = 0xC227; +enum RASLCPAD_CHAP_MD5 = 0x05; +enum RASLCPAD_CHAP_MS = 0x80; +enum RASLCPAD_CHAP_MSV2 = 0x81; +enum RASLCPO_PFC = 0x00000001; +enum RASLCPO_ACFC = 0x00000002; +enum RASLCPO_SSHF = 0x00000004; +enum RASLCPO_DES_56 = 0x00000008; +enum RASLCPO_3_DES = 0x00000010; + +enum RASCCPCA_MPPC = 0x00000006; +enum RASCCPCA_STAC = 0x00000005; + +enum RASCCPO_Compression = 0x00000001; +enum RASCCPO_HistoryLess = 0x00000002; +enum RASCCPO_Encryption56bit = 0x00000010; +enum RASCCPO_Encryption40bit = 0x00000020; +enum RASCCPO_Encryption128bit = 0x00000040; + +enum RASEO_RequireEAP = 0x00020000; +enum RASEO_RequirePAP = 0x00040000; +enum RASEO_RequireSPAP = 0x00080000; +enum RASEO_Custom = 0x00100000; +enum RASEO_PreviewPhoneNumber = 0x00200000; +enum RASEO_SharedPhoneNumbers = 0x00800000; +enum RASEO_PreviewUserPw = 0x01000000; +enum RASEO_PreviewDomain = 0x02000000; +enum RASEO_ShowDialingProgress = 0x04000000; +enum RASEO_RequireCHAP = 0x08000000; +enum RASEO_RequireMsCHAP = 0x10000000; +enum RASEO_RequireMsCHAP2 = 0x20000000; +enum RASEO_RequireW95MSCHAP = 0x40000000; +enum RASEO_CustomScript = 0x80000000; + +enum RASIPO_VJ = 0x00000001; +enum RCD_SingleUser = 0; +enum RCD_AllUsers = 0x00000001; +enum RCD_Eap = 0x00000002; +enum RASEAPF_NonInteractive = 0x00000002; +enum RASEAPF_Logon = 0x00000004; +enum RASEAPF_Preview = 0x00000008; +enum ET_40Bit = 1; +enum ET_128Bit = 2; +enum ET_None = 0; +enum ET_Require = 1; +enum ET_RequireMax = 2; +enum ET_Optional = 3; //} -const RASCS_PAUSED = 0x1000; -const RASCS_DONE = 0x2000; +enum RASCS_PAUSED = 0x1000; +enum RASCS_DONE = 0x2000; enum RASCONNSTATE { RASCS_OpenPort = 0, RASCS_PortOpened, diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d index bf18d50931..0f35327c04 100644 --- a/src/core/sys/windows/rasdlg.d +++ b/src/core/sys/windows/rasdlg.d @@ -25,15 +25,15 @@ enum { RASPBDEVENT_NoUserEdit } -const RASPBDFLAG_PositionDlg = 1; -const RASPBDFLAG_ForceCloseOnDial = 2; -const RASPBDFLAG_NoUser = 16; +enum RASPBDFLAG_PositionDlg = 1; +enum RASPBDFLAG_ForceCloseOnDial = 2; +enum RASPBDFLAG_NoUser = 16; -const RASEDFLAG_PositionDlg = 1; -const RASEDFLAG_NewEntry = 2; -const RASEDFLAG_CloneEntry = 4; +enum RASEDFLAG_PositionDlg = 1; +enum RASEDFLAG_NewEntry = 2; +enum RASEDFLAG_CloneEntry = 4; -const RASDDFLAG_PositionDlg = 1; +enum RASDDFLAG_PositionDlg = 1; align(4): diff --git a/src/core/sys/windows/rassapi.d b/src/core/sys/windows/rassapi.d index 74411fce13..11d5bb4ad9 100644 --- a/src/core/sys/windows/rassapi.d +++ b/src/core/sys/windows/rassapi.d @@ -14,7 +14,7 @@ private import core.sys.windows.lmcons, core.sys.windows.windef; // FIXME: check types of constants -const size_t +enum size_t RASSAPI_MAX_PHONENUMBER_SIZE = 128, RASSAPI_MAX_MEDIA_NAME = 16, RASSAPI_MAX_PORT_NAME = 16, @@ -22,11 +22,11 @@ const size_t RASSAPI_MAX_DEVICETYPE_NAME = 16, RASSAPI_MAX_PARAM_KEY_SIZE = 32; -const RASPRIV_NoCallback = 0x01; -const RASPRIV_AdminSetCallback = 0x02; -const RASPRIV_CallerSetCallback = 0x04; -const RASPRIV_DialinPrivilege = 0x08; -const RASPRIV_CallbackType = 0x07; +enum RASPRIV_NoCallback = 0x01; +enum RASPRIV_AdminSetCallback = 0x02; +enum RASPRIV_CallerSetCallback = 0x04; +enum RASPRIV_DialinPrivilege = 0x08; +enum RASPRIV_CallbackType = 0x07; enum { RAS_MODEM_OPERATIONAL = 1, @@ -54,14 +54,14 @@ enum { MEDIA_ISDN } -const USER_AUTHENTICATED = 0x0001; -const MESSENGER_PRESENT = 0x0002; -const PPP_CLIENT = 0x0004; -const GATEWAY_ACTIVE = 0x0008; -const REMOTE_LISTEN = 0x0010; -const PORT_MULTILINKED = 0x0020; +enum USER_AUTHENTICATED = 0x0001; +enum MESSENGER_PRESENT = 0x0002; +enum PPP_CLIENT = 0x0004; +enum GATEWAY_ACTIVE = 0x0008; +enum REMOTE_LISTEN = 0x0010; +enum PORT_MULTILINKED = 0x0020; -const size_t +enum size_t RAS_IPADDRESSLEN = 15, RAS_IPXADDRESSLEN = 22, RAS_ATADDRESSLEN = 32; diff --git a/src/core/sys/windows/regstr.d b/src/core/sys/windows/regstr.d index 339ca01203..23029647ce 100644 --- a/src/core/sys/windows/regstr.d +++ b/src/core/sys/windows/regstr.d @@ -13,7 +13,7 @@ version (Windows): private import core.sys.windows.windef; -const REGSTR_MAX_VALUE_LENGTH = 256; +enum REGSTR_MAX_VALUE_LENGTH = 256; enum { IT_COMPACT = 0, @@ -22,114 +22,114 @@ enum { IT_CUSTOM // = 3 } -const DOSOPTGF_DEFCLEAN = 1; - -const DOSOPTF_DEFAULT = 0x01; -const DOSOPTF_SUPPORTED = 0x02; -const DOSOPTF_ALWAYSUSE = 0x04; -const DOSOPTF_USESPMODE = 0x08; -const DOSOPTF_PROVIDESUMB = 0x10; -const DOSOPTF_NEEDSETUP = 0x20; -const DOSOPTF_INDOSSTART = 0x40; -const DOSOPTF_MULTIPLE = 0x80; - -const SUF_FIRSTTIME = 0x0001; -const SUF_EXPRESS = 0x0002; -const SUF_BATCHINF = 0x0004; -const SUF_CLEAN = 0x0008; -const SUF_INSETUP = 0x0010; -const SUF_NETSETUP = 0x0020; -const SUF_NETHDBOOT = 0x0040; -const SUF_NETRPLBOOT = 0x0080; -const SUF_SBSCOPYOK = 0x0100; - -const VPDF_DISABLEPWRMGMT = 1; -const VPDF_FORCEAPM10MODE = 2; -const VPDF_SKIPINTELSLCHECK = 4; -const VPDF_DISABLEPWRSTATUSPOLL = 8; - -const PCMCIA_OPT_HAVE_SOCKET = 0x01; -const PCMCIA_OPT_AUTOMEM = 0x04; -const PCMCIA_OPT_NO_SOUND = 0x08; -const PCMCIA_OPT_NO_AUDIO = 0x10; -const PCMCIA_OPT_NO_APMREMOVE = 0x20; - -const PCMCIA_DEF_MEMBEGIN = 0x0C0000; -const PCMCIA_DEF_MEMEND = 0xFFFFFF; -const PCMCIA_DEF_MEMLEN = 0x001000; -const PCMCIA_DEF_MIN_REGION = 0x010000; +enum DOSOPTGF_DEFCLEAN = 1; + +enum DOSOPTF_DEFAULT = 0x01; +enum DOSOPTF_SUPPORTED = 0x02; +enum DOSOPTF_ALWAYSUSE = 0x04; +enum DOSOPTF_USESPMODE = 0x08; +enum DOSOPTF_PROVIDESUMB = 0x10; +enum DOSOPTF_NEEDSETUP = 0x20; +enum DOSOPTF_INDOSSTART = 0x40; +enum DOSOPTF_MULTIPLE = 0x80; + +enum SUF_FIRSTTIME = 0x0001; +enum SUF_EXPRESS = 0x0002; +enum SUF_BATCHINF = 0x0004; +enum SUF_CLEAN = 0x0008; +enum SUF_INSETUP = 0x0010; +enum SUF_NETSETUP = 0x0020; +enum SUF_NETHDBOOT = 0x0040; +enum SUF_NETRPLBOOT = 0x0080; +enum SUF_SBSCOPYOK = 0x0100; + +enum VPDF_DISABLEPWRMGMT = 1; +enum VPDF_FORCEAPM10MODE = 2; +enum VPDF_SKIPINTELSLCHECK = 4; +enum VPDF_DISABLEPWRSTATUSPOLL = 8; + +enum PCMCIA_OPT_HAVE_SOCKET = 0x01; +enum PCMCIA_OPT_AUTOMEM = 0x04; +enum PCMCIA_OPT_NO_SOUND = 0x08; +enum PCMCIA_OPT_NO_AUDIO = 0x10; +enum PCMCIA_OPT_NO_APMREMOVE = 0x20; + +enum PCMCIA_DEF_MEMBEGIN = 0x0C0000; +enum PCMCIA_DEF_MEMEND = 0xFFFFFF; +enum PCMCIA_DEF_MEMLEN = 0x001000; +enum PCMCIA_DEF_MIN_REGION = 0x010000; enum { PCI_OPTIONS_USE_BIOS = 1, PCI_OPTIONS_USE_IRQ_STEERING = 2 } -const PCI_FLAG_NO_VIDEO_IRQ = 0x0001; -const PCI_FLAG_PCMCIA_WANT_IRQ = 0x0002; -const PCI_FLAG_DUAL_IDE = 0x0004; -const PCI_FLAG_NO_ENUM_AT_ALL = 0x0008; -const PCI_FLAG_ENUM_NO_RESOURCE = 0x0010; -const PCI_FLAG_NEED_DWORD_ACCESS = 0x0020; -const PCI_FLAG_SINGLE_FUNCTION = 0x0040; -const PCI_FLAG_ALWAYS_ENABLED = 0x0080; -const PCI_FLAG_IS_IDE = 0x0100; -const PCI_FLAG_IS_VIDEO = 0x0200; -const PCI_FLAG_FAIL_START = 0x0400; - -const size_t REGSTR_VAL_MAX_HCID_LEN = 1024; - -const REGDF_NOTDETIO = 0x00000001; -const REGDF_NOTDETMEM = 0x00000002; -const REGDF_NOTDETIRQ = 0x00000004; -const REGDF_NOTDETDMA = 0x00000008; -const REGDF_NOTDETALL = REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA; -const REGDF_NEEDFULLCONFIG = 0x00000010; -const REGDF_GENFORCEDCONFIG = 0x00000020; -const REGDF_NODETCONFIG = 0x00008000; -const REGDF_CONFLICTIO = 0x00010000; -const REGDF_CONFLICTMEM = 0x00020000; -const REGDF_CONFLICTIRQ = 0x00040000; -const REGDF_CONFLICTDMA = 0x00080000; -const REGDF_CONFLICTALL = REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA; -const REGDF_MAPIRQ2TO9 = 0x00100000; -const REGDF_NOTVERIFIED = 0x80000000; - -const CONFIGFLAG_DISABLED = 0x0001; -const CONFIGFLAG_REMOVED = 0x0002; -const CONFIGFLAG_MANUAL_INSTALL = 0x0004; -const CONFIGFLAG_IGNORE_BOOT_LC = 0x0008; -const CONFIGFLAG_NET_BOOT = 0x0010; -const CONFIGFLAG_REINSTALL = 0x0020; -const CONFIGFLAG_FAILEDINSTALL = 0x0040; -const CONFIGFLAG_CANTSTOPACHILD = 0x0080; -const CONFIGFLAG_OKREMOVEROM = 0x0100; -const CONFIGFLAG_NOREMOVEEXIT = 0x0200; - -const CSCONFIGFLAG_DISABLED = 1; -const CSCONFIGFLAG_DO_NOT_CREATE = 2; -const CSCONFIGFLAG_DO_NOT_START = 4; -const CSCONFIGFLAG_BITS = 7; - -const DMSTATEFLAG_APPLYTOALL = 1; - -const NUM_RESOURCE_MAP = 256; - -const MF_FLAGS_EVEN_IF_NO_RESOURCE = 1; -const MF_FLAGS_NO_CREATE_IF_NO_RESOURCE = 2; -const MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE = 4; -const MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED = 8; - -const EISAFLAG_NO_IO_MERGE = 1; -const EISAFLAG_SLOT_IO_FIRST = 2; - -const EISA_NO_MAX_FUNCTION = 0xFF; - -const NUM_EISA_RANGES = 4; - -const APMMENUSUSPEND_DISABLED = 0; -const APMMENUSUSPEND_ENABLED = 1; -const APMMENUSUSPEND_UNDOCKED = 2; -const APMMENUSUSPEND_NOCHANGE = 128; +enum PCI_FLAG_NO_VIDEO_IRQ = 0x0001; +enum PCI_FLAG_PCMCIA_WANT_IRQ = 0x0002; +enum PCI_FLAG_DUAL_IDE = 0x0004; +enum PCI_FLAG_NO_ENUM_AT_ALL = 0x0008; +enum PCI_FLAG_ENUM_NO_RESOURCE = 0x0010; +enum PCI_FLAG_NEED_DWORD_ACCESS = 0x0020; +enum PCI_FLAG_SINGLE_FUNCTION = 0x0040; +enum PCI_FLAG_ALWAYS_ENABLED = 0x0080; +enum PCI_FLAG_IS_IDE = 0x0100; +enum PCI_FLAG_IS_VIDEO = 0x0200; +enum PCI_FLAG_FAIL_START = 0x0400; + +enum size_t REGSTR_VAL_MAX_HCID_LEN = 1024; + +enum REGDF_NOTDETIO = 0x00000001; +enum REGDF_NOTDETMEM = 0x00000002; +enum REGDF_NOTDETIRQ = 0x00000004; +enum REGDF_NOTDETDMA = 0x00000008; +enum REGDF_NOTDETALL = REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA; +enum REGDF_NEEDFULLCONFIG = 0x00000010; +enum REGDF_GENFORCEDCONFIG = 0x00000020; +enum REGDF_NODETCONFIG = 0x00008000; +enum REGDF_CONFLICTIO = 0x00010000; +enum REGDF_CONFLICTMEM = 0x00020000; +enum REGDF_CONFLICTIRQ = 0x00040000; +enum REGDF_CONFLICTDMA = 0x00080000; +enum REGDF_CONFLICTALL = REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA; +enum REGDF_MAPIRQ2TO9 = 0x00100000; +enum REGDF_NOTVERIFIED = 0x80000000; + +enum CONFIGFLAG_DISABLED = 0x0001; +enum CONFIGFLAG_REMOVED = 0x0002; +enum CONFIGFLAG_MANUAL_INSTALL = 0x0004; +enum CONFIGFLAG_IGNORE_BOOT_LC = 0x0008; +enum CONFIGFLAG_NET_BOOT = 0x0010; +enum CONFIGFLAG_REINSTALL = 0x0020; +enum CONFIGFLAG_FAILEDINSTALL = 0x0040; +enum CONFIGFLAG_CANTSTOPACHILD = 0x0080; +enum CONFIGFLAG_OKREMOVEROM = 0x0100; +enum CONFIGFLAG_NOREMOVEEXIT = 0x0200; + +enum CSCONFIGFLAG_DISABLED = 1; +enum CSCONFIGFLAG_DO_NOT_CREATE = 2; +enum CSCONFIGFLAG_DO_NOT_START = 4; +enum CSCONFIGFLAG_BITS = 7; + +enum DMSTATEFLAG_APPLYTOALL = 1; + +enum NUM_RESOURCE_MAP = 256; + +enum MF_FLAGS_EVEN_IF_NO_RESOURCE = 1; +enum MF_FLAGS_NO_CREATE_IF_NO_RESOURCE = 2; +enum MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE = 4; +enum MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED = 8; + +enum EISAFLAG_NO_IO_MERGE = 1; +enum EISAFLAG_SLOT_IO_FIRST = 2; + +enum EISA_NO_MAX_FUNCTION = 0xFF; + +enum NUM_EISA_RANGES = 4; + +enum APMMENUSUSPEND_DISABLED = 0; +enum APMMENUSUSPEND_ENABLED = 1; +enum APMMENUSUSPEND_UNDOCKED = 2; +enum APMMENUSUSPEND_NOCHANGE = 128; //#ifndef NEC_98 const TCHAR[] @@ -796,11 +796,11 @@ enum { } //#ifndef NEC_98 -const PCIC_DEFAULT_IRQMASK = 0x4EB8; +enum PCIC_DEFAULT_IRQMASK = 0x4EB8; //#else //#define PCIC_DEFAULT_IRQMASK 0x1468 //#endif -const PCIC_DEFAULT_NUMSOCKETS = 0; +enum PCIC_DEFAULT_NUMSOCKETS = 0; struct DSKTLSYSTEMTIME { WORD wYear; diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d index 41264dd13f..a31b13d36b 100644 --- a/src/core/sys/windows/richedit.d +++ b/src/core/sys/windows/richedit.d @@ -17,19 +17,19 @@ private import core.sys.windows.wingdi; // for LF_FACESIZE align(4): version(Unicode) { - const wchar[] RICHEDIT_CLASS = "RichEdit20W"; +const wchar[] RICHEDIT_CLASS = "RichEdit20W"; } else { - const char[] RICHEDIT_CLASS = "RichEdit20A"; +const char[] RICHEDIT_CLASS = "RichEdit20A"; } -const RICHEDIT_CLASS10A = "RICHEDIT"; +enum RICHEDIT_CLASS10A = "RICHEDIT"; const TCHAR[] CF_RTF = "Rich Text Format", CF_RTFNOOBJS = "Rich Text Format Without Objects", CF_RETEXTOBJ = "RichEdit Text and Objects"; -const DWORD +enum DWORD CFM_BOLD = 1, CFM_ITALIC = 2, CFM_UNDERLINE = 4, @@ -44,7 +44,7 @@ const DWORD CFM_SUBSCRIPT = 0x00030000, CFM_SUPERSCRIPT = 0x00030000; -const DWORD +enum DWORD CFE_BOLD = 1, CFE_ITALIC = 2, CFE_UNDERLINE = 4, @@ -54,11 +54,11 @@ const DWORD CFE_SUPERSCRIPT = 0x00020000, CFE_AUTOCOLOR = 0x40000000; -const CFM_EFFECTS = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR +enum CFM_EFFECTS = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK; // flags for EM_SETIMEOPTIONS -const LPARAM +enum LPARAM IMF_FORCENONE = 1, IMF_FORCEENABLE = 2, IMF_FORCEDISABLE = 4, @@ -68,211 +68,211 @@ const LPARAM IMF_FORCEINACTIVE = 128, IMF_FORCEREMEMBER = 256; -const SEL_EMPTY=0; -const SEL_TEXT=1; -const SEL_OBJECT=2; -const SEL_MULTICHAR=4; -const SEL_MULTIOBJECT=8; - -const MAX_TAB_STOPS=32; - -const PFM_ALIGNMENT=8; -const PFM_NUMBERING=32; -const PFM_OFFSET=4; -const PFM_OFFSETINDENT=0x80000000; -const PFM_RIGHTINDENT=2; -const PFM_STARTINDENT=1; -const PFM_TABSTOPS=16; -const PFM_BORDER=2048; -const PFM_LINESPACING=256; -const PFM_NUMBERINGSTART=32768; -const PFM_NUMBERINGSTYLE=8192; -const PFM_NUMBERINGTAB=16384; -const PFM_SHADING=4096; -const PFM_SPACEAFTER=128; -const PFM_SPACEBEFORE=64; -const PFM_STYLE=1024; -const PFM_DONOTHYPHEN=4194304; -const PFM_KEEP=131072; -const PFM_KEEPNEXT=262144; -const PFM_NOLINENUMBER=1048576; -const PFM_NOWIDOWCONTROL=2097152; -const PFM_PAGEBREAKBEFORE=524288; -const PFM_RTLPARA=65536; -const PFM_SIDEBYSIDE=8388608; -const PFM_TABLE=1073741824; -const PFN_BULLET=1; - -const PFE_DONOTHYPHEN=64; -const PFE_KEEP=2; -const PFE_KEEPNEXT=4; -const PFE_NOLINENUMBER=16; -const PFE_NOWIDOWCONTROL=32; -const PFE_PAGEBREAKBEFORE=8; -const PFE_RTLPARA=1; -const PFE_SIDEBYSIDE=128; -const PFE_TABLE=16384; -const PFA_LEFT=1; -const PFA_RIGHT=2; -const PFA_CENTER=3; -const PFA_JUSTIFY=4; -const PFA_FULL_INTERWORD=4; - -const SF_TEXT=1; -const SF_RTF=2; -const SF_RTFNOOBJS=3; -const SF_TEXTIZED=4; -const SF_UNICODE=16; -const SF_USECODEPAGE=32; -const SF_NCRFORNONASCII=64; -const SF_RTFVAL=0x0700; - -const SFF_PWD=0x0800; -const SFF_KEEPDOCINFO=0x1000; -const SFF_PERSISTVIEWSCALE=0x2000; -const SFF_PLAINRTF=0x4000; -const SFF_SELECTION=0x8000; - -const WB_CLASSIFY = 3; -const WB_MOVEWORDLEFT = 4; -const WB_MOVEWORDRIGHT = 5; -const WB_LEFTBREAK = 6; -const WB_RIGHTBREAK = 7; -const WB_MOVEWORDPREV = 4; -const WB_MOVEWORDNEXT = 5; -const WB_PREVBREAK = 6; -const WB_NEXTBREAK = 7; - -const WBF_WORDWRAP = 16; -const WBF_WORDBREAK = 32; -const WBF_OVERFLOW = 64; -const WBF_LEVEL1 = 128; -const WBF_LEVEL2 = 256; -const WBF_CUSTOM = 512; - -const ES_DISABLENOSCROLL = 8192; -const ES_SUNKEN = 16384; -const ES_SAVESEL = 32768; -const ES_EX_NOCALLOLEINIT = 16777216; -const ES_NOIME = 524288; -const ES_NOOLEDRAGDROP = 8; -const ES_SELECTIONBAR = 16777216; -const ES_SELFIME = 262144; -const ES_VERTICAL = 4194304; - -const EM_CANPASTE = WM_USER+50; -const EM_DISPLAYBAND = WM_USER+51; -const EM_EXGETSEL = WM_USER+52; -const EM_EXLIMITTEXT = WM_USER+53; -const EM_EXLINEFROMCHAR = WM_USER+54; -const EM_EXSETSEL = WM_USER+55; -const EM_FINDTEXT = WM_USER+56; -const EM_FORMATRANGE = WM_USER+57; -const EM_GETCHARFORMAT = WM_USER+58; -const EM_GETEVENTMASK = WM_USER+59; -const EM_GETOLEINTERFACE = WM_USER+60; -const EM_GETPARAFORMAT = WM_USER+61; -const EM_GETSELTEXT = WM_USER+62; -const EM_HIDESELECTION = WM_USER+63; -const EM_PASTESPECIAL = WM_USER+64; -const EM_REQUESTRESIZE = WM_USER+65; -const EM_SELECTIONTYPE = WM_USER+66; -const EM_SETBKGNDCOLOR = WM_USER+67; -const EM_SETCHARFORMAT = WM_USER+68; -const EM_SETEVENTMASK = WM_USER+69; -const EM_SETOLECALLBACK = WM_USER+70; -const EM_SETPARAFORMAT = WM_USER+71; -const EM_SETTARGETDEVICE = WM_USER+72; -const EM_STREAMIN = WM_USER+73; -const EM_STREAMOUT = WM_USER+74; -const EM_GETTEXTRANGE = WM_USER+75; -const EM_FINDWORDBREAK = WM_USER+76; -const EM_SETOPTIONS = WM_USER+77; -const EM_GETOPTIONS = WM_USER+78; -const EM_FINDTEXTEX = WM_USER+79; -const EM_GETWORDBREAKPROCEX = WM_USER+80; -const EM_SETWORDBREAKPROCEX = WM_USER+81; +enum SEL_EMPTY=0; +enum SEL_TEXT=1; +enum SEL_OBJECT=2; +enum SEL_MULTICHAR=4; +enum SEL_MULTIOBJECT=8; + +enum MAX_TAB_STOPS=32; + +enum PFM_ALIGNMENT=8; +enum PFM_NUMBERING=32; +enum PFM_OFFSET=4; +enum PFM_OFFSETINDENT=0x80000000; +enum PFM_RIGHTINDENT=2; +enum PFM_STARTINDENT=1; +enum PFM_TABSTOPS=16; +enum PFM_BORDER=2048; +enum PFM_LINESPACING=256; +enum PFM_NUMBERINGSTART=32768; +enum PFM_NUMBERINGSTYLE=8192; +enum PFM_NUMBERINGTAB=16384; +enum PFM_SHADING=4096; +enum PFM_SPACEAFTER=128; +enum PFM_SPACEBEFORE=64; +enum PFM_STYLE=1024; +enum PFM_DONOTHYPHEN=4194304; +enum PFM_KEEP=131072; +enum PFM_KEEPNEXT=262144; +enum PFM_NOLINENUMBER=1048576; +enum PFM_NOWIDOWCONTROL=2097152; +enum PFM_PAGEBREAKBEFORE=524288; +enum PFM_RTLPARA=65536; +enum PFM_SIDEBYSIDE=8388608; +enum PFM_TABLE=1073741824; +enum PFN_BULLET=1; + +enum PFE_DONOTHYPHEN=64; +enum PFE_KEEP=2; +enum PFE_KEEPNEXT=4; +enum PFE_NOLINENUMBER=16; +enum PFE_NOWIDOWCONTROL=32; +enum PFE_PAGEBREAKBEFORE=8; +enum PFE_RTLPARA=1; +enum PFE_SIDEBYSIDE=128; +enum PFE_TABLE=16384; +enum PFA_LEFT=1; +enum PFA_RIGHT=2; +enum PFA_CENTER=3; +enum PFA_JUSTIFY=4; +enum PFA_FULL_INTERWORD=4; + +enum SF_TEXT=1; +enum SF_RTF=2; +enum SF_RTFNOOBJS=3; +enum SF_TEXTIZED=4; +enum SF_UNICODE=16; +enum SF_USECODEPAGE=32; +enum SF_NCRFORNONASCII=64; +enum SF_RTFVAL=0x0700; + +enum SFF_PWD=0x0800; +enum SFF_KEEPDOCINFO=0x1000; +enum SFF_PERSISTVIEWSCALE=0x2000; +enum SFF_PLAINRTF=0x4000; +enum SFF_SELECTION=0x8000; + +enum WB_CLASSIFY = 3; +enum WB_MOVEWORDLEFT = 4; +enum WB_MOVEWORDRIGHT = 5; +enum WB_LEFTBREAK = 6; +enum WB_RIGHTBREAK = 7; +enum WB_MOVEWORDPREV = 4; +enum WB_MOVEWORDNEXT = 5; +enum WB_PREVBREAK = 6; +enum WB_NEXTBREAK = 7; + +enum WBF_WORDWRAP = 16; +enum WBF_WORDBREAK = 32; +enum WBF_OVERFLOW = 64; +enum WBF_LEVEL1 = 128; +enum WBF_LEVEL2 = 256; +enum WBF_CUSTOM = 512; + +enum ES_DISABLENOSCROLL = 8192; +enum ES_SUNKEN = 16384; +enum ES_SAVESEL = 32768; +enum ES_EX_NOCALLOLEINIT = 16777216; +enum ES_NOIME = 524288; +enum ES_NOOLEDRAGDROP = 8; +enum ES_SELECTIONBAR = 16777216; +enum ES_SELFIME = 262144; +enum ES_VERTICAL = 4194304; + +enum EM_CANPASTE = WM_USER+50; +enum EM_DISPLAYBAND = WM_USER+51; +enum EM_EXGETSEL = WM_USER+52; +enum EM_EXLIMITTEXT = WM_USER+53; +enum EM_EXLINEFROMCHAR = WM_USER+54; +enum EM_EXSETSEL = WM_USER+55; +enum EM_FINDTEXT = WM_USER+56; +enum EM_FORMATRANGE = WM_USER+57; +enum EM_GETCHARFORMAT = WM_USER+58; +enum EM_GETEVENTMASK = WM_USER+59; +enum EM_GETOLEINTERFACE = WM_USER+60; +enum EM_GETPARAFORMAT = WM_USER+61; +enum EM_GETSELTEXT = WM_USER+62; +enum EM_HIDESELECTION = WM_USER+63; +enum EM_PASTESPECIAL = WM_USER+64; +enum EM_REQUESTRESIZE = WM_USER+65; +enum EM_SELECTIONTYPE = WM_USER+66; +enum EM_SETBKGNDCOLOR = WM_USER+67; +enum EM_SETCHARFORMAT = WM_USER+68; +enum EM_SETEVENTMASK = WM_USER+69; +enum EM_SETOLECALLBACK = WM_USER+70; +enum EM_SETPARAFORMAT = WM_USER+71; +enum EM_SETTARGETDEVICE = WM_USER+72; +enum EM_STREAMIN = WM_USER+73; +enum EM_STREAMOUT = WM_USER+74; +enum EM_GETTEXTRANGE = WM_USER+75; +enum EM_FINDWORDBREAK = WM_USER+76; +enum EM_SETOPTIONS = WM_USER+77; +enum EM_GETOPTIONS = WM_USER+78; +enum EM_FINDTEXTEX = WM_USER+79; +enum EM_GETWORDBREAKPROCEX = WM_USER+80; +enum EM_SETWORDBREAKPROCEX = WM_USER+81; /* RichEdit 2.0 messages */ -const EM_SETUNDOLIMIT = WM_USER+82; -const EM_REDO = WM_USER+84; -const EM_CANREDO = WM_USER+85; -const EM_GETUNDONAME = WM_USER+86; -const EM_GETREDONAME = WM_USER+87; -const EM_STOPGROUPTYPING = WM_USER+88; -const EM_SETTEXTMODE = WM_USER+89; -const EM_GETTEXTMODE = WM_USER+90; -const EM_AUTOURLDETECT = WM_USER+91; -const EM_GETAUTOURLDETECT = WM_USER + 92; -const EM_SETPALETTE = WM_USER + 93; -const EM_GETTEXTEX = WM_USER+94; -const EM_GETTEXTLENGTHEX = WM_USER+95; -const EM_SHOWSCROLLBAR = WM_USER+96; -const EM_SETTEXTEX = WM_USER + 97; -const EM_SETPUNCTUATION = WM_USER + 100; -const EM_GETPUNCTUATION = WM_USER + 101; -const EM_SETWORDWRAPMODE = WM_USER + 102; -const EM_GETWORDWRAPMODE = WM_USER + 103; -const EM_SETIMECOLOR = WM_USER + 104; -const EM_GETIMECOLOR = WM_USER + 105; -const EM_SETIMEOPTIONS = WM_USER + 106; -const EM_GETIMEOPTIONS = WM_USER + 107; -const EM_SETLANGOPTIONS = WM_USER+120; -const EM_GETLANGOPTIONS = WM_USER+121; -const EM_GETIMECOMPMODE = WM_USER+122; -const EM_FINDTEXTW = WM_USER + 123; -const EM_FINDTEXTEXW = WM_USER + 124; -const EM_RECONVERSION = WM_USER + 125; -const EM_SETBIDIOPTIONS = WM_USER + 200; -const EM_GETBIDIOPTIONS = WM_USER + 201; -const EM_SETTYPOGRAPHYOPTIONS = WM_USER+202; -const EM_GETTYPOGRAPHYOPTIONS = WM_USER+203; -const EM_SETEDITSTYLE = WM_USER + 204; -const EM_GETEDITSTYLE = WM_USER + 205; -const EM_GETSCROLLPOS = WM_USER+221; -const EM_SETSCROLLPOS = WM_USER+222; -const EM_SETFONTSIZE = WM_USER+223; -const EM_GETZOOM = WM_USER+224; -const EM_SETZOOM = WM_USER+225; - -const EN_MSGFILTER = 1792; -const EN_REQUESTRESIZE = 1793; -const EN_SELCHANGE = 1794; -const EN_DROPFILES = 1795; -const EN_PROTECTED = 1796; -const EN_CORRECTTEXT = 1797; -const EN_STOPNOUNDO = 1798; -const EN_IMECHANGE = 1799; -const EN_SAVECLIPBOARD = 1800; -const EN_OLEOPFAILED = 1801; -const EN_LINK = 1803; - -const ENM_NONE = 0; -const ENM_CHANGE = 1; -const ENM_UPDATE = 2; -const ENM_SCROLL = 4; -const ENM_SCROLLEVENTS = 8; -const ENM_DRAGDROPDONE = 16; -const ENM_KEYEVENTS = 65536; -const ENM_MOUSEEVENTS = 131072; -const ENM_REQUESTRESIZE = 262144; -const ENM_SELCHANGE = 524288; -const ENM_DROPFILES = 1048576; -const ENM_PROTECTED = 2097152; -const ENM_CORRECTTEXT = 4194304; -const ENM_IMECHANGE = 8388608; -const ENM_LANGCHANGE = 16777216; -const ENM_OBJECTPOSITIONS = 33554432; -const ENM_LINK = 67108864; - -const ECO_AUTOWORDSELECTION=1; -const ECO_AUTOVSCROLL=64; -const ECO_AUTOHSCROLL=128; -const ECO_NOHIDESEL=256; -const ECO_READONLY=2048; -const ECO_WANTRETURN=4096; -const ECO_SAVESEL=0x8000; -const ECO_SELECTIONBAR=0x1000000; -const ECO_VERTICAL=0x400000; +enum EM_SETUNDOLIMIT = WM_USER+82; +enum EM_REDO = WM_USER+84; +enum EM_CANREDO = WM_USER+85; +enum EM_GETUNDONAME = WM_USER+86; +enum EM_GETREDONAME = WM_USER+87; +enum EM_STOPGROUPTYPING = WM_USER+88; +enum EM_SETTEXTMODE = WM_USER+89; +enum EM_GETTEXTMODE = WM_USER+90; +enum EM_AUTOURLDETECT = WM_USER+91; +enum EM_GETAUTOURLDETECT = WM_USER + 92; +enum EM_SETPALETTE = WM_USER + 93; +enum EM_GETTEXTEX = WM_USER+94; +enum EM_GETTEXTLENGTHEX = WM_USER+95; +enum EM_SHOWSCROLLBAR = WM_USER+96; +enum EM_SETTEXTEX = WM_USER + 97; +enum EM_SETPUNCTUATION = WM_USER + 100; +enum EM_GETPUNCTUATION = WM_USER + 101; +enum EM_SETWORDWRAPMODE = WM_USER + 102; +enum EM_GETWORDWRAPMODE = WM_USER + 103; +enum EM_SETIMECOLOR = WM_USER + 104; +enum EM_GETIMECOLOR = WM_USER + 105; +enum EM_SETIMEOPTIONS = WM_USER + 106; +enum EM_GETIMEOPTIONS = WM_USER + 107; +enum EM_SETLANGOPTIONS = WM_USER+120; +enum EM_GETLANGOPTIONS = WM_USER+121; +enum EM_GETIMECOMPMODE = WM_USER+122; +enum EM_FINDTEXTW = WM_USER + 123; +enum EM_FINDTEXTEXW = WM_USER + 124; +enum EM_RECONVERSION = WM_USER + 125; +enum EM_SETBIDIOPTIONS = WM_USER + 200; +enum EM_GETBIDIOPTIONS = WM_USER + 201; +enum EM_SETTYPOGRAPHYOPTIONS = WM_USER+202; +enum EM_GETTYPOGRAPHYOPTIONS = WM_USER+203; +enum EM_SETEDITSTYLE = WM_USER + 204; +enum EM_GETEDITSTYLE = WM_USER + 205; +enum EM_GETSCROLLPOS = WM_USER+221; +enum EM_SETSCROLLPOS = WM_USER+222; +enum EM_SETFONTSIZE = WM_USER+223; +enum EM_GETZOOM = WM_USER+224; +enum EM_SETZOOM = WM_USER+225; + +enum EN_MSGFILTER = 1792; +enum EN_REQUESTRESIZE = 1793; +enum EN_SELCHANGE = 1794; +enum EN_DROPFILES = 1795; +enum EN_PROTECTED = 1796; +enum EN_CORRECTTEXT = 1797; +enum EN_STOPNOUNDO = 1798; +enum EN_IMECHANGE = 1799; +enum EN_SAVECLIPBOARD = 1800; +enum EN_OLEOPFAILED = 1801; +enum EN_LINK = 1803; + +enum ENM_NONE = 0; +enum ENM_CHANGE = 1; +enum ENM_UPDATE = 2; +enum ENM_SCROLL = 4; +enum ENM_SCROLLEVENTS = 8; +enum ENM_DRAGDROPDONE = 16; +enum ENM_KEYEVENTS = 65536; +enum ENM_MOUSEEVENTS = 131072; +enum ENM_REQUESTRESIZE = 262144; +enum ENM_SELCHANGE = 524288; +enum ENM_DROPFILES = 1048576; +enum ENM_PROTECTED = 2097152; +enum ENM_CORRECTTEXT = 4194304; +enum ENM_IMECHANGE = 8388608; +enum ENM_LANGCHANGE = 16777216; +enum ENM_OBJECTPOSITIONS = 33554432; +enum ENM_LINK = 67108864; + +enum ECO_AUTOWORDSELECTION=1; +enum ECO_AUTOVSCROLL=64; +enum ECO_AUTOHSCROLL=128; +enum ECO_NOHIDESEL=256; +enum ECO_READONLY=2048; +enum ECO_WANTRETURN=4096; +enum ECO_SAVESEL=0x8000; +enum ECO_SELECTIONBAR=0x1000000; +enum ECO_VERTICAL=0x400000; enum { ECOOP_SET = 1, @@ -281,33 +281,33 @@ enum { ECOOP_XOR } -const SCF_DEFAULT = 0; -const SCF_SELECTION = 1; -const SCF_WORD = 2; -const SCF_ALL = 4; -const SCF_USEUIRULES = 8; +enum SCF_DEFAULT = 0; +enum SCF_SELECTION = 1; +enum SCF_WORD = 2; +enum SCF_ALL = 4; +enum SCF_USEUIRULES = 8; alias DWORD TEXTMODE; -const TM_PLAINTEXT=1; -const TM_RICHTEXT=2; -const TM_SINGLELEVELUNDO=4; -const TM_MULTILEVELUNDO=8; -const TM_SINGLECODEPAGE=16; -const TM_MULTICODEPAGE=32; +enum TM_PLAINTEXT=1; +enum TM_RICHTEXT=2; +enum TM_SINGLELEVELUNDO=4; +enum TM_MULTILEVELUNDO=8; +enum TM_SINGLECODEPAGE=16; +enum TM_MULTICODEPAGE=32; -const GT_DEFAULT=0; -const GT_USECRLF=1; +enum GT_DEFAULT=0; +enum GT_USECRLF=1; -const yHeightCharPtsMost=1638; -const lDefaultTab=720; +enum yHeightCharPtsMost=1638; +enum lDefaultTab=720; alias DWORD UNDONAMEID; -const UID_UNKNOWN = 0; -const UID_TYPING = 1; -const UID_DELETE = 2; -const UID_DRAGDROP = 3; -const UID_CUT = 4; -const UID_PASTE = 5; +enum UID_UNKNOWN = 0; +enum UID_TYPING = 1; +enum UID_DELETE = 2; +enum UID_DRAGDROP = 3; +enum UID_CUT = 4; +enum UID_PASTE = 5; struct CHARFORMATA { UINT cbSize = this.sizeof; @@ -561,16 +561,16 @@ alias LONG function(char*,LONG,BYTE,INT) EDITWORDBREAKPROCEX; } /* Defines for EM_SETTYPOGRAPHYOPTIONS */ -const TO_ADVANCEDTYPOGRAPHY = 1; -const TO_SIMPLELINEBREAK = 2; +enum TO_ADVANCEDTYPOGRAPHY = 1; +enum TO_SIMPLELINEBREAK = 2; /* Defines for GETTEXTLENGTHEX */ -const GTL_DEFAULT = 0; -const GTL_USECRLF = 1; -const GTL_PRECISE = 2; -const GTL_CLOSE = 4; -const GTL_NUMCHARS = 8; -const GTL_NUMBYTES = 16; +enum GTL_DEFAULT = 0; +enum GTL_USECRLF = 1; +enum GTL_PRECISE = 2; +enum GTL_CLOSE = 4; +enum GTL_NUMCHARS = 8; +enum GTL_NUMBYTES = 16; struct GETTEXTLENGTHEX { DWORD flags; diff --git a/src/core/sys/windows/richole.d b/src/core/sys/windows/richole.d index cbe30c9388..83933149d3 100644 --- a/src/core/sys/windows/richole.d +++ b/src/core/sys/windows/richole.d @@ -15,7 +15,7 @@ private import core.sys.windows.richedit; // for CHARRANGE align(4): -const ULONG +enum ULONG REO_GETOBJ_NO_INTERFACES = 0, REO_GETOBJ_POLEOBJ = 1, REO_GETOBJ_PSTG = 2, diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d index 3f9fde2b02..3f7e2a4cb4 100644 --- a/src/core/sys/windows/rpcdce.d +++ b/src/core/sys/windows/rpcdce.d @@ -32,12 +32,12 @@ enum : uint { RPC_C_BINDING_INFINITE_TIMEOUT = 10 } -const RPC_C_CANCEL_INFINITE_TIMEOUT= -1; -const RPC_C_LISTEN_MAX_CALLS_DEFAULT=1234; -const RPC_C_PROTSEQ_MAX_REQS_DEFAULT=10; -const RPC_C_BIND_TO_ALL_NICS=1; -const RPC_C_USE_INTERNET_PORT=1; -const RPC_C_USE_INTRANET_PORT=2; +enum RPC_C_CANCEL_INFINITE_TIMEOUT= -1; +enum RPC_C_LISTEN_MAX_CALLS_DEFAULT=1234; +enum RPC_C_PROTSEQ_MAX_REQS_DEFAULT=10; +enum RPC_C_BIND_TO_ALL_NICS=1; +enum RPC_C_USE_INTERNET_PORT=1; +enum RPC_C_USE_INTRANET_PORT=2; // for RPC_STATS_VECTOR, used by RpcMgmyInqStats enum : uint { @@ -47,13 +47,13 @@ enum : uint { RPC_C_STATS_PKTS_OUT } -const RPC_IF_AUTOLISTEN=0x0001; -const RPC_IF_OLE=2; -const RPC_C_MGMT_INQ_IF_IDS=0; -const RPC_C_MGMT_INQ_PRINC_NAME=1; -const RPC_C_MGMT_INQ_STATS=2; -const RPC_C_MGMT_IS_SERVER_LISTEN=3; -const RPC_C_MGMT_STOP_SERVER_LISTEN=4; +enum RPC_IF_AUTOLISTEN=0x0001; +enum RPC_IF_OLE=2; +enum RPC_C_MGMT_INQ_IF_IDS=0; +enum RPC_C_MGMT_INQ_PRINC_NAME=1; +enum RPC_C_MGMT_INQ_STATS=2; +enum RPC_C_MGMT_IS_SERVER_LISTEN=3; +enum RPC_C_MGMT_STOP_SERVER_LISTEN=4; // Inquiry Type for RpcMgmtEpEltInqBegin() enum : uint { @@ -72,47 +72,47 @@ enum : uint { RPC_C_VERS_UPTO } -const DCE_C_ERROR_STRING_LEN=256; -const RPC_C_PARM_MAX_PACKET_LENGTH=1; -const RPC_C_PARM_BUFFER_LENGTH=2; -const RPC_C_AUTHN_LEVEL_DEFAULT=0; -const RPC_C_AUTHN_LEVEL_NONE=1; -const RPC_C_AUTHN_LEVEL_CONNECT=2; -const RPC_C_AUTHN_LEVEL_CALL=3; -const RPC_C_AUTHN_LEVEL_PKT=4; -const RPC_C_AUTHN_LEVEL_PKT_INTEGRITY=5; -const RPC_C_AUTHN_LEVEL_PKT_PRIVACY=6; -const RPC_C_IMP_LEVEL_ANONYMOUS=1; -const RPC_C_IMP_LEVEL_IDENTIFY=2; -const RPC_C_IMP_LEVEL_IMPERSONATE=3; -const RPC_C_IMP_LEVEL_DELEGATE=4; -const RPC_C_QOS_IDENTITY_STATIC=0; -const RPC_C_QOS_IDENTITY_DYNAMIC=1; -const RPC_C_QOS_CAPABILITIES_DEFAULT=0; -const RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH=1; +enum DCE_C_ERROR_STRING_LEN=256; +enum RPC_C_PARM_MAX_PACKET_LENGTH=1; +enum RPC_C_PARM_BUFFER_LENGTH=2; +enum RPC_C_AUTHN_LEVEL_DEFAULT=0; +enum RPC_C_AUTHN_LEVEL_NONE=1; +enum RPC_C_AUTHN_LEVEL_CONNECT=2; +enum RPC_C_AUTHN_LEVEL_CALL=3; +enum RPC_C_AUTHN_LEVEL_PKT=4; +enum RPC_C_AUTHN_LEVEL_PKT_INTEGRITY=5; +enum RPC_C_AUTHN_LEVEL_PKT_PRIVACY=6; +enum RPC_C_IMP_LEVEL_ANONYMOUS=1; +enum RPC_C_IMP_LEVEL_IDENTIFY=2; +enum RPC_C_IMP_LEVEL_IMPERSONATE=3; +enum RPC_C_IMP_LEVEL_DELEGATE=4; +enum RPC_C_QOS_IDENTITY_STATIC=0; +enum RPC_C_QOS_IDENTITY_DYNAMIC=1; +enum RPC_C_QOS_CAPABILITIES_DEFAULT=0; +enum RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH=1; // These enums were buggy in MinGW ! -const RPC_C_PROTECT_LEVEL_DEFAULT = RPC_C_AUTHN_LEVEL_DEFAULT; -const RPC_C_PROTECT_LEVEL_NONE = RPC_C_AUTHN_LEVEL_NONE; -const RPC_C_PROTECT_LEVEL_CONNECT = RPC_C_AUTHN_LEVEL_CONNECT; -const RPC_C_PROTECT_LEVEL_CALL = RPC_C_AUTHN_LEVEL_CALL; -const RPC_C_PROTECT_LEVEL_PKT = RPC_C_AUTHN_LEVEL_PKT; -const RPC_C_PROTECT_LEVEL_PKT_INTEGRITY = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY; -const RPC_C_PROTECT_LEVEL_PKT_PRIVACY = RPC_C_AUTHN_LEVEL_PKT_PRIVACY; - -const RPC_C_AUTHN_NONE=0; -const RPC_C_AUTHN_DCE_PRIVATE=1; -const RPC_C_AUTHN_DCE_PUBLIC=2; -const RPC_C_AUTHN_DEC_PUBLIC=4; -const RPC_C_AUTHN_WINNT=10; -const RPC_C_AUTHN_DEFAULT=0xFFFFFFFF; +enum RPC_C_PROTECT_LEVEL_DEFAULT = RPC_C_AUTHN_LEVEL_DEFAULT; +enum RPC_C_PROTECT_LEVEL_NONE = RPC_C_AUTHN_LEVEL_NONE; +enum RPC_C_PROTECT_LEVEL_CONNECT = RPC_C_AUTHN_LEVEL_CONNECT; +enum RPC_C_PROTECT_LEVEL_CALL = RPC_C_AUTHN_LEVEL_CALL; +enum RPC_C_PROTECT_LEVEL_PKT = RPC_C_AUTHN_LEVEL_PKT; +enum RPC_C_PROTECT_LEVEL_PKT_INTEGRITY = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY; +enum RPC_C_PROTECT_LEVEL_PKT_PRIVACY = RPC_C_AUTHN_LEVEL_PKT_PRIVACY; + +enum RPC_C_AUTHN_NONE=0; +enum RPC_C_AUTHN_DCE_PRIVATE=1; +enum RPC_C_AUTHN_DCE_PUBLIC=2; +enum RPC_C_AUTHN_DEC_PUBLIC=4; +enum RPC_C_AUTHN_WINNT=10; +enum RPC_C_AUTHN_DEFAULT=0xFFFFFFFF; //const RPC_C_SECURITY_QOS_VERSION=L; // FIXME(MinGW): This is nonsense! -const SEC_WINNT_AUTH_IDENTITY_ANSI=0x1; -const SEC_WINNT_AUTH_IDENTITY_UNICODE=0x2; -const RPC_C_AUTHZ_NONE=0; -const RPC_C_AUTHZ_NAME=1; -const RPC_C_AUTHZ_DCE=2; -const RPC_C_AUTHZ_DEFAULT=0xFFFFFFFF; +enum SEC_WINNT_AUTH_IDENTITY_ANSI=0x1; +enum SEC_WINNT_AUTH_IDENTITY_UNICODE=0x2; +enum RPC_C_AUTHZ_NONE=0; +enum RPC_C_AUTHZ_NAME=1; +enum RPC_C_AUTHZ_DCE=2; +enum RPC_C_AUTHZ_DEFAULT=0xFFFFFFFF; alias I_RPC_HANDLE RPC_BINDING_HANDLE; alias RPC_BINDING_HANDLE handle_t; diff --git a/src/core/sys/windows/rpcdce2.d b/src/core/sys/windows/rpcdce2.d index 664bb6135a..1d7312adf7 100644 --- a/src/core/sys/windows/rpcdce2.d +++ b/src/core/sys/windows/rpcdce2.d @@ -32,7 +32,7 @@ enum { RPC_C_VERS_UPTO } -const size_t DCE_C_ERROR_STRING_LEN = 256; +enum size_t DCE_C_ERROR_STRING_LEN = 256; enum { RPC_C_MGMT_INQ_IF_IDS, diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d index 5ae077feaf..90e7c11aac 100644 --- a/src/core/sys/windows/rpcdcep.d +++ b/src/core/sys/windows/rpcdcep.d @@ -18,18 +18,18 @@ private import core.sys.windows.windef; mixin DECLARE_HANDLE!("I_RPC_HANDLE"); alias long RPC_STATUS; -const RPC_NCA_FLAGS_DEFAULT=0; -const RPC_NCA_FLAGS_IDEMPOTENT=1; -const RPC_NCA_FLAGS_BROADCAST=2; -const RPC_NCA_FLAGS_MAYBE=4; -const RPCFLG_ASYNCHRONOUS=0x40000000; -const RPCFLG_INPUT_SYNCHRONOUS=0x20000000; -const RPC_FLAGS_VALID_BIT=0x8000; - -const TRANSPORT_TYPE_CN=1; -const TRANSPORT_TYPE_DG=2; -const TRANSPORT_TYPE_LPC=4; -const TRANSPORT_TYPE_WMSG=8; +enum RPC_NCA_FLAGS_DEFAULT=0; +enum RPC_NCA_FLAGS_IDEMPOTENT=1; +enum RPC_NCA_FLAGS_BROADCAST=2; +enum RPC_NCA_FLAGS_MAYBE=4; +enum RPCFLG_ASYNCHRONOUS=0x40000000; +enum RPCFLG_INPUT_SYNCHRONOUS=0x20000000; +enum RPC_FLAGS_VALID_BIT=0x8000; + +enum TRANSPORT_TYPE_CN=1; +enum TRANSPORT_TYPE_DG=2; +enum TRANSPORT_TYPE_LPC=4; +enum TRANSPORT_TYPE_WMSG=8; struct RPC_VERSION { ushort MajorVersion; @@ -81,7 +81,7 @@ struct RPC_SERVER_INTERFACE { uint RpcProtseqEndpointCount; PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; void* DefaultManagerEpv; - const(void)* InterpreterInfo; +const(void)* InterpreterInfo; } alias RPC_SERVER_INTERFACE* PRPC_SERVER_INTERFACE; @@ -93,7 +93,7 @@ struct RPC_CLIENT_INTERFACE { uint RpcProtseqEndpointCount; PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; uint Reserved; - const(void)* InterpreterInfo; +const(void)* InterpreterInfo; } alias RPC_CLIENT_INTERFACE* PRPC_CLIENT_INTERFACE; diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index 9bc2933f91..0ab2159b8b 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -16,7 +16,7 @@ pragma(lib, "rpcrt4"); // TODO: Bitfields in MIDL_STUB_MESSAGE. // Macros need to be converted. -const __RPCNDR_H_VERSION__= 450; +enum __RPCNDR_H_VERSION__= 450; import core.sys.windows.rpcnsip; private import core.sys.windows.rpc, core.sys.windows.rpcdce, core.sys.windows.unknwn, core.sys.windows.windef; @@ -25,7 +25,7 @@ private import core.sys.windows.basetyps; extern (Windows): -const uint NDR_CHAR_REP_MASK = 0xF, +enum uint NDR_CHAR_REP_MASK = 0xF, NDR_INT_REP_MASK = 0xF0, NDR_FLOAT_REP_MASK = 0xFF00, NDR_LITTLE_ENDIAN = 0x10, @@ -44,7 +44,7 @@ alias long hyper; alias ulong MIDL_uhyper; alias char small; -const cbNDRContext=20; +enum cbNDRContext=20; //MACRO #define NDRSContextValue(hContext) (&(hContext)->userContext) //MACRO #define byte_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } @@ -189,7 +189,7 @@ struct MIDL_STUB_MESSAGE { ubyte * pPresentedType; ubyte * pTransmitType; handle_t SavedHandle; - const(_MIDL_STUB_DESC)* StubDesc; +const(_MIDL_STUB_DESC)* StubDesc; _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; uint FullPtrRefId; int fCheckBounds; @@ -293,20 +293,20 @@ struct MIDL_STUB_DESC { PGENERIC_BINDING_INFO pGenericBindingInfo; } _IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO; - const(NDR_RUNDOWN)* apfnNdrRundownRoutines; - const(GENERIC_BINDING_ROUTINE_PAIR)* aGenericBindingRoutinePairs; - const(EXPR_EVAL)* apfnExprEval; - const(XMIT_ROUTINE_QUINTUPLE)* aXmitQuintuple; - const(char)* *pFormatTypes; +const(NDR_RUNDOWN)* apfnNdrRundownRoutines; +const(GENERIC_BINDING_ROUTINE_PAIR)* aGenericBindingRoutinePairs; +const(EXPR_EVAL)* apfnExprEval; +const(XMIT_ROUTINE_QUINTUPLE)* aXmitQuintuple; +const(char)* *pFormatTypes; int fCheckBounds; uint Version; MALLOC_FREE_STRUCT *pMallocFreeStruct; int MIDLVersion; - const(COMM_FAULT_OFFSETS)* CommFaultOffsets; - const(USER_MARSHAL_ROUTINE_QUADRUPLE)* aUserMarshalQuadruple; - const(NDR_NOTIFY_ROUTINE)* NotifyRoutineTable; +const(COMM_FAULT_OFFSETS)* CommFaultOffsets; +const(USER_MARSHAL_ROUTINE_QUADRUPLE)* aUserMarshalQuadruple; +const(NDR_NOTIFY_ROUTINE)* NotifyRoutineTable; ULONG_PTR mFlags; - const(NDR_CS_ROUTINES)* CsRoutineTables; +const(NDR_CS_ROUTINES)* CsRoutineTables; void *Reserved4; ULONG_PTR Reserved5; } @@ -321,17 +321,17 @@ struct MIDL_FORMAT_STRING { struct MIDL_SERVER_INFO { PMIDL_STUB_DESC pStubDesc; - const(SERVER_ROUTINE)* DispatchTable; +const(SERVER_ROUTINE)* DispatchTable; PFORMAT_STRING ProcString; - const(ushort)* FmtStringOffset; - const(STUB_THUNK)* ThunkTable; +const(ushort)* FmtStringOffset; +const(STUB_THUNK)* ThunkTable; } alias MIDL_SERVER_INFO * PMIDL_SERVER_INFO; struct MIDL_STUBLESS_PROXY_INFO { PMIDL_STUB_DESC pStubDesc; PFORMAT_STRING ProcFormatString; - const(ushort)* FormatStringOffset; +const(ushort)* FormatStringOffset; } alias MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO; diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d index 838e11f9c6..ae7520940a 100644 --- a/src/core/sys/windows/rpcnsi.d +++ b/src/core/sys/windows/rpcnsi.d @@ -20,14 +20,14 @@ private import core.sys.windows.windef; // for HANDLE mixin DECLARE_HANDLE!("RPC_NS_HANDLE"); -const RPC_C_NS_SYNTAX_DEFAULT=0; -const RPC_C_NS_SYNTAX_DCE=3; -const RPC_C_PROFILE_DEFAULT_ELT=0; -const RPC_C_PROFILE_ALL_ELT=1; -const RPC_C_PROFILE_MATCH_BY_IF=2; -const RPC_C_PROFILE_MATCH_BY_MBR=3; -const RPC_C_PROFILE_MATCH_BY_BOTH=4; -const RPC_C_NS_DEFAULT_EXP_AGE=-1; +enum RPC_C_NS_SYNTAX_DEFAULT=0; +enum RPC_C_NS_SYNTAX_DCE=3; +enum RPC_C_PROFILE_DEFAULT_ELT=0; +enum RPC_C_PROFILE_ALL_ELT=1; +enum RPC_C_PROFILE_MATCH_BY_IF=2; +enum RPC_C_PROFILE_MATCH_BY_MBR=3; +enum RPC_C_PROFILE_MATCH_BY_BOTH=4; +enum RPC_C_NS_DEFAULT_EXP_AGE=-1; extern (Windows) { RPC_STATUS RpcNsBindingExportA(uint, ubyte*, RPC_IF_HANDLE, diff --git a/src/core/sys/windows/schannel.d b/src/core/sys/windows/schannel.d index 1ee7653451..c7622387a9 100644 --- a/src/core/sys/windows/schannel.d +++ b/src/core/sys/windows/schannel.d @@ -13,8 +13,8 @@ version (Windows): import core.sys.windows.wincrypt; private import core.sys.windows.windef; -const DWORD SCHANNEL_CRED_VERSION = 4; -const SCHANNEL_SHUTDOWN = 1; +enum DWORD SCHANNEL_CRED_VERSION = 4; +enum SCHANNEL_SHUTDOWN = 1; /* Comment from MinGW ? Do these belong here or in wincrypt.h */ @@ -23,7 +23,7 @@ enum : DWORD { AUTHTYPE_SERVER = 2 } -const DWORD +enum DWORD SP_PROT_PCT1_SERVER = 0x01, SP_PROT_PCT1_CLIENT = 0x02, SP_PROT_SSL2_SERVER = 0x04, @@ -37,7 +37,7 @@ const DWORD SP_PROT_SSL2 = SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER, SP_PROT_SSL3 = SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER; -const DWORD +enum DWORD SCH_CRED_NO_SYSTEM_MAPPER = 0x0002, SCH_CRED_NO_SERVERNAME_CHECK = 0x0004, SCH_CRED_MANUAL_CRED_VALIDATION = 0x0008, diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d index c017b8c80c..f6a0ded19b 100644 --- a/src/core/sys/windows/setupapi.d +++ b/src/core/sys/windows/setupapi.d @@ -18,34 +18,34 @@ private import core.sys.windows.basetyps, core.sys.windows.commctrl, core.sys.wi private import core.sys.windows.winbase; // for SYSTEMTIME /*static if(_WIN32_WINNT < _WIN32_WINDOWS) { - const UINT _SETUPAPI_VER = _WIN32_WINNT; // SetupAPI version follows Windows NT version +enum UINT _SETUPAPI_VER = _WIN32_WINNT; // SetupAPI version follows Windows NT version } else static if(_WIN32_WINDOWS) { static if(_WIN32_WINDOWS >= 0x0490) { - const UINT _SETUPAPI_VER = 0x0500; // WinME uses same version of SetupAPI as Win2k +enum UINT _SETUPAPI_VER = 0x0500; // WinME uses same version of SetupAPI as Win2k } else static if(_WIN32_WINDOWS >= 0x0410) { - const UINT _SETUPAPI_VER = 0x0410; // Indicates version of SetupAPI shipped with Win98 +enum UINT _SETUPAPI_VER = 0x0410; // Indicates version of SetupAPI shipped with Win98 } else { - const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version +enum UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version } } else { - const UINT _SETUPAPI_VER = 0x0501; +enum UINT _SETUPAPI_VER = 0x0501; } version (WindowsNTonly) { static if (_WIN32_WINNT >= 0x500) { - const UINT USE_SP_DRVINFO_DATA_V1 = 0; +enum UINT USE_SP_DRVINFO_DATA_V1 = 0; } else { - const UINT USE_SP_DRVINFO_DATA_V1 = 1; +enum UINT USE_SP_DRVINFO_DATA_V1 = 1; } } else { - const UINT USE_SP_DRVINFO_DATA_V1 = 1; +enum UINT USE_SP_DRVINFO_DATA_V1 = 1; }*/ /+ -const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version -const UINT USE_SP_DRVINFO_DATA_V1 = 1; +enum UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version +enum UINT USE_SP_DRVINFO_DATA_V1 = 1; +/ -const UINT _SETUPAPI_VER = _WIN32_WINNT; -const bool USE_SP_DRVINFO_DATA_V1 = _WIN32_WINNT < 0x500; +enum UINT _SETUPAPI_VER = _WIN32_WINNT; +enum bool USE_SP_DRVINFO_DATA_V1 = _WIN32_WINNT < 0x500; enum : uint { LINE_LEN = 256, @@ -575,7 +575,7 @@ enum : LogSeverity { LogSevMaximum // = 4 } -const MAX_INSTALLWIZARD_DYNAPAGES = 20; +enum MAX_INSTALLWIZARD_DYNAPAGES = 20; enum : DWORD { NDW_INSTALLFLAG_DIDFACTDEFS = 0x00000001, diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index 5de86e8c5c..ae8a494462 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -27,7 +27,7 @@ enum : UINT { ABS_ALWAYSONTOP } -const ULONG +enum ULONG SEE_MASK_CLASSNAME = 1, SEE_MASK_CLASSKEY = 3, SEE_MASK_IDLIST = 4, @@ -58,7 +58,7 @@ enum : DWORD { } static if (_WIN32_WINNT >= 0x501) { - const DWORD ABM_SETSTATE = 10; +enum DWORD ABM_SETSTATE = 10; } enum : UINT { @@ -75,7 +75,7 @@ enum : DWORD { } static if (_WIN32_IE >= 0x500) { - const NOTIFYICON_VERSION = 3; +enum NOTIFYICON_VERSION = 3; enum : DWORD { NIM_SETFOCUS = 3, @@ -83,18 +83,18 @@ static if (_WIN32_IE >= 0x500) { } } -const UINT +enum UINT NIF_MESSAGE = 1, NIF_ICON = 2, NIF_TIP = 4, NIF_STATE = 8; static if (_WIN32_IE >= 0x500) { - const UINT NIF_INFO = 0x00000010; +enum UINT NIF_INFO = 0x00000010; } static if (_WIN32_IE >= 0x600) { - const UINT NIF_GUID = 0x00000020; +enum UINT NIF_GUID = 0x00000020; } static if (_WIN32_IE >= 0x500) { @@ -113,11 +113,11 @@ static if (_WIN32_IE >= 0x600) { } } -const DWORD +enum DWORD NIS_HIDDEN = 1, NIS_SHAREDICON = 2; -const HINSTANCE +enum HINSTANCE SE_ERR_FNF = cast(HINSTANCE) 2, SE_ERR_PNF = cast(HINSTANCE) 3, SE_ERR_ACCESSDENIED = cast(HINSTANCE) 5, @@ -137,7 +137,7 @@ enum : UINT { FO_RENAME } -const FILEOP_FLAGS +enum FILEOP_FLAGS FOF_MULTIDESTFILES = 0x0001, FOF_CONFIRMMOUSE = 0x0002, FOF_SILENT = 0x0004, @@ -159,7 +159,7 @@ enum { PO_REN_PORT = 52 } -const UINT +enum UINT SHGFI_LARGEICON = 0x000000, SHGFI_SMALLICON = 0x000001, SHGFI_OPENICON = 0x000002, @@ -178,14 +178,14 @@ const UINT SHGFI_ATTR_SPECIFIED = 0x020000; static if (_WIN32_IE >= 0x500) { - const uint +enum uint SHGFI_ADDOVERLAYS = 0x000020, SHGFI_OVERLAYINDEX = 0x000040; } -const SHERB_NOCONFIRMATION = 1; -const SHERB_NOPROGRESSUI = 2; -const SHERB_NOSOUND = 4; +enum SHERB_NOCONFIRMATION = 1; +enum SHERB_NOPROGRESSUI = 2; +enum SHERB_NOSOUND = 4; alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS; mixin DECLARE_HANDLE!("HDROP"); diff --git a/src/core/sys/windows/shldisp.d b/src/core/sys/windows/shldisp.d index 1175677f3e..876d4d784e 100644 --- a/src/core/sys/windows/shldisp.d +++ b/src/core/sys/windows/shldisp.d @@ -12,7 +12,7 @@ version (Windows): private import core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; // options for IAutoComplete2 -const DWORD ACO_AUTOSUGGEST = 0x01; +enum DWORD ACO_AUTOSUGGEST = 0x01; interface IAutoComplete : IUnknown { HRESULT Init(HWND, IUnknown, LPCOLESTR, LPCOLESTR); diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index 1b81de15dd..4200ee8d4b 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -27,30 +27,30 @@ private import core.sys.windows.oaidl : VARIANT; align(1): -const BIF_RETURNONLYFSDIRS = 1; -const BIF_DONTGOBELOWDOMAIN = 2; -const BIF_STATUSTEXT = 4; -const BIF_RETURNFSANCESTORS = 8; -const BIF_EDITBOX = 16; -const BIF_VALIDATE = 32; -const BIF_NEWDIALOGSTYLE = 64; -const BIF_BROWSEINCLUDEURLS = 128; -const BIF_USENEWUI = BIF_EDITBOX | BIF_NEWDIALOGSTYLE; -const BIF_BROWSEFORCOMPUTER = 0x1000; -const BIF_BROWSEFORPRINTER = 0x2000; -const BIF_BROWSEINCLUDEFILES = 0x4000; -const BIF_SHAREABLE = 0x8000; -const BFFM_INITIALIZED = 1; -const BFFM_SELCHANGED = 2; -const BFFM_VALIDATEFAILEDA = 3; -const BFFM_VALIDATEFAILEDW = 4; -const BFFM_SETSTATUSTEXTA = WM_USER + 100; -const BFFM_ENABLEOK = WM_USER + 101; -const BFFM_SETSELECTIONA = WM_USER + 102; -const BFFM_SETSELECTIONW = WM_USER + 103; -const BFFM_SETSTATUSTEXTW = WM_USER + 104; -const BFFM_SETOKTEXT = WM_USER + 105; -const BFFM_SETEXPANDED = WM_USER + 106; +enum BIF_RETURNONLYFSDIRS = 1; +enum BIF_DONTGOBELOWDOMAIN = 2; +enum BIF_STATUSTEXT = 4; +enum BIF_RETURNFSANCESTORS = 8; +enum BIF_EDITBOX = 16; +enum BIF_VALIDATE = 32; +enum BIF_NEWDIALOGSTYLE = 64; +enum BIF_BROWSEINCLUDEURLS = 128; +enum BIF_USENEWUI = BIF_EDITBOX | BIF_NEWDIALOGSTYLE; +enum BIF_BROWSEFORCOMPUTER = 0x1000; +enum BIF_BROWSEFORPRINTER = 0x2000; +enum BIF_BROWSEINCLUDEFILES = 0x4000; +enum BIF_SHAREABLE = 0x8000; +enum BFFM_INITIALIZED = 1; +enum BFFM_SELCHANGED = 2; +enum BFFM_VALIDATEFAILEDA = 3; +enum BFFM_VALIDATEFAILEDW = 4; +enum BFFM_SETSTATUSTEXTA = WM_USER + 100; +enum BFFM_ENABLEOK = WM_USER + 101; +enum BFFM_SETSELECTIONA = WM_USER + 102; +enum BFFM_SETSELECTIONW = WM_USER + 103; +enum BFFM_SETSTATUSTEXTW = WM_USER + 104; +enum BFFM_SETOKTEXT = WM_USER + 105; +enum BFFM_SETEXPANDED = WM_USER + 106; version(Unicode) { alias BFFM_SETSTATUSTEXTW BFFM_SETSTATUSTEXT; @@ -62,7 +62,7 @@ version(Unicode) { alias BFFM_VALIDATEFAILEDA BFFM_VALIDATEFAILED; } -const DVASPECT_SHORTNAME = 2; +enum DVASPECT_SHORTNAME = 2; enum SHARD { SHARD_PIDL = 1, @@ -76,40 +76,40 @@ enum SHARD { SHARD_PATH = (_WIN32_UNICODE ? SHARD_PATHW : SHARD_PATHA) } -const SHCNE_RENAMEITEM = 1; -const SHCNE_CREATE = 2; -const SHCNE_DELETE = 4; -const SHCNE_MKDIR = 8; -const SHCNE_RMDIR = 16; -const SHCNE_MEDIAINSERTED = 32; -const SHCNE_MEDIAREMOVED = 64; -const SHCNE_DRIVEREMOVED = 128; -const SHCNE_DRIVEADD = 256; -const SHCNE_NETSHARE = 512; -const SHCNE_NETUNSHARE = 1024; -const SHCNE_ATTRIBUTES = 2048; -const SHCNE_UPDATEDIR = 4096; -const SHCNE_UPDATEITEM = 8192; -const SHCNE_SERVERDISCONNECT = 16384; -const SHCNE_UPDATEIMAGE = 32768; -const SHCNE_DRIVEADDGUI = 65536; -const SHCNE_RENAMEFOLDER = 0x20000; -const SHCNE_FREESPACE = 0x40000; -const SHCNE_ASSOCCHANGED = 0x8000000; -const SHCNE_DISKEVENTS = 0x2381F; -const SHCNE_GLOBALEVENTS = 0xC0581E0; -const SHCNE_ALLEVENTS = 0x7FFFFFFF; -const SHCNE_INTERRUPT = 0x80000000; - -const SHCNF_IDLIST = 0; -const SHCNF_PATHA = 1; -const SHCNF_PRINTERA = 2; -const SHCNF_DWORD = 3; -const SHCNF_PATHW = 5; -const SHCNF_PRINTERW = 6; -const SHCNF_TYPE = 0xFF; -const SHCNF_FLUSH = 0x1000; -const SHCNF_FLUSHNOWAIT = 0x2000; +enum SHCNE_RENAMEITEM = 1; +enum SHCNE_CREATE = 2; +enum SHCNE_DELETE = 4; +enum SHCNE_MKDIR = 8; +enum SHCNE_RMDIR = 16; +enum SHCNE_MEDIAINSERTED = 32; +enum SHCNE_MEDIAREMOVED = 64; +enum SHCNE_DRIVEREMOVED = 128; +enum SHCNE_DRIVEADD = 256; +enum SHCNE_NETSHARE = 512; +enum SHCNE_NETUNSHARE = 1024; +enum SHCNE_ATTRIBUTES = 2048; +enum SHCNE_UPDATEDIR = 4096; +enum SHCNE_UPDATEITEM = 8192; +enum SHCNE_SERVERDISCONNECT = 16384; +enum SHCNE_UPDATEIMAGE = 32768; +enum SHCNE_DRIVEADDGUI = 65536; +enum SHCNE_RENAMEFOLDER = 0x20000; +enum SHCNE_FREESPACE = 0x40000; +enum SHCNE_ASSOCCHANGED = 0x8000000; +enum SHCNE_DISKEVENTS = 0x2381F; +enum SHCNE_GLOBALEVENTS = 0xC0581E0; +enum SHCNE_ALLEVENTS = 0x7FFFFFFF; +enum SHCNE_INTERRUPT = 0x80000000; + +enum SHCNF_IDLIST = 0; +enum SHCNF_PATHA = 1; +enum SHCNF_PRINTERA = 2; +enum SHCNF_DWORD = 3; +enum SHCNF_PATHW = 5; +enum SHCNF_PRINTERW = 6; +enum SHCNF_TYPE = 0xFF; +enum SHCNF_FLUSH = 0x1000; +enum SHCNF_FLUSHNOWAIT = 0x2000; version(Unicode) { alias SHCNF_PATHW SHCNF_PATH; @@ -145,9 +145,9 @@ enum SFGAOF : DWORD { SFGAO_REMOVABLE = 0x02000000L, SFGAO_COMPRESSED = 0x04000000L } -const STRRET_WSTR = 0; -const STRRET_OFFSET = 1; -const STRRET_CSTR = 2; +enum STRRET_WSTR = 0; +enum STRRET_OFFSET = 1; +enum STRRET_CSTR = 2; enum { SHGDFIL_FINDDATA = 1, @@ -273,22 +273,22 @@ const TCHAR[] CFSTR_PERFORMEDDROPEFFECT = "Performed DropEffect", CFSTR_PREFERREDDROPEFFECT = "Preferred DropEffect"; -const CMF_NORMAL=0; -const CMF_DEFAULTONLY=1; -const CMF_VERBSONLY=2; -const CMF_EXPLORE=4; -const CMF_NOVERBS=8; -const CMF_CANRENAME=16; -const CMF_NODEFAULT=32; -const CMF_INCLUDESTATIC=64; -const CMF_RESERVED=0xffff0000; -const GCS_VERBA=0; -const GCS_HELPTEXTA=1; -const GCS_VALIDATEA=2; -const GCS_VERBW=4; -const GCS_HELPTEXTW=5; -const GCS_VALIDATEW=6; -const GCS_UNICODE=4; +enum CMF_NORMAL=0; +enum CMF_DEFAULTONLY=1; +enum CMF_VERBSONLY=2; +enum CMF_EXPLORE=4; +enum CMF_NOVERBS=8; +enum CMF_CANRENAME=16; +enum CMF_NODEFAULT=32; +enum CMF_INCLUDESTATIC=64; +enum CMF_RESERVED=0xffff0000; +enum GCS_VERBA=0; +enum GCS_HELPTEXTA=1; +enum GCS_VALIDATEA=2; +enum GCS_VERBW=4; +enum GCS_HELPTEXTW=5; +enum GCS_VALIDATEW=6; +enum GCS_UNICODE=4; version(Unicode) { alias GCS_VERBW GCS_VERB; @@ -305,62 +305,62 @@ const TCHAR[] CMDSTR_VIEWLIST = "ViewList", CMDSTR_VIEWDETAILS = "ViewDetails"; -const CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY; -const CMIC_MASK_ICON = SEE_MASK_ICON; -const CMIC_MASK_FLAG_NO_UI = SEE_MASK_FLAG_NO_UI; -const CMIC_MASK_MODAL = 0x80000000; +enum CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY; +enum CMIC_MASK_ICON = SEE_MASK_ICON; +enum CMIC_MASK_FLAG_NO_UI = SEE_MASK_FLAG_NO_UI; +enum CMIC_MASK_MODAL = 0x80000000; // TODO: This isn't defined anywhere in MinGW. //const CMIC_VALID_SEE_FLAGS=SEE_VALID_CMIC_FLAGS; -const GIL_OPENICON = 1; -const GIL_FORSHELL = 2; -const GIL_SIMULATEDOC = 1; -const GIL_PERINSTANCE = 2; -const GIL_PERCLASS = 4; -const GIL_NOTFILENAME = 8; -const GIL_DONTCACHE = 16; - -const FVSIF_RECT = 1; -const FVSIF_PINNED = 2; -const FVSIF_NEWFAILED = 0x8000000; -const FVSIF_NEWFILE = 0x80000000; -const FVSIF_CANVIEWIT = 0x40000000; - -const CDBOSC_SETFOCUS = 0; -const CDBOSC_KILLFOCUS = 1; -const CDBOSC_SELCHANGE = 2; -const CDBOSC_RENAME = 3; - -const FCIDM_SHVIEWFIRST = 0; -const FCIDM_SHVIEWLAST = 0x7fff; -const FCIDM_BROWSERFIRST = 0xa000; -const FCIDM_BROWSERLAST = 0xbf00; -const FCIDM_GLOBALFIRST = 0x8000; -const FCIDM_GLOBALLAST = 0x9fff; -const FCIDM_MENU_FILE = FCIDM_GLOBALFIRST; -const FCIDM_MENU_EDIT = FCIDM_GLOBALFIRST+0x0040; -const FCIDM_MENU_VIEW = FCIDM_GLOBALFIRST+0x0080; -const FCIDM_MENU_VIEW_SEP_OPTIONS = FCIDM_GLOBALFIRST+0x0081; -const FCIDM_MENU_TOOLS = FCIDM_GLOBALFIRST+0x00c0; -const FCIDM_MENU_TOOLS_SEP_GOTO = FCIDM_GLOBALFIRST+0x00c1; -const FCIDM_MENU_HELP = FCIDM_GLOBALFIRST+0x0100; -const FCIDM_MENU_FIND = FCIDM_GLOBALFIRST+0x0140; -const FCIDM_MENU_EXPLORE = FCIDM_GLOBALFIRST+0x0150; -const FCIDM_MENU_FAVORITES = FCIDM_GLOBALFIRST+0x0170; -const FCIDM_TOOLBAR = FCIDM_BROWSERFIRST; -const FCIDM_STATUS = FCIDM_BROWSERFIRST+1; - -const SBSP_DEFBROWSER = 0; -const SBSP_SAMEBROWSER = 1; -const SBSP_NEWBROWSER = 2; -const SBSP_DEFMODE = 0; -const SBSP_OPENMODE = 16; -const SBSP_EXPLOREMODE = 32; -const SBSP_ABSOLUTE = 0; -const SBSP_RELATIVE = 0x1000; -const SBSP_PARENT = 0x2000; -const SBSP_INITIATEDBYHLINKFRAME = 0x80000000; -const SBSP_REDIRECT = 0x40000000; +enum GIL_OPENICON = 1; +enum GIL_FORSHELL = 2; +enum GIL_SIMULATEDOC = 1; +enum GIL_PERINSTANCE = 2; +enum GIL_PERCLASS = 4; +enum GIL_NOTFILENAME = 8; +enum GIL_DONTCACHE = 16; + +enum FVSIF_RECT = 1; +enum FVSIF_PINNED = 2; +enum FVSIF_NEWFAILED = 0x8000000; +enum FVSIF_NEWFILE = 0x80000000; +enum FVSIF_CANVIEWIT = 0x40000000; + +enum CDBOSC_SETFOCUS = 0; +enum CDBOSC_KILLFOCUS = 1; +enum CDBOSC_SELCHANGE = 2; +enum CDBOSC_RENAME = 3; + +enum FCIDM_SHVIEWFIRST = 0; +enum FCIDM_SHVIEWLAST = 0x7fff; +enum FCIDM_BROWSERFIRST = 0xa000; +enum FCIDM_BROWSERLAST = 0xbf00; +enum FCIDM_GLOBALFIRST = 0x8000; +enum FCIDM_GLOBALLAST = 0x9fff; +enum FCIDM_MENU_FILE = FCIDM_GLOBALFIRST; +enum FCIDM_MENU_EDIT = FCIDM_GLOBALFIRST+0x0040; +enum FCIDM_MENU_VIEW = FCIDM_GLOBALFIRST+0x0080; +enum FCIDM_MENU_VIEW_SEP_OPTIONS = FCIDM_GLOBALFIRST+0x0081; +enum FCIDM_MENU_TOOLS = FCIDM_GLOBALFIRST+0x00c0; +enum FCIDM_MENU_TOOLS_SEP_GOTO = FCIDM_GLOBALFIRST+0x00c1; +enum FCIDM_MENU_HELP = FCIDM_GLOBALFIRST+0x0100; +enum FCIDM_MENU_FIND = FCIDM_GLOBALFIRST+0x0140; +enum FCIDM_MENU_EXPLORE = FCIDM_GLOBALFIRST+0x0150; +enum FCIDM_MENU_FAVORITES = FCIDM_GLOBALFIRST+0x0170; +enum FCIDM_TOOLBAR = FCIDM_BROWSERFIRST; +enum FCIDM_STATUS = FCIDM_BROWSERFIRST+1; + +enum SBSP_DEFBROWSER = 0; +enum SBSP_SAMEBROWSER = 1; +enum SBSP_NEWBROWSER = 2; +enum SBSP_DEFMODE = 0; +enum SBSP_OPENMODE = 16; +enum SBSP_EXPLOREMODE = 32; +enum SBSP_ABSOLUTE = 0; +enum SBSP_RELATIVE = 0x1000; +enum SBSP_PARENT = 0x2000; +enum SBSP_INITIATEDBYHLINKFRAME = 0x80000000; +enum SBSP_REDIRECT = 0x40000000; enum { FCW_STATUS=1, @@ -368,23 +368,23 @@ enum { FCW_TREE } -const FCT_MERGE=1; -const FCT_CONFIGABLE=2; -const FCT_ADDTOEND=4; +enum FCT_MERGE=1; +enum FCT_CONFIGABLE=2; +enum FCT_ADDTOEND=4; -const SVSI_DESELECT=0; -const SVSI_SELECT=1; -const SVSI_EDIT=3; -const SVSI_DESELECTOTHERS=4; -const SVSI_ENSUREVISIBLE=8; -const SVSI_FOCUSED=16; +enum SVSI_DESELECT=0; +enum SVSI_SELECT=1; +enum SVSI_EDIT=3; +enum SVSI_DESELECTOTHERS=4; +enum SVSI_ENSUREVISIBLE=8; +enum SVSI_FOCUSED=16; -const SVGIO_BACKGROUND=0; -const SVGIO_SELECTION=1; -const SVGIO_ALLVIEW=2; +enum SVGIO_BACKGROUND=0; +enum SVGIO_SELECTION=1; +enum SVGIO_ALLVIEW=2; -const UINT SV2GV_CURRENTVIEW=-1; -const UINT SV2GV_DEFAULTVIEW=-2; +enum UINT SV2GV_CURRENTVIEW=-1; +enum UINT SV2GV_DEFAULTVIEW=-2; alias DWORD SHGDNF; @@ -713,8 +713,8 @@ static if (_WIN32_IE >= 0x500) { alias const(SHCOLUMNDATA)* LPCSHCOLUMNDATA; } - const MAX_COLUMN_NAME_LEN = 80; - const MAX_COLUMN_DESC_LEN = 128; +enum MAX_COLUMN_NAME_LEN = 80; +enum MAX_COLUMN_DESC_LEN = 128; align(1) struct SHCOLUMNINFO { SHCOLUMNID scid; @@ -983,7 +983,7 @@ struct SV2CVW2_PARAMS { FOLDERSETTINGS *pfs; IShellBrowser psbOwner; RECT *prcView; - const(SHELLVIEWID)* pvid; +const(SHELLVIEWID)* pvid; HWND hwndView; } alias SV2CVW2_PARAMS* LPSV2CVW2_PARAMS; @@ -1073,19 +1073,19 @@ struct SHELLFLAGSTATE { } alias SHELLFLAGSTATE* LPSHELLFLAGSTATE; -const SSF_SHOWALLOBJECTS = 0x1; -const SSF_SHOWEXTENSIONS = 0x2; -const SSF_SHOWCOMPCOLOR = 0x8; -const SSF_SHOWSYSFILES = 0x20; -const SSF_DOUBLECLICKINWEBVIEW = 0x80; -const SSF_SHOWATTRIBCOL = 0x100; -const SSF_DESKTOPHTML = 0x200; -const SSF_WIN95CLASSIC = 0x400; -const SSF_DONTPRETTYPATH = 0x800; -const SSF_MAPNETDRVBUTTON = 0x1000; -const SSF_SHOWINFOTIP = 0x2000; -const SSF_HIDEICONS = 0x4000; -const SSF_NOCONFIRMRECYCLE = 0x8000; +enum SSF_SHOWALLOBJECTS = 0x1; +enum SSF_SHOWEXTENSIONS = 0x2; +enum SSF_SHOWCOMPCOLOR = 0x8; +enum SSF_SHOWSYSFILES = 0x20; +enum SSF_DOUBLECLICKINWEBVIEW = 0x80; +enum SSF_SHOWATTRIBCOL = 0x100; +enum SSF_DESKTOPHTML = 0x200; +enum SSF_WIN95CLASSIC = 0x400; +enum SSF_DONTPRETTYPATH = 0x800; +enum SSF_MAPNETDRVBUTTON = 0x1000; +enum SSF_SHOWINFOTIP = 0x2000; +enum SSF_HIDEICONS = 0x4000; +enum SSF_NOCONFIRMRECYCLE = 0x8000; interface IShellIconOverlayIdentifier : IUnknown { HRESULT IsMemberOf(LPCWSTR, DWORD); @@ -1093,8 +1093,8 @@ interface IShellIconOverlayIdentifier : IUnknown { HRESULT GetPriority(int*); } -const ISIOI_ICONFILE = 0x00000001; -const ISIOI_ICONINDEX = 0x00000002; +enum ISIOI_ICONFILE = 0x00000001; +enum ISIOI_ICONINDEX = 0x00000002; static if (_WIN32_WINNT >= 0x500) { struct SHELLSTATE { diff --git a/src/core/sys/windows/shlwapi.d b/src/core/sys/windows/shlwapi.d index 5bd60119b7..5d223153b4 100644 --- a/src/core/sys/windows/shlwapi.d +++ b/src/core/sys/windows/shlwapi.d @@ -30,21 +30,21 @@ import core.sys.windows.objbase, core.sys.windows.shlobj; private import core.sys.windows.basetyps, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.winbase, core.sys.windows.winreg; -const DLLVER_PLATFORM_WINDOWS = 0x00000001; -const DLLVER_PLATFORM_NT = 0x00000002; +enum DLLVER_PLATFORM_WINDOWS = 0x00000001; +enum DLLVER_PLATFORM_NT = 0x00000002; -const URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000; -const URL_DONT_SIMPLIFY = 0x08000000; -const URL_ESCAPE_PERCENT = 0x00001000; -const URL_ESCAPE_SEGMENT_ONLY = 0x00002000; -const URL_ESCAPE_SPACES_ONLY = 0x04000000; -const URL_ESCAPE_UNSAFE = 0x20000000; -const URL_INTERNAL_PATH = 0x00800000; -const URL_PARTFLAG_KEEPSCHEME = 0x00000001; -const URL_PLUGGABLE_PROTOCOL = 0x40000000; -const URL_UNESCAPE = 0x10000000; -const URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000; -const URL_UNESCAPE_INPLACE = 0x00100000; +enum URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000; +enum URL_DONT_SIMPLIFY = 0x08000000; +enum URL_ESCAPE_PERCENT = 0x00001000; +enum URL_ESCAPE_SEGMENT_ONLY = 0x00002000; +enum URL_ESCAPE_SPACES_ONLY = 0x04000000; +enum URL_ESCAPE_UNSAFE = 0x20000000; +enum URL_INTERNAL_PATH = 0x00800000; +enum URL_PARTFLAG_KEEPSCHEME = 0x00000001; +enum URL_PLUGGABLE_PROTOCOL = 0x40000000; +enum URL_UNESCAPE = 0x10000000; +enum URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000; +enum URL_UNESCAPE_INPLACE = 0x00100000; align(1): struct DLLVERSIONINFO diff --git a/src/core/sys/windows/snmp.d b/src/core/sys/windows/snmp.d index 8e77b3c3b6..ae0fa15911 100644 --- a/src/core/sys/windows/snmp.d +++ b/src/core/sys/windows/snmp.d @@ -120,13 +120,13 @@ enum : INT { SNMP_LOG_VERBOSE } -const INT +enum INT SNMP_OUTPUT_TO_CONSOLE = 1, SNMP_OUTPUT_TO_LOGFILE = 2, SNMP_OUTPUT_TO_EVENTLOG = 4, SNMP_OUTPUT_TO_DEBUGGER = 8; -const size_t SNMP_MAX_OID_LEN = 128; +enum size_t SNMP_MAX_OID_LEN = 128; enum : DWORD { SNMP_MEM_ALLOC_ERROR = 1, diff --git a/src/core/sys/windows/sql.d b/src/core/sys/windows/sql.d index 1748fd5ce8..4eb2cfb514 100644 --- a/src/core/sys/windows/sql.d +++ b/src/core/sys/windows/sql.d @@ -12,358 +12,358 @@ version (Windows): public import core.sys.windows.sqltypes; private import core.sys.windows.windef; -const ODBCVER = 0x0351; +enum ODBCVER = 0x0351; -const SQL_ACCESSIBLE_PROCEDURES=20; -const SQL_ACCESSIBLE_TABLES=19; -const SQL_ALL_TYPES=0; -const SQL_ALTER_TABLE=86; -const SQL_API_SQLALLOCCONNECT=1; -const SQL_API_SQLALLOCENV=2; -const SQL_API_SQLALLOCSTMT=3; -const SQL_API_SQLBINDCOL=4; -const SQL_API_SQLCANCEL=5; -const SQL_API_SQLCOLUMNS=40; -const SQL_API_SQLCONNECT=7; -const SQL_API_SQLDATASOURCES=57; -const SQL_API_SQLDESCRIBECOL=8; -const SQL_API_SQLDISCONNECT=9; -const SQL_API_SQLERROR=10; -const SQL_API_SQLEXECDIRECT=11; -const SQL_API_SQLEXECUTE=12; -const SQL_API_SQLFETCH=13; -const SQL_API_SQLFREECONNECT=14; -const SQL_API_SQLFREEENV=15; -const SQL_API_SQLFREESTMT=16; -const SQL_API_SQLGETCONNECTOPTION=42; -const SQL_API_SQLGETCURSORNAME=17; -const SQL_API_SQLGETDATA=43; -const SQL_API_SQLGETFUNCTIONS=44; -const SQL_API_SQLGETINFO=45; -const SQL_API_SQLGETSTMTOPTION=46; -const SQL_API_SQLGETTYPEINFO=47; -const SQL_API_SQLNUMRESULTCOLS=18; -const SQL_API_SQLPARAMDATA=48; -const SQL_API_SQLPREPARE=19; -const SQL_API_SQLPUTDATA=49; -const SQL_API_SQLROWCOUNT=20; -const SQL_API_SQLSETCONNECTOPTION=50; -const SQL_API_SQLSETCURSORNAME=21; -const SQL_API_SQLSETPARAM=22; -const SQL_API_SQLSETSTMTOPTION=51; -const SQL_API_SQLSPECIALCOLUMNS=52; -const SQL_API_SQLSTATISTICS=53; -const SQL_API_SQLTABLES=54; -const SQL_API_SQLTRANSACT=23; +enum SQL_ACCESSIBLE_PROCEDURES=20; +enum SQL_ACCESSIBLE_TABLES=19; +enum SQL_ALL_TYPES=0; +enum SQL_ALTER_TABLE=86; +enum SQL_API_SQLALLOCCONNECT=1; +enum SQL_API_SQLALLOCENV=2; +enum SQL_API_SQLALLOCSTMT=3; +enum SQL_API_SQLBINDCOL=4; +enum SQL_API_SQLCANCEL=5; +enum SQL_API_SQLCOLUMNS=40; +enum SQL_API_SQLCONNECT=7; +enum SQL_API_SQLDATASOURCES=57; +enum SQL_API_SQLDESCRIBECOL=8; +enum SQL_API_SQLDISCONNECT=9; +enum SQL_API_SQLERROR=10; +enum SQL_API_SQLEXECDIRECT=11; +enum SQL_API_SQLEXECUTE=12; +enum SQL_API_SQLFETCH=13; +enum SQL_API_SQLFREECONNECT=14; +enum SQL_API_SQLFREEENV=15; +enum SQL_API_SQLFREESTMT=16; +enum SQL_API_SQLGETCONNECTOPTION=42; +enum SQL_API_SQLGETCURSORNAME=17; +enum SQL_API_SQLGETDATA=43; +enum SQL_API_SQLGETFUNCTIONS=44; +enum SQL_API_SQLGETINFO=45; +enum SQL_API_SQLGETSTMTOPTION=46; +enum SQL_API_SQLGETTYPEINFO=47; +enum SQL_API_SQLNUMRESULTCOLS=18; +enum SQL_API_SQLPARAMDATA=48; +enum SQL_API_SQLPREPARE=19; +enum SQL_API_SQLPUTDATA=49; +enum SQL_API_SQLROWCOUNT=20; +enum SQL_API_SQLSETCONNECTOPTION=50; +enum SQL_API_SQLSETCURSORNAME=21; +enum SQL_API_SQLSETPARAM=22; +enum SQL_API_SQLSETSTMTOPTION=51; +enum SQL_API_SQLSPECIALCOLUMNS=52; +enum SQL_API_SQLSTATISTICS=53; +enum SQL_API_SQLTABLES=54; +enum SQL_API_SQLTRANSACT=23; -const SQL_CB_DELETE=0; -const SQL_CB_CLOSE=1; -const SQL_CB_PRESERVE=2; +enum SQL_CB_DELETE=0; +enum SQL_CB_CLOSE=1; +enum SQL_CB_PRESERVE=2; -const SQL_CHAR=1; -const SQL_CLOSE=0; -const SQL_COMMIT=0; -const SQL_CURSOR_COMMIT_BEHAVIOR=23; -const SQL_DATA_AT_EXEC=-2; -const SQL_DATA_SOURCE_NAME=2; -const SQL_DATA_SOURCE_READ_ONLY=25; -const SQL_DBMS_NAME=17; -const SQL_DBMS_VER=18; -const SQL_DECIMAL=3; -const SQL_DEFAULT_TXN_ISOLATION=26; -const SQL_DOUBLE=8; -const SQL_DROP=1; -const SQL_ERROR=-1; +enum SQL_CHAR=1; +enum SQL_CLOSE=0; +enum SQL_COMMIT=0; +enum SQL_CURSOR_COMMIT_BEHAVIOR=23; +enum SQL_DATA_AT_EXEC=-2; +enum SQL_DATA_SOURCE_NAME=2; +enum SQL_DATA_SOURCE_READ_ONLY=25; +enum SQL_DBMS_NAME=17; +enum SQL_DBMS_VER=18; +enum SQL_DECIMAL=3; +enum SQL_DEFAULT_TXN_ISOLATION=26; +enum SQL_DOUBLE=8; +enum SQL_DROP=1; +enum SQL_ERROR=-1; -const SQL_FD_FETCH_NEXT=1; -const SQL_FD_FETCH_FIRST=2; -const SQL_FD_FETCH_LAST=4; -const SQL_FD_FETCH_PRIOR=8; -const SQL_FD_FETCH_ABSOLUTE=16; -const SQL_FD_FETCH_RELATIVE=32; +enum SQL_FD_FETCH_NEXT=1; +enum SQL_FD_FETCH_FIRST=2; +enum SQL_FD_FETCH_LAST=4; +enum SQL_FD_FETCH_PRIOR=8; +enum SQL_FD_FETCH_ABSOLUTE=16; +enum SQL_FD_FETCH_RELATIVE=32; -const SQL_FETCH_ABSOLUTE=5; -const SQL_FETCH_DIRECTION=8; -const SQL_FETCH_FIRST=2; -const SQL_FETCH_LAST=3; -const SQL_FETCH_NEXT=1; -const SQL_FETCH_PRIOR=4; -const SQL_FETCH_RELATIVE=6; -const SQL_FLOAT=6; -const SQL_GD_ANY_COLUMN=1; -const SQL_GD_ANY_ORDER=2; -const SQL_GETDATA_EXTENSIONS=81; -const SQL_IC_LOWER=2; -const SQL_IC_MIXED=4; -const SQL_IC_SENSITIVE=3; -const SQL_IC_UPPER=1; -const SQL_IDENTIFIER_CASE=28; -const SQL_IDENTIFIER_QUOTE_CHAR=29; +enum SQL_FETCH_ABSOLUTE=5; +enum SQL_FETCH_DIRECTION=8; +enum SQL_FETCH_FIRST=2; +enum SQL_FETCH_LAST=3; +enum SQL_FETCH_NEXT=1; +enum SQL_FETCH_PRIOR=4; +enum SQL_FETCH_RELATIVE=6; +enum SQL_FLOAT=6; +enum SQL_GD_ANY_COLUMN=1; +enum SQL_GD_ANY_ORDER=2; +enum SQL_GETDATA_EXTENSIONS=81; +enum SQL_IC_LOWER=2; +enum SQL_IC_MIXED=4; +enum SQL_IC_SENSITIVE=3; +enum SQL_IC_UPPER=1; +enum SQL_IDENTIFIER_CASE=28; +enum SQL_IDENTIFIER_QUOTE_CHAR=29; -const SQL_INDEX_ALL=1; -const SQL_INDEX_CLUSTERED=1; -const SQL_INDEX_HASHED=2; -const SQL_INDEX_OTHER=3; -const SQL_INDEX_UNIQUE=0; +enum SQL_INDEX_ALL=1; +enum SQL_INDEX_CLUSTERED=1; +enum SQL_INDEX_HASHED=2; +enum SQL_INDEX_OTHER=3; +enum SQL_INDEX_UNIQUE=0; -const SQL_INTEGER=4; -const SQL_INTEGRITY=73; -const SQL_INVALID_HANDLE=-2; +enum SQL_INTEGER=4; +enum SQL_INTEGRITY=73; +enum SQL_INVALID_HANDLE=-2; -const SQL_MAX_CATALOG_NAME_LEN=34; -const SQL_MAX_COLUMN_NAME_LEN=30; -const SQL_MAX_COLUMNS_IN_GROUP_BY=97; -const SQL_MAX_COLUMNS_IN_INDEX=98; -const SQL_MAX_COLUMNS_IN_ORDER_BY=99; -const SQL_MAX_COLUMNS_IN_SELECT=100; -const SQL_MAX_COLUMNS_IN_TABLE=101; -const SQL_MAX_CURSOR_NAME_LEN=31; -const SQL_MAX_INDEX_SIZE=102; -const SQL_MAX_MESSAGE_LENGTH=512; -const SQL_MAX_ROW_SIZE=104; -const SQL_MAX_SCHEMA_NAME_LEN=32; -const SQL_MAX_STATEMENT_LEN=105; -const SQL_MAX_TABLE_NAME_LEN=35; -const SQL_MAX_TABLES_IN_SELECT=106; -const SQL_MAX_USER_NAME_LEN=107; +enum SQL_MAX_CATALOG_NAME_LEN=34; +enum SQL_MAX_COLUMN_NAME_LEN=30; +enum SQL_MAX_COLUMNS_IN_GROUP_BY=97; +enum SQL_MAX_COLUMNS_IN_INDEX=98; +enum SQL_MAX_COLUMNS_IN_ORDER_BY=99; +enum SQL_MAX_COLUMNS_IN_SELECT=100; +enum SQL_MAX_COLUMNS_IN_TABLE=101; +enum SQL_MAX_CURSOR_NAME_LEN=31; +enum SQL_MAX_INDEX_SIZE=102; +enum SQL_MAX_MESSAGE_LENGTH=512; +enum SQL_MAX_ROW_SIZE=104; +enum SQL_MAX_SCHEMA_NAME_LEN=32; +enum SQL_MAX_STATEMENT_LEN=105; +enum SQL_MAX_TABLE_NAME_LEN=35; +enum SQL_MAX_TABLES_IN_SELECT=106; +enum SQL_MAX_USER_NAME_LEN=107; -const SQL_MAXIMUM_CATALOG_NAME_LENGTH=SQL_MAX_CATALOG_NAME_LEN; -const SQL_MAXIMUM_COLUMN_NAME_LENGTH=SQL_MAX_COLUMN_NAME_LEN; -const SQL_MAXIMUM_COLUMNS_IN_GROUP_BY=SQL_MAX_COLUMNS_IN_GROUP_BY; -const SQL_MAXIMUM_COLUMNS_IN_INDEX=SQL_MAX_COLUMNS_IN_INDEX; -const SQL_MAXIMUM_COLUMNS_IN_ORDER_BY=SQL_MAX_COLUMNS_IN_ORDER_BY; -const SQL_MAXIMUM_COLUMNS_IN_SELECT=SQL_MAX_COLUMNS_IN_SELECT; -const SQL_MAXIMUM_CURSOR_NAME_LENGTH=SQL_MAX_CURSOR_NAME_LEN; -const SQL_MAXIMUM_INDEX_SIZE=SQL_MAX_INDEX_SIZE; -const SQL_MAXIMUM_ROW_SIZE=SQL_MAX_ROW_SIZE; -const SQL_MAXIMUM_SCHEMA_NAME_LENGTH=SQL_MAX_SCHEMA_NAME_LEN; -const SQL_MAXIMUM_STATEMENT_LENGTH=SQL_MAX_STATEMENT_LEN; -const SQL_MAXIMUM_TABLES_IN_SELECT=SQL_MAX_TABLES_IN_SELECT; -const SQL_MAXIMUM_USER_NAME_LENGTH=SQL_MAX_USER_NAME_LEN; +enum SQL_MAXIMUM_CATALOG_NAME_LENGTH=SQL_MAX_CATALOG_NAME_LEN; +enum SQL_MAXIMUM_COLUMN_NAME_LENGTH=SQL_MAX_COLUMN_NAME_LEN; +enum SQL_MAXIMUM_COLUMNS_IN_GROUP_BY=SQL_MAX_COLUMNS_IN_GROUP_BY; +enum SQL_MAXIMUM_COLUMNS_IN_INDEX=SQL_MAX_COLUMNS_IN_INDEX; +enum SQL_MAXIMUM_COLUMNS_IN_ORDER_BY=SQL_MAX_COLUMNS_IN_ORDER_BY; +enum SQL_MAXIMUM_COLUMNS_IN_SELECT=SQL_MAX_COLUMNS_IN_SELECT; +enum SQL_MAXIMUM_CURSOR_NAME_LENGTH=SQL_MAX_CURSOR_NAME_LEN; +enum SQL_MAXIMUM_INDEX_SIZE=SQL_MAX_INDEX_SIZE; +enum SQL_MAXIMUM_ROW_SIZE=SQL_MAX_ROW_SIZE; +enum SQL_MAXIMUM_SCHEMA_NAME_LENGTH=SQL_MAX_SCHEMA_NAME_LEN; +enum SQL_MAXIMUM_STATEMENT_LENGTH=SQL_MAX_STATEMENT_LEN; +enum SQL_MAXIMUM_TABLES_IN_SELECT=SQL_MAX_TABLES_IN_SELECT; +enum SQL_MAXIMUM_USER_NAME_LENGTH=SQL_MAX_USER_NAME_LEN; -const SQL_NC_HIGH=0; -const SQL_NC_LOW=1; -const SQL_NEED_DATA=99; -const SQL_NO_NULLS=0; -const SQL_NTS=-3; -const LONG SQL_NTSL=-3; -const SQL_NULL_COLLATION=85; -const SQL_NULL_DATA=-1; -const SQL_NULL_HDBC=0; -const SQL_NULL_HENV=0; -const SQL_NULL_HSTMT=0; -const SQL_NULLABLE=1; -const SQL_NULLABLE_UNKNOWN=2; -const SQL_NUMERIC=2; -const SQL_ORDER_BY_COLUMNS_IN_SELECT=90; -const SQL_PC_PSEUDO=2; -const SQL_PC_UNKNOWN=0; -const SQL_REAL=7; -const SQL_RESET_PARAMS=3; -const SQL_ROLLBACK=1; -const SQL_SCCO_LOCK=2; -const SQL_SCCO_OPT_ROWVER=4; -const SQL_SCCO_OPT_VALUES=8; -const SQL_SCCO_READ_ONLY=1; -const SQL_SCOPE_CURROW=0; -const SQL_SCOPE_SESSION=2; -const SQL_SCOPE_TRANSACTION=1; -const SQL_SCROLL_CONCURRENCY=43; -const SQL_SEARCH_PATTERN_ESCAPE=14; -const SQL_SERVER_NAME=13; -const SQL_SMALLINT=5; -const SQL_SPECIAL_CHARACTERS=94; -const SQL_STILL_EXECUTING=2; +enum SQL_NC_HIGH=0; +enum SQL_NC_LOW=1; +enum SQL_NEED_DATA=99; +enum SQL_NO_NULLS=0; +enum SQL_NTS=-3; +enum LONG SQL_NTSL=-3; +enum SQL_NULL_COLLATION=85; +enum SQL_NULL_DATA=-1; +enum SQL_NULL_HDBC=0; +enum SQL_NULL_HENV=0; +enum SQL_NULL_HSTMT=0; +enum SQL_NULLABLE=1; +enum SQL_NULLABLE_UNKNOWN=2; +enum SQL_NUMERIC=2; +enum SQL_ORDER_BY_COLUMNS_IN_SELECT=90; +enum SQL_PC_PSEUDO=2; +enum SQL_PC_UNKNOWN=0; +enum SQL_REAL=7; +enum SQL_RESET_PARAMS=3; +enum SQL_ROLLBACK=1; +enum SQL_SCCO_LOCK=2; +enum SQL_SCCO_OPT_ROWVER=4; +enum SQL_SCCO_OPT_VALUES=8; +enum SQL_SCCO_READ_ONLY=1; +enum SQL_SCOPE_CURROW=0; +enum SQL_SCOPE_SESSION=2; +enum SQL_SCOPE_TRANSACTION=1; +enum SQL_SCROLL_CONCURRENCY=43; +enum SQL_SEARCH_PATTERN_ESCAPE=14; +enum SQL_SERVER_NAME=13; +enum SQL_SMALLINT=5; +enum SQL_SPECIAL_CHARACTERS=94; +enum SQL_STILL_EXECUTING=2; //MACRO #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) -const SQL_SUCCESS=0; -const SQL_SUCCESS_WITH_INFO=1; +enum SQL_SUCCESS=0; +enum SQL_SUCCESS_WITH_INFO=1; -const SQL_TC_ALL=2; -const SQL_TC_DDL_COMMIT=3; -const SQL_TC_DDL_IGNORE=4; -const SQL_TC_DML=1; -const SQL_TC_NONE=0; +enum SQL_TC_ALL=2; +enum SQL_TC_DDL_COMMIT=3; +enum SQL_TC_DDL_IGNORE=4; +enum SQL_TC_DML=1; +enum SQL_TC_NONE=0; -const SQL_TXN_CAPABLE=46; -const SQL_TXN_ISOLATION_OPTION=72; -const SQL_TXN_READ_COMMITTED=2; -const SQL_TXN_READ_UNCOMMITTED=1; -const SQL_TXN_REPEATABLE_READ=4; -const SQL_TXN_SERIALIZABLE=8; +enum SQL_TXN_CAPABLE=46; +enum SQL_TXN_ISOLATION_OPTION=72; +enum SQL_TXN_READ_COMMITTED=2; +enum SQL_TXN_READ_UNCOMMITTED=1; +enum SQL_TXN_REPEATABLE_READ=4; +enum SQL_TXN_SERIALIZABLE=8; -const SQL_TRANSACTION_CAPABLE=SQL_TXN_CAPABLE; -const SQL_TRANSACTION_ISOLATION_OPTION=SQL_TXN_ISOLATION_OPTION; -const SQL_TRANSACTION_READ_COMMITTED=SQL_TXN_READ_COMMITTED; -const SQL_TRANSACTION_READ_UNCOMMITTED=SQL_TXN_READ_UNCOMMITTED; -const SQL_TRANSACTION_REPEATABLE_READ=SQL_TXN_REPEATABLE_READ; -const SQL_TRANSACTION_SERIALIZABLE=SQL_TXN_SERIALIZABLE; +enum SQL_TRANSACTION_CAPABLE=SQL_TXN_CAPABLE; +enum SQL_TRANSACTION_ISOLATION_OPTION=SQL_TXN_ISOLATION_OPTION; +enum SQL_TRANSACTION_READ_COMMITTED=SQL_TXN_READ_COMMITTED; +enum SQL_TRANSACTION_READ_UNCOMMITTED=SQL_TXN_READ_UNCOMMITTED; +enum SQL_TRANSACTION_REPEATABLE_READ=SQL_TXN_REPEATABLE_READ; +enum SQL_TRANSACTION_SERIALIZABLE=SQL_TXN_SERIALIZABLE; -const SQL_UNBIND=2; -const SQL_UNKNOWN_TYPE=0; -const SQL_USER_NAME=47; -const SQL_VARCHAR=12; +enum SQL_UNBIND=2; +enum SQL_UNKNOWN_TYPE=0; +enum SQL_USER_NAME=47; +enum SQL_VARCHAR=12; static if (ODBCVER >= 0x0200) { - const SQL_AT_ADD_COLUMN = 1; - const SQL_AT_DROP_COLUMN = 2; +enum SQL_AT_ADD_COLUMN = 1; +enum SQL_AT_DROP_COLUMN = 2; } static if (ODBCVER >= 0x0201) { - const SQL_OJ_LEFT = 1; - const SQL_OJ_RIGHT = 2; - const SQL_OJ_FULL = 4; - const SQL_OJ_NESTED = 8; - const SQL_OJ_NOT_ORDERED = 16; - const SQL_OJ_INNER = 32; - const SQL_OJ_ALL_COMPARISON_OPS = 64; +enum SQL_OJ_LEFT = 1; +enum SQL_OJ_RIGHT = 2; +enum SQL_OJ_FULL = 4; +enum SQL_OJ_NESTED = 8; +enum SQL_OJ_NOT_ORDERED = 16; +enum SQL_OJ_INNER = 32; +enum SQL_OJ_ALL_COMPARISON_OPS = 64; } static if (ODBCVER >= 0x0300) { - const SQL_AM_CONNECTION=1; - const SQL_AM_NONE=0; - const SQL_AM_STATEMENT=2; - const SQL_API_SQLALLOCHANDLE=1001; - const SQL_API_SQLBINDPARAM=1002; - const SQL_API_SQLCLOSECURSOR=1003; - const SQL_API_SQLCOLATTRIBUTE=6; - const SQL_API_SQLCOPYDESC=1004; - const SQL_API_SQLENDTRAN=1005; - const SQL_API_SQLFETCHSCROLL=1021; - const SQL_API_SQLFREEHANDLE=1006; - const SQL_API_SQLGETCONNECTATTR=1007; - const SQL_API_SQLGETDESCFIELD=1008; - const SQL_API_SQLGETDESCREC=1009; - const SQL_API_SQLGETDIAGFIELD=1010; - const SQL_API_SQLGETDIAGREC=1011; - const SQL_API_SQLGETENVATTR=1012; - const SQL_API_SQLGETSTMTATTR=1014; - const SQL_API_SQLSETCONNECTATTR=1016; - const SQL_API_SQLSETDESCFIELD=1017; - const SQL_API_SQLSETDESCREC=1018; - const SQL_API_SQLSETENVATTR=1019; - const SQL_API_SQLSETSTMTATTR=1020; - const SQL_ARD_TYPE=-99; - const SQL_AT_ADD_CONSTRAINT=8; - const SQL_ATTR_APP_PARAM_DESC=10011; - const SQL_ATTR_APP_ROW_DESC=10010; - const SQL_ATTR_AUTO_IPD=10001; - const SQL_ATTR_CURSOR_SCROLLABLE=-1; - const SQL_ATTR_CURSOR_SENSITIVITY=-2; - const SQL_ATTR_IMP_PARAM_DESC=10013; - const SQL_ATTR_IMP_ROW_DESC=10012; - const SQL_ATTR_METADATA_ID=10014; - const SQL_ATTR_OUTPUT_NTS=10001; - const SQL_CATALOG_NAME=10003; - const SQL_CODE_DATE=1; - const SQL_CODE_TIME=2; - const SQL_CODE_TIMESTAMP=3; - const SQL_COLLATION_SEQ=10004; - const SQL_CURSOR_SENSITIVITY=10001; - const SQL_DATE_LEN=10; - const SQL_DATETIME=9; - const SQL_DEFAULT=99; +enum SQL_AM_CONNECTION=1; +enum SQL_AM_NONE=0; +enum SQL_AM_STATEMENT=2; +enum SQL_API_SQLALLOCHANDLE=1001; +enum SQL_API_SQLBINDPARAM=1002; +enum SQL_API_SQLCLOSECURSOR=1003; +enum SQL_API_SQLCOLATTRIBUTE=6; +enum SQL_API_SQLCOPYDESC=1004; +enum SQL_API_SQLENDTRAN=1005; +enum SQL_API_SQLFETCHSCROLL=1021; +enum SQL_API_SQLFREEHANDLE=1006; +enum SQL_API_SQLGETCONNECTATTR=1007; +enum SQL_API_SQLGETDESCFIELD=1008; +enum SQL_API_SQLGETDESCREC=1009; +enum SQL_API_SQLGETDIAGFIELD=1010; +enum SQL_API_SQLGETDIAGREC=1011; +enum SQL_API_SQLGETENVATTR=1012; +enum SQL_API_SQLGETSTMTATTR=1014; +enum SQL_API_SQLSETCONNECTATTR=1016; +enum SQL_API_SQLSETDESCFIELD=1017; +enum SQL_API_SQLSETDESCREC=1018; +enum SQL_API_SQLSETENVATTR=1019; +enum SQL_API_SQLSETSTMTATTR=1020; +enum SQL_ARD_TYPE=-99; +enum SQL_AT_ADD_CONSTRAINT=8; +enum SQL_ATTR_APP_PARAM_DESC=10011; +enum SQL_ATTR_APP_ROW_DESC=10010; +enum SQL_ATTR_AUTO_IPD=10001; +enum SQL_ATTR_CURSOR_SCROLLABLE=-1; +enum SQL_ATTR_CURSOR_SENSITIVITY=-2; +enum SQL_ATTR_IMP_PARAM_DESC=10013; +enum SQL_ATTR_IMP_ROW_DESC=10012; +enum SQL_ATTR_METADATA_ID=10014; +enum SQL_ATTR_OUTPUT_NTS=10001; +enum SQL_CATALOG_NAME=10003; +enum SQL_CODE_DATE=1; +enum SQL_CODE_TIME=2; +enum SQL_CODE_TIMESTAMP=3; +enum SQL_COLLATION_SEQ=10004; +enum SQL_CURSOR_SENSITIVITY=10001; +enum SQL_DATE_LEN=10; +enum SQL_DATETIME=9; +enum SQL_DEFAULT=99; - const SQL_DESC_ALLOC_AUTO=1; - const SQL_DESC_ALLOC_USER=2; - const SQL_DESC_ALLOC_TYPE=1099; - const SQL_DESC_COUNT=1001; - const SQL_DESC_TYPE=1002; - const SQL_DESC_LENGTH=1003; - const SQL_DESC_OCTET_LENGTH_PTR=1004; - const SQL_DESC_PRECISION=1005; - const SQL_DESC_SCALE=1006; - const SQL_DESC_DATETIME_INTERVAL_CODE=1007; - const SQL_DESC_NULLABLE=1008; - const SQL_DESC_INDICATOR_PTR=1009; - const SQL_DESC_DATA_PTR=1010; - const SQL_DESC_NAME=1011; - const SQL_DESC_UNNAMED=1012; - const SQL_DESC_OCTET_LENGTH=1013; +enum SQL_DESC_ALLOC_AUTO=1; +enum SQL_DESC_ALLOC_USER=2; +enum SQL_DESC_ALLOC_TYPE=1099; +enum SQL_DESC_COUNT=1001; +enum SQL_DESC_TYPE=1002; +enum SQL_DESC_LENGTH=1003; +enum SQL_DESC_OCTET_LENGTH_PTR=1004; +enum SQL_DESC_PRECISION=1005; +enum SQL_DESC_SCALE=1006; +enum SQL_DESC_DATETIME_INTERVAL_CODE=1007; +enum SQL_DESC_NULLABLE=1008; +enum SQL_DESC_INDICATOR_PTR=1009; +enum SQL_DESC_DATA_PTR=1010; +enum SQL_DESC_NAME=1011; +enum SQL_DESC_UNNAMED=1012; +enum SQL_DESC_OCTET_LENGTH=1013; - const SQL_DESCRIBE_PARAMETER=10002; +enum SQL_DESCRIBE_PARAMETER=10002; - const SQL_DIAG_ALTER_DOMAIN=3; - const SQL_DIAG_ALTER_TABLE=4; - const SQL_DIAG_CALL=7; - const SQL_DIAG_CLASS_ORIGIN=8; - const SQL_DIAG_CONNECTION_NAME=10; - const SQL_DIAG_CREATE_ASSERTION=6; - const SQL_DIAG_CREATE_CHARACTER_SET=8; - const SQL_DIAG_CREATE_COLLATION=10; - const SQL_DIAG_CREATE_DOMAIN=23; - const SQL_DIAG_CREATE_INDEX=-1; - const SQL_DIAG_CREATE_SCHEMA=64; - const SQL_DIAG_CREATE_TABLE=77; - const SQL_DIAG_CREATE_TRANSLATION=79; - const SQL_DIAG_CREATE_VIEW=84; - const SQL_DIAG_DELETE_WHERE=19; - const SQL_DIAG_DROP_ASSERTION=24; - const SQL_DIAG_DROP_CHARACTER_SET=25; - const SQL_DIAG_DROP_COLLATION=26; - const SQL_DIAG_DROP_DOMAIN=27; - const SQL_DIAG_DROP_INDEX=(-2); - const SQL_DIAG_DROP_SCHEMA=31; - const SQL_DIAG_DROP_TABLE=32; - const SQL_DIAG_DROP_TRANSLATION=33; - const SQL_DIAG_DROP_VIEW=36; - const SQL_DIAG_DYNAMIC_DELETE_CURSOR=38; - const SQL_DIAG_DYNAMIC_FUNCTION=7; - const SQL_DIAG_DYNAMIC_FUNCTION_CODE=12; - const SQL_DIAG_DYNAMIC_UPDATE_CURSOR=81; - const SQL_DIAG_GRANT=48; - const SQL_DIAG_INSERT=50; - const SQL_DIAG_MESSAGE_TEXT=6; - const SQL_DIAG_NATIVE=5; - const SQL_DIAG_NUMBER=2; - const SQL_DIAG_RETURNCODE=1; - const SQL_DIAG_REVOKE=59; - const SQL_DIAG_ROW_COUNT=3; - const SQL_DIAG_SELECT_CURSOR=85; - const SQL_DIAG_SERVER_NAME=11; - const SQL_DIAG_SQLSTATE=4; - const SQL_DIAG_SUBCLASS_ORIGIN=9; - const SQL_DIAG_UNKNOWN_STATEMENT=0; - const SQL_DIAG_UPDATE_WHERE=82; +enum SQL_DIAG_ALTER_DOMAIN=3; +enum SQL_DIAG_ALTER_TABLE=4; +enum SQL_DIAG_CALL=7; +enum SQL_DIAG_CLASS_ORIGIN=8; +enum SQL_DIAG_CONNECTION_NAME=10; +enum SQL_DIAG_CREATE_ASSERTION=6; +enum SQL_DIAG_CREATE_CHARACTER_SET=8; +enum SQL_DIAG_CREATE_COLLATION=10; +enum SQL_DIAG_CREATE_DOMAIN=23; +enum SQL_DIAG_CREATE_INDEX=-1; +enum SQL_DIAG_CREATE_SCHEMA=64; +enum SQL_DIAG_CREATE_TABLE=77; +enum SQL_DIAG_CREATE_TRANSLATION=79; +enum SQL_DIAG_CREATE_VIEW=84; +enum SQL_DIAG_DELETE_WHERE=19; +enum SQL_DIAG_DROP_ASSERTION=24; +enum SQL_DIAG_DROP_CHARACTER_SET=25; +enum SQL_DIAG_DROP_COLLATION=26; +enum SQL_DIAG_DROP_DOMAIN=27; +enum SQL_DIAG_DROP_INDEX=(-2); +enum SQL_DIAG_DROP_SCHEMA=31; +enum SQL_DIAG_DROP_TABLE=32; +enum SQL_DIAG_DROP_TRANSLATION=33; +enum SQL_DIAG_DROP_VIEW=36; +enum SQL_DIAG_DYNAMIC_DELETE_CURSOR=38; +enum SQL_DIAG_DYNAMIC_FUNCTION=7; +enum SQL_DIAG_DYNAMIC_FUNCTION_CODE=12; +enum SQL_DIAG_DYNAMIC_UPDATE_CURSOR=81; +enum SQL_DIAG_GRANT=48; +enum SQL_DIAG_INSERT=50; +enum SQL_DIAG_MESSAGE_TEXT=6; +enum SQL_DIAG_NATIVE=5; +enum SQL_DIAG_NUMBER=2; +enum SQL_DIAG_RETURNCODE=1; +enum SQL_DIAG_REVOKE=59; +enum SQL_DIAG_ROW_COUNT=3; +enum SQL_DIAG_SELECT_CURSOR=85; +enum SQL_DIAG_SERVER_NAME=11; +enum SQL_DIAG_SQLSTATE=4; +enum SQL_DIAG_SUBCLASS_ORIGIN=9; +enum SQL_DIAG_UNKNOWN_STATEMENT=0; +enum SQL_DIAG_UPDATE_WHERE=82; - const SQL_FALSE=0; - const SQL_HANDLE_DBC=2; - const SQL_HANDLE_DESC=4; - const SQL_HANDLE_ENV=1; - const SQL_HANDLE_STMT=3; - const SQL_INSENSITIVE=1; - const SQL_MAX_CONCURRENT_ACTIVITIES=1; - const SQL_MAX_DRIVER_CONNECTIONS=0; - const SQL_MAX_IDENTIFIER_LEN=10005; - const SQL_MAXIMUM_CONCURRENT_ACTIVITIES=SQL_MAX_CONCURRENT_ACTIVITIES; - const SQL_MAXIMUM_DRIVER_CONNECTIONS=SQL_MAX_DRIVER_CONNECTIONS; - const SQL_MAXIMUM_IDENTIFIER_LENGTH=SQL_MAX_IDENTIFIER_LEN; - const SQL_NAMED=0; - const SQL_NO_DATA=100; - const SQL_NONSCROLLABLE=0; - const SQL_NULL_HANDLE=0L; - const SQL_NULL_HDESC=0; - const SQL_OJ_CAPABILITIES=115; - const SQL_OUTER_JOIN_CAPABILITIES=SQL_OJ_CAPABILITIES; - const SQL_PC_NON_PSEUDO=1; +enum SQL_FALSE=0; +enum SQL_HANDLE_DBC=2; +enum SQL_HANDLE_DESC=4; +enum SQL_HANDLE_ENV=1; +enum SQL_HANDLE_STMT=3; +enum SQL_INSENSITIVE=1; +enum SQL_MAX_CONCURRENT_ACTIVITIES=1; +enum SQL_MAX_DRIVER_CONNECTIONS=0; +enum SQL_MAX_IDENTIFIER_LEN=10005; +enum SQL_MAXIMUM_CONCURRENT_ACTIVITIES=SQL_MAX_CONCURRENT_ACTIVITIES; +enum SQL_MAXIMUM_DRIVER_CONNECTIONS=SQL_MAX_DRIVER_CONNECTIONS; +enum SQL_MAXIMUM_IDENTIFIER_LENGTH=SQL_MAX_IDENTIFIER_LEN; +enum SQL_NAMED=0; +enum SQL_NO_DATA=100; +enum SQL_NONSCROLLABLE=0; +enum SQL_NULL_HANDLE=0L; +enum SQL_NULL_HDESC=0; +enum SQL_OJ_CAPABILITIES=115; +enum SQL_OUTER_JOIN_CAPABILITIES=SQL_OJ_CAPABILITIES; +enum SQL_PC_NON_PSEUDO=1; - const SQL_PRED_NONE=0; - const SQL_PRED_CHAR=1; - const SQL_PRED_BASIC=2; +enum SQL_PRED_NONE=0; +enum SQL_PRED_CHAR=1; +enum SQL_PRED_BASIC=2; - const SQL_ROW_IDENTIFIER=1; - const SQL_SCROLLABLE=1; - const SQL_SENSITIVE=2; - const SQL_TIME_LEN=8; - const SQL_TIMESTAMP_LEN=19; - const SQL_TRUE=1; - const SQL_TYPE_DATE=91; - const SQL_TYPE_TIME=92; - const SQL_TYPE_TIMESTAMP=93; - const SQL_UNNAMED=1; - const SQL_UNSPECIFIED=0; - const SQL_XOPEN_CLI_YEAR=10000; +enum SQL_ROW_IDENTIFIER=1; +enum SQL_SCROLLABLE=1; +enum SQL_SENSITIVE=2; +enum SQL_TIME_LEN=8; +enum SQL_TIMESTAMP_LEN=19; +enum SQL_TRUE=1; +enum SQL_TYPE_DATE=91; +enum SQL_TYPE_TIME=92; +enum SQL_TYPE_TIMESTAMP=93; +enum SQL_UNNAMED=1; +enum SQL_UNSPECIFIED=0; +enum SQL_XOPEN_CLI_YEAR=10000; }//#endif /* ODBCVER >= 0x0300 */ extern (Windows) { diff --git a/src/core/sys/windows/sqlext.d b/src/core/sys/windows/sqlext.d index e3a793a2aa..842f721205 100644 --- a/src/core/sys/windows/sqlext.d +++ b/src/core/sys/windows/sqlext.d @@ -19,169 +19,169 @@ version (Windows): public import core.sys.windows.sql; private import core.sys.windows.windef; -const SQL_SPEC_MAJOR = 3; -const SQL_SPEC_MINOR = 51; +enum SQL_SPEC_MAJOR = 3; +enum SQL_SPEC_MINOR = 51; const char[] SQL_SPEC_STRING = "03.51"; -const SQL_ACCESS_MODE = 101; -const SQL_ACTIVE_CONNECTIONS = 0; -const SQL_ACTIVE_STATEMENTS = 1; - -const SQL_DATE = 9; -const SQL_TIME = 10; -const SQL_SIGNED_OFFSET = -20; -const SQL_TINYINT = -6; -const SQL_TIMESTAMP = 11; -const SQL_UNSIGNED_OFFSET = -22; - -const SQL_ADD = 4; -const SQL_ALL_EXCEPT_LIKE = 2; - -const SQL_API_ALL_FUNCTIONS = 0; -const SQL_API_SQLCOLATTRIBUTES = 6; -const SQL_API_SQLDRIVERCONNECT = 41; -const SQL_API_SQLBROWSECONNECT = 55; -const SQL_API_SQLCOLUMNPRIVILEGES = 56; -const SQL_API_SQLDESCRIBEPARAM = 58; -const SQL_API_SQLEXTENDEDFETCH = 59; -const SQL_API_SQLFOREIGNKEYS = 60; -const SQL_API_SQLMORERESULTS = 61; -const SQL_API_SQLNATIVESQL = 62; -const SQL_API_SQLNUMPARAMS = 63; -const SQL_API_SQLPARAMOPTIONS = 64; -const SQL_API_SQLPRIMARYKEYS = 65; -const SQL_API_SQLPROCEDURECOLUMNS = 66; -const SQL_API_SQLPROCEDURES = 67; -const SQL_API_SQLSETPOS = 68; -const SQL_API_SQLSETSCROLLOPTIONS = 69; -const SQL_API_SQLTABLEPRIVILEGES = 70; -const SQL_API_SQLDRIVERS = 71; -const SQL_API_SQLBINDPARAMETER = 72; -const SQL_API_LOADBYORDINAL = 199; - -const SQL_ASYNC_ENABLE = 4; -const SQL_ASYNC_ENABLE_OFF = 0UL; -const SQL_ASYNC_ENABLE_ON = 1UL; -const SQL_ASYNC_ENABLE_DEFAULT = SQL_ASYNC_ENABLE_OFF; - -const SQL_ATTR_CONNECTION_DEAD = 1209; -const SQL_ATTR_READONLY = 0; -const SQL_ATTR_READWRITE_UNKNOWN = 2; -const SQL_ATTR_WRITE = 1; - -const SQL_AUTOCOMMIT = 102; -const SQL_AUTOCOMMIT_OFF = 0UL; -const SQL_AUTOCOMMIT_ON = 1UL; -const SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON; -const SQL_BEST_ROWID = 1; -const SQL_BIGINT = -5; -const SQL_BINARY = -2; -const SQL_BIND_BY_COLUMN = 0UL; -const SQL_BIND_TYPE = 5; -const SQL_BIND_TYPE_DEFAULT = SQL_BIND_BY_COLUMN; -const SQL_BIT = -7; - -const SQL_BOOKMARK_PERSISTENCE = 82; +enum SQL_ACCESS_MODE = 101; +enum SQL_ACTIVE_CONNECTIONS = 0; +enum SQL_ACTIVE_STATEMENTS = 1; + +enum SQL_DATE = 9; +enum SQL_TIME = 10; +enum SQL_SIGNED_OFFSET = -20; +enum SQL_TINYINT = -6; +enum SQL_TIMESTAMP = 11; +enum SQL_UNSIGNED_OFFSET = -22; + +enum SQL_ADD = 4; +enum SQL_ALL_EXCEPT_LIKE = 2; + +enum SQL_API_ALL_FUNCTIONS = 0; +enum SQL_API_SQLCOLATTRIBUTES = 6; +enum SQL_API_SQLDRIVERCONNECT = 41; +enum SQL_API_SQLBROWSECONNECT = 55; +enum SQL_API_SQLCOLUMNPRIVILEGES = 56; +enum SQL_API_SQLDESCRIBEPARAM = 58; +enum SQL_API_SQLEXTENDEDFETCH = 59; +enum SQL_API_SQLFOREIGNKEYS = 60; +enum SQL_API_SQLMORERESULTS = 61; +enum SQL_API_SQLNATIVESQL = 62; +enum SQL_API_SQLNUMPARAMS = 63; +enum SQL_API_SQLPARAMOPTIONS = 64; +enum SQL_API_SQLPRIMARYKEYS = 65; +enum SQL_API_SQLPROCEDURECOLUMNS = 66; +enum SQL_API_SQLPROCEDURES = 67; +enum SQL_API_SQLSETPOS = 68; +enum SQL_API_SQLSETSCROLLOPTIONS = 69; +enum SQL_API_SQLTABLEPRIVILEGES = 70; +enum SQL_API_SQLDRIVERS = 71; +enum SQL_API_SQLBINDPARAMETER = 72; +enum SQL_API_LOADBYORDINAL = 199; + +enum SQL_ASYNC_ENABLE = 4; +enum SQL_ASYNC_ENABLE_OFF = 0UL; +enum SQL_ASYNC_ENABLE_ON = 1UL; +enum SQL_ASYNC_ENABLE_DEFAULT = SQL_ASYNC_ENABLE_OFF; + +enum SQL_ATTR_CONNECTION_DEAD = 1209; +enum SQL_ATTR_READONLY = 0; +enum SQL_ATTR_READWRITE_UNKNOWN = 2; +enum SQL_ATTR_WRITE = 1; + +enum SQL_AUTOCOMMIT = 102; +enum SQL_AUTOCOMMIT_OFF = 0UL; +enum SQL_AUTOCOMMIT_ON = 1UL; +enum SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON; +enum SQL_BEST_ROWID = 1; +enum SQL_BIGINT = -5; +enum SQL_BINARY = -2; +enum SQL_BIND_BY_COLUMN = 0UL; +enum SQL_BIND_TYPE = 5; +enum SQL_BIND_TYPE_DEFAULT = SQL_BIND_BY_COLUMN; +enum SQL_BIT = -7; + +enum SQL_BOOKMARK_PERSISTENCE = 82; // for BOOKMARK_PERSISTENCE -const SQL_BP_CLOSE = 1; -const SQL_BP_DELETE = 2; -const SQL_BP_DROP = 4; -const SQL_BP_TRANSACTION = 8; -const SQL_BP_UPDATE = 16; -const SQL_BP_OTHER_HSTMT = 32; -const SQL_BP_SCROLL = 64; - -const SQL_C_BINARY = SQL_BINARY; -const SQL_C_BIT = SQL_BIT; -const SQL_C_CHAR = SQL_CHAR; -const SQL_C_DATE = SQL_DATE; -const SQL_C_DOUBLE = SQL_DOUBLE; -const SQL_C_FLOAT = SQL_REAL; -const SQL_C_LONG = SQL_INTEGER; -const SQL_C_SHORT = SQL_SMALLINT; -const SQL_C_SLONG = SQL_C_LONG+SQL_SIGNED_OFFSET; -const SQL_C_SSHORT = SQL_C_SHORT+SQL_SIGNED_OFFSET; -const SQL_C_STINYINT = SQL_TINYINT+SQL_SIGNED_OFFSET; -const SQL_C_TIME = SQL_TIME; -const SQL_C_TIMESTAMP = SQL_TIMESTAMP; -const SQL_C_TINYINT = SQL_TINYINT; -const SQL_C_ULONG = SQL_C_LONG+SQL_UNSIGNED_OFFSET; -const SQL_C_USHORT = SQL_C_SHORT+SQL_UNSIGNED_OFFSET; -const SQL_C_UTINYINT = SQL_TINYINT+SQL_UNSIGNED_OFFSET; -const SQL_C_BOOKMARK = SQL_C_ULONG; -const SQL_C_DEFAULT = 99; - -const SQL_CASCADE = 0; -const SQL_CB_NON_NULL = 1; -const SQL_CB_NULL = 0; +enum SQL_BP_CLOSE = 1; +enum SQL_BP_DELETE = 2; +enum SQL_BP_DROP = 4; +enum SQL_BP_TRANSACTION = 8; +enum SQL_BP_UPDATE = 16; +enum SQL_BP_OTHER_HSTMT = 32; +enum SQL_BP_SCROLL = 64; + +enum SQL_C_BINARY = SQL_BINARY; +enum SQL_C_BIT = SQL_BIT; +enum SQL_C_CHAR = SQL_CHAR; +enum SQL_C_DATE = SQL_DATE; +enum SQL_C_DOUBLE = SQL_DOUBLE; +enum SQL_C_FLOAT = SQL_REAL; +enum SQL_C_LONG = SQL_INTEGER; +enum SQL_C_SHORT = SQL_SMALLINT; +enum SQL_C_SLONG = SQL_C_LONG+SQL_SIGNED_OFFSET; +enum SQL_C_SSHORT = SQL_C_SHORT+SQL_SIGNED_OFFSET; +enum SQL_C_STINYINT = SQL_TINYINT+SQL_SIGNED_OFFSET; +enum SQL_C_TIME = SQL_TIME; +enum SQL_C_TIMESTAMP = SQL_TIMESTAMP; +enum SQL_C_TINYINT = SQL_TINYINT; +enum SQL_C_ULONG = SQL_C_LONG+SQL_UNSIGNED_OFFSET; +enum SQL_C_USHORT = SQL_C_SHORT+SQL_UNSIGNED_OFFSET; +enum SQL_C_UTINYINT = SQL_TINYINT+SQL_UNSIGNED_OFFSET; +enum SQL_C_BOOKMARK = SQL_C_ULONG; +enum SQL_C_DEFAULT = 99; + +enum SQL_CASCADE = 0; +enum SQL_CB_NON_NULL = 1; +enum SQL_CB_NULL = 0; deprecated { -const SQL_CC_CLOSE = SQL_CB_CLOSE;/* deprecated */ -const SQL_CC_DELETE = SQL_CB_DELETE;/* deprecated */ -const SQL_CC_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ +enum SQL_CC_CLOSE = SQL_CB_CLOSE;/* deprecated */ +enum SQL_CC_DELETE = SQL_CB_DELETE;/* deprecated */ +enum SQL_CC_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ } -const SQL_CD_FALSE = 0L; -const SQL_CD_TRUE = 1L; - -const SQL_CN_ANY = 2; -const SQL_CN_DIFFERENT = 1; -const SQL_CN_NONE = 0; - -const SQL_COLUMN_ALIAS = 87; - -const SQL_COLUMN_COUNT = 0; -const SQL_COLUMN_NAME = 1; -const SQL_COLUMN_DISPLAY_SIZE = 6; -const SQL_COLUMN_LABEL = 18; -const SQL_COLUMN_LENGTH = 3; -const SQL_COLUMN_MONEY = 9; -const SQL_COLUMN_NULLABLE = 7; -const SQL_COLUMN_OWNER_NAME = 16; -const SQL_COLUMN_PRECISION = 4; -const SQL_COLUMN_QUALIFIER_NAME = 17; -const SQL_COLUMN_SCALE = 5; -const SQL_COLUMN_UNSIGNED = 8; -const SQL_COLUMN_UPDATABLE = 10; -const SQL_COLUMN_AUTO_INCREMENT = 11; -const SQL_COLUMN_CASE_SENSITIVE = 12; -const SQL_COLUMN_SEARCHABLE = 13; -const SQL_COLUMN_TYPE = 2; -const SQL_COLUMN_TYPE_NAME = 14; -const SQL_COLUMN_TABLE_NAME = 15; - -const SQL_CONCAT_NULL_BEHAVIOR = 22; - -const SQL_CONCUR_READ_ONLY = 1; -const SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; -const SQL_CONCUR_LOCK = 2; -const SQL_CONCUR_ROWVER = 3; -const SQL_CONCUR_TIMESTAMP = SQL_CONCUR_ROWVER;/* deprecated */ -const SQL_CONCUR_VALUES = 4; - -const SQL_CONCURRENCY = 7; -const SQL_CONVERT_BIGINT = 53; -const SQL_CONVERT_BINARY = 54; -const SQL_CONVERT_BIT = 55; -const SQL_CONVERT_CHAR = 56; -const SQL_CONVERT_DATE = 57; -const SQL_CONVERT_DECIMAL = 58; -const SQL_CONVERT_DOUBLE = 59; -const SQL_CONVERT_FLOAT = 60; -const SQL_CONVERT_FUNCTIONS = 48; -const SQL_CONVERT_INTEGER = 61; -const SQL_CONVERT_LONGVARBINARY = 71; -const SQL_CONVERT_LONGVARCHAR = 62; -const SQL_CONVERT_NUMERIC = 63; -const SQL_CONVERT_REAL = 64; -const SQL_CONVERT_SMALLINT = 65; -const SQL_CONVERT_TIME = 66; -const SQL_CONVERT_TIMESTAMP = 67; -const SQL_CONVERT_TINYINT = 68; -const SQL_CONVERT_VARBINARY = 69; -const SQL_CONVERT_VARCHAR = 70; -const SQL_CORRELATION_NAME = 74; -const SQL_CR_CLOSE = SQL_CB_CLOSE;/* deprecated */ -const SQL_CR_DELETE = SQL_CB_DELETE;/* deprecated */ -const SQL_CR_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ +enum SQL_CD_FALSE = 0L; +enum SQL_CD_TRUE = 1L; + +enum SQL_CN_ANY = 2; +enum SQL_CN_DIFFERENT = 1; +enum SQL_CN_NONE = 0; + +enum SQL_COLUMN_ALIAS = 87; + +enum SQL_COLUMN_COUNT = 0; +enum SQL_COLUMN_NAME = 1; +enum SQL_COLUMN_DISPLAY_SIZE = 6; +enum SQL_COLUMN_LABEL = 18; +enum SQL_COLUMN_LENGTH = 3; +enum SQL_COLUMN_MONEY = 9; +enum SQL_COLUMN_NULLABLE = 7; +enum SQL_COLUMN_OWNER_NAME = 16; +enum SQL_COLUMN_PRECISION = 4; +enum SQL_COLUMN_QUALIFIER_NAME = 17; +enum SQL_COLUMN_SCALE = 5; +enum SQL_COLUMN_UNSIGNED = 8; +enum SQL_COLUMN_UPDATABLE = 10; +enum SQL_COLUMN_AUTO_INCREMENT = 11; +enum SQL_COLUMN_CASE_SENSITIVE = 12; +enum SQL_COLUMN_SEARCHABLE = 13; +enum SQL_COLUMN_TYPE = 2; +enum SQL_COLUMN_TYPE_NAME = 14; +enum SQL_COLUMN_TABLE_NAME = 15; + +enum SQL_CONCAT_NULL_BEHAVIOR = 22; + +enum SQL_CONCUR_READ_ONLY = 1; +enum SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; +enum SQL_CONCUR_LOCK = 2; +enum SQL_CONCUR_ROWVER = 3; +enum SQL_CONCUR_TIMESTAMP = SQL_CONCUR_ROWVER;/* deprecated */ +enum SQL_CONCUR_VALUES = 4; + +enum SQL_CONCURRENCY = 7; +enum SQL_CONVERT_BIGINT = 53; +enum SQL_CONVERT_BINARY = 54; +enum SQL_CONVERT_BIT = 55; +enum SQL_CONVERT_CHAR = 56; +enum SQL_CONVERT_DATE = 57; +enum SQL_CONVERT_DECIMAL = 58; +enum SQL_CONVERT_DOUBLE = 59; +enum SQL_CONVERT_FLOAT = 60; +enum SQL_CONVERT_FUNCTIONS = 48; +enum SQL_CONVERT_INTEGER = 61; +enum SQL_CONVERT_LONGVARBINARY = 71; +enum SQL_CONVERT_LONGVARCHAR = 62; +enum SQL_CONVERT_NUMERIC = 63; +enum SQL_CONVERT_REAL = 64; +enum SQL_CONVERT_SMALLINT = 65; +enum SQL_CONVERT_TIME = 66; +enum SQL_CONVERT_TIMESTAMP = 67; +enum SQL_CONVERT_TINYINT = 68; +enum SQL_CONVERT_VARBINARY = 69; +enum SQL_CONVERT_VARCHAR = 70; +enum SQL_CORRELATION_NAME = 74; +enum SQL_CR_CLOSE = SQL_CB_CLOSE;/* deprecated */ +enum SQL_CR_DELETE = SQL_CB_DELETE;/* deprecated */ +enum SQL_CR_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ enum : ULONG { SQL_CUR_USE_IF_NEEDED = 0, @@ -190,361 +190,361 @@ enum : ULONG { SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER } -const SQL_CURRENT_QUALIFIER = 109; -const SQL_CURSOR_DYNAMIC = 2UL; -const SQL_CURSOR_FORWARD_ONLY = 0UL; -const SQL_CURSOR_KEYSET_DRIVEN = 1UL; -const SQL_CURSOR_ROLLBACK_BEHAVIOR = 24; -const SQL_CURSOR_STATIC = 3UL; -const SQL_CURSOR_TYPE = 6; -const SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY; - -const SQL_CV_CASCADED = 0x00000004L; -const SQL_CV_CHECK_OPTION = 0x00000002L; -const SQL_CV_CREATE_VIEW = 0x00000001L; -const SQL_CV_LOCAL = 0x00000008L; -const SQL_CVT_BIGINT = 0x00004000L; -const SQL_CVT_BINARY = 0x00000400L; -const SQL_CVT_BIT = 0x00001000L; -const SQL_CVT_CHAR = 0x00000001L; -const SQL_CVT_DATE = 0x00008000L; -const SQL_CVT_DECIMAL = 0x00000004L; -const SQL_CVT_DOUBLE = 0x00000080L; -const SQL_CVT_FLOAT = 0x00000020L; -const SQL_CVT_INTEGER = 0x00000008L; -const SQL_CVT_LONGVARBINARY = 0x00040000L; -const SQL_CVT_LONGVARCHAR = 0x00000200L; -const SQL_CVT_NUMERIC = 0x00000002L; -const SQL_CVT_REAL = 0x00000040L; -const SQL_CVT_SMALLINT = 0x00000010L; -const SQL_CVT_TIME = 0x00010000L; -const SQL_CVT_TIMESTAMP = 0x00020000L; -const SQL_CVT_TINYINT = 0x00002000L; -const SQL_CVT_VARBINARY = 0x00000800L; -const SQL_CVT_VARCHAR = 0x00000100L; -const SQL_DATABASE_NAME = 16;/* deprecated */ - -const SQL_DEFAULT_PARAM = -5; -const SQL_DELETE = 3; - -const SQL_DRIVER_COMPLETE = 1; -const SQL_DRIVER_COMPLETE_REQUIRED = 3; -const SQL_DRIVER_HDBC = 3; -const SQL_DRIVER_HENV = 4; -const SQL_DRIVER_HLIB = 76; -const SQL_DRIVER_HSTMT = 5; -const SQL_DRIVER_NAME = 6; -const SQL_DRIVER_NOPROMPT = 0; -const SQL_DRIVER_ODBC_VER = 77; -const SQL_DRIVER_PROMPT = 2; -const SQL_DRIVER_VER = 7; - -const SQL_DTC_ENLIST_EXPENSIVE = 1; -const SQL_DTC_UNENLIST_EXPENSIVE = 2; -const SQL_DTC_TRANSITION_COST = 1750; -const SQL_ENSURE = 1; -const SQL_ENTIRE_ROWSET = 0; -const SQL_EXPRESSIONS_IN_ORDERBY = 27; -const SQL_FD_FETCH_BOOKMARK = 128; -const SQL_FD_FETCH_PREV = SQL_FD_FETCH_PRIOR;/* deprecated */ -const SQL_FD_FETCH_RESUME = 64; -const SQL_FETCH_BOOKMARK = 8; -const SQL_FETCH_PREV = SQL_FETCH_PRIOR;/* deprecated */ -const SQL_FETCH_RESUME = 7;/* deprecated */ - -const SQL_FILE_NOT_SUPPORTED = 0x0000; -const SQL_FILE_TABLE = 0x0001; -const SQL_FILE_QUALIFIER = 0x0002; -const SQL_FILE_CATALOG = SQL_FILE_QUALIFIER; -const SQL_FILE_USAGE = 84; - -const SQL_FN_CVT_CONVERT = 0x00000001L; -const SQL_FN_NUM_ABS = 0x00000001L; -const SQL_FN_NUM_ACOS = 0x00000002L; -const SQL_FN_NUM_ASIN = 0x00000004L; -const SQL_FN_NUM_ATAN = 0x00000008L; -const SQL_FN_NUM_ATAN2 = 0x00000010L; -const SQL_FN_NUM_CEILING = 0x00000020L; -const SQL_FN_NUM_COS = 0x00000040L; -const SQL_FN_NUM_COT = 0x00000080L; -const SQL_FN_NUM_DEGREES = 0x00040000L; -const SQL_FN_NUM_EXP = 0x00000100L; -const SQL_FN_NUM_FLOOR = 0x00000200L; -const SQL_FN_NUM_LOG = 0x00000400L; -const SQL_FN_NUM_LOG10 = 0x00080000L; -const SQL_FN_NUM_MOD = 0x00000800L; -const SQL_FN_NUM_PI = 0x00010000L; -const SQL_FN_NUM_POWER = 0x00100000L; -const SQL_FN_NUM_RADIANS = 0x00200000L; -const SQL_FN_NUM_RAND = 0x00020000L; -const SQL_FN_NUM_ROUND = 0x00400000L; -const SQL_FN_NUM_SIGN = 0x00001000L; -const SQL_FN_NUM_SIN = 0x00002000L; -const SQL_FN_NUM_SQRT = 0x00004000L; -const SQL_FN_NUM_TAN = 0x00008000L; -const SQL_FN_NUM_TRUNCATE = 0x00800000L; -const SQL_FN_STR_ASCII = 0x00002000L; -const SQL_FN_STR_CHAR = 0x00004000L; -const SQL_FN_STR_CONCAT = 0x00000001L; -const SQL_FN_STR_DIFFERENCE = 0x00008000L; -const SQL_FN_STR_INSERT = 0x00000002L; -const SQL_FN_STR_LCASE = 0x00000040L; -const SQL_FN_STR_LEFT = 0x00000004L; -const SQL_FN_STR_LENGTH = 0x00000010L; -const SQL_FN_STR_LOCATE = 0x00000020L; -const SQL_FN_STR_LOCATE_2 = 0x00010000L; -const SQL_FN_STR_LTRIM = 0x00000008L; -const SQL_FN_STR_REPEAT = 0x00000080L; -const SQL_FN_STR_REPLACE = 0x00000100L; -const SQL_FN_STR_RIGHT = 0x00000200L; -const SQL_FN_STR_RTRIM = 0x00000400L; -const SQL_FN_STR_SOUNDEX = 0x00020000L; -const SQL_FN_STR_SPACE = 0x00040000L; -const SQL_FN_STR_SUBSTRING = 0x00000800L; -const SQL_FN_STR_UCASE = 0x00001000L; -const SQL_FN_SYS_DBNAME = 0x00000002L; -const SQL_FN_SYS_IFNULL = 0x00000004L; -const SQL_FN_SYS_USERNAME = 0x00000001L; -const SQL_FN_TD_CURDATE = 0x00000002L; -const SQL_FN_TD_CURTIME = 0x00000200L; -const SQL_FN_TD_DAYNAME = 0x00008000L; -const SQL_FN_TD_DAYOFMONTH = 0x00000004L; -const SQL_FN_TD_DAYOFWEEK = 0x00000008L; -const SQL_FN_TD_DAYOFYEAR = 0x00000010L; -const SQL_FN_TD_HOUR = 0x00000400L; -const SQL_FN_TD_MINUTE = 0x00000800L; -const SQL_FN_TD_MONTH = 0x00000020L; -const SQL_FN_TD_MONTHNAME = 0x00010000L; -const SQL_FN_TD_NOW = 0x00000001L; -const SQL_FN_TD_QUARTER = 0x00000040L; -const SQL_FN_TD_SECOND = 0x00001000L; -const SQL_FN_TD_TIMESTAMPADD = 0x00002000L; -const SQL_FN_TD_TIMESTAMPDIFF = 0x00004000L; -const SQL_FN_TD_WEEK = 0x00000080L; -const SQL_FN_TD_YEAR = 0x00000100L; -const SQL_FN_TSI_DAY = 0x00000010L; -const SQL_FN_TSI_FRAC_SECOND = 0x00000001L; -const SQL_FN_TSI_HOUR = 0x00000008L; -const SQL_FN_TSI_MINUTE = 0x00000004L; -const SQL_FN_TSI_MONTH = 0x00000040L; -const SQL_FN_TSI_QUARTER = 0x00000080L; -const SQL_FN_TSI_SECOND = 0x00000002L; -const SQL_FN_TSI_WEEK = 0x00000020L; -const SQL_FN_TSI_YEAR = 0x00000100L; -const SQL_GB_GROUP_BY_CONTAINS_SELECT = 2; -const SQL_GB_GROUP_BY_EQUALS_SELECT = 1; -const SQL_GB_NO_RELATION = 3; -const SQL_GB_NOT_SUPPORTED = 0; -const SQL_GD_BLOCK = 4; -const SQL_GD_BOUND = 8; -const SQL_GET_BOOKMARK = 13; -const SQL_GROUP_BY = 88; -const SQL_IGNORE = -6; -const SQL_INFO_FIRST = 0; -const SQL_KEYSET_SIZE = 8; -const SQL_KEYSET_SIZE_DEFAULT = 0UL; -const SQL_KEYWORDS = 89; -const SQL_LCK_EXCLUSIVE = 2; -const SQL_LCK_NO_CHANGE = 1; -const SQL_LCK_UNLOCK = 4; - -const SQL_LEN_BINARY_ATTR_OFFSET = -100; -const SQL_LEN_DATA_AT_EXEC_OFFSET = -100; +enum SQL_CURRENT_QUALIFIER = 109; +enum SQL_CURSOR_DYNAMIC = 2UL; +enum SQL_CURSOR_FORWARD_ONLY = 0UL; +enum SQL_CURSOR_KEYSET_DRIVEN = 1UL; +enum SQL_CURSOR_ROLLBACK_BEHAVIOR = 24; +enum SQL_CURSOR_STATIC = 3UL; +enum SQL_CURSOR_TYPE = 6; +enum SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY; + +enum SQL_CV_CASCADED = 0x00000004L; +enum SQL_CV_CHECK_OPTION = 0x00000002L; +enum SQL_CV_CREATE_VIEW = 0x00000001L; +enum SQL_CV_LOCAL = 0x00000008L; +enum SQL_CVT_BIGINT = 0x00004000L; +enum SQL_CVT_BINARY = 0x00000400L; +enum SQL_CVT_BIT = 0x00001000L; +enum SQL_CVT_CHAR = 0x00000001L; +enum SQL_CVT_DATE = 0x00008000L; +enum SQL_CVT_DECIMAL = 0x00000004L; +enum SQL_CVT_DOUBLE = 0x00000080L; +enum SQL_CVT_FLOAT = 0x00000020L; +enum SQL_CVT_INTEGER = 0x00000008L; +enum SQL_CVT_LONGVARBINARY = 0x00040000L; +enum SQL_CVT_LONGVARCHAR = 0x00000200L; +enum SQL_CVT_NUMERIC = 0x00000002L; +enum SQL_CVT_REAL = 0x00000040L; +enum SQL_CVT_SMALLINT = 0x00000010L; +enum SQL_CVT_TIME = 0x00010000L; +enum SQL_CVT_TIMESTAMP = 0x00020000L; +enum SQL_CVT_TINYINT = 0x00002000L; +enum SQL_CVT_VARBINARY = 0x00000800L; +enum SQL_CVT_VARCHAR = 0x00000100L; +enum SQL_DATABASE_NAME = 16;/* deprecated */ + +enum SQL_DEFAULT_PARAM = -5; +enum SQL_DELETE = 3; + +enum SQL_DRIVER_COMPLETE = 1; +enum SQL_DRIVER_COMPLETE_REQUIRED = 3; +enum SQL_DRIVER_HDBC = 3; +enum SQL_DRIVER_HENV = 4; +enum SQL_DRIVER_HLIB = 76; +enum SQL_DRIVER_HSTMT = 5; +enum SQL_DRIVER_NAME = 6; +enum SQL_DRIVER_NOPROMPT = 0; +enum SQL_DRIVER_ODBC_VER = 77; +enum SQL_DRIVER_PROMPT = 2; +enum SQL_DRIVER_VER = 7; + +enum SQL_DTC_ENLIST_EXPENSIVE = 1; +enum SQL_DTC_UNENLIST_EXPENSIVE = 2; +enum SQL_DTC_TRANSITION_COST = 1750; +enum SQL_ENSURE = 1; +enum SQL_ENTIRE_ROWSET = 0; +enum SQL_EXPRESSIONS_IN_ORDERBY = 27; +enum SQL_FD_FETCH_BOOKMARK = 128; +enum SQL_FD_FETCH_PREV = SQL_FD_FETCH_PRIOR;/* deprecated */ +enum SQL_FD_FETCH_RESUME = 64; +enum SQL_FETCH_BOOKMARK = 8; +enum SQL_FETCH_PREV = SQL_FETCH_PRIOR;/* deprecated */ +enum SQL_FETCH_RESUME = 7;/* deprecated */ + +enum SQL_FILE_NOT_SUPPORTED = 0x0000; +enum SQL_FILE_TABLE = 0x0001; +enum SQL_FILE_QUALIFIER = 0x0002; +enum SQL_FILE_CATALOG = SQL_FILE_QUALIFIER; +enum SQL_FILE_USAGE = 84; + +enum SQL_FN_CVT_CONVERT = 0x00000001L; +enum SQL_FN_NUM_ABS = 0x00000001L; +enum SQL_FN_NUM_ACOS = 0x00000002L; +enum SQL_FN_NUM_ASIN = 0x00000004L; +enum SQL_FN_NUM_ATAN = 0x00000008L; +enum SQL_FN_NUM_ATAN2 = 0x00000010L; +enum SQL_FN_NUM_CEILING = 0x00000020L; +enum SQL_FN_NUM_COS = 0x00000040L; +enum SQL_FN_NUM_COT = 0x00000080L; +enum SQL_FN_NUM_DEGREES = 0x00040000L; +enum SQL_FN_NUM_EXP = 0x00000100L; +enum SQL_FN_NUM_FLOOR = 0x00000200L; +enum SQL_FN_NUM_LOG = 0x00000400L; +enum SQL_FN_NUM_LOG10 = 0x00080000L; +enum SQL_FN_NUM_MOD = 0x00000800L; +enum SQL_FN_NUM_PI = 0x00010000L; +enum SQL_FN_NUM_POWER = 0x00100000L; +enum SQL_FN_NUM_RADIANS = 0x00200000L; +enum SQL_FN_NUM_RAND = 0x00020000L; +enum SQL_FN_NUM_ROUND = 0x00400000L; +enum SQL_FN_NUM_SIGN = 0x00001000L; +enum SQL_FN_NUM_SIN = 0x00002000L; +enum SQL_FN_NUM_SQRT = 0x00004000L; +enum SQL_FN_NUM_TAN = 0x00008000L; +enum SQL_FN_NUM_TRUNCATE = 0x00800000L; +enum SQL_FN_STR_ASCII = 0x00002000L; +enum SQL_FN_STR_CHAR = 0x00004000L; +enum SQL_FN_STR_CONCAT = 0x00000001L; +enum SQL_FN_STR_DIFFERENCE = 0x00008000L; +enum SQL_FN_STR_INSERT = 0x00000002L; +enum SQL_FN_STR_LCASE = 0x00000040L; +enum SQL_FN_STR_LEFT = 0x00000004L; +enum SQL_FN_STR_LENGTH = 0x00000010L; +enum SQL_FN_STR_LOCATE = 0x00000020L; +enum SQL_FN_STR_LOCATE_2 = 0x00010000L; +enum SQL_FN_STR_LTRIM = 0x00000008L; +enum SQL_FN_STR_REPEAT = 0x00000080L; +enum SQL_FN_STR_REPLACE = 0x00000100L; +enum SQL_FN_STR_RIGHT = 0x00000200L; +enum SQL_FN_STR_RTRIM = 0x00000400L; +enum SQL_FN_STR_SOUNDEX = 0x00020000L; +enum SQL_FN_STR_SPACE = 0x00040000L; +enum SQL_FN_STR_SUBSTRING = 0x00000800L; +enum SQL_FN_STR_UCASE = 0x00001000L; +enum SQL_FN_SYS_DBNAME = 0x00000002L; +enum SQL_FN_SYS_IFNULL = 0x00000004L; +enum SQL_FN_SYS_USERNAME = 0x00000001L; +enum SQL_FN_TD_CURDATE = 0x00000002L; +enum SQL_FN_TD_CURTIME = 0x00000200L; +enum SQL_FN_TD_DAYNAME = 0x00008000L; +enum SQL_FN_TD_DAYOFMONTH = 0x00000004L; +enum SQL_FN_TD_DAYOFWEEK = 0x00000008L; +enum SQL_FN_TD_DAYOFYEAR = 0x00000010L; +enum SQL_FN_TD_HOUR = 0x00000400L; +enum SQL_FN_TD_MINUTE = 0x00000800L; +enum SQL_FN_TD_MONTH = 0x00000020L; +enum SQL_FN_TD_MONTHNAME = 0x00010000L; +enum SQL_FN_TD_NOW = 0x00000001L; +enum SQL_FN_TD_QUARTER = 0x00000040L; +enum SQL_FN_TD_SECOND = 0x00001000L; +enum SQL_FN_TD_TIMESTAMPADD = 0x00002000L; +enum SQL_FN_TD_TIMESTAMPDIFF = 0x00004000L; +enum SQL_FN_TD_WEEK = 0x00000080L; +enum SQL_FN_TD_YEAR = 0x00000100L; +enum SQL_FN_TSI_DAY = 0x00000010L; +enum SQL_FN_TSI_FRAC_SECOND = 0x00000001L; +enum SQL_FN_TSI_HOUR = 0x00000008L; +enum SQL_FN_TSI_MINUTE = 0x00000004L; +enum SQL_FN_TSI_MONTH = 0x00000040L; +enum SQL_FN_TSI_QUARTER = 0x00000080L; +enum SQL_FN_TSI_SECOND = 0x00000002L; +enum SQL_FN_TSI_WEEK = 0x00000020L; +enum SQL_FN_TSI_YEAR = 0x00000100L; +enum SQL_GB_GROUP_BY_CONTAINS_SELECT = 2; +enum SQL_GB_GROUP_BY_EQUALS_SELECT = 1; +enum SQL_GB_NO_RELATION = 3; +enum SQL_GB_NOT_SUPPORTED = 0; +enum SQL_GD_BLOCK = 4; +enum SQL_GD_BOUND = 8; +enum SQL_GET_BOOKMARK = 13; +enum SQL_GROUP_BY = 88; +enum SQL_IGNORE = -6; +enum SQL_INFO_FIRST = 0; +enum SQL_KEYSET_SIZE = 8; +enum SQL_KEYSET_SIZE_DEFAULT = 0UL; +enum SQL_KEYWORDS = 89; +enum SQL_LCK_EXCLUSIVE = 2; +enum SQL_LCK_NO_CHANGE = 1; +enum SQL_LCK_UNLOCK = 4; + +enum SQL_LEN_BINARY_ATTR_OFFSET = -100; +enum SQL_LEN_DATA_AT_EXEC_OFFSET = -100; //MACRO #define SQL_LEN_BINARY_ATTR(length) (-(length)+SQL_LEN_BINARY_ATTR_OFFSET) //MACRO #define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) -const SQL_LIKE_ESCAPE_CLAUSE = 113; -const SQL_LIKE_ONLY = 1; -const SQL_LOCK_EXCLUSIVE = 1; -const SQL_LOCK_NO_CHANGE = 0; -const SQL_LOCK_TYPES = 78; -const SQL_LOCK_UNLOCK = 2; -const SQL_LOGIN_TIMEOUT = 103; -const SQL_LOGIN_TIMEOUT_DEFAULT = 15UL; -const SQL_LONGVARBINARY = -4; -const SQL_LONGVARCHAR = -1; -const SQL_MAX_BINARY_LITERAL_LEN = 112; -const SQL_MAX_CHAR_LITERAL_LEN = 108; -const SQL_MAX_DSN_LENGTH = 32; -const SQL_MAX_LENGTH = 3; -const SQL_MAX_LENGTH_DEFAULT = 0UL; -const SQL_MAX_OPTION_STRING_LENGTH = 256; -const SQL_MAX_OWNER_NAME_LEN = 32; -const SQL_MAX_PROCEDURE_NAME_LEN = 33; -const SQL_MAX_QUALIFIER_NAME_LEN = 34; -const SQL_MAX_ROW_SIZE_INCLUDES_LONG = 103; -const SQL_MAX_ROWS = 1; -const SQL_MAX_ROWS_DEFAULT = 0UL; - -const SQL_MODE_READ_WRITE = 0UL; -const SQL_MODE_READ_ONLY = 1UL; -const SQL_MODE_DEFAULT = SQL_MODE_READ_WRITE; - -const SQL_MULT_RESULT_SETS = 36; -const SQL_MULTIPLE_ACTIVE_TXN = 37; -const SQL_NC_END = 0x0004; -const SQL_NC_START = 0x0002; -const SQL_NEED_LONG_DATA_LEN = 111; -const SQL_NNC_NON_NULL = 0x0001; -const SQL_NNC_NULL = 0x0000; -const SQL_NO_TOTAL = -4; -const SQL_NON_NULLABLE_COLUMNS = 75; - -const SQL_NOSCAN_OFF = 0UL; -const SQL_NOSCAN_ON = 1UL; -const SQL_NOSCAN = 2; -const SQL_NOSCAN_DEFAULT = SQL_NOSCAN_OFF; - -const SQL_NUMERIC_FUNCTIONS = 49; -const SQL_OAC_LEVEL1 = 0x0001; -const SQL_OAC_LEVEL2 = 0x0002; -const SQL_OAC_NONE = 0x0000; -const SQL_ODBC_API_CONFORMANCE = 9; -const SQL_ODBC_CURSORS = 110; -const SQL_ODBC_SAG_CLI_CONFORMANCE = 12; -const SQL_ODBC_SQL_CONFORMANCE = 15; -const SQL_ODBC_SQL_OPT_IEF = 73; -const SQL_ODBC_VER = 10; -const SQL_OPT_TRACE = 104; - -const SQL_OPT_TRACE_FILE_DEFAULT = "\\SQL.LOG"; -const SQL_OPT_TRACE_OFF = 0UL; -const SQL_OPT_TRACE_DEFAULT = SQL_OPT_TRACE_OFF; -const SQL_OPT_TRACE_ON = 1UL; - -const SQL_OPT_TRACEFILE = 105; -const SQL_OSC_CORE = 1; -const SQL_OSC_EXTENDED = 2; -const SQL_OSC_MINIMUM = 0; -const SQL_OSCC_COMPLIANT = 1; -const SQL_OSCC_NOT_COMPLIANT = 0; -const SQL_OU_DML_STATEMENTS = 1; -const SQL_OU_INDEX_DEFINITION = 8; -const SQL_OU_PRIVILEGE_DEFINITION = 16; -const SQL_OU_PROCEDURE_INVOCATION = 2; -const SQL_OU_TABLE_DEFINITION = 4; -const SQL_OUTER_JOINS = 38; -const SQL_OWNER_TERM = 39; -const SQL_OWNER_USAGE = 91; -const SQL_PACKET_SIZE = 112; -const SQL_PARAM_INPUT = 1; -const SQL_PARAM_INPUT_OUTPUT = 2; -const SQL_PARAM_OUTPUT = 4; -const SQL_PARAM_TYPE_DEFAULT = SQL_PARAM_INPUT_OUTPUT; -const SQL_PARAM_TYPE_UNKNOWN = 0; -const SQL_PC_NOT_PSEUDO = 1; -const SQL_POS_ADD = 16; -const SQL_POS_DELETE = 8; -const SQL_POS_OPERATIONS = 79; -const SQL_POS_POSITION = 1; -const SQL_POS_REFRESH = 2; -const SQL_POS_UPDATE = 4; -const SQL_POSITION = 0; -const SQL_POSITIONED_STATEMENTS = 80; -const SQL_PROCEDURE_TERM = 40; -const SQL_PROCEDURES = 21; -const SQL_PS_POSITIONED_DELETE = 1; -const SQL_PS_POSITIONED_UPDATE = 2; -const SQL_PS_SELECT_FOR_UPDATE = 4; -const SQL_PT_FUNCTION = 2; -const SQL_PT_PROCEDURE = 1; -const SQL_PT_UNKNOWN = 0; -const SQL_QL_END = 0x0002; -const SQL_QL_START = 0x0001; -const SQL_QU_DML_STATEMENTS = 1; -const SQL_QU_INDEX_DEFINITION = 8; -const SQL_QU_PRIVILEGE_DEFINITION = 16; -const SQL_QU_PROCEDURE_INVOCATION = 2; -const SQL_QU_TABLE_DEFINITION = 4; -const SQL_QUALIFIER_LOCATION = 114; -const SQL_QUALIFIER_NAME_SEPARATOR = 41; -const SQL_QUALIFIER_TERM = 42; -const SQL_QUALIFIER_USAGE = 92; -const SQL_QUERY_TIMEOUT = 0; -const SQL_QUERY_TIMEOUT_DEFAULT = 0UL; -const SQL_QUICK = 0; -const SQL_QUIET_MODE = 111; -const SQL_QUOTED_IDENTIFIER_CASE = 93; - -const SQL_RD_OFF = 0UL; -const SQL_RD_ON = 1UL; -const SQL_RD_DEFAULT = SQL_RD_ON; - -const SQL_REFRESH = 1; -const SQL_RESTRICT = 1; -const SQL_RESULT_COL = 3; -const SQL_RETRIEVE_DATA = 11; -const SQL_RETURN_VALUE = 5; -const SQL_ROW_ADDED = 4; -const SQL_ROW_DELETED = 1; -const SQL_ROW_ERROR = 5; -const SQL_ROW_NOROW = 3; -const SQL_ROW_NUMBER = 14; -const SQL_ROW_SUCCESS = 0; -const SQL_ROW_UPDATED = 2; -const SQL_ROW_UPDATES = 11; -const SQL_ROWSET_SIZE = 9; -const SQL_ROWSET_SIZE_DEFAULT = 1UL; -const SQL_ROWVER = 2; -const SQL_SC_NON_UNIQUE = 0UL; -const SQL_SC_TRY_UNIQUE = 1UL; -const SQL_SC_UNIQUE = 2UL; -const SQL_SCCO_OPT_TIMESTAMP = SQL_SCCO_OPT_ROWVER;/* deprecated */ -const SQL_SCROLL_DYNAMIC = -2L;/* deprecated */ -const SQL_SCROLL_FORWARD_ONLY = 0L;/* deprecated */ -const SQL_SCROLL_KEYSET_DRIVEN = -1L;/* deprecated */ -const SQL_SCROLL_OPTIONS = 44; -const SQL_SCROLL_STATIC = -3L;/* deprecated */ -const SQL_SEARCHABLE = 3; -const SQL_SET_NULL = 2; -const SQL_SETPARAM_VALUE_MAX = -1L; -const SQL_SETPOS_MAX_LOCK_VALUE = SQL_LOCK_UNLOCK; -const SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD; -const SQL_SIMULATE_CURSOR = 10; -const SQL_SO_DYNAMIC = 4; -const SQL_SO_FORWARD_ONLY = 1; -const SQL_SO_KEYSET_DRIVEN = 2; -const SQL_SO_MIXED = 8; -const SQL_SO_STATIC = 16; -const SQL_SQ_COMPARISON = 1; -const SQL_SQ_CORRELATED_SUBQUERIES = 16; -const SQL_SQ_EXISTS = 2; -const SQL_SQ_IN = 4; -const SQL_SQ_QUANTIFIED = 8; -const SQL_SQLSTATE_SIZE = 5; -const SQL_SS_ADDITIONS = 1; -const SQL_SS_DELETIONS = 2; -const SQL_SS_UPDATES = 4; -const SQL_STATIC_SENSITIVITY = 83; -const SQL_STRING_FUNCTIONS = 50; -const SQL_SUBQUERIES = 95; -const SQL_SYSTEM_FUNCTIONS = 51; -const SQL_TABLE_STAT = 0; -const SQL_TABLE_TERM = 45; -const SQL_TIMEDATE_ADD_INTERVALS = 109; -const SQL_TIMEDATE_DIFF_INTERVALS = 110; -const SQL_TIMEDATE_FUNCTIONS = 52; -const SQL_TRANSLATE_DLL = 106; -const SQL_TRANSLATE_OPTION = 107; -const SQL_TXN_ISOLATION = 108; -const SQL_TXN_VERSIONING = 16; -const SQL_TYPE_NULL = 0; -const SQL_U_UNION = 1; -const SQL_U_UNION_ALL = 2; - -const SQL_UB_OFF = 0UL; -const SQL_UB_DEFAULT = SQL_UB_OFF; -const SQL_UB_ON = 01UL; - -const SQL_UNION = 96; -const SQL_UNSEARCHABLE = 0; -const SQL_UPDATE = 2; -const SQL_USE_BOOKMARKS = 12; -const SQL_VARBINARY = -3; - -const SQL_COLATT_OPT_MAX = SQL_COLUMN_LABEL; -const SQL_COLATT_OPT_MIN = SQL_COLUMN_COUNT; -const SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; +enum SQL_LIKE_ESCAPE_CLAUSE = 113; +enum SQL_LIKE_ONLY = 1; +enum SQL_LOCK_EXCLUSIVE = 1; +enum SQL_LOCK_NO_CHANGE = 0; +enum SQL_LOCK_TYPES = 78; +enum SQL_LOCK_UNLOCK = 2; +enum SQL_LOGIN_TIMEOUT = 103; +enum SQL_LOGIN_TIMEOUT_DEFAULT = 15UL; +enum SQL_LONGVARBINARY = -4; +enum SQL_LONGVARCHAR = -1; +enum SQL_MAX_BINARY_LITERAL_LEN = 112; +enum SQL_MAX_CHAR_LITERAL_LEN = 108; +enum SQL_MAX_DSN_LENGTH = 32; +enum SQL_MAX_LENGTH = 3; +enum SQL_MAX_LENGTH_DEFAULT = 0UL; +enum SQL_MAX_OPTION_STRING_LENGTH = 256; +enum SQL_MAX_OWNER_NAME_LEN = 32; +enum SQL_MAX_PROCEDURE_NAME_LEN = 33; +enum SQL_MAX_QUALIFIER_NAME_LEN = 34; +enum SQL_MAX_ROW_SIZE_INCLUDES_LONG = 103; +enum SQL_MAX_ROWS = 1; +enum SQL_MAX_ROWS_DEFAULT = 0UL; + +enum SQL_MODE_READ_WRITE = 0UL; +enum SQL_MODE_READ_ONLY = 1UL; +enum SQL_MODE_DEFAULT = SQL_MODE_READ_WRITE; + +enum SQL_MULT_RESULT_SETS = 36; +enum SQL_MULTIPLE_ACTIVE_TXN = 37; +enum SQL_NC_END = 0x0004; +enum SQL_NC_START = 0x0002; +enum SQL_NEED_LONG_DATA_LEN = 111; +enum SQL_NNC_NON_NULL = 0x0001; +enum SQL_NNC_NULL = 0x0000; +enum SQL_NO_TOTAL = -4; +enum SQL_NON_NULLABLE_COLUMNS = 75; + +enum SQL_NOSCAN_OFF = 0UL; +enum SQL_NOSCAN_ON = 1UL; +enum SQL_NOSCAN = 2; +enum SQL_NOSCAN_DEFAULT = SQL_NOSCAN_OFF; + +enum SQL_NUMERIC_FUNCTIONS = 49; +enum SQL_OAC_LEVEL1 = 0x0001; +enum SQL_OAC_LEVEL2 = 0x0002; +enum SQL_OAC_NONE = 0x0000; +enum SQL_ODBC_API_CONFORMANCE = 9; +enum SQL_ODBC_CURSORS = 110; +enum SQL_ODBC_SAG_CLI_CONFORMANCE = 12; +enum SQL_ODBC_SQL_CONFORMANCE = 15; +enum SQL_ODBC_SQL_OPT_IEF = 73; +enum SQL_ODBC_VER = 10; +enum SQL_OPT_TRACE = 104; + +enum SQL_OPT_TRACE_FILE_DEFAULT = "\\SQL.LOG"; +enum SQL_OPT_TRACE_OFF = 0UL; +enum SQL_OPT_TRACE_DEFAULT = SQL_OPT_TRACE_OFF; +enum SQL_OPT_TRACE_ON = 1UL; + +enum SQL_OPT_TRACEFILE = 105; +enum SQL_OSC_CORE = 1; +enum SQL_OSC_EXTENDED = 2; +enum SQL_OSC_MINIMUM = 0; +enum SQL_OSCC_COMPLIANT = 1; +enum SQL_OSCC_NOT_COMPLIANT = 0; +enum SQL_OU_DML_STATEMENTS = 1; +enum SQL_OU_INDEX_DEFINITION = 8; +enum SQL_OU_PRIVILEGE_DEFINITION = 16; +enum SQL_OU_PROCEDURE_INVOCATION = 2; +enum SQL_OU_TABLE_DEFINITION = 4; +enum SQL_OUTER_JOINS = 38; +enum SQL_OWNER_TERM = 39; +enum SQL_OWNER_USAGE = 91; +enum SQL_PACKET_SIZE = 112; +enum SQL_PARAM_INPUT = 1; +enum SQL_PARAM_INPUT_OUTPUT = 2; +enum SQL_PARAM_OUTPUT = 4; +enum SQL_PARAM_TYPE_DEFAULT = SQL_PARAM_INPUT_OUTPUT; +enum SQL_PARAM_TYPE_UNKNOWN = 0; +enum SQL_PC_NOT_PSEUDO = 1; +enum SQL_POS_ADD = 16; +enum SQL_POS_DELETE = 8; +enum SQL_POS_OPERATIONS = 79; +enum SQL_POS_POSITION = 1; +enum SQL_POS_REFRESH = 2; +enum SQL_POS_UPDATE = 4; +enum SQL_POSITION = 0; +enum SQL_POSITIONED_STATEMENTS = 80; +enum SQL_PROCEDURE_TERM = 40; +enum SQL_PROCEDURES = 21; +enum SQL_PS_POSITIONED_DELETE = 1; +enum SQL_PS_POSITIONED_UPDATE = 2; +enum SQL_PS_SELECT_FOR_UPDATE = 4; +enum SQL_PT_FUNCTION = 2; +enum SQL_PT_PROCEDURE = 1; +enum SQL_PT_UNKNOWN = 0; +enum SQL_QL_END = 0x0002; +enum SQL_QL_START = 0x0001; +enum SQL_QU_DML_STATEMENTS = 1; +enum SQL_QU_INDEX_DEFINITION = 8; +enum SQL_QU_PRIVILEGE_DEFINITION = 16; +enum SQL_QU_PROCEDURE_INVOCATION = 2; +enum SQL_QU_TABLE_DEFINITION = 4; +enum SQL_QUALIFIER_LOCATION = 114; +enum SQL_QUALIFIER_NAME_SEPARATOR = 41; +enum SQL_QUALIFIER_TERM = 42; +enum SQL_QUALIFIER_USAGE = 92; +enum SQL_QUERY_TIMEOUT = 0; +enum SQL_QUERY_TIMEOUT_DEFAULT = 0UL; +enum SQL_QUICK = 0; +enum SQL_QUIET_MODE = 111; +enum SQL_QUOTED_IDENTIFIER_CASE = 93; + +enum SQL_RD_OFF = 0UL; +enum SQL_RD_ON = 1UL; +enum SQL_RD_DEFAULT = SQL_RD_ON; + +enum SQL_REFRESH = 1; +enum SQL_RESTRICT = 1; +enum SQL_RESULT_COL = 3; +enum SQL_RETRIEVE_DATA = 11; +enum SQL_RETURN_VALUE = 5; +enum SQL_ROW_ADDED = 4; +enum SQL_ROW_DELETED = 1; +enum SQL_ROW_ERROR = 5; +enum SQL_ROW_NOROW = 3; +enum SQL_ROW_NUMBER = 14; +enum SQL_ROW_SUCCESS = 0; +enum SQL_ROW_UPDATED = 2; +enum SQL_ROW_UPDATES = 11; +enum SQL_ROWSET_SIZE = 9; +enum SQL_ROWSET_SIZE_DEFAULT = 1UL; +enum SQL_ROWVER = 2; +enum SQL_SC_NON_UNIQUE = 0UL; +enum SQL_SC_TRY_UNIQUE = 1UL; +enum SQL_SC_UNIQUE = 2UL; +enum SQL_SCCO_OPT_TIMESTAMP = SQL_SCCO_OPT_ROWVER;/* deprecated */ +enum SQL_SCROLL_DYNAMIC = -2L;/* deprecated */ +enum SQL_SCROLL_FORWARD_ONLY = 0L;/* deprecated */ +enum SQL_SCROLL_KEYSET_DRIVEN = -1L;/* deprecated */ +enum SQL_SCROLL_OPTIONS = 44; +enum SQL_SCROLL_STATIC = -3L;/* deprecated */ +enum SQL_SEARCHABLE = 3; +enum SQL_SET_NULL = 2; +enum SQL_SETPARAM_VALUE_MAX = -1L; +enum SQL_SETPOS_MAX_LOCK_VALUE = SQL_LOCK_UNLOCK; +enum SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD; +enum SQL_SIMULATE_CURSOR = 10; +enum SQL_SO_DYNAMIC = 4; +enum SQL_SO_FORWARD_ONLY = 1; +enum SQL_SO_KEYSET_DRIVEN = 2; +enum SQL_SO_MIXED = 8; +enum SQL_SO_STATIC = 16; +enum SQL_SQ_COMPARISON = 1; +enum SQL_SQ_CORRELATED_SUBQUERIES = 16; +enum SQL_SQ_EXISTS = 2; +enum SQL_SQ_IN = 4; +enum SQL_SQ_QUANTIFIED = 8; +enum SQL_SQLSTATE_SIZE = 5; +enum SQL_SS_ADDITIONS = 1; +enum SQL_SS_DELETIONS = 2; +enum SQL_SS_UPDATES = 4; +enum SQL_STATIC_SENSITIVITY = 83; +enum SQL_STRING_FUNCTIONS = 50; +enum SQL_SUBQUERIES = 95; +enum SQL_SYSTEM_FUNCTIONS = 51; +enum SQL_TABLE_STAT = 0; +enum SQL_TABLE_TERM = 45; +enum SQL_TIMEDATE_ADD_INTERVALS = 109; +enum SQL_TIMEDATE_DIFF_INTERVALS = 110; +enum SQL_TIMEDATE_FUNCTIONS = 52; +enum SQL_TRANSLATE_DLL = 106; +enum SQL_TRANSLATE_OPTION = 107; +enum SQL_TXN_ISOLATION = 108; +enum SQL_TXN_VERSIONING = 16; +enum SQL_TYPE_NULL = 0; +enum SQL_U_UNION = 1; +enum SQL_U_UNION_ALL = 2; + +enum SQL_UB_OFF = 0UL; +enum SQL_UB_DEFAULT = SQL_UB_OFF; +enum SQL_UB_ON = 01UL; + +enum SQL_UNION = 96; +enum SQL_UNSEARCHABLE = 0; +enum SQL_UPDATE = 2; +enum SQL_USE_BOOKMARKS = 12; +enum SQL_VARBINARY = -3; + +enum SQL_COLATT_OPT_MAX = SQL_COLUMN_LABEL; +enum SQL_COLATT_OPT_MIN = SQL_COLUMN_COUNT; +enum SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; //MACRO #define SQL_POSITION_TO(s, r) SQLSetPos(s, r, SQL_POSITION, SQL_LOCK_NO_CHANGE) @@ -560,486 +560,486 @@ const SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; static if (ODBCVER < 0x0300) { - const SQL_CONNECT_OPT_DRVR_START = 1000; - const SQL_CONN_OPT_MAX = SQL_PACKET_SIZE; - const SQL_CONN_OPT_MIN = SQL_ACCESS_MODE; - const SQL_STMT_OPT_MAX = SQL_ROW_NUMBER; - const SQL_STMT_OPT_MIN = SQL_QUERY_TIMEOUT; - const SQL_TYPE_DRIVER_START = SQL_INTERVAL_YEAR; - const SQL_TYPE_DRIVER_END = SQL_UNICODE_LONGVARCHAR; - const SQL_TYPE_MIN = SQL_BIT; - const SQL_TYPE_MAX = SQL_VARCHAR; +enum SQL_CONNECT_OPT_DRVR_START = 1000; +enum SQL_CONN_OPT_MAX = SQL_PACKET_SIZE; +enum SQL_CONN_OPT_MIN = SQL_ACCESS_MODE; +enum SQL_STMT_OPT_MAX = SQL_ROW_NUMBER; +enum SQL_STMT_OPT_MIN = SQL_QUERY_TIMEOUT; +enum SQL_TYPE_DRIVER_START = SQL_INTERVAL_YEAR; +enum SQL_TYPE_DRIVER_END = SQL_UNICODE_LONGVARCHAR; +enum SQL_TYPE_MIN = SQL_BIT; +enum SQL_TYPE_MAX = SQL_VARCHAR; } static if (ODBCVER < 0x0300) { - const SQL_NO_DATA_FOUND = 100; - const SQL_INTERVAL_YEAR = -80; - const SQL_INTERVAL_MONTH = -81; - const SQL_INTERVAL_YEAR_TO_MONTH = -82; - const SQL_INTERVAL_DAY = -83; - const SQL_INTERVAL_HOUR = -84; - const SQL_INTERVAL_MINUTE = -85; - const SQL_INTERVAL_SECOND = -86; - const SQL_INTERVAL_DAY_TO_HOUR = -87; - const SQL_INTERVAL_DAY_TO_MINUTE = -88; - const SQL_INTERVAL_DAY_TO_SECOND = -89; - const SQL_INTERVAL_HOUR_TO_MINUTE = -90; - const SQL_INTERVAL_HOUR_TO_SECOND = -91; - const SQL_INTERVAL_MINUTE_TO_SECOND = -92; +enum SQL_NO_DATA_FOUND = 100; +enum SQL_INTERVAL_YEAR = -80; +enum SQL_INTERVAL_MONTH = -81; +enum SQL_INTERVAL_YEAR_TO_MONTH = -82; +enum SQL_INTERVAL_DAY = -83; +enum SQL_INTERVAL_HOUR = -84; +enum SQL_INTERVAL_MINUTE = -85; +enum SQL_INTERVAL_SECOND = -86; +enum SQL_INTERVAL_DAY_TO_HOUR = -87; +enum SQL_INTERVAL_DAY_TO_MINUTE = -88; +enum SQL_INTERVAL_DAY_TO_SECOND = -89; +enum SQL_INTERVAL_HOUR_TO_MINUTE = -90; +enum SQL_INTERVAL_HOUR_TO_SECOND = -91; +enum SQL_INTERVAL_MINUTE_TO_SECOND = -92; } else { - const SQL_NO_DATA_FOUND = SQL_NO_DATA; - const SQL_CODE_YEAR = 1; - const SQL_CODE_MONTH = 2; - const SQL_CODE_DAY = 3; - const SQL_CODE_HOUR = 4; - const SQL_CODE_MINUTE = 5; - const SQL_CODE_SECOND = 6; - const SQL_CODE_YEAR_TO_MONTH = 7; - const SQL_CODE_DAY_TO_HOUR = 8; - const SQL_CODE_DAY_TO_MINUTE = 9; - const SQL_CODE_DAY_TO_SECOND = 10; - const SQL_CODE_HOUR_TO_MINUTE = 11; - const SQL_CODE_HOUR_TO_SECOND = 12; - const SQL_CODE_MINUTE_TO_SECOND = 13; - const SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR; - const SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH; - const SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY; - const SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR; - const SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE; - const SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND; - const SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH; - const SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR; - const SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE; - const SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND; - const SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE; - const SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND; - const SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND; +enum SQL_NO_DATA_FOUND = SQL_NO_DATA; +enum SQL_CODE_YEAR = 1; +enum SQL_CODE_MONTH = 2; +enum SQL_CODE_DAY = 3; +enum SQL_CODE_HOUR = 4; +enum SQL_CODE_MINUTE = 5; +enum SQL_CODE_SECOND = 6; +enum SQL_CODE_YEAR_TO_MONTH = 7; +enum SQL_CODE_DAY_TO_HOUR = 8; +enum SQL_CODE_DAY_TO_MINUTE = 9; +enum SQL_CODE_DAY_TO_SECOND = 10; +enum SQL_CODE_HOUR_TO_MINUTE = 11; +enum SQL_CODE_HOUR_TO_SECOND = 12; +enum SQL_CODE_MINUTE_TO_SECOND = 13; +enum SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR; +enum SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH; +enum SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY; +enum SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR; +enum SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE; +enum SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND; +enum SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH; +enum SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR; +enum SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE; +enum SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND; +enum SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE; +enum SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND; +enum SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND; }//[Yes] #endif static if ((ODBCVER >= 0x0201) && (ODBCVER < 0x0300)) { - const SQL_OJ_CAPABILITIES = 65003; +enum SQL_OJ_CAPABILITIES = 65003; } static if (ODBCVER >= 0x0250) { - const SQL_NO_ACTION = 3; - const SQL_SET_DEFAULT = 4; +enum SQL_NO_ACTION = 3; +enum SQL_SET_DEFAULT = 4; } static if (ODBCVER >= 0x0300) { - const SQL_ACTIVE_ENVIRONMENTS = 116; - const SQL_AD_ADD_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_AD_ADD_DOMAIN_CONSTRAINT = 0x00000002L; - const SQL_AD_ADD_DOMAIN_DEFAULT = 0x00000008L; - const SQL_AD_CONSTRAINT_NAME_DEFINITION = 0x00000001L; - const SQL_AD_DROP_DOMAIN_CONSTRAINT = 0x00000004L; - const SQL_AD_DROP_DOMAIN_DEFAULT = 0x00000010L; - const SQL_AF_ALL = 0x00000040L; - const SQL_AF_AVG = 0x00000001L; - const SQL_AF_COUNT = 0x00000002L; - const SQL_AF_DISTINCT = 0x00000020L; - const SQL_AF_MAX = 0x00000004L; - const SQL_AF_MIN = 0x00000008L; - const SQL_AF_SUM = 0x00000010L; - const SQL_AGGREGATE_FUNCTIONS = 169; - const SQL_ALL_CATALOGS = "%"; - const SQL_ALL_SCHEMAS = "%"; - const SQL_ALL_TABLE_TYPES = "%"; - const SQL_ALTER_DOMAIN = 117; - const SQL_AM_CONNECTION = 1; - const SQL_AM_NONE = 0; - const SQL_AM_STATEMENT = 2; - const SQL_API_ODBC3_ALL_FUNCTIONS = 999; - const SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; - const SQL_API_SQLALLOCHANDLESTD = 73; - const SQL_API_SQLBULKOPERATIONS = 24; - const SQL_ASYNC_MODE = 10021; - const SQL_AT_ADD_COLUMN_COLLATION = 0x00000080L; - const SQL_AT_ADD_COLUMN_DEFAULT = 0x00000040L; - const SQL_AT_ADD_COLUMN_SINGLE = 0x00000020L; - const SQL_AT_ADD_TABLE_CONSTRAINT = 0x00001000L; - const SQL_AT_CONSTRAINT_DEFERRABLE = 0x00040000L; - const SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = 0x00010000L; - const SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00020000L; - const SQL_AT_CONSTRAINT_NAME_DEFINITION = 0x00008000L; - const SQL_AT_CONSTRAINT_NON_DEFERRABLE = 0x00080000L; - const SQL_AT_DROP_COLUMN_CASCADE = 0x00000400L; - const SQL_AT_DROP_COLUMN_DEFAULT = 0x00000200L; - const SQL_AT_DROP_COLUMN_RESTRICT = 0x00000800L; - const SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = 0x00002000L; - const SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = 0x00004000L; - const SQL_AT_SET_COLUMN_DEFAULT = 0x00000100L; - const SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; - const SQL_ATTR_ASYNC_ENABLE = 4; - const SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; - const SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; - const SQL_ATTR_CONNECTION_POOLING = 201; - const SQL_ATTR_CONNECTION_TIMEOUT = 113; - const SQL_ATTR_CP_MATCH = 202; - const SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; - const SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; - const SQL_ATTR_DISCONNECT_BEHAVIOR = 114; - const SQL_ATTR_ENABLE_AUTO_IPD = 15; - const SQL_ATTR_ENLIST_IN_DTC = 1207; - const SQL_ATTR_ENLIST_IN_XA = 1208; - const SQL_ATTR_FETCH_BOOKMARK_PTR = 16; - const SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; - const SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; - const SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; - const SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; - const SQL_ATTR_NOSCAN = SQL_NOSCAN; - const SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; - const SQL_ATTR_ODBC_VERSION = 200; - const SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; - const SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; - const SQL_ATTR_PARAM_BIND_TYPE = 18; - const SQL_ATTR_PARAM_OPERATION_PTR = 19; - const SQL_ATTR_PARAM_STATUS_PTR = 20; - const SQL_ATTR_PARAMS_PROCESSED_PTR = 21; - const SQL_ATTR_PARAMSET_SIZE = 22; - const SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; - const SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; - const SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; - const SQL_ATTR_ROW_ARRAY_SIZE = 27; - const SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; - const SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; - const SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; - const SQL_ATTR_ROW_OPERATION_PTR = 24; - const SQL_ATTR_ROW_STATUS_PTR = 25; - const SQL_ATTR_ROWS_FETCHED_PTR = 26; - const SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; - const SQL_ATTR_TRACE = SQL_OPT_TRACE; - const SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; - const SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; - const SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; - const SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; - const SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; - const SQL_BATCH_ROW_COUNT = 120; - const SQL_BATCH_SUPPORT = 121; - const SQL_BRC_EXPLICIT = 0x0000002; - const SQL_BRC_PROCEDURES = 0x0000001; - const SQL_BRC_ROLLED_UP = 0x0000004; - const SQL_BS_ROW_COUNT_EXPLICIT = 0x00000002L; - const SQL_BS_ROW_COUNT_PROC = 0x00000008L; - const SQL_BS_SELECT_EXPLICIT = 0x00000001L; - const SQL_BS_SELECT_PROC = 0x00000004L; - const SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; - const SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; - const SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; - const SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; - const SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; - const SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; - const SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; - const SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; - const SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; - const SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; - const SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; - const SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; - const SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; - const SQL_C_NUMERIC = SQL_NUMERIC; - const SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; - const SQL_C_TYPE_DATE = SQL_TYPE_DATE; - const SQL_C_TYPE_TIME = SQL_TYPE_TIME; - const SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; - const SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; - const SQL_C_VARBOOKMARK = SQL_C_BINARY; - const SQL_CA_CONSTRAINT_DEFERRABLE = 0x00000040L; - const SQL_CA_CONSTRAINT_INITIALLY_DEFERRED = 0x00000010L; - const SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000020L; - const SQL_CA_CONSTRAINT_NON_DEFERRABLE = 0x00000080L; - const SQL_CA_CREATE_ASSERTION = 0x00000001L; - const SQL_CA1_ABSOLUTE = 0x00000002L; - const SQL_CA1_BOOKMARK = 0x00000008L; - const SQL_CA1_BULK_ADD = 0x00010000L; - const SQL_CA1_BULK_DELETE_BY_BOOKMARK = 0x00040000L; - const SQL_CA1_BULK_FETCH_BY_BOOKMARK = 0x00080000L; - const SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 0x00020000L; - const SQL_CA1_LOCK_EXCLUSIVE = 0x00000080L; - const SQL_CA1_LOCK_NO_CHANGE = 0x00000040L; - const SQL_CA1_LOCK_UNLOCK = 0x00000100L; - const SQL_CA1_NEXT = 0x00000001L; - const SQL_CA1_POS_DELETE = 0x00000800L; - const SQL_CA1_POS_POSITION = 0x00000200L; - const SQL_CA1_POS_REFRESH = 0x00001000L; - const SQL_CA1_POS_UPDATE = 0x00000400L; - const SQL_CA1_POSITIONED_DELETE = 0x00004000L; - const SQL_CA1_POSITIONED_UPDATE = 0x00002000L; - const SQL_CA1_RELATIVE = 0x00000004L; - const SQL_CA1_SELECT_FOR_UPDATE = 0x00008000L; - const SQL_CA2_CRC_APPROXIMATE = 0x00002000L; - const SQL_CA2_CRC_EXACT = 0x00001000L; - const SQL_CA2_LOCK_CONCURRENCY = 0x00000002L; - - const SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L; - const SQL_CA2_MAX_ROWS_DELETE = 0x00000200L; - const SQL_CA2_MAX_ROWS_INSERT = 0x00000100L; - const SQL_CA2_MAX_ROWS_SELECT = 0x00000080L; - const SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L; - const SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | +enum SQL_ACTIVE_ENVIRONMENTS = 116; +enum SQL_AD_ADD_CONSTRAINT_DEFERRABLE = 0x00000080L; +enum SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; +enum SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; +enum SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; +enum SQL_AD_ADD_DOMAIN_CONSTRAINT = 0x00000002L; +enum SQL_AD_ADD_DOMAIN_DEFAULT = 0x00000008L; +enum SQL_AD_CONSTRAINT_NAME_DEFINITION = 0x00000001L; +enum SQL_AD_DROP_DOMAIN_CONSTRAINT = 0x00000004L; +enum SQL_AD_DROP_DOMAIN_DEFAULT = 0x00000010L; +enum SQL_AF_ALL = 0x00000040L; +enum SQL_AF_AVG = 0x00000001L; +enum SQL_AF_COUNT = 0x00000002L; +enum SQL_AF_DISTINCT = 0x00000020L; +enum SQL_AF_MAX = 0x00000004L; +enum SQL_AF_MIN = 0x00000008L; +enum SQL_AF_SUM = 0x00000010L; +enum SQL_AGGREGATE_FUNCTIONS = 169; +enum SQL_ALL_CATALOGS = "%"; +enum SQL_ALL_SCHEMAS = "%"; +enum SQL_ALL_TABLE_TYPES = "%"; +enum SQL_ALTER_DOMAIN = 117; +enum SQL_AM_CONNECTION = 1; +enum SQL_AM_NONE = 0; +enum SQL_AM_STATEMENT = 2; +enum SQL_API_ODBC3_ALL_FUNCTIONS = 999; +enum SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; +enum SQL_API_SQLALLOCHANDLESTD = 73; +enum SQL_API_SQLBULKOPERATIONS = 24; +enum SQL_ASYNC_MODE = 10021; +enum SQL_AT_ADD_COLUMN_COLLATION = 0x00000080L; +enum SQL_AT_ADD_COLUMN_DEFAULT = 0x00000040L; +enum SQL_AT_ADD_COLUMN_SINGLE = 0x00000020L; +enum SQL_AT_ADD_TABLE_CONSTRAINT = 0x00001000L; +enum SQL_AT_CONSTRAINT_DEFERRABLE = 0x00040000L; +enum SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = 0x00010000L; +enum SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00020000L; +enum SQL_AT_CONSTRAINT_NAME_DEFINITION = 0x00008000L; +enum SQL_AT_CONSTRAINT_NON_DEFERRABLE = 0x00080000L; +enum SQL_AT_DROP_COLUMN_CASCADE = 0x00000400L; +enum SQL_AT_DROP_COLUMN_DEFAULT = 0x00000200L; +enum SQL_AT_DROP_COLUMN_RESTRICT = 0x00000800L; +enum SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = 0x00002000L; +enum SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = 0x00004000L; +enum SQL_AT_SET_COLUMN_DEFAULT = 0x00000100L; +enum SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; +enum SQL_ATTR_ASYNC_ENABLE = 4; +enum SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; +enum SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; +enum SQL_ATTR_CONNECTION_POOLING = 201; +enum SQL_ATTR_CONNECTION_TIMEOUT = 113; +enum SQL_ATTR_CP_MATCH = 202; +enum SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; +enum SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; +enum SQL_ATTR_DISCONNECT_BEHAVIOR = 114; +enum SQL_ATTR_ENABLE_AUTO_IPD = 15; +enum SQL_ATTR_ENLIST_IN_DTC = 1207; +enum SQL_ATTR_ENLIST_IN_XA = 1208; +enum SQL_ATTR_FETCH_BOOKMARK_PTR = 16; +enum SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; +enum SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; +enum SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; +enum SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; +enum SQL_ATTR_NOSCAN = SQL_NOSCAN; +enum SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; +enum SQL_ATTR_ODBC_VERSION = 200; +enum SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; +enum SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; +enum SQL_ATTR_PARAM_BIND_TYPE = 18; +enum SQL_ATTR_PARAM_OPERATION_PTR = 19; +enum SQL_ATTR_PARAM_STATUS_PTR = 20; +enum SQL_ATTR_PARAMS_PROCESSED_PTR = 21; +enum SQL_ATTR_PARAMSET_SIZE = 22; +enum SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; +enum SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; +enum SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; +enum SQL_ATTR_ROW_ARRAY_SIZE = 27; +enum SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; +enum SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; +enum SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; +enum SQL_ATTR_ROW_OPERATION_PTR = 24; +enum SQL_ATTR_ROW_STATUS_PTR = 25; +enum SQL_ATTR_ROWS_FETCHED_PTR = 26; +enum SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; +enum SQL_ATTR_TRACE = SQL_OPT_TRACE; +enum SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; +enum SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; +enum SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; +enum SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; +enum SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; +enum SQL_BATCH_ROW_COUNT = 120; +enum SQL_BATCH_SUPPORT = 121; +enum SQL_BRC_EXPLICIT = 0x0000002; +enum SQL_BRC_PROCEDURES = 0x0000001; +enum SQL_BRC_ROLLED_UP = 0x0000004; +enum SQL_BS_ROW_COUNT_EXPLICIT = 0x00000002L; +enum SQL_BS_ROW_COUNT_PROC = 0x00000008L; +enum SQL_BS_SELECT_EXPLICIT = 0x00000001L; +enum SQL_BS_SELECT_PROC = 0x00000004L; +enum SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; +enum SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; +enum SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; +enum SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; +enum SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; +enum SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; +enum SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; +enum SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; +enum SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; +enum SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; +enum SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; +enum SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; +enum SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; +enum SQL_C_NUMERIC = SQL_NUMERIC; +enum SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; +enum SQL_C_TYPE_DATE = SQL_TYPE_DATE; +enum SQL_C_TYPE_TIME = SQL_TYPE_TIME; +enum SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; +enum SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; +enum SQL_C_VARBOOKMARK = SQL_C_BINARY; +enum SQL_CA_CONSTRAINT_DEFERRABLE = 0x00000040L; +enum SQL_CA_CONSTRAINT_INITIALLY_DEFERRED = 0x00000010L; +enum SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000020L; +enum SQL_CA_CONSTRAINT_NON_DEFERRABLE = 0x00000080L; +enum SQL_CA_CREATE_ASSERTION = 0x00000001L; +enum SQL_CA1_ABSOLUTE = 0x00000002L; +enum SQL_CA1_BOOKMARK = 0x00000008L; +enum SQL_CA1_BULK_ADD = 0x00010000L; +enum SQL_CA1_BULK_DELETE_BY_BOOKMARK = 0x00040000L; +enum SQL_CA1_BULK_FETCH_BY_BOOKMARK = 0x00080000L; +enum SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 0x00020000L; +enum SQL_CA1_LOCK_EXCLUSIVE = 0x00000080L; +enum SQL_CA1_LOCK_NO_CHANGE = 0x00000040L; +enum SQL_CA1_LOCK_UNLOCK = 0x00000100L; +enum SQL_CA1_NEXT = 0x00000001L; +enum SQL_CA1_POS_DELETE = 0x00000800L; +enum SQL_CA1_POS_POSITION = 0x00000200L; +enum SQL_CA1_POS_REFRESH = 0x00001000L; +enum SQL_CA1_POS_UPDATE = 0x00000400L; +enum SQL_CA1_POSITIONED_DELETE = 0x00004000L; +enum SQL_CA1_POSITIONED_UPDATE = 0x00002000L; +enum SQL_CA1_RELATIVE = 0x00000004L; +enum SQL_CA1_SELECT_FOR_UPDATE = 0x00008000L; +enum SQL_CA2_CRC_APPROXIMATE = 0x00002000L; +enum SQL_CA2_CRC_EXACT = 0x00001000L; +enum SQL_CA2_LOCK_CONCURRENCY = 0x00000002L; + +enum SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L; +enum SQL_CA2_MAX_ROWS_DELETE = 0x00000200L; +enum SQL_CA2_MAX_ROWS_INSERT = 0x00000100L; +enum SQL_CA2_MAX_ROWS_SELECT = 0x00000080L; +enum SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L; +enum SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG; - const SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L; - const SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L; - const SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L; - const SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L; - const SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L; - const SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L; - const SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L; - const SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L; - const SQL_CA2_SIMULATE_UNIQUE = 0x00010000L; - const SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; - const SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; - const SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; - const SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; - const SQL_CCOL_CREATE_COLLATION = 0x00000001L; - const SQL_CCS_COLLATE_CLAUSE = 0x00000002L; - const SQL_CCS_CREATE_CHARACTER_SET = 0x00000001L; - const SQL_CCS_LIMITED_COLLATION = 0x00000004L; - const SQL_CDO_COLLATION = 0x00000008L; - const SQL_CDO_CONSTRAINT = 0x00000004L; - const SQL_CDO_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_CDO_CONSTRAINT_NAME_DEFINITION = 0x00000010L; - const SQL_CDO_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_CDO_CREATE_DOMAIN = 0x00000001L; - const SQL_CDO_DEFAULT = 0x00000002L; - const SQL_CL_END = SQL_QL_END; - const SQL_CL_START = SQL_QL_START; - const SQL_COL_PRED_BASIC = SQL_ALL_EXCEPT_LIKE; - const SQL_COL_PRED_CHAR = SQL_LIKE_ONLY; - const SQL_COLUMN_DRIVER_START = 1000; - const SQL_COLUMN_IGNORE = SQL_IGNORE; - const SQL_COLUMN_NUMBER_UNKNOWN = -2; - const SQL_CONVERT_GUID = 173; - - const SQL_CONVERT_WCHAR = 122; - const SQL_CONVERT_INTERVAL_DAY_TIME = 123; - const SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; - const SQL_CONVERT_WLONGVARCHAR = 125; - const SQL_CONVERT_WVARCHAR = 126; - - const SQL_CREATE_ASSERTION = 127; - const SQL_CREATE_CHARACTER_SET = 128; - const SQL_CREATE_COLLATION = 129; - const SQL_CREATE_DOMAIN = 130; - const SQL_CREATE_SCHEMA = 131; - const SQL_CREATE_TABLE = 132; - const SQL_CREATE_TRANSLATION = 133; - const SQL_CREATE_VIEW = 134; - - - const SQL_CP_OFF = 0UL; - const SQL_CP_DEFAULT = SQL_CP_OFF; - const SQL_CP_ONE_PER_DRIVER = 1UL; - const SQL_CP_ONE_PER_HENV = 2UL; - - const SQL_CP_STRICT_MATCH = 0UL; - const SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; - const SQL_CP_RELAXED_MATCH = 1UL; - - const SQL_CS_CREATE_SCHEMA = 0x00000001L; - const SQL_CS_AUTHORIZATION = 0x00000002L; - const SQL_CS_DEFAULT_CHARACTER_SET = 0x00000004L; - - const SQL_CT_COLUMN_COLLATION = 0x00000800L; - const SQL_CT_COLUMN_CONSTRAINT = 0x00000200L; - const SQL_CT_COLUMN_DEFAULT = 0x00000400L; - const SQL_CT_COMMIT_DELETE = 0x00000004L; - const SQL_CT_COMMIT_PRESERVE = 0x00000002L; - const SQL_CT_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_CT_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_CT_CONSTRAINT_NAME_DEFINITION = 0x00002000L; - const SQL_CT_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_CT_CREATE_TABLE = 0x00000001L; - const SQL_CT_GLOBAL_TEMPORARY = 0x00000008L; - const SQL_CT_LOCAL_TEMPORARY = 0x00000010L; - const SQL_CT_TABLE_CONSTRAINT = 0x00001000L; - - const SQL_CTR_CREATE_TRANSLATION = 0x00000001L; - - const SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; - const SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; - const SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; - const SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; - const SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; - - const SQL_CVT_INTERVAL_YEAR_MONTH = 0x00080000L; - const SQL_CVT_INTERVAL_DAY_TIME = 0x00100000L; - const SQL_CVT_WCHAR = 0x00200000L; - const SQL_CVT_WLONGVARCHAR = 0x00400000L; - const SQL_CVT_WVARCHAR = 0x00800000L; - const SQL_CVT_GUID = 0x01000000L; - - const SQL_DA_DROP_ASSERTION = 0x00000001L; - const SQL_DATETIME_LITERALS = 119; - - const SQL_DB_DISCONNECT = 1UL; - const SQL_DB_RETURN_TO_POOL = 0UL; - const SQL_DB_DEFAULT = SQL_DB_RETURN_TO_POOL; - - const SQL_DC_DROP_COLLATION = 0x00000001L; - const SQL_DCS_DROP_CHARACTER_SET = 0x00000001L; - const SQL_DD_CASCADE = 0x00000004L; - const SQL_DD_DROP_DOMAIN = 0x00000001L; - const SQL_DD_RESTRICT = 0x00000002L; - const SQL_DDL_INDEX = 170; - const SQL_DELETE_BY_BOOKMARK = 6; - const SQL_DESC_ARRAY_SIZE = 20; - const SQL_DESC_ARRAY_STATUS_PTR = 21; - const SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; - const SQL_DESC_BASE_COLUMN_NAME = 22; - const SQL_DESC_BASE_TABLE_NAME = 23; - const SQL_DESC_BIND_OFFSET_PTR = 24; - const SQL_DESC_BIND_TYPE = 25; - const SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; - const SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; - const SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; - const SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; - const SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; - const SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; - const SQL_DESC_LABEL = SQL_COLUMN_LABEL; - const SQL_DESC_LITERAL_PREFIX = 27; - const SQL_DESC_LITERAL_SUFFIX = 28; - const SQL_DESC_LOCAL_TYPE_NAME = 29; - const SQL_DESC_MAXIMUM_SCALE = 30; - const SQL_DESC_MINIMUM_SCALE = 31; - const SQL_DESC_NUM_PREC_RADIX = 32; - const SQL_DESC_PARAMETER_TYPE = 33; - const SQL_DESC_ROWS_PROCESSED_PTR = 34; - const SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; - const SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; - const SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; - const SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; - const SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; - const SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; - const SQL_DI_CREATE_INDEX = 0x00000001L; - const SQL_DI_DROP_INDEX = 0x00000002L; - - const SQL_DIAG_COLUMN_NUMBER = -1247; - const SQL_DIAG_ROW_NUMBER = -1248; - const SQL_DIAG_CURSOR_ROW_COUNT = -1249; - - const SQL_DL_SQL92_DATE = 0x00000001L; - const SQL_DL_SQL92_INTERVAL_DAY = 0x00000020L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000L; - const SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040L; - const SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000L; - const SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000L; - const SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080L; - const SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000L; - const SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010L; - const SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100L; - const SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008L; - const SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200L; - const SQL_DL_SQL92_TIME = 0x00000002L; - const SQL_DL_SQL92_TIMESTAMP = 0x00000004L; - const SQL_DM_VER = 171; - const SQL_DRIVER_HDESC = 135; - const SQL_DROP_ASSERTION = 136; - const SQL_DROP_CHARACTER_SET = 137; - const SQL_DROP_COLLATION = 138; - const SQL_DROP_DOMAIN = 139; - const SQL_DROP_SCHEMA = 140; - const SQL_DROP_TABLE = 141; - const SQL_DROP_TRANSLATION = 142; - const SQL_DROP_VIEW = 143; - const SQL_DS_CASCADE = 0x00000004L; - const SQL_DS_DROP_SCHEMA = 0x00000001L; - const SQL_DS_RESTRICT = 0x00000002L; - const SQL_DT_CASCADE = 0x00000004L; - const SQL_DT_DROP_TABLE = 0x00000001L; - const SQL_DT_RESTRICT = 0x00000002L; - const SQL_DTC_DONE = 0L; - const SQL_DTR_DROP_TRANSLATION = 0x00000001L; - const SQL_DV_CASCADE = 0x00000004L; - const SQL_DV_DROP_VIEW = 0x00000001L; - const SQL_DV_RESTRICT = 0x00000002L; - const SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; - const SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; - const SQL_EXT_API_LAST = SQL_API_SQLBINDPARAMETER; - const SQL_EXT_API_START = 40; - const SQL_FETCH_BY_BOOKMARK = 7; - const SQL_FETCH_FIRST_SYSTEM = 32; - const SQL_FETCH_FIRST_USER = 31; - const SQL_FN_CVT_CAST = 0x00000002L; - const SQL_FN_STR_BIT_LENGTH = 0x00080000L; - const SQL_FN_STR_CHAR_LENGTH = 0x00100000L; - const SQL_FN_STR_CHARACTER_LENGTH = 0x00200000L; - const SQL_FN_STR_OCTET_LENGTH = 0x00400000L; - const SQL_FN_STR_POSITION = 0x00800000L; - const SQL_FN_TD_CURRENT_DATE = 0x00020000L; - const SQL_FN_TD_CURRENT_TIME = 0x00040000L; - const SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000L; - const SQL_FN_TD_EXTRACT = 0x00100000L; - const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; - const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; +enum SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L; +enum SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L; +enum SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L; +enum SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L; +enum SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L; +enum SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L; +enum SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L; +enum SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L; +enum SQL_CA2_SIMULATE_UNIQUE = 0x00010000L; +enum SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; +enum SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; +enum SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; +enum SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; +enum SQL_CCOL_CREATE_COLLATION = 0x00000001L; +enum SQL_CCS_COLLATE_CLAUSE = 0x00000002L; +enum SQL_CCS_CREATE_CHARACTER_SET = 0x00000001L; +enum SQL_CCS_LIMITED_COLLATION = 0x00000004L; +enum SQL_CDO_COLLATION = 0x00000008L; +enum SQL_CDO_CONSTRAINT = 0x00000004L; +enum SQL_CDO_CONSTRAINT_DEFERRABLE = 0x00000080L; +enum SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; +enum SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; +enum SQL_CDO_CONSTRAINT_NAME_DEFINITION = 0x00000010L; +enum SQL_CDO_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; +enum SQL_CDO_CREATE_DOMAIN = 0x00000001L; +enum SQL_CDO_DEFAULT = 0x00000002L; +enum SQL_CL_END = SQL_QL_END; +enum SQL_CL_START = SQL_QL_START; +enum SQL_COL_PRED_BASIC = SQL_ALL_EXCEPT_LIKE; +enum SQL_COL_PRED_CHAR = SQL_LIKE_ONLY; +enum SQL_COLUMN_DRIVER_START = 1000; +enum SQL_COLUMN_IGNORE = SQL_IGNORE; +enum SQL_COLUMN_NUMBER_UNKNOWN = -2; +enum SQL_CONVERT_GUID = 173; + +enum SQL_CONVERT_WCHAR = 122; +enum SQL_CONVERT_INTERVAL_DAY_TIME = 123; +enum SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; +enum SQL_CONVERT_WLONGVARCHAR = 125; +enum SQL_CONVERT_WVARCHAR = 126; + +enum SQL_CREATE_ASSERTION = 127; +enum SQL_CREATE_CHARACTER_SET = 128; +enum SQL_CREATE_COLLATION = 129; +enum SQL_CREATE_DOMAIN = 130; +enum SQL_CREATE_SCHEMA = 131; +enum SQL_CREATE_TABLE = 132; +enum SQL_CREATE_TRANSLATION = 133; +enum SQL_CREATE_VIEW = 134; + + +enum SQL_CP_OFF = 0UL; +enum SQL_CP_DEFAULT = SQL_CP_OFF; +enum SQL_CP_ONE_PER_DRIVER = 1UL; +enum SQL_CP_ONE_PER_HENV = 2UL; + +enum SQL_CP_STRICT_MATCH = 0UL; +enum SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; +enum SQL_CP_RELAXED_MATCH = 1UL; + +enum SQL_CS_CREATE_SCHEMA = 0x00000001L; +enum SQL_CS_AUTHORIZATION = 0x00000002L; +enum SQL_CS_DEFAULT_CHARACTER_SET = 0x00000004L; + +enum SQL_CT_COLUMN_COLLATION = 0x00000800L; +enum SQL_CT_COLUMN_CONSTRAINT = 0x00000200L; +enum SQL_CT_COLUMN_DEFAULT = 0x00000400L; +enum SQL_CT_COMMIT_DELETE = 0x00000004L; +enum SQL_CT_COMMIT_PRESERVE = 0x00000002L; +enum SQL_CT_CONSTRAINT_DEFERRABLE = 0x00000080L; +enum SQL_CT_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; +enum SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; +enum SQL_CT_CONSTRAINT_NAME_DEFINITION = 0x00002000L; +enum SQL_CT_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; +enum SQL_CT_CREATE_TABLE = 0x00000001L; +enum SQL_CT_GLOBAL_TEMPORARY = 0x00000008L; +enum SQL_CT_LOCAL_TEMPORARY = 0x00000010L; +enum SQL_CT_TABLE_CONSTRAINT = 0x00001000L; + +enum SQL_CTR_CREATE_TRANSLATION = 0x00000001L; + +enum SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; +enum SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; +enum SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; +enum SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; +enum SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; + +enum SQL_CVT_INTERVAL_YEAR_MONTH = 0x00080000L; +enum SQL_CVT_INTERVAL_DAY_TIME = 0x00100000L; +enum SQL_CVT_WCHAR = 0x00200000L; +enum SQL_CVT_WLONGVARCHAR = 0x00400000L; +enum SQL_CVT_WVARCHAR = 0x00800000L; +enum SQL_CVT_GUID = 0x01000000L; + +enum SQL_DA_DROP_ASSERTION = 0x00000001L; +enum SQL_DATETIME_LITERALS = 119; + +enum SQL_DB_DISCONNECT = 1UL; +enum SQL_DB_RETURN_TO_POOL = 0UL; +enum SQL_DB_DEFAULT = SQL_DB_RETURN_TO_POOL; + +enum SQL_DC_DROP_COLLATION = 0x00000001L; +enum SQL_DCS_DROP_CHARACTER_SET = 0x00000001L; +enum SQL_DD_CASCADE = 0x00000004L; +enum SQL_DD_DROP_DOMAIN = 0x00000001L; +enum SQL_DD_RESTRICT = 0x00000002L; +enum SQL_DDL_INDEX = 170; +enum SQL_DELETE_BY_BOOKMARK = 6; +enum SQL_DESC_ARRAY_SIZE = 20; +enum SQL_DESC_ARRAY_STATUS_PTR = 21; +enum SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; +enum SQL_DESC_BASE_COLUMN_NAME = 22; +enum SQL_DESC_BASE_TABLE_NAME = 23; +enum SQL_DESC_BIND_OFFSET_PTR = 24; +enum SQL_DESC_BIND_TYPE = 25; +enum SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; +enum SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; +enum SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; +enum SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; +enum SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; +enum SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; +enum SQL_DESC_LABEL = SQL_COLUMN_LABEL; +enum SQL_DESC_LITERAL_PREFIX = 27; +enum SQL_DESC_LITERAL_SUFFIX = 28; +enum SQL_DESC_LOCAL_TYPE_NAME = 29; +enum SQL_DESC_MAXIMUM_SCALE = 30; +enum SQL_DESC_MINIMUM_SCALE = 31; +enum SQL_DESC_NUM_PREC_RADIX = 32; +enum SQL_DESC_PARAMETER_TYPE = 33; +enum SQL_DESC_ROWS_PROCESSED_PTR = 34; +enum SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; +enum SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; +enum SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; +enum SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; +enum SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; +enum SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; +enum SQL_DI_CREATE_INDEX = 0x00000001L; +enum SQL_DI_DROP_INDEX = 0x00000002L; + +enum SQL_DIAG_COLUMN_NUMBER = -1247; +enum SQL_DIAG_ROW_NUMBER = -1248; +enum SQL_DIAG_CURSOR_ROW_COUNT = -1249; + +enum SQL_DL_SQL92_DATE = 0x00000001L; +enum SQL_DL_SQL92_INTERVAL_DAY = 0x00000020L; +enum SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400L; +enum SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800L; +enum SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000L; +enum SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040L; +enum SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000L; +enum SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000L; +enum SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080L; +enum SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000L; +enum SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010L; +enum SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100L; +enum SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008L; +enum SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200L; +enum SQL_DL_SQL92_TIME = 0x00000002L; +enum SQL_DL_SQL92_TIMESTAMP = 0x00000004L; +enum SQL_DM_VER = 171; +enum SQL_DRIVER_HDESC = 135; +enum SQL_DROP_ASSERTION = 136; +enum SQL_DROP_CHARACTER_SET = 137; +enum SQL_DROP_COLLATION = 138; +enum SQL_DROP_DOMAIN = 139; +enum SQL_DROP_SCHEMA = 140; +enum SQL_DROP_TABLE = 141; +enum SQL_DROP_TRANSLATION = 142; +enum SQL_DROP_VIEW = 143; +enum SQL_DS_CASCADE = 0x00000004L; +enum SQL_DS_DROP_SCHEMA = 0x00000001L; +enum SQL_DS_RESTRICT = 0x00000002L; +enum SQL_DT_CASCADE = 0x00000004L; +enum SQL_DT_DROP_TABLE = 0x00000001L; +enum SQL_DT_RESTRICT = 0x00000002L; +enum SQL_DTC_DONE = 0L; +enum SQL_DTR_DROP_TRANSLATION = 0x00000001L; +enum SQL_DV_CASCADE = 0x00000004L; +enum SQL_DV_DROP_VIEW = 0x00000001L; +enum SQL_DV_RESTRICT = 0x00000002L; +enum SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; +enum SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; +enum SQL_EXT_API_LAST = SQL_API_SQLBINDPARAMETER; +enum SQL_EXT_API_START = 40; +enum SQL_FETCH_BY_BOOKMARK = 7; +enum SQL_FETCH_FIRST_SYSTEM = 32; +enum SQL_FETCH_FIRST_USER = 31; +enum SQL_FN_CVT_CAST = 0x00000002L; +enum SQL_FN_STR_BIT_LENGTH = 0x00080000L; +enum SQL_FN_STR_CHAR_LENGTH = 0x00100000L; +enum SQL_FN_STR_CHARACTER_LENGTH = 0x00200000L; +enum SQL_FN_STR_OCTET_LENGTH = 0x00400000L; +enum SQL_FN_STR_POSITION = 0x00800000L; +enum SQL_FN_TD_CURRENT_DATE = 0x00020000L; +enum SQL_FN_TD_CURRENT_TIME = 0x00040000L; +enum SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000L; +enum SQL_FN_TD_EXTRACT = 0x00100000L; +enum SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; +enum SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; /* #define SQL_FUNC_EXISTS(exists, api) ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? SQL_TRUE : SQL_FALSE ) */ - const SQL_GB_COLLATE = 0x0004; - const SQL_HANDLE_SENV = 5; - - const SQL_IK_NONE = 0; - const SQL_IK_ASC = 1; - const SQL_IK_DESC = 2; - const SQL_IK_ALL = SQL_IK_ASC | SQL_IK_DESC; - - const SQL_INDEX_KEYWORDS = 148; - const SQL_INFO_DRIVER_START = 1000; - const SQL_INFO_LAST = SQL_QUALIFIER_LOCATION; - const SQL_INFO_SCHEMA_VIEWS = 149; - const SQL_INITIALLY_DEFERRED = 5; - const SQL_INITIALLY_IMMEDIATE = 6; - const SQL_INSERT_STATEMENT = 172; - const SQL_INTERVAL = 10; - const SQL_IS_INSERT_LITERALS = 0x00000001L; - const SQL_IS_INSERT_SEARCHED = 0x00000002L; - const SQL_IS_INTEGER = -6; - const SQL_IS_POINTER = -4; - const SQL_IS_SELECT_INTO = 0x00000004L; - const SQL_IS_SMALLINT = -8; - const SQL_IS_UINTEGER = -5; - const SQL_IS_USMALLINT = -7; - const SQL_ISV_ASSERTIONS = 0x00000001L; - const SQL_ISV_CHARACTER_SETS = 0x00000002L; - const SQL_ISV_CHECK_CONSTRAINTS = 0x00000004L; - const SQL_ISV_COLLATIONS = 0x00000008L; - const SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010L; - const SQL_ISV_COLUMN_PRIVILEGES = 0x00000020L; - const SQL_ISV_COLUMNS = 0x00000040L; - const SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080L; - const SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100L; - const SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200L; - const SQL_ISV_DOMAINS = 0x00000400L; - const SQL_ISV_KEY_COLUMN_USAGE = 0x00000800L; - const SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000L; - const SQL_ISV_SCHEMATA = 0x00002000L; - const SQL_ISV_SQL_LANGUAGES = 0x00004000L; - const SQL_ISV_TABLE_CONSTRAINTS = 0x00008000L; - const SQL_ISV_TABLE_PRIVILEGES = 0x00010000L; - const SQL_ISV_TABLES = 0x00020000L; - const SQL_ISV_TRANSLATIONS = 0x00040000L; - const SQL_ISV_USAGE_PRIVILEGES = 0x00080000L; - const SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000L; - const SQL_ISV_VIEW_TABLE_USAGE = 0x00200000L; - const SQL_ISV_VIEWS = 0x00400000L; - const SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; - const SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; - const SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; - const SQL_NO_COLUMN_NUMBER = -1; - const SQL_NO_ROW_NUMBER = -1; - const SQL_NOT_DEFERRABLE = 7; - const SQL_NUM_EXTENSIONS = SQL_EXT_API_LAST-SQL_EXT_API_START+1; - const SQL_NUM_FUNCTIONS = 23; - const SQL_ODBC_INTERFACE_CONFORMANCE = 152; +enum SQL_GB_COLLATE = 0x0004; +enum SQL_HANDLE_SENV = 5; + +enum SQL_IK_NONE = 0; +enum SQL_IK_ASC = 1; +enum SQL_IK_DESC = 2; +enum SQL_IK_ALL = SQL_IK_ASC | SQL_IK_DESC; + +enum SQL_INDEX_KEYWORDS = 148; +enum SQL_INFO_DRIVER_START = 1000; +enum SQL_INFO_LAST = SQL_QUALIFIER_LOCATION; +enum SQL_INFO_SCHEMA_VIEWS = 149; +enum SQL_INITIALLY_DEFERRED = 5; +enum SQL_INITIALLY_IMMEDIATE = 6; +enum SQL_INSERT_STATEMENT = 172; +enum SQL_INTERVAL = 10; +enum SQL_IS_INSERT_LITERALS = 0x00000001L; +enum SQL_IS_INSERT_SEARCHED = 0x00000002L; +enum SQL_IS_INTEGER = -6; +enum SQL_IS_POINTER = -4; +enum SQL_IS_SELECT_INTO = 0x00000004L; +enum SQL_IS_SMALLINT = -8; +enum SQL_IS_UINTEGER = -5; +enum SQL_IS_USMALLINT = -7; +enum SQL_ISV_ASSERTIONS = 0x00000001L; +enum SQL_ISV_CHARACTER_SETS = 0x00000002L; +enum SQL_ISV_CHECK_CONSTRAINTS = 0x00000004L; +enum SQL_ISV_COLLATIONS = 0x00000008L; +enum SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010L; +enum SQL_ISV_COLUMN_PRIVILEGES = 0x00000020L; +enum SQL_ISV_COLUMNS = 0x00000040L; +enum SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080L; +enum SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100L; +enum SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200L; +enum SQL_ISV_DOMAINS = 0x00000400L; +enum SQL_ISV_KEY_COLUMN_USAGE = 0x00000800L; +enum SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000L; +enum SQL_ISV_SCHEMATA = 0x00002000L; +enum SQL_ISV_SQL_LANGUAGES = 0x00004000L; +enum SQL_ISV_TABLE_CONSTRAINTS = 0x00008000L; +enum SQL_ISV_TABLE_PRIVILEGES = 0x00010000L; +enum SQL_ISV_TABLES = 0x00020000L; +enum SQL_ISV_TRANSLATIONS = 0x00040000L; +enum SQL_ISV_USAGE_PRIVILEGES = 0x00080000L; +enum SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000L; +enum SQL_ISV_VIEW_TABLE_USAGE = 0x00200000L; +enum SQL_ISV_VIEWS = 0x00400000L; +enum SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; +enum SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; +enum SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; +enum SQL_NO_COLUMN_NUMBER = -1; +enum SQL_NO_ROW_NUMBER = -1; +enum SQL_NOT_DEFERRABLE = 7; +enum SQL_NUM_EXTENSIONS = SQL_EXT_API_LAST-SQL_EXT_API_START+1; +enum SQL_NUM_FUNCTIONS = 23; +enum SQL_ODBC_INTERFACE_CONFORMANCE = 152; enum : ULONG { SQL_OIC_CORE = 1, @@ -1051,157 +1051,157 @@ static if (ODBCVER >= 0x0300) { SQL_OV_ODBC3 = 3 } - const ULONG +enum ULONG SQL_PARAM_BIND_BY_COLUMN = 0, SQL_PARAM_BIND_TYPE_DEFAULT = SQL_PARAM_BIND_BY_COLUMN; - const SQL_PARAM_ARRAY_ROW_COUNTS = 153; - const SQL_PARAM_ARRAY_SELECTS = 154; - const SQL_PARAM_DIAG_UNAVAILABLE = 1; - const SQL_PARAM_ERROR = 5; - const SQL_PARAM_IGNORE = 1; - const SQL_PARAM_PROCEED = 0; - const SQL_PARAM_SUCCESS = 0; - const SQL_PARAM_SUCCESS_WITH_INFO = 6; - const SQL_PARAM_UNUSED = 7; - - const SQL_PARC_BATCH = 1; - const SQL_PARC_NO_BATCH = 2; - const SQL_PAS_BATCH = 1; - const SQL_PAS_NO_BATCH = 2; - const SQL_PAS_NO_SELECT = 3; - - const SQL_ROW_IGNORE = 1; - const SQL_ROW_NUMBER_UNKNOWN = -2; - const SQL_ROW_PROCEED = 0; - const SQL_ROW_SUCCESS_WITH_INFO = 6; - - const SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002L; - const SQL_SC_SQL92_ENTRY = 0x00000001L; - const SQL_SC_SQL92_FULL = 0x00000008L; - const SQL_SC_SQL92_INTERMEDIATE = 0x00000004L; - - const SQL_SCC_ISO92_CLI = 0x00000002L; - const SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001L; - - const SQL_SCHEMA_TERM = SQL_OWNER_TERM; - const SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; - const SQL_SDF_CURRENT_DATE = 0x00000001L; - const SQL_SDF_CURRENT_TIME = 0x00000002L; - const SQL_SDF_CURRENT_TIMESTAMP = 0x00000004L; - const SQL_SFKD_CASCADE = 0x00000001L; - const SQL_SFKD_NO_ACTION = 0x00000002L; - const SQL_SFKD_SET_DEFAULT = 0x00000004L; - const SQL_SFKD_SET_NULL = 0x00000008L; - const SQL_SFKU_CASCADE = 0x00000001L; - const SQL_SFKU_NO_ACTION = 0x00000002L; - const SQL_SFKU_SET_DEFAULT = 0x00000004L; - const SQL_SFKU_SET_NULL = 0x00000008L; - const SQL_SG_DELETE_TABLE = 0x00000020L; - const SQL_SG_INSERT_COLUMN = 0x00000080L; - const SQL_SG_INSERT_TABLE = 0x00000040L; - const SQL_SG_REFERENCES_COLUMN = 0x00000200L; - const SQL_SG_REFERENCES_TABLE = 0x00000100L; - const SQL_SG_SELECT_TABLE = 0x00000400L; - const SQL_SG_UPDATE_COLUMN = 0x00001000L; - const SQL_SG_UPDATE_TABLE = 0x00000800L; - const SQL_SG_USAGE_ON_CHARACTER_SET = 0x00000002L; - const SQL_SG_USAGE_ON_COLLATION = 0x00000004L; - const SQL_SG_USAGE_ON_DOMAIN = 0x00000001L; - const SQL_SG_USAGE_ON_TRANSLATION = 0x00000008L; - const SQL_SG_WITH_GRANT_OPTION = 0x00000010L; - const SQL_SNVF_BIT_LENGTH = 0x00000001L; - const SQL_SNVF_CHAR_LENGTH = 0x00000002L; - const SQL_SNVF_CHARACTER_LENGTH = 0x00000004L; - const SQL_SNVF_EXTRACT = 0x00000008L; - const SQL_SNVF_OCTET_LENGTH = 0x00000010L; - const SQL_SNVF_POSITION = 0x00000020L; - const SQL_SP_BETWEEN = 0x00000800L; - const SQL_SP_COMPARISON = 0x00001000L; - const SQL_SP_EXISTS = 0x00000001L; - const SQL_SP_IN = 0x00000400L; - const SQL_SP_ISNOTNULL = 0x00000002L; - const SQL_SP_ISNULL = 0x00000004L; - const SQL_SP_LIKE = 0x00000200L; - const SQL_SP_MATCH_FULL = 0x00000008L; - const SQL_SP_MATCH_PARTIAL = 0x00000010L; - const SQL_SP_MATCH_UNIQUE_FULL = 0x00000020L; - const SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040L; - const SQL_SP_OVERLAPS = 0x00000080L; - const SQL_SP_QUANTIFIED_COMPARISON = 0x00002000L; - const SQL_SP_UNIQUE = 0x00000100L; - const SQL_SQL_CONFORMANCE = 118; - const SQL_SQL92_DATETIME_FUNCTIONS = 155; - const SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; - const SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; - const SQL_SQL92_GRANT = 158; - const SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; - const SQL_SQL92_PREDICATES = 160; - const SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; - const SQL_SQL92_REVOKE = 162; - const SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; - const SQL_SQL92_STRING_FUNCTIONS = 164; - const SQL_SQL92_VALUE_EXPRESSIONS = 165; - const SQL_SR_CASCADE = 0x00000020L; - const SQL_SR_DELETE_TABLE = 0x00000080L; - const SQL_SR_GRANT_OPTION_FOR = 0x00000010L; - const SQL_SR_INSERT_COLUMN = 0x00000200L; - const SQL_SR_INSERT_TABLE = 0x00000100L; - const SQL_SR_REFERENCES_COLUMN = 0x00000800L; - const SQL_SR_REFERENCES_TABLE = 0x00000400L; - const SQL_SR_RESTRICT = 0x00000040L; - const SQL_SR_SELECT_TABLE = 0x00001000L; - const SQL_SR_UPDATE_COLUMN = 0x00004000L; - const SQL_SR_UPDATE_TABLE = 0x00002000L; - const SQL_SR_USAGE_ON_CHARACTER_SET = 0x00000002L; - const SQL_SR_USAGE_ON_COLLATION = 0x00000004L; - const SQL_SR_USAGE_ON_DOMAIN = 0x00000001L; - const SQL_SR_USAGE_ON_TRANSLATION = 0x00000008L; - const SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001L; - const SQL_SRJO_CROSS_JOIN = 0x00000002L; - const SQL_SRJO_EXCEPT_JOIN = 0x00000004L; - const SQL_SRJO_FULL_OUTER_JOIN = 0x00000008L; - const SQL_SRJO_INNER_JOIN = 0x00000010L; - const SQL_SRJO_INTERSECT_JOIN = 0x00000020L; - const SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040L; - const SQL_SRJO_NATURAL_JOIN = 0x00000080L; - const SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100L; - const SQL_SRJO_UNION_JOIN = 0x00000200L; - const SQL_SRVC_DEFAULT = 0x00000004L; - const SQL_SRVC_NULL = 0x00000002L; - const SQL_SRVC_ROW_SUBQUERY = 0x00000008L; - const SQL_SRVC_VALUE_EXPRESSION = 0x00000001L; - const SQL_SSF_CONVERT = 0x00000001L; - const SQL_SSF_LOWER = 0x00000002L; - const SQL_SSF_SUBSTRING = 0x00000008L; - const SQL_SSF_TRANSLATE = 0x00000010L; - const SQL_SSF_TRIM_BOTH = 0x00000020L; - const SQL_SSF_TRIM_LEADING = 0x00000040L; - const SQL_SSF_TRIM_TRAILING = 0x00000080L; - const SQL_SSF_UPPER = 0x00000004L; - const SQL_STANDARD_CLI_CONFORMANCE = 166; - const SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; - const SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; - const SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; - const SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; - const SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; - const SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; - const SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; - const SQL_SVE_CASE = 0x00000001L; - const SQL_SVE_CAST = 0x00000002L; - const SQL_SVE_COALESCE = 0x00000004L; - const SQL_SVE_NULLIF = 0x00000008L; - const SQL_UB_FIXED = SQL_UB_ON; - const SQL_UB_VARIABLE = 2UL; - const SQL_UNION_STATEMENT = SQL_UNION; - const SQL_UPDATE_BY_BOOKMARK = 5; - const SQL_US_UNION = SQL_U_UNION; - const SQL_US_UNION_ALL = SQL_U_UNION_ALL; +enum SQL_PARAM_ARRAY_ROW_COUNTS = 153; +enum SQL_PARAM_ARRAY_SELECTS = 154; +enum SQL_PARAM_DIAG_UNAVAILABLE = 1; +enum SQL_PARAM_ERROR = 5; +enum SQL_PARAM_IGNORE = 1; +enum SQL_PARAM_PROCEED = 0; +enum SQL_PARAM_SUCCESS = 0; +enum SQL_PARAM_SUCCESS_WITH_INFO = 6; +enum SQL_PARAM_UNUSED = 7; + +enum SQL_PARC_BATCH = 1; +enum SQL_PARC_NO_BATCH = 2; +enum SQL_PAS_BATCH = 1; +enum SQL_PAS_NO_BATCH = 2; +enum SQL_PAS_NO_SELECT = 3; + +enum SQL_ROW_IGNORE = 1; +enum SQL_ROW_NUMBER_UNKNOWN = -2; +enum SQL_ROW_PROCEED = 0; +enum SQL_ROW_SUCCESS_WITH_INFO = 6; + +enum SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002L; +enum SQL_SC_SQL92_ENTRY = 0x00000001L; +enum SQL_SC_SQL92_FULL = 0x00000008L; +enum SQL_SC_SQL92_INTERMEDIATE = 0x00000004L; + +enum SQL_SCC_ISO92_CLI = 0x00000002L; +enum SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001L; + +enum SQL_SCHEMA_TERM = SQL_OWNER_TERM; +enum SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; +enum SQL_SDF_CURRENT_DATE = 0x00000001L; +enum SQL_SDF_CURRENT_TIME = 0x00000002L; +enum SQL_SDF_CURRENT_TIMESTAMP = 0x00000004L; +enum SQL_SFKD_CASCADE = 0x00000001L; +enum SQL_SFKD_NO_ACTION = 0x00000002L; +enum SQL_SFKD_SET_DEFAULT = 0x00000004L; +enum SQL_SFKD_SET_NULL = 0x00000008L; +enum SQL_SFKU_CASCADE = 0x00000001L; +enum SQL_SFKU_NO_ACTION = 0x00000002L; +enum SQL_SFKU_SET_DEFAULT = 0x00000004L; +enum SQL_SFKU_SET_NULL = 0x00000008L; +enum SQL_SG_DELETE_TABLE = 0x00000020L; +enum SQL_SG_INSERT_COLUMN = 0x00000080L; +enum SQL_SG_INSERT_TABLE = 0x00000040L; +enum SQL_SG_REFERENCES_COLUMN = 0x00000200L; +enum SQL_SG_REFERENCES_TABLE = 0x00000100L; +enum SQL_SG_SELECT_TABLE = 0x00000400L; +enum SQL_SG_UPDATE_COLUMN = 0x00001000L; +enum SQL_SG_UPDATE_TABLE = 0x00000800L; +enum SQL_SG_USAGE_ON_CHARACTER_SET = 0x00000002L; +enum SQL_SG_USAGE_ON_COLLATION = 0x00000004L; +enum SQL_SG_USAGE_ON_DOMAIN = 0x00000001L; +enum SQL_SG_USAGE_ON_TRANSLATION = 0x00000008L; +enum SQL_SG_WITH_GRANT_OPTION = 0x00000010L; +enum SQL_SNVF_BIT_LENGTH = 0x00000001L; +enum SQL_SNVF_CHAR_LENGTH = 0x00000002L; +enum SQL_SNVF_CHARACTER_LENGTH = 0x00000004L; +enum SQL_SNVF_EXTRACT = 0x00000008L; +enum SQL_SNVF_OCTET_LENGTH = 0x00000010L; +enum SQL_SNVF_POSITION = 0x00000020L; +enum SQL_SP_BETWEEN = 0x00000800L; +enum SQL_SP_COMPARISON = 0x00001000L; +enum SQL_SP_EXISTS = 0x00000001L; +enum SQL_SP_IN = 0x00000400L; +enum SQL_SP_ISNOTNULL = 0x00000002L; +enum SQL_SP_ISNULL = 0x00000004L; +enum SQL_SP_LIKE = 0x00000200L; +enum SQL_SP_MATCH_FULL = 0x00000008L; +enum SQL_SP_MATCH_PARTIAL = 0x00000010L; +enum SQL_SP_MATCH_UNIQUE_FULL = 0x00000020L; +enum SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040L; +enum SQL_SP_OVERLAPS = 0x00000080L; +enum SQL_SP_QUANTIFIED_COMPARISON = 0x00002000L; +enum SQL_SP_UNIQUE = 0x00000100L; +enum SQL_SQL_CONFORMANCE = 118; +enum SQL_SQL92_DATETIME_FUNCTIONS = 155; +enum SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; +enum SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; +enum SQL_SQL92_GRANT = 158; +enum SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; +enum SQL_SQL92_PREDICATES = 160; +enum SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; +enum SQL_SQL92_REVOKE = 162; +enum SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; +enum SQL_SQL92_STRING_FUNCTIONS = 164; +enum SQL_SQL92_VALUE_EXPRESSIONS = 165; +enum SQL_SR_CASCADE = 0x00000020L; +enum SQL_SR_DELETE_TABLE = 0x00000080L; +enum SQL_SR_GRANT_OPTION_FOR = 0x00000010L; +enum SQL_SR_INSERT_COLUMN = 0x00000200L; +enum SQL_SR_INSERT_TABLE = 0x00000100L; +enum SQL_SR_REFERENCES_COLUMN = 0x00000800L; +enum SQL_SR_REFERENCES_TABLE = 0x00000400L; +enum SQL_SR_RESTRICT = 0x00000040L; +enum SQL_SR_SELECT_TABLE = 0x00001000L; +enum SQL_SR_UPDATE_COLUMN = 0x00004000L; +enum SQL_SR_UPDATE_TABLE = 0x00002000L; +enum SQL_SR_USAGE_ON_CHARACTER_SET = 0x00000002L; +enum SQL_SR_USAGE_ON_COLLATION = 0x00000004L; +enum SQL_SR_USAGE_ON_DOMAIN = 0x00000001L; +enum SQL_SR_USAGE_ON_TRANSLATION = 0x00000008L; +enum SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001L; +enum SQL_SRJO_CROSS_JOIN = 0x00000002L; +enum SQL_SRJO_EXCEPT_JOIN = 0x00000004L; +enum SQL_SRJO_FULL_OUTER_JOIN = 0x00000008L; +enum SQL_SRJO_INNER_JOIN = 0x00000010L; +enum SQL_SRJO_INTERSECT_JOIN = 0x00000020L; +enum SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040L; +enum SQL_SRJO_NATURAL_JOIN = 0x00000080L; +enum SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100L; +enum SQL_SRJO_UNION_JOIN = 0x00000200L; +enum SQL_SRVC_DEFAULT = 0x00000004L; +enum SQL_SRVC_NULL = 0x00000002L; +enum SQL_SRVC_ROW_SUBQUERY = 0x00000008L; +enum SQL_SRVC_VALUE_EXPRESSION = 0x00000001L; +enum SQL_SSF_CONVERT = 0x00000001L; +enum SQL_SSF_LOWER = 0x00000002L; +enum SQL_SSF_SUBSTRING = 0x00000008L; +enum SQL_SSF_TRANSLATE = 0x00000010L; +enum SQL_SSF_TRIM_BOTH = 0x00000020L; +enum SQL_SSF_TRIM_LEADING = 0x00000040L; +enum SQL_SSF_TRIM_TRAILING = 0x00000080L; +enum SQL_SSF_UPPER = 0x00000004L; +enum SQL_STANDARD_CLI_CONFORMANCE = 166; +enum SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; +enum SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; +enum SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; +enum SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; +enum SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; +enum SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; +enum SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; +enum SQL_SVE_CASE = 0x00000001L; +enum SQL_SVE_CAST = 0x00000002L; +enum SQL_SVE_COALESCE = 0x00000004L; +enum SQL_SVE_NULLIF = 0x00000008L; +enum SQL_UB_FIXED = SQL_UB_ON; +enum SQL_UB_VARIABLE = 2UL; +enum SQL_UNION_STATEMENT = SQL_UNION; +enum SQL_UPDATE_BY_BOOKMARK = 5; +enum SQL_US_UNION = SQL_U_UNION; +enum SQL_US_UNION_ALL = SQL_U_UNION_ALL; }//[Yes] #endif /* ODBCVER >= 0x300 */ static if (ODBCVER >= 0x0350) { - const SQL_DESC_ROWVER = 35; - const SQL_GUID = -11; - const SQL_C_GUID = SQL_GUID; +enum SQL_DESC_ROWVER = 35; +enum SQL_GUID = -11; +enum SQL_C_GUID = SQL_GUID; //#ifdef ODBC_STD //#define SQLAllocHandle SQLAllocHandleStd //#define SQLAllocEnv(p) SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, p) @@ -1222,13 +1222,13 @@ static if (ODBCVER >= 0x0350) { }//#endif /* ODBCVER >= 0x0350 */ //static if (ODBCVER >= 0x0351) { -const SQL_ATTR_ANSI_APP=115; -const SQL_AA_TRUE=1L; -const SQL_AA_FALSE=0L; +enum SQL_ATTR_ANSI_APP=115; +enum SQL_AA_TRUE=1L; +enum SQL_AA_FALSE=0L; //}//[Yes] #endif -const TRACE_VERSION=1000; -const TRACE_ON=1; +enum TRACE_VERSION=1000; +enum TRACE_ON=1; const char [] SQL_ODBC_KEYWORDS = "ABSOLUTE, ACTION, ADA, ADD, ALL, ALLOCATE, ALTER, AND, ANY, ARE, AS, " diff --git a/src/core/sys/windows/sqltypes.d b/src/core/sys/windows/sqltypes.d index 952d8aa3db..68e4975790 100644 --- a/src/core/sys/windows/sqltypes.d +++ b/src/core/sys/windows/sqltypes.d @@ -132,7 +132,7 @@ struct SQL_INTERVAL_STRUCT { _intval intval; } -const SQL_MAX_NUMERIC_LEN = 16; +enum SQL_MAX_NUMERIC_LEN = 16; struct SQL_NUMERIC_STRUCT { SQLCHAR precision; diff --git a/src/core/sys/windows/sqlucode.d b/src/core/sys/windows/sqlucode.d index bb24c3a27d..ea21f1e548 100644 --- a/src/core/sys/windows/sqlucode.d +++ b/src/core/sys/windows/sqlucode.d @@ -13,29 +13,29 @@ version (ANSI) {} else version = Unicode; private import core.sys.windows.sqlext; -const SQL_WCHAR = -8; -const SQL_WVARCHAR = -9; -const SQL_WLONGVARCHAR = -10; -const SQL_C_WCHAR = SQL_WCHAR; +enum SQL_WCHAR = -8; +enum SQL_WVARCHAR = -9; +enum SQL_WLONGVARCHAR = -10; +enum SQL_C_WCHAR = SQL_WCHAR; -const SQL_SQLSTATE_SIZEW = 10; +enum SQL_SQLSTATE_SIZEW = 10; version(Unicode) { - const SQL_C_TCHAR = SQL_C_WCHAR; +enum SQL_C_TCHAR = SQL_C_WCHAR; } else { - const SQL_C_TCHAR = SQL_C_CHAR; +enum SQL_C_TCHAR = SQL_C_CHAR; } // Moved from sqlext static if (ODBCVER <= 0x0300) { - const SQL_UNICODE = -95; - const SQL_UNICODE_VARCHAR = -96; - const SQL_UNICODE_LONGVARCHAR = -97; - const SQL_UNICODE_CHAR = SQL_UNICODE; +enum SQL_UNICODE = -95; +enum SQL_UNICODE_VARCHAR = -96; +enum SQL_UNICODE_LONGVARCHAR = -97; +enum SQL_UNICODE_CHAR = SQL_UNICODE; } else { - const SQL_UNICODE = SQL_WCHAR; - const SQL_UNICODE_VARCHAR = SQL_WVARCHAR; - const SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR; - const SQL_UNICODE_CHAR = SQL_WCHAR; +enum SQL_UNICODE = SQL_WCHAR; +enum SQL_UNICODE_VARCHAR = SQL_WVARCHAR; +enum SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR; +enum SQL_UNICODE_CHAR = SQL_WCHAR; } extern (Windows) { diff --git a/src/core/sys/windows/stacktrace.d b/src/core/sys/windows/stacktrace.d index d034dfc8f2..7695ddc448 100644 --- a/src/core/sys/windows/stacktrace.d +++ b/src/core/sys/windows/stacktrace.d @@ -293,7 +293,7 @@ private: auto res = formatStackFrame(pc); res ~= " in "; - const(char)[] tempSymName = symName[0 .. strlen(symName)]; +const(char)[] tempSymName = symName[0 .. strlen(symName)]; //Deal with dmd mangling of long names version(DigitalMars) version(Win32) { diff --git a/src/core/sys/windows/stat.d b/src/core/sys/windows/stat.d index 1c216177c5..9612793afc 100644 --- a/src/core/sys/windows/stat.d +++ b/src/core/sys/windows/stat.d @@ -9,16 +9,16 @@ extern (C) nothrow @nogc: // Posix version is in core.sys.posix.sys.stat -const S_IFMT = 0xF000; -const S_IFDIR = 0x4000; -const S_IFCHR = 0x2000; -const S_IFIFO = 0x1000; -const S_IFREG = 0x8000; -const S_IREAD = 0x0100; -const S_IWRITE = 0x0080; -const S_IEXEC = 0x0040; -const S_IFBLK = 0x6000; -const S_IFNAM = 0x5000; +enum S_IFMT = 0xF000; +enum S_IFDIR = 0x4000; +enum S_IFCHR = 0x2000; +enum S_IFIFO = 0x1000; +enum S_IFREG = 0x8000; +enum S_IREAD = 0x0100; +enum S_IWRITE = 0x0080; +enum S_IEXEC = 0x0040; +enum S_IFBLK = 0x6000; +enum S_IFNAM = 0x5000; @safe pure { diff --git a/src/core/sys/windows/subauth.d b/src/core/sys/windows/subauth.d index eb13e15620..39e8beb6c2 100644 --- a/src/core/sys/windows/subauth.d +++ b/src/core/sys/windows/subauth.d @@ -22,7 +22,7 @@ enum : ULONG { } // USER_ALL_INFORMATION.WhichFields (Undocumented) -const ULONG +enum ULONG MSV1_0_VALIDATION_LOGOFF_TIME = 1, MSV1_0_VALIDATION_KICKOFF_TIME = 2, MSV1_0_VALIDATION_LOGON_SERVER = 4, @@ -32,20 +32,20 @@ const ULONG MSV1_0_VALIDATION_USER_ID = 64; // ?ActionsPerformed? (Undocumented) -const MSV1_0_SUBAUTH_ACCOUNT_DISABLED = 1; -const MSV1_0_SUBAUTH_PASSWORD = 2; -const MSV1_0_SUBAUTH_WORKSTATIONS = 4; -const MSV1_0_SUBAUTH_LOGON_HOURS = 8; -const MSV1_0_SUBAUTH_ACCOUNT_EXPIRY = 16; -const MSV1_0_SUBAUTH_PASSWORD_EXPIRY = 32; -const MSV1_0_SUBAUTH_ACCOUNT_TYPE = 64; -const MSV1_0_SUBAUTH_LOCKOUT = 128; +enum MSV1_0_SUBAUTH_ACCOUNT_DISABLED = 1; +enum MSV1_0_SUBAUTH_PASSWORD = 2; +enum MSV1_0_SUBAUTH_WORKSTATIONS = 4; +enum MSV1_0_SUBAUTH_LOGON_HOURS = 8; +enum MSV1_0_SUBAUTH_ACCOUNT_EXPIRY = 16; +enum MSV1_0_SUBAUTH_PASSWORD_EXPIRY = 32; +enum MSV1_0_SUBAUTH_ACCOUNT_TYPE = 64; +enum MSV1_0_SUBAUTH_LOCKOUT = 128; -const NEXT_FREE_ACCOUNT_CONTROL_BIT = 131072; +enum NEXT_FREE_ACCOUNT_CONTROL_BIT = 131072; -const SAM_DAYS_PER_WEEK = 7; -const SAM_HOURS_PER_WEEK = 168; -const SAM_MINUTES_PER_WEEK = 10080; +enum SAM_DAYS_PER_WEEK = 7; +enum SAM_HOURS_PER_WEEK = 168; +enum SAM_MINUTES_PER_WEEK = 10080; enum : NTSTATUS { STATUS_SUCCESS = 0, @@ -67,7 +67,7 @@ enum : NTSTATUS { // Note: undocumented in MSDN // USER_ALL_INFORMATION.UserAccountControl -const ULONG +enum ULONG USER_ACCOUNT_DISABLED = 1, USER_HOME_DIRECTORY_REQUIRED = 2, USER_PASSWORD_NOT_REQUIRED = 4, @@ -126,9 +126,9 @@ enum NETLOGON_LOGON_INFO_CLASS { } -const CYPHER_BLOCK_LENGTH = 8; -const USER_SESSION_KEY_LENGTH = CYPHER_BLOCK_LENGTH * 2; -const CLEAR_BLOCK_LENGTH = 8; +enum CYPHER_BLOCK_LENGTH = 8; +enum USER_SESSION_KEY_LENGTH = CYPHER_BLOCK_LENGTH * 2; +enum CLEAR_BLOCK_LENGTH = 8; struct CYPHER_BLOCK { CHAR[CYPHER_BLOCK_LENGTH] data; diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index 7416d200dc..9fe281d973 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -24,7 +24,7 @@ enum : uint { LF32_MOVEABLE = 0x4 } -const MAX_MODULE_NAME32 = 255; +enum MAX_MODULE_NAME32 = 255; enum : uint { TH32CS_SNAPHEAPLIST = 0x1, diff --git a/src/core/sys/windows/uuid.d b/src/core/sys/windows/uuid.d index 91d40d0bd3..fe857ecfe1 100644 --- a/src/core/sys/windows/uuid.d +++ b/src/core/sys/windows/uuid.d @@ -5,4066 +5,4066 @@ import core.sys.windows.basetyps; export extern(C) { - const IID _DBBMKGUID = {0xF6304BB0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; - const IID _DBCIDGUID = {0xFE284700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; - const IID _GUID_NAMEONLY = {0xE8BF1170, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; - const IID ARRAYID_PathProperties = {0x7ECBBA04, 0x2D97, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID BFID_GRAY_16 = {0xF9D6BC00, 0x449C, 0x11D0, [0x91, 0x8C, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; - const IID BFID_GRAY_8 = {0xD93DE910, 0x449C, 0x11D0, [0x91, 0x8C, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; - const IID BFID_MONOCHROME = {0xE436EB78, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; - const IID BFID_RGB_24 = {0xE436EB7D, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; - const IID BFID_RGB_32 = {0xE436EB7E, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; - const IID BFID_RGB_4 = {0xE436EB79, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; - const IID BFID_RGB_555 = {0xE436EB7C, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; - const IID BFID_RGB_565 = {0xE436EB7B, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; - const IID BFID_RGB_8 = {0xE436EB7A, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; - const IID BFID_RGBA_32 = {0x773C9AC0, 0x3274, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; - const IID BHID_LinkTargetItem = {0x3981E228, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; - const IID BHID_SFObject = {0x3981E224, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; - const IID BHID_SFUIObject = {0x3981E225, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; - const IID BHID_SFViewObject = {0x3981E226, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; - const IID BHID_Storage = {0x3981E227, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; - const IID BHID_StorageEnum = {0x4621A4E3, 0xF0D6, 0x4773, [0x8A, 0x9C, 0x46, 0xE7, 0x7B, 0x17, 0x48, 0x40]}; - const IID BHID_Stream = {0x1CEBB3AB, 0x7C10, 0x499A, [0xA4, 0x17, 0x92, 0xCA, 0x16, 0xC4, 0xCB, 0x83]}; - const IID CATID_BrowsableShellExt = {0x00021490, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CATID_BrowseInPlace = {0x00021491, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CATID_ClusCfgCapabilities = {0x4653EEC4, 0x2788, 0x4EBD, [0xA8, 0x31, 0x7E, 0x0D, 0x9F, 0x82, 0xD6, 0xE7]}; - const IID CATID_ClusCfgMemberSetChangeListener = {0x8A43EAD4, 0x10F1, 0x440D, [0x8D, 0xAA, 0x1F, 0xE3, 0x8D, 0x16, 0x98, 0xCD]}; - const IID CATID_ClusCfgResourceTypes = {0x7C4CAE52, 0xCAC9, 0x499D, [0x82, 0xC6, 0xBC, 0x6A, 0x21, 0x77, 0xE5, 0x56]}; - const IID CATID_ClusCfgStartupListeners = {0xDF406DB4, 0x7872, 0x4A99, [0xBB, 0x3C, 0x14, 0xA9, 0xC3, 0x39, 0x33, 0xD1]}; - const IID CATID_CommBand = {0x00021494, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CATID_Control = {0x40FC6ED4, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; - const IID CATID_DesignTimeUIActivatableControl = {0xF2BB56D1, 0xDB07, 0x11D1, [0xAA, 0x6B, 0x00, 0x60, 0x97, 0xDB, 0x95, 0x39]}; - const IID CATID_DeskBand = {0x00021492, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CATID_DocObject = {0x40FC6ED8, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; - const IID CATID_EnumClusCfgManagedResources = {0x02A34F88, 0xD31A, 0x4688, [0xBD, 0xDD, 0x38, 0xA7, 0x39, 0xE4, 0xF8, 0x9B]}; - const IID CATID_InfoBand = {0x00021493, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CATID_Insertable = {0x40FC6ED3, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; - const IID CATID_InternetAware = {0x0DE86A58, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID CATID_IsShortcut = {0x40FC6ED6, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; - const IID CATID_MARSHALER = {0x00000003, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CATID_NeverShowExt = {0x40FC6ED7, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; - const IID CATID_PersistsToFile = {0x0DE86A56, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID CATID_PersistsToMemory = {0x0DE86A55, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID CATID_PersistsToMoniker = {0x0DE86A51, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID CATID_PersistsToPropertyBag = {0x0DE86A57, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID CATID_PersistsToStorage = {0x0DE86A52, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID CATID_PersistsToStream = {0x0DE86A54, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID CATID_PersistsToStreamInit = {0x0DE86A53, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID CATID_Printable = {0x40FC6ED9, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; - const IID CATID_Programmable = {0x40FC6ED5, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; - const IID CATID_RequiresDataPathHost = {0x0DE86A50, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID CATID_SafeForInitializing = {0x7DD95802, 0x9882, 0x11CF, [0x9F, 0xA9, 0x00, 0xAA, 0x00, 0x6C, 0x42, 0xC4]}; - const IID CATID_SafeForScripting = {0x7DD95801, 0x9882, 0x11CF, [0x9F, 0xA9, 0x00, 0xAA, 0x00, 0x6C, 0x42, 0xC4]}; - const IID CGID_DocHostCommandHandler = {0xF38BC242, 0xB950, 0x11D1, [0x89, 0x18, 0x00, 0xC0, 0x4F, 0xC2, 0xC8, 0x36]}; - const IID CGID_DownloadHost = {0xE0608728, 0xAE4C, 0x11D1, [0xBA, 0x40, 0x00, 0xC0, 0x4F, 0xB9, 0x2D, 0x79]}; - const IID CGID_Explorer = {0x000214D0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CGID_ExplorerBarDoc = {0x000214D3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CGID_InternetExplorer = {0xEB7EED00, 0xF74D, 0x11D2, [0xBB, 0x7F, 0x00, 0x10, 0x4B, 0x35, 0xE7, 0xF9]}; - const IID CGID_MSHTML = {0xDE4BA900, 0x59CA, 0x11CF, [0x95, 0x92, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID CGID_ShellDocView = {0x000214D1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CGID_ShellServiceObject = {0x000214D2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CGID_ShortCut = {0x93A68750, 0x951A, 0x11D1, [0x94, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; - const IID CLSID_1 = {0xD34F1813, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_2 = {0xD34F1814, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_3 = {0xD34F1815, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_4 = {0xD34F1816, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_5 = {0xD34F1817, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_6 = {0xD34F1818, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_7 = {0xD34F1819, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_8 = {0xD34F181A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_9 = {0xD34F181B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_a = {0xD34F181C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_AboutProtocol = {0x3050F406, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_AccessControlEntry = {0xB75AC000, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID CLSID_AccessControlList = {0xB85EA052, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID CLSID_AccountDiscovery = {0x3DAB30ED, 0x8132, 0x40BF, [0xA8, 0xBA, 0x7B, 0x50, 0x57, 0xF0, 0xCD, 0x10]}; - const IID CLSID_ACLCustomMRU = {0x6935DB93, 0x21E8, 0x4CCC, [0xBE, 0xB9, 0x9F, 0xE3, 0xC7, 0x7A, 0x29, 0x7A]}; - const IID CLSID_ACLHistory = {0x00BB2764, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; - const IID CLSID_ACListISF = {0x03C036F1, 0xA186, 0x11D0, [0x82, 0x4A, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83]}; - const IID CLSID_ACLMRU = {0x6756A641, 0xDE71, 0x11D0, [0x83, 0x1B, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83]}; - const IID CLSID_ACLMulti = {0x00BB2765, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; - const IID CLSID_ActiveDesktop = {0x75048700, 0xEF1F, 0x11D0, [0x98, 0x88, 0x00, 0x60, 0x97, 0xDE, 0xAC, 0xF9]}; - const IID CLSID_AdapterInfo = {0x6F9942C9, 0xC1B1, 0x4AB5, [0x93, 0xDA, 0x60, 0x58, 0x99, 0x1D, 0xC8, 0xF3]}; - const IID CLSID_AddrControl = {0x00000348, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_AddressBarParser = {0xE0E11A09, 0x5CB8, 0x4B6C, [0x83, 0x32, 0xE0, 0x07, 0x20, 0xA1, 0x68, 0xF2]}; - const IID CLSID_ADsDSOObject = {0x549365D0, 0xEC26, 0x11CF, [0x83, 0x10, 0x00, 0xAA, 0x00, 0xB5, 0x05, 0xDB]}; - const IID CLSID_ADsSecurityUtility = {0xF270C64A, 0xFFB8, 0x4AE4, [0x85, 0xFE, 0x3A, 0x75, 0xE5, 0x34, 0x79, 0x66]}; - const IID CLSID_ADSystemInfo = {0x50B6327F, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; - const IID CLSID_AlgSetup = {0x27D0BCCC, 0x344D, 0x4287, [0xAF, 0x37, 0x0C, 0x72, 0xC1, 0x61, 0xC1, 0x4C]}; - const IID CLSID_AllClasses = {0x00000330, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_AlphabeticalCategorizer = {0x3C2654C6, 0x7372, 0x4F6B, [0xB3, 0x10, 0x55, 0xD6, 0x12, 0x8F, 0x49, 0xD2]}; - const IID CLSID_AnchorClick = {0x13D5413C, 0x33B9, 0x11D2, [0x95, 0xA7, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; - const IID CLSID_AnimationComposerFactory = {0x332B2A56, 0xF86C, 0x47E7, [0x86, 0x02, 0xFC, 0x42, 0xAC, 0x8B, 0x99, 0x20]}; - const IID CLSID_AnimationComposerSiteFactory = {0x16911A65, 0xD41D, 0x4431, [0x87, 0xF7, 0xE7, 0x57, 0xF4, 0xD0, 0x3B, 0xD8]}; - const IID CLSID_ApplicationGatewayServices = {0xF8ADE1D3, 0x49DF, 0x4B75, [0x90, 0x05, 0xEF, 0x95, 0x08, 0xE6, 0xA3, 0x37]}; - const IID CLSID_AutoComplete = {0x00BB2763, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; - const IID CLSID_AutoDiscoveryProvider = {0xC4F3D5BF, 0x4809, 0x44E3, [0x84, 0xA4, 0x36, 0x8B, 0x6B, 0x33, 0xB0, 0xB4]}; - const IID CLSID_AutoplayForSlideShow = {0x00E7B358, 0xF65B, 0x4DCF, [0x83, 0xDF, 0xCD, 0x02, 0x6B, 0x94, 0xBF, 0xD4]}; - const IID CLSID_b = {0xD34F181D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_BackgroundCopyManager = {0x4991D34B, 0x80A1, 0x4291, [0x83, 0xB6, 0x33, 0x28, 0x36, 0x6B, 0x90, 0x97]}; - const IID CLSID_BackgroundCopyManager1_5 = {0xF087771F, 0xD74F, 0x4C1A, [0xBB, 0x8A, 0xE1, 0x6A, 0xCA, 0x91, 0x24, 0xEA]}; - const IID CLSID_BackgroundCopyQMgr = {0x69AD4AEE, 0x51BE, 0x439B, [0xA9, 0x2C, 0x86, 0xAE, 0x49, 0x0E, 0x8B, 0x30]}; - const IID CLSID_BackLink = {0xFCBF906F, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_BasicImageEffects = {0x16B280C8, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID CLSID_BasicImageEffectsPP = {0x16B280C9, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID CLSID_BlockFormats = {0x3050F831, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_BridgeTerminal = {0x8EBAE7A3, 0x8943, 0x11D1, [0x96, 0xB8, 0x00, 0xC0, 0x4F, 0xB6, 0xE8, 0x66]}; - const IID CLSID_c = {0xD34F181E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_CAccPropServices = {0xB5F8350B, 0x0548, 0x48B1, [0xA6, 0xEE, 0x88, 0xBD, 0x00, 0xB4, 0xA5, 0xE7]}; - const IID CLSID_CActiveIMM = {0x4955DD33, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; - const IID CLSID_CAnchorBrowsePropertyPage = {0x3050F3BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CaseIgnoreList = {0x15F88A55, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_CCheckBox = {0x3050F686, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CColorPropPage = {0x0BE35201, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; - const IID CLSID_CCombobox = {0x3050F678, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CDBurn = {0xFBEB8A05, 0xBEEE, 0x4442, [0x80, 0x4E, 0x40, 0x9D, 0x6C, 0x45, 0x15, 0xE9]}; - const IID CLSID_CDebugDocumentHelper = {0x83B8BCA6, 0x687C, 0x11D0, [0xA4, 0x05, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; - const IID CLSID_CDeviceRect = {0x3050F6D4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CDirect3DRM = {0x4516EC41, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID CLSID_CDirect3DRMAnimation = {0x4FA35698, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMAnimationSet = {0x4FA35699, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMClippedVisual = {0x5434E72D, 0x6D66, 0x11D1, [0xBB, 0x0B, 0x00, 0x00, 0xF8, 0x75, 0x86, 0x5A]}; - const IID CLSID_CDirect3DRMDevice = {0x4FA3568E, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMFace = {0x4FA35693, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMFrame = {0x4FA35690, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMFrameInterpolator = {0x0DE9EAA2, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID CLSID_CDirect3DRMLight = {0x4FA35694, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMLightInterpolator = {0x0DE9EAA6, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID CLSID_CDirect3DRMMaterial = {0x4FA35697, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMMaterialInterpolato = {0x0DE9EAA7, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID CLSID_CDirect3DRMMesh = {0x4FA35691, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMMeshBuilder = {0x4FA35692, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMMeshInterpolator = {0x0DE9EAA3, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID CLSID_CDirect3DRMProgressiveMesh = {0x4516EC40, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID CLSID_CDirect3DRMShadow = {0x4FA3569B, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMTexture = {0x4FA35695, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMTextureInterpolator = {0x0DE9EAA8, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID CLSID_CDirect3DRMUserVisual = {0x4FA3569A, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMViewport = {0x4FA3568F, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirect3DRMViewportInterpolato = {0x0DE9EAA1, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID CLSID_CDirect3DRMWrap = {0x4FA35696, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID CLSID_CDirectXFile = {0x4516EC43, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID CLSID_CDLAgent = {0x7D559C10, 0x9FE9, 0x11D0, [0x93, 0xF7, 0x00, 0xAA, 0x00, 0x59, 0xCE, 0x02]}; - const IID CLSID_CdlProtocol = {0x3DD53D40, 0x7B8B, 0x11D0, [0xB0, 0x13, 0x00, 0xAA, 0x00, 0x59, 0xCE, 0x02]}; - const IID CLSID_CDocBrowsePropertyPage = {0x3050F3B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CDownloadBehavior = {0x3050F5BE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CEnroll = {0x43F8F289, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; - const IID CLSID_CEventObj = {0x3050F48A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CFontPropPage = {0x0BE35200, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; - const IID CLSID_CFSIconOverlayManager = {0x63B51F81, 0xC868, 0x11D0, [0x99, 0x9C, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; - const IID CLSID_ChannelAgent = {0xE3A8BDE6, 0xABCE, 0x11D0, [0xBC, 0x4B, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; - const IID CLSID_ChannelMgr = {0xB3CDAE90, 0xD170, 0x11D0, [0x80, 0x2B, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; - const IID CLSID_CHeaderFooter = {0x3050F6CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CHtmlArea = {0x3050F64F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CIEOptionElement = {0x3050F698, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CIESelectElement = {0x3050F688, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CImageBrowsePropertyPage = {0x3050F3B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_ClassInstallFilter = {0x32B533BB, 0xEDAE, 0x11D0, [0xBD, 0x5A, 0x00, 0xAA, 0x00, 0xB9, 0x2A, 0xF1]}; - const IID CLSID_CLayoutRect = {0x3050F664, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_ClientCaps = {0x7E8BC44E, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; - const IID CLSID_ClusAppWiz = {0x24F97150, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; - const IID CLSID_ClusCfgAsyncEvictCleanup = {0x08F35A72, 0xD7C4, 0x42F4, [0xBC, 0x81, 0x51, 0x88, 0xE1, 0x9D, 0xFA, 0x39]}; - const IID CLSID_ClusCfgEvictCleanup = {0x32152BE9, 0xDE8C, 0x4D0F, [0x81, 0xB0, 0xBC, 0xE5, 0xD1, 0x1E, 0xCB, 0x00]}; - const IID CLSID_ClusCfgResTypeGenScript = {0xD513C4F4, 0x1D34, 0x44A3, [0x83, 0xD4, 0x81, 0x26, 0x51, 0xDB, 0x89, 0x18]}; - const IID CLSID_ClusCfgResTypeMajorityNodeSet = {0xB6870B44, 0x0BDF, 0x4B46, [0xAC, 0x1F, 0x6C, 0x69, 0x1B, 0x62, 0x2E, 0xDF]}; - const IID CLSID_ClusCfgResTypeServices = {0x6A370489, 0xBB52, 0x4727, [0xB7, 0x40, 0x08, 0xF4, 0x94, 0x16, 0x34, 0x78]}; - const IID CLSID_ClusCfgStartupNotify = {0x105EEEB6, 0x32FD, 0x4EA9, [0x89, 0x12, 0x84, 0x3A, 0x7F, 0xF3, 0xCA, 0x2D]}; - const IID CLSID_ClusCfgWizard = {0x1919C4FE, 0x6F46, 0x4027, [0x97, 0x7D, 0x0E, 0xF1, 0xC8, 0xF2, 0x63, 0x72]}; - const IID CLSID_ClusterConfigurationType = {0xBF3768C2, 0xE0E5, 0x448F, [0x95, 0x2B, 0x25, 0xD4, 0x33, 0x2D, 0xEF, 0xA3]}; - const IID CLSID_CMimeTypes = {0x3050F3FE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CMLangConvertCharset = {0xD66D6F99, 0xCDAA, 0x11D0, [0xB8, 0x22, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; - const IID CLSID_CMLangString = {0xC04D65CF, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; - const IID CLSID_CMultiLanguage = {0x275C23E2, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; - const IID CLSID_CNetCfg = {0x5B035261, 0x40F9, 0x11D1, [0xAA, 0xEC, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID CLSID_CoDitherToRGB8 = {0xA860CE50, 0x3910, 0x11D0, [0x86, 0xFC, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; - const IID CLSID_CoMapMIMEToCLSID = {0x30C3B080, 0x30FB, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; - const IID CLSID_ComBinding = {0x00000328, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_CommonQuery = {0x83BC5EC0, 0x6F2A, 0x11D0, [0xA1, 0xC4, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; - const IID CLSID_CompositePP = {0x25B33660, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; - const IID CLSID_ConnectionCommonUi = {0x7007ACD1, 0x3202, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID CLSID_ConnectionManager = {0xBA126AD1, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID CLSID_ConnectionManager2 = {0xBA126AE5, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID CLSID_ControlPanel = {0x21EC2020, 0x3AEA, 0x1069, [0xA2, 0xDD, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; - const IID CLSID_ConvertVBX = {0xFB8F0822, 0x0164, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; - const IID CLSID_ConvolvePP = {0x25B33661, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; - const IID CLSID_COpsProfile = {0x3050F402, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CoSniffStream = {0x6A01FDA0, 0x30DF, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; - const IID CLSID_CPersistDataPeer = {0x3050F487, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CPersistHistory = {0x3050F4C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CPersistShortcut = {0x3050F4C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CPersistSnapshot = {0x3050F4C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CPersistUserData = {0x3050F48E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CPicturePropPage = {0x0BE35202, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; - const IID CLSID_CPlugins = {0x3050F3FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CRadioButton = {0x3050F69C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CrBarn = {0xC3BDF740, 0x0B58, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrBarnPP = {0xFCAD7436, 0xF151, 0x4110, [0xB9, 0x7E, 0x32, 0xBD, 0x60, 0x7F, 0xBD, 0xB8]}; - const IID CLSID_CrBlindPP = {0x213052C1, 0x100D, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; - const IID CLSID_CrBlinds = {0x00C429C0, 0x0BA9, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrBlur = {0x7312498D, 0xE87A, 0x11D1, [0x81, 0xE0, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID CLSID_CrBlurPP = {0x623E287E, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; - const IID CLSID_CrEmboss = {0xF515306D, 0x0156, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID CLSID_CrEngrave = {0xF515306E, 0x0156, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID CLSID_CrInset = {0x93073C40, 0x0BA5, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrIris = {0x3F69F351, 0x0379, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrIrisPP = {0x80DE22C4, 0x0F44, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; - const IID CLSID_CrRadialWipe = {0x424B71AF, 0x0695, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrRadialWipePP = {0x33D932E0, 0x0F48, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; - const IID CLSID_CrSlide = {0x810E402F, 0x056B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrSlidePP = {0xCC8CEDE1, 0x1003, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; - const IID CLSID_CrSpiral = {0xACA97E00, 0x0C7D, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrSpiralPP = {0xC6A4FE81, 0x1022, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; - const IID CLSID_CrStretch = {0x7658F2A2, 0x0A83, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrStretchPP = {0x15FB95E0, 0x0F77, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; - const IID CLSID_CrWheel = {0x5AE1DAE0, 0x1461, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrWheelPP = {0xFA9F6180, 0x1464, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrZigzag = {0xE6E73D20, 0x0C8A, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_CrZigzagPP = {0x1559A3C1, 0x102B, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; - const IID CLSID_CScriptErrorList = {0xEFD01300, 0x160F, 0x11D2, [0xBB, 0x2E, 0x00, 0x80, 0x5F, 0xF7, 0xEF, 0xCA]}; - const IID CLSID_CScrollBar = {0x3050F68A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CSliderBar = {0x3050F68E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CSpinButton = {0x3050F68C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CTemplatePrinter = {0x3050F6B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_CUrlHistory = {0x3C374A40, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; - const IID CLSID_CURLSearchHook = {0xCFBFAE00, 0x17A6, 0x11D0, [0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97]}; - const IID CLSID_CurrentUserClasses = {0x00000332, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_CUtilityButton = {0x3050F6B0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_d = {0xD34F181F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_DAArray = {0x9CDE7340, 0x3C20, 0x11D0, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; - const IID CLSID_DABbox2 = {0x50B4791E, 0x4731, 0x11D0, [0x89, 0x12, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; - const IID CLSID_DABbox3 = {0x4A933703, 0xE36F, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID CLSID_DABehavior = {0xC46C1BF2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DABoolean = {0x25B0F91D, 0xD23D, 0x11D0, [0x9B, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID CLSID_DACamera = {0xC46C1BD9, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAColor = {0xC46C1BC9, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DADashStyle = {0x9CADDC0C, 0xAD56, 0x11D1, [0x9F, 0xF8, 0x00, 0xC0, 0x4F, 0xA3, 0x21, 0x95]}; - const IID CLSID_DAEndStyle = {0xFC54BEAB, 0x5B12, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; - const IID CLSID_DAEvent = {0x3E2487C4, 0x8709, 0x11D0, [0xB1, 0x77, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; - const IID CLSID_DAFontStyle = {0x3F3DA01A, 0x4705, 0x11D0, [0x87, 0x10, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; - const IID CLSID_DAGeometry = {0xC46C1BDB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAImage = {0xC46C1BCB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAImportationResult = {0x283807B3, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; - const IID CLSID_DAJoinStyle = {0xFC54BEAA, 0x5B12, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; - const IID CLSID_DALineStyle = {0x283807B8, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; - const IID CLSID_DAMatte = {0xC46C1BC3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAMicrophone = {0xC46C1BE3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAMontage = {0xC46C1BD7, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DANumber = {0xC46C1BC7, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAPair = {0xBC0BFD34, 0xD21D, 0x11D0, [0x93, 0x85, 0x00, 0xC0, 0x4F, 0xB6, 0xBD, 0x36]}; - const IID CLSID_DAPath2 = {0xC46C1BCF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAPickableResult = {0x34F681D0, 0x3640, 0x11CF, [0x92, 0x94, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; - const IID CLSID_DAPoint2 = {0xC46C1BD5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAPoint3 = {0xC46C1BE5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DarwinAppPublisher = {0xCFCCC7A0, 0xA282, 0x11D1, [0x90, 0x82, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; - const IID CLSID_DASound = {0xC46C1BD1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAStatics = {0xC46C1BF3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAString = {0xC46C1BD3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DataChannel = {0xBBB36F15, 0x408D, 0x4056, [0x8C, 0x27, 0x92, 0x08, 0x43, 0xD4, 0x0B, 0xE5]}; - const IID CLSID_DATransform2 = {0xC46C1BDF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DATransform3 = {0xC46C1BC5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DATuple = {0x283807B7, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; - const IID CLSID_DAUserData = {0x283807B4, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; - const IID CLSID_DAVector2 = {0xC46C1BE1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAVector3 = {0xC46C1BC0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAView = {0x960D8EFF, 0xE494, 0x11D1, [0xAB, 0x75, 0x00, 0xC0, 0x4F, 0xD9, 0x2B, 0x6B]}; - const IID CLSID_DAViewerControl = {0xC46C1BEB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DAViewerControlWindowed = {0xC46C1BF1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID CLSID_DCOMAccessControl = {0x0000031D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_DebugHelper = {0x0BFCC060, 0x8C1D, 0x11D0, [0xAC, 0xCD, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; - const IID CLSID_DeCompMimeFilter = {0x8F6B0360, 0xB80D, 0x11D0, [0xA9, 0xB3, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; - const IID CLSID_DefaultDebugSessionProvider = {0x834128A2, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID CLSID_DirectDraw = {0xD7B70EE0, 0x4340, 0x11CF, [0xB0, 0x63, 0x00, 0x20, 0xAF, 0xC2, 0xCD, 0x35]}; - const IID CLSID_DirectDrawClipper = {0x593817A0, 0x7DB3, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; - const IID CLSID_DirectDrawFactory2 = {0xB9DC4790, 0x4AF1, 0x11D1, [0x8C, 0x4C, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; - const IID CLSID_DirectInput = {0x25E609E0, 0xB259, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID CLSID_DirectInputDevice = {0x25E609E1, 0xB259, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID CLSID_DirectMusic = {0x636B9F10, 0x0C7D, 0x11D1, [0x95, 0xB2, 0x00, 0x20, 0xAF, 0xDC, 0x74, 0x21]}; - const IID CLSID_DirectMusicBand = {0x79BA9E00, 0xB6EE, 0x11D1, [0x86, 0xBE, 0x00, 0xC0, 0x4F, 0xBF, 0x8F, 0xEF]}; - const IID CLSID_DirectMusicBandTrack = {0xD2AC2894, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicChordMap = {0xD2AC288F, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicChordMapTrack = {0xD2AC2896, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicChordTrack = {0xD2AC288B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicCollection = {0x480FF4B0, 0x28B2, 0x11D1, [0xBE, 0xF7, 0x00, 0xC0, 0x4F, 0xBF, 0x8F, 0xEF]}; - const IID CLSID_DirectMusicCommandTrack = {0xD2AC288C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicComposer = {0xD2AC2890, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicGraph = {0xD2AC2884, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicLoader = {0xD2AC2892, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicMotifTrack = {0xD2AC288E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicMuteTrack = {0xD2AC2898, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicPerformance = {0xD2AC2881, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicSegment = {0xD2AC2882, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicSegmentState = {0xD2AC2883, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicSeqTrack = {0xD2AC2886, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicSignPostTrack = {0xF17E8672, 0xC3B4, 0x11D1, [0x87, 0x0B, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicStyle = {0xD2AC288A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicStyleTrack = {0xD2AC288D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicSynth = {0x58C2B4D0, 0x46E7, 0x11D1, [0x89, 0xAC, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; - const IID CLSID_DirectMusicSysExTrack = {0xD2AC2887, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicTempoTrack = {0xD2AC2885, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectMusicTimeSigTrack = {0xD2AC2888, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID CLSID_DirectPlay = {0xD1EB6D20, 0x8923, 0x11D0, [0x9D, 0x97, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; - const IID CLSID_DirectPlayLobby = {0x2FE8F810, 0xB2A5, 0x11D0, [0xA7, 0x87, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; - const IID CLSID_DirectSound = {0x47D4D946, 0x62E8, 0x11CF, [0x93, 0xBC, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID CLSID_DirectSoundCapture = {0xB0210780, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; - const IID CLSID_DispatchMapper = {0xE9225296, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID CLSID_DNWithBinary = {0x7E99C0A3, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; - const IID CLSID_DNWithString = {0x334857CC, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; - const IID CLSID_DocFileColumnProvider = {0x24F14F01, 0x7B1C, 0x11D1, [0x83, 0x8F, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; - const IID CLSID_DocHostUIHandler = {0x7057E952, 0xBD1B, 0x11D1, [0x89, 0x19, 0x00, 0xC0, 0x4F, 0xC2, 0xC8, 0x36]}; - const IID CLSID_DOMChildrenCollection = {0x3050F5AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_DOMDocument = {0x2933BF90, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID CLSID_DOMFreeThreadedDocument = {0x2933BF91, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID CLSID_DragDropHelper = {0x4657278A, 0x411B, 0x11D2, [0x83, 0x9A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; - const IID CLSID_DriveSizeCategorizer = {0x94357B53, 0xCA29, 0x4B78, [0x83, 0xAE, 0xE8, 0xFE, 0x74, 0x09, 0x13, 0x4F]}; - const IID CLSID_DriveTypeCategorizer = {0xB0A8F3CF, 0x4333, 0x4BAB, [0x88, 0x73, 0x1C, 0xCB, 0x1C, 0xAD, 0xA4, 0x8B]}; - const IID CLSID_DsDisplaySpecifier = {0x1AB4A8C0, 0x6A0B, 0x11D2, [0xAD, 0x49, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; - const IID CLSID_DsDomainTreeBrowser = {0x1698790A, 0xE2B4, 0x11D0, [0xB0, 0xB1, 0x00, 0xC0, 0x4F, 0xD8, 0xDC, 0xA6]}; - const IID CLSID_DsFindAdvanced = {0x83EE3FE3, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; - const IID CLSID_DsFindComputer = {0x16006700, 0x87AD, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; - const IID CLSID_DsFindContainer = {0xC1B3CBF2, 0x886A, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; - const IID CLSID_DsFindDomainController = {0x538C7B7E, 0xD25E, 0x11D0, [0x97, 0x42, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; - const IID CLSID_DsFindFrsMembers = {0x94CE4B18, 0xB3D3, 0x11D1, [0xB9, 0xB4, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xB0]}; - const IID CLSID_DsFindObjects = {0x83EE3FE1, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; - const IID CLSID_DsFindPeople = {0x83EE3FE2, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; - const IID CLSID_DsFindPrinter = {0xB577F070, 0x7EE2, 0x11D0, [0x91, 0x3F, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; - const IID CLSID_DsFindVolume = {0xC1B3CBF1, 0x886A, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; - const IID CLSID_DsFolderProperties = {0x9E51E0D0, 0x6E0F, 0x11D2, [0x96, 0x01, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; - const IID CLSID_DsPropertyPages = {0x0D45D530, 0x764B, 0x11D0, [0xA1, 0xCA, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; - const IID CLSID_DsQuery = {0x8A23E65E, 0x31C2, 0x11D0, [0x89, 0x1C, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; - const IID CLSID_DWbemClassObject = {0x64AB3751, 0x12BC, 0x11D1, [0x9E, 0x61, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID CLSID_DWbemContext = {0x752FF212, 0xF7B7, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID CLSID_DWbemLocator = {0xCB7CA032, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID CLSID_DX2D = {0x473AA80B, 0x4577, 0x11D1, [0x81, 0xA8, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID CLSID_DXFade = {0x16B280C5, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID CLSID_DXGradient = {0xC6365470, 0xF667, 0x11D1, [0x90, 0x67, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID CLSID_DXLUTBuilder = {0x1E54333B, 0x2A00, 0x11D1, [0x81, 0x98, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID CLSID_DXRasterizer = {0x8652CE55, 0x9E80, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID CLSID_DXSurface = {0x0E890F83, 0x5F79, 0x11D1, [0x90, 0x43, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID CLSID_DXSurfaceModifier = {0x3E669F1D, 0x9C23, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID CLSID_DXTAlpha = {0xADC6CB82, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID CLSID_DXTAlphaImageLoader = {0x0C7EFBDE, 0x0303, 0x4C6F, [0xA4, 0xF7, 0x31, 0xFA, 0x2B, 0xE5, 0xE3, 0x97]}; - const IID CLSID_DXTAlphaImageLoaderPP = {0x8C80CE2D, 0x850D, 0x47DA, [0x8E, 0xCD, 0x55, 0x02, 0x35, 0x62, 0xD1, 0x67]}; - const IID CLSID_DXTAlphaPP = {0xD687A7E0, 0x4BA4, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; - const IID CLSID_DXTaskManager = {0x4CB26C03, 0xFF93, 0x11D0, [0x81, 0x7E, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID CLSID_DXTBarn = {0xEC9BA17D, 0x60B5, 0x462B, [0xA6, 0xD8, 0x14, 0xB8, 0x90, 0x57, 0xE2, 0x2A]}; - const IID CLSID_DXTBlinds = {0x9A4A4A51, 0xFB3A, 0x4F4B, [0x9B, 0x57, 0xA2, 0x91, 0x2A, 0x28, 0x97, 0x69]}; - const IID CLSID_DXTCheckerBoard = {0xB3EE7802, 0x8224, 0x4787, [0xA1, 0xEA, 0xF0, 0xDE, 0x16, 0xDE, 0xAB, 0xD3]}; - const IID CLSID_DXTCheckerBoardPP = {0xCBF47525, 0x98D2, 0x45EA, [0xB8, 0x43, 0xFD, 0x21, 0x3D, 0x93, 0x2B, 0x10]}; - const IID CLSID_DXTChroma = {0x421516C1, 0x3CF8, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID CLSID_DXTChromaPP = {0xEC7E0760, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; - const IID CLSID_DXTComposite = {0x9A43A844, 0x0831, 0x11D1, [0x81, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID CLSID_DXTConvolution = {0x2BC0EF29, 0xE6BA, 0x11D1, [0x81, 0xDD, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID CLSID_DXTDropShadow = {0xADC6CB86, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID CLSID_DXTDropShadowPP = {0xEC7E0761, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; - const IID CLSID_DXTFilter = {0x385A91BC, 0x1E8A, 0x4E4A, [0xA7, 0xA6, 0xF4, 0xFC, 0x1E, 0x6C, 0xA1, 0xBD]}; - const IID CLSID_DXTFilterBehavior = {0x649EEC1E, 0xB579, 0x4E8C, [0xBB, 0x3B, 0x49, 0x97, 0xF8, 0x42, 0x65, 0x36]}; - const IID CLSID_DXTFilterCollection = {0xA7EE7F34, 0x3BD1, 0x427F, [0x92, 0x31, 0xF9, 0x41, 0xE9, 0xB7, 0xE1, 0xFE]}; - const IID CLSID_DXTFilterFactory = {0x81397204, 0xF51A, 0x4571, [0x8D, 0x7B, 0xDC, 0x03, 0x05, 0x21, 0xAA, 0xBD]}; - const IID CLSID_DXTGlow = {0x9F8E6421, 0x3D9B, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID CLSID_DXTGlowPP = {0xEC7E0764, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; - const IID CLSID_DXTGradientD = {0x623E2882, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; - const IID CLSID_DXTGradientWipe = {0xB96F67A2, 0x30C2, 0x47E8, [0xBD, 0x85, 0x70, 0xA2, 0xC9, 0x48, 0xB5, 0x0F]}; - const IID CLSID_DXTICMFilter = {0xA1BFB370, 0x5A9F, 0x4429, [0xBB, 0x72, 0xB1, 0x3E, 0x2F, 0xEA, 0xED, 0xEF]}; - const IID CLSID_DXTICMFilterPP = {0x1958FB12, 0x31E6, 0x47E5, [0xAA, 0x49, 0xB2, 0x3D, 0x12, 0xC8, 0x53, 0xE6]}; - const IID CLSID_DXTInset = {0x76F363F2, 0x7E9F, 0x4ED7, [0xA6, 0xA7, 0xEE, 0x30, 0x35, 0x1B, 0x66, 0x28]}; - const IID CLSID_DXTIris = {0x049F2CE6, 0xD996, 0x4721, [0x89, 0x7A, 0xDB, 0x15, 0xCE, 0x9E, 0xB7, 0x3D]}; - const IID CLSID_DXTLabel = {0x54702535, 0x2606, 0x11D1, [0x99, 0x9C, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; - const IID CLSID_DXTLight = {0xF9EFBEC2, 0x4302, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID CLSID_DXTLightPP = {0x694AF25F, 0x124D, 0x11D3, [0x91, 0xD5, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID CLSID_DXTMaskFilter = {0x3A04D93B, 0x1EDD, 0x4F3F, [0xA3, 0x75, 0xA0, 0x3E, 0xC1, 0x95, 0x72, 0xC4]}; - const IID CLSID_DXTMatrix = {0x4ABF5A06, 0x5568, 0x4834, [0xBE, 0xE3, 0x32, 0x7A, 0x6D, 0x95, 0xA6, 0x85]}; - const IID CLSID_DXTMatrixPP = {0xC591103A, 0xB3A8, 0x4D47, [0xA3, 0xF7, 0x2A, 0xEE, 0xE4, 0xB8, 0x01, 0x3F]}; - const IID CLSID_DXTMetaBurnFilm = {0x107045D1, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaCenterPeel = {0xAA0D4D0C, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID CLSID_DXTMetaColorFade = {0x2A54C908, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaFlowMotion = {0x2A54C90B, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaGriddler = {0x2A54C911, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaGriddler2 = {0x2A54C913, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaJaws = {0x2A54C904, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaLightWipe = {0x107045C8, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaLiquid = {0xAA0D4D0A, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID CLSID_DXTMetaPageTurn = {0xAA0D4D08, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID CLSID_DXTMetaPeelPiece = {0xAA0D4D10, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID CLSID_DXTMetaPeelSmall = {0xAA0D4D0E, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID CLSID_DXTMetaPeelSplit = {0xAA0D4D12, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID CLSID_DXTMetaRadialScaleWipe = {0x107045CA, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaRipple = {0xAA0D4D03, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID CLSID_DXTMetaRoll = {0x9C61F46E, 0x0530, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID CLSID_DXTMetaThreshold = {0x2A54C915, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaTwister = {0x107045CF, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaVacuum = {0x2A54C90D, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaWater = {0x107045C5, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaWhiteOut = {0x107045CC, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID CLSID_DXTMetaWormHole = {0x0E6AE022, 0x0C83, 0x11D2, [0x8C, 0xD4, 0x00, 0x10, 0x4B, 0xC7, 0x5D, 0x9A]}; - const IID CLSID_DXTMotionBlur = {0xDD13DE77, 0xD3BA, 0x42D4, [0xB5, 0xC6, 0x77, 0x45, 0xFA, 0x4E, 0x2D, 0x4B]}; - const IID CLSID_DXTMotionBlurPP = {0x926433E1, 0x7F8F, 0x4BC6, [0xBE, 0xC4, 0x8C, 0x12, 0x6C, 0x6B, 0x7D, 0xC4]}; - const IID CLSID_DXTRadialWipe = {0x164484A9, 0x35D9, 0x4FB7, [0x9F, 0xAB, 0x48, 0x27, 0x3B, 0x96, 0xAA, 0x1D]}; - const IID CLSID_DXTRandomBars = {0x2E7700B7, 0x27C4, 0x437F, [0x9F, 0xBF, 0x1E, 0x8B, 0xE2, 0x81, 0x75, 0x66]}; - const IID CLSID_DXTRandomBarsPP = {0xE3E6AE11, 0x7FDC, 0x40C4, [0xAF, 0xBF, 0x1D, 0xCE, 0xA8, 0x28, 0x62, 0xCC]}; - const IID CLSID_DXTRandomDissolve = {0xF7F4A1B6, 0x8E87, 0x452F, [0xA2, 0xD7, 0x30, 0x77, 0xF5, 0x08, 0xDB, 0xC0]}; - const IID CLSID_DXTransformFactory = {0xD1FE6762, 0xFC48, 0x11D0, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; - const IID CLSID_DXTRedirect = {0x42B07B28, 0x2280, 0x4937, [0xB0, 0x35, 0x02, 0x93, 0xFB, 0x81, 0x27, 0x81]}; - const IID CLSID_DXTRevealTrans = {0xE31E87C4, 0x86EA, 0x4940, [0x9B, 0x8A, 0x5B, 0xD5, 0xD1, 0x79, 0xA7, 0x37]}; - const IID CLSID_DXTScale = {0x555278E2, 0x05DB, 0x11D1, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; - const IID CLSID_DXTShadow = {0xE71B4063, 0x3E59, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID CLSID_DXTShadowPP = {0xEC7E0765, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; - const IID CLSID_DXTSlide = {0xD1C5A1E7, 0xCC47, 0x4E32, [0xBD, 0xD2, 0x4B, 0x3C, 0x5F, 0xC5, 0x0A, 0xF5]}; - const IID CLSID_DXTSpiral = {0x4A03DCB9, 0x6E17, 0x4A39, [0x88, 0x45, 0x4E, 0xE7, 0xDC, 0x53, 0x31, 0xA5]}; - const IID CLSID_DXTStretch = {0xF088DE73, 0xBDD0, 0x4E3C, [0x81, 0xF8, 0x6D, 0x32, 0xF4, 0xFE, 0x9D, 0x28]}; - const IID CLSID_DXTStrips = {0x63A4B1FC, 0x259A, 0x4A5B, [0x81, 0x29, 0xA8, 0x3B, 0x8C, 0x9E, 0x6F, 0x4F]}; - const IID CLSID_DXTStripsPP = {0xFEC0B7EE, 0x7AEC, 0x4067, [0x9E, 0xE1, 0xFA, 0xCF, 0xB7, 0xCE, 0x9A, 0xF9]}; - const IID CLSID_DXTWave = {0xADC6CB88, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID CLSID_DXTWavePP = {0xF12456C0, 0x4C9E, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; - const IID CLSID_DXTWipe = {0xAF279B30, 0x86EB, 0x11D1, [0x81, 0xBF, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID CLSID_DXTWipePP = {0x7FFE4D08, 0xFBFD, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; - const IID CLSID_DXTZigzag = {0x23E26328, 0x3928, 0x40F2, [0x95, 0xE5, 0x93, 0xCA, 0xD6, 0x90, 0x16, 0xEB]}; - const IID CLSID_EAPOLManager = {0xBA126AE4, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID CLSID_Email = {0x8F92A857, 0x478E, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_EnumAdapterInfo = {0x6F9942CA, 0xC1B1, 0x4AB5, [0x93, 0xDA, 0x60, 0x58, 0x99, 0x1D, 0xC8, 0xF3]}; - const IID CLSID_EVENTQUEUE = {0x6E0FF466, 0x339E, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; - const IID CLSID_EXTENDEDERRORINFO = {0xC8B522CF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID CLSID_FadePP = {0x16B280C6, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID CLSID_FaxNumber = {0xA5062215, 0x4681, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_FilePlaybackTerminal = {0x0CB9914C, 0x79CD, 0x47DC, [0xAD, 0xB0, 0x32, 0x7F, 0x47, 0xCE, 0xFB, 0x20]}; - const IID CLSID_FileProtocol = {0x79EAC9E7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_FileRecordingTerminal = {0x521F3D06, 0xC3D0, 0x4511, [0x86, 0x17, 0x86, 0xB9, 0xA7, 0x83, 0xDA, 0x77]}; - const IID CLSID_FileRecordingTrack = {0xBF14A2E4, 0xE88B, 0x4EF5, [0x97, 0x40, 0x5A, 0xC5, 0xD0, 0x22, 0xF8, 0xC9]}; - const IID CLSID_FileSearchBand = {0xC4EE31F3, 0x4768, 0x11D2, [0xBE, 0x5C, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; - const IID CLSID_FileSysColumnProvider = {0x0D2E74C4, 0x3C34, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; - const IID CLSID_FileTerminal = {0xAAF578F1, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID CLSID_FolderShortcut = {0x0AFACED1, 0xE828, 0x11D1, [0x91, 0x87, 0xB5, 0x32, 0xF1, 0xE9, 0x57, 0x5D]}; - const IID CLSID_FolderViewHost = {0x20B1CB23, 0x6968, 0x4EB9, [0xB7, 0xD4, 0xA6, 0x6D, 0x00, 0xD0, 0x7C, 0xEE]}; - const IID CLSID_FontNames = {0x3050F83A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_FramesCollection = {0x3050F7F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_FreeSpaceCategorizer = {0xB5607793, 0x24AC, 0x44C7, [0x82, 0xE2, 0x83, 0x17, 0x26, 0xAA, 0x6C, 0xB7]}; - const IID CLSID_FtpProtocol = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_GblComponentCategoriesMgr = {0x0002E006, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_GLOBAL_BROADCAST = {0xD34F1810, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_GopherProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_GradientPP = {0x623E2880, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; - const IID CLSID_HandsetTerminal = {0xAAF578EB, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID CLSID_HeadsetTerminal = {0xAAF578ED, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID CLSID_HNetCfgMgr = {0x46C166AA, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID CLSID_Hold = {0xB3AD3E13, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_HomeNetAutoConfigService = {0x9A8EA3B5, 0x572E, 0x4CB3, [0x9E, 0xB9, 0xEC, 0x68, 0x9A, 0xC5, 0x75, 0xAE]}; - const IID CLSID_HomePage = {0x766BF2AE, 0xD650, 0x11D1, [0x98, 0x11, 0x00, 0xC0, 0x4F, 0xC3, 0x1D, 0x2E]}; - const IID CLSID_HostDialogHelper = {0x429AF92C, 0xA51F, 0x11D2, [0x86, 0x1E, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; - const IID CLSID_HTADocument = {0x3050F5C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTCAttachBehavior = {0x3050F5F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTCDefaultDispatch = {0x3050F4FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTCDescBehavior = {0x3050F5DD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTCEventBehavior = {0x3050F4FE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTCMethodBehavior = {0x3050F630, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTCPropertyBehavior = {0x3050F5DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLAnchorElement = {0x3050F248, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLAppBehavior = {0x3050F5CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLApplication = {0x3050F4D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLAreaElement = {0x3050F283, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLAreasCollection = {0x3050F4CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLAttributeCollection = {0x3050F4CC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLBaseElement = {0x3050F276, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLBaseFontElement = {0x3050F282, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLBGsound = {0x3050F370, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLBlockElement = {0x3050F281, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLBody = {0x3050F24A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLBRElement = {0x3050F280, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLButtonElement = {0x3050F2C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLCommentElement = {0x3050F317, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLCurrentStyle = {0x3050F3DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLDDElement = {0x3050F27F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLDefaults = {0x3050F6C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLDialog = {0x3050F28A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLDivElement = {0x3050F27E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLDivPosition = {0x3050F249, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HtmlDlgSafeHelper = {0x3050F819, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLDListElement = {0x3050F27D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLDocument = {0x25336920, 0x03F9, 0x11CF, [0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13]}; - const IID CLSID_HTMLDOMAttribute = {0x3050F4B2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLDOMImplementation = {0x3050F80E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLDOMTextNode = {0x3050F4BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLDTElement = {0x3050F27C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLElementCollection = {0x3050F4CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLEmbed = {0x3050F25D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLFieldSetElement = {0x3050F3E8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLFontElement = {0x3050F27B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLFormElement = {0x3050F251, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLFrameBase = {0x3050F312, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLFrameElement = {0x3050F314, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLFrameSetSite = {0x3050F31A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLGenericElement = {0x3050F4B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLHeadElement = {0x3050F493, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLHeaderElement = {0x3050F27A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLHistory = {0xFECEAAA3, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; - const IID CLSID_HTMLHRElement = {0x3050F252, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLHtmlElement = {0x3050F491, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLIFrame = {0x3050F316, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLImageElementFactory = {0x3050F38F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLImg = {0x3050F241, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLInputButtonElement = {0x3050F2B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLInputElement = {0x3050F5D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLInputFileElement = {0x3050F2AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLInputImage = {0x3050F2C4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLInputTextElement = {0x3050F2AB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLIsIndexElement = {0x3050F278, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLLabelElement = {0x3050F32B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLLegendElement = {0x3050F3E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLLIElement = {0x3050F273, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLLinkElement = {0x3050F277, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLListElement = {0x3050F272, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLLoadOptions = {0x18845040, 0x0FA5, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; - const IID CLSID_HTMLLocation = {0x163BB1E1, 0x6E00, 0x11CF, [0x83, 0x7A, 0x48, 0xDC, 0x04, 0xC1, 0x00, 0x00]}; - const IID CLSID_HTMLMapElement = {0x3050F271, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLMarqueeElement = {0x3050F2B9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLMetaElement = {0x3050F275, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLNamespace = {0x3050F6BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLNamespaceCollection = {0x3050F6B9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLNavigator = {0xFECEAAA6, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; - const IID CLSID_HTMLNextIdElement = {0x3050F279, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLNoShowElement = {0x3050F38B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLObjectElement = {0x3050F24E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLOListElement = {0x3050F270, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLOptionButtonElement = {0x3050F2BE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLOptionElement = {0x3050F24D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLOptionElementFactory = {0x3050F38D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLParaElement = {0x3050F26F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLParamElement = {0x3050F83E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLPhraseElement = {0x3050F26E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLPluginDocument = {0x25336921, 0x03F9, 0x11CF, [0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13]}; - const IID CLSID_HTMLPopup = {0x3050F667, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLRenderStyle = {0x3050F6AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLRichtextElement = {0x3050F2DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLRuleStyle = {0x3050F3D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLScreen = {0x3050F35D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLScriptElement = {0x3050F28C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLSelectElement = {0x3050F245, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLSpanElement = {0x3050F3F5, 0x98B4, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLSpanFlow = {0x3050F3E6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLStyle = {0x3050F285, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLStyleElement = {0x3050F37D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLStyleFontFace = {0x3050F3D4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLStyleSheet = {0x3050F2E4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLStyleSheetPage = {0x3050F7EF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLStyleSheetPagesCollection = {0x3050F7F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLStyleSheetRule = {0x3050F3CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLStyleSheetRulesCollection = {0x3050F3CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLStyleSheetsCollection = {0x3050F37F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLTable = {0x3050F26B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLTableCaption = {0x3050F2EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLTableCell = {0x3050F246, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLTableCol = {0x3050F26C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLTableRow = {0x3050F26D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLTableSection = {0x3050F2E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLTextAreaElement = {0x3050F2AC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLTextElement = {0x3050F26A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLTitleElement = {0x3050F284, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLUListElement = {0x3050F269, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLUnknownElement = {0x3050F268, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLUrnCollection = {0x3050F580, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HTMLWindow2 = {0xD48A6EC6, 0x6A4A, 0x11CF, [0x94, 0xA7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID CLSID_HTMLWindowProxy = {0x3050F391, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_HttpProtocol = {0x79EAC9E2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_HttpSProtocol = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_HWShellExecute = {0xFFB8655F, 0x81B9, 0x4FCE, [0xB8, 0x9C, 0x9A, 0x6B, 0xA7, 0x6D, 0x13, 0xE7]}; - const IID CLSID_IActiveXSafetyProvider = {0xAAF8C6CE, 0xF972, 0x11D0, [0x97, 0xEB, 0x00, 0xAA, 0x00, 0x61, 0x53, 0x33]}; - const IID CLSID_IImageDecodeFilter = {0x607FD4E8, 0x0A03, 0x11D1, [0xAB, 0x1D, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; - const IID CLSID_IImgCtx = {0x3050F3D6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_ImageList = {0x7C476BA2, 0x02B1, 0x48F4, [0x80, 0x48, 0xB2, 0x46, 0x19, 0xDD, 0xC0, 0x58]}; - const IID CLSID_ImageProperties = {0x7AB770C7, 0x0E23, 0x4D7A, [0x8A, 0xA2, 0x19, 0xBF, 0xAD, 0x47, 0x98, 0x29]}; - const IID CLSID_InProcFreeMarshaler = {0x0000033A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_IntDitherer = {0x05F6FE1A, 0xECEF, 0x11D0, [0xAA, 0xE7, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; - const IID CLSID_IntelliForms = {0x613AB92E, 0x16BF, 0x11D2, [0xBC, 0xA5, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; - const IID CLSID_Internet = {0x871C5380, 0x42A0, 0x1069, [0xA2, 0xEA, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; - const IID CLSID_InternetButtons = {0x1E796980, 0x9CC5, 0x11D1, [0xA8, 0x3F, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0x61]}; - const IID CLSID_InternetConnectionBeaconServic = {0x04DF613A, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; - const IID CLSID_InternetExplorer = {0x0002DF01, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_InternetPrintOrdering = {0xADD36AA8, 0x751A, 0x4579, [0xA2, 0x66, 0xD6, 0x6F, 0x52, 0x02, 0xCC, 0xBB]}; - const IID CLSID_InternetSecurityManager = {0x7B8A2D94, 0x0AC9, 0x11D1, [0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; - const IID CLSID_InternetShortcut = {0xFBF23B40, 0xE3F0, 0x101B, [0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8]}; - const IID CLSID_InternetZoneManager = {0x7B8A2D95, 0x0AC9, 0x11D1, [0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; - const IID CLSID_LanConnectionManager = {0xBA126AD3, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID CLSID_LargeInteger = {0x927971F5, 0x0939, 0x11D1, [0x8B, 0xE1, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID CLSID_LDAPConnectionObject = {0x7DA2A9C4, 0x0C46, 0x43BD, [0xB0, 0x4E, 0xD9, 0x2B, 0x1B, 0xE2, 0x7C, 0x45]}; - const IID CLSID_LDAPObject = {0x05709878, 0x5195, 0x466C, [0x9E, 0x64, 0x48, 0x7C, 0xE3, 0xCA, 0x20, 0xBF]}; - const IID CLSID_LinkColumnProvider = {0x24F14F02, 0x7B1C, 0x11D1, [0x83, 0x8F, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; - const IID CLSID_LocalMachineClasses = {0x00000331, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_LogManager = {0x8FDA8FA4, 0x8763, 0x479F, [0xB9, 0xB1, 0x22, 0x02, 0xB2, 0x80, 0xD2, 0x93]}; - const IID CLSID_LUTBuilderPP = {0x25B33662, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; - const IID CLSID_MachineDebugManager = {0x0C0A3666, 0x30C9, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID CLSID_MailAutoDiscovery = {0x008FD5DD, 0x6DBB, 0x48E3, [0x99, 0x1B, 0x2D, 0x3E, 0xD6, 0x58, 0x51, 0x6A]}; - const IID CLSID_MailProtocolADEntry = {0x61A5D6F3, 0xC131, 0x4C35, [0xBF, 0x40, 0x90, 0xA5, 0x0F, 0x21, 0x41, 0x22]}; - const IID CLSID_ManualResetEvent = {0x0000032C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_McastAddressAllocation = {0xDF0DAEF2, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; - const IID CLSID_MediaStreamTerminal = {0xE2F7AEF7, 0x4971, 0x11D1, [0xA6, 0x71, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xE8]}; - const IID CLSID_MergedCategorizer = {0x8E827C11, 0x33E7, 0x4BC1, [0xB2, 0x42, 0x8C, 0xD9, 0xA1, 0xC2, 0xB3, 0x04]}; - const IID CLSID_MHTMLDocument = {0x3050F3D9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_MicrophoneTerminal = {0xAAF578EF, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID CLSID_MicrosoftDS = {0xFE1290F0, 0xCFBD, 0x11CF, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; - const IID CLSID_MigrationWizardAuto = {0x67331D85, 0xBE17, 0x42F6, [0x8D, 0x3F, 0x47, 0xB8, 0xE8, 0xB2, 0x66, 0x37]}; - const IID CLSID_MkProtocol = {0x79EAC9E6, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_MofCompiler = {0x6DAF9757, 0x2E37, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID CLSID_MountedVolume = {0x12518493, 0x00B2, 0x11D2, [0x9F, 0xA5, 0x9E, 0x34, 0x20, 0x52, 0x41, 0x53]}; - const IID CLSID_MSBurnEngineObj = {0x520CCA67, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID CLSID_MSDATT = {0xC8B522CE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID CLSID_MSDAVTM = {0x0C733A8E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID CLSID_MSDiscMasterObj = {0x520CCA63, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID CLSID_MSDiscRecorderObj = {0x520CCA61, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID CLSID_MSDiscStashObj = {0x520CCA65, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID CLSID_MSEnumDiscRecordersObj = {0x8A03567A, 0x63CB, 0x4BA8, [0xBA, 0xF6, 0x52, 0x11, 0x98, 0x16, 0xD1, 0xEF]}; - const IID CLSID_MSOButtons = {0x178F34B8, 0xA282, 0x11D2, [0x86, 0xC5, 0x00, 0xC0, 0x4F, 0x8E, 0xEA, 0x99]}; - const IID CLSID_MyComputer = {0x20D04FE0, 0x3AEA, 0x1069, [0xA2, 0xD8, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; - const IID CLSID_MyDocuments = {0x450D8FBA, 0xAD25, 0x11D0, [0x98, 0xA8, 0x08, 0x00, 0x36, 0x1B, 0x11, 0x03]}; - const IID CLSID_NameTranslate = {0x274FAE1F, 0x3626, 0x11D1, [0xA3, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_NetAddress = {0xB0B71247, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_NetConnectionHNetUtil = {0xBA126AE3, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID CLSID_NetConnectionUiUtilities = {0x7007ACD3, 0x3202, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID CLSID_NetCrawler = {0x601AC3DC, 0x786A, 0x4EB0, [0xBF, 0x40, 0xEE, 0x35, 0x21, 0xE7, 0x0B, 0xFB]}; - const IID CLSID_NetSharingManager = {0x5C63C1AD, 0x3956, 0x4FF8, [0x84, 0x86, 0x40, 0x03, 0x47, 0x58, 0x31, 0x5B]}; - const IID CLSID_NetworkDomain = {0x46E06680, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; - const IID CLSID_NetworkPlaces = {0x208D2C60, 0x3AEA, 0x1069, [0xA2, 0xD7, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; - const IID CLSID_NetworkServer = {0xC0542A90, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; - const IID CLSID_NetworkShare = {0x54A754C0, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; - const IID CLSID_NetworkType = {0xD4F3D51B, 0x1755, 0x4953, [0x9C, 0x8B, 0x24, 0x95, 0xAB, 0xE5, 0xE0, 0x7E]}; - const IID CLSID_NodeType = {0x1AAA3D11, 0x4792, 0x44E4, [0x9D, 0x49, 0x78, 0xFE, 0xD3, 0x69, 0x1A, 0x14]}; - const IID CLSID_NotificaitonTest1 = {0xC733E501, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_NotificaitonTest2 = {0xC733E502, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_NotificaitonTest3 = {0xC733E503, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_NotificaitonTest4 = {0xC733E504, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_NotificationManager = {0xE1813DD0, 0xAADA, 0x4738, [0xB5, 0xFF, 0x96, 0xB4, 0x18, 0x9C, 0x50, 0x19]}; - const IID CLSID_ObjectManager = {0x955661BD, 0xCCA2, 0x4EAC, [0x91, 0xD0, 0xA0, 0x39, 0x6A, 0x28, 0xAE, 0xFD]}; - const IID CLSID_OctetList = {0x1241400F, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_OldHTMLDocument = {0xD48A6EC9, 0x6A4A, 0x11CF, [0x94, 0xA7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID CLSID_OldHTMLFormElement = {0x0D04D285, 0x6BEC, 0x11CF, [0x8B, 0x97, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; - const IID CLSID_OLEDB_CONVERSIONLIBRARY = {0xC8B522D1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID CLSID_OLEDB_ENUMERATOR = {0xC8B522D0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID CLSID_OLEDB_ROWPOSITIONLIBRARY = {0x2048EEE6, 0x7FA2, 0x11D0, [0x9E, 0x6A, 0x00, 0xA0, 0xC9, 0x13, 0x8C, 0x29]}; - const IID CLSID_PassportClientServices = {0x2D2307C8, 0x7DB4, 0x40D6, [0x91, 0x00, 0xD5, 0x2A, 0xF4, 0xF9, 0x7A, 0x5B]}; - const IID CLSID_Path = {0xB2538919, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_Pathname = {0x080D0D78, 0xF421, 0x11D0, [0xA3, 0x6E, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_PeerFactory = {0x3050F4CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_PendingProxyConnection = {0xD8A68E5E, 0x2B37, 0x426C, [0xA3, 0x29, 0xC1, 0x17, 0xC1, 0x4C, 0x42, 0x9E]}; - const IID CLSID_PersistentDataChannel = {0xBC9B54AB, 0x7883, 0x4C13, [0x90, 0x9F, 0x03, 0x3D, 0x03, 0x26, 0x79, 0x90]}; - const IID CLSID_PersistPropset = {0xFB8F0821, 0x0164, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; - const IID CLSID_Picture_Dib = {0x00000316, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_Picture_EnhMetafile = {0x00000319, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_Picture_Metafile = {0x00000315, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_Pixelate = {0x4CCEA634, 0xFBE0, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID CLSID_PixelatePP = {0x4CCEA635, 0xFBE0, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID CLSID_PluggableSuperclassRegistratio = {0xBB918E32, 0x2A5C, 0x4986, [0xAB, 0x40, 0x16, 0x86, 0xA0, 0x34, 0x39, 0x0A]}; - const IID CLSID_PluggableTerminalRegistration = {0x45234E3E, 0x61CC, 0x4311, [0xA3, 0xAB, 0x24, 0x80, 0x82, 0x55, 0x44, 0x82]}; - const IID CLSID_PostAgent = {0xD8BD2030, 0x6FC9, 0x11D0, [0x86, 0x4F, 0x00, 0xAA, 0x00, 0x68, 0x09, 0xD9]}; - const IID CLSID_PostalAddress = {0x0A75AFCD, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_PrimaryControlChannel = {0x3CEB5509, 0xC1CD, 0x432F, [0x9D, 0x8F, 0x65, 0xD1, 0xE2, 0x86, 0xAA, 0x80]}; - const IID CLSID_Printers = {0x2227A280, 0x3AEA, 0x1069, [0xA2, 0xDE, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; - const IID CLSID_PROCESS_BROADCAST = {0xD34F1811, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_ProcessDebugManager = {0x78A51822, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID CLSID_ProgressDialog = {0xF8383852, 0xFCD3, 0x11D1, [0xA6, 0xB9, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; - const IID CLSID_PropertiesUI = {0xD912F8CF, 0x0396, 0x4915, [0x88, 0x4E, 0xFB, 0x42, 0x5D, 0x32, 0x94, 0x3B]}; - const IID CLSID_PropertyEntry = {0x72D3EDC2, 0xA4C4, 0x11D0, [0x85, 0x33, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID CLSID_PropertyValue = {0x7B9E38B0, 0xA97C, 0x11D0, [0x85, 0x34, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID CLSID_PSBindCtx = {0x00000312, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_PSClassObject = {0x0000030E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_PSClientSite = {0x0000030D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_PSDragDrop = {0x00000311, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_PSEnumerators = {0x00000313, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_PseudoSink = {0xE002E4F0, 0xE6EA, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; - const IID CLSID_PSGenObject = {0x0000030C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_PSInPlaceActive = {0x0000030F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_PSInPlaceFrame = {0x00000310, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_PSUrlMonProxy = {0x79EAC9F1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_PublishDropTarget = {0xCC6EEFFB, 0x43F6, 0x46C5, [0x96, 0x19, 0x51, 0xD5, 0x71, 0x96, 0x7F, 0x7D]}; - const IID CLSID_PublishingWizard = {0x6B33163C, 0x76A5, 0x4B6C, [0xBF, 0x21, 0x45, 0xDE, 0x9C, 0xD5, 0x03, 0xA1]}; - const IID CLSID_QueryAssociations = {0xA07034FD, 0x6CAA, 0x4954, [0xAC, 0x3F, 0x97, 0xA2, 0x72, 0x16, 0xF9, 0x8A]}; - const IID CLSID_QueryCancelAutoPlay = {0x331F1768, 0x05A9, 0x4DDD, [0xB8, 0x6E, 0xDA, 0xE3, 0x4D, 0xDC, 0x99, 0x8A]}; - const IID CLSID_RecycleBin = {0x645FF040, 0x5081, 0x101B, [0x9F, 0x08, 0x00, 0xAA, 0x00, 0x2F, 0x95, 0x4E]}; - const IID CLSID_RemoteUnknownPSFactory = {0x00000340, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_Rendezvous = {0xF1029E5B, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID CLSID_ReplicaPointer = {0xF5D1BADF, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_Request = {0x6BC096B1, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; - const IID CLSID_RequestMakeCall = {0xAC48FFE0, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID CLSID_ResProtocol = {0x3050F3BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_RTCClient = {0x7A42EA29, 0xA2B7, 0x40C4, [0xB0, 0x91, 0xF6, 0xF0, 0x24, 0xAA, 0x89, 0xBE]}; - const IID CLSID_Scriptlet = {0xAE24FDAE, 0x03C6, 0x11D1, [0x8B, 0x76, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; - const IID CLSID_SdoMachine = {0xE9218AE7, 0x9E91, 0x11D1, [0xBF, 0x60, 0x00, 0x80, 0xC7, 0x84, 0x6B, 0xC0]}; - const IID CLSID_SdpConferenceBlob = {0x9B2719DD, 0xB696, 0x11D0, [0xA4, 0x89, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID CLSID_SearchAssistantOC = {0xB45FF030, 0x4447, 0x11D2, [0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; - const IID CLSID_SearchCommand = {0xB005E690, 0x678D, 0x11D1, [0xB7, 0x58, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; - const IID CLSID_SecondaryControlChannel = {0x7B3181A0, 0xC92F, 0x4567, [0xB0, 0xFA, 0xCD, 0x9A, 0x10, 0xEC, 0xD7, 0xD1]}; - const IID CLSID_SecurityDescriptor = {0xB958F73C, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID CLSID_SENS = {0xD597CAFE, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; - const IID CLSID_ServiceManager = {0xABD0388A, 0xDEC1, 0x44F3, [0x98, 0xE1, 0x8D, 0x5C, 0xC8, 0x0B, 0x97, 0xEB]}; - const IID CLSID_SharingApplicationDefinition = {0x46C166B0, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID CLSID_SharingConfiguration = {0x46C166B1, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID CLSID_SharingManagerEnumApplicationDe = {0x46C166AE, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID CLSID_SharingManagerEnumPortMapping = {0x46C166AF, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID CLSID_SharingManagerEnumPrivateConnec = {0x46C166AD, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID CLSID_SharingManagerEnumPublicConnect = {0x46C166AC, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID CLSID_Shell = {0x13709620, 0xC279, 0x11CE, [0xA4, 0x9E, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID CLSID_ShellBrowserWindow = {0xC08AFD90, 0xF2A1, 0x11D1, [0x84, 0x55, 0x00, 0xA0, 0xC9, 0x1F, 0x38, 0x80]}; - const IID CLSID_ShellDesktop = {0x00021400, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_ShellDispatchInproc = {0x0A89A860, 0xD7B1, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID CLSID_ShellFolderItem = {0x2FE352EA, 0xFD1F, 0x11D2, [0xB1, 0xF4, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; - const IID CLSID_ShellFolderView = {0x62112AA1, 0xEBE4, 0x11CF, [0xA5, 0xFB, 0x00, 0x20, 0xAF, 0xE7, 0x29, 0x2D]}; - const IID CLSID_ShellFolderViewOC = {0x9BA05971, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; - const IID CLSID_ShellFSFolder = {0xF3364BA0, 0x65B9, 0x11CE, [0xA9, 0xBA, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37]}; - const IID CLSID_ShellImageDataFactory = {0x66E4E4FB, 0xF385, 0x4DD0, [0x8D, 0x74, 0xA2, 0xEF, 0xD1, 0xBC, 0x61, 0x78]}; - const IID CLSID_ShellLink = {0x00021401, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_ShellLinkObject = {0x11219420, 0x1768, 0x11D1, [0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; - const IID CLSID_ShellLocalMachine = {0x60664CAF, 0xAF0D, 0x0005, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; - const IID CLSID_ShellLogonEnumUsers = {0x60664CAF, 0xAF0D, 0x0004, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; - const IID CLSID_ShellLogonStatusHost = {0x60664CAF, 0xAF0D, 0x0007, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; - const IID CLSID_ShellLogonUser = {0x60664CAF, 0xAF0D, 0x0003, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; - const IID CLSID_ShellNameSpace = {0x55136805, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; - const IID CLSID_ShellUIHelper = {0x64AB4BB7, 0x111E, 0x11D1, [0x8F, 0x79, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; - const IID CLSID_ShellWindows = {0x9BA05972, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; - const IID CLSID_SizeCategorizer = {0x55D7B852, 0xF6D1, 0x42F2, [0xAA, 0x75, 0x87, 0x28, 0xA1, 0xB2, 0xD2, 0x64]}; - const IID CLSID_SoftDistExt = {0xB15B8DC0, 0xC7E1, 0x11D0, [0x86, 0x80, 0x00, 0xAA, 0x00, 0xBD, 0xCB, 0x71]}; - const IID CLSID_SpeakerphoneTerminal = {0xAAF578EE, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID CLSID_SpeakersTerminal = {0xAAF578F0, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID CLSID_SpeechUIServer = {0x1443904B, 0x34E4, 0x40F6, [0xB3, 0x0F, 0x6B, 0xEB, 0x81, 0x26, 0x7B, 0x80]}; - const IID CLSID_StaticDib = {0x00000316, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_StaticMetafile = {0x00000315, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_StdAsyncActManager = {0x00000329, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_StdComponentCategoriesMgr = {0x0002E005, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_StdEncodingFilterFac = {0x54C37CD0, 0xD944, 0x11D0, [0xA9, 0xF4, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; - const IID CLSID_StdEvent = {0x0000032B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_StdFont = {0x0BE35203, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; - const IID CLSID_StdGlobalInterfaceTable = {0x00000323, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_StdHlink = {0x79EAC9D0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_StdHlinkBrowseContext = {0x79EAC9D1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_StdMarshal = {0x00000017, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_StdNotificationMgr = {0xC733E4AF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_StdPicture = {0x0BE35204, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; - const IID CLSID_StdURLMoniker = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_StdURLProtocol = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_StgFolder = {0xE773F1AF, 0x3A65, 0x4866, [0x85, 0x7D, 0x84, 0x6F, 0xC9, 0xC4, 0x59, 0x8A]}; - const IID CLSID_StockColorPage = {0x7EBDAAE1, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; - const IID CLSID_StockFontPage = {0x7EBDAAE0, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; - const IID CLSID_StockPicturePage = {0x7EBDAAE2, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; - const IID CLSID_SubscriptionMgr = {0xABBE31D0, 0x6DAE, 0x11D0, [0xBE, 0xCA, 0x00, 0xC0, 0x4F, 0xD9, 0x40, 0xBE]}; - const IID CLSID_SubscriptionThrottler = {0x1E9B00E5, 0x9846, 0x11D1, [0xA1, 0xEE, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; - const IID CLSID_SWbemDateTime = {0x47DFBE54, 0xCF76, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; - const IID CLSID_SWbemEventSource = {0x04B83D58, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemLastError = {0xC2FEEEAC, 0xCFCD, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemLocator = {0x76A64158, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemMethod = {0x04B83D5B, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemMethodSet = {0x04B83D5A, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemNamedValue = {0x04B83D60, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemNamedValueSet = {0x9AED384E, 0xCE8B, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemObject = {0x04B83D62, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemObjectEx = {0xD6BDAFB2, 0x9435, 0x491F, [0xBB, 0x87, 0x6A, 0xA0, 0xF0, 0xBC, 0x31, 0xA2]}; - const IID CLSID_SWbemObjectPath = {0x5791BC26, 0xCE9C, 0x11D1, [0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C]}; - const IID CLSID_SWbemObjectSet = {0x04B83D61, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemPrivilege = {0x26EE67BC, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemPrivilegeSet = {0x26EE67BE, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemProperty = {0x04B83D5D, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemPropertySet = {0x04B83D5C, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemQualifier = {0x04B83D5F, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemQualifierSet = {0x04B83D5E, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemRefreshableItem = {0x8C6854BC, 0xDE4B, 0x11D3, [0xB3, 0x90, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; - const IID CLSID_SWbemRefresher = {0xD269BF5C, 0xD9C1, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; - const IID CLSID_SWbemSecurity = {0xB54D66E9, 0x2287, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemServices = {0x04B83D63, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID CLSID_SWbemServicesEx = {0x62E522DC, 0x8CF3, 0x40A8, [0x8B, 0x2E, 0x37, 0xD5, 0x95, 0x65, 0x1E, 0x40]}; - const IID CLSID_SWbemSink = {0x75718C9A, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; - const IID CLSID_SynchronizeContainer = {0x0000032D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID CLSID_SyncMgr = {0x6295DF27, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; - const IID CLSID_TAPI = {0x21D6D48E, 0xA88B, 0x11D0, [0x83, 0xDD, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID CLSID_TaskbarList = {0x56FDF344, 0xFD6D, 0x11D0, [0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90]}; - const IID CLSID_TaskManager = {0xC0F615A7, 0xF874, 0x4521, [0x87, 0x91, 0xED, 0x3B, 0x84, 0x01, 0x7E, 0xF7]}; - const IID CLSID_TerminalManager = {0x7170F2E0, 0x9BE3, 0x11D0, [0xA0, 0x09, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; - const IID CLSID_THREAD_BROADCAST = {0xD34F1812, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_ThreadDialogProcParam = {0x3050F5EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID CLSID_ThumbnailFCNHandler = {0xCEFC65D8, 0x66D8, 0x11D1, [0x8D, 0x8C, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; - const IID CLSID_ThumbnailUpdater = {0xA3C63918, 0x889D, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; - const IID CLSID_TIME = {0xE32EF57B, 0x7FDE, 0x4765, [0x9B, 0xC5, 0xA1, 0xBA, 0x97, 0x05, 0xC4, 0x4E]}; - const IID CLSID_TIMEAnimation = {0xF99D135A, 0xC07C, 0x449E, [0x96, 0x5C, 0x7D, 0xBB, 0x7C, 0x55, 0x4A, 0x51]}; - const IID CLSID_TimeCategorizer = {0x3BB4118F, 0xDDFD, 0x4D30, [0xA3, 0x48, 0x9F, 0xB5, 0xD6, 0xBF, 0x1A, 0xFE]}; - const IID CLSID_TIMEColorAnimation = {0x62F75052, 0xF3EC, 0x4A64, [0x84, 0xFB, 0xAB, 0x18, 0xE0, 0x74, 0x6E, 0xD8]}; - const IID CLSID_TIMEFactory = {0x17237A20, 0x3ADB, 0x48EC, [0xB1, 0x82, 0x35, 0x29, 0x1F, 0x11, 0x57, 0x90]}; - const IID CLSID_TIMEFilterAnimation = {0xC54515D0, 0xF2E5, 0x4BDD, [0xAA, 0x86, 0x1E, 0x4F, 0x23, 0xE4, 0x80, 0xE7]}; - const IID CLSID_TIMEMotionAnimation = {0x0019A09D, 0x1A81, 0x41C5, [0x89, 0xEC, 0xD9, 0xE7, 0x37, 0x81, 0x13, 0x03]}; - const IID CLSID_TIMESetAnimation = {0xBA91CE53, 0xBAEB, 0x4F05, [0x86, 0x1C, 0x0A, 0x2A, 0x09, 0x34, 0xF8, 0x2E]}; - const IID CLSID_Timestamp = {0xB2BED2EB, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_ToolbarExtButtons = {0x2CE4B5D8, 0xA28F, 0x11D2, [0x86, 0xC5, 0x00, 0xC0, 0x4F, 0x8E, 0xEA, 0x99]}; - const IID CLSID_TrackFile = {0x8790C947, 0xA30B, 0x11D0, [0x8C, 0xAB, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; - const IID CLSID_TrkForceOwnership = {0xA2531F45, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; - const IID CLSID_TrkRestoreNotify = {0xD0056F6C, 0xE2A0, 0x11D0, [0xB1, 0xC2, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; - const IID CLSID_TrkRestoreParser = {0x755939E4, 0xE381, 0x11D0, [0xB1, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; - const IID CLSID_TypedName = {0xB33143CB, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID CLSID_UmiLDAPQueryObject = {0xCD5D4D76, 0xA818, 0x4F95, [0xB9, 0x58, 0x79, 0x70, 0xFD, 0x94, 0x12, 0xCA]}; - const IID CLSID_UnsecuredApartment = {0x49BD2028, 0x1523, 0x11D1, [0xAD, 0x79, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID CLSID_UPnPDescriptionDocument = {0x1D8A9B47, 0x3A28, 0x4CE2, [0x8A, 0x4B, 0xBD, 0x34, 0xE4, 0x5B, 0xCE, 0xEB]}; - const IID CLSID_UPnPDevice = {0xA32552C5, 0xBA61, 0x457A, [0xB5, 0x9A, 0xA2, 0x56, 0x1E, 0x12, 0x5E, 0x33]}; - const IID CLSID_UPnPDeviceFinder = {0xE2085F28, 0xFEB7, 0x404A, [0xB8, 0xE7, 0xE6, 0x59, 0xBD, 0xEA, 0xAA, 0x02]}; - const IID CLSID_UPnPDeviceHostICSSupport = {0x797A9BB1, 0x9E49, 0x4E63, [0xAF, 0xE1, 0x1B, 0x45, 0xB9, 0xDC, 0x81, 0x62]}; - const IID CLSID_UPnPDeviceHostSetup = {0xB4609411, 0xC81C, 0x4CCE, [0x8C, 0x76, 0xC6, 0xB5, 0x0C, 0x94, 0x02, 0xC6]}; - const IID CLSID_UPnPDevices = {0xB9E84FFD, 0xAD3C, 0x40A4, [0xB8, 0x35, 0x08, 0x82, 0xEB, 0xCB, 0xAA, 0xA8]}; - const IID CLSID_UPnPNAT = {0xAE1E00AA, 0x3FD5, 0x403C, [0x8A, 0x27, 0x2B, 0xBD, 0xC3, 0x0C, 0xD0, 0xE1]}; - const IID CLSID_UPnPRegistrar = {0x204810B9, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; - const IID CLSID_UPnPService = {0xC624BA95, 0xFBCB, 0x4409, [0x8C, 0x03, 0x8C, 0xCE, 0xEC, 0x53, 0x3E, 0xF1]}; - const IID CLSID_UPnPServices = {0xC0BC4B4A, 0xA406, 0x4EFC, [0x93, 0x2F, 0xB8, 0x54, 0x6B, 0x81, 0x00, 0xCC]}; - const IID CLSID_UrlMkBindCtx = {0x79EAC9F2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID CLSID_UserEventTimer = {0x864A1288, 0x354C, 0x4D19, [0x9D, 0x68, 0xC2, 0x74, 0x2B, 0xB1, 0x49, 0x97]}; - const IID CLSID_UserEventTimerCallback = {0x15FFFD13, 0x5140, 0x41B8, [0xB8, 0x9A, 0xC8, 0xD5, 0x75, 0x9C, 0xD2, 0xB2]}; - const IID CLSID_UserNotification = {0x0010890E, 0x8789, 0x413C, [0xAD, 0xBC, 0x48, 0xF5, 0xB5, 0x11, 0xB3, 0xAF]}; - const IID CLSID_VideoInputTerminal = {0xAAF578EC, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID CLSID_VideoWindowTerm = {0xF7438990, 0xD6EB, 0x11D0, [0x82, 0xA6, 0x00, 0xAA, 0x00, 0xB5, 0xCA, 0x1B]}; - const IID CLSID_VirusScan = {0xE88E5DE0, 0xBD3E, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; - const IID CLSID_WbemAdministrativeLocator = {0xCB8555CC, 0x9128, 0x11D1, [0xAD, 0x9B, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID CLSID_WbemAuthenticatedLocator = {0xCD184336, 0x9128, 0x11D1, [0xAD, 0x9B, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID CLSID_WbemBackupRestore = {0xC49E32C6, 0xBC8B, 0x11D2, [0x85, 0xD4, 0x00, 0x10, 0x5A, 0x1F, 0x83, 0x04]}; - const IID CLSID_WbemClassObject = {0x9A653086, 0x174F, 0x11D2, [0xB5, 0xF9, 0x00, 0x10, 0x4B, 0x70, 0x3E, 0xFD]}; - const IID CLSID_WbemContext = {0x674B6698, 0xEE92, 0x11D0, [0xAD, 0x71, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID CLSID_WbemDCOMTransport = {0xF7CE2E13, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID CLSID_WbemDecoupledBasicEventProvide = {0xF5F75737, 0x2843, 0x4F22, [0x93, 0x3D, 0xC7, 0x6A, 0x97, 0xCD, 0xA6, 0x2F]}; - const IID CLSID_WbemDecoupledRegistrar = {0x4CFC7932, 0x0F9D, 0x4BEF, [0x9C, 0x32, 0x8E, 0xA2, 0xA6, 0xB5, 0x6F, 0xCB]}; - const IID CLSID_WbemDefPath = {0xCF4CC405, 0xE2C5, 0x4DDD, [0xB3, 0xCE, 0x5E, 0x75, 0x82, 0xD8, 0xC9, 0xFA]}; - const IID CLSID_WbemLevel1Login = {0x8BC3F05E, 0xD86B, 0x11D0, [0xA0, 0x75, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID CLSID_WbemLocalAddrRes = {0xA1044801, 0x8F7E, 0x11D1, [0x9E, 0x7C, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID CLSID_WbemLocator = {0x4590F811, 0x1D3A, 0x11D0, [0x89, 0x1F, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; - const IID CLSID_WbemObjectTextSrc = {0x8D1C559D, 0x84F0, 0x4BB3, [0xA7, 0xD5, 0x56, 0xA7, 0x43, 0x5A, 0x9B, 0xA6]}; - const IID CLSID_WbemQuery = {0xEAC8A024, 0x21E2, 0x4523, [0xAD, 0x73, 0xA7, 0x1A, 0x0A, 0xA2, 0xF5, 0x6A]}; - const IID CLSID_WbemRefresher = {0xC71566F2, 0x561E, 0x11D1, [0xAD, 0x87, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID CLSID_WbemStatusCodeText = {0xEB87E1BD, 0x3233, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID CLSID_WbemUnauthenticatedLocator = {0x443E7B79, 0xDE31, 0x11D2, [0xB3, 0x40, 0x00, 0x10, 0x4B, 0xCC, 0x4B, 0x4A]}; - const IID CLSID_WbemUninitializedClassObject = {0x7A0227F6, 0x7108, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID CLSID_WebBrowser = {0x8856F961, 0x340A, 0x11D0, [0xA9, 0x6B, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; - const IID CLSID_WebBrowser_V1 = {0xEAB22AC3, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; - const IID CLSID_WebCheck = {0xE6FB5E20, 0xDE35, 0x11CF, [0x9C, 0x87, 0x00, 0xAA, 0x00, 0x51, 0x27, 0xED]}; - const IID CLSID_WebCheckDefaultProcess = {0xC733E4B0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID CLSID_WebCheckOfflineSync = {0x7FC0B86E, 0x5FA7, 0x11D1, [0xBC, 0x7C, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; - const IID CLSID_WebCrawlerAgent = {0x08165EA0, 0xE946, 0x11CF, [0x9C, 0x87, 0x00, 0xAA, 0x00, 0x51, 0x27, 0xED]}; - const IID CLSID_WebViewFolderContents = {0x1820FED0, 0x473E, 0x11D0, [0xA9, 0x6C, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; - const IID CLSID_WebWizardHost = {0xC827F149, 0x55C1, 0x4D28, [0x93, 0x5E, 0x57, 0xE4, 0x7C, 0xAE, 0xD9, 0x73]}; - const IID CLSID_wfolders = {0xBAE31F9A, 0x1B81, 0x11D2, [0xA9, 0x7A, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; - const IID CLSID_WinNTConnectionObject = {0x7992C6EB, 0xD142, 0x4332, [0x83, 0x1E, 0x31, 0x54, 0xC5, 0x0A, 0x83, 0x16]}; - const IID CLSID_WinNTObject = {0xB8324185, 0x4050, 0x4220, [0x98, 0x0A, 0xAB, 0x14, 0x62, 0x3E, 0x06, 0x3A]}; - const IID CLSID_WinNTSystemInfo = {0x66182EC4, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; - const IID CLSID_WMIExtension = {0xF0975AFE, 0x5C7F, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; - const IID CLSID_XMLDocument = {0xCFC399AF, 0xD876, 0x11D0, [0x9C, 0x10, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; - const IID CLSID_XMLDSOControl = {0x550DDA30, 0x0541, 0x11D2, [0x9C, 0xA9, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; - const IID CLSID_XMLHTTPRequest = {0xED8C108E, 0x4349, 0x11D2, [0x91, 0xA4, 0x00, 0xC0, 0x4F, 0x79, 0x69, 0xE8]}; - const IID CLSID_XMLParser = {0xD2423620, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; - const IID DB_PROPERTY_AUTOMATICUPDATE = {0xC8B52209, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_BTREE = {0xC8B52201, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_CHECK_OPTION = {0xC8B5220B, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_CLUSTERED = {0xC8B521FF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_CONSTRAINT_CHECK_DEFERRE = {0xC8B521F0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_DISALLOWNULL = {0xC8B52205, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_DROP_CASCADE = {0xC8B521F3, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_EXPLICITUPDATE = {0xC8B5220A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_FILLFACTOR = {0xC8B52203, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_HASH = {0xC8B52202, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_IGNOREANYNULL = {0xC8B52207, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_IGNORENULL = {0xC8B52206, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_INITIALSIZE = {0xC8B52204, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_NONCLUSTERED = {0xC8B52200, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_ON_COMMIT_PRESERVE_ROWS = {0xC8B52230, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_PRIMARY = {0xC8B521FC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_SORTBOOKMARKS = {0xC8B52208, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DB_PROPERTY_UNIQUE = {0xC8B521F5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBCOL_SELFCOLUMNS = {0xC8B52231, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBCOL_SPECIALCOL = {0xC8B52232, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_COMMAND = {0xC8B522F8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_CONTAINEROBJECT = {0xC8B522FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_DBSQL = {0xC8B521FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_DEFAULT = {0xC8B521FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_DSO = {0xC8B522F4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_HISTOGRAM_ROWSET = {0xC8B52300, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_LDAPDialect = {0xEFF65380, 0x9C98, 0x11CF, [0xB9, 0x63, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_LIKE_DOS = {0xC8B521F7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_LIKE_MAPI = {0xC8B521F9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_LIKE_OFS = {0xC8B521F8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_LIKE_SQL = {0xC8B521F6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_MDX = {0xA07CCCD0, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; - const IID DBGUID_ROW = {0xC8B522F7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_ROWSET = {0xC8B522F6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_SESSION = {0xC8B522F5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_SQL = {0xC8B522D7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBGUID_STREAM = {0xC8B522F9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_CHARACTERSET = {0xC8B522ED, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_COLLATION = {0xC8B522EA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_COLUMN = {0xC8B522E4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_DATABASE = {0xC8B522E5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_DOMAIN = {0xC8B522E9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_PROCEDURE = {0xC8B522E6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_SCHEMA = {0xC8B522E8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_SCHEMAROWSET = {0xC8B522EC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_TABLE = {0xC8B522E2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_TRANSLATION = {0xC8B522EE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_TRUSTEE = {0xC8B522EB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBOBJECT_VIEW = {0xC8B522E7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_ADSIBIND = {0x6DA66DC8, 0xB7E8, 0x11D2, [0x9D, 0x60, 0x00, 0xC0, 0x4F, 0x68, 0x93, 0x45]}; - const IID DBPROPSET_ADSISEARCH = {0xCFCFC928, 0x9AA2, 0x11D0, [0xA7, 0x9A, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; - const IID DBPROPSET_COLUMN = {0xC8B522B9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_COLUMNALL = {0xC8B522F0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_CONSTRAINTALL = {0xC8B522FA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_DATASOURCE = {0xC8B522BA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_DATASOURCEALL = {0xC8B522C0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_DATASOURCEINFO = {0xC8B522BB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_DATASOURCEINFOALL = {0xC8B522C1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_DBINIT = {0xC8B522BC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_DBINITALL = {0xC8B522CA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_INDEX = {0xC8B522BD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_INDEXALL = {0xC8B522F1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_PROPERTIESINERROR = {0xC8B522D4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_ROWSET = {0xC8B522BE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_ROWSETALL = {0xC8B522C2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_SESSION = {0xC8B522C6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_SESSIONALL = {0xC8B522C7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_STREAM = {0xC8B522FD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_STREAMALL = {0xC8B522FE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_TABLE = {0xC8B522BF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_TABLEALL = {0xC8B522F2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_TRUSTEE = {0xC8B522E1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_TRUSTEEALL = {0xC8B522F3, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_VIEW = {0xC8B522DF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBPROPSET_VIEWALL = {0xC8B522FC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_ASSERTIONS = {0xC8B52210, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_CATALOGS = {0xC8B52211, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_CHARACTER_SETS = {0xC8B52212, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_CHECK_CONSTRAINTS = {0xC8B52215, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE = {0xC8B52301, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_COLLATIONS = {0xC8B52213, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_COLUMN_DOMAIN_USAGE = {0xC8B5221B, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_COLUMN_PRIVILEGES = {0xC8B52221, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_COLUMNS = {0xC8B52214, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_CONSTRAINT_COLUMN_USAGE = {0xC8B52216, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_CONSTRAINT_TABLE_USAGE = {0xC8B52217, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_FOREIGN_KEYS = {0xC8B522C4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_INDEXES = {0xC8B5221E, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_KEY_COLUMN_USAGE = {0xC8B52218, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_PRIMARY_KEYS = {0xC8B522C5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_PROCEDURE_COLUMNS = {0xC8B522C9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_PROCEDURE_PARAMETERS = {0xC8B522B8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_PROCEDURES = {0xC8B52224, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_PROVIDER_TYPES = {0xC8B5222C, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_REFERENTIAL_CONSTRAINTS = {0xC8B52219, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_SCHEMATA = {0xC8B52225, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_SQL_LANGUAGES = {0xC8B52226, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_STATISTICS = {0xC8B52227, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_TABLE_CONSTRAINTS = {0xC8B5221A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_TABLE_PRIVILEGES = {0xC8B52222, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_TABLE_STATISTICS = {0xC8B522FF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_TABLES = {0xC8B52229, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_TABLES_INFO = {0xC8B522E0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_TRANSLATIONS = {0xC8B5222A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_TRUSTEE = {0xC8B522EF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_USAGE_PRIVILEGES = {0xC8B52223, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_VIEW_COLUMN_USAGE = {0xC8B5222E, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_VIEW_TABLE_USAGE = {0xC8B5222F, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DBSCHEMA_VIEWS = {0xC8B5222D, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID DDVPTYPE_BROOKTREE = {0x1352A560, 0xDA61, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; - const IID DDVPTYPE_CCIR656 = {0xFCA326A0, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; - const IID DDVPTYPE_E_HREFH_VREFL = {0x92783220, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; - const IID DDVPTYPE_E_HREFL_VREFL = {0xE09C77E0, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; - const IID DDVPTYPE_PHILIPS = {0x332CF160, 0xDA61, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; - const IID DIID__SearchAssistantEvents = {0x1611FDDA, 0x445B, 0x11D2, [0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; - const IID DIID_DispCEventObj = {0x3050F558, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispDOMChildrenCollection = {0x3050F577, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTCAttachBehavior = {0x3050F583, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTCDefaultDispatch = {0x3050F573, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTCDescBehavior = {0x3050F57E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTCEventBehavior = {0x3050F574, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTCMethodBehavior = {0x3050F587, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTCPropertyBehavior = {0x3050F57F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLAnchorElement = {0x3050F502, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLAppBehavior = {0x3050F57C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLAreaElement = {0x3050F503, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLAreasCollection = {0x3050F56A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLAttributeCollection = {0x3050F56C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLBaseElement = {0x3050F518, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLBaseFontElement = {0x3050F504, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLBGsound = {0x3050F53C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLBlockElement = {0x3050F506, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLBody = {0x3050F507, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLBRElement = {0x3050F53A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLButtonElement = {0x3050F51F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLCommentElement = {0x3050F50A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLCurrentStyle = {0x3050F557, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLDDElement = {0x3050F50B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLDefaults = {0x3050F58C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLDivElement = {0x3050F50C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLDivPosition = {0x3050F50F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLDListElement = {0x3050F53B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLDocument = {0x3050F55F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLDOMAttribute = {0x3050F564, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLDOMImplementation = {0x3050F58F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLDOMTextNode = {0x3050F565, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLDTElement = {0x3050F50D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLElementCollection = {0x3050F56B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLEmbed = {0x3050F52E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLFieldSetElement = {0x3050F545, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLFontElement = {0x3050F512, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLFormElement = {0x3050F510, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLFrameBase = {0x3050F541, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLFrameElement = {0x3050F513, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLFrameSetSite = {0x3050F514, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLGenericElement = {0x3050F563, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLHeadElement = {0x3050F561, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLHeaderElement = {0x3050F515, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLHRElement = {0x3050F53D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLHtmlElement = {0x3050F560, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLIFrame = {0x3050F51B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLImg = {0x3050F51C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLInputElement = {0x3050F57D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLIsIndexElement = {0x3050F519, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLLabelElement = {0x3050F522, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLLegendElement = {0x3050F546, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLLIElement = {0x3050F523, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLLinkElement = {0x3050F524, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLListElement = {0x3050F525, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLMapElement = {0x3050F526, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLMarqueeElement = {0x3050F527, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLMetaElement = {0x3050F517, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLNextIdElement = {0x3050F51A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLNoShowElement = {0x3050F528, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLObjectElement = {0x3050F529, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLOListElement = {0x3050F52A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLOptionElement = {0x3050F52B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLParaElement = {0x3050F52C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLParamElement = {0x3050F590, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLPhraseElement = {0x3050F52D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLPopup = {0x3050F589, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLRenderStyle = {0x3050F58B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLRichtextElement = {0x3050F54D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLRuleStyle = {0x3050F55C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLScreen = {0x3050F591, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLScriptElement = {0x3050F530, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLSelectElement = {0x3050F531, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLSpanElement = {0x3050F548, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLSpanFlow = {0x3050F544, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLStyle = {0x3050F55A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLStyleElement = {0x3050F511, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLStyleSheet = {0x3050F58D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLTable = {0x3050F532, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLTableCaption = {0x3050F508, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLTableCell = {0x3050F536, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLTableCol = {0x3050F533, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLTableRow = {0x3050F535, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLTableSection = {0x3050F534, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLTextAreaElement = {0x3050F521, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLTextElement = {0x3050F537, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLTitleElement = {0x3050F516, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLUListElement = {0x3050F538, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLUnknownElement = {0x3050F539, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLWindow2 = {0x3050F55D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispHTMLWindowProxy = {0x3050F55E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispIHTMLInputButtonElement = {0x3050F51E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispIHTMLInputFileElement = {0x3050F542, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispIHTMLInputImage = {0x3050F51D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispIHTMLInputTextElement = {0x3050F520, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DispIHTMLOptionButtonElement = {0x3050F509, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_DMigrationWizardAutoEvents = {0xD2AC137D, 0xA6D8, 0x43B6, [0x98, 0x79, 0xEA, 0x34, 0xB6, 0x7E, 0x18, 0x80]}; - const IID DIID_DSearchCommandEvents = {0x60890160, 0x69F0, 0x11D1, [0xB7, 0x58, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; - const IID DIID_DShellFolderViewEvents = {0x62112AA2, 0xEBE4, 0x11CF, [0xA5, 0xFB, 0x00, 0x20, 0xAF, 0xE7, 0x29, 0x2D]}; - const IID DIID_DShellNameSpaceEvents = {0x55136806, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; - const IID DIID_DShellWindowsEvents = {0xFE4106E0, 0x399A, 0x11D0, [0xA4, 0x8C, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; - const IID DIID_DWebBridgeEvents = {0xA6D897FF, 0x0A95, 0x11D1, [0xB0, 0xBA, 0x00, 0x60, 0x08, 0x16, 0x6E, 0x11]}; - const IID DIID_DWebBrowserEvents = {0xEAB22AC2, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; - const IID DIID_DWebBrowserEvents2 = {0x34A715A0, 0x6587, 0x11D0, [0x92, 0x4A, 0x00, 0x20, 0xAF, 0xC7, 0xAC, 0x4D]}; - const IID DIID_HTMLAnchorEvents = {0x3050F29D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLAnchorEvents2 = {0x3050F610, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLAreaEvents = {0x3050F366, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLAreaEvents2 = {0x3050F611, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLButtonElementEvents = {0x3050F2B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLButtonElementEvents2 = {0x3050F617, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLControlElementEvents = {0x3050F4EA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLControlElementEvents2 = {0x3050F612, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLDocumentEvents = {0x3050F260, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLDocumentEvents2 = {0x3050F613, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLElementEvents = {0x3050F33C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLElementEvents2 = {0x3050F60F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLFormElementEvents = {0x3050F364, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLFormElementEvents2 = {0x3050F614, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLFrameSiteEvents = {0x3050F800, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLFrameSiteEvents2 = {0x3050F7FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLImgEvents = {0x3050F25B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLImgEvents2 = {0x3050F616, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLInputFileElementEvents = {0x3050F2AF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLInputFileElementEvents2 = {0x3050F61A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLInputImageEvents = {0x3050F2C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLInputImageEvents2 = {0x3050F61B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLInputTextElementEvents = {0x3050F2A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLInputTextElementEvents2 = {0x3050F618, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLLabelEvents = {0x3050F329, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLLabelEvents2 = {0x3050F61C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLLinkElementEvents = {0x3050F3CC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLLinkElementEvents2 = {0x3050F61D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLMapEvents = {0x3050F3BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLMapEvents2 = {0x3050F61E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLMarqueeElementEvents = {0x3050F2B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLMarqueeElementEvents2 = {0x3050F61F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLNamespaceEvents = {0x3050F6BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLObjectElementEvents = {0x3050F3C4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLObjectElementEvents2 = {0x3050F620, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLOptionButtonElementEvents = {0x3050F2BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLOptionButtonElementEvents2 = {0x3050F619, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLPersistEvents = {0x3050F4C7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLScriptEvents = {0x3050F3E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLScriptEvents2 = {0x3050F621, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLSelectElementEvents = {0x3050F302, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLSelectElementEvents2 = {0x3050F622, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLStyleElementEvents = {0x3050F3CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLStyleElementEvents2 = {0x3050F615, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLTableEvents = {0x3050F407, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLTableEvents2 = {0x3050F623, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLTextContainerEvents = {0x1FF6AA72, 0x5842, 0x11CF, [0xA7, 0x07, 0x00, 0xAA, 0x00, 0xC0, 0x09, 0x8D]}; - const IID DIID_HTMLTextContainerEvents2 = {0x3050F624, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_HTMLWindowEvents = {0x96A0A4E0, 0xD062, 0x11CF, [0x94, 0xB6, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; - const IID DIID_HTMLWindowEvents2 = {0x3050F625, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_IRTCDispatchEventNotification = {0x176DDFBE, 0xFEC0, 0x4D55, [0xBC, 0x87, 0x84, 0xCF, 0xF1, 0xEF, 0x7F, 0x91]}; - const IID DIID_ISWbemSinkEvents = {0x75718CA0, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; - const IID DIID_ITTAPIDispatchEventNotification = {0x9F34325B, 0x7E62, 0x11D2, [0x94, 0x57, 0x00, 0xC0, 0x4F, 0x8E, 0xC8, 0x88]}; - const IID DIID_LayoutRectEvents = {0x3050F674, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID DIID_XMLDOMDocumentEvents = {0x3EFAA427, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; - const IID DPAID_ComPort = {0xF2F0CE00, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID DPAID_INet = {0xC4A54DA0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID DPAID_INetPort = {0xE4524541, 0x8EA5, 0x11D1, [0x8A, 0x96, 0x00, 0x60, 0x97, 0xB0, 0x14, 0x11]}; - const IID DPAID_INetW = {0xE63232A0, 0x9DBF, 0x11D0, [0x9C, 0xC1, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID DPAID_LobbyProvider = {0x59B95640, 0x9667, 0x11D0, [0xA7, 0x7D, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; - const IID DPAID_Modem = {0xF6DCC200, 0xA2FE, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID DPAID_ModemW = {0x01FD92E0, 0xA2FF, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID DPAID_Phone = {0x78EC89A0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID DPAID_PhoneW = {0xBA5A7A70, 0x9DBF, 0x11D0, [0x9C, 0xC1, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID DPAID_ServiceProvider = {0x07D916C0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID DPAID_TotalSize = {0x1318F560, 0x912C, 0x11D0, [0x9D, 0xAA, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; - const IID DPLPROPERTY_LobbyGuid = {0xF56920A0, 0xD218, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; - const IID DPLPROPERTY_MessagesSupported = {0x762CCDA1, 0xD916, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; - const IID DPLPROPERTY_PlayerGuid = {0xB4319322, 0xD20D, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; - const IID DPLPROPERTY_PlayerScore = {0x48784000, 0xD219, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; - const IID DPSPGUID_IPX = {0x685BC400, 0x9D2C, 0x11CF, [0xA9, 0xCD, 0x00, 0xAA, 0x00, 0x68, 0x86, 0xE3]}; - const IID DPSPGUID_MODEM = {0x44EAA760, 0xCB68, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID DPSPGUID_SERIAL = {0x0F1D6860, 0x88D9, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID DPSPGUID_TCPIP = {0x36E95EE0, 0x8577, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0x53, 0x4E, 0x82]}; - const IID DS3DALG_HRTF_FULL = {0xC2413340, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; - const IID DS3DALG_HRTF_LIGHT = {0xC2413342, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; - const IID DS3DALG_NO_VIRTUALIZATION = {0xC241333F, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; - const IID FLAGID_Internet = {0x96300DA0, 0x2BAB, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID FMTID_AudioSummaryInformation = {0x64440490, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; - const IID FMTID_Briefcase = {0x328D8B21, 0x7729, 0x4BFC, [0x95, 0x4C, 0x90, 0x2B, 0x32, 0x9D, 0x56, 0xB0]}; - const IID FMTID_DiscardableInformation = {0xD725EBB0, 0xC9B8, 0x11D1, [0x89, 0xBC, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; - const IID FMTID_Displaced = {0x9B174B33, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; - const IID FMTID_DocSummaryInformation = {0xD5CDD502, 0x2E9C, 0x101B, [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE]}; - const IID FMTID_DRM = {0xAEAC19E4, 0x89AE, 0x4508, [0xB9, 0xB7, 0xBB, 0x86, 0x7A, 0xBE, 0xE2, 0xED]}; - const IID FMTID_ImageProperties = {0x14B81DA1, 0x0135, 0x4D31, [0x96, 0xD9, 0x6C, 0xBF, 0xC9, 0x67, 0x1A, 0x99]}; - const IID FMTID_ImageSummaryInformation = {0x6444048F, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; - const IID FMTID_InternetSite = {0x000214A1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID FMTID_Intshcut = {0x000214A0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID FMTID_MediaFileSummaryInformation = {0x64440492, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; - const IID FMTID_Misc = {0x9B174B34, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; - const IID FMTID_MUSIC = {0x56A3372E, 0xCE9C, 0x11D2, [0x9F, 0x0E, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6]}; - const IID FMTID_PropertyBag = {0x20001801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; - const IID FMTID_Query = {0x49691C90, 0x7E17, 0x101A, [0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9]}; - const IID FMTID_ShellDetails = {0x28636AA6, 0x953D, 0x11D2, [0xB5, 0xD6, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; - const IID FMTID_Storage = {0xB725F130, 0x47EF, 0x101A, [0xA5, 0xF1, 0x02, 0x60, 0x8C, 0x9E, 0xEB, 0xAC]}; - const IID FMTID_SummaryInformation = {0xF29F85E0, 0x4FF9, 0x1068, [0xAB, 0x91, 0x08, 0x00, 0x2B, 0x27, 0xB3, 0xD9]}; - const IID FMTID_UserDefinedProperties = {0xD5CDD505, 0x2E9C, 0x101B, [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE]}; - const IID FMTID_VideoSummaryInformation = {0x64440491, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; - const IID FMTID_Volume = {0x9B174B35, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; - const IID FMTID_WebView = {0xF2275480, 0xF782, 0x4291, [0xBD, 0x94, 0xF1, 0x36, 0x93, 0x51, 0x3A, 0xEC]}; - const IID GUID_ACPI_CMOS_INTERFACE_STANDARD = {0x3A8D0384, 0x6505, 0x40CA, [0xBC, 0x39, 0x56, 0xC1, 0x5F, 0x8C, 0x5F, 0xED]}; - const IID GUID_ACPI_INTERFACE_STANDARD = {0xB091A08A, 0xBA97, 0x11D0, [0xBD, 0x14, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; - const IID GUID_ACPI_PORT_RANGES_INTERFACE_STAND = {0xF14F609B, 0xCBBD, 0x4957, [0xA6, 0x74, 0xBC, 0x00, 0x21, 0x3F, 0x1C, 0x97]}; - const IID GUID_ACPI_REGS_INTERFACE_STANDARD = {0x06141966, 0x7245, 0x6369, [0x46, 0x2E, 0x4E, 0x65, 0x6C, 0x73, 0x6F, 0x6E]}; - const IID GUID_ARBITER_INTERFACE_STANDARD = {0xE644F185, 0x8C0E, 0x11D0, [0xBE, 0xCF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; - const IID GUID_BUS_INTERFACE_STANDARD = {0x496B8280, 0x6F25, 0x11D0, [0xBE, 0xAF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; - const IID GUID_BUS_TYPE_1394 = {0xF74E73EB, 0x9AC5, 0x45EB, [0xBE, 0x4D, 0x77, 0x2C, 0xC7, 0x1D, 0xDF, 0xB3]}; - const IID GUID_BUS_TYPE_AVC = {0xC06FF265, 0xAE09, 0x48F0, [0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83]}; - const IID GUID_BUS_TYPE_DOT4PRT = {0x441EE001, 0x4342, 0x11D5, [0xA1, 0x84, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; - const IID GUID_BUS_TYPE_EISA = {0xDDC35509, 0xF3FC, 0x11D0, [0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1]}; - const IID GUID_BUS_TYPE_HID = {0xEEAF37D0, 0x1963, 0x47C4, [0xAA, 0x48, 0x72, 0x47, 0x6D, 0xB7, 0xCF, 0x49]}; - const IID GUID_BUS_TYPE_INTERNAL = {0x1530EA73, 0x086B, 0x11D1, [0xA0, 0x9F, 0x00, 0xC0, 0x4F, 0xC3, 0x40, 0xB1]}; - const IID GUID_BUS_TYPE_IRDA = {0x7AE17DC1, 0xC944, 0x44D6, [0x88, 0x1F, 0x4C, 0x2E, 0x61, 0x05, 0x3B, 0xC1]}; - const IID GUID_BUS_TYPE_ISAPNP = {0xE676F854, 0xD87D, 0x11D0, [0x92, 0xB2, 0x00, 0xA0, 0xC9, 0x05, 0x5F, 0xC5]}; - const IID GUID_BUS_TYPE_LPTENUM = {0xC4CA1000, 0x2DDC, 0x11D5, [0xA1, 0x7A, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; - const IID GUID_BUS_TYPE_MCA = {0x1C75997A, 0xDC33, 0x11D0, [0x92, 0xB2, 0x00, 0xA0, 0xC9, 0x05, 0x5F, 0xC5]}; - const IID GUID_BUS_TYPE_PCI = {0xC8EBDFB0, 0xB510, 0x11D0, [0x80, 0xE5, 0x00, 0xA0, 0xC9, 0x25, 0x42, 0xE3]}; - const IID GUID_BUS_TYPE_PCMCIA = {0x09343630, 0xAF9F, 0x11D0, [0x92, 0xE9, 0x00, 0x00, 0xF8, 0x1E, 0x1B, 0x30]}; - const IID GUID_BUS_TYPE_SERENUM = {0x77114A87, 0x8944, 0x11D1, [0xBD, 0x90, 0x00, 0xA0, 0xC9, 0x06, 0xBE, 0x2D]}; - const IID GUID_BUS_TYPE_USB = {0x9D7DEBBC, 0xC85D, 0x11D1, [0x9E, 0xB4, 0x00, 0x60, 0x08, 0xC3, 0xA1, 0x9A]}; - const IID GUID_BUS_TYPE_USBPRINT = {0x441EE000, 0x4342, 0x11D5, [0xA1, 0x84, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; - const IID GUID_Button = {0xA36D02F0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_CHECKVALUEEXCLUSIVE = {0x6650430C, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_ChordParam = {0xD2AC289E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_Clear_All_Bands = {0xD2AC28AB, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_COLOR = {0x66504301, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_ColorControlCallbacks = {0xEFD60CC2, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; - const IID GUID_CommandParam = {0xD2AC289D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_CommandParam2 = {0x28F97EF7, 0x9538, 0x11D2, [0x97, 0xA9, 0x00, 0xC0, 0x4F, 0xA3, 0x6E, 0x58]}; - const IID GUID_ConnectToDLSCollection = {0x1DB1AE6B, 0xE92E, 0x11D1, [0xA8, 0xC5, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0x6E]}; - const IID GUID_ConstantForce = {0x13541C20, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_CustomForce = {0x13541C2B, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_D3DCallbacks2 = {0x0BA584E1, 0x70B6, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; - const IID GUID_D3DCallbacks3 = {0xDDF41230, 0xEC0A, 0x11D0, [0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E]}; - const IID GUID_D3DExtendedCaps = {0x7DE41F80, 0x9D93, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; - const IID GUID_D3DParseUnknownCommandCallback = {0x2E04FFA0, 0x98E4, 0x11D1, [0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID GUID_Damper = {0x13541C28, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_DDMoreCaps = {0x880BAF30, 0xB030, 0x11D0, [0x8E, 0xA7, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; - const IID GUID_DDMoreSurfaceCaps = {0x3B8A0466, 0xF269, 0x11D1, [0x88, 0x0B, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; - const IID GUID_DDStereoMode = {0xF828169C, 0xA8E8, 0x11D2, [0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6]}; - const IID GUID_DefaultGMCollection = {0xF17E8673, 0xC3B4, 0x11D1, [0x87, 0x0B, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_DEVCLASS_1394 = {0x6BDD1FC1, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; - const IID GUID_DEVCLASS_1394DEBUG = {0x66F250D6, 0x7801, 0x4A64, [0xB1, 0x39, 0xEE, 0xA8, 0x0A, 0x45, 0x0B, 0x24]}; - const IID GUID_DEVCLASS_61883 = {0x7EBEFBC0, 0x3200, 0x11D2, [0xB4, 0xC2, 0x00, 0xA0, 0xC9, 0x69, 0x7D, 0x07]}; - const IID GUID_DEVCLASS_ADAPTER = {0x4D36E964, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_APMSUPPORT = {0xD45B1C18, 0xC8FA, 0x11D1, [0x9F, 0x77, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; - const IID GUID_DEVCLASS_AVC = {0xC06FF265, 0xAE09, 0x48F0, [0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83]}; - const IID GUID_DEVCLASS_BATTERY = {0x72631E54, 0x78A4, 0x11D0, [0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; - const IID GUID_DEVCLASS_BLUETOOTH = {0xE0CBF06C, 0xCD8B, 0x4647, [0xBB, 0x8A, 0x26, 0x3B, 0x43, 0xF0, 0xF9, 0x74]}; - const IID GUID_DEVCLASS_CDROM = {0x4D36E965, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_COMPUTER = {0x4D36E966, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_DECODER = {0x6BDD1FC2, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; - const IID GUID_DEVCLASS_DISKDRIVE = {0x4D36E967, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_DISPLAY = {0x4D36E968, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_DOT4 = {0x48721B56, 0x6795, 0x11D2, [0xB1, 0xA8, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2]}; - const IID GUID_DEVCLASS_DOT4PRINT = {0x49CE6AC8, 0x6F86, 0x11D2, [0xB1, 0xE5, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2]}; - const IID GUID_DEVCLASS_ENUM1394 = {0xC459DF55, 0xDB08, 0x11D1, [0xB0, 0x09, 0x00, 0xA0, 0xC9, 0x08, 0x1F, 0xF6]}; - const IID GUID_DEVCLASS_FDC = {0x4D36E969, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_FLOPPYDISK = {0x4D36E980, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_FSFILTER_ACTIVITYMONIT = {0xB86DFF51, 0xA31E, 0x4BAC, [0xB3, 0xCF, 0xE8, 0xCF, 0xE7, 0x5C, 0x9F, 0xC2]}; - const IID GUID_DEVCLASS_FSFILTER_ANTIVIRUS = {0xB1D1A169, 0xC54F, 0x4379, [0x81, 0xDB, 0xBE, 0xE7, 0xD8, 0x8D, 0x74, 0x54]}; - const IID GUID_DEVCLASS_FSFILTER_CFSMETADATASER = {0xCDCF0939, 0xB75B, 0x4630, [0xBF, 0x76, 0x80, 0xF7, 0xBA, 0x65, 0x58, 0x84]}; - const IID GUID_DEVCLASS_FSFILTER_COMPRESSION = {0xF3586BAF, 0xB5AA, 0x49B5, [0x8D, 0x6C, 0x05, 0x69, 0x28, 0x4C, 0x63, 0x9F]}; - const IID GUID_DEVCLASS_FSFILTER_CONTENTSCREEN = {0x3E3F0674, 0xC83C, 0x4558, [0xBB, 0x26, 0x98, 0x20, 0xE1, 0xEB, 0xA5, 0xC5]}; - const IID GUID_DEVCLASS_FSFILTER_CONTINUOUSBACK = {0x71AA14F8, 0x6FAD, 0x4622, [0xAD, 0x77, 0x92, 0xBB, 0x9D, 0x7E, 0x69, 0x47]}; - const IID GUID_DEVCLASS_FSFILTER_COPYPROTECTIO = {0x89786FF1, 0x9C12, 0x402F, [0x9C, 0x9E, 0x17, 0x75, 0x3C, 0x7F, 0x43, 0x75]}; - const IID GUID_DEVCLASS_FSFILTER_ENCRYPTION = {0xA0A701C0, 0xA511, 0x42FF, [0xAA, 0x6C, 0x06, 0xDC, 0x03, 0x95, 0x57, 0x6F]}; - const IID GUID_DEVCLASS_FSFILTER_HSM = {0xD546500A, 0x2AEB, 0x45F6, [0x94, 0x82, 0xF4, 0xB1, 0x79, 0x9C, 0x31, 0x77]}; - const IID GUID_DEVCLASS_FSFILTER_INFRASTRUCTUR = {0xE55FA6F9, 0x128C, 0x4D04, [0xAB, 0xAB, 0x63, 0x0C, 0x74, 0xB1, 0x45, 0x3A]}; - const IID GUID_DEVCLASS_FSFILTER_OPENFILEBACKU = {0xF8ECAFA6, 0x66D1, 0x41A5, [0x89, 0x9B, 0x66, 0x58, 0x5D, 0x72, 0x16, 0xB7]}; - const IID GUID_DEVCLASS_FSFILTER_PHYSICALQUOTAM = {0x6A0A8E78, 0xBBA6, 0x4FC4, [0xA7, 0x09, 0x1E, 0x33, 0xCD, 0x09, 0xD6, 0x7E]}; - const IID GUID_DEVCLASS_FSFILTER_QUOTAMANAGEME = {0x8503C911, 0xA6C7, 0x4919, [0x8F, 0x79, 0x50, 0x28, 0xF5, 0x86, 0x6B, 0x0C]}; - const IID GUID_DEVCLASS_FSFILTER_REPLICATION = {0x48D3EBC4, 0x4CF8, 0x48FF, [0xB8, 0x69, 0x9C, 0x68, 0xAD, 0x42, 0xEB, 0x9F]}; - const IID GUID_DEVCLASS_FSFILTER_SECURITYENHANC = {0xD02BC3DA, 0x0C8E, 0x4945, [0x9B, 0xD5, 0xF1, 0x88, 0x3C, 0x22, 0x6C, 0x8C]}; - const IID GUID_DEVCLASS_FSFILTER_SYSTEM = {0x5D1B9AAA, 0x01E2, 0x46AF, [0x84, 0x9F, 0x27, 0x2B, 0x3F, 0x32, 0x4C, 0x46]}; - const IID GUID_DEVCLASS_FSFILTER_SYSTEMRECOVER = {0x2DB15374, 0x706E, 0x4131, [0xA0, 0xC7, 0xD7, 0xC7, 0x8E, 0xB0, 0x28, 0x9A]}; - const IID GUID_DEVCLASS_FSFILTER_UNDELETE = {0xFE8F1572, 0xC67A, 0x48C0, [0xBB, 0xAC, 0x0B, 0x5C, 0x6D, 0x66, 0xCA, 0xFB]}; - const IID GUID_DEVCLASS_GPS = {0x6BDD1FC3, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; - const IID GUID_DEVCLASS_HDC = {0x4D36E96A, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_HIDCLASS = {0x745A17A0, 0x74D3, 0x11D0, [0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA]}; - const IID GUID_DEVCLASS_IMAGE = {0x6BDD1FC6, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; - const IID GUID_DEVCLASS_INFRARED = {0x6BDD1FC5, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; - const IID GUID_DEVCLASS_KEYBOARD = {0x4D36E96B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_LEGACYDRIVER = {0x8ECC055D, 0x047F, 0x11D1, [0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1]}; - const IID GUID_DEVCLASS_MEDIA = {0x4D36E96C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_MEDIUM_CHANGER = {0xCE5939AE, 0xEBDE, 0x11D0, [0xB1, 0x81, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xC4]}; - const IID GUID_DEVCLASS_MODEM = {0x4D36E96D, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_MONITOR = {0x4D36E96E, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_MOUSE = {0x4D36E96F, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_MTD = {0x4D36E970, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_MULTIFUNCTION = {0x4D36E971, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_MULTIPORTSERIAL = {0x50906CB8, 0xBA12, 0x11D1, [0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; - const IID GUID_DEVCLASS_NET = {0x4D36E972, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_NETCLIENT = {0x4D36E973, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_NETSERVICE = {0x4D36E974, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_NETTRANS = {0x4D36E975, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_NODRIVER = {0x4D36E976, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_PCMCIA = {0x4D36E977, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_PNPPRINTERS = {0x4658EE7E, 0xF050, 0x11D1, [0xB6, 0xBD, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7]}; - const IID GUID_DEVCLASS_PORTS = {0x4D36E978, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_PRINTER = {0x4D36E979, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_PRINTERUPGRADE = {0x4D36E97A, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_PROCESSOR = {0x50127DC3, 0x0F36, 0x415E, [0xA6, 0xCC, 0x4C, 0xB3, 0xBE, 0x91, 0x0B, 0x65]}; - const IID GUID_DEVCLASS_SBP2 = {0xD48179BE, 0xEC20, 0x11D1, [0xB6, 0xB8, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7]}; - const IID GUID_DEVCLASS_SCSIADAPTER = {0x4D36E97B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_SMARTCARDREADER = {0x50DD5230, 0xBA8A, 0x11D1, [0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; - const IID GUID_DEVCLASS_SOUND = {0x4D36E97C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_SYSTEM = {0x4D36E97D, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_TAPEDRIVE = {0x6D807884, 0x7D21, 0x11CF, [0x80, 0x1C, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_UNKNOWN = {0x4D36E97E, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVCLASS_USB = {0x36FC9E60, 0xC465, 0x11CF, [0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_DEVCLASS_VOLUME = {0x71A27CDD, 0x812A, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; - const IID GUID_DEVCLASS_VOLUMESNAPSHOT = {0x533C5B84, 0xEC70, 0x11D2, [0x95, 0x05, 0x00, 0xC0, 0x4F, 0x79, 0xDE, 0xAF]}; - const IID GUID_DEVCLASS_WCEUSBS = {0x25DBCE51, 0x6C8F, 0x4A72, [0x8A, 0x6D, 0xB5, 0x4C, 0x2B, 0x4F, 0xC8, 0x35]}; - const IID GUID_DEVICE_INTERFACE_ARRIVAL = {0xCB3A4004, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; - const IID GUID_DEVICE_INTERFACE_REMOVAL = {0xCB3A4005, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; - const IID GUID_DEVINTERFACE_CDCHANGER = {0x53F56312, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; - const IID GUID_DEVINTERFACE_CDROM = {0x53F56308, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; - const IID GUID_DEVINTERFACE_COMPORT = {0x86E0D1E0, 0x8089, 0x11D0, [0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73]}; - const IID GUID_DEVINTERFACE_DISK = {0x53F56307, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; - const IID GUID_DEVINTERFACE_FLOPPY = {0x53F56311, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; - const IID GUID_DEVINTERFACE_MEDIUMCHANGER = {0x53F56310, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; - const IID GUID_DEVINTERFACE_PARTITION = {0x53F5630A, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; - const IID GUID_DEVINTERFACE_SERENUM_BUS_ENUMERA = {0x4D36E978, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_DEVINTERFACE_STORAGEPORT = {0x2ACCFE60, 0xC130, 0x11D2, [0xB0, 0x82, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; - const IID GUID_DEVINTERFACE_TAPE = {0x53F5630B, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; - const IID GUID_DEVINTERFACE_VOLUME = {0x53F5630D, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; - const IID GUID_DEVINTERFACE_WRITEONCEDISK = {0x53F5630C, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; - const IID GUID_DirectDrawPaletteStream = {0x730C7FFC, 0x5347, 0x11D1, [0x8C, 0x4D, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; - const IID GUID_DirectDrawSurfaceStream = {0xE043BC46, 0x5317, 0x11D1, [0x8C, 0x4D, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; - const IID GUID_DirectMusicAllTypes = {0xD2AC2893, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_Disable_Auto_Download = {0xD2AC28AA, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_DisableTempo = {0x45FC707D, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; - const IID GUID_DisableTimeSig = {0x45FC707B, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; - const IID GUID_DMUS_PROP_DLS1 = {0x178F2F27, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID GUID_DMUS_PROP_DLS2 = {0xF14599E5, 0x4689, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; - const IID GUID_DMUS_PROP_Effects = {0xCDA8D611, 0x684A, 0x11D2, [0x87, 0x1E, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_DMUS_PROP_GM_Hardware = {0x178F2F24, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID GUID_DMUS_PROP_GS_Capable = {0x6496ABA2, 0x61B0, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; - const IID GUID_DMUS_PROP_GS_Hardware = {0x178F2F25, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID GUID_DMUS_PROP_INSTRUMENT2 = {0x865FD372, 0x9F67, 0x11D2, [0x87, 0x2A, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_DMUS_PROP_LegacyCaps = {0xCFA7CDC2, 0x00A1, 0x11D2, [0xAA, 0xD5, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID GUID_DMUS_PROP_MemorySize = {0x178F2F28, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID GUID_DMUS_PROP_SampleMemorySize = {0x178F2F28, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID GUID_DMUS_PROP_SamplePlaybackRate = {0x2A91F713, 0xA4BF, 0x11D2, [0xBB, 0xDF, 0x00, 0x60, 0x08, 0x33, 0xDB, 0xD8]}; - const IID GUID_DMUS_PROP_SynthSink_DSOUND = {0x0AA97844, 0xC877, 0x11D1, [0x87, 0x0C, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_DMUS_PROP_SynthSink_WAVE = {0x0AA97845, 0xC877, 0x11D1, [0x87, 0x0C, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_DMUS_PROP_Volume = {0xFEDFAE25, 0xE46E, 0x11D1, [0xAA, 0xCE, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID GUID_DMUS_PROP_WavesReverb = {0x04CB5622, 0x32E5, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; - const IID GUID_DMUS_PROP_WriteLatency = {0x268A0FA0, 0x60F2, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; - const IID GUID_DMUS_PROP_WritePeriod = {0x268A0FA1, 0x60F2, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; - const IID GUID_DMUS_PROP_XG_Capable = {0x6496ABA1, 0x61B0, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; - const IID GUID_DMUS_PROP_XG_Hardware = {0x178F2F26, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID GUID_Download = {0xD2AC28A7, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_Enable_Auto_Download = {0xD2AC28A9, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_EnableTempo = {0x45FC707E, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; - const IID GUID_EnableTimeSig = {0x45FC707C, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; - const IID GUID_FONTBOLD = {0x6650430F, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_FONTITALIC = {0x66504310, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_FONTNAME = {0x6650430D, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_FONTSIZE = {0x6650430E, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_FONTSTRIKETHROUGH = {0x66504312, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_FONTUNDERSCORE = {0x66504311, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_Friction = {0x13541C2A, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_HANDLE = {0x66504313, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_HasPathProperties = {0x0002DE81, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID GUID_HIDClass = {0x745A17A0, 0x74D3, 0x11D0, [0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA]}; - const IID GUID_HIMETRIC = {0x66504300, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_HWPROFILE_CHANGE_CANCELLED = {0xCB3A4002, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; - const IID GUID_HWPROFILE_CHANGE_COMPLETE = {0xCB3A4003, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; - const IID GUID_HWPROFILE_QUERY_CHANGE = {0xCB3A4001, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; - const IID GUID_IDirectMusicBand = {0xD2AC28AC, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_IDirectMusicChordMap = {0xD2AC28AD, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_IDirectMusicStyle = {0xD2AC28A1, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_Inertia = {0x13541C29, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_INT_ROUTE_INTERFACE_STANDARD = {0x70941BF4, 0x0073, 0x11D1, [0xA0, 0x9E, 0x00, 0xC0, 0x4F, 0xC3, 0x40, 0xB1]}; - const IID GUID_Joystick = {0x6F1D2B70, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_KernelCallbacks = {0x80863800, 0x6B06, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; - const IID GUID_KernelCaps = {0xFFAA7540, 0x7AA8, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; - const IID GUID_Key = {0x55728220, 0xD33C, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_KeyboardClass = {0x4D36E96B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_LEGACY_DEVICE_DETECTION_STANDAR = {0x50FEB0DE, 0x596A, 0x11D2, [0xA5, 0xB8, 0x00, 0x00, 0xF8, 0x1A, 0x46, 0x19]}; - const IID GUID_MediaClass = {0x4D36E96C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_MF_ENUMERATION_INTERFACE = {0xAEB895F0, 0x5586, 0x11D1, [0x8D, 0x84, 0x00, 0xA0, 0xC9, 0x06, 0xB2, 0x44]}; - const IID GUID_Miscellaneous2Callbacks = {0x406B2F00, 0x3E5A, 0x11D1, [0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A]}; - const IID GUID_MiscellaneousCallbacks = {0xEFD60CC0, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; - const IID GUID_MotionCompCallbacks = {0xB1122B40, 0x5DA5, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; - const IID GUID_MouseClass = {0x4D36E96F, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; - const IID GUID_MuteParam = {0xD2AC28AF, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_NDIS_802_11_ADD_WEP = {0x4307BFF0, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_AUTHENTICATION_MODE = {0x43920A24, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_BASIC_RATES = {0x4A198516, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_BSSID = {0x2504B6C2, 0x1FA5, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_BSSID_LIST = {0x69526F9A, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_BSSID_LIST_SCAN = {0x0D9E01E1, 0xBA70, 0x11D4, [0xB6, 0x75, 0x00, 0x20, 0x48, 0x57, 0x03, 0x37]}; - const IID GUID_NDIS_802_11_CONFIGURATION = {0x4A4DF982, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_DESIRED_RATES = {0x452EE08E, 0x2536, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_DISASSOCIATE = {0x43671F40, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_FRAGMENTATION_THRESH = {0x69AAA7C4, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_INFRASTRUCTURE_MODE = {0x697D5A7E, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_NETWORK_TYPE_IN_USE = {0x857E2326, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_NETWORK_TYPES_SUPPOR = {0x8531D6E6, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_NUMBER_OF_ANTENNAS = {0x01779336, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_POWER_MODE = {0x85BE837C, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_PRIVACY_FILTER = {0x6733C4E9, 0x4792, 0x11D4, [0x97, 0xF1, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_REMOVE_WEP = {0x433C345C, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_RSSI = {0x1507DB16, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_RSSI_TRIGGER = {0x155689B8, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_RTS_THRESHOLD = {0x0134D07E, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_RX_ANTENNA_SELECTED = {0x01AC07A2, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_SSID = {0x7D2A90EA, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_STATISTICS = {0x42BB73B0, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_SUPPORTED_RATES = {0x49DB8722, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_TX_ANTENNA_SELECTED = {0x01DBB74A, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_TX_POWER_LEVEL = {0x11E6BA76, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; - const IID GUID_NDIS_802_11_WEP_STATUS = {0xB027A21F, 0x3CFA, 0x4125, [0x80, 0x0B, 0x3F, 0x7A, 0x18, 0xFD, 0xDC, 0xDC]}; - const IID GUID_NDIS_802_3_CURRENT_ADDRESS = {0x44795700, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_3_MAC_OPTIONS = {0x44795703, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_3_MAXIMUM_LIST_SIZE = {0x44795702, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_3_MULTICAST_LIST = {0x44795701, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_3_PERMANENT_ADDRESS = {0x447956FF, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_3_RCV_ERROR_ALIGNMENT = {0x44795704, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_3_XMIT_MORE_COLLISIONS = {0x44795706, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_3_XMIT_ONE_COLLISION = {0x44795705, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_5_CURRENT_ADDRESS = {0x44795708, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_5_CURRENT_FUNCTIONAL = {0x44795709, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_5_CURRENT_GROUP = {0x4479570A, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_5_CURRENT_RING_STATE = {0xACF14032, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_5_CURRENT_RING_STATUS = {0x890A36EC, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_5_LAST_OPEN_STATUS = {0x4479570B, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_5_LINE_ERRORS = {0xACF14033, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_5_LOST_FRAMES = {0xACF14034, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_802_5_PERMANENT_ADDRESS = {0x44795707, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_HW_CURRENT_ADDRESS = {0x791AD1A1, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_MAX_AAL0_PACKET_SIZE = {0x791AD1A5, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_MAX_AAL1_PACKET_SIZE = {0x791AD1A6, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_MAX_AAL34_PACKET_SIZE = {0x791AD1A7, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_MAX_AAL5_PACKET_SIZE = {0x791AD191, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_MAX_ACTIVE_VCI_BITS = {0x791AD1A3, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_MAX_ACTIVE_VCS = {0x791AD1A2, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_MAX_ACTIVE_VPI_BITS = {0x791AD1A4, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_RCV_CELLS_DROPPED = {0x0A21480C, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_RCV_CELLS_OK = {0x0A21480A, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_SUPPORTED_AAL_TYPES = {0x791AD1A0, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_SUPPORTED_SERVICE_CATEG = {0x791AD19F, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_SUPPORTED_VC_RATES = {0x791AD19E, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ATM_XMIT_CELLS_OK = {0x0A21480B, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ENUMERATE_ADAPTER = {0x981F2D7F, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_ENUMERATE_VC = {0x981F2D82, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_ATTACHMENT_TYPE = {0xACF1403D, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_DOWNSTREAM_NODE_LONG = {0xACF1403F, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_FRAME_ERRORS = {0xACF14040, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_FRAMES_LOST = {0xACF14041, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_LCONNECTION_STATE = {0xACF14045, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_LCT_FAILURES = {0xACF14043, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_LEM_REJECTS = {0xACF14044, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_LONG_CURRENT_ADDR = {0xACF14036, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_LONG_MAX_LIST_SIZE = {0xACF14038, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_LONG_MULTICAST_LIST = {0xACF14037, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_LONG_PERMANENT_ADDR = {0xACF14035, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_RING_MGT_STATE = {0xACF14042, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_SHORT_CURRENT_ADDR = {0xACF1403A, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_SHORT_MAX_LIST_SIZE = {0xACF1403C, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_SHORT_MULTICAST_LIST = {0xACF1403B, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_SHORT_PERMANENT_ADDR = {0xACF14039, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_FDDI_UPSTREAM_NODE_LONG = {0xACF1403E, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_DRIVER_VERSION = {0x791AD198, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_HARDWARE_STATUS = {0x791AD192, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_LINK_SPEED = {0x791AD195, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_MAC_OPTIONS = {0x791AD19A, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_MEDIA_CONNECT_STATU = {0x791AD19B, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_MEDIA_IN_USE = {0x791AD194, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_MEDIA_SUPPORTED = {0x791AD193, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_MINIMUM_LINK_SPEED = {0x791AD19D, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_RCV_PDUS_ERROR = {0x0A214808, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_RCV_PDUS_NO_BUFFER = {0x0A214809, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_RCV_PDUS_OK = {0x0A214806, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_VENDOR_DESCRIPTION = {0x791AD197, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_VENDOR_DRIVER_VERSI = {0x791AD19C, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_VENDOR_ID = {0x791AD196, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_XMIT_PDUS_ERROR = {0x0A214807, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CO_XMIT_PDUS_OK = {0x0A214805, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CURRENT_LOOKAHEAD = {0x5EC10361, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_CURRENT_PACKET_FILTER = {0x5EC10360, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_DRIVER_VERSION = {0x5EC10362, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_HARDWARE_STATUS = {0x5EC10354, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_LINK_SPEED = {0x5EC10359, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_MAC_OPTIONS = {0x5EC10365, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_MAXIMUM_FRAME_SIZE = {0x5EC10358, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_MAXIMUM_LOOKAHEAD = {0x5EC10357, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_MAXIMUM_SEND_PACKETS = {0x5EC10367, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_MAXIMUM_TOTAL_SIZE = {0x5EC10363, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_MEDIA_CONNECT_STATUS = {0x5EC10366, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_MEDIA_IN_USE = {0x5EC10356, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_MEDIA_SUPPORTED = {0x5EC10355, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_PHYSICAL_MEDIUM = {0x418CA16D, 0x3937, 0x4208, [0x94, 0x0A, 0xEC, 0x61, 0x96, 0x27, 0x80, 0x85]}; - const IID GUID_NDIS_GEN_RCV_ERROR = {0x447956FD, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_RCV_NO_BUFFER = {0x447956FE, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_RCV_OK = {0x447956FB, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_RECEIVE_BLOCK_SIZE = {0x5EC1035D, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_RECEIVE_BUFFER_SPACE = {0x5EC1035B, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_TRANSMIT_BLOCK_SIZE = {0x5EC1035C, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_TRANSMIT_BUFFER_SPACE = {0x5EC1035A, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_VENDOR_DESCRIPTION = {0x5EC1035F, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_VENDOR_DRIVER_VERSION = {0x447956F9, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_VENDOR_ID = {0x5EC1035E, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_VLAN_ID = {0x765DC702, 0xC5E8, 0x4B67, [0x84, 0x3B, 0x3F, 0x5A, 0x4F, 0xF2, 0x64, 0x8B]}; - const IID GUID_NDIS_GEN_XMIT_ERROR = {0x447956FC, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_GEN_XMIT_OK = {0x447956FA, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_LAN_CLASS = {0xAD498944, 0x762F, 0x11D0, [0x8D, 0xCB, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_NOTIFY_ADAPTER_ARRIVAL = {0x981F2D81, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_NOTIFY_ADAPTER_REMOVAL = {0x981F2D80, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_NOTIFY_BIND = {0x5413531C, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_NOTIFY_UNBIND = {0x6E3CE1EC, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_NOTIFY_VC_ARRIVAL = {0x182F9E0C, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_NOTIFY_VC_REMOVAL = {0x981F2D79, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_STATUS_LINK_SPEED_CHANGE = {0x981F2D85, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_STATUS_MEDIA_CONNECT = {0x981F2D7D, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_STATUS_MEDIA_DISCONNECT = {0x981F2D7E, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_STATUS_MEDIA_SPECIFIC_INDIC = {0x981F2D84, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_STATUS_RESET_END = {0x981F2D77, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_STATUS_RESET_START = {0x981F2D76, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; - const IID GUID_NDIS_WAKE_ON_MAGIC_PACKET_ONLY = {0xA14F1C97, 0x8839, 0x4F8A, [0x99, 0x96, 0xA2, 0x89, 0x96, 0xEB, 0xBF, 0x1D]}; - const IID GUID_NETSHELL_PROPS = {0x2D15A9A1, 0xA556, 0x4189, [0x91, 0xAD, 0x02, 0x74, 0x58, 0xF1, 0x1A, 0x07]}; - const IID GUID_NonLocalVidMemCaps = {0x86C4FA80, 0x8D84, 0x11D0, [0x94, 0xE8, 0x00, 0xC0, 0x4F, 0xC3, 0x41, 0x37]}; - const IID GUID_NOTIFICATION_CHORD = {0xD2AC289B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_NOTIFICATION_COMMAND = {0xD2AC289C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_NOTIFICATION_MEASUREANDBEAT = {0xD2AC289A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_NOTIFICATION_PERFORMANCE = {0x81F75BC5, 0x4E5D, 0x11D2, [0xBC, 0xC7, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; - const IID GUID_NOTIFICATION_SEGMENT = {0xD2AC2899, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_NULL = {0x00000000, 0x0000, 0x0000, [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; - const IID GUID_OPTIONVALUEEXCLUSIVE = {0x6650430B, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_OptSurfaceKmodeInfo = {0xE05C8472, 0x51D4, 0x11D1, [0x8C, 0xCE, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID GUID_OptSurfaceUmodeInfo = {0x9D792804, 0x5FA8, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID GUID_PathProperty = {0x0002DE80, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID GUID_PCI_BUS_INTERFACE_STANDARD = {0x496B8281, 0x6F25, 0x11D0, [0xBE, 0xAF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; - const IID GUID_PCI_DEVICE_PRESENT_INTERFACE = {0xD1B82C26, 0xBF49, 0x45EF, [0xB2, 0x16, 0x71, 0xCB, 0xD7, 0x88, 0x9B, 0x57]}; - const IID GUID_PCMCIA_BUS_INTERFACE_STANDARD = {0x76173AF0, 0xC504, 0x11D1, [0x94, 0x7F, 0x00, 0xC0, 0x4F, 0xB9, 0x60, 0xEE]}; - const IID GUID_PerfAutoDownload = {0xFB09565B, 0x3631, 0x11D2, [0xBC, 0xB8, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; - const IID GUID_PerfMasterGrooveLevel = {0xD2AC28B2, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_PerfMasterTempo = {0xD2AC28B0, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_PerfMasterVolume = {0xD2AC28B1, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_PNP_CUSTOM_NOTIFICATION = {0xACA73F8E, 0x8D23, 0x11D1, [0xAC, 0x7D, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xD0]}; - const IID GUID_PNP_POWER_NOTIFICATION = {0xC2CF0660, 0xEB7A, 0x11D1, [0xBD, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xD0]}; - const IID GUID_POV = {0xA36D02F2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_POWER_DEVICE_ENABLE = {0x827C0A6F, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; - const IID GUID_POWER_DEVICE_TIMEOUTS = {0xA45DA735, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; - const IID GUID_POWER_DEVICE_WAKE_ENABLE = {0xA9546A82, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; - const IID GUID_QOS_BESTEFFORT_BANDWIDTH = {0xED885290, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; - const IID GUID_QOS_ENABLE_AVG_STATS = {0xBAFB6D11, 0x27C4, 0x4801, [0xA4, 0x6F, 0xEF, 0x80, 0x80, 0xC1, 0x88, 0xC8]}; - const IID GUID_QOS_ENABLE_WINDOW_ADJUSTMENT = {0xAA966725, 0xD3E9, 0x4C55, [0xB3, 0x35, 0x2A, 0x00, 0x27, 0x9A, 0x1E, 0x64]}; - const IID GUID_QOS_FLOW_8021P_CONFORMING = {0x08C1E013, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; - const IID GUID_QOS_FLOW_8021P_NONCONFORMING = {0x09023F91, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; - const IID GUID_QOS_FLOW_COUNT = {0x1147F880, 0x40ED, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; - const IID GUID_QOS_FLOW_IP_CONFORMING = {0x07F99A8B, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; - const IID GUID_QOS_FLOW_IP_NONCONFORMING = {0x087A5987, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; - const IID GUID_QOS_FLOW_MODE = {0x5C82290A, 0x515A, 0x11D2, [0x8E, 0x58, 0x00, 0xC0, 0x4F, 0xC9, 0xBF, 0xCB]}; - const IID GUID_QOS_ISSLOW_FLOW = {0xABF273A4, 0xEE07, 0x11D2, [0xBE, 0x1B, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; - const IID GUID_QOS_LATENCY = {0xFC408EF0, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; - const IID GUID_QOS_MAX_OUTSTANDING_SENDS = {0x161FFA86, 0x6120, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; - const IID GUID_QOS_NON_BESTEFFORT_LIMIT = {0x185C44E0, 0x40ED, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; - const IID GUID_QOS_REMAINING_BANDWIDTH = {0xC4C51720, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; - const IID GUID_QOS_STATISTICS_BUFFER = {0xBB2C0980, 0xE900, 0x11D1, [0xB0, 0x7E, 0x00, 0x80, 0xC7, 0x13, 0x82, 0xBF]}; - const IID GUID_QOS_TIMER_RESOLUTION = {0xBA10CC88, 0xF13E, 0x11D2, [0xBE, 0x1B, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; - const IID GUID_RampForce = {0x13541C21, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_RhythmParam = {0xD2AC289F, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_RxAxis = {0xA36D02F4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_RyAxis = {0xA36D02F5, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_RzAxis = {0xA36D02E3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_SawtoothDown = {0x13541C26, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_SawtoothUp = {0x13541C25, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_SeedVariations = {0x65B76FA5, 0xFF37, 0x11D2, [0x81, 0x4E, 0x00, 0xC0, 0x4F, 0xA3, 0x6E, 0x58]}; - const IID GUID_Sine = {0x13541C23, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_Slider = {0xA36D02E4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_Spring = {0x13541C27, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_Square = {0x13541C22, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_StandardMIDIFile = {0x06621075, 0xE92E, 0x11D1, [0xA8, 0xC5, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0x6E]}; - const IID GUID_SysKeyboard = {0x6F1D2B61, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_SysKeyboardEm = {0x6F1D2B82, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_SysKeyboardEm2 = {0x6F1D2B83, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_SysMouse = {0x6F1D2B60, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_SysMouseEm = {0x6F1D2B80, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_SysMouseEm2 = {0x6F1D2B81, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_TARGET_DEVICE_QUERY_REMOVE = {0xCB3A4006, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; - const IID GUID_TARGET_DEVICE_REMOVE_CANCELLED = {0xCB3A4007, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; - const IID GUID_TARGET_DEVICE_REMOVE_COMPLETE = {0xCB3A4008, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; - const IID GUID_TempoParam = {0xD2AC28A5, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_TimeSignature = {0xD2AC28A4, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_TRANSLATOR_INTERFACE_STANDARD = {0x6C154A92, 0xAACF, 0x11D0, [0x8D, 0x2A, 0x00, 0xA0, 0xC9, 0x06, 0xB2, 0x44]}; - const IID GUID_Triangle = {0x13541C24, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID GUID_TRISTATE = {0x6650430A, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_Unknown = {0xA36D02F3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_Unload = {0xD2AC28A8, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID GUID_UserModeDriverInfo = {0xF0B0E8E2, 0x5F97, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID GUID_UserModeDriverPassword = {0x97F861B6, 0x60A1, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID GUID_VideoPortCallbacks = {0xEFD60CC1, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; - const IID GUID_VideoPortCaps = {0xEFD60CC3, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; - const IID GUID_XAxis = {0xA36D02E0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_XPOS = {0x66504306, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_XPOSPIXEL = {0x66504302, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_XSIZE = {0x66504308, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_XSIZEPIXEL = {0x66504304, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_YAxis = {0xA36D02E1, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_YPOS = {0x66504307, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_YPOSPIXEL = {0x66504303, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_YSIZE = {0x66504309, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_YSIZEPIXEL = {0x66504305, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID GUID_ZAxis = {0xA36D02E2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID GUID_ZPixelFormats = {0x93869880, 0x36CF, 0x11D1, [0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE]}; - const IID IID_AsyncIAdviseSink = {0x00000150, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_AsyncIAdviseSink2 = {0x00000151, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_AsyncIBackgroundCopyCallback = {0xCA29D251, 0xB4BB, 0x4679, [0xA3, 0xD9, 0xAE, 0x80, 0x06, 0x11, 0x9D, 0x54]}; - const IID IID_AsyncIClusCfgBaseCluster = {0xA8A5C614, 0x2518, 0x47F5, [0x96, 0xCA, 0xCA, 0xFA, 0x7F, 0xFB, 0xAF, 0x68]}; - const IID IID_AsyncIClusCfgCallback = {0xEBCE8945, 0xAC69, 0x4B3A, [0x86, 0x5D, 0xE2, 0xD4, 0xEB, 0x33, 0xE4, 0x1B]}; - const IID IID_AsyncIClusCfgClusterInfo = {0x8BDBA247, 0x04F5, 0x4114, [0x83, 0x7E, 0xB2, 0x63, 0x41, 0x2A, 0x4B, 0x64]}; - const IID IID_AsyncIClusCfgCredentials = {0x54AA9406, 0xA409, 0x4B49, [0xB3, 0x14, 0x5F, 0x0A, 0x0C, 0xE4, 0xC8, 0x8F]}; - const IID IID_AsyncIClusCfgEvictCleanup = {0x6FE3E362, 0xD373, 0x4C5F, [0xA0, 0xAF, 0x1D, 0xFE, 0x84, 0x93, 0xC6, 0x55]}; - const IID IID_AsyncIClusCfgInitialize = {0x2A0EB82E, 0xF878, 0x492A, [0x95, 0x1E, 0xAE, 0x00, 0x09, 0x18, 0xC4, 0xA6]}; - const IID IID_AsyncIClusCfgIPAddressInfo = {0xAAEAF0A5, 0xE310, 0x4604, [0xA5, 0x5E, 0x2F, 0x9D, 0xDC, 0x41, 0x57, 0xA9]}; - const IID IID_AsyncIClusCfgManagedResourceInfo = {0x73616028, 0x1243, 0x4749, [0xAD, 0x84, 0x0B, 0x5E, 0xB3, 0x58, 0xFF, 0xA0]}; - const IID IID_AsyncIClusCfgMemberSetChangeListe = {0x2B645350, 0x2643, 0x4ABC, [0xA4, 0xE5, 0x82, 0x4D, 0x88, 0x1B, 0x75, 0x82]}; - const IID IID_AsyncIClusCfgNetworkInfo = {0xED71FD2D, 0xAD02, 0x4DFC, [0xB3, 0x76, 0x5F, 0xFA, 0x5F, 0x5A, 0x7C, 0x2C]}; - const IID IID_AsyncIClusCfgNodeInfo = {0x4F3BB40B, 0xDF27, 0x40A0, [0xB3, 0x1A, 0xBA, 0x18, 0x32, 0x4C, 0xEB, 0x9D]}; - const IID IID_AsyncIClusCfgPartitionInfo = {0xEC1EBD9F, 0x5866, 0x4846, [0x89, 0x52, 0xEC, 0x36, 0xC3, 0x96, 0x1E, 0xEF]}; - const IID IID_AsyncIClusCfgResourceTypeCreate = {0x3AFCE3B9, 0x5F3E, 0x4DDF, [0xA8, 0xF4, 0x4B, 0x4F, 0xCB, 0xF2, 0x8F, 0x8F]}; - const IID IID_AsyncIClusCfgResourceTypeInfo = {0xC649A282, 0xC847, 0x4F5C, [0x98, 0x41, 0xD2, 0xF7, 0x3B, 0x5A, 0xA7, 0x1D]}; - const IID IID_AsyncIClusCfgServer = {0x2A1640AA, 0x4561, 0x4A08, [0xB5, 0xD9, 0x0A, 0xA3, 0x8C, 0x6B, 0xE6, 0x28]}; - const IID IID_AsyncIClusCfgStartupListener = {0xD282CAF0, 0x2EDE, 0x4AB9, [0xA5, 0xD5, 0xF7, 0xBD, 0xE3, 0xD2, 0x3F, 0x10]}; - const IID IID_AsyncIClusCfgStartupNotify = {0xC2B0D06A, 0x6353, 0x4EE1, [0xB2, 0x53, 0x6B, 0x0D, 0x75, 0xDB, 0x2C, 0xD3]}; - const IID IID_AsyncIEnumClusCfgIPAddresses = {0xBD5F35BA, 0x0BC0, 0x455F, [0x92, 0x6D, 0xC3, 0xD3, 0x56, 0x41, 0x94, 0x87]}; - const IID IID_AsyncIEnumClusCfgManagedResource = {0xB138483F, 0x9695, 0x4FA6, [0xA9, 0x8F, 0x0D, 0xE2, 0xFB, 0x35, 0x54, 0x49]}; - const IID IID_AsyncIEnumClusCfgNetworks = {0xF56B9B0D, 0xE7B8, 0x49EC, [0xA8, 0x43, 0x54, 0x75, 0x07, 0x6B, 0x94, 0x7D]}; - const IID IID_AsyncIEnumClusCfgPartitions = {0x4440BB6A, 0xB0AC, 0x479D, [0xB5, 0x34, 0x72, 0x65, 0xA3, 0x1D, 0x6C, 0x56]}; - const IID IID_AsyncIMultiQI = {0x000E0020, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_AsyncIPipeByte = {0xDB2F3ACB, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; - const IID IID_AsyncIPipeDouble = {0xDB2F3ACF, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; - const IID IID_AsyncIPipeLong = {0xDB2F3ACD, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; - const IID IID_AsyncIUnknown = {0x000E0000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_DFConstraint = {0x4A3DF050, 0x23BD, 0x11D2, [0x93, 0x9F, 0x00, 0xA0, 0xC9, 0x1E, 0xED, 0xBA]}; - const IID IID_DIEnumWbemClassObject = {0xCB7CA037, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID IID_DIWbemCallResult = {0xCB7CA039, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID IID_DIWbemClassObject = {0xCB7CA033, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID IID_DIWbemContext = {0xCB7CA038, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID IID_DIWbemLocator = {0xCB7CA035, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID IID_DIWbemObjectSink = {0xCB7CA036, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID IID_DIWbemQualifierSet = {0xCB7CA034, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID IID_DIWbemServices = {0xCB7CA03A, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID IID_Folder = {0xBBCBDE60, 0xC3FF, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_Folder2 = {0xF0D2D8EF, 0x3890, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; - const IID IID_Folder3 = {0xA7AE5F64, 0xC4D7, 0x4D7F, [0x93, 0x07, 0x4D, 0x24, 0xEE, 0x54, 0xB8, 0x41]}; - const IID IID_FolderItem = {0xFAC32C80, 0xCBE4, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_FolderItem2 = {0xEDC817AA, 0x92B8, 0x11D1, [0xB0, 0x75, 0x00, 0xC0, 0x4F, 0xC3, 0x3A, 0xA5]}; - const IID IID_FolderItems = {0x744129E0, 0xCBE5, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_FolderItems2 = {0xC94F0AD0, 0xF363, 0x11D2, [0xA3, 0x27, 0x00, 0xC0, 0x4F, 0x8E, 0xEC, 0x7F]}; - const IID IID_FolderItems3 = {0xEAA7C309, 0xBBEC, 0x49D5, [0x82, 0x1D, 0x64, 0xD9, 0x66, 0xCB, 0x66, 0x7F]}; - const IID IID_FolderItemVerb = {0x08EC3E00, 0x50B0, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; - const IID IID_FolderItemVerbs = {0x1F8352C0, 0x50B0, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; - const IID IID_IAccessControl = {0xEEDD23E0, 0x8410, 0x11CE, [0xA1, 0xC3, 0x08, 0x00, 0x2B, 0x2B, 0x8D, 0x8F]}; - const IID IID_IAccessible = {0x618736E0, 0x3C3D, 0x11CF, [0x81, 0x0C, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71]}; - const IID IID_IAccessibleHandler = {0x03022430, 0xABC4, 0x11D0, [0xBD, 0xE2, 0x00, 0xAA, 0x00, 0x1A, 0x19, 0x53]}; - const IID IID_IAccessor = {0x0C733A8C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IAccIdentity = {0x7852B78D, 0x1CFD, 0x41C1, [0xA6, 0x15, 0x9C, 0x0C, 0x85, 0x96, 0x0B, 0x5F]}; - const IID IID_IAccountDiscovery = {0xFA202BBC, 0x6ABE, 0x4C17, [0xB1, 0x84, 0x57, 0x0B, 0x6C, 0xF2, 0x56, 0xA6]}; - const IID IID_IAccPropServer = {0x76C0DBBB, 0x15E0, 0x4E7B, [0xB6, 0x1B, 0x20, 0xEE, 0xEA, 0x20, 0x01, 0xE0]}; - const IID IID_IAccPropServices = {0x6E26E776, 0x04F0, 0x495D, [0x80, 0xE4, 0x33, 0x30, 0x35, 0x2E, 0x31, 0x69]}; - const IID IID_IACList = {0x77A130B0, 0x94FD, 0x11D0, [0xA5, 0x44, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; - const IID IID_IACList2 = {0x470141A0, 0x5186, 0x11D2, [0xBB, 0xB6, 0x00, 0x60, 0x97, 0x7B, 0x46, 0x4C]}; - const IID IID_IActionProgress = {0x49FF1173, 0xEADC, 0x446D, [0x92, 0x85, 0x15, 0x64, 0x53, 0xA6, 0x43, 0x1C]}; - const IID IID_IActionProgressDialog = {0x49FF1172, 0xEADC, 0x446D, [0x92, 0x85, 0x15, 0x64, 0x53, 0xA6, 0x43, 0x1C]}; - const IID IID_IActiveDesktop = {0xF490EB00, 0x1240, 0x11D1, [0x98, 0x88, 0x00, 0x60, 0x97, 0xDE, 0xAC, 0xF9]}; - const IID IID_IActiveIME = {0x6FE20962, 0xD077, 0x11D0, [0x8F, 0xE7, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; - const IID IID_IActiveIME2 = {0xE1C4BF0E, 0x2D53, 0x11D2, [0x93, 0xE1, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; - const IID IID_IActiveIMMApp = {0x08C0E040, 0x62D1, 0x11D1, [0x93, 0x26, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; - const IID IID_IActiveIMMIME = {0x08C03411, 0xF96B, 0x11D0, [0xA4, 0x75, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; - const IID IID_IActiveIMMMessagePumpOwner = {0xB5CF2CFA, 0x8AEB, 0x11D1, [0x93, 0x64, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; - const IID IID_IActiveIMMRegistrar = {0xB3458082, 0xBD00, 0x11D1, [0x93, 0x9B, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; - const IID IID_IActiveScript = {0xBB1A2AE1, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID IID_IActiveScriptAuthor = {0x9C109DA0, 0x7006, 0x11D1, [0xB3, 0x6C, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xB2]}; - const IID IID_IActiveScriptAuthorProcedure = {0x7E2D4B70, 0xBD9A, 0x11D0, [0x93, 0x36, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; - const IID IID_IActiveScriptDebug = {0x51973C10, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IActiveScriptDebug32 = {0x51973C10, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IActiveScriptDebug64 = {0xBC437E23, 0xF5B8, 0x47F4, [0xBB, 0x79, 0x7D, 0x1C, 0xE5, 0x48, 0x3B, 0x86]}; - const IID IID_IActiveScriptEncode = {0xBB1A2AE3, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID IID_IActiveScriptError = {0xEAE1BA61, 0xA4ED, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID IID_IActiveScriptError64 = {0xB21FB2A1, 0x5B8F, 0x4963, [0x8C, 0x21, 0x21, 0x45, 0x0F, 0x84, 0xED, 0x7F]}; - const IID IID_IActiveScriptErrorDebug = {0x51973C12, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IActiveScriptGarbageCollector = {0x6AA2C4A0, 0x2B53, 0x11D4, [0xA2, 0xA0, 0x00, 0x10, 0x4B, 0xD3, 0x50, 0x90]}; - const IID IID_IActiveScriptHostEncode = {0xBEE9B76E, 0xCFE3, 0x11D1, [0xB7, 0x47, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; - const IID IID_IActiveScriptParse = {0xBB1A2AE2, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID IID_IActiveScriptParse32 = {0xBB1A2AE2, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID IID_IActiveScriptParse64 = {0xC7EF7658, 0xE1EE, 0x480E, [0x97, 0xEA, 0xD5, 0x2C, 0xB4, 0xD7, 0x6D, 0x17]}; - const IID IID_IActiveScriptParseProcedure = {0xAA5B6A80, 0xB834, 0x11D0, [0x93, 0x2F, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; - const IID IID_IActiveScriptParseProcedure2_32 = {0x71EE5B20, 0xFB04, 0x11D1, [0xB3, 0xA8, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xB2]}; - const IID IID_IActiveScriptParseProcedure2_64 = {0xFE7C4271, 0x210C, 0x448D, [0x9F, 0x54, 0x76, 0xDA, 0xB7, 0x04, 0x7B, 0x28]}; - const IID IID_IActiveScriptParseProcedure32 = {0xAA5B6A80, 0xB834, 0x11D0, [0x93, 0x2F, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; - const IID IID_IActiveScriptParseProcedure64 = {0xC64713B6, 0xE029, 0x4CC5, [0x92, 0x00, 0x43, 0x8B, 0x72, 0x89, 0x0B, 0x6A]}; - const IID IID_IActiveScriptParseProcedureOld = {0x1CFF0050, 0x6FDD, 0x11D0, [0x93, 0x28, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; - const IID IID_IActiveScriptParseProcedureOld32 = {0x1CFF0050, 0x6FDD, 0x11D0, [0x93, 0x28, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; - const IID IID_IActiveScriptParseProcedureOld64 = {0x21F57128, 0x08C9, 0x4638, [0xBA, 0x12, 0x22, 0xD1, 0x5D, 0x88, 0xDC, 0x5C]}; - const IID IID_IActiveScriptProperty = {0x4954E0D0, 0xFBC7, 0x11D1, [0x84, 0x10, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; - const IID IID_IActiveScriptSIPInfo = {0x764651D0, 0x38DE, 0x11D4, [0xA2, 0xA3, 0x00, 0x10, 0x4B, 0xD3, 0x50, 0x90]}; - const IID IID_IActiveScriptSite = {0xDB01A1E3, 0xA42B, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID IID_IActiveScriptSiteDebug32 = {0x51973C11, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IActiveScriptSiteDebug64 = {0xD6B96B0A, 0x7463, 0x402C, [0x92, 0xAC, 0x89, 0x98, 0x42, 0x26, 0x94, 0x2F]}; - const IID IID_IActiveScriptSiteInterruptPoll = {0x539698A0, 0xCDCA, 0x11CF, [0xA5, 0xEB, 0x00, 0xAA, 0x00, 0x47, 0xA0, 0x63]}; - const IID IID_IActiveScriptSiteWindow = {0xD10F6761, 0x83E9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID IID_IActiveScriptStats = {0xB8DA6310, 0xE19B, 0x11D0, [0x93, 0x3C, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; - const IID IID_IActiveXSafetyProvider = {0x69FF5101, 0xFC63, 0x11D0, [0x97, 0xEB, 0x00, 0xAA, 0x00, 0x61, 0x53, 0x33]}; - const IID IID_IAdapterInfo = {0x480BF94A, 0x09FD, 0x4F8A, [0xA3, 0xE0, 0xB0, 0x70, 0x02, 0x82, 0xD8, 0x4D]}; - const IID IID_IAdapterNotificationSink = {0x44AB2DC3, 0x23B2, 0x47DE, [0x82, 0x28, 0x2E, 0x1C, 0xCE, 0xEB, 0x99, 0x11]}; - const IID IID_IAddEvents = {0xD710A6AE, 0x3371, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; - const IID IID_IAddressBarParser = {0xC9D81948, 0x443A, 0x40C7, [0x94, 0x5C, 0x5E, 0x17, 0x1B, 0x8C, 0x66, 0xB4]}; - const IID IID_IAddrExclusionControl = {0x00000148, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IAddrTrackingControl = {0x00000147, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IADs = {0xFD8256D0, 0xFD15, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; - const IID IID_IADsAccessControlEntry = {0xB4F3A14C, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsAccessControlList = {0xB7EE91CC, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsAcePrivate = {0xFD145DF2, 0xFD96, 0x4135, [0x9B, 0x22, 0x68, 0xFF, 0x0F, 0x6B, 0xF5, 0xBB]}; - const IID IID_IADsAcl = {0x8452D3AB, 0x0869, 0x11D1, [0xA3, 0x77, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsADSystemInfo = {0x5BB11929, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; - const IID IID_IADsBackLink = {0xFD1302BD, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsCaseIgnoreList = {0x7B66B533, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsClass = {0xC8F93DD0, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; - const IID IID_IADsCollection = {0x72B945E0, 0x253B, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsComputer = {0xEFE3CC70, 0x1D9F, 0x11CF, [0xB1, 0xF3, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; - const IID IID_IADsComputerOperations = {0xEF497680, 0x1D9F, 0x11CF, [0xB1, 0xF3, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; - const IID IID_IADsContainer = {0x001677D0, 0xFD16, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; - const IID IID_IADsDeleteOps = {0xB2BD0902, 0x8878, 0x11D1, [0x8C, 0x21, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsDNWithBinary = {0x7E99C0A2, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; - const IID IID_IADsDNWithString = {0x370DF02E, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; - const IID IID_IADsDomain = {0x00E4C220, 0xFD16, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; - const IID IID_IADsEmail = {0x97AF011A, 0x478E, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsExtension = {0x3D35553C, 0xD2B0, 0x11D1, [0xB1, 0x7B, 0x00, 0x00, 0xF8, 0x75, 0x93, 0xA0]}; - const IID IID_IADsFaxNumber = {0xA910DEA9, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsFileService = {0xA89D1900, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsFileServiceOperations = {0xA02DED10, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsFileShare = {0xEB6DCAF0, 0x4B83, 0x11CF, [0xA9, 0x95, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsGroup = {0x27636B00, 0x410F, 0x11CF, [0xB1, 0xFF, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; - const IID IID_IADsHold = {0xB3EB3B37, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsLargeInteger = {0x9068270B, 0x0939, 0x11D1, [0x8B, 0xE1, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsLocality = {0xA05E03A2, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsMembers = {0x451A0030, 0x72EC, 0x11CF, [0xB0, 0x3B, 0x00, 0xAA, 0x00, 0x6E, 0x09, 0x75]}; - const IID IID_IADsNamespaces = {0x28B96BA0, 0xB330, 0x11CF, [0xA9, 0xAD, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsNameTranslate = {0xB1B272A3, 0x3625, 0x11D1, [0xA3, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsNetAddress = {0xB21A50A9, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsO = {0xA1CD2DC6, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsObjectOptions = {0x46F14FDA, 0x232B, 0x11D1, [0xA8, 0x08, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; - const IID IID_IADsObjOptPrivate = {0x81CBB829, 0x1867, 0x11D2, [0x92, 0x20, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; - const IID IID_IADsOctetList = {0x7B28B80F, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsOpenDSObject = {0xDDF2891E, 0x0F9C, 0x11D0, [0x8A, 0xD4, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsOU = {0xA2F733B8, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsPath = {0xB287FCD5, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsPathname = {0xD592AED4, 0xF420, 0x11D0, [0xA3, 0x6E, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsPathnameProvider = {0xAACD1D30, 0x8BD0, 0x11D2, [0x92, 0xA9, 0x00, 0xC0, 0x4F, 0x79, 0xF8, 0x34]}; - const IID IID_IADsPostalAddress = {0x7ADECF29, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsPrintJob = {0x32FB6780, 0x1ED0, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsPrintJobOperations = {0x9A52DB30, 0x1ECF, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsPrintQueue = {0xB15160D0, 0x1226, 0x11CF, [0xA9, 0x85, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsPrintQueueOperations = {0x124BE5C0, 0x156E, 0x11CF, [0xA9, 0x86, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsProperty = {0xC8F93DD3, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; - const IID IID_IADsPropertyEntry = {0x05792C8E, 0x941F, 0x11D0, [0x85, 0x29, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsPropertyList = {0xC6F602B6, 0x8F69, 0x11D0, [0x85, 0x28, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsPropertyValue = {0x79FA9AD0, 0xA97C, 0x11D0, [0x85, 0x34, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsPropertyValue2 = {0x306E831C, 0x5BC7, 0x11D1, [0xA3, 0xB8, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsReplicaPointer = {0xF60FB803, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsResource = {0x34A05B20, 0x4AAB, 0x11CF, [0xAE, 0x2C, 0x00, 0xAA, 0x00, 0x6E, 0xBF, 0xB9]}; - const IID IID_IADsSearch = {0xC69F7780, 0x4008, 0x11D0, [0xB9, 0x4C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; - const IID IID_IADsSecurityDescriptor = {0xB8C787CA, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsSecurityUtility = {0xA63251B2, 0x5F21, 0x474B, [0xAB, 0x52, 0x4A, 0x8E, 0xFA, 0xD1, 0x08, 0x95]}; - const IID IID_IADsService = {0x68AF66E0, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsServiceOperations = {0x5D7B33F0, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; - const IID IID_IADsSession = {0x398B7DA0, 0x4AAB, 0x11CF, [0xAE, 0x2C, 0x00, 0xAA, 0x00, 0x6E, 0xBF, 0xB9]}; - const IID IID_IADsSyntax = {0xC8F93DD2, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; - const IID IID_IADsTimestamp = {0xB2F5A901, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsTypedName = {0xB371A349, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; - const IID IID_IADsUmiHelperPrivate = {0x4FE243F0, 0xAD89, 0x4CBC, [0x9B, 0x14, 0x48, 0x61, 0x26, 0x44, 0x6A, 0xE0]}; - const IID IID_IADsUser = {0x3E37E320, 0x17E2, 0x11CF, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; - const IID IID_IADsValue = {0x1E3EF0AA, 0xAEF5, 0x11D0, [0x85, 0x37, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IADsWinNTSystemInfo = {0x6C6D65DC, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; - const IID IID_IAdviseSink = {0x0000010F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IAdviseSink2 = {0x00000125, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IAdviseSinkEx = {0x3AF24290, 0x0C96, 0x11CE, [0xA0, 0xCF, 0x00, 0xAA, 0x00, 0x60, 0x0A, 0xB8]}; - const IID IID_IAlertReport = {0x4E81DFE8, 0x4CA0, 0x101A, [0x82, 0x06, 0x08, 0x00, 0x2B, 0x2F, 0xC0, 0x9B]}; - const IID IID_IAlertTarget = {0x589B61C0, 0x54E6, 0x11CE, [0x94, 0xDD, 0x00, 0xAA, 0x00, 0x51, 0xE4, 0x0F]}; - const IID IID_IAlgSetup = {0xA779AF1A, 0x009A, 0x4C44, [0xB9, 0xF0, 0x8F, 0x0F, 0x4C, 0xF2, 0xAE, 0x49]}; - const IID IID_IAlterIndex = {0x0C733AA6, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IAlterTable = {0x0C733AA5, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IAnchorClick = {0x13D5413B, 0x33B9, 0x11D2, [0x95, 0xA7, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; - const IID IID_IAnimationComposer = {0x5459C83D, 0x322B, 0x44B3, [0x8D, 0xAA, 0x24, 0xC9, 0x47, 0xE7, 0xB2, 0x75]}; - const IID IID_IAnimationComposer2 = {0x1A4F0E79, 0x09CD, 0x47F3, [0xAF, 0xF1, 0x48, 0x3B, 0xF3, 0xA2, 0x22, 0xDC]}; - const IID IID_IAnimationComposerFactory = {0xBEEB3233, 0xF71F, 0x4683, [0x8B, 0x05, 0x9A, 0x53, 0x14, 0xC9, 0x7D, 0xBC]}; - const IID IID_IAnimationComposerSite = {0x488FCB56, 0x8FD6, 0x4CDA, [0xA0, 0x6A, 0x5B, 0xB2, 0x32, 0x93, 0x0E, 0xCA]}; - const IID IID_IAnimationComposerSiteFactory = {0xB4EA5681, 0xED72, 0x4EFE, [0xBB, 0xD7, 0x7C, 0x47, 0xD1, 0x32, 0x56, 0x96]}; - const IID IID_IAnimationComposerSiteSink = {0x8EF76C64, 0x71CD, 0x480F, [0x96, 0xFC, 0xBA, 0x26, 0x96, 0xE6, 0x59, 0xBE]}; - const IID IID_IAnimationFragment = {0x319DFD88, 0x0AC6, 0x4AB1, [0xA1, 0x9F, 0x90, 0x22, 0x3B, 0xA2, 0xDA, 0x16]}; - const IID IID_IAnimationRoot = {0x29DF6387, 0x30B4, 0x4A62, [0x89, 0x1B, 0xA9, 0xC5, 0xBE, 0x37, 0xBE, 0x88]}; - const IID IID_IApplicationDebugger = {0x51973C2A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IApplicationDebuggerUI = {0x51973C2B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IApplicationGateway = {0x5134842B, 0xFDCE, 0x485D, [0x93, 0xCD, 0xDE, 0x16, 0x40, 0x64, 0x3B, 0xBE]}; - const IID IID_IApplicationGatewayServices = {0x5134842A, 0xFDCE, 0x485D, [0x93, 0xCD, 0xDE, 0x16, 0x40, 0x64, 0x3B, 0xBE]}; - const IID IID_IAppPublisher = {0x07250A10, 0x9CF9, 0x11D1, [0x90, 0x76, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; - const IID IID_IAsyncBindCtx = {0x79EAC9D4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IAsyncManager = {0x0000002A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IAsyncMoniker = {0x79EAC9D3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IAsyncOperation = {0x3D8B0590, 0xF691, 0x11D2, [0x8E, 0xA9, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; - const IID IID_IAsyncRpcChannelBuffer = {0xA5029FB6, 0x3C34, 0x11D1, [0x9C, 0x99, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0xAA]}; - const IID IID_IAttributesRaw = {0x6BC096A8, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; - const IID IID_IAuditControl = {0x1DA6292F, 0xBC66, 0x11CE, [0xAA, 0xE3, 0x00, 0xAA, 0x00, 0x4C, 0x27, 0x37]}; - const IID IID_IAuthenticate = {0x79EAC9D0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IAutoComplete = {0x00BB2762, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; - const IID IID_IAutoComplete2 = {0xEAC04BC0, 0x3791, 0x11D2, [0xBB, 0x95, 0x00, 0x60, 0x97, 0x7B, 0x46, 0x4C]}; - const IID IID_IAutoCompleteDropDown = {0x3CD141F4, 0x3C6A, 0x11D2, [0xBC, 0xAA, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; - const IID IID_IAutoCompList = {0x00BB2760, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; - const IID IID_IAutoDiscoveryProvider = {0x9DCF4A37, 0x01DE, 0x4549, [0xA9, 0xCB, 0x3A, 0xC3, 0x1E, 0xC2, 0x3C, 0x4F]}; - const IID IID_IBackgroundCopyCallback = {0x97EA99C7, 0x0186, 0x4AD4, [0x8D, 0xF9, 0xC5, 0xB4, 0xE0, 0xED, 0x6B, 0x22]}; - const IID IID_IBackgroundCopyCallback1 = {0x084F6593, 0x3800, 0x4E08, [0x9B, 0x59, 0x99, 0xFA, 0x59, 0xAD, 0xDF, 0x82]}; - const IID IID_IBackgroundCopyError = {0x19C613A0, 0xFCB8, 0x4F28, [0x81, 0xAE, 0x89, 0x7C, 0x3D, 0x07, 0x8F, 0x81]}; - const IID IID_IBackgroundCopyFile = {0x01B7BD23, 0xFB88, 0x4A77, [0x84, 0x90, 0x58, 0x91, 0xD3, 0xE4, 0x65, 0x3A]}; - const IID IID_IBackgroundCopyGroup = {0x1DED80A7, 0x53EA, 0x424F, [0x8A, 0x04, 0x17, 0xFE, 0xA9, 0xAD, 0xC4, 0xF5]}; - const IID IID_IBackgroundCopyJob = {0x37668D37, 0x507E, 0x4160, [0x93, 0x16, 0x26, 0x30, 0x6D, 0x15, 0x0B, 0x12]}; - const IID IID_IBackgroundCopyJob1 = {0x59F5553C, 0x2031, 0x4629, [0xBB, 0x18, 0x26, 0x45, 0xA6, 0x97, 0x09, 0x47]}; - const IID IID_IBackgroundCopyJob2 = {0x54B50739, 0x686F, 0x45EB, [0x9D, 0xFF, 0xD6, 0xA9, 0xA0, 0xFA, 0xA9, 0xAF]}; - const IID IID_IBackgroundCopyManager = {0x5CE34C0D, 0x0DC9, 0x4C1F, [0x89, 0x7C, 0xDA, 0xA1, 0xB7, 0x8C, 0xEE, 0x7C]}; - const IID IID_IBackgroundCopyQMgr = {0x16F41C69, 0x09F5, 0x41D2, [0x8C, 0xD8, 0x3C, 0x08, 0xC4, 0x7B, 0xC8, 0xA8]}; - const IID IID_IBidiRequestSpl = {0x9C007000, 0xFFA8, 0x44FF, [0xB2, 0xB3, 0xAE, 0x91, 0x02, 0xC7, 0x4D, 0x4C]}; - const IID IID_IBindCtx = {0x0000000E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IBindEventHandler = {0x63CDBCB0, 0xC1B1, 0x11D0, [0x93, 0x36, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; - const IID IID_IBindHost = {0xFC4801A1, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID IID_IBinding = {0x79EAC9C0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IBindProtocol = {0x79EAC9CD, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IBindResource = {0x0C733AB1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IBindStatusCallback = {0x79EAC9C1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IBindStatusCallbackHolder = {0x79EAC9CC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IBindStatusCallbackMsg = {0x79EAC9D5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IBitsTest1 = {0x51A183DB, 0x67E0, 0x4472, [0x86, 0x02, 0x3D, 0xBC, 0x73, 0x0B, 0x7E, 0xF5]}; - const IID IID_IBlockFormats = {0x3050F830, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IBlockingLock = {0x30F3D47A, 0x6447, 0x11D1, [0x8E, 0x3C, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; - const IID IID_IBoundObject = {0x9BFBBC00, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IBoundObjectSite = {0x9BFBBC01, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IBriefcaseStg = {0x8BCE1FA1, 0x0921, 0x101B, [0xB1, 0xFF, 0x00, 0xDD, 0x01, 0x0C, 0xCC, 0x48]}; - const IID IID_IBurnEngine = {0x520CCA66, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID IID_ICallFactory = {0x1C733A30, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICallFrame = {0xD573B4B0, 0x894E, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; - const IID IID_ICallFrameEvents = {0xFD5E0843, 0xFC91, 0x11D0, [0x97, 0xD7, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; - const IID IID_ICallFrameWalker = {0x08B23919, 0x392D, 0x11D2, [0xB8, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; - const IID IID_ICallIndirect = {0xD573B4B1, 0x894E, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; - const IID IID_ICallInterceptor = {0x60C7CA75, 0x896D, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; - const IID IID_ICallUnmarshal = {0x5333B003, 0x2E42, 0x11D2, [0xB8, 0x9D, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; - const IID IID_ICancelMethodCalls = {0x00000029, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ICatalogFileInfo = {0x711C7600, 0x6B48, 0x11D1, [0xB4, 0x03, 0x00, 0xAA, 0x00, 0xB9, 0x2A, 0xF1]}; - const IID IID_ICategorizer = {0xA3B14589, 0x9174, 0x49A8, [0x89, 0xA3, 0x06, 0xA1, 0xAE, 0x2B, 0x9B, 0xA7]}; - const IID IID_ICategoryProvider = {0x9AF64809, 0x5864, 0x4C26, [0xA7, 0x20, 0xC1, 0xF7, 0x8C, 0x08, 0x6E, 0xE3]}; - const IID IID_ICatInformation = {0x0002E013, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ICatRegister = {0x0002E012, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ICDBurn = {0x3D73A659, 0xE5D0, 0x4D42, [0xAF, 0xC0, 0x51, 0x21, 0xBA, 0x42, 0x5C, 0x8D]}; - const IID IID_ICEnroll = {0x43F8F288, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; - const IID IID_ICEnroll2 = {0x704CA730, 0xC90B, 0x11D1, [0x9B, 0xEC, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; - const IID IID_ICEnroll3 = {0xC28C2D95, 0xB7DE, 0x11D2, [0xA4, 0x21, 0x00, 0xC0, 0x4F, 0x79, 0xFE, 0x8E]}; - const IID IID_ICEnroll4 = {0xC1F1188A, 0x2EB5, 0x4A80, [0x84, 0x1B, 0x7E, 0x72, 0x9A, 0x35, 0x6D, 0x90]}; - const IID IID_IChannelHook = {0x1008C4A0, 0x7613, 0x11CF, [0x9A, 0xF1, 0x00, 0x20, 0xAF, 0x6E, 0x72, 0xF4]}; - const IID IID_IChannelMgr = {0x85BD8E82, 0x0FBA, 0x11D1, [0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68]}; - const IID IID_IChapteredRowset = {0x0C733A93, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICheckBox = {0x3050F685, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ICiAdmin = {0xAE67C7D8, 0x85D3, 0x11D0, [0x8C, 0x45, 0x00, 0xC0, 0x4F, 0xC2, 0xDB, 0x8D]}; - const IID IID_ICiAdminParams = {0xA82D48C6, 0x3F0F, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCAdviseStatus = {0xCA05734A, 0x1218, 0x11D3, [0xAE, 0x7A, 0x00, 0xC0, 0x4F, 0x72, 0xF8, 0x31]}; - const IID IID_ICiCDeferredPropRetriever = {0xC273AF70, 0x6D72, 0x11D0, [0x8D, 0x64, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; - const IID IID_ICiCDocName = {0x76615076, 0x3C2B, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCDocNameToWorkidTranslator = {0x25FC3F54, 0x3CB4, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCDocNameToWorkidTranslatorEx = {0x7BBA76E6, 0xA0E3, 0x11D2, [0xBC, 0x5D, 0x00, 0xC0, 0x4F, 0xA3, 0x54, 0xBA]}; - const IID IID_ICiCDocStore = {0x46625468, 0x3C32, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCDocStoreEx = {0xF98282A7, 0xFA72, 0x11D1, [0x97, 0x98, 0x00, 0xC0, 0x4F, 0xC2, 0xF4, 0x10]}; - const IID IID_ICiCDocStoreLocator = {0x97EE7C06, 0x5908, 0x11D0, [0x8C, 0x9B, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCEventLogItem = {0x44CC886A, 0x4314, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCFilterClient = {0xA1E0BCB6, 0x3C24, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCFilterStatus = {0xBC5F3D60, 0x8BBC, 0x11D1, [0x8F, 0x73, 0x00, 0xA0, 0xC9, 0x19, 0x17, 0xF5]}; - const IID IID_ICiCIndexNotificationStatus = {0x5FFF3840, 0x8E76, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; - const IID IID_ICiCLangRes = {0x914C2E6C, 0x43FE, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiControl = {0x63DEB7F4, 0x3CCB, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCOpenedDoc = {0x151EDFBE, 0x3C2F, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCPropertyStorage = {0x4C46225A, 0x3CB5, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCPropRetriever = {0x77D9B2DA, 0x4401, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCQueryNotification = {0x0A9E9F6C, 0x3CE2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCQuerySession = {0xAE461FD6, 0x4E1D, 0x11D0, [0x8C, 0x94, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCResourceMonitor = {0xF700FF8E, 0x20EE, 0x11D2, [0x80, 0xF7, 0x00, 0xC0, 0x4F, 0xA3, 0x54, 0xBA]}; - const IID IID_ICiCScope = {0x1021C882, 0x3CC0, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCScopeChecker = {0x7D820C9C, 0x3CBC, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCScopeEnumerator = {0xCF8505EA, 0x3CCA, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCSecurityChecker = {0xCA130CF4, 0x3CC2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiCUserSecurity = {0x5D01D9CE, 0x3CC2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiDocChangeNotifySink = {0x8BFA1386, 0x3CE5, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiEnumWorkids = {0x77900150, 0xA09C, 0x11D0, [0xA8, 0x0D, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; - const IID IID_ICiFrameworkQuery = {0xAE67C7D9, 0x85D3, 0x11D0, [0x8C, 0x45, 0x00, 0xC0, 0x4F, 0xC2, 0xDB, 0x8D]}; - const IID IID_ICiIndexNotification = {0x4F2CD6E0, 0x8E74, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; - const IID IID_ICiIndexNotificationEntry = {0x210769D0, 0x8E75, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; - const IID IID_ICiISearchCreator = {0x7DC07FA0, 0x902E, 0x11D0, [0xA8, 0x0C, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; - const IID IID_ICiManager = {0xCF0FCF56, 0x3CCE, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiPersistIncrFile = {0x31B311E2, 0x4498, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_ICiQueryPropertyMapper = {0xD2333EB0, 0x756B, 0x11D0, [0x8D, 0x66, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; - const IID IID_ICiStartup = {0x68232CB8, 0x3CCC, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_IClassActivator = {0x00000140, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IClassFactory = {0x00000001, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IClassFactory2 = {0xB196B28F, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IClassFactoryEx = {0x342D1EA0, 0xAE25, 0x11D1, [0x89, 0xC5, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; - const IID IID_IClientCaps = {0x7E8BC44D, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; - const IID IID_IClientSecurity = {0x0000013D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IClusCfgAsyncEvictCleanup = {0x52C80B95, 0xC1AD, 0x4240, [0x8D, 0x89, 0x72, 0xE9, 0xFA, 0x84, 0x02, 0x5E]}; - const IID IID_IClusCfgBaseCluster = {0xA8A5C613, 0x2518, 0x47F5, [0x96, 0xCA, 0xCA, 0xFA, 0x7F, 0xFB, 0xAF, 0x68]}; - const IID IID_IClusCfgCallback = {0x238DCA63, 0xE2EF, 0x4F32, [0xA2, 0x4D, 0xAC, 0xBF, 0x97, 0x5B, 0xE8, 0x42]}; - const IID IID_IClusCfgCapabilities = {0xD94AB253, 0x36C7, 0x41C1, [0xB5, 0x2E, 0x26, 0xB4, 0x51, 0x97, 0x5C, 0x8D]}; - const IID IID_IClusCfgClusterConnection = {0xCE6EF90C, 0x3602, 0x41E7, [0x95, 0xBD, 0xAA, 0xFD, 0x37, 0xA6, 0x76, 0xDF]}; - const IID IID_IClusCfgClusterInfo = {0x85B4BBC0, 0xDDC4, 0x4AE7, [0x82, 0x68, 0xF4, 0x85, 0x0B, 0xB2, 0xA6, 0xEE]}; - const IID IID_IClusCfgCredentials = {0x54AA9406, 0xA409, 0x4B49, [0xB3, 0x14, 0x5F, 0x0A, 0x0C, 0xE4, 0xC8, 0x8E]}; - const IID IID_IClusCfgEvictCleanup = {0x6FE3E361, 0xD373, 0x4C5F, [0xA0, 0xAF, 0x1D, 0xFE, 0x84, 0x93, 0xC6, 0x55]}; - const IID IID_IClusCfgGroupCfg = {0xDCB6D3D2, 0xA55F, 0x49E5, [0xA6, 0x4A, 0x0C, 0xCF, 0xEB, 0x01, 0xED, 0x3A]}; - const IID IID_IClusCfgInitialize = {0x2A0EB82D, 0xF878, 0x492A, [0x95, 0x1E, 0xAE, 0x00, 0x09, 0x18, 0xC4, 0xA6]}; - const IID IID_IClusCfgIPAddressInfo = {0xAAEAF0A5, 0xE310, 0x4604, [0xA5, 0x5E, 0x2F, 0x9D, 0xDC, 0x41, 0x57, 0xA8]}; - const IID IID_IClusCfgManagedResourceCfg = {0x60300A0F, 0x77E1, 0x440C, [0xBD, 0x94, 0x6B, 0xFB, 0x0D, 0xBF, 0xDB, 0x3A]}; - const IID IID_IClusCfgManagedResourceInfo = {0xE0324847, 0x1520, 0x41B0, [0xB9, 0x60, 0x54, 0x19, 0x8D, 0xA5, 0xF8, 0xAF]}; - const IID IID_IClusCfgMemberSetChangeListener = {0x2B64534F, 0x2643, 0x4ABC, [0xA4, 0xE5, 0x82, 0x4D, 0x88, 0x1B, 0x75, 0x82]}; - const IID IID_IClusCfgNetworkInfo = {0x19FC7580, 0x950A, 0x44A6, [0x96, 0x6E, 0x74, 0xB1, 0x4B, 0x20, 0x91, 0x8F]}; - const IID IID_IClusCfgNodeInfo = {0xE4B5FA15, 0xDD07, 0x439E, [0xA6, 0x23, 0x88, 0x23, 0x52, 0x4E, 0x3D, 0x19]}; - const IID IID_IClusCfgPartitionInfo = {0xEC1EBD9F, 0x5866, 0x4846, [0x89, 0x52, 0xEC, 0x36, 0xC3, 0x96, 0x1E, 0xEE]}; - const IID IID_IClusCfgPollingCallback = {0xC72DB1FD, 0x51A2, 0x43E6, [0xB7, 0x08, 0xD9, 0xDB, 0x7D, 0xA7, 0x96, 0x30]}; - const IID IID_IClusCfgPollingCallbackInfo = {0x2AF55DA7, 0xCB6F, 0x40DE, [0xBB, 0x11, 0x66, 0x73, 0x46, 0x4B, 0x2C, 0x54]}; - const IID IID_IClusCfgResourceCreate = {0x0647B41A, 0xC777, 0x443C, [0x94, 0x32, 0x02, 0xCC, 0xCF, 0x4F, 0xF4, 0x43]}; - const IID IID_IClusCfgResourcePostCreate = {0x72A9BF54, 0x13B6, 0x451F, [0x91, 0x0D, 0x69, 0x13, 0xEB, 0xF0, 0x25, 0xAB]}; - const IID IID_IClusCfgResourcePreCreate = {0x4240F6A1, 0x9D49, 0x427E, [0x8F, 0x3D, 0x09, 0x38, 0x4E, 0x1F, 0x59, 0xE4]}; - const IID IID_IClusCfgResourceTypeCreate = {0x3AFCE3B8, 0x5F3E, 0x4DDF, [0xA8, 0xF4, 0x4B, 0x4F, 0xCB, 0xF2, 0x8F, 0x8F]}; - const IID IID_IClusCfgResourceTypeInfo = {0xC649A281, 0xC847, 0x4F5C, [0x98, 0x41, 0xD2, 0xF7, 0x3B, 0x5A, 0xA7, 0x1D]}; - const IID IID_IClusCfgResTypeServicesInitializ = {0x6E109698, 0xDFC4, 0x4471, [0xAC, 0xE1, 0x04, 0x14, 0x93, 0x1B, 0x3B, 0xB3]}; - const IID IID_IClusCfgServer = {0x4C06EAE6, 0x990E, 0x4051, [0x8A, 0xA1, 0xAD, 0x4B, 0x4E, 0xAE, 0x9C, 0xAF]}; - const IID IID_IClusCfgSetCredentials = {0x58E6E5B9, 0x4788, 0x4D9A, [0x82, 0x55, 0x1E, 0x27, 0x4E, 0x5D, 0xCC, 0xB0]}; - const IID IID_IClusCfgStartupListener = {0xD282CAEF, 0x2EDE, 0x4AB9, [0xA5, 0xD5, 0xF7, 0xBD, 0xE3, 0xD2, 0x3F, 0x0F]}; - const IID IID_IClusCfgStartupNotify = {0xC2B0D069, 0x6353, 0x4EE1, [0xB2, 0x53, 0x6B, 0x0D, 0x75, 0xDB, 0x2C, 0xD3]}; - const IID IID_IClusCfgVerify = {0xD47BBEEC, 0x2286, 0x4514, [0xAA, 0x90, 0x7E, 0x88, 0xBD, 0x0F, 0xE5, 0x43]}; - const IID IID_IClusCfgWizard = {0x2EB57A3B, 0xDA8D, 0x4B56, [0x97, 0xCF, 0xA3, 0x19, 0x1B, 0xF8, 0xFD, 0x5B]}; - const IID IID_IClusterApplicationWizard = {0x24F97151, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; - const IID IID_ICodeInstall = {0x79EAC9D1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IColumnMapper = {0x0B63E37A, 0x9CCC, 0x11D0, [0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04]}; - const IID IID_IColumnMapperCreator = {0x0B63E37B, 0x9CCC, 0x11D0, [0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04]}; - const IID IID_IColumnProvider = {0xE8025004, 0x1C42, 0x11D2, [0xBE, 0x2C, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; - const IID IID_IColumnsInfo = {0x0C733A11, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IColumnsInfo2 = {0x0C733AB8, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IColumnsRowset = {0x0C733A10, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICombobox = {0x3050F677, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ICommand = {0x0C733A63, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICommandCost = {0x0C733A4E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICommandPersist = {0x0C733AA7, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICommandPrepare = {0x0C733A26, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICommandProperties = {0x0C733A79, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICommandStream = {0x0C733ABF, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICommandText = {0x0C733A27, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICommandTree = {0x0C733A87, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICommandValidate = {0x0C733A18, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICommandWithParameters = {0x0C733A64, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICommDlgBrowser = {0x000214F1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ICommDlgBrowser2 = {0x10339516, 0x2894, 0x11D2, [0x90, 0x39, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; - const IID IID_ICommonQuery = {0xAB50DEC0, 0x6F1D, 0x11D0, [0xA1, 0xC4, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; - const IID IID_IComThreadingInfo = {0x000001CE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IConfigurationConnection = {0xDDAD8191, 0x66C5, 0x4A30, [0xA4, 0xDF, 0xCB, 0x6C, 0x21, 0x67, 0x04, 0xCA]}; - const IID IID_IConnectionInfo = {0x15182CE3, 0x82D7, 0x473F, [0x92, 0xDE, 0x70, 0x6E, 0x2B, 0xCE, 0xA9, 0x02]}; - const IID IID_IConnectionManager = {0xC0017768, 0x1BF3, 0x4352, [0x8D, 0x6C, 0x3A, 0x8C, 0x1D, 0x0F, 0xB4, 0x77]}; - const IID IID_IConnectionPoint = {0xB196B286, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IConnectionPointContainer = {0xB196B284, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IContextCallback = {0x000001DA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IContextMenu = {0x000214E4, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IContextMenu2 = {0x000214F4, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IContextMenu3 = {0xBCFCE0A0, 0xEC17, 0x11D0, [0x8D, 0x10, 0x00, 0xA0, 0xC9, 0x0F, 0x27, 0x19]}; - const IID IID_IContinue = {0x0000012A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IContinueCallback = {0xB722BCCA, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; - const IID IID_IConvertType = {0x0C733A88, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICrBarn = {0x276A2EE0, 0x0B5D, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID IID_ICrBarn2 = {0xB66A7A1B, 0x8FC6, 0x448C, [0xA2, 0xEB, 0x3C, 0x55, 0x95, 0x74, 0x78, 0xA1]}; - const IID IID_ICrBlinds = {0x5AF5C340, 0x0BA9, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID IID_ICrBlinds2 = {0x7059D403, 0x599A, 0x4264, [0x81, 0x40, 0x64, 0x1E, 0xB8, 0xAE, 0x1F, 0x64]}; - const IID IID_ICrBlur = {0x9F7C7827, 0xE87A, 0x11D1, [0x81, 0xE0, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_ICreateErrorInfo = {0x22F03340, 0x547D, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; - const IID IID_ICreateRow = {0x0C733AB2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ICreateTypeInfo = {0x00020405, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ICreateTypeInfo2 = {0x0002040E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ICreateTypeLib = {0x00020406, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ICreateTypeLib2 = {0x0002040F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ICrEmboss = {0xE4ACFB80, 0x053E, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_ICrEngrave = {0xE4ACFB7F, 0x053E, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_ICrInset = {0x05C5EE20, 0x0BA6, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID IID_ICrIris = {0x3F69F350, 0x0379, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID IID_ICrIris2 = {0xF7B06961, 0xBA8C, 0x4970, [0x91, 0x8B, 0x1C, 0x60, 0xCB, 0x9F, 0xF1, 0x80]}; - const IID IID_ICrRadialWipe = {0x424B71AE, 0x0695, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID IID_ICrSlide = {0x810E402E, 0x056B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID IID_ICrSpiral = {0x0DE527A0, 0x0C7E, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID IID_ICrStretch = {0x6684AF00, 0x0A87, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID IID_ICrWheel = {0x3943DE80, 0x1464, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID IID_ICrZigzag = {0x4E5A64A0, 0x0C8B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; - const IID IID_ICSSFilter = {0x3050F3EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ICSSFilterDispatch = {0x9519152B, 0x9484, 0x4A6C, [0xB6, 0xA7, 0x4F, 0x25, 0xE9, 0x2D, 0x6C, 0x6B]}; - const IID IID_ICSSFilterSite = {0x3050F3ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ICurrentWorkingDirectory = {0x91956D21, 0x9276, 0x11D1, [0x92, 0x1A, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; - const IID IID_ICursor = {0x9F6AA700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; - const IID IID_ICursorFind = {0xE01D7850, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; - const IID IID_ICursorMove = {0xACFF0690, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; - const IID IID_ICursorScroll = {0xBB87E420, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; - const IID IID_ICursorUpdateARow = {0xD14216A0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; - const IID IID_ICustomDoc = {0x3050F3F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ICustomRatingHelper = {0xD0D9842D, 0xE211, 0x4B2C, [0x88, 0xDC, 0xBC, 0x72, 0x93, 0x42, 0xDF, 0xCB]}; - const IID IID_IDA2Array = {0x2A8F0B06, 0xBE2B, 0x11D1, [0xB2, 0x19, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; - const IID IID_IDA2Behavior = {0xC46C1BF0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDA2Event = {0x69B5BC70, 0x9B19, 0x11D0, [0x9B, 0x60, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID IID_IDA2FontStyle = {0x283807B5, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; - const IID IID_IDA2Geometry = {0x4A933702, 0xE36F, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID IID_IDA2Image = {0x45393DF0, 0x54B9, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; - const IID IID_IDA2LineStyle = {0x2AE71568, 0x4B34, 0x11D1, [0xB1, 0xE3, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; - const IID IID_IDA2Statics = {0xD17506C2, 0x6B26, 0x11D0, [0x89, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; - const IID IID_IDA2View = {0x5F00F545, 0xDF18, 0x11D1, [0xAB, 0x6F, 0x00, 0xC0, 0x4F, 0xD9, 0x2B, 0x6B]}; - const IID IID_IDA2ViewerControl = {0xC46C1BEF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDA2ViewerControlWindowed = {0xC46C1BED, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAArray = {0xFA261CF0, 0xC44E, 0x11D1, [0x9B, 0xE4, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID IID_IDABbox2 = {0xBA8B033E, 0x1E91, 0x11D1, [0x88, 0x09, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; - const IID IID_IDABbox3 = {0x0E41257B, 0x812D, 0x11D0, [0x9B, 0x4A, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID IID_IDABehavior = {0x5DFB2651, 0x9668, 0x11D0, [0xB1, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; - const IID IID_IDABoolean = {0xC46C1BDA, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDABvrHook = {0x50B4791F, 0x4731, 0x11D0, [0x89, 0x12, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; - const IID IID_IDACamera = {0xC46C1BCA, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAColor = {0xC46C1BDC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDADashStyle = {0xF3E1B522, 0xD8A6, 0x11D1, [0x9B, 0xE5, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID IID_IDADrawingSurface = {0xC46C1BF4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDADXTransformResult = {0xAF868305, 0xAB0B, 0x11D0, [0x87, 0x6A, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; - const IID IID_IDAEndStyle = {0xB6FFC24C, 0x7E13, 0x11D0, [0x9B, 0x47, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID IID_IDAEvent = {0xC46C1BCE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAFontStyle = {0xC46C1BC1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAGeometry = {0xC46C1BCC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAImage = {0xC46C1BC4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAImport = {0xC46C1BEE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAImportationResult = {0xB90E5258, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; - const IID IID_IDAJoinStyle = {0xA3034056, 0xEC1C, 0x11D1, [0x9B, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID IID_IDALineStyle = {0x69AD90EF, 0x1C20, 0x11D1, [0x88, 0x01, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; - const IID IID_IDAMatte = {0xC46C1BE4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAMicrophone = {0xC46C1BD8, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAModifiableBehavior = {0xC46C1BEC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAMontage = {0xC46C1BC8, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDANumber = {0xD17506C3, 0x6B26, 0x11D0, [0x89, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; - const IID IID_IDAPair = {0x542FB453, 0x5003, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; - const IID IID_IDAPath2 = {0xC46C1BD0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAPickableResult = {0xC46C1BDE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAPoint2 = {0x9CDE7341, 0x3C20, 0x11D0, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; - const IID IID_IDAPoint3 = {0xC46C1BD6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAPreferences = {0xB90E525A, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; - const IID IID_IDASite = {0xB90E5259, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; - const IID IID_IDASound = {0xC46C1BE6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAStatics = {0x5DFB2650, 0x9668, 0x11D0, [0xB1, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; - const IID IID_IDAString = {0xC46C1BD2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDataAdviseHolder = {0x00000110, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDataChannel = {0xAD42D12A, 0x4AD0, 0x4856, [0x91, 0x9E, 0xE8, 0x54, 0xC9, 0x1D, 0x18, 0x56]}; - const IID IID_IDataConvert = {0x0C733A8D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDataFilter = {0x69D14C80, 0xC18E, 0x11D0, [0xA9, 0xCE, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; - const IID IID_IDataObject = {0x0000010E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDATransform2 = {0xC46C1BD4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDATransform3 = {0xC46C1BE0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDATuple = {0x542FB452, 0x5003, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; - const IID IID_IDAUntilNotifier = {0x25B0F91C, 0xD23D, 0x11D0, [0x9B, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID IID_IDAUserData = {0xBACD4D86, 0x4A4F, 0x11D1, [0x9B, 0xC8, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID IID_IDAVector2 = {0xC46C1BC6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAVector3 = {0xC46C1BE2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAView = {0xAF868304, 0xAB0B, 0x11D0, [0x87, 0x6A, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; - const IID IID_IDAViewerControl = {0xC46C1BDD, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAViewerControlWindowed = {0xC46C1BCD, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; - const IID IID_IDAViewSite = {0xBCBB1F75, 0xE384, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID IID_IDBAsynchNotify = {0x0C733A96, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDBAsynchStatus = {0x0C733A95, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDBBinderProperties = {0x0C733AB3, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDBCreateCommand = {0x0C733A1D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDBCreateSession = {0x0C733A5D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDBDataSourceAdmin = {0x0C733A7A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDBInfo = {0x0C733A89, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDBInitialize = {0x0C733A8B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDBProperties = {0x0C733A8A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDBSchemaCommand = {0x0C733A50, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDBSchemaRowset = {0x0C733A7B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDCInfo = {0x0C733A9C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IDDVideoAcceleratorContainer = {0xACA12120, 0x3356, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; - const IID IID_IDDVideoPortContainer = {0x6C142760, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; - const IID IID_IDebug = {0x00000123, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDebugApplication = {0x51973C32, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugApplication32 = {0x51973C32, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugApplication64 = {0x4DEDC754, 0x04C7, 0x4F10, [0x9E, 0x60, 0x16, 0xA3, 0x90, 0xFE, 0x6E, 0x62]}; - const IID IID_IDebugApplicationEx = {0x51973C00, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugApplicationNode = {0x51973C34, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugApplicationNodeEvents = {0x51973C35, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugApplicationThread = {0x51973C38, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugApplicationThread64 = {0x9DAC5886, 0xDBAD, 0x456D, [0x9D, 0xEE, 0x5D, 0xEC, 0x39, 0xAB, 0x3D, 0xDA]}; - const IID IID_IDebugAsyncOperation = {0x51973C1B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugAsyncOperationCallBack = {0x51973C1C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugCodeContext = {0x51973C13, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugCookie = {0x51973C39, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocument = {0x51973C21, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocumentContext = {0x51973C28, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocumentHelper32 = {0x51973C26, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocumentHelper64 = {0xC4C7363C, 0x20FD, 0x47F9, [0xBD, 0x82, 0x48, 0x55, 0xE0, 0x15, 0x08, 0x71]}; - const IID IID_IDebugDocumentHelperEx = {0x51973C02, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocumentHost = {0x51973C27, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocumentInfo = {0x51973C1F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocumentProvider = {0x51973C20, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocumentText = {0x51973C22, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocumentTextAuthor = {0x51973C24, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocumentTextEvents = {0x51973C23, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugDocumentTextExternalAuthor = {0x51973C25, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugExpression = {0x51973C14, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugExpressionCallBack = {0x51973C16, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugExpressionContext = {0x51973C15, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugExtendedProperty = {0x51973C52, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugFormatter = {0x51973C05, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugHelper = {0x51973C3F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugHelperEx = {0x51973C08, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugOut = {0xC733E4F1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_IDebugProperty = {0x51973C50, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugPropertyEnumType_All = {0x51973C55, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugPropertyEnumType_Arguments = {0x51973C57, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugPropertyEnumType_Locals = {0x51973C56, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugPropertyEnumType_LocalsPlus = {0x51973C58, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugPropertyEnumType_Registers = {0x51973C59, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugRegister = {0xC733E4F0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_IDebugSessionProvider = {0x51973C29, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugSessionProviderEx = {0x51973C09, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugSetValueCallback = {0x51973C06, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugStackFrame = {0x51973C17, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugStackFrameSniffer = {0x51973C18, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugStackFrameSnifferEx = {0x51973C19, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugStackFrameSnifferEx32 = {0x51973C19, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugStackFrameSnifferEx64 = {0x8CD12AF4, 0x49C1, 0x4D52, [0x8D, 0x8A, 0xC1, 0x46, 0xF4, 0x75, 0x81, 0xAA]}; - const IID IID_IDebugStream = {0x00000124, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDebugSyncOperation = {0x51973C1A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugThreadCall = {0x51973C36, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugThreadCall32 = {0x51973C36, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IDebugThreadCall64 = {0xCB3FA335, 0xE979, 0x42FD, [0x9F, 0xCF, 0xA7, 0x54, 0x6A, 0x0F, 0x39, 0x05]}; - const IID IID_IDelaydC = {0xBFF9C030, 0xB58F, 0x11CE, [0xB5, 0xB0, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; - const IID IID_IDelayedRelease = {0x000214ED, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDelegateFolder = {0xADD8BA80, 0x002B, 0x11D0, [0x8F, 0x0F, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; - const IID IID_IDeskBand = {0xEB0FE172, 0x1A3A, 0x11D0, [0x89, 0xB3, 0x00, 0xA0, 0xC9, 0x0A, 0x90, 0xAC]}; - const IID IID_IDeviceRect = {0x3050F6D5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IDfReserved1 = {0x00000013, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDfReserved2 = {0x00000014, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDfReserved3 = {0x00000015, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDialBranding = {0x8AECAFA9, 0x4306, 0x43CC, [0x8C, 0x5A, 0x76, 0x5F, 0x29, 0x79, 0xCC, 0x16]}; - const IID IID_IDialEngine = {0x39FD782B, 0x7905, 0x40D5, [0x91, 0x48, 0x3C, 0x9B, 0x19, 0x04, 0x23, 0xD5]}; - const IID IID_IDialEventSink = {0x2D86F4FF, 0x6E2D, 0x4488, [0xB2, 0xE9, 0x69, 0x34, 0xAF, 0xD4, 0x1B, 0xEA]}; - const IID IID_IDifferencing = {0x994F0AF0, 0x2977, 0x11CE, [0xBB, 0x80, 0x08, 0x00, 0x2B, 0x36, 0xB2, 0xB0]}; - const IID IID_IDirect3D = {0x3BBA0080, 0x2421, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; - const IID IID_IDirect3D2 = {0x6AAE1EC1, 0x662A, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; - const IID IID_IDirect3D3 = {0xBB223240, 0xE72B, 0x11D0, [0xA9, 0xB4, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E]}; - const IID IID_IDirect3D7 = {0xF5049E77, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID IID_IDirect3DDevice = {0x64108800, 0x957D, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; - const IID IID_IDirect3DDevice2 = {0x93281501, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; - const IID IID_IDirect3DDevice3 = {0xB0AB3B60, 0x33D7, 0x11D1, [0xA9, 0x81, 0x00, 0xC0, 0x4F, 0xD7, 0xB1, 0x74]}; - const IID IID_IDirect3DDevice7 = {0xF5049E79, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID IID_IDirect3DExecuteBuffer = {0x4417C145, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; - const IID IID_IDirect3DHALDevice = {0x84E63DE0, 0x46AA, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; - const IID IID_IDirect3DLight = {0x4417C142, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; - const IID IID_IDirect3DMaterial = {0x4417C144, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; - const IID IID_IDirect3DMaterial2 = {0x93281503, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; - const IID IID_IDirect3DMaterial3 = {0xCA9C46F4, 0xD3C5, 0x11D1, [0xB7, 0x5A, 0x00, 0x60, 0x08, 0x52, 0xB3, 0x12]}; - const IID IID_IDirect3DMMXDevice = {0x881949A1, 0xD6F3, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; - const IID IID_IDirect3DNullDevice = {0x8767DF22, 0xBACC, 0x11D1, [0x89, 0x69, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID IID_IDirect3DRampDevice = {0xF2086B20, 0x259F, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; - const IID IID_IDirect3DRefDevice = {0x50936643, 0x13E9, 0x11D1, [0x89, 0xAA, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; - const IID IID_IDirect3DRGBDevice = {0xA4665C60, 0x2673, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; - const IID IID_IDirect3DRM = {0x2BC49361, 0x8327, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRM2 = {0x4516ECC8, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRM3 = {0x4516EC83, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRMAnimation = {0xEB16CB0D, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMAnimation2 = {0xFF6B7F77, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; - const IID IID_IDirect3DRMAnimationArray = {0xD5F1CAE0, 0x4BD7, 0x11D1, [0xB9, 0x74, 0x00, 0x60, 0x08, 0x3E, 0x45, 0xF3]}; - const IID IID_IDirect3DRMAnimationSet = {0xEB16CB0E, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMAnimationSet2 = {0xFF6B7F79, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; - const IID IID_IDirect3DRMClippedVisual = {0x5434E733, 0x6D66, 0x11D1, [0xBB, 0x0B, 0x00, 0x00, 0xF8, 0x75, 0x86, 0x5A]}; - const IID IID_IDirect3DRMDevice = {0xE9E19280, 0x6E05, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMDevice2 = {0x4516EC78, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRMDevice3 = {0x549F498B, 0xBFEB, 0x11D1, [0x8E, 0xD8, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x82]}; - const IID IID_IDirect3DRMDeviceArray = {0xEB16CB10, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMFace = {0xEB16CB07, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMFace2 = {0x4516EC81, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRMFaceArray = {0xEB16CB17, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMFrame = {0xEB16CB03, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMFrame2 = {0xC3DFBD60, 0x3988, 0x11D0, [0x9E, 0xC2, 0x00, 0x00, 0xC0, 0x29, 0x1A, 0xC3]}; - const IID IID_IDirect3DRMFrame3 = {0xFF6B7F70, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; - const IID IID_IDirect3DRMFrameArray = {0xEB16CB12, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMInterpolator = {0x242F6BC1, 0x3849, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRMLight = {0xEB16CB08, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMLightArray = {0xEB16CB14, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMMaterial = {0xEB16CB0B, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMMaterial2 = {0xFF6B7F75, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; - const IID IID_IDirect3DRMMesh = {0xA3A80D01, 0x6E12, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMMeshBuilder = {0xA3A80D02, 0x6E12, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMMeshBuilder2 = {0x4516EC77, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRMMeshBuilder3 = {0x4516EC82, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRMObject = {0xEB16CB00, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMObject2 = {0x4516EC7C, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRMObjectArray = {0x242F6BC2, 0x3849, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRMPicked2Array = {0x4516EC7B, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRMPickedArray = {0xEB16CB16, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMProgressiveMesh = {0x4516EC79, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; - const IID IID_IDirect3DRMShadow = {0xAF359780, 0x6BA3, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMShadow2 = {0x86B44E25, 0x9C82, 0x11D1, [0xBB, 0x0B, 0x00, 0xA0, 0xC9, 0x81, 0xA0, 0xA6]}; - const IID IID_IDirect3DRMTexture = {0xEB16CB09, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMTexture2 = {0x120F30C0, 0x1629, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; - const IID IID_IDirect3DRMTexture3 = {0xFF6B7F73, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; - const IID IID_IDirect3DRMUserVisual = {0x59163DE0, 0x6D43, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMViewport = {0xEB16CB02, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMViewport2 = {0x4A1B1BE6, 0xBFED, 0x11D1, [0x8E, 0xD8, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x82]}; - const IID IID_IDirect3DRMViewportArray = {0xEB16CB11, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMVisual = {0xEB16CB04, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMVisualArray = {0xEB16CB13, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMWinDevice = {0xC5016CC0, 0xD273, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DRMWrap = {0xEB16CB0A, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; - const IID IID_IDirect3DTexture = {0x2CDCD9E0, 0x25A0, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; - const IID IID_IDirect3DTexture2 = {0x93281502, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; - const IID IID_IDirect3DTnLHalDevice = {0xF5049E78, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID IID_IDirect3DVertexBuffer = {0x7A503555, 0x4A83, 0x11D1, [0xA5, 0xDB, 0x00, 0xA0, 0xC9, 0x03, 0x67, 0xF8]}; - const IID IID_IDirect3DVertexBuffer7 = {0xF5049E7D, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID IID_IDirect3DViewport = {0x4417C146, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; - const IID IID_IDirect3DViewport2 = {0x93281500, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; - const IID IID_IDirect3DViewport3 = {0xB0AB3B61, 0x33D7, 0x11D1, [0xA9, 0x81, 0x00, 0xC0, 0x4F, 0xD7, 0xB1, 0x74]}; - const IID IID_IDirectDraw = {0x6C14DB80, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; - const IID IID_IDirectDraw2 = {0xB3A6F3E0, 0x2B43, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; - const IID IID_IDirectDraw4 = {0x9C59509A, 0x39BD, 0x11D1, [0x8C, 0x4A, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; - const IID IID_IDirectDraw7 = {0x15E65EC0, 0x3B9C, 0x11D2, [0xB9, 0x2F, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; - const IID IID_IDirectDrawClipper = {0x6C14DB85, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; - const IID IID_IDirectDrawColorControl = {0x4B9F0EE0, 0x0D7E, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; - const IID IID_IDirectDrawFactory2 = {0x89B2C488, 0x4AF4, 0x11D1, [0x8C, 0x4C, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; - const IID IID_IDirectDrawGammaControl = {0x69C11C3E, 0xB46B, 0x11D1, [0xAD, 0x7A, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; - const IID IID_IDirectDrawKernel = {0x8D56C120, 0x6A08, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; - const IID IID_IDirectDrawOptSurface = {0x51191F1E, 0x4F2B, 0x11D1, [0x8C, 0xC3, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; - const IID IID_IDirectDrawPalette = {0x6C14DB84, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; - const IID IID_IDirectDrawPalette2 = {0xC03C477E, 0x6519, 0x11D1, [0x8C, 0x52, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; - const IID IID_IDirectDrawSurface = {0x6C14DB81, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; - const IID IID_IDirectDrawSurface2 = {0x57805885, 0x6EEC, 0x11CF, [0x94, 0x41, 0xA8, 0x23, 0x03, 0xC1, 0x0E, 0x27]}; - const IID IID_IDirectDrawSurface3 = {0xDA044E00, 0x69B2, 0x11D0, [0xA1, 0xD5, 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xBB]}; - const IID IID_IDirectDrawSurface4 = {0x0B2B8630, 0xAD35, 0x11D0, [0x8E, 0xA6, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; - const IID IID_IDirectDrawSurface7 = {0x06675A80, 0x3B9B, 0x11D2, [0xB9, 0x2F, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; - const IID IID_IDirectDrawSurfaceKernel = {0x60755DA0, 0x6A40, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; - const IID IID_IDirectDrawVideoAccelerator = {0xC9B2D740, 0x3356, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; - const IID IID_IDirectDrawVideoPort = {0xB36D93E0, 0x2B43, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; - const IID IID_IDirectInput2A = {0x5944E662, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IDirectInput2W = {0x5944E663, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IDirectInput7A = {0x9A4CB684, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; - const IID IID_IDirectInput7W = {0x9A4CB685, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; - const IID IID_IDirectInputA = {0x89521360, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IDirectInputDevice2A = {0x5944E682, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IDirectInputDevice2W = {0x5944E683, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IDirectInputDevice7A = {0x57D7C6BC, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; - const IID IID_IDirectInputDevice7W = {0x57D7C6BD, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; - const IID IID_IDirectInputDeviceA = {0x5944E680, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IDirectInputDeviceW = {0x5944E681, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IDirectInputEffect = {0xE7E1F7C0, 0x88D2, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID IID_IDirectInputEffectDriver = {0x02538130, 0x898F, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; - const IID IID_IDirectInputJoyConfig = {0x1DE12AB1, 0xC9F5, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IDirectInputPIDDriver = {0xEEC6993A, 0xB3FD, 0x11D2, [0xA9, 0x16, 0x00, 0xC0, 0x4F, 0xB9, 0x86, 0x38]}; - const IID IID_IDirectInputW = {0x89521361, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IDirectMusic = {0x6536115A, 0x7B2D, 0x11D2, [0xBA, 0x18, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID IID_IDirectMusic2 = {0x6FC2CAE1, 0xBC78, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; - const IID IID_IDirectMusicBand = {0xD2AC28C0, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicBuffer = {0xD2AC2878, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicChordMap = {0xD2AC28BE, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicCollection = {0xD2AC287C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicComposer = {0xD2AC28BF, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicDownload = {0xD2AC287B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicDownloadedInstrument = {0xD2AC287E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicGetLoader = {0x68A04844, 0xD13D, 0x11D1, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; - const IID IID_IDirectMusicGraph = {0x2BEFC277, 0x5497, 0x11D2, [0xBC, 0xCB, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; - const IID IID_IDirectMusicInstrument = {0xD2AC287D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicLoader = {0x2FFAACA2, 0x5DCA, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; - const IID IID_IDirectMusicObject = {0xD2AC28B5, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicPerformance = {0x07D43D03, 0x6523, 0x11D2, [0x87, 0x1D, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicPerformance2 = {0x6FC2CAE0, 0xBC78, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; - const IID IID_IDirectMusicPort = {0x08F2D8C9, 0x37C2, 0x11D2, [0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID IID_IDirectMusicPortDownload = {0xD2AC287A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicSegment = {0xF96029A2, 0x4282, 0x11D2, [0x87, 0x17, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicSegment2 = {0xD38894D1, 0xC052, 0x11D2, [0x87, 0x2F, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicSegmentState = {0xA3AFDCC7, 0xD3EE, 0x11D1, [0xBC, 0x8D, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; - const IID IID_IDirectMusicStyle = {0xD2AC28BD, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicThru = {0xCED153E7, 0x3606, 0x11D2, [0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; - const IID IID_IDirectMusicTool = {0xD2AC28BA, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectMusicTrack = {0xF96029A1, 0x4282, 0x11D2, [0x87, 0x17, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; - const IID IID_IDirectoryObject = {0xE798DE2C, 0x22E4, 0x11D0, [0x84, 0xFE, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IDirectorySchemaMgmt = {0x75DB3B9C, 0xA4D8, 0x11D0, [0xA7, 0x9C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; - const IID IID_IDirectorySearch = {0x109BA8EC, 0x92F0, 0x11D0, [0xA7, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; - const IID IID_IDirectPlay = {0x5454E9A0, 0xDB65, 0x11CE, [0x92, 0x1C, 0x00, 0xAA, 0x00, 0x6C, 0x49, 0x72]}; - const IID IID_IDirectPlay2 = {0x2B74F7C0, 0x9154, 0x11CF, [0xA9, 0xCD, 0x00, 0xAA, 0x00, 0x68, 0x86, 0xE3]}; - const IID IID_IDirectPlay2A = {0x9D460580, 0xA822, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0x53, 0x4E, 0x82]}; - const IID IID_IDirectPlay3 = {0x133EFE40, 0x32DC, 0x11D0, [0x9C, 0xFB, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; - const IID IID_IDirectPlay3A = {0x133EFE41, 0x32DC, 0x11D0, [0x9C, 0xFB, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; - const IID IID_IDirectPlay4 = {0x0AB1C530, 0x4745, 0x11D1, [0xA7, 0xA1, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; - const IID IID_IDirectPlay4A = {0x0AB1C531, 0x4745, 0x11D1, [0xA7, 0xA1, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; - const IID IID_IDirectPlayLobby = {0xAF465C71, 0x9588, 0x11CF, [0xA0, 0x20, 0x00, 0xAA, 0x00, 0x61, 0x57, 0xAC]}; - const IID IID_IDirectPlayLobby2 = {0x0194C220, 0xA303, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID IID_IDirectPlayLobby2A = {0x1BB4AF80, 0xA303, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; - const IID IID_IDirectPlayLobby3 = {0x2DB72490, 0x652C, 0x11D1, [0xA7, 0xA8, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; - const IID IID_IDirectPlayLobby3A = {0x2DB72491, 0x652C, 0x11D1, [0xA7, 0xA8, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; - const IID IID_IDirectPlayLobbyA = {0x26C66A70, 0xB367, 0x11CF, [0xA0, 0x24, 0x00, 0xAA, 0x00, 0x61, 0x57, 0xAC]}; - const IID IID_IDirectSound = {0x279AFA83, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; - const IID IID_IDirectSound3DBuffer = {0x279AFA86, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; - const IID IID_IDirectSound3DListener = {0x279AFA84, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; - const IID IID_IDirectSoundBuffer = {0x279AFA85, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; - const IID IID_IDirectSoundCapture = {0xB0210781, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; - const IID IID_IDirectSoundCaptureBuffer = {0xB0210782, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; - const IID IID_IDirectSoundNotify = {0xB0210783, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; - const IID IID_IDirectWriterLock = {0x0E6D4D92, 0x6738, 0x11CF, [0x96, 0x08, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; - const IID IID_IDirectXFile = {0x3D82AB40, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID IID_IDirectXFileBinary = {0x3D82AB46, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID IID_IDirectXFileData = {0x3D82AB44, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID IID_IDirectXFileDataReference = {0x3D82AB45, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID IID_IDirectXFileEnumObject = {0x3D82AB41, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID IID_IDirectXFileObject = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID IID_IDirectXFileSaveObject = {0x3D82AB42, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID IID_IDiscardableBrowserProperty = {0x49C3DE7C, 0xD329, 0x11D0, [0xAB, 0x73, 0x00, 0xC0, 0x4F, 0xC3, 0x3E, 0x80]}; - const IID IID_IDiscMaster = {0x520CCA62, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID IID_IDiscMasterProgressEvents = {0xEC9E51C1, 0x4E5D, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID IID_IDiscRecorder = {0x85AC9776, 0xCA88, 0x4CF2, [0x89, 0x4E, 0x09, 0x59, 0x8C, 0x07, 0x8A, 0x41]}; - const IID IID_IDiscStash = {0x520CCA64, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID IID_IDispatch = {0x00020400, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDispatchEx = {0xA6EF9860, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; - const IID IID_IDispError = {0xA6EF9861, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; - const IID IID_IDisplayPointer = {0x3050F69E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IDisplayServices = {0x3050F69D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IDithererImpl = {0x7C48E840, 0x3910, 0x11D0, [0x86, 0xFC, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; - const IID IID_IDocHostShowUI = {0xC4D244B0, 0xD43E, 0x11CF, [0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A]}; - const IID IID_IDocHostUIHandler = {0xBD3F23C0, 0xD43E, 0x11CF, [0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A]}; - const IID IID_IDocHostUIHandler2 = {0x3050F6D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IDockingWindow = {0x012DD920, 0x7B26, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; - const IID IID_IDockingWindowFrame = {0x47D2657A, 0x7B27, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; - const IID IID_IDockingWindowSite = {0x2A342FC2, 0x7B26, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; - const IID IID_IDoTask = {0x0230C9F8, 0xEE7F, 0x4307, [0x98, 0xDB, 0x72, 0x6E, 0xBC, 0xAE, 0x55, 0xD6]}; - const IID IID_IDownloadBehavior = {0x3050F5BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IDownloadManager = {0x988934A4, 0x064B, 0x11D3, [0xBB, 0x80, 0x00, 0x10, 0x4B, 0x35, 0xE7, 0xF9]}; - const IID IID_IDownloadNotify = {0xCAEB5D28, 0xAE4C, 0x11D1, [0xBA, 0x40, 0x00, 0xC0, 0x4F, 0xB9, 0x2D, 0x79]}; - const IID IID_IDragSourceHelper = {0xDE5BF786, 0x477A, 0x11D2, [0x83, 0x9D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; - const IID IID_IDropSource = {0x00000121, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDropTarget = {0x00000122, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IDropTargetHelper = {0x4657278B, 0x411B, 0x11D2, [0x83, 0x9A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; - const IID IID_IDsBrowseDomainTree = {0x7CABCF1E, 0x78F5, 0x11D2, [0x96, 0x0C, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; - const IID IID_IDsQueryColumnHandler = {0xC072999E, 0xFA49, 0x11D1, [0xA0, 0xAF, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; - const IID IID_IDummy = {0x0D7CA54A, 0xD252, 0x4FCB, [0x91, 0x04, 0xF6, 0xDD, 0xD3, 0x10, 0xB3, 0xF9]}; - const IID IID_IDummyHICONIncluder = {0x947990DE, 0xCC28, 0x11D2, [0xA0, 0xF7, 0x00, 0x80, 0x5F, 0x85, 0x8F, 0xB1]}; - const IID IID_IDX2D = {0x9EFD02A9, 0xA996, 0x11D1, [0x81, 0xC9, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_IDX2DDebug = {0x03BB2457, 0xA279, 0x11D1, [0x81, 0xC6, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_IDXARGBReadPtr = {0xEAAAC2D6, 0xC290, 0x11D1, [0x90, 0x5D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXARGBReadWritePtr = {0xEAAAC2D7, 0xC290, 0x11D1, [0x90, 0x5D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXARGBSurfaceInit = {0x9EA3B63A, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXBaseObject = {0x17B59B2B, 0x9CC8, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXBasicImage = {0x16B280C7, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXDCLock = {0x0F619456, 0xCF39, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXDLUTBuilder = {0x73068231, 0x35EE, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_IDXDMapper = {0x7FD9088B, 0x35ED, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_IDXEffect = {0xE31FB81B, 0x1335, 0x11D1, [0x81, 0x89, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_IDXGradient = {0xB2024B51, 0xEE77, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXGradient2 = {0xD0EF2A80, 0x61DC, 0x11D2, [0xB2, 0xEB, 0x00, 0xA0, 0xC9, 0x36, 0xB2, 0x12]}; - const IID IID_IDXLookupTable = {0x01BAFC7F, 0x9E63, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXLUTBuilder = {0xF4370FC1, 0xCADB, 0x11D0, [0xB5, 0x2C, 0x00, 0xA0, 0xC9, 0x05, 0x43, 0x73]}; - const IID IID_IDXMapper = {0x555278E5, 0x05DB, 0x11D1, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; - const IID IID_IDXPixelate = {0xD33E180F, 0xFBE9, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXRasterizer = {0x9EA3B635, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXRawSurface = {0x09756C8A, 0xD96A, 0x11D1, [0x90, 0x62, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXSurface = {0xB39FD73F, 0xE139, 0x11D1, [0x90, 0x65, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXSurfaceFactory = {0x144946F5, 0xC4D4, 0x11D1, [0x81, 0xD1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_IDXSurfaceInit = {0x9EA3B639, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXSurfaceModifier = {0x9EA3B637, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXSurfacePick = {0x30A5FB79, 0xE11F, 0x11D1, [0x90, 0x64, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXTAlpha = {0x1D4637E0, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID IID_IDXTAlphaImageLoader = {0xA5F2D3E8, 0x7A7E, 0x48E5, [0xBC, 0x75, 0x40, 0x79, 0x0B, 0xE4, 0xA9, 0x41]}; - const IID IID_IDXTaskManager = {0x254DBBC1, 0xF922, 0x11D0, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; - const IID IID_IDXTBindHost = {0xD26BCE55, 0xE9DC, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXTCheckerBoard = {0xAD3C2576, 0x117C, 0x4510, [0x84, 0xDD, 0xB6, 0x68, 0x97, 0x1D, 0xCF, 0xD1]}; - const IID IID_IDXTChroma = {0x1D4637E2, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID IID_IDXTClipOrigin = {0xEE1663D8, 0x0988, 0x4C48, [0x9F, 0xD6, 0xDB, 0x44, 0x50, 0x88, 0x56, 0x68]}; - const IID IID_IDXTComposite = {0x9A43A843, 0x0831, 0x11D1, [0x81, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_IDXTConvolution = {0x7BA7F8AF, 0xE5EA, 0x11D1, [0x81, 0xDD, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_IDXTDropShadow = {0x1D4637E3, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID IID_IDXTFade = {0x16B280C4, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXTFilter = {0x6187E5A2, 0xA445, 0x4608, [0x8F, 0xC0, 0xBE, 0x7A, 0x6C, 0x8D, 0xB3, 0x86]}; - const IID IID_IDXTFilterBehavior = {0x14D7DDDD, 0xACA2, 0x4E45, [0x95, 0x04, 0x38, 0x08, 0xAB, 0xEB, 0x4F, 0x92]}; - const IID IID_IDXTFilterBehaviorSite = {0x909B23C2, 0x9018, 0x499F, [0xA8, 0x6D, 0x4E, 0x7D, 0xA9, 0x37, 0xE9, 0x31]}; - const IID IID_IDXTFilterCollection = {0x22B07B33, 0x8BFB, 0x49D4, [0x9B, 0x90, 0x09, 0x38, 0x37, 0x0C, 0x90, 0x19]}; - const IID IID_IDXTFilterController = {0x5CF315F2, 0x273D, 0x47B6, [0xB9, 0xED, 0xF7, 0x5D, 0xC3, 0xB0, 0x15, 0x0B]}; - const IID IID_IDXTGlow = {0x1D4637E4, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID IID_IDXTGradientD = {0x623E2881, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; - const IID IID_IDXTGridSize = {0xD6BBE91E, 0xFF60, 0x11D2, [0x8F, 0x6E, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x74]}; - const IID IID_IDXTICMFilter = {0x734321ED, 0x1E7B, 0x4E1C, [0xBB, 0xFA, 0x89, 0xC8, 0x19, 0x80, 0x0E, 0x2F]}; - const IID IID_IDXTLabel = {0xC0C17F0E, 0xAE41, 0x11D1, [0x9A, 0x3B, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; - const IID IID_IDXTLight = {0xF9EFBEC1, 0x4302, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID IID_IDXTMask = {0xA1067146, 0xB063, 0x47D7, [0xA5, 0x4A, 0x2C, 0x23, 0x09, 0xE9, 0x88, 0x9D]}; - const IID IID_IDXTMatrix = {0xAC66A493, 0x0F0C, 0x4C76, [0x82, 0x5C, 0x9D, 0x68, 0xBE, 0xDE, 0x91, 0x88]}; - const IID IID_IDXTMetaBurnFilm = {0x107045D0, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaCenterPeel = {0xAA0D4D0B, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID IID_IDXTMetaColorFade = {0x2A54C907, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaFlowMotion = {0x2A54C90A, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaGriddler = {0x2A54C910, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaGriddler2 = {0x2A54C912, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaJaws = {0x2A54C903, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaLightWipe = {0x107045C7, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaLiquid = {0xAA0D4D09, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID IID_IDXTMetaPageTurn = {0xAA0D4D07, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID IID_IDXTMetaPeelPiece = {0xAA0D4D0F, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID IID_IDXTMetaPeelSmall = {0xAA0D4D0D, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID IID_IDXTMetaPeelSplit = {0xAA0D4D11, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID IID_IDXTMetaRadialScaleWipe = {0x107045C9, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaRipple = {0xAA0D4D02, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID IID_IDXTMetaRoll = {0x9C61F46D, 0x0530, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; - const IID IID_IDXTMetaThreshold = {0x2A54C914, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaTwister = {0x107045CE, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaVacuum = {0x2A54C90C, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaWater = {0x107045C4, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaWhiteOut = {0x107045CB, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; - const IID IID_IDXTMetaWormHole = {0x0E6AE021, 0x0C83, 0x11D2, [0x8C, 0xD4, 0x00, 0x10, 0x4B, 0xC7, 0x5D, 0x9A]}; - const IID IID_IDXTMotionBlur = {0x089057BE, 0xD3F5, 0x4A2C, [0xB1, 0x0A, 0xA5, 0x13, 0x01, 0x84, 0xA0, 0xF7]}; - const IID IID_IDXTRandomBars = {0x8A6D2022, 0x4A8F, 0x4EB9, [0xBB, 0x25, 0xAA, 0x05, 0x20, 0x1F, 0x9C, 0x84]}; - const IID IID_IDXTransform = {0x30A5FB78, 0xE11F, 0x11D1, [0x90, 0x64, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXTransformFactory = {0x6A950B2B, 0xA971, 0x11D1, [0x81, 0xC8, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_IDXTRedirect = {0x02F5140B, 0x626F, 0x4019, [0x9C, 0x9E, 0x2D, 0xAA, 0x1E, 0x93, 0xE8, 0xFC]}; - const IID IID_IDXTRedirectFilterInit = {0xD1A57094, 0x21F7, 0x4E6C, [0x93, 0xE5, 0xF5, 0xF7, 0x7F, 0x74, 0x82, 0x93]}; - const IID IID_IDXTRevealTrans = {0xB8095006, 0xA128, 0x464B, [0x8B, 0x2D, 0x90, 0x58, 0x0A, 0xEE, 0x2B, 0x05]}; - const IID IID_IDXTScale = {0xB39FD742, 0xE139, 0x11D1, [0x90, 0x65, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXTScaleOutput = {0xB2024B50, 0xEE77, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; - const IID IID_IDXTShadow = {0x1D4637E6, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID IID_IDXTStrips = {0xA83C9B5C, 0xFB11, 0x4AF5, [0x8F, 0x65, 0xD0, 0x3F, 0x15, 0x1D, 0x3E, 0xD5]}; - const IID IID_IDXTWave = {0x1D4637E7, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; - const IID IID_IDXTWipe = {0xAF279B2F, 0x86EB, 0x11D1, [0x81, 0xBF, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID IID_IDXTWipe2 = {0xE1FF8091, 0x442B, 0x4801, [0x88, 0xB6, 0x2B, 0x47, 0xB1, 0x61, 0x1F, 0xD2]}; - const IID IID_IDynamicPortMapping = {0x4FC80282, 0x23B6, 0x4378, [0x9A, 0x27, 0xCD, 0x8F, 0x17, 0xC9, 0x40, 0x0C]}; - const IID IID_IDynamicPortMappingCollection = {0xB60DE00F, 0x156E, 0x4E8D, [0x9E, 0xC1, 0x3A, 0x23, 0x42, 0xC1, 0x08, 0x99]}; - const IID IID_IEditDebugServices = {0x3050F60B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementAdorner = {0x3050F607, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehavior = {0x3050F425, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorCategory = {0x3050F4ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorFactory = {0x3050F429, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorFocus = {0x3050F6B6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorLayout = {0x3050F6BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorLayout2 = {0x3050F846, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorRender = {0x3050F4AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorSite = {0x3050F427, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorSiteCategory = {0x3050F4EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorSiteLayout = {0x3050F6B7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorSiteLayout2 = {0x3050F847, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorSiteOM = {0x3050F489, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorSiteOM2 = {0x3050F659, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorSiteRender = {0x3050F4A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorSubmit = {0x3050F646, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementBehaviorUI = {0x3050F4BF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementNamespace = {0x3050F671, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementNamespaceFactory = {0x3050F672, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementNamespaceFactory2 = {0x3050F805, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementNamespaceFactoryCallback = {0x3050F7FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementNamespacePrivate = {0x3050F7FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementNamespaceTable = {0x3050F670, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IElementSegment = {0x3050F68F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IEmptyVolumeCache = {0x8FCE5227, 0x04DA, 0x11D1, [0xA0, 0x04, 0x00, 0x80, 0x5F, 0x8A, 0xBE, 0x06]}; - const IID IID_IEmptyVolumeCache2 = {0x02B7E3BA, 0x4DB3, 0x11D2, [0xB2, 0xD9, 0x00, 0xC0, 0x4F, 0x8E, 0xEC, 0x8C]}; - const IID IID_IEmptyVolumeCacheCallBack = {0x6E793361, 0x73C6, 0x11D0, [0x84, 0x69, 0x00, 0xAA, 0x00, 0x44, 0x29, 0x01]}; - const IID IID_IEncodingFilterFactory = {0x70BDDE00, 0xC18E, 0x11D0, [0xA9, 0xCE, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; - const IID IID_IEnroll = {0xACAA7838, 0x4585, 0x11D1, [0xAB, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; - const IID IID_IEnroll2 = {0xC080E199, 0xB7DF, 0x11D2, [0xA4, 0x21, 0x00, 0xC0, 0x4F, 0x79, 0xFE, 0x8E]}; - const IID IID_IEnroll4 = {0xF8053FE5, 0x78F4, 0x448F, [0xA0, 0xDB, 0x41, 0xD6, 0x1B, 0x73, 0x44, 0x6B]}; - const IID IID_IEntryID = {0xE4D19810, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; - const IID IID_IEnumACDGroup = {0x5AFC3157, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_IEnumACString = {0x8E74C210, 0xCF9D, 0x4EAF, [0xA4, 0x03, 0x73, 0x56, 0x42, 0x8F, 0x0A, 0x5A]}; - const IID IID_IEnumAdapterInfo = {0xA23F9D11, 0x714C, 0x41FE, [0x84, 0x71, 0xFF, 0xB1, 0x9B, 0xC2, 0x84, 0x54]}; - const IID IID_IEnumAddress = {0x1666FCA1, 0x9363, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_IEnumAgent = {0x5AFC314D, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_IEnumAgentHandler = {0x587E8C28, 0x9802, 0x11D1, [0xA0, 0xA4, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_IEnumAgentSession = {0x5AFC314E, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_IEnumBackgroundCopyFiles = {0xCA51E165, 0xC365, 0x424C, [0x8D, 0x41, 0x24, 0xAA, 0xA4, 0xFF, 0x3C, 0x40]}; - const IID IID_IEnumBackgroundCopyGroups = {0xD993E603, 0x4AA4, 0x47C5, [0x86, 0x65, 0xC2, 0x0D, 0x39, 0xC2, 0xBA, 0x4F]}; - const IID IID_IEnumBackgroundCopyJobs = {0x1AF4F612, 0x3B71, 0x466F, [0x8F, 0x58, 0x7B, 0x6F, 0x73, 0xAC, 0x57, 0xAD]}; - const IID IID_IEnumBackgroundCopyJobs1 = {0x8BAEBA9D, 0x8F1C, 0x42C4, [0xB8, 0x2C, 0x09, 0xAE, 0x79, 0x98, 0x0D, 0x25]}; - const IID IID_IEnumBstr = {0x35372049, 0x0BC6, 0x11D2, [0xA0, 0x33, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_IEnumCall = {0xAE269CF6, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_IEnumCallback = {0x00000108, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumCallHub = {0xA3C15450, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_IEnumCallingCard = {0x0C4D8F02, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_IEnumCATEGORYINFO = {0x0002E011, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumChannels = {0xA4C65425, 0x0F82, 0x11D1, [0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68]}; - const IID IID_IEnumClusCfgIPAddresses = {0xBD5F35BA, 0x0BC0, 0x455F, [0x92, 0x6D, 0xC3, 0xD3, 0x56, 0x41, 0x94, 0x86]}; - const IID IID_IEnumClusCfgManagedResources = {0x7DBE11EB, 0xA5DF, 0x4534, [0xAB, 0xF6, 0x8B, 0xAC, 0x7B, 0x53, 0xFC, 0x95]}; - const IID IID_IEnumClusCfgNetworks = {0xCF3FAED8, 0x1322, 0x4BCB, [0x99, 0x23, 0xB5, 0xB7, 0x45, 0xA6, 0x9E, 0x36]}; - const IID IID_IEnumClusCfgPartitions = {0x4440BB6A, 0xB0AC, 0x479D, [0xB5, 0x34, 0x72, 0x65, 0xA3, 0x1D, 0x6C, 0x55]}; - const IID IID_IEnumCodePage = {0x275C23E3, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; - const IID IID_IEnumConnectionPoints = {0xB196B285, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IEnumConnections = {0xB196B287, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IEnumCookies = {0x5E3E482E, 0x3C22, 0x482C, [0xB6, 0x64, 0x69, 0x30, 0x51, 0xAD, 0x0A, 0x5D]}; - const IID IID_IEnumDebugApplicationNodes = {0x51973C3A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IEnumDebugCodeContexts = {0x51973C1D, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IEnumDebugExpressionContexts = {0x51973C40, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IEnumDebugExtendedPropertyInfo = {0x51973C53, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IEnumDebugPropertyInfo = {0x51973C51, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IEnumDebugStackFrames = {0x51973C1E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IEnumDebugStackFrames64 = {0x0DC38853, 0xC1B0, 0x4176, [0xA9, 0x84, 0xB2, 0x98, 0x36, 0x10, 0x27, 0xAF]}; - const IID IID_IEnumDialableAddrs = {0x34621D70, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; - const IID IID_IEnumDirectory = {0x34621D6D, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; - const IID IID_IEnumDirectoryObject = {0x06C9B64A, 0x306D, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_IEnumDiscMasterFormats = {0xDDF445E1, 0x54BA, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID IID_IEnumDiscRecorders = {0x9B1921E1, 0x54AC, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID IID_IEnumExtraSearch = {0x0E700BE1, 0x9DB6, 0x11D1, [0xA1, 0xCE, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; - const IID IID_IEnumFORMATETC = {0x00000103, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumGeneric = {0x00000106, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumGUID = {0x0002E000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumHLITEM = {0x79EAC9C6, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IEnumHNetApplicationProtocols = {0x85D18B7B, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IEnumHNetBridgedConnections = {0x85D18B7D, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IEnumHNetBridges = {0x85D18B77, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IEnumHNetFirewalledConnections = {0x85D18B78, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IEnumHNetIcsPrivateConnections = {0x85D18B7A, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IEnumHNetIcsPublicConnections = {0x85D18B79, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IEnumHNetPortMappingBindings = {0x85D18B81, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IEnumHNetPortMappingProtocols = {0x85D18B7C, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IEnumHolder = {0x00000107, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumIDList = {0x000214F2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumInputContext = {0x09B5EAB0, 0xF997, 0x11D1, [0x93, 0xD4, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; - const IID IID_IEnumItemProperties = {0xF72C8D96, 0x6DBD, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; - const IID IID_IEnumLocation = {0x0C4D8F01, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_IEnumMcastScope = {0xDF0DAF09, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; - const IID IID_IEnumMedia = {0xCA8397BE, 0x2FA4, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_IEnumMoniker = {0x00000102, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumNetCfgBindingInterface = {0xC0E8AE90, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IEnumNetCfgBindingPath = {0xC0E8AE91, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IEnumNetCfgComponent = {0xC0E8AE92, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IEnumNetConnection = {0xC08956A0, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IEnumNetSharingEveryConnection = {0xC08956B8, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IEnumNetSharingPortMapping = {0xC08956B0, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IEnumNetSharingPrivateConnection = {0xC08956B5, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IEnumNetSharingPublicConnection = {0xC08956B4, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IEnumNodes = {0xC477E363, 0xAF0A, 0x4203, [0xA6, 0x04, 0x45, 0xCD, 0x60, 0x7D, 0xD7, 0x10]}; - const IID IID_IEnumNotification = {0xC733E4A8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_IEnumNotificationSinkItem = {0xC733E4AA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_IEnumOleDocumentViews = {0xB722BCC8, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; - const IID IID_IEnumOleUndoUnits = {0xB3E7C340, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; - const IID IID_IEnumOLEVERB = {0x00000104, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumParticipant = {0x0A91B56C, 0x5A35, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; - const IID IID_IEnumPhone = {0xF15B7669, 0x4780, 0x4595, [0x8C, 0x89, 0xFB, 0x36, 0x9C, 0x8C, 0xF7, 0xAA]}; - const IID IID_IEnumPluggableSuperclassInfo = {0xE9586A80, 0x89E6, 0x4CFF, [0x93, 0x1D, 0x47, 0x8D, 0x57, 0x51, 0xF4, 0xC0]}; - const IID IID_IEnumPluggableTerminalClassInfo = {0x4567450C, 0xDBEE, 0x4E3F, [0xAA, 0xF5, 0x37, 0xBF, 0x9E, 0xBF, 0x5E, 0x29]}; - const IID IID_IEnumPrivacyRecords = {0x3050F844, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IEnumPropertyMap = {0xC733E4A1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_IEnumPublishedApps = {0x0B124F8C, 0x91F0, 0x11D1, [0xB8, 0xB5, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; - const IID IID_IEnumQueue = {0x5AFC3158, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_IEnumRegisterWordA = {0x08C03412, 0xF96B, 0x11D0, [0xA4, 0x75, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; - const IID IID_IEnumRegisterWordW = {0x4955DD31, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; - const IID IID_IEnumRemoteDebugApplications = {0x51973C3B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IEnumRemoteDebugApplicationThrea = {0x51973C3C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IEnumRfc1766 = {0x3DC39D1D, 0xC030, 0x11D0, [0xB8, 0x1B, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; - const IID IID_IEnumScheduleGroup = {0xC733E4A9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_IEnumScript = {0xAE5F1430, 0x388B, 0x11D2, [0x83, 0x80, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0xA1]}; - const IID IID_IEnumSTATDATA = {0x00000105, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumSTATPROPBAG = {0x20021801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; - const IID IID_IEnumSTATPROPSETSTG = {0x0000013B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumSTATPROPSTG = {0x00000139, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumSTATSTG = {0x0000000D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumSTATURL = {0x3C374A42, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; - const IID IID_IEnumStream = {0xEE3BD606, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_IEnumString = {0x00000101, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumSubscription = {0xF72C8D97, 0x6DBD, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; - const IID IID_IEnumSubStream = {0xEE3BD609, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_IEnumSyncItems = {0xF0E1589A, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; - const IID IID_IEnumSyncSchedules = {0xF0E15898, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; - const IID IID_IEnumTerminal = {0xAE269CF4, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_IEnumTerminalClass = {0xAE269CF5, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_IEnumTime = {0x9055322E, 0x2FA8, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_IEnumTravelLogEntry = {0x7EBFDD85, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; - const IID IID_IEnumUnknown = {0x00000100, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumVARIANT = {0x00020404, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IEnumWbemClassObject = {0x027947E1, 0xD731, 0x11CE, [0xA3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]}; - const IID IID_IErrorInfo = {0x1CF2B120, 0x547D, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; - const IID IID_IErrorLog = {0x3127CA40, 0x446E, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; - const IID IID_IErrorLookup = {0x0C733A66, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IErrorRecords = {0x0C733A67, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IESP = {0xE99A04AA, 0xAB95, 0x11D0, [0xBE, 0x96, 0x00, 0xA0, 0xC9, 0x49, 0x89, 0xDE]}; - const IID IID_IExtendObjectManager = {0xCA7BB0B9, 0x700C, 0x4DC5, [0x99, 0x1E, 0x75, 0xF9, 0xE6, 0x5E, 0xE9, 0x75]}; - const IID IID_IExtensionServices = {0x79EAC9CB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IExternalConnection = {0x00000019, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IExtractIconA = {0x000214EB, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IExtractIconW = {0x000214FA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IExtractImage = {0xBB2E617C, 0x0920, 0x11D1, [0x9A, 0x0B, 0x00, 0xC0, 0x4F, 0xC2, 0xD6, 0xC1]}; - const IID IID_IExtractImage2 = {0x953BB1EE, 0x93B4, 0x11D1, [0x98, 0xA3, 0x00, 0xC0, 0x4F, 0xB6, 0x87, 0xDA]}; - const IID IID_IFileSearchBand = {0x2D91EEA1, 0x9932, 0x11D2, [0xBE, 0x86, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; - const IID IID_IFileSystemBindData = {0x01E18D10, 0x4D8B, 0x11D2, [0x85, 0x5D, 0x00, 0x60, 0x08, 0x05, 0x93, 0x67]}; - const IID IID_IFileViewerA = {0x000214F0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IFileViewerSite = {0x000214F3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IFileViewerW = {0x000214F8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IFillLockBytes = {0x99CAF010, 0x415E, 0x11CF, [0x88, 0x14, 0x00, 0xAA, 0x00, 0xB5, 0x69, 0xF5]}; - const IID IID_IFilter = {0x89BCB740, 0x6119, 0x101A, [0xBC, 0xB7, 0x00, 0xDD, 0x01, 0x06, 0x55, 0xAF]}; - const IID IID_IFilterAnimationInfo = {0x02E29300, 0xC758, 0x49B4, [0x9E, 0x11, 0xC5, 0x8B, 0xFE, 0x90, 0x55, 0x8B]}; - const IID IID_IFilterStatus = {0xF4EB8260, 0x8DDA, 0x11D1, [0xB3, 0xAA, 0x00, 0xA0, 0xC9, 0x06, 0x37, 0x96]}; - const IID IID_IFolderFilter = {0x9CC22886, 0xDC8E, 0x11D2, [0xB1, 0xD0, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; - const IID IID_IFolderFilterSite = {0xC0A651F5, 0xB48B, 0x11D2, [0xB5, 0xED, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6]}; - const IID IID_IFolderView = {0xCDE725B0, 0xCCC9, 0x4519, [0x91, 0x7E, 0x32, 0x5D, 0x72, 0xFA, 0xB4, 0xCE]}; - const IID IID_IFolderViewHost = {0x1EA58F02, 0xD55A, 0x411D, [0xB0, 0x9E, 0x9E, 0x65, 0xAC, 0x21, 0x60, 0x5B]}; - const IID IID_IFolderViewOC = {0x9BA05970, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; - const IID IID_IFont = {0xBEF6E002, 0xA874, 0x101A, [0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID IID_IFontDisp = {0xBEF6E003, 0xA874, 0x101A, [0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID IID_IFontEventsDisp = {0x4EF6100A, 0xAF88, 0x11D0, [0x98, 0x46, 0x00, 0xC0, 0x4F, 0xC2, 0x99, 0x93]}; - const IID IID_IFontNames = {0x3050F839, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IForegroundTransfer = {0x00000145, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IFsCiAdmin = {0x75398C30, 0x7A26, 0x11D0, [0xA8, 0x0A, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; - const IID IID_IGatherData = {0x65318F4A, 0xB63C, 0x4E21, [0xAD, 0xDC, 0xBD, 0xCF, 0xB9, 0x69, 0xE1, 0x81]}; - const IID IID_IGetClusterDataInfo = {0x97DEDE51, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IGetClusterGroupInfo = {0x97DEDE54, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IGetClusterNetInterfaceInfo = {0x97DEDE57, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IGetClusterNetworkInfo = {0x97DEDE56, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IGetClusterNodeInfo = {0x97DEDE53, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IGetClusterObjectInfo = {0x97DEDE52, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IGetClusterResourceInfo = {0x97DEDE55, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IGetClusterUIInfo = {0x97DEDE50, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IGetDataSource = {0x0C733A75, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IGetRow = {0x0C733AAF, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IGetSession = {0x0C733ABA, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IGetSourceRow = {0x0C733ABB, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IGlobalInterfaceTable = {0x00000146, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IH26XEncodeOptions = {0x65698D40, 0x282D, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IH26XEncoderControl = {0xF9B78AA1, 0xEA12, 0x11CF, [0x9F, 0xEC, 0x00, 0xAA, 0x00, 0xA5, 0x9F, 0x69]}; - const IID IID_IH26XRTPControl = {0x1FC3F2C0, 0x2BFD, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IH26XSnapshot = {0x3CB194A0, 0x10AA, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IH26XVideoEffects = {0x21555140, 0x9C2B, 0x11CF, [0x90, 0xFA, 0x00, 0xAA, 0x00, 0xA7, 0x29, 0xEA]}; - const IID IID_IH323LineEx = {0x44CF6A9D, 0xCB40, 0x4BBC, [0xB2, 0xD3, 0xB6, 0xAA, 0x93, 0x32, 0x2C, 0x71]}; - const IID IID_IHeaderFooter = {0x3050F6CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHighlightRenderingServices = {0x3050F606, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHighlightSegment = {0x3050F690, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHlink = {0x79EAC9C3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IHlinkBrowseContext = {0x79EAC9C7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IHlinkFrame = {0x79EAC9C5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IHlinkSite = {0x79EAC9C2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IHlinkTarget = {0x79EAC9C4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IHNetApplicationProtocol = {0x85D18B7F, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetBridge = {0x85D18B75, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetBridgedConnection = {0x85D18B76, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetBridgeSettings = {0x85D18B6D, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetCfgMgr = {0x85D18B6C, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetConnection = {0x85D18B71, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetFirewalledConnection = {0x85D18B72, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetFirewallSettings = {0x85D18B6E, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetIcsPrivateConnection = {0x85D18B74, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetIcsPublicConnection = {0x85D18B73, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetIcsSettings = {0x85D18B6F, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetPortMappingBinding = {0x85D18B80, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetPortMappingProtocol = {0x85D18B7E, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHNetProtocolSettings = {0x85D18B70, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; - const IID IID_IHomePage = {0x766BF2AF, 0xD650, 0x11D1, [0x98, 0x11, 0x00, 0xC0, 0x4F, 0xC3, 0x1D, 0x2E]}; - const IID IID_IHostBehaviorInit = {0x3050F842, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHostDialogHelper = {0x53DEC138, 0xA51E, 0x11D2, [0x86, 0x1E, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; - const IID IID_IHTCAttachBehavior = {0x3050F5F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTCAttachBehavior2 = {0x3050F7EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTCDefaultDispatch = {0x3050F4FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTCDescBehavior = {0x3050F5DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTCEventBehavior = {0x3050F4FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTCMethodBehavior = {0x3050F631, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTCPropertyBehavior = {0x3050F5DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAnchorElement = {0x3050F1DA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAnchorElement2 = {0x3050F825, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAppBehavior = {0x3050F5CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAppBehavior2 = {0x3050F5C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAppBehavior3 = {0x3050F5CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHtmlArea = {0x3050F64E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAreaElement = {0x3050F265, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAreasCollection = {0x3050F383, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAreasCollection2 = {0x3050F5EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAreasCollection3 = {0x3050F837, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAttributeCollection = {0x3050F4C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLAttributeCollection2 = {0x3050F80A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLBaseElement = {0x3050F204, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLBaseFontElement = {0x3050F202, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLBGsound = {0x3050F369, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLBlockElement = {0x3050F208, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLBlockElement2 = {0x3050F823, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLBodyElement = {0x3050F1D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLBodyElement2 = {0x3050F5C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLBookmarkCollection = {0x3050F4CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLBRElement = {0x3050F1F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLButtonElement = {0x3050F2BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLCaret = {0x3050F604, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLChangeLog = {0x3050F649, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLChangePlayback = {0x3050F6E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLChangeSink = {0x3050F64A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLCommentElement = {0x3050F20C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLCommentElement2 = {0x3050F813, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLComputedStyle = {0x3050F6C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLControlElement = {0x3050F4E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLControlRange = {0x3050F29C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLControlRange2 = {0x3050F65E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLCurrentStyle = {0x3050F3DB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLCurrentStyle2 = {0x3050F658, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLCurrentStyle3 = {0x3050F818, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDatabinding = {0x3050F3F2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDataTransfer = {0x3050F4B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDDElement = {0x3050F1F2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDialog = {0x3050F216, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDialog2 = {0x3050F5E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDialog3 = {0x3050F388, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDivElement = {0x3050F200, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDivPosition = {0x3050F212, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHtmlDlgSafeHelper = {0x3050F81A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDListElement = {0x3050F1F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDocument = {0x626FC520, 0xA41E, 0x11CF, [0xA7, 0x31, 0x00, 0xA0, 0xC9, 0x08, 0x26, 0x37]}; - const IID IID_IHTMLDocument2 = {0x332C4425, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; - const IID IID_IHTMLDocument3 = {0x3050F485, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDocument4 = {0x3050F69A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDocument5 = {0x3050F80C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDOMAttribute = {0x3050F4B0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDOMAttribute2 = {0x3050F810, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDOMChildrenCollection = {0x3050F5AB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDOMImplementation = {0x3050F80D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDOMNode = {0x3050F5DA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDOMNode2 = {0x3050F80B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDOMTextNode = {0x3050F4B1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDOMTextNode2 = {0x3050F809, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDTElement = {0x3050F1F3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLDXTransform = {0x30E2AB7D, 0x4FDD, 0x4159, [0xB7, 0xEA, 0xDC, 0x72, 0x2B, 0xF4, 0xAD, 0xE5]}; - const IID IID_IHTMLEditDesigner = {0x3050F662, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLEditHost = {0x3050F6A0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLEditHost2 = {0x3050F848, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0D]}; - const IID IID_IHTMLEditingServices = {0x3050F7FB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLEditor = {0x3050F7FA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLEditServices = {0x3050F663, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLEditServices2 = {0x3050F812, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLElement = {0x3050F1FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLElement2 = {0x3050F434, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLElement3 = {0x3050F673, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLElement4 = {0x3050F80F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLElementCollection = {0x3050F21F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLElementCollection2 = {0x3050F5EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLElementCollection3 = {0x3050F835, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLElementDefaults = {0x3050F6C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLElementRender = {0x3050F669, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLEmbedElement = {0x3050F25F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLEventObj = {0x3050F32D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLEventObj2 = {0x3050F48B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLEventObj3 = {0x3050F680, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLEventObj4 = {0x3050F814, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFieldSetElement = {0x3050F3E7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFieldSetElement2 = {0x3050F833, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFilterPainter = {0x3050F6DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFilterPaintSite = {0x3050F6D3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFiltersCollection = {0x3050F3EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFontElement = {0x3050F1D9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFontNamesCollection = {0x3050F376, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFontSizesCollection = {0x3050F377, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFormElement = {0x3050F1F7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFormElement2 = {0x3050F4F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFormElement3 = {0x3050F836, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFrameBase = {0x3050F311, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFrameBase2 = {0x3050F6DB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFrameBase3 = {0x3050F82E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFrameElement = {0x3050F313, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFrameElement2 = {0x3050F7F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFramesCollection2 = {0x332C4426, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; - const IID IID_IHTMLFrameSetElement = {0x3050F319, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLFrameSetElement2 = {0x3050F5C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLGenericElement = {0x3050F4B7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLHeadElement = {0x3050F81D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLHeaderElement = {0x3050F1F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLHRElement = {0x3050F1F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLHtmlElement = {0x3050F81C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLIFrameElement = {0x3050F315, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLIFrameElement2 = {0x3050F4E6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLImageElementFactory = {0x3050F38E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLImgElement = {0x3050F240, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLImgElement2 = {0x3050F826, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLInputButtonElement = {0x3050F2B2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLInputElement = {0x3050F5D2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLInputElement2 = {0x3050F821, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLInputFileElement = {0x3050F2AD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLInputHiddenElement = {0x3050F2A4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLInputImage = {0x3050F2C2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLInputTextElement = {0x3050F2A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLIPrintCollection = {0x3050F6B5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLIsIndexElement = {0x3050F206, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLIsIndexElement2 = {0x3050F82F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLLabelElement = {0x3050F32A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLLabelElement2 = {0x3050F832, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLLegendElement = {0x3050F3EA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLLegendElement2 = {0x3050F834, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLLIElement = {0x3050F1E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLLinkElement = {0x3050F205, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLLinkElement2 = {0x3050F4E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLLinkElement3 = {0x3050F81E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLListElement = {0x3050F20E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLListElement2 = {0x3050F822, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHtmlLoadOptions = {0xA71A0808, 0x0F88, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; - const IID IID_IHTMLLocation = {0x163BB1E0, 0x6E00, 0x11CF, [0x83, 0x7A, 0x48, 0xDC, 0x04, 0xC1, 0x00, 0x00]}; - const IID IID_IHTMLMapElement = {0x3050F266, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLMarqueeElement = {0x3050F2B5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLMetaElement = {0x3050F203, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLMetaElement2 = {0x3050F81F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLMimeTypesCollection = {0x3050F3FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLModelessInit = {0x3050F5E4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLNamespace = {0x3050F6BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLNamespaceCollection = {0x3050F6B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLNextIdElement = {0x3050F207, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLNoShowElement = {0x3050F38A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLObjectElement = {0x3050F24F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLObjectElement2 = {0x3050F4CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLObjectElement3 = {0x3050F827, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLOListElement = {0x3050F1DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLOMWindowServices = {0x3050F5FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLOpsProfile = {0x3050F401, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLOptionButtonElement = {0x3050F2BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLOptionElement = {0x3050F211, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLOptionElement2 = {0x3050F697, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLOptionElement3 = {0x3050F820, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLOptionElementFactory = {0x3050F38C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLOptionsHolder = {0x3050F378, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPainter = {0x3050F6A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPainterEventInfo = {0x3050F6DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPainterOverlay = {0x3050F7E3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPaintSite = {0x3050F6A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLParaElement = {0x3050F1F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLParamElement = {0x3050F83D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPersistData = {0x3050F4C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPersistDataOM = {0x3050F4C0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPhraseElement = {0x3050F20A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPhraseElement2 = {0x3050F824, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPluginsCollection = {0x3050F3FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPopup = {0x3050F666, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPrivateWindow = {0x3050F6DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPrivateWindow2 = {0x3050F7E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLPrivateWindow3 = {0x3050F840, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLRect = {0x3050F4A3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLRectCollection = {0x3050F4A4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLRenderStyle = {0x3050F6AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLRuleStyle = {0x3050F3CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLRuleStyle2 = {0x3050F4AC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLRuleStyle3 = {0x3050F657, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLRuleStyle4 = {0x3050F817, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLScreen = {0x3050F35C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLScreen2 = {0x3050F84A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLScriptElement = {0x3050F28B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLScriptElement2 = {0x3050F828, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLSelectElement = {0x3050F244, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLSelectElement2 = {0x3050F5ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLSelectElement3 = {0x3050F687, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLSelectElement4 = {0x3050F838, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLSelectionObject = {0x3050F25A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLSelectionObject2 = {0x3050F7EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLSpanElement = {0x3050F3F3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLSpanFlow = {0x3050F3E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyle = {0x3050F25E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyle2 = {0x3050F4A2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyle3 = {0x3050F656, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyle4 = {0x3050F816, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyleElement = {0x3050F375, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyleFontFace = {0x3050F3D5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyleSheet = {0x3050F2E3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyleSheet2 = {0x3050F3D1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyleSheetPage = {0x3050F7EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyleSheetPagesCollection = {0x3050F7F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyleSheetRule = {0x3050F357, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyleSheetRulesCollection = {0x3050F2E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLStyleSheetsCollection = {0x3050F37E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLSubmitData = {0x3050F645, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTable = {0x3050F21E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTable2 = {0x3050F4AD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTable3 = {0x3050F829, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableCaption = {0x3050F2EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableCell = {0x3050F23D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableCell2 = {0x3050F82D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableCol = {0x3050F23A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableCol2 = {0x3050F82A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableRow = {0x3050F23C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableRow2 = {0x3050F4A1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableRow3 = {0x3050F82C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableRowMetrics = {0x3050F413, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableSection = {0x3050F23B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableSection2 = {0x3050F5C7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTableSection3 = {0x3050F82B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTextAreaElement = {0x3050F2AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTextContainer = {0x3050F230, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTextElement = {0x3050F218, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTextRangeMetrics = {0x3050F40B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTextRangeMetrics2 = {0x3050F4A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTitleElement = {0x3050F322, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTxtRange = {0x3050F220, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLTxtRangeCollection = {0x3050F7ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLUListElement = {0x3050F1DD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLUniqueName = {0x3050F4D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLUnknownElement = {0x3050F209, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLUrnCollection = {0x3050F5E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLUserDataOM = {0x3050F48F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLViewFilter = {0x3050F2F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLViewFilterSite = {0x3050F2F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLWindow2 = {0x332C4427, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; - const IID IID_IHTMLWindow3 = {0x3050F4AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHTMLWindow4 = {0x3050F6CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IHttpNegotiate = {0x79EAC9D2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IHttpNegotiate2 = {0x4F9F9FCB, 0xE0F4, 0x48EB, [0xB7, 0xAB, 0xFA, 0x2E, 0xA9, 0x36, 0x5C, 0xB4]}; - const IID IID_IHttpSecurity = {0x79EAC9D7, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IHWEventHandler = {0xC1FB73D0, 0xEC3A, 0x4BA2, [0xB5, 0x12, 0x8C, 0xDB, 0x91, 0x87, 0xB6, 0xD1]}; - const IID IID_IImageDecodeEventSink = {0xBAA342A0, 0x2DED, 0x11D0, [0x86, 0xF4, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; - const IID IID_IImageDecodeFilter = {0xA3CCEDF3, 0x2DE2, 0x11D0, [0x86, 0xF4, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; - const IID IID_IImageList = {0x46EB5926, 0x582E, 0x4017, [0x9F, 0xDF, 0xE8, 0x99, 0x8D, 0xAA, 0x09, 0x50]}; - const IID IID_IIMEServices = {0x3050F6CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IImgCtx = {0x3050F3D7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IIndexDefinition = {0x0C733A68, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IInputObject = {0x68284FAA, 0x6A48, 0x11D0, [0x8C, 0x78, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xB4]}; - const IID IID_IInputObjectSite = {0xF1DB8392, 0x7331, 0x11D0, [0x8C, 0x99, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; - const IID IID_IIntDitherer = {0x06670CA0, 0xECEF, 0x11D0, [0xAA, 0xE7, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; - const IID IID_IIntelliForms = {0x9B9F68E6, 0x1AAA, 0x11D2, [0xBC, 0xA5, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; - const IID IID_IInterfaceRelated = {0xD1FB5A79, 0x7706, 0x11D1, [0xAD, 0xBA, 0x00, 0xC0, 0x4F, 0xC2, 0xAD, 0xC0]}; - const IID IID_IInternalMoniker = {0x00000011, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IInternalUnknown = {0x00000021, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IInternet = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetBindInfo = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetConnectionDevice = {0x04DF6137, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; - const IID IID_IInternetConnectionDeviceClient = {0x04DF6139, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; - const IID IID_IInternetConnectionDeviceSharedCo = {0x04DF6138, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; - const IID IID_IInternetHostSecurityManager = {0x3AF280B6, 0xCB3F, 0x11D0, [0x89, 0x1E, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; - const IID IID_IInternetPriority = {0x79EAC9EB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetProtocolInfo = {0x79EAC9EC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetProtocolRoot = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetProtocolSink = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetProtocolSinkStackable = {0x79EAC9F0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetSecurityManager = {0x79EAC9EE, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetSecurityMgrSite = {0x79EAC9ED, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetSession = {0x79EAC9E7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetThreadSwitch = {0x79EAC9E8, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IInternetZoneManager = {0x79EAC9EF, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IIpxAdapterInfo = {0x98133270, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IItemNameLimits = {0x1DF0D7F1, 0xB267, 0x4D28, [0x8B, 0x10, 0x12, 0xE2, 0x32, 0x02, 0xA5, 0xC4]}; - const IID IID_IJolietDiscMaster = {0xE3BC42CE, 0x4E5C, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID IID_IKeyFrameControl = {0xC3341386, 0xAF91, 0x4EF9, [0x83, 0xB6, 0xBE, 0x37, 0x62, 0xE4, 0x2E, 0xCB]}; - const IID IID_IKsControl = {0x28F54685, 0x06FD, 0x11D2, [0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96]}; - const IID IID_IKsPropertySet = {0x31EFAC30, 0x515C, 0x11D0, [0xA9, 0xAA, 0x00, 0xAA, 0x00, 0x61, 0xBE, 0x93]}; - const IID IID_ILayoutRect = {0x3050F665, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ILayoutStorage = {0x0E6D4D90, 0x6738, 0x11CF, [0x96, 0x08, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; - const IID IID_ILineInfo = {0x3050F7E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ILocalMachine = {0x60664CAF, 0xAF0D, 0x1005, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; - const IID IID_ILockBytes = {0x0000000A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ILogger = {0xD9598418, 0x304E, 0x4F94, [0xB6, 0xA1, 0xE6, 0x42, 0xFE, 0x95, 0xED, 0x57]}; - const IID IID_ILogManager = {0x4759DC11, 0x8DA0, 0x4261, [0xBB, 0xFB, 0xEC, 0x32, 0x19, 0x11, 0xD1, 0xC9]}; - const IID IID_ILogonEnumUsers = {0x60664CAF, 0xAF0D, 0x1004, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; - const IID IID_ILogonStatusHost = {0x60664CAF, 0xAF0D, 0x1007, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; - const IID IID_ILogonUser = {0x60664CAF, 0xAF0D, 0x1003, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; - const IID IID_IMachineDebugManager = {0x51973C2C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IMachineDebugManagerCookie = {0x51973C2D, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IMachineDebugManagerEvents = {0x51973C2E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IMailAutoDiscovery = {0x80402DEE, 0xB114, 0x4D32, [0xB4, 0x4E, 0x82, 0xFD, 0x82, 0x34, 0xC9, 0x2A]}; - const IID IID_IMailProtocolADEntry = {0x40EF8C68, 0xD554, 0x47ED, [0xAA, 0x37, 0xE5, 0xFB, 0x6B, 0xC9, 0x10, 0x75]}; - const IID IID_IMalloc = {0x00000002, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IMallocSpy = {0x0000001D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IMapMIMEToCLSID = {0xD9E89500, 0x30FA, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; - const IID IID_IMarkupContainer = {0x3050F5F9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IMarkupContainer2 = {0x3050F648, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IMarkupPointer = {0x3050F49F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IMarkupPointer2 = {0x3050F675, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IMarkupServices = {0x3050F4A0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IMarkupServices2 = {0x3050F682, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IMarkupTextFrags = {0x3050F5FA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IMarshal = {0x00000003, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IMarshal2 = {0x000001CF, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IMcastAddressAllocation = {0xDF0DAEF1, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; - const IID IID_IMcastLeaseInfo = {0xDF0DAEFD, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; - const IID IID_IMcastScope = {0xDF0DAEF4, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; - const IID IID_IMDDataset = {0xA07CCCD1, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; - const IID IID_IMDFind = {0xA07CCCD2, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; - const IID IID_IMDRangeRowset = {0x0C733AA0, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IMessageFilter = {0x00000016, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IMigrationWizardAuto = {0xCE20DAB9, 0xB353, 0x469B, [0x8B, 0x4D, 0x6D, 0xBB, 0x3A, 0x7B, 0xA0, 0x16]}; - const IID IID_IMimeInfo = {0xF77459A0, 0xBF9A, 0x11CF, [0xBA, 0x4E, 0x00, 0xC0, 0x4F, 0xD7, 0x08, 0x16]}; - const IID IID_IMLangCodePages = {0x359F3443, 0xBD4A, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; - const IID IID_IMLangConvertCharset = {0xD66D6F98, 0xCDAA, 0x11D0, [0xB8, 0x22, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; - const IID IID_IMLangFontLink = {0x359F3441, 0xBD4A, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; - const IID IID_IMLangFontLink2 = {0xDCCFC162, 0x2B38, 0x11D2, [0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A]}; - const IID IID_IMLangLineBreakConsole = {0xF5BE2EE1, 0xBFD7, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; - const IID IID_IMLangString = {0xC04D65CE, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; - const IID IID_IMLangStringAStr = {0xC04D65D2, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; - const IID IID_IMLangStringBufA = {0xD24ACD23, 0xBA72, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; - const IID IID_IMLangStringBufW = {0xD24ACD21, 0xBA72, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; - const IID IID_IMLangStringWStr = {0xC04D65D0, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; - const IID IID_IMofCompiler = {0x6DAF974E, 0x2E37, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IMoniker = {0x0000000F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IMonikerProp = {0xA5CA5F7F, 0x1847, 0x4D87, [0x9C, 0x5B, 0x91, 0x85, 0x09, 0xF7, 0x51, 0x1D]}; - const IID IID_IMountedVolume = {0x12518492, 0x00B2, 0x11D2, [0x9F, 0xA5, 0x9E, 0x34, 0x20, 0x52, 0x41, 0x53]}; - const IID IID_IMulticastControl = {0x410FA507, 0x4DC6, 0x415A, [0x90, 0x14, 0x63, 0x38, 0x75, 0xD5, 0x40, 0x6E]}; - const IID IID_IMultiLanguage = {0x275C23E1, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; - const IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11D2, [0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A]}; - const IID IID_IMultiLanguage3 = {0x4E5868AB, 0xB157, 0x4623, [0x9A, 0xCC, 0x6A, 0x1D, 0x9C, 0xAE, 0xBE, 0x04]}; - const IID IID_IMultiplePropertyAccess = {0xEC81FEDE, 0xD432, 0x11CE, [0x92, 0x44, 0x00, 0x20, 0xAF, 0x6E, 0x72, 0xDB]}; - const IID IID_IMultipleResults = {0x0C733A90, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IMultiQI = {0x00000020, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_INamedPropertyBag = {0xFB700430, 0x952C, 0x11D1, [0x94, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; - const IID IID_INATEventManager = {0x624BD588, 0x9060, 0x4109, [0xB0, 0xB0, 0x1A, 0xDB, 0xBC, 0xAC, 0x32, 0xDF]}; - const IID IID_INATExternalIPAddressCallback = {0x9C416740, 0xA34E, 0x446F, [0xBA, 0x06, 0xAB, 0xD0, 0x4C, 0x31, 0x49, 0xAE]}; - const IID IID_INATNumberOfEntriesCallback = {0xC83A0A74, 0x91EE, 0x41B6, [0xB6, 0x7A, 0x67, 0xE0, 0xF0, 0x0B, 0xBD, 0x78]}; - const IID IID_INetCfg = {0xC0E8AE93, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgBindingInterface = {0xC0E8AE94, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgBindingPath = {0xC0E8AE96, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgClass = {0xC0E8AE97, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgClassSetup = {0xC0E8AE9D, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgComponent = {0xC0E8AE99, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgComponentBindings = {0xC0E8AE9E, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgComponentControl = {0x932238DF, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; - const IID IID_INetCfgComponentNotifyBinding = {0x932238E1, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; - const IID IID_INetCfgComponentNotifyGlobal = {0x932238E2, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; - const IID IID_INetCfgComponentPrivate = {0x98133273, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgComponentPropertyUi = {0x932238E0, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; - const IID IID_INetCfgComponentSetup = {0x932238E3, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; - const IID IID_INetCfgComponentSysPrep = {0xC0E8AE9A, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgComponentUpperEdge = {0x932238E4, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; - const IID IID_INetCfgInternalSetup = {0x98133276, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgLock = {0xC0E8AE9F, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgPnpReconfigCallback = {0x8D84BD35, 0xE227, 0x11D2, [0xB7, 0x00, 0x00, 0xA0, 0xC9, 0x8A, 0x6A, 0x85]}; - const IID IID_INetCfgSpecialCase = {0xC0E8AE95, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCfgSysPrep = {0xC0E8AE98, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnection = {0xC08956A1, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnection2 = {0xFAEDCF6A, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionBrandingInfo = {0xFAEDCF5B, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionCMUtil = {0xFAEDCF60, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionCommonUi = {0xC08956A5, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionConnectUi = {0xC08956A3, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionHNetUtil = {0xFAEDCF64, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionManager = {0xC08956A2, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionManager2 = {0xFAEDCF69, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionManagerDebug = {0xFAEDCF5D, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionManagerEvents = {0xC08956BA, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionNotifySink = {0xFAEDCF5C, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionPropertyUi = {0xC08956A4, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionPropertyUi2 = {0xC08956B9, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionProps = {0xF4277C95, 0xCE5B, 0x463D, [0x81, 0x67, 0x56, 0x62, 0xD9, 0xBC, 0xAA, 0x72]}; - const IID IID_INetConnectionRefresh = {0xFAEDCF5F, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionSysTray = {0xFAEDCF65, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionUiLock = {0xFAEDCF50, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionUiUtilities = {0xFAEDCF5E, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionWizardUi = {0xFAEDCF51, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetConnectionWizardUiContext = {0xFAEDCF52, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetCrawler = {0x49C929EE, 0xA1B7, 0x4C58, [0xB5, 0x39, 0xE6, 0x3B, 0xE3, 0x92, 0xB6, 0xF3]}; - const IID IID_INetDefaultConnection = {0xFAEDCF66, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetInboundConnection = {0xFAEDCF53, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetInstallQueue = {0x98133274, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetLanConnection = {0xFAEDCF54, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetLanConnectionUiInfo = {0xC08956A6, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetLanConnectionWizardUi = {0xFAEDCF56, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetMachinePolicies = {0xFAEDCF68, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetRasConnection = {0xFAEDCF57, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetRasConnectionIpUiInfo = {0xFAEDCF58, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetSharedAccessConnection = {0xFAEDCF55, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetSharingConfiguration = {0xC08956B6, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetSharingEveryConnectionCollect = {0x33C4643C, 0x7811, 0x46FA, [0xA8, 0x9A, 0x76, 0x85, 0x97, 0xBD, 0x72, 0x23]}; - const IID IID_INetSharingManager = {0xC08956B7, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetSharingPortMapping = {0xC08956B1, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_INetSharingPortMappingCollection = {0x02E4A2DE, 0xDA20, 0x4E34, [0x89, 0xC8, 0xAC, 0x22, 0x27, 0x5A, 0x01, 0x0B]}; - const IID IID_INetSharingPortMappingProps = {0x24B7E9B5, 0xE38F, 0x4685, [0x85, 0x1B, 0x00, 0x89, 0x2C, 0xF5, 0xF9, 0x40]}; - const IID IID_INetSharingPrivateConnectionColle = {0x38AE69E0, 0x4409, 0x402A, [0xA2, 0xCB, 0xE9, 0x65, 0xC7, 0x27, 0xF8, 0x40]}; - const IID IID_INetSharingPublicConnectionCollec = {0x7D7A6355, 0xF372, 0x4971, [0xA1, 0x49, 0xBF, 0xC9, 0x27, 0xBE, 0x76, 0x2A]}; - const IID IID_INewShortcutHookA = {0x000214E1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_INewShortcutHookW = {0x000214F7, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_INewWDEvents = {0x0751C551, 0x7568, 0x41C9, [0x8E, 0x5B, 0xE2, 0x2E, 0x38, 0x91, 0x92, 0x36]}; - const IID IID_INotification = {0xC733E4A3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_INotificationHelper = {0xC733E4AB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_INotificationManager = {0x95531501, 0x8782, 0x4845, [0x90, 0x1D, 0x31, 0x2F, 0x36, 0xBA, 0x6C, 0x6E]}; - const IID IID_INotificationMgr = {0xC733E4A4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_INotificationPing = {0xC733E4AC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_INotificationProcessMgr0 = {0xC733E4AE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_INotificationReport = {0xC733E4A7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_INotificationRunning = {0xC733E4AD, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_INotificationSink = {0xC733E4A5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_INotifyDBEvents = {0xDB526CC0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; - const IID IID_INotifyReplica = {0x99180163, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_INotifyUI = {0xE5E8D401, 0x1A37, 0x4FBF, [0x88, 0x0C, 0x82, 0x6C, 0xC8, 0x95, 0x16, 0xFD]}; - const IID IID_IObjectAccessControl = {0x0C733AA3, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IObjectIdentity = {0xCA04B7E6, 0x0D21, 0x11D1, [0x8C, 0xC5, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; - const IID IID_IObjectManager = {0xD51351DF, 0x6394, 0x4236, [0x97, 0x83, 0x65, 0xED, 0x05, 0x63, 0x10, 0x68]}; - const IID IID_IObjectSafety = {0xCB5BDC81, 0x93C1, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID IID_IObjectWithSite = {0xFC4801A3, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID IID_IObjMgr = {0x00BB2761, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; - const IID IID_IOInet = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOInetBindClient = {0x79EAC9E2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOInetBindInfo = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOInetCache = {0x79EAC9EA, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOInetPriority = {0x79EAC9EB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOInetProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOInetProtocolInfo = {0x79EAC9EC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOInetProtocolRoot = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOInetProtocolSink = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOInetSession = {0x79EAC967, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOInetThreadSwitch = {0x79EAC968, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IOldSyncMgrRegister = {0x894D8C55, 0xBDDF, 0x11D1, [0xB8, 0x5D, 0x00, 0xC0, 0x4F, 0xB9, 0x39, 0x81]}; - const IID IID_IOldSyncMgrSynchronize = {0x6295DF28, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; - const IID IID_IOldSyncMgrSynchronizeCallback = {0x6295DF29, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; - const IID IID_IOleAdviseHolder = {0x00000111, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleCache = {0x0000011E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleCache2 = {0x00000128, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleCacheControl = {0x00000129, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleClientSite = {0x00000118, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleCommandTarget = {0xB722BCCB, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; - const IID IID_IOleContainer = {0x0000011B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleControl = {0xB196B288, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IOleControlSite = {0xB196B289, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IOleDocument = {0xB722BCC5, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; - const IID IID_IOleDocumentSite = {0xB722BCC7, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; - const IID IID_IOleDocumentView = {0xB722BCC6, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; - const IID IID_IOleInPlaceActiveObject = {0x00000117, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleInPlaceFrame = {0x00000116, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleInPlaceObject = {0x00000113, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleInPlaceObjectWindowless = {0x1C2056CC, 0x5EF4, 0x101B, [0x8B, 0xC8, 0x00, 0xAA, 0x00, 0x3E, 0x3B, 0x29]}; - const IID IID_IOleInPlaceSite = {0x00000119, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleInPlaceSiteEx = {0x9C2CAD80, 0x3424, 0x11CF, [0xB6, 0x70, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; - const IID IID_IOleInPlaceSiteWindowless = {0x922EADA0, 0x3424, 0x11CF, [0xB6, 0x70, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; - const IID IID_IOleInPlaceUIWindow = {0x00000115, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleItemContainer = {0x0000011C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleLink = {0x0000011D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleManager = {0x0000011F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleObject = {0x00000112, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleParentUndoUnit = {0xA1FAF330, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; - const IID IID_IOlePresObj = {0x00000120, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOleUndoManager = {0xD001F200, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; - const IID IID_IOleUndoUnit = {0x894AD3B0, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; - const IID IID_IOleWindow = {0x00000114, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOmHistory = {0xFECEAAA2, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; - const IID IID_IOmNavigator = {0xFECEAAA5, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; - const IID IID_IOpaqueDataInfo = {0x000001A9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IOpenRowset = {0x0C733A69, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IOplockStorage = {0x8D19C834, 0x8879, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; - const IID IID_IOpsProfileSimple = {0x7DD1362C, 0x28B6, 0x11D2, [0xBC, 0xA7, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; - const IID IID_IOptionArray = {0x22B6D492, 0x0F88, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; - const IID IID_IOverlappedCompletion = {0x521A28F0, 0xE40B, 0x11CE, [0xB2, 0xC9, 0x00, 0xAA, 0x00, 0x68, 0x09, 0x37]}; - const IID IID_IOverlappedStream = {0x49384070, 0xE40A, 0x11CE, [0xB2, 0xC9, 0x00, 0xAA, 0x00, 0x68, 0x09, 0x37]}; - const IID IID_IParentRowset = {0x0C733AAA, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IParseDisplayName = {0x0000011A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IParser = {0x186442B0, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; - const IID IID_IParserSession = {0x186442B1, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; - const IID IID_IParserTreeProperties = {0x186442B2, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; - const IID IID_IParserVerify = {0x186442B3, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; - const IID IID_IPassportClientServices = {0xB30F7305, 0x5967, 0x45D1, [0xB7, 0xBC, 0xD6, 0xEB, 0x71, 0x63, 0xD7, 0x70]}; - const IID IID_IPeerFactory = {0x6663F9D3, 0xB482, 0x11D1, [0x89, 0xC6, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; - const IID IID_IPendingProxyConnection = {0xB68E5043, 0x3E3D, 0x4CC2, [0xB9, 0xC1, 0x5F, 0x8F, 0x88, 0xFE, 0xE8, 0x1C]}; - const IID IID_IPerPropertyBrowsing = {0x376BD3AA, 0x3845, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; - const IID IID_IPerPropertyBrowsing2 = {0x51973C54, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IPersist = {0x0000010C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IPersistentDataChannel = {0xA180E934, 0xD92A, 0x415D, [0x91, 0x44, 0x75, 0x9F, 0x80, 0x54, 0xE8, 0xF6]}; - const IID IID_IPersistFile = {0x0000010B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IPersistFolder = {0x000214EA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IPersistFolder2 = {0x1AC3D9F0, 0x175C, 0x11D1, [0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; - const IID IID_IPersistFolder3 = {0xCEF04FDF, 0xFE72, 0x11D2, [0x87, 0xA5, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xCF]}; - const IID IID_IPersistHistory = {0x91A565C1, 0xE38F, 0x11D0, [0x94, 0xBF, 0x00, 0xA0, 0xC9, 0x05, 0x5C, 0xBF]}; - const IID IID_IPersistIDList = {0x1079ACFC, 0x29BD, 0x11D3, [0x8E, 0x0D, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; - const IID IID_IPersistMemory = {0xBD1AE5E0, 0xA6AE, 0x11CE, [0xBD, 0x37, 0x50, 0x42, 0x00, 0xC1, 0x00, 0x00]}; - const IID IID_IPersistMoniker = {0x79EAC9C9, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IPersistNetConnection = {0xFAEDCF59, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IPersistPropertyBag = {0x37D84F60, 0x42CB, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; - const IID IID_IPersistPropertyBag2 = {0x22F55881, 0x280B, 0x11D0, [0xA8, 0xA9, 0x00, 0xA0, 0xC9, 0x0C, 0x20, 0x04]}; - const IID IID_IPersistQuery = {0x1A3114B8, 0xA62E, 0x11D0, [0xA6, 0xC5, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; - const IID IID_IPersistStorage = {0x0000010A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IPersistStream = {0x00000109, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IPersistStreamInit = {0x7FD52380, 0x4E07, 0x101B, [0xAE, 0x2D, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; - const IID IID_IPhraseSink = {0xCC906FF0, 0xC058, 0x101A, [0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; - const IID IID_IPicture = {0x7BF80980, 0xBF32, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID IID_IPictureDisp = {0x7BF80981, 0xBF32, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID IID_IPipeByte = {0xDB2F3ACA, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; - const IID IID_IPipeDouble = {0xDB2F3ACE, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; - const IID IID_IPipeLong = {0xDB2F3ACC, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; - const IID IID_IPointerInactive = {0x55980BA0, 0x35AA, 0x11CF, [0xB6, 0x71, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; - const IID IID_IPrimaryControlChannel = {0x1A2E8B62, 0x9012, 0x4BE6, [0x84, 0xAE, 0x32, 0xBD, 0x66, 0xBA, 0x65, 0x7A]}; - const IID IID_IPrint = {0xB722BCC9, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; - const IID IID_IPrintDialogCallback = {0x5852A2C3, 0x6530, 0x11D1, [0xB6, 0xA3, 0x00, 0x00, 0xF8, 0x75, 0x7B, 0xF9]}; - const IID IID_IPrintDialogServices = {0x509AAEDA, 0x5639, 0x11D1, [0xB6, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x7B, 0xF9]}; - const IID IID_IPrivacyServices = {0x3050F84B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IPrivateDispatch = {0x86AB4BBE, 0x65F6, 0x11D1, [0x8C, 0x13, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IPrivateUnknown = {0x89126BAB, 0x6EAD, 0x11D1, [0x8C, 0x18, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; - const IID IID_IPrivSyncMgrSynchronizeInvoke = {0x6295DF2E, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; - const IID IID_IProcessDebugManager = {0x51973C2F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IProcessDebugManager32 = {0x51973C2F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IProcessDebugManager64 = {0x56B9FC1C, 0x63A9, 0x4CC1, [0xAC, 0x21, 0x08, 0x7D, 0x69, 0xA1, 0x7F, 0xAB]}; - const IID IID_IProcessInitControl = {0x72380D55, 0x8D2B, 0x43A3, [0x85, 0x13, 0x2B, 0x6E, 0xF3, 0x14, 0x34, 0xE9]}; - const IID IID_IProfferService = {0xCB728B20, 0xF786, 0x11CE, [0x92, 0xAD, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xD0]}; - const IID IID_IProgressDialog = {0xEBBC7C04, 0x315E, 0x11D2, [0xB6, 0x2F, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; - const IID IID_IProgressNotify = {0xA9D758A0, 0x4617, 0x11CF, [0x95, 0xFC, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; - const IID IID_IProgSink = {0x3050F371, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IPropertyBag = {0x55272A00, 0x42CB, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; - const IID IID_IPropertyBag2 = {0x22F55882, 0x280B, 0x11D0, [0xA8, 0xA9, 0x00, 0xA0, 0xC9, 0x0C, 0x20, 0x04]}; - const IID IID_IPropertyBagEx = {0x20011801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; - const IID IID_IPropertyFrame = {0xB196B28A, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IPropertyMap = {0xC733E4A2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_IPropertyMapper = {0xB324B226, 0x41A0, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; - const IID IID_IPropertyNotifySink = {0x9BFBBC02, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IPropertyPage = {0xB196B28D, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IPropertyPage2 = {0x01E44665, 0x24AC, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; - const IID IID_IPropertyPageSite = {0xB196B28C, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IPropertySetContainer = {0xB4FFAE60, 0xA7CA, 0x11CD, [0xB5, 0x8B, 0x00, 0x00, 0x6B, 0x82, 0x91, 0x56]}; - const IID IID_IPropertySetStorage = {0x0000013A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IPropertyStorage = {0x00000138, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IPropertyUI = {0x757A7D9F, 0x919A, 0x4118, [0x99, 0xD7, 0xDB, 0xB2, 0x08, 0xC8, 0xCC, 0x66]}; - const IID IID_IPropSheetPage = {0x000214F6, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IProvideClassInfo = {0xB196B283, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_IProvideClassInfo2 = {0xA6BC3AC0, 0xDBAA, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; - const IID IID_IProvideExpressionContexts = {0x51973C41, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IProvideMoniker = {0x0C733A4D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IProvideMultipleClassInfo = {0xA7ABA9C1, 0x8983, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID IID_IProxy = {0x00000027, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IProxyManager = {0x00000008, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IPSFactory = {0x00000009, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IPSFactoryBuffer = {0xD5F569D0, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; - const IID IID_IPublishedApp = {0x1BC752E0, 0x9046, 0x11D1, [0xB8, 0xB3, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; - const IID IID_IPublishingWizard = {0xAA9198BB, 0xCCEC, 0x472D, [0xBE, 0xED, 0x19, 0xA4, 0xF6, 0x73, 0x3F, 0x7A]}; - const IID IID_IQualityControl = {0x6BC096AB, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; - const IID IID_IQuery = {0x0C733A51, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IQueryAssociations = {0xC46CA590, 0x3C3F, 0x11D2, [0xBE, 0xE6, 0x00, 0x00, 0xF8, 0x05, 0xCA, 0x57]}; - const IID IID_IQueryCancelAutoPlay = {0xDDEFE873, 0x6997, 0x4E68, [0xBE, 0x26, 0x39, 0xB6, 0x33, 0xAD, 0xBE, 0x12]}; - const IID IID_IQueryContinue = {0x7307055C, 0xB24A, 0x486B, [0x9F, 0x25, 0x16, 0x3E, 0x59, 0x7A, 0x28, 0xA9]}; - const IID IID_IQueryForm = {0x8CFCEE30, 0x39BD, 0x11D0, [0xB8, 0xD1, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; - const IID IID_IQueryFrame = {0x7E8C7C20, 0x7C9D, 0x11D0, [0x91, 0x3F, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; - const IID IID_IQueryHandler = {0xA60CC73F, 0xE0FC, 0x11D0, [0x97, 0x50, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; - const IID IID_IQueryInfo = {0x00021500, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IQuickActivate = {0xCF51ED10, 0x62FE, 0x11CF, [0xBF, 0x86, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0x36]}; - const IID IID_IRadioButton = {0x3050F69B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IRatingNotification = {0x639447BD, 0xB2D3, 0x44B9, [0x9F, 0xB0, 0x51, 0x0F, 0x23, 0xCB, 0x45, 0xE4]}; - const IID IID_IReadData = {0x0C733A6A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IReadEvents = {0xF64AEFDE, 0x3376, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; - const IID IID_IRecalcEngine = {0x3050F496, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IRecalcHost = {0x3050F497, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IRecalcHostDebug = {0x3050F5F7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IRecalcProperty = {0x3050F5D6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IReconcilableObject = {0x99180162, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IReconcileInitiator = {0x99180161, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IRecordInfo = {0x0000002F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IRedbookDiscMaster = {0xE3BC42CD, 0x4E5C, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID IID_IReferenceClock = {0x56A86897, 0x0AD4, 0x11CE, [0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; - const IID IID_IRegisterProvider = {0x0C733AB9, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRegisterVirusScanEngine = {0x0825E060, 0xB961, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; - const IID IID_IReleaseMarshalBuffers = {0xEB0CB9E8, 0x7996, 0x11D2, [0x87, 0x2E, 0x00, 0x00, 0xF8, 0x08, 0x08, 0x59]}; - const IID IID_IRemoteCallBack = {0x8947C648, 0x3833, 0x11D1, [0x86, 0x82, 0x00, 0xC0, 0x4F, 0xBF, 0xE1, 0x71]}; - const IID IID_IRemoteComputer = {0x000214FE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IRemoteDebugApplication = {0x51973C30, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IRemoteDebugApplicationEvents = {0x51973C33, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IRemoteDebugApplicationEx = {0x51973C01, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IRemoteDebugApplicationThread = {0x51973C37, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_IRemoteDebugApplicationThreadEx = {0xB9B32B0C, 0x9147, 0x11D1, [0x94, 0xEA, 0x00, 0xC0, 0x4F, 0xA3, 0x02, 0xA1]}; - const IID IID_IRemoteDelaydC = {0x394540A0, 0x6FCF, 0x11D0, [0xAC, 0xE0, 0x00, 0x00, 0xF8, 0x01, 0x14, 0xD3]}; - const IID IID_IRemoteESP = {0xE99A04AB, 0xAB95, 0x11D0, [0xBE, 0x96, 0x00, 0xA0, 0xC9, 0x49, 0x89, 0xDE]}; - const IID IID_IRemoteFinder = {0x944AD532, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; - const IID IID_IRemoteStats = {0x944AD531, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; - const IID IID_IRequest = {0x6BC096A7, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; - const IID IID_IRequestHandler = {0x6BC096AA, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; - const IID IID_IRequestSource = {0x6BC096A9, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; - const IID IID_IRequestState = {0x6BC096BA, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; - const IID IID_IResolveShellLink = {0x5CD52983, 0x9449, 0x11D2, [0x96, 0x3A, 0x00, 0xC0, 0x4F, 0x79, 0xAD, 0xF0]}; - const IID IID_IRichEditOle = {0x00020D00, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IRichEditOleCallback = {0x00020D03, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IRootStorage = {0x00000012, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IROTData = {0xF29F6BC0, 0x5021, 0x11CE, [0xAA, 0x15, 0x00, 0x00, 0x69, 0x01, 0x29, 0x3F]}; - const IID IID_IRow = {0x0C733AB4, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowChange = {0x0C733AB5, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowInfo = {0x0C733AC1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowPosition = {0x0C733A94, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowPositionChange = {0x0997A571, 0x126E, 0x11D0, [0x9F, 0x8A, 0x00, 0xA0, 0xC9, 0xA0, 0x63, 0x1E]}; - const IID IID_IRowSchemaChange = {0x0C733AAE, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowset = {0x0C733A7C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetAsynch = {0x0C733A0F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetBookmark = {0x0C733AC2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetChange = {0x0C733A05, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetChapterMember = {0x0C733AA8, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetCopyRows = {0x0C733A6B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetCurrentIndex = {0x0C733ABD, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetExactScroll = {0x0C733A7F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetFind = {0x0C733A9D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetIdentity = {0x0C733A09, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetIndex = {0x0C733A82, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetInfo = {0x0C733A55, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetKeys = {0x0C733A12, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetLocate = {0x0C733A7D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetNewRowAfter = {0x0C733A71, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetNextRowset = {0x0C733A72, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetNotify = {0x0C733A83, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetQueryStatus = {0xA7AC77ED, 0xF8D7, 0x11CE, [0xA7, 0x98, 0x00, 0x20, 0xF8, 0x00, 0x80, 0x24]}; - const IID IID_IRowsetRefresh = {0x0C733AA9, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetResynch = {0x0C733A84, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetScroll = {0x0C733A7E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetUpdate = {0x0C733A6D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetView = {0x0C733A99, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetWatchAll = {0x0C733A73, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetWatchNotify = {0x0C733A44, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetWatchRegion = {0x0C733A45, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRowsetWithParameters = {0x0C733A6E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IRpcChannel = {0x00000004, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IRpcChannelBuffer = {0xD5F56B60, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; - const IID IID_IRpcChannelBuffer2 = {0x594F31D0, 0x7F19, 0x11D0, [0xB1, 0x94, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0xBF]}; - const IID IID_IRpcChannelBuffer3 = {0x25B15600, 0x0115, 0x11D0, [0xBF, 0x0D, 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xD2]}; - const IID IID_IRpcHelper = {0x00000149, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IRpcOptions = {0x00000144, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IRpcProxy = {0x00000007, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IRpcProxyBuffer = {0xD5F56A34, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; - const IID IID_IRpcStub = {0x00000005, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IRpcStubBuffer = {0xD5F56AFC, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; - const IID IID_IRpcSyntaxNegotiate = {0x58A08519, 0x24C8, 0x4935, [0xB4, 0x82, 0x3F, 0xD8, 0x23, 0x33, 0x3A, 0x4F]}; - const IID IID_IRTC = {0x4811EA40, 0xB582, 0x11CE, [0xB5, 0xAF, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; - const IID IID_IRTCBuddy = {0xFCB136C8, 0x7B90, 0x4E0C, [0xBE, 0xFE, 0x56, 0xED, 0xF0, 0xBA, 0x6F, 0x1C]}; - const IID IID_IRTCBuddyEvent = {0xF36D755D, 0x17E6, 0x404E, [0x95, 0x4F, 0x0F, 0xC0, 0x75, 0x74, 0xC7, 0x8D]}; - const IID IID_IRTCClient = {0x07829E45, 0x9A34, 0x408E, [0xA0, 0x11, 0xBD, 0xDF, 0x13, 0x48, 0x7C, 0xD1]}; - const IID IID_IRTCClientEvent = {0x2B493B7A, 0x3CBA, 0x4170, [0x9C, 0x8B, 0x76, 0xA9, 0xDA, 0xCD, 0xD6, 0x44]}; - const IID IID_IRTCClientPresence = {0x11C3CBCC, 0x0744, 0x42D1, [0x96, 0x8A, 0x51, 0xAA, 0x1B, 0xB2, 0x74, 0xC6]}; - const IID IID_IRTCClientProvisioning = {0xB9F5CF06, 0x65B9, 0x4A80, [0xA0, 0xE6, 0x73, 0xCA, 0xE3, 0xEF, 0x38, 0x22]}; - const IID IID_IRTCCollection = {0xEC7C8096, 0xB918, 0x4044, [0x94, 0xF1, 0xE4, 0xFB, 0xA0, 0x36, 0x1D, 0x5C]}; - const IID IID_IRTCEnumBuddies = {0xF7296917, 0x5569, 0x4B3B, [0xB3, 0xAF, 0x98, 0xD1, 0x14, 0x4B, 0x2B, 0x87]}; - const IID IID_IRTCEnumParticipants = {0xFCD56F29, 0x4A4F, 0x41B2, [0xBA, 0x5C, 0xF5, 0xBC, 0xCC, 0x06, 0x0B, 0xF6]}; - const IID IID_IRTCEnumProfiles = {0x29B7C41C, 0xED82, 0x4BCA, [0x84, 0xAD, 0x39, 0xD5, 0x10, 0x1B, 0x58, 0xE3]}; - const IID IID_IRTCEnumWatchers = {0xA87D55D7, 0xDB74, 0x4ED1, [0x9C, 0xA4, 0x77, 0xA0, 0xE4, 0x1B, 0x41, 0x3E]}; - const IID IID_IRTCEventNotification = {0x13FA24C7, 0x5748, 0x4B21, [0x91, 0xF5, 0x73, 0x97, 0x60, 0x9C, 0xE7, 0x47]}; - const IID IID_IRTCIntensityEvent = {0x4C23BF51, 0x390C, 0x4992, [0xA4, 0x1D, 0x41, 0xEE, 0xC0, 0x5B, 0x2A, 0x4B]}; - const IID IID_IRTCMediaEvent = {0x099944FB, 0xBCDA, 0x453E, [0x8C, 0x41, 0xE1, 0x3D, 0xA2, 0xAD, 0xF7, 0xF3]}; - const IID IID_IRTCMessagingEvent = {0xD3609541, 0x1B29, 0x4DE5, [0xA4, 0xAD, 0x5A, 0xEB, 0xAF, 0x31, 0x95, 0x12]}; - const IID IID_IRTCParticipant = {0xAE86ADD5, 0x26B1, 0x4414, [0xAF, 0x1D, 0xB9, 0x4C, 0xD9, 0x38, 0xD7, 0x39]}; - const IID IID_IRTCParticipantStateChangeEvent = {0x09BCB597, 0xF0FA, 0x48F9, [0xB4, 0x20, 0x46, 0x8C, 0xEA, 0x7F, 0xDE, 0x04]}; - const IID IID_IRTCPresenceContact = {0x8B22F92C, 0xCD90, 0x42DB, [0xA7, 0x33, 0x21, 0x22, 0x05, 0xC3, 0xE3, 0xDF]}; - const IID IID_IRTCProfile = {0xD07ECA9E, 0x4062, 0x4DD4, [0x9E, 0x7D, 0x72, 0x2A, 0x49, 0xBA, 0x73, 0x03]}; - const IID IID_IRTCProfileEvent = {0xD6D5AB3B, 0x770E, 0x43E8, [0x80, 0x0A, 0x79, 0xB0, 0x62, 0x39, 0x5F, 0xCA]}; - const IID IID_IRTCRegistrationStateChangeEvent = {0x62D0991B, 0x50AB, 0x4F02, [0xB9, 0x48, 0xCA, 0x94, 0xF2, 0x6F, 0x8F, 0x95]}; - const IID IID_IRTCSession = {0x387C8086, 0x99BE, 0x42FB, [0x99, 0x73, 0x7C, 0x0F, 0xC0, 0xCA, 0x9F, 0xA8]}; - const IID IID_IRTCSessionOperationCompleteEven = {0xA6BFF4C0, 0xF7C8, 0x4D3C, [0x9A, 0x41, 0x35, 0x50, 0xF7, 0x8A, 0x95, 0xB0]}; - const IID IID_IRTCSessionStateChangeEvent = {0xB5BAD703, 0x5952, 0x48B3, [0x93, 0x21, 0x7F, 0x45, 0x00, 0x52, 0x15, 0x06]}; - const IID IID_IRTCWatcher = {0xC7CEDAD8, 0x346B, 0x4D1B, [0xAC, 0x02, 0xA2, 0x08, 0x8D, 0xF9, 0xBE, 0x4F]}; - const IID IID_IRTCWatcherEvent = {0xF30D7261, 0x587A, 0x424F, [0x82, 0x2C, 0x31, 0x27, 0x88, 0xF4, 0x35, 0x48]}; - const IID IID_IRunnableObject = {0x00000126, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IRunnableTask = {0x85788D00, 0x6807, 0x11D0, [0xB8, 0x10, 0x00, 0xC0, 0x4F, 0xD7, 0x06, 0xEC]}; - const IID IID_IRunningObjectTable = {0x00000010, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IScheduleGroup = {0xC733E4A6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID IID_IScopedOperations = {0x0C733AB0, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IScriptEntry = {0x0AEE2A95, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; - const IID IID_IScriptErrorList = {0xF3470F24, 0x15FD, 0x11D2, [0xBB, 0x2E, 0x00, 0x80, 0x5F, 0xF7, 0xEF, 0xCA]}; - const IID IID_IScriptNode = {0x0AEE2A94, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; - const IID IID_IScriptScriptlet = {0x0AEE2A96, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; - const IID IID_IScrollBar = {0x3050F689, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISdo = {0x56BC53DE, 0x96DB, 0x11D1, [0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; - const IID IID_ISdoCollection = {0x56BC53E2, 0x96DB, 0x11D1, [0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; - const IID IID_ISdoDictionaryOld = {0xD432E5F4, 0x53D8, 0x11D2, [0x9A, 0x3A, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0xAC]}; - const IID IID_ISdoMachine = {0x479F6E75, 0x49A2, 0x11D2, [0x8E, 0xCA, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x19]}; - const IID IID_ISdoServiceControl = {0x479F6E74, 0x49A2, 0x11D2, [0x8E, 0xCA, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x19]}; - const IID IID_ISearch = {0xBA9239A4, 0x3DD5, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; - const IID IID_ISearchAssistantOC = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; - const IID IID_ISearchAssistantOC2 = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA2]}; - const IID IID_ISearchAssistantOC3 = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA3]}; - const IID IID_ISearchCommandExt = {0x1D2EFD50, 0x75CE, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; - const IID IID_ISearchContext = {0x09F656A2, 0x41AF, 0x480C, [0x88, 0xF7, 0x16, 0xCC, 0x0D, 0x16, 0x46, 0x15]}; - const IID IID_ISearches = {0x47C922A2, 0x3DD5, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; - const IID IID_ISearchQueryHits = {0xED8CE7E0, 0x106C, 0x11CE, [0x84, 0xE2, 0x00, 0xAA, 0x00, 0x4B, 0x99, 0x86]}; - const IID IID_ISecondaryControlChannel = {0xA23F9D10, 0x714C, 0x41FE, [0x84, 0x71, 0xFF, 0xB1, 0x9B, 0xC2, 0x84, 0x54]}; - const IID IID_ISecureUrlHost = {0xC81984C4, 0x74C8, 0x11D2, [0xBA, 0xA9, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; - const IID IID_ISecurityInfo = {0x0C733AA4, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ISegment = {0x3050F683, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISegmentList = {0x3050F605, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISegmentListIterator = {0x3050F692, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISelectionObject2 = {0x3050F7FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISelectionServices = {0x3050F684, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISelectionServicesListener = {0x3050F699, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISensLogon = {0xD597BAB3, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; - const IID IID_ISensLogon2 = {0xD597BAB4, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; - const IID IID_ISensNetwork = {0xD597BAB1, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; - const IID IID_ISensOnNow = {0xD597BAB2, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; - const IID IID_ISequenceNumber = {0x3050F6C1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISequentialStream = {0x0C733A30, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IServerSecurity = {0x0000013E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IServiceProvider = {0x6D5140C1, 0x7436, 0x11CE, [0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA]}; - const IID IID_ISessionProperties = {0x0C733A85, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ISetNextStatement = {0x51973C03, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_ISharedAccessBeacon = {0xFAEDCF6B, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_ISharedAccessBeaconFinder = {0xFAEDCF67, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_IShellApp = {0xA3E14960, 0x935F, 0x11D1, [0xB8, 0xB8, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; - const IID IID_IShellBrowser = {0x000214E2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellChangeNotify = {0xD82BE2B1, 0x5764, 0x11D0, [0xA9, 0x6E, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; - const IID IID_IShellCopyHookA = {0x000214EF, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellCopyHookW = {0x000214FC, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellDetails = {0x000214EC, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellDetails3 = {0xD2A105C0, 0x87D5, 0x11D1, [0x83, 0x91, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; - const IID IID_IShellDispatch = {0xD8F015C0, 0xC278, 0x11CE, [0xA4, 0x9E, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IShellDispatch2 = {0xA4C6892C, 0x3BA9, 0x11D2, [0x9D, 0xEA, 0x00, 0xC0, 0x4F, 0xB1, 0x61, 0x62]}; - const IID IID_IShellDispatch3 = {0x177160CA, 0xBB5A, 0x411C, [0x84, 0x1D, 0xBD, 0x38, 0xFA, 0xCD, 0xEA, 0xA0]}; - const IID IID_IShellDispatch4 = {0xEFD84B2D, 0x4BCF, 0x4298, [0xBE, 0x25, 0xEB, 0x54, 0x2A, 0x59, 0xFB, 0xDA]}; - const IID IID_IShellExecuteHookA = {0x000214F5, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellExecuteHookW = {0x000214FB, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellExtInit = {0x000214E8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellFavoritesNameSpace = {0x55136804, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; - const IID IID_IShellFolder = {0x000214E6, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellFolder2 = {0x93F2F68C, 0x1D1B, 0x11D3, [0xA3, 0x0E, 0x00, 0xC0, 0x4F, 0x79, 0xAB, 0xD1]}; - const IID IID_IShellFolderViewCB = {0x2047E320, 0xF2A9, 0x11CE, [0xAE, 0x65, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62]}; - const IID IID_IShellFolderViewDual = {0xE7A1AF80, 0x4D96, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; - const IID IID_IShellFolderViewDual2 = {0x31C147B6, 0x0ADE, 0x4A3C, [0xB5, 0x14, 0xDD, 0xF9, 0x32, 0xEF, 0x6D, 0x17]}; - const IID IID_IShellIcon = {0x000214E5, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellIconOverlay = {0x7D688A70, 0xC613, 0x11D0, [0x99, 0x9B, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; - const IID IID_IShellIconOverlayIdentifier = {0x0C6C4200, 0xC589, 0x11D0, [0x99, 0x9A, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; - const IID IID_IShellImageData = {0xBFDEEC12, 0x8040, 0x4403, [0xA5, 0xEA, 0x9E, 0x07, 0xDA, 0xFC, 0xF5, 0x30]}; - const IID IID_IShellImageDataAbort = {0x53FB8E58, 0x50C0, 0x4003, [0xB4, 0xAA, 0x0C, 0x8D, 0xF2, 0x8E, 0x7F, 0x3A]}; - const IID IID_IShellImageDataFactory = {0x9BE8ED5C, 0xEDAB, 0x4D75, [0x90, 0xF3, 0xBD, 0x5B, 0xDB, 0xB2, 0x1C, 0x82]}; - const IID IID_IShellLinkA = {0x000214EE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellLinkDataList = {0x45E2B4AE, 0xB1C3, 0x11D0, [0xB9, 0x2F, 0x00, 0xA0, 0xC9, 0x03, 0x12, 0xE1]}; - const IID IID_IShellLinkDual = {0x88A05C00, 0xF000, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; - const IID IID_IShellLinkDual2 = {0x317EE249, 0xF12E, 0x11D2, [0xB1, 0xE4, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; - const IID IID_IShellLinkW = {0x000214F9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellNameSpace = {0xE572D3C9, 0x37BE, 0x4AE2, [0x82, 0x5D, 0xD5, 0x21, 0x76, 0x3E, 0x31, 0x08]}; - const IID IID_IShellPropSheetExt = {0x000214E9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellUIHelper = {0x729FE2F8, 0x1EA8, 0x11D1, [0x8F, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; - const IID IID_IShellView = {0x000214E3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IShellView2 = {0x88E39E80, 0x3578, 0x11CF, [0xAE, 0x69, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62]}; - const IID IID_IShellWindows = {0x85CB6900, 0x4D95, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; - const IID IID_ISimpleCommandCreator = {0x5E341AB7, 0x02D0, 0x11D1, [0x90, 0x0C, 0x00, 0xA0, 0xC9, 0x06, 0x37, 0x96]}; - const IID IID_ISimpleConnectionPoint = {0x51973C3E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; - const IID IID_ISimpleFrameSite = {0x742B0E01, 0x14E6, 0x101B, [0x91, 0x4E, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; - const IID IID_ISliderBar = {0x3050F68D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISniffStream = {0x4EF17940, 0x30E0, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; - const IID IID_ISOAPRequest = {0xAD194525, 0x6E01, 0x4BCA, [0x92, 0x9C, 0x23, 0xC7, 0x38, 0x33, 0x36, 0xAF]}; - const IID IID_ISoftDistExt = {0xB15B8DC1, 0xC7E1, 0x11D0, [0x86, 0x80, 0x00, 0xAA, 0x00, 0xBD, 0xCB, 0x71]}; - const IID IID_ISourcesRowset = {0x0C733A1E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ISpecialSystemProperties = {0x000001B9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ISpecifyPropertyPages = {0xB196B28B, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; - const IID IID_ISpinButton = {0x3050F68B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISQLErrorInfo = {0x0C733A74, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IStandardActivator = {0x000001B8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IStandardInfo = {0xF1D9C1A5, 0x9589, 0x40DD, [0xB6, 0x3D, 0x9B, 0xB0, 0xB3, 0x8A, 0x10, 0x22]}; - const IID IID_IStaticPortMapping = {0x6F10711F, 0x729B, 0x41E5, [0x93, 0xB8, 0xF2, 0x1D, 0x0F, 0x81, 0x8D, 0xF1]}; - const IID IID_IStaticPortMappingCollection = {0xCD1F3E77, 0x66D6, 0x4664, [0x82, 0xC7, 0x36, 0xDB, 0xB6, 0x41, 0xD0, 0xF1]}; - const IID IID_IStats = {0x944AD530, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; - const IID IID_IStdMarshalInfo = {0x00000018, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IStemmer = {0xEFBAF140, 0x7F42, 0x11CE, [0xBE, 0x57, 0x00, 0xAA, 0x00, 0x51, 0xFE, 0x20]}; - const IID IID_IStemSink = {0xFE77C330, 0x7F42, 0x11CE, [0xBE, 0x57, 0x00, 0xAA, 0x00, 0x51, 0xFE, 0x20]}; - const IID IID_IStorage = {0x0000000B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IStream = {0x0000000C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IStub = {0x00000026, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IStubManager = {0x00000006, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ISubDivisionProvider = {0x3050F4D2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ISubscriptionAgentControl = {0xA89E8FF0, 0x70F4, 0x11D1, [0xBC, 0x7F, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; - const IID IID_ISubscriptionAgentEvents = {0xA89E8FF1, 0x70F4, 0x11D1, [0xBC, 0x7F, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; - const IID IID_ISubscriptionAgentShellExt = {0x81B184BA, 0xB302, 0x11D1, [0x85, 0x52, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; - const IID IID_ISubscriptionItem = {0xA97559F8, 0x6C4A, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; - const IID IID_ISubscriptionMgr = {0x085FB2C0, 0x0DF8, 0x11D1, [0x8F, 0x4B, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x3F]}; - const IID IID_ISubscriptionMgr2 = {0x614BC270, 0xAEDF, 0x11D1, [0xA1, 0xF9, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; - const IID IID_ISubscriptionMgrPriv = {0xD66B399E, 0xAF1D, 0x11D1, [0xA1, 0xF9, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; - const IID IID_ISubscriptionThrottler = {0x1E9B00E4, 0x9846, 0x11D1, [0xA1, 0xEE, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; - const IID IID_ISupportErrorInfo = {0xDF0B3D60, 0x548F, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; - const IID IID_ISurrogate = {0x00000022, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ISWbemDateTime = {0x5E97458A, 0xCF77, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; - const IID IID_ISWbemEventSource = {0x27D54D92, 0x0EBE, 0x11D2, [0x8B, 0x22, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemLastError = {0xD962DB84, 0xD4BB, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemLocator = {0x76A6415B, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemMethod = {0x422E8E90, 0xD955, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemMethodSet = {0xC93BA292, 0xD955, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemNamedValue = {0x76A64164, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemNamedValueSet = {0xCF2376EA, 0xCE8C, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemObject = {0x76A6415A, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemObjectEx = {0x269AD56A, 0x8A67, 0x4129, [0xBC, 0x8C, 0x05, 0x06, 0xDC, 0xFE, 0x98, 0x80]}; - const IID IID_ISWbemObjectPath = {0x5791BC27, 0xCE9C, 0x11D1, [0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C]}; - const IID IID_ISWbemObjectSet = {0x76A6415F, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemPrivilege = {0x26EE67BD, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemPrivilegeSet = {0x26EE67BF, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemProperty = {0x1A388F98, 0xD4BA, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemPropertySet = {0xDEA0A7B2, 0xD4BA, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemQualifier = {0x79B05932, 0xD3B7, 0x11D1, [0x8B, 0x06, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemQualifierSet = {0x9B16ED16, 0xD3DF, 0x11D1, [0x8B, 0x08, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemRefreshableItem = {0x5AD4BF92, 0xDAAB, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; - const IID IID_ISWbemRefresher = {0x14D8250E, 0xD9C2, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; - const IID IID_ISWbemSecurity = {0xB54D66E6, 0x2287, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemServices = {0x76A6415C, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID IID_ISWbemServicesEx = {0xD2F68443, 0x85DC, 0x427E, [0x91, 0xD8, 0x36, 0x65, 0x54, 0xCC, 0x75, 0x4C]}; - const IID IID_ISWbemSink = {0x75718C9F, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; - const IID IID_ISynchronize = {0x00000030, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ISynchronizeContainer = {0x00000033, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ISynchronizedCallBack = {0x74C26041, 0x70D1, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; - const IID IID_ISynchronizeEvent = {0x00000032, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ISynchronizeHandle = {0x00000031, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ISynchronizeMutex = {0x00000025, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ISyncMgrEnumItems = {0x6295DF2A, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; - const IID IID_ISyncMgrRegisterCSC = {0x47681A61, 0xBC74, 0x11D2, [0xB5, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x39, 0x81]}; - const IID IID_ISyncMgrSynchronizeInvoke = {0x6295DF2C, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; - const IID IID_ISyncSchedule = {0xF0E15899, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; - const IID IID_ISyncScheduleMgr = {0xF0E15897, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; - const IID IID_ISyncSchedulep = {0xF0E1589B, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; - const IID IID_ITableCreation = {0x0C733ABC, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ITableDefinition = {0x0C733A86, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ITableDefinitionWithConstraints = {0x0C733AAB, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ITableRename = {0x0C733A77, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ITACDGroup = {0x5AFC3148, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITACDGroupEvent = {0x297F3032, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITAddress = {0xB1EFC386, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_ITAddress2 = {0xB0AE5D9B, 0xBE51, 0x46C9, [0xB0, 0xF7, 0xDF, 0xA8, 0xA2, 0x2A, 0x8B, 0xC4]}; - const IID IID_ITAddressCapabilities = {0x8DF232F5, 0x821B, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITAddressDeviceSpecificEvent = {0x3ACB216B, 0x40BD, 0x487A, [0x86, 0x72, 0x5C, 0xE7, 0x7B, 0xD7, 0xE3, 0xA3]}; - const IID IID_ITAddressEvent = {0x831CE2D1, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITAddressTranslation = {0x0C4D8F03, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITAddressTranslationInfo = {0xAFC15945, 0x8D40, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITAgent = {0x5770ECE5, 0x4B27, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITAgentEvent = {0x5AFC314A, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITAgentHandler = {0x587E8C22, 0x9802, 0x11D1, [0xA0, 0xA4, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITAgentHandlerEvent = {0x297F3034, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITAgentSession = {0x5AFC3147, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITAgentSessionEvent = {0x5AFC314B, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITAllocatorProperties = {0xC1BC3C90, 0xBCFE, 0x11D1, [0x97, 0x45, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_ITAMMediaFormat = {0x0364EB00, 0x4A77, 0x11D1, [0xA6, 0x71, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xE8]}; - const IID IID_ITargetContainer = {0x7847EC01, 0x2BEC, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; - const IID IID_ITargetEmbedding = {0x548793C0, 0x9E74, 0x11CF, [0x96, 0x55, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0x23]}; - const IID IID_ITargetFrame = {0xD5F78C80, 0x5252, 0x11CF, [0x90, 0xFA, 0x00, 0xAA, 0x00, 0x42, 0x10, 0x6E]}; - const IID IID_ITargetFrame2 = {0x86D52E11, 0x94A8, 0x11D0, [0x82, 0xAF, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; - const IID IID_ITargetFramePriv = {0x9216E421, 0x2BF5, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; - const IID IID_ITargetNotify = {0x863A99A0, 0x21BC, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; - const IID IID_ITargetNotify2 = {0x3050F6B1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ITaskAnalyzeCluster = {0x795737A1, 0xE13A, 0x45EB, [0x8D, 0xFD, 0x81, 0x85, 0xC4, 0xB7, 0xAD, 0x4E]}; - const IID IID_ITaskbarList = {0x56FDF342, 0xFD6D, 0x11D0, [0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90]}; - const IID IID_ITaskbarList2 = {0x602D4995, 0xB13A, 0x429B, [0xA6, 0x6E, 0x19, 0x35, 0xE4, 0x4F, 0x43, 0x17]}; - const IID IID_ITaskCommitClusterChanges = {0x1BF12DDE, 0xF8B0, 0x49B1, [0xA4, 0x58, 0x67, 0x47, 0xDB, 0x78, 0x8A, 0x47]}; - const IID IID_ITaskCompareAndPushInformation = {0xD4F1C2AF, 0xB370, 0x49DE, [0x87, 0x68, 0x40, 0x10, 0xB5, 0x68, 0x63, 0x6C]}; - const IID IID_ITaskGatherClusterInfo = {0xE167965C, 0xC5D6, 0x493C, [0xA3, 0x43, 0x4C, 0x10, 0x5C, 0x01, 0xDD, 0xE7]}; - const IID IID_ITaskGatherInformation = {0xB9AAF3F8, 0x238E, 0x4993, [0xBA, 0x31, 0x14, 0x85, 0x98, 0x04, 0xF9, 0x2C]}; - const IID IID_ITaskGatherNodeInfo = {0xF19A2E01, 0x2CB3, 0x47B4, [0x8F, 0x5D, 0xB9, 0x77, 0x17, 0x6B, 0x45, 0xC8]}; - const IID IID_ITaskGetDomains = {0xDFCB4ACD, 0xC4DB, 0x4DB4, [0x8E, 0xBB, 0x1D, 0xD0, 0x7A, 0x9D, 0x5B, 0x82]}; - const IID IID_ITaskGetDomainsCallback = {0x85402E44, 0x6834, 0x41DF, [0x85, 0x90, 0x01, 0x82, 0x7D, 0x12, 0x4E, 0x1B]}; - const IID IID_ITaskLoginDomain = {0x76AD8E51, 0x53C3, 0x4347, [0x89, 0x5D, 0x6C, 0x30, 0xF4, 0x13, 0x93, 0x74]}; - const IID IID_ITaskLoginDomainCallback = {0xEFAF3C43, 0x7A8F, 0x469B, [0xB8, 0xBB, 0xC8, 0x0C, 0x57, 0x47, 0xCE, 0x05]}; - const IID IID_ITaskManager = {0x16116694, 0xDFC5, 0x470B, [0xAC, 0x12, 0x46, 0xFB, 0xB0, 0x1C, 0xEF, 0x10]}; - const IID IID_ITaskPollingCallback = {0x49E92395, 0x66AF, 0x4ADD, [0xA4, 0x1E, 0x43, 0x51, 0x2C, 0xB5, 0x19, 0xB3]}; - const IID IID_ITaskVerifyIPAddress = {0x0C95E1B1, 0x0CFF, 0x4740, [0x8A, 0xBD, 0x69, 0x91, 0x2D, 0x10, 0x5B, 0xD1]}; - const IID IID_ITASRTerminalEvent = {0xEE016A02, 0x4FA9, 0x467C, [0x93, 0x3F, 0x5A, 0x15, 0xB1, 0x23, 0x77, 0xD7]}; - const IID IID_ITAttributeList = {0x5037FB82, 0xCAE9, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_ITAudioDeviceControl = {0x6C0AB6C5, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; - const IID IID_ITAudioSettings = {0x6C0AB6C6, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; - const IID IID_ITAutomatedPhoneControl = {0x1EE1AF0E, 0x6159, 0x4A61, [0xB7, 0x9B, 0x6A, 0x4B, 0xA3, 0xFC, 0x9D, 0xFC]}; - const IID IID_ITBasicAudioTerminal = {0xB1EFC38D, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_ITBasicCallControl = {0xB1EFC389, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_ITBasicCallControl2 = {0x161A4A56, 0x1E99, 0x4B3F, [0xA4, 0x6A, 0x16, 0x8F, 0x38, 0xA5, 0xEE, 0x4C]}; - const IID IID_ITCallHub = {0xA3C1544E, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITCallHubEvent = {0xA3C15451, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITCallInfo = {0x350F85D1, 0x1227, 0x11D3, [0x83, 0xD4, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITCallInfo2 = {0x94D70CA6, 0x7AB0, 0x4DAA, [0x81, 0xCA, 0xB8, 0xF8, 0x64, 0x3F, 0xAE, 0xC1]}; - const IID IID_ITCallInfoChangeEvent = {0x5D4B65F9, 0xE51C, 0x11D1, [0xA0, 0x2F, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITCallingCard = {0x0C4D8F00, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITCallMediaEvent = {0xFF36B87F, 0xEC3A, 0x11D0, [0x8E, 0xE4, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITCallNotificationEvent = {0x895801DF, 0x3DD6, 0x11D1, [0x8F, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITCallQualityControl = {0xFE1D8AE0, 0xEDC4, 0x49B5, [0x8F, 0x8C, 0x4D, 0xE4, 0x0F, 0x9C, 0xDF, 0xAF]}; - const IID IID_ITCallStateEvent = {0x62F47097, 0x95C9, 0x11D0, [0x83, 0x5D, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_ITCollection = {0x5EC5ACF2, 0x9C02, 0x11D0, [0x83, 0x62, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_ITCollection2 = {0xE6DDDDA5, 0xA6D3, 0x48FF, [0x87, 0x37, 0xD3, 0x2F, 0xC4, 0xD9, 0x54, 0x77]}; - const IID IID_ITConferenceBlob = {0xC259D7AA, 0xC8AB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_ITConnection = {0x8FA381D4, 0xC8C2, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_ITcpipProperties = {0x98133271, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; - const IID IID_ITCustomTone = {0x357AD764, 0xB3C6, 0x4B2A, [0x8F, 0xA5, 0x07, 0x22, 0x82, 0x7A, 0x92, 0x54]}; - const IID IID_ITDetectTone = {0x961F79BD, 0x3097, 0x49DF, [0xA1, 0xD6, 0x90, 0x9B, 0x77, 0xE8, 0x9C, 0xA0]}; - const IID IID_ITDigitDetectionEvent = {0x80D3BFAC, 0x57D9, 0x11D2, [0xA0, 0x4A, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITDigitGenerationEvent = {0x80D3BFAD, 0x57D9, 0x11D2, [0xA0, 0x4A, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITDigitsGatheredEvent = {0xE52EC4C1, 0xCBA3, 0x441A, [0x9E, 0x6A, 0x93, 0xCB, 0x90, 0x9E, 0x97, 0x24]}; - const IID IID_ITDirectory = {0x34621D6C, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; - const IID IID_ITDirectoryObject = {0x34621D6E, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; - const IID IID_ITDirectoryObjectConference = {0xF1029E5D, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_ITDirectoryObjectUser = {0x34621D6F, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; - const IID IID_ITDispatchMapper = {0xE9225295, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITemplatePrinter = {0x3050F6B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ITemplatePrinter2 = {0x3050F83F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ITFileTerminalEvent = {0xE4A7FBAC, 0x8C17, 0x4427, [0x9F, 0x55, 0x9F, 0x58, 0x9A, 0xC8, 0xAF, 0x00]}; - const IID IID_ITFileTrack = {0x31CA6EA9, 0xC08A, 0x4BEA, [0x88, 0x11, 0x8E, 0x9C, 0x1B, 0xA3, 0xEA, 0x3A]}; - const IID IID_ITfLangBarAddIn = {0xC9ADDAC3, 0x15CB, 0x4957, [0xB9, 0x3C, 0xDB, 0x08, 0x73, 0xFF, 0x98, 0xBB]}; - const IID IID_ITFormatControl = {0x6C0AB6C1, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; - const IID IID_ITForwardInformation = {0x449F659E, 0x88A3, 0x11D1, [0xBB, 0x5D, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITForwardInformation2 = {0x5229B4ED, 0xB260, 0x4382, [0x8E, 0x1A, 0x5D, 0xF3, 0xA8, 0xA4, 0xCC, 0xC0]}; - const IID IID_ITfSpeechUIServer = {0x90E9A944, 0x9244, 0x489F, [0xA7, 0x8F, 0xDE, 0x67, 0xAF, 0xC0, 0x13, 0xA7]}; - const IID IID_IThumbnailCapture = {0x4EA39266, 0x7211, 0x409F, [0xB6, 0x22, 0xF6, 0x3D, 0xBD, 0x16, 0xC5, 0x33]}; - const IID IID_IThumbnailExtractor = {0x969DC708, 0x5C76, 0x11D1, [0x8D, 0x86, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; - const IID IID_ITILSConfig = {0x34621D72, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; - const IID IID_ITIMEActiveElementCollection = {0x403E2540, 0x4520, 0x11D3, [0x93, 0xAB, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x38]}; - const IID IID_ITimeAndNoticeControl = {0xBC0BF6AE, 0x8878, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; - const IID IID_ITIMEAnimationElement = {0xA74F14B1, 0xB6A2, 0x430A, [0xA5, 0xE8, 0x1F, 0x4E, 0x53, 0xF7, 0x10, 0xFE]}; - const IID IID_ITIMEAnimationElement2 = {0x29CE8661, 0xBD43, 0x421A, [0xB6, 0x16, 0xE9, 0xB3, 0x1F, 0x33, 0xA5, 0x72]}; - const IID IID_ITIMEBodyElement = {0x8C90E348, 0xEC0A, 0x4229, [0x90, 0xB0, 0xE5, 0x7D, 0x2C, 0xA4, 0x5C, 0xCB]}; - const IID IID_ITIMEDMusicPlayerObject = {0x407954F5, 0x2BAB, 0x4CFA, [0x95, 0x4D, 0x24, 0x9F, 0x9F, 0xCE, 0x43, 0xA1]}; - const IID IID_ITIMEDVDPlayerObject = {0x3AF7AB68, 0x4F29, 0x462C, [0xAA, 0x6E, 0x58, 0x72, 0x44, 0x88, 0x99, 0xE3]}; - const IID IID_ITIMEElement = {0x1C2EF64E, 0xF07D, 0x4338, [0x97, 0x71, 0x91, 0x54, 0x49, 0x1C, 0xD8, 0xB9]}; - const IID IID_ITIMEElementCollection = {0x50ABC224, 0x6D53, 0x4F83, [0x91, 0x35, 0x24, 0x40, 0xA4, 0x1B, 0x7B, 0xC8]}; - const IID IID_ITIMEFactory = {0xCD51E446, 0x3006, 0x434F, [0x90, 0xE2, 0xE3, 0x7E, 0x8F, 0xB8, 0xCA, 0x8F]}; - const IID IID_ITIMEMediaElement = {0x47A6972F, 0xAE65, 0x4A6B, [0xAE, 0x63, 0xD0, 0xC1, 0xD5, 0x30, 0x7B, 0x58]}; - const IID IID_ITIMEMediaElement2 = {0x9EE29400, 0x7EE6, 0x453A, [0x85, 0xB3, 0x4E, 0xC2, 0x8E, 0x03, 0x05, 0xB4]}; - const IID IID_ITIMEMediaPlayer = {0xEA4A95BE, 0xACC9, 0x4BF0, [0x85, 0xA4, 0x1B, 0xF3, 0xC5, 0x1E, 0x43, 0x1C]}; - const IID IID_ITIMEMediaPlayerAudio = {0xFFAACFDA, 0xB374, 0x4F22, [0xAC, 0x9A, 0xC5, 0xBB, 0x94, 0x37, 0xCB, 0x56]}; - const IID IID_ITIMEMediaPlayerControl = {0x897A99E7, 0xF386, 0x45C8, [0xB5, 0x1B, 0x3A, 0x25, 0xBB, 0xCB, 0xBA, 0x69]}; - const IID IID_ITIMEMediaPlayerNetwork = {0xB9987FCA, 0x7FBB, 0x4015, [0xBD, 0x3D, 0x74, 0x18, 0x60, 0x55, 0x14, 0xDA]}; - const IID IID_ITIMEMediaPlayerSite = {0xBF0571ED, 0x344F, 0x4F58, [0x82, 0xC7, 0x74, 0x31, 0xED, 0x0F, 0xD8, 0x34]}; - const IID IID_ITIMEPlayItem = {0x2A6096D9, 0x2CE0, 0x47DC, [0xA8, 0x13, 0x90, 0x99, 0xA2, 0x46, 0x63, 0x09]}; - const IID IID_ITIMEPlayItem2 = {0x4262CD38, 0x6BDC, 0x40A4, [0xBC, 0x50, 0x4C, 0xC5, 0x03, 0x66, 0xE7, 0x02]}; - const IID IID_ITIMEPlayList = {0xE9B75B62, 0xDD97, 0x4B19, [0x8F, 0xD9, 0x96, 0x46, 0x29, 0x29, 0x52, 0xE0]}; - const IID IID_ITimer = {0x3050F360, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ITimerService = {0x3050F35F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ITimerSink = {0x3050F361, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ITIMEState = {0xDD5EC62A, 0x9D77, 0x4573, [0x80, 0xA8, 0x75, 0x85, 0x94, 0xE6, 0x9C, 0xEA]}; - const IID IID_ITIMETransitionElement = {0xF383D66F, 0x5E68, 0x4FC2, [0xB6, 0x41, 0x03, 0x67, 0x2B, 0x54, 0x3A, 0x49]}; - const IID IID_ITLegacyAddressMediaControl = {0xAB493640, 0x4C0B, 0x11D2, [0xA0, 0x46, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITLegacyAddressMediaControl2 = {0xB0EE512B, 0xA531, 0x409E, [0x9D, 0xD9, 0x40, 0x99, 0xFE, 0x86, 0xC7, 0x38]}; - const IID IID_ITLegacyCallMediaControl = {0xD624582F, 0xCC23, 0x4436, [0xB8, 0xA5, 0x47, 0xC6, 0x25, 0xC8, 0x04, 0x5D]}; - const IID IID_ITLegacyCallMediaControl2 = {0x57CA332D, 0x7BC2, 0x44F1, [0xA6, 0x0C, 0x93, 0x6F, 0xE8, 0xD7, 0xCE, 0x73]}; - const IID IID_ITLegacyWaveSupport = {0x207823EA, 0xE252, 0x11D2, [0xB7, 0x7E, 0x00, 0x80, 0xC7, 0x13, 0x53, 0x81]}; - const IID IID_ITLocalParticipant = {0x39CBF055, 0xF77A, 0x11D2, [0xA8, 0x24, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; - const IID IID_ITLocationInfo = {0x0C4D8EFF, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITMedia = {0x0CC1F053, 0xCAEB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_ITMediaCollection = {0x6A8E16A2, 0x0ABC, 0x11D1, [0x97, 0x6D, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_ITMediaControl = {0xC445DDE8, 0x5199, 0x4BC7, [0x98, 0x07, 0x5F, 0xFB, 0x92, 0xE4, 0x2E, 0x09]}; - const IID IID_ITMediaPlayback = {0x627E8AE6, 0xAE4C, 0x4A69, [0xBB, 0x63, 0x2A, 0xD6, 0x25, 0x40, 0x4B, 0x77]}; - const IID IID_ITMediaRecord = {0xF5DD4592, 0x5476, 0x4CC1, [0x9D, 0x4D, 0xFA, 0xD3, 0xEE, 0xFE, 0x7D, 0xB2]}; - const IID IID_ITMediaSupport = {0xB1EFC384, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_ITMSPAddress = {0xEE3BD600, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITMultiTrackTerminal = {0xFE040091, 0xADE8, 0x4072, [0x95, 0xC9, 0xBF, 0x7D, 0xE8, 0xC5, 0x4B, 0x44]}; - const IID IID_ITParticipant = {0x5899B820, 0x5A34, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; - const IID IID_ITParticipantControl = {0xD2EE6684, 0x5A34, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; - const IID IID_ITParticipantEvent = {0x8BB35070, 0x2DAD, 0x11D3, [0xA5, 0x80, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; - const IID IID_ITParticipantSubStreamControl = {0x2C679108, 0x5A35, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; - const IID IID_ITPhone = {0x09D48DB4, 0x10CC, 0x4388, [0x9D, 0xE7, 0xA8, 0x46, 0x56, 0x18, 0x97, 0x5A]}; - const IID IID_ITPhoneDeviceSpecificEvent = {0x63FFB2A6, 0x872B, 0x4CD3, [0xA5, 0x01, 0x32, 0x6E, 0x8F, 0xB4, 0x0A, 0xF7]}; - const IID IID_ITPhoneEvent = {0x8F942DD8, 0x64ED, 0x4AAF, [0xA7, 0x7D, 0xB2, 0x3D, 0xB0, 0x83, 0x7E, 0xAD]}; - const IID IID_ITPluggableTerminalClassInfo = {0x41757F4A, 0xCF09, 0x4B34, [0xBC, 0x96, 0x0A, 0x79, 0xD2, 0x39, 0x00, 0x76]}; - const IID IID_ITPluggableTerminalClassRegistrat = {0x924A3723, 0xA00B, 0x4F5F, [0x9F, 0xEE, 0x8E, 0x9A, 0xEB, 0x9E, 0x82, 0xAA]}; - const IID IID_ITPluggableTerminalEventSink = {0x6E0887BE, 0xBA1A, 0x492E, [0xBD, 0x10, 0x40, 0x20, 0xEC, 0x5E, 0x33, 0xE0]}; - const IID IID_ITPluggableTerminalEventSinkRegis = {0xF7115709, 0xA216, 0x4957, [0xA7, 0x59, 0x06, 0x0A, 0xB3, 0x2A, 0x90, 0xD1]}; - const IID IID_ITPluggableTerminalInitializatio = {0xAED6483C, 0x3304, 0x11D2, [0x86, 0xF1, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; - const IID IID_ITPluggableTerminalSuperclassInf = {0x6D54E42C, 0x4625, 0x4359, [0xA6, 0xF7, 0x63, 0x19, 0x99, 0x10, 0x7E, 0x05]}; - const IID IID_ITPluggableTerminalSuperclassRegi = {0x60D3C08A, 0xC13E, 0x4195, [0x9A, 0xB0, 0x8D, 0xE7, 0x68, 0x09, 0x0F, 0x25]}; - const IID IID_ITPrivateEvent = {0x0E269CD0, 0x10D4, 0x4121, [0x9C, 0x22, 0x9C, 0x85, 0xD6, 0x25, 0x65, 0x0D]}; - const IID IID_ITQOSApplicationID = {0xE8C89D27, 0xA3BD, 0x47D5, [0xA6, 0xFC, 0xD2, 0xAE, 0x40, 0xCD, 0xBC, 0x6E]}; - const IID IID_ITQOSEvent = {0xCFA3357C, 0xAD77, 0x11D1, [0xBB, 0x68, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITQueue = {0x5AFC3149, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITQueueEvent = {0x297F3033, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITrackFile = {0x8790C948, 0xA30B, 0x11D0, [0x8C, 0xAB, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; - const IID IID_ITransaction = {0x0FB15084, 0xAF41, 0x11CE, [0xBD, 0x2B, 0x20, 0x4C, 0x4F, 0x4F, 0x50, 0x20]}; - const IID IID_ITransaction2 = {0x34021548, 0x0065, 0x11D3, [0xBA, 0xC1, 0x00, 0xC0, 0x4F, 0x79, 0x7B, 0xE2]}; - const IID IID_ITransactionCloner = {0x02656950, 0x2152, 0x11D0, [0x94, 0x4C, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x6E]}; - const IID IID_ITransactionDispenser = {0x3A6AD9E1, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; - const IID IID_ITransactionJoin = {0x0C733A5E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ITransactionLocal = {0x0C733A5F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ITransactionObject = {0x0C733A60, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ITransactionOptions = {0x3A6AD9E0, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; - const IID IID_ITransactionOutcomeEvents = {0x3A6AD9E2, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; - const IID IID_ITransmt = {0xB3C9F150, 0xB593, 0x11CE, [0xB5, 0xB0, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; - const IID IID_ITravelEntry = {0xF46EDB3B, 0xBC2F, 0x11D0, [0x94, 0x12, 0x00, 0xAA, 0x00, 0xA3, 0xEB, 0xD3]}; - const IID IID_ITravelLog = {0x66A9CB08, 0x4802, 0x11D2, [0xA5, 0x61, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; - const IID IID_ITravelLogClient = {0x3050F67A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ITravelLogClient2 = {0x0AD364CE, 0xADCB, 0x11D3, [0x82, 0x69, 0x00, 0x80, 0x5F, 0xC7, 0x32, 0xC0]}; - const IID IID_ITravelLogEntry = {0x7EBFDD87, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; - const IID IID_ITravelLogEx = {0x3050F679, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_ITravelLogStg = {0x7EBFDD80, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; - const IID IID_ITRendezvous = {0x34621D6B, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; - const IID IID_ITRequest = {0xAC48FFDF, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITRequestEvent = {0xAC48FFDE, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITridentEventSink = {0x1DC9CA50, 0x06EF, 0x11D2, [0x84, 0x15, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; - const IID IID_ITrkForceOwnership = {0xA2531F44, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; - const IID IID_ITrkRestoreNotify = {0xD0056F6B, 0xE2A0, 0x11D0, [0xB1, 0xC2, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; - const IID IID_ITrkRestoreParser = {0x755939E3, 0xE381, 0x11D0, [0xB1, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; - const IID IID_ITrusteeAdmin = {0x0C733AA1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ITrusteeGroupAdmin = {0x0C733AA2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_ITScriptableAudioFormat = {0xB87658BD, 0x3C59, 0x4F64, [0xBE, 0x74, 0xAE, 0xDE, 0x3E, 0x86, 0xA8, 0x1E]}; - const IID IID_ITSdp = {0x9B2719D8, 0xB696, 0x11D0, [0xA4, 0x89, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_ITStaticAudioTerminal = {0xA86B7871, 0xD14C, 0x48E6, [0x92, 0x2E, 0xA8, 0xD1, 0x5F, 0x98, 0x48, 0x00]}; - const IID IID_ITStream = {0xEE3BD605, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITStreamControl = {0xEE3BD604, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITStreamQualityControl = {0x6C0AB6C2, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; - const IID IID_ITSubStream = {0xEE3BD608, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITSubStreamControl = {0xEE3BD607, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITTAPI = {0xB1EFC382, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_ITTAPI2 = {0x54FBDC8C, 0xD90F, 0x4DAD, [0x96, 0x95, 0xB3, 0x73, 0x09, 0x7F, 0x09, 0x4B]}; - const IID IID_ITTAPICallCenter = {0x5AFC3154, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; - const IID IID_ITTAPIEventNotification = {0xEDDB9426, 0x3B91, 0x11D1, [0x8F, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITTAPIObjectEvent = {0xF4854D48, 0x937A, 0x11D1, [0xBB, 0x58, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID IID_ITTAPIObjectEvent2 = {0x359DDA6E, 0x68CE, 0x4383, [0xBF, 0x0B, 0x16, 0x91, 0x33, 0xC4, 0x1B, 0x46]}; - const IID IID_ITTerminal = {0xB1EFC38A, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_ITTerminalControl = {0xAED6483B, 0x3304, 0x11D2, [0x86, 0xF1, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; - const IID IID_ITTerminalManager = {0x7170F2DE, 0x9BE3, 0x11D0, [0xA0, 0x09, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; - const IID IID_ITTerminalManager2 = {0xBB33DEC6, 0xB2C7, 0x46E6, [0x9E, 0xD1, 0x49, 0x8B, 0x91, 0xFA, 0x85, 0xAC]}; - const IID IID_ITTerminalSupport = {0xB1EFC385, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID IID_ITTerminalSupport2 = {0xF3EB39BC, 0x1B1F, 0x4E99, [0xA0, 0xC0, 0x56, 0x30, 0x5C, 0x4D, 0xD5, 0x91]}; - const IID IID_ITTime = {0x2652BB78, 0x1516, 0x11D1, [0x97, 0x71, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_ITTimeCollection = {0x0CC1F04F, 0xCAEB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID IID_ITToneDetectionEvent = {0x407E0FAF, 0xD047, 0x4753, [0xB0, 0xC6, 0x8E, 0x06, 0x03, 0x73, 0xFE, 0xCD]}; - const IID IID_ITToneTerminalEvent = {0xE6F56009, 0x611F, 0x4945, [0xBB, 0xD2, 0x2D, 0x0C, 0xE5, 0x61, 0x20, 0x56]}; - const IID IID_ITTTSTerminalEvent = {0xD964788F, 0x95A5, 0x461D, [0xAB, 0x0C, 0xB9, 0x90, 0x0A, 0x6C, 0x27, 0x13]}; - const IID IID_ITypeChangeEvents = {0x00020410, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ITypeComp = {0x00020403, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ITypeFactory = {0x0000002E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ITypeInfo = {0x00020401, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ITypeInfo2 = {0x00020412, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ITypeLib = {0x00020402, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ITypeLib2 = {0x00020411, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_ITypeMarshal = {0x0000002D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IUmiADSIPrivate = {0xCFCECB01, 0x3123, 0x4926, [0xB5, 0xE3, 0x62, 0x78, 0x08, 0x27, 0x26, 0x43]}; - const IID IID_IUniformResourceLocatorA = {0xFBF23B80, 0xE3F0, 0x101B, [0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8]}; - const IID IID_IUniformResourceLocatorW = {0xCABB0DA0, 0xDA57, 0x11CF, [0x99, 0x74, 0x00, 0x20, 0xAF, 0xD7, 0x97, 0x62]}; - const IID IID_IUnknown = {0x00000000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IUnsecuredApartment = {0x1CFABA8C, 0x1523, 0x11D1, [0xAD, 0x79, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID IID_IUPnPDescriptionDocument = {0x11D1C1B2, 0x7DAA, 0x4C9E, [0x95, 0x95, 0x7F, 0x82, 0xED, 0x20, 0x6D, 0x1E]}; - const IID IID_IUPnPDescriptionDocumentCallback = {0x77394C69, 0x5486, 0x40D6, [0x9B, 0xC3, 0x49, 0x91, 0x98, 0x3E, 0x02, 0xDA]}; - const IID IID_IUPnPDevice = {0x3D44D0D1, 0x98C9, 0x4889, [0xAC, 0xD1, 0xF9, 0xD6, 0x74, 0xBF, 0x22, 0x21]}; - const IID IID_IUPnPDeviceControl = {0x204810BA, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; - const IID IID_IUPnPDeviceDocumentAccess = {0xE7772804, 0x3287, 0x418E, [0x90, 0x72, 0xCF, 0x2B, 0x47, 0x23, 0x89, 0x81]}; - const IID IID_IUPnPDeviceFinder = {0xADDA3D55, 0x6F72, 0x4319, [0xBF, 0xF9, 0x18, 0x60, 0x0A, 0x53, 0x9B, 0x10]}; - const IID IID_IUPnPDeviceFinderAddCallbackWithI = {0x983DFC0B, 0x1796, 0x44DF, [0x89, 0x75, 0xCA, 0x54, 0x5B, 0x62, 0x0E, 0xE5]}; - const IID IID_IUPnPDeviceFinderCallback = {0x415A984A, 0x88B3, 0x49F3, [0x92, 0xAF, 0x05, 0x08, 0xBE, 0xDF, 0x0D, 0x6C]}; - const IID IID_IUPnPDeviceHostICSSupport = {0x3FFC5AE5, 0xA66B, 0x499C, [0xA1, 0x80, 0xC7, 0x39, 0x3D, 0xB6, 0xBA, 0x8D]}; - const IID IID_IUPnPDeviceHostSetup = {0x6BD34909, 0x54E7, 0x4FBF, [0x85, 0x62, 0x7B, 0x89, 0x70, 0x9A, 0x58, 0x9A]}; - const IID IID_IUPnPDeviceProvider = {0x204810B8, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; - const IID IID_IUPnPDevices = {0xFDBC0C73, 0xBDA3, 0x4C66, [0xAC, 0x4F, 0xF2, 0xD9, 0x6F, 0xDA, 0xD6, 0x8C]}; - const IID IID_IUPnPEventSink = {0x204810B4, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; - const IID IID_IUPnPEventSource = {0x204810B5, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; - const IID IID_IUPnPNAT = {0xB171C812, 0xCC76, 0x485A, [0x94, 0xD8, 0xB6, 0xB3, 0xA2, 0x79, 0x4E, 0x99]}; - const IID IID_IUPnPPrivateCallbackHelper = {0x8DCC8327, 0xDBE9, 0x48E6, [0x84, 0x6C, 0x33, 0x72, 0x58, 0x65, 0xD5, 0x0C]}; - const IID IID_IUPnPPrivateDocumentCallbackHelp = {0x19432A8E, 0x4A32, 0x4860, [0xB8, 0xFB, 0x95, 0xB1, 0x11, 0x7C, 0xD4, 0xE5]}; - const IID IID_IUPnPPrivateServiceHelper2 = {0x340F4076, 0x6856, 0x48F9, [0xB3, 0xC4, 0x97, 0xB9, 0x1B, 0x68, 0xD7, 0x7E]}; - const IID IID_IUPnPRegistrar = {0x204810B6, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; - const IID IID_IUPnPReregistrar = {0x204810B7, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; - const IID IID_IUPnPService = {0xA295019C, 0xDC65, 0x47DD, [0x90, 0xDC, 0x7F, 0xE9, 0x18, 0xA1, 0xAB, 0x44]}; - const IID IID_IUPnPServiceCallback = {0x31FADCA9, 0xAB73, 0x464B, [0xB6, 0x7D, 0x5C, 0x1D, 0x0F, 0x83, 0xC8, 0xB8]}; - const IID IID_IUPnPServiceCallbackPrivate = {0x24EA2515, 0xF612, 0x4528, [0xBA, 0x82, 0x7B, 0xD3, 0xDB, 0xBA, 0xD3, 0x03]}; - const IID IID_IUPnPServices = {0x3F8C8E9E, 0x9A7A, 0x4DC8, [0xBC, 0x41, 0xFF, 0x31, 0xFA, 0x37, 0x49, 0x56]}; - const IID IID_IUrlHistoryNotify = {0xBC40BEC1, 0xC493, 0x11D0, [0x83, 0x1B, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; - const IID IID_IUrlHistoryStg = {0x3C374A41, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; - const IID IID_IUrlHistoryStg2 = {0xAFA0DC11, 0xC313, 0x11D0, [0x83, 0x1A, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; - const IID IID_IUrlMon = {0x00000026, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IURLSearchHook = {0xAC60F6A0, 0x0FD9, 0x11D0, [0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97]}; - const IID IID_IURLSearchHook2 = {0x5EE44DA4, 0x6D32, 0x46E3, [0x86, 0xBC, 0x07, 0x54, 0x0D, 0xED, 0xD0, 0xE0]}; - const IID IID_IUrlTrackingStg = {0xF2F8CBB3, 0xB040, 0x11D0, [0xBB, 0x16, 0x00, 0xC0, 0x4F, 0xB6, 0x6F, 0x63]}; - const IID IID_IUserEventTimer = {0x0F504B94, 0x6E42, 0x42E6, [0x99, 0xE0, 0xE2, 0x0F, 0xAF, 0xE5, 0x2A, 0xB4]}; - const IID IID_IUserEventTimerCallback = {0xE9EAD8E6, 0x2A25, 0x410E, [0x9B, 0x58, 0xA9, 0xFB, 0xEF, 0x1D, 0xD1, 0xA2]}; - const IID IID_IUserNotification = {0xBA9711BA, 0x5893, 0x4787, [0xA7, 0xE1, 0x41, 0x27, 0x71, 0x51, 0x55, 0x0B]}; - const IID IID_IUtilityButton = {0x3050F6AF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID IID_IVariantChangeType = {0xA6EF9862, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; - const IID IID_IVersionHost = {0x667115AC, 0xDC02, 0x11D1, [0xBA, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; - const IID IID_IVersionVector = {0x4EB01410, 0xDB1A, 0x11D1, [0xBA, 0x53, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; - const IID IID_IViewChapter = {0x0C733A98, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IViewFilter = {0x0C733A9B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IViewObject = {0x0000010D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IViewObject2 = {0x00000127, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IViewObjectEx = {0x3AF24292, 0x0C96, 0x11CE, [0xA0, 0xCF, 0x00, 0xAA, 0x00, 0x60, 0x0A, 0xB8]}; - const IID IID_IViewRowset = {0x0C733A97, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IViewSort = {0x0C733A9A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID IID_IVirusScanEngine = {0x083DB180, 0xB4A8, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; - const IID IID_IVirusScanner = {0x4589BEE0, 0xB4B1, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; - const IID IID_IWaitMultiple = {0x0000002B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IWbemAddressResolution = {0xF7CE2E12, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID IID_IWbemBackupRestore = {0xC49E32C7, 0xBC8B, 0x11D2, [0x85, 0xD4, 0x00, 0x10, 0x5A, 0x1F, 0x83, 0x04]}; - const IID IID_IWbemBackupRestoreEx = {0xA359DEC5, 0xE813, 0x4834, [0x8A, 0x2A, 0xBA, 0x7F, 0x1D, 0x77, 0x7D, 0x76]}; - const IID IID_IWbemCallResult = {0x44ACA675, 0xE8FC, 0x11D0, [0xA0, 0x7C, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IWbemCallStatus = {0x4212DC47, 0x142E, 0x4C6C, [0xBC, 0x49, 0x6C, 0xA2, 0x32, 0xDD, 0x09, 0x59]}; - const IID IID_IWbemClassObject = {0xDC12A681, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; - const IID IID_IWbemClientConnectionTransport = {0xA889C72A, 0xFCC1, 0x4A9E, [0xAF, 0x61, 0xED, 0x07, 0x13, 0x33, 0xFB, 0x5B]}; - const IID IID_IWbemClientTransport = {0xF7CE2E11, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID IID_IWbemConfigure = {0x9A368276, 0x26CF, 0x11D0, [0xAD, 0x3C, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID IID_IWbemConfigureRefresher = {0x49353C92, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IWbemConnectorLogin = {0xD8EC9CB1, 0xB135, 0x4F10, [0x8B, 0x1B, 0xC7, 0x18, 0x8B, 0xB0, 0xD1, 0x86]}; - const IID IID_IWbemConstructClassObject = {0x9EF76194, 0x70D5, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID IID_IWbemContext = {0x44ACA674, 0xE8FC, 0x11D0, [0xA0, 0x7C, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IWbemDecoupledBasicEventProvider = {0x86336D20, 0xCA11, 0x4786, [0x9E, 0xF1, 0xBC, 0x8A, 0x94, 0x6B, 0x42, 0xFC]}; - const IID IID_IWbemDecoupledEventSink = {0xCD94EBF2, 0xE622, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; - const IID IID_IWbemDecoupledRegistrar = {0x1005CBCF, 0xE64F, 0x4646, [0xBC, 0xD3, 0x3A, 0x08, 0x9D, 0x8A, 0x84, 0xB4]}; - const IID IID_IWbemEventConsumerProvider = {0xE246107A, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID IID_IWbemEventConsumerProviderEx = {0x17CF534A, 0xD8A3, 0x4AD0, [0xAC, 0x92, 0x5E, 0x3D, 0x01, 0x71, 0x71, 0x51]}; - const IID IID_IWbemEventProvider = {0xE245105B, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID IID_IWbemEventProviderQuerySink = {0x580ACAF8, 0xFA1C, 0x11D0, [0xAD, 0x72, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID IID_IWbemEventProviderSecurity = {0x631F7D96, 0xD993, 0x11D2, [0xB3, 0x39, 0x00, 0x10, 0x5A, 0x1F, 0x4A, 0xAF]}; - const IID IID_IWbemEventSink = {0x3AE0080A, 0x7E3A, 0x4366, [0xBF, 0x89, 0x0F, 0xEE, 0xDC, 0x93, 0x16, 0x59]}; - const IID IID_IWbemHiPerfEnum = {0x2705C288, 0x79AE, 0x11D2, [0xB3, 0x48, 0x00, 0x10, 0x5A, 0x1F, 0x81, 0x77]}; - const IID IID_IWbemHiPerfProvider = {0x49353C93, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IWbemLevel1Login = {0xF309AD18, 0xD86A, 0x11D0, [0xA0, 0x75, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IWbemLocator = {0xDC12A687, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; - const IID IID_IWbemObjectAccess = {0x49353C9A, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IWbemObjectSink = {0x7C857801, 0x7381, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; - const IID IID_IWbemObjectTextSrc = {0xBFBF883A, 0xCAD7, 0x11D3, [0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; - const IID IID_IWbemPath = {0x3BC15AF2, 0x736C, 0x477E, [0x9E, 0x51, 0x23, 0x8A, 0xF8, 0x66, 0x7D, 0xCC]}; - const IID IID_IWbemPathKeyList = {0x9AE62877, 0x7544, 0x4BB0, [0xAA, 0x26, 0xA1, 0x38, 0x24, 0x65, 0x9E, 0xD6]}; - const IID IID_IWbemPropertyProvider = {0xCE61E841, 0x65BC, 0x11D0, [0xB6, 0xBD, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; - const IID IID_IWbemProviderIdentity = {0x631F7D97, 0xD993, 0x11D2, [0xB3, 0x39, 0x00, 0x10, 0x5A, 0x1F, 0x4A, 0xAF]}; - const IID IID_IWbemProviderInit = {0x1BE41572, 0x91DD, 0x11D1, [0xAE, 0xB2, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IWbemProviderInitSink = {0x1BE41571, 0x91DD, 0x11D1, [0xAE, 0xB2, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IWbemQualifierSet = {0xDC12A680, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; - const IID IID_IWbemQuery = {0x81166F58, 0xDD98, 0x11D3, [0xA1, 0x20, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; - const IID IID_IWbemRawSdAccessor = {0xC1E2D759, 0xCABD, 0x11D3, [0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; - const IID IID_IWbemRefresher = {0x49353C99, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IWbemServices = {0x9556DC99, 0x828C, 0x11CF, [0xA3, 0x7E, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; - const IID IID_IWbemShutdown = {0xB7B31DF9, 0xD515, 0x11D3, [0xA1, 0x1C, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; - const IID IID_IWbemStatusCodeText = {0xEB87E1BC, 0x3233, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; - const IID IID_IWbemTransport = {0x553FE584, 0x2156, 0x11D0, [0xB6, 0xAE, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; - const IID IID_IWbemUnboundObjectSink = {0xE246107B, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID IID_IWBScriptControl = {0xA5170870, 0x0CF8, 0x11D1, [0x8B, 0x91, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; - const IID IID_IWCContextMenuCallback = {0x97DEDE64, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IWCPropertySheetCallback = {0x97DEDE60, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IWCWizard97Callback = {0x97DEDE67, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IWCWizardCallback = {0x97DEDE62, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IWebBridge = {0xAE24FDAD, 0x03C6, 0x11D1, [0x8B, 0x76, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; - const IID IID_IWebBrowser = {0xEAB22AC1, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; - const IID IID_IWebBrowser2 = {0xD30C1661, 0xCDAF, 0x11D0, [0x8A, 0x3E, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0x6E]}; - const IID IID_IWebBrowserApp = {0x0002DF05, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID IID_IWebWizardExtension = {0x0E6B3F66, 0x98D1, 0x48C0, [0xA2, 0x22, 0xFB, 0xDE, 0x74, 0xE2, 0xFB, 0xC5]}; - const IID IID_IWebWizardHost = {0x18BCC359, 0x4990, 0x4BFB, [0xB9, 0x51, 0x3C, 0x83, 0x70, 0x2B, 0xE5, 0xF9]}; - const IID IID_IWEExtendContextMenu = {0x97DEDE65, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IWEExtendPropertySheet = {0x97DEDE61, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IWEExtendWizard = {0x97DEDE63, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IWEExtendWizard97 = {0x97DEDE68, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_IWEInvokeCommand = {0x97DEDE66, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; - const IID IID_Iwfolders = {0xBAE31F98, 0x1B81, 0x11D2, [0xA9, 0x7A, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; - const IID IID_IWindowForBindingUI = {0x79EAC9D5, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IWinInetHttpInfo = {0x79EAC9D8, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IWinInetInfo = {0x79EAC9D6, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; - const IID IID_IWizardExtension = {0xC02EA696, 0x86CC, 0x491E, [0x9B, 0x23, 0x74, 0x39, 0x4A, 0x04, 0x44, 0xA8]}; - const IID IID_IWizardSite = {0x88960F5B, 0x422F, 0x4E7B, [0x80, 0x13, 0x73, 0x41, 0x53, 0x81, 0xC3, 0xC3]}; - const IID IID_IWMIExtension = {0xADC1F06E, 0x5C7E, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; - const IID IID_IWordBreaker = {0xD53552C8, 0x77E3, 0x101A, [0xB5, 0x52, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; - const IID IID_IWordSink = {0xCC907054, 0xC058, 0x101A, [0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; - const IID IID_IWrappedProtocol = {0x53C84785, 0x8425, 0x4DC5, [0x97, 0x1B, 0xE5, 0x8D, 0x9C, 0x19, 0xF9, 0xB6]}; - const IID IID_IXMLAttribute = {0xD4D4A0FC, 0x3B73, 0x11D1, [0xB2, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0x96]}; - const IID IID_IXMLDocument = {0xF52E2B61, 0x18A1, 0x11D1, [0xB1, 0x05, 0x00, 0x80, 0x5F, 0x49, 0x91, 0x6B]}; - const IID IID_IXMLDocument2 = {0x2B8DE2FE, 0x8D2D, 0x11D1, [0xB2, 0xFC, 0x00, 0xC0, 0x4F, 0xD9, 0x15, 0xA9]}; - const IID IID_IXMLDOMAttribute = {0x2933BF85, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMCDATASection = {0x2933BF8A, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMCharacterData = {0x2933BF84, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMComment = {0x2933BF88, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMDocument = {0x2933BF81, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMDocumentFragment = {0x3EFAA413, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; - const IID IID_IXMLDOMDocumentType = {0x2933BF8B, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMElement = {0x2933BF86, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMEntity = {0x2933BF8D, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMEntityReference = {0x2933BF8E, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMImplementation = {0x2933BF8F, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMNamedNodeMap = {0x2933BF83, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMNode = {0x2933BF80, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMNodeList = {0x2933BF82, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMNotation = {0x2933BF8C, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMParseError = {0x3EFAA426, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; - const IID IID_IXMLDOMProcessingInstruction = {0x2933BF89, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDOMText = {0x2933BF87, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; - const IID IID_IXMLDSOControl = {0x310AFA62, 0x0575, 0x11D2, [0x9C, 0xA9, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; - const IID IID_IXMLElement = {0x3F7F31AC, 0xE15F, 0x11D0, [0x9C, 0x25, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; - const IID IID_IXMLElement2 = {0x2B8DE2FF, 0x8D2D, 0x11D1, [0xB2, 0xFC, 0x00, 0xC0, 0x4F, 0xD9, 0x15, 0xA9]}; - const IID IID_IXMLElementCollection = {0x65725580, 0x9B5D, 0x11D0, [0x9B, 0xFE, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; - const IID IID_IXMLError = {0x948C5AD3, 0xC58D, 0x11D0, [0x9C, 0x0B, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; - const IID IID_IXMLGenericParse = {0xE4E23071, 0x4D07, 0x11D2, [0xAE, 0x76, 0x00, 0x80, 0xC7, 0x3B, 0xC1, 0x99]}; - const IID IID_IXMLHttpRequest = {0xED8C108D, 0x4349, 0x11D2, [0x91, 0xA4, 0x00, 0xC0, 0x4F, 0x79, 0x69, 0xE8]}; - const IID IID_IXMLNodeFactory = {0xD242361F, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; - const IID IID_IXMLNodeSource = {0xD242361D, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; - const IID IID_IXMLParser = {0xD242361E, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; - const IID IID_IXTLRuntime = {0x3EFAA425, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; - const IID IID_StdOle = {0x00020430, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID KSDATAFORMAT_SUBTYPE_DIRECTMUSIC = {0x1A82F8BC, 0x3F8B, 0x11D2, [0xB7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1]}; - const IID KSDATAFORMAT_SUBTYPE_MIDI = {0x1D262760, 0xE957, 0x11CF, [0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00]}; - const IID LIBID_Accessibility = {0x1EA4DBF0, 0x3C3B, 0x11CF, [0x81, 0x0C, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71]}; - const IID LIBID_ActiveIMM = {0x4955DD30, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; - const IID LIBID_ADs = {0x97D25DB0, 0x0363, 0x11CF, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; - const IID LIBID_ALGLib = {0xB6D1D098, 0xE235, 0x4B99, [0xBA, 0x98, 0x7C, 0x62, 0x4F, 0xD8, 0x75, 0xDB]}; - const IID LIBID_AutoDiscovery = {0x4EAFB888, 0x81CB, 0x4EBA, [0xBA, 0xC9, 0xDA, 0x25, 0x4E, 0x57, 0x21, 0xF1]}; - const IID LIBID_BackgroundCopyManager = {0x1DEEB74F, 0x7915, 0x4560, [0xB5, 0x58, 0x91, 0x8C, 0x83, 0xF1, 0x76, 0xA6]}; - const IID LIBID_BackgroundCopyManager1_5 = {0xEA9319EA, 0xC628, 0x480F, [0x83, 0x31, 0x76, 0x8F, 0xAC, 0x39, 0x7E, 0x4E]}; - const IID LIBID_BackgroundCopyQMgr = {0xF5B26DCB, 0xB37E, 0x4D7C, [0xAE, 0x7A, 0x1C, 0xB3, 0xFB, 0xEB, 0x18, 0x3E]}; - const IID LIBID_CHANNELMGR = {0x4804F2E0, 0xD16E, 0x11D0, [0x80, 0x2B, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; - const IID LIBID_CLADMWIZLib = {0x24F97140, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; - const IID LIBID_ClusCfgWizard = {0x6D01FEDC, 0x8D34, 0x4728, [0xAD, 0x0B, 0xB3, 0xA2, 0x1A, 0x10, 0x3B, 0x42]}; - const IID LIBID_CommonControlObjects = {0xBCADA15B, 0xB428, 0x420C, [0x8D, 0x28, 0x02, 0x35, 0x90, 0x92, 0x4C, 0x9F]}; - const IID LIBID_DirectAnimation = {0xBCBB1F74, 0xE384, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; - const IID LIBID_DWbemServices_v3 = {0xCB7CA031, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; - const IID LIBID_DXTMSFTLib = {0x5E77EB03, 0x937C, 0x11D1, [0xB0, 0x47, 0x00, 0xAA, 0x00, 0x3B, 0x60, 0x61]}; - const IID LIBID_DXTRANSLib = {0x54314D1D, 0x35FE, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; - const IID LIBID_DXTRANSPLib = {0x527A4DA4, 0x7F2C, 0x11D2, [0xB1, 0x2D, 0x00, 0x00, 0xF8, 0x1F, 0x59, 0x95]}; - const IID LIBID_EventQLib = {0xA70080F2, 0x403B, 0x11D1, [0x88, 0x36, 0x00, 0xA0, 0xC9, 0x49, 0xAC, 0x67]}; - const IID LIBID_IASPolicyLib = {0x6BC096A5, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; - const IID LIBID_IEXTagLib = {0x7E8BC440, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; - const IID LIBID_IMAPILib = {0xC49F2184, 0x50A7, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; - const IID LIBID_ImgUtilLib = {0xCF790840, 0x2DC4, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; - const IID LIBID_ITRKADMNLib = {0xA2531F35, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; - const IID LIBID_McastLib = {0x64217CC0, 0xA285, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; - const IID LIBID_MSHTML = {0x3050F1C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID LIBID_MSHTMLINTERNAL = {0x3050F7E1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID LIBID_MSTIME = {0x87C96271, 0xADDB, 0x4745, [0xB2, 0xE8, 0xDF, 0x88, 0xA8, 0x47, 0x2F, 0xD1]}; - const IID LIBID_MSXML = {0xD63E0CE2, 0xA0A2, 0x11D0, [0x9C, 0x02, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; - const IID LIBID_MultiLanguage = {0x275C23E0, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; - const IID LIBID_NATUPNPLib = {0x1C565858, 0xF302, 0x471E, [0xB4, 0x09, 0xF1, 0x80, 0xAA, 0x4A, 0xBE, 0xC6]}; - const IID LIBID_NETCONLib = {0x43E734CA, 0x043D, 0x4A70, [0x9A, 0x2C, 0xA8, 0xF2, 0x54, 0x06, 0x3D, 0x91]}; - const IID LIBID_PassiveSink = {0xE002EEEF, 0xE6EA, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; - const IID LIBID_ProcessDebugManagerLib = {0x78A51821, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; - const IID LIBID_RENDLib = {0xF1029E4D, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID LIBID_RTCCORELib = {0xCD260094, 0xDE10, 0x4AEE, [0xAC, 0x73, 0xEF, 0x87, 0xF6, 0xE1, 0x26, 0x83]}; - const IID LIBID_SDOIASLib = {0x81DDF732, 0x4AA8, 0x4A35, [0xBD, 0xFF, 0x8B, 0x42, 0xEF, 0xE7, 0xC6, 0x24]}; - const IID LIBID_SDPBLBLib = {0xC259D79A, 0xC8AB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; - const IID LIBID_SensEvents = {0xD597DEED, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; - const IID LIBID_SHDocVw = {0xEAB22AC0, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; - const IID LIBID_Shell32 = {0x50A7E9B0, 0x70EF, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; - const IID LIBID_ShellImageData = {0x0B8AFF06, 0x8DF0, 0x4F13, [0x8E, 0x25, 0x25, 0xB2, 0x31, 0x9C, 0x43, 0x6A]}; - const IID LIBID_ShellObjects = {0x50A7E9B1, 0x70EF, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; - const IID LIBID_SHGINALib = {0x0A055C02, 0xBABE, 0x4480, [0xBB, 0x7B, 0xA8, 0xEC, 0x72, 0x3C, 0xE9, 0xC0]}; - const IID LIBID_SubscriptionMgr = {0xC54FD88A, 0xFFA1, 0x11D0, [0xBC, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; - const IID LIBID_TAPI3Lib = {0x21D6D480, 0xA88B, 0x11D0, [0x83, 0xDD, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; - const IID LIBID_TERMMGRLib = {0x28DCD85B, 0xACA4, 0x11D0, [0xA0, 0x28, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; - const IID LIBID_UPnPHostLib = {0x204810B3, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; - const IID LIBID_UPNPLib = {0xDB3442A7, 0xA2E9, 0x4A59, [0x9C, 0xB5, 0xF5, 0xC1, 0xA5, 0xD9, 0x01, 0xE5]}; - const IID LIBID_VIRUSSCAN = {0x5F47DB70, 0xD9FE, 0x11D0, [0x95, 0x64, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; - const IID LIBID_WbemClient_v1 = {0x7EC196FE, 0x7005, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID LIBID_WbemProviders_v1 = {0x092DF710, 0x7010, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; - const IID LIBID_WbemScripting = {0x565783C6, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; - const IID LIBID_WbemTransports_v1 = {0x027947F3, 0xD731, 0x11CE, [0xA3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]}; - const IID LIBID_WbemUtilities_v1 = {0x226C9290, 0xDD96, 0x11D3, [0xA1, 0x20, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; - const IID LIBID_WebCheck = {0x10BD2E25, 0xF235, 0x11CF, [0xB5, 0xDD, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xEC]}; - const IID LIBID_WMIEXTENSIONLib = {0xE503D000, 0x5C7F, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; - const IID LIBID_XENROLLLib = {0x43F8F27B, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; - const IID LIBID_XMLPSR = {0xD242361C, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; - const IID MDGUID_MDX = {0xA07CCCD0, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; - const IID MDSCHEMA_ACTIONS = {0xA07CCD08, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; - const IID MDSCHEMA_COMMANDS = {0xA07CCD09, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; - const IID MDSCHEMA_CUBES = {0xC8B522D8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID MDSCHEMA_DIMENSIONS = {0xC8B522D9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID MDSCHEMA_FUNCTIONS = {0xA07CCD07, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; - const IID MDSCHEMA_HIERARCHIES = {0xC8B522DA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID MDSCHEMA_LEVELS = {0xC8B522DB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID MDSCHEMA_MEASURES = {0xC8B522DC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID MDSCHEMA_MEMBERS = {0xC8B522DE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID MDSCHEMA_PROPERTIES = {0xC8B522DD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; - const IID MDSCHEMA_SETS = {0xA07CCD0B, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; - const IID NAMEDTIMER_DRAW = {0x3050F362, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID NOTFCOOKIE_SCHEDULE_GROUP_DAILY = {0xD34F18B0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTFCOOKIE_SCHEDULE_GROUP_MANUAL = {0xD34F18B3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTFCOOKIE_SCHEDULE_GROUP_MONTHLY = {0xD34F18B2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTFCOOKIE_SCHEDULE_GROUP_WEEKLY = {0xD34F18B1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_11 = {0xD34F17FB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_12 = {0xD34F17FC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_13 = {0xD34F17FD, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_14 = {0xD34F17FE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_15 = {0xD34F17FF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_AGENT_INIT = {0x1E4A7390, 0xC70B, 0x11D0, [0x95, 0xF8, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xEC]}; - const IID NOTIFICATIONTYPE_AGENT_START = {0xD34F17EC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_ALERT = {0xD34F17E3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_ANOUNCMENT = {0xD34F17E1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_BEGIN_REPORT = {0xD34F17EE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_CONFIG_CHANGED = {0xD34F17F2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_CONNECT_TO_INTERNET = {0xD34F17F0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_d = {0xD34F17F8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_DISCONNECT_FROM_INTE = {0xD34F17F1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_e = {0xD34F17F9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_END_REPORT = {0xD34F17EF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_f = {0xD34F17FA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_GROUP_DONE = {0xD34F1885, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_GROUP_RESTART = {0xD34F1884, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_GROUP_START = {0xD34F1883, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_i6 = {0xD34F1886, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_i7 = {0xD34F1887, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_i8 = {0xD34F1888, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_i9 = {0xD34F1889, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_iA = {0xD34F188A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_iB = {0xD34F188B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_iC = {0xD34F188C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_iD = {0xD34F188D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_iE = {0xD34F188E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_iF = {0xD34F188F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_INET_IDLE = {0xD34F17E4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_INET_OFFLINE = {0xD34F17E5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_INET_ONLINE = {0xD34F17E6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_ITEM_DONE = {0xD34F1882, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_ITEM_RESTART = {0xD34F1881, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_ITEM_START = {0xD34F1880, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_NULL = {0xD34F17E0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_PROGRESS_REPORT = {0xD34F17F3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_0 = {0xD34F1800, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_1 = {0xD34F1801, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_2 = {0xD34F1802, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_3 = {0xD34F1803, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_4 = {0xD34F1804, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_5 = {0xD34F1805, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_6 = {0xD34F1806, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_7 = {0xD34F1807, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_8 = {0xD34F1808, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_9 = {0xD34F1809, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_A = {0xD34F180A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_B = {0xD34F180B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_C = {0xD34F180C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_D = {0xD34F180D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_E = {0xD34F180E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_START_F = {0xD34F180F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_TASK = {0xD34F17E2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_TASKS_ABORT = {0xD34F17E9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_TASKS_COMPLETED = {0xD34F17EA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_TASKS_ERROR = {0xD34F17F7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_TASKS_PROGRESS = {0xD34F17EB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_TASKS_RESUME = {0xD34F17E8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_TASKS_STARTED = {0xD34F17F6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_TASKS_SUSPEND = {0xD34F17E7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_USER_IDLE_BEGIN = {0xD34F17F4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID NOTIFICATIONTYPE_USER_IDLE_END = {0xD34F17F5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; - const IID OLE_DATAPATH_ALLIMAGE = {0x0002DE0E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_ALLMM = {0x0002DE18, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_ALLTEXT = {0x0002DE1E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_ANSITEXT = {0x0002DE19, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_AVI = {0x0002DE0F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_BASICAUDIO = {0x0002DE12, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_BIFF = {0x0002DE21, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_BMP = {0x0002DE01, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_CGM = {0x0002DE0B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_COMMONIMAGE = {0x0002DE0D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_DIB = {0x0002DE02, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_DIF = {0x0002DE1F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_ENHMF = {0x0002DE04, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_EPS = {0x0002DE0C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_GIF = {0x0002DE05, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_HTML = {0x0002DE1C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_JPEG = {0x0002DE06, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_MIDI = {0x0002DE13, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_MPEG = {0x0002DE10, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_PALETTE = {0x0002DE22, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_PCX = {0x0002DE09, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_PENDATA = {0x0002DE23, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_PICT = {0x0002DE0A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_POSTSCRIPT = {0x0002DE1D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_QUICKTIME = {0x0002DE11, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_RIFF = {0x0002DE15, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_RTF = {0x0002DE1B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_SOUND = {0x0002DE16, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_SYLK = {0x0002DE20, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_TIFF = {0x0002DE07, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_UNICODE = {0x0002DE1A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_VIDEO = {0x0002DE17, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_WAV = {0x0002DE14, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_WMF = {0x0002DE03, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLE_DATAPATH_XBM = {0x0002DE08, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; - const IID OLEDB_SVC_DSLPropertyPages = {0x51740C02, 0x7E8E, 0x11D2, [0xA0, 0x2D, 0x00, 0xC0, 0x4F, 0xA3, 0x73, 0x48]}; - const IID PSGUID_QUERY = {0x49691C90, 0x7E17, 0x101A, [0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9]}; - const IID RESCLASSTYPE_IPAddress = {0x57A80E0F, 0x6F18, 0x458B, [0xA7, 0x2A, 0xD1, 0x17, 0x0C, 0x47, 0x93, 0x90]}; - const IID RESCLASSTYPE_NetworkName = {0xBBA69EB9, 0xF5D0, 0x487B, [0x92, 0xAE, 0x1B, 0xA1, 0x0F, 0x39, 0x21, 0x58]}; - const IID RESCLASSTYPE_StorageDevice = {0x12453A47, 0x8C5E, 0x4837, [0xBA, 0xC6, 0xB2, 0x54, 0xB8, 0xF2, 0x64, 0xCC]}; - const IID RESTYPE_ClusterIPAddress = {0xE50DF832, 0x477C, 0x440C, [0xB7, 0xA3, 0x38, 0x23, 0xA6, 0xEF, 0x6C, 0xCB]}; - const IID RESTYPE_ClusterNetName = {0xB2897CCF, 0x8D2C, 0x4BC1, [0xB4, 0x96, 0x6E, 0x2B, 0xC7, 0xA0, 0xBB, 0x38]}; - const IID RESTYPE_ClusterQuorumDisk = {0xD9DDFB80, 0x0BDC, 0x40D4, [0xB3, 0x96, 0x1A, 0xFD, 0x77, 0xDD, 0xD1, 0x9C]}; - const IID RESTYPE_GenericScript = {0xF372184D, 0xDFDB, 0x4370, [0xA0, 0x05, 0xE1, 0xEF, 0x30, 0x1B, 0x23, 0xA4]}; - const IID RESTYPE_IPAddress = {0xE61ADE71, 0xC79A, 0x4FDA, [0xB1, 0xDB, 0xA9, 0xB8, 0xD2, 0x0C, 0x8B, 0x14]}; - const IID RESTYPE_LocalQuorum = {0xF004656D, 0x5B48, 0x4580, [0xA1, 0xF4, 0xC3, 0xEC, 0x14, 0x98, 0x3D, 0x1E]}; - const IID RESTYPE_MajorityNodeSet = {0x56BFAE11, 0xD2F7, 0x4F4F, [0x99, 0x52, 0x55, 0xAF, 0x19, 0xBA, 0xC3, 0xE9]}; - const IID RESTYPE_NetworkName = {0xC1D2FE1E, 0xD332, 0x445F, [0x8D, 0xA1, 0x12, 0xE5, 0xE2, 0xD3, 0x7C, 0xBF]}; - const IID RESTYPE_PhysicalDisk = {0xCC558763, 0x3386, 0x42EF, [0xB1, 0x50, 0xBE, 0x79, 0x33, 0x44, 0xD4, 0x5F]}; - const IID SID_CtxQueryAssociations = {0xFAADFC40, 0xB777, 0x4B69, [0xAA, 0x81, 0x77, 0x03, 0x5E, 0xF0, 0xE6, 0xE8]}; - const IID SID_SContainerDispatch = {0xB722BE00, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; - const IID SID_SDataPathBrowser = {0xFC4801A5, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; - const IID SID_SGetViewFromViewDual = {0x889A935D, 0x971E, 0x4B12, [0xB9, 0x0C, 0x24, 0xDF, 0xC9, 0xE1, 0xE5, 0xE8]}; - const IID SID_SHTMLEditServices = {0x3050F7F9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; - const IID SID_STopLevelBrowser = {0x4C96BE40, 0x915C, 0x11CF, [0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37]}; - const IID SID_STopWindow = {0x49E1B500, 0x4636, 0x11D3, [0x97, 0xF7, 0x00, 0xC0, 0x4F, 0x45, 0xD0, 0xB3]}; - const IID SID_SVersionHost = {0x371EA634, 0xDC5C, 0x11D1, [0xBA, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; - const IID TAPIMEDIATYPE_Audio = {0x028ED8C2, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID TAPIMEDIATYPE_DataModem = {0x028ED8C6, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID TAPIMEDIATYPE_G3Fax = {0x028ED8C7, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID TAPIMEDIATYPE_Video = {0x028ED8C4, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID TAPIPROTOCOL_H323 = {0x831CE2D7, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID TAPIPROTOCOL_Multicast = {0x831CE2D8, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID TAPIPROTOCOL_PSTN = {0x831CE2D6, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; - const IID TASK_AnalyzeCluster = {0x3140B5A6, 0x9AFA, 0x4588, [0x8C, 0xA0, 0x9B, 0xE8, 0xF8, 0xB6, 0x15, 0x06]}; - const IID TASK_CommitClusterChanges = {0x2D03030B, 0xF084, 0x4807, [0xBB, 0xAC, 0x94, 0x26, 0x9E, 0x50, 0xB5, 0x6F]}; - const IID TASKID_Major_Check_Cluster_Feasibili = {0xEBC8AEFF, 0x10C3, 0x4D5B, [0xAC, 0x17, 0xFC, 0x0F, 0x4C, 0x38, 0x71, 0xB7]}; - const IID TASKID_Major_Check_Node_Feasibility = {0xCC5E57B1, 0x4520, 0x4672, [0xB4, 0xBA, 0xA2, 0x88, 0xEC, 0x42, 0x94, 0x6E]}; - const IID TASKID_Major_Checking_For_Existing_Cl = {0xB8453B8F, 0x92FD, 0x4350, [0xA6, 0xD9, 0x55, 0x1F, 0xD0, 0x18, 0xB7, 0x91]}; - const IID TASKID_Major_Client_And_Server_Log = {0xCD36919C, 0x9F31, 0x46B4, [0xA2, 0x9D, 0xAC, 0x87, 0xF4, 0xE6, 0xCC, 0x93]}; - const IID TASKID_Major_Client_Log = {0x64ECA0EA, 0x9CB6, 0x4324, [0x97, 0x02, 0xDF, 0x15, 0xC6, 0x96, 0xC3, 0x0A]}; - const IID TASKID_Major_Configure_Cluster_Servic = {0x7C5F0774, 0x1611, 0x42B5, [0xAF, 0x3C, 0x6E, 0x12, 0x4A, 0xC4, 0xD3, 0x6B]}; - const IID TASKID_Major_Configure_Resource_Type = {0x6D47AF1F, 0x7F17, 0x4B80, [0x8F, 0xAB, 0x3A, 0x2D, 0x19, 0xB1, 0x23, 0x3D]}; - const IID TASKID_Major_Configure_Resources = {0x411BCDEC, 0x69D3, 0x4485, [0x8D, 0x5D, 0xE1, 0x9E, 0xE7, 0x7A, 0x6D, 0xD4]}; - const IID TASKID_Major_Establish_Connection = {0x93C32F99, 0x39CA, 0x4D38, [0x9D, 0x7F, 0x27, 0x07, 0xCA, 0x0E, 0xAF, 0x46]}; - const IID TASKID_Major_Find_Devices = {0x036BF567, 0x2377, 0x4BB3, [0x8A, 0xE1, 0xE4, 0x10, 0x4E, 0x2E, 0xB3, 0xC5]}; - const IID TASKID_Major_Reanalyze = {0xE25968DA, 0x9C7B, 0x42DB, [0xAD, 0xA9, 0xBC, 0x4E, 0x34, 0xF1, 0x7E, 0x6E]}; - const IID TASKID_Major_Server_Log = {0x05AA0768, 0x5F49, 0x49CD, [0xAF, 0xDC, 0x96, 0xF9, 0xD5, 0x18, 0x02, 0xD4]}; - const IID TASKID_Minor_Update_Progress = {0x2362D3DA, 0xA6A4, 0x4551, [0xB8, 0x46, 0x7B, 0xB3, 0xA1, 0x36, 0x5F, 0x56]}; - const IID TID_D3DRMAnimation = {0x3D82AB4F, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMAnimationKey = {0x10DD46A8, 0x775B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMAnimationOptions = {0xE2BF56C0, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMAnimationSet = {0x3D82AB50, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMAppData = {0xE5745280, 0xB24F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; - const IID TID_D3DRMBoolean = {0x537DA6A0, 0xCA37, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; - const IID TID_D3DRMBoolean2d = {0x4885AE63, 0x78E8, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMCamera = {0x3D82AB51, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMColorRGB = {0xD3E16E81, 0x7835, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMColorRGBA = {0x35FF44E0, 0x6C7C, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMCoords2d = {0xF6F23F44, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMExternalVisual = {0x98116AA0, 0xBDBA, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; - const IID TID_D3DRMFloatKeys = {0x10DD46A9, 0x775B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMFrame = {0x3D82AB46, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMFramePosition = {0xE2BF56C1, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMFrameRotation = {0xE2BF56C3, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMFrameTransformMatrix = {0xF6F23F41, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMFrameVelocity = {0xE2BF56C2, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMGuid = {0xA42790E0, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMIndexedColor = {0x1630B820, 0x7842, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMInfo = {0x2B957100, 0x9E9A, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMInlineData = {0x3A23EEA0, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMLight = {0x3D82AB4A, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMLightAttenuation = {0xA8A98BA0, 0xC5E5, 0x11CF, [0xB9, 0x41, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; - const IID TID_D3DRMLightPenumbra = {0xAED22741, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; - const IID TID_D3DRMLightRange = {0xAED22742, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; - const IID TID_D3DRMLightUmbra = {0xAED22740, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; - const IID TID_D3DRMMaterial = {0x3D82AB4D, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMMaterialAmbientColor = {0x01411840, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMaterialArray = {0x35FF44E1, 0x6C7C, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMaterialDiffuseColor = {0x01411841, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMaterialEmissiveColor = {0xD3E16E80, 0x7835, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMaterialPower = {0x01411843, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMaterialSpecularColor = {0x01411842, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMaterialWrap = {0x4885AE60, 0x78E8, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMatrix4x4 = {0xF6F23F45, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMesh = {0x3D82AB44, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMMeshFace = {0x3D82AB5F, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMMeshFaceWraps = {0xED1EC5C0, 0xC0A8, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; - const IID TID_D3DRMMeshMaterialList = {0xF6F23F42, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMeshNormals = {0xF6F23F43, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMeshTextureCoords = {0xF6F23F40, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMMeshVertexColors = {0x1630B821, 0x7842, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMProgressiveMesh = {0x8A63C360, 0x997D, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; - const IID TID_D3DRMPropertyBag = {0x7F0F21E1, 0xBFE1, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; - const IID TID_D3DRMRightHanded = {0x7F5D5EA0, 0xD53A, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; - const IID TID_D3DRMStringProperty = {0x7F0F21E0, 0xBFE1, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; - const IID TID_D3DRMTextureFilename = {0xA42790E1, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMTextureReference = {0xA42790E2, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMTimedFloatKeys = {0xF406B180, 0x7B3B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; - const IID TID_D3DRMUrl = {0x3A23EEA1, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_D3DRMVector = {0x3D82AB5E, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; - const IID TID_DXFILEHeader = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID _DBBMKGUID = {0xF6304BB0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +enum IID _DBCIDGUID = {0xFE284700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +enum IID _GUID_NAMEONLY = {0xE8BF1170, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +enum IID ARRAYID_PathProperties = {0x7ECBBA04, 0x2D97, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID BFID_GRAY_16 = {0xF9D6BC00, 0x449C, 0x11D0, [0x91, 0x8C, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +enum IID BFID_GRAY_8 = {0xD93DE910, 0x449C, 0x11D0, [0x91, 0x8C, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +enum IID BFID_MONOCHROME = {0xE436EB78, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +enum IID BFID_RGB_24 = {0xE436EB7D, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +enum IID BFID_RGB_32 = {0xE436EB7E, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +enum IID BFID_RGB_4 = {0xE436EB79, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +enum IID BFID_RGB_555 = {0xE436EB7C, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +enum IID BFID_RGB_565 = {0xE436EB7B, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +enum IID BFID_RGB_8 = {0xE436EB7A, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +enum IID BFID_RGBA_32 = {0x773C9AC0, 0x3274, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +enum IID BHID_LinkTargetItem = {0x3981E228, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +enum IID BHID_SFObject = {0x3981E224, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +enum IID BHID_SFUIObject = {0x3981E225, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +enum IID BHID_SFViewObject = {0x3981E226, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +enum IID BHID_Storage = {0x3981E227, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +enum IID BHID_StorageEnum = {0x4621A4E3, 0xF0D6, 0x4773, [0x8A, 0x9C, 0x46, 0xE7, 0x7B, 0x17, 0x48, 0x40]}; +enum IID BHID_Stream = {0x1CEBB3AB, 0x7C10, 0x499A, [0xA4, 0x17, 0x92, 0xCA, 0x16, 0xC4, 0xCB, 0x83]}; +enum IID CATID_BrowsableShellExt = {0x00021490, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CATID_BrowseInPlace = {0x00021491, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CATID_ClusCfgCapabilities = {0x4653EEC4, 0x2788, 0x4EBD, [0xA8, 0x31, 0x7E, 0x0D, 0x9F, 0x82, 0xD6, 0xE7]}; +enum IID CATID_ClusCfgMemberSetChangeListener = {0x8A43EAD4, 0x10F1, 0x440D, [0x8D, 0xAA, 0x1F, 0xE3, 0x8D, 0x16, 0x98, 0xCD]}; +enum IID CATID_ClusCfgResourceTypes = {0x7C4CAE52, 0xCAC9, 0x499D, [0x82, 0xC6, 0xBC, 0x6A, 0x21, 0x77, 0xE5, 0x56]}; +enum IID CATID_ClusCfgStartupListeners = {0xDF406DB4, 0x7872, 0x4A99, [0xBB, 0x3C, 0x14, 0xA9, 0xC3, 0x39, 0x33, 0xD1]}; +enum IID CATID_CommBand = {0x00021494, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CATID_Control = {0x40FC6ED4, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +enum IID CATID_DesignTimeUIActivatableControl = {0xF2BB56D1, 0xDB07, 0x11D1, [0xAA, 0x6B, 0x00, 0x60, 0x97, 0xDB, 0x95, 0x39]}; +enum IID CATID_DeskBand = {0x00021492, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CATID_DocObject = {0x40FC6ED8, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +enum IID CATID_EnumClusCfgManagedResources = {0x02A34F88, 0xD31A, 0x4688, [0xBD, 0xDD, 0x38, 0xA7, 0x39, 0xE4, 0xF8, 0x9B]}; +enum IID CATID_InfoBand = {0x00021493, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CATID_Insertable = {0x40FC6ED3, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +enum IID CATID_InternetAware = {0x0DE86A58, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID CATID_IsShortcut = {0x40FC6ED6, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +enum IID CATID_MARSHALER = {0x00000003, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CATID_NeverShowExt = {0x40FC6ED7, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +enum IID CATID_PersistsToFile = {0x0DE86A56, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID CATID_PersistsToMemory = {0x0DE86A55, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID CATID_PersistsToMoniker = {0x0DE86A51, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID CATID_PersistsToPropertyBag = {0x0DE86A57, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID CATID_PersistsToStorage = {0x0DE86A52, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID CATID_PersistsToStream = {0x0DE86A54, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID CATID_PersistsToStreamInit = {0x0DE86A53, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID CATID_Printable = {0x40FC6ED9, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +enum IID CATID_Programmable = {0x40FC6ED5, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +enum IID CATID_RequiresDataPathHost = {0x0DE86A50, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID CATID_SafeForInitializing = {0x7DD95802, 0x9882, 0x11CF, [0x9F, 0xA9, 0x00, 0xAA, 0x00, 0x6C, 0x42, 0xC4]}; +enum IID CATID_SafeForScripting = {0x7DD95801, 0x9882, 0x11CF, [0x9F, 0xA9, 0x00, 0xAA, 0x00, 0x6C, 0x42, 0xC4]}; +enum IID CGID_DocHostCommandHandler = {0xF38BC242, 0xB950, 0x11D1, [0x89, 0x18, 0x00, 0xC0, 0x4F, 0xC2, 0xC8, 0x36]}; +enum IID CGID_DownloadHost = {0xE0608728, 0xAE4C, 0x11D1, [0xBA, 0x40, 0x00, 0xC0, 0x4F, 0xB9, 0x2D, 0x79]}; +enum IID CGID_Explorer = {0x000214D0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CGID_ExplorerBarDoc = {0x000214D3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CGID_InternetExplorer = {0xEB7EED00, 0xF74D, 0x11D2, [0xBB, 0x7F, 0x00, 0x10, 0x4B, 0x35, 0xE7, 0xF9]}; +enum IID CGID_MSHTML = {0xDE4BA900, 0x59CA, 0x11CF, [0x95, 0x92, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID CGID_ShellDocView = {0x000214D1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CGID_ShellServiceObject = {0x000214D2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CGID_ShortCut = {0x93A68750, 0x951A, 0x11D1, [0x94, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; +enum IID CLSID_1 = {0xD34F1813, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_2 = {0xD34F1814, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_3 = {0xD34F1815, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_4 = {0xD34F1816, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_5 = {0xD34F1817, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_6 = {0xD34F1818, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_7 = {0xD34F1819, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_8 = {0xD34F181A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_9 = {0xD34F181B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_a = {0xD34F181C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_AboutProtocol = {0x3050F406, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_AccessControlEntry = {0xB75AC000, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID CLSID_AccessControlList = {0xB85EA052, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID CLSID_AccountDiscovery = {0x3DAB30ED, 0x8132, 0x40BF, [0xA8, 0xBA, 0x7B, 0x50, 0x57, 0xF0, 0xCD, 0x10]}; +enum IID CLSID_ACLCustomMRU = {0x6935DB93, 0x21E8, 0x4CCC, [0xBE, 0xB9, 0x9F, 0xE3, 0xC7, 0x7A, 0x29, 0x7A]}; +enum IID CLSID_ACLHistory = {0x00BB2764, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +enum IID CLSID_ACListISF = {0x03C036F1, 0xA186, 0x11D0, [0x82, 0x4A, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83]}; +enum IID CLSID_ACLMRU = {0x6756A641, 0xDE71, 0x11D0, [0x83, 0x1B, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83]}; +enum IID CLSID_ACLMulti = {0x00BB2765, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +enum IID CLSID_ActiveDesktop = {0x75048700, 0xEF1F, 0x11D0, [0x98, 0x88, 0x00, 0x60, 0x97, 0xDE, 0xAC, 0xF9]}; +enum IID CLSID_AdapterInfo = {0x6F9942C9, 0xC1B1, 0x4AB5, [0x93, 0xDA, 0x60, 0x58, 0x99, 0x1D, 0xC8, 0xF3]}; +enum IID CLSID_AddrControl = {0x00000348, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_AddressBarParser = {0xE0E11A09, 0x5CB8, 0x4B6C, [0x83, 0x32, 0xE0, 0x07, 0x20, 0xA1, 0x68, 0xF2]}; +enum IID CLSID_ADsDSOObject = {0x549365D0, 0xEC26, 0x11CF, [0x83, 0x10, 0x00, 0xAA, 0x00, 0xB5, 0x05, 0xDB]}; +enum IID CLSID_ADsSecurityUtility = {0xF270C64A, 0xFFB8, 0x4AE4, [0x85, 0xFE, 0x3A, 0x75, 0xE5, 0x34, 0x79, 0x66]}; +enum IID CLSID_ADSystemInfo = {0x50B6327F, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; +enum IID CLSID_AlgSetup = {0x27D0BCCC, 0x344D, 0x4287, [0xAF, 0x37, 0x0C, 0x72, 0xC1, 0x61, 0xC1, 0x4C]}; +enum IID CLSID_AllClasses = {0x00000330, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_AlphabeticalCategorizer = {0x3C2654C6, 0x7372, 0x4F6B, [0xB3, 0x10, 0x55, 0xD6, 0x12, 0x8F, 0x49, 0xD2]}; +enum IID CLSID_AnchorClick = {0x13D5413C, 0x33B9, 0x11D2, [0x95, 0xA7, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; +enum IID CLSID_AnimationComposerFactory = {0x332B2A56, 0xF86C, 0x47E7, [0x86, 0x02, 0xFC, 0x42, 0xAC, 0x8B, 0x99, 0x20]}; +enum IID CLSID_AnimationComposerSiteFactory = {0x16911A65, 0xD41D, 0x4431, [0x87, 0xF7, 0xE7, 0x57, 0xF4, 0xD0, 0x3B, 0xD8]}; +enum IID CLSID_ApplicationGatewayServices = {0xF8ADE1D3, 0x49DF, 0x4B75, [0x90, 0x05, 0xEF, 0x95, 0x08, 0xE6, 0xA3, 0x37]}; +enum IID CLSID_AutoComplete = {0x00BB2763, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +enum IID CLSID_AutoDiscoveryProvider = {0xC4F3D5BF, 0x4809, 0x44E3, [0x84, 0xA4, 0x36, 0x8B, 0x6B, 0x33, 0xB0, 0xB4]}; +enum IID CLSID_AutoplayForSlideShow = {0x00E7B358, 0xF65B, 0x4DCF, [0x83, 0xDF, 0xCD, 0x02, 0x6B, 0x94, 0xBF, 0xD4]}; +enum IID CLSID_b = {0xD34F181D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_BackgroundCopyManager = {0x4991D34B, 0x80A1, 0x4291, [0x83, 0xB6, 0x33, 0x28, 0x36, 0x6B, 0x90, 0x97]}; +enum IID CLSID_BackgroundCopyManager1_5 = {0xF087771F, 0xD74F, 0x4C1A, [0xBB, 0x8A, 0xE1, 0x6A, 0xCA, 0x91, 0x24, 0xEA]}; +enum IID CLSID_BackgroundCopyQMgr = {0x69AD4AEE, 0x51BE, 0x439B, [0xA9, 0x2C, 0x86, 0xAE, 0x49, 0x0E, 0x8B, 0x30]}; +enum IID CLSID_BackLink = {0xFCBF906F, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_BasicImageEffects = {0x16B280C8, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID CLSID_BasicImageEffectsPP = {0x16B280C9, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID CLSID_BlockFormats = {0x3050F831, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_BridgeTerminal = {0x8EBAE7A3, 0x8943, 0x11D1, [0x96, 0xB8, 0x00, 0xC0, 0x4F, 0xB6, 0xE8, 0x66]}; +enum IID CLSID_c = {0xD34F181E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_CAccPropServices = {0xB5F8350B, 0x0548, 0x48B1, [0xA6, 0xEE, 0x88, 0xBD, 0x00, 0xB4, 0xA5, 0xE7]}; +enum IID CLSID_CActiveIMM = {0x4955DD33, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +enum IID CLSID_CAnchorBrowsePropertyPage = {0x3050F3BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CaseIgnoreList = {0x15F88A55, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_CCheckBox = {0x3050F686, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CColorPropPage = {0x0BE35201, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +enum IID CLSID_CCombobox = {0x3050F678, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CDBurn = {0xFBEB8A05, 0xBEEE, 0x4442, [0x80, 0x4E, 0x40, 0x9D, 0x6C, 0x45, 0x15, 0xE9]}; +enum IID CLSID_CDebugDocumentHelper = {0x83B8BCA6, 0x687C, 0x11D0, [0xA4, 0x05, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; +enum IID CLSID_CDeviceRect = {0x3050F6D4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CDirect3DRM = {0x4516EC41, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID CLSID_CDirect3DRMAnimation = {0x4FA35698, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMAnimationSet = {0x4FA35699, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMClippedVisual = {0x5434E72D, 0x6D66, 0x11D1, [0xBB, 0x0B, 0x00, 0x00, 0xF8, 0x75, 0x86, 0x5A]}; +enum IID CLSID_CDirect3DRMDevice = {0x4FA3568E, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMFace = {0x4FA35693, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMFrame = {0x4FA35690, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMFrameInterpolator = {0x0DE9EAA2, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID CLSID_CDirect3DRMLight = {0x4FA35694, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMLightInterpolator = {0x0DE9EAA6, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID CLSID_CDirect3DRMMaterial = {0x4FA35697, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMMaterialInterpolato = {0x0DE9EAA7, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID CLSID_CDirect3DRMMesh = {0x4FA35691, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMMeshBuilder = {0x4FA35692, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMMeshInterpolator = {0x0DE9EAA3, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID CLSID_CDirect3DRMProgressiveMesh = {0x4516EC40, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID CLSID_CDirect3DRMShadow = {0x4FA3569B, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMTexture = {0x4FA35695, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMTextureInterpolator = {0x0DE9EAA8, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID CLSID_CDirect3DRMUserVisual = {0x4FA3569A, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMViewport = {0x4FA3568F, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirect3DRMViewportInterpolato = {0x0DE9EAA1, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID CLSID_CDirect3DRMWrap = {0x4FA35696, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID CLSID_CDirectXFile = {0x4516EC43, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID CLSID_CDLAgent = {0x7D559C10, 0x9FE9, 0x11D0, [0x93, 0xF7, 0x00, 0xAA, 0x00, 0x59, 0xCE, 0x02]}; +enum IID CLSID_CdlProtocol = {0x3DD53D40, 0x7B8B, 0x11D0, [0xB0, 0x13, 0x00, 0xAA, 0x00, 0x59, 0xCE, 0x02]}; +enum IID CLSID_CDocBrowsePropertyPage = {0x3050F3B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CDownloadBehavior = {0x3050F5BE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CEnroll = {0x43F8F289, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; +enum IID CLSID_CEventObj = {0x3050F48A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CFontPropPage = {0x0BE35200, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +enum IID CLSID_CFSIconOverlayManager = {0x63B51F81, 0xC868, 0x11D0, [0x99, 0x9C, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; +enum IID CLSID_ChannelAgent = {0xE3A8BDE6, 0xABCE, 0x11D0, [0xBC, 0x4B, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +enum IID CLSID_ChannelMgr = {0xB3CDAE90, 0xD170, 0x11D0, [0x80, 0x2B, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; +enum IID CLSID_CHeaderFooter = {0x3050F6CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CHtmlArea = {0x3050F64F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CIEOptionElement = {0x3050F698, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CIESelectElement = {0x3050F688, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CImageBrowsePropertyPage = {0x3050F3B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_ClassInstallFilter = {0x32B533BB, 0xEDAE, 0x11D0, [0xBD, 0x5A, 0x00, 0xAA, 0x00, 0xB9, 0x2A, 0xF1]}; +enum IID CLSID_CLayoutRect = {0x3050F664, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_ClientCaps = {0x7E8BC44E, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +enum IID CLSID_ClusAppWiz = {0x24F97150, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; +enum IID CLSID_ClusCfgAsyncEvictCleanup = {0x08F35A72, 0xD7C4, 0x42F4, [0xBC, 0x81, 0x51, 0x88, 0xE1, 0x9D, 0xFA, 0x39]}; +enum IID CLSID_ClusCfgEvictCleanup = {0x32152BE9, 0xDE8C, 0x4D0F, [0x81, 0xB0, 0xBC, 0xE5, 0xD1, 0x1E, 0xCB, 0x00]}; +enum IID CLSID_ClusCfgResTypeGenScript = {0xD513C4F4, 0x1D34, 0x44A3, [0x83, 0xD4, 0x81, 0x26, 0x51, 0xDB, 0x89, 0x18]}; +enum IID CLSID_ClusCfgResTypeMajorityNodeSet = {0xB6870B44, 0x0BDF, 0x4B46, [0xAC, 0x1F, 0x6C, 0x69, 0x1B, 0x62, 0x2E, 0xDF]}; +enum IID CLSID_ClusCfgResTypeServices = {0x6A370489, 0xBB52, 0x4727, [0xB7, 0x40, 0x08, 0xF4, 0x94, 0x16, 0x34, 0x78]}; +enum IID CLSID_ClusCfgStartupNotify = {0x105EEEB6, 0x32FD, 0x4EA9, [0x89, 0x12, 0x84, 0x3A, 0x7F, 0xF3, 0xCA, 0x2D]}; +enum IID CLSID_ClusCfgWizard = {0x1919C4FE, 0x6F46, 0x4027, [0x97, 0x7D, 0x0E, 0xF1, 0xC8, 0xF2, 0x63, 0x72]}; +enum IID CLSID_ClusterConfigurationType = {0xBF3768C2, 0xE0E5, 0x448F, [0x95, 0x2B, 0x25, 0xD4, 0x33, 0x2D, 0xEF, 0xA3]}; +enum IID CLSID_CMimeTypes = {0x3050F3FE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CMLangConvertCharset = {0xD66D6F99, 0xCDAA, 0x11D0, [0xB8, 0x22, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; +enum IID CLSID_CMLangString = {0xC04D65CF, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +enum IID CLSID_CMultiLanguage = {0x275C23E2, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; +enum IID CLSID_CNetCfg = {0x5B035261, 0x40F9, 0x11D1, [0xAA, 0xEC, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID CLSID_CoDitherToRGB8 = {0xA860CE50, 0x3910, 0x11D0, [0x86, 0xFC, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; +enum IID CLSID_CoMapMIMEToCLSID = {0x30C3B080, 0x30FB, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +enum IID CLSID_ComBinding = {0x00000328, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_CommonQuery = {0x83BC5EC0, 0x6F2A, 0x11D0, [0xA1, 0xC4, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +enum IID CLSID_CompositePP = {0x25B33660, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; +enum IID CLSID_ConnectionCommonUi = {0x7007ACD1, 0x3202, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID CLSID_ConnectionManager = {0xBA126AD1, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID CLSID_ConnectionManager2 = {0xBA126AE5, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID CLSID_ControlPanel = {0x21EC2020, 0x3AEA, 0x1069, [0xA2, 0xDD, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; +enum IID CLSID_ConvertVBX = {0xFB8F0822, 0x0164, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; +enum IID CLSID_ConvolvePP = {0x25B33661, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; +enum IID CLSID_COpsProfile = {0x3050F402, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CoSniffStream = {0x6A01FDA0, 0x30DF, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +enum IID CLSID_CPersistDataPeer = {0x3050F487, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CPersistHistory = {0x3050F4C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CPersistShortcut = {0x3050F4C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CPersistSnapshot = {0x3050F4C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CPersistUserData = {0x3050F48E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CPicturePropPage = {0x0BE35202, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +enum IID CLSID_CPlugins = {0x3050F3FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CRadioButton = {0x3050F69C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CrBarn = {0xC3BDF740, 0x0B58, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrBarnPP = {0xFCAD7436, 0xF151, 0x4110, [0xB9, 0x7E, 0x32, 0xBD, 0x60, 0x7F, 0xBD, 0xB8]}; +enum IID CLSID_CrBlindPP = {0x213052C1, 0x100D, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +enum IID CLSID_CrBlinds = {0x00C429C0, 0x0BA9, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrBlur = {0x7312498D, 0xE87A, 0x11D1, [0x81, 0xE0, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID CLSID_CrBlurPP = {0x623E287E, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +enum IID CLSID_CrEmboss = {0xF515306D, 0x0156, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID CLSID_CrEngrave = {0xF515306E, 0x0156, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID CLSID_CrInset = {0x93073C40, 0x0BA5, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrIris = {0x3F69F351, 0x0379, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrIrisPP = {0x80DE22C4, 0x0F44, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +enum IID CLSID_CrRadialWipe = {0x424B71AF, 0x0695, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrRadialWipePP = {0x33D932E0, 0x0F48, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +enum IID CLSID_CrSlide = {0x810E402F, 0x056B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrSlidePP = {0xCC8CEDE1, 0x1003, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +enum IID CLSID_CrSpiral = {0xACA97E00, 0x0C7D, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrSpiralPP = {0xC6A4FE81, 0x1022, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +enum IID CLSID_CrStretch = {0x7658F2A2, 0x0A83, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrStretchPP = {0x15FB95E0, 0x0F77, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +enum IID CLSID_CrWheel = {0x5AE1DAE0, 0x1461, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrWheelPP = {0xFA9F6180, 0x1464, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrZigzag = {0xE6E73D20, 0x0C8A, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_CrZigzagPP = {0x1559A3C1, 0x102B, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +enum IID CLSID_CScriptErrorList = {0xEFD01300, 0x160F, 0x11D2, [0xBB, 0x2E, 0x00, 0x80, 0x5F, 0xF7, 0xEF, 0xCA]}; +enum IID CLSID_CScrollBar = {0x3050F68A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CSliderBar = {0x3050F68E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CSpinButton = {0x3050F68C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CTemplatePrinter = {0x3050F6B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_CUrlHistory = {0x3C374A40, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; +enum IID CLSID_CURLSearchHook = {0xCFBFAE00, 0x17A6, 0x11D0, [0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97]}; +enum IID CLSID_CurrentUserClasses = {0x00000332, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_CUtilityButton = {0x3050F6B0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_d = {0xD34F181F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_DAArray = {0x9CDE7340, 0x3C20, 0x11D0, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +enum IID CLSID_DABbox2 = {0x50B4791E, 0x4731, 0x11D0, [0x89, 0x12, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +enum IID CLSID_DABbox3 = {0x4A933703, 0xE36F, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID CLSID_DABehavior = {0xC46C1BF2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DABoolean = {0x25B0F91D, 0xD23D, 0x11D0, [0x9B, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID CLSID_DACamera = {0xC46C1BD9, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAColor = {0xC46C1BC9, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DADashStyle = {0x9CADDC0C, 0xAD56, 0x11D1, [0x9F, 0xF8, 0x00, 0xC0, 0x4F, 0xA3, 0x21, 0x95]}; +enum IID CLSID_DAEndStyle = {0xFC54BEAB, 0x5B12, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +enum IID CLSID_DAEvent = {0x3E2487C4, 0x8709, 0x11D0, [0xB1, 0x77, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +enum IID CLSID_DAFontStyle = {0x3F3DA01A, 0x4705, 0x11D0, [0x87, 0x10, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +enum IID CLSID_DAGeometry = {0xC46C1BDB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAImage = {0xC46C1BCB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAImportationResult = {0x283807B3, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +enum IID CLSID_DAJoinStyle = {0xFC54BEAA, 0x5B12, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +enum IID CLSID_DALineStyle = {0x283807B8, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +enum IID CLSID_DAMatte = {0xC46C1BC3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAMicrophone = {0xC46C1BE3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAMontage = {0xC46C1BD7, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DANumber = {0xC46C1BC7, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAPair = {0xBC0BFD34, 0xD21D, 0x11D0, [0x93, 0x85, 0x00, 0xC0, 0x4F, 0xB6, 0xBD, 0x36]}; +enum IID CLSID_DAPath2 = {0xC46C1BCF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAPickableResult = {0x34F681D0, 0x3640, 0x11CF, [0x92, 0x94, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; +enum IID CLSID_DAPoint2 = {0xC46C1BD5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAPoint3 = {0xC46C1BE5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DarwinAppPublisher = {0xCFCCC7A0, 0xA282, 0x11D1, [0x90, 0x82, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; +enum IID CLSID_DASound = {0xC46C1BD1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAStatics = {0xC46C1BF3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAString = {0xC46C1BD3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DataChannel = {0xBBB36F15, 0x408D, 0x4056, [0x8C, 0x27, 0x92, 0x08, 0x43, 0xD4, 0x0B, 0xE5]}; +enum IID CLSID_DATransform2 = {0xC46C1BDF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DATransform3 = {0xC46C1BC5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DATuple = {0x283807B7, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +enum IID CLSID_DAUserData = {0x283807B4, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +enum IID CLSID_DAVector2 = {0xC46C1BE1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAVector3 = {0xC46C1BC0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAView = {0x960D8EFF, 0xE494, 0x11D1, [0xAB, 0x75, 0x00, 0xC0, 0x4F, 0xD9, 0x2B, 0x6B]}; +enum IID CLSID_DAViewerControl = {0xC46C1BEB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DAViewerControlWindowed = {0xC46C1BF1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID CLSID_DCOMAccessControl = {0x0000031D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_DebugHelper = {0x0BFCC060, 0x8C1D, 0x11D0, [0xAC, 0xCD, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; +enum IID CLSID_DeCompMimeFilter = {0x8F6B0360, 0xB80D, 0x11D0, [0xA9, 0xB3, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; +enum IID CLSID_DefaultDebugSessionProvider = {0x834128A2, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID CLSID_DirectDraw = {0xD7B70EE0, 0x4340, 0x11CF, [0xB0, 0x63, 0x00, 0x20, 0xAF, 0xC2, 0xCD, 0x35]}; +enum IID CLSID_DirectDrawClipper = {0x593817A0, 0x7DB3, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +enum IID CLSID_DirectDrawFactory2 = {0xB9DC4790, 0x4AF1, 0x11D1, [0x8C, 0x4C, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +enum IID CLSID_DirectInput = {0x25E609E0, 0xB259, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID CLSID_DirectInputDevice = {0x25E609E1, 0xB259, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID CLSID_DirectMusic = {0x636B9F10, 0x0C7D, 0x11D1, [0x95, 0xB2, 0x00, 0x20, 0xAF, 0xDC, 0x74, 0x21]}; +enum IID CLSID_DirectMusicBand = {0x79BA9E00, 0xB6EE, 0x11D1, [0x86, 0xBE, 0x00, 0xC0, 0x4F, 0xBF, 0x8F, 0xEF]}; +enum IID CLSID_DirectMusicBandTrack = {0xD2AC2894, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicChordMap = {0xD2AC288F, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicChordMapTrack = {0xD2AC2896, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicChordTrack = {0xD2AC288B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicCollection = {0x480FF4B0, 0x28B2, 0x11D1, [0xBE, 0xF7, 0x00, 0xC0, 0x4F, 0xBF, 0x8F, 0xEF]}; +enum IID CLSID_DirectMusicCommandTrack = {0xD2AC288C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicComposer = {0xD2AC2890, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicGraph = {0xD2AC2884, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicLoader = {0xD2AC2892, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicMotifTrack = {0xD2AC288E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicMuteTrack = {0xD2AC2898, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicPerformance = {0xD2AC2881, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicSegment = {0xD2AC2882, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicSegmentState = {0xD2AC2883, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicSeqTrack = {0xD2AC2886, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicSignPostTrack = {0xF17E8672, 0xC3B4, 0x11D1, [0x87, 0x0B, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicStyle = {0xD2AC288A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicStyleTrack = {0xD2AC288D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicSynth = {0x58C2B4D0, 0x46E7, 0x11D1, [0x89, 0xAC, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +enum IID CLSID_DirectMusicSysExTrack = {0xD2AC2887, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicTempoTrack = {0xD2AC2885, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectMusicTimeSigTrack = {0xD2AC2888, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID CLSID_DirectPlay = {0xD1EB6D20, 0x8923, 0x11D0, [0x9D, 0x97, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; +enum IID CLSID_DirectPlayLobby = {0x2FE8F810, 0xB2A5, 0x11D0, [0xA7, 0x87, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +enum IID CLSID_DirectSound = {0x47D4D946, 0x62E8, 0x11CF, [0x93, 0xBC, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID CLSID_DirectSoundCapture = {0xB0210780, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; +enum IID CLSID_DispatchMapper = {0xE9225296, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID CLSID_DNWithBinary = {0x7E99C0A3, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; +enum IID CLSID_DNWithString = {0x334857CC, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; +enum IID CLSID_DocFileColumnProvider = {0x24F14F01, 0x7B1C, 0x11D1, [0x83, 0x8F, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; +enum IID CLSID_DocHostUIHandler = {0x7057E952, 0xBD1B, 0x11D1, [0x89, 0x19, 0x00, 0xC0, 0x4F, 0xC2, 0xC8, 0x36]}; +enum IID CLSID_DOMChildrenCollection = {0x3050F5AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_DOMDocument = {0x2933BF90, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID CLSID_DOMFreeThreadedDocument = {0x2933BF91, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID CLSID_DragDropHelper = {0x4657278A, 0x411B, 0x11D2, [0x83, 0x9A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; +enum IID CLSID_DriveSizeCategorizer = {0x94357B53, 0xCA29, 0x4B78, [0x83, 0xAE, 0xE8, 0xFE, 0x74, 0x09, 0x13, 0x4F]}; +enum IID CLSID_DriveTypeCategorizer = {0xB0A8F3CF, 0x4333, 0x4BAB, [0x88, 0x73, 0x1C, 0xCB, 0x1C, 0xAD, 0xA4, 0x8B]}; +enum IID CLSID_DsDisplaySpecifier = {0x1AB4A8C0, 0x6A0B, 0x11D2, [0xAD, 0x49, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; +enum IID CLSID_DsDomainTreeBrowser = {0x1698790A, 0xE2B4, 0x11D0, [0xB0, 0xB1, 0x00, 0xC0, 0x4F, 0xD8, 0xDC, 0xA6]}; +enum IID CLSID_DsFindAdvanced = {0x83EE3FE3, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; +enum IID CLSID_DsFindComputer = {0x16006700, 0x87AD, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +enum IID CLSID_DsFindContainer = {0xC1B3CBF2, 0x886A, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +enum IID CLSID_DsFindDomainController = {0x538C7B7E, 0xD25E, 0x11D0, [0x97, 0x42, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; +enum IID CLSID_DsFindFrsMembers = {0x94CE4B18, 0xB3D3, 0x11D1, [0xB9, 0xB4, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xB0]}; +enum IID CLSID_DsFindObjects = {0x83EE3FE1, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; +enum IID CLSID_DsFindPeople = {0x83EE3FE2, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; +enum IID CLSID_DsFindPrinter = {0xB577F070, 0x7EE2, 0x11D0, [0x91, 0x3F, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +enum IID CLSID_DsFindVolume = {0xC1B3CBF1, 0x886A, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +enum IID CLSID_DsFolderProperties = {0x9E51E0D0, 0x6E0F, 0x11D2, [0x96, 0x01, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; +enum IID CLSID_DsPropertyPages = {0x0D45D530, 0x764B, 0x11D0, [0xA1, 0xCA, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +enum IID CLSID_DsQuery = {0x8A23E65E, 0x31C2, 0x11D0, [0x89, 0x1C, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; +enum IID CLSID_DWbemClassObject = {0x64AB3751, 0x12BC, 0x11D1, [0x9E, 0x61, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID CLSID_DWbemContext = {0x752FF212, 0xF7B7, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID CLSID_DWbemLocator = {0xCB7CA032, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID CLSID_DX2D = {0x473AA80B, 0x4577, 0x11D1, [0x81, 0xA8, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID CLSID_DXFade = {0x16B280C5, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID CLSID_DXGradient = {0xC6365470, 0xF667, 0x11D1, [0x90, 0x67, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID CLSID_DXLUTBuilder = {0x1E54333B, 0x2A00, 0x11D1, [0x81, 0x98, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID CLSID_DXRasterizer = {0x8652CE55, 0x9E80, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID CLSID_DXSurface = {0x0E890F83, 0x5F79, 0x11D1, [0x90, 0x43, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID CLSID_DXSurfaceModifier = {0x3E669F1D, 0x9C23, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID CLSID_DXTAlpha = {0xADC6CB82, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID CLSID_DXTAlphaImageLoader = {0x0C7EFBDE, 0x0303, 0x4C6F, [0xA4, 0xF7, 0x31, 0xFA, 0x2B, 0xE5, 0xE3, 0x97]}; +enum IID CLSID_DXTAlphaImageLoaderPP = {0x8C80CE2D, 0x850D, 0x47DA, [0x8E, 0xCD, 0x55, 0x02, 0x35, 0x62, 0xD1, 0x67]}; +enum IID CLSID_DXTAlphaPP = {0xD687A7E0, 0x4BA4, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +enum IID CLSID_DXTaskManager = {0x4CB26C03, 0xFF93, 0x11D0, [0x81, 0x7E, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID CLSID_DXTBarn = {0xEC9BA17D, 0x60B5, 0x462B, [0xA6, 0xD8, 0x14, 0xB8, 0x90, 0x57, 0xE2, 0x2A]}; +enum IID CLSID_DXTBlinds = {0x9A4A4A51, 0xFB3A, 0x4F4B, [0x9B, 0x57, 0xA2, 0x91, 0x2A, 0x28, 0x97, 0x69]}; +enum IID CLSID_DXTCheckerBoard = {0xB3EE7802, 0x8224, 0x4787, [0xA1, 0xEA, 0xF0, 0xDE, 0x16, 0xDE, 0xAB, 0xD3]}; +enum IID CLSID_DXTCheckerBoardPP = {0xCBF47525, 0x98D2, 0x45EA, [0xB8, 0x43, 0xFD, 0x21, 0x3D, 0x93, 0x2B, 0x10]}; +enum IID CLSID_DXTChroma = {0x421516C1, 0x3CF8, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID CLSID_DXTChromaPP = {0xEC7E0760, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +enum IID CLSID_DXTComposite = {0x9A43A844, 0x0831, 0x11D1, [0x81, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID CLSID_DXTConvolution = {0x2BC0EF29, 0xE6BA, 0x11D1, [0x81, 0xDD, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID CLSID_DXTDropShadow = {0xADC6CB86, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID CLSID_DXTDropShadowPP = {0xEC7E0761, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +enum IID CLSID_DXTFilter = {0x385A91BC, 0x1E8A, 0x4E4A, [0xA7, 0xA6, 0xF4, 0xFC, 0x1E, 0x6C, 0xA1, 0xBD]}; +enum IID CLSID_DXTFilterBehavior = {0x649EEC1E, 0xB579, 0x4E8C, [0xBB, 0x3B, 0x49, 0x97, 0xF8, 0x42, 0x65, 0x36]}; +enum IID CLSID_DXTFilterCollection = {0xA7EE7F34, 0x3BD1, 0x427F, [0x92, 0x31, 0xF9, 0x41, 0xE9, 0xB7, 0xE1, 0xFE]}; +enum IID CLSID_DXTFilterFactory = {0x81397204, 0xF51A, 0x4571, [0x8D, 0x7B, 0xDC, 0x03, 0x05, 0x21, 0xAA, 0xBD]}; +enum IID CLSID_DXTGlow = {0x9F8E6421, 0x3D9B, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID CLSID_DXTGlowPP = {0xEC7E0764, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +enum IID CLSID_DXTGradientD = {0x623E2882, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +enum IID CLSID_DXTGradientWipe = {0xB96F67A2, 0x30C2, 0x47E8, [0xBD, 0x85, 0x70, 0xA2, 0xC9, 0x48, 0xB5, 0x0F]}; +enum IID CLSID_DXTICMFilter = {0xA1BFB370, 0x5A9F, 0x4429, [0xBB, 0x72, 0xB1, 0x3E, 0x2F, 0xEA, 0xED, 0xEF]}; +enum IID CLSID_DXTICMFilterPP = {0x1958FB12, 0x31E6, 0x47E5, [0xAA, 0x49, 0xB2, 0x3D, 0x12, 0xC8, 0x53, 0xE6]}; +enum IID CLSID_DXTInset = {0x76F363F2, 0x7E9F, 0x4ED7, [0xA6, 0xA7, 0xEE, 0x30, 0x35, 0x1B, 0x66, 0x28]}; +enum IID CLSID_DXTIris = {0x049F2CE6, 0xD996, 0x4721, [0x89, 0x7A, 0xDB, 0x15, 0xCE, 0x9E, 0xB7, 0x3D]}; +enum IID CLSID_DXTLabel = {0x54702535, 0x2606, 0x11D1, [0x99, 0x9C, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +enum IID CLSID_DXTLight = {0xF9EFBEC2, 0x4302, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID CLSID_DXTLightPP = {0x694AF25F, 0x124D, 0x11D3, [0x91, 0xD5, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID CLSID_DXTMaskFilter = {0x3A04D93B, 0x1EDD, 0x4F3F, [0xA3, 0x75, 0xA0, 0x3E, 0xC1, 0x95, 0x72, 0xC4]}; +enum IID CLSID_DXTMatrix = {0x4ABF5A06, 0x5568, 0x4834, [0xBE, 0xE3, 0x32, 0x7A, 0x6D, 0x95, 0xA6, 0x85]}; +enum IID CLSID_DXTMatrixPP = {0xC591103A, 0xB3A8, 0x4D47, [0xA3, 0xF7, 0x2A, 0xEE, 0xE4, 0xB8, 0x01, 0x3F]}; +enum IID CLSID_DXTMetaBurnFilm = {0x107045D1, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaCenterPeel = {0xAA0D4D0C, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID CLSID_DXTMetaColorFade = {0x2A54C908, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaFlowMotion = {0x2A54C90B, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaGriddler = {0x2A54C911, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaGriddler2 = {0x2A54C913, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaJaws = {0x2A54C904, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaLightWipe = {0x107045C8, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaLiquid = {0xAA0D4D0A, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID CLSID_DXTMetaPageTurn = {0xAA0D4D08, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID CLSID_DXTMetaPeelPiece = {0xAA0D4D10, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID CLSID_DXTMetaPeelSmall = {0xAA0D4D0E, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID CLSID_DXTMetaPeelSplit = {0xAA0D4D12, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID CLSID_DXTMetaRadialScaleWipe = {0x107045CA, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaRipple = {0xAA0D4D03, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID CLSID_DXTMetaRoll = {0x9C61F46E, 0x0530, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID CLSID_DXTMetaThreshold = {0x2A54C915, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaTwister = {0x107045CF, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaVacuum = {0x2A54C90D, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaWater = {0x107045C5, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaWhiteOut = {0x107045CC, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID CLSID_DXTMetaWormHole = {0x0E6AE022, 0x0C83, 0x11D2, [0x8C, 0xD4, 0x00, 0x10, 0x4B, 0xC7, 0x5D, 0x9A]}; +enum IID CLSID_DXTMotionBlur = {0xDD13DE77, 0xD3BA, 0x42D4, [0xB5, 0xC6, 0x77, 0x45, 0xFA, 0x4E, 0x2D, 0x4B]}; +enum IID CLSID_DXTMotionBlurPP = {0x926433E1, 0x7F8F, 0x4BC6, [0xBE, 0xC4, 0x8C, 0x12, 0x6C, 0x6B, 0x7D, 0xC4]}; +enum IID CLSID_DXTRadialWipe = {0x164484A9, 0x35D9, 0x4FB7, [0x9F, 0xAB, 0x48, 0x27, 0x3B, 0x96, 0xAA, 0x1D]}; +enum IID CLSID_DXTRandomBars = {0x2E7700B7, 0x27C4, 0x437F, [0x9F, 0xBF, 0x1E, 0x8B, 0xE2, 0x81, 0x75, 0x66]}; +enum IID CLSID_DXTRandomBarsPP = {0xE3E6AE11, 0x7FDC, 0x40C4, [0xAF, 0xBF, 0x1D, 0xCE, 0xA8, 0x28, 0x62, 0xCC]}; +enum IID CLSID_DXTRandomDissolve = {0xF7F4A1B6, 0x8E87, 0x452F, [0xA2, 0xD7, 0x30, 0x77, 0xF5, 0x08, 0xDB, 0xC0]}; +enum IID CLSID_DXTransformFactory = {0xD1FE6762, 0xFC48, 0x11D0, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; +enum IID CLSID_DXTRedirect = {0x42B07B28, 0x2280, 0x4937, [0xB0, 0x35, 0x02, 0x93, 0xFB, 0x81, 0x27, 0x81]}; +enum IID CLSID_DXTRevealTrans = {0xE31E87C4, 0x86EA, 0x4940, [0x9B, 0x8A, 0x5B, 0xD5, 0xD1, 0x79, 0xA7, 0x37]}; +enum IID CLSID_DXTScale = {0x555278E2, 0x05DB, 0x11D1, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; +enum IID CLSID_DXTShadow = {0xE71B4063, 0x3E59, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID CLSID_DXTShadowPP = {0xEC7E0765, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +enum IID CLSID_DXTSlide = {0xD1C5A1E7, 0xCC47, 0x4E32, [0xBD, 0xD2, 0x4B, 0x3C, 0x5F, 0xC5, 0x0A, 0xF5]}; +enum IID CLSID_DXTSpiral = {0x4A03DCB9, 0x6E17, 0x4A39, [0x88, 0x45, 0x4E, 0xE7, 0xDC, 0x53, 0x31, 0xA5]}; +enum IID CLSID_DXTStretch = {0xF088DE73, 0xBDD0, 0x4E3C, [0x81, 0xF8, 0x6D, 0x32, 0xF4, 0xFE, 0x9D, 0x28]}; +enum IID CLSID_DXTStrips = {0x63A4B1FC, 0x259A, 0x4A5B, [0x81, 0x29, 0xA8, 0x3B, 0x8C, 0x9E, 0x6F, 0x4F]}; +enum IID CLSID_DXTStripsPP = {0xFEC0B7EE, 0x7AEC, 0x4067, [0x9E, 0xE1, 0xFA, 0xCF, 0xB7, 0xCE, 0x9A, 0xF9]}; +enum IID CLSID_DXTWave = {0xADC6CB88, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID CLSID_DXTWavePP = {0xF12456C0, 0x4C9E, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +enum IID CLSID_DXTWipe = {0xAF279B30, 0x86EB, 0x11D1, [0x81, 0xBF, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID CLSID_DXTWipePP = {0x7FFE4D08, 0xFBFD, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +enum IID CLSID_DXTZigzag = {0x23E26328, 0x3928, 0x40F2, [0x95, 0xE5, 0x93, 0xCA, 0xD6, 0x90, 0x16, 0xEB]}; +enum IID CLSID_EAPOLManager = {0xBA126AE4, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID CLSID_Email = {0x8F92A857, 0x478E, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_EnumAdapterInfo = {0x6F9942CA, 0xC1B1, 0x4AB5, [0x93, 0xDA, 0x60, 0x58, 0x99, 0x1D, 0xC8, 0xF3]}; +enum IID CLSID_EVENTQUEUE = {0x6E0FF466, 0x339E, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; +enum IID CLSID_EXTENDEDERRORINFO = {0xC8B522CF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID CLSID_FadePP = {0x16B280C6, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID CLSID_FaxNumber = {0xA5062215, 0x4681, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_FilePlaybackTerminal = {0x0CB9914C, 0x79CD, 0x47DC, [0xAD, 0xB0, 0x32, 0x7F, 0x47, 0xCE, 0xFB, 0x20]}; +enum IID CLSID_FileProtocol = {0x79EAC9E7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_FileRecordingTerminal = {0x521F3D06, 0xC3D0, 0x4511, [0x86, 0x17, 0x86, 0xB9, 0xA7, 0x83, 0xDA, 0x77]}; +enum IID CLSID_FileRecordingTrack = {0xBF14A2E4, 0xE88B, 0x4EF5, [0x97, 0x40, 0x5A, 0xC5, 0xD0, 0x22, 0xF8, 0xC9]}; +enum IID CLSID_FileSearchBand = {0xC4EE31F3, 0x4768, 0x11D2, [0xBE, 0x5C, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; +enum IID CLSID_FileSysColumnProvider = {0x0D2E74C4, 0x3C34, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; +enum IID CLSID_FileTerminal = {0xAAF578F1, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID CLSID_FolderShortcut = {0x0AFACED1, 0xE828, 0x11D1, [0x91, 0x87, 0xB5, 0x32, 0xF1, 0xE9, 0x57, 0x5D]}; +enum IID CLSID_FolderViewHost = {0x20B1CB23, 0x6968, 0x4EB9, [0xB7, 0xD4, 0xA6, 0x6D, 0x00, 0xD0, 0x7C, 0xEE]}; +enum IID CLSID_FontNames = {0x3050F83A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_FramesCollection = {0x3050F7F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_FreeSpaceCategorizer = {0xB5607793, 0x24AC, 0x44C7, [0x82, 0xE2, 0x83, 0x17, 0x26, 0xAA, 0x6C, 0xB7]}; +enum IID CLSID_FtpProtocol = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_GblComponentCategoriesMgr = {0x0002E006, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_GLOBAL_BROADCAST = {0xD34F1810, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_GopherProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_GradientPP = {0x623E2880, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +enum IID CLSID_HandsetTerminal = {0xAAF578EB, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID CLSID_HeadsetTerminal = {0xAAF578ED, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID CLSID_HNetCfgMgr = {0x46C166AA, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID CLSID_Hold = {0xB3AD3E13, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_HomeNetAutoConfigService = {0x9A8EA3B5, 0x572E, 0x4CB3, [0x9E, 0xB9, 0xEC, 0x68, 0x9A, 0xC5, 0x75, 0xAE]}; +enum IID CLSID_HomePage = {0x766BF2AE, 0xD650, 0x11D1, [0x98, 0x11, 0x00, 0xC0, 0x4F, 0xC3, 0x1D, 0x2E]}; +enum IID CLSID_HostDialogHelper = {0x429AF92C, 0xA51F, 0x11D2, [0x86, 0x1E, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; +enum IID CLSID_HTADocument = {0x3050F5C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTCAttachBehavior = {0x3050F5F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTCDefaultDispatch = {0x3050F4FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTCDescBehavior = {0x3050F5DD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTCEventBehavior = {0x3050F4FE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTCMethodBehavior = {0x3050F630, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTCPropertyBehavior = {0x3050F5DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLAnchorElement = {0x3050F248, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLAppBehavior = {0x3050F5CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLApplication = {0x3050F4D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLAreaElement = {0x3050F283, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLAreasCollection = {0x3050F4CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLAttributeCollection = {0x3050F4CC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLBaseElement = {0x3050F276, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLBaseFontElement = {0x3050F282, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLBGsound = {0x3050F370, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLBlockElement = {0x3050F281, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLBody = {0x3050F24A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLBRElement = {0x3050F280, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLButtonElement = {0x3050F2C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLCommentElement = {0x3050F317, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLCurrentStyle = {0x3050F3DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLDDElement = {0x3050F27F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLDefaults = {0x3050F6C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLDialog = {0x3050F28A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLDivElement = {0x3050F27E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLDivPosition = {0x3050F249, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HtmlDlgSafeHelper = {0x3050F819, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLDListElement = {0x3050F27D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLDocument = {0x25336920, 0x03F9, 0x11CF, [0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13]}; +enum IID CLSID_HTMLDOMAttribute = {0x3050F4B2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLDOMImplementation = {0x3050F80E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLDOMTextNode = {0x3050F4BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLDTElement = {0x3050F27C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLElementCollection = {0x3050F4CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLEmbed = {0x3050F25D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLFieldSetElement = {0x3050F3E8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLFontElement = {0x3050F27B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLFormElement = {0x3050F251, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLFrameBase = {0x3050F312, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLFrameElement = {0x3050F314, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLFrameSetSite = {0x3050F31A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLGenericElement = {0x3050F4B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLHeadElement = {0x3050F493, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLHeaderElement = {0x3050F27A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLHistory = {0xFECEAAA3, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; +enum IID CLSID_HTMLHRElement = {0x3050F252, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLHtmlElement = {0x3050F491, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLIFrame = {0x3050F316, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLImageElementFactory = {0x3050F38F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLImg = {0x3050F241, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLInputButtonElement = {0x3050F2B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLInputElement = {0x3050F5D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLInputFileElement = {0x3050F2AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLInputImage = {0x3050F2C4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLInputTextElement = {0x3050F2AB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLIsIndexElement = {0x3050F278, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLLabelElement = {0x3050F32B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLLegendElement = {0x3050F3E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLLIElement = {0x3050F273, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLLinkElement = {0x3050F277, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLListElement = {0x3050F272, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLLoadOptions = {0x18845040, 0x0FA5, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; +enum IID CLSID_HTMLLocation = {0x163BB1E1, 0x6E00, 0x11CF, [0x83, 0x7A, 0x48, 0xDC, 0x04, 0xC1, 0x00, 0x00]}; +enum IID CLSID_HTMLMapElement = {0x3050F271, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLMarqueeElement = {0x3050F2B9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLMetaElement = {0x3050F275, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLNamespace = {0x3050F6BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLNamespaceCollection = {0x3050F6B9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLNavigator = {0xFECEAAA6, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; +enum IID CLSID_HTMLNextIdElement = {0x3050F279, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLNoShowElement = {0x3050F38B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLObjectElement = {0x3050F24E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLOListElement = {0x3050F270, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLOptionButtonElement = {0x3050F2BE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLOptionElement = {0x3050F24D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLOptionElementFactory = {0x3050F38D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLParaElement = {0x3050F26F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLParamElement = {0x3050F83E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLPhraseElement = {0x3050F26E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLPluginDocument = {0x25336921, 0x03F9, 0x11CF, [0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13]}; +enum IID CLSID_HTMLPopup = {0x3050F667, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLRenderStyle = {0x3050F6AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLRichtextElement = {0x3050F2DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLRuleStyle = {0x3050F3D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLScreen = {0x3050F35D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLScriptElement = {0x3050F28C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLSelectElement = {0x3050F245, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLSpanElement = {0x3050F3F5, 0x98B4, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLSpanFlow = {0x3050F3E6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLStyle = {0x3050F285, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLStyleElement = {0x3050F37D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLStyleFontFace = {0x3050F3D4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLStyleSheet = {0x3050F2E4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLStyleSheetPage = {0x3050F7EF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLStyleSheetPagesCollection = {0x3050F7F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLStyleSheetRule = {0x3050F3CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLStyleSheetRulesCollection = {0x3050F3CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLStyleSheetsCollection = {0x3050F37F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLTable = {0x3050F26B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLTableCaption = {0x3050F2EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLTableCell = {0x3050F246, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLTableCol = {0x3050F26C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLTableRow = {0x3050F26D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLTableSection = {0x3050F2E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLTextAreaElement = {0x3050F2AC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLTextElement = {0x3050F26A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLTitleElement = {0x3050F284, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLUListElement = {0x3050F269, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLUnknownElement = {0x3050F268, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLUrnCollection = {0x3050F580, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HTMLWindow2 = {0xD48A6EC6, 0x6A4A, 0x11CF, [0x94, 0xA7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID CLSID_HTMLWindowProxy = {0x3050F391, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_HttpProtocol = {0x79EAC9E2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_HttpSProtocol = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_HWShellExecute = {0xFFB8655F, 0x81B9, 0x4FCE, [0xB8, 0x9C, 0x9A, 0x6B, 0xA7, 0x6D, 0x13, 0xE7]}; +enum IID CLSID_IActiveXSafetyProvider = {0xAAF8C6CE, 0xF972, 0x11D0, [0x97, 0xEB, 0x00, 0xAA, 0x00, 0x61, 0x53, 0x33]}; +enum IID CLSID_IImageDecodeFilter = {0x607FD4E8, 0x0A03, 0x11D1, [0xAB, 0x1D, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; +enum IID CLSID_IImgCtx = {0x3050F3D6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_ImageList = {0x7C476BA2, 0x02B1, 0x48F4, [0x80, 0x48, 0xB2, 0x46, 0x19, 0xDD, 0xC0, 0x58]}; +enum IID CLSID_ImageProperties = {0x7AB770C7, 0x0E23, 0x4D7A, [0x8A, 0xA2, 0x19, 0xBF, 0xAD, 0x47, 0x98, 0x29]}; +enum IID CLSID_InProcFreeMarshaler = {0x0000033A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_IntDitherer = {0x05F6FE1A, 0xECEF, 0x11D0, [0xAA, 0xE7, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; +enum IID CLSID_IntelliForms = {0x613AB92E, 0x16BF, 0x11D2, [0xBC, 0xA5, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +enum IID CLSID_Internet = {0x871C5380, 0x42A0, 0x1069, [0xA2, 0xEA, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; +enum IID CLSID_InternetButtons = {0x1E796980, 0x9CC5, 0x11D1, [0xA8, 0x3F, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0x61]}; +enum IID CLSID_InternetConnectionBeaconServic = {0x04DF613A, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; +enum IID CLSID_InternetExplorer = {0x0002DF01, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_InternetPrintOrdering = {0xADD36AA8, 0x751A, 0x4579, [0xA2, 0x66, 0xD6, 0x6F, 0x52, 0x02, 0xCC, 0xBB]}; +enum IID CLSID_InternetSecurityManager = {0x7B8A2D94, 0x0AC9, 0x11D1, [0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +enum IID CLSID_InternetShortcut = {0xFBF23B40, 0xE3F0, 0x101B, [0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8]}; +enum IID CLSID_InternetZoneManager = {0x7B8A2D95, 0x0AC9, 0x11D1, [0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +enum IID CLSID_LanConnectionManager = {0xBA126AD3, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID CLSID_LargeInteger = {0x927971F5, 0x0939, 0x11D1, [0x8B, 0xE1, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID CLSID_LDAPConnectionObject = {0x7DA2A9C4, 0x0C46, 0x43BD, [0xB0, 0x4E, 0xD9, 0x2B, 0x1B, 0xE2, 0x7C, 0x45]}; +enum IID CLSID_LDAPObject = {0x05709878, 0x5195, 0x466C, [0x9E, 0x64, 0x48, 0x7C, 0xE3, 0xCA, 0x20, 0xBF]}; +enum IID CLSID_LinkColumnProvider = {0x24F14F02, 0x7B1C, 0x11D1, [0x83, 0x8F, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; +enum IID CLSID_LocalMachineClasses = {0x00000331, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_LogManager = {0x8FDA8FA4, 0x8763, 0x479F, [0xB9, 0xB1, 0x22, 0x02, 0xB2, 0x80, 0xD2, 0x93]}; +enum IID CLSID_LUTBuilderPP = {0x25B33662, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; +enum IID CLSID_MachineDebugManager = {0x0C0A3666, 0x30C9, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID CLSID_MailAutoDiscovery = {0x008FD5DD, 0x6DBB, 0x48E3, [0x99, 0x1B, 0x2D, 0x3E, 0xD6, 0x58, 0x51, 0x6A]}; +enum IID CLSID_MailProtocolADEntry = {0x61A5D6F3, 0xC131, 0x4C35, [0xBF, 0x40, 0x90, 0xA5, 0x0F, 0x21, 0x41, 0x22]}; +enum IID CLSID_ManualResetEvent = {0x0000032C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_McastAddressAllocation = {0xDF0DAEF2, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +enum IID CLSID_MediaStreamTerminal = {0xE2F7AEF7, 0x4971, 0x11D1, [0xA6, 0x71, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xE8]}; +enum IID CLSID_MergedCategorizer = {0x8E827C11, 0x33E7, 0x4BC1, [0xB2, 0x42, 0x8C, 0xD9, 0xA1, 0xC2, 0xB3, 0x04]}; +enum IID CLSID_MHTMLDocument = {0x3050F3D9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_MicrophoneTerminal = {0xAAF578EF, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID CLSID_MicrosoftDS = {0xFE1290F0, 0xCFBD, 0x11CF, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +enum IID CLSID_MigrationWizardAuto = {0x67331D85, 0xBE17, 0x42F6, [0x8D, 0x3F, 0x47, 0xB8, 0xE8, 0xB2, 0x66, 0x37]}; +enum IID CLSID_MkProtocol = {0x79EAC9E6, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_MofCompiler = {0x6DAF9757, 0x2E37, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID CLSID_MountedVolume = {0x12518493, 0x00B2, 0x11D2, [0x9F, 0xA5, 0x9E, 0x34, 0x20, 0x52, 0x41, 0x53]}; +enum IID CLSID_MSBurnEngineObj = {0x520CCA67, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID CLSID_MSDATT = {0xC8B522CE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID CLSID_MSDAVTM = {0x0C733A8E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID CLSID_MSDiscMasterObj = {0x520CCA63, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID CLSID_MSDiscRecorderObj = {0x520CCA61, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID CLSID_MSDiscStashObj = {0x520CCA65, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID CLSID_MSEnumDiscRecordersObj = {0x8A03567A, 0x63CB, 0x4BA8, [0xBA, 0xF6, 0x52, 0x11, 0x98, 0x16, 0xD1, 0xEF]}; +enum IID CLSID_MSOButtons = {0x178F34B8, 0xA282, 0x11D2, [0x86, 0xC5, 0x00, 0xC0, 0x4F, 0x8E, 0xEA, 0x99]}; +enum IID CLSID_MyComputer = {0x20D04FE0, 0x3AEA, 0x1069, [0xA2, 0xD8, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; +enum IID CLSID_MyDocuments = {0x450D8FBA, 0xAD25, 0x11D0, [0x98, 0xA8, 0x08, 0x00, 0x36, 0x1B, 0x11, 0x03]}; +enum IID CLSID_NameTranslate = {0x274FAE1F, 0x3626, 0x11D1, [0xA3, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_NetAddress = {0xB0B71247, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_NetConnectionHNetUtil = {0xBA126AE3, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID CLSID_NetConnectionUiUtilities = {0x7007ACD3, 0x3202, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID CLSID_NetCrawler = {0x601AC3DC, 0x786A, 0x4EB0, [0xBF, 0x40, 0xEE, 0x35, 0x21, 0xE7, 0x0B, 0xFB]}; +enum IID CLSID_NetSharingManager = {0x5C63C1AD, 0x3956, 0x4FF8, [0x84, 0x86, 0x40, 0x03, 0x47, 0x58, 0x31, 0x5B]}; +enum IID CLSID_NetworkDomain = {0x46E06680, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; +enum IID CLSID_NetworkPlaces = {0x208D2C60, 0x3AEA, 0x1069, [0xA2, 0xD7, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; +enum IID CLSID_NetworkServer = {0xC0542A90, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; +enum IID CLSID_NetworkShare = {0x54A754C0, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; +enum IID CLSID_NetworkType = {0xD4F3D51B, 0x1755, 0x4953, [0x9C, 0x8B, 0x24, 0x95, 0xAB, 0xE5, 0xE0, 0x7E]}; +enum IID CLSID_NodeType = {0x1AAA3D11, 0x4792, 0x44E4, [0x9D, 0x49, 0x78, 0xFE, 0xD3, 0x69, 0x1A, 0x14]}; +enum IID CLSID_NotificaitonTest1 = {0xC733E501, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_NotificaitonTest2 = {0xC733E502, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_NotificaitonTest3 = {0xC733E503, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_NotificaitonTest4 = {0xC733E504, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_NotificationManager = {0xE1813DD0, 0xAADA, 0x4738, [0xB5, 0xFF, 0x96, 0xB4, 0x18, 0x9C, 0x50, 0x19]}; +enum IID CLSID_ObjectManager = {0x955661BD, 0xCCA2, 0x4EAC, [0x91, 0xD0, 0xA0, 0x39, 0x6A, 0x28, 0xAE, 0xFD]}; +enum IID CLSID_OctetList = {0x1241400F, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_OldHTMLDocument = {0xD48A6EC9, 0x6A4A, 0x11CF, [0x94, 0xA7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID CLSID_OldHTMLFormElement = {0x0D04D285, 0x6BEC, 0x11CF, [0x8B, 0x97, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; +enum IID CLSID_OLEDB_CONVERSIONLIBRARY = {0xC8B522D1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID CLSID_OLEDB_ENUMERATOR = {0xC8B522D0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID CLSID_OLEDB_ROWPOSITIONLIBRARY = {0x2048EEE6, 0x7FA2, 0x11D0, [0x9E, 0x6A, 0x00, 0xA0, 0xC9, 0x13, 0x8C, 0x29]}; +enum IID CLSID_PassportClientServices = {0x2D2307C8, 0x7DB4, 0x40D6, [0x91, 0x00, 0xD5, 0x2A, 0xF4, 0xF9, 0x7A, 0x5B]}; +enum IID CLSID_Path = {0xB2538919, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_Pathname = {0x080D0D78, 0xF421, 0x11D0, [0xA3, 0x6E, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_PeerFactory = {0x3050F4CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_PendingProxyConnection = {0xD8A68E5E, 0x2B37, 0x426C, [0xA3, 0x29, 0xC1, 0x17, 0xC1, 0x4C, 0x42, 0x9E]}; +enum IID CLSID_PersistentDataChannel = {0xBC9B54AB, 0x7883, 0x4C13, [0x90, 0x9F, 0x03, 0x3D, 0x03, 0x26, 0x79, 0x90]}; +enum IID CLSID_PersistPropset = {0xFB8F0821, 0x0164, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; +enum IID CLSID_Picture_Dib = {0x00000316, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_Picture_EnhMetafile = {0x00000319, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_Picture_Metafile = {0x00000315, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_Pixelate = {0x4CCEA634, 0xFBE0, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID CLSID_PixelatePP = {0x4CCEA635, 0xFBE0, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID CLSID_PluggableSuperclassRegistratio = {0xBB918E32, 0x2A5C, 0x4986, [0xAB, 0x40, 0x16, 0x86, 0xA0, 0x34, 0x39, 0x0A]}; +enum IID CLSID_PluggableTerminalRegistration = {0x45234E3E, 0x61CC, 0x4311, [0xA3, 0xAB, 0x24, 0x80, 0x82, 0x55, 0x44, 0x82]}; +enum IID CLSID_PostAgent = {0xD8BD2030, 0x6FC9, 0x11D0, [0x86, 0x4F, 0x00, 0xAA, 0x00, 0x68, 0x09, 0xD9]}; +enum IID CLSID_PostalAddress = {0x0A75AFCD, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_PrimaryControlChannel = {0x3CEB5509, 0xC1CD, 0x432F, [0x9D, 0x8F, 0x65, 0xD1, 0xE2, 0x86, 0xAA, 0x80]}; +enum IID CLSID_Printers = {0x2227A280, 0x3AEA, 0x1069, [0xA2, 0xDE, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; +enum IID CLSID_PROCESS_BROADCAST = {0xD34F1811, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_ProcessDebugManager = {0x78A51822, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID CLSID_ProgressDialog = {0xF8383852, 0xFCD3, 0x11D1, [0xA6, 0xB9, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; +enum IID CLSID_PropertiesUI = {0xD912F8CF, 0x0396, 0x4915, [0x88, 0x4E, 0xFB, 0x42, 0x5D, 0x32, 0x94, 0x3B]}; +enum IID CLSID_PropertyEntry = {0x72D3EDC2, 0xA4C4, 0x11D0, [0x85, 0x33, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID CLSID_PropertyValue = {0x7B9E38B0, 0xA97C, 0x11D0, [0x85, 0x34, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID CLSID_PSBindCtx = {0x00000312, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_PSClassObject = {0x0000030E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_PSClientSite = {0x0000030D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_PSDragDrop = {0x00000311, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_PSEnumerators = {0x00000313, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_PseudoSink = {0xE002E4F0, 0xE6EA, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; +enum IID CLSID_PSGenObject = {0x0000030C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_PSInPlaceActive = {0x0000030F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_PSInPlaceFrame = {0x00000310, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_PSUrlMonProxy = {0x79EAC9F1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_PublishDropTarget = {0xCC6EEFFB, 0x43F6, 0x46C5, [0x96, 0x19, 0x51, 0xD5, 0x71, 0x96, 0x7F, 0x7D]}; +enum IID CLSID_PublishingWizard = {0x6B33163C, 0x76A5, 0x4B6C, [0xBF, 0x21, 0x45, 0xDE, 0x9C, 0xD5, 0x03, 0xA1]}; +enum IID CLSID_QueryAssociations = {0xA07034FD, 0x6CAA, 0x4954, [0xAC, 0x3F, 0x97, 0xA2, 0x72, 0x16, 0xF9, 0x8A]}; +enum IID CLSID_QueryCancelAutoPlay = {0x331F1768, 0x05A9, 0x4DDD, [0xB8, 0x6E, 0xDA, 0xE3, 0x4D, 0xDC, 0x99, 0x8A]}; +enum IID CLSID_RecycleBin = {0x645FF040, 0x5081, 0x101B, [0x9F, 0x08, 0x00, 0xAA, 0x00, 0x2F, 0x95, 0x4E]}; +enum IID CLSID_RemoteUnknownPSFactory = {0x00000340, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_Rendezvous = {0xF1029E5B, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID CLSID_ReplicaPointer = {0xF5D1BADF, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_Request = {0x6BC096B1, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +enum IID CLSID_RequestMakeCall = {0xAC48FFE0, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID CLSID_ResProtocol = {0x3050F3BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_RTCClient = {0x7A42EA29, 0xA2B7, 0x40C4, [0xB0, 0x91, 0xF6, 0xF0, 0x24, 0xAA, 0x89, 0xBE]}; +enum IID CLSID_Scriptlet = {0xAE24FDAE, 0x03C6, 0x11D1, [0x8B, 0x76, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; +enum IID CLSID_SdoMachine = {0xE9218AE7, 0x9E91, 0x11D1, [0xBF, 0x60, 0x00, 0x80, 0xC7, 0x84, 0x6B, 0xC0]}; +enum IID CLSID_SdpConferenceBlob = {0x9B2719DD, 0xB696, 0x11D0, [0xA4, 0x89, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID CLSID_SearchAssistantOC = {0xB45FF030, 0x4447, 0x11D2, [0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; +enum IID CLSID_SearchCommand = {0xB005E690, 0x678D, 0x11D1, [0xB7, 0x58, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +enum IID CLSID_SecondaryControlChannel = {0x7B3181A0, 0xC92F, 0x4567, [0xB0, 0xFA, 0xCD, 0x9A, 0x10, 0xEC, 0xD7, 0xD1]}; +enum IID CLSID_SecurityDescriptor = {0xB958F73C, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID CLSID_SENS = {0xD597CAFE, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +enum IID CLSID_ServiceManager = {0xABD0388A, 0xDEC1, 0x44F3, [0x98, 0xE1, 0x8D, 0x5C, 0xC8, 0x0B, 0x97, 0xEB]}; +enum IID CLSID_SharingApplicationDefinition = {0x46C166B0, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID CLSID_SharingConfiguration = {0x46C166B1, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID CLSID_SharingManagerEnumApplicationDe = {0x46C166AE, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID CLSID_SharingManagerEnumPortMapping = {0x46C166AF, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID CLSID_SharingManagerEnumPrivateConnec = {0x46C166AD, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID CLSID_SharingManagerEnumPublicConnect = {0x46C166AC, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID CLSID_Shell = {0x13709620, 0xC279, 0x11CE, [0xA4, 0x9E, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID CLSID_ShellBrowserWindow = {0xC08AFD90, 0xF2A1, 0x11D1, [0x84, 0x55, 0x00, 0xA0, 0xC9, 0x1F, 0x38, 0x80]}; +enum IID CLSID_ShellDesktop = {0x00021400, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_ShellDispatchInproc = {0x0A89A860, 0xD7B1, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID CLSID_ShellFolderItem = {0x2FE352EA, 0xFD1F, 0x11D2, [0xB1, 0xF4, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; +enum IID CLSID_ShellFolderView = {0x62112AA1, 0xEBE4, 0x11CF, [0xA5, 0xFB, 0x00, 0x20, 0xAF, 0xE7, 0x29, 0x2D]}; +enum IID CLSID_ShellFolderViewOC = {0x9BA05971, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; +enum IID CLSID_ShellFSFolder = {0xF3364BA0, 0x65B9, 0x11CE, [0xA9, 0xBA, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37]}; +enum IID CLSID_ShellImageDataFactory = {0x66E4E4FB, 0xF385, 0x4DD0, [0x8D, 0x74, 0xA2, 0xEF, 0xD1, 0xBC, 0x61, 0x78]}; +enum IID CLSID_ShellLink = {0x00021401, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_ShellLinkObject = {0x11219420, 0x1768, 0x11D1, [0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; +enum IID CLSID_ShellLocalMachine = {0x60664CAF, 0xAF0D, 0x0005, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +enum IID CLSID_ShellLogonEnumUsers = {0x60664CAF, 0xAF0D, 0x0004, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +enum IID CLSID_ShellLogonStatusHost = {0x60664CAF, 0xAF0D, 0x0007, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +enum IID CLSID_ShellLogonUser = {0x60664CAF, 0xAF0D, 0x0003, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +enum IID CLSID_ShellNameSpace = {0x55136805, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; +enum IID CLSID_ShellUIHelper = {0x64AB4BB7, 0x111E, 0x11D1, [0x8F, 0x79, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +enum IID CLSID_ShellWindows = {0x9BA05972, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; +enum IID CLSID_SizeCategorizer = {0x55D7B852, 0xF6D1, 0x42F2, [0xAA, 0x75, 0x87, 0x28, 0xA1, 0xB2, 0xD2, 0x64]}; +enum IID CLSID_SoftDistExt = {0xB15B8DC0, 0xC7E1, 0x11D0, [0x86, 0x80, 0x00, 0xAA, 0x00, 0xBD, 0xCB, 0x71]}; +enum IID CLSID_SpeakerphoneTerminal = {0xAAF578EE, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID CLSID_SpeakersTerminal = {0xAAF578F0, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID CLSID_SpeechUIServer = {0x1443904B, 0x34E4, 0x40F6, [0xB3, 0x0F, 0x6B, 0xEB, 0x81, 0x26, 0x7B, 0x80]}; +enum IID CLSID_StaticDib = {0x00000316, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_StaticMetafile = {0x00000315, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_StdAsyncActManager = {0x00000329, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_StdComponentCategoriesMgr = {0x0002E005, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_StdEncodingFilterFac = {0x54C37CD0, 0xD944, 0x11D0, [0xA9, 0xF4, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; +enum IID CLSID_StdEvent = {0x0000032B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_StdFont = {0x0BE35203, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +enum IID CLSID_StdGlobalInterfaceTable = {0x00000323, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_StdHlink = {0x79EAC9D0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_StdHlinkBrowseContext = {0x79EAC9D1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_StdMarshal = {0x00000017, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_StdNotificationMgr = {0xC733E4AF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_StdPicture = {0x0BE35204, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +enum IID CLSID_StdURLMoniker = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_StdURLProtocol = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_StgFolder = {0xE773F1AF, 0x3A65, 0x4866, [0x85, 0x7D, 0x84, 0x6F, 0xC9, 0xC4, 0x59, 0x8A]}; +enum IID CLSID_StockColorPage = {0x7EBDAAE1, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; +enum IID CLSID_StockFontPage = {0x7EBDAAE0, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; +enum IID CLSID_StockPicturePage = {0x7EBDAAE2, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; +enum IID CLSID_SubscriptionMgr = {0xABBE31D0, 0x6DAE, 0x11D0, [0xBE, 0xCA, 0x00, 0xC0, 0x4F, 0xD9, 0x40, 0xBE]}; +enum IID CLSID_SubscriptionThrottler = {0x1E9B00E5, 0x9846, 0x11D1, [0xA1, 0xEE, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +enum IID CLSID_SWbemDateTime = {0x47DFBE54, 0xCF76, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +enum IID CLSID_SWbemEventSource = {0x04B83D58, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemLastError = {0xC2FEEEAC, 0xCFCD, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemLocator = {0x76A64158, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemMethod = {0x04B83D5B, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemMethodSet = {0x04B83D5A, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemNamedValue = {0x04B83D60, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemNamedValueSet = {0x9AED384E, 0xCE8B, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemObject = {0x04B83D62, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemObjectEx = {0xD6BDAFB2, 0x9435, 0x491F, [0xBB, 0x87, 0x6A, 0xA0, 0xF0, 0xBC, 0x31, 0xA2]}; +enum IID CLSID_SWbemObjectPath = {0x5791BC26, 0xCE9C, 0x11D1, [0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C]}; +enum IID CLSID_SWbemObjectSet = {0x04B83D61, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemPrivilege = {0x26EE67BC, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemPrivilegeSet = {0x26EE67BE, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemProperty = {0x04B83D5D, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemPropertySet = {0x04B83D5C, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemQualifier = {0x04B83D5F, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemQualifierSet = {0x04B83D5E, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemRefreshableItem = {0x8C6854BC, 0xDE4B, 0x11D3, [0xB3, 0x90, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +enum IID CLSID_SWbemRefresher = {0xD269BF5C, 0xD9C1, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +enum IID CLSID_SWbemSecurity = {0xB54D66E9, 0x2287, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemServices = {0x04B83D63, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID CLSID_SWbemServicesEx = {0x62E522DC, 0x8CF3, 0x40A8, [0x8B, 0x2E, 0x37, 0xD5, 0x95, 0x65, 0x1E, 0x40]}; +enum IID CLSID_SWbemSink = {0x75718C9A, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; +enum IID CLSID_SynchronizeContainer = {0x0000032D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID CLSID_SyncMgr = {0x6295DF27, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +enum IID CLSID_TAPI = {0x21D6D48E, 0xA88B, 0x11D0, [0x83, 0xDD, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID CLSID_TaskbarList = {0x56FDF344, 0xFD6D, 0x11D0, [0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90]}; +enum IID CLSID_TaskManager = {0xC0F615A7, 0xF874, 0x4521, [0x87, 0x91, 0xED, 0x3B, 0x84, 0x01, 0x7E, 0xF7]}; +enum IID CLSID_TerminalManager = {0x7170F2E0, 0x9BE3, 0x11D0, [0xA0, 0x09, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; +enum IID CLSID_THREAD_BROADCAST = {0xD34F1812, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_ThreadDialogProcParam = {0x3050F5EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID CLSID_ThumbnailFCNHandler = {0xCEFC65D8, 0x66D8, 0x11D1, [0x8D, 0x8C, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; +enum IID CLSID_ThumbnailUpdater = {0xA3C63918, 0x889D, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; +enum IID CLSID_TIME = {0xE32EF57B, 0x7FDE, 0x4765, [0x9B, 0xC5, 0xA1, 0xBA, 0x97, 0x05, 0xC4, 0x4E]}; +enum IID CLSID_TIMEAnimation = {0xF99D135A, 0xC07C, 0x449E, [0x96, 0x5C, 0x7D, 0xBB, 0x7C, 0x55, 0x4A, 0x51]}; +enum IID CLSID_TimeCategorizer = {0x3BB4118F, 0xDDFD, 0x4D30, [0xA3, 0x48, 0x9F, 0xB5, 0xD6, 0xBF, 0x1A, 0xFE]}; +enum IID CLSID_TIMEColorAnimation = {0x62F75052, 0xF3EC, 0x4A64, [0x84, 0xFB, 0xAB, 0x18, 0xE0, 0x74, 0x6E, 0xD8]}; +enum IID CLSID_TIMEFactory = {0x17237A20, 0x3ADB, 0x48EC, [0xB1, 0x82, 0x35, 0x29, 0x1F, 0x11, 0x57, 0x90]}; +enum IID CLSID_TIMEFilterAnimation = {0xC54515D0, 0xF2E5, 0x4BDD, [0xAA, 0x86, 0x1E, 0x4F, 0x23, 0xE4, 0x80, 0xE7]}; +enum IID CLSID_TIMEMotionAnimation = {0x0019A09D, 0x1A81, 0x41C5, [0x89, 0xEC, 0xD9, 0xE7, 0x37, 0x81, 0x13, 0x03]}; +enum IID CLSID_TIMESetAnimation = {0xBA91CE53, 0xBAEB, 0x4F05, [0x86, 0x1C, 0x0A, 0x2A, 0x09, 0x34, 0xF8, 0x2E]}; +enum IID CLSID_Timestamp = {0xB2BED2EB, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_ToolbarExtButtons = {0x2CE4B5D8, 0xA28F, 0x11D2, [0x86, 0xC5, 0x00, 0xC0, 0x4F, 0x8E, 0xEA, 0x99]}; +enum IID CLSID_TrackFile = {0x8790C947, 0xA30B, 0x11D0, [0x8C, 0xAB, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; +enum IID CLSID_TrkForceOwnership = {0xA2531F45, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; +enum IID CLSID_TrkRestoreNotify = {0xD0056F6C, 0xE2A0, 0x11D0, [0xB1, 0xC2, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +enum IID CLSID_TrkRestoreParser = {0x755939E4, 0xE381, 0x11D0, [0xB1, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +enum IID CLSID_TypedName = {0xB33143CB, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID CLSID_UmiLDAPQueryObject = {0xCD5D4D76, 0xA818, 0x4F95, [0xB9, 0x58, 0x79, 0x70, 0xFD, 0x94, 0x12, 0xCA]}; +enum IID CLSID_UnsecuredApartment = {0x49BD2028, 0x1523, 0x11D1, [0xAD, 0x79, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID CLSID_UPnPDescriptionDocument = {0x1D8A9B47, 0x3A28, 0x4CE2, [0x8A, 0x4B, 0xBD, 0x34, 0xE4, 0x5B, 0xCE, 0xEB]}; +enum IID CLSID_UPnPDevice = {0xA32552C5, 0xBA61, 0x457A, [0xB5, 0x9A, 0xA2, 0x56, 0x1E, 0x12, 0x5E, 0x33]}; +enum IID CLSID_UPnPDeviceFinder = {0xE2085F28, 0xFEB7, 0x404A, [0xB8, 0xE7, 0xE6, 0x59, 0xBD, 0xEA, 0xAA, 0x02]}; +enum IID CLSID_UPnPDeviceHostICSSupport = {0x797A9BB1, 0x9E49, 0x4E63, [0xAF, 0xE1, 0x1B, 0x45, 0xB9, 0xDC, 0x81, 0x62]}; +enum IID CLSID_UPnPDeviceHostSetup = {0xB4609411, 0xC81C, 0x4CCE, [0x8C, 0x76, 0xC6, 0xB5, 0x0C, 0x94, 0x02, 0xC6]}; +enum IID CLSID_UPnPDevices = {0xB9E84FFD, 0xAD3C, 0x40A4, [0xB8, 0x35, 0x08, 0x82, 0xEB, 0xCB, 0xAA, 0xA8]}; +enum IID CLSID_UPnPNAT = {0xAE1E00AA, 0x3FD5, 0x403C, [0x8A, 0x27, 0x2B, 0xBD, 0xC3, 0x0C, 0xD0, 0xE1]}; +enum IID CLSID_UPnPRegistrar = {0x204810B9, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +enum IID CLSID_UPnPService = {0xC624BA95, 0xFBCB, 0x4409, [0x8C, 0x03, 0x8C, 0xCE, 0xEC, 0x53, 0x3E, 0xF1]}; +enum IID CLSID_UPnPServices = {0xC0BC4B4A, 0xA406, 0x4EFC, [0x93, 0x2F, 0xB8, 0x54, 0x6B, 0x81, 0x00, 0xCC]}; +enum IID CLSID_UrlMkBindCtx = {0x79EAC9F2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID CLSID_UserEventTimer = {0x864A1288, 0x354C, 0x4D19, [0x9D, 0x68, 0xC2, 0x74, 0x2B, 0xB1, 0x49, 0x97]}; +enum IID CLSID_UserEventTimerCallback = {0x15FFFD13, 0x5140, 0x41B8, [0xB8, 0x9A, 0xC8, 0xD5, 0x75, 0x9C, 0xD2, 0xB2]}; +enum IID CLSID_UserNotification = {0x0010890E, 0x8789, 0x413C, [0xAD, 0xBC, 0x48, 0xF5, 0xB5, 0x11, 0xB3, 0xAF]}; +enum IID CLSID_VideoInputTerminal = {0xAAF578EC, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID CLSID_VideoWindowTerm = {0xF7438990, 0xD6EB, 0x11D0, [0x82, 0xA6, 0x00, 0xAA, 0x00, 0xB5, 0xCA, 0x1B]}; +enum IID CLSID_VirusScan = {0xE88E5DE0, 0xBD3E, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; +enum IID CLSID_WbemAdministrativeLocator = {0xCB8555CC, 0x9128, 0x11D1, [0xAD, 0x9B, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID CLSID_WbemAuthenticatedLocator = {0xCD184336, 0x9128, 0x11D1, [0xAD, 0x9B, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID CLSID_WbemBackupRestore = {0xC49E32C6, 0xBC8B, 0x11D2, [0x85, 0xD4, 0x00, 0x10, 0x5A, 0x1F, 0x83, 0x04]}; +enum IID CLSID_WbemClassObject = {0x9A653086, 0x174F, 0x11D2, [0xB5, 0xF9, 0x00, 0x10, 0x4B, 0x70, 0x3E, 0xFD]}; +enum IID CLSID_WbemContext = {0x674B6698, 0xEE92, 0x11D0, [0xAD, 0x71, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID CLSID_WbemDCOMTransport = {0xF7CE2E13, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID CLSID_WbemDecoupledBasicEventProvide = {0xF5F75737, 0x2843, 0x4F22, [0x93, 0x3D, 0xC7, 0x6A, 0x97, 0xCD, 0xA6, 0x2F]}; +enum IID CLSID_WbemDecoupledRegistrar = {0x4CFC7932, 0x0F9D, 0x4BEF, [0x9C, 0x32, 0x8E, 0xA2, 0xA6, 0xB5, 0x6F, 0xCB]}; +enum IID CLSID_WbemDefPath = {0xCF4CC405, 0xE2C5, 0x4DDD, [0xB3, 0xCE, 0x5E, 0x75, 0x82, 0xD8, 0xC9, 0xFA]}; +enum IID CLSID_WbemLevel1Login = {0x8BC3F05E, 0xD86B, 0x11D0, [0xA0, 0x75, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID CLSID_WbemLocalAddrRes = {0xA1044801, 0x8F7E, 0x11D1, [0x9E, 0x7C, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID CLSID_WbemLocator = {0x4590F811, 0x1D3A, 0x11D0, [0x89, 0x1F, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; +enum IID CLSID_WbemObjectTextSrc = {0x8D1C559D, 0x84F0, 0x4BB3, [0xA7, 0xD5, 0x56, 0xA7, 0x43, 0x5A, 0x9B, 0xA6]}; +enum IID CLSID_WbemQuery = {0xEAC8A024, 0x21E2, 0x4523, [0xAD, 0x73, 0xA7, 0x1A, 0x0A, 0xA2, 0xF5, 0x6A]}; +enum IID CLSID_WbemRefresher = {0xC71566F2, 0x561E, 0x11D1, [0xAD, 0x87, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID CLSID_WbemStatusCodeText = {0xEB87E1BD, 0x3233, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID CLSID_WbemUnauthenticatedLocator = {0x443E7B79, 0xDE31, 0x11D2, [0xB3, 0x40, 0x00, 0x10, 0x4B, 0xCC, 0x4B, 0x4A]}; +enum IID CLSID_WbemUninitializedClassObject = {0x7A0227F6, 0x7108, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID CLSID_WebBrowser = {0x8856F961, 0x340A, 0x11D0, [0xA9, 0x6B, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; +enum IID CLSID_WebBrowser_V1 = {0xEAB22AC3, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; +enum IID CLSID_WebCheck = {0xE6FB5E20, 0xDE35, 0x11CF, [0x9C, 0x87, 0x00, 0xAA, 0x00, 0x51, 0x27, 0xED]}; +enum IID CLSID_WebCheckDefaultProcess = {0xC733E4B0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID CLSID_WebCheckOfflineSync = {0x7FC0B86E, 0x5FA7, 0x11D1, [0xBC, 0x7C, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +enum IID CLSID_WebCrawlerAgent = {0x08165EA0, 0xE946, 0x11CF, [0x9C, 0x87, 0x00, 0xAA, 0x00, 0x51, 0x27, 0xED]}; +enum IID CLSID_WebViewFolderContents = {0x1820FED0, 0x473E, 0x11D0, [0xA9, 0x6C, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; +enum IID CLSID_WebWizardHost = {0xC827F149, 0x55C1, 0x4D28, [0x93, 0x5E, 0x57, 0xE4, 0x7C, 0xAE, 0xD9, 0x73]}; +enum IID CLSID_wfolders = {0xBAE31F9A, 0x1B81, 0x11D2, [0xA9, 0x7A, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; +enum IID CLSID_WinNTConnectionObject = {0x7992C6EB, 0xD142, 0x4332, [0x83, 0x1E, 0x31, 0x54, 0xC5, 0x0A, 0x83, 0x16]}; +enum IID CLSID_WinNTObject = {0xB8324185, 0x4050, 0x4220, [0x98, 0x0A, 0xAB, 0x14, 0x62, 0x3E, 0x06, 0x3A]}; +enum IID CLSID_WinNTSystemInfo = {0x66182EC4, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; +enum IID CLSID_WMIExtension = {0xF0975AFE, 0x5C7F, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; +enum IID CLSID_XMLDocument = {0xCFC399AF, 0xD876, 0x11D0, [0x9C, 0x10, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; +enum IID CLSID_XMLDSOControl = {0x550DDA30, 0x0541, 0x11D2, [0x9C, 0xA9, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +enum IID CLSID_XMLHTTPRequest = {0xED8C108E, 0x4349, 0x11D2, [0x91, 0xA4, 0x00, 0xC0, 0x4F, 0x79, 0x69, 0xE8]}; +enum IID CLSID_XMLParser = {0xD2423620, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +enum IID DB_PROPERTY_AUTOMATICUPDATE = {0xC8B52209, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_BTREE = {0xC8B52201, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_CHECK_OPTION = {0xC8B5220B, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_CLUSTERED = {0xC8B521FF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_CONSTRAINT_CHECK_DEFERRE = {0xC8B521F0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_DISALLOWNULL = {0xC8B52205, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_DROP_CASCADE = {0xC8B521F3, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_EXPLICITUPDATE = {0xC8B5220A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_FILLFACTOR = {0xC8B52203, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_HASH = {0xC8B52202, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_IGNOREANYNULL = {0xC8B52207, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_IGNORENULL = {0xC8B52206, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_INITIALSIZE = {0xC8B52204, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_NONCLUSTERED = {0xC8B52200, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_ON_COMMIT_PRESERVE_ROWS = {0xC8B52230, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_PRIMARY = {0xC8B521FC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_SORTBOOKMARKS = {0xC8B52208, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DB_PROPERTY_UNIQUE = {0xC8B521F5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBCOL_SELFCOLUMNS = {0xC8B52231, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBCOL_SPECIALCOL = {0xC8B52232, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_COMMAND = {0xC8B522F8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_CONTAINEROBJECT = {0xC8B522FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_DBSQL = {0xC8B521FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_DEFAULT = {0xC8B521FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_DSO = {0xC8B522F4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_HISTOGRAM_ROWSET = {0xC8B52300, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_LDAPDialect = {0xEFF65380, 0x9C98, 0x11CF, [0xB9, 0x63, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_LIKE_DOS = {0xC8B521F7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_LIKE_MAPI = {0xC8B521F9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_LIKE_OFS = {0xC8B521F8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_LIKE_SQL = {0xC8B521F6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_MDX = {0xA07CCCD0, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +enum IID DBGUID_ROW = {0xC8B522F7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_ROWSET = {0xC8B522F6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_SESSION = {0xC8B522F5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_SQL = {0xC8B522D7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBGUID_STREAM = {0xC8B522F9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_CHARACTERSET = {0xC8B522ED, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_COLLATION = {0xC8B522EA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_COLUMN = {0xC8B522E4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_DATABASE = {0xC8B522E5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_DOMAIN = {0xC8B522E9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_PROCEDURE = {0xC8B522E6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_SCHEMA = {0xC8B522E8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_SCHEMAROWSET = {0xC8B522EC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_TABLE = {0xC8B522E2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_TRANSLATION = {0xC8B522EE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_TRUSTEE = {0xC8B522EB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBOBJECT_VIEW = {0xC8B522E7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_ADSIBIND = {0x6DA66DC8, 0xB7E8, 0x11D2, [0x9D, 0x60, 0x00, 0xC0, 0x4F, 0x68, 0x93, 0x45]}; +enum IID DBPROPSET_ADSISEARCH = {0xCFCFC928, 0x9AA2, 0x11D0, [0xA7, 0x9A, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; +enum IID DBPROPSET_COLUMN = {0xC8B522B9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_COLUMNALL = {0xC8B522F0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_CONSTRAINTALL = {0xC8B522FA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_DATASOURCE = {0xC8B522BA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_DATASOURCEALL = {0xC8B522C0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_DATASOURCEINFO = {0xC8B522BB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_DATASOURCEINFOALL = {0xC8B522C1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_DBINIT = {0xC8B522BC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_DBINITALL = {0xC8B522CA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_INDEX = {0xC8B522BD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_INDEXALL = {0xC8B522F1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_PROPERTIESINERROR = {0xC8B522D4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_ROWSET = {0xC8B522BE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_ROWSETALL = {0xC8B522C2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_SESSION = {0xC8B522C6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_SESSIONALL = {0xC8B522C7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_STREAM = {0xC8B522FD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_STREAMALL = {0xC8B522FE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_TABLE = {0xC8B522BF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_TABLEALL = {0xC8B522F2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_TRUSTEE = {0xC8B522E1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_TRUSTEEALL = {0xC8B522F3, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_VIEW = {0xC8B522DF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBPROPSET_VIEWALL = {0xC8B522FC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_ASSERTIONS = {0xC8B52210, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_CATALOGS = {0xC8B52211, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_CHARACTER_SETS = {0xC8B52212, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_CHECK_CONSTRAINTS = {0xC8B52215, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE = {0xC8B52301, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_COLLATIONS = {0xC8B52213, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_COLUMN_DOMAIN_USAGE = {0xC8B5221B, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_COLUMN_PRIVILEGES = {0xC8B52221, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_COLUMNS = {0xC8B52214, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_CONSTRAINT_COLUMN_USAGE = {0xC8B52216, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_CONSTRAINT_TABLE_USAGE = {0xC8B52217, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_FOREIGN_KEYS = {0xC8B522C4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_INDEXES = {0xC8B5221E, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_KEY_COLUMN_USAGE = {0xC8B52218, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_PRIMARY_KEYS = {0xC8B522C5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_PROCEDURE_COLUMNS = {0xC8B522C9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_PROCEDURE_PARAMETERS = {0xC8B522B8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_PROCEDURES = {0xC8B52224, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_PROVIDER_TYPES = {0xC8B5222C, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_REFERENTIAL_CONSTRAINTS = {0xC8B52219, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_SCHEMATA = {0xC8B52225, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_SQL_LANGUAGES = {0xC8B52226, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_STATISTICS = {0xC8B52227, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_TABLE_CONSTRAINTS = {0xC8B5221A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_TABLE_PRIVILEGES = {0xC8B52222, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_TABLE_STATISTICS = {0xC8B522FF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_TABLES = {0xC8B52229, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_TABLES_INFO = {0xC8B522E0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_TRANSLATIONS = {0xC8B5222A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_TRUSTEE = {0xC8B522EF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_USAGE_PRIVILEGES = {0xC8B52223, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_VIEW_COLUMN_USAGE = {0xC8B5222E, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_VIEW_TABLE_USAGE = {0xC8B5222F, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DBSCHEMA_VIEWS = {0xC8B5222D, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID DDVPTYPE_BROOKTREE = {0x1352A560, 0xDA61, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +enum IID DDVPTYPE_CCIR656 = {0xFCA326A0, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +enum IID DDVPTYPE_E_HREFH_VREFL = {0x92783220, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +enum IID DDVPTYPE_E_HREFL_VREFL = {0xE09C77E0, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +enum IID DDVPTYPE_PHILIPS = {0x332CF160, 0xDA61, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +enum IID DIID__SearchAssistantEvents = {0x1611FDDA, 0x445B, 0x11D2, [0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; +enum IID DIID_DispCEventObj = {0x3050F558, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispDOMChildrenCollection = {0x3050F577, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTCAttachBehavior = {0x3050F583, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTCDefaultDispatch = {0x3050F573, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTCDescBehavior = {0x3050F57E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTCEventBehavior = {0x3050F574, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTCMethodBehavior = {0x3050F587, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTCPropertyBehavior = {0x3050F57F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLAnchorElement = {0x3050F502, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLAppBehavior = {0x3050F57C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLAreaElement = {0x3050F503, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLAreasCollection = {0x3050F56A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLAttributeCollection = {0x3050F56C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLBaseElement = {0x3050F518, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLBaseFontElement = {0x3050F504, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLBGsound = {0x3050F53C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLBlockElement = {0x3050F506, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLBody = {0x3050F507, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLBRElement = {0x3050F53A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLButtonElement = {0x3050F51F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLCommentElement = {0x3050F50A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLCurrentStyle = {0x3050F557, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLDDElement = {0x3050F50B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLDefaults = {0x3050F58C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLDivElement = {0x3050F50C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLDivPosition = {0x3050F50F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLDListElement = {0x3050F53B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLDocument = {0x3050F55F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLDOMAttribute = {0x3050F564, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLDOMImplementation = {0x3050F58F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLDOMTextNode = {0x3050F565, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLDTElement = {0x3050F50D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLElementCollection = {0x3050F56B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLEmbed = {0x3050F52E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLFieldSetElement = {0x3050F545, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLFontElement = {0x3050F512, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLFormElement = {0x3050F510, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLFrameBase = {0x3050F541, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLFrameElement = {0x3050F513, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLFrameSetSite = {0x3050F514, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLGenericElement = {0x3050F563, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLHeadElement = {0x3050F561, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLHeaderElement = {0x3050F515, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLHRElement = {0x3050F53D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLHtmlElement = {0x3050F560, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLIFrame = {0x3050F51B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLImg = {0x3050F51C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLInputElement = {0x3050F57D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLIsIndexElement = {0x3050F519, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLLabelElement = {0x3050F522, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLLegendElement = {0x3050F546, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLLIElement = {0x3050F523, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLLinkElement = {0x3050F524, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLListElement = {0x3050F525, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLMapElement = {0x3050F526, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLMarqueeElement = {0x3050F527, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLMetaElement = {0x3050F517, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLNextIdElement = {0x3050F51A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLNoShowElement = {0x3050F528, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLObjectElement = {0x3050F529, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLOListElement = {0x3050F52A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLOptionElement = {0x3050F52B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLParaElement = {0x3050F52C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLParamElement = {0x3050F590, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLPhraseElement = {0x3050F52D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLPopup = {0x3050F589, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLRenderStyle = {0x3050F58B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLRichtextElement = {0x3050F54D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLRuleStyle = {0x3050F55C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLScreen = {0x3050F591, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLScriptElement = {0x3050F530, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLSelectElement = {0x3050F531, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLSpanElement = {0x3050F548, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLSpanFlow = {0x3050F544, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLStyle = {0x3050F55A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLStyleElement = {0x3050F511, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLStyleSheet = {0x3050F58D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLTable = {0x3050F532, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLTableCaption = {0x3050F508, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLTableCell = {0x3050F536, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLTableCol = {0x3050F533, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLTableRow = {0x3050F535, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLTableSection = {0x3050F534, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLTextAreaElement = {0x3050F521, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLTextElement = {0x3050F537, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLTitleElement = {0x3050F516, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLUListElement = {0x3050F538, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLUnknownElement = {0x3050F539, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLWindow2 = {0x3050F55D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispHTMLWindowProxy = {0x3050F55E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispIHTMLInputButtonElement = {0x3050F51E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispIHTMLInputFileElement = {0x3050F542, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispIHTMLInputImage = {0x3050F51D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispIHTMLInputTextElement = {0x3050F520, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DispIHTMLOptionButtonElement = {0x3050F509, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_DMigrationWizardAutoEvents = {0xD2AC137D, 0xA6D8, 0x43B6, [0x98, 0x79, 0xEA, 0x34, 0xB6, 0x7E, 0x18, 0x80]}; +enum IID DIID_DSearchCommandEvents = {0x60890160, 0x69F0, 0x11D1, [0xB7, 0x58, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +enum IID DIID_DShellFolderViewEvents = {0x62112AA2, 0xEBE4, 0x11CF, [0xA5, 0xFB, 0x00, 0x20, 0xAF, 0xE7, 0x29, 0x2D]}; +enum IID DIID_DShellNameSpaceEvents = {0x55136806, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; +enum IID DIID_DShellWindowsEvents = {0xFE4106E0, 0x399A, 0x11D0, [0xA4, 0x8C, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; +enum IID DIID_DWebBridgeEvents = {0xA6D897FF, 0x0A95, 0x11D1, [0xB0, 0xBA, 0x00, 0x60, 0x08, 0x16, 0x6E, 0x11]}; +enum IID DIID_DWebBrowserEvents = {0xEAB22AC2, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; +enum IID DIID_DWebBrowserEvents2 = {0x34A715A0, 0x6587, 0x11D0, [0x92, 0x4A, 0x00, 0x20, 0xAF, 0xC7, 0xAC, 0x4D]}; +enum IID DIID_HTMLAnchorEvents = {0x3050F29D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLAnchorEvents2 = {0x3050F610, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLAreaEvents = {0x3050F366, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLAreaEvents2 = {0x3050F611, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLButtonElementEvents = {0x3050F2B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLButtonElementEvents2 = {0x3050F617, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLControlElementEvents = {0x3050F4EA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLControlElementEvents2 = {0x3050F612, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLDocumentEvents = {0x3050F260, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLDocumentEvents2 = {0x3050F613, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLElementEvents = {0x3050F33C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLElementEvents2 = {0x3050F60F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLFormElementEvents = {0x3050F364, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLFormElementEvents2 = {0x3050F614, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLFrameSiteEvents = {0x3050F800, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLFrameSiteEvents2 = {0x3050F7FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLImgEvents = {0x3050F25B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLImgEvents2 = {0x3050F616, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLInputFileElementEvents = {0x3050F2AF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLInputFileElementEvents2 = {0x3050F61A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLInputImageEvents = {0x3050F2C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLInputImageEvents2 = {0x3050F61B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLInputTextElementEvents = {0x3050F2A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLInputTextElementEvents2 = {0x3050F618, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLLabelEvents = {0x3050F329, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLLabelEvents2 = {0x3050F61C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLLinkElementEvents = {0x3050F3CC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLLinkElementEvents2 = {0x3050F61D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLMapEvents = {0x3050F3BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLMapEvents2 = {0x3050F61E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLMarqueeElementEvents = {0x3050F2B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLMarqueeElementEvents2 = {0x3050F61F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLNamespaceEvents = {0x3050F6BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLObjectElementEvents = {0x3050F3C4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLObjectElementEvents2 = {0x3050F620, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLOptionButtonElementEvents = {0x3050F2BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLOptionButtonElementEvents2 = {0x3050F619, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLPersistEvents = {0x3050F4C7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLScriptEvents = {0x3050F3E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLScriptEvents2 = {0x3050F621, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLSelectElementEvents = {0x3050F302, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLSelectElementEvents2 = {0x3050F622, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLStyleElementEvents = {0x3050F3CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLStyleElementEvents2 = {0x3050F615, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLTableEvents = {0x3050F407, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLTableEvents2 = {0x3050F623, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLTextContainerEvents = {0x1FF6AA72, 0x5842, 0x11CF, [0xA7, 0x07, 0x00, 0xAA, 0x00, 0xC0, 0x09, 0x8D]}; +enum IID DIID_HTMLTextContainerEvents2 = {0x3050F624, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_HTMLWindowEvents = {0x96A0A4E0, 0xD062, 0x11CF, [0x94, 0xB6, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; +enum IID DIID_HTMLWindowEvents2 = {0x3050F625, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_IRTCDispatchEventNotification = {0x176DDFBE, 0xFEC0, 0x4D55, [0xBC, 0x87, 0x84, 0xCF, 0xF1, 0xEF, 0x7F, 0x91]}; +enum IID DIID_ISWbemSinkEvents = {0x75718CA0, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; +enum IID DIID_ITTAPIDispatchEventNotification = {0x9F34325B, 0x7E62, 0x11D2, [0x94, 0x57, 0x00, 0xC0, 0x4F, 0x8E, 0xC8, 0x88]}; +enum IID DIID_LayoutRectEvents = {0x3050F674, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID DIID_XMLDOMDocumentEvents = {0x3EFAA427, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; +enum IID DPAID_ComPort = {0xF2F0CE00, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID DPAID_INet = {0xC4A54DA0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID DPAID_INetPort = {0xE4524541, 0x8EA5, 0x11D1, [0x8A, 0x96, 0x00, 0x60, 0x97, 0xB0, 0x14, 0x11]}; +enum IID DPAID_INetW = {0xE63232A0, 0x9DBF, 0x11D0, [0x9C, 0xC1, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID DPAID_LobbyProvider = {0x59B95640, 0x9667, 0x11D0, [0xA7, 0x7D, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +enum IID DPAID_Modem = {0xF6DCC200, 0xA2FE, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID DPAID_ModemW = {0x01FD92E0, 0xA2FF, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID DPAID_Phone = {0x78EC89A0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID DPAID_PhoneW = {0xBA5A7A70, 0x9DBF, 0x11D0, [0x9C, 0xC1, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID DPAID_ServiceProvider = {0x07D916C0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID DPAID_TotalSize = {0x1318F560, 0x912C, 0x11D0, [0x9D, 0xAA, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; +enum IID DPLPROPERTY_LobbyGuid = {0xF56920A0, 0xD218, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; +enum IID DPLPROPERTY_MessagesSupported = {0x762CCDA1, 0xD916, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; +enum IID DPLPROPERTY_PlayerGuid = {0xB4319322, 0xD20D, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; +enum IID DPLPROPERTY_PlayerScore = {0x48784000, 0xD219, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; +enum IID DPSPGUID_IPX = {0x685BC400, 0x9D2C, 0x11CF, [0xA9, 0xCD, 0x00, 0xAA, 0x00, 0x68, 0x86, 0xE3]}; +enum IID DPSPGUID_MODEM = {0x44EAA760, 0xCB68, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID DPSPGUID_SERIAL = {0x0F1D6860, 0x88D9, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID DPSPGUID_TCPIP = {0x36E95EE0, 0x8577, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0x53, 0x4E, 0x82]}; +enum IID DS3DALG_HRTF_FULL = {0xC2413340, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; +enum IID DS3DALG_HRTF_LIGHT = {0xC2413342, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; +enum IID DS3DALG_NO_VIRTUALIZATION = {0xC241333F, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; +enum IID FLAGID_Internet = {0x96300DA0, 0x2BAB, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID FMTID_AudioSummaryInformation = {0x64440490, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; +enum IID FMTID_Briefcase = {0x328D8B21, 0x7729, 0x4BFC, [0x95, 0x4C, 0x90, 0x2B, 0x32, 0x9D, 0x56, 0xB0]}; +enum IID FMTID_DiscardableInformation = {0xD725EBB0, 0xC9B8, 0x11D1, [0x89, 0xBC, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; +enum IID FMTID_Displaced = {0x9B174B33, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; +enum IID FMTID_DocSummaryInformation = {0xD5CDD502, 0x2E9C, 0x101B, [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE]}; +enum IID FMTID_DRM = {0xAEAC19E4, 0x89AE, 0x4508, [0xB9, 0xB7, 0xBB, 0x86, 0x7A, 0xBE, 0xE2, 0xED]}; +enum IID FMTID_ImageProperties = {0x14B81DA1, 0x0135, 0x4D31, [0x96, 0xD9, 0x6C, 0xBF, 0xC9, 0x67, 0x1A, 0x99]}; +enum IID FMTID_ImageSummaryInformation = {0x6444048F, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; +enum IID FMTID_InternetSite = {0x000214A1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID FMTID_Intshcut = {0x000214A0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID FMTID_MediaFileSummaryInformation = {0x64440492, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; +enum IID FMTID_Misc = {0x9B174B34, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; +enum IID FMTID_MUSIC = {0x56A3372E, 0xCE9C, 0x11D2, [0x9F, 0x0E, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6]}; +enum IID FMTID_PropertyBag = {0x20001801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +enum IID FMTID_Query = {0x49691C90, 0x7E17, 0x101A, [0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9]}; +enum IID FMTID_ShellDetails = {0x28636AA6, 0x953D, 0x11D2, [0xB5, 0xD6, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; +enum IID FMTID_Storage = {0xB725F130, 0x47EF, 0x101A, [0xA5, 0xF1, 0x02, 0x60, 0x8C, 0x9E, 0xEB, 0xAC]}; +enum IID FMTID_SummaryInformation = {0xF29F85E0, 0x4FF9, 0x1068, [0xAB, 0x91, 0x08, 0x00, 0x2B, 0x27, 0xB3, 0xD9]}; +enum IID FMTID_UserDefinedProperties = {0xD5CDD505, 0x2E9C, 0x101B, [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE]}; +enum IID FMTID_VideoSummaryInformation = {0x64440491, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; +enum IID FMTID_Volume = {0x9B174B35, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; +enum IID FMTID_WebView = {0xF2275480, 0xF782, 0x4291, [0xBD, 0x94, 0xF1, 0x36, 0x93, 0x51, 0x3A, 0xEC]}; +enum IID GUID_ACPI_CMOS_INTERFACE_STANDARD = {0x3A8D0384, 0x6505, 0x40CA, [0xBC, 0x39, 0x56, 0xC1, 0x5F, 0x8C, 0x5F, 0xED]}; +enum IID GUID_ACPI_INTERFACE_STANDARD = {0xB091A08A, 0xBA97, 0x11D0, [0xBD, 0x14, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; +enum IID GUID_ACPI_PORT_RANGES_INTERFACE_STAND = {0xF14F609B, 0xCBBD, 0x4957, [0xA6, 0x74, 0xBC, 0x00, 0x21, 0x3F, 0x1C, 0x97]}; +enum IID GUID_ACPI_REGS_INTERFACE_STANDARD = {0x06141966, 0x7245, 0x6369, [0x46, 0x2E, 0x4E, 0x65, 0x6C, 0x73, 0x6F, 0x6E]}; +enum IID GUID_ARBITER_INTERFACE_STANDARD = {0xE644F185, 0x8C0E, 0x11D0, [0xBE, 0xCF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +enum IID GUID_BUS_INTERFACE_STANDARD = {0x496B8280, 0x6F25, 0x11D0, [0xBE, 0xAF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +enum IID GUID_BUS_TYPE_1394 = {0xF74E73EB, 0x9AC5, 0x45EB, [0xBE, 0x4D, 0x77, 0x2C, 0xC7, 0x1D, 0xDF, 0xB3]}; +enum IID GUID_BUS_TYPE_AVC = {0xC06FF265, 0xAE09, 0x48F0, [0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83]}; +enum IID GUID_BUS_TYPE_DOT4PRT = {0x441EE001, 0x4342, 0x11D5, [0xA1, 0x84, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; +enum IID GUID_BUS_TYPE_EISA = {0xDDC35509, 0xF3FC, 0x11D0, [0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1]}; +enum IID GUID_BUS_TYPE_HID = {0xEEAF37D0, 0x1963, 0x47C4, [0xAA, 0x48, 0x72, 0x47, 0x6D, 0xB7, 0xCF, 0x49]}; +enum IID GUID_BUS_TYPE_INTERNAL = {0x1530EA73, 0x086B, 0x11D1, [0xA0, 0x9F, 0x00, 0xC0, 0x4F, 0xC3, 0x40, 0xB1]}; +enum IID GUID_BUS_TYPE_IRDA = {0x7AE17DC1, 0xC944, 0x44D6, [0x88, 0x1F, 0x4C, 0x2E, 0x61, 0x05, 0x3B, 0xC1]}; +enum IID GUID_BUS_TYPE_ISAPNP = {0xE676F854, 0xD87D, 0x11D0, [0x92, 0xB2, 0x00, 0xA0, 0xC9, 0x05, 0x5F, 0xC5]}; +enum IID GUID_BUS_TYPE_LPTENUM = {0xC4CA1000, 0x2DDC, 0x11D5, [0xA1, 0x7A, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; +enum IID GUID_BUS_TYPE_MCA = {0x1C75997A, 0xDC33, 0x11D0, [0x92, 0xB2, 0x00, 0xA0, 0xC9, 0x05, 0x5F, 0xC5]}; +enum IID GUID_BUS_TYPE_PCI = {0xC8EBDFB0, 0xB510, 0x11D0, [0x80, 0xE5, 0x00, 0xA0, 0xC9, 0x25, 0x42, 0xE3]}; +enum IID GUID_BUS_TYPE_PCMCIA = {0x09343630, 0xAF9F, 0x11D0, [0x92, 0xE9, 0x00, 0x00, 0xF8, 0x1E, 0x1B, 0x30]}; +enum IID GUID_BUS_TYPE_SERENUM = {0x77114A87, 0x8944, 0x11D1, [0xBD, 0x90, 0x00, 0xA0, 0xC9, 0x06, 0xBE, 0x2D]}; +enum IID GUID_BUS_TYPE_USB = {0x9D7DEBBC, 0xC85D, 0x11D1, [0x9E, 0xB4, 0x00, 0x60, 0x08, 0xC3, 0xA1, 0x9A]}; +enum IID GUID_BUS_TYPE_USBPRINT = {0x441EE000, 0x4342, 0x11D5, [0xA1, 0x84, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; +enum IID GUID_Button = {0xA36D02F0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_CHECKVALUEEXCLUSIVE = {0x6650430C, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_ChordParam = {0xD2AC289E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_Clear_All_Bands = {0xD2AC28AB, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_COLOR = {0x66504301, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_ColorControlCallbacks = {0xEFD60CC2, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +enum IID GUID_CommandParam = {0xD2AC289D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_CommandParam2 = {0x28F97EF7, 0x9538, 0x11D2, [0x97, 0xA9, 0x00, 0xC0, 0x4F, 0xA3, 0x6E, 0x58]}; +enum IID GUID_ConnectToDLSCollection = {0x1DB1AE6B, 0xE92E, 0x11D1, [0xA8, 0xC5, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0x6E]}; +enum IID GUID_ConstantForce = {0x13541C20, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_CustomForce = {0x13541C2B, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_D3DCallbacks2 = {0x0BA584E1, 0x70B6, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +enum IID GUID_D3DCallbacks3 = {0xDDF41230, 0xEC0A, 0x11D0, [0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E]}; +enum IID GUID_D3DExtendedCaps = {0x7DE41F80, 0x9D93, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +enum IID GUID_D3DParseUnknownCommandCallback = {0x2E04FFA0, 0x98E4, 0x11D1, [0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID GUID_Damper = {0x13541C28, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_DDMoreCaps = {0x880BAF30, 0xB030, 0x11D0, [0x8E, 0xA7, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; +enum IID GUID_DDMoreSurfaceCaps = {0x3B8A0466, 0xF269, 0x11D1, [0x88, 0x0B, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +enum IID GUID_DDStereoMode = {0xF828169C, 0xA8E8, 0x11D2, [0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6]}; +enum IID GUID_DefaultGMCollection = {0xF17E8673, 0xC3B4, 0x11D1, [0x87, 0x0B, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_DEVCLASS_1394 = {0x6BDD1FC1, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +enum IID GUID_DEVCLASS_1394DEBUG = {0x66F250D6, 0x7801, 0x4A64, [0xB1, 0x39, 0xEE, 0xA8, 0x0A, 0x45, 0x0B, 0x24]}; +enum IID GUID_DEVCLASS_61883 = {0x7EBEFBC0, 0x3200, 0x11D2, [0xB4, 0xC2, 0x00, 0xA0, 0xC9, 0x69, 0x7D, 0x07]}; +enum IID GUID_DEVCLASS_ADAPTER = {0x4D36E964, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_APMSUPPORT = {0xD45B1C18, 0xC8FA, 0x11D1, [0x9F, 0x77, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; +enum IID GUID_DEVCLASS_AVC = {0xC06FF265, 0xAE09, 0x48F0, [0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83]}; +enum IID GUID_DEVCLASS_BATTERY = {0x72631E54, 0x78A4, 0x11D0, [0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; +enum IID GUID_DEVCLASS_BLUETOOTH = {0xE0CBF06C, 0xCD8B, 0x4647, [0xBB, 0x8A, 0x26, 0x3B, 0x43, 0xF0, 0xF9, 0x74]}; +enum IID GUID_DEVCLASS_CDROM = {0x4D36E965, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_COMPUTER = {0x4D36E966, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_DECODER = {0x6BDD1FC2, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +enum IID GUID_DEVCLASS_DISKDRIVE = {0x4D36E967, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_DISPLAY = {0x4D36E968, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_DOT4 = {0x48721B56, 0x6795, 0x11D2, [0xB1, 0xA8, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2]}; +enum IID GUID_DEVCLASS_DOT4PRINT = {0x49CE6AC8, 0x6F86, 0x11D2, [0xB1, 0xE5, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2]}; +enum IID GUID_DEVCLASS_ENUM1394 = {0xC459DF55, 0xDB08, 0x11D1, [0xB0, 0x09, 0x00, 0xA0, 0xC9, 0x08, 0x1F, 0xF6]}; +enum IID GUID_DEVCLASS_FDC = {0x4D36E969, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_FLOPPYDISK = {0x4D36E980, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_FSFILTER_ACTIVITYMONIT = {0xB86DFF51, 0xA31E, 0x4BAC, [0xB3, 0xCF, 0xE8, 0xCF, 0xE7, 0x5C, 0x9F, 0xC2]}; +enum IID GUID_DEVCLASS_FSFILTER_ANTIVIRUS = {0xB1D1A169, 0xC54F, 0x4379, [0x81, 0xDB, 0xBE, 0xE7, 0xD8, 0x8D, 0x74, 0x54]}; +enum IID GUID_DEVCLASS_FSFILTER_CFSMETADATASER = {0xCDCF0939, 0xB75B, 0x4630, [0xBF, 0x76, 0x80, 0xF7, 0xBA, 0x65, 0x58, 0x84]}; +enum IID GUID_DEVCLASS_FSFILTER_COMPRESSION = {0xF3586BAF, 0xB5AA, 0x49B5, [0x8D, 0x6C, 0x05, 0x69, 0x28, 0x4C, 0x63, 0x9F]}; +enum IID GUID_DEVCLASS_FSFILTER_CONTENTSCREEN = {0x3E3F0674, 0xC83C, 0x4558, [0xBB, 0x26, 0x98, 0x20, 0xE1, 0xEB, 0xA5, 0xC5]}; +enum IID GUID_DEVCLASS_FSFILTER_CONTINUOUSBACK = {0x71AA14F8, 0x6FAD, 0x4622, [0xAD, 0x77, 0x92, 0xBB, 0x9D, 0x7E, 0x69, 0x47]}; +enum IID GUID_DEVCLASS_FSFILTER_COPYPROTECTIO = {0x89786FF1, 0x9C12, 0x402F, [0x9C, 0x9E, 0x17, 0x75, 0x3C, 0x7F, 0x43, 0x75]}; +enum IID GUID_DEVCLASS_FSFILTER_ENCRYPTION = {0xA0A701C0, 0xA511, 0x42FF, [0xAA, 0x6C, 0x06, 0xDC, 0x03, 0x95, 0x57, 0x6F]}; +enum IID GUID_DEVCLASS_FSFILTER_HSM = {0xD546500A, 0x2AEB, 0x45F6, [0x94, 0x82, 0xF4, 0xB1, 0x79, 0x9C, 0x31, 0x77]}; +enum IID GUID_DEVCLASS_FSFILTER_INFRASTRUCTUR = {0xE55FA6F9, 0x128C, 0x4D04, [0xAB, 0xAB, 0x63, 0x0C, 0x74, 0xB1, 0x45, 0x3A]}; +enum IID GUID_DEVCLASS_FSFILTER_OPENFILEBACKU = {0xF8ECAFA6, 0x66D1, 0x41A5, [0x89, 0x9B, 0x66, 0x58, 0x5D, 0x72, 0x16, 0xB7]}; +enum IID GUID_DEVCLASS_FSFILTER_PHYSICALQUOTAM = {0x6A0A8E78, 0xBBA6, 0x4FC4, [0xA7, 0x09, 0x1E, 0x33, 0xCD, 0x09, 0xD6, 0x7E]}; +enum IID GUID_DEVCLASS_FSFILTER_QUOTAMANAGEME = {0x8503C911, 0xA6C7, 0x4919, [0x8F, 0x79, 0x50, 0x28, 0xF5, 0x86, 0x6B, 0x0C]}; +enum IID GUID_DEVCLASS_FSFILTER_REPLICATION = {0x48D3EBC4, 0x4CF8, 0x48FF, [0xB8, 0x69, 0x9C, 0x68, 0xAD, 0x42, 0xEB, 0x9F]}; +enum IID GUID_DEVCLASS_FSFILTER_SECURITYENHANC = {0xD02BC3DA, 0x0C8E, 0x4945, [0x9B, 0xD5, 0xF1, 0x88, 0x3C, 0x22, 0x6C, 0x8C]}; +enum IID GUID_DEVCLASS_FSFILTER_SYSTEM = {0x5D1B9AAA, 0x01E2, 0x46AF, [0x84, 0x9F, 0x27, 0x2B, 0x3F, 0x32, 0x4C, 0x46]}; +enum IID GUID_DEVCLASS_FSFILTER_SYSTEMRECOVER = {0x2DB15374, 0x706E, 0x4131, [0xA0, 0xC7, 0xD7, 0xC7, 0x8E, 0xB0, 0x28, 0x9A]}; +enum IID GUID_DEVCLASS_FSFILTER_UNDELETE = {0xFE8F1572, 0xC67A, 0x48C0, [0xBB, 0xAC, 0x0B, 0x5C, 0x6D, 0x66, 0xCA, 0xFB]}; +enum IID GUID_DEVCLASS_GPS = {0x6BDD1FC3, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +enum IID GUID_DEVCLASS_HDC = {0x4D36E96A, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_HIDCLASS = {0x745A17A0, 0x74D3, 0x11D0, [0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA]}; +enum IID GUID_DEVCLASS_IMAGE = {0x6BDD1FC6, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +enum IID GUID_DEVCLASS_INFRARED = {0x6BDD1FC5, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +enum IID GUID_DEVCLASS_KEYBOARD = {0x4D36E96B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_LEGACYDRIVER = {0x8ECC055D, 0x047F, 0x11D1, [0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1]}; +enum IID GUID_DEVCLASS_MEDIA = {0x4D36E96C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_MEDIUM_CHANGER = {0xCE5939AE, 0xEBDE, 0x11D0, [0xB1, 0x81, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xC4]}; +enum IID GUID_DEVCLASS_MODEM = {0x4D36E96D, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_MONITOR = {0x4D36E96E, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_MOUSE = {0x4D36E96F, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_MTD = {0x4D36E970, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_MULTIFUNCTION = {0x4D36E971, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_MULTIPORTSERIAL = {0x50906CB8, 0xBA12, 0x11D1, [0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; +enum IID GUID_DEVCLASS_NET = {0x4D36E972, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_NETCLIENT = {0x4D36E973, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_NETSERVICE = {0x4D36E974, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_NETTRANS = {0x4D36E975, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_NODRIVER = {0x4D36E976, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_PCMCIA = {0x4D36E977, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_PNPPRINTERS = {0x4658EE7E, 0xF050, 0x11D1, [0xB6, 0xBD, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7]}; +enum IID GUID_DEVCLASS_PORTS = {0x4D36E978, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_PRINTER = {0x4D36E979, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_PRINTERUPGRADE = {0x4D36E97A, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_PROCESSOR = {0x50127DC3, 0x0F36, 0x415E, [0xA6, 0xCC, 0x4C, 0xB3, 0xBE, 0x91, 0x0B, 0x65]}; +enum IID GUID_DEVCLASS_SBP2 = {0xD48179BE, 0xEC20, 0x11D1, [0xB6, 0xB8, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7]}; +enum IID GUID_DEVCLASS_SCSIADAPTER = {0x4D36E97B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_SMARTCARDREADER = {0x50DD5230, 0xBA8A, 0x11D1, [0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; +enum IID GUID_DEVCLASS_SOUND = {0x4D36E97C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_SYSTEM = {0x4D36E97D, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_TAPEDRIVE = {0x6D807884, 0x7D21, 0x11CF, [0x80, 0x1C, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_UNKNOWN = {0x4D36E97E, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVCLASS_USB = {0x36FC9E60, 0xC465, 0x11CF, [0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_DEVCLASS_VOLUME = {0x71A27CDD, 0x812A, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +enum IID GUID_DEVCLASS_VOLUMESNAPSHOT = {0x533C5B84, 0xEC70, 0x11D2, [0x95, 0x05, 0x00, 0xC0, 0x4F, 0x79, 0xDE, 0xAF]}; +enum IID GUID_DEVCLASS_WCEUSBS = {0x25DBCE51, 0x6C8F, 0x4A72, [0x8A, 0x6D, 0xB5, 0x4C, 0x2B, 0x4F, 0xC8, 0x35]}; +enum IID GUID_DEVICE_INTERFACE_ARRIVAL = {0xCB3A4004, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +enum IID GUID_DEVICE_INTERFACE_REMOVAL = {0xCB3A4005, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +enum IID GUID_DEVINTERFACE_CDCHANGER = {0x53F56312, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +enum IID GUID_DEVINTERFACE_CDROM = {0x53F56308, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +enum IID GUID_DEVINTERFACE_COMPORT = {0x86E0D1E0, 0x8089, 0x11D0, [0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73]}; +enum IID GUID_DEVINTERFACE_DISK = {0x53F56307, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +enum IID GUID_DEVINTERFACE_FLOPPY = {0x53F56311, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +enum IID GUID_DEVINTERFACE_MEDIUMCHANGER = {0x53F56310, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +enum IID GUID_DEVINTERFACE_PARTITION = {0x53F5630A, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +enum IID GUID_DEVINTERFACE_SERENUM_BUS_ENUMERA = {0x4D36E978, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_DEVINTERFACE_STORAGEPORT = {0x2ACCFE60, 0xC130, 0x11D2, [0xB0, 0x82, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +enum IID GUID_DEVINTERFACE_TAPE = {0x53F5630B, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +enum IID GUID_DEVINTERFACE_VOLUME = {0x53F5630D, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +enum IID GUID_DEVINTERFACE_WRITEONCEDISK = {0x53F5630C, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +enum IID GUID_DirectDrawPaletteStream = {0x730C7FFC, 0x5347, 0x11D1, [0x8C, 0x4D, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +enum IID GUID_DirectDrawSurfaceStream = {0xE043BC46, 0x5317, 0x11D1, [0x8C, 0x4D, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +enum IID GUID_DirectMusicAllTypes = {0xD2AC2893, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_Disable_Auto_Download = {0xD2AC28AA, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_DisableTempo = {0x45FC707D, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +enum IID GUID_DisableTimeSig = {0x45FC707B, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +enum IID GUID_DMUS_PROP_DLS1 = {0x178F2F27, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID GUID_DMUS_PROP_DLS2 = {0xF14599E5, 0x4689, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +enum IID GUID_DMUS_PROP_Effects = {0xCDA8D611, 0x684A, 0x11D2, [0x87, 0x1E, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_DMUS_PROP_GM_Hardware = {0x178F2F24, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID GUID_DMUS_PROP_GS_Capable = {0x6496ABA2, 0x61B0, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +enum IID GUID_DMUS_PROP_GS_Hardware = {0x178F2F25, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID GUID_DMUS_PROP_INSTRUMENT2 = {0x865FD372, 0x9F67, 0x11D2, [0x87, 0x2A, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_DMUS_PROP_LegacyCaps = {0xCFA7CDC2, 0x00A1, 0x11D2, [0xAA, 0xD5, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID GUID_DMUS_PROP_MemorySize = {0x178F2F28, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID GUID_DMUS_PROP_SampleMemorySize = {0x178F2F28, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID GUID_DMUS_PROP_SamplePlaybackRate = {0x2A91F713, 0xA4BF, 0x11D2, [0xBB, 0xDF, 0x00, 0x60, 0x08, 0x33, 0xDB, 0xD8]}; +enum IID GUID_DMUS_PROP_SynthSink_DSOUND = {0x0AA97844, 0xC877, 0x11D1, [0x87, 0x0C, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_DMUS_PROP_SynthSink_WAVE = {0x0AA97845, 0xC877, 0x11D1, [0x87, 0x0C, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_DMUS_PROP_Volume = {0xFEDFAE25, 0xE46E, 0x11D1, [0xAA, 0xCE, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID GUID_DMUS_PROP_WavesReverb = {0x04CB5622, 0x32E5, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +enum IID GUID_DMUS_PROP_WriteLatency = {0x268A0FA0, 0x60F2, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +enum IID GUID_DMUS_PROP_WritePeriod = {0x268A0FA1, 0x60F2, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +enum IID GUID_DMUS_PROP_XG_Capable = {0x6496ABA1, 0x61B0, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +enum IID GUID_DMUS_PROP_XG_Hardware = {0x178F2F26, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID GUID_Download = {0xD2AC28A7, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_Enable_Auto_Download = {0xD2AC28A9, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_EnableTempo = {0x45FC707E, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +enum IID GUID_EnableTimeSig = {0x45FC707C, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +enum IID GUID_FONTBOLD = {0x6650430F, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_FONTITALIC = {0x66504310, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_FONTNAME = {0x6650430D, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_FONTSIZE = {0x6650430E, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_FONTSTRIKETHROUGH = {0x66504312, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_FONTUNDERSCORE = {0x66504311, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_Friction = {0x13541C2A, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_HANDLE = {0x66504313, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_HasPathProperties = {0x0002DE81, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID GUID_HIDClass = {0x745A17A0, 0x74D3, 0x11D0, [0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA]}; +enum IID GUID_HIMETRIC = {0x66504300, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_HWPROFILE_CHANGE_CANCELLED = {0xCB3A4002, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +enum IID GUID_HWPROFILE_CHANGE_COMPLETE = {0xCB3A4003, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +enum IID GUID_HWPROFILE_QUERY_CHANGE = {0xCB3A4001, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +enum IID GUID_IDirectMusicBand = {0xD2AC28AC, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_IDirectMusicChordMap = {0xD2AC28AD, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_IDirectMusicStyle = {0xD2AC28A1, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_Inertia = {0x13541C29, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_INT_ROUTE_INTERFACE_STANDARD = {0x70941BF4, 0x0073, 0x11D1, [0xA0, 0x9E, 0x00, 0xC0, 0x4F, 0xC3, 0x40, 0xB1]}; +enum IID GUID_Joystick = {0x6F1D2B70, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_KernelCallbacks = {0x80863800, 0x6B06, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +enum IID GUID_KernelCaps = {0xFFAA7540, 0x7AA8, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +enum IID GUID_Key = {0x55728220, 0xD33C, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_KeyboardClass = {0x4D36E96B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_LEGACY_DEVICE_DETECTION_STANDAR = {0x50FEB0DE, 0x596A, 0x11D2, [0xA5, 0xB8, 0x00, 0x00, 0xF8, 0x1A, 0x46, 0x19]}; +enum IID GUID_MediaClass = {0x4D36E96C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_MF_ENUMERATION_INTERFACE = {0xAEB895F0, 0x5586, 0x11D1, [0x8D, 0x84, 0x00, 0xA0, 0xC9, 0x06, 0xB2, 0x44]}; +enum IID GUID_Miscellaneous2Callbacks = {0x406B2F00, 0x3E5A, 0x11D1, [0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A]}; +enum IID GUID_MiscellaneousCallbacks = {0xEFD60CC0, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +enum IID GUID_MotionCompCallbacks = {0xB1122B40, 0x5DA5, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; +enum IID GUID_MouseClass = {0x4D36E96F, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +enum IID GUID_MuteParam = {0xD2AC28AF, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_NDIS_802_11_ADD_WEP = {0x4307BFF0, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_AUTHENTICATION_MODE = {0x43920A24, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_BASIC_RATES = {0x4A198516, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_BSSID = {0x2504B6C2, 0x1FA5, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_BSSID_LIST = {0x69526F9A, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_BSSID_LIST_SCAN = {0x0D9E01E1, 0xBA70, 0x11D4, [0xB6, 0x75, 0x00, 0x20, 0x48, 0x57, 0x03, 0x37]}; +enum IID GUID_NDIS_802_11_CONFIGURATION = {0x4A4DF982, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_DESIRED_RATES = {0x452EE08E, 0x2536, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_DISASSOCIATE = {0x43671F40, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_FRAGMENTATION_THRESH = {0x69AAA7C4, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_INFRASTRUCTURE_MODE = {0x697D5A7E, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_NETWORK_TYPE_IN_USE = {0x857E2326, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_NETWORK_TYPES_SUPPOR = {0x8531D6E6, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_NUMBER_OF_ANTENNAS = {0x01779336, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_POWER_MODE = {0x85BE837C, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_PRIVACY_FILTER = {0x6733C4E9, 0x4792, 0x11D4, [0x97, 0xF1, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_REMOVE_WEP = {0x433C345C, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_RSSI = {0x1507DB16, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_RSSI_TRIGGER = {0x155689B8, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_RTS_THRESHOLD = {0x0134D07E, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_RX_ANTENNA_SELECTED = {0x01AC07A2, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_SSID = {0x7D2A90EA, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_STATISTICS = {0x42BB73B0, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_SUPPORTED_RATES = {0x49DB8722, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_TX_ANTENNA_SELECTED = {0x01DBB74A, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_TX_POWER_LEVEL = {0x11E6BA76, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +enum IID GUID_NDIS_802_11_WEP_STATUS = {0xB027A21F, 0x3CFA, 0x4125, [0x80, 0x0B, 0x3F, 0x7A, 0x18, 0xFD, 0xDC, 0xDC]}; +enum IID GUID_NDIS_802_3_CURRENT_ADDRESS = {0x44795700, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_3_MAC_OPTIONS = {0x44795703, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_3_MAXIMUM_LIST_SIZE = {0x44795702, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_3_MULTICAST_LIST = {0x44795701, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_3_PERMANENT_ADDRESS = {0x447956FF, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_3_RCV_ERROR_ALIGNMENT = {0x44795704, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_3_XMIT_MORE_COLLISIONS = {0x44795706, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_3_XMIT_ONE_COLLISION = {0x44795705, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_5_CURRENT_ADDRESS = {0x44795708, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_5_CURRENT_FUNCTIONAL = {0x44795709, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_5_CURRENT_GROUP = {0x4479570A, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_5_CURRENT_RING_STATE = {0xACF14032, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_5_CURRENT_RING_STATUS = {0x890A36EC, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_5_LAST_OPEN_STATUS = {0x4479570B, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_5_LINE_ERRORS = {0xACF14033, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_5_LOST_FRAMES = {0xACF14034, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_802_5_PERMANENT_ADDRESS = {0x44795707, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_HW_CURRENT_ADDRESS = {0x791AD1A1, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_MAX_AAL0_PACKET_SIZE = {0x791AD1A5, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_MAX_AAL1_PACKET_SIZE = {0x791AD1A6, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_MAX_AAL34_PACKET_SIZE = {0x791AD1A7, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_MAX_AAL5_PACKET_SIZE = {0x791AD191, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_MAX_ACTIVE_VCI_BITS = {0x791AD1A3, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_MAX_ACTIVE_VCS = {0x791AD1A2, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_MAX_ACTIVE_VPI_BITS = {0x791AD1A4, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_RCV_CELLS_DROPPED = {0x0A21480C, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_RCV_CELLS_OK = {0x0A21480A, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_SUPPORTED_AAL_TYPES = {0x791AD1A0, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_SUPPORTED_SERVICE_CATEG = {0x791AD19F, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_SUPPORTED_VC_RATES = {0x791AD19E, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ATM_XMIT_CELLS_OK = {0x0A21480B, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ENUMERATE_ADAPTER = {0x981F2D7F, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_ENUMERATE_VC = {0x981F2D82, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_ATTACHMENT_TYPE = {0xACF1403D, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_DOWNSTREAM_NODE_LONG = {0xACF1403F, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_FRAME_ERRORS = {0xACF14040, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_FRAMES_LOST = {0xACF14041, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_LCONNECTION_STATE = {0xACF14045, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_LCT_FAILURES = {0xACF14043, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_LEM_REJECTS = {0xACF14044, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_LONG_CURRENT_ADDR = {0xACF14036, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_LONG_MAX_LIST_SIZE = {0xACF14038, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_LONG_MULTICAST_LIST = {0xACF14037, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_LONG_PERMANENT_ADDR = {0xACF14035, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_RING_MGT_STATE = {0xACF14042, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_SHORT_CURRENT_ADDR = {0xACF1403A, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_SHORT_MAX_LIST_SIZE = {0xACF1403C, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_SHORT_MULTICAST_LIST = {0xACF1403B, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_SHORT_PERMANENT_ADDR = {0xACF14039, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_FDDI_UPSTREAM_NODE_LONG = {0xACF1403E, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_DRIVER_VERSION = {0x791AD198, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_HARDWARE_STATUS = {0x791AD192, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_LINK_SPEED = {0x791AD195, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_MAC_OPTIONS = {0x791AD19A, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_MEDIA_CONNECT_STATU = {0x791AD19B, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_MEDIA_IN_USE = {0x791AD194, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_MEDIA_SUPPORTED = {0x791AD193, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_MINIMUM_LINK_SPEED = {0x791AD19D, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_RCV_PDUS_ERROR = {0x0A214808, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_RCV_PDUS_NO_BUFFER = {0x0A214809, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_RCV_PDUS_OK = {0x0A214806, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_VENDOR_DESCRIPTION = {0x791AD197, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_VENDOR_DRIVER_VERSI = {0x791AD19C, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_VENDOR_ID = {0x791AD196, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_XMIT_PDUS_ERROR = {0x0A214807, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CO_XMIT_PDUS_OK = {0x0A214805, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CURRENT_LOOKAHEAD = {0x5EC10361, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_CURRENT_PACKET_FILTER = {0x5EC10360, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_DRIVER_VERSION = {0x5EC10362, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_HARDWARE_STATUS = {0x5EC10354, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_LINK_SPEED = {0x5EC10359, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_MAC_OPTIONS = {0x5EC10365, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_MAXIMUM_FRAME_SIZE = {0x5EC10358, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_MAXIMUM_LOOKAHEAD = {0x5EC10357, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_MAXIMUM_SEND_PACKETS = {0x5EC10367, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_MAXIMUM_TOTAL_SIZE = {0x5EC10363, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_MEDIA_CONNECT_STATUS = {0x5EC10366, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_MEDIA_IN_USE = {0x5EC10356, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_MEDIA_SUPPORTED = {0x5EC10355, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_PHYSICAL_MEDIUM = {0x418CA16D, 0x3937, 0x4208, [0x94, 0x0A, 0xEC, 0x61, 0x96, 0x27, 0x80, 0x85]}; +enum IID GUID_NDIS_GEN_RCV_ERROR = {0x447956FD, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_RCV_NO_BUFFER = {0x447956FE, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_RCV_OK = {0x447956FB, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_RECEIVE_BLOCK_SIZE = {0x5EC1035D, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_RECEIVE_BUFFER_SPACE = {0x5EC1035B, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_TRANSMIT_BLOCK_SIZE = {0x5EC1035C, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_TRANSMIT_BUFFER_SPACE = {0x5EC1035A, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_VENDOR_DESCRIPTION = {0x5EC1035F, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_VENDOR_DRIVER_VERSION = {0x447956F9, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_VENDOR_ID = {0x5EC1035E, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_VLAN_ID = {0x765DC702, 0xC5E8, 0x4B67, [0x84, 0x3B, 0x3F, 0x5A, 0x4F, 0xF2, 0x64, 0x8B]}; +enum IID GUID_NDIS_GEN_XMIT_ERROR = {0x447956FC, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_GEN_XMIT_OK = {0x447956FA, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_LAN_CLASS = {0xAD498944, 0x762F, 0x11D0, [0x8D, 0xCB, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_NOTIFY_ADAPTER_ARRIVAL = {0x981F2D81, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_NOTIFY_ADAPTER_REMOVAL = {0x981F2D80, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_NOTIFY_BIND = {0x5413531C, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_NOTIFY_UNBIND = {0x6E3CE1EC, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_NOTIFY_VC_ARRIVAL = {0x182F9E0C, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_NOTIFY_VC_REMOVAL = {0x981F2D79, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_STATUS_LINK_SPEED_CHANGE = {0x981F2D85, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_STATUS_MEDIA_CONNECT = {0x981F2D7D, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_STATUS_MEDIA_DISCONNECT = {0x981F2D7E, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_STATUS_MEDIA_SPECIFIC_INDIC = {0x981F2D84, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_STATUS_RESET_END = {0x981F2D77, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_STATUS_RESET_START = {0x981F2D76, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +enum IID GUID_NDIS_WAKE_ON_MAGIC_PACKET_ONLY = {0xA14F1C97, 0x8839, 0x4F8A, [0x99, 0x96, 0xA2, 0x89, 0x96, 0xEB, 0xBF, 0x1D]}; +enum IID GUID_NETSHELL_PROPS = {0x2D15A9A1, 0xA556, 0x4189, [0x91, 0xAD, 0x02, 0x74, 0x58, 0xF1, 0x1A, 0x07]}; +enum IID GUID_NonLocalVidMemCaps = {0x86C4FA80, 0x8D84, 0x11D0, [0x94, 0xE8, 0x00, 0xC0, 0x4F, 0xC3, 0x41, 0x37]}; +enum IID GUID_NOTIFICATION_CHORD = {0xD2AC289B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_NOTIFICATION_COMMAND = {0xD2AC289C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_NOTIFICATION_MEASUREANDBEAT = {0xD2AC289A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_NOTIFICATION_PERFORMANCE = {0x81F75BC5, 0x4E5D, 0x11D2, [0xBC, 0xC7, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +enum IID GUID_NOTIFICATION_SEGMENT = {0xD2AC2899, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_NULL = {0x00000000, 0x0000, 0x0000, [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; +enum IID GUID_OPTIONVALUEEXCLUSIVE = {0x6650430B, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_OptSurfaceKmodeInfo = {0xE05C8472, 0x51D4, 0x11D1, [0x8C, 0xCE, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID GUID_OptSurfaceUmodeInfo = {0x9D792804, 0x5FA8, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID GUID_PathProperty = {0x0002DE80, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID GUID_PCI_BUS_INTERFACE_STANDARD = {0x496B8281, 0x6F25, 0x11D0, [0xBE, 0xAF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +enum IID GUID_PCI_DEVICE_PRESENT_INTERFACE = {0xD1B82C26, 0xBF49, 0x45EF, [0xB2, 0x16, 0x71, 0xCB, 0xD7, 0x88, 0x9B, 0x57]}; +enum IID GUID_PCMCIA_BUS_INTERFACE_STANDARD = {0x76173AF0, 0xC504, 0x11D1, [0x94, 0x7F, 0x00, 0xC0, 0x4F, 0xB9, 0x60, 0xEE]}; +enum IID GUID_PerfAutoDownload = {0xFB09565B, 0x3631, 0x11D2, [0xBC, 0xB8, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +enum IID GUID_PerfMasterGrooveLevel = {0xD2AC28B2, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_PerfMasterTempo = {0xD2AC28B0, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_PerfMasterVolume = {0xD2AC28B1, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_PNP_CUSTOM_NOTIFICATION = {0xACA73F8E, 0x8D23, 0x11D1, [0xAC, 0x7D, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xD0]}; +enum IID GUID_PNP_POWER_NOTIFICATION = {0xC2CF0660, 0xEB7A, 0x11D1, [0xBD, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xD0]}; +enum IID GUID_POV = {0xA36D02F2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_POWER_DEVICE_ENABLE = {0x827C0A6F, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; +enum IID GUID_POWER_DEVICE_TIMEOUTS = {0xA45DA735, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; +enum IID GUID_POWER_DEVICE_WAKE_ENABLE = {0xA9546A82, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; +enum IID GUID_QOS_BESTEFFORT_BANDWIDTH = {0xED885290, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +enum IID GUID_QOS_ENABLE_AVG_STATS = {0xBAFB6D11, 0x27C4, 0x4801, [0xA4, 0x6F, 0xEF, 0x80, 0x80, 0xC1, 0x88, 0xC8]}; +enum IID GUID_QOS_ENABLE_WINDOW_ADJUSTMENT = {0xAA966725, 0xD3E9, 0x4C55, [0xB3, 0x35, 0x2A, 0x00, 0x27, 0x9A, 0x1E, 0x64]}; +enum IID GUID_QOS_FLOW_8021P_CONFORMING = {0x08C1E013, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +enum IID GUID_QOS_FLOW_8021P_NONCONFORMING = {0x09023F91, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +enum IID GUID_QOS_FLOW_COUNT = {0x1147F880, 0x40ED, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +enum IID GUID_QOS_FLOW_IP_CONFORMING = {0x07F99A8B, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +enum IID GUID_QOS_FLOW_IP_NONCONFORMING = {0x087A5987, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +enum IID GUID_QOS_FLOW_MODE = {0x5C82290A, 0x515A, 0x11D2, [0x8E, 0x58, 0x00, 0xC0, 0x4F, 0xC9, 0xBF, 0xCB]}; +enum IID GUID_QOS_ISSLOW_FLOW = {0xABF273A4, 0xEE07, 0x11D2, [0xBE, 0x1B, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +enum IID GUID_QOS_LATENCY = {0xFC408EF0, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +enum IID GUID_QOS_MAX_OUTSTANDING_SENDS = {0x161FFA86, 0x6120, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +enum IID GUID_QOS_NON_BESTEFFORT_LIMIT = {0x185C44E0, 0x40ED, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +enum IID GUID_QOS_REMAINING_BANDWIDTH = {0xC4C51720, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +enum IID GUID_QOS_STATISTICS_BUFFER = {0xBB2C0980, 0xE900, 0x11D1, [0xB0, 0x7E, 0x00, 0x80, 0xC7, 0x13, 0x82, 0xBF]}; +enum IID GUID_QOS_TIMER_RESOLUTION = {0xBA10CC88, 0xF13E, 0x11D2, [0xBE, 0x1B, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +enum IID GUID_RampForce = {0x13541C21, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_RhythmParam = {0xD2AC289F, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_RxAxis = {0xA36D02F4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_RyAxis = {0xA36D02F5, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_RzAxis = {0xA36D02E3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_SawtoothDown = {0x13541C26, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_SawtoothUp = {0x13541C25, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_SeedVariations = {0x65B76FA5, 0xFF37, 0x11D2, [0x81, 0x4E, 0x00, 0xC0, 0x4F, 0xA3, 0x6E, 0x58]}; +enum IID GUID_Sine = {0x13541C23, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_Slider = {0xA36D02E4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_Spring = {0x13541C27, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_Square = {0x13541C22, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_StandardMIDIFile = {0x06621075, 0xE92E, 0x11D1, [0xA8, 0xC5, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0x6E]}; +enum IID GUID_SysKeyboard = {0x6F1D2B61, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_SysKeyboardEm = {0x6F1D2B82, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_SysKeyboardEm2 = {0x6F1D2B83, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_SysMouse = {0x6F1D2B60, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_SysMouseEm = {0x6F1D2B80, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_SysMouseEm2 = {0x6F1D2B81, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_TARGET_DEVICE_QUERY_REMOVE = {0xCB3A4006, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +enum IID GUID_TARGET_DEVICE_REMOVE_CANCELLED = {0xCB3A4007, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +enum IID GUID_TARGET_DEVICE_REMOVE_COMPLETE = {0xCB3A4008, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +enum IID GUID_TempoParam = {0xD2AC28A5, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_TimeSignature = {0xD2AC28A4, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_TRANSLATOR_INTERFACE_STANDARD = {0x6C154A92, 0xAACF, 0x11D0, [0x8D, 0x2A, 0x00, 0xA0, 0xC9, 0x06, 0xB2, 0x44]}; +enum IID GUID_Triangle = {0x13541C24, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID GUID_TRISTATE = {0x6650430A, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_Unknown = {0xA36D02F3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_Unload = {0xD2AC28A8, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID GUID_UserModeDriverInfo = {0xF0B0E8E2, 0x5F97, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID GUID_UserModeDriverPassword = {0x97F861B6, 0x60A1, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID GUID_VideoPortCallbacks = {0xEFD60CC1, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +enum IID GUID_VideoPortCaps = {0xEFD60CC3, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +enum IID GUID_XAxis = {0xA36D02E0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_XPOS = {0x66504306, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_XPOSPIXEL = {0x66504302, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_XSIZE = {0x66504308, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_XSIZEPIXEL = {0x66504304, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_YAxis = {0xA36D02E1, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_YPOS = {0x66504307, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_YPOSPIXEL = {0x66504303, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_YSIZE = {0x66504309, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_YSIZEPIXEL = {0x66504305, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID GUID_ZAxis = {0xA36D02E2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID GUID_ZPixelFormats = {0x93869880, 0x36CF, 0x11D1, [0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE]}; +enum IID IID_AsyncIAdviseSink = {0x00000150, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_AsyncIAdviseSink2 = {0x00000151, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_AsyncIBackgroundCopyCallback = {0xCA29D251, 0xB4BB, 0x4679, [0xA3, 0xD9, 0xAE, 0x80, 0x06, 0x11, 0x9D, 0x54]}; +enum IID IID_AsyncIClusCfgBaseCluster = {0xA8A5C614, 0x2518, 0x47F5, [0x96, 0xCA, 0xCA, 0xFA, 0x7F, 0xFB, 0xAF, 0x68]}; +enum IID IID_AsyncIClusCfgCallback = {0xEBCE8945, 0xAC69, 0x4B3A, [0x86, 0x5D, 0xE2, 0xD4, 0xEB, 0x33, 0xE4, 0x1B]}; +enum IID IID_AsyncIClusCfgClusterInfo = {0x8BDBA247, 0x04F5, 0x4114, [0x83, 0x7E, 0xB2, 0x63, 0x41, 0x2A, 0x4B, 0x64]}; +enum IID IID_AsyncIClusCfgCredentials = {0x54AA9406, 0xA409, 0x4B49, [0xB3, 0x14, 0x5F, 0x0A, 0x0C, 0xE4, 0xC8, 0x8F]}; +enum IID IID_AsyncIClusCfgEvictCleanup = {0x6FE3E362, 0xD373, 0x4C5F, [0xA0, 0xAF, 0x1D, 0xFE, 0x84, 0x93, 0xC6, 0x55]}; +enum IID IID_AsyncIClusCfgInitialize = {0x2A0EB82E, 0xF878, 0x492A, [0x95, 0x1E, 0xAE, 0x00, 0x09, 0x18, 0xC4, 0xA6]}; +enum IID IID_AsyncIClusCfgIPAddressInfo = {0xAAEAF0A5, 0xE310, 0x4604, [0xA5, 0x5E, 0x2F, 0x9D, 0xDC, 0x41, 0x57, 0xA9]}; +enum IID IID_AsyncIClusCfgManagedResourceInfo = {0x73616028, 0x1243, 0x4749, [0xAD, 0x84, 0x0B, 0x5E, 0xB3, 0x58, 0xFF, 0xA0]}; +enum IID IID_AsyncIClusCfgMemberSetChangeListe = {0x2B645350, 0x2643, 0x4ABC, [0xA4, 0xE5, 0x82, 0x4D, 0x88, 0x1B, 0x75, 0x82]}; +enum IID IID_AsyncIClusCfgNetworkInfo = {0xED71FD2D, 0xAD02, 0x4DFC, [0xB3, 0x76, 0x5F, 0xFA, 0x5F, 0x5A, 0x7C, 0x2C]}; +enum IID IID_AsyncIClusCfgNodeInfo = {0x4F3BB40B, 0xDF27, 0x40A0, [0xB3, 0x1A, 0xBA, 0x18, 0x32, 0x4C, 0xEB, 0x9D]}; +enum IID IID_AsyncIClusCfgPartitionInfo = {0xEC1EBD9F, 0x5866, 0x4846, [0x89, 0x52, 0xEC, 0x36, 0xC3, 0x96, 0x1E, 0xEF]}; +enum IID IID_AsyncIClusCfgResourceTypeCreate = {0x3AFCE3B9, 0x5F3E, 0x4DDF, [0xA8, 0xF4, 0x4B, 0x4F, 0xCB, 0xF2, 0x8F, 0x8F]}; +enum IID IID_AsyncIClusCfgResourceTypeInfo = {0xC649A282, 0xC847, 0x4F5C, [0x98, 0x41, 0xD2, 0xF7, 0x3B, 0x5A, 0xA7, 0x1D]}; +enum IID IID_AsyncIClusCfgServer = {0x2A1640AA, 0x4561, 0x4A08, [0xB5, 0xD9, 0x0A, 0xA3, 0x8C, 0x6B, 0xE6, 0x28]}; +enum IID IID_AsyncIClusCfgStartupListener = {0xD282CAF0, 0x2EDE, 0x4AB9, [0xA5, 0xD5, 0xF7, 0xBD, 0xE3, 0xD2, 0x3F, 0x10]}; +enum IID IID_AsyncIClusCfgStartupNotify = {0xC2B0D06A, 0x6353, 0x4EE1, [0xB2, 0x53, 0x6B, 0x0D, 0x75, 0xDB, 0x2C, 0xD3]}; +enum IID IID_AsyncIEnumClusCfgIPAddresses = {0xBD5F35BA, 0x0BC0, 0x455F, [0x92, 0x6D, 0xC3, 0xD3, 0x56, 0x41, 0x94, 0x87]}; +enum IID IID_AsyncIEnumClusCfgManagedResource = {0xB138483F, 0x9695, 0x4FA6, [0xA9, 0x8F, 0x0D, 0xE2, 0xFB, 0x35, 0x54, 0x49]}; +enum IID IID_AsyncIEnumClusCfgNetworks = {0xF56B9B0D, 0xE7B8, 0x49EC, [0xA8, 0x43, 0x54, 0x75, 0x07, 0x6B, 0x94, 0x7D]}; +enum IID IID_AsyncIEnumClusCfgPartitions = {0x4440BB6A, 0xB0AC, 0x479D, [0xB5, 0x34, 0x72, 0x65, 0xA3, 0x1D, 0x6C, 0x56]}; +enum IID IID_AsyncIMultiQI = {0x000E0020, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_AsyncIPipeByte = {0xDB2F3ACB, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +enum IID IID_AsyncIPipeDouble = {0xDB2F3ACF, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +enum IID IID_AsyncIPipeLong = {0xDB2F3ACD, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +enum IID IID_AsyncIUnknown = {0x000E0000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_DFConstraint = {0x4A3DF050, 0x23BD, 0x11D2, [0x93, 0x9F, 0x00, 0xA0, 0xC9, 0x1E, 0xED, 0xBA]}; +enum IID IID_DIEnumWbemClassObject = {0xCB7CA037, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID IID_DIWbemCallResult = {0xCB7CA039, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID IID_DIWbemClassObject = {0xCB7CA033, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID IID_DIWbemContext = {0xCB7CA038, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID IID_DIWbemLocator = {0xCB7CA035, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID IID_DIWbemObjectSink = {0xCB7CA036, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID IID_DIWbemQualifierSet = {0xCB7CA034, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID IID_DIWbemServices = {0xCB7CA03A, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID IID_Folder = {0xBBCBDE60, 0xC3FF, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_Folder2 = {0xF0D2D8EF, 0x3890, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; +enum IID IID_Folder3 = {0xA7AE5F64, 0xC4D7, 0x4D7F, [0x93, 0x07, 0x4D, 0x24, 0xEE, 0x54, 0xB8, 0x41]}; +enum IID IID_FolderItem = {0xFAC32C80, 0xCBE4, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_FolderItem2 = {0xEDC817AA, 0x92B8, 0x11D1, [0xB0, 0x75, 0x00, 0xC0, 0x4F, 0xC3, 0x3A, 0xA5]}; +enum IID IID_FolderItems = {0x744129E0, 0xCBE5, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_FolderItems2 = {0xC94F0AD0, 0xF363, 0x11D2, [0xA3, 0x27, 0x00, 0xC0, 0x4F, 0x8E, 0xEC, 0x7F]}; +enum IID IID_FolderItems3 = {0xEAA7C309, 0xBBEC, 0x49D5, [0x82, 0x1D, 0x64, 0xD9, 0x66, 0xCB, 0x66, 0x7F]}; +enum IID IID_FolderItemVerb = {0x08EC3E00, 0x50B0, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; +enum IID IID_FolderItemVerbs = {0x1F8352C0, 0x50B0, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; +enum IID IID_IAccessControl = {0xEEDD23E0, 0x8410, 0x11CE, [0xA1, 0xC3, 0x08, 0x00, 0x2B, 0x2B, 0x8D, 0x8F]}; +enum IID IID_IAccessible = {0x618736E0, 0x3C3D, 0x11CF, [0x81, 0x0C, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71]}; +enum IID IID_IAccessibleHandler = {0x03022430, 0xABC4, 0x11D0, [0xBD, 0xE2, 0x00, 0xAA, 0x00, 0x1A, 0x19, 0x53]}; +enum IID IID_IAccessor = {0x0C733A8C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IAccIdentity = {0x7852B78D, 0x1CFD, 0x41C1, [0xA6, 0x15, 0x9C, 0x0C, 0x85, 0x96, 0x0B, 0x5F]}; +enum IID IID_IAccountDiscovery = {0xFA202BBC, 0x6ABE, 0x4C17, [0xB1, 0x84, 0x57, 0x0B, 0x6C, 0xF2, 0x56, 0xA6]}; +enum IID IID_IAccPropServer = {0x76C0DBBB, 0x15E0, 0x4E7B, [0xB6, 0x1B, 0x20, 0xEE, 0xEA, 0x20, 0x01, 0xE0]}; +enum IID IID_IAccPropServices = {0x6E26E776, 0x04F0, 0x495D, [0x80, 0xE4, 0x33, 0x30, 0x35, 0x2E, 0x31, 0x69]}; +enum IID IID_IACList = {0x77A130B0, 0x94FD, 0x11D0, [0xA5, 0x44, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +enum IID IID_IACList2 = {0x470141A0, 0x5186, 0x11D2, [0xBB, 0xB6, 0x00, 0x60, 0x97, 0x7B, 0x46, 0x4C]}; +enum IID IID_IActionProgress = {0x49FF1173, 0xEADC, 0x446D, [0x92, 0x85, 0x15, 0x64, 0x53, 0xA6, 0x43, 0x1C]}; +enum IID IID_IActionProgressDialog = {0x49FF1172, 0xEADC, 0x446D, [0x92, 0x85, 0x15, 0x64, 0x53, 0xA6, 0x43, 0x1C]}; +enum IID IID_IActiveDesktop = {0xF490EB00, 0x1240, 0x11D1, [0x98, 0x88, 0x00, 0x60, 0x97, 0xDE, 0xAC, 0xF9]}; +enum IID IID_IActiveIME = {0x6FE20962, 0xD077, 0x11D0, [0x8F, 0xE7, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +enum IID IID_IActiveIME2 = {0xE1C4BF0E, 0x2D53, 0x11D2, [0x93, 0xE1, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; +enum IID IID_IActiveIMMApp = {0x08C0E040, 0x62D1, 0x11D1, [0x93, 0x26, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; +enum IID IID_IActiveIMMIME = {0x08C03411, 0xF96B, 0x11D0, [0xA4, 0x75, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +enum IID IID_IActiveIMMMessagePumpOwner = {0xB5CF2CFA, 0x8AEB, 0x11D1, [0x93, 0x64, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; +enum IID IID_IActiveIMMRegistrar = {0xB3458082, 0xBD00, 0x11D1, [0x93, 0x9B, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; +enum IID IID_IActiveScript = {0xBB1A2AE1, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID IID_IActiveScriptAuthor = {0x9C109DA0, 0x7006, 0x11D1, [0xB3, 0x6C, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xB2]}; +enum IID IID_IActiveScriptAuthorProcedure = {0x7E2D4B70, 0xBD9A, 0x11D0, [0x93, 0x36, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +enum IID IID_IActiveScriptDebug = {0x51973C10, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IActiveScriptDebug32 = {0x51973C10, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IActiveScriptDebug64 = {0xBC437E23, 0xF5B8, 0x47F4, [0xBB, 0x79, 0x7D, 0x1C, 0xE5, 0x48, 0x3B, 0x86]}; +enum IID IID_IActiveScriptEncode = {0xBB1A2AE3, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID IID_IActiveScriptError = {0xEAE1BA61, 0xA4ED, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID IID_IActiveScriptError64 = {0xB21FB2A1, 0x5B8F, 0x4963, [0x8C, 0x21, 0x21, 0x45, 0x0F, 0x84, 0xED, 0x7F]}; +enum IID IID_IActiveScriptErrorDebug = {0x51973C12, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IActiveScriptGarbageCollector = {0x6AA2C4A0, 0x2B53, 0x11D4, [0xA2, 0xA0, 0x00, 0x10, 0x4B, 0xD3, 0x50, 0x90]}; +enum IID IID_IActiveScriptHostEncode = {0xBEE9B76E, 0xCFE3, 0x11D1, [0xB7, 0x47, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; +enum IID IID_IActiveScriptParse = {0xBB1A2AE2, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID IID_IActiveScriptParse32 = {0xBB1A2AE2, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID IID_IActiveScriptParse64 = {0xC7EF7658, 0xE1EE, 0x480E, [0x97, 0xEA, 0xD5, 0x2C, 0xB4, 0xD7, 0x6D, 0x17]}; +enum IID IID_IActiveScriptParseProcedure = {0xAA5B6A80, 0xB834, 0x11D0, [0x93, 0x2F, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +enum IID IID_IActiveScriptParseProcedure2_32 = {0x71EE5B20, 0xFB04, 0x11D1, [0xB3, 0xA8, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xB2]}; +enum IID IID_IActiveScriptParseProcedure2_64 = {0xFE7C4271, 0x210C, 0x448D, [0x9F, 0x54, 0x76, 0xDA, 0xB7, 0x04, 0x7B, 0x28]}; +enum IID IID_IActiveScriptParseProcedure32 = {0xAA5B6A80, 0xB834, 0x11D0, [0x93, 0x2F, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +enum IID IID_IActiveScriptParseProcedure64 = {0xC64713B6, 0xE029, 0x4CC5, [0x92, 0x00, 0x43, 0x8B, 0x72, 0x89, 0x0B, 0x6A]}; +enum IID IID_IActiveScriptParseProcedureOld = {0x1CFF0050, 0x6FDD, 0x11D0, [0x93, 0x28, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +enum IID IID_IActiveScriptParseProcedureOld32 = {0x1CFF0050, 0x6FDD, 0x11D0, [0x93, 0x28, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +enum IID IID_IActiveScriptParseProcedureOld64 = {0x21F57128, 0x08C9, 0x4638, [0xBA, 0x12, 0x22, 0xD1, 0x5D, 0x88, 0xDC, 0x5C]}; +enum IID IID_IActiveScriptProperty = {0x4954E0D0, 0xFBC7, 0x11D1, [0x84, 0x10, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; +enum IID IID_IActiveScriptSIPInfo = {0x764651D0, 0x38DE, 0x11D4, [0xA2, 0xA3, 0x00, 0x10, 0x4B, 0xD3, 0x50, 0x90]}; +enum IID IID_IActiveScriptSite = {0xDB01A1E3, 0xA42B, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID IID_IActiveScriptSiteDebug32 = {0x51973C11, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IActiveScriptSiteDebug64 = {0xD6B96B0A, 0x7463, 0x402C, [0x92, 0xAC, 0x89, 0x98, 0x42, 0x26, 0x94, 0x2F]}; +enum IID IID_IActiveScriptSiteInterruptPoll = {0x539698A0, 0xCDCA, 0x11CF, [0xA5, 0xEB, 0x00, 0xAA, 0x00, 0x47, 0xA0, 0x63]}; +enum IID IID_IActiveScriptSiteWindow = {0xD10F6761, 0x83E9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID IID_IActiveScriptStats = {0xB8DA6310, 0xE19B, 0x11D0, [0x93, 0x3C, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +enum IID IID_IActiveXSafetyProvider = {0x69FF5101, 0xFC63, 0x11D0, [0x97, 0xEB, 0x00, 0xAA, 0x00, 0x61, 0x53, 0x33]}; +enum IID IID_IAdapterInfo = {0x480BF94A, 0x09FD, 0x4F8A, [0xA3, 0xE0, 0xB0, 0x70, 0x02, 0x82, 0xD8, 0x4D]}; +enum IID IID_IAdapterNotificationSink = {0x44AB2DC3, 0x23B2, 0x47DE, [0x82, 0x28, 0x2E, 0x1C, 0xCE, 0xEB, 0x99, 0x11]}; +enum IID IID_IAddEvents = {0xD710A6AE, 0x3371, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; +enum IID IID_IAddressBarParser = {0xC9D81948, 0x443A, 0x40C7, [0x94, 0x5C, 0x5E, 0x17, 0x1B, 0x8C, 0x66, 0xB4]}; +enum IID IID_IAddrExclusionControl = {0x00000148, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IAddrTrackingControl = {0x00000147, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IADs = {0xFD8256D0, 0xFD15, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +enum IID IID_IADsAccessControlEntry = {0xB4F3A14C, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsAccessControlList = {0xB7EE91CC, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsAcePrivate = {0xFD145DF2, 0xFD96, 0x4135, [0x9B, 0x22, 0x68, 0xFF, 0x0F, 0x6B, 0xF5, 0xBB]}; +enum IID IID_IADsAcl = {0x8452D3AB, 0x0869, 0x11D1, [0xA3, 0x77, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsADSystemInfo = {0x5BB11929, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; +enum IID IID_IADsBackLink = {0xFD1302BD, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsCaseIgnoreList = {0x7B66B533, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsClass = {0xC8F93DD0, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; +enum IID IID_IADsCollection = {0x72B945E0, 0x253B, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsComputer = {0xEFE3CC70, 0x1D9F, 0x11CF, [0xB1, 0xF3, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +enum IID IID_IADsComputerOperations = {0xEF497680, 0x1D9F, 0x11CF, [0xB1, 0xF3, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +enum IID IID_IADsContainer = {0x001677D0, 0xFD16, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +enum IID IID_IADsDeleteOps = {0xB2BD0902, 0x8878, 0x11D1, [0x8C, 0x21, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsDNWithBinary = {0x7E99C0A2, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; +enum IID IID_IADsDNWithString = {0x370DF02E, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; +enum IID IID_IADsDomain = {0x00E4C220, 0xFD16, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +enum IID IID_IADsEmail = {0x97AF011A, 0x478E, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsExtension = {0x3D35553C, 0xD2B0, 0x11D1, [0xB1, 0x7B, 0x00, 0x00, 0xF8, 0x75, 0x93, 0xA0]}; +enum IID IID_IADsFaxNumber = {0xA910DEA9, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsFileService = {0xA89D1900, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsFileServiceOperations = {0xA02DED10, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsFileShare = {0xEB6DCAF0, 0x4B83, 0x11CF, [0xA9, 0x95, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsGroup = {0x27636B00, 0x410F, 0x11CF, [0xB1, 0xFF, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +enum IID IID_IADsHold = {0xB3EB3B37, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsLargeInteger = {0x9068270B, 0x0939, 0x11D1, [0x8B, 0xE1, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsLocality = {0xA05E03A2, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsMembers = {0x451A0030, 0x72EC, 0x11CF, [0xB0, 0x3B, 0x00, 0xAA, 0x00, 0x6E, 0x09, 0x75]}; +enum IID IID_IADsNamespaces = {0x28B96BA0, 0xB330, 0x11CF, [0xA9, 0xAD, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsNameTranslate = {0xB1B272A3, 0x3625, 0x11D1, [0xA3, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsNetAddress = {0xB21A50A9, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsO = {0xA1CD2DC6, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsObjectOptions = {0x46F14FDA, 0x232B, 0x11D1, [0xA8, 0x08, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; +enum IID IID_IADsObjOptPrivate = {0x81CBB829, 0x1867, 0x11D2, [0x92, 0x20, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; +enum IID IID_IADsOctetList = {0x7B28B80F, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsOpenDSObject = {0xDDF2891E, 0x0F9C, 0x11D0, [0x8A, 0xD4, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsOU = {0xA2F733B8, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsPath = {0xB287FCD5, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsPathname = {0xD592AED4, 0xF420, 0x11D0, [0xA3, 0x6E, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsPathnameProvider = {0xAACD1D30, 0x8BD0, 0x11D2, [0x92, 0xA9, 0x00, 0xC0, 0x4F, 0x79, 0xF8, 0x34]}; +enum IID IID_IADsPostalAddress = {0x7ADECF29, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsPrintJob = {0x32FB6780, 0x1ED0, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsPrintJobOperations = {0x9A52DB30, 0x1ECF, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsPrintQueue = {0xB15160D0, 0x1226, 0x11CF, [0xA9, 0x85, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsPrintQueueOperations = {0x124BE5C0, 0x156E, 0x11CF, [0xA9, 0x86, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsProperty = {0xC8F93DD3, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; +enum IID IID_IADsPropertyEntry = {0x05792C8E, 0x941F, 0x11D0, [0x85, 0x29, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsPropertyList = {0xC6F602B6, 0x8F69, 0x11D0, [0x85, 0x28, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsPropertyValue = {0x79FA9AD0, 0xA97C, 0x11D0, [0x85, 0x34, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsPropertyValue2 = {0x306E831C, 0x5BC7, 0x11D1, [0xA3, 0xB8, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsReplicaPointer = {0xF60FB803, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsResource = {0x34A05B20, 0x4AAB, 0x11CF, [0xAE, 0x2C, 0x00, 0xAA, 0x00, 0x6E, 0xBF, 0xB9]}; +enum IID IID_IADsSearch = {0xC69F7780, 0x4008, 0x11D0, [0xB9, 0x4C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; +enum IID IID_IADsSecurityDescriptor = {0xB8C787CA, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsSecurityUtility = {0xA63251B2, 0x5F21, 0x474B, [0xAB, 0x52, 0x4A, 0x8E, 0xFA, 0xD1, 0x08, 0x95]}; +enum IID IID_IADsService = {0x68AF66E0, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsServiceOperations = {0x5D7B33F0, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +enum IID IID_IADsSession = {0x398B7DA0, 0x4AAB, 0x11CF, [0xAE, 0x2C, 0x00, 0xAA, 0x00, 0x6E, 0xBF, 0xB9]}; +enum IID IID_IADsSyntax = {0xC8F93DD2, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; +enum IID IID_IADsTimestamp = {0xB2F5A901, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsTypedName = {0xB371A349, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +enum IID IID_IADsUmiHelperPrivate = {0x4FE243F0, 0xAD89, 0x4CBC, [0x9B, 0x14, 0x48, 0x61, 0x26, 0x44, 0x6A, 0xE0]}; +enum IID IID_IADsUser = {0x3E37E320, 0x17E2, 0x11CF, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +enum IID IID_IADsValue = {0x1E3EF0AA, 0xAEF5, 0x11D0, [0x85, 0x37, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IADsWinNTSystemInfo = {0x6C6D65DC, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; +enum IID IID_IAdviseSink = {0x0000010F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IAdviseSink2 = {0x00000125, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IAdviseSinkEx = {0x3AF24290, 0x0C96, 0x11CE, [0xA0, 0xCF, 0x00, 0xAA, 0x00, 0x60, 0x0A, 0xB8]}; +enum IID IID_IAlertReport = {0x4E81DFE8, 0x4CA0, 0x101A, [0x82, 0x06, 0x08, 0x00, 0x2B, 0x2F, 0xC0, 0x9B]}; +enum IID IID_IAlertTarget = {0x589B61C0, 0x54E6, 0x11CE, [0x94, 0xDD, 0x00, 0xAA, 0x00, 0x51, 0xE4, 0x0F]}; +enum IID IID_IAlgSetup = {0xA779AF1A, 0x009A, 0x4C44, [0xB9, 0xF0, 0x8F, 0x0F, 0x4C, 0xF2, 0xAE, 0x49]}; +enum IID IID_IAlterIndex = {0x0C733AA6, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IAlterTable = {0x0C733AA5, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IAnchorClick = {0x13D5413B, 0x33B9, 0x11D2, [0x95, 0xA7, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; +enum IID IID_IAnimationComposer = {0x5459C83D, 0x322B, 0x44B3, [0x8D, 0xAA, 0x24, 0xC9, 0x47, 0xE7, 0xB2, 0x75]}; +enum IID IID_IAnimationComposer2 = {0x1A4F0E79, 0x09CD, 0x47F3, [0xAF, 0xF1, 0x48, 0x3B, 0xF3, 0xA2, 0x22, 0xDC]}; +enum IID IID_IAnimationComposerFactory = {0xBEEB3233, 0xF71F, 0x4683, [0x8B, 0x05, 0x9A, 0x53, 0x14, 0xC9, 0x7D, 0xBC]}; +enum IID IID_IAnimationComposerSite = {0x488FCB56, 0x8FD6, 0x4CDA, [0xA0, 0x6A, 0x5B, 0xB2, 0x32, 0x93, 0x0E, 0xCA]}; +enum IID IID_IAnimationComposerSiteFactory = {0xB4EA5681, 0xED72, 0x4EFE, [0xBB, 0xD7, 0x7C, 0x47, 0xD1, 0x32, 0x56, 0x96]}; +enum IID IID_IAnimationComposerSiteSink = {0x8EF76C64, 0x71CD, 0x480F, [0x96, 0xFC, 0xBA, 0x26, 0x96, 0xE6, 0x59, 0xBE]}; +enum IID IID_IAnimationFragment = {0x319DFD88, 0x0AC6, 0x4AB1, [0xA1, 0x9F, 0x90, 0x22, 0x3B, 0xA2, 0xDA, 0x16]}; +enum IID IID_IAnimationRoot = {0x29DF6387, 0x30B4, 0x4A62, [0x89, 0x1B, 0xA9, 0xC5, 0xBE, 0x37, 0xBE, 0x88]}; +enum IID IID_IApplicationDebugger = {0x51973C2A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IApplicationDebuggerUI = {0x51973C2B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IApplicationGateway = {0x5134842B, 0xFDCE, 0x485D, [0x93, 0xCD, 0xDE, 0x16, 0x40, 0x64, 0x3B, 0xBE]}; +enum IID IID_IApplicationGatewayServices = {0x5134842A, 0xFDCE, 0x485D, [0x93, 0xCD, 0xDE, 0x16, 0x40, 0x64, 0x3B, 0xBE]}; +enum IID IID_IAppPublisher = {0x07250A10, 0x9CF9, 0x11D1, [0x90, 0x76, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; +enum IID IID_IAsyncBindCtx = {0x79EAC9D4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IAsyncManager = {0x0000002A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IAsyncMoniker = {0x79EAC9D3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IAsyncOperation = {0x3D8B0590, 0xF691, 0x11D2, [0x8E, 0xA9, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; +enum IID IID_IAsyncRpcChannelBuffer = {0xA5029FB6, 0x3C34, 0x11D1, [0x9C, 0x99, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0xAA]}; +enum IID IID_IAttributesRaw = {0x6BC096A8, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +enum IID IID_IAuditControl = {0x1DA6292F, 0xBC66, 0x11CE, [0xAA, 0xE3, 0x00, 0xAA, 0x00, 0x4C, 0x27, 0x37]}; +enum IID IID_IAuthenticate = {0x79EAC9D0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IAutoComplete = {0x00BB2762, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +enum IID IID_IAutoComplete2 = {0xEAC04BC0, 0x3791, 0x11D2, [0xBB, 0x95, 0x00, 0x60, 0x97, 0x7B, 0x46, 0x4C]}; +enum IID IID_IAutoCompleteDropDown = {0x3CD141F4, 0x3C6A, 0x11D2, [0xBC, 0xAA, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +enum IID IID_IAutoCompList = {0x00BB2760, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +enum IID IID_IAutoDiscoveryProvider = {0x9DCF4A37, 0x01DE, 0x4549, [0xA9, 0xCB, 0x3A, 0xC3, 0x1E, 0xC2, 0x3C, 0x4F]}; +enum IID IID_IBackgroundCopyCallback = {0x97EA99C7, 0x0186, 0x4AD4, [0x8D, 0xF9, 0xC5, 0xB4, 0xE0, 0xED, 0x6B, 0x22]}; +enum IID IID_IBackgroundCopyCallback1 = {0x084F6593, 0x3800, 0x4E08, [0x9B, 0x59, 0x99, 0xFA, 0x59, 0xAD, 0xDF, 0x82]}; +enum IID IID_IBackgroundCopyError = {0x19C613A0, 0xFCB8, 0x4F28, [0x81, 0xAE, 0x89, 0x7C, 0x3D, 0x07, 0x8F, 0x81]}; +enum IID IID_IBackgroundCopyFile = {0x01B7BD23, 0xFB88, 0x4A77, [0x84, 0x90, 0x58, 0x91, 0xD3, 0xE4, 0x65, 0x3A]}; +enum IID IID_IBackgroundCopyGroup = {0x1DED80A7, 0x53EA, 0x424F, [0x8A, 0x04, 0x17, 0xFE, 0xA9, 0xAD, 0xC4, 0xF5]}; +enum IID IID_IBackgroundCopyJob = {0x37668D37, 0x507E, 0x4160, [0x93, 0x16, 0x26, 0x30, 0x6D, 0x15, 0x0B, 0x12]}; +enum IID IID_IBackgroundCopyJob1 = {0x59F5553C, 0x2031, 0x4629, [0xBB, 0x18, 0x26, 0x45, 0xA6, 0x97, 0x09, 0x47]}; +enum IID IID_IBackgroundCopyJob2 = {0x54B50739, 0x686F, 0x45EB, [0x9D, 0xFF, 0xD6, 0xA9, 0xA0, 0xFA, 0xA9, 0xAF]}; +enum IID IID_IBackgroundCopyManager = {0x5CE34C0D, 0x0DC9, 0x4C1F, [0x89, 0x7C, 0xDA, 0xA1, 0xB7, 0x8C, 0xEE, 0x7C]}; +enum IID IID_IBackgroundCopyQMgr = {0x16F41C69, 0x09F5, 0x41D2, [0x8C, 0xD8, 0x3C, 0x08, 0xC4, 0x7B, 0xC8, 0xA8]}; +enum IID IID_IBidiRequestSpl = {0x9C007000, 0xFFA8, 0x44FF, [0xB2, 0xB3, 0xAE, 0x91, 0x02, 0xC7, 0x4D, 0x4C]}; +enum IID IID_IBindCtx = {0x0000000E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IBindEventHandler = {0x63CDBCB0, 0xC1B1, 0x11D0, [0x93, 0x36, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +enum IID IID_IBindHost = {0xFC4801A1, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID IID_IBinding = {0x79EAC9C0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IBindProtocol = {0x79EAC9CD, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IBindResource = {0x0C733AB1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IBindStatusCallback = {0x79EAC9C1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IBindStatusCallbackHolder = {0x79EAC9CC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IBindStatusCallbackMsg = {0x79EAC9D5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IBitsTest1 = {0x51A183DB, 0x67E0, 0x4472, [0x86, 0x02, 0x3D, 0xBC, 0x73, 0x0B, 0x7E, 0xF5]}; +enum IID IID_IBlockFormats = {0x3050F830, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IBlockingLock = {0x30F3D47A, 0x6447, 0x11D1, [0x8E, 0x3C, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +enum IID IID_IBoundObject = {0x9BFBBC00, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IBoundObjectSite = {0x9BFBBC01, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IBriefcaseStg = {0x8BCE1FA1, 0x0921, 0x101B, [0xB1, 0xFF, 0x00, 0xDD, 0x01, 0x0C, 0xCC, 0x48]}; +enum IID IID_IBurnEngine = {0x520CCA66, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID IID_ICallFactory = {0x1C733A30, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICallFrame = {0xD573B4B0, 0x894E, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +enum IID IID_ICallFrameEvents = {0xFD5E0843, 0xFC91, 0x11D0, [0x97, 0xD7, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +enum IID IID_ICallFrameWalker = {0x08B23919, 0x392D, 0x11D2, [0xB8, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +enum IID IID_ICallIndirect = {0xD573B4B1, 0x894E, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +enum IID IID_ICallInterceptor = {0x60C7CA75, 0x896D, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +enum IID IID_ICallUnmarshal = {0x5333B003, 0x2E42, 0x11D2, [0xB8, 0x9D, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +enum IID IID_ICancelMethodCalls = {0x00000029, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ICatalogFileInfo = {0x711C7600, 0x6B48, 0x11D1, [0xB4, 0x03, 0x00, 0xAA, 0x00, 0xB9, 0x2A, 0xF1]}; +enum IID IID_ICategorizer = {0xA3B14589, 0x9174, 0x49A8, [0x89, 0xA3, 0x06, 0xA1, 0xAE, 0x2B, 0x9B, 0xA7]}; +enum IID IID_ICategoryProvider = {0x9AF64809, 0x5864, 0x4C26, [0xA7, 0x20, 0xC1, 0xF7, 0x8C, 0x08, 0x6E, 0xE3]}; +enum IID IID_ICatInformation = {0x0002E013, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ICatRegister = {0x0002E012, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ICDBurn = {0x3D73A659, 0xE5D0, 0x4D42, [0xAF, 0xC0, 0x51, 0x21, 0xBA, 0x42, 0x5C, 0x8D]}; +enum IID IID_ICEnroll = {0x43F8F288, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; +enum IID IID_ICEnroll2 = {0x704CA730, 0xC90B, 0x11D1, [0x9B, 0xEC, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; +enum IID IID_ICEnroll3 = {0xC28C2D95, 0xB7DE, 0x11D2, [0xA4, 0x21, 0x00, 0xC0, 0x4F, 0x79, 0xFE, 0x8E]}; +enum IID IID_ICEnroll4 = {0xC1F1188A, 0x2EB5, 0x4A80, [0x84, 0x1B, 0x7E, 0x72, 0x9A, 0x35, 0x6D, 0x90]}; +enum IID IID_IChannelHook = {0x1008C4A0, 0x7613, 0x11CF, [0x9A, 0xF1, 0x00, 0x20, 0xAF, 0x6E, 0x72, 0xF4]}; +enum IID IID_IChannelMgr = {0x85BD8E82, 0x0FBA, 0x11D1, [0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68]}; +enum IID IID_IChapteredRowset = {0x0C733A93, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICheckBox = {0x3050F685, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ICiAdmin = {0xAE67C7D8, 0x85D3, 0x11D0, [0x8C, 0x45, 0x00, 0xC0, 0x4F, 0xC2, 0xDB, 0x8D]}; +enum IID IID_ICiAdminParams = {0xA82D48C6, 0x3F0F, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCAdviseStatus = {0xCA05734A, 0x1218, 0x11D3, [0xAE, 0x7A, 0x00, 0xC0, 0x4F, 0x72, 0xF8, 0x31]}; +enum IID IID_ICiCDeferredPropRetriever = {0xC273AF70, 0x6D72, 0x11D0, [0x8D, 0x64, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; +enum IID IID_ICiCDocName = {0x76615076, 0x3C2B, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCDocNameToWorkidTranslator = {0x25FC3F54, 0x3CB4, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCDocNameToWorkidTranslatorEx = {0x7BBA76E6, 0xA0E3, 0x11D2, [0xBC, 0x5D, 0x00, 0xC0, 0x4F, 0xA3, 0x54, 0xBA]}; +enum IID IID_ICiCDocStore = {0x46625468, 0x3C32, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCDocStoreEx = {0xF98282A7, 0xFA72, 0x11D1, [0x97, 0x98, 0x00, 0xC0, 0x4F, 0xC2, 0xF4, 0x10]}; +enum IID IID_ICiCDocStoreLocator = {0x97EE7C06, 0x5908, 0x11D0, [0x8C, 0x9B, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCEventLogItem = {0x44CC886A, 0x4314, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCFilterClient = {0xA1E0BCB6, 0x3C24, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCFilterStatus = {0xBC5F3D60, 0x8BBC, 0x11D1, [0x8F, 0x73, 0x00, 0xA0, 0xC9, 0x19, 0x17, 0xF5]}; +enum IID IID_ICiCIndexNotificationStatus = {0x5FFF3840, 0x8E76, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; +enum IID IID_ICiCLangRes = {0x914C2E6C, 0x43FE, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiControl = {0x63DEB7F4, 0x3CCB, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCOpenedDoc = {0x151EDFBE, 0x3C2F, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCPropertyStorage = {0x4C46225A, 0x3CB5, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCPropRetriever = {0x77D9B2DA, 0x4401, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCQueryNotification = {0x0A9E9F6C, 0x3CE2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCQuerySession = {0xAE461FD6, 0x4E1D, 0x11D0, [0x8C, 0x94, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCResourceMonitor = {0xF700FF8E, 0x20EE, 0x11D2, [0x80, 0xF7, 0x00, 0xC0, 0x4F, 0xA3, 0x54, 0xBA]}; +enum IID IID_ICiCScope = {0x1021C882, 0x3CC0, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCScopeChecker = {0x7D820C9C, 0x3CBC, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCScopeEnumerator = {0xCF8505EA, 0x3CCA, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCSecurityChecker = {0xCA130CF4, 0x3CC2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiCUserSecurity = {0x5D01D9CE, 0x3CC2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiDocChangeNotifySink = {0x8BFA1386, 0x3CE5, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiEnumWorkids = {0x77900150, 0xA09C, 0x11D0, [0xA8, 0x0D, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; +enum IID IID_ICiFrameworkQuery = {0xAE67C7D9, 0x85D3, 0x11D0, [0x8C, 0x45, 0x00, 0xC0, 0x4F, 0xC2, 0xDB, 0x8D]}; +enum IID IID_ICiIndexNotification = {0x4F2CD6E0, 0x8E74, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; +enum IID IID_ICiIndexNotificationEntry = {0x210769D0, 0x8E75, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; +enum IID IID_ICiISearchCreator = {0x7DC07FA0, 0x902E, 0x11D0, [0xA8, 0x0C, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; +enum IID IID_ICiManager = {0xCF0FCF56, 0x3CCE, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiPersistIncrFile = {0x31B311E2, 0x4498, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_ICiQueryPropertyMapper = {0xD2333EB0, 0x756B, 0x11D0, [0x8D, 0x66, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; +enum IID IID_ICiStartup = {0x68232CB8, 0x3CCC, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_IClassActivator = {0x00000140, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IClassFactory = {0x00000001, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IClassFactory2 = {0xB196B28F, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IClassFactoryEx = {0x342D1EA0, 0xAE25, 0x11D1, [0x89, 0xC5, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; +enum IID IID_IClientCaps = {0x7E8BC44D, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +enum IID IID_IClientSecurity = {0x0000013D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IClusCfgAsyncEvictCleanup = {0x52C80B95, 0xC1AD, 0x4240, [0x8D, 0x89, 0x72, 0xE9, 0xFA, 0x84, 0x02, 0x5E]}; +enum IID IID_IClusCfgBaseCluster = {0xA8A5C613, 0x2518, 0x47F5, [0x96, 0xCA, 0xCA, 0xFA, 0x7F, 0xFB, 0xAF, 0x68]}; +enum IID IID_IClusCfgCallback = {0x238DCA63, 0xE2EF, 0x4F32, [0xA2, 0x4D, 0xAC, 0xBF, 0x97, 0x5B, 0xE8, 0x42]}; +enum IID IID_IClusCfgCapabilities = {0xD94AB253, 0x36C7, 0x41C1, [0xB5, 0x2E, 0x26, 0xB4, 0x51, 0x97, 0x5C, 0x8D]}; +enum IID IID_IClusCfgClusterConnection = {0xCE6EF90C, 0x3602, 0x41E7, [0x95, 0xBD, 0xAA, 0xFD, 0x37, 0xA6, 0x76, 0xDF]}; +enum IID IID_IClusCfgClusterInfo = {0x85B4BBC0, 0xDDC4, 0x4AE7, [0x82, 0x68, 0xF4, 0x85, 0x0B, 0xB2, 0xA6, 0xEE]}; +enum IID IID_IClusCfgCredentials = {0x54AA9406, 0xA409, 0x4B49, [0xB3, 0x14, 0x5F, 0x0A, 0x0C, 0xE4, 0xC8, 0x8E]}; +enum IID IID_IClusCfgEvictCleanup = {0x6FE3E361, 0xD373, 0x4C5F, [0xA0, 0xAF, 0x1D, 0xFE, 0x84, 0x93, 0xC6, 0x55]}; +enum IID IID_IClusCfgGroupCfg = {0xDCB6D3D2, 0xA55F, 0x49E5, [0xA6, 0x4A, 0x0C, 0xCF, 0xEB, 0x01, 0xED, 0x3A]}; +enum IID IID_IClusCfgInitialize = {0x2A0EB82D, 0xF878, 0x492A, [0x95, 0x1E, 0xAE, 0x00, 0x09, 0x18, 0xC4, 0xA6]}; +enum IID IID_IClusCfgIPAddressInfo = {0xAAEAF0A5, 0xE310, 0x4604, [0xA5, 0x5E, 0x2F, 0x9D, 0xDC, 0x41, 0x57, 0xA8]}; +enum IID IID_IClusCfgManagedResourceCfg = {0x60300A0F, 0x77E1, 0x440C, [0xBD, 0x94, 0x6B, 0xFB, 0x0D, 0xBF, 0xDB, 0x3A]}; +enum IID IID_IClusCfgManagedResourceInfo = {0xE0324847, 0x1520, 0x41B0, [0xB9, 0x60, 0x54, 0x19, 0x8D, 0xA5, 0xF8, 0xAF]}; +enum IID IID_IClusCfgMemberSetChangeListener = {0x2B64534F, 0x2643, 0x4ABC, [0xA4, 0xE5, 0x82, 0x4D, 0x88, 0x1B, 0x75, 0x82]}; +enum IID IID_IClusCfgNetworkInfo = {0x19FC7580, 0x950A, 0x44A6, [0x96, 0x6E, 0x74, 0xB1, 0x4B, 0x20, 0x91, 0x8F]}; +enum IID IID_IClusCfgNodeInfo = {0xE4B5FA15, 0xDD07, 0x439E, [0xA6, 0x23, 0x88, 0x23, 0x52, 0x4E, 0x3D, 0x19]}; +enum IID IID_IClusCfgPartitionInfo = {0xEC1EBD9F, 0x5866, 0x4846, [0x89, 0x52, 0xEC, 0x36, 0xC3, 0x96, 0x1E, 0xEE]}; +enum IID IID_IClusCfgPollingCallback = {0xC72DB1FD, 0x51A2, 0x43E6, [0xB7, 0x08, 0xD9, 0xDB, 0x7D, 0xA7, 0x96, 0x30]}; +enum IID IID_IClusCfgPollingCallbackInfo = {0x2AF55DA7, 0xCB6F, 0x40DE, [0xBB, 0x11, 0x66, 0x73, 0x46, 0x4B, 0x2C, 0x54]}; +enum IID IID_IClusCfgResourceCreate = {0x0647B41A, 0xC777, 0x443C, [0x94, 0x32, 0x02, 0xCC, 0xCF, 0x4F, 0xF4, 0x43]}; +enum IID IID_IClusCfgResourcePostCreate = {0x72A9BF54, 0x13B6, 0x451F, [0x91, 0x0D, 0x69, 0x13, 0xEB, 0xF0, 0x25, 0xAB]}; +enum IID IID_IClusCfgResourcePreCreate = {0x4240F6A1, 0x9D49, 0x427E, [0x8F, 0x3D, 0x09, 0x38, 0x4E, 0x1F, 0x59, 0xE4]}; +enum IID IID_IClusCfgResourceTypeCreate = {0x3AFCE3B8, 0x5F3E, 0x4DDF, [0xA8, 0xF4, 0x4B, 0x4F, 0xCB, 0xF2, 0x8F, 0x8F]}; +enum IID IID_IClusCfgResourceTypeInfo = {0xC649A281, 0xC847, 0x4F5C, [0x98, 0x41, 0xD2, 0xF7, 0x3B, 0x5A, 0xA7, 0x1D]}; +enum IID IID_IClusCfgResTypeServicesInitializ = {0x6E109698, 0xDFC4, 0x4471, [0xAC, 0xE1, 0x04, 0x14, 0x93, 0x1B, 0x3B, 0xB3]}; +enum IID IID_IClusCfgServer = {0x4C06EAE6, 0x990E, 0x4051, [0x8A, 0xA1, 0xAD, 0x4B, 0x4E, 0xAE, 0x9C, 0xAF]}; +enum IID IID_IClusCfgSetCredentials = {0x58E6E5B9, 0x4788, 0x4D9A, [0x82, 0x55, 0x1E, 0x27, 0x4E, 0x5D, 0xCC, 0xB0]}; +enum IID IID_IClusCfgStartupListener = {0xD282CAEF, 0x2EDE, 0x4AB9, [0xA5, 0xD5, 0xF7, 0xBD, 0xE3, 0xD2, 0x3F, 0x0F]}; +enum IID IID_IClusCfgStartupNotify = {0xC2B0D069, 0x6353, 0x4EE1, [0xB2, 0x53, 0x6B, 0x0D, 0x75, 0xDB, 0x2C, 0xD3]}; +enum IID IID_IClusCfgVerify = {0xD47BBEEC, 0x2286, 0x4514, [0xAA, 0x90, 0x7E, 0x88, 0xBD, 0x0F, 0xE5, 0x43]}; +enum IID IID_IClusCfgWizard = {0x2EB57A3B, 0xDA8D, 0x4B56, [0x97, 0xCF, 0xA3, 0x19, 0x1B, 0xF8, 0xFD, 0x5B]}; +enum IID IID_IClusterApplicationWizard = {0x24F97151, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; +enum IID IID_ICodeInstall = {0x79EAC9D1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IColumnMapper = {0x0B63E37A, 0x9CCC, 0x11D0, [0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04]}; +enum IID IID_IColumnMapperCreator = {0x0B63E37B, 0x9CCC, 0x11D0, [0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04]}; +enum IID IID_IColumnProvider = {0xE8025004, 0x1C42, 0x11D2, [0xBE, 0x2C, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; +enum IID IID_IColumnsInfo = {0x0C733A11, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IColumnsInfo2 = {0x0C733AB8, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IColumnsRowset = {0x0C733A10, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICombobox = {0x3050F677, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ICommand = {0x0C733A63, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICommandCost = {0x0C733A4E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICommandPersist = {0x0C733AA7, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICommandPrepare = {0x0C733A26, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICommandProperties = {0x0C733A79, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICommandStream = {0x0C733ABF, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICommandText = {0x0C733A27, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICommandTree = {0x0C733A87, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICommandValidate = {0x0C733A18, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICommandWithParameters = {0x0C733A64, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICommDlgBrowser = {0x000214F1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ICommDlgBrowser2 = {0x10339516, 0x2894, 0x11D2, [0x90, 0x39, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; +enum IID IID_ICommonQuery = {0xAB50DEC0, 0x6F1D, 0x11D0, [0xA1, 0xC4, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +enum IID IID_IComThreadingInfo = {0x000001CE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IConfigurationConnection = {0xDDAD8191, 0x66C5, 0x4A30, [0xA4, 0xDF, 0xCB, 0x6C, 0x21, 0x67, 0x04, 0xCA]}; +enum IID IID_IConnectionInfo = {0x15182CE3, 0x82D7, 0x473F, [0x92, 0xDE, 0x70, 0x6E, 0x2B, 0xCE, 0xA9, 0x02]}; +enum IID IID_IConnectionManager = {0xC0017768, 0x1BF3, 0x4352, [0x8D, 0x6C, 0x3A, 0x8C, 0x1D, 0x0F, 0xB4, 0x77]}; +enum IID IID_IConnectionPoint = {0xB196B286, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IConnectionPointContainer = {0xB196B284, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IContextCallback = {0x000001DA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IContextMenu = {0x000214E4, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IContextMenu2 = {0x000214F4, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IContextMenu3 = {0xBCFCE0A0, 0xEC17, 0x11D0, [0x8D, 0x10, 0x00, 0xA0, 0xC9, 0x0F, 0x27, 0x19]}; +enum IID IID_IContinue = {0x0000012A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IContinueCallback = {0xB722BCCA, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +enum IID IID_IConvertType = {0x0C733A88, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICrBarn = {0x276A2EE0, 0x0B5D, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID IID_ICrBarn2 = {0xB66A7A1B, 0x8FC6, 0x448C, [0xA2, 0xEB, 0x3C, 0x55, 0x95, 0x74, 0x78, 0xA1]}; +enum IID IID_ICrBlinds = {0x5AF5C340, 0x0BA9, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID IID_ICrBlinds2 = {0x7059D403, 0x599A, 0x4264, [0x81, 0x40, 0x64, 0x1E, 0xB8, 0xAE, 0x1F, 0x64]}; +enum IID IID_ICrBlur = {0x9F7C7827, 0xE87A, 0x11D1, [0x81, 0xE0, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_ICreateErrorInfo = {0x22F03340, 0x547D, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; +enum IID IID_ICreateRow = {0x0C733AB2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ICreateTypeInfo = {0x00020405, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ICreateTypeInfo2 = {0x0002040E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ICreateTypeLib = {0x00020406, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ICreateTypeLib2 = {0x0002040F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ICrEmboss = {0xE4ACFB80, 0x053E, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_ICrEngrave = {0xE4ACFB7F, 0x053E, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_ICrInset = {0x05C5EE20, 0x0BA6, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID IID_ICrIris = {0x3F69F350, 0x0379, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID IID_ICrIris2 = {0xF7B06961, 0xBA8C, 0x4970, [0x91, 0x8B, 0x1C, 0x60, 0xCB, 0x9F, 0xF1, 0x80]}; +enum IID IID_ICrRadialWipe = {0x424B71AE, 0x0695, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID IID_ICrSlide = {0x810E402E, 0x056B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID IID_ICrSpiral = {0x0DE527A0, 0x0C7E, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID IID_ICrStretch = {0x6684AF00, 0x0A87, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID IID_ICrWheel = {0x3943DE80, 0x1464, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID IID_ICrZigzag = {0x4E5A64A0, 0x0C8B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +enum IID IID_ICSSFilter = {0x3050F3EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ICSSFilterDispatch = {0x9519152B, 0x9484, 0x4A6C, [0xB6, 0xA7, 0x4F, 0x25, 0xE9, 0x2D, 0x6C, 0x6B]}; +enum IID IID_ICSSFilterSite = {0x3050F3ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ICurrentWorkingDirectory = {0x91956D21, 0x9276, 0x11D1, [0x92, 0x1A, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; +enum IID IID_ICursor = {0x9F6AA700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +enum IID IID_ICursorFind = {0xE01D7850, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +enum IID IID_ICursorMove = {0xACFF0690, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +enum IID IID_ICursorScroll = {0xBB87E420, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +enum IID IID_ICursorUpdateARow = {0xD14216A0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +enum IID IID_ICustomDoc = {0x3050F3F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ICustomRatingHelper = {0xD0D9842D, 0xE211, 0x4B2C, [0x88, 0xDC, 0xBC, 0x72, 0x93, 0x42, 0xDF, 0xCB]}; +enum IID IID_IDA2Array = {0x2A8F0B06, 0xBE2B, 0x11D1, [0xB2, 0x19, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +enum IID IID_IDA2Behavior = {0xC46C1BF0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDA2Event = {0x69B5BC70, 0x9B19, 0x11D0, [0x9B, 0x60, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID IID_IDA2FontStyle = {0x283807B5, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +enum IID IID_IDA2Geometry = {0x4A933702, 0xE36F, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID IID_IDA2Image = {0x45393DF0, 0x54B9, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; +enum IID IID_IDA2LineStyle = {0x2AE71568, 0x4B34, 0x11D1, [0xB1, 0xE3, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +enum IID IID_IDA2Statics = {0xD17506C2, 0x6B26, 0x11D0, [0x89, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +enum IID IID_IDA2View = {0x5F00F545, 0xDF18, 0x11D1, [0xAB, 0x6F, 0x00, 0xC0, 0x4F, 0xD9, 0x2B, 0x6B]}; +enum IID IID_IDA2ViewerControl = {0xC46C1BEF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDA2ViewerControlWindowed = {0xC46C1BED, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAArray = {0xFA261CF0, 0xC44E, 0x11D1, [0x9B, 0xE4, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID IID_IDABbox2 = {0xBA8B033E, 0x1E91, 0x11D1, [0x88, 0x09, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +enum IID IID_IDABbox3 = {0x0E41257B, 0x812D, 0x11D0, [0x9B, 0x4A, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID IID_IDABehavior = {0x5DFB2651, 0x9668, 0x11D0, [0xB1, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +enum IID IID_IDABoolean = {0xC46C1BDA, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDABvrHook = {0x50B4791F, 0x4731, 0x11D0, [0x89, 0x12, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +enum IID IID_IDACamera = {0xC46C1BCA, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAColor = {0xC46C1BDC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDADashStyle = {0xF3E1B522, 0xD8A6, 0x11D1, [0x9B, 0xE5, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID IID_IDADrawingSurface = {0xC46C1BF4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDADXTransformResult = {0xAF868305, 0xAB0B, 0x11D0, [0x87, 0x6A, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +enum IID IID_IDAEndStyle = {0xB6FFC24C, 0x7E13, 0x11D0, [0x9B, 0x47, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID IID_IDAEvent = {0xC46C1BCE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAFontStyle = {0xC46C1BC1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAGeometry = {0xC46C1BCC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAImage = {0xC46C1BC4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAImport = {0xC46C1BEE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAImportationResult = {0xB90E5258, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +enum IID IID_IDAJoinStyle = {0xA3034056, 0xEC1C, 0x11D1, [0x9B, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID IID_IDALineStyle = {0x69AD90EF, 0x1C20, 0x11D1, [0x88, 0x01, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +enum IID IID_IDAMatte = {0xC46C1BE4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAMicrophone = {0xC46C1BD8, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAModifiableBehavior = {0xC46C1BEC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAMontage = {0xC46C1BC8, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDANumber = {0xD17506C3, 0x6B26, 0x11D0, [0x89, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +enum IID IID_IDAPair = {0x542FB453, 0x5003, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; +enum IID IID_IDAPath2 = {0xC46C1BD0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAPickableResult = {0xC46C1BDE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAPoint2 = {0x9CDE7341, 0x3C20, 0x11D0, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +enum IID IID_IDAPoint3 = {0xC46C1BD6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAPreferences = {0xB90E525A, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +enum IID IID_IDASite = {0xB90E5259, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +enum IID IID_IDASound = {0xC46C1BE6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAStatics = {0x5DFB2650, 0x9668, 0x11D0, [0xB1, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +enum IID IID_IDAString = {0xC46C1BD2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDataAdviseHolder = {0x00000110, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDataChannel = {0xAD42D12A, 0x4AD0, 0x4856, [0x91, 0x9E, 0xE8, 0x54, 0xC9, 0x1D, 0x18, 0x56]}; +enum IID IID_IDataConvert = {0x0C733A8D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDataFilter = {0x69D14C80, 0xC18E, 0x11D0, [0xA9, 0xCE, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; +enum IID IID_IDataObject = {0x0000010E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDATransform2 = {0xC46C1BD4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDATransform3 = {0xC46C1BE0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDATuple = {0x542FB452, 0x5003, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; +enum IID IID_IDAUntilNotifier = {0x25B0F91C, 0xD23D, 0x11D0, [0x9B, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID IID_IDAUserData = {0xBACD4D86, 0x4A4F, 0x11D1, [0x9B, 0xC8, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID IID_IDAVector2 = {0xC46C1BC6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAVector3 = {0xC46C1BE2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAView = {0xAF868304, 0xAB0B, 0x11D0, [0x87, 0x6A, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +enum IID IID_IDAViewerControl = {0xC46C1BDD, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAViewerControlWindowed = {0xC46C1BCD, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +enum IID IID_IDAViewSite = {0xBCBB1F75, 0xE384, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID IID_IDBAsynchNotify = {0x0C733A96, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDBAsynchStatus = {0x0C733A95, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDBBinderProperties = {0x0C733AB3, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDBCreateCommand = {0x0C733A1D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDBCreateSession = {0x0C733A5D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDBDataSourceAdmin = {0x0C733A7A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDBInfo = {0x0C733A89, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDBInitialize = {0x0C733A8B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDBProperties = {0x0C733A8A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDBSchemaCommand = {0x0C733A50, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDBSchemaRowset = {0x0C733A7B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDCInfo = {0x0C733A9C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IDDVideoAcceleratorContainer = {0xACA12120, 0x3356, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; +enum IID IID_IDDVideoPortContainer = {0x6C142760, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +enum IID IID_IDebug = {0x00000123, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDebugApplication = {0x51973C32, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugApplication32 = {0x51973C32, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugApplication64 = {0x4DEDC754, 0x04C7, 0x4F10, [0x9E, 0x60, 0x16, 0xA3, 0x90, 0xFE, 0x6E, 0x62]}; +enum IID IID_IDebugApplicationEx = {0x51973C00, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugApplicationNode = {0x51973C34, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugApplicationNodeEvents = {0x51973C35, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugApplicationThread = {0x51973C38, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugApplicationThread64 = {0x9DAC5886, 0xDBAD, 0x456D, [0x9D, 0xEE, 0x5D, 0xEC, 0x39, 0xAB, 0x3D, 0xDA]}; +enum IID IID_IDebugAsyncOperation = {0x51973C1B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugAsyncOperationCallBack = {0x51973C1C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugCodeContext = {0x51973C13, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugCookie = {0x51973C39, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocument = {0x51973C21, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocumentContext = {0x51973C28, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocumentHelper32 = {0x51973C26, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocumentHelper64 = {0xC4C7363C, 0x20FD, 0x47F9, [0xBD, 0x82, 0x48, 0x55, 0xE0, 0x15, 0x08, 0x71]}; +enum IID IID_IDebugDocumentHelperEx = {0x51973C02, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocumentHost = {0x51973C27, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocumentInfo = {0x51973C1F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocumentProvider = {0x51973C20, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocumentText = {0x51973C22, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocumentTextAuthor = {0x51973C24, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocumentTextEvents = {0x51973C23, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugDocumentTextExternalAuthor = {0x51973C25, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugExpression = {0x51973C14, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugExpressionCallBack = {0x51973C16, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugExpressionContext = {0x51973C15, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugExtendedProperty = {0x51973C52, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugFormatter = {0x51973C05, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugHelper = {0x51973C3F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugHelperEx = {0x51973C08, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugOut = {0xC733E4F1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_IDebugProperty = {0x51973C50, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugPropertyEnumType_All = {0x51973C55, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugPropertyEnumType_Arguments = {0x51973C57, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugPropertyEnumType_Locals = {0x51973C56, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugPropertyEnumType_LocalsPlus = {0x51973C58, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugPropertyEnumType_Registers = {0x51973C59, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugRegister = {0xC733E4F0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_IDebugSessionProvider = {0x51973C29, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugSessionProviderEx = {0x51973C09, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugSetValueCallback = {0x51973C06, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugStackFrame = {0x51973C17, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugStackFrameSniffer = {0x51973C18, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugStackFrameSnifferEx = {0x51973C19, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugStackFrameSnifferEx32 = {0x51973C19, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugStackFrameSnifferEx64 = {0x8CD12AF4, 0x49C1, 0x4D52, [0x8D, 0x8A, 0xC1, 0x46, 0xF4, 0x75, 0x81, 0xAA]}; +enum IID IID_IDebugStream = {0x00000124, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDebugSyncOperation = {0x51973C1A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugThreadCall = {0x51973C36, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugThreadCall32 = {0x51973C36, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IDebugThreadCall64 = {0xCB3FA335, 0xE979, 0x42FD, [0x9F, 0xCF, 0xA7, 0x54, 0x6A, 0x0F, 0x39, 0x05]}; +enum IID IID_IDelaydC = {0xBFF9C030, 0xB58F, 0x11CE, [0xB5, 0xB0, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +enum IID IID_IDelayedRelease = {0x000214ED, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDelegateFolder = {0xADD8BA80, 0x002B, 0x11D0, [0x8F, 0x0F, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +enum IID IID_IDeskBand = {0xEB0FE172, 0x1A3A, 0x11D0, [0x89, 0xB3, 0x00, 0xA0, 0xC9, 0x0A, 0x90, 0xAC]}; +enum IID IID_IDeviceRect = {0x3050F6D5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IDfReserved1 = {0x00000013, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDfReserved2 = {0x00000014, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDfReserved3 = {0x00000015, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDialBranding = {0x8AECAFA9, 0x4306, 0x43CC, [0x8C, 0x5A, 0x76, 0x5F, 0x29, 0x79, 0xCC, 0x16]}; +enum IID IID_IDialEngine = {0x39FD782B, 0x7905, 0x40D5, [0x91, 0x48, 0x3C, 0x9B, 0x19, 0x04, 0x23, 0xD5]}; +enum IID IID_IDialEventSink = {0x2D86F4FF, 0x6E2D, 0x4488, [0xB2, 0xE9, 0x69, 0x34, 0xAF, 0xD4, 0x1B, 0xEA]}; +enum IID IID_IDifferencing = {0x994F0AF0, 0x2977, 0x11CE, [0xBB, 0x80, 0x08, 0x00, 0x2B, 0x36, 0xB2, 0xB0]}; +enum IID IID_IDirect3D = {0x3BBA0080, 0x2421, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +enum IID IID_IDirect3D2 = {0x6AAE1EC1, 0x662A, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +enum IID IID_IDirect3D3 = {0xBB223240, 0xE72B, 0x11D0, [0xA9, 0xB4, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E]}; +enum IID IID_IDirect3D7 = {0xF5049E77, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID IID_IDirect3DDevice = {0x64108800, 0x957D, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +enum IID IID_IDirect3DDevice2 = {0x93281501, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +enum IID IID_IDirect3DDevice3 = {0xB0AB3B60, 0x33D7, 0x11D1, [0xA9, 0x81, 0x00, 0xC0, 0x4F, 0xD7, 0xB1, 0x74]}; +enum IID IID_IDirect3DDevice7 = {0xF5049E79, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID IID_IDirect3DExecuteBuffer = {0x4417C145, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; +enum IID IID_IDirect3DHALDevice = {0x84E63DE0, 0x46AA, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; +enum IID IID_IDirect3DLight = {0x4417C142, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; +enum IID IID_IDirect3DMaterial = {0x4417C144, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; +enum IID IID_IDirect3DMaterial2 = {0x93281503, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +enum IID IID_IDirect3DMaterial3 = {0xCA9C46F4, 0xD3C5, 0x11D1, [0xB7, 0x5A, 0x00, 0x60, 0x08, 0x52, 0xB3, 0x12]}; +enum IID IID_IDirect3DMMXDevice = {0x881949A1, 0xD6F3, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +enum IID IID_IDirect3DNullDevice = {0x8767DF22, 0xBACC, 0x11D1, [0x89, 0x69, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID IID_IDirect3DRampDevice = {0xF2086B20, 0x259F, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +enum IID IID_IDirect3DRefDevice = {0x50936643, 0x13E9, 0x11D1, [0x89, 0xAA, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +enum IID IID_IDirect3DRGBDevice = {0xA4665C60, 0x2673, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +enum IID IID_IDirect3DRM = {0x2BC49361, 0x8327, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRM2 = {0x4516ECC8, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRM3 = {0x4516EC83, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRMAnimation = {0xEB16CB0D, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMAnimation2 = {0xFF6B7F77, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; +enum IID IID_IDirect3DRMAnimationArray = {0xD5F1CAE0, 0x4BD7, 0x11D1, [0xB9, 0x74, 0x00, 0x60, 0x08, 0x3E, 0x45, 0xF3]}; +enum IID IID_IDirect3DRMAnimationSet = {0xEB16CB0E, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMAnimationSet2 = {0xFF6B7F79, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; +enum IID IID_IDirect3DRMClippedVisual = {0x5434E733, 0x6D66, 0x11D1, [0xBB, 0x0B, 0x00, 0x00, 0xF8, 0x75, 0x86, 0x5A]}; +enum IID IID_IDirect3DRMDevice = {0xE9E19280, 0x6E05, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMDevice2 = {0x4516EC78, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRMDevice3 = {0x549F498B, 0xBFEB, 0x11D1, [0x8E, 0xD8, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x82]}; +enum IID IID_IDirect3DRMDeviceArray = {0xEB16CB10, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMFace = {0xEB16CB07, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMFace2 = {0x4516EC81, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRMFaceArray = {0xEB16CB17, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMFrame = {0xEB16CB03, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMFrame2 = {0xC3DFBD60, 0x3988, 0x11D0, [0x9E, 0xC2, 0x00, 0x00, 0xC0, 0x29, 0x1A, 0xC3]}; +enum IID IID_IDirect3DRMFrame3 = {0xFF6B7F70, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; +enum IID IID_IDirect3DRMFrameArray = {0xEB16CB12, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMInterpolator = {0x242F6BC1, 0x3849, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRMLight = {0xEB16CB08, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMLightArray = {0xEB16CB14, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMMaterial = {0xEB16CB0B, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMMaterial2 = {0xFF6B7F75, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; +enum IID IID_IDirect3DRMMesh = {0xA3A80D01, 0x6E12, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMMeshBuilder = {0xA3A80D02, 0x6E12, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMMeshBuilder2 = {0x4516EC77, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRMMeshBuilder3 = {0x4516EC82, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRMObject = {0xEB16CB00, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMObject2 = {0x4516EC7C, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRMObjectArray = {0x242F6BC2, 0x3849, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRMPicked2Array = {0x4516EC7B, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRMPickedArray = {0xEB16CB16, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMProgressiveMesh = {0x4516EC79, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +enum IID IID_IDirect3DRMShadow = {0xAF359780, 0x6BA3, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMShadow2 = {0x86B44E25, 0x9C82, 0x11D1, [0xBB, 0x0B, 0x00, 0xA0, 0xC9, 0x81, 0xA0, 0xA6]}; +enum IID IID_IDirect3DRMTexture = {0xEB16CB09, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMTexture2 = {0x120F30C0, 0x1629, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; +enum IID IID_IDirect3DRMTexture3 = {0xFF6B7F73, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; +enum IID IID_IDirect3DRMUserVisual = {0x59163DE0, 0x6D43, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMViewport = {0xEB16CB02, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMViewport2 = {0x4A1B1BE6, 0xBFED, 0x11D1, [0x8E, 0xD8, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x82]}; +enum IID IID_IDirect3DRMViewportArray = {0xEB16CB11, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMVisual = {0xEB16CB04, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMVisualArray = {0xEB16CB13, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMWinDevice = {0xC5016CC0, 0xD273, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DRMWrap = {0xEB16CB0A, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +enum IID IID_IDirect3DTexture = {0x2CDCD9E0, 0x25A0, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +enum IID IID_IDirect3DTexture2 = {0x93281502, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +enum IID IID_IDirect3DTnLHalDevice = {0xF5049E78, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID IID_IDirect3DVertexBuffer = {0x7A503555, 0x4A83, 0x11D1, [0xA5, 0xDB, 0x00, 0xA0, 0xC9, 0x03, 0x67, 0xF8]}; +enum IID IID_IDirect3DVertexBuffer7 = {0xF5049E7D, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID IID_IDirect3DViewport = {0x4417C146, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; +enum IID IID_IDirect3DViewport2 = {0x93281500, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +enum IID IID_IDirect3DViewport3 = {0xB0AB3B61, 0x33D7, 0x11D1, [0xA9, 0x81, 0x00, 0xC0, 0x4F, 0xD7, 0xB1, 0x74]}; +enum IID IID_IDirectDraw = {0x6C14DB80, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +enum IID IID_IDirectDraw2 = {0xB3A6F3E0, 0x2B43, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +enum IID IID_IDirectDraw4 = {0x9C59509A, 0x39BD, 0x11D1, [0x8C, 0x4A, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +enum IID IID_IDirectDraw7 = {0x15E65EC0, 0x3B9C, 0x11D2, [0xB9, 0x2F, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; +enum IID IID_IDirectDrawClipper = {0x6C14DB85, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +enum IID IID_IDirectDrawColorControl = {0x4B9F0EE0, 0x0D7E, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +enum IID IID_IDirectDrawFactory2 = {0x89B2C488, 0x4AF4, 0x11D1, [0x8C, 0x4C, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +enum IID IID_IDirectDrawGammaControl = {0x69C11C3E, 0xB46B, 0x11D1, [0xAD, 0x7A, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; +enum IID IID_IDirectDrawKernel = {0x8D56C120, 0x6A08, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +enum IID IID_IDirectDrawOptSurface = {0x51191F1E, 0x4F2B, 0x11D1, [0x8C, 0xC3, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +enum IID IID_IDirectDrawPalette = {0x6C14DB84, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +enum IID IID_IDirectDrawPalette2 = {0xC03C477E, 0x6519, 0x11D1, [0x8C, 0x52, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +enum IID IID_IDirectDrawSurface = {0x6C14DB81, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +enum IID IID_IDirectDrawSurface2 = {0x57805885, 0x6EEC, 0x11CF, [0x94, 0x41, 0xA8, 0x23, 0x03, 0xC1, 0x0E, 0x27]}; +enum IID IID_IDirectDrawSurface3 = {0xDA044E00, 0x69B2, 0x11D0, [0xA1, 0xD5, 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xBB]}; +enum IID IID_IDirectDrawSurface4 = {0x0B2B8630, 0xAD35, 0x11D0, [0x8E, 0xA6, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; +enum IID IID_IDirectDrawSurface7 = {0x06675A80, 0x3B9B, 0x11D2, [0xB9, 0x2F, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; +enum IID IID_IDirectDrawSurfaceKernel = {0x60755DA0, 0x6A40, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +enum IID IID_IDirectDrawVideoAccelerator = {0xC9B2D740, 0x3356, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; +enum IID IID_IDirectDrawVideoPort = {0xB36D93E0, 0x2B43, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +enum IID IID_IDirectInput2A = {0x5944E662, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IDirectInput2W = {0x5944E663, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IDirectInput7A = {0x9A4CB684, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; +enum IID IID_IDirectInput7W = {0x9A4CB685, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; +enum IID IID_IDirectInputA = {0x89521360, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IDirectInputDevice2A = {0x5944E682, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IDirectInputDevice2W = {0x5944E683, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IDirectInputDevice7A = {0x57D7C6BC, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; +enum IID IID_IDirectInputDevice7W = {0x57D7C6BD, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; +enum IID IID_IDirectInputDeviceA = {0x5944E680, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IDirectInputDeviceW = {0x5944E681, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IDirectInputEffect = {0xE7E1F7C0, 0x88D2, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID IID_IDirectInputEffectDriver = {0x02538130, 0x898F, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +enum IID IID_IDirectInputJoyConfig = {0x1DE12AB1, 0xC9F5, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IDirectInputPIDDriver = {0xEEC6993A, 0xB3FD, 0x11D2, [0xA9, 0x16, 0x00, 0xC0, 0x4F, 0xB9, 0x86, 0x38]}; +enum IID IID_IDirectInputW = {0x89521361, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IDirectMusic = {0x6536115A, 0x7B2D, 0x11D2, [0xBA, 0x18, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID IID_IDirectMusic2 = {0x6FC2CAE1, 0xBC78, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +enum IID IID_IDirectMusicBand = {0xD2AC28C0, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicBuffer = {0xD2AC2878, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicChordMap = {0xD2AC28BE, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicCollection = {0xD2AC287C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicComposer = {0xD2AC28BF, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicDownload = {0xD2AC287B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicDownloadedInstrument = {0xD2AC287E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicGetLoader = {0x68A04844, 0xD13D, 0x11D1, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +enum IID IID_IDirectMusicGraph = {0x2BEFC277, 0x5497, 0x11D2, [0xBC, 0xCB, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +enum IID IID_IDirectMusicInstrument = {0xD2AC287D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicLoader = {0x2FFAACA2, 0x5DCA, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +enum IID IID_IDirectMusicObject = {0xD2AC28B5, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicPerformance = {0x07D43D03, 0x6523, 0x11D2, [0x87, 0x1D, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicPerformance2 = {0x6FC2CAE0, 0xBC78, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +enum IID IID_IDirectMusicPort = {0x08F2D8C9, 0x37C2, 0x11D2, [0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID IID_IDirectMusicPortDownload = {0xD2AC287A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicSegment = {0xF96029A2, 0x4282, 0x11D2, [0x87, 0x17, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicSegment2 = {0xD38894D1, 0xC052, 0x11D2, [0x87, 0x2F, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicSegmentState = {0xA3AFDCC7, 0xD3EE, 0x11D1, [0xBC, 0x8D, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +enum IID IID_IDirectMusicStyle = {0xD2AC28BD, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicThru = {0xCED153E7, 0x3606, 0x11D2, [0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +enum IID IID_IDirectMusicTool = {0xD2AC28BA, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectMusicTrack = {0xF96029A1, 0x4282, 0x11D2, [0x87, 0x17, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +enum IID IID_IDirectoryObject = {0xE798DE2C, 0x22E4, 0x11D0, [0x84, 0xFE, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IDirectorySchemaMgmt = {0x75DB3B9C, 0xA4D8, 0x11D0, [0xA7, 0x9C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; +enum IID IID_IDirectorySearch = {0x109BA8EC, 0x92F0, 0x11D0, [0xA7, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; +enum IID IID_IDirectPlay = {0x5454E9A0, 0xDB65, 0x11CE, [0x92, 0x1C, 0x00, 0xAA, 0x00, 0x6C, 0x49, 0x72]}; +enum IID IID_IDirectPlay2 = {0x2B74F7C0, 0x9154, 0x11CF, [0xA9, 0xCD, 0x00, 0xAA, 0x00, 0x68, 0x86, 0xE3]}; +enum IID IID_IDirectPlay2A = {0x9D460580, 0xA822, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0x53, 0x4E, 0x82]}; +enum IID IID_IDirectPlay3 = {0x133EFE40, 0x32DC, 0x11D0, [0x9C, 0xFB, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; +enum IID IID_IDirectPlay3A = {0x133EFE41, 0x32DC, 0x11D0, [0x9C, 0xFB, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; +enum IID IID_IDirectPlay4 = {0x0AB1C530, 0x4745, 0x11D1, [0xA7, 0xA1, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +enum IID IID_IDirectPlay4A = {0x0AB1C531, 0x4745, 0x11D1, [0xA7, 0xA1, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +enum IID IID_IDirectPlayLobby = {0xAF465C71, 0x9588, 0x11CF, [0xA0, 0x20, 0x00, 0xAA, 0x00, 0x61, 0x57, 0xAC]}; +enum IID IID_IDirectPlayLobby2 = {0x0194C220, 0xA303, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID IID_IDirectPlayLobby2A = {0x1BB4AF80, 0xA303, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +enum IID IID_IDirectPlayLobby3 = {0x2DB72490, 0x652C, 0x11D1, [0xA7, 0xA8, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +enum IID IID_IDirectPlayLobby3A = {0x2DB72491, 0x652C, 0x11D1, [0xA7, 0xA8, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +enum IID IID_IDirectPlayLobbyA = {0x26C66A70, 0xB367, 0x11CF, [0xA0, 0x24, 0x00, 0xAA, 0x00, 0x61, 0x57, 0xAC]}; +enum IID IID_IDirectSound = {0x279AFA83, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +enum IID IID_IDirectSound3DBuffer = {0x279AFA86, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +enum IID IID_IDirectSound3DListener = {0x279AFA84, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +enum IID IID_IDirectSoundBuffer = {0x279AFA85, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +enum IID IID_IDirectSoundCapture = {0xB0210781, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; +enum IID IID_IDirectSoundCaptureBuffer = {0xB0210782, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; +enum IID IID_IDirectSoundNotify = {0xB0210783, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; +enum IID IID_IDirectWriterLock = {0x0E6D4D92, 0x6738, 0x11CF, [0x96, 0x08, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; +enum IID IID_IDirectXFile = {0x3D82AB40, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID IID_IDirectXFileBinary = {0x3D82AB46, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID IID_IDirectXFileData = {0x3D82AB44, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID IID_IDirectXFileDataReference = {0x3D82AB45, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID IID_IDirectXFileEnumObject = {0x3D82AB41, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID IID_IDirectXFileObject = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID IID_IDirectXFileSaveObject = {0x3D82AB42, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID IID_IDiscardableBrowserProperty = {0x49C3DE7C, 0xD329, 0x11D0, [0xAB, 0x73, 0x00, 0xC0, 0x4F, 0xC3, 0x3E, 0x80]}; +enum IID IID_IDiscMaster = {0x520CCA62, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID IID_IDiscMasterProgressEvents = {0xEC9E51C1, 0x4E5D, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID IID_IDiscRecorder = {0x85AC9776, 0xCA88, 0x4CF2, [0x89, 0x4E, 0x09, 0x59, 0x8C, 0x07, 0x8A, 0x41]}; +enum IID IID_IDiscStash = {0x520CCA64, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID IID_IDispatch = {0x00020400, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDispatchEx = {0xA6EF9860, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +enum IID IID_IDispError = {0xA6EF9861, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +enum IID IID_IDisplayPointer = {0x3050F69E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IDisplayServices = {0x3050F69D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IDithererImpl = {0x7C48E840, 0x3910, 0x11D0, [0x86, 0xFC, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; +enum IID IID_IDocHostShowUI = {0xC4D244B0, 0xD43E, 0x11CF, [0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A]}; +enum IID IID_IDocHostUIHandler = {0xBD3F23C0, 0xD43E, 0x11CF, [0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A]}; +enum IID IID_IDocHostUIHandler2 = {0x3050F6D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IDockingWindow = {0x012DD920, 0x7B26, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; +enum IID IID_IDockingWindowFrame = {0x47D2657A, 0x7B27, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; +enum IID IID_IDockingWindowSite = {0x2A342FC2, 0x7B26, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; +enum IID IID_IDoTask = {0x0230C9F8, 0xEE7F, 0x4307, [0x98, 0xDB, 0x72, 0x6E, 0xBC, 0xAE, 0x55, 0xD6]}; +enum IID IID_IDownloadBehavior = {0x3050F5BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IDownloadManager = {0x988934A4, 0x064B, 0x11D3, [0xBB, 0x80, 0x00, 0x10, 0x4B, 0x35, 0xE7, 0xF9]}; +enum IID IID_IDownloadNotify = {0xCAEB5D28, 0xAE4C, 0x11D1, [0xBA, 0x40, 0x00, 0xC0, 0x4F, 0xB9, 0x2D, 0x79]}; +enum IID IID_IDragSourceHelper = {0xDE5BF786, 0x477A, 0x11D2, [0x83, 0x9D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; +enum IID IID_IDropSource = {0x00000121, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDropTarget = {0x00000122, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IDropTargetHelper = {0x4657278B, 0x411B, 0x11D2, [0x83, 0x9A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; +enum IID IID_IDsBrowseDomainTree = {0x7CABCF1E, 0x78F5, 0x11D2, [0x96, 0x0C, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; +enum IID IID_IDsQueryColumnHandler = {0xC072999E, 0xFA49, 0x11D1, [0xA0, 0xAF, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; +enum IID IID_IDummy = {0x0D7CA54A, 0xD252, 0x4FCB, [0x91, 0x04, 0xF6, 0xDD, 0xD3, 0x10, 0xB3, 0xF9]}; +enum IID IID_IDummyHICONIncluder = {0x947990DE, 0xCC28, 0x11D2, [0xA0, 0xF7, 0x00, 0x80, 0x5F, 0x85, 0x8F, 0xB1]}; +enum IID IID_IDX2D = {0x9EFD02A9, 0xA996, 0x11D1, [0x81, 0xC9, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_IDX2DDebug = {0x03BB2457, 0xA279, 0x11D1, [0x81, 0xC6, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_IDXARGBReadPtr = {0xEAAAC2D6, 0xC290, 0x11D1, [0x90, 0x5D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXARGBReadWritePtr = {0xEAAAC2D7, 0xC290, 0x11D1, [0x90, 0x5D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXARGBSurfaceInit = {0x9EA3B63A, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXBaseObject = {0x17B59B2B, 0x9CC8, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXBasicImage = {0x16B280C7, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXDCLock = {0x0F619456, 0xCF39, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXDLUTBuilder = {0x73068231, 0x35EE, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_IDXDMapper = {0x7FD9088B, 0x35ED, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_IDXEffect = {0xE31FB81B, 0x1335, 0x11D1, [0x81, 0x89, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_IDXGradient = {0xB2024B51, 0xEE77, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXGradient2 = {0xD0EF2A80, 0x61DC, 0x11D2, [0xB2, 0xEB, 0x00, 0xA0, 0xC9, 0x36, 0xB2, 0x12]}; +enum IID IID_IDXLookupTable = {0x01BAFC7F, 0x9E63, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXLUTBuilder = {0xF4370FC1, 0xCADB, 0x11D0, [0xB5, 0x2C, 0x00, 0xA0, 0xC9, 0x05, 0x43, 0x73]}; +enum IID IID_IDXMapper = {0x555278E5, 0x05DB, 0x11D1, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; +enum IID IID_IDXPixelate = {0xD33E180F, 0xFBE9, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXRasterizer = {0x9EA3B635, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXRawSurface = {0x09756C8A, 0xD96A, 0x11D1, [0x90, 0x62, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXSurface = {0xB39FD73F, 0xE139, 0x11D1, [0x90, 0x65, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXSurfaceFactory = {0x144946F5, 0xC4D4, 0x11D1, [0x81, 0xD1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_IDXSurfaceInit = {0x9EA3B639, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXSurfaceModifier = {0x9EA3B637, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXSurfacePick = {0x30A5FB79, 0xE11F, 0x11D1, [0x90, 0x64, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXTAlpha = {0x1D4637E0, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID IID_IDXTAlphaImageLoader = {0xA5F2D3E8, 0x7A7E, 0x48E5, [0xBC, 0x75, 0x40, 0x79, 0x0B, 0xE4, 0xA9, 0x41]}; +enum IID IID_IDXTaskManager = {0x254DBBC1, 0xF922, 0x11D0, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; +enum IID IID_IDXTBindHost = {0xD26BCE55, 0xE9DC, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXTCheckerBoard = {0xAD3C2576, 0x117C, 0x4510, [0x84, 0xDD, 0xB6, 0x68, 0x97, 0x1D, 0xCF, 0xD1]}; +enum IID IID_IDXTChroma = {0x1D4637E2, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID IID_IDXTClipOrigin = {0xEE1663D8, 0x0988, 0x4C48, [0x9F, 0xD6, 0xDB, 0x44, 0x50, 0x88, 0x56, 0x68]}; +enum IID IID_IDXTComposite = {0x9A43A843, 0x0831, 0x11D1, [0x81, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_IDXTConvolution = {0x7BA7F8AF, 0xE5EA, 0x11D1, [0x81, 0xDD, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_IDXTDropShadow = {0x1D4637E3, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID IID_IDXTFade = {0x16B280C4, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXTFilter = {0x6187E5A2, 0xA445, 0x4608, [0x8F, 0xC0, 0xBE, 0x7A, 0x6C, 0x8D, 0xB3, 0x86]}; +enum IID IID_IDXTFilterBehavior = {0x14D7DDDD, 0xACA2, 0x4E45, [0x95, 0x04, 0x38, 0x08, 0xAB, 0xEB, 0x4F, 0x92]}; +enum IID IID_IDXTFilterBehaviorSite = {0x909B23C2, 0x9018, 0x499F, [0xA8, 0x6D, 0x4E, 0x7D, 0xA9, 0x37, 0xE9, 0x31]}; +enum IID IID_IDXTFilterCollection = {0x22B07B33, 0x8BFB, 0x49D4, [0x9B, 0x90, 0x09, 0x38, 0x37, 0x0C, 0x90, 0x19]}; +enum IID IID_IDXTFilterController = {0x5CF315F2, 0x273D, 0x47B6, [0xB9, 0xED, 0xF7, 0x5D, 0xC3, 0xB0, 0x15, 0x0B]}; +enum IID IID_IDXTGlow = {0x1D4637E4, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID IID_IDXTGradientD = {0x623E2881, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +enum IID IID_IDXTGridSize = {0xD6BBE91E, 0xFF60, 0x11D2, [0x8F, 0x6E, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x74]}; +enum IID IID_IDXTICMFilter = {0x734321ED, 0x1E7B, 0x4E1C, [0xBB, 0xFA, 0x89, 0xC8, 0x19, 0x80, 0x0E, 0x2F]}; +enum IID IID_IDXTLabel = {0xC0C17F0E, 0xAE41, 0x11D1, [0x9A, 0x3B, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +enum IID IID_IDXTLight = {0xF9EFBEC1, 0x4302, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID IID_IDXTMask = {0xA1067146, 0xB063, 0x47D7, [0xA5, 0x4A, 0x2C, 0x23, 0x09, 0xE9, 0x88, 0x9D]}; +enum IID IID_IDXTMatrix = {0xAC66A493, 0x0F0C, 0x4C76, [0x82, 0x5C, 0x9D, 0x68, 0xBE, 0xDE, 0x91, 0x88]}; +enum IID IID_IDXTMetaBurnFilm = {0x107045D0, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaCenterPeel = {0xAA0D4D0B, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID IID_IDXTMetaColorFade = {0x2A54C907, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaFlowMotion = {0x2A54C90A, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaGriddler = {0x2A54C910, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaGriddler2 = {0x2A54C912, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaJaws = {0x2A54C903, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaLightWipe = {0x107045C7, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaLiquid = {0xAA0D4D09, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID IID_IDXTMetaPageTurn = {0xAA0D4D07, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID IID_IDXTMetaPeelPiece = {0xAA0D4D0F, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID IID_IDXTMetaPeelSmall = {0xAA0D4D0D, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID IID_IDXTMetaPeelSplit = {0xAA0D4D11, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID IID_IDXTMetaRadialScaleWipe = {0x107045C9, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaRipple = {0xAA0D4D02, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID IID_IDXTMetaRoll = {0x9C61F46D, 0x0530, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +enum IID IID_IDXTMetaThreshold = {0x2A54C914, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaTwister = {0x107045CE, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaVacuum = {0x2A54C90C, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaWater = {0x107045C4, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaWhiteOut = {0x107045CB, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +enum IID IID_IDXTMetaWormHole = {0x0E6AE021, 0x0C83, 0x11D2, [0x8C, 0xD4, 0x00, 0x10, 0x4B, 0xC7, 0x5D, 0x9A]}; +enum IID IID_IDXTMotionBlur = {0x089057BE, 0xD3F5, 0x4A2C, [0xB1, 0x0A, 0xA5, 0x13, 0x01, 0x84, 0xA0, 0xF7]}; +enum IID IID_IDXTRandomBars = {0x8A6D2022, 0x4A8F, 0x4EB9, [0xBB, 0x25, 0xAA, 0x05, 0x20, 0x1F, 0x9C, 0x84]}; +enum IID IID_IDXTransform = {0x30A5FB78, 0xE11F, 0x11D1, [0x90, 0x64, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXTransformFactory = {0x6A950B2B, 0xA971, 0x11D1, [0x81, 0xC8, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_IDXTRedirect = {0x02F5140B, 0x626F, 0x4019, [0x9C, 0x9E, 0x2D, 0xAA, 0x1E, 0x93, 0xE8, 0xFC]}; +enum IID IID_IDXTRedirectFilterInit = {0xD1A57094, 0x21F7, 0x4E6C, [0x93, 0xE5, 0xF5, 0xF7, 0x7F, 0x74, 0x82, 0x93]}; +enum IID IID_IDXTRevealTrans = {0xB8095006, 0xA128, 0x464B, [0x8B, 0x2D, 0x90, 0x58, 0x0A, 0xEE, 0x2B, 0x05]}; +enum IID IID_IDXTScale = {0xB39FD742, 0xE139, 0x11D1, [0x90, 0x65, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXTScaleOutput = {0xB2024B50, 0xEE77, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +enum IID IID_IDXTShadow = {0x1D4637E6, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID IID_IDXTStrips = {0xA83C9B5C, 0xFB11, 0x4AF5, [0x8F, 0x65, 0xD0, 0x3F, 0x15, 0x1D, 0x3E, 0xD5]}; +enum IID IID_IDXTWave = {0x1D4637E7, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +enum IID IID_IDXTWipe = {0xAF279B2F, 0x86EB, 0x11D1, [0x81, 0xBF, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID IID_IDXTWipe2 = {0xE1FF8091, 0x442B, 0x4801, [0x88, 0xB6, 0x2B, 0x47, 0xB1, 0x61, 0x1F, 0xD2]}; +enum IID IID_IDynamicPortMapping = {0x4FC80282, 0x23B6, 0x4378, [0x9A, 0x27, 0xCD, 0x8F, 0x17, 0xC9, 0x40, 0x0C]}; +enum IID IID_IDynamicPortMappingCollection = {0xB60DE00F, 0x156E, 0x4E8D, [0x9E, 0xC1, 0x3A, 0x23, 0x42, 0xC1, 0x08, 0x99]}; +enum IID IID_IEditDebugServices = {0x3050F60B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementAdorner = {0x3050F607, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehavior = {0x3050F425, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorCategory = {0x3050F4ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorFactory = {0x3050F429, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorFocus = {0x3050F6B6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorLayout = {0x3050F6BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorLayout2 = {0x3050F846, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorRender = {0x3050F4AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorSite = {0x3050F427, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorSiteCategory = {0x3050F4EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorSiteLayout = {0x3050F6B7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorSiteLayout2 = {0x3050F847, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorSiteOM = {0x3050F489, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorSiteOM2 = {0x3050F659, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorSiteRender = {0x3050F4A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorSubmit = {0x3050F646, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementBehaviorUI = {0x3050F4BF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementNamespace = {0x3050F671, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementNamespaceFactory = {0x3050F672, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementNamespaceFactory2 = {0x3050F805, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementNamespaceFactoryCallback = {0x3050F7FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementNamespacePrivate = {0x3050F7FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementNamespaceTable = {0x3050F670, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IElementSegment = {0x3050F68F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IEmptyVolumeCache = {0x8FCE5227, 0x04DA, 0x11D1, [0xA0, 0x04, 0x00, 0x80, 0x5F, 0x8A, 0xBE, 0x06]}; +enum IID IID_IEmptyVolumeCache2 = {0x02B7E3BA, 0x4DB3, 0x11D2, [0xB2, 0xD9, 0x00, 0xC0, 0x4F, 0x8E, 0xEC, 0x8C]}; +enum IID IID_IEmptyVolumeCacheCallBack = {0x6E793361, 0x73C6, 0x11D0, [0x84, 0x69, 0x00, 0xAA, 0x00, 0x44, 0x29, 0x01]}; +enum IID IID_IEncodingFilterFactory = {0x70BDDE00, 0xC18E, 0x11D0, [0xA9, 0xCE, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; +enum IID IID_IEnroll = {0xACAA7838, 0x4585, 0x11D1, [0xAB, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; +enum IID IID_IEnroll2 = {0xC080E199, 0xB7DF, 0x11D2, [0xA4, 0x21, 0x00, 0xC0, 0x4F, 0x79, 0xFE, 0x8E]}; +enum IID IID_IEnroll4 = {0xF8053FE5, 0x78F4, 0x448F, [0xA0, 0xDB, 0x41, 0xD6, 0x1B, 0x73, 0x44, 0x6B]}; +enum IID IID_IEntryID = {0xE4D19810, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +enum IID IID_IEnumACDGroup = {0x5AFC3157, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_IEnumACString = {0x8E74C210, 0xCF9D, 0x4EAF, [0xA4, 0x03, 0x73, 0x56, 0x42, 0x8F, 0x0A, 0x5A]}; +enum IID IID_IEnumAdapterInfo = {0xA23F9D11, 0x714C, 0x41FE, [0x84, 0x71, 0xFF, 0xB1, 0x9B, 0xC2, 0x84, 0x54]}; +enum IID IID_IEnumAddress = {0x1666FCA1, 0x9363, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_IEnumAgent = {0x5AFC314D, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_IEnumAgentHandler = {0x587E8C28, 0x9802, 0x11D1, [0xA0, 0xA4, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_IEnumAgentSession = {0x5AFC314E, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_IEnumBackgroundCopyFiles = {0xCA51E165, 0xC365, 0x424C, [0x8D, 0x41, 0x24, 0xAA, 0xA4, 0xFF, 0x3C, 0x40]}; +enum IID IID_IEnumBackgroundCopyGroups = {0xD993E603, 0x4AA4, 0x47C5, [0x86, 0x65, 0xC2, 0x0D, 0x39, 0xC2, 0xBA, 0x4F]}; +enum IID IID_IEnumBackgroundCopyJobs = {0x1AF4F612, 0x3B71, 0x466F, [0x8F, 0x58, 0x7B, 0x6F, 0x73, 0xAC, 0x57, 0xAD]}; +enum IID IID_IEnumBackgroundCopyJobs1 = {0x8BAEBA9D, 0x8F1C, 0x42C4, [0xB8, 0x2C, 0x09, 0xAE, 0x79, 0x98, 0x0D, 0x25]}; +enum IID IID_IEnumBstr = {0x35372049, 0x0BC6, 0x11D2, [0xA0, 0x33, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_IEnumCall = {0xAE269CF6, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_IEnumCallback = {0x00000108, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumCallHub = {0xA3C15450, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_IEnumCallingCard = {0x0C4D8F02, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_IEnumCATEGORYINFO = {0x0002E011, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumChannels = {0xA4C65425, 0x0F82, 0x11D1, [0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68]}; +enum IID IID_IEnumClusCfgIPAddresses = {0xBD5F35BA, 0x0BC0, 0x455F, [0x92, 0x6D, 0xC3, 0xD3, 0x56, 0x41, 0x94, 0x86]}; +enum IID IID_IEnumClusCfgManagedResources = {0x7DBE11EB, 0xA5DF, 0x4534, [0xAB, 0xF6, 0x8B, 0xAC, 0x7B, 0x53, 0xFC, 0x95]}; +enum IID IID_IEnumClusCfgNetworks = {0xCF3FAED8, 0x1322, 0x4BCB, [0x99, 0x23, 0xB5, 0xB7, 0x45, 0xA6, 0x9E, 0x36]}; +enum IID IID_IEnumClusCfgPartitions = {0x4440BB6A, 0xB0AC, 0x479D, [0xB5, 0x34, 0x72, 0x65, 0xA3, 0x1D, 0x6C, 0x55]}; +enum IID IID_IEnumCodePage = {0x275C23E3, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; +enum IID IID_IEnumConnectionPoints = {0xB196B285, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IEnumConnections = {0xB196B287, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IEnumCookies = {0x5E3E482E, 0x3C22, 0x482C, [0xB6, 0x64, 0x69, 0x30, 0x51, 0xAD, 0x0A, 0x5D]}; +enum IID IID_IEnumDebugApplicationNodes = {0x51973C3A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IEnumDebugCodeContexts = {0x51973C1D, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IEnumDebugExpressionContexts = {0x51973C40, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IEnumDebugExtendedPropertyInfo = {0x51973C53, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IEnumDebugPropertyInfo = {0x51973C51, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IEnumDebugStackFrames = {0x51973C1E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IEnumDebugStackFrames64 = {0x0DC38853, 0xC1B0, 0x4176, [0xA9, 0x84, 0xB2, 0x98, 0x36, 0x10, 0x27, 0xAF]}; +enum IID IID_IEnumDialableAddrs = {0x34621D70, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +enum IID IID_IEnumDirectory = {0x34621D6D, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +enum IID IID_IEnumDirectoryObject = {0x06C9B64A, 0x306D, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_IEnumDiscMasterFormats = {0xDDF445E1, 0x54BA, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID IID_IEnumDiscRecorders = {0x9B1921E1, 0x54AC, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID IID_IEnumExtraSearch = {0x0E700BE1, 0x9DB6, 0x11D1, [0xA1, 0xCE, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; +enum IID IID_IEnumFORMATETC = {0x00000103, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumGeneric = {0x00000106, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumGUID = {0x0002E000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumHLITEM = {0x79EAC9C6, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IEnumHNetApplicationProtocols = {0x85D18B7B, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IEnumHNetBridgedConnections = {0x85D18B7D, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IEnumHNetBridges = {0x85D18B77, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IEnumHNetFirewalledConnections = {0x85D18B78, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IEnumHNetIcsPrivateConnections = {0x85D18B7A, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IEnumHNetIcsPublicConnections = {0x85D18B79, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IEnumHNetPortMappingBindings = {0x85D18B81, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IEnumHNetPortMappingProtocols = {0x85D18B7C, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IEnumHolder = {0x00000107, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumIDList = {0x000214F2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumInputContext = {0x09B5EAB0, 0xF997, 0x11D1, [0x93, 0xD4, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; +enum IID IID_IEnumItemProperties = {0xF72C8D96, 0x6DBD, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +enum IID IID_IEnumLocation = {0x0C4D8F01, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_IEnumMcastScope = {0xDF0DAF09, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +enum IID IID_IEnumMedia = {0xCA8397BE, 0x2FA4, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_IEnumMoniker = {0x00000102, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumNetCfgBindingInterface = {0xC0E8AE90, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IEnumNetCfgBindingPath = {0xC0E8AE91, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IEnumNetCfgComponent = {0xC0E8AE92, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IEnumNetConnection = {0xC08956A0, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IEnumNetSharingEveryConnection = {0xC08956B8, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IEnumNetSharingPortMapping = {0xC08956B0, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IEnumNetSharingPrivateConnection = {0xC08956B5, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IEnumNetSharingPublicConnection = {0xC08956B4, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IEnumNodes = {0xC477E363, 0xAF0A, 0x4203, [0xA6, 0x04, 0x45, 0xCD, 0x60, 0x7D, 0xD7, 0x10]}; +enum IID IID_IEnumNotification = {0xC733E4A8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_IEnumNotificationSinkItem = {0xC733E4AA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_IEnumOleDocumentViews = {0xB722BCC8, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +enum IID IID_IEnumOleUndoUnits = {0xB3E7C340, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; +enum IID IID_IEnumOLEVERB = {0x00000104, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumParticipant = {0x0A91B56C, 0x5A35, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; +enum IID IID_IEnumPhone = {0xF15B7669, 0x4780, 0x4595, [0x8C, 0x89, 0xFB, 0x36, 0x9C, 0x8C, 0xF7, 0xAA]}; +enum IID IID_IEnumPluggableSuperclassInfo = {0xE9586A80, 0x89E6, 0x4CFF, [0x93, 0x1D, 0x47, 0x8D, 0x57, 0x51, 0xF4, 0xC0]}; +enum IID IID_IEnumPluggableTerminalClassInfo = {0x4567450C, 0xDBEE, 0x4E3F, [0xAA, 0xF5, 0x37, 0xBF, 0x9E, 0xBF, 0x5E, 0x29]}; +enum IID IID_IEnumPrivacyRecords = {0x3050F844, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IEnumPropertyMap = {0xC733E4A1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_IEnumPublishedApps = {0x0B124F8C, 0x91F0, 0x11D1, [0xB8, 0xB5, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; +enum IID IID_IEnumQueue = {0x5AFC3158, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_IEnumRegisterWordA = {0x08C03412, 0xF96B, 0x11D0, [0xA4, 0x75, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +enum IID IID_IEnumRegisterWordW = {0x4955DD31, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +enum IID IID_IEnumRemoteDebugApplications = {0x51973C3B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IEnumRemoteDebugApplicationThrea = {0x51973C3C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IEnumRfc1766 = {0x3DC39D1D, 0xC030, 0x11D0, [0xB8, 0x1B, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; +enum IID IID_IEnumScheduleGroup = {0xC733E4A9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_IEnumScript = {0xAE5F1430, 0x388B, 0x11D2, [0x83, 0x80, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0xA1]}; +enum IID IID_IEnumSTATDATA = {0x00000105, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumSTATPROPBAG = {0x20021801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +enum IID IID_IEnumSTATPROPSETSTG = {0x0000013B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumSTATPROPSTG = {0x00000139, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumSTATSTG = {0x0000000D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumSTATURL = {0x3C374A42, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; +enum IID IID_IEnumStream = {0xEE3BD606, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_IEnumString = {0x00000101, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumSubscription = {0xF72C8D97, 0x6DBD, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +enum IID IID_IEnumSubStream = {0xEE3BD609, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_IEnumSyncItems = {0xF0E1589A, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; +enum IID IID_IEnumSyncSchedules = {0xF0E15898, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; +enum IID IID_IEnumTerminal = {0xAE269CF4, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_IEnumTerminalClass = {0xAE269CF5, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_IEnumTime = {0x9055322E, 0x2FA8, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_IEnumTravelLogEntry = {0x7EBFDD85, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; +enum IID IID_IEnumUnknown = {0x00000100, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumVARIANT = {0x00020404, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IEnumWbemClassObject = {0x027947E1, 0xD731, 0x11CE, [0xA3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]}; +enum IID IID_IErrorInfo = {0x1CF2B120, 0x547D, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; +enum IID IID_IErrorLog = {0x3127CA40, 0x446E, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +enum IID IID_IErrorLookup = {0x0C733A66, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IErrorRecords = {0x0C733A67, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IESP = {0xE99A04AA, 0xAB95, 0x11D0, [0xBE, 0x96, 0x00, 0xA0, 0xC9, 0x49, 0x89, 0xDE]}; +enum IID IID_IExtendObjectManager = {0xCA7BB0B9, 0x700C, 0x4DC5, [0x99, 0x1E, 0x75, 0xF9, 0xE6, 0x5E, 0xE9, 0x75]}; +enum IID IID_IExtensionServices = {0x79EAC9CB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IExternalConnection = {0x00000019, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IExtractIconA = {0x000214EB, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IExtractIconW = {0x000214FA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IExtractImage = {0xBB2E617C, 0x0920, 0x11D1, [0x9A, 0x0B, 0x00, 0xC0, 0x4F, 0xC2, 0xD6, 0xC1]}; +enum IID IID_IExtractImage2 = {0x953BB1EE, 0x93B4, 0x11D1, [0x98, 0xA3, 0x00, 0xC0, 0x4F, 0xB6, 0x87, 0xDA]}; +enum IID IID_IFileSearchBand = {0x2D91EEA1, 0x9932, 0x11D2, [0xBE, 0x86, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; +enum IID IID_IFileSystemBindData = {0x01E18D10, 0x4D8B, 0x11D2, [0x85, 0x5D, 0x00, 0x60, 0x08, 0x05, 0x93, 0x67]}; +enum IID IID_IFileViewerA = {0x000214F0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IFileViewerSite = {0x000214F3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IFileViewerW = {0x000214F8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IFillLockBytes = {0x99CAF010, 0x415E, 0x11CF, [0x88, 0x14, 0x00, 0xAA, 0x00, 0xB5, 0x69, 0xF5]}; +enum IID IID_IFilter = {0x89BCB740, 0x6119, 0x101A, [0xBC, 0xB7, 0x00, 0xDD, 0x01, 0x06, 0x55, 0xAF]}; +enum IID IID_IFilterAnimationInfo = {0x02E29300, 0xC758, 0x49B4, [0x9E, 0x11, 0xC5, 0x8B, 0xFE, 0x90, 0x55, 0x8B]}; +enum IID IID_IFilterStatus = {0xF4EB8260, 0x8DDA, 0x11D1, [0xB3, 0xAA, 0x00, 0xA0, 0xC9, 0x06, 0x37, 0x96]}; +enum IID IID_IFolderFilter = {0x9CC22886, 0xDC8E, 0x11D2, [0xB1, 0xD0, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; +enum IID IID_IFolderFilterSite = {0xC0A651F5, 0xB48B, 0x11D2, [0xB5, 0xED, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6]}; +enum IID IID_IFolderView = {0xCDE725B0, 0xCCC9, 0x4519, [0x91, 0x7E, 0x32, 0x5D, 0x72, 0xFA, 0xB4, 0xCE]}; +enum IID IID_IFolderViewHost = {0x1EA58F02, 0xD55A, 0x411D, [0xB0, 0x9E, 0x9E, 0x65, 0xAC, 0x21, 0x60, 0x5B]}; +enum IID IID_IFolderViewOC = {0x9BA05970, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; +enum IID IID_IFont = {0xBEF6E002, 0xA874, 0x101A, [0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID IID_IFontDisp = {0xBEF6E003, 0xA874, 0x101A, [0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID IID_IFontEventsDisp = {0x4EF6100A, 0xAF88, 0x11D0, [0x98, 0x46, 0x00, 0xC0, 0x4F, 0xC2, 0x99, 0x93]}; +enum IID IID_IFontNames = {0x3050F839, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IForegroundTransfer = {0x00000145, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IFsCiAdmin = {0x75398C30, 0x7A26, 0x11D0, [0xA8, 0x0A, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; +enum IID IID_IGatherData = {0x65318F4A, 0xB63C, 0x4E21, [0xAD, 0xDC, 0xBD, 0xCF, 0xB9, 0x69, 0xE1, 0x81]}; +enum IID IID_IGetClusterDataInfo = {0x97DEDE51, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IGetClusterGroupInfo = {0x97DEDE54, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IGetClusterNetInterfaceInfo = {0x97DEDE57, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IGetClusterNetworkInfo = {0x97DEDE56, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IGetClusterNodeInfo = {0x97DEDE53, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IGetClusterObjectInfo = {0x97DEDE52, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IGetClusterResourceInfo = {0x97DEDE55, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IGetClusterUIInfo = {0x97DEDE50, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IGetDataSource = {0x0C733A75, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IGetRow = {0x0C733AAF, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IGetSession = {0x0C733ABA, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IGetSourceRow = {0x0C733ABB, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IGlobalInterfaceTable = {0x00000146, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IH26XEncodeOptions = {0x65698D40, 0x282D, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IH26XEncoderControl = {0xF9B78AA1, 0xEA12, 0x11CF, [0x9F, 0xEC, 0x00, 0xAA, 0x00, 0xA5, 0x9F, 0x69]}; +enum IID IID_IH26XRTPControl = {0x1FC3F2C0, 0x2BFD, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IH26XSnapshot = {0x3CB194A0, 0x10AA, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IH26XVideoEffects = {0x21555140, 0x9C2B, 0x11CF, [0x90, 0xFA, 0x00, 0xAA, 0x00, 0xA7, 0x29, 0xEA]}; +enum IID IID_IH323LineEx = {0x44CF6A9D, 0xCB40, 0x4BBC, [0xB2, 0xD3, 0xB6, 0xAA, 0x93, 0x32, 0x2C, 0x71]}; +enum IID IID_IHeaderFooter = {0x3050F6CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHighlightRenderingServices = {0x3050F606, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHighlightSegment = {0x3050F690, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHlink = {0x79EAC9C3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IHlinkBrowseContext = {0x79EAC9C7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IHlinkFrame = {0x79EAC9C5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IHlinkSite = {0x79EAC9C2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IHlinkTarget = {0x79EAC9C4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IHNetApplicationProtocol = {0x85D18B7F, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetBridge = {0x85D18B75, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetBridgedConnection = {0x85D18B76, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetBridgeSettings = {0x85D18B6D, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetCfgMgr = {0x85D18B6C, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetConnection = {0x85D18B71, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetFirewalledConnection = {0x85D18B72, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetFirewallSettings = {0x85D18B6E, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetIcsPrivateConnection = {0x85D18B74, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetIcsPublicConnection = {0x85D18B73, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetIcsSettings = {0x85D18B6F, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetPortMappingBinding = {0x85D18B80, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetPortMappingProtocol = {0x85D18B7E, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHNetProtocolSettings = {0x85D18B70, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +enum IID IID_IHomePage = {0x766BF2AF, 0xD650, 0x11D1, [0x98, 0x11, 0x00, 0xC0, 0x4F, 0xC3, 0x1D, 0x2E]}; +enum IID IID_IHostBehaviorInit = {0x3050F842, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHostDialogHelper = {0x53DEC138, 0xA51E, 0x11D2, [0x86, 0x1E, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; +enum IID IID_IHTCAttachBehavior = {0x3050F5F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTCAttachBehavior2 = {0x3050F7EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTCDefaultDispatch = {0x3050F4FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTCDescBehavior = {0x3050F5DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTCEventBehavior = {0x3050F4FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTCMethodBehavior = {0x3050F631, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTCPropertyBehavior = {0x3050F5DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAnchorElement = {0x3050F1DA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAnchorElement2 = {0x3050F825, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAppBehavior = {0x3050F5CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAppBehavior2 = {0x3050F5C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAppBehavior3 = {0x3050F5CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHtmlArea = {0x3050F64E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAreaElement = {0x3050F265, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAreasCollection = {0x3050F383, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAreasCollection2 = {0x3050F5EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAreasCollection3 = {0x3050F837, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAttributeCollection = {0x3050F4C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLAttributeCollection2 = {0x3050F80A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLBaseElement = {0x3050F204, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLBaseFontElement = {0x3050F202, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLBGsound = {0x3050F369, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLBlockElement = {0x3050F208, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLBlockElement2 = {0x3050F823, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLBodyElement = {0x3050F1D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLBodyElement2 = {0x3050F5C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLBookmarkCollection = {0x3050F4CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLBRElement = {0x3050F1F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLButtonElement = {0x3050F2BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLCaret = {0x3050F604, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLChangeLog = {0x3050F649, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLChangePlayback = {0x3050F6E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLChangeSink = {0x3050F64A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLCommentElement = {0x3050F20C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLCommentElement2 = {0x3050F813, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLComputedStyle = {0x3050F6C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLControlElement = {0x3050F4E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLControlRange = {0x3050F29C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLControlRange2 = {0x3050F65E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLCurrentStyle = {0x3050F3DB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLCurrentStyle2 = {0x3050F658, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLCurrentStyle3 = {0x3050F818, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDatabinding = {0x3050F3F2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDataTransfer = {0x3050F4B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDDElement = {0x3050F1F2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDialog = {0x3050F216, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDialog2 = {0x3050F5E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDialog3 = {0x3050F388, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDivElement = {0x3050F200, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDivPosition = {0x3050F212, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHtmlDlgSafeHelper = {0x3050F81A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDListElement = {0x3050F1F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDocument = {0x626FC520, 0xA41E, 0x11CF, [0xA7, 0x31, 0x00, 0xA0, 0xC9, 0x08, 0x26, 0x37]}; +enum IID IID_IHTMLDocument2 = {0x332C4425, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; +enum IID IID_IHTMLDocument3 = {0x3050F485, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDocument4 = {0x3050F69A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDocument5 = {0x3050F80C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDOMAttribute = {0x3050F4B0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDOMAttribute2 = {0x3050F810, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDOMChildrenCollection = {0x3050F5AB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDOMImplementation = {0x3050F80D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDOMNode = {0x3050F5DA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDOMNode2 = {0x3050F80B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDOMTextNode = {0x3050F4B1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDOMTextNode2 = {0x3050F809, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDTElement = {0x3050F1F3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLDXTransform = {0x30E2AB7D, 0x4FDD, 0x4159, [0xB7, 0xEA, 0xDC, 0x72, 0x2B, 0xF4, 0xAD, 0xE5]}; +enum IID IID_IHTMLEditDesigner = {0x3050F662, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLEditHost = {0x3050F6A0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLEditHost2 = {0x3050F848, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0D]}; +enum IID IID_IHTMLEditingServices = {0x3050F7FB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLEditor = {0x3050F7FA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLEditServices = {0x3050F663, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLEditServices2 = {0x3050F812, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLElement = {0x3050F1FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLElement2 = {0x3050F434, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLElement3 = {0x3050F673, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLElement4 = {0x3050F80F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLElementCollection = {0x3050F21F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLElementCollection2 = {0x3050F5EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLElementCollection3 = {0x3050F835, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLElementDefaults = {0x3050F6C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLElementRender = {0x3050F669, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLEmbedElement = {0x3050F25F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLEventObj = {0x3050F32D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLEventObj2 = {0x3050F48B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLEventObj3 = {0x3050F680, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLEventObj4 = {0x3050F814, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFieldSetElement = {0x3050F3E7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFieldSetElement2 = {0x3050F833, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFilterPainter = {0x3050F6DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFilterPaintSite = {0x3050F6D3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFiltersCollection = {0x3050F3EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFontElement = {0x3050F1D9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFontNamesCollection = {0x3050F376, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFontSizesCollection = {0x3050F377, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFormElement = {0x3050F1F7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFormElement2 = {0x3050F4F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFormElement3 = {0x3050F836, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFrameBase = {0x3050F311, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFrameBase2 = {0x3050F6DB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFrameBase3 = {0x3050F82E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFrameElement = {0x3050F313, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFrameElement2 = {0x3050F7F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFramesCollection2 = {0x332C4426, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; +enum IID IID_IHTMLFrameSetElement = {0x3050F319, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLFrameSetElement2 = {0x3050F5C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLGenericElement = {0x3050F4B7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLHeadElement = {0x3050F81D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLHeaderElement = {0x3050F1F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLHRElement = {0x3050F1F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLHtmlElement = {0x3050F81C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLIFrameElement = {0x3050F315, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLIFrameElement2 = {0x3050F4E6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLImageElementFactory = {0x3050F38E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLImgElement = {0x3050F240, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLImgElement2 = {0x3050F826, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLInputButtonElement = {0x3050F2B2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLInputElement = {0x3050F5D2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLInputElement2 = {0x3050F821, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLInputFileElement = {0x3050F2AD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLInputHiddenElement = {0x3050F2A4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLInputImage = {0x3050F2C2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLInputTextElement = {0x3050F2A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLIPrintCollection = {0x3050F6B5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLIsIndexElement = {0x3050F206, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLIsIndexElement2 = {0x3050F82F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLLabelElement = {0x3050F32A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLLabelElement2 = {0x3050F832, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLLegendElement = {0x3050F3EA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLLegendElement2 = {0x3050F834, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLLIElement = {0x3050F1E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLLinkElement = {0x3050F205, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLLinkElement2 = {0x3050F4E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLLinkElement3 = {0x3050F81E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLListElement = {0x3050F20E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLListElement2 = {0x3050F822, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHtmlLoadOptions = {0xA71A0808, 0x0F88, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; +enum IID IID_IHTMLLocation = {0x163BB1E0, 0x6E00, 0x11CF, [0x83, 0x7A, 0x48, 0xDC, 0x04, 0xC1, 0x00, 0x00]}; +enum IID IID_IHTMLMapElement = {0x3050F266, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLMarqueeElement = {0x3050F2B5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLMetaElement = {0x3050F203, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLMetaElement2 = {0x3050F81F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLMimeTypesCollection = {0x3050F3FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLModelessInit = {0x3050F5E4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLNamespace = {0x3050F6BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLNamespaceCollection = {0x3050F6B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLNextIdElement = {0x3050F207, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLNoShowElement = {0x3050F38A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLObjectElement = {0x3050F24F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLObjectElement2 = {0x3050F4CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLObjectElement3 = {0x3050F827, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLOListElement = {0x3050F1DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLOMWindowServices = {0x3050F5FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLOpsProfile = {0x3050F401, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLOptionButtonElement = {0x3050F2BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLOptionElement = {0x3050F211, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLOptionElement2 = {0x3050F697, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLOptionElement3 = {0x3050F820, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLOptionElementFactory = {0x3050F38C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLOptionsHolder = {0x3050F378, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPainter = {0x3050F6A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPainterEventInfo = {0x3050F6DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPainterOverlay = {0x3050F7E3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPaintSite = {0x3050F6A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLParaElement = {0x3050F1F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLParamElement = {0x3050F83D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPersistData = {0x3050F4C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPersistDataOM = {0x3050F4C0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPhraseElement = {0x3050F20A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPhraseElement2 = {0x3050F824, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPluginsCollection = {0x3050F3FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPopup = {0x3050F666, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPrivateWindow = {0x3050F6DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPrivateWindow2 = {0x3050F7E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLPrivateWindow3 = {0x3050F840, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLRect = {0x3050F4A3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLRectCollection = {0x3050F4A4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLRenderStyle = {0x3050F6AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLRuleStyle = {0x3050F3CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLRuleStyle2 = {0x3050F4AC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLRuleStyle3 = {0x3050F657, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLRuleStyle4 = {0x3050F817, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLScreen = {0x3050F35C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLScreen2 = {0x3050F84A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLScriptElement = {0x3050F28B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLScriptElement2 = {0x3050F828, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLSelectElement = {0x3050F244, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLSelectElement2 = {0x3050F5ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLSelectElement3 = {0x3050F687, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLSelectElement4 = {0x3050F838, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLSelectionObject = {0x3050F25A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLSelectionObject2 = {0x3050F7EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLSpanElement = {0x3050F3F3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLSpanFlow = {0x3050F3E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyle = {0x3050F25E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyle2 = {0x3050F4A2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyle3 = {0x3050F656, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyle4 = {0x3050F816, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyleElement = {0x3050F375, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyleFontFace = {0x3050F3D5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyleSheet = {0x3050F2E3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyleSheet2 = {0x3050F3D1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyleSheetPage = {0x3050F7EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyleSheetPagesCollection = {0x3050F7F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyleSheetRule = {0x3050F357, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyleSheetRulesCollection = {0x3050F2E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLStyleSheetsCollection = {0x3050F37E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLSubmitData = {0x3050F645, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTable = {0x3050F21E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTable2 = {0x3050F4AD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTable3 = {0x3050F829, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableCaption = {0x3050F2EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableCell = {0x3050F23D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableCell2 = {0x3050F82D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableCol = {0x3050F23A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableCol2 = {0x3050F82A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableRow = {0x3050F23C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableRow2 = {0x3050F4A1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableRow3 = {0x3050F82C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableRowMetrics = {0x3050F413, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableSection = {0x3050F23B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableSection2 = {0x3050F5C7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTableSection3 = {0x3050F82B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTextAreaElement = {0x3050F2AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTextContainer = {0x3050F230, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTextElement = {0x3050F218, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTextRangeMetrics = {0x3050F40B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTextRangeMetrics2 = {0x3050F4A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTitleElement = {0x3050F322, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTxtRange = {0x3050F220, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLTxtRangeCollection = {0x3050F7ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLUListElement = {0x3050F1DD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLUniqueName = {0x3050F4D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLUnknownElement = {0x3050F209, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLUrnCollection = {0x3050F5E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLUserDataOM = {0x3050F48F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLViewFilter = {0x3050F2F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLViewFilterSite = {0x3050F2F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLWindow2 = {0x332C4427, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; +enum IID IID_IHTMLWindow3 = {0x3050F4AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHTMLWindow4 = {0x3050F6CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IHttpNegotiate = {0x79EAC9D2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IHttpNegotiate2 = {0x4F9F9FCB, 0xE0F4, 0x48EB, [0xB7, 0xAB, 0xFA, 0x2E, 0xA9, 0x36, 0x5C, 0xB4]}; +enum IID IID_IHttpSecurity = {0x79EAC9D7, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IHWEventHandler = {0xC1FB73D0, 0xEC3A, 0x4BA2, [0xB5, 0x12, 0x8C, 0xDB, 0x91, 0x87, 0xB6, 0xD1]}; +enum IID IID_IImageDecodeEventSink = {0xBAA342A0, 0x2DED, 0x11D0, [0x86, 0xF4, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; +enum IID IID_IImageDecodeFilter = {0xA3CCEDF3, 0x2DE2, 0x11D0, [0x86, 0xF4, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; +enum IID IID_IImageList = {0x46EB5926, 0x582E, 0x4017, [0x9F, 0xDF, 0xE8, 0x99, 0x8D, 0xAA, 0x09, 0x50]}; +enum IID IID_IIMEServices = {0x3050F6CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IImgCtx = {0x3050F3D7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IIndexDefinition = {0x0C733A68, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IInputObject = {0x68284FAA, 0x6A48, 0x11D0, [0x8C, 0x78, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xB4]}; +enum IID IID_IInputObjectSite = {0xF1DB8392, 0x7331, 0x11D0, [0x8C, 0x99, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; +enum IID IID_IIntDitherer = {0x06670CA0, 0xECEF, 0x11D0, [0xAA, 0xE7, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; +enum IID IID_IIntelliForms = {0x9B9F68E6, 0x1AAA, 0x11D2, [0xBC, 0xA5, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +enum IID IID_IInterfaceRelated = {0xD1FB5A79, 0x7706, 0x11D1, [0xAD, 0xBA, 0x00, 0xC0, 0x4F, 0xC2, 0xAD, 0xC0]}; +enum IID IID_IInternalMoniker = {0x00000011, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IInternalUnknown = {0x00000021, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IInternet = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetBindInfo = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetConnectionDevice = {0x04DF6137, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; +enum IID IID_IInternetConnectionDeviceClient = {0x04DF6139, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; +enum IID IID_IInternetConnectionDeviceSharedCo = {0x04DF6138, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; +enum IID IID_IInternetHostSecurityManager = {0x3AF280B6, 0xCB3F, 0x11D0, [0x89, 0x1E, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +enum IID IID_IInternetPriority = {0x79EAC9EB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetProtocolInfo = {0x79EAC9EC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetProtocolRoot = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetProtocolSink = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetProtocolSinkStackable = {0x79EAC9F0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetSecurityManager = {0x79EAC9EE, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetSecurityMgrSite = {0x79EAC9ED, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetSession = {0x79EAC9E7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetThreadSwitch = {0x79EAC9E8, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IInternetZoneManager = {0x79EAC9EF, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IIpxAdapterInfo = {0x98133270, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IItemNameLimits = {0x1DF0D7F1, 0xB267, 0x4D28, [0x8B, 0x10, 0x12, 0xE2, 0x32, 0x02, 0xA5, 0xC4]}; +enum IID IID_IJolietDiscMaster = {0xE3BC42CE, 0x4E5C, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID IID_IKeyFrameControl = {0xC3341386, 0xAF91, 0x4EF9, [0x83, 0xB6, 0xBE, 0x37, 0x62, 0xE4, 0x2E, 0xCB]}; +enum IID IID_IKsControl = {0x28F54685, 0x06FD, 0x11D2, [0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96]}; +enum IID IID_IKsPropertySet = {0x31EFAC30, 0x515C, 0x11D0, [0xA9, 0xAA, 0x00, 0xAA, 0x00, 0x61, 0xBE, 0x93]}; +enum IID IID_ILayoutRect = {0x3050F665, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ILayoutStorage = {0x0E6D4D90, 0x6738, 0x11CF, [0x96, 0x08, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; +enum IID IID_ILineInfo = {0x3050F7E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ILocalMachine = {0x60664CAF, 0xAF0D, 0x1005, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +enum IID IID_ILockBytes = {0x0000000A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ILogger = {0xD9598418, 0x304E, 0x4F94, [0xB6, 0xA1, 0xE6, 0x42, 0xFE, 0x95, 0xED, 0x57]}; +enum IID IID_ILogManager = {0x4759DC11, 0x8DA0, 0x4261, [0xBB, 0xFB, 0xEC, 0x32, 0x19, 0x11, 0xD1, 0xC9]}; +enum IID IID_ILogonEnumUsers = {0x60664CAF, 0xAF0D, 0x1004, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +enum IID IID_ILogonStatusHost = {0x60664CAF, 0xAF0D, 0x1007, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +enum IID IID_ILogonUser = {0x60664CAF, 0xAF0D, 0x1003, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +enum IID IID_IMachineDebugManager = {0x51973C2C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IMachineDebugManagerCookie = {0x51973C2D, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IMachineDebugManagerEvents = {0x51973C2E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IMailAutoDiscovery = {0x80402DEE, 0xB114, 0x4D32, [0xB4, 0x4E, 0x82, 0xFD, 0x82, 0x34, 0xC9, 0x2A]}; +enum IID IID_IMailProtocolADEntry = {0x40EF8C68, 0xD554, 0x47ED, [0xAA, 0x37, 0xE5, 0xFB, 0x6B, 0xC9, 0x10, 0x75]}; +enum IID IID_IMalloc = {0x00000002, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IMallocSpy = {0x0000001D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IMapMIMEToCLSID = {0xD9E89500, 0x30FA, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +enum IID IID_IMarkupContainer = {0x3050F5F9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IMarkupContainer2 = {0x3050F648, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IMarkupPointer = {0x3050F49F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IMarkupPointer2 = {0x3050F675, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IMarkupServices = {0x3050F4A0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IMarkupServices2 = {0x3050F682, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IMarkupTextFrags = {0x3050F5FA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IMarshal = {0x00000003, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IMarshal2 = {0x000001CF, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IMcastAddressAllocation = {0xDF0DAEF1, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +enum IID IID_IMcastLeaseInfo = {0xDF0DAEFD, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +enum IID IID_IMcastScope = {0xDF0DAEF4, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +enum IID IID_IMDDataset = {0xA07CCCD1, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +enum IID IID_IMDFind = {0xA07CCCD2, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +enum IID IID_IMDRangeRowset = {0x0C733AA0, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IMessageFilter = {0x00000016, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IMigrationWizardAuto = {0xCE20DAB9, 0xB353, 0x469B, [0x8B, 0x4D, 0x6D, 0xBB, 0x3A, 0x7B, 0xA0, 0x16]}; +enum IID IID_IMimeInfo = {0xF77459A0, 0xBF9A, 0x11CF, [0xBA, 0x4E, 0x00, 0xC0, 0x4F, 0xD7, 0x08, 0x16]}; +enum IID IID_IMLangCodePages = {0x359F3443, 0xBD4A, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +enum IID IID_IMLangConvertCharset = {0xD66D6F98, 0xCDAA, 0x11D0, [0xB8, 0x22, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; +enum IID IID_IMLangFontLink = {0x359F3441, 0xBD4A, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +enum IID IID_IMLangFontLink2 = {0xDCCFC162, 0x2B38, 0x11D2, [0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A]}; +enum IID IID_IMLangLineBreakConsole = {0xF5BE2EE1, 0xBFD7, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +enum IID IID_IMLangString = {0xC04D65CE, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +enum IID IID_IMLangStringAStr = {0xC04D65D2, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +enum IID IID_IMLangStringBufA = {0xD24ACD23, 0xBA72, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +enum IID IID_IMLangStringBufW = {0xD24ACD21, 0xBA72, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +enum IID IID_IMLangStringWStr = {0xC04D65D0, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +enum IID IID_IMofCompiler = {0x6DAF974E, 0x2E37, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IMoniker = {0x0000000F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IMonikerProp = {0xA5CA5F7F, 0x1847, 0x4D87, [0x9C, 0x5B, 0x91, 0x85, 0x09, 0xF7, 0x51, 0x1D]}; +enum IID IID_IMountedVolume = {0x12518492, 0x00B2, 0x11D2, [0x9F, 0xA5, 0x9E, 0x34, 0x20, 0x52, 0x41, 0x53]}; +enum IID IID_IMulticastControl = {0x410FA507, 0x4DC6, 0x415A, [0x90, 0x14, 0x63, 0x38, 0x75, 0xD5, 0x40, 0x6E]}; +enum IID IID_IMultiLanguage = {0x275C23E1, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; +enum IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11D2, [0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A]}; +enum IID IID_IMultiLanguage3 = {0x4E5868AB, 0xB157, 0x4623, [0x9A, 0xCC, 0x6A, 0x1D, 0x9C, 0xAE, 0xBE, 0x04]}; +enum IID IID_IMultiplePropertyAccess = {0xEC81FEDE, 0xD432, 0x11CE, [0x92, 0x44, 0x00, 0x20, 0xAF, 0x6E, 0x72, 0xDB]}; +enum IID IID_IMultipleResults = {0x0C733A90, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IMultiQI = {0x00000020, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_INamedPropertyBag = {0xFB700430, 0x952C, 0x11D1, [0x94, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; +enum IID IID_INATEventManager = {0x624BD588, 0x9060, 0x4109, [0xB0, 0xB0, 0x1A, 0xDB, 0xBC, 0xAC, 0x32, 0xDF]}; +enum IID IID_INATExternalIPAddressCallback = {0x9C416740, 0xA34E, 0x446F, [0xBA, 0x06, 0xAB, 0xD0, 0x4C, 0x31, 0x49, 0xAE]}; +enum IID IID_INATNumberOfEntriesCallback = {0xC83A0A74, 0x91EE, 0x41B6, [0xB6, 0x7A, 0x67, 0xE0, 0xF0, 0x0B, 0xBD, 0x78]}; +enum IID IID_INetCfg = {0xC0E8AE93, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgBindingInterface = {0xC0E8AE94, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgBindingPath = {0xC0E8AE96, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgClass = {0xC0E8AE97, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgClassSetup = {0xC0E8AE9D, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgComponent = {0xC0E8AE99, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgComponentBindings = {0xC0E8AE9E, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgComponentControl = {0x932238DF, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +enum IID IID_INetCfgComponentNotifyBinding = {0x932238E1, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +enum IID IID_INetCfgComponentNotifyGlobal = {0x932238E2, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +enum IID IID_INetCfgComponentPrivate = {0x98133273, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgComponentPropertyUi = {0x932238E0, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +enum IID IID_INetCfgComponentSetup = {0x932238E3, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +enum IID IID_INetCfgComponentSysPrep = {0xC0E8AE9A, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgComponentUpperEdge = {0x932238E4, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +enum IID IID_INetCfgInternalSetup = {0x98133276, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgLock = {0xC0E8AE9F, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgPnpReconfigCallback = {0x8D84BD35, 0xE227, 0x11D2, [0xB7, 0x00, 0x00, 0xA0, 0xC9, 0x8A, 0x6A, 0x85]}; +enum IID IID_INetCfgSpecialCase = {0xC0E8AE95, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCfgSysPrep = {0xC0E8AE98, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnection = {0xC08956A1, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnection2 = {0xFAEDCF6A, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionBrandingInfo = {0xFAEDCF5B, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionCMUtil = {0xFAEDCF60, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionCommonUi = {0xC08956A5, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionConnectUi = {0xC08956A3, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionHNetUtil = {0xFAEDCF64, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionManager = {0xC08956A2, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionManager2 = {0xFAEDCF69, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionManagerDebug = {0xFAEDCF5D, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionManagerEvents = {0xC08956BA, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionNotifySink = {0xFAEDCF5C, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionPropertyUi = {0xC08956A4, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionPropertyUi2 = {0xC08956B9, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionProps = {0xF4277C95, 0xCE5B, 0x463D, [0x81, 0x67, 0x56, 0x62, 0xD9, 0xBC, 0xAA, 0x72]}; +enum IID IID_INetConnectionRefresh = {0xFAEDCF5F, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionSysTray = {0xFAEDCF65, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionUiLock = {0xFAEDCF50, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionUiUtilities = {0xFAEDCF5E, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionWizardUi = {0xFAEDCF51, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetConnectionWizardUiContext = {0xFAEDCF52, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetCrawler = {0x49C929EE, 0xA1B7, 0x4C58, [0xB5, 0x39, 0xE6, 0x3B, 0xE3, 0x92, 0xB6, 0xF3]}; +enum IID IID_INetDefaultConnection = {0xFAEDCF66, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetInboundConnection = {0xFAEDCF53, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetInstallQueue = {0x98133274, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetLanConnection = {0xFAEDCF54, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetLanConnectionUiInfo = {0xC08956A6, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetLanConnectionWizardUi = {0xFAEDCF56, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetMachinePolicies = {0xFAEDCF68, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetRasConnection = {0xFAEDCF57, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetRasConnectionIpUiInfo = {0xFAEDCF58, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetSharedAccessConnection = {0xFAEDCF55, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetSharingConfiguration = {0xC08956B6, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetSharingEveryConnectionCollect = {0x33C4643C, 0x7811, 0x46FA, [0xA8, 0x9A, 0x76, 0x85, 0x97, 0xBD, 0x72, 0x23]}; +enum IID IID_INetSharingManager = {0xC08956B7, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetSharingPortMapping = {0xC08956B1, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_INetSharingPortMappingCollection = {0x02E4A2DE, 0xDA20, 0x4E34, [0x89, 0xC8, 0xAC, 0x22, 0x27, 0x5A, 0x01, 0x0B]}; +enum IID IID_INetSharingPortMappingProps = {0x24B7E9B5, 0xE38F, 0x4685, [0x85, 0x1B, 0x00, 0x89, 0x2C, 0xF5, 0xF9, 0x40]}; +enum IID IID_INetSharingPrivateConnectionColle = {0x38AE69E0, 0x4409, 0x402A, [0xA2, 0xCB, 0xE9, 0x65, 0xC7, 0x27, 0xF8, 0x40]}; +enum IID IID_INetSharingPublicConnectionCollec = {0x7D7A6355, 0xF372, 0x4971, [0xA1, 0x49, 0xBF, 0xC9, 0x27, 0xBE, 0x76, 0x2A]}; +enum IID IID_INewShortcutHookA = {0x000214E1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_INewShortcutHookW = {0x000214F7, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_INewWDEvents = {0x0751C551, 0x7568, 0x41C9, [0x8E, 0x5B, 0xE2, 0x2E, 0x38, 0x91, 0x92, 0x36]}; +enum IID IID_INotification = {0xC733E4A3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_INotificationHelper = {0xC733E4AB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_INotificationManager = {0x95531501, 0x8782, 0x4845, [0x90, 0x1D, 0x31, 0x2F, 0x36, 0xBA, 0x6C, 0x6E]}; +enum IID IID_INotificationMgr = {0xC733E4A4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_INotificationPing = {0xC733E4AC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_INotificationProcessMgr0 = {0xC733E4AE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_INotificationReport = {0xC733E4A7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_INotificationRunning = {0xC733E4AD, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_INotificationSink = {0xC733E4A5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_INotifyDBEvents = {0xDB526CC0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +enum IID IID_INotifyReplica = {0x99180163, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_INotifyUI = {0xE5E8D401, 0x1A37, 0x4FBF, [0x88, 0x0C, 0x82, 0x6C, 0xC8, 0x95, 0x16, 0xFD]}; +enum IID IID_IObjectAccessControl = {0x0C733AA3, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IObjectIdentity = {0xCA04B7E6, 0x0D21, 0x11D1, [0x8C, 0xC5, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; +enum IID IID_IObjectManager = {0xD51351DF, 0x6394, 0x4236, [0x97, 0x83, 0x65, 0xED, 0x05, 0x63, 0x10, 0x68]}; +enum IID IID_IObjectSafety = {0xCB5BDC81, 0x93C1, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID IID_IObjectWithSite = {0xFC4801A3, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID IID_IObjMgr = {0x00BB2761, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +enum IID IID_IOInet = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOInetBindClient = {0x79EAC9E2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOInetBindInfo = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOInetCache = {0x79EAC9EA, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOInetPriority = {0x79EAC9EB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOInetProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOInetProtocolInfo = {0x79EAC9EC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOInetProtocolRoot = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOInetProtocolSink = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOInetSession = {0x79EAC967, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOInetThreadSwitch = {0x79EAC968, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IOldSyncMgrRegister = {0x894D8C55, 0xBDDF, 0x11D1, [0xB8, 0x5D, 0x00, 0xC0, 0x4F, 0xB9, 0x39, 0x81]}; +enum IID IID_IOldSyncMgrSynchronize = {0x6295DF28, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +enum IID IID_IOldSyncMgrSynchronizeCallback = {0x6295DF29, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +enum IID IID_IOleAdviseHolder = {0x00000111, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleCache = {0x0000011E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleCache2 = {0x00000128, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleCacheControl = {0x00000129, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleClientSite = {0x00000118, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleCommandTarget = {0xB722BCCB, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +enum IID IID_IOleContainer = {0x0000011B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleControl = {0xB196B288, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IOleControlSite = {0xB196B289, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IOleDocument = {0xB722BCC5, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +enum IID IID_IOleDocumentSite = {0xB722BCC7, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +enum IID IID_IOleDocumentView = {0xB722BCC6, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +enum IID IID_IOleInPlaceActiveObject = {0x00000117, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleInPlaceFrame = {0x00000116, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleInPlaceObject = {0x00000113, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleInPlaceObjectWindowless = {0x1C2056CC, 0x5EF4, 0x101B, [0x8B, 0xC8, 0x00, 0xAA, 0x00, 0x3E, 0x3B, 0x29]}; +enum IID IID_IOleInPlaceSite = {0x00000119, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleInPlaceSiteEx = {0x9C2CAD80, 0x3424, 0x11CF, [0xB6, 0x70, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; +enum IID IID_IOleInPlaceSiteWindowless = {0x922EADA0, 0x3424, 0x11CF, [0xB6, 0x70, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; +enum IID IID_IOleInPlaceUIWindow = {0x00000115, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleItemContainer = {0x0000011C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleLink = {0x0000011D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleManager = {0x0000011F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleObject = {0x00000112, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleParentUndoUnit = {0xA1FAF330, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; +enum IID IID_IOlePresObj = {0x00000120, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOleUndoManager = {0xD001F200, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; +enum IID IID_IOleUndoUnit = {0x894AD3B0, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; +enum IID IID_IOleWindow = {0x00000114, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOmHistory = {0xFECEAAA2, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; +enum IID IID_IOmNavigator = {0xFECEAAA5, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; +enum IID IID_IOpaqueDataInfo = {0x000001A9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IOpenRowset = {0x0C733A69, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IOplockStorage = {0x8D19C834, 0x8879, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; +enum IID IID_IOpsProfileSimple = {0x7DD1362C, 0x28B6, 0x11D2, [0xBC, 0xA7, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +enum IID IID_IOptionArray = {0x22B6D492, 0x0F88, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; +enum IID IID_IOverlappedCompletion = {0x521A28F0, 0xE40B, 0x11CE, [0xB2, 0xC9, 0x00, 0xAA, 0x00, 0x68, 0x09, 0x37]}; +enum IID IID_IOverlappedStream = {0x49384070, 0xE40A, 0x11CE, [0xB2, 0xC9, 0x00, 0xAA, 0x00, 0x68, 0x09, 0x37]}; +enum IID IID_IParentRowset = {0x0C733AAA, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IParseDisplayName = {0x0000011A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IParser = {0x186442B0, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; +enum IID IID_IParserSession = {0x186442B1, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; +enum IID IID_IParserTreeProperties = {0x186442B2, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; +enum IID IID_IParserVerify = {0x186442B3, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; +enum IID IID_IPassportClientServices = {0xB30F7305, 0x5967, 0x45D1, [0xB7, 0xBC, 0xD6, 0xEB, 0x71, 0x63, 0xD7, 0x70]}; +enum IID IID_IPeerFactory = {0x6663F9D3, 0xB482, 0x11D1, [0x89, 0xC6, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +enum IID IID_IPendingProxyConnection = {0xB68E5043, 0x3E3D, 0x4CC2, [0xB9, 0xC1, 0x5F, 0x8F, 0x88, 0xFE, 0xE8, 0x1C]}; +enum IID IID_IPerPropertyBrowsing = {0x376BD3AA, 0x3845, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; +enum IID IID_IPerPropertyBrowsing2 = {0x51973C54, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IPersist = {0x0000010C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IPersistentDataChannel = {0xA180E934, 0xD92A, 0x415D, [0x91, 0x44, 0x75, 0x9F, 0x80, 0x54, 0xE8, 0xF6]}; +enum IID IID_IPersistFile = {0x0000010B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IPersistFolder = {0x000214EA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IPersistFolder2 = {0x1AC3D9F0, 0x175C, 0x11D1, [0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; +enum IID IID_IPersistFolder3 = {0xCEF04FDF, 0xFE72, 0x11D2, [0x87, 0xA5, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xCF]}; +enum IID IID_IPersistHistory = {0x91A565C1, 0xE38F, 0x11D0, [0x94, 0xBF, 0x00, 0xA0, 0xC9, 0x05, 0x5C, 0xBF]}; +enum IID IID_IPersistIDList = {0x1079ACFC, 0x29BD, 0x11D3, [0x8E, 0x0D, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +enum IID IID_IPersistMemory = {0xBD1AE5E0, 0xA6AE, 0x11CE, [0xBD, 0x37, 0x50, 0x42, 0x00, 0xC1, 0x00, 0x00]}; +enum IID IID_IPersistMoniker = {0x79EAC9C9, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IPersistNetConnection = {0xFAEDCF59, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IPersistPropertyBag = {0x37D84F60, 0x42CB, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +enum IID IID_IPersistPropertyBag2 = {0x22F55881, 0x280B, 0x11D0, [0xA8, 0xA9, 0x00, 0xA0, 0xC9, 0x0C, 0x20, 0x04]}; +enum IID IID_IPersistQuery = {0x1A3114B8, 0xA62E, 0x11D0, [0xA6, 0xC5, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; +enum IID IID_IPersistStorage = {0x0000010A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IPersistStream = {0x00000109, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IPersistStreamInit = {0x7FD52380, 0x4E07, 0x101B, [0xAE, 0x2D, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; +enum IID IID_IPhraseSink = {0xCC906FF0, 0xC058, 0x101A, [0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; +enum IID IID_IPicture = {0x7BF80980, 0xBF32, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID IID_IPictureDisp = {0x7BF80981, 0xBF32, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID IID_IPipeByte = {0xDB2F3ACA, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +enum IID IID_IPipeDouble = {0xDB2F3ACE, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +enum IID IID_IPipeLong = {0xDB2F3ACC, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +enum IID IID_IPointerInactive = {0x55980BA0, 0x35AA, 0x11CF, [0xB6, 0x71, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; +enum IID IID_IPrimaryControlChannel = {0x1A2E8B62, 0x9012, 0x4BE6, [0x84, 0xAE, 0x32, 0xBD, 0x66, 0xBA, 0x65, 0x7A]}; +enum IID IID_IPrint = {0xB722BCC9, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +enum IID IID_IPrintDialogCallback = {0x5852A2C3, 0x6530, 0x11D1, [0xB6, 0xA3, 0x00, 0x00, 0xF8, 0x75, 0x7B, 0xF9]}; +enum IID IID_IPrintDialogServices = {0x509AAEDA, 0x5639, 0x11D1, [0xB6, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x7B, 0xF9]}; +enum IID IID_IPrivacyServices = {0x3050F84B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IPrivateDispatch = {0x86AB4BBE, 0x65F6, 0x11D1, [0x8C, 0x13, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IPrivateUnknown = {0x89126BAB, 0x6EAD, 0x11D1, [0x8C, 0x18, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +enum IID IID_IPrivSyncMgrSynchronizeInvoke = {0x6295DF2E, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +enum IID IID_IProcessDebugManager = {0x51973C2F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IProcessDebugManager32 = {0x51973C2F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IProcessDebugManager64 = {0x56B9FC1C, 0x63A9, 0x4CC1, [0xAC, 0x21, 0x08, 0x7D, 0x69, 0xA1, 0x7F, 0xAB]}; +enum IID IID_IProcessInitControl = {0x72380D55, 0x8D2B, 0x43A3, [0x85, 0x13, 0x2B, 0x6E, 0xF3, 0x14, 0x34, 0xE9]}; +enum IID IID_IProfferService = {0xCB728B20, 0xF786, 0x11CE, [0x92, 0xAD, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xD0]}; +enum IID IID_IProgressDialog = {0xEBBC7C04, 0x315E, 0x11D2, [0xB6, 0x2F, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; +enum IID IID_IProgressNotify = {0xA9D758A0, 0x4617, 0x11CF, [0x95, 0xFC, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; +enum IID IID_IProgSink = {0x3050F371, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IPropertyBag = {0x55272A00, 0x42CB, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +enum IID IID_IPropertyBag2 = {0x22F55882, 0x280B, 0x11D0, [0xA8, 0xA9, 0x00, 0xA0, 0xC9, 0x0C, 0x20, 0x04]}; +enum IID IID_IPropertyBagEx = {0x20011801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +enum IID IID_IPropertyFrame = {0xB196B28A, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IPropertyMap = {0xC733E4A2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_IPropertyMapper = {0xB324B226, 0x41A0, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +enum IID IID_IPropertyNotifySink = {0x9BFBBC02, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IPropertyPage = {0xB196B28D, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IPropertyPage2 = {0x01E44665, 0x24AC, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; +enum IID IID_IPropertyPageSite = {0xB196B28C, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IPropertySetContainer = {0xB4FFAE60, 0xA7CA, 0x11CD, [0xB5, 0x8B, 0x00, 0x00, 0x6B, 0x82, 0x91, 0x56]}; +enum IID IID_IPropertySetStorage = {0x0000013A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IPropertyStorage = {0x00000138, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IPropertyUI = {0x757A7D9F, 0x919A, 0x4118, [0x99, 0xD7, 0xDB, 0xB2, 0x08, 0xC8, 0xCC, 0x66]}; +enum IID IID_IPropSheetPage = {0x000214F6, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IProvideClassInfo = {0xB196B283, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_IProvideClassInfo2 = {0xA6BC3AC0, 0xDBAA, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +enum IID IID_IProvideExpressionContexts = {0x51973C41, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IProvideMoniker = {0x0C733A4D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IProvideMultipleClassInfo = {0xA7ABA9C1, 0x8983, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID IID_IProxy = {0x00000027, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IProxyManager = {0x00000008, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IPSFactory = {0x00000009, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IPSFactoryBuffer = {0xD5F569D0, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; +enum IID IID_IPublishedApp = {0x1BC752E0, 0x9046, 0x11D1, [0xB8, 0xB3, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; +enum IID IID_IPublishingWizard = {0xAA9198BB, 0xCCEC, 0x472D, [0xBE, 0xED, 0x19, 0xA4, 0xF6, 0x73, 0x3F, 0x7A]}; +enum IID IID_IQualityControl = {0x6BC096AB, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +enum IID IID_IQuery = {0x0C733A51, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IQueryAssociations = {0xC46CA590, 0x3C3F, 0x11D2, [0xBE, 0xE6, 0x00, 0x00, 0xF8, 0x05, 0xCA, 0x57]}; +enum IID IID_IQueryCancelAutoPlay = {0xDDEFE873, 0x6997, 0x4E68, [0xBE, 0x26, 0x39, 0xB6, 0x33, 0xAD, 0xBE, 0x12]}; +enum IID IID_IQueryContinue = {0x7307055C, 0xB24A, 0x486B, [0x9F, 0x25, 0x16, 0x3E, 0x59, 0x7A, 0x28, 0xA9]}; +enum IID IID_IQueryForm = {0x8CFCEE30, 0x39BD, 0x11D0, [0xB8, 0xD1, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; +enum IID IID_IQueryFrame = {0x7E8C7C20, 0x7C9D, 0x11D0, [0x91, 0x3F, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +enum IID IID_IQueryHandler = {0xA60CC73F, 0xE0FC, 0x11D0, [0x97, 0x50, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; +enum IID IID_IQueryInfo = {0x00021500, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IQuickActivate = {0xCF51ED10, 0x62FE, 0x11CF, [0xBF, 0x86, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0x36]}; +enum IID IID_IRadioButton = {0x3050F69B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IRatingNotification = {0x639447BD, 0xB2D3, 0x44B9, [0x9F, 0xB0, 0x51, 0x0F, 0x23, 0xCB, 0x45, 0xE4]}; +enum IID IID_IReadData = {0x0C733A6A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IReadEvents = {0xF64AEFDE, 0x3376, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; +enum IID IID_IRecalcEngine = {0x3050F496, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IRecalcHost = {0x3050F497, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IRecalcHostDebug = {0x3050F5F7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IRecalcProperty = {0x3050F5D6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IReconcilableObject = {0x99180162, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IReconcileInitiator = {0x99180161, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IRecordInfo = {0x0000002F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IRedbookDiscMaster = {0xE3BC42CD, 0x4E5C, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID IID_IReferenceClock = {0x56A86897, 0x0AD4, 0x11CE, [0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +enum IID IID_IRegisterProvider = {0x0C733AB9, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRegisterVirusScanEngine = {0x0825E060, 0xB961, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; +enum IID IID_IReleaseMarshalBuffers = {0xEB0CB9E8, 0x7996, 0x11D2, [0x87, 0x2E, 0x00, 0x00, 0xF8, 0x08, 0x08, 0x59]}; +enum IID IID_IRemoteCallBack = {0x8947C648, 0x3833, 0x11D1, [0x86, 0x82, 0x00, 0xC0, 0x4F, 0xBF, 0xE1, 0x71]}; +enum IID IID_IRemoteComputer = {0x000214FE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IRemoteDebugApplication = {0x51973C30, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IRemoteDebugApplicationEvents = {0x51973C33, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IRemoteDebugApplicationEx = {0x51973C01, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IRemoteDebugApplicationThread = {0x51973C37, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_IRemoteDebugApplicationThreadEx = {0xB9B32B0C, 0x9147, 0x11D1, [0x94, 0xEA, 0x00, 0xC0, 0x4F, 0xA3, 0x02, 0xA1]}; +enum IID IID_IRemoteDelaydC = {0x394540A0, 0x6FCF, 0x11D0, [0xAC, 0xE0, 0x00, 0x00, 0xF8, 0x01, 0x14, 0xD3]}; +enum IID IID_IRemoteESP = {0xE99A04AB, 0xAB95, 0x11D0, [0xBE, 0x96, 0x00, 0xA0, 0xC9, 0x49, 0x89, 0xDE]}; +enum IID IID_IRemoteFinder = {0x944AD532, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +enum IID IID_IRemoteStats = {0x944AD531, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +enum IID IID_IRequest = {0x6BC096A7, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +enum IID IID_IRequestHandler = {0x6BC096AA, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +enum IID IID_IRequestSource = {0x6BC096A9, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +enum IID IID_IRequestState = {0x6BC096BA, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +enum IID IID_IResolveShellLink = {0x5CD52983, 0x9449, 0x11D2, [0x96, 0x3A, 0x00, 0xC0, 0x4F, 0x79, 0xAD, 0xF0]}; +enum IID IID_IRichEditOle = {0x00020D00, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IRichEditOleCallback = {0x00020D03, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IRootStorage = {0x00000012, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IROTData = {0xF29F6BC0, 0x5021, 0x11CE, [0xAA, 0x15, 0x00, 0x00, 0x69, 0x01, 0x29, 0x3F]}; +enum IID IID_IRow = {0x0C733AB4, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowChange = {0x0C733AB5, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowInfo = {0x0C733AC1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowPosition = {0x0C733A94, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowPositionChange = {0x0997A571, 0x126E, 0x11D0, [0x9F, 0x8A, 0x00, 0xA0, 0xC9, 0xA0, 0x63, 0x1E]}; +enum IID IID_IRowSchemaChange = {0x0C733AAE, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowset = {0x0C733A7C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetAsynch = {0x0C733A0F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetBookmark = {0x0C733AC2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetChange = {0x0C733A05, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetChapterMember = {0x0C733AA8, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetCopyRows = {0x0C733A6B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetCurrentIndex = {0x0C733ABD, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetExactScroll = {0x0C733A7F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetFind = {0x0C733A9D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetIdentity = {0x0C733A09, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetIndex = {0x0C733A82, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetInfo = {0x0C733A55, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetKeys = {0x0C733A12, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetLocate = {0x0C733A7D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetNewRowAfter = {0x0C733A71, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetNextRowset = {0x0C733A72, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetNotify = {0x0C733A83, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetQueryStatus = {0xA7AC77ED, 0xF8D7, 0x11CE, [0xA7, 0x98, 0x00, 0x20, 0xF8, 0x00, 0x80, 0x24]}; +enum IID IID_IRowsetRefresh = {0x0C733AA9, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetResynch = {0x0C733A84, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetScroll = {0x0C733A7E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetUpdate = {0x0C733A6D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetView = {0x0C733A99, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetWatchAll = {0x0C733A73, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetWatchNotify = {0x0C733A44, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetWatchRegion = {0x0C733A45, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRowsetWithParameters = {0x0C733A6E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IRpcChannel = {0x00000004, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IRpcChannelBuffer = {0xD5F56B60, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; +enum IID IID_IRpcChannelBuffer2 = {0x594F31D0, 0x7F19, 0x11D0, [0xB1, 0x94, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0xBF]}; +enum IID IID_IRpcChannelBuffer3 = {0x25B15600, 0x0115, 0x11D0, [0xBF, 0x0D, 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xD2]}; +enum IID IID_IRpcHelper = {0x00000149, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IRpcOptions = {0x00000144, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IRpcProxy = {0x00000007, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IRpcProxyBuffer = {0xD5F56A34, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; +enum IID IID_IRpcStub = {0x00000005, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IRpcStubBuffer = {0xD5F56AFC, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; +enum IID IID_IRpcSyntaxNegotiate = {0x58A08519, 0x24C8, 0x4935, [0xB4, 0x82, 0x3F, 0xD8, 0x23, 0x33, 0x3A, 0x4F]}; +enum IID IID_IRTC = {0x4811EA40, 0xB582, 0x11CE, [0xB5, 0xAF, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +enum IID IID_IRTCBuddy = {0xFCB136C8, 0x7B90, 0x4E0C, [0xBE, 0xFE, 0x56, 0xED, 0xF0, 0xBA, 0x6F, 0x1C]}; +enum IID IID_IRTCBuddyEvent = {0xF36D755D, 0x17E6, 0x404E, [0x95, 0x4F, 0x0F, 0xC0, 0x75, 0x74, 0xC7, 0x8D]}; +enum IID IID_IRTCClient = {0x07829E45, 0x9A34, 0x408E, [0xA0, 0x11, 0xBD, 0xDF, 0x13, 0x48, 0x7C, 0xD1]}; +enum IID IID_IRTCClientEvent = {0x2B493B7A, 0x3CBA, 0x4170, [0x9C, 0x8B, 0x76, 0xA9, 0xDA, 0xCD, 0xD6, 0x44]}; +enum IID IID_IRTCClientPresence = {0x11C3CBCC, 0x0744, 0x42D1, [0x96, 0x8A, 0x51, 0xAA, 0x1B, 0xB2, 0x74, 0xC6]}; +enum IID IID_IRTCClientProvisioning = {0xB9F5CF06, 0x65B9, 0x4A80, [0xA0, 0xE6, 0x73, 0xCA, 0xE3, 0xEF, 0x38, 0x22]}; +enum IID IID_IRTCCollection = {0xEC7C8096, 0xB918, 0x4044, [0x94, 0xF1, 0xE4, 0xFB, 0xA0, 0x36, 0x1D, 0x5C]}; +enum IID IID_IRTCEnumBuddies = {0xF7296917, 0x5569, 0x4B3B, [0xB3, 0xAF, 0x98, 0xD1, 0x14, 0x4B, 0x2B, 0x87]}; +enum IID IID_IRTCEnumParticipants = {0xFCD56F29, 0x4A4F, 0x41B2, [0xBA, 0x5C, 0xF5, 0xBC, 0xCC, 0x06, 0x0B, 0xF6]}; +enum IID IID_IRTCEnumProfiles = {0x29B7C41C, 0xED82, 0x4BCA, [0x84, 0xAD, 0x39, 0xD5, 0x10, 0x1B, 0x58, 0xE3]}; +enum IID IID_IRTCEnumWatchers = {0xA87D55D7, 0xDB74, 0x4ED1, [0x9C, 0xA4, 0x77, 0xA0, 0xE4, 0x1B, 0x41, 0x3E]}; +enum IID IID_IRTCEventNotification = {0x13FA24C7, 0x5748, 0x4B21, [0x91, 0xF5, 0x73, 0x97, 0x60, 0x9C, 0xE7, 0x47]}; +enum IID IID_IRTCIntensityEvent = {0x4C23BF51, 0x390C, 0x4992, [0xA4, 0x1D, 0x41, 0xEE, 0xC0, 0x5B, 0x2A, 0x4B]}; +enum IID IID_IRTCMediaEvent = {0x099944FB, 0xBCDA, 0x453E, [0x8C, 0x41, 0xE1, 0x3D, 0xA2, 0xAD, 0xF7, 0xF3]}; +enum IID IID_IRTCMessagingEvent = {0xD3609541, 0x1B29, 0x4DE5, [0xA4, 0xAD, 0x5A, 0xEB, 0xAF, 0x31, 0x95, 0x12]}; +enum IID IID_IRTCParticipant = {0xAE86ADD5, 0x26B1, 0x4414, [0xAF, 0x1D, 0xB9, 0x4C, 0xD9, 0x38, 0xD7, 0x39]}; +enum IID IID_IRTCParticipantStateChangeEvent = {0x09BCB597, 0xF0FA, 0x48F9, [0xB4, 0x20, 0x46, 0x8C, 0xEA, 0x7F, 0xDE, 0x04]}; +enum IID IID_IRTCPresenceContact = {0x8B22F92C, 0xCD90, 0x42DB, [0xA7, 0x33, 0x21, 0x22, 0x05, 0xC3, 0xE3, 0xDF]}; +enum IID IID_IRTCProfile = {0xD07ECA9E, 0x4062, 0x4DD4, [0x9E, 0x7D, 0x72, 0x2A, 0x49, 0xBA, 0x73, 0x03]}; +enum IID IID_IRTCProfileEvent = {0xD6D5AB3B, 0x770E, 0x43E8, [0x80, 0x0A, 0x79, 0xB0, 0x62, 0x39, 0x5F, 0xCA]}; +enum IID IID_IRTCRegistrationStateChangeEvent = {0x62D0991B, 0x50AB, 0x4F02, [0xB9, 0x48, 0xCA, 0x94, 0xF2, 0x6F, 0x8F, 0x95]}; +enum IID IID_IRTCSession = {0x387C8086, 0x99BE, 0x42FB, [0x99, 0x73, 0x7C, 0x0F, 0xC0, 0xCA, 0x9F, 0xA8]}; +enum IID IID_IRTCSessionOperationCompleteEven = {0xA6BFF4C0, 0xF7C8, 0x4D3C, [0x9A, 0x41, 0x35, 0x50, 0xF7, 0x8A, 0x95, 0xB0]}; +enum IID IID_IRTCSessionStateChangeEvent = {0xB5BAD703, 0x5952, 0x48B3, [0x93, 0x21, 0x7F, 0x45, 0x00, 0x52, 0x15, 0x06]}; +enum IID IID_IRTCWatcher = {0xC7CEDAD8, 0x346B, 0x4D1B, [0xAC, 0x02, 0xA2, 0x08, 0x8D, 0xF9, 0xBE, 0x4F]}; +enum IID IID_IRTCWatcherEvent = {0xF30D7261, 0x587A, 0x424F, [0x82, 0x2C, 0x31, 0x27, 0x88, 0xF4, 0x35, 0x48]}; +enum IID IID_IRunnableObject = {0x00000126, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IRunnableTask = {0x85788D00, 0x6807, 0x11D0, [0xB8, 0x10, 0x00, 0xC0, 0x4F, 0xD7, 0x06, 0xEC]}; +enum IID IID_IRunningObjectTable = {0x00000010, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IScheduleGroup = {0xC733E4A6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID IID_IScopedOperations = {0x0C733AB0, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IScriptEntry = {0x0AEE2A95, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; +enum IID IID_IScriptErrorList = {0xF3470F24, 0x15FD, 0x11D2, [0xBB, 0x2E, 0x00, 0x80, 0x5F, 0xF7, 0xEF, 0xCA]}; +enum IID IID_IScriptNode = {0x0AEE2A94, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; +enum IID IID_IScriptScriptlet = {0x0AEE2A96, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; +enum IID IID_IScrollBar = {0x3050F689, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISdo = {0x56BC53DE, 0x96DB, 0x11D1, [0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; +enum IID IID_ISdoCollection = {0x56BC53E2, 0x96DB, 0x11D1, [0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; +enum IID IID_ISdoDictionaryOld = {0xD432E5F4, 0x53D8, 0x11D2, [0x9A, 0x3A, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0xAC]}; +enum IID IID_ISdoMachine = {0x479F6E75, 0x49A2, 0x11D2, [0x8E, 0xCA, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x19]}; +enum IID IID_ISdoServiceControl = {0x479F6E74, 0x49A2, 0x11D2, [0x8E, 0xCA, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x19]}; +enum IID IID_ISearch = {0xBA9239A4, 0x3DD5, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; +enum IID IID_ISearchAssistantOC = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; +enum IID IID_ISearchAssistantOC2 = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA2]}; +enum IID IID_ISearchAssistantOC3 = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA3]}; +enum IID IID_ISearchCommandExt = {0x1D2EFD50, 0x75CE, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +enum IID IID_ISearchContext = {0x09F656A2, 0x41AF, 0x480C, [0x88, 0xF7, 0x16, 0xCC, 0x0D, 0x16, 0x46, 0x15]}; +enum IID IID_ISearches = {0x47C922A2, 0x3DD5, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; +enum IID IID_ISearchQueryHits = {0xED8CE7E0, 0x106C, 0x11CE, [0x84, 0xE2, 0x00, 0xAA, 0x00, 0x4B, 0x99, 0x86]}; +enum IID IID_ISecondaryControlChannel = {0xA23F9D10, 0x714C, 0x41FE, [0x84, 0x71, 0xFF, 0xB1, 0x9B, 0xC2, 0x84, 0x54]}; +enum IID IID_ISecureUrlHost = {0xC81984C4, 0x74C8, 0x11D2, [0xBA, 0xA9, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; +enum IID IID_ISecurityInfo = {0x0C733AA4, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ISegment = {0x3050F683, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISegmentList = {0x3050F605, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISegmentListIterator = {0x3050F692, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISelectionObject2 = {0x3050F7FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISelectionServices = {0x3050F684, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISelectionServicesListener = {0x3050F699, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISensLogon = {0xD597BAB3, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +enum IID IID_ISensLogon2 = {0xD597BAB4, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +enum IID IID_ISensNetwork = {0xD597BAB1, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +enum IID IID_ISensOnNow = {0xD597BAB2, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +enum IID IID_ISequenceNumber = {0x3050F6C1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISequentialStream = {0x0C733A30, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IServerSecurity = {0x0000013E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IServiceProvider = {0x6D5140C1, 0x7436, 0x11CE, [0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA]}; +enum IID IID_ISessionProperties = {0x0C733A85, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ISetNextStatement = {0x51973C03, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_ISharedAccessBeacon = {0xFAEDCF6B, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_ISharedAccessBeaconFinder = {0xFAEDCF67, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_IShellApp = {0xA3E14960, 0x935F, 0x11D1, [0xB8, 0xB8, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; +enum IID IID_IShellBrowser = {0x000214E2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellChangeNotify = {0xD82BE2B1, 0x5764, 0x11D0, [0xA9, 0x6E, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; +enum IID IID_IShellCopyHookA = {0x000214EF, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellCopyHookW = {0x000214FC, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellDetails = {0x000214EC, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellDetails3 = {0xD2A105C0, 0x87D5, 0x11D1, [0x83, 0x91, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; +enum IID IID_IShellDispatch = {0xD8F015C0, 0xC278, 0x11CE, [0xA4, 0x9E, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IShellDispatch2 = {0xA4C6892C, 0x3BA9, 0x11D2, [0x9D, 0xEA, 0x00, 0xC0, 0x4F, 0xB1, 0x61, 0x62]}; +enum IID IID_IShellDispatch3 = {0x177160CA, 0xBB5A, 0x411C, [0x84, 0x1D, 0xBD, 0x38, 0xFA, 0xCD, 0xEA, 0xA0]}; +enum IID IID_IShellDispatch4 = {0xEFD84B2D, 0x4BCF, 0x4298, [0xBE, 0x25, 0xEB, 0x54, 0x2A, 0x59, 0xFB, 0xDA]}; +enum IID IID_IShellExecuteHookA = {0x000214F5, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellExecuteHookW = {0x000214FB, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellExtInit = {0x000214E8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellFavoritesNameSpace = {0x55136804, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; +enum IID IID_IShellFolder = {0x000214E6, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellFolder2 = {0x93F2F68C, 0x1D1B, 0x11D3, [0xA3, 0x0E, 0x00, 0xC0, 0x4F, 0x79, 0xAB, 0xD1]}; +enum IID IID_IShellFolderViewCB = {0x2047E320, 0xF2A9, 0x11CE, [0xAE, 0x65, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62]}; +enum IID IID_IShellFolderViewDual = {0xE7A1AF80, 0x4D96, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; +enum IID IID_IShellFolderViewDual2 = {0x31C147B6, 0x0ADE, 0x4A3C, [0xB5, 0x14, 0xDD, 0xF9, 0x32, 0xEF, 0x6D, 0x17]}; +enum IID IID_IShellIcon = {0x000214E5, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellIconOverlay = {0x7D688A70, 0xC613, 0x11D0, [0x99, 0x9B, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; +enum IID IID_IShellIconOverlayIdentifier = {0x0C6C4200, 0xC589, 0x11D0, [0x99, 0x9A, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; +enum IID IID_IShellImageData = {0xBFDEEC12, 0x8040, 0x4403, [0xA5, 0xEA, 0x9E, 0x07, 0xDA, 0xFC, 0xF5, 0x30]}; +enum IID IID_IShellImageDataAbort = {0x53FB8E58, 0x50C0, 0x4003, [0xB4, 0xAA, 0x0C, 0x8D, 0xF2, 0x8E, 0x7F, 0x3A]}; +enum IID IID_IShellImageDataFactory = {0x9BE8ED5C, 0xEDAB, 0x4D75, [0x90, 0xF3, 0xBD, 0x5B, 0xDB, 0xB2, 0x1C, 0x82]}; +enum IID IID_IShellLinkA = {0x000214EE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellLinkDataList = {0x45E2B4AE, 0xB1C3, 0x11D0, [0xB9, 0x2F, 0x00, 0xA0, 0xC9, 0x03, 0x12, 0xE1]}; +enum IID IID_IShellLinkDual = {0x88A05C00, 0xF000, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +enum IID IID_IShellLinkDual2 = {0x317EE249, 0xF12E, 0x11D2, [0xB1, 0xE4, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; +enum IID IID_IShellLinkW = {0x000214F9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellNameSpace = {0xE572D3C9, 0x37BE, 0x4AE2, [0x82, 0x5D, 0xD5, 0x21, 0x76, 0x3E, 0x31, 0x08]}; +enum IID IID_IShellPropSheetExt = {0x000214E9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellUIHelper = {0x729FE2F8, 0x1EA8, 0x11D1, [0x8F, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +enum IID IID_IShellView = {0x000214E3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IShellView2 = {0x88E39E80, 0x3578, 0x11CF, [0xAE, 0x69, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62]}; +enum IID IID_IShellWindows = {0x85CB6900, 0x4D95, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; +enum IID IID_ISimpleCommandCreator = {0x5E341AB7, 0x02D0, 0x11D1, [0x90, 0x0C, 0x00, 0xA0, 0xC9, 0x06, 0x37, 0x96]}; +enum IID IID_ISimpleConnectionPoint = {0x51973C3E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +enum IID IID_ISimpleFrameSite = {0x742B0E01, 0x14E6, 0x101B, [0x91, 0x4E, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +enum IID IID_ISliderBar = {0x3050F68D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISniffStream = {0x4EF17940, 0x30E0, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +enum IID IID_ISOAPRequest = {0xAD194525, 0x6E01, 0x4BCA, [0x92, 0x9C, 0x23, 0xC7, 0x38, 0x33, 0x36, 0xAF]}; +enum IID IID_ISoftDistExt = {0xB15B8DC1, 0xC7E1, 0x11D0, [0x86, 0x80, 0x00, 0xAA, 0x00, 0xBD, 0xCB, 0x71]}; +enum IID IID_ISourcesRowset = {0x0C733A1E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ISpecialSystemProperties = {0x000001B9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ISpecifyPropertyPages = {0xB196B28B, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +enum IID IID_ISpinButton = {0x3050F68B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISQLErrorInfo = {0x0C733A74, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IStandardActivator = {0x000001B8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IStandardInfo = {0xF1D9C1A5, 0x9589, 0x40DD, [0xB6, 0x3D, 0x9B, 0xB0, 0xB3, 0x8A, 0x10, 0x22]}; +enum IID IID_IStaticPortMapping = {0x6F10711F, 0x729B, 0x41E5, [0x93, 0xB8, 0xF2, 0x1D, 0x0F, 0x81, 0x8D, 0xF1]}; +enum IID IID_IStaticPortMappingCollection = {0xCD1F3E77, 0x66D6, 0x4664, [0x82, 0xC7, 0x36, 0xDB, 0xB6, 0x41, 0xD0, 0xF1]}; +enum IID IID_IStats = {0x944AD530, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +enum IID IID_IStdMarshalInfo = {0x00000018, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IStemmer = {0xEFBAF140, 0x7F42, 0x11CE, [0xBE, 0x57, 0x00, 0xAA, 0x00, 0x51, 0xFE, 0x20]}; +enum IID IID_IStemSink = {0xFE77C330, 0x7F42, 0x11CE, [0xBE, 0x57, 0x00, 0xAA, 0x00, 0x51, 0xFE, 0x20]}; +enum IID IID_IStorage = {0x0000000B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IStream = {0x0000000C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IStub = {0x00000026, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IStubManager = {0x00000006, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ISubDivisionProvider = {0x3050F4D2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ISubscriptionAgentControl = {0xA89E8FF0, 0x70F4, 0x11D1, [0xBC, 0x7F, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +enum IID IID_ISubscriptionAgentEvents = {0xA89E8FF1, 0x70F4, 0x11D1, [0xBC, 0x7F, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +enum IID IID_ISubscriptionAgentShellExt = {0x81B184BA, 0xB302, 0x11D1, [0x85, 0x52, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; +enum IID IID_ISubscriptionItem = {0xA97559F8, 0x6C4A, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +enum IID IID_ISubscriptionMgr = {0x085FB2C0, 0x0DF8, 0x11D1, [0x8F, 0x4B, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x3F]}; +enum IID IID_ISubscriptionMgr2 = {0x614BC270, 0xAEDF, 0x11D1, [0xA1, 0xF9, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +enum IID IID_ISubscriptionMgrPriv = {0xD66B399E, 0xAF1D, 0x11D1, [0xA1, 0xF9, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +enum IID IID_ISubscriptionThrottler = {0x1E9B00E4, 0x9846, 0x11D1, [0xA1, 0xEE, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +enum IID IID_ISupportErrorInfo = {0xDF0B3D60, 0x548F, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; +enum IID IID_ISurrogate = {0x00000022, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ISWbemDateTime = {0x5E97458A, 0xCF77, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +enum IID IID_ISWbemEventSource = {0x27D54D92, 0x0EBE, 0x11D2, [0x8B, 0x22, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemLastError = {0xD962DB84, 0xD4BB, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemLocator = {0x76A6415B, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemMethod = {0x422E8E90, 0xD955, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemMethodSet = {0xC93BA292, 0xD955, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemNamedValue = {0x76A64164, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemNamedValueSet = {0xCF2376EA, 0xCE8C, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemObject = {0x76A6415A, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemObjectEx = {0x269AD56A, 0x8A67, 0x4129, [0xBC, 0x8C, 0x05, 0x06, 0xDC, 0xFE, 0x98, 0x80]}; +enum IID IID_ISWbemObjectPath = {0x5791BC27, 0xCE9C, 0x11D1, [0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C]}; +enum IID IID_ISWbemObjectSet = {0x76A6415F, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemPrivilege = {0x26EE67BD, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemPrivilegeSet = {0x26EE67BF, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemProperty = {0x1A388F98, 0xD4BA, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemPropertySet = {0xDEA0A7B2, 0xD4BA, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemQualifier = {0x79B05932, 0xD3B7, 0x11D1, [0x8B, 0x06, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemQualifierSet = {0x9B16ED16, 0xD3DF, 0x11D1, [0x8B, 0x08, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemRefreshableItem = {0x5AD4BF92, 0xDAAB, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +enum IID IID_ISWbemRefresher = {0x14D8250E, 0xD9C2, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +enum IID IID_ISWbemSecurity = {0xB54D66E6, 0x2287, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemServices = {0x76A6415C, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID IID_ISWbemServicesEx = {0xD2F68443, 0x85DC, 0x427E, [0x91, 0xD8, 0x36, 0x65, 0x54, 0xCC, 0x75, 0x4C]}; +enum IID IID_ISWbemSink = {0x75718C9F, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; +enum IID IID_ISynchronize = {0x00000030, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ISynchronizeContainer = {0x00000033, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ISynchronizedCallBack = {0x74C26041, 0x70D1, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +enum IID IID_ISynchronizeEvent = {0x00000032, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ISynchronizeHandle = {0x00000031, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ISynchronizeMutex = {0x00000025, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ISyncMgrEnumItems = {0x6295DF2A, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +enum IID IID_ISyncMgrRegisterCSC = {0x47681A61, 0xBC74, 0x11D2, [0xB5, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x39, 0x81]}; +enum IID IID_ISyncMgrSynchronizeInvoke = {0x6295DF2C, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +enum IID IID_ISyncSchedule = {0xF0E15899, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; +enum IID IID_ISyncScheduleMgr = {0xF0E15897, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; +enum IID IID_ISyncSchedulep = {0xF0E1589B, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; +enum IID IID_ITableCreation = {0x0C733ABC, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ITableDefinition = {0x0C733A86, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ITableDefinitionWithConstraints = {0x0C733AAB, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ITableRename = {0x0C733A77, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ITACDGroup = {0x5AFC3148, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITACDGroupEvent = {0x297F3032, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITAddress = {0xB1EFC386, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_ITAddress2 = {0xB0AE5D9B, 0xBE51, 0x46C9, [0xB0, 0xF7, 0xDF, 0xA8, 0xA2, 0x2A, 0x8B, 0xC4]}; +enum IID IID_ITAddressCapabilities = {0x8DF232F5, 0x821B, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITAddressDeviceSpecificEvent = {0x3ACB216B, 0x40BD, 0x487A, [0x86, 0x72, 0x5C, 0xE7, 0x7B, 0xD7, 0xE3, 0xA3]}; +enum IID IID_ITAddressEvent = {0x831CE2D1, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITAddressTranslation = {0x0C4D8F03, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITAddressTranslationInfo = {0xAFC15945, 0x8D40, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITAgent = {0x5770ECE5, 0x4B27, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITAgentEvent = {0x5AFC314A, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITAgentHandler = {0x587E8C22, 0x9802, 0x11D1, [0xA0, 0xA4, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITAgentHandlerEvent = {0x297F3034, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITAgentSession = {0x5AFC3147, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITAgentSessionEvent = {0x5AFC314B, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITAllocatorProperties = {0xC1BC3C90, 0xBCFE, 0x11D1, [0x97, 0x45, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_ITAMMediaFormat = {0x0364EB00, 0x4A77, 0x11D1, [0xA6, 0x71, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xE8]}; +enum IID IID_ITargetContainer = {0x7847EC01, 0x2BEC, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; +enum IID IID_ITargetEmbedding = {0x548793C0, 0x9E74, 0x11CF, [0x96, 0x55, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0x23]}; +enum IID IID_ITargetFrame = {0xD5F78C80, 0x5252, 0x11CF, [0x90, 0xFA, 0x00, 0xAA, 0x00, 0x42, 0x10, 0x6E]}; +enum IID IID_ITargetFrame2 = {0x86D52E11, 0x94A8, 0x11D0, [0x82, 0xAF, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; +enum IID IID_ITargetFramePriv = {0x9216E421, 0x2BF5, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; +enum IID IID_ITargetNotify = {0x863A99A0, 0x21BC, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; +enum IID IID_ITargetNotify2 = {0x3050F6B1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ITaskAnalyzeCluster = {0x795737A1, 0xE13A, 0x45EB, [0x8D, 0xFD, 0x81, 0x85, 0xC4, 0xB7, 0xAD, 0x4E]}; +enum IID IID_ITaskbarList = {0x56FDF342, 0xFD6D, 0x11D0, [0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90]}; +enum IID IID_ITaskbarList2 = {0x602D4995, 0xB13A, 0x429B, [0xA6, 0x6E, 0x19, 0x35, 0xE4, 0x4F, 0x43, 0x17]}; +enum IID IID_ITaskCommitClusterChanges = {0x1BF12DDE, 0xF8B0, 0x49B1, [0xA4, 0x58, 0x67, 0x47, 0xDB, 0x78, 0x8A, 0x47]}; +enum IID IID_ITaskCompareAndPushInformation = {0xD4F1C2AF, 0xB370, 0x49DE, [0x87, 0x68, 0x40, 0x10, 0xB5, 0x68, 0x63, 0x6C]}; +enum IID IID_ITaskGatherClusterInfo = {0xE167965C, 0xC5D6, 0x493C, [0xA3, 0x43, 0x4C, 0x10, 0x5C, 0x01, 0xDD, 0xE7]}; +enum IID IID_ITaskGatherInformation = {0xB9AAF3F8, 0x238E, 0x4993, [0xBA, 0x31, 0x14, 0x85, 0x98, 0x04, 0xF9, 0x2C]}; +enum IID IID_ITaskGatherNodeInfo = {0xF19A2E01, 0x2CB3, 0x47B4, [0x8F, 0x5D, 0xB9, 0x77, 0x17, 0x6B, 0x45, 0xC8]}; +enum IID IID_ITaskGetDomains = {0xDFCB4ACD, 0xC4DB, 0x4DB4, [0x8E, 0xBB, 0x1D, 0xD0, 0x7A, 0x9D, 0x5B, 0x82]}; +enum IID IID_ITaskGetDomainsCallback = {0x85402E44, 0x6834, 0x41DF, [0x85, 0x90, 0x01, 0x82, 0x7D, 0x12, 0x4E, 0x1B]}; +enum IID IID_ITaskLoginDomain = {0x76AD8E51, 0x53C3, 0x4347, [0x89, 0x5D, 0x6C, 0x30, 0xF4, 0x13, 0x93, 0x74]}; +enum IID IID_ITaskLoginDomainCallback = {0xEFAF3C43, 0x7A8F, 0x469B, [0xB8, 0xBB, 0xC8, 0x0C, 0x57, 0x47, 0xCE, 0x05]}; +enum IID IID_ITaskManager = {0x16116694, 0xDFC5, 0x470B, [0xAC, 0x12, 0x46, 0xFB, 0xB0, 0x1C, 0xEF, 0x10]}; +enum IID IID_ITaskPollingCallback = {0x49E92395, 0x66AF, 0x4ADD, [0xA4, 0x1E, 0x43, 0x51, 0x2C, 0xB5, 0x19, 0xB3]}; +enum IID IID_ITaskVerifyIPAddress = {0x0C95E1B1, 0x0CFF, 0x4740, [0x8A, 0xBD, 0x69, 0x91, 0x2D, 0x10, 0x5B, 0xD1]}; +enum IID IID_ITASRTerminalEvent = {0xEE016A02, 0x4FA9, 0x467C, [0x93, 0x3F, 0x5A, 0x15, 0xB1, 0x23, 0x77, 0xD7]}; +enum IID IID_ITAttributeList = {0x5037FB82, 0xCAE9, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_ITAudioDeviceControl = {0x6C0AB6C5, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +enum IID IID_ITAudioSettings = {0x6C0AB6C6, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +enum IID IID_ITAutomatedPhoneControl = {0x1EE1AF0E, 0x6159, 0x4A61, [0xB7, 0x9B, 0x6A, 0x4B, 0xA3, 0xFC, 0x9D, 0xFC]}; +enum IID IID_ITBasicAudioTerminal = {0xB1EFC38D, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_ITBasicCallControl = {0xB1EFC389, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_ITBasicCallControl2 = {0x161A4A56, 0x1E99, 0x4B3F, [0xA4, 0x6A, 0x16, 0x8F, 0x38, 0xA5, 0xEE, 0x4C]}; +enum IID IID_ITCallHub = {0xA3C1544E, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITCallHubEvent = {0xA3C15451, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITCallInfo = {0x350F85D1, 0x1227, 0x11D3, [0x83, 0xD4, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITCallInfo2 = {0x94D70CA6, 0x7AB0, 0x4DAA, [0x81, 0xCA, 0xB8, 0xF8, 0x64, 0x3F, 0xAE, 0xC1]}; +enum IID IID_ITCallInfoChangeEvent = {0x5D4B65F9, 0xE51C, 0x11D1, [0xA0, 0x2F, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITCallingCard = {0x0C4D8F00, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITCallMediaEvent = {0xFF36B87F, 0xEC3A, 0x11D0, [0x8E, 0xE4, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITCallNotificationEvent = {0x895801DF, 0x3DD6, 0x11D1, [0x8F, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITCallQualityControl = {0xFE1D8AE0, 0xEDC4, 0x49B5, [0x8F, 0x8C, 0x4D, 0xE4, 0x0F, 0x9C, 0xDF, 0xAF]}; +enum IID IID_ITCallStateEvent = {0x62F47097, 0x95C9, 0x11D0, [0x83, 0x5D, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_ITCollection = {0x5EC5ACF2, 0x9C02, 0x11D0, [0x83, 0x62, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_ITCollection2 = {0xE6DDDDA5, 0xA6D3, 0x48FF, [0x87, 0x37, 0xD3, 0x2F, 0xC4, 0xD9, 0x54, 0x77]}; +enum IID IID_ITConferenceBlob = {0xC259D7AA, 0xC8AB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_ITConnection = {0x8FA381D4, 0xC8C2, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_ITcpipProperties = {0x98133271, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +enum IID IID_ITCustomTone = {0x357AD764, 0xB3C6, 0x4B2A, [0x8F, 0xA5, 0x07, 0x22, 0x82, 0x7A, 0x92, 0x54]}; +enum IID IID_ITDetectTone = {0x961F79BD, 0x3097, 0x49DF, [0xA1, 0xD6, 0x90, 0x9B, 0x77, 0xE8, 0x9C, 0xA0]}; +enum IID IID_ITDigitDetectionEvent = {0x80D3BFAC, 0x57D9, 0x11D2, [0xA0, 0x4A, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITDigitGenerationEvent = {0x80D3BFAD, 0x57D9, 0x11D2, [0xA0, 0x4A, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITDigitsGatheredEvent = {0xE52EC4C1, 0xCBA3, 0x441A, [0x9E, 0x6A, 0x93, 0xCB, 0x90, 0x9E, 0x97, 0x24]}; +enum IID IID_ITDirectory = {0x34621D6C, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +enum IID IID_ITDirectoryObject = {0x34621D6E, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +enum IID IID_ITDirectoryObjectConference = {0xF1029E5D, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_ITDirectoryObjectUser = {0x34621D6F, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +enum IID IID_ITDispatchMapper = {0xE9225295, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITemplatePrinter = {0x3050F6B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ITemplatePrinter2 = {0x3050F83F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ITFileTerminalEvent = {0xE4A7FBAC, 0x8C17, 0x4427, [0x9F, 0x55, 0x9F, 0x58, 0x9A, 0xC8, 0xAF, 0x00]}; +enum IID IID_ITFileTrack = {0x31CA6EA9, 0xC08A, 0x4BEA, [0x88, 0x11, 0x8E, 0x9C, 0x1B, 0xA3, 0xEA, 0x3A]}; +enum IID IID_ITfLangBarAddIn = {0xC9ADDAC3, 0x15CB, 0x4957, [0xB9, 0x3C, 0xDB, 0x08, 0x73, 0xFF, 0x98, 0xBB]}; +enum IID IID_ITFormatControl = {0x6C0AB6C1, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +enum IID IID_ITForwardInformation = {0x449F659E, 0x88A3, 0x11D1, [0xBB, 0x5D, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITForwardInformation2 = {0x5229B4ED, 0xB260, 0x4382, [0x8E, 0x1A, 0x5D, 0xF3, 0xA8, 0xA4, 0xCC, 0xC0]}; +enum IID IID_ITfSpeechUIServer = {0x90E9A944, 0x9244, 0x489F, [0xA7, 0x8F, 0xDE, 0x67, 0xAF, 0xC0, 0x13, 0xA7]}; +enum IID IID_IThumbnailCapture = {0x4EA39266, 0x7211, 0x409F, [0xB6, 0x22, 0xF6, 0x3D, 0xBD, 0x16, 0xC5, 0x33]}; +enum IID IID_IThumbnailExtractor = {0x969DC708, 0x5C76, 0x11D1, [0x8D, 0x86, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; +enum IID IID_ITILSConfig = {0x34621D72, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +enum IID IID_ITIMEActiveElementCollection = {0x403E2540, 0x4520, 0x11D3, [0x93, 0xAB, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x38]}; +enum IID IID_ITimeAndNoticeControl = {0xBC0BF6AE, 0x8878, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; +enum IID IID_ITIMEAnimationElement = {0xA74F14B1, 0xB6A2, 0x430A, [0xA5, 0xE8, 0x1F, 0x4E, 0x53, 0xF7, 0x10, 0xFE]}; +enum IID IID_ITIMEAnimationElement2 = {0x29CE8661, 0xBD43, 0x421A, [0xB6, 0x16, 0xE9, 0xB3, 0x1F, 0x33, 0xA5, 0x72]}; +enum IID IID_ITIMEBodyElement = {0x8C90E348, 0xEC0A, 0x4229, [0x90, 0xB0, 0xE5, 0x7D, 0x2C, 0xA4, 0x5C, 0xCB]}; +enum IID IID_ITIMEDMusicPlayerObject = {0x407954F5, 0x2BAB, 0x4CFA, [0x95, 0x4D, 0x24, 0x9F, 0x9F, 0xCE, 0x43, 0xA1]}; +enum IID IID_ITIMEDVDPlayerObject = {0x3AF7AB68, 0x4F29, 0x462C, [0xAA, 0x6E, 0x58, 0x72, 0x44, 0x88, 0x99, 0xE3]}; +enum IID IID_ITIMEElement = {0x1C2EF64E, 0xF07D, 0x4338, [0x97, 0x71, 0x91, 0x54, 0x49, 0x1C, 0xD8, 0xB9]}; +enum IID IID_ITIMEElementCollection = {0x50ABC224, 0x6D53, 0x4F83, [0x91, 0x35, 0x24, 0x40, 0xA4, 0x1B, 0x7B, 0xC8]}; +enum IID IID_ITIMEFactory = {0xCD51E446, 0x3006, 0x434F, [0x90, 0xE2, 0xE3, 0x7E, 0x8F, 0xB8, 0xCA, 0x8F]}; +enum IID IID_ITIMEMediaElement = {0x47A6972F, 0xAE65, 0x4A6B, [0xAE, 0x63, 0xD0, 0xC1, 0xD5, 0x30, 0x7B, 0x58]}; +enum IID IID_ITIMEMediaElement2 = {0x9EE29400, 0x7EE6, 0x453A, [0x85, 0xB3, 0x4E, 0xC2, 0x8E, 0x03, 0x05, 0xB4]}; +enum IID IID_ITIMEMediaPlayer = {0xEA4A95BE, 0xACC9, 0x4BF0, [0x85, 0xA4, 0x1B, 0xF3, 0xC5, 0x1E, 0x43, 0x1C]}; +enum IID IID_ITIMEMediaPlayerAudio = {0xFFAACFDA, 0xB374, 0x4F22, [0xAC, 0x9A, 0xC5, 0xBB, 0x94, 0x37, 0xCB, 0x56]}; +enum IID IID_ITIMEMediaPlayerControl = {0x897A99E7, 0xF386, 0x45C8, [0xB5, 0x1B, 0x3A, 0x25, 0xBB, 0xCB, 0xBA, 0x69]}; +enum IID IID_ITIMEMediaPlayerNetwork = {0xB9987FCA, 0x7FBB, 0x4015, [0xBD, 0x3D, 0x74, 0x18, 0x60, 0x55, 0x14, 0xDA]}; +enum IID IID_ITIMEMediaPlayerSite = {0xBF0571ED, 0x344F, 0x4F58, [0x82, 0xC7, 0x74, 0x31, 0xED, 0x0F, 0xD8, 0x34]}; +enum IID IID_ITIMEPlayItem = {0x2A6096D9, 0x2CE0, 0x47DC, [0xA8, 0x13, 0x90, 0x99, 0xA2, 0x46, 0x63, 0x09]}; +enum IID IID_ITIMEPlayItem2 = {0x4262CD38, 0x6BDC, 0x40A4, [0xBC, 0x50, 0x4C, 0xC5, 0x03, 0x66, 0xE7, 0x02]}; +enum IID IID_ITIMEPlayList = {0xE9B75B62, 0xDD97, 0x4B19, [0x8F, 0xD9, 0x96, 0x46, 0x29, 0x29, 0x52, 0xE0]}; +enum IID IID_ITimer = {0x3050F360, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ITimerService = {0x3050F35F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ITimerSink = {0x3050F361, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ITIMEState = {0xDD5EC62A, 0x9D77, 0x4573, [0x80, 0xA8, 0x75, 0x85, 0x94, 0xE6, 0x9C, 0xEA]}; +enum IID IID_ITIMETransitionElement = {0xF383D66F, 0x5E68, 0x4FC2, [0xB6, 0x41, 0x03, 0x67, 0x2B, 0x54, 0x3A, 0x49]}; +enum IID IID_ITLegacyAddressMediaControl = {0xAB493640, 0x4C0B, 0x11D2, [0xA0, 0x46, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITLegacyAddressMediaControl2 = {0xB0EE512B, 0xA531, 0x409E, [0x9D, 0xD9, 0x40, 0x99, 0xFE, 0x86, 0xC7, 0x38]}; +enum IID IID_ITLegacyCallMediaControl = {0xD624582F, 0xCC23, 0x4436, [0xB8, 0xA5, 0x47, 0xC6, 0x25, 0xC8, 0x04, 0x5D]}; +enum IID IID_ITLegacyCallMediaControl2 = {0x57CA332D, 0x7BC2, 0x44F1, [0xA6, 0x0C, 0x93, 0x6F, 0xE8, 0xD7, 0xCE, 0x73]}; +enum IID IID_ITLegacyWaveSupport = {0x207823EA, 0xE252, 0x11D2, [0xB7, 0x7E, 0x00, 0x80, 0xC7, 0x13, 0x53, 0x81]}; +enum IID IID_ITLocalParticipant = {0x39CBF055, 0xF77A, 0x11D2, [0xA8, 0x24, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +enum IID IID_ITLocationInfo = {0x0C4D8EFF, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITMedia = {0x0CC1F053, 0xCAEB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_ITMediaCollection = {0x6A8E16A2, 0x0ABC, 0x11D1, [0x97, 0x6D, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_ITMediaControl = {0xC445DDE8, 0x5199, 0x4BC7, [0x98, 0x07, 0x5F, 0xFB, 0x92, 0xE4, 0x2E, 0x09]}; +enum IID IID_ITMediaPlayback = {0x627E8AE6, 0xAE4C, 0x4A69, [0xBB, 0x63, 0x2A, 0xD6, 0x25, 0x40, 0x4B, 0x77]}; +enum IID IID_ITMediaRecord = {0xF5DD4592, 0x5476, 0x4CC1, [0x9D, 0x4D, 0xFA, 0xD3, 0xEE, 0xFE, 0x7D, 0xB2]}; +enum IID IID_ITMediaSupport = {0xB1EFC384, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_ITMSPAddress = {0xEE3BD600, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITMultiTrackTerminal = {0xFE040091, 0xADE8, 0x4072, [0x95, 0xC9, 0xBF, 0x7D, 0xE8, 0xC5, 0x4B, 0x44]}; +enum IID IID_ITParticipant = {0x5899B820, 0x5A34, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; +enum IID IID_ITParticipantControl = {0xD2EE6684, 0x5A34, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; +enum IID IID_ITParticipantEvent = {0x8BB35070, 0x2DAD, 0x11D3, [0xA5, 0x80, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +enum IID IID_ITParticipantSubStreamControl = {0x2C679108, 0x5A35, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; +enum IID IID_ITPhone = {0x09D48DB4, 0x10CC, 0x4388, [0x9D, 0xE7, 0xA8, 0x46, 0x56, 0x18, 0x97, 0x5A]}; +enum IID IID_ITPhoneDeviceSpecificEvent = {0x63FFB2A6, 0x872B, 0x4CD3, [0xA5, 0x01, 0x32, 0x6E, 0x8F, 0xB4, 0x0A, 0xF7]}; +enum IID IID_ITPhoneEvent = {0x8F942DD8, 0x64ED, 0x4AAF, [0xA7, 0x7D, 0xB2, 0x3D, 0xB0, 0x83, 0x7E, 0xAD]}; +enum IID IID_ITPluggableTerminalClassInfo = {0x41757F4A, 0xCF09, 0x4B34, [0xBC, 0x96, 0x0A, 0x79, 0xD2, 0x39, 0x00, 0x76]}; +enum IID IID_ITPluggableTerminalClassRegistrat = {0x924A3723, 0xA00B, 0x4F5F, [0x9F, 0xEE, 0x8E, 0x9A, 0xEB, 0x9E, 0x82, 0xAA]}; +enum IID IID_ITPluggableTerminalEventSink = {0x6E0887BE, 0xBA1A, 0x492E, [0xBD, 0x10, 0x40, 0x20, 0xEC, 0x5E, 0x33, 0xE0]}; +enum IID IID_ITPluggableTerminalEventSinkRegis = {0xF7115709, 0xA216, 0x4957, [0xA7, 0x59, 0x06, 0x0A, 0xB3, 0x2A, 0x90, 0xD1]}; +enum IID IID_ITPluggableTerminalInitializatio = {0xAED6483C, 0x3304, 0x11D2, [0x86, 0xF1, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +enum IID IID_ITPluggableTerminalSuperclassInf = {0x6D54E42C, 0x4625, 0x4359, [0xA6, 0xF7, 0x63, 0x19, 0x99, 0x10, 0x7E, 0x05]}; +enum IID IID_ITPluggableTerminalSuperclassRegi = {0x60D3C08A, 0xC13E, 0x4195, [0x9A, 0xB0, 0x8D, 0xE7, 0x68, 0x09, 0x0F, 0x25]}; +enum IID IID_ITPrivateEvent = {0x0E269CD0, 0x10D4, 0x4121, [0x9C, 0x22, 0x9C, 0x85, 0xD6, 0x25, 0x65, 0x0D]}; +enum IID IID_ITQOSApplicationID = {0xE8C89D27, 0xA3BD, 0x47D5, [0xA6, 0xFC, 0xD2, 0xAE, 0x40, 0xCD, 0xBC, 0x6E]}; +enum IID IID_ITQOSEvent = {0xCFA3357C, 0xAD77, 0x11D1, [0xBB, 0x68, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITQueue = {0x5AFC3149, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITQueueEvent = {0x297F3033, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITrackFile = {0x8790C948, 0xA30B, 0x11D0, [0x8C, 0xAB, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; +enum IID IID_ITransaction = {0x0FB15084, 0xAF41, 0x11CE, [0xBD, 0x2B, 0x20, 0x4C, 0x4F, 0x4F, 0x50, 0x20]}; +enum IID IID_ITransaction2 = {0x34021548, 0x0065, 0x11D3, [0xBA, 0xC1, 0x00, 0xC0, 0x4F, 0x79, 0x7B, 0xE2]}; +enum IID IID_ITransactionCloner = {0x02656950, 0x2152, 0x11D0, [0x94, 0x4C, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x6E]}; +enum IID IID_ITransactionDispenser = {0x3A6AD9E1, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; +enum IID IID_ITransactionJoin = {0x0C733A5E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ITransactionLocal = {0x0C733A5F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ITransactionObject = {0x0C733A60, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ITransactionOptions = {0x3A6AD9E0, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; +enum IID IID_ITransactionOutcomeEvents = {0x3A6AD9E2, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; +enum IID IID_ITransmt = {0xB3C9F150, 0xB593, 0x11CE, [0xB5, 0xB0, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +enum IID IID_ITravelEntry = {0xF46EDB3B, 0xBC2F, 0x11D0, [0x94, 0x12, 0x00, 0xAA, 0x00, 0xA3, 0xEB, 0xD3]}; +enum IID IID_ITravelLog = {0x66A9CB08, 0x4802, 0x11D2, [0xA5, 0x61, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; +enum IID IID_ITravelLogClient = {0x3050F67A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ITravelLogClient2 = {0x0AD364CE, 0xADCB, 0x11D3, [0x82, 0x69, 0x00, 0x80, 0x5F, 0xC7, 0x32, 0xC0]}; +enum IID IID_ITravelLogEntry = {0x7EBFDD87, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; +enum IID IID_ITravelLogEx = {0x3050F679, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_ITravelLogStg = {0x7EBFDD80, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; +enum IID IID_ITRendezvous = {0x34621D6B, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +enum IID IID_ITRequest = {0xAC48FFDF, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITRequestEvent = {0xAC48FFDE, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITridentEventSink = {0x1DC9CA50, 0x06EF, 0x11D2, [0x84, 0x15, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; +enum IID IID_ITrkForceOwnership = {0xA2531F44, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; +enum IID IID_ITrkRestoreNotify = {0xD0056F6B, 0xE2A0, 0x11D0, [0xB1, 0xC2, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +enum IID IID_ITrkRestoreParser = {0x755939E3, 0xE381, 0x11D0, [0xB1, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +enum IID IID_ITrusteeAdmin = {0x0C733AA1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ITrusteeGroupAdmin = {0x0C733AA2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_ITScriptableAudioFormat = {0xB87658BD, 0x3C59, 0x4F64, [0xBE, 0x74, 0xAE, 0xDE, 0x3E, 0x86, 0xA8, 0x1E]}; +enum IID IID_ITSdp = {0x9B2719D8, 0xB696, 0x11D0, [0xA4, 0x89, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_ITStaticAudioTerminal = {0xA86B7871, 0xD14C, 0x48E6, [0x92, 0x2E, 0xA8, 0xD1, 0x5F, 0x98, 0x48, 0x00]}; +enum IID IID_ITStream = {0xEE3BD605, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITStreamControl = {0xEE3BD604, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITStreamQualityControl = {0x6C0AB6C2, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +enum IID IID_ITSubStream = {0xEE3BD608, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITSubStreamControl = {0xEE3BD607, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITTAPI = {0xB1EFC382, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_ITTAPI2 = {0x54FBDC8C, 0xD90F, 0x4DAD, [0x96, 0x95, 0xB3, 0x73, 0x09, 0x7F, 0x09, 0x4B]}; +enum IID IID_ITTAPICallCenter = {0x5AFC3154, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +enum IID IID_ITTAPIEventNotification = {0xEDDB9426, 0x3B91, 0x11D1, [0x8F, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITTAPIObjectEvent = {0xF4854D48, 0x937A, 0x11D1, [0xBB, 0x58, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID IID_ITTAPIObjectEvent2 = {0x359DDA6E, 0x68CE, 0x4383, [0xBF, 0x0B, 0x16, 0x91, 0x33, 0xC4, 0x1B, 0x46]}; +enum IID IID_ITTerminal = {0xB1EFC38A, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_ITTerminalControl = {0xAED6483B, 0x3304, 0x11D2, [0x86, 0xF1, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +enum IID IID_ITTerminalManager = {0x7170F2DE, 0x9BE3, 0x11D0, [0xA0, 0x09, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; +enum IID IID_ITTerminalManager2 = {0xBB33DEC6, 0xB2C7, 0x46E6, [0x9E, 0xD1, 0x49, 0x8B, 0x91, 0xFA, 0x85, 0xAC]}; +enum IID IID_ITTerminalSupport = {0xB1EFC385, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID IID_ITTerminalSupport2 = {0xF3EB39BC, 0x1B1F, 0x4E99, [0xA0, 0xC0, 0x56, 0x30, 0x5C, 0x4D, 0xD5, 0x91]}; +enum IID IID_ITTime = {0x2652BB78, 0x1516, 0x11D1, [0x97, 0x71, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_ITTimeCollection = {0x0CC1F04F, 0xCAEB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID IID_ITToneDetectionEvent = {0x407E0FAF, 0xD047, 0x4753, [0xB0, 0xC6, 0x8E, 0x06, 0x03, 0x73, 0xFE, 0xCD]}; +enum IID IID_ITToneTerminalEvent = {0xE6F56009, 0x611F, 0x4945, [0xBB, 0xD2, 0x2D, 0x0C, 0xE5, 0x61, 0x20, 0x56]}; +enum IID IID_ITTTSTerminalEvent = {0xD964788F, 0x95A5, 0x461D, [0xAB, 0x0C, 0xB9, 0x90, 0x0A, 0x6C, 0x27, 0x13]}; +enum IID IID_ITypeChangeEvents = {0x00020410, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ITypeComp = {0x00020403, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ITypeFactory = {0x0000002E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ITypeInfo = {0x00020401, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ITypeInfo2 = {0x00020412, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ITypeLib = {0x00020402, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ITypeLib2 = {0x00020411, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_ITypeMarshal = {0x0000002D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IUmiADSIPrivate = {0xCFCECB01, 0x3123, 0x4926, [0xB5, 0xE3, 0x62, 0x78, 0x08, 0x27, 0x26, 0x43]}; +enum IID IID_IUniformResourceLocatorA = {0xFBF23B80, 0xE3F0, 0x101B, [0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8]}; +enum IID IID_IUniformResourceLocatorW = {0xCABB0DA0, 0xDA57, 0x11CF, [0x99, 0x74, 0x00, 0x20, 0xAF, 0xD7, 0x97, 0x62]}; +enum IID IID_IUnknown = {0x00000000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IUnsecuredApartment = {0x1CFABA8C, 0x1523, 0x11D1, [0xAD, 0x79, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID IID_IUPnPDescriptionDocument = {0x11D1C1B2, 0x7DAA, 0x4C9E, [0x95, 0x95, 0x7F, 0x82, 0xED, 0x20, 0x6D, 0x1E]}; +enum IID IID_IUPnPDescriptionDocumentCallback = {0x77394C69, 0x5486, 0x40D6, [0x9B, 0xC3, 0x49, 0x91, 0x98, 0x3E, 0x02, 0xDA]}; +enum IID IID_IUPnPDevice = {0x3D44D0D1, 0x98C9, 0x4889, [0xAC, 0xD1, 0xF9, 0xD6, 0x74, 0xBF, 0x22, 0x21]}; +enum IID IID_IUPnPDeviceControl = {0x204810BA, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +enum IID IID_IUPnPDeviceDocumentAccess = {0xE7772804, 0x3287, 0x418E, [0x90, 0x72, 0xCF, 0x2B, 0x47, 0x23, 0x89, 0x81]}; +enum IID IID_IUPnPDeviceFinder = {0xADDA3D55, 0x6F72, 0x4319, [0xBF, 0xF9, 0x18, 0x60, 0x0A, 0x53, 0x9B, 0x10]}; +enum IID IID_IUPnPDeviceFinderAddCallbackWithI = {0x983DFC0B, 0x1796, 0x44DF, [0x89, 0x75, 0xCA, 0x54, 0x5B, 0x62, 0x0E, 0xE5]}; +enum IID IID_IUPnPDeviceFinderCallback = {0x415A984A, 0x88B3, 0x49F3, [0x92, 0xAF, 0x05, 0x08, 0xBE, 0xDF, 0x0D, 0x6C]}; +enum IID IID_IUPnPDeviceHostICSSupport = {0x3FFC5AE5, 0xA66B, 0x499C, [0xA1, 0x80, 0xC7, 0x39, 0x3D, 0xB6, 0xBA, 0x8D]}; +enum IID IID_IUPnPDeviceHostSetup = {0x6BD34909, 0x54E7, 0x4FBF, [0x85, 0x62, 0x7B, 0x89, 0x70, 0x9A, 0x58, 0x9A]}; +enum IID IID_IUPnPDeviceProvider = {0x204810B8, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +enum IID IID_IUPnPDevices = {0xFDBC0C73, 0xBDA3, 0x4C66, [0xAC, 0x4F, 0xF2, 0xD9, 0x6F, 0xDA, 0xD6, 0x8C]}; +enum IID IID_IUPnPEventSink = {0x204810B4, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +enum IID IID_IUPnPEventSource = {0x204810B5, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +enum IID IID_IUPnPNAT = {0xB171C812, 0xCC76, 0x485A, [0x94, 0xD8, 0xB6, 0xB3, 0xA2, 0x79, 0x4E, 0x99]}; +enum IID IID_IUPnPPrivateCallbackHelper = {0x8DCC8327, 0xDBE9, 0x48E6, [0x84, 0x6C, 0x33, 0x72, 0x58, 0x65, 0xD5, 0x0C]}; +enum IID IID_IUPnPPrivateDocumentCallbackHelp = {0x19432A8E, 0x4A32, 0x4860, [0xB8, 0xFB, 0x95, 0xB1, 0x11, 0x7C, 0xD4, 0xE5]}; +enum IID IID_IUPnPPrivateServiceHelper2 = {0x340F4076, 0x6856, 0x48F9, [0xB3, 0xC4, 0x97, 0xB9, 0x1B, 0x68, 0xD7, 0x7E]}; +enum IID IID_IUPnPRegistrar = {0x204810B6, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +enum IID IID_IUPnPReregistrar = {0x204810B7, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +enum IID IID_IUPnPService = {0xA295019C, 0xDC65, 0x47DD, [0x90, 0xDC, 0x7F, 0xE9, 0x18, 0xA1, 0xAB, 0x44]}; +enum IID IID_IUPnPServiceCallback = {0x31FADCA9, 0xAB73, 0x464B, [0xB6, 0x7D, 0x5C, 0x1D, 0x0F, 0x83, 0xC8, 0xB8]}; +enum IID IID_IUPnPServiceCallbackPrivate = {0x24EA2515, 0xF612, 0x4528, [0xBA, 0x82, 0x7B, 0xD3, 0xDB, 0xBA, 0xD3, 0x03]}; +enum IID IID_IUPnPServices = {0x3F8C8E9E, 0x9A7A, 0x4DC8, [0xBC, 0x41, 0xFF, 0x31, 0xFA, 0x37, 0x49, 0x56]}; +enum IID IID_IUrlHistoryNotify = {0xBC40BEC1, 0xC493, 0x11D0, [0x83, 0x1B, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; +enum IID IID_IUrlHistoryStg = {0x3C374A41, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; +enum IID IID_IUrlHistoryStg2 = {0xAFA0DC11, 0xC313, 0x11D0, [0x83, 0x1A, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; +enum IID IID_IUrlMon = {0x00000026, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IURLSearchHook = {0xAC60F6A0, 0x0FD9, 0x11D0, [0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97]}; +enum IID IID_IURLSearchHook2 = {0x5EE44DA4, 0x6D32, 0x46E3, [0x86, 0xBC, 0x07, 0x54, 0x0D, 0xED, 0xD0, 0xE0]}; +enum IID IID_IUrlTrackingStg = {0xF2F8CBB3, 0xB040, 0x11D0, [0xBB, 0x16, 0x00, 0xC0, 0x4F, 0xB6, 0x6F, 0x63]}; +enum IID IID_IUserEventTimer = {0x0F504B94, 0x6E42, 0x42E6, [0x99, 0xE0, 0xE2, 0x0F, 0xAF, 0xE5, 0x2A, 0xB4]}; +enum IID IID_IUserEventTimerCallback = {0xE9EAD8E6, 0x2A25, 0x410E, [0x9B, 0x58, 0xA9, 0xFB, 0xEF, 0x1D, 0xD1, 0xA2]}; +enum IID IID_IUserNotification = {0xBA9711BA, 0x5893, 0x4787, [0xA7, 0xE1, 0x41, 0x27, 0x71, 0x51, 0x55, 0x0B]}; +enum IID IID_IUtilityButton = {0x3050F6AF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID IID_IVariantChangeType = {0xA6EF9862, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +enum IID IID_IVersionHost = {0x667115AC, 0xDC02, 0x11D1, [0xBA, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; +enum IID IID_IVersionVector = {0x4EB01410, 0xDB1A, 0x11D1, [0xBA, 0x53, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; +enum IID IID_IViewChapter = {0x0C733A98, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IViewFilter = {0x0C733A9B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IViewObject = {0x0000010D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IViewObject2 = {0x00000127, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IViewObjectEx = {0x3AF24292, 0x0C96, 0x11CE, [0xA0, 0xCF, 0x00, 0xAA, 0x00, 0x60, 0x0A, 0xB8]}; +enum IID IID_IViewRowset = {0x0C733A97, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IViewSort = {0x0C733A9A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID IID_IVirusScanEngine = {0x083DB180, 0xB4A8, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; +enum IID IID_IVirusScanner = {0x4589BEE0, 0xB4B1, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; +enum IID IID_IWaitMultiple = {0x0000002B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IWbemAddressResolution = {0xF7CE2E12, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID IID_IWbemBackupRestore = {0xC49E32C7, 0xBC8B, 0x11D2, [0x85, 0xD4, 0x00, 0x10, 0x5A, 0x1F, 0x83, 0x04]}; +enum IID IID_IWbemBackupRestoreEx = {0xA359DEC5, 0xE813, 0x4834, [0x8A, 0x2A, 0xBA, 0x7F, 0x1D, 0x77, 0x7D, 0x76]}; +enum IID IID_IWbemCallResult = {0x44ACA675, 0xE8FC, 0x11D0, [0xA0, 0x7C, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IWbemCallStatus = {0x4212DC47, 0x142E, 0x4C6C, [0xBC, 0x49, 0x6C, 0xA2, 0x32, 0xDD, 0x09, 0x59]}; +enum IID IID_IWbemClassObject = {0xDC12A681, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; +enum IID IID_IWbemClientConnectionTransport = {0xA889C72A, 0xFCC1, 0x4A9E, [0xAF, 0x61, 0xED, 0x07, 0x13, 0x33, 0xFB, 0x5B]}; +enum IID IID_IWbemClientTransport = {0xF7CE2E11, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID IID_IWbemConfigure = {0x9A368276, 0x26CF, 0x11D0, [0xAD, 0x3C, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID IID_IWbemConfigureRefresher = {0x49353C92, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IWbemConnectorLogin = {0xD8EC9CB1, 0xB135, 0x4F10, [0x8B, 0x1B, 0xC7, 0x18, 0x8B, 0xB0, 0xD1, 0x86]}; +enum IID IID_IWbemConstructClassObject = {0x9EF76194, 0x70D5, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID IID_IWbemContext = {0x44ACA674, 0xE8FC, 0x11D0, [0xA0, 0x7C, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IWbemDecoupledBasicEventProvider = {0x86336D20, 0xCA11, 0x4786, [0x9E, 0xF1, 0xBC, 0x8A, 0x94, 0x6B, 0x42, 0xFC]}; +enum IID IID_IWbemDecoupledEventSink = {0xCD94EBF2, 0xE622, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; +enum IID IID_IWbemDecoupledRegistrar = {0x1005CBCF, 0xE64F, 0x4646, [0xBC, 0xD3, 0x3A, 0x08, 0x9D, 0x8A, 0x84, 0xB4]}; +enum IID IID_IWbemEventConsumerProvider = {0xE246107A, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID IID_IWbemEventConsumerProviderEx = {0x17CF534A, 0xD8A3, 0x4AD0, [0xAC, 0x92, 0x5E, 0x3D, 0x01, 0x71, 0x71, 0x51]}; +enum IID IID_IWbemEventProvider = {0xE245105B, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID IID_IWbemEventProviderQuerySink = {0x580ACAF8, 0xFA1C, 0x11D0, [0xAD, 0x72, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID IID_IWbemEventProviderSecurity = {0x631F7D96, 0xD993, 0x11D2, [0xB3, 0x39, 0x00, 0x10, 0x5A, 0x1F, 0x4A, 0xAF]}; +enum IID IID_IWbemEventSink = {0x3AE0080A, 0x7E3A, 0x4366, [0xBF, 0x89, 0x0F, 0xEE, 0xDC, 0x93, 0x16, 0x59]}; +enum IID IID_IWbemHiPerfEnum = {0x2705C288, 0x79AE, 0x11D2, [0xB3, 0x48, 0x00, 0x10, 0x5A, 0x1F, 0x81, 0x77]}; +enum IID IID_IWbemHiPerfProvider = {0x49353C93, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IWbemLevel1Login = {0xF309AD18, 0xD86A, 0x11D0, [0xA0, 0x75, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IWbemLocator = {0xDC12A687, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; +enum IID IID_IWbemObjectAccess = {0x49353C9A, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IWbemObjectSink = {0x7C857801, 0x7381, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; +enum IID IID_IWbemObjectTextSrc = {0xBFBF883A, 0xCAD7, 0x11D3, [0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; +enum IID IID_IWbemPath = {0x3BC15AF2, 0x736C, 0x477E, [0x9E, 0x51, 0x23, 0x8A, 0xF8, 0x66, 0x7D, 0xCC]}; +enum IID IID_IWbemPathKeyList = {0x9AE62877, 0x7544, 0x4BB0, [0xAA, 0x26, 0xA1, 0x38, 0x24, 0x65, 0x9E, 0xD6]}; +enum IID IID_IWbemPropertyProvider = {0xCE61E841, 0x65BC, 0x11D0, [0xB6, 0xBD, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; +enum IID IID_IWbemProviderIdentity = {0x631F7D97, 0xD993, 0x11D2, [0xB3, 0x39, 0x00, 0x10, 0x5A, 0x1F, 0x4A, 0xAF]}; +enum IID IID_IWbemProviderInit = {0x1BE41572, 0x91DD, 0x11D1, [0xAE, 0xB2, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IWbemProviderInitSink = {0x1BE41571, 0x91DD, 0x11D1, [0xAE, 0xB2, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IWbemQualifierSet = {0xDC12A680, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; +enum IID IID_IWbemQuery = {0x81166F58, 0xDD98, 0x11D3, [0xA1, 0x20, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; +enum IID IID_IWbemRawSdAccessor = {0xC1E2D759, 0xCABD, 0x11D3, [0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; +enum IID IID_IWbemRefresher = {0x49353C99, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IWbemServices = {0x9556DC99, 0x828C, 0x11CF, [0xA3, 0x7E, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; +enum IID IID_IWbemShutdown = {0xB7B31DF9, 0xD515, 0x11D3, [0xA1, 0x1C, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; +enum IID IID_IWbemStatusCodeText = {0xEB87E1BC, 0x3233, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +enum IID IID_IWbemTransport = {0x553FE584, 0x2156, 0x11D0, [0xB6, 0xAE, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; +enum IID IID_IWbemUnboundObjectSink = {0xE246107B, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID IID_IWBScriptControl = {0xA5170870, 0x0CF8, 0x11D1, [0x8B, 0x91, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; +enum IID IID_IWCContextMenuCallback = {0x97DEDE64, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IWCPropertySheetCallback = {0x97DEDE60, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IWCWizard97Callback = {0x97DEDE67, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IWCWizardCallback = {0x97DEDE62, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IWebBridge = {0xAE24FDAD, 0x03C6, 0x11D1, [0x8B, 0x76, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; +enum IID IID_IWebBrowser = {0xEAB22AC1, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; +enum IID IID_IWebBrowser2 = {0xD30C1661, 0xCDAF, 0x11D0, [0x8A, 0x3E, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0x6E]}; +enum IID IID_IWebBrowserApp = {0x0002DF05, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID IID_IWebWizardExtension = {0x0E6B3F66, 0x98D1, 0x48C0, [0xA2, 0x22, 0xFB, 0xDE, 0x74, 0xE2, 0xFB, 0xC5]}; +enum IID IID_IWebWizardHost = {0x18BCC359, 0x4990, 0x4BFB, [0xB9, 0x51, 0x3C, 0x83, 0x70, 0x2B, 0xE5, 0xF9]}; +enum IID IID_IWEExtendContextMenu = {0x97DEDE65, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IWEExtendPropertySheet = {0x97DEDE61, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IWEExtendWizard = {0x97DEDE63, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IWEExtendWizard97 = {0x97DEDE68, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_IWEInvokeCommand = {0x97DEDE66, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +enum IID IID_Iwfolders = {0xBAE31F98, 0x1B81, 0x11D2, [0xA9, 0x7A, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; +enum IID IID_IWindowForBindingUI = {0x79EAC9D5, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IWinInetHttpInfo = {0x79EAC9D8, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IWinInetInfo = {0x79EAC9D6, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +enum IID IID_IWizardExtension = {0xC02EA696, 0x86CC, 0x491E, [0x9B, 0x23, 0x74, 0x39, 0x4A, 0x04, 0x44, 0xA8]}; +enum IID IID_IWizardSite = {0x88960F5B, 0x422F, 0x4E7B, [0x80, 0x13, 0x73, 0x41, 0x53, 0x81, 0xC3, 0xC3]}; +enum IID IID_IWMIExtension = {0xADC1F06E, 0x5C7E, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; +enum IID IID_IWordBreaker = {0xD53552C8, 0x77E3, 0x101A, [0xB5, 0x52, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; +enum IID IID_IWordSink = {0xCC907054, 0xC058, 0x101A, [0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; +enum IID IID_IWrappedProtocol = {0x53C84785, 0x8425, 0x4DC5, [0x97, 0x1B, 0xE5, 0x8D, 0x9C, 0x19, 0xF9, 0xB6]}; +enum IID IID_IXMLAttribute = {0xD4D4A0FC, 0x3B73, 0x11D1, [0xB2, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0x96]}; +enum IID IID_IXMLDocument = {0xF52E2B61, 0x18A1, 0x11D1, [0xB1, 0x05, 0x00, 0x80, 0x5F, 0x49, 0x91, 0x6B]}; +enum IID IID_IXMLDocument2 = {0x2B8DE2FE, 0x8D2D, 0x11D1, [0xB2, 0xFC, 0x00, 0xC0, 0x4F, 0xD9, 0x15, 0xA9]}; +enum IID IID_IXMLDOMAttribute = {0x2933BF85, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMCDATASection = {0x2933BF8A, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMCharacterData = {0x2933BF84, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMComment = {0x2933BF88, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMDocument = {0x2933BF81, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMDocumentFragment = {0x3EFAA413, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; +enum IID IID_IXMLDOMDocumentType = {0x2933BF8B, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMElement = {0x2933BF86, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMEntity = {0x2933BF8D, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMEntityReference = {0x2933BF8E, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMImplementation = {0x2933BF8F, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMNamedNodeMap = {0x2933BF83, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMNode = {0x2933BF80, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMNodeList = {0x2933BF82, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMNotation = {0x2933BF8C, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMParseError = {0x3EFAA426, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; +enum IID IID_IXMLDOMProcessingInstruction = {0x2933BF89, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDOMText = {0x2933BF87, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +enum IID IID_IXMLDSOControl = {0x310AFA62, 0x0575, 0x11D2, [0x9C, 0xA9, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +enum IID IID_IXMLElement = {0x3F7F31AC, 0xE15F, 0x11D0, [0x9C, 0x25, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; +enum IID IID_IXMLElement2 = {0x2B8DE2FF, 0x8D2D, 0x11D1, [0xB2, 0xFC, 0x00, 0xC0, 0x4F, 0xD9, 0x15, 0xA9]}; +enum IID IID_IXMLElementCollection = {0x65725580, 0x9B5D, 0x11D0, [0x9B, 0xFE, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; +enum IID IID_IXMLError = {0x948C5AD3, 0xC58D, 0x11D0, [0x9C, 0x0B, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; +enum IID IID_IXMLGenericParse = {0xE4E23071, 0x4D07, 0x11D2, [0xAE, 0x76, 0x00, 0x80, 0xC7, 0x3B, 0xC1, 0x99]}; +enum IID IID_IXMLHttpRequest = {0xED8C108D, 0x4349, 0x11D2, [0x91, 0xA4, 0x00, 0xC0, 0x4F, 0x79, 0x69, 0xE8]}; +enum IID IID_IXMLNodeFactory = {0xD242361F, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +enum IID IID_IXMLNodeSource = {0xD242361D, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +enum IID IID_IXMLParser = {0xD242361E, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +enum IID IID_IXTLRuntime = {0x3EFAA425, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; +enum IID IID_StdOle = {0x00020430, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID KSDATAFORMAT_SUBTYPE_DIRECTMUSIC = {0x1A82F8BC, 0x3F8B, 0x11D2, [0xB7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1]}; +enum IID KSDATAFORMAT_SUBTYPE_MIDI = {0x1D262760, 0xE957, 0x11CF, [0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00]}; +enum IID LIBID_Accessibility = {0x1EA4DBF0, 0x3C3B, 0x11CF, [0x81, 0x0C, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71]}; +enum IID LIBID_ActiveIMM = {0x4955DD30, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +enum IID LIBID_ADs = {0x97D25DB0, 0x0363, 0x11CF, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +enum IID LIBID_ALGLib = {0xB6D1D098, 0xE235, 0x4B99, [0xBA, 0x98, 0x7C, 0x62, 0x4F, 0xD8, 0x75, 0xDB]}; +enum IID LIBID_AutoDiscovery = {0x4EAFB888, 0x81CB, 0x4EBA, [0xBA, 0xC9, 0xDA, 0x25, 0x4E, 0x57, 0x21, 0xF1]}; +enum IID LIBID_BackgroundCopyManager = {0x1DEEB74F, 0x7915, 0x4560, [0xB5, 0x58, 0x91, 0x8C, 0x83, 0xF1, 0x76, 0xA6]}; +enum IID LIBID_BackgroundCopyManager1_5 = {0xEA9319EA, 0xC628, 0x480F, [0x83, 0x31, 0x76, 0x8F, 0xAC, 0x39, 0x7E, 0x4E]}; +enum IID LIBID_BackgroundCopyQMgr = {0xF5B26DCB, 0xB37E, 0x4D7C, [0xAE, 0x7A, 0x1C, 0xB3, 0xFB, 0xEB, 0x18, 0x3E]}; +enum IID LIBID_CHANNELMGR = {0x4804F2E0, 0xD16E, 0x11D0, [0x80, 0x2B, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; +enum IID LIBID_CLADMWIZLib = {0x24F97140, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; +enum IID LIBID_ClusCfgWizard = {0x6D01FEDC, 0x8D34, 0x4728, [0xAD, 0x0B, 0xB3, 0xA2, 0x1A, 0x10, 0x3B, 0x42]}; +enum IID LIBID_CommonControlObjects = {0xBCADA15B, 0xB428, 0x420C, [0x8D, 0x28, 0x02, 0x35, 0x90, 0x92, 0x4C, 0x9F]}; +enum IID LIBID_DirectAnimation = {0xBCBB1F74, 0xE384, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +enum IID LIBID_DWbemServices_v3 = {0xCB7CA031, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +enum IID LIBID_DXTMSFTLib = {0x5E77EB03, 0x937C, 0x11D1, [0xB0, 0x47, 0x00, 0xAA, 0x00, 0x3B, 0x60, 0x61]}; +enum IID LIBID_DXTRANSLib = {0x54314D1D, 0x35FE, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +enum IID LIBID_DXTRANSPLib = {0x527A4DA4, 0x7F2C, 0x11D2, [0xB1, 0x2D, 0x00, 0x00, 0xF8, 0x1F, 0x59, 0x95]}; +enum IID LIBID_EventQLib = {0xA70080F2, 0x403B, 0x11D1, [0x88, 0x36, 0x00, 0xA0, 0xC9, 0x49, 0xAC, 0x67]}; +enum IID LIBID_IASPolicyLib = {0x6BC096A5, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +enum IID LIBID_IEXTagLib = {0x7E8BC440, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +enum IID LIBID_IMAPILib = {0xC49F2184, 0x50A7, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +enum IID LIBID_ImgUtilLib = {0xCF790840, 0x2DC4, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +enum IID LIBID_ITRKADMNLib = {0xA2531F35, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; +enum IID LIBID_McastLib = {0x64217CC0, 0xA285, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +enum IID LIBID_MSHTML = {0x3050F1C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID LIBID_MSHTMLINTERNAL = {0x3050F7E1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID LIBID_MSTIME = {0x87C96271, 0xADDB, 0x4745, [0xB2, 0xE8, 0xDF, 0x88, 0xA8, 0x47, 0x2F, 0xD1]}; +enum IID LIBID_MSXML = {0xD63E0CE2, 0xA0A2, 0x11D0, [0x9C, 0x02, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; +enum IID LIBID_MultiLanguage = {0x275C23E0, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; +enum IID LIBID_NATUPNPLib = {0x1C565858, 0xF302, 0x471E, [0xB4, 0x09, 0xF1, 0x80, 0xAA, 0x4A, 0xBE, 0xC6]}; +enum IID LIBID_NETCONLib = {0x43E734CA, 0x043D, 0x4A70, [0x9A, 0x2C, 0xA8, 0xF2, 0x54, 0x06, 0x3D, 0x91]}; +enum IID LIBID_PassiveSink = {0xE002EEEF, 0xE6EA, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; +enum IID LIBID_ProcessDebugManagerLib = {0x78A51821, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +enum IID LIBID_RENDLib = {0xF1029E4D, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID LIBID_RTCCORELib = {0xCD260094, 0xDE10, 0x4AEE, [0xAC, 0x73, 0xEF, 0x87, 0xF6, 0xE1, 0x26, 0x83]}; +enum IID LIBID_SDOIASLib = {0x81DDF732, 0x4AA8, 0x4A35, [0xBD, 0xFF, 0x8B, 0x42, 0xEF, 0xE7, 0xC6, 0x24]}; +enum IID LIBID_SDPBLBLib = {0xC259D79A, 0xC8AB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +enum IID LIBID_SensEvents = {0xD597DEED, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +enum IID LIBID_SHDocVw = {0xEAB22AC0, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; +enum IID LIBID_Shell32 = {0x50A7E9B0, 0x70EF, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +enum IID LIBID_ShellImageData = {0x0B8AFF06, 0x8DF0, 0x4F13, [0x8E, 0x25, 0x25, 0xB2, 0x31, 0x9C, 0x43, 0x6A]}; +enum IID LIBID_ShellObjects = {0x50A7E9B1, 0x70EF, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +enum IID LIBID_SHGINALib = {0x0A055C02, 0xBABE, 0x4480, [0xBB, 0x7B, 0xA8, 0xEC, 0x72, 0x3C, 0xE9, 0xC0]}; +enum IID LIBID_SubscriptionMgr = {0xC54FD88A, 0xFFA1, 0x11D0, [0xBC, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +enum IID LIBID_TAPI3Lib = {0x21D6D480, 0xA88B, 0x11D0, [0x83, 0xDD, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +enum IID LIBID_TERMMGRLib = {0x28DCD85B, 0xACA4, 0x11D0, [0xA0, 0x28, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; +enum IID LIBID_UPnPHostLib = {0x204810B3, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +enum IID LIBID_UPNPLib = {0xDB3442A7, 0xA2E9, 0x4A59, [0x9C, 0xB5, 0xF5, 0xC1, 0xA5, 0xD9, 0x01, 0xE5]}; +enum IID LIBID_VIRUSSCAN = {0x5F47DB70, 0xD9FE, 0x11D0, [0x95, 0x64, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; +enum IID LIBID_WbemClient_v1 = {0x7EC196FE, 0x7005, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID LIBID_WbemProviders_v1 = {0x092DF710, 0x7010, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +enum IID LIBID_WbemScripting = {0x565783C6, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +enum IID LIBID_WbemTransports_v1 = {0x027947F3, 0xD731, 0x11CE, [0xA3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]}; +enum IID LIBID_WbemUtilities_v1 = {0x226C9290, 0xDD96, 0x11D3, [0xA1, 0x20, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; +enum IID LIBID_WebCheck = {0x10BD2E25, 0xF235, 0x11CF, [0xB5, 0xDD, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xEC]}; +enum IID LIBID_WMIEXTENSIONLib = {0xE503D000, 0x5C7F, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; +enum IID LIBID_XENROLLLib = {0x43F8F27B, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; +enum IID LIBID_XMLPSR = {0xD242361C, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +enum IID MDGUID_MDX = {0xA07CCCD0, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +enum IID MDSCHEMA_ACTIONS = {0xA07CCD08, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +enum IID MDSCHEMA_COMMANDS = {0xA07CCD09, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +enum IID MDSCHEMA_CUBES = {0xC8B522D8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID MDSCHEMA_DIMENSIONS = {0xC8B522D9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID MDSCHEMA_FUNCTIONS = {0xA07CCD07, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +enum IID MDSCHEMA_HIERARCHIES = {0xC8B522DA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID MDSCHEMA_LEVELS = {0xC8B522DB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID MDSCHEMA_MEASURES = {0xC8B522DC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID MDSCHEMA_MEMBERS = {0xC8B522DE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID MDSCHEMA_PROPERTIES = {0xC8B522DD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +enum IID MDSCHEMA_SETS = {0xA07CCD0B, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +enum IID NAMEDTIMER_DRAW = {0x3050F362, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID NOTFCOOKIE_SCHEDULE_GROUP_DAILY = {0xD34F18B0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTFCOOKIE_SCHEDULE_GROUP_MANUAL = {0xD34F18B3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTFCOOKIE_SCHEDULE_GROUP_MONTHLY = {0xD34F18B2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTFCOOKIE_SCHEDULE_GROUP_WEEKLY = {0xD34F18B1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_11 = {0xD34F17FB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_12 = {0xD34F17FC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_13 = {0xD34F17FD, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_14 = {0xD34F17FE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_15 = {0xD34F17FF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_AGENT_INIT = {0x1E4A7390, 0xC70B, 0x11D0, [0x95, 0xF8, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xEC]}; +enum IID NOTIFICATIONTYPE_AGENT_START = {0xD34F17EC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_ALERT = {0xD34F17E3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_ANOUNCMENT = {0xD34F17E1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_BEGIN_REPORT = {0xD34F17EE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_CONFIG_CHANGED = {0xD34F17F2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_CONNECT_TO_INTERNET = {0xD34F17F0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_d = {0xD34F17F8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_DISCONNECT_FROM_INTE = {0xD34F17F1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_e = {0xD34F17F9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_END_REPORT = {0xD34F17EF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_f = {0xD34F17FA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_GROUP_DONE = {0xD34F1885, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_GROUP_RESTART = {0xD34F1884, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_GROUP_START = {0xD34F1883, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_i6 = {0xD34F1886, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_i7 = {0xD34F1887, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_i8 = {0xD34F1888, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_i9 = {0xD34F1889, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_iA = {0xD34F188A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_iB = {0xD34F188B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_iC = {0xD34F188C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_iD = {0xD34F188D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_iE = {0xD34F188E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_iF = {0xD34F188F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_INET_IDLE = {0xD34F17E4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_INET_OFFLINE = {0xD34F17E5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_INET_ONLINE = {0xD34F17E6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_ITEM_DONE = {0xD34F1882, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_ITEM_RESTART = {0xD34F1881, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_ITEM_START = {0xD34F1880, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_NULL = {0xD34F17E0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_PROGRESS_REPORT = {0xD34F17F3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_0 = {0xD34F1800, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_1 = {0xD34F1801, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_2 = {0xD34F1802, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_3 = {0xD34F1803, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_4 = {0xD34F1804, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_5 = {0xD34F1805, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_6 = {0xD34F1806, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_7 = {0xD34F1807, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_8 = {0xD34F1808, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_9 = {0xD34F1809, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_A = {0xD34F180A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_B = {0xD34F180B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_C = {0xD34F180C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_D = {0xD34F180D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_E = {0xD34F180E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_START_F = {0xD34F180F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_TASK = {0xD34F17E2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_TASKS_ABORT = {0xD34F17E9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_TASKS_COMPLETED = {0xD34F17EA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_TASKS_ERROR = {0xD34F17F7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_TASKS_PROGRESS = {0xD34F17EB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_TASKS_RESUME = {0xD34F17E8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_TASKS_STARTED = {0xD34F17F6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_TASKS_SUSPEND = {0xD34F17E7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_USER_IDLE_BEGIN = {0xD34F17F4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID NOTIFICATIONTYPE_USER_IDLE_END = {0xD34F17F5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +enum IID OLE_DATAPATH_ALLIMAGE = {0x0002DE0E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_ALLMM = {0x0002DE18, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_ALLTEXT = {0x0002DE1E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_ANSITEXT = {0x0002DE19, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_AVI = {0x0002DE0F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_BASICAUDIO = {0x0002DE12, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_BIFF = {0x0002DE21, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_BMP = {0x0002DE01, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_CGM = {0x0002DE0B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_COMMONIMAGE = {0x0002DE0D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_DIB = {0x0002DE02, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_DIF = {0x0002DE1F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_ENHMF = {0x0002DE04, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_EPS = {0x0002DE0C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_GIF = {0x0002DE05, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_HTML = {0x0002DE1C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_JPEG = {0x0002DE06, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_MIDI = {0x0002DE13, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_MPEG = {0x0002DE10, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_PALETTE = {0x0002DE22, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_PCX = {0x0002DE09, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_PENDATA = {0x0002DE23, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_PICT = {0x0002DE0A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_POSTSCRIPT = {0x0002DE1D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_QUICKTIME = {0x0002DE11, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_RIFF = {0x0002DE15, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_RTF = {0x0002DE1B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_SOUND = {0x0002DE16, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_SYLK = {0x0002DE20, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_TIFF = {0x0002DE07, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_UNICODE = {0x0002DE1A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_VIDEO = {0x0002DE17, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_WAV = {0x0002DE14, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_WMF = {0x0002DE03, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLE_DATAPATH_XBM = {0x0002DE08, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +enum IID OLEDB_SVC_DSLPropertyPages = {0x51740C02, 0x7E8E, 0x11D2, [0xA0, 0x2D, 0x00, 0xC0, 0x4F, 0xA3, 0x73, 0x48]}; +enum IID PSGUID_QUERY = {0x49691C90, 0x7E17, 0x101A, [0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9]}; +enum IID RESCLASSTYPE_IPAddress = {0x57A80E0F, 0x6F18, 0x458B, [0xA7, 0x2A, 0xD1, 0x17, 0x0C, 0x47, 0x93, 0x90]}; +enum IID RESCLASSTYPE_NetworkName = {0xBBA69EB9, 0xF5D0, 0x487B, [0x92, 0xAE, 0x1B, 0xA1, 0x0F, 0x39, 0x21, 0x58]}; +enum IID RESCLASSTYPE_StorageDevice = {0x12453A47, 0x8C5E, 0x4837, [0xBA, 0xC6, 0xB2, 0x54, 0xB8, 0xF2, 0x64, 0xCC]}; +enum IID RESTYPE_ClusterIPAddress = {0xE50DF832, 0x477C, 0x440C, [0xB7, 0xA3, 0x38, 0x23, 0xA6, 0xEF, 0x6C, 0xCB]}; +enum IID RESTYPE_ClusterNetName = {0xB2897CCF, 0x8D2C, 0x4BC1, [0xB4, 0x96, 0x6E, 0x2B, 0xC7, 0xA0, 0xBB, 0x38]}; +enum IID RESTYPE_ClusterQuorumDisk = {0xD9DDFB80, 0x0BDC, 0x40D4, [0xB3, 0x96, 0x1A, 0xFD, 0x77, 0xDD, 0xD1, 0x9C]}; +enum IID RESTYPE_GenericScript = {0xF372184D, 0xDFDB, 0x4370, [0xA0, 0x05, 0xE1, 0xEF, 0x30, 0x1B, 0x23, 0xA4]}; +enum IID RESTYPE_IPAddress = {0xE61ADE71, 0xC79A, 0x4FDA, [0xB1, 0xDB, 0xA9, 0xB8, 0xD2, 0x0C, 0x8B, 0x14]}; +enum IID RESTYPE_LocalQuorum = {0xF004656D, 0x5B48, 0x4580, [0xA1, 0xF4, 0xC3, 0xEC, 0x14, 0x98, 0x3D, 0x1E]}; +enum IID RESTYPE_MajorityNodeSet = {0x56BFAE11, 0xD2F7, 0x4F4F, [0x99, 0x52, 0x55, 0xAF, 0x19, 0xBA, 0xC3, 0xE9]}; +enum IID RESTYPE_NetworkName = {0xC1D2FE1E, 0xD332, 0x445F, [0x8D, 0xA1, 0x12, 0xE5, 0xE2, 0xD3, 0x7C, 0xBF]}; +enum IID RESTYPE_PhysicalDisk = {0xCC558763, 0x3386, 0x42EF, [0xB1, 0x50, 0xBE, 0x79, 0x33, 0x44, 0xD4, 0x5F]}; +enum IID SID_CtxQueryAssociations = {0xFAADFC40, 0xB777, 0x4B69, [0xAA, 0x81, 0x77, 0x03, 0x5E, 0xF0, 0xE6, 0xE8]}; +enum IID SID_SContainerDispatch = {0xB722BE00, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +enum IID SID_SDataPathBrowser = {0xFC4801A5, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +enum IID SID_SGetViewFromViewDual = {0x889A935D, 0x971E, 0x4B12, [0xB9, 0x0C, 0x24, 0xDF, 0xC9, 0xE1, 0xE5, 0xE8]}; +enum IID SID_SHTMLEditServices = {0x3050F7F9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +enum IID SID_STopLevelBrowser = {0x4C96BE40, 0x915C, 0x11CF, [0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37]}; +enum IID SID_STopWindow = {0x49E1B500, 0x4636, 0x11D3, [0x97, 0xF7, 0x00, 0xC0, 0x4F, 0x45, 0xD0, 0xB3]}; +enum IID SID_SVersionHost = {0x371EA634, 0xDC5C, 0x11D1, [0xBA, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; +enum IID TAPIMEDIATYPE_Audio = {0x028ED8C2, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID TAPIMEDIATYPE_DataModem = {0x028ED8C6, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID TAPIMEDIATYPE_G3Fax = {0x028ED8C7, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID TAPIMEDIATYPE_Video = {0x028ED8C4, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID TAPIPROTOCOL_H323 = {0x831CE2D7, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID TAPIPROTOCOL_Multicast = {0x831CE2D8, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID TAPIPROTOCOL_PSTN = {0x831CE2D6, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +enum IID TASK_AnalyzeCluster = {0x3140B5A6, 0x9AFA, 0x4588, [0x8C, 0xA0, 0x9B, 0xE8, 0xF8, 0xB6, 0x15, 0x06]}; +enum IID TASK_CommitClusterChanges = {0x2D03030B, 0xF084, 0x4807, [0xBB, 0xAC, 0x94, 0x26, 0x9E, 0x50, 0xB5, 0x6F]}; +enum IID TASKID_Major_Check_Cluster_Feasibili = {0xEBC8AEFF, 0x10C3, 0x4D5B, [0xAC, 0x17, 0xFC, 0x0F, 0x4C, 0x38, 0x71, 0xB7]}; +enum IID TASKID_Major_Check_Node_Feasibility = {0xCC5E57B1, 0x4520, 0x4672, [0xB4, 0xBA, 0xA2, 0x88, 0xEC, 0x42, 0x94, 0x6E]}; +enum IID TASKID_Major_Checking_For_Existing_Cl = {0xB8453B8F, 0x92FD, 0x4350, [0xA6, 0xD9, 0x55, 0x1F, 0xD0, 0x18, 0xB7, 0x91]}; +enum IID TASKID_Major_Client_And_Server_Log = {0xCD36919C, 0x9F31, 0x46B4, [0xA2, 0x9D, 0xAC, 0x87, 0xF4, 0xE6, 0xCC, 0x93]}; +enum IID TASKID_Major_Client_Log = {0x64ECA0EA, 0x9CB6, 0x4324, [0x97, 0x02, 0xDF, 0x15, 0xC6, 0x96, 0xC3, 0x0A]}; +enum IID TASKID_Major_Configure_Cluster_Servic = {0x7C5F0774, 0x1611, 0x42B5, [0xAF, 0x3C, 0x6E, 0x12, 0x4A, 0xC4, 0xD3, 0x6B]}; +enum IID TASKID_Major_Configure_Resource_Type = {0x6D47AF1F, 0x7F17, 0x4B80, [0x8F, 0xAB, 0x3A, 0x2D, 0x19, 0xB1, 0x23, 0x3D]}; +enum IID TASKID_Major_Configure_Resources = {0x411BCDEC, 0x69D3, 0x4485, [0x8D, 0x5D, 0xE1, 0x9E, 0xE7, 0x7A, 0x6D, 0xD4]}; +enum IID TASKID_Major_Establish_Connection = {0x93C32F99, 0x39CA, 0x4D38, [0x9D, 0x7F, 0x27, 0x07, 0xCA, 0x0E, 0xAF, 0x46]}; +enum IID TASKID_Major_Find_Devices = {0x036BF567, 0x2377, 0x4BB3, [0x8A, 0xE1, 0xE4, 0x10, 0x4E, 0x2E, 0xB3, 0xC5]}; +enum IID TASKID_Major_Reanalyze = {0xE25968DA, 0x9C7B, 0x42DB, [0xAD, 0xA9, 0xBC, 0x4E, 0x34, 0xF1, 0x7E, 0x6E]}; +enum IID TASKID_Major_Server_Log = {0x05AA0768, 0x5F49, 0x49CD, [0xAF, 0xDC, 0x96, 0xF9, 0xD5, 0x18, 0x02, 0xD4]}; +enum IID TASKID_Minor_Update_Progress = {0x2362D3DA, 0xA6A4, 0x4551, [0xB8, 0x46, 0x7B, 0xB3, 0xA1, 0x36, 0x5F, 0x56]}; +enum IID TID_D3DRMAnimation = {0x3D82AB4F, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMAnimationKey = {0x10DD46A8, 0x775B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMAnimationOptions = {0xE2BF56C0, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMAnimationSet = {0x3D82AB50, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMAppData = {0xE5745280, 0xB24F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; +enum IID TID_D3DRMBoolean = {0x537DA6A0, 0xCA37, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; +enum IID TID_D3DRMBoolean2d = {0x4885AE63, 0x78E8, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMCamera = {0x3D82AB51, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMColorRGB = {0xD3E16E81, 0x7835, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMColorRGBA = {0x35FF44E0, 0x6C7C, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMCoords2d = {0xF6F23F44, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMExternalVisual = {0x98116AA0, 0xBDBA, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; +enum IID TID_D3DRMFloatKeys = {0x10DD46A9, 0x775B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMFrame = {0x3D82AB46, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMFramePosition = {0xE2BF56C1, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMFrameRotation = {0xE2BF56C3, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMFrameTransformMatrix = {0xF6F23F41, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMFrameVelocity = {0xE2BF56C2, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMGuid = {0xA42790E0, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMIndexedColor = {0x1630B820, 0x7842, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMInfo = {0x2B957100, 0x9E9A, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMInlineData = {0x3A23EEA0, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMLight = {0x3D82AB4A, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMLightAttenuation = {0xA8A98BA0, 0xC5E5, 0x11CF, [0xB9, 0x41, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; +enum IID TID_D3DRMLightPenumbra = {0xAED22741, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; +enum IID TID_D3DRMLightRange = {0xAED22742, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; +enum IID TID_D3DRMLightUmbra = {0xAED22740, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; +enum IID TID_D3DRMMaterial = {0x3D82AB4D, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMMaterialAmbientColor = {0x01411840, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMaterialArray = {0x35FF44E1, 0x6C7C, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMaterialDiffuseColor = {0x01411841, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMaterialEmissiveColor = {0xD3E16E80, 0x7835, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMaterialPower = {0x01411843, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMaterialSpecularColor = {0x01411842, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMaterialWrap = {0x4885AE60, 0x78E8, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMatrix4x4 = {0xF6F23F45, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMesh = {0x3D82AB44, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMMeshFace = {0x3D82AB5F, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMMeshFaceWraps = {0xED1EC5C0, 0xC0A8, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; +enum IID TID_D3DRMMeshMaterialList = {0xF6F23F42, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMeshNormals = {0xF6F23F43, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMeshTextureCoords = {0xF6F23F40, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMMeshVertexColors = {0x1630B821, 0x7842, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMProgressiveMesh = {0x8A63C360, 0x997D, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; +enum IID TID_D3DRMPropertyBag = {0x7F0F21E1, 0xBFE1, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; +enum IID TID_D3DRMRightHanded = {0x7F5D5EA0, 0xD53A, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; +enum IID TID_D3DRMStringProperty = {0x7F0F21E0, 0xBFE1, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; +enum IID TID_D3DRMTextureFilename = {0xA42790E1, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMTextureReference = {0xA42790E2, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMTimedFloatKeys = {0xF406B180, 0x7B3B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +enum IID TID_D3DRMUrl = {0x3A23EEA1, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_D3DRMVector = {0x3D82AB5E, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +enum IID TID_DXFILEHeader = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; } diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index c1654beeef..2fc2547675 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -36,18 +36,18 @@ DWORD MKFOURCC(char ch0, char ch1, char ch2, char ch3) { * COMPMAN - Installable Compression Manager. */ -const ICVERSION = 0x0104; +enum ICVERSION = 0x0104; alias TypeDef!(HANDLE) HIC; -const BI_1632 = 0x32333631; +enum BI_1632 = 0x32333631; template aviTWOCC(char c0, char c1) { - const WORD aviTWOCC = c0 | (c1 << 8); +enum WORD aviTWOCC = c0 | (c1 << 8); } -const ICTYPE_VIDEO = mmioFOURCC!('v', 'i', 'd', 'c'); -const ICTYPE_AUDIO = mmioFOURCC!('a', 'u', 'd', 'c'); +enum ICTYPE_VIDEO = mmioFOURCC!('v', 'i', 'd', 'c'); +enum ICTYPE_AUDIO = mmioFOURCC!('a', 'u', 'd', 'c'); enum { ICERR_OK = 0, @@ -57,21 +57,21 @@ enum { ICERR_STOPDRAWING = 4, } -const ICERR_UNSUPPORTED = -1; -const ICERR_BADFORMAT = -2; -const ICERR_MEMORY = -3; -const ICERR_INTERNAL = -4; -const ICERR_BADFLAGS = -5; -const ICERR_BADPARAM = -6; -const ICERR_BADSIZE = -7; -const ICERR_BADHANDLE = -8; -const ICERR_CANTUPDATE = -9; -const ICERR_ABORT = -10; -const ICERR_ERROR = -100; -const ICERR_BADBITDEPTH = -200; -const ICERR_BADIMAGESIZE = -201; +enum ICERR_UNSUPPORTED = -1; +enum ICERR_BADFORMAT = -2; +enum ICERR_MEMORY = -3; +enum ICERR_INTERNAL = -4; +enum ICERR_BADFLAGS = -5; +enum ICERR_BADPARAM = -6; +enum ICERR_BADSIZE = -7; +enum ICERR_BADHANDLE = -8; +enum ICERR_CANTUPDATE = -9; +enum ICERR_ABORT = -10; +enum ICERR_ERROR = -100; +enum ICERR_BADBITDEPTH = -200; +enum ICERR_BADIMAGESIZE = -201; -const ICERR_CUSTOM = -400; +enum ICERR_CUSTOM = -400; enum { ICMODE_COMPRESS = 1, @@ -82,8 +82,8 @@ enum { ICMODE_DRAW = 8, } -const ICMODE_INTERNALF_FUNCTION32 = 0x8000; -const ICMODE_INTERNALF_MASK = 0x8000; +enum ICMODE_INTERNALF_FUNCTION32 = 0x8000; +enum ICMODE_INTERNALF_MASK = 0x8000; enum { AVIIF_LIST = 0x00000001, @@ -91,9 +91,9 @@ enum { AVIIF_KEYFRAME = 0x00000010, } -const ICQUALITY_LOW = 0; -const ICQUALITY_HIGH = 10000; -const ICQUALITY_DEFAULT = -1; +enum ICQUALITY_LOW = 0; +enum ICQUALITY_HIGH = 10000; +enum ICQUALITY_DEFAULT = -1; enum { ICM_USER = DRV_USER + 0x0000, @@ -120,8 +120,8 @@ enum { ICM_GET = ICM_RESERVED + 41, } -const ICM_FRAMERATE = mmioFOURCC!('F','r','m','R'); -const ICM_KEYFRAMERATE = mmioFOURCC!('K','e','y','R'); +enum ICM_FRAMERATE = mmioFOURCC!('F','r','m','R'); +enum ICM_KEYFRAMERATE = mmioFOURCC!('K','e','y','R'); // ICM specific messages. @@ -204,7 +204,7 @@ enum { VIDCF_FASTTEMPORALD = 0x0080, } -const ICCOMPRESS_KEYFRAME = 0x00000001L; +enum ICCOMPRESS_KEYFRAME = 0x00000001L; struct ICCOMPRESS { DWORD dwFlags; @@ -221,7 +221,7 @@ struct ICCOMPRESS { LPVOID lpPrev; } -const ICCOMPRESSFRAMES_PADDING = 0x00000001; +enum ICCOMPRESSFRAMES_PADDING = 0x00000001; struct ICCOMPRESSFRAMES { DWORD dwFlags; @@ -378,8 +378,8 @@ enum { // query macros -const ICMF_CONFIGURE_QUERY = 0x00000001; -const ICMF_ABOUT_QUERY = 0x00000001; +enum ICMF_CONFIGURE_QUERY = 0x00000001; +enum ICMF_ABOUT_QUERY = 0x00000001; DWORD ICQueryAbout(HIC hic) { return ICSendMessage(hic, ICM_ABOUT, -1, ICMF_ABOUT_QUERY) == ICERR_OK; @@ -656,7 +656,7 @@ struct COMPVARS { } alias COMPVARS* PCOMPVARS; -const ICMF_COMPVARS_VALID = 0x00000001; +enum ICMF_COMPVARS_VALID = 0x00000001; extern (Windows) { BOOL ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData, PCOMPVARS pc, LPSTR lpszTitle); @@ -757,28 +757,28 @@ alias DWORD FOURCC; alias WORD TWOCC; -const formtypeAVI = mmioFOURCC!('A', 'V', 'I', ' '); -const listtypeAVIHEADER = mmioFOURCC!('h', 'd', 'r', 'l'); -const ckidAVIMAINHDR = mmioFOURCC!('a', 'v', 'i', 'h'); -const listtypeSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'l'); -const ckidSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'h'); -const ckidSTREAMFORMAT = mmioFOURCC!('s', 't', 'r', 'f'); -const ckidSTREAMHANDLERDATA = mmioFOURCC!('s', 't', 'r', 'd'); -const ckidSTREAMNAME = mmioFOURCC!('s', 't', 'r', 'n'); -const listtypeAVIMOVIE = mmioFOURCC!('m', 'o', 'v', 'i'); -const listtypeAVIRECORD = mmioFOURCC!('r', 'e', 'c', ' '); -const ckidAVINEWINDEX = mmioFOURCC!('i', 'd', 'x', '1'); -const streamtypeVIDEO = mmioFOURCC!('v', 'i', 'd', 's'); -const streamtypeAUDIO = mmioFOURCC!('a', 'u', 'd', 's'); -const streamtypeMIDI = mmioFOURCC!('m', 'i', 'd', 's'); -const streamtypeTEXT = mmioFOURCC!('t', 'x', 't', 's'); - -const cktypeDIBbits = aviTWOCC!('d', 'b'); -const cktypeDIBcompressed = aviTWOCC!('d', 'c'); -const cktypePALchange = aviTWOCC!('p', 'c'); -const cktypeWAVEbytes = aviTWOCC!('w', 'b'); - -const ckidAVIPADDING = mmioFOURCC!('J', 'U', 'N', 'K'); +enum formtypeAVI = mmioFOURCC!('A', 'V', 'I', ' '); +enum listtypeAVIHEADER = mmioFOURCC!('h', 'd', 'r', 'l'); +enum ckidAVIMAINHDR = mmioFOURCC!('a', 'v', 'i', 'h'); +enum listtypeSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'l'); +enum ckidSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'h'); +enum ckidSTREAMFORMAT = mmioFOURCC!('s', 't', 'r', 'f'); +enum ckidSTREAMHANDLERDATA = mmioFOURCC!('s', 't', 'r', 'd'); +enum ckidSTREAMNAME = mmioFOURCC!('s', 't', 'r', 'n'); +enum listtypeAVIMOVIE = mmioFOURCC!('m', 'o', 'v', 'i'); +enum listtypeAVIRECORD = mmioFOURCC!('r', 'e', 'c', ' '); +enum ckidAVINEWINDEX = mmioFOURCC!('i', 'd', 'x', '1'); +enum streamtypeVIDEO = mmioFOURCC!('v', 'i', 'd', 's'); +enum streamtypeAUDIO = mmioFOURCC!('a', 'u', 'd', 's'); +enum streamtypeMIDI = mmioFOURCC!('m', 'i', 'd', 's'); +enum streamtypeTEXT = mmioFOURCC!('t', 'x', 't', 's'); + +enum cktypeDIBbits = aviTWOCC!('d', 'b'); +enum cktypeDIBcompressed = aviTWOCC!('d', 'c'); +enum cktypePALchange = aviTWOCC!('p', 'c'); +enum cktypeWAVEbytes = aviTWOCC!('w', 'b'); + +enum ckidAVIPADDING = mmioFOURCC!('J', 'U', 'N', 'K'); DWORD FromHex(char n) { return (n >= 'A') ? n + 10 - 'A' : n - '0'; @@ -808,7 +808,7 @@ enum { AVIF_COPYRIGHTED = 0x00020000, } -const AVI_HEADERSIZE = 2048; +enum AVI_HEADERSIZE = 2048; struct MainAVIHeader { DWORD dwMicroSecPerFrame; @@ -824,9 +824,9 @@ struct MainAVIHeader { DWORD[4] dwReserved; } -const AVISF_DISABLED = 0x00000001; +enum AVISF_DISABLED = 0x00000001; -const AVISF_VIDEO_PALCHANGES = 0x00010000; +enum AVISF_VIDEO_PALCHANGES = 0x00010000; struct AVIStreamHeader { FOURCC fccType; @@ -868,7 +868,7 @@ struct AVIPALCHANGE { PALETTEENTRY* peNew() return { return _peNew.ptr; } } -const AVIGETFRAMEF_BESTDISPLAYFMT = 1; +enum AVIGETFRAMEF_BESTDISPLAYFMT = 1; struct AVISTREAMINFOW { DWORD fccType; @@ -922,8 +922,8 @@ version(Unicode) { alias LPAVISTREAMINFOA LPAVISTREAMINFO; } -const AVISTREAMINFO_DISABLED = 0x00000001; -const AVISTREAMINFO_FORMATCHANGES = 0x00010000; +enum AVISTREAMINFO_DISABLED = 0x00000001; +enum AVISTREAMINFO_FORMATCHANGES = 0x00010000; struct AVIFILEINFOW { DWORD dwMaxBytesPerSec; @@ -1476,31 +1476,31 @@ STDAPI EditStreamSetInfoA(PAVISTREAM pavi, LPAVISTREAMINFOA lpInfo, LONG cbInfo) #define EditStreamSetName EditStreamSetNameA #endif +/ -const AVIERR_OK = 0L; +enum AVIERR_OK = 0L; SCODE MAKE_AVIERR(DWORD error) { return MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x4000 + error); } -const AVIERR_UNSUPPORTED = MAKE_AVIERR(101); -const AVIERR_BADFORMAT = MAKE_AVIERR(102); -const AVIERR_MEMORY = MAKE_AVIERR(103); -const AVIERR_INTERNAL = MAKE_AVIERR(104); -const AVIERR_BADFLAGS = MAKE_AVIERR(105); -const AVIERR_BADPARAM = MAKE_AVIERR(106); -const AVIERR_BADSIZE = MAKE_AVIERR(107); -const AVIERR_BADHANDLE = MAKE_AVIERR(108); -const AVIERR_FILEREAD = MAKE_AVIERR(109); -const AVIERR_FILEWRITE = MAKE_AVIERR(110); -const AVIERR_FILEOPEN = MAKE_AVIERR(111); -const AVIERR_COMPRESSOR = MAKE_AVIERR(112); -const AVIERR_NOCOMPRESSOR = MAKE_AVIERR(113); -const AVIERR_READONLY = MAKE_AVIERR(114); -const AVIERR_NODATA = MAKE_AVIERR(115); -const AVIERR_BUFFERTOOSMALL = MAKE_AVIERR(116); -const AVIERR_CANTCOMPRESS = MAKE_AVIERR(117); -const AVIERR_USERABORT = MAKE_AVIERR(198); -const AVIERR_ERROR = MAKE_AVIERR(199); +enum AVIERR_UNSUPPORTED = MAKE_AVIERR(101); +enum AVIERR_BADFORMAT = MAKE_AVIERR(102); +enum AVIERR_MEMORY = MAKE_AVIERR(103); +enum AVIERR_INTERNAL = MAKE_AVIERR(104); +enum AVIERR_BADFLAGS = MAKE_AVIERR(105); +enum AVIERR_BADPARAM = MAKE_AVIERR(106); +enum AVIERR_BADSIZE = MAKE_AVIERR(107); +enum AVIERR_BADHANDLE = MAKE_AVIERR(108); +enum AVIERR_FILEREAD = MAKE_AVIERR(109); +enum AVIERR_FILEWRITE = MAKE_AVIERR(110); +enum AVIERR_FILEOPEN = MAKE_AVIERR(111); +enum AVIERR_COMPRESSOR = MAKE_AVIERR(112); +enum AVIERR_NOCOMPRESSOR = MAKE_AVIERR(113); +enum AVIERR_READONLY = MAKE_AVIERR(114); +enum AVIERR_NODATA = MAKE_AVIERR(115); +enum AVIERR_BUFFERTOOSMALL = MAKE_AVIERR(116); +enum AVIERR_CANTCOMPRESS = MAKE_AVIERR(117); +enum AVIERR_USERABORT = MAKE_AVIERR(198); +enum AVIERR_ERROR = MAKE_AVIERR(199); const TCHAR[] MCIWND_WINDOW_CLASS = "MCIWndClass"; @@ -1794,8 +1794,8 @@ enum { MCIWNDM_NOTIFYERROR = WM_USER + 205, } -const MCIWND_START = -1; -const MCIWND_END = -2; +enum MCIWND_START = -1; +enum MCIWND_END = -2; enum { MCI_CLOSE = 0x0804, @@ -2252,8 +2252,8 @@ struct CAPTUREPARMS { } alias CAPTUREPARMS* PCAPTUREPARMS, LPCAPTUREPARMS; -const AVSTREAMMASTER_AUDIO = 0; -const AVSTREAMMASTER_NONE = 1; +enum AVSTREAMMASTER_AUDIO = 0; +enum AVSTREAMMASTER_NONE = 1; struct CAPINFOCHUNK { FOURCC fccInfoID; @@ -2287,8 +2287,8 @@ extern (Windows) { } // CapControlCallback states -const CONTROLCALLBACK_PREROLL = 1; -const CONTROLCALLBACK_CAPTURING = 2; +enum CONTROLCALLBACK_PREROLL = 1; +enum CONTROLCALLBACK_CAPTURING = 2; extern (Windows) { HWND capCreateCaptureWindowA(LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); @@ -2306,8 +2306,8 @@ version(Unicode) { } // New Information chunk IDs -const infotypeDIGITIZATION_TIME = mmioFOURCC!('I', 'D', 'I', 'T'); -const infotypeSMPTE_TIME = mmioFOURCC!('I', 'S', 'M', 'P'); +enum infotypeDIGITIZATION_TIME = mmioFOURCC!('I', 'D', 'I', 'T'); +enum infotypeSMPTE_TIME = mmioFOURCC!('I', 'S', 'M', 'P'); // status and error callbacks enum { diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index 3b4228fd8e..6913488b18 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -170,7 +170,7 @@ enum : DWORD { RIP_EVENT } -const HFILE HFILE_ERROR = cast(HFILE) (-1); +enum HFILE HFILE_ERROR = cast(HFILE) (-1); // for SetFilePointer() enum : DWORD { @@ -178,7 +178,7 @@ enum : DWORD { FILE_CURRENT = 1, FILE_END = 2 } -const DWORD INVALID_SET_FILE_POINTER = -1; +enum DWORD INVALID_SET_FILE_POINTER = -1; // for OpenFile() @@ -208,7 +208,7 @@ enum : DWORD { } // for ClearCommError() -const DWORD +enum DWORD CE_RXOVER = 0x0001, CE_OVERRUN = 0x0002, CE_RXPARITY = 0x0004, @@ -263,7 +263,7 @@ enum : DWORD { PIPE_ACCESS_DUPLEX = 3 } -const DWORD +enum DWORD PIPE_TYPE_BYTE = 0, PIPE_TYPE_MESSAGE = 4, PIPE_READMODE_BYTE = 0, @@ -272,11 +272,11 @@ const DWORD PIPE_NOWAIT = 1; // GetNamedPipeInfo() -const DWORD +enum DWORD PIPE_CLIENT_END = 0, PIPE_SERVER_END = 1; -const DWORD PIPE_UNLIMITED_INSTANCES = 255; +enum DWORD PIPE_UNLIMITED_INSTANCES = 255; // dwCreationFlags for CreateProcess() and CreateProcessAsUser() enum : DWORD { @@ -305,7 +305,7 @@ enum : DWORD { PROFILE_SERVER = 0x40000000 } -const DWORD CONSOLE_TEXTMODE_BUFFER = 1; +enum DWORD CONSOLE_TEXTMODE_BUFFER = 1; // CreateFile() enum : DWORD { @@ -317,7 +317,7 @@ enum : DWORD { } // CreateFile() -const DWORD +enum DWORD FILE_FLAG_WRITE_THROUGH = 0x80000000, FILE_FLAG_OVERLAPPED = 0x40000000, FILE_FLAG_NO_BUFFERING = 0x20000000, @@ -330,11 +330,11 @@ const DWORD FILE_FLAG_OPEN_NO_RECALL = 0x00100000; static if (_WIN32_WINNT >= 0x500) { - const DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; +enum DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; } // for CreateFile() -const DWORD +enum DWORD SECURITY_ANONYMOUS = SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16, SECURITY_IDENTIFICATION = SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16, SECURITY_IMPERSONATION = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16, @@ -346,12 +346,12 @@ const DWORD // Thread exit code -const DWORD STILL_ACTIVE = 0x103; +enum DWORD STILL_ACTIVE = 0x103; /* ??? The only documentation of this seems to be about Windows CE and to * state what _doesn't_ support it. */ -const DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; +enum DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; // GetBinaryType() enum : DWORD { @@ -363,13 +363,13 @@ enum : DWORD { SCS_OS216_BINARY } -const size_t +enum size_t MAX_COMPUTERNAME_LENGTH = 15, HW_PROFILE_GUIDLEN = 39, MAX_PROFILE_LEN = 80; // HW_PROFILE_INFO -const DWORD +enum DWORD DOCKINFO_UNDOCKED = 1, DOCKINFO_DOCKED = 2, DOCKINFO_USER_SUPPLIED = 4, @@ -397,7 +397,7 @@ enum : DWORD { } // Get/SetHandleInformation() -const DWORD +enum DWORD HANDLE_FLAG_INHERIT = 0x01, HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x02; @@ -438,7 +438,7 @@ enum : DWORD { TIME_ZONE_ID_INVALID = 0xFFFFFFFF } -const DWORD +enum DWORD FS_CASE_SENSITIVE = 1, FS_CASE_IS_PRESERVED = 2, FS_UNICODE_STORED_ON_DISK = 4, @@ -447,7 +447,7 @@ const DWORD FS_VOL_IS_COMPRESSED = 32768; // Flags for GlobalAlloc -const UINT +enum UINT GMEM_FIXED = 0, GMEM_MOVEABLE = 0x0002, GMEM_ZEROINIT = 0x0040, @@ -474,7 +474,7 @@ const UINT GMEM_NOTIFY = 16384; +/ -const UINT +enum UINT LMEM_FIXED = 0, LMEM_MOVEABLE = 0x0002, LMEM_NONZEROLPTR = 0, @@ -559,7 +559,7 @@ enum : DWORD { } // for PROCESS_HEAP_ENTRY -const WORD +enum WORD PROCESS_HEAP_REGION = 1, PROCESS_HEAP_UNCOMMITTED_RANGE = 2, PROCESS_HEAP_ENTRY_BUSY = 4, @@ -567,22 +567,22 @@ const WORD PROCESS_HEAP_ENTRY_DDESHARE = 32; // for LoadLibraryEx() -const DWORD +enum DWORD DONT_RESOLVE_DLL_REFERENCES = 0x01, // not for WinME and earlier LOAD_LIBRARY_AS_DATAFILE = 0x02, LOAD_WITH_ALTERED_SEARCH_PATH = 0x08, LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10; // only for XP and later // for LockFile() -const DWORD +enum DWORD LOCKFILE_FAIL_IMMEDIATELY = 1, LOCKFILE_EXCLUSIVE_LOCK = 2; -const MAXIMUM_WAIT_OBJECTS = 64; -const MAXIMUM_SUSPEND_COUNT = 0x7F; +enum MAXIMUM_WAIT_OBJECTS = 64; +enum MAXIMUM_SUSPEND_COUNT = 0x7F; -const WAIT_OBJECT_0 = 0; -const WAIT_ABANDONED_0 = 128; +enum WAIT_OBJECT_0 = 0; +enum WAIT_ABANDONED_0 = 128; //const WAIT_TIMEOUT=258; // also in winerror.h @@ -593,14 +593,14 @@ enum : DWORD { } // PurgeComm() -const DWORD +enum DWORD PURGE_TXABORT = 1, PURGE_RXABORT = 2, PURGE_TXCLEAR = 4, PURGE_RXCLEAR = 8; // ReadEventLog() -const DWORD +enum DWORD EVENTLOG_SEQUENTIAL_READ = 1, EVENTLOG_SEEK_READ = 2, EVENTLOG_FORWARDS_READ = 4, @@ -617,7 +617,7 @@ enum : WORD { } // FormatMessage() -const DWORD +enum DWORD FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100, FORMAT_MESSAGE_IGNORE_INSERTS = 0x0200, FORMAT_MESSAGE_FROM_STRING = 0x0400, @@ -625,7 +625,7 @@ const DWORD FORMAT_MESSAGE_FROM_SYSTEM = 0x1000, FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x2000; -const DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; +enum DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; // also in ddk/ntapi.h // To restore default error mode, call SetErrorMode(0) @@ -643,7 +643,7 @@ enum { SLE_WARNING } -const SHUTDOWN_NORETRY = 1; +enum SHUTDOWN_NORETRY = 1; // Return type for exception filters. enum : LONG { @@ -657,8 +657,8 @@ enum : ATOM { INVALID_ATOM = 0 } -const IGNORE = 0; -const INFINITE = 0xFFFFFFFF; +enum IGNORE = 0; +enum INFINITE = 0xFFFFFFFF; // EscapeCommFunction() enum { @@ -674,7 +674,7 @@ enum { // for SetCommMask() -const DWORD +enum DWORD EV_RXCHAR = 0x0001, EV_RXFLAG = 0x0002, EV_TXEMPTY = 0x0004, @@ -690,7 +690,7 @@ const DWORD EV_EVENT2 = 0x1000; // GetCommModemStatus() -const DWORD +enum DWORD MS_CTS_ON = 0x0010, MS_DSR_ON = 0x0020, MS_RING_ON = 0x0040, @@ -767,7 +767,7 @@ enum : DWORD { } // STARTUPINFO -const DWORD +enum DWORD STARTF_USESHOWWINDOW = 0x0001, STARTF_USESIZE = 0x0002, STARTF_USEPOSITION = 0x0004, @@ -808,15 +808,15 @@ enum { +/ // ??? -const HINSTANCE_ERROR = 32; +enum HINSTANCE_ERROR = 32; // returned from GetFileSize() -const DWORD INVALID_FILE_SIZE = 0xFFFFFFFF; +enum DWORD INVALID_FILE_SIZE = 0xFFFFFFFF; -const DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; +enum DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; // GetWriteWatch() -const DWORD WRITE_WATCH_FLAG_RESET = 1; +enum DWORD WRITE_WATCH_FLAG_RESET = 1; // for LogonUser() enum : DWORD { @@ -836,14 +836,14 @@ enum : DWORD { } // for MoveFileEx() -const DWORD +enum DWORD MOVEFILE_REPLACE_EXISTING = 1, MOVEFILE_COPY_ALLOWED = 2, MOVEFILE_DELAY_UNTIL_REBOOT = 4, MOVEFILE_WRITE_THROUGH = 8; // DefineDosDevice() -const DWORD +enum DWORD DDD_RAW_TARGET_PATH = 1, DDD_REMOVE_DEFINITION = 2, DDD_EXACT_MATCH_ON_REMOVE = 4; @@ -855,19 +855,19 @@ static if (_WIN32_WINNT >= 0x500) { } // ReplaceFile() - const DWORD +enum DWORD REPLACEFILE_WRITE_THROUGH = 1, REPLACEFILE_IGNORE_MERGE_ERRORS = 2; } static if (_WIN32_WINNT >= 0x501) { - const DWORD +enum DWORD GET_MODULE_HANDLE_EX_FLAG_PIN = 1, GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4; // for ACTCTX - const DWORD +enum DWORD ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x01, ACTCTX_FLAG_LANGID_VALID = 0x02, ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x04, @@ -877,11 +877,11 @@ static if (_WIN32_WINNT >= 0x501) { ACTCTX_FLAG_HMODULE_VALID = 0x80; // DeactivateActCtx() - const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; +enum DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; // FindActCtxSectionString() - const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 1; +enum DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 1; // QueryActCtxW() - const DWORD +enum DWORD QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x04, QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x08, QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x10; diff --git a/src/core/sys/windows/winber.d b/src/core/sys/windows/winber.d index 9d20af8857..9ff3231b20 100644 --- a/src/core/sys/windows/winber.d +++ b/src/core/sys/windows/winber.d @@ -45,7 +45,7 @@ struct BerValue { alias BerValue LDAP_BERVAL, BERVAL; alias BerValue* PLDAP_BERVAL, PBERVAL; -const ber_tag_t +enum ber_tag_t LBER_ERROR = -1, LBER_DEFAULT = -1, LBER_USE_DER = 1; diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index 901afb4e45..5c32b7ba8b 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -247,7 +247,7 @@ HWND GetConsoleWindow(); static if (_WIN32_WINNT >= 0x501) { BOOL AttachConsole(DWORD); BOOL SetConsoleDisplayMode(HANDLE, DWORD, PCOORD); -const DWORD ATTACH_PARENT_PROCESS = cast(DWORD)-1; +enum DWORD ATTACH_PARENT_PROCESS = cast(DWORD)-1; } BOOL SetConsoleMode(HANDLE, DWORD); diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index 68735f6d07..5277d7abd6 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -36,10 +36,10 @@ const TCHAR[] MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider"; static if (_WIN32_WINNT > 0x501) { - const TCHAR[] MS_ENH_RSA_AES_PROV +const TCHAR[] MS_ENH_RSA_AES_PROV = "Microsoft Enhanced RSA and AES Cryptographic Provider"; } else static if (_WIN32_WINNT == 0x501) { - const TCHAR[] MS_ENH_RSA_AES_PROV +const TCHAR[] MS_ENH_RSA_AES_PROV = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; } @@ -833,12 +833,12 @@ extern (Windows) { HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR); HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, const(void)*); PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWORD, - const(void)*, PCCERT_CONTEXT); +const(void)*, PCCERT_CONTEXT); BOOL CertFreeCertificateContext(PCCERT_CONTEXT); PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE, PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*); PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWORD, - const(void)*, PCCERT_CHAIN_CONTEXT); +const(void)*, PCCERT_CHAIN_CONTEXT); BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); diff --git a/src/core/sys/windows/windef.d b/src/core/sys/windows/windef.d index 71b83652eb..25cf044065 100644 --- a/src/core/sys/windows/windef.d +++ b/src/core/sys/windows/windef.d @@ -13,7 +13,7 @@ version (Windows): public import core.sys.windows.winnt; private import core.sys.windows.w32api; -const size_t MAX_PATH = 260; +enum size_t MAX_PATH = 260; pure nothrow @nogc { ushort MAKEWORD(ubyte a, ubyte b) { diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index 7366702508..ccfb9887bc 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -28,7 +28,7 @@ enum : DWORD { // --- // COLORADJUSTMENT -- only for NT 3.1+, Win2000+ -const WORD +enum WORD CA_NEGATIVE = 1, CA_LOG_FILTER = 2; @@ -198,12 +198,12 @@ enum : DWORD { EMR_CREATECOLORSPACEW // 122 } -const EMR_MIN = EMR_HEADER; +enum EMR_MIN = EMR_HEADER; static if (_WIN32_WINNT >= 0x500) { - const EMR_MAX = EMR_CREATECOLORSPACEW; +enum EMR_MAX = EMR_CREATECOLORSPACEW; } else { - const EMR_MAX = EMR_PIXELFORMAT; +enum EMR_MAX = EMR_PIXELFORMAT; } // ENHMETAHEADER.dSignature, ENHMETAHEADER3.dSignature, @@ -310,13 +310,13 @@ enum : BYTE { //deprecated { // PIXELFORMATDESCRIPTOR. -const byte +enum byte PFD_MAIN_PLANE = 0, PFD_OVERLAY_PLANE = 1, PFD_UNDERLAY_PLANE = -1; //} // PIXELFORMATDESCRIPTOR.dwFlags -const DWORD +enum DWORD PFD_DOUBLEBUFFER = 0x00000001, PFD_STEREO = 0x00000002, PFD_DRAW_TO_WINDOW = 0x00000004, @@ -340,7 +340,7 @@ const DWORD // ---- -const DWORD +enum DWORD BLACKNESS = 0x000042, NOTSRCERASE = 0x1100A6, NOTSRCCOPY = 0x330008, @@ -357,7 +357,7 @@ const DWORD PATPAINT = 0xFB0A09, WHITENESS = 0xFF0062; static if (_WIN32_WINNT >= 0x500) { - const DWORD +enum DWORD NOMIRRORBITMAP = 0x80000000, CAPTUREBLT = 0x40000000; } @@ -382,15 +382,15 @@ enum : int { R2_WHITE = 16 } -const R2_LAST = R2_WHITE; +enum R2_LAST = R2_WHITE; // CheckColorsInGamut() -const ubyte +enum ubyte CM_IN_GAMUT = 0, CM_OUT_OF_GAMUT = 255; /* UpdateICMRegKey Constants */ -const int +enum int ICM_ADDPROFILE = 1, ICM_DELETEPROFILE = 2, ICM_QUERYPROFILE = 3, @@ -407,8 +407,8 @@ enum : int { RGN_COPY = 5 } -const RGN_MIN = RGN_AND; -const RGN_MAX = RGN_COPY; +enum RGN_MIN = RGN_AND; +enum RGN_MAX = RGN_COPY; // Return values for CombineRgn() enum { @@ -417,11 +417,11 @@ enum { COMPLEXREGION = 3 } -const ERROR = 0; +enum ERROR = 0; alias ERROR RGN_ERROR; // CreateDIBitmap() -const DWORD CBM_INIT = 4; +enum DWORD CBM_INIT = 4; // CreateDIBitmap() enum : UINT { @@ -433,18 +433,18 @@ enum : UINT { // Values for LOGFONT and CreateFont() // FIXME: For D, replace with lfFaceName.length() -const LF_FACESIZE = 32; -const LF_FULLFACESIZE = 64; +enum LF_FACESIZE = 32; +enum LF_FULLFACESIZE = 64; // FIXME: Not needed for D, only EXTLOGFONT -const ELF_VENDOR_SIZE = 4; +enum ELF_VENDOR_SIZE = 4; // ??? -const ELF_VERSION = 0; -const ELF_CULTURE_LATIN = 0; +enum ELF_VERSION = 0; +enum ELF_CULTURE_LATIN = 0; // LOGFONT.lfWeight -const LONG +enum LONG FW_DONTCARE = 0, FW_THIN = 100, FW_EXTRALIGHT = 200, @@ -523,7 +523,7 @@ enum : BYTE { // LOGFONT.lfPitchAndFamily -const BYTE +enum BYTE DEFAULT_PITCH = 0, FIXED_PITCH = 1, VARIABLE_PITCH = 2, @@ -538,7 +538,7 @@ const BYTE // ---- // Enums for the PANOSE struct -const PANOSE_COUNT=10; +enum PANOSE_COUNT=10; enum { PAN_FAMILYTYPE_INDEX = 0, @@ -553,7 +553,7 @@ enum { PAN_XHEIGHT_INDEX } -const PAN_CULTURE_LATIN=0; +enum PAN_CULTURE_LATIN=0; // NOTE: the first two values (PAN_ANY and PAN_NO_FIT) apply to all these enums! enum : BYTE { @@ -690,22 +690,22 @@ enum : BYTE { // ---- // ??? -const FS_LATIN1 = 0x00000001; -const FS_LATIN2 = 0x00000002; -const FS_CYRILLIC = 0x00000004; -const FS_GREEK = 0x00000008; -const FS_TURKISH = 0x00000010; -const FS_HEBREW = 0x00000020; -const FS_ARABIC = 0x00000040; -const FS_BALTIC = 0x00000080; -const FS_VIETNAMESE = 0x00000100; -const FS_THAI = 0x00010000; -const FS_JISJAPAN = 0x00020000; -const FS_CHINESESIMP = 0x00040000; -const FS_WANSUNG = 0x00080000; -const FS_CHINESETRAD = 0x00100000; -const FS_JOHAB = 0x00200000; -const FS_SYMBOL = 0x80000000; +enum FS_LATIN1 = 0x00000001; +enum FS_LATIN2 = 0x00000002; +enum FS_CYRILLIC = 0x00000004; +enum FS_GREEK = 0x00000008; +enum FS_TURKISH = 0x00000010; +enum FS_HEBREW = 0x00000020; +enum FS_ARABIC = 0x00000040; +enum FS_BALTIC = 0x00000080; +enum FS_VIETNAMESE = 0x00000100; +enum FS_THAI = 0x00010000; +enum FS_JISJAPAN = 0x00020000; +enum FS_CHINESESIMP = 0x00040000; +enum FS_WANSUNG = 0x00080000; +enum FS_CHINESETRAD = 0x00100000; +enum FS_JOHAB = 0x00200000; +enum FS_SYMBOL = 0x80000000; // ---- // Poly Fill Mode @@ -713,7 +713,7 @@ enum : int { ALTERNATE = 1, WINDING = 2 } -const int POLYFILL_LAST = WINDING; +enum int POLYFILL_LAST = WINDING; //--- // LOGBRUSH @@ -829,7 +829,7 @@ static if (_WIN32_WINNT >= 0x500) { // return from DC_TRUETYPE -const DWORD +enum DWORD DCTT_BITMAP = 1, DCTT_DOWNLOAD = 2, DCTT_SUBDEV = 4, @@ -848,11 +848,11 @@ enum : DWORD { } //--- -const FLOODFILLBORDER = 0; -const FLOODFILLSURFACE = 1; +enum FLOODFILLBORDER = 0; +enum FLOODFILLSURFACE = 1; // ExtTextOut() -const UINT +enum UINT ETO_OPAQUE = 0x0002, ETO_CLIPPED = 0x0004, ETO_GLYPH_INDEX = 0x0010, @@ -861,7 +861,7 @@ const UINT ETO_NUMERICSLATIN = 0x0800, ETO_IGNORELANGUAGE = 0x1000; static if (_WIN32_WINNT >= 0x500) { - const UINT +enum UINT ETO_PDY = 0x2000; } @@ -882,7 +882,7 @@ enum : int { AD_CLOCKWISE = 2 } -const RDH_RECTANGLES = 1; +enum RDH_RECTANGLES = 1; // GCPRESULTS.lpClass enum { @@ -904,7 +904,7 @@ enum { } // GetBoundsRect(), SetBoundsRect() -const UINT +enum UINT DCB_RESET = 1, DCB_ACCUMULATE = 2, DCB_SET = DCB_RESET | DCB_ACCUMULATE, @@ -993,7 +993,7 @@ enum : int { } // Return values for GetDeviceCaps(dc, RASTERCAPS) -const int +enum int RC_NONE = 0, RC_BITBLT = 1, RC_BANDING = 2, @@ -1014,21 +1014,21 @@ const int static if (_WIN32_WINNT >= 0x500) { /* Shading and blending caps */ - const SB_NONE = 0x00000000; - const SB_CONST_ALPHA = 0x00000001; - const SB_PIXEL_ALPHA = 0x00000002; - const SB_PREMULT_ALPHA = 0x00000004; - const SB_GRAD_RECT = 0x00000010; - const SB_GRAD_TRI = 0x00000020; +enum SB_NONE = 0x00000000; +enum SB_CONST_ALPHA = 0x00000001; +enum SB_PIXEL_ALPHA = 0x00000002; +enum SB_PREMULT_ALPHA = 0x00000004; +enum SB_GRAD_RECT = 0x00000010; +enum SB_GRAD_TRI = 0x00000020; /* Color Management caps */ - const CM_NONE = 0x00000000; - const CM_DEVICE_ICM = 0x00000001; - const CM_GAMMA_RAMP = 0x00000002; - const CM_CMYK_COLOR = 0x00000004; +enum CM_NONE = 0x00000000; +enum CM_DEVICE_ICM = 0x00000001; +enum CM_GAMMA_RAMP = 0x00000002; +enum CM_CMYK_COLOR = 0x00000004; } // Return values for GetDeviceCaps(dc, CURVECAPS) -const int +enum int CC_NONE = 0, CC_CIRCLES = 1, CC_PIE = 2, @@ -1042,7 +1042,7 @@ const int // Return values for GetDeviceCaps(dc, LINECAPS) -const int +enum int LC_NONE = 0, LC_POLYLINE = 2, LC_MARKER = 4, @@ -1054,7 +1054,7 @@ const int // Return values for GetDeviceCaps(dc, POLYGONALCAPS) -const int +enum int PC_NONE = 0, PC_POLYGON = 1, PC_RECTANGLE = 2, @@ -1069,13 +1069,13 @@ const int PC_PATHS = 512; /* Clipping Capabilities */ -const int CP_NONE = 0, +enum int CP_NONE = 0, CP_RECTANGLE = 1, CP_REGION = 2; // Return values for GetDeviceCaps(dc, TEXTCAPS) -const int +enum int TC_OP_CHARACTER = 1, TC_OP_STROKE = 2, TC_CP_STROKE = 4, @@ -1097,7 +1097,7 @@ const int // End GetDeviceCaps //--------------------- // GetCharacterPlacement(), and GetFontLanguageInfo() -const DWORD +enum DWORD GCP_DBCS = 1, GCP_REORDER = 2, GCP_USEKERNING = 8, @@ -1137,7 +1137,7 @@ enum : int { GM_COMPATIBLE = 1, GM_ADVANCED } -const GM_LAST = GM_ADVANCED; +enum GM_LAST = GM_ADVANCED; enum : int { MM_TEXT = 1, @@ -1150,13 +1150,13 @@ enum : int { MM_ANISOTROPIC, } -const int +enum int MM_MIN = MM_TEXT, MM_MAX = MM_ANISOTROPIC, MM_MAX_FIXEDSCALE = MM_TWIPS; -const ABSOLUTE = 1; -const RELATIVE = 2; +enum ABSOLUTE = 1; +enum RELATIVE = 2; enum : BYTE { PC_RESERVED = 1, @@ -1166,13 +1166,13 @@ enum : BYTE { /* FIXME: move to core.sys.windows.commctrl ? */ // ImageList -const COLORREF +enum COLORREF CLR_NONE = 0xffffffff, CLR_INVALID = CLR_NONE, CLR_DEFAULT = 0xff000000; // RASTERIZER_STATUS.wFlags -const short +enum short TT_AVAILABLE = 1, TT_ENABLED = 2; @@ -1205,9 +1205,9 @@ static if (_WIN32_WINNT >= 0x500) { } static if (_WIN32_WINNT >= 0x500) { - const STOCK_LAST = DC_PEN; +enum STOCK_LAST = DC_PEN; } else { - const STOCK_LAST = DEFAULT_GUI_FONT; +enum STOCK_LAST = DEFAULT_GUI_FONT; } // Get/SetSystemPaletteUse() @@ -1219,7 +1219,7 @@ enum : UINT { } // SetTextAlign() -const UINT +enum UINT TA_TOP = 0, TA_CENTER = 6, TA_BOTTOM = 8, @@ -1244,7 +1244,7 @@ enum : DWORD { MWT_RIGHTMULTIPLY } -const DWORD +enum DWORD MWT_MIN = MWT_IDENTITY, MWT_MAX = MWT_RIGHTMULTIPLY; @@ -1451,22 +1451,22 @@ enum { } /* Value returned for FEATURESETTING_PROTOCOL */ -const PSPROTOCOL_ASCII = 0; -const PSPROTOCOL_BCP = 1; -const PSPROTOCOL_TBCP = 2; -const PSPROTOCOL_BINARY = 3; +enum PSPROTOCOL_ASCII = 0; +enum PSPROTOCOL_BCP = 1; +enum PSPROTOCOL_TBCP = 2; +enum PSPROTOCOL_BINARY = 3; // ---- -const WPARAM PR_JOBSTATUS = 0; +enum WPARAM PR_JOBSTATUS = 0; // ??? -const QDI_SETDIBITS = 1; -const QDI_GETDIBITS = 2; -const QDI_DIBTOSCREEN = 4; -const QDI_STRETCHDIB = 8; +enum QDI_SETDIBITS = 1; +enum QDI_GETDIBITS = 2; +enum QDI_DIBTOSCREEN = 4; +enum QDI_STRETCHDIB = 8; -const ASPECT_FILTERING = 1; +enum ASPECT_FILTERING = 1; // LOGCOLORSPACE.lcsCSType enum : LCSCSTYPE { @@ -1483,7 +1483,7 @@ enum : LCSGAMUTMATCH { LCS_GM_ABS_COLORIMETRIC = 8, } -const DWORD +enum DWORD RASTER_FONTTYPE = 1, DEVICE_FONTTYPE = 2, TRUETYPE_FONTTYPE = 4; @@ -1492,12 +1492,12 @@ const DWORD // DEVMODE struct // FIXME: Not needed for D (use .length instead) -const CCHDEVICENAME = 32; -const CCHFORMNAME = 32; +enum CCHDEVICENAME = 32; +enum CCHFORMNAME = 32; // DEVMODE.dmSpecVersion // current version of specification -const WORD DM_SPECVERSION = 0x0401; +enum WORD DM_SPECVERSION = 0x0401; // DEVMODE.dmOrientation enum : short { @@ -1631,15 +1631,15 @@ static if (_WIN32_WINNT >= 0x500) { } } -const short DMPAPER_FIRST = DMPAPER_LETTER; +enum short DMPAPER_FIRST = DMPAPER_LETTER; static if (_WIN32_WINNT >= 0x500) { - const short DMPAPER_LAST = DMPAPER_PENV_10_ROTATED; +enum short DMPAPER_LAST = DMPAPER_PENV_10_ROTATED; } else { - const short DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE; +enum short DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE; } -const short DMPAPER_USER = 256; +enum short DMPAPER_USER = 256; // DEVMODE.dmDefaultSource @@ -1720,35 +1720,35 @@ static if (_WIN32_WINNT >= 0x501) { /* FIXME: this flags are deprecated ? */ // DEVMODE.dmDisplayFlags -const DWORD +enum DWORD DM_GRAYSCALE = 1, DM_INTERLACED = 2; -const DWORD +enum DWORD DMDISPLAYFLAGS_TEXTMODE = 0x00000004; /* dmNup , multiple logical page per physical page options */ -const DWORD +enum DWORD DMNUP_SYSTEM = 1, DMNUP_ONEUP = 2; // DEVMODE.dmFields -const DWORD +enum DWORD DM_ORIENTATION = 0x00000001, DM_PAPERSIZE = 0x00000002, DM_PAPERLENGTH = 0x00000004, DM_PAPERWIDTH = 0x00000008, DM_SCALE = 0x00000010; static if (_WIN32_WINNT >= 0x500) { - const DWORD +enum DWORD DM_POSITION = 0x00000020, DM_NUP = 0x00000040; } static if (_WIN32_WINNT >= 0x501) { - const DWORD +enum DWORD DM_DISPLAYORIENTATION = 0x00000080; } -const DWORD +enum DWORD DM_COPIES = 0x00000100, DM_DEFAULTSOURCE = 0x00000200, DM_PRINTQUALITY = 0x00000400, @@ -1771,7 +1771,7 @@ const DWORD DM_PANNINGWIDTH = 0x08000000, DM_PANNINGHEIGHT = 0x10000000; static if (_WIN32_WINNT >= 0x501) { - const DWORD +enum DWORD DM_DISPLAYFIXEDOUTPUT = 0x20000000; } @@ -1818,7 +1818,7 @@ enum : DWORD { // ---- // DocumentProperties() -const DWORD +enum DWORD DM_UPDATE = 1, DM_COPY = 2, DM_PROMPT = 4, @@ -1829,18 +1829,18 @@ const DWORD DM_OUT_DEFAULT = DM_UPDATE; // --- -const GDI_ERROR = 0xFFFFFFFF; -const HGDI_ERROR= cast(HANDLE)GDI_ERROR; +enum GDI_ERROR = 0xFFFFFFFF; +enum HGDI_ERROR= cast(HANDLE)GDI_ERROR; // TEXTMETRIC.tmPitchAndFamily -const BYTE +enum BYTE TMPF_FIXED_PITCH = 1, TMPF_VECTOR = 2, TMPF_TRUETYPE = 4, TMPF_DEVICE = 8; // NEWTEXTMETRIC.ntmFlags -const DWORD +enum DWORD NTM_ITALIC = 0x00000001, NTM_BOLD = 0x00000020, NTM_REGULAR = 0x00000040, @@ -1852,7 +1852,7 @@ const DWORD NTM_DSIG = 0x00200000; // --- -const DWORD TT_POLYGON_TYPE = 24; +enum DWORD TT_POLYGON_TYPE = 24; // TTPOLYCURVE enum : WORD { @@ -1861,14 +1861,14 @@ enum : WORD { TT_PRIM_CSPLINE = 3, } // --- -const FONTMAPPER_MAX = 10; -const ENHMETA_STOCK_OBJECT = 0x80000000; -const WGL_FONT_LINES = 0; -const WGL_FONT_POLYGONS = 1; +enum FONTMAPPER_MAX = 10; +enum ENHMETA_STOCK_OBJECT = 0x80000000; +enum WGL_FONT_LINES = 0; +enum WGL_FONT_POLYGONS = 1; // --- // LAYERPLANEDESCRIPTOR.dwFlags -const DWORD +enum DWORD LPD_DOUBLEBUFFER = 1, LPD_STEREO = 2, LPD_SUPPORT_GDI = 16, @@ -1889,7 +1889,7 @@ enum : BYTE { // --- // wglSwapLayerBuffers() -const UINT +enum UINT WGL_SWAP_MAIN_PLANE = 1, WGL_SWAP_OVERLAY1 = 2, WGL_SWAP_OVERLAY2 = 4, @@ -1922,36 +1922,36 @@ const UINT WGL_SWAP_UNDERLAY14 = 0x20000000, WGL_SWAP_UNDERLAY15 = 0x40000000; -const AC_SRC_OVER = 0x00; -const AC_SRC_ALPHA = 0x01; +enum AC_SRC_OVER = 0x00; +enum AC_SRC_ALPHA = 0x01; // ??? -const AC_SRC_NO_PREMULT_ALPHA = 0x01; -const AC_SRC_NO_ALPHA = 0x02; -const AC_DST_NO_PREMULT_ALPHA = 0x10; -const AC_DST_NO_ALPHA = 0x20; +enum AC_SRC_NO_PREMULT_ALPHA = 0x01; +enum AC_SRC_NO_ALPHA = 0x02; +enum AC_DST_NO_PREMULT_ALPHA = 0x10; +enum AC_DST_NO_ALPHA = 0x20; -const LAYOUT_RTL = 1; -const LAYOUT_BTT = 2; -const LAYOUT_VBH = 4; -const LAYOUT_BITMAPORIENTATIONPRESERVED = 8; +enum LAYOUT_RTL = 1; +enum LAYOUT_BTT = 2; +enum LAYOUT_VBH = 4; +enum LAYOUT_BITMAPORIENTATIONPRESERVED = 8; -const CS_ENABLE = 0x00000001; -const CS_DISABLE = 0x00000002; -const CS_DELETE_TRANSFORM = 0x00000003; +enum CS_ENABLE = 0x00000001; +enum CS_DISABLE = 0x00000002; +enum CS_DELETE_TRANSFORM = 0x00000003; static if (_WIN32_WINNT > 0x500) { - const GRADIENT_FILL_RECT_H=0x00; - const GRADIENT_FILL_RECT_V=0x01; - const GRADIENT_FILL_TRIANGLE=0x02; - const GRADIENT_FILL_OP_FLAG=0xff; - const COLORMATCHTOTARGET_EMBEDED=0x00000001; - const CREATECOLORSPACE_EMBEDED=0x00000001; - const SETICMPROFILE_EMBEDED=0x00000001; +enum GRADIENT_FILL_RECT_H=0x00; +enum GRADIENT_FILL_RECT_V=0x01; +enum GRADIENT_FILL_TRIANGLE=0x02; +enum GRADIENT_FILL_OP_FLAG=0xff; +enum COLORMATCHTOTARGET_EMBEDED=0x00000001; +enum CREATECOLORSPACE_EMBEDED=0x00000001; +enum SETICMPROFILE_EMBEDED=0x00000001; } // DISPLAY_DEVICE.StateFlags -const DWORD +enum DWORD DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001, DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002, DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004, @@ -1963,12 +1963,12 @@ const DWORD DISPLAY_DEVICE_MODESPRUNED = 0x08000000; /* Child device state */ -const DWORD +enum DWORD DISPLAY_DEVICE_ACTIVE = 0x00000001, DISPLAY_DEVICE_ATTACHED = 0x00000002; static if (_WIN32_WINNT >= 0x500) { - const GGI_MARK_NONEXISTING_GLYPHS = 1; +enum GGI_MARK_NONEXISTING_GLYPHS = 1; } // ---------- @@ -3393,7 +3393,7 @@ struct RGNDATA { alias RGNDATA* PRGNDATA, NPRGNDATA, LPRGNDATA; /* for GetRandomRgn */ -const SYSRGN=4; +enum SYSRGN=4; struct GCP_RESULTSA { DWORD lStructSize; LPSTR lpOutString; @@ -3445,7 +3445,7 @@ static if (_WIN32_WINNT >= 0x500) { } alias GLYPHSET* PGLYPHSET, LPGLYPHSET; - const DWORD GS_8BIT_INDICES = 0x00000001; +enum DWORD GS_8BIT_INDICES = 0x00000001; } struct KERNINGPAIR { @@ -3794,7 +3794,7 @@ struct BLENDFUNCTION { } alias BLENDFUNCTION* PBLENDFUNCTION, LPBLENDFUNCTION; -const MM_MAX_NUMAXES = 16; +enum MM_MAX_NUMAXES = 16; struct DESIGNVECTOR { DWORD dvReserved; @@ -3802,12 +3802,12 @@ struct DESIGNVECTOR { LONG[MM_MAX_NUMAXES] dvValues; } alias DESIGNVECTOR* PDESIGNVECTOR, LPDESIGNVECTOR; -const STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8); -const STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8); +enum STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8); +enum STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8); static if (_WIN32_WINNT >= 0x500) { - const MM_MAX_AXES_NAMELEN = 16; +enum MM_MAX_AXES_NAMELEN = 16; struct AXISINFOA { LONG axMinValue; @@ -4374,7 +4374,7 @@ extern(Windows) nothrow @nogc { HDC hdc; UINT uiFlags; } - const WGL_SWAPMULTIPLE_MAX = 16; +enum WGL_SWAPMULTIPLE_MAX = 16; DWORD wglSwapMultipleBuffers(UINT, WGLSWAP*); } diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index 29fcd242f6..862e405c29 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -26,7 +26,7 @@ enum { INTERNET_DEFAULT_SOCKS_PORT = 1080 } -const size_t +enum size_t MAX_CACHE_ENTRY_INFO_SIZE = 4096, INTERNET_MAX_HOST_NAME_LENGTH = 256, INTERNET_MAX_USER_NAME_LENGTH = 128, @@ -50,7 +50,7 @@ enum { INTERNET_REQFLAG_ASYNC = 2 } -const DWORD +enum DWORD INTERNET_FLAG_RELOAD = 0x80000000, INTERNET_FLAG_RAW_DATA = 0x40000000, INTERNET_FLAG_EXISTING_CONNECT = 0x20000000, @@ -84,11 +84,11 @@ const DWORD INTERNET_FLAGS_MASK = 0xFFFCFE13, INTERNET_OPTIONS_MASK = ~INTERNET_FLAGS_MASK; -const INTERNET_NO_CALLBACK = 0; -const INTERNET_RFC1123_FORMAT = 0; -const size_t INTERNET_RFC1123_BUFSIZE = 30; +enum INTERNET_NO_CALLBACK = 0; +enum INTERNET_RFC1123_FORMAT = 0; +enum size_t INTERNET_RFC1123_BUFSIZE = 30; -const DWORD +enum DWORD ICU_ESCAPE = 0x80000000, ICU_USERNAME = 0x40000000, ICU_NO_ENCODE = 0x20000000, @@ -107,9 +107,9 @@ enum { CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY, } -const ISO_GLOBAL = 1; -const ISO_REGISTRY = 2; -const ISO_VALID_FLAGS = ISO_GLOBAL | ISO_REGISTRY; +enum ISO_GLOBAL = 1; +enum ISO_REGISTRY = 2; +enum ISO_VALID_FLAGS = ISO_GLOBAL | ISO_REGISTRY; enum { INTERNET_OPTION_CALLBACK = 1, @@ -157,7 +157,7 @@ enum { INTERNET_LAST_OPTION = INTERNET_OPTION_USER_AGENT } -const INTERNET_PRIORITY_FOREGROUND = 1000; +enum INTERNET_PRIORITY_FOREGROUND = 1000; enum { INTERNET_HANDLE_TYPE_INTERNET = 1, @@ -175,7 +175,7 @@ enum { INTERNET_HANDLE_TYPE_HTTP_REQUEST } -const DWORD +enum DWORD SECURITY_FLAG_SECURE = 0x00000001, SECURITY_FLAG_SSL = 0x00000002, SECURITY_FLAG_SSL3 = 0x00000004, @@ -227,7 +227,7 @@ enum { FTP_TRANSFER_TYPE_MASK = 3 } -const size_t +enum size_t MAX_GOPHER_DISPLAY_TEXT = 128, MAX_GOPHER_SELECTOR_TEXT = 256, MAX_GOPHER_HOST_NAME = INTERNET_MAX_HOST_NAME_LENGTH, @@ -235,7 +235,7 @@ const size_t = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1 + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 4; -const DWORD +enum DWORD GOPHER_TYPE_TEXT_FILE = 0x00000001, GOPHER_TYPE_DIRECTORY = 0x00000002, GOPHER_TYPE_CSO = 0x00000004, @@ -306,7 +306,7 @@ BOOL IS_GOPHER_TYPE_KNOWN(DWORD t) { return !(t & GOPHER_TYPE_UNKNOWN); } -const size_t +enum size_t MAX_GOPHER_CATEGORY_NAME = 128, MAX_GOPHER_ATTRIBUTE_NAME = 128, MIN_GOPHER_ATTRIBUTE_LENGTH = 256; @@ -362,8 +362,8 @@ enum : DWORD { GOPHER_ATTRIBUTE_ID_UNKNOWN } -const HTTP_MAJOR_VERSION = 1; -const HTTP_MINOR_VERSION = 0; +enum HTTP_MAJOR_VERSION = 1; +enum HTTP_MINOR_VERSION = 0; const TCHAR[] HTTP_VERSION = "HTTP/1.0"; enum : DWORD { @@ -417,7 +417,7 @@ enum : DWORD { HTTP_QUERY_CUSTOM = 65535 } -const DWORD +enum DWORD HTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, HTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, HTTP_QUERY_FLAG_NUMBER = 0x20000000, @@ -461,12 +461,12 @@ enum { INTERNET_PREFETCH_ABORTED } -const FLAGS_ERROR_UI_FILTER_FOR_ERRORS = 0x01; -const FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = 0x02; -const FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = 0x04; -const FLAGS_ERROR_UI_FLAGS_NO_UI = 0x08; +enum FLAGS_ERROR_UI_FILTER_FOR_ERRORS = 0x01; +enum FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = 0x02; +enum FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = 0x04; +enum FLAGS_ERROR_UI_FLAGS_NO_UI = 0x08; -const DWORD +enum DWORD HTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, HTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, @@ -553,21 +553,21 @@ enum { } -const NORMAL_CACHE_ENTRY = 0x000001; -const STABLE_CACHE_ENTRY = 0x000002; -const STICKY_CACHE_ENTRY = 0x000004; -const SPARSE_CACHE_ENTRY = 0x010000; -const OCX_CACHE_ENTRY = 0x020000; -const COOKIE_CACHE_ENTRY = 0x100000; -const URLHISTORY_CACHE_ENTRY = 0x200000; +enum NORMAL_CACHE_ENTRY = 0x000001; +enum STABLE_CACHE_ENTRY = 0x000002; +enum STICKY_CACHE_ENTRY = 0x000004; +enum SPARSE_CACHE_ENTRY = 0x010000; +enum OCX_CACHE_ENTRY = 0x020000; +enum COOKIE_CACHE_ENTRY = 0x100000; +enum URLHISTORY_CACHE_ENTRY = 0x200000; -const CACHE_ENTRY_ATTRIBUTE_FC = 0x0004; -const CACHE_ENTRY_HITRATE_FC = 0x0010; -const CACHE_ENTRY_MODTIME_FC = 0x0040; -const CACHE_ENTRY_EXPTIME_FC = 0x0080; -const CACHE_ENTRY_ACCTIME_FC = 0x0100; -const CACHE_ENTRY_SYNCTIME_FC = 0x0200; -const CACHE_ENTRY_HEADERINFO_FC = 0x0400; +enum CACHE_ENTRY_ATTRIBUTE_FC = 0x0004; +enum CACHE_ENTRY_HITRATE_FC = 0x0010; +enum CACHE_ENTRY_MODTIME_FC = 0x0040; +enum CACHE_ENTRY_EXPTIME_FC = 0x0080; +enum CACHE_ENTRY_ACCTIME_FC = 0x0100; +enum CACHE_ENTRY_SYNCTIME_FC = 0x0200; +enum CACHE_ENTRY_HEADERINFO_FC = 0x0400; enum { WININET_API_FLAG_ASYNC = 1, @@ -581,7 +581,7 @@ enum { IRF_SYNC = WININET_API_FLAG_SYNC, IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, } -const IRF_NO_WAIT = 8; +enum IRF_NO_WAIT = 8; enum { HSR_ASYNC = WININET_API_FLAG_ASYNC, @@ -589,24 +589,24 @@ enum { HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, } -const HSR_INITIATE = 8; -const HSR_DOWNLOAD = 16; -const HSR_CHUNKED = 32; - -const INTERNET_DIAL_UNATTENDED = 0x8000; -const INTERNET_DIALSTATE_DISCONNECTED = 1; -const INTERENT_GOONLINE_REFRESH = 1; -const INTERENT_GOONLINE_MASK = 1; -const INTERNET_AUTODIAL_FORCE_ONLINE = 1; -const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2; -const INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4; -const INTERNET_CONNECTION_MODEM = 0x01; -const INTERNET_CONNECTION_LAN = 0x02; -const INTERNET_CONNECTION_PROXY = 0x04; -const INTERNET_CONNECTION_MODEM_BUSY = 0x08; -const INTERNET_RAS_INSTALLED = 0x10; -const INTERNET_CONNECTION_OFFLINE = 0x20; -const INTERNET_CONNECTION_CONFIGURED = 0x40; +enum HSR_INITIATE = 8; +enum HSR_DOWNLOAD = 16; +enum HSR_CHUNKED = 32; + +enum INTERNET_DIAL_UNATTENDED = 0x8000; +enum INTERNET_DIALSTATE_DISCONNECTED = 1; +enum INTERENT_GOONLINE_REFRESH = 1; +enum INTERENT_GOONLINE_MASK = 1; +enum INTERNET_AUTODIAL_FORCE_ONLINE = 1; +enum INTERNET_AUTODIAL_FORCE_UNATTENDED = 2; +enum INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4; +enum INTERNET_CONNECTION_MODEM = 0x01; +enum INTERNET_CONNECTION_LAN = 0x02; +enum INTERNET_CONNECTION_PROXY = 0x04; +enum INTERNET_CONNECTION_MODEM_BUSY = 0x08; +enum INTERNET_RAS_INSTALLED = 0x10; +enum INTERNET_CONNECTION_OFFLINE = 0x20; +enum INTERNET_CONNECTION_CONFIGURED = 0x40; enum { CACHEGROUP_SEARCH_ALL = 0, @@ -725,7 +725,7 @@ extern (Windows) alias void function(HINTERNET, DWORD, DWORD, PVOID, DWORD) INTERNET_STATUS_CALLBACK; alias INTERNET_STATUS_CALLBACK* LPINTERNET_STATUS_CALLBACK; -const INTERNET_INVALID_STATUS_CALLBACK +enum INTERNET_INVALID_STATUS_CALLBACK = cast(INTERNET_STATUS_CALLBACK) -1; struct GOPHER_FIND_DATAA { @@ -941,7 +941,7 @@ struct INTERNET_BUFFERSW { } alias INTERNET_BUFFERSW* LPINTERNET_BUFFERSW; -const size_t +enum size_t GROUP_OWNER_STORAGE_SIZE = 4, GROUPNAME_MAX_LENGTH = 120; diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d index d20bbd2eeb..b2cf49cb7a 100644 --- a/src/core/sys/windows/winioctl.d +++ b/src/core/sys/windows/winioctl.d @@ -14,7 +14,7 @@ version (Windows): private import core.sys.windows.basetyps, core.sys.windows.windef; -const size_t +enum size_t HIST_NO_OF_BUCKETS = 24, HISTOGRAM_BUCKET_SIZE = HISTOGRAM_BUCKET.sizeof, DISK_HISTOGRAM_SIZE = DISK_HISTOGRAM.sizeof; @@ -103,14 +103,14 @@ enum { +/ template CTL_CODE_T(DEVICE_TYPE t, uint f, uint m, uint a) { - const DWORD CTL_CODE_T = (t << 16) | (a << 14) | (f << 2) | m; +enum DWORD CTL_CODE_T = (t << 16) | (a << 14) | (f << 2) | m; } DEVICE_TYPE DEVICE_TYPE_FROM_CTL_CODE(DWORD c) { return (c & 0xFFFF0000) >> 16; } -const DEVICE_TYPE +enum DEVICE_TYPE IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE, IOCTL_DISK_BASE = FILE_DEVICE_DISK, IOCTL_VOLUME_BASE = 'V'; @@ -215,7 +215,7 @@ enum : BYTE { PARTITION_UNIX = 0x63 } -const BYTE +enum BYTE PARTITION_NTFT = 0x80, VALID_NTFT = 0xC0; diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index e075079c6f..fb3e8848ce 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -52,10 +52,10 @@ enum { */ const TCHAR[] LDAP_VENDOR_NAME = "Microsoft Corporation."; -const LDAP_API_VERSION = 2004; -const LDAP_VENDOR_VERSION = 510; -const LDAP_API_INFO_VERSION = 1; -const LDAP_FEATURE_INFO_VERSION = 1; +enum LDAP_API_VERSION = 2004; +enum LDAP_VENDOR_VERSION = 510; +enum LDAP_API_INFO_VERSION = 1; +enum LDAP_FEATURE_INFO_VERSION = 1; enum { LDAP_SUCCESS = 0x00, @@ -131,7 +131,7 @@ enum { LDAP_SSL_GC_PORT = 3269 } -const void* +enum void* LDAP_OPT_OFF = null, LDAP_OPT_ON = cast(void*) 1; @@ -194,7 +194,7 @@ enum { LDAP_DEREF_ALWAYS } -const LDAP_NO_LIMIT = 0; +enum LDAP_NO_LIMIT = 0; const TCHAR[] LDAP_CONTROL_REFERRALS = "1.2.840.113556.1.4.616"; diff --git a/src/core/sys/windows/winnetwk.d b/src/core/sys/windows/winnetwk.d index e92545ac94..a9a3ddd044 100644 --- a/src/core/sys/windows/winnetwk.d +++ b/src/core/sys/windows/winnetwk.d @@ -70,14 +70,14 @@ enum : DWORD { RESOURCE_CONTEXT = 5 } -const DWORD +enum DWORD RESOURCETYPE_ANY = 0, RESOURCETYPE_DISK = 1, RESOURCETYPE_PRINT = 2, RESOURCETYPE_RESERVED = 8, RESOURCETYPE_UNKNOWN = 0xFFFFFFFF; -const DWORD +enum DWORD RESOURCEUSAGE_CONNECTABLE = 0x00000001, RESOURCEUSAGE_CONTAINER = 0x00000002, RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004, @@ -102,9 +102,9 @@ enum : DWORD { RESOURCEDISPLAYTYPE_TREE // = 10 } -const NETPROPERTY_PERSISTENT = 1; +enum NETPROPERTY_PERSISTENT = 1; -const DWORD +enum DWORD CONNECT_UPDATE_PROFILE = 1, CONNECT_UPDATE_RECENT = 2, CONNECT_TEMPORARY = 4, @@ -116,7 +116,7 @@ const DWORD CONNECT_LOCALDRIVE = 256, CONNECT_CURRENT_MEDIA = 512; -const DWORD +enum DWORD CONNDLG_RO_PATH = 1, CONNDLG_CONN_POINT = 2, CONNDLG_USE_MRU = 4, @@ -124,11 +124,11 @@ const DWORD CONNDLG_PERSIST = 16, CONNDLG_NOT_PERSIST = 32; -const DWORD +enum DWORD DISC_UPDATE_PROFILE = 1, DISC_NO_FORCE = 64; -const DWORD +enum DWORD WNFMT_MULTILINE = 1, WNFMT_ABBREVIATED = 2, WNFMT_INENUM = 16, @@ -182,18 +182,18 @@ enum : DWORD { REMOTE_NAME_INFO_LEVEL } -const DWORD +enum DWORD NETINFO_DLL16 = 1, NETINFO_DISKRED = 4, NETINFO_PRINTERRED = 8; -const DWORD +enum DWORD RP_LOGON = 1, RP_INIFILE = 2; -const DWORD PP_DISPLAYERRORS = 1; +enum DWORD PP_DISPLAYERRORS = 1; -const DWORD +enum DWORD WNCON_FORNETCARD = 1, WNCON_NOTROUTED = 2, WNCON_SLOWLINK = 4, diff --git a/src/core/sys/windows/winnls.d b/src/core/sys/windows/winnls.d index c15163a2bb..d36d1f3580 100644 --- a/src/core/sys/windows/winnls.d +++ b/src/core/sys/windows/winnls.d @@ -17,11 +17,11 @@ private import core.sys.windows.basetsd, core.sys.windows.w32api, core.sys.windo alias DWORD LCTYPE, CALTYPE, CALID, LGRPID, GEOID, GEOTYPE, GEOCLASS; -const size_t +enum size_t MAX_DEFAULTCHAR = 2, MAX_LEADBYTES = 12; -const LCTYPE +enum LCTYPE LOCALE_USE_CP_ACP = 0x40000000, LOCALE_RETURN_NUMBER = 0x20000000; @@ -135,7 +135,7 @@ enum : LCID { LOCALE_SYSTEM_DEFAULT = 0x800 } -const DWORD +enum DWORD NORM_IGNORECASE = 1, NORM_IGNORENONSPACE = 2, NORM_IGNORESYMBOLS = 4, @@ -143,7 +143,7 @@ const DWORD NORM_IGNOREKANATYPE = 0x10000, NORM_IGNOREWIDTH = 0x20000; -const DWORD +enum DWORD LCMAP_LOWERCASE = 0x00000100, LCMAP_UPPERCASE = 0x00000200, LCMAP_SORTKEY = 0x00000400, @@ -156,9 +156,9 @@ const DWORD LCMAP_SIMPLIFIED_CHINESE = 0x02000000, LCMAP_TRADITIONAL_CHINESE = 0x04000000; -const CALID ENUM_ALL_CALENDARS = -1; +enum CALID ENUM_ALL_CALENDARS = -1; -const DWORD +enum DWORD DATE_SHORTDATE = 1, DATE_LONGDATE = 2, DATE_USE_ALT_CALENDAR = 4, @@ -175,7 +175,7 @@ enum : DWORD { LCID_ALTERNATE_SORTS = 4 } -const DWORD +enum DWORD MAP_FOLDCZONE = 16, MAP_PRECOMPOSED = 32, MAP_COMPOSITE = 64, @@ -197,7 +197,7 @@ enum : DWORD { CT_CTYPE3 = 4 } -const WORD +enum WORD C1_UPPER = 1, C1_LOWER = 2, C1_DIGIT = 4, @@ -223,7 +223,7 @@ enum : WORD { C2_OTHERNEUTRAL // = 11 } -const WORD +enum WORD C3_NOTAPPLICABLE = 0, C3_NONSPACING = 1, C3_DIACRITIC = 2, @@ -238,19 +238,19 @@ const WORD C3_LEXICAL = 0x0400, C3_ALPHA = 0x8000; -const DWORD +enum DWORD TIME_NOMINUTESORSECONDS = 1, TIME_NOSECONDS = 2, TIME_NOTIMEMARKER = 4, TIME_FORCE24HOURFORMAT = 8; -const DWORD +enum DWORD MB_PRECOMPOSED = 1, MB_COMPOSITE = 2, MB_USEGLYPHCHARS = 4, MB_ERR_INVALID_CHARS = 8; -const DWORD +enum DWORD WC_DISCARDNS = 16, WC_SEPCHARS = 32, WC_DEFAULTCHAR = 64, @@ -478,13 +478,13 @@ static if (_WIN32_WINNT >= 0x500) { LOCALE_IPAPERSIZE = 0x100A } - const DWORD +enum DWORD DATE_YEARMONTH = 8, DATE_LTRREADING = 16, DATE_RTLREADING = 32; - const DWORD MAP_EXPAND_LIGATURES = 0x2000; - const DWORD WC_NO_BEST_FIT_CHARS = 1024; +enum DWORD MAP_EXPAND_LIGATURES = 0x2000; +enum DWORD WC_NO_BEST_FIT_CHARS = 1024; enum : CALTYPE { CAL_SYEARMONTH = 47, diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index 7e31ffcf84..564ba3c512 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -59,14 +59,14 @@ alias TCHAR TBYTE; alias TCHAR* PTCH , PTBYTE, LPTCH , PTSTR , LPTSTR , LP, PTCHAR; alias const(TCHAR)* PCTCH, LPCTCH, PCTSTR, LPCTSTR ; -const char ANSI_NULL = '\0'; -const wchar UNICODE_NULL = '\0'; +enum char ANSI_NULL = '\0'; +enum wchar UNICODE_NULL = '\0'; -const APPLICATION_ERROR_MASK = 0x20000000; -const ERROR_SEVERITY_SUCCESS = 0x00000000; -const ERROR_SEVERITY_INFORMATIONAL = 0x40000000; -const ERROR_SEVERITY_WARNING = 0x80000000; -const ERROR_SEVERITY_ERROR = 0xC0000000; +enum APPLICATION_ERROR_MASK = 0x20000000; +enum ERROR_SEVERITY_SUCCESS = 0x00000000; +enum ERROR_SEVERITY_INFORMATIONAL = 0x40000000; +enum ERROR_SEVERITY_WARNING = 0x80000000; +enum ERROR_SEVERITY_ERROR = 0xC0000000; // MinGW: also in ddk/ntifs.h enum : USHORT { @@ -79,7 +79,7 @@ enum : USHORT { } // ACCESS_DENIED_OBJECT_ACE, etc -const DWORD +enum DWORD ACE_OBJECT_TYPE_PRESENT = 0x00000001, ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002; @@ -93,7 +93,7 @@ enum : BYTE { } // ACE_HEADER.AceFlags -const BYTE +enum BYTE OBJECT_INHERIT_ACE = 0x01, CONTAINER_INHERIT_ACE = 0x02, NO_PROPAGATE_INHERIT_ACE = 0x04, @@ -104,7 +104,7 @@ const BYTE FAILED_ACCESS_ACE_FLAG = 0x80; // Access Mask Format -const ACCESS_MASK +enum ACCESS_MASK DELETE = 0x00010000, READ_CONTROL = 0x00020000, WRITE_DAC = 0x00040000, @@ -124,10 +124,10 @@ const ACCESS_MASK SPECIFIC_RIGHTS_ALL = 0x0000FFFF; -const DWORD INVALID_FILE_ATTRIBUTES = -1; +enum DWORD INVALID_FILE_ATTRIBUTES = -1; // MinGW: Also in ddk/winddk.h -const DWORD +enum DWORD FILE_LIST_DIRECTORY = 0x00000001, FILE_READ_DATA = 0x00000001, FILE_ADD_FILE = 0x00000002, @@ -145,13 +145,13 @@ const DWORD FILE_READ_ATTRIBUTES = 0x00000080, FILE_WRITE_ATTRIBUTES = 0x00000100; -const DWORD +enum DWORD FILE_SHARE_READ = 0x00000001, FILE_SHARE_WRITE = 0x00000002, FILE_SHARE_DELETE = 0x00000004, FILE_SHARE_VALID_FLAGS = 0x00000007; -const DWORD +enum DWORD FILE_ATTRIBUTE_READONLY = 0x00000001, FILE_ATTRIBUTE_HIDDEN = 0x00000002, FILE_ATTRIBUTE_SYSTEM = 0x00000004, @@ -170,16 +170,16 @@ const DWORD FILE_ATTRIBUTE_VALID_SET_FLAGS = 0x000031a7; // These are not documented on MSDN -const FILE_COPY_STRUCTURED_STORAGE = 0x00000041; -const FILE_STRUCTURED_STORAGE = 0x00000441; +enum FILE_COPY_STRUCTURED_STORAGE = 0x00000041; +enum FILE_STRUCTURED_STORAGE = 0x00000441; // Nor are these -const FILE_VALID_OPTION_FLAGS = 0x00ffffff; -const FILE_VALID_PIPE_OPTION_FLAGS = 0x00000032; -const FILE_VALID_MAILSLOT_OPTION_FLAGS = 0x00000032; -const FILE_VALID_SET_FLAGS = 0x00000036; +enum FILE_VALID_OPTION_FLAGS = 0x00ffffff; +enum FILE_VALID_PIPE_OPTION_FLAGS = 0x00000032; +enum FILE_VALID_MAILSLOT_OPTION_FLAGS = 0x00000032; +enum FILE_VALID_SET_FLAGS = 0x00000036; -const ULONG +enum ULONG FILE_SUPERSEDE = 0x00000000, FILE_OPEN = 0x00000001, FILE_CREATE = 0x00000002, @@ -188,7 +188,7 @@ const ULONG FILE_OVERWRITE_IF = 0x00000005, FILE_MAXIMUM_DISPOSITION = 0x00000005; -const ULONG +enum ULONG FILE_DIRECTORY_FILE = 0x00000001, FILE_WRITE_THROUGH = 0x00000002, FILE_SEQUENTIAL_ONLY = 0x00000004, @@ -211,7 +211,7 @@ const ULONG FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000; -const ACCESS_MASK +enum ACCESS_MASK FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x01FF, FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE, @@ -223,7 +223,7 @@ const ACCESS_MASK // MinGW: end winddk.h // MinGW: also in ddk/ntifs.h -const DWORD +enum DWORD FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, FILE_NOTIFY_CHANGE_NAME = 0x00000003, @@ -239,7 +239,7 @@ const DWORD FILE_NOTIFY_CHANGE_STREAM_WRITE = 0x00000800, FILE_NOTIFY_VALID_MASK = 0x00000fff; -const DWORD +enum DWORD FILE_CASE_SENSITIVE_SEARCH = 0x00000001, FILE_CASE_PRESERVED_NAMES = 0x00000002, FILE_UNICODE_ON_DISK = 0x00000004, @@ -259,24 +259,24 @@ const DWORD FILE_SUPPORTS_TRANSACTIONS = 0x00200000; // These are not documented on MSDN -const ACCESS_MASK +enum ACCESS_MASK IO_COMPLETION_QUERY_STATE = 1, IO_COMPLETION_MODIFY_STATE = 2, IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 3; // MinGW: end ntifs.h // MinGW: also in ddk/winddk.h -const DWORD +enum DWORD DUPLICATE_CLOSE_SOURCE = 1, DUPLICATE_SAME_ACCESS = 2, DUPLICATE_SAME_ATTRIBUTES = 4; // MinGW: end winddk.k -const DWORD +enum DWORD MAILSLOT_NO_MESSAGE = -1, MAILSLOT_WAIT_FOREVER = -1; -const ACCESS_MASK +enum ACCESS_MASK PROCESS_TERMINATE = 0x0001, PROCESS_CREATE_THREAD = 0x0002, PROCESS_SET_SESSIONID = 0x0004, @@ -290,7 +290,7 @@ const ACCESS_MASK PROCESS_QUERY_INFORMATION = 0x0400, PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0FFF; -const ACCESS_MASK +enum ACCESS_MASK THREAD_TERMINATE = 0x0001, THREAD_SUSPEND_RESUME = 0x0002, THREAD_GET_CONTEXT = 0x0008, @@ -303,26 +303,26 @@ const ACCESS_MASK THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF; // These are not documented on MSDN -const THREAD_BASE_PRIORITY_LOWRT = 15; -const THREAD_BASE_PRIORITY_MAX = 2; -const THREAD_BASE_PRIORITY_MIN = -2; -const THREAD_BASE_PRIORITY_IDLE = -15; +enum THREAD_BASE_PRIORITY_LOWRT = 15; +enum THREAD_BASE_PRIORITY_MAX = 2; +enum THREAD_BASE_PRIORITY_MIN = -2; +enum THREAD_BASE_PRIORITY_IDLE = -15; -const DWORD EXCEPTION_NONCONTINUABLE = 1; -const size_t EXCEPTION_MAXIMUM_PARAMETERS = 15; +enum DWORD EXCEPTION_NONCONTINUABLE = 1; +enum size_t EXCEPTION_MAXIMUM_PARAMETERS = 15; // These are not documented on MSDN -const ACCESS_MASK +enum ACCESS_MASK MUTANT_QUERY_STATE = 1, MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE; -const ACCESS_MASK +enum ACCESS_MASK TIMER_QUERY_STATE = 1, TIMER_MODIFY_STATE = 2, TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE; -const SID_IDENTIFIER_AUTHORITY +enum SID_IDENTIFIER_AUTHORITY SECURITY_NULL_SID_AUTHORITY = {[5: 0]}, SECURITY_WORLD_SID_AUTHORITY = {[5: 1]}, SECURITY_LOCAL_SID_AUTHORITY = {[5: 2]}, @@ -331,7 +331,7 @@ const SID_IDENTIFIER_AUTHORITY SECURITY_NT_AUTHORITY = {[5: 5]}, SECURITY_MANDATORY_LABEL_AUTHORITY = {[5: 6]}; -const DWORD +enum DWORD SECURITY_NULL_RID = 0, SECURITY_WORLD_RID = 0, SECURITY_LOCAL_RID = 0, @@ -421,7 +421,7 @@ const TCHAR[] SE_TIME_ZONE_NAME = "SeTimeZonePrivilege", SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"; -const DWORD +enum DWORD SE_GROUP_MANDATORY = 0x00000001, SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002, SE_GROUP_ENABLED = 0x00000004, @@ -833,7 +833,7 @@ enum : USHORT { } // This is not documented on MSDN -const NLS_VALID_LOCALE_MASK = 1048575; +enum NLS_VALID_LOCALE_MASK = 1048575; // Sorting identifiers enum : WORD { @@ -867,9 +867,9 @@ pure nothrow @nogc { WORD SORTVERSIONFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 20) & 0x0F); } } -const WORD LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL; -const WORD LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL; -const DWORD LOCALE_NEUTRAL = (SORT_DEFAULT << 16) +enum WORD LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL; +enum WORD LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL; +enum DWORD LOCALE_NEUTRAL = (SORT_DEFAULT << 16) | (SUBLANG_NEUTRAL << 10) | LANG_NEUTRAL; // --- @@ -886,21 +886,21 @@ enum : BYTE { ACL_REVISION4 // = 4 } -const BYTE +enum BYTE MIN_ACL_REVISION = 2, MAX_ACL_REVISION = 4; /+ // These aren't necessary for D. -const MINCHAR=0x80; -const MAXCHAR=0x7f; -const MINSHORT=0x8000; -const MAXSHORT=0x7fff; -const MINLONG=0x80000000; -const MAXLONG=0x7fffffff; -const MAXBYTE=0xff; -const MAXWORD=0xffff; -const MAXDWORD=0xffffffff; +enum MINCHAR=0x80; +enum MAXCHAR=0x7f; +enum MINSHORT=0x8000; +enum MAXSHORT=0x7fff; +enum MINLONG=0x80000000; +enum MAXLONG=0x7fffffff; +enum MAXBYTE=0xff; +enum MAXWORD=0xffff; +enum MAXDWORD=0xffffffff; +/ // SYSTEM_INFO.dwProcessorType @@ -960,7 +960,7 @@ enum : DWORD { } // MinGW: end ntifs.h -const DWORD +enum DWORD HEAP_NO_SERIALIZE = 0x01, HEAP_GROWABLE = 0x02, HEAP_GENERATE_EXCEPTIONS = 0x04, @@ -971,15 +971,15 @@ const DWORD HEAP_DISABLE_COALESCE_ON_FREE = 0x80; // These are not documented on MSDN -const HEAP_CREATE_ALIGN_16 = 0; -const HEAP_CREATE_ENABLE_TRACING = 0x020000; -const HEAP_MAXIMUM_TAG = 0x000FFF; -const HEAP_PSEUDO_TAG_FLAG = 0x008000; -const HEAP_TAG_SHIFT = 16; +enum HEAP_CREATE_ALIGN_16 = 0; +enum HEAP_CREATE_ENABLE_TRACING = 0x020000; +enum HEAP_MAXIMUM_TAG = 0x000FFF; +enum HEAP_PSEUDO_TAG_FLAG = 0x008000; +enum HEAP_TAG_SHIFT = 16; // ??? //MACRO #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16))) -const ACCESS_MASK +enum ACCESS_MASK KEY_QUERY_VALUE = 0x000001, KEY_SET_VALUE = 0x000002, KEY_CREATE_SUB_KEY = 0x000004, @@ -992,17 +992,17 @@ const ACCESS_MASK KEY_ALL_ACCESS = 0x0F003F; static if (_WIN32_WINNT >= 0x502) { - const ACCESS_MASK +enum ACCESS_MASK KEY_WOW64_64KEY = 0x000100, KEY_WOW64_32KEY = 0x000200; } -const DWORD +enum DWORD REG_WHOLE_HIVE_VOLATILE = 1, REG_REFRESH_HIVE = 2, REG_NO_LAZY_FLUSH = 4; -const DWORD +enum DWORD REG_OPTION_RESERVED = 0, REG_OPTION_NON_VOLATILE = 0, REG_OPTION_VOLATILE = 1, @@ -1011,7 +1011,7 @@ const DWORD REG_OPTION_OPEN_LINK = 8, REG_LEGAL_OPTION = 15; -const SECURITY_INFORMATION +enum SECURITY_INFORMATION OWNER_SECURITY_INFORMATION = 0x00000001, GROUP_SECURITY_INFORMATION = 0x00000002, DACL_SECURITY_INFORMATION = 0x00000004, @@ -1022,7 +1022,7 @@ const SECURITY_INFORMATION PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000, PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000; -const DWORD MAXIMUM_PROCESSORS = 32; +enum DWORD MAXIMUM_PROCESSORS = 32; // VirtualAlloc(), etc // ------------------- @@ -1057,7 +1057,7 @@ enum : DWORD { // MinGW: also in ddk/ntifs.h // CreateFileMapping() -const DWORD +enum DWORD SEC_BASED = 0x00200000, SEC_NO_CHANGE = 0x00400000, SEC_FILE = 0x00800000, @@ -1070,7 +1070,7 @@ const DWORD // MinGW: end ntifs.h // ??? -const ACCESS_MASK +enum ACCESS_MASK SECTION_QUERY = 0x000001, SECTION_MAP_WRITE = 0x000002, SECTION_MAP_READ = 0x000004, @@ -1079,15 +1079,15 @@ const ACCESS_MASK SECTION_ALL_ACCESS = 0x0F001F; // These are not documented on MSDN -const MESSAGE_RESOURCE_UNICODE = 1; -const RTL_CRITSECT_TYPE = 0; -const RTL_RESOURCE_TYPE = 1; +enum MESSAGE_RESOURCE_UNICODE = 1; +enum RTL_CRITSECT_TYPE = 0; +enum RTL_RESOURCE_TYPE = 1; // COFF file format // ---------------- // IMAGE_FILE_HEADER.Characteristics -const WORD +enum WORD IMAGE_FILE_RELOCS_STRIPPED = 0x0001, IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004, @@ -1166,7 +1166,7 @@ enum : WORD { } // IMAGE_OPTIONAL_HEADER.DllCharacteristics -const WORD +enum WORD IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040, IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, @@ -1177,9 +1177,9 @@ const WORD IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000; // ??? -const IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944; +enum IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944; -const size_t +enum size_t IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16, IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56, IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28, @@ -1220,7 +1220,7 @@ enum : USHORT { } // IMAGE_SECTION_HEADER.Characteristics -const DWORD +enum DWORD IMAGE_SCN_TYPE_REG = 0x00000000, IMAGE_SCN_TYPE_DSECT = 0x00000001, IMAGE_SCN_TYPE_NOLOAD = 0x00000002, @@ -1292,7 +1292,7 @@ enum : ubyte { IMAGE_SYM_TYPE_UINT, IMAGE_SYM_TYPE_DWORD // = 15 } -const IMAGE_SYM_TYPE_PCODE = 32768; // ??? +enum IMAGE_SYM_TYPE_PCODE = 32768; // ??? enum : ubyte { IMAGE_SYM_DTYPE_NULL, @@ -1525,11 +1525,11 @@ enum : WORD { } // ??? -const IMAGE_REL_PPC_TYPEMASK = 0x00FF; -const IMAGE_REL_PPC_NEG = 0x0100; -const IMAGE_REL_PPC_BRTAKEN = 0x0200; -const IMAGE_REL_PPC_BRNTAKEN = 0x0400; -const IMAGE_REL_PPC_TOCDEFN = 0x0800; +enum IMAGE_REL_PPC_TYPEMASK = 0x00FF; +enum IMAGE_REL_PPC_NEG = 0x0100; +enum IMAGE_REL_PPC_BRTAKEN = 0x0200; +enum IMAGE_REL_PPC_BRNTAKEN = 0x0400; +enum IMAGE_REL_PPC_TOCDEFN = 0x0800; enum { IMAGE_REL_BASED_ABSOLUTE, @@ -1541,7 +1541,7 @@ enum { } // End of constants documented in pecoff.doc -const size_t IMAGE_ARCHIVE_START_SIZE = 8; +enum size_t IMAGE_ARCHIVE_START_SIZE = 8; const TCHAR[] IMAGE_ARCHIVE_START = "!\n", @@ -1550,7 +1550,7 @@ const TCHAR[] IMAGE_ARCHIVE_LINKER_MEMBER = "/ ", IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; -const IMAGE_ORDINAL_FLAG32 = 0x80000000; +enum IMAGE_ORDINAL_FLAG32 = 0x80000000; ulong IMAGE_ORDINAL64(ulong Ordinal) { return Ordinal & 0xFFFF; } uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; } @@ -1559,15 +1559,15 @@ bool IMAGE_SNAP_BY_ORDINAL32(uint Ordinal) { return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; } -const ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; +enum ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; bool IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal) { return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; } // ??? -const IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000; -const IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000; +enum IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000; +enum IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000; enum : DWORD { IMAGE_DEBUG_TYPE_UNKNOWN, @@ -1590,17 +1590,17 @@ enum : ubyte { } // ??? -const IMAGE_DEBUG_MISC_EXENAME = 1; +enum IMAGE_DEBUG_MISC_EXENAME = 1; // ??? -const N_BTMASK = 0x000F; -const N_TMASK = 0x0030; -const N_TMASK1 = 0x00C0; -const N_TMASK2 = 0x00F0; -const N_BTSHFT = 4; -const N_TSHIFT = 2; - -const int +enum N_BTMASK = 0x000F; +enum N_TMASK = 0x0030; +enum N_TMASK1 = 0x00C0; +enum N_TMASK2 = 0x00F0; +enum N_BTSHFT = 4; +enum N_TSHIFT = 2; + +enum int IS_TEXT_UNICODE_ASCII16 = 0x0001, IS_TEXT_UNICODE_STATISTICS = 0x0002, IS_TEXT_UNICODE_CONTROLS = 0x0004, @@ -1617,7 +1617,7 @@ const int IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00, IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000; -const DWORD +enum DWORD SERVICE_KERNEL_DRIVER = 0x0001, SERVICE_FILE_SYSTEM_DRIVER = 0x0002, SERVICE_ADAPTER = 0x0004, @@ -1645,7 +1645,7 @@ enum : DWORD { } -const uint +enum uint SE_OWNER_DEFAULTED = 0x0001, SE_GROUP_DEFAULTED = 0x0002, SE_DACL_PRESENT = 0x0004, @@ -1671,29 +1671,29 @@ alias SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE; alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; -const size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; +enum size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; -const DWORD +enum DWORD SECURITY_DESCRIPTOR_REVISION = 1, SECURITY_DESCRIPTOR_REVISION1 = 1; -const DWORD +enum DWORD SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, SE_PRIVILEGE_ENABLED = 0x00000002, SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; -const DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; +enum DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; -const SECURITY_IMPERSONATION_LEVEL +enum SECURITY_IMPERSONATION_LEVEL SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, DEFAULT_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; -const BOOLEAN +enum BOOLEAN SECURITY_DYNAMIC_TRACKING = true, SECURITY_STATIC_TRACKING = false; // also in ddk/ntifs.h -const DWORD +enum DWORD TOKEN_ASSIGN_PRIMARY = 0x0001, TOKEN_DUPLICATE = 0x0002, TOKEN_IMPERSONATE = 0x0004, @@ -1719,7 +1719,7 @@ const DWORD | TOKEN_ADJUST_DEFAULT, TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE; -const size_t TOKEN_SOURCE_LENGTH = 8; +enum size_t TOKEN_SOURCE_LENGTH = 8; // end ddk/ntifs.h enum : DWORD { @@ -1757,7 +1757,7 @@ enum : DWORD { TAPE_SPACE_SEQUENTIAL_SMKS } -const DWORD +enum DWORD TAPE_DRIVE_FIXED = 0x00000001, TAPE_DRIVE_SELECT = 0x00000002, TAPE_DRIVE_INITIATOR = 0x00000004, @@ -1783,7 +1783,7 @@ const DWORD TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000, TAPE_DRIVE_RESERVED_BIT = 0x80000000; -const DWORD +enum DWORD TAPE_DRIVE_LOAD_UNLOAD = 0x80000001, TAPE_DRIVE_TENSION = 0x80000002, TAPE_DRIVE_LOCK_UNLOCK = 0x80000004, @@ -1856,7 +1856,7 @@ enum : UCHAR { VER_NT_SERVER } -const USHORT +enum USHORT VER_SUITE_SMALLBUSINESS = 0x0001, VER_SUITE_ENTERPRISE = 0x0002, VER_SUITE_BACKOFFICE = 0x0004, @@ -1870,7 +1870,7 @@ const USHORT VER_SUITE_STORAGE_SERVER = 0x2000, VER_SUITE_COMPUTE_SERVER = 0x4000; -const ULONG +enum ULONG WT_EXECUTEDEFAULT = 0x00000000, WT_EXECUTEINIOTHREAD = 0x00000001, WT_EXECUTEINWAITTHREAD = 0x00000004, @@ -1881,7 +1881,7 @@ const ULONG WT_TRANSFER_IMPERSONATION = 0x00000100; static if (_WIN32_WINNT >= 0x500) { - const DWORD +enum DWORD VER_MINORVERSION = 0x01, VER_MAJORVERSION = 0x02, VER_BUILDNUMBER = 0x04, @@ -1931,9 +1931,9 @@ uint INCREF(uint x) { } uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK) | (x & N_BTMASK); } -const DWORD TLS_MINIMUM_AVAILABLE = 64; +enum DWORD TLS_MINIMUM_AVAILABLE = 64; -const ULONG +enum ULONG IO_REPARSE_TAG_RESERVED_ZERO = 0, IO_REPARSE_TAG_RESERVED_ONE = 1, IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE, @@ -2073,21 +2073,21 @@ struct ACL_SIZE_INFORMATION { version (X86) { // ??? - const SIZE_OF_80387_REGISTERS = 80; - const CONTEXT_i386 = 0x010000; - const CONTEXT_i486 = 0x010000; - const CONTEXT_CONTROL = CONTEXT_i386 | 0x01; - const CONTEXT_INTEGER = CONTEXT_i386 | 0x02; - const CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04; - const CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08; - const CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; - const CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; - const CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; - const CONTEXT_ALL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | +enum SIZE_OF_80387_REGISTERS = 80; +enum CONTEXT_i386 = 0x010000; +enum CONTEXT_i486 = 0x010000; +enum CONTEXT_CONTROL = CONTEXT_i386 | 0x01; +enum CONTEXT_INTEGER = CONTEXT_i386 | 0x02; +enum CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04; +enum CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08; +enum CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; +enum CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; +enum CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; +enum CONTEXT_ALL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS; - const MAXIMUM_SUPPORTED_EXTENSION = 512; +enum MAXIMUM_SUPPORTED_EXTENSION = 512; struct FLOATING_SAVE_AREA { DWORD ControlWord; @@ -2131,24 +2131,24 @@ version (X86) { } else version(X86_64) { - const CONTEXT_AMD64 = 0x100000; +enum CONTEXT_AMD64 = 0x100000; - const CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L); - const CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L); - const CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L); - const CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L); - const CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L); +enum CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L); +enum CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L); +enum CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L); +enum CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L); +enum CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L); - const CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT); - const CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS); +enum CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT); +enum CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS); - const CONTEXT_EXCEPTION_ACTIVE = 0x8000000; - const CONTEXT_SERVICE_ACTIVE = 0x10000000; - const CONTEXT_EXCEPTION_REQUEST = 0x40000000; - const CONTEXT_EXCEPTION_REPORTING = 0x80000000; +enum CONTEXT_EXCEPTION_ACTIVE = 0x8000000; +enum CONTEXT_SERVICE_ACTIVE = 0x10000000; +enum CONTEXT_EXCEPTION_REQUEST = 0x40000000; +enum CONTEXT_EXCEPTION_REPORTING = 0x80000000; - const INITIAL_MXCSR = 0x1f80; - const INITIAL_FPCSR = 0x027f; +enum INITIAL_MXCSR = 0x1f80; +enum INITIAL_FPCSR = 0x027f; align(16) struct M128A { @@ -2177,7 +2177,7 @@ version (X86) { BYTE[96] Reserved4; } alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32; - const LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof; +enum LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof; align(16) struct CONTEXT { @@ -2298,7 +2298,7 @@ alias ULARGE_INTEGER* PULARGE_INTEGER; alias LARGE_INTEGER LUID; alias LUID* PLUID; -const LUID SYSTEM_LUID = { QuadPart:999 }; +enum LUID SYSTEM_LUID = { QuadPart:999 }; align(4) struct LUID_AND_ATTRIBUTES { LUID Luid; @@ -3542,7 +3542,7 @@ struct REPARSE_GUID_DATA_BUFFER { } alias REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; -const size_t +enum size_t REPARSE_DATA_BUFFER_HEADER_SIZE = REPARSE_DATA_BUFFER.GenericReparseBuffer.offsetof, REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = REPARSE_GUID_DATA_BUFFER.GenericReparseBuffer.offsetof, MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384; @@ -3561,7 +3561,7 @@ union FILE_SEGMENT_ELEMENT { alias FILE_SEGMENT_ELEMENT* PFILE_SEGMENT_ELEMENT; // JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants -const DWORD +enum DWORD JOB_OBJECT_LIMIT_WORKINGSET = 0x0001, JOB_OBJECT_LIMIT_PROCESS_TIME = 0x0002, JOB_OBJECT_LIMIT_JOB_TIME = 0x0004, @@ -3577,7 +3577,7 @@ const DWORD JOB_OBJECT_SILENT_BREAKAWAY = 0x1000; // JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants -const DWORD +enum DWORD JOB_OBJECT_UILIMIT_HANDLES = 0x0001, JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x0002, JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x0004, @@ -3588,7 +3588,7 @@ const DWORD JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x0080; // JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants -const DWORD +enum DWORD JOB_OBJECT_SECURITY_NO_ADMIN = 0x0001, JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x0002, JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x0004, @@ -3709,7 +3709,7 @@ alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; // MinGW: Making these defines conditional on _WIN32_WINNT will break ddk includes //static if (_WIN32_WINNT >= 0x500) { -const DWORD +enum DWORD ES_SYSTEM_REQUIRED = 0x00000001, ES_DISPLAY_REQUIRED = 0x00000002, ES_USER_PRESENT = 0x00000004, @@ -3733,7 +3733,7 @@ enum SYSTEM_POWER_STATE { } alias SYSTEM_POWER_STATE* PSYSTEM_POWER_STATE; -const POWER_SYSTEM_MAXIMUM = SYSTEM_POWER_STATE.PowerSystemMaximum; +enum POWER_SYSTEM_MAXIMUM = SYSTEM_POWER_STATE.PowerSystemMaximum; enum POWER_ACTION { PowerActionNone, @@ -3782,7 +3782,7 @@ struct POWER_ACTION_POLICY { alias POWER_ACTION_POLICY* PPOWER_ACTION_POLICY; // POWER_ACTION_POLICY.Flags constants -const ULONG +enum ULONG POWER_ACTION_QUERY_ALLOWED = 0x00000001, POWER_ACTION_UI_ALLOWED = 0x00000002, POWER_ACTION_OVERRIDE_APPS = 0x00000004, @@ -3792,7 +3792,7 @@ const ULONG POWER_ACTION_CRITICAL = 0x80000000; // POWER_ACTION_POLICY.EventCode constants -const ULONG +enum ULONG POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001, POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002, POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004, @@ -3800,7 +3800,7 @@ const ULONG POWER_USER_NOTIFY_SHUTDOWN = 0x00000010, POWER_FORCE_TRIGGER_RESET = 0x80000000; -const size_t +enum size_t DISCHARGE_POLICY_CRITICAL = 0, DISCHARGE_POLICY_LOW = 1, NUM_DISCHARGE_POLICIES = 4; @@ -4083,7 +4083,7 @@ static if (_WIN32_WINNT >= 0x500) { } version (Win64) { - const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR64_MAGIC; +enum WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR64_MAGIC; alias IMAGE_ORDINAL_FLAG64 IMAGE_ORDINAL_FLAG; alias IMAGE_SNAP_BY_ORDINAL64 IMAGE_SNAP_BY_ORDINAL; @@ -4093,7 +4093,7 @@ version (Win64) { alias IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; alias IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; } else { - const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC; +enum WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC; alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG; alias IMAGE_ORDINAL32 IMAGE_ORDINAL; diff --git a/src/core/sys/windows/winperf.d b/src/core/sys/windows/winperf.d index 77bd72419b..d00f829f35 100644 --- a/src/core/sys/windows/winperf.d +++ b/src/core/sys/windows/winperf.d @@ -12,74 +12,74 @@ version (Windows): import core.sys.windows.windef; import core.sys.windows.winbase; // for SYSTEMTIME -const PERF_DATA_VERSION=1; -const PERF_DATA_REVISION=1; -const PERF_NO_INSTANCES=-1; -const PERF_SIZE_DWORD=0; -const PERF_SIZE_LARGE=256; -const PERF_SIZE_ZERO=512; -const PERF_SIZE_VARIABLE_LEN=768; -const PERF_TYPE_NUMBER=0; -const PERF_TYPE_COUNTER=1024; -const PERF_TYPE_TEXT=2048; -const PERF_TYPE_ZERO=0xC00; -const PERF_NUMBER_HEX=0; -const PERF_NUMBER_DECIMAL=0x10000; -const PERF_NUMBER_DEC_1000=0x20000; -const PERF_COUNTER_VALUE=0; -const PERF_COUNTER_RATE=0x10000; -const PERF_COUNTER_FRACTION=0x20000; -const PERF_COUNTER_BASE=0x30000; -const PERF_COUNTER_ELAPSED=0x40000; -const PERF_COUNTER_QUEUELEN=0x50000; -const PERF_COUNTER_HISTOGRAM=0x60000; -const PERF_TEXT_UNICODE=0; -const PERF_TEXT_ASCII=0x10000; -const PERF_TIMER_TICK=0; -const PERF_TIMER_100NS=0x100000; -const PERF_OBJECT_TIMER=0x200000; -const PERF_DELTA_COUNTER=0x400000; -const PERF_DELTA_BASE=0x800000; -const PERF_INVERSE_COUNTER=0x1000000; -const PERF_MULTI_COUNTER=0x2000000; -const PERF_DISPLAY_NO_SUFFIX=0; -const PERF_DISPLAY_PER_SEC=0x10000000; -const PERF_DISPLAY_PERCENT=0x20000000; -const PERF_DISPLAY_SECONDS=0x30000000; -const PERF_DISPLAY_NOSHOW=0x40000000; -const PERF_COUNTER_HISTOGRAM_TYPE=0x80000000; -const PERF_NO_UNIQUE_ID=(-1); -const PERF_DETAIL_NOVICE=100; -const PERF_DETAIL_ADVANCED=200; -const PERF_DETAIL_EXPERT=300; -const PERF_DETAIL_WIZARD=400; -const PERF_COUNTER_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); -const PERF_COUNTER_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_QUEUELEN_TYPE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_QUEUELEN|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_BULK_COUNT=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); -const PERF_COUNTER_TEXT=(PERF_SIZE_VARIABLE_LEN|PERF_TYPE_TEXT|PERF_TEXT_UNICODE|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_RAWCOUNT=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_LARGE_RAWCOUNT=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_RAWCOUNT_HEX=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_LARGE_RAWCOUNT_HEX=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); -const PERF_SAMPLE_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DELTA_COUNTER|PERF_DELTA_BASE|PERF_DISPLAY_PERCENT); -const PERF_SAMPLE_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_NODATA=(PERF_SIZE_ZERO|PERF_DISPLAY_NOSHOW); -const PERF_COUNTER_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_SAMPLE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|1); -const PERF_AVERAGE_TIMER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_SECONDS); -const PERF_AVERAGE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|2); -const PERF_AVERAGE_BULK=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_NOSHOW); -const PERF_100NSEC_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_100NSEC_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_TIMER_TICK|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_MULTI_COUNTER|PERF_TIMER_TICK|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_MULTI_BASE=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_MULTI_COUNTER|PERF_DISPLAY_NOSHOW); -const PERF_100NSEC_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_100NSEC_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_RAW_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_PERCENT); -const PERF_RAW_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|3); -const PERF_ELAPSED_TIME=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS); +enum PERF_DATA_VERSION=1; +enum PERF_DATA_REVISION=1; +enum PERF_NO_INSTANCES=-1; +enum PERF_SIZE_DWORD=0; +enum PERF_SIZE_LARGE=256; +enum PERF_SIZE_ZERO=512; +enum PERF_SIZE_VARIABLE_LEN=768; +enum PERF_TYPE_NUMBER=0; +enum PERF_TYPE_COUNTER=1024; +enum PERF_TYPE_TEXT=2048; +enum PERF_TYPE_ZERO=0xC00; +enum PERF_NUMBER_HEX=0; +enum PERF_NUMBER_DECIMAL=0x10000; +enum PERF_NUMBER_DEC_1000=0x20000; +enum PERF_COUNTER_VALUE=0; +enum PERF_COUNTER_RATE=0x10000; +enum PERF_COUNTER_FRACTION=0x20000; +enum PERF_COUNTER_BASE=0x30000; +enum PERF_COUNTER_ELAPSED=0x40000; +enum PERF_COUNTER_QUEUELEN=0x50000; +enum PERF_COUNTER_HISTOGRAM=0x60000; +enum PERF_TEXT_UNICODE=0; +enum PERF_TEXT_ASCII=0x10000; +enum PERF_TIMER_TICK=0; +enum PERF_TIMER_100NS=0x100000; +enum PERF_OBJECT_TIMER=0x200000; +enum PERF_DELTA_COUNTER=0x400000; +enum PERF_DELTA_BASE=0x800000; +enum PERF_INVERSE_COUNTER=0x1000000; +enum PERF_MULTI_COUNTER=0x2000000; +enum PERF_DISPLAY_NO_SUFFIX=0; +enum PERF_DISPLAY_PER_SEC=0x10000000; +enum PERF_DISPLAY_PERCENT=0x20000000; +enum PERF_DISPLAY_SECONDS=0x30000000; +enum PERF_DISPLAY_NOSHOW=0x40000000; +enum PERF_COUNTER_HISTOGRAM_TYPE=0x80000000; +enum PERF_NO_UNIQUE_ID=(-1); +enum PERF_DETAIL_NOVICE=100; +enum PERF_DETAIL_ADVANCED=200; +enum PERF_DETAIL_EXPERT=300; +enum PERF_DETAIL_WIZARD=400; +enum PERF_COUNTER_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); +enum PERF_COUNTER_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); +enum PERF_COUNTER_QUEUELEN_TYPE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_QUEUELEN|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); +enum PERF_COUNTER_BULK_COUNT=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); +enum PERF_COUNTER_TEXT=(PERF_SIZE_VARIABLE_LEN|PERF_TYPE_TEXT|PERF_TEXT_UNICODE|PERF_DISPLAY_NO_SUFFIX); +enum PERF_COUNTER_RAWCOUNT=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); +enum PERF_COUNTER_LARGE_RAWCOUNT=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); +enum PERF_COUNTER_RAWCOUNT_HEX=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); +enum PERF_COUNTER_LARGE_RAWCOUNT_HEX=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); +enum PERF_SAMPLE_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DELTA_COUNTER|PERF_DELTA_BASE|PERF_DISPLAY_PERCENT); +enum PERF_SAMPLE_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); +enum PERF_COUNTER_NODATA=(PERF_SIZE_ZERO|PERF_DISPLAY_NOSHOW); +enum PERF_COUNTER_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +enum PERF_SAMPLE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|1); +enum PERF_AVERAGE_TIMER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_SECONDS); +enum PERF_AVERAGE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|2); +enum PERF_AVERAGE_BULK=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_NOSHOW); +enum PERF_100NSEC_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); +enum PERF_100NSEC_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +enum PERF_COUNTER_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_TIMER_TICK|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); +enum PERF_COUNTER_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_MULTI_COUNTER|PERF_TIMER_TICK|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +enum PERF_COUNTER_MULTI_BASE=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_MULTI_COUNTER|PERF_DISPLAY_NOSHOW); +enum PERF_100NSEC_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); +enum PERF_100NSEC_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +enum PERF_RAW_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_PERCENT); +enum PERF_RAW_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|3); +enum PERF_ELAPSED_TIME=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS); struct PERF_DATA_BLOCK { WCHAR[4] Signature; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index d203288819..12ac849001 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -54,7 +54,7 @@ enum : DWORD { REG_QWORD = REG_QWORD_LITTLE_ENDIAN } -const DWORD +enum DWORD REG_NOTIFY_CHANGE_NAME = 1, REG_NOTIFY_CHANGE_ATTRIBUTES = 2, REG_NOTIFY_CHANGE_LAST_SET = 4, diff --git a/src/core/sys/windows/winsock2.d b/src/core/sys/windows/winsock2.d index 8cbe91c966..8706e1b0fb 100644 --- a/src/core/sys/windows/winsock2.d +++ b/src/core/sys/windows/winsock2.d @@ -13,8 +13,8 @@ nothrow: alias SOCKET = size_t; alias socklen_t = int; -const SOCKET INVALID_SOCKET = cast(SOCKET)~0; -const int SOCKET_ERROR = -1; +enum SOCKET INVALID_SOCKET = cast(SOCKET)~0; +enum int SOCKET_ERROR = -1; enum WSADESCRIPTION_LEN = 256; enum WSASYS_STATUS_LEN = 128; @@ -32,9 +32,9 @@ struct WSADATA alias LPWSADATA = WSADATA*; -const int IOCPARM_MASK = 0x7F; -const int IOC_IN = cast(int)0x80000000; -const int FIONBIO = cast(int)(IOC_IN | ((uint.sizeof & IOCPARM_MASK) << 16) | (102 << 8) | 126); +enum int IOCPARM_MASK = 0x7F; +enum int IOC_IN = cast(int)0x80000000; +enum int FIONBIO = cast(int)(IOC_IN | ((uint.sizeof & IOCPARM_MASK) << 16) | (102 << 8) | 126); enum NI_MAXHOST = 1025; enum NI_MAXSERV = 32; @@ -390,8 +390,8 @@ void FD_CLR(SOCKET fd, fd_set* set) pure @nogc // Tests. int FD_ISSET(SOCKET fd, const(fd_set)* set) pure @nogc { - const(SOCKET)* start = set.fd_array.ptr; - const(SOCKET)* stop = start + set.fd_count; +const(SOCKET)* start = set.fd_array.ptr; +const(SOCKET)* stop = start + set.fd_count; for(; start != stop; start++) { @@ -662,8 +662,8 @@ union in6_addr } -const in6_addr IN6ADDR_ANY = { s6_addr8: [0] }; -const in6_addr IN6ADDR_LOOPBACK = { s6_addr8: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] }; +enum in6_addr IN6ADDR_ANY = { s6_addr8: [0] }; +enum in6_addr IN6ADDR_LOOPBACK = { s6_addr8: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] }; //alias IN6ADDR_ANY_INIT = IN6ADDR_ANY; //alias IN6ADDR_LOOPBACK_INIT = IN6ADDR_LOOPBACK; diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d index bc5ac4b009..8d70c4f671 100644 --- a/src/core/sys/windows/winspool.d +++ b/src/core/sys/windows/winspool.d @@ -17,235 +17,235 @@ private import core.sys.windows.winbase; // for SYSTEMTIME // FIXME: clean up Windows version support -const DI_CHANNEL=1; -const DI_CHANNEL_WRITE=2; -const DI_READ_SPOOL_JOB=3; - -const FORM_BUILTIN=1; - -const JOB_CONTROL_PAUSE=1; -const JOB_CONTROL_RESUME=2; -const JOB_CONTROL_CANCEL=3; -const JOB_CONTROL_RESTART=4; -const JOB_CONTROL_DELETE=5; -const JOB_STATUS_PAUSED=1; -const JOB_STATUS_ERROR=2; -const JOB_STATUS_DELETING=4; -const JOB_STATUS_SPOOLING=8; -const JOB_STATUS_PRINTING=16; -const JOB_STATUS_OFFLINE=32; -const JOB_STATUS_PAPEROUT=0x40; -const JOB_STATUS_PRINTED=0x80; -const JOB_STATUS_DELETED=0x100; -const JOB_STATUS_BLOCKED_DEVQ=0x200; -const JOB_STATUS_USER_INTERVENTION=0x400; - -const JOB_POSITION_UNSPECIFIED=0; - -const JOB_NOTIFY_TYPE=1; - -const JOB_NOTIFY_FIELD_PRINTER_NAME=0; -const JOB_NOTIFY_FIELD_MACHINE_NAME=1; -const JOB_NOTIFY_FIELD_PORT_NAME=2; -const JOB_NOTIFY_FIELD_USER_NAME=3; -const JOB_NOTIFY_FIELD_NOTIFY_NAME=4; -const JOB_NOTIFY_FIELD_DATATYPE=5; -const JOB_NOTIFY_FIELD_PRINT_PROCESSOR=6; -const JOB_NOTIFY_FIELD_PARAMETERS=7; -const JOB_NOTIFY_FIELD_DRIVER_NAME=8; -const JOB_NOTIFY_FIELD_DEVMODE=9; -const JOB_NOTIFY_FIELD_STATUS=10; -const JOB_NOTIFY_FIELD_STATUS_STRING=11; -const JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; -const JOB_NOTIFY_FIELD_DOCUMENT=13; -const JOB_NOTIFY_FIELD_PRIORITY=14; -const JOB_NOTIFY_FIELD_POSITION=15; -const JOB_NOTIFY_FIELD_SUBMITTED=16; -const JOB_NOTIFY_FIELD_START_TIME=17; -const JOB_NOTIFY_FIELD_UNTIL_TIME=18; -const JOB_NOTIFY_FIELD_TIME=19; -const JOB_NOTIFY_FIELD_TOTAL_PAGES=20; -const JOB_NOTIFY_FIELD_PAGES_PRINTED=21; -const JOB_NOTIFY_FIELD_TOTAL_BYTES=22; -const JOB_NOTIFY_FIELD_BYTES_PRINTED=23; - -const JOB_ACCESS_ADMINISTER = 16; -const JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER; -const JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER; -const JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER; -const JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER; - -const PRINTER_NOTIFY_OPTIONS_REFRESH=1; -const PRINTER_ACCESS_ADMINISTER=4; -const PRINTER_ACCESS_USE=8; - -const PRINTER_ERROR_INFORMATION=0x80000000; -const PRINTER_ERROR_WARNING=0x40000000; -const PRINTER_ERROR_SEVERE=0x20000000; -const PRINTER_ERROR_OUTOFPAPER=1; -const PRINTER_ERROR_JAM=2; -const PRINTER_ERROR_OUTOFTONER=4; - -const PRINTER_CONTROL_PAUSE=1; -const PRINTER_CONTROL_RESUME=2; -const PRINTER_CONTROL_PURGE=3; -const PRINTER_CONTROL_SET_STATUS=4; - -const PRINTER_STATUS_PAUSED = 1; -const PRINTER_STATUS_ERROR = 2; -const PRINTER_STATUS_PENDING_DELETION = 4; -const PRINTER_STATUS_PAPER_JAM = 8; -const PRINTER_STATUS_PAPER_OUT = 0x10; -const PRINTER_STATUS_MANUAL_FEED = 0x20; -const PRINTER_STATUS_PAPER_PROBLEM = 0x40; -const PRINTER_STATUS_OFFLINE = 0x80; -const PRINTER_STATUS_IO_ACTIVE = 0x100; -const PRINTER_STATUS_BUSY = 0x200; -const PRINTER_STATUS_PRINTING = 0x400; -const PRINTER_STATUS_OUTPUT_BIN_FULL = 0x800; -const PRINTER_STATUS_NOT_AVAILABLE = 0x1000; -const PRINTER_STATUS_WAITING = 0x2000; -const PRINTER_STATUS_PROCESSING = 0x4000; -const PRINTER_STATUS_INITIALIZING = 0x8000; -const PRINTER_STATUS_WARMING_UP = 0x10000; -const PRINTER_STATUS_TONER_LOW = 0x20000; -const PRINTER_STATUS_NO_TONER = 0x40000; -const PRINTER_STATUS_PAGE_PUNT = 0x80000; -const PRINTER_STATUS_USER_INTERVENTION = 0x100000; -const PRINTER_STATUS_OUT_OF_MEMORY = 0x200000; -const PRINTER_STATUS_DOOR_OPEN = 0x400000; -const PRINTER_STATUS_SERVER_UNKNOWN = 0x800000; -const PRINTER_STATUS_POWER_SAVE = 0x1000000; - -const PRINTER_ATTRIBUTE_QUEUED=1; -const PRINTER_ATTRIBUTE_DIRECT=2; -const PRINTER_ATTRIBUTE_DEFAULT=4; -const PRINTER_ATTRIBUTE_SHARED=8; -const PRINTER_ATTRIBUTE_NETWORK=0x10; -const PRINTER_ATTRIBUTE_HIDDEN=0x20; -const PRINTER_ATTRIBUTE_LOCAL=0x40; -const PRINTER_ATTRIBUTE_ENABLE_DEVQ=0x80; -const PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS=0x100; -const PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST=0x200; -const PRINTER_ATTRIBUTE_WORK_OFFLINE=0x400; -const PRINTER_ATTRIBUTE_ENABLE_BIDI=0x800; -const PRINTER_ATTRIBUTE_RAW_ONLY=0x1000; -const PRINTER_ATTRIBUTE_PUBLISHED=0x2000; - -const PRINTER_ENUM_DEFAULT=1; -const PRINTER_ENUM_LOCAL=2; -const PRINTER_ENUM_CONNECTIONS=4; -const PRINTER_ENUM_FAVORITE=4; -const PRINTER_ENUM_NAME=8; -const PRINTER_ENUM_REMOTE=16; -const PRINTER_ENUM_SHARED=32; -const PRINTER_ENUM_NETWORK=0x40; -const PRINTER_ENUM_EXPAND=0x4000; -const PRINTER_ENUM_CONTAINER=0x8000; -const PRINTER_ENUM_ICONMASK=0xff0000; -const PRINTER_ENUM_ICON1=0x10000; -const PRINTER_ENUM_ICON2=0x20000; -const PRINTER_ENUM_ICON3=0x40000; -const PRINTER_ENUM_ICON4=0x80000; -const PRINTER_ENUM_ICON5=0x100000; -const PRINTER_ENUM_ICON6=0x200000; -const PRINTER_ENUM_ICON7=0x400000; -const PRINTER_ENUM_ICON8=0x800000; - -const PRINTER_NOTIFY_TYPE=0; - -const PRINTER_NOTIFY_FIELD_SERVER_NAME=0; -const PRINTER_NOTIFY_FIELD_PRINTER_NAME=1; -const PRINTER_NOTIFY_FIELD_SHARE_NAME=2; -const PRINTER_NOTIFY_FIELD_PORT_NAME=3; -const PRINTER_NOTIFY_FIELD_DRIVER_NAME=4; -const PRINTER_NOTIFY_FIELD_COMMENT=5; -const PRINTER_NOTIFY_FIELD_LOCATION=6; -const PRINTER_NOTIFY_FIELD_DEVMODE=7; -const PRINTER_NOTIFY_FIELD_SEPFILE=8; -const PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR=9; -const PRINTER_NOTIFY_FIELD_PARAMETERS=10; -const PRINTER_NOTIFY_FIELD_DATATYPE=11; -const PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; -const PRINTER_NOTIFY_FIELD_ATTRIBUTES=13; -const PRINTER_NOTIFY_FIELD_PRIORITY=14; -const PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY=15; -const PRINTER_NOTIFY_FIELD_START_TIME=16; -const PRINTER_NOTIFY_FIELD_UNTIL_TIME=17; -const PRINTER_NOTIFY_FIELD_STATUS=18; -const PRINTER_NOTIFY_FIELD_STATUS_STRING=19; -const PRINTER_NOTIFY_FIELD_CJOBS=20; -const PRINTER_NOTIFY_FIELD_AVERAGE_PPM=21; -const PRINTER_NOTIFY_FIELD_TOTAL_PAGES=22; -const PRINTER_NOTIFY_FIELD_PAGES_PRINTED=23; -const PRINTER_NOTIFY_FIELD_TOTAL_BYTES=24; -const PRINTER_NOTIFY_FIELD_BYTES_PRINTED=25; - -const PRINTER_CHANGE_ADD_PRINTER=1; -const PRINTER_CHANGE_SET_PRINTER=2; -const PRINTER_CHANGE_DELETE_PRINTER=4; -const PRINTER_CHANGE_FAILED_CONNECTION_PRINTER=8; -const PRINTER_CHANGE_PRINTER=0xFF; -const PRINTER_CHANGE_ADD_JOB=0x100; -const PRINTER_CHANGE_SET_JOB=0x200; -const PRINTER_CHANGE_DELETE_JOB=0x400; -const PRINTER_CHANGE_WRITE_JOB=0x800; -const PRINTER_CHANGE_JOB=0xFF00; -const PRINTER_CHANGE_ADD_FORM=0x10000; -const PRINTER_CHANGE_SET_FORM=0x20000; -const PRINTER_CHANGE_DELETE_FORM=0x40000; -const PRINTER_CHANGE_FORM=0x70000; -const PRINTER_CHANGE_ADD_PORT=0x100000; -const PRINTER_CHANGE_CONFIGURE_PORT=0x200000; -const PRINTER_CHANGE_DELETE_PORT=0x400000; -const PRINTER_CHANGE_PORT=0x700000; -const PRINTER_CHANGE_ADD_PRINT_PROCESSOR=0x1000000; -const PRINTER_CHANGE_DELETE_PRINT_PROCESSOR=0x4000000; -const PRINTER_CHANGE_PRINT_PROCESSOR=0x7000000; -const PRINTER_CHANGE_ADD_PRINTER_DRIVER=0x10000000; -const PRINTER_CHANGE_SET_PRINTER_DRIVER=0x20000000; -const PRINTER_CHANGE_DELETE_PRINTER_DRIVER=0x40000000; -const PRINTER_CHANGE_PRINTER_DRIVER=0x70000000; -const PRINTER_CHANGE_TIMEOUT=0x80000000; -const PRINTER_CHANGE_ALL=0x7777FFFF; - -const PRINTER_NOTIFY_INFO_DISCARDED=1; -const PRINTER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE); -const PRINTER_READ=(STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE); -const PRINTER_WRITE=(STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE); -const PRINTER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE); -const NO_PRIORITY=0; -const MAX_PRIORITY=99; -const MIN_PRIORITY=1; -const DEF_PRIORITY=1; -const PORT_TYPE_WRITE=1; -const PORT_TYPE_READ=2; -const PORT_TYPE_REDIRECTED=4; -const PORT_TYPE_NET_ATTACHED=8; -const SERVER_ACCESS_ADMINISTER=1; -const SERVER_ACCESS_ENUMERATE=2; - -const SERVER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); -const SERVER_READ=(STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE); -const SERVER_WRITE=(STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); -const SERVER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE); - -const PORT_STATUS_TYPE_ERROR=1; -const PORT_STATUS_TYPE_WARNING=2; -const PORT_STATUS_TYPE_INFO=3; - -const PORT_STATUS_OFFLINE=1; -const PORT_STATUS_PAPER_JAM=2; -const PORT_STATUS_PAPER_OUT=3; -const PORT_STATUS_OUTPUT_BIN_FULL=4; -const PORT_STATUS_PAPER_PROBLEM=5; -const PORT_STATUS_NO_TONER=6; -const PORT_STATUS_DOOR_OPEN=7; -const PORT_STATUS_USER_INTERVENTION=8; -const PORT_STATUS_OUT_OF_MEMORY=9; -const PORT_STATUS_TONER_LOW=10; -const PORT_STATUS_WARMING_UP=11; -const PORT_STATUS_POWER_SAVE=12; +enum DI_CHANNEL=1; +enum DI_CHANNEL_WRITE=2; +enum DI_READ_SPOOL_JOB=3; + +enum FORM_BUILTIN=1; + +enum JOB_CONTROL_PAUSE=1; +enum JOB_CONTROL_RESUME=2; +enum JOB_CONTROL_CANCEL=3; +enum JOB_CONTROL_RESTART=4; +enum JOB_CONTROL_DELETE=5; +enum JOB_STATUS_PAUSED=1; +enum JOB_STATUS_ERROR=2; +enum JOB_STATUS_DELETING=4; +enum JOB_STATUS_SPOOLING=8; +enum JOB_STATUS_PRINTING=16; +enum JOB_STATUS_OFFLINE=32; +enum JOB_STATUS_PAPEROUT=0x40; +enum JOB_STATUS_PRINTED=0x80; +enum JOB_STATUS_DELETED=0x100; +enum JOB_STATUS_BLOCKED_DEVQ=0x200; +enum JOB_STATUS_USER_INTERVENTION=0x400; + +enum JOB_POSITION_UNSPECIFIED=0; + +enum JOB_NOTIFY_TYPE=1; + +enum JOB_NOTIFY_FIELD_PRINTER_NAME=0; +enum JOB_NOTIFY_FIELD_MACHINE_NAME=1; +enum JOB_NOTIFY_FIELD_PORT_NAME=2; +enum JOB_NOTIFY_FIELD_USER_NAME=3; +enum JOB_NOTIFY_FIELD_NOTIFY_NAME=4; +enum JOB_NOTIFY_FIELD_DATATYPE=5; +enum JOB_NOTIFY_FIELD_PRINT_PROCESSOR=6; +enum JOB_NOTIFY_FIELD_PARAMETERS=7; +enum JOB_NOTIFY_FIELD_DRIVER_NAME=8; +enum JOB_NOTIFY_FIELD_DEVMODE=9; +enum JOB_NOTIFY_FIELD_STATUS=10; +enum JOB_NOTIFY_FIELD_STATUS_STRING=11; +enum JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; +enum JOB_NOTIFY_FIELD_DOCUMENT=13; +enum JOB_NOTIFY_FIELD_PRIORITY=14; +enum JOB_NOTIFY_FIELD_POSITION=15; +enum JOB_NOTIFY_FIELD_SUBMITTED=16; +enum JOB_NOTIFY_FIELD_START_TIME=17; +enum JOB_NOTIFY_FIELD_UNTIL_TIME=18; +enum JOB_NOTIFY_FIELD_TIME=19; +enum JOB_NOTIFY_FIELD_TOTAL_PAGES=20; +enum JOB_NOTIFY_FIELD_PAGES_PRINTED=21; +enum JOB_NOTIFY_FIELD_TOTAL_BYTES=22; +enum JOB_NOTIFY_FIELD_BYTES_PRINTED=23; + +enum JOB_ACCESS_ADMINISTER = 16; +enum JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER; +enum JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER; +enum JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER; +enum JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER; + +enum PRINTER_NOTIFY_OPTIONS_REFRESH=1; +enum PRINTER_ACCESS_ADMINISTER=4; +enum PRINTER_ACCESS_USE=8; + +enum PRINTER_ERROR_INFORMATION=0x80000000; +enum PRINTER_ERROR_WARNING=0x40000000; +enum PRINTER_ERROR_SEVERE=0x20000000; +enum PRINTER_ERROR_OUTOFPAPER=1; +enum PRINTER_ERROR_JAM=2; +enum PRINTER_ERROR_OUTOFTONER=4; + +enum PRINTER_CONTROL_PAUSE=1; +enum PRINTER_CONTROL_RESUME=2; +enum PRINTER_CONTROL_PURGE=3; +enum PRINTER_CONTROL_SET_STATUS=4; + +enum PRINTER_STATUS_PAUSED = 1; +enum PRINTER_STATUS_ERROR = 2; +enum PRINTER_STATUS_PENDING_DELETION = 4; +enum PRINTER_STATUS_PAPER_JAM = 8; +enum PRINTER_STATUS_PAPER_OUT = 0x10; +enum PRINTER_STATUS_MANUAL_FEED = 0x20; +enum PRINTER_STATUS_PAPER_PROBLEM = 0x40; +enum PRINTER_STATUS_OFFLINE = 0x80; +enum PRINTER_STATUS_IO_ACTIVE = 0x100; +enum PRINTER_STATUS_BUSY = 0x200; +enum PRINTER_STATUS_PRINTING = 0x400; +enum PRINTER_STATUS_OUTPUT_BIN_FULL = 0x800; +enum PRINTER_STATUS_NOT_AVAILABLE = 0x1000; +enum PRINTER_STATUS_WAITING = 0x2000; +enum PRINTER_STATUS_PROCESSING = 0x4000; +enum PRINTER_STATUS_INITIALIZING = 0x8000; +enum PRINTER_STATUS_WARMING_UP = 0x10000; +enum PRINTER_STATUS_TONER_LOW = 0x20000; +enum PRINTER_STATUS_NO_TONER = 0x40000; +enum PRINTER_STATUS_PAGE_PUNT = 0x80000; +enum PRINTER_STATUS_USER_INTERVENTION = 0x100000; +enum PRINTER_STATUS_OUT_OF_MEMORY = 0x200000; +enum PRINTER_STATUS_DOOR_OPEN = 0x400000; +enum PRINTER_STATUS_SERVER_UNKNOWN = 0x800000; +enum PRINTER_STATUS_POWER_SAVE = 0x1000000; + +enum PRINTER_ATTRIBUTE_QUEUED=1; +enum PRINTER_ATTRIBUTE_DIRECT=2; +enum PRINTER_ATTRIBUTE_DEFAULT=4; +enum PRINTER_ATTRIBUTE_SHARED=8; +enum PRINTER_ATTRIBUTE_NETWORK=0x10; +enum PRINTER_ATTRIBUTE_HIDDEN=0x20; +enum PRINTER_ATTRIBUTE_LOCAL=0x40; +enum PRINTER_ATTRIBUTE_ENABLE_DEVQ=0x80; +enum PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS=0x100; +enum PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST=0x200; +enum PRINTER_ATTRIBUTE_WORK_OFFLINE=0x400; +enum PRINTER_ATTRIBUTE_ENABLE_BIDI=0x800; +enum PRINTER_ATTRIBUTE_RAW_ONLY=0x1000; +enum PRINTER_ATTRIBUTE_PUBLISHED=0x2000; + +enum PRINTER_ENUM_DEFAULT=1; +enum PRINTER_ENUM_LOCAL=2; +enum PRINTER_ENUM_CONNECTIONS=4; +enum PRINTER_ENUM_FAVORITE=4; +enum PRINTER_ENUM_NAME=8; +enum PRINTER_ENUM_REMOTE=16; +enum PRINTER_ENUM_SHARED=32; +enum PRINTER_ENUM_NETWORK=0x40; +enum PRINTER_ENUM_EXPAND=0x4000; +enum PRINTER_ENUM_CONTAINER=0x8000; +enum PRINTER_ENUM_ICONMASK=0xff0000; +enum PRINTER_ENUM_ICON1=0x10000; +enum PRINTER_ENUM_ICON2=0x20000; +enum PRINTER_ENUM_ICON3=0x40000; +enum PRINTER_ENUM_ICON4=0x80000; +enum PRINTER_ENUM_ICON5=0x100000; +enum PRINTER_ENUM_ICON6=0x200000; +enum PRINTER_ENUM_ICON7=0x400000; +enum PRINTER_ENUM_ICON8=0x800000; + +enum PRINTER_NOTIFY_TYPE=0; + +enum PRINTER_NOTIFY_FIELD_SERVER_NAME=0; +enum PRINTER_NOTIFY_FIELD_PRINTER_NAME=1; +enum PRINTER_NOTIFY_FIELD_SHARE_NAME=2; +enum PRINTER_NOTIFY_FIELD_PORT_NAME=3; +enum PRINTER_NOTIFY_FIELD_DRIVER_NAME=4; +enum PRINTER_NOTIFY_FIELD_COMMENT=5; +enum PRINTER_NOTIFY_FIELD_LOCATION=6; +enum PRINTER_NOTIFY_FIELD_DEVMODE=7; +enum PRINTER_NOTIFY_FIELD_SEPFILE=8; +enum PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR=9; +enum PRINTER_NOTIFY_FIELD_PARAMETERS=10; +enum PRINTER_NOTIFY_FIELD_DATATYPE=11; +enum PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; +enum PRINTER_NOTIFY_FIELD_ATTRIBUTES=13; +enum PRINTER_NOTIFY_FIELD_PRIORITY=14; +enum PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY=15; +enum PRINTER_NOTIFY_FIELD_START_TIME=16; +enum PRINTER_NOTIFY_FIELD_UNTIL_TIME=17; +enum PRINTER_NOTIFY_FIELD_STATUS=18; +enum PRINTER_NOTIFY_FIELD_STATUS_STRING=19; +enum PRINTER_NOTIFY_FIELD_CJOBS=20; +enum PRINTER_NOTIFY_FIELD_AVERAGE_PPM=21; +enum PRINTER_NOTIFY_FIELD_TOTAL_PAGES=22; +enum PRINTER_NOTIFY_FIELD_PAGES_PRINTED=23; +enum PRINTER_NOTIFY_FIELD_TOTAL_BYTES=24; +enum PRINTER_NOTIFY_FIELD_BYTES_PRINTED=25; + +enum PRINTER_CHANGE_ADD_PRINTER=1; +enum PRINTER_CHANGE_SET_PRINTER=2; +enum PRINTER_CHANGE_DELETE_PRINTER=4; +enum PRINTER_CHANGE_FAILED_CONNECTION_PRINTER=8; +enum PRINTER_CHANGE_PRINTER=0xFF; +enum PRINTER_CHANGE_ADD_JOB=0x100; +enum PRINTER_CHANGE_SET_JOB=0x200; +enum PRINTER_CHANGE_DELETE_JOB=0x400; +enum PRINTER_CHANGE_WRITE_JOB=0x800; +enum PRINTER_CHANGE_JOB=0xFF00; +enum PRINTER_CHANGE_ADD_FORM=0x10000; +enum PRINTER_CHANGE_SET_FORM=0x20000; +enum PRINTER_CHANGE_DELETE_FORM=0x40000; +enum PRINTER_CHANGE_FORM=0x70000; +enum PRINTER_CHANGE_ADD_PORT=0x100000; +enum PRINTER_CHANGE_CONFIGURE_PORT=0x200000; +enum PRINTER_CHANGE_DELETE_PORT=0x400000; +enum PRINTER_CHANGE_PORT=0x700000; +enum PRINTER_CHANGE_ADD_PRINT_PROCESSOR=0x1000000; +enum PRINTER_CHANGE_DELETE_PRINT_PROCESSOR=0x4000000; +enum PRINTER_CHANGE_PRINT_PROCESSOR=0x7000000; +enum PRINTER_CHANGE_ADD_PRINTER_DRIVER=0x10000000; +enum PRINTER_CHANGE_SET_PRINTER_DRIVER=0x20000000; +enum PRINTER_CHANGE_DELETE_PRINTER_DRIVER=0x40000000; +enum PRINTER_CHANGE_PRINTER_DRIVER=0x70000000; +enum PRINTER_CHANGE_TIMEOUT=0x80000000; +enum PRINTER_CHANGE_ALL=0x7777FFFF; + +enum PRINTER_NOTIFY_INFO_DISCARDED=1; +enum PRINTER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE); +enum PRINTER_READ=(STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE); +enum PRINTER_WRITE=(STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE); +enum PRINTER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE); +enum NO_PRIORITY=0; +enum MAX_PRIORITY=99; +enum MIN_PRIORITY=1; +enum DEF_PRIORITY=1; +enum PORT_TYPE_WRITE=1; +enum PORT_TYPE_READ=2; +enum PORT_TYPE_REDIRECTED=4; +enum PORT_TYPE_NET_ATTACHED=8; +enum SERVER_ACCESS_ADMINISTER=1; +enum SERVER_ACCESS_ENUMERATE=2; + +enum SERVER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); +enum SERVER_READ=(STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE); +enum SERVER_WRITE=(STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); +enum SERVER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE); + +enum PORT_STATUS_TYPE_ERROR=1; +enum PORT_STATUS_TYPE_WARNING=2; +enum PORT_STATUS_TYPE_INFO=3; + +enum PORT_STATUS_OFFLINE=1; +enum PORT_STATUS_PAPER_JAM=2; +enum PORT_STATUS_PAPER_OUT=3; +enum PORT_STATUS_OUTPUT_BIN_FULL=4; +enum PORT_STATUS_PAPER_PROBLEM=5; +enum PORT_STATUS_NO_TONER=6; +enum PORT_STATUS_DOOR_OPEN=7; +enum PORT_STATUS_USER_INTERVENTION=8; +enum PORT_STATUS_OUT_OF_MEMORY=9; +enum PORT_STATUS_TONER_LOW=10; +enum PORT_STATUS_WARMING_UP=11; +enum PORT_STATUS_POWER_SAVE=12; struct ADDJOB_INFO_1A { LPSTR Path; diff --git a/src/core/sys/windows/winsvc.d b/src/core/sys/windows/winsvc.d index 0fdfe38c23..3114807d1b 100644 --- a/src/core/sys/windows/winsvc.d +++ b/src/core/sys/windows/winsvc.d @@ -23,7 +23,7 @@ const TCHAR[] const TCHAR SC_GROUP_IDENTIFIER = '+'; -const DWORD +enum DWORD SC_MANAGER_ALL_ACCESS = 0xf003f, SC_MANAGER_CONNECT = 1, SC_MANAGER_CREATE_SERVICE = 2, @@ -32,7 +32,7 @@ const DWORD SC_MANAGER_QUERY_LOCK_STATUS = 16, SC_MANAGER_MODIFY_BOOT_CONFIG = 32; -const DWORD SERVICE_NO_CHANGE = 0xffffffff; +enum DWORD SERVICE_NO_CHANGE = 0xffffffff; enum : DWORD { SERVICE_STOPPED = 1, @@ -44,7 +44,7 @@ enum : DWORD { SERVICE_PAUSED // = 7 } -const DWORD +enum DWORD SERVICE_ACCEPT_STOP = 1, SERVICE_ACCEPT_PAUSE_CONTINUE = 2, SERVICE_ACCEPT_SHUTDOWN = 4, @@ -77,7 +77,7 @@ enum : DWORD { SERVICE_STATE_ALL } -const DWORD +enum DWORD SERVICE_QUERY_CONFIG = 0x0001, SERVICE_CHANGE_CONFIG = 0x0002, SERVICE_QUERY_STATUS = 0x0004, @@ -90,7 +90,7 @@ const DWORD SERVICE_ALL_ACCESS = 0x01FF | STANDARD_RIGHTS_REQUIRED; // This is not documented on the MSDN site -const SERVICE_RUNS_IN_SYSTEM_PROCESS = 1; +enum SERVICE_RUNS_IN_SYSTEM_PROCESS = 1; enum : DWORD { SERVICE_CONFIG_DESCRIPTION = 1, diff --git a/src/core/sys/windows/wtypes.d b/src/core/sys/windows/wtypes.d index 5d8bbf72c8..b7a83cbce7 100644 --- a/src/core/sys/windows/wtypes.d +++ b/src/core/sys/windows/wtypes.d @@ -15,8 +15,8 @@ private import core.sys.windows.uuid; // for GUID_NULL alias GUID_NULL IID_NULL, CLSID_NULL; -const ROTFLAGS_REGISTRATIONKEEPSALIVE = 0x01; -const ROTFLAGS_ALLOWANYCLIENT = 0x02; +enum ROTFLAGS_REGISTRATIONKEEPSALIVE = 0x01; +enum ROTFLAGS_ALLOWANYCLIENT = 0x02; // also in winsock2.h struct BLOB { @@ -89,8 +89,8 @@ alias LPCWSTR LPCOLESTR; alias ushort VARTYPE; alias short VARIANT_BOOL; alias VARIANT_BOOL _VARIANT_BOOL; -const VARIANT_BOOL VARIANT_TRUE = -1; // 0xffff; -const VARIANT_BOOL VARIANT_FALSE = 0; +enum VARIANT_BOOL VARIANT_TRUE = -1; // 0xffff; +enum VARIANT_BOOL VARIANT_FALSE = 0; alias OLECHAR* BSTR; alias FLAGGED_WORD_BLOB* wireBSTR; From eff35face9a1761713e3020858b0b9dc2ca58409 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Tue, 19 Jan 2016 06:09:59 +0000 Subject: [PATCH 232/768] core.sys.windows: Fix inappropriate usage of D in/out/ref --- src/core/sys/windows/mshtml.d | 20 ++++++++++---------- src/core/sys/windows/rpcnsi.d | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/core/sys/windows/mshtml.d b/src/core/sys/windows/mshtml.d index 5a68176ffa..796f1d3083 100644 --- a/src/core/sys/windows/mshtml.d +++ b/src/core/sys/windows/mshtml.d @@ -290,10 +290,10 @@ interface IHTMLElement : IDispatch { HRESULT getAttribute(BSTR,LONG,VARIANT*); HRESULT removeAttribute(BSTR,LONG,VARIANT_BOOL*); HRESULT put_className(BSTR); - HRESULT get_className(ref BSTR); + HRESULT get_className(BSTR*); HRESULT put_id(BSTR); - HRESULT get_id(ref BSTR); - HRESULT get_tagName(ref BSTR); + HRESULT get_id(BSTR*); + HRESULT get_tagName(BSTR*); HRESULT get_parentElement(LPHTMLELEMENT*); HRESULT get_style(LPHTMLSTYLE*); HRESULT put_onhelp(VARIANT); @@ -320,9 +320,9 @@ interface IHTMLElement : IDispatch { HRESULT get_onmouseup(VARIANT*); HRESULT get_document(IDispatch*); HRESULT put_title(BSTR); - HRESULT get_title(ref BSTR); + HRESULT get_title(BSTR*); HRESULT put_language(BSTR); - HRESULT get_language(ref BSTR); + HRESULT get_language(BSTR*); HRESULT put_onselectstart(VARIANT); HRESULT get_onselectstart(VARIANT*); HRESULT scrollIntoView(VARIANT); @@ -330,20 +330,20 @@ interface IHTMLElement : IDispatch { HRESULT get_source3Index(LONG*); HRESULT get_recordNumber(VARIANT*); HRESULT put_lang(BSTR); - HRESULT get_lang(ref BSTR); + HRESULT get_lang(BSTR*); HRESULT get_offsetLeft(LONG*); HRESULT get_offsetTop(LONG*); HRESULT get_offsetWidth(LONG*); HRESULT get_offsetHeight(LONG*); HRESULT get_offsetParent(LPHTMLELEMENT*); HRESULT put_innerHTML(BSTR); - HRESULT get_innerHTML(ref BSTR); + HRESULT get_innerHTML(BSTR*); HRESULT put_innerText(BSTR); - HRESULT get_innerText(ref BSTR); + HRESULT get_innerText(BSTR*); HRESULT put_outerHTML(BSTR); - HRESULT get_outerHTML(ref BSTR); + HRESULT get_outerHTML(BSTR*); HRESULT put_outerText(BSTR); - HRESULT get_outerText(ref BSTR); + HRESULT get_outerText(BSTR*); HRESULT insertAdjacentHTML(BSTR,BSTR); HRESULT insertAdjacentText(BSTR,BSTR); HRESULT get_parentTextEdit(LPHTMLELEMENT*); diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d index ae7520940a..058e2566e9 100644 --- a/src/core/sys/windows/rpcnsi.d +++ b/src/core/sys/windows/rpcnsi.d @@ -53,8 +53,8 @@ extern (Windows) { RPC_STATUS RpcNsProfileEltInqNextA(RPC_NS_HANDLE, RPC_IF_ID*, ubyte**, uint*, ubyte**); RPC_STATUS RpcNsProfileEltInqDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsEntryObjectInqNext(in RPC_NS_HANDLE, out UUID*); - RPC_STATUS RpcNsEntryObjectInqDone(ref RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryObjectInqNext(RPC_NS_HANDLE, UUID*); + RPC_STATUS RpcNsEntryObjectInqDone(RPC_NS_HANDLE*); RPC_STATUS RpcNsEntryExpandNameA(uint, ubyte*, ubyte**); RPC_STATUS RpcNsMgmtBindingUnexportA(uint, ubyte*, RPC_IF_ID*, uint, UUID_VECTOR*); From 9624322f86efbfbaef9e4d5ca59abe625db863c5 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Mon, 18 Jan 2016 17:09:59 +0000 Subject: [PATCH 233/768] core.sys.windows: Add some pragma(lib) declarations --- src/core/sys/windows/ntsecapi.d | 1 + src/core/sys/windows/ole.d | 1 + src/core/sys/windows/tlhelp32.d | 1 + src/core/sys/windows/wincrypt.d | 1 + 4 files changed, 4 insertions(+) diff --git a/src/core/sys/windows/ntsecapi.d b/src/core/sys/windows/ntsecapi.d index e6a41e844f..b043168994 100644 --- a/src/core/sys/windows/ntsecapi.d +++ b/src/core/sys/windows/ntsecapi.d @@ -9,6 +9,7 @@ */ module core.sys.windows.ntsecapi; version (Windows): +pragma(lib, "advapi32"); version (ANSI) {} else version = Unicode; diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index 15d6845620..02dc2555b3 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -9,6 +9,7 @@ */ module core.sys.windows.ole; version (Windows): +pragma(lib, "ole32"); private import core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.uuid; diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index 9fe281d973..fc682c9d72 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -8,6 +8,7 @@ */ module core.sys.windows.tlhelp32; version (Windows): +pragma(lib, "kernel32"); version (ANSI) {} else version = Unicode; diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index 5277d7abd6..bb18532134 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -9,6 +9,7 @@ */ module core.sys.windows.wincrypt; version (Windows): +pragma(lib, "advapi32"); version (ANSI) {} else version = Unicode; From 57a5d76583c65a9eb8712f98003489caedd42902 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Mon, 18 Jan 2016 17:15:00 +0000 Subject: [PATCH 234/768] changelog.dd: Mention core.sys.windows --- changelog.dd | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/changelog.dd b/changelog.dd index f85cd16c64..f1f8f7c5f5 100644 --- a/changelog.dd +++ b/changelog.dd @@ -6,7 +6,10 @@ $(COMMENT Pending changelog for 2.067.0. $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 TypeInfo.initializer, `TypeInfo.init` has been renamed to - `TypeInfo.initializer`.)) + `TypeInfo.initializer`.) +) +$(LI $(RELATIVE_LINK2 core.sys.windows, The `core.sys.windows` package has been + greatly expanded.) ) ) @@ -28,6 +31,16 @@ $(LI $(LNAME2 TypeInfo.initializer, `TypeInfo.init` has been renamed to 2.074.0 release, so that the type property `init` takes over. ) ) + +$(LI $(LNAME2 core.sys.windows, The `core.sys.windows` package has been + greatly expanded.) + + $(P The `core.sys.windows` package now contains a considerably more + comprehensive set of Windows API bindings. The package has been + adapted from $(WEB github.com/smjgordon/bindings, Stewart Gordon's + bindings), which were originally adapted from the MinGW project. + ) +) ) From 889b1654d09a25d23d912ff7e1d9dcb658ffc389 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 18 Jan 2016 21:05:52 -0800 Subject: [PATCH 235/768] add core.stdcpp.exception and core.stdcpp.typeinfo --- mak/COPY | 3 + src/core/stdcpp/exception.d | 106 ++++++++++++++++++++++++++ src/core/stdcpp/typeinfo.d | 146 ++++++++++++++++++++++++++++++++++++ win32.mak | 7 ++ win64.mak | 7 ++ 5 files changed, 269 insertions(+) create mode 100644 src/core/stdcpp/exception.d create mode 100644 src/core/stdcpp/typeinfo.d diff --git a/mak/COPY b/mak/COPY index 4f3f0a05b1..52daf0c442 100644 --- a/mak/COPY +++ b/mak/COPY @@ -43,6 +43,9 @@ COPY=\ $(IMPDIR)\core\stdc\wchar_.d \ $(IMPDIR)\core\stdc\wctype.d \ \ + $(IMPDIR)\core\stdcpp\typeinfo.d \ + $(IMPDIR)\core\stdcpp\exception.d \ + \ $(IMPDIR)\core\sys\unwind.d \ \ $(IMPDIR)\core\sys\freebsd\dlfcn.d \ diff --git a/src/core/stdcpp/exception.d b/src/core/stdcpp/exception.d new file mode 100644 index 0000000000..2064fbc567 --- /dev/null +++ b/src/core/stdcpp/exception.d @@ -0,0 +1,106 @@ +// Written in the D programming language. + +/** + * Interface to C++ + * + * Copyright: Copyright (c) 2016 D Language Foundation + * License: $(WEB boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: $(WEB digitalmars.com, Walter Bright) + * Source: $(DRUNTIMESRC core/stdcpp/_exception.d) + */ + +module core.stdcpp.exception; + +version (CRuntime_DigitalMars) +{ + import core.stdcpp.typeinfo; + + extern (C++, std) + { + alias void function() unexpected_handler; + unexpected_handler set_unexpected(unexpected_handler f) nothrow; + void unexpected(); + + alias void function() terminate_handler; + terminate_handler set_terminate(terminate_handler f) nothrow; + void terminate(); + + bool uncaught_exception(); + + class exception + { + this() nothrow { } + this(const exception) nothrow { } + //exception operator=(const exception) nothrow { return this; } + //virtual ~this() nothrow; + void dtor() { } + const(char)* what() const nothrow; + } + + class bad_exception : exception + { + this() nothrow { } + this(const bad_exception) nothrow { } + //bad_exception operator=(const bad_exception) nothrow { return this; } + //virtual ~this() nothrow; + override const(char)* what() const nothrow; + } + } +} +else version (CRuntime_Glibc) +{ + extern (C++, std) + { + alias void function() unexpected_handler; + unexpected_handler set_unexpected(unexpected_handler f) nothrow; + void unexpected(); + + alias void function() terminate_handler; + terminate_handler set_terminate(terminate_handler f) nothrow; + void terminate(); + + void unexpected(); + pure bool uncaught_exception(); + + class exception + { + this(); + //virtual ~this(); + void dtor1(); + void dtor2(); + const(char)* what() const; + } + + class bad_exception : exception + { + this(); + //virtual ~this(); + const(char)* what() const; + } + } +} +else version (CRuntime_Microsoft) +{ + extern (C++, std) + { + class exception + { + this(); + this(const exception); + //exception operator=(const exception) { return this; } + //virtual ~this(); + void dtor() { } + const(char)* what() const; + + private: + const(char)* mywhat; + bool dofree; + } + + class bad_exception : exception + { + this(const(char)* msg = "bad exception"); + //virtual ~this(); + } + } +} diff --git a/src/core/stdcpp/typeinfo.d b/src/core/stdcpp/typeinfo.d new file mode 100644 index 0000000000..b24b5225c1 --- /dev/null +++ b/src/core/stdcpp/typeinfo.d @@ -0,0 +1,146 @@ +// Written in the D programming language. + +/** + * Interface to C++ + * + * Copyright: Copyright (c) 2016 D Language Foundation + * License: $(WEB boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: $(WEB digitalmars.com, Walter Bright) + * Source: $(DRUNTIMESRC core/stdcpp/_typeinfo.d) + */ + +module core.stdcpp.typeinfo; + +version (CRuntime_DigitalMars) +{ + import core.stdcpp.exception; + + extern (C++, std) + { + class type_info + { + void* pdata; + + public: + //virtual ~this(); + void dtor() { } // reserve slot in vtbl[] + + //bool operator==(const type_info rhs) const; + //bool operator!=(const type_info rhs) const; + final bool before(const type_info rhs) const; + final const(char)* name() const; + protected: + //type_info(); + private: + //this(const type_info rhs); + //type_info operator=(const type_info rhs); + } + + class bad_cast : core.stdcpp.exception.std.exception + { + this() nothrow { } + this(const bad_cast) nothrow { } + //bad_cast operator=(const bad_cast) nothrow { return this; } + //virtual ~this() nothrow; + override const(char)* what() const nothrow; + } + + class bad_typeid : core.stdcpp.exception.std.exception + { + this() nothrow { } + this(const bad_typeid) nothrow { } + //bad_typeid operator=(const bad_typeid) nothrow { return this; } + //virtual ~this() nothrow; + override const (char)* what() const nothrow; + } + } +} +else version (CRuntime_Microsoft) +{ + import core.stdcpp.exception; + + struct __type_info_node + { + void* _MemPtr; + __type_info_node* _Next; + } + + extern __gshared __type_info_node __type_info_root_node; + + extern (C++, std) + { + class type_info + { + + public: + //virtual ~this(); + void dtor() { } // reserve slot in vtbl[] + //bool operator==(const type_info rhs) const; + //bool operator!=(const type_info rhs) const; + final bool before(const type_info rhs) const; + final const(char)* name(__type_info_node* p = &__type_info_root_node) const; + + private: + void* pdata; + char _name[1]; + //this(const type_info rhs); + //type_info operator=(const type_info rhs); + } + + class bad_cast : core.stdcpp.exception.std.exception + { + this(const(char)* msg = "bad cast") { } + this(const bad_cast) { } + //virtual ~this(); + } + + class bad_typeid : core.stdcpp.exception.std.exception + { + this(const(char)* msg = "bad typeid") { } + this(const bad_typeid) { } + //virtual ~this(); + } + } +} +else version (CRuntime_Glibc) +{ + import core.stdcpp.exception; + + extern (C++, __cxxabiv1) + { + class __class_type_info; + } + + extern (C++, std) + { + class type_info + { + void dtor1(); // consume destructor slot in vtbl[] + void dtor2(); // consume destructor slot in vtbl[] + final const(char)* name(); + final bool before(const type_info) const; + //bool operator==(const type_info) const; + bool __is_pointer_p() const; + bool __is_function_p() const; + bool __do_catch(const type_info, void**, uint) const; + bool __do_upcast(const __cxxabiv1.__class_type_info, void**) const; + + const(char)* _name; + this(const(char)*); + } + + class bad_cast : core.stdcpp.exception.std.exception + { + this(); + //~this(); + const(char)* what() const; + } + + class bad_typeid : core.stdcpp.exception.std.exception + { + this(); + //~this(); + const(char)* what() const; + } + } +} diff --git a/win32.mak b/win32.mak index a80f12f551..c02769821d 100644 --- a/win32.mak +++ b/win32.mak @@ -199,6 +199,7 @@ $(IMPDIR)\core\sync\semaphore.di : src\core\sync\semaphore.d copydir: $(IMPDIR) mkdir $(IMPDIR)\core\stdc + mkdir $(IMPDIR)\core\stdcpp mkdir $(IMPDIR)\core\internal mkdir $(IMPDIR)\core\sys\freebsd\sys mkdir $(IMPDIR)\core\sys\linux\sys @@ -337,6 +338,12 @@ $(IMPDIR)\core\stdc\wchar_.d : src\core\stdc\wchar_.d $(IMPDIR)\core\stdc\wctype.d : src\core\stdc\wctype.d copy $** $@ +$(IMPDIR)\core\stdcpp\exception.d : src\core\stdcpp\exception.d + copy $** $@ + +$(IMPDIR)\core\stdcpp\typeinfo.d : src\core\stdcpp\typeinfo.d + copy $** $@ + $(IMPDIR)\core\sys\unwind.d : src\core\sys\unwind.d copy $** $@ diff --git a/win64.mak b/win64.mak index cbcafeebba..4af9d74db2 100644 --- a/win64.mak +++ b/win64.mak @@ -207,6 +207,7 @@ $(IMPDIR)\core\sync\semaphore.di : src\core\sync\semaphore.d copydir: $(IMPDIR) mkdir $(IMPDIR)\core\stdc + mkdir $(IMPDIR)\core\stdcpp mkdir $(IMPDIR)\core\internal mkdir $(IMPDIR)\core\sys\freebsd\sys mkdir $(IMPDIR)\core\sys\linux\sys @@ -345,6 +346,12 @@ $(IMPDIR)\core\stdc\wchar_.d : src\core\stdc\wchar_.d $(IMPDIR)\core\stdc\wctype.d : src\core\stdc\wctype.d copy $** $@ +$(IMPDIR)\core\stdcpp\exception.d : src\core\stdcpp\exception.d + copy $** $@ + +$(IMPDIR)\core\stdcpp\typeinfo.d : src\core\stdcpp\typeinfo.d + copy $** $@ + $(IMPDIR)\core\sys\unwind.d : src\core\sys\unwind.d copy $** $@ From f6cecd4dfe20b1898b52084d3f2081a3f72a59bc Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 19 Jan 2016 22:37:34 -0800 Subject: [PATCH 236/768] dwarfeh: EDX and ERX are different register numbers for dwarf --- src/rt/dwarfeh.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d index 0ac178a747..5207f2ac7c 100644 --- a/src/rt/dwarfeh.d +++ b/src/rt/dwarfeh.d @@ -410,8 +410,8 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti } // Set up registers and jump to cleanup or handler - int reg0 = 0; // RAX is __exception_object - int reg1 = 1; // RDX is __handler + int reg0 = 0; // EAX/RAX is __exception_object + int reg1 = (size_t.sizeof == 4) ? 2 : 1; // EDX/RDX is __handler _Unwind_SetGR(context, reg0, cast(_Unwind_Ptr)exceptionObject); _Unwind_SetGR(context, reg1, handler); _Unwind_SetIP(context, landing_pad); From f6195a5661769edc754f9ab1d1f3cf9ef3359dc3 Mon Sep 17 00:00:00 2001 From: tsbockman Date: Wed, 20 Jan 2016 20:41:38 -0800 Subject: [PATCH 237/768] Fix CTFE popcnt() so it doesn't try to check core.cpuid.hasPopcnt, which will fail. --- src/core/bitop.d | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/src/core/bitop.d b/src/core/bitop.d index 2ec0397542..009dffbd85 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -271,9 +271,12 @@ int popcnt(uint x) pure { static if (is(typeof(_popcnt(uint.max)))) { - import core.cpuid; - if (hasPopcnt) - return _popcnt(x); + if(!__ctfe) + { + import core.cpuid; + if (hasPopcnt) + return _popcnt(x); + } } } @@ -290,6 +293,10 @@ unittest assert( popcnt( 0xFFFF_FFFF ) == 32 ); assert( popcnt( 0xCCCC_CCCC ) == 16 ); assert( popcnt( 0x7777_7777 ) == 24 ); + + // Make sure popcnt() is available at CTFE + enum test_ctfe = popcnt(uint.max); + assert(test_ctfe == 32); } /// ditto @@ -306,13 +313,23 @@ int popcnt(ulong x) pure static if (size_t.sizeof == uint.sizeof) { - const sx = Split64(x); - version(DigitalMars) + Split64 sx = void; + if(__ctfe) { - static if (is(typeof(_popcnt(uint.max)))) + // union repainting doesn't work in CTFE + sx.lo = cast(uint)x; + sx.hi = cast(uint)(x >> 32); + } + else + { + sx.u64 = x; + version(DigitalMars) { - if (hasPopcnt) - return _popcnt(sx.lo) + _popcnt(sx.hi); + static if (is(typeof(_popcnt(uint.max)))) + { + if (hasPopcnt) + return _popcnt(sx.lo) + _popcnt(sx.hi); + } } } @@ -324,8 +341,11 @@ int popcnt(ulong x) pure { static if (is(typeof(_popcnt(ulong.max)))) { - if (hasPopcnt) - return _popcnt(x); + if(!__ctfe) + { + if (hasPopcnt) + return _popcnt(x); + } } } @@ -343,6 +363,10 @@ unittest assert(popcnt((1uL << 32) - 1) == 32); assert(popcnt(0x48_65_6C_6C_6F_3F_21_00uL) == 28); assert(popcnt(ulong.max) == 64); + + // Make sure popcnt() is available at CTFE + enum test_ctfe = popcnt(ulong.max); + assert(test_ctfe == 64); } private int soft_popcnt(N)(N x) pure From 5f12e007e572fbc48713a53e6a1f0cc8efa5df60 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Thu, 21 Jan 2016 08:11:39 +0100 Subject: [PATCH 238/768] remove mak/MANIFEST, use "git ls-tree" instead --- HACKING.md | 1 - mak/MANIFEST | 500 --------------------------------------------------- posix.mak | 10 +- win32.mak | 5 +- win64.mak | 5 +- 5 files changed, 10 insertions(+), 511 deletions(-) delete mode 100644 mak/MANIFEST diff --git a/HACKING.md b/HACKING.md index bf395f2437..23a283ef3a 100644 --- a/HACKING.md +++ b/HACKING.md @@ -48,7 +48,6 @@ updated: * mak/COPY * mak/DOCS * mak/IMPORTS -* mak/MANIFEST * mak/SRCS Operating system bindings diff --git a/mak/MANIFEST b/mak/MANIFEST deleted file mode 100644 index 0471c3eb61..0000000000 --- a/mak/MANIFEST +++ /dev/null @@ -1,500 +0,0 @@ -MANIFEST=\ - HACKING.md \ - LICENSE \ - README.md \ - posix.mak \ - win32.mak \ - win64.mak \ - osmodel.mak \ - project.ddoc \ - \ - mak\COPY \ - mak\DOCS \ - mak\IMPORTS \ - mak\MANIFEST \ - mak\SRCS \ - \ - src\object.d \ - src\test_runner.d \ - \ - src\core\atomic.d \ - src\core\attribute.d \ - src\core\bitop.d \ - src\core\checkedint.d \ - src\core\cpuid.d \ - src\core\demangle.d \ - src\core\exception.d \ - src\core\math.d \ - src\core\memory.d \ - src\core\runtime.d \ - src\core\simd.d \ - src\core\thread.d \ - src\core\threadasm.S \ - src\core\time.d \ - src\core\vararg.d \ - \ - src\core\internal\abort.d \ - src\core\internal\convert.d \ - src\core\internal\hash.d \ - src\core\internal\string.d \ - src\core\internal\traits.d \ - \ - src\core\stdc\complex.d \ - src\core\stdc\config.d \ - src\core\stdc\ctype.d \ - src\core\stdc\errno.c \ - src\core\stdc\errno.d \ - src\core\stdc\fenv.d \ - src\core\stdc\float_.d \ - src\core\stdc\inttypes.d \ - src\core\stdc\limits.d \ - src\core\stdc\locale.d \ - src\core\stdc\math.d \ - src\core\stdc\signal.d \ - src\core\stdc\stdarg.d \ - src\core\stdc\stddef.d \ - src\core\stdc\stdint.d \ - src\core\stdc\stdio.d \ - src\core\stdc\stdlib.d \ - src\core\stdc\string.d \ - src\core\stdc\tgmath.d \ - src\core\stdc\time.d \ - src\core\stdc\wchar_.d \ - src\core\stdc\wctype.d \ - \ - src\core\sync\barrier.d \ - src\core\sync\condition.d \ - src\core\sync\config.d \ - src\core\sync\exception.d \ - src\core\sync\mutex.d \ - src\core\sync\rwmutex.d \ - src\core\sync\semaphore.d \ - \ - src\core\sys\unwind.d \ - \ - src\core\sys\freebsd\dlfcn.d \ - src\core\sys\freebsd\execinfo.d \ - src\core\sys\freebsd\time.d \ - \ - src\core\sys\freebsd\sys\cdefs.d \ - src\core\sys\freebsd\sys\elf.d \ - src\core\sys\freebsd\sys\elf_common.d \ - src\core\sys\freebsd\sys\elf32.d \ - src\core\sys\freebsd\sys\elf64.d \ - src\core\sys\freebsd\sys\event.d \ - src\core\sys\freebsd\sys\link_elf.d \ - src\core\sys\freebsd\sys\mman.d \ - \ - src\core\sys\linux\config.d \ - src\core\sys\linux\dlfcn.d \ - src\core\sys\linux\elf.d \ - src\core\sys\linux\epoll.d \ - src\core\sys\linux\errno.d \ - src\core\sys\linux\execinfo.d \ - src\core\sys\linux\fcntl.d \ - src\core\sys\linux\link.d \ - src\core\sys\linux\stdio.d \ - src\core\sys\linux\termios.d \ - src\core\sys\linux\time.d \ - src\core\sys\linux\timerfd.d \ - src\core\sys\linux\tipc.d \ - src\core\sys\linux\unistd.d \ - \ - src\core\sys\linux\sys\inotify.d \ - src\core\sys\linux\sys\mman.d \ - src\core\sys\linux\sys\signalfd.d \ - src\core\sys\linux\sys\socket.d \ - src\core\sys\linux\sys\sysinfo.d \ - src\core\sys\linux\sys\xattr.d \ - \ - src\core\sys\osx\execinfo.d \ - src\core\sys\osx\pthread.d \ - \ - src\core\sys\osx\mach\dyld.d \ - src\core\sys\osx\mach\getsect.d \ - src\core\sys\osx\mach\kern_return.d \ - src\core\sys\osx\mach\loader.d \ - src\core\sys\osx\mach\port.d \ - src\core\sys\osx\mach\semaphore.d \ - src\core\sys\osx\mach\thread_act.d \ - \ - src\core\sys\osx\sys\cdefs.d \ - src\core\sys\osx\sys\event.d \ - src\core\sys\osx\sys\mman.d \ - \ - src\core\sys\posix\config.d \ - src\core\sys\posix\dirent.d \ - src\core\sys\posix\dlfcn.d \ - src\core\sys\posix\fcntl.d \ - src\core\sys\posix\grp.d \ - src\core\sys\posix\inttypes.d \ - src\core\sys\posix\netdb.d \ - src\core\sys\posix\poll.d \ - src\core\sys\posix\pthread.d \ - src\core\sys\posix\pwd.d \ - src\core\sys\posix\sched.d \ - src\core\sys\posix\semaphore.d \ - src\core\sys\posix\setjmp.d \ - src\core\sys\posix\signal.d \ - src\core\sys\posix\stdio.d \ - src\core\sys\posix\stdlib.d \ - src\core\sys\posix\syslog.d \ - src\core\sys\posix\termios.d \ - src\core\sys\posix\time.d \ - src\core\sys\posix\ucontext.d \ - src\core\sys\posix\unistd.d \ - src\core\sys\posix\utime.d \ - \ - src\core\sys\posix\arpa\inet.d \ - \ - src\core\sys\posix\net\if_.d \ - \ - src\core\sys\posix\netinet\in_.d \ - src\core\sys\posix\netinet\tcp.d \ - \ - src\core\sys\posix\sys\ioctl.d \ - src\core\sys\posix\sys\ipc.d \ - src\core\sys\posix\sys\mman.d \ - src\core\sys\posix\sys\msg.d \ - src\core\sys\posix\sys\resource.d \ - src\core\sys\posix\sys\select.d \ - src\core\sys\posix\sys\shm.d \ - src\core\sys\posix\sys\socket.d \ - src\core\sys\posix\sys\stat.d \ - src\core\sys\posix\sys\statvfs.d \ - src\core\sys\posix\sys\time.d \ - src\core\sys\posix\sys\types.d \ - src\core\sys\posix\sys\uio.d \ - src\core\sys\posix\sys\un.d \ - src\core\sys\posix\sys\utsname.d \ - src\core\sys\posix\sys\wait.d \ - \ - src\core\sys\solaris\dlfcn.d \ - src\core\sys\solaris\elf.d \ - src\core\sys\solaris\execinfo.d \ - src\core\sys\solaris\libelf.d \ - src\core\sys\solaris\link.d \ - src\core\sys\solaris\time.d \ - \ - src\core\sys\solaris\sys\elf.d \ - src\core\sys\solaris\sys\elf_386.d \ - src\core\sys\solaris\sys\elf_amd64.d \ - src\core\sys\solaris\sys\elf_notes.d \ - src\core\sys\solaris\sys\elf_SPARC.d \ - src\core\sys\solaris\sys\elftypes.d \ - src\core\sys\solaris\sys\link.d \ - src\core\sys\solaris\sys\priocntl.d \ - src\core\sys\solaris\sys\procset.d \ - src\core\sys\solaris\sys\types.d \ - \ - src\core\sys\windows\accctrl.d \ - src\core\sys\windows\aclapi.d \ - src\core\sys\windows\aclui.d \ - src\core\sys\windows\basetsd.d \ - src\core\sys\windows\basetyps.d \ - src\core\sys\windows\cderr.d \ - src\core\sys\windows\cguid.d \ - src\core\sys\windows\com.d \ - src\core\sys\windows\comcat.d \ - src\core\sys\windows\commctrl.d \ - src\core\sys\windows\commdlg.d \ - src\core\sys\windows\core.d \ - src\core\sys\windows\cpl.d \ - src\core\sys\windows\cplext.d \ - src\core\sys\windows\custcntl.d \ - src\core\sys\windows\dbghelp.d \ - src\core\sys\windows\dbghelp_types.d \ - src\core\sys\windows\dbt.d \ - src\core\sys\windows\dde.d \ - src\core\sys\windows\ddeml.d \ - src\core\sys\windows\dhcpcsdk.d \ - src\core\sys\windows\dlgs.d \ - src\core\sys\windows\dll.d \ - src\core\sys\windows\docobj.d \ - src\core\sys\windows\errorrep.d \ - src\core\sys\windows\exdisp.d \ - src\core\sys\windows\exdispid.d \ - src\core\sys\windows\httpext.d \ - src\core\sys\windows\idispids.d \ - src\core\sys\windows\imagehlp.d \ - src\core\sys\windows\imm.d \ - src\core\sys\windows\intshcut.d \ - src\core\sys\windows\ipexport.d \ - src\core\sys\windows\iphlpapi.d \ - src\core\sys\windows\ipifcons.d \ - src\core\sys\windows\iprtrmib.d \ - src\core\sys\windows\iptypes.d \ - src\core\sys\windows\isguids.d \ - src\core\sys\windows\lm.d \ - src\core\sys\windows\lmaccess.d \ - src\core\sys\windows\lmalert.d \ - src\core\sys\windows\lmapibuf.d \ - src\core\sys\windows\lmat.d \ - src\core\sys\windows\lmaudit.d \ - src\core\sys\windows\lmbrowsr.d \ - src\core\sys\windows\lmchdev.d \ - src\core\sys\windows\lmconfig.d \ - src\core\sys\windows\lmcons.d \ - src\core\sys\windows\lmerr.d \ - src\core\sys\windows\lmerrlog.d \ - src\core\sys\windows\lmmsg.d \ - src\core\sys\windows\lmremutl.d \ - src\core\sys\windows\lmrepl.d \ - src\core\sys\windows\lmserver.d \ - src\core\sys\windows\lmshare.d \ - src\core\sys\windows\lmsname.d \ - src\core\sys\windows\lmstats.d \ - src\core\sys\windows\lmsvc.d \ - src\core\sys\windows\lmuse.d \ - src\core\sys\windows\lmuseflg.d \ - src\core\sys\windows\lmwksta.d \ - src\core\sys\windows\lzexpand.d \ - src\core\sys\windows\mapi.d \ - src\core\sys\windows\mciavi.d \ - src\core\sys\windows\mcx.d \ - src\core\sys\windows\mgmtapi.d \ - src\core\sys\windows\mmsystem.d \ - src\core\sys\windows\msacm.d \ - src\core\sys\windows\mshtml.d \ - src\core\sys\windows\mswsock.d \ - src\core\sys\windows\nb30.d \ - src\core\sys\windows\nddeapi.d \ - src\core\sys\windows\nspapi.d \ - src\core\sys\windows\ntdef.d \ - src\core\sys\windows\ntdll.d \ - src\core\sys\windows\ntldap.d \ - src\core\sys\windows\ntsecapi.d \ - src\core\sys\windows\ntsecpkg.d \ - src\core\sys\windows\oaidl.d \ - src\core\sys\windows\objbase.d \ - src\core\sys\windows\objfwd.d \ - src\core\sys\windows\objidl.d \ - src\core\sys\windows\objsafe.d \ - src\core\sys\windows\ocidl.d \ - src\core\sys\windows\odbcinst.d \ - src\core\sys\windows\ole.d \ - src\core\sys\windows\ole2.d \ - src\core\sys\windows\ole2ver.d \ - src\core\sys\windows\oleacc.d \ - src\core\sys\windows\oleauto.d \ - src\core\sys\windows\olectl.d \ - src\core\sys\windows\olectlid.d \ - src\core\sys\windows\oledlg.d \ - src\core\sys\windows\oleidl.d \ - src\core\sys\windows\pbt.d \ - src\core\sys\windows\powrprof.d \ - src\core\sys\windows\prsht.d \ - src\core\sys\windows\psapi.d \ - src\core\sys\windows\rapi.d \ - src\core\sys\windows\ras.d \ - src\core\sys\windows\rasdlg.d \ - src\core\sys\windows\raserror.d \ - src\core\sys\windows\rassapi.d \ - src\core\sys\windows\reason.d \ - src\core\sys\windows\regstr.d \ - src\core\sys\windows\richedit.d \ - src\core\sys\windows\richole.d \ - src\core\sys\windows\rpc.d \ - src\core\sys\windows\rpcdce.d \ - src\core\sys\windows\rpcdce2.d \ - src\core\sys\windows\rpcdcep.d \ - src\core\sys\windows\rpcndr.d \ - src\core\sys\windows\rpcnsi.d \ - src\core\sys\windows\rpcnsip.d \ - src\core\sys\windows\rpcnterr.d \ - src\core\sys\windows\schannel.d \ - src\core\sys\windows\secext.d \ - src\core\sys\windows\security.d \ - src\core\sys\windows\servprov.d \ - src\core\sys\windows\setupapi.d \ - src\core\sys\windows\shellapi.d \ - src\core\sys\windows\shldisp.d \ - src\core\sys\windows\shlguid.d \ - src\core\sys\windows\shlobj.d \ - src\core\sys\windows\shlwapi.d \ - src\core\sys\windows\snmp.d \ - src\core\sys\windows\sql.d \ - src\core\sys\windows\sqlext.d \ - src\core\sys\windows\sqltypes.d \ - src\core\sys\windows\sqlucode.d \ - src\core\sys\windows\sspi.d \ - src\core\sys\windows\stacktrace.d \ - src\core\sys\windows\stat.d \ - src\core\sys\windows\subauth.d \ - src\core\sys\windows\threadaux.d \ - src\core\sys\windows\tlhelp32.d \ - src\core\sys\windows\tmschema.d \ - src\core\sys\windows\unknwn.d \ - src\core\sys\windows\uuid.d \ - src\core\sys\windows\vfw.d \ - src\core\sys\windows\w32api.d \ - src\core\sys\windows\winbase.d \ - src\core\sys\windows\winber.d \ - src\core\sys\windows\wincon.d \ - src\core\sys\windows\wincrypt.d \ - src\core\sys\windows\windef.d \ - src\core\sys\windows\windows.d \ - src\core\sys\windows\winerror.d \ - src\core\sys\windows\wingdi.d \ - src\core\sys\windows\winhttp.d \ - src\core\sys\windows\wininet.d \ - src\core\sys\windows\winioctl.d \ - src\core\sys\windows\winldap.d \ - src\core\sys\windows\winnetwk.d \ - src\core\sys\windows\winnls.d \ - src\core\sys\windows\winnt.d \ - src\core\sys\windows\winperf.d \ - src\core\sys\windows\winreg.d \ - src\core\sys\windows\winsock2.d \ - src\core\sys\windows\winspool.d \ - src\core\sys\windows\winsvc.d \ - src\core\sys\windows\winuser.d \ - src\core\sys\windows\winver.d \ - src\core\sys\windows\wtsapi32.d \ - src\core\sys\windows\wtypes.d \ - \ - src\gc\bits.d \ - src\gc\config.d \ - src\gc\gc.d \ - src\gc\os.d \ - src\gc\pooltable.d \ - src\gc\proxy.d \ - src\gc\stats.d \ - \ - src\gcstub\gc.d \ - \ - src\rt\aApply.d \ - src\rt\aApplyR.d \ - src\rt\aaA.d \ - src\rt\adi.d \ - src\rt\alloca.d \ - src\rt\arrayassign.d \ - src\rt\arraybyte.d \ - src\rt\arraycast.d \ - src\rt\arraycat.d \ - src\rt\arraydouble.d \ - src\rt\arrayfloat.d \ - src\rt\arrayint.d \ - src\rt\arrayreal.d \ - src\rt\arrayshort.d \ - src\rt\bss_section.c \ - src\rt\cast_.d \ - src\rt\cmath2.d \ - src\rt\config.d \ - src\rt\cover.d \ - src\rt\critical_.d \ - src\rt\deh.d \ - src\rt\deh_win32.d \ - src\rt\deh_win64_posix.d \ - src\rt\dmain2.d \ - src\rt\dwarfeh.d \ - src\rt\dylib_fixes.c \ - src\rt\invariant.d \ - src\rt\lifetime.d \ - src\rt\llmath.d \ - src\rt\memory.d \ - src\rt\memset.d \ - src\rt\minfo.d \ - src\rt\minit.asm \ - src\rt\monitor_.d \ - src\rt\obj.d \ - src\rt\profilegc.d \ - src\rt\qsort.d \ - src\rt\sections.d \ - src\rt\sections_android.d \ - src\rt\sections_elf_shared.d \ - src\rt\sections_osx.d \ - src\rt\sections_solaris.d \ - src\rt\sections_win32.d \ - src\rt\sections_win64.d \ - src\rt\switch_.d \ - src\rt\tlsgc.d \ - src\rt\trace.d \ - src\rt\tracegc.d \ - \ - src\rt\backtrace\dwarf.d \ - src\rt\backtrace\elf.d \ - \ - src\rt\util\array.d \ - src\rt\util\hash.d \ - src\rt\util\random.d \ - src\rt\util\typeinfo.d \ - src\rt\util\utf.d \ - src\rt\util\container\array.d \ - src\rt\util\container\common.d \ - src\rt\util\container\hashtab.d \ - src\rt\util\container\treap.d \ - \ - src\rt\typeinfo\ti_AC.d \ - src\rt\typeinfo\ti_Acdouble.d \ - src\rt\typeinfo\ti_Acfloat.d \ - src\rt\typeinfo\ti_Acreal.d \ - src\rt\typeinfo\ti_Adouble.d \ - src\rt\typeinfo\ti_Afloat.d \ - src\rt\typeinfo\ti_Ag.d \ - src\rt\typeinfo\ti_Aint.d \ - src\rt\typeinfo\ti_Along.d \ - src\rt\typeinfo\ti_Areal.d \ - src\rt\typeinfo\ti_Ashort.d \ - src\rt\typeinfo\ti_byte.d \ - src\rt\typeinfo\ti_C.d \ - src\rt\typeinfo\ti_cdouble.d \ - src\rt\typeinfo\ti_cent.d \ - src\rt\typeinfo\ti_cfloat.d \ - src\rt\typeinfo\ti_char.d \ - src\rt\typeinfo\ti_creal.d \ - src\rt\typeinfo\ti_dchar.d \ - src\rt\typeinfo\ti_delegate.d \ - src\rt\typeinfo\ti_double.d \ - src\rt\typeinfo\ti_float.d \ - src\rt\typeinfo\ti_idouble.d \ - src\rt\typeinfo\ti_ifloat.d \ - src\rt\typeinfo\ti_int.d \ - src\rt\typeinfo\ti_ireal.d \ - src\rt\typeinfo\ti_long.d \ - src\rt\typeinfo\ti_ptr.d \ - src\rt\typeinfo\ti_real.d \ - src\rt\typeinfo\ti_short.d \ - src\rt\typeinfo\ti_ubyte.d \ - src\rt\typeinfo\ti_ucent.d \ - src\rt\typeinfo\ti_uint.d \ - src\rt\typeinfo\ti_ulong.d \ - src\rt\typeinfo\ti_ushort.d \ - src\rt\typeinfo\ti_void.d \ - src\rt\typeinfo\ti_wchar.d \ - \ - src\etc\linux\memoryerror.d \ - \ - test\common.mak \ - test\coverage\Makefile \ - test\coverage\src-basic.lst.exp \ - test\coverage\src-merge.lst.exp \ - test\coverage\src-merge_true.lst.exp \ - test\coverage\src\basic.d \ - test\coverage\src\merge.d \ - test\coverage\src\merge_true.d \ - test\exceptions\Makefile \ - test\exceptions\src\stderr_msg.d \ - test\exceptions\src\unittest_assert.d \ - test\init_fini\Makefile \ - test\init_fini\src\runtime_args.d \ - test\init_fini\src\thread_join.d \ - test\shared\Makefile \ - test\shared\src\finalize.d \ - test\shared\src\host.c \ - test\shared\src\lib.d \ - test\shared\src\lib_13414.d \ - test\shared\src\liblinkdep.d \ - test\shared\src\libloaddep.d \ - test\shared\src\link.d \ - test\shared\src\linkD.c \ - test\shared\src\linkDR.c \ - test\shared\src\link_linkdep.d \ - test\shared\src\link_loaddep.d \ - test\shared\src\load.d \ - test\shared\src\loadDR.c \ - test\shared\src\load_13414.d \ - test\shared\src\load_linkdep.d \ - test\shared\src\load_loaddep.d \ - test\shared\src\plugin.d - diff --git a/posix.mak b/posix.mak index 7175f0f34f..b8aeaaa9ac 100644 --- a/posix.mak +++ b/posix.mak @@ -80,9 +80,6 @@ DOCS:=$(subst \,/,$(DOCS)) include mak/IMPORTS IMPORTS:=$(subst \,/,$(IMPORTS)) -include mak/MANIFEST -MANIFEST:=$(subst \,/,$(MANIFEST)) - include mak/SRCS SRCS:=$(subst \,/,$(SRCS)) @@ -254,9 +251,10 @@ test/%/.run: test/%/Makefile DRUNTIME=$(abspath $(DRUNTIME)) DRUNTIMESO=$(abspath $(DRUNTIMESO)) QUIET=$(QUIET) LINKDL=$(LINKDL) #################### test for undesired white spaces ########################## -CWS_MANIFEST = $(shell git ls-tree --name-only -r HEAD) -CWS_MAKEFILES = $(filter mak/% %.mak %/Makefile,$(CWS_MANIFEST)) -NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES) src/rt/minit.obj test/%.exp,$(CWS_MANIFEST)) +MANIFEST = $(shell git ls-tree --name-only -r HEAD) + +CWS_MAKEFILES = $(filter mak/% %.mak %/Makefile,$(MANIFEST)) +NOT_MAKEFILES = $(filter-out $(CWS_MAKEFILES) src/rt/minit.obj test/%.exp,$(MANIFEST)) GREP = grep checkwhitespace: diff --git a/win32.mak b/win32.mak index a80f12f551..58ee0474eb 100644 --- a/win32.mak +++ b/win32.mak @@ -26,7 +26,6 @@ target : import copydir copy $(DRUNTIME) $(GCSTUB) $(mak\COPY) $(mak\DOCS) $(mak\IMPORTS) -$(mak\MANIFEST) $(mak\SRCS) # NOTE: trace.d and cover.d are not necessary for a successful build @@ -1200,7 +1199,9 @@ zip: druntime.zip druntime.zip: del druntime.zip - zip32 -T -ur druntime $(MANIFEST) src\rt\minit.obj + git ls-tree --name-only -r HEAD >MANIFEST.tmp + zip32 -T -ur druntime @MANIFEST.tmp + del MANIFEST.tmp install: druntime.zip unzip -o druntime.zip -d \dmd2\src\druntime diff --git a/win64.mak b/win64.mak index cbcafeebba..059e03724e 100644 --- a/win64.mak +++ b/win64.mak @@ -35,7 +35,6 @@ target : import copydir copy $(DRUNTIME) $(GCSTUB) $(mak\COPY) $(mak\DOCS) $(mak\IMPORTS) -$(mak\MANIFEST) $(mak\SRCS) # NOTE: trace.d and cover.d are not necessary for a successful build @@ -1184,7 +1183,9 @@ zip: druntime.zip druntime.zip: import del druntime.zip - zip32 -T -ur druntime $(MANIFEST) src\rt\minit.obj + git ls-tree --name-only -r HEAD >MANIFEST.tmp + zip32 -T -ur druntime @MANIFEST.tmp + del MANIFEST.tmp install: druntime.zip unzip -o druntime.zip -d \dmd2\src\druntime From cd6f7f231dcb7e6d23c6fb950217387e5d4ef145 Mon Sep 17 00:00:00 2001 From: Etienne Cimon Date: Sat, 23 Jan 2016 00:49:48 -0500 Subject: [PATCH 239/768] Optimize array cast for equivalence --- src/rt/arraycast.d | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rt/arraycast.d b/src/rt/arraycast.d index 52b135b505..4350146647 100644 --- a/src/rt/arraycast.d +++ b/src/rt/arraycast.d @@ -25,6 +25,7 @@ extern (C) @trusted nothrow void[] _d_arraycast(size_t tsize, size_t fsize, void[] a) { + if (tsize == fsize) return a; auto length = a.length; auto nbytes = length * fsize; From fc291c337294bb554cbd3c09ac8cf19ec20d18c9 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 23 Jan 2016 15:41:41 +0100 Subject: [PATCH 240/768] Revert "Optimize array cast for equivalence" --- src/rt/arraycast.d | 1 - 1 file changed, 1 deletion(-) diff --git a/src/rt/arraycast.d b/src/rt/arraycast.d index 4350146647..52b135b505 100644 --- a/src/rt/arraycast.d +++ b/src/rt/arraycast.d @@ -25,7 +25,6 @@ extern (C) @trusted nothrow void[] _d_arraycast(size_t tsize, size_t fsize, void[] a) { - if (tsize == fsize) return a; auto length = a.length; auto nbytes = length * fsize; From 97b2ee594fd68830ff300408f450c6846e16396d Mon Sep 17 00:00:00 2001 From: tsbockman Date: Mon, 25 Jan 2016 01:10:22 -0800 Subject: [PATCH 241/768] Fix CTFE bsf() and bsr(), too. (Union repainting doesn't work in CTFE.) --- src/core/bitop.d | 74 ++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/src/core/bitop.d b/src/core/bitop.d index 009dffbd85..89192ea0a2 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -42,10 +42,27 @@ private union Split64 } } +pragma(inline, true) +private auto split64(ulong u64) pure +{ + if(__ctfe) + { + // union repainting doesn't work in CTFE + Split64 ret; + ret.lo = cast(uint)u64; + ret.hi = cast(uint)(u64 >>> 32); + return ret; + } else + return Split64(u64); +} + unittest { - const s = Split64(1); - assert((s.lo == 1) && (s.hi == 0)); + const rt = split64(1); + assert((rt.lo == 1) && (rt.hi == 0)); + + enum ct = split64(1); + assert((ct.lo == rt.lo) && (ct.hi == rt.hi)); } /** @@ -64,7 +81,7 @@ int bsf(ulong v) pure return bsf(cast(size_t) v); else static if (size_t.sizeof == uint.sizeof) { - const sv = Split64(v); + const sv = split64(v); return (sv.lo == 0)? bsf(sv.hi) + 32 : bsf(sv.lo); @@ -80,6 +97,12 @@ unittest assert(bsf(ulong.max << 39) == 39); } +unittest +{ + // Make sure bsf() is available at CTFE + enum test_ctfe = bsf(ulong.max); + assert(test_ctfe == 0); +} /** * Scans the bits in v from the most significant bit @@ -98,7 +121,7 @@ int bsr(ulong v) pure return bsr(cast(size_t) v); else static if (size_t.sizeof == uint.sizeof) { - const sv = Split64(v); + const sv = split64(v); return (sv.hi == 0)? bsr(sv.lo) : bsr(sv.hi) + 32; @@ -114,6 +137,13 @@ unittest assert(bsr((ulong.max >> 15) - 1) == 48); } +unittest +{ + // Make sure bsr() is available at CTFE + enum test_ctfe = bsr(ulong.max); + assert(test_ctfe == 63); +} + /** * Tests the bit. * (No longer an intrisic - the compiler recognizes the patterns @@ -271,12 +301,9 @@ int popcnt(uint x) pure { static if (is(typeof(_popcnt(uint.max)))) { - if(!__ctfe) - { - import core.cpuid; - if (hasPopcnt) - return _popcnt(x); - } + import core.cpuid; + if (!__ctfe && hasPopcnt) + return _popcnt(x); } } @@ -313,23 +340,13 @@ int popcnt(ulong x) pure static if (size_t.sizeof == uint.sizeof) { - Split64 sx = void; - if(__ctfe) - { - // union repainting doesn't work in CTFE - sx.lo = cast(uint)x; - sx.hi = cast(uint)(x >> 32); - } - else + const sx = split64(x); + version(DigitalMars) { - sx.u64 = x; - version(DigitalMars) + static if (is(typeof(_popcnt(uint.max)))) { - static if (is(typeof(_popcnt(uint.max)))) - { - if (hasPopcnt) - return _popcnt(sx.lo) + _popcnt(sx.hi); - } + if (!__ctfe && hasPopcnt) + return _popcnt(sx.lo) + _popcnt(sx.hi); } } @@ -341,11 +358,8 @@ int popcnt(ulong x) pure { static if (is(typeof(_popcnt(ulong.max)))) { - if(!__ctfe) - { - if (hasPopcnt) - return _popcnt(x); - } + if (!__ctfe && hasPopcnt) + return _popcnt(x); } } From cadfa33dc8607b9ba48de45985638ebeefe08118 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Mon, 25 Jan 2016 18:06:29 -0500 Subject: [PATCH 242/768] Remove update of cache per Martin's request --- src/rt/aaA.d | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/rt/aaA.d b/src/rt/aaA.d index 29070417fa..cbd0239fff 100644 --- a/src/rt/aaA.d +++ b/src/rt/aaA.d @@ -142,17 +142,12 @@ private: { auto obuckets = buckets; buckets = allocBuckets(ndim); - auto newFirstUsed = cast(uint) ndim; foreach (ref b; obuckets[firstUsed .. $]) if (b.filled) - { - auto x = findSlotInsert(b.hash); - newFirstUsed = min(newFirstUsed, cast(uint) (x - buckets.ptr)); - *x = b; - } + *findSlotInsert(b.hash) = b; - firstUsed = newFirstUsed; + firstUsed = 0; used -= deleted; deleted = 0; GC.free(obuckets.ptr); // safe to free b/c impossible to reference From cee514045ea880a2069035dd60969a99c48988ad Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 25 Jan 2016 20:37:29 -0800 Subject: [PATCH 243/768] There's no reason to hide what the makefile is doing --- posix.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posix.mak b/posix.mak index b8aeaaa9ac..c27c2bce3a 100644 --- a/posix.mak +++ b/posix.mak @@ -3,7 +3,7 @@ # pkg_add -r gmake # and then run as gmake rather than make. -QUIET:=@ +QUIET:= include osmodel.mak From 77d0fd58630e934cf54c36a38975d96a5d5ed572 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 26 Jan 2016 03:15:57 -0800 Subject: [PATCH 244/768] essential code should not be in assert's --- test/shared/src/finalize.d | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/test/shared/src/finalize.d b/test/shared/src/finalize.d index e3ed8e6414..7c16fd5f9e 100644 --- a/test/shared/src/finalize.d +++ b/test/shared/src/finalize.d @@ -28,6 +28,7 @@ extern (C) alias SetFinalizeCounter = void function(shared(size_t*)); void main(string[] args) { + printf("STARTING finalize\n"); auto name = args[0]; assert(name[$-9 .. $] == "/finalize"); name = name[0 .. $-8] ~ "lib.so"; @@ -47,8 +48,14 @@ void main(string[] args) thr.start(); thr.join(); - assert(Runtime.unloadLibrary(h)); - assert(finalizeCounter == 4); - assert(nf1._finalizeCounter == 0); - assert(nf2._finalizeCounter == 0); + auto r = Runtime.unloadLibrary(h); + if (!r) + assert(0); + if (finalizeCounter != 4) + assert(0); + if (nf1._finalizeCounter) + assert(0); + if (nf2._finalizeCounter) + assert(0); + printf("PASS finalize\n"); } From 4e8c3492083d9f5ee19c22012820e5535f99147a Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 26 Jan 2016 13:13:59 +0100 Subject: [PATCH 245/768] fix Issue 15224 - making 'clean' results in garbage commands --- test/common.mak | 3 ++- test/coverage/Makefile | 2 +- test/exceptions/Makefile | 2 +- test/profile/Makefile | 2 +- test/shared/Makefile | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/test/common.mak b/test/common.mak index 4a9be5177b..2b66657df1 100644 --- a/test/common.mak +++ b/test/common.mak @@ -10,7 +10,8 @@ LINKDL:= LDL:=$(subst -L,,$(LINKDL)) # -ldl SRC:=src -ROOT:=./generated/$(OS)/$(BUILD)/$(MODEL) +GENERATED:=./generated +ROOT:=$(GENERATED)/$(OS)/$(BUILD)/$(MODEL) ifneq (default,$(MODEL)) MODEL_FLAG:=-m$(MODEL) diff --git a/test/coverage/Makefile b/test/coverage/Makefile index c9a290444f..709d66a796 100644 --- a/test/coverage/Makefile +++ b/test/coverage/Makefile @@ -39,4 +39,4 @@ $(ROOT)/%: $(SRC)/%.d $(QUIET)$(DMD) $(DFLAGS) -of$(ROOT)/$* $^ clean: - rm -rf $(ROOT) *.lst + rm -rf $(GENERATED) *.lst diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index 19372218dc..abc34b4705 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -35,4 +35,4 @@ $(ROOT)/%: $(SRC)/%.d $(QUIET)$(DMD) $(DFLAGS) -of$@ $< clean: - rm -rf $(ROOT) + rm -rf $(GENERATED) diff --git a/test/profile/Makefile b/test/profile/Makefile index 9d379f9e32..1ac154458f 100644 --- a/test/profile/Makefile +++ b/test/profile/Makefile @@ -41,4 +41,4 @@ $(ROOT)/%: $(SRC)/%.d $(QUIET)$(DMD) $(DFLAGS) -of$(ROOT)/$* $< clean: - rm -rf $(ROOT) *.log *.def + rm -rf $(GENERATED) *.log *.def diff --git a/test/shared/Makefile b/test/shared/Makefile index 0b4a58b509..6cc166c955 100644 --- a/test/shared/Makefile +++ b/test/shared/Makefile @@ -72,4 +72,4 @@ $(ROOT)/%.so: $(SRC)/%.d $(DRUNTIMESO) $(QUIET)$(DMD) -fPIC -shared $(DFLAGS) -of$@ $< $(LINKDL) clean: - rm -rf $(ROOT) + rm -rf $(GENERATED) From dceaeae191d016df4a228ca48c3bcca631695f3d Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 26 Jan 2016 08:05:10 -0500 Subject: [PATCH 246/768] Using memset to clear the bucket array, and do not resize back to initial length of bucket array. --- src/rt/aaA.d | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/rt/aaA.d b/src/rt/aaA.d index cbd0239fff..cf8943e1e2 100644 --- a/src/rt/aaA.d +++ b/src/rt/aaA.d @@ -155,17 +155,11 @@ private: void clear() pure nothrow { - foreach (ref b; buckets[firstUsed .. $]) - { - if (b.filled) - { - b.hash = HASH_DELETED; - b.entry = null; - } - } - deleted = used; + import core.stdc.string : memset; + // clear all data, but don't change bucket array length + memset(&buckets[firstUsed], 0, (buckets.length - firstUsed) * Bucket.sizeof); + deleted = used = 0; firstUsed = cast(uint) dim; - resize(INIT_NUM_BUCKETS); } } From 9ec8c561788981eefeed85a68b04af3c3846e8fd Mon Sep 17 00:00:00 2001 From: Sanjay S Date: Tue, 26 Jan 2016 09:31:55 -0800 Subject: [PATCH 247/768] More extensive ioctl support for OSX --- mak/COPY | 3 + src/core/sys/posix/sys/filio.d | 26 ++++++++ src/core/sys/posix/sys/ioccom.d | 71 +++++++++++++++++++++ src/core/sys/posix/sys/ioctl.d | 13 ++-- src/core/sys/posix/sys/ttycom.d | 110 ++++++++++++++++++++++++++++++++ 5 files changed, 216 insertions(+), 7 deletions(-) create mode 100644 src/core/sys/posix/sys/filio.d create mode 100755 src/core/sys/posix/sys/ioccom.d create mode 100755 src/core/sys/posix/sys/ttycom.d diff --git a/mak/COPY b/mak/COPY index 4f3f0a05b1..37035cb54c 100644 --- a/mak/COPY +++ b/mak/COPY @@ -122,6 +122,8 @@ COPY=\ $(IMPDIR)\core\sys\posix\netinet\in_.d \ $(IMPDIR)\core\sys\posix\netinet\tcp.d \ \ + $(IMPDIR)\core\sys\posix\sys\filio.d \ + $(IMPDIR)\core\sys\posix\sys\ioccom.d \ $(IMPDIR)\core\sys\posix\sys\ioctl.d \ $(IMPDIR)\core\sys\posix\sys\ipc.d \ $(IMPDIR)\core\sys\posix\sys\mman.d \ @@ -132,6 +134,7 @@ COPY=\ $(IMPDIR)\core\sys\posix\sys\stat.d \ $(IMPDIR)\core\sys\posix\sys\statvfs.d \ $(IMPDIR)\core\sys\posix\sys\time.d \ + $(IMPDIR)\core\sys\posix\sys\ttycom.d \ $(IMPDIR)\core\sys\posix\sys\types.d \ $(IMPDIR)\core\sys\posix\sys\uio.d \ $(IMPDIR)\core\sys\posix\sys\un.d \ diff --git a/src/core/sys/posix/sys/filio.d b/src/core/sys/posix/sys/filio.d new file mode 100644 index 0000000000..da83856806 --- /dev/null +++ b/src/core/sys/posix/sys/filio.d @@ -0,0 +1,26 @@ +/** + * D header file for POSIX. + * + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + */ + +module core.sys.posix.sys.filio; + +import core.sys.posix.sys.ioccom; + +version (Posix): + +nothrow @nogc: + +version (OSX) +{ + // File-descriptor ioctl's + enum uint FIOCLEX = _IO('f', 1); // set close on exec on fd + enum uint FIONCLEX = _IO('f', 2); // remove close on exec + enum uint FIONREAD = _IOR!(int)('f', 127); // get # bytes to read + enum uint FIONBIO = _IOW!(int)('f', 126); // set/clear non-blocking i/o + enum uint FIOASYNC = _IOW!(int)('f', 125); // set/clear async i/o + enum uint FIOSETOWN = _IOW!(int)('f', 124); // set owner + enum uint FIOGETOWN = _IOR!(int)('f', 123); // get owner + enum uint FIODTYPE = _IOR!(int)('f', 122); // get d_type +} diff --git a/src/core/sys/posix/sys/ioccom.d b/src/core/sys/posix/sys/ioccom.d new file mode 100755 index 0000000000..7403f2de65 --- /dev/null +++ b/src/core/sys/posix/sys/ioccom.d @@ -0,0 +1,71 @@ +/** + * D header file for POSIX. + * + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + */ + +module core.sys.posix.sys.ioccom; + +version (Posix): + +nothrow @nogc: + +version (OSX) +{ + /* OSX ioctl's (based on FreeBSD) encode the command in the lower 16-bits + * and the size of any in/out parameters in the lower 13 bits of the upper + * 16-bits of a 32 bit unsigned integer. The high 3 bits of the upper + * 16-bits encode the in/out status of the parameter. + */ + enum uint IOCPARM_MASK = 0x1fff; // parameter length, at most 13 bits + uint IOCPARM_LEN(uint x) // to extract the encoded parameter length + { + return ((x >> 16) & IOCPARM_MASK); + } + uint IOCBASECMD(uint x) // to extract the encoded command + { + return (x & ~(IOCPARM_MASK << 16)); + } + uint IOCGROUP(uint x) // to extract the encoded group + { + return ((x >> 8) & 0xff); + } + + enum uint IOCPARM_MAX = (IOCPARM_MASK + 1); // max size of ioctl args + + enum uint IOC_VOID = 0x20000000; // no parameters + enum uint IOC_OUT = 0x40000000; // copy parameters back + enum uint IOC_IN = 0x80000000; // copy parameters into + enum uint IOC_INOUT = (IOC_IN | IOC_OUT); // copy parameter into and get back + enum uint IOC_DIRMASK = 0xe0000000; // mask to extract above direction parameters + + // encode the ioctl info into 32 bits + uint _IOC(uint inorout, uint group, uint num, size_t len) + { + assert((group & 0xff) == group); + assert((num & 0xff) == num); + assert((len & IOCPARM_MASK) == len); + return (inorout | ((len & IOCPARM_MASK) << 16) | (group << 8) | num); + } + + // encode a command with no parameters + uint _IO(uint g, uint n) + { + return _IOC(IOC_VOID, g, n, 0); + } + // encode a command that returns info + uint _IOR(T)(uint g, uint n) + { + return _IOC(IOC_OUT, g, n, T.sizeof); + } + // encode a command that takes info + uint _IOW(T)(uint g, uint n) + { + return _IOC(IOC_IN, g, n, T.sizeof); + } + // encode a command that takes info and returns info + uint _IOWR(T)(uint g, uint n) + { + return _IOC(IOC_INOUT, g, n, T.sizeof); + } +} diff --git a/src/core/sys/posix/sys/ioctl.d b/src/core/sys/posix/sys/ioctl.d index 13168f719c..844be0cdea 100644 --- a/src/core/sys/posix/sys/ioctl.d +++ b/src/core/sys/posix/sys/ioctl.d @@ -323,13 +323,7 @@ else version (OSX) import core.sys.posix.termios; // termios import core.sys.posix.sys.time; // timeval - struct winsize - { - ushort ws_row; - ushort ws_col; - ushort ws_xpixel; - ushort ws_ypixel; - } + import core.sys.posix.sys.ttycom; // Terminal related ioctls struct ttysize { @@ -339,6 +333,11 @@ else version (OSX) ushort ts_yyy; } + enum uint TIOCGSIZE = TIOCGWINSZ; + enum uint TIOCSSIZE = TIOCSWINSZ; + + import core.sys.posix.sys.filio; // File related ioctls + int ioctl(int fildes, c_ulong request, ...); } else version (FreeBSD) diff --git a/src/core/sys/posix/sys/ttycom.d b/src/core/sys/posix/sys/ttycom.d new file mode 100755 index 0000000000..5361e6d9f1 --- /dev/null +++ b/src/core/sys/posix/sys/ttycom.d @@ -0,0 +1,110 @@ +/** + * D header file for POSIX. + * + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + */ + +module core.sys.posix.sys.ttycom; + +import core.sys.posix.sys.ioccom; +import core.sys.posix.termios; +import core.sys.posix.sys.time; + +version (Posix): + +nothrow @nogc: + +version (OSX) +{ + struct winsize { + ushort ws_row; // rows, in characters + ushort ws_col; // columns, in characters + ushort ws_xpixel; // horizontal size, pixels + ushort ws_ypixel; // vertical size, pixels + } + + // Serial/TTY ioctl's + enum uint TIOCMODG = _IOR!(int)('t', 3); // get modem control state + enum uint TIOCMODS = _IOW!(int)('t', 4); // set modem control state + enum uint TIOCM_LE = 0x001; // line enable + enum uint TIOCM_DTR = 0x002; // data terminal ready + enum uint TIOCM_RTS = 0x004; // request to send + enum uint TIOCM_ST = 0x008; // secondary transmit + enum uint TIOCM_SR = 0x010; // secondary receive + enum uint TIOCM_CTS = 0x020; // clear to send + enum uint TIOCM_CAR = 0x040; // carrier detect + enum uint TIOCM_CD = TIOCM_CAR; + enum uint TIOCM_RNG = 0x080; // ring + enum uint TIOCM_RI = TIOCM_RNG; + enum uint TIOCM_DSR = 0x100; // data set ready + // 8-10 compat + enum uint TIOCEXCL = _IO('t', 13); // set exclusive use of tty + enum uint TIOCNXCL = _IO('t', 14); // reset exclusive use of tty + // 15 unused + enum uint TIOCFLUSH = _IOW!(int)('t', 16); // flush buffers + // 17-18 compat + enum uint TIOCGETA = _IOR!(termios)('t', 19); // get termios struct + enum uint TIOCSETA = _IOW!(termios)('t', 20); // set termios struct + enum uint TIOCSETAW = _IOW!(termios)('t', 21); // drain output, set + enum uint TIOCSETAF = _IOW!(termios)('t', 22); // drn out, fls in, set + enum uint TIOCGETD = _IOR!(int)('t', 26); // get line discipline + enum uint TIOCSETD = _IOW!(int)('t', 27); // set line discipline + enum uint TIOCIXON = _IO('t', 129); // internal input VSTART + enum uint TIOCIXOFF = _IO('t', 128); // internal input VSTOP + // 127-124 compat + enum uint TIOCSBRK = _IO('t', 123); // set break bit + enum uint TIOCCBRK = _IO('t', 122); // clear break bit + enum uint TIOCSDTR = _IO('t', 121); // set data terminal ready + enum uint TIOCCDTR = _IO('t', 120); // clear data terminal ready + enum uint TIOCGPGRP = _IOR!(int)('t', 119); // get pgrp of tty + enum uint TIOCSPGRP = _IOW!(int)('t', 118); // set pgrp of tty + // 117-116 compat + enum uint TIOCOUTQ = _IOR!(int)('t', 115); // output queue size + enum uint TIOCSTI = _IOW!(char)('t', 114);// simulate terminal input + enum uint TIOCNOTTY = _IO('t', 113); // void tty association + enum uint TIOCPKT = _IOW!(int)('t', 112); // pty: set/clear packet mode + enum uint TIOCPKT_DATA = 0x00; // data packet + enum uint TIOCPKT_FLUSHREAD = 0x01; // flush packet + enum uint TIOCPKT_FLUSHWRITE = 0x02; // flush packet + enum uint TIOCPKT_STOP = 0x04; // stop output + enum uint TIOCPKT_START = 0x08; // start output + enum uint TIOCPKT_NOSTOP = 0x10; // no more ^S, ^Q + enum uint TIOCPKT_DOSTOP = 0x20; // now do ^S ^Q + enum uint TIOCPKT_IOCTL = 0x40; // state change of pty driver + enum uint TIOCSTOP = _IO('t', 111); // stop output, like ^S + enum uint TIOCSTART = _IO('t', 110); // start output, like ^Q + enum uint TIOCMSET = _IOW!(int)('t', 109); // set all modem bits + enum uint TIOCMBIS = _IOW!(int)('t', 108); // bis modem bits + enum uint TIOCMBIC = _IOW!(int)('t', 107); // bic modem bits + enum uint TIOCMGET = _IOR!(int)('t', 106); // get all modem bits + enum uint TIOCREMOTE = _IOW!(int)('t', 105); // remote input editing + enum uint TIOCGWINSZ = _IOR!(winsize)('t', 104); // get window size + enum uint TIOCSWINSZ = _IOW!(winsize)('t', 103); // set window size + enum uint TIOCUCNTL = _IOW!(int)('t', 102); // pty: set/clr usr cntl mode + enum uint TIOCSTAT = _IO('t', 101); // simulate ^T status message + enum uint UIOCCMD(n) = _IO('u', n); // usr cntl op "n" + enum uint TIOCSCONS = _IO('t', 99); // 4.2 compatibility + enum uint TIOCCONS = _IOW!(int)('t', 98); // become virtual console + enum uint TIOCSCTTY = _IO('t', 97); // become controlling tty + enum uint TIOCEXT = _IOW!(int)('t', 96); // pty: external processing + enum uint TIOCSIG = _IO('t', 95); // pty: generate signal + enum uint TIOCDRAIN = _IO('t', 94); // wait till output drained + enum uint TIOCMSDTRWAIT = _IOW!(int)('t', 91); // modem: set wait on close + enum uint TIOCMGDTRWAIT = _IOR!(int)('t', 90); // modem: get wait on close + enum uint TIOCTIMESTAMP = _IOR!(timeval)('t', 89); // enable/get timestamp + // of last input event + enum uint TIOCDCDTIMESTAMP = _IOR!(timeval)('t', 88); // enable/get timestamp + // of last DCd rise + enum uint TIOCSDRAINWAIT = _IOW!(int)('t', 87); // set ttywait timeout + enum uint TIOCGDRAINWAIT = _IOR!(int)('t', 86); // get ttywait timeout + enum uint TIOCDSIMICROCODE = _IO('t', 85); // download microcode to + // DSI Softmodem + enum uint TIOCPTYGRANT = _IO('t', 84); // grantpt(3) + enum uint TIOCPTYGNAME = _IOC(IOC_OUT, 't', 83, 128); // ptsname(3) + enum uint TIOCPTYUNLK = _IO('t', 82); // unlockpt(3) + + enum uint TTYDISC = 0; // termios tty line discipline + enum uint TABLDISC = 3; // tablet discipline + enum uint SLIPDISC = 4; // serial IP discipline + enum uint PPPDISC = 5; // PPP discipline +} From 7e1dd9026e3a16f2d3f6f65fcc5c3f4b826533f9 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Wed, 27 Jan 2016 11:31:51 -0500 Subject: [PATCH 248/768] Fix changelog nits. --- changelog.dd | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/changelog.dd b/changelog.dd index 3860b2ab76..705c8ec520 100644 --- a/changelog.dd +++ b/changelog.dd @@ -7,8 +7,8 @@ $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 TypeInfo.initializer, `TypeInfo.init` has been renamed to `TypeInfo.initializer`.)) -$(LI $(RELATIVE_LINK2 AA.clear, Associative array `clear` method to remove all - elements has been added.)) +$(LI $(RELATIVE_LINK2 aa-clear, A `clear` method has been added to associative + arrays to remove all elements.)) ) $(BUGSTITLE Library Changes, @@ -29,14 +29,21 @@ $(LI $(LNAME2 TypeInfo.initializer, `TypeInfo.init` has been renamed to 2.074.0 release, so that the type property `init` takes over. ) ) -$(LI $(LNAME2 AA.clear, Associative array `clear` method to remove all - elements has been added.) +$(LI $(LNAME2 aa-clear, A `clear` method has been added to associative + arrays to remove all elements.) $(P One can now use `aa.clear()` to remove all elements from an - associative array. This allows one to remove all elements from all - references to the same array (setting to `null` just cleared the - reference, not removed the elements). + associative array. This allows removing all elements from all + references to the same array (setting to `null` just reset the + reference, but did not removed the elements from other references). ) + +------- +auto aa = ["first" : "entry", "second": "entry"]; +auto aa2 = aa1; // reference to the same AA +aa.clear(); // still retains its current capacity for faster imports +assert(aa2.length == 0); // other references affected +------- ) ) From d07e682f21b0043354fc4b9ca6d5d2b176a63539 Mon Sep 17 00:00:00 2001 From: tsbockman Date: Wed, 27 Jan 2016 15:00:38 -0800 Subject: [PATCH 249/768] Add 64-bit bswap() (byte swap). Make bitswap() compatible with CTFE. --- src/core/bitop.d | 204 +++++++++++++++++++++++++++++------------------ 1 file changed, 126 insertions(+), 78 deletions(-) diff --git a/src/core/bitop.d b/src/core/bitop.d index 89192ea0a2..476e261d43 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Don Clugston 2005 - 2013. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Don Clugston, Sean Kelly, Walter Bright, Alex Rønne Petersen + * Authors: Don Clugston, Sean Kelly, Walter Bright, Alex Rønne Petersen, Thomas Stuart Bockman * Source: $(DRUNTIMESRC core/_bitop.d) */ @@ -40,28 +40,26 @@ private union Split64 uint lo; } } -} -pragma(inline, true) -private auto split64(ulong u64) pure -{ - if(__ctfe) + pragma(inline, true) + this(ulong u64) @safe pure nothrow @nogc { - // union repainting doesn't work in CTFE - Split64 ret; - ret.lo = cast(uint)u64; - ret.hi = cast(uint)(u64 >>> 32); - return ret; - } else - return Split64(u64); + if (__ctfe) + { + lo = cast(uint) u64; + hi = cast(uint) (u64 >>> 32); + } + else + this.u64 = u64; + } } unittest { - const rt = split64(1); + const rt = Split64(1); assert((rt.lo == 1) && (rt.hi == 0)); - enum ct = split64(1); + enum ct = Split64(1); assert((ct.lo == rt.lo) && (ct.hi == rt.hi)); } @@ -81,7 +79,7 @@ int bsf(ulong v) pure return bsf(cast(size_t) v); else static if (size_t.sizeof == uint.sizeof) { - const sv = split64(v); + const sv = Split64(v); return (sv.lo == 0)? bsf(sv.hi) + 32 : bsf(sv.lo); @@ -121,7 +119,7 @@ int bsr(ulong v) pure return bsr(cast(size_t) v); else static if (size_t.sizeof == uint.sizeof) { - const sv = split64(v); + const sv = Split64(v); return (sv.hi == 0)? bsr(sv.lo) : bsr(sv.hi) + 32; @@ -246,6 +244,21 @@ int bts(size_t* p, size_t bitnum) pure @system; */ uint bswap(uint v) pure; +/** + * Swaps bytes in an 8 byte ulong end-to-end, i.e. byte 0 becomes + * byte 7, byte 1 becomes byte 6, etc. + */ +ulong bswap(ulong v) pure +{ + auto sv = Split64(v); + + const temp = sv.lo; + sv.lo = bswap(sv.hi); + sv.hi = bswap(temp); + + return (cast(ulong) sv.hi << 32) | sv.lo; +} + version (DigitalMars) version (AnyX86) @system // not pure { /** @@ -307,7 +320,7 @@ int popcnt(uint x) pure } } - return soft_popcnt!uint(x); + return softPopcnt!uint(x); } } @@ -340,7 +353,7 @@ int popcnt(ulong x) pure static if (size_t.sizeof == uint.sizeof) { - const sx = split64(x); + const sx = Split64(x); version(DigitalMars) { static if (is(typeof(_popcnt(uint.max)))) @@ -350,7 +363,7 @@ int popcnt(ulong x) pure } } - return soft_popcnt!uint(sx.lo) + soft_popcnt!uint(sx.hi); + return softPopcnt!uint(sx.lo) + softPopcnt!uint(sx.hi); } else static if (size_t.sizeof == ulong.sizeof) { @@ -363,7 +376,7 @@ int popcnt(ulong x) pure } } - return soft_popcnt!ulong(x); + return softPopcnt!ulong(x); } else static assert(false); @@ -383,7 +396,7 @@ unittest assert(test_ctfe == 64); } -private int soft_popcnt(N)(N x) pure +private int softPopcnt(N)(N x) pure if (is(N == uint) || is(N == ulong)) { // Avoid branches, and the potential for cache misses which @@ -523,9 +536,96 @@ void volatileStore(ulong * ptr, ulong value); /// ditto /** * Reverses the order of bits in a 32-bit integer. */ -@trusted uint bitswap( uint x ) pure +pragma(inline, true) +uint bitswap( uint x ) pure +{ + if (!__ctfe) + { + static if (is(typeof(asmBitswap32(x)))) + return asmBitswap32(x); + } + + return softBitswap!uint(x); +} + +unittest +{ + static void test(alias impl)() + { + assert (impl( 0x8000_0100 ) == 0x0080_0001); + foreach(i; 0 .. 32) + assert (impl(1 << i) == 1 << 32 - i - 1); + } + + test!(bitswap)(); + test!(softBitswap!uint)(); + static if (is(typeof(asmBitswap32(0u)))) + test!(asmBitswap32)(); + + // Make sure bitswap() is available at CTFE + enum test_ctfe = bitswap(1U); + assert(test_ctfe == (1U << 31)); +} + +/** + * Reverses the order of bits in a 64-bit integer. + */ +pragma(inline, true) +ulong bitswap ( ulong x ) pure +{ + if (!__ctfe) + { + static if (is(typeof(asmBitswap64(x)))) + return asmBitswap64(x); + } + + return softBitswap!ulong(x); +} + +unittest { - version (AsmX86) + static void test(alias impl)() + { + assert (impl( 0b1000000000000000000000010000000000000000100000000000000000000001) + == 0b1000000000000000000000010000000000000000100000000000000000000001); + assert (impl( 0b1110000000000000000000010000000000000000100000000000000000000001) + == 0b1000000000000000000000010000000000000000100000000000000000000111); + foreach (i; 0 .. 64) + assert (impl(1UL << i) == 1UL << 64 - i - 1); + } + + test!(bitswap)(); + test!(softBitswap!ulong)(); + static if (is(typeof(asmBitswap64(0uL)))) + test!(asmBitswap64)(); + + // Make sure bitswap() is available at CTFE + enum test_ctfe = bitswap(1UL); + assert(test_ctfe == (1UL << 63)); +} + +private N softBitswap(N)(N x) pure + if (is(N == uint) || is(N == ulong)) +{ + // swap 1-bit pairs: + enum mask1 = cast(N) 0x5555_5555_5555_5555L; + x = ((x >> 1) & mask1) | ((x & mask1) << 1); + // swap 2-bit pairs: + enum mask2 = cast(N) 0x3333_3333_3333_3333L; + x = ((x >> 2) & mask2) | ((x & mask2) << 2); + // swap 4-bit pairs: + enum mask4 = cast(N) 0x0F0F_0F0F_0F0F_0F0FL; + x = ((x >> 4) & mask4) | ((x & mask4) << 4); + + // reverse the order of all bytes: + x = bswap(x); + + return x; +} + +version (AsmX86) +{ + private uint asmBitswap32(uint x) @trusted pure { asm pure nothrow @nogc { naked; } @@ -562,37 +662,11 @@ void volatileStore(ulong * ptr, ulong value); /// ditto ret; } } - else - { - // swap odd and even bits - x = ((x >> 1) & 0x5555_5555) | ((x & 0x5555_5555) << 1); - // swap consecutive pairs - x = ((x >> 2) & 0x3333_3333) | ((x & 0x3333_3333) << 2); - // swap nibbles - x = ((x >> 4) & 0x0F0F_0F0F) | ((x & 0x0F0F_0F0F) << 4); - // swap bytes - x = ((x >> 8) & 0x00FF_00FF) | ((x & 0x00FF_00FF) << 8); - // swap 2-byte long pairs - x = ( x >> 16 ) | ( x << 16); - return x; - - } } - -unittest -{ - assert( bitswap( 0x8000_0100 ) == 0x0080_0001 ); - foreach(i; 0 .. 32) - assert(bitswap(1 << i) == 1 << 32 - i - 1); -} - -/** - * Reverses the order of bits in a 64-bit integer. - */ -ulong bitswap ( ulong x ) pure @trusted +version (D_InlineAsm_X86_64) { - version (D_InlineAsm_X86_64) + private ulong asmBitswap64(ulong x) @trusted pure { asm pure nothrow @nogc { naked; } @@ -631,30 +705,4 @@ ulong bitswap ( ulong x ) pure @trusted ret; } } - else - { - // swap odd and even bits - x = ((x >> 1) & 0x5555_5555_5555_5555L) | ((x & 0x5555_5555_5555_5555L) << 1); - // swap consecutive pairs - x = ((x >> 2) & 0x3333_3333_3333_3333L) | ((x & 0x3333_3333_3333_3333L) << 2); - // swap nibbles - x = ((x >> 4) & 0x0f0f_0f0f_0f0f_0f0fL) | ((x & 0x0f0f_0f0f_0f0f_0f0fL) << 4); - // swap bytes - x = ((x >> 8) & 0x00FF_00FF_00FF_00FFL) | ((x & 0x00FF_00FF_00FF_00FFL) << 8); - // swap shorts - x = ((x >> 16) & 0x0000_FFFF_0000_FFFFL) | ((x & 0x0000_FFFF_0000_FFFFL) << 16); - // swap ints - x = ( x >> 32 ) | ( x << 32); - return x; - } -} - -unittest -{ - assert (bitswap( 0b1000000000000000000000010000000000000000100000000000000000000001) - == 0b1000000000000000000000010000000000000000100000000000000000000001); - assert (bitswap( 0b1110000000000000000000010000000000000000100000000000000000000001) - == 0b1000000000000000000000010000000000000000100000000000000000000111); - foreach (i; 0 .. 64) - assert(bitswap(1UL << i) == 1UL << 64 - i - 1); } From cf4e0a5b5f250869ad1c6ece192d38e19463107b Mon Sep 17 00:00:00 2001 From: Mathias Lang Date: Tue, 26 Jan 2016 18:50:33 +0100 Subject: [PATCH 250/768] Add core.sys.posix.mqueue, C bindings for POSIX's This is a binding for POSIX message queues. Reference: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/mqueue.h.html Linux overview man page: http://man7.org/linux/man-pages/man7/mq_overview.7.html --- src/core/sys/posix/mqueue.d | 218 ++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 src/core/sys/posix/mqueue.d diff --git a/src/core/sys/posix/mqueue.d b/src/core/sys/posix/mqueue.d new file mode 100644 index 0000000000..67ea678c81 --- /dev/null +++ b/src/core/sys/posix/mqueue.d @@ -0,0 +1,218 @@ +/** + * D header file for Posix Message Queues + * + * Defines external functions required to manage Posix Message Queues + * + * mq_open(3) open a message queue + * mq_close(3) close a message queue + * mq_unlink(3) remove a message queue + * mq_send(3) send a message + * mq_receive(3) receive a message + * mq_timedsend(3) send a message with a timeout (linux specific) + * mq_timedreceive(3) receive a message with a timeout (linux specific) + * mq_getattr(3) get message queue attributes + * mq_setattr(3) set message queue attributes + * mq_notify(3) register asynchronous notify + * + * Copyright: Copyright (c) 2016 sociomantic labs. All rights reserved + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Andreas Bok Andersen, Mathias Lang + * Standards: POSIX.1-2001. + * See_Also: $(WEB pubs.opengroup.org/onlinepubs/9699919799/basedefs/mqueue.h.html, Standard) + */ +module core.sys.posix.mqueue; + +import core.sys.posix.config; +import core.sys.posix.signal; +import core.sys.posix.time; + +version (Posix): +version (CRuntime_Glibc): +extern (C): +@nogc nothrow: + + +/// Message queue descriptor. +alias int mqd_t; + +/** + * Used in getting and setting the attributes of a message queue. + */ +struct mq_attr +{ + /// Message queue flags. + c_long mq_flags; + /// Maximum number of messages. + c_long mq_maxmsg; + /// Maximum message size. + c_long mq_msgsize; + /// Number of messages currently queued. + c_long mq_curmsgs; +} + + +/** + * Establish connection between a process and a message queue `name`. + * + * Note: + * Linux prototypes are: + * mqd_t mq_open (const(char)* name, int oflag); + * mqd_t mq_open(const(char)* name, int oflag, mode_t mode, mq_attr* attr); + * + * Params: + * name = Name of the message queue to open. + * oflags = determines the type of access used. + * If `O_CREAT` is on `oflag`, the third argument is taken as a + * `mode_t`, the mode of the created message queue. + * If `O_CREAT` is on `oflag`, the fourth argument is taken as + * a pointer to a `mq_attr' (message queue attributes). + * If the fourth argument is `null`, default attributes are used. + * + * Returns: + * Message queue descriptor or (mqd_t) -1 on error. + */ +mqd_t mq_open(const(char)* name, int oflag, ...); + + +/** + * Closes the message queue descriptor mqdes. + * + * Params: + * mqdes = Message queue descriptor to close. + * + * Returns: + * On success mq_close() returns 0; on error, -1 is returned, with errno + * set to indicate the error. + */ +int mq_close (mqd_t mqdes); + + +/** + * Query status and attributes of message queue `mqdes`. + * + * Params: + * mqdes = Message queue descriptor. + * mqstat = Buffer to fill with the message queue's attributes. + * + * Returns: + * On success mq_getattr() return 0; on error, -1 is returned, with errno + * set to indicate the error. + */ +int mq_getattr (mqd_t mqdes, mq_attr* mqstat); + + +/* + * Set attributes associated with message queue `mqdes` + * + * Params: + * mqdes = Message queue descriptor. + * newstat = non-null pointer to fill with attributes for `mqdes`. + * oldstat = if not `null` it is filled with the old attributes. + * + * Returns: + * On success mq_setattr() return 0; on error, -1 is returned, with errno + * set to indicate the error. + */ +int mq_setattr (mqd_t mqdes, const(mq_attr)* newstat, mq_attr* oldstat); + + +/** + * Remove the specified message queue `name`. + * + * Params: + * name = Name of the queue to remove. + * + * Returns: + * On success mq_unlink() returns 0; on error, -1 is returned, with errno + * set to indicate the error. + */ +int mq_unlink (const(char)* name); + + +/** + * Register for notification when a message is available + * + * Params: + * mqdes = Message queue descriptor. + * notification = See `man 3 mq_notify` for details. + * + * Returns: + * On success mq_notify() returns 0; on error, -1 is returned, with errno + * set to indicate the error. + */ +int mq_notify (mqd_t mqdes, const(sigevent)* notification); + + +/** + * Receive the oldest message with the highest priority the the message queue + * + * Params: + * mqdes = Message queue descriptor. + * msg_ptr = Buffer to write the message to + * msg_len = Size of the buffer provided as `msg_ptr`. Must be greater + * than the mq_msgsize attribute of the queue. + * msg_prio = If not `null`, set to the priority of this message. + * + * Returns: + * On success, mq_receive() returns the number of bytes in the received + * message; on error, -1 is returned, with errno set to indicate the error + */ +ssize_t mq_receive (mqd_t mqdes, char* msg_ptr, size_t msg_len, uint* msg_prio); + + +/** + * Receive the oldest message with the highest priority the the message queue, + * wait up to a certain timeout. + * + * Params: + * mqdes = Message queue descriptor. + * msg_ptr = Buffer to write the message to + * msg_len = Size of the buffer provided as `msg_ptr`. Must be greater + * than the mq_msgsize attribute of the queue. + * msg_prio = If not `null`, set to the priority of this message. + * abs_timeout = Specify a ceiling on the time to block if the queue is empty. + * + * Returns: + * On success, mq_receive() returns the number of bytes in the received + * message; on error, -1 is returned, with errno set to indicate the error + */ +ssize_t mq_timedreceive (mqd_t mqdes, char* msg_ptr, size_t msg_len, + uint* msg_prio, const(timespec)* abs_timeout); + + +/** + * Add a message to a message queue. + * + * Params: + * mqdes = Message queue descriptor. + * msg_ptr = Buffer to read the message from + * msg_len = Size of the message provided via `msg_ptr`. Must be lower + * or equal to the mq_msgsize attribute of the queue. + * msg_prio = Priority of this message. + * + * Returns: + * On success, mq_send() return zero; on error, -1 is returned, with errno + * set to indicate the error. + */ +int mq_send (mqd_t mqdes, const(char)* msg_ptr, size_t msg_len, uint msg_prio); + + +/** + * Add a message to a message queue, block up to a certain time if the queue + * is full. + * + * Params: + * mqdes = Message queue descriptor. + * msg_ptr = Buffer to read the message from + * msg_len = Size of the message provided via `msg_ptr`. Must be lower + * or equal to the mq_msgsize attribute of the queue. + * msg_prio = Priority of this message. + * abs_timeout = Specify a ceiling on the time to block if the queue is empty. + * + * Returns: + * On success, mq_timedsend() return zero; on error, -1 is returned, + * with errno set to indicate the error. + * + */ +int mq_timedsend (mqd_t mqdes, const(char)* msg_ptr, size_t msg_len, + uint msg_prio, const(timespec)* abs_timeout); From 3f9e4508c7a4c3996b193861dacb871a7bbafaa2 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 30 Jan 2016 09:57:43 +0100 Subject: [PATCH 251/768] fix exception handling in fibers with /SAFESEH --- src/core/thread.d | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index a26508d21e..7d31ee3533 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -4570,16 +4570,22 @@ private: finalHandler = reg.handler; } - pstack -= EXCEPTION_REGISTRATION.sizeof; + // When linking with /safeseh (supported by LDC, but not DMD) + // the exception chain must not extend to the very top + // of the stack, otherwise the exception chain is also considered + // invalid. Reserving additional 4 bytes at the top of the stack will + // keep the EXCEPTION_REGISTRATION below that limit + size_t reserve = EXCEPTION_REGISTRATION.sizeof + 4; + pstack -= reserve; *(cast(EXCEPTION_REGISTRATION*)pstack) = EXCEPTION_REGISTRATION( sehChainEnd, finalHandler ); push( cast(size_t) &fiber_entryPoint ); // EIP - push( cast(size_t) m_ctxt.bstack - EXCEPTION_REGISTRATION.sizeof ); // EBP + push( cast(size_t) m_ctxt.bstack - reserve ); // EBP push( 0x00000000 ); // EDI push( 0x00000000 ); // ESI push( 0x00000000 ); // EBX - push( cast(size_t) m_ctxt.bstack - EXCEPTION_REGISTRATION.sizeof ); // FS:[0] + push( cast(size_t) m_ctxt.bstack - reserve ); // FS:[0] push( cast(size_t) m_ctxt.bstack ); // FS:[4] push( cast(size_t) m_ctxt.bstack - m_size ); // FS:[8] push( 0x00000000 ); // EAX From e66c24df2c275c2d206a1a695ee7a24ededfcf10 Mon Sep 17 00:00:00 2001 From: Joakim Date: Mon, 7 Sep 2015 14:01:26 -0500 Subject: [PATCH 252/768] Don't use stdlib.free on module info when using linker-generated section brackets --- src/rt/sections_android.d | 1 - src/rt/sections_solaris.d | 1 - 2 files changed, 2 deletions(-) diff --git a/src/rt/sections_android.d b/src/rt/sections_android.d index 2c76fe59cc..b2592d7638 100644 --- a/src/rt/sections_android.d +++ b/src/rt/sections_android.d @@ -74,7 +74,6 @@ void initSections() void finiSections() { - .free(cast(void*)_sections.modules.ptr); pthread_key_delete(_tlsKey); } diff --git a/src/rt/sections_solaris.d b/src/rt/sections_solaris.d index 31c05fd18f..bf7773de91 100644 --- a/src/rt/sections_solaris.d +++ b/src/rt/sections_solaris.d @@ -69,7 +69,6 @@ void initSections() void finiSections() { - .free(cast(void*)_sections.modules.ptr); } void[] initTLSRanges() From c74850f0c03e72a2abb633e01e481c9ffa0aee33 Mon Sep 17 00:00:00 2001 From: Joakim Date: Tue, 15 Sep 2015 05:21:16 -0500 Subject: [PATCH 253/768] Move non-Posix bionic declarations into their own modules --- src/core/sys/bionic/fcntl.d | 5 +++++ src/core/sys/bionic/unistd.d | 5 +++++ src/core/sys/posix/fcntl.d | 2 -- src/core/sys/posix/unistd.d | 1 - src/rt/cover.d | 6 +++++- 5 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 src/core/sys/bionic/fcntl.d create mode 100644 src/core/sys/bionic/unistd.d diff --git a/src/core/sys/bionic/fcntl.d b/src/core/sys/bionic/fcntl.d new file mode 100644 index 0000000000..1ed58ebd57 --- /dev/null +++ b/src/core/sys/bionic/fcntl.d @@ -0,0 +1,5 @@ +module core.sys.bionic.fcntl; + +version(CRuntime_Bionic) extern(C) nothrow @nogc: + +enum LOCK_EX = 2; diff --git a/src/core/sys/bionic/unistd.d b/src/core/sys/bionic/unistd.d new file mode 100644 index 0000000000..dd5314c04f --- /dev/null +++ b/src/core/sys/bionic/unistd.d @@ -0,0 +1,5 @@ +module core.sys.bionic.unistd; + +version(CRuntime_Bionic) extern(C) nothrow @nogc: + +int flock(int, int) @trusted; diff --git a/src/core/sys/posix/fcntl.d b/src/core/sys/posix/fcntl.d index f18ed0fa98..2e13912ddd 100644 --- a/src/core/sys/posix/fcntl.d +++ b/src/core/sys/posix/fcntl.d @@ -499,8 +499,6 @@ else version( CRuntime_Bionic ) enum F_WRLCK = 1; enum F_UNLCK = 2; - enum LOCK_EX = 2; - version (X86) { enum O_CREAT = 0x40; // octal 0100 diff --git a/src/core/sys/posix/unistd.d b/src/core/sys/posix/unistd.d index 98e4a6e9cc..6371c53817 100644 --- a/src/core/sys/posix/unistd.d +++ b/src/core/sys/posix/unistd.d @@ -1263,7 +1263,6 @@ else version( FreeBSD ) else version( CRuntime_Bionic ) { int fchdir(int) @trusted; - int flock(int, int) @trusted; pid_t getpgid(pid_t) @trusted; int lchown(in char*, uid_t, gid_t); int nice(int) @trusted; diff --git a/src/rt/cover.d b/src/rt/cover.d index 23baf15daf..50d4520d80 100644 --- a/src/rt/cover.d +++ b/src/rt/cover.d @@ -399,7 +399,11 @@ version (Windows) HANDLE handle(int fd) void lockFile(int fd) { version (CRuntime_Bionic) - core.sys.posix.unistd.flock(fd, LOCK_EX); // exclusive lock + { + import core.sys.bionic.fcntl : LOCK_EX; + import core.sys.bionic.unistd : flock; + flock(fd, LOCK_EX); // exclusive lock + } else version (Posix) lockf(fd, F_LOCK, 0); // exclusive lock else version (Windows) From 82270c115fc289acf4dd1564a9f8db08e806dfb4 Mon Sep 17 00:00:00 2001 From: Sanjay S Date: Sun, 31 Jan 2016 15:48:41 -0800 Subject: [PATCH 254/768] Make ttycom and ioccom modules public --- src/core/sys/posix/sys/ioctl.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/sys/posix/sys/ioctl.d b/src/core/sys/posix/sys/ioctl.d index 844be0cdea..3d2896d82c 100644 --- a/src/core/sys/posix/sys/ioctl.d +++ b/src/core/sys/posix/sys/ioctl.d @@ -323,7 +323,7 @@ else version (OSX) import core.sys.posix.termios; // termios import core.sys.posix.sys.time; // timeval - import core.sys.posix.sys.ttycom; // Terminal related ioctls + public import core.sys.posix.sys.ttycom; // Terminal related ioctls struct ttysize { @@ -336,7 +336,7 @@ else version (OSX) enum uint TIOCGSIZE = TIOCGWINSZ; enum uint TIOCSSIZE = TIOCSWINSZ; - import core.sys.posix.sys.filio; // File related ioctls + public import core.sys.posix.sys.filio; // File related ioctls int ioctl(int fildes, c_ulong request, ...); } From cd31e181a6e55f9ab2f3ee0d14100cf3e6e26393 Mon Sep 17 00:00:00 2001 From: Sanjay S Date: Thu, 4 Feb 2016 21:53:51 -0800 Subject: [PATCH 255/768] Fix issues related to linking module for unit-testing. --- src/core/sys/posix/sys/ioccom.d | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/core/sys/posix/sys/ioccom.d b/src/core/sys/posix/sys/ioccom.d index 7403f2de65..1094f9bffc 100755 --- a/src/core/sys/posix/sys/ioccom.d +++ b/src/core/sys/posix/sys/ioccom.d @@ -40,32 +40,29 @@ version (OSX) enum uint IOC_DIRMASK = 0xe0000000; // mask to extract above direction parameters // encode the ioctl info into 32 bits - uint _IOC(uint inorout, uint group, uint num, size_t len) + uint _IOC(T=typeof(null))(uint inorout, uint group, uint num, size_t len) { - assert((group & 0xff) == group); - assert((num & 0xff) == num); - assert((len & IOCPARM_MASK) == len); return (inorout | ((len & IOCPARM_MASK) << 16) | (group << 8) | num); } // encode a command with no parameters - uint _IO(uint g, uint n) + uint _IO(char g, int n) { - return _IOC(IOC_VOID, g, n, 0); + return _IOC(IOC_VOID, cast(uint)g, cast(uint)n, cast(size_t)0); } // encode a command that returns info - uint _IOR(T)(uint g, uint n) + uint _IOR(T)(char g, int n) { - return _IOC(IOC_OUT, g, n, T.sizeof); + return _IOC!(T)(IOC_OUT, cast(uint)g, cast(uint)n, T.sizeof); } // encode a command that takes info - uint _IOW(T)(uint g, uint n) + uint _IOW(T)(char g, int n) { - return _IOC(IOC_IN, g, n, T.sizeof); + return _IOC!(T)(IOC_IN, cast(uint)g, cast(uint)n, T.sizeof); } // encode a command that takes info and returns info - uint _IOWR(T)(uint g, uint n) + uint _IOWR(T)(char g, int n) { - return _IOC(IOC_INOUT, g, n, T.sizeof); + return _IOC!(T)(IOC_INOUT, cast(uint)g, cast(uint)n, T.sizeof); } } From 0ad53a95ce41da31183970daacec07d028ec0ca4 Mon Sep 17 00:00:00 2001 From: Sanjay S Date: Thu, 4 Feb 2016 22:11:11 -0800 Subject: [PATCH 256/768] Remove trailing whitespace --- src/core/sys/posix/sys/ttycom.d | 156 ++++++++++++++++---------------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/src/core/sys/posix/sys/ttycom.d b/src/core/sys/posix/sys/ttycom.d index 5361e6d9f1..638bd6e995 100755 --- a/src/core/sys/posix/sys/ttycom.d +++ b/src/core/sys/posix/sys/ttycom.d @@ -17,94 +17,94 @@ nothrow @nogc: version (OSX) { struct winsize { - ushort ws_row; // rows, in characters - ushort ws_col; // columns, in characters - ushort ws_xpixel; // horizontal size, pixels - ushort ws_ypixel; // vertical size, pixels + ushort ws_row; // rows, in characters + ushort ws_col; // columns, in characters + ushort ws_xpixel; // horizontal size, pixels + ushort ws_ypixel; // vertical size, pixels } // Serial/TTY ioctl's - enum uint TIOCMODG = _IOR!(int)('t', 3); // get modem control state - enum uint TIOCMODS = _IOW!(int)('t', 4); // set modem control state - enum uint TIOCM_LE = 0x001; // line enable - enum uint TIOCM_DTR = 0x002; // data terminal ready - enum uint TIOCM_RTS = 0x004; // request to send - enum uint TIOCM_ST = 0x008; // secondary transmit - enum uint TIOCM_SR = 0x010; // secondary receive - enum uint TIOCM_CTS = 0x020; // clear to send - enum uint TIOCM_CAR = 0x040; // carrier detect + enum uint TIOCMODG = _IOR!(int)('t', 3); // get modem control state + enum uint TIOCMODS = _IOW!(int)('t', 4); // set modem control state + enum uint TIOCM_LE = 0x001; // line enable + enum uint TIOCM_DTR = 0x002; // data terminal ready + enum uint TIOCM_RTS = 0x004; // request to send + enum uint TIOCM_ST = 0x008; // secondary transmit + enum uint TIOCM_SR = 0x010; // secondary receive + enum uint TIOCM_CTS = 0x020; // clear to send + enum uint TIOCM_CAR = 0x040; // carrier detect enum uint TIOCM_CD = TIOCM_CAR; - enum uint TIOCM_RNG = 0x080; // ring + enum uint TIOCM_RNG = 0x080; // ring enum uint TIOCM_RI = TIOCM_RNG; - enum uint TIOCM_DSR = 0x100; // data set ready - // 8-10 compat - enum uint TIOCEXCL = _IO('t', 13); // set exclusive use of tty - enum uint TIOCNXCL = _IO('t', 14); // reset exclusive use of tty - // 15 unused - enum uint TIOCFLUSH = _IOW!(int)('t', 16); // flush buffers - // 17-18 compat - enum uint TIOCGETA = _IOR!(termios)('t', 19); // get termios struct - enum uint TIOCSETA = _IOW!(termios)('t', 20); // set termios struct - enum uint TIOCSETAW = _IOW!(termios)('t', 21); // drain output, set - enum uint TIOCSETAF = _IOW!(termios)('t', 22); // drn out, fls in, set - enum uint TIOCGETD = _IOR!(int)('t', 26); // get line discipline - enum uint TIOCSETD = _IOW!(int)('t', 27); // set line discipline - enum uint TIOCIXON = _IO('t', 129); // internal input VSTART - enum uint TIOCIXOFF = _IO('t', 128); // internal input VSTOP - // 127-124 compat - enum uint TIOCSBRK = _IO('t', 123); // set break bit - enum uint TIOCCBRK = _IO('t', 122); // clear break bit - enum uint TIOCSDTR = _IO('t', 121); // set data terminal ready - enum uint TIOCCDTR = _IO('t', 120); // clear data terminal ready - enum uint TIOCGPGRP = _IOR!(int)('t', 119); // get pgrp of tty - enum uint TIOCSPGRP = _IOW!(int)('t', 118); // set pgrp of tty - // 117-116 compat - enum uint TIOCOUTQ = _IOR!(int)('t', 115); // output queue size - enum uint TIOCSTI = _IOW!(char)('t', 114);// simulate terminal input - enum uint TIOCNOTTY = _IO('t', 113); // void tty association - enum uint TIOCPKT = _IOW!(int)('t', 112); // pty: set/clear packet mode - enum uint TIOCPKT_DATA = 0x00; // data packet - enum uint TIOCPKT_FLUSHREAD = 0x01; // flush packet - enum uint TIOCPKT_FLUSHWRITE = 0x02; // flush packet - enum uint TIOCPKT_STOP = 0x04; // stop output - enum uint TIOCPKT_START = 0x08; // start output - enum uint TIOCPKT_NOSTOP = 0x10; // no more ^S, ^Q - enum uint TIOCPKT_DOSTOP = 0x20; // now do ^S ^Q - enum uint TIOCPKT_IOCTL = 0x40; // state change of pty driver - enum uint TIOCSTOP = _IO('t', 111); // stop output, like ^S - enum uint TIOCSTART = _IO('t', 110); // start output, like ^Q - enum uint TIOCMSET = _IOW!(int)('t', 109); // set all modem bits - enum uint TIOCMBIS = _IOW!(int)('t', 108); // bis modem bits - enum uint TIOCMBIC = _IOW!(int)('t', 107); // bic modem bits - enum uint TIOCMGET = _IOR!(int)('t', 106); // get all modem bits - enum uint TIOCREMOTE = _IOW!(int)('t', 105); // remote input editing - enum uint TIOCGWINSZ = _IOR!(winsize)('t', 104); // get window size - enum uint TIOCSWINSZ = _IOW!(winsize)('t', 103); // set window size - enum uint TIOCUCNTL = _IOW!(int)('t', 102); // pty: set/clr usr cntl mode - enum uint TIOCSTAT = _IO('t', 101); // simulate ^T status message - enum uint UIOCCMD(n) = _IO('u', n); // usr cntl op "n" - enum uint TIOCSCONS = _IO('t', 99); // 4.2 compatibility - enum uint TIOCCONS = _IOW!(int)('t', 98); // become virtual console - enum uint TIOCSCTTY = _IO('t', 97); // become controlling tty - enum uint TIOCEXT = _IOW!(int)('t', 96); // pty: external processing - enum uint TIOCSIG = _IO('t', 95); // pty: generate signal - enum uint TIOCDRAIN = _IO('t', 94); // wait till output drained - enum uint TIOCMSDTRWAIT = _IOW!(int)('t', 91); // modem: set wait on close - enum uint TIOCMGDTRWAIT = _IOR!(int)('t', 90); // modem: get wait on close + enum uint TIOCM_DSR = 0x100; // data set ready + // 8-10 compat + enum uint TIOCEXCL = _IO('t', 13); // set exclusive use of tty + enum uint TIOCNXCL = _IO('t', 14); // reset exclusive use of tty + // 15 unused + enum uint TIOCFLUSH = _IOW!(int)('t', 16); // flush buffers + // 17-18 compat + enum uint TIOCGETA = _IOR!(termios)('t', 19); // get termios struct + enum uint TIOCSETA = _IOW!(termios)('t', 20); // set termios struct + enum uint TIOCSETAW = _IOW!(termios)('t', 21); // drain output, set + enum uint TIOCSETAF = _IOW!(termios)('t', 22); // drn out, fls in, set + enum uint TIOCGETD = _IOR!(int)('t', 26); // get line discipline + enum uint TIOCSETD = _IOW!(int)('t', 27); // set line discipline + enum uint TIOCIXON = _IO('t', 129); // internal input VSTART + enum uint TIOCIXOFF = _IO('t', 128); // internal input VSTOP + // 127-124 compat + enum uint TIOCSBRK = _IO('t', 123); // set break bit + enum uint TIOCCBRK = _IO('t', 122); // clear break bit + enum uint TIOCSDTR = _IO('t', 121); // set data terminal ready + enum uint TIOCCDTR = _IO('t', 120); // clear data terminal ready + enum uint TIOCGPGRP = _IOR!(int)('t', 119); // get pgrp of tty + enum uint TIOCSPGRP = _IOW!(int)('t', 118); // set pgrp of tty + // 117-116 compat + enum uint TIOCOUTQ = _IOR!(int)('t', 115); // output queue size + enum uint TIOCSTI = _IOW!(char)('t', 114);// simulate terminal input + enum uint TIOCNOTTY = _IO('t', 113); // void tty association + enum uint TIOCPKT = _IOW!(int)('t', 112); // pty: set/clear packet mode + enum uint TIOCPKT_DATA = 0x00; // data packet + enum uint TIOCPKT_FLUSHREAD = 0x01; // flush packet + enum uint TIOCPKT_FLUSHWRITE = 0x02; // flush packet + enum uint TIOCPKT_STOP = 0x04; // stop output + enum uint TIOCPKT_START = 0x08; // start output + enum uint TIOCPKT_NOSTOP = 0x10; // no more ^S, ^Q + enum uint TIOCPKT_DOSTOP = 0x20; // now do ^S ^Q + enum uint TIOCPKT_IOCTL = 0x40; // state change of pty driver + enum uint TIOCSTOP = _IO('t', 111); // stop output, like ^S + enum uint TIOCSTART = _IO('t', 110); // start output, like ^Q + enum uint TIOCMSET = _IOW!(int)('t', 109); // set all modem bits + enum uint TIOCMBIS = _IOW!(int)('t', 108); // bis modem bits + enum uint TIOCMBIC = _IOW!(int)('t', 107); // bic modem bits + enum uint TIOCMGET = _IOR!(int)('t', 106); // get all modem bits + enum uint TIOCREMOTE = _IOW!(int)('t', 105); // remote input editing + enum uint TIOCGWINSZ = _IOR!(winsize)('t', 104); // get window size + enum uint TIOCSWINSZ = _IOW!(winsize)('t', 103); // set window size + enum uint TIOCUCNTL = _IOW!(int)('t', 102); // pty: set/clr usr cntl mode + enum uint TIOCSTAT = _IO('t', 101); // simulate ^T status message + enum uint UIOCCMD(n) = _IO('u', n); // usr cntl op "n" + enum uint TIOCSCONS = _IO('t', 99); // 4.2 compatibility + enum uint TIOCCONS = _IOW!(int)('t', 98); // become virtual console + enum uint TIOCSCTTY = _IO('t', 97); // become controlling tty + enum uint TIOCEXT = _IOW!(int)('t', 96); // pty: external processing + enum uint TIOCSIG = _IO('t', 95); // pty: generate signal + enum uint TIOCDRAIN = _IO('t', 94); // wait till output drained + enum uint TIOCMSDTRWAIT = _IOW!(int)('t', 91); // modem: set wait on close + enum uint TIOCMGDTRWAIT = _IOR!(int)('t', 90); // modem: get wait on close enum uint TIOCTIMESTAMP = _IOR!(timeval)('t', 89); // enable/get timestamp // of last input event enum uint TIOCDCDTIMESTAMP = _IOR!(timeval)('t', 88); // enable/get timestamp // of last DCd rise - enum uint TIOCSDRAINWAIT = _IOW!(int)('t', 87); // set ttywait timeout - enum uint TIOCGDRAINWAIT = _IOR!(int)('t', 86); // get ttywait timeout + enum uint TIOCSDRAINWAIT = _IOW!(int)('t', 87); // set ttywait timeout + enum uint TIOCGDRAINWAIT = _IOR!(int)('t', 86); // get ttywait timeout enum uint TIOCDSIMICROCODE = _IO('t', 85); // download microcode to // DSI Softmodem - enum uint TIOCPTYGRANT = _IO('t', 84); // grantpt(3) - enum uint TIOCPTYGNAME = _IOC(IOC_OUT, 't', 83, 128); // ptsname(3) - enum uint TIOCPTYUNLK = _IO('t', 82); // unlockpt(3) + enum uint TIOCPTYGRANT = _IO('t', 84); // grantpt(3) + enum uint TIOCPTYGNAME = _IOC(IOC_OUT, 't', 83, 128); // ptsname(3) + enum uint TIOCPTYUNLK = _IO('t', 82); // unlockpt(3) - enum uint TTYDISC = 0; // termios tty line discipline - enum uint TABLDISC = 3; // tablet discipline - enum uint SLIPDISC = 4; // serial IP discipline - enum uint PPPDISC = 5; // PPP discipline + enum uint TTYDISC = 0; // termios tty line discipline + enum uint TABLDISC = 3; // tablet discipline + enum uint SLIPDISC = 4; // serial IP discipline + enum uint PPPDISC = 5; // PPP discipline } From e4eb39233eac765a1d198c5d872c9b6ec1b44b3c Mon Sep 17 00:00:00 2001 From: Sanjay S Date: Fri, 5 Feb 2016 19:36:40 -0800 Subject: [PATCH 257/768] Additional fix to include missing items that will make CI succeed. --- mak/MANIFEST | 3 +++ mak/SRCS | 3 +++ win32.mak | 9 +++++++++ win64.mak | 9 +++++++++ 4 files changed, 24 insertions(+) diff --git a/mak/MANIFEST b/mak/MANIFEST index 0471c3eb61..0494c41a1a 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -152,6 +152,8 @@ MANIFEST=\ src\core\sys\posix\netinet\in_.d \ src\core\sys\posix\netinet\tcp.d \ \ + src\core\sys\posix\sys\filio.d \ + src\core\sys\posix\sys\ioccom.d \ src\core\sys\posix\sys\ioctl.d \ src\core\sys\posix\sys\ipc.d \ src\core\sys\posix\sys\mman.d \ @@ -163,6 +165,7 @@ MANIFEST=\ src\core\sys\posix\sys\stat.d \ src\core\sys\posix\sys\statvfs.d \ src\core\sys\posix\sys\time.d \ + src\core\sys\posix\sys\ttycom.d \ src\core\sys\posix\sys\types.d \ src\core\sys\posix\sys\uio.d \ src\core\sys\posix\sys\un.d \ diff --git a/mak/SRCS b/mak/SRCS index 83b21378d1..e9d95936cf 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -61,7 +61,10 @@ SRCS=\ src\core\sys\posix\sys\stat.d \ src\core\sys\posix\sys\wait.d \ src\core\sys\posix\netdb.d \ + src\core\sys\posix\sys\filio.d \ + src\core\sys\posix\sys\ioccom.d \ src\core\sys\posix\sys\ioctl.d \ + src\core\sys\posix\sys\ttycom.d \ src\core\sys\posix\sys\utsname.d \ src\core\sys\posix\netinet\in_.d \ src\core\sys\posix\arpa\inet.d \ diff --git a/win32.mak b/win32.mak index a80f12f551..d4522408d1 100644 --- a/win32.mak +++ b/win32.mak @@ -526,6 +526,12 @@ $(IMPDIR)\core\sys\posix\stdlib.d : src\core\sys\posix\stdlib.d $(IMPDIR)\core\sys\posix\syslog.d : src\core\sys\posix\syslog.d copy $** $@ +$(IMPDIR)\core\sys\posix\sys\filio.d : src\core\sys\posix\sys\filio.d + copy $** $@ + +$(IMPDIR)\core\sys\posix\sys\ioccom.d : src\core\sys\posix\sys\ioccom.d + copy $** $@ + $(IMPDIR)\core\sys\posix\sys\ioctl.d : src\core\sys\posix\sys\ioctl.d copy $** $@ @@ -556,6 +562,9 @@ $(IMPDIR)\core\sys\posix\sys\statvfs.d : src\core\sys\posix\sys\statvfs.d $(IMPDIR)\core\sys\posix\sys\time.d : src\core\sys\posix\sys\time.d copy $** $@ +$(IMPDIR)\core\sys\posix\sys\ttycom.d : src\core\sys\posix\sys\ttycom.d + copy $** $@ + $(IMPDIR)\core\sys\posix\sys\types.d : src\core\sys\posix\sys\types.d copy $** $@ diff --git a/win64.mak b/win64.mak index cbcafeebba..f057b93bcd 100644 --- a/win64.mak +++ b/win64.mak @@ -534,6 +534,12 @@ $(IMPDIR)\core\sys\posix\stdlib.d : src\core\sys\posix\stdlib.d $(IMPDIR)\core\sys\posix\syslog.d : src\core\sys\posix\syslog.d copy $** $@ +$(IMPDIR)\core\sys\posix\sys\filio.d : src\core\sys\posix\sys\filio.d + copy $** $@ + +$(IMPDIR)\core\sys\posix\sys\ioccom.d : src\core\sys\posix\sys\ioccom.d + copy $** $@ + $(IMPDIR)\core\sys\posix\sys\ioctl.d : src\core\sys\posix\sys\ioctl.d copy $** $@ @@ -561,6 +567,9 @@ $(IMPDIR)\core\sys\posix\sys\stat.d : src\core\sys\posix\sys\stat.d $(IMPDIR)\core\sys\posix\sys\statvfs.d : src\core\sys\posix\sys\statvfs.d copy $** $@ +$(IMPDIR)\core\sys\posix\sys\ttycom.d : src\core\sys\posix\sys\ttycom.d + copy $** $@ + $(IMPDIR)\core\sys\posix\sys\time.d : src\core\sys\posix\sys\time.d copy $** $@ From f4f2da81e7c166353dc0ed815d9091af569ce258 Mon Sep 17 00:00:00 2001 From: Sanjay S Date: Fri, 5 Feb 2016 19:55:19 -0800 Subject: [PATCH 258/768] Revert "Additional fix to include missing items that will make CI succeed." This reverts commit e4eb39233eac765a1d198c5d872c9b6ec1b44b3c. --- mak/MANIFEST | 3 --- mak/SRCS | 3 --- win32.mak | 9 --------- win64.mak | 9 --------- 4 files changed, 24 deletions(-) diff --git a/mak/MANIFEST b/mak/MANIFEST index 0494c41a1a..0471c3eb61 100644 --- a/mak/MANIFEST +++ b/mak/MANIFEST @@ -152,8 +152,6 @@ MANIFEST=\ src\core\sys\posix\netinet\in_.d \ src\core\sys\posix\netinet\tcp.d \ \ - src\core\sys\posix\sys\filio.d \ - src\core\sys\posix\sys\ioccom.d \ src\core\sys\posix\sys\ioctl.d \ src\core\sys\posix\sys\ipc.d \ src\core\sys\posix\sys\mman.d \ @@ -165,7 +163,6 @@ MANIFEST=\ src\core\sys\posix\sys\stat.d \ src\core\sys\posix\sys\statvfs.d \ src\core\sys\posix\sys\time.d \ - src\core\sys\posix\sys\ttycom.d \ src\core\sys\posix\sys\types.d \ src\core\sys\posix\sys\uio.d \ src\core\sys\posix\sys\un.d \ diff --git a/mak/SRCS b/mak/SRCS index e9d95936cf..83b21378d1 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -61,10 +61,7 @@ SRCS=\ src\core\sys\posix\sys\stat.d \ src\core\sys\posix\sys\wait.d \ src\core\sys\posix\netdb.d \ - src\core\sys\posix\sys\filio.d \ - src\core\sys\posix\sys\ioccom.d \ src\core\sys\posix\sys\ioctl.d \ - src\core\sys\posix\sys\ttycom.d \ src\core\sys\posix\sys\utsname.d \ src\core\sys\posix\netinet\in_.d \ src\core\sys\posix\arpa\inet.d \ diff --git a/win32.mak b/win32.mak index d4522408d1..a80f12f551 100644 --- a/win32.mak +++ b/win32.mak @@ -526,12 +526,6 @@ $(IMPDIR)\core\sys\posix\stdlib.d : src\core\sys\posix\stdlib.d $(IMPDIR)\core\sys\posix\syslog.d : src\core\sys\posix\syslog.d copy $** $@ -$(IMPDIR)\core\sys\posix\sys\filio.d : src\core\sys\posix\sys\filio.d - copy $** $@ - -$(IMPDIR)\core\sys\posix\sys\ioccom.d : src\core\sys\posix\sys\ioccom.d - copy $** $@ - $(IMPDIR)\core\sys\posix\sys\ioctl.d : src\core\sys\posix\sys\ioctl.d copy $** $@ @@ -562,9 +556,6 @@ $(IMPDIR)\core\sys\posix\sys\statvfs.d : src\core\sys\posix\sys\statvfs.d $(IMPDIR)\core\sys\posix\sys\time.d : src\core\sys\posix\sys\time.d copy $** $@ -$(IMPDIR)\core\sys\posix\sys\ttycom.d : src\core\sys\posix\sys\ttycom.d - copy $** $@ - $(IMPDIR)\core\sys\posix\sys\types.d : src\core\sys\posix\sys\types.d copy $** $@ diff --git a/win64.mak b/win64.mak index f057b93bcd..cbcafeebba 100644 --- a/win64.mak +++ b/win64.mak @@ -534,12 +534,6 @@ $(IMPDIR)\core\sys\posix\stdlib.d : src\core\sys\posix\stdlib.d $(IMPDIR)\core\sys\posix\syslog.d : src\core\sys\posix\syslog.d copy $** $@ -$(IMPDIR)\core\sys\posix\sys\filio.d : src\core\sys\posix\sys\filio.d - copy $** $@ - -$(IMPDIR)\core\sys\posix\sys\ioccom.d : src\core\sys\posix\sys\ioccom.d - copy $** $@ - $(IMPDIR)\core\sys\posix\sys\ioctl.d : src\core\sys\posix\sys\ioctl.d copy $** $@ @@ -567,9 +561,6 @@ $(IMPDIR)\core\sys\posix\sys\stat.d : src\core\sys\posix\sys\stat.d $(IMPDIR)\core\sys\posix\sys\statvfs.d : src\core\sys\posix\sys\statvfs.d copy $** $@ -$(IMPDIR)\core\sys\posix\sys\ttycom.d : src\core\sys\posix\sys\ttycom.d - copy $** $@ - $(IMPDIR)\core\sys\posix\sys\time.d : src\core\sys\posix\sys\time.d copy $** $@ From 19e13b2ff2a59d8e8bc7c015040c9dabf882d334 Mon Sep 17 00:00:00 2001 From: Sanjay S Date: Fri, 5 Feb 2016 20:00:18 -0800 Subject: [PATCH 259/768] Additional fix to include missing items that will make CI succeed. --- win32.mak | 9 +++++++++ win64.mak | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/win32.mak b/win32.mak index a80f12f551..d4522408d1 100644 --- a/win32.mak +++ b/win32.mak @@ -526,6 +526,12 @@ $(IMPDIR)\core\sys\posix\stdlib.d : src\core\sys\posix\stdlib.d $(IMPDIR)\core\sys\posix\syslog.d : src\core\sys\posix\syslog.d copy $** $@ +$(IMPDIR)\core\sys\posix\sys\filio.d : src\core\sys\posix\sys\filio.d + copy $** $@ + +$(IMPDIR)\core\sys\posix\sys\ioccom.d : src\core\sys\posix\sys\ioccom.d + copy $** $@ + $(IMPDIR)\core\sys\posix\sys\ioctl.d : src\core\sys\posix\sys\ioctl.d copy $** $@ @@ -556,6 +562,9 @@ $(IMPDIR)\core\sys\posix\sys\statvfs.d : src\core\sys\posix\sys\statvfs.d $(IMPDIR)\core\sys\posix\sys\time.d : src\core\sys\posix\sys\time.d copy $** $@ +$(IMPDIR)\core\sys\posix\sys\ttycom.d : src\core\sys\posix\sys\ttycom.d + copy $** $@ + $(IMPDIR)\core\sys\posix\sys\types.d : src\core\sys\posix\sys\types.d copy $** $@ diff --git a/win64.mak b/win64.mak index cbcafeebba..f057b93bcd 100644 --- a/win64.mak +++ b/win64.mak @@ -534,6 +534,12 @@ $(IMPDIR)\core\sys\posix\stdlib.d : src\core\sys\posix\stdlib.d $(IMPDIR)\core\sys\posix\syslog.d : src\core\sys\posix\syslog.d copy $** $@ +$(IMPDIR)\core\sys\posix\sys\filio.d : src\core\sys\posix\sys\filio.d + copy $** $@ + +$(IMPDIR)\core\sys\posix\sys\ioccom.d : src\core\sys\posix\sys\ioccom.d + copy $** $@ + $(IMPDIR)\core\sys\posix\sys\ioctl.d : src\core\sys\posix\sys\ioctl.d copy $** $@ @@ -561,6 +567,9 @@ $(IMPDIR)\core\sys\posix\sys\stat.d : src\core\sys\posix\sys\stat.d $(IMPDIR)\core\sys\posix\sys\statvfs.d : src\core\sys\posix\sys\statvfs.d copy $** $@ +$(IMPDIR)\core\sys\posix\sys\ttycom.d : src\core\sys\posix\sys\ttycom.d + copy $** $@ + $(IMPDIR)\core\sys\posix\sys\time.d : src\core\sys\posix\sys\time.d copy $** $@ From bed3730b04ac298b1240c923dad810773cce600e Mon Sep 17 00:00:00 2001 From: Nicolas F Date: Sat, 6 Feb 2016 18:14:31 +0100 Subject: [PATCH 260/768] core.bitops: Add bitwise rotate functions --- src/core/bitop.d | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/core/bitop.d b/src/core/bitop.d index 476e261d43..fb8ce530be 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -706,3 +706,38 @@ version (D_InlineAsm_X86_64) } } } + +/** + * Bitwise rotates unsigned arithmetic types + */ +pure T rotl(T)(in T u, in uint s) + if (__traits(isArithmetic, T) && __traits(isUnsigned, T)) +{ + return cast(T) ((u << s) | (u >> (-s & (T.sizeof * 8 - 1)))); +} + +pure T rotr(T)(in T u, in uint s) + if (__traits(isArithmetic, T) && __traits(isUnsigned, T)) +{ + return cast(T) ((u >> s) | (u << (-s & (T.sizeof * 8 - 1)))); +} + +unittest +{ + ubyte a = 0b10101010U; + ulong b = ulong.max; + + assert(rotl(a, 1) == 0b01010101); + assert(rotr(a, 1) == 0b01010101); + assert(rotl(a, 3) == 0b01010101); + assert(rotr(a, 3) == 0b01010101); + + assert(rotl(a, 0) == a); + assert(rotr(a, 0) == a); + + assert(rotl(a, 16) == a); + assert(rotr(a, 16) == a); + + assert(rotl(b, 64) == ulong.max); + assert(rotr(b, 64) == ulong.max); +} From 34af399f6ac40c2cee6d942d4e65edafeda9c7a7 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Mon, 1 Feb 2016 00:54:58 +0100 Subject: [PATCH 261/768] replace doLock/doUnlock with runLocked - pass function via alias parameter to allow inlining --- src/gc/gc.d | 165 ++++++++++++++++++---------------------------------- 1 file changed, 57 insertions(+), 108 deletions(-) diff --git a/src/gc/gc.d b/src/gc/gc.d index 955560cf27..ea281c34a2 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -345,40 +345,29 @@ struct GC gcx.disabled++; } - - mixin template doLock() + auto runLocked(alias func, alias time, alias count, Args...)(auto ref Args args) { - debug(PROFILE_API) - { - long tm = (GC.config.profile > 1 ? currTime.ticks : 0); - } + debug(PROFILE_API) {} else pragma(inline, true); + debug(PROFILE_API) immutable tm = (GC.config.profile > 1 ? currTime.ticks : 0); + gcLock.lock(); + debug(PROFILE_API) immutable tm2 = (GC.config.profile > 1 ? currTime.ticks : 0); - bool locked = (gcLock.lock(), true); + static if (is(typeof(func(args)) == void)) + func(args); + else + auto res = func(args); - debug(PROFILE_API) + debug(PROFILE_API) if (GC.config.profile > 1) { - long tm2 = (GC.config.profile > 1 ? currTime.ticks : 0); + count++; + immutable now = currTime.ticks; + lockTime += tm2 - tm; + time += now - tm2; } - } + gcLock.unlock(); - mixin template doUnlock(alias time, alias count) - { - debug(PROFILE_API) - { - bool unlocked = () { - if (GC.config.profile > 1) - { - count++; - long now = currTicks; - lockTime += tm2 - tm; - time += now - tm2; - } - gcLock.unlock(); - return true; - }(); - } - else - bool unlocked = (gcLock.unlock(), true); + static if (!is(typeof(func(args)) == void)) + return res; } /** @@ -391,7 +380,7 @@ struct GC return 0; } - uint go() nothrow + static uint go(Gcx* gcx, void* p) nothrow { Pool* pool = gcx.findPool(p); uint oldb = 0; @@ -406,10 +395,7 @@ struct GC return oldb; } - mixin doLock!(); - uint rc = go(); - mixin doUnlock!(otherTime, numOthers); - return rc; + return runLocked!(go, otherTime, numOthers)(gcx, p); } @@ -423,7 +409,7 @@ struct GC return 0; } - uint go() nothrow + static uint go(Gcx* gcx, void* p, uint mask) nothrow { Pool* pool = gcx.findPool(p); uint oldb = 0; @@ -439,10 +425,7 @@ struct GC return oldb; } - mixin doLock!(); - uint rc = go(); - mixin doUnlock!(otherTime, numOthers); - return rc; + return runLocked!(go, otherTime, numOthers)(gcx, p, mask); } @@ -456,7 +439,7 @@ struct GC return 0; } - uint go() nothrow + static uint go(Gcx* gcx, void* p, uint mask) nothrow { Pool* pool = gcx.findPool(p); uint oldb = 0; @@ -472,10 +455,7 @@ struct GC return oldb; } - mixin doLock!(); - uint rc = go(); - mixin doUnlock!(otherTime, numOthers); - return rc; + return runLocked!(go, otherTime, numOthers)(gcx, p, mask); } /** @@ -490,16 +470,10 @@ struct GC return null; } - void* p = void; size_t localAllocSize = void; if(alloc_size is null) alloc_size = &localAllocSize; - // Since a finalizer could launch a new thread, we always need to lock - // when collecting. The safest way to do this is to simply always lock - // when allocating. - mixin doLock!(); - p = mallocNoSync(size, bits, *alloc_size, ti); - mixin doUnlock!(mallocTime, numMallocs); + auto p = runLocked!(mallocNoSync, mallocTime, numMallocs)(size, bits, *alloc_size, ti); if (!(bits & BlkAttr.NO_SCAN)) { @@ -553,15 +527,9 @@ struct GC } size_t localAllocSize = void; - void* p = void; if(alloc_size is null) alloc_size = &localAllocSize; - // Since a finalizer could launch a new thread, we always need to lock - // when collecting. The safest way to do this is to simply always lock - // when allocating. - mixin doLock!(); - p = mallocNoSync(size, bits, *alloc_size, ti); - mixin doUnlock!(mallocTime, numMallocs); + auto p = runLocked!(mallocNoSync, mallocTime, numMallocs)(size, bits, *alloc_size, ti); memset(p, 0, size); if (!(bits & BlkAttr.NO_SCAN)) @@ -581,12 +549,7 @@ struct GC auto oldp = p; if(alloc_size is null) alloc_size = &localAllocSize; - // Since a finalizer could launch a new thread, we always need to lock - // when collecting. The safest way to do this is to simply always lock - // when allocating. - mixin doLock!(); - p = reallocNoSync(p, size, bits, *alloc_size, ti); - mixin doUnlock!(mallocTime, numMallocs); + p = runLocked!(reallocNoSync, mallocTime, numMallocs)(p, size, bits, *alloc_size, ti); if (p !is oldp && !(bits & BlkAttr.NO_SCAN)) { @@ -752,11 +715,7 @@ struct GC */ size_t extend(void* p, size_t minsize, size_t maxsize, const TypeInfo ti = null) nothrow { - mixin doLock!(); - size_t rc = extendNoSync(p, minsize, maxsize, ti); - mixin doUnlock!(extendTime, numExtends); - - return rc; + return runLocked!(extendNoSync, extendTime, numExtends)(p, minsize, maxsize, ti); } @@ -861,9 +820,7 @@ struct GC return; } - mixin doLock!(); - freeNoSync(p); - mixin doUnlock!(freeTime, numFrees); + return runLocked!(freeNoSync, freeTime, numFrees)(p); } @@ -944,11 +901,7 @@ struct GC return null; } - mixin doLock!(); - void* rc = addrOfNoSync(p); - mixin doUnlock!(otherTime, numOthers); - - return rc; + return runLocked!(addrOfNoSync, otherTime, numOthers)(p); } @@ -980,11 +933,7 @@ struct GC return 0; } - mixin doLock!(); - size_t rc = sizeOfNoSync(p); - mixin doUnlock!(otherTime, numOthers); - - return rc; + return runLocked!(sizeOfNoSync, otherTime, numOthers)(p); } @@ -1035,11 +984,7 @@ struct GC return i; } - mixin doLock!(); - BlkInfo rc = queryNoSync(p); - mixin doUnlock!(otherTime, numOthers); - - return rc; + return runLocked!(queryNoSync, otherTime, numOthers)(p); } @@ -1076,9 +1021,7 @@ struct GC return; } - mixin doLock!(); - checkNoSync(p); - mixin doUnlock!(otherTime, numOthers); + return runLocked!(checkNoSync, otherTime, numOthers)(p); } @@ -1133,9 +1076,11 @@ struct GC return; } - mixin doLock!(); - gcx.addRoot(p); - mixin doUnlock!(otherTime, numOthers); + static void go(Gcx* gcx, void* p) nothrow + { + gcx.addRoot(p); + } + return runLocked!(go, otherTime, numOthers)(gcx, p); } @@ -1149,9 +1094,11 @@ struct GC return; } - mixin doLock!(); - gcx.removeRoot(p); - mixin doUnlock!(otherTime, numOthers); + static void go(Gcx* gcx, void* p) nothrow + { + gcx.removeRoot(p); + } + return runLocked!(go, otherTime, numOthers)(gcx, p); } @@ -1182,13 +1129,11 @@ struct GC return; } - //debug(PRINTF) printf("+GC.addRange(p = %p, sz = 0x%zx), p + sz = %p\n", p, sz, p + sz); - - mixin doLock!(); - gcx.addRange(p, p + sz, ti); - mixin doUnlock!(otherTime, numOthers); - - //debug(PRINTF) printf("-GC.addRange()\n"); + static void go(Gcx* gcx, void* p, size_t sz, const TypeInfo ti) nothrow @nogc + { + gcx.addRange(p, p + sz, ti); + } + return runLocked!(go, otherTime, numOthers)(gcx, p, sz, ti); } @@ -1202,9 +1147,11 @@ struct GC return; } - mixin doLock!(); - gcx.removeRange(p); - mixin doUnlock!(otherTime, numOthers); + static void go(Gcx* gcx, void* p) nothrow @nogc + { + gcx.removeRange(p); + } + return runLocked!(go, otherTime, numOthers)(gcx, p); } /** @@ -1212,9 +1159,11 @@ struct GC */ void runFinalizers(in void[] segment) nothrow { - mixin doLock!(); - gcx.runFinalizers(segment); - mixin doUnlock!(otherTime, numOthers); + static void go(Gcx* gcx, in void[] segment) nothrow + { + gcx.runFinalizers(segment); + } + return runLocked!(go, otherTime, numOthers)(gcx, segment); } private auto rangeIterImpl(scope int delegate(ref Range) nothrow dg) nothrow From 725ede3e6577b4e77785c9264afd18292ff05997 Mon Sep 17 00:00:00 2001 From: k-hara Date: Mon, 8 Feb 2016 23:06:41 +0900 Subject: [PATCH 262/768] Remove pragma(inline, true) in runLocked function template. druntime is compiled with -inline by default, so it's needlessly limited by the compiler's inlining capability. Removing it would have no problem. --- src/gc/gc.d | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gc/gc.d b/src/gc/gc.d index ea281c34a2..2e6b5c738a 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -347,7 +347,6 @@ struct GC auto runLocked(alias func, alias time, alias count, Args...)(auto ref Args args) { - debug(PROFILE_API) {} else pragma(inline, true); debug(PROFILE_API) immutable tm = (GC.config.profile > 1 ? currTime.ticks : 0); gcLock.lock(); debug(PROFILE_API) immutable tm2 = (GC.config.profile > 1 ? currTime.ticks : 0); From 197f30ec9abbfc29d60a5238037f6f2e4f04228c Mon Sep 17 00:00:00 2001 From: Joakim Date: Sun, 31 Jan 2016 13:41:59 +0530 Subject: [PATCH 263/768] Replace all uses of predefined version Android with CRuntime_Bionic or linux, and use CRuntime_Glibc where appropriate. --- src/core/sys/posix/arpa/inet.d | 4 ++-- src/core/sys/posix/grp.d | 4 ++-- src/core/sys/posix/netinet/in_.d | 4 ++-- src/core/sys/posix/netinet/tcp.d | 4 ++-- src/core/sys/posix/pthread.d | 4 ++-- src/core/sys/posix/sched.d | 4 ++-- src/core/sys/posix/semaphore.d | 4 ++-- src/core/sys/posix/signal.d | 4 ++-- src/core/sys/posix/stdlib.d | 4 ++-- src/core/sys/posix/sys/mman.d | 8 ++++---- src/core/sys/posix/time.d | 4 ++-- src/core/sys/posix/unistd.d | 4 ++-- src/core/sys/posix/utime.d | 4 ++-- 13 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/core/sys/posix/arpa/inet.d b/src/core/sys/posix/arpa/inet.d index 394dc5c532..6763df249b 100644 --- a/src/core/sys/posix/arpa/inet.d +++ b/src/core/sys/posix/arpa/inet.d @@ -199,7 +199,7 @@ NOTE: The following must must be defined in core.sys.posix.arpa.inet to break INET6_ADDRSTRLEN // from core.sys.posix.netinet.in_ */ -version( linux ) +version( CRuntime_Glibc ) { enum INET6_ADDRSTRLEN = 46; } @@ -215,7 +215,7 @@ else version( Solaris ) { enum INET6_ADDRSTRLEN = 46; } -else version( Android ) +else version( CRuntime_Bionic ) { enum INET6_ADDRSTRLEN = 46; } diff --git a/src/core/sys/posix/grp.d b/src/core/sys/posix/grp.d index d96e292499..d930242775 100644 --- a/src/core/sys/posix/grp.d +++ b/src/core/sys/posix/grp.d @@ -38,7 +38,7 @@ group* getgrnam(in char*); group* getgrgid(gid_t); */ -version( linux ) +version( CRuntime_Glibc ) { struct group { @@ -78,7 +78,7 @@ else version( Solaris ) char** gr_mem; } } -else version( Android ) +else version( CRuntime_Bionic ) { struct group { diff --git a/src/core/sys/posix/netinet/in_.d b/src/core/sys/posix/netinet/in_.d index 330244c5ff..b8d54f15ba 100644 --- a/src/core/sys/posix/netinet/in_.d +++ b/src/core/sys/posix/netinet/in_.d @@ -976,7 +976,7 @@ else version( CRuntime_Bionic ) IPPROTO_RAW */ -version( linux ) +version( CRuntime_Glibc ) { enum uint IPPROTO_RAW = 255; } @@ -992,7 +992,7 @@ else version( Solaris ) { enum uint IPPROTO_RAW = 255; } -else version( Android ) +else version( linux ) { enum uint IPPROTO_RAW = 255; } diff --git a/src/core/sys/posix/netinet/tcp.d b/src/core/sys/posix/netinet/tcp.d index 13a9ee8dca..5c40915f45 100644 --- a/src/core/sys/posix/netinet/tcp.d +++ b/src/core/sys/posix/netinet/tcp.d @@ -26,7 +26,7 @@ extern (C): TCP_NODELAY */ -version( linux ) +version( CRuntime_Glibc ) { enum TCP_NODELAY = 1; } @@ -42,7 +42,7 @@ else version( Solaris ) { enum TCP_NODELAY = 1; } -else version( Android ) +else version( linux ) { enum TCP_NODELAY = 1; } diff --git a/src/core/sys/posix/pthread.d b/src/core/sys/posix/pthread.d index 3a9e7e9c21..074bd5cca9 100644 --- a/src/core/sys/posix/pthread.d +++ b/src/core/sys/posix/pthread.d @@ -988,7 +988,7 @@ int pthread_rwlockattr_getpshared(in pthread_rwlockattr_t*, int*); int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int); */ -version (linux) +version (CRuntime_Glibc) { int pthread_condattr_getpshared(in pthread_condattr_t*, int*); int pthread_condattr_setpshared(pthread_condattr_t*, int); @@ -1024,7 +1024,7 @@ else version (Solaris) int pthread_rwlockattr_getpshared(in pthread_rwlockattr_t*, int*); int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int); } -else version (Android) +else version (CRuntime_Bionic) { int pthread_condattr_getpshared(pthread_condattr_t*, int*); int pthread_condattr_setpshared(pthread_condattr_t*, int); diff --git a/src/core/sys/posix/sched.d b/src/core/sys/posix/sched.d index 3a2309aa7a..4d7639d4da 100644 --- a/src/core/sys/posix/sched.d +++ b/src/core/sys/posix/sched.d @@ -132,7 +132,7 @@ int sched_setscheduler(pid_t, int, in sched_param*); int sched_yield(); */ -version( linux ) +version( CRuntime_Glibc ) { int sched_yield(); } @@ -148,7 +148,7 @@ else version (Solaris) { int sched_yield(); } -else version (Android) +else version (CRuntime_Bionic) { int sched_yield(); } diff --git a/src/core/sys/posix/semaphore.d b/src/core/sys/posix/semaphore.d index b9bf5fb15b..2ce8f30f2c 100644 --- a/src/core/sys/posix/semaphore.d +++ b/src/core/sys/posix/semaphore.d @@ -125,7 +125,7 @@ int sem_wait(sem_t*); int sem_timedwait(sem_t*, in timespec*); */ -version( linux ) +version( CRuntime_Glibc ) { int sem_timedwait(sem_t*, in timespec*); } @@ -141,7 +141,7 @@ else version (Solaris) { int sem_timedwait(sem_t*, in timespec*); } -else version( Android ) +else version( CRuntime_Bionic ) { int sem_timedwait(sem_t*, in timespec*); } diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index aea2143e94..bdd66ce3be 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -2112,7 +2112,7 @@ int pthread_kill(pthread_t, int); int pthread_sigmask(int, in sigset_t*, sigset_t*); */ -version( linux ) +version( CRuntime_Glibc ) { int pthread_kill(pthread_t, int); int pthread_sigmask(int, in sigset_t*, sigset_t*); @@ -2132,7 +2132,7 @@ else version (Solaris) int pthread_kill(pthread_t, int); int pthread_sigmask(int, in sigset_t*, sigset_t*); } -else version( Android ) +else version( CRuntime_Bionic ) { int pthread_kill(pthread_t, int); int pthread_sigmask(int, in sigset_t*, sigset_t*); diff --git a/src/core/sys/posix/stdlib.d b/src/core/sys/posix/stdlib.d index 0ba223b7c6..189cef6dd1 100644 --- a/src/core/sys/posix/stdlib.d +++ b/src/core/sys/posix/stdlib.d @@ -104,7 +104,7 @@ int setenv(in char*, in char*, int); int unsetenv(in char*); */ -version( linux ) +version( CRuntime_Glibc ) { int setenv(in char*, in char*, int); int unsetenv(in char*); @@ -125,7 +125,7 @@ else version( FreeBSD ) void* valloc(size_t); // LEGACY non-standard } -else version( Android ) +else version( CRuntime_Bionic ) { int setenv(in char*, in char*, int); int unsetenv(in char*); diff --git a/src/core/sys/posix/sys/mman.d b/src/core/sys/posix/sys/mman.d index 783919da18..94a84eebcc 100644 --- a/src/core/sys/posix/sys/mman.d +++ b/src/core/sys/posix/sys/mman.d @@ -97,7 +97,7 @@ PROT_EXEC PROT_NONE */ -version( linux ) +version( CRuntime_Glibc ) { enum PROT_NONE = 0x0; enum PROT_READ = 0x1; @@ -125,7 +125,7 @@ else version (Solaris) enum PROT_WRITE = 0x02; enum PROT_EXEC = 0x04; } -else version (Android) +else version (CRuntime_Bionic) { enum PROT_NONE = 0x00; enum PROT_READ = 0x01; @@ -458,7 +458,7 @@ int mlock(in void*, size_t); int munlock(in void*, size_t); */ -version( linux ) +version( CRuntime_Glibc ) { int mlock(in void*, size_t); int munlock(in void*, size_t); @@ -478,7 +478,7 @@ else version (Solaris) int mlock(in void*, size_t); int munlock(in void*, size_t); } -else version (Android) +else version (CRuntime_Bionic) { int mlock(in void*, size_t); int munlock(in void*, size_t); diff --git a/src/core/sys/posix/time.d b/src/core/sys/posix/time.d index 41fa358a62..bd54f610fe 100644 --- a/src/core/sys/posix/time.d +++ b/src/core/sys/posix/time.d @@ -317,7 +317,7 @@ tm* gmtime_r(in time_t*, tm*); tm* localtime_r(in time_t*, tm*); */ -version( linux ) +version( CRuntime_Glibc ) { char* asctime_r(in tm*, char*); char* ctime_r(in time_t*, char*); @@ -345,7 +345,7 @@ else version (Solaris) tm* gmtime_r(in time_t*, tm*); tm* localtime_r(in time_t*, tm*); } -else version (Android) +else version (CRuntime_Bionic) { char* asctime_r(in tm*, char*); char* ctime_r(in time_t*, char*); diff --git a/src/core/sys/posix/unistd.d b/src/core/sys/posix/unistd.d index 98e4a6e9cc..221c1c10e6 100644 --- a/src/core/sys/posix/unistd.d +++ b/src/core/sys/posix/unistd.d @@ -1094,7 +1094,7 @@ else version( Solaris ) int fsync(int); */ -version( linux ) +version( CRuntime_Glibc ) { int fsync(int) @trusted; } @@ -1106,7 +1106,7 @@ else version( FreeBSD ) { int fsync(int) @trusted; } -else version( Android ) +else version( CRuntime_Bionic ) { int fsync(int) @trusted; } diff --git a/src/core/sys/posix/utime.d b/src/core/sys/posix/utime.d index 441ec5d66e..7a05d415a5 100644 --- a/src/core/sys/posix/utime.d +++ b/src/core/sys/posix/utime.d @@ -35,7 +35,7 @@ struct utimbuf int utime(in char*, in utimbuf*); */ -version( linux ) +version( CRuntime_Glibc ) { struct utimbuf { @@ -75,7 +75,7 @@ else version( Solaris ) int utime(in char*, in utimbuf*); } -else version( Android ) +else version( CRuntime_Bionic ) { struct utimbuf { From 054a95192afe5e880cb6987db69fc16abf645566 Mon Sep 17 00:00:00 2001 From: Joakim Date: Sun, 31 Jan 2016 13:49:12 +0530 Subject: [PATCH 264/768] For Android, pull in some functions and constants from bionic, exclude some Glibc definitions, and add __tls_get_addr for ARM. --- src/core/stdc/math.d | 6 +++-- src/core/sys/linux/config.d | 3 +++ src/core/sys/posix/netinet/in_.d | 1 + src/core/sys/posix/signal.d | 2 +- src/rt/backtrace/dwarf.d | 2 +- src/rt/sections_android.d | 38 +++++++++++++++++++++++--------- 6 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/core/stdc/math.d b/src/core/stdc/math.d index 9908749359..f8bdb95f57 100644 --- a/src/core/stdc/math.d +++ b/src/core/stdc/math.d @@ -1967,7 +1967,8 @@ else version(CRuntime_Bionic) double ldexp(double x, int exp); /// float ldexpf(float x, int exp); - // alias for double: real ldexpl(real x, int exp); + /// + real ldexpl(real x, int exp); /// double log(double x); @@ -2009,7 +2010,8 @@ else version(CRuntime_Bionic) double scalbn(double x, int n); /// float scalbnf(float x, int n); - // alias for double: real scalbnl(real x, int n); + /// + real scalbnl(real x, int n); /// double scalbln(double x, c_long n); diff --git a/src/core/sys/linux/config.d b/src/core/sys/linux/config.d index 3e04009cf7..e867ecaf3b 100644 --- a/src/core/sys/linux/config.d +++ b/src/core/sys/linux/config.d @@ -23,3 +23,6 @@ enum __USE_BSD = _BSD_SOURCE; enum __USE_SVID = _SVID_SOURCE; enum __USE_ATFILE = _ATFILE_SOURCE; enum __USE_GNU = _GNU_SOURCE; + +// Available in bionic from API 21 +version(CRuntime_Bionic) enum __WORDSIZE = 32; diff --git a/src/core/sys/posix/netinet/in_.d b/src/core/sys/posix/netinet/in_.d index b8d54f15ba..e145eb8a4c 100644 --- a/src/core/sys/posix/netinet/in_.d +++ b/src/core/sys/posix/netinet/in_.d @@ -265,6 +265,7 @@ else version( linux ) { INADDR_ANY = 0x00000000, INADDR_BROADCAST = 0xffffffff, + INADDR_LOOPBACK = 0x7f000001, INADDR_NONE = 0xFFFFFFFF } } diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index bdd66ce3be..4495c77d53 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -125,7 +125,7 @@ version( Solaris ) return sig; } } -else version( linux ) +else version( CRuntime_Glibc ) { private extern (C) nothrow @nogc { diff --git a/src/rt/backtrace/dwarf.d b/src/rt/backtrace/dwarf.d index 3bbbbb071c..11074faeb6 100644 --- a/src/rt/backtrace/dwarf.d +++ b/src/rt/backtrace/dwarf.d @@ -12,7 +12,7 @@ module rt.backtrace.dwarf; -version(linux) version = linux_or_freebsd; +version(CRuntime_Glibc) version = linux_or_freebsd; else version(FreeBSD) version = linux_or_freebsd; version(linux_or_freebsd): diff --git a/src/rt/sections_android.d b/src/rt/sections_android.d index 2c76fe59cc..090a95ab18 100644 --- a/src/rt/sections_android.d +++ b/src/rt/sections_android.d @@ -67,8 +67,8 @@ void initSections() auto mend = cast(immutable ModuleInfo**)&__stop_minfo; _sections.moduleGroup = ModuleGroup(mbeg[0 .. mend - mbeg]); - auto pbeg = cast(void*)&etext; - auto pend = cast(void*)&_end; + auto pbeg = cast(void*)&_tls_end; + auto pend = cast(void*)&__bss_end__; _sections._gcRanges[0] = pbeg[0 .. pend - pbeg]; } @@ -105,15 +105,32 @@ void scanTLSRanges(void[]* rng, scope void delegate(void* pbeg, void* pend) noth * the corresponding address in the TLS dynamic per-thread data. */ -// NB: the compiler mangles this function as '___tls_get_addr' even though it is extern(D) -extern(D) void* ___tls_get_addr( void* p ) +version(X86) { - debug(PRINTF) printf(" ___tls_get_addr input - %p\n", p); - immutable offset = cast(size_t)(p - cast(void*)&_tlsstart); - auto tls = getTLSBlockAlloc(); - assert(offset < tls.length); - return tls.ptr + offset; + // NB: the compiler mangles this function as '___tls_get_addr' + // even though it is extern(D) + extern(D) void* ___tls_get_addr( void* p ) + { + debug(PRINTF) printf(" ___tls_get_addr input - %p\n", p); + immutable offset = cast(size_t)(p - cast(void*)&_tlsstart); + auto tls = getTLSBlockAlloc(); + assert(offset < tls.length); + return tls.ptr + offset; + } +} +else version(ARM) +{ + extern(C) void* __tls_get_addr( void** p ) + { + debug(PRINTF) printf(" __tls_get_addr input - %p\n", *p); + immutable offset = cast(size_t)(*p - cast(void*)&_tlsstart); + auto tls = getTLSBlockAlloc(); + assert(offset < tls.length); + return tls.ptr + offset; + } } +else + static assert( false, "Android architecture not supported." ); private: @@ -163,8 +180,7 @@ extern(C) void* __start_minfo; void* __stop_minfo; - size_t etext; - size_t _end; + size_t __bss_end__; void* _tlsstart; void* _tlsend; From 2365d1b9dd27fec8bfc485085efb6cbfc37ec33e Mon Sep 17 00:00:00 2001 From: Nicolas F Date: Tue, 9 Feb 2016 10:44:58 +0100 Subject: [PATCH 265/768] core.bitops: Improve bitwise rotate functions --- src/core/bitop.d | 53 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/src/core/bitop.d b/src/core/bitop.d index fb8ce530be..f4f3db623a 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -708,36 +708,53 @@ version (D_InlineAsm_X86_64) } /** - * Bitwise rotates unsigned arithmetic types + * Bitwise rotates unsigned integer types */ -pure T rotl(T)(in T u, in uint s) - if (__traits(isArithmetic, T) && __traits(isUnsigned, T)) +pure T rol(T)(in T value, in uint count) + if (__traits(isIntegral, T) && __traits(isUnsigned, T)) { - return cast(T) ((u << s) | (u >> (-s & (T.sizeof * 8 - 1)))); + assert(count < 8 * T.sizeof); + return cast(T) ((value << count) | (value >> (-count & (T.sizeof * 8 - 1)))); } - -pure T rotr(T)(in T u, in uint s) - if (__traits(isArithmetic, T) && __traits(isUnsigned, T)) +/// ditto +pure T ror(T)(in T value, in uint count) + if (__traits(isIntegral, T) && __traits(isUnsigned, T)) +{ + assert(count < 8 * T.sizeof); + return cast(T) ((value >> count) | (value << (-count & (T.sizeof * 8 - 1)))); +} +/// ditto +pure T rol(uint count, T)(in T value) + if (__traits(isIntegral, T) && __traits(isUnsigned, T)) { - return cast(T) ((u >> s) | (u << (-s & (T.sizeof * 8 - 1)))); + static assert(count < 8 * T.sizeof); + return cast(T) ((value << count) | (value >> (-count & (T.sizeof * 8 - 1)))); +} +/// ditto +pure T ror(uint count, T)(in T value) + if (__traits(isIntegral, T) && __traits(isUnsigned, T)) +{ + static assert(count < 8 * T.sizeof); + return cast(T) ((value >> count) | (value << (-count & (T.sizeof * 8 - 1)))); } +/// unittest { ubyte a = 0b10101010U; ulong b = ulong.max; - assert(rotl(a, 1) == 0b01010101); - assert(rotr(a, 1) == 0b01010101); - assert(rotl(a, 3) == 0b01010101); - assert(rotr(a, 3) == 0b01010101); + assert(rol(a, 1) == 0b01010101); + assert(ror(a, 1) == 0b01010101); + assert(rol(a, 3) == 0b01010101); + assert(ror(a, 3) == 0b01010101); - assert(rotl(a, 0) == a); - assert(rotr(a, 0) == a); + assert(rol(a, 0) == a); + assert(ror(a, 0) == a); - assert(rotl(a, 16) == a); - assert(rotr(a, 16) == a); + assert(rol(b, 63) == ulong.max); + assert(ror(b, 63) == ulong.max); - assert(rotl(b, 64) == ulong.max); - assert(rotr(b, 64) == ulong.max); + assert(rol!3(a) == 0b01010101); + assert(ror!3(a) == 0b01010101); } From d164b0fc64011d10d51c6d55d607b84e15f5c1b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rcio=20Martins?= Date: Thu, 11 Feb 2016 15:54:14 +0000 Subject: [PATCH 266/768] Optimize GC mark phase implementation --- src/gc/gc.d | 145 ++++++++++++++++++++++++++++----------------- src/gc/pooltable.d | 2 +- 2 files changed, 91 insertions(+), 56 deletions(-) diff --git a/src/gc/gc.d b/src/gc/gc.d index 2e6b5c738a..85564e321b 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -2002,80 +2002,115 @@ struct Gcx Lagain: size_t pcache = 0; + // let dmd allocate a register for this.pools + auto pools = pooltable.pools; + const npools = pooltable.npools; + const minAddr = pooltable.minAddr; + const maxAddr = pooltable.maxAddr; + //printf("marking range: [%p..%p] (%#zx)\n", p1, p2, cast(size_t)p2 - cast(size_t)p1); - for (; p1 < p2 && stackPos != stack.length; p1++) + Lnext: for (; p1 < p2; p1++) { auto p = cast(byte *)(*p1); //if (log) debug(PRINTF) printf("\tmark %p\n", p); - if (p >= pooltable.minAddr && p < pooltable.maxAddr) + if (p >= minAddr && p < maxAddr) { if ((cast(size_t)p & ~cast(size_t)(PAGESIZE-1)) == pcache) continue; - auto pool = findPool(p); - if (pool) + Pool* pool = void; + if (npools > 1) { - size_t offset = cast(size_t)(p - pool.baseAddr); - size_t biti = void; - size_t pn = offset / PAGESIZE; - Bins bin = cast(Bins)pool.pagetable[pn]; - void* base = void; - - //debug(PRINTF) printf("\t\tfound pool %p, base=%p, pn = %zd, bin = %d, biti = x%x\n", pool, pool.baseAddr, pn, bin, biti); - - // Adjust bit to be at start of allocated memory block - if (bin < B_PAGE) + size_t low = 0; + size_t high = npools - 1; + while (true) { - // We don't care abou setting pointsToBase correctly - // because it's ignored for small object pools anyhow. - auto offsetBase = offset & notbinsize[bin]; - biti = offsetBase >> pool.shiftBy; - base = pool.baseAddr + offsetBase; - //debug(PRINTF) printf("\t\tbiti = x%x\n", biti); - - if (!pool.mark.set(biti) && !pool.noscan.test(biti)) - stack[stackPos++] = Range(base, base + binsize[bin]); + size_t mid = (low + high) >> 1; + pool = pools[mid]; + if (p < pool.baseAddr) + high = mid - 1; + else if (p >= pool.topAddr) + low = mid + 1; + else break; + + if (low > high) + continue Lnext; } - else if (bin == B_PAGE) - { - auto offsetBase = offset & notbinsize[bin]; - base = pool.baseAddr + offsetBase; - biti = offsetBase >> pool.shiftBy; - //debug(PRINTF) printf("\t\tbiti = x%x\n", biti); - - pcache = cast(size_t)p & ~cast(size_t)(PAGESIZE-1); - - // For the NO_INTERIOR attribute. This tracks whether - // the pointer is an interior pointer or points to the - // base address of a block. - bool pointsToBase = (base == sentinel_sub(p)); - if(!pointsToBase && pool.nointerior.nbits && pool.nointerior.test(biti)) - continue; + } + else + { + pool = pools[0]; + } - if (!pool.mark.set(biti) && !pool.noscan.test(biti)) - stack[stackPos++] = Range(base, base + pool.bPageOffsets[pn] * PAGESIZE); - } - else if (bin == B_PAGEPLUS) - { - pn -= pool.bPageOffsets[pn]; - base = pool.baseAddr + (pn * PAGESIZE); - biti = pn * (PAGESIZE >> pool.shiftBy); + size_t offset = cast(size_t)(p - pool.baseAddr); + size_t biti = void; + size_t pn = offset / PAGESIZE; + Bins bin = cast(Bins)pool.pagetable[pn]; + void* base = void; - pcache = cast(size_t)p & ~cast(size_t)(PAGESIZE-1); - if(pool.nointerior.nbits && pool.nointerior.test(biti)) - continue; + //debug(PRINTF) printf("\t\tfound pool %p, base=%p, pn = %zd, bin = %d, biti = x%x\n", pool, pool.baseAddr, pn, bin, biti); + + // Adjust bit to be at start of allocated memory block + if (bin < B_PAGE) + { + // We don't care abou setting pointsToBase correctly + // because it's ignored for small object pools anyhow. + auto offsetBase = offset & notbinsize[bin]; + biti = offsetBase >> pool.shiftBy; + base = pool.baseAddr + offsetBase; + //debug(PRINTF) printf("\t\tbiti = x%x\n", biti); + + if (!pool.mark.set(biti) && !pool.noscan.test(biti)) { + stack[stackPos++] = Range(base, base + binsize[bin]); + if (stackPos == stack.length) + break; + } + } + else if (bin == B_PAGE) + { + auto offsetBase = offset & notbinsize[bin]; + base = pool.baseAddr + offsetBase; + biti = offsetBase >> pool.shiftBy; + //debug(PRINTF) printf("\t\tbiti = x%x\n", biti); + + pcache = cast(size_t)p & ~cast(size_t)(PAGESIZE-1); + + // For the NO_INTERIOR attribute. This tracks whether + // the pointer is an interior pointer or points to the + // base address of a block. + bool pointsToBase = (base == sentinel_sub(p)); + if(!pointsToBase && pool.nointerior.nbits && pool.nointerior.test(biti)) + continue; - if (!pool.mark.set(biti) && !pool.noscan.test(biti)) - stack[stackPos++] = Range(base, base + pool.bPageOffsets[pn] * PAGESIZE); + if (!pool.mark.set(biti) && !pool.noscan.test(biti)) { + stack[stackPos++] = Range(base, base + pool.bPageOffsets[pn] * PAGESIZE); + if (stackPos == stack.length) + break; } - else - { - // Don't mark bits in B_FREE pages - assert(bin == B_FREE); + } + else if (bin == B_PAGEPLUS) + { + pn -= pool.bPageOffsets[pn]; + base = pool.baseAddr + (pn * PAGESIZE); + biti = pn * (PAGESIZE >> pool.shiftBy); + + pcache = cast(size_t)p & ~cast(size_t)(PAGESIZE-1); + if(pool.nointerior.nbits && pool.nointerior.test(biti)) continue; + + if (!pool.mark.set(biti) && !pool.noscan.test(biti)) { + stack[stackPos++] = Range(base, base + pool.bPageOffsets[pn] * PAGESIZE); + if (stackPos == stack.length) + break; } } + else + { + // Don't mark bits in B_FREE pages + assert(bin == B_FREE); + continue; + } } } diff --git a/src/gc/pooltable.d b/src/gc/pooltable.d index 3329aea10f..da2796dc98 100644 --- a/src/gc/pooltable.d +++ b/src/gc/pooltable.d @@ -158,7 +158,7 @@ nothrow: @property const(byte)* minAddr() pure const { return _minAddr; } @property const(byte)* maxAddr() pure const { return _maxAddr; } -private: +package: Pool** pools; size_t npools; byte* _minAddr, _maxAddr; From 9f5b08e9f20eef95eefaca300c0df96371f70577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rcio=20Martins?= Date: Sat, 13 Feb 2016 15:56:04 +0000 Subject: [PATCH 267/768] Use precomputed binary search upper bounds --- src/gc/gc.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gc/gc.d b/src/gc/gc.d index 85564e321b..9ef6e8ecd5 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -2004,7 +2004,7 @@ struct Gcx // let dmd allocate a register for this.pools auto pools = pooltable.pools; - const npools = pooltable.npools; + const highpool = pooltable.npools - 1; const minAddr = pooltable.minAddr; const maxAddr = pooltable.maxAddr; @@ -2020,10 +2020,10 @@ struct Gcx continue; Pool* pool = void; - if (npools > 1) + if (npools > 0) { size_t low = 0; - size_t high = npools - 1; + size_t high = highpool; while (true) { size_t mid = (low + high) >> 1; From 2f3dc8ee9530103212b70265b499e77eb83803a6 Mon Sep 17 00:00:00 2001 From: k-hara Date: Sun, 14 Feb 2016 22:02:31 +0900 Subject: [PATCH 268/768] Issue 15680 - TypeInfo broken for typeof(null) Add TypeInfo_n for typeid(typeof(null)). --- mak/SRCS | 1 + src/rt/typeinfo/ti_n.d | 58 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 src/rt/typeinfo/ti_n.d diff --git a/mak/SRCS b/mak/SRCS index 83b21378d1..595d7dfc3c 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -330,6 +330,7 @@ SRCS=\ src\rt\typeinfo\ti_int.d \ src\rt\typeinfo\ti_ireal.d \ src\rt\typeinfo\ti_long.d \ + src\rt\typeinfo\ti_n.d \ src\rt\typeinfo\ti_ptr.d \ src\rt\typeinfo\ti_real.d \ src\rt\typeinfo\ti_short.d \ diff --git a/src/rt/typeinfo/ti_n.d b/src/rt/typeinfo/ti_n.d new file mode 100644 index 0000000000..7c068109db --- /dev/null +++ b/src/rt/typeinfo/ti_n.d @@ -0,0 +1,58 @@ +/** + * TypeInfo support code. + * + * Copyright: Copyright Digital Mars 2016. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Kenji Hara + */ + +/* Copyright Digital Mars 2016. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module rt.typeinfo.ti_n; + +// typeof(null) + +class TypeInfo_n : TypeInfo +{ + override string toString() const @safe { return "typeof(null)"; } + + override size_t getHash(in void* p) const + { + return 0; + } + + override bool equals(in void* p1, in void* p2) const @trusted + { + //return *cast(typeof(null)*)p1 is *cast(typeof(null)*)p2; + return true; + } + + override int compare(in void* p1, in void* p2) const @trusted + { + //if (*cast(int*) p1 < *cast(int*) p2) + // return -1; + //else if (*cast(int*) p1 > *cast(int*) p2) + // return 1; + return 0; + } + + override @property size_t tsize() const + { + return typeof(null).sizeof; + } + + override const(void)[] initializer() const @trusted + { + return (cast(void*)null)[0 .. typeof(null).sizeof]; + } + + override void swap(void *p1, void *p2) const @trusted + { + //auto t = *cast(typeof(null)*)p1; + //*cast(typeof(null)*)p1 = *cast(typeof(null)*)p2; + //*cast(typeof(null)*)p2 = t; + } +} From 1453d88137a02e5c601629fbebed7196a9915d45 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 26 Feb 2016 19:38:28 -0800 Subject: [PATCH 269/768] fixes for reading EH info --- src/rt/dwarfeh.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d index 5207f2ac7c..c005cc104f 100644 --- a/src/rt/dwarfeh.d +++ b/src/rt/dwarfeh.d @@ -603,7 +603,7 @@ LsdaResult scanLSDA(const(ubyte)* lsda, _Unwind_Ptr ip, _Unwind_Exception_Class ubyte CallSiteFormat = *p++; - _Unwind_Ptr CallSiteTableSize = dw_pe_value(CallSiteFormat); + _Unwind_Ptr CallSiteTableSize = dw_pe_value(DW_EH_PE_uleb128); ///*printf(" CallSiteFormat = "); print_dw_pe(CallSiteFormat);*/ printf(" CallSiteTableSize = x%08llx\n", CallSiteTableSize); //printf(" Call Site Table\n"); From dfe81b7069d783104bef442112d3606b29d9c1c2 Mon Sep 17 00:00:00 2001 From: john-sevsk Date: Wed, 2 Mar 2016 14:35:10 +0300 Subject: [PATCH 270/768] odbc32.def Unicode functions Unicode versions of functions that accept strings arguments + add some missing functions + delete wrongly defined duplicates for SQLExecDirect and SQLGetData --- def/odbc32.def | 92 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 90 insertions(+), 2 deletions(-) diff --git a/def/odbc32.def b/def/odbc32.def index a4260e17cc..fa6ccbcea2 100644 --- a/def/odbc32.def +++ b/def/odbc32.def @@ -8,65 +8,153 @@ _PostODBCError@16 = PostODBCError _SQLAllocConnect@8 = SQLAllocConnect _SQLAllocEnv@4 = SQLAllocEnv _SQLAllocHandle@12 = SQLAllocHandle +_SQLAllocHandleStd@12 = SQLAllocHandleStd _SQLAllocStmt@8 = SQLAllocStmt _SQLBindCol@24 = SQLBindCol +_SQLBindParam@32 = SQLBindParam _SQLBindParameter@40 = SQLBindParameter _SQLBrowseConnect@24 = SQLBrowseConnect +_SQLBrowseConnectA@24 = SQLBrowseConnectA +_SQLBrowseConnectW@24 = SQLBrowseConnectW +_SQLBulkOperations@8 = SQLBulkOperations _SQLCancel@4 = SQLCancel +_SQLCancelHandle@8 = SQLCancelHandle +_SQLCloseCursor@4 = SQLCloseCursor _SQLColAttribute@28 = SQLColAttribute +_SQLColAttributeA@28 = SQLColAttributeA +_SQLColAttributeW@28 = SQLColAttributeW _SQLColAttributes@28 = SQLColAttributes +_SQLColAttributesA@28 = SQLColAttributesA +_SQLColAttributesW@28 = SQLColAttributesW _SQLColumnPrivileges@36 = SQLColumnPrivileges +_SQLColumnPrivilegesA@36 = SQLColumnPrivilegesA +_SQLColumnPrivilegesW@36 = SQLColumnPrivilegesW _SQLColumns@36 = SQLColumns +_SQLColumnsA@36 = SQLColumnsA +_SQLColumnsW@36 = SQLColumnsW _SQLConnect@28 = SQLConnect +_SQLConnectA@28 = SQLConnectA +_SQLConnectW@28 = SQLConnectW +_SQLCopyDesc@8 = SQLCopyDesc _SQLDataSources@32 = SQLDataSources +_SQLDataSourcesA@32 = SQLDataSourcesA +_SQLDataSourcesW@32 = SQLDataSourcesW _SQLDescribeCol@36 = SQLDescribeCol +_SQLDescribeColA@36 = SQLDescribeColA +_SQLDescribeColW@36 = SQLDescribeColW _SQLDescribeParam@24 = SQLDescribeParam _SQLDisconnect@4 = SQLDisconnect _SQLDriverConnect@32 = SQLDriverConnect +_SQLDriverConnectA@32 = SQLDriverConnectA +_SQLDriverConnectW@32 = SQLDriverConnectW _SQLDrivers@32 = SQLDrivers +_SQLDriversA@32 = SQLDriversA +_SQLDriversW@32 = SQLDriversW _SQLEndTran@12 = SQLEndTran _SQLError@32 = SQLError +_SQLErrorA@32 = SQLErrorA +_SQLErrorW@32 = SQLErrorW _SQLExecDirect@12 = SQLExecDirect -_SQLExecDirect@16 = SQLExecDirect +_SQLExecDirectA@12 = SQLExecDirectA +_SQLExecDirectW@12 = SQLExecDirectW _SQLExecute@4 = SQLExecute _SQLExtendedFetch@20 = SQLExtendedFetch _SQLFetch@4 = SQLFetch +_SQLFetchScroll@12 = SQLFetchScroll _SQLForeignKeys@52 = SQLForeignKeys +_SQLForeignKeysA@52 = SQLForeignKeysA +_SQLForeignKeysW@52 = SQLForeignKeysW _SQLFreeConnect@4 = SQLFreeConnect _SQLFreeEnv@4 = SQLFreeEnv _SQLFreeHandle@8 = SQLFreeHandle _SQLFreeStmt@8 = SQLFreeStmt +_SQLGetConnectAttr@20 = SQLGetConnectAttr +_SQLGetConnectAttrA@20 = SQLGetConnectAttrA +_SQLGetConnectAttrW@20 = SQLGetConnectAttrW _SQLGetConnectOption@12 = SQLGetConnectOption +_SQLGetConnectOptionA@12 = SQLGetConnectOptionA +_SQLGetConnectOptionW@12 = SQLGetConnectOptionW _SQLGetCursorName@16 = SQLGetCursorName +_SQLGetCursorNameA@16 = SQLGetCursorNameA +_SQLGetCursorNameW@16 = SQLGetCursorNameW _SQLGetData@24 = SQLGetData -_SQLGetData@28 = SQLGetData +_SQLGetDescField@24 = SQLGetDescField +_SQLGetDescFieldA@24 = SQLGetDescFieldA +_SQLGetDescFieldW@24 = SQLGetDescFieldW +_SQLGetDescRec@44 = SQLGetDescRec +_SQLGetDescRecA@44 = SQLGetDescRecA +_SQLGetDescRecW@44 = SQLGetDescRecW _SQLGetDiagField@28 = SQLGetDiagField +_SQLGetDiagFieldA@28 = SQLGetDiagFieldA +_SQLGetDiagFieldW@28 = SQLGetDiagFieldW _SQLGetDiagRec@32 = SQLGetDiagRec +_SQLGetDiagRecA@32 = SQLGetDiagRecA +_SQLGetDiagRecW@32 = SQLGetDiagRecW +_SQLGetEnvAttr@20 = SQLGetEnvAttr _SQLGetFunctions@12 = SQLGetFunctions _SQLGetInfo@20 = SQLGetInfo +_SQLGetInfoA@20 = SQLGetInfoA +_SQLGetInfoW@20 = SQLGetInfoW +_SQLGetStmtAttr@20 = SQLGetStmtAttr +_SQLGetStmtAttrA@20 = SQLGetStmtAttrA +_SQLGetStmtAttrW@20 = SQLGetStmtAttrW _SQLGetStmtOption@12 = SQLGetStmtOption _SQLGetTypeInfo@8 = SQLGetTypeInfo +_SQLGetTypeInfoA@8 = SQLGetTypeInfoA +_SQLGetTypeInfoW@8 = SQLGetTypeInfoW _SQLMoreResults@4 = SQLMoreResults _SQLNativeSql@24 = SQLNativeSql +_SQLNativeSqlA@24 = SQLNativeSqlA +_SQLNativeSqlW@24 = SQLNativeSqlW _SQLNumParams@8 = SQLNumParams _SQLNumResultCols@8 = SQLNumResultCols _SQLParamData@8 = SQLParamData _SQLParamOptions@12 = SQLParamOptions _SQLPrepare@12 = SQLPrepare +_SQLPrepareA@12 = SQLPrepareA +_SQLPrepareW@12 = SQLPrepareW _SQLPrimaryKeys@28 = SQLPrimaryKeys +_SQLPrimaryKeysA@28 = SQLPrimaryKeysA +_SQLPrimaryKeysW@28 = SQLPrimaryKeysW _SQLProcedureColumns@36 = SQLProcedureColumns +_SQLProcedureColumnsA@36 = SQLProcedureColumnsA +_SQLProcedureColumnsW@36 = SQLProcedureColumnsW _SQLProcedures@28 = SQLProcedures +_SQLProceduresA@28 = SQLProceduresA +_SQLProceduresW@28 = SQLProceduresW _SQLPutData@12 = SQLPutData _SQLRowCount@8 = SQLRowCount +_SQLSetConnectAttr@16 = SQLSetConnectAttr +_SQLSetConnectAttrA@16 = SQLSetConnectAttrA +_SQLSetConnectAttrW@16 = SQLSetConnectAttrW _SQLSetConnectOption@12 = SQLSetConnectOption +_SQLSetConnectOptionA@12 = SQLSetConnectOptionA +_SQLSetConnectOptionW@12 = SQLSetConnectOptionW _SQLSetCursorName@12 = SQLSetCursorName +_SQLSetCursorNameA@12 = SQLSetCursorNameA +_SQLSetCursorNameW@12 = SQLSetCursorNameW +_SQLSetDescField@20 = SQLSetDescField +_SQLSetDescFieldA@20 = SQLSetDescFieldA +_SQLSetDescFieldW@20 = SQLSetDescFieldW +_SQLSetDescRec@40 = SQLSetDescRec _SQLSetEnvAttr@16 = SQLSetEnvAttr _SQLSetParam@32 = SQLSetParam _SQLSetPos@16 = SQLSetPos _SQLSetScrollOptions@16 = SQLSetScrollOptions +_SQLSetStmtAttr@16 = SQLSetStmtAttr +_SQLSetStmtAttrA@16 = SQLSetStmtAttrA +_SQLSetStmtAttrW@16 = SQLSetStmtAttrW _SQLSetStmtOption@12 = SQLSetStmtOption _SQLSpecialColumns@40 = SQLSpecialColumns +_SQLSpecialColumnsA@40 = SQLSpecialColumnsA +_SQLSpecialColumnsW@40 = SQLSpecialColumnsW _SQLStatistics@36 = SQLStatistics +_SQLStatisticsA@36 = SQLStatisticsA +_SQLStatisticsW@36 = SQLStatisticsW _SQLTablePrivileges@28 = SQLTablePrivileges +_SQLTablePrivilegesA@28 = SQLTablePrivilegesA +_SQLTablePrivilegesW@28 = SQLTablePrivilegesW _SQLTables@36 = SQLTables +_SQLTablesA@36 = SQLTablesA +_SQLTablesW@36 = SQLTablesW _SQLTransact@12 = SQLTransact From 2db5144a57557338f5c57320c4cb34deecfb7ad0 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 1 Dec 2015 01:32:32 +0100 Subject: [PATCH 271/768] fix infinite loop in (cast()super).toString - the compiler doesn't recognize this as super call and will use dynamic dispatch leading to an infinite loop --- src/core/exception.d | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/core/exception.d b/src/core/exception.d index 7c43d625be..701dff2c30 100644 --- a/src/core/exception.d +++ b/src/core/exception.d @@ -227,7 +227,13 @@ class OutOfMemoryError : Error override string toString() const @trusted { - return msg.length ? (cast()super).toString() : "Memory allocation failed"; + return msg.length ? (cast()this).superToString() : "Memory allocation failed"; + } + + // kludge to call non-const super.toString + private string superToString() @trusted + { + return super.toString(); } } @@ -239,6 +245,7 @@ unittest assert(oome.line == __LINE__ - 2); assert(oome.next is null); assert(oome.msg == "Memory allocation failed"); + assert(oome.toString.length); } { @@ -269,7 +276,13 @@ class InvalidMemoryOperationError : Error override string toString() const @trusted { - return msg.length ? (cast()super).toString() : "Invalid memory operation"; + return msg.length ? (cast()this).superToString() : "Invalid memory operation"; + } + + // kludge to call non-const super.toString + private string superToString() @trusted + { + return super.toString(); } } @@ -281,6 +294,7 @@ unittest assert(oome.line == __LINE__ - 2); assert(oome.next is null); assert(oome.msg == "Invalid memory operation"); + assert(oome.toString.length); } { From aa0029b92ff31d6e762a625fa4a0f1f777ca354d Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Fri, 4 Mar 2016 23:01:52 +0100 Subject: [PATCH 272/768] Linux/PPC: Add errno constants. --- src/core/stdc/errno.d | 101 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/src/core/stdc/errno.d b/src/core/stdc/errno.d index d278d7d7af..0715e74a95 100644 --- a/src/core/stdc/errno.d +++ b/src/core/stdc/errno.d @@ -615,6 +615,107 @@ else version( linux ) enum EHWPOISON = 168; /// enum EDQUOT = 1133; /// } + else version(PPC) + { + enum EDEADLK = 35; /// + enum ENAMETOOLONG = 36; /// + enum ENOLCK = 37; /// + enum ENOSYS = 38; /// + enum ENOTEMPTY = 39; /// + enum ELOOP = 40; /// + enum EWOULDBLOCK = EAGAIN; /// + enum ENOMSG = 42; /// + enum EIDRM = 43; /// + enum ECHRNG = 44; /// + enum EL2NSYNC = 45; /// + enum EL3HLT = 46; /// + enum EL3RST = 47; /// + enum ELNRNG = 48; /// + enum EUNATCH = 49; /// + enum ENOCSI = 50; /// + enum EL2HLT = 51; /// + enum EBADE = 52; /// + enum EBADR = 53; /// + enum EXFULL = 54; /// + enum ENOANO = 55; /// + enum EBADRQC = 56; /// + enum EBADSLT = 57; /// + enum EDEADLOCK = EDEADLK; /// + enum EBFONT = 59; /// + enum ENOSTR = 60; /// + enum ENODATA = 61; /// + enum ETIME = 62; /// + enum ENOSR = 63; /// + enum ENONET = 64; /// + enum ENOPKG = 65; /// + enum EREMOTE = 66; /// + enum ENOLINK = 67; /// + enum EADV = 68; /// + enum ESRMNT = 69; /// + enum ECOMM = 70; /// + enum EPROTO = 71; /// + enum EMULTIHOP = 72; /// + enum EDOTDOT = 73; /// + enum EBADMSG = 74; /// + enum EOVERFLOW = 75; /// + enum ENOTUNIQ = 76; /// + enum EBADFD = 77; /// + enum EREMCHG = 78; /// + enum ELIBACC = 79; /// + enum ELIBBAD = 80; /// + enum ELIBSCN = 81; /// + enum ELIBMAX = 82; /// + enum ELIBEXEC = 83; /// + enum EILSEQ = 84; /// + enum ERESTART = 85; /// + enum ESTRPIPE = 86; /// + enum EUSERS = 87; /// + enum ENOTSOCK = 88; /// + enum EDESTADDRREQ = 89; /// + enum EMSGSIZE = 90; /// + enum EPROTOTYPE = 91; /// + enum ENOPROTOOPT = 92; /// + enum EPROTONOSUPPORT = 93; /// + enum ESOCKTNOSUPPORT = 94; /// + enum EOPNOTSUPP = 95; /// + enum EPFNOSUPPORT = 96; /// + enum EAFNOSUPPORT = 97; /// + enum EADDRINUSE = 98; /// + enum EADDRNOTAVAIL = 99; /// + enum ENETDOWN = 100; /// + enum ENETUNREACH = 101; /// + enum ENETRESET = 102; /// + enum ECONNABORTED = 103; /// + enum ECONNRESET = 104; /// + enum ENOBUFS = 105; /// + enum EISCONN = 106; /// + enum ENOTCONN = 107; /// + enum ESHUTDOWN = 108; /// + enum ETOOMANYREFS = 109; /// + enum ETIMEDOUT = 110; /// + enum ECONNREFUSED = 111; /// + enum EHOSTDOWN = 112; /// + enum EHOSTUNREACH = 113; /// + enum EALREADY = 114; /// + enum EINPROGRESS = 115; /// + enum ESTALE = 116; /// + enum EUCLEAN = 117; /// + enum ENOTNAM = 118; /// + enum ENAVAIL = 119; /// + enum EISNAM = 120; /// + enum EREMOTEIO = 121; /// + enum EDQUOT = 122; /// + enum ENOMEDIUM = 123; /// + enum EMEDIUMTYPE = 124; /// + enum ECANCELED = 125; /// + enum ENOKEY = 126; /// + enum EKEYEXPIRED = 127; /// + enum EKEYREVOKED = 128; /// + enum EKEYREJECTED = 129; /// + enum EOWNERDEAD = 130; /// + enum ERFKILL = 132; /// + enum EHWPOISON = 133; /// + } else version(PPC64) { enum EDEADLK = 35; /// From 38f6434ddbd9a5c2af0fe9cb93ea0da18b0d4e57 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 8 Nov 2015 20:23:20 +0100 Subject: [PATCH 273/768] spinlock for GC - less overhead than pthread_mutex - uses test and test-and-set algorithm with configurable backoff --- mak/COPY | 1 + mak/SRCS | 1 + src/core/internal/spinlock.d | 103 +++++++++++++++++++++++++++++++++++ src/core/thread.d | 6 +- src/gc/gc.d | 24 +------- win32.mak | 3 + win64.mak | 3 + 7 files changed, 116 insertions(+), 25 deletions(-) create mode 100644 src/core/internal/spinlock.d diff --git a/mak/COPY b/mak/COPY index 1df2e86788..c74ad6d250 100644 --- a/mak/COPY +++ b/mak/COPY @@ -18,6 +18,7 @@ COPY=\ $(IMPDIR)\core\internal\abort.d \ $(IMPDIR)\core\internal\convert.d \ $(IMPDIR)\core\internal\hash.d \ + $(IMPDIR)\core\internal\spinlock.d \ $(IMPDIR)\core\internal\string.d \ $(IMPDIR)\core\internal\traits.d \ \ diff --git a/mak/SRCS b/mak/SRCS index 9a54c8c41b..65ccba63f5 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -19,6 +19,7 @@ SRCS=\ src\core\internal\abort.d \ src\core\internal\convert.d \ src\core\internal\hash.d \ + src\core\internal\spinlock.d \ src\core\internal\string.d \ src\core\internal\traits.d \ \ diff --git a/src/core/internal/spinlock.d b/src/core/internal/spinlock.d new file mode 100644 index 0000000000..fb689dc561 --- /dev/null +++ b/src/core/internal/spinlock.d @@ -0,0 +1,103 @@ +/** + * SpinLock for runtime internal usage. + * + * Copyright: Copyright Digital Mars 2015 -. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Martin Nowak + * Source: $(DRUNTIMESRC core/internal/_spinlock.d) + */ +module core.internal.spinlock; + +import core.atomic, core.thread; + +shared struct SpinLock +{ + /// for how long is the lock usually contended + enum Contention : ubyte + { + brief, + medium, + lengthy, + } + +@trusted @nogc nothrow: + this(Contention contention) + { + this.contention = contention; + } + + void lock() + { + if (cas(&val, size_t(0), size_t(1))) + return; + // Try to reduce the chance of another cas failure + // TTAS lock (https://en.wikipedia.org/wiki/Test_and_test-and-set) + immutable step = 1 << contention; + while (true) + { + for (size_t n; atomicLoad!(MemoryOrder.raw)(val); n += step) + yield(n); + if (cas(&val, size_t(0), size_t(1))) + return; + } + } + + void unlock() + { + atomicStore!(MemoryOrder.rel)(val, size_t(0)); + } + + /// yield with backoff + void yield(size_t k) + { + if (k < pauseThresh) + return pause(); + else if (k < 32) + return Thread.yield(); + Thread.sleep(1.msecs); + } + +private: + version (D_InlineAsm_X86) + enum X86 = true; + else version (D_InlineAsm_X86_64) + enum X86 = true; + else + enum X86 = false; + + static if (X86) + { + enum pauseThresh = 16; + void pause() + { + asm @trusted @nogc nothrow + { + // pause instruction + rep; + nop; + } + } + } + else + { + enum pauseThresh = 4; + void pause() + { + } + } + + size_t val; + Contention contention; +} + +// aligned to cacheline to avoid false sharing +shared align(64) struct AlignedSpinLock +{ + this(SpinLock.Contention contention) + { + impl = shared(SpinLock)(contention); + } + + SpinLock impl; + alias impl this; +} diff --git a/src/core/thread.d b/src/core/thread.d index 7d31ee3533..043a185321 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1091,7 +1091,7 @@ class Thread * * ------------------------------------------------------------------------ */ - static void sleep( Duration val ) nothrow + static void sleep( Duration val ) @nogc nothrow in { assert( !val.isNegative ); @@ -1134,7 +1134,7 @@ class Thread if( !nanosleep( &tin, &tout ) ) return; if( errno != EINTR ) - throw new ThreadError( "Unable to sleep for the specified duration" ); + assert(0, "Unable to sleep for the specified duration"); tin = tout; } } @@ -1144,7 +1144,7 @@ class Thread /** * Forces a context switch to occur away from the calling thread. */ - static void yield() nothrow + static void yield() @nogc nothrow { version( Windows ) SwitchToThread(); diff --git a/src/gc/gc.d b/src/gc/gc.d index 9ef6e8ecd5..815049b708 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -48,7 +48,6 @@ import rt.util.container.treap; import cstdlib = core.stdc.stdlib : calloc, free, malloc, realloc; import core.stdc.string : memcpy, memset, memmove; import core.bitop; -import core.sync.mutex; import core.thread; static import core.memory; private alias BlkAttr = core.memory.GC.BlkAttr; @@ -256,20 +255,6 @@ debug (LOGGING) const uint GCVERSION = 1; // increment every time we change interface // to GC. -// This just makes Mutex final to de-virtualize member function calls. -final class GCMutex : Mutex -{ - final override void lock() nothrow @trusted @nogc - { - super.lock_nothrow(); - } - - final override void unlock() nothrow @trusted @nogc - { - super.unlock_nothrow(); - } -} - struct GC { // For passing to debug code (not thread safe) @@ -280,10 +265,8 @@ struct GC Gcx *gcx; // implementation - // We can't allocate a Mutex on the GC heap because we are the GC. - // Store it in the static data segment instead. - __gshared GCMutex gcLock; // global lock - __gshared void[__traits(classInstanceSize, GCMutex)] mutexStorage; + import core.internal.spinlock; + static gcLock = shared(AlignedSpinLock)(SpinLock.Contention.lengthy); __gshared Config config; @@ -291,9 +274,6 @@ struct GC { config.initialize(); - mutexStorage[] = typeid(GCMutex).initializer[]; - gcLock = cast(GCMutex) mutexStorage.ptr; - gcLock.__ctor(); gcx = cast(Gcx*)cstdlib.calloc(1, Gcx.sizeof); if (!gcx) onOutOfMemoryErrorNoGC(); diff --git a/win32.mak b/win32.mak index 098ea6bd35..358668b7e1 100644 --- a/win32.mak +++ b/win32.mak @@ -268,6 +268,9 @@ $(IMPDIR)\core\internal\convert.d : src\core\internal\convert.d $(IMPDIR)\core\internal\hash.d : src\core\internal\hash.d copy $** $@ +$(IMPDIR)\core\internal\spinlock.d : src\core\internal\spinlock.d + copy $** $@ + $(IMPDIR)\core\internal\string.d : src\core\internal\string.d copy $** $@ diff --git a/win64.mak b/win64.mak index 02b6af9f82..69f3ba701d 100644 --- a/win64.mak +++ b/win64.mak @@ -276,6 +276,9 @@ $(IMPDIR)\core\internal\convert.d : src\core\internal\convert.d $(IMPDIR)\core\internal\hash.d : src\core\internal\hash.d copy $** $@ +$(IMPDIR)\core\internal\spinlock.d : src\core\internal\spinlock.d + copy $** $@ + $(IMPDIR)\core\internal\string.d : src\core\internal\string.d copy $** $@ From f388297281f5cb839a11c2d8a482d644cfcd6c3a Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 1 Dec 2015 01:08:03 +0100 Subject: [PATCH 274/768] avoid any GC deadlocks - always use runLocked which now unlocks on error - check for recursive GC entrance during finalization inFinalizer can be thread local b/c we're finalizing in the same thread that currently holds the lock --- src/gc/gc.d | 134 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 77 insertions(+), 57 deletions(-) diff --git a/src/gc/gc.d b/src/gc/gc.d index 815049b708..16aec1e231 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -135,7 +135,7 @@ private // Declared as an extern instead of importing core.exception // to avoid inlining - see issue 13725. - void onInvalidMemoryOperationError() nothrow; + void onInvalidMemoryOperationError() @nogc nothrow; void onOutOfMemoryErrorNoGC() @nogc nothrow; } @@ -267,6 +267,15 @@ struct GC import core.internal.spinlock; static gcLock = shared(AlignedSpinLock)(SpinLock.Contention.lengthy); + static bool inFinalizer; + + // lock GC, throw InvalidMemoryOperationError on recursive locking during finalization + static void lockNR() @nogc nothrow + { + if (inFinalizer) + onInvalidMemoryOperationError(); + gcLock.lock(); + } __gshared Config config; @@ -308,10 +317,12 @@ struct GC */ void enable() { - gcLock.lock(); - scope(exit) gcLock.unlock(); - assert(gcx.disabled > 0); - gcx.disabled--; + static void go(Gcx* gcx) nothrow + { + assert(gcx.disabled > 0); + gcx.disabled--; + } + runLocked!(go, otherTime, numOthers)(gcx); } @@ -320,15 +331,38 @@ struct GC */ void disable() { - gcLock.lock(); - scope(exit) gcLock.unlock(); - gcx.disabled++; + static void go(Gcx* gcx) nothrow + { + gcx.disabled++; + } + runLocked!(go, otherTime, numOthers)(gcx); + } + + auto runLocked(alias func, Args...)(auto ref Args args) + { + debug(PROFILE_API) immutable tm = (GC.config.profile > 1 ? currTime.ticks : 0); + lockNR(); + scope (failure) gcLock.unlock(); + debug(PROFILE_API) immutable tm2 = (GC.config.profile > 1 ? currTime.ticks : 0); + + static if (is(typeof(func(args)) == void)) + func(args); + else + auto res = func(args); + + debug(PROFILE_API) if (GC.config.profile > 1) + lockTime += tm2 - tm; + gcLock.unlock(); + + static if (!is(typeof(func(args)) == void)) + return res; } auto runLocked(alias func, alias time, alias count, Args...)(auto ref Args args) { debug(PROFILE_API) immutable tm = (GC.config.profile > 1 ? currTime.ticks : 0); - gcLock.lock(); + lockNR(); + scope (failure) gcLock.unlock(); debug(PROFILE_API) immutable tm2 = (GC.config.profile > 1 ? currTime.ticks : 0); static if (is(typeof(func(args)) == void)) @@ -474,9 +508,6 @@ struct GC assert(gcx); //debug(PRINTF) printf("gcx.self = %x, pthread_self() = %x\n", gcx.self, pthread_self()); - if (gcx.running) - onInvalidMemoryOperationError(); - auto p = gcx.alloc(size + SENTINEL_EXTRA, alloc_size, bits); if (!p) onOutOfMemoryErrorNoGC(); @@ -544,9 +575,6 @@ struct GC // private void *reallocNoSync(void *p, size_t size, ref uint bits, ref size_t alloc_size, const TypeInfo ti = null) nothrow { - if (gcx.running) - onInvalidMemoryOperationError(); - if (!size) { if (p) { freeNoSync(p); @@ -708,9 +736,6 @@ struct GC } body { - if (gcx.running) - onInvalidMemoryOperationError(); - //debug(PRINTF) printf("GC::extend(p = %p, minsize = %zu, maxsize = %zu)\n", p, minsize, maxsize); debug (SENTINEL) { @@ -767,10 +792,7 @@ struct GC return 0; } - gcLock.lock(); - auto rc = reserveNoSync(size); - gcLock.unlock(); - return rc; + return runLocked!(reserveNoSync, otherTime, numOthers)(size); } @@ -782,9 +804,6 @@ struct GC assert(size != 0); assert(gcx); - if (gcx.running) - onInvalidMemoryOperationError(); - return gcx.reserve(size); } @@ -811,9 +830,6 @@ struct GC debug(PRINTF) printf("Freeing %p\n", cast(size_t) p); assert (p); - if (gcx.running) - onInvalidMemoryOperationError(); - Pool* pool; size_t pagenum; Bins bin; @@ -1083,10 +1099,11 @@ struct GC private auto rootIterImpl(scope int delegate(ref Root) nothrow dg) nothrow { - gcLock.lock(); - auto res = gcx.roots.opApply(dg); - gcLock.unlock(); - return res; + static int go(ref Treap!(Root) roots, scope int delegate(ref Root) nothrow dg) nothrow + { + return roots.opApply(dg); + } + return runLocked!(go, otherTime, numOthers)(gcx.roots, dg); } /** @@ -1147,10 +1164,11 @@ struct GC private auto rangeIterImpl(scope int delegate(ref Range) nothrow dg) nothrow { - gcLock.lock(); - auto res = gcx.ranges.opApply(dg); - gcLock.unlock(); - return res; + static int go(ref Treap!(Range) ranges, scope int delegate(ref Range) nothrow dg) nothrow + { + return ranges.opApply(dg); + } + return runLocked!(go, otherTime, numOthers)(gcx.ranges, dg); } /** @@ -1169,15 +1187,14 @@ struct GC size_t fullCollect() nothrow { debug(PRINTF) printf("GC.fullCollect()\n"); - size_t result; // Since a finalizer could launch a new thread, we always need to lock // when collecting. + static size_t go(Gcx* gcx) nothrow { - gcLock.lock(); - result = gcx.fullcollect(); - gcLock.unlock(); + return gcx.fullcollect(); } + immutable result = runLocked!go(gcx); version (none) { @@ -1200,11 +1217,11 @@ struct GC { // Since a finalizer could launch a new thread, we always need to lock // when collecting. + static size_t go(Gcx* gcx) nothrow { - gcLock.lock(); - gcx.fullcollect(true); - gcLock.unlock(); + return gcx.fullcollect(true); } + runLocked!go(gcx); } @@ -1213,9 +1230,11 @@ struct GC */ void minimize() nothrow { - gcLock.lock(); - gcx.minimize(); - gcLock.unlock(); + static void go(Gcx* gcx) nothrow + { + gcx.minimize(); + } + runLocked!(go, otherTime, numOthers)(gcx); } @@ -1225,9 +1244,7 @@ struct GC */ void getStats(out GCStats stats) nothrow { - gcLock.lock(); - getStatsNoSync(stats); - gcLock.unlock(); + return runLocked!(getStatsNoSync, otherTime, numOthers)(stats); } @@ -1352,7 +1369,6 @@ struct Gcx bool log; // turn on logging debug(INVARIANT) bool initialized; - bool running; uint disabled; // turn off collections if >0 import gc.pooltable; @@ -1523,6 +1539,9 @@ struct Gcx */ void runFinalizers(in void[] segment) nothrow { + GC.inFinalizer = true; + scope (failure) GC.inFinalizer = false; + foreach (pool; pooltable[0 .. npools]) { if (!pool.finals.nbits) continue; @@ -1538,6 +1557,7 @@ struct Gcx spool.runFinalizers(segment); } } + GC.inFinalizer = false; } Pool* findPool(void* p) pure nothrow @@ -2397,10 +2417,6 @@ struct Gcx debug(COLLECT_PRINTF) printf("Gcx.fullcollect()\n"); //printf("\tpool address range = %p .. %p\n", minAddr, maxAddr); - if (running) - onInvalidMemoryOperationError(); - running = true; - thread_suspendAll(); prepare(); @@ -2427,7 +2443,13 @@ struct Gcx start = stop; } - immutable freedLargePages = sweep(); + GC.inFinalizer = true; + size_t freedLargePages=void; + { + scope (failure) GC.inFinalizer = false; + freedLargePages = sweep(); + GC.inFinalizer = false; + } if (GC.config.profile) { @@ -2445,8 +2467,6 @@ struct Gcx ++numCollections; } - running = false; // only clear on success - updateCollectThresholds(); return freedLargePages + freedSmallPages; From 3a43adb9497fdf19ccab27440a30f7c27b307b24 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 1 Dec 2015 02:02:09 +0100 Subject: [PATCH 275/768] workaround recursive GC calls for traces created in finalizers - all trace handlers should be @nogc but that's currently out of scope b/c it requires to rewrite all backtrace and demangle code --- src/core/memory.d | 2 ++ src/core/runtime.d | 5 +++++ src/gc/proxy.d | 11 +++++++++++ src/gcstub/gc.d | 11 +++++++++++ 4 files changed, 29 insertions(+) diff --git a/src/core/memory.d b/src/core/memory.d index c222831ac8..40b3a8f8d7 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -145,6 +145,8 @@ private extern (C) void gc_removeRoot( in void* p ) nothrow; extern (C) void gc_removeRange( in void* p ) nothrow @nogc; extern (C) void gc_runFinalizers( in void[] segment ); + + package extern (C) bool gc_inFinalizer(); } diff --git a/src/core/runtime.d b/src/core/runtime.d index 03fd4b2605..cd9c0fe2ef 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -494,6 +494,11 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) else version( Solaris ) import core.sys.solaris.execinfo; + // avoid recursive GC calls in finalizer, trace handlers should be made @nogc instead + import core.memory : gc_inFinalizer; + if (gc_inFinalizer) + return null; + //printf("runtime.defaultTraceHandler()\n"); static if( __traits( compiles, backtrace ) ) { diff --git a/src/gc/proxy.d b/src/gc/proxy.d index e8d96cdc3f..eb0f7ee275 100644 --- a/src/gc/proxy.d +++ b/src/gc/proxy.d @@ -60,6 +60,8 @@ private void function(void*) gc_removeRoot; void function(void*) gc_removeRange; void function(in void[]) gc_runFinalizers; + + bool function() gc_inFinalizer; } } @@ -96,6 +98,8 @@ private pthis.gc_removeRoot = &gc_removeRoot; pthis.gc_removeRange = &gc_removeRange; pthis.gc_runFinalizers = &gc_runFinalizers; + + pthis.gc_inFinalizer = &gc_inFinalizer; } } @@ -307,6 +311,13 @@ extern (C) return proxy.gc_runFinalizers( segment ); } + bool gc_inFinalizer() nothrow + { + if( proxy is null ) + return _gc.inFinalizer; + return proxy.gc_inFinalizer(); + } + Proxy* gc_getProxy() nothrow { return &pthis; diff --git a/src/gcstub/gc.d b/src/gcstub/gc.d index 534e9bf7a7..b357a8074e 100644 --- a/src/gcstub/gc.d +++ b/src/gcstub/gc.d @@ -67,6 +67,8 @@ private extern (C) void function(void*) gc_removeRoot; extern (C) void function(void*) gc_removeRange; extern (C) void function(in void[]) gc_runFinalizers; + + extern (C) bool function() gc_inFinalizer; } __gshared Proxy pthis; @@ -102,6 +104,8 @@ private pthis.gc_removeRoot = &gc_removeRoot; pthis.gc_removeRange = &gc_removeRange; pthis.gc_runFinalizers = &gc_runFinalizers; + + pthis.gc_inFinalizer = &gc_inFinalizer; } __gshared void** roots = null; @@ -349,6 +353,13 @@ extern (C) void gc_runFinalizers( in void[] segment ) proxy.gc_runFinalizers( segment ); } +extern (C) bool gc_inFinalizer() +{ + if( proxy !is null ) + return proxy.gc_inFinalizer(); + return false; +} + extern (C) Proxy* gc_getProxy() { return &pthis; From c94547af8d55e1490b51aac358171b761da6a657 Mon Sep 17 00:00:00 2001 From: Johannes Pfau Date: Sun, 6 Mar 2016 10:21:07 +0100 Subject: [PATCH 276/768] Fix epoll_event for non-X86 architectures X86 is the only architecture where epoll_event is actually packed. All other architectures define epoll_event as a normal struct. See also: http://bugzilla.gdcproject.org/show_bug.cgi?id=214 --- src/core/sys/linux/epoll.d | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/core/sys/linux/epoll.d b/src/core/sys/linux/epoll.d index 7b31c8dab9..4b5387bc6b 100644 --- a/src/core/sys/linux/epoll.d +++ b/src/core/sys/linux/epoll.d @@ -45,11 +45,35 @@ enum EPOLL_CTL_MOD = 3, // Change file descriptor epoll_event structure. } -align(1) struct epoll_event +version (X86) { -align(1): - uint events; - epoll_data_t data; + align(1) struct epoll_event + { + align(1): + uint events; + epoll_data_t data; + } +} +else version (X86_64) +{ + align(1) struct epoll_event + { + align(1): + uint events; + epoll_data_t data; + } +} +else version (ARM) +{ + struct epoll_event + { + uint events; + epoll_data_t data; + } +} +else +{ + static assert(false, "Platform not supported"); } union epoll_data_t From 224e13582344709550d02281dba9111092f4eec6 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sun, 6 Mar 2016 21:45:12 +0100 Subject: [PATCH 277/768] Add missing epoll_event structures. These are most of the missing definitions. I don't have the MIPS and SPARC definitions at hand. --- src/core/sys/linux/epoll.d | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/core/sys/linux/epoll.d b/src/core/sys/linux/epoll.d index 4b5387bc6b..c22f39184b 100644 --- a/src/core/sys/linux/epoll.d +++ b/src/core/sys/linux/epoll.d @@ -71,6 +71,46 @@ else version (ARM) epoll_data_t data; } } +else version (AArch64) +{ + struct epoll_event + { + uint events; + epoll_data_t data; + } +} +else version (PPC) +{ + struct epoll_event + { + uint events; + epoll_data_t data; + } +} +else version (PPC64) +{ + struct epoll_event + { + uint events; + epoll_data_t data; + } +} +else version (MIPS64) +{ + struct epoll_event + { + uint events; + epoll_data_t data; + } +} +else version (SystemZ) +{ + struct epoll_event + { + uint events; + epoll_data_t data; + } +} else { static assert(false, "Platform not supported"); From 92d3d4c714dad950aae83029a7e0296a5c7096fb Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 6 Mar 2016 18:33:19 +0100 Subject: [PATCH 278/768] use timelimit to kill deadlocked tests - restrict any test to 10s - don't trigger the 1h timeout for the auto-tester - get a make error message w/ a specific test on timeout failure - the timelimit program is used b/c the auto-tester already relies on it --- posix.mak | 8 ++++++-- test/common.mak | 3 ++- test/exceptions/Makefile | 4 ++-- test/init_fini/Makefile | 2 +- test/profile/Makefile | 6 +++--- test/shared/Makefile | 4 ++-- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/posix.mak b/posix.mak index c27c2bce3a..91c30606ba 100644 --- a/posix.mak +++ b/posix.mak @@ -97,6 +97,9 @@ LINKDL=$(if $(findstring $(OS),linux),-L-ldl,) MAKEFILE = $(firstword $(MAKEFILE_LIST)) +# use timelimit to avoid deadlocks if available +TIMELIMIT:=$(if $(shell which timelimit 2>/dev/null || true),timelimit -t 10 ,) + ######################## All of'em ############################## ifneq (,$(SHARED)) @@ -239,7 +242,7 @@ $(ROOT)/unittest/% : $(ROOT)/unittest/test_runner # make the file very old so it builds and runs again if it fails @touch -t 197001230123 $@ # run unittest in its own directory - $(QUIET)$(RUN) $< $(call moduleName,$*) + $(QUIET)$(TIMELIMIT)$< $(call moduleName,$*) # succeeded, render the file new again @touch $@ @@ -248,7 +251,8 @@ test/shared/.run: $(DRUNTIMESO) test/%/.run: test/%/Makefile $(QUIET)$(MAKE) -C test/$* MODEL=$(MODEL) OS=$(OS) DMD=$(abspath $(DMD)) BUILD=$(BUILD) \ - DRUNTIME=$(abspath $(DRUNTIME)) DRUNTIMESO=$(abspath $(DRUNTIMESO)) QUIET=$(QUIET) LINKDL=$(LINKDL) + DRUNTIME=$(abspath $(DRUNTIME)) DRUNTIMESO=$(abspath $(DRUNTIMESO)) LINKDL=$(LINKDL) \ + QUIET=$(QUIET) TIMELIMIT='$(TIMELIMIT)' #################### test for undesired white spaces ########################## MANIFEST = $(shell git ls-tree --name-only -r HEAD) diff --git a/test/common.mak b/test/common.mak index 4a9be5177b..67789ffd94 100644 --- a/test/common.mak +++ b/test/common.mak @@ -5,8 +5,9 @@ BUILD:= DMD:= DRUNTIME:= DRUNTIMESO:= -QUIET:= LINKDL:= +QUIET:= +TIMELIMIT:= LDL:=$(subst -L,,$(LINKDL)) # -ldl SRC:=src diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index 19372218dc..dd81d99523 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -16,7 +16,7 @@ all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) $(ROOT)/line_trace.done: $(ROOT)/line_trace @echo Testing line_trace - $(QUIET)$(ROOT)/line_trace $(RUN_ARGS) > $(ROOT)/line_trace.output + $(QUIET)$(TIMELIMIT)$(ROOT)/line_trace $(RUN_ARGS) > $(ROOT)/line_trace.output $(QUIET)$(SED) "s/\[0x[0-9a-f]*\]/\[ADDR\]/g" $(ROOT)/line_trace.output | $(DIFF) line_trace.exp - @rm -f $(ROOT)/line_trace.output @touch $@ @@ -26,7 +26,7 @@ $(ROOT)/unittest_assert.done: STDERR_EXP="unittest_assert msg" $(ROOT)/invalid_memory_operation.done: STDERR_EXP="InvalidMemoryOperationError" $(ROOT)/%.done: $(ROOT)/% @echo Testing $* - $(QUIET)$(ROOT)/$* $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) + $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) @touch $@ $(ROOT)/unittest_assert: DFLAGS+=-unittest diff --git a/test/init_fini/Makefile b/test/init_fini/Makefile index b987187fc6..20ccdbd8a6 100644 --- a/test/init_fini/Makefile +++ b/test/init_fini/Makefile @@ -7,7 +7,7 @@ all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) $(ROOT)/%.done: $(ROOT)/% @echo Testing $* - $(QUIET)$(ROOT)/$* $(RUN_ARGS) + $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS) @touch $@ $(ROOT)/%: $(SRC)/%.d diff --git a/test/profile/Makefile b/test/profile/Makefile index 9d379f9e32..69eaf87663 100644 --- a/test/profile/Makefile +++ b/test/profile/Makefile @@ -12,7 +12,7 @@ $(ROOT)/profile.done: DFLAGS+=-profile $(ROOT)/profile.done: $(ROOT)/%.done: $(ROOT)/% @echo Testing $* @rm -f $(ROOT)/mytrace.log $(ROOT)/mytrace.def - $(QUIET)$(ROOT)/$* $(ROOT)/mytrace.log $(ROOT)/mytrace.def + $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(ROOT)/mytrace.log $(ROOT)/mytrace.def $(QUIET)$(GREP) -q '1 .*_Dmain' $(ROOT)/mytrace.log $(QUIET)$(GREP) -q '1000 .*uint profile.foo(uint)' $(ROOT)/mytrace.log $(QUIET)$(DIFF) mytrace.def.exp $(ROOT)/mytrace.def @@ -22,7 +22,7 @@ $(ROOT)/profilegc.done: DFLAGS+=-profile=gc $(ROOT)/profilegc.done: $(ROOT)/%.done: $(ROOT)/% @echo Testing $* @rm -f $(ROOT)/myprofilegc.log - $(QUIET)$(ROOT)/$* $(ROOT)/myprofilegc.log + $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(ROOT)/myprofilegc.log $(QUIET)$(DIFF) myprofilegc.log.exp $(ROOT)/myprofilegc.log @touch $@ @@ -30,7 +30,7 @@ $(ROOT)/both.done: DFLAGS+=-profile -profile=gc $(ROOT)/both.done: $(ROOT)/%.done: $(ROOT)/% @echo Testing $* @rm -f $(ROOT)/both.log $(ROOT)/both.def $(ROOT)/bothgc.log - $(QUIET)$(ROOT)/$* $(ROOT)/both.log $(ROOT)/both.def $(ROOT)/bothgc.log + $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(ROOT)/both.log $(ROOT)/both.def $(ROOT)/bothgc.log $(QUIET)$(GREP) -q '1 .*_Dmain' $(ROOT)/both.log $(QUIET)$(GREP) -q '1000 .*both.Num\* both.foo(uint)' $(ROOT)/both.log $(QUIET)$(DIFF) both.def.exp $(ROOT)/both.def diff --git a/test/shared/Makefile b/test/shared/Makefile index 0b4a58b509..444d2d652e 100644 --- a/test/shared/Makefile +++ b/test/shared/Makefile @@ -13,12 +13,12 @@ $(ROOT)/loadDR.done $(ROOT)/host.done: RUN_ARGS:=$(DRUNTIMESO) $(ROOT)/%_mod_collision.done: $(ROOT)/%_mod_collision @echo Testing $*_mod_collision - $(QUIET)($< $(RUN_ARGS) 2>&1 || true) | grep -qF 'already defined' + $(QUIET)($(TIMELIMIT)$< $(RUN_ARGS) 2>&1 || true) | grep -qF 'already defined' @touch $@ $(ROOT)/%.done: $(ROOT)/% @echo Testing $* - $(QUIET)$< $(RUN_ARGS) + $(QUIET)$(TIMELIMIT)$< $(RUN_ARGS) @touch $@ $(ROOT)/link: $(SRC)/link.d $(ROOT)/lib.so $(DRUNTIMESO) From 94211ef26fc3f3a5593d46ecf24f59d7a2769dcb Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 9 Mar 2016 02:30:04 +0100 Subject: [PATCH 279/768] remove the pointless STARTING output during testing - we now have make non-quiet by default and apply timelimit to each test so it's easy to figure out deadlocked tests - with parallel make it wasn't easily possible to see which STARTING/PASS lines belong together anyhow --- src/test_runner.d | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test_runner.d b/src/test_runner.d index 54950d643a..46584d5fe4 100644 --- a/src/test_runner.d +++ b/src/test_runner.d @@ -29,8 +29,6 @@ bool tester() try { immutable t0 = MonoTime.currTime; - printf("STARTING %.*s\n", - cast(uint)name.length, name.ptr); fp(); printf("%.3fs PASS %.*s %.*s\n", (MonoTime.currTime - t0).total!"msecs" / 1000.0, From 8cd339df2d5f43f41feb3ad15bf7859b7b341034 Mon Sep 17 00:00:00 2001 From: Puneet Goel Date: Thu, 10 Mar 2016 19:38:44 +0530 Subject: [PATCH 280/768] Inherit loaded libs before initializing GC for TLS Otherwise the TLS for libraries loaded by the parent thread is not marked by GC. --- src/core/thread.d | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/thread.d b/src/core/thread.d index 043a185321..75864fb99c 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -305,6 +305,10 @@ else version( Posix ) } assert( obj ); + // loadedLibraries need to be inherited from parent thread + // before initilizing GC for TLS (rt_tlsgc_init) + version (Shared) inheritLoadedLibraries(loadedLibraries); + assert( obj.m_curr is &obj.m_main ); obj.m_main.bstack = getStackBottom(); obj.m_main.tstack = obj.m_main.bstack; @@ -378,7 +382,6 @@ else version( Posix ) try { - version (Shared) inheritLoadedLibraries(loadedLibraries); rt_moduleTlsCtor(); try { From cffba481dd7fbbf46944db0095728695376ccd27 Mon Sep 17 00:00:00 2001 From: Puneet Goel Date: Thu, 10 Mar 2016 19:39:18 +0530 Subject: [PATCH 281/768] For shared libs, Update TLS Range for new threads __tls_get_addr allocates TLS space per thread. When a new thread is spawned, a call to the function is required to update the TLS records that are used by the GC. The was not happening for the Shared version. --- src/rt/sections_elf_shared.d | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/rt/sections_elf_shared.d b/src/rt/sections_elf_shared.d index da24ecb999..dee3afacef 100644 --- a/src/rt/sections_elf_shared.d +++ b/src/rt/sections_elf_shared.d @@ -200,6 +200,11 @@ version (Shared) assert(_loadedDSOs.empty); _loadedDSOs.swap(*cast(Array!(ThreadDSO)*)p); .free(p); + foreach (ref dso; _loadedDSOs) + { + // the copied _tlsRange corresponds to parent thread + dso.updateTLSRange(); + } } // Called after all TLS dtors ran, decrements all remaining dlopen refs. @@ -267,6 +272,11 @@ version (Shared) else static assert(0, "unimplemented"); void[] _tlsRange; alias _pdso this; + // update the _tlsRange for the executing thread + void updateTLSRange() + { + _tlsRange = getTLSRange(_pdso._tlsMod, _pdso._tlsSize); + } } Array!(ThreadDSO) _loadedDSOs; From 1113bf1476ca66bac8a25bea4598daf6fb4bd598 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 12 Mar 2016 00:22:50 +0100 Subject: [PATCH 282/768] fix Issue 15353 - ignore freeing during finalization --- changelog.dd | 7 +++++++ src/core/memory.d | 12 ++++++------ src/gc/gc.d | 19 ++++++++++++++++++- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/changelog.dd b/changelog.dd index 3a5574d936..483759021e 100644 --- a/changelog.dd +++ b/changelog.dd @@ -7,6 +7,7 @@ $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 aa-clear, A `clear` method has been added to associative arrays to remove all elements.)) +$(LI Calls to $(NCXREF memory, GC.free) are now ignored during finalization instead of throwing an InvalidMemoryOperationError, see $(BUGZILLA 15353).) ) $(BUGSTITLE Library Changes, @@ -42,6 +43,12 @@ Macros: COREMODREF = $2 XREF = $2 CXREF = $2 + OXREF = $2 + NXREF = $2 + NCXREF = $2 + NOXREF = $2 + + BUGZILLA = Bugzilla $0 BOOKTABLE = $+
$1
PRE =
$0
diff --git a/src/core/memory.d b/src/core/memory.d index 40b3a8f8d7..22e2fe9b43 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -552,12 +552,12 @@ struct GC /** - * Deallocates the memory referenced by p. If p is null, no action - * occurs. If p references memory not originally allocated by this - * garbage collector, or if it points to the interior of a memory block, - * no action will be taken. The block will not be finalized regardless - * of whether the FINALIZE attribute is set. If finalization is desired, - * use delete instead. + * Deallocates the memory referenced by p. If p is null, no action occurs. + * If p references memory not originally allocated by this garbage + * collector, if p points to the interior of a memory block, or if this + * method is called from a finalizer, no action will be taken. The block + * will not be finalized regardless of whether the FINALIZE attribute is + * set. If finalization is desired, use delete instead. * * Params: * p = A pointer to the root of a valid memory block or to null. diff --git a/src/gc/gc.d b/src/gc/gc.d index 16aec1e231..dafe85c340 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -813,7 +813,7 @@ struct GC */ void free(void *p) nothrow { - if (!p) + if (!p || inFinalizer) { return; } @@ -3250,6 +3250,23 @@ unittest // bugzilla 14467 assert(arr.capacity); } +unittest // bugzilla 15353 +{ + import core.memory : GC; + + static struct Foo + { + ~this() + { + GC.free(buf); // ignored in finalizer + } + + void* buf; + } + new Foo(GC.malloc(10)); + GC.collect(); +} + /* ============================ SENTINEL =============================== */ From 8d84991b996dcea7d74be36ae9e20c8e1fc0bde7 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 12 Mar 2016 13:51:55 +0100 Subject: [PATCH 283/768] remove more pointless start/pass output - the makefile already prints a Testing finalize --- test/shared/src/finalize.d | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/shared/src/finalize.d b/test/shared/src/finalize.d index 7c16fd5f9e..8ea58d4790 100644 --- a/test/shared/src/finalize.d +++ b/test/shared/src/finalize.d @@ -28,7 +28,6 @@ extern (C) alias SetFinalizeCounter = void function(shared(size_t*)); void main(string[] args) { - printf("STARTING finalize\n"); auto name = args[0]; assert(name[$-9 .. $] == "/finalize"); name = name[0 .. $-8] ~ "lib.so"; @@ -57,5 +56,4 @@ void main(string[] args) assert(0); if (nf2._finalizeCounter) assert(0); - printf("PASS finalize\n"); } From 240cb9d070129e2a311b8f8da4b373f34a74bec4 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sat, 12 Mar 2016 22:19:08 +0100 Subject: [PATCH 284/768] core.math: Add unit test for 128bit reals. Required for AArch64 port. --- src/core/math.d | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/core/math.d b/src/core/math.d index 99951e7aa1..75f06cd995 100644 --- a/src/core/math.d +++ b/src/core/math.d @@ -100,7 +100,12 @@ extern (C) real rndtonl(real x); real ldexp(real n, int exp) @safe pure nothrow; /* intrinsic */ unittest { - static if (real.mant_dig == 64) + static if (real.mant_dig == 113) + { + assert(ldexp(1, -16384) == 0x1p-16384L); + assert(ldexp(1, -16382) == 0x1p-16382L); + } + else static if (real.mant_dig == 64) { assert(ldexp(1, -16384) == 0x1p-16384L); assert(ldexp(1, -16382) == 0x1p-16382L); @@ -112,7 +117,7 @@ unittest { assert(ldexp(1, -1021) == 0x1p-1021L); } else - assert(false, "Only 80bit and 64bit reals expected here"); + assert(false, "Only 128bit, 80bit and 64bit reals expected here"); } /******************************* From 09419a101116c0439bc16b5e898fe45fd1b553bd Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 12 Mar 2016 14:03:10 +0100 Subject: [PATCH 285/768] fix regression tests for fixed Issue 15513 - the existing tls GC test weren't working b/c the scanned stack region still contained references to the allocated values --- test/shared/src/lib.d | 35 +++++++++++++++++++++++++---------- test/shared/src/plugin.d | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 59 insertions(+), 16 deletions(-) diff --git a/test/shared/src/lib.d b/test/shared/src/lib.d index a3de8c9f73..0e4eb44940 100644 --- a/test/shared/src/lib.d +++ b/test/shared/src/lib.d @@ -26,6 +26,28 @@ void tls_alloc() { tls_root = new Object(); } void tls_access() { assert(tls_root.toString() !is null); } // vtbl call will fail if finalized void tls_free() { tls_root = null; } +void stack(alias func)() +{ + // allocate some extra stack space to not keep references to GC memory on the scanned stack + ubyte[1024] buf = void; + func(); +} + +void testGC() +{ + import core.memory; + + stack!alloc(); + stack!tls_alloc(); + stack!access(); + stack!tls_access(); + GC.collect(); + stack!tls_access(); + stack!access(); + stack!tls_free(); + stack!free(); +} + // test Init import core.atomic : atomicOp; shared uint shared_static_ctor, shared_static_dtor, static_ctor, static_dtor; @@ -45,7 +67,7 @@ extern(C) int runTests() void runTestsImpl() { - import core.memory, core.thread; + import core.thread; bool passed; try @@ -55,15 +77,7 @@ void runTestsImpl() assert(passed); assert(collectException({throwException();}) !is null); - alloc(); - tls_alloc(); - access(); - tls_access(); - GC.collect(); - tls_access(); - access(); - tls_free(); - free(); + testGC(); assert(shared_static_ctor == 1); assert(static_ctor == 1); @@ -71,6 +85,7 @@ void runTestsImpl() { assert(static_ctor == 2); assert(shared_static_ctor == 1); + testGC(); } auto thr = new Thread(&run); thr.start(); diff --git a/test/shared/src/plugin.d b/test/shared/src/plugin.d index 2606869eec..74d6601ebb 100644 --- a/test/shared/src/plugin.d +++ b/test/shared/src/plugin.d @@ -1,15 +1,44 @@ import core.thread, core.memory, core.atomic; +// test init shared uint gctor, gdtor, tctor, tdtor; shared static this() { if (atomicOp!"+="(gctor, 1) != 1) assert(0); } shared static ~this() { if (atomicOp!"+="(gdtor, 1) != 1) assert(0); } static this() { atomicOp!"+="(tctor, 1); } static ~this() { atomicOp!"+="(tdtor, 1); } -Thread t; +// test GC +__gshared Object root; +void alloc() { root = new Object(); } +void access() { assert(root.toString() !is null); } // vtbl call will fail if finalized +void free() { root = null; } -void launchThread() { (t = new Thread({})).start(); } -void joinThread() { t.join(); } +Object tls_root; +void tls_alloc() { tls_root = new Object(); } +void tls_access() { assert(tls_root.toString() !is null); } // vtbl call will fail if finalized +void tls_free() { tls_root = null; } + +void stack(alias func)() +{ + // allocate some extra stack space to not keep references to GC memory on the scanned stack + ubyte[1024] buf = void; + func(); +} + +void testGC() +{ + import core.memory; + + stack!alloc(); + stack!tls_alloc(); + stack!access(); + stack!tls_access(); + GC.collect(); + stack!tls_access(); + stack!access(); + stack!tls_free(); + stack!free(); +} extern(C) int runTests() { @@ -20,9 +49,8 @@ extern(C) int runTests() assert(atomicLoad!(MemoryOrder.acq)(tctor) >= 1); assert(atomicLoad!(MemoryOrder.acq)(tdtor) >= 0); // test some runtime functionality - launchThread(); - GC.collect(); - joinThread(); + testGC(); + new Thread(&testGC).start.join; } catch (Throwable) { From e9b0f3ef9171b95d1076abbbac754cc9ad1fd66b Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Sat, 12 Mar 2016 21:14:58 -0500 Subject: [PATCH 286/768] Add the change to a spinlock in the change log --- changelog.dd | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/changelog.dd b/changelog.dd index 3a5574d936..c4179af8f8 100644 --- a/changelog.dd +++ b/changelog.dd @@ -9,6 +9,10 @@ $(LI $(RELATIVE_LINK2 aa-clear, A `clear` method has been added to associative arrays to remove all elements.)) ) +$(LI $(RELATIVE_LINK2 spinlock, The GC now uses a spinlock instead of a +recursive mutex.)) +) + $(BUGSTITLE Library Changes, $(LI $(LNAME2 aa-clear, A `clear` method has been added to associative @@ -27,6 +31,14 @@ aa.clear(); // still retains its current capacity for faster imports assert(aa2.length == 0); // other references affected ------- ) + +$(LI $(LNAME2 spinlock, The GC is no longer wrapped in a pthread_mutex, it + now uses a spinlock.) + + $(P This results in a 5% faster GC on average, with the most benefits going + to multi-threaded programs that use the GC. See $(DRUNTIMEPR 1447) for + more details. + ) ) @@ -43,5 +55,8 @@ Macros: XREF = $2 CXREF = $2 + PULL_REQUEST = $(LINK2 https://github.com/D-Programming-Language/$1/pull/$2, $1#$2) + DRUNTIMEPR = $(PULL_REQUEST druntime,$1) + BOOKTABLE = $+
$1
PRE =
$0
From 2250d26ac470fca87237a2749195b5509d8989a6 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 17 Mar 2016 00:40:15 +0000 Subject: [PATCH 287/768] Add POSIX.1-2008 utimensat/futimens on Linux and FreeBSD --- src/core/sys/posix/fcntl.d | 6 ++++++ src/core/sys/posix/sys/stat.d | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/core/sys/posix/fcntl.d b/src/core/sys/posix/fcntl.d index 2e13912ddd..7784e6eb30 100644 --- a/src/core/sys/posix/fcntl.d +++ b/src/core/sys/posix/fcntl.d @@ -258,6 +258,9 @@ version( CRuntime_Glibc ) int creat(in char*, mode_t); int open(in char*, int, ...); } + + enum AT_SYMLINK_NOFOLLOW = 0x100; + enum AT_FDCWD = -100; } else version( OSX ) { @@ -366,6 +369,9 @@ else version( FreeBSD ) int creat(in char*, mode_t); int open(in char*, int, ...); + + enum AT_SYMLINK_NOFOLLOW = 0x200; + enum AT_FDCWD = -100; } else version (Solaris) { diff --git a/src/core/sys/posix/sys/stat.d b/src/core/sys/posix/sys/stat.d index b2cb663a26..deab4c4f00 100644 --- a/src/core/sys/posix/sys/stat.d +++ b/src/core/sys/posix/sys/stat.d @@ -629,6 +629,13 @@ version( CRuntime_Glibc ) extern bool S_TYPEISSEM( stat_t* buf ) { return false; } extern bool S_TYPEISSHM( stat_t* buf ) { return false; } } + + enum UTIME_NOW = 0x3fffffff; + enum UTIME_OMIT = 0x3ffffffe; + + int utimensat(int dirfd, const char *pathname, + ref const(timespec)[2] times, int flags); + int futimens(int fd, ref const(timespec)[2] times); } else version( OSX ) { @@ -776,6 +783,17 @@ else version( FreeBSD ) extern (D) bool S_ISREG( mode_t mode ) { return S_ISTYPE( mode, S_IFREG ); } extern (D) bool S_ISLNK( mode_t mode ) { return S_ISTYPE( mode, S_IFLNK ); } extern (D) bool S_ISSOCK( mode_t mode ) { return S_ISTYPE( mode, S_IFSOCK ); } + + enum UTIME_NOW = -1; + enum UTIME_OMIT = -2; + + // Since FreeBSD 11: + version (none) + { + int utimensat(int dirfd, const char *pathname, + ref const(timespec)[2] times, int flags); + int futimens(int fd, ref const(timespec)[2] times); + } } else version (Solaris) { From 37dca9c87fcabdef1361d3d12f37620030b77795 Mon Sep 17 00:00:00 2001 From: Jacob Carlborg Date: Sat, 2 Jan 2016 15:26:32 +0100 Subject: [PATCH 288/768] Add support for native TLS on OS X --- mak/SRCS | 3 +- posix.mak | 6 + src/rt/osx_tls.c | 51 +++++ src/rt/sections.d | 9 +- src/rt/{sections_osx.d => sections_osx_x86.d} | 31 +-- src/rt/sections_osx_x86_64.d | 186 ++++++++++++++++++ 6 files changed, 261 insertions(+), 25 deletions(-) create mode 100644 src/rt/osx_tls.c rename src/rt/{sections_osx.d => sections_osx_x86.d} (89%) create mode 100644 src/rt/sections_osx_x86_64.d diff --git a/mak/SRCS b/mak/SRCS index 65ccba63f5..fd8e261488 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -280,7 +280,8 @@ SRCS=\ src\rt\sections.d \ src\rt\sections_android.d \ src\rt\sections_elf_shared.d \ - src\rt\sections_osx.d \ + src\rt\sections_osx_x86.d \ + src\rt\sections_osx_x86_64.d \ src\rt\sections_solaris.d \ src\rt\sections_win32.d \ src\rt\sections_win64.d \ diff --git a/posix.mak b/posix.mak index 91c30606ba..e5d645bcd6 100644 --- a/posix.mak +++ b/posix.mak @@ -90,6 +90,12 @@ SRCS:=$(subst \,/,$(SRCS)) OBJS= $(ROOT)/errno_c.o $(ROOT)/bss_section.o $(ROOT)/threadasm.o +ifeq ($(OS),osx) +ifeq ($(MODEL), 64) + OBJS+=$(ROOT)/osx_tls.o +endif +endif + # build with shared library support SHARED=$(if $(findstring $(OS),linux freebsd),1,) diff --git a/src/rt/osx_tls.c b/src/rt/osx_tls.c new file mode 100644 index 0000000000..6cdffff672 --- /dev/null +++ b/src/rt/osx_tls.c @@ -0,0 +1,51 @@ +/** + * Helpers for determining TLS memory ranges on OS X. + * + * This unfortunately cannot be entirely done in D, as the OS X API uses + * the Apple-specific blocks C extension. + * + * Copyright: David Nadlinger, 2012. + * License: Boost License 1.0. + * Authors: David Nadlinger + */ + +#ifndef __APPLE__ +#ifndef __BLOCKS__ + #error "Need a C compiler with Apple Blocks support – not building on OS X with Clang?" +#endif +#endif + +#include +#include +#include + +/* + * Declarations from dyld_priv.h, available on 10.7+. + */ +enum dyld_tlv_states { + dyld_tlv_state_allocated = 10, + dyld_tlv_state_deallocated = 20 +}; +typedef struct { + size_t info_size; + void * tlv_addr; + size_t tlv_size; +} dyld_tlv_info; +typedef void (^dyld_tlv_state_change_handler)(enum dyld_tlv_states state, const dyld_tlv_info *info); +extern void dyld_register_tlv_state_change_handler(enum dyld_tlv_states state, dyld_tlv_state_change_handler handler); +extern void dyld_enumerate_tlv_storage(dyld_tlv_state_change_handler handler); + +void _d_dyld_getTLSRange(void* arbitraryTLSSymbol, void** start, size_t* size) { + dyld_enumerate_tlv_storage( + ^(enum dyld_tlv_states state, const dyld_tlv_info *info) { + assert(state == dyld_tlv_state_allocated); + if (info->tlv_addr <= arbitraryTLSSymbol && + arbitraryTLSSymbol < (info->tlv_addr + info->tlv_size) + ) { + // Found the range. + *start = info->tlv_addr; + *size = info->tlv_size; + } + } + ); +} diff --git a/src/rt/sections.d b/src/rt/sections.d index af1bddbb44..6a96c06c83 100644 --- a/src/rt/sections.d +++ b/src/rt/sections.d @@ -17,7 +17,14 @@ else version (FreeBSD) else version (Solaris) public import rt.sections_solaris; else version (OSX) - public import rt.sections_osx; +{ + version (X86_64) + public import rt.sections_osx_x86_64; + else version (X86) + public import rt.sections_osx_x86; + else + static assert(0, "unimplemented"); +} else version (CRuntime_DigitalMars) public import rt.sections_win32; else version (CRuntime_Microsoft) diff --git a/src/rt/sections_osx.d b/src/rt/sections_osx_x86.d similarity index 89% rename from src/rt/sections_osx.d rename to src/rt/sections_osx_x86.d index b41f9982d1..e3656b4c7b 100644 --- a/src/rt/sections_osx.d +++ b/src/rt/sections_osx_x86.d @@ -1,18 +1,18 @@ /** * Written in the D programming language. - * This module provides OSX-specific support for sections. + * This module provides OS X x86 specific support for sections. * - * Copyright: Copyright Digital Mars 2008 - 2012. + * Copyright: Copyright Digital Mars 2008 - 2016. * License: Distributed under the * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * (See accompanying file LICENSE) - * Authors: Walter Bright, Sean Kelly, Martin Nowak - * Source: $(DRUNTIMESRC src/rt/_sections_osx.d) + * Authors: Walter Bright, Sean Kelly, Martin Nowak, Jacob Carlborg + * Source: $(DRUNTIMESRC src/rt/_sections_osx_x86.d) */ - -module rt.sections_osx; +module rt.sections_osx_x86; version(OSX): +version(X86): // debug = PRINTF; import core.stdc.stdio; @@ -180,7 +180,6 @@ ref void[] getTLSBlockAlloc() return *pary; } - __gshared SectionGroup _sections; extern (C) void sections_osx_onAddImage(in mach_header* h, intptr_t slide) @@ -254,22 +253,8 @@ static immutable SegRef[] dataSegs = [{SEG_DATA, SECT_DATA}, ubyte[] getSection(in mach_header* header, intptr_t slide, in char* segmentName, in char* sectionName) { - version (X86) - { - assert(header.magic == MH_MAGIC); - auto sect = getsectbynamefromheader(header, - segmentName, - sectionName); - } - else version (X86_64) - { - assert(header.magic == MH_MAGIC_64); - auto sect = getsectbynamefromheader_64(cast(mach_header_64*)header, - segmentName, - sectionName); - } - else - static assert(0, "unimplemented"); + assert(header.magic == MH_MAGIC); + auto sect = getsectbynamefromheader(header, segmentName, sectionName); if (sect !is null && sect.size > 0) return (cast(ubyte*)sect.addr + slide)[0 .. cast(size_t)sect.size]; diff --git a/src/rt/sections_osx_x86_64.d b/src/rt/sections_osx_x86_64.d new file mode 100644 index 0000000000..653751b0b6 --- /dev/null +++ b/src/rt/sections_osx_x86_64.d @@ -0,0 +1,186 @@ +/** + * Written in the D programming language. + * This module provides OS X x86-64 specific support for sections. + * + * Copyright: Copyright Digital Mars 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). + * (See accompanying file LICENSE) + * Authors: Jacob Carlborg + * Source: $(DRUNTIMESRC src/rt/_sections_osx_x86_64.d) + */ +module rt.sections_osx_x86_64; + +version(OSX): +version(X86_64): + +// debug = PRINTF; +import core.stdc.stdio; +import core.stdc.string, core.stdc.stdlib; +import core.sys.posix.pthread; +import core.sys.osx.mach.dyld; +import core.sys.osx.mach.getsect; +import rt.deh, rt.minfo; +import rt.util.container.array; + +struct SectionGroup +{ + static int opApply(scope int delegate(ref SectionGroup) dg) + { + return dg(_sections); + } + + static int opApplyReverse(scope int delegate(ref SectionGroup) dg) + { + return dg(_sections); + } + + @property immutable(ModuleInfo*)[] modules() const + { + return _moduleGroup.modules; + } + + @property ref inout(ModuleGroup) moduleGroup() inout + { + return _moduleGroup; + } + + @property inout(void[])[] gcRanges() inout + { + return _gcRanges[]; + } + + @property immutable(FuncTable)[] ehTables() const + { + return _ehTables[]; + } + +private: + immutable(FuncTable)[] _ehTables; + ModuleGroup _moduleGroup; + Array!(void[]) _gcRanges; + immutable(void)[][2] _tlsImage; +} + +/**** + * Boolean flag set to true while the runtime is initialized. + */ +__gshared bool _isRuntimeInitialized; + +/**** + * Gets called on program startup just before GC is initialized. + */ +void initSections() +{ + _dyld_register_func_for_add_image(§ions_osx_onAddImage); + _isRuntimeInitialized = true; +} + +/*** + * Gets called on program shutdown just after GC is terminated. + */ +void finiSections() +{ + _sections._gcRanges.reset(); + _isRuntimeInitialized = false; +} + +void[] initTLSRanges() +{ + void* start = null; + size_t size = 0; + _d_dyld_getTLSRange(&dummyTlsSymbol, &start, &size); + assert(start && size, "Could not determine TLS range."); + return start[0 .. size]; +} + +void finiTLSRanges(void[] rng) +{ + +} + +void scanTLSRanges(void[] rng, scope void delegate(void* pbeg, void* pend) nothrow dg) nothrow +{ + dg(rng.ptr, rng.ptr + rng.length); +} + +private: + +extern(C) void _d_dyld_getTLSRange(void*, void**, size_t*); + +__gshared SectionGroup _sections; +ubyte dummyTlsSymbol; + +extern (C) void sections_osx_onAddImage(in mach_header* h, intptr_t slide) +{ + foreach (e; dataSegs) + { + auto sect = getSection(h, slide, e.seg.ptr, e.sect.ptr); + if (sect != null) + _sections._gcRanges.insertBack((cast(void*)sect.ptr)[0 .. sect.length]); + } + + auto minfosect = getSection(h, slide, "__DATA", "__minfodata"); + if (minfosect != null) + { + // no support for multiple images yet + // take the sections from the last static image which is the executable + if (_isRuntimeInitialized) + { + fprintf(stderr, "Loading shared libraries isn't yet supported on OSX.\n"); + return; + } + else if (_sections.modules.ptr !is null) + { + fprintf(stderr, "Shared libraries are not yet supported on OSX.\n"); + } + + debug(PRINTF) printf(" minfodata\n"); + auto p = cast(immutable(ModuleInfo*)*)minfosect.ptr; + immutable len = minfosect.length / (*p).sizeof; + + _sections._moduleGroup = ModuleGroup(p[0 .. len]); + } + + auto ehsect = getSection(h, slide, "__DATA", "__deh_eh"); + if (ehsect != null) + { + debug(PRINTF) printf(" deh_eh\n"); + auto p = cast(immutable(FuncTable)*)ehsect.ptr; + immutable len = ehsect.length / (*p).sizeof; + + _sections._ehTables = p[0 .. len]; + } + + auto tlssect2 = getSection(h, slide, "__DATA", "__tlscoal_nt"); + if (tlssect2 != null) + { + debug(PRINTF) printf(" tlscoal_nt %p %p\n", tlssect2.ptr, tlssect2.ptr + tlssect2.length); + _sections._tlsImage[1] = (cast(immutable(void)*)tlssect2.ptr)[0 .. tlssect2.length]; + } +} + +struct SegRef +{ + string seg; + string sect; +} + + +static immutable SegRef[] dataSegs = [{SEG_DATA, SECT_DATA}, + {SEG_DATA, SECT_BSS}, + {SEG_DATA, SECT_COMMON}]; + + +ubyte[] getSection(in mach_header* header, intptr_t slide, + in char* segmentName, in char* sectionName) +{ + assert(header.magic == MH_MAGIC_64); + auto sect = getsectbynamefromheader_64(cast(mach_header_64*)header, + segmentName, + sectionName); + + if (sect !is null && sect.size > 0) + return (cast(ubyte*)sect.addr + slide)[0 .. cast(size_t)sect.size]; + return null; +} From d600fa79b3f45c4bf83afe75fd70f699a849a54d Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 19 Mar 2016 00:46:47 -0700 Subject: [PATCH 289/768] core.stdc.stdarg should be nothrow --- src/core/stdc/stdarg.d | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/stdc/stdarg.d b/src/core/stdc/stdarg.d index be68fd15ad..93350f4a26 100644 --- a/src/core/stdc/stdarg.d +++ b/src/core/stdc/stdarg.d @@ -14,6 +14,7 @@ module core.stdc.stdarg; @system: //@nogc: // Not yet, need to make TypeInfo's member functions @nogc first +nothrow: version( X86 ) { From eb152d55c81c167910bcf9ff7013440b629c2252 Mon Sep 17 00:00:00 2001 From: Daniel Murphy Date: Mon, 21 Mar 2016 21:41:52 +1100 Subject: [PATCH 290/768] Add missing override attributes --- src/core/stdcpp/exception.d | 2 +- src/core/stdcpp/typeinfo.d | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/stdcpp/exception.d b/src/core/stdcpp/exception.d index 2064fbc567..7e02eb2da7 100644 --- a/src/core/stdcpp/exception.d +++ b/src/core/stdcpp/exception.d @@ -75,7 +75,7 @@ else version (CRuntime_Glibc) { this(); //virtual ~this(); - const(char)* what() const; + override const(char)* what() const; } } } diff --git a/src/core/stdcpp/typeinfo.d b/src/core/stdcpp/typeinfo.d index b24b5225c1..ae4d660466 100644 --- a/src/core/stdcpp/typeinfo.d +++ b/src/core/stdcpp/typeinfo.d @@ -133,14 +133,14 @@ else version (CRuntime_Glibc) { this(); //~this(); - const(char)* what() const; + override const(char)* what() const; } class bad_typeid : core.stdcpp.exception.std.exception { this(); //~this(); - const(char)* what() const; + override const(char)* what() const; } } } From 7eb2e530be59be564bdc80642301c42bfa22d11a Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Mon, 21 Mar 2016 15:32:29 +0100 Subject: [PATCH 291/768] local module name string hides object.string --- benchmark/aabench/string.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/benchmark/aabench/string.d b/benchmark/aabench/string.d index c1688905ca..76a1c8e3cf 100644 --- a/benchmark/aabench/string.d +++ b/benchmark/aabench/string.d @@ -5,6 +5,8 @@ * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Authors: Martin Nowak */ +module aabench.string; + import std.algorithm, std.file; void runTest(R)(R words) From 9c58357775cc75f290eecd583afce02ae3127d12 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 23 Mar 2016 09:07:33 +0100 Subject: [PATCH 292/768] Merge pull request #1512 from JackStouffer/patch-2 Document the change to a spinlock in the change log --- changelog.dd | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/changelog.dd b/changelog.dd index 483759021e..012232ec53 100644 --- a/changelog.dd +++ b/changelog.dd @@ -10,6 +10,10 @@ $(LI $(RELATIVE_LINK2 aa-clear, A `clear` method has been added to associative $(LI Calls to $(NCXREF memory, GC.free) are now ignored during finalization instead of throwing an InvalidMemoryOperationError, see $(BUGZILLA 15353).) ) +$(LI $(RELATIVE_LINK2 spinlock, The GC now uses a spinlock instead of a +recursive mutex.)) +) + $(BUGSTITLE Library Changes, $(LI $(LNAME2 aa-clear, A `clear` method has been added to associative @@ -28,6 +32,14 @@ aa.clear(); // still retains its current capacity for faster imports assert(aa2.length == 0); // other references affected ------- ) + +$(LI $(LNAME2 spinlock, The GC is no longer wrapped in a pthread_mutex, it + now uses a spinlock.) + + $(P This results in a 5% faster GC on average, with the most benefits going + to multi-threaded programs that use the GC. See $(DRUNTIMEPR 1447) for + more details. + ) ) @@ -50,5 +62,8 @@ Macros: BUGZILLA = Bugzilla $0 + PULL_REQUEST = $(LINK2 https://github.com/D-Programming-Language/$1/pull/$2, $1#$2) + DRUNTIMEPR = $(PULL_REQUEST druntime,$1) + BOOKTABLE = $+
$1
PRE =
$0
From 62ff361fad70f1338eca324e6e03a787e404b9ee Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 23 Mar 2016 09:05:52 +0100 Subject: [PATCH 293/768] fix ddoc parenthesis --- changelog.dd | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/changelog.dd b/changelog.dd index 012232ec53..f6bb684c47 100644 --- a/changelog.dd +++ b/changelog.dd @@ -7,13 +7,10 @@ $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 aa-clear, A `clear` method has been added to associative arrays to remove all elements.)) +$(LI $(RELATIVE_LINK2 spinlock, The GC now uses a spinlock instead of a recursive mutex.)) $(LI Calls to $(NCXREF memory, GC.free) are now ignored during finalization instead of throwing an InvalidMemoryOperationError, see $(BUGZILLA 15353).) ) -$(LI $(RELATIVE_LINK2 spinlock, The GC now uses a spinlock instead of a -recursive mutex.)) -) - $(BUGSTITLE Library Changes, $(LI $(LNAME2 aa-clear, A `clear` method has been added to associative @@ -41,7 +38,7 @@ $(LI $(LNAME2 spinlock, The GC is no longer wrapped in a pthread_mutex, it more details. ) ) - +) Macros: TITLE=Change Log From d23d7efb3649cd543e8d0b10b9a32ab3325f5cd0 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 23 Mar 2016 09:11:44 +0100 Subject: [PATCH 294/768] fix Issue 15822 - InvalidMemoryOperationError when calling GC.removeRange/Root from a finalizer - use separate locks for GC.add/removeRange/Root - avoids GC.lock contention for manual memory management --- changelog.dd | 1 + src/gc/gc.d | 157 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 100 insertions(+), 58 deletions(-) diff --git a/changelog.dd b/changelog.dd index f6bb684c47..8eb0562999 100644 --- a/changelog.dd +++ b/changelog.dd @@ -9,6 +9,7 @@ $(LI $(RELATIVE_LINK2 aa-clear, A `clear` method has been added to associative arrays to remove all elements.)) $(LI $(RELATIVE_LINK2 spinlock, The GC now uses a spinlock instead of a recursive mutex.)) $(LI Calls to $(NCXREF memory, GC.free) are now ignored during finalization instead of throwing an InvalidMemoryOperationError, see $(BUGZILLA 15353).) +$(LI $(NCXREF memory, GC.addRoot) and $(NCXREF memory, GC.addRange) now use a separate lock.) ) $(BUGSTITLE Library Changes, diff --git a/src/gc/gc.d b/src/gc/gc.d index dafe85c340..deb999f538 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -1071,11 +1071,7 @@ struct GC return; } - static void go(Gcx* gcx, void* p) nothrow - { - gcx.addRoot(p); - } - return runLocked!(go, otherTime, numOthers)(gcx, p); + gcx.addRoot(p); } @@ -1089,29 +1085,16 @@ struct GC return; } - static void go(Gcx* gcx, void* p) nothrow - { - gcx.removeRoot(p); - } - return runLocked!(go, otherTime, numOthers)(gcx, p); + gcx.removeRoot(p); } - private auto rootIterImpl(scope int delegate(ref Root) nothrow dg) nothrow - { - static int go(ref Treap!(Root) roots, scope int delegate(ref Root) nothrow dg) nothrow - { - return roots.opApply(dg); - } - return runLocked!(go, otherTime, numOthers)(gcx.roots, dg); - } - /** * */ @property auto rootIter() @nogc { - return &rootIterImpl; + return &gcx.rootsApply; } @@ -1125,11 +1108,7 @@ struct GC return; } - static void go(Gcx* gcx, void* p, size_t sz, const TypeInfo ti) nothrow @nogc - { - gcx.addRange(p, p + sz, ti); - } - return runLocked!(go, otherTime, numOthers)(gcx, p, sz, ti); + gcx.addRange(p, p + sz, ti); } @@ -1143,13 +1122,19 @@ struct GC return; } - static void go(Gcx* gcx, void* p) nothrow @nogc - { - gcx.removeRange(p); - } - return runLocked!(go, otherTime, numOthers)(gcx, p); + gcx.removeRange(p); } + + /** + * + */ + @property auto rangeIter() @nogc + { + return &gcx.rangesApply; + } + + /** * run finalizers */ @@ -1162,23 +1147,6 @@ struct GC return runLocked!(go, otherTime, numOthers)(gcx, segment); } - private auto rangeIterImpl(scope int delegate(ref Range) nothrow dg) nothrow - { - static int go(ref Treap!(Range) ranges, scope int delegate(ref Range) nothrow dg) nothrow - { - return ranges.opApply(dg); - } - return runLocked!(go, otherTime, numOthers)(gcx.ranges, dg); - } - - /** - * - */ - @property auto rangeIter() @nogc - { - return &rangeIterImpl; - } - /** * Do full garbage collection. @@ -1364,6 +1332,9 @@ private void set(ref PageBits bits, size_t i) @nogc pure nothrow struct Gcx { + import core.internal.spinlock; + auto rootsLock = shared(AlignedSpinLock)(SpinLock.Contention.brief); + auto rangesLock = shared(AlignedSpinLock)(SpinLock.Contention.brief); Treap!Root roots; Treap!Range ranges; @@ -1471,12 +1442,14 @@ struct Gcx //printf("Gcx.invariant(): this = %p\n", &this); pooltable.Invariant(); + rangesLock.lock(); foreach (range; ranges) { assert(range.pbot); assert(range.ptop); assert(range.pbot <= range.ptop); } + rangesLock.unlock(); for (size_t i = 0; i < B_PAGE; i++) { @@ -1493,7 +1466,10 @@ struct Gcx */ void addRoot(void *p) nothrow { + rootsLock.lock(); + scope (failure) rootsLock.unlock(); roots.insert(Root(p)); + rootsLock.unlock(); } @@ -1502,7 +1478,23 @@ struct Gcx */ void removeRoot(void *p) nothrow { + rootsLock.lock(); + scope (failure) rootsLock.unlock(); roots.remove(Root(p)); + rootsLock.unlock(); + } + + + /** + * + */ + int rootsApply(scope int delegate(ref Root) nothrow dg) nothrow + { + rootsLock.lock(); + scope (failure) rootsLock.unlock(); + auto ret = roots.opApply(dg); + rootsLock.unlock(); + return ret; } @@ -1513,7 +1505,10 @@ struct Gcx { //debug(PRINTF) printf("Thread %x ", pthread_self()); debug(PRINTF) printf("%p.Gcx::addRange(%p, %p)\n", &this, pbot, ptop); + rangesLock.lock(); + scope (failure) rangesLock.unlock(); ranges.insert(Range(pbot, ptop)); + rangesLock.unlock(); } @@ -1524,7 +1519,10 @@ struct Gcx { //debug(PRINTF) printf("Thread %x ", pthread_self()); debug(PRINTF) printf("Gcx.removeRange(%p)\n", pbot); + rangesLock.lock(); + scope (failure) rangesLock.unlock(); ranges.remove(Range(pbot, pbot)); // only pbot is used, see Range.opCmp + rangesLock.unlock(); // debug(PRINTF) printf("Wrong thread\n"); // This is a fatal error, but ignore it. @@ -1533,6 +1531,18 @@ struct Gcx //assert(zero); } + /** + * + */ + int rangesApply(scope int delegate(ref Range) nothrow dg) nothrow + { + rangesLock.lock(); + scope (failure) rangesLock.unlock(); + auto ret = ranges.opApply(dg); + rangesLock.unlock(); + return ret; + } + /** * @@ -2417,21 +2427,31 @@ struct Gcx debug(COLLECT_PRINTF) printf("Gcx.fullcollect()\n"); //printf("\tpool address range = %p .. %p\n", minAddr, maxAddr); - thread_suspendAll(); + { + // lock roots and ranges around suspending threads b/c they're not reentrant safe + rangesLock.lock(); + rootsLock.lock(); + scope (exit) + { + rangesLock.unlock(); + rootsLock.unlock(); + } + thread_suspendAll(); - prepare(); + prepare(); - if (GC.config.profile) - { - stop = currTime; - prepTime += (stop - start); - start = stop; - } + if (GC.config.profile) + { + stop = currTime; + prepTime += (stop - start); + start = stop; + } - markAll(nostack); + markAll(nostack); - thread_processGCMarks(&isMarked); - thread_resumeAll(); + thread_processGCMarks(&isMarked); + thread_resumeAll(); + } if (GC.config.profile) { @@ -3267,6 +3287,27 @@ unittest // bugzilla 15353 GC.collect(); } +unittest // bugzilla 15822 +{ + import core.memory : GC; + + ubyte[16] buf; + static struct Foo + { + ~this() + { + GC.removeRange(ptr); + GC.removeRoot(ptr); + } + + ubyte* ptr; + } + GC.addRoot(buf.ptr); + GC.addRange(buf.ptr, buf.length); + new Foo(buf.ptr); + GC.collect(); +} + /* ============================ SENTINEL =============================== */ From b4238857b6fea493755462289a3492773c9598ed Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 12 Mar 2016 13:53:43 +0100 Subject: [PATCH 295/768] do not optimize for the unlikely state, current version is wrong anyway --- src/gc/gc.d | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/src/gc/gc.d b/src/gc/gc.d index dafe85c340..b7dd417703 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -2020,29 +2020,21 @@ struct Gcx continue; Pool* pool = void; - if (npools > 0) + size_t low = 0; + size_t high = highpool; + while (true) { - size_t low = 0; - size_t high = highpool; - while (true) - { - size_t mid = (low + high) >> 1; - pool = pools[mid]; - if (p < pool.baseAddr) - high = mid - 1; - else if (p >= pool.topAddr) - low = mid + 1; - else break; - - if (low > high) - continue Lnext; - } - } - else - { - pool = pools[0]; + size_t mid = (low + high) >> 1; + pool = pools[mid]; + if (p < pool.baseAddr) + high = mid - 1; + else if (p >= pool.topAddr) + low = mid + 1; + else break; + + if (low > high) + continue Lnext; } - size_t offset = cast(size_t)(p - pool.baseAddr); size_t biti = void; size_t pn = offset / PAGESIZE; From 817a5355f0eeb0eee4293368b9cc94e7f62f32ac Mon Sep 17 00:00:00 2001 From: Daniel Murphy Date: Thu, 24 Mar 2016 13:49:59 +1100 Subject: [PATCH 296/768] Revert "Add support for native TLS on OS X" --- mak/SRCS | 3 +- posix.mak | 6 - src/rt/osx_tls.c | 51 ----- src/rt/sections.d | 9 +- src/rt/{sections_osx_x86.d => sections_osx.d} | 31 ++- src/rt/sections_osx_x86_64.d | 186 ------------------ 6 files changed, 25 insertions(+), 261 deletions(-) delete mode 100644 src/rt/osx_tls.c rename src/rt/{sections_osx_x86.d => sections_osx.d} (89%) delete mode 100644 src/rt/sections_osx_x86_64.d diff --git a/mak/SRCS b/mak/SRCS index fd8e261488..65ccba63f5 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -280,8 +280,7 @@ SRCS=\ src\rt\sections.d \ src\rt\sections_android.d \ src\rt\sections_elf_shared.d \ - src\rt\sections_osx_x86.d \ - src\rt\sections_osx_x86_64.d \ + src\rt\sections_osx.d \ src\rt\sections_solaris.d \ src\rt\sections_win32.d \ src\rt\sections_win64.d \ diff --git a/posix.mak b/posix.mak index e5d645bcd6..91c30606ba 100644 --- a/posix.mak +++ b/posix.mak @@ -90,12 +90,6 @@ SRCS:=$(subst \,/,$(SRCS)) OBJS= $(ROOT)/errno_c.o $(ROOT)/bss_section.o $(ROOT)/threadasm.o -ifeq ($(OS),osx) -ifeq ($(MODEL), 64) - OBJS+=$(ROOT)/osx_tls.o -endif -endif - # build with shared library support SHARED=$(if $(findstring $(OS),linux freebsd),1,) diff --git a/src/rt/osx_tls.c b/src/rt/osx_tls.c deleted file mode 100644 index 6cdffff672..0000000000 --- a/src/rt/osx_tls.c +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Helpers for determining TLS memory ranges on OS X. - * - * This unfortunately cannot be entirely done in D, as the OS X API uses - * the Apple-specific blocks C extension. - * - * Copyright: David Nadlinger, 2012. - * License: Boost License 1.0. - * Authors: David Nadlinger - */ - -#ifndef __APPLE__ -#ifndef __BLOCKS__ - #error "Need a C compiler with Apple Blocks support – not building on OS X with Clang?" -#endif -#endif - -#include -#include -#include - -/* - * Declarations from dyld_priv.h, available on 10.7+. - */ -enum dyld_tlv_states { - dyld_tlv_state_allocated = 10, - dyld_tlv_state_deallocated = 20 -}; -typedef struct { - size_t info_size; - void * tlv_addr; - size_t tlv_size; -} dyld_tlv_info; -typedef void (^dyld_tlv_state_change_handler)(enum dyld_tlv_states state, const dyld_tlv_info *info); -extern void dyld_register_tlv_state_change_handler(enum dyld_tlv_states state, dyld_tlv_state_change_handler handler); -extern void dyld_enumerate_tlv_storage(dyld_tlv_state_change_handler handler); - -void _d_dyld_getTLSRange(void* arbitraryTLSSymbol, void** start, size_t* size) { - dyld_enumerate_tlv_storage( - ^(enum dyld_tlv_states state, const dyld_tlv_info *info) { - assert(state == dyld_tlv_state_allocated); - if (info->tlv_addr <= arbitraryTLSSymbol && - arbitraryTLSSymbol < (info->tlv_addr + info->tlv_size) - ) { - // Found the range. - *start = info->tlv_addr; - *size = info->tlv_size; - } - } - ); -} diff --git a/src/rt/sections.d b/src/rt/sections.d index 6a96c06c83..af1bddbb44 100644 --- a/src/rt/sections.d +++ b/src/rt/sections.d @@ -17,14 +17,7 @@ else version (FreeBSD) else version (Solaris) public import rt.sections_solaris; else version (OSX) -{ - version (X86_64) - public import rt.sections_osx_x86_64; - else version (X86) - public import rt.sections_osx_x86; - else - static assert(0, "unimplemented"); -} + public import rt.sections_osx; else version (CRuntime_DigitalMars) public import rt.sections_win32; else version (CRuntime_Microsoft) diff --git a/src/rt/sections_osx_x86.d b/src/rt/sections_osx.d similarity index 89% rename from src/rt/sections_osx_x86.d rename to src/rt/sections_osx.d index e3656b4c7b..b41f9982d1 100644 --- a/src/rt/sections_osx_x86.d +++ b/src/rt/sections_osx.d @@ -1,18 +1,18 @@ /** * Written in the D programming language. - * This module provides OS X x86 specific support for sections. + * This module provides OSX-specific support for sections. * - * Copyright: Copyright Digital Mars 2008 - 2016. + * Copyright: Copyright Digital Mars 2008 - 2012. * License: Distributed under the * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * (See accompanying file LICENSE) - * Authors: Walter Bright, Sean Kelly, Martin Nowak, Jacob Carlborg - * Source: $(DRUNTIMESRC src/rt/_sections_osx_x86.d) + * Authors: Walter Bright, Sean Kelly, Martin Nowak + * Source: $(DRUNTIMESRC src/rt/_sections_osx.d) */ -module rt.sections_osx_x86; + +module rt.sections_osx; version(OSX): -version(X86): // debug = PRINTF; import core.stdc.stdio; @@ -180,6 +180,7 @@ ref void[] getTLSBlockAlloc() return *pary; } + __gshared SectionGroup _sections; extern (C) void sections_osx_onAddImage(in mach_header* h, intptr_t slide) @@ -253,8 +254,22 @@ static immutable SegRef[] dataSegs = [{SEG_DATA, SECT_DATA}, ubyte[] getSection(in mach_header* header, intptr_t slide, in char* segmentName, in char* sectionName) { - assert(header.magic == MH_MAGIC); - auto sect = getsectbynamefromheader(header, segmentName, sectionName); + version (X86) + { + assert(header.magic == MH_MAGIC); + auto sect = getsectbynamefromheader(header, + segmentName, + sectionName); + } + else version (X86_64) + { + assert(header.magic == MH_MAGIC_64); + auto sect = getsectbynamefromheader_64(cast(mach_header_64*)header, + segmentName, + sectionName); + } + else + static assert(0, "unimplemented"); if (sect !is null && sect.size > 0) return (cast(ubyte*)sect.addr + slide)[0 .. cast(size_t)sect.size]; diff --git a/src/rt/sections_osx_x86_64.d b/src/rt/sections_osx_x86_64.d deleted file mode 100644 index 653751b0b6..0000000000 --- a/src/rt/sections_osx_x86_64.d +++ /dev/null @@ -1,186 +0,0 @@ -/** - * Written in the D programming language. - * This module provides OS X x86-64 specific support for sections. - * - * Copyright: Copyright Digital Mars 2016. - * License: Distributed under the - * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). - * (See accompanying file LICENSE) - * Authors: Jacob Carlborg - * Source: $(DRUNTIMESRC src/rt/_sections_osx_x86_64.d) - */ -module rt.sections_osx_x86_64; - -version(OSX): -version(X86_64): - -// debug = PRINTF; -import core.stdc.stdio; -import core.stdc.string, core.stdc.stdlib; -import core.sys.posix.pthread; -import core.sys.osx.mach.dyld; -import core.sys.osx.mach.getsect; -import rt.deh, rt.minfo; -import rt.util.container.array; - -struct SectionGroup -{ - static int opApply(scope int delegate(ref SectionGroup) dg) - { - return dg(_sections); - } - - static int opApplyReverse(scope int delegate(ref SectionGroup) dg) - { - return dg(_sections); - } - - @property immutable(ModuleInfo*)[] modules() const - { - return _moduleGroup.modules; - } - - @property ref inout(ModuleGroup) moduleGroup() inout - { - return _moduleGroup; - } - - @property inout(void[])[] gcRanges() inout - { - return _gcRanges[]; - } - - @property immutable(FuncTable)[] ehTables() const - { - return _ehTables[]; - } - -private: - immutable(FuncTable)[] _ehTables; - ModuleGroup _moduleGroup; - Array!(void[]) _gcRanges; - immutable(void)[][2] _tlsImage; -} - -/**** - * Boolean flag set to true while the runtime is initialized. - */ -__gshared bool _isRuntimeInitialized; - -/**** - * Gets called on program startup just before GC is initialized. - */ -void initSections() -{ - _dyld_register_func_for_add_image(§ions_osx_onAddImage); - _isRuntimeInitialized = true; -} - -/*** - * Gets called on program shutdown just after GC is terminated. - */ -void finiSections() -{ - _sections._gcRanges.reset(); - _isRuntimeInitialized = false; -} - -void[] initTLSRanges() -{ - void* start = null; - size_t size = 0; - _d_dyld_getTLSRange(&dummyTlsSymbol, &start, &size); - assert(start && size, "Could not determine TLS range."); - return start[0 .. size]; -} - -void finiTLSRanges(void[] rng) -{ - -} - -void scanTLSRanges(void[] rng, scope void delegate(void* pbeg, void* pend) nothrow dg) nothrow -{ - dg(rng.ptr, rng.ptr + rng.length); -} - -private: - -extern(C) void _d_dyld_getTLSRange(void*, void**, size_t*); - -__gshared SectionGroup _sections; -ubyte dummyTlsSymbol; - -extern (C) void sections_osx_onAddImage(in mach_header* h, intptr_t slide) -{ - foreach (e; dataSegs) - { - auto sect = getSection(h, slide, e.seg.ptr, e.sect.ptr); - if (sect != null) - _sections._gcRanges.insertBack((cast(void*)sect.ptr)[0 .. sect.length]); - } - - auto minfosect = getSection(h, slide, "__DATA", "__minfodata"); - if (minfosect != null) - { - // no support for multiple images yet - // take the sections from the last static image which is the executable - if (_isRuntimeInitialized) - { - fprintf(stderr, "Loading shared libraries isn't yet supported on OSX.\n"); - return; - } - else if (_sections.modules.ptr !is null) - { - fprintf(stderr, "Shared libraries are not yet supported on OSX.\n"); - } - - debug(PRINTF) printf(" minfodata\n"); - auto p = cast(immutable(ModuleInfo*)*)minfosect.ptr; - immutable len = minfosect.length / (*p).sizeof; - - _sections._moduleGroup = ModuleGroup(p[0 .. len]); - } - - auto ehsect = getSection(h, slide, "__DATA", "__deh_eh"); - if (ehsect != null) - { - debug(PRINTF) printf(" deh_eh\n"); - auto p = cast(immutable(FuncTable)*)ehsect.ptr; - immutable len = ehsect.length / (*p).sizeof; - - _sections._ehTables = p[0 .. len]; - } - - auto tlssect2 = getSection(h, slide, "__DATA", "__tlscoal_nt"); - if (tlssect2 != null) - { - debug(PRINTF) printf(" tlscoal_nt %p %p\n", tlssect2.ptr, tlssect2.ptr + tlssect2.length); - _sections._tlsImage[1] = (cast(immutable(void)*)tlssect2.ptr)[0 .. tlssect2.length]; - } -} - -struct SegRef -{ - string seg; - string sect; -} - - -static immutable SegRef[] dataSegs = [{SEG_DATA, SECT_DATA}, - {SEG_DATA, SECT_BSS}, - {SEG_DATA, SECT_COMMON}]; - - -ubyte[] getSection(in mach_header* header, intptr_t slide, - in char* segmentName, in char* sectionName) -{ - assert(header.magic == MH_MAGIC_64); - auto sect = getsectbynamefromheader_64(cast(mach_header_64*)header, - segmentName, - sectionName); - - if (sect !is null && sect.size > 0) - return (cast(ubyte*)sect.addr + slide)[0 .. cast(size_t)sect.size]; - return null; -} From a2550a5223b8e3ed69709c872fa2e079befecea7 Mon Sep 17 00:00:00 2001 From: tsbockman Date: Thu, 24 Mar 2016 13:14:05 -0700 Subject: [PATCH 297/768] Separate explicit uint and ulong overloads for bsf() and bsr() in core.bitop, instead of size_t. Add a software fallback algorithm. Fix infinite recursion on of the ulong overload on 64-bit. --- src/core/bitop.d | 138 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 128 insertions(+), 10 deletions(-) diff --git a/src/core/bitop.d b/src/core/bitop.d index de356f3e54..716cc9d83f 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -70,14 +70,21 @@ unittest * The bit number of the first bit set. * The return value is undefined if v is zero. */ -int bsf(size_t v) pure; +int bsf(uint v) pure +{ + static if (size_t.sizeof == ulong.sizeof) + { + pragma(inline, true); + return bsf(cast(ulong) v); + } + else + return softBsf!uint(v); +} /// ditto int bsf(ulong v) pure { - static if (size_t.sizeof == ulong.sizeof) - return bsf(cast(size_t) v); - else static if (size_t.sizeof == uint.sizeof) + static if (size_t.sizeof == uint.sizeof) { const sv = Split64(v); return (sv.lo == 0)? @@ -85,7 +92,7 @@ int bsf(ulong v) pure bsf(sv.lo); } else - static assert(false); + return softBsf!ulong(v); } /// @@ -110,14 +117,21 @@ unittest * The bit number of the first bit set. * The return value is undefined if v is zero. */ -int bsr(size_t v) pure; +int bsr(uint v) pure +{ + static if (size_t.sizeof == ulong.sizeof) + { + pragma(inline, true); + return bsr(cast(ulong) v); + } + else + return softBsr!uint(v); +} /// ditto int bsr(ulong v) pure { - static if (size_t.sizeof == ulong.sizeof) - return bsr(cast(size_t) v); - else static if (size_t.sizeof == uint.sizeof) + static if (size_t.sizeof == uint.sizeof) { const sv = Split64(v); return (sv.hi == 0)? @@ -125,7 +139,7 @@ int bsr(ulong v) pure bsr(sv.hi) + 32; } else - static assert(false); + return softBsr!ulong(v); } /// @@ -142,6 +156,110 @@ unittest assert(test_ctfe == 63); } +private alias softBsf(N) = softScan!(N, true); +private alias softBsr(N) = softScan!(N, false); + +/* Shared software fallback implementation for bit scan foward and reverse. + +If forward is true, bsf is computed (the index of the first set bit). +If forward is false, bsr is computed (the index of the last set bit). + +-1 is returned if no bits are set (v == 0). +*/ +private int softScan(N, bool forward)(N v) pure + if(is(N == uint) || is(N == ulong)) +{ + // bsf() and bsr() are officially undefined for v == 0. + if (!v) + return -1; + + // This is essentially an unrolled binary search: + enum mask(ulong lo) = forward ? cast(N) lo : cast(N)~lo; + enum inc(int up) = forward ? up : -up; + + N x; + int ret; + static if (is(N == ulong)) + { + x = v & mask!0x0000_0000_FFFF_FFFFL; + if (x) + { + v = x; + ret = forward ? 0 : 63; + } + else + ret = forward ? 32 : 31; + + x = v & mask!0x0000_FFFF_0000_FFFFL; + if (x) + v = x; + else + ret += inc!16; + } + else static if (is(N == uint)) + { + x = v & mask!0x0000_FFFF; + if (x) + { + v = x; + ret = forward ? 0 : 31; + } + else + ret = forward ? 16 : 15; + } + else + static assert(false); + + x = v & mask!0x00FF_00FF_00FF_00FFL; + if (x) + v = x; + else + ret += inc!8; + + x = v & mask!0x0F0F_0F0F_0F0F_0F0FL; + if (x) + v = x; + else + ret += inc!4; + + x = v & mask!0x3333_3333_3333_3333L; + if (x) + v = x; + else + ret += inc!2; + + x = v & mask!0x5555_5555_5555_5555L; + if (!x) + ret += inc!1; + + return ret; +} + +unittest +{ + assert(softBsf!uint(0u) == -1); + assert(softBsr!uint(0u) == -1); + assert(softBsf!ulong(0uL) == -1); + assert(softBsr!ulong(0uL) == -1); + + assert(softBsf!uint(0x0031_A000) == 13); + assert(softBsr!uint(0x0031_A000) == 21); + assert(softBsf!ulong(0x0000_0001_8000_0000L) == 31); + assert(softBsr!ulong(0x0000_0001_8000_0000L) == 32); + + foreach (b; 0 .. 64) + { + if(b < 32) + { + assert(softBsf!uint(1u << b) == b); + assert(softBsr!uint(1u << b) == b); + } + + assert(softBsf!ulong(1uL << b) == b); + assert(softBsr!ulong(1uL << b) == b); + } +} + /** * Tests the bit. * (No longer an intrisic - the compiler recognizes the patterns From 972f17cfbb8a992e626f3d3af1c3d9570978ecef Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Fri, 25 Mar 2016 22:47:07 +0100 Subject: [PATCH 298/768] core.math: Add unit test for ldexp() This PR adds a unit test for the ldexp() function using the IBM extended (double double) format. This format uses two doubles. The exponent range is the same as the one of the double type. --- src/core/math.d | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/math.d b/src/core/math.d index 75f06cd995..1b661d365c 100644 --- a/src/core/math.d +++ b/src/core/math.d @@ -105,6 +105,12 @@ unittest { assert(ldexp(1, -16384) == 0x1p-16384L); assert(ldexp(1, -16382) == 0x1p-16382L); } + else static if (real.mant_dig == 106) + { + assert(ldexp(1, 1023) == 0x1p1023L); + assert(ldexp(1, -1022) == 0x1p-1022L); + assert(ldexp(1, -1021) == 0x1p-1021L); + } else static if (real.mant_dig == 64) { assert(ldexp(1, -16384) == 0x1p-16384L); From 699dab51b73c37ccf3e397cffb34c2c49198f7e6 Mon Sep 17 00:00:00 2001 From: qchikara Date: Mon, 28 Mar 2016 01:51:39 +0900 Subject: [PATCH 299/768] Fix issue 15838 Many Win32 API callback functions miss extern(Windows) Add extern (Windows) to aliases and struct fields. --- src/core/sys/windows/commctrl.d | 18 +++++++++++------- src/core/sys/windows/imm.d | 2 ++ src/core/sys/windows/mmsystem.d | 2 +- src/core/sys/windows/ole.d | 5 ++++- src/core/sys/windows/prsht.d | 16 ++++++++++------ src/core/sys/windows/ras.d | 20 +++++++++++++------- src/core/sys/windows/shlobj.d | 2 +- src/core/sys/windows/vfw.d | 4 +++- src/core/sys/windows/wingdi.d | 26 +++++++++++++------------- src/core/sys/windows/wininet.d | 1 + 10 files changed, 59 insertions(+), 37 deletions(-) diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index ba39081628..aefb71c64c 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -3869,7 +3869,7 @@ static if (_WIN32_WINNT >= 0x501) { } alias LVINSERTGROUPSORTED* PLVINSERTGROUPSORTED; - alias int function(INT, INT, VOID*) PFNLVGROUPCOMPARE; + extern (Windows) alias int function(INT, INT, VOID*) PFNLVGROUPCOMPARE; struct LVSETINFOTIP { UINT cbSize = LVSETINFOTIP.sizeof; @@ -3923,7 +3923,7 @@ static if (_WIN32_WINNT >= 0x600) { } } -alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE; +extern (Windows) alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE; struct NMLISTVIEW { NMHDR hdr; @@ -4084,7 +4084,7 @@ static if (_WIN32_WINNT >= 0x600) { } } -alias int function(LPARAM, LPARAM, LPARAM) PFNTVCOMPARE; +extern (Windows) alias int function(LPARAM, LPARAM, LPARAM) PFNTVCOMPARE; struct TVSORTCB { HTREEITEM hParent; PFNTVCOMPARE lpfnCompare; @@ -4893,9 +4893,11 @@ version (Unicode) { } +extern (Windows) { alias INT function(PVOID, PVOID) PFNDPAENUMCALLBACK; alias INT function(PVOID, PVOID) PFNDSAENUMCALLBACK; alias INT function(PVOID, PVOID, LPARAM) PFNDPACOMPARE; +} static if (_WIN32_WINNT >= 0x501) { extern (Windows) @@ -4929,13 +4931,15 @@ uint INDEXTOOVERLAYMASK(uint i) { return i << 8; } uint INDEXTOSTATEIMAGEMASK(uint i) { return i << 12; } template HANDLE_WM_NOTIFY(R) { - R HANDLE_WM_NOTIFY(HWND hwnd, WPARAM wParam, LPARAM lParam, - R function(HWND, int, NMHDR*) fn) { + private alias _prm_HANDLE_WM_NOTIFY = extern (Windows) + R function(HWND, int, NMHDR*); // to inject linkage type + R HANDLE_WM_NOTIFY(HWND hwnd, WPARAM wParam, LPARAM lParam, _prm_HANDLE_WM_NOTIFY fn) { return fn(hwnd, wParam, cast(NMHDR*) lParam); } } -int FORWARD_WM_NOTIFY(HWND hwnd, int idFrom, NMHDR* pnmhdr, - int function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) fn) { +private alias _prm_FORWARD_WM_NOTIFY = extern (Windows) + int function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); // to inject linkage type +int FORWARD_WM_NOTIFY(HWND hwnd, int idFrom, NMHDR* pnmhdr, _prm_FORWARD_WM_NOTIFY fn) { return fn(hwnd, WM_NOTIFY, idFrom, cast(LPARAM) pnmhdr); } diff --git a/src/core/sys/windows/imm.d b/src/core/sys/windows/imm.d index 6f8f25a557..efc2d765d8 100644 --- a/src/core/sys/windows/imm.d +++ b/src/core/sys/windows/imm.d @@ -356,8 +356,10 @@ struct IMEMENUITEMINFOW{ } alias IMEMENUITEMINFOW* PIMEMENUITEMINFOW, LPIMEMENUITEMINFOW; +extern (Windows) { alias int function (LPCSTR, DWORD, LPCSTR, LPVOID) REGISTERWORDENUMPROCA; alias int function (LPCWSTR, DWORD, LPCWSTR, LPVOID) REGISTERWORDENUMPROCW; +} version(Unicode) { alias REGISTERWORDENUMPROCW REGISTERWORDENUMPROC; diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index a11a4e1834..cbac06d4de 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -1020,7 +1020,7 @@ public import core.stdc.stdio : SEEK_SET, SEEK_CUR, SEEK_END; alias DWORD MCIERROR; alias UINT MCIDEVICEID; -alias UINT function (MCIDEVICEID, DWORD) YIELDPROC; +extern(Windows) alias UINT function (MCIDEVICEID, DWORD) YIELDPROC; alias UINT MMVERSION; alias UINT MMRESULT; diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index 02dc2555b3..eb4117f083 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -217,7 +217,7 @@ alias OLEOBJECT* LPOLEOBJECT; //#endif struct OLECLIENTVTBL { - int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack; + extern (Windows) int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack; } alias OLECLIENTVTBL* LPOLECLIENTVTBL; @@ -227,6 +227,7 @@ struct OLECLIENT { alias OLECLIENT* LPOLECLIENT; struct OLESTREAMVTBL { + extern (Windows): DWORD function(LPOLESTREAM, void*, DWORD) Get; DWORD function(LPOLESTREAM, void*, DWORD) Put; } @@ -243,6 +244,7 @@ enum OLE_SERVER_USE { } struct OLESERVERVTBL { + extern (Windows): OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC*) Open; OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, @@ -263,6 +265,7 @@ struct OLESERVER { alias OLESERVER* LPOLESERVER; struct OLESERVERDOCVTBL { +extern (Windows): OLESTATUS function(LPOLESERVERDOC) Save; OLESTATUS function(LPOLESERVERDOC) Close; OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR) SetHostNames; diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d index c24fe3adb0..2a92a38f94 100644 --- a/src/core/sys/windows/prsht.d +++ b/src/core/sys/windows/prsht.d @@ -189,9 +189,11 @@ enum { PSM_SETFINISHTEXTW // = WM_USER + 121, } -alias UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA; -alias UINT function(HWND, UINT, LPPROPSHEETPAGEW) LPFNPSPCALLBACKW; -alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; +extern (Windows) { + alias UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA; + alias UINT function(HWND, UINT, LPPROPSHEETPAGEW) LPFNPSPCALLBACKW; + alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; +} align(4): @@ -317,9 +319,11 @@ struct PROPSHEETHEADERW { alias PROPSHEETHEADERW* LPPROPSHEETHEADERW; alias const(PROPSHEETHEADERW)* LPCPROPSHEETHEADERW; -alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE; -alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) - LPFNADDPROPSHEETPAGES; +extern (Windows) { + alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE; + alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) + LPFNADDPROPSHEETPAGES; +} struct PSHNOTIFY { NMHDR hdr; diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index 05085400c4..d737fb12fc 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -808,14 +808,16 @@ alias RASENTRYNAME* LPRASENTRYNAME; //} /* Callback prototypes */ -deprecated { - alias BOOL function (HWND, LPSTR, DWORD, LPDWORD) ORASADFUNC; -} +extern (Windows) { /* WINAPI */ + deprecated { + alias BOOL function (HWND, LPSTR, DWORD, LPDWORD) ORASADFUNC; + } -alias void function (UINT, RASCONNSTATE, DWORD) RASDIALFUNC; -alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD) RASDIALFUNC1; -alias DWORD function (ULONG_PTR, DWORD, HRASCONN, UINT, -RASCONNSTATE, DWORD, DWORD) RASDIALFUNC2; + alias void function (UINT, RASCONNSTATE, DWORD) RASDIALFUNC; + alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD) RASDIALFUNC1; + alias DWORD function (ULONG_PTR, DWORD, HRASCONN, UINT, + RASCONNSTATE, DWORD, DWORD) RASDIALFUNC2; +} /* External functions */ DWORD RasDialA(LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, DWORD, LPVOID, LPHRASCONN); @@ -856,8 +858,10 @@ DWORD RasValidateEntryNameA(LPCSTR, LPCSTR); DWORD RasValidateEntryNameW(LPCWSTR, LPCWSTR); //static if(_WIN32_WINNT >= 0x401) { +extern (Windows) { /* WINAPI */ alias BOOL function(LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; alias BOOL function(LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; +} DWORD RasGetSubEntryHandleA(HRASCONN, DWORD, LPHRASCONN); DWORD RasGetSubEntryHandleW(HRASCONN, DWORD, LPHRASCONN); @@ -888,10 +892,12 @@ DWORD RasValidateEntryNameW(LPCWSTR, LPCWSTR); //} static if (_WIN32_WINNT >= 0x500) { +extern (Windows) { /* WINAPI */ alias DWORD function(HRASCONN) RasCustomHangUpFn; alias DWORD function(LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; alias DWORD function(HINSTANCE, LPRASDIALEXTENSIONS, LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN, DWORD) RasCustomDialFn; +} DWORD RasInvokeEapUI(HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); DWORD RasGetLinkStatistics(HRASCONN, DWORD, RAS_STATS*); diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index 4200ee8d4b..a069a47186 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -407,7 +407,7 @@ struct ITEMIDLIST { alias ITEMIDLIST* LPITEMIDLIST; alias const(ITEMIDLIST)* LPCITEMIDLIST; -alias int function(HWND, UINT, LPARAM, LPARAM) BFFCALLBACK; +extern (Windows) alias int function(HWND, UINT, LPARAM, LPARAM) BFFCALLBACK; struct BROWSEINFOA { HWND hwndOwner; diff --git a/src/core/sys/windows/vfw.d b/src/core/sys/windows/vfw.d index 2fc2547675..ff34133c42 100644 --- a/src/core/sys/windows/vfw.d +++ b/src/core/sys/windows/vfw.d @@ -237,7 +237,7 @@ struct ICCOMPRESSFRAMES { DWORD dwRate; DWORD dwScale; DWORD dwOverheadPerFrame; DWORD dwReserved2; - +extern (Windows): LONG function(LPARAM lInput, LONG lFrame, LPVOID lpBits, LONG len) GetData; LONG function(LPARAM lOutput, LONG lFrame, LPVOID lpBits, LONG len) PutData; } @@ -253,6 +253,7 @@ enum { struct ICSETSTATUSPROC { DWORD dwFlags; LPARAM lParam; +extern (Windows) LONG function(LPARAM lParam, UINT message, LONG l) Status; } @@ -611,6 +612,7 @@ LRESULT ICDrawRenderBuffer(HIC hic) { return ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0); } +extern (Windows) LRESULT ICSetStatusProc(HIC hic, DWORD dwFlags, LRESULT lParam, LONG function(LPARAM, UINT, LONG) fpfnStatus) { ICSETSTATUSPROC ic; diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index ccfb9887bc..3f330fc3a6 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -3945,19 +3945,19 @@ alias DRAWPATRECT* PDRAWPATRECT; // --------- // Callbacks - -alias BOOL function (HDC, int) ABORTPROC; -alias int function (HDC, HANDLETABLE*, METARECORD*, int, LPARAM) MFENUMPROC; -alias int function (HDC, HANDLETABLE*, const(ENHMETARECORD)*, int, LPARAM) ENHMFENUMPROC; -alias int function (const(LOGFONTA)*, const(TEXTMETRICA)*, DWORD, LPARAM) FONTENUMPROCA, OLDFONTENUMPROCA; -alias int function (const(LOGFONTW)*, const(TEXTMETRICW)*, DWORD, LPARAM) FONTENUMPROCW, OLDFONTENUMPROCW; -alias int function (LPSTR, LPARAM) ICMENUMPROCA; -alias int function (LPWSTR, LPARAM) ICMENUMPROCW; -alias void function (LPVOID, LPARAM) GOBJENUMPROC; -alias void function (int, int, LPARAM) LINEDDAPROC; -alias UINT function (HWND, HMODULE, LPDEVMODEA, LPSTR, LPSTR, LPDEVMODEA, LPSTR, UINT) LPFNDEVMODE; -alias DWORD function (LPSTR, LPSTR, UINT, LPSTR, LPDEVMODEA) LPFNDEVCAPS; - +extern (Windows) { + alias BOOL function (HDC, int) ABORTPROC; + alias int function (HDC, HANDLETABLE*, METARECORD*, int, LPARAM) MFENUMPROC; + alias int function (HDC, HANDLETABLE*, const(ENHMETARECORD)*, int, LPARAM) ENHMFENUMPROC; + alias int function (const(LOGFONTA)*, const(TEXTMETRICA)*, DWORD, LPARAM) FONTENUMPROCA, OLDFONTENUMPROCA; + alias int function (const(LOGFONTW)*, const(TEXTMETRICW)*, DWORD, LPARAM) FONTENUMPROCW, OLDFONTENUMPROCW; + alias int function (LPSTR, LPARAM) ICMENUMPROCA; + alias int function (LPWSTR, LPARAM) ICMENUMPROCW; + alias void function (LPVOID, LPARAM) GOBJENUMPROC; + alias void function (int, int, LPARAM) LINEDDAPROC; + alias UINT function (HWND, HMODULE, LPDEVMODEA, LPSTR, LPSTR, LPDEVMODEA, LPSTR, UINT) LPFNDEVMODE; + alias DWORD function (LPSTR, LPSTR, UINT, LPSTR, LPDEVMODEA) LPFNDEVCAPS; +} // --------- // C Macros. diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index 862e405c29..c3a7f7d6d9 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -870,6 +870,7 @@ struct GOPHER_ATTRIBUTE_TYPE { } alias GOPHER_ATTRIBUTE_TYPE* LPGOPHER_ATTRIBUTE_TYPE; +extern (Windows) alias BOOL function(LPGOPHER_ATTRIBUTE_TYPE, DWORD) GOPHER_ATTRIBUTE_ENUMERATOR; From ab73b0a564aee713e3985974d346297d8032b574 Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 22 Mar 2016 19:54:59 +0100 Subject: [PATCH 300/768] core.sys.windows.winuser: Provide valid GetMonitorInfo overloads LDC isn't fooled by using the same mangled name for multiple C function declarations with differing signatures (see DMD bugzilla 15217). In the MS header, the ...EX structs derive from the non-EX ones, so a pointer to an EX struct is implicitly converted to a pointer to the base struct. Provide extern(D) wrappers performing the explicitly required cast in D. --- src/core/sys/windows/winuser.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 4b7d8449c7..cb86b169ef 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -4423,9 +4423,9 @@ int BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM); UINT SendInput(UINT, LPINPUT, int); BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM); BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFO); -BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFOEXA); +extern(D) BOOL GetMonitorInfoA(HMONITOR m, LPMONITORINFOEXA mi) { return GetMonitorInfoA(m, cast(LPMONITORINFO)mi); } BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFO); -BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFOEXW); +extern(D) BOOL GetMonitorInfoW(HMONITOR m, LPMONITORINFOEXW mi) { return GetMonitorInfoW(m, cast(LPMONITORINFO)mi); } HMONITOR MonitorFromPoint(POINT, DWORD); HMONITOR MonitorFromRect(LPCRECT, DWORD); HMONITOR MonitorFromWindow(HWND, DWORD); From c96645ba8ae21288e6a0be15289dda9bc2a81b60 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Wed, 30 Mar 2016 22:50:22 +0200 Subject: [PATCH 301/768] report out-of-memory for allocation a bit below size_t.max --- src/gc/gc.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gc/gc.d b/src/gc/gc.d index c380966c86..eac43b6ce3 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -1788,6 +1788,8 @@ struct Gcx LargeObjectPool* pool; size_t pn; immutable npages = (size + PAGESIZE - 1) / PAGESIZE; + if (npages == 0) + onOutOfMemoryErrorNoGC(); // size just below size_t.max requested bool tryAlloc() nothrow { From 07e3042de2d1c962b8b6dee7b586c940adea759d Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Wed, 30 Mar 2016 23:04:12 +0200 Subject: [PATCH 302/768] add unittest for bugzilla 1180 --- src/gc/gc.d | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gc/gc.d b/src/gc/gc.d index eac43b6ce3..ab5955fb71 100644 --- a/src/gc/gc.d +++ b/src/gc/gc.d @@ -3302,6 +3302,19 @@ unittest // bugzilla 15822 GC.collect(); } +unittest // bugzilla 1180 +{ + import core.exception; + try + { + size_t x = size_t.max - 100; + byte[] big_buf = new byte[x]; + } + catch(OutOfMemoryError) + { + } +} + /* ============================ SENTINEL =============================== */ From 7ca8c5a962cfd1aef8b8dd74a45568b37bc4fba1 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 4 Apr 2016 12:04:15 -0700 Subject: [PATCH 303/768] fix Ddoc header comments in rt.array* --- src/rt/arrayassign.d | 12 +++++------- src/rt/arraybyte.d | 11 ++++------- src/rt/arraycast.d | 11 ++++------- src/rt/arraycat.d | 11 ++++------- src/rt/arraydouble.d | 11 ++++------- src/rt/arrayfloat.d | 11 ++++------- src/rt/arrayint.d | 11 ++++------- src/rt/arrayreal.d | 11 ++++------- src/rt/arrayshort.d | 11 ++++------- 9 files changed, 37 insertions(+), 63 deletions(-) diff --git a/src/rt/arrayassign.d b/src/rt/arrayassign.d index 68305ef5f3..a128eaec05 100644 --- a/src/rt/arrayassign.d +++ b/src/rt/arrayassign.d @@ -1,16 +1,14 @@ /** * Implementation of array assignment support routines. * - * Copyright: Copyright Digital Mars 2000 - 2010. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * + * Copyright: Copyright Digital Mars 2010 - 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * Authors: Walter Bright, Kenji Hara + * Source: $(DRUNTIMESRC src/rt/_arrayassign.d) */ -/* Copyright Digital Mars 2000 - 2010. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module rt.arrayassign; private diff --git a/src/rt/arraybyte.d b/src/rt/arraybyte.d index 8e835d93f1..b04bbd6484 100644 --- a/src/rt/arraybyte.d +++ b/src/rt/arraybyte.d @@ -2,17 +2,14 @@ * Contains SSE2 and MMX versions of certain operations for char, byte, and * ubyte ('a', 'g' and 'h' suffixes). * - * Copyright: Copyright Digital Mars 2008 - 2010. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Copyright: Copyright Digital Mars 2008 - 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * Authors: Walter Bright, based on code originally written by Burton Radons, * Brian Schott (64-bit operations) + * Source: $(DRUNTIMESRC src/rt/_arraybyte.d) */ -/* Copyright Digital Mars 2008 - 2010. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module rt.arraybyte; import core.cpuid; diff --git a/src/rt/arraycast.d b/src/rt/arraycast.d index 52b135b505..ddb0a7dcae 100644 --- a/src/rt/arraycast.d +++ b/src/rt/arraycast.d @@ -1,16 +1,13 @@ /** * Implementation of array cast support routines. * - * Copyright: Copyright Digital Mars 2004 - 2010. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Copyright: Copyright Digital Mars 2004 - 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * Authors: Walter Bright, Sean Kelly + * Source: $(DRUNTIMESRC src/rt/_arraycast.d) */ -/* Copyright Digital Mars 2004 - 2010. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module rt.arraycast; /****************************************** diff --git a/src/rt/arraycat.d b/src/rt/arraycat.d index c5542f2232..f3f05c303d 100644 --- a/src/rt/arraycat.d +++ b/src/rt/arraycat.d @@ -1,16 +1,13 @@ /** * Implementation of array copy support routines. * - * Copyright: Copyright Digital Mars 2004 - 2010. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Copyright: Copyright Digital Mars 2004 - 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * Authors: Walter Bright, Sean Kelly + * Source: $(DRUNTIMESRC src/rt/_arraycat.d) */ -/* Copyright Digital Mars 2004 - 2010. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module rt.arraycat; private diff --git a/src/rt/arraydouble.d b/src/rt/arraydouble.d index 8c3fe68328..48c16a6495 100644 --- a/src/rt/arraydouble.d +++ b/src/rt/arraydouble.d @@ -1,17 +1,14 @@ /** * Contains SSE2 and MMX versions of certain operations for double. * - * Copyright: Copyright Digital Mars 2008 - 2010. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Copyright: Copyright Digital Mars 2008 - 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * Authors: Walter Bright, based on code originally written by Burton Radons; * Jim Crapuchettes (64 bit SSE code) + * Source: $(DRUNTIMESRC src/rt/_arraydouble.d) */ -/* Copyright Digital Mars 2008 - 2010. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module rt.arraydouble; // debug=PRINTF; diff --git a/src/rt/arrayfloat.d b/src/rt/arrayfloat.d index 0df5639b22..67389b81a9 100644 --- a/src/rt/arrayfloat.d +++ b/src/rt/arrayfloat.d @@ -1,16 +1,13 @@ /** * Contains SSE2 and MMX versions of certain operations for float. * - * Copyright: Copyright Digital Mars 2008 - 2010. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Copyright: Copyright Digital Mars 2008 - 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * Authors: Walter Bright, based on code originally written by Burton Radons + * Source: $(DRUNTIMESRC src/rt/_arrayfloat.d) */ -/* Copyright Digital Mars 2008 - 2010. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module rt.arrayfloat; // debug=PRINTF diff --git a/src/rt/arrayint.d b/src/rt/arrayint.d index 7597e20a13..a92657a674 100644 --- a/src/rt/arrayint.d +++ b/src/rt/arrayint.d @@ -2,16 +2,13 @@ * Contains SSE/MMX versions of certain operations for dchar, int, and uint ('w', * 'i' and 'k' suffixes). * - * Copyright: Copyright Digital Mars 2008 - 2010. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Copyright: Copyright Digital Mars 2008 - 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * Authors: Walter Bright, based on code originally written by Burton Radons + * Source: $(DRUNTIMESRC src/rt/_arrayint.d) */ -/* Copyright Digital Mars 2008 - 2010. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module rt.arrayint; // debug=PRINTF diff --git a/src/rt/arrayreal.d b/src/rt/arrayreal.d index 0201675470..c79846b6b2 100644 --- a/src/rt/arrayreal.d +++ b/src/rt/arrayreal.d @@ -1,16 +1,13 @@ /** * Contains SSE2 and MMX versions of certain operations for real. * - * Copyright: Copyright Digital Mars 2008 - 2010. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Copyright: Copyright Digital Mars 2008 - 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * Authors: Walter Bright, based on code originally written by Burton Radons + * Source: $(DRUNTIMESRC src/rt/_arrayreal.d) */ -/* Copyright Digital Mars 2008 - 2010. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module rt.arrayreal; // debug=PRINTF diff --git a/src/rt/arrayshort.d b/src/rt/arrayshort.d index 5073dc92fc..7c3af532bb 100644 --- a/src/rt/arrayshort.d +++ b/src/rt/arrayshort.d @@ -2,16 +2,13 @@ * Contains SSE2 and MMX versions of certain operations for wchar, short, * and ushort ('u', 's' and 't' suffixes). * - * Copyright: Copyright Digital Mars 2008 - 2010. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Copyright: Copyright Digital Mars 2008 - 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * Authors: Walter Bright, based on code originally written by Burton Radons + * Source: $(DRUNTIMESRC src/rt/_arrayshort.d) */ -/* Copyright Digital Mars 2008 - 2010. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module rt.arrayshort; // debug=PRINTF From d4f88a0a53c6b191842eb79225f38ff626f898d8 Mon Sep 17 00:00:00 2001 From: tcak Date: Wed, 6 Apr 2016 21:35:05 +0300 Subject: [PATCH 304/768] If malloc fails, prevent getting Segmentation Fault When the memory is limited for the process, malloc fails, and data is null. Hence, it creates Segmentation Fault by trying to write a null pointer. --- src/rt/tlsgc.d | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rt/tlsgc.d b/src/rt/tlsgc.d index e6da2e9a09..62527c3c89 100644 --- a/src/rt/tlsgc.d +++ b/src/rt/tlsgc.d @@ -32,6 +32,7 @@ struct Data void* init() { auto data = cast(Data*).malloc(Data.sizeof); + if( data is null ) return null; *data = Data.init; // do module specific initialization From 571b33ee94eea7c785c9d2594f9102a080a94698 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 7 Apr 2016 01:15:06 +0000 Subject: [PATCH 305/768] core.sys.windows.stat: Fix constness --- src/core/sys/windows/stat.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/sys/windows/stat.d b/src/core/sys/windows/stat.d index 9612793afc..03d219b110 100644 --- a/src/core/sys/windows/stat.d +++ b/src/core/sys/windows/stat.d @@ -45,6 +45,6 @@ struct struct_stat int st_ctime; } -int stat(char *, struct_stat *); +int stat(const(char)*, struct_stat *); int fstat(int, struct_stat *) @trusted; -int _wstat(wchar *, struct_stat *); +int _wstat(const(wchar)*, struct_stat *); From c9e3bff1d70721ebc689ccf095d67e8784d29384 Mon Sep 17 00:00:00 2001 From: tcak Date: Thu, 7 Apr 2016 06:29:54 +0300 Subject: [PATCH 306/768] Init calls onOutOfMemoryError if malloc fails --- src/rt/tlsgc.d | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rt/tlsgc.d b/src/rt/tlsgc.d index 62527c3c89..f5eef1e51c 100644 --- a/src/rt/tlsgc.d +++ b/src/rt/tlsgc.d @@ -32,7 +32,8 @@ struct Data void* init() { auto data = cast(Data*).malloc(Data.sizeof); - if( data is null ) return null; + import core.exception; + if( data is null ) core.exception.onOutOfMemoryError(); *data = Data.init; // do module specific initialization From 3af285fea29e7bbe2bea9b4fcb4b93f1ecb72755 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Thu, 7 Apr 2016 05:59:37 +0200 Subject: [PATCH 307/768] fix issue 15111 - hashOf fails for structs that have an alias this to a dynamic array --- src/core/internal/hash.d | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/core/internal/hash.d b/src/core/internal/hash.d index f27f021354..3aa1527738 100644 --- a/src/core/internal/hash.d +++ b/src/core/internal/hash.d @@ -37,7 +37,9 @@ size_t hashOf(T)(auto ref T val, size_t seed = 0) if (!is(T == enum) && __traits } //dynamic array hash -size_t hashOf(T)(auto ref T val, size_t seed = 0) if (!is(T == enum) && !is(T : typeof(null)) && is(T S: S[]) && !__traits(isStaticArray, T)) +size_t hashOf(T)(auto ref T val, size_t seed = 0) +if (!is(T == enum) && !is(T : typeof(null)) && is(T S: S[]) && !__traits(isStaticArray, T) + && !is(T == struct) && !is(T == class) && !is(T == union)) { alias ElementType = typeof(val[0]); static if (is(ElementType == interface) || is(ElementType == class) || @@ -91,7 +93,9 @@ size_t hashOf(T)(auto ref T val, size_t seed = 0) if (!is(T == enum) && is(T : t //Pointers hash. CTFE unsupported if not null @trusted nothrow pure -size_t hashOf(T)(auto ref T val, size_t seed = 0) if (!is(T == enum) && is(T V : V*) && !is(T : typeof(null))) +size_t hashOf(T)(auto ref T val, size_t seed = 0) +if (!is(T == enum) && is(T V : V*) && !is(T : typeof(null)) + && !is(T == struct) && !is(T == class) && !is(T == union)) { if(__ctfe) { @@ -387,6 +391,27 @@ unittest } +unittest // issue 15111 +{ + void testAlias(T)() + { + static struct Foo + { + T t; + alias t this; + } + Foo foo; + static assert(is(typeof(hashOf(foo)))); + } + // was fixed + testAlias!(int[]); + testAlias!(int*); + // was not affected + testAlias!int; + testAlias!(void delegate()); + testAlias!(string[string]); + testAlias!(int[8]); +} // MurmurHash3 was written by Austin Appleby, and is placed in the public // domain. The author hereby disclaims copyright to this source code. From 959685d33de37b2ab2b290c3901b0f90d5545fcb Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sat, 16 Apr 2016 06:46:21 +0300 Subject: [PATCH 308/768] update links to dlang --- changelog.dd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.dd b/changelog.dd index ee89fd1500..07a1f4e946 100644 --- a/changelog.dd +++ b/changelog.dd @@ -64,7 +64,7 @@ Macros: BUGZILLA = Bugzilla $0 - PULL_REQUEST = $(LINK2 https://github.com/D-Programming-Language/$1/pull/$2, $1#$2) + PULL_REQUEST = $(LINK2 https://github.com/dlang/$1/pull/$2, $1#$2) DRUNTIMEPR = $(PULL_REQUEST druntime,$1) BOOKTABLE = $+
$1
From 432946b3d18c4f38eca90bbf82c2b41e4992875b Mon Sep 17 00:00:00 2001 From: Dan Olson Date: Sun, 6 Dec 2015 09:51:00 -0800 Subject: [PATCH 309/768] Support iOS, TVOS, and WatchOS x86 in druntime Add iOS, TVOS, and WatchOS x86 support to druntime by sharing the existing OSX code blocks. Version Darwin replaces OSX in most places for these code blocks and is defined at the beginning of these modules based on OSX, iOS, TVOS, and WatchOS versions. iOS, tvOS, and watchOS devices are ARM-based but the development simulators are x86 based, so with these changes, druntime can be compiled and used in the sim. Follow-up changes will add ARM support. --- .../gcbench/vdparser.extra/vdc/versions.d | 3 + mak/COPY | 15 ++ src/core/demangle.d | 10 +- src/core/runtime.d | 18 ++- src/core/stdc/config.d | 11 +- src/core/stdc/errno.d | 11 +- src/core/stdc/fenv.d | 13 +- src/core/stdc/locale.d | 11 +- src/core/stdc/math.d | 80 +++++----- src/core/stdc/stdio.d | 17 ++- src/core/stdc/stdlib.d | 11 +- src/core/stdc/string.d | 11 +- src/core/stdc/time.d | 15 +- src/core/sync/semaphore.d | 27 ++-- src/core/sys/darwin/execinfo.d | 25 ++++ src/core/sys/darwin/mach/dyld.d | 36 +++++ src/core/sys/darwin/mach/getsect.d | 31 ++++ src/core/sys/darwin/mach/kern_return.d | 82 +++++++++++ src/core/sys/darwin/mach/loader.d | 106 +++++++++++++ src/core/sys/darwin/mach/port.d | 36 +++++ src/core/sys/darwin/mach/semaphore.d | 66 +++++++++ src/core/sys/darwin/mach/thread_act.d | 136 +++++++++++++++++ src/core/sys/darwin/pthread.d | 59 ++++++++ src/core/sys/darwin/sys/cdefs.d | 25 ++++ src/core/sys/darwin/sys/event.d | 139 ++++++++++++++++++ src/core/sys/darwin/sys/mman.d | 111 ++++++++++++++ src/core/sys/osx/execinfo.d | 8 +- src/core/sys/osx/mach/dyld.d | 14 +- src/core/sys/osx/mach/getsect.d | 9 +- src/core/sys/osx/mach/kern_return.d | 59 +------- src/core/sys/osx/mach/loader.d | 84 +---------- src/core/sys/osx/mach/port.d | 13 +- src/core/sys/osx/mach/semaphore.d | 43 +----- src/core/sys/osx/mach/thread_act.d | 113 +------------- src/core/sys/osx/pthread.d | 36 +---- src/core/sys/osx/sys/cdefs.d | 10 +- src/core/sys/osx/sys/event.d | 116 +-------------- src/core/sys/osx/sys/mman.d | 96 +----------- src/core/sys/posix/arpa/inet.d | 13 +- src/core/sys/posix/dirent.d | 54 +++++-- src/core/sys/posix/dlfcn.d | 11 +- src/core/sys/posix/fcntl.d | 11 +- src/core/sys/posix/grp.d | 15 +- src/core/sys/posix/net/if_.d | 11 +- src/core/sys/posix/netdb.d | 11 +- src/core/sys/posix/netinet/in_.d | 15 +- src/core/sys/posix/netinet/tcp.d | 11 +- src/core/sys/posix/poll.d | 11 +- src/core/sys/posix/pthread.d | 31 ++-- src/core/sys/posix/pwd.d | 15 +- src/core/sys/posix/sched.d | 15 +- src/core/sys/posix/semaphore.d | 13 +- src/core/sys/posix/signal.d | 23 ++- src/core/sys/posix/stdio.d | 11 +- src/core/sys/posix/stdlib.d | 15 +- src/core/sys/posix/sys/ioctl.d | 11 +- src/core/sys/posix/sys/ipc.d | 11 +- src/core/sys/posix/sys/mman.d | 25 +++- src/core/sys/posix/sys/resource.d | 15 +- src/core/sys/posix/sys/select.d | 11 +- src/core/sys/posix/sys/shm.d | 11 +- src/core/sys/posix/sys/socket.d | 15 +- src/core/sys/posix/sys/stat.d | 30 +++- src/core/sys/posix/sys/time.d | 11 +- src/core/sys/posix/sys/types.d | 17 ++- src/core/sys/posix/sys/uio.d | 11 +- src/core/sys/posix/sys/un.d | 11 +- src/core/sys/posix/sys/utsname.d | 11 +- src/core/sys/posix/sys/wait.d | 13 +- src/core/sys/posix/syslog.d | 11 +- src/core/sys/posix/termios.d | 13 +- src/core/sys/posix/time.d | 19 ++- src/core/sys/posix/unistd.d | 17 ++- src/core/sys/posix/utime.d | 11 +- src/core/thread.d | 42 +++--- src/core/time.d | 29 ++-- src/gc/os.d | 13 +- src/rt/alloca.d | 11 +- src/rt/deh_win64_posix.d | 11 +- src/rt/qsort.d | 11 +- src/rt/sections.d | 11 +- src/rt/sections_osx.d | 19 ++- win32.mak | 37 +++++ win64.mak | 37 +++++ 84 files changed, 1691 insertions(+), 796 deletions(-) create mode 100644 src/core/sys/darwin/execinfo.d create mode 100644 src/core/sys/darwin/mach/dyld.d create mode 100644 src/core/sys/darwin/mach/getsect.d create mode 100644 src/core/sys/darwin/mach/kern_return.d create mode 100644 src/core/sys/darwin/mach/loader.d create mode 100644 src/core/sys/darwin/mach/port.d create mode 100644 src/core/sys/darwin/mach/semaphore.d create mode 100644 src/core/sys/darwin/mach/thread_act.d create mode 100644 src/core/sys/darwin/pthread.d create mode 100644 src/core/sys/darwin/sys/cdefs.d create mode 100644 src/core/sys/darwin/sys/event.d create mode 100644 src/core/sys/darwin/sys/mman.d diff --git a/benchmark/gcbench/vdparser.extra/vdc/versions.d b/benchmark/gcbench/vdparser.extra/vdc/versions.d index 6a5b826502..38eec4747d 100644 --- a/benchmark/gcbench/vdparser.extra/vdc/versions.d +++ b/benchmark/gcbench/vdparser.extra/vdc/versions.d @@ -32,6 +32,9 @@ static @property int[string] sPredefinedVersions() "Win64" : 0, "linux" : -1, "OSX" : -1, + "iOS" : -1, + "TVOS" : -1, + "WatchOS" : -1, "FreeBSD" : -1, "OpenBSD" : -1, "NetBSD" : -1, diff --git a/mak/COPY b/mak/COPY index c74ad6d250..c13fc7e516 100644 --- a/mak/COPY +++ b/mak/COPY @@ -47,6 +47,21 @@ COPY=\ $(IMPDIR)\core\stdcpp\typeinfo.d \ $(IMPDIR)\core\stdcpp\exception.d \ \ + $(IMPDIR)\core\sys\darwin\execinfo.d \ + $(IMPDIR)\core\sys\darwin\pthread.d \ + \ + $(IMPDIR)\core\sys\darwin\mach\dyld.d \ + $(IMPDIR)\core\sys\darwin\mach\getsect.d \ + $(IMPDIR)\core\sys\darwin\mach\kern_return.d \ + $(IMPDIR)\core\sys\darwin\mach\loader.d \ + $(IMPDIR)\core\sys\darwin\mach\port.d \ + $(IMPDIR)\core\sys\darwin\mach\semaphore.d \ + $(IMPDIR)\core\sys\darwin\mach\thread_act.d \ + \ + $(IMPDIR)\core\sys\darwin\sys\cdefs.d \ + $(IMPDIR)\core\sys\darwin\sys\event.d \ + $(IMPDIR)\core\sys\darwin\sys\mman.d \ + \ $(IMPDIR)\core\sys\freebsd\dlfcn.d \ $(IMPDIR)\core\sys\freebsd\execinfo.d \ \ diff --git a/src/core/demangle.d b/src/core/demangle.d index 1d497cfd21..56b2fe3db7 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -12,6 +12,14 @@ module core.demangle; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; debug(trace) import core.stdc.stdio : printf; debug(info) import core.stdc.stdio : printf; @@ -1891,7 +1899,7 @@ unittest */ version(Win32) enum string cPrefix = "_"; -else version(OSX) +else version(Darwin) enum string cPrefix = "_"; else enum string cPrefix = ""; diff --git a/src/core/runtime.d b/src/core/runtime.d index cd9c0fe2ef..915f106ebd 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -16,6 +16,14 @@ module core.runtime; version (Windows) import core.stdc.wchar_ : wchar_t; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; /// C interface for Runtime.loadLibrary extern (C) void* rt_loadLibrary(const char* name); @@ -403,8 +411,8 @@ extern (C) bool runModuleUnitTests() // backtrace version( CRuntime_Glibc ) import core.sys.linux.execinfo; - else version( OSX ) - import core.sys.osx.execinfo; + else version( Darwin ) + import core.sys.darwin.execinfo; else version( FreeBSD ) import core.sys.freebsd.execinfo; else version( Windows ) @@ -485,8 +493,8 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) // backtrace version( CRuntime_Glibc ) import core.sys.linux.execinfo; - else version( OSX ) - import core.sys.osx.execinfo; + else version( Darwin ) + import core.sys.darwin.execinfo; else version( FreeBSD ) import core.sys.freebsd.execinfo; else version( Windows ) @@ -636,7 +644,7 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) const(char)[] fixline( const(char)[] buf, return ref char[4096] fixbuf ) const { size_t symBeg, symEnd; - version( OSX ) + version( Darwin ) { // format is: // 1 module 0x00000000 D6module4funcAFZv + 0 diff --git a/src/core/stdc/config.d b/src/core/stdc/config.d index 712714e0c0..e243a1a2dc 100644 --- a/src/core/stdc/config.d +++ b/src/core/stdc/config.d @@ -12,6 +12,15 @@ module core.stdc.config; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + extern (C): @trusted: // Types only. nothrow: @@ -118,7 +127,7 @@ else version( DigitalMars ) alias real c_long_double; else version( Solaris ) alias real c_long_double; - else version( OSX ) + else version( Darwin ) alias real c_long_double; } } diff --git a/src/core/stdc/errno.d b/src/core/stdc/errno.d index 0715e74a95..e780898ce3 100644 --- a/src/core/stdc/errno.d +++ b/src/core/stdc/errno.d @@ -14,6 +14,15 @@ module core.stdc.errno; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + @trusted: // Only manipulates errno. nothrow: @nogc: @@ -923,7 +932,7 @@ else version( linux ) static assert(false, "Architecture not supported."); } } -else version( OSX ) +else version( Darwin ) { enum EPERM = 1; /// Operation not permitted enum ENOENT = 2; /// No such file or directory diff --git a/src/core/stdc/fenv.d b/src/core/stdc/fenv.d index a2780293c3..1f7147d9ed 100644 --- a/src/core/stdc/fenv.d +++ b/src/core/stdc/fenv.d @@ -14,6 +14,15 @@ module core.stdc.fenv; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + extern (C): @system: nothrow: @@ -153,7 +162,7 @@ else version( CRuntime_Microsoft ) alias fexcept_t = uint; } -else version ( OSX ) +else version ( Darwin ) { version ( BigEndian ) { @@ -289,7 +298,7 @@ else version( CRuntime_Microsoft ) /// enum FE_DFL_ENV = &_Fenv0; } -else version( OSX ) +else version( Darwin ) { private extern __gshared fenv_t _FE_DFL_ENV; /// diff --git a/src/core/stdc/locale.d b/src/core/stdc/locale.d index c9631a3b54..d31591da52 100644 --- a/src/core/stdc/locale.d +++ b/src/core/stdc/locale.d @@ -14,6 +14,15 @@ module core.stdc.locale; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + extern (C): @trusted: // Only setlocale operates on C strings. nothrow: @@ -92,7 +101,7 @@ else version(Windows) /// enum LC_TIME = 5; } -else version(OSX) +else version(Darwin) { /// enum LC_ALL = 0; diff --git a/src/core/stdc/math.d b/src/core/stdc/math.d index f8bdb95f57..c3a3b80ad2 100644 --- a/src/core/stdc/math.d +++ b/src/core/stdc/math.d @@ -15,6 +15,15 @@ module core.stdc.math; private import core.stdc.config; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + extern (C): @trusted: // All functions here operate on floating point and integer values only. nothrow: @@ -595,7 +604,7 @@ else version( MinGW ) } } } -else version( OSX ) +else version( Darwin ) { enum { @@ -609,8 +618,6 @@ else version( OSX ) FP_NORMAL = 4, /// FP_SUBNORMAL = 5, - /// - FP_SUPERNORMAL = 6, } enum @@ -625,38 +632,55 @@ else version( OSX ) int __fpclassifyf(float x); int __fpclassifyd(double x); - int __fpclassify(real x); int __isfinitef(float x); int __isfinited(double x); - int __isfinite(real x); int __isinff(float x); int __isinfd(double x); - int __isinf(real x); int __isnanf(float x); int __isnand(double x); - int __isnan(real x); + + // __isnormal family exists, but iOS implementation returns wrong results + // for subnormals int __signbitf(float x); int __signbitd(double x); int __signbitl(real x); + // Support of OSX < 10.8 needs legacy function names without "l" suffix + // with exception of __signbitl. Otherwise could use else version like + // other Darwins + version (OSX) + { + int __fpclassify(real x); + int __isfinite(real x); + int __isinf(real x); + int __isnan(real x); + alias __fpclassifyl = __fpclassify; + alias __isfinitel = __isfinite; + alias __isinfl = __isinf; + alias __isnanl = __isnan; + } + else + { + // Available OSX >= 10.8, iOS >= 6.0, all TVOS and WatchOS + int __fpclassifyl(real x); + int __isfinitel(real x); + int __isinfl(real x); + int __isnanl(real x); + } + extern (D) { //int fpclassify(real-floating x); - /// + /// int fpclassify(float x) { return __fpclassifyf(x); } /// int fpclassify(double x) { return __fpclassifyd(x); } /// - int fpclassify(real x) - { - return (real.sizeof == double.sizeof) - ? __fpclassifyd(x) - : __fpclassify(x); - } + int fpclassify(real x) { return __fpclassifyl(x); } //int isfinite(real-floating x); /// @@ -664,12 +688,7 @@ else version( OSX ) /// int isfinite(double x) { return __isfinited(x); } /// - int isfinite(real x) - { - return (real.sizeof == double.sizeof) - ? __isfinited(x) - : __isfinite(x); - } + int isfinite(real x) { return __isfinitel(x); } //int isinf(real-floating x); /// @@ -677,12 +696,7 @@ else version( OSX ) /// int isinf(double x) { return __isinfd(x); } /// - int isinf(real x) - { - return (real.sizeof == double.sizeof) - ? __isinfd(x) - : __isinf(x); - } + int isinf(real x) { return __isinfl(x); } //int isnan(real-floating x); /// @@ -690,12 +704,7 @@ else version( OSX ) /// int isnan(double x) { return __isnand(x); } /// - int isnan(real x) - { - return (real.sizeof == double.sizeof) - ? __isnand(x) - : __isnan(x); - } + int isnan(real x) { return __isnanl(x); } //int isnormal(real-floating x); /// @@ -711,12 +720,7 @@ else version( OSX ) /// int signbit(double x) { return __signbitd(x); } /// - int signbit(real x) - { - return (real.sizeof == double.sizeof) - ? __signbitd(x) - : __signbitl(x); - } + int signbit(real x) { return __signbitl(x); } } } else version( FreeBSD ) diff --git a/src/core/stdc/stdio.d b/src/core/stdc/stdio.d index a7301ae594..d7e2e1133b 100644 --- a/src/core/stdc/stdio.d +++ b/src/core/stdc/stdio.d @@ -15,6 +15,15 @@ module core.stdc.stdio; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + private { import core.stdc.config; @@ -104,7 +113,7 @@ else version( CRuntime_Glibc ) L_tmpnam = 20 } } -else version( OSX ) +else version( Darwin ) { enum { @@ -306,7 +315,7 @@ else version( CRuntime_Glibc ) /// alias shared(_IO_FILE) FILE; } -else version( OSX ) +else version( Darwin ) { /// alias long fpos_t; @@ -591,7 +600,7 @@ else version( CRuntime_Glibc ) /// extern shared FILE* stderr; } -else version( OSX ) +else version( Darwin ) { enum { @@ -989,7 +998,7 @@ else version( CRuntime_Glibc ) /// int vsnprintf(char* s, size_t n, in char* format, va_list arg); } -else version( OSX ) +else version( Darwin ) { // No unsafe pointer manipulation. @trusted diff --git a/src/core/stdc/stdlib.d b/src/core/stdc/stdlib.d index d644d0bfe1..d59881363c 100644 --- a/src/core/stdc/stdlib.d +++ b/src/core/stdc/stdlib.d @@ -17,6 +17,15 @@ module core.stdc.stdlib; private import core.stdc.config; public import core.stdc.stddef; // for wchar_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + extern (C): @system: @@ -64,7 +73,7 @@ enum MB_CUR_MAX = 1; /// version(Windows) enum RAND_MAX = 0x7fff; else version(CRuntime_Glibc) enum RAND_MAX = 0x7fffffff; -else version(OSX) enum RAND_MAX = 0x7fffffff; +else version(Darwin) enum RAND_MAX = 0x7fffffff; else version(FreeBSD) enum RAND_MAX = 0x7fffffff; else version(Solaris) enum RAND_MAX = 0x7fff; else version(CRuntime_Bionic) enum RAND_MAX = 0x7fffffff; diff --git a/src/core/stdc/string.d b/src/core/stdc/string.d index 1ed6e3a237..4503fe6eb5 100644 --- a/src/core/stdc/string.d +++ b/src/core/stdc/string.d @@ -14,6 +14,15 @@ module core.stdc.string; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + extern (C): @system: nothrow: @@ -72,7 +81,7 @@ version (CRuntime_Glibc) /// const(char)* strerror_r(int errnum, char* buf, size_t buflen); } -else version (OSX) +else version (Darwin) { int strerror_r(int errnum, char* buf, size_t buflen); } diff --git a/src/core/stdc/time.d b/src/core/stdc/time.d index 9bb3afc7fb..2f47caab78 100644 --- a/src/core/stdc/time.d +++ b/src/core/stdc/time.d @@ -17,6 +17,15 @@ module core.stdc.time; private import core.stdc.config; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + extern (C): @trusted: // There are only a few functions here that use unsafe C strings. nothrow: @@ -78,6 +87,10 @@ else version( OSX ) { enum clock_t CLOCKS_PER_SEC = 100; } +else version( Darwin ) // other Darwins (iOS, TVOS, WatchOS) +{ + enum clock_t CLOCKS_PER_SEC = 1_000_000; +} else version( FreeBSD ) { enum clock_t CLOCKS_PER_SEC = 128; @@ -124,7 +137,7 @@ version( Windows ) /// extern __gshared const(char)*[2] tzname; // non-standard } -else version( OSX ) +else version( Darwin ) { /// void tzset(); // non-standard diff --git a/src/core/sync/semaphore.d b/src/core/sync/semaphore.d index a73f46a3fa..2df3b99f76 100644 --- a/src/core/sync/semaphore.d +++ b/src/core/sync/semaphore.d @@ -18,16 +18,25 @@ module core.sync.semaphore; public import core.sync.exception; public import core.time; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version( Windows ) { private import core.sys.windows.windows; } -else version( OSX ) +else version( Darwin ) { private import core.sync.config; private import core.stdc.errno; private import core.sys.posix.time; - private import core.sys.osx.mach.semaphore; + private import core.sys.darwin.mach.semaphore; } else version( Posix ) { @@ -81,7 +90,7 @@ class Semaphore if( m_hndl == m_hndl.init ) throw new SyncError( "Unable to create semaphore" ); } - else version( OSX ) + else version( Darwin ) { auto rc = semaphore_create( mach_task_self(), &m_hndl, SYNC_POLICY_FIFO, count ); if( rc ) @@ -103,7 +112,7 @@ class Semaphore BOOL rc = CloseHandle( m_hndl ); assert( rc, "Unable to destroy semaphore" ); } - else version( OSX ) + else version( Darwin ) { auto rc = semaphore_destroy( mach_task_self(), m_hndl ); assert( !rc, "Unable to destroy semaphore" ); @@ -136,7 +145,7 @@ class Semaphore if( rc != WAIT_OBJECT_0 ) throw new SyncError( "Unable to wait for semaphore" ); } - else version( OSX ) + else version( Darwin ) { while( true ) { @@ -215,7 +224,7 @@ class Semaphore throw new SyncError( "Unable to wait for semaphore" ); } } - else version( OSX ) + else version( Darwin ) { mach_timespec_t t = void; (cast(byte*) &t)[0 .. t.sizeof] = 0; @@ -270,7 +279,7 @@ class Semaphore if( !ReleaseSemaphore( m_hndl, 1, null ) ) throw new SyncError( "Unable to notify semaphore" ); } - else version( OSX ) + else version( Darwin ) { auto rc = semaphore_signal( m_hndl ); if( rc ) @@ -309,7 +318,7 @@ class Semaphore throw new SyncError( "Unable to wait for semaphore" ); } } - else version( OSX ) + else version( Darwin ) { return wait( dur!"hnsecs"(0) ); } @@ -333,7 +342,7 @@ private: { HANDLE m_hndl; } - else version( OSX ) + else version( Darwin ) { semaphore_t m_hndl; } diff --git a/src/core/sys/darwin/execinfo.d b/src/core/sys/darwin/execinfo.d new file mode 100644 index 0000000000..40d41f5808 --- /dev/null +++ b/src/core/sys/darwin/execinfo.d @@ -0,0 +1,25 @@ +/** + * D header file for Darwin. + * + * Copyright: Copyright Martin Nowak 2012. + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Authors: Martin Nowak + */ +module core.sys.darwin.execinfo; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): +nothrow: + +int backtrace(void** buffer, int size); +char** backtrace_symbols(const(void*)* buffer, int size); +void backtrace_symbols_fd(const(void*)* buffer, int size, int fd); diff --git a/src/core/sys/darwin/mach/dyld.d b/src/core/sys/darwin/mach/dyld.d new file mode 100644 index 0000000000..38aac6ad9e --- /dev/null +++ b/src/core/sys/darwin/mach/dyld.d @@ -0,0 +1,36 @@ +/** + * Copyright: Copyright Digital Mars 2010. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Jacob Carlborg + * Version: Initial created: Feb 20, 2010 + */ + +/* Copyright Digital Mars 2010. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.darwin.mach.dyld; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): + +public import core.stdc.stdint; // for intptr_t +public import core.sys.darwin.mach.loader; + +uint _dyld_image_count(); +const(char)* _dyld_get_image_name(uint image_index); +mach_header* _dyld_get_image_header(uint image_index); +void _dyld_register_func_for_add_image(void function(in mach_header* mh, intptr_t vmaddr_slide)); +void _dyld_register_func_for_remove_image(void function(in mach_header* mh, intptr_t vmaddr_slide)); + + diff --git a/src/core/sys/darwin/mach/getsect.d b/src/core/sys/darwin/mach/getsect.d new file mode 100644 index 0000000000..cc797db0b7 --- /dev/null +++ b/src/core/sys/darwin/mach/getsect.d @@ -0,0 +1,31 @@ +/** + * Copyright: Copyright Digital Mars 2010. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Jacob Carlborg + * Version: Initial created: Mar 16, 2010 + */ + +/* Copyright Digital Mars 2010. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.darwin.mach.getsect; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): + +public import core.sys.darwin.mach.loader; + +const(section)* getsectbynamefromheader(in mach_header* mhp, in char* segname, in char* sectname); +const(section_64)* getsectbynamefromheader_64(in mach_header_64* mhp, in char* segname, in char* sectname); + diff --git a/src/core/sys/darwin/mach/kern_return.d b/src/core/sys/darwin/mach/kern_return.d new file mode 100644 index 0000000000..e939c87889 --- /dev/null +++ b/src/core/sys/darwin/mach/kern_return.d @@ -0,0 +1,82 @@ +/** + * D header file for Darwin. + * + * Copyright: Copyright Sean Kelly 2008 - 2009. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Sean Kelly + */ + +/* Copyright Sean Kelly 2008 - 2009. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.darwin.mach.kern_return; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): + +alias int kern_return_t; + +enum : kern_return_t +{ + KERN_SUCCESS = 0, + KERN_INVALID_ADDRESS = 1, + KERN_PROTECTION_FAILURE = 2, + KERN_NO_SPACE = 3, + KERN_INVALID_ARGUMENT = 4, + KERN_FAILURE = 5, + KERN_RESOURCE_SHORTAGE = 6, + KERN_NOT_RECEIVER = 7, + KERN_NO_ACCESS = 8, + KERN_MEMORY_FAILURE = 9, + KERN_MEMORY_ERROR = 10, + KERN_ALREADY_IN_SET = 11, + KERN_NOT_IN_SET = 12, + KERN_NAME_EXISTS = 13, + KERN_ABORTED = 14, + KERN_INVALID_NAME = 15, + KERN_INVALID_TASK = 16, + KERN_INVALID_RIGHT = 17, + KERN_INVALID_VALUE = 18, + KERN_UREFS_OVERFLOW = 19, + KERN_INVALID_CAPABILITY = 20, + KERN_RIGHT_EXISTS = 21, + KERN_INVALID_HOST = 22, + KERN_MEMORY_PRESENT = 23, + KERN_MEMORY_DATA_MOVED = 24, + KERN_MEMORY_RESTART_COPY = 25, + KERN_INVALID_PROCESSOR_SET = 26, + KERN_POLICY_LIMIT = 27, + KERN_INVALID_POLICY = 28, + KERN_INVALID_OBJECT = 29, + KERN_ALREADY_WAITING = 30, + KERN_DEFAULT_SET = 31, + KERN_EXCEPTION_PROTECTED = 32, + KERN_INVALID_LEDGER = 33, + KERN_INVALID_MEMORY_CONTROL = 34, + KERN_INVALID_SECURITY = 35, + KERN_NOT_DEPRESSED = 36, + KERN_TERMINATED = 37, + KERN_LOCK_SET_DESTROYED = 38, + KERN_LOCK_UNSTABLE = 39, + KERN_LOCK_OWNED = 40, + KERN_LOCK_OWNED_SELF = 41, + KERN_SEMAPHORE_DESTROYED = 42, + KERN_RPC_SERVER_TERMINATED = 43, + KERN_RPC_TERMINATE_ORPHAN = 44, + KERN_RPC_CONTINUE_ORPHAN = 45, + KERN_NOT_SUPPORTED = 46, + KERN_NODE_DOWN = 47, + KERN_OPERATION_TIMED_OUT = 49, + KERN_RETURN_MAX = 0x100, +} diff --git a/src/core/sys/darwin/mach/loader.d b/src/core/sys/darwin/mach/loader.d new file mode 100644 index 0000000000..cf760a4b18 --- /dev/null +++ b/src/core/sys/darwin/mach/loader.d @@ -0,0 +1,106 @@ +/** + * Copyright: Copyright Digital Mars 2010. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Jacob Carlborg + * Version: Initial created: Feb 20, 2010 + */ + +/* Copyright Digital Mars 2010. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.darwin.mach.loader; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): + +struct mach_header +{ + uint magic; + int cputype; + int cpusubtype; + uint filetype; + uint ncmds; + uint sizeofcmds; + uint flags; +} + +struct mach_header_64 +{ + uint magic; + int cputype; + int cpusubtype; + uint filetype; + uint ncmds; + uint sizeofcmds; + uint flags; + uint reserved; +} + +enum uint MH_MAGIC = 0xfeedface; +enum uint MH_CIGAM = 0xcefaedfe; +enum uint MH_MAGIC_64 = 0xfeedfacf; +enum uint MH_CIGAM_64 = 0xcffaedfe; + +enum SEG_PAGEZERO = "__PAGEZERO"; +enum SEG_TEXT = "__TEXT"; +enum SECT_TEXT = "__text"; +enum SECT_FVMLIB_INIT0 = "__fvmlib_init0"; +enum SECT_FVMLIB_INIT1 = "__fvmlib_init1"; +enum SEG_DATA = "__DATA"; +enum SECT_DATA = "__data"; +enum SECT_BSS = "__bss"; +enum SECT_COMMON = "__common"; +enum SEG_OBJC = "__OBJC"; +enum SECT_OBJC_SYMBOLS = "__symbol_table"; +enum SECT_OBJC_MODULES = "__module_info"; +enum SECT_OBJC_STRINGS = "__selector_strs"; +enum SECT_OBJC_REFS = "__selector_refs"; +enum SEG_ICON = "__ICON"; +enum SECT_ICON_HEADER = "__header"; +enum SECT_ICON_TIFF = "__tiff"; +enum SEG_LINKEDIT = "__LINKEDIT"; +enum SEG_UNIXSTACK = "__UNIXSTACK"; +enum SEG_IMPORT = "__IMPORT"; + +struct section +{ + char[16] sectname; + char[16] segname; + uint addr; + uint size; + uint offset; + uint align_; + uint reloff; + uint nreloc; + uint flags; + uint reserved1; + uint reserved2; +} + +struct section_64 +{ + char[16] sectname; + char[16] segname; + ulong addr; + ulong size; + uint offset; + uint align_; + uint reloff; + uint nreloc; + uint flags; + uint reserved1; + uint reserved2; + uint reserved3; +} + diff --git a/src/core/sys/darwin/mach/port.d b/src/core/sys/darwin/mach/port.d new file mode 100644 index 0000000000..863a813492 --- /dev/null +++ b/src/core/sys/darwin/mach/port.d @@ -0,0 +1,36 @@ +/** + * D header file for Darwin. + * + * Copyright: Copyright Sean Kelly 2008 - 2009. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Sean Kelly + */ + +/* Copyright Sean Kelly 2008 - 2009. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.darwin.mach.port; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): + +version( X86 ) + version = i386; +version( X86_64 ) + version = i386; +version( i386 ) +{ + alias uint natural_t; + alias natural_t mach_port_t; +} diff --git a/src/core/sys/darwin/mach/semaphore.d b/src/core/sys/darwin/mach/semaphore.d new file mode 100644 index 0000000000..b7763e8c50 --- /dev/null +++ b/src/core/sys/darwin/mach/semaphore.d @@ -0,0 +1,66 @@ +/** + * D header file for Darwin. + * + * Copyright: Copyright Sean Kelly 2008 - 2009. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Sean Kelly + */ + +/* Copyright Sean Kelly 2008 - 2009. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.darwin.mach.semaphore; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): +nothrow: + +public import core.sys.darwin.mach.kern_return; +public import core.sys.darwin.mach.port; + +alias mach_port_t task_t; +alias mach_port_t thread_t; +alias mach_port_t semaphore_t; +alias int sync_policy_t; + +alias int clock_res_t; +struct mach_timespec_t +{ + uint tv_sec; + clock_res_t tv_nsec; +} + +enum +{ + SYNC_POLICY_FIFO = 0x0, + SYNC_POLICY_FIXED_PRIORITY = 0x1, + SYNC_POLICY_REVERSED = 0x2, + SYNC_POLICY_ORDER_MASK = 0x3, + SYNC_POLICY_LIFO = (SYNC_POLICY_FIFO | SYNC_POLICY_REVERSED), + SYNC_POLICY_MAX = 0x7, +} + +task_t mach_task_self(); +kern_return_t semaphore_create(task_t, semaphore_t*, int, int); +kern_return_t semaphore_destroy(task_t, semaphore_t); + +kern_return_t semaphore_signal(semaphore_t); +kern_return_t semaphore_signal_all(semaphore_t); +kern_return_t semaphore_signal_thread(semaphore_t, thread_t); + +kern_return_t semaphore_wait(semaphore_t); +kern_return_t semaphore_wait_signal(semaphore_t, semaphore_t); + +kern_return_t semaphore_timedwait(semaphore_t, mach_timespec_t); +kern_return_t semaphore_timedwait_signal(semaphore_t, semaphore_t, mach_timespec_t); diff --git a/src/core/sys/darwin/mach/thread_act.d b/src/core/sys/darwin/mach/thread_act.d new file mode 100644 index 0000000000..2f87eea6a1 --- /dev/null +++ b/src/core/sys/darwin/mach/thread_act.d @@ -0,0 +1,136 @@ +/** + * D header file for Darwin. + * + * Copyright: Copyright Sean Kelly 2008 - 2009. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Sean Kelly + */ + +/* Copyright Sean Kelly 2008 - 2009. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.darwin.mach.thread_act; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): +nothrow: + +public import core.sys.darwin.mach.kern_return; +public import core.sys.darwin.mach.port; + +version( X86 ) + version = i386; +version( X86_64 ) + version = i386; +version( i386 ) +{ + alias mach_port_t thread_act_t; + alias void thread_state_t; + alias int thread_state_flavor_t; + alias natural_t mach_msg_type_number_t; + + enum + { + x86_THREAD_STATE32 = 1, + x86_FLOAT_STATE32 = 2, + x86_EXCEPTION_STATE32 = 3, + x86_THREAD_STATE64 = 4, + x86_FLOAT_STATE64 = 5, + x86_EXCEPTION_STATE64 = 6, + x86_THREAD_STATE = 7, + x86_FLOAT_STATE = 8, + x86_EXCEPTION_STATE = 9, + x86_DEBUG_STATE32 = 10, + x86_DEBUG_STATE64 = 11, + x86_DEBUG_STATE = 12, + THREAD_STATE_NONE = 13, + } + + struct x86_thread_state32_t + { + uint eax; + uint ebx; + uint ecx; + uint edx; + uint edi; + uint esi; + uint ebp; + uint esp; + uint ss; + uint eflags; + uint eip; + uint cs; + uint ds; + uint es; + uint fs; + uint gs; + } + + struct x86_thread_state64_t + { + ulong rax; + ulong rbx; + ulong rcx; + ulong rdx; + ulong rdi; + ulong rsi; + ulong rbp; + ulong rsp; + ulong r8; + ulong r9; + ulong r10; + ulong r11; + ulong r12; + ulong r13; + ulong r14; + ulong r15; + ulong rip; + ulong rflags; + ulong cs; + ulong fs; + ulong gs; + } + + struct x86_state_hdr_t + { + int flavor; + int count; + } + + struct x86_thread_state_t + { + x86_state_hdr_t tsh; + union _uts + { + x86_thread_state32_t ts32; + x86_thread_state64_t ts64; + } + _uts uts; + } + + enum : mach_msg_type_number_t + { + x86_THREAD_STATE32_COUNT = cast(mach_msg_type_number_t)( x86_thread_state32_t.sizeof / int.sizeof ), + x86_THREAD_STATE64_COUNT = cast(mach_msg_type_number_t)( x86_thread_state64_t.sizeof / int.sizeof ), + x86_THREAD_STATE_COUNT = cast(mach_msg_type_number_t)( x86_thread_state_t.sizeof / int.sizeof ), + } + + alias x86_THREAD_STATE MACHINE_THREAD_STATE; + alias x86_THREAD_STATE_COUNT MACHINE_THREAD_STATE_COUNT; + + mach_port_t mach_thread_self(); + kern_return_t thread_suspend(thread_act_t); + kern_return_t thread_resume(thread_act_t); + kern_return_t thread_get_state(thread_act_t, thread_state_flavor_t, thread_state_t*, mach_msg_type_number_t*); +} diff --git a/src/core/sys/darwin/pthread.d b/src/core/sys/darwin/pthread.d new file mode 100644 index 0000000000..aae91e4b62 --- /dev/null +++ b/src/core/sys/darwin/pthread.d @@ -0,0 +1,59 @@ +/** + * D header file for Darwin. + * + * Copyright: Copyright Sean Kelly 2008 - 2009. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Sean Kelly + */ + +/* Copyright Sean Kelly 2008 - 2009. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.darwin.pthread; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): +nothrow: + +public import core.sys.posix.pthread; +public import core.sys.darwin.mach.port; + +int pthread_is_threaded_np(); +int pthread_threadid_np(pthread_t, ulong*); +// ^ __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2) +int pthread_rwlock_longrdlock_np(pthread_rwlock_t*); +int pthread_rwlock_yieldwrlock_np(pthread_rwlock_t*); +// ^ __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA); +int pthread_rwlock_downgrade_np(pthread_rwlock_t*); +int pthread_rwlock_upgrade_np(pthread_rwlock_t*); +int pthread_rwlock_tryupgrade_np(pthread_rwlock_t*); +int pthread_rwlock_held_np(pthread_rwlock_t*); +int pthread_rwlock_rdheld_np(pthread_rwlock_t*); +int pthread_rwlock_wrheld_np(pthread_rwlock_t*); +int pthread_getname_np(pthread_t, char*, size_t); +int pthread_setname_np(in char*); +// ^ __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2) +int pthread_main_np(); +mach_port_t pthread_mach_thread_np(pthread_t); +size_t pthread_get_stacksize_np(pthread_t); +void* pthread_get_stackaddr_np(pthread_t); +int pthread_cond_signal_thread_np(pthread_cond_t*, pthread_t); +int pthread_cond_timedwait_relative_np(pthread_cond_t*, pthread_mutex_t*, in timespec*); +int pthread_create_suspended_np(pthread_t*, in pthread_attr_t*, void* function(void*), void*); +int pthread_kill(pthread_t, int); +pthread_t pthread_from_mach_thread_np(mach_port_t); +// ^ __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0) +int pthread_sigmask(int, in sigset_t*, sigset_t*); +// ^ __DARWIN_ALIAS(pthread_sigmask) +void pthread_yield_np(); diff --git a/src/core/sys/darwin/sys/cdefs.d b/src/core/sys/darwin/sys/cdefs.d new file mode 100644 index 0000000000..9c0461fb39 --- /dev/null +++ b/src/core/sys/darwin/sys/cdefs.d @@ -0,0 +1,25 @@ +/** + * D header file for Darwin + * + * Authors: Martin Nowak + */ +module core.sys.darwin.sys.cdefs; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): + +public import core.sys.posix.config; + +// http://www.opensource.apple.com/source/xnu/xnu-2422.115.4/bsd/sys/cdefs.h +enum _DARWIN_C_SOURCE = true; + +enum __DARWIN_C_FULL = 900_000L; +enum __DARWIN_C_LEVEL = __DARWIN_C_FULL; diff --git a/src/core/sys/darwin/sys/event.d b/src/core/sys/darwin/sys/event.d new file mode 100644 index 0000000000..226ee50e00 --- /dev/null +++ b/src/core/sys/darwin/sys/event.d @@ -0,0 +1,139 @@ +/** + * D header file for Darwin. + * + * Copyright: Copyright Martin Nowak 2012. Etienne Cimon 2015. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Martin Nowak + */ + +/* Copyright Martin Nowak 2012. Etienne Cimon 2015. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.darwin.sys.event; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): + +import core.stdc.stdint; // intptr_t, uintptr_t +import core.sys.posix.time; // timespec + +enum : short +{ + EVFILT_READ = -1, + EVFILT_WRITE = -2, + EVFILT_AIO = -3, /* attached to aio requests */ + EVFILT_VNODE = -4, /* attached to vnodes */ + EVFILT_PROC = -5, /* attached to struct proc */ + EVFILT_SIGNAL = -6, /* attached to struct proc */ + EVFILT_TIMER = -7, /* timers */ + EVFILT_MACHPORT = -8, /* Mach portsets */ + EVFILT_FS = -9, /* filesystem events */ + EVFILT_USER = -10, /* User events */ + EVFILT_VM = -12, /* virtual memory events */ + EVFILT_SYSCOUNT = 11 +} + +extern(D) void EV_SET(kevent_t* kevp, typeof(kevent_t.tupleof) args) +{ + *kevp = kevent_t(args); +} + +struct kevent_t +{ + uintptr_t ident; /* identifier for this event */ + short filter; /* filter for event */ + ushort flags; + uint fflags; + intptr_t data; + void *udata; /* opaque user data identifier */ +} + +enum +{ + /* actions */ + EV_ADD = 0x0001, /* add event to kq (implies enable) */ + EV_DELETE = 0x0002, /* delete event from kq */ + EV_ENABLE = 0x0004, /* enable event */ + EV_DISABLE = 0x0008, /* disable event (not reported) */ + + /* flags */ + EV_ONESHOT = 0x0010, /* only report one occurrence */ + EV_CLEAR = 0x0020, /* clear event state after reporting */ + EV_RECEIPT = 0x0040, /* force EV_ERROR on success, data=0 */ + EV_DISPATCH = 0x0080, /* disable event after reporting */ + + EV_SYSFLAGS = 0xF000, /* reserved by system */ + EV_FLAG1 = 0x2000, /* filter-specific flag */ + + /* returned values */ + EV_EOF = 0x8000, /* EOF detected */ + EV_ERROR = 0x4000, /* error, data contains errno */ +} + +enum +{ + /* + * data/hint flags/masks for EVFILT_USER, shared with userspace + * + * On input, the top two bits of fflags specifies how the lower twenty four + * bits should be applied to the stored value of fflags. + * + * On output, the top two bits will always be set to NOTE_FFNOP and the + * remaining twenty four bits will contain the stored fflags value. + */ + NOTE_FFNOP = 0x00000000, /* ignore input fflags */ + NOTE_FFAND = 0x40000000, /* AND fflags */ + NOTE_FFOR = 0x80000000, /* OR fflags */ + NOTE_FFCOPY = 0xc0000000, /* copy fflags */ + NOTE_FFCTRLMASK = 0xc0000000, /* masks for operations */ + NOTE_FFLAGSMASK = 0x00ffffff, + + NOTE_TRIGGER = 0x01000000, /* Cause the event to be + triggered for output. */ + + /* + * data/hint flags for EVFILT_{READ|WRITE}, shared with userspace + */ + NOTE_LOWAT = 0x0001, /* low water mark */ + + /* + * data/hint flags for EVFILT_VNODE, shared with userspace + */ + NOTE_DELETE = 0x0001, /* vnode was removed */ + NOTE_WRITE = 0x0002, /* data contents changed */ + NOTE_EXTEND = 0x0004, /* size increased */ + NOTE_ATTRIB = 0x0008, /* attributes changed */ + NOTE_LINK = 0x0010, /* link count changed */ + NOTE_RENAME = 0x0020, /* vnode was renamed */ + NOTE_REVOKE = 0x0040, /* vnode access was revoked */ + + /* + * data/hint flags for EVFILT_PROC, shared with userspace + */ + NOTE_EXIT = 0x80000000, /* process exited */ + NOTE_FORK = 0x40000000, /* process forked */ + NOTE_EXEC = 0x20000000, /* process exec'd */ + NOTE_PCTRLMASK = 0xf0000000, /* mask for hint bits */ + NOTE_PDATAMASK = 0x000fffff, /* mask for pid */ + + /* additional flags for EVFILT_PROC */ + NOTE_TRACK = 0x00000001, /* follow across forks */ + NOTE_TRACKERR = 0x00000002, /* could not track child */ + NOTE_CHILD = 0x00000004, /* am a child process */ +} + +int kqueue(); +int kevent(int kq, const kevent_t *changelist, int nchanges, + kevent_t *eventlist, int nevents, + const timespec *timeout); diff --git a/src/core/sys/darwin/sys/mman.d b/src/core/sys/darwin/sys/mman.d new file mode 100644 index 0000000000..2b1725756a --- /dev/null +++ b/src/core/sys/darwin/sys/mman.d @@ -0,0 +1,111 @@ +/** + * D header file for Darwin + * + * Authors: Martin Nowak + */ +module core.sys.darwin.sys.mman; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern (C): +nothrow: + +public import core.sys.posix.sys.mman; +import core.sys.darwin.sys.cdefs; +import core.sys.posix.sys.types; + +// already in core.sys.posix.sys.mman +// enum PROT_NONE = 0x00; +// enum PROT_READ = 0x01; +// enum PROT_WRITE = 0x02; +// enum PROT_EXEC = 0x04; + +// already in core.sys.posix.sys.mman +// enum MAP_SHARED = 0x0001; +// enum MAP_PRIVATE = 0x0002; +static if (_DARWIN_C_SOURCE) + alias MAP_COPY = MAP_PRIVATE; +// enum MAP_FIXED = 0x0010; + +static if (_DARWIN_C_SOURCE) +{ + enum MAP_RENAME = 0x0020; + enum MAP_NORESERVE = 0x0040; + enum MAP_RESERVED0080 = 0x0080; + enum MAP_NOEXTEND = 0x0100; + enum MAP_HASSEMAPHORE = 0x0200; + enum MAP_NOCACHE = 0x0400; + enum MAP_JIT = 0x0800; +} + +// already in core.sys.posix.sys.mman +// enum MCL_CURRENT = 0x0001; +// enum MCL_FUTURE = 0x0002; + +// enum MAP_FAILED = cast(void*)-1; + +// enum MS_ASYNC = 0x0001; +// enum MS_INVALIDATE = 0x0002; +// enum MS_SYNC = 0x0010; + +static if (_DARWIN_C_SOURCE) +{ + enum MS_KILLPAGES = 0x0004; + enum MS_DEACTIVATE = 0x0008; + + enum MAP_FILE = 0x0000; + +// already in core.sys.posix.sys.mman +// enum MAP_ANON = 0x1000; + +// enum POSIX_MADV_NORMAL = 0; +// enum POSIX_MADV_RANDOM = 1; +// enum POSIX_MADV_SEQUENTIAL = 2; +// enum POSIX_MADV_WILLNEED = 3; +// enum POSIX_MADV_DONTNEED = 4; + + alias MADV_NORMAL = POSIX_MADV_NORMAL; + alias MADV_RANDOM = POSIX_MADV_RANDOM; + alias MADV_SEQUENTIAL = POSIX_MADV_SEQUENTIAL; + alias MADV_WILLNEED = POSIX_MADV_WILLNEED; + alias MADV_DONTNEED = POSIX_MADV_DONTNEED; + enum MADV_FREE = 5; + enum MADV_ZERO_WIRED_PAGES = 6; + enum MADV_FREE_REUSABLE = 7; + enum MADV_FREE_REUSE = 8; + enum MADV_CAN_REUSE = 9; + + enum MINCORE_INCORE = 0x1; + enum MINCORE_REFERENCED = 0x2; + enum MINCORE_MODIFIED = 0x4; + enum MINCORE_REFERENCED_OTHER = 0x8; + enum MINCORE_MODIFIED_OTHER = 0x10; +} + +// already in core.sys.posix.sys.mman +// int mlockall(int); +// int munlockall(void); +// int mlock(const void *, size_t); +// void * mmap(void *, size_t, int, int, int, off_t); +// int mprotect(void *, size_t, int); +// int msync(void *, size_t, int); +// int munlock(const void *, size_t); +// int munmap(void *, size_t); +// int shm_open(const char *, int, ...); +// int shm_unlink(const char *); +// int posix_madvise(void *, size_t, int); + +static if (_DARWIN_C_SOURCE) +{ + int madvise(void *, size_t, int); + int mincore(const(void)*, size_t, char *); + int minherit(void *, size_t, int); +} diff --git a/src/core/sys/osx/execinfo.d b/src/core/sys/osx/execinfo.d index 9cb45ff737..7d19c401c0 100644 --- a/src/core/sys/osx/execinfo.d +++ b/src/core/sys/osx/execinfo.d @@ -7,10 +7,4 @@ */ module core.sys.osx.execinfo; -version (OSX): -extern (C): -nothrow: - -int backtrace(void** buffer, int size); -char** backtrace_symbols(const(void*)* buffer, int size); -void backtrace_symbols_fd(const(void*)* buffer, int size, int fd); +public import core.sys.darwin.execinfo; diff --git a/src/core/sys/osx/mach/dyld.d b/src/core/sys/osx/mach/dyld.d index ada9db5ca9..f43e62def8 100644 --- a/src/core/sys/osx/mach/dyld.d +++ b/src/core/sys/osx/mach/dyld.d @@ -12,16 +12,4 @@ */ module core.sys.osx.mach.dyld; -version (OSX): -extern (C): - -public import core.stdc.stdint; // for intptr_t -public import core.sys.osx.mach.loader; - -uint _dyld_image_count(); -const(char)* _dyld_get_image_name(uint image_index); -mach_header* _dyld_get_image_header(uint image_index); -void _dyld_register_func_for_add_image(void function(in mach_header* mh, intptr_t vmaddr_slide)); -void _dyld_register_func_for_remove_image(void function(in mach_header* mh, intptr_t vmaddr_slide)); - - +public import core.sys.darwin.mach.dyld; diff --git a/src/core/sys/osx/mach/getsect.d b/src/core/sys/osx/mach/getsect.d index 1c6eec58e4..50e6644b3c 100644 --- a/src/core/sys/osx/mach/getsect.d +++ b/src/core/sys/osx/mach/getsect.d @@ -12,11 +12,4 @@ */ module core.sys.osx.mach.getsect; -version (OSX): -extern (C): - -public import core.sys.osx.mach.loader; - -const(section)* getsectbynamefromheader(in mach_header* mhp, in char* segname, in char* sectname); -const(section_64)* getsectbynamefromheader_64(in mach_header_64* mhp, in char* segname, in char* sectname); - +public import core.sys.darwin.mach.getsect; diff --git a/src/core/sys/osx/mach/kern_return.d b/src/core/sys/osx/mach/kern_return.d index 54fe4d7dfe..266c22b40e 100644 --- a/src/core/sys/osx/mach/kern_return.d +++ b/src/core/sys/osx/mach/kern_return.d @@ -13,61 +13,4 @@ */ module core.sys.osx.mach.kern_return; -version (OSX): -extern (C): - -alias int kern_return_t; - -enum : kern_return_t -{ - KERN_SUCCESS = 0, - KERN_INVALID_ADDRESS = 1, - KERN_PROTECTION_FAILURE = 2, - KERN_NO_SPACE = 3, - KERN_INVALID_ARGUMENT = 4, - KERN_FAILURE = 5, - KERN_RESOURCE_SHORTAGE = 6, - KERN_NOT_RECEIVER = 7, - KERN_NO_ACCESS = 8, - KERN_MEMORY_FAILURE = 9, - KERN_MEMORY_ERROR = 10, - KERN_ALREADY_IN_SET = 11, - KERN_NOT_IN_SET = 12, - KERN_NAME_EXISTS = 13, - KERN_ABORTED = 14, - KERN_INVALID_NAME = 15, - KERN_INVALID_TASK = 16, - KERN_INVALID_RIGHT = 17, - KERN_INVALID_VALUE = 18, - KERN_UREFS_OVERFLOW = 19, - KERN_INVALID_CAPABILITY = 20, - KERN_RIGHT_EXISTS = 21, - KERN_INVALID_HOST = 22, - KERN_MEMORY_PRESENT = 23, - KERN_MEMORY_DATA_MOVED = 24, - KERN_MEMORY_RESTART_COPY = 25, - KERN_INVALID_PROCESSOR_SET = 26, - KERN_POLICY_LIMIT = 27, - KERN_INVALID_POLICY = 28, - KERN_INVALID_OBJECT = 29, - KERN_ALREADY_WAITING = 30, - KERN_DEFAULT_SET = 31, - KERN_EXCEPTION_PROTECTED = 32, - KERN_INVALID_LEDGER = 33, - KERN_INVALID_MEMORY_CONTROL = 34, - KERN_INVALID_SECURITY = 35, - KERN_NOT_DEPRESSED = 36, - KERN_TERMINATED = 37, - KERN_LOCK_SET_DESTROYED = 38, - KERN_LOCK_UNSTABLE = 39, - KERN_LOCK_OWNED = 40, - KERN_LOCK_OWNED_SELF = 41, - KERN_SEMAPHORE_DESTROYED = 42, - KERN_RPC_SERVER_TERMINATED = 43, - KERN_RPC_TERMINATE_ORPHAN = 44, - KERN_RPC_CONTINUE_ORPHAN = 45, - KERN_NOT_SUPPORTED = 46, - KERN_NODE_DOWN = 47, - KERN_OPERATION_TIMED_OUT = 49, - KERN_RETURN_MAX = 0x100, -} +public import core.sys.darwin.mach.kern_return; diff --git a/src/core/sys/osx/mach/loader.d b/src/core/sys/osx/mach/loader.d index d3ceb6d026..02b552bf40 100644 --- a/src/core/sys/osx/mach/loader.d +++ b/src/core/sys/osx/mach/loader.d @@ -12,86 +12,4 @@ */ module core.sys.osx.mach.loader; -version (OSX): -extern (C): - -struct mach_header -{ - uint magic; - int cputype; - int cpusubtype; - uint filetype; - uint ncmds; - uint sizeofcmds; - uint flags; -} - -struct mach_header_64 -{ - uint magic; - int cputype; - int cpusubtype; - uint filetype; - uint ncmds; - uint sizeofcmds; - uint flags; - uint reserved; -} - -enum uint MH_MAGIC = 0xfeedface; -enum uint MH_CIGAM = 0xcefaedfe; -enum uint MH_MAGIC_64 = 0xfeedfacf; -enum uint MH_CIGAM_64 = 0xcffaedfe; - -enum SEG_PAGEZERO = "__PAGEZERO"; -enum SEG_TEXT = "__TEXT"; -enum SECT_TEXT = "__text"; -enum SECT_FVMLIB_INIT0 = "__fvmlib_init0"; -enum SECT_FVMLIB_INIT1 = "__fvmlib_init1"; -enum SEG_DATA = "__DATA"; -enum SECT_DATA = "__data"; -enum SECT_BSS = "__bss"; -enum SECT_COMMON = "__common"; -enum SEG_OBJC = "__OBJC"; -enum SECT_OBJC_SYMBOLS = "__symbol_table"; -enum SECT_OBJC_MODULES = "__module_info"; -enum SECT_OBJC_STRINGS = "__selector_strs"; -enum SECT_OBJC_REFS = "__selector_refs"; -enum SEG_ICON = "__ICON"; -enum SECT_ICON_HEADER = "__header"; -enum SECT_ICON_TIFF = "__tiff"; -enum SEG_LINKEDIT = "__LINKEDIT"; -enum SEG_UNIXSTACK = "__UNIXSTACK"; -enum SEG_IMPORT = "__IMPORT"; - -struct section -{ - char[16] sectname; - char[16] segname; - uint addr; - uint size; - uint offset; - uint align_; - uint reloff; - uint nreloc; - uint flags; - uint reserved1; - uint reserved2; -} - -struct section_64 -{ - char[16] sectname; - char[16] segname; - ulong addr; - ulong size; - uint offset; - uint align_; - uint reloff; - uint nreloc; - uint flags; - uint reserved1; - uint reserved2; - uint reserved3; -} - +public import core.sys.darwin.mach.loader; diff --git a/src/core/sys/osx/mach/port.d b/src/core/sys/osx/mach/port.d index 40538e6d36..9024ebcc9d 100644 --- a/src/core/sys/osx/mach/port.d +++ b/src/core/sys/osx/mach/port.d @@ -13,15 +13,4 @@ */ module core.sys.osx.mach.port; -version (OSX): -extern (C): - -version( X86 ) - version = i386; -version( X86_64 ) - version = i386; -version( i386 ) -{ - alias uint natural_t; - alias natural_t mach_port_t; -} +public import core.sys.darwin.mach.port; diff --git a/src/core/sys/osx/mach/semaphore.d b/src/core/sys/osx/mach/semaphore.d index 6eefd24bd1..42f6c996fd 100644 --- a/src/core/sys/osx/mach/semaphore.d +++ b/src/core/sys/osx/mach/semaphore.d @@ -13,45 +13,4 @@ */ module core.sys.osx.mach.semaphore; -version (OSX): -extern (C): -nothrow: - -public import core.sys.osx.mach.kern_return; -public import core.sys.osx.mach.port; - -alias mach_port_t task_t; -alias mach_port_t thread_t; -alias mach_port_t semaphore_t; -alias int sync_policy_t; - -alias int clock_res_t; -struct mach_timespec_t -{ - uint tv_sec; - clock_res_t tv_nsec; -} - -enum -{ - SYNC_POLICY_FIFO = 0x0, - SYNC_POLICY_FIXED_PRIORITY = 0x1, - SYNC_POLICY_REVERSED = 0x2, - SYNC_POLICY_ORDER_MASK = 0x3, - SYNC_POLICY_LIFO = (SYNC_POLICY_FIFO | SYNC_POLICY_REVERSED), - SYNC_POLICY_MAX = 0x7, -} - -task_t mach_task_self(); -kern_return_t semaphore_create(task_t, semaphore_t*, int, int); -kern_return_t semaphore_destroy(task_t, semaphore_t); - -kern_return_t semaphore_signal(semaphore_t); -kern_return_t semaphore_signal_all(semaphore_t); -kern_return_t semaphore_signal_thread(semaphore_t, thread_t); - -kern_return_t semaphore_wait(semaphore_t); -kern_return_t semaphore_wait_signal(semaphore_t, semaphore_t); - -kern_return_t semaphore_timedwait(semaphore_t, mach_timespec_t); -kern_return_t semaphore_timedwait_signal(semaphore_t, semaphore_t, mach_timespec_t); +public import core.sys.darwin.mach.semaphore; diff --git a/src/core/sys/osx/mach/thread_act.d b/src/core/sys/osx/mach/thread_act.d index 51d04cf07d..7c96f0b01d 100644 --- a/src/core/sys/osx/mach/thread_act.d +++ b/src/core/sys/osx/mach/thread_act.d @@ -13,115 +13,4 @@ */ module core.sys.osx.mach.thread_act; -version (OSX): -extern (C): -nothrow: - -public import core.sys.osx.mach.kern_return; -public import core.sys.osx.mach.port; - -version( X86 ) - version = i386; -version( X86_64 ) - version = i386; -version( i386 ) -{ - alias mach_port_t thread_act_t; - alias void thread_state_t; - alias int thread_state_flavor_t; - alias natural_t mach_msg_type_number_t; - - enum - { - x86_THREAD_STATE32 = 1, - x86_FLOAT_STATE32 = 2, - x86_EXCEPTION_STATE32 = 3, - x86_THREAD_STATE64 = 4, - x86_FLOAT_STATE64 = 5, - x86_EXCEPTION_STATE64 = 6, - x86_THREAD_STATE = 7, - x86_FLOAT_STATE = 8, - x86_EXCEPTION_STATE = 9, - x86_DEBUG_STATE32 = 10, - x86_DEBUG_STATE64 = 11, - x86_DEBUG_STATE = 12, - THREAD_STATE_NONE = 13, - } - - struct x86_thread_state32_t - { - uint eax; - uint ebx; - uint ecx; - uint edx; - uint edi; - uint esi; - uint ebp; - uint esp; - uint ss; - uint eflags; - uint eip; - uint cs; - uint ds; - uint es; - uint fs; - uint gs; - } - - struct x86_thread_state64_t - { - ulong rax; - ulong rbx; - ulong rcx; - ulong rdx; - ulong rdi; - ulong rsi; - ulong rbp; - ulong rsp; - ulong r8; - ulong r9; - ulong r10; - ulong r11; - ulong r12; - ulong r13; - ulong r14; - ulong r15; - ulong rip; - ulong rflags; - ulong cs; - ulong fs; - ulong gs; - } - - struct x86_state_hdr_t - { - int flavor; - int count; - } - - struct x86_thread_state_t - { - x86_state_hdr_t tsh; - union _uts - { - x86_thread_state32_t ts32; - x86_thread_state64_t ts64; - } - _uts uts; - } - - enum : mach_msg_type_number_t - { - x86_THREAD_STATE32_COUNT = cast(mach_msg_type_number_t)( x86_thread_state32_t.sizeof / int.sizeof ), - x86_THREAD_STATE64_COUNT = cast(mach_msg_type_number_t)( x86_thread_state64_t.sizeof / int.sizeof ), - x86_THREAD_STATE_COUNT = cast(mach_msg_type_number_t)( x86_thread_state_t.sizeof / int.sizeof ), - } - - alias x86_THREAD_STATE MACHINE_THREAD_STATE; - alias x86_THREAD_STATE_COUNT MACHINE_THREAD_STATE_COUNT; - - mach_port_t mach_thread_self(); - kern_return_t thread_suspend(thread_act_t); - kern_return_t thread_resume(thread_act_t); - kern_return_t thread_get_state(thread_act_t, thread_state_flavor_t, thread_state_t*, mach_msg_type_number_t*); -} +public import core.sys.darwin.mach.thread_act; diff --git a/src/core/sys/osx/pthread.d b/src/core/sys/osx/pthread.d index 953a787367..fbcded1363 100644 --- a/src/core/sys/osx/pthread.d +++ b/src/core/sys/osx/pthread.d @@ -13,38 +13,4 @@ */ module core.sys.osx.pthread; -version (OSX): -extern (C): -nothrow: - -public import core.sys.posix.pthread; -public import core.sys.osx.mach.port; - -int pthread_is_threaded_np(); -int pthread_threadid_np(pthread_t, ulong*); -// ^ __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2) -int pthread_rwlock_longrdlock_np(pthread_rwlock_t*); -int pthread_rwlock_yieldwrlock_np(pthread_rwlock_t*); -// ^ __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA); -int pthread_rwlock_downgrade_np(pthread_rwlock_t*); -int pthread_rwlock_upgrade_np(pthread_rwlock_t*); -int pthread_rwlock_tryupgrade_np(pthread_rwlock_t*); -int pthread_rwlock_held_np(pthread_rwlock_t*); -int pthread_rwlock_rdheld_np(pthread_rwlock_t*); -int pthread_rwlock_wrheld_np(pthread_rwlock_t*); -int pthread_getname_np(pthread_t, char*, size_t); -int pthread_setname_np(in char*); -// ^ __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2) -int pthread_main_np(); -mach_port_t pthread_mach_thread_np(pthread_t); -size_t pthread_get_stacksize_np(pthread_t); -void* pthread_get_stackaddr_np(pthread_t); -int pthread_cond_signal_thread_np(pthread_cond_t*, pthread_t); -int pthread_cond_timedwait_relative_np(pthread_cond_t*, pthread_mutex_t*, in timespec*); -int pthread_create_suspended_np(pthread_t*, in pthread_attr_t*, void* function(void*), void*); -int pthread_kill(pthread_t, int); -pthread_t pthread_from_mach_thread_np(mach_port_t); -// ^ __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0) -int pthread_sigmask(int, in sigset_t*, sigset_t*); -// ^ __DARWIN_ALIAS(pthread_sigmask) -void pthread_yield_np(); +public import core.sys.darwin.pthread; diff --git a/src/core/sys/osx/sys/cdefs.d b/src/core/sys/osx/sys/cdefs.d index 6c12d2bd90..89f3f0ac02 100644 --- a/src/core/sys/osx/sys/cdefs.d +++ b/src/core/sys/osx/sys/cdefs.d @@ -5,12 +5,4 @@ */ module core.sys.osx.sys.cdefs; -version (OSX): - -public import core.sys.posix.config; - -// http://www.opensource.apple.com/source/xnu/xnu-2422.115.4/bsd/sys/cdefs.h -enum _DARWIN_C_SOURCE = true; - -enum __DARWIN_C_FULL = 900000L; -enum __DARWIN_C_LEVEL = __DARWIN_C_FULL; +public import core.sys.darwin.sys.cdefs; diff --git a/src/core/sys/osx/sys/event.d b/src/core/sys/osx/sys/event.d index cb20c4c35e..9cb0efecb6 100644 --- a/src/core/sys/osx/sys/event.d +++ b/src/core/sys/osx/sys/event.d @@ -13,118 +13,4 @@ */ module core.sys.osx.sys.event; -version (OSX): -extern (C): - -import core.stdc.stdint; // intptr_t, uintptr_t -import core.sys.posix.time; // timespec - -enum : short -{ - EVFILT_READ = -1, - EVFILT_WRITE = -2, - EVFILT_AIO = -3, /* attached to aio requests */ - EVFILT_VNODE = -4, /* attached to vnodes */ - EVFILT_PROC = -5, /* attached to struct proc */ - EVFILT_SIGNAL = -6, /* attached to struct proc */ - EVFILT_TIMER = -7, /* timers */ - EVFILT_MACHPORT = -8, /* Mach portsets */ - EVFILT_FS = -9, /* filesystem events */ - EVFILT_USER = -10, /* User events */ - EVFILT_VM = -12, /* virtual memory events */ - EVFILT_SYSCOUNT = 11 -} - -extern(D) void EV_SET(kevent_t* kevp, typeof(kevent_t.tupleof) args) -{ - *kevp = kevent_t(args); -} - -struct kevent_t -{ - uintptr_t ident; /* identifier for this event */ - short filter; /* filter for event */ - ushort flags; - uint fflags; - intptr_t data; - void *udata; /* opaque user data identifier */ -} - -enum -{ - /* actions */ - EV_ADD = 0x0001, /* add event to kq (implies enable) */ - EV_DELETE = 0x0002, /* delete event from kq */ - EV_ENABLE = 0x0004, /* enable event */ - EV_DISABLE = 0x0008, /* disable event (not reported) */ - - /* flags */ - EV_ONESHOT = 0x0010, /* only report one occurrence */ - EV_CLEAR = 0x0020, /* clear event state after reporting */ - EV_RECEIPT = 0x0040, /* force EV_ERROR on success, data=0 */ - EV_DISPATCH = 0x0080, /* disable event after reporting */ - - EV_SYSFLAGS = 0xF000, /* reserved by system */ - EV_FLAG1 = 0x2000, /* filter-specific flag */ - - /* returned values */ - EV_EOF = 0x8000, /* EOF detected */ - EV_ERROR = 0x4000, /* error, data contains errno */ -} - -enum -{ - /* - * data/hint flags/masks for EVFILT_USER, shared with userspace - * - * On input, the top two bits of fflags specifies how the lower twenty four - * bits should be applied to the stored value of fflags. - * - * On output, the top two bits will always be set to NOTE_FFNOP and the - * remaining twenty four bits will contain the stored fflags value. - */ - NOTE_FFNOP = 0x00000000, /* ignore input fflags */ - NOTE_FFAND = 0x40000000, /* AND fflags */ - NOTE_FFOR = 0x80000000, /* OR fflags */ - NOTE_FFCOPY = 0xc0000000, /* copy fflags */ - NOTE_FFCTRLMASK = 0xc0000000, /* masks for operations */ - NOTE_FFLAGSMASK = 0x00ffffff, - - NOTE_TRIGGER = 0x01000000, /* Cause the event to be - triggered for output. */ - - /* - * data/hint flags for EVFILT_{READ|WRITE}, shared with userspace - */ - NOTE_LOWAT = 0x0001, /* low water mark */ - - /* - * data/hint flags for EVFILT_VNODE, shared with userspace - */ - NOTE_DELETE = 0x0001, /* vnode was removed */ - NOTE_WRITE = 0x0002, /* data contents changed */ - NOTE_EXTEND = 0x0004, /* size increased */ - NOTE_ATTRIB = 0x0008, /* attributes changed */ - NOTE_LINK = 0x0010, /* link count changed */ - NOTE_RENAME = 0x0020, /* vnode was renamed */ - NOTE_REVOKE = 0x0040, /* vnode access was revoked */ - - /* - * data/hint flags for EVFILT_PROC, shared with userspace - */ - NOTE_EXIT = 0x80000000, /* process exited */ - NOTE_FORK = 0x40000000, /* process forked */ - NOTE_EXEC = 0x20000000, /* process exec'd */ - NOTE_PCTRLMASK = 0xf0000000, /* mask for hint bits */ - NOTE_PDATAMASK = 0x000fffff, /* mask for pid */ - - /* additional flags for EVFILT_PROC */ - NOTE_TRACK = 0x00000001, /* follow across forks */ - NOTE_TRACKERR = 0x00000002, /* could not track child */ - NOTE_CHILD = 0x00000004, /* am a child process */ -} - -int kqueue(); -int kevent(int kq, const kevent_t *changelist, int nchanges, - kevent_t *eventlist, int nevents, - const timespec *timeout); +public import core.sys.darwin.sys.event; diff --git a/src/core/sys/osx/sys/mman.d b/src/core/sys/osx/sys/mman.d index 1a29903aa7..916a0628ab 100644 --- a/src/core/sys/osx/sys/mman.d +++ b/src/core/sys/osx/sys/mman.d @@ -5,98 +5,4 @@ */ module core.sys.osx.sys.mman; -version (OSX): -extern (C): -nothrow: - -public import core.sys.posix.sys.mman; -import core.sys.osx.sys.cdefs; -import core.sys.posix.sys.types; - -// already in core.sys.posix.sys.mman -// enum PROT_NONE = 0x00; -// enum PROT_READ = 0x01; -// enum PROT_WRITE = 0x02; -// enum PROT_EXEC = 0x04; - -// already in core.sys.posix.sys.mman -// enum MAP_SHARED = 0x0001; -// enum MAP_PRIVATE = 0x0002; -static if (_DARWIN_C_SOURCE) - alias MAP_COPY = MAP_PRIVATE; -// enum MAP_FIXED = 0x0010; - -static if (_DARWIN_C_SOURCE) -{ - enum MAP_RENAME = 0x0020; - enum MAP_NORESERVE = 0x0040; - enum MAP_RESERVED0080 = 0x0080; - enum MAP_NOEXTEND = 0x0100; - enum MAP_HASSEMAPHORE = 0x0200; - enum MAP_NOCACHE = 0x0400; - enum MAP_JIT = 0x0800; -} - -// already in core.sys.posix.sys.mman -// enum MCL_CURRENT = 0x0001; -// enum MCL_FUTURE = 0x0002; - -// enum MAP_FAILED = cast(void*)-1; - -// enum MS_ASYNC = 0x0001; -// enum MS_INVALIDATE = 0x0002; -// enum MS_SYNC = 0x0010; - -static if (_DARWIN_C_SOURCE) -{ - enum MS_KILLPAGES = 0x0004; - enum MS_DEACTIVATE = 0x0008; - - enum MAP_FILE = 0x0000; - -// already in core.sys.posix.sys.mman -// enum MAP_ANON = 0x1000; - -// enum POSIX_MADV_NORMAL = 0; -// enum POSIX_MADV_RANDOM = 1; -// enum POSIX_MADV_SEQUENTIAL = 2; -// enum POSIX_MADV_WILLNEED = 3; -// enum POSIX_MADV_DONTNEED = 4; - - alias MADV_NORMAL = POSIX_MADV_NORMAL; - alias MADV_RANDOM = POSIX_MADV_RANDOM; - alias MADV_SEQUENTIAL = POSIX_MADV_SEQUENTIAL; - alias MADV_WILLNEED = POSIX_MADV_WILLNEED; - alias MADV_DONTNEED = POSIX_MADV_DONTNEED; - enum MADV_FREE = 5; - enum MADV_ZERO_WIRED_PAGES = 6; - enum MADV_FREE_REUSABLE = 7; - enum MADV_FREE_REUSE = 8; - enum MADV_CAN_REUSE = 9; - - enum MINCORE_INCORE = 0x1; - enum MINCORE_REFERENCED = 0x2; - enum MINCORE_MODIFIED = 0x4; - enum MINCORE_REFERENCED_OTHER = 0x8; - enum MINCORE_MODIFIED_OTHER = 0x10; -} - -// already in core.sys.posix.sys.mman -// int mlockall(int); -// int munlockall(void); -// int mlock(const void *, size_t); -// void * mmap(void *, size_t, int, int, int, off_t); -// int mprotect(void *, size_t, int); -// int msync(void *, size_t, int); -// int munlock(const void *, size_t); -// int munmap(void *, size_t); -// int shm_open(const char *, int, ...); -// int shm_unlink(const char *); -// int posix_madvise(void *, size_t, int); - -static if (_DARWIN_C_SOURCE) -{ - int madvise(void *, size_t, int); - int mincore(const(void)*, size_t, char *); - int minherit(void *, size_t, int); -} +public import core.sys.darwin.sys.mman; diff --git a/src/core/sys/posix/arpa/inet.d b/src/core/sys/posix/arpa/inet.d index 6763df249b..552e68acfb 100644 --- a/src/core/sys/posix/arpa/inet.d +++ b/src/core/sys/posix/arpa/inet.d @@ -18,6 +18,15 @@ private import core.sys.posix.config; public import core.stdc.inttypes; // for uint32_t, uint16_t public import core.sys.posix.sys.socket; // for socklen_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -74,7 +83,7 @@ version( CRuntime_Glibc ) const(char)* inet_ntop(int, in void*, char*, socklen_t); int inet_pton(int, in char*, void*); } -else version( OSX ) +else version( Darwin ) { alias uint16_t in_port_t; alias uint32_t in_addr_t; @@ -203,7 +212,7 @@ version( CRuntime_Glibc ) { enum INET6_ADDRSTRLEN = 46; } -else version( OSX ) +else version( Darwin ) { enum INET6_ADDRSTRLEN = 46; } diff --git a/src/core/sys/posix/dirent.d b/src/core/sys/posix/dirent.d index d0db595237..e74b3ac5ea 100644 --- a/src/core/sys/posix/dirent.d +++ b/src/core/sys/posix/dirent.d @@ -18,6 +18,15 @@ module core.sys.posix.dirent; private import core.sys.posix.config; public import core.sys.posix.sys.types; // for ino_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -81,7 +90,7 @@ version( CRuntime_Glibc ) dirent* readdir(DIR*); } } -else version( OSX ) +else version( Darwin ) { enum { @@ -117,7 +126,12 @@ else version( OSX ) // OS X maintains backwards compatibility with older binaries using 32-bit // inode functions by appending $INODE64 to newer 64-bit inode functions. - pragma(mangle, "readdir$INODE64") dirent* readdir(DIR*); + // Other Darwin variants (iOS, TVOS, WatchOS) only support 64-bit inodes, + // no suffix needed + version( OSX ) + pragma(mangle, "readdir$INODE64") dirent* readdir(DIR*); + else + dirent* readdir(DIR*); } else version( FreeBSD ) { @@ -211,6 +225,9 @@ else static assert(false, "Unsupported platform"); } +// Only OS X out of the Darwin family needs special treatment. Other Darwins +// (iOS, TVOS, WatchOS) are fine with normal symbol names for these functions +// in else below. version( OSX ) { version( D_LP64 ) @@ -255,9 +272,12 @@ version( CRuntime_Glibc ) int readdir_r(DIR*, dirent*, dirent**); } } -else version( OSX ) +else version( Darwin ) { - pragma(mangle, "readdir_r$INODE64") int readdir_r(DIR*, dirent*, dirent**); + version( OSX ) + pragma(mangle, "readdir_r$INODE64") int readdir_r(DIR*, dirent*, dirent**); + else + int readdir_r(DIR*, dirent*, dirent**); } else version( FreeBSD ) { @@ -302,19 +322,27 @@ else version( FreeBSD ) void seekdir(DIR*, c_long); c_long telldir(DIR*); } -else version ( OSX ) +else version (Darwin) { - version ( D_LP64 ) + version( OSX ) { - pragma(mangle, "seekdir$INODE64") void seekdir(DIR*, c_long); - pragma(mangle, "telldir$INODE64") c_long telldir(DIR*); + version ( D_LP64 ) + { + pragma(mangle, "seekdir$INODE64") void seekdir(DIR*, c_long); + pragma(mangle, "telldir$INODE64") c_long telldir(DIR*); + } + else + { + // 32-bit mangles __DARWIN_UNIX03 specific functions with $UNIX2003 to + // maintain backward compatibility with binaries build pre 10.5 + pragma(mangle, "seekdir$INODE64$UNIX2003") void seekdir(DIR*, c_long); + pragma(mangle, "telldir$INODE64$UNIX2003") c_long telldir(DIR*); + } } - else + else // other Darwins (e.g. iOS, TVOS, WatchOS) { - // 32-bit mangles __DARWIN_UNIX03 specific functions with $UNIX2003 to - // maintain backward compatibility with binaries build pre 10.5 - pragma(mangle, "seekdir$INODE64$UNIX2003") void seekdir(DIR*, c_long); - pragma(mangle, "telldir$INODE64$UNIX2003") c_long telldir(DIR*); + void seekdir(DIR*, c_long); + c_long telldir(DIR*); } } else version (Solaris) diff --git a/src/core/sys/posix/dlfcn.d b/src/core/sys/posix/dlfcn.d index bd5b8eab70..7b0ca1b0d8 100644 --- a/src/core/sys/posix/dlfcn.d +++ b/src/core/sys/posix/dlfcn.d @@ -16,6 +16,15 @@ module core.sys.posix.dlfcn; private import core.sys.posix.config; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -123,7 +132,7 @@ version( CRuntime_Glibc ) } } } -else version( OSX ) +else version( Darwin ) { enum RTLD_LAZY = 0x00001; enum RTLD_NOW = 0x00002; diff --git a/src/core/sys/posix/fcntl.d b/src/core/sys/posix/fcntl.d index 7784e6eb30..0102f4d202 100644 --- a/src/core/sys/posix/fcntl.d +++ b/src/core/sys/posix/fcntl.d @@ -19,6 +19,15 @@ private import core.stdc.stdint; public import core.sys.posix.sys.types; // for off_t, mode_t public import core.sys.posix.sys.stat; // for S_IFMT, etc. +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): @@ -262,7 +271,7 @@ version( CRuntime_Glibc ) enum AT_SYMLINK_NOFOLLOW = 0x100; enum AT_FDCWD = -100; } -else version( OSX ) +else version( Darwin ) { enum F_DUPFD = 0; enum F_GETFD = 1; diff --git a/src/core/sys/posix/grp.d b/src/core/sys/posix/grp.d index d930242775..6f7cf6c472 100644 --- a/src/core/sys/posix/grp.d +++ b/src/core/sys/posix/grp.d @@ -17,6 +17,15 @@ module core.sys.posix.grp; private import core.sys.posix.config; public import core.sys.posix.sys.types; // for gid_t, uid_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -48,7 +57,7 @@ version( CRuntime_Glibc ) char** gr_mem; } } -else version( OSX ) +else version( Darwin ) { struct group { @@ -109,7 +118,7 @@ version( CRuntime_Glibc ) int getgrnam_r(in char*, group*, char*, size_t, group**); int getgrgid_r(gid_t, group*, char*, size_t, group**); } -else version( OSX ) +else version( Darwin ) { int getgrnam_r(in char*, group*, char*, size_t, group**); int getgrgid_r(gid_t, group*, char*, size_t, group**); @@ -147,7 +156,7 @@ version( CRuntime_Glibc ) @trusted void endgrent(); @trusted void setgrent(); } -else version( OSX ) +else version( Darwin ) { group* getgrent(); @trusted void endgrent(); diff --git a/src/core/sys/posix/net/if_.d b/src/core/sys/posix/net/if_.d index 4cdd8300ce..7fd75f03d2 100644 --- a/src/core/sys/posix/net/if_.d +++ b/src/core/sys/posix/net/if_.d @@ -16,6 +16,15 @@ module core.sys.posix.net.if_; private import core.sys.posix.config; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -52,7 +61,7 @@ version( CRuntime_Glibc ) if_nameindex_t* if_nameindex(); void if_freenameindex(if_nameindex_t*); } -else version( OSX ) +else version( Darwin ) { struct if_nameindex_t { diff --git a/src/core/sys/posix/netdb.d b/src/core/sys/posix/netdb.d index 26a6d20f6a..cabf5cc2a7 100644 --- a/src/core/sys/posix/netdb.d +++ b/src/core/sys/posix/netdb.d @@ -20,6 +20,15 @@ public import core.sys.posix.netinet.in_; // for in_port_t, in_addr_t public import core.sys.posix.sys.types; // for ino_t public import core.sys.posix.sys.socket; // for socklen_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -219,7 +228,7 @@ version( CRuntime_Glibc ) enum EAI_SYSTEM = -11; enum EAI_OVERFLOW = -12; } -else version( OSX ) +else version( Darwin ) { struct hostent { diff --git a/src/core/sys/posix/netinet/in_.d b/src/core/sys/posix/netinet/in_.d index e145eb8a4c..5ac0bcd92c 100644 --- a/src/core/sys/posix/netinet/in_.d +++ b/src/core/sys/posix/netinet/in_.d @@ -19,6 +19,15 @@ public import core.stdc.inttypes; // for uint32_t, uint16_t, uint8_t public import core.sys.posix.arpa.inet; public import core.sys.posix.sys.socket; // for sa_family_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -114,7 +123,7 @@ version( CRuntime_Glibc ) //enum INET_ADDRSTRLEN = 16; } -else version( OSX ) +else version( Darwin ) { //alias uint16_t in_port_t; //alias uint32_t in_addr_t; @@ -450,7 +459,7 @@ version ( CRuntime_Glibc ) ((cast(uint8_t*) addr)[1] & 0xf) == 0xe; } } -else version( OSX ) +else version( Darwin ) { struct in6_addr { @@ -981,7 +990,7 @@ version( CRuntime_Glibc ) { enum uint IPPROTO_RAW = 255; } -else version( OSX ) +else version( Darwin ) { enum uint IPPROTO_RAW = 255; } diff --git a/src/core/sys/posix/netinet/tcp.d b/src/core/sys/posix/netinet/tcp.d index 5c40915f45..ad3e00cfc1 100644 --- a/src/core/sys/posix/netinet/tcp.d +++ b/src/core/sys/posix/netinet/tcp.d @@ -16,6 +16,15 @@ module core.sys.posix.netinet.tcp; private import core.sys.posix.config; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): @@ -30,7 +39,7 @@ version( CRuntime_Glibc ) { enum TCP_NODELAY = 1; } -else version( OSX ) +else version( Darwin ) { enum TCP_NODELAY = 1; } diff --git a/src/core/sys/posix/poll.d b/src/core/sys/posix/poll.d index c98bcfcb7a..d5fcb56221 100644 --- a/src/core/sys/posix/poll.d +++ b/src/core/sys/posix/poll.d @@ -16,6 +16,15 @@ module core.sys.posix.poll; private import core.sys.posix.config; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -75,7 +84,7 @@ version( CRuntime_Glibc ) int poll(pollfd*, nfds_t, int); } -else version( OSX ) +else version( Darwin ) { struct pollfd { diff --git a/src/core/sys/posix/pthread.d b/src/core/sys/posix/pthread.d index 074bd5cca9..b4cb78a037 100644 --- a/src/core/sys/posix/pthread.d +++ b/src/core/sys/posix/pthread.d @@ -21,6 +21,15 @@ public import core.sys.posix.time; import core.stdc.stdint; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow: @@ -132,7 +141,7 @@ version( CRuntime_Glibc ) PTHREAD_PROCESS_SHARED } } -else version( OSX ) +else version( Darwin ) { enum { @@ -300,7 +309,7 @@ version( CRuntime_Glibc ) } } } -else version( OSX ) +else version( Darwin ) { alias void function(void*) _pthread_cleanup_routine; @@ -507,7 +516,7 @@ else version( FreeBSD ) int pthread_barrierattr_init(pthread_barrierattr_t*); int pthread_barrierattr_setpshared(pthread_barrierattr_t*, int); } -else version (OSX) +else version (Darwin) { } else version (Solaris) @@ -565,7 +574,7 @@ else version( FreeBSD ) int pthread_spin_trylock(pthread_spinlock_t*); int pthread_spin_unlock(pthread_spinlock_t*); } -else version (OSX) +else version (Darwin) { } else version (Solaris) @@ -615,7 +624,7 @@ version( CRuntime_Glibc ) int pthread_mutexattr_settype(pthread_mutexattr_t*, int) @trusted; int pthread_setconcurrency(int); } -else version( OSX ) +else version( Darwin ) { enum PTHREAD_MUTEX_NORMAL = 0; enum PTHREAD_MUTEX_ERRORCHECK = 1; @@ -698,7 +707,7 @@ else version( FreeBSD ) { int pthread_getcpuclockid(pthread_t, clockid_t*); } -else version (OSX) +else version (Darwin) { } else version (Solaris) @@ -728,7 +737,7 @@ version( CRuntime_Glibc ) int pthread_rwlock_timedrdlock(pthread_rwlock_t*, in timespec*); int pthread_rwlock_timedwrlock(pthread_rwlock_t*, in timespec*); } -else version( OSX ) +else version( Darwin ) { int pthread_mutex_timedlock(pthread_mutex_t*, in timespec*); int pthread_rwlock_timedrdlock(pthread_rwlock_t*, in timespec*); @@ -771,7 +780,7 @@ int pthread_mutexattr_getprotocol(in pthread_mutexattr_t*, int*); (TPI|TPP) int pthread_mutexattr_setprioceiling(pthread_mutexattr_t*, int); (TPP) int pthread_mutexattr_setprotocol(pthread_mutexattr_t*, int); (TPI|TPP) */ -version( OSX ) +version( Darwin ) { enum { @@ -840,7 +849,7 @@ version( CRuntime_Glibc ) int pthread_setschedparam(pthread_t, int, in sched_param*); int pthread_setschedprio(pthread_t, int); } -else version( OSX ) +else version( Darwin ) { enum { @@ -935,7 +944,7 @@ version( CRuntime_Glibc ) int pthread_attr_setstackaddr(pthread_attr_t*, void*); int pthread_attr_setstacksize(pthread_attr_t*, size_t); } -else version( OSX ) +else version( Darwin ) { int pthread_attr_getstack(in pthread_attr_t*, void**, size_t*); int pthread_attr_getstackaddr(in pthread_attr_t*, void**); @@ -1006,7 +1015,7 @@ else version( FreeBSD ) int pthread_rwlockattr_getpshared(in pthread_rwlockattr_t*, int*); int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int); } -else version( OSX ) +else version( Darwin ) { int pthread_condattr_getpshared(in pthread_condattr_t*, int*); int pthread_condattr_setpshared(pthread_condattr_t*, int); diff --git a/src/core/sys/posix/pwd.d b/src/core/sys/posix/pwd.d index 69dcd3021f..d73286237c 100644 --- a/src/core/sys/posix/pwd.d +++ b/src/core/sys/posix/pwd.d @@ -17,6 +17,15 @@ module core.sys.posix.pwd; private import core.sys.posix.config; public import core.sys.posix.sys.types; // for gid_t, uid_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -52,7 +61,7 @@ version( CRuntime_Glibc ) char* pw_shell; } } -else version( OSX ) +else version( Darwin ) { struct passwd { @@ -133,7 +142,7 @@ version( CRuntime_Glibc ) int getpwnam_r(in char*, passwd*, char*, size_t, passwd**); int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); } -else version( OSX ) +else version( Darwin ) { int getpwnam_r(in char*, passwd*, char*, size_t, passwd**); int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); @@ -171,7 +180,7 @@ version( CRuntime_Glibc ) passwd* getpwent(); void setpwent(); } -else version ( OSX ) +else version ( Darwin ) { void endpwent(); passwd* getpwent(); diff --git a/src/core/sys/posix/sched.d b/src/core/sys/posix/sched.d index 4d7639d4da..c3597ca984 100644 --- a/src/core/sys/posix/sched.d +++ b/src/core/sys/posix/sched.d @@ -19,6 +19,15 @@ private import core.sys.posix.config; public import core.sys.posix.time; public import core.sys.posix.sys.types; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -60,7 +69,7 @@ version( CRuntime_Glibc ) enum SCHED_RR = 2; //SCHED_SPORADIC (SS|TSP) } -else version( OSX ) +else version( Darwin ) { enum SCHED_OTHER = 1; enum SCHED_FIFO = 4; @@ -136,7 +145,7 @@ version( CRuntime_Glibc ) { int sched_yield(); } -else version( OSX ) +else version( Darwin ) { int sched_yield(); } @@ -172,7 +181,7 @@ version( CRuntime_Glibc ) int sched_get_priority_min(int); int sched_rr_get_interval(pid_t, timespec*); } -else version( OSX ) +else version( Darwin ) { int sched_get_priority_min(int); int sched_get_priority_max(int); diff --git a/src/core/sys/posix/semaphore.d b/src/core/sys/posix/semaphore.d index 2ce8f30f2c..72741d097c 100644 --- a/src/core/sys/posix/semaphore.d +++ b/src/core/sys/posix/semaphore.d @@ -17,6 +17,15 @@ module core.sys.posix.semaphore; private import core.sys.posix.config; private import core.sys.posix.time; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -59,7 +68,7 @@ version( CRuntime_Glibc ) enum SEM_FAILED = cast(sem_t*) null; } -else version( OSX ) +else version( Darwin ) { alias int sem_t; @@ -129,7 +138,7 @@ version( CRuntime_Glibc ) { int sem_timedwait(sem_t*, in timespec*); } -else version( OSX ) +else version( Darwin ) { int sem_timedwait(sem_t*, in timespec*); } diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index 4495c77d53..fb57e9c5af 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -16,6 +16,15 @@ public import core.stdc.signal; public import core.sys.posix.sys.types; // for pid_t //public import core.sys.posix.time; // for timespec, now defined here +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): //nothrow: // this causes Issue 12738 @@ -377,7 +386,7 @@ version( linux ) else static assert(0, "unimplemented"); } -else version( OSX ) +else version( Darwin ) { //SIGABRT (defined in core.stdc.signal) enum SIGALRM = 14; @@ -538,7 +547,7 @@ else version (linux) static assert(false, "Architecture not supported."); } } -else version( OSX ) +else version( Darwin ) { struct sigaction_t { @@ -755,7 +764,7 @@ version( CRuntime_Glibc ) int sigsuspend(in sigset_t*); int sigwait(in sigset_t*, int*); } -else version( OSX ) +else version( Darwin ) { enum SIG_HOLD = cast(sigfn_t2) 5; @@ -1422,7 +1431,7 @@ version( CRuntime_Glibc ) int sigpause(int); int sigrelse(int); } -else version( OSX ) +else version( Darwin ) { enum SIGPOLL = 7; enum SIGPROF = 27; @@ -1943,7 +1952,7 @@ version( linux ) c_long tv_nsec; } } -else version( OSX ) +else version( Darwin ) { struct timespec { @@ -2054,7 +2063,7 @@ else version( FreeBSD ) int sigtimedwait(in sigset_t*, siginfo_t*, in timespec*); int sigwaitinfo(in sigset_t*, siginfo_t*); } -else version (OSX) +else version (Darwin) { } else version (Solaris) @@ -2117,7 +2126,7 @@ version( CRuntime_Glibc ) int pthread_kill(pthread_t, int); int pthread_sigmask(int, in sigset_t*, sigset_t*); } -else version( OSX ) +else version( Darwin ) { int pthread_kill(pthread_t, int); int pthread_sigmask(int, in sigset_t*, sigset_t*); diff --git a/src/core/sys/posix/stdio.d b/src/core/sys/posix/stdio.d index 122cba07ef..de75ffc0c9 100644 --- a/src/core/sys/posix/stdio.d +++ b/src/core/sys/posix/stdio.d @@ -18,6 +18,15 @@ private import core.sys.posix.config; public import core.stdc.stdio; public import core.sys.posix.sys.types; // for off_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): @@ -264,7 +273,7 @@ version( CRuntime_Glibc ) { enum P_tmpdir = "/tmp"; } -version( OSX ) +version( Darwin ) { enum P_tmpdir = "/var/tmp"; } diff --git a/src/core/sys/posix/stdlib.d b/src/core/sys/posix/stdlib.d index 189cef6dd1..3727eb44f2 100644 --- a/src/core/sys/posix/stdlib.d +++ b/src/core/sys/posix/stdlib.d @@ -18,6 +18,15 @@ private import core.sys.posix.config; public import core.stdc.stdlib; public import core.sys.posix.sys.wait; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -111,7 +120,7 @@ version( CRuntime_Glibc ) void* valloc(size_t); // LEGACY non-standard } -else version( OSX ) +else version( Darwin ) { int setenv(in char*, in char*, int); int unsetenv(in char*); @@ -151,7 +160,7 @@ version( CRuntime_Glibc ) { int rand_r(uint*); } -else version( OSX ) +else version( Darwin ) { int rand_r(uint*); } @@ -260,7 +269,7 @@ version( CRuntime_Glibc ) int mkstemp(char*); } } -else version( OSX ) +else version( Darwin ) { //WNOHANG (defined in core.sys.posix.sys.wait) //WUNTRACED (defined in core.sys.posix.sys.wait) diff --git a/src/core/sys/posix/sys/ioctl.d b/src/core/sys/posix/sys/ioctl.d index 13168f719c..0a3f4d0755 100644 --- a/src/core/sys/posix/sys/ioctl.d +++ b/src/core/sys/posix/sys/ioctl.d @@ -16,6 +16,15 @@ module core.sys.posix.sys.ioctl; import core.stdc.config; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -318,7 +327,7 @@ version (CRuntime_Glibc) int ioctl(int __fd, c_ulong __request, ...); } -else version (OSX) +else version (Darwin) { import core.sys.posix.termios; // termios import core.sys.posix.sys.time; // timeval diff --git a/src/core/sys/posix/sys/ipc.d b/src/core/sys/posix/sys/ipc.d index 07892a060d..32ccffd46b 100644 --- a/src/core/sys/posix/sys/ipc.d +++ b/src/core/sys/posix/sys/ipc.d @@ -17,6 +17,15 @@ module core.sys.posix.sys.ipc; private import core.sys.posix.config; public import core.sys.posix.sys.types; // for uid_t, gid_t, mode_t, key_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -75,7 +84,7 @@ version( CRuntime_Glibc ) key_t ftok(in char*, int); } -else version( OSX ) +else version( Darwin ) { } diff --git a/src/core/sys/posix/sys/mman.d b/src/core/sys/posix/sys/mman.d index 94a84eebcc..134e8c2699 100644 --- a/src/core/sys/posix/sys/mman.d +++ b/src/core/sys/posix/sys/mman.d @@ -17,6 +17,15 @@ module core.sys.posix.sys.mman; private import core.sys.posix.config; public import core.sys.posix.sys.types; // for off_t, mode_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -58,7 +67,7 @@ version( CRuntime_Glibc ) int posix_madvise(void *__addr, size_t __len, int __advice); } } -else version( OSX ) +else version( Darwin ) { enum POSIX_MADV_NORMAL = 0; enum POSIX_MADV_RANDOM = 1; @@ -104,7 +113,7 @@ version( CRuntime_Glibc ) enum PROT_WRITE = 0x2; enum PROT_EXEC = 0x4; } -else version( OSX ) +else version( Darwin ) { enum PROT_NONE = 0x00; enum PROT_READ = 0x01; @@ -154,7 +163,7 @@ version( CRuntime_Glibc ) void* mmap(void*, size_t, int, int, int, off_t); int munmap(void*, size_t); } -else version( OSX ) +else version( Darwin ) { void* mmap(void*, size_t, int, int, int, off_t); int munmap(void*, size_t); @@ -288,7 +297,7 @@ version( CRuntime_Glibc ) int msync(void*, size_t, int); } -else version( OSX ) +else version( Darwin ) { enum MAP_SHARED = 0x0001; enum MAP_PRIVATE = 0x0002; @@ -413,7 +422,7 @@ version( CRuntime_Glibc ) int munlockall(); } -else version( OSX ) +else version( Darwin ) { enum MCL_CURRENT = 0x0001; enum MCL_FUTURE = 0x0002; @@ -463,7 +472,7 @@ version( CRuntime_Glibc ) int mlock(in void*, size_t); int munlock(in void*, size_t); } -else version( OSX ) +else version( Darwin ) { int mlock(in void*, size_t); int munlock(in void*, size_t); @@ -499,7 +508,7 @@ version (CRuntime_Glibc) { int mprotect(void*, size_t, int); } -else version( OSX ) +else version( Darwin ) { int mprotect(void*, size_t, int); } @@ -533,7 +542,7 @@ version( CRuntime_Glibc ) int shm_open(in char*, int, mode_t); int shm_unlink(in char*); } -else version( OSX ) +else version( Darwin ) { int shm_open(in char*, int, mode_t); int shm_unlink(in char*); diff --git a/src/core/sys/posix/sys/resource.d b/src/core/sys/posix/sys/resource.d index f7b58e0ab3..e3c6d05465 100644 --- a/src/core/sys/posix/sys/resource.d +++ b/src/core/sys/posix/sys/resource.d @@ -13,6 +13,15 @@ public import core.sys.posix.sys.time; public import core.sys.posix.sys.types: id_t; import core.sys.posix.config; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + nothrow extern(C): // @@ -134,7 +143,7 @@ version (CRuntime_Glibc) RLIMIT_AS = 9, } } -else version (OSX) +else version (Darwin) { enum { @@ -366,7 +375,7 @@ else version (Solaris) int getpriority(int, id_t); int setpriority(int, id_t, int); } -else version (OSX) +else version (Darwin) { int getpriority(int, id_t); int setpriority(int, id_t, int); @@ -394,7 +403,7 @@ else version (CRuntime_Bionic) int getrusage(int, rusage*); int setrlimit(int, in rlimit*); } -else version (OSX) +else version (Darwin) { int getrlimit(int, rlimit*); int getrusage(int, rusage*); diff --git a/src/core/sys/posix/sys/select.d b/src/core/sys/posix/sys/select.d index cb0c982163..2700d7c789 100644 --- a/src/core/sys/posix/sys/select.d +++ b/src/core/sys/posix/sys/select.d @@ -23,6 +23,15 @@ public import core.sys.posix.signal; // for sigset_t //debug=select; // uncomment to turn on debugging printf's version(unittest) import core.stdc.stdio: printf; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -131,7 +140,7 @@ version( CRuntime_Glibc ) int pselect(int, fd_set*, fd_set*, fd_set*, in timespec*, in sigset_t*); int select(int, fd_set*, fd_set*, fd_set*, timeval*); } -else version( OSX ) +else version( Darwin ) { private { diff --git a/src/core/sys/posix/sys/shm.d b/src/core/sys/posix/sys/shm.d index de16d236dd..7e0f1f4248 100644 --- a/src/core/sys/posix/sys/shm.d +++ b/src/core/sys/posix/sys/shm.d @@ -18,6 +18,15 @@ private import core.sys.posix.config; public import core.sys.posix.sys.types; // for pid_t, time_t, key_t public import core.sys.posix.sys.ipc; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -121,7 +130,7 @@ else version( FreeBSD ) int shmdt(in void*); int shmget(key_t, size_t, int); } -else version( OSX ) +else version( Darwin ) { } diff --git a/src/core/sys/posix/sys/socket.d b/src/core/sys/posix/sys/socket.d index a9d978d6d1..a3ebfd3162 100644 --- a/src/core/sys/posix/sys/socket.d +++ b/src/core/sys/posix/sys/socket.d @@ -18,6 +18,15 @@ private import core.sys.posix.config; public import core.sys.posix.sys.types; // for ssize_t public import core.sys.posix.sys.uio; // for iovec +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -596,7 +605,7 @@ version( CRuntime_Glibc ) int sockatmark(int); int socketpair(int, int, int, ref int[2]); } -else version( OSX ) +else version( Darwin ) { alias uint socklen_t; alias ubyte sa_family_t; @@ -1297,7 +1306,7 @@ version( CRuntime_Glibc ) AF_INET6 = 10 } } -else version( OSX ) +else version( Darwin ) { enum { @@ -1344,7 +1353,7 @@ version( CRuntime_Glibc ) SOCK_RAW = 3 } } -else version( OSX ) +else version( Darwin ) { enum { diff --git a/src/core/sys/posix/sys/stat.d b/src/core/sys/posix/sys/stat.d index 51f0f5430a..2fa4f86fb3 100644 --- a/src/core/sys/posix/sys/stat.d +++ b/src/core/sys/posix/sys/stat.d @@ -19,6 +19,15 @@ private import core.stdc.stdint; private import core.sys.posix.time; // for timespec public import core.sys.posix.sys.types; // for off_t, mode_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -637,7 +646,7 @@ version( CRuntime_Glibc ) ref const(timespec)[2] times, int flags); int futimens(int fd, ref const(timespec)[2] times); } -else version( OSX ) +else version( Darwin ) { // _DARWIN_FEATURE_64_BIT_INODE stat is default for Mac OSX >10.5 and is // only meaningful type for other OS X/Darwin variants (e.g. iOS). @@ -1110,13 +1119,22 @@ else version (Solaris) } } } -else version( OSX ) +else version( Darwin ) { // OS X maintains backwards compatibility with older binaries using 32-bit // inode functions by appending $INODE64 to newer 64-bit inode functions. - pragma(mangle, "fstat$INODE64") int fstat(int, stat_t*); - pragma(mangle, "lstat$INODE64") int lstat(in char*, stat_t*); - pragma(mangle, "stat$INODE64") int stat(in char*, stat_t*); + version( OSX ) + { + pragma(mangle, "fstat$INODE64") int fstat(int, stat_t*); + pragma(mangle, "lstat$INODE64") int lstat(in char*, stat_t*); + pragma(mangle, "stat$INODE64") int stat(in char*, stat_t*); + } + else + { + int fstat(int, stat_t*); + int lstat(in char*, stat_t*); + int stat(in char*, stat_t*); + } } else version( FreeBSD ) { @@ -1167,7 +1185,7 @@ version( CRuntime_Glibc ) int mknod(in char*, mode_t, dev_t); } -else version( OSX ) +else version( Darwin ) { enum S_IFMT = 0xF000; // octal 0170000 enum S_IFBLK = 0x6000; // octal 0060000 diff --git a/src/core/sys/posix/sys/time.d b/src/core/sys/posix/sys/time.d index dbeb58a9f4..06a66b7254 100644 --- a/src/core/sys/posix/sys/time.d +++ b/src/core/sys/posix/sys/time.d @@ -18,6 +18,15 @@ private import core.sys.posix.config; public import core.sys.posix.sys.types; // for time_t, suseconds_t public import core.sys.posix.sys.select; // for fd_set, FD_CLR() FD_ISSET() FD_SET() FD_ZERO() FD_SETSIZE, select() +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -71,7 +80,7 @@ version( CRuntime_Glibc ) int setitimer(int, in itimerval*, itimerval*); int utimes(in char*, ref const(timeval)[2]); // LEGACY } -else version( OSX ) +else version( Darwin ) { struct timeval { diff --git a/src/core/sys/posix/sys/types.d b/src/core/sys/posix/sys/types.d index 103b064482..cd2dc60d21 100644 --- a/src/core/sys/posix/sys/types.d +++ b/src/core/sys/posix/sys/types.d @@ -19,6 +19,15 @@ private import core.sys.posix.config; private import core.stdc.stdint; public import core.stdc.stddef; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): @@ -101,7 +110,7 @@ version( CRuntime_Glibc ) alias slong_t time_t; alias uint uid_t; } -else version( OSX ) +else version( Darwin ) { alias long blkcnt_t; alias int blksize_t; @@ -245,7 +254,7 @@ version( CRuntime_Glibc ) alias slong_t suseconds_t; alias uint useconds_t; } -else version( OSX ) +else version( Darwin ) { alias uint fsblkcnt_t; alias uint fsfilcnt_t; @@ -533,7 +542,7 @@ version (CRuntime_Glibc) alias c_ulong pthread_t; } -else version( OSX ) +else version( Darwin ) { version( D_LP64 ) { @@ -805,7 +814,7 @@ else version( FreeBSD ) alias void* pthread_barrier_t; alias void* pthread_barrierattr_t; } -else version( OSX ) +else version( Darwin ) { } else version (Solaris) diff --git a/src/core/sys/posix/sys/uio.d b/src/core/sys/posix/sys/uio.d index e0c50f4f5f..ffa0b3e298 100644 --- a/src/core/sys/posix/sys/uio.d +++ b/src/core/sys/posix/sys/uio.d @@ -17,6 +17,15 @@ module core.sys.posix.sys.uio; private import core.sys.posix.config; public import core.sys.posix.sys.types; // for ssize_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -48,7 +57,7 @@ version( CRuntime_Glibc ) ssize_t readv(int, in iovec*, int); ssize_t writev(int, in iovec*, int); } -else version( OSX ) +else version( Darwin ) { struct iovec { diff --git a/src/core/sys/posix/sys/un.d b/src/core/sys/posix/sys/un.d index 9b46fc1ff7..ad504d4c1c 100644 --- a/src/core/sys/posix/sys/un.d +++ b/src/core/sys/posix/sys/un.d @@ -14,6 +14,15 @@ */ module core.sys.posix.sys.un; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern(C): @@ -42,7 +51,7 @@ version( linux ) byte[UNIX_PATH_MAX] sun_path; } } -else version( OSX ) +else version( Darwin ) { struct sockaddr_un { diff --git a/src/core/sys/posix/sys/utsname.d b/src/core/sys/posix/sys/utsname.d index cb01193b3b..2a755de189 100644 --- a/src/core/sys/posix/sys/utsname.d +++ b/src/core/sys/posix/sys/utsname.d @@ -1,5 +1,14 @@ module core.sys.posix.sys.utsname; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern(C): @@ -21,7 +30,7 @@ version(CRuntime_Glibc) int uname(utsname* __name); } -else version(OSX) +else version(Darwin) { private enum utsNameLength = 256; diff --git a/src/core/sys/posix/sys/wait.d b/src/core/sys/posix/sys/wait.d index ed42ba8597..a69c885f00 100644 --- a/src/core/sys/posix/sys/wait.d +++ b/src/core/sys/posix/sys/wait.d @@ -19,6 +19,15 @@ public import core.sys.posix.sys.types; // for id_t, pid_t public import core.sys.posix.signal; // for siginfo_t (XSI) //public import core.sys.posix.resource; // for rusage (XSI) +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -69,7 +78,7 @@ version( CRuntime_Glibc ) extern (D) int WSTOPSIG( int status ) { return WEXITSTATUS( status ); } extern (D) int WTERMSIG( int status ) { return status & 0x7F; } } -else version( OSX ) +else version( Darwin ) { enum WNOHANG = 1; enum WUNTRACED = 2; @@ -181,7 +190,7 @@ version( CRuntime_Glibc ) int waitid(idtype_t, id_t, siginfo_t*, int); } -else version( OSX ) +else version( Darwin ) { enum WEXITED = 0x00000004; enum WSTOPPED = 0x00000008; diff --git a/src/core/sys/posix/syslog.d b/src/core/sys/posix/syslog.d index 2d117b04e5..23e2fbce82 100644 --- a/src/core/sys/posix/syslog.d +++ b/src/core/sys/posix/syslog.d @@ -15,6 +15,15 @@ */ module core.sys.posix.syslog; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C) nothrow @nogc: @@ -79,7 +88,7 @@ version(CRuntime_Glibc) void syslog (int __pri, const char *__fmt, ...); void closelog(); } -else version( OSX ) +else version( Darwin ) { //http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/osfmk/sys/syslog.h diff --git a/src/core/sys/posix/termios.d b/src/core/sys/posix/termios.d index 85061d1db4..b330f9c83d 100644 --- a/src/core/sys/posix/termios.d +++ b/src/core/sys/posix/termios.d @@ -17,6 +17,15 @@ module core.sys.posix.termios; private import core.sys.posix.config; public import core.sys.posix.sys.types; // for pid_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): @@ -241,7 +250,7 @@ version( CRuntime_Glibc ) int tcsendbreak(int, int); int tcsetattr(int, int, in termios*); } -else version( OSX ) +else version( Darwin ) { alias ubyte cc_t; alias c_ulong speed_t; @@ -532,7 +541,7 @@ version( CRuntime_Glibc ) pid_t tcgetsid(int); } -else version (OSX) +else version (Darwin) { enum IXANY = 0x00000800; diff --git a/src/core/sys/posix/time.d b/src/core/sys/posix/time.d index bd54f610fe..d8872a3289 100644 --- a/src/core/sys/posix/time.d +++ b/src/core/sys/posix/time.d @@ -20,6 +20,15 @@ public import core.stdc.time; public import core.sys.posix.sys.types; public import core.sys.posix.signal; // for sigevent +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -44,7 +53,7 @@ version( CRuntime_Glibc ) { time_t timegm(tm*); // non-standard } -else version( OSX ) +else version( Darwin ) { time_t timegm(tm*); // non-standard } @@ -115,7 +124,7 @@ else version (FreeBSD) deprecated("Please import it from core.sys.freebsd.time instead.") alias CLOCK_MONOTONIC_FAST = core.sys.freebsd.time.CLOCK_MONOTONIC_FAST; } -else version (OSX) +else version (Darwin) { // No CLOCK_MONOTONIC defined } @@ -206,7 +215,7 @@ version( CRuntime_Glibc ) int timer_getoverrun(timer_t); int timer_settime(timer_t, int, in itimerspec*, itimerspec*); } -else version( OSX ) +else version( Darwin ) { int nanosleep(in timespec*, timespec*); } @@ -324,7 +333,7 @@ version( CRuntime_Glibc ) tm* gmtime_r(in time_t*, tm*); tm* localtime_r(in time_t*, tm*); } -else version( OSX ) +else version( Darwin ) { char* asctime_r(in tm*, char*); char* ctime_r(in time_t*, char*); @@ -378,7 +387,7 @@ version( CRuntime_Glibc ) tm* getdate(in char*); char* strptime(in char*, in char*, tm*); } -else version( OSX ) +else version( Darwin ) { extern __gshared c_long timezone; extern __gshared int daylight; diff --git a/src/core/sys/posix/unistd.d b/src/core/sys/posix/unistd.d index ab445db318..b99de41f49 100644 --- a/src/core/sys/posix/unistd.d +++ b/src/core/sys/posix/unistd.d @@ -19,6 +19,15 @@ private import core.stdc.stddef; public import core.sys.posix.inttypes; // for intptr_t public import core.sys.posix.sys.types; // for ssize_t, uid_t, gid_t, off_t, pid_t, useconds_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -143,7 +152,7 @@ else version( Solaris ) } } } -else version( OSX ) +else version( Darwin ) { off_t lseek(int, off_t, int) @trusted; int ftruncate(int, off_t) @trusted; @@ -469,7 +478,7 @@ version( CRuntime_Glibc ) _SC_RAW_SOCKETS } } -else version( OSX ) +else version( Darwin ) { enum F_OK = 0; enum R_OK = 4; @@ -1098,7 +1107,7 @@ version( CRuntime_Glibc ) { int fsync(int) @trusted; } -else version( OSX ) +else version( Darwin ) { int fsync(int) @trusted; } @@ -1210,7 +1219,7 @@ version( CRuntime_Glibc ) int truncate(in char*, off_t); } } -else version( OSX ) +else version( Darwin ) { char* crypt(in char*, in char*); char* ctermid(char*); diff --git a/src/core/sys/posix/utime.d b/src/core/sys/posix/utime.d index 7a05d415a5..25166f6736 100644 --- a/src/core/sys/posix/utime.d +++ b/src/core/sys/posix/utime.d @@ -17,6 +17,15 @@ module core.sys.posix.utime; private import core.sys.posix.config; public import core.sys.posix.sys.types; // for time_t +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (Posix): extern (C): nothrow: @@ -45,7 +54,7 @@ version( CRuntime_Glibc ) int utime(in char*, in utimbuf*); } -else version( OSX ) +else version( Darwin ) { struct utimbuf { diff --git a/src/core/thread.d b/src/core/thread.d index 75864fb99c..ecf9b91ee7 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -15,6 +15,14 @@ module core.thread; public import core.time; // for Duration import core.exception : onOutOfMemoryError; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; private { @@ -276,10 +284,10 @@ else version( Posix ) import core.sys.posix.signal; import core.sys.posix.time; - version( OSX ) + version( Darwin ) { - import core.sys.osx.mach.thread_act; - import core.sys.osx.pthread : pthread_mach_thread_np; + import core.sys.darwin.mach.thread_act; + import core.sys.darwin.pthread : pthread_mach_thread_np; } version( GNU ) @@ -612,7 +620,7 @@ class Thread pthread_detach( m_addr ); m_addr = m_addr.init; } - version( OSX ) + version( Darwin ) { m_tmach = m_tmach.init; } @@ -719,7 +727,7 @@ class Thread onThreadError( "Error creating thread" ); } } - version( OSX ) + version( Darwin ) { m_tmach = pthread_mach_thread_np( m_addr ); if( m_tmach == m_tmach.init ) @@ -1021,7 +1029,7 @@ class Thread } else { - // NOTE: pthread_setschedprio is not implemented on OSX or FreeBSD, so use + // NOTE: pthread_setschedprio is not implemented on Darwin or FreeBSD, so use // the more complicated get/set sequence below. int policy; sched_param param; @@ -1454,7 +1462,7 @@ private: { HANDLE m_hndl; } - else version( OSX ) + else version( Darwin ) { mach_port_t m_tmach; } @@ -1576,7 +1584,7 @@ private: static assert(false, "Architecture not supported." ); } } - else version( OSX ) + else version( Darwin ) { version( X86 ) { @@ -1951,7 +1959,7 @@ extern (C) void thread_init() Thread.initLocks(); - version( OSX ) + version( Darwin ) { } else version( Posix ) @@ -2077,7 +2085,7 @@ extern (C) Thread thread_attachThis() thisThread.m_tlsgcdata = rt_tlsgc_init(); Thread.setThis( thisThread ); - version( OSX ) + version( Darwin ) { thisThread.m_tmach = pthread_mach_thread_np( thisThread.m_addr ); assert( thisThread.m_tmach != thisThread.m_tmach.init ); @@ -2507,7 +2515,7 @@ private bool suspend( Thread t ) nothrow static assert(false, "Architecture not supported." ); } } - else version( OSX ) + else version( Darwin ) { if( t.m_addr != pthread_self() && thread_suspend( t.m_tmach ) != KERN_SUCCESS ) { @@ -2642,7 +2650,7 @@ extern (C) void thread_suspendAll() nothrow t = tn; } - version (OSX) + version (Darwin) {} else version (Posix) { @@ -2710,7 +2718,7 @@ private void resume( Thread t ) nothrow t.m_curr.tstack = t.m_curr.bstack; t.m_reg[0 .. $] = 0; } - else version( OSX ) + else version( Darwin ) { if( t.m_addr != pthread_self() && thread_resume( t.m_tmach ) != KERN_SUCCESS ) { @@ -3154,9 +3162,9 @@ private void* getStackBottom() nothrow else static assert(false, "Architecture not supported."); } - else version (OSX) + else version (Darwin) { - import core.sys.osx.pthread; + import core.sys.darwin.pthread; return pthread_get_stackaddr_np(pthread_self()); } else version (CRuntime_Glibc) @@ -3412,7 +3420,7 @@ private else version( Posix ) version = AsmX86_Posix; - version( OSX ) + version( Darwin ) version = AlignFiberStackTo16Byte; } else version( D_InlineAsm_X86_64 ) @@ -4386,7 +4394,7 @@ private: version (Posix) import core.sys.posix.sys.mman; // mmap version (FreeBSD) import core.sys.freebsd.sys.mman : MAP_ANON; version (CRuntime_Glibc) import core.sys.linux.sys.mman : MAP_ANON; - version (OSX) import core.sys.osx.sys.mman : MAP_ANON; + version (Darwin) import core.sys.darwin.sys.mman : MAP_ANON; static if( __traits( compiles, mmap ) ) { diff --git a/src/core/time.d b/src/core/time.d index 2494310401..527f5aeb27 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -94,12 +94,21 @@ import core.sys.posix.time; import core.sys.posix.sys.time; } +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + //This probably should be moved somewhere else in druntime which -//is OSX-specific. -version(OSX) +//is Darwin-specific. +version(Darwin) { -public import core.sys.osx.mach.kern_return; +public import core.sys.darwin.mach.kern_return; extern(C) nothrow @nogc { @@ -277,7 +286,7 @@ else version(Windows) enum ClockType precise = 3, second = 6, } -else version(OSX) enum ClockType +else version(Darwin) enum ClockType { normal = 0, coarse = 2, @@ -2198,7 +2207,7 @@ struct MonoTimeImpl(ClockType clockType) " is not supported by MonoTimeImpl on this system."); } } - else version(OSX) + else version(Darwin) { static if(clockType != ClockType.coarse && clockType != ClockType.normal && @@ -2262,7 +2271,7 @@ struct MonoTimeImpl(ClockType clockType) } return MonoTimeImpl(ticks); } - else version(OSX) + else version(Darwin) return MonoTimeImpl(mach_absolute_time()); else version(Posix) { @@ -2631,7 +2640,7 @@ extern(C) void _d_initMonoTime() } } } - else version(OSX) + else version(Darwin) { immutable long ticksPerSecond = machTicksPerSecond(); foreach(i, typeStr; __traits(allMembers, ClockType)) @@ -2938,7 +2947,7 @@ struct TickDuration if(QueryPerformanceFrequency(cast(long*)&ticksPerSec) == 0) ticksPerSec = 0; } - else version(OSX) + else version(Darwin) { ticksPerSec = machTicksPerSecond(); } @@ -3493,7 +3502,7 @@ struct TickDuration return TickDuration(ticks); } - else version(OSX) + else version(Darwin) { static if(is(typeof(mach_absolute_time))) return TickDuration(cast(long)mach_absolute_time()); @@ -4669,7 +4678,7 @@ unittest static assert(!__traits(compiles, nextLargerTimeUnits!"years")); } -version(OSX) +version(Darwin) long machTicksPerSecond() { // Be optimistic that ticksPerSecond (1e9*denom/numer) is integral. So far diff --git a/src/gc/os.d b/src/gc/os.d index a842f06245..2593d8f26c 100644 --- a/src/gc/os.d +++ b/src/gc/os.d @@ -29,10 +29,19 @@ version (Windows) } else version (Posix) { + version (OSX) + version = Darwin; + else version (iOS) + version = Darwin; + else version (TVOS) + version = Darwin; + else version (WatchOS) + version = Darwin; + import core.sys.posix.sys.mman; version (FreeBSD) import core.sys.freebsd.sys.mman : MAP_ANON; version (CRuntime_Glibc) import core.sys.linux.sys.mman : MAP_ANON; - version (OSX) import core.sys.osx.sys.mman : MAP_ANON; + version (Darwin) import core.sys.darwin.sys.mman : MAP_ANON; import core.stdc.stdlib; //version = GC_Use_Alloc_MMap; @@ -168,7 +177,7 @@ version (Windows) } } } -else version (OSX) +else version (Darwin) { bool isLowOnMem(size_t mapped) nothrow @nogc { diff --git a/src/rt/alloca.d b/src/rt/alloca.d index e897249a81..4bb260ac64 100644 --- a/src/rt/alloca.d +++ b/src/rt/alloca.d @@ -14,6 +14,15 @@ module rt.alloca; version (Posix) { version = alloca; + + version (OSX) + version = Darwin; + else version (iOS) + version = Darwin; + else version (TVOS) + version = Darwin; + else version (WatchOS) + version = Darwin; } else version (CRuntime_Microsoft) { @@ -60,7 +69,7 @@ extern (C) void* __alloca(int nbytes) push ESI ; } - version (OSX) + version (Darwin) { asm { diff --git a/src/rt/deh_win64_posix.d b/src/rt/deh_win64_posix.d index 5387075719..3109f8d31f 100644 --- a/src/rt/deh_win64_posix.d +++ b/src/rt/deh_win64_posix.d @@ -19,6 +19,15 @@ version (Posix) version (Win64_Posix): +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + //debug=PRINTF; debug(PRINTF) import core.stdc.stdio : printf; @@ -416,7 +425,7 @@ extern (C) void _d_throwc(Object h) inflight.t = cast(Throwable) h; __inflight = &inflight; - version (OSX) + version (Darwin) { version (D_InlineAsm_X86) asm diff --git a/src/rt/qsort.d b/src/rt/qsort.d index 986e393f92..80b1e2fcce 100644 --- a/src/rt/qsort.d +++ b/src/rt/qsort.d @@ -18,6 +18,15 @@ module rt.qsort; private import core.stdc.stdlib; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (CRuntime_Glibc) { alias extern (C) int function(const void *, const void *, void *) Cmp; @@ -48,7 +57,7 @@ else version (FreeBSD) return a; } } -else version (OSX) +else version (Darwin) { alias extern (C) int function(void *, const void *, const void *) Cmp; extern (C) void qsort_r(void *base, size_t nmemb, size_t size, void *thunk, Cmp cmp); diff --git a/src/rt/sections.d b/src/rt/sections.d index af1bddbb44..a0b72e8750 100644 --- a/src/rt/sections.d +++ b/src/rt/sections.d @@ -10,13 +10,22 @@ module rt.sections; +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + version (CRuntime_Glibc) public import rt.sections_elf_shared; else version (FreeBSD) public import rt.sections_elf_shared; else version (Solaris) public import rt.sections_solaris; -else version (OSX) +else version (Darwin) public import rt.sections_osx; else version (CRuntime_DigitalMars) public import rt.sections_win32; diff --git a/src/rt/sections_osx.d b/src/rt/sections_osx.d index b41f9982d1..21a179523f 100644 --- a/src/rt/sections_osx.d +++ b/src/rt/sections_osx.d @@ -12,14 +12,23 @@ module rt.sections_osx; -version(OSX): +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version(Darwin): // debug = PRINTF; import core.stdc.stdio; import core.stdc.string, core.stdc.stdlib; import core.sys.posix.pthread; -import core.sys.osx.mach.dyld; -import core.sys.osx.mach.getsect; +import core.sys.darwin.mach.dyld; +import core.sys.darwin.mach.getsect; import rt.deh, rt.minfo; import rt.util.container.array; @@ -199,12 +208,12 @@ extern (C) void sections_osx_onAddImage(in mach_header* h, intptr_t slide) // take the sections from the last static image which is the executable if (_isRuntimeInitialized) { - fprintf(stderr, "Loading shared libraries isn't yet supported on OSX.\n"); + fprintf(stderr, "Loading shared libraries isn't yet supported on Darwin.\n"); return; } else if (_sections.modules.ptr !is null) { - fprintf(stderr, "Shared libraries are not yet supported on OSX.\n"); + fprintf(stderr, "Shared libraries are not yet supported on Darwin.\n"); } debug(PRINTF) printf(" minfodata\n"); diff --git a/win32.mak b/win32.mak index 358668b7e1..bf54ea0d2a 100644 --- a/win32.mak +++ b/win32.mak @@ -200,6 +200,7 @@ copydir: $(IMPDIR) mkdir $(IMPDIR)\core\stdc mkdir $(IMPDIR)\core\stdcpp mkdir $(IMPDIR)\core\internal + mkdir $(IMPDIR)\core\sys\darwin\mach mkdir $(IMPDIR)\core\sys\freebsd\sys mkdir $(IMPDIR)\core\sys\linux\sys mkdir $(IMPDIR)\core\sys\osx\mach @@ -346,6 +347,42 @@ $(IMPDIR)\core\stdcpp\exception.d : src\core\stdcpp\exception.d $(IMPDIR)\core\stdcpp\typeinfo.d : src\core\stdcpp\typeinfo.d copy $** $@ +$(IMPDIR)\core\sys\darwin\execinfo.d : src\core\sys\darwin\execinfo.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\pthread.d : src\core\sys\darwin\pthread.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\dyld.d : src\core\sys\darwin\mach\dyld.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\getsect.d : src\core\sys\darwin\mach\getsect.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\kern_return.d : src\core\sys\darwin\mach\kern_return.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\loader.d : src\core\sys\darwin\mach\loader.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\port.d : src\core\sys\darwin\mach\port.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\semaphore.d : src\core\sys\darwin\mach\semaphore.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\thread_act.d : src\core\sys\darwin\mach\thread_act.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\sys\cdefs.d : src\core\sys\darwin\sys\cdefs.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\sys\event.d : src\core\sys\darwin\sys\event.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\sys\mman.d : src\core\sys\darwin\sys\mman.d + copy $** $@ + $(IMPDIR)\core\sys\freebsd\dlfcn.d : src\core\sys\freebsd\dlfcn.d copy $** $@ diff --git a/win64.mak b/win64.mak index 69f3ba701d..f28af0cd5c 100644 --- a/win64.mak +++ b/win64.mak @@ -208,6 +208,7 @@ copydir: $(IMPDIR) mkdir $(IMPDIR)\core\stdc mkdir $(IMPDIR)\core\stdcpp mkdir $(IMPDIR)\core\internal + mkdir $(IMPDIR)\core\sys\darwin\mach mkdir $(IMPDIR)\core\sys\freebsd\sys mkdir $(IMPDIR)\core\sys\linux\sys mkdir $(IMPDIR)\core\sys\osx\mach @@ -354,6 +355,42 @@ $(IMPDIR)\core\stdcpp\exception.d : src\core\stdcpp\exception.d $(IMPDIR)\core\stdcpp\typeinfo.d : src\core\stdcpp\typeinfo.d copy $** $@ +$(IMPDIR)\core\sys\darwin\execinfo.d : src\core\sys\darwin\execinfo.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\pthread.d : src\core\sys\darwin\pthread.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\dyld.d : src\core\sys\darwin\mach\dyld.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\getsect.d : src\core\sys\darwin\mach\getsect.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\kern_return.d : src\core\sys\darwin\mach\kern_return.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\loader.d : src\core\sys\darwin\mach\loader.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\port.d : src\core\sys\darwin\mach\port.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\semaphore.d : src\core\sys\darwin\mach\semaphore.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\mach\thread_act.d : src\core\sys\darwin\mach\thread_act.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\sys\cdefs.d : src\core\sys\darwin\sys\cdefs.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\sys\event.d : src\core\sys\darwin\sys\event.d + copy $** $@ + +$(IMPDIR)\core\sys\darwin\sys\mman.d : src\core\sys\darwin\sys\mman.d + copy $** $@ + $(IMPDIR)\core\sys\freebsd\dlfcn.d : src\core\sys\freebsd\dlfcn.d copy $** $@ From ada25ed42cb0686fe44e5d2a5e0028e24099b01e Mon Sep 17 00:00:00 2001 From: Dan Olson Date: Mon, 21 Mar 2016 21:23:34 -0700 Subject: [PATCH 310/768] Add nothrow, @nogc as needed to core.sys.darwin --- src/core/sys/darwin/execinfo.d | 1 + src/core/sys/darwin/mach/dyld.d | 2 ++ src/core/sys/darwin/mach/getsect.d | 2 ++ src/core/sys/darwin/mach/semaphore.d | 1 + src/core/sys/darwin/mach/thread_act.d | 1 + src/core/sys/darwin/pthread.d | 1 + src/core/sys/darwin/sys/event.d | 2 ++ src/core/sys/darwin/sys/mman.d | 1 + 8 files changed, 11 insertions(+) diff --git a/src/core/sys/darwin/execinfo.d b/src/core/sys/darwin/execinfo.d index 40d41f5808..c929cc2f88 100644 --- a/src/core/sys/darwin/execinfo.d +++ b/src/core/sys/darwin/execinfo.d @@ -19,6 +19,7 @@ else version (WatchOS) version (Darwin): extern (C): nothrow: +@nogc: int backtrace(void** buffer, int size); char** backtrace_symbols(const(void*)* buffer, int size); diff --git a/src/core/sys/darwin/mach/dyld.d b/src/core/sys/darwin/mach/dyld.d index 38aac6ad9e..487ccc88ef 100644 --- a/src/core/sys/darwin/mach/dyld.d +++ b/src/core/sys/darwin/mach/dyld.d @@ -23,6 +23,8 @@ else version (WatchOS) version (Darwin): extern (C): +nothrow: +@nogc: public import core.stdc.stdint; // for intptr_t public import core.sys.darwin.mach.loader; diff --git a/src/core/sys/darwin/mach/getsect.d b/src/core/sys/darwin/mach/getsect.d index cc797db0b7..c5e77d48c7 100644 --- a/src/core/sys/darwin/mach/getsect.d +++ b/src/core/sys/darwin/mach/getsect.d @@ -23,6 +23,8 @@ else version (WatchOS) version (Darwin): extern (C): +nothrow: +@nogc: public import core.sys.darwin.mach.loader; diff --git a/src/core/sys/darwin/mach/semaphore.d b/src/core/sys/darwin/mach/semaphore.d index b7763e8c50..0151435a53 100644 --- a/src/core/sys/darwin/mach/semaphore.d +++ b/src/core/sys/darwin/mach/semaphore.d @@ -25,6 +25,7 @@ else version (WatchOS) version (Darwin): extern (C): nothrow: +@nogc: public import core.sys.darwin.mach.kern_return; public import core.sys.darwin.mach.port; diff --git a/src/core/sys/darwin/mach/thread_act.d b/src/core/sys/darwin/mach/thread_act.d index 2f87eea6a1..b4e57d348d 100644 --- a/src/core/sys/darwin/mach/thread_act.d +++ b/src/core/sys/darwin/mach/thread_act.d @@ -25,6 +25,7 @@ else version (WatchOS) version (Darwin): extern (C): nothrow: +@nogc: public import core.sys.darwin.mach.kern_return; public import core.sys.darwin.mach.port; diff --git a/src/core/sys/darwin/pthread.d b/src/core/sys/darwin/pthread.d index aae91e4b62..8c27d9b07e 100644 --- a/src/core/sys/darwin/pthread.d +++ b/src/core/sys/darwin/pthread.d @@ -25,6 +25,7 @@ else version (WatchOS) version (Darwin): extern (C): nothrow: +@nogc: public import core.sys.posix.pthread; public import core.sys.darwin.mach.port; diff --git a/src/core/sys/darwin/sys/event.d b/src/core/sys/darwin/sys/event.d index 226ee50e00..fbb912790b 100644 --- a/src/core/sys/darwin/sys/event.d +++ b/src/core/sys/darwin/sys/event.d @@ -24,6 +24,8 @@ else version (WatchOS) version (Darwin): extern (C): +nothrow: +@nogc: import core.stdc.stdint; // intptr_t, uintptr_t import core.sys.posix.time; // timespec diff --git a/src/core/sys/darwin/sys/mman.d b/src/core/sys/darwin/sys/mman.d index 2b1725756a..5aab67d9e6 100644 --- a/src/core/sys/darwin/sys/mman.d +++ b/src/core/sys/darwin/sys/mman.d @@ -17,6 +17,7 @@ else version (WatchOS) version (Darwin): extern (C): nothrow: +@nogc: public import core.sys.posix.sys.mman; import core.sys.darwin.sys.cdefs; From b14af0d07fffec43635b9e641f825b7accaa7d74 Mon Sep 17 00:00:00 2001 From: Dan Olson Date: Fri, 15 Apr 2016 21:42:17 -0700 Subject: [PATCH 311/768] Add deprecation comment to core.sys.osx modules --- src/core/sys/osx/execinfo.d | 3 +++ src/core/sys/osx/mach/dyld.d | 3 +++ src/core/sys/osx/mach/getsect.d | 3 +++ src/core/sys/osx/mach/kern_return.d | 3 +++ src/core/sys/osx/mach/loader.d | 3 +++ src/core/sys/osx/mach/port.d | 3 +++ src/core/sys/osx/mach/semaphore.d | 3 +++ src/core/sys/osx/mach/thread_act.d | 3 +++ src/core/sys/osx/pthread.d | 3 +++ src/core/sys/osx/sys/cdefs.d | 3 +++ src/core/sys/osx/sys/event.d | 3 +++ src/core/sys/osx/sys/mman.d | 3 +++ 12 files changed, 36 insertions(+) diff --git a/src/core/sys/osx/execinfo.d b/src/core/sys/osx/execinfo.d index 7d19c401c0..6c8cb16e61 100644 --- a/src/core/sys/osx/execinfo.d +++ b/src/core/sys/osx/execinfo.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.execinfo) instead. This module + * will be removed in June 2018.) + * * D header file for OSX. * * Copyright: Copyright Martin Nowak 2012. diff --git a/src/core/sys/osx/mach/dyld.d b/src/core/sys/osx/mach/dyld.d index f43e62def8..2514ed0a7f 100644 --- a/src/core/sys/osx/mach/dyld.d +++ b/src/core/sys/osx/mach/dyld.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.mach.dyld) instead. This module + * will be removed in June 2018.) + * * Copyright: Copyright Digital Mars 2010. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Jacob Carlborg diff --git a/src/core/sys/osx/mach/getsect.d b/src/core/sys/osx/mach/getsect.d index 50e6644b3c..d3b907e2ab 100644 --- a/src/core/sys/osx/mach/getsect.d +++ b/src/core/sys/osx/mach/getsect.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.mach.getsect) instead. This + * module will be removed in June 2018.) + * * Copyright: Copyright Digital Mars 2010. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Jacob Carlborg diff --git a/src/core/sys/osx/mach/kern_return.d b/src/core/sys/osx/mach/kern_return.d index 266c22b40e..24b4cce6d8 100644 --- a/src/core/sys/osx/mach/kern_return.d +++ b/src/core/sys/osx/mach/kern_return.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.mach.kern_return) instead. This + * module will be removed in June 2018.) + * * D header file for OSX. * * Copyright: Copyright Sean Kelly 2008 - 2009. diff --git a/src/core/sys/osx/mach/loader.d b/src/core/sys/osx/mach/loader.d index 02b552bf40..a0e15453b2 100644 --- a/src/core/sys/osx/mach/loader.d +++ b/src/core/sys/osx/mach/loader.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.mach.loader) instead. This module + * will be removed in June 2018.) + * * Copyright: Copyright Digital Mars 2010. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Jacob Carlborg diff --git a/src/core/sys/osx/mach/port.d b/src/core/sys/osx/mach/port.d index 9024ebcc9d..ddfc7664bd 100644 --- a/src/core/sys/osx/mach/port.d +++ b/src/core/sys/osx/mach/port.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.mach.port) instead. This module + * will be removed in June 2018.) + * * D header file for OSX. * * Copyright: Copyright Sean Kelly 2008 - 2009. diff --git a/src/core/sys/osx/mach/semaphore.d b/src/core/sys/osx/mach/semaphore.d index 42f6c996fd..9493358187 100644 --- a/src/core/sys/osx/mach/semaphore.d +++ b/src/core/sys/osx/mach/semaphore.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.mach.semaphore) instead. This + * module will be removed in June 2018.) + * * D header file for OSX. * * Copyright: Copyright Sean Kelly 2008 - 2009. diff --git a/src/core/sys/osx/mach/thread_act.d b/src/core/sys/osx/mach/thread_act.d index 7c96f0b01d..10339bf44a 100644 --- a/src/core/sys/osx/mach/thread_act.d +++ b/src/core/sys/osx/mach/thread_act.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.mach.thread_act) instead. This + * module will be removed in June 2018.) + * * D header file for OSX. * * Copyright: Copyright Sean Kelly 2008 - 2009. diff --git a/src/core/sys/osx/pthread.d b/src/core/sys/osx/pthread.d index fbcded1363..89bd70e6bb 100644 --- a/src/core/sys/osx/pthread.d +++ b/src/core/sys/osx/pthread.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.pthread) instead. This module + * will be removed in June 2018.) + * * D header file for OSX. * * Copyright: Copyright Sean Kelly 2008 - 2009. diff --git a/src/core/sys/osx/sys/cdefs.d b/src/core/sys/osx/sys/cdefs.d index 89f3f0ac02..fafc0f7c9f 100644 --- a/src/core/sys/osx/sys/cdefs.d +++ b/src/core/sys/osx/sys/cdefs.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.sys.cdefs) instead. This module + * will be removed in June 2018.) + * * D header file for OSX * * Authors: Martin Nowak diff --git a/src/core/sys/osx/sys/event.d b/src/core/sys/osx/sys/event.d index 9cb0efecb6..4050e386c0 100644 --- a/src/core/sys/osx/sys/event.d +++ b/src/core/sys/osx/sys/event.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.sys.event) instead. This module + * will be removed in June 2018.) + * * D header file for OSX. * * Copyright: Copyright Martin Nowak 2012. Etienne Cimon 2015. diff --git a/src/core/sys/osx/sys/mman.d b/src/core/sys/osx/sys/mman.d index 916a0628ab..066ea93cc9 100644 --- a/src/core/sys/osx/sys/mman.d +++ b/src/core/sys/osx/sys/mman.d @@ -1,4 +1,7 @@ /** + * $(RED Deprecated. Use $(D core.sys.darwin.sys.mman) instead. This module + * will be removed in June 2018.) + * * D header file for FreeBSD * * Authors: Martin Nowak From e98b0a4f39c8c5aab4563d8555845d9b7a87e79a Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 19 Apr 2016 12:36:26 +0200 Subject: [PATCH 312/768] fix Issue 15911 - undefined __Unwind_GetIPInfo for x86_64 - only use __Unwind_GetIPInfo w/ glibc --- src/rt/dwarfeh.d | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d index 08338ceeeb..6fdbf4efd0 100644 --- a/src/rt/dwarfeh.d +++ b/src/rt/dwarfeh.d @@ -294,10 +294,21 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti /* Get instruction pointer (ip) at start of instruction that threw */ - int ip_before_insn = 0; - auto ip = _Unwind_GetIPInfo(context, &ip_before_insn); - if (!ip_before_insn) + version (CRuntime_Glibc) + { + int ip_before_insn; + // The instruction pointer must not be decremented when unwinding from a + // signal handler frame (asynchronous exception, also see + // etc.linux.memoryerror). So use _Unwind_GetIPInfo where available. + auto ip = _Unwind_GetIPInfo(context, &ip_before_insn); + if (!ip_before_insn) + --ip; + } + else + { + auto ip = _Unwind_GetIP(context); --ip; + } //printf("ip = x%x\n", cast(int)(ip - Start)); //printf("\tStart = %p, ipoff = %p, lsda = %p\n", Start, ip - Start, language_specific_data); From fafcfa226a9894914b61ed10fd9dd2affd2cee12 Mon Sep 17 00:00:00 2001 From: anonymous Date: Tue, 19 Apr 2016 20:11:49 +0200 Subject: [PATCH 313/768] fix typo in code example --- src/core/time.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/time.d b/src/core/time.d index 527f5aeb27..3e2a7c6f20 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -2389,7 +2389,7 @@ auto before = MonoTime.currTime; // do stuff auto after = MonoTime.currTime; auto timeElapsed = after - before; -assert(before + timeElapsed == after). +assert(before + timeElapsed == after); -------------------- This is generally fine, and by its very nature, converting from From 323046c4b921f3dee5a11dc1ccd316eafd5c41c4 Mon Sep 17 00:00:00 2001 From: anonymous Date: Tue, 19 Apr 2016 20:38:12 +0200 Subject: [PATCH 314/768] empty changelog.dd for 2.072.0 --- changelog.dd | 36 +----------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/changelog.dd b/changelog.dd index 07a1f4e946..651f09e0e6 100644 --- a/changelog.dd +++ b/changelog.dd @@ -1,48 +1,14 @@ Ddoc -$(COMMENT Pending changelog for 2.071.0. +$(COMMENT Pending changelog for 2.072.0. ) $(BUGSTITLE Library Changes, -$(LI $(RELATIVE_LINK2 aa-clear, A `clear` method has been added to associative - arrays to remove all elements.)) -$(LI $(RELATIVE_LINK2 spinlock, The GC now uses a spinlock instead of a recursive mutex.)) -$(LI Calls to $(NCXREF memory, GC.free) are now ignored during finalization instead of throwing an InvalidMemoryOperationError, see $(BUGZILLA 15353).) -$(LI $(NCXREF memory, GC.addRoot) and $(NCXREF memory, GC.addRange) now use a separate lock.) -) - -$(LI $(RELATIVE_LINK2 spinlock, The GC now uses a spinlock instead of a -recursive mutex.)) ) $(BUGSTITLE Library Changes, -$(LI $(LNAME2 aa-clear, A `clear` method has been added to associative - arrays to remove all elements.) - - $(P One can now use `aa.clear()` to remove all elements from an - associative array. This allows removing all elements from all - references to the same array (setting to `null` just reset the - reference, but did not removed the elements from other references). - ) - -------- -auto aa = ["first" : "entry", "second": "entry"]; -auto aa2 = aa1; // reference to the same AA -aa.clear(); // still retains its current capacity for faster imports -assert(aa2.length == 0); // other references affected -------- -) - -$(LI $(LNAME2 spinlock, The GC is no longer wrapped in a pthread_mutex, it - now uses a spinlock.) - - $(P This results in a 5% faster GC on average, with the most benefits going - to multi-threaded programs that use the GC. See $(DRUNTIMEPR 1447) for - more details. - ) -) ) Macros: From e32673db627ad921009314eabb0d6433985e6922 Mon Sep 17 00:00:00 2001 From: anonymous Date: Thu, 21 Apr 2016 17:46:53 +0200 Subject: [PATCH 315/768] deprecate TypeInfo.init As planned. --- changelog.dd | 13 +++++++++++++ src/object.d | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/changelog.dd b/changelog.dd index 651f09e0e6..36adb5aa5d 100644 --- a/changelog.dd +++ b/changelog.dd @@ -5,10 +5,23 @@ $(COMMENT Pending changelog for 2.072.0. $(BUGSTITLE Library Changes, +$(LI $(RELATIVE_LINK2 TypeInfo.init-deprecated, `TypeInfo.init` has been +deprecated.)) + ) $(BUGSTITLE Library Changes, +$(LI $(LNAME2 TypeInfo.init-deprecated, `TypeInfo.init` has been + deprecated.) + + $(P This is a step towards removal of `TypeInfo.init`, which is necessary + to resolve a name clash with the type property $(GLINK2 property, init). + ) + + $(P Use $(NOXREF TypeInfo.initializer, TypeInfo.initializer) instead.) +) + ) Macros: diff --git a/src/object.d b/src/object.d index 75ef67013d..8daa6c51e7 100644 --- a/src/object.d +++ b/src/object.d @@ -290,8 +290,8 @@ class TypeInfo abstract const(void)[] initializer() nothrow pure const @safe @nogc; /// $(RED Scheduled for deprecation.) Please use `initializer` instead. - alias init = initializer; // added in 2.070, to stay in 2.071 - version(none) deprecated alias init = initializer; // planned for 2.072 + deprecated("Please use initializer instead.") alias init = initializer; + // since 2.072 version(none) @disable static const(void)[] init(); // planned for 2.073 /* Planned for 2.074: Remove init, making way for the init type property, fixing issue 12233. */ From 63910790c0f79b1442124a6185991c338e1e82e7 Mon Sep 17 00:00:00 2001 From: qchikara Date: Tue, 26 Apr 2016 14:16:45 +0900 Subject: [PATCH 316/768] Fix: missing linkage classes of some Win32 API Fix some core.sys.windows.* functions which have the extern (Windows) linkages. --- src/core/sys/windows/oledlg.d | 6 +- src/core/sys/windows/rpcdce.d | 117 +++++++++++++++++---------------- src/core/sys/windows/rpcdce2.d | 15 +++-- src/core/sys/windows/rpcnsi.d | 61 +++++++++-------- src/core/sys/windows/wingdi.d | 2 + 5 files changed, 104 insertions(+), 97 deletions(-) diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d index 6461fc1de8..2b4e40193e 100644 --- a/src/core/sys/windows/oledlg.d +++ b/src/core/sys/windows/oledlg.d @@ -388,8 +388,10 @@ struct OLEUIINSERTOBJECTA { } alias OLEUIINSERTOBJECTA* POLEUIINSERTOBJECTA, LPOLEUIINSERTOBJECTA; -UINT OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); -UINT OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); +extern (Windows) { + UINT OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); + UINT OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); +} enum OLEUIPASTEFLAG { OLEUIPASTE_PASTEONLY, diff --git a/src/core/sys/windows/rpcdce.d b/src/core/sys/windows/rpcdce.d index 3f7e2a4cb4..875a27a586 100644 --- a/src/core/sys/windows/rpcdce.d +++ b/src/core/sys/windows/rpcdce.d @@ -349,65 +349,66 @@ version (Unicode) { alias DceErrorInqTextA DceErrorInqText; } //#endif // UNICODE - -RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); -RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE*); -RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE, UUID*); -RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE); -RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE, UUID*); -RPC_STATUS RpcMgmtInqDefaultProtectLevel(uint, uint*); -RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR**); -RPC_STATUS RpcIfInqId(RPC_IF_HANDLE, RPC_IF_ID*); -RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE, uint*); -RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE, uint); -RPC_STATUS RpcMgmtSetCancelTimeout(int Timeout); -RPC_STATUS RpcObjectInqType(UUID*, UUID*); -RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN*); -RPC_STATUS RpcObjectSetType(UUID*, UUID*); -RPC_STATUS RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR**); -RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV**); -RPC_STATUS RpcServerListen(uint, uint, uint); -RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*); -RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, RPC_IF_CALLBACK_FN*); -RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, uint, RPC_IF_CALLBACK_FN*); -RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE, UUID*, uint); -RPC_STATUS RpcServerUseAllProtseqs(uint, void*); -RPC_STATUS RpcServerUseAllProtseqsEx(uint, void*, PRPC_POLICY); -RPC_STATUS RpcServerUseAllProtseqsIf(uint, RPC_IF_HANDLE, void*); -RPC_STATUS RpcServerUseAllProtseqsIfEx(uint, RPC_IF_HANDLE, void*, PRPC_POLICY); -RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**); -RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE, RPC_STATS_VECTOR**); -RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE); -RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE); -RPC_STATUS RpcMgmtWaitServerListen(); -RPC_STATUS RpcMgmtSetServerStackSize(uint); -void RpcSsDontSerializeContext(); -RPC_STATUS RpcMgmtEnableIdleCleanup(); -RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE, RPC_IF_ID_VECTOR**); -RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR**); -RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE, RPC_IF_HANDLE); -RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); - -// never returns -void RpcRaiseException(RPC_STATUS); -RPC_STATUS RpcTestCancel(); -RPC_STATUS RpcCancelThread(void*); -RPC_STATUS UuidCreate(UUID*); -int UuidCompare(UUID*, UUID*, RPC_STATUS*); -RPC_STATUS UuidCreateNil(UUID*); -int UuidEqual(UUID*, UUID*, RPC_STATUS*); -ushort UuidHash(UUID*, RPC_STATUS*); -int UuidIsNil(UUID*, RPC_STATUS*); -RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*); -RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, uint, UUID*, RPC_EP_INQ_HANDLE*); -RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); -RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE, UUID*); -RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); -RPC_STATUS RpcMgmtInqParameter(uint, uint*); -RPC_STATUS RpcMgmtSetParameter(uint, uint); -RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*); -RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint); +extern (Windows) { + RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); + RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE*); + RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE, UUID*); + RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE); + RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE, UUID*); + RPC_STATUS RpcMgmtInqDefaultProtectLevel(uint, uint*); + RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR**); + RPC_STATUS RpcIfInqId(RPC_IF_HANDLE, RPC_IF_ID*); + RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE, uint*); + RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE, uint); + RPC_STATUS RpcMgmtSetCancelTimeout(int Timeout); + RPC_STATUS RpcObjectInqType(UUID*, UUID*); + RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN*); + RPC_STATUS RpcObjectSetType(UUID*, UUID*); + RPC_STATUS RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR**); + RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV**); + RPC_STATUS RpcServerListen(uint, uint, uint); + RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*); + RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, RPC_IF_CALLBACK_FN*); + RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, uint, RPC_IF_CALLBACK_FN*); + RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE, UUID*, uint); + RPC_STATUS RpcServerUseAllProtseqs(uint, void*); + RPC_STATUS RpcServerUseAllProtseqsEx(uint, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseAllProtseqsIf(uint, RPC_IF_HANDLE, void*); + RPC_STATUS RpcServerUseAllProtseqsIfEx(uint, RPC_IF_HANDLE, void*, PRPC_POLICY); + RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**); + RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE, RPC_STATS_VECTOR**); + RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE); + RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE); + RPC_STATUS RpcMgmtWaitServerListen(); + RPC_STATUS RpcMgmtSetServerStackSize(uint); + void RpcSsDontSerializeContext(); + RPC_STATUS RpcMgmtEnableIdleCleanup(); + RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE, RPC_IF_ID_VECTOR**); + RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR**); + RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE, RPC_IF_HANDLE); + RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); + + // never returns + void RpcRaiseException(RPC_STATUS); + RPC_STATUS RpcTestCancel(); + RPC_STATUS RpcCancelThread(void*); + RPC_STATUS UuidCreate(UUID*); + int UuidCompare(UUID*, UUID*, RPC_STATUS*); + RPC_STATUS UuidCreateNil(UUID*); + int UuidEqual(UUID*, UUID*, RPC_STATUS*); + ushort UuidHash(UUID*, RPC_STATUS*); + int UuidIsNil(UUID*, RPC_STATUS*); + RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*); + RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, uint, UUID*, RPC_EP_INQ_HANDLE*); + RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); + RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE, UUID*); + RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); + RPC_STATUS RpcMgmtInqParameter(uint, uint*); + RPC_STATUS RpcMgmtSetParameter(uint, uint); + RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*); + RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint); //static if (_WIN32_WINNT >= 0x500) { RPC_STATUS UuidCreateSequential(UUID*); //} +} diff --git a/src/core/sys/windows/rpcdce2.d b/src/core/sys/windows/rpcdce2.d index 1d7312adf7..7993459fc2 100644 --- a/src/core/sys/windows/rpcdce2.d +++ b/src/core/sys/windows/rpcdce2.d @@ -59,12 +59,15 @@ extern (Windows) { //#ifdef RPC_UNICODE_SUPPORTED -RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); -RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); -RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, - RPC_BINDING_HANDLE*, UUID*, char**); -RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, - RPC_BINDING_HANDLE*, UUID*, wchar**); +extern (Windows) { + RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); + RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); + RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE*, UUID*, char**); + RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE*, UUID*, wchar**); +} + version (Unicode) { alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; alias DceErrorInqTextW DceErrorInqText; diff --git a/src/core/sys/windows/rpcnsi.d b/src/core/sys/windows/rpcnsi.d index 058e2566e9..f4e85385bf 100644 --- a/src/core/sys/windows/rpcnsi.d +++ b/src/core/sys/windows/rpcnsi.d @@ -67,8 +67,6 @@ extern (Windows) { RPC_STATUS RpcNsBindingImportNext(RPC_NS_HANDLE, RPC_BINDING_HANDLE*); RPC_STATUS RpcNsBindingImportDone(RPC_NS_HANDLE*); RPC_STATUS RpcNsBindingSelect(RPC_BINDING_VECTOR*, RPC_BINDING_HANDLE*); -} - version (Unicode) { } else { @@ -77,35 +75,36 @@ version (Unicode) { RPC_NS_HANDLE*); } -RPC_STATUS RpcNsBindingExportW(uint, ushort*, RPC_IF_HANDLE, - RPC_BINDING_VECTOR*, UUID_VECTOR*); -RPC_STATUS RpcNsBindingUnexportW(uint, ushort*, RPC_IF_HANDLE, - UUID_VECTOR*); -RPC_STATUS RpcNsBindingLookupBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, - uint, RPC_NS_HANDLE*); -RPC_STATUS RpcNsGroupDeleteW(uint, ushort*); -RPC_STATUS RpcNsGroupMbrAddW(uint, ushort*, uint, ushort*); -RPC_STATUS RpcNsGroupMbrRemoveW(uint, ushort*, uint, ushort*); -RPC_STATUS RpcNsGroupMbrInqBeginW(uint, ushort*, uint, RPC_NS_HANDLE*); -RPC_STATUS RpcNsGroupMbrInqNextW(RPC_NS_HANDLE, ushort**); -RPC_STATUS RpcNsProfileDeleteW(uint, ushort*); -RPC_STATUS RpcNsProfileEltAddW(uint, ushort*, RPC_IF_ID*, uint, ushort*, - uint, ushort*); -RPC_STATUS RpcNsProfileEltRemoveW(uint, ushort*, RPC_IF_ID*, uint, - ushort*); -RPC_STATUS RpcNsProfileEltInqBeginW(uint, ushort*, uint, RPC_IF_ID*, - uint, uint, ushort*, RPC_NS_HANDLE*); -RPC_STATUS RpcNsProfileEltInqNextW(RPC_NS_HANDLE, RPC_IF_ID*, ushort**, - uint*, ushort**); -RPC_STATUS RpcNsEntryObjectInqBeginW(uint, ushort*, RPC_NS_HANDLE*); -RPC_STATUS RpcNsEntryExpandNameW(uint, ushort*, ushort**); -RPC_STATUS RpcNsMgmtBindingUnexportW(uint, ushort*, RPC_IF_ID*, uint, - UUID_VECTOR*); -RPC_STATUS RpcNsMgmtEntryCreateW(uint, ushort*); -RPC_STATUS RpcNsMgmtEntryDeleteW(uint, ushort*); -RPC_STATUS RpcNsMgmtEntryInqIfIdsW(uint, ushort , RPC_IF_ID_VECTOR**); -RPC_STATUS RpcNsBindingImportBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, - RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingExportW(uint, ushort*, RPC_IF_HANDLE, + RPC_BINDING_VECTOR*, UUID_VECTOR*); + RPC_STATUS RpcNsBindingUnexportW(uint, ushort*, RPC_IF_HANDLE, + UUID_VECTOR*); + RPC_STATUS RpcNsBindingLookupBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, + uint, RPC_NS_HANDLE*); + RPC_STATUS RpcNsGroupDeleteW(uint, ushort*); + RPC_STATUS RpcNsGroupMbrAddW(uint, ushort*, uint, ushort*); + RPC_STATUS RpcNsGroupMbrRemoveW(uint, ushort*, uint, ushort*); + RPC_STATUS RpcNsGroupMbrInqBeginW(uint, ushort*, uint, RPC_NS_HANDLE*); + RPC_STATUS RpcNsGroupMbrInqNextW(RPC_NS_HANDLE, ushort**); + RPC_STATUS RpcNsProfileDeleteW(uint, ushort*); + RPC_STATUS RpcNsProfileEltAddW(uint, ushort*, RPC_IF_ID*, uint, ushort*, + uint, ushort*); + RPC_STATUS RpcNsProfileEltRemoveW(uint, ushort*, RPC_IF_ID*, uint, + ushort*); + RPC_STATUS RpcNsProfileEltInqBeginW(uint, ushort*, uint, RPC_IF_ID*, + uint, uint, ushort*, RPC_NS_HANDLE*); + RPC_STATUS RpcNsProfileEltInqNextW(RPC_NS_HANDLE, RPC_IF_ID*, ushort**, + uint*, ushort**); + RPC_STATUS RpcNsEntryObjectInqBeginW(uint, ushort*, RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryExpandNameW(uint, ushort*, ushort**); + RPC_STATUS RpcNsMgmtBindingUnexportW(uint, ushort*, RPC_IF_ID*, uint, + UUID_VECTOR*); + RPC_STATUS RpcNsMgmtEntryCreateW(uint, ushort*); + RPC_STATUS RpcNsMgmtEntryDeleteW(uint, ushort*); + RPC_STATUS RpcNsMgmtEntryInqIfIdsW(uint, ushort , RPC_IF_ID_VECTOR**); + RPC_STATUS RpcNsBindingImportBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, + RPC_NS_HANDLE*); +} version (Unicode) { alias RpcNsBindingLookupBeginW RpcNsBindingLookupBegin; diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index 3f330fc3a6..c4ac176eb8 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -3871,8 +3871,10 @@ enum MM_MAX_AXES_NAMELEN = 16; } alias ENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW, LPENUMLOGFONTEXDVW; +extern(Windows) nothrow @nogc { HFONT CreateFontIndirectExA(const(ENUMLOGFONTEXDVA)*); HFONT CreateFontIndirectExW(const(ENUMLOGFONTEXDVW)*); +} version (Unicode) alias CreateFontIndirectExW CreateFontIndirectEx; else From 989f46a0383b0bd7978a4538b5c3690b040129ed Mon Sep 17 00:00:00 2001 From: qchikara Date: Tue, 26 Apr 2016 16:26:49 +0900 Subject: [PATCH 317/768] Fix: missing linkage classes in Win32 RAS apis Fix core.sys.windows.ras functions which have extern (Windows) linkage. To simplify, I unite a redundant repetition of specifier blocks. --- src/core/sys/windows/ras.d | 80 ++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 42 deletions(-) diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index d737fb12fc..9903f1a430 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -817,51 +817,48 @@ extern (Windows) { /* WINAPI */ alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD) RASDIALFUNC1; alias DWORD function (ULONG_PTR, DWORD, HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD) RASDIALFUNC2; -} -/* External functions */ -DWORD RasDialA(LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, DWORD, LPVOID, LPHRASCONN); -DWORD RasDialW(LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, DWORD, LPVOID, LPHRASCONN); -DWORD RasEnumConnectionsA(LPRASCONNA, LPDWORD, LPDWORD); -DWORD RasEnumConnectionsW(LPRASCONNW, LPDWORD, LPDWORD); -DWORD RasEnumEntriesA(LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, LPDWORD); -DWORD RasEnumEntriesW(LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD, LPDWORD); -DWORD RasGetConnectStatusA(HRASCONN, LPRASCONNSTATUSA); -DWORD RasGetConnectStatusW(HRASCONN, LPRASCONNSTATUSW); -DWORD RasGetErrorStringA(UINT, LPSTR, DWORD); -DWORD RasGetErrorStringW(UINT, LPWSTR, DWORD); -DWORD RasHangUpA(HRASCONN); -DWORD RasHangUpW(HRASCONN); -DWORD RasGetProjectionInfoA(HRASCONN, RASPROJECTION, LPVOID, LPDWORD); -DWORD RasGetProjectionInfoW(HRASCONN, RASPROJECTION, LPVOID, LPDWORD); -DWORD RasCreatePhonebookEntryA(HWND, LPCSTR); -DWORD RasCreatePhonebookEntryW(HWND, LPCWSTR); -DWORD RasEditPhonebookEntryA(HWND, LPCSTR, LPCSTR); -DWORD RasEditPhonebookEntryW(HWND, LPCWSTR, LPCWSTR); -DWORD RasSetEntryDialParamsA(LPCSTR, LPRASDIALPARAMSA, BOOL); -DWORD RasSetEntryDialParamsW(LPCWSTR, LPRASDIALPARAMSW, BOOL); -DWORD RasGetEntryDialParamsA(LPCSTR, LPRASDIALPARAMSA, LPBOOL); -DWORD RasGetEntryDialParamsW(LPCWSTR, LPRASDIALPARAMSW, LPBOOL); -DWORD RasEnumDevicesA(LPRASDEVINFOA, LPDWORD, LPDWORD); -DWORD RasEnumDevicesW(LPRASDEVINFOW, LPDWORD, LPDWORD); -DWORD RasGetCountryInfoA(LPRASCTRYINFOA, LPDWORD); -DWORD RasGetCountryInfoW(LPRASCTRYINFOW, LPDWORD); -DWORD RasGetEntryPropertiesA(LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, LPBYTE, LPDWORD); -DWORD RasGetEntryPropertiesW(LPCWSTR, LPCWSTR, LPRASENTRYW, LPDWORD, LPBYTE, LPDWORD); -DWORD RasSetEntryPropertiesA(LPCSTR, LPCSTR, LPRASENTRYA, DWORD, LPBYTE, DWORD); -DWORD RasSetEntryPropertiesW(LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, LPBYTE, DWORD); -DWORD RasRenameEntryA(LPCSTR, LPCSTR, LPCSTR); -DWORD RasRenameEntryW(LPCWSTR, LPCWSTR, LPCWSTR); -DWORD RasDeleteEntryA(LPCSTR, LPCSTR); -DWORD RasDeleteEntryW(LPCWSTR, LPCWSTR); -DWORD RasValidateEntryNameA(LPCSTR, LPCSTR); -DWORD RasValidateEntryNameW(LPCWSTR, LPCWSTR); + /* External functions */ + DWORD RasDialA(LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, DWORD, LPVOID, LPHRASCONN); + DWORD RasDialW(LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, DWORD, LPVOID, LPHRASCONN); + DWORD RasEnumConnectionsA(LPRASCONNA, LPDWORD, LPDWORD); + DWORD RasEnumConnectionsW(LPRASCONNW, LPDWORD, LPDWORD); + DWORD RasEnumEntriesA(LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, LPDWORD); + DWORD RasEnumEntriesW(LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD, LPDWORD); + DWORD RasGetConnectStatusA(HRASCONN, LPRASCONNSTATUSA); + DWORD RasGetConnectStatusW(HRASCONN, LPRASCONNSTATUSW); + DWORD RasGetErrorStringA(UINT, LPSTR, DWORD); + DWORD RasGetErrorStringW(UINT, LPWSTR, DWORD); + DWORD RasHangUpA(HRASCONN); + DWORD RasHangUpW(HRASCONN); + DWORD RasGetProjectionInfoA(HRASCONN, RASPROJECTION, LPVOID, LPDWORD); + DWORD RasGetProjectionInfoW(HRASCONN, RASPROJECTION, LPVOID, LPDWORD); + DWORD RasCreatePhonebookEntryA(HWND, LPCSTR); + DWORD RasCreatePhonebookEntryW(HWND, LPCWSTR); + DWORD RasEditPhonebookEntryA(HWND, LPCSTR, LPCSTR); + DWORD RasEditPhonebookEntryW(HWND, LPCWSTR, LPCWSTR); + DWORD RasSetEntryDialParamsA(LPCSTR, LPRASDIALPARAMSA, BOOL); + DWORD RasSetEntryDialParamsW(LPCWSTR, LPRASDIALPARAMSW, BOOL); + DWORD RasGetEntryDialParamsA(LPCSTR, LPRASDIALPARAMSA, LPBOOL); + DWORD RasGetEntryDialParamsW(LPCWSTR, LPRASDIALPARAMSW, LPBOOL); + DWORD RasEnumDevicesA(LPRASDEVINFOA, LPDWORD, LPDWORD); + DWORD RasEnumDevicesW(LPRASDEVINFOW, LPDWORD, LPDWORD); + DWORD RasGetCountryInfoA(LPRASCTRYINFOA, LPDWORD); + DWORD RasGetCountryInfoW(LPRASCTRYINFOW, LPDWORD); + DWORD RasGetEntryPropertiesA(LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, LPBYTE, LPDWORD); + DWORD RasGetEntryPropertiesW(LPCWSTR, LPCWSTR, LPRASENTRYW, LPDWORD, LPBYTE, LPDWORD); + DWORD RasSetEntryPropertiesA(LPCSTR, LPCSTR, LPRASENTRYA, DWORD, LPBYTE, DWORD); + DWORD RasSetEntryPropertiesW(LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, LPBYTE, DWORD); + DWORD RasRenameEntryA(LPCSTR, LPCSTR, LPCSTR); + DWORD RasRenameEntryW(LPCWSTR, LPCWSTR, LPCWSTR); + DWORD RasDeleteEntryA(LPCSTR, LPCSTR); + DWORD RasDeleteEntryW(LPCWSTR, LPCWSTR); + DWORD RasValidateEntryNameA(LPCSTR, LPCSTR); + DWORD RasValidateEntryNameW(LPCWSTR, LPCWSTR); //static if(_WIN32_WINNT >= 0x401) { -extern (Windows) { /* WINAPI */ alias BOOL function(LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; alias BOOL function(LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; -} DWORD RasGetSubEntryHandleA(HRASCONN, DWORD, LPHRASCONN); DWORD RasGetSubEntryHandleW(HRASCONN, DWORD, LPHRASCONN); @@ -892,12 +889,10 @@ extern (Windows) { /* WINAPI */ //} static if (_WIN32_WINNT >= 0x500) { -extern (Windows) { /* WINAPI */ alias DWORD function(HRASCONN) RasCustomHangUpFn; alias DWORD function(LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; alias DWORD function(HINSTANCE, LPRASDIALEXTENSIONS, LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN, DWORD) RasCustomDialFn; -} DWORD RasInvokeEapUI(HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); DWORD RasGetLinkStatistics(HRASCONN, DWORD, RAS_STATS*); @@ -917,6 +912,7 @@ extern (Windows) { /* WINAPI */ void RasFreeEapUserIdentityW(LPRASEAPUSERIDENTITYW); void RasFreeEapUserIdentityA(LPRASEAPUSERIDENTITYA); } +} // extern (Windows) /* UNICODE defines for functions */ From c230cd4d52de1b05d15f61f6fb6d0e74b084f5c9 Mon Sep 17 00:00:00 2001 From: Marco Leise Date: Sat, 16 Apr 2016 22:45:59 +0200 Subject: [PATCH 318/768] Make core.cpuid support GDC (based on front-end release 2.066) in both AT&T and Intel assembly styles. Fixes #15933 --- src/core/cpuid.d | 281 +++++++++++++++++++++++++++++------------------ 1 file changed, 177 insertions(+), 104 deletions(-) diff --git a/src/core/cpuid.d b/src/core/cpuid.d index 304598b365..6db4f3e53a 100644 --- a/src/core/cpuid.d +++ b/src/core/cpuid.d @@ -81,14 +81,11 @@ nothrow: // AMD K10 -- + isX86_64() // Cyrix 6x86 -- preferPentium1() // 6x86MX -- + mmx() -version(D_InlineAsm_X86) -{ - version = InlineAsm_X86_Any; -} -else version(D_InlineAsm_X86_64) -{ - version = InlineAsm_X86_Any; -} + +// GDC support uses extended inline assembly: +// https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html (general information and hints) +// https://gcc.gnu.org/onlinedocs/gcc/Simple-Constraints.html (binding variables to registers) +// https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html (x86 specific register short names) public: @@ -429,7 +426,22 @@ CpuFeatures* getCpuFeatures() @nogc nothrow } -version(InlineAsm_X86_Any) { +version(GNU) { + version(X86) + enum supportedX86 = true; + else version(X86_64) + enum supportedX86 = true; + else + enum supportedX86 = false; +} else version(D_InlineAsm_X86) { + enum supportedX86 = true; +} else version(D_InlineAsm_X86_64) { + enum supportedX86 = true; +} else { + enum supportedX86 = false; +} + +static if (supportedX86) { // Note that this code will also work for Itanium in x86 mode. __gshared uint max_cpuid, max_extended_cpuid; @@ -497,7 +509,9 @@ void getcacheinfoCPUID2() // for old single-core CPUs. uint numinfos = 1; do { - asm pure nothrow @nogc { + version(GNU) asm pure nothrow @nogc { + "cpuid" : "=a" a[0], "=b" a[1], "=c" a[2], "=d" a[3] : "a" 2; + } else asm pure nothrow @nogc { mov EAX, 2; cpuid; mov a, EAX; @@ -539,7 +553,9 @@ void getcacheinfoCPUID4() int cachenum = 0; for(;;) { uint a, b, number_of_sets; - asm pure nothrow @nogc { + version(GNU) asm pure nothrow @nogc { + "cpuid" : "=a" a, "=b" b, "=c" number_of_sets : "a" 4, "c" cachenum : "edx"; + } else asm pure nothrow @nogc { mov EAX, 4; mov ECX, cachenum; cpuid; @@ -564,7 +580,7 @@ void getcacheinfoCPUID4() // and must convert to Kb, also dividing by the number of hyperthreads using this cache. ulong sz = (datacache[level].associativity< ubyte.max)? number_of_sets * datacache[level].associativity : number_of_sets; - datacache[level].size = cast(uint)( + datacache[level].size = cast(size_t)( (sz * datacache[level].lineSize * line_partitions ) / (numthreads *1024)); if (level == 0 && (a&0xF)==3) { // Halve the size for unified L1 caches @@ -576,8 +592,10 @@ void getcacheinfoCPUID4() // CPUID8000_0005 & 6 void getAMDcacheinfo() { - uint c5, c6, d6; - asm pure nothrow @nogc { + uint dummy, c5, c6, d6; + version(GNU) asm pure nothrow @nogc { + "cpuid" : "=a" dummy, "=c" c5 : "a" 0x8000_0005 : "ebx", "edx"; + } else asm pure nothrow @nogc { mov EAX, 0x8000_0005; // L1 cache cpuid; // EAX has L1_TLB_4M. @@ -593,8 +611,10 @@ void getAMDcacheinfo() if (max_extended_cpuid >= 0x8000_0006) { // AMD K6-III or K6-2+ or later. ubyte numcores = 1; - if (max_extended_cpuid >=0x8000_0008) { - asm pure nothrow @nogc { + if (max_extended_cpuid >= 0x8000_0008) { + version(GNU) asm pure nothrow @nogc { + "cpuid" : "=a" dummy, "=c" numcores : "a" 0x8000_0008 : "ebx", "edx"; + } else asm pure nothrow @nogc { mov EAX, 0x8000_0008; cpuid; mov numcores, CL; @@ -602,7 +622,10 @@ void getAMDcacheinfo() ++numcores; if (numcores>cpuFeatures.maxCores) cpuFeatures.maxCores = numcores; } - asm pure nothrow @nogc { + + version(GNU) asm pure nothrow @nogc { + "cpuid" : "=a" dummy, "=c" c6, "=d" d6 : "a" 0x8000_0006 : "ebx"; + } else asm pure nothrow @nogc { mov EAX, 0x8000_0006; // L2/L3 cache cpuid; mov c6, ECX; // L2 cache info @@ -629,7 +652,9 @@ void getCpuInfo0B() int threadsPerCore; uint a, b, c, d; do { - asm pure nothrow @nogc { + version(GNU) asm pure nothrow @nogc { + "cpuid" : "=a" a, "=b" b, "=c" c, "=d" d : "a" 0x0B, "c" level; + } else asm pure nothrow @nogc { mov EAX, 0x0B; mov ECX, level; cpuid; @@ -651,80 +676,101 @@ void getCpuInfo0B() } ++level; } while (a!=0 || b!=0); - } void cpuidX86() { auto cf = getCpuFeatures(); - char * venptr = cf.vendorID.ptr; - uint a, b, c, d, a2; - version(D_InlineAsm_X86) + uint a, b, c, d; + uint* venptr = cast(uint*)cf.vendorID.ptr; + version(GNU) { - asm pure nothrow @nogc { - mov EAX, 0; - cpuid; - mov a, EAX; - mov EAX, venptr; - mov [EAX], EBX; - mov [EAX + 4], EDX; - mov [EAX + 8], ECX; - } + asm pure nothrow @nogc { "cpuid" : "=a" max_cpuid, "=b" venptr[0], "=d" venptr[1], "=c" venptr[2] : "a" 0; } + asm pure nothrow @nogc { "cpuid" : "=a" max_extended_cpuid : "a" 0x8000_0000 : "ebx", "ecx", "edx"; } } - else version(D_InlineAsm_X86_64) + else { + uint a2; + version(D_InlineAsm_X86) + { + asm pure nothrow @nogc { + mov EAX, 0; + cpuid; + mov a, EAX; + mov EAX, venptr; + mov [EAX], EBX; + mov [EAX + 4], EDX; + mov [EAX + 8], ECX; + } + } + else version(D_InlineAsm_X86_64) + { + asm pure nothrow @nogc { + mov EAX, 0; + cpuid; + mov a, EAX; + mov RAX, venptr; + mov [RAX], EBX; + mov [RAX + 4], EDX; + mov [RAX + 8], ECX; + } + } asm pure nothrow @nogc { - mov EAX, 0; + mov EAX, 0x8000_0000; cpuid; - mov a, EAX; - mov RAX, venptr; - mov [RAX], EBX; - mov [RAX + 4], EDX; - mov [RAX + 8], ECX; + mov a2, EAX; } + max_cpuid = a; + max_extended_cpuid = a2; } - asm pure nothrow @nogc { - mov EAX, 0x8000_0000; - cpuid; - mov a2, EAX; - } - max_cpuid = a; - max_extended_cpuid = a2; cf.probablyIntel = cf.vendorID == "GenuineIntel"; cf.probablyAMD = cf.vendorID == "AuthenticAMD"; uint apic = 0; // brand index, apic id - asm pure nothrow @nogc { - mov EAX, 1; // model, stepping - cpuid; - mov a, EAX; - mov apic, EBX; - mov c, ECX; - mov d, EDX; + version(GNU) asm pure nothrow @nogc { + "cpuid" : "=a" a, "=b" apic, "=c" cf.miscfeatures, "=d" cf.features : "a" 1; + } else { + asm pure nothrow @nogc { + mov EAX, 1; // model, stepping + cpuid; + mov a, EAX; + mov apic, EBX; + mov c, ECX; + mov d, EDX; + } + cf.features = d; + cf.miscfeatures = c; } - cf.features = d; - cf.miscfeatures = c; + stepping = a & 0xF; + uint fbase = (a >> 8) & 0xF; + uint mbase = (a >> 4) & 0xF; + family = ((fbase == 0xF) || (fbase == 0)) ? fbase + (a >> 20) & 0xFF : fbase; + model = ((fbase == 0xF) || (fbase == 6 && cf.probablyIntel) ) ? + mbase + ((a >> 12) & 0xF0) : mbase; if (max_cpuid >= 7) { - uint ext; - - asm pure nothrow @nogc - { - mov EAX, 7; // Structured extended feature leaf. - mov ECX, 0; // Main leaf. - cpuid; - mov ext, EBX; // HLE, AVX2, RTM, etc. + version(GNU) asm pure nothrow @nogc { + "cpuid" : "=a" a, "=b" cf.extfeatures, "=c" c : "a" 7, "c" 0 : "edx"; + } else { + uint ext; + asm pure nothrow @nogc { + mov EAX, 7; // Structured extended feature leaf. + mov ECX, 0; // Main leaf. + cpuid; + mov ext, EBX; // HLE, AVX2, RTM, etc. + } + cf.extfeatures = ext; } - - cf.extfeatures = ext; } if (cf.miscfeatures & OSXSAVE_BIT) { - asm pure nothrow @nogc { + version(GNU) asm pure nothrow @nogc { + "xgetbv" : "=a" a, "=d" d : "c" 0; + } else asm pure nothrow @nogc { mov ECX, 0; xgetbv; mov d, EDX; @@ -732,49 +778,55 @@ void cpuidX86() } cf.xfeatures = cast(ulong)d << 32 | a; } + cf.amdfeatures = 0; cf.amdmiscfeatures = 0; if (max_extended_cpuid >= 0x8000_0001) { - asm pure nothrow @nogc { - mov EAX, 0x8000_0001; - cpuid; - mov c, ECX; - mov d, EDX; + version(GNU) asm pure nothrow @nogc { + "cpuid" : "=a" a, "=c" cf.amdmiscfeatures, "=d" cf.amdfeatures : "a" 0x8000_0001 : "ebx"; + } else { + asm pure nothrow @nogc { + mov EAX, 0x8000_0001; + cpuid; + mov c, ECX; + mov d, EDX; + } + cf.amdmiscfeatures = c; + cf.amdfeatures = d; } - cf.amdmiscfeatures = c; - cf.amdfeatures = d; } // Try to detect fraudulent vendorIDs if (amd3dnow) cf.probablyIntel = false; - stepping = a & 0xF; - uint fbase = (a >> 8) & 0xF; - uint mbase = (a >> 4) & 0xF; - family = ((fbase == 0xF) || (fbase == 0)) ? fbase + (a >> 20) & 0xFF : fbase; - model = ((fbase == 0xF) || (fbase == 6 && cf.probablyIntel) ) ? - mbase + ((a >> 12) & 0xF0) : mbase; - if (!cf.probablyIntel && max_extended_cpuid >= 0x8000_0008) { - // determine max number of cores for AMD - asm pure nothrow @nogc { - mov EAX, 0x8000_0008; - cpuid; - mov c, ECX; - } //http://support.amd.com/TechDocs/25481.pdf pg.36 cf.maxCores = 1; if (hyperThreadingBit) { + // determine max number of cores for AMD + version(GNU) asm pure nothrow @nogc { + "cpuid" : "=a" a, "=c" c : "a" 0x8000_0008 : "ebx", "edx"; + } else asm pure nothrow @nogc { + mov EAX, 0x8000_0008; + cpuid; + mov c, ECX; + } cf.maxCores += c & 0xFF; } } if (max_extended_cpuid >= 0x8000_0004) { - char *procptr = cf.processorNameBuffer.ptr; - version(D_InlineAsm_X86) + uint* pnb = cast(uint*)cf.processorNameBuffer.ptr; + version(GNU) + { + asm pure nothrow @nogc { "cpuid" : "=a" pnb[0], "=b" pnb[1], "=c" pnb[ 2], "=d" pnb[ 3] : "a" 0x8000_0002; } + asm pure nothrow @nogc { "cpuid" : "=a" pnb[4], "=b" pnb[5], "=c" pnb[ 6], "=d" pnb[ 7] : "a" 0x8000_0003; } + asm pure nothrow @nogc { "cpuid" : "=a" pnb[8], "=b" pnb[9], "=c" pnb[10], "=d" pnb[11] : "a" 0x8000_0004; } + } + else version(D_InlineAsm_X86) { asm pure nothrow @nogc { push ESI; - mov ESI, procptr; + mov ESI, pnb; mov EAX, 0x8000_0002; cpuid; mov [ESI], EAX; @@ -800,7 +852,7 @@ void cpuidX86() { asm pure nothrow @nogc { push RSI; - mov RSI, procptr; + mov RSI, pnb; mov EAX, 0x8000_0002; cpuid; mov [RSI], EAX; @@ -885,7 +937,7 @@ void cpuidX86() datacache[0].lineSize = 32; } } - if (max_cpuid >=0x0B) { + if (max_cpuid >= 0x0B) { // For Intel i7 and later, use function 0x0B to determine // cores and hyperthreads. getCpuInfo0B(); @@ -899,27 +951,48 @@ void cpuidX86() // BUG(WONTFIX): Returns false for Cyrix 6x86 and 6x86L. They will be treated as 486 machines. bool hasCPUID() { - version(D_InlineAsm_X86_64) + version(X86_64) return true; - else version(D_InlineAsm_X86) + else { uint flags; - asm nothrow @nogc { - pushfd; - pop EAX; - mov flags, EAX; - xor EAX, 0x0020_0000; - push EAX; - popfd; - pushfd; - pop EAX; - xor flags, EAX; + version(GNU) + { + // http://wiki.osdev.org/CPUID#Checking_CPUID_availability + // ASM template supports both AT&T and Intel syntax. + asm nothrow @nogc { " + pushf{l|d} # Save EFLAGS + pushf{l|d} # Store EFLAGS + xor{l $0x00200000, (%%esp)| dword ptr [esp], 0x00200000} + # Invert the ID bit in stored EFLAGS + popf{l|d} # Load stored EFLAGS (with ID bit inverted) + pushf{l|d} # Store EFLAGS again (ID bit may or may not be inverted) + pop {%%}eax # eax = modified EFLAGS (ID bit may or may not be inverted) + xor {(%%esp), %%eax|eax, [esp]} + # eax = whichever bits were changed + popf{l|d} # Restore original EFLAGS + " : "=a" flags; + } + } + else version(D_InlineAsm_X86) + { + asm nothrow @nogc { + pushfd; + pop EAX; + mov flags, EAX; + xor EAX, 0x0020_0000; + push EAX; + popfd; + pushfd; + pop EAX; + xor flags, EAX; + } } - return (flags & 0x0020_0000) !=0; + return (flags & 0x0020_0000) != 0; } } -} else { // inline asm X86 +} else { // supported X86 bool hasCPUID() { return false; } From f6fa6ef49e463a4395f05d1bf2c613fee0445fdb Mon Sep 17 00:00:00 2001 From: qchikara Date: Wed, 27 Apr 2016 18:17:01 +0900 Subject: [PATCH 319/768] Fix Win32-x64 DataTypes Changed such as DWORD into DWORD_PTR, and so on. These Data Types are defined separately between x86/x64, so existing Win32-x86 programs get _no_ change. --- src/core/sys/windows/ddeml.d | 6 +++--- src/core/sys/windows/imagehlp.d | 2 +- src/core/sys/windows/psapi.d | 16 ++++++++-------- src/core/sys/windows/richedit.d | 6 +++--- src/core/sys/windows/tlhelp32.d | 4 ++-- src/core/sys/windows/winbase.d | 34 ++++++++++++++++----------------- src/core/sys/windows/wingdi.d | 2 +- src/core/sys/windows/winnt.d | 4 ++-- src/core/sys/windows/winreg.d | 4 ++-- src/core/sys/windows/winuser.d | 26 ++++++++++++------------- src/rt/deh_win32.d | 2 +- 11 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/core/sys/windows/ddeml.d b/src/core/sys/windows/ddeml.d index 9cda322b35..4f84a0639e 100644 --- a/src/core/sys/windows/ddeml.d +++ b/src/core/sys/windows/ddeml.d @@ -197,7 +197,7 @@ mixin DECLARE_HANDLE!("HSZ"); mixin DECLARE_HANDLE!("HDDEDATA"); extern (Windows) alias HDDEDATA - function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD) PFNCALLBACK; + function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, ULONG_PTR, ULONG_PTR) PFNCALLBACK; struct HSZPAIR { HSZ hszSvc; @@ -218,7 +218,7 @@ alias CONVCONTEXT* PCONVCONTEXT; struct CONVINFO { DWORD cb = CONVINFO.sizeof; - DWORD hUser; + DWORD_PTR hUser; HCONV hConvPartner; HSZ hszSvcPartner; HSZ hszServiceReq; @@ -353,7 +353,7 @@ extern (Windows) { DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int); DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int); HCONV DdeReconnect(HCONV); - BOOL DdeSetUserHandle(HCONV, DWORD, DWORD); + BOOL DdeSetUserHandle(HCONV, DWORD, DWORD_PTR); BOOL DdeUnaccessData(HDDEDATA); BOOL DdeUninitialize(DWORD); } diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index 1a1676ca24..788764a316 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -278,7 +278,7 @@ alias IMAGEHLP_DUPLICATE_SYMBOL* PIMAGEHLP_DUPLICATE_SYMBOL; mixin DECLARE_HANDLE!("DIGEST_HANDLE"); extern (Windows) { - alias BOOL function(IMAGEHLP_STATUS_REASON, LPSTR, LPSTR, ULONG, ULONG) + alias BOOL function(IMAGEHLP_STATUS_REASON, LPSTR, LPSTR, ULONG_PTR, ULONG_PTR) PIMAGEHLP_STATUS_ROUTINE; alias BOOL function(HANDLE , LPCVOID, LPVOID, DWORD, LPDWORD) PREAD_PROCESS_MEMORY_ROUTINE; diff --git a/src/core/sys/windows/psapi.d b/src/core/sys/windows/psapi.d index ed28515ad3..708878442d 100644 --- a/src/core/sys/windows/psapi.d +++ b/src/core/sys/windows/psapi.d @@ -43,14 +43,14 @@ alias PSAPI_WS_WATCH_INFORMATION_EX* PPSAPI_WS_WATCH_INFORMATION_EX; struct PROCESS_MEMORY_COUNTERS { DWORD cb; DWORD PageFaultCount; - DWORD PeakWorkingSetSize; - DWORD WorkingSetSize; - DWORD QuotaPeakPagedPoolUsage; - DWORD QuotaPagedPoolUsage; - DWORD QuotaPeakNonPagedPoolUsage; - DWORD QuotaNonPagedPoolUsage; - DWORD PagefileUsage; - DWORD PeakPagefileUsage; + SIZE_T PeakWorkingSetSize; + SIZE_T WorkingSetSize; + SIZE_T QuotaPeakPagedPoolUsage; + SIZE_T QuotaPagedPoolUsage; + SIZE_T QuotaPeakNonPagedPoolUsage; + SIZE_T QuotaNonPagedPoolUsage; + SIZE_T PagefileUsage; + SIZE_T PeakPagefileUsage; } alias PROCESS_MEMORY_COUNTERS* PPROCESS_MEMORY_COUNTERS; diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d index a31b13d36b..44ae617933 100644 --- a/src/core/sys/windows/richedit.d +++ b/src/core/sys/windows/richedit.d @@ -388,11 +388,11 @@ struct COMPCOLOR { } extern (Windows) { - alias DWORD function(DWORD,PBYTE,LONG,LONG*) EDITSTREAMCALLBACK; + alias DWORD function(DWORD_PTR,PBYTE,LONG,LONG*) EDITSTREAMCALLBACK; } struct EDITSTREAM { - DWORD dwCookie; + DWORD_PTR dwCookie; DWORD dwError; EDITSTREAMCALLBACK pfnCallback; } @@ -540,7 +540,7 @@ struct REQRESIZE { struct REPASTESPECIAL { DWORD dwAspect; - DWORD dwParam; + DWORD_PTR dwParam; } struct PUNCTUATION { diff --git a/src/core/sys/windows/tlhelp32.d b/src/core/sys/windows/tlhelp32.d index fc682c9d72..5c76fcd0a2 100644 --- a/src/core/sys/windows/tlhelp32.d +++ b/src/core/sys/windows/tlhelp32.d @@ -143,13 +143,13 @@ version(Unicode) { extern(Windows) nothrow @nogc { - BOOL Heap32First(LPHEAPENTRY32,DWORD,DWORD); + BOOL Heap32First(LPHEAPENTRY32,DWORD,ULONG_PTR); BOOL Heap32ListFirst(HANDLE,LPHEAPLIST32); BOOL Heap32ListNext(HANDLE,LPHEAPLIST32); BOOL Heap32Next(LPHEAPENTRY32); BOOL Thread32First(HANDLE,LPTHREADENTRY32); BOOL Thread32Next(HANDLE,LPTHREADENTRY32); - BOOL Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD); + BOOL Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,SIZE_T,SIZE_T*); HANDLE CreateToolhelp32Snapshot(DWORD,DWORD); BOOL Module32FirstW(HANDLE,LPMODULEENTRY32W); BOOL Module32NextW(HANDLE,LPMODULEENTRY32W); diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index 6913488b18..d0a622d745 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -1383,12 +1383,12 @@ struct REG_TZI_FORMAT { struct MEMORYSTATUS { DWORD dwLength; DWORD dwMemoryLoad; - DWORD dwTotalPhys; - DWORD dwAvailPhys; - DWORD dwTotalPageFile; - DWORD dwAvailPageFile; - DWORD dwTotalVirtual; - DWORD dwAvailVirtual; + SIZE_T dwTotalPhys; + SIZE_T dwAvailPhys; + SIZE_T dwTotalPageFile; + SIZE_T dwAvailPageFile; + SIZE_T dwTotalVirtual; + SIZE_T dwAvailVirtual; } alias MEMORYSTATUS* LPMEMORYSTATUS; @@ -1586,12 +1586,12 @@ extern (Windows) { DWORD, DWORD, HANDLE, HANDLE, LPVOID) LPPROGRESS_ROUTINE; alias void function(PVOID) LPFIBER_START_ROUTINE; - alias BOOL function(HMODULE, LPCSTR, LPCSTR, WORD, LONG) ENUMRESLANGPROCA; - alias BOOL function(HMODULE, LPCWSTR, LPCWSTR, WORD, LONG) ENUMRESLANGPROCW; - alias BOOL function(HMODULE, LPCSTR, LPSTR, LONG) ENUMRESNAMEPROCA; - alias BOOL function(HMODULE, LPCWSTR, LPWSTR, LONG) ENUMRESNAMEPROCW; - alias BOOL function(HMODULE, LPSTR, LONG) ENUMRESTYPEPROCA; - alias BOOL function(HMODULE, LPWSTR, LONG) ENUMRESTYPEPROCW; + alias BOOL function(HMODULE, LPCSTR, LPCSTR, WORD, LONG_PTR) ENUMRESLANGPROCA; + alias BOOL function(HMODULE, LPCWSTR, LPCWSTR, WORD, LONG_PTR) ENUMRESLANGPROCW; + alias BOOL function(HMODULE, LPCSTR, LPSTR, LONG_PTR) ENUMRESNAMEPROCA; + alias BOOL function(HMODULE, LPCWSTR, LPWSTR, LONG_PTR) ENUMRESNAMEPROCW; + alias BOOL function(HMODULE, LPSTR, LONG_PTR) ENUMRESTYPEPROCA; + alias BOOL function(HMODULE, LPWSTR, LONG_PTR) ENUMRESTYPEPROCW; alias void function(DWORD, DWORD, LPOVERLAPPED) LPOVERLAPPED_COMPLETION_ROUTINE; alias LONG function(LPEXCEPTION_POINTERS) PTOP_LEVEL_EXCEPTION_FILTER; alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; @@ -1730,7 +1730,7 @@ extern (Windows) nothrow @nogc { BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR) @trusted; HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR) @trusted; - HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); + HANDLE CreateThread(LPSECURITY_ATTRIBUTES, SIZE_T, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); BOOL DebugActiveProcess(DWORD); void DebugBreak(); ATOM DeleteAtom(ATOM); @@ -1967,7 +1967,7 @@ WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); BOOL QueryPerformanceCounter(PLARGE_INTEGER); BOOL QueryPerformanceFrequency(PLARGE_INTEGER); DWORD QueueUserAPC(PAPCFUNC, HANDLE, ULONG_PTR); - void RaiseException(DWORD, DWORD, DWORD, const(DWORD)*); + void RaiseException(DWORD, DWORD, DWORD, const(ULONG_PTR)*); BOOL ReadFile(HANDLE, PVOID, DWORD, PDWORD, LPOVERLAPPED); BOOL ReadFileEx(HANDLE, PVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); BOOL ReadProcessMemory(HANDLE, PCVOID, PVOID, SIZE_T, SIZE_T*); @@ -2024,7 +2024,7 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); BOOL SetPriorityClass(HANDLE, DWORD); BOOL SetStdHandle(DWORD, HANDLE); BOOL SetSystemTime(const(SYSTEMTIME)*); - DWORD SetThreadAffinityMask(HANDLE, DWORD); + DWORD_PTR SetThreadAffinityMask(HANDLE, DWORD_PTR); BOOL SetThreadContext(HANDLE, const(CONTEXT)*); BOOL SetThreadPriority(HANDLE, int); BOOL SetTimeZoneInformation(const(TIME_ZONE_INFORMATION)*); @@ -2171,7 +2171,7 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); + HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, SIZE_T, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); @@ -2292,7 +2292,7 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); BOOL SetHandleInformation(HANDLE, DWORD, DWORD); BOOL SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); BOOL SetPrivateObjectSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, PGENERIC_MAPPING, HANDLE); - BOOL SetProcessAffinityMask(HANDLE, DWORD); + BOOL SetProcessAffinityMask(HANDLE, DWORD_PTR); BOOL SetProcessPriorityBoost(HANDLE, BOOL); BOOL SetProcessShutdownParameters(DWORD, DWORD); BOOL SetProcessWorkingSetSize(HANDLE, SIZE_T, SIZE_T); diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index c4ac176eb8..0881d36416 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -2770,7 +2770,7 @@ struct EXTLOGPEN { UINT elpWidth; UINT elpBrushStyle; COLORREF elpColor; - LONG elpHatch; + ULONG_PTR elpHatch; DWORD elpNumEntries; DWORD[1] elpStyleEntry; } diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index 564ba3c512..f36cd35413 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -2267,7 +2267,7 @@ struct EXCEPTION_RECORD { EXCEPTION_RECORD* ExceptionRecord; PVOID ExceptionAddress; DWORD NumberParameters; - DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; + ULONG_PTR[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; } alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; @@ -2596,7 +2596,7 @@ struct MEMORY_BASIC_INFORMATION { PVOID BaseAddress; PVOID AllocationBase; DWORD AllocationProtect; - DWORD RegionSize; + SIZE_T RegionSize; DWORD State; DWORD Protect; DWORD Type; diff --git a/src/core/sys/windows/winreg.d b/src/core/sys/windows/winreg.d index 12ac849001..2f80e8f767 100644 --- a/src/core/sys/windows/winreg.d +++ b/src/core/sys/windows/winreg.d @@ -65,7 +65,7 @@ alias ACCESS_MASK REGSAM; struct VALENTA { LPSTR ve_valuename; DWORD ve_valuelen; - DWORD ve_valueptr; + DWORD_PTR ve_valueptr; DWORD ve_type; } alias VALENTA* PVALENTA; @@ -73,7 +73,7 @@ alias VALENTA* PVALENTA; struct VALENTW { LPWSTR ve_valuename; DWORD ve_valuelen; - DWORD ve_valueptr; + DWORD_PTR ve_valueptr; DWORD ve_type; } alias VALENTW* PVALENTW; diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index cb86b169ef..5b0b09a7e5 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -2598,15 +2598,15 @@ struct COMPAREITEMSTRUCT { UINT CtlID; HWND hwndItem; UINT itemID1; - DWORD itemData1; + ULONG_PTR itemData1; UINT itemID2; - DWORD itemData2; + ULONG_PTR itemData2; DWORD dwLocaleId; } alias COMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT; struct COPYDATASTRUCT { - DWORD dwData; + ULONG_PTR dwData; DWORD cbData; PVOID lpData; } @@ -2653,7 +2653,7 @@ struct DELETEITEMSTRUCT { UINT CtlID; UINT itemID; HWND hwndItem; - UINT itemData; + ULONG_PTR itemData; } alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT, LPDELETEITEMSTRUCT; @@ -2692,7 +2692,7 @@ struct DRAWITEMSTRUCT { HWND hwndItem; HDC hDC; RECT rcItem; - DWORD itemData; + ULONG_PTR itemData; } alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT, PDRAWITEMSTRUCT; @@ -2890,7 +2890,7 @@ struct MSGBOXPARAMSA { LPCSTR lpszCaption; DWORD dwStyle; LPCSTR lpszIcon; - DWORD dwContextHelpId; + DWORD_PTR dwContextHelpId; MSGBOXCALLBACK lpfnMsgBoxCallback; DWORD dwLanguageId; } @@ -2904,7 +2904,7 @@ struct MSGBOXPARAMSW { LPCWSTR lpszCaption; DWORD dwStyle; LPCWSTR lpszIcon; - DWORD dwContextHelpId; + DWORD_PTR dwContextHelpId; MSGBOXCALLBACK lpfnMsgBoxCallback; DWORD dwLanguageId; } @@ -3084,7 +3084,7 @@ struct MOUSEHOOKSTRUCT { POINT pt; HWND hwnd; UINT wHitTestCode; - DWORD dwExtraInfo; + ULONG_PTR dwExtraInfo; } alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT, PMOUSEHOOKSTRUCT; @@ -3176,7 +3176,7 @@ struct MEASUREITEMSTRUCT { UINT itemID; UINT itemWidth; UINT itemHeight; - DWORD itemData; + ULONG_PTR itemData; } alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT, LPMEASUREITEMSTRUCT; @@ -3362,7 +3362,7 @@ struct KBDLLHOOKSTRUCT { DWORD scanCode; DWORD flags; DWORD time; - DWORD dwExtraInfo; + ULONG_PTR dwExtraInfo; } alias KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT; @@ -3943,7 +3943,7 @@ BOOL IsWindowEnabled(HWND); BOOL IsWindowUnicode(HWND); BOOL IsWindowVisible(HWND); BOOL IsZoomed(HWND); -void keybd_event(BYTE, BYTE, DWORD, DWORD); +void keybd_event(BYTE, BYTE, DWORD, ULONG_PTR); BOOL KillTimer(HWND, UINT_PTR); HACCEL LoadAcceleratorsA(HINSTANCE, LPCSTR); HACCEL LoadAcceleratorsW(HINSTANCE, LPCWSTR); @@ -4036,8 +4036,8 @@ int ScrollWindowEx(HWND, int, int, LPCRECT, LPCRECT, HRGN, LPRECT, UINT); LONG SendDlgItemMessageA(HWND, int, UINT, WPARAM, LPARAM); LONG SendDlgItemMessageW(HWND, int, UINT, WPARAM, LPARAM); LRESULT SendMessageA(HWND, UINT, WPARAM, LPARAM); -BOOL SendMessageCallbackA(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); -BOOL SendMessageCallbackW(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); +BOOL SendMessageCallbackA(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, ULONG_PTR); +BOOL SendMessageCallbackW(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, ULONG_PTR); LRESULT SendMessageTimeoutA(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); LRESULT SendMessageTimeoutW(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); LRESULT SendMessageW(HWND, UINT, WPARAM, LPARAM); diff --git a/src/rt/deh_win32.d b/src/rt/deh_win32.d index f603149ef6..31821205d7 100644 --- a/src/rt/deh_win32.d +++ b/src/rt/deh_win32.d @@ -162,7 +162,7 @@ struct EXCEPTION_RECORD { EXCEPTION_RECORD* ExceptionRecord; PVOID ExceptionAddress; DWORD NumberParameters; - DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; + ULONG_PTR[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; } alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; From b7d992cb28c756d97db05aec2d8d96ea401fad14 Mon Sep 17 00:00:00 2001 From: qchikara Date: Thu, 28 Apr 2016 14:49:34 +0900 Subject: [PATCH 320/768] Add Get/SetClassLongPtr for Win32-x64 --- src/core/sys/windows/winuser.d | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 5b0b09a7e5..caf0fa08d7 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -4476,11 +4476,19 @@ static if (_WIN32_WINNT >= 0x501) { } version (Win64) { + ULONG_PTR GetClassLongPtrA(HWND, int); + ULONG_PTR GetClassLongPtrW(HWND, int); + ULONG_PTR SetClassLongPtrA(HWND, int, LONG_PTR); + ULONG_PTR SetClassLongPtrW(HWND, int, LONG_PTR); LONG_PTR GetWindowLongPtrA(HWND, int); LONG_PTR GetWindowLongPtrW(HWND, int); LONG_PTR SetWindowLongPtrA(HWND, int, LONG_PTR); LONG_PTR SetWindowLongPtrW(HWND, int, LONG_PTR); } else { + alias GetClassLongA GetClassLongPtrA; + alias GetClassLongW GetClassLongPtrW; + alias SetClassLongA SetClassLongPtrA; + alias SetClassLongW SetClassLongPtrW; alias GetWindowLongA GetWindowLongPtrA; alias GetWindowLongW GetWindowLongPtrW; alias SetWindowLongA SetWindowLongPtrA; @@ -4567,6 +4575,7 @@ version(Unicode) { alias GetClassInfoW GetClassInfo; alias GetClassInfoExW GetClassInfoEx; alias GetClassLongW GetClassLong; + alias GetClassLongPtrW GetClassLongPtr; alias GetClassNameW GetClassName; alias GetClipboardFormatNameW GetClipboardFormatName; alias GetDlgItemTextW GetDlgItemText; @@ -4632,6 +4641,7 @@ version(Unicode) { alias SendMessageTimeoutW SendMessageTimeout; alias SendNotifyMessageW SendNotifyMessage; alias SetClassLongW SetClassLong; + alias SetClassLongPtrW SetClassLongPtr; alias SetDlgItemTextW SetDlgItemText; alias SetMenuItemInfoW SetMenuItemInfo; alias SetPropW SetProp; @@ -4736,6 +4746,7 @@ version(Unicode) { alias GetClassInfoA GetClassInfo; alias GetClassInfoExA GetClassInfoEx; alias GetClassLongA GetClassLong; + alias GetClassLongPtrA GetClassLongPtr; alias GetClassNameA GetClassName; alias GetClipboardFormatNameA GetClipboardFormatName; alias GetDlgItemTextA GetDlgItemText; @@ -4801,6 +4812,7 @@ version(Unicode) { alias SendMessageTimeoutA SendMessageTimeout; alias SendNotifyMessageA SendNotifyMessage; alias SetClassLongA SetClassLong; + alias SetClassLongPtrA SetClassLongPtr; alias SetDlgItemTextA SetDlgItemText; alias SetMenuItemInfoA SetMenuItemInfo; alias SetPropA SetProp; From 74b07c2b7a29f449ccf26dcca5a3433a0aab3431 Mon Sep 17 00:00:00 2001 From: onyx Date: Thu, 28 Apr 2016 16:42:59 +0300 Subject: [PATCH 321/768] Solaris: add utsname. --- src/core/sys/posix/sys/utsname.d | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/core/sys/posix/sys/utsname.d b/src/core/sys/posix/sys/utsname.d index 2a755de189..a87c5fb078 100644 --- a/src/core/sys/posix/sys/utsname.d +++ b/src/core/sys/posix/sys/utsname.d @@ -62,6 +62,22 @@ else version(FreeBSD) int uname(utsname* __name); } +else version(Solaris) +{ + private enum SYS_NMLN = 257; + + struct utsname + { + char[SYS_NMLN] sysname; + char[SYS_NMLN] nodename; + char[SYS_NMLN] release; + // The field name is version but version is a keyword in D. + char[SYS_NMLN] _version; + char[SYS_NMLN] machine; + } + + int uname(utsname* __name); +} else version(CRuntime_Bionic) { private enum SYS_NMLN = 65; From 69fdff0ed57221dc1c8564bf5bb30142f86ab667 Mon Sep 17 00:00:00 2001 From: qchikara Date: Fri, 29 Apr 2016 09:01:21 +0900 Subject: [PATCH 322/768] More fix of Win32 x64 This is not listed in 15959. --- src/core/sys/windows/commctrl.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index aefb71c64c..c768096efd 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -3249,7 +3249,7 @@ struct NMCUSTOMDRAW { DWORD dwDrawStage; HDC hdc; RECT rc; - DWORD dwItemSpec; + DWORD_PTR dwItemSpec; UINT uItemState; LPARAM lItemlParam; } From 998c0fc455c959bfb55c1a26ef8b9599622bc457 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 1 May 2016 13:26:15 +0200 Subject: [PATCH 323/768] fix issue 15976: swap out explicit TLS values during impersonating thread --- src/core/sys/windows/threadaux.d | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/core/sys/windows/threadaux.d b/src/core/sys/windows/threadaux.d index 13a6835dbb..dfbb2fa71e 100644 --- a/src/core/sys/windows/threadaux.d +++ b/src/core/sys/windows/threadaux.d @@ -285,8 +285,39 @@ struct thread_aux return; curteb[11] = tlsarray; + + // swap out the TLS slots aswell + version(Win64) + { + enum TEB_offset_TlsSlots = 0x1480; + enum TEB_offset_TlsExpansionSlots = 0x1780; + } + else + { + enum TEB_offset_TlsSlots = 0xE10; + enum TEB_offset_TlsExpansionSlots = 0xF94; + } + void* tlsSlotsAdr(void** teb) { return cast(void*) teb + TEB_offset_TlsSlots; } + ref void* tlsExpansionSlots(void** teb) { return *cast(void**)(cast(void*) teb + TEB_offset_TlsExpansionSlots); } + + import core.stdc.string; + void*[64] slots = void; + memcpy(slots.ptr, tlsSlotsAdr(curteb), slots.sizeof); + void* extraSlots = tlsExpansionSlots(curteb); + + memcpy(tlsSlotsAdr(curteb), tlsSlotsAdr(teb), slots.sizeof); + tlsExpansionSlots(curteb) = tlsExpansionSlots(teb); + dg(); + curteb[11] = curtlsarray; + + // copy the TLS slots back in case they have been changed in dg + memcpy(tlsSlotsAdr(teb), tlsSlotsAdr(curteb), slots.sizeof); + tlsExpansionSlots(teb) = tlsExpansionSlots(curteb); + + memcpy(tlsSlotsAdr(curteb), slots.ptr, slots.sizeof); + tlsExpansionSlots(curteb) = extraSlots; } } From 5dffd89ec4486c29498cf63a52c81c6fe6de422f Mon Sep 17 00:00:00 2001 From: qchikara Date: Wed, 4 May 2016 12:05:02 +0900 Subject: [PATCH 324/768] Fix Issue 15987 - core.sys.windows.msacm remains pseudo definitions modified constants for the buffer sizes used from some structs, whiche have been pseudo value(256). --- src/core/sys/windows/msacm.d | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/core/sys/windows/msacm.d b/src/core/sys/windows/msacm.d index b00900491b..66e3f4b25f 100644 --- a/src/core/sys/windows/msacm.d +++ b/src/core/sys/windows/msacm.d @@ -18,25 +18,19 @@ mixin DECLARE_HANDLE!("HACMDRIVERID"); mixin DECLARE_HANDLE!("HACMDRIVER"); alias HACMDRIVER* LPHACMDRIVER; -/* Comment from MinGW - found through experimentation - */ enum size_t ACMDRIVERDETAILS_SHORTNAME_CHARS = 32, ACMDRIVERDETAILS_LONGNAME_CHARS = 128, ACMDRIVERDETAILS_COPYRIGHT_CHARS = 80, - ACMDRIVERDETAILS_LICENSING_CHARS = 128; + ACMDRIVERDETAILS_LICENSING_CHARS = 128, + ACMDRIVERDETAILS_FEATURES_CHARS = 512; -/* Comment from MinGW - I don't know the right values for these macros - */ enum size_t - ACMFORMATDETAILS_FORMAT_CHARS = 256, - ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 256, - ACMDRIVERDETAILS_FEATURES_CHARS = 256; + ACMFORMATDETAILS_FORMAT_CHARS = 128, + ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 48; struct ACMFORMATDETAILSA { - DWORD cbStruct = ACMFORMATDETAILSA.sizeof; // are they? + DWORD cbStruct = ACMFORMATDETAILSA.sizeof; DWORD dwFormatIndex; DWORD dwFormatTag; DWORD fdwSupport; From 45966d07f45ad0e78e62979811cba98732668579 Mon Sep 17 00:00:00 2001 From: Oleg Nykytenko Date: Wed, 4 May 2016 13:24:21 +0300 Subject: [PATCH 325/768] Solaris: fix stdio issue for x64 OS. --- src/core/stdc/stdio.d | 57 +++++++++++++++++++++++++++++------------- src/core/stdc/wchar_.d | 15 +++++++++++ 2 files changed, 55 insertions(+), 17 deletions(-) diff --git a/src/core/stdc/stdio.d b/src/core/stdc/stdio.d index d7e2e1133b..7fb0a6e9da 100644 --- a/src/core/stdc/stdio.d +++ b/src/core/stdc/stdio.d @@ -175,7 +175,7 @@ else version ( FreeBSD ) long _mbstateL; } } -else version (Solaris) +else version( Solaris ) { enum { @@ -401,27 +401,50 @@ else version( FreeBSD ) /// alias shared(__sFILE) FILE; } -else version (Solaris) +else version( Solaris ) { + import core.stdc.wchar_ : __mbstate_t; + /// - alias c_long fpos_t; + alias mbstate_t = __mbstate_t; /// - struct _iobuf + alias c_long fpos_t; + + version (D_LP64) { - char* _ptr; - int _cnt; - char* _base; - char _flag; - char _magic; - ushort __flags; // __orientation:2 - // __ionolock:1 - // __seekable:1 - // __extendedfd:1 - // __xf_nocheck:1 - // __filler:10 + /// + struct _iobuf + { + char* _ptr; /* next character from/to here in buffer */ + char* _base; /* the buffer */ + char* _end; /* the end of the buffer */ + size_t _cnt; /* number of available characters in buffer */ + int _file; /* UNIX System file descriptor */ + int _flag; /* the state of the stream */ + ubyte[24] _lock; //rmutex_t _lock; /* lock for this structure */ + mbstate_t _state; /* mbstate_t */ + ubyte[32] __fill; /* filler to bring size to 128 bytes */ + } + } + else + { + /// + struct _iobuf + { + char* _ptr; + int _cnt; + char* _base; + char _flag; + char _magic; + ushort __flags; // __orientation:2 + // __ionolock:1 + // __seekable:1 + // __extendedfd:1 + // __xf_nocheck:1 + // __filler:10 + } } - /// alias shared(_iobuf) FILE; } @@ -646,7 +669,7 @@ else version( FreeBSD ) /// alias __stderrp stderr; } -else version (Solaris) +else version( Solaris ) { enum { diff --git a/src/core/stdc/wchar_.d b/src/core/stdc/wchar_.d index 48d9cc7342..89fe7258d1 100644 --- a/src/core/stdc/wchar_.d +++ b/src/core/stdc/wchar_.d @@ -40,6 +40,21 @@ version( CRuntime_Glibc ) ___value __value; } } +else version( Solaris ) +{ + /// + struct __mbstate_t + { + version (D_LP64) + { + long[4] __filler; + } + else + { + int[6] __filler; + } + } +} else { /// From 24395159ae1a4c52891fafbdf456df5afde8ea59 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 4 May 2016 22:50:25 +0200 Subject: [PATCH 326/768] core.sys.windows: Fix incorrect IID/GUID declarations These declarations were incorrectly changed in b785882f13da8c78a6f9fda4e5b1990e76e114e8. --- src/core/sys/windows/mswsock.d | 4 +- src/core/sys/windows/uuid.d | 8124 ++++++++++++++++---------------- 2 files changed, 4064 insertions(+), 4064 deletions(-) diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index 7b10977b7e..efa08dc7dd 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -111,10 +111,10 @@ extern(Windows) { /* WinNT3.51+ ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */ alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX; -enum GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; + const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX; -enum GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; + const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; } version(Win32_Winsock1) { diff --git a/src/core/sys/windows/uuid.d b/src/core/sys/windows/uuid.d index fe857ecfe1..eb9a3570a2 100644 --- a/src/core/sys/windows/uuid.d +++ b/src/core/sys/windows/uuid.d @@ -5,4066 +5,4066 @@ import core.sys.windows.basetyps; export extern(C) { -enum IID _DBBMKGUID = {0xF6304BB0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; -enum IID _DBCIDGUID = {0xFE284700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; -enum IID _GUID_NAMEONLY = {0xE8BF1170, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; -enum IID ARRAYID_PathProperties = {0x7ECBBA04, 0x2D97, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID BFID_GRAY_16 = {0xF9D6BC00, 0x449C, 0x11D0, [0x91, 0x8C, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; -enum IID BFID_GRAY_8 = {0xD93DE910, 0x449C, 0x11D0, [0x91, 0x8C, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; -enum IID BFID_MONOCHROME = {0xE436EB78, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; -enum IID BFID_RGB_24 = {0xE436EB7D, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; -enum IID BFID_RGB_32 = {0xE436EB7E, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; -enum IID BFID_RGB_4 = {0xE436EB79, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; -enum IID BFID_RGB_555 = {0xE436EB7C, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; -enum IID BFID_RGB_565 = {0xE436EB7B, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; -enum IID BFID_RGB_8 = {0xE436EB7A, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; -enum IID BFID_RGBA_32 = {0x773C9AC0, 0x3274, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; -enum IID BHID_LinkTargetItem = {0x3981E228, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; -enum IID BHID_SFObject = {0x3981E224, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; -enum IID BHID_SFUIObject = {0x3981E225, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; -enum IID BHID_SFViewObject = {0x3981E226, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; -enum IID BHID_Storage = {0x3981E227, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; -enum IID BHID_StorageEnum = {0x4621A4E3, 0xF0D6, 0x4773, [0x8A, 0x9C, 0x46, 0xE7, 0x7B, 0x17, 0x48, 0x40]}; -enum IID BHID_Stream = {0x1CEBB3AB, 0x7C10, 0x499A, [0xA4, 0x17, 0x92, 0xCA, 0x16, 0xC4, 0xCB, 0x83]}; -enum IID CATID_BrowsableShellExt = {0x00021490, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CATID_BrowseInPlace = {0x00021491, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CATID_ClusCfgCapabilities = {0x4653EEC4, 0x2788, 0x4EBD, [0xA8, 0x31, 0x7E, 0x0D, 0x9F, 0x82, 0xD6, 0xE7]}; -enum IID CATID_ClusCfgMemberSetChangeListener = {0x8A43EAD4, 0x10F1, 0x440D, [0x8D, 0xAA, 0x1F, 0xE3, 0x8D, 0x16, 0x98, 0xCD]}; -enum IID CATID_ClusCfgResourceTypes = {0x7C4CAE52, 0xCAC9, 0x499D, [0x82, 0xC6, 0xBC, 0x6A, 0x21, 0x77, 0xE5, 0x56]}; -enum IID CATID_ClusCfgStartupListeners = {0xDF406DB4, 0x7872, 0x4A99, [0xBB, 0x3C, 0x14, 0xA9, 0xC3, 0x39, 0x33, 0xD1]}; -enum IID CATID_CommBand = {0x00021494, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CATID_Control = {0x40FC6ED4, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; -enum IID CATID_DesignTimeUIActivatableControl = {0xF2BB56D1, 0xDB07, 0x11D1, [0xAA, 0x6B, 0x00, 0x60, 0x97, 0xDB, 0x95, 0x39]}; -enum IID CATID_DeskBand = {0x00021492, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CATID_DocObject = {0x40FC6ED8, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; -enum IID CATID_EnumClusCfgManagedResources = {0x02A34F88, 0xD31A, 0x4688, [0xBD, 0xDD, 0x38, 0xA7, 0x39, 0xE4, 0xF8, 0x9B]}; -enum IID CATID_InfoBand = {0x00021493, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CATID_Insertable = {0x40FC6ED3, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; -enum IID CATID_InternetAware = {0x0DE86A58, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID CATID_IsShortcut = {0x40FC6ED6, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; -enum IID CATID_MARSHALER = {0x00000003, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CATID_NeverShowExt = {0x40FC6ED7, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; -enum IID CATID_PersistsToFile = {0x0DE86A56, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID CATID_PersistsToMemory = {0x0DE86A55, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID CATID_PersistsToMoniker = {0x0DE86A51, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID CATID_PersistsToPropertyBag = {0x0DE86A57, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID CATID_PersistsToStorage = {0x0DE86A52, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID CATID_PersistsToStream = {0x0DE86A54, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID CATID_PersistsToStreamInit = {0x0DE86A53, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID CATID_Printable = {0x40FC6ED9, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; -enum IID CATID_Programmable = {0x40FC6ED5, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; -enum IID CATID_RequiresDataPathHost = {0x0DE86A50, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID CATID_SafeForInitializing = {0x7DD95802, 0x9882, 0x11CF, [0x9F, 0xA9, 0x00, 0xAA, 0x00, 0x6C, 0x42, 0xC4]}; -enum IID CATID_SafeForScripting = {0x7DD95801, 0x9882, 0x11CF, [0x9F, 0xA9, 0x00, 0xAA, 0x00, 0x6C, 0x42, 0xC4]}; -enum IID CGID_DocHostCommandHandler = {0xF38BC242, 0xB950, 0x11D1, [0x89, 0x18, 0x00, 0xC0, 0x4F, 0xC2, 0xC8, 0x36]}; -enum IID CGID_DownloadHost = {0xE0608728, 0xAE4C, 0x11D1, [0xBA, 0x40, 0x00, 0xC0, 0x4F, 0xB9, 0x2D, 0x79]}; -enum IID CGID_Explorer = {0x000214D0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CGID_ExplorerBarDoc = {0x000214D3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CGID_InternetExplorer = {0xEB7EED00, 0xF74D, 0x11D2, [0xBB, 0x7F, 0x00, 0x10, 0x4B, 0x35, 0xE7, 0xF9]}; -enum IID CGID_MSHTML = {0xDE4BA900, 0x59CA, 0x11CF, [0x95, 0x92, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID CGID_ShellDocView = {0x000214D1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CGID_ShellServiceObject = {0x000214D2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CGID_ShortCut = {0x93A68750, 0x951A, 0x11D1, [0x94, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; -enum IID CLSID_1 = {0xD34F1813, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_2 = {0xD34F1814, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_3 = {0xD34F1815, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_4 = {0xD34F1816, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_5 = {0xD34F1817, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_6 = {0xD34F1818, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_7 = {0xD34F1819, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_8 = {0xD34F181A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_9 = {0xD34F181B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_a = {0xD34F181C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_AboutProtocol = {0x3050F406, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_AccessControlEntry = {0xB75AC000, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID CLSID_AccessControlList = {0xB85EA052, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID CLSID_AccountDiscovery = {0x3DAB30ED, 0x8132, 0x40BF, [0xA8, 0xBA, 0x7B, 0x50, 0x57, 0xF0, 0xCD, 0x10]}; -enum IID CLSID_ACLCustomMRU = {0x6935DB93, 0x21E8, 0x4CCC, [0xBE, 0xB9, 0x9F, 0xE3, 0xC7, 0x7A, 0x29, 0x7A]}; -enum IID CLSID_ACLHistory = {0x00BB2764, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; -enum IID CLSID_ACListISF = {0x03C036F1, 0xA186, 0x11D0, [0x82, 0x4A, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83]}; -enum IID CLSID_ACLMRU = {0x6756A641, 0xDE71, 0x11D0, [0x83, 0x1B, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83]}; -enum IID CLSID_ACLMulti = {0x00BB2765, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; -enum IID CLSID_ActiveDesktop = {0x75048700, 0xEF1F, 0x11D0, [0x98, 0x88, 0x00, 0x60, 0x97, 0xDE, 0xAC, 0xF9]}; -enum IID CLSID_AdapterInfo = {0x6F9942C9, 0xC1B1, 0x4AB5, [0x93, 0xDA, 0x60, 0x58, 0x99, 0x1D, 0xC8, 0xF3]}; -enum IID CLSID_AddrControl = {0x00000348, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_AddressBarParser = {0xE0E11A09, 0x5CB8, 0x4B6C, [0x83, 0x32, 0xE0, 0x07, 0x20, 0xA1, 0x68, 0xF2]}; -enum IID CLSID_ADsDSOObject = {0x549365D0, 0xEC26, 0x11CF, [0x83, 0x10, 0x00, 0xAA, 0x00, 0xB5, 0x05, 0xDB]}; -enum IID CLSID_ADsSecurityUtility = {0xF270C64A, 0xFFB8, 0x4AE4, [0x85, 0xFE, 0x3A, 0x75, 0xE5, 0x34, 0x79, 0x66]}; -enum IID CLSID_ADSystemInfo = {0x50B6327F, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; -enum IID CLSID_AlgSetup = {0x27D0BCCC, 0x344D, 0x4287, [0xAF, 0x37, 0x0C, 0x72, 0xC1, 0x61, 0xC1, 0x4C]}; -enum IID CLSID_AllClasses = {0x00000330, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_AlphabeticalCategorizer = {0x3C2654C6, 0x7372, 0x4F6B, [0xB3, 0x10, 0x55, 0xD6, 0x12, 0x8F, 0x49, 0xD2]}; -enum IID CLSID_AnchorClick = {0x13D5413C, 0x33B9, 0x11D2, [0x95, 0xA7, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; -enum IID CLSID_AnimationComposerFactory = {0x332B2A56, 0xF86C, 0x47E7, [0x86, 0x02, 0xFC, 0x42, 0xAC, 0x8B, 0x99, 0x20]}; -enum IID CLSID_AnimationComposerSiteFactory = {0x16911A65, 0xD41D, 0x4431, [0x87, 0xF7, 0xE7, 0x57, 0xF4, 0xD0, 0x3B, 0xD8]}; -enum IID CLSID_ApplicationGatewayServices = {0xF8ADE1D3, 0x49DF, 0x4B75, [0x90, 0x05, 0xEF, 0x95, 0x08, 0xE6, 0xA3, 0x37]}; -enum IID CLSID_AutoComplete = {0x00BB2763, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; -enum IID CLSID_AutoDiscoveryProvider = {0xC4F3D5BF, 0x4809, 0x44E3, [0x84, 0xA4, 0x36, 0x8B, 0x6B, 0x33, 0xB0, 0xB4]}; -enum IID CLSID_AutoplayForSlideShow = {0x00E7B358, 0xF65B, 0x4DCF, [0x83, 0xDF, 0xCD, 0x02, 0x6B, 0x94, 0xBF, 0xD4]}; -enum IID CLSID_b = {0xD34F181D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_BackgroundCopyManager = {0x4991D34B, 0x80A1, 0x4291, [0x83, 0xB6, 0x33, 0x28, 0x36, 0x6B, 0x90, 0x97]}; -enum IID CLSID_BackgroundCopyManager1_5 = {0xF087771F, 0xD74F, 0x4C1A, [0xBB, 0x8A, 0xE1, 0x6A, 0xCA, 0x91, 0x24, 0xEA]}; -enum IID CLSID_BackgroundCopyQMgr = {0x69AD4AEE, 0x51BE, 0x439B, [0xA9, 0x2C, 0x86, 0xAE, 0x49, 0x0E, 0x8B, 0x30]}; -enum IID CLSID_BackLink = {0xFCBF906F, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_BasicImageEffects = {0x16B280C8, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID CLSID_BasicImageEffectsPP = {0x16B280C9, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID CLSID_BlockFormats = {0x3050F831, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_BridgeTerminal = {0x8EBAE7A3, 0x8943, 0x11D1, [0x96, 0xB8, 0x00, 0xC0, 0x4F, 0xB6, 0xE8, 0x66]}; -enum IID CLSID_c = {0xD34F181E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_CAccPropServices = {0xB5F8350B, 0x0548, 0x48B1, [0xA6, 0xEE, 0x88, 0xBD, 0x00, 0xB4, 0xA5, 0xE7]}; -enum IID CLSID_CActiveIMM = {0x4955DD33, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; -enum IID CLSID_CAnchorBrowsePropertyPage = {0x3050F3BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CaseIgnoreList = {0x15F88A55, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_CCheckBox = {0x3050F686, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CColorPropPage = {0x0BE35201, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; -enum IID CLSID_CCombobox = {0x3050F678, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CDBurn = {0xFBEB8A05, 0xBEEE, 0x4442, [0x80, 0x4E, 0x40, 0x9D, 0x6C, 0x45, 0x15, 0xE9]}; -enum IID CLSID_CDebugDocumentHelper = {0x83B8BCA6, 0x687C, 0x11D0, [0xA4, 0x05, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; -enum IID CLSID_CDeviceRect = {0x3050F6D4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CDirect3DRM = {0x4516EC41, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID CLSID_CDirect3DRMAnimation = {0x4FA35698, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMAnimationSet = {0x4FA35699, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMClippedVisual = {0x5434E72D, 0x6D66, 0x11D1, [0xBB, 0x0B, 0x00, 0x00, 0xF8, 0x75, 0x86, 0x5A]}; -enum IID CLSID_CDirect3DRMDevice = {0x4FA3568E, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMFace = {0x4FA35693, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMFrame = {0x4FA35690, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMFrameInterpolator = {0x0DE9EAA2, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID CLSID_CDirect3DRMLight = {0x4FA35694, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMLightInterpolator = {0x0DE9EAA6, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID CLSID_CDirect3DRMMaterial = {0x4FA35697, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMMaterialInterpolato = {0x0DE9EAA7, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID CLSID_CDirect3DRMMesh = {0x4FA35691, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMMeshBuilder = {0x4FA35692, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMMeshInterpolator = {0x0DE9EAA3, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID CLSID_CDirect3DRMProgressiveMesh = {0x4516EC40, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID CLSID_CDirect3DRMShadow = {0x4FA3569B, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMTexture = {0x4FA35695, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMTextureInterpolator = {0x0DE9EAA8, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID CLSID_CDirect3DRMUserVisual = {0x4FA3569A, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMViewport = {0x4FA3568F, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirect3DRMViewportInterpolato = {0x0DE9EAA1, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID CLSID_CDirect3DRMWrap = {0x4FA35696, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID CLSID_CDirectXFile = {0x4516EC43, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID CLSID_CDLAgent = {0x7D559C10, 0x9FE9, 0x11D0, [0x93, 0xF7, 0x00, 0xAA, 0x00, 0x59, 0xCE, 0x02]}; -enum IID CLSID_CdlProtocol = {0x3DD53D40, 0x7B8B, 0x11D0, [0xB0, 0x13, 0x00, 0xAA, 0x00, 0x59, 0xCE, 0x02]}; -enum IID CLSID_CDocBrowsePropertyPage = {0x3050F3B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CDownloadBehavior = {0x3050F5BE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CEnroll = {0x43F8F289, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; -enum IID CLSID_CEventObj = {0x3050F48A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CFontPropPage = {0x0BE35200, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; -enum IID CLSID_CFSIconOverlayManager = {0x63B51F81, 0xC868, 0x11D0, [0x99, 0x9C, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; -enum IID CLSID_ChannelAgent = {0xE3A8BDE6, 0xABCE, 0x11D0, [0xBC, 0x4B, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; -enum IID CLSID_ChannelMgr = {0xB3CDAE90, 0xD170, 0x11D0, [0x80, 0x2B, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; -enum IID CLSID_CHeaderFooter = {0x3050F6CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CHtmlArea = {0x3050F64F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CIEOptionElement = {0x3050F698, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CIESelectElement = {0x3050F688, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CImageBrowsePropertyPage = {0x3050F3B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_ClassInstallFilter = {0x32B533BB, 0xEDAE, 0x11D0, [0xBD, 0x5A, 0x00, 0xAA, 0x00, 0xB9, 0x2A, 0xF1]}; -enum IID CLSID_CLayoutRect = {0x3050F664, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_ClientCaps = {0x7E8BC44E, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; -enum IID CLSID_ClusAppWiz = {0x24F97150, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; -enum IID CLSID_ClusCfgAsyncEvictCleanup = {0x08F35A72, 0xD7C4, 0x42F4, [0xBC, 0x81, 0x51, 0x88, 0xE1, 0x9D, 0xFA, 0x39]}; -enum IID CLSID_ClusCfgEvictCleanup = {0x32152BE9, 0xDE8C, 0x4D0F, [0x81, 0xB0, 0xBC, 0xE5, 0xD1, 0x1E, 0xCB, 0x00]}; -enum IID CLSID_ClusCfgResTypeGenScript = {0xD513C4F4, 0x1D34, 0x44A3, [0x83, 0xD4, 0x81, 0x26, 0x51, 0xDB, 0x89, 0x18]}; -enum IID CLSID_ClusCfgResTypeMajorityNodeSet = {0xB6870B44, 0x0BDF, 0x4B46, [0xAC, 0x1F, 0x6C, 0x69, 0x1B, 0x62, 0x2E, 0xDF]}; -enum IID CLSID_ClusCfgResTypeServices = {0x6A370489, 0xBB52, 0x4727, [0xB7, 0x40, 0x08, 0xF4, 0x94, 0x16, 0x34, 0x78]}; -enum IID CLSID_ClusCfgStartupNotify = {0x105EEEB6, 0x32FD, 0x4EA9, [0x89, 0x12, 0x84, 0x3A, 0x7F, 0xF3, 0xCA, 0x2D]}; -enum IID CLSID_ClusCfgWizard = {0x1919C4FE, 0x6F46, 0x4027, [0x97, 0x7D, 0x0E, 0xF1, 0xC8, 0xF2, 0x63, 0x72]}; -enum IID CLSID_ClusterConfigurationType = {0xBF3768C2, 0xE0E5, 0x448F, [0x95, 0x2B, 0x25, 0xD4, 0x33, 0x2D, 0xEF, 0xA3]}; -enum IID CLSID_CMimeTypes = {0x3050F3FE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CMLangConvertCharset = {0xD66D6F99, 0xCDAA, 0x11D0, [0xB8, 0x22, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; -enum IID CLSID_CMLangString = {0xC04D65CF, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; -enum IID CLSID_CMultiLanguage = {0x275C23E2, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; -enum IID CLSID_CNetCfg = {0x5B035261, 0x40F9, 0x11D1, [0xAA, 0xEC, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID CLSID_CoDitherToRGB8 = {0xA860CE50, 0x3910, 0x11D0, [0x86, 0xFC, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; -enum IID CLSID_CoMapMIMEToCLSID = {0x30C3B080, 0x30FB, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; -enum IID CLSID_ComBinding = {0x00000328, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_CommonQuery = {0x83BC5EC0, 0x6F2A, 0x11D0, [0xA1, 0xC4, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; -enum IID CLSID_CompositePP = {0x25B33660, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; -enum IID CLSID_ConnectionCommonUi = {0x7007ACD1, 0x3202, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID CLSID_ConnectionManager = {0xBA126AD1, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID CLSID_ConnectionManager2 = {0xBA126AE5, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID CLSID_ControlPanel = {0x21EC2020, 0x3AEA, 0x1069, [0xA2, 0xDD, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; -enum IID CLSID_ConvertVBX = {0xFB8F0822, 0x0164, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; -enum IID CLSID_ConvolvePP = {0x25B33661, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; -enum IID CLSID_COpsProfile = {0x3050F402, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CoSniffStream = {0x6A01FDA0, 0x30DF, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; -enum IID CLSID_CPersistDataPeer = {0x3050F487, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CPersistHistory = {0x3050F4C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CPersistShortcut = {0x3050F4C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CPersistSnapshot = {0x3050F4C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CPersistUserData = {0x3050F48E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CPicturePropPage = {0x0BE35202, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; -enum IID CLSID_CPlugins = {0x3050F3FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CRadioButton = {0x3050F69C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CrBarn = {0xC3BDF740, 0x0B58, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrBarnPP = {0xFCAD7436, 0xF151, 0x4110, [0xB9, 0x7E, 0x32, 0xBD, 0x60, 0x7F, 0xBD, 0xB8]}; -enum IID CLSID_CrBlindPP = {0x213052C1, 0x100D, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; -enum IID CLSID_CrBlinds = {0x00C429C0, 0x0BA9, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrBlur = {0x7312498D, 0xE87A, 0x11D1, [0x81, 0xE0, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID CLSID_CrBlurPP = {0x623E287E, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; -enum IID CLSID_CrEmboss = {0xF515306D, 0x0156, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID CLSID_CrEngrave = {0xF515306E, 0x0156, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID CLSID_CrInset = {0x93073C40, 0x0BA5, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrIris = {0x3F69F351, 0x0379, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrIrisPP = {0x80DE22C4, 0x0F44, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; -enum IID CLSID_CrRadialWipe = {0x424B71AF, 0x0695, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrRadialWipePP = {0x33D932E0, 0x0F48, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; -enum IID CLSID_CrSlide = {0x810E402F, 0x056B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrSlidePP = {0xCC8CEDE1, 0x1003, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; -enum IID CLSID_CrSpiral = {0xACA97E00, 0x0C7D, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrSpiralPP = {0xC6A4FE81, 0x1022, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; -enum IID CLSID_CrStretch = {0x7658F2A2, 0x0A83, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrStretchPP = {0x15FB95E0, 0x0F77, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; -enum IID CLSID_CrWheel = {0x5AE1DAE0, 0x1461, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrWheelPP = {0xFA9F6180, 0x1464, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrZigzag = {0xE6E73D20, 0x0C8A, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_CrZigzagPP = {0x1559A3C1, 0x102B, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; -enum IID CLSID_CScriptErrorList = {0xEFD01300, 0x160F, 0x11D2, [0xBB, 0x2E, 0x00, 0x80, 0x5F, 0xF7, 0xEF, 0xCA]}; -enum IID CLSID_CScrollBar = {0x3050F68A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CSliderBar = {0x3050F68E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CSpinButton = {0x3050F68C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CTemplatePrinter = {0x3050F6B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_CUrlHistory = {0x3C374A40, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; -enum IID CLSID_CURLSearchHook = {0xCFBFAE00, 0x17A6, 0x11D0, [0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97]}; -enum IID CLSID_CurrentUserClasses = {0x00000332, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_CUtilityButton = {0x3050F6B0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_d = {0xD34F181F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_DAArray = {0x9CDE7340, 0x3C20, 0x11D0, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; -enum IID CLSID_DABbox2 = {0x50B4791E, 0x4731, 0x11D0, [0x89, 0x12, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; -enum IID CLSID_DABbox3 = {0x4A933703, 0xE36F, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID CLSID_DABehavior = {0xC46C1BF2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DABoolean = {0x25B0F91D, 0xD23D, 0x11D0, [0x9B, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID CLSID_DACamera = {0xC46C1BD9, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAColor = {0xC46C1BC9, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DADashStyle = {0x9CADDC0C, 0xAD56, 0x11D1, [0x9F, 0xF8, 0x00, 0xC0, 0x4F, 0xA3, 0x21, 0x95]}; -enum IID CLSID_DAEndStyle = {0xFC54BEAB, 0x5B12, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; -enum IID CLSID_DAEvent = {0x3E2487C4, 0x8709, 0x11D0, [0xB1, 0x77, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; -enum IID CLSID_DAFontStyle = {0x3F3DA01A, 0x4705, 0x11D0, [0x87, 0x10, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; -enum IID CLSID_DAGeometry = {0xC46C1BDB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAImage = {0xC46C1BCB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAImportationResult = {0x283807B3, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; -enum IID CLSID_DAJoinStyle = {0xFC54BEAA, 0x5B12, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; -enum IID CLSID_DALineStyle = {0x283807B8, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; -enum IID CLSID_DAMatte = {0xC46C1BC3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAMicrophone = {0xC46C1BE3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAMontage = {0xC46C1BD7, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DANumber = {0xC46C1BC7, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAPair = {0xBC0BFD34, 0xD21D, 0x11D0, [0x93, 0x85, 0x00, 0xC0, 0x4F, 0xB6, 0xBD, 0x36]}; -enum IID CLSID_DAPath2 = {0xC46C1BCF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAPickableResult = {0x34F681D0, 0x3640, 0x11CF, [0x92, 0x94, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; -enum IID CLSID_DAPoint2 = {0xC46C1BD5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAPoint3 = {0xC46C1BE5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DarwinAppPublisher = {0xCFCCC7A0, 0xA282, 0x11D1, [0x90, 0x82, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; -enum IID CLSID_DASound = {0xC46C1BD1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAStatics = {0xC46C1BF3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAString = {0xC46C1BD3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DataChannel = {0xBBB36F15, 0x408D, 0x4056, [0x8C, 0x27, 0x92, 0x08, 0x43, 0xD4, 0x0B, 0xE5]}; -enum IID CLSID_DATransform2 = {0xC46C1BDF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DATransform3 = {0xC46C1BC5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DATuple = {0x283807B7, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; -enum IID CLSID_DAUserData = {0x283807B4, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; -enum IID CLSID_DAVector2 = {0xC46C1BE1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAVector3 = {0xC46C1BC0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAView = {0x960D8EFF, 0xE494, 0x11D1, [0xAB, 0x75, 0x00, 0xC0, 0x4F, 0xD9, 0x2B, 0x6B]}; -enum IID CLSID_DAViewerControl = {0xC46C1BEB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DAViewerControlWindowed = {0xC46C1BF1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID CLSID_DCOMAccessControl = {0x0000031D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_DebugHelper = {0x0BFCC060, 0x8C1D, 0x11D0, [0xAC, 0xCD, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; -enum IID CLSID_DeCompMimeFilter = {0x8F6B0360, 0xB80D, 0x11D0, [0xA9, 0xB3, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; -enum IID CLSID_DefaultDebugSessionProvider = {0x834128A2, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID CLSID_DirectDraw = {0xD7B70EE0, 0x4340, 0x11CF, [0xB0, 0x63, 0x00, 0x20, 0xAF, 0xC2, 0xCD, 0x35]}; -enum IID CLSID_DirectDrawClipper = {0x593817A0, 0x7DB3, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; -enum IID CLSID_DirectDrawFactory2 = {0xB9DC4790, 0x4AF1, 0x11D1, [0x8C, 0x4C, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; -enum IID CLSID_DirectInput = {0x25E609E0, 0xB259, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID CLSID_DirectInputDevice = {0x25E609E1, 0xB259, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID CLSID_DirectMusic = {0x636B9F10, 0x0C7D, 0x11D1, [0x95, 0xB2, 0x00, 0x20, 0xAF, 0xDC, 0x74, 0x21]}; -enum IID CLSID_DirectMusicBand = {0x79BA9E00, 0xB6EE, 0x11D1, [0x86, 0xBE, 0x00, 0xC0, 0x4F, 0xBF, 0x8F, 0xEF]}; -enum IID CLSID_DirectMusicBandTrack = {0xD2AC2894, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicChordMap = {0xD2AC288F, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicChordMapTrack = {0xD2AC2896, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicChordTrack = {0xD2AC288B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicCollection = {0x480FF4B0, 0x28B2, 0x11D1, [0xBE, 0xF7, 0x00, 0xC0, 0x4F, 0xBF, 0x8F, 0xEF]}; -enum IID CLSID_DirectMusicCommandTrack = {0xD2AC288C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicComposer = {0xD2AC2890, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicGraph = {0xD2AC2884, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicLoader = {0xD2AC2892, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicMotifTrack = {0xD2AC288E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicMuteTrack = {0xD2AC2898, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicPerformance = {0xD2AC2881, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicSegment = {0xD2AC2882, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicSegmentState = {0xD2AC2883, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicSeqTrack = {0xD2AC2886, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicSignPostTrack = {0xF17E8672, 0xC3B4, 0x11D1, [0x87, 0x0B, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicStyle = {0xD2AC288A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicStyleTrack = {0xD2AC288D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicSynth = {0x58C2B4D0, 0x46E7, 0x11D1, [0x89, 0xAC, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; -enum IID CLSID_DirectMusicSysExTrack = {0xD2AC2887, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicTempoTrack = {0xD2AC2885, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectMusicTimeSigTrack = {0xD2AC2888, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID CLSID_DirectPlay = {0xD1EB6D20, 0x8923, 0x11D0, [0x9D, 0x97, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; -enum IID CLSID_DirectPlayLobby = {0x2FE8F810, 0xB2A5, 0x11D0, [0xA7, 0x87, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; -enum IID CLSID_DirectSound = {0x47D4D946, 0x62E8, 0x11CF, [0x93, 0xBC, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID CLSID_DirectSoundCapture = {0xB0210780, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; -enum IID CLSID_DispatchMapper = {0xE9225296, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID CLSID_DNWithBinary = {0x7E99C0A3, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; -enum IID CLSID_DNWithString = {0x334857CC, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; -enum IID CLSID_DocFileColumnProvider = {0x24F14F01, 0x7B1C, 0x11D1, [0x83, 0x8F, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; -enum IID CLSID_DocHostUIHandler = {0x7057E952, 0xBD1B, 0x11D1, [0x89, 0x19, 0x00, 0xC0, 0x4F, 0xC2, 0xC8, 0x36]}; -enum IID CLSID_DOMChildrenCollection = {0x3050F5AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_DOMDocument = {0x2933BF90, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID CLSID_DOMFreeThreadedDocument = {0x2933BF91, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID CLSID_DragDropHelper = {0x4657278A, 0x411B, 0x11D2, [0x83, 0x9A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; -enum IID CLSID_DriveSizeCategorizer = {0x94357B53, 0xCA29, 0x4B78, [0x83, 0xAE, 0xE8, 0xFE, 0x74, 0x09, 0x13, 0x4F]}; -enum IID CLSID_DriveTypeCategorizer = {0xB0A8F3CF, 0x4333, 0x4BAB, [0x88, 0x73, 0x1C, 0xCB, 0x1C, 0xAD, 0xA4, 0x8B]}; -enum IID CLSID_DsDisplaySpecifier = {0x1AB4A8C0, 0x6A0B, 0x11D2, [0xAD, 0x49, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; -enum IID CLSID_DsDomainTreeBrowser = {0x1698790A, 0xE2B4, 0x11D0, [0xB0, 0xB1, 0x00, 0xC0, 0x4F, 0xD8, 0xDC, 0xA6]}; -enum IID CLSID_DsFindAdvanced = {0x83EE3FE3, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; -enum IID CLSID_DsFindComputer = {0x16006700, 0x87AD, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; -enum IID CLSID_DsFindContainer = {0xC1B3CBF2, 0x886A, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; -enum IID CLSID_DsFindDomainController = {0x538C7B7E, 0xD25E, 0x11D0, [0x97, 0x42, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; -enum IID CLSID_DsFindFrsMembers = {0x94CE4B18, 0xB3D3, 0x11D1, [0xB9, 0xB4, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xB0]}; -enum IID CLSID_DsFindObjects = {0x83EE3FE1, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; -enum IID CLSID_DsFindPeople = {0x83EE3FE2, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; -enum IID CLSID_DsFindPrinter = {0xB577F070, 0x7EE2, 0x11D0, [0x91, 0x3F, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; -enum IID CLSID_DsFindVolume = {0xC1B3CBF1, 0x886A, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; -enum IID CLSID_DsFolderProperties = {0x9E51E0D0, 0x6E0F, 0x11D2, [0x96, 0x01, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; -enum IID CLSID_DsPropertyPages = {0x0D45D530, 0x764B, 0x11D0, [0xA1, 0xCA, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; -enum IID CLSID_DsQuery = {0x8A23E65E, 0x31C2, 0x11D0, [0x89, 0x1C, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; -enum IID CLSID_DWbemClassObject = {0x64AB3751, 0x12BC, 0x11D1, [0x9E, 0x61, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID CLSID_DWbemContext = {0x752FF212, 0xF7B7, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID CLSID_DWbemLocator = {0xCB7CA032, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID CLSID_DX2D = {0x473AA80B, 0x4577, 0x11D1, [0x81, 0xA8, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID CLSID_DXFade = {0x16B280C5, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID CLSID_DXGradient = {0xC6365470, 0xF667, 0x11D1, [0x90, 0x67, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID CLSID_DXLUTBuilder = {0x1E54333B, 0x2A00, 0x11D1, [0x81, 0x98, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID CLSID_DXRasterizer = {0x8652CE55, 0x9E80, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID CLSID_DXSurface = {0x0E890F83, 0x5F79, 0x11D1, [0x90, 0x43, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID CLSID_DXSurfaceModifier = {0x3E669F1D, 0x9C23, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID CLSID_DXTAlpha = {0xADC6CB82, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID CLSID_DXTAlphaImageLoader = {0x0C7EFBDE, 0x0303, 0x4C6F, [0xA4, 0xF7, 0x31, 0xFA, 0x2B, 0xE5, 0xE3, 0x97]}; -enum IID CLSID_DXTAlphaImageLoaderPP = {0x8C80CE2D, 0x850D, 0x47DA, [0x8E, 0xCD, 0x55, 0x02, 0x35, 0x62, 0xD1, 0x67]}; -enum IID CLSID_DXTAlphaPP = {0xD687A7E0, 0x4BA4, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; -enum IID CLSID_DXTaskManager = {0x4CB26C03, 0xFF93, 0x11D0, [0x81, 0x7E, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID CLSID_DXTBarn = {0xEC9BA17D, 0x60B5, 0x462B, [0xA6, 0xD8, 0x14, 0xB8, 0x90, 0x57, 0xE2, 0x2A]}; -enum IID CLSID_DXTBlinds = {0x9A4A4A51, 0xFB3A, 0x4F4B, [0x9B, 0x57, 0xA2, 0x91, 0x2A, 0x28, 0x97, 0x69]}; -enum IID CLSID_DXTCheckerBoard = {0xB3EE7802, 0x8224, 0x4787, [0xA1, 0xEA, 0xF0, 0xDE, 0x16, 0xDE, 0xAB, 0xD3]}; -enum IID CLSID_DXTCheckerBoardPP = {0xCBF47525, 0x98D2, 0x45EA, [0xB8, 0x43, 0xFD, 0x21, 0x3D, 0x93, 0x2B, 0x10]}; -enum IID CLSID_DXTChroma = {0x421516C1, 0x3CF8, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID CLSID_DXTChromaPP = {0xEC7E0760, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; -enum IID CLSID_DXTComposite = {0x9A43A844, 0x0831, 0x11D1, [0x81, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID CLSID_DXTConvolution = {0x2BC0EF29, 0xE6BA, 0x11D1, [0x81, 0xDD, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID CLSID_DXTDropShadow = {0xADC6CB86, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID CLSID_DXTDropShadowPP = {0xEC7E0761, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; -enum IID CLSID_DXTFilter = {0x385A91BC, 0x1E8A, 0x4E4A, [0xA7, 0xA6, 0xF4, 0xFC, 0x1E, 0x6C, 0xA1, 0xBD]}; -enum IID CLSID_DXTFilterBehavior = {0x649EEC1E, 0xB579, 0x4E8C, [0xBB, 0x3B, 0x49, 0x97, 0xF8, 0x42, 0x65, 0x36]}; -enum IID CLSID_DXTFilterCollection = {0xA7EE7F34, 0x3BD1, 0x427F, [0x92, 0x31, 0xF9, 0x41, 0xE9, 0xB7, 0xE1, 0xFE]}; -enum IID CLSID_DXTFilterFactory = {0x81397204, 0xF51A, 0x4571, [0x8D, 0x7B, 0xDC, 0x03, 0x05, 0x21, 0xAA, 0xBD]}; -enum IID CLSID_DXTGlow = {0x9F8E6421, 0x3D9B, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID CLSID_DXTGlowPP = {0xEC7E0764, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; -enum IID CLSID_DXTGradientD = {0x623E2882, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; -enum IID CLSID_DXTGradientWipe = {0xB96F67A2, 0x30C2, 0x47E8, [0xBD, 0x85, 0x70, 0xA2, 0xC9, 0x48, 0xB5, 0x0F]}; -enum IID CLSID_DXTICMFilter = {0xA1BFB370, 0x5A9F, 0x4429, [0xBB, 0x72, 0xB1, 0x3E, 0x2F, 0xEA, 0xED, 0xEF]}; -enum IID CLSID_DXTICMFilterPP = {0x1958FB12, 0x31E6, 0x47E5, [0xAA, 0x49, 0xB2, 0x3D, 0x12, 0xC8, 0x53, 0xE6]}; -enum IID CLSID_DXTInset = {0x76F363F2, 0x7E9F, 0x4ED7, [0xA6, 0xA7, 0xEE, 0x30, 0x35, 0x1B, 0x66, 0x28]}; -enum IID CLSID_DXTIris = {0x049F2CE6, 0xD996, 0x4721, [0x89, 0x7A, 0xDB, 0x15, 0xCE, 0x9E, 0xB7, 0x3D]}; -enum IID CLSID_DXTLabel = {0x54702535, 0x2606, 0x11D1, [0x99, 0x9C, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; -enum IID CLSID_DXTLight = {0xF9EFBEC2, 0x4302, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID CLSID_DXTLightPP = {0x694AF25F, 0x124D, 0x11D3, [0x91, 0xD5, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID CLSID_DXTMaskFilter = {0x3A04D93B, 0x1EDD, 0x4F3F, [0xA3, 0x75, 0xA0, 0x3E, 0xC1, 0x95, 0x72, 0xC4]}; -enum IID CLSID_DXTMatrix = {0x4ABF5A06, 0x5568, 0x4834, [0xBE, 0xE3, 0x32, 0x7A, 0x6D, 0x95, 0xA6, 0x85]}; -enum IID CLSID_DXTMatrixPP = {0xC591103A, 0xB3A8, 0x4D47, [0xA3, 0xF7, 0x2A, 0xEE, 0xE4, 0xB8, 0x01, 0x3F]}; -enum IID CLSID_DXTMetaBurnFilm = {0x107045D1, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaCenterPeel = {0xAA0D4D0C, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID CLSID_DXTMetaColorFade = {0x2A54C908, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaFlowMotion = {0x2A54C90B, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaGriddler = {0x2A54C911, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaGriddler2 = {0x2A54C913, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaJaws = {0x2A54C904, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaLightWipe = {0x107045C8, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaLiquid = {0xAA0D4D0A, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID CLSID_DXTMetaPageTurn = {0xAA0D4D08, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID CLSID_DXTMetaPeelPiece = {0xAA0D4D10, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID CLSID_DXTMetaPeelSmall = {0xAA0D4D0E, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID CLSID_DXTMetaPeelSplit = {0xAA0D4D12, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID CLSID_DXTMetaRadialScaleWipe = {0x107045CA, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaRipple = {0xAA0D4D03, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID CLSID_DXTMetaRoll = {0x9C61F46E, 0x0530, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID CLSID_DXTMetaThreshold = {0x2A54C915, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaTwister = {0x107045CF, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaVacuum = {0x2A54C90D, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaWater = {0x107045C5, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaWhiteOut = {0x107045CC, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID CLSID_DXTMetaWormHole = {0x0E6AE022, 0x0C83, 0x11D2, [0x8C, 0xD4, 0x00, 0x10, 0x4B, 0xC7, 0x5D, 0x9A]}; -enum IID CLSID_DXTMotionBlur = {0xDD13DE77, 0xD3BA, 0x42D4, [0xB5, 0xC6, 0x77, 0x45, 0xFA, 0x4E, 0x2D, 0x4B]}; -enum IID CLSID_DXTMotionBlurPP = {0x926433E1, 0x7F8F, 0x4BC6, [0xBE, 0xC4, 0x8C, 0x12, 0x6C, 0x6B, 0x7D, 0xC4]}; -enum IID CLSID_DXTRadialWipe = {0x164484A9, 0x35D9, 0x4FB7, [0x9F, 0xAB, 0x48, 0x27, 0x3B, 0x96, 0xAA, 0x1D]}; -enum IID CLSID_DXTRandomBars = {0x2E7700B7, 0x27C4, 0x437F, [0x9F, 0xBF, 0x1E, 0x8B, 0xE2, 0x81, 0x75, 0x66]}; -enum IID CLSID_DXTRandomBarsPP = {0xE3E6AE11, 0x7FDC, 0x40C4, [0xAF, 0xBF, 0x1D, 0xCE, 0xA8, 0x28, 0x62, 0xCC]}; -enum IID CLSID_DXTRandomDissolve = {0xF7F4A1B6, 0x8E87, 0x452F, [0xA2, 0xD7, 0x30, 0x77, 0xF5, 0x08, 0xDB, 0xC0]}; -enum IID CLSID_DXTransformFactory = {0xD1FE6762, 0xFC48, 0x11D0, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; -enum IID CLSID_DXTRedirect = {0x42B07B28, 0x2280, 0x4937, [0xB0, 0x35, 0x02, 0x93, 0xFB, 0x81, 0x27, 0x81]}; -enum IID CLSID_DXTRevealTrans = {0xE31E87C4, 0x86EA, 0x4940, [0x9B, 0x8A, 0x5B, 0xD5, 0xD1, 0x79, 0xA7, 0x37]}; -enum IID CLSID_DXTScale = {0x555278E2, 0x05DB, 0x11D1, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; -enum IID CLSID_DXTShadow = {0xE71B4063, 0x3E59, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID CLSID_DXTShadowPP = {0xEC7E0765, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; -enum IID CLSID_DXTSlide = {0xD1C5A1E7, 0xCC47, 0x4E32, [0xBD, 0xD2, 0x4B, 0x3C, 0x5F, 0xC5, 0x0A, 0xF5]}; -enum IID CLSID_DXTSpiral = {0x4A03DCB9, 0x6E17, 0x4A39, [0x88, 0x45, 0x4E, 0xE7, 0xDC, 0x53, 0x31, 0xA5]}; -enum IID CLSID_DXTStretch = {0xF088DE73, 0xBDD0, 0x4E3C, [0x81, 0xF8, 0x6D, 0x32, 0xF4, 0xFE, 0x9D, 0x28]}; -enum IID CLSID_DXTStrips = {0x63A4B1FC, 0x259A, 0x4A5B, [0x81, 0x29, 0xA8, 0x3B, 0x8C, 0x9E, 0x6F, 0x4F]}; -enum IID CLSID_DXTStripsPP = {0xFEC0B7EE, 0x7AEC, 0x4067, [0x9E, 0xE1, 0xFA, 0xCF, 0xB7, 0xCE, 0x9A, 0xF9]}; -enum IID CLSID_DXTWave = {0xADC6CB88, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID CLSID_DXTWavePP = {0xF12456C0, 0x4C9E, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; -enum IID CLSID_DXTWipe = {0xAF279B30, 0x86EB, 0x11D1, [0x81, 0xBF, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID CLSID_DXTWipePP = {0x7FFE4D08, 0xFBFD, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; -enum IID CLSID_DXTZigzag = {0x23E26328, 0x3928, 0x40F2, [0x95, 0xE5, 0x93, 0xCA, 0xD6, 0x90, 0x16, 0xEB]}; -enum IID CLSID_EAPOLManager = {0xBA126AE4, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID CLSID_Email = {0x8F92A857, 0x478E, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_EnumAdapterInfo = {0x6F9942CA, 0xC1B1, 0x4AB5, [0x93, 0xDA, 0x60, 0x58, 0x99, 0x1D, 0xC8, 0xF3]}; -enum IID CLSID_EVENTQUEUE = {0x6E0FF466, 0x339E, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; -enum IID CLSID_EXTENDEDERRORINFO = {0xC8B522CF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID CLSID_FadePP = {0x16B280C6, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID CLSID_FaxNumber = {0xA5062215, 0x4681, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_FilePlaybackTerminal = {0x0CB9914C, 0x79CD, 0x47DC, [0xAD, 0xB0, 0x32, 0x7F, 0x47, 0xCE, 0xFB, 0x20]}; -enum IID CLSID_FileProtocol = {0x79EAC9E7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_FileRecordingTerminal = {0x521F3D06, 0xC3D0, 0x4511, [0x86, 0x17, 0x86, 0xB9, 0xA7, 0x83, 0xDA, 0x77]}; -enum IID CLSID_FileRecordingTrack = {0xBF14A2E4, 0xE88B, 0x4EF5, [0x97, 0x40, 0x5A, 0xC5, 0xD0, 0x22, 0xF8, 0xC9]}; -enum IID CLSID_FileSearchBand = {0xC4EE31F3, 0x4768, 0x11D2, [0xBE, 0x5C, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; -enum IID CLSID_FileSysColumnProvider = {0x0D2E74C4, 0x3C34, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; -enum IID CLSID_FileTerminal = {0xAAF578F1, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID CLSID_FolderShortcut = {0x0AFACED1, 0xE828, 0x11D1, [0x91, 0x87, 0xB5, 0x32, 0xF1, 0xE9, 0x57, 0x5D]}; -enum IID CLSID_FolderViewHost = {0x20B1CB23, 0x6968, 0x4EB9, [0xB7, 0xD4, 0xA6, 0x6D, 0x00, 0xD0, 0x7C, 0xEE]}; -enum IID CLSID_FontNames = {0x3050F83A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_FramesCollection = {0x3050F7F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_FreeSpaceCategorizer = {0xB5607793, 0x24AC, 0x44C7, [0x82, 0xE2, 0x83, 0x17, 0x26, 0xAA, 0x6C, 0xB7]}; -enum IID CLSID_FtpProtocol = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_GblComponentCategoriesMgr = {0x0002E006, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_GLOBAL_BROADCAST = {0xD34F1810, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_GopherProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_GradientPP = {0x623E2880, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; -enum IID CLSID_HandsetTerminal = {0xAAF578EB, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID CLSID_HeadsetTerminal = {0xAAF578ED, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID CLSID_HNetCfgMgr = {0x46C166AA, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID CLSID_Hold = {0xB3AD3E13, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_HomeNetAutoConfigService = {0x9A8EA3B5, 0x572E, 0x4CB3, [0x9E, 0xB9, 0xEC, 0x68, 0x9A, 0xC5, 0x75, 0xAE]}; -enum IID CLSID_HomePage = {0x766BF2AE, 0xD650, 0x11D1, [0x98, 0x11, 0x00, 0xC0, 0x4F, 0xC3, 0x1D, 0x2E]}; -enum IID CLSID_HostDialogHelper = {0x429AF92C, 0xA51F, 0x11D2, [0x86, 0x1E, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; -enum IID CLSID_HTADocument = {0x3050F5C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTCAttachBehavior = {0x3050F5F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTCDefaultDispatch = {0x3050F4FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTCDescBehavior = {0x3050F5DD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTCEventBehavior = {0x3050F4FE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTCMethodBehavior = {0x3050F630, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTCPropertyBehavior = {0x3050F5DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLAnchorElement = {0x3050F248, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLAppBehavior = {0x3050F5CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLApplication = {0x3050F4D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLAreaElement = {0x3050F283, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLAreasCollection = {0x3050F4CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLAttributeCollection = {0x3050F4CC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLBaseElement = {0x3050F276, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLBaseFontElement = {0x3050F282, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLBGsound = {0x3050F370, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLBlockElement = {0x3050F281, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLBody = {0x3050F24A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLBRElement = {0x3050F280, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLButtonElement = {0x3050F2C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLCommentElement = {0x3050F317, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLCurrentStyle = {0x3050F3DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLDDElement = {0x3050F27F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLDefaults = {0x3050F6C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLDialog = {0x3050F28A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLDivElement = {0x3050F27E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLDivPosition = {0x3050F249, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HtmlDlgSafeHelper = {0x3050F819, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLDListElement = {0x3050F27D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLDocument = {0x25336920, 0x03F9, 0x11CF, [0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13]}; -enum IID CLSID_HTMLDOMAttribute = {0x3050F4B2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLDOMImplementation = {0x3050F80E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLDOMTextNode = {0x3050F4BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLDTElement = {0x3050F27C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLElementCollection = {0x3050F4CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLEmbed = {0x3050F25D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLFieldSetElement = {0x3050F3E8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLFontElement = {0x3050F27B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLFormElement = {0x3050F251, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLFrameBase = {0x3050F312, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLFrameElement = {0x3050F314, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLFrameSetSite = {0x3050F31A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLGenericElement = {0x3050F4B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLHeadElement = {0x3050F493, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLHeaderElement = {0x3050F27A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLHistory = {0xFECEAAA3, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; -enum IID CLSID_HTMLHRElement = {0x3050F252, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLHtmlElement = {0x3050F491, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLIFrame = {0x3050F316, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLImageElementFactory = {0x3050F38F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLImg = {0x3050F241, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLInputButtonElement = {0x3050F2B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLInputElement = {0x3050F5D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLInputFileElement = {0x3050F2AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLInputImage = {0x3050F2C4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLInputTextElement = {0x3050F2AB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLIsIndexElement = {0x3050F278, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLLabelElement = {0x3050F32B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLLegendElement = {0x3050F3E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLLIElement = {0x3050F273, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLLinkElement = {0x3050F277, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLListElement = {0x3050F272, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLLoadOptions = {0x18845040, 0x0FA5, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; -enum IID CLSID_HTMLLocation = {0x163BB1E1, 0x6E00, 0x11CF, [0x83, 0x7A, 0x48, 0xDC, 0x04, 0xC1, 0x00, 0x00]}; -enum IID CLSID_HTMLMapElement = {0x3050F271, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLMarqueeElement = {0x3050F2B9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLMetaElement = {0x3050F275, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLNamespace = {0x3050F6BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLNamespaceCollection = {0x3050F6B9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLNavigator = {0xFECEAAA6, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; -enum IID CLSID_HTMLNextIdElement = {0x3050F279, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLNoShowElement = {0x3050F38B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLObjectElement = {0x3050F24E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLOListElement = {0x3050F270, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLOptionButtonElement = {0x3050F2BE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLOptionElement = {0x3050F24D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLOptionElementFactory = {0x3050F38D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLParaElement = {0x3050F26F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLParamElement = {0x3050F83E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLPhraseElement = {0x3050F26E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLPluginDocument = {0x25336921, 0x03F9, 0x11CF, [0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13]}; -enum IID CLSID_HTMLPopup = {0x3050F667, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLRenderStyle = {0x3050F6AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLRichtextElement = {0x3050F2DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLRuleStyle = {0x3050F3D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLScreen = {0x3050F35D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLScriptElement = {0x3050F28C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLSelectElement = {0x3050F245, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLSpanElement = {0x3050F3F5, 0x98B4, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLSpanFlow = {0x3050F3E6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLStyle = {0x3050F285, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLStyleElement = {0x3050F37D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLStyleFontFace = {0x3050F3D4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLStyleSheet = {0x3050F2E4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLStyleSheetPage = {0x3050F7EF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLStyleSheetPagesCollection = {0x3050F7F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLStyleSheetRule = {0x3050F3CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLStyleSheetRulesCollection = {0x3050F3CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLStyleSheetsCollection = {0x3050F37F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLTable = {0x3050F26B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLTableCaption = {0x3050F2EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLTableCell = {0x3050F246, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLTableCol = {0x3050F26C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLTableRow = {0x3050F26D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLTableSection = {0x3050F2E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLTextAreaElement = {0x3050F2AC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLTextElement = {0x3050F26A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLTitleElement = {0x3050F284, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLUListElement = {0x3050F269, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLUnknownElement = {0x3050F268, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLUrnCollection = {0x3050F580, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HTMLWindow2 = {0xD48A6EC6, 0x6A4A, 0x11CF, [0x94, 0xA7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID CLSID_HTMLWindowProxy = {0x3050F391, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_HttpProtocol = {0x79EAC9E2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_HttpSProtocol = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_HWShellExecute = {0xFFB8655F, 0x81B9, 0x4FCE, [0xB8, 0x9C, 0x9A, 0x6B, 0xA7, 0x6D, 0x13, 0xE7]}; -enum IID CLSID_IActiveXSafetyProvider = {0xAAF8C6CE, 0xF972, 0x11D0, [0x97, 0xEB, 0x00, 0xAA, 0x00, 0x61, 0x53, 0x33]}; -enum IID CLSID_IImageDecodeFilter = {0x607FD4E8, 0x0A03, 0x11D1, [0xAB, 0x1D, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; -enum IID CLSID_IImgCtx = {0x3050F3D6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_ImageList = {0x7C476BA2, 0x02B1, 0x48F4, [0x80, 0x48, 0xB2, 0x46, 0x19, 0xDD, 0xC0, 0x58]}; -enum IID CLSID_ImageProperties = {0x7AB770C7, 0x0E23, 0x4D7A, [0x8A, 0xA2, 0x19, 0xBF, 0xAD, 0x47, 0x98, 0x29]}; -enum IID CLSID_InProcFreeMarshaler = {0x0000033A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_IntDitherer = {0x05F6FE1A, 0xECEF, 0x11D0, [0xAA, 0xE7, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; -enum IID CLSID_IntelliForms = {0x613AB92E, 0x16BF, 0x11D2, [0xBC, 0xA5, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; -enum IID CLSID_Internet = {0x871C5380, 0x42A0, 0x1069, [0xA2, 0xEA, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; -enum IID CLSID_InternetButtons = {0x1E796980, 0x9CC5, 0x11D1, [0xA8, 0x3F, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0x61]}; -enum IID CLSID_InternetConnectionBeaconServic = {0x04DF613A, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; -enum IID CLSID_InternetExplorer = {0x0002DF01, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_InternetPrintOrdering = {0xADD36AA8, 0x751A, 0x4579, [0xA2, 0x66, 0xD6, 0x6F, 0x52, 0x02, 0xCC, 0xBB]}; -enum IID CLSID_InternetSecurityManager = {0x7B8A2D94, 0x0AC9, 0x11D1, [0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; -enum IID CLSID_InternetShortcut = {0xFBF23B40, 0xE3F0, 0x101B, [0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8]}; -enum IID CLSID_InternetZoneManager = {0x7B8A2D95, 0x0AC9, 0x11D1, [0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; -enum IID CLSID_LanConnectionManager = {0xBA126AD3, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID CLSID_LargeInteger = {0x927971F5, 0x0939, 0x11D1, [0x8B, 0xE1, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID CLSID_LDAPConnectionObject = {0x7DA2A9C4, 0x0C46, 0x43BD, [0xB0, 0x4E, 0xD9, 0x2B, 0x1B, 0xE2, 0x7C, 0x45]}; -enum IID CLSID_LDAPObject = {0x05709878, 0x5195, 0x466C, [0x9E, 0x64, 0x48, 0x7C, 0xE3, 0xCA, 0x20, 0xBF]}; -enum IID CLSID_LinkColumnProvider = {0x24F14F02, 0x7B1C, 0x11D1, [0x83, 0x8F, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; -enum IID CLSID_LocalMachineClasses = {0x00000331, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_LogManager = {0x8FDA8FA4, 0x8763, 0x479F, [0xB9, 0xB1, 0x22, 0x02, 0xB2, 0x80, 0xD2, 0x93]}; -enum IID CLSID_LUTBuilderPP = {0x25B33662, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; -enum IID CLSID_MachineDebugManager = {0x0C0A3666, 0x30C9, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID CLSID_MailAutoDiscovery = {0x008FD5DD, 0x6DBB, 0x48E3, [0x99, 0x1B, 0x2D, 0x3E, 0xD6, 0x58, 0x51, 0x6A]}; -enum IID CLSID_MailProtocolADEntry = {0x61A5D6F3, 0xC131, 0x4C35, [0xBF, 0x40, 0x90, 0xA5, 0x0F, 0x21, 0x41, 0x22]}; -enum IID CLSID_ManualResetEvent = {0x0000032C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_McastAddressAllocation = {0xDF0DAEF2, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; -enum IID CLSID_MediaStreamTerminal = {0xE2F7AEF7, 0x4971, 0x11D1, [0xA6, 0x71, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xE8]}; -enum IID CLSID_MergedCategorizer = {0x8E827C11, 0x33E7, 0x4BC1, [0xB2, 0x42, 0x8C, 0xD9, 0xA1, 0xC2, 0xB3, 0x04]}; -enum IID CLSID_MHTMLDocument = {0x3050F3D9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_MicrophoneTerminal = {0xAAF578EF, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID CLSID_MicrosoftDS = {0xFE1290F0, 0xCFBD, 0x11CF, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; -enum IID CLSID_MigrationWizardAuto = {0x67331D85, 0xBE17, 0x42F6, [0x8D, 0x3F, 0x47, 0xB8, 0xE8, 0xB2, 0x66, 0x37]}; -enum IID CLSID_MkProtocol = {0x79EAC9E6, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_MofCompiler = {0x6DAF9757, 0x2E37, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID CLSID_MountedVolume = {0x12518493, 0x00B2, 0x11D2, [0x9F, 0xA5, 0x9E, 0x34, 0x20, 0x52, 0x41, 0x53]}; -enum IID CLSID_MSBurnEngineObj = {0x520CCA67, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID CLSID_MSDATT = {0xC8B522CE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID CLSID_MSDAVTM = {0x0C733A8E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID CLSID_MSDiscMasterObj = {0x520CCA63, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID CLSID_MSDiscRecorderObj = {0x520CCA61, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID CLSID_MSDiscStashObj = {0x520CCA65, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID CLSID_MSEnumDiscRecordersObj = {0x8A03567A, 0x63CB, 0x4BA8, [0xBA, 0xF6, 0x52, 0x11, 0x98, 0x16, 0xD1, 0xEF]}; -enum IID CLSID_MSOButtons = {0x178F34B8, 0xA282, 0x11D2, [0x86, 0xC5, 0x00, 0xC0, 0x4F, 0x8E, 0xEA, 0x99]}; -enum IID CLSID_MyComputer = {0x20D04FE0, 0x3AEA, 0x1069, [0xA2, 0xD8, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; -enum IID CLSID_MyDocuments = {0x450D8FBA, 0xAD25, 0x11D0, [0x98, 0xA8, 0x08, 0x00, 0x36, 0x1B, 0x11, 0x03]}; -enum IID CLSID_NameTranslate = {0x274FAE1F, 0x3626, 0x11D1, [0xA3, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_NetAddress = {0xB0B71247, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_NetConnectionHNetUtil = {0xBA126AE3, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID CLSID_NetConnectionUiUtilities = {0x7007ACD3, 0x3202, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID CLSID_NetCrawler = {0x601AC3DC, 0x786A, 0x4EB0, [0xBF, 0x40, 0xEE, 0x35, 0x21, 0xE7, 0x0B, 0xFB]}; -enum IID CLSID_NetSharingManager = {0x5C63C1AD, 0x3956, 0x4FF8, [0x84, 0x86, 0x40, 0x03, 0x47, 0x58, 0x31, 0x5B]}; -enum IID CLSID_NetworkDomain = {0x46E06680, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; -enum IID CLSID_NetworkPlaces = {0x208D2C60, 0x3AEA, 0x1069, [0xA2, 0xD7, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; -enum IID CLSID_NetworkServer = {0xC0542A90, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; -enum IID CLSID_NetworkShare = {0x54A754C0, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; -enum IID CLSID_NetworkType = {0xD4F3D51B, 0x1755, 0x4953, [0x9C, 0x8B, 0x24, 0x95, 0xAB, 0xE5, 0xE0, 0x7E]}; -enum IID CLSID_NodeType = {0x1AAA3D11, 0x4792, 0x44E4, [0x9D, 0x49, 0x78, 0xFE, 0xD3, 0x69, 0x1A, 0x14]}; -enum IID CLSID_NotificaitonTest1 = {0xC733E501, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_NotificaitonTest2 = {0xC733E502, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_NotificaitonTest3 = {0xC733E503, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_NotificaitonTest4 = {0xC733E504, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_NotificationManager = {0xE1813DD0, 0xAADA, 0x4738, [0xB5, 0xFF, 0x96, 0xB4, 0x18, 0x9C, 0x50, 0x19]}; -enum IID CLSID_ObjectManager = {0x955661BD, 0xCCA2, 0x4EAC, [0x91, 0xD0, 0xA0, 0x39, 0x6A, 0x28, 0xAE, 0xFD]}; -enum IID CLSID_OctetList = {0x1241400F, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_OldHTMLDocument = {0xD48A6EC9, 0x6A4A, 0x11CF, [0x94, 0xA7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID CLSID_OldHTMLFormElement = {0x0D04D285, 0x6BEC, 0x11CF, [0x8B, 0x97, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; -enum IID CLSID_OLEDB_CONVERSIONLIBRARY = {0xC8B522D1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID CLSID_OLEDB_ENUMERATOR = {0xC8B522D0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID CLSID_OLEDB_ROWPOSITIONLIBRARY = {0x2048EEE6, 0x7FA2, 0x11D0, [0x9E, 0x6A, 0x00, 0xA0, 0xC9, 0x13, 0x8C, 0x29]}; -enum IID CLSID_PassportClientServices = {0x2D2307C8, 0x7DB4, 0x40D6, [0x91, 0x00, 0xD5, 0x2A, 0xF4, 0xF9, 0x7A, 0x5B]}; -enum IID CLSID_Path = {0xB2538919, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_Pathname = {0x080D0D78, 0xF421, 0x11D0, [0xA3, 0x6E, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_PeerFactory = {0x3050F4CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_PendingProxyConnection = {0xD8A68E5E, 0x2B37, 0x426C, [0xA3, 0x29, 0xC1, 0x17, 0xC1, 0x4C, 0x42, 0x9E]}; -enum IID CLSID_PersistentDataChannel = {0xBC9B54AB, 0x7883, 0x4C13, [0x90, 0x9F, 0x03, 0x3D, 0x03, 0x26, 0x79, 0x90]}; -enum IID CLSID_PersistPropset = {0xFB8F0821, 0x0164, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; -enum IID CLSID_Picture_Dib = {0x00000316, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_Picture_EnhMetafile = {0x00000319, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_Picture_Metafile = {0x00000315, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_Pixelate = {0x4CCEA634, 0xFBE0, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID CLSID_PixelatePP = {0x4CCEA635, 0xFBE0, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID CLSID_PluggableSuperclassRegistratio = {0xBB918E32, 0x2A5C, 0x4986, [0xAB, 0x40, 0x16, 0x86, 0xA0, 0x34, 0x39, 0x0A]}; -enum IID CLSID_PluggableTerminalRegistration = {0x45234E3E, 0x61CC, 0x4311, [0xA3, 0xAB, 0x24, 0x80, 0x82, 0x55, 0x44, 0x82]}; -enum IID CLSID_PostAgent = {0xD8BD2030, 0x6FC9, 0x11D0, [0x86, 0x4F, 0x00, 0xAA, 0x00, 0x68, 0x09, 0xD9]}; -enum IID CLSID_PostalAddress = {0x0A75AFCD, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_PrimaryControlChannel = {0x3CEB5509, 0xC1CD, 0x432F, [0x9D, 0x8F, 0x65, 0xD1, 0xE2, 0x86, 0xAA, 0x80]}; -enum IID CLSID_Printers = {0x2227A280, 0x3AEA, 0x1069, [0xA2, 0xDE, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; -enum IID CLSID_PROCESS_BROADCAST = {0xD34F1811, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_ProcessDebugManager = {0x78A51822, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID CLSID_ProgressDialog = {0xF8383852, 0xFCD3, 0x11D1, [0xA6, 0xB9, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; -enum IID CLSID_PropertiesUI = {0xD912F8CF, 0x0396, 0x4915, [0x88, 0x4E, 0xFB, 0x42, 0x5D, 0x32, 0x94, 0x3B]}; -enum IID CLSID_PropertyEntry = {0x72D3EDC2, 0xA4C4, 0x11D0, [0x85, 0x33, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID CLSID_PropertyValue = {0x7B9E38B0, 0xA97C, 0x11D0, [0x85, 0x34, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID CLSID_PSBindCtx = {0x00000312, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_PSClassObject = {0x0000030E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_PSClientSite = {0x0000030D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_PSDragDrop = {0x00000311, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_PSEnumerators = {0x00000313, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_PseudoSink = {0xE002E4F0, 0xE6EA, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; -enum IID CLSID_PSGenObject = {0x0000030C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_PSInPlaceActive = {0x0000030F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_PSInPlaceFrame = {0x00000310, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_PSUrlMonProxy = {0x79EAC9F1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_PublishDropTarget = {0xCC6EEFFB, 0x43F6, 0x46C5, [0x96, 0x19, 0x51, 0xD5, 0x71, 0x96, 0x7F, 0x7D]}; -enum IID CLSID_PublishingWizard = {0x6B33163C, 0x76A5, 0x4B6C, [0xBF, 0x21, 0x45, 0xDE, 0x9C, 0xD5, 0x03, 0xA1]}; -enum IID CLSID_QueryAssociations = {0xA07034FD, 0x6CAA, 0x4954, [0xAC, 0x3F, 0x97, 0xA2, 0x72, 0x16, 0xF9, 0x8A]}; -enum IID CLSID_QueryCancelAutoPlay = {0x331F1768, 0x05A9, 0x4DDD, [0xB8, 0x6E, 0xDA, 0xE3, 0x4D, 0xDC, 0x99, 0x8A]}; -enum IID CLSID_RecycleBin = {0x645FF040, 0x5081, 0x101B, [0x9F, 0x08, 0x00, 0xAA, 0x00, 0x2F, 0x95, 0x4E]}; -enum IID CLSID_RemoteUnknownPSFactory = {0x00000340, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_Rendezvous = {0xF1029E5B, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID CLSID_ReplicaPointer = {0xF5D1BADF, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_Request = {0x6BC096B1, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; -enum IID CLSID_RequestMakeCall = {0xAC48FFE0, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID CLSID_ResProtocol = {0x3050F3BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_RTCClient = {0x7A42EA29, 0xA2B7, 0x40C4, [0xB0, 0x91, 0xF6, 0xF0, 0x24, 0xAA, 0x89, 0xBE]}; -enum IID CLSID_Scriptlet = {0xAE24FDAE, 0x03C6, 0x11D1, [0x8B, 0x76, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; -enum IID CLSID_SdoMachine = {0xE9218AE7, 0x9E91, 0x11D1, [0xBF, 0x60, 0x00, 0x80, 0xC7, 0x84, 0x6B, 0xC0]}; -enum IID CLSID_SdpConferenceBlob = {0x9B2719DD, 0xB696, 0x11D0, [0xA4, 0x89, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID CLSID_SearchAssistantOC = {0xB45FF030, 0x4447, 0x11D2, [0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; -enum IID CLSID_SearchCommand = {0xB005E690, 0x678D, 0x11D1, [0xB7, 0x58, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; -enum IID CLSID_SecondaryControlChannel = {0x7B3181A0, 0xC92F, 0x4567, [0xB0, 0xFA, 0xCD, 0x9A, 0x10, 0xEC, 0xD7, 0xD1]}; -enum IID CLSID_SecurityDescriptor = {0xB958F73C, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID CLSID_SENS = {0xD597CAFE, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; -enum IID CLSID_ServiceManager = {0xABD0388A, 0xDEC1, 0x44F3, [0x98, 0xE1, 0x8D, 0x5C, 0xC8, 0x0B, 0x97, 0xEB]}; -enum IID CLSID_SharingApplicationDefinition = {0x46C166B0, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID CLSID_SharingConfiguration = {0x46C166B1, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID CLSID_SharingManagerEnumApplicationDe = {0x46C166AE, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID CLSID_SharingManagerEnumPortMapping = {0x46C166AF, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID CLSID_SharingManagerEnumPrivateConnec = {0x46C166AD, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID CLSID_SharingManagerEnumPublicConnect = {0x46C166AC, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID CLSID_Shell = {0x13709620, 0xC279, 0x11CE, [0xA4, 0x9E, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID CLSID_ShellBrowserWindow = {0xC08AFD90, 0xF2A1, 0x11D1, [0x84, 0x55, 0x00, 0xA0, 0xC9, 0x1F, 0x38, 0x80]}; -enum IID CLSID_ShellDesktop = {0x00021400, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_ShellDispatchInproc = {0x0A89A860, 0xD7B1, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID CLSID_ShellFolderItem = {0x2FE352EA, 0xFD1F, 0x11D2, [0xB1, 0xF4, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; -enum IID CLSID_ShellFolderView = {0x62112AA1, 0xEBE4, 0x11CF, [0xA5, 0xFB, 0x00, 0x20, 0xAF, 0xE7, 0x29, 0x2D]}; -enum IID CLSID_ShellFolderViewOC = {0x9BA05971, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; -enum IID CLSID_ShellFSFolder = {0xF3364BA0, 0x65B9, 0x11CE, [0xA9, 0xBA, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37]}; -enum IID CLSID_ShellImageDataFactory = {0x66E4E4FB, 0xF385, 0x4DD0, [0x8D, 0x74, 0xA2, 0xEF, 0xD1, 0xBC, 0x61, 0x78]}; -enum IID CLSID_ShellLink = {0x00021401, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_ShellLinkObject = {0x11219420, 0x1768, 0x11D1, [0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; -enum IID CLSID_ShellLocalMachine = {0x60664CAF, 0xAF0D, 0x0005, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; -enum IID CLSID_ShellLogonEnumUsers = {0x60664CAF, 0xAF0D, 0x0004, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; -enum IID CLSID_ShellLogonStatusHost = {0x60664CAF, 0xAF0D, 0x0007, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; -enum IID CLSID_ShellLogonUser = {0x60664CAF, 0xAF0D, 0x0003, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; -enum IID CLSID_ShellNameSpace = {0x55136805, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; -enum IID CLSID_ShellUIHelper = {0x64AB4BB7, 0x111E, 0x11D1, [0x8F, 0x79, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; -enum IID CLSID_ShellWindows = {0x9BA05972, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; -enum IID CLSID_SizeCategorizer = {0x55D7B852, 0xF6D1, 0x42F2, [0xAA, 0x75, 0x87, 0x28, 0xA1, 0xB2, 0xD2, 0x64]}; -enum IID CLSID_SoftDistExt = {0xB15B8DC0, 0xC7E1, 0x11D0, [0x86, 0x80, 0x00, 0xAA, 0x00, 0xBD, 0xCB, 0x71]}; -enum IID CLSID_SpeakerphoneTerminal = {0xAAF578EE, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID CLSID_SpeakersTerminal = {0xAAF578F0, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID CLSID_SpeechUIServer = {0x1443904B, 0x34E4, 0x40F6, [0xB3, 0x0F, 0x6B, 0xEB, 0x81, 0x26, 0x7B, 0x80]}; -enum IID CLSID_StaticDib = {0x00000316, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_StaticMetafile = {0x00000315, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_StdAsyncActManager = {0x00000329, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_StdComponentCategoriesMgr = {0x0002E005, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_StdEncodingFilterFac = {0x54C37CD0, 0xD944, 0x11D0, [0xA9, 0xF4, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; -enum IID CLSID_StdEvent = {0x0000032B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_StdFont = {0x0BE35203, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; -enum IID CLSID_StdGlobalInterfaceTable = {0x00000323, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_StdHlink = {0x79EAC9D0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_StdHlinkBrowseContext = {0x79EAC9D1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_StdMarshal = {0x00000017, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_StdNotificationMgr = {0xC733E4AF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_StdPicture = {0x0BE35204, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; -enum IID CLSID_StdURLMoniker = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_StdURLProtocol = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_StgFolder = {0xE773F1AF, 0x3A65, 0x4866, [0x85, 0x7D, 0x84, 0x6F, 0xC9, 0xC4, 0x59, 0x8A]}; -enum IID CLSID_StockColorPage = {0x7EBDAAE1, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; -enum IID CLSID_StockFontPage = {0x7EBDAAE0, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; -enum IID CLSID_StockPicturePage = {0x7EBDAAE2, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; -enum IID CLSID_SubscriptionMgr = {0xABBE31D0, 0x6DAE, 0x11D0, [0xBE, 0xCA, 0x00, 0xC0, 0x4F, 0xD9, 0x40, 0xBE]}; -enum IID CLSID_SubscriptionThrottler = {0x1E9B00E5, 0x9846, 0x11D1, [0xA1, 0xEE, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; -enum IID CLSID_SWbemDateTime = {0x47DFBE54, 0xCF76, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; -enum IID CLSID_SWbemEventSource = {0x04B83D58, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemLastError = {0xC2FEEEAC, 0xCFCD, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemLocator = {0x76A64158, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemMethod = {0x04B83D5B, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemMethodSet = {0x04B83D5A, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemNamedValue = {0x04B83D60, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemNamedValueSet = {0x9AED384E, 0xCE8B, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemObject = {0x04B83D62, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemObjectEx = {0xD6BDAFB2, 0x9435, 0x491F, [0xBB, 0x87, 0x6A, 0xA0, 0xF0, 0xBC, 0x31, 0xA2]}; -enum IID CLSID_SWbemObjectPath = {0x5791BC26, 0xCE9C, 0x11D1, [0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C]}; -enum IID CLSID_SWbemObjectSet = {0x04B83D61, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemPrivilege = {0x26EE67BC, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemPrivilegeSet = {0x26EE67BE, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemProperty = {0x04B83D5D, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemPropertySet = {0x04B83D5C, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemQualifier = {0x04B83D5F, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemQualifierSet = {0x04B83D5E, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemRefreshableItem = {0x8C6854BC, 0xDE4B, 0x11D3, [0xB3, 0x90, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; -enum IID CLSID_SWbemRefresher = {0xD269BF5C, 0xD9C1, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; -enum IID CLSID_SWbemSecurity = {0xB54D66E9, 0x2287, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemServices = {0x04B83D63, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID CLSID_SWbemServicesEx = {0x62E522DC, 0x8CF3, 0x40A8, [0x8B, 0x2E, 0x37, 0xD5, 0x95, 0x65, 0x1E, 0x40]}; -enum IID CLSID_SWbemSink = {0x75718C9A, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; -enum IID CLSID_SynchronizeContainer = {0x0000032D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID CLSID_SyncMgr = {0x6295DF27, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; -enum IID CLSID_TAPI = {0x21D6D48E, 0xA88B, 0x11D0, [0x83, 0xDD, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID CLSID_TaskbarList = {0x56FDF344, 0xFD6D, 0x11D0, [0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90]}; -enum IID CLSID_TaskManager = {0xC0F615A7, 0xF874, 0x4521, [0x87, 0x91, 0xED, 0x3B, 0x84, 0x01, 0x7E, 0xF7]}; -enum IID CLSID_TerminalManager = {0x7170F2E0, 0x9BE3, 0x11D0, [0xA0, 0x09, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; -enum IID CLSID_THREAD_BROADCAST = {0xD34F1812, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_ThreadDialogProcParam = {0x3050F5EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID CLSID_ThumbnailFCNHandler = {0xCEFC65D8, 0x66D8, 0x11D1, [0x8D, 0x8C, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; -enum IID CLSID_ThumbnailUpdater = {0xA3C63918, 0x889D, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; -enum IID CLSID_TIME = {0xE32EF57B, 0x7FDE, 0x4765, [0x9B, 0xC5, 0xA1, 0xBA, 0x97, 0x05, 0xC4, 0x4E]}; -enum IID CLSID_TIMEAnimation = {0xF99D135A, 0xC07C, 0x449E, [0x96, 0x5C, 0x7D, 0xBB, 0x7C, 0x55, 0x4A, 0x51]}; -enum IID CLSID_TimeCategorizer = {0x3BB4118F, 0xDDFD, 0x4D30, [0xA3, 0x48, 0x9F, 0xB5, 0xD6, 0xBF, 0x1A, 0xFE]}; -enum IID CLSID_TIMEColorAnimation = {0x62F75052, 0xF3EC, 0x4A64, [0x84, 0xFB, 0xAB, 0x18, 0xE0, 0x74, 0x6E, 0xD8]}; -enum IID CLSID_TIMEFactory = {0x17237A20, 0x3ADB, 0x48EC, [0xB1, 0x82, 0x35, 0x29, 0x1F, 0x11, 0x57, 0x90]}; -enum IID CLSID_TIMEFilterAnimation = {0xC54515D0, 0xF2E5, 0x4BDD, [0xAA, 0x86, 0x1E, 0x4F, 0x23, 0xE4, 0x80, 0xE7]}; -enum IID CLSID_TIMEMotionAnimation = {0x0019A09D, 0x1A81, 0x41C5, [0x89, 0xEC, 0xD9, 0xE7, 0x37, 0x81, 0x13, 0x03]}; -enum IID CLSID_TIMESetAnimation = {0xBA91CE53, 0xBAEB, 0x4F05, [0x86, 0x1C, 0x0A, 0x2A, 0x09, 0x34, 0xF8, 0x2E]}; -enum IID CLSID_Timestamp = {0xB2BED2EB, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_ToolbarExtButtons = {0x2CE4B5D8, 0xA28F, 0x11D2, [0x86, 0xC5, 0x00, 0xC0, 0x4F, 0x8E, 0xEA, 0x99]}; -enum IID CLSID_TrackFile = {0x8790C947, 0xA30B, 0x11D0, [0x8C, 0xAB, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; -enum IID CLSID_TrkForceOwnership = {0xA2531F45, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; -enum IID CLSID_TrkRestoreNotify = {0xD0056F6C, 0xE2A0, 0x11D0, [0xB1, 0xC2, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; -enum IID CLSID_TrkRestoreParser = {0x755939E4, 0xE381, 0x11D0, [0xB1, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; -enum IID CLSID_TypedName = {0xB33143CB, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID CLSID_UmiLDAPQueryObject = {0xCD5D4D76, 0xA818, 0x4F95, [0xB9, 0x58, 0x79, 0x70, 0xFD, 0x94, 0x12, 0xCA]}; -enum IID CLSID_UnsecuredApartment = {0x49BD2028, 0x1523, 0x11D1, [0xAD, 0x79, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID CLSID_UPnPDescriptionDocument = {0x1D8A9B47, 0x3A28, 0x4CE2, [0x8A, 0x4B, 0xBD, 0x34, 0xE4, 0x5B, 0xCE, 0xEB]}; -enum IID CLSID_UPnPDevice = {0xA32552C5, 0xBA61, 0x457A, [0xB5, 0x9A, 0xA2, 0x56, 0x1E, 0x12, 0x5E, 0x33]}; -enum IID CLSID_UPnPDeviceFinder = {0xE2085F28, 0xFEB7, 0x404A, [0xB8, 0xE7, 0xE6, 0x59, 0xBD, 0xEA, 0xAA, 0x02]}; -enum IID CLSID_UPnPDeviceHostICSSupport = {0x797A9BB1, 0x9E49, 0x4E63, [0xAF, 0xE1, 0x1B, 0x45, 0xB9, 0xDC, 0x81, 0x62]}; -enum IID CLSID_UPnPDeviceHostSetup = {0xB4609411, 0xC81C, 0x4CCE, [0x8C, 0x76, 0xC6, 0xB5, 0x0C, 0x94, 0x02, 0xC6]}; -enum IID CLSID_UPnPDevices = {0xB9E84FFD, 0xAD3C, 0x40A4, [0xB8, 0x35, 0x08, 0x82, 0xEB, 0xCB, 0xAA, 0xA8]}; -enum IID CLSID_UPnPNAT = {0xAE1E00AA, 0x3FD5, 0x403C, [0x8A, 0x27, 0x2B, 0xBD, 0xC3, 0x0C, 0xD0, 0xE1]}; -enum IID CLSID_UPnPRegistrar = {0x204810B9, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; -enum IID CLSID_UPnPService = {0xC624BA95, 0xFBCB, 0x4409, [0x8C, 0x03, 0x8C, 0xCE, 0xEC, 0x53, 0x3E, 0xF1]}; -enum IID CLSID_UPnPServices = {0xC0BC4B4A, 0xA406, 0x4EFC, [0x93, 0x2F, 0xB8, 0x54, 0x6B, 0x81, 0x00, 0xCC]}; -enum IID CLSID_UrlMkBindCtx = {0x79EAC9F2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID CLSID_UserEventTimer = {0x864A1288, 0x354C, 0x4D19, [0x9D, 0x68, 0xC2, 0x74, 0x2B, 0xB1, 0x49, 0x97]}; -enum IID CLSID_UserEventTimerCallback = {0x15FFFD13, 0x5140, 0x41B8, [0xB8, 0x9A, 0xC8, 0xD5, 0x75, 0x9C, 0xD2, 0xB2]}; -enum IID CLSID_UserNotification = {0x0010890E, 0x8789, 0x413C, [0xAD, 0xBC, 0x48, 0xF5, 0xB5, 0x11, 0xB3, 0xAF]}; -enum IID CLSID_VideoInputTerminal = {0xAAF578EC, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID CLSID_VideoWindowTerm = {0xF7438990, 0xD6EB, 0x11D0, [0x82, 0xA6, 0x00, 0xAA, 0x00, 0xB5, 0xCA, 0x1B]}; -enum IID CLSID_VirusScan = {0xE88E5DE0, 0xBD3E, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; -enum IID CLSID_WbemAdministrativeLocator = {0xCB8555CC, 0x9128, 0x11D1, [0xAD, 0x9B, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID CLSID_WbemAuthenticatedLocator = {0xCD184336, 0x9128, 0x11D1, [0xAD, 0x9B, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID CLSID_WbemBackupRestore = {0xC49E32C6, 0xBC8B, 0x11D2, [0x85, 0xD4, 0x00, 0x10, 0x5A, 0x1F, 0x83, 0x04]}; -enum IID CLSID_WbemClassObject = {0x9A653086, 0x174F, 0x11D2, [0xB5, 0xF9, 0x00, 0x10, 0x4B, 0x70, 0x3E, 0xFD]}; -enum IID CLSID_WbemContext = {0x674B6698, 0xEE92, 0x11D0, [0xAD, 0x71, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID CLSID_WbemDCOMTransport = {0xF7CE2E13, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID CLSID_WbemDecoupledBasicEventProvide = {0xF5F75737, 0x2843, 0x4F22, [0x93, 0x3D, 0xC7, 0x6A, 0x97, 0xCD, 0xA6, 0x2F]}; -enum IID CLSID_WbemDecoupledRegistrar = {0x4CFC7932, 0x0F9D, 0x4BEF, [0x9C, 0x32, 0x8E, 0xA2, 0xA6, 0xB5, 0x6F, 0xCB]}; -enum IID CLSID_WbemDefPath = {0xCF4CC405, 0xE2C5, 0x4DDD, [0xB3, 0xCE, 0x5E, 0x75, 0x82, 0xD8, 0xC9, 0xFA]}; -enum IID CLSID_WbemLevel1Login = {0x8BC3F05E, 0xD86B, 0x11D0, [0xA0, 0x75, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID CLSID_WbemLocalAddrRes = {0xA1044801, 0x8F7E, 0x11D1, [0x9E, 0x7C, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID CLSID_WbemLocator = {0x4590F811, 0x1D3A, 0x11D0, [0x89, 0x1F, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; -enum IID CLSID_WbemObjectTextSrc = {0x8D1C559D, 0x84F0, 0x4BB3, [0xA7, 0xD5, 0x56, 0xA7, 0x43, 0x5A, 0x9B, 0xA6]}; -enum IID CLSID_WbemQuery = {0xEAC8A024, 0x21E2, 0x4523, [0xAD, 0x73, 0xA7, 0x1A, 0x0A, 0xA2, 0xF5, 0x6A]}; -enum IID CLSID_WbemRefresher = {0xC71566F2, 0x561E, 0x11D1, [0xAD, 0x87, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID CLSID_WbemStatusCodeText = {0xEB87E1BD, 0x3233, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID CLSID_WbemUnauthenticatedLocator = {0x443E7B79, 0xDE31, 0x11D2, [0xB3, 0x40, 0x00, 0x10, 0x4B, 0xCC, 0x4B, 0x4A]}; -enum IID CLSID_WbemUninitializedClassObject = {0x7A0227F6, 0x7108, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID CLSID_WebBrowser = {0x8856F961, 0x340A, 0x11D0, [0xA9, 0x6B, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; -enum IID CLSID_WebBrowser_V1 = {0xEAB22AC3, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; -enum IID CLSID_WebCheck = {0xE6FB5E20, 0xDE35, 0x11CF, [0x9C, 0x87, 0x00, 0xAA, 0x00, 0x51, 0x27, 0xED]}; -enum IID CLSID_WebCheckDefaultProcess = {0xC733E4B0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID CLSID_WebCheckOfflineSync = {0x7FC0B86E, 0x5FA7, 0x11D1, [0xBC, 0x7C, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; -enum IID CLSID_WebCrawlerAgent = {0x08165EA0, 0xE946, 0x11CF, [0x9C, 0x87, 0x00, 0xAA, 0x00, 0x51, 0x27, 0xED]}; -enum IID CLSID_WebViewFolderContents = {0x1820FED0, 0x473E, 0x11D0, [0xA9, 0x6C, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; -enum IID CLSID_WebWizardHost = {0xC827F149, 0x55C1, 0x4D28, [0x93, 0x5E, 0x57, 0xE4, 0x7C, 0xAE, 0xD9, 0x73]}; -enum IID CLSID_wfolders = {0xBAE31F9A, 0x1B81, 0x11D2, [0xA9, 0x7A, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; -enum IID CLSID_WinNTConnectionObject = {0x7992C6EB, 0xD142, 0x4332, [0x83, 0x1E, 0x31, 0x54, 0xC5, 0x0A, 0x83, 0x16]}; -enum IID CLSID_WinNTObject = {0xB8324185, 0x4050, 0x4220, [0x98, 0x0A, 0xAB, 0x14, 0x62, 0x3E, 0x06, 0x3A]}; -enum IID CLSID_WinNTSystemInfo = {0x66182EC4, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; -enum IID CLSID_WMIExtension = {0xF0975AFE, 0x5C7F, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; -enum IID CLSID_XMLDocument = {0xCFC399AF, 0xD876, 0x11D0, [0x9C, 0x10, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; -enum IID CLSID_XMLDSOControl = {0x550DDA30, 0x0541, 0x11D2, [0x9C, 0xA9, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; -enum IID CLSID_XMLHTTPRequest = {0xED8C108E, 0x4349, 0x11D2, [0x91, 0xA4, 0x00, 0xC0, 0x4F, 0x79, 0x69, 0xE8]}; -enum IID CLSID_XMLParser = {0xD2423620, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; -enum IID DB_PROPERTY_AUTOMATICUPDATE = {0xC8B52209, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_BTREE = {0xC8B52201, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_CHECK_OPTION = {0xC8B5220B, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_CLUSTERED = {0xC8B521FF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_CONSTRAINT_CHECK_DEFERRE = {0xC8B521F0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_DISALLOWNULL = {0xC8B52205, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_DROP_CASCADE = {0xC8B521F3, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_EXPLICITUPDATE = {0xC8B5220A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_FILLFACTOR = {0xC8B52203, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_HASH = {0xC8B52202, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_IGNOREANYNULL = {0xC8B52207, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_IGNORENULL = {0xC8B52206, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_INITIALSIZE = {0xC8B52204, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_NONCLUSTERED = {0xC8B52200, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_ON_COMMIT_PRESERVE_ROWS = {0xC8B52230, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_PRIMARY = {0xC8B521FC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_SORTBOOKMARKS = {0xC8B52208, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DB_PROPERTY_UNIQUE = {0xC8B521F5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBCOL_SELFCOLUMNS = {0xC8B52231, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBCOL_SPECIALCOL = {0xC8B52232, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_COMMAND = {0xC8B522F8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_CONTAINEROBJECT = {0xC8B522FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_DBSQL = {0xC8B521FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_DEFAULT = {0xC8B521FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_DSO = {0xC8B522F4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_HISTOGRAM_ROWSET = {0xC8B52300, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_LDAPDialect = {0xEFF65380, 0x9C98, 0x11CF, [0xB9, 0x63, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_LIKE_DOS = {0xC8B521F7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_LIKE_MAPI = {0xC8B521F9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_LIKE_OFS = {0xC8B521F8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_LIKE_SQL = {0xC8B521F6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_MDX = {0xA07CCCD0, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; -enum IID DBGUID_ROW = {0xC8B522F7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_ROWSET = {0xC8B522F6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_SESSION = {0xC8B522F5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_SQL = {0xC8B522D7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBGUID_STREAM = {0xC8B522F9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_CHARACTERSET = {0xC8B522ED, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_COLLATION = {0xC8B522EA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_COLUMN = {0xC8B522E4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_DATABASE = {0xC8B522E5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_DOMAIN = {0xC8B522E9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_PROCEDURE = {0xC8B522E6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_SCHEMA = {0xC8B522E8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_SCHEMAROWSET = {0xC8B522EC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_TABLE = {0xC8B522E2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_TRANSLATION = {0xC8B522EE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_TRUSTEE = {0xC8B522EB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBOBJECT_VIEW = {0xC8B522E7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_ADSIBIND = {0x6DA66DC8, 0xB7E8, 0x11D2, [0x9D, 0x60, 0x00, 0xC0, 0x4F, 0x68, 0x93, 0x45]}; -enum IID DBPROPSET_ADSISEARCH = {0xCFCFC928, 0x9AA2, 0x11D0, [0xA7, 0x9A, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; -enum IID DBPROPSET_COLUMN = {0xC8B522B9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_COLUMNALL = {0xC8B522F0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_CONSTRAINTALL = {0xC8B522FA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_DATASOURCE = {0xC8B522BA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_DATASOURCEALL = {0xC8B522C0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_DATASOURCEINFO = {0xC8B522BB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_DATASOURCEINFOALL = {0xC8B522C1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_DBINIT = {0xC8B522BC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_DBINITALL = {0xC8B522CA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_INDEX = {0xC8B522BD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_INDEXALL = {0xC8B522F1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_PROPERTIESINERROR = {0xC8B522D4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_ROWSET = {0xC8B522BE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_ROWSETALL = {0xC8B522C2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_SESSION = {0xC8B522C6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_SESSIONALL = {0xC8B522C7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_STREAM = {0xC8B522FD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_STREAMALL = {0xC8B522FE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_TABLE = {0xC8B522BF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_TABLEALL = {0xC8B522F2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_TRUSTEE = {0xC8B522E1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_TRUSTEEALL = {0xC8B522F3, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_VIEW = {0xC8B522DF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBPROPSET_VIEWALL = {0xC8B522FC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_ASSERTIONS = {0xC8B52210, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_CATALOGS = {0xC8B52211, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_CHARACTER_SETS = {0xC8B52212, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_CHECK_CONSTRAINTS = {0xC8B52215, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE = {0xC8B52301, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_COLLATIONS = {0xC8B52213, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_COLUMN_DOMAIN_USAGE = {0xC8B5221B, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_COLUMN_PRIVILEGES = {0xC8B52221, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_COLUMNS = {0xC8B52214, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_CONSTRAINT_COLUMN_USAGE = {0xC8B52216, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_CONSTRAINT_TABLE_USAGE = {0xC8B52217, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_FOREIGN_KEYS = {0xC8B522C4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_INDEXES = {0xC8B5221E, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_KEY_COLUMN_USAGE = {0xC8B52218, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_PRIMARY_KEYS = {0xC8B522C5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_PROCEDURE_COLUMNS = {0xC8B522C9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_PROCEDURE_PARAMETERS = {0xC8B522B8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_PROCEDURES = {0xC8B52224, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_PROVIDER_TYPES = {0xC8B5222C, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_REFERENTIAL_CONSTRAINTS = {0xC8B52219, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_SCHEMATA = {0xC8B52225, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_SQL_LANGUAGES = {0xC8B52226, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_STATISTICS = {0xC8B52227, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_TABLE_CONSTRAINTS = {0xC8B5221A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_TABLE_PRIVILEGES = {0xC8B52222, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_TABLE_STATISTICS = {0xC8B522FF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_TABLES = {0xC8B52229, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_TABLES_INFO = {0xC8B522E0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_TRANSLATIONS = {0xC8B5222A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_TRUSTEE = {0xC8B522EF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_USAGE_PRIVILEGES = {0xC8B52223, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_VIEW_COLUMN_USAGE = {0xC8B5222E, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_VIEW_TABLE_USAGE = {0xC8B5222F, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DBSCHEMA_VIEWS = {0xC8B5222D, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID DDVPTYPE_BROOKTREE = {0x1352A560, 0xDA61, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; -enum IID DDVPTYPE_CCIR656 = {0xFCA326A0, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; -enum IID DDVPTYPE_E_HREFH_VREFL = {0x92783220, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; -enum IID DDVPTYPE_E_HREFL_VREFL = {0xE09C77E0, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; -enum IID DDVPTYPE_PHILIPS = {0x332CF160, 0xDA61, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; -enum IID DIID__SearchAssistantEvents = {0x1611FDDA, 0x445B, 0x11D2, [0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; -enum IID DIID_DispCEventObj = {0x3050F558, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispDOMChildrenCollection = {0x3050F577, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTCAttachBehavior = {0x3050F583, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTCDefaultDispatch = {0x3050F573, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTCDescBehavior = {0x3050F57E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTCEventBehavior = {0x3050F574, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTCMethodBehavior = {0x3050F587, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTCPropertyBehavior = {0x3050F57F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLAnchorElement = {0x3050F502, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLAppBehavior = {0x3050F57C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLAreaElement = {0x3050F503, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLAreasCollection = {0x3050F56A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLAttributeCollection = {0x3050F56C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLBaseElement = {0x3050F518, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLBaseFontElement = {0x3050F504, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLBGsound = {0x3050F53C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLBlockElement = {0x3050F506, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLBody = {0x3050F507, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLBRElement = {0x3050F53A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLButtonElement = {0x3050F51F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLCommentElement = {0x3050F50A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLCurrentStyle = {0x3050F557, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLDDElement = {0x3050F50B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLDefaults = {0x3050F58C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLDivElement = {0x3050F50C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLDivPosition = {0x3050F50F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLDListElement = {0x3050F53B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLDocument = {0x3050F55F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLDOMAttribute = {0x3050F564, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLDOMImplementation = {0x3050F58F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLDOMTextNode = {0x3050F565, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLDTElement = {0x3050F50D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLElementCollection = {0x3050F56B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLEmbed = {0x3050F52E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLFieldSetElement = {0x3050F545, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLFontElement = {0x3050F512, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLFormElement = {0x3050F510, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLFrameBase = {0x3050F541, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLFrameElement = {0x3050F513, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLFrameSetSite = {0x3050F514, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLGenericElement = {0x3050F563, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLHeadElement = {0x3050F561, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLHeaderElement = {0x3050F515, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLHRElement = {0x3050F53D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLHtmlElement = {0x3050F560, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLIFrame = {0x3050F51B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLImg = {0x3050F51C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLInputElement = {0x3050F57D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLIsIndexElement = {0x3050F519, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLLabelElement = {0x3050F522, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLLegendElement = {0x3050F546, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLLIElement = {0x3050F523, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLLinkElement = {0x3050F524, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLListElement = {0x3050F525, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLMapElement = {0x3050F526, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLMarqueeElement = {0x3050F527, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLMetaElement = {0x3050F517, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLNextIdElement = {0x3050F51A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLNoShowElement = {0x3050F528, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLObjectElement = {0x3050F529, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLOListElement = {0x3050F52A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLOptionElement = {0x3050F52B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLParaElement = {0x3050F52C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLParamElement = {0x3050F590, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLPhraseElement = {0x3050F52D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLPopup = {0x3050F589, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLRenderStyle = {0x3050F58B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLRichtextElement = {0x3050F54D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLRuleStyle = {0x3050F55C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLScreen = {0x3050F591, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLScriptElement = {0x3050F530, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLSelectElement = {0x3050F531, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLSpanElement = {0x3050F548, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLSpanFlow = {0x3050F544, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLStyle = {0x3050F55A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLStyleElement = {0x3050F511, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLStyleSheet = {0x3050F58D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLTable = {0x3050F532, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLTableCaption = {0x3050F508, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLTableCell = {0x3050F536, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLTableCol = {0x3050F533, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLTableRow = {0x3050F535, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLTableSection = {0x3050F534, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLTextAreaElement = {0x3050F521, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLTextElement = {0x3050F537, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLTitleElement = {0x3050F516, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLUListElement = {0x3050F538, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLUnknownElement = {0x3050F539, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLWindow2 = {0x3050F55D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispHTMLWindowProxy = {0x3050F55E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispIHTMLInputButtonElement = {0x3050F51E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispIHTMLInputFileElement = {0x3050F542, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispIHTMLInputImage = {0x3050F51D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispIHTMLInputTextElement = {0x3050F520, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DispIHTMLOptionButtonElement = {0x3050F509, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_DMigrationWizardAutoEvents = {0xD2AC137D, 0xA6D8, 0x43B6, [0x98, 0x79, 0xEA, 0x34, 0xB6, 0x7E, 0x18, 0x80]}; -enum IID DIID_DSearchCommandEvents = {0x60890160, 0x69F0, 0x11D1, [0xB7, 0x58, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; -enum IID DIID_DShellFolderViewEvents = {0x62112AA2, 0xEBE4, 0x11CF, [0xA5, 0xFB, 0x00, 0x20, 0xAF, 0xE7, 0x29, 0x2D]}; -enum IID DIID_DShellNameSpaceEvents = {0x55136806, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; -enum IID DIID_DShellWindowsEvents = {0xFE4106E0, 0x399A, 0x11D0, [0xA4, 0x8C, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; -enum IID DIID_DWebBridgeEvents = {0xA6D897FF, 0x0A95, 0x11D1, [0xB0, 0xBA, 0x00, 0x60, 0x08, 0x16, 0x6E, 0x11]}; -enum IID DIID_DWebBrowserEvents = {0xEAB22AC2, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; -enum IID DIID_DWebBrowserEvents2 = {0x34A715A0, 0x6587, 0x11D0, [0x92, 0x4A, 0x00, 0x20, 0xAF, 0xC7, 0xAC, 0x4D]}; -enum IID DIID_HTMLAnchorEvents = {0x3050F29D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLAnchorEvents2 = {0x3050F610, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLAreaEvents = {0x3050F366, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLAreaEvents2 = {0x3050F611, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLButtonElementEvents = {0x3050F2B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLButtonElementEvents2 = {0x3050F617, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLControlElementEvents = {0x3050F4EA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLControlElementEvents2 = {0x3050F612, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLDocumentEvents = {0x3050F260, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLDocumentEvents2 = {0x3050F613, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLElementEvents = {0x3050F33C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLElementEvents2 = {0x3050F60F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLFormElementEvents = {0x3050F364, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLFormElementEvents2 = {0x3050F614, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLFrameSiteEvents = {0x3050F800, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLFrameSiteEvents2 = {0x3050F7FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLImgEvents = {0x3050F25B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLImgEvents2 = {0x3050F616, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLInputFileElementEvents = {0x3050F2AF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLInputFileElementEvents2 = {0x3050F61A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLInputImageEvents = {0x3050F2C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLInputImageEvents2 = {0x3050F61B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLInputTextElementEvents = {0x3050F2A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLInputTextElementEvents2 = {0x3050F618, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLLabelEvents = {0x3050F329, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLLabelEvents2 = {0x3050F61C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLLinkElementEvents = {0x3050F3CC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLLinkElementEvents2 = {0x3050F61D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLMapEvents = {0x3050F3BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLMapEvents2 = {0x3050F61E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLMarqueeElementEvents = {0x3050F2B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLMarqueeElementEvents2 = {0x3050F61F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLNamespaceEvents = {0x3050F6BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLObjectElementEvents = {0x3050F3C4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLObjectElementEvents2 = {0x3050F620, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLOptionButtonElementEvents = {0x3050F2BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLOptionButtonElementEvents2 = {0x3050F619, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLPersistEvents = {0x3050F4C7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLScriptEvents = {0x3050F3E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLScriptEvents2 = {0x3050F621, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLSelectElementEvents = {0x3050F302, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLSelectElementEvents2 = {0x3050F622, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLStyleElementEvents = {0x3050F3CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLStyleElementEvents2 = {0x3050F615, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLTableEvents = {0x3050F407, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLTableEvents2 = {0x3050F623, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLTextContainerEvents = {0x1FF6AA72, 0x5842, 0x11CF, [0xA7, 0x07, 0x00, 0xAA, 0x00, 0xC0, 0x09, 0x8D]}; -enum IID DIID_HTMLTextContainerEvents2 = {0x3050F624, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_HTMLWindowEvents = {0x96A0A4E0, 0xD062, 0x11CF, [0x94, 0xB6, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; -enum IID DIID_HTMLWindowEvents2 = {0x3050F625, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_IRTCDispatchEventNotification = {0x176DDFBE, 0xFEC0, 0x4D55, [0xBC, 0x87, 0x84, 0xCF, 0xF1, 0xEF, 0x7F, 0x91]}; -enum IID DIID_ISWbemSinkEvents = {0x75718CA0, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; -enum IID DIID_ITTAPIDispatchEventNotification = {0x9F34325B, 0x7E62, 0x11D2, [0x94, 0x57, 0x00, 0xC0, 0x4F, 0x8E, 0xC8, 0x88]}; -enum IID DIID_LayoutRectEvents = {0x3050F674, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID DIID_XMLDOMDocumentEvents = {0x3EFAA427, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; -enum IID DPAID_ComPort = {0xF2F0CE00, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID DPAID_INet = {0xC4A54DA0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID DPAID_INetPort = {0xE4524541, 0x8EA5, 0x11D1, [0x8A, 0x96, 0x00, 0x60, 0x97, 0xB0, 0x14, 0x11]}; -enum IID DPAID_INetW = {0xE63232A0, 0x9DBF, 0x11D0, [0x9C, 0xC1, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID DPAID_LobbyProvider = {0x59B95640, 0x9667, 0x11D0, [0xA7, 0x7D, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; -enum IID DPAID_Modem = {0xF6DCC200, 0xA2FE, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID DPAID_ModemW = {0x01FD92E0, 0xA2FF, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID DPAID_Phone = {0x78EC89A0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID DPAID_PhoneW = {0xBA5A7A70, 0x9DBF, 0x11D0, [0x9C, 0xC1, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID DPAID_ServiceProvider = {0x07D916C0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID DPAID_TotalSize = {0x1318F560, 0x912C, 0x11D0, [0x9D, 0xAA, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; -enum IID DPLPROPERTY_LobbyGuid = {0xF56920A0, 0xD218, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; -enum IID DPLPROPERTY_MessagesSupported = {0x762CCDA1, 0xD916, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; -enum IID DPLPROPERTY_PlayerGuid = {0xB4319322, 0xD20D, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; -enum IID DPLPROPERTY_PlayerScore = {0x48784000, 0xD219, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; -enum IID DPSPGUID_IPX = {0x685BC400, 0x9D2C, 0x11CF, [0xA9, 0xCD, 0x00, 0xAA, 0x00, 0x68, 0x86, 0xE3]}; -enum IID DPSPGUID_MODEM = {0x44EAA760, 0xCB68, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID DPSPGUID_SERIAL = {0x0F1D6860, 0x88D9, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID DPSPGUID_TCPIP = {0x36E95EE0, 0x8577, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0x53, 0x4E, 0x82]}; -enum IID DS3DALG_HRTF_FULL = {0xC2413340, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; -enum IID DS3DALG_HRTF_LIGHT = {0xC2413342, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; -enum IID DS3DALG_NO_VIRTUALIZATION = {0xC241333F, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; -enum IID FLAGID_Internet = {0x96300DA0, 0x2BAB, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID FMTID_AudioSummaryInformation = {0x64440490, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; -enum IID FMTID_Briefcase = {0x328D8B21, 0x7729, 0x4BFC, [0x95, 0x4C, 0x90, 0x2B, 0x32, 0x9D, 0x56, 0xB0]}; -enum IID FMTID_DiscardableInformation = {0xD725EBB0, 0xC9B8, 0x11D1, [0x89, 0xBC, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; -enum IID FMTID_Displaced = {0x9B174B33, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; -enum IID FMTID_DocSummaryInformation = {0xD5CDD502, 0x2E9C, 0x101B, [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE]}; -enum IID FMTID_DRM = {0xAEAC19E4, 0x89AE, 0x4508, [0xB9, 0xB7, 0xBB, 0x86, 0x7A, 0xBE, 0xE2, 0xED]}; -enum IID FMTID_ImageProperties = {0x14B81DA1, 0x0135, 0x4D31, [0x96, 0xD9, 0x6C, 0xBF, 0xC9, 0x67, 0x1A, 0x99]}; -enum IID FMTID_ImageSummaryInformation = {0x6444048F, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; -enum IID FMTID_InternetSite = {0x000214A1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID FMTID_Intshcut = {0x000214A0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID FMTID_MediaFileSummaryInformation = {0x64440492, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; -enum IID FMTID_Misc = {0x9B174B34, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; -enum IID FMTID_MUSIC = {0x56A3372E, 0xCE9C, 0x11D2, [0x9F, 0x0E, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6]}; -enum IID FMTID_PropertyBag = {0x20001801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; -enum IID FMTID_Query = {0x49691C90, 0x7E17, 0x101A, [0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9]}; -enum IID FMTID_ShellDetails = {0x28636AA6, 0x953D, 0x11D2, [0xB5, 0xD6, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; -enum IID FMTID_Storage = {0xB725F130, 0x47EF, 0x101A, [0xA5, 0xF1, 0x02, 0x60, 0x8C, 0x9E, 0xEB, 0xAC]}; -enum IID FMTID_SummaryInformation = {0xF29F85E0, 0x4FF9, 0x1068, [0xAB, 0x91, 0x08, 0x00, 0x2B, 0x27, 0xB3, 0xD9]}; -enum IID FMTID_UserDefinedProperties = {0xD5CDD505, 0x2E9C, 0x101B, [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE]}; -enum IID FMTID_VideoSummaryInformation = {0x64440491, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; -enum IID FMTID_Volume = {0x9B174B35, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; -enum IID FMTID_WebView = {0xF2275480, 0xF782, 0x4291, [0xBD, 0x94, 0xF1, 0x36, 0x93, 0x51, 0x3A, 0xEC]}; -enum IID GUID_ACPI_CMOS_INTERFACE_STANDARD = {0x3A8D0384, 0x6505, 0x40CA, [0xBC, 0x39, 0x56, 0xC1, 0x5F, 0x8C, 0x5F, 0xED]}; -enum IID GUID_ACPI_INTERFACE_STANDARD = {0xB091A08A, 0xBA97, 0x11D0, [0xBD, 0x14, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; -enum IID GUID_ACPI_PORT_RANGES_INTERFACE_STAND = {0xF14F609B, 0xCBBD, 0x4957, [0xA6, 0x74, 0xBC, 0x00, 0x21, 0x3F, 0x1C, 0x97]}; -enum IID GUID_ACPI_REGS_INTERFACE_STANDARD = {0x06141966, 0x7245, 0x6369, [0x46, 0x2E, 0x4E, 0x65, 0x6C, 0x73, 0x6F, 0x6E]}; -enum IID GUID_ARBITER_INTERFACE_STANDARD = {0xE644F185, 0x8C0E, 0x11D0, [0xBE, 0xCF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; -enum IID GUID_BUS_INTERFACE_STANDARD = {0x496B8280, 0x6F25, 0x11D0, [0xBE, 0xAF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; -enum IID GUID_BUS_TYPE_1394 = {0xF74E73EB, 0x9AC5, 0x45EB, [0xBE, 0x4D, 0x77, 0x2C, 0xC7, 0x1D, 0xDF, 0xB3]}; -enum IID GUID_BUS_TYPE_AVC = {0xC06FF265, 0xAE09, 0x48F0, [0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83]}; -enum IID GUID_BUS_TYPE_DOT4PRT = {0x441EE001, 0x4342, 0x11D5, [0xA1, 0x84, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; -enum IID GUID_BUS_TYPE_EISA = {0xDDC35509, 0xF3FC, 0x11D0, [0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1]}; -enum IID GUID_BUS_TYPE_HID = {0xEEAF37D0, 0x1963, 0x47C4, [0xAA, 0x48, 0x72, 0x47, 0x6D, 0xB7, 0xCF, 0x49]}; -enum IID GUID_BUS_TYPE_INTERNAL = {0x1530EA73, 0x086B, 0x11D1, [0xA0, 0x9F, 0x00, 0xC0, 0x4F, 0xC3, 0x40, 0xB1]}; -enum IID GUID_BUS_TYPE_IRDA = {0x7AE17DC1, 0xC944, 0x44D6, [0x88, 0x1F, 0x4C, 0x2E, 0x61, 0x05, 0x3B, 0xC1]}; -enum IID GUID_BUS_TYPE_ISAPNP = {0xE676F854, 0xD87D, 0x11D0, [0x92, 0xB2, 0x00, 0xA0, 0xC9, 0x05, 0x5F, 0xC5]}; -enum IID GUID_BUS_TYPE_LPTENUM = {0xC4CA1000, 0x2DDC, 0x11D5, [0xA1, 0x7A, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; -enum IID GUID_BUS_TYPE_MCA = {0x1C75997A, 0xDC33, 0x11D0, [0x92, 0xB2, 0x00, 0xA0, 0xC9, 0x05, 0x5F, 0xC5]}; -enum IID GUID_BUS_TYPE_PCI = {0xC8EBDFB0, 0xB510, 0x11D0, [0x80, 0xE5, 0x00, 0xA0, 0xC9, 0x25, 0x42, 0xE3]}; -enum IID GUID_BUS_TYPE_PCMCIA = {0x09343630, 0xAF9F, 0x11D0, [0x92, 0xE9, 0x00, 0x00, 0xF8, 0x1E, 0x1B, 0x30]}; -enum IID GUID_BUS_TYPE_SERENUM = {0x77114A87, 0x8944, 0x11D1, [0xBD, 0x90, 0x00, 0xA0, 0xC9, 0x06, 0xBE, 0x2D]}; -enum IID GUID_BUS_TYPE_USB = {0x9D7DEBBC, 0xC85D, 0x11D1, [0x9E, 0xB4, 0x00, 0x60, 0x08, 0xC3, 0xA1, 0x9A]}; -enum IID GUID_BUS_TYPE_USBPRINT = {0x441EE000, 0x4342, 0x11D5, [0xA1, 0x84, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; -enum IID GUID_Button = {0xA36D02F0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_CHECKVALUEEXCLUSIVE = {0x6650430C, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_ChordParam = {0xD2AC289E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_Clear_All_Bands = {0xD2AC28AB, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_COLOR = {0x66504301, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_ColorControlCallbacks = {0xEFD60CC2, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; -enum IID GUID_CommandParam = {0xD2AC289D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_CommandParam2 = {0x28F97EF7, 0x9538, 0x11D2, [0x97, 0xA9, 0x00, 0xC0, 0x4F, 0xA3, 0x6E, 0x58]}; -enum IID GUID_ConnectToDLSCollection = {0x1DB1AE6B, 0xE92E, 0x11D1, [0xA8, 0xC5, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0x6E]}; -enum IID GUID_ConstantForce = {0x13541C20, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_CustomForce = {0x13541C2B, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_D3DCallbacks2 = {0x0BA584E1, 0x70B6, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; -enum IID GUID_D3DCallbacks3 = {0xDDF41230, 0xEC0A, 0x11D0, [0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E]}; -enum IID GUID_D3DExtendedCaps = {0x7DE41F80, 0x9D93, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; -enum IID GUID_D3DParseUnknownCommandCallback = {0x2E04FFA0, 0x98E4, 0x11D1, [0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID GUID_Damper = {0x13541C28, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_DDMoreCaps = {0x880BAF30, 0xB030, 0x11D0, [0x8E, 0xA7, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; -enum IID GUID_DDMoreSurfaceCaps = {0x3B8A0466, 0xF269, 0x11D1, [0x88, 0x0B, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; -enum IID GUID_DDStereoMode = {0xF828169C, 0xA8E8, 0x11D2, [0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6]}; -enum IID GUID_DefaultGMCollection = {0xF17E8673, 0xC3B4, 0x11D1, [0x87, 0x0B, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_DEVCLASS_1394 = {0x6BDD1FC1, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; -enum IID GUID_DEVCLASS_1394DEBUG = {0x66F250D6, 0x7801, 0x4A64, [0xB1, 0x39, 0xEE, 0xA8, 0x0A, 0x45, 0x0B, 0x24]}; -enum IID GUID_DEVCLASS_61883 = {0x7EBEFBC0, 0x3200, 0x11D2, [0xB4, 0xC2, 0x00, 0xA0, 0xC9, 0x69, 0x7D, 0x07]}; -enum IID GUID_DEVCLASS_ADAPTER = {0x4D36E964, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_APMSUPPORT = {0xD45B1C18, 0xC8FA, 0x11D1, [0x9F, 0x77, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; -enum IID GUID_DEVCLASS_AVC = {0xC06FF265, 0xAE09, 0x48F0, [0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83]}; -enum IID GUID_DEVCLASS_BATTERY = {0x72631E54, 0x78A4, 0x11D0, [0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; -enum IID GUID_DEVCLASS_BLUETOOTH = {0xE0CBF06C, 0xCD8B, 0x4647, [0xBB, 0x8A, 0x26, 0x3B, 0x43, 0xF0, 0xF9, 0x74]}; -enum IID GUID_DEVCLASS_CDROM = {0x4D36E965, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_COMPUTER = {0x4D36E966, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_DECODER = {0x6BDD1FC2, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; -enum IID GUID_DEVCLASS_DISKDRIVE = {0x4D36E967, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_DISPLAY = {0x4D36E968, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_DOT4 = {0x48721B56, 0x6795, 0x11D2, [0xB1, 0xA8, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2]}; -enum IID GUID_DEVCLASS_DOT4PRINT = {0x49CE6AC8, 0x6F86, 0x11D2, [0xB1, 0xE5, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2]}; -enum IID GUID_DEVCLASS_ENUM1394 = {0xC459DF55, 0xDB08, 0x11D1, [0xB0, 0x09, 0x00, 0xA0, 0xC9, 0x08, 0x1F, 0xF6]}; -enum IID GUID_DEVCLASS_FDC = {0x4D36E969, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_FLOPPYDISK = {0x4D36E980, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_FSFILTER_ACTIVITYMONIT = {0xB86DFF51, 0xA31E, 0x4BAC, [0xB3, 0xCF, 0xE8, 0xCF, 0xE7, 0x5C, 0x9F, 0xC2]}; -enum IID GUID_DEVCLASS_FSFILTER_ANTIVIRUS = {0xB1D1A169, 0xC54F, 0x4379, [0x81, 0xDB, 0xBE, 0xE7, 0xD8, 0x8D, 0x74, 0x54]}; -enum IID GUID_DEVCLASS_FSFILTER_CFSMETADATASER = {0xCDCF0939, 0xB75B, 0x4630, [0xBF, 0x76, 0x80, 0xF7, 0xBA, 0x65, 0x58, 0x84]}; -enum IID GUID_DEVCLASS_FSFILTER_COMPRESSION = {0xF3586BAF, 0xB5AA, 0x49B5, [0x8D, 0x6C, 0x05, 0x69, 0x28, 0x4C, 0x63, 0x9F]}; -enum IID GUID_DEVCLASS_FSFILTER_CONTENTSCREEN = {0x3E3F0674, 0xC83C, 0x4558, [0xBB, 0x26, 0x98, 0x20, 0xE1, 0xEB, 0xA5, 0xC5]}; -enum IID GUID_DEVCLASS_FSFILTER_CONTINUOUSBACK = {0x71AA14F8, 0x6FAD, 0x4622, [0xAD, 0x77, 0x92, 0xBB, 0x9D, 0x7E, 0x69, 0x47]}; -enum IID GUID_DEVCLASS_FSFILTER_COPYPROTECTIO = {0x89786FF1, 0x9C12, 0x402F, [0x9C, 0x9E, 0x17, 0x75, 0x3C, 0x7F, 0x43, 0x75]}; -enum IID GUID_DEVCLASS_FSFILTER_ENCRYPTION = {0xA0A701C0, 0xA511, 0x42FF, [0xAA, 0x6C, 0x06, 0xDC, 0x03, 0x95, 0x57, 0x6F]}; -enum IID GUID_DEVCLASS_FSFILTER_HSM = {0xD546500A, 0x2AEB, 0x45F6, [0x94, 0x82, 0xF4, 0xB1, 0x79, 0x9C, 0x31, 0x77]}; -enum IID GUID_DEVCLASS_FSFILTER_INFRASTRUCTUR = {0xE55FA6F9, 0x128C, 0x4D04, [0xAB, 0xAB, 0x63, 0x0C, 0x74, 0xB1, 0x45, 0x3A]}; -enum IID GUID_DEVCLASS_FSFILTER_OPENFILEBACKU = {0xF8ECAFA6, 0x66D1, 0x41A5, [0x89, 0x9B, 0x66, 0x58, 0x5D, 0x72, 0x16, 0xB7]}; -enum IID GUID_DEVCLASS_FSFILTER_PHYSICALQUOTAM = {0x6A0A8E78, 0xBBA6, 0x4FC4, [0xA7, 0x09, 0x1E, 0x33, 0xCD, 0x09, 0xD6, 0x7E]}; -enum IID GUID_DEVCLASS_FSFILTER_QUOTAMANAGEME = {0x8503C911, 0xA6C7, 0x4919, [0x8F, 0x79, 0x50, 0x28, 0xF5, 0x86, 0x6B, 0x0C]}; -enum IID GUID_DEVCLASS_FSFILTER_REPLICATION = {0x48D3EBC4, 0x4CF8, 0x48FF, [0xB8, 0x69, 0x9C, 0x68, 0xAD, 0x42, 0xEB, 0x9F]}; -enum IID GUID_DEVCLASS_FSFILTER_SECURITYENHANC = {0xD02BC3DA, 0x0C8E, 0x4945, [0x9B, 0xD5, 0xF1, 0x88, 0x3C, 0x22, 0x6C, 0x8C]}; -enum IID GUID_DEVCLASS_FSFILTER_SYSTEM = {0x5D1B9AAA, 0x01E2, 0x46AF, [0x84, 0x9F, 0x27, 0x2B, 0x3F, 0x32, 0x4C, 0x46]}; -enum IID GUID_DEVCLASS_FSFILTER_SYSTEMRECOVER = {0x2DB15374, 0x706E, 0x4131, [0xA0, 0xC7, 0xD7, 0xC7, 0x8E, 0xB0, 0x28, 0x9A]}; -enum IID GUID_DEVCLASS_FSFILTER_UNDELETE = {0xFE8F1572, 0xC67A, 0x48C0, [0xBB, 0xAC, 0x0B, 0x5C, 0x6D, 0x66, 0xCA, 0xFB]}; -enum IID GUID_DEVCLASS_GPS = {0x6BDD1FC3, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; -enum IID GUID_DEVCLASS_HDC = {0x4D36E96A, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_HIDCLASS = {0x745A17A0, 0x74D3, 0x11D0, [0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA]}; -enum IID GUID_DEVCLASS_IMAGE = {0x6BDD1FC6, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; -enum IID GUID_DEVCLASS_INFRARED = {0x6BDD1FC5, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; -enum IID GUID_DEVCLASS_KEYBOARD = {0x4D36E96B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_LEGACYDRIVER = {0x8ECC055D, 0x047F, 0x11D1, [0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1]}; -enum IID GUID_DEVCLASS_MEDIA = {0x4D36E96C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_MEDIUM_CHANGER = {0xCE5939AE, 0xEBDE, 0x11D0, [0xB1, 0x81, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xC4]}; -enum IID GUID_DEVCLASS_MODEM = {0x4D36E96D, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_MONITOR = {0x4D36E96E, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_MOUSE = {0x4D36E96F, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_MTD = {0x4D36E970, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_MULTIFUNCTION = {0x4D36E971, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_MULTIPORTSERIAL = {0x50906CB8, 0xBA12, 0x11D1, [0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; -enum IID GUID_DEVCLASS_NET = {0x4D36E972, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_NETCLIENT = {0x4D36E973, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_NETSERVICE = {0x4D36E974, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_NETTRANS = {0x4D36E975, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_NODRIVER = {0x4D36E976, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_PCMCIA = {0x4D36E977, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_PNPPRINTERS = {0x4658EE7E, 0xF050, 0x11D1, [0xB6, 0xBD, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7]}; -enum IID GUID_DEVCLASS_PORTS = {0x4D36E978, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_PRINTER = {0x4D36E979, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_PRINTERUPGRADE = {0x4D36E97A, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_PROCESSOR = {0x50127DC3, 0x0F36, 0x415E, [0xA6, 0xCC, 0x4C, 0xB3, 0xBE, 0x91, 0x0B, 0x65]}; -enum IID GUID_DEVCLASS_SBP2 = {0xD48179BE, 0xEC20, 0x11D1, [0xB6, 0xB8, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7]}; -enum IID GUID_DEVCLASS_SCSIADAPTER = {0x4D36E97B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_SMARTCARDREADER = {0x50DD5230, 0xBA8A, 0x11D1, [0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; -enum IID GUID_DEVCLASS_SOUND = {0x4D36E97C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_SYSTEM = {0x4D36E97D, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_TAPEDRIVE = {0x6D807884, 0x7D21, 0x11CF, [0x80, 0x1C, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_UNKNOWN = {0x4D36E97E, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVCLASS_USB = {0x36FC9E60, 0xC465, 0x11CF, [0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_DEVCLASS_VOLUME = {0x71A27CDD, 0x812A, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; -enum IID GUID_DEVCLASS_VOLUMESNAPSHOT = {0x533C5B84, 0xEC70, 0x11D2, [0x95, 0x05, 0x00, 0xC0, 0x4F, 0x79, 0xDE, 0xAF]}; -enum IID GUID_DEVCLASS_WCEUSBS = {0x25DBCE51, 0x6C8F, 0x4A72, [0x8A, 0x6D, 0xB5, 0x4C, 0x2B, 0x4F, 0xC8, 0x35]}; -enum IID GUID_DEVICE_INTERFACE_ARRIVAL = {0xCB3A4004, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; -enum IID GUID_DEVICE_INTERFACE_REMOVAL = {0xCB3A4005, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; -enum IID GUID_DEVINTERFACE_CDCHANGER = {0x53F56312, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; -enum IID GUID_DEVINTERFACE_CDROM = {0x53F56308, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; -enum IID GUID_DEVINTERFACE_COMPORT = {0x86E0D1E0, 0x8089, 0x11D0, [0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73]}; -enum IID GUID_DEVINTERFACE_DISK = {0x53F56307, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; -enum IID GUID_DEVINTERFACE_FLOPPY = {0x53F56311, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; -enum IID GUID_DEVINTERFACE_MEDIUMCHANGER = {0x53F56310, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; -enum IID GUID_DEVINTERFACE_PARTITION = {0x53F5630A, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; -enum IID GUID_DEVINTERFACE_SERENUM_BUS_ENUMERA = {0x4D36E978, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_DEVINTERFACE_STORAGEPORT = {0x2ACCFE60, 0xC130, 0x11D2, [0xB0, 0x82, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; -enum IID GUID_DEVINTERFACE_TAPE = {0x53F5630B, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; -enum IID GUID_DEVINTERFACE_VOLUME = {0x53F5630D, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; -enum IID GUID_DEVINTERFACE_WRITEONCEDISK = {0x53F5630C, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; -enum IID GUID_DirectDrawPaletteStream = {0x730C7FFC, 0x5347, 0x11D1, [0x8C, 0x4D, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; -enum IID GUID_DirectDrawSurfaceStream = {0xE043BC46, 0x5317, 0x11D1, [0x8C, 0x4D, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; -enum IID GUID_DirectMusicAllTypes = {0xD2AC2893, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_Disable_Auto_Download = {0xD2AC28AA, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_DisableTempo = {0x45FC707D, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; -enum IID GUID_DisableTimeSig = {0x45FC707B, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; -enum IID GUID_DMUS_PROP_DLS1 = {0x178F2F27, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID GUID_DMUS_PROP_DLS2 = {0xF14599E5, 0x4689, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; -enum IID GUID_DMUS_PROP_Effects = {0xCDA8D611, 0x684A, 0x11D2, [0x87, 0x1E, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_DMUS_PROP_GM_Hardware = {0x178F2F24, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID GUID_DMUS_PROP_GS_Capable = {0x6496ABA2, 0x61B0, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; -enum IID GUID_DMUS_PROP_GS_Hardware = {0x178F2F25, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID GUID_DMUS_PROP_INSTRUMENT2 = {0x865FD372, 0x9F67, 0x11D2, [0x87, 0x2A, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_DMUS_PROP_LegacyCaps = {0xCFA7CDC2, 0x00A1, 0x11D2, [0xAA, 0xD5, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID GUID_DMUS_PROP_MemorySize = {0x178F2F28, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID GUID_DMUS_PROP_SampleMemorySize = {0x178F2F28, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID GUID_DMUS_PROP_SamplePlaybackRate = {0x2A91F713, 0xA4BF, 0x11D2, [0xBB, 0xDF, 0x00, 0x60, 0x08, 0x33, 0xDB, 0xD8]}; -enum IID GUID_DMUS_PROP_SynthSink_DSOUND = {0x0AA97844, 0xC877, 0x11D1, [0x87, 0x0C, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_DMUS_PROP_SynthSink_WAVE = {0x0AA97845, 0xC877, 0x11D1, [0x87, 0x0C, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_DMUS_PROP_Volume = {0xFEDFAE25, 0xE46E, 0x11D1, [0xAA, 0xCE, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID GUID_DMUS_PROP_WavesReverb = {0x04CB5622, 0x32E5, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; -enum IID GUID_DMUS_PROP_WriteLatency = {0x268A0FA0, 0x60F2, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; -enum IID GUID_DMUS_PROP_WritePeriod = {0x268A0FA1, 0x60F2, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; -enum IID GUID_DMUS_PROP_XG_Capable = {0x6496ABA1, 0x61B0, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; -enum IID GUID_DMUS_PROP_XG_Hardware = {0x178F2F26, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID GUID_Download = {0xD2AC28A7, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_Enable_Auto_Download = {0xD2AC28A9, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_EnableTempo = {0x45FC707E, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; -enum IID GUID_EnableTimeSig = {0x45FC707C, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; -enum IID GUID_FONTBOLD = {0x6650430F, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_FONTITALIC = {0x66504310, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_FONTNAME = {0x6650430D, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_FONTSIZE = {0x6650430E, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_FONTSTRIKETHROUGH = {0x66504312, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_FONTUNDERSCORE = {0x66504311, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_Friction = {0x13541C2A, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_HANDLE = {0x66504313, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_HasPathProperties = {0x0002DE81, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID GUID_HIDClass = {0x745A17A0, 0x74D3, 0x11D0, [0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA]}; -enum IID GUID_HIMETRIC = {0x66504300, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_HWPROFILE_CHANGE_CANCELLED = {0xCB3A4002, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; -enum IID GUID_HWPROFILE_CHANGE_COMPLETE = {0xCB3A4003, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; -enum IID GUID_HWPROFILE_QUERY_CHANGE = {0xCB3A4001, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; -enum IID GUID_IDirectMusicBand = {0xD2AC28AC, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_IDirectMusicChordMap = {0xD2AC28AD, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_IDirectMusicStyle = {0xD2AC28A1, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_Inertia = {0x13541C29, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_INT_ROUTE_INTERFACE_STANDARD = {0x70941BF4, 0x0073, 0x11D1, [0xA0, 0x9E, 0x00, 0xC0, 0x4F, 0xC3, 0x40, 0xB1]}; -enum IID GUID_Joystick = {0x6F1D2B70, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_KernelCallbacks = {0x80863800, 0x6B06, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; -enum IID GUID_KernelCaps = {0xFFAA7540, 0x7AA8, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; -enum IID GUID_Key = {0x55728220, 0xD33C, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_KeyboardClass = {0x4D36E96B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_LEGACY_DEVICE_DETECTION_STANDAR = {0x50FEB0DE, 0x596A, 0x11D2, [0xA5, 0xB8, 0x00, 0x00, 0xF8, 0x1A, 0x46, 0x19]}; -enum IID GUID_MediaClass = {0x4D36E96C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_MF_ENUMERATION_INTERFACE = {0xAEB895F0, 0x5586, 0x11D1, [0x8D, 0x84, 0x00, 0xA0, 0xC9, 0x06, 0xB2, 0x44]}; -enum IID GUID_Miscellaneous2Callbacks = {0x406B2F00, 0x3E5A, 0x11D1, [0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A]}; -enum IID GUID_MiscellaneousCallbacks = {0xEFD60CC0, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; -enum IID GUID_MotionCompCallbacks = {0xB1122B40, 0x5DA5, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; -enum IID GUID_MouseClass = {0x4D36E96F, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; -enum IID GUID_MuteParam = {0xD2AC28AF, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_NDIS_802_11_ADD_WEP = {0x4307BFF0, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_AUTHENTICATION_MODE = {0x43920A24, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_BASIC_RATES = {0x4A198516, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_BSSID = {0x2504B6C2, 0x1FA5, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_BSSID_LIST = {0x69526F9A, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_BSSID_LIST_SCAN = {0x0D9E01E1, 0xBA70, 0x11D4, [0xB6, 0x75, 0x00, 0x20, 0x48, 0x57, 0x03, 0x37]}; -enum IID GUID_NDIS_802_11_CONFIGURATION = {0x4A4DF982, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_DESIRED_RATES = {0x452EE08E, 0x2536, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_DISASSOCIATE = {0x43671F40, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_FRAGMENTATION_THRESH = {0x69AAA7C4, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_INFRASTRUCTURE_MODE = {0x697D5A7E, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_NETWORK_TYPE_IN_USE = {0x857E2326, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_NETWORK_TYPES_SUPPOR = {0x8531D6E6, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_NUMBER_OF_ANTENNAS = {0x01779336, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_POWER_MODE = {0x85BE837C, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_PRIVACY_FILTER = {0x6733C4E9, 0x4792, 0x11D4, [0x97, 0xF1, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_REMOVE_WEP = {0x433C345C, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_RSSI = {0x1507DB16, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_RSSI_TRIGGER = {0x155689B8, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_RTS_THRESHOLD = {0x0134D07E, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_RX_ANTENNA_SELECTED = {0x01AC07A2, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_SSID = {0x7D2A90EA, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_STATISTICS = {0x42BB73B0, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_SUPPORTED_RATES = {0x49DB8722, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_TX_ANTENNA_SELECTED = {0x01DBB74A, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_TX_POWER_LEVEL = {0x11E6BA76, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; -enum IID GUID_NDIS_802_11_WEP_STATUS = {0xB027A21F, 0x3CFA, 0x4125, [0x80, 0x0B, 0x3F, 0x7A, 0x18, 0xFD, 0xDC, 0xDC]}; -enum IID GUID_NDIS_802_3_CURRENT_ADDRESS = {0x44795700, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_3_MAC_OPTIONS = {0x44795703, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_3_MAXIMUM_LIST_SIZE = {0x44795702, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_3_MULTICAST_LIST = {0x44795701, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_3_PERMANENT_ADDRESS = {0x447956FF, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_3_RCV_ERROR_ALIGNMENT = {0x44795704, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_3_XMIT_MORE_COLLISIONS = {0x44795706, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_3_XMIT_ONE_COLLISION = {0x44795705, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_5_CURRENT_ADDRESS = {0x44795708, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_5_CURRENT_FUNCTIONAL = {0x44795709, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_5_CURRENT_GROUP = {0x4479570A, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_5_CURRENT_RING_STATE = {0xACF14032, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_5_CURRENT_RING_STATUS = {0x890A36EC, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_5_LAST_OPEN_STATUS = {0x4479570B, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_5_LINE_ERRORS = {0xACF14033, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_5_LOST_FRAMES = {0xACF14034, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_802_5_PERMANENT_ADDRESS = {0x44795707, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_HW_CURRENT_ADDRESS = {0x791AD1A1, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_MAX_AAL0_PACKET_SIZE = {0x791AD1A5, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_MAX_AAL1_PACKET_SIZE = {0x791AD1A6, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_MAX_AAL34_PACKET_SIZE = {0x791AD1A7, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_MAX_AAL5_PACKET_SIZE = {0x791AD191, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_MAX_ACTIVE_VCI_BITS = {0x791AD1A3, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_MAX_ACTIVE_VCS = {0x791AD1A2, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_MAX_ACTIVE_VPI_BITS = {0x791AD1A4, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_RCV_CELLS_DROPPED = {0x0A21480C, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_RCV_CELLS_OK = {0x0A21480A, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_SUPPORTED_AAL_TYPES = {0x791AD1A0, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_SUPPORTED_SERVICE_CATEG = {0x791AD19F, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_SUPPORTED_VC_RATES = {0x791AD19E, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ATM_XMIT_CELLS_OK = {0x0A21480B, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ENUMERATE_ADAPTER = {0x981F2D7F, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_ENUMERATE_VC = {0x981F2D82, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_ATTACHMENT_TYPE = {0xACF1403D, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_DOWNSTREAM_NODE_LONG = {0xACF1403F, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_FRAME_ERRORS = {0xACF14040, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_FRAMES_LOST = {0xACF14041, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_LCONNECTION_STATE = {0xACF14045, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_LCT_FAILURES = {0xACF14043, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_LEM_REJECTS = {0xACF14044, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_LONG_CURRENT_ADDR = {0xACF14036, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_LONG_MAX_LIST_SIZE = {0xACF14038, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_LONG_MULTICAST_LIST = {0xACF14037, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_LONG_PERMANENT_ADDR = {0xACF14035, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_RING_MGT_STATE = {0xACF14042, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_SHORT_CURRENT_ADDR = {0xACF1403A, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_SHORT_MAX_LIST_SIZE = {0xACF1403C, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_SHORT_MULTICAST_LIST = {0xACF1403B, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_SHORT_PERMANENT_ADDR = {0xACF14039, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_FDDI_UPSTREAM_NODE_LONG = {0xACF1403E, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_DRIVER_VERSION = {0x791AD198, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_HARDWARE_STATUS = {0x791AD192, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_LINK_SPEED = {0x791AD195, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_MAC_OPTIONS = {0x791AD19A, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_MEDIA_CONNECT_STATU = {0x791AD19B, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_MEDIA_IN_USE = {0x791AD194, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_MEDIA_SUPPORTED = {0x791AD193, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_MINIMUM_LINK_SPEED = {0x791AD19D, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_RCV_PDUS_ERROR = {0x0A214808, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_RCV_PDUS_NO_BUFFER = {0x0A214809, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_RCV_PDUS_OK = {0x0A214806, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_VENDOR_DESCRIPTION = {0x791AD197, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_VENDOR_DRIVER_VERSI = {0x791AD19C, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_VENDOR_ID = {0x791AD196, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_XMIT_PDUS_ERROR = {0x0A214807, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CO_XMIT_PDUS_OK = {0x0A214805, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CURRENT_LOOKAHEAD = {0x5EC10361, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_CURRENT_PACKET_FILTER = {0x5EC10360, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_DRIVER_VERSION = {0x5EC10362, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_HARDWARE_STATUS = {0x5EC10354, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_LINK_SPEED = {0x5EC10359, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_MAC_OPTIONS = {0x5EC10365, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_MAXIMUM_FRAME_SIZE = {0x5EC10358, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_MAXIMUM_LOOKAHEAD = {0x5EC10357, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_MAXIMUM_SEND_PACKETS = {0x5EC10367, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_MAXIMUM_TOTAL_SIZE = {0x5EC10363, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_MEDIA_CONNECT_STATUS = {0x5EC10366, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_MEDIA_IN_USE = {0x5EC10356, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_MEDIA_SUPPORTED = {0x5EC10355, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_PHYSICAL_MEDIUM = {0x418CA16D, 0x3937, 0x4208, [0x94, 0x0A, 0xEC, 0x61, 0x96, 0x27, 0x80, 0x85]}; -enum IID GUID_NDIS_GEN_RCV_ERROR = {0x447956FD, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_RCV_NO_BUFFER = {0x447956FE, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_RCV_OK = {0x447956FB, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_RECEIVE_BLOCK_SIZE = {0x5EC1035D, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_RECEIVE_BUFFER_SPACE = {0x5EC1035B, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_TRANSMIT_BLOCK_SIZE = {0x5EC1035C, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_TRANSMIT_BUFFER_SPACE = {0x5EC1035A, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_VENDOR_DESCRIPTION = {0x5EC1035F, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_VENDOR_DRIVER_VERSION = {0x447956F9, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_VENDOR_ID = {0x5EC1035E, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_VLAN_ID = {0x765DC702, 0xC5E8, 0x4B67, [0x84, 0x3B, 0x3F, 0x5A, 0x4F, 0xF2, 0x64, 0x8B]}; -enum IID GUID_NDIS_GEN_XMIT_ERROR = {0x447956FC, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_GEN_XMIT_OK = {0x447956FA, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_LAN_CLASS = {0xAD498944, 0x762F, 0x11D0, [0x8D, 0xCB, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_NOTIFY_ADAPTER_ARRIVAL = {0x981F2D81, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_NOTIFY_ADAPTER_REMOVAL = {0x981F2D80, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_NOTIFY_BIND = {0x5413531C, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_NOTIFY_UNBIND = {0x6E3CE1EC, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_NOTIFY_VC_ARRIVAL = {0x182F9E0C, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_NOTIFY_VC_REMOVAL = {0x981F2D79, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_STATUS_LINK_SPEED_CHANGE = {0x981F2D85, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_STATUS_MEDIA_CONNECT = {0x981F2D7D, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_STATUS_MEDIA_DISCONNECT = {0x981F2D7E, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_STATUS_MEDIA_SPECIFIC_INDIC = {0x981F2D84, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_STATUS_RESET_END = {0x981F2D77, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_STATUS_RESET_START = {0x981F2D76, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; -enum IID GUID_NDIS_WAKE_ON_MAGIC_PACKET_ONLY = {0xA14F1C97, 0x8839, 0x4F8A, [0x99, 0x96, 0xA2, 0x89, 0x96, 0xEB, 0xBF, 0x1D]}; -enum IID GUID_NETSHELL_PROPS = {0x2D15A9A1, 0xA556, 0x4189, [0x91, 0xAD, 0x02, 0x74, 0x58, 0xF1, 0x1A, 0x07]}; -enum IID GUID_NonLocalVidMemCaps = {0x86C4FA80, 0x8D84, 0x11D0, [0x94, 0xE8, 0x00, 0xC0, 0x4F, 0xC3, 0x41, 0x37]}; -enum IID GUID_NOTIFICATION_CHORD = {0xD2AC289B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_NOTIFICATION_COMMAND = {0xD2AC289C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_NOTIFICATION_MEASUREANDBEAT = {0xD2AC289A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_NOTIFICATION_PERFORMANCE = {0x81F75BC5, 0x4E5D, 0x11D2, [0xBC, 0xC7, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; -enum IID GUID_NOTIFICATION_SEGMENT = {0xD2AC2899, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_NULL = {0x00000000, 0x0000, 0x0000, [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; -enum IID GUID_OPTIONVALUEEXCLUSIVE = {0x6650430B, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_OptSurfaceKmodeInfo = {0xE05C8472, 0x51D4, 0x11D1, [0x8C, 0xCE, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID GUID_OptSurfaceUmodeInfo = {0x9D792804, 0x5FA8, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID GUID_PathProperty = {0x0002DE80, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID GUID_PCI_BUS_INTERFACE_STANDARD = {0x496B8281, 0x6F25, 0x11D0, [0xBE, 0xAF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; -enum IID GUID_PCI_DEVICE_PRESENT_INTERFACE = {0xD1B82C26, 0xBF49, 0x45EF, [0xB2, 0x16, 0x71, 0xCB, 0xD7, 0x88, 0x9B, 0x57]}; -enum IID GUID_PCMCIA_BUS_INTERFACE_STANDARD = {0x76173AF0, 0xC504, 0x11D1, [0x94, 0x7F, 0x00, 0xC0, 0x4F, 0xB9, 0x60, 0xEE]}; -enum IID GUID_PerfAutoDownload = {0xFB09565B, 0x3631, 0x11D2, [0xBC, 0xB8, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; -enum IID GUID_PerfMasterGrooveLevel = {0xD2AC28B2, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_PerfMasterTempo = {0xD2AC28B0, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_PerfMasterVolume = {0xD2AC28B1, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_PNP_CUSTOM_NOTIFICATION = {0xACA73F8E, 0x8D23, 0x11D1, [0xAC, 0x7D, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xD0]}; -enum IID GUID_PNP_POWER_NOTIFICATION = {0xC2CF0660, 0xEB7A, 0x11D1, [0xBD, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xD0]}; -enum IID GUID_POV = {0xA36D02F2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_POWER_DEVICE_ENABLE = {0x827C0A6F, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; -enum IID GUID_POWER_DEVICE_TIMEOUTS = {0xA45DA735, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; -enum IID GUID_POWER_DEVICE_WAKE_ENABLE = {0xA9546A82, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; -enum IID GUID_QOS_BESTEFFORT_BANDWIDTH = {0xED885290, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; -enum IID GUID_QOS_ENABLE_AVG_STATS = {0xBAFB6D11, 0x27C4, 0x4801, [0xA4, 0x6F, 0xEF, 0x80, 0x80, 0xC1, 0x88, 0xC8]}; -enum IID GUID_QOS_ENABLE_WINDOW_ADJUSTMENT = {0xAA966725, 0xD3E9, 0x4C55, [0xB3, 0x35, 0x2A, 0x00, 0x27, 0x9A, 0x1E, 0x64]}; -enum IID GUID_QOS_FLOW_8021P_CONFORMING = {0x08C1E013, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; -enum IID GUID_QOS_FLOW_8021P_NONCONFORMING = {0x09023F91, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; -enum IID GUID_QOS_FLOW_COUNT = {0x1147F880, 0x40ED, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; -enum IID GUID_QOS_FLOW_IP_CONFORMING = {0x07F99A8B, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; -enum IID GUID_QOS_FLOW_IP_NONCONFORMING = {0x087A5987, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; -enum IID GUID_QOS_FLOW_MODE = {0x5C82290A, 0x515A, 0x11D2, [0x8E, 0x58, 0x00, 0xC0, 0x4F, 0xC9, 0xBF, 0xCB]}; -enum IID GUID_QOS_ISSLOW_FLOW = {0xABF273A4, 0xEE07, 0x11D2, [0xBE, 0x1B, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; -enum IID GUID_QOS_LATENCY = {0xFC408EF0, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; -enum IID GUID_QOS_MAX_OUTSTANDING_SENDS = {0x161FFA86, 0x6120, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; -enum IID GUID_QOS_NON_BESTEFFORT_LIMIT = {0x185C44E0, 0x40ED, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; -enum IID GUID_QOS_REMAINING_BANDWIDTH = {0xC4C51720, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; -enum IID GUID_QOS_STATISTICS_BUFFER = {0xBB2C0980, 0xE900, 0x11D1, [0xB0, 0x7E, 0x00, 0x80, 0xC7, 0x13, 0x82, 0xBF]}; -enum IID GUID_QOS_TIMER_RESOLUTION = {0xBA10CC88, 0xF13E, 0x11D2, [0xBE, 0x1B, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; -enum IID GUID_RampForce = {0x13541C21, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_RhythmParam = {0xD2AC289F, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_RxAxis = {0xA36D02F4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_RyAxis = {0xA36D02F5, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_RzAxis = {0xA36D02E3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_SawtoothDown = {0x13541C26, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_SawtoothUp = {0x13541C25, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_SeedVariations = {0x65B76FA5, 0xFF37, 0x11D2, [0x81, 0x4E, 0x00, 0xC0, 0x4F, 0xA3, 0x6E, 0x58]}; -enum IID GUID_Sine = {0x13541C23, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_Slider = {0xA36D02E4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_Spring = {0x13541C27, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_Square = {0x13541C22, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_StandardMIDIFile = {0x06621075, 0xE92E, 0x11D1, [0xA8, 0xC5, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0x6E]}; -enum IID GUID_SysKeyboard = {0x6F1D2B61, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_SysKeyboardEm = {0x6F1D2B82, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_SysKeyboardEm2 = {0x6F1D2B83, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_SysMouse = {0x6F1D2B60, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_SysMouseEm = {0x6F1D2B80, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_SysMouseEm2 = {0x6F1D2B81, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_TARGET_DEVICE_QUERY_REMOVE = {0xCB3A4006, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; -enum IID GUID_TARGET_DEVICE_REMOVE_CANCELLED = {0xCB3A4007, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; -enum IID GUID_TARGET_DEVICE_REMOVE_COMPLETE = {0xCB3A4008, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; -enum IID GUID_TempoParam = {0xD2AC28A5, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_TimeSignature = {0xD2AC28A4, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_TRANSLATOR_INTERFACE_STANDARD = {0x6C154A92, 0xAACF, 0x11D0, [0x8D, 0x2A, 0x00, 0xA0, 0xC9, 0x06, 0xB2, 0x44]}; -enum IID GUID_Triangle = {0x13541C24, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID GUID_TRISTATE = {0x6650430A, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_Unknown = {0xA36D02F3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_Unload = {0xD2AC28A8, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID GUID_UserModeDriverInfo = {0xF0B0E8E2, 0x5F97, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID GUID_UserModeDriverPassword = {0x97F861B6, 0x60A1, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID GUID_VideoPortCallbacks = {0xEFD60CC1, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; -enum IID GUID_VideoPortCaps = {0xEFD60CC3, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; -enum IID GUID_XAxis = {0xA36D02E0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_XPOS = {0x66504306, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_XPOSPIXEL = {0x66504302, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_XSIZE = {0x66504308, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_XSIZEPIXEL = {0x66504304, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_YAxis = {0xA36D02E1, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_YPOS = {0x66504307, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_YPOSPIXEL = {0x66504303, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_YSIZE = {0x66504309, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_YSIZEPIXEL = {0x66504305, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID GUID_ZAxis = {0xA36D02E2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID GUID_ZPixelFormats = {0x93869880, 0x36CF, 0x11D1, [0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE]}; -enum IID IID_AsyncIAdviseSink = {0x00000150, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_AsyncIAdviseSink2 = {0x00000151, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_AsyncIBackgroundCopyCallback = {0xCA29D251, 0xB4BB, 0x4679, [0xA3, 0xD9, 0xAE, 0x80, 0x06, 0x11, 0x9D, 0x54]}; -enum IID IID_AsyncIClusCfgBaseCluster = {0xA8A5C614, 0x2518, 0x47F5, [0x96, 0xCA, 0xCA, 0xFA, 0x7F, 0xFB, 0xAF, 0x68]}; -enum IID IID_AsyncIClusCfgCallback = {0xEBCE8945, 0xAC69, 0x4B3A, [0x86, 0x5D, 0xE2, 0xD4, 0xEB, 0x33, 0xE4, 0x1B]}; -enum IID IID_AsyncIClusCfgClusterInfo = {0x8BDBA247, 0x04F5, 0x4114, [0x83, 0x7E, 0xB2, 0x63, 0x41, 0x2A, 0x4B, 0x64]}; -enum IID IID_AsyncIClusCfgCredentials = {0x54AA9406, 0xA409, 0x4B49, [0xB3, 0x14, 0x5F, 0x0A, 0x0C, 0xE4, 0xC8, 0x8F]}; -enum IID IID_AsyncIClusCfgEvictCleanup = {0x6FE3E362, 0xD373, 0x4C5F, [0xA0, 0xAF, 0x1D, 0xFE, 0x84, 0x93, 0xC6, 0x55]}; -enum IID IID_AsyncIClusCfgInitialize = {0x2A0EB82E, 0xF878, 0x492A, [0x95, 0x1E, 0xAE, 0x00, 0x09, 0x18, 0xC4, 0xA6]}; -enum IID IID_AsyncIClusCfgIPAddressInfo = {0xAAEAF0A5, 0xE310, 0x4604, [0xA5, 0x5E, 0x2F, 0x9D, 0xDC, 0x41, 0x57, 0xA9]}; -enum IID IID_AsyncIClusCfgManagedResourceInfo = {0x73616028, 0x1243, 0x4749, [0xAD, 0x84, 0x0B, 0x5E, 0xB3, 0x58, 0xFF, 0xA0]}; -enum IID IID_AsyncIClusCfgMemberSetChangeListe = {0x2B645350, 0x2643, 0x4ABC, [0xA4, 0xE5, 0x82, 0x4D, 0x88, 0x1B, 0x75, 0x82]}; -enum IID IID_AsyncIClusCfgNetworkInfo = {0xED71FD2D, 0xAD02, 0x4DFC, [0xB3, 0x76, 0x5F, 0xFA, 0x5F, 0x5A, 0x7C, 0x2C]}; -enum IID IID_AsyncIClusCfgNodeInfo = {0x4F3BB40B, 0xDF27, 0x40A0, [0xB3, 0x1A, 0xBA, 0x18, 0x32, 0x4C, 0xEB, 0x9D]}; -enum IID IID_AsyncIClusCfgPartitionInfo = {0xEC1EBD9F, 0x5866, 0x4846, [0x89, 0x52, 0xEC, 0x36, 0xC3, 0x96, 0x1E, 0xEF]}; -enum IID IID_AsyncIClusCfgResourceTypeCreate = {0x3AFCE3B9, 0x5F3E, 0x4DDF, [0xA8, 0xF4, 0x4B, 0x4F, 0xCB, 0xF2, 0x8F, 0x8F]}; -enum IID IID_AsyncIClusCfgResourceTypeInfo = {0xC649A282, 0xC847, 0x4F5C, [0x98, 0x41, 0xD2, 0xF7, 0x3B, 0x5A, 0xA7, 0x1D]}; -enum IID IID_AsyncIClusCfgServer = {0x2A1640AA, 0x4561, 0x4A08, [0xB5, 0xD9, 0x0A, 0xA3, 0x8C, 0x6B, 0xE6, 0x28]}; -enum IID IID_AsyncIClusCfgStartupListener = {0xD282CAF0, 0x2EDE, 0x4AB9, [0xA5, 0xD5, 0xF7, 0xBD, 0xE3, 0xD2, 0x3F, 0x10]}; -enum IID IID_AsyncIClusCfgStartupNotify = {0xC2B0D06A, 0x6353, 0x4EE1, [0xB2, 0x53, 0x6B, 0x0D, 0x75, 0xDB, 0x2C, 0xD3]}; -enum IID IID_AsyncIEnumClusCfgIPAddresses = {0xBD5F35BA, 0x0BC0, 0x455F, [0x92, 0x6D, 0xC3, 0xD3, 0x56, 0x41, 0x94, 0x87]}; -enum IID IID_AsyncIEnumClusCfgManagedResource = {0xB138483F, 0x9695, 0x4FA6, [0xA9, 0x8F, 0x0D, 0xE2, 0xFB, 0x35, 0x54, 0x49]}; -enum IID IID_AsyncIEnumClusCfgNetworks = {0xF56B9B0D, 0xE7B8, 0x49EC, [0xA8, 0x43, 0x54, 0x75, 0x07, 0x6B, 0x94, 0x7D]}; -enum IID IID_AsyncIEnumClusCfgPartitions = {0x4440BB6A, 0xB0AC, 0x479D, [0xB5, 0x34, 0x72, 0x65, 0xA3, 0x1D, 0x6C, 0x56]}; -enum IID IID_AsyncIMultiQI = {0x000E0020, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_AsyncIPipeByte = {0xDB2F3ACB, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; -enum IID IID_AsyncIPipeDouble = {0xDB2F3ACF, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; -enum IID IID_AsyncIPipeLong = {0xDB2F3ACD, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; -enum IID IID_AsyncIUnknown = {0x000E0000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_DFConstraint = {0x4A3DF050, 0x23BD, 0x11D2, [0x93, 0x9F, 0x00, 0xA0, 0xC9, 0x1E, 0xED, 0xBA]}; -enum IID IID_DIEnumWbemClassObject = {0xCB7CA037, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID IID_DIWbemCallResult = {0xCB7CA039, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID IID_DIWbemClassObject = {0xCB7CA033, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID IID_DIWbemContext = {0xCB7CA038, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID IID_DIWbemLocator = {0xCB7CA035, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID IID_DIWbemObjectSink = {0xCB7CA036, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID IID_DIWbemQualifierSet = {0xCB7CA034, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID IID_DIWbemServices = {0xCB7CA03A, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID IID_Folder = {0xBBCBDE60, 0xC3FF, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_Folder2 = {0xF0D2D8EF, 0x3890, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; -enum IID IID_Folder3 = {0xA7AE5F64, 0xC4D7, 0x4D7F, [0x93, 0x07, 0x4D, 0x24, 0xEE, 0x54, 0xB8, 0x41]}; -enum IID IID_FolderItem = {0xFAC32C80, 0xCBE4, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_FolderItem2 = {0xEDC817AA, 0x92B8, 0x11D1, [0xB0, 0x75, 0x00, 0xC0, 0x4F, 0xC3, 0x3A, 0xA5]}; -enum IID IID_FolderItems = {0x744129E0, 0xCBE5, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_FolderItems2 = {0xC94F0AD0, 0xF363, 0x11D2, [0xA3, 0x27, 0x00, 0xC0, 0x4F, 0x8E, 0xEC, 0x7F]}; -enum IID IID_FolderItems3 = {0xEAA7C309, 0xBBEC, 0x49D5, [0x82, 0x1D, 0x64, 0xD9, 0x66, 0xCB, 0x66, 0x7F]}; -enum IID IID_FolderItemVerb = {0x08EC3E00, 0x50B0, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; -enum IID IID_FolderItemVerbs = {0x1F8352C0, 0x50B0, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; -enum IID IID_IAccessControl = {0xEEDD23E0, 0x8410, 0x11CE, [0xA1, 0xC3, 0x08, 0x00, 0x2B, 0x2B, 0x8D, 0x8F]}; -enum IID IID_IAccessible = {0x618736E0, 0x3C3D, 0x11CF, [0x81, 0x0C, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71]}; -enum IID IID_IAccessibleHandler = {0x03022430, 0xABC4, 0x11D0, [0xBD, 0xE2, 0x00, 0xAA, 0x00, 0x1A, 0x19, 0x53]}; -enum IID IID_IAccessor = {0x0C733A8C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IAccIdentity = {0x7852B78D, 0x1CFD, 0x41C1, [0xA6, 0x15, 0x9C, 0x0C, 0x85, 0x96, 0x0B, 0x5F]}; -enum IID IID_IAccountDiscovery = {0xFA202BBC, 0x6ABE, 0x4C17, [0xB1, 0x84, 0x57, 0x0B, 0x6C, 0xF2, 0x56, 0xA6]}; -enum IID IID_IAccPropServer = {0x76C0DBBB, 0x15E0, 0x4E7B, [0xB6, 0x1B, 0x20, 0xEE, 0xEA, 0x20, 0x01, 0xE0]}; -enum IID IID_IAccPropServices = {0x6E26E776, 0x04F0, 0x495D, [0x80, 0xE4, 0x33, 0x30, 0x35, 0x2E, 0x31, 0x69]}; -enum IID IID_IACList = {0x77A130B0, 0x94FD, 0x11D0, [0xA5, 0x44, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; -enum IID IID_IACList2 = {0x470141A0, 0x5186, 0x11D2, [0xBB, 0xB6, 0x00, 0x60, 0x97, 0x7B, 0x46, 0x4C]}; -enum IID IID_IActionProgress = {0x49FF1173, 0xEADC, 0x446D, [0x92, 0x85, 0x15, 0x64, 0x53, 0xA6, 0x43, 0x1C]}; -enum IID IID_IActionProgressDialog = {0x49FF1172, 0xEADC, 0x446D, [0x92, 0x85, 0x15, 0x64, 0x53, 0xA6, 0x43, 0x1C]}; -enum IID IID_IActiveDesktop = {0xF490EB00, 0x1240, 0x11D1, [0x98, 0x88, 0x00, 0x60, 0x97, 0xDE, 0xAC, 0xF9]}; -enum IID IID_IActiveIME = {0x6FE20962, 0xD077, 0x11D0, [0x8F, 0xE7, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; -enum IID IID_IActiveIME2 = {0xE1C4BF0E, 0x2D53, 0x11D2, [0x93, 0xE1, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; -enum IID IID_IActiveIMMApp = {0x08C0E040, 0x62D1, 0x11D1, [0x93, 0x26, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; -enum IID IID_IActiveIMMIME = {0x08C03411, 0xF96B, 0x11D0, [0xA4, 0x75, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; -enum IID IID_IActiveIMMMessagePumpOwner = {0xB5CF2CFA, 0x8AEB, 0x11D1, [0x93, 0x64, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; -enum IID IID_IActiveIMMRegistrar = {0xB3458082, 0xBD00, 0x11D1, [0x93, 0x9B, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; -enum IID IID_IActiveScript = {0xBB1A2AE1, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID IID_IActiveScriptAuthor = {0x9C109DA0, 0x7006, 0x11D1, [0xB3, 0x6C, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xB2]}; -enum IID IID_IActiveScriptAuthorProcedure = {0x7E2D4B70, 0xBD9A, 0x11D0, [0x93, 0x36, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; -enum IID IID_IActiveScriptDebug = {0x51973C10, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IActiveScriptDebug32 = {0x51973C10, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IActiveScriptDebug64 = {0xBC437E23, 0xF5B8, 0x47F4, [0xBB, 0x79, 0x7D, 0x1C, 0xE5, 0x48, 0x3B, 0x86]}; -enum IID IID_IActiveScriptEncode = {0xBB1A2AE3, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID IID_IActiveScriptError = {0xEAE1BA61, 0xA4ED, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID IID_IActiveScriptError64 = {0xB21FB2A1, 0x5B8F, 0x4963, [0x8C, 0x21, 0x21, 0x45, 0x0F, 0x84, 0xED, 0x7F]}; -enum IID IID_IActiveScriptErrorDebug = {0x51973C12, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IActiveScriptGarbageCollector = {0x6AA2C4A0, 0x2B53, 0x11D4, [0xA2, 0xA0, 0x00, 0x10, 0x4B, 0xD3, 0x50, 0x90]}; -enum IID IID_IActiveScriptHostEncode = {0xBEE9B76E, 0xCFE3, 0x11D1, [0xB7, 0x47, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; -enum IID IID_IActiveScriptParse = {0xBB1A2AE2, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID IID_IActiveScriptParse32 = {0xBB1A2AE2, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID IID_IActiveScriptParse64 = {0xC7EF7658, 0xE1EE, 0x480E, [0x97, 0xEA, 0xD5, 0x2C, 0xB4, 0xD7, 0x6D, 0x17]}; -enum IID IID_IActiveScriptParseProcedure = {0xAA5B6A80, 0xB834, 0x11D0, [0x93, 0x2F, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; -enum IID IID_IActiveScriptParseProcedure2_32 = {0x71EE5B20, 0xFB04, 0x11D1, [0xB3, 0xA8, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xB2]}; -enum IID IID_IActiveScriptParseProcedure2_64 = {0xFE7C4271, 0x210C, 0x448D, [0x9F, 0x54, 0x76, 0xDA, 0xB7, 0x04, 0x7B, 0x28]}; -enum IID IID_IActiveScriptParseProcedure32 = {0xAA5B6A80, 0xB834, 0x11D0, [0x93, 0x2F, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; -enum IID IID_IActiveScriptParseProcedure64 = {0xC64713B6, 0xE029, 0x4CC5, [0x92, 0x00, 0x43, 0x8B, 0x72, 0x89, 0x0B, 0x6A]}; -enum IID IID_IActiveScriptParseProcedureOld = {0x1CFF0050, 0x6FDD, 0x11D0, [0x93, 0x28, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; -enum IID IID_IActiveScriptParseProcedureOld32 = {0x1CFF0050, 0x6FDD, 0x11D0, [0x93, 0x28, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; -enum IID IID_IActiveScriptParseProcedureOld64 = {0x21F57128, 0x08C9, 0x4638, [0xBA, 0x12, 0x22, 0xD1, 0x5D, 0x88, 0xDC, 0x5C]}; -enum IID IID_IActiveScriptProperty = {0x4954E0D0, 0xFBC7, 0x11D1, [0x84, 0x10, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; -enum IID IID_IActiveScriptSIPInfo = {0x764651D0, 0x38DE, 0x11D4, [0xA2, 0xA3, 0x00, 0x10, 0x4B, 0xD3, 0x50, 0x90]}; -enum IID IID_IActiveScriptSite = {0xDB01A1E3, 0xA42B, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID IID_IActiveScriptSiteDebug32 = {0x51973C11, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IActiveScriptSiteDebug64 = {0xD6B96B0A, 0x7463, 0x402C, [0x92, 0xAC, 0x89, 0x98, 0x42, 0x26, 0x94, 0x2F]}; -enum IID IID_IActiveScriptSiteInterruptPoll = {0x539698A0, 0xCDCA, 0x11CF, [0xA5, 0xEB, 0x00, 0xAA, 0x00, 0x47, 0xA0, 0x63]}; -enum IID IID_IActiveScriptSiteWindow = {0xD10F6761, 0x83E9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID IID_IActiveScriptStats = {0xB8DA6310, 0xE19B, 0x11D0, [0x93, 0x3C, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; -enum IID IID_IActiveXSafetyProvider = {0x69FF5101, 0xFC63, 0x11D0, [0x97, 0xEB, 0x00, 0xAA, 0x00, 0x61, 0x53, 0x33]}; -enum IID IID_IAdapterInfo = {0x480BF94A, 0x09FD, 0x4F8A, [0xA3, 0xE0, 0xB0, 0x70, 0x02, 0x82, 0xD8, 0x4D]}; -enum IID IID_IAdapterNotificationSink = {0x44AB2DC3, 0x23B2, 0x47DE, [0x82, 0x28, 0x2E, 0x1C, 0xCE, 0xEB, 0x99, 0x11]}; -enum IID IID_IAddEvents = {0xD710A6AE, 0x3371, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; -enum IID IID_IAddressBarParser = {0xC9D81948, 0x443A, 0x40C7, [0x94, 0x5C, 0x5E, 0x17, 0x1B, 0x8C, 0x66, 0xB4]}; -enum IID IID_IAddrExclusionControl = {0x00000148, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IAddrTrackingControl = {0x00000147, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IADs = {0xFD8256D0, 0xFD15, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; -enum IID IID_IADsAccessControlEntry = {0xB4F3A14C, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsAccessControlList = {0xB7EE91CC, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsAcePrivate = {0xFD145DF2, 0xFD96, 0x4135, [0x9B, 0x22, 0x68, 0xFF, 0x0F, 0x6B, 0xF5, 0xBB]}; -enum IID IID_IADsAcl = {0x8452D3AB, 0x0869, 0x11D1, [0xA3, 0x77, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsADSystemInfo = {0x5BB11929, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; -enum IID IID_IADsBackLink = {0xFD1302BD, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsCaseIgnoreList = {0x7B66B533, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsClass = {0xC8F93DD0, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; -enum IID IID_IADsCollection = {0x72B945E0, 0x253B, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsComputer = {0xEFE3CC70, 0x1D9F, 0x11CF, [0xB1, 0xF3, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; -enum IID IID_IADsComputerOperations = {0xEF497680, 0x1D9F, 0x11CF, [0xB1, 0xF3, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; -enum IID IID_IADsContainer = {0x001677D0, 0xFD16, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; -enum IID IID_IADsDeleteOps = {0xB2BD0902, 0x8878, 0x11D1, [0x8C, 0x21, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsDNWithBinary = {0x7E99C0A2, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; -enum IID IID_IADsDNWithString = {0x370DF02E, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; -enum IID IID_IADsDomain = {0x00E4C220, 0xFD16, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; -enum IID IID_IADsEmail = {0x97AF011A, 0x478E, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsExtension = {0x3D35553C, 0xD2B0, 0x11D1, [0xB1, 0x7B, 0x00, 0x00, 0xF8, 0x75, 0x93, 0xA0]}; -enum IID IID_IADsFaxNumber = {0xA910DEA9, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsFileService = {0xA89D1900, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsFileServiceOperations = {0xA02DED10, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsFileShare = {0xEB6DCAF0, 0x4B83, 0x11CF, [0xA9, 0x95, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsGroup = {0x27636B00, 0x410F, 0x11CF, [0xB1, 0xFF, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; -enum IID IID_IADsHold = {0xB3EB3B37, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsLargeInteger = {0x9068270B, 0x0939, 0x11D1, [0x8B, 0xE1, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsLocality = {0xA05E03A2, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsMembers = {0x451A0030, 0x72EC, 0x11CF, [0xB0, 0x3B, 0x00, 0xAA, 0x00, 0x6E, 0x09, 0x75]}; -enum IID IID_IADsNamespaces = {0x28B96BA0, 0xB330, 0x11CF, [0xA9, 0xAD, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsNameTranslate = {0xB1B272A3, 0x3625, 0x11D1, [0xA3, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsNetAddress = {0xB21A50A9, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsO = {0xA1CD2DC6, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsObjectOptions = {0x46F14FDA, 0x232B, 0x11D1, [0xA8, 0x08, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; -enum IID IID_IADsObjOptPrivate = {0x81CBB829, 0x1867, 0x11D2, [0x92, 0x20, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; -enum IID IID_IADsOctetList = {0x7B28B80F, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsOpenDSObject = {0xDDF2891E, 0x0F9C, 0x11D0, [0x8A, 0xD4, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsOU = {0xA2F733B8, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsPath = {0xB287FCD5, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsPathname = {0xD592AED4, 0xF420, 0x11D0, [0xA3, 0x6E, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsPathnameProvider = {0xAACD1D30, 0x8BD0, 0x11D2, [0x92, 0xA9, 0x00, 0xC0, 0x4F, 0x79, 0xF8, 0x34]}; -enum IID IID_IADsPostalAddress = {0x7ADECF29, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsPrintJob = {0x32FB6780, 0x1ED0, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsPrintJobOperations = {0x9A52DB30, 0x1ECF, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsPrintQueue = {0xB15160D0, 0x1226, 0x11CF, [0xA9, 0x85, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsPrintQueueOperations = {0x124BE5C0, 0x156E, 0x11CF, [0xA9, 0x86, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsProperty = {0xC8F93DD3, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; -enum IID IID_IADsPropertyEntry = {0x05792C8E, 0x941F, 0x11D0, [0x85, 0x29, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsPropertyList = {0xC6F602B6, 0x8F69, 0x11D0, [0x85, 0x28, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsPropertyValue = {0x79FA9AD0, 0xA97C, 0x11D0, [0x85, 0x34, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsPropertyValue2 = {0x306E831C, 0x5BC7, 0x11D1, [0xA3, 0xB8, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsReplicaPointer = {0xF60FB803, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsResource = {0x34A05B20, 0x4AAB, 0x11CF, [0xAE, 0x2C, 0x00, 0xAA, 0x00, 0x6E, 0xBF, 0xB9]}; -enum IID IID_IADsSearch = {0xC69F7780, 0x4008, 0x11D0, [0xB9, 0x4C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; -enum IID IID_IADsSecurityDescriptor = {0xB8C787CA, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsSecurityUtility = {0xA63251B2, 0x5F21, 0x474B, [0xAB, 0x52, 0x4A, 0x8E, 0xFA, 0xD1, 0x08, 0x95]}; -enum IID IID_IADsService = {0x68AF66E0, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsServiceOperations = {0x5D7B33F0, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; -enum IID IID_IADsSession = {0x398B7DA0, 0x4AAB, 0x11CF, [0xAE, 0x2C, 0x00, 0xAA, 0x00, 0x6E, 0xBF, 0xB9]}; -enum IID IID_IADsSyntax = {0xC8F93DD2, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; -enum IID IID_IADsTimestamp = {0xB2F5A901, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsTypedName = {0xB371A349, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; -enum IID IID_IADsUmiHelperPrivate = {0x4FE243F0, 0xAD89, 0x4CBC, [0x9B, 0x14, 0x48, 0x61, 0x26, 0x44, 0x6A, 0xE0]}; -enum IID IID_IADsUser = {0x3E37E320, 0x17E2, 0x11CF, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; -enum IID IID_IADsValue = {0x1E3EF0AA, 0xAEF5, 0x11D0, [0x85, 0x37, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IADsWinNTSystemInfo = {0x6C6D65DC, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; -enum IID IID_IAdviseSink = {0x0000010F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IAdviseSink2 = {0x00000125, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IAdviseSinkEx = {0x3AF24290, 0x0C96, 0x11CE, [0xA0, 0xCF, 0x00, 0xAA, 0x00, 0x60, 0x0A, 0xB8]}; -enum IID IID_IAlertReport = {0x4E81DFE8, 0x4CA0, 0x101A, [0x82, 0x06, 0x08, 0x00, 0x2B, 0x2F, 0xC0, 0x9B]}; -enum IID IID_IAlertTarget = {0x589B61C0, 0x54E6, 0x11CE, [0x94, 0xDD, 0x00, 0xAA, 0x00, 0x51, 0xE4, 0x0F]}; -enum IID IID_IAlgSetup = {0xA779AF1A, 0x009A, 0x4C44, [0xB9, 0xF0, 0x8F, 0x0F, 0x4C, 0xF2, 0xAE, 0x49]}; -enum IID IID_IAlterIndex = {0x0C733AA6, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IAlterTable = {0x0C733AA5, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IAnchorClick = {0x13D5413B, 0x33B9, 0x11D2, [0x95, 0xA7, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; -enum IID IID_IAnimationComposer = {0x5459C83D, 0x322B, 0x44B3, [0x8D, 0xAA, 0x24, 0xC9, 0x47, 0xE7, 0xB2, 0x75]}; -enum IID IID_IAnimationComposer2 = {0x1A4F0E79, 0x09CD, 0x47F3, [0xAF, 0xF1, 0x48, 0x3B, 0xF3, 0xA2, 0x22, 0xDC]}; -enum IID IID_IAnimationComposerFactory = {0xBEEB3233, 0xF71F, 0x4683, [0x8B, 0x05, 0x9A, 0x53, 0x14, 0xC9, 0x7D, 0xBC]}; -enum IID IID_IAnimationComposerSite = {0x488FCB56, 0x8FD6, 0x4CDA, [0xA0, 0x6A, 0x5B, 0xB2, 0x32, 0x93, 0x0E, 0xCA]}; -enum IID IID_IAnimationComposerSiteFactory = {0xB4EA5681, 0xED72, 0x4EFE, [0xBB, 0xD7, 0x7C, 0x47, 0xD1, 0x32, 0x56, 0x96]}; -enum IID IID_IAnimationComposerSiteSink = {0x8EF76C64, 0x71CD, 0x480F, [0x96, 0xFC, 0xBA, 0x26, 0x96, 0xE6, 0x59, 0xBE]}; -enum IID IID_IAnimationFragment = {0x319DFD88, 0x0AC6, 0x4AB1, [0xA1, 0x9F, 0x90, 0x22, 0x3B, 0xA2, 0xDA, 0x16]}; -enum IID IID_IAnimationRoot = {0x29DF6387, 0x30B4, 0x4A62, [0x89, 0x1B, 0xA9, 0xC5, 0xBE, 0x37, 0xBE, 0x88]}; -enum IID IID_IApplicationDebugger = {0x51973C2A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IApplicationDebuggerUI = {0x51973C2B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IApplicationGateway = {0x5134842B, 0xFDCE, 0x485D, [0x93, 0xCD, 0xDE, 0x16, 0x40, 0x64, 0x3B, 0xBE]}; -enum IID IID_IApplicationGatewayServices = {0x5134842A, 0xFDCE, 0x485D, [0x93, 0xCD, 0xDE, 0x16, 0x40, 0x64, 0x3B, 0xBE]}; -enum IID IID_IAppPublisher = {0x07250A10, 0x9CF9, 0x11D1, [0x90, 0x76, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; -enum IID IID_IAsyncBindCtx = {0x79EAC9D4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IAsyncManager = {0x0000002A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IAsyncMoniker = {0x79EAC9D3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IAsyncOperation = {0x3D8B0590, 0xF691, 0x11D2, [0x8E, 0xA9, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; -enum IID IID_IAsyncRpcChannelBuffer = {0xA5029FB6, 0x3C34, 0x11D1, [0x9C, 0x99, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0xAA]}; -enum IID IID_IAttributesRaw = {0x6BC096A8, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; -enum IID IID_IAuditControl = {0x1DA6292F, 0xBC66, 0x11CE, [0xAA, 0xE3, 0x00, 0xAA, 0x00, 0x4C, 0x27, 0x37]}; -enum IID IID_IAuthenticate = {0x79EAC9D0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IAutoComplete = {0x00BB2762, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; -enum IID IID_IAutoComplete2 = {0xEAC04BC0, 0x3791, 0x11D2, [0xBB, 0x95, 0x00, 0x60, 0x97, 0x7B, 0x46, 0x4C]}; -enum IID IID_IAutoCompleteDropDown = {0x3CD141F4, 0x3C6A, 0x11D2, [0xBC, 0xAA, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; -enum IID IID_IAutoCompList = {0x00BB2760, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; -enum IID IID_IAutoDiscoveryProvider = {0x9DCF4A37, 0x01DE, 0x4549, [0xA9, 0xCB, 0x3A, 0xC3, 0x1E, 0xC2, 0x3C, 0x4F]}; -enum IID IID_IBackgroundCopyCallback = {0x97EA99C7, 0x0186, 0x4AD4, [0x8D, 0xF9, 0xC5, 0xB4, 0xE0, 0xED, 0x6B, 0x22]}; -enum IID IID_IBackgroundCopyCallback1 = {0x084F6593, 0x3800, 0x4E08, [0x9B, 0x59, 0x99, 0xFA, 0x59, 0xAD, 0xDF, 0x82]}; -enum IID IID_IBackgroundCopyError = {0x19C613A0, 0xFCB8, 0x4F28, [0x81, 0xAE, 0x89, 0x7C, 0x3D, 0x07, 0x8F, 0x81]}; -enum IID IID_IBackgroundCopyFile = {0x01B7BD23, 0xFB88, 0x4A77, [0x84, 0x90, 0x58, 0x91, 0xD3, 0xE4, 0x65, 0x3A]}; -enum IID IID_IBackgroundCopyGroup = {0x1DED80A7, 0x53EA, 0x424F, [0x8A, 0x04, 0x17, 0xFE, 0xA9, 0xAD, 0xC4, 0xF5]}; -enum IID IID_IBackgroundCopyJob = {0x37668D37, 0x507E, 0x4160, [0x93, 0x16, 0x26, 0x30, 0x6D, 0x15, 0x0B, 0x12]}; -enum IID IID_IBackgroundCopyJob1 = {0x59F5553C, 0x2031, 0x4629, [0xBB, 0x18, 0x26, 0x45, 0xA6, 0x97, 0x09, 0x47]}; -enum IID IID_IBackgroundCopyJob2 = {0x54B50739, 0x686F, 0x45EB, [0x9D, 0xFF, 0xD6, 0xA9, 0xA0, 0xFA, 0xA9, 0xAF]}; -enum IID IID_IBackgroundCopyManager = {0x5CE34C0D, 0x0DC9, 0x4C1F, [0x89, 0x7C, 0xDA, 0xA1, 0xB7, 0x8C, 0xEE, 0x7C]}; -enum IID IID_IBackgroundCopyQMgr = {0x16F41C69, 0x09F5, 0x41D2, [0x8C, 0xD8, 0x3C, 0x08, 0xC4, 0x7B, 0xC8, 0xA8]}; -enum IID IID_IBidiRequestSpl = {0x9C007000, 0xFFA8, 0x44FF, [0xB2, 0xB3, 0xAE, 0x91, 0x02, 0xC7, 0x4D, 0x4C]}; -enum IID IID_IBindCtx = {0x0000000E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IBindEventHandler = {0x63CDBCB0, 0xC1B1, 0x11D0, [0x93, 0x36, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; -enum IID IID_IBindHost = {0xFC4801A1, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID IID_IBinding = {0x79EAC9C0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IBindProtocol = {0x79EAC9CD, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IBindResource = {0x0C733AB1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IBindStatusCallback = {0x79EAC9C1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IBindStatusCallbackHolder = {0x79EAC9CC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IBindStatusCallbackMsg = {0x79EAC9D5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IBitsTest1 = {0x51A183DB, 0x67E0, 0x4472, [0x86, 0x02, 0x3D, 0xBC, 0x73, 0x0B, 0x7E, 0xF5]}; -enum IID IID_IBlockFormats = {0x3050F830, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IBlockingLock = {0x30F3D47A, 0x6447, 0x11D1, [0x8E, 0x3C, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; -enum IID IID_IBoundObject = {0x9BFBBC00, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IBoundObjectSite = {0x9BFBBC01, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IBriefcaseStg = {0x8BCE1FA1, 0x0921, 0x101B, [0xB1, 0xFF, 0x00, 0xDD, 0x01, 0x0C, 0xCC, 0x48]}; -enum IID IID_IBurnEngine = {0x520CCA66, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID IID_ICallFactory = {0x1C733A30, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICallFrame = {0xD573B4B0, 0x894E, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; -enum IID IID_ICallFrameEvents = {0xFD5E0843, 0xFC91, 0x11D0, [0x97, 0xD7, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; -enum IID IID_ICallFrameWalker = {0x08B23919, 0x392D, 0x11D2, [0xB8, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; -enum IID IID_ICallIndirect = {0xD573B4B1, 0x894E, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; -enum IID IID_ICallInterceptor = {0x60C7CA75, 0x896D, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; -enum IID IID_ICallUnmarshal = {0x5333B003, 0x2E42, 0x11D2, [0xB8, 0x9D, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; -enum IID IID_ICancelMethodCalls = {0x00000029, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ICatalogFileInfo = {0x711C7600, 0x6B48, 0x11D1, [0xB4, 0x03, 0x00, 0xAA, 0x00, 0xB9, 0x2A, 0xF1]}; -enum IID IID_ICategorizer = {0xA3B14589, 0x9174, 0x49A8, [0x89, 0xA3, 0x06, 0xA1, 0xAE, 0x2B, 0x9B, 0xA7]}; -enum IID IID_ICategoryProvider = {0x9AF64809, 0x5864, 0x4C26, [0xA7, 0x20, 0xC1, 0xF7, 0x8C, 0x08, 0x6E, 0xE3]}; -enum IID IID_ICatInformation = {0x0002E013, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ICatRegister = {0x0002E012, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ICDBurn = {0x3D73A659, 0xE5D0, 0x4D42, [0xAF, 0xC0, 0x51, 0x21, 0xBA, 0x42, 0x5C, 0x8D]}; -enum IID IID_ICEnroll = {0x43F8F288, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; -enum IID IID_ICEnroll2 = {0x704CA730, 0xC90B, 0x11D1, [0x9B, 0xEC, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; -enum IID IID_ICEnroll3 = {0xC28C2D95, 0xB7DE, 0x11D2, [0xA4, 0x21, 0x00, 0xC0, 0x4F, 0x79, 0xFE, 0x8E]}; -enum IID IID_ICEnroll4 = {0xC1F1188A, 0x2EB5, 0x4A80, [0x84, 0x1B, 0x7E, 0x72, 0x9A, 0x35, 0x6D, 0x90]}; -enum IID IID_IChannelHook = {0x1008C4A0, 0x7613, 0x11CF, [0x9A, 0xF1, 0x00, 0x20, 0xAF, 0x6E, 0x72, 0xF4]}; -enum IID IID_IChannelMgr = {0x85BD8E82, 0x0FBA, 0x11D1, [0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68]}; -enum IID IID_IChapteredRowset = {0x0C733A93, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICheckBox = {0x3050F685, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ICiAdmin = {0xAE67C7D8, 0x85D3, 0x11D0, [0x8C, 0x45, 0x00, 0xC0, 0x4F, 0xC2, 0xDB, 0x8D]}; -enum IID IID_ICiAdminParams = {0xA82D48C6, 0x3F0F, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCAdviseStatus = {0xCA05734A, 0x1218, 0x11D3, [0xAE, 0x7A, 0x00, 0xC0, 0x4F, 0x72, 0xF8, 0x31]}; -enum IID IID_ICiCDeferredPropRetriever = {0xC273AF70, 0x6D72, 0x11D0, [0x8D, 0x64, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; -enum IID IID_ICiCDocName = {0x76615076, 0x3C2B, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCDocNameToWorkidTranslator = {0x25FC3F54, 0x3CB4, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCDocNameToWorkidTranslatorEx = {0x7BBA76E6, 0xA0E3, 0x11D2, [0xBC, 0x5D, 0x00, 0xC0, 0x4F, 0xA3, 0x54, 0xBA]}; -enum IID IID_ICiCDocStore = {0x46625468, 0x3C32, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCDocStoreEx = {0xF98282A7, 0xFA72, 0x11D1, [0x97, 0x98, 0x00, 0xC0, 0x4F, 0xC2, 0xF4, 0x10]}; -enum IID IID_ICiCDocStoreLocator = {0x97EE7C06, 0x5908, 0x11D0, [0x8C, 0x9B, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCEventLogItem = {0x44CC886A, 0x4314, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCFilterClient = {0xA1E0BCB6, 0x3C24, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCFilterStatus = {0xBC5F3D60, 0x8BBC, 0x11D1, [0x8F, 0x73, 0x00, 0xA0, 0xC9, 0x19, 0x17, 0xF5]}; -enum IID IID_ICiCIndexNotificationStatus = {0x5FFF3840, 0x8E76, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; -enum IID IID_ICiCLangRes = {0x914C2E6C, 0x43FE, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiControl = {0x63DEB7F4, 0x3CCB, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCOpenedDoc = {0x151EDFBE, 0x3C2F, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCPropertyStorage = {0x4C46225A, 0x3CB5, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCPropRetriever = {0x77D9B2DA, 0x4401, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCQueryNotification = {0x0A9E9F6C, 0x3CE2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCQuerySession = {0xAE461FD6, 0x4E1D, 0x11D0, [0x8C, 0x94, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCResourceMonitor = {0xF700FF8E, 0x20EE, 0x11D2, [0x80, 0xF7, 0x00, 0xC0, 0x4F, 0xA3, 0x54, 0xBA]}; -enum IID IID_ICiCScope = {0x1021C882, 0x3CC0, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCScopeChecker = {0x7D820C9C, 0x3CBC, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCScopeEnumerator = {0xCF8505EA, 0x3CCA, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCSecurityChecker = {0xCA130CF4, 0x3CC2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiCUserSecurity = {0x5D01D9CE, 0x3CC2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiDocChangeNotifySink = {0x8BFA1386, 0x3CE5, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiEnumWorkids = {0x77900150, 0xA09C, 0x11D0, [0xA8, 0x0D, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; -enum IID IID_ICiFrameworkQuery = {0xAE67C7D9, 0x85D3, 0x11D0, [0x8C, 0x45, 0x00, 0xC0, 0x4F, 0xC2, 0xDB, 0x8D]}; -enum IID IID_ICiIndexNotification = {0x4F2CD6E0, 0x8E74, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; -enum IID IID_ICiIndexNotificationEntry = {0x210769D0, 0x8E75, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; -enum IID IID_ICiISearchCreator = {0x7DC07FA0, 0x902E, 0x11D0, [0xA8, 0x0C, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; -enum IID IID_ICiManager = {0xCF0FCF56, 0x3CCE, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiPersistIncrFile = {0x31B311E2, 0x4498, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_ICiQueryPropertyMapper = {0xD2333EB0, 0x756B, 0x11D0, [0x8D, 0x66, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; -enum IID IID_ICiStartup = {0x68232CB8, 0x3CCC, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_IClassActivator = {0x00000140, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IClassFactory = {0x00000001, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IClassFactory2 = {0xB196B28F, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IClassFactoryEx = {0x342D1EA0, 0xAE25, 0x11D1, [0x89, 0xC5, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; -enum IID IID_IClientCaps = {0x7E8BC44D, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; -enum IID IID_IClientSecurity = {0x0000013D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IClusCfgAsyncEvictCleanup = {0x52C80B95, 0xC1AD, 0x4240, [0x8D, 0x89, 0x72, 0xE9, 0xFA, 0x84, 0x02, 0x5E]}; -enum IID IID_IClusCfgBaseCluster = {0xA8A5C613, 0x2518, 0x47F5, [0x96, 0xCA, 0xCA, 0xFA, 0x7F, 0xFB, 0xAF, 0x68]}; -enum IID IID_IClusCfgCallback = {0x238DCA63, 0xE2EF, 0x4F32, [0xA2, 0x4D, 0xAC, 0xBF, 0x97, 0x5B, 0xE8, 0x42]}; -enum IID IID_IClusCfgCapabilities = {0xD94AB253, 0x36C7, 0x41C1, [0xB5, 0x2E, 0x26, 0xB4, 0x51, 0x97, 0x5C, 0x8D]}; -enum IID IID_IClusCfgClusterConnection = {0xCE6EF90C, 0x3602, 0x41E7, [0x95, 0xBD, 0xAA, 0xFD, 0x37, 0xA6, 0x76, 0xDF]}; -enum IID IID_IClusCfgClusterInfo = {0x85B4BBC0, 0xDDC4, 0x4AE7, [0x82, 0x68, 0xF4, 0x85, 0x0B, 0xB2, 0xA6, 0xEE]}; -enum IID IID_IClusCfgCredentials = {0x54AA9406, 0xA409, 0x4B49, [0xB3, 0x14, 0x5F, 0x0A, 0x0C, 0xE4, 0xC8, 0x8E]}; -enum IID IID_IClusCfgEvictCleanup = {0x6FE3E361, 0xD373, 0x4C5F, [0xA0, 0xAF, 0x1D, 0xFE, 0x84, 0x93, 0xC6, 0x55]}; -enum IID IID_IClusCfgGroupCfg = {0xDCB6D3D2, 0xA55F, 0x49E5, [0xA6, 0x4A, 0x0C, 0xCF, 0xEB, 0x01, 0xED, 0x3A]}; -enum IID IID_IClusCfgInitialize = {0x2A0EB82D, 0xF878, 0x492A, [0x95, 0x1E, 0xAE, 0x00, 0x09, 0x18, 0xC4, 0xA6]}; -enum IID IID_IClusCfgIPAddressInfo = {0xAAEAF0A5, 0xE310, 0x4604, [0xA5, 0x5E, 0x2F, 0x9D, 0xDC, 0x41, 0x57, 0xA8]}; -enum IID IID_IClusCfgManagedResourceCfg = {0x60300A0F, 0x77E1, 0x440C, [0xBD, 0x94, 0x6B, 0xFB, 0x0D, 0xBF, 0xDB, 0x3A]}; -enum IID IID_IClusCfgManagedResourceInfo = {0xE0324847, 0x1520, 0x41B0, [0xB9, 0x60, 0x54, 0x19, 0x8D, 0xA5, 0xF8, 0xAF]}; -enum IID IID_IClusCfgMemberSetChangeListener = {0x2B64534F, 0x2643, 0x4ABC, [0xA4, 0xE5, 0x82, 0x4D, 0x88, 0x1B, 0x75, 0x82]}; -enum IID IID_IClusCfgNetworkInfo = {0x19FC7580, 0x950A, 0x44A6, [0x96, 0x6E, 0x74, 0xB1, 0x4B, 0x20, 0x91, 0x8F]}; -enum IID IID_IClusCfgNodeInfo = {0xE4B5FA15, 0xDD07, 0x439E, [0xA6, 0x23, 0x88, 0x23, 0x52, 0x4E, 0x3D, 0x19]}; -enum IID IID_IClusCfgPartitionInfo = {0xEC1EBD9F, 0x5866, 0x4846, [0x89, 0x52, 0xEC, 0x36, 0xC3, 0x96, 0x1E, 0xEE]}; -enum IID IID_IClusCfgPollingCallback = {0xC72DB1FD, 0x51A2, 0x43E6, [0xB7, 0x08, 0xD9, 0xDB, 0x7D, 0xA7, 0x96, 0x30]}; -enum IID IID_IClusCfgPollingCallbackInfo = {0x2AF55DA7, 0xCB6F, 0x40DE, [0xBB, 0x11, 0x66, 0x73, 0x46, 0x4B, 0x2C, 0x54]}; -enum IID IID_IClusCfgResourceCreate = {0x0647B41A, 0xC777, 0x443C, [0x94, 0x32, 0x02, 0xCC, 0xCF, 0x4F, 0xF4, 0x43]}; -enum IID IID_IClusCfgResourcePostCreate = {0x72A9BF54, 0x13B6, 0x451F, [0x91, 0x0D, 0x69, 0x13, 0xEB, 0xF0, 0x25, 0xAB]}; -enum IID IID_IClusCfgResourcePreCreate = {0x4240F6A1, 0x9D49, 0x427E, [0x8F, 0x3D, 0x09, 0x38, 0x4E, 0x1F, 0x59, 0xE4]}; -enum IID IID_IClusCfgResourceTypeCreate = {0x3AFCE3B8, 0x5F3E, 0x4DDF, [0xA8, 0xF4, 0x4B, 0x4F, 0xCB, 0xF2, 0x8F, 0x8F]}; -enum IID IID_IClusCfgResourceTypeInfo = {0xC649A281, 0xC847, 0x4F5C, [0x98, 0x41, 0xD2, 0xF7, 0x3B, 0x5A, 0xA7, 0x1D]}; -enum IID IID_IClusCfgResTypeServicesInitializ = {0x6E109698, 0xDFC4, 0x4471, [0xAC, 0xE1, 0x04, 0x14, 0x93, 0x1B, 0x3B, 0xB3]}; -enum IID IID_IClusCfgServer = {0x4C06EAE6, 0x990E, 0x4051, [0x8A, 0xA1, 0xAD, 0x4B, 0x4E, 0xAE, 0x9C, 0xAF]}; -enum IID IID_IClusCfgSetCredentials = {0x58E6E5B9, 0x4788, 0x4D9A, [0x82, 0x55, 0x1E, 0x27, 0x4E, 0x5D, 0xCC, 0xB0]}; -enum IID IID_IClusCfgStartupListener = {0xD282CAEF, 0x2EDE, 0x4AB9, [0xA5, 0xD5, 0xF7, 0xBD, 0xE3, 0xD2, 0x3F, 0x0F]}; -enum IID IID_IClusCfgStartupNotify = {0xC2B0D069, 0x6353, 0x4EE1, [0xB2, 0x53, 0x6B, 0x0D, 0x75, 0xDB, 0x2C, 0xD3]}; -enum IID IID_IClusCfgVerify = {0xD47BBEEC, 0x2286, 0x4514, [0xAA, 0x90, 0x7E, 0x88, 0xBD, 0x0F, 0xE5, 0x43]}; -enum IID IID_IClusCfgWizard = {0x2EB57A3B, 0xDA8D, 0x4B56, [0x97, 0xCF, 0xA3, 0x19, 0x1B, 0xF8, 0xFD, 0x5B]}; -enum IID IID_IClusterApplicationWizard = {0x24F97151, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; -enum IID IID_ICodeInstall = {0x79EAC9D1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IColumnMapper = {0x0B63E37A, 0x9CCC, 0x11D0, [0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04]}; -enum IID IID_IColumnMapperCreator = {0x0B63E37B, 0x9CCC, 0x11D0, [0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04]}; -enum IID IID_IColumnProvider = {0xE8025004, 0x1C42, 0x11D2, [0xBE, 0x2C, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; -enum IID IID_IColumnsInfo = {0x0C733A11, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IColumnsInfo2 = {0x0C733AB8, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IColumnsRowset = {0x0C733A10, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICombobox = {0x3050F677, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ICommand = {0x0C733A63, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICommandCost = {0x0C733A4E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICommandPersist = {0x0C733AA7, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICommandPrepare = {0x0C733A26, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICommandProperties = {0x0C733A79, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICommandStream = {0x0C733ABF, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICommandText = {0x0C733A27, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICommandTree = {0x0C733A87, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICommandValidate = {0x0C733A18, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICommandWithParameters = {0x0C733A64, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICommDlgBrowser = {0x000214F1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ICommDlgBrowser2 = {0x10339516, 0x2894, 0x11D2, [0x90, 0x39, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; -enum IID IID_ICommonQuery = {0xAB50DEC0, 0x6F1D, 0x11D0, [0xA1, 0xC4, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; -enum IID IID_IComThreadingInfo = {0x000001CE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IConfigurationConnection = {0xDDAD8191, 0x66C5, 0x4A30, [0xA4, 0xDF, 0xCB, 0x6C, 0x21, 0x67, 0x04, 0xCA]}; -enum IID IID_IConnectionInfo = {0x15182CE3, 0x82D7, 0x473F, [0x92, 0xDE, 0x70, 0x6E, 0x2B, 0xCE, 0xA9, 0x02]}; -enum IID IID_IConnectionManager = {0xC0017768, 0x1BF3, 0x4352, [0x8D, 0x6C, 0x3A, 0x8C, 0x1D, 0x0F, 0xB4, 0x77]}; -enum IID IID_IConnectionPoint = {0xB196B286, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IConnectionPointContainer = {0xB196B284, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IContextCallback = {0x000001DA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IContextMenu = {0x000214E4, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IContextMenu2 = {0x000214F4, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IContextMenu3 = {0xBCFCE0A0, 0xEC17, 0x11D0, [0x8D, 0x10, 0x00, 0xA0, 0xC9, 0x0F, 0x27, 0x19]}; -enum IID IID_IContinue = {0x0000012A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IContinueCallback = {0xB722BCCA, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; -enum IID IID_IConvertType = {0x0C733A88, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICrBarn = {0x276A2EE0, 0x0B5D, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID IID_ICrBarn2 = {0xB66A7A1B, 0x8FC6, 0x448C, [0xA2, 0xEB, 0x3C, 0x55, 0x95, 0x74, 0x78, 0xA1]}; -enum IID IID_ICrBlinds = {0x5AF5C340, 0x0BA9, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID IID_ICrBlinds2 = {0x7059D403, 0x599A, 0x4264, [0x81, 0x40, 0x64, 0x1E, 0xB8, 0xAE, 0x1F, 0x64]}; -enum IID IID_ICrBlur = {0x9F7C7827, 0xE87A, 0x11D1, [0x81, 0xE0, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_ICreateErrorInfo = {0x22F03340, 0x547D, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; -enum IID IID_ICreateRow = {0x0C733AB2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ICreateTypeInfo = {0x00020405, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ICreateTypeInfo2 = {0x0002040E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ICreateTypeLib = {0x00020406, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ICreateTypeLib2 = {0x0002040F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ICrEmboss = {0xE4ACFB80, 0x053E, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_ICrEngrave = {0xE4ACFB7F, 0x053E, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_ICrInset = {0x05C5EE20, 0x0BA6, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID IID_ICrIris = {0x3F69F350, 0x0379, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID IID_ICrIris2 = {0xF7B06961, 0xBA8C, 0x4970, [0x91, 0x8B, 0x1C, 0x60, 0xCB, 0x9F, 0xF1, 0x80]}; -enum IID IID_ICrRadialWipe = {0x424B71AE, 0x0695, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID IID_ICrSlide = {0x810E402E, 0x056B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID IID_ICrSpiral = {0x0DE527A0, 0x0C7E, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID IID_ICrStretch = {0x6684AF00, 0x0A87, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID IID_ICrWheel = {0x3943DE80, 0x1464, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID IID_ICrZigzag = {0x4E5A64A0, 0x0C8B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; -enum IID IID_ICSSFilter = {0x3050F3EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ICSSFilterDispatch = {0x9519152B, 0x9484, 0x4A6C, [0xB6, 0xA7, 0x4F, 0x25, 0xE9, 0x2D, 0x6C, 0x6B]}; -enum IID IID_ICSSFilterSite = {0x3050F3ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ICurrentWorkingDirectory = {0x91956D21, 0x9276, 0x11D1, [0x92, 0x1A, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; -enum IID IID_ICursor = {0x9F6AA700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; -enum IID IID_ICursorFind = {0xE01D7850, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; -enum IID IID_ICursorMove = {0xACFF0690, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; -enum IID IID_ICursorScroll = {0xBB87E420, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; -enum IID IID_ICursorUpdateARow = {0xD14216A0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; -enum IID IID_ICustomDoc = {0x3050F3F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ICustomRatingHelper = {0xD0D9842D, 0xE211, 0x4B2C, [0x88, 0xDC, 0xBC, 0x72, 0x93, 0x42, 0xDF, 0xCB]}; -enum IID IID_IDA2Array = {0x2A8F0B06, 0xBE2B, 0x11D1, [0xB2, 0x19, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; -enum IID IID_IDA2Behavior = {0xC46C1BF0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDA2Event = {0x69B5BC70, 0x9B19, 0x11D0, [0x9B, 0x60, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID IID_IDA2FontStyle = {0x283807B5, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; -enum IID IID_IDA2Geometry = {0x4A933702, 0xE36F, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID IID_IDA2Image = {0x45393DF0, 0x54B9, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; -enum IID IID_IDA2LineStyle = {0x2AE71568, 0x4B34, 0x11D1, [0xB1, 0xE3, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; -enum IID IID_IDA2Statics = {0xD17506C2, 0x6B26, 0x11D0, [0x89, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; -enum IID IID_IDA2View = {0x5F00F545, 0xDF18, 0x11D1, [0xAB, 0x6F, 0x00, 0xC0, 0x4F, 0xD9, 0x2B, 0x6B]}; -enum IID IID_IDA2ViewerControl = {0xC46C1BEF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDA2ViewerControlWindowed = {0xC46C1BED, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAArray = {0xFA261CF0, 0xC44E, 0x11D1, [0x9B, 0xE4, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID IID_IDABbox2 = {0xBA8B033E, 0x1E91, 0x11D1, [0x88, 0x09, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; -enum IID IID_IDABbox3 = {0x0E41257B, 0x812D, 0x11D0, [0x9B, 0x4A, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID IID_IDABehavior = {0x5DFB2651, 0x9668, 0x11D0, [0xB1, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; -enum IID IID_IDABoolean = {0xC46C1BDA, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDABvrHook = {0x50B4791F, 0x4731, 0x11D0, [0x89, 0x12, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; -enum IID IID_IDACamera = {0xC46C1BCA, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAColor = {0xC46C1BDC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDADashStyle = {0xF3E1B522, 0xD8A6, 0x11D1, [0x9B, 0xE5, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID IID_IDADrawingSurface = {0xC46C1BF4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDADXTransformResult = {0xAF868305, 0xAB0B, 0x11D0, [0x87, 0x6A, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; -enum IID IID_IDAEndStyle = {0xB6FFC24C, 0x7E13, 0x11D0, [0x9B, 0x47, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID IID_IDAEvent = {0xC46C1BCE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAFontStyle = {0xC46C1BC1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAGeometry = {0xC46C1BCC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAImage = {0xC46C1BC4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAImport = {0xC46C1BEE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAImportationResult = {0xB90E5258, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; -enum IID IID_IDAJoinStyle = {0xA3034056, 0xEC1C, 0x11D1, [0x9B, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID IID_IDALineStyle = {0x69AD90EF, 0x1C20, 0x11D1, [0x88, 0x01, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; -enum IID IID_IDAMatte = {0xC46C1BE4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAMicrophone = {0xC46C1BD8, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAModifiableBehavior = {0xC46C1BEC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAMontage = {0xC46C1BC8, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDANumber = {0xD17506C3, 0x6B26, 0x11D0, [0x89, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; -enum IID IID_IDAPair = {0x542FB453, 0x5003, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; -enum IID IID_IDAPath2 = {0xC46C1BD0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAPickableResult = {0xC46C1BDE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAPoint2 = {0x9CDE7341, 0x3C20, 0x11D0, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; -enum IID IID_IDAPoint3 = {0xC46C1BD6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAPreferences = {0xB90E525A, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; -enum IID IID_IDASite = {0xB90E5259, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; -enum IID IID_IDASound = {0xC46C1BE6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAStatics = {0x5DFB2650, 0x9668, 0x11D0, [0xB1, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; -enum IID IID_IDAString = {0xC46C1BD2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDataAdviseHolder = {0x00000110, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDataChannel = {0xAD42D12A, 0x4AD0, 0x4856, [0x91, 0x9E, 0xE8, 0x54, 0xC9, 0x1D, 0x18, 0x56]}; -enum IID IID_IDataConvert = {0x0C733A8D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDataFilter = {0x69D14C80, 0xC18E, 0x11D0, [0xA9, 0xCE, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; -enum IID IID_IDataObject = {0x0000010E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDATransform2 = {0xC46C1BD4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDATransform3 = {0xC46C1BE0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDATuple = {0x542FB452, 0x5003, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; -enum IID IID_IDAUntilNotifier = {0x25B0F91C, 0xD23D, 0x11D0, [0x9B, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID IID_IDAUserData = {0xBACD4D86, 0x4A4F, 0x11D1, [0x9B, 0xC8, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID IID_IDAVector2 = {0xC46C1BC6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAVector3 = {0xC46C1BE2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAView = {0xAF868304, 0xAB0B, 0x11D0, [0x87, 0x6A, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; -enum IID IID_IDAViewerControl = {0xC46C1BDD, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAViewerControlWindowed = {0xC46C1BCD, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; -enum IID IID_IDAViewSite = {0xBCBB1F75, 0xE384, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID IID_IDBAsynchNotify = {0x0C733A96, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDBAsynchStatus = {0x0C733A95, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDBBinderProperties = {0x0C733AB3, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDBCreateCommand = {0x0C733A1D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDBCreateSession = {0x0C733A5D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDBDataSourceAdmin = {0x0C733A7A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDBInfo = {0x0C733A89, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDBInitialize = {0x0C733A8B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDBProperties = {0x0C733A8A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDBSchemaCommand = {0x0C733A50, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDBSchemaRowset = {0x0C733A7B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDCInfo = {0x0C733A9C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IDDVideoAcceleratorContainer = {0xACA12120, 0x3356, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; -enum IID IID_IDDVideoPortContainer = {0x6C142760, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; -enum IID IID_IDebug = {0x00000123, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDebugApplication = {0x51973C32, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugApplication32 = {0x51973C32, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugApplication64 = {0x4DEDC754, 0x04C7, 0x4F10, [0x9E, 0x60, 0x16, 0xA3, 0x90, 0xFE, 0x6E, 0x62]}; -enum IID IID_IDebugApplicationEx = {0x51973C00, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugApplicationNode = {0x51973C34, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugApplicationNodeEvents = {0x51973C35, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugApplicationThread = {0x51973C38, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugApplicationThread64 = {0x9DAC5886, 0xDBAD, 0x456D, [0x9D, 0xEE, 0x5D, 0xEC, 0x39, 0xAB, 0x3D, 0xDA]}; -enum IID IID_IDebugAsyncOperation = {0x51973C1B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugAsyncOperationCallBack = {0x51973C1C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugCodeContext = {0x51973C13, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugCookie = {0x51973C39, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocument = {0x51973C21, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocumentContext = {0x51973C28, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocumentHelper32 = {0x51973C26, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocumentHelper64 = {0xC4C7363C, 0x20FD, 0x47F9, [0xBD, 0x82, 0x48, 0x55, 0xE0, 0x15, 0x08, 0x71]}; -enum IID IID_IDebugDocumentHelperEx = {0x51973C02, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocumentHost = {0x51973C27, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocumentInfo = {0x51973C1F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocumentProvider = {0x51973C20, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocumentText = {0x51973C22, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocumentTextAuthor = {0x51973C24, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocumentTextEvents = {0x51973C23, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugDocumentTextExternalAuthor = {0x51973C25, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugExpression = {0x51973C14, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugExpressionCallBack = {0x51973C16, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugExpressionContext = {0x51973C15, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugExtendedProperty = {0x51973C52, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugFormatter = {0x51973C05, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugHelper = {0x51973C3F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugHelperEx = {0x51973C08, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugOut = {0xC733E4F1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_IDebugProperty = {0x51973C50, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugPropertyEnumType_All = {0x51973C55, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugPropertyEnumType_Arguments = {0x51973C57, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugPropertyEnumType_Locals = {0x51973C56, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugPropertyEnumType_LocalsPlus = {0x51973C58, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugPropertyEnumType_Registers = {0x51973C59, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugRegister = {0xC733E4F0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_IDebugSessionProvider = {0x51973C29, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugSessionProviderEx = {0x51973C09, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugSetValueCallback = {0x51973C06, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugStackFrame = {0x51973C17, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugStackFrameSniffer = {0x51973C18, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugStackFrameSnifferEx = {0x51973C19, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugStackFrameSnifferEx32 = {0x51973C19, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugStackFrameSnifferEx64 = {0x8CD12AF4, 0x49C1, 0x4D52, [0x8D, 0x8A, 0xC1, 0x46, 0xF4, 0x75, 0x81, 0xAA]}; -enum IID IID_IDebugStream = {0x00000124, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDebugSyncOperation = {0x51973C1A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugThreadCall = {0x51973C36, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugThreadCall32 = {0x51973C36, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IDebugThreadCall64 = {0xCB3FA335, 0xE979, 0x42FD, [0x9F, 0xCF, 0xA7, 0x54, 0x6A, 0x0F, 0x39, 0x05]}; -enum IID IID_IDelaydC = {0xBFF9C030, 0xB58F, 0x11CE, [0xB5, 0xB0, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; -enum IID IID_IDelayedRelease = {0x000214ED, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDelegateFolder = {0xADD8BA80, 0x002B, 0x11D0, [0x8F, 0x0F, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; -enum IID IID_IDeskBand = {0xEB0FE172, 0x1A3A, 0x11D0, [0x89, 0xB3, 0x00, 0xA0, 0xC9, 0x0A, 0x90, 0xAC]}; -enum IID IID_IDeviceRect = {0x3050F6D5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IDfReserved1 = {0x00000013, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDfReserved2 = {0x00000014, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDfReserved3 = {0x00000015, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDialBranding = {0x8AECAFA9, 0x4306, 0x43CC, [0x8C, 0x5A, 0x76, 0x5F, 0x29, 0x79, 0xCC, 0x16]}; -enum IID IID_IDialEngine = {0x39FD782B, 0x7905, 0x40D5, [0x91, 0x48, 0x3C, 0x9B, 0x19, 0x04, 0x23, 0xD5]}; -enum IID IID_IDialEventSink = {0x2D86F4FF, 0x6E2D, 0x4488, [0xB2, 0xE9, 0x69, 0x34, 0xAF, 0xD4, 0x1B, 0xEA]}; -enum IID IID_IDifferencing = {0x994F0AF0, 0x2977, 0x11CE, [0xBB, 0x80, 0x08, 0x00, 0x2B, 0x36, 0xB2, 0xB0]}; -enum IID IID_IDirect3D = {0x3BBA0080, 0x2421, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; -enum IID IID_IDirect3D2 = {0x6AAE1EC1, 0x662A, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; -enum IID IID_IDirect3D3 = {0xBB223240, 0xE72B, 0x11D0, [0xA9, 0xB4, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E]}; -enum IID IID_IDirect3D7 = {0xF5049E77, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID IID_IDirect3DDevice = {0x64108800, 0x957D, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; -enum IID IID_IDirect3DDevice2 = {0x93281501, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; -enum IID IID_IDirect3DDevice3 = {0xB0AB3B60, 0x33D7, 0x11D1, [0xA9, 0x81, 0x00, 0xC0, 0x4F, 0xD7, 0xB1, 0x74]}; -enum IID IID_IDirect3DDevice7 = {0xF5049E79, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID IID_IDirect3DExecuteBuffer = {0x4417C145, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; -enum IID IID_IDirect3DHALDevice = {0x84E63DE0, 0x46AA, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; -enum IID IID_IDirect3DLight = {0x4417C142, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; -enum IID IID_IDirect3DMaterial = {0x4417C144, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; -enum IID IID_IDirect3DMaterial2 = {0x93281503, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; -enum IID IID_IDirect3DMaterial3 = {0xCA9C46F4, 0xD3C5, 0x11D1, [0xB7, 0x5A, 0x00, 0x60, 0x08, 0x52, 0xB3, 0x12]}; -enum IID IID_IDirect3DMMXDevice = {0x881949A1, 0xD6F3, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; -enum IID IID_IDirect3DNullDevice = {0x8767DF22, 0xBACC, 0x11D1, [0x89, 0x69, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID IID_IDirect3DRampDevice = {0xF2086B20, 0x259F, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; -enum IID IID_IDirect3DRefDevice = {0x50936643, 0x13E9, 0x11D1, [0x89, 0xAA, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; -enum IID IID_IDirect3DRGBDevice = {0xA4665C60, 0x2673, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; -enum IID IID_IDirect3DRM = {0x2BC49361, 0x8327, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRM2 = {0x4516ECC8, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRM3 = {0x4516EC83, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRMAnimation = {0xEB16CB0D, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMAnimation2 = {0xFF6B7F77, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; -enum IID IID_IDirect3DRMAnimationArray = {0xD5F1CAE0, 0x4BD7, 0x11D1, [0xB9, 0x74, 0x00, 0x60, 0x08, 0x3E, 0x45, 0xF3]}; -enum IID IID_IDirect3DRMAnimationSet = {0xEB16CB0E, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMAnimationSet2 = {0xFF6B7F79, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; -enum IID IID_IDirect3DRMClippedVisual = {0x5434E733, 0x6D66, 0x11D1, [0xBB, 0x0B, 0x00, 0x00, 0xF8, 0x75, 0x86, 0x5A]}; -enum IID IID_IDirect3DRMDevice = {0xE9E19280, 0x6E05, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMDevice2 = {0x4516EC78, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRMDevice3 = {0x549F498B, 0xBFEB, 0x11D1, [0x8E, 0xD8, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x82]}; -enum IID IID_IDirect3DRMDeviceArray = {0xEB16CB10, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMFace = {0xEB16CB07, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMFace2 = {0x4516EC81, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRMFaceArray = {0xEB16CB17, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMFrame = {0xEB16CB03, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMFrame2 = {0xC3DFBD60, 0x3988, 0x11D0, [0x9E, 0xC2, 0x00, 0x00, 0xC0, 0x29, 0x1A, 0xC3]}; -enum IID IID_IDirect3DRMFrame3 = {0xFF6B7F70, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; -enum IID IID_IDirect3DRMFrameArray = {0xEB16CB12, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMInterpolator = {0x242F6BC1, 0x3849, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRMLight = {0xEB16CB08, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMLightArray = {0xEB16CB14, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMMaterial = {0xEB16CB0B, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMMaterial2 = {0xFF6B7F75, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; -enum IID IID_IDirect3DRMMesh = {0xA3A80D01, 0x6E12, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMMeshBuilder = {0xA3A80D02, 0x6E12, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMMeshBuilder2 = {0x4516EC77, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRMMeshBuilder3 = {0x4516EC82, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRMObject = {0xEB16CB00, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMObject2 = {0x4516EC7C, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRMObjectArray = {0x242F6BC2, 0x3849, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRMPicked2Array = {0x4516EC7B, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRMPickedArray = {0xEB16CB16, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMProgressiveMesh = {0x4516EC79, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; -enum IID IID_IDirect3DRMShadow = {0xAF359780, 0x6BA3, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMShadow2 = {0x86B44E25, 0x9C82, 0x11D1, [0xBB, 0x0B, 0x00, 0xA0, 0xC9, 0x81, 0xA0, 0xA6]}; -enum IID IID_IDirect3DRMTexture = {0xEB16CB09, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMTexture2 = {0x120F30C0, 0x1629, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; -enum IID IID_IDirect3DRMTexture3 = {0xFF6B7F73, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; -enum IID IID_IDirect3DRMUserVisual = {0x59163DE0, 0x6D43, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMViewport = {0xEB16CB02, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMViewport2 = {0x4A1B1BE6, 0xBFED, 0x11D1, [0x8E, 0xD8, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x82]}; -enum IID IID_IDirect3DRMViewportArray = {0xEB16CB11, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMVisual = {0xEB16CB04, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMVisualArray = {0xEB16CB13, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMWinDevice = {0xC5016CC0, 0xD273, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DRMWrap = {0xEB16CB0A, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; -enum IID IID_IDirect3DTexture = {0x2CDCD9E0, 0x25A0, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; -enum IID IID_IDirect3DTexture2 = {0x93281502, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; -enum IID IID_IDirect3DTnLHalDevice = {0xF5049E78, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID IID_IDirect3DVertexBuffer = {0x7A503555, 0x4A83, 0x11D1, [0xA5, 0xDB, 0x00, 0xA0, 0xC9, 0x03, 0x67, 0xF8]}; -enum IID IID_IDirect3DVertexBuffer7 = {0xF5049E7D, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID IID_IDirect3DViewport = {0x4417C146, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; -enum IID IID_IDirect3DViewport2 = {0x93281500, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; -enum IID IID_IDirect3DViewport3 = {0xB0AB3B61, 0x33D7, 0x11D1, [0xA9, 0x81, 0x00, 0xC0, 0x4F, 0xD7, 0xB1, 0x74]}; -enum IID IID_IDirectDraw = {0x6C14DB80, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; -enum IID IID_IDirectDraw2 = {0xB3A6F3E0, 0x2B43, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; -enum IID IID_IDirectDraw4 = {0x9C59509A, 0x39BD, 0x11D1, [0x8C, 0x4A, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; -enum IID IID_IDirectDraw7 = {0x15E65EC0, 0x3B9C, 0x11D2, [0xB9, 0x2F, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; -enum IID IID_IDirectDrawClipper = {0x6C14DB85, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; -enum IID IID_IDirectDrawColorControl = {0x4B9F0EE0, 0x0D7E, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; -enum IID IID_IDirectDrawFactory2 = {0x89B2C488, 0x4AF4, 0x11D1, [0x8C, 0x4C, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; -enum IID IID_IDirectDrawGammaControl = {0x69C11C3E, 0xB46B, 0x11D1, [0xAD, 0x7A, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; -enum IID IID_IDirectDrawKernel = {0x8D56C120, 0x6A08, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; -enum IID IID_IDirectDrawOptSurface = {0x51191F1E, 0x4F2B, 0x11D1, [0x8C, 0xC3, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; -enum IID IID_IDirectDrawPalette = {0x6C14DB84, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; -enum IID IID_IDirectDrawPalette2 = {0xC03C477E, 0x6519, 0x11D1, [0x8C, 0x52, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; -enum IID IID_IDirectDrawSurface = {0x6C14DB81, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; -enum IID IID_IDirectDrawSurface2 = {0x57805885, 0x6EEC, 0x11CF, [0x94, 0x41, 0xA8, 0x23, 0x03, 0xC1, 0x0E, 0x27]}; -enum IID IID_IDirectDrawSurface3 = {0xDA044E00, 0x69B2, 0x11D0, [0xA1, 0xD5, 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xBB]}; -enum IID IID_IDirectDrawSurface4 = {0x0B2B8630, 0xAD35, 0x11D0, [0x8E, 0xA6, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; -enum IID IID_IDirectDrawSurface7 = {0x06675A80, 0x3B9B, 0x11D2, [0xB9, 0x2F, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; -enum IID IID_IDirectDrawSurfaceKernel = {0x60755DA0, 0x6A40, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; -enum IID IID_IDirectDrawVideoAccelerator = {0xC9B2D740, 0x3356, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; -enum IID IID_IDirectDrawVideoPort = {0xB36D93E0, 0x2B43, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; -enum IID IID_IDirectInput2A = {0x5944E662, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IDirectInput2W = {0x5944E663, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IDirectInput7A = {0x9A4CB684, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; -enum IID IID_IDirectInput7W = {0x9A4CB685, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; -enum IID IID_IDirectInputA = {0x89521360, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IDirectInputDevice2A = {0x5944E682, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IDirectInputDevice2W = {0x5944E683, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IDirectInputDevice7A = {0x57D7C6BC, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; -enum IID IID_IDirectInputDevice7W = {0x57D7C6BD, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; -enum IID IID_IDirectInputDeviceA = {0x5944E680, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IDirectInputDeviceW = {0x5944E681, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IDirectInputEffect = {0xE7E1F7C0, 0x88D2, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID IID_IDirectInputEffectDriver = {0x02538130, 0x898F, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; -enum IID IID_IDirectInputJoyConfig = {0x1DE12AB1, 0xC9F5, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IDirectInputPIDDriver = {0xEEC6993A, 0xB3FD, 0x11D2, [0xA9, 0x16, 0x00, 0xC0, 0x4F, 0xB9, 0x86, 0x38]}; -enum IID IID_IDirectInputW = {0x89521361, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IDirectMusic = {0x6536115A, 0x7B2D, 0x11D2, [0xBA, 0x18, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID IID_IDirectMusic2 = {0x6FC2CAE1, 0xBC78, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; -enum IID IID_IDirectMusicBand = {0xD2AC28C0, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicBuffer = {0xD2AC2878, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicChordMap = {0xD2AC28BE, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicCollection = {0xD2AC287C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicComposer = {0xD2AC28BF, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicDownload = {0xD2AC287B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicDownloadedInstrument = {0xD2AC287E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicGetLoader = {0x68A04844, 0xD13D, 0x11D1, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; -enum IID IID_IDirectMusicGraph = {0x2BEFC277, 0x5497, 0x11D2, [0xBC, 0xCB, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; -enum IID IID_IDirectMusicInstrument = {0xD2AC287D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicLoader = {0x2FFAACA2, 0x5DCA, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; -enum IID IID_IDirectMusicObject = {0xD2AC28B5, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicPerformance = {0x07D43D03, 0x6523, 0x11D2, [0x87, 0x1D, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicPerformance2 = {0x6FC2CAE0, 0xBC78, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; -enum IID IID_IDirectMusicPort = {0x08F2D8C9, 0x37C2, 0x11D2, [0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID IID_IDirectMusicPortDownload = {0xD2AC287A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicSegment = {0xF96029A2, 0x4282, 0x11D2, [0x87, 0x17, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicSegment2 = {0xD38894D1, 0xC052, 0x11D2, [0x87, 0x2F, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicSegmentState = {0xA3AFDCC7, 0xD3EE, 0x11D1, [0xBC, 0x8D, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; -enum IID IID_IDirectMusicStyle = {0xD2AC28BD, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicThru = {0xCED153E7, 0x3606, 0x11D2, [0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; -enum IID IID_IDirectMusicTool = {0xD2AC28BA, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectMusicTrack = {0xF96029A1, 0x4282, 0x11D2, [0x87, 0x17, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; -enum IID IID_IDirectoryObject = {0xE798DE2C, 0x22E4, 0x11D0, [0x84, 0xFE, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IDirectorySchemaMgmt = {0x75DB3B9C, 0xA4D8, 0x11D0, [0xA7, 0x9C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; -enum IID IID_IDirectorySearch = {0x109BA8EC, 0x92F0, 0x11D0, [0xA7, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; -enum IID IID_IDirectPlay = {0x5454E9A0, 0xDB65, 0x11CE, [0x92, 0x1C, 0x00, 0xAA, 0x00, 0x6C, 0x49, 0x72]}; -enum IID IID_IDirectPlay2 = {0x2B74F7C0, 0x9154, 0x11CF, [0xA9, 0xCD, 0x00, 0xAA, 0x00, 0x68, 0x86, 0xE3]}; -enum IID IID_IDirectPlay2A = {0x9D460580, 0xA822, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0x53, 0x4E, 0x82]}; -enum IID IID_IDirectPlay3 = {0x133EFE40, 0x32DC, 0x11D0, [0x9C, 0xFB, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; -enum IID IID_IDirectPlay3A = {0x133EFE41, 0x32DC, 0x11D0, [0x9C, 0xFB, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; -enum IID IID_IDirectPlay4 = {0x0AB1C530, 0x4745, 0x11D1, [0xA7, 0xA1, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; -enum IID IID_IDirectPlay4A = {0x0AB1C531, 0x4745, 0x11D1, [0xA7, 0xA1, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; -enum IID IID_IDirectPlayLobby = {0xAF465C71, 0x9588, 0x11CF, [0xA0, 0x20, 0x00, 0xAA, 0x00, 0x61, 0x57, 0xAC]}; -enum IID IID_IDirectPlayLobby2 = {0x0194C220, 0xA303, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID IID_IDirectPlayLobby2A = {0x1BB4AF80, 0xA303, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; -enum IID IID_IDirectPlayLobby3 = {0x2DB72490, 0x652C, 0x11D1, [0xA7, 0xA8, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; -enum IID IID_IDirectPlayLobby3A = {0x2DB72491, 0x652C, 0x11D1, [0xA7, 0xA8, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; -enum IID IID_IDirectPlayLobbyA = {0x26C66A70, 0xB367, 0x11CF, [0xA0, 0x24, 0x00, 0xAA, 0x00, 0x61, 0x57, 0xAC]}; -enum IID IID_IDirectSound = {0x279AFA83, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; -enum IID IID_IDirectSound3DBuffer = {0x279AFA86, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; -enum IID IID_IDirectSound3DListener = {0x279AFA84, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; -enum IID IID_IDirectSoundBuffer = {0x279AFA85, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; -enum IID IID_IDirectSoundCapture = {0xB0210781, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; -enum IID IID_IDirectSoundCaptureBuffer = {0xB0210782, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; -enum IID IID_IDirectSoundNotify = {0xB0210783, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; -enum IID IID_IDirectWriterLock = {0x0E6D4D92, 0x6738, 0x11CF, [0x96, 0x08, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; -enum IID IID_IDirectXFile = {0x3D82AB40, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID IID_IDirectXFileBinary = {0x3D82AB46, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID IID_IDirectXFileData = {0x3D82AB44, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID IID_IDirectXFileDataReference = {0x3D82AB45, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID IID_IDirectXFileEnumObject = {0x3D82AB41, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID IID_IDirectXFileObject = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID IID_IDirectXFileSaveObject = {0x3D82AB42, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID IID_IDiscardableBrowserProperty = {0x49C3DE7C, 0xD329, 0x11D0, [0xAB, 0x73, 0x00, 0xC0, 0x4F, 0xC3, 0x3E, 0x80]}; -enum IID IID_IDiscMaster = {0x520CCA62, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID IID_IDiscMasterProgressEvents = {0xEC9E51C1, 0x4E5D, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID IID_IDiscRecorder = {0x85AC9776, 0xCA88, 0x4CF2, [0x89, 0x4E, 0x09, 0x59, 0x8C, 0x07, 0x8A, 0x41]}; -enum IID IID_IDiscStash = {0x520CCA64, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID IID_IDispatch = {0x00020400, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDispatchEx = {0xA6EF9860, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; -enum IID IID_IDispError = {0xA6EF9861, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; -enum IID IID_IDisplayPointer = {0x3050F69E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IDisplayServices = {0x3050F69D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IDithererImpl = {0x7C48E840, 0x3910, 0x11D0, [0x86, 0xFC, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; -enum IID IID_IDocHostShowUI = {0xC4D244B0, 0xD43E, 0x11CF, [0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A]}; -enum IID IID_IDocHostUIHandler = {0xBD3F23C0, 0xD43E, 0x11CF, [0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A]}; -enum IID IID_IDocHostUIHandler2 = {0x3050F6D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IDockingWindow = {0x012DD920, 0x7B26, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; -enum IID IID_IDockingWindowFrame = {0x47D2657A, 0x7B27, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; -enum IID IID_IDockingWindowSite = {0x2A342FC2, 0x7B26, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; -enum IID IID_IDoTask = {0x0230C9F8, 0xEE7F, 0x4307, [0x98, 0xDB, 0x72, 0x6E, 0xBC, 0xAE, 0x55, 0xD6]}; -enum IID IID_IDownloadBehavior = {0x3050F5BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IDownloadManager = {0x988934A4, 0x064B, 0x11D3, [0xBB, 0x80, 0x00, 0x10, 0x4B, 0x35, 0xE7, 0xF9]}; -enum IID IID_IDownloadNotify = {0xCAEB5D28, 0xAE4C, 0x11D1, [0xBA, 0x40, 0x00, 0xC0, 0x4F, 0xB9, 0x2D, 0x79]}; -enum IID IID_IDragSourceHelper = {0xDE5BF786, 0x477A, 0x11D2, [0x83, 0x9D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; -enum IID IID_IDropSource = {0x00000121, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDropTarget = {0x00000122, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IDropTargetHelper = {0x4657278B, 0x411B, 0x11D2, [0x83, 0x9A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; -enum IID IID_IDsBrowseDomainTree = {0x7CABCF1E, 0x78F5, 0x11D2, [0x96, 0x0C, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; -enum IID IID_IDsQueryColumnHandler = {0xC072999E, 0xFA49, 0x11D1, [0xA0, 0xAF, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; -enum IID IID_IDummy = {0x0D7CA54A, 0xD252, 0x4FCB, [0x91, 0x04, 0xF6, 0xDD, 0xD3, 0x10, 0xB3, 0xF9]}; -enum IID IID_IDummyHICONIncluder = {0x947990DE, 0xCC28, 0x11D2, [0xA0, 0xF7, 0x00, 0x80, 0x5F, 0x85, 0x8F, 0xB1]}; -enum IID IID_IDX2D = {0x9EFD02A9, 0xA996, 0x11D1, [0x81, 0xC9, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_IDX2DDebug = {0x03BB2457, 0xA279, 0x11D1, [0x81, 0xC6, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_IDXARGBReadPtr = {0xEAAAC2D6, 0xC290, 0x11D1, [0x90, 0x5D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXARGBReadWritePtr = {0xEAAAC2D7, 0xC290, 0x11D1, [0x90, 0x5D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXARGBSurfaceInit = {0x9EA3B63A, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXBaseObject = {0x17B59B2B, 0x9CC8, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXBasicImage = {0x16B280C7, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXDCLock = {0x0F619456, 0xCF39, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXDLUTBuilder = {0x73068231, 0x35EE, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_IDXDMapper = {0x7FD9088B, 0x35ED, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_IDXEffect = {0xE31FB81B, 0x1335, 0x11D1, [0x81, 0x89, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_IDXGradient = {0xB2024B51, 0xEE77, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXGradient2 = {0xD0EF2A80, 0x61DC, 0x11D2, [0xB2, 0xEB, 0x00, 0xA0, 0xC9, 0x36, 0xB2, 0x12]}; -enum IID IID_IDXLookupTable = {0x01BAFC7F, 0x9E63, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXLUTBuilder = {0xF4370FC1, 0xCADB, 0x11D0, [0xB5, 0x2C, 0x00, 0xA0, 0xC9, 0x05, 0x43, 0x73]}; -enum IID IID_IDXMapper = {0x555278E5, 0x05DB, 0x11D1, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; -enum IID IID_IDXPixelate = {0xD33E180F, 0xFBE9, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXRasterizer = {0x9EA3B635, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXRawSurface = {0x09756C8A, 0xD96A, 0x11D1, [0x90, 0x62, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXSurface = {0xB39FD73F, 0xE139, 0x11D1, [0x90, 0x65, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXSurfaceFactory = {0x144946F5, 0xC4D4, 0x11D1, [0x81, 0xD1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_IDXSurfaceInit = {0x9EA3B639, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXSurfaceModifier = {0x9EA3B637, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXSurfacePick = {0x30A5FB79, 0xE11F, 0x11D1, [0x90, 0x64, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXTAlpha = {0x1D4637E0, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID IID_IDXTAlphaImageLoader = {0xA5F2D3E8, 0x7A7E, 0x48E5, [0xBC, 0x75, 0x40, 0x79, 0x0B, 0xE4, 0xA9, 0x41]}; -enum IID IID_IDXTaskManager = {0x254DBBC1, 0xF922, 0x11D0, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; -enum IID IID_IDXTBindHost = {0xD26BCE55, 0xE9DC, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXTCheckerBoard = {0xAD3C2576, 0x117C, 0x4510, [0x84, 0xDD, 0xB6, 0x68, 0x97, 0x1D, 0xCF, 0xD1]}; -enum IID IID_IDXTChroma = {0x1D4637E2, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID IID_IDXTClipOrigin = {0xEE1663D8, 0x0988, 0x4C48, [0x9F, 0xD6, 0xDB, 0x44, 0x50, 0x88, 0x56, 0x68]}; -enum IID IID_IDXTComposite = {0x9A43A843, 0x0831, 0x11D1, [0x81, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_IDXTConvolution = {0x7BA7F8AF, 0xE5EA, 0x11D1, [0x81, 0xDD, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_IDXTDropShadow = {0x1D4637E3, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID IID_IDXTFade = {0x16B280C4, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXTFilter = {0x6187E5A2, 0xA445, 0x4608, [0x8F, 0xC0, 0xBE, 0x7A, 0x6C, 0x8D, 0xB3, 0x86]}; -enum IID IID_IDXTFilterBehavior = {0x14D7DDDD, 0xACA2, 0x4E45, [0x95, 0x04, 0x38, 0x08, 0xAB, 0xEB, 0x4F, 0x92]}; -enum IID IID_IDXTFilterBehaviorSite = {0x909B23C2, 0x9018, 0x499F, [0xA8, 0x6D, 0x4E, 0x7D, 0xA9, 0x37, 0xE9, 0x31]}; -enum IID IID_IDXTFilterCollection = {0x22B07B33, 0x8BFB, 0x49D4, [0x9B, 0x90, 0x09, 0x38, 0x37, 0x0C, 0x90, 0x19]}; -enum IID IID_IDXTFilterController = {0x5CF315F2, 0x273D, 0x47B6, [0xB9, 0xED, 0xF7, 0x5D, 0xC3, 0xB0, 0x15, 0x0B]}; -enum IID IID_IDXTGlow = {0x1D4637E4, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID IID_IDXTGradientD = {0x623E2881, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; -enum IID IID_IDXTGridSize = {0xD6BBE91E, 0xFF60, 0x11D2, [0x8F, 0x6E, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x74]}; -enum IID IID_IDXTICMFilter = {0x734321ED, 0x1E7B, 0x4E1C, [0xBB, 0xFA, 0x89, 0xC8, 0x19, 0x80, 0x0E, 0x2F]}; -enum IID IID_IDXTLabel = {0xC0C17F0E, 0xAE41, 0x11D1, [0x9A, 0x3B, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; -enum IID IID_IDXTLight = {0xF9EFBEC1, 0x4302, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID IID_IDXTMask = {0xA1067146, 0xB063, 0x47D7, [0xA5, 0x4A, 0x2C, 0x23, 0x09, 0xE9, 0x88, 0x9D]}; -enum IID IID_IDXTMatrix = {0xAC66A493, 0x0F0C, 0x4C76, [0x82, 0x5C, 0x9D, 0x68, 0xBE, 0xDE, 0x91, 0x88]}; -enum IID IID_IDXTMetaBurnFilm = {0x107045D0, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaCenterPeel = {0xAA0D4D0B, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID IID_IDXTMetaColorFade = {0x2A54C907, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaFlowMotion = {0x2A54C90A, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaGriddler = {0x2A54C910, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaGriddler2 = {0x2A54C912, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaJaws = {0x2A54C903, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaLightWipe = {0x107045C7, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaLiquid = {0xAA0D4D09, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID IID_IDXTMetaPageTurn = {0xAA0D4D07, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID IID_IDXTMetaPeelPiece = {0xAA0D4D0F, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID IID_IDXTMetaPeelSmall = {0xAA0D4D0D, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID IID_IDXTMetaPeelSplit = {0xAA0D4D11, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID IID_IDXTMetaRadialScaleWipe = {0x107045C9, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaRipple = {0xAA0D4D02, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID IID_IDXTMetaRoll = {0x9C61F46D, 0x0530, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; -enum IID IID_IDXTMetaThreshold = {0x2A54C914, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaTwister = {0x107045CE, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaVacuum = {0x2A54C90C, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaWater = {0x107045C4, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaWhiteOut = {0x107045CB, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; -enum IID IID_IDXTMetaWormHole = {0x0E6AE021, 0x0C83, 0x11D2, [0x8C, 0xD4, 0x00, 0x10, 0x4B, 0xC7, 0x5D, 0x9A]}; -enum IID IID_IDXTMotionBlur = {0x089057BE, 0xD3F5, 0x4A2C, [0xB1, 0x0A, 0xA5, 0x13, 0x01, 0x84, 0xA0, 0xF7]}; -enum IID IID_IDXTRandomBars = {0x8A6D2022, 0x4A8F, 0x4EB9, [0xBB, 0x25, 0xAA, 0x05, 0x20, 0x1F, 0x9C, 0x84]}; -enum IID IID_IDXTransform = {0x30A5FB78, 0xE11F, 0x11D1, [0x90, 0x64, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXTransformFactory = {0x6A950B2B, 0xA971, 0x11D1, [0x81, 0xC8, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_IDXTRedirect = {0x02F5140B, 0x626F, 0x4019, [0x9C, 0x9E, 0x2D, 0xAA, 0x1E, 0x93, 0xE8, 0xFC]}; -enum IID IID_IDXTRedirectFilterInit = {0xD1A57094, 0x21F7, 0x4E6C, [0x93, 0xE5, 0xF5, 0xF7, 0x7F, 0x74, 0x82, 0x93]}; -enum IID IID_IDXTRevealTrans = {0xB8095006, 0xA128, 0x464B, [0x8B, 0x2D, 0x90, 0x58, 0x0A, 0xEE, 0x2B, 0x05]}; -enum IID IID_IDXTScale = {0xB39FD742, 0xE139, 0x11D1, [0x90, 0x65, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXTScaleOutput = {0xB2024B50, 0xEE77, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; -enum IID IID_IDXTShadow = {0x1D4637E6, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID IID_IDXTStrips = {0xA83C9B5C, 0xFB11, 0x4AF5, [0x8F, 0x65, 0xD0, 0x3F, 0x15, 0x1D, 0x3E, 0xD5]}; -enum IID IID_IDXTWave = {0x1D4637E7, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; -enum IID IID_IDXTWipe = {0xAF279B2F, 0x86EB, 0x11D1, [0x81, 0xBF, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID IID_IDXTWipe2 = {0xE1FF8091, 0x442B, 0x4801, [0x88, 0xB6, 0x2B, 0x47, 0xB1, 0x61, 0x1F, 0xD2]}; -enum IID IID_IDynamicPortMapping = {0x4FC80282, 0x23B6, 0x4378, [0x9A, 0x27, 0xCD, 0x8F, 0x17, 0xC9, 0x40, 0x0C]}; -enum IID IID_IDynamicPortMappingCollection = {0xB60DE00F, 0x156E, 0x4E8D, [0x9E, 0xC1, 0x3A, 0x23, 0x42, 0xC1, 0x08, 0x99]}; -enum IID IID_IEditDebugServices = {0x3050F60B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementAdorner = {0x3050F607, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehavior = {0x3050F425, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorCategory = {0x3050F4ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorFactory = {0x3050F429, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorFocus = {0x3050F6B6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorLayout = {0x3050F6BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorLayout2 = {0x3050F846, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorRender = {0x3050F4AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorSite = {0x3050F427, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorSiteCategory = {0x3050F4EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorSiteLayout = {0x3050F6B7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorSiteLayout2 = {0x3050F847, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorSiteOM = {0x3050F489, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorSiteOM2 = {0x3050F659, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorSiteRender = {0x3050F4A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorSubmit = {0x3050F646, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementBehaviorUI = {0x3050F4BF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementNamespace = {0x3050F671, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementNamespaceFactory = {0x3050F672, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementNamespaceFactory2 = {0x3050F805, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementNamespaceFactoryCallback = {0x3050F7FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementNamespacePrivate = {0x3050F7FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementNamespaceTable = {0x3050F670, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IElementSegment = {0x3050F68F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IEmptyVolumeCache = {0x8FCE5227, 0x04DA, 0x11D1, [0xA0, 0x04, 0x00, 0x80, 0x5F, 0x8A, 0xBE, 0x06]}; -enum IID IID_IEmptyVolumeCache2 = {0x02B7E3BA, 0x4DB3, 0x11D2, [0xB2, 0xD9, 0x00, 0xC0, 0x4F, 0x8E, 0xEC, 0x8C]}; -enum IID IID_IEmptyVolumeCacheCallBack = {0x6E793361, 0x73C6, 0x11D0, [0x84, 0x69, 0x00, 0xAA, 0x00, 0x44, 0x29, 0x01]}; -enum IID IID_IEncodingFilterFactory = {0x70BDDE00, 0xC18E, 0x11D0, [0xA9, 0xCE, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; -enum IID IID_IEnroll = {0xACAA7838, 0x4585, 0x11D1, [0xAB, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; -enum IID IID_IEnroll2 = {0xC080E199, 0xB7DF, 0x11D2, [0xA4, 0x21, 0x00, 0xC0, 0x4F, 0x79, 0xFE, 0x8E]}; -enum IID IID_IEnroll4 = {0xF8053FE5, 0x78F4, 0x448F, [0xA0, 0xDB, 0x41, 0xD6, 0x1B, 0x73, 0x44, 0x6B]}; -enum IID IID_IEntryID = {0xE4D19810, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; -enum IID IID_IEnumACDGroup = {0x5AFC3157, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_IEnumACString = {0x8E74C210, 0xCF9D, 0x4EAF, [0xA4, 0x03, 0x73, 0x56, 0x42, 0x8F, 0x0A, 0x5A]}; -enum IID IID_IEnumAdapterInfo = {0xA23F9D11, 0x714C, 0x41FE, [0x84, 0x71, 0xFF, 0xB1, 0x9B, 0xC2, 0x84, 0x54]}; -enum IID IID_IEnumAddress = {0x1666FCA1, 0x9363, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_IEnumAgent = {0x5AFC314D, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_IEnumAgentHandler = {0x587E8C28, 0x9802, 0x11D1, [0xA0, 0xA4, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_IEnumAgentSession = {0x5AFC314E, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_IEnumBackgroundCopyFiles = {0xCA51E165, 0xC365, 0x424C, [0x8D, 0x41, 0x24, 0xAA, 0xA4, 0xFF, 0x3C, 0x40]}; -enum IID IID_IEnumBackgroundCopyGroups = {0xD993E603, 0x4AA4, 0x47C5, [0x86, 0x65, 0xC2, 0x0D, 0x39, 0xC2, 0xBA, 0x4F]}; -enum IID IID_IEnumBackgroundCopyJobs = {0x1AF4F612, 0x3B71, 0x466F, [0x8F, 0x58, 0x7B, 0x6F, 0x73, 0xAC, 0x57, 0xAD]}; -enum IID IID_IEnumBackgroundCopyJobs1 = {0x8BAEBA9D, 0x8F1C, 0x42C4, [0xB8, 0x2C, 0x09, 0xAE, 0x79, 0x98, 0x0D, 0x25]}; -enum IID IID_IEnumBstr = {0x35372049, 0x0BC6, 0x11D2, [0xA0, 0x33, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_IEnumCall = {0xAE269CF6, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_IEnumCallback = {0x00000108, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumCallHub = {0xA3C15450, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_IEnumCallingCard = {0x0C4D8F02, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_IEnumCATEGORYINFO = {0x0002E011, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumChannels = {0xA4C65425, 0x0F82, 0x11D1, [0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68]}; -enum IID IID_IEnumClusCfgIPAddresses = {0xBD5F35BA, 0x0BC0, 0x455F, [0x92, 0x6D, 0xC3, 0xD3, 0x56, 0x41, 0x94, 0x86]}; -enum IID IID_IEnumClusCfgManagedResources = {0x7DBE11EB, 0xA5DF, 0x4534, [0xAB, 0xF6, 0x8B, 0xAC, 0x7B, 0x53, 0xFC, 0x95]}; -enum IID IID_IEnumClusCfgNetworks = {0xCF3FAED8, 0x1322, 0x4BCB, [0x99, 0x23, 0xB5, 0xB7, 0x45, 0xA6, 0x9E, 0x36]}; -enum IID IID_IEnumClusCfgPartitions = {0x4440BB6A, 0xB0AC, 0x479D, [0xB5, 0x34, 0x72, 0x65, 0xA3, 0x1D, 0x6C, 0x55]}; -enum IID IID_IEnumCodePage = {0x275C23E3, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; -enum IID IID_IEnumConnectionPoints = {0xB196B285, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IEnumConnections = {0xB196B287, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IEnumCookies = {0x5E3E482E, 0x3C22, 0x482C, [0xB6, 0x64, 0x69, 0x30, 0x51, 0xAD, 0x0A, 0x5D]}; -enum IID IID_IEnumDebugApplicationNodes = {0x51973C3A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IEnumDebugCodeContexts = {0x51973C1D, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IEnumDebugExpressionContexts = {0x51973C40, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IEnumDebugExtendedPropertyInfo = {0x51973C53, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IEnumDebugPropertyInfo = {0x51973C51, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IEnumDebugStackFrames = {0x51973C1E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IEnumDebugStackFrames64 = {0x0DC38853, 0xC1B0, 0x4176, [0xA9, 0x84, 0xB2, 0x98, 0x36, 0x10, 0x27, 0xAF]}; -enum IID IID_IEnumDialableAddrs = {0x34621D70, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; -enum IID IID_IEnumDirectory = {0x34621D6D, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; -enum IID IID_IEnumDirectoryObject = {0x06C9B64A, 0x306D, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_IEnumDiscMasterFormats = {0xDDF445E1, 0x54BA, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID IID_IEnumDiscRecorders = {0x9B1921E1, 0x54AC, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID IID_IEnumExtraSearch = {0x0E700BE1, 0x9DB6, 0x11D1, [0xA1, 0xCE, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; -enum IID IID_IEnumFORMATETC = {0x00000103, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumGeneric = {0x00000106, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumGUID = {0x0002E000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumHLITEM = {0x79EAC9C6, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IEnumHNetApplicationProtocols = {0x85D18B7B, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IEnumHNetBridgedConnections = {0x85D18B7D, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IEnumHNetBridges = {0x85D18B77, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IEnumHNetFirewalledConnections = {0x85D18B78, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IEnumHNetIcsPrivateConnections = {0x85D18B7A, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IEnumHNetIcsPublicConnections = {0x85D18B79, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IEnumHNetPortMappingBindings = {0x85D18B81, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IEnumHNetPortMappingProtocols = {0x85D18B7C, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IEnumHolder = {0x00000107, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumIDList = {0x000214F2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumInputContext = {0x09B5EAB0, 0xF997, 0x11D1, [0x93, 0xD4, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; -enum IID IID_IEnumItemProperties = {0xF72C8D96, 0x6DBD, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; -enum IID IID_IEnumLocation = {0x0C4D8F01, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_IEnumMcastScope = {0xDF0DAF09, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; -enum IID IID_IEnumMedia = {0xCA8397BE, 0x2FA4, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_IEnumMoniker = {0x00000102, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumNetCfgBindingInterface = {0xC0E8AE90, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IEnumNetCfgBindingPath = {0xC0E8AE91, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IEnumNetCfgComponent = {0xC0E8AE92, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IEnumNetConnection = {0xC08956A0, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IEnumNetSharingEveryConnection = {0xC08956B8, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IEnumNetSharingPortMapping = {0xC08956B0, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IEnumNetSharingPrivateConnection = {0xC08956B5, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IEnumNetSharingPublicConnection = {0xC08956B4, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IEnumNodes = {0xC477E363, 0xAF0A, 0x4203, [0xA6, 0x04, 0x45, 0xCD, 0x60, 0x7D, 0xD7, 0x10]}; -enum IID IID_IEnumNotification = {0xC733E4A8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_IEnumNotificationSinkItem = {0xC733E4AA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_IEnumOleDocumentViews = {0xB722BCC8, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; -enum IID IID_IEnumOleUndoUnits = {0xB3E7C340, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; -enum IID IID_IEnumOLEVERB = {0x00000104, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumParticipant = {0x0A91B56C, 0x5A35, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; -enum IID IID_IEnumPhone = {0xF15B7669, 0x4780, 0x4595, [0x8C, 0x89, 0xFB, 0x36, 0x9C, 0x8C, 0xF7, 0xAA]}; -enum IID IID_IEnumPluggableSuperclassInfo = {0xE9586A80, 0x89E6, 0x4CFF, [0x93, 0x1D, 0x47, 0x8D, 0x57, 0x51, 0xF4, 0xC0]}; -enum IID IID_IEnumPluggableTerminalClassInfo = {0x4567450C, 0xDBEE, 0x4E3F, [0xAA, 0xF5, 0x37, 0xBF, 0x9E, 0xBF, 0x5E, 0x29]}; -enum IID IID_IEnumPrivacyRecords = {0x3050F844, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IEnumPropertyMap = {0xC733E4A1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_IEnumPublishedApps = {0x0B124F8C, 0x91F0, 0x11D1, [0xB8, 0xB5, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; -enum IID IID_IEnumQueue = {0x5AFC3158, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_IEnumRegisterWordA = {0x08C03412, 0xF96B, 0x11D0, [0xA4, 0x75, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; -enum IID IID_IEnumRegisterWordW = {0x4955DD31, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; -enum IID IID_IEnumRemoteDebugApplications = {0x51973C3B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IEnumRemoteDebugApplicationThrea = {0x51973C3C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IEnumRfc1766 = {0x3DC39D1D, 0xC030, 0x11D0, [0xB8, 0x1B, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; -enum IID IID_IEnumScheduleGroup = {0xC733E4A9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_IEnumScript = {0xAE5F1430, 0x388B, 0x11D2, [0x83, 0x80, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0xA1]}; -enum IID IID_IEnumSTATDATA = {0x00000105, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumSTATPROPBAG = {0x20021801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; -enum IID IID_IEnumSTATPROPSETSTG = {0x0000013B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumSTATPROPSTG = {0x00000139, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumSTATSTG = {0x0000000D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumSTATURL = {0x3C374A42, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; -enum IID IID_IEnumStream = {0xEE3BD606, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_IEnumString = {0x00000101, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumSubscription = {0xF72C8D97, 0x6DBD, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; -enum IID IID_IEnumSubStream = {0xEE3BD609, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_IEnumSyncItems = {0xF0E1589A, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; -enum IID IID_IEnumSyncSchedules = {0xF0E15898, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; -enum IID IID_IEnumTerminal = {0xAE269CF4, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_IEnumTerminalClass = {0xAE269CF5, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_IEnumTime = {0x9055322E, 0x2FA8, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_IEnumTravelLogEntry = {0x7EBFDD85, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; -enum IID IID_IEnumUnknown = {0x00000100, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumVARIANT = {0x00020404, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IEnumWbemClassObject = {0x027947E1, 0xD731, 0x11CE, [0xA3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]}; -enum IID IID_IErrorInfo = {0x1CF2B120, 0x547D, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; -enum IID IID_IErrorLog = {0x3127CA40, 0x446E, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; -enum IID IID_IErrorLookup = {0x0C733A66, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IErrorRecords = {0x0C733A67, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IESP = {0xE99A04AA, 0xAB95, 0x11D0, [0xBE, 0x96, 0x00, 0xA0, 0xC9, 0x49, 0x89, 0xDE]}; -enum IID IID_IExtendObjectManager = {0xCA7BB0B9, 0x700C, 0x4DC5, [0x99, 0x1E, 0x75, 0xF9, 0xE6, 0x5E, 0xE9, 0x75]}; -enum IID IID_IExtensionServices = {0x79EAC9CB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IExternalConnection = {0x00000019, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IExtractIconA = {0x000214EB, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IExtractIconW = {0x000214FA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IExtractImage = {0xBB2E617C, 0x0920, 0x11D1, [0x9A, 0x0B, 0x00, 0xC0, 0x4F, 0xC2, 0xD6, 0xC1]}; -enum IID IID_IExtractImage2 = {0x953BB1EE, 0x93B4, 0x11D1, [0x98, 0xA3, 0x00, 0xC0, 0x4F, 0xB6, 0x87, 0xDA]}; -enum IID IID_IFileSearchBand = {0x2D91EEA1, 0x9932, 0x11D2, [0xBE, 0x86, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; -enum IID IID_IFileSystemBindData = {0x01E18D10, 0x4D8B, 0x11D2, [0x85, 0x5D, 0x00, 0x60, 0x08, 0x05, 0x93, 0x67]}; -enum IID IID_IFileViewerA = {0x000214F0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IFileViewerSite = {0x000214F3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IFileViewerW = {0x000214F8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IFillLockBytes = {0x99CAF010, 0x415E, 0x11CF, [0x88, 0x14, 0x00, 0xAA, 0x00, 0xB5, 0x69, 0xF5]}; -enum IID IID_IFilter = {0x89BCB740, 0x6119, 0x101A, [0xBC, 0xB7, 0x00, 0xDD, 0x01, 0x06, 0x55, 0xAF]}; -enum IID IID_IFilterAnimationInfo = {0x02E29300, 0xC758, 0x49B4, [0x9E, 0x11, 0xC5, 0x8B, 0xFE, 0x90, 0x55, 0x8B]}; -enum IID IID_IFilterStatus = {0xF4EB8260, 0x8DDA, 0x11D1, [0xB3, 0xAA, 0x00, 0xA0, 0xC9, 0x06, 0x37, 0x96]}; -enum IID IID_IFolderFilter = {0x9CC22886, 0xDC8E, 0x11D2, [0xB1, 0xD0, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; -enum IID IID_IFolderFilterSite = {0xC0A651F5, 0xB48B, 0x11D2, [0xB5, 0xED, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6]}; -enum IID IID_IFolderView = {0xCDE725B0, 0xCCC9, 0x4519, [0x91, 0x7E, 0x32, 0x5D, 0x72, 0xFA, 0xB4, 0xCE]}; -enum IID IID_IFolderViewHost = {0x1EA58F02, 0xD55A, 0x411D, [0xB0, 0x9E, 0x9E, 0x65, 0xAC, 0x21, 0x60, 0x5B]}; -enum IID IID_IFolderViewOC = {0x9BA05970, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; -enum IID IID_IFont = {0xBEF6E002, 0xA874, 0x101A, [0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID IID_IFontDisp = {0xBEF6E003, 0xA874, 0x101A, [0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID IID_IFontEventsDisp = {0x4EF6100A, 0xAF88, 0x11D0, [0x98, 0x46, 0x00, 0xC0, 0x4F, 0xC2, 0x99, 0x93]}; -enum IID IID_IFontNames = {0x3050F839, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IForegroundTransfer = {0x00000145, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IFsCiAdmin = {0x75398C30, 0x7A26, 0x11D0, [0xA8, 0x0A, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; -enum IID IID_IGatherData = {0x65318F4A, 0xB63C, 0x4E21, [0xAD, 0xDC, 0xBD, 0xCF, 0xB9, 0x69, 0xE1, 0x81]}; -enum IID IID_IGetClusterDataInfo = {0x97DEDE51, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IGetClusterGroupInfo = {0x97DEDE54, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IGetClusterNetInterfaceInfo = {0x97DEDE57, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IGetClusterNetworkInfo = {0x97DEDE56, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IGetClusterNodeInfo = {0x97DEDE53, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IGetClusterObjectInfo = {0x97DEDE52, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IGetClusterResourceInfo = {0x97DEDE55, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IGetClusterUIInfo = {0x97DEDE50, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IGetDataSource = {0x0C733A75, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IGetRow = {0x0C733AAF, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IGetSession = {0x0C733ABA, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IGetSourceRow = {0x0C733ABB, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IGlobalInterfaceTable = {0x00000146, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IH26XEncodeOptions = {0x65698D40, 0x282D, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IH26XEncoderControl = {0xF9B78AA1, 0xEA12, 0x11CF, [0x9F, 0xEC, 0x00, 0xAA, 0x00, 0xA5, 0x9F, 0x69]}; -enum IID IID_IH26XRTPControl = {0x1FC3F2C0, 0x2BFD, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IH26XSnapshot = {0x3CB194A0, 0x10AA, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IH26XVideoEffects = {0x21555140, 0x9C2B, 0x11CF, [0x90, 0xFA, 0x00, 0xAA, 0x00, 0xA7, 0x29, 0xEA]}; -enum IID IID_IH323LineEx = {0x44CF6A9D, 0xCB40, 0x4BBC, [0xB2, 0xD3, 0xB6, 0xAA, 0x93, 0x32, 0x2C, 0x71]}; -enum IID IID_IHeaderFooter = {0x3050F6CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHighlightRenderingServices = {0x3050F606, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHighlightSegment = {0x3050F690, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHlink = {0x79EAC9C3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IHlinkBrowseContext = {0x79EAC9C7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IHlinkFrame = {0x79EAC9C5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IHlinkSite = {0x79EAC9C2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IHlinkTarget = {0x79EAC9C4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IHNetApplicationProtocol = {0x85D18B7F, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetBridge = {0x85D18B75, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetBridgedConnection = {0x85D18B76, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetBridgeSettings = {0x85D18B6D, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetCfgMgr = {0x85D18B6C, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetConnection = {0x85D18B71, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetFirewalledConnection = {0x85D18B72, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetFirewallSettings = {0x85D18B6E, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetIcsPrivateConnection = {0x85D18B74, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetIcsPublicConnection = {0x85D18B73, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetIcsSettings = {0x85D18B6F, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetPortMappingBinding = {0x85D18B80, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetPortMappingProtocol = {0x85D18B7E, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHNetProtocolSettings = {0x85D18B70, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; -enum IID IID_IHomePage = {0x766BF2AF, 0xD650, 0x11D1, [0x98, 0x11, 0x00, 0xC0, 0x4F, 0xC3, 0x1D, 0x2E]}; -enum IID IID_IHostBehaviorInit = {0x3050F842, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHostDialogHelper = {0x53DEC138, 0xA51E, 0x11D2, [0x86, 0x1E, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; -enum IID IID_IHTCAttachBehavior = {0x3050F5F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTCAttachBehavior2 = {0x3050F7EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTCDefaultDispatch = {0x3050F4FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTCDescBehavior = {0x3050F5DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTCEventBehavior = {0x3050F4FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTCMethodBehavior = {0x3050F631, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTCPropertyBehavior = {0x3050F5DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAnchorElement = {0x3050F1DA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAnchorElement2 = {0x3050F825, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAppBehavior = {0x3050F5CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAppBehavior2 = {0x3050F5C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAppBehavior3 = {0x3050F5CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHtmlArea = {0x3050F64E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAreaElement = {0x3050F265, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAreasCollection = {0x3050F383, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAreasCollection2 = {0x3050F5EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAreasCollection3 = {0x3050F837, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAttributeCollection = {0x3050F4C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLAttributeCollection2 = {0x3050F80A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLBaseElement = {0x3050F204, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLBaseFontElement = {0x3050F202, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLBGsound = {0x3050F369, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLBlockElement = {0x3050F208, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLBlockElement2 = {0x3050F823, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLBodyElement = {0x3050F1D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLBodyElement2 = {0x3050F5C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLBookmarkCollection = {0x3050F4CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLBRElement = {0x3050F1F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLButtonElement = {0x3050F2BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLCaret = {0x3050F604, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLChangeLog = {0x3050F649, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLChangePlayback = {0x3050F6E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLChangeSink = {0x3050F64A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLCommentElement = {0x3050F20C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLCommentElement2 = {0x3050F813, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLComputedStyle = {0x3050F6C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLControlElement = {0x3050F4E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLControlRange = {0x3050F29C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLControlRange2 = {0x3050F65E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLCurrentStyle = {0x3050F3DB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLCurrentStyle2 = {0x3050F658, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLCurrentStyle3 = {0x3050F818, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDatabinding = {0x3050F3F2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDataTransfer = {0x3050F4B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDDElement = {0x3050F1F2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDialog = {0x3050F216, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDialog2 = {0x3050F5E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDialog3 = {0x3050F388, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDivElement = {0x3050F200, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDivPosition = {0x3050F212, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHtmlDlgSafeHelper = {0x3050F81A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDListElement = {0x3050F1F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDocument = {0x626FC520, 0xA41E, 0x11CF, [0xA7, 0x31, 0x00, 0xA0, 0xC9, 0x08, 0x26, 0x37]}; -enum IID IID_IHTMLDocument2 = {0x332C4425, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; -enum IID IID_IHTMLDocument3 = {0x3050F485, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDocument4 = {0x3050F69A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDocument5 = {0x3050F80C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDOMAttribute = {0x3050F4B0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDOMAttribute2 = {0x3050F810, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDOMChildrenCollection = {0x3050F5AB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDOMImplementation = {0x3050F80D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDOMNode = {0x3050F5DA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDOMNode2 = {0x3050F80B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDOMTextNode = {0x3050F4B1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDOMTextNode2 = {0x3050F809, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDTElement = {0x3050F1F3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLDXTransform = {0x30E2AB7D, 0x4FDD, 0x4159, [0xB7, 0xEA, 0xDC, 0x72, 0x2B, 0xF4, 0xAD, 0xE5]}; -enum IID IID_IHTMLEditDesigner = {0x3050F662, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLEditHost = {0x3050F6A0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLEditHost2 = {0x3050F848, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0D]}; -enum IID IID_IHTMLEditingServices = {0x3050F7FB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLEditor = {0x3050F7FA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLEditServices = {0x3050F663, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLEditServices2 = {0x3050F812, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLElement = {0x3050F1FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLElement2 = {0x3050F434, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLElement3 = {0x3050F673, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLElement4 = {0x3050F80F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLElementCollection = {0x3050F21F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLElementCollection2 = {0x3050F5EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLElementCollection3 = {0x3050F835, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLElementDefaults = {0x3050F6C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLElementRender = {0x3050F669, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLEmbedElement = {0x3050F25F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLEventObj = {0x3050F32D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLEventObj2 = {0x3050F48B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLEventObj3 = {0x3050F680, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLEventObj4 = {0x3050F814, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFieldSetElement = {0x3050F3E7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFieldSetElement2 = {0x3050F833, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFilterPainter = {0x3050F6DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFilterPaintSite = {0x3050F6D3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFiltersCollection = {0x3050F3EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFontElement = {0x3050F1D9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFontNamesCollection = {0x3050F376, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFontSizesCollection = {0x3050F377, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFormElement = {0x3050F1F7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFormElement2 = {0x3050F4F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFormElement3 = {0x3050F836, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFrameBase = {0x3050F311, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFrameBase2 = {0x3050F6DB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFrameBase3 = {0x3050F82E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFrameElement = {0x3050F313, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFrameElement2 = {0x3050F7F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFramesCollection2 = {0x332C4426, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; -enum IID IID_IHTMLFrameSetElement = {0x3050F319, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLFrameSetElement2 = {0x3050F5C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLGenericElement = {0x3050F4B7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLHeadElement = {0x3050F81D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLHeaderElement = {0x3050F1F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLHRElement = {0x3050F1F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLHtmlElement = {0x3050F81C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLIFrameElement = {0x3050F315, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLIFrameElement2 = {0x3050F4E6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLImageElementFactory = {0x3050F38E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLImgElement = {0x3050F240, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLImgElement2 = {0x3050F826, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLInputButtonElement = {0x3050F2B2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLInputElement = {0x3050F5D2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLInputElement2 = {0x3050F821, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLInputFileElement = {0x3050F2AD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLInputHiddenElement = {0x3050F2A4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLInputImage = {0x3050F2C2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLInputTextElement = {0x3050F2A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLIPrintCollection = {0x3050F6B5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLIsIndexElement = {0x3050F206, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLIsIndexElement2 = {0x3050F82F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLLabelElement = {0x3050F32A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLLabelElement2 = {0x3050F832, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLLegendElement = {0x3050F3EA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLLegendElement2 = {0x3050F834, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLLIElement = {0x3050F1E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLLinkElement = {0x3050F205, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLLinkElement2 = {0x3050F4E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLLinkElement3 = {0x3050F81E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLListElement = {0x3050F20E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLListElement2 = {0x3050F822, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHtmlLoadOptions = {0xA71A0808, 0x0F88, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; -enum IID IID_IHTMLLocation = {0x163BB1E0, 0x6E00, 0x11CF, [0x83, 0x7A, 0x48, 0xDC, 0x04, 0xC1, 0x00, 0x00]}; -enum IID IID_IHTMLMapElement = {0x3050F266, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLMarqueeElement = {0x3050F2B5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLMetaElement = {0x3050F203, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLMetaElement2 = {0x3050F81F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLMimeTypesCollection = {0x3050F3FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLModelessInit = {0x3050F5E4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLNamespace = {0x3050F6BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLNamespaceCollection = {0x3050F6B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLNextIdElement = {0x3050F207, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLNoShowElement = {0x3050F38A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLObjectElement = {0x3050F24F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLObjectElement2 = {0x3050F4CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLObjectElement3 = {0x3050F827, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLOListElement = {0x3050F1DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLOMWindowServices = {0x3050F5FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLOpsProfile = {0x3050F401, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLOptionButtonElement = {0x3050F2BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLOptionElement = {0x3050F211, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLOptionElement2 = {0x3050F697, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLOptionElement3 = {0x3050F820, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLOptionElementFactory = {0x3050F38C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLOptionsHolder = {0x3050F378, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPainter = {0x3050F6A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPainterEventInfo = {0x3050F6DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPainterOverlay = {0x3050F7E3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPaintSite = {0x3050F6A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLParaElement = {0x3050F1F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLParamElement = {0x3050F83D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPersistData = {0x3050F4C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPersistDataOM = {0x3050F4C0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPhraseElement = {0x3050F20A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPhraseElement2 = {0x3050F824, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPluginsCollection = {0x3050F3FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPopup = {0x3050F666, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPrivateWindow = {0x3050F6DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPrivateWindow2 = {0x3050F7E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLPrivateWindow3 = {0x3050F840, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLRect = {0x3050F4A3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLRectCollection = {0x3050F4A4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLRenderStyle = {0x3050F6AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLRuleStyle = {0x3050F3CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLRuleStyle2 = {0x3050F4AC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLRuleStyle3 = {0x3050F657, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLRuleStyle4 = {0x3050F817, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLScreen = {0x3050F35C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLScreen2 = {0x3050F84A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLScriptElement = {0x3050F28B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLScriptElement2 = {0x3050F828, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLSelectElement = {0x3050F244, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLSelectElement2 = {0x3050F5ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLSelectElement3 = {0x3050F687, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLSelectElement4 = {0x3050F838, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLSelectionObject = {0x3050F25A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLSelectionObject2 = {0x3050F7EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLSpanElement = {0x3050F3F3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLSpanFlow = {0x3050F3E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyle = {0x3050F25E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyle2 = {0x3050F4A2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyle3 = {0x3050F656, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyle4 = {0x3050F816, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyleElement = {0x3050F375, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyleFontFace = {0x3050F3D5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyleSheet = {0x3050F2E3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyleSheet2 = {0x3050F3D1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyleSheetPage = {0x3050F7EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyleSheetPagesCollection = {0x3050F7F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyleSheetRule = {0x3050F357, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyleSheetRulesCollection = {0x3050F2E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLStyleSheetsCollection = {0x3050F37E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLSubmitData = {0x3050F645, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTable = {0x3050F21E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTable2 = {0x3050F4AD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTable3 = {0x3050F829, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableCaption = {0x3050F2EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableCell = {0x3050F23D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableCell2 = {0x3050F82D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableCol = {0x3050F23A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableCol2 = {0x3050F82A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableRow = {0x3050F23C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableRow2 = {0x3050F4A1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableRow3 = {0x3050F82C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableRowMetrics = {0x3050F413, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableSection = {0x3050F23B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableSection2 = {0x3050F5C7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTableSection3 = {0x3050F82B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTextAreaElement = {0x3050F2AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTextContainer = {0x3050F230, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTextElement = {0x3050F218, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTextRangeMetrics = {0x3050F40B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTextRangeMetrics2 = {0x3050F4A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTitleElement = {0x3050F322, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTxtRange = {0x3050F220, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLTxtRangeCollection = {0x3050F7ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLUListElement = {0x3050F1DD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLUniqueName = {0x3050F4D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLUnknownElement = {0x3050F209, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLUrnCollection = {0x3050F5E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLUserDataOM = {0x3050F48F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLViewFilter = {0x3050F2F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLViewFilterSite = {0x3050F2F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLWindow2 = {0x332C4427, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; -enum IID IID_IHTMLWindow3 = {0x3050F4AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHTMLWindow4 = {0x3050F6CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IHttpNegotiate = {0x79EAC9D2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IHttpNegotiate2 = {0x4F9F9FCB, 0xE0F4, 0x48EB, [0xB7, 0xAB, 0xFA, 0x2E, 0xA9, 0x36, 0x5C, 0xB4]}; -enum IID IID_IHttpSecurity = {0x79EAC9D7, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IHWEventHandler = {0xC1FB73D0, 0xEC3A, 0x4BA2, [0xB5, 0x12, 0x8C, 0xDB, 0x91, 0x87, 0xB6, 0xD1]}; -enum IID IID_IImageDecodeEventSink = {0xBAA342A0, 0x2DED, 0x11D0, [0x86, 0xF4, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; -enum IID IID_IImageDecodeFilter = {0xA3CCEDF3, 0x2DE2, 0x11D0, [0x86, 0xF4, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; -enum IID IID_IImageList = {0x46EB5926, 0x582E, 0x4017, [0x9F, 0xDF, 0xE8, 0x99, 0x8D, 0xAA, 0x09, 0x50]}; -enum IID IID_IIMEServices = {0x3050F6CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IImgCtx = {0x3050F3D7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IIndexDefinition = {0x0C733A68, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IInputObject = {0x68284FAA, 0x6A48, 0x11D0, [0x8C, 0x78, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xB4]}; -enum IID IID_IInputObjectSite = {0xF1DB8392, 0x7331, 0x11D0, [0x8C, 0x99, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; -enum IID IID_IIntDitherer = {0x06670CA0, 0xECEF, 0x11D0, [0xAA, 0xE7, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; -enum IID IID_IIntelliForms = {0x9B9F68E6, 0x1AAA, 0x11D2, [0xBC, 0xA5, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; -enum IID IID_IInterfaceRelated = {0xD1FB5A79, 0x7706, 0x11D1, [0xAD, 0xBA, 0x00, 0xC0, 0x4F, 0xC2, 0xAD, 0xC0]}; -enum IID IID_IInternalMoniker = {0x00000011, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IInternalUnknown = {0x00000021, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IInternet = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetBindInfo = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetConnectionDevice = {0x04DF6137, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; -enum IID IID_IInternetConnectionDeviceClient = {0x04DF6139, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; -enum IID IID_IInternetConnectionDeviceSharedCo = {0x04DF6138, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; -enum IID IID_IInternetHostSecurityManager = {0x3AF280B6, 0xCB3F, 0x11D0, [0x89, 0x1E, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; -enum IID IID_IInternetPriority = {0x79EAC9EB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetProtocolInfo = {0x79EAC9EC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetProtocolRoot = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetProtocolSink = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetProtocolSinkStackable = {0x79EAC9F0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetSecurityManager = {0x79EAC9EE, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetSecurityMgrSite = {0x79EAC9ED, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetSession = {0x79EAC9E7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetThreadSwitch = {0x79EAC9E8, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IInternetZoneManager = {0x79EAC9EF, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IIpxAdapterInfo = {0x98133270, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IItemNameLimits = {0x1DF0D7F1, 0xB267, 0x4D28, [0x8B, 0x10, 0x12, 0xE2, 0x32, 0x02, 0xA5, 0xC4]}; -enum IID IID_IJolietDiscMaster = {0xE3BC42CE, 0x4E5C, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID IID_IKeyFrameControl = {0xC3341386, 0xAF91, 0x4EF9, [0x83, 0xB6, 0xBE, 0x37, 0x62, 0xE4, 0x2E, 0xCB]}; -enum IID IID_IKsControl = {0x28F54685, 0x06FD, 0x11D2, [0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96]}; -enum IID IID_IKsPropertySet = {0x31EFAC30, 0x515C, 0x11D0, [0xA9, 0xAA, 0x00, 0xAA, 0x00, 0x61, 0xBE, 0x93]}; -enum IID IID_ILayoutRect = {0x3050F665, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ILayoutStorage = {0x0E6D4D90, 0x6738, 0x11CF, [0x96, 0x08, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; -enum IID IID_ILineInfo = {0x3050F7E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ILocalMachine = {0x60664CAF, 0xAF0D, 0x1005, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; -enum IID IID_ILockBytes = {0x0000000A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ILogger = {0xD9598418, 0x304E, 0x4F94, [0xB6, 0xA1, 0xE6, 0x42, 0xFE, 0x95, 0xED, 0x57]}; -enum IID IID_ILogManager = {0x4759DC11, 0x8DA0, 0x4261, [0xBB, 0xFB, 0xEC, 0x32, 0x19, 0x11, 0xD1, 0xC9]}; -enum IID IID_ILogonEnumUsers = {0x60664CAF, 0xAF0D, 0x1004, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; -enum IID IID_ILogonStatusHost = {0x60664CAF, 0xAF0D, 0x1007, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; -enum IID IID_ILogonUser = {0x60664CAF, 0xAF0D, 0x1003, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; -enum IID IID_IMachineDebugManager = {0x51973C2C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IMachineDebugManagerCookie = {0x51973C2D, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IMachineDebugManagerEvents = {0x51973C2E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IMailAutoDiscovery = {0x80402DEE, 0xB114, 0x4D32, [0xB4, 0x4E, 0x82, 0xFD, 0x82, 0x34, 0xC9, 0x2A]}; -enum IID IID_IMailProtocolADEntry = {0x40EF8C68, 0xD554, 0x47ED, [0xAA, 0x37, 0xE5, 0xFB, 0x6B, 0xC9, 0x10, 0x75]}; -enum IID IID_IMalloc = {0x00000002, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IMallocSpy = {0x0000001D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IMapMIMEToCLSID = {0xD9E89500, 0x30FA, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; -enum IID IID_IMarkupContainer = {0x3050F5F9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IMarkupContainer2 = {0x3050F648, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IMarkupPointer = {0x3050F49F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IMarkupPointer2 = {0x3050F675, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IMarkupServices = {0x3050F4A0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IMarkupServices2 = {0x3050F682, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IMarkupTextFrags = {0x3050F5FA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IMarshal = {0x00000003, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IMarshal2 = {0x000001CF, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IMcastAddressAllocation = {0xDF0DAEF1, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; -enum IID IID_IMcastLeaseInfo = {0xDF0DAEFD, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; -enum IID IID_IMcastScope = {0xDF0DAEF4, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; -enum IID IID_IMDDataset = {0xA07CCCD1, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; -enum IID IID_IMDFind = {0xA07CCCD2, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; -enum IID IID_IMDRangeRowset = {0x0C733AA0, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IMessageFilter = {0x00000016, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IMigrationWizardAuto = {0xCE20DAB9, 0xB353, 0x469B, [0x8B, 0x4D, 0x6D, 0xBB, 0x3A, 0x7B, 0xA0, 0x16]}; -enum IID IID_IMimeInfo = {0xF77459A0, 0xBF9A, 0x11CF, [0xBA, 0x4E, 0x00, 0xC0, 0x4F, 0xD7, 0x08, 0x16]}; -enum IID IID_IMLangCodePages = {0x359F3443, 0xBD4A, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; -enum IID IID_IMLangConvertCharset = {0xD66D6F98, 0xCDAA, 0x11D0, [0xB8, 0x22, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; -enum IID IID_IMLangFontLink = {0x359F3441, 0xBD4A, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; -enum IID IID_IMLangFontLink2 = {0xDCCFC162, 0x2B38, 0x11D2, [0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A]}; -enum IID IID_IMLangLineBreakConsole = {0xF5BE2EE1, 0xBFD7, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; -enum IID IID_IMLangString = {0xC04D65CE, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; -enum IID IID_IMLangStringAStr = {0xC04D65D2, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; -enum IID IID_IMLangStringBufA = {0xD24ACD23, 0xBA72, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; -enum IID IID_IMLangStringBufW = {0xD24ACD21, 0xBA72, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; -enum IID IID_IMLangStringWStr = {0xC04D65D0, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; -enum IID IID_IMofCompiler = {0x6DAF974E, 0x2E37, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IMoniker = {0x0000000F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IMonikerProp = {0xA5CA5F7F, 0x1847, 0x4D87, [0x9C, 0x5B, 0x91, 0x85, 0x09, 0xF7, 0x51, 0x1D]}; -enum IID IID_IMountedVolume = {0x12518492, 0x00B2, 0x11D2, [0x9F, 0xA5, 0x9E, 0x34, 0x20, 0x52, 0x41, 0x53]}; -enum IID IID_IMulticastControl = {0x410FA507, 0x4DC6, 0x415A, [0x90, 0x14, 0x63, 0x38, 0x75, 0xD5, 0x40, 0x6E]}; -enum IID IID_IMultiLanguage = {0x275C23E1, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; -enum IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11D2, [0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A]}; -enum IID IID_IMultiLanguage3 = {0x4E5868AB, 0xB157, 0x4623, [0x9A, 0xCC, 0x6A, 0x1D, 0x9C, 0xAE, 0xBE, 0x04]}; -enum IID IID_IMultiplePropertyAccess = {0xEC81FEDE, 0xD432, 0x11CE, [0x92, 0x44, 0x00, 0x20, 0xAF, 0x6E, 0x72, 0xDB]}; -enum IID IID_IMultipleResults = {0x0C733A90, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IMultiQI = {0x00000020, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_INamedPropertyBag = {0xFB700430, 0x952C, 0x11D1, [0x94, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; -enum IID IID_INATEventManager = {0x624BD588, 0x9060, 0x4109, [0xB0, 0xB0, 0x1A, 0xDB, 0xBC, 0xAC, 0x32, 0xDF]}; -enum IID IID_INATExternalIPAddressCallback = {0x9C416740, 0xA34E, 0x446F, [0xBA, 0x06, 0xAB, 0xD0, 0x4C, 0x31, 0x49, 0xAE]}; -enum IID IID_INATNumberOfEntriesCallback = {0xC83A0A74, 0x91EE, 0x41B6, [0xB6, 0x7A, 0x67, 0xE0, 0xF0, 0x0B, 0xBD, 0x78]}; -enum IID IID_INetCfg = {0xC0E8AE93, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgBindingInterface = {0xC0E8AE94, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgBindingPath = {0xC0E8AE96, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgClass = {0xC0E8AE97, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgClassSetup = {0xC0E8AE9D, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgComponent = {0xC0E8AE99, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgComponentBindings = {0xC0E8AE9E, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgComponentControl = {0x932238DF, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; -enum IID IID_INetCfgComponentNotifyBinding = {0x932238E1, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; -enum IID IID_INetCfgComponentNotifyGlobal = {0x932238E2, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; -enum IID IID_INetCfgComponentPrivate = {0x98133273, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgComponentPropertyUi = {0x932238E0, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; -enum IID IID_INetCfgComponentSetup = {0x932238E3, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; -enum IID IID_INetCfgComponentSysPrep = {0xC0E8AE9A, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgComponentUpperEdge = {0x932238E4, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; -enum IID IID_INetCfgInternalSetup = {0x98133276, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgLock = {0xC0E8AE9F, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgPnpReconfigCallback = {0x8D84BD35, 0xE227, 0x11D2, [0xB7, 0x00, 0x00, 0xA0, 0xC9, 0x8A, 0x6A, 0x85]}; -enum IID IID_INetCfgSpecialCase = {0xC0E8AE95, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCfgSysPrep = {0xC0E8AE98, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnection = {0xC08956A1, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnection2 = {0xFAEDCF6A, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionBrandingInfo = {0xFAEDCF5B, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionCMUtil = {0xFAEDCF60, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionCommonUi = {0xC08956A5, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionConnectUi = {0xC08956A3, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionHNetUtil = {0xFAEDCF64, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionManager = {0xC08956A2, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionManager2 = {0xFAEDCF69, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionManagerDebug = {0xFAEDCF5D, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionManagerEvents = {0xC08956BA, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionNotifySink = {0xFAEDCF5C, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionPropertyUi = {0xC08956A4, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionPropertyUi2 = {0xC08956B9, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionProps = {0xF4277C95, 0xCE5B, 0x463D, [0x81, 0x67, 0x56, 0x62, 0xD9, 0xBC, 0xAA, 0x72]}; -enum IID IID_INetConnectionRefresh = {0xFAEDCF5F, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionSysTray = {0xFAEDCF65, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionUiLock = {0xFAEDCF50, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionUiUtilities = {0xFAEDCF5E, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionWizardUi = {0xFAEDCF51, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetConnectionWizardUiContext = {0xFAEDCF52, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetCrawler = {0x49C929EE, 0xA1B7, 0x4C58, [0xB5, 0x39, 0xE6, 0x3B, 0xE3, 0x92, 0xB6, 0xF3]}; -enum IID IID_INetDefaultConnection = {0xFAEDCF66, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetInboundConnection = {0xFAEDCF53, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetInstallQueue = {0x98133274, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetLanConnection = {0xFAEDCF54, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetLanConnectionUiInfo = {0xC08956A6, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetLanConnectionWizardUi = {0xFAEDCF56, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetMachinePolicies = {0xFAEDCF68, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetRasConnection = {0xFAEDCF57, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetRasConnectionIpUiInfo = {0xFAEDCF58, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetSharedAccessConnection = {0xFAEDCF55, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetSharingConfiguration = {0xC08956B6, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetSharingEveryConnectionCollect = {0x33C4643C, 0x7811, 0x46FA, [0xA8, 0x9A, 0x76, 0x85, 0x97, 0xBD, 0x72, 0x23]}; -enum IID IID_INetSharingManager = {0xC08956B7, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetSharingPortMapping = {0xC08956B1, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_INetSharingPortMappingCollection = {0x02E4A2DE, 0xDA20, 0x4E34, [0x89, 0xC8, 0xAC, 0x22, 0x27, 0x5A, 0x01, 0x0B]}; -enum IID IID_INetSharingPortMappingProps = {0x24B7E9B5, 0xE38F, 0x4685, [0x85, 0x1B, 0x00, 0x89, 0x2C, 0xF5, 0xF9, 0x40]}; -enum IID IID_INetSharingPrivateConnectionColle = {0x38AE69E0, 0x4409, 0x402A, [0xA2, 0xCB, 0xE9, 0x65, 0xC7, 0x27, 0xF8, 0x40]}; -enum IID IID_INetSharingPublicConnectionCollec = {0x7D7A6355, 0xF372, 0x4971, [0xA1, 0x49, 0xBF, 0xC9, 0x27, 0xBE, 0x76, 0x2A]}; -enum IID IID_INewShortcutHookA = {0x000214E1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_INewShortcutHookW = {0x000214F7, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_INewWDEvents = {0x0751C551, 0x7568, 0x41C9, [0x8E, 0x5B, 0xE2, 0x2E, 0x38, 0x91, 0x92, 0x36]}; -enum IID IID_INotification = {0xC733E4A3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_INotificationHelper = {0xC733E4AB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_INotificationManager = {0x95531501, 0x8782, 0x4845, [0x90, 0x1D, 0x31, 0x2F, 0x36, 0xBA, 0x6C, 0x6E]}; -enum IID IID_INotificationMgr = {0xC733E4A4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_INotificationPing = {0xC733E4AC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_INotificationProcessMgr0 = {0xC733E4AE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_INotificationReport = {0xC733E4A7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_INotificationRunning = {0xC733E4AD, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_INotificationSink = {0xC733E4A5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_INotifyDBEvents = {0xDB526CC0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; -enum IID IID_INotifyReplica = {0x99180163, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_INotifyUI = {0xE5E8D401, 0x1A37, 0x4FBF, [0x88, 0x0C, 0x82, 0x6C, 0xC8, 0x95, 0x16, 0xFD]}; -enum IID IID_IObjectAccessControl = {0x0C733AA3, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IObjectIdentity = {0xCA04B7E6, 0x0D21, 0x11D1, [0x8C, 0xC5, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; -enum IID IID_IObjectManager = {0xD51351DF, 0x6394, 0x4236, [0x97, 0x83, 0x65, 0xED, 0x05, 0x63, 0x10, 0x68]}; -enum IID IID_IObjectSafety = {0xCB5BDC81, 0x93C1, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID IID_IObjectWithSite = {0xFC4801A3, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID IID_IObjMgr = {0x00BB2761, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; -enum IID IID_IOInet = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOInetBindClient = {0x79EAC9E2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOInetBindInfo = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOInetCache = {0x79EAC9EA, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOInetPriority = {0x79EAC9EB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOInetProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOInetProtocolInfo = {0x79EAC9EC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOInetProtocolRoot = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOInetProtocolSink = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOInetSession = {0x79EAC967, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOInetThreadSwitch = {0x79EAC968, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IOldSyncMgrRegister = {0x894D8C55, 0xBDDF, 0x11D1, [0xB8, 0x5D, 0x00, 0xC0, 0x4F, 0xB9, 0x39, 0x81]}; -enum IID IID_IOldSyncMgrSynchronize = {0x6295DF28, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; -enum IID IID_IOldSyncMgrSynchronizeCallback = {0x6295DF29, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; -enum IID IID_IOleAdviseHolder = {0x00000111, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleCache = {0x0000011E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleCache2 = {0x00000128, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleCacheControl = {0x00000129, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleClientSite = {0x00000118, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleCommandTarget = {0xB722BCCB, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; -enum IID IID_IOleContainer = {0x0000011B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleControl = {0xB196B288, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IOleControlSite = {0xB196B289, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IOleDocument = {0xB722BCC5, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; -enum IID IID_IOleDocumentSite = {0xB722BCC7, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; -enum IID IID_IOleDocumentView = {0xB722BCC6, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; -enum IID IID_IOleInPlaceActiveObject = {0x00000117, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleInPlaceFrame = {0x00000116, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleInPlaceObject = {0x00000113, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleInPlaceObjectWindowless = {0x1C2056CC, 0x5EF4, 0x101B, [0x8B, 0xC8, 0x00, 0xAA, 0x00, 0x3E, 0x3B, 0x29]}; -enum IID IID_IOleInPlaceSite = {0x00000119, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleInPlaceSiteEx = {0x9C2CAD80, 0x3424, 0x11CF, [0xB6, 0x70, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; -enum IID IID_IOleInPlaceSiteWindowless = {0x922EADA0, 0x3424, 0x11CF, [0xB6, 0x70, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; -enum IID IID_IOleInPlaceUIWindow = {0x00000115, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleItemContainer = {0x0000011C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleLink = {0x0000011D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleManager = {0x0000011F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleObject = {0x00000112, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleParentUndoUnit = {0xA1FAF330, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; -enum IID IID_IOlePresObj = {0x00000120, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOleUndoManager = {0xD001F200, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; -enum IID IID_IOleUndoUnit = {0x894AD3B0, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; -enum IID IID_IOleWindow = {0x00000114, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOmHistory = {0xFECEAAA2, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; -enum IID IID_IOmNavigator = {0xFECEAAA5, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; -enum IID IID_IOpaqueDataInfo = {0x000001A9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IOpenRowset = {0x0C733A69, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IOplockStorage = {0x8D19C834, 0x8879, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; -enum IID IID_IOpsProfileSimple = {0x7DD1362C, 0x28B6, 0x11D2, [0xBC, 0xA7, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; -enum IID IID_IOptionArray = {0x22B6D492, 0x0F88, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; -enum IID IID_IOverlappedCompletion = {0x521A28F0, 0xE40B, 0x11CE, [0xB2, 0xC9, 0x00, 0xAA, 0x00, 0x68, 0x09, 0x37]}; -enum IID IID_IOverlappedStream = {0x49384070, 0xE40A, 0x11CE, [0xB2, 0xC9, 0x00, 0xAA, 0x00, 0x68, 0x09, 0x37]}; -enum IID IID_IParentRowset = {0x0C733AAA, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IParseDisplayName = {0x0000011A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IParser = {0x186442B0, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; -enum IID IID_IParserSession = {0x186442B1, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; -enum IID IID_IParserTreeProperties = {0x186442B2, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; -enum IID IID_IParserVerify = {0x186442B3, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; -enum IID IID_IPassportClientServices = {0xB30F7305, 0x5967, 0x45D1, [0xB7, 0xBC, 0xD6, 0xEB, 0x71, 0x63, 0xD7, 0x70]}; -enum IID IID_IPeerFactory = {0x6663F9D3, 0xB482, 0x11D1, [0x89, 0xC6, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; -enum IID IID_IPendingProxyConnection = {0xB68E5043, 0x3E3D, 0x4CC2, [0xB9, 0xC1, 0x5F, 0x8F, 0x88, 0xFE, 0xE8, 0x1C]}; -enum IID IID_IPerPropertyBrowsing = {0x376BD3AA, 0x3845, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; -enum IID IID_IPerPropertyBrowsing2 = {0x51973C54, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IPersist = {0x0000010C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IPersistentDataChannel = {0xA180E934, 0xD92A, 0x415D, [0x91, 0x44, 0x75, 0x9F, 0x80, 0x54, 0xE8, 0xF6]}; -enum IID IID_IPersistFile = {0x0000010B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IPersistFolder = {0x000214EA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IPersistFolder2 = {0x1AC3D9F0, 0x175C, 0x11D1, [0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; -enum IID IID_IPersistFolder3 = {0xCEF04FDF, 0xFE72, 0x11D2, [0x87, 0xA5, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xCF]}; -enum IID IID_IPersistHistory = {0x91A565C1, 0xE38F, 0x11D0, [0x94, 0xBF, 0x00, 0xA0, 0xC9, 0x05, 0x5C, 0xBF]}; -enum IID IID_IPersistIDList = {0x1079ACFC, 0x29BD, 0x11D3, [0x8E, 0x0D, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; -enum IID IID_IPersistMemory = {0xBD1AE5E0, 0xA6AE, 0x11CE, [0xBD, 0x37, 0x50, 0x42, 0x00, 0xC1, 0x00, 0x00]}; -enum IID IID_IPersistMoniker = {0x79EAC9C9, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IPersistNetConnection = {0xFAEDCF59, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IPersistPropertyBag = {0x37D84F60, 0x42CB, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; -enum IID IID_IPersistPropertyBag2 = {0x22F55881, 0x280B, 0x11D0, [0xA8, 0xA9, 0x00, 0xA0, 0xC9, 0x0C, 0x20, 0x04]}; -enum IID IID_IPersistQuery = {0x1A3114B8, 0xA62E, 0x11D0, [0xA6, 0xC5, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; -enum IID IID_IPersistStorage = {0x0000010A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IPersistStream = {0x00000109, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IPersistStreamInit = {0x7FD52380, 0x4E07, 0x101B, [0xAE, 0x2D, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; -enum IID IID_IPhraseSink = {0xCC906FF0, 0xC058, 0x101A, [0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; -enum IID IID_IPicture = {0x7BF80980, 0xBF32, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID IID_IPictureDisp = {0x7BF80981, 0xBF32, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID IID_IPipeByte = {0xDB2F3ACA, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; -enum IID IID_IPipeDouble = {0xDB2F3ACE, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; -enum IID IID_IPipeLong = {0xDB2F3ACC, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; -enum IID IID_IPointerInactive = {0x55980BA0, 0x35AA, 0x11CF, [0xB6, 0x71, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; -enum IID IID_IPrimaryControlChannel = {0x1A2E8B62, 0x9012, 0x4BE6, [0x84, 0xAE, 0x32, 0xBD, 0x66, 0xBA, 0x65, 0x7A]}; -enum IID IID_IPrint = {0xB722BCC9, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; -enum IID IID_IPrintDialogCallback = {0x5852A2C3, 0x6530, 0x11D1, [0xB6, 0xA3, 0x00, 0x00, 0xF8, 0x75, 0x7B, 0xF9]}; -enum IID IID_IPrintDialogServices = {0x509AAEDA, 0x5639, 0x11D1, [0xB6, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x7B, 0xF9]}; -enum IID IID_IPrivacyServices = {0x3050F84B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IPrivateDispatch = {0x86AB4BBE, 0x65F6, 0x11D1, [0x8C, 0x13, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IPrivateUnknown = {0x89126BAB, 0x6EAD, 0x11D1, [0x8C, 0x18, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; -enum IID IID_IPrivSyncMgrSynchronizeInvoke = {0x6295DF2E, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; -enum IID IID_IProcessDebugManager = {0x51973C2F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IProcessDebugManager32 = {0x51973C2F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IProcessDebugManager64 = {0x56B9FC1C, 0x63A9, 0x4CC1, [0xAC, 0x21, 0x08, 0x7D, 0x69, 0xA1, 0x7F, 0xAB]}; -enum IID IID_IProcessInitControl = {0x72380D55, 0x8D2B, 0x43A3, [0x85, 0x13, 0x2B, 0x6E, 0xF3, 0x14, 0x34, 0xE9]}; -enum IID IID_IProfferService = {0xCB728B20, 0xF786, 0x11CE, [0x92, 0xAD, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xD0]}; -enum IID IID_IProgressDialog = {0xEBBC7C04, 0x315E, 0x11D2, [0xB6, 0x2F, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; -enum IID IID_IProgressNotify = {0xA9D758A0, 0x4617, 0x11CF, [0x95, 0xFC, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; -enum IID IID_IProgSink = {0x3050F371, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IPropertyBag = {0x55272A00, 0x42CB, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; -enum IID IID_IPropertyBag2 = {0x22F55882, 0x280B, 0x11D0, [0xA8, 0xA9, 0x00, 0xA0, 0xC9, 0x0C, 0x20, 0x04]}; -enum IID IID_IPropertyBagEx = {0x20011801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; -enum IID IID_IPropertyFrame = {0xB196B28A, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IPropertyMap = {0xC733E4A2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_IPropertyMapper = {0xB324B226, 0x41A0, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; -enum IID IID_IPropertyNotifySink = {0x9BFBBC02, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IPropertyPage = {0xB196B28D, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IPropertyPage2 = {0x01E44665, 0x24AC, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; -enum IID IID_IPropertyPageSite = {0xB196B28C, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IPropertySetContainer = {0xB4FFAE60, 0xA7CA, 0x11CD, [0xB5, 0x8B, 0x00, 0x00, 0x6B, 0x82, 0x91, 0x56]}; -enum IID IID_IPropertySetStorage = {0x0000013A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IPropertyStorage = {0x00000138, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IPropertyUI = {0x757A7D9F, 0x919A, 0x4118, [0x99, 0xD7, 0xDB, 0xB2, 0x08, 0xC8, 0xCC, 0x66]}; -enum IID IID_IPropSheetPage = {0x000214F6, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IProvideClassInfo = {0xB196B283, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_IProvideClassInfo2 = {0xA6BC3AC0, 0xDBAA, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; -enum IID IID_IProvideExpressionContexts = {0x51973C41, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IProvideMoniker = {0x0C733A4D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IProvideMultipleClassInfo = {0xA7ABA9C1, 0x8983, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID IID_IProxy = {0x00000027, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IProxyManager = {0x00000008, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IPSFactory = {0x00000009, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IPSFactoryBuffer = {0xD5F569D0, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; -enum IID IID_IPublishedApp = {0x1BC752E0, 0x9046, 0x11D1, [0xB8, 0xB3, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; -enum IID IID_IPublishingWizard = {0xAA9198BB, 0xCCEC, 0x472D, [0xBE, 0xED, 0x19, 0xA4, 0xF6, 0x73, 0x3F, 0x7A]}; -enum IID IID_IQualityControl = {0x6BC096AB, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; -enum IID IID_IQuery = {0x0C733A51, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IQueryAssociations = {0xC46CA590, 0x3C3F, 0x11D2, [0xBE, 0xE6, 0x00, 0x00, 0xF8, 0x05, 0xCA, 0x57]}; -enum IID IID_IQueryCancelAutoPlay = {0xDDEFE873, 0x6997, 0x4E68, [0xBE, 0x26, 0x39, 0xB6, 0x33, 0xAD, 0xBE, 0x12]}; -enum IID IID_IQueryContinue = {0x7307055C, 0xB24A, 0x486B, [0x9F, 0x25, 0x16, 0x3E, 0x59, 0x7A, 0x28, 0xA9]}; -enum IID IID_IQueryForm = {0x8CFCEE30, 0x39BD, 0x11D0, [0xB8, 0xD1, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; -enum IID IID_IQueryFrame = {0x7E8C7C20, 0x7C9D, 0x11D0, [0x91, 0x3F, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; -enum IID IID_IQueryHandler = {0xA60CC73F, 0xE0FC, 0x11D0, [0x97, 0x50, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; -enum IID IID_IQueryInfo = {0x00021500, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IQuickActivate = {0xCF51ED10, 0x62FE, 0x11CF, [0xBF, 0x86, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0x36]}; -enum IID IID_IRadioButton = {0x3050F69B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IRatingNotification = {0x639447BD, 0xB2D3, 0x44B9, [0x9F, 0xB0, 0x51, 0x0F, 0x23, 0xCB, 0x45, 0xE4]}; -enum IID IID_IReadData = {0x0C733A6A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IReadEvents = {0xF64AEFDE, 0x3376, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; -enum IID IID_IRecalcEngine = {0x3050F496, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IRecalcHost = {0x3050F497, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IRecalcHostDebug = {0x3050F5F7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IRecalcProperty = {0x3050F5D6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IReconcilableObject = {0x99180162, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IReconcileInitiator = {0x99180161, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IRecordInfo = {0x0000002F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IRedbookDiscMaster = {0xE3BC42CD, 0x4E5C, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID IID_IReferenceClock = {0x56A86897, 0x0AD4, 0x11CE, [0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; -enum IID IID_IRegisterProvider = {0x0C733AB9, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRegisterVirusScanEngine = {0x0825E060, 0xB961, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; -enum IID IID_IReleaseMarshalBuffers = {0xEB0CB9E8, 0x7996, 0x11D2, [0x87, 0x2E, 0x00, 0x00, 0xF8, 0x08, 0x08, 0x59]}; -enum IID IID_IRemoteCallBack = {0x8947C648, 0x3833, 0x11D1, [0x86, 0x82, 0x00, 0xC0, 0x4F, 0xBF, 0xE1, 0x71]}; -enum IID IID_IRemoteComputer = {0x000214FE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IRemoteDebugApplication = {0x51973C30, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IRemoteDebugApplicationEvents = {0x51973C33, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IRemoteDebugApplicationEx = {0x51973C01, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IRemoteDebugApplicationThread = {0x51973C37, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_IRemoteDebugApplicationThreadEx = {0xB9B32B0C, 0x9147, 0x11D1, [0x94, 0xEA, 0x00, 0xC0, 0x4F, 0xA3, 0x02, 0xA1]}; -enum IID IID_IRemoteDelaydC = {0x394540A0, 0x6FCF, 0x11D0, [0xAC, 0xE0, 0x00, 0x00, 0xF8, 0x01, 0x14, 0xD3]}; -enum IID IID_IRemoteESP = {0xE99A04AB, 0xAB95, 0x11D0, [0xBE, 0x96, 0x00, 0xA0, 0xC9, 0x49, 0x89, 0xDE]}; -enum IID IID_IRemoteFinder = {0x944AD532, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; -enum IID IID_IRemoteStats = {0x944AD531, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; -enum IID IID_IRequest = {0x6BC096A7, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; -enum IID IID_IRequestHandler = {0x6BC096AA, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; -enum IID IID_IRequestSource = {0x6BC096A9, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; -enum IID IID_IRequestState = {0x6BC096BA, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; -enum IID IID_IResolveShellLink = {0x5CD52983, 0x9449, 0x11D2, [0x96, 0x3A, 0x00, 0xC0, 0x4F, 0x79, 0xAD, 0xF0]}; -enum IID IID_IRichEditOle = {0x00020D00, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IRichEditOleCallback = {0x00020D03, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IRootStorage = {0x00000012, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IROTData = {0xF29F6BC0, 0x5021, 0x11CE, [0xAA, 0x15, 0x00, 0x00, 0x69, 0x01, 0x29, 0x3F]}; -enum IID IID_IRow = {0x0C733AB4, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowChange = {0x0C733AB5, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowInfo = {0x0C733AC1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowPosition = {0x0C733A94, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowPositionChange = {0x0997A571, 0x126E, 0x11D0, [0x9F, 0x8A, 0x00, 0xA0, 0xC9, 0xA0, 0x63, 0x1E]}; -enum IID IID_IRowSchemaChange = {0x0C733AAE, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowset = {0x0C733A7C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetAsynch = {0x0C733A0F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetBookmark = {0x0C733AC2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetChange = {0x0C733A05, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetChapterMember = {0x0C733AA8, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetCopyRows = {0x0C733A6B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetCurrentIndex = {0x0C733ABD, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetExactScroll = {0x0C733A7F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetFind = {0x0C733A9D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetIdentity = {0x0C733A09, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetIndex = {0x0C733A82, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetInfo = {0x0C733A55, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetKeys = {0x0C733A12, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetLocate = {0x0C733A7D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetNewRowAfter = {0x0C733A71, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetNextRowset = {0x0C733A72, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetNotify = {0x0C733A83, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetQueryStatus = {0xA7AC77ED, 0xF8D7, 0x11CE, [0xA7, 0x98, 0x00, 0x20, 0xF8, 0x00, 0x80, 0x24]}; -enum IID IID_IRowsetRefresh = {0x0C733AA9, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetResynch = {0x0C733A84, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetScroll = {0x0C733A7E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetUpdate = {0x0C733A6D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetView = {0x0C733A99, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetWatchAll = {0x0C733A73, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetWatchNotify = {0x0C733A44, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetWatchRegion = {0x0C733A45, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRowsetWithParameters = {0x0C733A6E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IRpcChannel = {0x00000004, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IRpcChannelBuffer = {0xD5F56B60, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; -enum IID IID_IRpcChannelBuffer2 = {0x594F31D0, 0x7F19, 0x11D0, [0xB1, 0x94, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0xBF]}; -enum IID IID_IRpcChannelBuffer3 = {0x25B15600, 0x0115, 0x11D0, [0xBF, 0x0D, 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xD2]}; -enum IID IID_IRpcHelper = {0x00000149, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IRpcOptions = {0x00000144, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IRpcProxy = {0x00000007, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IRpcProxyBuffer = {0xD5F56A34, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; -enum IID IID_IRpcStub = {0x00000005, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IRpcStubBuffer = {0xD5F56AFC, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; -enum IID IID_IRpcSyntaxNegotiate = {0x58A08519, 0x24C8, 0x4935, [0xB4, 0x82, 0x3F, 0xD8, 0x23, 0x33, 0x3A, 0x4F]}; -enum IID IID_IRTC = {0x4811EA40, 0xB582, 0x11CE, [0xB5, 0xAF, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; -enum IID IID_IRTCBuddy = {0xFCB136C8, 0x7B90, 0x4E0C, [0xBE, 0xFE, 0x56, 0xED, 0xF0, 0xBA, 0x6F, 0x1C]}; -enum IID IID_IRTCBuddyEvent = {0xF36D755D, 0x17E6, 0x404E, [0x95, 0x4F, 0x0F, 0xC0, 0x75, 0x74, 0xC7, 0x8D]}; -enum IID IID_IRTCClient = {0x07829E45, 0x9A34, 0x408E, [0xA0, 0x11, 0xBD, 0xDF, 0x13, 0x48, 0x7C, 0xD1]}; -enum IID IID_IRTCClientEvent = {0x2B493B7A, 0x3CBA, 0x4170, [0x9C, 0x8B, 0x76, 0xA9, 0xDA, 0xCD, 0xD6, 0x44]}; -enum IID IID_IRTCClientPresence = {0x11C3CBCC, 0x0744, 0x42D1, [0x96, 0x8A, 0x51, 0xAA, 0x1B, 0xB2, 0x74, 0xC6]}; -enum IID IID_IRTCClientProvisioning = {0xB9F5CF06, 0x65B9, 0x4A80, [0xA0, 0xE6, 0x73, 0xCA, 0xE3, 0xEF, 0x38, 0x22]}; -enum IID IID_IRTCCollection = {0xEC7C8096, 0xB918, 0x4044, [0x94, 0xF1, 0xE4, 0xFB, 0xA0, 0x36, 0x1D, 0x5C]}; -enum IID IID_IRTCEnumBuddies = {0xF7296917, 0x5569, 0x4B3B, [0xB3, 0xAF, 0x98, 0xD1, 0x14, 0x4B, 0x2B, 0x87]}; -enum IID IID_IRTCEnumParticipants = {0xFCD56F29, 0x4A4F, 0x41B2, [0xBA, 0x5C, 0xF5, 0xBC, 0xCC, 0x06, 0x0B, 0xF6]}; -enum IID IID_IRTCEnumProfiles = {0x29B7C41C, 0xED82, 0x4BCA, [0x84, 0xAD, 0x39, 0xD5, 0x10, 0x1B, 0x58, 0xE3]}; -enum IID IID_IRTCEnumWatchers = {0xA87D55D7, 0xDB74, 0x4ED1, [0x9C, 0xA4, 0x77, 0xA0, 0xE4, 0x1B, 0x41, 0x3E]}; -enum IID IID_IRTCEventNotification = {0x13FA24C7, 0x5748, 0x4B21, [0x91, 0xF5, 0x73, 0x97, 0x60, 0x9C, 0xE7, 0x47]}; -enum IID IID_IRTCIntensityEvent = {0x4C23BF51, 0x390C, 0x4992, [0xA4, 0x1D, 0x41, 0xEE, 0xC0, 0x5B, 0x2A, 0x4B]}; -enum IID IID_IRTCMediaEvent = {0x099944FB, 0xBCDA, 0x453E, [0x8C, 0x41, 0xE1, 0x3D, 0xA2, 0xAD, 0xF7, 0xF3]}; -enum IID IID_IRTCMessagingEvent = {0xD3609541, 0x1B29, 0x4DE5, [0xA4, 0xAD, 0x5A, 0xEB, 0xAF, 0x31, 0x95, 0x12]}; -enum IID IID_IRTCParticipant = {0xAE86ADD5, 0x26B1, 0x4414, [0xAF, 0x1D, 0xB9, 0x4C, 0xD9, 0x38, 0xD7, 0x39]}; -enum IID IID_IRTCParticipantStateChangeEvent = {0x09BCB597, 0xF0FA, 0x48F9, [0xB4, 0x20, 0x46, 0x8C, 0xEA, 0x7F, 0xDE, 0x04]}; -enum IID IID_IRTCPresenceContact = {0x8B22F92C, 0xCD90, 0x42DB, [0xA7, 0x33, 0x21, 0x22, 0x05, 0xC3, 0xE3, 0xDF]}; -enum IID IID_IRTCProfile = {0xD07ECA9E, 0x4062, 0x4DD4, [0x9E, 0x7D, 0x72, 0x2A, 0x49, 0xBA, 0x73, 0x03]}; -enum IID IID_IRTCProfileEvent = {0xD6D5AB3B, 0x770E, 0x43E8, [0x80, 0x0A, 0x79, 0xB0, 0x62, 0x39, 0x5F, 0xCA]}; -enum IID IID_IRTCRegistrationStateChangeEvent = {0x62D0991B, 0x50AB, 0x4F02, [0xB9, 0x48, 0xCA, 0x94, 0xF2, 0x6F, 0x8F, 0x95]}; -enum IID IID_IRTCSession = {0x387C8086, 0x99BE, 0x42FB, [0x99, 0x73, 0x7C, 0x0F, 0xC0, 0xCA, 0x9F, 0xA8]}; -enum IID IID_IRTCSessionOperationCompleteEven = {0xA6BFF4C0, 0xF7C8, 0x4D3C, [0x9A, 0x41, 0x35, 0x50, 0xF7, 0x8A, 0x95, 0xB0]}; -enum IID IID_IRTCSessionStateChangeEvent = {0xB5BAD703, 0x5952, 0x48B3, [0x93, 0x21, 0x7F, 0x45, 0x00, 0x52, 0x15, 0x06]}; -enum IID IID_IRTCWatcher = {0xC7CEDAD8, 0x346B, 0x4D1B, [0xAC, 0x02, 0xA2, 0x08, 0x8D, 0xF9, 0xBE, 0x4F]}; -enum IID IID_IRTCWatcherEvent = {0xF30D7261, 0x587A, 0x424F, [0x82, 0x2C, 0x31, 0x27, 0x88, 0xF4, 0x35, 0x48]}; -enum IID IID_IRunnableObject = {0x00000126, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IRunnableTask = {0x85788D00, 0x6807, 0x11D0, [0xB8, 0x10, 0x00, 0xC0, 0x4F, 0xD7, 0x06, 0xEC]}; -enum IID IID_IRunningObjectTable = {0x00000010, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IScheduleGroup = {0xC733E4A6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID IID_IScopedOperations = {0x0C733AB0, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IScriptEntry = {0x0AEE2A95, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; -enum IID IID_IScriptErrorList = {0xF3470F24, 0x15FD, 0x11D2, [0xBB, 0x2E, 0x00, 0x80, 0x5F, 0xF7, 0xEF, 0xCA]}; -enum IID IID_IScriptNode = {0x0AEE2A94, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; -enum IID IID_IScriptScriptlet = {0x0AEE2A96, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; -enum IID IID_IScrollBar = {0x3050F689, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISdo = {0x56BC53DE, 0x96DB, 0x11D1, [0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; -enum IID IID_ISdoCollection = {0x56BC53E2, 0x96DB, 0x11D1, [0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; -enum IID IID_ISdoDictionaryOld = {0xD432E5F4, 0x53D8, 0x11D2, [0x9A, 0x3A, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0xAC]}; -enum IID IID_ISdoMachine = {0x479F6E75, 0x49A2, 0x11D2, [0x8E, 0xCA, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x19]}; -enum IID IID_ISdoServiceControl = {0x479F6E74, 0x49A2, 0x11D2, [0x8E, 0xCA, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x19]}; -enum IID IID_ISearch = {0xBA9239A4, 0x3DD5, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; -enum IID IID_ISearchAssistantOC = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; -enum IID IID_ISearchAssistantOC2 = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA2]}; -enum IID IID_ISearchAssistantOC3 = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA3]}; -enum IID IID_ISearchCommandExt = {0x1D2EFD50, 0x75CE, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; -enum IID IID_ISearchContext = {0x09F656A2, 0x41AF, 0x480C, [0x88, 0xF7, 0x16, 0xCC, 0x0D, 0x16, 0x46, 0x15]}; -enum IID IID_ISearches = {0x47C922A2, 0x3DD5, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; -enum IID IID_ISearchQueryHits = {0xED8CE7E0, 0x106C, 0x11CE, [0x84, 0xE2, 0x00, 0xAA, 0x00, 0x4B, 0x99, 0x86]}; -enum IID IID_ISecondaryControlChannel = {0xA23F9D10, 0x714C, 0x41FE, [0x84, 0x71, 0xFF, 0xB1, 0x9B, 0xC2, 0x84, 0x54]}; -enum IID IID_ISecureUrlHost = {0xC81984C4, 0x74C8, 0x11D2, [0xBA, 0xA9, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; -enum IID IID_ISecurityInfo = {0x0C733AA4, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ISegment = {0x3050F683, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISegmentList = {0x3050F605, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISegmentListIterator = {0x3050F692, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISelectionObject2 = {0x3050F7FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISelectionServices = {0x3050F684, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISelectionServicesListener = {0x3050F699, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISensLogon = {0xD597BAB3, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; -enum IID IID_ISensLogon2 = {0xD597BAB4, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; -enum IID IID_ISensNetwork = {0xD597BAB1, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; -enum IID IID_ISensOnNow = {0xD597BAB2, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; -enum IID IID_ISequenceNumber = {0x3050F6C1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISequentialStream = {0x0C733A30, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IServerSecurity = {0x0000013E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IServiceProvider = {0x6D5140C1, 0x7436, 0x11CE, [0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA]}; -enum IID IID_ISessionProperties = {0x0C733A85, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ISetNextStatement = {0x51973C03, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_ISharedAccessBeacon = {0xFAEDCF6B, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_ISharedAccessBeaconFinder = {0xFAEDCF67, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_IShellApp = {0xA3E14960, 0x935F, 0x11D1, [0xB8, 0xB8, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; -enum IID IID_IShellBrowser = {0x000214E2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellChangeNotify = {0xD82BE2B1, 0x5764, 0x11D0, [0xA9, 0x6E, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; -enum IID IID_IShellCopyHookA = {0x000214EF, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellCopyHookW = {0x000214FC, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellDetails = {0x000214EC, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellDetails3 = {0xD2A105C0, 0x87D5, 0x11D1, [0x83, 0x91, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; -enum IID IID_IShellDispatch = {0xD8F015C0, 0xC278, 0x11CE, [0xA4, 0x9E, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IShellDispatch2 = {0xA4C6892C, 0x3BA9, 0x11D2, [0x9D, 0xEA, 0x00, 0xC0, 0x4F, 0xB1, 0x61, 0x62]}; -enum IID IID_IShellDispatch3 = {0x177160CA, 0xBB5A, 0x411C, [0x84, 0x1D, 0xBD, 0x38, 0xFA, 0xCD, 0xEA, 0xA0]}; -enum IID IID_IShellDispatch4 = {0xEFD84B2D, 0x4BCF, 0x4298, [0xBE, 0x25, 0xEB, 0x54, 0x2A, 0x59, 0xFB, 0xDA]}; -enum IID IID_IShellExecuteHookA = {0x000214F5, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellExecuteHookW = {0x000214FB, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellExtInit = {0x000214E8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellFavoritesNameSpace = {0x55136804, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; -enum IID IID_IShellFolder = {0x000214E6, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellFolder2 = {0x93F2F68C, 0x1D1B, 0x11D3, [0xA3, 0x0E, 0x00, 0xC0, 0x4F, 0x79, 0xAB, 0xD1]}; -enum IID IID_IShellFolderViewCB = {0x2047E320, 0xF2A9, 0x11CE, [0xAE, 0x65, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62]}; -enum IID IID_IShellFolderViewDual = {0xE7A1AF80, 0x4D96, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; -enum IID IID_IShellFolderViewDual2 = {0x31C147B6, 0x0ADE, 0x4A3C, [0xB5, 0x14, 0xDD, 0xF9, 0x32, 0xEF, 0x6D, 0x17]}; -enum IID IID_IShellIcon = {0x000214E5, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellIconOverlay = {0x7D688A70, 0xC613, 0x11D0, [0x99, 0x9B, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; -enum IID IID_IShellIconOverlayIdentifier = {0x0C6C4200, 0xC589, 0x11D0, [0x99, 0x9A, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; -enum IID IID_IShellImageData = {0xBFDEEC12, 0x8040, 0x4403, [0xA5, 0xEA, 0x9E, 0x07, 0xDA, 0xFC, 0xF5, 0x30]}; -enum IID IID_IShellImageDataAbort = {0x53FB8E58, 0x50C0, 0x4003, [0xB4, 0xAA, 0x0C, 0x8D, 0xF2, 0x8E, 0x7F, 0x3A]}; -enum IID IID_IShellImageDataFactory = {0x9BE8ED5C, 0xEDAB, 0x4D75, [0x90, 0xF3, 0xBD, 0x5B, 0xDB, 0xB2, 0x1C, 0x82]}; -enum IID IID_IShellLinkA = {0x000214EE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellLinkDataList = {0x45E2B4AE, 0xB1C3, 0x11D0, [0xB9, 0x2F, 0x00, 0xA0, 0xC9, 0x03, 0x12, 0xE1]}; -enum IID IID_IShellLinkDual = {0x88A05C00, 0xF000, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; -enum IID IID_IShellLinkDual2 = {0x317EE249, 0xF12E, 0x11D2, [0xB1, 0xE4, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; -enum IID IID_IShellLinkW = {0x000214F9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellNameSpace = {0xE572D3C9, 0x37BE, 0x4AE2, [0x82, 0x5D, 0xD5, 0x21, 0x76, 0x3E, 0x31, 0x08]}; -enum IID IID_IShellPropSheetExt = {0x000214E9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellUIHelper = {0x729FE2F8, 0x1EA8, 0x11D1, [0x8F, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; -enum IID IID_IShellView = {0x000214E3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IShellView2 = {0x88E39E80, 0x3578, 0x11CF, [0xAE, 0x69, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62]}; -enum IID IID_IShellWindows = {0x85CB6900, 0x4D95, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; -enum IID IID_ISimpleCommandCreator = {0x5E341AB7, 0x02D0, 0x11D1, [0x90, 0x0C, 0x00, 0xA0, 0xC9, 0x06, 0x37, 0x96]}; -enum IID IID_ISimpleConnectionPoint = {0x51973C3E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; -enum IID IID_ISimpleFrameSite = {0x742B0E01, 0x14E6, 0x101B, [0x91, 0x4E, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; -enum IID IID_ISliderBar = {0x3050F68D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISniffStream = {0x4EF17940, 0x30E0, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; -enum IID IID_ISOAPRequest = {0xAD194525, 0x6E01, 0x4BCA, [0x92, 0x9C, 0x23, 0xC7, 0x38, 0x33, 0x36, 0xAF]}; -enum IID IID_ISoftDistExt = {0xB15B8DC1, 0xC7E1, 0x11D0, [0x86, 0x80, 0x00, 0xAA, 0x00, 0xBD, 0xCB, 0x71]}; -enum IID IID_ISourcesRowset = {0x0C733A1E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ISpecialSystemProperties = {0x000001B9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ISpecifyPropertyPages = {0xB196B28B, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; -enum IID IID_ISpinButton = {0x3050F68B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISQLErrorInfo = {0x0C733A74, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IStandardActivator = {0x000001B8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IStandardInfo = {0xF1D9C1A5, 0x9589, 0x40DD, [0xB6, 0x3D, 0x9B, 0xB0, 0xB3, 0x8A, 0x10, 0x22]}; -enum IID IID_IStaticPortMapping = {0x6F10711F, 0x729B, 0x41E5, [0x93, 0xB8, 0xF2, 0x1D, 0x0F, 0x81, 0x8D, 0xF1]}; -enum IID IID_IStaticPortMappingCollection = {0xCD1F3E77, 0x66D6, 0x4664, [0x82, 0xC7, 0x36, 0xDB, 0xB6, 0x41, 0xD0, 0xF1]}; -enum IID IID_IStats = {0x944AD530, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; -enum IID IID_IStdMarshalInfo = {0x00000018, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IStemmer = {0xEFBAF140, 0x7F42, 0x11CE, [0xBE, 0x57, 0x00, 0xAA, 0x00, 0x51, 0xFE, 0x20]}; -enum IID IID_IStemSink = {0xFE77C330, 0x7F42, 0x11CE, [0xBE, 0x57, 0x00, 0xAA, 0x00, 0x51, 0xFE, 0x20]}; -enum IID IID_IStorage = {0x0000000B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IStream = {0x0000000C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IStub = {0x00000026, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IStubManager = {0x00000006, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ISubDivisionProvider = {0x3050F4D2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ISubscriptionAgentControl = {0xA89E8FF0, 0x70F4, 0x11D1, [0xBC, 0x7F, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; -enum IID IID_ISubscriptionAgentEvents = {0xA89E8FF1, 0x70F4, 0x11D1, [0xBC, 0x7F, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; -enum IID IID_ISubscriptionAgentShellExt = {0x81B184BA, 0xB302, 0x11D1, [0x85, 0x52, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; -enum IID IID_ISubscriptionItem = {0xA97559F8, 0x6C4A, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; -enum IID IID_ISubscriptionMgr = {0x085FB2C0, 0x0DF8, 0x11D1, [0x8F, 0x4B, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x3F]}; -enum IID IID_ISubscriptionMgr2 = {0x614BC270, 0xAEDF, 0x11D1, [0xA1, 0xF9, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; -enum IID IID_ISubscriptionMgrPriv = {0xD66B399E, 0xAF1D, 0x11D1, [0xA1, 0xF9, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; -enum IID IID_ISubscriptionThrottler = {0x1E9B00E4, 0x9846, 0x11D1, [0xA1, 0xEE, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; -enum IID IID_ISupportErrorInfo = {0xDF0B3D60, 0x548F, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; -enum IID IID_ISurrogate = {0x00000022, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ISWbemDateTime = {0x5E97458A, 0xCF77, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; -enum IID IID_ISWbemEventSource = {0x27D54D92, 0x0EBE, 0x11D2, [0x8B, 0x22, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemLastError = {0xD962DB84, 0xD4BB, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemLocator = {0x76A6415B, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemMethod = {0x422E8E90, 0xD955, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemMethodSet = {0xC93BA292, 0xD955, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemNamedValue = {0x76A64164, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemNamedValueSet = {0xCF2376EA, 0xCE8C, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemObject = {0x76A6415A, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemObjectEx = {0x269AD56A, 0x8A67, 0x4129, [0xBC, 0x8C, 0x05, 0x06, 0xDC, 0xFE, 0x98, 0x80]}; -enum IID IID_ISWbemObjectPath = {0x5791BC27, 0xCE9C, 0x11D1, [0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C]}; -enum IID IID_ISWbemObjectSet = {0x76A6415F, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemPrivilege = {0x26EE67BD, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemPrivilegeSet = {0x26EE67BF, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemProperty = {0x1A388F98, 0xD4BA, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemPropertySet = {0xDEA0A7B2, 0xD4BA, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemQualifier = {0x79B05932, 0xD3B7, 0x11D1, [0x8B, 0x06, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemQualifierSet = {0x9B16ED16, 0xD3DF, 0x11D1, [0x8B, 0x08, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemRefreshableItem = {0x5AD4BF92, 0xDAAB, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; -enum IID IID_ISWbemRefresher = {0x14D8250E, 0xD9C2, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; -enum IID IID_ISWbemSecurity = {0xB54D66E6, 0x2287, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemServices = {0x76A6415C, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID IID_ISWbemServicesEx = {0xD2F68443, 0x85DC, 0x427E, [0x91, 0xD8, 0x36, 0x65, 0x54, 0xCC, 0x75, 0x4C]}; -enum IID IID_ISWbemSink = {0x75718C9F, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; -enum IID IID_ISynchronize = {0x00000030, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ISynchronizeContainer = {0x00000033, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ISynchronizedCallBack = {0x74C26041, 0x70D1, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; -enum IID IID_ISynchronizeEvent = {0x00000032, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ISynchronizeHandle = {0x00000031, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ISynchronizeMutex = {0x00000025, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ISyncMgrEnumItems = {0x6295DF2A, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; -enum IID IID_ISyncMgrRegisterCSC = {0x47681A61, 0xBC74, 0x11D2, [0xB5, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x39, 0x81]}; -enum IID IID_ISyncMgrSynchronizeInvoke = {0x6295DF2C, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; -enum IID IID_ISyncSchedule = {0xF0E15899, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; -enum IID IID_ISyncScheduleMgr = {0xF0E15897, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; -enum IID IID_ISyncSchedulep = {0xF0E1589B, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; -enum IID IID_ITableCreation = {0x0C733ABC, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ITableDefinition = {0x0C733A86, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ITableDefinitionWithConstraints = {0x0C733AAB, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ITableRename = {0x0C733A77, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ITACDGroup = {0x5AFC3148, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITACDGroupEvent = {0x297F3032, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITAddress = {0xB1EFC386, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_ITAddress2 = {0xB0AE5D9B, 0xBE51, 0x46C9, [0xB0, 0xF7, 0xDF, 0xA8, 0xA2, 0x2A, 0x8B, 0xC4]}; -enum IID IID_ITAddressCapabilities = {0x8DF232F5, 0x821B, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITAddressDeviceSpecificEvent = {0x3ACB216B, 0x40BD, 0x487A, [0x86, 0x72, 0x5C, 0xE7, 0x7B, 0xD7, 0xE3, 0xA3]}; -enum IID IID_ITAddressEvent = {0x831CE2D1, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITAddressTranslation = {0x0C4D8F03, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITAddressTranslationInfo = {0xAFC15945, 0x8D40, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITAgent = {0x5770ECE5, 0x4B27, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITAgentEvent = {0x5AFC314A, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITAgentHandler = {0x587E8C22, 0x9802, 0x11D1, [0xA0, 0xA4, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITAgentHandlerEvent = {0x297F3034, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITAgentSession = {0x5AFC3147, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITAgentSessionEvent = {0x5AFC314B, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITAllocatorProperties = {0xC1BC3C90, 0xBCFE, 0x11D1, [0x97, 0x45, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_ITAMMediaFormat = {0x0364EB00, 0x4A77, 0x11D1, [0xA6, 0x71, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xE8]}; -enum IID IID_ITargetContainer = {0x7847EC01, 0x2BEC, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; -enum IID IID_ITargetEmbedding = {0x548793C0, 0x9E74, 0x11CF, [0x96, 0x55, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0x23]}; -enum IID IID_ITargetFrame = {0xD5F78C80, 0x5252, 0x11CF, [0x90, 0xFA, 0x00, 0xAA, 0x00, 0x42, 0x10, 0x6E]}; -enum IID IID_ITargetFrame2 = {0x86D52E11, 0x94A8, 0x11D0, [0x82, 0xAF, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; -enum IID IID_ITargetFramePriv = {0x9216E421, 0x2BF5, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; -enum IID IID_ITargetNotify = {0x863A99A0, 0x21BC, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; -enum IID IID_ITargetNotify2 = {0x3050F6B1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ITaskAnalyzeCluster = {0x795737A1, 0xE13A, 0x45EB, [0x8D, 0xFD, 0x81, 0x85, 0xC4, 0xB7, 0xAD, 0x4E]}; -enum IID IID_ITaskbarList = {0x56FDF342, 0xFD6D, 0x11D0, [0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90]}; -enum IID IID_ITaskbarList2 = {0x602D4995, 0xB13A, 0x429B, [0xA6, 0x6E, 0x19, 0x35, 0xE4, 0x4F, 0x43, 0x17]}; -enum IID IID_ITaskCommitClusterChanges = {0x1BF12DDE, 0xF8B0, 0x49B1, [0xA4, 0x58, 0x67, 0x47, 0xDB, 0x78, 0x8A, 0x47]}; -enum IID IID_ITaskCompareAndPushInformation = {0xD4F1C2AF, 0xB370, 0x49DE, [0x87, 0x68, 0x40, 0x10, 0xB5, 0x68, 0x63, 0x6C]}; -enum IID IID_ITaskGatherClusterInfo = {0xE167965C, 0xC5D6, 0x493C, [0xA3, 0x43, 0x4C, 0x10, 0x5C, 0x01, 0xDD, 0xE7]}; -enum IID IID_ITaskGatherInformation = {0xB9AAF3F8, 0x238E, 0x4993, [0xBA, 0x31, 0x14, 0x85, 0x98, 0x04, 0xF9, 0x2C]}; -enum IID IID_ITaskGatherNodeInfo = {0xF19A2E01, 0x2CB3, 0x47B4, [0x8F, 0x5D, 0xB9, 0x77, 0x17, 0x6B, 0x45, 0xC8]}; -enum IID IID_ITaskGetDomains = {0xDFCB4ACD, 0xC4DB, 0x4DB4, [0x8E, 0xBB, 0x1D, 0xD0, 0x7A, 0x9D, 0x5B, 0x82]}; -enum IID IID_ITaskGetDomainsCallback = {0x85402E44, 0x6834, 0x41DF, [0x85, 0x90, 0x01, 0x82, 0x7D, 0x12, 0x4E, 0x1B]}; -enum IID IID_ITaskLoginDomain = {0x76AD8E51, 0x53C3, 0x4347, [0x89, 0x5D, 0x6C, 0x30, 0xF4, 0x13, 0x93, 0x74]}; -enum IID IID_ITaskLoginDomainCallback = {0xEFAF3C43, 0x7A8F, 0x469B, [0xB8, 0xBB, 0xC8, 0x0C, 0x57, 0x47, 0xCE, 0x05]}; -enum IID IID_ITaskManager = {0x16116694, 0xDFC5, 0x470B, [0xAC, 0x12, 0x46, 0xFB, 0xB0, 0x1C, 0xEF, 0x10]}; -enum IID IID_ITaskPollingCallback = {0x49E92395, 0x66AF, 0x4ADD, [0xA4, 0x1E, 0x43, 0x51, 0x2C, 0xB5, 0x19, 0xB3]}; -enum IID IID_ITaskVerifyIPAddress = {0x0C95E1B1, 0x0CFF, 0x4740, [0x8A, 0xBD, 0x69, 0x91, 0x2D, 0x10, 0x5B, 0xD1]}; -enum IID IID_ITASRTerminalEvent = {0xEE016A02, 0x4FA9, 0x467C, [0x93, 0x3F, 0x5A, 0x15, 0xB1, 0x23, 0x77, 0xD7]}; -enum IID IID_ITAttributeList = {0x5037FB82, 0xCAE9, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_ITAudioDeviceControl = {0x6C0AB6C5, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; -enum IID IID_ITAudioSettings = {0x6C0AB6C6, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; -enum IID IID_ITAutomatedPhoneControl = {0x1EE1AF0E, 0x6159, 0x4A61, [0xB7, 0x9B, 0x6A, 0x4B, 0xA3, 0xFC, 0x9D, 0xFC]}; -enum IID IID_ITBasicAudioTerminal = {0xB1EFC38D, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_ITBasicCallControl = {0xB1EFC389, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_ITBasicCallControl2 = {0x161A4A56, 0x1E99, 0x4B3F, [0xA4, 0x6A, 0x16, 0x8F, 0x38, 0xA5, 0xEE, 0x4C]}; -enum IID IID_ITCallHub = {0xA3C1544E, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITCallHubEvent = {0xA3C15451, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITCallInfo = {0x350F85D1, 0x1227, 0x11D3, [0x83, 0xD4, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITCallInfo2 = {0x94D70CA6, 0x7AB0, 0x4DAA, [0x81, 0xCA, 0xB8, 0xF8, 0x64, 0x3F, 0xAE, 0xC1]}; -enum IID IID_ITCallInfoChangeEvent = {0x5D4B65F9, 0xE51C, 0x11D1, [0xA0, 0x2F, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITCallingCard = {0x0C4D8F00, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITCallMediaEvent = {0xFF36B87F, 0xEC3A, 0x11D0, [0x8E, 0xE4, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITCallNotificationEvent = {0x895801DF, 0x3DD6, 0x11D1, [0x8F, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITCallQualityControl = {0xFE1D8AE0, 0xEDC4, 0x49B5, [0x8F, 0x8C, 0x4D, 0xE4, 0x0F, 0x9C, 0xDF, 0xAF]}; -enum IID IID_ITCallStateEvent = {0x62F47097, 0x95C9, 0x11D0, [0x83, 0x5D, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_ITCollection = {0x5EC5ACF2, 0x9C02, 0x11D0, [0x83, 0x62, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_ITCollection2 = {0xE6DDDDA5, 0xA6D3, 0x48FF, [0x87, 0x37, 0xD3, 0x2F, 0xC4, 0xD9, 0x54, 0x77]}; -enum IID IID_ITConferenceBlob = {0xC259D7AA, 0xC8AB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_ITConnection = {0x8FA381D4, 0xC8C2, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_ITcpipProperties = {0x98133271, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; -enum IID IID_ITCustomTone = {0x357AD764, 0xB3C6, 0x4B2A, [0x8F, 0xA5, 0x07, 0x22, 0x82, 0x7A, 0x92, 0x54]}; -enum IID IID_ITDetectTone = {0x961F79BD, 0x3097, 0x49DF, [0xA1, 0xD6, 0x90, 0x9B, 0x77, 0xE8, 0x9C, 0xA0]}; -enum IID IID_ITDigitDetectionEvent = {0x80D3BFAC, 0x57D9, 0x11D2, [0xA0, 0x4A, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITDigitGenerationEvent = {0x80D3BFAD, 0x57D9, 0x11D2, [0xA0, 0x4A, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITDigitsGatheredEvent = {0xE52EC4C1, 0xCBA3, 0x441A, [0x9E, 0x6A, 0x93, 0xCB, 0x90, 0x9E, 0x97, 0x24]}; -enum IID IID_ITDirectory = {0x34621D6C, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; -enum IID IID_ITDirectoryObject = {0x34621D6E, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; -enum IID IID_ITDirectoryObjectConference = {0xF1029E5D, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_ITDirectoryObjectUser = {0x34621D6F, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; -enum IID IID_ITDispatchMapper = {0xE9225295, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITemplatePrinter = {0x3050F6B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ITemplatePrinter2 = {0x3050F83F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ITFileTerminalEvent = {0xE4A7FBAC, 0x8C17, 0x4427, [0x9F, 0x55, 0x9F, 0x58, 0x9A, 0xC8, 0xAF, 0x00]}; -enum IID IID_ITFileTrack = {0x31CA6EA9, 0xC08A, 0x4BEA, [0x88, 0x11, 0x8E, 0x9C, 0x1B, 0xA3, 0xEA, 0x3A]}; -enum IID IID_ITfLangBarAddIn = {0xC9ADDAC3, 0x15CB, 0x4957, [0xB9, 0x3C, 0xDB, 0x08, 0x73, 0xFF, 0x98, 0xBB]}; -enum IID IID_ITFormatControl = {0x6C0AB6C1, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; -enum IID IID_ITForwardInformation = {0x449F659E, 0x88A3, 0x11D1, [0xBB, 0x5D, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITForwardInformation2 = {0x5229B4ED, 0xB260, 0x4382, [0x8E, 0x1A, 0x5D, 0xF3, 0xA8, 0xA4, 0xCC, 0xC0]}; -enum IID IID_ITfSpeechUIServer = {0x90E9A944, 0x9244, 0x489F, [0xA7, 0x8F, 0xDE, 0x67, 0xAF, 0xC0, 0x13, 0xA7]}; -enum IID IID_IThumbnailCapture = {0x4EA39266, 0x7211, 0x409F, [0xB6, 0x22, 0xF6, 0x3D, 0xBD, 0x16, 0xC5, 0x33]}; -enum IID IID_IThumbnailExtractor = {0x969DC708, 0x5C76, 0x11D1, [0x8D, 0x86, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; -enum IID IID_ITILSConfig = {0x34621D72, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; -enum IID IID_ITIMEActiveElementCollection = {0x403E2540, 0x4520, 0x11D3, [0x93, 0xAB, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x38]}; -enum IID IID_ITimeAndNoticeControl = {0xBC0BF6AE, 0x8878, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; -enum IID IID_ITIMEAnimationElement = {0xA74F14B1, 0xB6A2, 0x430A, [0xA5, 0xE8, 0x1F, 0x4E, 0x53, 0xF7, 0x10, 0xFE]}; -enum IID IID_ITIMEAnimationElement2 = {0x29CE8661, 0xBD43, 0x421A, [0xB6, 0x16, 0xE9, 0xB3, 0x1F, 0x33, 0xA5, 0x72]}; -enum IID IID_ITIMEBodyElement = {0x8C90E348, 0xEC0A, 0x4229, [0x90, 0xB0, 0xE5, 0x7D, 0x2C, 0xA4, 0x5C, 0xCB]}; -enum IID IID_ITIMEDMusicPlayerObject = {0x407954F5, 0x2BAB, 0x4CFA, [0x95, 0x4D, 0x24, 0x9F, 0x9F, 0xCE, 0x43, 0xA1]}; -enum IID IID_ITIMEDVDPlayerObject = {0x3AF7AB68, 0x4F29, 0x462C, [0xAA, 0x6E, 0x58, 0x72, 0x44, 0x88, 0x99, 0xE3]}; -enum IID IID_ITIMEElement = {0x1C2EF64E, 0xF07D, 0x4338, [0x97, 0x71, 0x91, 0x54, 0x49, 0x1C, 0xD8, 0xB9]}; -enum IID IID_ITIMEElementCollection = {0x50ABC224, 0x6D53, 0x4F83, [0x91, 0x35, 0x24, 0x40, 0xA4, 0x1B, 0x7B, 0xC8]}; -enum IID IID_ITIMEFactory = {0xCD51E446, 0x3006, 0x434F, [0x90, 0xE2, 0xE3, 0x7E, 0x8F, 0xB8, 0xCA, 0x8F]}; -enum IID IID_ITIMEMediaElement = {0x47A6972F, 0xAE65, 0x4A6B, [0xAE, 0x63, 0xD0, 0xC1, 0xD5, 0x30, 0x7B, 0x58]}; -enum IID IID_ITIMEMediaElement2 = {0x9EE29400, 0x7EE6, 0x453A, [0x85, 0xB3, 0x4E, 0xC2, 0x8E, 0x03, 0x05, 0xB4]}; -enum IID IID_ITIMEMediaPlayer = {0xEA4A95BE, 0xACC9, 0x4BF0, [0x85, 0xA4, 0x1B, 0xF3, 0xC5, 0x1E, 0x43, 0x1C]}; -enum IID IID_ITIMEMediaPlayerAudio = {0xFFAACFDA, 0xB374, 0x4F22, [0xAC, 0x9A, 0xC5, 0xBB, 0x94, 0x37, 0xCB, 0x56]}; -enum IID IID_ITIMEMediaPlayerControl = {0x897A99E7, 0xF386, 0x45C8, [0xB5, 0x1B, 0x3A, 0x25, 0xBB, 0xCB, 0xBA, 0x69]}; -enum IID IID_ITIMEMediaPlayerNetwork = {0xB9987FCA, 0x7FBB, 0x4015, [0xBD, 0x3D, 0x74, 0x18, 0x60, 0x55, 0x14, 0xDA]}; -enum IID IID_ITIMEMediaPlayerSite = {0xBF0571ED, 0x344F, 0x4F58, [0x82, 0xC7, 0x74, 0x31, 0xED, 0x0F, 0xD8, 0x34]}; -enum IID IID_ITIMEPlayItem = {0x2A6096D9, 0x2CE0, 0x47DC, [0xA8, 0x13, 0x90, 0x99, 0xA2, 0x46, 0x63, 0x09]}; -enum IID IID_ITIMEPlayItem2 = {0x4262CD38, 0x6BDC, 0x40A4, [0xBC, 0x50, 0x4C, 0xC5, 0x03, 0x66, 0xE7, 0x02]}; -enum IID IID_ITIMEPlayList = {0xE9B75B62, 0xDD97, 0x4B19, [0x8F, 0xD9, 0x96, 0x46, 0x29, 0x29, 0x52, 0xE0]}; -enum IID IID_ITimer = {0x3050F360, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ITimerService = {0x3050F35F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ITimerSink = {0x3050F361, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ITIMEState = {0xDD5EC62A, 0x9D77, 0x4573, [0x80, 0xA8, 0x75, 0x85, 0x94, 0xE6, 0x9C, 0xEA]}; -enum IID IID_ITIMETransitionElement = {0xF383D66F, 0x5E68, 0x4FC2, [0xB6, 0x41, 0x03, 0x67, 0x2B, 0x54, 0x3A, 0x49]}; -enum IID IID_ITLegacyAddressMediaControl = {0xAB493640, 0x4C0B, 0x11D2, [0xA0, 0x46, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITLegacyAddressMediaControl2 = {0xB0EE512B, 0xA531, 0x409E, [0x9D, 0xD9, 0x40, 0x99, 0xFE, 0x86, 0xC7, 0x38]}; -enum IID IID_ITLegacyCallMediaControl = {0xD624582F, 0xCC23, 0x4436, [0xB8, 0xA5, 0x47, 0xC6, 0x25, 0xC8, 0x04, 0x5D]}; -enum IID IID_ITLegacyCallMediaControl2 = {0x57CA332D, 0x7BC2, 0x44F1, [0xA6, 0x0C, 0x93, 0x6F, 0xE8, 0xD7, 0xCE, 0x73]}; -enum IID IID_ITLegacyWaveSupport = {0x207823EA, 0xE252, 0x11D2, [0xB7, 0x7E, 0x00, 0x80, 0xC7, 0x13, 0x53, 0x81]}; -enum IID IID_ITLocalParticipant = {0x39CBF055, 0xF77A, 0x11D2, [0xA8, 0x24, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; -enum IID IID_ITLocationInfo = {0x0C4D8EFF, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITMedia = {0x0CC1F053, 0xCAEB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_ITMediaCollection = {0x6A8E16A2, 0x0ABC, 0x11D1, [0x97, 0x6D, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_ITMediaControl = {0xC445DDE8, 0x5199, 0x4BC7, [0x98, 0x07, 0x5F, 0xFB, 0x92, 0xE4, 0x2E, 0x09]}; -enum IID IID_ITMediaPlayback = {0x627E8AE6, 0xAE4C, 0x4A69, [0xBB, 0x63, 0x2A, 0xD6, 0x25, 0x40, 0x4B, 0x77]}; -enum IID IID_ITMediaRecord = {0xF5DD4592, 0x5476, 0x4CC1, [0x9D, 0x4D, 0xFA, 0xD3, 0xEE, 0xFE, 0x7D, 0xB2]}; -enum IID IID_ITMediaSupport = {0xB1EFC384, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_ITMSPAddress = {0xEE3BD600, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITMultiTrackTerminal = {0xFE040091, 0xADE8, 0x4072, [0x95, 0xC9, 0xBF, 0x7D, 0xE8, 0xC5, 0x4B, 0x44]}; -enum IID IID_ITParticipant = {0x5899B820, 0x5A34, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; -enum IID IID_ITParticipantControl = {0xD2EE6684, 0x5A34, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; -enum IID IID_ITParticipantEvent = {0x8BB35070, 0x2DAD, 0x11D3, [0xA5, 0x80, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; -enum IID IID_ITParticipantSubStreamControl = {0x2C679108, 0x5A35, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; -enum IID IID_ITPhone = {0x09D48DB4, 0x10CC, 0x4388, [0x9D, 0xE7, 0xA8, 0x46, 0x56, 0x18, 0x97, 0x5A]}; -enum IID IID_ITPhoneDeviceSpecificEvent = {0x63FFB2A6, 0x872B, 0x4CD3, [0xA5, 0x01, 0x32, 0x6E, 0x8F, 0xB4, 0x0A, 0xF7]}; -enum IID IID_ITPhoneEvent = {0x8F942DD8, 0x64ED, 0x4AAF, [0xA7, 0x7D, 0xB2, 0x3D, 0xB0, 0x83, 0x7E, 0xAD]}; -enum IID IID_ITPluggableTerminalClassInfo = {0x41757F4A, 0xCF09, 0x4B34, [0xBC, 0x96, 0x0A, 0x79, 0xD2, 0x39, 0x00, 0x76]}; -enum IID IID_ITPluggableTerminalClassRegistrat = {0x924A3723, 0xA00B, 0x4F5F, [0x9F, 0xEE, 0x8E, 0x9A, 0xEB, 0x9E, 0x82, 0xAA]}; -enum IID IID_ITPluggableTerminalEventSink = {0x6E0887BE, 0xBA1A, 0x492E, [0xBD, 0x10, 0x40, 0x20, 0xEC, 0x5E, 0x33, 0xE0]}; -enum IID IID_ITPluggableTerminalEventSinkRegis = {0xF7115709, 0xA216, 0x4957, [0xA7, 0x59, 0x06, 0x0A, 0xB3, 0x2A, 0x90, 0xD1]}; -enum IID IID_ITPluggableTerminalInitializatio = {0xAED6483C, 0x3304, 0x11D2, [0x86, 0xF1, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; -enum IID IID_ITPluggableTerminalSuperclassInf = {0x6D54E42C, 0x4625, 0x4359, [0xA6, 0xF7, 0x63, 0x19, 0x99, 0x10, 0x7E, 0x05]}; -enum IID IID_ITPluggableTerminalSuperclassRegi = {0x60D3C08A, 0xC13E, 0x4195, [0x9A, 0xB0, 0x8D, 0xE7, 0x68, 0x09, 0x0F, 0x25]}; -enum IID IID_ITPrivateEvent = {0x0E269CD0, 0x10D4, 0x4121, [0x9C, 0x22, 0x9C, 0x85, 0xD6, 0x25, 0x65, 0x0D]}; -enum IID IID_ITQOSApplicationID = {0xE8C89D27, 0xA3BD, 0x47D5, [0xA6, 0xFC, 0xD2, 0xAE, 0x40, 0xCD, 0xBC, 0x6E]}; -enum IID IID_ITQOSEvent = {0xCFA3357C, 0xAD77, 0x11D1, [0xBB, 0x68, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITQueue = {0x5AFC3149, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITQueueEvent = {0x297F3033, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITrackFile = {0x8790C948, 0xA30B, 0x11D0, [0x8C, 0xAB, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; -enum IID IID_ITransaction = {0x0FB15084, 0xAF41, 0x11CE, [0xBD, 0x2B, 0x20, 0x4C, 0x4F, 0x4F, 0x50, 0x20]}; -enum IID IID_ITransaction2 = {0x34021548, 0x0065, 0x11D3, [0xBA, 0xC1, 0x00, 0xC0, 0x4F, 0x79, 0x7B, 0xE2]}; -enum IID IID_ITransactionCloner = {0x02656950, 0x2152, 0x11D0, [0x94, 0x4C, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x6E]}; -enum IID IID_ITransactionDispenser = {0x3A6AD9E1, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; -enum IID IID_ITransactionJoin = {0x0C733A5E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ITransactionLocal = {0x0C733A5F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ITransactionObject = {0x0C733A60, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ITransactionOptions = {0x3A6AD9E0, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; -enum IID IID_ITransactionOutcomeEvents = {0x3A6AD9E2, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; -enum IID IID_ITransmt = {0xB3C9F150, 0xB593, 0x11CE, [0xB5, 0xB0, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; -enum IID IID_ITravelEntry = {0xF46EDB3B, 0xBC2F, 0x11D0, [0x94, 0x12, 0x00, 0xAA, 0x00, 0xA3, 0xEB, 0xD3]}; -enum IID IID_ITravelLog = {0x66A9CB08, 0x4802, 0x11D2, [0xA5, 0x61, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; -enum IID IID_ITravelLogClient = {0x3050F67A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ITravelLogClient2 = {0x0AD364CE, 0xADCB, 0x11D3, [0x82, 0x69, 0x00, 0x80, 0x5F, 0xC7, 0x32, 0xC0]}; -enum IID IID_ITravelLogEntry = {0x7EBFDD87, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; -enum IID IID_ITravelLogEx = {0x3050F679, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_ITravelLogStg = {0x7EBFDD80, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; -enum IID IID_ITRendezvous = {0x34621D6B, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; -enum IID IID_ITRequest = {0xAC48FFDF, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITRequestEvent = {0xAC48FFDE, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITridentEventSink = {0x1DC9CA50, 0x06EF, 0x11D2, [0x84, 0x15, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; -enum IID IID_ITrkForceOwnership = {0xA2531F44, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; -enum IID IID_ITrkRestoreNotify = {0xD0056F6B, 0xE2A0, 0x11D0, [0xB1, 0xC2, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; -enum IID IID_ITrkRestoreParser = {0x755939E3, 0xE381, 0x11D0, [0xB1, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; -enum IID IID_ITrusteeAdmin = {0x0C733AA1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ITrusteeGroupAdmin = {0x0C733AA2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_ITScriptableAudioFormat = {0xB87658BD, 0x3C59, 0x4F64, [0xBE, 0x74, 0xAE, 0xDE, 0x3E, 0x86, 0xA8, 0x1E]}; -enum IID IID_ITSdp = {0x9B2719D8, 0xB696, 0x11D0, [0xA4, 0x89, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_ITStaticAudioTerminal = {0xA86B7871, 0xD14C, 0x48E6, [0x92, 0x2E, 0xA8, 0xD1, 0x5F, 0x98, 0x48, 0x00]}; -enum IID IID_ITStream = {0xEE3BD605, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITStreamControl = {0xEE3BD604, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITStreamQualityControl = {0x6C0AB6C2, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; -enum IID IID_ITSubStream = {0xEE3BD608, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITSubStreamControl = {0xEE3BD607, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITTAPI = {0xB1EFC382, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_ITTAPI2 = {0x54FBDC8C, 0xD90F, 0x4DAD, [0x96, 0x95, 0xB3, 0x73, 0x09, 0x7F, 0x09, 0x4B]}; -enum IID IID_ITTAPICallCenter = {0x5AFC3154, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; -enum IID IID_ITTAPIEventNotification = {0xEDDB9426, 0x3B91, 0x11D1, [0x8F, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITTAPIObjectEvent = {0xF4854D48, 0x937A, 0x11D1, [0xBB, 0x58, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID IID_ITTAPIObjectEvent2 = {0x359DDA6E, 0x68CE, 0x4383, [0xBF, 0x0B, 0x16, 0x91, 0x33, 0xC4, 0x1B, 0x46]}; -enum IID IID_ITTerminal = {0xB1EFC38A, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_ITTerminalControl = {0xAED6483B, 0x3304, 0x11D2, [0x86, 0xF1, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; -enum IID IID_ITTerminalManager = {0x7170F2DE, 0x9BE3, 0x11D0, [0xA0, 0x09, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; -enum IID IID_ITTerminalManager2 = {0xBB33DEC6, 0xB2C7, 0x46E6, [0x9E, 0xD1, 0x49, 0x8B, 0x91, 0xFA, 0x85, 0xAC]}; -enum IID IID_ITTerminalSupport = {0xB1EFC385, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID IID_ITTerminalSupport2 = {0xF3EB39BC, 0x1B1F, 0x4E99, [0xA0, 0xC0, 0x56, 0x30, 0x5C, 0x4D, 0xD5, 0x91]}; -enum IID IID_ITTime = {0x2652BB78, 0x1516, 0x11D1, [0x97, 0x71, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_ITTimeCollection = {0x0CC1F04F, 0xCAEB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID IID_ITToneDetectionEvent = {0x407E0FAF, 0xD047, 0x4753, [0xB0, 0xC6, 0x8E, 0x06, 0x03, 0x73, 0xFE, 0xCD]}; -enum IID IID_ITToneTerminalEvent = {0xE6F56009, 0x611F, 0x4945, [0xBB, 0xD2, 0x2D, 0x0C, 0xE5, 0x61, 0x20, 0x56]}; -enum IID IID_ITTTSTerminalEvent = {0xD964788F, 0x95A5, 0x461D, [0xAB, 0x0C, 0xB9, 0x90, 0x0A, 0x6C, 0x27, 0x13]}; -enum IID IID_ITypeChangeEvents = {0x00020410, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ITypeComp = {0x00020403, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ITypeFactory = {0x0000002E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ITypeInfo = {0x00020401, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ITypeInfo2 = {0x00020412, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ITypeLib = {0x00020402, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ITypeLib2 = {0x00020411, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_ITypeMarshal = {0x0000002D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IUmiADSIPrivate = {0xCFCECB01, 0x3123, 0x4926, [0xB5, 0xE3, 0x62, 0x78, 0x08, 0x27, 0x26, 0x43]}; -enum IID IID_IUniformResourceLocatorA = {0xFBF23B80, 0xE3F0, 0x101B, [0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8]}; -enum IID IID_IUniformResourceLocatorW = {0xCABB0DA0, 0xDA57, 0x11CF, [0x99, 0x74, 0x00, 0x20, 0xAF, 0xD7, 0x97, 0x62]}; -enum IID IID_IUnknown = {0x00000000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IUnsecuredApartment = {0x1CFABA8C, 0x1523, 0x11D1, [0xAD, 0x79, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID IID_IUPnPDescriptionDocument = {0x11D1C1B2, 0x7DAA, 0x4C9E, [0x95, 0x95, 0x7F, 0x82, 0xED, 0x20, 0x6D, 0x1E]}; -enum IID IID_IUPnPDescriptionDocumentCallback = {0x77394C69, 0x5486, 0x40D6, [0x9B, 0xC3, 0x49, 0x91, 0x98, 0x3E, 0x02, 0xDA]}; -enum IID IID_IUPnPDevice = {0x3D44D0D1, 0x98C9, 0x4889, [0xAC, 0xD1, 0xF9, 0xD6, 0x74, 0xBF, 0x22, 0x21]}; -enum IID IID_IUPnPDeviceControl = {0x204810BA, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; -enum IID IID_IUPnPDeviceDocumentAccess = {0xE7772804, 0x3287, 0x418E, [0x90, 0x72, 0xCF, 0x2B, 0x47, 0x23, 0x89, 0x81]}; -enum IID IID_IUPnPDeviceFinder = {0xADDA3D55, 0x6F72, 0x4319, [0xBF, 0xF9, 0x18, 0x60, 0x0A, 0x53, 0x9B, 0x10]}; -enum IID IID_IUPnPDeviceFinderAddCallbackWithI = {0x983DFC0B, 0x1796, 0x44DF, [0x89, 0x75, 0xCA, 0x54, 0x5B, 0x62, 0x0E, 0xE5]}; -enum IID IID_IUPnPDeviceFinderCallback = {0x415A984A, 0x88B3, 0x49F3, [0x92, 0xAF, 0x05, 0x08, 0xBE, 0xDF, 0x0D, 0x6C]}; -enum IID IID_IUPnPDeviceHostICSSupport = {0x3FFC5AE5, 0xA66B, 0x499C, [0xA1, 0x80, 0xC7, 0x39, 0x3D, 0xB6, 0xBA, 0x8D]}; -enum IID IID_IUPnPDeviceHostSetup = {0x6BD34909, 0x54E7, 0x4FBF, [0x85, 0x62, 0x7B, 0x89, 0x70, 0x9A, 0x58, 0x9A]}; -enum IID IID_IUPnPDeviceProvider = {0x204810B8, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; -enum IID IID_IUPnPDevices = {0xFDBC0C73, 0xBDA3, 0x4C66, [0xAC, 0x4F, 0xF2, 0xD9, 0x6F, 0xDA, 0xD6, 0x8C]}; -enum IID IID_IUPnPEventSink = {0x204810B4, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; -enum IID IID_IUPnPEventSource = {0x204810B5, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; -enum IID IID_IUPnPNAT = {0xB171C812, 0xCC76, 0x485A, [0x94, 0xD8, 0xB6, 0xB3, 0xA2, 0x79, 0x4E, 0x99]}; -enum IID IID_IUPnPPrivateCallbackHelper = {0x8DCC8327, 0xDBE9, 0x48E6, [0x84, 0x6C, 0x33, 0x72, 0x58, 0x65, 0xD5, 0x0C]}; -enum IID IID_IUPnPPrivateDocumentCallbackHelp = {0x19432A8E, 0x4A32, 0x4860, [0xB8, 0xFB, 0x95, 0xB1, 0x11, 0x7C, 0xD4, 0xE5]}; -enum IID IID_IUPnPPrivateServiceHelper2 = {0x340F4076, 0x6856, 0x48F9, [0xB3, 0xC4, 0x97, 0xB9, 0x1B, 0x68, 0xD7, 0x7E]}; -enum IID IID_IUPnPRegistrar = {0x204810B6, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; -enum IID IID_IUPnPReregistrar = {0x204810B7, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; -enum IID IID_IUPnPService = {0xA295019C, 0xDC65, 0x47DD, [0x90, 0xDC, 0x7F, 0xE9, 0x18, 0xA1, 0xAB, 0x44]}; -enum IID IID_IUPnPServiceCallback = {0x31FADCA9, 0xAB73, 0x464B, [0xB6, 0x7D, 0x5C, 0x1D, 0x0F, 0x83, 0xC8, 0xB8]}; -enum IID IID_IUPnPServiceCallbackPrivate = {0x24EA2515, 0xF612, 0x4528, [0xBA, 0x82, 0x7B, 0xD3, 0xDB, 0xBA, 0xD3, 0x03]}; -enum IID IID_IUPnPServices = {0x3F8C8E9E, 0x9A7A, 0x4DC8, [0xBC, 0x41, 0xFF, 0x31, 0xFA, 0x37, 0x49, 0x56]}; -enum IID IID_IUrlHistoryNotify = {0xBC40BEC1, 0xC493, 0x11D0, [0x83, 0x1B, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; -enum IID IID_IUrlHistoryStg = {0x3C374A41, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; -enum IID IID_IUrlHistoryStg2 = {0xAFA0DC11, 0xC313, 0x11D0, [0x83, 0x1A, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; -enum IID IID_IUrlMon = {0x00000026, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IURLSearchHook = {0xAC60F6A0, 0x0FD9, 0x11D0, [0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97]}; -enum IID IID_IURLSearchHook2 = {0x5EE44DA4, 0x6D32, 0x46E3, [0x86, 0xBC, 0x07, 0x54, 0x0D, 0xED, 0xD0, 0xE0]}; -enum IID IID_IUrlTrackingStg = {0xF2F8CBB3, 0xB040, 0x11D0, [0xBB, 0x16, 0x00, 0xC0, 0x4F, 0xB6, 0x6F, 0x63]}; -enum IID IID_IUserEventTimer = {0x0F504B94, 0x6E42, 0x42E6, [0x99, 0xE0, 0xE2, 0x0F, 0xAF, 0xE5, 0x2A, 0xB4]}; -enum IID IID_IUserEventTimerCallback = {0xE9EAD8E6, 0x2A25, 0x410E, [0x9B, 0x58, 0xA9, 0xFB, 0xEF, 0x1D, 0xD1, 0xA2]}; -enum IID IID_IUserNotification = {0xBA9711BA, 0x5893, 0x4787, [0xA7, 0xE1, 0x41, 0x27, 0x71, 0x51, 0x55, 0x0B]}; -enum IID IID_IUtilityButton = {0x3050F6AF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID IID_IVariantChangeType = {0xA6EF9862, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; -enum IID IID_IVersionHost = {0x667115AC, 0xDC02, 0x11D1, [0xBA, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; -enum IID IID_IVersionVector = {0x4EB01410, 0xDB1A, 0x11D1, [0xBA, 0x53, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; -enum IID IID_IViewChapter = {0x0C733A98, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IViewFilter = {0x0C733A9B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IViewObject = {0x0000010D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IViewObject2 = {0x00000127, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IViewObjectEx = {0x3AF24292, 0x0C96, 0x11CE, [0xA0, 0xCF, 0x00, 0xAA, 0x00, 0x60, 0x0A, 0xB8]}; -enum IID IID_IViewRowset = {0x0C733A97, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IViewSort = {0x0C733A9A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID IID_IVirusScanEngine = {0x083DB180, 0xB4A8, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; -enum IID IID_IVirusScanner = {0x4589BEE0, 0xB4B1, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; -enum IID IID_IWaitMultiple = {0x0000002B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IWbemAddressResolution = {0xF7CE2E12, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID IID_IWbemBackupRestore = {0xC49E32C7, 0xBC8B, 0x11D2, [0x85, 0xD4, 0x00, 0x10, 0x5A, 0x1F, 0x83, 0x04]}; -enum IID IID_IWbemBackupRestoreEx = {0xA359DEC5, 0xE813, 0x4834, [0x8A, 0x2A, 0xBA, 0x7F, 0x1D, 0x77, 0x7D, 0x76]}; -enum IID IID_IWbemCallResult = {0x44ACA675, 0xE8FC, 0x11D0, [0xA0, 0x7C, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IWbemCallStatus = {0x4212DC47, 0x142E, 0x4C6C, [0xBC, 0x49, 0x6C, 0xA2, 0x32, 0xDD, 0x09, 0x59]}; -enum IID IID_IWbemClassObject = {0xDC12A681, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; -enum IID IID_IWbemClientConnectionTransport = {0xA889C72A, 0xFCC1, 0x4A9E, [0xAF, 0x61, 0xED, 0x07, 0x13, 0x33, 0xFB, 0x5B]}; -enum IID IID_IWbemClientTransport = {0xF7CE2E11, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID IID_IWbemConfigure = {0x9A368276, 0x26CF, 0x11D0, [0xAD, 0x3C, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID IID_IWbemConfigureRefresher = {0x49353C92, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IWbemConnectorLogin = {0xD8EC9CB1, 0xB135, 0x4F10, [0x8B, 0x1B, 0xC7, 0x18, 0x8B, 0xB0, 0xD1, 0x86]}; -enum IID IID_IWbemConstructClassObject = {0x9EF76194, 0x70D5, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID IID_IWbemContext = {0x44ACA674, 0xE8FC, 0x11D0, [0xA0, 0x7C, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IWbemDecoupledBasicEventProvider = {0x86336D20, 0xCA11, 0x4786, [0x9E, 0xF1, 0xBC, 0x8A, 0x94, 0x6B, 0x42, 0xFC]}; -enum IID IID_IWbemDecoupledEventSink = {0xCD94EBF2, 0xE622, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; -enum IID IID_IWbemDecoupledRegistrar = {0x1005CBCF, 0xE64F, 0x4646, [0xBC, 0xD3, 0x3A, 0x08, 0x9D, 0x8A, 0x84, 0xB4]}; -enum IID IID_IWbemEventConsumerProvider = {0xE246107A, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID IID_IWbemEventConsumerProviderEx = {0x17CF534A, 0xD8A3, 0x4AD0, [0xAC, 0x92, 0x5E, 0x3D, 0x01, 0x71, 0x71, 0x51]}; -enum IID IID_IWbemEventProvider = {0xE245105B, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID IID_IWbemEventProviderQuerySink = {0x580ACAF8, 0xFA1C, 0x11D0, [0xAD, 0x72, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID IID_IWbemEventProviderSecurity = {0x631F7D96, 0xD993, 0x11D2, [0xB3, 0x39, 0x00, 0x10, 0x5A, 0x1F, 0x4A, 0xAF]}; -enum IID IID_IWbemEventSink = {0x3AE0080A, 0x7E3A, 0x4366, [0xBF, 0x89, 0x0F, 0xEE, 0xDC, 0x93, 0x16, 0x59]}; -enum IID IID_IWbemHiPerfEnum = {0x2705C288, 0x79AE, 0x11D2, [0xB3, 0x48, 0x00, 0x10, 0x5A, 0x1F, 0x81, 0x77]}; -enum IID IID_IWbemHiPerfProvider = {0x49353C93, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IWbemLevel1Login = {0xF309AD18, 0xD86A, 0x11D0, [0xA0, 0x75, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IWbemLocator = {0xDC12A687, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; -enum IID IID_IWbemObjectAccess = {0x49353C9A, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IWbemObjectSink = {0x7C857801, 0x7381, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; -enum IID IID_IWbemObjectTextSrc = {0xBFBF883A, 0xCAD7, 0x11D3, [0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; -enum IID IID_IWbemPath = {0x3BC15AF2, 0x736C, 0x477E, [0x9E, 0x51, 0x23, 0x8A, 0xF8, 0x66, 0x7D, 0xCC]}; -enum IID IID_IWbemPathKeyList = {0x9AE62877, 0x7544, 0x4BB0, [0xAA, 0x26, 0xA1, 0x38, 0x24, 0x65, 0x9E, 0xD6]}; -enum IID IID_IWbemPropertyProvider = {0xCE61E841, 0x65BC, 0x11D0, [0xB6, 0xBD, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; -enum IID IID_IWbemProviderIdentity = {0x631F7D97, 0xD993, 0x11D2, [0xB3, 0x39, 0x00, 0x10, 0x5A, 0x1F, 0x4A, 0xAF]}; -enum IID IID_IWbemProviderInit = {0x1BE41572, 0x91DD, 0x11D1, [0xAE, 0xB2, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IWbemProviderInitSink = {0x1BE41571, 0x91DD, 0x11D1, [0xAE, 0xB2, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IWbemQualifierSet = {0xDC12A680, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; -enum IID IID_IWbemQuery = {0x81166F58, 0xDD98, 0x11D3, [0xA1, 0x20, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; -enum IID IID_IWbemRawSdAccessor = {0xC1E2D759, 0xCABD, 0x11D3, [0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; -enum IID IID_IWbemRefresher = {0x49353C99, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IWbemServices = {0x9556DC99, 0x828C, 0x11CF, [0xA3, 0x7E, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; -enum IID IID_IWbemShutdown = {0xB7B31DF9, 0xD515, 0x11D3, [0xA1, 0x1C, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; -enum IID IID_IWbemStatusCodeText = {0xEB87E1BC, 0x3233, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; -enum IID IID_IWbemTransport = {0x553FE584, 0x2156, 0x11D0, [0xB6, 0xAE, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; -enum IID IID_IWbemUnboundObjectSink = {0xE246107B, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID IID_IWBScriptControl = {0xA5170870, 0x0CF8, 0x11D1, [0x8B, 0x91, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; -enum IID IID_IWCContextMenuCallback = {0x97DEDE64, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IWCPropertySheetCallback = {0x97DEDE60, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IWCWizard97Callback = {0x97DEDE67, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IWCWizardCallback = {0x97DEDE62, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IWebBridge = {0xAE24FDAD, 0x03C6, 0x11D1, [0x8B, 0x76, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; -enum IID IID_IWebBrowser = {0xEAB22AC1, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; -enum IID IID_IWebBrowser2 = {0xD30C1661, 0xCDAF, 0x11D0, [0x8A, 0x3E, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0x6E]}; -enum IID IID_IWebBrowserApp = {0x0002DF05, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID IID_IWebWizardExtension = {0x0E6B3F66, 0x98D1, 0x48C0, [0xA2, 0x22, 0xFB, 0xDE, 0x74, 0xE2, 0xFB, 0xC5]}; -enum IID IID_IWebWizardHost = {0x18BCC359, 0x4990, 0x4BFB, [0xB9, 0x51, 0x3C, 0x83, 0x70, 0x2B, 0xE5, 0xF9]}; -enum IID IID_IWEExtendContextMenu = {0x97DEDE65, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IWEExtendPropertySheet = {0x97DEDE61, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IWEExtendWizard = {0x97DEDE63, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IWEExtendWizard97 = {0x97DEDE68, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_IWEInvokeCommand = {0x97DEDE66, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; -enum IID IID_Iwfolders = {0xBAE31F98, 0x1B81, 0x11D2, [0xA9, 0x7A, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; -enum IID IID_IWindowForBindingUI = {0x79EAC9D5, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IWinInetHttpInfo = {0x79EAC9D8, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IWinInetInfo = {0x79EAC9D6, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; -enum IID IID_IWizardExtension = {0xC02EA696, 0x86CC, 0x491E, [0x9B, 0x23, 0x74, 0x39, 0x4A, 0x04, 0x44, 0xA8]}; -enum IID IID_IWizardSite = {0x88960F5B, 0x422F, 0x4E7B, [0x80, 0x13, 0x73, 0x41, 0x53, 0x81, 0xC3, 0xC3]}; -enum IID IID_IWMIExtension = {0xADC1F06E, 0x5C7E, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; -enum IID IID_IWordBreaker = {0xD53552C8, 0x77E3, 0x101A, [0xB5, 0x52, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; -enum IID IID_IWordSink = {0xCC907054, 0xC058, 0x101A, [0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; -enum IID IID_IWrappedProtocol = {0x53C84785, 0x8425, 0x4DC5, [0x97, 0x1B, 0xE5, 0x8D, 0x9C, 0x19, 0xF9, 0xB6]}; -enum IID IID_IXMLAttribute = {0xD4D4A0FC, 0x3B73, 0x11D1, [0xB2, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0x96]}; -enum IID IID_IXMLDocument = {0xF52E2B61, 0x18A1, 0x11D1, [0xB1, 0x05, 0x00, 0x80, 0x5F, 0x49, 0x91, 0x6B]}; -enum IID IID_IXMLDocument2 = {0x2B8DE2FE, 0x8D2D, 0x11D1, [0xB2, 0xFC, 0x00, 0xC0, 0x4F, 0xD9, 0x15, 0xA9]}; -enum IID IID_IXMLDOMAttribute = {0x2933BF85, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMCDATASection = {0x2933BF8A, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMCharacterData = {0x2933BF84, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMComment = {0x2933BF88, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMDocument = {0x2933BF81, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMDocumentFragment = {0x3EFAA413, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; -enum IID IID_IXMLDOMDocumentType = {0x2933BF8B, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMElement = {0x2933BF86, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMEntity = {0x2933BF8D, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMEntityReference = {0x2933BF8E, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMImplementation = {0x2933BF8F, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMNamedNodeMap = {0x2933BF83, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMNode = {0x2933BF80, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMNodeList = {0x2933BF82, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMNotation = {0x2933BF8C, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMParseError = {0x3EFAA426, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; -enum IID IID_IXMLDOMProcessingInstruction = {0x2933BF89, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDOMText = {0x2933BF87, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; -enum IID IID_IXMLDSOControl = {0x310AFA62, 0x0575, 0x11D2, [0x9C, 0xA9, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; -enum IID IID_IXMLElement = {0x3F7F31AC, 0xE15F, 0x11D0, [0x9C, 0x25, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; -enum IID IID_IXMLElement2 = {0x2B8DE2FF, 0x8D2D, 0x11D1, [0xB2, 0xFC, 0x00, 0xC0, 0x4F, 0xD9, 0x15, 0xA9]}; -enum IID IID_IXMLElementCollection = {0x65725580, 0x9B5D, 0x11D0, [0x9B, 0xFE, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; -enum IID IID_IXMLError = {0x948C5AD3, 0xC58D, 0x11D0, [0x9C, 0x0B, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; -enum IID IID_IXMLGenericParse = {0xE4E23071, 0x4D07, 0x11D2, [0xAE, 0x76, 0x00, 0x80, 0xC7, 0x3B, 0xC1, 0x99]}; -enum IID IID_IXMLHttpRequest = {0xED8C108D, 0x4349, 0x11D2, [0x91, 0xA4, 0x00, 0xC0, 0x4F, 0x79, 0x69, 0xE8]}; -enum IID IID_IXMLNodeFactory = {0xD242361F, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; -enum IID IID_IXMLNodeSource = {0xD242361D, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; -enum IID IID_IXMLParser = {0xD242361E, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; -enum IID IID_IXTLRuntime = {0x3EFAA425, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; -enum IID IID_StdOle = {0x00020430, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID KSDATAFORMAT_SUBTYPE_DIRECTMUSIC = {0x1A82F8BC, 0x3F8B, 0x11D2, [0xB7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1]}; -enum IID KSDATAFORMAT_SUBTYPE_MIDI = {0x1D262760, 0xE957, 0x11CF, [0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00]}; -enum IID LIBID_Accessibility = {0x1EA4DBF0, 0x3C3B, 0x11CF, [0x81, 0x0C, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71]}; -enum IID LIBID_ActiveIMM = {0x4955DD30, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; -enum IID LIBID_ADs = {0x97D25DB0, 0x0363, 0x11CF, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; -enum IID LIBID_ALGLib = {0xB6D1D098, 0xE235, 0x4B99, [0xBA, 0x98, 0x7C, 0x62, 0x4F, 0xD8, 0x75, 0xDB]}; -enum IID LIBID_AutoDiscovery = {0x4EAFB888, 0x81CB, 0x4EBA, [0xBA, 0xC9, 0xDA, 0x25, 0x4E, 0x57, 0x21, 0xF1]}; -enum IID LIBID_BackgroundCopyManager = {0x1DEEB74F, 0x7915, 0x4560, [0xB5, 0x58, 0x91, 0x8C, 0x83, 0xF1, 0x76, 0xA6]}; -enum IID LIBID_BackgroundCopyManager1_5 = {0xEA9319EA, 0xC628, 0x480F, [0x83, 0x31, 0x76, 0x8F, 0xAC, 0x39, 0x7E, 0x4E]}; -enum IID LIBID_BackgroundCopyQMgr = {0xF5B26DCB, 0xB37E, 0x4D7C, [0xAE, 0x7A, 0x1C, 0xB3, 0xFB, 0xEB, 0x18, 0x3E]}; -enum IID LIBID_CHANNELMGR = {0x4804F2E0, 0xD16E, 0x11D0, [0x80, 0x2B, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; -enum IID LIBID_CLADMWIZLib = {0x24F97140, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; -enum IID LIBID_ClusCfgWizard = {0x6D01FEDC, 0x8D34, 0x4728, [0xAD, 0x0B, 0xB3, 0xA2, 0x1A, 0x10, 0x3B, 0x42]}; -enum IID LIBID_CommonControlObjects = {0xBCADA15B, 0xB428, 0x420C, [0x8D, 0x28, 0x02, 0x35, 0x90, 0x92, 0x4C, 0x9F]}; -enum IID LIBID_DirectAnimation = {0xBCBB1F74, 0xE384, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; -enum IID LIBID_DWbemServices_v3 = {0xCB7CA031, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; -enum IID LIBID_DXTMSFTLib = {0x5E77EB03, 0x937C, 0x11D1, [0xB0, 0x47, 0x00, 0xAA, 0x00, 0x3B, 0x60, 0x61]}; -enum IID LIBID_DXTRANSLib = {0x54314D1D, 0x35FE, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; -enum IID LIBID_DXTRANSPLib = {0x527A4DA4, 0x7F2C, 0x11D2, [0xB1, 0x2D, 0x00, 0x00, 0xF8, 0x1F, 0x59, 0x95]}; -enum IID LIBID_EventQLib = {0xA70080F2, 0x403B, 0x11D1, [0x88, 0x36, 0x00, 0xA0, 0xC9, 0x49, 0xAC, 0x67]}; -enum IID LIBID_IASPolicyLib = {0x6BC096A5, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; -enum IID LIBID_IEXTagLib = {0x7E8BC440, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; -enum IID LIBID_IMAPILib = {0xC49F2184, 0x50A7, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; -enum IID LIBID_ImgUtilLib = {0xCF790840, 0x2DC4, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; -enum IID LIBID_ITRKADMNLib = {0xA2531F35, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; -enum IID LIBID_McastLib = {0x64217CC0, 0xA285, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; -enum IID LIBID_MSHTML = {0x3050F1C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID LIBID_MSHTMLINTERNAL = {0x3050F7E1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID LIBID_MSTIME = {0x87C96271, 0xADDB, 0x4745, [0xB2, 0xE8, 0xDF, 0x88, 0xA8, 0x47, 0x2F, 0xD1]}; -enum IID LIBID_MSXML = {0xD63E0CE2, 0xA0A2, 0x11D0, [0x9C, 0x02, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; -enum IID LIBID_MultiLanguage = {0x275C23E0, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; -enum IID LIBID_NATUPNPLib = {0x1C565858, 0xF302, 0x471E, [0xB4, 0x09, 0xF1, 0x80, 0xAA, 0x4A, 0xBE, 0xC6]}; -enum IID LIBID_NETCONLib = {0x43E734CA, 0x043D, 0x4A70, [0x9A, 0x2C, 0xA8, 0xF2, 0x54, 0x06, 0x3D, 0x91]}; -enum IID LIBID_PassiveSink = {0xE002EEEF, 0xE6EA, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; -enum IID LIBID_ProcessDebugManagerLib = {0x78A51821, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; -enum IID LIBID_RENDLib = {0xF1029E4D, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID LIBID_RTCCORELib = {0xCD260094, 0xDE10, 0x4AEE, [0xAC, 0x73, 0xEF, 0x87, 0xF6, 0xE1, 0x26, 0x83]}; -enum IID LIBID_SDOIASLib = {0x81DDF732, 0x4AA8, 0x4A35, [0xBD, 0xFF, 0x8B, 0x42, 0xEF, 0xE7, 0xC6, 0x24]}; -enum IID LIBID_SDPBLBLib = {0xC259D79A, 0xC8AB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; -enum IID LIBID_SensEvents = {0xD597DEED, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; -enum IID LIBID_SHDocVw = {0xEAB22AC0, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; -enum IID LIBID_Shell32 = {0x50A7E9B0, 0x70EF, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; -enum IID LIBID_ShellImageData = {0x0B8AFF06, 0x8DF0, 0x4F13, [0x8E, 0x25, 0x25, 0xB2, 0x31, 0x9C, 0x43, 0x6A]}; -enum IID LIBID_ShellObjects = {0x50A7E9B1, 0x70EF, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; -enum IID LIBID_SHGINALib = {0x0A055C02, 0xBABE, 0x4480, [0xBB, 0x7B, 0xA8, 0xEC, 0x72, 0x3C, 0xE9, 0xC0]}; -enum IID LIBID_SubscriptionMgr = {0xC54FD88A, 0xFFA1, 0x11D0, [0xBC, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; -enum IID LIBID_TAPI3Lib = {0x21D6D480, 0xA88B, 0x11D0, [0x83, 0xDD, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; -enum IID LIBID_TERMMGRLib = {0x28DCD85B, 0xACA4, 0x11D0, [0xA0, 0x28, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; -enum IID LIBID_UPnPHostLib = {0x204810B3, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; -enum IID LIBID_UPNPLib = {0xDB3442A7, 0xA2E9, 0x4A59, [0x9C, 0xB5, 0xF5, 0xC1, 0xA5, 0xD9, 0x01, 0xE5]}; -enum IID LIBID_VIRUSSCAN = {0x5F47DB70, 0xD9FE, 0x11D0, [0x95, 0x64, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; -enum IID LIBID_WbemClient_v1 = {0x7EC196FE, 0x7005, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID LIBID_WbemProviders_v1 = {0x092DF710, 0x7010, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; -enum IID LIBID_WbemScripting = {0x565783C6, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; -enum IID LIBID_WbemTransports_v1 = {0x027947F3, 0xD731, 0x11CE, [0xA3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]}; -enum IID LIBID_WbemUtilities_v1 = {0x226C9290, 0xDD96, 0x11D3, [0xA1, 0x20, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; -enum IID LIBID_WebCheck = {0x10BD2E25, 0xF235, 0x11CF, [0xB5, 0xDD, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xEC]}; -enum IID LIBID_WMIEXTENSIONLib = {0xE503D000, 0x5C7F, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; -enum IID LIBID_XENROLLLib = {0x43F8F27B, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; -enum IID LIBID_XMLPSR = {0xD242361C, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; -enum IID MDGUID_MDX = {0xA07CCCD0, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; -enum IID MDSCHEMA_ACTIONS = {0xA07CCD08, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; -enum IID MDSCHEMA_COMMANDS = {0xA07CCD09, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; -enum IID MDSCHEMA_CUBES = {0xC8B522D8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID MDSCHEMA_DIMENSIONS = {0xC8B522D9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID MDSCHEMA_FUNCTIONS = {0xA07CCD07, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; -enum IID MDSCHEMA_HIERARCHIES = {0xC8B522DA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID MDSCHEMA_LEVELS = {0xC8B522DB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID MDSCHEMA_MEASURES = {0xC8B522DC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID MDSCHEMA_MEMBERS = {0xC8B522DE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID MDSCHEMA_PROPERTIES = {0xC8B522DD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; -enum IID MDSCHEMA_SETS = {0xA07CCD0B, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; -enum IID NAMEDTIMER_DRAW = {0x3050F362, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID NOTFCOOKIE_SCHEDULE_GROUP_DAILY = {0xD34F18B0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTFCOOKIE_SCHEDULE_GROUP_MANUAL = {0xD34F18B3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTFCOOKIE_SCHEDULE_GROUP_MONTHLY = {0xD34F18B2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTFCOOKIE_SCHEDULE_GROUP_WEEKLY = {0xD34F18B1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_11 = {0xD34F17FB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_12 = {0xD34F17FC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_13 = {0xD34F17FD, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_14 = {0xD34F17FE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_15 = {0xD34F17FF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_AGENT_INIT = {0x1E4A7390, 0xC70B, 0x11D0, [0x95, 0xF8, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xEC]}; -enum IID NOTIFICATIONTYPE_AGENT_START = {0xD34F17EC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_ALERT = {0xD34F17E3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_ANOUNCMENT = {0xD34F17E1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_BEGIN_REPORT = {0xD34F17EE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_CONFIG_CHANGED = {0xD34F17F2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_CONNECT_TO_INTERNET = {0xD34F17F0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_d = {0xD34F17F8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_DISCONNECT_FROM_INTE = {0xD34F17F1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_e = {0xD34F17F9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_END_REPORT = {0xD34F17EF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_f = {0xD34F17FA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_GROUP_DONE = {0xD34F1885, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_GROUP_RESTART = {0xD34F1884, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_GROUP_START = {0xD34F1883, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_i6 = {0xD34F1886, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_i7 = {0xD34F1887, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_i8 = {0xD34F1888, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_i9 = {0xD34F1889, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_iA = {0xD34F188A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_iB = {0xD34F188B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_iC = {0xD34F188C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_iD = {0xD34F188D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_iE = {0xD34F188E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_iF = {0xD34F188F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_INET_IDLE = {0xD34F17E4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_INET_OFFLINE = {0xD34F17E5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_INET_ONLINE = {0xD34F17E6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_ITEM_DONE = {0xD34F1882, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_ITEM_RESTART = {0xD34F1881, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_ITEM_START = {0xD34F1880, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_NULL = {0xD34F17E0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_PROGRESS_REPORT = {0xD34F17F3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_0 = {0xD34F1800, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_1 = {0xD34F1801, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_2 = {0xD34F1802, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_3 = {0xD34F1803, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_4 = {0xD34F1804, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_5 = {0xD34F1805, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_6 = {0xD34F1806, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_7 = {0xD34F1807, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_8 = {0xD34F1808, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_9 = {0xD34F1809, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_A = {0xD34F180A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_B = {0xD34F180B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_C = {0xD34F180C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_D = {0xD34F180D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_E = {0xD34F180E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_START_F = {0xD34F180F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_TASK = {0xD34F17E2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_TASKS_ABORT = {0xD34F17E9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_TASKS_COMPLETED = {0xD34F17EA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_TASKS_ERROR = {0xD34F17F7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_TASKS_PROGRESS = {0xD34F17EB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_TASKS_RESUME = {0xD34F17E8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_TASKS_STARTED = {0xD34F17F6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_TASKS_SUSPEND = {0xD34F17E7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_USER_IDLE_BEGIN = {0xD34F17F4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID NOTIFICATIONTYPE_USER_IDLE_END = {0xD34F17F5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; -enum IID OLE_DATAPATH_ALLIMAGE = {0x0002DE0E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_ALLMM = {0x0002DE18, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_ALLTEXT = {0x0002DE1E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_ANSITEXT = {0x0002DE19, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_AVI = {0x0002DE0F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_BASICAUDIO = {0x0002DE12, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_BIFF = {0x0002DE21, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_BMP = {0x0002DE01, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_CGM = {0x0002DE0B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_COMMONIMAGE = {0x0002DE0D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_DIB = {0x0002DE02, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_DIF = {0x0002DE1F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_ENHMF = {0x0002DE04, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_EPS = {0x0002DE0C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_GIF = {0x0002DE05, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_HTML = {0x0002DE1C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_JPEG = {0x0002DE06, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_MIDI = {0x0002DE13, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_MPEG = {0x0002DE10, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_PALETTE = {0x0002DE22, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_PCX = {0x0002DE09, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_PENDATA = {0x0002DE23, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_PICT = {0x0002DE0A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_POSTSCRIPT = {0x0002DE1D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_QUICKTIME = {0x0002DE11, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_RIFF = {0x0002DE15, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_RTF = {0x0002DE1B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_SOUND = {0x0002DE16, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_SYLK = {0x0002DE20, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_TIFF = {0x0002DE07, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_UNICODE = {0x0002DE1A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_VIDEO = {0x0002DE17, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_WAV = {0x0002DE14, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_WMF = {0x0002DE03, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLE_DATAPATH_XBM = {0x0002DE08, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; -enum IID OLEDB_SVC_DSLPropertyPages = {0x51740C02, 0x7E8E, 0x11D2, [0xA0, 0x2D, 0x00, 0xC0, 0x4F, 0xA3, 0x73, 0x48]}; -enum IID PSGUID_QUERY = {0x49691C90, 0x7E17, 0x101A, [0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9]}; -enum IID RESCLASSTYPE_IPAddress = {0x57A80E0F, 0x6F18, 0x458B, [0xA7, 0x2A, 0xD1, 0x17, 0x0C, 0x47, 0x93, 0x90]}; -enum IID RESCLASSTYPE_NetworkName = {0xBBA69EB9, 0xF5D0, 0x487B, [0x92, 0xAE, 0x1B, 0xA1, 0x0F, 0x39, 0x21, 0x58]}; -enum IID RESCLASSTYPE_StorageDevice = {0x12453A47, 0x8C5E, 0x4837, [0xBA, 0xC6, 0xB2, 0x54, 0xB8, 0xF2, 0x64, 0xCC]}; -enum IID RESTYPE_ClusterIPAddress = {0xE50DF832, 0x477C, 0x440C, [0xB7, 0xA3, 0x38, 0x23, 0xA6, 0xEF, 0x6C, 0xCB]}; -enum IID RESTYPE_ClusterNetName = {0xB2897CCF, 0x8D2C, 0x4BC1, [0xB4, 0x96, 0x6E, 0x2B, 0xC7, 0xA0, 0xBB, 0x38]}; -enum IID RESTYPE_ClusterQuorumDisk = {0xD9DDFB80, 0x0BDC, 0x40D4, [0xB3, 0x96, 0x1A, 0xFD, 0x77, 0xDD, 0xD1, 0x9C]}; -enum IID RESTYPE_GenericScript = {0xF372184D, 0xDFDB, 0x4370, [0xA0, 0x05, 0xE1, 0xEF, 0x30, 0x1B, 0x23, 0xA4]}; -enum IID RESTYPE_IPAddress = {0xE61ADE71, 0xC79A, 0x4FDA, [0xB1, 0xDB, 0xA9, 0xB8, 0xD2, 0x0C, 0x8B, 0x14]}; -enum IID RESTYPE_LocalQuorum = {0xF004656D, 0x5B48, 0x4580, [0xA1, 0xF4, 0xC3, 0xEC, 0x14, 0x98, 0x3D, 0x1E]}; -enum IID RESTYPE_MajorityNodeSet = {0x56BFAE11, 0xD2F7, 0x4F4F, [0x99, 0x52, 0x55, 0xAF, 0x19, 0xBA, 0xC3, 0xE9]}; -enum IID RESTYPE_NetworkName = {0xC1D2FE1E, 0xD332, 0x445F, [0x8D, 0xA1, 0x12, 0xE5, 0xE2, 0xD3, 0x7C, 0xBF]}; -enum IID RESTYPE_PhysicalDisk = {0xCC558763, 0x3386, 0x42EF, [0xB1, 0x50, 0xBE, 0x79, 0x33, 0x44, 0xD4, 0x5F]}; -enum IID SID_CtxQueryAssociations = {0xFAADFC40, 0xB777, 0x4B69, [0xAA, 0x81, 0x77, 0x03, 0x5E, 0xF0, 0xE6, 0xE8]}; -enum IID SID_SContainerDispatch = {0xB722BE00, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; -enum IID SID_SDataPathBrowser = {0xFC4801A5, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; -enum IID SID_SGetViewFromViewDual = {0x889A935D, 0x971E, 0x4B12, [0xB9, 0x0C, 0x24, 0xDF, 0xC9, 0xE1, 0xE5, 0xE8]}; -enum IID SID_SHTMLEditServices = {0x3050F7F9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; -enum IID SID_STopLevelBrowser = {0x4C96BE40, 0x915C, 0x11CF, [0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37]}; -enum IID SID_STopWindow = {0x49E1B500, 0x4636, 0x11D3, [0x97, 0xF7, 0x00, 0xC0, 0x4F, 0x45, 0xD0, 0xB3]}; -enum IID SID_SVersionHost = {0x371EA634, 0xDC5C, 0x11D1, [0xBA, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; -enum IID TAPIMEDIATYPE_Audio = {0x028ED8C2, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID TAPIMEDIATYPE_DataModem = {0x028ED8C6, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID TAPIMEDIATYPE_G3Fax = {0x028ED8C7, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID TAPIMEDIATYPE_Video = {0x028ED8C4, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID TAPIPROTOCOL_H323 = {0x831CE2D7, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID TAPIPROTOCOL_Multicast = {0x831CE2D8, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID TAPIPROTOCOL_PSTN = {0x831CE2D6, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; -enum IID TASK_AnalyzeCluster = {0x3140B5A6, 0x9AFA, 0x4588, [0x8C, 0xA0, 0x9B, 0xE8, 0xF8, 0xB6, 0x15, 0x06]}; -enum IID TASK_CommitClusterChanges = {0x2D03030B, 0xF084, 0x4807, [0xBB, 0xAC, 0x94, 0x26, 0x9E, 0x50, 0xB5, 0x6F]}; -enum IID TASKID_Major_Check_Cluster_Feasibili = {0xEBC8AEFF, 0x10C3, 0x4D5B, [0xAC, 0x17, 0xFC, 0x0F, 0x4C, 0x38, 0x71, 0xB7]}; -enum IID TASKID_Major_Check_Node_Feasibility = {0xCC5E57B1, 0x4520, 0x4672, [0xB4, 0xBA, 0xA2, 0x88, 0xEC, 0x42, 0x94, 0x6E]}; -enum IID TASKID_Major_Checking_For_Existing_Cl = {0xB8453B8F, 0x92FD, 0x4350, [0xA6, 0xD9, 0x55, 0x1F, 0xD0, 0x18, 0xB7, 0x91]}; -enum IID TASKID_Major_Client_And_Server_Log = {0xCD36919C, 0x9F31, 0x46B4, [0xA2, 0x9D, 0xAC, 0x87, 0xF4, 0xE6, 0xCC, 0x93]}; -enum IID TASKID_Major_Client_Log = {0x64ECA0EA, 0x9CB6, 0x4324, [0x97, 0x02, 0xDF, 0x15, 0xC6, 0x96, 0xC3, 0x0A]}; -enum IID TASKID_Major_Configure_Cluster_Servic = {0x7C5F0774, 0x1611, 0x42B5, [0xAF, 0x3C, 0x6E, 0x12, 0x4A, 0xC4, 0xD3, 0x6B]}; -enum IID TASKID_Major_Configure_Resource_Type = {0x6D47AF1F, 0x7F17, 0x4B80, [0x8F, 0xAB, 0x3A, 0x2D, 0x19, 0xB1, 0x23, 0x3D]}; -enum IID TASKID_Major_Configure_Resources = {0x411BCDEC, 0x69D3, 0x4485, [0x8D, 0x5D, 0xE1, 0x9E, 0xE7, 0x7A, 0x6D, 0xD4]}; -enum IID TASKID_Major_Establish_Connection = {0x93C32F99, 0x39CA, 0x4D38, [0x9D, 0x7F, 0x27, 0x07, 0xCA, 0x0E, 0xAF, 0x46]}; -enum IID TASKID_Major_Find_Devices = {0x036BF567, 0x2377, 0x4BB3, [0x8A, 0xE1, 0xE4, 0x10, 0x4E, 0x2E, 0xB3, 0xC5]}; -enum IID TASKID_Major_Reanalyze = {0xE25968DA, 0x9C7B, 0x42DB, [0xAD, 0xA9, 0xBC, 0x4E, 0x34, 0xF1, 0x7E, 0x6E]}; -enum IID TASKID_Major_Server_Log = {0x05AA0768, 0x5F49, 0x49CD, [0xAF, 0xDC, 0x96, 0xF9, 0xD5, 0x18, 0x02, 0xD4]}; -enum IID TASKID_Minor_Update_Progress = {0x2362D3DA, 0xA6A4, 0x4551, [0xB8, 0x46, 0x7B, 0xB3, 0xA1, 0x36, 0x5F, 0x56]}; -enum IID TID_D3DRMAnimation = {0x3D82AB4F, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMAnimationKey = {0x10DD46A8, 0x775B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMAnimationOptions = {0xE2BF56C0, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMAnimationSet = {0x3D82AB50, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMAppData = {0xE5745280, 0xB24F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; -enum IID TID_D3DRMBoolean = {0x537DA6A0, 0xCA37, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; -enum IID TID_D3DRMBoolean2d = {0x4885AE63, 0x78E8, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMCamera = {0x3D82AB51, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMColorRGB = {0xD3E16E81, 0x7835, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMColorRGBA = {0x35FF44E0, 0x6C7C, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMCoords2d = {0xF6F23F44, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMExternalVisual = {0x98116AA0, 0xBDBA, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; -enum IID TID_D3DRMFloatKeys = {0x10DD46A9, 0x775B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMFrame = {0x3D82AB46, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMFramePosition = {0xE2BF56C1, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMFrameRotation = {0xE2BF56C3, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMFrameTransformMatrix = {0xF6F23F41, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMFrameVelocity = {0xE2BF56C2, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMGuid = {0xA42790E0, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMIndexedColor = {0x1630B820, 0x7842, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMInfo = {0x2B957100, 0x9E9A, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMInlineData = {0x3A23EEA0, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMLight = {0x3D82AB4A, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMLightAttenuation = {0xA8A98BA0, 0xC5E5, 0x11CF, [0xB9, 0x41, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; -enum IID TID_D3DRMLightPenumbra = {0xAED22741, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; -enum IID TID_D3DRMLightRange = {0xAED22742, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; -enum IID TID_D3DRMLightUmbra = {0xAED22740, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; -enum IID TID_D3DRMMaterial = {0x3D82AB4D, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMMaterialAmbientColor = {0x01411840, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMaterialArray = {0x35FF44E1, 0x6C7C, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMaterialDiffuseColor = {0x01411841, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMaterialEmissiveColor = {0xD3E16E80, 0x7835, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMaterialPower = {0x01411843, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMaterialSpecularColor = {0x01411842, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMaterialWrap = {0x4885AE60, 0x78E8, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMatrix4x4 = {0xF6F23F45, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMesh = {0x3D82AB44, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMMeshFace = {0x3D82AB5F, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMMeshFaceWraps = {0xED1EC5C0, 0xC0A8, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; -enum IID TID_D3DRMMeshMaterialList = {0xF6F23F42, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMeshNormals = {0xF6F23F43, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMeshTextureCoords = {0xF6F23F40, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMMeshVertexColors = {0x1630B821, 0x7842, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMProgressiveMesh = {0x8A63C360, 0x997D, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; -enum IID TID_D3DRMPropertyBag = {0x7F0F21E1, 0xBFE1, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; -enum IID TID_D3DRMRightHanded = {0x7F5D5EA0, 0xD53A, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; -enum IID TID_D3DRMStringProperty = {0x7F0F21E0, 0xBFE1, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; -enum IID TID_D3DRMTextureFilename = {0xA42790E1, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMTextureReference = {0xA42790E2, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMTimedFloatKeys = {0xF406B180, 0x7B3B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; -enum IID TID_D3DRMUrl = {0x3A23EEA1, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_D3DRMVector = {0x3D82AB5E, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; -enum IID TID_DXFILEHeader = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID _DBBMKGUID = {0xF6304BB0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +const IID _DBCIDGUID = {0xFE284700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +const IID _GUID_NAMEONLY = {0xE8BF1170, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +const IID ARRAYID_PathProperties = {0x7ECBBA04, 0x2D97, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID BFID_GRAY_16 = {0xF9D6BC00, 0x449C, 0x11D0, [0x91, 0x8C, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +const IID BFID_GRAY_8 = {0xD93DE910, 0x449C, 0x11D0, [0x91, 0x8C, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +const IID BFID_MONOCHROME = {0xE436EB78, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +const IID BFID_RGB_24 = {0xE436EB7D, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +const IID BFID_RGB_32 = {0xE436EB7E, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +const IID BFID_RGB_4 = {0xE436EB79, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +const IID BFID_RGB_555 = {0xE436EB7C, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +const IID BFID_RGB_565 = {0xE436EB7B, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +const IID BFID_RGB_8 = {0xE436EB7A, 0x524F, 0x11CE, [0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +const IID BFID_RGBA_32 = {0x773C9AC0, 0x3274, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +const IID BHID_LinkTargetItem = {0x3981E228, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +const IID BHID_SFObject = {0x3981E224, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +const IID BHID_SFUIObject = {0x3981E225, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +const IID BHID_SFViewObject = {0x3981E226, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +const IID BHID_Storage = {0x3981E227, 0xF559, 0x11D3, [0x8E, 0x3A, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +const IID BHID_StorageEnum = {0x4621A4E3, 0xF0D6, 0x4773, [0x8A, 0x9C, 0x46, 0xE7, 0x7B, 0x17, 0x48, 0x40]}; +const IID BHID_Stream = {0x1CEBB3AB, 0x7C10, 0x499A, [0xA4, 0x17, 0x92, 0xCA, 0x16, 0xC4, 0xCB, 0x83]}; +const IID CATID_BrowsableShellExt = {0x00021490, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CATID_BrowseInPlace = {0x00021491, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CATID_ClusCfgCapabilities = {0x4653EEC4, 0x2788, 0x4EBD, [0xA8, 0x31, 0x7E, 0x0D, 0x9F, 0x82, 0xD6, 0xE7]}; +const IID CATID_ClusCfgMemberSetChangeListener = {0x8A43EAD4, 0x10F1, 0x440D, [0x8D, 0xAA, 0x1F, 0xE3, 0x8D, 0x16, 0x98, 0xCD]}; +const IID CATID_ClusCfgResourceTypes = {0x7C4CAE52, 0xCAC9, 0x499D, [0x82, 0xC6, 0xBC, 0x6A, 0x21, 0x77, 0xE5, 0x56]}; +const IID CATID_ClusCfgStartupListeners = {0xDF406DB4, 0x7872, 0x4A99, [0xBB, 0x3C, 0x14, 0xA9, 0xC3, 0x39, 0x33, 0xD1]}; +const IID CATID_CommBand = {0x00021494, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CATID_Control = {0x40FC6ED4, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +const IID CATID_DesignTimeUIActivatableControl = {0xF2BB56D1, 0xDB07, 0x11D1, [0xAA, 0x6B, 0x00, 0x60, 0x97, 0xDB, 0x95, 0x39]}; +const IID CATID_DeskBand = {0x00021492, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CATID_DocObject = {0x40FC6ED8, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +const IID CATID_EnumClusCfgManagedResources = {0x02A34F88, 0xD31A, 0x4688, [0xBD, 0xDD, 0x38, 0xA7, 0x39, 0xE4, 0xF8, 0x9B]}; +const IID CATID_InfoBand = {0x00021493, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CATID_Insertable = {0x40FC6ED3, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +const IID CATID_InternetAware = {0x0DE86A58, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID CATID_IsShortcut = {0x40FC6ED6, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +const IID CATID_MARSHALER = {0x00000003, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CATID_NeverShowExt = {0x40FC6ED7, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +const IID CATID_PersistsToFile = {0x0DE86A56, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID CATID_PersistsToMemory = {0x0DE86A55, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID CATID_PersistsToMoniker = {0x0DE86A51, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID CATID_PersistsToPropertyBag = {0x0DE86A57, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID CATID_PersistsToStorage = {0x0DE86A52, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID CATID_PersistsToStream = {0x0DE86A54, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID CATID_PersistsToStreamInit = {0x0DE86A53, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID CATID_Printable = {0x40FC6ED9, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +const IID CATID_Programmable = {0x40FC6ED5, 0x2438, 0x11CF, [0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02]}; +const IID CATID_RequiresDataPathHost = {0x0DE86A50, 0x2BAA, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID CATID_SafeForInitializing = {0x7DD95802, 0x9882, 0x11CF, [0x9F, 0xA9, 0x00, 0xAA, 0x00, 0x6C, 0x42, 0xC4]}; +const IID CATID_SafeForScripting = {0x7DD95801, 0x9882, 0x11CF, [0x9F, 0xA9, 0x00, 0xAA, 0x00, 0x6C, 0x42, 0xC4]}; +const IID CGID_DocHostCommandHandler = {0xF38BC242, 0xB950, 0x11D1, [0x89, 0x18, 0x00, 0xC0, 0x4F, 0xC2, 0xC8, 0x36]}; +const IID CGID_DownloadHost = {0xE0608728, 0xAE4C, 0x11D1, [0xBA, 0x40, 0x00, 0xC0, 0x4F, 0xB9, 0x2D, 0x79]}; +const IID CGID_Explorer = {0x000214D0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CGID_ExplorerBarDoc = {0x000214D3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CGID_InternetExplorer = {0xEB7EED00, 0xF74D, 0x11D2, [0xBB, 0x7F, 0x00, 0x10, 0x4B, 0x35, 0xE7, 0xF9]}; +const IID CGID_MSHTML = {0xDE4BA900, 0x59CA, 0x11CF, [0x95, 0x92, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID CGID_ShellDocView = {0x000214D1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CGID_ShellServiceObject = {0x000214D2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CGID_ShortCut = {0x93A68750, 0x951A, 0x11D1, [0x94, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; +const IID CLSID_1 = {0xD34F1813, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_2 = {0xD34F1814, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_3 = {0xD34F1815, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_4 = {0xD34F1816, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_5 = {0xD34F1817, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_6 = {0xD34F1818, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_7 = {0xD34F1819, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_8 = {0xD34F181A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_9 = {0xD34F181B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_a = {0xD34F181C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_AboutProtocol = {0x3050F406, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_AccessControlEntry = {0xB75AC000, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID CLSID_AccessControlList = {0xB85EA052, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID CLSID_AccountDiscovery = {0x3DAB30ED, 0x8132, 0x40BF, [0xA8, 0xBA, 0x7B, 0x50, 0x57, 0xF0, 0xCD, 0x10]}; +const IID CLSID_ACLCustomMRU = {0x6935DB93, 0x21E8, 0x4CCC, [0xBE, 0xB9, 0x9F, 0xE3, 0xC7, 0x7A, 0x29, 0x7A]}; +const IID CLSID_ACLHistory = {0x00BB2764, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +const IID CLSID_ACListISF = {0x03C036F1, 0xA186, 0x11D0, [0x82, 0x4A, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83]}; +const IID CLSID_ACLMRU = {0x6756A641, 0xDE71, 0x11D0, [0x83, 0x1B, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83]}; +const IID CLSID_ACLMulti = {0x00BB2765, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +const IID CLSID_ActiveDesktop = {0x75048700, 0xEF1F, 0x11D0, [0x98, 0x88, 0x00, 0x60, 0x97, 0xDE, 0xAC, 0xF9]}; +const IID CLSID_AdapterInfo = {0x6F9942C9, 0xC1B1, 0x4AB5, [0x93, 0xDA, 0x60, 0x58, 0x99, 0x1D, 0xC8, 0xF3]}; +const IID CLSID_AddrControl = {0x00000348, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_AddressBarParser = {0xE0E11A09, 0x5CB8, 0x4B6C, [0x83, 0x32, 0xE0, 0x07, 0x20, 0xA1, 0x68, 0xF2]}; +const IID CLSID_ADsDSOObject = {0x549365D0, 0xEC26, 0x11CF, [0x83, 0x10, 0x00, 0xAA, 0x00, 0xB5, 0x05, 0xDB]}; +const IID CLSID_ADsSecurityUtility = {0xF270C64A, 0xFFB8, 0x4AE4, [0x85, 0xFE, 0x3A, 0x75, 0xE5, 0x34, 0x79, 0x66]}; +const IID CLSID_ADSystemInfo = {0x50B6327F, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; +const IID CLSID_AlgSetup = {0x27D0BCCC, 0x344D, 0x4287, [0xAF, 0x37, 0x0C, 0x72, 0xC1, 0x61, 0xC1, 0x4C]}; +const IID CLSID_AllClasses = {0x00000330, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_AlphabeticalCategorizer = {0x3C2654C6, 0x7372, 0x4F6B, [0xB3, 0x10, 0x55, 0xD6, 0x12, 0x8F, 0x49, 0xD2]}; +const IID CLSID_AnchorClick = {0x13D5413C, 0x33B9, 0x11D2, [0x95, 0xA7, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; +const IID CLSID_AnimationComposerFactory = {0x332B2A56, 0xF86C, 0x47E7, [0x86, 0x02, 0xFC, 0x42, 0xAC, 0x8B, 0x99, 0x20]}; +const IID CLSID_AnimationComposerSiteFactory = {0x16911A65, 0xD41D, 0x4431, [0x87, 0xF7, 0xE7, 0x57, 0xF4, 0xD0, 0x3B, 0xD8]}; +const IID CLSID_ApplicationGatewayServices = {0xF8ADE1D3, 0x49DF, 0x4B75, [0x90, 0x05, 0xEF, 0x95, 0x08, 0xE6, 0xA3, 0x37]}; +const IID CLSID_AutoComplete = {0x00BB2763, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +const IID CLSID_AutoDiscoveryProvider = {0xC4F3D5BF, 0x4809, 0x44E3, [0x84, 0xA4, 0x36, 0x8B, 0x6B, 0x33, 0xB0, 0xB4]}; +const IID CLSID_AutoplayForSlideShow = {0x00E7B358, 0xF65B, 0x4DCF, [0x83, 0xDF, 0xCD, 0x02, 0x6B, 0x94, 0xBF, 0xD4]}; +const IID CLSID_b = {0xD34F181D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_BackgroundCopyManager = {0x4991D34B, 0x80A1, 0x4291, [0x83, 0xB6, 0x33, 0x28, 0x36, 0x6B, 0x90, 0x97]}; +const IID CLSID_BackgroundCopyManager1_5 = {0xF087771F, 0xD74F, 0x4C1A, [0xBB, 0x8A, 0xE1, 0x6A, 0xCA, 0x91, 0x24, 0xEA]}; +const IID CLSID_BackgroundCopyQMgr = {0x69AD4AEE, 0x51BE, 0x439B, [0xA9, 0x2C, 0x86, 0xAE, 0x49, 0x0E, 0x8B, 0x30]}; +const IID CLSID_BackLink = {0xFCBF906F, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_BasicImageEffects = {0x16B280C8, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID CLSID_BasicImageEffectsPP = {0x16B280C9, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID CLSID_BlockFormats = {0x3050F831, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_BridgeTerminal = {0x8EBAE7A3, 0x8943, 0x11D1, [0x96, 0xB8, 0x00, 0xC0, 0x4F, 0xB6, 0xE8, 0x66]}; +const IID CLSID_c = {0xD34F181E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_CAccPropServices = {0xB5F8350B, 0x0548, 0x48B1, [0xA6, 0xEE, 0x88, 0xBD, 0x00, 0xB4, 0xA5, 0xE7]}; +const IID CLSID_CActiveIMM = {0x4955DD33, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +const IID CLSID_CAnchorBrowsePropertyPage = {0x3050F3BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CaseIgnoreList = {0x15F88A55, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_CCheckBox = {0x3050F686, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CColorPropPage = {0x0BE35201, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +const IID CLSID_CCombobox = {0x3050F678, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CDBurn = {0xFBEB8A05, 0xBEEE, 0x4442, [0x80, 0x4E, 0x40, 0x9D, 0x6C, 0x45, 0x15, 0xE9]}; +const IID CLSID_CDebugDocumentHelper = {0x83B8BCA6, 0x687C, 0x11D0, [0xA4, 0x05, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; +const IID CLSID_CDeviceRect = {0x3050F6D4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CDirect3DRM = {0x4516EC41, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID CLSID_CDirect3DRMAnimation = {0x4FA35698, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMAnimationSet = {0x4FA35699, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMClippedVisual = {0x5434E72D, 0x6D66, 0x11D1, [0xBB, 0x0B, 0x00, 0x00, 0xF8, 0x75, 0x86, 0x5A]}; +const IID CLSID_CDirect3DRMDevice = {0x4FA3568E, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMFace = {0x4FA35693, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMFrame = {0x4FA35690, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMFrameInterpolator = {0x0DE9EAA2, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID CLSID_CDirect3DRMLight = {0x4FA35694, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMLightInterpolator = {0x0DE9EAA6, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID CLSID_CDirect3DRMMaterial = {0x4FA35697, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMMaterialInterpolato = {0x0DE9EAA7, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID CLSID_CDirect3DRMMesh = {0x4FA35691, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMMeshBuilder = {0x4FA35692, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMMeshInterpolator = {0x0DE9EAA3, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID CLSID_CDirect3DRMProgressiveMesh = {0x4516EC40, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID CLSID_CDirect3DRMShadow = {0x4FA3569B, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMTexture = {0x4FA35695, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMTextureInterpolator = {0x0DE9EAA8, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID CLSID_CDirect3DRMUserVisual = {0x4FA3569A, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMViewport = {0x4FA3568F, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirect3DRMViewportInterpolato = {0x0DE9EAA1, 0x3B84, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID CLSID_CDirect3DRMWrap = {0x4FA35696, 0x623F, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID CLSID_CDirectXFile = {0x4516EC43, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID CLSID_CDLAgent = {0x7D559C10, 0x9FE9, 0x11D0, [0x93, 0xF7, 0x00, 0xAA, 0x00, 0x59, 0xCE, 0x02]}; +const IID CLSID_CdlProtocol = {0x3DD53D40, 0x7B8B, 0x11D0, [0xB0, 0x13, 0x00, 0xAA, 0x00, 0x59, 0xCE, 0x02]}; +const IID CLSID_CDocBrowsePropertyPage = {0x3050F3B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CDownloadBehavior = {0x3050F5BE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CEnroll = {0x43F8F289, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; +const IID CLSID_CEventObj = {0x3050F48A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CFontPropPage = {0x0BE35200, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +const IID CLSID_CFSIconOverlayManager = {0x63B51F81, 0xC868, 0x11D0, [0x99, 0x9C, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; +const IID CLSID_ChannelAgent = {0xE3A8BDE6, 0xABCE, 0x11D0, [0xBC, 0x4B, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +const IID CLSID_ChannelMgr = {0xB3CDAE90, 0xD170, 0x11D0, [0x80, 0x2B, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; +const IID CLSID_CHeaderFooter = {0x3050F6CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CHtmlArea = {0x3050F64F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CIEOptionElement = {0x3050F698, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CIESelectElement = {0x3050F688, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CImageBrowsePropertyPage = {0x3050F3B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_ClassInstallFilter = {0x32B533BB, 0xEDAE, 0x11D0, [0xBD, 0x5A, 0x00, 0xAA, 0x00, 0xB9, 0x2A, 0xF1]}; +const IID CLSID_CLayoutRect = {0x3050F664, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_ClientCaps = {0x7E8BC44E, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +const IID CLSID_ClusAppWiz = {0x24F97150, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; +const IID CLSID_ClusCfgAsyncEvictCleanup = {0x08F35A72, 0xD7C4, 0x42F4, [0xBC, 0x81, 0x51, 0x88, 0xE1, 0x9D, 0xFA, 0x39]}; +const IID CLSID_ClusCfgEvictCleanup = {0x32152BE9, 0xDE8C, 0x4D0F, [0x81, 0xB0, 0xBC, 0xE5, 0xD1, 0x1E, 0xCB, 0x00]}; +const IID CLSID_ClusCfgResTypeGenScript = {0xD513C4F4, 0x1D34, 0x44A3, [0x83, 0xD4, 0x81, 0x26, 0x51, 0xDB, 0x89, 0x18]}; +const IID CLSID_ClusCfgResTypeMajorityNodeSet = {0xB6870B44, 0x0BDF, 0x4B46, [0xAC, 0x1F, 0x6C, 0x69, 0x1B, 0x62, 0x2E, 0xDF]}; +const IID CLSID_ClusCfgResTypeServices = {0x6A370489, 0xBB52, 0x4727, [0xB7, 0x40, 0x08, 0xF4, 0x94, 0x16, 0x34, 0x78]}; +const IID CLSID_ClusCfgStartupNotify = {0x105EEEB6, 0x32FD, 0x4EA9, [0x89, 0x12, 0x84, 0x3A, 0x7F, 0xF3, 0xCA, 0x2D]}; +const IID CLSID_ClusCfgWizard = {0x1919C4FE, 0x6F46, 0x4027, [0x97, 0x7D, 0x0E, 0xF1, 0xC8, 0xF2, 0x63, 0x72]}; +const IID CLSID_ClusterConfigurationType = {0xBF3768C2, 0xE0E5, 0x448F, [0x95, 0x2B, 0x25, 0xD4, 0x33, 0x2D, 0xEF, 0xA3]}; +const IID CLSID_CMimeTypes = {0x3050F3FE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CMLangConvertCharset = {0xD66D6F99, 0xCDAA, 0x11D0, [0xB8, 0x22, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; +const IID CLSID_CMLangString = {0xC04D65CF, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +const IID CLSID_CMultiLanguage = {0x275C23E2, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; +const IID CLSID_CNetCfg = {0x5B035261, 0x40F9, 0x11D1, [0xAA, 0xEC, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID CLSID_CoDitherToRGB8 = {0xA860CE50, 0x3910, 0x11D0, [0x86, 0xFC, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; +const IID CLSID_CoMapMIMEToCLSID = {0x30C3B080, 0x30FB, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +const IID CLSID_ComBinding = {0x00000328, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_CommonQuery = {0x83BC5EC0, 0x6F2A, 0x11D0, [0xA1, 0xC4, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +const IID CLSID_CompositePP = {0x25B33660, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; +const IID CLSID_ConnectionCommonUi = {0x7007ACD1, 0x3202, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID CLSID_ConnectionManager = {0xBA126AD1, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID CLSID_ConnectionManager2 = {0xBA126AE5, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID CLSID_ControlPanel = {0x21EC2020, 0x3AEA, 0x1069, [0xA2, 0xDD, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; +const IID CLSID_ConvertVBX = {0xFB8F0822, 0x0164, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; +const IID CLSID_ConvolvePP = {0x25B33661, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; +const IID CLSID_COpsProfile = {0x3050F402, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CoSniffStream = {0x6A01FDA0, 0x30DF, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +const IID CLSID_CPersistDataPeer = {0x3050F487, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CPersistHistory = {0x3050F4C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CPersistShortcut = {0x3050F4C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CPersistSnapshot = {0x3050F4C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CPersistUserData = {0x3050F48E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CPicturePropPage = {0x0BE35202, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +const IID CLSID_CPlugins = {0x3050F3FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CRadioButton = {0x3050F69C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CrBarn = {0xC3BDF740, 0x0B58, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrBarnPP = {0xFCAD7436, 0xF151, 0x4110, [0xB9, 0x7E, 0x32, 0xBD, 0x60, 0x7F, 0xBD, 0xB8]}; +const IID CLSID_CrBlindPP = {0x213052C1, 0x100D, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +const IID CLSID_CrBlinds = {0x00C429C0, 0x0BA9, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrBlur = {0x7312498D, 0xE87A, 0x11D1, [0x81, 0xE0, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID CLSID_CrBlurPP = {0x623E287E, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +const IID CLSID_CrEmboss = {0xF515306D, 0x0156, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID CLSID_CrEngrave = {0xF515306E, 0x0156, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID CLSID_CrInset = {0x93073C40, 0x0BA5, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrIris = {0x3F69F351, 0x0379, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrIrisPP = {0x80DE22C4, 0x0F44, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +const IID CLSID_CrRadialWipe = {0x424B71AF, 0x0695, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrRadialWipePP = {0x33D932E0, 0x0F48, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +const IID CLSID_CrSlide = {0x810E402F, 0x056B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrSlidePP = {0xCC8CEDE1, 0x1003, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +const IID CLSID_CrSpiral = {0xACA97E00, 0x0C7D, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrSpiralPP = {0xC6A4FE81, 0x1022, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +const IID CLSID_CrStretch = {0x7658F2A2, 0x0A83, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrStretchPP = {0x15FB95E0, 0x0F77, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +const IID CLSID_CrWheel = {0x5AE1DAE0, 0x1461, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrWheelPP = {0xFA9F6180, 0x1464, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrZigzag = {0xE6E73D20, 0x0C8A, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_CrZigzagPP = {0x1559A3C1, 0x102B, 0x11D2, [0x8B, 0x82, 0x00, 0xA0, 0xC9, 0x3C, 0x09, 0xB2]}; +const IID CLSID_CScriptErrorList = {0xEFD01300, 0x160F, 0x11D2, [0xBB, 0x2E, 0x00, 0x80, 0x5F, 0xF7, 0xEF, 0xCA]}; +const IID CLSID_CScrollBar = {0x3050F68A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CSliderBar = {0x3050F68E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CSpinButton = {0x3050F68C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CTemplatePrinter = {0x3050F6B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_CUrlHistory = {0x3C374A40, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; +const IID CLSID_CURLSearchHook = {0xCFBFAE00, 0x17A6, 0x11D0, [0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97]}; +const IID CLSID_CurrentUserClasses = {0x00000332, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_CUtilityButton = {0x3050F6B0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_d = {0xD34F181F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_DAArray = {0x9CDE7340, 0x3C20, 0x11D0, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +const IID CLSID_DABbox2 = {0x50B4791E, 0x4731, 0x11D0, [0x89, 0x12, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +const IID CLSID_DABbox3 = {0x4A933703, 0xE36F, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID CLSID_DABehavior = {0xC46C1BF2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DABoolean = {0x25B0F91D, 0xD23D, 0x11D0, [0x9B, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID CLSID_DACamera = {0xC46C1BD9, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAColor = {0xC46C1BC9, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DADashStyle = {0x9CADDC0C, 0xAD56, 0x11D1, [0x9F, 0xF8, 0x00, 0xC0, 0x4F, 0xA3, 0x21, 0x95]}; +const IID CLSID_DAEndStyle = {0xFC54BEAB, 0x5B12, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +const IID CLSID_DAEvent = {0x3E2487C4, 0x8709, 0x11D0, [0xB1, 0x77, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +const IID CLSID_DAFontStyle = {0x3F3DA01A, 0x4705, 0x11D0, [0x87, 0x10, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +const IID CLSID_DAGeometry = {0xC46C1BDB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAImage = {0xC46C1BCB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAImportationResult = {0x283807B3, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +const IID CLSID_DAJoinStyle = {0xFC54BEAA, 0x5B12, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +const IID CLSID_DALineStyle = {0x283807B8, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +const IID CLSID_DAMatte = {0xC46C1BC3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAMicrophone = {0xC46C1BE3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAMontage = {0xC46C1BD7, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DANumber = {0xC46C1BC7, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAPair = {0xBC0BFD34, 0xD21D, 0x11D0, [0x93, 0x85, 0x00, 0xC0, 0x4F, 0xB6, 0xBD, 0x36]}; +const IID CLSID_DAPath2 = {0xC46C1BCF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAPickableResult = {0x34F681D0, 0x3640, 0x11CF, [0x92, 0x94, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; +const IID CLSID_DAPoint2 = {0xC46C1BD5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAPoint3 = {0xC46C1BE5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DarwinAppPublisher = {0xCFCCC7A0, 0xA282, 0x11D1, [0x90, 0x82, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; +const IID CLSID_DASound = {0xC46C1BD1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAStatics = {0xC46C1BF3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAString = {0xC46C1BD3, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DataChannel = {0xBBB36F15, 0x408D, 0x4056, [0x8C, 0x27, 0x92, 0x08, 0x43, 0xD4, 0x0B, 0xE5]}; +const IID CLSID_DATransform2 = {0xC46C1BDF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DATransform3 = {0xC46C1BC5, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DATuple = {0x283807B7, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +const IID CLSID_DAUserData = {0x283807B4, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +const IID CLSID_DAVector2 = {0xC46C1BE1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAVector3 = {0xC46C1BC0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAView = {0x960D8EFF, 0xE494, 0x11D1, [0xAB, 0x75, 0x00, 0xC0, 0x4F, 0xD9, 0x2B, 0x6B]}; +const IID CLSID_DAViewerControl = {0xC46C1BEB, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DAViewerControlWindowed = {0xC46C1BF1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID CLSID_DCOMAccessControl = {0x0000031D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_DebugHelper = {0x0BFCC060, 0x8C1D, 0x11D0, [0xAC, 0xCD, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; +const IID CLSID_DeCompMimeFilter = {0x8F6B0360, 0xB80D, 0x11D0, [0xA9, 0xB3, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; +const IID CLSID_DefaultDebugSessionProvider = {0x834128A2, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID CLSID_DirectDraw = {0xD7B70EE0, 0x4340, 0x11CF, [0xB0, 0x63, 0x00, 0x20, 0xAF, 0xC2, 0xCD, 0x35]}; +const IID CLSID_DirectDrawClipper = {0x593817A0, 0x7DB3, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +const IID CLSID_DirectDrawFactory2 = {0xB9DC4790, 0x4AF1, 0x11D1, [0x8C, 0x4C, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +const IID CLSID_DirectInput = {0x25E609E0, 0xB259, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID CLSID_DirectInputDevice = {0x25E609E1, 0xB259, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID CLSID_DirectMusic = {0x636B9F10, 0x0C7D, 0x11D1, [0x95, 0xB2, 0x00, 0x20, 0xAF, 0xDC, 0x74, 0x21]}; +const IID CLSID_DirectMusicBand = {0x79BA9E00, 0xB6EE, 0x11D1, [0x86, 0xBE, 0x00, 0xC0, 0x4F, 0xBF, 0x8F, 0xEF]}; +const IID CLSID_DirectMusicBandTrack = {0xD2AC2894, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicChordMap = {0xD2AC288F, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicChordMapTrack = {0xD2AC2896, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicChordTrack = {0xD2AC288B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicCollection = {0x480FF4B0, 0x28B2, 0x11D1, [0xBE, 0xF7, 0x00, 0xC0, 0x4F, 0xBF, 0x8F, 0xEF]}; +const IID CLSID_DirectMusicCommandTrack = {0xD2AC288C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicComposer = {0xD2AC2890, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicGraph = {0xD2AC2884, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicLoader = {0xD2AC2892, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicMotifTrack = {0xD2AC288E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicMuteTrack = {0xD2AC2898, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicPerformance = {0xD2AC2881, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicSegment = {0xD2AC2882, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicSegmentState = {0xD2AC2883, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicSeqTrack = {0xD2AC2886, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicSignPostTrack = {0xF17E8672, 0xC3B4, 0x11D1, [0x87, 0x0B, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicStyle = {0xD2AC288A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicStyleTrack = {0xD2AC288D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicSynth = {0x58C2B4D0, 0x46E7, 0x11D1, [0x89, 0xAC, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +const IID CLSID_DirectMusicSysExTrack = {0xD2AC2887, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicTempoTrack = {0xD2AC2885, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectMusicTimeSigTrack = {0xD2AC2888, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID CLSID_DirectPlay = {0xD1EB6D20, 0x8923, 0x11D0, [0x9D, 0x97, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; +const IID CLSID_DirectPlayLobby = {0x2FE8F810, 0xB2A5, 0x11D0, [0xA7, 0x87, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +const IID CLSID_DirectSound = {0x47D4D946, 0x62E8, 0x11CF, [0x93, 0xBC, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID CLSID_DirectSoundCapture = {0xB0210780, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; +const IID CLSID_DispatchMapper = {0xE9225296, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID CLSID_DNWithBinary = {0x7E99C0A3, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; +const IID CLSID_DNWithString = {0x334857CC, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; +const IID CLSID_DocFileColumnProvider = {0x24F14F01, 0x7B1C, 0x11D1, [0x83, 0x8F, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; +const IID CLSID_DocHostUIHandler = {0x7057E952, 0xBD1B, 0x11D1, [0x89, 0x19, 0x00, 0xC0, 0x4F, 0xC2, 0xC8, 0x36]}; +const IID CLSID_DOMChildrenCollection = {0x3050F5AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_DOMDocument = {0x2933BF90, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID CLSID_DOMFreeThreadedDocument = {0x2933BF91, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID CLSID_DragDropHelper = {0x4657278A, 0x411B, 0x11D2, [0x83, 0x9A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; +const IID CLSID_DriveSizeCategorizer = {0x94357B53, 0xCA29, 0x4B78, [0x83, 0xAE, 0xE8, 0xFE, 0x74, 0x09, 0x13, 0x4F]}; +const IID CLSID_DriveTypeCategorizer = {0xB0A8F3CF, 0x4333, 0x4BAB, [0x88, 0x73, 0x1C, 0xCB, 0x1C, 0xAD, 0xA4, 0x8B]}; +const IID CLSID_DsDisplaySpecifier = {0x1AB4A8C0, 0x6A0B, 0x11D2, [0xAD, 0x49, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; +const IID CLSID_DsDomainTreeBrowser = {0x1698790A, 0xE2B4, 0x11D0, [0xB0, 0xB1, 0x00, 0xC0, 0x4F, 0xD8, 0xDC, 0xA6]}; +const IID CLSID_DsFindAdvanced = {0x83EE3FE3, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; +const IID CLSID_DsFindComputer = {0x16006700, 0x87AD, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +const IID CLSID_DsFindContainer = {0xC1B3CBF2, 0x886A, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +const IID CLSID_DsFindDomainController = {0x538C7B7E, 0xD25E, 0x11D0, [0x97, 0x42, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; +const IID CLSID_DsFindFrsMembers = {0x94CE4B18, 0xB3D3, 0x11D1, [0xB9, 0xB4, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xB0]}; +const IID CLSID_DsFindObjects = {0x83EE3FE1, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; +const IID CLSID_DsFindPeople = {0x83EE3FE2, 0x57D9, 0x11D0, [0xB9, 0x32, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; +const IID CLSID_DsFindPrinter = {0xB577F070, 0x7EE2, 0x11D0, [0x91, 0x3F, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +const IID CLSID_DsFindVolume = {0xC1B3CBF1, 0x886A, 0x11D0, [0x91, 0x40, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +const IID CLSID_DsFolderProperties = {0x9E51E0D0, 0x6E0F, 0x11D2, [0x96, 0x01, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; +const IID CLSID_DsPropertyPages = {0x0D45D530, 0x764B, 0x11D0, [0xA1, 0xCA, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +const IID CLSID_DsQuery = {0x8A23E65E, 0x31C2, 0x11D0, [0x89, 0x1C, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; +const IID CLSID_DWbemClassObject = {0x64AB3751, 0x12BC, 0x11D1, [0x9E, 0x61, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID CLSID_DWbemContext = {0x752FF212, 0xF7B7, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID CLSID_DWbemLocator = {0xCB7CA032, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID CLSID_DX2D = {0x473AA80B, 0x4577, 0x11D1, [0x81, 0xA8, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID CLSID_DXFade = {0x16B280C5, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID CLSID_DXGradient = {0xC6365470, 0xF667, 0x11D1, [0x90, 0x67, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID CLSID_DXLUTBuilder = {0x1E54333B, 0x2A00, 0x11D1, [0x81, 0x98, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID CLSID_DXRasterizer = {0x8652CE55, 0x9E80, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID CLSID_DXSurface = {0x0E890F83, 0x5F79, 0x11D1, [0x90, 0x43, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID CLSID_DXSurfaceModifier = {0x3E669F1D, 0x9C23, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID CLSID_DXTAlpha = {0xADC6CB82, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID CLSID_DXTAlphaImageLoader = {0x0C7EFBDE, 0x0303, 0x4C6F, [0xA4, 0xF7, 0x31, 0xFA, 0x2B, 0xE5, 0xE3, 0x97]}; +const IID CLSID_DXTAlphaImageLoaderPP = {0x8C80CE2D, 0x850D, 0x47DA, [0x8E, 0xCD, 0x55, 0x02, 0x35, 0x62, 0xD1, 0x67]}; +const IID CLSID_DXTAlphaPP = {0xD687A7E0, 0x4BA4, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +const IID CLSID_DXTaskManager = {0x4CB26C03, 0xFF93, 0x11D0, [0x81, 0x7E, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID CLSID_DXTBarn = {0xEC9BA17D, 0x60B5, 0x462B, [0xA6, 0xD8, 0x14, 0xB8, 0x90, 0x57, 0xE2, 0x2A]}; +const IID CLSID_DXTBlinds = {0x9A4A4A51, 0xFB3A, 0x4F4B, [0x9B, 0x57, 0xA2, 0x91, 0x2A, 0x28, 0x97, 0x69]}; +const IID CLSID_DXTCheckerBoard = {0xB3EE7802, 0x8224, 0x4787, [0xA1, 0xEA, 0xF0, 0xDE, 0x16, 0xDE, 0xAB, 0xD3]}; +const IID CLSID_DXTCheckerBoardPP = {0xCBF47525, 0x98D2, 0x45EA, [0xB8, 0x43, 0xFD, 0x21, 0x3D, 0x93, 0x2B, 0x10]}; +const IID CLSID_DXTChroma = {0x421516C1, 0x3CF8, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID CLSID_DXTChromaPP = {0xEC7E0760, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +const IID CLSID_DXTComposite = {0x9A43A844, 0x0831, 0x11D1, [0x81, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID CLSID_DXTConvolution = {0x2BC0EF29, 0xE6BA, 0x11D1, [0x81, 0xDD, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID CLSID_DXTDropShadow = {0xADC6CB86, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID CLSID_DXTDropShadowPP = {0xEC7E0761, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +const IID CLSID_DXTFilter = {0x385A91BC, 0x1E8A, 0x4E4A, [0xA7, 0xA6, 0xF4, 0xFC, 0x1E, 0x6C, 0xA1, 0xBD]}; +const IID CLSID_DXTFilterBehavior = {0x649EEC1E, 0xB579, 0x4E8C, [0xBB, 0x3B, 0x49, 0x97, 0xF8, 0x42, 0x65, 0x36]}; +const IID CLSID_DXTFilterCollection = {0xA7EE7F34, 0x3BD1, 0x427F, [0x92, 0x31, 0xF9, 0x41, 0xE9, 0xB7, 0xE1, 0xFE]}; +const IID CLSID_DXTFilterFactory = {0x81397204, 0xF51A, 0x4571, [0x8D, 0x7B, 0xDC, 0x03, 0x05, 0x21, 0xAA, 0xBD]}; +const IID CLSID_DXTGlow = {0x9F8E6421, 0x3D9B, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID CLSID_DXTGlowPP = {0xEC7E0764, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +const IID CLSID_DXTGradientD = {0x623E2882, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +const IID CLSID_DXTGradientWipe = {0xB96F67A2, 0x30C2, 0x47E8, [0xBD, 0x85, 0x70, 0xA2, 0xC9, 0x48, 0xB5, 0x0F]}; +const IID CLSID_DXTICMFilter = {0xA1BFB370, 0x5A9F, 0x4429, [0xBB, 0x72, 0xB1, 0x3E, 0x2F, 0xEA, 0xED, 0xEF]}; +const IID CLSID_DXTICMFilterPP = {0x1958FB12, 0x31E6, 0x47E5, [0xAA, 0x49, 0xB2, 0x3D, 0x12, 0xC8, 0x53, 0xE6]}; +const IID CLSID_DXTInset = {0x76F363F2, 0x7E9F, 0x4ED7, [0xA6, 0xA7, 0xEE, 0x30, 0x35, 0x1B, 0x66, 0x28]}; +const IID CLSID_DXTIris = {0x049F2CE6, 0xD996, 0x4721, [0x89, 0x7A, 0xDB, 0x15, 0xCE, 0x9E, 0xB7, 0x3D]}; +const IID CLSID_DXTLabel = {0x54702535, 0x2606, 0x11D1, [0x99, 0x9C, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +const IID CLSID_DXTLight = {0xF9EFBEC2, 0x4302, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID CLSID_DXTLightPP = {0x694AF25F, 0x124D, 0x11D3, [0x91, 0xD5, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID CLSID_DXTMaskFilter = {0x3A04D93B, 0x1EDD, 0x4F3F, [0xA3, 0x75, 0xA0, 0x3E, 0xC1, 0x95, 0x72, 0xC4]}; +const IID CLSID_DXTMatrix = {0x4ABF5A06, 0x5568, 0x4834, [0xBE, 0xE3, 0x32, 0x7A, 0x6D, 0x95, 0xA6, 0x85]}; +const IID CLSID_DXTMatrixPP = {0xC591103A, 0xB3A8, 0x4D47, [0xA3, 0xF7, 0x2A, 0xEE, 0xE4, 0xB8, 0x01, 0x3F]}; +const IID CLSID_DXTMetaBurnFilm = {0x107045D1, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaCenterPeel = {0xAA0D4D0C, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID CLSID_DXTMetaColorFade = {0x2A54C908, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaFlowMotion = {0x2A54C90B, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaGriddler = {0x2A54C911, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaGriddler2 = {0x2A54C913, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaJaws = {0x2A54C904, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaLightWipe = {0x107045C8, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaLiquid = {0xAA0D4D0A, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID CLSID_DXTMetaPageTurn = {0xAA0D4D08, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID CLSID_DXTMetaPeelPiece = {0xAA0D4D10, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID CLSID_DXTMetaPeelSmall = {0xAA0D4D0E, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID CLSID_DXTMetaPeelSplit = {0xAA0D4D12, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID CLSID_DXTMetaRadialScaleWipe = {0x107045CA, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaRipple = {0xAA0D4D03, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID CLSID_DXTMetaRoll = {0x9C61F46E, 0x0530, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID CLSID_DXTMetaThreshold = {0x2A54C915, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaTwister = {0x107045CF, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaVacuum = {0x2A54C90D, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaWater = {0x107045C5, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaWhiteOut = {0x107045CC, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID CLSID_DXTMetaWormHole = {0x0E6AE022, 0x0C83, 0x11D2, [0x8C, 0xD4, 0x00, 0x10, 0x4B, 0xC7, 0x5D, 0x9A]}; +const IID CLSID_DXTMotionBlur = {0xDD13DE77, 0xD3BA, 0x42D4, [0xB5, 0xC6, 0x77, 0x45, 0xFA, 0x4E, 0x2D, 0x4B]}; +const IID CLSID_DXTMotionBlurPP = {0x926433E1, 0x7F8F, 0x4BC6, [0xBE, 0xC4, 0x8C, 0x12, 0x6C, 0x6B, 0x7D, 0xC4]}; +const IID CLSID_DXTRadialWipe = {0x164484A9, 0x35D9, 0x4FB7, [0x9F, 0xAB, 0x48, 0x27, 0x3B, 0x96, 0xAA, 0x1D]}; +const IID CLSID_DXTRandomBars = {0x2E7700B7, 0x27C4, 0x437F, [0x9F, 0xBF, 0x1E, 0x8B, 0xE2, 0x81, 0x75, 0x66]}; +const IID CLSID_DXTRandomBarsPP = {0xE3E6AE11, 0x7FDC, 0x40C4, [0xAF, 0xBF, 0x1D, 0xCE, 0xA8, 0x28, 0x62, 0xCC]}; +const IID CLSID_DXTRandomDissolve = {0xF7F4A1B6, 0x8E87, 0x452F, [0xA2, 0xD7, 0x30, 0x77, 0xF5, 0x08, 0xDB, 0xC0]}; +const IID CLSID_DXTransformFactory = {0xD1FE6762, 0xFC48, 0x11D0, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; +const IID CLSID_DXTRedirect = {0x42B07B28, 0x2280, 0x4937, [0xB0, 0x35, 0x02, 0x93, 0xFB, 0x81, 0x27, 0x81]}; +const IID CLSID_DXTRevealTrans = {0xE31E87C4, 0x86EA, 0x4940, [0x9B, 0x8A, 0x5B, 0xD5, 0xD1, 0x79, 0xA7, 0x37]}; +const IID CLSID_DXTScale = {0x555278E2, 0x05DB, 0x11D1, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; +const IID CLSID_DXTShadow = {0xE71B4063, 0x3E59, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID CLSID_DXTShadowPP = {0xEC7E0765, 0x4C76, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +const IID CLSID_DXTSlide = {0xD1C5A1E7, 0xCC47, 0x4E32, [0xBD, 0xD2, 0x4B, 0x3C, 0x5F, 0xC5, 0x0A, 0xF5]}; +const IID CLSID_DXTSpiral = {0x4A03DCB9, 0x6E17, 0x4A39, [0x88, 0x45, 0x4E, 0xE7, 0xDC, 0x53, 0x31, 0xA5]}; +const IID CLSID_DXTStretch = {0xF088DE73, 0xBDD0, 0x4E3C, [0x81, 0xF8, 0x6D, 0x32, 0xF4, 0xFE, 0x9D, 0x28]}; +const IID CLSID_DXTStrips = {0x63A4B1FC, 0x259A, 0x4A5B, [0x81, 0x29, 0xA8, 0x3B, 0x8C, 0x9E, 0x6F, 0x4F]}; +const IID CLSID_DXTStripsPP = {0xFEC0B7EE, 0x7AEC, 0x4067, [0x9E, 0xE1, 0xFA, 0xCF, 0xB7, 0xCE, 0x9A, 0xF9]}; +const IID CLSID_DXTWave = {0xADC6CB88, 0x424C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID CLSID_DXTWavePP = {0xF12456C0, 0x4C9E, 0x11D2, [0x8A, 0xDE, 0x00, 0xA0, 0xC9, 0x8E, 0x65, 0x27]}; +const IID CLSID_DXTWipe = {0xAF279B30, 0x86EB, 0x11D1, [0x81, 0xBF, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID CLSID_DXTWipePP = {0x7FFE4D08, 0xFBFD, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +const IID CLSID_DXTZigzag = {0x23E26328, 0x3928, 0x40F2, [0x95, 0xE5, 0x93, 0xCA, 0xD6, 0x90, 0x16, 0xEB]}; +const IID CLSID_EAPOLManager = {0xBA126AE4, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID CLSID_Email = {0x8F92A857, 0x478E, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_EnumAdapterInfo = {0x6F9942CA, 0xC1B1, 0x4AB5, [0x93, 0xDA, 0x60, 0x58, 0x99, 0x1D, 0xC8, 0xF3]}; +const IID CLSID_EVENTQUEUE = {0x6E0FF466, 0x339E, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; +const IID CLSID_EXTENDEDERRORINFO = {0xC8B522CF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID CLSID_FadePP = {0x16B280C6, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID CLSID_FaxNumber = {0xA5062215, 0x4681, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_FilePlaybackTerminal = {0x0CB9914C, 0x79CD, 0x47DC, [0xAD, 0xB0, 0x32, 0x7F, 0x47, 0xCE, 0xFB, 0x20]}; +const IID CLSID_FileProtocol = {0x79EAC9E7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_FileRecordingTerminal = {0x521F3D06, 0xC3D0, 0x4511, [0x86, 0x17, 0x86, 0xB9, 0xA7, 0x83, 0xDA, 0x77]}; +const IID CLSID_FileRecordingTrack = {0xBF14A2E4, 0xE88B, 0x4EF5, [0x97, 0x40, 0x5A, 0xC5, 0xD0, 0x22, 0xF8, 0xC9]}; +const IID CLSID_FileSearchBand = {0xC4EE31F3, 0x4768, 0x11D2, [0xBE, 0x5C, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; +const IID CLSID_FileSysColumnProvider = {0x0D2E74C4, 0x3C34, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; +const IID CLSID_FileTerminal = {0xAAF578F1, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID CLSID_FolderShortcut = {0x0AFACED1, 0xE828, 0x11D1, [0x91, 0x87, 0xB5, 0x32, 0xF1, 0xE9, 0x57, 0x5D]}; +const IID CLSID_FolderViewHost = {0x20B1CB23, 0x6968, 0x4EB9, [0xB7, 0xD4, 0xA6, 0x6D, 0x00, 0xD0, 0x7C, 0xEE]}; +const IID CLSID_FontNames = {0x3050F83A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_FramesCollection = {0x3050F7F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_FreeSpaceCategorizer = {0xB5607793, 0x24AC, 0x44C7, [0x82, 0xE2, 0x83, 0x17, 0x26, 0xAA, 0x6C, 0xB7]}; +const IID CLSID_FtpProtocol = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_GblComponentCategoriesMgr = {0x0002E006, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_GLOBAL_BROADCAST = {0xD34F1810, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_GopherProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_GradientPP = {0x623E2880, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +const IID CLSID_HandsetTerminal = {0xAAF578EB, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID CLSID_HeadsetTerminal = {0xAAF578ED, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID CLSID_HNetCfgMgr = {0x46C166AA, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID CLSID_Hold = {0xB3AD3E13, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_HomeNetAutoConfigService = {0x9A8EA3B5, 0x572E, 0x4CB3, [0x9E, 0xB9, 0xEC, 0x68, 0x9A, 0xC5, 0x75, 0xAE]}; +const IID CLSID_HomePage = {0x766BF2AE, 0xD650, 0x11D1, [0x98, 0x11, 0x00, 0xC0, 0x4F, 0xC3, 0x1D, 0x2E]}; +const IID CLSID_HostDialogHelper = {0x429AF92C, 0xA51F, 0x11D2, [0x86, 0x1E, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; +const IID CLSID_HTADocument = {0x3050F5C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTCAttachBehavior = {0x3050F5F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTCDefaultDispatch = {0x3050F4FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTCDescBehavior = {0x3050F5DD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTCEventBehavior = {0x3050F4FE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTCMethodBehavior = {0x3050F630, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTCPropertyBehavior = {0x3050F5DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLAnchorElement = {0x3050F248, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLAppBehavior = {0x3050F5CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLApplication = {0x3050F4D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLAreaElement = {0x3050F283, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLAreasCollection = {0x3050F4CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLAttributeCollection = {0x3050F4CC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLBaseElement = {0x3050F276, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLBaseFontElement = {0x3050F282, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLBGsound = {0x3050F370, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLBlockElement = {0x3050F281, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLBody = {0x3050F24A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLBRElement = {0x3050F280, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLButtonElement = {0x3050F2C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLCommentElement = {0x3050F317, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLCurrentStyle = {0x3050F3DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLDDElement = {0x3050F27F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLDefaults = {0x3050F6C8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLDialog = {0x3050F28A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLDivElement = {0x3050F27E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLDivPosition = {0x3050F249, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HtmlDlgSafeHelper = {0x3050F819, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLDListElement = {0x3050F27D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLDocument = {0x25336920, 0x03F9, 0x11CF, [0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13]}; +const IID CLSID_HTMLDOMAttribute = {0x3050F4B2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLDOMImplementation = {0x3050F80E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLDOMTextNode = {0x3050F4BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLDTElement = {0x3050F27C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLElementCollection = {0x3050F4CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLEmbed = {0x3050F25D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLFieldSetElement = {0x3050F3E8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLFontElement = {0x3050F27B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLFormElement = {0x3050F251, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLFrameBase = {0x3050F312, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLFrameElement = {0x3050F314, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLFrameSetSite = {0x3050F31A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLGenericElement = {0x3050F4B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLHeadElement = {0x3050F493, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLHeaderElement = {0x3050F27A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLHistory = {0xFECEAAA3, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; +const IID CLSID_HTMLHRElement = {0x3050F252, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLHtmlElement = {0x3050F491, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLIFrame = {0x3050F316, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLImageElementFactory = {0x3050F38F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLImg = {0x3050F241, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLInputButtonElement = {0x3050F2B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLInputElement = {0x3050F5D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLInputFileElement = {0x3050F2AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLInputImage = {0x3050F2C4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLInputTextElement = {0x3050F2AB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLIsIndexElement = {0x3050F278, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLLabelElement = {0x3050F32B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLLegendElement = {0x3050F3E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLLIElement = {0x3050F273, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLLinkElement = {0x3050F277, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLListElement = {0x3050F272, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLLoadOptions = {0x18845040, 0x0FA5, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; +const IID CLSID_HTMLLocation = {0x163BB1E1, 0x6E00, 0x11CF, [0x83, 0x7A, 0x48, 0xDC, 0x04, 0xC1, 0x00, 0x00]}; +const IID CLSID_HTMLMapElement = {0x3050F271, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLMarqueeElement = {0x3050F2B9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLMetaElement = {0x3050F275, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLNamespace = {0x3050F6BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLNamespaceCollection = {0x3050F6B9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLNavigator = {0xFECEAAA6, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; +const IID CLSID_HTMLNextIdElement = {0x3050F279, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLNoShowElement = {0x3050F38B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLObjectElement = {0x3050F24E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLOListElement = {0x3050F270, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLOptionButtonElement = {0x3050F2BE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLOptionElement = {0x3050F24D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLOptionElementFactory = {0x3050F38D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLParaElement = {0x3050F26F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLParamElement = {0x3050F83E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLPhraseElement = {0x3050F26E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLPluginDocument = {0x25336921, 0x03F9, 0x11CF, [0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13]}; +const IID CLSID_HTMLPopup = {0x3050F667, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLRenderStyle = {0x3050F6AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLRichtextElement = {0x3050F2DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLRuleStyle = {0x3050F3D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLScreen = {0x3050F35D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLScriptElement = {0x3050F28C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLSelectElement = {0x3050F245, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLSpanElement = {0x3050F3F5, 0x98B4, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLSpanFlow = {0x3050F3E6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLStyle = {0x3050F285, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLStyleElement = {0x3050F37D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLStyleFontFace = {0x3050F3D4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLStyleSheet = {0x3050F2E4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLStyleSheetPage = {0x3050F7EF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLStyleSheetPagesCollection = {0x3050F7F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLStyleSheetRule = {0x3050F3CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLStyleSheetRulesCollection = {0x3050F3CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLStyleSheetsCollection = {0x3050F37F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLTable = {0x3050F26B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLTableCaption = {0x3050F2EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLTableCell = {0x3050F246, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLTableCol = {0x3050F26C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLTableRow = {0x3050F26D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLTableSection = {0x3050F2E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLTextAreaElement = {0x3050F2AC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLTextElement = {0x3050F26A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLTitleElement = {0x3050F284, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLUListElement = {0x3050F269, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLUnknownElement = {0x3050F268, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLUrnCollection = {0x3050F580, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HTMLWindow2 = {0xD48A6EC6, 0x6A4A, 0x11CF, [0x94, 0xA7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID CLSID_HTMLWindowProxy = {0x3050F391, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_HttpProtocol = {0x79EAC9E2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_HttpSProtocol = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_HWShellExecute = {0xFFB8655F, 0x81B9, 0x4FCE, [0xB8, 0x9C, 0x9A, 0x6B, 0xA7, 0x6D, 0x13, 0xE7]}; +const IID CLSID_IActiveXSafetyProvider = {0xAAF8C6CE, 0xF972, 0x11D0, [0x97, 0xEB, 0x00, 0xAA, 0x00, 0x61, 0x53, 0x33]}; +const IID CLSID_IImageDecodeFilter = {0x607FD4E8, 0x0A03, 0x11D1, [0xAB, 0x1D, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; +const IID CLSID_IImgCtx = {0x3050F3D6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_ImageList = {0x7C476BA2, 0x02B1, 0x48F4, [0x80, 0x48, 0xB2, 0x46, 0x19, 0xDD, 0xC0, 0x58]}; +const IID CLSID_ImageProperties = {0x7AB770C7, 0x0E23, 0x4D7A, [0x8A, 0xA2, 0x19, 0xBF, 0xAD, 0x47, 0x98, 0x29]}; +const IID CLSID_InProcFreeMarshaler = {0x0000033A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_IntDitherer = {0x05F6FE1A, 0xECEF, 0x11D0, [0xAA, 0xE7, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; +const IID CLSID_IntelliForms = {0x613AB92E, 0x16BF, 0x11D2, [0xBC, 0xA5, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +const IID CLSID_Internet = {0x871C5380, 0x42A0, 0x1069, [0xA2, 0xEA, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; +const IID CLSID_InternetButtons = {0x1E796980, 0x9CC5, 0x11D1, [0xA8, 0x3F, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0x61]}; +const IID CLSID_InternetConnectionBeaconServic = {0x04DF613A, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; +const IID CLSID_InternetExplorer = {0x0002DF01, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_InternetPrintOrdering = {0xADD36AA8, 0x751A, 0x4579, [0xA2, 0x66, 0xD6, 0x6F, 0x52, 0x02, 0xCC, 0xBB]}; +const IID CLSID_InternetSecurityManager = {0x7B8A2D94, 0x0AC9, 0x11D1, [0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +const IID CLSID_InternetShortcut = {0xFBF23B40, 0xE3F0, 0x101B, [0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8]}; +const IID CLSID_InternetZoneManager = {0x7B8A2D95, 0x0AC9, 0x11D1, [0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +const IID CLSID_LanConnectionManager = {0xBA126AD3, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID CLSID_LargeInteger = {0x927971F5, 0x0939, 0x11D1, [0x8B, 0xE1, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID CLSID_LDAPConnectionObject = {0x7DA2A9C4, 0x0C46, 0x43BD, [0xB0, 0x4E, 0xD9, 0x2B, 0x1B, 0xE2, 0x7C, 0x45]}; +const IID CLSID_LDAPObject = {0x05709878, 0x5195, 0x466C, [0x9E, 0x64, 0x48, 0x7C, 0xE3, 0xCA, 0x20, 0xBF]}; +const IID CLSID_LinkColumnProvider = {0x24F14F02, 0x7B1C, 0x11D1, [0x83, 0x8F, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; +const IID CLSID_LocalMachineClasses = {0x00000331, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_LogManager = {0x8FDA8FA4, 0x8763, 0x479F, [0xB9, 0xB1, 0x22, 0x02, 0xB2, 0x80, 0xD2, 0x93]}; +const IID CLSID_LUTBuilderPP = {0x25B33662, 0xFD83, 0x11D1, [0x8A, 0xDE, 0x44, 0x45, 0x53, 0x54, 0x00, 0x01]}; +const IID CLSID_MachineDebugManager = {0x0C0A3666, 0x30C9, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID CLSID_MailAutoDiscovery = {0x008FD5DD, 0x6DBB, 0x48E3, [0x99, 0x1B, 0x2D, 0x3E, 0xD6, 0x58, 0x51, 0x6A]}; +const IID CLSID_MailProtocolADEntry = {0x61A5D6F3, 0xC131, 0x4C35, [0xBF, 0x40, 0x90, 0xA5, 0x0F, 0x21, 0x41, 0x22]}; +const IID CLSID_ManualResetEvent = {0x0000032C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_McastAddressAllocation = {0xDF0DAEF2, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +const IID CLSID_MediaStreamTerminal = {0xE2F7AEF7, 0x4971, 0x11D1, [0xA6, 0x71, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xE8]}; +const IID CLSID_MergedCategorizer = {0x8E827C11, 0x33E7, 0x4BC1, [0xB2, 0x42, 0x8C, 0xD9, 0xA1, 0xC2, 0xB3, 0x04]}; +const IID CLSID_MHTMLDocument = {0x3050F3D9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_MicrophoneTerminal = {0xAAF578EF, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID CLSID_MicrosoftDS = {0xFE1290F0, 0xCFBD, 0x11CF, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +const IID CLSID_MigrationWizardAuto = {0x67331D85, 0xBE17, 0x42F6, [0x8D, 0x3F, 0x47, 0xB8, 0xE8, 0xB2, 0x66, 0x37]}; +const IID CLSID_MkProtocol = {0x79EAC9E6, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_MofCompiler = {0x6DAF9757, 0x2E37, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID CLSID_MountedVolume = {0x12518493, 0x00B2, 0x11D2, [0x9F, 0xA5, 0x9E, 0x34, 0x20, 0x52, 0x41, 0x53]}; +const IID CLSID_MSBurnEngineObj = {0x520CCA67, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID CLSID_MSDATT = {0xC8B522CE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID CLSID_MSDAVTM = {0x0C733A8E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID CLSID_MSDiscMasterObj = {0x520CCA63, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID CLSID_MSDiscRecorderObj = {0x520CCA61, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID CLSID_MSDiscStashObj = {0x520CCA65, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID CLSID_MSEnumDiscRecordersObj = {0x8A03567A, 0x63CB, 0x4BA8, [0xBA, 0xF6, 0x52, 0x11, 0x98, 0x16, 0xD1, 0xEF]}; +const IID CLSID_MSOButtons = {0x178F34B8, 0xA282, 0x11D2, [0x86, 0xC5, 0x00, 0xC0, 0x4F, 0x8E, 0xEA, 0x99]}; +const IID CLSID_MyComputer = {0x20D04FE0, 0x3AEA, 0x1069, [0xA2, 0xD8, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; +const IID CLSID_MyDocuments = {0x450D8FBA, 0xAD25, 0x11D0, [0x98, 0xA8, 0x08, 0x00, 0x36, 0x1B, 0x11, 0x03]}; +const IID CLSID_NameTranslate = {0x274FAE1F, 0x3626, 0x11D1, [0xA3, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_NetAddress = {0xB0B71247, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_NetConnectionHNetUtil = {0xBA126AE3, 0x2166, 0x11D1, [0xB1, 0xD0, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID CLSID_NetConnectionUiUtilities = {0x7007ACD3, 0x3202, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID CLSID_NetCrawler = {0x601AC3DC, 0x786A, 0x4EB0, [0xBF, 0x40, 0xEE, 0x35, 0x21, 0xE7, 0x0B, 0xFB]}; +const IID CLSID_NetSharingManager = {0x5C63C1AD, 0x3956, 0x4FF8, [0x84, 0x86, 0x40, 0x03, 0x47, 0x58, 0x31, 0x5B]}; +const IID CLSID_NetworkDomain = {0x46E06680, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; +const IID CLSID_NetworkPlaces = {0x208D2C60, 0x3AEA, 0x1069, [0xA2, 0xD7, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; +const IID CLSID_NetworkServer = {0xC0542A90, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; +const IID CLSID_NetworkShare = {0x54A754C0, 0x4BF0, 0x11D1, [0x83, 0xEE, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0x49]}; +const IID CLSID_NetworkType = {0xD4F3D51B, 0x1755, 0x4953, [0x9C, 0x8B, 0x24, 0x95, 0xAB, 0xE5, 0xE0, 0x7E]}; +const IID CLSID_NodeType = {0x1AAA3D11, 0x4792, 0x44E4, [0x9D, 0x49, 0x78, 0xFE, 0xD3, 0x69, 0x1A, 0x14]}; +const IID CLSID_NotificaitonTest1 = {0xC733E501, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_NotificaitonTest2 = {0xC733E502, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_NotificaitonTest3 = {0xC733E503, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_NotificaitonTest4 = {0xC733E504, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_NotificationManager = {0xE1813DD0, 0xAADA, 0x4738, [0xB5, 0xFF, 0x96, 0xB4, 0x18, 0x9C, 0x50, 0x19]}; +const IID CLSID_ObjectManager = {0x955661BD, 0xCCA2, 0x4EAC, [0x91, 0xD0, 0xA0, 0x39, 0x6A, 0x28, 0xAE, 0xFD]}; +const IID CLSID_OctetList = {0x1241400F, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_OldHTMLDocument = {0xD48A6EC9, 0x6A4A, 0x11CF, [0x94, 0xA7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID CLSID_OldHTMLFormElement = {0x0D04D285, 0x6BEC, 0x11CF, [0x8B, 0x97, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; +const IID CLSID_OLEDB_CONVERSIONLIBRARY = {0xC8B522D1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID CLSID_OLEDB_ENUMERATOR = {0xC8B522D0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID CLSID_OLEDB_ROWPOSITIONLIBRARY = {0x2048EEE6, 0x7FA2, 0x11D0, [0x9E, 0x6A, 0x00, 0xA0, 0xC9, 0x13, 0x8C, 0x29]}; +const IID CLSID_PassportClientServices = {0x2D2307C8, 0x7DB4, 0x40D6, [0x91, 0x00, 0xD5, 0x2A, 0xF4, 0xF9, 0x7A, 0x5B]}; +const IID CLSID_Path = {0xB2538919, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_Pathname = {0x080D0D78, 0xF421, 0x11D0, [0xA3, 0x6E, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_PeerFactory = {0x3050F4CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_PendingProxyConnection = {0xD8A68E5E, 0x2B37, 0x426C, [0xA3, 0x29, 0xC1, 0x17, 0xC1, 0x4C, 0x42, 0x9E]}; +const IID CLSID_PersistentDataChannel = {0xBC9B54AB, 0x7883, 0x4C13, [0x90, 0x9F, 0x03, 0x3D, 0x03, 0x26, 0x79, 0x90]}; +const IID CLSID_PersistPropset = {0xFB8F0821, 0x0164, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; +const IID CLSID_Picture_Dib = {0x00000316, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_Picture_EnhMetafile = {0x00000319, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_Picture_Metafile = {0x00000315, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_Pixelate = {0x4CCEA634, 0xFBE0, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID CLSID_PixelatePP = {0x4CCEA635, 0xFBE0, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID CLSID_PluggableSuperclassRegistratio = {0xBB918E32, 0x2A5C, 0x4986, [0xAB, 0x40, 0x16, 0x86, 0xA0, 0x34, 0x39, 0x0A]}; +const IID CLSID_PluggableTerminalRegistration = {0x45234E3E, 0x61CC, 0x4311, [0xA3, 0xAB, 0x24, 0x80, 0x82, 0x55, 0x44, 0x82]}; +const IID CLSID_PostAgent = {0xD8BD2030, 0x6FC9, 0x11D0, [0x86, 0x4F, 0x00, 0xAA, 0x00, 0x68, 0x09, 0xD9]}; +const IID CLSID_PostalAddress = {0x0A75AFCD, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_PrimaryControlChannel = {0x3CEB5509, 0xC1CD, 0x432F, [0x9D, 0x8F, 0x65, 0xD1, 0xE2, 0x86, 0xAA, 0x80]}; +const IID CLSID_Printers = {0x2227A280, 0x3AEA, 0x1069, [0xA2, 0xDE, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D]}; +const IID CLSID_PROCESS_BROADCAST = {0xD34F1811, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_ProcessDebugManager = {0x78A51822, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID CLSID_ProgressDialog = {0xF8383852, 0xFCD3, 0x11D1, [0xA6, 0xB9, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; +const IID CLSID_PropertiesUI = {0xD912F8CF, 0x0396, 0x4915, [0x88, 0x4E, 0xFB, 0x42, 0x5D, 0x32, 0x94, 0x3B]}; +const IID CLSID_PropertyEntry = {0x72D3EDC2, 0xA4C4, 0x11D0, [0x85, 0x33, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID CLSID_PropertyValue = {0x7B9E38B0, 0xA97C, 0x11D0, [0x85, 0x34, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID CLSID_PSBindCtx = {0x00000312, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_PSClassObject = {0x0000030E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_PSClientSite = {0x0000030D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_PSDragDrop = {0x00000311, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_PSEnumerators = {0x00000313, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_PseudoSink = {0xE002E4F0, 0xE6EA, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; +const IID CLSID_PSGenObject = {0x0000030C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_PSInPlaceActive = {0x0000030F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_PSInPlaceFrame = {0x00000310, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_PSUrlMonProxy = {0x79EAC9F1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_PublishDropTarget = {0xCC6EEFFB, 0x43F6, 0x46C5, [0x96, 0x19, 0x51, 0xD5, 0x71, 0x96, 0x7F, 0x7D]}; +const IID CLSID_PublishingWizard = {0x6B33163C, 0x76A5, 0x4B6C, [0xBF, 0x21, 0x45, 0xDE, 0x9C, 0xD5, 0x03, 0xA1]}; +const IID CLSID_QueryAssociations = {0xA07034FD, 0x6CAA, 0x4954, [0xAC, 0x3F, 0x97, 0xA2, 0x72, 0x16, 0xF9, 0x8A]}; +const IID CLSID_QueryCancelAutoPlay = {0x331F1768, 0x05A9, 0x4DDD, [0xB8, 0x6E, 0xDA, 0xE3, 0x4D, 0xDC, 0x99, 0x8A]}; +const IID CLSID_RecycleBin = {0x645FF040, 0x5081, 0x101B, [0x9F, 0x08, 0x00, 0xAA, 0x00, 0x2F, 0x95, 0x4E]}; +const IID CLSID_RemoteUnknownPSFactory = {0x00000340, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_Rendezvous = {0xF1029E5B, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID CLSID_ReplicaPointer = {0xF5D1BADF, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_Request = {0x6BC096B1, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +const IID CLSID_RequestMakeCall = {0xAC48FFE0, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID CLSID_ResProtocol = {0x3050F3BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_RTCClient = {0x7A42EA29, 0xA2B7, 0x40C4, [0xB0, 0x91, 0xF6, 0xF0, 0x24, 0xAA, 0x89, 0xBE]}; +const IID CLSID_Scriptlet = {0xAE24FDAE, 0x03C6, 0x11D1, [0x8B, 0x76, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; +const IID CLSID_SdoMachine = {0xE9218AE7, 0x9E91, 0x11D1, [0xBF, 0x60, 0x00, 0x80, 0xC7, 0x84, 0x6B, 0xC0]}; +const IID CLSID_SdpConferenceBlob = {0x9B2719DD, 0xB696, 0x11D0, [0xA4, 0x89, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID CLSID_SearchAssistantOC = {0xB45FF030, 0x4447, 0x11D2, [0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; +const IID CLSID_SearchCommand = {0xB005E690, 0x678D, 0x11D1, [0xB7, 0x58, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +const IID CLSID_SecondaryControlChannel = {0x7B3181A0, 0xC92F, 0x4567, [0xB0, 0xFA, 0xCD, 0x9A, 0x10, 0xEC, 0xD7, 0xD1]}; +const IID CLSID_SecurityDescriptor = {0xB958F73C, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID CLSID_SENS = {0xD597CAFE, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +const IID CLSID_ServiceManager = {0xABD0388A, 0xDEC1, 0x44F3, [0x98, 0xE1, 0x8D, 0x5C, 0xC8, 0x0B, 0x97, 0xEB]}; +const IID CLSID_SharingApplicationDefinition = {0x46C166B0, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID CLSID_SharingConfiguration = {0x46C166B1, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID CLSID_SharingManagerEnumApplicationDe = {0x46C166AE, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID CLSID_SharingManagerEnumPortMapping = {0x46C166AF, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID CLSID_SharingManagerEnumPrivateConnec = {0x46C166AD, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID CLSID_SharingManagerEnumPublicConnect = {0x46C166AC, 0x3108, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID CLSID_Shell = {0x13709620, 0xC279, 0x11CE, [0xA4, 0x9E, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID CLSID_ShellBrowserWindow = {0xC08AFD90, 0xF2A1, 0x11D1, [0x84, 0x55, 0x00, 0xA0, 0xC9, 0x1F, 0x38, 0x80]}; +const IID CLSID_ShellDesktop = {0x00021400, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_ShellDispatchInproc = {0x0A89A860, 0xD7B1, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID CLSID_ShellFolderItem = {0x2FE352EA, 0xFD1F, 0x11D2, [0xB1, 0xF4, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; +const IID CLSID_ShellFolderView = {0x62112AA1, 0xEBE4, 0x11CF, [0xA5, 0xFB, 0x00, 0x20, 0xAF, 0xE7, 0x29, 0x2D]}; +const IID CLSID_ShellFolderViewOC = {0x9BA05971, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; +const IID CLSID_ShellFSFolder = {0xF3364BA0, 0x65B9, 0x11CE, [0xA9, 0xBA, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37]}; +const IID CLSID_ShellImageDataFactory = {0x66E4E4FB, 0xF385, 0x4DD0, [0x8D, 0x74, 0xA2, 0xEF, 0xD1, 0xBC, 0x61, 0x78]}; +const IID CLSID_ShellLink = {0x00021401, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_ShellLinkObject = {0x11219420, 0x1768, 0x11D1, [0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; +const IID CLSID_ShellLocalMachine = {0x60664CAF, 0xAF0D, 0x0005, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +const IID CLSID_ShellLogonEnumUsers = {0x60664CAF, 0xAF0D, 0x0004, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +const IID CLSID_ShellLogonStatusHost = {0x60664CAF, 0xAF0D, 0x0007, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +const IID CLSID_ShellLogonUser = {0x60664CAF, 0xAF0D, 0x0003, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +const IID CLSID_ShellNameSpace = {0x55136805, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; +const IID CLSID_ShellUIHelper = {0x64AB4BB7, 0x111E, 0x11D1, [0x8F, 0x79, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +const IID CLSID_ShellWindows = {0x9BA05972, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; +const IID CLSID_SizeCategorizer = {0x55D7B852, 0xF6D1, 0x42F2, [0xAA, 0x75, 0x87, 0x28, 0xA1, 0xB2, 0xD2, 0x64]}; +const IID CLSID_SoftDistExt = {0xB15B8DC0, 0xC7E1, 0x11D0, [0x86, 0x80, 0x00, 0xAA, 0x00, 0xBD, 0xCB, 0x71]}; +const IID CLSID_SpeakerphoneTerminal = {0xAAF578EE, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID CLSID_SpeakersTerminal = {0xAAF578F0, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID CLSID_SpeechUIServer = {0x1443904B, 0x34E4, 0x40F6, [0xB3, 0x0F, 0x6B, 0xEB, 0x81, 0x26, 0x7B, 0x80]}; +const IID CLSID_StaticDib = {0x00000316, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_StaticMetafile = {0x00000315, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_StdAsyncActManager = {0x00000329, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_StdComponentCategoriesMgr = {0x0002E005, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_StdEncodingFilterFac = {0x54C37CD0, 0xD944, 0x11D0, [0xA9, 0xF4, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; +const IID CLSID_StdEvent = {0x0000032B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_StdFont = {0x0BE35203, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +const IID CLSID_StdGlobalInterfaceTable = {0x00000323, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_StdHlink = {0x79EAC9D0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_StdHlinkBrowseContext = {0x79EAC9D1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_StdMarshal = {0x00000017, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_StdNotificationMgr = {0xC733E4AF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_StdPicture = {0x0BE35204, 0x8F91, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +const IID CLSID_StdURLMoniker = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_StdURLProtocol = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_StgFolder = {0xE773F1AF, 0x3A65, 0x4866, [0x85, 0x7D, 0x84, 0x6F, 0xC9, 0xC4, 0x59, 0x8A]}; +const IID CLSID_StockColorPage = {0x7EBDAAE1, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; +const IID CLSID_StockFontPage = {0x7EBDAAE0, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; +const IID CLSID_StockPicturePage = {0x7EBDAAE2, 0x8120, 0x11CF, [0x89, 0x9F, 0x00, 0xAA, 0x00, 0x68, 0x8B, 0x10]}; +const IID CLSID_SubscriptionMgr = {0xABBE31D0, 0x6DAE, 0x11D0, [0xBE, 0xCA, 0x00, 0xC0, 0x4F, 0xD9, 0x40, 0xBE]}; +const IID CLSID_SubscriptionThrottler = {0x1E9B00E5, 0x9846, 0x11D1, [0xA1, 0xEE, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +const IID CLSID_SWbemDateTime = {0x47DFBE54, 0xCF76, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +const IID CLSID_SWbemEventSource = {0x04B83D58, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemLastError = {0xC2FEEEAC, 0xCFCD, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemLocator = {0x76A64158, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemMethod = {0x04B83D5B, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemMethodSet = {0x04B83D5A, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemNamedValue = {0x04B83D60, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemNamedValueSet = {0x9AED384E, 0xCE8B, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemObject = {0x04B83D62, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemObjectEx = {0xD6BDAFB2, 0x9435, 0x491F, [0xBB, 0x87, 0x6A, 0xA0, 0xF0, 0xBC, 0x31, 0xA2]}; +const IID CLSID_SWbemObjectPath = {0x5791BC26, 0xCE9C, 0x11D1, [0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C]}; +const IID CLSID_SWbemObjectSet = {0x04B83D61, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemPrivilege = {0x26EE67BC, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemPrivilegeSet = {0x26EE67BE, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemProperty = {0x04B83D5D, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemPropertySet = {0x04B83D5C, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemQualifier = {0x04B83D5F, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemQualifierSet = {0x04B83D5E, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemRefreshableItem = {0x8C6854BC, 0xDE4B, 0x11D3, [0xB3, 0x90, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +const IID CLSID_SWbemRefresher = {0xD269BF5C, 0xD9C1, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +const IID CLSID_SWbemSecurity = {0xB54D66E9, 0x2287, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemServices = {0x04B83D63, 0x21AE, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID CLSID_SWbemServicesEx = {0x62E522DC, 0x8CF3, 0x40A8, [0x8B, 0x2E, 0x37, 0xD5, 0x95, 0x65, 0x1E, 0x40]}; +const IID CLSID_SWbemSink = {0x75718C9A, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; +const IID CLSID_SynchronizeContainer = {0x0000032D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID CLSID_SyncMgr = {0x6295DF27, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +const IID CLSID_TAPI = {0x21D6D48E, 0xA88B, 0x11D0, [0x83, 0xDD, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID CLSID_TaskbarList = {0x56FDF344, 0xFD6D, 0x11D0, [0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90]}; +const IID CLSID_TaskManager = {0xC0F615A7, 0xF874, 0x4521, [0x87, 0x91, 0xED, 0x3B, 0x84, 0x01, 0x7E, 0xF7]}; +const IID CLSID_TerminalManager = {0x7170F2E0, 0x9BE3, 0x11D0, [0xA0, 0x09, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; +const IID CLSID_THREAD_BROADCAST = {0xD34F1812, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_ThreadDialogProcParam = {0x3050F5EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID CLSID_ThumbnailFCNHandler = {0xCEFC65D8, 0x66D8, 0x11D1, [0x8D, 0x8C, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; +const IID CLSID_ThumbnailUpdater = {0xA3C63918, 0x889D, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; +const IID CLSID_TIME = {0xE32EF57B, 0x7FDE, 0x4765, [0x9B, 0xC5, 0xA1, 0xBA, 0x97, 0x05, 0xC4, 0x4E]}; +const IID CLSID_TIMEAnimation = {0xF99D135A, 0xC07C, 0x449E, [0x96, 0x5C, 0x7D, 0xBB, 0x7C, 0x55, 0x4A, 0x51]}; +const IID CLSID_TimeCategorizer = {0x3BB4118F, 0xDDFD, 0x4D30, [0xA3, 0x48, 0x9F, 0xB5, 0xD6, 0xBF, 0x1A, 0xFE]}; +const IID CLSID_TIMEColorAnimation = {0x62F75052, 0xF3EC, 0x4A64, [0x84, 0xFB, 0xAB, 0x18, 0xE0, 0x74, 0x6E, 0xD8]}; +const IID CLSID_TIMEFactory = {0x17237A20, 0x3ADB, 0x48EC, [0xB1, 0x82, 0x35, 0x29, 0x1F, 0x11, 0x57, 0x90]}; +const IID CLSID_TIMEFilterAnimation = {0xC54515D0, 0xF2E5, 0x4BDD, [0xAA, 0x86, 0x1E, 0x4F, 0x23, 0xE4, 0x80, 0xE7]}; +const IID CLSID_TIMEMotionAnimation = {0x0019A09D, 0x1A81, 0x41C5, [0x89, 0xEC, 0xD9, 0xE7, 0x37, 0x81, 0x13, 0x03]}; +const IID CLSID_TIMESetAnimation = {0xBA91CE53, 0xBAEB, 0x4F05, [0x86, 0x1C, 0x0A, 0x2A, 0x09, 0x34, 0xF8, 0x2E]}; +const IID CLSID_Timestamp = {0xB2BED2EB, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_ToolbarExtButtons = {0x2CE4B5D8, 0xA28F, 0x11D2, [0x86, 0xC5, 0x00, 0xC0, 0x4F, 0x8E, 0xEA, 0x99]}; +const IID CLSID_TrackFile = {0x8790C947, 0xA30B, 0x11D0, [0x8C, 0xAB, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; +const IID CLSID_TrkForceOwnership = {0xA2531F45, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; +const IID CLSID_TrkRestoreNotify = {0xD0056F6C, 0xE2A0, 0x11D0, [0xB1, 0xC2, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +const IID CLSID_TrkRestoreParser = {0x755939E4, 0xE381, 0x11D0, [0xB1, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +const IID CLSID_TypedName = {0xB33143CB, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID CLSID_UmiLDAPQueryObject = {0xCD5D4D76, 0xA818, 0x4F95, [0xB9, 0x58, 0x79, 0x70, 0xFD, 0x94, 0x12, 0xCA]}; +const IID CLSID_UnsecuredApartment = {0x49BD2028, 0x1523, 0x11D1, [0xAD, 0x79, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID CLSID_UPnPDescriptionDocument = {0x1D8A9B47, 0x3A28, 0x4CE2, [0x8A, 0x4B, 0xBD, 0x34, 0xE4, 0x5B, 0xCE, 0xEB]}; +const IID CLSID_UPnPDevice = {0xA32552C5, 0xBA61, 0x457A, [0xB5, 0x9A, 0xA2, 0x56, 0x1E, 0x12, 0x5E, 0x33]}; +const IID CLSID_UPnPDeviceFinder = {0xE2085F28, 0xFEB7, 0x404A, [0xB8, 0xE7, 0xE6, 0x59, 0xBD, 0xEA, 0xAA, 0x02]}; +const IID CLSID_UPnPDeviceHostICSSupport = {0x797A9BB1, 0x9E49, 0x4E63, [0xAF, 0xE1, 0x1B, 0x45, 0xB9, 0xDC, 0x81, 0x62]}; +const IID CLSID_UPnPDeviceHostSetup = {0xB4609411, 0xC81C, 0x4CCE, [0x8C, 0x76, 0xC6, 0xB5, 0x0C, 0x94, 0x02, 0xC6]}; +const IID CLSID_UPnPDevices = {0xB9E84FFD, 0xAD3C, 0x40A4, [0xB8, 0x35, 0x08, 0x82, 0xEB, 0xCB, 0xAA, 0xA8]}; +const IID CLSID_UPnPNAT = {0xAE1E00AA, 0x3FD5, 0x403C, [0x8A, 0x27, 0x2B, 0xBD, 0xC3, 0x0C, 0xD0, 0xE1]}; +const IID CLSID_UPnPRegistrar = {0x204810B9, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +const IID CLSID_UPnPService = {0xC624BA95, 0xFBCB, 0x4409, [0x8C, 0x03, 0x8C, 0xCE, 0xEC, 0x53, 0x3E, 0xF1]}; +const IID CLSID_UPnPServices = {0xC0BC4B4A, 0xA406, 0x4EFC, [0x93, 0x2F, 0xB8, 0x54, 0x6B, 0x81, 0x00, 0xCC]}; +const IID CLSID_UrlMkBindCtx = {0x79EAC9F2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID CLSID_UserEventTimer = {0x864A1288, 0x354C, 0x4D19, [0x9D, 0x68, 0xC2, 0x74, 0x2B, 0xB1, 0x49, 0x97]}; +const IID CLSID_UserEventTimerCallback = {0x15FFFD13, 0x5140, 0x41B8, [0xB8, 0x9A, 0xC8, 0xD5, 0x75, 0x9C, 0xD2, 0xB2]}; +const IID CLSID_UserNotification = {0x0010890E, 0x8789, 0x413C, [0xAD, 0xBC, 0x48, 0xF5, 0xB5, 0x11, 0xB3, 0xAF]}; +const IID CLSID_VideoInputTerminal = {0xAAF578EC, 0xDC70, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID CLSID_VideoWindowTerm = {0xF7438990, 0xD6EB, 0x11D0, [0x82, 0xA6, 0x00, 0xAA, 0x00, 0xB5, 0xCA, 0x1B]}; +const IID CLSID_VirusScan = {0xE88E5DE0, 0xBD3E, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; +const IID CLSID_WbemAdministrativeLocator = {0xCB8555CC, 0x9128, 0x11D1, [0xAD, 0x9B, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID CLSID_WbemAuthenticatedLocator = {0xCD184336, 0x9128, 0x11D1, [0xAD, 0x9B, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID CLSID_WbemBackupRestore = {0xC49E32C6, 0xBC8B, 0x11D2, [0x85, 0xD4, 0x00, 0x10, 0x5A, 0x1F, 0x83, 0x04]}; +const IID CLSID_WbemClassObject = {0x9A653086, 0x174F, 0x11D2, [0xB5, 0xF9, 0x00, 0x10, 0x4B, 0x70, 0x3E, 0xFD]}; +const IID CLSID_WbemContext = {0x674B6698, 0xEE92, 0x11D0, [0xAD, 0x71, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID CLSID_WbemDCOMTransport = {0xF7CE2E13, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID CLSID_WbemDecoupledBasicEventProvide = {0xF5F75737, 0x2843, 0x4F22, [0x93, 0x3D, 0xC7, 0x6A, 0x97, 0xCD, 0xA6, 0x2F]}; +const IID CLSID_WbemDecoupledRegistrar = {0x4CFC7932, 0x0F9D, 0x4BEF, [0x9C, 0x32, 0x8E, 0xA2, 0xA6, 0xB5, 0x6F, 0xCB]}; +const IID CLSID_WbemDefPath = {0xCF4CC405, 0xE2C5, 0x4DDD, [0xB3, 0xCE, 0x5E, 0x75, 0x82, 0xD8, 0xC9, 0xFA]}; +const IID CLSID_WbemLevel1Login = {0x8BC3F05E, 0xD86B, 0x11D0, [0xA0, 0x75, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID CLSID_WbemLocalAddrRes = {0xA1044801, 0x8F7E, 0x11D1, [0x9E, 0x7C, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID CLSID_WbemLocator = {0x4590F811, 0x1D3A, 0x11D0, [0x89, 0x1F, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; +const IID CLSID_WbemObjectTextSrc = {0x8D1C559D, 0x84F0, 0x4BB3, [0xA7, 0xD5, 0x56, 0xA7, 0x43, 0x5A, 0x9B, 0xA6]}; +const IID CLSID_WbemQuery = {0xEAC8A024, 0x21E2, 0x4523, [0xAD, 0x73, 0xA7, 0x1A, 0x0A, 0xA2, 0xF5, 0x6A]}; +const IID CLSID_WbemRefresher = {0xC71566F2, 0x561E, 0x11D1, [0xAD, 0x87, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID CLSID_WbemStatusCodeText = {0xEB87E1BD, 0x3233, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID CLSID_WbemUnauthenticatedLocator = {0x443E7B79, 0xDE31, 0x11D2, [0xB3, 0x40, 0x00, 0x10, 0x4B, 0xCC, 0x4B, 0x4A]}; +const IID CLSID_WbemUninitializedClassObject = {0x7A0227F6, 0x7108, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID CLSID_WebBrowser = {0x8856F961, 0x340A, 0x11D0, [0xA9, 0x6B, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; +const IID CLSID_WebBrowser_V1 = {0xEAB22AC3, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; +const IID CLSID_WebCheck = {0xE6FB5E20, 0xDE35, 0x11CF, [0x9C, 0x87, 0x00, 0xAA, 0x00, 0x51, 0x27, 0xED]}; +const IID CLSID_WebCheckDefaultProcess = {0xC733E4B0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID CLSID_WebCheckOfflineSync = {0x7FC0B86E, 0x5FA7, 0x11D1, [0xBC, 0x7C, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +const IID CLSID_WebCrawlerAgent = {0x08165EA0, 0xE946, 0x11CF, [0x9C, 0x87, 0x00, 0xAA, 0x00, 0x51, 0x27, 0xED]}; +const IID CLSID_WebViewFolderContents = {0x1820FED0, 0x473E, 0x11D0, [0xA9, 0x6C, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; +const IID CLSID_WebWizardHost = {0xC827F149, 0x55C1, 0x4D28, [0x93, 0x5E, 0x57, 0xE4, 0x7C, 0xAE, 0xD9, 0x73]}; +const IID CLSID_wfolders = {0xBAE31F9A, 0x1B81, 0x11D2, [0xA9, 0x7A, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; +const IID CLSID_WinNTConnectionObject = {0x7992C6EB, 0xD142, 0x4332, [0x83, 0x1E, 0x31, 0x54, 0xC5, 0x0A, 0x83, 0x16]}; +const IID CLSID_WinNTObject = {0xB8324185, 0x4050, 0x4220, [0x98, 0x0A, 0xAB, 0x14, 0x62, 0x3E, 0x06, 0x3A]}; +const IID CLSID_WinNTSystemInfo = {0x66182EC4, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; +const IID CLSID_WMIExtension = {0xF0975AFE, 0x5C7F, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; +const IID CLSID_XMLDocument = {0xCFC399AF, 0xD876, 0x11D0, [0x9C, 0x10, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; +const IID CLSID_XMLDSOControl = {0x550DDA30, 0x0541, 0x11D2, [0x9C, 0xA9, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +const IID CLSID_XMLHTTPRequest = {0xED8C108E, 0x4349, 0x11D2, [0x91, 0xA4, 0x00, 0xC0, 0x4F, 0x79, 0x69, 0xE8]}; +const IID CLSID_XMLParser = {0xD2423620, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +const IID DB_PROPERTY_AUTOMATICUPDATE = {0xC8B52209, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_BTREE = {0xC8B52201, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_CHECK_OPTION = {0xC8B5220B, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_CLUSTERED = {0xC8B521FF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_CONSTRAINT_CHECK_DEFERRE = {0xC8B521F0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_DISALLOWNULL = {0xC8B52205, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_DROP_CASCADE = {0xC8B521F3, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_EXPLICITUPDATE = {0xC8B5220A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_FILLFACTOR = {0xC8B52203, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_HASH = {0xC8B52202, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_IGNOREANYNULL = {0xC8B52207, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_IGNORENULL = {0xC8B52206, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_INITIALSIZE = {0xC8B52204, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_NONCLUSTERED = {0xC8B52200, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_ON_COMMIT_PRESERVE_ROWS = {0xC8B52230, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_PRIMARY = {0xC8B521FC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_SORTBOOKMARKS = {0xC8B52208, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DB_PROPERTY_UNIQUE = {0xC8B521F5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBCOL_SELFCOLUMNS = {0xC8B52231, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBCOL_SPECIALCOL = {0xC8B52232, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_COMMAND = {0xC8B522F8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_CONTAINEROBJECT = {0xC8B522FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_DBSQL = {0xC8B521FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_DEFAULT = {0xC8B521FB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_DSO = {0xC8B522F4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_HISTOGRAM_ROWSET = {0xC8B52300, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_LDAPDialect = {0xEFF65380, 0x9C98, 0x11CF, [0xB9, 0x63, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_LIKE_DOS = {0xC8B521F7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_LIKE_MAPI = {0xC8B521F9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_LIKE_OFS = {0xC8B521F8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_LIKE_SQL = {0xC8B521F6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_MDX = {0xA07CCCD0, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +const IID DBGUID_ROW = {0xC8B522F7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_ROWSET = {0xC8B522F6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_SESSION = {0xC8B522F5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_SQL = {0xC8B522D7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBGUID_STREAM = {0xC8B522F9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_CHARACTERSET = {0xC8B522ED, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_COLLATION = {0xC8B522EA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_COLUMN = {0xC8B522E4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_DATABASE = {0xC8B522E5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_DOMAIN = {0xC8B522E9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_PROCEDURE = {0xC8B522E6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_SCHEMA = {0xC8B522E8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_SCHEMAROWSET = {0xC8B522EC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_TABLE = {0xC8B522E2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_TRANSLATION = {0xC8B522EE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_TRUSTEE = {0xC8B522EB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBOBJECT_VIEW = {0xC8B522E7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_ADSIBIND = {0x6DA66DC8, 0xB7E8, 0x11D2, [0x9D, 0x60, 0x00, 0xC0, 0x4F, 0x68, 0x93, 0x45]}; +const IID DBPROPSET_ADSISEARCH = {0xCFCFC928, 0x9AA2, 0x11D0, [0xA7, 0x9A, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; +const IID DBPROPSET_COLUMN = {0xC8B522B9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_COLUMNALL = {0xC8B522F0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_CONSTRAINTALL = {0xC8B522FA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_DATASOURCE = {0xC8B522BA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_DATASOURCEALL = {0xC8B522C0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_DATASOURCEINFO = {0xC8B522BB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_DATASOURCEINFOALL = {0xC8B522C1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_DBINIT = {0xC8B522BC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_DBINITALL = {0xC8B522CA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_INDEX = {0xC8B522BD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_INDEXALL = {0xC8B522F1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_PROPERTIESINERROR = {0xC8B522D4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_ROWSET = {0xC8B522BE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_ROWSETALL = {0xC8B522C2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_SESSION = {0xC8B522C6, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_SESSIONALL = {0xC8B522C7, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_STREAM = {0xC8B522FD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_STREAMALL = {0xC8B522FE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_TABLE = {0xC8B522BF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_TABLEALL = {0xC8B522F2, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_TRUSTEE = {0xC8B522E1, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_TRUSTEEALL = {0xC8B522F3, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_VIEW = {0xC8B522DF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBPROPSET_VIEWALL = {0xC8B522FC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_ASSERTIONS = {0xC8B52210, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_CATALOGS = {0xC8B52211, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_CHARACTER_SETS = {0xC8B52212, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_CHECK_CONSTRAINTS = {0xC8B52215, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE = {0xC8B52301, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_COLLATIONS = {0xC8B52213, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_COLUMN_DOMAIN_USAGE = {0xC8B5221B, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_COLUMN_PRIVILEGES = {0xC8B52221, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_COLUMNS = {0xC8B52214, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_CONSTRAINT_COLUMN_USAGE = {0xC8B52216, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_CONSTRAINT_TABLE_USAGE = {0xC8B52217, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_FOREIGN_KEYS = {0xC8B522C4, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_INDEXES = {0xC8B5221E, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_KEY_COLUMN_USAGE = {0xC8B52218, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_PRIMARY_KEYS = {0xC8B522C5, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_PROCEDURE_COLUMNS = {0xC8B522C9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_PROCEDURE_PARAMETERS = {0xC8B522B8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_PROCEDURES = {0xC8B52224, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_PROVIDER_TYPES = {0xC8B5222C, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_REFERENTIAL_CONSTRAINTS = {0xC8B52219, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_SCHEMATA = {0xC8B52225, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_SQL_LANGUAGES = {0xC8B52226, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_STATISTICS = {0xC8B52227, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_TABLE_CONSTRAINTS = {0xC8B5221A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_TABLE_PRIVILEGES = {0xC8B52222, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_TABLE_STATISTICS = {0xC8B522FF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_TABLES = {0xC8B52229, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_TABLES_INFO = {0xC8B522E0, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_TRANSLATIONS = {0xC8B5222A, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_TRUSTEE = {0xC8B522EF, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_USAGE_PRIVILEGES = {0xC8B52223, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_VIEW_COLUMN_USAGE = {0xC8B5222E, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_VIEW_TABLE_USAGE = {0xC8B5222F, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DBSCHEMA_VIEWS = {0xC8B5222D, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID DDVPTYPE_BROOKTREE = {0x1352A560, 0xDA61, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +const IID DDVPTYPE_CCIR656 = {0xFCA326A0, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +const IID DDVPTYPE_E_HREFH_VREFL = {0x92783220, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +const IID DDVPTYPE_E_HREFL_VREFL = {0xE09C77E0, 0xDA60, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +const IID DDVPTYPE_PHILIPS = {0x332CF160, 0xDA61, 0x11CF, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +const IID DIID__SearchAssistantEvents = {0x1611FDDA, 0x445B, 0x11D2, [0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; +const IID DIID_DispCEventObj = {0x3050F558, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispDOMChildrenCollection = {0x3050F577, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTCAttachBehavior = {0x3050F583, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTCDefaultDispatch = {0x3050F573, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTCDescBehavior = {0x3050F57E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTCEventBehavior = {0x3050F574, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTCMethodBehavior = {0x3050F587, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTCPropertyBehavior = {0x3050F57F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLAnchorElement = {0x3050F502, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLAppBehavior = {0x3050F57C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLAreaElement = {0x3050F503, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLAreasCollection = {0x3050F56A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLAttributeCollection = {0x3050F56C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLBaseElement = {0x3050F518, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLBaseFontElement = {0x3050F504, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLBGsound = {0x3050F53C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLBlockElement = {0x3050F506, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLBody = {0x3050F507, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLBRElement = {0x3050F53A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLButtonElement = {0x3050F51F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLCommentElement = {0x3050F50A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLCurrentStyle = {0x3050F557, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLDDElement = {0x3050F50B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLDefaults = {0x3050F58C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLDivElement = {0x3050F50C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLDivPosition = {0x3050F50F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLDListElement = {0x3050F53B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLDocument = {0x3050F55F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLDOMAttribute = {0x3050F564, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLDOMImplementation = {0x3050F58F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLDOMTextNode = {0x3050F565, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLDTElement = {0x3050F50D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLElementCollection = {0x3050F56B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLEmbed = {0x3050F52E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLFieldSetElement = {0x3050F545, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLFontElement = {0x3050F512, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLFormElement = {0x3050F510, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLFrameBase = {0x3050F541, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLFrameElement = {0x3050F513, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLFrameSetSite = {0x3050F514, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLGenericElement = {0x3050F563, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLHeadElement = {0x3050F561, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLHeaderElement = {0x3050F515, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLHRElement = {0x3050F53D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLHtmlElement = {0x3050F560, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLIFrame = {0x3050F51B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLImg = {0x3050F51C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLInputElement = {0x3050F57D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLIsIndexElement = {0x3050F519, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLLabelElement = {0x3050F522, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLLegendElement = {0x3050F546, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLLIElement = {0x3050F523, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLLinkElement = {0x3050F524, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLListElement = {0x3050F525, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLMapElement = {0x3050F526, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLMarqueeElement = {0x3050F527, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLMetaElement = {0x3050F517, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLNextIdElement = {0x3050F51A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLNoShowElement = {0x3050F528, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLObjectElement = {0x3050F529, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLOListElement = {0x3050F52A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLOptionElement = {0x3050F52B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLParaElement = {0x3050F52C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLParamElement = {0x3050F590, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLPhraseElement = {0x3050F52D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLPopup = {0x3050F589, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLRenderStyle = {0x3050F58B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLRichtextElement = {0x3050F54D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLRuleStyle = {0x3050F55C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLScreen = {0x3050F591, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLScriptElement = {0x3050F530, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLSelectElement = {0x3050F531, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLSpanElement = {0x3050F548, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLSpanFlow = {0x3050F544, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLStyle = {0x3050F55A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLStyleElement = {0x3050F511, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLStyleSheet = {0x3050F58D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLTable = {0x3050F532, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLTableCaption = {0x3050F508, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLTableCell = {0x3050F536, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLTableCol = {0x3050F533, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLTableRow = {0x3050F535, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLTableSection = {0x3050F534, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLTextAreaElement = {0x3050F521, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLTextElement = {0x3050F537, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLTitleElement = {0x3050F516, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLUListElement = {0x3050F538, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLUnknownElement = {0x3050F539, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLWindow2 = {0x3050F55D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispHTMLWindowProxy = {0x3050F55E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispIHTMLInputButtonElement = {0x3050F51E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispIHTMLInputFileElement = {0x3050F542, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispIHTMLInputImage = {0x3050F51D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispIHTMLInputTextElement = {0x3050F520, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DispIHTMLOptionButtonElement = {0x3050F509, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_DMigrationWizardAutoEvents = {0xD2AC137D, 0xA6D8, 0x43B6, [0x98, 0x79, 0xEA, 0x34, 0xB6, 0x7E, 0x18, 0x80]}; +const IID DIID_DSearchCommandEvents = {0x60890160, 0x69F0, 0x11D1, [0xB7, 0x58, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +const IID DIID_DShellFolderViewEvents = {0x62112AA2, 0xEBE4, 0x11CF, [0xA5, 0xFB, 0x00, 0x20, 0xAF, 0xE7, 0x29, 0x2D]}; +const IID DIID_DShellNameSpaceEvents = {0x55136806, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; +const IID DIID_DShellWindowsEvents = {0xFE4106E0, 0x399A, 0x11D0, [0xA4, 0x8C, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; +const IID DIID_DWebBridgeEvents = {0xA6D897FF, 0x0A95, 0x11D1, [0xB0, 0xBA, 0x00, 0x60, 0x08, 0x16, 0x6E, 0x11]}; +const IID DIID_DWebBrowserEvents = {0xEAB22AC2, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; +const IID DIID_DWebBrowserEvents2 = {0x34A715A0, 0x6587, 0x11D0, [0x92, 0x4A, 0x00, 0x20, 0xAF, 0xC7, 0xAC, 0x4D]}; +const IID DIID_HTMLAnchorEvents = {0x3050F29D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLAnchorEvents2 = {0x3050F610, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLAreaEvents = {0x3050F366, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLAreaEvents2 = {0x3050F611, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLButtonElementEvents = {0x3050F2B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLButtonElementEvents2 = {0x3050F617, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLControlElementEvents = {0x3050F4EA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLControlElementEvents2 = {0x3050F612, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLDocumentEvents = {0x3050F260, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLDocumentEvents2 = {0x3050F613, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLElementEvents = {0x3050F33C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLElementEvents2 = {0x3050F60F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLFormElementEvents = {0x3050F364, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLFormElementEvents2 = {0x3050F614, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLFrameSiteEvents = {0x3050F800, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLFrameSiteEvents2 = {0x3050F7FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLImgEvents = {0x3050F25B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLImgEvents2 = {0x3050F616, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLInputFileElementEvents = {0x3050F2AF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLInputFileElementEvents2 = {0x3050F61A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLInputImageEvents = {0x3050F2C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLInputImageEvents2 = {0x3050F61B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLInputTextElementEvents = {0x3050F2A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLInputTextElementEvents2 = {0x3050F618, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLLabelEvents = {0x3050F329, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLLabelEvents2 = {0x3050F61C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLLinkElementEvents = {0x3050F3CC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLLinkElementEvents2 = {0x3050F61D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLMapEvents = {0x3050F3BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLMapEvents2 = {0x3050F61E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLMarqueeElementEvents = {0x3050F2B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLMarqueeElementEvents2 = {0x3050F61F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLNamespaceEvents = {0x3050F6BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLObjectElementEvents = {0x3050F3C4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLObjectElementEvents2 = {0x3050F620, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLOptionButtonElementEvents = {0x3050F2BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLOptionButtonElementEvents2 = {0x3050F619, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLPersistEvents = {0x3050F4C7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLScriptEvents = {0x3050F3E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLScriptEvents2 = {0x3050F621, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLSelectElementEvents = {0x3050F302, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLSelectElementEvents2 = {0x3050F622, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLStyleElementEvents = {0x3050F3CB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLStyleElementEvents2 = {0x3050F615, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLTableEvents = {0x3050F407, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLTableEvents2 = {0x3050F623, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLTextContainerEvents = {0x1FF6AA72, 0x5842, 0x11CF, [0xA7, 0x07, 0x00, 0xAA, 0x00, 0xC0, 0x09, 0x8D]}; +const IID DIID_HTMLTextContainerEvents2 = {0x3050F624, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_HTMLWindowEvents = {0x96A0A4E0, 0xD062, 0x11CF, [0x94, 0xB6, 0x00, 0xAA, 0x00, 0x60, 0x27, 0x5C]}; +const IID DIID_HTMLWindowEvents2 = {0x3050F625, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_IRTCDispatchEventNotification = {0x176DDFBE, 0xFEC0, 0x4D55, [0xBC, 0x87, 0x84, 0xCF, 0xF1, 0xEF, 0x7F, 0x91]}; +const IID DIID_ISWbemSinkEvents = {0x75718CA0, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; +const IID DIID_ITTAPIDispatchEventNotification = {0x9F34325B, 0x7E62, 0x11D2, [0x94, 0x57, 0x00, 0xC0, 0x4F, 0x8E, 0xC8, 0x88]}; +const IID DIID_LayoutRectEvents = {0x3050F674, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID DIID_XMLDOMDocumentEvents = {0x3EFAA427, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; +const IID DPAID_ComPort = {0xF2F0CE00, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID DPAID_INet = {0xC4A54DA0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID DPAID_INetPort = {0xE4524541, 0x8EA5, 0x11D1, [0x8A, 0x96, 0x00, 0x60, 0x97, 0xB0, 0x14, 0x11]}; +const IID DPAID_INetW = {0xE63232A0, 0x9DBF, 0x11D0, [0x9C, 0xC1, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID DPAID_LobbyProvider = {0x59B95640, 0x9667, 0x11D0, [0xA7, 0x7D, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +const IID DPAID_Modem = {0xF6DCC200, 0xA2FE, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID DPAID_ModemW = {0x01FD92E0, 0xA2FF, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID DPAID_Phone = {0x78EC89A0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID DPAID_PhoneW = {0xBA5A7A70, 0x9DBF, 0x11D0, [0x9C, 0xC1, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID DPAID_ServiceProvider = {0x07D916C0, 0xE0AF, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID DPAID_TotalSize = {0x1318F560, 0x912C, 0x11D0, [0x9D, 0xAA, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; +const IID DPLPROPERTY_LobbyGuid = {0xF56920A0, 0xD218, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; +const IID DPLPROPERTY_MessagesSupported = {0x762CCDA1, 0xD916, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; +const IID DPLPROPERTY_PlayerGuid = {0xB4319322, 0xD20D, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; +const IID DPLPROPERTY_PlayerScore = {0x48784000, 0xD219, 0x11D0, [0xBA, 0x39, 0x00, 0xC0, 0x4F, 0xD7, 0xED, 0x67]}; +const IID DPSPGUID_IPX = {0x685BC400, 0x9D2C, 0x11CF, [0xA9, 0xCD, 0x00, 0xAA, 0x00, 0x68, 0x86, 0xE3]}; +const IID DPSPGUID_MODEM = {0x44EAA760, 0xCB68, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID DPSPGUID_SERIAL = {0x0F1D6860, 0x88D9, 0x11CF, [0x9C, 0x4E, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID DPSPGUID_TCPIP = {0x36E95EE0, 0x8577, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0x53, 0x4E, 0x82]}; +const IID DS3DALG_HRTF_FULL = {0xC2413340, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; +const IID DS3DALG_HRTF_LIGHT = {0xC2413342, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; +const IID DS3DALG_NO_VIRTUALIZATION = {0xC241333F, 0x1C1B, 0x11D2, [0x94, 0xF5, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA]}; +const IID FLAGID_Internet = {0x96300DA0, 0x2BAB, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID FMTID_AudioSummaryInformation = {0x64440490, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; +const IID FMTID_Briefcase = {0x328D8B21, 0x7729, 0x4BFC, [0x95, 0x4C, 0x90, 0x2B, 0x32, 0x9D, 0x56, 0xB0]}; +const IID FMTID_DiscardableInformation = {0xD725EBB0, 0xC9B8, 0x11D1, [0x89, 0xBC, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; +const IID FMTID_Displaced = {0x9B174B33, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; +const IID FMTID_DocSummaryInformation = {0xD5CDD502, 0x2E9C, 0x101B, [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE]}; +const IID FMTID_DRM = {0xAEAC19E4, 0x89AE, 0x4508, [0xB9, 0xB7, 0xBB, 0x86, 0x7A, 0xBE, 0xE2, 0xED]}; +const IID FMTID_ImageProperties = {0x14B81DA1, 0x0135, 0x4D31, [0x96, 0xD9, 0x6C, 0xBF, 0xC9, 0x67, 0x1A, 0x99]}; +const IID FMTID_ImageSummaryInformation = {0x6444048F, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; +const IID FMTID_InternetSite = {0x000214A1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID FMTID_Intshcut = {0x000214A0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID FMTID_MediaFileSummaryInformation = {0x64440492, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; +const IID FMTID_Misc = {0x9B174B34, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; +const IID FMTID_MUSIC = {0x56A3372E, 0xCE9C, 0x11D2, [0x9F, 0x0E, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6]}; +const IID FMTID_PropertyBag = {0x20001801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +const IID FMTID_Query = {0x49691C90, 0x7E17, 0x101A, [0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9]}; +const IID FMTID_ShellDetails = {0x28636AA6, 0x953D, 0x11D2, [0xB5, 0xD6, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; +const IID FMTID_Storage = {0xB725F130, 0x47EF, 0x101A, [0xA5, 0xF1, 0x02, 0x60, 0x8C, 0x9E, 0xEB, 0xAC]}; +const IID FMTID_SummaryInformation = {0xF29F85E0, 0x4FF9, 0x1068, [0xAB, 0x91, 0x08, 0x00, 0x2B, 0x27, 0xB3, 0xD9]}; +const IID FMTID_UserDefinedProperties = {0xD5CDD505, 0x2E9C, 0x101B, [0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE]}; +const IID FMTID_VideoSummaryInformation = {0x64440491, 0x4C8B, 0x11D1, [0x8B, 0x70, 0x08, 0x00, 0x36, 0xB1, 0x1A, 0x03]}; +const IID FMTID_Volume = {0x9B174B35, 0x40FF, 0x11D2, [0xA2, 0x7E, 0x00, 0xC0, 0x4F, 0xC3, 0x08, 0x71]}; +const IID FMTID_WebView = {0xF2275480, 0xF782, 0x4291, [0xBD, 0x94, 0xF1, 0x36, 0x93, 0x51, 0x3A, 0xEC]}; +const IID GUID_ACPI_CMOS_INTERFACE_STANDARD = {0x3A8D0384, 0x6505, 0x40CA, [0xBC, 0x39, 0x56, 0xC1, 0x5F, 0x8C, 0x5F, 0xED]}; +const IID GUID_ACPI_INTERFACE_STANDARD = {0xB091A08A, 0xBA97, 0x11D0, [0xBD, 0x14, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; +const IID GUID_ACPI_PORT_RANGES_INTERFACE_STAND = {0xF14F609B, 0xCBBD, 0x4957, [0xA6, 0x74, 0xBC, 0x00, 0x21, 0x3F, 0x1C, 0x97]}; +const IID GUID_ACPI_REGS_INTERFACE_STANDARD = {0x06141966, 0x7245, 0x6369, [0x46, 0x2E, 0x4E, 0x65, 0x6C, 0x73, 0x6F, 0x6E]}; +const IID GUID_ARBITER_INTERFACE_STANDARD = {0xE644F185, 0x8C0E, 0x11D0, [0xBE, 0xCF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +const IID GUID_BUS_INTERFACE_STANDARD = {0x496B8280, 0x6F25, 0x11D0, [0xBE, 0xAF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +const IID GUID_BUS_TYPE_1394 = {0xF74E73EB, 0x9AC5, 0x45EB, [0xBE, 0x4D, 0x77, 0x2C, 0xC7, 0x1D, 0xDF, 0xB3]}; +const IID GUID_BUS_TYPE_AVC = {0xC06FF265, 0xAE09, 0x48F0, [0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83]}; +const IID GUID_BUS_TYPE_DOT4PRT = {0x441EE001, 0x4342, 0x11D5, [0xA1, 0x84, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; +const IID GUID_BUS_TYPE_EISA = {0xDDC35509, 0xF3FC, 0x11D0, [0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1]}; +const IID GUID_BUS_TYPE_HID = {0xEEAF37D0, 0x1963, 0x47C4, [0xAA, 0x48, 0x72, 0x47, 0x6D, 0xB7, 0xCF, 0x49]}; +const IID GUID_BUS_TYPE_INTERNAL = {0x1530EA73, 0x086B, 0x11D1, [0xA0, 0x9F, 0x00, 0xC0, 0x4F, 0xC3, 0x40, 0xB1]}; +const IID GUID_BUS_TYPE_IRDA = {0x7AE17DC1, 0xC944, 0x44D6, [0x88, 0x1F, 0x4C, 0x2E, 0x61, 0x05, 0x3B, 0xC1]}; +const IID GUID_BUS_TYPE_ISAPNP = {0xE676F854, 0xD87D, 0x11D0, [0x92, 0xB2, 0x00, 0xA0, 0xC9, 0x05, 0x5F, 0xC5]}; +const IID GUID_BUS_TYPE_LPTENUM = {0xC4CA1000, 0x2DDC, 0x11D5, [0xA1, 0x7A, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; +const IID GUID_BUS_TYPE_MCA = {0x1C75997A, 0xDC33, 0x11D0, [0x92, 0xB2, 0x00, 0xA0, 0xC9, 0x05, 0x5F, 0xC5]}; +const IID GUID_BUS_TYPE_PCI = {0xC8EBDFB0, 0xB510, 0x11D0, [0x80, 0xE5, 0x00, 0xA0, 0xC9, 0x25, 0x42, 0xE3]}; +const IID GUID_BUS_TYPE_PCMCIA = {0x09343630, 0xAF9F, 0x11D0, [0x92, 0xE9, 0x00, 0x00, 0xF8, 0x1E, 0x1B, 0x30]}; +const IID GUID_BUS_TYPE_SERENUM = {0x77114A87, 0x8944, 0x11D1, [0xBD, 0x90, 0x00, 0xA0, 0xC9, 0x06, 0xBE, 0x2D]}; +const IID GUID_BUS_TYPE_USB = {0x9D7DEBBC, 0xC85D, 0x11D1, [0x9E, 0xB4, 0x00, 0x60, 0x08, 0xC3, 0xA1, 0x9A]}; +const IID GUID_BUS_TYPE_USBPRINT = {0x441EE000, 0x4342, 0x11D5, [0xA1, 0x84, 0x00, 0xC0, 0x4F, 0x60, 0x52, 0x4D]}; +const IID GUID_Button = {0xA36D02F0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_CHECKVALUEEXCLUSIVE = {0x6650430C, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_ChordParam = {0xD2AC289E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_Clear_All_Bands = {0xD2AC28AB, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_COLOR = {0x66504301, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_ColorControlCallbacks = {0xEFD60CC2, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +const IID GUID_CommandParam = {0xD2AC289D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_CommandParam2 = {0x28F97EF7, 0x9538, 0x11D2, [0x97, 0xA9, 0x00, 0xC0, 0x4F, 0xA3, 0x6E, 0x58]}; +const IID GUID_ConnectToDLSCollection = {0x1DB1AE6B, 0xE92E, 0x11D1, [0xA8, 0xC5, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0x6E]}; +const IID GUID_ConstantForce = {0x13541C20, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_CustomForce = {0x13541C2B, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_D3DCallbacks2 = {0x0BA584E1, 0x70B6, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +const IID GUID_D3DCallbacks3 = {0xDDF41230, 0xEC0A, 0x11D0, [0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E]}; +const IID GUID_D3DExtendedCaps = {0x7DE41F80, 0x9D93, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +const IID GUID_D3DParseUnknownCommandCallback = {0x2E04FFA0, 0x98E4, 0x11D1, [0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID GUID_Damper = {0x13541C28, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_DDMoreCaps = {0x880BAF30, 0xB030, 0x11D0, [0x8E, 0xA7, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; +const IID GUID_DDMoreSurfaceCaps = {0x3B8A0466, 0xF269, 0x11D1, [0x88, 0x0B, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +const IID GUID_DDStereoMode = {0xF828169C, 0xA8E8, 0x11D2, [0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6]}; +const IID GUID_DefaultGMCollection = {0xF17E8673, 0xC3B4, 0x11D1, [0x87, 0x0B, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_DEVCLASS_1394 = {0x6BDD1FC1, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +const IID GUID_DEVCLASS_1394DEBUG = {0x66F250D6, 0x7801, 0x4A64, [0xB1, 0x39, 0xEE, 0xA8, 0x0A, 0x45, 0x0B, 0x24]}; +const IID GUID_DEVCLASS_61883 = {0x7EBEFBC0, 0x3200, 0x11D2, [0xB4, 0xC2, 0x00, 0xA0, 0xC9, 0x69, 0x7D, 0x07]}; +const IID GUID_DEVCLASS_ADAPTER = {0x4D36E964, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_APMSUPPORT = {0xD45B1C18, 0xC8FA, 0x11D1, [0x9F, 0x77, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; +const IID GUID_DEVCLASS_AVC = {0xC06FF265, 0xAE09, 0x48F0, [0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83]}; +const IID GUID_DEVCLASS_BATTERY = {0x72631E54, 0x78A4, 0x11D0, [0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; +const IID GUID_DEVCLASS_BLUETOOTH = {0xE0CBF06C, 0xCD8B, 0x4647, [0xBB, 0x8A, 0x26, 0x3B, 0x43, 0xF0, 0xF9, 0x74]}; +const IID GUID_DEVCLASS_CDROM = {0x4D36E965, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_COMPUTER = {0x4D36E966, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_DECODER = {0x6BDD1FC2, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +const IID GUID_DEVCLASS_DISKDRIVE = {0x4D36E967, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_DISPLAY = {0x4D36E968, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_DOT4 = {0x48721B56, 0x6795, 0x11D2, [0xB1, 0xA8, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2]}; +const IID GUID_DEVCLASS_DOT4PRINT = {0x49CE6AC8, 0x6F86, 0x11D2, [0xB1, 0xE5, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2]}; +const IID GUID_DEVCLASS_ENUM1394 = {0xC459DF55, 0xDB08, 0x11D1, [0xB0, 0x09, 0x00, 0xA0, 0xC9, 0x08, 0x1F, 0xF6]}; +const IID GUID_DEVCLASS_FDC = {0x4D36E969, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_FLOPPYDISK = {0x4D36E980, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_FSFILTER_ACTIVITYMONIT = {0xB86DFF51, 0xA31E, 0x4BAC, [0xB3, 0xCF, 0xE8, 0xCF, 0xE7, 0x5C, 0x9F, 0xC2]}; +const IID GUID_DEVCLASS_FSFILTER_ANTIVIRUS = {0xB1D1A169, 0xC54F, 0x4379, [0x81, 0xDB, 0xBE, 0xE7, 0xD8, 0x8D, 0x74, 0x54]}; +const IID GUID_DEVCLASS_FSFILTER_CFSMETADATASER = {0xCDCF0939, 0xB75B, 0x4630, [0xBF, 0x76, 0x80, 0xF7, 0xBA, 0x65, 0x58, 0x84]}; +const IID GUID_DEVCLASS_FSFILTER_COMPRESSION = {0xF3586BAF, 0xB5AA, 0x49B5, [0x8D, 0x6C, 0x05, 0x69, 0x28, 0x4C, 0x63, 0x9F]}; +const IID GUID_DEVCLASS_FSFILTER_CONTENTSCREEN = {0x3E3F0674, 0xC83C, 0x4558, [0xBB, 0x26, 0x98, 0x20, 0xE1, 0xEB, 0xA5, 0xC5]}; +const IID GUID_DEVCLASS_FSFILTER_CONTINUOUSBACK = {0x71AA14F8, 0x6FAD, 0x4622, [0xAD, 0x77, 0x92, 0xBB, 0x9D, 0x7E, 0x69, 0x47]}; +const IID GUID_DEVCLASS_FSFILTER_COPYPROTECTIO = {0x89786FF1, 0x9C12, 0x402F, [0x9C, 0x9E, 0x17, 0x75, 0x3C, 0x7F, 0x43, 0x75]}; +const IID GUID_DEVCLASS_FSFILTER_ENCRYPTION = {0xA0A701C0, 0xA511, 0x42FF, [0xAA, 0x6C, 0x06, 0xDC, 0x03, 0x95, 0x57, 0x6F]}; +const IID GUID_DEVCLASS_FSFILTER_HSM = {0xD546500A, 0x2AEB, 0x45F6, [0x94, 0x82, 0xF4, 0xB1, 0x79, 0x9C, 0x31, 0x77]}; +const IID GUID_DEVCLASS_FSFILTER_INFRASTRUCTUR = {0xE55FA6F9, 0x128C, 0x4D04, [0xAB, 0xAB, 0x63, 0x0C, 0x74, 0xB1, 0x45, 0x3A]}; +const IID GUID_DEVCLASS_FSFILTER_OPENFILEBACKU = {0xF8ECAFA6, 0x66D1, 0x41A5, [0x89, 0x9B, 0x66, 0x58, 0x5D, 0x72, 0x16, 0xB7]}; +const IID GUID_DEVCLASS_FSFILTER_PHYSICALQUOTAM = {0x6A0A8E78, 0xBBA6, 0x4FC4, [0xA7, 0x09, 0x1E, 0x33, 0xCD, 0x09, 0xD6, 0x7E]}; +const IID GUID_DEVCLASS_FSFILTER_QUOTAMANAGEME = {0x8503C911, 0xA6C7, 0x4919, [0x8F, 0x79, 0x50, 0x28, 0xF5, 0x86, 0x6B, 0x0C]}; +const IID GUID_DEVCLASS_FSFILTER_REPLICATION = {0x48D3EBC4, 0x4CF8, 0x48FF, [0xB8, 0x69, 0x9C, 0x68, 0xAD, 0x42, 0xEB, 0x9F]}; +const IID GUID_DEVCLASS_FSFILTER_SECURITYENHANC = {0xD02BC3DA, 0x0C8E, 0x4945, [0x9B, 0xD5, 0xF1, 0x88, 0x3C, 0x22, 0x6C, 0x8C]}; +const IID GUID_DEVCLASS_FSFILTER_SYSTEM = {0x5D1B9AAA, 0x01E2, 0x46AF, [0x84, 0x9F, 0x27, 0x2B, 0x3F, 0x32, 0x4C, 0x46]}; +const IID GUID_DEVCLASS_FSFILTER_SYSTEMRECOVER = {0x2DB15374, 0x706E, 0x4131, [0xA0, 0xC7, 0xD7, 0xC7, 0x8E, 0xB0, 0x28, 0x9A]}; +const IID GUID_DEVCLASS_FSFILTER_UNDELETE = {0xFE8F1572, 0xC67A, 0x48C0, [0xBB, 0xAC, 0x0B, 0x5C, 0x6D, 0x66, 0xCA, 0xFB]}; +const IID GUID_DEVCLASS_GPS = {0x6BDD1FC3, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +const IID GUID_DEVCLASS_HDC = {0x4D36E96A, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_HIDCLASS = {0x745A17A0, 0x74D3, 0x11D0, [0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA]}; +const IID GUID_DEVCLASS_IMAGE = {0x6BDD1FC6, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +const IID GUID_DEVCLASS_INFRARED = {0x6BDD1FC5, 0x810F, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +const IID GUID_DEVCLASS_KEYBOARD = {0x4D36E96B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_LEGACYDRIVER = {0x8ECC055D, 0x047F, 0x11D1, [0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1]}; +const IID GUID_DEVCLASS_MEDIA = {0x4D36E96C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_MEDIUM_CHANGER = {0xCE5939AE, 0xEBDE, 0x11D0, [0xB1, 0x81, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xC4]}; +const IID GUID_DEVCLASS_MODEM = {0x4D36E96D, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_MONITOR = {0x4D36E96E, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_MOUSE = {0x4D36E96F, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_MTD = {0x4D36E970, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_MULTIFUNCTION = {0x4D36E971, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_MULTIPORTSERIAL = {0x50906CB8, 0xBA12, 0x11D1, [0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; +const IID GUID_DEVCLASS_NET = {0x4D36E972, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_NETCLIENT = {0x4D36E973, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_NETSERVICE = {0x4D36E974, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_NETTRANS = {0x4D36E975, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_NODRIVER = {0x4D36E976, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_PCMCIA = {0x4D36E977, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_PNPPRINTERS = {0x4658EE7E, 0xF050, 0x11D1, [0xB6, 0xBD, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7]}; +const IID GUID_DEVCLASS_PORTS = {0x4D36E978, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_PRINTER = {0x4D36E979, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_PRINTERUPGRADE = {0x4D36E97A, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_PROCESSOR = {0x50127DC3, 0x0F36, 0x415E, [0xA6, 0xCC, 0x4C, 0xB3, 0xBE, 0x91, 0x0B, 0x65]}; +const IID GUID_DEVCLASS_SBP2 = {0xD48179BE, 0xEC20, 0x11D1, [0xB6, 0xB8, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7]}; +const IID GUID_DEVCLASS_SCSIADAPTER = {0x4D36E97B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_SMARTCARDREADER = {0x50DD5230, 0xBA8A, 0x11D1, [0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30]}; +const IID GUID_DEVCLASS_SOUND = {0x4D36E97C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_SYSTEM = {0x4D36E97D, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_TAPEDRIVE = {0x6D807884, 0x7D21, 0x11CF, [0x80, 0x1C, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_UNKNOWN = {0x4D36E97E, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVCLASS_USB = {0x36FC9E60, 0xC465, 0x11CF, [0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_DEVCLASS_VOLUME = {0x71A27CDD, 0x812A, 0x11D0, [0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +const IID GUID_DEVCLASS_VOLUMESNAPSHOT = {0x533C5B84, 0xEC70, 0x11D2, [0x95, 0x05, 0x00, 0xC0, 0x4F, 0x79, 0xDE, 0xAF]}; +const IID GUID_DEVCLASS_WCEUSBS = {0x25DBCE51, 0x6C8F, 0x4A72, [0x8A, 0x6D, 0xB5, 0x4C, 0x2B, 0x4F, 0xC8, 0x35]}; +const IID GUID_DEVICE_INTERFACE_ARRIVAL = {0xCB3A4004, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +const IID GUID_DEVICE_INTERFACE_REMOVAL = {0xCB3A4005, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +const IID GUID_DEVINTERFACE_CDCHANGER = {0x53F56312, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +const IID GUID_DEVINTERFACE_CDROM = {0x53F56308, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +const IID GUID_DEVINTERFACE_COMPORT = {0x86E0D1E0, 0x8089, 0x11D0, [0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73]}; +const IID GUID_DEVINTERFACE_DISK = {0x53F56307, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +const IID GUID_DEVINTERFACE_FLOPPY = {0x53F56311, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +const IID GUID_DEVINTERFACE_MEDIUMCHANGER = {0x53F56310, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +const IID GUID_DEVINTERFACE_PARTITION = {0x53F5630A, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +const IID GUID_DEVINTERFACE_SERENUM_BUS_ENUMERA = {0x4D36E978, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_DEVINTERFACE_STORAGEPORT = {0x2ACCFE60, 0xC130, 0x11D2, [0xB0, 0x82, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +const IID GUID_DEVINTERFACE_TAPE = {0x53F5630B, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +const IID GUID_DEVINTERFACE_VOLUME = {0x53F5630D, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +const IID GUID_DEVINTERFACE_WRITEONCEDISK = {0x53F5630C, 0xB6BF, 0x11D0, [0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B]}; +const IID GUID_DirectDrawPaletteStream = {0x730C7FFC, 0x5347, 0x11D1, [0x8C, 0x4D, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +const IID GUID_DirectDrawSurfaceStream = {0xE043BC46, 0x5317, 0x11D1, [0x8C, 0x4D, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +const IID GUID_DirectMusicAllTypes = {0xD2AC2893, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_Disable_Auto_Download = {0xD2AC28AA, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_DisableTempo = {0x45FC707D, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +const IID GUID_DisableTimeSig = {0x45FC707B, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +const IID GUID_DMUS_PROP_DLS1 = {0x178F2F27, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID GUID_DMUS_PROP_DLS2 = {0xF14599E5, 0x4689, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +const IID GUID_DMUS_PROP_Effects = {0xCDA8D611, 0x684A, 0x11D2, [0x87, 0x1E, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_DMUS_PROP_GM_Hardware = {0x178F2F24, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID GUID_DMUS_PROP_GS_Capable = {0x6496ABA2, 0x61B0, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +const IID GUID_DMUS_PROP_GS_Hardware = {0x178F2F25, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID GUID_DMUS_PROP_INSTRUMENT2 = {0x865FD372, 0x9F67, 0x11D2, [0x87, 0x2A, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_DMUS_PROP_LegacyCaps = {0xCFA7CDC2, 0x00A1, 0x11D2, [0xAA, 0xD5, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID GUID_DMUS_PROP_MemorySize = {0x178F2F28, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID GUID_DMUS_PROP_SampleMemorySize = {0x178F2F28, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID GUID_DMUS_PROP_SamplePlaybackRate = {0x2A91F713, 0xA4BF, 0x11D2, [0xBB, 0xDF, 0x00, 0x60, 0x08, 0x33, 0xDB, 0xD8]}; +const IID GUID_DMUS_PROP_SynthSink_DSOUND = {0x0AA97844, 0xC877, 0x11D1, [0x87, 0x0C, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_DMUS_PROP_SynthSink_WAVE = {0x0AA97845, 0xC877, 0x11D1, [0x87, 0x0C, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_DMUS_PROP_Volume = {0xFEDFAE25, 0xE46E, 0x11D1, [0xAA, 0xCE, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID GUID_DMUS_PROP_WavesReverb = {0x04CB5622, 0x32E5, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +const IID GUID_DMUS_PROP_WriteLatency = {0x268A0FA0, 0x60F2, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +const IID GUID_DMUS_PROP_WritePeriod = {0x268A0FA1, 0x60F2, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +const IID GUID_DMUS_PROP_XG_Capable = {0x6496ABA1, 0x61B0, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +const IID GUID_DMUS_PROP_XG_Hardware = {0x178F2F26, 0xC364, 0x11D1, [0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID GUID_Download = {0xD2AC28A7, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_Enable_Auto_Download = {0xD2AC28A9, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_EnableTempo = {0x45FC707E, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +const IID GUID_EnableTimeSig = {0x45FC707C, 0x1DB4, 0x11D2, [0xBC, 0xAC, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +const IID GUID_FONTBOLD = {0x6650430F, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_FONTITALIC = {0x66504310, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_FONTNAME = {0x6650430D, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_FONTSIZE = {0x6650430E, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_FONTSTRIKETHROUGH = {0x66504312, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_FONTUNDERSCORE = {0x66504311, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_Friction = {0x13541C2A, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_HANDLE = {0x66504313, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_HasPathProperties = {0x0002DE81, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID GUID_HIDClass = {0x745A17A0, 0x74D3, 0x11D0, [0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA]}; +const IID GUID_HIMETRIC = {0x66504300, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_HWPROFILE_CHANGE_CANCELLED = {0xCB3A4002, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +const IID GUID_HWPROFILE_CHANGE_COMPLETE = {0xCB3A4003, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +const IID GUID_HWPROFILE_QUERY_CHANGE = {0xCB3A4001, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +const IID GUID_IDirectMusicBand = {0xD2AC28AC, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_IDirectMusicChordMap = {0xD2AC28AD, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_IDirectMusicStyle = {0xD2AC28A1, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_Inertia = {0x13541C29, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_INT_ROUTE_INTERFACE_STANDARD = {0x70941BF4, 0x0073, 0x11D1, [0xA0, 0x9E, 0x00, 0xC0, 0x4F, 0xC3, 0x40, 0xB1]}; +const IID GUID_Joystick = {0x6F1D2B70, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_KernelCallbacks = {0x80863800, 0x6B06, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +const IID GUID_KernelCaps = {0xFFAA7540, 0x7AA8, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +const IID GUID_Key = {0x55728220, 0xD33C, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_KeyboardClass = {0x4D36E96B, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_LEGACY_DEVICE_DETECTION_STANDAR = {0x50FEB0DE, 0x596A, 0x11D2, [0xA5, 0xB8, 0x00, 0x00, 0xF8, 0x1A, 0x46, 0x19]}; +const IID GUID_MediaClass = {0x4D36E96C, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_MF_ENUMERATION_INTERFACE = {0xAEB895F0, 0x5586, 0x11D1, [0x8D, 0x84, 0x00, 0xA0, 0xC9, 0x06, 0xB2, 0x44]}; +const IID GUID_Miscellaneous2Callbacks = {0x406B2F00, 0x3E5A, 0x11D1, [0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A]}; +const IID GUID_MiscellaneousCallbacks = {0xEFD60CC0, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +const IID GUID_MotionCompCallbacks = {0xB1122B40, 0x5DA5, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; +const IID GUID_MouseClass = {0x4D36E96F, 0xE325, 0x11CE, [0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18]}; +const IID GUID_MuteParam = {0xD2AC28AF, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_NDIS_802_11_ADD_WEP = {0x4307BFF0, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_AUTHENTICATION_MODE = {0x43920A24, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_BASIC_RATES = {0x4A198516, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_BSSID = {0x2504B6C2, 0x1FA5, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_BSSID_LIST = {0x69526F9A, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_BSSID_LIST_SCAN = {0x0D9E01E1, 0xBA70, 0x11D4, [0xB6, 0x75, 0x00, 0x20, 0x48, 0x57, 0x03, 0x37]}; +const IID GUID_NDIS_802_11_CONFIGURATION = {0x4A4DF982, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_DESIRED_RATES = {0x452EE08E, 0x2536, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_DISASSOCIATE = {0x43671F40, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_FRAGMENTATION_THRESH = {0x69AAA7C4, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_INFRASTRUCTURE_MODE = {0x697D5A7E, 0x2062, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_NETWORK_TYPE_IN_USE = {0x857E2326, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_NETWORK_TYPES_SUPPOR = {0x8531D6E6, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_NUMBER_OF_ANTENNAS = {0x01779336, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_POWER_MODE = {0x85BE837C, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_PRIVACY_FILTER = {0x6733C4E9, 0x4792, 0x11D4, [0x97, 0xF1, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_REMOVE_WEP = {0x433C345C, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_RSSI = {0x1507DB16, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_RSSI_TRIGGER = {0x155689B8, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_RTS_THRESHOLD = {0x0134D07E, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_RX_ANTENNA_SELECTED = {0x01AC07A2, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_SSID = {0x7D2A90EA, 0x2041, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_STATISTICS = {0x42BB73B0, 0x2129, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_SUPPORTED_RATES = {0x49DB8722, 0x2068, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_TX_ANTENNA_SELECTED = {0x01DBB74A, 0x2064, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_TX_POWER_LEVEL = {0x11E6BA76, 0x2053, 0x11D4, [0x97, 0xEB, 0x00, 0xC0, 0x4F, 0x79, 0xC4, 0x03]}; +const IID GUID_NDIS_802_11_WEP_STATUS = {0xB027A21F, 0x3CFA, 0x4125, [0x80, 0x0B, 0x3F, 0x7A, 0x18, 0xFD, 0xDC, 0xDC]}; +const IID GUID_NDIS_802_3_CURRENT_ADDRESS = {0x44795700, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_3_MAC_OPTIONS = {0x44795703, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_3_MAXIMUM_LIST_SIZE = {0x44795702, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_3_MULTICAST_LIST = {0x44795701, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_3_PERMANENT_ADDRESS = {0x447956FF, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_3_RCV_ERROR_ALIGNMENT = {0x44795704, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_3_XMIT_MORE_COLLISIONS = {0x44795706, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_3_XMIT_ONE_COLLISION = {0x44795705, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_5_CURRENT_ADDRESS = {0x44795708, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_5_CURRENT_FUNCTIONAL = {0x44795709, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_5_CURRENT_GROUP = {0x4479570A, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_5_CURRENT_RING_STATE = {0xACF14032, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_5_CURRENT_RING_STATUS = {0x890A36EC, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_5_LAST_OPEN_STATUS = {0x4479570B, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_5_LINE_ERRORS = {0xACF14033, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_5_LOST_FRAMES = {0xACF14034, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_802_5_PERMANENT_ADDRESS = {0x44795707, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_HW_CURRENT_ADDRESS = {0x791AD1A1, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_MAX_AAL0_PACKET_SIZE = {0x791AD1A5, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_MAX_AAL1_PACKET_SIZE = {0x791AD1A6, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_MAX_AAL34_PACKET_SIZE = {0x791AD1A7, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_MAX_AAL5_PACKET_SIZE = {0x791AD191, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_MAX_ACTIVE_VCI_BITS = {0x791AD1A3, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_MAX_ACTIVE_VCS = {0x791AD1A2, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_MAX_ACTIVE_VPI_BITS = {0x791AD1A4, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_RCV_CELLS_DROPPED = {0x0A21480C, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_RCV_CELLS_OK = {0x0A21480A, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_SUPPORTED_AAL_TYPES = {0x791AD1A0, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_SUPPORTED_SERVICE_CATEG = {0x791AD19F, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_SUPPORTED_VC_RATES = {0x791AD19E, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ATM_XMIT_CELLS_OK = {0x0A21480B, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ENUMERATE_ADAPTER = {0x981F2D7F, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_ENUMERATE_VC = {0x981F2D82, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_ATTACHMENT_TYPE = {0xACF1403D, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_DOWNSTREAM_NODE_LONG = {0xACF1403F, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_FRAME_ERRORS = {0xACF14040, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_FRAMES_LOST = {0xACF14041, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_LCONNECTION_STATE = {0xACF14045, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_LCT_FAILURES = {0xACF14043, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_LEM_REJECTS = {0xACF14044, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_LONG_CURRENT_ADDR = {0xACF14036, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_LONG_MAX_LIST_SIZE = {0xACF14038, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_LONG_MULTICAST_LIST = {0xACF14037, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_LONG_PERMANENT_ADDR = {0xACF14035, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_RING_MGT_STATE = {0xACF14042, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_SHORT_CURRENT_ADDR = {0xACF1403A, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_SHORT_MAX_LIST_SIZE = {0xACF1403C, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_SHORT_MULTICAST_LIST = {0xACF1403B, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_SHORT_PERMANENT_ADDR = {0xACF14039, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_FDDI_UPSTREAM_NODE_LONG = {0xACF1403E, 0xA61C, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_DRIVER_VERSION = {0x791AD198, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_HARDWARE_STATUS = {0x791AD192, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_LINK_SPEED = {0x791AD195, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_MAC_OPTIONS = {0x791AD19A, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_MEDIA_CONNECT_STATU = {0x791AD19B, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_MEDIA_IN_USE = {0x791AD194, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_MEDIA_SUPPORTED = {0x791AD193, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_MINIMUM_LINK_SPEED = {0x791AD19D, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_RCV_PDUS_ERROR = {0x0A214808, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_RCV_PDUS_NO_BUFFER = {0x0A214809, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_RCV_PDUS_OK = {0x0A214806, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_VENDOR_DESCRIPTION = {0x791AD197, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_VENDOR_DRIVER_VERSI = {0x791AD19C, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_VENDOR_ID = {0x791AD196, 0xE35C, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_XMIT_PDUS_ERROR = {0x0A214807, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CO_XMIT_PDUS_OK = {0x0A214805, 0xE35F, 0x11D0, [0x96, 0x92, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CURRENT_LOOKAHEAD = {0x5EC10361, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_CURRENT_PACKET_FILTER = {0x5EC10360, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_DRIVER_VERSION = {0x5EC10362, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_HARDWARE_STATUS = {0x5EC10354, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_LINK_SPEED = {0x5EC10359, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_MAC_OPTIONS = {0x5EC10365, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_MAXIMUM_FRAME_SIZE = {0x5EC10358, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_MAXIMUM_LOOKAHEAD = {0x5EC10357, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_MAXIMUM_SEND_PACKETS = {0x5EC10367, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_MAXIMUM_TOTAL_SIZE = {0x5EC10363, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_MEDIA_CONNECT_STATUS = {0x5EC10366, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_MEDIA_IN_USE = {0x5EC10356, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_MEDIA_SUPPORTED = {0x5EC10355, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_PHYSICAL_MEDIUM = {0x418CA16D, 0x3937, 0x4208, [0x94, 0x0A, 0xEC, 0x61, 0x96, 0x27, 0x80, 0x85]}; +const IID GUID_NDIS_GEN_RCV_ERROR = {0x447956FD, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_RCV_NO_BUFFER = {0x447956FE, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_RCV_OK = {0x447956FB, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_RECEIVE_BLOCK_SIZE = {0x5EC1035D, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_RECEIVE_BUFFER_SPACE = {0x5EC1035B, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_TRANSMIT_BLOCK_SIZE = {0x5EC1035C, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_TRANSMIT_BUFFER_SPACE = {0x5EC1035A, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_VENDOR_DESCRIPTION = {0x5EC1035F, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_VENDOR_DRIVER_VERSION = {0x447956F9, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_VENDOR_ID = {0x5EC1035E, 0xA61A, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_VLAN_ID = {0x765DC702, 0xC5E8, 0x4B67, [0x84, 0x3B, 0x3F, 0x5A, 0x4F, 0xF2, 0x64, 0x8B]}; +const IID GUID_NDIS_GEN_XMIT_ERROR = {0x447956FC, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_GEN_XMIT_OK = {0x447956FA, 0xA61B, 0x11D0, [0x8D, 0xD4, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_LAN_CLASS = {0xAD498944, 0x762F, 0x11D0, [0x8D, 0xCB, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_NOTIFY_ADAPTER_ARRIVAL = {0x981F2D81, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_NOTIFY_ADAPTER_REMOVAL = {0x981F2D80, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_NOTIFY_BIND = {0x5413531C, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_NOTIFY_UNBIND = {0x6E3CE1EC, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_NOTIFY_VC_ARRIVAL = {0x182F9E0C, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_NOTIFY_VC_REMOVAL = {0x981F2D79, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_STATUS_LINK_SPEED_CHANGE = {0x981F2D85, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_STATUS_MEDIA_CONNECT = {0x981F2D7D, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_STATUS_MEDIA_DISCONNECT = {0x981F2D7E, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_STATUS_MEDIA_SPECIFIC_INDIC = {0x981F2D84, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_STATUS_RESET_END = {0x981F2D77, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_STATUS_RESET_START = {0x981F2D76, 0xB1F3, 0x11D0, [0x8D, 0xD7, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C]}; +const IID GUID_NDIS_WAKE_ON_MAGIC_PACKET_ONLY = {0xA14F1C97, 0x8839, 0x4F8A, [0x99, 0x96, 0xA2, 0x89, 0x96, 0xEB, 0xBF, 0x1D]}; +const IID GUID_NETSHELL_PROPS = {0x2D15A9A1, 0xA556, 0x4189, [0x91, 0xAD, 0x02, 0x74, 0x58, 0xF1, 0x1A, 0x07]}; +const IID GUID_NonLocalVidMemCaps = {0x86C4FA80, 0x8D84, 0x11D0, [0x94, 0xE8, 0x00, 0xC0, 0x4F, 0xC3, 0x41, 0x37]}; +const IID GUID_NOTIFICATION_CHORD = {0xD2AC289B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_NOTIFICATION_COMMAND = {0xD2AC289C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_NOTIFICATION_MEASUREANDBEAT = {0xD2AC289A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_NOTIFICATION_PERFORMANCE = {0x81F75BC5, 0x4E5D, 0x11D2, [0xBC, 0xC7, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +const IID GUID_NOTIFICATION_SEGMENT = {0xD2AC2899, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_NULL = {0x00000000, 0x0000, 0x0000, [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; +const IID GUID_OPTIONVALUEEXCLUSIVE = {0x6650430B, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_OptSurfaceKmodeInfo = {0xE05C8472, 0x51D4, 0x11D1, [0x8C, 0xCE, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID GUID_OptSurfaceUmodeInfo = {0x9D792804, 0x5FA8, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID GUID_PathProperty = {0x0002DE80, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID GUID_PCI_BUS_INTERFACE_STANDARD = {0x496B8281, 0x6F25, 0x11D0, [0xBE, 0xAF, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F]}; +const IID GUID_PCI_DEVICE_PRESENT_INTERFACE = {0xD1B82C26, 0xBF49, 0x45EF, [0xB2, 0x16, 0x71, 0xCB, 0xD7, 0x88, 0x9B, 0x57]}; +const IID GUID_PCMCIA_BUS_INTERFACE_STANDARD = {0x76173AF0, 0xC504, 0x11D1, [0x94, 0x7F, 0x00, 0xC0, 0x4F, 0xB9, 0x60, 0xEE]}; +const IID GUID_PerfAutoDownload = {0xFB09565B, 0x3631, 0x11D2, [0xBC, 0xB8, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +const IID GUID_PerfMasterGrooveLevel = {0xD2AC28B2, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_PerfMasterTempo = {0xD2AC28B0, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_PerfMasterVolume = {0xD2AC28B1, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_PNP_CUSTOM_NOTIFICATION = {0xACA73F8E, 0x8D23, 0x11D1, [0xAC, 0x7D, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xD0]}; +const IID GUID_PNP_POWER_NOTIFICATION = {0xC2CF0660, 0xEB7A, 0x11D1, [0xBD, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xD0]}; +const IID GUID_POV = {0xA36D02F2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_POWER_DEVICE_ENABLE = {0x827C0A6F, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; +const IID GUID_POWER_DEVICE_TIMEOUTS = {0xA45DA735, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; +const IID GUID_POWER_DEVICE_WAKE_ENABLE = {0xA9546A82, 0xFEB0, 0x11D0, [0xBD, 0x26, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A]}; +const IID GUID_QOS_BESTEFFORT_BANDWIDTH = {0xED885290, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +const IID GUID_QOS_ENABLE_AVG_STATS = {0xBAFB6D11, 0x27C4, 0x4801, [0xA4, 0x6F, 0xEF, 0x80, 0x80, 0xC1, 0x88, 0xC8]}; +const IID GUID_QOS_ENABLE_WINDOW_ADJUSTMENT = {0xAA966725, 0xD3E9, 0x4C55, [0xB3, 0x35, 0x2A, 0x00, 0x27, 0x9A, 0x1E, 0x64]}; +const IID GUID_QOS_FLOW_8021P_CONFORMING = {0x08C1E013, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +const IID GUID_QOS_FLOW_8021P_NONCONFORMING = {0x09023F91, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +const IID GUID_QOS_FLOW_COUNT = {0x1147F880, 0x40ED, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +const IID GUID_QOS_FLOW_IP_CONFORMING = {0x07F99A8B, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +const IID GUID_QOS_FLOW_IP_NONCONFORMING = {0x087A5987, 0xFCD2, 0x11D2, [0xBE, 0x1E, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +const IID GUID_QOS_FLOW_MODE = {0x5C82290A, 0x515A, 0x11D2, [0x8E, 0x58, 0x00, 0xC0, 0x4F, 0xC9, 0xBF, 0xCB]}; +const IID GUID_QOS_ISSLOW_FLOW = {0xABF273A4, 0xEE07, 0x11D2, [0xBE, 0x1B, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +const IID GUID_QOS_LATENCY = {0xFC408EF0, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +const IID GUID_QOS_MAX_OUTSTANDING_SENDS = {0x161FFA86, 0x6120, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +const IID GUID_QOS_NON_BESTEFFORT_LIMIT = {0x185C44E0, 0x40ED, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +const IID GUID_QOS_REMAINING_BANDWIDTH = {0xC4C51720, 0x40EC, 0x11D1, [0x2C, 0x91, 0x00, 0xAA, 0x00, 0x57, 0x49, 0x15]}; +const IID GUID_QOS_STATISTICS_BUFFER = {0xBB2C0980, 0xE900, 0x11D1, [0xB0, 0x7E, 0x00, 0x80, 0xC7, 0x13, 0x82, 0xBF]}; +const IID GUID_QOS_TIMER_RESOLUTION = {0xBA10CC88, 0xF13E, 0x11D2, [0xBE, 0x1B, 0x00, 0xA0, 0xC9, 0x9E, 0xE6, 0x3B]}; +const IID GUID_RampForce = {0x13541C21, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_RhythmParam = {0xD2AC289F, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_RxAxis = {0xA36D02F4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_RyAxis = {0xA36D02F5, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_RzAxis = {0xA36D02E3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_SawtoothDown = {0x13541C26, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_SawtoothUp = {0x13541C25, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_SeedVariations = {0x65B76FA5, 0xFF37, 0x11D2, [0x81, 0x4E, 0x00, 0xC0, 0x4F, 0xA3, 0x6E, 0x58]}; +const IID GUID_Sine = {0x13541C23, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_Slider = {0xA36D02E4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_Spring = {0x13541C27, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_Square = {0x13541C22, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_StandardMIDIFile = {0x06621075, 0xE92E, 0x11D1, [0xA8, 0xC5, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0x6E]}; +const IID GUID_SysKeyboard = {0x6F1D2B61, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_SysKeyboardEm = {0x6F1D2B82, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_SysKeyboardEm2 = {0x6F1D2B83, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_SysMouse = {0x6F1D2B60, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_SysMouseEm = {0x6F1D2B80, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_SysMouseEm2 = {0x6F1D2B81, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_TARGET_DEVICE_QUERY_REMOVE = {0xCB3A4006, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +const IID GUID_TARGET_DEVICE_REMOVE_CANCELLED = {0xCB3A4007, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +const IID GUID_TARGET_DEVICE_REMOVE_COMPLETE = {0xCB3A4008, 0x46F0, 0x11D0, [0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F]}; +const IID GUID_TempoParam = {0xD2AC28A5, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_TimeSignature = {0xD2AC28A4, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_TRANSLATOR_INTERFACE_STANDARD = {0x6C154A92, 0xAACF, 0x11D0, [0x8D, 0x2A, 0x00, 0xA0, 0xC9, 0x06, 0xB2, 0x44]}; +const IID GUID_Triangle = {0x13541C24, 0x8E33, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID GUID_TRISTATE = {0x6650430A, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_Unknown = {0xA36D02F3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_Unload = {0xD2AC28A8, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID GUID_UserModeDriverInfo = {0xF0B0E8E2, 0x5F97, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID GUID_UserModeDriverPassword = {0x97F861B6, 0x60A1, 0x11D1, [0x8C, 0xD0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID GUID_VideoPortCallbacks = {0xEFD60CC1, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +const IID GUID_VideoPortCaps = {0xEFD60CC3, 0x49E7, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +const IID GUID_XAxis = {0xA36D02E0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_XPOS = {0x66504306, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_XPOSPIXEL = {0x66504302, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_XSIZE = {0x66504308, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_XSIZEPIXEL = {0x66504304, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_YAxis = {0xA36D02E1, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_YPOS = {0x66504307, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_YPOSPIXEL = {0x66504303, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_YSIZE = {0x66504309, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_YSIZEPIXEL = {0x66504305, 0xBE0F, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID GUID_ZAxis = {0xA36D02E2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID GUID_ZPixelFormats = {0x93869880, 0x36CF, 0x11D1, [0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE]}; +const IID IID_AsyncIAdviseSink = {0x00000150, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_AsyncIAdviseSink2 = {0x00000151, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_AsyncIBackgroundCopyCallback = {0xCA29D251, 0xB4BB, 0x4679, [0xA3, 0xD9, 0xAE, 0x80, 0x06, 0x11, 0x9D, 0x54]}; +const IID IID_AsyncIClusCfgBaseCluster = {0xA8A5C614, 0x2518, 0x47F5, [0x96, 0xCA, 0xCA, 0xFA, 0x7F, 0xFB, 0xAF, 0x68]}; +const IID IID_AsyncIClusCfgCallback = {0xEBCE8945, 0xAC69, 0x4B3A, [0x86, 0x5D, 0xE2, 0xD4, 0xEB, 0x33, 0xE4, 0x1B]}; +const IID IID_AsyncIClusCfgClusterInfo = {0x8BDBA247, 0x04F5, 0x4114, [0x83, 0x7E, 0xB2, 0x63, 0x41, 0x2A, 0x4B, 0x64]}; +const IID IID_AsyncIClusCfgCredentials = {0x54AA9406, 0xA409, 0x4B49, [0xB3, 0x14, 0x5F, 0x0A, 0x0C, 0xE4, 0xC8, 0x8F]}; +const IID IID_AsyncIClusCfgEvictCleanup = {0x6FE3E362, 0xD373, 0x4C5F, [0xA0, 0xAF, 0x1D, 0xFE, 0x84, 0x93, 0xC6, 0x55]}; +const IID IID_AsyncIClusCfgInitialize = {0x2A0EB82E, 0xF878, 0x492A, [0x95, 0x1E, 0xAE, 0x00, 0x09, 0x18, 0xC4, 0xA6]}; +const IID IID_AsyncIClusCfgIPAddressInfo = {0xAAEAF0A5, 0xE310, 0x4604, [0xA5, 0x5E, 0x2F, 0x9D, 0xDC, 0x41, 0x57, 0xA9]}; +const IID IID_AsyncIClusCfgManagedResourceInfo = {0x73616028, 0x1243, 0x4749, [0xAD, 0x84, 0x0B, 0x5E, 0xB3, 0x58, 0xFF, 0xA0]}; +const IID IID_AsyncIClusCfgMemberSetChangeListe = {0x2B645350, 0x2643, 0x4ABC, [0xA4, 0xE5, 0x82, 0x4D, 0x88, 0x1B, 0x75, 0x82]}; +const IID IID_AsyncIClusCfgNetworkInfo = {0xED71FD2D, 0xAD02, 0x4DFC, [0xB3, 0x76, 0x5F, 0xFA, 0x5F, 0x5A, 0x7C, 0x2C]}; +const IID IID_AsyncIClusCfgNodeInfo = {0x4F3BB40B, 0xDF27, 0x40A0, [0xB3, 0x1A, 0xBA, 0x18, 0x32, 0x4C, 0xEB, 0x9D]}; +const IID IID_AsyncIClusCfgPartitionInfo = {0xEC1EBD9F, 0x5866, 0x4846, [0x89, 0x52, 0xEC, 0x36, 0xC3, 0x96, 0x1E, 0xEF]}; +const IID IID_AsyncIClusCfgResourceTypeCreate = {0x3AFCE3B9, 0x5F3E, 0x4DDF, [0xA8, 0xF4, 0x4B, 0x4F, 0xCB, 0xF2, 0x8F, 0x8F]}; +const IID IID_AsyncIClusCfgResourceTypeInfo = {0xC649A282, 0xC847, 0x4F5C, [0x98, 0x41, 0xD2, 0xF7, 0x3B, 0x5A, 0xA7, 0x1D]}; +const IID IID_AsyncIClusCfgServer = {0x2A1640AA, 0x4561, 0x4A08, [0xB5, 0xD9, 0x0A, 0xA3, 0x8C, 0x6B, 0xE6, 0x28]}; +const IID IID_AsyncIClusCfgStartupListener = {0xD282CAF0, 0x2EDE, 0x4AB9, [0xA5, 0xD5, 0xF7, 0xBD, 0xE3, 0xD2, 0x3F, 0x10]}; +const IID IID_AsyncIClusCfgStartupNotify = {0xC2B0D06A, 0x6353, 0x4EE1, [0xB2, 0x53, 0x6B, 0x0D, 0x75, 0xDB, 0x2C, 0xD3]}; +const IID IID_AsyncIEnumClusCfgIPAddresses = {0xBD5F35BA, 0x0BC0, 0x455F, [0x92, 0x6D, 0xC3, 0xD3, 0x56, 0x41, 0x94, 0x87]}; +const IID IID_AsyncIEnumClusCfgManagedResource = {0xB138483F, 0x9695, 0x4FA6, [0xA9, 0x8F, 0x0D, 0xE2, 0xFB, 0x35, 0x54, 0x49]}; +const IID IID_AsyncIEnumClusCfgNetworks = {0xF56B9B0D, 0xE7B8, 0x49EC, [0xA8, 0x43, 0x54, 0x75, 0x07, 0x6B, 0x94, 0x7D]}; +const IID IID_AsyncIEnumClusCfgPartitions = {0x4440BB6A, 0xB0AC, 0x479D, [0xB5, 0x34, 0x72, 0x65, 0xA3, 0x1D, 0x6C, 0x56]}; +const IID IID_AsyncIMultiQI = {0x000E0020, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_AsyncIPipeByte = {0xDB2F3ACB, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +const IID IID_AsyncIPipeDouble = {0xDB2F3ACF, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +const IID IID_AsyncIPipeLong = {0xDB2F3ACD, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +const IID IID_AsyncIUnknown = {0x000E0000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_DFConstraint = {0x4A3DF050, 0x23BD, 0x11D2, [0x93, 0x9F, 0x00, 0xA0, 0xC9, 0x1E, 0xED, 0xBA]}; +const IID IID_DIEnumWbemClassObject = {0xCB7CA037, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID IID_DIWbemCallResult = {0xCB7CA039, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID IID_DIWbemClassObject = {0xCB7CA033, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID IID_DIWbemContext = {0xCB7CA038, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID IID_DIWbemLocator = {0xCB7CA035, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID IID_DIWbemObjectSink = {0xCB7CA036, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID IID_DIWbemQualifierSet = {0xCB7CA034, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID IID_DIWbemServices = {0xCB7CA03A, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID IID_Folder = {0xBBCBDE60, 0xC3FF, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_Folder2 = {0xF0D2D8EF, 0x3890, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; +const IID IID_Folder3 = {0xA7AE5F64, 0xC4D7, 0x4D7F, [0x93, 0x07, 0x4D, 0x24, 0xEE, 0x54, 0xB8, 0x41]}; +const IID IID_FolderItem = {0xFAC32C80, 0xCBE4, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_FolderItem2 = {0xEDC817AA, 0x92B8, 0x11D1, [0xB0, 0x75, 0x00, 0xC0, 0x4F, 0xC3, 0x3A, 0xA5]}; +const IID IID_FolderItems = {0x744129E0, 0xCBE5, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_FolderItems2 = {0xC94F0AD0, 0xF363, 0x11D2, [0xA3, 0x27, 0x00, 0xC0, 0x4F, 0x8E, 0xEC, 0x7F]}; +const IID IID_FolderItems3 = {0xEAA7C309, 0xBBEC, 0x49D5, [0x82, 0x1D, 0x64, 0xD9, 0x66, 0xCB, 0x66, 0x7F]}; +const IID IID_FolderItemVerb = {0x08EC3E00, 0x50B0, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; +const IID IID_FolderItemVerbs = {0x1F8352C0, 0x50B0, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; +const IID IID_IAccessControl = {0xEEDD23E0, 0x8410, 0x11CE, [0xA1, 0xC3, 0x08, 0x00, 0x2B, 0x2B, 0x8D, 0x8F]}; +const IID IID_IAccessible = {0x618736E0, 0x3C3D, 0x11CF, [0x81, 0x0C, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71]}; +const IID IID_IAccessibleHandler = {0x03022430, 0xABC4, 0x11D0, [0xBD, 0xE2, 0x00, 0xAA, 0x00, 0x1A, 0x19, 0x53]}; +const IID IID_IAccessor = {0x0C733A8C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IAccIdentity = {0x7852B78D, 0x1CFD, 0x41C1, [0xA6, 0x15, 0x9C, 0x0C, 0x85, 0x96, 0x0B, 0x5F]}; +const IID IID_IAccountDiscovery = {0xFA202BBC, 0x6ABE, 0x4C17, [0xB1, 0x84, 0x57, 0x0B, 0x6C, 0xF2, 0x56, 0xA6]}; +const IID IID_IAccPropServer = {0x76C0DBBB, 0x15E0, 0x4E7B, [0xB6, 0x1B, 0x20, 0xEE, 0xEA, 0x20, 0x01, 0xE0]}; +const IID IID_IAccPropServices = {0x6E26E776, 0x04F0, 0x495D, [0x80, 0xE4, 0x33, 0x30, 0x35, 0x2E, 0x31, 0x69]}; +const IID IID_IACList = {0x77A130B0, 0x94FD, 0x11D0, [0xA5, 0x44, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +const IID IID_IACList2 = {0x470141A0, 0x5186, 0x11D2, [0xBB, 0xB6, 0x00, 0x60, 0x97, 0x7B, 0x46, 0x4C]}; +const IID IID_IActionProgress = {0x49FF1173, 0xEADC, 0x446D, [0x92, 0x85, 0x15, 0x64, 0x53, 0xA6, 0x43, 0x1C]}; +const IID IID_IActionProgressDialog = {0x49FF1172, 0xEADC, 0x446D, [0x92, 0x85, 0x15, 0x64, 0x53, 0xA6, 0x43, 0x1C]}; +const IID IID_IActiveDesktop = {0xF490EB00, 0x1240, 0x11D1, [0x98, 0x88, 0x00, 0x60, 0x97, 0xDE, 0xAC, 0xF9]}; +const IID IID_IActiveIME = {0x6FE20962, 0xD077, 0x11D0, [0x8F, 0xE7, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +const IID IID_IActiveIME2 = {0xE1C4BF0E, 0x2D53, 0x11D2, [0x93, 0xE1, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; +const IID IID_IActiveIMMApp = {0x08C0E040, 0x62D1, 0x11D1, [0x93, 0x26, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; +const IID IID_IActiveIMMIME = {0x08C03411, 0xF96B, 0x11D0, [0xA4, 0x75, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +const IID IID_IActiveIMMMessagePumpOwner = {0xB5CF2CFA, 0x8AEB, 0x11D1, [0x93, 0x64, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; +const IID IID_IActiveIMMRegistrar = {0xB3458082, 0xBD00, 0x11D1, [0x93, 0x9B, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; +const IID IID_IActiveScript = {0xBB1A2AE1, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID IID_IActiveScriptAuthor = {0x9C109DA0, 0x7006, 0x11D1, [0xB3, 0x6C, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xB2]}; +const IID IID_IActiveScriptAuthorProcedure = {0x7E2D4B70, 0xBD9A, 0x11D0, [0x93, 0x36, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +const IID IID_IActiveScriptDebug = {0x51973C10, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IActiveScriptDebug32 = {0x51973C10, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IActiveScriptDebug64 = {0xBC437E23, 0xF5B8, 0x47F4, [0xBB, 0x79, 0x7D, 0x1C, 0xE5, 0x48, 0x3B, 0x86]}; +const IID IID_IActiveScriptEncode = {0xBB1A2AE3, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID IID_IActiveScriptError = {0xEAE1BA61, 0xA4ED, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID IID_IActiveScriptError64 = {0xB21FB2A1, 0x5B8F, 0x4963, [0x8C, 0x21, 0x21, 0x45, 0x0F, 0x84, 0xED, 0x7F]}; +const IID IID_IActiveScriptErrorDebug = {0x51973C12, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IActiveScriptGarbageCollector = {0x6AA2C4A0, 0x2B53, 0x11D4, [0xA2, 0xA0, 0x00, 0x10, 0x4B, 0xD3, 0x50, 0x90]}; +const IID IID_IActiveScriptHostEncode = {0xBEE9B76E, 0xCFE3, 0x11D1, [0xB7, 0x47, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; +const IID IID_IActiveScriptParse = {0xBB1A2AE2, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID IID_IActiveScriptParse32 = {0xBB1A2AE2, 0xA4F9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID IID_IActiveScriptParse64 = {0xC7EF7658, 0xE1EE, 0x480E, [0x97, 0xEA, 0xD5, 0x2C, 0xB4, 0xD7, 0x6D, 0x17]}; +const IID IID_IActiveScriptParseProcedure = {0xAA5B6A80, 0xB834, 0x11D0, [0x93, 0x2F, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +const IID IID_IActiveScriptParseProcedure2_32 = {0x71EE5B20, 0xFB04, 0x11D1, [0xB3, 0xA8, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xB2]}; +const IID IID_IActiveScriptParseProcedure2_64 = {0xFE7C4271, 0x210C, 0x448D, [0x9F, 0x54, 0x76, 0xDA, 0xB7, 0x04, 0x7B, 0x28]}; +const IID IID_IActiveScriptParseProcedure32 = {0xAA5B6A80, 0xB834, 0x11D0, [0x93, 0x2F, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +const IID IID_IActiveScriptParseProcedure64 = {0xC64713B6, 0xE029, 0x4CC5, [0x92, 0x00, 0x43, 0x8B, 0x72, 0x89, 0x0B, 0x6A]}; +const IID IID_IActiveScriptParseProcedureOld = {0x1CFF0050, 0x6FDD, 0x11D0, [0x93, 0x28, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +const IID IID_IActiveScriptParseProcedureOld32 = {0x1CFF0050, 0x6FDD, 0x11D0, [0x93, 0x28, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +const IID IID_IActiveScriptParseProcedureOld64 = {0x21F57128, 0x08C9, 0x4638, [0xBA, 0x12, 0x22, 0xD1, 0x5D, 0x88, 0xDC, 0x5C]}; +const IID IID_IActiveScriptProperty = {0x4954E0D0, 0xFBC7, 0x11D1, [0x84, 0x10, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; +const IID IID_IActiveScriptSIPInfo = {0x764651D0, 0x38DE, 0x11D4, [0xA2, 0xA3, 0x00, 0x10, 0x4B, 0xD3, 0x50, 0x90]}; +const IID IID_IActiveScriptSite = {0xDB01A1E3, 0xA42B, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID IID_IActiveScriptSiteDebug32 = {0x51973C11, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IActiveScriptSiteDebug64 = {0xD6B96B0A, 0x7463, 0x402C, [0x92, 0xAC, 0x89, 0x98, 0x42, 0x26, 0x94, 0x2F]}; +const IID IID_IActiveScriptSiteInterruptPoll = {0x539698A0, 0xCDCA, 0x11CF, [0xA5, 0xEB, 0x00, 0xAA, 0x00, 0x47, 0xA0, 0x63]}; +const IID IID_IActiveScriptSiteWindow = {0xD10F6761, 0x83E9, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID IID_IActiveScriptStats = {0xB8DA6310, 0xE19B, 0x11D0, [0x93, 0x3C, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +const IID IID_IActiveXSafetyProvider = {0x69FF5101, 0xFC63, 0x11D0, [0x97, 0xEB, 0x00, 0xAA, 0x00, 0x61, 0x53, 0x33]}; +const IID IID_IAdapterInfo = {0x480BF94A, 0x09FD, 0x4F8A, [0xA3, 0xE0, 0xB0, 0x70, 0x02, 0x82, 0xD8, 0x4D]}; +const IID IID_IAdapterNotificationSink = {0x44AB2DC3, 0x23B2, 0x47DE, [0x82, 0x28, 0x2E, 0x1C, 0xCE, 0xEB, 0x99, 0x11]}; +const IID IID_IAddEvents = {0xD710A6AE, 0x3371, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; +const IID IID_IAddressBarParser = {0xC9D81948, 0x443A, 0x40C7, [0x94, 0x5C, 0x5E, 0x17, 0x1B, 0x8C, 0x66, 0xB4]}; +const IID IID_IAddrExclusionControl = {0x00000148, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IAddrTrackingControl = {0x00000147, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IADs = {0xFD8256D0, 0xFD15, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +const IID IID_IADsAccessControlEntry = {0xB4F3A14C, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsAccessControlList = {0xB7EE91CC, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsAcePrivate = {0xFD145DF2, 0xFD96, 0x4135, [0x9B, 0x22, 0x68, 0xFF, 0x0F, 0x6B, 0xF5, 0xBB]}; +const IID IID_IADsAcl = {0x8452D3AB, 0x0869, 0x11D1, [0xA3, 0x77, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsADSystemInfo = {0x5BB11929, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; +const IID IID_IADsBackLink = {0xFD1302BD, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsCaseIgnoreList = {0x7B66B533, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsClass = {0xC8F93DD0, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; +const IID IID_IADsCollection = {0x72B945E0, 0x253B, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsComputer = {0xEFE3CC70, 0x1D9F, 0x11CF, [0xB1, 0xF3, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +const IID IID_IADsComputerOperations = {0xEF497680, 0x1D9F, 0x11CF, [0xB1, 0xF3, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +const IID IID_IADsContainer = {0x001677D0, 0xFD16, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +const IID IID_IADsDeleteOps = {0xB2BD0902, 0x8878, 0x11D1, [0x8C, 0x21, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsDNWithBinary = {0x7E99C0A2, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; +const IID IID_IADsDNWithString = {0x370DF02E, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; +const IID IID_IADsDomain = {0x00E4C220, 0xFD16, 0x11CE, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +const IID IID_IADsEmail = {0x97AF011A, 0x478E, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsExtension = {0x3D35553C, 0xD2B0, 0x11D1, [0xB1, 0x7B, 0x00, 0x00, 0xF8, 0x75, 0x93, 0xA0]}; +const IID IID_IADsFaxNumber = {0xA910DEA9, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsFileService = {0xA89D1900, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsFileServiceOperations = {0xA02DED10, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsFileShare = {0xEB6DCAF0, 0x4B83, 0x11CF, [0xA9, 0x95, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsGroup = {0x27636B00, 0x410F, 0x11CF, [0xB1, 0xFF, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +const IID IID_IADsHold = {0xB3EB3B37, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsLargeInteger = {0x9068270B, 0x0939, 0x11D1, [0x8B, 0xE1, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsLocality = {0xA05E03A2, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsMembers = {0x451A0030, 0x72EC, 0x11CF, [0xB0, 0x3B, 0x00, 0xAA, 0x00, 0x6E, 0x09, 0x75]}; +const IID IID_IADsNamespaces = {0x28B96BA0, 0xB330, 0x11CF, [0xA9, 0xAD, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsNameTranslate = {0xB1B272A3, 0x3625, 0x11D1, [0xA3, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsNetAddress = {0xB21A50A9, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsO = {0xA1CD2DC6, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsObjectOptions = {0x46F14FDA, 0x232B, 0x11D1, [0xA8, 0x08, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; +const IID IID_IADsObjOptPrivate = {0x81CBB829, 0x1867, 0x11D2, [0x92, 0x20, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; +const IID IID_IADsOctetList = {0x7B28B80F, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsOpenDSObject = {0xDDF2891E, 0x0F9C, 0x11D0, [0x8A, 0xD4, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsOU = {0xA2F733B8, 0xEFFE, 0x11CF, [0x8A, 0xBC, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsPath = {0xB287FCD5, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsPathname = {0xD592AED4, 0xF420, 0x11D0, [0xA3, 0x6E, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsPathnameProvider = {0xAACD1D30, 0x8BD0, 0x11D2, [0x92, 0xA9, 0x00, 0xC0, 0x4F, 0x79, 0xF8, 0x34]}; +const IID IID_IADsPostalAddress = {0x7ADECF29, 0x4680, 0x11D1, [0xA3, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsPrintJob = {0x32FB6780, 0x1ED0, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsPrintJobOperations = {0x9A52DB30, 0x1ECF, 0x11CF, [0xA9, 0x88, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsPrintQueue = {0xB15160D0, 0x1226, 0x11CF, [0xA9, 0x85, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsPrintQueueOperations = {0x124BE5C0, 0x156E, 0x11CF, [0xA9, 0x86, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsProperty = {0xC8F93DD3, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; +const IID IID_IADsPropertyEntry = {0x05792C8E, 0x941F, 0x11D0, [0x85, 0x29, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsPropertyList = {0xC6F602B6, 0x8F69, 0x11D0, [0x85, 0x28, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsPropertyValue = {0x79FA9AD0, 0xA97C, 0x11D0, [0x85, 0x34, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsPropertyValue2 = {0x306E831C, 0x5BC7, 0x11D1, [0xA3, 0xB8, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsReplicaPointer = {0xF60FB803, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsResource = {0x34A05B20, 0x4AAB, 0x11CF, [0xAE, 0x2C, 0x00, 0xAA, 0x00, 0x6E, 0xBF, 0xB9]}; +const IID IID_IADsSearch = {0xC69F7780, 0x4008, 0x11D0, [0xB9, 0x4C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; +const IID IID_IADsSecurityDescriptor = {0xB8C787CA, 0x9BDD, 0x11D0, [0x85, 0x2C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsSecurityUtility = {0xA63251B2, 0x5F21, 0x474B, [0xAB, 0x52, 0x4A, 0x8E, 0xFA, 0xD1, 0x08, 0x95]}; +const IID IID_IADsService = {0x68AF66E0, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsServiceOperations = {0x5D7B33F0, 0x31CA, 0x11CF, [0xA9, 0x8A, 0x00, 0xAA, 0x00, 0x6B, 0xC1, 0x49]}; +const IID IID_IADsSession = {0x398B7DA0, 0x4AAB, 0x11CF, [0xAE, 0x2C, 0x00, 0xAA, 0x00, 0x6E, 0xBF, 0xB9]}; +const IID IID_IADsSyntax = {0xC8F93DD2, 0x4AE0, 0x11CF, [0x9E, 0x73, 0x00, 0xAA, 0x00, 0x4A, 0x56, 0x91]}; +const IID IID_IADsTimestamp = {0xB2F5A901, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsTypedName = {0xB371A349, 0x4080, 0x11D1, [0xA3, 0xAC, 0x00, 0xC0, 0x4F, 0xB9, 0x50, 0xDC]}; +const IID IID_IADsUmiHelperPrivate = {0x4FE243F0, 0xAD89, 0x4CBC, [0x9B, 0x14, 0x48, 0x61, 0x26, 0x44, 0x6A, 0xE0]}; +const IID IID_IADsUser = {0x3E37E320, 0x17E2, 0x11CF, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +const IID IID_IADsValue = {0x1E3EF0AA, 0xAEF5, 0x11D0, [0x85, 0x37, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IADsWinNTSystemInfo = {0x6C6D65DC, 0xAFD1, 0x11D2, [0x9C, 0xB9, 0x00, 0x00, 0xF8, 0x7A, 0x36, 0x9E]}; +const IID IID_IAdviseSink = {0x0000010F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IAdviseSink2 = {0x00000125, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IAdviseSinkEx = {0x3AF24290, 0x0C96, 0x11CE, [0xA0, 0xCF, 0x00, 0xAA, 0x00, 0x60, 0x0A, 0xB8]}; +const IID IID_IAlertReport = {0x4E81DFE8, 0x4CA0, 0x101A, [0x82, 0x06, 0x08, 0x00, 0x2B, 0x2F, 0xC0, 0x9B]}; +const IID IID_IAlertTarget = {0x589B61C0, 0x54E6, 0x11CE, [0x94, 0xDD, 0x00, 0xAA, 0x00, 0x51, 0xE4, 0x0F]}; +const IID IID_IAlgSetup = {0xA779AF1A, 0x009A, 0x4C44, [0xB9, 0xF0, 0x8F, 0x0F, 0x4C, 0xF2, 0xAE, 0x49]}; +const IID IID_IAlterIndex = {0x0C733AA6, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IAlterTable = {0x0C733AA5, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IAnchorClick = {0x13D5413B, 0x33B9, 0x11D2, [0x95, 0xA7, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; +const IID IID_IAnimationComposer = {0x5459C83D, 0x322B, 0x44B3, [0x8D, 0xAA, 0x24, 0xC9, 0x47, 0xE7, 0xB2, 0x75]}; +const IID IID_IAnimationComposer2 = {0x1A4F0E79, 0x09CD, 0x47F3, [0xAF, 0xF1, 0x48, 0x3B, 0xF3, 0xA2, 0x22, 0xDC]}; +const IID IID_IAnimationComposerFactory = {0xBEEB3233, 0xF71F, 0x4683, [0x8B, 0x05, 0x9A, 0x53, 0x14, 0xC9, 0x7D, 0xBC]}; +const IID IID_IAnimationComposerSite = {0x488FCB56, 0x8FD6, 0x4CDA, [0xA0, 0x6A, 0x5B, 0xB2, 0x32, 0x93, 0x0E, 0xCA]}; +const IID IID_IAnimationComposerSiteFactory = {0xB4EA5681, 0xED72, 0x4EFE, [0xBB, 0xD7, 0x7C, 0x47, 0xD1, 0x32, 0x56, 0x96]}; +const IID IID_IAnimationComposerSiteSink = {0x8EF76C64, 0x71CD, 0x480F, [0x96, 0xFC, 0xBA, 0x26, 0x96, 0xE6, 0x59, 0xBE]}; +const IID IID_IAnimationFragment = {0x319DFD88, 0x0AC6, 0x4AB1, [0xA1, 0x9F, 0x90, 0x22, 0x3B, 0xA2, 0xDA, 0x16]}; +const IID IID_IAnimationRoot = {0x29DF6387, 0x30B4, 0x4A62, [0x89, 0x1B, 0xA9, 0xC5, 0xBE, 0x37, 0xBE, 0x88]}; +const IID IID_IApplicationDebugger = {0x51973C2A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IApplicationDebuggerUI = {0x51973C2B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IApplicationGateway = {0x5134842B, 0xFDCE, 0x485D, [0x93, 0xCD, 0xDE, 0x16, 0x40, 0x64, 0x3B, 0xBE]}; +const IID IID_IApplicationGatewayServices = {0x5134842A, 0xFDCE, 0x485D, [0x93, 0xCD, 0xDE, 0x16, 0x40, 0x64, 0x3B, 0xBE]}; +const IID IID_IAppPublisher = {0x07250A10, 0x9CF9, 0x11D1, [0x90, 0x76, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; +const IID IID_IAsyncBindCtx = {0x79EAC9D4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IAsyncManager = {0x0000002A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IAsyncMoniker = {0x79EAC9D3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IAsyncOperation = {0x3D8B0590, 0xF691, 0x11D2, [0x8E, 0xA9, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; +const IID IID_IAsyncRpcChannelBuffer = {0xA5029FB6, 0x3C34, 0x11D1, [0x9C, 0x99, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0xAA]}; +const IID IID_IAttributesRaw = {0x6BC096A8, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +const IID IID_IAuditControl = {0x1DA6292F, 0xBC66, 0x11CE, [0xAA, 0xE3, 0x00, 0xAA, 0x00, 0x4C, 0x27, 0x37]}; +const IID IID_IAuthenticate = {0x79EAC9D0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IAutoComplete = {0x00BB2762, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +const IID IID_IAutoComplete2 = {0xEAC04BC0, 0x3791, 0x11D2, [0xBB, 0x95, 0x00, 0x60, 0x97, 0x7B, 0x46, 0x4C]}; +const IID IID_IAutoCompleteDropDown = {0x3CD141F4, 0x3C6A, 0x11D2, [0xBC, 0xAA, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +const IID IID_IAutoCompList = {0x00BB2760, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +const IID IID_IAutoDiscoveryProvider = {0x9DCF4A37, 0x01DE, 0x4549, [0xA9, 0xCB, 0x3A, 0xC3, 0x1E, 0xC2, 0x3C, 0x4F]}; +const IID IID_IBackgroundCopyCallback = {0x97EA99C7, 0x0186, 0x4AD4, [0x8D, 0xF9, 0xC5, 0xB4, 0xE0, 0xED, 0x6B, 0x22]}; +const IID IID_IBackgroundCopyCallback1 = {0x084F6593, 0x3800, 0x4E08, [0x9B, 0x59, 0x99, 0xFA, 0x59, 0xAD, 0xDF, 0x82]}; +const IID IID_IBackgroundCopyError = {0x19C613A0, 0xFCB8, 0x4F28, [0x81, 0xAE, 0x89, 0x7C, 0x3D, 0x07, 0x8F, 0x81]}; +const IID IID_IBackgroundCopyFile = {0x01B7BD23, 0xFB88, 0x4A77, [0x84, 0x90, 0x58, 0x91, 0xD3, 0xE4, 0x65, 0x3A]}; +const IID IID_IBackgroundCopyGroup = {0x1DED80A7, 0x53EA, 0x424F, [0x8A, 0x04, 0x17, 0xFE, 0xA9, 0xAD, 0xC4, 0xF5]}; +const IID IID_IBackgroundCopyJob = {0x37668D37, 0x507E, 0x4160, [0x93, 0x16, 0x26, 0x30, 0x6D, 0x15, 0x0B, 0x12]}; +const IID IID_IBackgroundCopyJob1 = {0x59F5553C, 0x2031, 0x4629, [0xBB, 0x18, 0x26, 0x45, 0xA6, 0x97, 0x09, 0x47]}; +const IID IID_IBackgroundCopyJob2 = {0x54B50739, 0x686F, 0x45EB, [0x9D, 0xFF, 0xD6, 0xA9, 0xA0, 0xFA, 0xA9, 0xAF]}; +const IID IID_IBackgroundCopyManager = {0x5CE34C0D, 0x0DC9, 0x4C1F, [0x89, 0x7C, 0xDA, 0xA1, 0xB7, 0x8C, 0xEE, 0x7C]}; +const IID IID_IBackgroundCopyQMgr = {0x16F41C69, 0x09F5, 0x41D2, [0x8C, 0xD8, 0x3C, 0x08, 0xC4, 0x7B, 0xC8, 0xA8]}; +const IID IID_IBidiRequestSpl = {0x9C007000, 0xFFA8, 0x44FF, [0xB2, 0xB3, 0xAE, 0x91, 0x02, 0xC7, 0x4D, 0x4C]}; +const IID IID_IBindCtx = {0x0000000E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IBindEventHandler = {0x63CDBCB0, 0xC1B1, 0x11D0, [0x93, 0x36, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +const IID IID_IBindHost = {0xFC4801A1, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID IID_IBinding = {0x79EAC9C0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IBindProtocol = {0x79EAC9CD, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IBindResource = {0x0C733AB1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IBindStatusCallback = {0x79EAC9C1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IBindStatusCallbackHolder = {0x79EAC9CC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IBindStatusCallbackMsg = {0x79EAC9D5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IBitsTest1 = {0x51A183DB, 0x67E0, 0x4472, [0x86, 0x02, 0x3D, 0xBC, 0x73, 0x0B, 0x7E, 0xF5]}; +const IID IID_IBlockFormats = {0x3050F830, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IBlockingLock = {0x30F3D47A, 0x6447, 0x11D1, [0x8E, 0x3C, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +const IID IID_IBoundObject = {0x9BFBBC00, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IBoundObjectSite = {0x9BFBBC01, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IBriefcaseStg = {0x8BCE1FA1, 0x0921, 0x101B, [0xB1, 0xFF, 0x00, 0xDD, 0x01, 0x0C, 0xCC, 0x48]}; +const IID IID_IBurnEngine = {0x520CCA66, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID IID_ICallFactory = {0x1C733A30, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICallFrame = {0xD573B4B0, 0x894E, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +const IID IID_ICallFrameEvents = {0xFD5E0843, 0xFC91, 0x11D0, [0x97, 0xD7, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +const IID IID_ICallFrameWalker = {0x08B23919, 0x392D, 0x11D2, [0xB8, 0xA4, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +const IID IID_ICallIndirect = {0xD573B4B1, 0x894E, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +const IID IID_ICallInterceptor = {0x60C7CA75, 0x896D, 0x11D2, [0xB8, 0xB6, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +const IID IID_ICallUnmarshal = {0x5333B003, 0x2E42, 0x11D2, [0xB8, 0x9D, 0x00, 0xC0, 0x4F, 0xB9, 0x61, 0x8A]}; +const IID IID_ICancelMethodCalls = {0x00000029, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ICatalogFileInfo = {0x711C7600, 0x6B48, 0x11D1, [0xB4, 0x03, 0x00, 0xAA, 0x00, 0xB9, 0x2A, 0xF1]}; +const IID IID_ICategorizer = {0xA3B14589, 0x9174, 0x49A8, [0x89, 0xA3, 0x06, 0xA1, 0xAE, 0x2B, 0x9B, 0xA7]}; +const IID IID_ICategoryProvider = {0x9AF64809, 0x5864, 0x4C26, [0xA7, 0x20, 0xC1, 0xF7, 0x8C, 0x08, 0x6E, 0xE3]}; +const IID IID_ICatInformation = {0x0002E013, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ICatRegister = {0x0002E012, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ICDBurn = {0x3D73A659, 0xE5D0, 0x4D42, [0xAF, 0xC0, 0x51, 0x21, 0xBA, 0x42, 0x5C, 0x8D]}; +const IID IID_ICEnroll = {0x43F8F288, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; +const IID IID_ICEnroll2 = {0x704CA730, 0xC90B, 0x11D1, [0x9B, 0xEC, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; +const IID IID_ICEnroll3 = {0xC28C2D95, 0xB7DE, 0x11D2, [0xA4, 0x21, 0x00, 0xC0, 0x4F, 0x79, 0xFE, 0x8E]}; +const IID IID_ICEnroll4 = {0xC1F1188A, 0x2EB5, 0x4A80, [0x84, 0x1B, 0x7E, 0x72, 0x9A, 0x35, 0x6D, 0x90]}; +const IID IID_IChannelHook = {0x1008C4A0, 0x7613, 0x11CF, [0x9A, 0xF1, 0x00, 0x20, 0xAF, 0x6E, 0x72, 0xF4]}; +const IID IID_IChannelMgr = {0x85BD8E82, 0x0FBA, 0x11D1, [0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68]}; +const IID IID_IChapteredRowset = {0x0C733A93, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICheckBox = {0x3050F685, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ICiAdmin = {0xAE67C7D8, 0x85D3, 0x11D0, [0x8C, 0x45, 0x00, 0xC0, 0x4F, 0xC2, 0xDB, 0x8D]}; +const IID IID_ICiAdminParams = {0xA82D48C6, 0x3F0F, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCAdviseStatus = {0xCA05734A, 0x1218, 0x11D3, [0xAE, 0x7A, 0x00, 0xC0, 0x4F, 0x72, 0xF8, 0x31]}; +const IID IID_ICiCDeferredPropRetriever = {0xC273AF70, 0x6D72, 0x11D0, [0x8D, 0x64, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; +const IID IID_ICiCDocName = {0x76615076, 0x3C2B, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCDocNameToWorkidTranslator = {0x25FC3F54, 0x3CB4, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCDocNameToWorkidTranslatorEx = {0x7BBA76E6, 0xA0E3, 0x11D2, [0xBC, 0x5D, 0x00, 0xC0, 0x4F, 0xA3, 0x54, 0xBA]}; +const IID IID_ICiCDocStore = {0x46625468, 0x3C32, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCDocStoreEx = {0xF98282A7, 0xFA72, 0x11D1, [0x97, 0x98, 0x00, 0xC0, 0x4F, 0xC2, 0xF4, 0x10]}; +const IID IID_ICiCDocStoreLocator = {0x97EE7C06, 0x5908, 0x11D0, [0x8C, 0x9B, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCEventLogItem = {0x44CC886A, 0x4314, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCFilterClient = {0xA1E0BCB6, 0x3C24, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCFilterStatus = {0xBC5F3D60, 0x8BBC, 0x11D1, [0x8F, 0x73, 0x00, 0xA0, 0xC9, 0x19, 0x17, 0xF5]}; +const IID IID_ICiCIndexNotificationStatus = {0x5FFF3840, 0x8E76, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; +const IID IID_ICiCLangRes = {0x914C2E6C, 0x43FE, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiControl = {0x63DEB7F4, 0x3CCB, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCOpenedDoc = {0x151EDFBE, 0x3C2F, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCPropertyStorage = {0x4C46225A, 0x3CB5, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCPropRetriever = {0x77D9B2DA, 0x4401, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCQueryNotification = {0x0A9E9F6C, 0x3CE2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCQuerySession = {0xAE461FD6, 0x4E1D, 0x11D0, [0x8C, 0x94, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCResourceMonitor = {0xF700FF8E, 0x20EE, 0x11D2, [0x80, 0xF7, 0x00, 0xC0, 0x4F, 0xA3, 0x54, 0xBA]}; +const IID IID_ICiCScope = {0x1021C882, 0x3CC0, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCScopeChecker = {0x7D820C9C, 0x3CBC, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCScopeEnumerator = {0xCF8505EA, 0x3CCA, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCSecurityChecker = {0xCA130CF4, 0x3CC2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiCUserSecurity = {0x5D01D9CE, 0x3CC2, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiDocChangeNotifySink = {0x8BFA1386, 0x3CE5, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiEnumWorkids = {0x77900150, 0xA09C, 0x11D0, [0xA8, 0x0D, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; +const IID IID_ICiFrameworkQuery = {0xAE67C7D9, 0x85D3, 0x11D0, [0x8C, 0x45, 0x00, 0xC0, 0x4F, 0xC2, 0xDB, 0x8D]}; +const IID IID_ICiIndexNotification = {0x4F2CD6E0, 0x8E74, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; +const IID IID_ICiIndexNotificationEntry = {0x210769D0, 0x8E75, 0x11D0, [0x8D, 0x69, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; +const IID IID_ICiISearchCreator = {0x7DC07FA0, 0x902E, 0x11D0, [0xA8, 0x0C, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; +const IID IID_ICiManager = {0xCF0FCF56, 0x3CCE, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiPersistIncrFile = {0x31B311E2, 0x4498, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_ICiQueryPropertyMapper = {0xD2333EB0, 0x756B, 0x11D0, [0x8D, 0x66, 0x00, 0xA0, 0xC9, 0x08, 0xDB, 0xF1]}; +const IID IID_ICiStartup = {0x68232CB8, 0x3CCC, 0x11D0, [0x8C, 0x90, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_IClassActivator = {0x00000140, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IClassFactory = {0x00000001, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IClassFactory2 = {0xB196B28F, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IClassFactoryEx = {0x342D1EA0, 0xAE25, 0x11D1, [0x89, 0xC5, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; +const IID IID_IClientCaps = {0x7E8BC44D, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +const IID IID_IClientSecurity = {0x0000013D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IClusCfgAsyncEvictCleanup = {0x52C80B95, 0xC1AD, 0x4240, [0x8D, 0x89, 0x72, 0xE9, 0xFA, 0x84, 0x02, 0x5E]}; +const IID IID_IClusCfgBaseCluster = {0xA8A5C613, 0x2518, 0x47F5, [0x96, 0xCA, 0xCA, 0xFA, 0x7F, 0xFB, 0xAF, 0x68]}; +const IID IID_IClusCfgCallback = {0x238DCA63, 0xE2EF, 0x4F32, [0xA2, 0x4D, 0xAC, 0xBF, 0x97, 0x5B, 0xE8, 0x42]}; +const IID IID_IClusCfgCapabilities = {0xD94AB253, 0x36C7, 0x41C1, [0xB5, 0x2E, 0x26, 0xB4, 0x51, 0x97, 0x5C, 0x8D]}; +const IID IID_IClusCfgClusterConnection = {0xCE6EF90C, 0x3602, 0x41E7, [0x95, 0xBD, 0xAA, 0xFD, 0x37, 0xA6, 0x76, 0xDF]}; +const IID IID_IClusCfgClusterInfo = {0x85B4BBC0, 0xDDC4, 0x4AE7, [0x82, 0x68, 0xF4, 0x85, 0x0B, 0xB2, 0xA6, 0xEE]}; +const IID IID_IClusCfgCredentials = {0x54AA9406, 0xA409, 0x4B49, [0xB3, 0x14, 0x5F, 0x0A, 0x0C, 0xE4, 0xC8, 0x8E]}; +const IID IID_IClusCfgEvictCleanup = {0x6FE3E361, 0xD373, 0x4C5F, [0xA0, 0xAF, 0x1D, 0xFE, 0x84, 0x93, 0xC6, 0x55]}; +const IID IID_IClusCfgGroupCfg = {0xDCB6D3D2, 0xA55F, 0x49E5, [0xA6, 0x4A, 0x0C, 0xCF, 0xEB, 0x01, 0xED, 0x3A]}; +const IID IID_IClusCfgInitialize = {0x2A0EB82D, 0xF878, 0x492A, [0x95, 0x1E, 0xAE, 0x00, 0x09, 0x18, 0xC4, 0xA6]}; +const IID IID_IClusCfgIPAddressInfo = {0xAAEAF0A5, 0xE310, 0x4604, [0xA5, 0x5E, 0x2F, 0x9D, 0xDC, 0x41, 0x57, 0xA8]}; +const IID IID_IClusCfgManagedResourceCfg = {0x60300A0F, 0x77E1, 0x440C, [0xBD, 0x94, 0x6B, 0xFB, 0x0D, 0xBF, 0xDB, 0x3A]}; +const IID IID_IClusCfgManagedResourceInfo = {0xE0324847, 0x1520, 0x41B0, [0xB9, 0x60, 0x54, 0x19, 0x8D, 0xA5, 0xF8, 0xAF]}; +const IID IID_IClusCfgMemberSetChangeListener = {0x2B64534F, 0x2643, 0x4ABC, [0xA4, 0xE5, 0x82, 0x4D, 0x88, 0x1B, 0x75, 0x82]}; +const IID IID_IClusCfgNetworkInfo = {0x19FC7580, 0x950A, 0x44A6, [0x96, 0x6E, 0x74, 0xB1, 0x4B, 0x20, 0x91, 0x8F]}; +const IID IID_IClusCfgNodeInfo = {0xE4B5FA15, 0xDD07, 0x439E, [0xA6, 0x23, 0x88, 0x23, 0x52, 0x4E, 0x3D, 0x19]}; +const IID IID_IClusCfgPartitionInfo = {0xEC1EBD9F, 0x5866, 0x4846, [0x89, 0x52, 0xEC, 0x36, 0xC3, 0x96, 0x1E, 0xEE]}; +const IID IID_IClusCfgPollingCallback = {0xC72DB1FD, 0x51A2, 0x43E6, [0xB7, 0x08, 0xD9, 0xDB, 0x7D, 0xA7, 0x96, 0x30]}; +const IID IID_IClusCfgPollingCallbackInfo = {0x2AF55DA7, 0xCB6F, 0x40DE, [0xBB, 0x11, 0x66, 0x73, 0x46, 0x4B, 0x2C, 0x54]}; +const IID IID_IClusCfgResourceCreate = {0x0647B41A, 0xC777, 0x443C, [0x94, 0x32, 0x02, 0xCC, 0xCF, 0x4F, 0xF4, 0x43]}; +const IID IID_IClusCfgResourcePostCreate = {0x72A9BF54, 0x13B6, 0x451F, [0x91, 0x0D, 0x69, 0x13, 0xEB, 0xF0, 0x25, 0xAB]}; +const IID IID_IClusCfgResourcePreCreate = {0x4240F6A1, 0x9D49, 0x427E, [0x8F, 0x3D, 0x09, 0x38, 0x4E, 0x1F, 0x59, 0xE4]}; +const IID IID_IClusCfgResourceTypeCreate = {0x3AFCE3B8, 0x5F3E, 0x4DDF, [0xA8, 0xF4, 0x4B, 0x4F, 0xCB, 0xF2, 0x8F, 0x8F]}; +const IID IID_IClusCfgResourceTypeInfo = {0xC649A281, 0xC847, 0x4F5C, [0x98, 0x41, 0xD2, 0xF7, 0x3B, 0x5A, 0xA7, 0x1D]}; +const IID IID_IClusCfgResTypeServicesInitializ = {0x6E109698, 0xDFC4, 0x4471, [0xAC, 0xE1, 0x04, 0x14, 0x93, 0x1B, 0x3B, 0xB3]}; +const IID IID_IClusCfgServer = {0x4C06EAE6, 0x990E, 0x4051, [0x8A, 0xA1, 0xAD, 0x4B, 0x4E, 0xAE, 0x9C, 0xAF]}; +const IID IID_IClusCfgSetCredentials = {0x58E6E5B9, 0x4788, 0x4D9A, [0x82, 0x55, 0x1E, 0x27, 0x4E, 0x5D, 0xCC, 0xB0]}; +const IID IID_IClusCfgStartupListener = {0xD282CAEF, 0x2EDE, 0x4AB9, [0xA5, 0xD5, 0xF7, 0xBD, 0xE3, 0xD2, 0x3F, 0x0F]}; +const IID IID_IClusCfgStartupNotify = {0xC2B0D069, 0x6353, 0x4EE1, [0xB2, 0x53, 0x6B, 0x0D, 0x75, 0xDB, 0x2C, 0xD3]}; +const IID IID_IClusCfgVerify = {0xD47BBEEC, 0x2286, 0x4514, [0xAA, 0x90, 0x7E, 0x88, 0xBD, 0x0F, 0xE5, 0x43]}; +const IID IID_IClusCfgWizard = {0x2EB57A3B, 0xDA8D, 0x4B56, [0x97, 0xCF, 0xA3, 0x19, 0x1B, 0xF8, 0xFD, 0x5B]}; +const IID IID_IClusterApplicationWizard = {0x24F97151, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; +const IID IID_ICodeInstall = {0x79EAC9D1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IColumnMapper = {0x0B63E37A, 0x9CCC, 0x11D0, [0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04]}; +const IID IID_IColumnMapperCreator = {0x0B63E37B, 0x9CCC, 0x11D0, [0xBC, 0xDB, 0x00, 0x80, 0x5F, 0xCC, 0xCE, 0x04]}; +const IID IID_IColumnProvider = {0xE8025004, 0x1C42, 0x11D2, [0xBE, 0x2C, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; +const IID IID_IColumnsInfo = {0x0C733A11, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IColumnsInfo2 = {0x0C733AB8, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IColumnsRowset = {0x0C733A10, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICombobox = {0x3050F677, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ICommand = {0x0C733A63, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICommandCost = {0x0C733A4E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICommandPersist = {0x0C733AA7, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICommandPrepare = {0x0C733A26, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICommandProperties = {0x0C733A79, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICommandStream = {0x0C733ABF, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICommandText = {0x0C733A27, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICommandTree = {0x0C733A87, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICommandValidate = {0x0C733A18, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICommandWithParameters = {0x0C733A64, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICommDlgBrowser = {0x000214F1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ICommDlgBrowser2 = {0x10339516, 0x2894, 0x11D2, [0x90, 0x39, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; +const IID IID_ICommonQuery = {0xAB50DEC0, 0x6F1D, 0x11D0, [0xA1, 0xC4, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +const IID IID_IComThreadingInfo = {0x000001CE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IConfigurationConnection = {0xDDAD8191, 0x66C5, 0x4A30, [0xA4, 0xDF, 0xCB, 0x6C, 0x21, 0x67, 0x04, 0xCA]}; +const IID IID_IConnectionInfo = {0x15182CE3, 0x82D7, 0x473F, [0x92, 0xDE, 0x70, 0x6E, 0x2B, 0xCE, 0xA9, 0x02]}; +const IID IID_IConnectionManager = {0xC0017768, 0x1BF3, 0x4352, [0x8D, 0x6C, 0x3A, 0x8C, 0x1D, 0x0F, 0xB4, 0x77]}; +const IID IID_IConnectionPoint = {0xB196B286, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IConnectionPointContainer = {0xB196B284, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IContextCallback = {0x000001DA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IContextMenu = {0x000214E4, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IContextMenu2 = {0x000214F4, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IContextMenu3 = {0xBCFCE0A0, 0xEC17, 0x11D0, [0x8D, 0x10, 0x00, 0xA0, 0xC9, 0x0F, 0x27, 0x19]}; +const IID IID_IContinue = {0x0000012A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IContinueCallback = {0xB722BCCA, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +const IID IID_IConvertType = {0x0C733A88, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICrBarn = {0x276A2EE0, 0x0B5D, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID IID_ICrBarn2 = {0xB66A7A1B, 0x8FC6, 0x448C, [0xA2, 0xEB, 0x3C, 0x55, 0x95, 0x74, 0x78, 0xA1]}; +const IID IID_ICrBlinds = {0x5AF5C340, 0x0BA9, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID IID_ICrBlinds2 = {0x7059D403, 0x599A, 0x4264, [0x81, 0x40, 0x64, 0x1E, 0xB8, 0xAE, 0x1F, 0x64]}; +const IID IID_ICrBlur = {0x9F7C7827, 0xE87A, 0x11D1, [0x81, 0xE0, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_ICreateErrorInfo = {0x22F03340, 0x547D, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; +const IID IID_ICreateRow = {0x0C733AB2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ICreateTypeInfo = {0x00020405, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ICreateTypeInfo2 = {0x0002040E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ICreateTypeLib = {0x00020406, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ICreateTypeLib2 = {0x0002040F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ICrEmboss = {0xE4ACFB80, 0x053E, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_ICrEngrave = {0xE4ACFB7F, 0x053E, 0x11D2, [0x81, 0xEA, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_ICrInset = {0x05C5EE20, 0x0BA6, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID IID_ICrIris = {0x3F69F350, 0x0379, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID IID_ICrIris2 = {0xF7B06961, 0xBA8C, 0x4970, [0x91, 0x8B, 0x1C, 0x60, 0xCB, 0x9F, 0xF1, 0x80]}; +const IID IID_ICrRadialWipe = {0x424B71AE, 0x0695, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID IID_ICrSlide = {0x810E402E, 0x056B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID IID_ICrSpiral = {0x0DE527A0, 0x0C7E, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID IID_ICrStretch = {0x6684AF00, 0x0A87, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID IID_ICrWheel = {0x3943DE80, 0x1464, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID IID_ICrZigzag = {0x4E5A64A0, 0x0C8B, 0x11D2, [0xA4, 0x84, 0x00, 0xC0, 0x4F, 0x8E, 0xFB, 0x69]}; +const IID IID_ICSSFilter = {0x3050F3EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ICSSFilterDispatch = {0x9519152B, 0x9484, 0x4A6C, [0xB6, 0xA7, 0x4F, 0x25, 0xE9, 0x2D, 0x6C, 0x6B]}; +const IID IID_ICSSFilterSite = {0x3050F3ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ICurrentWorkingDirectory = {0x91956D21, 0x9276, 0x11D1, [0x92, 0x1A, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; +const IID IID_ICursor = {0x9F6AA700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +const IID IID_ICursorFind = {0xE01D7850, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +const IID IID_ICursorMove = {0xACFF0690, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +const IID IID_ICursorScroll = {0xBB87E420, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +const IID IID_ICursorUpdateARow = {0xD14216A0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +const IID IID_ICustomDoc = {0x3050F3F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ICustomRatingHelper = {0xD0D9842D, 0xE211, 0x4B2C, [0x88, 0xDC, 0xBC, 0x72, 0x93, 0x42, 0xDF, 0xCB]}; +const IID IID_IDA2Array = {0x2A8F0B06, 0xBE2B, 0x11D1, [0xB2, 0x19, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +const IID IID_IDA2Behavior = {0xC46C1BF0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDA2Event = {0x69B5BC70, 0x9B19, 0x11D0, [0x9B, 0x60, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID IID_IDA2FontStyle = {0x283807B5, 0x2C60, 0x11D0, [0xA3, 0x1D, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +const IID IID_IDA2Geometry = {0x4A933702, 0xE36F, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID IID_IDA2Image = {0x45393DF0, 0x54B9, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; +const IID IID_IDA2LineStyle = {0x2AE71568, 0x4B34, 0x11D1, [0xB1, 0xE3, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +const IID IID_IDA2Statics = {0xD17506C2, 0x6B26, 0x11D0, [0x89, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +const IID IID_IDA2View = {0x5F00F545, 0xDF18, 0x11D1, [0xAB, 0x6F, 0x00, 0xC0, 0x4F, 0xD9, 0x2B, 0x6B]}; +const IID IID_IDA2ViewerControl = {0xC46C1BEF, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDA2ViewerControlWindowed = {0xC46C1BED, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAArray = {0xFA261CF0, 0xC44E, 0x11D1, [0x9B, 0xE4, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID IID_IDABbox2 = {0xBA8B033E, 0x1E91, 0x11D1, [0x88, 0x09, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +const IID IID_IDABbox3 = {0x0E41257B, 0x812D, 0x11D0, [0x9B, 0x4A, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID IID_IDABehavior = {0x5DFB2651, 0x9668, 0x11D0, [0xB1, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +const IID IID_IDABoolean = {0xC46C1BDA, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDABvrHook = {0x50B4791F, 0x4731, 0x11D0, [0x89, 0x12, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +const IID IID_IDACamera = {0xC46C1BCA, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAColor = {0xC46C1BDC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDADashStyle = {0xF3E1B522, 0xD8A6, 0x11D1, [0x9B, 0xE5, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID IID_IDADrawingSurface = {0xC46C1BF4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDADXTransformResult = {0xAF868305, 0xAB0B, 0x11D0, [0x87, 0x6A, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +const IID IID_IDAEndStyle = {0xB6FFC24C, 0x7E13, 0x11D0, [0x9B, 0x47, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID IID_IDAEvent = {0xC46C1BCE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAFontStyle = {0xC46C1BC1, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAGeometry = {0xC46C1BCC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAImage = {0xC46C1BC4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAImport = {0xC46C1BEE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAImportationResult = {0xB90E5258, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +const IID IID_IDAJoinStyle = {0xA3034056, 0xEC1C, 0x11D1, [0x9B, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID IID_IDALineStyle = {0x69AD90EF, 0x1C20, 0x11D1, [0x88, 0x01, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +const IID IID_IDAMatte = {0xC46C1BE4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAMicrophone = {0xC46C1BD8, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAModifiableBehavior = {0xC46C1BEC, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAMontage = {0xC46C1BC8, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDANumber = {0xD17506C3, 0x6B26, 0x11D0, [0x89, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +const IID IID_IDAPair = {0x542FB453, 0x5003, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; +const IID IID_IDAPath2 = {0xC46C1BD0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAPickableResult = {0xC46C1BDE, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAPoint2 = {0x9CDE7341, 0x3C20, 0x11D0, [0xA3, 0x30, 0x00, 0xAA, 0x00, 0xB9, 0x2C, 0x03]}; +const IID IID_IDAPoint3 = {0xC46C1BD6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAPreferences = {0xB90E525A, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +const IID IID_IDASite = {0xB90E5259, 0x574A, 0x11D1, [0x8E, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +const IID IID_IDASound = {0xC46C1BE6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAStatics = {0x5DFB2650, 0x9668, 0x11D0, [0xB1, 0x7B, 0x00, 0xC0, 0x4F, 0xC2, 0xA0, 0xCA]}; +const IID IID_IDAString = {0xC46C1BD2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDataAdviseHolder = {0x00000110, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDataChannel = {0xAD42D12A, 0x4AD0, 0x4856, [0x91, 0x9E, 0xE8, 0x54, 0xC9, 0x1D, 0x18, 0x56]}; +const IID IID_IDataConvert = {0x0C733A8D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDataFilter = {0x69D14C80, 0xC18E, 0x11D0, [0xA9, 0xCE, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; +const IID IID_IDataObject = {0x0000010E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDATransform2 = {0xC46C1BD4, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDATransform3 = {0xC46C1BE0, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDATuple = {0x542FB452, 0x5003, 0x11CF, [0x92, 0xA2, 0x00, 0xAA, 0x00, 0xB8, 0xA7, 0x33]}; +const IID IID_IDAUntilNotifier = {0x25B0F91C, 0xD23D, 0x11D0, [0x9B, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID IID_IDAUserData = {0xBACD4D86, 0x4A4F, 0x11D1, [0x9B, 0xC8, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID IID_IDAVector2 = {0xC46C1BC6, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAVector3 = {0xC46C1BE2, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAView = {0xAF868304, 0xAB0B, 0x11D0, [0x87, 0x6A, 0x00, 0xC0, 0x4F, 0xC2, 0x9D, 0x46]}; +const IID IID_IDAViewerControl = {0xC46C1BDD, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAViewerControlWindowed = {0xC46C1BCD, 0x3C52, 0x11D0, [0x92, 0x00, 0x84, 0x8C, 0x1D, 0x00, 0x00, 0x00]}; +const IID IID_IDAViewSite = {0xBCBB1F75, 0xE384, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID IID_IDBAsynchNotify = {0x0C733A96, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDBAsynchStatus = {0x0C733A95, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDBBinderProperties = {0x0C733AB3, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDBCreateCommand = {0x0C733A1D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDBCreateSession = {0x0C733A5D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDBDataSourceAdmin = {0x0C733A7A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDBInfo = {0x0C733A89, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDBInitialize = {0x0C733A8B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDBProperties = {0x0C733A8A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDBSchemaCommand = {0x0C733A50, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDBSchemaRowset = {0x0C733A7B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDCInfo = {0x0C733A9C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IDDVideoAcceleratorContainer = {0xACA12120, 0x3356, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; +const IID IID_IDDVideoPortContainer = {0x6C142760, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +const IID IID_IDebug = {0x00000123, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDebugApplication = {0x51973C32, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugApplication32 = {0x51973C32, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugApplication64 = {0x4DEDC754, 0x04C7, 0x4F10, [0x9E, 0x60, 0x16, 0xA3, 0x90, 0xFE, 0x6E, 0x62]}; +const IID IID_IDebugApplicationEx = {0x51973C00, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugApplicationNode = {0x51973C34, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugApplicationNodeEvents = {0x51973C35, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugApplicationThread = {0x51973C38, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugApplicationThread64 = {0x9DAC5886, 0xDBAD, 0x456D, [0x9D, 0xEE, 0x5D, 0xEC, 0x39, 0xAB, 0x3D, 0xDA]}; +const IID IID_IDebugAsyncOperation = {0x51973C1B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugAsyncOperationCallBack = {0x51973C1C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugCodeContext = {0x51973C13, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugCookie = {0x51973C39, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocument = {0x51973C21, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocumentContext = {0x51973C28, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocumentHelper32 = {0x51973C26, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocumentHelper64 = {0xC4C7363C, 0x20FD, 0x47F9, [0xBD, 0x82, 0x48, 0x55, 0xE0, 0x15, 0x08, 0x71]}; +const IID IID_IDebugDocumentHelperEx = {0x51973C02, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocumentHost = {0x51973C27, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocumentInfo = {0x51973C1F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocumentProvider = {0x51973C20, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocumentText = {0x51973C22, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocumentTextAuthor = {0x51973C24, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocumentTextEvents = {0x51973C23, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugDocumentTextExternalAuthor = {0x51973C25, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugExpression = {0x51973C14, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugExpressionCallBack = {0x51973C16, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugExpressionContext = {0x51973C15, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugExtendedProperty = {0x51973C52, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugFormatter = {0x51973C05, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugHelper = {0x51973C3F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugHelperEx = {0x51973C08, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugOut = {0xC733E4F1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_IDebugProperty = {0x51973C50, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugPropertyEnumType_All = {0x51973C55, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugPropertyEnumType_Arguments = {0x51973C57, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugPropertyEnumType_Locals = {0x51973C56, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugPropertyEnumType_LocalsPlus = {0x51973C58, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugPropertyEnumType_Registers = {0x51973C59, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugRegister = {0xC733E4F0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_IDebugSessionProvider = {0x51973C29, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugSessionProviderEx = {0x51973C09, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugSetValueCallback = {0x51973C06, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugStackFrame = {0x51973C17, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugStackFrameSniffer = {0x51973C18, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugStackFrameSnifferEx = {0x51973C19, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugStackFrameSnifferEx32 = {0x51973C19, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugStackFrameSnifferEx64 = {0x8CD12AF4, 0x49C1, 0x4D52, [0x8D, 0x8A, 0xC1, 0x46, 0xF4, 0x75, 0x81, 0xAA]}; +const IID IID_IDebugStream = {0x00000124, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDebugSyncOperation = {0x51973C1A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugThreadCall = {0x51973C36, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugThreadCall32 = {0x51973C36, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IDebugThreadCall64 = {0xCB3FA335, 0xE979, 0x42FD, [0x9F, 0xCF, 0xA7, 0x54, 0x6A, 0x0F, 0x39, 0x05]}; +const IID IID_IDelaydC = {0xBFF9C030, 0xB58F, 0x11CE, [0xB5, 0xB0, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +const IID IID_IDelayedRelease = {0x000214ED, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDelegateFolder = {0xADD8BA80, 0x002B, 0x11D0, [0x8F, 0x0F, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +const IID IID_IDeskBand = {0xEB0FE172, 0x1A3A, 0x11D0, [0x89, 0xB3, 0x00, 0xA0, 0xC9, 0x0A, 0x90, 0xAC]}; +const IID IID_IDeviceRect = {0x3050F6D5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IDfReserved1 = {0x00000013, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDfReserved2 = {0x00000014, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDfReserved3 = {0x00000015, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDialBranding = {0x8AECAFA9, 0x4306, 0x43CC, [0x8C, 0x5A, 0x76, 0x5F, 0x29, 0x79, 0xCC, 0x16]}; +const IID IID_IDialEngine = {0x39FD782B, 0x7905, 0x40D5, [0x91, 0x48, 0x3C, 0x9B, 0x19, 0x04, 0x23, 0xD5]}; +const IID IID_IDialEventSink = {0x2D86F4FF, 0x6E2D, 0x4488, [0xB2, 0xE9, 0x69, 0x34, 0xAF, 0xD4, 0x1B, 0xEA]}; +const IID IID_IDifferencing = {0x994F0AF0, 0x2977, 0x11CE, [0xBB, 0x80, 0x08, 0x00, 0x2B, 0x36, 0xB2, 0xB0]}; +const IID IID_IDirect3D = {0x3BBA0080, 0x2421, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +const IID IID_IDirect3D2 = {0x6AAE1EC1, 0x662A, 0x11D0, [0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A]}; +const IID IID_IDirect3D3 = {0xBB223240, 0xE72B, 0x11D0, [0xA9, 0xB4, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E]}; +const IID IID_IDirect3D7 = {0xF5049E77, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID IID_IDirect3DDevice = {0x64108800, 0x957D, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +const IID IID_IDirect3DDevice2 = {0x93281501, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +const IID IID_IDirect3DDevice3 = {0xB0AB3B60, 0x33D7, 0x11D1, [0xA9, 0x81, 0x00, 0xC0, 0x4F, 0xD7, 0xB1, 0x74]}; +const IID IID_IDirect3DDevice7 = {0xF5049E79, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID IID_IDirect3DExecuteBuffer = {0x4417C145, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; +const IID IID_IDirect3DHALDevice = {0x84E63DE0, 0x46AA, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; +const IID IID_IDirect3DLight = {0x4417C142, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; +const IID IID_IDirect3DMaterial = {0x4417C144, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; +const IID IID_IDirect3DMaterial2 = {0x93281503, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +const IID IID_IDirect3DMaterial3 = {0xCA9C46F4, 0xD3C5, 0x11D1, [0xB7, 0x5A, 0x00, 0x60, 0x08, 0x52, 0xB3, 0x12]}; +const IID IID_IDirect3DMMXDevice = {0x881949A1, 0xD6F3, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +const IID IID_IDirect3DNullDevice = {0x8767DF22, 0xBACC, 0x11D1, [0x89, 0x69, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID IID_IDirect3DRampDevice = {0xF2086B20, 0x259F, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +const IID IID_IDirect3DRefDevice = {0x50936643, 0x13E9, 0x11D1, [0x89, 0xAA, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +const IID IID_IDirect3DRGBDevice = {0xA4665C60, 0x2673, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +const IID IID_IDirect3DRM = {0x2BC49361, 0x8327, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRM2 = {0x4516ECC8, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRM3 = {0x4516EC83, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRMAnimation = {0xEB16CB0D, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMAnimation2 = {0xFF6B7F77, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; +const IID IID_IDirect3DRMAnimationArray = {0xD5F1CAE0, 0x4BD7, 0x11D1, [0xB9, 0x74, 0x00, 0x60, 0x08, 0x3E, 0x45, 0xF3]}; +const IID IID_IDirect3DRMAnimationSet = {0xEB16CB0E, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMAnimationSet2 = {0xFF6B7F79, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; +const IID IID_IDirect3DRMClippedVisual = {0x5434E733, 0x6D66, 0x11D1, [0xBB, 0x0B, 0x00, 0x00, 0xF8, 0x75, 0x86, 0x5A]}; +const IID IID_IDirect3DRMDevice = {0xE9E19280, 0x6E05, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMDevice2 = {0x4516EC78, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRMDevice3 = {0x549F498B, 0xBFEB, 0x11D1, [0x8E, 0xD8, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x82]}; +const IID IID_IDirect3DRMDeviceArray = {0xEB16CB10, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMFace = {0xEB16CB07, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMFace2 = {0x4516EC81, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRMFaceArray = {0xEB16CB17, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMFrame = {0xEB16CB03, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMFrame2 = {0xC3DFBD60, 0x3988, 0x11D0, [0x9E, 0xC2, 0x00, 0x00, 0xC0, 0x29, 0x1A, 0xC3]}; +const IID IID_IDirect3DRMFrame3 = {0xFF6B7F70, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; +const IID IID_IDirect3DRMFrameArray = {0xEB16CB12, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMInterpolator = {0x242F6BC1, 0x3849, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRMLight = {0xEB16CB08, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMLightArray = {0xEB16CB14, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMMaterial = {0xEB16CB0B, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMMaterial2 = {0xFF6B7F75, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; +const IID IID_IDirect3DRMMesh = {0xA3A80D01, 0x6E12, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMMeshBuilder = {0xA3A80D02, 0x6E12, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMMeshBuilder2 = {0x4516EC77, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRMMeshBuilder3 = {0x4516EC82, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRMObject = {0xEB16CB00, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMObject2 = {0x4516EC7C, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRMObjectArray = {0x242F6BC2, 0x3849, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRMPicked2Array = {0x4516EC7B, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRMPickedArray = {0xEB16CB16, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMProgressiveMesh = {0x4516EC79, 0x8F20, 0x11D0, [0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3]}; +const IID IID_IDirect3DRMShadow = {0xAF359780, 0x6BA3, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMShadow2 = {0x86B44E25, 0x9C82, 0x11D1, [0xBB, 0x0B, 0x00, 0xA0, 0xC9, 0x81, 0xA0, 0xA6]}; +const IID IID_IDirect3DRMTexture = {0xEB16CB09, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMTexture2 = {0x120F30C0, 0x1629, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; +const IID IID_IDirect3DRMTexture3 = {0xFF6B7F73, 0xA40E, 0x11D1, [0x91, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0x8E, 0x66]}; +const IID IID_IDirect3DRMUserVisual = {0x59163DE0, 0x6D43, 0x11CF, [0xAC, 0x4A, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMViewport = {0xEB16CB02, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMViewport2 = {0x4A1B1BE6, 0xBFED, 0x11D1, [0x8E, 0xD8, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x82]}; +const IID IID_IDirect3DRMViewportArray = {0xEB16CB11, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMVisual = {0xEB16CB04, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMVisualArray = {0xEB16CB13, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMWinDevice = {0xC5016CC0, 0xD273, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DRMWrap = {0xEB16CB0A, 0xD271, 0x11CE, [0xAC, 0x48, 0x00, 0x00, 0xC0, 0x38, 0x25, 0xA1]}; +const IID IID_IDirect3DTexture = {0x2CDCD9E0, 0x25A0, 0x11CF, [0xA3, 0x1A, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +const IID IID_IDirect3DTexture2 = {0x93281502, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +const IID IID_IDirect3DTnLHalDevice = {0xF5049E78, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID IID_IDirect3DVertexBuffer = {0x7A503555, 0x4A83, 0x11D1, [0xA5, 0xDB, 0x00, 0xA0, 0xC9, 0x03, 0x67, 0xF8]}; +const IID IID_IDirect3DVertexBuffer7 = {0xF5049E7D, 0x4861, 0x11D2, [0xA4, 0x07, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID IID_IDirect3DViewport = {0x4417C146, 0x33AD, 0x11CF, [0x81, 0x6F, 0x00, 0x00, 0xC0, 0x20, 0x15, 0x6E]}; +const IID IID_IDirect3DViewport2 = {0x93281500, 0x8CF8, 0x11D0, [0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29]}; +const IID IID_IDirect3DViewport3 = {0xB0AB3B61, 0x33D7, 0x11D1, [0xA9, 0x81, 0x00, 0xC0, 0x4F, 0xD7, 0xB1, 0x74]}; +const IID IID_IDirectDraw = {0x6C14DB80, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +const IID IID_IDirectDraw2 = {0xB3A6F3E0, 0x2B43, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +const IID IID_IDirectDraw4 = {0x9C59509A, 0x39BD, 0x11D1, [0x8C, 0x4A, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +const IID IID_IDirectDraw7 = {0x15E65EC0, 0x3B9C, 0x11D2, [0xB9, 0x2F, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; +const IID IID_IDirectDrawClipper = {0x6C14DB85, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +const IID IID_IDirectDrawColorControl = {0x4B9F0EE0, 0x0D7E, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +const IID IID_IDirectDrawFactory2 = {0x89B2C488, 0x4AF4, 0x11D1, [0x8C, 0x4C, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +const IID IID_IDirectDrawGammaControl = {0x69C11C3E, 0xB46B, 0x11D1, [0xAD, 0x7A, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; +const IID IID_IDirectDrawKernel = {0x8D56C120, 0x6A08, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +const IID IID_IDirectDrawOptSurface = {0x51191F1E, 0x4F2B, 0x11D1, [0x8C, 0xC3, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8]}; +const IID IID_IDirectDrawPalette = {0x6C14DB84, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +const IID IID_IDirectDrawPalette2 = {0xC03C477E, 0x6519, 0x11D1, [0x8C, 0x52, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5]}; +const IID IID_IDirectDrawSurface = {0x6C14DB81, 0xA733, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +const IID IID_IDirectDrawSurface2 = {0x57805885, 0x6EEC, 0x11CF, [0x94, 0x41, 0xA8, 0x23, 0x03, 0xC1, 0x0E, 0x27]}; +const IID IID_IDirectDrawSurface3 = {0xDA044E00, 0x69B2, 0x11D0, [0xA1, 0xD5, 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xBB]}; +const IID IID_IDirectDrawSurface4 = {0x0B2B8630, 0xAD35, 0x11D0, [0x8E, 0xA6, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; +const IID IID_IDirectDrawSurface7 = {0x06675A80, 0x3B9B, 0x11D2, [0xB9, 0x2F, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B]}; +const IID IID_IDirectDrawSurfaceKernel = {0x60755DA0, 0x6A40, 0x11D0, [0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8]}; +const IID IID_IDirectDrawVideoAccelerator = {0xC9B2D740, 0x3356, 0x11D1, [0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E]}; +const IID IID_IDirectDrawVideoPort = {0xB36D93E0, 0x2B43, 0x11CF, [0xA2, 0xDE, 0x00, 0xAA, 0x00, 0xB9, 0x33, 0x56]}; +const IID IID_IDirectInput2A = {0x5944E662, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IDirectInput2W = {0x5944E663, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IDirectInput7A = {0x9A4CB684, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; +const IID IID_IDirectInput7W = {0x9A4CB685, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; +const IID IID_IDirectInputA = {0x89521360, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IDirectInputDevice2A = {0x5944E682, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IDirectInputDevice2W = {0x5944E683, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IDirectInputDevice7A = {0x57D7C6BC, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; +const IID IID_IDirectInputDevice7W = {0x57D7C6BD, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; +const IID IID_IDirectInputDeviceA = {0x5944E680, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IDirectInputDeviceW = {0x5944E681, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IDirectInputEffect = {0xE7E1F7C0, 0x88D2, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID IID_IDirectInputEffectDriver = {0x02538130, 0x898F, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; +const IID IID_IDirectInputJoyConfig = {0x1DE12AB1, 0xC9F5, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IDirectInputPIDDriver = {0xEEC6993A, 0xB3FD, 0x11D2, [0xA9, 0x16, 0x00, 0xC0, 0x4F, 0xB9, 0x86, 0x38]}; +const IID IID_IDirectInputW = {0x89521361, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IDirectMusic = {0x6536115A, 0x7B2D, 0x11D2, [0xBA, 0x18, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID IID_IDirectMusic2 = {0x6FC2CAE1, 0xBC78, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +const IID IID_IDirectMusicBand = {0xD2AC28C0, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicBuffer = {0xD2AC2878, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicChordMap = {0xD2AC28BE, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicCollection = {0xD2AC287C, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicComposer = {0xD2AC28BF, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicDownload = {0xD2AC287B, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicDownloadedInstrument = {0xD2AC287E, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicGetLoader = {0x68A04844, 0xD13D, 0x11D1, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +const IID IID_IDirectMusicGraph = {0x2BEFC277, 0x5497, 0x11D2, [0xBC, 0xCB, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +const IID IID_IDirectMusicInstrument = {0xD2AC287D, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicLoader = {0x2FFAACA2, 0x5DCA, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +const IID IID_IDirectMusicObject = {0xD2AC28B5, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicPerformance = {0x07D43D03, 0x6523, 0x11D2, [0x87, 0x1D, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicPerformance2 = {0x6FC2CAE0, 0xBC78, 0x11D2, [0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6]}; +const IID IID_IDirectMusicPort = {0x08F2D8C9, 0x37C2, 0x11D2, [0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID IID_IDirectMusicPortDownload = {0xD2AC287A, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicSegment = {0xF96029A2, 0x4282, 0x11D2, [0x87, 0x17, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicSegment2 = {0xD38894D1, 0xC052, 0x11D2, [0x87, 0x2F, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicSegmentState = {0xA3AFDCC7, 0xD3EE, 0x11D1, [0xBC, 0x8D, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEB]}; +const IID IID_IDirectMusicStyle = {0xD2AC28BD, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicThru = {0xCED153E7, 0x3606, 0x11D2, [0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12]}; +const IID IID_IDirectMusicTool = {0xD2AC28BA, 0xB39B, 0x11D1, [0x87, 0x04, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectMusicTrack = {0xF96029A1, 0x4282, 0x11D2, [0x87, 0x17, 0x00, 0x60, 0x08, 0x93, 0xB1, 0xBD]}; +const IID IID_IDirectoryObject = {0xE798DE2C, 0x22E4, 0x11D0, [0x84, 0xFE, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IDirectorySchemaMgmt = {0x75DB3B9C, 0xA4D8, 0x11D0, [0xA7, 0x9C, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; +const IID IID_IDirectorySearch = {0x109BA8EC, 0x92F0, 0x11D0, [0xA7, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0xA8]}; +const IID IID_IDirectPlay = {0x5454E9A0, 0xDB65, 0x11CE, [0x92, 0x1C, 0x00, 0xAA, 0x00, 0x6C, 0x49, 0x72]}; +const IID IID_IDirectPlay2 = {0x2B74F7C0, 0x9154, 0x11CF, [0xA9, 0xCD, 0x00, 0xAA, 0x00, 0x68, 0x86, 0xE3]}; +const IID IID_IDirectPlay2A = {0x9D460580, 0xA822, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0x53, 0x4E, 0x82]}; +const IID IID_IDirectPlay3 = {0x133EFE40, 0x32DC, 0x11D0, [0x9C, 0xFB, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; +const IID IID_IDirectPlay3A = {0x133EFE41, 0x32DC, 0x11D0, [0x9C, 0xFB, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; +const IID IID_IDirectPlay4 = {0x0AB1C530, 0x4745, 0x11D1, [0xA7, 0xA1, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +const IID IID_IDirectPlay4A = {0x0AB1C531, 0x4745, 0x11D1, [0xA7, 0xA1, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +const IID IID_IDirectPlayLobby = {0xAF465C71, 0x9588, 0x11CF, [0xA0, 0x20, 0x00, 0xAA, 0x00, 0x61, 0x57, 0xAC]}; +const IID IID_IDirectPlayLobby2 = {0x0194C220, 0xA303, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID IID_IDirectPlayLobby2A = {0x1BB4AF80, 0xA303, 0x11D0, [0x9C, 0x4F, 0x00, 0xA0, 0xC9, 0x05, 0x42, 0x5E]}; +const IID IID_IDirectPlayLobby3 = {0x2DB72490, 0x652C, 0x11D1, [0xA7, 0xA8, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +const IID IID_IDirectPlayLobby3A = {0x2DB72491, 0x652C, 0x11D1, [0xA7, 0xA8, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; +const IID IID_IDirectPlayLobbyA = {0x26C66A70, 0xB367, 0x11CF, [0xA0, 0x24, 0x00, 0xAA, 0x00, 0x61, 0x57, 0xAC]}; +const IID IID_IDirectSound = {0x279AFA83, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +const IID IID_IDirectSound3DBuffer = {0x279AFA86, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +const IID IID_IDirectSound3DListener = {0x279AFA84, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +const IID IID_IDirectSoundBuffer = {0x279AFA85, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +const IID IID_IDirectSoundCapture = {0xB0210781, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; +const IID IID_IDirectSoundCaptureBuffer = {0xB0210782, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; +const IID IID_IDirectSoundNotify = {0xB0210783, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; +const IID IID_IDirectWriterLock = {0x0E6D4D92, 0x6738, 0x11CF, [0x96, 0x08, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; +const IID IID_IDirectXFile = {0x3D82AB40, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID IID_IDirectXFileBinary = {0x3D82AB46, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID IID_IDirectXFileData = {0x3D82AB44, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID IID_IDirectXFileDataReference = {0x3D82AB45, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID IID_IDirectXFileEnumObject = {0x3D82AB41, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID IID_IDirectXFileObject = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID IID_IDirectXFileSaveObject = {0x3D82AB42, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID IID_IDiscardableBrowserProperty = {0x49C3DE7C, 0xD329, 0x11D0, [0xAB, 0x73, 0x00, 0xC0, 0x4F, 0xC3, 0x3E, 0x80]}; +const IID IID_IDiscMaster = {0x520CCA62, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID IID_IDiscMasterProgressEvents = {0xEC9E51C1, 0x4E5D, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID IID_IDiscRecorder = {0x85AC9776, 0xCA88, 0x4CF2, [0x89, 0x4E, 0x09, 0x59, 0x8C, 0x07, 0x8A, 0x41]}; +const IID IID_IDiscStash = {0x520CCA64, 0x51A5, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID IID_IDispatch = {0x00020400, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDispatchEx = {0xA6EF9860, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +const IID IID_IDispError = {0xA6EF9861, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +const IID IID_IDisplayPointer = {0x3050F69E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IDisplayServices = {0x3050F69D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IDithererImpl = {0x7C48E840, 0x3910, 0x11D0, [0x86, 0xFC, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; +const IID IID_IDocHostShowUI = {0xC4D244B0, 0xD43E, 0x11CF, [0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A]}; +const IID IID_IDocHostUIHandler = {0xBD3F23C0, 0xD43E, 0x11CF, [0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A]}; +const IID IID_IDocHostUIHandler2 = {0x3050F6D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IDockingWindow = {0x012DD920, 0x7B26, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; +const IID IID_IDockingWindowFrame = {0x47D2657A, 0x7B27, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; +const IID IID_IDockingWindowSite = {0x2A342FC2, 0x7B26, 0x11D0, [0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; +const IID IID_IDoTask = {0x0230C9F8, 0xEE7F, 0x4307, [0x98, 0xDB, 0x72, 0x6E, 0xBC, 0xAE, 0x55, 0xD6]}; +const IID IID_IDownloadBehavior = {0x3050F5BD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IDownloadManager = {0x988934A4, 0x064B, 0x11D3, [0xBB, 0x80, 0x00, 0x10, 0x4B, 0x35, 0xE7, 0xF9]}; +const IID IID_IDownloadNotify = {0xCAEB5D28, 0xAE4C, 0x11D1, [0xBA, 0x40, 0x00, 0xC0, 0x4F, 0xB9, 0x2D, 0x79]}; +const IID IID_IDragSourceHelper = {0xDE5BF786, 0x477A, 0x11D2, [0x83, 0x9D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; +const IID IID_IDropSource = {0x00000121, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDropTarget = {0x00000122, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IDropTargetHelper = {0x4657278B, 0x411B, 0x11D2, [0x83, 0x9A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0]}; +const IID IID_IDsBrowseDomainTree = {0x7CABCF1E, 0x78F5, 0x11D2, [0x96, 0x0C, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; +const IID IID_IDsQueryColumnHandler = {0xC072999E, 0xFA49, 0x11D1, [0xA0, 0xAF, 0x00, 0xC0, 0x4F, 0xA3, 0x1A, 0x86]}; +const IID IID_IDummy = {0x0D7CA54A, 0xD252, 0x4FCB, [0x91, 0x04, 0xF6, 0xDD, 0xD3, 0x10, 0xB3, 0xF9]}; +const IID IID_IDummyHICONIncluder = {0x947990DE, 0xCC28, 0x11D2, [0xA0, 0xF7, 0x00, 0x80, 0x5F, 0x85, 0x8F, 0xB1]}; +const IID IID_IDX2D = {0x9EFD02A9, 0xA996, 0x11D1, [0x81, 0xC9, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_IDX2DDebug = {0x03BB2457, 0xA279, 0x11D1, [0x81, 0xC6, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_IDXARGBReadPtr = {0xEAAAC2D6, 0xC290, 0x11D1, [0x90, 0x5D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXARGBReadWritePtr = {0xEAAAC2D7, 0xC290, 0x11D1, [0x90, 0x5D, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXARGBSurfaceInit = {0x9EA3B63A, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXBaseObject = {0x17B59B2B, 0x9CC8, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXBasicImage = {0x16B280C7, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXDCLock = {0x0F619456, 0xCF39, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXDLUTBuilder = {0x73068231, 0x35EE, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_IDXDMapper = {0x7FD9088B, 0x35ED, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_IDXEffect = {0xE31FB81B, 0x1335, 0x11D1, [0x81, 0x89, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_IDXGradient = {0xB2024B51, 0xEE77, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXGradient2 = {0xD0EF2A80, 0x61DC, 0x11D2, [0xB2, 0xEB, 0x00, 0xA0, 0xC9, 0x36, 0xB2, 0x12]}; +const IID IID_IDXLookupTable = {0x01BAFC7F, 0x9E63, 0x11D1, [0x90, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXLUTBuilder = {0xF4370FC1, 0xCADB, 0x11D0, [0xB5, 0x2C, 0x00, 0xA0, 0xC9, 0x05, 0x43, 0x73]}; +const IID IID_IDXMapper = {0x555278E5, 0x05DB, 0x11D1, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; +const IID IID_IDXPixelate = {0xD33E180F, 0xFBE9, 0x11D1, [0x90, 0x6A, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXRasterizer = {0x9EA3B635, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXRawSurface = {0x09756C8A, 0xD96A, 0x11D1, [0x90, 0x62, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXSurface = {0xB39FD73F, 0xE139, 0x11D1, [0x90, 0x65, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXSurfaceFactory = {0x144946F5, 0xC4D4, 0x11D1, [0x81, 0xD1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_IDXSurfaceInit = {0x9EA3B639, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXSurfaceModifier = {0x9EA3B637, 0xC37D, 0x11D1, [0x90, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXSurfacePick = {0x30A5FB79, 0xE11F, 0x11D1, [0x90, 0x64, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXTAlpha = {0x1D4637E0, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID IID_IDXTAlphaImageLoader = {0xA5F2D3E8, 0x7A7E, 0x48E5, [0xBC, 0x75, 0x40, 0x79, 0x0B, 0xE4, 0xA9, 0x41]}; +const IID IID_IDXTaskManager = {0x254DBBC1, 0xF922, 0x11D0, [0x88, 0x3A, 0x3C, 0x8B, 0x00, 0xC1, 0x00, 0x00]}; +const IID IID_IDXTBindHost = {0xD26BCE55, 0xE9DC, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXTCheckerBoard = {0xAD3C2576, 0x117C, 0x4510, [0x84, 0xDD, 0xB6, 0x68, 0x97, 0x1D, 0xCF, 0xD1]}; +const IID IID_IDXTChroma = {0x1D4637E2, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID IID_IDXTClipOrigin = {0xEE1663D8, 0x0988, 0x4C48, [0x9F, 0xD6, 0xDB, 0x44, 0x50, 0x88, 0x56, 0x68]}; +const IID IID_IDXTComposite = {0x9A43A843, 0x0831, 0x11D1, [0x81, 0x7F, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_IDXTConvolution = {0x7BA7F8AF, 0xE5EA, 0x11D1, [0x81, 0xDD, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_IDXTDropShadow = {0x1D4637E3, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID IID_IDXTFade = {0x16B280C4, 0xEE70, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXTFilter = {0x6187E5A2, 0xA445, 0x4608, [0x8F, 0xC0, 0xBE, 0x7A, 0x6C, 0x8D, 0xB3, 0x86]}; +const IID IID_IDXTFilterBehavior = {0x14D7DDDD, 0xACA2, 0x4E45, [0x95, 0x04, 0x38, 0x08, 0xAB, 0xEB, 0x4F, 0x92]}; +const IID IID_IDXTFilterBehaviorSite = {0x909B23C2, 0x9018, 0x499F, [0xA8, 0x6D, 0x4E, 0x7D, 0xA9, 0x37, 0xE9, 0x31]}; +const IID IID_IDXTFilterCollection = {0x22B07B33, 0x8BFB, 0x49D4, [0x9B, 0x90, 0x09, 0x38, 0x37, 0x0C, 0x90, 0x19]}; +const IID IID_IDXTFilterController = {0x5CF315F2, 0x273D, 0x47B6, [0xB9, 0xED, 0xF7, 0x5D, 0xC3, 0xB0, 0x15, 0x0B]}; +const IID IID_IDXTGlow = {0x1D4637E4, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID IID_IDXTGradientD = {0x623E2881, 0xFC0E, 0x11D1, [0x9A, 0x77, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +const IID IID_IDXTGridSize = {0xD6BBE91E, 0xFF60, 0x11D2, [0x8F, 0x6E, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x74]}; +const IID IID_IDXTICMFilter = {0x734321ED, 0x1E7B, 0x4E1C, [0xBB, 0xFA, 0x89, 0xC8, 0x19, 0x80, 0x0E, 0x2F]}; +const IID IID_IDXTLabel = {0xC0C17F0E, 0xAE41, 0x11D1, [0x9A, 0x3B, 0x00, 0x00, 0xF8, 0x75, 0x6A, 0x10]}; +const IID IID_IDXTLight = {0xF9EFBEC1, 0x4302, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID IID_IDXTMask = {0xA1067146, 0xB063, 0x47D7, [0xA5, 0x4A, 0x2C, 0x23, 0x09, 0xE9, 0x88, 0x9D]}; +const IID IID_IDXTMatrix = {0xAC66A493, 0x0F0C, 0x4C76, [0x82, 0x5C, 0x9D, 0x68, 0xBE, 0xDE, 0x91, 0x88]}; +const IID IID_IDXTMetaBurnFilm = {0x107045D0, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaCenterPeel = {0xAA0D4D0B, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID IID_IDXTMetaColorFade = {0x2A54C907, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaFlowMotion = {0x2A54C90A, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaGriddler = {0x2A54C910, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaGriddler2 = {0x2A54C912, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaJaws = {0x2A54C903, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaLightWipe = {0x107045C7, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaLiquid = {0xAA0D4D09, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID IID_IDXTMetaPageTurn = {0xAA0D4D07, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID IID_IDXTMetaPeelPiece = {0xAA0D4D0F, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID IID_IDXTMetaPeelSmall = {0xAA0D4D0D, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID IID_IDXTMetaPeelSplit = {0xAA0D4D11, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID IID_IDXTMetaRadialScaleWipe = {0x107045C9, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaRipple = {0xAA0D4D02, 0x06A3, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID IID_IDXTMetaRoll = {0x9C61F46D, 0x0530, 0x11D2, [0x8F, 0x98, 0x00, 0xC0, 0x4F, 0xB9, 0x2E, 0xB7]}; +const IID IID_IDXTMetaThreshold = {0x2A54C914, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaTwister = {0x107045CE, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaVacuum = {0x2A54C90C, 0x07AA, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaWater = {0x107045C4, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaWhiteOut = {0x107045CB, 0x06E0, 0x11D2, [0x8D, 0x6D, 0x00, 0xC0, 0x4F, 0x8E, 0xF8, 0xE0]}; +const IID IID_IDXTMetaWormHole = {0x0E6AE021, 0x0C83, 0x11D2, [0x8C, 0xD4, 0x00, 0x10, 0x4B, 0xC7, 0x5D, 0x9A]}; +const IID IID_IDXTMotionBlur = {0x089057BE, 0xD3F5, 0x4A2C, [0xB1, 0x0A, 0xA5, 0x13, 0x01, 0x84, 0xA0, 0xF7]}; +const IID IID_IDXTRandomBars = {0x8A6D2022, 0x4A8F, 0x4EB9, [0xBB, 0x25, 0xAA, 0x05, 0x20, 0x1F, 0x9C, 0x84]}; +const IID IID_IDXTransform = {0x30A5FB78, 0xE11F, 0x11D1, [0x90, 0x64, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXTransformFactory = {0x6A950B2B, 0xA971, 0x11D1, [0x81, 0xC8, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_IDXTRedirect = {0x02F5140B, 0x626F, 0x4019, [0x9C, 0x9E, 0x2D, 0xAA, 0x1E, 0x93, 0xE8, 0xFC]}; +const IID IID_IDXTRedirectFilterInit = {0xD1A57094, 0x21F7, 0x4E6C, [0x93, 0xE5, 0xF5, 0xF7, 0x7F, 0x74, 0x82, 0x93]}; +const IID IID_IDXTRevealTrans = {0xB8095006, 0xA128, 0x464B, [0x8B, 0x2D, 0x90, 0x58, 0x0A, 0xEE, 0x2B, 0x05]}; +const IID IID_IDXTScale = {0xB39FD742, 0xE139, 0x11D1, [0x90, 0x65, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXTScaleOutput = {0xB2024B50, 0xEE77, 0x11D1, [0x90, 0x66, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0x9D]}; +const IID IID_IDXTShadow = {0x1D4637E6, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID IID_IDXTStrips = {0xA83C9B5C, 0xFB11, 0x4AF5, [0x8F, 0x65, 0xD0, 0x3F, 0x15, 0x1D, 0x3E, 0xD5]}; +const IID IID_IDXTWave = {0x1D4637E7, 0x383C, 0x11D2, [0x95, 0x2A, 0x00, 0xC0, 0x4F, 0xA3, 0x4F, 0x05]}; +const IID IID_IDXTWipe = {0xAF279B2F, 0x86EB, 0x11D1, [0x81, 0xBF, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID IID_IDXTWipe2 = {0xE1FF8091, 0x442B, 0x4801, [0x88, 0xB6, 0x2B, 0x47, 0xB1, 0x61, 0x1F, 0xD2]}; +const IID IID_IDynamicPortMapping = {0x4FC80282, 0x23B6, 0x4378, [0x9A, 0x27, 0xCD, 0x8F, 0x17, 0xC9, 0x40, 0x0C]}; +const IID IID_IDynamicPortMappingCollection = {0xB60DE00F, 0x156E, 0x4E8D, [0x9E, 0xC1, 0x3A, 0x23, 0x42, 0xC1, 0x08, 0x99]}; +const IID IID_IEditDebugServices = {0x3050F60B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementAdorner = {0x3050F607, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehavior = {0x3050F425, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorCategory = {0x3050F4ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorFactory = {0x3050F429, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorFocus = {0x3050F6B6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorLayout = {0x3050F6BA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorLayout2 = {0x3050F846, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorRender = {0x3050F4AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorSite = {0x3050F427, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorSiteCategory = {0x3050F4EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorSiteLayout = {0x3050F6B7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorSiteLayout2 = {0x3050F847, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorSiteOM = {0x3050F489, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorSiteOM2 = {0x3050F659, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorSiteRender = {0x3050F4A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorSubmit = {0x3050F646, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementBehaviorUI = {0x3050F4BF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementNamespace = {0x3050F671, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementNamespaceFactory = {0x3050F672, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementNamespaceFactory2 = {0x3050F805, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementNamespaceFactoryCallback = {0x3050F7FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementNamespacePrivate = {0x3050F7FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementNamespaceTable = {0x3050F670, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IElementSegment = {0x3050F68F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IEmptyVolumeCache = {0x8FCE5227, 0x04DA, 0x11D1, [0xA0, 0x04, 0x00, 0x80, 0x5F, 0x8A, 0xBE, 0x06]}; +const IID IID_IEmptyVolumeCache2 = {0x02B7E3BA, 0x4DB3, 0x11D2, [0xB2, 0xD9, 0x00, 0xC0, 0x4F, 0x8E, 0xEC, 0x8C]}; +const IID IID_IEmptyVolumeCacheCallBack = {0x6E793361, 0x73C6, 0x11D0, [0x84, 0x69, 0x00, 0xAA, 0x00, 0x44, 0x29, 0x01]}; +const IID IID_IEncodingFilterFactory = {0x70BDDE00, 0xC18E, 0x11D0, [0xA9, 0xCE, 0x00, 0x60, 0x97, 0x94, 0x23, 0x11]}; +const IID IID_IEnroll = {0xACAA7838, 0x4585, 0x11D1, [0xAB, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; +const IID IID_IEnroll2 = {0xC080E199, 0xB7DF, 0x11D2, [0xA4, 0x21, 0x00, 0xC0, 0x4F, 0x79, 0xFE, 0x8E]}; +const IID IID_IEnroll4 = {0xF8053FE5, 0x78F4, 0x448F, [0xA0, 0xDB, 0x41, 0xD6, 0x1B, 0x73, 0x44, 0x6B]}; +const IID IID_IEntryID = {0xE4D19810, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +const IID IID_IEnumACDGroup = {0x5AFC3157, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_IEnumACString = {0x8E74C210, 0xCF9D, 0x4EAF, [0xA4, 0x03, 0x73, 0x56, 0x42, 0x8F, 0x0A, 0x5A]}; +const IID IID_IEnumAdapterInfo = {0xA23F9D11, 0x714C, 0x41FE, [0x84, 0x71, 0xFF, 0xB1, 0x9B, 0xC2, 0x84, 0x54]}; +const IID IID_IEnumAddress = {0x1666FCA1, 0x9363, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_IEnumAgent = {0x5AFC314D, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_IEnumAgentHandler = {0x587E8C28, 0x9802, 0x11D1, [0xA0, 0xA4, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_IEnumAgentSession = {0x5AFC314E, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_IEnumBackgroundCopyFiles = {0xCA51E165, 0xC365, 0x424C, [0x8D, 0x41, 0x24, 0xAA, 0xA4, 0xFF, 0x3C, 0x40]}; +const IID IID_IEnumBackgroundCopyGroups = {0xD993E603, 0x4AA4, 0x47C5, [0x86, 0x65, 0xC2, 0x0D, 0x39, 0xC2, 0xBA, 0x4F]}; +const IID IID_IEnumBackgroundCopyJobs = {0x1AF4F612, 0x3B71, 0x466F, [0x8F, 0x58, 0x7B, 0x6F, 0x73, 0xAC, 0x57, 0xAD]}; +const IID IID_IEnumBackgroundCopyJobs1 = {0x8BAEBA9D, 0x8F1C, 0x42C4, [0xB8, 0x2C, 0x09, 0xAE, 0x79, 0x98, 0x0D, 0x25]}; +const IID IID_IEnumBstr = {0x35372049, 0x0BC6, 0x11D2, [0xA0, 0x33, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_IEnumCall = {0xAE269CF6, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_IEnumCallback = {0x00000108, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumCallHub = {0xA3C15450, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_IEnumCallingCard = {0x0C4D8F02, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_IEnumCATEGORYINFO = {0x0002E011, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumChannels = {0xA4C65425, 0x0F82, 0x11D1, [0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68]}; +const IID IID_IEnumClusCfgIPAddresses = {0xBD5F35BA, 0x0BC0, 0x455F, [0x92, 0x6D, 0xC3, 0xD3, 0x56, 0x41, 0x94, 0x86]}; +const IID IID_IEnumClusCfgManagedResources = {0x7DBE11EB, 0xA5DF, 0x4534, [0xAB, 0xF6, 0x8B, 0xAC, 0x7B, 0x53, 0xFC, 0x95]}; +const IID IID_IEnumClusCfgNetworks = {0xCF3FAED8, 0x1322, 0x4BCB, [0x99, 0x23, 0xB5, 0xB7, 0x45, 0xA6, 0x9E, 0x36]}; +const IID IID_IEnumClusCfgPartitions = {0x4440BB6A, 0xB0AC, 0x479D, [0xB5, 0x34, 0x72, 0x65, 0xA3, 0x1D, 0x6C, 0x55]}; +const IID IID_IEnumCodePage = {0x275C23E3, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; +const IID IID_IEnumConnectionPoints = {0xB196B285, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IEnumConnections = {0xB196B287, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IEnumCookies = {0x5E3E482E, 0x3C22, 0x482C, [0xB6, 0x64, 0x69, 0x30, 0x51, 0xAD, 0x0A, 0x5D]}; +const IID IID_IEnumDebugApplicationNodes = {0x51973C3A, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IEnumDebugCodeContexts = {0x51973C1D, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IEnumDebugExpressionContexts = {0x51973C40, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IEnumDebugExtendedPropertyInfo = {0x51973C53, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IEnumDebugPropertyInfo = {0x51973C51, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IEnumDebugStackFrames = {0x51973C1E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IEnumDebugStackFrames64 = {0x0DC38853, 0xC1B0, 0x4176, [0xA9, 0x84, 0xB2, 0x98, 0x36, 0x10, 0x27, 0xAF]}; +const IID IID_IEnumDialableAddrs = {0x34621D70, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +const IID IID_IEnumDirectory = {0x34621D6D, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +const IID IID_IEnumDirectoryObject = {0x06C9B64A, 0x306D, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_IEnumDiscMasterFormats = {0xDDF445E1, 0x54BA, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID IID_IEnumDiscRecorders = {0x9B1921E1, 0x54AC, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID IID_IEnumExtraSearch = {0x0E700BE1, 0x9DB6, 0x11D1, [0xA1, 0xCE, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; +const IID IID_IEnumFORMATETC = {0x00000103, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumGeneric = {0x00000106, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumGUID = {0x0002E000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumHLITEM = {0x79EAC9C6, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IEnumHNetApplicationProtocols = {0x85D18B7B, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IEnumHNetBridgedConnections = {0x85D18B7D, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IEnumHNetBridges = {0x85D18B77, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IEnumHNetFirewalledConnections = {0x85D18B78, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IEnumHNetIcsPrivateConnections = {0x85D18B7A, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IEnumHNetIcsPublicConnections = {0x85D18B79, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IEnumHNetPortMappingBindings = {0x85D18B81, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IEnumHNetPortMappingProtocols = {0x85D18B7C, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IEnumHolder = {0x00000107, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumIDList = {0x000214F2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumInputContext = {0x09B5EAB0, 0xF997, 0x11D1, [0x93, 0xD4, 0x00, 0x60, 0xB0, 0x67, 0xB8, 0x6E]}; +const IID IID_IEnumItemProperties = {0xF72C8D96, 0x6DBD, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +const IID IID_IEnumLocation = {0x0C4D8F01, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_IEnumMcastScope = {0xDF0DAF09, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +const IID IID_IEnumMedia = {0xCA8397BE, 0x2FA4, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_IEnumMoniker = {0x00000102, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumNetCfgBindingInterface = {0xC0E8AE90, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IEnumNetCfgBindingPath = {0xC0E8AE91, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IEnumNetCfgComponent = {0xC0E8AE92, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IEnumNetConnection = {0xC08956A0, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IEnumNetSharingEveryConnection = {0xC08956B8, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IEnumNetSharingPortMapping = {0xC08956B0, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IEnumNetSharingPrivateConnection = {0xC08956B5, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IEnumNetSharingPublicConnection = {0xC08956B4, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IEnumNodes = {0xC477E363, 0xAF0A, 0x4203, [0xA6, 0x04, 0x45, 0xCD, 0x60, 0x7D, 0xD7, 0x10]}; +const IID IID_IEnumNotification = {0xC733E4A8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_IEnumNotificationSinkItem = {0xC733E4AA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_IEnumOleDocumentViews = {0xB722BCC8, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +const IID IID_IEnumOleUndoUnits = {0xB3E7C340, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; +const IID IID_IEnumOLEVERB = {0x00000104, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumParticipant = {0x0A91B56C, 0x5A35, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; +const IID IID_IEnumPhone = {0xF15B7669, 0x4780, 0x4595, [0x8C, 0x89, 0xFB, 0x36, 0x9C, 0x8C, 0xF7, 0xAA]}; +const IID IID_IEnumPluggableSuperclassInfo = {0xE9586A80, 0x89E6, 0x4CFF, [0x93, 0x1D, 0x47, 0x8D, 0x57, 0x51, 0xF4, 0xC0]}; +const IID IID_IEnumPluggableTerminalClassInfo = {0x4567450C, 0xDBEE, 0x4E3F, [0xAA, 0xF5, 0x37, 0xBF, 0x9E, 0xBF, 0x5E, 0x29]}; +const IID IID_IEnumPrivacyRecords = {0x3050F844, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IEnumPropertyMap = {0xC733E4A1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_IEnumPublishedApps = {0x0B124F8C, 0x91F0, 0x11D1, [0xB8, 0xB5, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; +const IID IID_IEnumQueue = {0x5AFC3158, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_IEnumRegisterWordA = {0x08C03412, 0xF96B, 0x11D0, [0xA4, 0x75, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +const IID IID_IEnumRegisterWordW = {0x4955DD31, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +const IID IID_IEnumRemoteDebugApplications = {0x51973C3B, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IEnumRemoteDebugApplicationThrea = {0x51973C3C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IEnumRfc1766 = {0x3DC39D1D, 0xC030, 0x11D0, [0xB8, 0x1B, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; +const IID IID_IEnumScheduleGroup = {0xC733E4A9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_IEnumScript = {0xAE5F1430, 0x388B, 0x11D2, [0x83, 0x80, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0xA1]}; +const IID IID_IEnumSTATDATA = {0x00000105, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumSTATPROPBAG = {0x20021801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +const IID IID_IEnumSTATPROPSETSTG = {0x0000013B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumSTATPROPSTG = {0x00000139, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumSTATSTG = {0x0000000D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumSTATURL = {0x3C374A42, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; +const IID IID_IEnumStream = {0xEE3BD606, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_IEnumString = {0x00000101, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumSubscription = {0xF72C8D97, 0x6DBD, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +const IID IID_IEnumSubStream = {0xEE3BD609, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_IEnumSyncItems = {0xF0E1589A, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; +const IID IID_IEnumSyncSchedules = {0xF0E15898, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; +const IID IID_IEnumTerminal = {0xAE269CF4, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_IEnumTerminalClass = {0xAE269CF5, 0x935E, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_IEnumTime = {0x9055322E, 0x2FA8, 0x11D1, [0x97, 0x74, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_IEnumTravelLogEntry = {0x7EBFDD85, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; +const IID IID_IEnumUnknown = {0x00000100, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumVARIANT = {0x00020404, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IEnumWbemClassObject = {0x027947E1, 0xD731, 0x11CE, [0xA3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]}; +const IID IID_IErrorInfo = {0x1CF2B120, 0x547D, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; +const IID IID_IErrorLog = {0x3127CA40, 0x446E, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +const IID IID_IErrorLookup = {0x0C733A66, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IErrorRecords = {0x0C733A67, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IESP = {0xE99A04AA, 0xAB95, 0x11D0, [0xBE, 0x96, 0x00, 0xA0, 0xC9, 0x49, 0x89, 0xDE]}; +const IID IID_IExtendObjectManager = {0xCA7BB0B9, 0x700C, 0x4DC5, [0x99, 0x1E, 0x75, 0xF9, 0xE6, 0x5E, 0xE9, 0x75]}; +const IID IID_IExtensionServices = {0x79EAC9CB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IExternalConnection = {0x00000019, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IExtractIconA = {0x000214EB, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IExtractIconW = {0x000214FA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IExtractImage = {0xBB2E617C, 0x0920, 0x11D1, [0x9A, 0x0B, 0x00, 0xC0, 0x4F, 0xC2, 0xD6, 0xC1]}; +const IID IID_IExtractImage2 = {0x953BB1EE, 0x93B4, 0x11D1, [0x98, 0xA3, 0x00, 0xC0, 0x4F, 0xB6, 0x87, 0xDA]}; +const IID IID_IFileSearchBand = {0x2D91EEA1, 0x9932, 0x11D2, [0xBE, 0x86, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; +const IID IID_IFileSystemBindData = {0x01E18D10, 0x4D8B, 0x11D2, [0x85, 0x5D, 0x00, 0x60, 0x08, 0x05, 0x93, 0x67]}; +const IID IID_IFileViewerA = {0x000214F0, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IFileViewerSite = {0x000214F3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IFileViewerW = {0x000214F8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IFillLockBytes = {0x99CAF010, 0x415E, 0x11CF, [0x88, 0x14, 0x00, 0xAA, 0x00, 0xB5, 0x69, 0xF5]}; +const IID IID_IFilter = {0x89BCB740, 0x6119, 0x101A, [0xBC, 0xB7, 0x00, 0xDD, 0x01, 0x06, 0x55, 0xAF]}; +const IID IID_IFilterAnimationInfo = {0x02E29300, 0xC758, 0x49B4, [0x9E, 0x11, 0xC5, 0x8B, 0xFE, 0x90, 0x55, 0x8B]}; +const IID IID_IFilterStatus = {0xF4EB8260, 0x8DDA, 0x11D1, [0xB3, 0xAA, 0x00, 0xA0, 0xC9, 0x06, 0x37, 0x96]}; +const IID IID_IFolderFilter = {0x9CC22886, 0xDC8E, 0x11D2, [0xB1, 0xD0, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; +const IID IID_IFolderFilterSite = {0xC0A651F5, 0xB48B, 0x11D2, [0xB5, 0xED, 0x00, 0x60, 0x97, 0xC6, 0x86, 0xF6]}; +const IID IID_IFolderView = {0xCDE725B0, 0xCCC9, 0x4519, [0x91, 0x7E, 0x32, 0x5D, 0x72, 0xFA, 0xB4, 0xCE]}; +const IID IID_IFolderViewHost = {0x1EA58F02, 0xD55A, 0x411D, [0xB0, 0x9E, 0x9E, 0x65, 0xAC, 0x21, 0x60, 0x5B]}; +const IID IID_IFolderViewOC = {0x9BA05970, 0xF6A8, 0x11CF, [0xA4, 0x42, 0x00, 0xA0, 0xC9, 0x0A, 0x8F, 0x39]}; +const IID IID_IFont = {0xBEF6E002, 0xA874, 0x101A, [0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID IID_IFontDisp = {0xBEF6E003, 0xA874, 0x101A, [0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID IID_IFontEventsDisp = {0x4EF6100A, 0xAF88, 0x11D0, [0x98, 0x46, 0x00, 0xC0, 0x4F, 0xC2, 0x99, 0x93]}; +const IID IID_IFontNames = {0x3050F839, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IForegroundTransfer = {0x00000145, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IFsCiAdmin = {0x75398C30, 0x7A26, 0x11D0, [0xA8, 0x0A, 0x00, 0xA0, 0xC9, 0x06, 0x24, 0x1A]}; +const IID IID_IGatherData = {0x65318F4A, 0xB63C, 0x4E21, [0xAD, 0xDC, 0xBD, 0xCF, 0xB9, 0x69, 0xE1, 0x81]}; +const IID IID_IGetClusterDataInfo = {0x97DEDE51, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IGetClusterGroupInfo = {0x97DEDE54, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IGetClusterNetInterfaceInfo = {0x97DEDE57, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IGetClusterNetworkInfo = {0x97DEDE56, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IGetClusterNodeInfo = {0x97DEDE53, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IGetClusterObjectInfo = {0x97DEDE52, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IGetClusterResourceInfo = {0x97DEDE55, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IGetClusterUIInfo = {0x97DEDE50, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IGetDataSource = {0x0C733A75, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IGetRow = {0x0C733AAF, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IGetSession = {0x0C733ABA, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IGetSourceRow = {0x0C733ABB, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IGlobalInterfaceTable = {0x00000146, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IH26XEncodeOptions = {0x65698D40, 0x282D, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IH26XEncoderControl = {0xF9B78AA1, 0xEA12, 0x11CF, [0x9F, 0xEC, 0x00, 0xAA, 0x00, 0xA5, 0x9F, 0x69]}; +const IID IID_IH26XRTPControl = {0x1FC3F2C0, 0x2BFD, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IH26XSnapshot = {0x3CB194A0, 0x10AA, 0x11D0, [0x88, 0x00, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IH26XVideoEffects = {0x21555140, 0x9C2B, 0x11CF, [0x90, 0xFA, 0x00, 0xAA, 0x00, 0xA7, 0x29, 0xEA]}; +const IID IID_IH323LineEx = {0x44CF6A9D, 0xCB40, 0x4BBC, [0xB2, 0xD3, 0xB6, 0xAA, 0x93, 0x32, 0x2C, 0x71]}; +const IID IID_IHeaderFooter = {0x3050F6CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHighlightRenderingServices = {0x3050F606, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHighlightSegment = {0x3050F690, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHlink = {0x79EAC9C3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IHlinkBrowseContext = {0x79EAC9C7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IHlinkFrame = {0x79EAC9C5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IHlinkSite = {0x79EAC9C2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IHlinkTarget = {0x79EAC9C4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IHNetApplicationProtocol = {0x85D18B7F, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetBridge = {0x85D18B75, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetBridgedConnection = {0x85D18B76, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetBridgeSettings = {0x85D18B6D, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetCfgMgr = {0x85D18B6C, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetConnection = {0x85D18B71, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetFirewalledConnection = {0x85D18B72, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetFirewallSettings = {0x85D18B6E, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetIcsPrivateConnection = {0x85D18B74, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetIcsPublicConnection = {0x85D18B73, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetIcsSettings = {0x85D18B6F, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetPortMappingBinding = {0x85D18B80, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetPortMappingProtocol = {0x85D18B7E, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHNetProtocolSettings = {0x85D18B70, 0x3032, 0x11D4, [0x93, 0x48, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x71]}; +const IID IID_IHomePage = {0x766BF2AF, 0xD650, 0x11D1, [0x98, 0x11, 0x00, 0xC0, 0x4F, 0xC3, 0x1D, 0x2E]}; +const IID IID_IHostBehaviorInit = {0x3050F842, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHostDialogHelper = {0x53DEC138, 0xA51E, 0x11D2, [0x86, 0x1E, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; +const IID IID_IHTCAttachBehavior = {0x3050F5F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTCAttachBehavior2 = {0x3050F7EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTCDefaultDispatch = {0x3050F4FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTCDescBehavior = {0x3050F5DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTCEventBehavior = {0x3050F4FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTCMethodBehavior = {0x3050F631, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTCPropertyBehavior = {0x3050F5DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAnchorElement = {0x3050F1DA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAnchorElement2 = {0x3050F825, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAppBehavior = {0x3050F5CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAppBehavior2 = {0x3050F5C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAppBehavior3 = {0x3050F5CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHtmlArea = {0x3050F64E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAreaElement = {0x3050F265, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAreasCollection = {0x3050F383, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAreasCollection2 = {0x3050F5EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAreasCollection3 = {0x3050F837, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAttributeCollection = {0x3050F4C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLAttributeCollection2 = {0x3050F80A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLBaseElement = {0x3050F204, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLBaseFontElement = {0x3050F202, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLBGsound = {0x3050F369, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLBlockElement = {0x3050F208, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLBlockElement2 = {0x3050F823, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLBodyElement = {0x3050F1D8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLBodyElement2 = {0x3050F5C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLBookmarkCollection = {0x3050F4CE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLBRElement = {0x3050F1F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLButtonElement = {0x3050F2BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLCaret = {0x3050F604, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLChangeLog = {0x3050F649, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLChangePlayback = {0x3050F6E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLChangeSink = {0x3050F64A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLCommentElement = {0x3050F20C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLCommentElement2 = {0x3050F813, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLComputedStyle = {0x3050F6C3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLControlElement = {0x3050F4E9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLControlRange = {0x3050F29C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLControlRange2 = {0x3050F65E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLCurrentStyle = {0x3050F3DB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLCurrentStyle2 = {0x3050F658, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLCurrentStyle3 = {0x3050F818, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDatabinding = {0x3050F3F2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDataTransfer = {0x3050F4B3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDDElement = {0x3050F1F2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDialog = {0x3050F216, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDialog2 = {0x3050F5E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDialog3 = {0x3050F388, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDivElement = {0x3050F200, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDivPosition = {0x3050F212, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHtmlDlgSafeHelper = {0x3050F81A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDListElement = {0x3050F1F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDocument = {0x626FC520, 0xA41E, 0x11CF, [0xA7, 0x31, 0x00, 0xA0, 0xC9, 0x08, 0x26, 0x37]}; +const IID IID_IHTMLDocument2 = {0x332C4425, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; +const IID IID_IHTMLDocument3 = {0x3050F485, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDocument4 = {0x3050F69A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDocument5 = {0x3050F80C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDOMAttribute = {0x3050F4B0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDOMAttribute2 = {0x3050F810, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDOMChildrenCollection = {0x3050F5AB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDOMImplementation = {0x3050F80D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDOMNode = {0x3050F5DA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDOMNode2 = {0x3050F80B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDOMTextNode = {0x3050F4B1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDOMTextNode2 = {0x3050F809, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDTElement = {0x3050F1F3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLDXTransform = {0x30E2AB7D, 0x4FDD, 0x4159, [0xB7, 0xEA, 0xDC, 0x72, 0x2B, 0xF4, 0xAD, 0xE5]}; +const IID IID_IHTMLEditDesigner = {0x3050F662, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLEditHost = {0x3050F6A0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLEditHost2 = {0x3050F848, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0D]}; +const IID IID_IHTMLEditingServices = {0x3050F7FB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLEditor = {0x3050F7FA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLEditServices = {0x3050F663, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLEditServices2 = {0x3050F812, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLElement = {0x3050F1FF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLElement2 = {0x3050F434, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLElement3 = {0x3050F673, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLElement4 = {0x3050F80F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLElementCollection = {0x3050F21F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLElementCollection2 = {0x3050F5EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLElementCollection3 = {0x3050F835, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLElementDefaults = {0x3050F6C9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLElementRender = {0x3050F669, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLEmbedElement = {0x3050F25F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLEventObj = {0x3050F32D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLEventObj2 = {0x3050F48B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLEventObj3 = {0x3050F680, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLEventObj4 = {0x3050F814, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFieldSetElement = {0x3050F3E7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFieldSetElement2 = {0x3050F833, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFilterPainter = {0x3050F6DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFilterPaintSite = {0x3050F6D3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFiltersCollection = {0x3050F3EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFontElement = {0x3050F1D9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFontNamesCollection = {0x3050F376, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFontSizesCollection = {0x3050F377, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFormElement = {0x3050F1F7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFormElement2 = {0x3050F4F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFormElement3 = {0x3050F836, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFrameBase = {0x3050F311, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFrameBase2 = {0x3050F6DB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFrameBase3 = {0x3050F82E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFrameElement = {0x3050F313, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFrameElement2 = {0x3050F7F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFramesCollection2 = {0x332C4426, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; +const IID IID_IHTMLFrameSetElement = {0x3050F319, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLFrameSetElement2 = {0x3050F5C6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLGenericElement = {0x3050F4B7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLHeadElement = {0x3050F81D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLHeaderElement = {0x3050F1F6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLHRElement = {0x3050F1F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLHtmlElement = {0x3050F81C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLIFrameElement = {0x3050F315, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLIFrameElement2 = {0x3050F4E6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLImageElementFactory = {0x3050F38E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLImgElement = {0x3050F240, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLImgElement2 = {0x3050F826, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLInputButtonElement = {0x3050F2B2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLInputElement = {0x3050F5D2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLInputElement2 = {0x3050F821, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLInputFileElement = {0x3050F2AD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLInputHiddenElement = {0x3050F2A4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLInputImage = {0x3050F2C2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLInputTextElement = {0x3050F2A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLIPrintCollection = {0x3050F6B5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLIsIndexElement = {0x3050F206, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLIsIndexElement2 = {0x3050F82F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLLabelElement = {0x3050F32A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLLabelElement2 = {0x3050F832, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLLegendElement = {0x3050F3EA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLLegendElement2 = {0x3050F834, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLLIElement = {0x3050F1E0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLLinkElement = {0x3050F205, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLLinkElement2 = {0x3050F4E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLLinkElement3 = {0x3050F81E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLListElement = {0x3050F20E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLListElement2 = {0x3050F822, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHtmlLoadOptions = {0xA71A0808, 0x0F88, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; +const IID IID_IHTMLLocation = {0x163BB1E0, 0x6E00, 0x11CF, [0x83, 0x7A, 0x48, 0xDC, 0x04, 0xC1, 0x00, 0x00]}; +const IID IID_IHTMLMapElement = {0x3050F266, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLMarqueeElement = {0x3050F2B5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLMetaElement = {0x3050F203, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLMetaElement2 = {0x3050F81F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLMimeTypesCollection = {0x3050F3FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLModelessInit = {0x3050F5E4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLNamespace = {0x3050F6BB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLNamespaceCollection = {0x3050F6B8, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLNextIdElement = {0x3050F207, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLNoShowElement = {0x3050F38A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLObjectElement = {0x3050F24F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLObjectElement2 = {0x3050F4CD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLObjectElement3 = {0x3050F827, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLOListElement = {0x3050F1DE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLOMWindowServices = {0x3050F5FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLOpsProfile = {0x3050F401, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLOptionButtonElement = {0x3050F2BC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLOptionElement = {0x3050F211, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLOptionElement2 = {0x3050F697, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLOptionElement3 = {0x3050F820, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLOptionElementFactory = {0x3050F38C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLOptionsHolder = {0x3050F378, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPainter = {0x3050F6A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPainterEventInfo = {0x3050F6DF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPainterOverlay = {0x3050F7E3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPaintSite = {0x3050F6A7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLParaElement = {0x3050F1F5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLParamElement = {0x3050F83D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPersistData = {0x3050F4C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPersistDataOM = {0x3050F4C0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPhraseElement = {0x3050F20A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPhraseElement2 = {0x3050F824, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPluginsCollection = {0x3050F3FD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPopup = {0x3050F666, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPrivateWindow = {0x3050F6DC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPrivateWindow2 = {0x3050F7E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLPrivateWindow3 = {0x3050F840, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLRect = {0x3050F4A3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLRectCollection = {0x3050F4A4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLRenderStyle = {0x3050F6AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLRuleStyle = {0x3050F3CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLRuleStyle2 = {0x3050F4AC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLRuleStyle3 = {0x3050F657, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLRuleStyle4 = {0x3050F817, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLScreen = {0x3050F35C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLScreen2 = {0x3050F84A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLScriptElement = {0x3050F28B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLScriptElement2 = {0x3050F828, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLSelectElement = {0x3050F244, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLSelectElement2 = {0x3050F5ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLSelectElement3 = {0x3050F687, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLSelectElement4 = {0x3050F838, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLSelectionObject = {0x3050F25A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLSelectionObject2 = {0x3050F7EC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLSpanElement = {0x3050F3F3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLSpanFlow = {0x3050F3E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyle = {0x3050F25E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyle2 = {0x3050F4A2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyle3 = {0x3050F656, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyle4 = {0x3050F816, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyleElement = {0x3050F375, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyleFontFace = {0x3050F3D5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyleSheet = {0x3050F2E3, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyleSheet2 = {0x3050F3D1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyleSheetPage = {0x3050F7EE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyleSheetPagesCollection = {0x3050F7F0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyleSheetRule = {0x3050F357, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyleSheetRulesCollection = {0x3050F2E5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLStyleSheetsCollection = {0x3050F37E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLSubmitData = {0x3050F645, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTable = {0x3050F21E, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTable2 = {0x3050F4AD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTable3 = {0x3050F829, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableCaption = {0x3050F2EB, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableCell = {0x3050F23D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableCell2 = {0x3050F82D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableCol = {0x3050F23A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableCol2 = {0x3050F82A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableRow = {0x3050F23C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableRow2 = {0x3050F4A1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableRow3 = {0x3050F82C, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableRowMetrics = {0x3050F413, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableSection = {0x3050F23B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableSection2 = {0x3050F5C7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTableSection3 = {0x3050F82B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTextAreaElement = {0x3050F2AA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTextContainer = {0x3050F230, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTextElement = {0x3050F218, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTextRangeMetrics = {0x3050F40B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTextRangeMetrics2 = {0x3050F4A6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTitleElement = {0x3050F322, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTxtRange = {0x3050F220, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLTxtRangeCollection = {0x3050F7ED, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLUListElement = {0x3050F1DD, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLUniqueName = {0x3050F4D0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLUnknownElement = {0x3050F209, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLUrnCollection = {0x3050F5E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLUserDataOM = {0x3050F48F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLViewFilter = {0x3050F2F1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLViewFilterSite = {0x3050F2F4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLWindow2 = {0x332C4427, 0x26CB, 0x11D0, [0xB4, 0x83, 0x00, 0xC0, 0x4F, 0xD9, 0x01, 0x19]}; +const IID IID_IHTMLWindow3 = {0x3050F4AE, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHTMLWindow4 = {0x3050F6CF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IHttpNegotiate = {0x79EAC9D2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IHttpNegotiate2 = {0x4F9F9FCB, 0xE0F4, 0x48EB, [0xB7, 0xAB, 0xFA, 0x2E, 0xA9, 0x36, 0x5C, 0xB4]}; +const IID IID_IHttpSecurity = {0x79EAC9D7, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IHWEventHandler = {0xC1FB73D0, 0xEC3A, 0x4BA2, [0xB5, 0x12, 0x8C, 0xDB, 0x91, 0x87, 0xB6, 0xD1]}; +const IID IID_IImageDecodeEventSink = {0xBAA342A0, 0x2DED, 0x11D0, [0x86, 0xF4, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; +const IID IID_IImageDecodeFilter = {0xA3CCEDF3, 0x2DE2, 0x11D0, [0x86, 0xF4, 0x00, 0xA0, 0xC9, 0x13, 0xF7, 0x50]}; +const IID IID_IImageList = {0x46EB5926, 0x582E, 0x4017, [0x9F, 0xDF, 0xE8, 0x99, 0x8D, 0xAA, 0x09, 0x50]}; +const IID IID_IIMEServices = {0x3050F6CA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IImgCtx = {0x3050F3D7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IIndexDefinition = {0x0C733A68, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IInputObject = {0x68284FAA, 0x6A48, 0x11D0, [0x8C, 0x78, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xB4]}; +const IID IID_IInputObjectSite = {0xF1DB8392, 0x7331, 0x11D0, [0x8C, 0x99, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; +const IID IID_IIntDitherer = {0x06670CA0, 0xECEF, 0x11D0, [0xAA, 0xE7, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x04]}; +const IID IID_IIntelliForms = {0x9B9F68E6, 0x1AAA, 0x11D2, [0xBC, 0xA5, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +const IID IID_IInterfaceRelated = {0xD1FB5A79, 0x7706, 0x11D1, [0xAD, 0xBA, 0x00, 0xC0, 0x4F, 0xC2, 0xAD, 0xC0]}; +const IID IID_IInternalMoniker = {0x00000011, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IInternalUnknown = {0x00000021, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IInternet = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetBindInfo = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetConnectionDevice = {0x04DF6137, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; +const IID IID_IInternetConnectionDeviceClient = {0x04DF6139, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; +const IID IID_IInternetConnectionDeviceSharedCo = {0x04DF6138, 0x5610, 0x11D4, [0x9E, 0xC8, 0x00, 0xB0, 0xD0, 0x22, 0xDD, 0x1F]}; +const IID IID_IInternetHostSecurityManager = {0x3AF280B6, 0xCB3F, 0x11D0, [0x89, 0x1E, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +const IID IID_IInternetPriority = {0x79EAC9EB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetProtocolInfo = {0x79EAC9EC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetProtocolRoot = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetProtocolSink = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetProtocolSinkStackable = {0x79EAC9F0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetSecurityManager = {0x79EAC9EE, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetSecurityMgrSite = {0x79EAC9ED, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetSession = {0x79EAC9E7, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetThreadSwitch = {0x79EAC9E8, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IInternetZoneManager = {0x79EAC9EF, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IIpxAdapterInfo = {0x98133270, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IItemNameLimits = {0x1DF0D7F1, 0xB267, 0x4D28, [0x8B, 0x10, 0x12, 0xE2, 0x32, 0x02, 0xA5, 0xC4]}; +const IID IID_IJolietDiscMaster = {0xE3BC42CE, 0x4E5C, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID IID_IKeyFrameControl = {0xC3341386, 0xAF91, 0x4EF9, [0x83, 0xB6, 0xBE, 0x37, 0x62, 0xE4, 0x2E, 0xCB]}; +const IID IID_IKsControl = {0x28F54685, 0x06FD, 0x11D2, [0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96]}; +const IID IID_IKsPropertySet = {0x31EFAC30, 0x515C, 0x11D0, [0xA9, 0xAA, 0x00, 0xAA, 0x00, 0x61, 0xBE, 0x93]}; +const IID IID_ILayoutRect = {0x3050F665, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ILayoutStorage = {0x0E6D4D90, 0x6738, 0x11CF, [0x96, 0x08, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; +const IID IID_ILineInfo = {0x3050F7E2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ILocalMachine = {0x60664CAF, 0xAF0D, 0x1005, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +const IID IID_ILockBytes = {0x0000000A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ILogger = {0xD9598418, 0x304E, 0x4F94, [0xB6, 0xA1, 0xE6, 0x42, 0xFE, 0x95, 0xED, 0x57]}; +const IID IID_ILogManager = {0x4759DC11, 0x8DA0, 0x4261, [0xBB, 0xFB, 0xEC, 0x32, 0x19, 0x11, 0xD1, 0xC9]}; +const IID IID_ILogonEnumUsers = {0x60664CAF, 0xAF0D, 0x1004, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +const IID IID_ILogonStatusHost = {0x60664CAF, 0xAF0D, 0x1007, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +const IID IID_ILogonUser = {0x60664CAF, 0xAF0D, 0x1003, [0xA3, 0x00, 0x5C, 0x7D, 0x25, 0xFF, 0x22, 0xA0]}; +const IID IID_IMachineDebugManager = {0x51973C2C, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IMachineDebugManagerCookie = {0x51973C2D, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IMachineDebugManagerEvents = {0x51973C2E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IMailAutoDiscovery = {0x80402DEE, 0xB114, 0x4D32, [0xB4, 0x4E, 0x82, 0xFD, 0x82, 0x34, 0xC9, 0x2A]}; +const IID IID_IMailProtocolADEntry = {0x40EF8C68, 0xD554, 0x47ED, [0xAA, 0x37, 0xE5, 0xFB, 0x6B, 0xC9, 0x10, 0x75]}; +const IID IID_IMalloc = {0x00000002, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IMallocSpy = {0x0000001D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IMapMIMEToCLSID = {0xD9E89500, 0x30FA, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +const IID IID_IMarkupContainer = {0x3050F5F9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IMarkupContainer2 = {0x3050F648, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IMarkupPointer = {0x3050F49F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IMarkupPointer2 = {0x3050F675, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IMarkupServices = {0x3050F4A0, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IMarkupServices2 = {0x3050F682, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IMarkupTextFrags = {0x3050F5FA, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IMarshal = {0x00000003, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IMarshal2 = {0x000001CF, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IMcastAddressAllocation = {0xDF0DAEF1, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +const IID IID_IMcastLeaseInfo = {0xDF0DAEFD, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +const IID IID_IMcastScope = {0xDF0DAEF4, 0xA289, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +const IID IID_IMDDataset = {0xA07CCCD1, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +const IID IID_IMDFind = {0xA07CCCD2, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +const IID IID_IMDRangeRowset = {0x0C733AA0, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IMessageFilter = {0x00000016, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IMigrationWizardAuto = {0xCE20DAB9, 0xB353, 0x469B, [0x8B, 0x4D, 0x6D, 0xBB, 0x3A, 0x7B, 0xA0, 0x16]}; +const IID IID_IMimeInfo = {0xF77459A0, 0xBF9A, 0x11CF, [0xBA, 0x4E, 0x00, 0xC0, 0x4F, 0xD7, 0x08, 0x16]}; +const IID IID_IMLangCodePages = {0x359F3443, 0xBD4A, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +const IID IID_IMLangConvertCharset = {0xD66D6F98, 0xCDAA, 0x11D0, [0xB8, 0x22, 0x00, 0xC0, 0x4F, 0xC9, 0xB3, 0x1F]}; +const IID IID_IMLangFontLink = {0x359F3441, 0xBD4A, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +const IID IID_IMLangFontLink2 = {0xDCCFC162, 0x2B38, 0x11D2, [0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A]}; +const IID IID_IMLangLineBreakConsole = {0xF5BE2EE1, 0xBFD7, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +const IID IID_IMLangString = {0xC04D65CE, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +const IID IID_IMLangStringAStr = {0xC04D65D2, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +const IID IID_IMLangStringBufA = {0xD24ACD23, 0xBA72, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +const IID IID_IMLangStringBufW = {0xD24ACD21, 0xBA72, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +const IID IID_IMLangStringWStr = {0xC04D65D0, 0xB70D, 0x11D0, [0xB1, 0x88, 0x00, 0xAA, 0x00, 0x38, 0xC9, 0x69]}; +const IID IID_IMofCompiler = {0x6DAF974E, 0x2E37, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IMoniker = {0x0000000F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IMonikerProp = {0xA5CA5F7F, 0x1847, 0x4D87, [0x9C, 0x5B, 0x91, 0x85, 0x09, 0xF7, 0x51, 0x1D]}; +const IID IID_IMountedVolume = {0x12518492, 0x00B2, 0x11D2, [0x9F, 0xA5, 0x9E, 0x34, 0x20, 0x52, 0x41, 0x53]}; +const IID IID_IMulticastControl = {0x410FA507, 0x4DC6, 0x415A, [0x90, 0x14, 0x63, 0x38, 0x75, 0xD5, 0x40, 0x6E]}; +const IID IID_IMultiLanguage = {0x275C23E1, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; +const IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11D2, [0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A]}; +const IID IID_IMultiLanguage3 = {0x4E5868AB, 0xB157, 0x4623, [0x9A, 0xCC, 0x6A, 0x1D, 0x9C, 0xAE, 0xBE, 0x04]}; +const IID IID_IMultiplePropertyAccess = {0xEC81FEDE, 0xD432, 0x11CE, [0x92, 0x44, 0x00, 0x20, 0xAF, 0x6E, 0x72, 0xDB]}; +const IID IID_IMultipleResults = {0x0C733A90, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IMultiQI = {0x00000020, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_INamedPropertyBag = {0xFB700430, 0x952C, 0x11D1, [0x94, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; +const IID IID_INATEventManager = {0x624BD588, 0x9060, 0x4109, [0xB0, 0xB0, 0x1A, 0xDB, 0xBC, 0xAC, 0x32, 0xDF]}; +const IID IID_INATExternalIPAddressCallback = {0x9C416740, 0xA34E, 0x446F, [0xBA, 0x06, 0xAB, 0xD0, 0x4C, 0x31, 0x49, 0xAE]}; +const IID IID_INATNumberOfEntriesCallback = {0xC83A0A74, 0x91EE, 0x41B6, [0xB6, 0x7A, 0x67, 0xE0, 0xF0, 0x0B, 0xBD, 0x78]}; +const IID IID_INetCfg = {0xC0E8AE93, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgBindingInterface = {0xC0E8AE94, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgBindingPath = {0xC0E8AE96, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgClass = {0xC0E8AE97, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgClassSetup = {0xC0E8AE9D, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgComponent = {0xC0E8AE99, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgComponentBindings = {0xC0E8AE9E, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgComponentControl = {0x932238DF, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +const IID IID_INetCfgComponentNotifyBinding = {0x932238E1, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +const IID IID_INetCfgComponentNotifyGlobal = {0x932238E2, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +const IID IID_INetCfgComponentPrivate = {0x98133273, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgComponentPropertyUi = {0x932238E0, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +const IID IID_INetCfgComponentSetup = {0x932238E3, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +const IID IID_INetCfgComponentSysPrep = {0xC0E8AE9A, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgComponentUpperEdge = {0x932238E4, 0xBEA1, 0x11D0, [0x92, 0x98, 0x00, 0xC0, 0x4F, 0xC9, 0x9D, 0xCF]}; +const IID IID_INetCfgInternalSetup = {0x98133276, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgLock = {0xC0E8AE9F, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgPnpReconfigCallback = {0x8D84BD35, 0xE227, 0x11D2, [0xB7, 0x00, 0x00, 0xA0, 0xC9, 0x8A, 0x6A, 0x85]}; +const IID IID_INetCfgSpecialCase = {0xC0E8AE95, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCfgSysPrep = {0xC0E8AE98, 0x306E, 0x11D1, [0xAA, 0xCF, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnection = {0xC08956A1, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnection2 = {0xFAEDCF6A, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionBrandingInfo = {0xFAEDCF5B, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionCMUtil = {0xFAEDCF60, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionCommonUi = {0xC08956A5, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionConnectUi = {0xC08956A3, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionHNetUtil = {0xFAEDCF64, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionManager = {0xC08956A2, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionManager2 = {0xFAEDCF69, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionManagerDebug = {0xFAEDCF5D, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionManagerEvents = {0xC08956BA, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionNotifySink = {0xFAEDCF5C, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionPropertyUi = {0xC08956A4, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionPropertyUi2 = {0xC08956B9, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionProps = {0xF4277C95, 0xCE5B, 0x463D, [0x81, 0x67, 0x56, 0x62, 0xD9, 0xBC, 0xAA, 0x72]}; +const IID IID_INetConnectionRefresh = {0xFAEDCF5F, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionSysTray = {0xFAEDCF65, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionUiLock = {0xFAEDCF50, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionUiUtilities = {0xFAEDCF5E, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionWizardUi = {0xFAEDCF51, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetConnectionWizardUiContext = {0xFAEDCF52, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetCrawler = {0x49C929EE, 0xA1B7, 0x4C58, [0xB5, 0x39, 0xE6, 0x3B, 0xE3, 0x92, 0xB6, 0xF3]}; +const IID IID_INetDefaultConnection = {0xFAEDCF66, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetInboundConnection = {0xFAEDCF53, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetInstallQueue = {0x98133274, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetLanConnection = {0xFAEDCF54, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetLanConnectionUiInfo = {0xC08956A6, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetLanConnectionWizardUi = {0xFAEDCF56, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetMachinePolicies = {0xFAEDCF68, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetRasConnection = {0xFAEDCF57, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetRasConnectionIpUiInfo = {0xFAEDCF58, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetSharedAccessConnection = {0xFAEDCF55, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetSharingConfiguration = {0xC08956B6, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetSharingEveryConnectionCollect = {0x33C4643C, 0x7811, 0x46FA, [0xA8, 0x9A, 0x76, 0x85, 0x97, 0xBD, 0x72, 0x23]}; +const IID IID_INetSharingManager = {0xC08956B7, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetSharingPortMapping = {0xC08956B1, 0x1CD3, 0x11D1, [0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_INetSharingPortMappingCollection = {0x02E4A2DE, 0xDA20, 0x4E34, [0x89, 0xC8, 0xAC, 0x22, 0x27, 0x5A, 0x01, 0x0B]}; +const IID IID_INetSharingPortMappingProps = {0x24B7E9B5, 0xE38F, 0x4685, [0x85, 0x1B, 0x00, 0x89, 0x2C, 0xF5, 0xF9, 0x40]}; +const IID IID_INetSharingPrivateConnectionColle = {0x38AE69E0, 0x4409, 0x402A, [0xA2, 0xCB, 0xE9, 0x65, 0xC7, 0x27, 0xF8, 0x40]}; +const IID IID_INetSharingPublicConnectionCollec = {0x7D7A6355, 0xF372, 0x4971, [0xA1, 0x49, 0xBF, 0xC9, 0x27, 0xBE, 0x76, 0x2A]}; +const IID IID_INewShortcutHookA = {0x000214E1, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_INewShortcutHookW = {0x000214F7, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_INewWDEvents = {0x0751C551, 0x7568, 0x41C9, [0x8E, 0x5B, 0xE2, 0x2E, 0x38, 0x91, 0x92, 0x36]}; +const IID IID_INotification = {0xC733E4A3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_INotificationHelper = {0xC733E4AB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_INotificationManager = {0x95531501, 0x8782, 0x4845, [0x90, 0x1D, 0x31, 0x2F, 0x36, 0xBA, 0x6C, 0x6E]}; +const IID IID_INotificationMgr = {0xC733E4A4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_INotificationPing = {0xC733E4AC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_INotificationProcessMgr0 = {0xC733E4AE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_INotificationReport = {0xC733E4A7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_INotificationRunning = {0xC733E4AD, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_INotificationSink = {0xC733E4A5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_INotifyDBEvents = {0xDB526CC0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; +const IID IID_INotifyReplica = {0x99180163, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_INotifyUI = {0xE5E8D401, 0x1A37, 0x4FBF, [0x88, 0x0C, 0x82, 0x6C, 0xC8, 0x95, 0x16, 0xFD]}; +const IID IID_IObjectAccessControl = {0x0C733AA3, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IObjectIdentity = {0xCA04B7E6, 0x0D21, 0x11D1, [0x8C, 0xC5, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; +const IID IID_IObjectManager = {0xD51351DF, 0x6394, 0x4236, [0x97, 0x83, 0x65, 0xED, 0x05, 0x63, 0x10, 0x68]}; +const IID IID_IObjectSafety = {0xCB5BDC81, 0x93C1, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID IID_IObjectWithSite = {0xFC4801A3, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID IID_IObjMgr = {0x00BB2761, 0x6A77, 0x11D0, [0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62]}; +const IID IID_IOInet = {0x79EAC9E0, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOInetBindClient = {0x79EAC9E2, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOInetBindInfo = {0x79EAC9E1, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOInetCache = {0x79EAC9EA, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOInetPriority = {0x79EAC9EB, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOInetProtocol = {0x79EAC9E4, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOInetProtocolInfo = {0x79EAC9EC, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOInetProtocolRoot = {0x79EAC9E3, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOInetProtocolSink = {0x79EAC9E5, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOInetSession = {0x79EAC967, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOInetThreadSwitch = {0x79EAC968, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IOldSyncMgrRegister = {0x894D8C55, 0xBDDF, 0x11D1, [0xB8, 0x5D, 0x00, 0xC0, 0x4F, 0xB9, 0x39, 0x81]}; +const IID IID_IOldSyncMgrSynchronize = {0x6295DF28, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +const IID IID_IOldSyncMgrSynchronizeCallback = {0x6295DF29, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +const IID IID_IOleAdviseHolder = {0x00000111, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleCache = {0x0000011E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleCache2 = {0x00000128, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleCacheControl = {0x00000129, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleClientSite = {0x00000118, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleCommandTarget = {0xB722BCCB, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +const IID IID_IOleContainer = {0x0000011B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleControl = {0xB196B288, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IOleControlSite = {0xB196B289, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IOleDocument = {0xB722BCC5, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +const IID IID_IOleDocumentSite = {0xB722BCC7, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +const IID IID_IOleDocumentView = {0xB722BCC6, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +const IID IID_IOleInPlaceActiveObject = {0x00000117, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleInPlaceFrame = {0x00000116, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleInPlaceObject = {0x00000113, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleInPlaceObjectWindowless = {0x1C2056CC, 0x5EF4, 0x101B, [0x8B, 0xC8, 0x00, 0xAA, 0x00, 0x3E, 0x3B, 0x29]}; +const IID IID_IOleInPlaceSite = {0x00000119, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleInPlaceSiteEx = {0x9C2CAD80, 0x3424, 0x11CF, [0xB6, 0x70, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; +const IID IID_IOleInPlaceSiteWindowless = {0x922EADA0, 0x3424, 0x11CF, [0xB6, 0x70, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; +const IID IID_IOleInPlaceUIWindow = {0x00000115, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleItemContainer = {0x0000011C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleLink = {0x0000011D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleManager = {0x0000011F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleObject = {0x00000112, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleParentUndoUnit = {0xA1FAF330, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; +const IID IID_IOlePresObj = {0x00000120, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOleUndoManager = {0xD001F200, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; +const IID IID_IOleUndoUnit = {0x894AD3B0, 0xEF97, 0x11CE, [0x9B, 0xC9, 0x00, 0xAA, 0x00, 0x60, 0x8E, 0x01]}; +const IID IID_IOleWindow = {0x00000114, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOmHistory = {0xFECEAAA2, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; +const IID IID_IOmNavigator = {0xFECEAAA5, 0x8405, 0x11CF, [0x8B, 0xA1, 0x00, 0xAA, 0x00, 0x47, 0x6D, 0xA6]}; +const IID IID_IOpaqueDataInfo = {0x000001A9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IOpenRowset = {0x0C733A69, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IOplockStorage = {0x8D19C834, 0x8879, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; +const IID IID_IOpsProfileSimple = {0x7DD1362C, 0x28B6, 0x11D2, [0xBC, 0xA7, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +const IID IID_IOptionArray = {0x22B6D492, 0x0F88, 0x11D1, [0xBA, 0x19, 0x00, 0xC0, 0x4F, 0xD9, 0x12, 0xD0]}; +const IID IID_IOverlappedCompletion = {0x521A28F0, 0xE40B, 0x11CE, [0xB2, 0xC9, 0x00, 0xAA, 0x00, 0x68, 0x09, 0x37]}; +const IID IID_IOverlappedStream = {0x49384070, 0xE40A, 0x11CE, [0xB2, 0xC9, 0x00, 0xAA, 0x00, 0x68, 0x09, 0x37]}; +const IID IID_IParentRowset = {0x0C733AAA, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IParseDisplayName = {0x0000011A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IParser = {0x186442B0, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; +const IID IID_IParserSession = {0x186442B1, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; +const IID IID_IParserTreeProperties = {0x186442B2, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; +const IID IID_IParserVerify = {0x186442B3, 0x472E, 0x11D1, [0x89, 0x52, 0x00, 0xC0, 0x4F, 0xD6, 0x11, 0xD7]}; +const IID IID_IPassportClientServices = {0xB30F7305, 0x5967, 0x45D1, [0xB7, 0xBC, 0xD6, 0xEB, 0x71, 0x63, 0xD7, 0x70]}; +const IID IID_IPeerFactory = {0x6663F9D3, 0xB482, 0x11D1, [0x89, 0xC6, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +const IID IID_IPendingProxyConnection = {0xB68E5043, 0x3E3D, 0x4CC2, [0xB9, 0xC1, 0x5F, 0x8F, 0x88, 0xFE, 0xE8, 0x1C]}; +const IID IID_IPerPropertyBrowsing = {0x376BD3AA, 0x3845, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; +const IID IID_IPerPropertyBrowsing2 = {0x51973C54, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IPersist = {0x0000010C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IPersistentDataChannel = {0xA180E934, 0xD92A, 0x415D, [0x91, 0x44, 0x75, 0x9F, 0x80, 0x54, 0xE8, 0xF6]}; +const IID IID_IPersistFile = {0x0000010B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IPersistFolder = {0x000214EA, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IPersistFolder2 = {0x1AC3D9F0, 0x175C, 0x11D1, [0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; +const IID IID_IPersistFolder3 = {0xCEF04FDF, 0xFE72, 0x11D2, [0x87, 0xA5, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xCF]}; +const IID IID_IPersistHistory = {0x91A565C1, 0xE38F, 0x11D0, [0x94, 0xBF, 0x00, 0xA0, 0xC9, 0x05, 0x5C, 0xBF]}; +const IID IID_IPersistIDList = {0x1079ACFC, 0x29BD, 0x11D3, [0x8E, 0x0D, 0x00, 0xC0, 0x4F, 0x68, 0x37, 0xD5]}; +const IID IID_IPersistMemory = {0xBD1AE5E0, 0xA6AE, 0x11CE, [0xBD, 0x37, 0x50, 0x42, 0x00, 0xC1, 0x00, 0x00]}; +const IID IID_IPersistMoniker = {0x79EAC9C9, 0xBAF9, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IPersistNetConnection = {0xFAEDCF59, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IPersistPropertyBag = {0x37D84F60, 0x42CB, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +const IID IID_IPersistPropertyBag2 = {0x22F55881, 0x280B, 0x11D0, [0xA8, 0xA9, 0x00, 0xA0, 0xC9, 0x0C, 0x20, 0x04]}; +const IID IID_IPersistQuery = {0x1A3114B8, 0xA62E, 0x11D0, [0xA6, 0xC5, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; +const IID IID_IPersistStorage = {0x0000010A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IPersistStream = {0x00000109, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IPersistStreamInit = {0x7FD52380, 0x4E07, 0x101B, [0xAE, 0x2D, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; +const IID IID_IPhraseSink = {0xCC906FF0, 0xC058, 0x101A, [0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; +const IID IID_IPicture = {0x7BF80980, 0xBF32, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID IID_IPictureDisp = {0x7BF80981, 0xBF32, 0x101A, [0x8B, 0xBB, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID IID_IPipeByte = {0xDB2F3ACA, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +const IID IID_IPipeDouble = {0xDB2F3ACE, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +const IID IID_IPipeLong = {0xDB2F3ACC, 0x2F86, 0x11D1, [0x8E, 0x04, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0x9A]}; +const IID IID_IPointerInactive = {0x55980BA0, 0x35AA, 0x11CF, [0xB6, 0x71, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0xD8]}; +const IID IID_IPrimaryControlChannel = {0x1A2E8B62, 0x9012, 0x4BE6, [0x84, 0xAE, 0x32, 0xBD, 0x66, 0xBA, 0x65, 0x7A]}; +const IID IID_IPrint = {0xB722BCC9, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +const IID IID_IPrintDialogCallback = {0x5852A2C3, 0x6530, 0x11D1, [0xB6, 0xA3, 0x00, 0x00, 0xF8, 0x75, 0x7B, 0xF9]}; +const IID IID_IPrintDialogServices = {0x509AAEDA, 0x5639, 0x11D1, [0xB6, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x7B, 0xF9]}; +const IID IID_IPrivacyServices = {0x3050F84B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IPrivateDispatch = {0x86AB4BBE, 0x65F6, 0x11D1, [0x8C, 0x13, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IPrivateUnknown = {0x89126BAB, 0x6EAD, 0x11D1, [0x8C, 0x18, 0x00, 0xC0, 0x4F, 0xD8, 0xD5, 0x03]}; +const IID IID_IPrivSyncMgrSynchronizeInvoke = {0x6295DF2E, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +const IID IID_IProcessDebugManager = {0x51973C2F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IProcessDebugManager32 = {0x51973C2F, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IProcessDebugManager64 = {0x56B9FC1C, 0x63A9, 0x4CC1, [0xAC, 0x21, 0x08, 0x7D, 0x69, 0xA1, 0x7F, 0xAB]}; +const IID IID_IProcessInitControl = {0x72380D55, 0x8D2B, 0x43A3, [0x85, 0x13, 0x2B, 0x6E, 0xF3, 0x14, 0x34, 0xE9]}; +const IID IID_IProfferService = {0xCB728B20, 0xF786, 0x11CE, [0x92, 0xAD, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xD0]}; +const IID IID_IProgressDialog = {0xEBBC7C04, 0x315E, 0x11D2, [0xB6, 0x2F, 0x00, 0x60, 0x97, 0xDF, 0x5B, 0xD4]}; +const IID IID_IProgressNotify = {0xA9D758A0, 0x4617, 0x11CF, [0x95, 0xFC, 0x00, 0xAA, 0x00, 0x68, 0x0D, 0xB4]}; +const IID IID_IProgSink = {0x3050F371, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IPropertyBag = {0x55272A00, 0x42CB, 0x11CE, [0x81, 0x35, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +const IID IID_IPropertyBag2 = {0x22F55882, 0x280B, 0x11D0, [0xA8, 0xA9, 0x00, 0xA0, 0xC9, 0x0C, 0x20, 0x04]}; +const IID IID_IPropertyBagEx = {0x20011801, 0x5DE6, 0x11D1, [0x8E, 0x38, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +const IID IID_IPropertyFrame = {0xB196B28A, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IPropertyMap = {0xC733E4A2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_IPropertyMapper = {0xB324B226, 0x41A0, 0x11D0, [0x8C, 0x91, 0x00, 0x20, 0xAF, 0x1D, 0x74, 0x0E]}; +const IID IID_IPropertyNotifySink = {0x9BFBBC02, 0xEFF1, 0x101A, [0x84, 0xED, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IPropertyPage = {0xB196B28D, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IPropertyPage2 = {0x01E44665, 0x24AC, 0x101B, [0x84, 0xED, 0x08, 0x00, 0x2B, 0x2E, 0xC7, 0x13]}; +const IID IID_IPropertyPageSite = {0xB196B28C, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IPropertySetContainer = {0xB4FFAE60, 0xA7CA, 0x11CD, [0xB5, 0x8B, 0x00, 0x00, 0x6B, 0x82, 0x91, 0x56]}; +const IID IID_IPropertySetStorage = {0x0000013A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IPropertyStorage = {0x00000138, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IPropertyUI = {0x757A7D9F, 0x919A, 0x4118, [0x99, 0xD7, 0xDB, 0xB2, 0x08, 0xC8, 0xCC, 0x66]}; +const IID IID_IPropSheetPage = {0x000214F6, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IProvideClassInfo = {0xB196B283, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_IProvideClassInfo2 = {0xA6BC3AC0, 0xDBAA, 0x11CE, [0x9D, 0xE3, 0x00, 0xAA, 0x00, 0x4B, 0xB8, 0x51]}; +const IID IID_IProvideExpressionContexts = {0x51973C41, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IProvideMoniker = {0x0C733A4D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IProvideMultipleClassInfo = {0xA7ABA9C1, 0x8983, 0x11CF, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID IID_IProxy = {0x00000027, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IProxyManager = {0x00000008, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IPSFactory = {0x00000009, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IPSFactoryBuffer = {0xD5F569D0, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; +const IID IID_IPublishedApp = {0x1BC752E0, 0x9046, 0x11D1, [0xB8, 0xB3, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; +const IID IID_IPublishingWizard = {0xAA9198BB, 0xCCEC, 0x472D, [0xBE, 0xED, 0x19, 0xA4, 0xF6, 0x73, 0x3F, 0x7A]}; +const IID IID_IQualityControl = {0x6BC096AB, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +const IID IID_IQuery = {0x0C733A51, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IQueryAssociations = {0xC46CA590, 0x3C3F, 0x11D2, [0xBE, 0xE6, 0x00, 0x00, 0xF8, 0x05, 0xCA, 0x57]}; +const IID IID_IQueryCancelAutoPlay = {0xDDEFE873, 0x6997, 0x4E68, [0xBE, 0x26, 0x39, 0xB6, 0x33, 0xAD, 0xBE, 0x12]}; +const IID IID_IQueryContinue = {0x7307055C, 0xB24A, 0x486B, [0x9F, 0x25, 0x16, 0x3E, 0x59, 0x7A, 0x28, 0xA9]}; +const IID IID_IQueryForm = {0x8CFCEE30, 0x39BD, 0x11D0, [0xB8, 0xD1, 0x00, 0xA0, 0x24, 0xAB, 0x2D, 0xBB]}; +const IID IID_IQueryFrame = {0x7E8C7C20, 0x7C9D, 0x11D0, [0x91, 0x3F, 0x00, 0xAA, 0x00, 0xC1, 0x6E, 0x65]}; +const IID IID_IQueryHandler = {0xA60CC73F, 0xE0FC, 0x11D0, [0x97, 0x50, 0x00, 0xA0, 0xC9, 0x06, 0xAF, 0x45]}; +const IID IID_IQueryInfo = {0x00021500, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IQuickActivate = {0xCF51ED10, 0x62FE, 0x11CF, [0xBF, 0x86, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0x36]}; +const IID IID_IRadioButton = {0x3050F69B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IRatingNotification = {0x639447BD, 0xB2D3, 0x44B9, [0x9F, 0xB0, 0x51, 0x0F, 0x23, 0xCB, 0x45, 0xE4]}; +const IID IID_IReadData = {0x0C733A6A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IReadEvents = {0xF64AEFDE, 0x3376, 0x11D1, [0xBE, 0x5B, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0xBB]}; +const IID IID_IRecalcEngine = {0x3050F496, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IRecalcHost = {0x3050F497, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IRecalcHostDebug = {0x3050F5F7, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IRecalcProperty = {0x3050F5D6, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IReconcilableObject = {0x99180162, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IReconcileInitiator = {0x99180161, 0xDA16, 0x101A, [0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IRecordInfo = {0x0000002F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IRedbookDiscMaster = {0xE3BC42CD, 0x4E5C, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID IID_IReferenceClock = {0x56A86897, 0x0AD4, 0x11CE, [0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70]}; +const IID IID_IRegisterProvider = {0x0C733AB9, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRegisterVirusScanEngine = {0x0825E060, 0xB961, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; +const IID IID_IReleaseMarshalBuffers = {0xEB0CB9E8, 0x7996, 0x11D2, [0x87, 0x2E, 0x00, 0x00, 0xF8, 0x08, 0x08, 0x59]}; +const IID IID_IRemoteCallBack = {0x8947C648, 0x3833, 0x11D1, [0x86, 0x82, 0x00, 0xC0, 0x4F, 0xBF, 0xE1, 0x71]}; +const IID IID_IRemoteComputer = {0x000214FE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IRemoteDebugApplication = {0x51973C30, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IRemoteDebugApplicationEvents = {0x51973C33, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IRemoteDebugApplicationEx = {0x51973C01, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IRemoteDebugApplicationThread = {0x51973C37, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_IRemoteDebugApplicationThreadEx = {0xB9B32B0C, 0x9147, 0x11D1, [0x94, 0xEA, 0x00, 0xC0, 0x4F, 0xA3, 0x02, 0xA1]}; +const IID IID_IRemoteDelaydC = {0x394540A0, 0x6FCF, 0x11D0, [0xAC, 0xE0, 0x00, 0x00, 0xF8, 0x01, 0x14, 0xD3]}; +const IID IID_IRemoteESP = {0xE99A04AB, 0xAB95, 0x11D0, [0xBE, 0x96, 0x00, 0xA0, 0xC9, 0x49, 0x89, 0xDE]}; +const IID IID_IRemoteFinder = {0x944AD532, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +const IID IID_IRemoteStats = {0x944AD531, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +const IID IID_IRequest = {0x6BC096A7, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +const IID IID_IRequestHandler = {0x6BC096AA, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +const IID IID_IRequestSource = {0x6BC096A9, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +const IID IID_IRequestState = {0x6BC096BA, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +const IID IID_IResolveShellLink = {0x5CD52983, 0x9449, 0x11D2, [0x96, 0x3A, 0x00, 0xC0, 0x4F, 0x79, 0xAD, 0xF0]}; +const IID IID_IRichEditOle = {0x00020D00, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IRichEditOleCallback = {0x00020D03, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IRootStorage = {0x00000012, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IROTData = {0xF29F6BC0, 0x5021, 0x11CE, [0xAA, 0x15, 0x00, 0x00, 0x69, 0x01, 0x29, 0x3F]}; +const IID IID_IRow = {0x0C733AB4, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowChange = {0x0C733AB5, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowInfo = {0x0C733AC1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowPosition = {0x0C733A94, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowPositionChange = {0x0997A571, 0x126E, 0x11D0, [0x9F, 0x8A, 0x00, 0xA0, 0xC9, 0xA0, 0x63, 0x1E]}; +const IID IID_IRowSchemaChange = {0x0C733AAE, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowset = {0x0C733A7C, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetAsynch = {0x0C733A0F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetBookmark = {0x0C733AC2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetChange = {0x0C733A05, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetChapterMember = {0x0C733AA8, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetCopyRows = {0x0C733A6B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetCurrentIndex = {0x0C733ABD, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetExactScroll = {0x0C733A7F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetFind = {0x0C733A9D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetIdentity = {0x0C733A09, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetIndex = {0x0C733A82, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetInfo = {0x0C733A55, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetKeys = {0x0C733A12, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetLocate = {0x0C733A7D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetNewRowAfter = {0x0C733A71, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetNextRowset = {0x0C733A72, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetNotify = {0x0C733A83, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetQueryStatus = {0xA7AC77ED, 0xF8D7, 0x11CE, [0xA7, 0x98, 0x00, 0x20, 0xF8, 0x00, 0x80, 0x24]}; +const IID IID_IRowsetRefresh = {0x0C733AA9, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetResynch = {0x0C733A84, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetScroll = {0x0C733A7E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetUpdate = {0x0C733A6D, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetView = {0x0C733A99, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetWatchAll = {0x0C733A73, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetWatchNotify = {0x0C733A44, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetWatchRegion = {0x0C733A45, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRowsetWithParameters = {0x0C733A6E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IRpcChannel = {0x00000004, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IRpcChannelBuffer = {0xD5F56B60, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; +const IID IID_IRpcChannelBuffer2 = {0x594F31D0, 0x7F19, 0x11D0, [0xB1, 0x94, 0x00, 0xA0, 0xC9, 0x0D, 0xC8, 0xBF]}; +const IID IID_IRpcChannelBuffer3 = {0x25B15600, 0x0115, 0x11D0, [0xBF, 0x0D, 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xD2]}; +const IID IID_IRpcHelper = {0x00000149, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IRpcOptions = {0x00000144, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IRpcProxy = {0x00000007, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IRpcProxyBuffer = {0xD5F56A34, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; +const IID IID_IRpcStub = {0x00000005, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IRpcStubBuffer = {0xD5F56AFC, 0x593B, 0x101A, [0xB5, 0x69, 0x08, 0x00, 0x2B, 0x2D, 0xBF, 0x7A]}; +const IID IID_IRpcSyntaxNegotiate = {0x58A08519, 0x24C8, 0x4935, [0xB4, 0x82, 0x3F, 0xD8, 0x23, 0x33, 0x3A, 0x4F]}; +const IID IID_IRTC = {0x4811EA40, 0xB582, 0x11CE, [0xB5, 0xAF, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +const IID IID_IRTCBuddy = {0xFCB136C8, 0x7B90, 0x4E0C, [0xBE, 0xFE, 0x56, 0xED, 0xF0, 0xBA, 0x6F, 0x1C]}; +const IID IID_IRTCBuddyEvent = {0xF36D755D, 0x17E6, 0x404E, [0x95, 0x4F, 0x0F, 0xC0, 0x75, 0x74, 0xC7, 0x8D]}; +const IID IID_IRTCClient = {0x07829E45, 0x9A34, 0x408E, [0xA0, 0x11, 0xBD, 0xDF, 0x13, 0x48, 0x7C, 0xD1]}; +const IID IID_IRTCClientEvent = {0x2B493B7A, 0x3CBA, 0x4170, [0x9C, 0x8B, 0x76, 0xA9, 0xDA, 0xCD, 0xD6, 0x44]}; +const IID IID_IRTCClientPresence = {0x11C3CBCC, 0x0744, 0x42D1, [0x96, 0x8A, 0x51, 0xAA, 0x1B, 0xB2, 0x74, 0xC6]}; +const IID IID_IRTCClientProvisioning = {0xB9F5CF06, 0x65B9, 0x4A80, [0xA0, 0xE6, 0x73, 0xCA, 0xE3, 0xEF, 0x38, 0x22]}; +const IID IID_IRTCCollection = {0xEC7C8096, 0xB918, 0x4044, [0x94, 0xF1, 0xE4, 0xFB, 0xA0, 0x36, 0x1D, 0x5C]}; +const IID IID_IRTCEnumBuddies = {0xF7296917, 0x5569, 0x4B3B, [0xB3, 0xAF, 0x98, 0xD1, 0x14, 0x4B, 0x2B, 0x87]}; +const IID IID_IRTCEnumParticipants = {0xFCD56F29, 0x4A4F, 0x41B2, [0xBA, 0x5C, 0xF5, 0xBC, 0xCC, 0x06, 0x0B, 0xF6]}; +const IID IID_IRTCEnumProfiles = {0x29B7C41C, 0xED82, 0x4BCA, [0x84, 0xAD, 0x39, 0xD5, 0x10, 0x1B, 0x58, 0xE3]}; +const IID IID_IRTCEnumWatchers = {0xA87D55D7, 0xDB74, 0x4ED1, [0x9C, 0xA4, 0x77, 0xA0, 0xE4, 0x1B, 0x41, 0x3E]}; +const IID IID_IRTCEventNotification = {0x13FA24C7, 0x5748, 0x4B21, [0x91, 0xF5, 0x73, 0x97, 0x60, 0x9C, 0xE7, 0x47]}; +const IID IID_IRTCIntensityEvent = {0x4C23BF51, 0x390C, 0x4992, [0xA4, 0x1D, 0x41, 0xEE, 0xC0, 0x5B, 0x2A, 0x4B]}; +const IID IID_IRTCMediaEvent = {0x099944FB, 0xBCDA, 0x453E, [0x8C, 0x41, 0xE1, 0x3D, 0xA2, 0xAD, 0xF7, 0xF3]}; +const IID IID_IRTCMessagingEvent = {0xD3609541, 0x1B29, 0x4DE5, [0xA4, 0xAD, 0x5A, 0xEB, 0xAF, 0x31, 0x95, 0x12]}; +const IID IID_IRTCParticipant = {0xAE86ADD5, 0x26B1, 0x4414, [0xAF, 0x1D, 0xB9, 0x4C, 0xD9, 0x38, 0xD7, 0x39]}; +const IID IID_IRTCParticipantStateChangeEvent = {0x09BCB597, 0xF0FA, 0x48F9, [0xB4, 0x20, 0x46, 0x8C, 0xEA, 0x7F, 0xDE, 0x04]}; +const IID IID_IRTCPresenceContact = {0x8B22F92C, 0xCD90, 0x42DB, [0xA7, 0x33, 0x21, 0x22, 0x05, 0xC3, 0xE3, 0xDF]}; +const IID IID_IRTCProfile = {0xD07ECA9E, 0x4062, 0x4DD4, [0x9E, 0x7D, 0x72, 0x2A, 0x49, 0xBA, 0x73, 0x03]}; +const IID IID_IRTCProfileEvent = {0xD6D5AB3B, 0x770E, 0x43E8, [0x80, 0x0A, 0x79, 0xB0, 0x62, 0x39, 0x5F, 0xCA]}; +const IID IID_IRTCRegistrationStateChangeEvent = {0x62D0991B, 0x50AB, 0x4F02, [0xB9, 0x48, 0xCA, 0x94, 0xF2, 0x6F, 0x8F, 0x95]}; +const IID IID_IRTCSession = {0x387C8086, 0x99BE, 0x42FB, [0x99, 0x73, 0x7C, 0x0F, 0xC0, 0xCA, 0x9F, 0xA8]}; +const IID IID_IRTCSessionOperationCompleteEven = {0xA6BFF4C0, 0xF7C8, 0x4D3C, [0x9A, 0x41, 0x35, 0x50, 0xF7, 0x8A, 0x95, 0xB0]}; +const IID IID_IRTCSessionStateChangeEvent = {0xB5BAD703, 0x5952, 0x48B3, [0x93, 0x21, 0x7F, 0x45, 0x00, 0x52, 0x15, 0x06]}; +const IID IID_IRTCWatcher = {0xC7CEDAD8, 0x346B, 0x4D1B, [0xAC, 0x02, 0xA2, 0x08, 0x8D, 0xF9, 0xBE, 0x4F]}; +const IID IID_IRTCWatcherEvent = {0xF30D7261, 0x587A, 0x424F, [0x82, 0x2C, 0x31, 0x27, 0x88, 0xF4, 0x35, 0x48]}; +const IID IID_IRunnableObject = {0x00000126, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IRunnableTask = {0x85788D00, 0x6807, 0x11D0, [0xB8, 0x10, 0x00, 0xC0, 0x4F, 0xD7, 0x06, 0xEC]}; +const IID IID_IRunningObjectTable = {0x00000010, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IScheduleGroup = {0xC733E4A6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID IID_IScopedOperations = {0x0C733AB0, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IScriptEntry = {0x0AEE2A95, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; +const IID IID_IScriptErrorList = {0xF3470F24, 0x15FD, 0x11D2, [0xBB, 0x2E, 0x00, 0x80, 0x5F, 0xF7, 0xEF, 0xCA]}; +const IID IID_IScriptNode = {0x0AEE2A94, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; +const IID IID_IScriptScriptlet = {0x0AEE2A96, 0xBCBB, 0x11D0, [0x8C, 0x72, 0x00, 0xC0, 0x4F, 0xC2, 0xB0, 0x85]}; +const IID IID_IScrollBar = {0x3050F689, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISdo = {0x56BC53DE, 0x96DB, 0x11D1, [0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; +const IID IID_ISdoCollection = {0x56BC53E2, 0x96DB, 0x11D1, [0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]}; +const IID IID_ISdoDictionaryOld = {0xD432E5F4, 0x53D8, 0x11D2, [0x9A, 0x3A, 0x00, 0xC0, 0x4F, 0xB9, 0x98, 0xAC]}; +const IID IID_ISdoMachine = {0x479F6E75, 0x49A2, 0x11D2, [0x8E, 0xCA, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x19]}; +const IID IID_ISdoServiceControl = {0x479F6E74, 0x49A2, 0x11D2, [0x8E, 0xCA, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x19]}; +const IID IID_ISearch = {0xBA9239A4, 0x3DD5, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; +const IID IID_ISearchAssistantOC = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1]}; +const IID IID_ISearchAssistantOC2 = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA2]}; +const IID IID_ISearchAssistantOC3 = {0x72423E8F, 0x8011, 0x11D2, [0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA3]}; +const IID IID_ISearchCommandExt = {0x1D2EFD50, 0x75CE, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +const IID IID_ISearchContext = {0x09F656A2, 0x41AF, 0x480C, [0x88, 0xF7, 0x16, 0xCC, 0x0D, 0x16, 0x46, 0x15]}; +const IID IID_ISearches = {0x47C922A2, 0x3DD5, 0x11D2, [0xBF, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x36, 0x61]}; +const IID IID_ISearchQueryHits = {0xED8CE7E0, 0x106C, 0x11CE, [0x84, 0xE2, 0x00, 0xAA, 0x00, 0x4B, 0x99, 0x86]}; +const IID IID_ISecondaryControlChannel = {0xA23F9D10, 0x714C, 0x41FE, [0x84, 0x71, 0xFF, 0xB1, 0x9B, 0xC2, 0x84, 0x54]}; +const IID IID_ISecureUrlHost = {0xC81984C4, 0x74C8, 0x11D2, [0xBA, 0xA9, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; +const IID IID_ISecurityInfo = {0x0C733AA4, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ISegment = {0x3050F683, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISegmentList = {0x3050F605, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISegmentListIterator = {0x3050F692, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISelectionObject2 = {0x3050F7FC, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISelectionServices = {0x3050F684, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISelectionServicesListener = {0x3050F699, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISensLogon = {0xD597BAB3, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +const IID IID_ISensLogon2 = {0xD597BAB4, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +const IID IID_ISensNetwork = {0xD597BAB1, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +const IID IID_ISensOnNow = {0xD597BAB2, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +const IID IID_ISequenceNumber = {0x3050F6C1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISequentialStream = {0x0C733A30, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IServerSecurity = {0x0000013E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IServiceProvider = {0x6D5140C1, 0x7436, 0x11CE, [0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA]}; +const IID IID_ISessionProperties = {0x0C733A85, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ISetNextStatement = {0x51973C03, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_ISharedAccessBeacon = {0xFAEDCF6B, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_ISharedAccessBeaconFinder = {0xFAEDCF67, 0x31FE, 0x11D1, [0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_IShellApp = {0xA3E14960, 0x935F, 0x11D1, [0xB8, 0xB8, 0x00, 0x60, 0x08, 0x05, 0x93, 0x82]}; +const IID IID_IShellBrowser = {0x000214E2, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellChangeNotify = {0xD82BE2B1, 0x5764, 0x11D0, [0xA9, 0x6E, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2]}; +const IID IID_IShellCopyHookA = {0x000214EF, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellCopyHookW = {0x000214FC, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellDetails = {0x000214EC, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellDetails3 = {0xD2A105C0, 0x87D5, 0x11D1, [0x83, 0x91, 0x00, 0x00, 0xF8, 0x04, 0x61, 0xCF]}; +const IID IID_IShellDispatch = {0xD8F015C0, 0xC278, 0x11CE, [0xA4, 0x9E, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IShellDispatch2 = {0xA4C6892C, 0x3BA9, 0x11D2, [0x9D, 0xEA, 0x00, 0xC0, 0x4F, 0xB1, 0x61, 0x62]}; +const IID IID_IShellDispatch3 = {0x177160CA, 0xBB5A, 0x411C, [0x84, 0x1D, 0xBD, 0x38, 0xFA, 0xCD, 0xEA, 0xA0]}; +const IID IID_IShellDispatch4 = {0xEFD84B2D, 0x4BCF, 0x4298, [0xBE, 0x25, 0xEB, 0x54, 0x2A, 0x59, 0xFB, 0xDA]}; +const IID IID_IShellExecuteHookA = {0x000214F5, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellExecuteHookW = {0x000214FB, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellExtInit = {0x000214E8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellFavoritesNameSpace = {0x55136804, 0xB2DE, 0x11D1, [0xB9, 0xF2, 0x00, 0xA0, 0xC9, 0x8B, 0xC5, 0x47]}; +const IID IID_IShellFolder = {0x000214E6, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellFolder2 = {0x93F2F68C, 0x1D1B, 0x11D3, [0xA3, 0x0E, 0x00, 0xC0, 0x4F, 0x79, 0xAB, 0xD1]}; +const IID IID_IShellFolderViewCB = {0x2047E320, 0xF2A9, 0x11CE, [0xAE, 0x65, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62]}; +const IID IID_IShellFolderViewDual = {0xE7A1AF80, 0x4D96, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; +const IID IID_IShellFolderViewDual2 = {0x31C147B6, 0x0ADE, 0x4A3C, [0xB5, 0x14, 0xDD, 0xF9, 0x32, 0xEF, 0x6D, 0x17]}; +const IID IID_IShellIcon = {0x000214E5, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellIconOverlay = {0x7D688A70, 0xC613, 0x11D0, [0x99, 0x9B, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; +const IID IID_IShellIconOverlayIdentifier = {0x0C6C4200, 0xC589, 0x11D0, [0x99, 0x9A, 0x00, 0xC0, 0x4F, 0xD6, 0x55, 0xE1]}; +const IID IID_IShellImageData = {0xBFDEEC12, 0x8040, 0x4403, [0xA5, 0xEA, 0x9E, 0x07, 0xDA, 0xFC, 0xF5, 0x30]}; +const IID IID_IShellImageDataAbort = {0x53FB8E58, 0x50C0, 0x4003, [0xB4, 0xAA, 0x0C, 0x8D, 0xF2, 0x8E, 0x7F, 0x3A]}; +const IID IID_IShellImageDataFactory = {0x9BE8ED5C, 0xEDAB, 0x4D75, [0x90, 0xF3, 0xBD, 0x5B, 0xDB, 0xB2, 0x1C, 0x82]}; +const IID IID_IShellLinkA = {0x000214EE, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellLinkDataList = {0x45E2B4AE, 0xB1C3, 0x11D0, [0xB9, 0x2F, 0x00, 0xA0, 0xC9, 0x03, 0x12, 0xE1]}; +const IID IID_IShellLinkDual = {0x88A05C00, 0xF000, 0x11CE, [0x83, 0x50, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID IID_IShellLinkDual2 = {0x317EE249, 0xF12E, 0x11D2, [0xB1, 0xE4, 0x00, 0xC0, 0x4F, 0x8E, 0xEB, 0x3E]}; +const IID IID_IShellLinkW = {0x000214F9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellNameSpace = {0xE572D3C9, 0x37BE, 0x4AE2, [0x82, 0x5D, 0xD5, 0x21, 0x76, 0x3E, 0x31, 0x08]}; +const IID IID_IShellPropSheetExt = {0x000214E9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellUIHelper = {0x729FE2F8, 0x1EA8, 0x11D1, [0x8F, 0x85, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +const IID IID_IShellView = {0x000214E3, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IShellView2 = {0x88E39E80, 0x3578, 0x11CF, [0xAE, 0x69, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62]}; +const IID IID_IShellWindows = {0x85CB6900, 0x4D95, 0x11CF, [0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85]}; +const IID IID_ISimpleCommandCreator = {0x5E341AB7, 0x02D0, 0x11D1, [0x90, 0x0C, 0x00, 0xA0, 0xC9, 0x06, 0x37, 0x96]}; +const IID IID_ISimpleConnectionPoint = {0x51973C3E, 0xCB0C, 0x11D0, [0xB5, 0xC9, 0x00, 0xA0, 0x24, 0x4A, 0x0E, 0x7A]}; +const IID IID_ISimpleFrameSite = {0x742B0E01, 0x14E6, 0x101B, [0x91, 0x4E, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB]}; +const IID IID_ISliderBar = {0x3050F68D, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISniffStream = {0x4EF17940, 0x30E0, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +const IID IID_ISOAPRequest = {0xAD194525, 0x6E01, 0x4BCA, [0x92, 0x9C, 0x23, 0xC7, 0x38, 0x33, 0x36, 0xAF]}; +const IID IID_ISoftDistExt = {0xB15B8DC1, 0xC7E1, 0x11D0, [0x86, 0x80, 0x00, 0xAA, 0x00, 0xBD, 0xCB, 0x71]}; +const IID IID_ISourcesRowset = {0x0C733A1E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ISpecialSystemProperties = {0x000001B9, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ISpecifyPropertyPages = {0xB196B28B, 0xBAB4, 0x101A, [0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07]}; +const IID IID_ISpinButton = {0x3050F68B, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISQLErrorInfo = {0x0C733A74, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IStandardActivator = {0x000001B8, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IStandardInfo = {0xF1D9C1A5, 0x9589, 0x40DD, [0xB6, 0x3D, 0x9B, 0xB0, 0xB3, 0x8A, 0x10, 0x22]}; +const IID IID_IStaticPortMapping = {0x6F10711F, 0x729B, 0x41E5, [0x93, 0xB8, 0xF2, 0x1D, 0x0F, 0x81, 0x8D, 0xF1]}; +const IID IID_IStaticPortMappingCollection = {0xCD1F3E77, 0x66D6, 0x4664, [0x82, 0xC7, 0x36, 0xDB, 0xB6, 0x41, 0xD0, 0xF1]}; +const IID IID_IStats = {0x944AD530, 0xB09D, 0x11CE, [0xB5, 0x9C, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +const IID IID_IStdMarshalInfo = {0x00000018, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IStemmer = {0xEFBAF140, 0x7F42, 0x11CE, [0xBE, 0x57, 0x00, 0xAA, 0x00, 0x51, 0xFE, 0x20]}; +const IID IID_IStemSink = {0xFE77C330, 0x7F42, 0x11CE, [0xBE, 0x57, 0x00, 0xAA, 0x00, 0x51, 0xFE, 0x20]}; +const IID IID_IStorage = {0x0000000B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IStream = {0x0000000C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IStub = {0x00000026, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IStubManager = {0x00000006, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ISubDivisionProvider = {0x3050F4D2, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ISubscriptionAgentControl = {0xA89E8FF0, 0x70F4, 0x11D1, [0xBC, 0x7F, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +const IID IID_ISubscriptionAgentEvents = {0xA89E8FF1, 0x70F4, 0x11D1, [0xBC, 0x7F, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +const IID IID_ISubscriptionAgentShellExt = {0x81B184BA, 0xB302, 0x11D1, [0x85, 0x52, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89]}; +const IID IID_ISubscriptionItem = {0xA97559F8, 0x6C4A, 0x11D1, [0xA1, 0xE8, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +const IID IID_ISubscriptionMgr = {0x085FB2C0, 0x0DF8, 0x11D1, [0x8F, 0x4B, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x3F]}; +const IID IID_ISubscriptionMgr2 = {0x614BC270, 0xAEDF, 0x11D1, [0xA1, 0xF9, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +const IID IID_ISubscriptionMgrPriv = {0xD66B399E, 0xAF1D, 0x11D1, [0xA1, 0xF9, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +const IID IID_ISubscriptionThrottler = {0x1E9B00E4, 0x9846, 0x11D1, [0xA1, 0xEE, 0x00, 0xC0, 0x4F, 0xC2, 0xFB, 0xE1]}; +const IID IID_ISupportErrorInfo = {0xDF0B3D60, 0x548F, 0x101B, [0x8E, 0x65, 0x08, 0x00, 0x2B, 0x2B, 0xD1, 0x19]}; +const IID IID_ISurrogate = {0x00000022, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ISWbemDateTime = {0x5E97458A, 0xCF77, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +const IID IID_ISWbemEventSource = {0x27D54D92, 0x0EBE, 0x11D2, [0x8B, 0x22, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemLastError = {0xD962DB84, 0xD4BB, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemLocator = {0x76A6415B, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemMethod = {0x422E8E90, 0xD955, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemMethodSet = {0xC93BA292, 0xD955, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemNamedValue = {0x76A64164, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemNamedValueSet = {0xCF2376EA, 0xCE8C, 0x11D1, [0x8B, 0x05, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemObject = {0x76A6415A, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemObjectEx = {0x269AD56A, 0x8A67, 0x4129, [0xBC, 0x8C, 0x05, 0x06, 0xDC, 0xFE, 0x98, 0x80]}; +const IID IID_ISWbemObjectPath = {0x5791BC27, 0xCE9C, 0x11D1, [0x97, 0xBF, 0x00, 0x00, 0xF8, 0x1E, 0x84, 0x9C]}; +const IID IID_ISWbemObjectSet = {0x76A6415F, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemPrivilege = {0x26EE67BD, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemPrivilegeSet = {0x26EE67BF, 0x5804, 0x11D2, [0x8B, 0x4A, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemProperty = {0x1A388F98, 0xD4BA, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemPropertySet = {0xDEA0A7B2, 0xD4BA, 0x11D1, [0x8B, 0x09, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemQualifier = {0x79B05932, 0xD3B7, 0x11D1, [0x8B, 0x06, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemQualifierSet = {0x9B16ED16, 0xD3DF, 0x11D1, [0x8B, 0x08, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemRefreshableItem = {0x5AD4BF92, 0xDAAB, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +const IID IID_ISWbemRefresher = {0x14D8250E, 0xD9C2, 0x11D3, [0xB3, 0x8F, 0x00, 0x10, 0x5A, 0x1F, 0x47, 0x3A]}; +const IID IID_ISWbemSecurity = {0xB54D66E6, 0x2287, 0x11D2, [0x8B, 0x33, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemServices = {0x76A6415C, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID IID_ISWbemServicesEx = {0xD2F68443, 0x85DC, 0x427E, [0x91, 0xD8, 0x36, 0x65, 0x54, 0xCC, 0x75, 0x4C]}; +const IID IID_ISWbemSink = {0x75718C9F, 0xF029, 0x11D1, [0xA1, 0xAC, 0x00, 0xC0, 0x4F, 0xB6, 0xC2, 0x23]}; +const IID IID_ISynchronize = {0x00000030, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ISynchronizeContainer = {0x00000033, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ISynchronizedCallBack = {0x74C26041, 0x70D1, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +const IID IID_ISynchronizeEvent = {0x00000032, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ISynchronizeHandle = {0x00000031, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ISynchronizeMutex = {0x00000025, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ISyncMgrEnumItems = {0x6295DF2A, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +const IID IID_ISyncMgrRegisterCSC = {0x47681A61, 0xBC74, 0x11D2, [0xB5, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x39, 0x81]}; +const IID IID_ISyncMgrSynchronizeInvoke = {0x6295DF2C, 0x35EE, 0x11D1, [0x87, 0x07, 0x00, 0xC0, 0x4F, 0xD9, 0x33, 0x27]}; +const IID IID_ISyncSchedule = {0xF0E15899, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; +const IID IID_ISyncScheduleMgr = {0xF0E15897, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; +const IID IID_ISyncSchedulep = {0xF0E1589B, 0xA700, 0x11D1, [0x98, 0x31, 0x00, 0xC0, 0x4F, 0xD9, 0x10, 0xDD]}; +const IID IID_ITableCreation = {0x0C733ABC, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ITableDefinition = {0x0C733A86, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ITableDefinitionWithConstraints = {0x0C733AAB, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ITableRename = {0x0C733A77, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ITACDGroup = {0x5AFC3148, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITACDGroupEvent = {0x297F3032, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITAddress = {0xB1EFC386, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_ITAddress2 = {0xB0AE5D9B, 0xBE51, 0x46C9, [0xB0, 0xF7, 0xDF, 0xA8, 0xA2, 0x2A, 0x8B, 0xC4]}; +const IID IID_ITAddressCapabilities = {0x8DF232F5, 0x821B, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITAddressDeviceSpecificEvent = {0x3ACB216B, 0x40BD, 0x487A, [0x86, 0x72, 0x5C, 0xE7, 0x7B, 0xD7, 0xE3, 0xA3]}; +const IID IID_ITAddressEvent = {0x831CE2D1, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITAddressTranslation = {0x0C4D8F03, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITAddressTranslationInfo = {0xAFC15945, 0x8D40, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITAgent = {0x5770ECE5, 0x4B27, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITAgentEvent = {0x5AFC314A, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITAgentHandler = {0x587E8C22, 0x9802, 0x11D1, [0xA0, 0xA4, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITAgentHandlerEvent = {0x297F3034, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITAgentSession = {0x5AFC3147, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITAgentSessionEvent = {0x5AFC314B, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITAllocatorProperties = {0xC1BC3C90, 0xBCFE, 0x11D1, [0x97, 0x45, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_ITAMMediaFormat = {0x0364EB00, 0x4A77, 0x11D1, [0xA6, 0x71, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xE8]}; +const IID IID_ITargetContainer = {0x7847EC01, 0x2BEC, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; +const IID IID_ITargetEmbedding = {0x548793C0, 0x9E74, 0x11CF, [0x96, 0x55, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0x23]}; +const IID IID_ITargetFrame = {0xD5F78C80, 0x5252, 0x11CF, [0x90, 0xFA, 0x00, 0xAA, 0x00, 0x42, 0x10, 0x6E]}; +const IID IID_ITargetFrame2 = {0x86D52E11, 0x94A8, 0x11D0, [0x82, 0xAF, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; +const IID IID_ITargetFramePriv = {0x9216E421, 0x2BF5, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; +const IID IID_ITargetNotify = {0x863A99A0, 0x21BC, 0x11D0, [0x82, 0xB4, 0x00, 0xA0, 0xC9, 0x0C, 0x29, 0xC5]}; +const IID IID_ITargetNotify2 = {0x3050F6B1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ITaskAnalyzeCluster = {0x795737A1, 0xE13A, 0x45EB, [0x8D, 0xFD, 0x81, 0x85, 0xC4, 0xB7, 0xAD, 0x4E]}; +const IID IID_ITaskbarList = {0x56FDF342, 0xFD6D, 0x11D0, [0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90]}; +const IID IID_ITaskbarList2 = {0x602D4995, 0xB13A, 0x429B, [0xA6, 0x6E, 0x19, 0x35, 0xE4, 0x4F, 0x43, 0x17]}; +const IID IID_ITaskCommitClusterChanges = {0x1BF12DDE, 0xF8B0, 0x49B1, [0xA4, 0x58, 0x67, 0x47, 0xDB, 0x78, 0x8A, 0x47]}; +const IID IID_ITaskCompareAndPushInformation = {0xD4F1C2AF, 0xB370, 0x49DE, [0x87, 0x68, 0x40, 0x10, 0xB5, 0x68, 0x63, 0x6C]}; +const IID IID_ITaskGatherClusterInfo = {0xE167965C, 0xC5D6, 0x493C, [0xA3, 0x43, 0x4C, 0x10, 0x5C, 0x01, 0xDD, 0xE7]}; +const IID IID_ITaskGatherInformation = {0xB9AAF3F8, 0x238E, 0x4993, [0xBA, 0x31, 0x14, 0x85, 0x98, 0x04, 0xF9, 0x2C]}; +const IID IID_ITaskGatherNodeInfo = {0xF19A2E01, 0x2CB3, 0x47B4, [0x8F, 0x5D, 0xB9, 0x77, 0x17, 0x6B, 0x45, 0xC8]}; +const IID IID_ITaskGetDomains = {0xDFCB4ACD, 0xC4DB, 0x4DB4, [0x8E, 0xBB, 0x1D, 0xD0, 0x7A, 0x9D, 0x5B, 0x82]}; +const IID IID_ITaskGetDomainsCallback = {0x85402E44, 0x6834, 0x41DF, [0x85, 0x90, 0x01, 0x82, 0x7D, 0x12, 0x4E, 0x1B]}; +const IID IID_ITaskLoginDomain = {0x76AD8E51, 0x53C3, 0x4347, [0x89, 0x5D, 0x6C, 0x30, 0xF4, 0x13, 0x93, 0x74]}; +const IID IID_ITaskLoginDomainCallback = {0xEFAF3C43, 0x7A8F, 0x469B, [0xB8, 0xBB, 0xC8, 0x0C, 0x57, 0x47, 0xCE, 0x05]}; +const IID IID_ITaskManager = {0x16116694, 0xDFC5, 0x470B, [0xAC, 0x12, 0x46, 0xFB, 0xB0, 0x1C, 0xEF, 0x10]}; +const IID IID_ITaskPollingCallback = {0x49E92395, 0x66AF, 0x4ADD, [0xA4, 0x1E, 0x43, 0x51, 0x2C, 0xB5, 0x19, 0xB3]}; +const IID IID_ITaskVerifyIPAddress = {0x0C95E1B1, 0x0CFF, 0x4740, [0x8A, 0xBD, 0x69, 0x91, 0x2D, 0x10, 0x5B, 0xD1]}; +const IID IID_ITASRTerminalEvent = {0xEE016A02, 0x4FA9, 0x467C, [0x93, 0x3F, 0x5A, 0x15, 0xB1, 0x23, 0x77, 0xD7]}; +const IID IID_ITAttributeList = {0x5037FB82, 0xCAE9, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_ITAudioDeviceControl = {0x6C0AB6C5, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +const IID IID_ITAudioSettings = {0x6C0AB6C6, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +const IID IID_ITAutomatedPhoneControl = {0x1EE1AF0E, 0x6159, 0x4A61, [0xB7, 0x9B, 0x6A, 0x4B, 0xA3, 0xFC, 0x9D, 0xFC]}; +const IID IID_ITBasicAudioTerminal = {0xB1EFC38D, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_ITBasicCallControl = {0xB1EFC389, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_ITBasicCallControl2 = {0x161A4A56, 0x1E99, 0x4B3F, [0xA4, 0x6A, 0x16, 0x8F, 0x38, 0xA5, 0xEE, 0x4C]}; +const IID IID_ITCallHub = {0xA3C1544E, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITCallHubEvent = {0xA3C15451, 0x5B92, 0x11D1, [0x8F, 0x4E, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITCallInfo = {0x350F85D1, 0x1227, 0x11D3, [0x83, 0xD4, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITCallInfo2 = {0x94D70CA6, 0x7AB0, 0x4DAA, [0x81, 0xCA, 0xB8, 0xF8, 0x64, 0x3F, 0xAE, 0xC1]}; +const IID IID_ITCallInfoChangeEvent = {0x5D4B65F9, 0xE51C, 0x11D1, [0xA0, 0x2F, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITCallingCard = {0x0C4D8F00, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITCallMediaEvent = {0xFF36B87F, 0xEC3A, 0x11D0, [0x8E, 0xE4, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITCallNotificationEvent = {0x895801DF, 0x3DD6, 0x11D1, [0x8F, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITCallQualityControl = {0xFE1D8AE0, 0xEDC4, 0x49B5, [0x8F, 0x8C, 0x4D, 0xE4, 0x0F, 0x9C, 0xDF, 0xAF]}; +const IID IID_ITCallStateEvent = {0x62F47097, 0x95C9, 0x11D0, [0x83, 0x5D, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_ITCollection = {0x5EC5ACF2, 0x9C02, 0x11D0, [0x83, 0x62, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_ITCollection2 = {0xE6DDDDA5, 0xA6D3, 0x48FF, [0x87, 0x37, 0xD3, 0x2F, 0xC4, 0xD9, 0x54, 0x77]}; +const IID IID_ITConferenceBlob = {0xC259D7AA, 0xC8AB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_ITConnection = {0x8FA381D4, 0xC8C2, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_ITcpipProperties = {0x98133271, 0x4B20, 0x11D1, [0xAB, 0x01, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E]}; +const IID IID_ITCustomTone = {0x357AD764, 0xB3C6, 0x4B2A, [0x8F, 0xA5, 0x07, 0x22, 0x82, 0x7A, 0x92, 0x54]}; +const IID IID_ITDetectTone = {0x961F79BD, 0x3097, 0x49DF, [0xA1, 0xD6, 0x90, 0x9B, 0x77, 0xE8, 0x9C, 0xA0]}; +const IID IID_ITDigitDetectionEvent = {0x80D3BFAC, 0x57D9, 0x11D2, [0xA0, 0x4A, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITDigitGenerationEvent = {0x80D3BFAD, 0x57D9, 0x11D2, [0xA0, 0x4A, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITDigitsGatheredEvent = {0xE52EC4C1, 0xCBA3, 0x441A, [0x9E, 0x6A, 0x93, 0xCB, 0x90, 0x9E, 0x97, 0x24]}; +const IID IID_ITDirectory = {0x34621D6C, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +const IID IID_ITDirectoryObject = {0x34621D6E, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +const IID IID_ITDirectoryObjectConference = {0xF1029E5D, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_ITDirectoryObjectUser = {0x34621D6F, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +const IID IID_ITDispatchMapper = {0xE9225295, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITemplatePrinter = {0x3050F6B4, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ITemplatePrinter2 = {0x3050F83F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ITFileTerminalEvent = {0xE4A7FBAC, 0x8C17, 0x4427, [0x9F, 0x55, 0x9F, 0x58, 0x9A, 0xC8, 0xAF, 0x00]}; +const IID IID_ITFileTrack = {0x31CA6EA9, 0xC08A, 0x4BEA, [0x88, 0x11, 0x8E, 0x9C, 0x1B, 0xA3, 0xEA, 0x3A]}; +const IID IID_ITfLangBarAddIn = {0xC9ADDAC3, 0x15CB, 0x4957, [0xB9, 0x3C, 0xDB, 0x08, 0x73, 0xFF, 0x98, 0xBB]}; +const IID IID_ITFormatControl = {0x6C0AB6C1, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +const IID IID_ITForwardInformation = {0x449F659E, 0x88A3, 0x11D1, [0xBB, 0x5D, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITForwardInformation2 = {0x5229B4ED, 0xB260, 0x4382, [0x8E, 0x1A, 0x5D, 0xF3, 0xA8, 0xA4, 0xCC, 0xC0]}; +const IID IID_ITfSpeechUIServer = {0x90E9A944, 0x9244, 0x489F, [0xA7, 0x8F, 0xDE, 0x67, 0xAF, 0xC0, 0x13, 0xA7]}; +const IID IID_IThumbnailCapture = {0x4EA39266, 0x7211, 0x409F, [0xB6, 0x22, 0xF6, 0x3D, 0xBD, 0x16, 0xC5, 0x33]}; +const IID IID_IThumbnailExtractor = {0x969DC708, 0x5C76, 0x11D1, [0x8D, 0x86, 0x00, 0x00, 0xF8, 0x04, 0xB0, 0x57]}; +const IID IID_ITILSConfig = {0x34621D72, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +const IID IID_ITIMEActiveElementCollection = {0x403E2540, 0x4520, 0x11D3, [0x93, 0xAB, 0x00, 0xA0, 0xC9, 0x67, 0xA4, 0x38]}; +const IID IID_ITimeAndNoticeControl = {0xBC0BF6AE, 0x8878, 0x11D1, [0x83, 0xE9, 0x00, 0xC0, 0x4F, 0xC2, 0xC6, 0xD4]}; +const IID IID_ITIMEAnimationElement = {0xA74F14B1, 0xB6A2, 0x430A, [0xA5, 0xE8, 0x1F, 0x4E, 0x53, 0xF7, 0x10, 0xFE]}; +const IID IID_ITIMEAnimationElement2 = {0x29CE8661, 0xBD43, 0x421A, [0xB6, 0x16, 0xE9, 0xB3, 0x1F, 0x33, 0xA5, 0x72]}; +const IID IID_ITIMEBodyElement = {0x8C90E348, 0xEC0A, 0x4229, [0x90, 0xB0, 0xE5, 0x7D, 0x2C, 0xA4, 0x5C, 0xCB]}; +const IID IID_ITIMEDMusicPlayerObject = {0x407954F5, 0x2BAB, 0x4CFA, [0x95, 0x4D, 0x24, 0x9F, 0x9F, 0xCE, 0x43, 0xA1]}; +const IID IID_ITIMEDVDPlayerObject = {0x3AF7AB68, 0x4F29, 0x462C, [0xAA, 0x6E, 0x58, 0x72, 0x44, 0x88, 0x99, 0xE3]}; +const IID IID_ITIMEElement = {0x1C2EF64E, 0xF07D, 0x4338, [0x97, 0x71, 0x91, 0x54, 0x49, 0x1C, 0xD8, 0xB9]}; +const IID IID_ITIMEElementCollection = {0x50ABC224, 0x6D53, 0x4F83, [0x91, 0x35, 0x24, 0x40, 0xA4, 0x1B, 0x7B, 0xC8]}; +const IID IID_ITIMEFactory = {0xCD51E446, 0x3006, 0x434F, [0x90, 0xE2, 0xE3, 0x7E, 0x8F, 0xB8, 0xCA, 0x8F]}; +const IID IID_ITIMEMediaElement = {0x47A6972F, 0xAE65, 0x4A6B, [0xAE, 0x63, 0xD0, 0xC1, 0xD5, 0x30, 0x7B, 0x58]}; +const IID IID_ITIMEMediaElement2 = {0x9EE29400, 0x7EE6, 0x453A, [0x85, 0xB3, 0x4E, 0xC2, 0x8E, 0x03, 0x05, 0xB4]}; +const IID IID_ITIMEMediaPlayer = {0xEA4A95BE, 0xACC9, 0x4BF0, [0x85, 0xA4, 0x1B, 0xF3, 0xC5, 0x1E, 0x43, 0x1C]}; +const IID IID_ITIMEMediaPlayerAudio = {0xFFAACFDA, 0xB374, 0x4F22, [0xAC, 0x9A, 0xC5, 0xBB, 0x94, 0x37, 0xCB, 0x56]}; +const IID IID_ITIMEMediaPlayerControl = {0x897A99E7, 0xF386, 0x45C8, [0xB5, 0x1B, 0x3A, 0x25, 0xBB, 0xCB, 0xBA, 0x69]}; +const IID IID_ITIMEMediaPlayerNetwork = {0xB9987FCA, 0x7FBB, 0x4015, [0xBD, 0x3D, 0x74, 0x18, 0x60, 0x55, 0x14, 0xDA]}; +const IID IID_ITIMEMediaPlayerSite = {0xBF0571ED, 0x344F, 0x4F58, [0x82, 0xC7, 0x74, 0x31, 0xED, 0x0F, 0xD8, 0x34]}; +const IID IID_ITIMEPlayItem = {0x2A6096D9, 0x2CE0, 0x47DC, [0xA8, 0x13, 0x90, 0x99, 0xA2, 0x46, 0x63, 0x09]}; +const IID IID_ITIMEPlayItem2 = {0x4262CD38, 0x6BDC, 0x40A4, [0xBC, 0x50, 0x4C, 0xC5, 0x03, 0x66, 0xE7, 0x02]}; +const IID IID_ITIMEPlayList = {0xE9B75B62, 0xDD97, 0x4B19, [0x8F, 0xD9, 0x96, 0x46, 0x29, 0x29, 0x52, 0xE0]}; +const IID IID_ITimer = {0x3050F360, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ITimerService = {0x3050F35F, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ITimerSink = {0x3050F361, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ITIMEState = {0xDD5EC62A, 0x9D77, 0x4573, [0x80, 0xA8, 0x75, 0x85, 0x94, 0xE6, 0x9C, 0xEA]}; +const IID IID_ITIMETransitionElement = {0xF383D66F, 0x5E68, 0x4FC2, [0xB6, 0x41, 0x03, 0x67, 0x2B, 0x54, 0x3A, 0x49]}; +const IID IID_ITLegacyAddressMediaControl = {0xAB493640, 0x4C0B, 0x11D2, [0xA0, 0x46, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITLegacyAddressMediaControl2 = {0xB0EE512B, 0xA531, 0x409E, [0x9D, 0xD9, 0x40, 0x99, 0xFE, 0x86, 0xC7, 0x38]}; +const IID IID_ITLegacyCallMediaControl = {0xD624582F, 0xCC23, 0x4436, [0xB8, 0xA5, 0x47, 0xC6, 0x25, 0xC8, 0x04, 0x5D]}; +const IID IID_ITLegacyCallMediaControl2 = {0x57CA332D, 0x7BC2, 0x44F1, [0xA6, 0x0C, 0x93, 0x6F, 0xE8, 0xD7, 0xCE, 0x73]}; +const IID IID_ITLegacyWaveSupport = {0x207823EA, 0xE252, 0x11D2, [0xB7, 0x7E, 0x00, 0x80, 0xC7, 0x13, 0x53, 0x81]}; +const IID IID_ITLocalParticipant = {0x39CBF055, 0xF77A, 0x11D2, [0xA8, 0x24, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +const IID IID_ITLocationInfo = {0x0C4D8EFF, 0x8DDB, 0x11D1, [0xA0, 0x9E, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITMedia = {0x0CC1F053, 0xCAEB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_ITMediaCollection = {0x6A8E16A2, 0x0ABC, 0x11D1, [0x97, 0x6D, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_ITMediaControl = {0xC445DDE8, 0x5199, 0x4BC7, [0x98, 0x07, 0x5F, 0xFB, 0x92, 0xE4, 0x2E, 0x09]}; +const IID IID_ITMediaPlayback = {0x627E8AE6, 0xAE4C, 0x4A69, [0xBB, 0x63, 0x2A, 0xD6, 0x25, 0x40, 0x4B, 0x77]}; +const IID IID_ITMediaRecord = {0xF5DD4592, 0x5476, 0x4CC1, [0x9D, 0x4D, 0xFA, 0xD3, 0xEE, 0xFE, 0x7D, 0xB2]}; +const IID IID_ITMediaSupport = {0xB1EFC384, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_ITMSPAddress = {0xEE3BD600, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITMultiTrackTerminal = {0xFE040091, 0xADE8, 0x4072, [0x95, 0xC9, 0xBF, 0x7D, 0xE8, 0xC5, 0x4B, 0x44]}; +const IID IID_ITParticipant = {0x5899B820, 0x5A34, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; +const IID IID_ITParticipantControl = {0xD2EE6684, 0x5A34, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; +const IID IID_ITParticipantEvent = {0x8BB35070, 0x2DAD, 0x11D3, [0xA5, 0x80, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +const IID IID_ITParticipantSubStreamControl = {0x2C679108, 0x5A35, 0x11D2, [0x95, 0xA0, 0x00, 0xA0, 0x24, 0x4D, 0x22, 0x98]}; +const IID IID_ITPhone = {0x09D48DB4, 0x10CC, 0x4388, [0x9D, 0xE7, 0xA8, 0x46, 0x56, 0x18, 0x97, 0x5A]}; +const IID IID_ITPhoneDeviceSpecificEvent = {0x63FFB2A6, 0x872B, 0x4CD3, [0xA5, 0x01, 0x32, 0x6E, 0x8F, 0xB4, 0x0A, 0xF7]}; +const IID IID_ITPhoneEvent = {0x8F942DD8, 0x64ED, 0x4AAF, [0xA7, 0x7D, 0xB2, 0x3D, 0xB0, 0x83, 0x7E, 0xAD]}; +const IID IID_ITPluggableTerminalClassInfo = {0x41757F4A, 0xCF09, 0x4B34, [0xBC, 0x96, 0x0A, 0x79, 0xD2, 0x39, 0x00, 0x76]}; +const IID IID_ITPluggableTerminalClassRegistrat = {0x924A3723, 0xA00B, 0x4F5F, [0x9F, 0xEE, 0x8E, 0x9A, 0xEB, 0x9E, 0x82, 0xAA]}; +const IID IID_ITPluggableTerminalEventSink = {0x6E0887BE, 0xBA1A, 0x492E, [0xBD, 0x10, 0x40, 0x20, 0xEC, 0x5E, 0x33, 0xE0]}; +const IID IID_ITPluggableTerminalEventSinkRegis = {0xF7115709, 0xA216, 0x4957, [0xA7, 0x59, 0x06, 0x0A, 0xB3, 0x2A, 0x90, 0xD1]}; +const IID IID_ITPluggableTerminalInitializatio = {0xAED6483C, 0x3304, 0x11D2, [0x86, 0xF1, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +const IID IID_ITPluggableTerminalSuperclassInf = {0x6D54E42C, 0x4625, 0x4359, [0xA6, 0xF7, 0x63, 0x19, 0x99, 0x10, 0x7E, 0x05]}; +const IID IID_ITPluggableTerminalSuperclassRegi = {0x60D3C08A, 0xC13E, 0x4195, [0x9A, 0xB0, 0x8D, 0xE7, 0x68, 0x09, 0x0F, 0x25]}; +const IID IID_ITPrivateEvent = {0x0E269CD0, 0x10D4, 0x4121, [0x9C, 0x22, 0x9C, 0x85, 0xD6, 0x25, 0x65, 0x0D]}; +const IID IID_ITQOSApplicationID = {0xE8C89D27, 0xA3BD, 0x47D5, [0xA6, 0xFC, 0xD2, 0xAE, 0x40, 0xCD, 0xBC, 0x6E]}; +const IID IID_ITQOSEvent = {0xCFA3357C, 0xAD77, 0x11D1, [0xBB, 0x68, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITQueue = {0x5AFC3149, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITQueueEvent = {0x297F3033, 0xBD11, 0x11D1, [0xA0, 0xA7, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITrackFile = {0x8790C948, 0xA30B, 0x11D0, [0x8C, 0xAB, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; +const IID IID_ITransaction = {0x0FB15084, 0xAF41, 0x11CE, [0xBD, 0x2B, 0x20, 0x4C, 0x4F, 0x4F, 0x50, 0x20]}; +const IID IID_ITransaction2 = {0x34021548, 0x0065, 0x11D3, [0xBA, 0xC1, 0x00, 0xC0, 0x4F, 0x79, 0x7B, 0xE2]}; +const IID IID_ITransactionCloner = {0x02656950, 0x2152, 0x11D0, [0x94, 0x4C, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x6E]}; +const IID IID_ITransactionDispenser = {0x3A6AD9E1, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; +const IID IID_ITransactionJoin = {0x0C733A5E, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ITransactionLocal = {0x0C733A5F, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ITransactionObject = {0x0C733A60, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ITransactionOptions = {0x3A6AD9E0, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; +const IID IID_ITransactionOutcomeEvents = {0x3A6AD9E2, 0x23B9, 0x11CF, [0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD]}; +const IID IID_ITransmt = {0xB3C9F150, 0xB593, 0x11CE, [0xB5, 0xB0, 0x00, 0xAA, 0x00, 0x6C, 0xB3, 0x7D]}; +const IID IID_ITravelEntry = {0xF46EDB3B, 0xBC2F, 0x11D0, [0x94, 0x12, 0x00, 0xAA, 0x00, 0xA3, 0xEB, 0xD3]}; +const IID IID_ITravelLog = {0x66A9CB08, 0x4802, 0x11D2, [0xA5, 0x61, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8]}; +const IID IID_ITravelLogClient = {0x3050F67A, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ITravelLogClient2 = {0x0AD364CE, 0xADCB, 0x11D3, [0x82, 0x69, 0x00, 0x80, 0x5F, 0xC7, 0x32, 0xC0]}; +const IID IID_ITravelLogEntry = {0x7EBFDD87, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; +const IID IID_ITravelLogEx = {0x3050F679, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_ITravelLogStg = {0x7EBFDD80, 0xAD18, 0x11D3, [0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8]}; +const IID IID_ITRendezvous = {0x34621D6B, 0x6CFF, 0x11D1, [0xAF, 0xF7, 0x00, 0xC0, 0x4F, 0xC3, 0x1F, 0xEE]}; +const IID IID_ITRequest = {0xAC48FFDF, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITRequestEvent = {0xAC48FFDE, 0xF8C4, 0x11D1, [0xA0, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITridentEventSink = {0x1DC9CA50, 0x06EF, 0x11D2, [0x84, 0x15, 0x00, 0x60, 0x08, 0xC3, 0xFB, 0xFC]}; +const IID IID_ITrkForceOwnership = {0xA2531F44, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; +const IID IID_ITrkRestoreNotify = {0xD0056F6B, 0xE2A0, 0x11D0, [0xB1, 0xC2, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +const IID IID_ITrkRestoreParser = {0x755939E3, 0xE381, 0x11D0, [0xB1, 0xC5, 0x00, 0xC0, 0x4F, 0xB9, 0x38, 0x6D]}; +const IID IID_ITrusteeAdmin = {0x0C733AA1, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ITrusteeGroupAdmin = {0x0C733AA2, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_ITScriptableAudioFormat = {0xB87658BD, 0x3C59, 0x4F64, [0xBE, 0x74, 0xAE, 0xDE, 0x3E, 0x86, 0xA8, 0x1E]}; +const IID IID_ITSdp = {0x9B2719D8, 0xB696, 0x11D0, [0xA4, 0x89, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_ITStaticAudioTerminal = {0xA86B7871, 0xD14C, 0x48E6, [0x92, 0x2E, 0xA8, 0xD1, 0x5F, 0x98, 0x48, 0x00]}; +const IID IID_ITStream = {0xEE3BD605, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITStreamControl = {0xEE3BD604, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITStreamQualityControl = {0x6C0AB6C2, 0x21E3, 0x11D3, [0xA5, 0x77, 0x00, 0xC0, 0x4F, 0x8E, 0xF6, 0xE3]}; +const IID IID_ITSubStream = {0xEE3BD608, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITSubStreamControl = {0xEE3BD607, 0x3868, 0x11D2, [0xA0, 0x45, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITTAPI = {0xB1EFC382, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_ITTAPI2 = {0x54FBDC8C, 0xD90F, 0x4DAD, [0x96, 0x95, 0xB3, 0x73, 0x09, 0x7F, 0x09, 0x4B]}; +const IID IID_ITTAPICallCenter = {0x5AFC3154, 0x4BCC, 0x11D1, [0xBF, 0x80, 0x00, 0x80, 0x5F, 0xC1, 0x47, 0xD3]}; +const IID IID_ITTAPIEventNotification = {0xEDDB9426, 0x3B91, 0x11D1, [0x8F, 0x30, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITTAPIObjectEvent = {0xF4854D48, 0x937A, 0x11D1, [0xBB, 0x58, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID IID_ITTAPIObjectEvent2 = {0x359DDA6E, 0x68CE, 0x4383, [0xBF, 0x0B, 0x16, 0x91, 0x33, 0xC4, 0x1B, 0x46]}; +const IID IID_ITTerminal = {0xB1EFC38A, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_ITTerminalControl = {0xAED6483B, 0x3304, 0x11D2, [0x86, 0xF1, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +const IID IID_ITTerminalManager = {0x7170F2DE, 0x9BE3, 0x11D0, [0xA0, 0x09, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; +const IID IID_ITTerminalManager2 = {0xBB33DEC6, 0xB2C7, 0x46E6, [0x9E, 0xD1, 0x49, 0x8B, 0x91, 0xFA, 0x85, 0xAC]}; +const IID IID_ITTerminalSupport = {0xB1EFC385, 0x9355, 0x11D0, [0x83, 0x5C, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID IID_ITTerminalSupport2 = {0xF3EB39BC, 0x1B1F, 0x4E99, [0xA0, 0xC0, 0x56, 0x30, 0x5C, 0x4D, 0xD5, 0x91]}; +const IID IID_ITTime = {0x2652BB78, 0x1516, 0x11D1, [0x97, 0x71, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_ITTimeCollection = {0x0CC1F04F, 0xCAEB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID IID_ITToneDetectionEvent = {0x407E0FAF, 0xD047, 0x4753, [0xB0, 0xC6, 0x8E, 0x06, 0x03, 0x73, 0xFE, 0xCD]}; +const IID IID_ITToneTerminalEvent = {0xE6F56009, 0x611F, 0x4945, [0xBB, 0xD2, 0x2D, 0x0C, 0xE5, 0x61, 0x20, 0x56]}; +const IID IID_ITTTSTerminalEvent = {0xD964788F, 0x95A5, 0x461D, [0xAB, 0x0C, 0xB9, 0x90, 0x0A, 0x6C, 0x27, 0x13]}; +const IID IID_ITypeChangeEvents = {0x00020410, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ITypeComp = {0x00020403, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ITypeFactory = {0x0000002E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ITypeInfo = {0x00020401, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ITypeInfo2 = {0x00020412, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ITypeLib = {0x00020402, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ITypeLib2 = {0x00020411, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_ITypeMarshal = {0x0000002D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IUmiADSIPrivate = {0xCFCECB01, 0x3123, 0x4926, [0xB5, 0xE3, 0x62, 0x78, 0x08, 0x27, 0x26, 0x43]}; +const IID IID_IUniformResourceLocatorA = {0xFBF23B80, 0xE3F0, 0x101B, [0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8]}; +const IID IID_IUniformResourceLocatorW = {0xCABB0DA0, 0xDA57, 0x11CF, [0x99, 0x74, 0x00, 0x20, 0xAF, 0xD7, 0x97, 0x62]}; +const IID IID_IUnknown = {0x00000000, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IUnsecuredApartment = {0x1CFABA8C, 0x1523, 0x11D1, [0xAD, 0x79, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID IID_IUPnPDescriptionDocument = {0x11D1C1B2, 0x7DAA, 0x4C9E, [0x95, 0x95, 0x7F, 0x82, 0xED, 0x20, 0x6D, 0x1E]}; +const IID IID_IUPnPDescriptionDocumentCallback = {0x77394C69, 0x5486, 0x40D6, [0x9B, 0xC3, 0x49, 0x91, 0x98, 0x3E, 0x02, 0xDA]}; +const IID IID_IUPnPDevice = {0x3D44D0D1, 0x98C9, 0x4889, [0xAC, 0xD1, 0xF9, 0xD6, 0x74, 0xBF, 0x22, 0x21]}; +const IID IID_IUPnPDeviceControl = {0x204810BA, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +const IID IID_IUPnPDeviceDocumentAccess = {0xE7772804, 0x3287, 0x418E, [0x90, 0x72, 0xCF, 0x2B, 0x47, 0x23, 0x89, 0x81]}; +const IID IID_IUPnPDeviceFinder = {0xADDA3D55, 0x6F72, 0x4319, [0xBF, 0xF9, 0x18, 0x60, 0x0A, 0x53, 0x9B, 0x10]}; +const IID IID_IUPnPDeviceFinderAddCallbackWithI = {0x983DFC0B, 0x1796, 0x44DF, [0x89, 0x75, 0xCA, 0x54, 0x5B, 0x62, 0x0E, 0xE5]}; +const IID IID_IUPnPDeviceFinderCallback = {0x415A984A, 0x88B3, 0x49F3, [0x92, 0xAF, 0x05, 0x08, 0xBE, 0xDF, 0x0D, 0x6C]}; +const IID IID_IUPnPDeviceHostICSSupport = {0x3FFC5AE5, 0xA66B, 0x499C, [0xA1, 0x80, 0xC7, 0x39, 0x3D, 0xB6, 0xBA, 0x8D]}; +const IID IID_IUPnPDeviceHostSetup = {0x6BD34909, 0x54E7, 0x4FBF, [0x85, 0x62, 0x7B, 0x89, 0x70, 0x9A, 0x58, 0x9A]}; +const IID IID_IUPnPDeviceProvider = {0x204810B8, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +const IID IID_IUPnPDevices = {0xFDBC0C73, 0xBDA3, 0x4C66, [0xAC, 0x4F, 0xF2, 0xD9, 0x6F, 0xDA, 0xD6, 0x8C]}; +const IID IID_IUPnPEventSink = {0x204810B4, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +const IID IID_IUPnPEventSource = {0x204810B5, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +const IID IID_IUPnPNAT = {0xB171C812, 0xCC76, 0x485A, [0x94, 0xD8, 0xB6, 0xB3, 0xA2, 0x79, 0x4E, 0x99]}; +const IID IID_IUPnPPrivateCallbackHelper = {0x8DCC8327, 0xDBE9, 0x48E6, [0x84, 0x6C, 0x33, 0x72, 0x58, 0x65, 0xD5, 0x0C]}; +const IID IID_IUPnPPrivateDocumentCallbackHelp = {0x19432A8E, 0x4A32, 0x4860, [0xB8, 0xFB, 0x95, 0xB1, 0x11, 0x7C, 0xD4, 0xE5]}; +const IID IID_IUPnPPrivateServiceHelper2 = {0x340F4076, 0x6856, 0x48F9, [0xB3, 0xC4, 0x97, 0xB9, 0x1B, 0x68, 0xD7, 0x7E]}; +const IID IID_IUPnPRegistrar = {0x204810B6, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +const IID IID_IUPnPReregistrar = {0x204810B7, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +const IID IID_IUPnPService = {0xA295019C, 0xDC65, 0x47DD, [0x90, 0xDC, 0x7F, 0xE9, 0x18, 0xA1, 0xAB, 0x44]}; +const IID IID_IUPnPServiceCallback = {0x31FADCA9, 0xAB73, 0x464B, [0xB6, 0x7D, 0x5C, 0x1D, 0x0F, 0x83, 0xC8, 0xB8]}; +const IID IID_IUPnPServiceCallbackPrivate = {0x24EA2515, 0xF612, 0x4528, [0xBA, 0x82, 0x7B, 0xD3, 0xDB, 0xBA, 0xD3, 0x03]}; +const IID IID_IUPnPServices = {0x3F8C8E9E, 0x9A7A, 0x4DC8, [0xBC, 0x41, 0xFF, 0x31, 0xFA, 0x37, 0x49, 0x56]}; +const IID IID_IUrlHistoryNotify = {0xBC40BEC1, 0xC493, 0x11D0, [0x83, 0x1B, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; +const IID IID_IUrlHistoryStg = {0x3C374A41, 0xBAE4, 0x11CF, [0xBF, 0x7D, 0x00, 0xAA, 0x00, 0x69, 0x46, 0xEE]}; +const IID IID_IUrlHistoryStg2 = {0xAFA0DC11, 0xC313, 0x11D0, [0x83, 0x1A, 0x00, 0xC0, 0x4F, 0xD5, 0xAE, 0x38]}; +const IID IID_IUrlMon = {0x00000026, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IURLSearchHook = {0xAC60F6A0, 0x0FD9, 0x11D0, [0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97]}; +const IID IID_IURLSearchHook2 = {0x5EE44DA4, 0x6D32, 0x46E3, [0x86, 0xBC, 0x07, 0x54, 0x0D, 0xED, 0xD0, 0xE0]}; +const IID IID_IUrlTrackingStg = {0xF2F8CBB3, 0xB040, 0x11D0, [0xBB, 0x16, 0x00, 0xC0, 0x4F, 0xB6, 0x6F, 0x63]}; +const IID IID_IUserEventTimer = {0x0F504B94, 0x6E42, 0x42E6, [0x99, 0xE0, 0xE2, 0x0F, 0xAF, 0xE5, 0x2A, 0xB4]}; +const IID IID_IUserEventTimerCallback = {0xE9EAD8E6, 0x2A25, 0x410E, [0x9B, 0x58, 0xA9, 0xFB, 0xEF, 0x1D, 0xD1, 0xA2]}; +const IID IID_IUserNotification = {0xBA9711BA, 0x5893, 0x4787, [0xA7, 0xE1, 0x41, 0x27, 0x71, 0x51, 0x55, 0x0B]}; +const IID IID_IUtilityButton = {0x3050F6AF, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID IID_IVariantChangeType = {0xA6EF9862, 0xC720, 0x11D0, [0x93, 0x37, 0x00, 0xA0, 0xC9, 0x0D, 0xCA, 0xA9]}; +const IID IID_IVersionHost = {0x667115AC, 0xDC02, 0x11D1, [0xBA, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; +const IID IID_IVersionVector = {0x4EB01410, 0xDB1A, 0x11D1, [0xBA, 0x53, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; +const IID IID_IViewChapter = {0x0C733A98, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IViewFilter = {0x0C733A9B, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IViewObject = {0x0000010D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IViewObject2 = {0x00000127, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IViewObjectEx = {0x3AF24292, 0x0C96, 0x11CE, [0xA0, 0xCF, 0x00, 0xAA, 0x00, 0x60, 0x0A, 0xB8]}; +const IID IID_IViewRowset = {0x0C733A97, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IViewSort = {0x0C733A9A, 0x2A1C, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID IID_IVirusScanEngine = {0x083DB180, 0xB4A8, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; +const IID IID_IVirusScanner = {0x4589BEE0, 0xB4B1, 0x11CF, [0xAA, 0xFA, 0x00, 0xAA, 0x00, 0xB6, 0x01, 0x5C]}; +const IID IID_IWaitMultiple = {0x0000002B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IWbemAddressResolution = {0xF7CE2E12, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID IID_IWbemBackupRestore = {0xC49E32C7, 0xBC8B, 0x11D2, [0x85, 0xD4, 0x00, 0x10, 0x5A, 0x1F, 0x83, 0x04]}; +const IID IID_IWbemBackupRestoreEx = {0xA359DEC5, 0xE813, 0x4834, [0x8A, 0x2A, 0xBA, 0x7F, 0x1D, 0x77, 0x7D, 0x76]}; +const IID IID_IWbemCallResult = {0x44ACA675, 0xE8FC, 0x11D0, [0xA0, 0x7C, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IWbemCallStatus = {0x4212DC47, 0x142E, 0x4C6C, [0xBC, 0x49, 0x6C, 0xA2, 0x32, 0xDD, 0x09, 0x59]}; +const IID IID_IWbemClassObject = {0xDC12A681, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; +const IID IID_IWbemClientConnectionTransport = {0xA889C72A, 0xFCC1, 0x4A9E, [0xAF, 0x61, 0xED, 0x07, 0x13, 0x33, 0xFB, 0x5B]}; +const IID IID_IWbemClientTransport = {0xF7CE2E11, 0x8C90, 0x11D1, [0x9E, 0x7B, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID IID_IWbemConfigure = {0x9A368276, 0x26CF, 0x11D0, [0xAD, 0x3C, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID IID_IWbemConfigureRefresher = {0x49353C92, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IWbemConnectorLogin = {0xD8EC9CB1, 0xB135, 0x4F10, [0x8B, 0x1B, 0xC7, 0x18, 0x8B, 0xB0, 0xD1, 0x86]}; +const IID IID_IWbemConstructClassObject = {0x9EF76194, 0x70D5, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID IID_IWbemContext = {0x44ACA674, 0xE8FC, 0x11D0, [0xA0, 0x7C, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IWbemDecoupledBasicEventProvider = {0x86336D20, 0xCA11, 0x4786, [0x9E, 0xF1, 0xBC, 0x8A, 0x94, 0x6B, 0x42, 0xFC]}; +const IID IID_IWbemDecoupledEventSink = {0xCD94EBF2, 0xE622, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; +const IID IID_IWbemDecoupledRegistrar = {0x1005CBCF, 0xE64F, 0x4646, [0xBC, 0xD3, 0x3A, 0x08, 0x9D, 0x8A, 0x84, 0xB4]}; +const IID IID_IWbemEventConsumerProvider = {0xE246107A, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID IID_IWbemEventConsumerProviderEx = {0x17CF534A, 0xD8A3, 0x4AD0, [0xAC, 0x92, 0x5E, 0x3D, 0x01, 0x71, 0x71, 0x51]}; +const IID IID_IWbemEventProvider = {0xE245105B, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID IID_IWbemEventProviderQuerySink = {0x580ACAF8, 0xFA1C, 0x11D0, [0xAD, 0x72, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID IID_IWbemEventProviderSecurity = {0x631F7D96, 0xD993, 0x11D2, [0xB3, 0x39, 0x00, 0x10, 0x5A, 0x1F, 0x4A, 0xAF]}; +const IID IID_IWbemEventSink = {0x3AE0080A, 0x7E3A, 0x4366, [0xBF, 0x89, 0x0F, 0xEE, 0xDC, 0x93, 0x16, 0x59]}; +const IID IID_IWbemHiPerfEnum = {0x2705C288, 0x79AE, 0x11D2, [0xB3, 0x48, 0x00, 0x10, 0x5A, 0x1F, 0x81, 0x77]}; +const IID IID_IWbemHiPerfProvider = {0x49353C93, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IWbemLevel1Login = {0xF309AD18, 0xD86A, 0x11D0, [0xA0, 0x75, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IWbemLocator = {0xDC12A687, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; +const IID IID_IWbemObjectAccess = {0x49353C9A, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IWbemObjectSink = {0x7C857801, 0x7381, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; +const IID IID_IWbemObjectTextSrc = {0xBFBF883A, 0xCAD7, 0x11D3, [0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; +const IID IID_IWbemPath = {0x3BC15AF2, 0x736C, 0x477E, [0x9E, 0x51, 0x23, 0x8A, 0xF8, 0x66, 0x7D, 0xCC]}; +const IID IID_IWbemPathKeyList = {0x9AE62877, 0x7544, 0x4BB0, [0xAA, 0x26, 0xA1, 0x38, 0x24, 0x65, 0x9E, 0xD6]}; +const IID IID_IWbemPropertyProvider = {0xCE61E841, 0x65BC, 0x11D0, [0xB6, 0xBD, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; +const IID IID_IWbemProviderIdentity = {0x631F7D97, 0xD993, 0x11D2, [0xB3, 0x39, 0x00, 0x10, 0x5A, 0x1F, 0x4A, 0xAF]}; +const IID IID_IWbemProviderInit = {0x1BE41572, 0x91DD, 0x11D1, [0xAE, 0xB2, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IWbemProviderInitSink = {0x1BE41571, 0x91DD, 0x11D1, [0xAE, 0xB2, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IWbemQualifierSet = {0xDC12A680, 0x737F, 0x11CF, [0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24]}; +const IID IID_IWbemQuery = {0x81166F58, 0xDD98, 0x11D3, [0xA1, 0x20, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; +const IID IID_IWbemRawSdAccessor = {0xC1E2D759, 0xCABD, 0x11D3, [0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; +const IID IID_IWbemRefresher = {0x49353C99, 0x516B, 0x11D1, [0xAE, 0xA6, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IWbemServices = {0x9556DC99, 0x828C, 0x11CF, [0xA3, 0x7E, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; +const IID IID_IWbemShutdown = {0xB7B31DF9, 0xD515, 0x11D3, [0xA1, 0x1C, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; +const IID IID_IWbemStatusCodeText = {0xEB87E1BC, 0x3233, 0x11D2, [0xAE, 0xC9, 0x00, 0xC0, 0x4F, 0xB6, 0x88, 0x20]}; +const IID IID_IWbemTransport = {0x553FE584, 0x2156, 0x11D0, [0xB6, 0xAE, 0x00, 0xAA, 0x00, 0x32, 0x40, 0xC7]}; +const IID IID_IWbemUnboundObjectSink = {0xE246107B, 0xB06E, 0x11D0, [0xAD, 0x61, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID IID_IWBScriptControl = {0xA5170870, 0x0CF8, 0x11D1, [0x8B, 0x91, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; +const IID IID_IWCContextMenuCallback = {0x97DEDE64, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IWCPropertySheetCallback = {0x97DEDE60, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IWCWizard97Callback = {0x97DEDE67, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IWCWizardCallback = {0x97DEDE62, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IWebBridge = {0xAE24FDAD, 0x03C6, 0x11D1, [0x8B, 0x76, 0x00, 0x80, 0xC7, 0x44, 0xF3, 0x89]}; +const IID IID_IWebBrowser = {0xEAB22AC1, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; +const IID IID_IWebBrowser2 = {0xD30C1661, 0xCDAF, 0x11D0, [0x8A, 0x3E, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0x6E]}; +const IID IID_IWebBrowserApp = {0x0002DF05, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID IID_IWebWizardExtension = {0x0E6B3F66, 0x98D1, 0x48C0, [0xA2, 0x22, 0xFB, 0xDE, 0x74, 0xE2, 0xFB, 0xC5]}; +const IID IID_IWebWizardHost = {0x18BCC359, 0x4990, 0x4BFB, [0xB9, 0x51, 0x3C, 0x83, 0x70, 0x2B, 0xE5, 0xF9]}; +const IID IID_IWEExtendContextMenu = {0x97DEDE65, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IWEExtendPropertySheet = {0x97DEDE61, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IWEExtendWizard = {0x97DEDE63, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IWEExtendWizard97 = {0x97DEDE68, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_IWEInvokeCommand = {0x97DEDE66, 0xFC6B, 0x11CF, [0xB5, 0xF5, 0x00, 0xA0, 0xC9, 0x0A, 0xB5, 0x05]}; +const IID IID_Iwfolders = {0xBAE31F98, 0x1B81, 0x11D2, [0xA9, 0x7A, 0x00, 0xC0, 0x4F, 0x8E, 0xCB, 0x02]}; +const IID IID_IWindowForBindingUI = {0x79EAC9D5, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IWinInetHttpInfo = {0x79EAC9D8, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IWinInetInfo = {0x79EAC9D6, 0xBAFA, 0x11CE, [0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B]}; +const IID IID_IWizardExtension = {0xC02EA696, 0x86CC, 0x491E, [0x9B, 0x23, 0x74, 0x39, 0x4A, 0x04, 0x44, 0xA8]}; +const IID IID_IWizardSite = {0x88960F5B, 0x422F, 0x4E7B, [0x80, 0x13, 0x73, 0x41, 0x53, 0x81, 0xC3, 0xC3]}; +const IID IID_IWMIExtension = {0xADC1F06E, 0x5C7E, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; +const IID IID_IWordBreaker = {0xD53552C8, 0x77E3, 0x101A, [0xB5, 0x52, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; +const IID IID_IWordSink = {0xCC907054, 0xC058, 0x101A, [0xB5, 0x54, 0x08, 0x00, 0x2B, 0x33, 0xB0, 0xE6]}; +const IID IID_IWrappedProtocol = {0x53C84785, 0x8425, 0x4DC5, [0x97, 0x1B, 0xE5, 0x8D, 0x9C, 0x19, 0xF9, 0xB6]}; +const IID IID_IXMLAttribute = {0xD4D4A0FC, 0x3B73, 0x11D1, [0xB2, 0xB4, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0x96]}; +const IID IID_IXMLDocument = {0xF52E2B61, 0x18A1, 0x11D1, [0xB1, 0x05, 0x00, 0x80, 0x5F, 0x49, 0x91, 0x6B]}; +const IID IID_IXMLDocument2 = {0x2B8DE2FE, 0x8D2D, 0x11D1, [0xB2, 0xFC, 0x00, 0xC0, 0x4F, 0xD9, 0x15, 0xA9]}; +const IID IID_IXMLDOMAttribute = {0x2933BF85, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMCDATASection = {0x2933BF8A, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMCharacterData = {0x2933BF84, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMComment = {0x2933BF88, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMDocument = {0x2933BF81, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMDocumentFragment = {0x3EFAA413, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; +const IID IID_IXMLDOMDocumentType = {0x2933BF8B, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMElement = {0x2933BF86, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMEntity = {0x2933BF8D, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMEntityReference = {0x2933BF8E, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMImplementation = {0x2933BF8F, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMNamedNodeMap = {0x2933BF83, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMNode = {0x2933BF80, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMNodeList = {0x2933BF82, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMNotation = {0x2933BF8C, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMParseError = {0x3EFAA426, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; +const IID IID_IXMLDOMProcessingInstruction = {0x2933BF89, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDOMText = {0x2933BF87, 0x7B36, 0x11D2, [0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60]}; +const IID IID_IXMLDSOControl = {0x310AFA62, 0x0575, 0x11D2, [0x9C, 0xA9, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +const IID IID_IXMLElement = {0x3F7F31AC, 0xE15F, 0x11D0, [0x9C, 0x25, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; +const IID IID_IXMLElement2 = {0x2B8DE2FF, 0x8D2D, 0x11D1, [0xB2, 0xFC, 0x00, 0xC0, 0x4F, 0xD9, 0x15, 0xA9]}; +const IID IID_IXMLElementCollection = {0x65725580, 0x9B5D, 0x11D0, [0x9B, 0xFE, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; +const IID IID_IXMLError = {0x948C5AD3, 0xC58D, 0x11D0, [0x9C, 0x0B, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; +const IID IID_IXMLGenericParse = {0xE4E23071, 0x4D07, 0x11D2, [0xAE, 0x76, 0x00, 0x80, 0xC7, 0x3B, 0xC1, 0x99]}; +const IID IID_IXMLHttpRequest = {0xED8C108D, 0x4349, 0x11D2, [0x91, 0xA4, 0x00, 0xC0, 0x4F, 0x79, 0x69, 0xE8]}; +const IID IID_IXMLNodeFactory = {0xD242361F, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +const IID IID_IXMLNodeSource = {0xD242361D, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +const IID IID_IXMLParser = {0xD242361E, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +const IID IID_IXTLRuntime = {0x3EFAA425, 0x272F, 0x11D2, [0x83, 0x6F, 0x00, 0x00, 0xF8, 0x7A, 0x77, 0x82]}; +const IID IID_StdOle = {0x00020430, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID KSDATAFORMAT_SUBTYPE_DIRECTMUSIC = {0x1A82F8BC, 0x3F8B, 0x11D2, [0xB7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1]}; +const IID KSDATAFORMAT_SUBTYPE_MIDI = {0x1D262760, 0xE957, 0x11CF, [0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00]}; +const IID LIBID_Accessibility = {0x1EA4DBF0, 0x3C3B, 0x11CF, [0x81, 0x0C, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71]}; +const IID LIBID_ActiveIMM = {0x4955DD30, 0xB159, 0x11D0, [0x8F, 0xCF, 0x00, 0xAA, 0x00, 0x6B, 0xCC, 0x59]}; +const IID LIBID_ADs = {0x97D25DB0, 0x0363, 0x11CF, [0xAB, 0xC4, 0x02, 0x60, 0x8C, 0x9E, 0x75, 0x53]}; +const IID LIBID_ALGLib = {0xB6D1D098, 0xE235, 0x4B99, [0xBA, 0x98, 0x7C, 0x62, 0x4F, 0xD8, 0x75, 0xDB]}; +const IID LIBID_AutoDiscovery = {0x4EAFB888, 0x81CB, 0x4EBA, [0xBA, 0xC9, 0xDA, 0x25, 0x4E, 0x57, 0x21, 0xF1]}; +const IID LIBID_BackgroundCopyManager = {0x1DEEB74F, 0x7915, 0x4560, [0xB5, 0x58, 0x91, 0x8C, 0x83, 0xF1, 0x76, 0xA6]}; +const IID LIBID_BackgroundCopyManager1_5 = {0xEA9319EA, 0xC628, 0x480F, [0x83, 0x31, 0x76, 0x8F, 0xAC, 0x39, 0x7E, 0x4E]}; +const IID LIBID_BackgroundCopyQMgr = {0xF5B26DCB, 0xB37E, 0x4D7C, [0xAE, 0x7A, 0x1C, 0xB3, 0xFB, 0xEB, 0x18, 0x3E]}; +const IID LIBID_CHANNELMGR = {0x4804F2E0, 0xD16E, 0x11D0, [0x80, 0x2B, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13]}; +const IID LIBID_CLADMWIZLib = {0x24F97140, 0x6689, 0x11D1, [0x9A, 0xA7, 0x00, 0xC0, 0x4F, 0xB9, 0x3A, 0x80]}; +const IID LIBID_ClusCfgWizard = {0x6D01FEDC, 0x8D34, 0x4728, [0xAD, 0x0B, 0xB3, 0xA2, 0x1A, 0x10, 0x3B, 0x42]}; +const IID LIBID_CommonControlObjects = {0xBCADA15B, 0xB428, 0x420C, [0x8D, 0x28, 0x02, 0x35, 0x90, 0x92, 0x4C, 0x9F]}; +const IID LIBID_DirectAnimation = {0xBCBB1F74, 0xE384, 0x11D0, [0x9B, 0x99, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x1D]}; +const IID LIBID_DWbemServices_v3 = {0xCB7CA031, 0xF729, 0x11D0, [0x9E, 0x4D, 0x00, 0xC0, 0x4F, 0xC3, 0x24, 0xA8]}; +const IID LIBID_DXTMSFTLib = {0x5E77EB03, 0x937C, 0x11D1, [0xB0, 0x47, 0x00, 0xAA, 0x00, 0x3B, 0x60, 0x61]}; +const IID LIBID_DXTRANSLib = {0x54314D1D, 0x35FE, 0x11D1, [0x81, 0xA1, 0x00, 0x00, 0xF8, 0x75, 0x57, 0xDB]}; +const IID LIBID_DXTRANSPLib = {0x527A4DA4, 0x7F2C, 0x11D2, [0xB1, 0x2D, 0x00, 0x00, 0xF8, 0x1F, 0x59, 0x95]}; +const IID LIBID_EventQLib = {0xA70080F2, 0x403B, 0x11D1, [0x88, 0x36, 0x00, 0xA0, 0xC9, 0x49, 0xAC, 0x67]}; +const IID LIBID_IASPolicyLib = {0x6BC096A5, 0x0CE6, 0x11D1, [0xBA, 0xAE, 0x00, 0xC0, 0x4F, 0xC2, 0xE2, 0x0D]}; +const IID LIBID_IEXTagLib = {0x7E8BC440, 0xAEFF, 0x11D1, [0x89, 0xC2, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4]}; +const IID LIBID_IMAPILib = {0xC49F2184, 0x50A7, 0x11D3, [0x91, 0x44, 0x00, 0x10, 0x4B, 0xA1, 0x1C, 0x5E]}; +const IID LIBID_ImgUtilLib = {0xCF790840, 0x2DC4, 0x11D0, [0xB7, 0x24, 0x00, 0xAA, 0x00, 0x6C, 0x1A, 0x01]}; +const IID LIBID_ITRKADMNLib = {0xA2531F35, 0xC67D, 0x11D0, [0x8C, 0xB1, 0x00, 0xC0, 0x4F, 0xD9, 0x0F, 0x85]}; +const IID LIBID_McastLib = {0x64217CC0, 0xA285, 0x11D1, [0x86, 0x97, 0x00, 0x60, 0x08, 0xB0, 0xE5, 0xD2]}; +const IID LIBID_MSHTML = {0x3050F1C5, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID LIBID_MSHTMLINTERNAL = {0x3050F7E1, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID LIBID_MSTIME = {0x87C96271, 0xADDB, 0x4745, [0xB2, 0xE8, 0xDF, 0x88, 0xA8, 0x47, 0x2F, 0xD1]}; +const IID LIBID_MSXML = {0xD63E0CE2, 0xA0A2, 0x11D0, [0x9C, 0x02, 0x00, 0xC0, 0x4F, 0xC9, 0x9C, 0x8E]}; +const IID LIBID_MultiLanguage = {0x275C23E0, 0x3747, 0x11D0, [0x9F, 0xEA, 0x00, 0xAA, 0x00, 0x3F, 0x86, 0x46]}; +const IID LIBID_NATUPNPLib = {0x1C565858, 0xF302, 0x471E, [0xB4, 0x09, 0xF1, 0x80, 0xAA, 0x4A, 0xBE, 0xC6]}; +const IID LIBID_NETCONLib = {0x43E734CA, 0x043D, 0x4A70, [0x9A, 0x2C, 0xA8, 0xF2, 0x54, 0x06, 0x3D, 0x91]}; +const IID LIBID_PassiveSink = {0xE002EEEF, 0xE6EA, 0x11D2, [0x9C, 0xB3, 0x00, 0x10, 0x5A, 0x1F, 0x48, 0x01]}; +const IID LIBID_ProcessDebugManagerLib = {0x78A51821, 0x51F4, 0x11D0, [0x8F, 0x20, 0x00, 0x80, 0x5F, 0x2C, 0xD0, 0x64]}; +const IID LIBID_RENDLib = {0xF1029E4D, 0xCB5B, 0x11D0, [0x8D, 0x59, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID LIBID_RTCCORELib = {0xCD260094, 0xDE10, 0x4AEE, [0xAC, 0x73, 0xEF, 0x87, 0xF6, 0xE1, 0x26, 0x83]}; +const IID LIBID_SDOIASLib = {0x81DDF732, 0x4AA8, 0x4A35, [0xBD, 0xFF, 0x8B, 0x42, 0xEF, 0xE7, 0xC6, 0x24]}; +const IID LIBID_SDPBLBLib = {0xC259D79A, 0xC8AB, 0x11D0, [0x8D, 0x58, 0x00, 0xC0, 0x4F, 0xD9, 0x1A, 0xC0]}; +const IID LIBID_SensEvents = {0xD597DEED, 0x5B9F, 0x11D1, [0x8D, 0xD2, 0x00, 0xAA, 0x00, 0x4A, 0xBD, 0x5E]}; +const IID LIBID_SHDocVw = {0xEAB22AC0, 0x30C1, 0x11CF, [0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B]}; +const IID LIBID_Shell32 = {0x50A7E9B0, 0x70EF, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +const IID LIBID_ShellImageData = {0x0B8AFF06, 0x8DF0, 0x4F13, [0x8E, 0x25, 0x25, 0xB2, 0x31, 0x9C, 0x43, 0x6A]}; +const IID LIBID_ShellObjects = {0x50A7E9B1, 0x70EF, 0x11D1, [0xB7, 0x5A, 0x00, 0xA0, 0xC9, 0x05, 0x64, 0xFE]}; +const IID LIBID_SHGINALib = {0x0A055C02, 0xBABE, 0x4480, [0xBB, 0x7B, 0xA8, 0xEC, 0x72, 0x3C, 0xE9, 0xC0]}; +const IID LIBID_SubscriptionMgr = {0xC54FD88A, 0xFFA1, 0x11D0, [0xBC, 0x5E, 0x00, 0xC0, 0x4F, 0xD9, 0x29, 0xDB]}; +const IID LIBID_TAPI3Lib = {0x21D6D480, 0xA88B, 0x11D0, [0x83, 0xDD, 0x00, 0xAA, 0x00, 0x3C, 0xCA, 0xBD]}; +const IID LIBID_TERMMGRLib = {0x28DCD85B, 0xACA4, 0x11D0, [0xA0, 0x28, 0x00, 0xAA, 0x00, 0xB6, 0x05, 0xA4]}; +const IID LIBID_UPnPHostLib = {0x204810B3, 0x73B2, 0x11D4, [0xBF, 0x42, 0x00, 0xB0, 0xD0, 0x11, 0x8B, 0x56]}; +const IID LIBID_UPNPLib = {0xDB3442A7, 0xA2E9, 0x4A59, [0x9C, 0xB5, 0xF5, 0xC1, 0xA5, 0xD9, 0x01, 0xE5]}; +const IID LIBID_VIRUSSCAN = {0x5F47DB70, 0xD9FE, 0x11D0, [0x95, 0x64, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F]}; +const IID LIBID_WbemClient_v1 = {0x7EC196FE, 0x7005, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID LIBID_WbemProviders_v1 = {0x092DF710, 0x7010, 0x11D1, [0xAD, 0x90, 0x00, 0xC0, 0x4F, 0xD8, 0xFD, 0xFF]}; +const IID LIBID_WbemScripting = {0x565783C6, 0xCB41, 0x11D1, [0x8B, 0x02, 0x00, 0x60, 0x08, 0x06, 0xD9, 0xB6]}; +const IID LIBID_WbemTransports_v1 = {0x027947F3, 0xD731, 0x11CE, [0xA3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]}; +const IID LIBID_WbemUtilities_v1 = {0x226C9290, 0xDD96, 0x11D3, [0xA1, 0x20, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A]}; +const IID LIBID_WebCheck = {0x10BD2E25, 0xF235, 0x11CF, [0xB5, 0xDD, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xEC]}; +const IID LIBID_WMIEXTENSIONLib = {0xE503D000, 0x5C7F, 0x11D2, [0x8B, 0x74, 0x00, 0x10, 0x4B, 0x2A, 0xFB, 0x41]}; +const IID LIBID_XENROLLLib = {0x43F8F27B, 0x7A20, 0x11D0, [0x8F, 0x06, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xE1]}; +const IID LIBID_XMLPSR = {0xD242361C, 0x51A0, 0x11D2, [0x9C, 0xAF, 0x00, 0x60, 0xB0, 0xEC, 0x3D, 0x39]}; +const IID MDGUID_MDX = {0xA07CCCD0, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +const IID MDSCHEMA_ACTIONS = {0xA07CCD08, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +const IID MDSCHEMA_COMMANDS = {0xA07CCD09, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +const IID MDSCHEMA_CUBES = {0xC8B522D8, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID MDSCHEMA_DIMENSIONS = {0xC8B522D9, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID MDSCHEMA_FUNCTIONS = {0xA07CCD07, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +const IID MDSCHEMA_HIERARCHIES = {0xC8B522DA, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID MDSCHEMA_LEVELS = {0xC8B522DB, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID MDSCHEMA_MEASURES = {0xC8B522DC, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID MDSCHEMA_MEMBERS = {0xC8B522DE, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID MDSCHEMA_PROPERTIES = {0xC8B522DD, 0x5CF3, 0x11CE, [0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D]}; +const IID MDSCHEMA_SETS = {0xA07CCD0B, 0x8148, 0x11D0, [0x87, 0xBB, 0x00, 0xC0, 0x4F, 0xC3, 0x39, 0x42]}; +const IID NAMEDTIMER_DRAW = {0x3050F362, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID NOTFCOOKIE_SCHEDULE_GROUP_DAILY = {0xD34F18B0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTFCOOKIE_SCHEDULE_GROUP_MANUAL = {0xD34F18B3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTFCOOKIE_SCHEDULE_GROUP_MONTHLY = {0xD34F18B2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTFCOOKIE_SCHEDULE_GROUP_WEEKLY = {0xD34F18B1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_11 = {0xD34F17FB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_12 = {0xD34F17FC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_13 = {0xD34F17FD, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_14 = {0xD34F17FE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_15 = {0xD34F17FF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_AGENT_INIT = {0x1E4A7390, 0xC70B, 0x11D0, [0x95, 0xF8, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xEC]}; +const IID NOTIFICATIONTYPE_AGENT_START = {0xD34F17EC, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_ALERT = {0xD34F17E3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_ANOUNCMENT = {0xD34F17E1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_BEGIN_REPORT = {0xD34F17EE, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_CONFIG_CHANGED = {0xD34F17F2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_CONNECT_TO_INTERNET = {0xD34F17F0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_d = {0xD34F17F8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_DISCONNECT_FROM_INTE = {0xD34F17F1, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_e = {0xD34F17F9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_END_REPORT = {0xD34F17EF, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_f = {0xD34F17FA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_GROUP_DONE = {0xD34F1885, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_GROUP_RESTART = {0xD34F1884, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_GROUP_START = {0xD34F1883, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_i6 = {0xD34F1886, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_i7 = {0xD34F1887, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_i8 = {0xD34F1888, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_i9 = {0xD34F1889, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_iA = {0xD34F188A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_iB = {0xD34F188B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_iC = {0xD34F188C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_iD = {0xD34F188D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_iE = {0xD34F188E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_iF = {0xD34F188F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_INET_IDLE = {0xD34F17E4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_INET_OFFLINE = {0xD34F17E5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_INET_ONLINE = {0xD34F17E6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_ITEM_DONE = {0xD34F1882, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_ITEM_RESTART = {0xD34F1881, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_ITEM_START = {0xD34F1880, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_NULL = {0xD34F17E0, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_PROGRESS_REPORT = {0xD34F17F3, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_0 = {0xD34F1800, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_1 = {0xD34F1801, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_2 = {0xD34F1802, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_3 = {0xD34F1803, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_4 = {0xD34F1804, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_5 = {0xD34F1805, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_6 = {0xD34F1806, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_7 = {0xD34F1807, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_8 = {0xD34F1808, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_9 = {0xD34F1809, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_A = {0xD34F180A, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_B = {0xD34F180B, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_C = {0xD34F180C, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_D = {0xD34F180D, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_E = {0xD34F180E, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_START_F = {0xD34F180F, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_TASK = {0xD34F17E2, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_TASKS_ABORT = {0xD34F17E9, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_TASKS_COMPLETED = {0xD34F17EA, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_TASKS_ERROR = {0xD34F17F7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_TASKS_PROGRESS = {0xD34F17EB, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_TASKS_RESUME = {0xD34F17E8, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_TASKS_STARTED = {0xD34F17F6, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_TASKS_SUSPEND = {0xD34F17E7, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_USER_IDLE_BEGIN = {0xD34F17F4, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID NOTIFICATIONTYPE_USER_IDLE_END = {0xD34F17F5, 0x576E, 0x11D0, [0xB2, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0xCD, 0x22]}; +const IID OLE_DATAPATH_ALLIMAGE = {0x0002DE0E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_ALLMM = {0x0002DE18, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_ALLTEXT = {0x0002DE1E, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_ANSITEXT = {0x0002DE19, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_AVI = {0x0002DE0F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_BASICAUDIO = {0x0002DE12, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_BIFF = {0x0002DE21, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_BMP = {0x0002DE01, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_CGM = {0x0002DE0B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_COMMONIMAGE = {0x0002DE0D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_DIB = {0x0002DE02, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_DIF = {0x0002DE1F, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_ENHMF = {0x0002DE04, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_EPS = {0x0002DE0C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_GIF = {0x0002DE05, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_HTML = {0x0002DE1C, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_JPEG = {0x0002DE06, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_MIDI = {0x0002DE13, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_MPEG = {0x0002DE10, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_PALETTE = {0x0002DE22, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_PCX = {0x0002DE09, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_PENDATA = {0x0002DE23, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_PICT = {0x0002DE0A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_POSTSCRIPT = {0x0002DE1D, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_QUICKTIME = {0x0002DE11, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_RIFF = {0x0002DE15, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_RTF = {0x0002DE1B, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_SOUND = {0x0002DE16, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_SYLK = {0x0002DE20, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_TIFF = {0x0002DE07, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_UNICODE = {0x0002DE1A, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_VIDEO = {0x0002DE17, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_WAV = {0x0002DE14, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_WMF = {0x0002DE03, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLE_DATAPATH_XBM = {0x0002DE08, 0x0000, 0x0000, [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46]}; +const IID OLEDB_SVC_DSLPropertyPages = {0x51740C02, 0x7E8E, 0x11D2, [0xA0, 0x2D, 0x00, 0xC0, 0x4F, 0xA3, 0x73, 0x48]}; +const IID PSGUID_QUERY = {0x49691C90, 0x7E17, 0x101A, [0xA9, 0x1C, 0x08, 0x00, 0x2B, 0x2E, 0xCD, 0xA9]}; +const IID RESCLASSTYPE_IPAddress = {0x57A80E0F, 0x6F18, 0x458B, [0xA7, 0x2A, 0xD1, 0x17, 0x0C, 0x47, 0x93, 0x90]}; +const IID RESCLASSTYPE_NetworkName = {0xBBA69EB9, 0xF5D0, 0x487B, [0x92, 0xAE, 0x1B, 0xA1, 0x0F, 0x39, 0x21, 0x58]}; +const IID RESCLASSTYPE_StorageDevice = {0x12453A47, 0x8C5E, 0x4837, [0xBA, 0xC6, 0xB2, 0x54, 0xB8, 0xF2, 0x64, 0xCC]}; +const IID RESTYPE_ClusterIPAddress = {0xE50DF832, 0x477C, 0x440C, [0xB7, 0xA3, 0x38, 0x23, 0xA6, 0xEF, 0x6C, 0xCB]}; +const IID RESTYPE_ClusterNetName = {0xB2897CCF, 0x8D2C, 0x4BC1, [0xB4, 0x96, 0x6E, 0x2B, 0xC7, 0xA0, 0xBB, 0x38]}; +const IID RESTYPE_ClusterQuorumDisk = {0xD9DDFB80, 0x0BDC, 0x40D4, [0xB3, 0x96, 0x1A, 0xFD, 0x77, 0xDD, 0xD1, 0x9C]}; +const IID RESTYPE_GenericScript = {0xF372184D, 0xDFDB, 0x4370, [0xA0, 0x05, 0xE1, 0xEF, 0x30, 0x1B, 0x23, 0xA4]}; +const IID RESTYPE_IPAddress = {0xE61ADE71, 0xC79A, 0x4FDA, [0xB1, 0xDB, 0xA9, 0xB8, 0xD2, 0x0C, 0x8B, 0x14]}; +const IID RESTYPE_LocalQuorum = {0xF004656D, 0x5B48, 0x4580, [0xA1, 0xF4, 0xC3, 0xEC, 0x14, 0x98, 0x3D, 0x1E]}; +const IID RESTYPE_MajorityNodeSet = {0x56BFAE11, 0xD2F7, 0x4F4F, [0x99, 0x52, 0x55, 0xAF, 0x19, 0xBA, 0xC3, 0xE9]}; +const IID RESTYPE_NetworkName = {0xC1D2FE1E, 0xD332, 0x445F, [0x8D, 0xA1, 0x12, 0xE5, 0xE2, 0xD3, 0x7C, 0xBF]}; +const IID RESTYPE_PhysicalDisk = {0xCC558763, 0x3386, 0x42EF, [0xB1, 0x50, 0xBE, 0x79, 0x33, 0x44, 0xD4, 0x5F]}; +const IID SID_CtxQueryAssociations = {0xFAADFC40, 0xB777, 0x4B69, [0xAA, 0x81, 0x77, 0x03, 0x5E, 0xF0, 0xE6, 0xE8]}; +const IID SID_SContainerDispatch = {0xB722BE00, 0x4E68, 0x101B, [0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70]}; +const IID SID_SDataPathBrowser = {0xFC4801A5, 0x2BA9, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; +const IID SID_SGetViewFromViewDual = {0x889A935D, 0x971E, 0x4B12, [0xB9, 0x0C, 0x24, 0xDF, 0xC9, 0xE1, 0xE5, 0xE8]}; +const IID SID_SHTMLEditServices = {0x3050F7F9, 0x98B5, 0x11CF, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B]}; +const IID SID_STopLevelBrowser = {0x4C96BE40, 0x915C, 0x11CF, [0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37]}; +const IID SID_STopWindow = {0x49E1B500, 0x4636, 0x11D3, [0x97, 0xF7, 0x00, 0xC0, 0x4F, 0x45, 0xD0, 0xB3]}; +const IID SID_SVersionHost = {0x371EA634, 0xDC5C, 0x11D1, [0xBA, 0x57, 0x00, 0xC0, 0x4F, 0xC2, 0x04, 0x0E]}; +const IID TAPIMEDIATYPE_Audio = {0x028ED8C2, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID TAPIMEDIATYPE_DataModem = {0x028ED8C6, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID TAPIMEDIATYPE_G3Fax = {0x028ED8C7, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID TAPIMEDIATYPE_Video = {0x028ED8C4, 0xDC7A, 0x11D0, [0x8E, 0xD3, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID TAPIPROTOCOL_H323 = {0x831CE2D7, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID TAPIPROTOCOL_Multicast = {0x831CE2D8, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID TAPIPROTOCOL_PSTN = {0x831CE2D6, 0x83B5, 0x11D1, [0xBB, 0x5C, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; +const IID TASK_AnalyzeCluster = {0x3140B5A6, 0x9AFA, 0x4588, [0x8C, 0xA0, 0x9B, 0xE8, 0xF8, 0xB6, 0x15, 0x06]}; +const IID TASK_CommitClusterChanges = {0x2D03030B, 0xF084, 0x4807, [0xBB, 0xAC, 0x94, 0x26, 0x9E, 0x50, 0xB5, 0x6F]}; +const IID TASKID_Major_Check_Cluster_Feasibili = {0xEBC8AEFF, 0x10C3, 0x4D5B, [0xAC, 0x17, 0xFC, 0x0F, 0x4C, 0x38, 0x71, 0xB7]}; +const IID TASKID_Major_Check_Node_Feasibility = {0xCC5E57B1, 0x4520, 0x4672, [0xB4, 0xBA, 0xA2, 0x88, 0xEC, 0x42, 0x94, 0x6E]}; +const IID TASKID_Major_Checking_For_Existing_Cl = {0xB8453B8F, 0x92FD, 0x4350, [0xA6, 0xD9, 0x55, 0x1F, 0xD0, 0x18, 0xB7, 0x91]}; +const IID TASKID_Major_Client_And_Server_Log = {0xCD36919C, 0x9F31, 0x46B4, [0xA2, 0x9D, 0xAC, 0x87, 0xF4, 0xE6, 0xCC, 0x93]}; +const IID TASKID_Major_Client_Log = {0x64ECA0EA, 0x9CB6, 0x4324, [0x97, 0x02, 0xDF, 0x15, 0xC6, 0x96, 0xC3, 0x0A]}; +const IID TASKID_Major_Configure_Cluster_Servic = {0x7C5F0774, 0x1611, 0x42B5, [0xAF, 0x3C, 0x6E, 0x12, 0x4A, 0xC4, 0xD3, 0x6B]}; +const IID TASKID_Major_Configure_Resource_Type = {0x6D47AF1F, 0x7F17, 0x4B80, [0x8F, 0xAB, 0x3A, 0x2D, 0x19, 0xB1, 0x23, 0x3D]}; +const IID TASKID_Major_Configure_Resources = {0x411BCDEC, 0x69D3, 0x4485, [0x8D, 0x5D, 0xE1, 0x9E, 0xE7, 0x7A, 0x6D, 0xD4]}; +const IID TASKID_Major_Establish_Connection = {0x93C32F99, 0x39CA, 0x4D38, [0x9D, 0x7F, 0x27, 0x07, 0xCA, 0x0E, 0xAF, 0x46]}; +const IID TASKID_Major_Find_Devices = {0x036BF567, 0x2377, 0x4BB3, [0x8A, 0xE1, 0xE4, 0x10, 0x4E, 0x2E, 0xB3, 0xC5]}; +const IID TASKID_Major_Reanalyze = {0xE25968DA, 0x9C7B, 0x42DB, [0xAD, 0xA9, 0xBC, 0x4E, 0x34, 0xF1, 0x7E, 0x6E]}; +const IID TASKID_Major_Server_Log = {0x05AA0768, 0x5F49, 0x49CD, [0xAF, 0xDC, 0x96, 0xF9, 0xD5, 0x18, 0x02, 0xD4]}; +const IID TASKID_Minor_Update_Progress = {0x2362D3DA, 0xA6A4, 0x4551, [0xB8, 0x46, 0x7B, 0xB3, 0xA1, 0x36, 0x5F, 0x56]}; +const IID TID_D3DRMAnimation = {0x3D82AB4F, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMAnimationKey = {0x10DD46A8, 0x775B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMAnimationOptions = {0xE2BF56C0, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMAnimationSet = {0x3D82AB50, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMAppData = {0xE5745280, 0xB24F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; +const IID TID_D3DRMBoolean = {0x537DA6A0, 0xCA37, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; +const IID TID_D3DRMBoolean2d = {0x4885AE63, 0x78E8, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMCamera = {0x3D82AB51, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMColorRGB = {0xD3E16E81, 0x7835, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMColorRGBA = {0x35FF44E0, 0x6C7C, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMCoords2d = {0xF6F23F44, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMExternalVisual = {0x98116AA0, 0xBDBA, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; +const IID TID_D3DRMFloatKeys = {0x10DD46A9, 0x775B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMFrame = {0x3D82AB46, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMFramePosition = {0xE2BF56C1, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMFrameRotation = {0xE2BF56C3, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMFrameTransformMatrix = {0xF6F23F41, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMFrameVelocity = {0xE2BF56C2, 0x840F, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMGuid = {0xA42790E0, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMIndexedColor = {0x1630B820, 0x7842, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMInfo = {0x2B957100, 0x9E9A, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMInlineData = {0x3A23EEA0, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMLight = {0x3D82AB4A, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMLightAttenuation = {0xA8A98BA0, 0xC5E5, 0x11CF, [0xB9, 0x41, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; +const IID TID_D3DRMLightPenumbra = {0xAED22741, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; +const IID TID_D3DRMLightRange = {0xAED22742, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; +const IID TID_D3DRMLightUmbra = {0xAED22740, 0xB31F, 0x11CF, [0x9D, 0xD5, 0x00, 0xAA, 0x00, 0xA7, 0x1A, 0x2F]}; +const IID TID_D3DRMMaterial = {0x3D82AB4D, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMMaterialAmbientColor = {0x01411840, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMaterialArray = {0x35FF44E1, 0x6C7C, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMaterialDiffuseColor = {0x01411841, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMaterialEmissiveColor = {0xD3E16E80, 0x7835, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMaterialPower = {0x01411843, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMaterialSpecularColor = {0x01411842, 0x7786, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMaterialWrap = {0x4885AE60, 0x78E8, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMatrix4x4 = {0xF6F23F45, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMesh = {0x3D82AB44, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMMeshFace = {0x3D82AB5F, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMMeshFaceWraps = {0xED1EC5C0, 0xC0A8, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; +const IID TID_D3DRMMeshMaterialList = {0xF6F23F42, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMeshNormals = {0xF6F23F43, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMeshTextureCoords = {0xF6F23F40, 0x7686, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMMeshVertexColors = {0x1630B821, 0x7842, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMProgressiveMesh = {0x8A63C360, 0x997D, 0x11D0, [0x94, 0x1C, 0x00, 0x80, 0xC8, 0x0C, 0xFA, 0x7B]}; +const IID TID_D3DRMPropertyBag = {0x7F0F21E1, 0xBFE1, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; +const IID TID_D3DRMRightHanded = {0x7F5D5EA0, 0xD53A, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; +const IID TID_D3DRMStringProperty = {0x7F0F21E0, 0xBFE1, 0x11D1, [0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71]}; +const IID TID_D3DRMTextureFilename = {0xA42790E1, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMTextureReference = {0xA42790E2, 0x7810, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMTimedFloatKeys = {0xF406B180, 0x7B3B, 0x11CF, [0x8F, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xA3]}; +const IID TID_D3DRMUrl = {0x3A23EEA1, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_D3DRMVector = {0x3D82AB5E, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID TID_DXFILEHeader = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; } From 74502c75d6b2f64841f83c537a1f324896b28b97 Mon Sep 17 00:00:00 2001 From: Jacob Carlborg Date: Sat, 2 Jan 2016 15:26:32 +0100 Subject: [PATCH 327/768] Add support for native TLS on OS X --- mak/SRCS | 3 +- posix.mak | 6 + src/rt/osx_tls.c | 51 +++++ src/rt/sections.d | 9 +- src/rt/{sections_osx.d => sections_osx_x86.d} | 31 +-- src/rt/sections_osx_x86_64.d | 185 ++++++++++++++++++ 6 files changed, 260 insertions(+), 25 deletions(-) create mode 100644 src/rt/osx_tls.c rename src/rt/{sections_osx.d => sections_osx_x86.d} (89%) create mode 100644 src/rt/sections_osx_x86_64.d diff --git a/mak/SRCS b/mak/SRCS index 2080323cb6..d1a9ba9725 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -280,7 +280,8 @@ SRCS=\ src\rt\sections.d \ src\rt\sections_android.d \ src\rt\sections_elf_shared.d \ - src\rt\sections_osx.d \ + src\rt\sections_osx_x86.d \ + src\rt\sections_osx_x86_64.d \ src\rt\sections_solaris.d \ src\rt\sections_win32.d \ src\rt\sections_win64.d \ diff --git a/posix.mak b/posix.mak index 91c30606ba..e5d645bcd6 100644 --- a/posix.mak +++ b/posix.mak @@ -90,6 +90,12 @@ SRCS:=$(subst \,/,$(SRCS)) OBJS= $(ROOT)/errno_c.o $(ROOT)/bss_section.o $(ROOT)/threadasm.o +ifeq ($(OS),osx) +ifeq ($(MODEL), 64) + OBJS+=$(ROOT)/osx_tls.o +endif +endif + # build with shared library support SHARED=$(if $(findstring $(OS),linux freebsd),1,) diff --git a/src/rt/osx_tls.c b/src/rt/osx_tls.c new file mode 100644 index 0000000000..6cdffff672 --- /dev/null +++ b/src/rt/osx_tls.c @@ -0,0 +1,51 @@ +/** + * Helpers for determining TLS memory ranges on OS X. + * + * This unfortunately cannot be entirely done in D, as the OS X API uses + * the Apple-specific blocks C extension. + * + * Copyright: David Nadlinger, 2012. + * License: Boost License 1.0. + * Authors: David Nadlinger + */ + +#ifndef __APPLE__ +#ifndef __BLOCKS__ + #error "Need a C compiler with Apple Blocks support – not building on OS X with Clang?" +#endif +#endif + +#include +#include +#include + +/* + * Declarations from dyld_priv.h, available on 10.7+. + */ +enum dyld_tlv_states { + dyld_tlv_state_allocated = 10, + dyld_tlv_state_deallocated = 20 +}; +typedef struct { + size_t info_size; + void * tlv_addr; + size_t tlv_size; +} dyld_tlv_info; +typedef void (^dyld_tlv_state_change_handler)(enum dyld_tlv_states state, const dyld_tlv_info *info); +extern void dyld_register_tlv_state_change_handler(enum dyld_tlv_states state, dyld_tlv_state_change_handler handler); +extern void dyld_enumerate_tlv_storage(dyld_tlv_state_change_handler handler); + +void _d_dyld_getTLSRange(void* arbitraryTLSSymbol, void** start, size_t* size) { + dyld_enumerate_tlv_storage( + ^(enum dyld_tlv_states state, const dyld_tlv_info *info) { + assert(state == dyld_tlv_state_allocated); + if (info->tlv_addr <= arbitraryTLSSymbol && + arbitraryTLSSymbol < (info->tlv_addr + info->tlv_size) + ) { + // Found the range. + *start = info->tlv_addr; + *size = info->tlv_size; + } + } + ); +} diff --git a/src/rt/sections.d b/src/rt/sections.d index a0b72e8750..4e32a77663 100644 --- a/src/rt/sections.d +++ b/src/rt/sections.d @@ -26,7 +26,14 @@ else version (FreeBSD) else version (Solaris) public import rt.sections_solaris; else version (Darwin) - public import rt.sections_osx; +{ + version (X86_64) + public import rt.sections_osx_x86_64; + else version (X86) + public import rt.sections_osx_x86; + else + static assert(0, "unimplemented"); +} else version (CRuntime_DigitalMars) public import rt.sections_win32; else version (CRuntime_Microsoft) diff --git a/src/rt/sections_osx.d b/src/rt/sections_osx_x86.d similarity index 89% rename from src/rt/sections_osx.d rename to src/rt/sections_osx_x86.d index 21a179523f..dc8a4b7721 100644 --- a/src/rt/sections_osx.d +++ b/src/rt/sections_osx_x86.d @@ -1,16 +1,15 @@ /** * Written in the D programming language. - * This module provides OSX-specific support for sections. + * This module provides OS X x86 specific support for sections. * - * Copyright: Copyright Digital Mars 2008 - 2012. + * Copyright: Copyright Digital Mars 2008 - 2016. * License: Distributed under the * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * (See accompanying file LICENSE) - * Authors: Walter Bright, Sean Kelly, Martin Nowak - * Source: $(DRUNTIMESRC src/rt/_sections_osx.d) + * Authors: Walter Bright, Sean Kelly, Martin Nowak, Jacob Carlborg + * Source: $(DRUNTIMESRC src/rt/_sections_osx_x86.d) */ - -module rt.sections_osx; +module rt.sections_osx_x86; version (OSX) version = Darwin; @@ -22,6 +21,7 @@ else version (WatchOS) version = Darwin; version(Darwin): +version(X86): // debug = PRINTF; import core.stdc.stdio; @@ -189,7 +189,6 @@ ref void[] getTLSBlockAlloc() return *pary; } - __gshared SectionGroup _sections; extern (C) void sections_osx_onAddImage(in mach_header* h, intptr_t slide) @@ -263,22 +262,8 @@ static immutable SegRef[] dataSegs = [{SEG_DATA, SECT_DATA}, ubyte[] getSection(in mach_header* header, intptr_t slide, in char* segmentName, in char* sectionName) { - version (X86) - { - assert(header.magic == MH_MAGIC); - auto sect = getsectbynamefromheader(header, - segmentName, - sectionName); - } - else version (X86_64) - { - assert(header.magic == MH_MAGIC_64); - auto sect = getsectbynamefromheader_64(cast(mach_header_64*)header, - segmentName, - sectionName); - } - else - static assert(0, "unimplemented"); + assert(header.magic == MH_MAGIC); + auto sect = getsectbynamefromheader(header, segmentName, sectionName); if (sect !is null && sect.size > 0) return (cast(ubyte*)sect.addr + slide)[0 .. cast(size_t)sect.size]; diff --git a/src/rt/sections_osx_x86_64.d b/src/rt/sections_osx_x86_64.d new file mode 100644 index 0000000000..1bfcef3680 --- /dev/null +++ b/src/rt/sections_osx_x86_64.d @@ -0,0 +1,185 @@ +/** + * Written in the D programming language. + * This module provides OS X x86-64 specific support for sections. + * + * Copyright: Copyright Digital Mars 2016. + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). + * (See accompanying file LICENSE) + * Authors: Walter Bright, Sean Kelly, Martin Nowak, Jacob Carlborg + * Source: $(DRUNTIMESRC src/rt/_sections_osx_x86_64.d) + */ +module rt.sections_osx_x86_64; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version(Darwin): +version(X86_64): + +// debug = PRINTF; +import core.stdc.stdio; +import core.stdc.string, core.stdc.stdlib; +import core.sys.posix.pthread; +import core.sys.osx.mach.dyld; +import core.sys.osx.mach.getsect; +import rt.deh, rt.minfo; +import rt.util.container.array; + +struct SectionGroup +{ + static int opApply(scope int delegate(ref SectionGroup) dg) + { + return dg(_sections); + } + + static int opApplyReverse(scope int delegate(ref SectionGroup) dg) + { + return dg(_sections); + } + + @property immutable(ModuleInfo*)[] modules() const + { + return _moduleGroup.modules; + } + + @property ref inout(ModuleGroup) moduleGroup() inout + { + return _moduleGroup; + } + + @property inout(void[])[] gcRanges() inout + { + return _gcRanges[]; + } + + @property immutable(FuncTable)[] ehTables() const + { + return _ehTables[]; + } + +private: + immutable(FuncTable)[] _ehTables; + ModuleGroup _moduleGroup; + Array!(void[]) _gcRanges; +} + +/**** + * Boolean flag set to true while the runtime is initialized. + */ +__gshared bool _isRuntimeInitialized; + +/**** + * Gets called on program startup just before GC is initialized. + */ +void initSections() +{ + _dyld_register_func_for_add_image(§ions_osx_onAddImage); + _isRuntimeInitialized = true; +} + +/*** + * Gets called on program shutdown just after GC is terminated. + */ +void finiSections() +{ + _sections._gcRanges.reset(); + _isRuntimeInitialized = false; +} + +void[] initTLSRanges() +{ + void* start = null; + size_t size = 0; + _d_dyld_getTLSRange(&dummyTlsSymbol, &start, &size); + assert(start && size, "Could not determine TLS range."); + return start[0 .. size]; +} + +void finiTLSRanges(void[] rng) +{ + +} + +void scanTLSRanges(void[] rng, scope void delegate(void* pbeg, void* pend) nothrow dg) nothrow +{ + dg(rng.ptr, rng.ptr + rng.length); +} + +private: + +extern(C) void _d_dyld_getTLSRange(void*, void**, size_t*); + +__gshared SectionGroup _sections; +ubyte dummyTlsSymbol; + +extern (C) void sections_osx_onAddImage(in mach_header* h, intptr_t slide) +{ + foreach (e; dataSegs) + { + auto sect = getSection(h, slide, e.seg.ptr, e.sect.ptr); + if (sect != null) + _sections._gcRanges.insertBack((cast(void*)sect.ptr)[0 .. sect.length]); + } + + auto minfosect = getSection(h, slide, "__DATA", "__minfodata"); + if (minfosect != null) + { + // no support for multiple images yet + // take the sections from the last static image which is the executable + if (_isRuntimeInitialized) + { + fprintf(stderr, "Loading shared libraries isn't yet supported on OSX.\n"); + return; + } + else if (_sections.modules.ptr !is null) + { + fprintf(stderr, "Shared libraries are not yet supported on OSX.\n"); + } + + debug(PRINTF) printf(" minfodata\n"); + auto p = cast(immutable(ModuleInfo*)*)minfosect.ptr; + immutable len = minfosect.length / (*p).sizeof; + + _sections._moduleGroup = ModuleGroup(p[0 .. len]); + } + + auto ehsect = getSection(h, slide, "__DATA", "__deh_eh"); + if (ehsect != null) + { + debug(PRINTF) printf(" deh_eh\n"); + auto p = cast(immutable(FuncTable)*)ehsect.ptr; + immutable len = ehsect.length / (*p).sizeof; + + _sections._ehTables = p[0 .. len]; + } +} + +struct SegRef +{ + string seg; + string sect; +} + +static immutable SegRef[] dataSegs = [{SEG_DATA, SECT_DATA}, + {SEG_DATA, SECT_BSS}, + {SEG_DATA, SECT_COMMON}]; + +ubyte[] getSection(in mach_header* header, intptr_t slide, + in char* segmentName, in char* sectionName) +{ + assert(header.magic == MH_MAGIC_64); + auto sect = getsectbynamefromheader_64(cast(mach_header_64*)header, + segmentName, + sectionName); + + if (sect !is null && sect.size > 0) + return (cast(ubyte*)sect.addr + slide)[0 .. cast(size_t)sect.size]; + return null; +} From 32b3e7e2d6d34a41fd3057e6fae22c1b023bbcd7 Mon Sep 17 00:00:00 2001 From: Geod24 Date: Fri, 6 May 2016 12:37:37 +0200 Subject: [PATCH 328/768] Fix issue 15997: Wrong constant value for ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED in winhttp --- src/core/sys/windows/winhttp.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d index 9a7592265c..cacc25d9a0 100644 --- a/src/core/sys/windows/winhttp.d +++ b/src/core/sys/windows/winhttp.d @@ -654,7 +654,7 @@ enum : DWORD { ERROR_WINHTTP_CONNECTION_ERROR = (WINHTTP_ERROR_BASE + 30), ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), - ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE, + 44), + ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE + 44), ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), From 0bba5cf2304642e7062fbc06fb3ccdc3ad6bf918 Mon Sep 17 00:00:00 2001 From: Geod24 Date: Fri, 6 May 2016 12:47:00 +0200 Subject: [PATCH 329/768] Remove usage of CommaExp from druntime Using CommaExpression is discouraged anywhere except increment of `for` loops. --- src/core/sys/windows/commctrl.d | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index c768096efd..e09c46498e 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -5306,8 +5306,9 @@ int ListView_FindItem(HWND w, int i, const(LV_FINDINFO)* p) { } BOOL ListView_GetItemRect(HWND w, int i, LPRECT p, int c) { - return cast(BOOL) SendMessage(w, LVM_GETITEMRECT, i, p ? - (p.left = c, cast(LPARAM) p) : 0); + if (p) + p.left = c; + return cast(BOOL) SendMessage(w, LVM_GETITEMRECT, i, cast(LPARAM) p); } BOOL ListView_SetItemPosition(HWND w, int i, int x, int y) { @@ -6028,8 +6029,11 @@ static if (_WIN32_IE >= 0x300) { } BOOL ListView_GetSubItemRect(HWND w, int i, int isi, int c, LPRECT p) { - return cast(BOOL) SendMessage(w, LVM_GETSUBITEMRECT, i, - p ? (p.left = c, p.top = isi, cast(LPARAM) p) : 0); + if (p) { + p.left = c; + p.top = isi; + } + return cast(BOOL) SendMessage(w, LVM_GETSUBITEMRECT, i, cast(LPARAM) p); } HCURSOR ListView_SetHotCursor(HWND w, HCURSOR c) { From 72d6f11d0f87b1b44c720bf0b7c4977e8e07a8d5 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sat, 7 May 2016 14:00:28 +0200 Subject: [PATCH 330/768] remove old tango imports --- src/core/sys/windows/iptypes.d | 9 +-------- src/core/sys/windows/winldap.d | 3 --- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/core/sys/windows/iptypes.d b/src/core/sys/windows/iptypes.d index 875756f233..296735d203 100644 --- a/src/core/sys/windows/iptypes.d +++ b/src/core/sys/windows/iptypes.d @@ -11,14 +11,7 @@ module core.sys.windows.iptypes; version (Windows): import core.sys.windows.windef; -version(Tango){ - private import tango.stdc.time; -}else{ - version (D_Version2) - import core.stdc.time; - else - import std.c.time; -} +import core.stdc.time; //#include enum size_t diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index fb3e8848ce..2d548ee51b 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -31,9 +31,6 @@ version (ANSI) {} else version = Unicode; import core.sys.windows.schannel, core.sys.windows.winber; private import core.sys.windows.wincrypt, core.sys.windows.windef; -version(Tango){ - private import tango.stdc.stdio; -} align(4): From b25dac98d4f4f734324d57195695bbc5689de88e Mon Sep 17 00:00:00 2001 From: Oleg Nykytenko Date: Sun, 8 May 2016 10:37:53 +0300 Subject: [PATCH 331/768] Solaris: Revert paddings to original style. --- src/core/stdc/stdio.d | 6 +++--- src/core/stdc/wchar_.d | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/stdc/stdio.d b/src/core/stdc/stdio.d index 7fb0a6e9da..4a38f3ff38 100644 --- a/src/core/stdc/stdio.d +++ b/src/core/stdc/stdio.d @@ -175,7 +175,7 @@ else version ( FreeBSD ) long _mbstateL; } } -else version( Solaris ) +else version (Solaris) { enum { @@ -401,7 +401,7 @@ else version( FreeBSD ) /// alias shared(__sFILE) FILE; } -else version( Solaris ) +else version (Solaris) { import core.stdc.wchar_ : __mbstate_t; @@ -669,7 +669,7 @@ else version( FreeBSD ) /// alias __stderrp stderr; } -else version( Solaris ) +else version (Solaris) { enum { diff --git a/src/core/stdc/wchar_.d b/src/core/stdc/wchar_.d index 89fe7258d1..e14b9e3695 100644 --- a/src/core/stdc/wchar_.d +++ b/src/core/stdc/wchar_.d @@ -40,7 +40,7 @@ version( CRuntime_Glibc ) ___value __value; } } -else version( Solaris ) +else version (Solaris) { /// struct __mbstate_t From 76f66404ddede0a8f573e073f1deb59747887e2d Mon Sep 17 00:00:00 2001 From: Oleg Nykytenko Date: Sun, 8 May 2016 11:48:05 +0300 Subject: [PATCH 332/768] Solaris: fix readdir for x64 OS. --- src/core/sys/posix/dirent.d | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/core/sys/posix/dirent.d b/src/core/sys/posix/dirent.d index e74b3ac5ea..d8bd445735 100644 --- a/src/core/sys/posix/dirent.d +++ b/src/core/sys/posix/dirent.d @@ -180,14 +180,21 @@ else version (Solaris) char* dd_buf; } - static if (__USE_LARGEFILE64) + version (D_LP64) { - dirent* readdir64(DIR*); - alias readdir64 readdir; + dirent* readdir(DIR*); } else { - dirent* readdir(DIR*); + static if (__USE_LARGEFILE64) + { + dirent* readdir64(DIR*); + alias readdir64 readdir; + } + else + { + dirent* readdir(DIR*); + } } } else version( CRuntime_Bionic ) From 9ac855431c53b8cfaa2e5943dc2dc19f301a3b13 Mon Sep 17 00:00:00 2001 From: Oleg Nykytenko Date: Sun, 8 May 2016 15:12:08 +0300 Subject: [PATCH 333/768] Add an alias for readdir64 in x64 environment. --- src/core/sys/posix/dirent.d | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/sys/posix/dirent.d b/src/core/sys/posix/dirent.d index d8bd445735..7bf2e14e22 100644 --- a/src/core/sys/posix/dirent.d +++ b/src/core/sys/posix/dirent.d @@ -183,6 +183,7 @@ else version (Solaris) version (D_LP64) { dirent* readdir(DIR*); + alias readdir64 = readdir; } else { From a7be05a4a48d1b132e082075dcb9fc54938e999d Mon Sep 17 00:00:00 2001 From: Oleg Nykytenko Date: Sun, 8 May 2016 17:18:39 +0300 Subject: [PATCH 334/768] Solaris: fix misprint in ld_start64. --- src/core/sys/solaris/link.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/solaris/link.d b/src/core/sys/solaris/link.d index a8fae3fd97..7a68bc1b9b 100644 --- a/src/core/sys/solaris/link.d +++ b/src/core/sys/solaris/link.d @@ -27,7 +27,7 @@ void ld_section(in char*, Elf32_Shdr*, Elf32_Word, Elf_Data*, Elf*); version(D_LP64) { -void ld_start64(inchar*, in Elf64_Half, in char*); +void ld_start64(in char*, in Elf64_Half, in char*); void ld_atexit64(int); void ld_open64(in char**, in char**, int*, int, Elf**, Elf*, size_t, in Elf_Kind); void ld_file64(in char*, in Elf_Kind, int, Elf*); From ed01d3de38f8cb99c94ca79c2a4be93667029fc6 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Tue, 10 May 2016 14:35:46 +0000 Subject: [PATCH 335/768] core.sys.posix.sys.resource: @nogc --- src/core/sys/posix/sys/resource.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/posix/sys/resource.d b/src/core/sys/posix/sys/resource.d index e3c6d05465..f7d61d9fd0 100644 --- a/src/core/sys/posix/sys/resource.d +++ b/src/core/sys/posix/sys/resource.d @@ -22,7 +22,7 @@ else version (TVOS) else version (WatchOS) version = Darwin; -nothrow extern(C): +nothrow @nogc extern(C): // // XOpen (XSI) From f369b892e20a0885d94ea06df45cc5ac9da4a321 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sat, 7 May 2016 13:45:11 +0200 Subject: [PATCH 336/768] cleanup remaining imports to removed winsock --- src/core/sys/windows/mswsock.d | 150 +++++++++++++++------------------ src/core/sys/windows/nspapi.d | 9 +- src/core/sys/windows/windows.d | 10 +-- 3 files changed, 70 insertions(+), 99 deletions(-) diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index 7b10977b7e..635668ad30 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -13,18 +13,7 @@ version (Windows): import core.sys.windows.winbase, core.sys.windows.windef; private import core.sys.windows.basetyps, core.sys.windows.w32api; -// FIXME: clean up Windows version support - -version (Win32_Winsock2) pragma(msg, - "Version Win32_Winsock2 is deprecated; Winsock2 is now imported by default"); - -// Pull in Winsock1 if the user has put "Win32_Winsock1" on the compile -// line; otherwise, default to Winsock2. -version (Win32_Winsock1) { - import core.sys.windows.winsock; -} else { - import core.sys.windows.winsock2; -} +import core.sys.windows.winsock2; //static if (_WIN32_WINNT >= 0x500) { enum { @@ -117,81 +106,78 @@ enum GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0 enum GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; } -version(Win32_Winsock1) { -} else { - static if (_WIN32_WINNT > 0x501) { - /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT - * structure below, so I've given them the same minimum version - */ - enum { - TP_ELEMENT_FILE = 1, - TP_ELEMENT_MEMORY = 2, - TP_ELEMENT_EOP = 4 - } +static if (_WIN32_WINNT > 0x501) { + /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT + * structure below, so I've given them the same minimum version + */ + enum { + TP_ELEMENT_FILE = 1, + TP_ELEMENT_MEMORY = 2, + TP_ELEMENT_EOP = 4 + } - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm - */ - struct TRANSMIT_PACKETS_ELEMENT { - ULONG dwElFlags; - ULONG cLength; - union { - struct { - LARGE_INTEGER nFileOffset; - HANDLE hFile; - } - PVOID pBuffer; + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm + */ + struct TRANSMIT_PACKETS_ELEMENT { + ULONG dwElFlags; + ULONG cLength; + union { + struct { + LARGE_INTEGER nFileOffset; + HANDLE hFile; } + PVOID pBuffer; } + } - /* WinXP+, Server2003+: - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm - */ - struct WSAMSG { - LPSOCKADDR name; - INT namelen; - LPWSABUF lpBuffers; - DWORD dwBufferCount; - WSABUF Control; - DWORD dwFlags; - } + /* WinXP+, Server2003+: + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm + */ + struct WSAMSG { + LPSOCKADDR name; + INT namelen; + LPWSABUF lpBuffers; + DWORD dwBufferCount; + WSABUF Control; + DWORD dwFlags; + } - alias WSAMSG* PWSAMSG, LPWSAMSG; - - /* According to MSDN docs, the WSAMSG.Control buffer starts with a - cmsghdr header of the following form. See also RFC 2292. */ - /* DK: Confirmed. So I suppose these should get the same version as - WSAMSG... */ - struct WSACMSGHDR { - UINT cmsg_len; - INT cmsg_level; - INT cmsg_type; - // followed by UCHAR cmsg_data[]; - } + alias WSAMSG* PWSAMSG, LPWSAMSG; + + /* According to MSDN docs, the WSAMSG.Control buffer starts with a + cmsghdr header of the following form. See also RFC 2292. */ + /* DK: Confirmed. So I suppose these should get the same version as + WSAMSG... */ + struct WSACMSGHDR { + UINT cmsg_len; + INT cmsg_level; + INT cmsg_type; + // followed by UCHAR cmsg_data[]; + } - /* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */ - /* DK: MinGW doesn't define these, and neither does the MSDN docs. Might have - to actually look up RFC 2292... */ - /+ - #if 0 - #define WSA_CMSG_FIRSTHDR(mhdr) - #define WSA_CMSG_NXTHDR(mhdr, cmsg) - #define WSA_CMSG_SPACE(length) - #define WSA_CMSG_LEN(length) - #endif - +/ - - extern(Windows) - { - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm - */ - BOOL DisconnectEx(SOCKET, LPOVERLAPPED, DWORD, DWORD); - - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm - */ - int WSARecvMsg(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); - } + /* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */ + /* DK: MinGW doesn't define these, and neither does the MSDN docs. Might have + to actually look up RFC 2292... */ + /+ + #if 0 + #define WSA_CMSG_FIRSTHDR(mhdr) + #define WSA_CMSG_NXTHDR(mhdr, cmsg) + #define WSA_CMSG_SPACE(length) + #define WSA_CMSG_LEN(length) + #endif + +/ + + extern(Windows) + { + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm + */ + BOOL DisconnectEx(SOCKET, LPOVERLAPPED, DWORD, DWORD); + + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm + */ + int WSARecvMsg(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); } } diff --git a/src/core/sys/windows/nspapi.d b/src/core/sys/windows/nspapi.d index 07120bbb68..0e03acdf27 100644 --- a/src/core/sys/windows/nspapi.d +++ b/src/core/sys/windows/nspapi.d @@ -49,14 +49,7 @@ enum { SERVICE_FLAG_HARD = 2 } -/* MinGW makes the next section conditional on winsock.h or winsock2.h - * being included. But that doesn't translate well into D. - */ -version (Win32_Winsock1) { - import core.sys.windows.winsock; -} else { - import core.sys.windows.winsock2; -} +import core.sys.windows.winsock2; struct SOCKET_ADDRESS { LPSOCKADDR lpSockaddr; diff --git a/src/core/sys/windows/windows.d b/src/core/sys/windows/windows.d index b474739240..85dc5f43e8 100644 --- a/src/core/sys/windows/windows.d +++ b/src/core/sys/windows/windows.d @@ -44,15 +44,7 @@ public import core.sys.windows.ole2; public import core.sys.windows.winreg; - -// Select correct version of winsock. Importing the incorrect -// module will cause a static assert to prevent problems later on. -version (Win32_Winsock1) { - public import core.sys.windows.winsock; -} else { - public import core.sys.windows.winsock2; - //public import core.sys.windows.ws2tcpip; -} +public import core.sys.windows.winsock2; /+ #if (_WIN32_WINNT >= 0x400) From 4cdd51e1977f2e0990ac6f50226c2ccfc7493d67 Mon Sep 17 00:00:00 2001 From: qchikara Date: Wed, 11 May 2016 23:09:45 +0900 Subject: [PATCH 337/768] Fix missing struct WSABUF --- src/core/sys/windows/mswsock.d | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index b250cde859..7092db5b40 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -131,6 +131,13 @@ static if (_WIN32_WINNT > 0x501) { } } + struct WSABUF { + ULONG len; + CHAR* buf; + } + + alias WSABUF* LPWSABUF; + /* WinXP+, Server2003+: * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm */ From bd208630aee0578c35f73fb605e8806726ca93bf Mon Sep 17 00:00:00 2001 From: qchikara Date: Thu, 5 May 2016 09:38:30 +0900 Subject: [PATCH 338/768] Fix wrong definition of EMRCREATECOLORSPACE This is wrong because the original definitionhis is in uncommon usage of ANSI/UNICODE version. --- src/core/sys/windows/wingdi.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index 0881d36416..fb68dc5552 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -2550,7 +2550,7 @@ alias EMRPIXELFORMAT* PEMRPIXELFORMAT; struct EMRCREATECOLORSPACE { EMR emr; DWORD ihCS; - LOGCOLORSPACE lcs; + LOGCOLORSPACEA lcs; // ANSI version } alias EMRCREATECOLORSPACE* PEMRCREATECOLORSPACE; From 667a3b27032fe84250cadce3027b9feca1ee0653 Mon Sep 17 00:00:00 2001 From: qchikara Date: Thu, 5 May 2016 20:40:15 +0900 Subject: [PATCH 339/768] Fix fields of struct FULL_PTR_XLAT_TABLES --- src/core/sys/windows/rpcndr.d | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index 0ab2159b8b..77affce0d9 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -353,16 +353,19 @@ struct FULL_PTR_TO_REFID_ELEMENT { alias FULL_PTR_TO_REFID_ELEMENT * PFULL_PTR_TO_REFID_ELEMENT; struct FULL_PTR_XLAT_TABLES { - struct RefIdToPointer { + struct _RefIdToPointer { void **XlatTable; ubyte *StateTable; uint NumberOfEntries; } - struct PointerToRefId { + void* RefIdToPointer; + struct _PointerToRefId { PFULL_PTR_TO_REFID_ELEMENT *XlatTable; uint NumberOfBuckets; uint HashMask; } + void* PointerToRefId; + uint NextRefId; XLAT_SIDE XlatSide; } From 02ba7b82669a85443b8ea82101ef0df1720a35ca Mon Sep 17 00:00:00 2001 From: qchikara Date: Thu, 5 May 2016 17:16:08 +0900 Subject: [PATCH 340/768] Fix missing fields in struct WTSINFO --- src/core/sys/windows/wtsapi32.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/sys/windows/wtsapi32.d b/src/core/sys/windows/wtsapi32.d index 0d502b941e..79d3b77e33 100644 --- a/src/core/sys/windows/wtsapi32.d +++ b/src/core/sys/windows/wtsapi32.d @@ -331,6 +331,8 @@ static if (_WIN32_WINNT >= 0x600) { DWORD SessionId; DWORD IncomingBytes; DWORD OutgoingBytes; + DWORD IncomingFrames; + DWORD OutgoingFrames; DWORD IncomingCompressedBytes; DWORD OutgoingCompressedBytes; WCHAR[WINSTATIONNAME_LENGTH] WinStationName; @@ -349,6 +351,8 @@ static if (_WIN32_WINNT >= 0x600) { DWORD SessionId; DWORD IncomingBytes; DWORD OutgoingBytes; + DWORD IncomingFrames; + DWORD OutgoingFrames; DWORD IncomingCompressedBytes; DWORD OutgoingCompressedBytes; CHAR[WINSTATIONNAME_LENGTH] WinStationName; From f5b3a8be5bc7c3b963353f34456b32cde8420db0 Mon Sep 17 00:00:00 2001 From: qchikara Date: Thu, 5 May 2016 17:39:12 +0900 Subject: [PATCH 341/768] Fix orphan structs in unions olectl,winbase,winspool Defining _named_ structs in union, but they did not make instances. --- src/core/sys/windows/olectl.d | 12 ++++++++---- src/core/sys/windows/winbase.d | 6 ++++-- src/core/sys/windows/winspool.d | 3 ++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/core/sys/windows/olectl.d b/src/core/sys/windows/olectl.d index a3368ff2f4..3909c48483 100644 --- a/src/core/sys/windows/olectl.d +++ b/src/core/sys/windows/olectl.d @@ -361,21 +361,25 @@ struct PICTDESC UINT cbSizeofstruct; UINT picType; union { - struct bmp { + struct _bmp { HBITMAP hbitmap; HPALETTE hpal; } - struct wmf { + _bmp bmp; + struct _wmf { HMETAFILE hmeta; int xExt; int yExt; } - struct icon { + _wmf wmf; + struct _icon { HICON hicon; } - struct emf { + _icon icon; + struct _emf { HENHMETAFILE hemf; } + _emf emf; } } alias PICTDESC* LPPICTDESC; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index d0a622d745..a9a85f0283 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -1470,16 +1470,18 @@ struct PROCESS_HEAP_ENTRY { BYTE iRegionIndex; WORD wFlags; union { - struct Block { + struct _Block { HANDLE hMem; DWORD[3] dwReserved; } - struct Region { + _Block Block; + struct _Region { DWORD dwCommittedSize; DWORD dwUnCommittedSize; LPVOID lpFirstBlock; LPVOID lpLastBlock; } + _Region Region; } } alias PROCESS_HEAP_ENTRY* LPPROCESS_HEAP_ENTRY; diff --git a/src/core/sys/windows/winspool.d b/src/core/sys/windows/winspool.d index 8d70c4f671..3a2cf8418a 100644 --- a/src/core/sys/windows/winspool.d +++ b/src/core/sys/windows/winspool.d @@ -638,10 +638,11 @@ struct PRINTER_NOTIFY_INFO_DATA { DWORD Id; union _NotifyData { DWORD[2] adwData; - struct Data { + struct _Data { DWORD cbBuf; PVOID pBuf; } + _Data Data; } _NotifyData NotifyData; } From 850e34c76f7e801a942d1509cbac2934961ec825 Mon Sep 17 00:00:00 2001 From: qchikara Date: Thu, 5 May 2016 14:19:02 +0900 Subject: [PATCH 342/768] Fix struct definitions in core.sys.windows.winnt IMAGE_NT_HEADERS32/64 and IMAGE_SYMBOL --- src/core/sys/windows/winnt.d | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index f36cd35413..329dd57128 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -2965,14 +2965,14 @@ alias IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER; align(4) struct IMAGE_NT_HEADERS32 { DWORD Signature; IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER OptionalHeader; + IMAGE_OPTIONAL_HEADER32 OptionalHeader; } alias IMAGE_NT_HEADERS32* PIMAGE_NT_HEADERS32; align(4) struct IMAGE_NT_HEADERS64 { DWORD Signature; IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER OptionalHeader; + IMAGE_OPTIONAL_HEADER64 OptionalHeader; } alias IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64; @@ -3003,10 +3003,11 @@ alias IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; struct IMAGE_SYMBOL { union _N { BYTE[8] ShortName; - struct Name { + struct _Name { DWORD Short; DWORD Long; } + _Name Name; PBYTE[2] LongName; } _N N; From 90744528e94176cba2af33b8410840e875552148 Mon Sep 17 00:00:00 2001 From: qchikara Date: Fri, 6 May 2016 08:39:29 +0900 Subject: [PATCH 343/768] Fix missing fields of structs in mmsystem --- src/core/sys/windows/mmsystem.d | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index cbac06d4de..b001ae0e05 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -1031,7 +1031,7 @@ struct MMTIME { DWORD sample; DWORD cb; DWORD ticks; - struct smpte { + struct _smpte { BYTE hour; BYTE min; BYTE sec; @@ -1040,9 +1040,11 @@ struct MMTIME { BYTE dummy; BYTE[2] pad; }; - struct midi { + _smpte smpte; + struct _midi { DWORD songptrpos; } + _midi midi; } } alias MMTIME* PMMTIME, LPMMTIME; @@ -1329,7 +1331,7 @@ struct MIXERLINEA { DWORD cControls; CHAR[MIXER_SHORT_NAME_CHARS] szShortName; CHAR[MIXER_LONG_NAME_CHARS] szName; - struct Target { + struct _Target { DWORD dwType; DWORD dwDeviceID; WORD wMid; @@ -1337,6 +1339,7 @@ struct MIXERLINEA { MMVERSION vDriverVersion; CHAR[MAXPNAMELEN] szPname; } + _Target Target; } alias MIXERLINEA* PMIXERLINEA, LPMIXERLINEA; @@ -1353,7 +1356,7 @@ struct MIXERLINEW { DWORD cControls; WCHAR[MIXER_SHORT_NAME_CHARS] szShortName; WCHAR[MIXER_LONG_NAME_CHARS] szName; - struct Target { + struct _Target { DWORD dwType; DWORD dwDeviceID; WORD wMid; @@ -1361,6 +1364,7 @@ struct MIXERLINEW { MMVERSION vDriverVersion; WCHAR[MAXPNAMELEN] szPname; } + _Target Target; } alias MIXERLINEW* PMIXERLINEW, LPMIXERLINEW; From 912d6d64f79158270bd3408c41f63e8d7752fc80 Mon Sep 17 00:00:00 2001 From: qchikara Date: Sat, 7 May 2016 18:18:40 +0900 Subject: [PATCH 344/768] Redefine structs and aliases for Win64 in windows.winnt --- src/core/sys/windows/winnt.d | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index 329dd57128..6583a4b6b4 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -2637,7 +2637,15 @@ alias LIST_ENTRY _LIST_ENTRY; struct SINGLE_LIST_ENTRY { SINGLE_LIST_ENTRY* Next; } -alias SINGLE_LIST_ENTRY SLIST_ENTRY; + +version (Win64) { + align (16) + struct SLIST_ENTRY { + SLIST_ENTRY* Next; + } +} else { + alias SINGLE_LIST_ENTRY SLIST_ENTRY; +} alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY, PSLIST_ENTRY; union SLIST_HEADER { @@ -3277,7 +3285,7 @@ struct IMAGE_RESOURCE_DATA_ENTRY { } alias IMAGE_RESOURCE_DATA_ENTRY* PIMAGE_RESOURCE_DATA_ENTRY; -struct IMAGE_LOAD_CONFIG_DIRECTORY { +struct IMAGE_LOAD_CONFIG_DIRECTORY32 { DWORD Characteristics; DWORD TimeDateStamp; WORD MajorVersion; @@ -3293,7 +3301,7 @@ struct IMAGE_LOAD_CONFIG_DIRECTORY { DWORD ProcessHeapFlags; DWORD[4] Reserved; } -alias IMAGE_LOAD_CONFIG_DIRECTORY* PIMAGE_LOAD_CONFIG_DIRECTORY; +alias IMAGE_LOAD_CONFIG_DIRECTORY32* PIMAGE_LOAD_CONFIG_DIRECTORY32; struct IMAGE_LOAD_CONFIG_DIRECTORY64 { DWORD Characteristics; @@ -3317,12 +3325,21 @@ struct IMAGE_LOAD_CONFIG_DIRECTORY64 { } alias IMAGE_LOAD_CONFIG_DIRECTORY64* PIMAGE_LOAD_CONFIG_DIRECTORY64; +version (Win64) { + alias IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY; +} else { + alias IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; +} +alias IMAGE_LOAD_CONFIG_DIRECTORY* PIMAGE_LOAD_CONFIG_DIRECTORY; + +// Note versions for Alpha, Alpha64, ARM removed. struct IMAGE_RUNTIME_FUNCTION_ENTRY { DWORD BeginAddress; DWORD EndAddress; - PVOID ExceptionHandler; - PVOID HandlerData; - DWORD PrologEndAddress; + union { + DWORD UnwindInfoAddress; + DWORD UnwindData; + } } alias IMAGE_RUNTIME_FUNCTION_ENTRY* PIMAGE_RUNTIME_FUNCTION_ENTRY; From ebb22b66a25509f3a2ca3c7422712613579477ef Mon Sep 17 00:00:00 2001 From: qchikara Date: Fri, 6 May 2016 13:40:35 +0900 Subject: [PATCH 345/768] compliment of DWORD_PTR fixes - EMREXTCREATEPEN --- src/core/sys/windows/wingdi.d | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index fb68dc5552..a587fd7769 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -2776,6 +2776,17 @@ struct EXTLOGPEN { } alias EXTLOGPEN* PEXTLOGPEN, NPEXTLOGPEN, LPEXTLOGPEN; +struct EXTLOGPEN32 { + UINT elpPenStyle; + UINT elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + ULONG elpHatch; + DWORD elpNumEntries; + DWORD[1] elpStyleEntry; +} +alias EXTLOGPEN32* PEXTLOGPEN32, NPEXTLOGPEN32, LPEXTLOGPEN32; + struct EMREXTCREATEPEN { EMR emr; DWORD ihPen; @@ -2783,7 +2794,7 @@ struct EMREXTCREATEPEN { DWORD cbBmi; DWORD offBits; DWORD cbBits; - EXTLOGPEN elp; + EXTLOGPEN32 elp; } alias EMREXTCREATEPEN* PEMREXTCREATEPEN; From 784065330f67f9f540100e725f3b362cb25e1428 Mon Sep 17 00:00:00 2001 From: qchikara Date: Sat, 7 May 2016 16:16:09 +0900 Subject: [PATCH 346/768] Fix field type in IMAGE_SYMBOL for Win64 --- src/core/sys/windows/winnt.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index 6583a4b6b4..b5fc46263c 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -3016,7 +3016,7 @@ struct IMAGE_SYMBOL { DWORD Long; } _Name Name; - PBYTE[2] LongName; + DWORD[2] LongName; // PBYTE[2] } _N N; DWORD Value; From 4800bf3913d4ea0f785c4d4c8ea78eddf20a5517 Mon Sep 17 00:00:00 2001 From: qchikara Date: Tue, 10 May 2016 11:59:00 +0900 Subject: [PATCH 347/768] Trivial: remove space chars --- src/core/sys/windows/rpcndr.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index 77affce0d9..696d3d461a 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -365,7 +365,7 @@ struct FULL_PTR_XLAT_TABLES { uint HashMask; } void* PointerToRefId; - + uint NextRefId; XLAT_SIDE XlatSide; } From 8b11aaf5e3279a50cbf0758befdcbd733b34cce1 Mon Sep 17 00:00:00 2001 From: qchikara Date: Wed, 18 May 2016 19:21:05 +0900 Subject: [PATCH 348/768] More fixes of SIZE_T --- src/core/sys/windows/objbase.d | 4 ++-- src/core/sys/windows/objidl.d | 12 ++++++------ src/core/sys/windows/winbase.d | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/core/sys/windows/objbase.d b/src/core/sys/windows/objbase.d index e57f554ad5..ee3f0d5f98 100644 --- a/src/core/sys/windows/objbase.d +++ b/src/core/sys/windows/objbase.d @@ -159,8 +159,8 @@ extern(Windows) { HRESULT CoTreatAsClass(REFCLSID, REFCLSID); HRESULT DllGetClassObject(REFCLSID, REFIID, PVOID*); HRESULT DllCanUnloadNow(); - PVOID CoTaskMemAlloc(ULONG); - PVOID CoTaskMemRealloc(PVOID, ULONG); + PVOID CoTaskMemAlloc(SIZE_T); + PVOID CoTaskMemRealloc(PVOID, SIZE_T); void CoTaskMemFree(PVOID); HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); HRESULT CreateDataCache(LPUNKNOWN, REFCLSID, REFIID, PVOID*); diff --git a/src/core/sys/windows/objidl.d b/src/core/sys/windows/objidl.d index 73b201bb85..b651a2ac4d 100644 --- a/src/core/sys/windows/objidl.d +++ b/src/core/sys/windows/objidl.d @@ -602,23 +602,23 @@ interface IStdMarshalInfo : IUnknown { } interface IMalloc : IUnknown { - void* Alloc(ULONG); - void* Realloc(void*, ULONG); + void* Alloc(SIZE_T); + void* Realloc(void*, SIZE_T); void Free(void*); - ULONG GetSize(void*); + SIZE_T GetSize(void*); int DidAlloc(void*); void HeapMinimize(); } interface IMallocSpy : IUnknown { - ULONG PreAlloc(ULONG); + SIZE_T PreAlloc(SIZE_T); void* PostAlloc(void*); void* PreFree(void*, BOOL); void PostFree(BOOL); - ULONG PreRealloc(void*, ULONG, void**, BOOL); + SIZE_T PreRealloc(void*, SIZE_T, void**, BOOL); void* PostRealloc(void*, BOOL); void* PreGetSize(void*, BOOL); - ULONG PostGetSize(ULONG, BOOL); + SIZE_T PostGetSize(SIZE_T, BOOL); void* PreDidAlloc(void*, BOOL); int PostDidAlloc(void*, BOOL, int); void PreHeapMinimize(); diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index a9a85f0283..4b107f9ac2 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -1778,7 +1778,7 @@ extern (Windows) nothrow @nogc { HRSRC FindResourceExA(HINSTANCE, LPCSTR, LPCSTR, WORD); HRSRC FindResourceExW(HINSTANCE, LPCWSTR, LPCWSTR, WORD); BOOL FlushFileBuffers(HANDLE); - BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD); + BOOL FlushInstructionCache(HANDLE, PCVOID, SIZE_T); DWORD FormatMessageA(DWORD, PCVOID, DWORD, DWORD, LPSTR, DWORD, va_list*); DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); BOOL FreeEnvironmentStringsA(LPSTR); @@ -2104,7 +2104,7 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); HLOCAL LocalHandle(LPCVOID); PVOID LocalLock(HLOCAL); HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); - UINT LocalSize(HLOCAL); + SIZE_T LocalSize(HLOCAL); BOOL LocalUnlock(HLOCAL); PVOID VirtualAlloc(PVOID, SIZE_T, DWORD, DWORD); PVOID VirtualAllocEx(HANDLE, PVOID, SIZE_T, DWORD, DWORD); From 15942d726d8166e4e299a186f011e35fba577d10 Mon Sep 17 00:00:00 2001 From: qchikara Date: Wed, 18 May 2016 20:37:40 +0900 Subject: [PATCH 349/768] More fix of SIZE_T dll_aux perhaps this should be same as LDR_DATA_TABLE_ENTRY, which is introduced with PEB_LDR_DATA --- src/core/sys/windows/dll.d | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/sys/windows/dll.d b/src/core/sys/windows/dll.d index 59babbce9e..11a8fb38df 100644 --- a/src/core/sys/windows/dll.d +++ b/src/core/sys/windows/dll.d @@ -241,6 +241,7 @@ struct dll_aux } // the following structures can be found here: http://undocumented.ntinternals.net/ + // perhaps this should be same as LDR_DATA_TABLE_ENTRY, which is introduced with PEB_LDR_DATA struct LDR_MODULE { LIST_ENTRY InLoadOrderModuleList; @@ -248,7 +249,7 @@ struct dll_aux LIST_ENTRY InInitializationOrderModuleList; PVOID BaseAddress; PVOID EntryPoint; - ULONG SizeOfImage; + SIZE_T SizeOfImage; UNICODE_STRING FullDllName; UNICODE_STRING BaseDllName; ULONG Flags; From 9cdb12dcffbb38bc2c89b8dabcd36875f7793d35 Mon Sep 17 00:00:00 2001 From: qchikara Date: Wed, 11 May 2016 23:37:58 +0900 Subject: [PATCH 350/768] More fix SIZE_T mswsock --- src/core/sys/windows/mswsock.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/windows/mswsock.d b/src/core/sys/windows/mswsock.d index 7092db5b40..295244e5c9 100644 --- a/src/core/sys/windows/mswsock.d +++ b/src/core/sys/windows/mswsock.d @@ -157,7 +157,7 @@ static if (_WIN32_WINNT > 0x501) { /* DK: Confirmed. So I suppose these should get the same version as WSAMSG... */ struct WSACMSGHDR { - UINT cmsg_len; + SIZE_T cmsg_len; INT cmsg_level; INT cmsg_type; // followed by UCHAR cmsg_data[]; From d72034e6236d13d8ff1515a05ba1b162d775f93f Mon Sep 17 00:00:00 2001 From: qchikara Date: Thu, 5 May 2016 14:14:41 +0900 Subject: [PATCH 351/768] More fix of DWORD_PTR winuser functions and structures --- src/core/sys/windows/winuser.d | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index caf0fa08d7..2cbc968893 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -2877,7 +2877,7 @@ struct HELPINFO { int iContextType; int iCtrlId; HANDLE hItemHandle; - DWORD dwContextId; + DWORD_PTR dwContextId; POINT MousePos; } alias HELPINFO* LPHELPINFO; @@ -3184,7 +3184,7 @@ struct DROPSTRUCT { HWND hwndSource; HWND hwndSink; DWORD wFmt; - DWORD dwData; + ULONG_PTR dwData; POINT ptDrop; DWORD dwControlData; } @@ -3730,7 +3730,7 @@ BOOL DlgDirSelectComboBoxExW(HWND, LPWSTR, int, int); BOOL DlgDirSelectExA(HWND, LPSTR, int, int); BOOL DlgDirSelectExW(HWND, LPWSTR, int, int); BOOL DragDetect(HWND, POINT); -DWORD DragObject(HWND, HWND, UINT, DWORD, HCURSOR); +DWORD DragObject(HWND, HWND, UINT, ULONG_PTR, HCURSOR); BOOL DrawAnimatedRects(HWND, int, LPCRECT, LPCRECT); BOOL DrawCaption(HWND, HDC, LPCRECT, UINT); BOOL DrawEdge(HDC, LPRECT, UINT, UINT); @@ -4144,8 +4144,8 @@ BOOL WaitMessage(); HWND WindowFromDC(HDC hDC); HWND WindowFromPoint(POINT); UINT WinExec(LPCSTR, UINT); -BOOL WinHelpA(HWND, LPCSTR, UINT, DWORD); -BOOL WinHelpW(HWND, LPCWSTR, UINT, DWORD); +BOOL WinHelpA(HWND, LPCSTR, UINT, ULONG_PTR); +BOOL WinHelpW(HWND, LPCWSTR, UINT, ULONG_PTR); extern (C) { int wsprintfA(LPSTR, LPCSTR, ...); From f6049fe472c8cc4cb9105a2750fb134312a503f7 Mon Sep 17 00:00:00 2001 From: qchikara Date: Fri, 13 May 2016 19:21:04 +0900 Subject: [PATCH 352/768] Fix more DWORD_PTR rpcndr Some hide themselves in comment out blocks. --- src/core/sys/windows/rpcndr.d | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/core/sys/windows/rpcndr.d b/src/core/sys/windows/rpcndr.d index 696d3d461a..d75f1003bc 100644 --- a/src/core/sys/windows/rpcndr.d +++ b/src/core/sys/windows/rpcndr.d @@ -74,9 +74,9 @@ enum cbNDRContext=20; //MACRO #define _midl_unma2( p, cast ) *(( cast *)p)++ //MACRO #define _midl_unma3( p, cast ) *(( cast *)p)++ //MACRO #define _midl_unma4( p, cast ) *(( cast *)p)++ -//MACRO #define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe)) -//MACRO #define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc)) -//MACRO #define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8)) +//MACRO #define _midl_fa2( p ) (p = (RPC_BUFPTR )((LONG_PTR)(p+1) & 0xffffffff_fffffffe)) +//MACRO #define _midl_fa4( p ) (p = (RPC_BUFPTR )((LONG_PTR)(p+3) & 0xffffffff_fffffffc)) +//MACRO #define _midl_fa8( p ) (p = (RPC_BUFPTR )((LONG_PTR)(p+7) & 0xffffffff_fffffff8)) //MACRO #define _midl_addp( p, n ) (p += n) //MACRO #define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++ //MACRO #define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p @@ -92,7 +92,7 @@ enum cbNDRContext=20; //MACRO #define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep )) //MACRO #define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd) -//MACRO #define NdrFieldOffset(s,f) (long)(& (((s *)0)->f)) +//MACRO #define NdrFieldOffset(s,f) (LONG_PTR)(& (((s *)0)->f)) //MACRO #define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t)) //MACRO #define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8) //MACRO #define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24) @@ -180,7 +180,7 @@ struct MIDL_STUB_MESSAGE { ubyte *PointerBufferMark; ubyte fBufferValid; ubyte Unused; - uint MaxCount; + ULONG_PTR MaxCount; uint Offset; uint ActualCount; void* function (uint) pfnAllocate; @@ -210,7 +210,7 @@ const(_MIDL_STUB_DESC)* StubDesc; uint * SizePtrLengthArray; void* pArgQueue; uint dwStubPhase; - uint[5] w2kReserved; + INT_PTR[5] w2kReserved; } alias MIDL_STUB_MESSAGE * PMIDL_STUB_MESSAGE; @@ -337,7 +337,7 @@ alias MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO; union CLIENT_CALL_RETURN { void *Pointer; - int Simple; + LONG_PTR Simple; } enum XLAT_SIDE { From 1a46946ddcc136b9ad0e5116df41ec733b51f26b Mon Sep 17 00:00:00 2001 From: qchikara Date: Mon, 9 May 2016 14:09:18 +0900 Subject: [PATCH 353/768] More fix DWORD_PTR winldap The old definition oversights pointer sizes. Otherwise, we should drop the definitions of these opaque structures... --- src/core/sys/windows/winldap.d | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index 2d548ee51b..783c951f26 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -278,8 +278,15 @@ enum { LDAP_SUBSTRING_FINAL } +// should be opaque structure struct LDAP { - char[76] Reserved; + struct _ld_sp { + UINT_PTR sb_sd; + UCHAR[(10*ULONG.sizeof)+1] Reserved1; + ULONG_PTR sb_naddr; + UCHAR[(6*ULONG.sizeof)] Reserved2; + } + _ld_sp ld_sp; PCHAR ld_host; ULONG ld_version; UCHAR ld_lberoptions; @@ -292,6 +299,7 @@ struct LDAP { } alias LDAP* PLDAP; +// should be opaque structure struct LDAPMessage { ULONG lm_msgid; ULONG lm_msgtype; From 186271adb45a467c04b381adf5518d9685d56cc0 Mon Sep 17 00:00:00 2001 From: qchikara Date: Thu, 5 May 2016 12:32:26 +0900 Subject: [PATCH 354/768] Fix win32-x64 field size of winperf structs A variation of modifications like DWORD into DWORD_PTR. --- src/core/sys/windows/winperf.d | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/core/sys/windows/winperf.d b/src/core/sys/windows/winperf.d index d00f829f35..50b66bbea4 100644 --- a/src/core/sys/windows/winperf.d +++ b/src/core/sys/windows/winperf.d @@ -104,9 +104,17 @@ struct PERF_OBJECT_TYPE { DWORD DefinitionLength; DWORD HeaderLength; DWORD ObjectNameTitleIndex; +version (Win64) { + DWORD ObjectNameTitle; +} else { LPWSTR ObjectNameTitle; +} DWORD ObjectHelpTitleIndex; +version (Win64) { + DWORD ObjectHelpTitle; +} else { LPWSTR ObjectHelpTitle; +} DWORD DetailLevel; DWORD NumCounters; LONG DefaultCounter; @@ -120,9 +128,17 @@ alias PERF_OBJECT_TYPE * PPERF_OBJECT_TYPE; struct PERF_COUNTER_DEFINITION { DWORD ByteLength; DWORD CounterNameTitleIndex; +version (Win64) { + DWORD CounterNameTitle; +} else { LPWSTR CounterNameTitle; +} DWORD CounterHelpTitleIndex; +version (Win64) { + DWORD CounterHelpTitle; +} else { LPWSTR CounterHelpTitle; +} LONG DefaultScale; DWORD DetailLevel; DWORD CounterType; From ab28ff57ae74086955be1f43d0d4349d40be2707 Mon Sep 17 00:00:00 2001 From: qchikara Date: Wed, 4 May 2016 11:54:50 +0900 Subject: [PATCH 355/768] More fixes of DWORD_PTR for structs --- src/core/sys/windows/cpl.d | 6 +++--- src/core/sys/windows/lmat.d | 4 ++-- src/core/sys/windows/oaidl.d | 2 +- src/core/sys/windows/rpcdcep.d | 4 ++-- src/core/sys/windows/wingdi.d | 2 +- src/core/sys/windows/wininet.d | 2 +- src/core/sys/windows/winnetwk.d | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/core/sys/windows/cpl.d b/src/core/sys/windows/cpl.d index a2fa35a605..34c098b3e6 100644 --- a/src/core/sys/windows/cpl.d +++ b/src/core/sys/windows/cpl.d @@ -40,7 +40,7 @@ struct CPLINFO { int idIcon; int idName; int idInfo; - LONG lData; + LONG_PTR lData; } alias CPLINFO* LPCPLINFO; @@ -48,7 +48,7 @@ struct NEWCPLINFOA { DWORD dwSize = NEWCPLINFOA.sizeof; DWORD dwFlags; DWORD dwHelpContext; - LONG lData; + LONG_PTR lData; HICON hIcon; CHAR[32] szName; CHAR[64] szInfo; @@ -60,7 +60,7 @@ struct NEWCPLINFOW { DWORD dwSize = NEWCPLINFOW.sizeof; DWORD dwFlags; DWORD dwHelpContext; - LONG lData; + LONG_PTR lData; HICON hIcon; WCHAR[32] szName; WCHAR[64] szInfo; diff --git a/src/core/sys/windows/lmat.d b/src/core/sys/windows/lmat.d index d54a60c728..64272af857 100644 --- a/src/core/sys/windows/lmat.d +++ b/src/core/sys/windows/lmat.d @@ -24,7 +24,7 @@ enum JOB_OUTPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_EXEC_ERROR struct AT_ENUM { DWORD JobId; - DWORD JobTime; + DWORD_PTR JobTime; DWORD DaysOfMonth; UCHAR DaysOfWeek; UCHAR Flags; @@ -33,7 +33,7 @@ struct AT_ENUM { alias AT_ENUM* PAT_ENUM, LPAT_ENUM; struct AT_INFO { - DWORD JobTime; + DWORD_PTR JobTime; DWORD DaysOfMonth; UCHAR DaysOfWeek; UCHAR Flags; diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d index 7d89901d6a..b629d79754 100644 --- a/src/core/sys/windows/oaidl.d +++ b/src/core/sys/windows/oaidl.d @@ -331,7 +331,7 @@ struct PARAMDESC { alias PARAMDESC* LPPARAMDESC; struct IDLDESC { - ULONG dwReserved; + ULONG_PTR dwReserved; USHORT wIDLFlags; } alias IDLDESC* LPIDLDESC; diff --git a/src/core/sys/windows/rpcdcep.d b/src/core/sys/windows/rpcdcep.d index 90e7c11aac..45d52a5b9b 100644 --- a/src/core/sys/windows/rpcdcep.d +++ b/src/core/sys/windows/rpcdcep.d @@ -63,7 +63,7 @@ alias void function (PRPC_MESSAGE Message) RPC_DISPATCH_FUNCTION; struct RPC_DISPATCH_TABLE { uint DispatchTableCount; RPC_DISPATCH_FUNCTION* DispatchTable; - int Reserved; + LONG_PTR Reserved; } alias RPC_DISPATCH_TABLE* PRPC_DISPATCH_TABLE; @@ -92,7 +92,7 @@ struct RPC_CLIENT_INTERFACE { PRPC_DISPATCH_TABLE DispatchTable; uint RpcProtseqEndpointCount; PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; - uint Reserved; + ULONG_PTR Reserved; const(void)* InterpreterInfo; } alias RPC_CLIENT_INTERFACE* PRPC_CLIENT_INTERFACE; diff --git a/src/core/sys/windows/wingdi.d b/src/core/sys/windows/wingdi.d index a587fd7769..d2bd467426 100644 --- a/src/core/sys/windows/wingdi.d +++ b/src/core/sys/windows/wingdi.d @@ -2465,7 +2465,7 @@ alias EMRBITBLT* PEMRBITBLT; struct LOGBRUSH { UINT lbStyle; COLORREF lbColor; - LONG lbHatch; + ULONG_PTR lbHatch; } alias TypeDef!(LOGBRUSH) PATTERN; alias LOGBRUSH* PLOGBRUSH, NPLOGBRUSH, LPLOGBRUSH; diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index c3a7f7d6d9..129b857a30 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -647,7 +647,7 @@ enum INTERNET_SCHEME { alias INTERNET_SCHEME* LPINTERNET_SCHEME; struct INTERNET_ASYNC_RESULT { - DWORD dwResult; + DWORD_PTR dwResult; DWORD dwError; } alias INTERNET_ASYNC_RESULT* LPINTERNET_ASYNC_RESULT; diff --git a/src/core/sys/windows/winnetwk.d b/src/core/sys/windows/winnetwk.d index a9a3ddd044..3b7def8843 100644 --- a/src/core/sys/windows/winnetwk.d +++ b/src/core/sys/windows/winnetwk.d @@ -288,7 +288,7 @@ struct NETINFOSTRUCT { DWORD dwProviderVersion; DWORD dwStatus; DWORD dwCharacteristics; - DWORD dwHandle; + ULONG_PTR dwHandle; WORD wNetType; DWORD dwPrinters; DWORD dwDrives; From cc9573d09031dbb8705baeb5e19347f6e078be56 Mon Sep 17 00:00:00 2001 From: qchikara Date: Wed, 11 May 2016 18:16:47 +0900 Subject: [PATCH 356/768] More fixes of DWORD_PTR for functions --- src/core/sys/windows/commctrl.d | 4 +-- src/core/sys/windows/imagehlp.d | 4 +-- src/core/sys/windows/mapi.d | 50 +++++++++++++++++---------------- src/core/sys/windows/ntsecpkg.d | 4 +-- src/core/sys/windows/ole.d | 2 +- src/core/sys/windows/oleidl.d | 4 +-- src/core/sys/windows/prsht.d | 4 +-- src/core/sys/windows/rasdlg.d | 4 +-- src/core/sys/windows/shellapi.d | 6 ++-- src/core/sys/windows/shlobj.d | 2 +- src/core/sys/windows/winbase.d | 2 +- src/core/sys/windows/wincrypt.d | 4 +-- 12 files changed, 46 insertions(+), 44 deletions(-) diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index c88fd8eea0..1f7e1c2eea 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -4938,8 +4938,8 @@ template HANDLE_WM_NOTIFY(R) { } } private alias _prm_FORWARD_WM_NOTIFY = extern (Windows) - int function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); // to inject linkage type -int FORWARD_WM_NOTIFY(HWND hwnd, int idFrom, NMHDR* pnmhdr, _prm_FORWARD_WM_NOTIFY fn) { + LRESULT function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); // to inject linkage type +LRESULT FORWARD_WM_NOTIFY(HWND hwnd, int idFrom, NMHDR* pnmhdr, _prm_FORWARD_WM_NOTIFY fn) { return fn(hwnd, WM_NOTIFY, idFrom, cast(LPARAM) pnmhdr); } diff --git a/src/core/sys/windows/imagehlp.d b/src/core/sys/windows/imagehlp.d index 788764a316..017ecc8398 100644 --- a/src/core/sys/windows/imagehlp.d +++ b/src/core/sys/windows/imagehlp.d @@ -306,8 +306,8 @@ extern (Windows) { BOOL UpdateDebugInfoFileEx(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS, DWORD); BOOL BindImage(LPSTR, LPSTR, LPSTR); BOOL BindImageEx(DWORD, LPSTR, LPSTR, LPSTR, PIMAGEHLP_STATUS_ROUTINE); - BOOL ReBaseImage(LPSTR, LPSTR, BOOL, BOOL, BOOL, ULONG, ULONG*, ULONG*, - ULONG*, ULONG*, ULONG); + BOOL ReBaseImage(LPSTR, LPSTR, BOOL, BOOL, BOOL, ULONG, ULONG*, ULONG_PTR*, + ULONG*, ULONG_PTR*, ULONG); PLOADED_IMAGE ImageLoad(LPSTR, LPSTR); BOOL ImageUnload(PLOADED_IMAGE); PIMAGE_NT_HEADERS ImageNtHeader(PVOID); diff --git a/src/core/sys/windows/mapi.d b/src/core/sys/windows/mapi.d index a82c927f9e..ab85952a4b 100644 --- a/src/core/sys/windows/mapi.d +++ b/src/core/sys/windows/mapi.d @@ -74,8 +74,10 @@ enum MAPI_UNREAD = 0x0001; enum MAPI_RECEIPT_REQUESTED = 0x0002; enum MAPI_SENT = 0x0004; -alias uint FLAGS, LHANDLE; -alias uint* LPLHANDLE, LPULONG; +alias uint FLAGS; +alias uint* LPULONG; +alias ULONG_PTR LHANDLE; +alias ULONG_PTR* LPLHANDLE; struct MapiRecipDesc { ULONG ulReserved; @@ -123,46 +125,46 @@ struct MapiMessage { alias MapiMessage* lpMapiMessage; extern (Pascal) { - ULONG MAPILogon(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE); - ULONG MAPISendMail(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG); - ULONG MAPISendDocuments(ULONG, LPSTR, LPSTR, LPSTR, ULONG); - ULONG MAPIReadMail(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*); - ULONG MAPIFindNext(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR); - ULONG MAPIResolveName(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, + ULONG MAPILogon(ULONG_PTR, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE); + ULONG MAPISendMail(LHANDLE, ULONG_PTR, lpMapiMessage, FLAGS, ULONG); + ULONG MAPISendDocuments(ULONG_PTR, LPSTR, LPSTR, LPSTR, ULONG); + ULONG MAPIReadMail(LHANDLE, ULONG_PTR, LPSTR, FLAGS, ULONG, lpMapiMessage*); + ULONG MAPIFindNext(LHANDLE, ULONG_PTR, LPSTR, LPSTR, FLAGS, ULONG, LPSTR); + ULONG MAPIResolveName(LHANDLE, ULONG_PTR, LPSTR, FLAGS, ULONG, lpMapiRecipDesc*); - ULONG MAPIAddress(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, + ULONG MAPIAddress(LHANDLE, ULONG_PTR, LPSTR, ULONG, LPSTR, ULONG, lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*); ULONG MAPIFreeBuffer(LPVOID); - ULONG MAPIDetails(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG); - ULONG MAPISaveMail(LHANDLE, ULONG, lpMapiMessage lpszMessage, FLAGS, + ULONG MAPIDetails(LHANDLE, ULONG_PTR, lpMapiRecipDesc, FLAGS, ULONG); + ULONG MAPISaveMail(LHANDLE, ULONG_PTR, lpMapiMessage lpszMessage, FLAGS, ULONG, LPSTR); - ULONG MAPIDeleteMail(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG); - ULONG MAPILogoff(LHANDLE, ULONG, FLAGS, ULONG); + ULONG MAPIDeleteMail(LHANDLE, ULONG_PTR, LPSTR, FLAGS, ULONG); + ULONG MAPILogoff(LHANDLE, ULONG_PTR, FLAGS, ULONG); // Netscape extensions ULONG MAPIGetNetscapeVersion(); ULONG MAPI_NSCP_SynchronizeClient(LHANDLE, ULONG); // Handles for use with GetProcAddress - alias ULONG function(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE) + alias ULONG function(ULONG_PTR, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE) LPMAPILOGON; - alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG) + alias ULONG function(LHANDLE, ULONG_PTR, lpMapiMessage, FLAGS, ULONG) LPMAPISENDMAIL; - alias ULONG function(ULONG, LPSTR, LPSTR, LPSTR, ULONG) + alias ULONG function(ULONG_PTR, LPSTR, LPSTR, LPSTR, ULONG) LPMAPISENDDOCUMENTS; - alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*) + alias ULONG function(LHANDLE, ULONG_PTR, LPSTR, FLAGS, ULONG, lpMapiMessage*) LPMAPIREADMAIL; - alias ULONG function(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR) + alias ULONG function(LHANDLE, ULONG_PTR, LPSTR, LPSTR, FLAGS, ULONG, LPSTR) LPMAPIFINDNEXT; - alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, + alias ULONG function(LHANDLE, ULONG_PTR, LPSTR, FLAGS, ULONG, lpMapiRecipDesc*) LPMAPIRESOLVENAME; - alias ULONG function(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, + alias ULONG function(LHANDLE, ULONG_PTR, LPSTR, ULONG, LPSTR, ULONG, lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*) LPMAPIADDRESS; alias ULONG function(LPVOID lpv) LPMAPIFREEBUFFER; - alias ULONG function(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG) + alias ULONG function(LHANDLE, ULONG_PTR, lpMapiRecipDesc, FLAGS, ULONG) LPMAPIDETAILS; - alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG, LPSTR) + alias ULONG function(LHANDLE, ULONG_PTR, lpMapiMessage, FLAGS, ULONG, LPSTR) LPMAPISAVEMAIL; - alias ULONG function(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG) + alias ULONG function(LHANDLE, ULONG_PTR, LPSTR, FLAGS, ULONG) LPMAPIDELETEMAIL; - alias ULONG function(LHANDLE, ULONG, FLAGS, ULONG) LPMAPILOGOFF; + alias ULONG function(LHANDLE, ULONG_PTR, FLAGS, ULONG) LPMAPILOGOFF; } diff --git a/src/core/sys/windows/ntsecpkg.d b/src/core/sys/windows/ntsecpkg.d index f0087decf6..55a31123b3 100644 --- a/src/core/sys/windows/ntsecpkg.d +++ b/src/core/sys/windows/ntsecpkg.d @@ -180,8 +180,8 @@ alias void function(ULONG_PTR, ULONG_PTR, PSecBuffer, /* misc typedefs used in the below prototypes */ alias PVOID* PLSA_CLIENT_REQUEST; -alias ULONG LSA_SEC_HANDLE; -alias ULONG* PLSA_SEC_HANDLE; +alias ULONG_PTR LSA_SEC_HANDLE; +alias LSA_SEC_HANDLE* PLSA_SEC_HANDLE; alias LPTHREAD_START_ROUTINE SEC_THREAD_START; alias PSECURITY_ATTRIBUTES SEC_ATTRS; diff --git a/src/core/sys/windows/ole.d b/src/core/sys/windows/ole.d index eb4117f083..cb7dffe410 100644 --- a/src/core/sys/windows/ole.d +++ b/src/core/sys/windows/ole.d @@ -156,7 +156,7 @@ enum OLEOPT_UPDATE { } mixin DECLARE_HANDLE!("HOBJECT"); -alias LONG LHSERVER, LHCLIENTDOC, LHSERVERDOC; +alias LONG_PTR LHSERVER, LHCLIENTDOC, LHSERVERDOC; struct OLEOBJECTVTBL { extern (Windows) { diff --git a/src/core/sys/windows/oleidl.d b/src/core/sys/windows/oleidl.d index 044e7d27bb..2c686023d7 100644 --- a/src/core/sys/windows/oleidl.d +++ b/src/core/sys/windows/oleidl.d @@ -230,11 +230,11 @@ interface IDropTarget : IUnknown { alias IDropTarget LPDROPTARGET; extern (Windows) { - alias BOOL function(DWORD) __IView_pfncont; + alias BOOL function(ULONG_PTR) __IView_pfncont; } interface IViewObject : IUnknown { - HRESULT Draw(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD); + HRESULT Draw(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,ULONG_PTR); HRESULT GetColorSet(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*); HRESULT Freeze(DWORD,LONG,PVOID,PDWORD); HRESULT Unfreeze(DWORD); diff --git a/src/core/sys/windows/prsht.d b/src/core/sys/windows/prsht.d index 2a92a38f94..3dbb3146ea 100644 --- a/src/core/sys/windows/prsht.d +++ b/src/core/sys/windows/prsht.d @@ -335,8 +335,8 @@ extern (Windows) { HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA); HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW); BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); - int PropertySheetA(LPCPROPSHEETHEADERA); - int PropertySheetW(LPCPROPSHEETHEADERW); + INT_PTR PropertySheetA(LPCPROPSHEETHEADERA); + INT_PTR PropertySheetW(LPCPROPSHEETHEADERW); } version (Unicode) { diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d index 0f35327c04..5e516c8130 100644 --- a/src/core/sys/windows/rasdlg.d +++ b/src/core/sys/windows/rasdlg.d @@ -78,8 +78,8 @@ alias RASDIALDLG* LPRASDIALDLG; // Application-defined callback functions extern (Windows) { - alias VOID function(DWORD, DWORD, LPWSTR, LPVOID) RASPBDLGFUNCW; - alias VOID function(DWORD, DWORD, LPSTR, LPVOID) RASPBDLGFUNCA; + alias VOID function(ULONG_PTR, DWORD, LPWSTR, LPVOID) RASPBDLGFUNCW; + alias VOID function(ULONG_PTR, DWORD, LPSTR, LPVOID) RASPBDLGFUNCA; } struct RASPBDLGA { diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index ae8a494462..b9a9b9ed9a 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -357,7 +357,7 @@ extern (Windows) nothrow @nogc { UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT); HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR); HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR); - UINT SHAppBarMessage(DWORD, PAPPBARDATA); + UINT_PTR SHAppBarMessage(DWORD, PAPPBARDATA); BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA); BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW); int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON); @@ -369,8 +369,8 @@ extern (Windows) nothrow @nogc { int SHFileOperationA(LPSHFILEOPSTRUCTA); int SHFileOperationW(LPSHFILEOPSTRUCTW); void SHFreeNameMappings(HANDLE); - DWORD SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); - DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); + DWORD_PTR SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); + DWORD_PTR SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD); diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index a069a47186..7397976213 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -683,7 +683,7 @@ interface IObjMgr : IUnknown { interface IContextMenu : IUnknown { HRESULT QueryContextMenu(HMENU, UINT, UINT, UINT, UINT); HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); - HRESULT GetCommandString(UINT, UINT, PUINT, LPSTR, UINT); + HRESULT GetCommandString(UINT_PTR, UINT, PUINT, LPSTR, UINT); } alias IContextMenu LPCONTEXTMENU; diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index 4b107f9ac2..6441beb0c5 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -1863,7 +1863,7 @@ WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); BOOL GetPrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); BOOL GetPrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); FARPROC GetProcAddress(HMODULE, LPCSTR); // 1st param wrongly HINSTANCE in MinGW - BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); + BOOL GetProcessAffinityMask(HANDLE, PDWORD_PTR, PDWORD_PTR); DWORD GetProcessVersion(DWORD); UINT GetProfileIntA(LPCSTR, LPCSTR, INT); UINT GetProfileIntW(LPCWSTR, LPCWSTR, INT); diff --git a/src/core/sys/windows/wincrypt.d b/src/core/sys/windows/wincrypt.d index bb18532134..6843c7e509 100644 --- a/src/core/sys/windows/wincrypt.d +++ b/src/core/sys/windows/wincrypt.d @@ -501,7 +501,7 @@ enum { alias UINT ALG_ID; -alias ULONG HCRYPTPROV, HCRYPTKEY, HCRYPTHASH; +alias ULONG_PTR HCRYPTPROV, HCRYPTKEY, HCRYPTHASH; alias PVOID HCERTSTORE, HCRYPTMSG, HCERTCHAINENGINE; struct VTableProvStruc { @@ -844,7 +844,7 @@ const(void)*, PCCERT_CHAIN_CONTEXT); BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD); - BOOL CryptReleaseContext(HCRYPTPROV, DWORD); + BOOL CryptReleaseContext(HCRYPTPROV, ULONG_PTR); BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*); BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*); BOOL CryptDestroyKey(HCRYPTKEY); From df12ae21e16dd6db10f07fa1d6dd20b9a6566754 Mon Sep 17 00:00:00 2001 From: qchikara Date: Fri, 13 May 2016 11:30:32 +0900 Subject: [PATCH 357/768] More fix of DWORD_PTR wininet functions --- src/core/sys/windows/wininet.d | 60 +++++++++++++++++----------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index 129b857a30..0528f9fbf3 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -721,7 +721,7 @@ struct INTERNET_CERTIFICATE_INFO { } alias INTERNET_CERTIFICATE_INFO* LPINTERNET_CERTIFICATE_INFO; -extern (Windows) alias void function(HINTERNET, DWORD, DWORD, PVOID, DWORD) +extern (Windows) alias void function(HINTERNET, DWORD_PTR, DWORD, PVOID, DWORD) INTERNET_STATUS_CALLBACK; alias INTERNET_STATUS_CALLBACK* LPINTERNET_STATUS_CALLBACK; @@ -986,17 +986,17 @@ extern (Windows) { HINTERNET InternetOpenW(LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD); BOOL InternetCloseHandle(HINTERNET); HINTERNET InternetConnectA(HINTERNET, LPCSTR, INTERNET_PORT, LPCSTR, - LPCSTR, DWORD, DWORD, DWORD); + LPCSTR, DWORD, DWORD, DWORD_PTR); HINTERNET InternetConnectW(HINTERNET, LPCWSTR, INTERNET_PORT, LPCWSTR, - LPCWSTR, DWORD, DWORD, DWORD); + LPCWSTR, DWORD, DWORD, DWORD_PTR); HINTERNET InternetOpenUrlA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD, - DWORD); + DWORD_PTR); HINTERNET InternetOpenUrlW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD, - DWORD); + DWORD_PTR); BOOL InternetReadFile(HINTERNET, PVOID, DWORD, PDWORD); - DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD); + DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD_PTR); BOOL InternetWriteFile(HINTERNET, LPCVOID, DWORD, PDWORD); - BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD); + BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD_PTR); BOOL InternetFindNextFileA(HINTERNET, PVOID); BOOL InternetFindNextFileW(HINTERNET, PVOID); BOOL InternetQueryOptionA(HINTERNET, DWORD, PVOID, PDWORD); @@ -1010,20 +1010,20 @@ extern (Windows) { INTERNET_STATUS_CALLBACK InternetSetStatusCallback(HINTERNET, INTERNET_STATUS_CALLBACK); DWORD FtpGetFileSize(HINTERNET, LPDWORD); - HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATA, DWORD, - DWORD); - HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATA, DWORD, - DWORD); - BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD); - BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD); - BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); - BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); + HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATAA, DWORD, + DWORD_PTR); + HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATAW, DWORD, + DWORD_PTR); + BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD_PTR); + BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD_PTR); + BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD_PTR); + BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD_PTR); BOOL FtpDeleteFileA(HINTERNET, LPCSTR); BOOL FtpDeleteFileW(HINTERNET, LPCWSTR); BOOL FtpRenameFileA(HINTERNET, LPCSTR, LPCSTR); BOOL FtpRenameFileW(HINTERNET, LPCWSTR, LPCWSTR); - HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD); - HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD); + HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD_PTR); + HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD_PTR); BOOL FtpCreateDirectoryA(HINTERNET, LPCSTR); BOOL FtpCreateDirectoryW(HINTERNET, LPCWSTR); BOOL FtpRemoveDirectoryA(HINTERNET, LPCSTR); @@ -1041,19 +1041,19 @@ extern (Windows) { BOOL GopherGetLocatorTypeA(LPCSTR, PDWORD); BOOL GopherGetLocatorTypeW(LPCWSTR, PDWORD); HINTERNET GopherFindFirstFileA(HINTERNET, LPCSTR, LPCSTR, - LPGOPHER_FIND_DATAA, DWORD, DWORD); + LPGOPHER_FIND_DATAA, DWORD, DWORD_PTR); HINTERNET GopherFindFirstFileW(HINTERNET, LPCWSTR, LPCWSTR, - LPGOPHER_FIND_DATAW, DWORD, DWORD); - HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); - HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); + LPGOPHER_FIND_DATAW, DWORD, DWORD_PTR); + HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD_PTR); + HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD_PTR); BOOL GopherGetAttributeA(HINTERNET, LPCSTR, LPCSTR, LPBYTE, DWORD, - PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); + PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD_PTR); BOOL GopherGetAttributeW(HINTERNET, LPCWSTR, LPCWSTR, LPBYTE, DWORD, - PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); + PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD_PTR); HINTERNET HttpOpenRequestA(HINTERNET, LPCSTR, LPCSTR, LPCSTR, LPCSTR, - LPCSTR*, DWORD, DWORD); + LPCSTR*, DWORD, DWORD_PTR); HINTERNET HttpOpenRequestW(HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, - LPCWSTR*, DWORD, DWORD); + LPCWSTR*, DWORD, DWORD_PTR); BOOL HttpAddRequestHeadersA(HINTERNET, LPCSTR, DWORD, DWORD); BOOL HttpAddRequestHeadersW(HINTERNET, LPCWSTR, DWORD, DWORD); BOOL HttpSendRequestA(HINTERNET, LPCSTR, DWORD, PVOID, DWORD); @@ -1099,13 +1099,13 @@ extern (Windows) { DWORD AuthenticateUser(PVOID*, LPSTR, LPSTR, DWORD, LPSTR, DWORD, LPSTR, LPSTR); BOOL HttpSendRequestExA(HINTERNET, LPINTERNET_BUFFERSA, - LPINTERNET_BUFFERSA, DWORD, DWORD); + LPINTERNET_BUFFERSA, DWORD, DWORD_PTR); BOOL HttpSendRequestExW(HINTERNET, LPINTERNET_BUFFERSW, - LPINTERNET_BUFFERSW, DWORD, DWORD); - BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD); - BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD); + LPINTERNET_BUFFERSW, DWORD, DWORD_PTR); + BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR); + BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR); DWORD InternetDial(HWND, LPTSTR, DWORD, LPDWORD, DWORD); - DWORD InternetHangUp(DWORD, DWORD); + DWORD InternetHangUp(DWORD_PTR, DWORD); BOOL InternetGoOnline(LPTSTR, HWND, DWORD); BOOL InternetAutodial(DWORD, DWORD); BOOL InternetAutodialHangup(DWORD); From a02251b5b2a4decf9e476f7255ad938fcb94f1ad Mon Sep 17 00:00:00 2001 From: qchikara Date: Fri, 13 May 2016 17:32:40 +0900 Subject: [PATCH 358/768] More fixes DWORD_PTR mmsystem structs and functions Note: This module gets dozens of fixes, so other changes could likely conflict. --- src/core/sys/windows/mmsystem.d | 170 ++++++++++++++++---------------- 1 file changed, 85 insertions(+), 85 deletions(-) diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index b001ae0e05..2f475e5b87 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -1069,8 +1069,8 @@ alias DRVCONFIGINFOEX* PDRVCONFIGINFOEX, LPDRVCONFIGINFOEX; extern(Windows): /+FIXME: I couldn't find these in MSDN. -alias void function (HDRVR, UINT, DWORD, DWORD, DWORD) DRVCALLBACK; -LRESULT DRIVERPROC (DWORD, HDRVR, UINT, LPARAM, LPARAM); +alias void function (HDRVR, UINT, DWORD_PTR, DWORD_PTR, DWORD_PTR) DRVCALLBACK; +LRESULT DRIVERPROC (DWORD_PTR, HDRVR, UINT, LPARAM, LPARAM); alias DRVCALLBACK* LPDRVCALLBACK, PDRVCALLBACK; alias DRVCALLBACK WAVECALLBACK; @@ -1092,11 +1092,11 @@ struct WAVEHDR { LPSTR lpData; DWORD dwBufferLength; DWORD dwBytesRecorded; - DWORD dwUser; + DWORD_PTR dwUser; DWORD dwFlags; DWORD dwLoops; WAVEHDR *lpNext; - DWORD reserved; + DWORD_PTR reserved; } alias WAVEHDR* PWAVEHDR, LPWAVEHDR; @@ -1236,12 +1236,12 @@ struct MIDIHDR { LPSTR lpData; DWORD dwBufferLength; DWORD dwBytesRecorded; - DWORD dwUser; + DWORD_PTR dwUser; DWORD dwFlags; MIDIHDR *lpNext; - DWORD reserved; + DWORD_PTR reserved; DWORD dwOffset; - DWORD[8] dwReserved; + DWORD_PTR[8] dwReserved; } alias MIDIHDR* PMIDIHDR, LPMIDIHDR; @@ -1324,7 +1324,7 @@ struct MIXERLINEA { DWORD dwSource; DWORD dwLineID; DWORD fdwLine; - DWORD dwUser; + DWORD_PTR dwUser; DWORD dwComponentType; DWORD cChannels; DWORD cConnections; @@ -1349,7 +1349,7 @@ struct MIXERLINEW { DWORD dwSource; DWORD dwLineID; DWORD fdwLine; - DWORD dwUser; + DWORD_PTR dwUser; DWORD dwComponentType; DWORD cChannels; DWORD cConnections; @@ -1495,7 +1495,7 @@ struct MIXERCONTROLDETAILS_UNSIGNED { } alias MIXERCONTROLDETAILS_UNSIGNED* PMIXERCONTROLDETAILS_UNSIGNED, LPMIXERCONTROLDETAILS_UNSIGNED; -alias void function (UINT, UINT, DWORD, DWORD, DWORD) LPTIMECALLBACK; +alias void function (UINT, UINT, DWORD_PTR, DWORD_PTR, DWORD_PTR) LPTIMECALLBACK; struct TIMECAPS { UINT wPeriodMin; @@ -1623,12 +1623,12 @@ alias MMCKINFO* PMMCKINFO, LPMMCKINFO; alias const(MMCKINFO)* LPCMMCKINFO; struct MCI_GENERIC_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; } alias MCI_GENERIC_PARMS* PMCI_GENERIC_PARMS, LPMCI_GENERIC_PARMS; struct MCI_OPEN_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCSTR lpstrDeviceType; LPCSTR lpstrElementName; @@ -1637,7 +1637,7 @@ struct MCI_OPEN_PARMSA { alias MCI_OPEN_PARMSA* PMCI_OPEN_PARMSA, LPMCI_OPEN_PARMSA; struct MCI_OPEN_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCWSTR lpstrDeviceType; LPCWSTR lpstrElementName; @@ -1646,49 +1646,49 @@ struct MCI_OPEN_PARMSW { alias MCI_OPEN_PARMSW* PMCI_OPEN_PARMSW, LPMCI_OPEN_PARMSW; struct MCI_PLAY_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwFrom; DWORD dwTo; } alias MCI_PLAY_PARMS* PMCI_PLAY_PARMS, LPMCI_PLAY_PARMS; struct MCI_SEEK_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwTo; } alias MCI_SEEK_PARMS* PMCI_SEEK_PARMS, LPMCI_SEEK_PARMS; struct MCI_STATUS_PARMS { - DWORD dwCallback; - DWORD dwReturn; + DWORD_PTR dwCallback; + DWORD_PTR dwReturn; DWORD dwItem; DWORD dwTrack; } alias MCI_STATUS_PARMS* PMCI_STATUS_PARMS, LPMCI_STATUS_PARMS; struct MCI_INFO_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; LPSTR lpstrReturn; DWORD dwRetSize; } alias MCI_INFO_PARMSA* LPMCI_INFO_PARMSA; struct MCI_INFO_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; LPWSTR lpstrReturn; DWORD dwRetSize; } alias MCI_INFO_PARMSW* LPMCI_INFO_PARMSW; struct MCI_GETDEVCAPS_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwReturn; DWORD dwItem; } alias MCI_GETDEVCAPS_PARMS* PMCI_GETDEVCAPS_PARMS, LPMCI_GETDEVCAPS_PARMS; struct MCI_SYSINFO_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; LPSTR lpstrReturn; DWORD dwRetSize; DWORD dwNumber; @@ -1697,7 +1697,7 @@ struct MCI_SYSINFO_PARMSA { alias MCI_SYSINFO_PARMSA* PMCI_SYSINFO_PARMSA, LPMCI_SYSINFO_PARMSA; struct MCI_SYSINFO_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; LPWSTR lpstrReturn; DWORD dwRetSize; DWORD dwNumber; @@ -1706,52 +1706,52 @@ struct MCI_SYSINFO_PARMSW { alias MCI_SYSINFO_PARMSW* PMCI_SYSINFO_PARMSW, LPMCI_SYSINFO_PARMSW; struct MCI_SET_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwTimeFormat; DWORD dwAudio; } alias MCI_SET_PARMS* PMCI_SET_PARMS, LPMCI_SET_PARMS; struct MCI_BREAK_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; int nVirtKey; HWND hwndBreak; } alias MCI_BREAK_PARMS* PMCI_BREAK_PARMS, LPMCI_BREAK_PARMS; struct MCI_SAVE_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; LPCSTR lpfilename; } alias MCI_SAVE_PARMSA* PMCI_SAVE_PARMSA, LPMCI_SAVE_PARMSA; struct MCI_SAVE_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; LPCWSTR lpfilename; } alias MCI_SAVE_PARMSW* PMCI_SAVE_PARMSW, LPMCI_SAVE_PARMSW; struct MCI_LOAD_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; LPCSTR lpfilename; } alias MCI_LOAD_PARMSA* PMCI_LOAD_PARMSA, LPMCI_LOAD_PARMSA; struct MCI_LOAD_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; LPCWSTR lpfilename; } alias MCI_LOAD_PARMSW* PMCI_LOAD_PARMSW, LPMCI_LOAD_PARMSW; struct MCI_RECORD_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwFrom; DWORD dwTo; } alias MCI_RECORD_PARMS* LPMCI_RECORD_PARMS; struct MCI_VD_PLAY_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwFrom; DWORD dwTo; DWORD dwSpeed; @@ -1759,25 +1759,25 @@ struct MCI_VD_PLAY_PARMS { alias MCI_VD_PLAY_PARMS* PMCI_VD_PLAY_PARMS, LPMCI_VD_PLAY_PARMS; struct MCI_VD_STEP_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwFrames; } alias MCI_VD_STEP_PARMS* PMCI_VD_STEP_PARMS, LPMCI_VD_STEP_PARMS; struct MCI_VD_ESCAPE_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; LPCSTR lpstrCommand; } alias MCI_VD_ESCAPE_PARMSA* PMCI_VD_ESCAPE_PARMSA, LPMCI_VD_ESCAPE_PARMSA; struct MCI_VD_ESCAPE_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; LPCWSTR lpstrCommand; } alias MCI_VD_ESCAPE_PARMSW* PMCI_VD_ESCAPE_PARMSW, LPMCI_VD_ESCAPE_PARMSW; struct MCI_WAVE_OPEN_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCSTR lpstrDeviceType; LPCSTR lpstrElementName; @@ -1787,7 +1787,7 @@ struct MCI_WAVE_OPEN_PARMSA { alias MCI_WAVE_OPEN_PARMSA* PMCI_WAVE_OPEN_PARMSA, LPMCI_WAVE_OPEN_PARMSA; struct MCI_WAVE_OPEN_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCWSTR lpstrDeviceType; LPCWSTR lpstrElementName; @@ -1797,14 +1797,14 @@ struct MCI_WAVE_OPEN_PARMSW { alias MCI_WAVE_OPEN_PARMSW* PMCI_WAVE_OPEN_PARMSW, LPMCI_WAVE_OPEN_PARMSW; struct MCI_WAVE_DELETE_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwFrom; DWORD dwTo; } alias MCI_WAVE_DELETE_PARMS* PMCI_WAVE_DELETE_PARMS, LPMCI_WAVE_DELETE_PARMS; struct MCI_WAVE_SET_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwTimeFormat; DWORD dwAudio; UINT wInput; @@ -1828,7 +1828,7 @@ HDRVR OpenDriver(LPCWSTR, LPCWSTR, LONG); LRESULT SendDriverMessage(HDRVR, UINT, LONG, LONG); HMODULE DrvGetModuleHandle(HDRVR); HMODULE GetDriverModuleHandle(HDRVR); -LRESULT DefDriverProc(DWORD, HDRVR, UINT, LPARAM, LPARAM); +LRESULT DefDriverProc(DWORD_PTR, HDRVR, UINT, LPARAM, LPARAM); UINT mmsystemGetVersion(); // FIXME: I believe this next line is a mistake //alias OutputDebugString OutputDebugStr; @@ -1837,13 +1837,13 @@ BOOL sndPlaySoundW(LPCWSTR, UINT); BOOL PlaySoundA(LPCSTR, HMODULE, DWORD); BOOL PlaySoundW(LPCWSTR, HMODULE, DWORD); UINT waveOutGetNumDevs(); -MMRESULT waveOutGetDevCapsA(UINT, LPWAVEOUTCAPSA, UINT); -MMRESULT waveOutGetDevCapsW(UINT, LPWAVEOUTCAPSW, UINT); +MMRESULT waveOutGetDevCapsA(UINT_PTR, LPWAVEOUTCAPSA, UINT); +MMRESULT waveOutGetDevCapsW(UINT_PTR, LPWAVEOUTCAPSW, UINT); MMRESULT waveOutGetVolume(HWAVEOUT, PDWORD); MMRESULT waveOutSetVolume(HWAVEOUT, DWORD); MMRESULT waveOutGetErrorTextA(MMRESULT, LPSTR, UINT); MMRESULT waveOutGetErrorTextW(MMRESULT, LPWSTR, UINT); -MMRESULT waveOutOpen(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD); +MMRESULT waveOutOpen(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD_PTR, DWORD_PTR, DWORD); MMRESULT waveOutClose(HWAVEOUT); MMRESULT waveOutPrepareHeader(HWAVEOUT, LPWAVEHDR, UINT); MMRESULT waveOutUnprepareHeader(HWAVEOUT, LPWAVEHDR, UINT); @@ -1858,13 +1858,13 @@ MMRESULT waveOutSetPitch(HWAVEOUT, DWORD); MMRESULT waveOutGetPlaybackRate(HWAVEOUT, PDWORD); MMRESULT waveOutSetPlaybackRate(HWAVEOUT, DWORD); MMRESULT waveOutGetID(HWAVEOUT, LPUINT); -MMRESULT waveOutMessage(HWAVEOUT, UINT, DWORD, DWORD); +MMRESULT waveOutMessage(HWAVEOUT, UINT, DWORD_PTR, DWORD_PTR); UINT waveInGetNumDevs(); -MMRESULT waveInGetDevCapsA(UINT, LPWAVEINCAPSA, UINT); -MMRESULT waveInGetDevCapsW(UINT, LPWAVEINCAPSW, UINT); +MMRESULT waveInGetDevCapsA(UINT_PTR, LPWAVEINCAPSA, UINT); +MMRESULT waveInGetDevCapsW(UINT_PTR, LPWAVEINCAPSW, UINT); MMRESULT waveInGetErrorTextA(MMRESULT, LPSTR, UINT); MMRESULT waveInGetErrorTextW(MMRESULT, LPWSTR, UINT); -MMRESULT waveInOpen(LPHWAVEIN, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD); +MMRESULT waveInOpen(LPHWAVEIN, UINT, LPCWAVEFORMATEX, DWORD_PTR, DWORD_PTR, DWORD); MMRESULT waveInClose(HWAVEIN); MMRESULT waveInPrepareHeader(HWAVEIN, LPWAVEHDR, UINT); MMRESULT waveInUnprepareHeader(HWAVEIN, LPWAVEHDR, UINT); @@ -1874,9 +1874,9 @@ MMRESULT waveInStop(HWAVEIN); MMRESULT waveInReset(HWAVEIN); MMRESULT waveInGetPosition(HWAVEIN, LPMMTIME, UINT); MMRESULT waveInGetID(HWAVEIN, LPUINT); -MMRESULT waveInMessage(HWAVEIN, UINT, DWORD, DWORD); +MMRESULT waveInMessage(HWAVEIN, UINT, DWORD_PTR, DWORD_PTR); UINT midiOutGetNumDevs(); -MMRESULT midiStreamOpen(LPHMIDISTRM, LPUINT, DWORD, DWORD, DWORD, DWORD); +MMRESULT midiStreamOpen(LPHMIDISTRM, LPUINT, DWORD, DWORD_PTR, DWORD_PTR, DWORD); MMRESULT midiStreamClose(HMIDISTRM); MMRESULT midiStreamProperty(HMIDISTRM, LPBYTE, DWORD); MMRESULT midiStreamPosition(HMIDISTRM, LPMMTIME, UINT); @@ -1886,13 +1886,13 @@ MMRESULT midiStreamRestart(HMIDISTRM); MMRESULT midiStreamStop(HMIDISTRM); MMRESULT midiConnect(HMIDI, HMIDIOUT, PVOID); MMRESULT midiDisconnect(HMIDI, HMIDIOUT, PVOID); -MMRESULT midiOutGetDevCapsA(UINT, LPMIDIOUTCAPSA, UINT); -MMRESULT midiOutGetDevCapsW(UINT, LPMIDIOUTCAPSW, UINT); +MMRESULT midiOutGetDevCapsA(UINT_PTR, LPMIDIOUTCAPSA, UINT); +MMRESULT midiOutGetDevCapsW(UINT_PTR, LPMIDIOUTCAPSW, UINT); MMRESULT midiOutGetVolume(HMIDIOUT, PDWORD); MMRESULT midiOutSetVolume(HMIDIOUT, DWORD); MMRESULT midiOutGetErrorTextA(MMRESULT, LPSTR, UINT); MMRESULT midiOutGetErrorTextW(MMRESULT, LPWSTR, UINT); -MMRESULT midiOutOpen(LPHMIDIOUT, UINT, DWORD, DWORD, DWORD); +MMRESULT midiOutOpen(LPHMIDIOUT, UINT, DWORD_PTR, DWORD_PTR, DWORD); MMRESULT midiOutClose(HMIDIOUT); MMRESULT midiOutPrepareHeader(HMIDIOUT, LPMIDIHDR, UINT); MMRESULT midiOutUnprepareHeader(HMIDIOUT, LPMIDIHDR, UINT); @@ -1902,13 +1902,13 @@ MMRESULT midiOutReset(HMIDIOUT); MMRESULT midiOutCachePatches(HMIDIOUT, UINT, LPWORD, UINT); MMRESULT midiOutCacheDrumPatches(HMIDIOUT, UINT, LPWORD, UINT); MMRESULT midiOutGetID(HMIDIOUT, LPUINT); -MMRESULT midiOutMessage(HMIDIOUT, UINT, DWORD, DWORD); +MMRESULT midiOutMessage(HMIDIOUT, UINT, DWORD_PTR, DWORD_PTR); UINT midiInGetNumDevs(); -MMRESULT midiInGetDevCapsA(UINT, LPMIDIINCAPSA, UINT); -MMRESULT midiInGetDevCapsW(UINT, LPMIDIINCAPSW, UINT); +MMRESULT midiInGetDevCapsA(UINT_PTR, LPMIDIINCAPSA, UINT); +MMRESULT midiInGetDevCapsW(UINT_PTR, LPMIDIINCAPSW, UINT); MMRESULT midiInGetErrorTextA(MMRESULT, LPSTR, UINT); MMRESULT midiInGetErrorTextW(MMRESULT, LPWSTR, UINT); -MMRESULT midiInOpen(LPHMIDIIN, UINT, DWORD, DWORD, DWORD); +MMRESULT midiInOpen(LPHMIDIIN, UINT, DWORD_PTR, DWORD_PTR, DWORD); MMRESULT midiInClose(HMIDIIN); MMRESULT midiInPrepareHeader(HMIDIIN, LPMIDIHDR, UINT); MMRESULT midiInUnprepareHeader(HMIDIIN, LPMIDIHDR, UINT); @@ -1917,19 +1917,19 @@ MMRESULT midiInStart(HMIDIIN); MMRESULT midiInStop(HMIDIIN); MMRESULT midiInReset(HMIDIIN); MMRESULT midiInGetID(HMIDIIN, LPUINT); -MMRESULT midiInMessage(HMIDIIN, UINT, DWORD, DWORD); +MMRESULT midiInMessage(HMIDIIN, UINT, DWORD_PTR, DWORD_PTR); UINT auxGetNumDevs(); -MMRESULT auxGetDevCapsA(UINT, LPAUXCAPSA, UINT); -MMRESULT auxGetDevCapsW(UINT, LPAUXCAPSW, UINT); +MMRESULT auxGetDevCapsA(UINT_PTR, LPAUXCAPSA, UINT); +MMRESULT auxGetDevCapsW(UINT_PTR, LPAUXCAPSW, UINT); MMRESULT auxSetVolume(UINT, DWORD); MMRESULT auxGetVolume(UINT, PDWORD); -MMRESULT auxOutMessage(UINT, UINT, DWORD, DWORD); +MMRESULT auxOutMessage(UINT, UINT, DWORD_PTR, DWORD_PTR); UINT mixerGetNumDevs(); -MMRESULT mixerGetDevCapsA(UINT, LPMIXERCAPSA, UINT); -MMRESULT mixerGetDevCapsW(UINT, LPMIXERCAPSW, UINT); -MMRESULT mixerOpen(LPHMIXER, UINT, DWORD, DWORD, DWORD); +MMRESULT mixerGetDevCapsA(UINT_PTR, LPMIXERCAPSA, UINT); +MMRESULT mixerGetDevCapsW(UINT_PTR, LPMIXERCAPSW, UINT); +MMRESULT mixerOpen(LPHMIXER, UINT, DWORD_PTR, DWORD_PTR, DWORD); MMRESULT mixerClose(HMIXER); -DWORD mixerMessage(HMIXER, UINT, DWORD, DWORD); +DWORD mixerMessage(HMIXER, UINT, DWORD_PTR, DWORD_PTR); MMRESULT mixerGetLineInfoA(HMIXEROBJ, LPMIXERLINEA, DWORD); MMRESULT mixerGetLineInfoW(HMIXEROBJ, LPMIXERLINEW, DWORD); MMRESULT mixerGetID(HMIXEROBJ, PUINT, DWORD); @@ -1940,14 +1940,14 @@ MMRESULT mixerGetControlDetailsW(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); MMRESULT mixerSetControlDetails(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); MMRESULT timeGetSystemTime(LPMMTIME, UINT); DWORD timeGetTime(); -MMRESULT timeSetEvent(UINT, UINT, LPTIMECALLBACK, DWORD, UINT); +MMRESULT timeSetEvent(UINT, UINT, LPTIMECALLBACK, DWORD_PTR, UINT); MMRESULT timeKillEvent(UINT); MMRESULT timeGetDevCaps(LPTIMECAPS, UINT); MMRESULT timeBeginPeriod(UINT); MMRESULT timeEndPeriod(UINT); UINT joyGetNumDevs(); -MMRESULT joyGetDevCapsA(UINT, LPJOYCAPSA, UINT); -MMRESULT joyGetDevCapsW(UINT, LPJOYCAPSW, UINT); +MMRESULT joyGetDevCapsA(UINT_PTR, LPJOYCAPSA, UINT); +MMRESULT joyGetDevCapsW(UINT_PTR, LPJOYCAPSW, UINT); MMRESULT joyGetPos(UINT, LPJOYINFO); MMRESULT joyGetPosEx(UINT, LPJOYINFOEX); MMRESULT joyGetThreshold(UINT, LPUINT); @@ -1975,8 +1975,8 @@ LRESULT mmioSendMessage(HMMIO, UINT, LPARAM, LPARAM); MMRESULT mmioDescend(HMMIO, LPMMCKINFO, const(MMCKINFO)*, UINT); MMRESULT mmioAscend(HMMIO, LPMMCKINFO, UINT); MMRESULT mmioCreateChunk(HMMIO, LPMMCKINFO, UINT); -MCIERROR mciSendCommandA(MCIDEVICEID, UINT, DWORD, DWORD); -MCIERROR mciSendCommandW(MCIDEVICEID, UINT, DWORD, DWORD); +MCIERROR mciSendCommandA(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR); +MCIERROR mciSendCommandW(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR); MCIERROR mciSendStringA(LPCSTR, LPSTR, UINT, HWND); MCIERROR mciSendStringW(LPCWSTR, LPWSTR, UINT, HWND); MCIDEVICEID mciGetDeviceIDA(LPCSTR); @@ -1990,7 +1990,7 @@ HTASK mciGetCreatorTask(MCIDEVICEID); YIELDPROC mciGetYieldProc(MCIDEVICEID, PDWORD); struct MCI_SEQ_SET_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwTimeFormat; DWORD dwAudio; DWORD dwTempo; @@ -2002,7 +2002,7 @@ struct MCI_SEQ_SET_PARMS { alias MCI_SEQ_SET_PARMS* PMCI_SEQ_SET_PARMS, LPMCI_SEQ_SET_PARMS; struct MCI_ANIM_OPEN_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCSTR lpstrDeviceType; LPCSTR lpstrElementName; @@ -2013,7 +2013,7 @@ struct MCI_ANIM_OPEN_PARMSA { alias MCI_ANIM_OPEN_PARMSA* PMCI_ANIM_OPEN_PARMSA, LPMCI_ANIM_OPEN_PARMSA; struct MCI_ANIM_OPEN_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCWSTR lpstrDeviceType; LPCWSTR lpstrElementName; @@ -2024,7 +2024,7 @@ struct MCI_ANIM_OPEN_PARMSW { alias MCI_ANIM_OPEN_PARMSW* PMCI_ANIM_OPEN_PARMSW, LPMCI_ANIM_OPEN_PARMSW; struct MCI_ANIM_PLAY_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwFrom; DWORD dwTo; DWORD dwSpeed; @@ -2032,13 +2032,13 @@ struct MCI_ANIM_PLAY_PARMS { alias MCI_ANIM_PLAY_PARMS* PMCI_ANIM_PLAY_PARMS, LPMCI_ANIM_PLAY_PARMS; struct MCI_ANIM_STEP_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; DWORD dwFrames; } alias MCI_ANIM_STEP_PARMS* PMCI_ANIM_STEP_PARMS, LPMCI_ANIM_STEP_PARMS; struct MCI_ANIM_WINDOW_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; HWND hWnd; UINT nCmdShow; LPCSTR lpstrText; @@ -2046,7 +2046,7 @@ struct MCI_ANIM_WINDOW_PARMSA { alias MCI_ANIM_WINDOW_PARMSA* PMCI_ANIM_WINDOW_PARMSA, LPMCI_ANIM_WINDOW_PARMSA; struct MCI_ANIM_WINDOW_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; HWND hWnd; UINT nCmdShow; LPCWSTR lpstrText; @@ -2054,7 +2054,7 @@ struct MCI_ANIM_WINDOW_PARMSW { alias MCI_ANIM_WINDOW_PARMSW* PMCI_ANIM_WINDOW_PARMSW, LPMCI_ANIM_WINDOW_PARMSW; struct MCI_ANIM_RECT_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; //#ifdef MCI_USE_OFFEXT // POINT ptOffset; // POINT ptExtent; @@ -2065,14 +2065,14 @@ struct MCI_ANIM_RECT_PARMS { alias MCI_ANIM_RECT_PARMS* PMCI_ANIM_RECT_PARMS, LPMCI_ANIM_RECT_PARMS; struct MCI_ANIM_UPDATE_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; RECT rc; HDC hDC; } alias MCI_ANIM_UPDATE_PARMS* PMCI_ANIM_UPDATE_PARMS, LPMCI_ANIM_UPDATE_PARMS; struct MCI_OVLY_OPEN_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCSTR lpstrDeviceType; LPCSTR lpstrElementName; @@ -2083,7 +2083,7 @@ struct MCI_OVLY_OPEN_PARMSA { alias MCI_OVLY_OPEN_PARMSA* PMCI_OVLY_OPEN_PARMSA, LPMCI_OVLY_OPEN_PARMSA; struct MCI_OVLY_OPEN_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCWSTR lpstrDeviceType; LPCWSTR lpstrElementName; @@ -2094,7 +2094,7 @@ struct MCI_OVLY_OPEN_PARMSW { alias MCI_OVLY_OPEN_PARMSW* PMCI_OVLY_OPEN_PARMSW, LPMCI_OVLY_OPEN_PARMSW; struct MCI_OVLY_WINDOW_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; HWND hWnd; UINT nCmdShow; LPCSTR lpstrText; @@ -2102,7 +2102,7 @@ struct MCI_OVLY_WINDOW_PARMSA { alias MCI_OVLY_WINDOW_PARMSA* PMCI_OVLY_WINDOW_PARMSA, LPMCI_OVLY_WINDOW_PARMSA; struct MCI_OVLY_WINDOW_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; HWND hWnd; UINT nCmdShow; LPCWSTR lpstrText; @@ -2110,7 +2110,7 @@ struct MCI_OVLY_WINDOW_PARMSW { alias MCI_OVLY_WINDOW_PARMSW* PMCI_OVLY_WINDOW_PARMSW, LPMCI_OVLY_WINDOW_PARMSW; struct MCI_OVLY_RECT_PARMS { - DWORD dwCallback; + DWORD_PTR dwCallback; //#ifdef MCI_USE_OFFEXT // POINT ptOffset; // POINT ptExtent; @@ -2121,28 +2121,28 @@ struct MCI_OVLY_RECT_PARMS { alias MCI_OVLY_RECT_PARMS* PMCI_OVLY_RECT_PARMS, LPMCI_OVLY_RECT_PARMS; struct MCI_OVLY_SAVE_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; LPCSTR lpfilename; RECT rc; } alias MCI_OVLY_SAVE_PARMSA* PMCI_OVLY_SAVE_PARMSA, LPMCI_OVLY_SAVE_PARMSA; struct MCI_OVLY_SAVE_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; LPCWSTR lpfilename; RECT rc; } alias MCI_OVLY_SAVE_PARMSW* PMCI_OVLY_SAVE_PARMSW, LPMCI_OVLY_SAVE_PARMSW; struct MCI_OVLY_LOAD_PARMSA { - DWORD dwCallback; + DWORD_PTR dwCallback; LPCSTR lpfilename; RECT rc; } alias MCI_OVLY_LOAD_PARMSA* PMCI_OVLY_LOAD_PARMSA, LPMCI_OVLY_LOAD_PARMSA; struct MCI_OVLY_LOAD_PARMSW { - DWORD dwCallback; + DWORD_PTR dwCallback; LPCWSTR lpfilename; RECT rc; } From 011a0033ad99feb07488b2577676d8a53552bf75 Mon Sep 17 00:00:00 2001 From: qchikara Date: Mon, 9 May 2016 22:27:15 +0900 Subject: [PATCH 359/768] Fix paddings of structs in commdlg,nb30,winhttp for Win64 cheap trick instead of the alignment switch over module of winhttp --- src/core/sys/windows/commdlg.d | 24 +++++++++++++++++------- src/core/sys/windows/nb30.d | 5 ++++- src/core/sys/windows/winhttp.d | 4 ++++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/core/sys/windows/commdlg.d b/src/core/sys/windows/commdlg.d index 81fafbd280..40fa1cafb2 100644 --- a/src/core/sys/windows/commdlg.d +++ b/src/core/sys/windows/commdlg.d @@ -302,7 +302,7 @@ alias UINT_PTR function (HWND, UINT, WPARAM, LPARAM) nothrow LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; } -align (1): +//align (1): // 1 in Win32, default in Win64 struct CHOOSECOLORA { DWORD lStructSize = CHOOSECOLORA.sizeof; @@ -330,7 +330,7 @@ struct CHOOSECOLORW { } alias CHOOSECOLORW* LPCHOOSECOLORW; -align (4) struct CHOOSEFONTA { +struct CHOOSEFONTA { DWORD lStructSize = CHOOSEFONTA.sizeof; HWND hwndOwner; HDC hDC; @@ -344,13 +344,13 @@ align (4) struct CHOOSEFONTA { HINSTANCE hInstance; LPSTR lpszStyle; WORD nFontType; - //WORD ___MISSING_ALIGNMENT__; + WORD ___MISSING_ALIGNMENT__; INT nSizeMin; INT nSizeMax; } alias CHOOSEFONTA* LPCHOOSEFONTA; -align (4) struct CHOOSEFONTW { +struct CHOOSEFONTW { DWORD lStructSize = CHOOSEFONTW.sizeof; HWND hwndOwner; HDC hDC; @@ -364,7 +364,7 @@ align (4) struct CHOOSEFONTW { HINSTANCE hInstance; LPWSTR lpszStyle; WORD nFontType; - //WORD ___MISSING_ALIGNMENT__; + WORD ___MISSING_ALIGNMENT__; INT nSizeMin; INT nSizeMax; } @@ -520,8 +520,11 @@ struct PAGESETUPDLGW { } alias PAGESETUPDLGW* LPPAGESETUPDLGW; -struct PRINTDLGA { +align (1) struct PRINTDLGA { +align(1): DWORD lStructSize = PRINTDLGA.sizeof; + version (Win64) + DWORD padding1; HWND hwndOwner; HANDLE hDevMode; HANDLE hDevNames; @@ -532,6 +535,8 @@ struct PRINTDLGA { WORD nMinPage; WORD nMaxPage; WORD nCopies; + version (Win64) + WORD padding2; HINSTANCE hInstance; LPARAM lCustData; LPPRINTHOOKPROC lpfnPrintHook; @@ -543,8 +548,11 @@ struct PRINTDLGA { } alias PRINTDLGA* LPPRINTDLGA; -struct PRINTDLGW { +align (1) struct PRINTDLGW { +align(1): DWORD lStructSize = PRINTDLGW.sizeof; + version (Win64) + DWORD padding1; HWND hwndOwner; HANDLE hDevMode; HANDLE hDevNames; @@ -555,6 +563,8 @@ struct PRINTDLGW { WORD nMinPage; WORD nMaxPage; WORD nCopies; + version (Win64) + WORD padding2; HINSTANCE hInstance; LPARAM lCustData; LPPRINTHOOKPROC lpfnPrintHook; diff --git a/src/core/sys/windows/nb30.d b/src/core/sys/windows/nb30.d index db382dda03..d587a9f723 100644 --- a/src/core/sys/windows/nb30.d +++ b/src/core/sys/windows/nb30.d @@ -211,7 +211,10 @@ struct NCB { extern (Windows) void function(NCB*) ncb_post; UCHAR ncb_lana_num; UCHAR ncb_cmd_cplt; - UCHAR[10] ncb_reserve; + version (Win64) + UCHAR[18] ncb_reserve; + else + UCHAR[10] ncb_reserve; HANDLE ncb_event; } alias NCB* PNCB; diff --git a/src/core/sys/windows/winhttp.d b/src/core/sys/windows/winhttp.d index cacc25d9a0..9cea8f3fac 100644 --- a/src/core/sys/windows/winhttp.d +++ b/src/core/sys/windows/winhttp.d @@ -141,8 +141,12 @@ struct WINHTTP_CERTIFICATE_INFO { } // This structure is only defined #if _WS2DEF_ defined (from ) - per Windows SDK +align(4) struct WINHTTP_CONNECTION_INFO { +align(4): DWORD cbSize; + version (Win64) + DWORD _padding; // cheap trick without the alignment switch over this file SOCKADDR_STORAGE LocalAddress; SOCKADDR_STORAGE RemoteAddress; } From 3395b7b0f4eb67065beed1cfe6bd7d37ba5b62f6 Mon Sep 17 00:00:00 2001 From: qchikara Date: Mon, 9 May 2016 22:14:05 +0900 Subject: [PATCH 360/768] Fix paddings of structs shellapi for Win64 --- src/core/sys/windows/shellapi.d | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/core/sys/windows/shellapi.d b/src/core/sys/windows/shellapi.d index b9a9b9ed9a..ba78cc4e72 100644 --- a/src/core/sys/windows/shellapi.d +++ b/src/core/sys/windows/shellapi.d @@ -190,7 +190,7 @@ enum SHERB_NOSOUND = 4; alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS; mixin DECLARE_HANDLE!("HDROP"); -align(2): +//align(2): // 1 in Win32, default in Win64 struct APPBARDATA { DWORD cbSize = APPBARDATA.sizeof; @@ -294,24 +294,34 @@ struct SHELLEXECUTEINFOW { } alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; -struct SHFILEOPSTRUCTA { +align(1) struct SHFILEOPSTRUCTA { +align(1): HWND hwnd; UINT wFunc; + version (Win64) + WORD _padding1; LPCSTR pFrom; LPCSTR pTo; FILEOP_FLAGS fFlags; + version (Win64) + DWORD _padding2; BOOL fAnyOperationsAborted; PVOID hNameMappings; LPCSTR lpszProgressTitle; } alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; -struct SHFILEOPSTRUCTW { +align(1) struct SHFILEOPSTRUCTW { +align(1): HWND hwnd; UINT wFunc; + version (Win64) + DWORD _padding1; LPCWSTR pFrom; LPCWSTR pTo; FILEOP_FLAGS fFlags; + version (Win64) + WORD _padding2; BOOL fAnyOperationsAborted; PVOID hNameMappings; LPCWSTR lpszProgressTitle; @@ -335,7 +345,10 @@ struct SHFILEINFOW { } align(1) struct SHQUERYRBINFO { +align(1): DWORD cbSize = SHQUERYRBINFO.sizeof; + version (Win64) + DWORD _padding; long i64Size; long i64NumItems; } From 40e624cbeb8867a72d118ddad50e2581305eea27 Mon Sep 17 00:00:00 2001 From: qchikara Date: Mon, 9 May 2016 14:19:02 +0900 Subject: [PATCH 361/768] Remove wrong align specifiers in winldap, richole for Win64 Because those make no change in Win32 but are wrong in Win64. --- src/core/sys/windows/richole.d | 2 +- src/core/sys/windows/winldap.d | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/sys/windows/richole.d b/src/core/sys/windows/richole.d index 83933149d3..56a0fd8ed8 100644 --- a/src/core/sys/windows/richole.d +++ b/src/core/sys/windows/richole.d @@ -13,7 +13,7 @@ private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.window core.sys.windows.windef; private import core.sys.windows.richedit; // for CHARRANGE -align(4): +//align(4): enum ULONG REO_GETOBJ_NO_INTERFACES = 0, diff --git a/src/core/sys/windows/winldap.d b/src/core/sys/windows/winldap.d index 783c951f26..8a861ae548 100644 --- a/src/core/sys/windows/winldap.d +++ b/src/core/sys/windows/winldap.d @@ -32,7 +32,7 @@ version (ANSI) {} else version = Unicode; import core.sys.windows.schannel, core.sys.windows.winber; private import core.sys.windows.wincrypt, core.sys.windows.windef; -align(4): +//align(4): enum { LDAP_VERSION1 = 1, From bdfc696dc541e95d676453a8747acd47355fa088 Mon Sep 17 00:00:00 2001 From: qchikara Date: Sat, 7 May 2016 09:08:23 +0900 Subject: [PATCH 362/768] Patches for sizes of structs shlobj, winuser --- src/core/sys/windows/shlobj.d | 5 ++++- src/core/sys/windows/winuser.d | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/core/sys/windows/shlobj.d b/src/core/sys/windows/shlobj.d index 7397976213..4fc7ae860e 100644 --- a/src/core/sys/windows/shlobj.d +++ b/src/core/sys/windows/shlobj.d @@ -409,6 +409,7 @@ alias const(ITEMIDLIST)* LPCITEMIDLIST; extern (Windows) alias int function(HWND, UINT, LPARAM, LPARAM) BFFCALLBACK; +align (8) { struct BROWSEINFOA { HWND hwndOwner; LPCITEMIDLIST pidlRoot; @@ -432,6 +433,7 @@ struct BROWSEINFOW { int iImage; } alias BROWSEINFOW* PBROWSEINFOW, LPBROWSEINFOW; +} // align (8) struct CMINVOKECOMMANDINFO { DWORD cbSize = this.sizeof; @@ -473,7 +475,7 @@ enum SHCONTF { SHCONTF_STORAGE = 2048 } -struct STRRET { +align(8) struct STRRET { UINT uType; union { LPWSTR pOleStr; @@ -717,6 +719,7 @@ enum MAX_COLUMN_NAME_LEN = 80; enum MAX_COLUMN_DESC_LEN = 128; align(1) struct SHCOLUMNINFO { + align(1): SHCOLUMNID scid; VARTYPE vt; DWORD fmt; diff --git a/src/core/sys/windows/winuser.d b/src/core/sys/windows/winuser.d index 2cbc968893..63e4796bb8 100644 --- a/src/core/sys/windows/winuser.d +++ b/src/core/sys/windows/winuser.d @@ -3412,11 +3412,11 @@ struct INPUT { alias INPUT* PINPUT, LPINPUT; static if (_WIN32_WINNT >= 0x501) { - struct BSMINFO { + align(4) struct BSMINFO { UINT cbSize = this.sizeof; HDESK hdesk; HWND hwnd; - LUID luid; +align(4) LUID luid; } alias BSMINFO* PBSMINFO; From d269faf41a14df1d2f63c3c7c9dcbccc151e0999 Mon Sep 17 00:00:00 2001 From: qchikara Date: Thu, 5 May 2016 20:14:48 +0900 Subject: [PATCH 363/768] Patch for sizes of structs winnt --- src/core/sys/windows/winnt.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/sys/windows/winnt.d b/src/core/sys/windows/winnt.d index b5fc46263c..325b8853c6 100644 --- a/src/core/sys/windows/winnt.d +++ b/src/core/sys/windows/winnt.d @@ -2306,7 +2306,7 @@ align(4) struct LUID_AND_ATTRIBUTES { } alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; -struct PRIVILEGE_SET { +align(4) struct PRIVILEGE_SET { DWORD PrivilegeCount; DWORD Control; LUID_AND_ATTRIBUTES _Privilege; @@ -4020,7 +4020,7 @@ static if (_WIN32_WINNT >= 0x501) { FileInformationInAssemblyOfAssemblyInActivationContext } - struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { + align struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { DWORD ulFlags; DWORD ulEncodedAssemblyIdentityLength; DWORD ulManifestPathType; From e458ee1ff72d8160dc24cc43142f4af3d3efde22 Mon Sep 17 00:00:00 2001 From: qchikara Date: Sat, 7 May 2016 11:35:58 +0900 Subject: [PATCH 364/768] Fix alignments of structs XX_KEYDOWN These structs have special alignments. --- src/core/sys/windows/commctrl.d | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 1f7e1c2eea..4563ce4a42 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -2850,7 +2850,9 @@ static if (_WIN32_IE >= 0x400) { } alias NMIPADDRESS* LPNMIPADDRESS; + align (1) struct NMLVKEYDOWN { + align (1): NMHDR hdr; WORD wVKey; UINT flags; @@ -3956,7 +3958,9 @@ struct NMLVDISPINFOW { alias NMLVDISPINFOW* LPNMLVDISPINFOW; alias NMLVDISPINFOW LV_DISPINFOW; +align (1) struct LV_KEYDOWN { +align (1): NMHDR hdr; WORD wVKey; UINT flags; @@ -4147,7 +4151,9 @@ static if (_WIN32_IE >= 0x400) { alias NMTVGETINFOTIPW* LPNMTVGETINFOTIPW; } +align (1) struct TV_KEYDOWN { +align (1): NMHDR hdr; WORD wVKey; UINT flags; @@ -4224,7 +4230,9 @@ struct TCHITTESTINFO { alias TCHITTESTINFO* LPTCHITTESTINFO, LPTC_HITTESTINFO; alias TCHITTESTINFO TC_HITTESTINFO; +align (1) struct TC_KEYDOWN { +align (1): NMHDR hdr; WORD wVKey; UINT flags; From c5a1db4c9bd5e59cb82f77491237e794d8ac20ba Mon Sep 17 00:00:00 2001 From: qchikara Date: Sat, 7 May 2016 11:37:55 +0900 Subject: [PATCH 365/768] Fix alignment of NMPGSCROLL against MSDN info Note: this should be fixed if MSDN document says wrong. --- src/core/sys/windows/commctrl.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/sys/windows/commctrl.d b/src/core/sys/windows/commctrl.d index 4563ce4a42..22695405d4 100644 --- a/src/core/sys/windows/commctrl.d +++ b/src/core/sys/windows/commctrl.d @@ -2867,9 +2867,11 @@ static if (_WIN32_IE >= 0x400) { } alias NMPGCALCSIZE* LPNMPGCALCSIZE; + align (1) struct NMPGSCROLL { + align (1): NMHDR hdr; - BOOL fwKeys; + WORD fwKeys; // Note: this should be WORD if MSDN document says wrong RECT rcParent; int iDir; int iXpos; From ba82fc4c92e60159d3c6d50090c9985e3edc6de3 Mon Sep 17 00:00:00 2001 From: qchikara Date: Mon, 9 May 2016 16:41:38 +0900 Subject: [PATCH 366/768] Fix internal aligns of structs ras, rasdlg --- src/core/sys/windows/ras.d | 15 +++++++++++++++ src/core/sys/windows/rasdlg.d | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/src/core/sys/windows/ras.d b/src/core/sys/windows/ras.d index 9903f1a430..6c9bc29313 100644 --- a/src/core/sys/windows/ras.d +++ b/src/core/sys/windows/ras.d @@ -227,11 +227,14 @@ alias TypeDef!(HANDLE) HRASCONN; alias HRASCONN* LPHRASCONN; struct RASCONNW { +align(4): DWORD dwSize; HRASCONN hrasconn; + align { WCHAR[RAS_MaxEntryName + 1] szEntryName; WCHAR[RAS_MaxDeviceType + 1] szDeviceType; WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + } //static if (_WIN32_WINNT >= 0x401) { WCHAR[MAX_PATH] szPhonebook; DWORD dwSubEntry; @@ -247,11 +250,14 @@ struct RASCONNW { alias RASCONNW* LPRASCONNW; struct RASCONNA { +align(4): DWORD dwSize; HRASCONN hrasconn; + align { CHAR[RAS_MaxEntryName + 1] szEntryName; CHAR[RAS_MaxDeviceType + 1] szDeviceType; CHAR[RAS_MaxDeviceName + 1] szDeviceName; + } //static if (_WIN32_WINNT >= 0x401) { CHAR[MAX_PATH] szPhonebook; DWORD dwSubEntry; @@ -291,13 +297,16 @@ struct RASCONNSTATUSA { alias RASCONNSTATUSA* LPRASCONNSTATUSA; struct RASDIALPARAMSW { +align(4): DWORD dwSize; +align { WCHAR[RAS_MaxEntryName + 1] szEntryName; WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; WCHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; WCHAR[UNLEN + 1] szUserName; WCHAR[PWLEN + 1] szPassword; WCHAR[DNLEN + 1] szDomain; +} static if (_WIN32_WINNT >= 0x401) { DWORD dwSubEntry; ULONG_PTR dwCallbackId; @@ -306,13 +315,16 @@ struct RASDIALPARAMSW { alias RASDIALPARAMSW* LPRASDIALPARAMSW; struct RASDIALPARAMSA{ +align(4): DWORD dwSize; +align { CHAR[RAS_MaxEntryName + 1] szEntryName; CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; CHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; CHAR[UNLEN + 1] szUserName; CHAR[PWLEN + 1] szPassword; CHAR[DNLEN + 1] szDomain; +} static if (_WIN32_WINNT >= 0x401) { DWORD dwSubEntry; ULONG_PTR dwCallbackId; @@ -322,12 +334,14 @@ alias RASDIALPARAMSA* LPRASDIALPARAMSA; //static if (_WIN32_WINNT >= 0x500) { struct RASEAPINFO { + align(4): DWORD dwSizeofEapInfo; BYTE *pbEapInfo; } //} struct RASDIALEXTENSIONS { +align(4): DWORD dwSize; DWORD dwfOptions; HWND hwndParent; @@ -625,6 +639,7 @@ alias RASENTRYA* LPRASENTRYA; //static if (_WIN32_WINNT >= 0x401) { struct RASADPARAMS { + align(4): DWORD dwSize; HWND hwndOwner; DWORD dwFlags; diff --git a/src/core/sys/windows/rasdlg.d b/src/core/sys/windows/rasdlg.d index 5e516c8130..5295b62020 100644 --- a/src/core/sys/windows/rasdlg.d +++ b/src/core/sys/windows/rasdlg.d @@ -38,6 +38,7 @@ enum RASDDFLAG_PositionDlg = 1; align(4): struct RASENTRYDLGA { +align(4): DWORD dwSize = RASENTRYDLGA.sizeof; HWND hwndOwner; DWORD dwFlags; @@ -51,6 +52,7 @@ struct RASENTRYDLGA { alias RASENTRYDLGA* LPRASENTRYDLGA; struct RASENTRYDLGW { +align(4): DWORD dwSize = RASENTRYDLGW.sizeof; HWND hwndOwner; DWORD dwFlags; @@ -64,6 +66,7 @@ struct RASENTRYDLGW { alias RASENTRYDLGW* LPRASENTRYDLGW; struct RASDIALDLG { +align(4): DWORD dwSize; HWND hwndOwner; DWORD dwFlags; @@ -83,6 +86,7 @@ extern (Windows) { } struct RASPBDLGA { +align(4): DWORD dwSize = RASPBDLGA.sizeof; HWND hwndOwner; DWORD dwFlags; @@ -97,6 +101,7 @@ struct RASPBDLGA { alias RASPBDLGA* LPRASPBDLGA; struct RASPBDLGW { +align(4): DWORD dwSize = RASPBDLGW.sizeof; HWND hwndOwner; DWORD dwFlags; From e42796ec996aae45fd21cfc483bde8b3b1eda90b Mon Sep 17 00:00:00 2001 From: qchikara Date: Thu, 5 May 2016 13:47:52 +0900 Subject: [PATCH 367/768] Fix internal aligns of msacm --- src/core/sys/windows/msacm.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/sys/windows/msacm.d b/src/core/sys/windows/msacm.d index 66e3f4b25f..04f6157df8 100644 --- a/src/core/sys/windows/msacm.d +++ b/src/core/sys/windows/msacm.d @@ -29,6 +29,8 @@ enum size_t ACMFORMATDETAILS_FORMAT_CHARS = 128, ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 48; +align(1): + struct ACMFORMATDETAILSA { DWORD cbStruct = ACMFORMATDETAILSA.sizeof; DWORD dwFormatIndex; @@ -74,6 +76,7 @@ struct ACMFORMATTAGDETAILSW { alias ACMFORMATTAGDETAILSW* LPACMFORMATTAGDETAILSW; struct ACMDRIVERDETAILSA { +align(1): DWORD cbStruct = ACMDRIVERDETAILSA.sizeof; FOURCC fccType; FOURCC fccComp; @@ -94,6 +97,7 @@ struct ACMDRIVERDETAILSA { alias ACMDRIVERDETAILSA* LPACMDRIVERDETAILSA; struct ACMDRIVERDETAILSW { +align(1): DWORD cbStruct = ACMDRIVERDETAILSW.sizeof; FOURCC fccType; FOURCC fccComp; From 972d0476e2a0e5626c6d47fc48dd130e3f9d8129 Mon Sep 17 00:00:00 2001 From: qchikara Date: Fri, 6 May 2016 07:21:19 +0900 Subject: [PATCH 368/768] Fix internal aligns cpl, snmp --- src/core/sys/windows/cpl.d | 6 ++++++ src/core/sys/windows/snmp.d | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/src/core/sys/windows/cpl.d b/src/core/sys/windows/cpl.d index 34c098b3e6..617e202b47 100644 --- a/src/core/sys/windows/cpl.d +++ b/src/core/sys/windows/cpl.d @@ -36,7 +36,9 @@ enum : uint { extern (Windows) alias LONG function(HWND, UINT, LONG, LONG) APPLET_PROC; +align(1) struct CPLINFO { +align(1): int idIcon; int idName; int idInfo; @@ -44,7 +46,9 @@ struct CPLINFO { } alias CPLINFO* LPCPLINFO; +align(1) struct NEWCPLINFOA { +align(1): DWORD dwSize = NEWCPLINFOA.sizeof; DWORD dwFlags; DWORD dwHelpContext; @@ -56,7 +60,9 @@ struct NEWCPLINFOA { } alias NEWCPLINFOA* LPNEWCPLINFOA; +align(1) struct NEWCPLINFOW { +align(1): DWORD dwSize = NEWCPLINFOW.sizeof; DWORD dwFlags; DWORD dwHelpContext; diff --git a/src/core/sys/windows/snmp.d b/src/core/sys/windows/snmp.d index ae0fa15911..09901507f9 100644 --- a/src/core/sys/windows/snmp.d +++ b/src/core/sys/windows/snmp.d @@ -151,6 +151,7 @@ alias ULARGE_INTEGER AsnCounter64; align (4): struct AsnOctetString { +align (4): BYTE* stream; UINT length; BOOL dynamic; @@ -159,12 +160,14 @@ alias AsnOctetString AsnBits, AsnSequence, AsnImplicitSequence, AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; struct AsnObjectIdentifier { +align (4): UINT idLength; UINT* ids; } alias AsnObjectIdentifier AsnObjectName; struct AsnAny { +align (4): BYTE asnType; union _asnValue { AsnInteger32 number; @@ -185,11 +188,13 @@ struct AsnAny { alias AsnAny AsnObjectSyntax; struct SnmpVarBind { +align (4): AsnObjectName name; AsnObjectSyntax value; } struct SnmpVarBindList { +align (4): SnmpVarBind* list; UINT len; } From 29af3d41e4315f48356da6fecc378f8f20ef0b11 Mon Sep 17 00:00:00 2001 From: qchikara Date: Mon, 9 May 2016 18:35:25 +0900 Subject: [PATCH 369/768] Fix internal aligns richedit --- src/core/sys/windows/richedit.d | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/sys/windows/richedit.d b/src/core/sys/windows/richedit.d index 44ae617933..896902f15d 100644 --- a/src/core/sys/windows/richedit.d +++ b/src/core/sys/windows/richedit.d @@ -392,18 +392,21 @@ extern (Windows) { } struct EDITSTREAM { +align(4): DWORD_PTR dwCookie; DWORD dwError; EDITSTREAMCALLBACK pfnCallback; } struct ENCORRECTTEXT { +align(4): NMHDR nmhdr; CHARRANGE chrg; WORD seltyp; } struct ENDROPFILES { +align(4): NMHDR nmhdr; HANDLE hDrop; LONG cp; @@ -411,6 +414,7 @@ struct ENDROPFILES { } struct ENLINK { +align(4): NMHDR nmhdr; UINT msg; WPARAM wParam; @@ -419,6 +423,7 @@ struct ENLINK { } struct ENOLEOPFAILED { +align(4): NMHDR nmhdr; LONG iob; LONG lOper; @@ -426,6 +431,7 @@ struct ENOLEOPFAILED { } struct ENPROTECTED { +align(4): NMHDR nmhdr; UINT msg; WPARAM wParam; @@ -435,6 +441,7 @@ struct ENPROTECTED { alias ENPROTECTED* LPENPROTECTED; struct ENSAVECLIPBOARD { +align(4): NMHDR nmhdr; LONG cObjectCount; LONG cch; @@ -471,6 +478,7 @@ struct FORMATRANGE { } struct MSGFILTER { +align(4): NMHDR nmhdr; UINT msg; WPARAM wParam; @@ -539,16 +547,19 @@ struct REQRESIZE { } struct REPASTESPECIAL { +align(4): DWORD dwAspect; DWORD_PTR dwParam; } struct PUNCTUATION { +align(4): UINT iSize; LPSTR szPunctuation; } struct GETTEXTEX { +align(4): DWORD cb; DWORD flags; UINT codepage; @@ -573,6 +584,7 @@ enum GTL_NUMCHARS = 8; enum GTL_NUMBYTES = 16; struct GETTEXTLENGTHEX { +align(4): DWORD flags; UINT codepage; } From f85d1bf986b859cfb0715eb57425b38dfb3891a1 Mon Sep 17 00:00:00 2001 From: qchikara Date: Mon, 9 May 2016 20:02:08 +0900 Subject: [PATCH 370/768] Add AlignedStr helper and fix setupapi AlignedStr helper is a string mixin for align specifiers switched by environments between x64 and x86. The module windows.setupapi requires this. --- src/core/sys/windows/basetsd.d | 14 +++++++++ src/core/sys/windows/setupapi.d | 53 +++++++++++++++++---------------- 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/src/core/sys/windows/basetsd.d b/src/core/sys/windows/basetsd.d index 9ac18416ef..8efacd0da7 100644 --- a/src/core/sys/windows/basetsd.d +++ b/src/core/sys/windows/basetsd.d @@ -49,6 +49,20 @@ package template DECLARE_HANDLE(string name, base = HANDLE) { } alias HANDLE* PHANDLE, LPHANDLE; +// helper for aligned structs +// alignVal 0 means the default align. +// _alignSpec as parameter does not pollute namespace. +package mixin template AlignedStr(int alignVal, string name, string memberlist, + string _alignSpec = !alignVal ? "align" : "align("~alignVal.stringof~")" ) +{ + mixin( _alignSpec ~ " struct " ~ name ~" { " ~ _alignSpec ~":"~ memberlist~" }" ); +} + +version (unittest) { + private mixin AlignedStr!(16, "_Test_Aligned_Str", q{char a; char b;}); + private mixin AlignedStr!(0, "_Test_NoAligned_Str", q{char a; char b;}); +} + version (Win64) { alias long __int3264; enum ulong ADDRESS_TAG_BIT = 0x40000000000; diff --git a/src/core/sys/windows/setupapi.d b/src/core/sys/windows/setupapi.d index f6a0ded19b..1414085024 100644 --- a/src/core/sys/windows/setupapi.d +++ b/src/core/sys/windows/setupapi.d @@ -871,7 +871,10 @@ enum SetupFileLogInfo { SetupFileLogMax } -align(1): +version (Win64) + private enum _alignVal = 0; +else + private enum _alignVal = 1; struct INFCONTEXT { PVOID Inf; @@ -881,12 +884,12 @@ struct INFCONTEXT { } alias INFCONTEXT* PINFCONTEXT; -struct SP_INF_INFORMATION { +mixin AlignedStr!(_alignVal, "SP_INF_INFORMATION", q{ DWORD InfStyle; DWORD InfCount; BYTE[1] _VersionData; BYTE* VersionData() return { return _VersionData.ptr; } -} +}); alias SP_INF_INFORMATION* PSP_INF_INFORMATION; struct SP_ALTPLATFORM_INFO { @@ -967,7 +970,7 @@ struct CABINET_INFO_W { } alias CABINET_INFO_W* PCABINET_INFO_W; -struct FILE_IN_CABINET_INFO_A { +mixin AlignedStr!(_alignVal, "FILE_IN_CABINET_INFO_A", q{ PCSTR NameInCabinet; DWORD FileSize; DWORD Win32Error; @@ -975,10 +978,10 @@ struct FILE_IN_CABINET_INFO_A { WORD DosTime; WORD DosAttribs; CHAR[MAX_PATH] FullTargetName; -} +}); alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO_A; -struct FILE_IN_CABINET_INFO_W { +mixin AlignedStr!(_alignVal, "FILE_IN_CABINET_INFO_W", q{ PCWSTR NameInCabinet; DWORD FileSize; DWORD Win32Error; @@ -986,7 +989,7 @@ struct FILE_IN_CABINET_INFO_W { WORD DosTime; WORD DosAttribs; WCHAR[MAX_PATH] FullTargetName; -} +}); alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO_W; struct SP_FILE_COPY_PARAMS_A { @@ -1029,28 +1032,28 @@ struct SP_DEVINFO_DATA { } alias SP_DEVINFO_DATA* PSP_DEVINFO_DATA; -struct SP_DEVICE_INTERFACE_DATA { +mixin AlignedStr!(_alignVal, "SP_DEVICE_INTERFACE_DATA", q{ DWORD cbSize = SP_DEVICE_INTERFACE_DATA.sizeof; GUID InterfaceClassGuid; DWORD Flags; ULONG_PTR Reserved; -} +}); alias SP_DEVICE_INTERFACE_DATA* PSP_DEVICE_INTERFACE_DATA; deprecated alias SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA; deprecated alias SP_DEVICE_INTERFACE_DATA* PSP_INTERFACE_DEVICE_DATA; -struct SP_DEVICE_INTERFACE_DETAIL_DATA_A { +mixin AlignedStr!(_alignVal, "SP_DEVICE_INTERFACE_DETAIL_DATA_A", q{ DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_A.sizeof; CHAR[1] _DevicePath; CHAR* DevicePath() return { return _DevicePath.ptr; } -} +}); alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA_A; -struct SP_DEVICE_INTERFACE_DETAIL_DATA_W { +mixin AlignedStr!(_alignVal, "SP_DEVICE_INTERFACE_DETAIL_DATA_W", q{ DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_W.sizeof; WCHAR[1] _DevicePath; WCHAR* DevicePath() return { return _DevicePath.ptr; } -} +}); alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA_W; deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A; @@ -1058,20 +1061,20 @@ deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_ deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W; deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA_W; -struct SP_DEVINFO_LIST_DETAIL_DATA_A { +mixin AlignedStr!(_alignVal, "SP_DEVINFO_LIST_DETAIL_DATA_A", q{ DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_A.sizeof; GUID ClassGuid; HANDLE RemoteMachineHandle; CHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; -} +}); alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA_A; -struct SP_DEVINFO_LIST_DETAIL_DATA_W { +mixin AlignedStr!(_alignVal, "SP_DEVINFO_LIST_DETAIL_DATA_W", q{ DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_W.sizeof; GUID ClassGuid; HANDLE RemoteMachineHandle; WCHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; -} +}); alias SP_DEVINFO_LIST_DETAIL_DATA_W* PSP_DEVINFO_LIST_DETAIL_DATA_W; extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_A; @@ -1223,7 +1226,7 @@ struct SP_POWERMESSAGEWAKE_PARAMS_W { } alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS_W; -struct SP_DRVINFO_DATA_V2_A { +mixin AlignedStr!(_alignVal, "SP_DRVINFO_DATA_V2_A", q{ DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; DWORD DriverType; ULONG_PTR Reserved; @@ -1232,10 +1235,10 @@ struct SP_DRVINFO_DATA_V2_A { CHAR[LINE_LEN] ProviderName; FILETIME DriverDate; DWORDLONG DriverVersion; -} +}); alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_V2_A; -struct SP_DRVINFO_DATA_V2_W { +mixin AlignedStr!(_alignVal, "SP_DRVINFO_DATA_V2_W", q{ DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; DWORD DriverType; ULONG_PTR Reserved; @@ -1244,7 +1247,7 @@ struct SP_DRVINFO_DATA_V2_W { WCHAR[LINE_LEN] ProviderName; FILETIME DriverDate; DWORDLONG DriverVersion; -} +}); alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_V2_W; struct SP_DRVINFO_DATA_V1_A { @@ -1295,7 +1298,7 @@ static if(USE_SP_DRVINFO_DATA_V1) { extern(Windows) alias DWORD function(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINFO_DATA, PVOID) PSP_DETSIG_CMPPROC; -struct SP_DRVINFO_DETAIL_DATA_A { +mixin AlignedStr!(_alignVal, "SP_DRVINFO_DETAIL_DATA_A", q{ DWORD cbSize = SP_DRVINFO_DETAIL_DATA_A.sizeof; FILETIME InfDate; DWORD CompatIDsOffset; @@ -1306,10 +1309,10 @@ struct SP_DRVINFO_DETAIL_DATA_A { CHAR[LINE_LEN] DrvDescription; CHAR[1] _HardwareID; CHAR* HardwareID() return { return _HardwareID.ptr; } -} +}); alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA_A; -struct SP_DRVINFO_DETAIL_DATA_W { +mixin AlignedStr!(_alignVal, "SP_DRVINFO_DETAIL_DATA_W", q{ DWORD cbSize = SP_DRVINFO_DETAIL_DATA_W.sizeof; FILETIME InfDate; DWORD CompatIDsOffset; @@ -1320,7 +1323,7 @@ struct SP_DRVINFO_DETAIL_DATA_W { WCHAR[LINE_LEN] DrvDescription; WCHAR[1] _HardwareID; WCHAR* HardwareID() return { return _HardwareID.ptr; } -} +}); alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA_W; struct SP_DRVINSTALL_PARAMS { From 43b9b7252e5f3f02fbfe182ffb58f487ae88f13a Mon Sep 17 00:00:00 2001 From: qchikara Date: Mon, 23 May 2016 01:30:00 +0900 Subject: [PATCH 371/768] Fix internal aligns mmsystem --- src/core/sys/windows/mmsystem.d | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/core/sys/windows/mmsystem.d b/src/core/sys/windows/mmsystem.d index 2f475e5b87..666d6431cd 100644 --- a/src/core/sys/windows/mmsystem.d +++ b/src/core/sys/windows/mmsystem.d @@ -1052,6 +1052,7 @@ alias MMTIME* PMMTIME, LPMMTIME; alias TypeDef!(HANDLE) HDRVR; struct DRVCONFIGINFO { +align(1): DWORD dwDCISize; LPCWSTR lpszDCISectionName; LPCWSTR lpszDCIAliasName; @@ -1059,6 +1060,7 @@ struct DRVCONFIGINFO { alias DRVCONFIGINFO * PDRVCONFIGINFO, LPDRVCONFIGINFO; struct DRVCONFIGINFOEX { +align(1): DWORD dwDCISize; LPCWSTR lpszDCISectionName; LPCWSTR lpszDCIAliasName; @@ -1233,6 +1235,7 @@ struct MIDIINCAPSW { alias MIDIINCAPSW* PMIDIINCAPSW, LPMIDIINCAPSW; struct MIDIHDR { +align(1): LPSTR lpData; DWORD dwBufferLength; DWORD dwBytesRecorded; @@ -1319,6 +1322,7 @@ struct MIXERCAPSW { alias MIXERCAPSW* PMIXERCAPSW, LPMIXERCAPSW; struct MIXERLINEA { +align(1): DWORD cbStruct; DWORD dwDestination; DWORD dwSource; @@ -1344,6 +1348,7 @@ struct MIXERLINEA { alias MIXERLINEA* PMIXERLINEA, LPMIXERLINEA; struct MIXERLINEW { +align(1): DWORD cbStruct; DWORD dwDestination; DWORD dwSource; @@ -1428,6 +1433,7 @@ struct MIXERCONTROLW { alias MIXERCONTROLW* PMIXERCONTROLW, LPMIXERCONTROLW; struct MIXERLINECONTROLSA { +align(1): DWORD cbStruct; DWORD dwLineID; union { @@ -1441,6 +1447,7 @@ struct MIXERLINECONTROLSA { alias MIXERLINECONTROLSA* PMIXERLINECONTROLSA, LPMIXERLINECONTROLSA; struct MIXERLINECONTROLSW { +align(1): DWORD cbStruct; DWORD dwLineID; union { @@ -1454,6 +1461,7 @@ struct MIXERLINECONTROLSW { alias MIXERLINECONTROLSW* PMIXERLINECONTROLSW, LPMIXERLINECONTROLSW; struct MIXERCONTROLDETAILS { +align(1): DWORD cbStruct; DWORD dwControlID; DWORD cChannels; @@ -1592,6 +1600,7 @@ alias TypeDef!(HANDLE) HMMIO; alias LRESULT function (LPSTR, UINT, LPARAM, LPARAM) LPMMIOPROC; struct MMIOINFO { +align(1): DWORD dwFlags; FOURCC fccIOProc; LPMMIOPROC pIOProc; @@ -1628,6 +1637,7 @@ struct MCI_GENERIC_PARMS { alias MCI_GENERIC_PARMS* PMCI_GENERIC_PARMS, LPMCI_GENERIC_PARMS; struct MCI_OPEN_PARMSA { +align(1): DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCSTR lpstrDeviceType; @@ -1637,6 +1647,7 @@ struct MCI_OPEN_PARMSA { alias MCI_OPEN_PARMSA* PMCI_OPEN_PARMSA, LPMCI_OPEN_PARMSA; struct MCI_OPEN_PARMSW { +align(1): DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCWSTR lpstrDeviceType; @@ -1713,6 +1724,7 @@ struct MCI_SET_PARMS { alias MCI_SET_PARMS* PMCI_SET_PARMS, LPMCI_SET_PARMS; struct MCI_BREAK_PARMS { +align(1): DWORD_PTR dwCallback; int nVirtKey; HWND hwndBreak; @@ -1777,6 +1789,7 @@ struct MCI_VD_ESCAPE_PARMSW { alias MCI_VD_ESCAPE_PARMSW* PMCI_VD_ESCAPE_PARMSW, LPMCI_VD_ESCAPE_PARMSW; struct MCI_WAVE_OPEN_PARMSA { +align(1): DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCSTR lpstrDeviceType; @@ -1787,6 +1800,7 @@ struct MCI_WAVE_OPEN_PARMSA { alias MCI_WAVE_OPEN_PARMSA* PMCI_WAVE_OPEN_PARMSA, LPMCI_WAVE_OPEN_PARMSA; struct MCI_WAVE_OPEN_PARMSW { +align(1): DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCWSTR lpstrDeviceType; @@ -2002,6 +2016,7 @@ struct MCI_SEQ_SET_PARMS { alias MCI_SEQ_SET_PARMS* PMCI_SEQ_SET_PARMS, LPMCI_SEQ_SET_PARMS; struct MCI_ANIM_OPEN_PARMSA { +align(1): DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCSTR lpstrDeviceType; @@ -2013,6 +2028,7 @@ struct MCI_ANIM_OPEN_PARMSA { alias MCI_ANIM_OPEN_PARMSA* PMCI_ANIM_OPEN_PARMSA, LPMCI_ANIM_OPEN_PARMSA; struct MCI_ANIM_OPEN_PARMSW { +align(1): DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCWSTR lpstrDeviceType; @@ -2038,6 +2054,7 @@ struct MCI_ANIM_STEP_PARMS { alias MCI_ANIM_STEP_PARMS* PMCI_ANIM_STEP_PARMS, LPMCI_ANIM_STEP_PARMS; struct MCI_ANIM_WINDOW_PARMSA { +align(1): DWORD_PTR dwCallback; HWND hWnd; UINT nCmdShow; @@ -2046,6 +2063,7 @@ struct MCI_ANIM_WINDOW_PARMSA { alias MCI_ANIM_WINDOW_PARMSA* PMCI_ANIM_WINDOW_PARMSA, LPMCI_ANIM_WINDOW_PARMSA; struct MCI_ANIM_WINDOW_PARMSW { +align(1): DWORD_PTR dwCallback; HWND hWnd; UINT nCmdShow; @@ -2072,6 +2090,7 @@ struct MCI_ANIM_UPDATE_PARMS { alias MCI_ANIM_UPDATE_PARMS* PMCI_ANIM_UPDATE_PARMS, LPMCI_ANIM_UPDATE_PARMS; struct MCI_OVLY_OPEN_PARMSA { +align(1): DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCSTR lpstrDeviceType; @@ -2083,6 +2102,7 @@ struct MCI_OVLY_OPEN_PARMSA { alias MCI_OVLY_OPEN_PARMSA* PMCI_OVLY_OPEN_PARMSA, LPMCI_OVLY_OPEN_PARMSA; struct MCI_OVLY_OPEN_PARMSW { +align(1): DWORD_PTR dwCallback; MCIDEVICEID wDeviceID; LPCWSTR lpstrDeviceType; @@ -2094,6 +2114,7 @@ struct MCI_OVLY_OPEN_PARMSW { alias MCI_OVLY_OPEN_PARMSW* PMCI_OVLY_OPEN_PARMSW, LPMCI_OVLY_OPEN_PARMSW; struct MCI_OVLY_WINDOW_PARMSA { +align(1): DWORD_PTR dwCallback; HWND hWnd; UINT nCmdShow; @@ -2102,6 +2123,7 @@ struct MCI_OVLY_WINDOW_PARMSA { alias MCI_OVLY_WINDOW_PARMSA* PMCI_OVLY_WINDOW_PARMSA, LPMCI_OVLY_WINDOW_PARMSA; struct MCI_OVLY_WINDOW_PARMSW { +align(1): DWORD_PTR dwCallback; HWND hWnd; UINT nCmdShow; From b882069f94904997e2f0631d7befb2453b463f72 Mon Sep 17 00:00:00 2001 From: Jacob Carlborg Date: Mon, 23 May 2016 21:57:09 +0200 Subject: [PATCH 372/768] Set deployment target to the minimum supported version of OS X Since the update to use native TLS on OS X the minimum deployment target is now OS X Lion (10.7). --- posix.mak | 1 + 1 file changed, 1 insertion(+) diff --git a/posix.mak b/posix.mak index e5d645bcd6..a5c2227221 100644 --- a/posix.mak +++ b/posix.mak @@ -32,6 +32,7 @@ OPTIONAL_PIC:=$(if $(PIC),-fPIC,) ifeq (osx,$(OS)) DOTDLL:=.dylib DOTLIB:=.a + export MACOSX_DEPLOYMENT_TARGET=10.7 else DOTDLL:=.so DOTLIB:=.a From 7be451651255cd30fb0367f65d1763c17cb71420 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 26 May 2016 18:48:31 +0200 Subject: [PATCH 373/768] remove the deprecated wiki macros --- src/object.d | 2 -- src/rt/util/utf.d | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/object.d b/src/object.d index 8daa6c51e7..a21ed79acd 100644 --- a/src/object.d +++ b/src/object.d @@ -2,8 +2,6 @@ * Forms the symbols available to all D programs. Includes Object, which is * the root of the class object hierarchy. This module is implicitly * imported. - * Macros: - * WIKI = Object * * Copyright: Copyright Digital Mars 2000 - 2011. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). diff --git a/src/rt/util/utf.d b/src/rt/util/utf.d index 90579974ff..779f1b425f 100644 --- a/src/rt/util/utf.d +++ b/src/rt/util/utf.d @@ -12,8 +12,6 @@ * $(LINK2 http://en.wikipedia.org/wiki/Unicode, Wikipedia)
* $(LINK http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8)
* $(LINK http://anubis.dkuug.dk/JTC1/SC2/WG2/docs/n1335) - * Macros: - * WIKI = Phobos/StdUtf * * Copyright: Copyright Digital Mars 2003 - 2009. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). From 383d170651b37202fcd92532edc96a1ae61431c1 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 28 May 2016 05:31:19 +0000 Subject: [PATCH 374/768] core.sys.linux.sys.inotify: Fix typo in identifier --- src/core/sys/linux/sys/inotify.d | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/sys/linux/sys/inotify.d b/src/core/sys/linux/sys/inotify.d index 41ad65c2e3..cb1b8d2bdb 100644 --- a/src/core/sys/linux/sys/inotify.d +++ b/src/core/sys/linux/sys/inotify.d @@ -34,7 +34,7 @@ enum: uint IN_DELETE = 0x00000200, IN_DELETE_SELF = 0x00000400, IN_MOVE_SELF = 0x00000800, - IN_UMOUNT = 0x00002000, + IN_UNMOUNT = 0x00002000, IN_Q_OVERFLOW = 0x00004000, IN_IGNORED = 0x00008000, IN_CLOSE = 0x00000018, @@ -48,6 +48,9 @@ enum: uint IN_ALL_EVENTS = 0x80000FFF, } +// Old typo, preserved for compatibility +enum IN_UMOUNT = IN_UNMOUNT; + version (X86) { enum IN_CLOEXEC = 0x80000; // octal!2000000 From b4d31630f3fccbd7731d2feb08baeee66e33d2b0 Mon Sep 17 00:00:00 2001 From: anonymous Date: Sun, 29 May 2016 11:24:43 +0200 Subject: [PATCH 375/768] XREF -> REF Done by: sed -i -r 's/\$\(XREF\s+([^(),]*),\s*([^(),]*)\)/$(REF \2, std,\1)/g' \ src/core/time.d Confirmed that there are no other instances of XREF with `grep -r '$(XREF'` (no hits). --- src/core/time.d | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index 3e2a7c6f20..e23e163e06 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -149,7 +149,7 @@ version(unittest) T copy(T)(T t) $(D ClockType), whereas with $(D std.datetime.Clock.currTime), its a runtime argument, since in the case of the monotonic time, the type of the clock affects the resolution of a $(LREF MonoTimeImpl) object, whereas with - $(XREF datetime, SysTime), its resolution is always hecto-nanoseconds + $(REF SysTime, std,datetime), its resolution is always hecto-nanoseconds regardless of the source of the time. $(D ClockType.normal), $(D ClockType.coarse), and $(D ClockType.precise) @@ -427,9 +427,9 @@ unittest between months or years and smaller units without a specific date. So, nothing uses $(D Duration)s when dealing with months or years. Rather, functions specific to months and years are defined. For instance, - $(XREF datetime, Date) has $(D add!"years") and $(D add!"months") for adding + $(REF Date, std,datetime) has $(D add!"years") and $(D add!"months") for adding years and months rather than creating a Duration of years or months and - adding that to a $(XREF datetime, Date). But Duration is used when dealing + adding that to a $(REF Date, std,datetime). But Duration is used when dealing with weeks or smaller. Examples: @@ -1048,7 +1048,7 @@ public: Returns a $(LREF TickDuration) with the same number of hnsecs as this $(D Duration). Note that the conventional way to convert between $(D Duration) and - $(D TickDuration) is using $(XREF conv, to), e.g.: + $(D TickDuration) is using $(REF to, std,conv), e.g.: $(D duration.to!TickDuration()) +/ TickDuration opCast(T)() const nothrow @nogc @@ -2148,7 +2148,7 @@ alias MonoTime = MonoTimeImpl!(ClockType.normal); A monotonic clock is one which always goes forward and never moves backwards, unlike the system's wall clock time (as represented by - $(XREF datetime, SysTime)). The system's wall clock time can be adjusted + $(REF SysTime, std,datetime)). The system's wall clock time can be adjusted by the user or by the system itself via services such as NTP, so it is unreliable to use the wall clock time for timing. Timers which use the wall clock time could easily end up never going off due to changes made to the @@ -2159,7 +2159,7 @@ alias MonoTime = MonoTimeImpl!(ClockType.normal); high precision timing. So, MonoTime should be used for anything involving timers and timing, - whereas $(XREF datetime, SysTime) should be used when the wall clock time + whereas $(REF SysTime, std,datetime) should be used when the wall clock time is required. The monotonic clock has no relation to wall clock time. Rather, it holds @@ -3093,7 +3093,7 @@ struct TickDuration Returns a $(LREF Duration) with the same number of hnsecs as this $(D TickDuration). Note that the conventional way to convert between $(D TickDuration) - and $(D Duration) is using $(XREF conv, to), e.g.: + and $(D Duration) is using $(REF to, std,conv), e.g.: $(D tickDuration.to!Duration()) +/ Duration opCast(T)() @safe const pure nothrow @nogc @@ -3706,12 +3706,12 @@ unittest It holds hnsecs internally, but you can create it using either milliseconds, microseconds, or hnsecs. What it does is allow for a simple way to set or adjust the fractional seconds portion of a $(D Duration) or a - $(XREF datetime, SysTime) without having to worry about whether you're + $(REF SysTime, std,datetime) without having to worry about whether you're dealing with milliseconds, microseconds, or hnsecs. $(D FracSec)'s functions which take time unit strings do accept $(D "nsecs"), but because the resolution of $(D Duration) and - $(XREF datetime, SysTime) is hnsecs, you don't actually get precision higher + $(REF SysTime, std,datetime) is hnsecs, you don't actually get precision higher than hnsecs. $(D "nsecs") is accepted merely for convenience. Any values given as nsecs will be converted to hnsecs using $(D convert) (which uses truncating division when converting to smaller units). From 305dfed2fdb82680c9d9756a53f1509ea9454e5d Mon Sep 17 00:00:00 2001 From: Thayne McCombs Date: Wed, 1 Jun 2016 23:56:04 -0600 Subject: [PATCH 376/768] Add @nogc to pthread functions. Fixes Issue 14601 --- src/core/sys/posix/pthread.d | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/sys/posix/pthread.d b/src/core/sys/posix/pthread.d index b4cb78a037..245d1c6036 100644 --- a/src/core/sys/posix/pthread.d +++ b/src/core/sys/posix/pthread.d @@ -33,6 +33,7 @@ else version (WatchOS) version (Posix): extern (C) nothrow: +@nogc: // // Required From 44eb52f82650ac142d20123ef7bdf03793aa7bfc Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 4 Jan 2015 04:55:06 +0100 Subject: [PATCH 377/768] add core.sys.freebsd.pthread_np --- mak/COPY | 5 +++- src/core/sys/freebsd/pthread_np.d | 44 +++++++++++++++++++++++++++++ src/core/sys/freebsd/sys/_bitset.d | 45 ++++++++++++++++++++++++++++++ src/core/sys/freebsd/sys/_cpuset.d | 29 +++++++++++++++++++ win32.mak | 9 ++++++ win64.mak | 9 ++++++ 6 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 src/core/sys/freebsd/pthread_np.d create mode 100644 src/core/sys/freebsd/sys/_bitset.d create mode 100644 src/core/sys/freebsd/sys/_cpuset.d diff --git a/mak/COPY b/mak/COPY index 876b2cb71f..9d8d75ca2a 100644 --- a/mak/COPY +++ b/mak/COPY @@ -66,10 +66,13 @@ COPY=\ $(IMPDIR)\core\sys\freebsd\execinfo.d \ \ $(IMPDIR)\core\sys\freebsd\sys\cdefs.d \ + $(IMPDIR)\core\sys\freebsd\pthread_np.d \ + $(IMPDIR)\core\sys\freebsd\sys\_bitset.d \ + $(IMPDIR)\core\sys\freebsd\sys\_cpuset.d \ $(IMPDIR)\core\sys\freebsd\sys\elf.d \ - $(IMPDIR)\core\sys\freebsd\sys\elf_common.d \ $(IMPDIR)\core\sys\freebsd\sys\elf32.d \ $(IMPDIR)\core\sys\freebsd\sys\elf64.d \ + $(IMPDIR)\core\sys\freebsd\sys\elf_common.d \ $(IMPDIR)\core\sys\freebsd\sys\event.d \ $(IMPDIR)\core\sys\freebsd\sys\link_elf.d \ $(IMPDIR)\core\sys\freebsd\sys\mman.d \ diff --git a/src/core/sys/freebsd/pthread_np.d b/src/core/sys/freebsd/pthread_np.d new file mode 100644 index 0000000000..9e674b6c24 --- /dev/null +++ b/src/core/sys/freebsd/pthread_np.d @@ -0,0 +1,44 @@ +/** + * D header file for FreeBSD. + * + * Authors: Martin Nowak + */ +module core.sys.freebsd.pthread; + +version (FreeBSD): +extern (C) nothrow @nogc: + +public import core.sys.posix.sys.types; +// TODO: add full core.sys.freebsd.sys.cpuset; +public import core.sys.freebsd.sys._cpuset; +public import core.sys.posix.time; + +enum __BSD_VISIBLE = true; + +alias pthread_switch_routine_t = void function(pthread_t, pthread_t); + +int pthread_attr_setcreatesuspend_np(pthread_attr_t *); +int pthread_attr_get_np(pthread_t, pthread_attr_t *); +int pthread_attr_getaffinity_np(const(pthread_attr_t)*, size_t, cpuset_t *); +int pthread_attr_setaffinity_np(pthread_attr_t *, size_t, const(cpuset_t)*); +int pthread_getaffinity_np(pthread_t, size_t, cpuset_t *); +int pthread_getthreadid_np(); +int pthread_main_np(); +int pthread_multi_np(); +int pthread_mutexattr_getkind_np(pthread_mutexattr_t); +int pthread_mutexattr_setkind_np(pthread_mutexattr_t *, int); +void pthread_resume_all_np(); +int pthread_resume_np(pthread_t); +void pthread_set_name_np(pthread_t, const(char)*); +int pthread_mutex_getspinloops_np(pthread_mutex_t *mutex, int *count); +int pthread_mutex_setspinloops_np(pthread_mutex_t *mutex, int count); +int pthread_mutex_getyieldloops_np(pthread_mutex_t *mutex, int *count); +int pthread_mutex_setyieldloops_np(pthread_mutex_t *mutex, int count); +int pthread_mutex_isowned_np(pthread_mutex_t *mutex); +int pthread_setaffinity_np(pthread_t, size_t, const(cpuset_t)*); +int pthread_single_np(); +void pthread_suspend_all_np(); +int pthread_suspend_np(pthread_t); +int pthread_switch_add_np(pthread_switch_routine_t); +int pthread_switch_delete_np(pthread_switch_routine_t); +int pthread_timedjoin_np(pthread_t, void **, const(timespec)*); diff --git a/src/core/sys/freebsd/sys/_bitset.d b/src/core/sys/freebsd/sys/_bitset.d new file mode 100644 index 0000000000..ec613d6073 --- /dev/null +++ b/src/core/sys/freebsd/sys/_bitset.d @@ -0,0 +1,45 @@ +/** + * D header file for FreeBSD. + * + * Authors: Martin Nowak + */ +module core.sys.freebsd.sys._bitset; + +version (FreeBSD): +extern (C) pure nothrow @nogc: + +import core.stdc.config : c_long; + +enum NBBY = 8; // number of bits per byte + +enum _BITSET_BITS = c_long.sizeof * NBBY; + +enum __bitset_words(size_t s) = (s + _BITSET_BITS - 1) / _BITSET_BITS; + +c_long __bitset_mask(size_t s)(size_t n) +{ + static if (__bitset_words!s == 1) + return (cast(c_long)1) << n; + else + return (cast(c_long)1) << n % _BITSET_BITS; +} + +size_t __bitset_word(size_t s)(size_t n) +{ + static if (__bitset_words!s == 1) + return 0; + else + return n / _BITSET_BITS; +} + +struct BITSET_DEFINE(size_t s) +{ + c_long[__bitset_words!s] __bits; +} + +// no idea how to translate those +//#define BITSET_T_INITIALIZER(x) \ +// { .__bits = { x } } +// +//#define BITSET_FSET(n) \ +// [ 0 ... ((n) - 1) ] = (-1L) diff --git a/src/core/sys/freebsd/sys/_cpuset.d b/src/core/sys/freebsd/sys/_cpuset.d new file mode 100644 index 0000000000..dbb0ca30cf --- /dev/null +++ b/src/core/sys/freebsd/sys/_cpuset.d @@ -0,0 +1,29 @@ +/** + * D header file for FreeBSD. + * + * Authors: Martin Nowak + */ +module core.sys.freebsd.sys._cpuset; + +version (FreeBSD): +extern (C) pure nothrow @nogc: + +public import core.sys.freebsd.sys._bitset; + +static if (is(typeof(_KERNEL))) + alias CPU_SETSIZE = MAXCPU; + +enum CPU_MAXSIZE = 256; + +static if (!is(typeof(CPU_SETSIZE))) + alias CPU_SETSIZE = CPU_MAXSIZE; + +enum _NCPUBITS = _BITSET_BITS; +enum _NCPUWORDS = __bitset_words!CPU_SETSIZE; + +alias _cpuset = BITSET_DEFINE!(CPU_SETSIZE); +alias cpuset_t = _cpuset; + +// no idea how to translate those +//#define CPUSET_FSET BITSET_FSET(_NCPUWORDS) +//#define CPUSET_T_INITIALIZER BITSET_T_INITIALIZER diff --git a/win32.mak b/win32.mak index a678e71365..a1996f3f27 100644 --- a/win32.mak +++ b/win32.mak @@ -389,12 +389,21 @@ $(IMPDIR)\core\sys\freebsd\dlfcn.d : src\core\sys\freebsd\dlfcn.d $(IMPDIR)\core\sys\freebsd\execinfo.d : src\core\sys\freebsd\execinfo.d copy $** $@ +$(IMPDIR)\core\sys\freebsd\pthread_np.d : src\core\sys\freebsd\pthread_np.d + copy $** $@ + $(IMPDIR)\core\sys\freebsd\time.d : src\core\sys\freebsd\time.d copy $** $@ $(IMPDIR)\core\sys\freebsd\sys\cdefs.d : src\core\sys\freebsd\sys\cdefs.d copy $** $@ +$(IMPDIR)\core\sys\freebsd\sys\_bitset.d : src\core\sys\freebsd\sys\_bitset.d + copy $** $@ + +$(IMPDIR)\core\sys\freebsd\sys\_cpuset.d : src\core\sys\freebsd\sys\_cpuset.d + copy $** $@ + $(IMPDIR)\core\sys\freebsd\sys\elf.d : src\core\sys\freebsd\sys\elf.d copy $** $@ diff --git a/win64.mak b/win64.mak index cc61982605..84c8838933 100644 --- a/win64.mak +++ b/win64.mak @@ -397,12 +397,21 @@ $(IMPDIR)\core\sys\freebsd\dlfcn.d : src\core\sys\freebsd\dlfcn.d $(IMPDIR)\core\sys\freebsd\execinfo.d : src\core\sys\freebsd\execinfo.d copy $** $@ +$(IMPDIR)\core\sys\freebsd\pthread_np.d : src\core\sys\freebsd\pthread_np.d + copy $** $@ + $(IMPDIR)\core\sys\freebsd\time.d : src\core\sys\freebsd\time.d copy $** $@ $(IMPDIR)\core\sys\freebsd\sys\cdefs.d : src\core\sys\freebsd\sys\cdefs.d copy $** $@ +$(IMPDIR)\core\sys\freebsd\sys\_bitset.d : src\core\sys\freebsd\sys\_bitset.d + copy $** $@ + +$(IMPDIR)\core\sys\freebsd\sys\_cpuset.d : src\core\sys\freebsd\sys\_cpuset.d + copy $** $@ + $(IMPDIR)\core\sys\freebsd\sys\elf.d : src\core\sys\freebsd\sys\elf.d copy $** $@ From fbc2289a958e7ccafedb6083fb76c78371d479d8 Mon Sep 17 00:00:00 2001 From: anonymous Date: Sun, 5 Jun 2016 22:47:00 +0200 Subject: [PATCH 378/768] XREF purge: CXREF, custom SXREF, changelog.dd --- changelog.dd | 11 +---------- src/core/memory.d | 2 +- src/core/time.d | 7 +++---- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/changelog.dd b/changelog.dd index 36adb5aa5d..3b6bfc6b20 100644 --- a/changelog.dd +++ b/changelog.dd @@ -19,7 +19,7 @@ $(LI $(LNAME2 TypeInfo.init-deprecated, `TypeInfo.init` has been to resolve a name clash with the type property $(GLINK2 property, init). ) - $(P Use $(NOXREF TypeInfo.initializer, TypeInfo.initializer) instead.) + $(P Use $(REF_OBJECT_SHORT TypeInfo.initializer) instead.) ) ) @@ -32,15 +32,6 @@ Macros: RELATIVE_LINK2=$+ LNAME2=$+ - STDMODREF = $2 - COREMODREF = $2 - XREF = $2 - CXREF = $2 - OXREF = $2 - NXREF = $2 - NCXREF = $2 - NOXREF = $2 - BUGZILLA = Bugzilla $0 PULL_REQUEST = $(LINK2 https://github.com/dlang/$1/pull/$2, $1#$2) diff --git a/src/core/memory.d b/src/core/memory.d index a1d487d1f3..10de25778d 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -31,7 +31,7 @@ $(LI Maintain another reference to that same data in another thread that the GC does know about.) $(LI Disable GC collection cycles while that thread is active with $(LREF disable)/$(LREF enable).) - $(LI Register the thread with the GC using $(CXREF thread, thread_attachThis)/$(CXREF thread, thread_detachThis).) + $(LI Register the thread with the GC using $(REF thread_attachThis, core,thread)/$(REF thread_detachThis, core,thread).) ) ) ) diff --git a/src/core/time.d b/src/core/time.d index e23e163e06..5144fa606e 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -45,12 +45,12 @@ ) $(TR $(TD $(B To $(LREF Duration))) $(TD -) - $(TD $(D tickDuration.)$(SXREF conv, to)$(D !Duration())) + $(TD $(D tickDuration.)$(REF_SHORT to, std,conv)$(D !Duration())) $(TD -) $(TD $(D dur!"msecs"(5)) or $(D 5.msecs())) ) $(TR $(TD $(B To $(LREF TickDuration))) - $(TD $(D duration.)$(SXREF conv, to)$(D !TickDuration())) + $(TD $(D duration.)$(REF_SHORT to, std,conv)$(D !TickDuration())) $(TD -) $(TD -) $(TD $(D TickDuration.from!"msecs"(msecs))) @@ -74,7 +74,6 @@ Source: $(DRUNTIMESRC core/_time.d) Macros: NBSP=  - SXREF=$(D $2) +/ module core.time; @@ -414,7 +413,7 @@ unittest (e.g. 22 days or 700 seconds). It is used when representing a duration of time - such as how long to - sleep with $(CXREF thread, Thread.sleep). + sleep with $(REF Thread.sleep, core,thread). In std.datetime, it is also used as the result of various arithmetic operations on time points. From 447258c81d66c232df36bd2b636e0fdce6bc08db Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Mon, 6 Jun 2016 00:53:21 +0200 Subject: [PATCH 379/768] fix broken WEB links sed 's/(WEB http:\/\//(WEB /' -i **/*.d --- src/core/threadasm.S | 2 +- src/rt/minit.asm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/threadasm.S b/src/core/threadasm.S index 61939ac00f..94b2fc1670 100644 --- a/src/core/threadasm.S +++ b/src/core/threadasm.S @@ -2,7 +2,7 @@ * Support code for mutithreading. * * Copyright: Copyright Mikola Lysenko 2005 - 2012. - * License: $(WEB http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Mikola Lysenko, Martin Nowak, Kai Nacke */ diff --git a/src/rt/minit.asm b/src/rt/minit.asm index 55cf70b213..72bd5d868c 100644 --- a/src/rt/minit.asm +++ b/src/rt/minit.asm @@ -2,7 +2,7 @@ ; Module initialization support. ; ; Copyright: Copyright Digital Mars 2000 - 2010. -; License: $(WEB http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0). +; License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). ; Authors: Walter Bright ; ; Copyright Digital Mars 2000 - 2010. From 69732acfebfbc63352775a053c19103e65becb97 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Mon, 6 Jun 2016 04:02:41 +0200 Subject: [PATCH 380/768] fix C++ documentation --- mak/DOCS | 3 +++ posix.mak | 3 +++ 2 files changed, 6 insertions(+) diff --git a/mak/DOCS b/mak/DOCS index bb26c32b3b..c7f630d1ca 100644 --- a/mak/DOCS +++ b/mak/DOCS @@ -36,6 +36,9 @@ DOCS=\ $(DOCDIR)\core_stdc_wchar_.html \ $(DOCDIR)\core_stdc_wctype.html \ \ + $(DOCDIR)\core_stdcpp_exception.html \ + $(DOCDIR)\core_stdcpp_typeinfo.html \ + \ $(DOCDIR)\core_sync_barrier.html \ $(DOCDIR)\core_sync_condition.html \ $(DOCDIR)\core_sync_config.html \ diff --git a/posix.mak b/posix.mak index a5c2227221..d86d7d9b7c 100644 --- a/posix.mak +++ b/posix.mak @@ -128,6 +128,9 @@ $(DOCDIR)/core_%.html : src/core/%.d $(DOCDIR)/core_stdc_%.html : src/core/stdc/%.d $(DMD) $(DDOCFLAGS) -Df$@ project.ddoc $(DOCFMT) $< +$(DOCDIR)/core_stdcpp_%.html : src/core/stdcpp/%.d + $(DMD) $(DDOCFLAGS) -Df$@ project.ddoc $(DOCFMT) $< + $(DOCDIR)/core_sync_%.html : src/core/sync/%.d $(DMD) $(DDOCFLAGS) -Df$@ project.ddoc $(DOCFMT) $< From 0f104db544099baf898a307a0d201c9802b1b3a3 Mon Sep 17 00:00:00 2001 From: Thayne McCombs Date: Sun, 5 Jun 2016 20:17:25 -0600 Subject: [PATCH 381/768] Make thread_cleanupHandler @nogc --- src/core/thread.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/thread.d b/src/core/thread.d index ecf9b91ee7..a8e071ff71 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -332,7 +332,7 @@ else version( Posix ) } Thread.add(&obj.m_main); - static extern (C) void thread_cleanupHandler( void* arg ) nothrow + static extern (C) void thread_cleanupHandler( void* arg ) nothrow @nogc { Thread obj = cast(Thread) arg; assert( obj ); From a92273b4b46400112e267298404ee274a311b18a Mon Sep 17 00:00:00 2001 From: Oleg Nykytenko Date: Mon, 16 May 2016 12:27:01 +0300 Subject: [PATCH 382/768] posix.termios add Solaris. --- src/core/sys/posix/termios.d | 162 +++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) diff --git a/src/core/sys/posix/termios.d b/src/core/sys/posix/termios.d index b330f9c83d..8f1a724de6 100644 --- a/src/core/sys/posix/termios.d +++ b/src/core/sys/posix/termios.d @@ -468,6 +468,133 @@ else version ( FreeBSD ) int tcsetattr(int, int, in termios*); } +else version (Solaris) +{ + alias tcflag_t = uint; + alias cc_t = ubyte; + alias speed_t = uint; + + enum NCCS = 19; + + struct termios + { + tcflag_t c_iflag; /* input modes */ + tcflag_t c_oflag; /* output modes */ + tcflag_t c_cflag; /* control modes */ + tcflag_t c_lflag; /* line discipline modes */ + cc_t[NCCS] c_cc; /* control chars */ + } + + /* control characters */ + enum VINTR = 0; + enum VQUIT = 1; + enum VERASE = 2; + enum VKILL = 3; + enum VEOF = 4; + enum VEOL = 5; + enum VMIN = 4; + enum VTIME = 5; + enum VSTART = 8; + enum VSTOP = 9; + enum VSUSP = 10; + + /* input modes */ + enum IGNBRK = 0x000001; + enum BRKINT = 0x000002; + enum IGNPAR = 0x000004; + enum PARMRK = 0x000008; + enum INPCK = 0x000010; + enum ISTRIP = 0x000020; + enum INLCR = 0x000040; + enum IGNCR = 0x000080; + enum ICRNL = 0x000100; + enum IXON = 0x000400; + enum IXOFF = 0x001000; + + /* output modes */ + enum OPOST = 0x000001; + + /* control modes */ + enum CSIZE = 0x000030; + enum CS5 = 0x000000; + enum CS6 = 0x000010; + enum CS7 = 0x000020; + enum CS8 = 0x000030; + enum CSTOPB = 0x000040; + enum CREAD = 0x000080; + enum PARENB = 0x000100; + enum PARODD = 0x000200; + enum HUPCL = 0x000400; + enum CLOCAL = 0x000800; + + /* line discipline 0 modes */ + enum ISIG = 0x000001; + enum ICANON = 0x000002; + enum ECHO = 0x000008; + enum ECHOE = 0x000010; + enum ECHOK = 0x000020; + enum ECHONL = 0x000040; + enum NOFLSH = 0x000080; + enum TOSTOP = 0x000100; + + enum IEXTEN = 0x008000; /* POSIX flag - enable POSIX extensions */ + + enum _TIOC = ('T'<<8); + enum TCSANOW = (_TIOC|14); + enum TCSADRAIN = (_TIOC|15); + enum TCSAFLUSH = (_TIOC|16); + + /* termios option flags */ + enum TCIFLUSH = 0; /* flush data received but not read */ + enum TCOFLUSH = 1; /* flush data written but not transmitted */ + enum TCIOFLUSH = 2; /* flush both data both input and output queues */ + + enum TCOOFF = 0; /* suspend output */ + enum TCOON = 1; /* restart suspended output */ + enum TCIOFF = 2; /* suspend input */ + enum TCION = 3; /* restart suspended input */ + + /* Speeds */ + enum B0 = 0; + enum B50 = 1; + enum B75 = 2; + enum B110 = 3; + enum B134 = 4; + enum B150 = 5; + enum B200 = 6; + enum B300 = 7; + enum B600 = 8; + enum B1200 = 9; + enum B1800 = 10; + enum B2400 = 11; + enum B4800 = 12; + enum B9600 = 13; + enum B19200 = 14; + enum B38400 = 15; + enum B57600 = 16; + enum B76800 = 17; + enum B115200 = 18; + enum B153600 = 19; + enum B230400 = 20; + enum B307200 = 21; + enum B460800 = 22; + enum B921600 = 23; + + /* + * POSIX termios functions + * These functions get mapped into ioctls. + */ + speed_t cfgetospeed(in termios*); + int cfsetospeed(termios*, speed_t); + speed_t cfgetispeed(in termios*); + int cfsetispeed(termios*, speed_t); + int tcgetattr(int, termios*); + int tcsetattr(int, int, in termios*); + int tcsendbreak(int, int); + int tcdrain(int); + int tcflush(int, int); + int tcflow(int, int); +} // // XOpen (XSI) @@ -610,4 +737,39 @@ else version( FreeBSD ) pid_t tcgetsid(int); } +else version (Solaris) +{ + enum IXANY = 0x0000800; + + enum ONLCR = 0x0000004; + enum OCRNL = 0x0000008; + enum ONOCR = 0x0000010; + enum ONLRET = 0x0000020; + enum OFILL = 0x0000040; + enum OFDEL = 0x0000080; + enum NLDLY = 0x0000100; + enum NL0 = 0x0000000; + enum NL1 = 0x0000100; + enum CRDLY = 0x0000600; + enum CR0 = 0x0000000; + enum CR1 = 0x0000200; + enum CR2 = 0x0000400; + enum CR3 = 0x0000600; + enum TABDLY = 0x0001800; + enum TAB0 = 0x0000000; + enum TAB1 = 0x0000800; + enum TAB2 = 0x0001000; + enum TAB3 = 0x0001800; + enum BSDLY = 0x0002000; + enum BS0 = 0x0000000; + enum BS1 = 0x0002000; + enum VTDLY = 0x0004000; + enum VT0 = 0x0000000; + enum VT1 = 0x0004000; + enum FFDLY = 0x0008000; + enum FF0 = 0x0000000; + enum FF1 = 0x0008000; + enum XCASE = 0x0000004; + pid_t tcgetsid(int); +} From 738a61bfd0b3ec0f3ef73833ac54029fcb154eb0 Mon Sep 17 00:00:00 2001 From: Oleg Nykytenko Date: Tue, 17 May 2016 16:01:04 +0300 Subject: [PATCH 383/768] Add more flags in termios for Solaris. --- src/core/sys/posix/termios.d | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/sys/posix/termios.d b/src/core/sys/posix/termios.d index 8f1a724de6..5a56fd071c 100644 --- a/src/core/sys/posix/termios.d +++ b/src/core/sys/posix/termios.d @@ -527,6 +527,8 @@ else version (Solaris) enum HUPCL = 0x000400; enum CLOCAL = 0x000800; + enum CRTSCTS = 0x10000000; + /* line discipline 0 modes */ enum ISIG = 0x000001; enum ICANON = 0x000002; @@ -537,6 +539,10 @@ else version (Solaris) enum NOFLSH = 0x000080; enum TOSTOP = 0x000100; + enum ECHOCTL = 0x000200; + enum ECHOPRT = 0x000400; + enum ECHOKE = 0x000800; + enum IEXTEN = 0x008000; /* POSIX flag - enable POSIX extensions */ enum _TIOC = ('T'<<8); From 0c87ca709a5386eaebc900ae9aca4ab585e1facc Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 7 Jun 2016 00:02:23 -0700 Subject: [PATCH 384/768] fix Issue 6333 - The 'capacity' function is not pure/nothrow/@safe --- src/object.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/object.d b/src/object.d index 75ef67013d..a00a87623a 100644 --- a/src/object.d +++ b/src/object.d @@ -2943,12 +2943,12 @@ private * * Note: The capacity of a slice may be impacted by operations on other slices. */ -@property size_t capacity(T)(T[] arr) pure nothrow +@property size_t capacity(T)(T[] arr) pure nothrow @trusted { return _d_arraysetcapacity(typeid(T[]), 0, cast(void *)&arr); } /// -unittest +@safe unittest { //Static array slice: no capacity int[4] sarray = [1, 2, 3, 4]; From 44a1e024b379987eef2dbc191ef1507b064e9d38 Mon Sep 17 00:00:00 2001 From: Thayne McCombs Date: Wed, 8 Jun 2016 21:55:29 -0600 Subject: [PATCH 385/768] Make most pthread functions @nogc while maintaining backwards compatibility --- src/core/sys/posix/pthread.d | 128 +++++++++++++++++------------------ 1 file changed, 62 insertions(+), 66 deletions(-) diff --git a/src/core/sys/posix/pthread.d b/src/core/sys/posix/pthread.d index 245d1c6036..84fc73174d 100644 --- a/src/core/sys/posix/pthread.d +++ b/src/core/sys/posix/pthread.d @@ -33,7 +33,6 @@ else version (WatchOS) version (Posix): extern (C) nothrow: -@nogc: // // Required @@ -272,18 +271,21 @@ else } int pthread_atfork(void function(), void function(), void function()); -int pthread_attr_destroy(pthread_attr_t*); -int pthread_attr_getdetachstate(in pthread_attr_t*, int*); -int pthread_attr_getschedparam(in pthread_attr_t*, sched_param*); -int pthread_attr_init(pthread_attr_t*); -int pthread_attr_setdetachstate(pthread_attr_t*, int); -int pthread_attr_setschedparam(in pthread_attr_t*, sched_param*); -int pthread_cancel(pthread_t); +@nogc { + int pthread_atfork(void function() @nogc, void function() @nogc, void function() @nogc); + int pthread_attr_destroy(pthread_attr_t*); + int pthread_attr_getdetachstate(in pthread_attr_t*, int*); + int pthread_attr_getschedparam(in pthread_attr_t*, sched_param*); + int pthread_attr_init(pthread_attr_t*); + int pthread_attr_setdetachstate(pthread_attr_t*, int); + int pthread_attr_setschedparam(in pthread_attr_t*, sched_param*); + int pthread_cancel(pthread_t); +} +alias void function(void*) _pthread_cleanup_routine; +alias void function(void*) @nogc _pthread_cleanup_routine_nogc; version( CRuntime_Glibc ) { - alias void function(void*) _pthread_cleanup_routine; - struct _pthread_cleanup_buffer { _pthread_cleanup_routine __routine; @@ -293,13 +295,14 @@ version( CRuntime_Glibc ) } void _pthread_cleanup_push(_pthread_cleanup_buffer*, _pthread_cleanup_routine, void*); + void _pthread_cleanup_push(_pthread_cleanup_buffer*, _pthread_cleanup_routine_nogc, void*) @nogc; void _pthread_cleanup_pop(_pthread_cleanup_buffer*, int); struct pthread_cleanup { _pthread_cleanup_buffer buffer = void; - extern (D) void push()( _pthread_cleanup_routine routine, void* arg ) + extern (D) void push(F: _pthread_cleanup_routine)(F routine, void* arg ) { _pthread_cleanup_push( &buffer, routine, arg ); } @@ -312,8 +315,6 @@ version( CRuntime_Glibc ) } else version( Darwin ) { - alias void function(void*) _pthread_cleanup_routine; - struct _pthread_cleanup_buffer { _pthread_cleanup_routine __routine; @@ -325,7 +326,7 @@ else version( Darwin ) { _pthread_cleanup_buffer buffer = void; - extern (D) void push()( _pthread_cleanup_routine routine, void* arg ) + extern (D) void push(F: _pthread_cleanup_routine)(F routine, void* arg ) { pthread_t self = pthread_self(); buffer.__routine = routine; @@ -347,8 +348,6 @@ else version( Darwin ) } else version( FreeBSD ) { - alias void function(void*) _pthread_cleanup_routine; - struct _pthread_cleanup_info { uintptr_t[8] pthread_cleanup_pad; @@ -358,7 +357,7 @@ else version( FreeBSD ) { _pthread_cleanup_info __cleanup_info__ = void; - extern (D) void push()( _pthread_cleanup_routine cleanup_routine, void* cleanup_arg ) + extern (D) void push(F: _pthread_cleanup_routine)(F cleanup_routine, void* cleanup_arg ) { __pthread_cleanup_push_imp( cleanup_routine, cleanup_arg, &__cleanup_info__ ); } @@ -370,12 +369,11 @@ else version( FreeBSD ) } void __pthread_cleanup_push_imp(_pthread_cleanup_routine, void*, _pthread_cleanup_info*); + void __pthread_cleanup_push_imp(_pthread_cleanup_routine_nogc, void*, _pthread_cleanup_info*) @nogc; void __pthread_cleanup_pop_imp(int); } else version (Solaris) { - alias void function(void*) _pthread_cleanup_routine; - caddr_t _getfp(); struct _pthread_cleanup_info @@ -387,7 +385,7 @@ else version (Solaris) { _pthread_cleanup_info __cleanup_info__ = void; - extern (D) void push()(_pthread_cleanup_routine cleanup_routine, void* cleanup_arg) + extern (D) void push(F: _pthread_cleanup_routine)(F cleanup_routine, void* cleanup_arg) { __pthread_cleanup_push(cleanup_routine, cleanup_arg, _getfp(), &__cleanup_info__); } @@ -399,12 +397,11 @@ else version (Solaris) } void __pthread_cleanup_push(_pthread_cleanup_routine, void*, caddr_t, _pthread_cleanup_info*); + void __pthread_cleanup_push(_pthread_cleanup_routine_nogc, void*, caddr_t, _pthread_cleanup_info*) @nogc; void __pthread_cleanup_pop(int, _pthread_cleanup_info*); } else version( CRuntime_Bionic ) { - alias void function(void*) __pthread_cleanup_func_t; - struct __pthread_cleanup_t { __pthread_cleanup_t* __cleanup_prev; @@ -412,15 +409,15 @@ else version( CRuntime_Bionic ) void* __cleanup_arg; } - void __pthread_cleanup_push(__pthread_cleanup_t*, __pthread_cleanup_func_t, - void*); + void __pthread_cleanup_push(__pthread_cleanup_t*, _pthread_cleanup_routine, void*); + void __pthread_cleanup_push(__pthread_cleanup_t*, _pthread_cleanup_routine_nogc, void*) @nogc; void __pthread_cleanup_pop(__pthread_cleanup_t*, int); struct pthread_cleanup { __pthread_cleanup_t __cleanup = void; - extern (D) void push()( __pthread_cleanup_func_t routine, void* arg ) + extern (D) void push(F: _pthread_cleanup_routine)(F routine, void* arg ) { __pthread_cleanup_push( &__cleanup, routine, arg ); } @@ -436,47 +433,46 @@ else static assert(false, "Unsupported platform"); } -@nogc -{ - int pthread_cond_broadcast(pthread_cond_t*); - int pthread_cond_destroy(pthread_cond_t*); - int pthread_cond_init(in pthread_cond_t*, pthread_condattr_t*) @trusted; - int pthread_cond_signal(pthread_cond_t*); - int pthread_cond_timedwait(pthread_cond_t*, pthread_mutex_t*, in timespec*); - int pthread_cond_wait(pthread_cond_t*, pthread_mutex_t*); - int pthread_condattr_destroy(pthread_condattr_t*); - int pthread_condattr_init(pthread_condattr_t*); - int pthread_create(pthread_t*, in pthread_attr_t*, void* function(void*), void*); - int pthread_detach(pthread_t); - int pthread_equal(pthread_t, pthread_t); - void pthread_exit(void*); - void* pthread_getspecific(pthread_key_t); - int pthread_join(pthread_t, void**); - int pthread_key_create(pthread_key_t*, void function(void*)); - int pthread_key_delete(pthread_key_t); - int pthread_mutex_destroy(pthread_mutex_t*); - int pthread_mutex_init(pthread_mutex_t*, pthread_mutexattr_t*) @trusted; - int pthread_mutex_lock(pthread_mutex_t*); - int pthread_mutex_trylock(pthread_mutex_t*); - int pthread_mutex_unlock(pthread_mutex_t*); - int pthread_mutexattr_destroy(pthread_mutexattr_t*); - int pthread_mutexattr_init(pthread_mutexattr_t*) @trusted; - int pthread_once(pthread_once_t*, void function()); - int pthread_rwlock_destroy(pthread_rwlock_t*); - int pthread_rwlock_init(pthread_rwlock_t*, in pthread_rwlockattr_t*); - int pthread_rwlock_rdlock(pthread_rwlock_t*); - int pthread_rwlock_tryrdlock(pthread_rwlock_t*); - int pthread_rwlock_trywrlock(pthread_rwlock_t*); - int pthread_rwlock_unlock(pthread_rwlock_t*); - int pthread_rwlock_wrlock(pthread_rwlock_t*); - int pthread_rwlockattr_destroy(pthread_rwlockattr_t*); - int pthread_rwlockattr_init(pthread_rwlockattr_t*); - pthread_t pthread_self(); - int pthread_setcancelstate(int, int*); - int pthread_setcanceltype(int, int*); - int pthread_setspecific(pthread_key_t, in void*); - void pthread_testcancel(); -} +@nogc: + +int pthread_cond_broadcast(pthread_cond_t*); +int pthread_cond_destroy(pthread_cond_t*); +int pthread_cond_init(in pthread_cond_t*, pthread_condattr_t*) @trusted; +int pthread_cond_signal(pthread_cond_t*); +int pthread_cond_timedwait(pthread_cond_t*, pthread_mutex_t*, in timespec*); +int pthread_cond_wait(pthread_cond_t*, pthread_mutex_t*); +int pthread_condattr_destroy(pthread_condattr_t*); +int pthread_condattr_init(pthread_condattr_t*); +int pthread_create(pthread_t*, in pthread_attr_t*, void* function(void*), void*); +int pthread_detach(pthread_t); +int pthread_equal(pthread_t, pthread_t); +void pthread_exit(void*); +void* pthread_getspecific(pthread_key_t); +int pthread_join(pthread_t, void**); +int pthread_key_create(pthread_key_t*, void function(void*)); +int pthread_key_delete(pthread_key_t); +int pthread_mutex_destroy(pthread_mutex_t*); +int pthread_mutex_init(pthread_mutex_t*, pthread_mutexattr_t*) @trusted; +int pthread_mutex_lock(pthread_mutex_t*); +int pthread_mutex_trylock(pthread_mutex_t*); +int pthread_mutex_unlock(pthread_mutex_t*); +int pthread_mutexattr_destroy(pthread_mutexattr_t*); +int pthread_mutexattr_init(pthread_mutexattr_t*) @trusted; +int pthread_once(pthread_once_t*, void function()); +int pthread_rwlock_destroy(pthread_rwlock_t*); +int pthread_rwlock_init(pthread_rwlock_t*, in pthread_rwlockattr_t*); +int pthread_rwlock_rdlock(pthread_rwlock_t*); +int pthread_rwlock_tryrdlock(pthread_rwlock_t*); +int pthread_rwlock_trywrlock(pthread_rwlock_t*); +int pthread_rwlock_unlock(pthread_rwlock_t*); +int pthread_rwlock_wrlock(pthread_rwlock_t*); +int pthread_rwlockattr_destroy(pthread_rwlockattr_t*); +int pthread_rwlockattr_init(pthread_rwlockattr_t*); +pthread_t pthread_self(); +int pthread_setcancelstate(int, int*); +int pthread_setcanceltype(int, int*); +int pthread_setspecific(pthread_key_t, in void*); +void pthread_testcancel(); // // Barrier (BAR) From 5d28a552bb82427949115f1f0752467159ac6f4c Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 9 Jun 2016 03:43:14 -0700 Subject: [PATCH 386/768] fix Issue 14117 - core.atomic should be @safe --- src/core/atomic.d | 286 ++++++++++++++++++++++------------------------ 1 file changed, 138 insertions(+), 148 deletions(-) diff --git a/src/core/atomic.d b/src/core/atomic.d index 6d4b42652b..71e47e5d20 100644 --- a/src/core/atomic.d +++ b/src/core/atomic.d @@ -2,17 +2,12 @@ * The atomic module provides basic support for lock-free * concurrent programming. * - * Copyright: Copyright Sean Kelly 2005 - 2010. + * Copyright: Copyright Sean Kelly 2005 - 2016. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Authors: Sean Kelly, Alex Rønne Petersen * Source: $(DRUNTIMESRC core/_atomic.d) */ -/* Copyright Sean Kelly 2005 - 2010. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module core.atomic; version( D_InlineAsm_X86 ) @@ -52,9 +47,19 @@ version( AsmX86 ) // NOTE: Strictly speaking, the x86 supports atomic operations on // unaligned values. However, this is far slower than the // common case, so such behavior should be prohibited. - private bool atomicValueIsProperlyAligned(T)( size_t addr ) pure nothrow + private bool atomicValueIsProperlyAligned(T)( ref T val ) pure nothrow @nogc @trusted { - return addr % T.sizeof == 0; + return atomicPtrIsProperlyAligned(&val); + } + + private bool atomicPtrIsProperlyAligned(T)( T* ptr ) pure nothrow @nogc @safe + { + // NOTE: 32 bit x86 systems support 8 byte CAS, which only requires + // 4 byte alignment, so use size_t as the align type here. + static if( T.sizeof > size_t.sizeof ) + return cast(size_t)ptr % size_t.sizeof == 0; + else + return cast(size_t)ptr % T.sizeof == 0; } } @@ -71,7 +76,7 @@ version( CoreDdoc ) * Returns: * The result of the operation. */ - HeadUnshared!(T) atomicOp(string op, T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc + HeadUnshared!(T) atomicOp(string op, T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc @safe if( __traits( compiles, mixin( "*cast(T*)&val" ~ op ~ "mod" ) ) ) { return HeadUnshared!(T).init; @@ -91,15 +96,15 @@ version( CoreDdoc ) * Returns: * true if the store occurred, false if not. */ - bool cas(T,V1,V2)( shared(T)* here, const V1 ifThis, V2 writeThis ) pure nothrow @nogc + bool cas(T,V1,V2)( shared(T)* here, const V1 ifThis, V2 writeThis ) pure nothrow @nogc @safe if( !is(T == class) && !is(T U : U*) && __traits( compiles, { *here = writeThis; } ) ); /// Ditto - bool cas(T,V1,V2)( shared(T)* here, const shared(V1) ifThis, shared(V2) writeThis ) pure nothrow @nogc + bool cas(T,V1,V2)( shared(T)* here, const shared(V1) ifThis, shared(V2) writeThis ) pure nothrow @nogc @safe if( is(T == class) && __traits( compiles, { *here = writeThis; } ) ); /// Ditto - bool cas(T,V1,V2)( shared(T)* here, const shared(V1)* ifThis, shared(V2)* writeThis ) pure nothrow @nogc + bool cas(T,V1,V2)( shared(T)* here, const shared(V1)* ifThis, shared(V2)* writeThis ) pure nothrow @nogc @safe if( is(T U : U*) && __traits( compiles, { *here = writeThis; } ) ); /** @@ -114,7 +119,7 @@ version( CoreDdoc ) * Returns: * The value of 'val'. */ - HeadUnshared!(T) atomicLoad(MemoryOrder ms = MemoryOrder.seq,T)( ref const shared T val ) pure nothrow @nogc + HeadUnshared!(T) atomicLoad(MemoryOrder ms = MemoryOrder.seq,T)( ref const shared T val ) pure nothrow @nogc @safe { return HeadUnshared!(T).init; } @@ -130,7 +135,7 @@ version( CoreDdoc ) * val = The target variable. * newval = The value to store. */ - void atomicStore(MemoryOrder ms = MemoryOrder.seq,T,V1)( ref shared T val, V1 newval ) pure nothrow @nogc + void atomicStore(MemoryOrder ms = MemoryOrder.seq,T,V1)( ref shared T val, V1 newval ) pure nothrow @nogc @safe if( __traits( compiles, { val = newval; } ) ) { @@ -161,20 +166,20 @@ version( CoreDdoc ) else version( AsmX86_32 ) { // Uses specialized asm for fast fetch and add operations - private HeadUnshared!(T) atomicFetchAdd(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc + private HeadUnshared!(T) atomicFetchAdd(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc @safe if( T.sizeof <= 4 && V1.sizeof <= 4) { size_t tmp = mod; // convert all operands to size_t - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EAX, tmp; mov EDX, val; } - static if (T.sizeof == 1) asm pure nothrow @nogc { lock; xadd[EDX], AL; } - else static if (T.sizeof == 2) asm pure nothrow @nogc { lock; xadd[EDX], AX; } - else static if (T.sizeof == 4) asm pure nothrow @nogc { lock; xadd[EDX], EAX; } + static if (T.sizeof == 1) asm pure nothrow @nogc @trusted { lock; xadd[EDX], AL; } + else static if (T.sizeof == 2) asm pure nothrow @nogc @trusted { lock; xadd[EDX], AX; } + else static if (T.sizeof == 4) asm pure nothrow @nogc @trusted { lock; xadd[EDX], EAX; } - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov tmp, EAX; } @@ -182,7 +187,7 @@ else version( AsmX86_32 ) return cast(T)tmp; } - private HeadUnshared!(T) atomicFetchSub(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc + private HeadUnshared!(T) atomicFetchSub(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc @safe if( T.sizeof <= 4 && V1.sizeof <= 4) { return atomicFetchAdd(val, -mod); @@ -192,12 +197,7 @@ else version( AsmX86_32 ) if( __traits( compiles, mixin( "*cast(T*)&val" ~ op ~ "mod" ) ) ) in { - // NOTE: 32 bit x86 systems support 8 byte CAS, which only requires - // 4 byte alignment, so use size_t as the align type here. - static if( T.sizeof > size_t.sizeof ) - assert( atomicValueIsProperlyAligned!(size_t)( cast(size_t) &val ) ); - else - assert( atomicValueIsProperlyAligned!(T)( cast(size_t) &val ) ); + assert(atomicValueIsProperlyAligned(val)); } body { @@ -239,7 +239,7 @@ else version( AsmX86_32 ) { get = set = atomicLoad!(MemoryOrder.raw)( val ); mixin( "set " ~ op ~ " mod;" ); - } while( !cas( &val, get, set ) ); + } while( !casByRef( val, get, set ) ); return set; } else @@ -248,33 +248,33 @@ else version( AsmX86_32 ) } } - bool cas(T,V1,V2)( shared(T)* here, const V1 ifThis, V2 writeThis ) pure nothrow @nogc + bool casByRef(T,V1,V2)( ref T value, V1 ifThis, V2 writeThis ) pure nothrow @nogc @trusted + { + return cas(&value, ifThis, writeThis); + } + + bool cas(T,V1,V2)( shared(T)* here, const V1 ifThis, V2 writeThis ) pure nothrow @nogc @safe if( !is(T == class) && !is(T U : U*) && __traits( compiles, { *here = writeThis; } ) ) { return casImpl(here, ifThis, writeThis); } - bool cas(T,V1,V2)( shared(T)* here, const shared(V1) ifThis, shared(V2) writeThis ) pure nothrow @nogc + bool cas(T,V1,V2)( shared(T)* here, const shared(V1) ifThis, shared(V2) writeThis ) pure nothrow @nogc @safe if( is(T == class) && __traits( compiles, { *here = writeThis; } ) ) { return casImpl(here, ifThis, writeThis); } - bool cas(T,V1,V2)( shared(T)* here, const shared(V1)* ifThis, shared(V2)* writeThis ) pure nothrow @nogc + bool cas(T,V1,V2)( shared(T)* here, const shared(V1)* ifThis, shared(V2)* writeThis ) pure nothrow @nogc @safe if( is(T U : U*) && __traits( compiles, { *here = writeThis; } ) ) { return casImpl(here, ifThis, writeThis); } - private bool casImpl(T,V1,V2)( shared(T)* here, V1 ifThis, V2 writeThis ) pure nothrow @nogc + private bool casImpl(T,V1,V2)( shared(T)* here, V1 ifThis, V2 writeThis ) pure nothrow @nogc @safe in { - // NOTE: 32 bit x86 systems support 8 byte CAS, which only requires - // 4 byte alignment, so use size_t as the align type here. - static if( T.sizeof > size_t.sizeof ) - assert( atomicValueIsProperlyAligned!(size_t)( cast(size_t) here ) ); - else - assert( atomicValueIsProperlyAligned!(T)( cast(size_t) here ) ); + assert( atomicPtrIsProperlyAligned( here ) ); } body { @@ -284,7 +284,7 @@ else version( AsmX86_32 ) // 1 Byte CAS ////////////////////////////////////////////////////////////////// - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov DL, writeThis; mov AL, ifThis; @@ -300,7 +300,7 @@ else version( AsmX86_32 ) // 2 Byte CAS ////////////////////////////////////////////////////////////////// - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov DX, writeThis; mov AX, ifThis; @@ -316,7 +316,7 @@ else version( AsmX86_32 ) // 4 Byte CAS ////////////////////////////////////////////////////////////////// - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EDX, writeThis; mov EAX, ifThis; @@ -333,7 +333,7 @@ else version( AsmX86_32 ) // 8 Byte CAS on a 32-Bit Processor ////////////////////////////////////////////////////////////////// - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { push EDI; push EBX; @@ -391,7 +391,7 @@ else version( AsmX86_32 ) } - HeadUnshared!(T) atomicLoad(MemoryOrder ms = MemoryOrder.seq, T)( ref const shared T val ) pure nothrow @nogc + HeadUnshared!(T) atomicLoad(MemoryOrder ms = MemoryOrder.seq, T)( ref const shared T val ) pure nothrow @nogc @safe if(!__traits(isFloating, T)) { static assert( ms != MemoryOrder.rel, "invalid MemoryOrder for atomicLoad()" ); @@ -405,7 +405,7 @@ else version( AsmX86_32 ) static if( needsLoadBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov DL, 0; mov AL, 0; @@ -416,7 +416,7 @@ else version( AsmX86_32 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EAX, val; mov AL, [EAX]; @@ -431,7 +431,7 @@ else version( AsmX86_32 ) static if( needsLoadBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov DX, 0; mov AX, 0; @@ -442,7 +442,7 @@ else version( AsmX86_32 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EAX, val; mov AX, [EAX]; @@ -457,7 +457,7 @@ else version( AsmX86_32 ) static if( needsLoadBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EDX, 0; mov EAX, 0; @@ -468,7 +468,7 @@ else version( AsmX86_32 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EAX, val; mov EAX, [EAX]; @@ -481,7 +481,7 @@ else version( AsmX86_32 ) // 8 Byte Load on a 32-Bit Processor ////////////////////////////////////////////////////////////////// - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { push EDI; push EBX; @@ -502,7 +502,7 @@ else version( AsmX86_32 ) } } - void atomicStore(MemoryOrder ms = MemoryOrder.seq, T, V1)( ref shared T val, V1 newval ) pure nothrow @nogc + void atomicStore(MemoryOrder ms = MemoryOrder.seq, T, V1)( ref shared T val, V1 newval ) pure nothrow @nogc @safe if( __traits( compiles, { val = newval; } ) ) { static assert( ms != MemoryOrder.acq, "invalid MemoryOrder for atomicStore()" ); @@ -516,7 +516,7 @@ else version( AsmX86_32 ) static if( needsStoreBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EAX, val; mov DL, newval; @@ -526,7 +526,7 @@ else version( AsmX86_32 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EAX, val; mov DL, newval; @@ -542,7 +542,7 @@ else version( AsmX86_32 ) static if( needsStoreBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EAX, val; mov DX, newval; @@ -552,7 +552,7 @@ else version( AsmX86_32 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EAX, val; mov DX, newval; @@ -568,7 +568,7 @@ else version( AsmX86_32 ) static if( needsStoreBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EAX, val; mov EDX, newval; @@ -578,7 +578,7 @@ else version( AsmX86_32 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EAX, val; mov EDX, newval; @@ -592,7 +592,7 @@ else version( AsmX86_32 ) // 8 Byte Store on a 32-Bit Processor ////////////////////////////////////////////////////////////////// - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { push EDI; push EBX; @@ -616,11 +616,11 @@ else version( AsmX86_32 ) } - void atomicFence() nothrow + void atomicFence() nothrow @nogc @safe { import core.cpuid; - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { naked; @@ -654,31 +654,26 @@ else version( AsmX86_32 ) else version( AsmX86_64 ) { // Uses specialized asm for fast fetch and add operations - private HeadUnshared!(T) atomicFetchAdd(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc + private HeadUnshared!(T) atomicFetchAdd(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc @trusted if( __traits(isIntegral, T) && __traits(isIntegral, V1) ) in { - // NOTE: 32 bit x86 systems support 8 byte CAS, which only requires - // 4 byte alignment, so use size_t as the align type here. - static if( T.sizeof > size_t.sizeof ) - assert( atomicValueIsProperlyAligned!(size_t)( cast(size_t) &val ) ); - else - assert( atomicValueIsProperlyAligned!(T)( cast(size_t) &val ) ); + assert( atomicValueIsProperlyAligned(val)); } body { size_t tmp = mod; // convert all operands to size_t - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, tmp; mov RDX, val; } - static if (T.sizeof == 1) asm pure nothrow @nogc { lock; xadd[RDX], AL; } - else static if (T.sizeof == 2) asm pure nothrow @nogc { lock; xadd[RDX], AX; } - else static if (T.sizeof == 4) asm pure nothrow @nogc { lock; xadd[RDX], EAX; } - else static if (T.sizeof == 8) asm pure nothrow @nogc { lock; xadd[RDX], RAX; } + static if (T.sizeof == 1) asm pure nothrow @nogc @trusted { lock; xadd[RDX], AL; } + else static if (T.sizeof == 2) asm pure nothrow @nogc @trusted { lock; xadd[RDX], AX; } + else static if (T.sizeof == 4) asm pure nothrow @nogc @trusted { lock; xadd[RDX], EAX; } + else static if (T.sizeof == 8) asm pure nothrow @nogc @trusted { lock; xadd[RDX], RAX; } - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov tmp, RAX; } @@ -686,7 +681,7 @@ else version( AsmX86_64 ) return cast(T)tmp; } - private HeadUnshared!(T) atomicFetchSub(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc + private HeadUnshared!(T) atomicFetchSub(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc @safe if( __traits(isIntegral, T) && __traits(isIntegral, V1) ) { return atomicFetchAdd(val, -mod); @@ -696,12 +691,7 @@ else version( AsmX86_64 ) if( __traits( compiles, mixin( "*cast(T*)&val" ~ op ~ "mod" ) ) ) in { - // NOTE: 32 bit x86 systems support 8 byte CAS, which only requires - // 4 byte alignment, so use size_t as the align type here. - static if( T.sizeof > size_t.sizeof ) - assert( atomicValueIsProperlyAligned!(size_t)( cast(size_t) &val ) ); - else - assert( atomicValueIsProperlyAligned!(T)( cast(size_t) &val ) ); + assert( atomicValueIsProperlyAligned(val)); } body { @@ -743,7 +733,7 @@ else version( AsmX86_64 ) { get = set = atomicLoad!(MemoryOrder.raw)( val ); mixin( "set " ~ op ~ " mod;" ); - } while( !cas( &val, get, set ) ); + } while( !casByRef( val, get, set ) ); return set; } else @@ -753,33 +743,33 @@ else version( AsmX86_64 ) } - bool cas(T,V1,V2)( shared(T)* here, const V1 ifThis, V2 writeThis ) pure nothrow @nogc + bool casByRef(T,V1,V2)( ref T value, V1 ifThis, V2 writeThis ) pure nothrow @nogc @trusted + { + return cas(&value, ifThis, writeThis); + } + + bool cas(T,V1,V2)( shared(T)* here, const V1 ifThis, V2 writeThis ) pure nothrow @nogc @safe if( !is(T == class) && !is(T U : U*) && __traits( compiles, { *here = writeThis; } ) ) { return casImpl(here, ifThis, writeThis); } - bool cas(T,V1,V2)( shared(T)* here, const shared(V1) ifThis, shared(V2) writeThis ) pure nothrow @nogc + bool cas(T,V1,V2)( shared(T)* here, const shared(V1) ifThis, shared(V2) writeThis ) pure nothrow @nogc @safe if( is(T == class) && __traits( compiles, { *here = writeThis; } ) ) { return casImpl(here, ifThis, writeThis); } - bool cas(T,V1,V2)( shared(T)* here, const shared(V1)* ifThis, shared(V2)* writeThis ) pure nothrow @nogc + bool cas(T,V1,V2)( shared(T)* here, const shared(V1)* ifThis, shared(V2)* writeThis ) pure nothrow @nogc @safe if( is(T U : U*) && __traits( compiles, { *here = writeThis; } ) ) { return casImpl(here, ifThis, writeThis); } - private bool casImpl(T,V1,V2)( shared(T)* here, V1 ifThis, V2 writeThis ) pure nothrow @nogc + private bool casImpl(T,V1,V2)( shared(T)* here, V1 ifThis, V2 writeThis ) pure nothrow @nogc @safe in { - // NOTE: 32 bit x86 systems support 8 byte CAS, which only requires - // 4 byte alignment, so use size_t as the align type here. - static if( T.sizeof > size_t.sizeof ) - assert( atomicValueIsProperlyAligned!(size_t)( cast(size_t) here ) ); - else - assert( atomicValueIsProperlyAligned!(T)( cast(size_t) here ) ); + assert( atomicPtrIsProperlyAligned( here ) ); } body { @@ -789,7 +779,7 @@ else version( AsmX86_64 ) // 1 Byte CAS ////////////////////////////////////////////////////////////////// - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov DL, writeThis; mov AL, ifThis; @@ -805,7 +795,7 @@ else version( AsmX86_64 ) // 2 Byte CAS ////////////////////////////////////////////////////////////////// - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov DX, writeThis; mov AX, ifThis; @@ -821,7 +811,7 @@ else version( AsmX86_64 ) // 4 Byte CAS ////////////////////////////////////////////////////////////////// - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EDX, writeThis; mov EAX, ifThis; @@ -837,7 +827,7 @@ else version( AsmX86_64 ) // 8 Byte CAS on a 64-Bit Processor ////////////////////////////////////////////////////////////////// - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RDX, writeThis; mov RAX, ifThis; @@ -855,7 +845,7 @@ else version( AsmX86_64 ) version(Win64){ //Windows 64 calling convention uses different registers. //DMD appears to reverse the register order. - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { push RDI; push RBX; @@ -881,7 +871,7 @@ else version( AsmX86_64 ) }else{ - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { push RDI; push RBX; @@ -938,7 +928,7 @@ else version( AsmX86_64 ) } - HeadUnshared!(T) atomicLoad(MemoryOrder ms = MemoryOrder.seq, T)( ref const shared T val ) pure nothrow @nogc + HeadUnshared!(T) atomicLoad(MemoryOrder ms = MemoryOrder.seq, T)( ref const shared T val ) pure nothrow @nogc @safe if(!__traits(isFloating, T)) { static assert( ms != MemoryOrder.rel, "invalid MemoryOrder for atomicLoad()" ); @@ -952,7 +942,7 @@ else version( AsmX86_64 ) static if( needsLoadBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov DL, 0; mov AL, 0; @@ -963,7 +953,7 @@ else version( AsmX86_64 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov AL, [RAX]; @@ -978,7 +968,7 @@ else version( AsmX86_64 ) static if( needsLoadBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov DX, 0; mov AX, 0; @@ -989,7 +979,7 @@ else version( AsmX86_64 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov AX, [RAX]; @@ -1004,7 +994,7 @@ else version( AsmX86_64 ) static if( needsLoadBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov EDX, 0; mov EAX, 0; @@ -1015,7 +1005,7 @@ else version( AsmX86_64 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov EAX, [RAX]; @@ -1030,7 +1020,7 @@ else version( AsmX86_64 ) static if( needsLoadBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RDX, 0; mov RAX, 0; @@ -1041,7 +1031,7 @@ else version( AsmX86_64 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov RAX, [RAX]; @@ -1055,7 +1045,7 @@ else version( AsmX86_64 ) ////////////////////////////////////////////////////////////////// version(Win64){ size_t[2] retVal; - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { push RDI; push RBX; @@ -1074,7 +1064,7 @@ else version( AsmX86_64 ) } return cast(typeof(return)) retVal; }else{ - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { push RDI; push RBX; @@ -1097,7 +1087,7 @@ else version( AsmX86_64 ) } - void atomicStore(MemoryOrder ms = MemoryOrder.seq, T, V1)( ref shared T val, V1 newval ) pure nothrow @nogc + void atomicStore(MemoryOrder ms = MemoryOrder.seq, T, V1)( ref shared T val, V1 newval ) pure nothrow @nogc @safe if( __traits( compiles, { val = newval; } ) ) { static assert( ms != MemoryOrder.acq, "invalid MemoryOrder for atomicStore()" ); @@ -1111,7 +1101,7 @@ else version( AsmX86_64 ) static if( needsStoreBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov DL, newval; @@ -1121,7 +1111,7 @@ else version( AsmX86_64 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov DL, newval; @@ -1137,7 +1127,7 @@ else version( AsmX86_64 ) static if( needsStoreBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov DX, newval; @@ -1147,7 +1137,7 @@ else version( AsmX86_64 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov DX, newval; @@ -1163,7 +1153,7 @@ else version( AsmX86_64 ) static if( needsStoreBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov EDX, newval; @@ -1173,7 +1163,7 @@ else version( AsmX86_64 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov EDX, newval; @@ -1189,7 +1179,7 @@ else version( AsmX86_64 ) static if( needsStoreBarrier!(ms) ) { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov RDX, newval; @@ -1199,7 +1189,7 @@ else version( AsmX86_64 ) } else { - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { mov RAX, val; mov RDX, newval; @@ -1213,7 +1203,7 @@ else version( AsmX86_64 ) // 16 Byte Store on a 64-Bit Processor ////////////////////////////////////////////////////////////////// version(Win64){ - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { push RDI; push RBX; @@ -1235,7 +1225,7 @@ else version( AsmX86_64 ) pop RDI; } }else{ - asm pure nothrow @nogc + asm pure nothrow @nogc @trusted { push RDI; push RBX; @@ -1260,10 +1250,10 @@ else version( AsmX86_64 ) } - void atomicFence() nothrow @nogc + void atomicFence() nothrow @nogc @safe { // SSE2 is always present in 64-bit x86 chips. - asm nothrow @nogc + asm nothrow @nogc @trusted { naked; @@ -1277,7 +1267,7 @@ else version( AsmX86_64 ) // floats and doubles to ints and longs, atomically loads them, then puns // them back. This is necessary so that they get returned in floating // point instead of integer registers. -HeadUnshared!(T) atomicLoad(MemoryOrder ms = MemoryOrder.seq, T)( ref const shared T val ) pure nothrow @nogc +HeadUnshared!(T) atomicLoad(MemoryOrder ms = MemoryOrder.seq, T)( ref const shared T val ) pure nothrow @nogc @trusted if(__traits(isFloating, T)) { static if(T.sizeof == int.sizeof) @@ -1307,7 +1297,7 @@ if(__traits(isFloating, T)) version( unittest ) { - void testCAS(T)( T val ) pure nothrow + void testCAS(T)( T val ) pure nothrow @nogc @trusted in { assert(val !is T.init); @@ -1326,7 +1316,7 @@ version( unittest ) assert( atom is val, T.stringof ); } - void testLoadStore(MemoryOrder ms = MemoryOrder.seq, T)( T val = T.init + 1 ) pure nothrow + void testLoadStore(MemoryOrder ms = MemoryOrder.seq, T)( T val = T.init + 1 ) pure nothrow @nogc @trusted { T base = cast(T) 0; shared(T) atom = cast(T) 0; @@ -1341,16 +1331,14 @@ version( unittest ) } - void testType(T)( T val = T.init + 1 ) pure nothrow + void testType(T)( T val = T.init + 1 ) pure nothrow @nogc @safe { testCAS!(T)( val ); testLoadStore!(MemoryOrder.seq, T)( val ); testLoadStore!(MemoryOrder.raw, T)( val ); } - - //@@@BUG@@@ http://d.puremagic.com/issues/show_bug.cgi?id=8081 - /+pure nothrow+/ unittest + @safe pure nothrow unittest { testType!(bool)(); @@ -1377,6 +1365,25 @@ version( unittest ) testType!(ulong)(); } + shared(size_t) i; + + atomicOp!"+="( i, cast(size_t) 1 ); + assert( i == 1 ); + + atomicOp!"-="( i, cast(size_t) 1 ); + assert( i == 0 ); + + shared float f = 0; + atomicOp!"+="( f, 1 ); + assert( f == 1 ); + + shared double d = 0; + atomicOp!"+="( d, 1 ); + assert( d == 1 ); + } + + pure nothrow unittest + { static if (has128BitCAS) { struct DoubleValue @@ -1413,26 +1420,9 @@ version( unittest ) assert(head.gen == 1); assert(cast(size_t)head.next == 1); } - - shared(size_t) i; - - atomicOp!"+="( i, cast(size_t) 1 ); - assert( i == 1 ); - - atomicOp!"-="( i, cast(size_t) 1 ); - assert( i == 0 ); - - shared float f = 0; - atomicOp!"+="( f, 1 ); - assert( f == 1 ); - - shared double d = 0; - atomicOp!"+="( d, 1 ); - assert( d == 1 ); } - //@@@BUG@@@ http://d.puremagic.com/issues/show_bug.cgi?id=8081 - /+pure nothrow+/ unittest + pure nothrow unittest { static struct S { int val; } auto s = shared(S)(1); @@ -1495,7 +1485,7 @@ version( unittest ) } // === atomicFetchAdd and atomicFetchSub operations ==== - unittest + pure nothrow @nogc @safe unittest { shared ubyte u8 = 1; shared ushort u16 = 2; @@ -1519,7 +1509,7 @@ version( unittest ) } } - unittest + pure nothrow @nogc @safe unittest { shared ubyte u8 = 1; shared ushort u16 = 2; From 7b80a15c6eebc069e593e0f748d3b2c618b239c7 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 12 Jun 2016 02:05:59 -0700 Subject: [PATCH 387/768] fix unsafe .ptr access in druntime --- src/core/internal/string.d | 4 ++-- src/rt/util/array.d | 27 +++++++++++++++++---------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/core/internal/string.d b/src/core/internal/string.d index cecec37fe3..96f2e580db 100644 --- a/src/core/internal/string.d +++ b/src/core/internal/string.d @@ -78,8 +78,8 @@ auto signedToTempString(long value, char[] buf, uint radix) @safe if(neg) { // about to do a slice without a bounds check - assert(r.ptr > buf.ptr); - r = (() @trusted => (r.ptr-1)[0..r.length+1])(); + auto trustedSlice() @trusted { assert(r.ptr > buf.ptr); return (r.ptr-1)[0..r.length+1]; } + r = trustedSlice(); r[0] = '-'; } return r; diff --git a/src/rt/util/array.d b/src/rt/util/array.d index f299052444..8060338733 100644 --- a/src/rt/util/array.d +++ b/src/rt/util/array.d @@ -10,27 +10,28 @@ module rt.util.array; import core.internal.string; +import core.stdc.stdint; @safe /* pure dmd @@@BUG11461@@@ */ nothrow: -void enforceTypedArraysConformable(T)(in char[] action, - in T[] a1, in T[] a2, in bool allowOverlap = false) +void enforceTypedArraysConformable(T)(const char[] action, + const T[] a1, const T[] a2, in bool allowOverlap = false) { _enforceSameLength(action, a1.length, a2.length); if(!allowOverlap) - _enforceNoOverlap(action, a1.ptr, a2.ptr, T.sizeof * a1.length); + _enforceNoOverlap(action, arrayToPtr(a1), arrayToPtr(a2), T.sizeof * a1.length); } -void enforceRawArraysConformable(in char[] action, in size_t elementSize, - in void[] a1, in void[] a2, in bool allowOverlap = false) +void enforceRawArraysConformable(const char[] action, in size_t elementSize, + const void[] a1, const void[] a2, in bool allowOverlap = false) { _enforceSameLength(action, a1.length, a2.length); if(!allowOverlap) - _enforceNoOverlap(action, a1.ptr, a2.ptr, elementSize * a1.length); + _enforceNoOverlap(action, arrayToPtr(a1), arrayToPtr(a2), elementSize * a1.length); } -private void _enforceSameLength(in char[] action, +private void _enforceSameLength(const char[] action, in size_t length1, in size_t length2) { if(length1 == length2) @@ -46,10 +47,10 @@ private void _enforceSameLength(in char[] action, throw new Error(msg); } -private void _enforceNoOverlap(in char[] action, - in void* ptr1, in void* ptr2, in size_t bytes) +private void _enforceNoOverlap(const char[] action, + uintptr_t ptr1, uintptr_t ptr2, in size_t bytes) { - const size_t d = ptr1 > ptr2 ? ptr1 - ptr2 : ptr2 - ptr1; + const d = ptr1 > ptr2 ? ptr1 - ptr2 : ptr2 - ptr1; if(d >= bytes) return; const overlappedBytes = bytes - d; @@ -63,3 +64,9 @@ private void _enforceNoOverlap(in char[] action, msg ~= bytes.unsignedToTempString(tmpBuff, 10); throw new Error(msg); } + +private uintptr_t arrayToPtr(const void[] array) @trusted +{ + // Ok because the user will never dereference the pointer + return cast(uintptr_t)array.ptr; +} From b38fbcfecdc79d3cce6e385c8e75a23163f14ba0 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 14 Jun 2016 18:04:15 -0700 Subject: [PATCH 388/768] switch hashOf() to safe interface --- src/rt/util/hash.d | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/rt/util/hash.d b/src/rt/util/hash.d index e5815a2134..32198605aa 100644 --- a/src/rt/util/hash.d +++ b/src/rt/util/hash.d @@ -1,15 +1,10 @@ /** - * This module contains the default hash implementation. + * The default hash implementation. * - * Copyright: Copyright Sean Kelly 2009 - 2009. + * Copyright: Copyright Sean Kelly 2009 - 2016. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Sean Kelly - */ - -/* Copyright Sean Kelly 2009 - 2009. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) + * Source: $(DRUNTIMESRC src/rt/util/_hash.d) */ module rt.util.hash; @@ -23,7 +18,13 @@ version( AnyX86 ) @trusted pure nothrow -size_t hashOf( const (void)* buf, size_t len, size_t seed = 0 ) +size_t hashOf( const(void)[] buf, size_t seed = 0 ) +{ + return hashOf(buf.ptr, buf.length, seed); +} + +@trusted pure nothrow +size_t hashOf( const(void)* buf, size_t len, size_t seed = 0 ) { /* * This is Paul Hsieh's SuperFastHash algorithm, described here: @@ -48,12 +49,11 @@ size_t hashOf( const (void)* buf, size_t len, size_t seed = 0 ) // value was incorporated to allow chaining. auto data = cast(const (ubyte)*) buf; auto hash = seed; - int rem; - if( len <= 0 || data is null ) + if( len == 0 || data is null ) return 0; - rem = len & 3; + int rem = len & 3; len >>= 2; for( ; len > 0; len-- ) From f8381a58f0677dc76e977eb2e5e1e8d9b7feb0e7 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 17 Jun 2016 03:15:54 -0700 Subject: [PATCH 389/768] remove long dead code from arraycast.d --- src/rt/arraycast.d | 42 ------------------------------------------ 1 file changed, 42 deletions(-) diff --git a/src/rt/arraycast.d b/src/rt/arraycast.d index ddb0a7dcae..d16d30d5fa 100644 --- a/src/rt/arraycast.d +++ b/src/rt/arraycast.d @@ -50,45 +50,3 @@ unittest assert(s.length == 6); } -/****************************************** - * Runtime helper to convert dynamic array of bits - * dynamic array of another. - * Adjusts the length of the array. - * Throws an error if new length is not aligned. - */ - -version (none) -{ -extern (C) - -@trusted nothrow -void[] _d_arraycast_frombit(uint tsize, void[] a) -{ - uint length = a.length; - - if (length & 7) - { - throw new Error("bit[] array cast misalignment"); - } - length /= 8 * tsize; - *cast(size_t *)&a = length; // jam new length - return a; -} - -unittest -{ - version (D_Bits) - { - bit[int.sizeof * 3 * 8] b; - int[] i; - short[] s; - - i = cast(int[])b; - assert(i.length == 3); - - s = cast(short[])b; - assert(s.length == 6); - } -} - -} From dacc54480462aec760bf47780e69a6b78e53ad2f Mon Sep 17 00:00:00 2001 From: Jeremy DeHaan Date: Sat, 18 Jun 2016 09:39:41 -0700 Subject: [PATCH 390/768] Move gc/gc.d --- src/gc/{ => impl/conservative}/gc.d | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/gc/{ => impl/conservative}/gc.d (100%) diff --git a/src/gc/gc.d b/src/gc/impl/conservative/gc.d similarity index 100% rename from src/gc/gc.d rename to src/gc/impl/conservative/gc.d From d72336246f44533bcb1de5db83dac6f3a8071f09 Mon Sep 17 00:00:00 2001 From: Jeremy DeHaan Date: Mon, 20 Jun 2016 18:31:56 -0700 Subject: [PATCH 391/768] Allow GC implementations to be swappable. This changes the Proxy structure to be an interface, makes all GC implementations classes that inherit from that interface, and extends the RT configurations to allow GC's to be selectable before the program starts. A secondary GC implementation was added based on gc_stub. This implementation allows memory to be managed in a manual style using 'new' and ;delete' instead of relying on collections. --- mak/SRCS | 4 +- src/gc/config.d | 39 ++++- src/gc/gcinterface.d | 196 ++++++++++++++++++++++ src/gc/impl/conservative/gc.d | 295 ++++++++++++++++---------------- src/gc/impl/manual/gc.d | 305 ++++++++++++++++++++++++++++++++++ src/gc/proxy.d | 253 ++++++++-------------------- 6 files changed, 743 insertions(+), 349 deletions(-) create mode 100644 src/gc/gcinterface.d create mode 100644 src/gc/impl/manual/gc.d diff --git a/mak/SRCS b/mak/SRCS index d1a9ba9725..ebbd0271fa 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -237,11 +237,13 @@ SRCS=\ \ src\gc\bits.d \ src\gc\config.d \ - src\gc\gc.d \ + src\gc\gcinterface.d \ src\gc\os.d \ src\gc\pooltable.d \ src\gc\proxy.d \ src\gc\stats.d \ + src\gc\impl\conservative\gc.d \ + src\gc\impl\manual\gc.d \ \ src\rt\aApply.d \ src\rt\aApplyR.d \ diff --git a/src/gc/config.d b/src/gc/config.d index 95c6fb724f..36a1e0a77f 100644 --- a/src/gc/config.d +++ b/src/gc/config.d @@ -1,7 +1,7 @@ /** * Contains the garbage collector configuration. * -* Copyright: Copyright Digital Mars 2014 +* Copyright: Copyright Digital Mars 2016 * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). */ @@ -20,12 +20,13 @@ extern extern(C) __gshared bool rt_envvars_enabled; extern extern(C) __gshared bool rt_cmdline_enabled; extern extern(C) __gshared string[] rt_options; +__gshared Config config; + struct Config { bool disable; // start disabled ubyte profile; // enable profiling with summary when terminating program - bool precise; // enable precise scanning - bool concurrent; // enable concurrent collection + string gc = "conservative"; // select gc implementation conservative|manual size_t initReserve; // initial reserve (MB) size_t minPoolSize = 1; // initial and minimum pool size (MB) @@ -61,8 +62,7 @@ struct Config string s = "GC options are specified as white space separated assignments: disable:0|1 - start disabled (%d) profile:0|1|2 - enable profiling with summary when terminating program (%d) - precise:0|1 - enable precise scanning (not implemented yet) - concurrent:0|1 - enable concurrent collection (not implemented yet) + gc:conservative|manual - select gc implementation (default = conservative) initReserve:N - initial memory to reserve in MB (%lld) minPoolSize:N - initial and minimum pool size in MB (%lld) @@ -186,6 +186,35 @@ body return true; } +bool parse(T:const(char)[])(const(char)[] optname, ref const(char)[] str, ref T res) +in { assert(str.length); } +body +{ + bool findNext(string next) + { + if(next.length>str.length) + return false; + + return (next.length == str.length)? (next == str):(isspace(str[next.length+1])&&(next == str[0..next.length])); + } + + if(findNext("manual")) + { + res = "manual"; + } + else if(findNext("conservative")) + { + res = "conservative"; + } + else + { + return parseError("conservative or manual", optname, str); + } + + str = str[res.length .. $]; + return true; +} + bool parseError(in char[] exp, in char[] opt, in char[] got) { version (unittest) if (inUnittest) return false; diff --git a/src/gc/gcinterface.d b/src/gc/gcinterface.d new file mode 100644 index 0000000000..3780f0cb02 --- /dev/null +++ b/src/gc/gcinterface.d @@ -0,0 +1,196 @@ +/** + * Contains the internal GC interface. + * + * Copyright: Copyright Digital Mars 2005 - 2016. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Jeremy DeHaan + */ + + /* Copyright Digital Mars 2005 - 2016. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module gc.gcinterface; +import gc.stats; + +private +{ + static import core.memory; + + alias BlkInfo = core.memory.GC.BlkInfo; + + alias RootIterator = int delegate(scope int delegate(ref Root) nothrow dg); + alias RangeIterator = int delegate(scope int delegate(ref Range) nothrow dg); +} + +struct Root +{ + void* proot; + alias proot this; +} + +struct Range +{ + void* pbot; + void* ptop; + TypeInfo ti; // should be tail const, but doesn't exist for references + alias pbot this; // only consider pbot for relative ordering (opCmp) +} + +const uint GCVERSION = 1; // increment every time we change interface +// to GC. + +interface GC +{ + + /* + * + */ + void Dtor(); + + /** + * + */ + void enable(); + + /** + * + */ + void disable(); + + /** + * + */ + void collect() nothrow; + + /** + * + */ + void collectNoStack() nothrow; + + /** + * minimize free space usage + */ + void minimize() nothrow; + + /** + * + */ + uint getAttr(void* p) nothrow; + + /** + * + */ + uint setAttr(void* p, uint mask) nothrow; + + /** + * + */ + uint clrAttr(void* p, uint mask) nothrow; + + /** + * + */ + void* malloc(size_t size, uint bits, const TypeInfo ti) nothrow; + + /* + * + */ + BlkInfo qalloc(size_t size, uint bits, const TypeInfo ti) nothrow; + + /* + * + */ + void* calloc(size_t size, uint bits, const TypeInfo ti) nothrow; + + /* + * + */ + void* realloc(void* p, size_t size, uint bits, const TypeInfo ti) nothrow; + + /** + * Attempt to in-place enlarge the memory block pointed to by p by at least + * minsize bytes, up to a maximum of maxsize additional bytes. + * This does not attempt to move the memory block (like realloc() does). + * + * Returns: + * 0 if could not extend p, + * total size of entire memory block if successful. + */ + size_t extend(void* p, size_t minsize, size_t maxsize, const TypeInfo ti) nothrow; + + /** + * + */ + size_t reserve(size_t size) nothrow; + + /** + * + */ + void free(void* p) nothrow; + + /** + * Determine the base address of the block containing p. If p is not a gc + * allocated pointer, return null. + */ + void* addrOf(void* p) nothrow; + + /** + * Determine the allocated size of pointer p. If p is an interior pointer + * or not a gc allocated pointer, return 0. + */ + size_t sizeOf(void* p) nothrow; + + /** + * Determine the base address of the block containing p. If p is not a gc + * allocated pointer, return null. + */ + BlkInfo query(void* p) nothrow; + + /** + * Retrieve statistics about garbage collection. + * Useful for debugging and tuning. + */ + GCStats stats() nothrow; + + /** + * add p to list of roots + */ + void addRoot(void* p) nothrow @nogc; + + /** + * remove p from list of roots + */ + void removeRoot(void* p) nothrow @nogc; + + /** + * + */ + @property RootIterator rootIter() @nogc; + + /** + * add range to scan for roots + */ + void addRange(void* p, size_t sz, const TypeInfo ti) nothrow @nogc; + + /** + * remove range + */ + void removeRange(void* p) nothrow @nogc; + + /** + * + */ + @property RangeIterator rangeIter() @nogc; + + /** + * run finalizers + */ + void runFinalizers(in void[] segment) nothrow; + + /* + * + */ + bool inFinalizer() nothrow; +} diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index 7dce2da305..d6e1ae98d0 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -1,17 +1,17 @@ /** * Contains the garbage collector implementation. * - * Copyright: Copyright Digital Mars 2001 - 2013. + * Copyright: Copyright Digital Mars 2001 - 2016. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Walter Bright, David Friedman, Sean Kelly */ -/* Copyright Digital Mars 2005 - 2013. +/* Copyright Digital Mars 2005 - 2016. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE or copy at * http://www.boost.org/LICENSE_1_0.txt) */ -module gc.gc; +module gc.impl.conservative.gc; // D Programming Language Garbage Collector implementation @@ -42,6 +42,7 @@ import gc.bits; import gc.stats; import gc.os; import gc.config; +import gc.gcinterface; import rt.util.container.treap; @@ -50,8 +51,15 @@ import core.stdc.string : memcpy, memset, memmove; import core.bitop; import core.thread; static import core.memory; -private alias BlkAttr = core.memory.GC.BlkAttr; -private alias BlkInfo = core.memory.GC.BlkInfo; + +private +{ + alias BlkAttr = core.memory.GC.BlkAttr; + alias BlkInfo = core.memory.GC.BlkInfo; + + alias RootIterator = int delegate(scope int delegate(ref Root) nothrow dg); + alias RangeIterator = int delegate(scope int delegate(ref Range) nothrow dg); +} version (GNU) import gcc.builtins; @@ -251,11 +259,9 @@ debug (LOGGING) /* ============================ GC =============================== */ +__gshared ConservativeGC instance; -const uint GCVERSION = 1; // increment every time we change interface - // to GC. - -struct GC +class ConservativeGC : GC { // For passing to debug code (not thread safe) __gshared size_t line; @@ -267,21 +273,50 @@ struct GC import core.internal.spinlock; static gcLock = shared(AlignedSpinLock)(SpinLock.Contention.lengthy); - static bool inFinalizer; + static bool _inFinalizer; // lock GC, throw InvalidMemoryOperationError on recursive locking during finalization static void lockNR() @nogc nothrow { - if (inFinalizer) + if (_inFinalizer) onInvalidMemoryOperationError(); gcLock.lock(); } - __gshared Config config; - void initialize() + static void initialize(ref GC gc) + { + import core.stdc.string: memcpy; + + if(config.gc != "conservative") + return; + + auto p = cstdlib.malloc(__traits(classInstanceSize,ConservativeGC)); + + if(!p) + onOutOfMemoryErrorNoGC(); + + instance = cast(ConservativeGC)memcpy(p, typeid(ConservativeGC).initializer.ptr, typeid(ConservativeGC).initializer.length); + + instance.__ctor(); + + gc = instance; + } + + + static void finalize() + { + if(instance !is null) + { + instance.Dtor(); + cstdlib.free(cast(void*)instance); + } + } + + + this() { - config.initialize(); + //config is assumed to have already been initialized gcx = cast(Gcx*)cstdlib.calloc(1, Gcx.sizeof); if (!gcx) @@ -312,9 +347,6 @@ struct GC } - /** - * - */ void enable() { static void go(Gcx* gcx) nothrow @@ -326,9 +358,6 @@ struct GC } - /** - * - */ void disable() { static void go(Gcx* gcx) nothrow @@ -338,19 +367,20 @@ struct GC runLocked!(go, otherTime, numOthers)(gcx); } + auto runLocked(alias func, Args...)(auto ref Args args) { - debug(PROFILE_API) immutable tm = (GC.config.profile > 1 ? currTime.ticks : 0); + debug(PROFILE_API) immutable tm = (config.profile > 1 ? currTime.ticks : 0); lockNR(); scope (failure) gcLock.unlock(); - debug(PROFILE_API) immutable tm2 = (GC.config.profile > 1 ? currTime.ticks : 0); + debug(PROFILE_API) immutable tm2 = (config.profile > 1 ? currTime.ticks : 0); static if (is(typeof(func(args)) == void)) func(args); else auto res = func(args); - debug(PROFILE_API) if (GC.config.profile > 1) + debug(PROFILE_API) if (config.profile > 1) lockTime += tm2 - tm; gcLock.unlock(); @@ -358,19 +388,20 @@ struct GC return res; } + auto runLocked(alias func, alias time, alias count, Args...)(auto ref Args args) { - debug(PROFILE_API) immutable tm = (GC.config.profile > 1 ? currTime.ticks : 0); + debug(PROFILE_API) immutable tm = (config.profile > 1 ? currTime.ticks : 0); lockNR(); scope (failure) gcLock.unlock(); - debug(PROFILE_API) immutable tm2 = (GC.config.profile > 1 ? currTime.ticks : 0); + debug(PROFILE_API) immutable tm2 = (config.profile > 1 ? currTime.ticks : 0); static if (is(typeof(func(args)) == void)) func(args); else auto res = func(args); - debug(PROFILE_API) if (GC.config.profile > 1) + debug(PROFILE_API) if (config.profile > 1) { count++; immutable now = currTime.ticks; @@ -383,9 +414,7 @@ struct GC return res; } - /** - * - */ + uint getAttr(void* p) nothrow { if (!p) @@ -412,9 +441,6 @@ struct GC } - /** - * - */ uint setAttr(void* p, uint mask) nothrow { if (!p) @@ -442,9 +468,6 @@ struct GC } - /** - * - */ uint clrAttr(void* p, uint mask) nothrow { if (!p) @@ -471,26 +494,21 @@ struct GC return runLocked!(go, otherTime, numOthers)(gcx, p, mask); } - /** - * - */ - void *malloc(size_t size, uint bits = 0, size_t *alloc_size = null, const TypeInfo ti = null) nothrow + + void *malloc(size_t size, uint bits, const TypeInfo ti) nothrow { if (!size) { - if(alloc_size) - *alloc_size = 0; return null; } size_t localAllocSize = void; - if(alloc_size is null) alloc_size = &localAllocSize; - auto p = runLocked!(mallocNoSync, mallocTime, numMallocs)(size, bits, *alloc_size, ti); + auto p = runLocked!(mallocNoSync, mallocTime, numMallocs)(size, bits, localAllocSize, ti); if (!(bits & BlkAttr.NO_SCAN)) { - memset(p + size, 0, *alloc_size - size); + memset(p + size, 0, localAllocSize - size); } return p; @@ -524,46 +542,59 @@ struct GC } - /** - * - */ - void *calloc(size_t size, uint bits = 0, size_t *alloc_size = null, const TypeInfo ti = null) nothrow + BlkInfo qalloc( size_t size, uint bits, const TypeInfo ti) nothrow + { + + if (!size) + { + return BlkInfo.init; + } + + BlkInfo retval; + + retval.base = runLocked!(mallocNoSync, mallocTime, numMallocs)(size, bits, retval.size, ti); + + if (!(bits & BlkAttr.NO_SCAN)) + { + memset(retval.base + size, 0, retval.size - size); + } + + retval.attr = bits; + return retval; + } + + + void *calloc(size_t size, uint bits, const TypeInfo ti) nothrow { if (!size) { - if(alloc_size) - *alloc_size = 0; return null; } size_t localAllocSize = void; - if(alloc_size is null) alloc_size = &localAllocSize; - auto p = runLocked!(mallocNoSync, mallocTime, numMallocs)(size, bits, *alloc_size, ti); + auto p = runLocked!(mallocNoSync, mallocTime, numMallocs)(size, bits, localAllocSize, ti); memset(p, 0, size); if (!(bits & BlkAttr.NO_SCAN)) { - memset(p + size, 0, *alloc_size - size); + memset(p + size, 0, localAllocSize - size); } return p; } - /** - * - */ - void *realloc(void *p, size_t size, uint bits = 0, size_t *alloc_size = null, const TypeInfo ti = null) nothrow + + void *realloc(void *p, size_t size, uint bits, const TypeInfo ti) nothrow { size_t localAllocSize = void; auto oldp = p; - if(alloc_size is null) alloc_size = &localAllocSize; - p = runLocked!(reallocNoSync, mallocTime, numMallocs)(p, size, bits, *alloc_size, ti); + p = runLocked!(reallocNoSync, mallocTime, numMallocs)(p, size, bits, localAllocSize, ti); if (p !is oldp && !(bits & BlkAttr.NO_SCAN)) { - memset(p + size, 0, *alloc_size - size); + memset(p + size, 0, localAllocSize - size); } return p; @@ -711,16 +742,7 @@ struct GC } - /** - * Attempt to in-place enlarge the memory block pointed to by p by at least - * minsize bytes, up to a maximum of maxsize additional bytes. - * This does not attempt to move the memory block (like realloc() does). - * - * Returns: - * 0 if could not extend p, - * total size of entire memory block if successful. - */ - size_t extend(void* p, size_t minsize, size_t maxsize, const TypeInfo ti = null) nothrow + size_t extend(void* p, size_t minsize, size_t maxsize, const TypeInfo ti) nothrow { return runLocked!(extendNoSync, extendTime, numExtends)(p, minsize, maxsize, ti); } @@ -782,9 +804,6 @@ struct GC } - /** - * - */ size_t reserve(size_t size) nothrow { if (!size) @@ -808,12 +827,9 @@ struct GC } - /** - * - */ void free(void *p) nothrow { - if (!p || inFinalizer) + if (!p || _inFinalizer) { return; } @@ -885,10 +901,6 @@ struct GC } - /** - * Determine the base address of the block containing p. If p is not a gc - * allocated pointer, return null. - */ void* addrOf(void *p) nothrow { if (!p) @@ -917,10 +929,6 @@ struct GC } - /** - * Determine the allocated size of pointer p. If p is an interior pointer - * or not a gc allocated pointer, return 0. - */ size_t sizeOf(void *p) nothrow { if (!p) @@ -967,10 +975,6 @@ struct GC } - /** - * Determine the base address of the block containing p. If p is not a gc - * allocated pointer, return null. - */ BlkInfo query(void *p) nothrow { if (!p) @@ -982,7 +986,6 @@ struct GC return runLocked!(queryNoSync, otherTime, numOthers)(p); } - // // // @@ -1061,9 +1064,6 @@ struct GC } - /** - * add p to list of roots - */ void addRoot(void *p) nothrow @nogc { if (!p) @@ -1075,9 +1075,6 @@ struct GC } - /** - * remove p from list of roots - */ void removeRoot(void *p) nothrow @nogc { if (!p) @@ -1089,18 +1086,12 @@ struct GC } - /** - * - */ - @property auto rootIter() @nogc + @property RootIterator rootIter() @nogc { return &gcx.rootsApply; } - /** - * add range to scan for roots - */ void addRange(void *p, size_t sz, const TypeInfo ti = null) nothrow @nogc { if (!p || !sz) @@ -1112,9 +1103,6 @@ struct GC } - /** - * remove range - */ void removeRange(void *p) nothrow @nogc { if (!p) @@ -1126,18 +1114,12 @@ struct GC } - /** - * - */ - @property auto rangeIter() @nogc + @property RangeIterator rangeIter() @nogc { return &gcx.rangesApply; } - /** - * run finalizers - */ void runFinalizers(in void[] segment) nothrow { static void go(Gcx* gcx, in void[] segment) nothrow @@ -1148,6 +1130,24 @@ struct GC } + bool inFinalizer() nothrow + { + return _inFinalizer; + } + + + void collect() nothrow + { + fullCollect(); + } + + + void collectNoStack() nothrow + { + fullCollectNoStack(); + } + + /** * Do full garbage collection. * Return number of pages free'd. @@ -1193,9 +1193,6 @@ struct GC } - /** - * minimize free space usage - */ void minimize() nothrow { static void go(Gcx* gcx) nothrow @@ -1206,13 +1203,13 @@ struct GC } - /** - * Retrieve statistics about garbage collection. - * Useful for debugging and tuning. - */ - void getStats(out GCStats stats) nothrow + GCStats stats() nothrow { - return runLocked!(getStatsNoSync, otherTime, numOthers)(stats); + GCStats ret; + + runLocked!(getStatsNoSync, otherTime, numOthers)(ret); + + return ret; } @@ -1301,20 +1298,6 @@ struct List } -struct Range -{ - void *pbot; - void *ptop; - alias pbot this; // only consider pbot for relative ordering (opCmp) -} - -struct Root -{ - void *proot; - alias proot this; -} - - immutable uint[B_MAX] binsize = [ 16,32,64,128,256,512,1024,2048,4096 ]; immutable size_t[B_MAX] notbinsize = [ ~(16-1),~(32-1),~(64-1),~(128-1),~(256-1), ~(512-1),~(1024-1),~(2048-1),~(4096-1) ]; @@ -1370,7 +1353,7 @@ struct Gcx void Dtor() { - if (GC.config.profile) + if (config.profile) { printf("\tNumber of collections: %llu\n", cast(ulong)numCollections); printf("\tTotal GC prep time: %lld milliseconds\n", @@ -1389,7 +1372,7 @@ struct Gcx char[30] apitxt; apitxt[0] = 0; - debug(PROFILE_API) if (GC.config.profile > 1) + debug(PROFILE_API) if (config.profile > 1) { static Duration toDuration(long dur) { @@ -1549,8 +1532,8 @@ struct Gcx */ void runFinalizers(in void[] segment) nothrow { - GC.inFinalizer = true; - scope (failure) GC.inFinalizer = false; + ConservativeGC._inFinalizer = true; + scope (failure) ConservativeGC._inFinalizer = false; foreach (pool; pooltable[0 .. npools]) { @@ -1567,7 +1550,7 @@ struct Gcx spool.runFinalizers(segment); } } - GC.inFinalizer = false; + ConservativeGC._inFinalizer = false; } Pool* findPool(void* p) pure nothrow @@ -1691,9 +1674,9 @@ struct Gcx return max(newVal, decay); } - immutable smTarget = usedSmallPages * GC.config.heapSizeFactor; + immutable smTarget = usedSmallPages * config.heapSizeFactor; smallCollectThreshold = smoothDecay(smallCollectThreshold, smTarget); - immutable lgTarget = usedLargePages * GC.config.heapSizeFactor; + immutable lgTarget = usedLargePages * config.heapSizeFactor; largeCollectThreshold = smoothDecay(largeCollectThreshold, lgTarget); } @@ -1871,7 +1854,7 @@ struct Gcx //debug(PRINTF) printf("************Gcx::newPool(npages = %d)****************\n", npages); // Minimum of POOLSIZE - size_t minPages = (GC.config.minPoolSize << 20) / PAGESIZE; + size_t minPages = (config.minPoolSize << 20) / PAGESIZE; if (npages < minPages) npages = minPages; else if (npages > minPages) @@ -1885,9 +1868,9 @@ struct Gcx if (npools) { size_t n; - n = GC.config.minPoolSize + GC.config.incPoolSize * npools; - if (n > GC.config.maxPoolSize) - n = GC.config.maxPoolSize; // cap pool size + n = config.minPoolSize + config.incPoolSize * npools; + if (n > config.maxPoolSize) + n = config.maxPoolSize; // cap pool size n *= (1 << 20) / PAGESIZE; // convert MB to pages if (npages < n) npages = n; @@ -1909,7 +1892,7 @@ struct Gcx mappedPages += npages; - if (GC.config.profile) + if (config.profile) { if (mappedPages * PAGESIZE > maxPoolMemory) maxPoolMemory = mappedPages * PAGESIZE; @@ -2413,7 +2396,7 @@ struct Gcx { MonoTime start, stop, begin; - if (GC.config.profile) + if (config.profile) { begin = start = currTime; } @@ -2434,7 +2417,7 @@ struct Gcx prepare(); - if (GC.config.profile) + if (config.profile) { stop = currTime; prepTime += (stop - start); @@ -2447,7 +2430,7 @@ struct Gcx thread_resumeAll(); } - if (GC.config.profile) + if (config.profile) { stop = currTime; markTime += (stop - start); @@ -2457,15 +2440,15 @@ struct Gcx start = stop; } - GC.inFinalizer = true; + ConservativeGC._inFinalizer = true; size_t freedLargePages=void; { - scope (failure) GC.inFinalizer = false; + scope (failure) ConservativeGC._inFinalizer = false; freedLargePages = sweep(); - GC.inFinalizer = false; + ConservativeGC._inFinalizer = false; } - if (GC.config.profile) + if (config.profile) { stop = currTime; sweepTime += (stop - start); @@ -2474,7 +2457,7 @@ struct Gcx immutable freedSmallPages = recover(); - if (GC.config.profile) + if (config.profile) { stop = currTime; recoverTime += (stop - start); diff --git a/src/gc/impl/manual/gc.d b/src/gc/impl/manual/gc.d new file mode 100644 index 0000000000..e1c2ebe8e5 --- /dev/null +++ b/src/gc/impl/manual/gc.d @@ -0,0 +1,305 @@ +/** + * This module contains a minimal garbage collector implementation according to + * published requirements. This library is mostly intended to serve as an + * example, but it is usable in applications which do not rely on a garbage + * collector to clean up memory (ie. when dynamic array resizing is not used, + * and all memory allocated with 'new' is freed deterministically with + * 'delete'). + * + * Please note that block attribute data must be tracked, or at a minimum, the + * FINALIZE bit must be tracked for any allocated memory block because calling + * rt_finalize on a non-object block can result in an access violation. In the + * allocator below, this tracking is done via a leading uint bitmask. A real + * allocator may do better to store this data separately, similar to the basic + * GC. + * + * Copyright: Copyright Sean Kelly 2005 - 2016. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Sean Kelly + */ + +/* Copyright Sean Kelly 2005 - 2016. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module gc.impl.manual.gc; + +import gc.config; +import gc.stats; +import gc.gcinterface; + +import cstdlib = core.stdc.stdlib : calloc, free, malloc, realloc; + +static import core.memory; + +private +{ + alias BlkAttr = core.memory.GC.BlkAttr; + alias BlkInfo = core.memory.GC.BlkInfo; + alias RootIterator = int delegate(scope int delegate(ref Root) nothrow dg); + alias RangeIterator = int delegate(scope int delegate(ref Range) nothrow dg); +} + +extern (C) void onOutOfMemoryError(void* pretend_sideffect = null) @trusted pure nothrow @nogc; /* dmd @@@BUG11461@@@ */ + +__gshared ManualGC instance; + +class ManualGC : GC +{ + __gshared Root* roots = null; + __gshared size_t nroots = 0; + + __gshared Range* ranges = null; + __gshared size_t nranges = 0; + + static void initialize(ref GC gc) + { + import core.stdc.string; + + if (config.gc != "manual") + return; + + auto p = cstdlib.malloc(__traits(classInstanceSize, ManualGC)); + if (!p) + onOutOfMemoryError(); + + instance = cast(ManualGC) memcpy(p, typeid(ManualGC).initializer.ptr, + typeid(ManualGC).initializer.length); + + instance.__ctor(); + + gc = instance; + } + + static void finalize() + { + if (instance !is null) + { + instance.Dtor(); + cstdlib.free(cast(void*) instance); + } + } + + this() + { + } + + void Dtor() + { + cstdlib.free(roots); + cstdlib.free(ranges); + } + + void enable() + { + } + + void disable() + { + } + + void collect() nothrow + { + } + + void collectNoStack() nothrow + { + } + + void minimize() nothrow + { + } + + uint getAttr(void* p) nothrow + { + return 0; + } + + uint setAttr(void* p, uint mask) nothrow + { + return 0; + } + + uint clrAttr(void* p, uint mask) nothrow + { + return 0; + } + + void* malloc(size_t size, uint bits, const TypeInfo ti) nothrow + { + void* p = cstdlib.malloc(size); + + if (size && p is null) + onOutOfMemoryError(); + return p; + } + + BlkInfo qalloc(size_t size, uint bits, const TypeInfo ti) nothrow + { + BlkInfo retval; + retval.base = malloc(size, bits, ti); + retval.size = size; + retval.attr = bits; + return retval; + } + + void* calloc(size_t size, uint bits, const TypeInfo ti) nothrow + { + void* p = cstdlib.calloc(1, size); + + if (size && p is null) + onOutOfMemoryError(); + return p; + } + + void* realloc(void* p, size_t size, uint bits, const TypeInfo ti) nothrow + { + p = cstdlib.realloc(p, size); + + if (size && p is null) + onOutOfMemoryError(); + return p; + } + + size_t extend(void* p, size_t minsize, size_t maxsize, const TypeInfo ti) nothrow + { + return 0; + } + + size_t reserve(size_t size) nothrow + { + return 0; + } + + void free(void* p) nothrow + { + cstdlib.free(p); + } + + /** + * Determine the base address of the block containing p. If p is not a gc + * allocated pointer, return null. + */ + void* addrOf(void* p) nothrow + { + return null; + } + + /** + * Determine the allocated size of pointer p. If p is an interior pointer + * or not a gc allocated pointer, return 0. + */ + size_t sizeOf(void* p) nothrow + { + return 0; + } + + /** + * Determine the base address of the block containing p. If p is not a gc + * allocated pointer, return null. + */ + BlkInfo query(void* p) nothrow + { + return BlkInfo.init; + } + + GCStats stats() nothrow + { + return GCStats.init; + } + + void addRoot(void* p) nothrow @nogc + { + Root* r = cast(Root*) cstdlib.realloc(roots, (nroots + 1) * roots[0].sizeof); + if (r is null) + onOutOfMemoryError(); + r[nroots++] = p; + roots = r; + } + + void removeRoot(void* p) nothrow @nogc + { + for (size_t i = 0; i < nroots; ++i) + { + if (roots[i] is p) + { + roots[i] = roots[--nroots]; + return; + } + } + assert(false); + } + + @property RootIterator rootIter() @nogc + { + return &rootsApply; + } + + private int rootsApply(scope int delegate(ref Root) nothrow dg) + { + int result = 0; + for (int i = 0; i < nroots; i++) + { + result = dg(roots[i]); + + if (result) + break; + } + + return result; + } + + void addRange(void* p, size_t sz, const TypeInfo ti = null) nothrow @nogc + { + Range* r = cast(Range*) cstdlib.realloc(ranges, (nranges + 1) * ranges[0].sizeof); + if (r is null) + onOutOfMemoryError(); + r[nranges].pbot = p; + r[nranges].ptop = p + sz; + r[nranges].ti = cast() ti; + ranges = r; + ++nranges; + } + + void removeRange(void* p) nothrow @nogc + { + for (size_t i = 0; i < nranges; ++i) + { + if (ranges[i].pbot is p) + { + ranges[i] = ranges[--nranges]; + return; + } + } + assert(false); + } + + @property RangeIterator rangeIter() @nogc + { + return &rangesApply; + } + + private int rangesApply(scope int delegate(ref Range) nothrow dg) + { + int result = 0; + for (int i = 0; i < nranges; i++) + { + result = dg(ranges[i]); + + if (result) + break; + } + + return result; + } + + void runFinalizers(in void[] segment) nothrow + { + } + + bool inFinalizer() nothrow + { + return false; + } +} diff --git a/src/gc/proxy.d b/src/gc/proxy.d index eb0f7ee275..e38ac703f7 100644 --- a/src/gc/proxy.d +++ b/src/gc/proxy.d @@ -1,118 +1,53 @@ /** * Contains the external GC interface. * - * Copyright: Copyright Digital Mars 2005 - 2013. + * Copyright: Copyright Digital Mars 2005 - 2016. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Walter Bright, Sean Kelly */ -/* Copyright Digital Mars 2005 - 2013. +/* Copyright Digital Mars 2005 - 2016. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE or copy at * http://www.boost.org/LICENSE_1_0.txt) */ module gc.proxy; -import gc.gc; +import gc.impl.conservative.gc; +import gc.impl.manual.gc; +import gc.config; import gc.stats; -import core.stdc.stdlib; +import gc.gcinterface; + private { - __gshared GC _gc; - static import core.memory; alias BlkInfo = core.memory.GC.BlkInfo; extern (C) void thread_init(); extern (C) void thread_term(); - struct Proxy - { - extern (C) - { - void function() gc_enable; - void function() gc_disable; - nothrow: - void function() gc_collect; - void function() gc_minimize; - - uint function(void*) gc_getAttr; - uint function(void*, uint) gc_setAttr; - uint function(void*, uint) gc_clrAttr; - - void* function(size_t, uint, const TypeInfo) gc_malloc; - BlkInfo function(size_t, uint, const TypeInfo) gc_qalloc; - void* function(size_t, uint, const TypeInfo) gc_calloc; - void* function(void*, size_t, uint ba, const TypeInfo) gc_realloc; - size_t function(void*, size_t, size_t, const TypeInfo) gc_extend; - size_t function(size_t) gc_reserve; - void function(void*) gc_free; - - void* function(void*) gc_addrOf; - size_t function(void*) gc_sizeOf; - - BlkInfo function(void*) gc_query; - - void function(void*) gc_addRoot; - void function(void*, size_t, const TypeInfo ti) gc_addRange; - - void function(void*) gc_removeRoot; - void function(void*) gc_removeRange; - void function(in void[]) gc_runFinalizers; - - bool function() gc_inFinalizer; - } - } - - __gshared Proxy pthis; - __gshared Proxy* proxy; - - void initProxy() - { - pthis.gc_enable = &gc_enable; - pthis.gc_disable = &gc_disable; - pthis.gc_collect = &gc_collect; - pthis.gc_minimize = &gc_minimize; - - pthis.gc_getAttr = &gc_getAttr; - pthis.gc_setAttr = &gc_setAttr; - pthis.gc_clrAttr = &gc_clrAttr; - - pthis.gc_malloc = &gc_malloc; - pthis.gc_qalloc = &gc_qalloc; - pthis.gc_calloc = &gc_calloc; - pthis.gc_realloc = &gc_realloc; - pthis.gc_extend = &gc_extend; - pthis.gc_reserve = &gc_reserve; - pthis.gc_free = &gc_free; - - pthis.gc_addrOf = &gc_addrOf; - pthis.gc_sizeOf = &gc_sizeOf; - - pthis.gc_query = &gc_query; - - pthis.gc_addRoot = &gc_addRoot; - pthis.gc_addRange = &gc_addRange; + __gshared GC instance; + __gshared GC ithis; - pthis.gc_removeRoot = &gc_removeRoot; - pthis.gc_removeRange = &gc_removeRange; - pthis.gc_runFinalizers = &gc_runFinalizers; - - pthis.gc_inFinalizer = &gc_inFinalizer; - } } + extern (C) { void gc_init() { - _gc.initialize(); + config.initialize(); + ManualGC.initialize(ithis); + ConservativeGC.initialize(ithis); + + instance = ithis; + // NOTE: The GC must initialize the thread library // before its first collection. thread_init(); - initProxy(); } void gc_term() @@ -126,229 +61,173 @@ extern (C) // // NOTE: Due to popular demand, this has been re-enabled. It still has // the problems mentioned above though, so I guess we'll see. - _gc.fullCollectNoStack(); // not really a 'collect all' -- still scans - // static data area, roots, and ranges. + + instance.collectNoStack(); // not really a 'collect all' -- still scans + // static data area, roots, and ranges. + thread_term(); - _gc.Dtor(); + ManualGC.finalize(); + ConservativeGC.finalize(); } void gc_enable() { - if( proxy is null ) - return _gc.enable(); - return proxy.gc_enable(); + instance.enable(); } void gc_disable() { - if( proxy is null ) - return _gc.disable(); - return proxy.gc_disable(); + instance.disable(); } void gc_collect() nothrow { - if( proxy is null ) - { - _gc.fullCollect(); - return; - } - return proxy.gc_collect(); + instance.collect(); } void gc_minimize() nothrow { - if( proxy is null ) - return _gc.minimize(); - return proxy.gc_minimize(); + instance.minimize(); } uint gc_getAttr( void* p ) nothrow { - if( proxy is null ) - return _gc.getAttr( p ); - return proxy.gc_getAttr( p ); + return instance.getAttr(p); } uint gc_setAttr( void* p, uint a ) nothrow { - if( proxy is null ) - return _gc.setAttr( p, a ); - return proxy.gc_setAttr( p, a ); + return instance.setAttr(p, a); } uint gc_clrAttr( void* p, uint a ) nothrow { - if( proxy is null ) - return _gc.clrAttr( p, a ); - return proxy.gc_clrAttr( p, a ); + return instance.clrAttr(p, a); } void* gc_malloc( size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - if( proxy is null ) - return _gc.malloc( sz, ba, null, ti ); - return proxy.gc_malloc( sz, ba, ti ); + return instance.malloc(sz, ba, ti); } BlkInfo gc_qalloc( size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - if( proxy is null ) - { - BlkInfo retval; - retval.base = _gc.malloc( sz, ba, &retval.size, ti ); - retval.attr = ba; - return retval; - } - return proxy.gc_qalloc( sz, ba, ti ); + return instance.qalloc( sz, ba, ti ); } void* gc_calloc( size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - if( proxy is null ) - return _gc.calloc( sz, ba, null, ti ); - return proxy.gc_calloc( sz, ba, ti ); + return instance.calloc( sz, ba, ti ); } void* gc_realloc( void* p, size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - if( proxy is null ) - return _gc.realloc( p, sz, ba, null, ti ); - return proxy.gc_realloc( p, sz, ba, ti ); + return instance.realloc( p, sz, ba, ti ); } size_t gc_extend( void* p, size_t mx, size_t sz, const TypeInfo ti = null ) nothrow { - if( proxy is null ) - return _gc.extend( p, mx, sz, ti ); - return proxy.gc_extend( p, mx, sz,ti ); + return instance.extend( p, mx, sz,ti ); } size_t gc_reserve( size_t sz ) nothrow { - if( proxy is null ) - return _gc.reserve( sz ); - return proxy.gc_reserve( sz ); + return instance.reserve( sz ); } void gc_free( void* p ) nothrow { - if( proxy is null ) - return _gc.free( p ); - return proxy.gc_free( p ); + return instance.free( p ); } void* gc_addrOf( void* p ) nothrow { - if( proxy is null ) - return _gc.addrOf( p ); - return proxy.gc_addrOf( p ); + return instance.addrOf( p ); } size_t gc_sizeOf( void* p ) nothrow { - if( proxy is null ) - return _gc.sizeOf( p ); - return proxy.gc_sizeOf( p ); + return instance.sizeOf( p ); } BlkInfo gc_query( void* p ) nothrow { - if( proxy is null ) - return _gc.query( p ); - return proxy.gc_query( p ); + return instance.query( p ); } // NOTE: This routine is experimental. The stats or function name may change // before it is made officially available. GCStats gc_stats() nothrow { - if( proxy is null ) - { - GCStats stats = void; - _gc.getStats( stats ); - return stats; - } - // TODO: Add proxy support for this once the layout of GCStats is - // finalized. - //return proxy.gc_stats(); - return GCStats.init; + return instance.stats(); } void gc_addRoot( void* p ) nothrow { - if( proxy is null ) - return _gc.addRoot( p ); - return proxy.gc_addRoot( p ); + return instance.addRoot( p ); } void gc_addRange( void* p, size_t sz, const TypeInfo ti = null ) nothrow { - if( proxy is null ) - return _gc.addRange( p, sz, ti ); - return proxy.gc_addRange( p, sz, ti ); + return instance.addRange( p, sz, ti ); } void gc_removeRoot( void* p ) nothrow { - if( proxy is null ) - return _gc.removeRoot( p ); - return proxy.gc_removeRoot( p ); + return instance.removeRoot( p ); } void gc_removeRange( void* p ) nothrow { - if( proxy is null ) - return _gc.removeRange( p ); - return proxy.gc_removeRange( p ); + return instance.removeRange( p ); } void gc_runFinalizers( in void[] segment ) nothrow { - if( proxy is null ) - return _gc.runFinalizers( segment ); - return proxy.gc_runFinalizers( segment ); + return instance.runFinalizers( segment ); } bool gc_inFinalizer() nothrow { - if( proxy is null ) - return _gc.inFinalizer; - return proxy.gc_inFinalizer(); + return instance.inFinalizer(); } - Proxy* gc_getProxy() nothrow + GC gc_getProxy() nothrow { - return &pthis; + return instance; } export { - void gc_setProxy( Proxy* p ) + void gc_setProxy( GC inst ) { - if( proxy !is null ) + foreach(root; instance.rootIter) + { + inst.addRoot(root); + } + + foreach(range; instance.rangeIter) { - // TODO: Decide if this is an error condition. + inst.addRange(range.pbot, range.ptop - range.pbot, range.ti); } - proxy = p; - foreach (r; _gc.rootIter) - proxy.gc_addRoot( r ); - foreach (r; _gc.rangeIter) - proxy.gc_addRange( r.pbot, r.ptop - r.pbot, null ); + instance = inst; } void gc_clrProxy() { - foreach (r; _gc.rangeIter) - proxy.gc_removeRange( r.pbot ); + foreach(root; ithis.rootIter) + { + instance.removeRoot(root); + } - foreach (r; _gc.rootIter) - proxy.gc_removeRoot( r ); + foreach(range; ithis.rangeIter) + { + instance.removeRange(range); + } - proxy = null; + instance = ithis; } } - } From d44dcdb514a0f1c5082850efee3accad29ca5b16 Mon Sep 17 00:00:00 2001 From: Jeremy DeHaan Date: Thu, 23 Jun 2016 11:56:38 -0700 Subject: [PATCH 392/768] gc_swap minor updates --- src/gc/gcinterface.d | 16 +++++++--------- src/gc/impl/conservative/gc.d | 10 ---------- src/gc/impl/manual/gc.d | 10 ---------- 3 files changed, 7 insertions(+), 29 deletions(-) diff --git a/src/gc/gcinterface.d b/src/gc/gcinterface.d index 3780f0cb02..062ab7346d 100644 --- a/src/gc/gcinterface.d +++ b/src/gc/gcinterface.d @@ -1,12 +1,12 @@ /** * Contains the internal GC interface. * - * Copyright: Copyright Digital Mars 2005 - 2016. + * Copyright: Copyright Digital Mars 2016. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Jeremy DeHaan */ - /* Copyright Digital Mars 2005 - 2016. + /* Copyright Digital Mars 2016. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -14,15 +14,13 @@ module gc.gcinterface; import gc.stats; -private -{ - static import core.memory; +static import core.memory; +alias BlkAttr = core.memory.GC.BlkAttr; +alias BlkInfo = core.memory.GC.BlkInfo; - alias BlkInfo = core.memory.GC.BlkInfo; +alias RootIterator = int delegate(scope int delegate(ref Root) nothrow dg); +alias RangeIterator = int delegate(scope int delegate(ref Range) nothrow dg); - alias RootIterator = int delegate(scope int delegate(ref Root) nothrow dg); - alias RangeIterator = int delegate(scope int delegate(ref Range) nothrow dg); -} struct Root { diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index d6e1ae98d0..986fb48d4e 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -50,16 +50,6 @@ import cstdlib = core.stdc.stdlib : calloc, free, malloc, realloc; import core.stdc.string : memcpy, memset, memmove; import core.bitop; import core.thread; -static import core.memory; - -private -{ - alias BlkAttr = core.memory.GC.BlkAttr; - alias BlkInfo = core.memory.GC.BlkInfo; - - alias RootIterator = int delegate(scope int delegate(ref Root) nothrow dg); - alias RangeIterator = int delegate(scope int delegate(ref Range) nothrow dg); -} version (GNU) import gcc.builtins; diff --git a/src/gc/impl/manual/gc.d b/src/gc/impl/manual/gc.d index e1c2ebe8e5..9e0fe24ae6 100644 --- a/src/gc/impl/manual/gc.d +++ b/src/gc/impl/manual/gc.d @@ -31,16 +31,6 @@ import gc.gcinterface; import cstdlib = core.stdc.stdlib : calloc, free, malloc, realloc; -static import core.memory; - -private -{ - alias BlkAttr = core.memory.GC.BlkAttr; - alias BlkInfo = core.memory.GC.BlkInfo; - alias RootIterator = int delegate(scope int delegate(ref Root) nothrow dg); - alias RangeIterator = int delegate(scope int delegate(ref Range) nothrow dg); -} - extern (C) void onOutOfMemoryError(void* pretend_sideffect = null) @trusted pure nothrow @nogc; /* dmd @@@BUG11461@@@ */ __gshared ManualGC instance; From 267fa2a06289c04200f720019050e7387f5e5a00 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 17 Jun 2016 01:03:20 -0700 Subject: [PATCH 393/768] use array interface to hashOf() --- src/object.d | 26 +++++++++++++++++--------- src/rt/typeinfo/ti_Ag.d | 4 ++-- src/rt/typeinfo/ti_Aint.d | 4 ++-- src/rt/typeinfo/ti_Along.d | 4 ++-- src/rt/typeinfo/ti_Ashort.d | 4 ++-- src/rt/typeinfo/ti_cent.d | 2 +- src/rt/typeinfo/ti_delegate.d | 2 +- src/rt/typeinfo/ti_long.d | 2 +- src/rt/typeinfo/ti_ucent.d | 2 +- src/rt/typeinfo/ti_ulong.d | 2 +- src/rt/util/container/hashtab.d | 6 +++--- src/rt/util/hash.d | 14 +++++++------- src/rt/util/typeinfo.d | 10 ++++++---- 13 files changed, 46 insertions(+), 36 deletions(-) diff --git a/src/object.d b/src/object.d index e48c0b3dff..8d8650e9d1 100644 --- a/src/object.d +++ b/src/object.d @@ -214,11 +214,11 @@ class TypeInfo { import core.internal.traits : externDFunc; alias hashOf = externDFunc!("rt.util.hash.hashOf", - size_t function(const(void)*, size_t, size_t) @trusted pure nothrow); + size_t function(const(void)[], size_t) @trusted pure nothrow @nogc); try { auto data = this.toString(); - return hashOf(data.ptr, data.length, 0); + return hashOf(data, 0); } catch (Throwable) { @@ -255,7 +255,15 @@ class TypeInfo return ti && this.toString() == ti.toString(); } - /// Returns a hash of the instance of a type. + /** + * Computes a hash of the instance of a type. + * Params: + * p = pointer to start of instance of the type + * Returns: + * the hash + * Bugs: + * fix https://issues.dlang.org/show_bug.cgi?id=12516 e.g. by changing this to a truly safe interface. + */ size_t getHash(in void* p) @trusted nothrow const { return cast(size_t)p; } /// Compares two instances for equality. @@ -1101,7 +1109,7 @@ class TypeInfo_Struct : TypeInfo this.initializer().length == s.initializer().length; } - override size_t getHash(in void* p) @safe pure nothrow const + override size_t getHash(in void* p) @trusted pure nothrow const { assert(p); if (xtoHash) @@ -1112,8 +1120,8 @@ class TypeInfo_Struct : TypeInfo { import core.internal.traits : externDFunc; alias hashOf = externDFunc!("rt.util.hash.hashOf", - size_t function(const(void)*, size_t, size_t) @trusted pure nothrow); - return hashOf(p, initializer().length, 0); + size_t function(const(void)[], size_t) @trusted pure nothrow @nogc); + return hashOf(p[0 .. initializer().length], 0); } } @@ -3167,7 +3175,7 @@ struct Test size_t hashOf(T)(auto ref T arg, size_t seed = 0) { import core.internal.hash; - return core.internal.hash.hashOf(arg, seed); + return core.internal.hash.hashOf((cast(void*)&arg)[0 .. T.sizeof], seed); } bool _xopEquals(in void*, in void*) @@ -3238,9 +3246,9 @@ private size_t getArrayHash(in TypeInfo element, in void* ptr, in size_t count) import core.internal.traits : externDFunc; alias hashOf = externDFunc!("rt.util.hash.hashOf", - size_t function(const(void)*, size_t, size_t) @trusted pure nothrow); + size_t function(const(void)[], size_t) @trusted pure nothrow @nogc); if(!hasCustomToHash(element)) - return hashOf(ptr, elementSize * count, 0); + return hashOf(ptr[0 .. elementSize * count], 0); size_t hash = 0; foreach(size_t i; 0 .. count) diff --git a/src/rt/typeinfo/ti_Ag.d b/src/rt/typeinfo/ti_Ag.d index 851c04356e..e9ededeb05 100644 --- a/src/rt/typeinfo/ti_Ag.d +++ b/src/rt/typeinfo/ti_Ag.d @@ -27,8 +27,8 @@ class TypeInfo_Ag : TypeInfo_Array override size_t getHash(in void* p) @trusted const { - byte[] s = *cast(byte[]*)p; - return rt.util.hash.hashOf(s.ptr, s.length * byte.sizeof); + const s = *cast(const void[]*)p; + return rt.util.hash.hashOf(s, 0); } override bool equals(in void* p1, in void* p2) const diff --git a/src/rt/typeinfo/ti_Aint.d b/src/rt/typeinfo/ti_Aint.d index 0bd0341b6e..52174e999f 100644 --- a/src/rt/typeinfo/ti_Aint.d +++ b/src/rt/typeinfo/ti_Aint.d @@ -28,8 +28,8 @@ class TypeInfo_Ai : TypeInfo_Array override size_t getHash(in void* p) @trusted const { - int[] s = *cast(int[]*)p; - return rt.util.hash.hashOf(s.ptr, s.length * int.sizeof); + const s = *cast(const int[]*)p; + return rt.util.hash.hashOf(s, 0); } override bool equals(in void* p1, in void* p2) const diff --git a/src/rt/typeinfo/ti_Along.d b/src/rt/typeinfo/ti_Along.d index 5439fee1af..ca0853a742 100644 --- a/src/rt/typeinfo/ti_Along.d +++ b/src/rt/typeinfo/ti_Along.d @@ -26,8 +26,8 @@ class TypeInfo_Al : TypeInfo_Array override size_t getHash(in void* p) @trusted const { - long[] s = *cast(long[]*)p; - return rt.util.hash.hashOf(s.ptr, s.length * long.sizeof); + const s = *cast(const long[]*)p; + return rt.util.hash.hashOf(s, 0); } override bool equals(in void* p1, in void* p2) const diff --git a/src/rt/typeinfo/ti_Ashort.d b/src/rt/typeinfo/ti_Ashort.d index d270abbffd..e5a2d4b8c0 100644 --- a/src/rt/typeinfo/ti_Ashort.d +++ b/src/rt/typeinfo/ti_Ashort.d @@ -26,8 +26,8 @@ class TypeInfo_As : TypeInfo_Array override size_t getHash(in void* p) @trusted const { - short[] s = *cast(short[]*)p; - return rt.util.hash.hashOf(s.ptr, s.length * short.sizeof); + const s = *cast(const short[]*)p; + return rt.util.hash.hashOf(s, 0); } override bool equals(in void* p1, in void* p2) const diff --git a/src/rt/typeinfo/ti_cent.d b/src/rt/typeinfo/ti_cent.d index d7e45da298..2898ab8e96 100644 --- a/src/rt/typeinfo/ti_cent.d +++ b/src/rt/typeinfo/ti_cent.d @@ -30,7 +30,7 @@ class TypeInfo_zi : TypeInfo override size_t getHash(in void* p) { - return rt.util.hash.hashOf(p, cent.sizeof); + return rt.util.hash.hashOf(p[0 .. cent.sizeof], 0); } override bool equals(in void* p1, in void* p2) diff --git a/src/rt/typeinfo/ti_delegate.d b/src/rt/typeinfo/ti_delegate.d index fa6b0a21e8..c5ed001e56 100644 --- a/src/rt/typeinfo/ti_delegate.d +++ b/src/rt/typeinfo/ti_delegate.d @@ -28,7 +28,7 @@ class TypeInfo_D : TypeInfo override size_t getHash(in void* p) { - return rt.util.hash.hashOf(p, dg.sizeof); + return rt.util.hash.hashOf(p[0 .. dg.sizeof], 0); } override bool equals(in void* p1, in void* p2) diff --git a/src/rt/typeinfo/ti_long.d b/src/rt/typeinfo/ti_long.d index d054022b26..4328a23a9c 100644 --- a/src/rt/typeinfo/ti_long.d +++ b/src/rt/typeinfo/ti_long.d @@ -28,7 +28,7 @@ class TypeInfo_l : TypeInfo override size_t getHash(in void* p) { - return rt.util.hash.hashOf(p, long.sizeof); + return rt.util.hash.hashOf(p[0 .. long.sizeof], 0); } override bool equals(in void* p1, in void* p2) diff --git a/src/rt/typeinfo/ti_ucent.d b/src/rt/typeinfo/ti_ucent.d index 0f04253aaf..e5f95cf963 100644 --- a/src/rt/typeinfo/ti_ucent.d +++ b/src/rt/typeinfo/ti_ucent.d @@ -30,7 +30,7 @@ class TypeInfo_zk : TypeInfo override size_t getHash(in void* p) { - return rt.util.hash.hashOf(p, ucent.sizeof); + return rt.util.hash.hashOf(p[0 .. ucent.sizeof], 0); } override bool equals(in void* p1, in void* p2) diff --git a/src/rt/typeinfo/ti_ulong.d b/src/rt/typeinfo/ti_ulong.d index af645a1a42..9e949c44ac 100644 --- a/src/rt/typeinfo/ti_ulong.d +++ b/src/rt/typeinfo/ti_ulong.d @@ -28,7 +28,7 @@ class TypeInfo_m : TypeInfo override size_t getHash(in void* p) { - return rt.util.hash.hashOf(p, ulong.sizeof); + return rt.util.hash.hashOf(p[0 .. ulong.sizeof]); } override bool equals(in void* p1, in void* p2) diff --git a/src/rt/util/container/hashtab.d b/src/rt/util/container/hashtab.d index ef41b75811..2b4ab5d609 100644 --- a/src/rt/util/container/hashtab.d +++ b/src/rt/util/container/hashtab.d @@ -144,13 +144,13 @@ private: return &p._value; } - static hash_t hashOf(in ref Key key) + static hash_t hashOf(in ref Key key) @trusted { import rt.util.hash : hashOf; static if (is(Key U : U[])) - return hashOf(cast(const ubyte*)key.ptr, key.length * key[0].sizeof); + return hashOf(key, 0); else - return hashOf(cast(const ubyte*)&key, Key.sizeof); + return hashOf((&key)[0 .. 1], 0); } @property hash_t mask() const diff --git a/src/rt/util/hash.d b/src/rt/util/hash.d index 32198605aa..eb94cc0b04 100644 --- a/src/rt/util/hash.d +++ b/src/rt/util/hash.d @@ -17,14 +17,14 @@ version( AnyX86 ) version = HasUnalignedOps; -@trusted pure nothrow +@trusted pure nothrow @nogc size_t hashOf( const(void)[] buf, size_t seed = 0 ) { return hashOf(buf.ptr, buf.length, seed); } -@trusted pure nothrow -size_t hashOf( const(void)* buf, size_t len, size_t seed = 0 ) +@system pure nothrow @nogc +size_t hashOf( const(void)* buf, size_t len, size_t seed ) { /* * This is Paul Hsieh's SuperFastHash algorithm, described here: @@ -32,7 +32,7 @@ size_t hashOf( const(void)* buf, size_t len, size_t seed = 0 ) * It is protected by the following open source license: * http://www.azillionmonkeys.com/qed/weblicense.html */ - static uint get16bits( const (ubyte)* x ) pure nothrow + static uint get16bits( const (ubyte)* x ) pure nothrow @nogc { // CTFE doesn't support casting ubyte* -> ushort*, so revert to // per-byte access when in CTFE. @@ -96,14 +96,14 @@ size_t hashOf( const(void)* buf, size_t len, size_t seed = 0 ) } // Check that hashOf works with CTFE -unittest +@nogc nothrow pure unittest { size_t ctfeHash(string x) { - return hashOf(x.ptr, x.length); + return hashOf(x.ptr, x.length, 0); } enum test_str = "Sample string"; enum size_t hashVal = ctfeHash(test_str); - assert(hashVal == hashOf(test_str.ptr, test_str.length)); + assert(hashVal == hashOf(test_str.ptr, test_str.length, 0)); } diff --git a/src/rt/util/typeinfo.d b/src/rt/util/typeinfo.d index 8c41e0a13b..6cb26043f3 100644 --- a/src/rt/util/typeinfo.d +++ b/src/rt/util/typeinfo.d @@ -7,8 +7,6 @@ */ module rt.util.typeinfo; -public import rt.util.hash; - template Floating(T) if (is(T == float) || is(T == double) || is(T == real)) { @@ -42,7 +40,10 @@ if (is(T == float) || is(T == double) || is(T == real)) static if (is(T == float)) // special case? return *cast(uint*)&value; else - return rt.util.hash.hashOf(&value, T.sizeof); + { + import rt.util.hash; + return rt.util.hash.hashOf((&value)[0 .. 1], 0); + } } } template Floating(T) @@ -76,7 +77,8 @@ if (is(T == cfloat) || is(T == cdouble) || is(T == creal)) { if (value == 0 + 0i) value = 0 + 0i; - return rt.util.hash.hashOf(&value, T.sizeof); + import rt.util.hash; + return rt.util.hash.hashOf((&value)[0 .. 1], 0); } } From 76803b5e412eccbb49d31c1763d3b0ca187199f2 Mon Sep 17 00:00:00 2001 From: Jeremy DeHaan Date: Sat, 25 Jun 2016 15:30:29 -0700 Subject: [PATCH 394/768] update names Adds some names to the authors section of gcinterface.d and changes ithis to initialGC in proxy.d to clarify what it is used for. --- src/gc/gcinterface.d | 2 +- src/gc/proxy.d | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/gc/gcinterface.d b/src/gc/gcinterface.d index 062ab7346d..a588ae8c1a 100644 --- a/src/gc/gcinterface.d +++ b/src/gc/gcinterface.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Digital Mars 2016. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). - * Authors: Jeremy DeHaan + * Authors: Walter Bright, Sean Kelly, Jeremy DeHaan */ /* Copyright Digital Mars 2016. diff --git a/src/gc/proxy.d b/src/gc/proxy.d index e38ac703f7..75205a3015 100644 --- a/src/gc/proxy.d +++ b/src/gc/proxy.d @@ -28,8 +28,8 @@ private extern (C) void thread_init(); extern (C) void thread_term(); - __gshared GC instance; - __gshared GC ithis; + __gshared GC instance; //used for making the GC calls + __gshared GC initialGC; //used to reset instance if gc_clrProxy was called } @@ -40,10 +40,10 @@ extern (C) void gc_init() { config.initialize(); - ManualGC.initialize(ithis); - ConservativeGC.initialize(ithis); + ManualGC.initialize(initialGC); + ConservativeGC.initialize(initialGC); - instance = ithis; + instance = initialGC; // NOTE: The GC must initialize the thread library // before its first collection. @@ -217,17 +217,17 @@ extern (C) void gc_clrProxy() { - foreach(root; ithis.rootIter) + foreach(root; initialGC.rootIter) { instance.removeRoot(root); } - foreach(range; ithis.rangeIter) + foreach(range; initialGC.rangeIter) { instance.removeRange(range); } - instance = ithis; + instance = initialGC; } } } From 3c061896a2262f95604660247596fa7a1419283a Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 26 Jun 2016 03:49:41 -0700 Subject: [PATCH 395/768] remove old hashOf overload --- src/rt/typeinfo/ti_ulong.d | 2 +- src/rt/util/hash.d | 32 +++++++++++++++----------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/rt/typeinfo/ti_ulong.d b/src/rt/typeinfo/ti_ulong.d index 9e949c44ac..fc87ce5753 100644 --- a/src/rt/typeinfo/ti_ulong.d +++ b/src/rt/typeinfo/ti_ulong.d @@ -28,7 +28,7 @@ class TypeInfo_m : TypeInfo override size_t getHash(in void* p) { - return rt.util.hash.hashOf(p[0 .. ulong.sizeof]); + return rt.util.hash.hashOf(p[0 .. ulong.sizeof], 0); } override bool equals(in void* p1, in void* p2) diff --git a/src/rt/util/hash.d b/src/rt/util/hash.d index eb94cc0b04..803f73efbd 100644 --- a/src/rt/util/hash.d +++ b/src/rt/util/hash.d @@ -18,13 +18,7 @@ version( AnyX86 ) @trusted pure nothrow @nogc -size_t hashOf( const(void)[] buf, size_t seed = 0 ) -{ - return hashOf(buf.ptr, buf.length, seed); -} - -@system pure nothrow @nogc -size_t hashOf( const(void)* buf, size_t len, size_t seed ) +size_t hashOf( const(void)[] buf, size_t seed ) { /* * This is Paul Hsieh's SuperFastHash algorithm, described here: @@ -47,7 +41,8 @@ size_t hashOf( const(void)* buf, size_t len, size_t seed ) // NOTE: SuperFastHash normally starts with a zero hash value. The seed // value was incorporated to allow chaining. - auto data = cast(const (ubyte)*) buf; + auto data = cast(const(ubyte)*) buf.ptr; + auto len = buf.length; auto hash = seed; if( len == 0 || data is null ) @@ -95,15 +90,18 @@ size_t hashOf( const(void)* buf, size_t len, size_t seed ) return hash; } -// Check that hashOf works with CTFE -@nogc nothrow pure unittest +unittest { - size_t ctfeHash(string x) - { - return hashOf(x.ptr, x.length, 0); - } - enum test_str = "Sample string"; - enum size_t hashVal = ctfeHash(test_str); - assert(hashVal == hashOf(test_str.ptr, test_str.length, 0)); + size_t hashval = hashOf(test_str, 5); + + //import core.stdc.stdio; + //printf("hashval = %lld\n", cast(long)hashval); + + if (hashval.sizeof == 4) + assert(hashval == 528740845); + else if (hashval.sizeof == 8) + assert(hashval == 8106800467257150594L); + else + assert(0); } From d1bd20d5ca000cf1dbee389afc16722a4a39d908 Mon Sep 17 00:00:00 2001 From: Jeremy DeHaan Date: Mon, 27 Jun 2016 07:49:33 -0700 Subject: [PATCH 396/768] another name change --- src/gc/proxy.d | 78 +++++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/src/gc/proxy.d b/src/gc/proxy.d index 75205a3015..10ae80ddbe 100644 --- a/src/gc/proxy.d +++ b/src/gc/proxy.d @@ -28,8 +28,8 @@ private extern (C) void thread_init(); extern (C) void thread_term(); - __gshared GC instance; //used for making the GC calls - __gshared GC initialGC; //used to reset instance if gc_clrProxy was called + __gshared GC currentGC; //used for making the GC calls + __gshared GC initialGC; //used to reset currentGC if gc_clrProxy was called } @@ -43,7 +43,7 @@ extern (C) ManualGC.initialize(initialGC); ConservativeGC.initialize(initialGC); - instance = initialGC; + currentGC = initialGC; // NOTE: The GC must initialize the thread library // before its first collection. @@ -62,8 +62,8 @@ extern (C) // NOTE: Due to popular demand, this has been re-enabled. It still has // the problems mentioned above though, so I guess we'll see. - instance.collectNoStack(); // not really a 'collect all' -- still scans - // static data area, roots, and ranges. + currentGC.collectNoStack(); // not really a 'collect all' -- still scans + // static data area, roots, and ranges. thread_term(); @@ -73,161 +73,161 @@ extern (C) void gc_enable() { - instance.enable(); + currentGC.enable(); } void gc_disable() { - instance.disable(); + currentGC.disable(); } void gc_collect() nothrow { - instance.collect(); + currentGC.collect(); } void gc_minimize() nothrow { - instance.minimize(); + currentGC.minimize(); } uint gc_getAttr( void* p ) nothrow { - return instance.getAttr(p); + return currentGC.getAttr(p); } uint gc_setAttr( void* p, uint a ) nothrow { - return instance.setAttr(p, a); + return currentGC.setAttr(p, a); } uint gc_clrAttr( void* p, uint a ) nothrow { - return instance.clrAttr(p, a); + return currentGC.clrAttr(p, a); } void* gc_malloc( size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - return instance.malloc(sz, ba, ti); + return currentGC.malloc(sz, ba, ti); } BlkInfo gc_qalloc( size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - return instance.qalloc( sz, ba, ti ); + return currentGC.qalloc( sz, ba, ti ); } void* gc_calloc( size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - return instance.calloc( sz, ba, ti ); + return currentGC.calloc( sz, ba, ti ); } void* gc_realloc( void* p, size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - return instance.realloc( p, sz, ba, ti ); + return currentGC.realloc( p, sz, ba, ti ); } size_t gc_extend( void* p, size_t mx, size_t sz, const TypeInfo ti = null ) nothrow { - return instance.extend( p, mx, sz,ti ); + return currentGC.extend( p, mx, sz,ti ); } size_t gc_reserve( size_t sz ) nothrow { - return instance.reserve( sz ); + return currentGC.reserve( sz ); } void gc_free( void* p ) nothrow { - return instance.free( p ); + return currentGC.free( p ); } void* gc_addrOf( void* p ) nothrow { - return instance.addrOf( p ); + return currentGC.addrOf( p ); } size_t gc_sizeOf( void* p ) nothrow { - return instance.sizeOf( p ); + return currentGC.sizeOf( p ); } BlkInfo gc_query( void* p ) nothrow { - return instance.query( p ); + return currentGC.query( p ); } // NOTE: This routine is experimental. The stats or function name may change // before it is made officially available. GCStats gc_stats() nothrow { - return instance.stats(); + return currentGC.stats(); } void gc_addRoot( void* p ) nothrow { - return instance.addRoot( p ); + return currentGC.addRoot( p ); } void gc_addRange( void* p, size_t sz, const TypeInfo ti = null ) nothrow { - return instance.addRange( p, sz, ti ); + return currentGC.addRange( p, sz, ti ); } void gc_removeRoot( void* p ) nothrow { - return instance.removeRoot( p ); + return currentGC.removeRoot( p ); } void gc_removeRange( void* p ) nothrow { - return instance.removeRange( p ); + return currentGC.removeRange( p ); } void gc_runFinalizers( in void[] segment ) nothrow { - return instance.runFinalizers( segment ); + return currentGC.runFinalizers( segment ); } bool gc_inFinalizer() nothrow { - return instance.inFinalizer(); + return currentGC.inFinalizer(); } GC gc_getProxy() nothrow { - return instance; + return currentGC; } export { - void gc_setProxy( GC inst ) + void gc_setProxy( GC newGC ) { - foreach(root; instance.rootIter) + foreach(root; currentGC.rootIter) { - inst.addRoot(root); + newGC.addRoot(root); } - foreach(range; instance.rangeIter) + foreach(range; currentGC.rangeIter) { - inst.addRange(range.pbot, range.ptop - range.pbot, range.ti); + newGC.addRange(range.pbot, range.ptop - range.pbot, range.ti); } - instance = inst; + currentGC = newGC; } void gc_clrProxy() { foreach(root; initialGC.rootIter) { - instance.removeRoot(root); + currentGC.removeRoot(root); } foreach(range; initialGC.rangeIter) { - instance.removeRange(range); + currentGC.removeRange(range); } - instance = initialGC; + currentGC = initialGC; } } } From c1ef9ecf1037f0819ae68e81c845b3899c86b9e7 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 26 Jun 2016 02:54:15 -0700 Subject: [PATCH 397/768] update comments in object.d --- src/object.d | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/object.d b/src/object.d index 8d8650e9d1..7f5b605f5b 100644 --- a/src/object.d +++ b/src/object.d @@ -8,11 +8,6 @@ * Authors: Walter Bright, Sean Kelly */ -/* Copyright Digital Mars 2000 - 2011. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module object; private @@ -2125,7 +2120,7 @@ pure nothrow unittest } } -pure /*nothrow @@@BUG5555@@@*/ unittest +pure /*nothrow */ unittest { auto a = [ 1:"one", 2:"two", 3:"three" ]; auto b = a.dup; @@ -2477,7 +2472,7 @@ void _postblitRecurse(E, size_t n)(ref E[n] arr) struct InnerMiddle {} - version(none) // @@@BUG@@@ 14242 + version(none) // https://issues.dlang.org/show_bug.cgi?id=14242 struct InnerElement { static char counter = '1'; @@ -2511,7 +2506,7 @@ void _postblitRecurse(E, size_t n)(ref E[n] arr) char[] s; InnerTop top; InnerMiddle middle; - version(none) InnerElement[3] array; // @@@BUG@@@ 14242 + version(none) InnerElement[3] array; // https://issues.dlang.org/show_bug.cgi?id=14242 int a; InnerBottom bottom; ~this() @safe nothrow pure { order ~= "destroy outer"; } @@ -2587,7 +2582,7 @@ unittest } // Test handling of fixed-length arrays -// Separate from first test because of @@@BUG@@@ 14242 +// Separate from first test because of https://issues.dlang.org/show_bug.cgi?id=14242 unittest { string[] order; @@ -2630,7 +2625,7 @@ unittest } // Test handling of failed postblit -// Not nothrow or @safe because of @@@BUG@@@ 14242 +// Not nothrow or @safe because of https://issues.dlang.org/show_bug.cgi?id=14242 /+ nothrow @safe +/ unittest { static class FailedPostblitException : Exception { this() nothrow @safe { super(null); } } @@ -3084,7 +3079,7 @@ unittest arr = arr[0 .. 1].assumeSafeAppend(); //pass by value } -//@@@10574@@@ +// https://issues.dlang.org/show_bug.cgi?id=10574 unittest { int[] a; @@ -3257,7 +3252,7 @@ private size_t getArrayHash(in TypeInfo element, in void* ptr, in size_t count) } -// @@@BUG5835@@@ tests: +// Tests ensure TypeInfo_Array.getHash uses element hash functions instead of hashing array data unittest { @@ -3268,7 +3263,7 @@ unittest override hash_t toHash() { return 0; } } C[] a1 = [new C(11)], a2 = [new C(12)]; - assert(typeid(C[]).getHash(&a1) == typeid(C[]).getHash(&a2)); // fails + assert(typeid(C[]).getHash(&a1) == typeid(C[]).getHash(&a2)); } unittest @@ -3279,7 +3274,7 @@ unittest hash_t toHash() const @safe nothrow { return 0; } } S[] a1 = [S(11)], a2 = [S(12)]; - assert(typeid(S[]).getHash(&a1) == typeid(S[]).getHash(&a2)); // fails + assert(typeid(S[]).getHash(&a1) == typeid(S[]).getHash(&a2)); } @safe unittest @@ -3294,7 +3289,7 @@ unittest } int[S[]] aa = [[S(11)] : 13]; - assert(aa[[S(12)]] == 13); // fails + assert(aa[[S(12)]] == 13); } /// Provide the .dup array property. From 84949bf47feae32b860fc801a830f6de7cd1d9a3 Mon Sep 17 00:00:00 2001 From: Jeremy DeHaan Date: Mon, 27 Jun 2016 15:41:17 -0700 Subject: [PATCH 398/768] Replace pointers with Array containers Also removes some unnecessary lines dealing with GC versioning. --- src/gc/gcinterface.d | 3 --- src/gc/impl/conservative/gc.d | 2 -- src/gc/impl/manual/gc.d | 44 ++++++++++++++--------------------- 3 files changed, 18 insertions(+), 31 deletions(-) diff --git a/src/gc/gcinterface.d b/src/gc/gcinterface.d index a588ae8c1a..e4d4b14810 100644 --- a/src/gc/gcinterface.d +++ b/src/gc/gcinterface.d @@ -36,9 +36,6 @@ struct Range alias pbot this; // only consider pbot for relative ordering (opCmp) } -const uint GCVERSION = 1; // increment every time we change interface -// to GC. - interface GC { diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index 986fb48d4e..5456569841 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -257,8 +257,6 @@ class ConservativeGC : GC __gshared size_t line; __gshared char* file; - uint gcversion = GCVERSION; - Gcx *gcx; // implementation import core.internal.spinlock; diff --git a/src/gc/impl/manual/gc.d b/src/gc/impl/manual/gc.d index 9e0fe24ae6..d190d3c49d 100644 --- a/src/gc/impl/manual/gc.d +++ b/src/gc/impl/manual/gc.d @@ -29,6 +29,8 @@ import gc.config; import gc.stats; import gc.gcinterface; +import rt.util.container.array; + import cstdlib = core.stdc.stdlib : calloc, free, malloc, realloc; extern (C) void onOutOfMemoryError(void* pretend_sideffect = null) @trusted pure nothrow @nogc; /* dmd @@@BUG11461@@@ */ @@ -37,11 +39,8 @@ __gshared ManualGC instance; class ManualGC : GC { - __gshared Root* roots = null; - __gshared size_t nroots = 0; - - __gshared Range* ranges = null; - __gshared size_t nranges = 0; + __gshared Array!Root roots; + __gshared Array!Range ranges; static void initialize(ref GC gc) { @@ -77,8 +76,6 @@ class ManualGC : GC void Dtor() { - cstdlib.free(roots); - cstdlib.free(ranges); } void enable() @@ -201,20 +198,20 @@ class ManualGC : GC void addRoot(void* p) nothrow @nogc { - Root* r = cast(Root*) cstdlib.realloc(roots, (nroots + 1) * roots[0].sizeof); - if (r is null) - onOutOfMemoryError(); - r[nroots++] = p; - roots = r; + + Root r = {p}; + roots.insertBack(r); } void removeRoot(void* p) nothrow @nogc { - for (size_t i = 0; i < nroots; ++i) + + for (size_t i = 0; i < roots.length; ++i) { if (roots[i] is p) { - roots[i] = roots[--nroots]; + roots[i] = roots.back; + roots.popBack(); return; } } @@ -229,7 +226,7 @@ class ManualGC : GC private int rootsApply(scope int delegate(ref Root) nothrow dg) { int result = 0; - for (int i = 0; i < nroots; i++) + for (int i = 0; i < roots.length; i++) { result = dg(roots[i]); @@ -242,23 +239,18 @@ class ManualGC : GC void addRange(void* p, size_t sz, const TypeInfo ti = null) nothrow @nogc { - Range* r = cast(Range*) cstdlib.realloc(ranges, (nranges + 1) * ranges[0].sizeof); - if (r is null) - onOutOfMemoryError(); - r[nranges].pbot = p; - r[nranges].ptop = p + sz; - r[nranges].ti = cast() ti; - ranges = r; - ++nranges; + Range newRange = {p, p + sz, cast() ti}; + ranges.insertBack(newRange); } void removeRange(void* p) nothrow @nogc { - for (size_t i = 0; i < nranges; ++i) + for (size_t i = 0; i < ranges.length; ++i) { if (ranges[i].pbot is p) { - ranges[i] = ranges[--nranges]; + ranges[i] = ranges.back; + ranges.popBack(); return; } } @@ -273,7 +265,7 @@ class ManualGC : GC private int rangesApply(scope int delegate(ref Range) nothrow dg) { int result = 0; - for (int i = 0; i < nranges; i++) + for (int i = 0; i < ranges.length; i++) { result = dg(ranges[i]); From 0fc0dd363c0a5edb7e5e977ef091d7fb5c0d64fb Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 28 Jun 2016 01:09:11 +0200 Subject: [PATCH 399/768] use foreach loops --- src/gc/impl/manual/gc.d | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/gc/impl/manual/gc.d b/src/gc/impl/manual/gc.d index d190d3c49d..e20cdb42d9 100644 --- a/src/gc/impl/manual/gc.d +++ b/src/gc/impl/manual/gc.d @@ -205,12 +205,11 @@ class ManualGC : GC void removeRoot(void* p) nothrow @nogc { - - for (size_t i = 0; i < roots.length; ++i) + foreach (ref r; roots) { - if (roots[i] is p) + if (r is p) { - roots[i] = roots.back; + r = roots.back; roots.popBack(); return; } @@ -226,9 +225,9 @@ class ManualGC : GC private int rootsApply(scope int delegate(ref Root) nothrow dg) { int result = 0; - for (int i = 0; i < roots.length; i++) + foreach (ref r; roots) { - result = dg(roots[i]); + result = dg(r); if (result) break; @@ -245,11 +244,11 @@ class ManualGC : GC void removeRange(void* p) nothrow @nogc { - for (size_t i = 0; i < ranges.length; ++i) + foreach (ref r; ranges) { - if (ranges[i].pbot is p) + if (r.pbot is p) { - ranges[i] = ranges.back; + r = ranges.back; ranges.popBack(); return; } @@ -265,9 +264,9 @@ class ManualGC : GC private int rangesApply(scope int delegate(ref Range) nothrow dg) { int result = 0; - for (int i = 0; i < ranges.length; i++) + foreach (ref r; ranges) { - result = dg(ranges[i]); + result = dg(r); if (result) break; From 8e8b0ba03a70f53c19e33545c6f16fb2bd418f43 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 28 Jun 2016 01:16:41 +0200 Subject: [PATCH 400/768] simplify opApply loops --- src/gc/impl/manual/gc.d | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/gc/impl/manual/gc.d b/src/gc/impl/manual/gc.d index e20cdb42d9..928ced0abe 100644 --- a/src/gc/impl/manual/gc.d +++ b/src/gc/impl/manual/gc.d @@ -224,16 +224,12 @@ class ManualGC : GC private int rootsApply(scope int delegate(ref Root) nothrow dg) { - int result = 0; foreach (ref r; roots) { - result = dg(r); - - if (result) - break; + if (auto result = dg(r)) + return result; } - - return result; + return 0; } void addRange(void* p, size_t sz, const TypeInfo ti = null) nothrow @nogc @@ -263,16 +259,12 @@ class ManualGC : GC private int rangesApply(scope int delegate(ref Range) nothrow dg) { - int result = 0; foreach (ref r; ranges) { - result = dg(r); - - if (result) - break; + if (auto result = dg(r)) + return result; } - - return result; + return 0; } void runFinalizers(in void[] segment) nothrow From b3d6a32dc690cbbea4a2c379b5ae2f7ec9be7e08 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 28 Jun 2016 01:18:18 +0200 Subject: [PATCH 401/768] initialize struct arguments in place - also avoid {} initialization syntax, it doesn't allow to add a constructor later on, use `auto r = Range(p)` instead --- src/gc/impl/manual/gc.d | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/gc/impl/manual/gc.d b/src/gc/impl/manual/gc.d index 928ced0abe..25e991cc8f 100644 --- a/src/gc/impl/manual/gc.d +++ b/src/gc/impl/manual/gc.d @@ -198,9 +198,7 @@ class ManualGC : GC void addRoot(void* p) nothrow @nogc { - - Root r = {p}; - roots.insertBack(r); + roots.insertBack(Root(p)); } void removeRoot(void* p) nothrow @nogc @@ -234,8 +232,7 @@ class ManualGC : GC void addRange(void* p, size_t sz, const TypeInfo ti = null) nothrow @nogc { - Range newRange = {p, p + sz, cast() ti}; - ranges.insertBack(newRange); + ranges.insertBack(Range(p, p + sz, cast() ti)); } void removeRange(void* p) nothrow @nogc From c8cba0f2a32d226c33746729ecef07e32b908f65 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 28 Jun 2016 01:25:07 +0200 Subject: [PATCH 402/768] call TypeInfo.initializer() only once --- src/gc/impl/conservative/gc.d | 18 ++++++++++-------- src/gc/impl/manual/gc.d | 6 +++--- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index 5456569841..82423547a7 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -284,21 +284,23 @@ class ConservativeGC : GC if(!p) onOutOfMemoryErrorNoGC(); - instance = cast(ConservativeGC)memcpy(p, typeid(ConservativeGC).initializer.ptr, typeid(ConservativeGC).initializer.length); - + auto init = typeid(ConservativeGC).initializer(); + assert(init.length == __traits(classInstanceSize, ConservativeGC)); + instance = cast(ConservativeGC) memcpy(p, init.ptr, init.length); instance.__ctor(); gc = instance; } - static void finalize() + static void finalize(ref GC gc) { - if(instance !is null) - { - instance.Dtor(); - cstdlib.free(cast(void*)instance); - } + if(config.gc != "conservative") + return; + + auto instance = cast(ConservativeGC) gc; + instance.Dtor(); + cstdlib.free(cast(void*)instance); } diff --git a/src/gc/impl/manual/gc.d b/src/gc/impl/manual/gc.d index 25e991cc8f..736a6b14be 100644 --- a/src/gc/impl/manual/gc.d +++ b/src/gc/impl/manual/gc.d @@ -53,9 +53,9 @@ class ManualGC : GC if (!p) onOutOfMemoryError(); - instance = cast(ManualGC) memcpy(p, typeid(ManualGC).initializer.ptr, - typeid(ManualGC).initializer.length); - + auto init = typeid(ManualGC).initializer(); + assert(init.length == __traits(classInstanceSize, ManualGC)); + instance = cast(ManualGC) memcpy(p, init.ptr, init.length); instance.__ctor(); gc = instance; From d066226d8a460997d857c04deb0e04c28a37c9d9 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 27 Jun 2016 16:40:47 -0700 Subject: [PATCH 403/768] rt.util.utf: add attributes --- src/rt/util/utf.d | 47 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/rt/util/utf.d b/src/rt/util/utf.d index 779f1b425f..76aebe3b67 100644 --- a/src/rt/util/utf.d +++ b/src/rt/util/utf.d @@ -13,20 +13,15 @@ * $(LINK http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8)
* $(LINK http://anubis.dkuug.dk/JTC1/SC2/WG2/docs/n1335) * - * Copyright: Copyright Digital Mars 2003 - 2009. + * Copyright: Copyright Digital Mars 2003 - 2016. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Walter Bright, Sean Kelly + * Source: $(DRUNTIMESRC src/rt/util/_utf.d) */ -/* Copyright Digital Mars 2003 - 2009. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module rt.util.utf; - -extern (C) void onUnicodeError( string msg, size_t idx, string file = __FILE__, size_t line = __LINE__ ); +extern (C) void onUnicodeError( string msg, size_t idx, string file = __FILE__, size_t line = __LINE__ ) @safe pure; /******************************* * Test if c is a valid UTF-32 character. @@ -38,6 +33,7 @@ extern (C) void onUnicodeError( string msg, size_t idx, string file = __FILE__, * Returns: true if it is, false if not. */ +@safe @nogc pure nothrow bool isValidDchar(dchar c) { /* Note: FFFE and FFFF are specifically permitted by the @@ -87,6 +83,7 @@ static immutable UTF8stride = * The number of bytes in the UTF-8 sequence or * 0xFF meaning s[i] is not the start of of UTF-8 sequence. */ +@safe @nogc pure nothrow uint stride(in char[] s, size_t i) { return UTF8stride[s[i]]; @@ -96,6 +93,7 @@ uint stride(in char[] s, size_t i) * stride() returns the length of a UTF-16 sequence starting at index i * in string s. */ +@safe @nogc pure nothrow uint stride(in wchar[] s, size_t i) { uint u = s[i]; return 1 + (u >= 0xD800 && u <= 0xDBFF); @@ -106,6 +104,7 @@ uint stride(in wchar[] s, size_t i) * in string s. * Returns: The return value will always be 1. */ +@safe @nogc pure nothrow uint stride(in dchar[] s, size_t i) { return 1; @@ -116,7 +115,7 @@ uint stride(in dchar[] s, size_t i) * and assuming that index i is at the start of a UTF character, * determine the number of UCS characters up to that index i. */ - +@safe pure size_t toUCSindex(in char[] s, size_t i) { size_t n; @@ -135,6 +134,7 @@ size_t toUCSindex(in char[] s, size_t i) } /** ditto */ +@safe pure size_t toUCSindex(in wchar[] s, size_t i) { size_t n; @@ -153,6 +153,7 @@ size_t toUCSindex(in wchar[] s, size_t i) } /** ditto */ +@safe @nogc pure nothrow size_t toUCSindex(in dchar[] s, size_t i) { return i; @@ -161,7 +162,7 @@ size_t toUCSindex(in dchar[] s, size_t i) /****************************************** * Given a UCS index n into an array of characters s[], return the UTF index. */ - +@safe pure size_t toUTFindex(in char[] s, size_t n) { size_t i; @@ -177,6 +178,7 @@ size_t toUTFindex(in char[] s, size_t n) } /** ditto */ +@safe @nogc pure nothrow size_t toUTFindex(in wchar[] s, size_t n) { size_t i; @@ -190,6 +192,7 @@ size_t toUTFindex(in wchar[] s, size_t n) } /** ditto */ +@safe @nogc pure nothrow size_t toUTFindex(in dchar[] s, size_t n) { return n; @@ -202,6 +205,7 @@ size_t toUTFindex(in dchar[] s, size_t n) * decoded character. If the character is not well formed, a UtfException is * thrown and idx remains unchanged. */ +@safe pure dchar decode(in char[] s, ref size_t idx) in { @@ -342,7 +346,7 @@ unittest } /** ditto */ - +@safe pure dchar decode(in wchar[] s, ref size_t idx) in { @@ -400,7 +404,7 @@ dchar decode(in wchar[] s, ref size_t idx) } /** ditto */ - +@safe pure dchar decode(in dchar[] s, ref size_t idx) in { @@ -427,6 +431,7 @@ dchar decode(in dchar[] s, ref size_t idx) /******************************* * Encodes character c and appends it to array s[]. */ +@safe pure nothrow void encode(ref char[] s, dchar c) in { @@ -495,7 +500,7 @@ unittest } /** ditto */ - +@safe pure nothrow void encode(ref wchar[] s, dchar c) in { @@ -521,6 +526,7 @@ void encode(ref wchar[] s, dchar c) } /** ditto */ +@safe pure nothrow void encode(ref dchar[] s, dchar c) in { @@ -535,7 +541,7 @@ void encode(ref dchar[] s, dchar c) Returns the code length of $(D c) in the encoding using $(D C) as a code point. The code is returned in character count, not in bytes. */ - +@safe pure nothrow @nogc ubyte codeLength(C)(dchar c) { static if (C.sizeof == 1) @@ -564,6 +570,7 @@ Checks to see if string is well formed or not. $(D S) can be an array of $(D char), $(D wchar), or $(D dchar). Throws a $(D UtfException) if it is not. Use to check all untrusted input for correctness. */ +@safe pure void validate(S)(in S s) { auto len = s.length; @@ -575,6 +582,7 @@ void validate(S)(in S s) /* =================== Conversion to UTF8 ======================= */ +@safe pure nothrow @nogc char[] toUTF8(return out char[4] buf, dchar c) in { @@ -614,6 +622,7 @@ char[] toUTF8(return out char[4] buf, dchar c) /******************* * Encodes string s into UTF-8 and returns the encoded string. */ +@safe pure nothrow string toUTF8(string s) in { @@ -625,6 +634,7 @@ string toUTF8(string s) } /** ditto */ +@trusted pure string toUTF8(in wchar[] s) { char[] r; @@ -652,6 +662,7 @@ string toUTF8(in wchar[] s) } /** ditto */ +@trusted pure string toUTF8(in dchar[] s) { char[] r; @@ -680,6 +691,7 @@ string toUTF8(in dchar[] s) /* =================== Conversion to UTF16 ======================= */ +@safe pure nothrow @nogc wchar[] toUTF16(return out wchar[2] buf, dchar c) in { @@ -705,6 +717,7 @@ wchar[] toUTF16(return out wchar[2] buf, dchar c) * toUTF16z() is suitable for calling the 'W' functions in the Win32 API that take * an LPWSTR or LPCWSTR argument. */ +@trusted pure wstring toUTF16(in char[] s) { wchar[] r; @@ -731,6 +744,7 @@ wstring toUTF16(in char[] s) alias const(wchar)* wptr; /** ditto */ +@safe pure wptr toUTF16z(in char[] s) { wchar[] r; @@ -757,6 +771,7 @@ wptr toUTF16z(in char[] s) } /** ditto */ +@safe pure nothrow wstring toUTF16(wstring s) in { @@ -768,6 +783,7 @@ wstring toUTF16(wstring s) } /** ditto */ +@trusted pure nothrow wstring toUTF16(in dchar[] s) { wchar[] r; @@ -787,6 +803,7 @@ wstring toUTF16(in dchar[] s) /***** * Encodes string s into UTF-32 and returns the encoded string. */ +@trusted pure dstring toUTF32(in char[] s) { dchar[] r; @@ -807,6 +824,7 @@ dstring toUTF32(in char[] s) } /** ditto */ +@trusted pure dstring toUTF32(in wchar[] s) { dchar[] r; @@ -827,6 +845,7 @@ dstring toUTF32(in wchar[] s) } /** ditto */ +@safe pure nothrow dstring toUTF32(dstring s) in { From e342ac4b35a85dcdf02c9ccb7df00f07584cbda3 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 28 Jun 2016 01:44:30 +0200 Subject: [PATCH 404/768] replace global per-GC instance pointers --- src/gc/impl/conservative/gc.d | 4 +--- src/gc/impl/manual/gc.d | 17 ++++++++--------- src/gc/proxy.d | 4 ++-- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index 82423547a7..91cf7762f9 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -249,8 +249,6 @@ debug (LOGGING) /* ============================ GC =============================== */ -__gshared ConservativeGC instance; - class ConservativeGC : GC { // For passing to debug code (not thread safe) @@ -286,7 +284,7 @@ class ConservativeGC : GC auto init = typeid(ConservativeGC).initializer(); assert(init.length == __traits(classInstanceSize, ConservativeGC)); - instance = cast(ConservativeGC) memcpy(p, init.ptr, init.length); + auto instance = cast(ConservativeGC) memcpy(p, init.ptr, init.length); instance.__ctor(); gc = instance; diff --git a/src/gc/impl/manual/gc.d b/src/gc/impl/manual/gc.d index 736a6b14be..cd626b6e94 100644 --- a/src/gc/impl/manual/gc.d +++ b/src/gc/impl/manual/gc.d @@ -35,8 +35,6 @@ import cstdlib = core.stdc.stdlib : calloc, free, malloc, realloc; extern (C) void onOutOfMemoryError(void* pretend_sideffect = null) @trusted pure nothrow @nogc; /* dmd @@@BUG11461@@@ */ -__gshared ManualGC instance; - class ManualGC : GC { __gshared Array!Root roots; @@ -55,19 +53,20 @@ class ManualGC : GC auto init = typeid(ManualGC).initializer(); assert(init.length == __traits(classInstanceSize, ManualGC)); - instance = cast(ManualGC) memcpy(p, init.ptr, init.length); + auto instance = cast(ManualGC) memcpy(p, init.ptr, init.length); instance.__ctor(); gc = instance; } - static void finalize() + static void finalize(ref GC gc) { - if (instance !is null) - { - instance.Dtor(); - cstdlib.free(cast(void*) instance); - } + if (config.gc != "manual") + return; + + auto instance = cast(ManualGC) gc; + instance.Dtor(); + cstdlib.free(cast(void*) instance); } this() diff --git a/src/gc/proxy.d b/src/gc/proxy.d index 10ae80ddbe..cf015873db 100644 --- a/src/gc/proxy.d +++ b/src/gc/proxy.d @@ -67,8 +67,8 @@ extern (C) thread_term(); - ManualGC.finalize(); - ConservativeGC.finalize(); + ManualGC.finalize(initialGC); + ConservativeGC.finalize(initialGC); } void gc_enable() From 8f99b220b4b22c1041df2d6107f450d8a0a4a68d Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 28 Jun 2016 01:52:42 +0200 Subject: [PATCH 405/768] clarify names of proxied GC - only need to keep the initial GC to iterate roots of the broken DLL implementation --- src/gc/proxy.d | 90 +++++++++++++++++++++++++------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/src/gc/proxy.d b/src/gc/proxy.d index cf015873db..5e2d4b4549 100644 --- a/src/gc/proxy.d +++ b/src/gc/proxy.d @@ -28,8 +28,8 @@ private extern (C) void thread_init(); extern (C) void thread_term(); - __gshared GC currentGC; //used for making the GC calls - __gshared GC initialGC; //used to reset currentGC if gc_clrProxy was called + __gshared GC instance; + __gshared GC proxiedGC; // used to iterate roots of Windows DLLs } @@ -40,10 +40,8 @@ extern (C) void gc_init() { config.initialize(); - ManualGC.initialize(initialGC); - ConservativeGC.initialize(initialGC); - - currentGC = initialGC; + ManualGC.initialize(instance); + ConservativeGC.initialize(instance); // NOTE: The GC must initialize the thread library // before its first collection. @@ -62,172 +60,174 @@ extern (C) // NOTE: Due to popular demand, this has been re-enabled. It still has // the problems mentioned above though, so I guess we'll see. - currentGC.collectNoStack(); // not really a 'collect all' -- still scans + instance.collectNoStack(); // not really a 'collect all' -- still scans // static data area, roots, and ranges. thread_term(); - ManualGC.finalize(initialGC); - ConservativeGC.finalize(initialGC); + ManualGC.finalize(instance); + ConservativeGC.finalize(instance); } void gc_enable() { - currentGC.enable(); + instance.enable(); } void gc_disable() { - currentGC.disable(); + instance.disable(); } void gc_collect() nothrow { - currentGC.collect(); + instance.collect(); } void gc_minimize() nothrow { - currentGC.minimize(); + instance.minimize(); } uint gc_getAttr( void* p ) nothrow { - return currentGC.getAttr(p); + return instance.getAttr(p); } uint gc_setAttr( void* p, uint a ) nothrow { - return currentGC.setAttr(p, a); + return instance.setAttr(p, a); } uint gc_clrAttr( void* p, uint a ) nothrow { - return currentGC.clrAttr(p, a); + return instance.clrAttr(p, a); } void* gc_malloc( size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - return currentGC.malloc(sz, ba, ti); + return instance.malloc(sz, ba, ti); } BlkInfo gc_qalloc( size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - return currentGC.qalloc( sz, ba, ti ); + return instance.qalloc( sz, ba, ti ); } void* gc_calloc( size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - return currentGC.calloc( sz, ba, ti ); + return instance.calloc( sz, ba, ti ); } void* gc_realloc( void* p, size_t sz, uint ba = 0, const TypeInfo ti = null ) nothrow { - return currentGC.realloc( p, sz, ba, ti ); + return instance.realloc( p, sz, ba, ti ); } size_t gc_extend( void* p, size_t mx, size_t sz, const TypeInfo ti = null ) nothrow { - return currentGC.extend( p, mx, sz,ti ); + return instance.extend( p, mx, sz,ti ); } size_t gc_reserve( size_t sz ) nothrow { - return currentGC.reserve( sz ); + return instance.reserve( sz ); } void gc_free( void* p ) nothrow { - return currentGC.free( p ); + return instance.free( p ); } void* gc_addrOf( void* p ) nothrow { - return currentGC.addrOf( p ); + return instance.addrOf( p ); } size_t gc_sizeOf( void* p ) nothrow { - return currentGC.sizeOf( p ); + return instance.sizeOf( p ); } BlkInfo gc_query( void* p ) nothrow { - return currentGC.query( p ); + return instance.query( p ); } // NOTE: This routine is experimental. The stats or function name may change // before it is made officially available. GCStats gc_stats() nothrow { - return currentGC.stats(); + return instance.stats(); } void gc_addRoot( void* p ) nothrow { - return currentGC.addRoot( p ); + return instance.addRoot( p ); } void gc_addRange( void* p, size_t sz, const TypeInfo ti = null ) nothrow { - return currentGC.addRange( p, sz, ti ); + return instance.addRange( p, sz, ti ); } void gc_removeRoot( void* p ) nothrow { - return currentGC.removeRoot( p ); + return instance.removeRoot( p ); } void gc_removeRange( void* p ) nothrow { - return currentGC.removeRange( p ); + return instance.removeRange( p ); } void gc_runFinalizers( in void[] segment ) nothrow { - return currentGC.runFinalizers( segment ); + return instance.runFinalizers( segment ); } bool gc_inFinalizer() nothrow { - return currentGC.inFinalizer(); + return instance.inFinalizer(); } GC gc_getProxy() nothrow { - return currentGC; + return instance; } export { - void gc_setProxy( GC newGC ) + void gc_setProxy( GC proxy ) { - foreach(root; currentGC.rootIter) + foreach(root; instance.rootIter) { - newGC.addRoot(root); + proxy.addRoot(root); } - foreach(range; currentGC.rangeIter) + foreach(range; instance.rangeIter) { - newGC.addRange(range.pbot, range.ptop - range.pbot, range.ti); + proxy.addRange(range.pbot, range.ptop - range.pbot, range.ti); } - currentGC = newGC; + proxiedGC = instance; // remember initial GC to later remove roots + instance = proxy; } void gc_clrProxy() { - foreach(root; initialGC.rootIter) + foreach(root; proxiedGC.rootIter) { - currentGC.removeRoot(root); + instance.removeRoot(root); } - foreach(range; initialGC.rangeIter) + foreach(range; proxiedGC.rangeIter) { - currentGC.removeRange(range); + instance.removeRange(range); } - currentGC = initialGC; + instance = proxiedGC; + proxiedGC = null; } } } From 22f701060ce5b22abde68526276811c5925abace Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 27 Jun 2016 17:07:10 -0700 Subject: [PATCH 406/768] rt.util.random: add attributes --- src/rt/util/random.d | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/rt/util/random.d b/src/rt/util/random.d index bbe29ce000..69e4cfe2ee 100644 --- a/src/rt/util/random.d +++ b/src/rt/util/random.d @@ -8,15 +8,18 @@ module rt.util.random; struct Rand48 { -nothrow: private ulong rng_state; +@safe @nogc nothrow: + void defaultSeed() { import ctime = core.stdc.time : time; seed(cast(uint)ctime.time(null)); } +pure: + void seed(uint seedval) { assert(seedval); @@ -24,19 +27,19 @@ nothrow: popFront(); } - auto opCall() @nogc + auto opCall() { auto result = front; popFront(); return result; } - @property uint front() @nogc + @property uint front() { return cast(uint)(rng_state >> 16); } - void popFront() @nogc + void popFront() { immutable ulong a = 25214903917; immutable ulong c = 11; From b5f560195592e569443d3e1d4ccfed0dc611c7c5 Mon Sep 17 00:00:00 2001 From: Mathias Lang Date: Wed, 29 Jun 2016 22:37:01 +0200 Subject: [PATCH 407/768] Rename HACKING.md to CONTRIBUTING.md Github will recognize it and offer a link to it when submitting pull requests. See https://help.github.com/articles/setting-guidelines-for-repository-contributors and https://github.com/blog/1184-contributing-guidelines --- HACKING.md => CONTRIBUTING.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename HACKING.md => CONTRIBUTING.md (100%) diff --git a/HACKING.md b/CONTRIBUTING.md similarity index 100% rename from HACKING.md rename to CONTRIBUTING.md From c91a477996c1421baaab964940b975058ed0814c Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sun, 3 Jul 2016 23:51:31 +0200 Subject: [PATCH 408/768] OpenBSD: Add OpenBSD definitions to core.stdc Add OpenBSD definitions to core.stdc. --- src/core/stdc/config.d | 2 + src/core/stdc/errno.d | 96 ++++++++ src/core/stdc/fenv.d | 22 ++ src/core/stdc/locale.d | 17 ++ src/core/stdc/math.d | 505 ++++++++++++++++++++++++++++++++++++++ src/core/stdc/stdio.d | 184 ++++++++++++++ src/core/stdc/stdlib.d | 1 + src/core/stdc/string.d | 4 + src/core/stdc/tgmath.d | 538 +++++++++++++++++++++++++++++++++++++++++ src/core/stdc/time.d | 11 + src/core/stdc/wchar_.d | 9 + 11 files changed, 1389 insertions(+) diff --git a/src/core/stdc/config.d b/src/core/stdc/config.d index e243a1a2dc..f5f4504d3f 100644 --- a/src/core/stdc/config.d +++ b/src/core/stdc/config.d @@ -125,6 +125,8 @@ else version( DigitalMars ) alias real c_long_double; else version( FreeBSD ) alias real c_long_double; + else version( OpenBSD ) + alias real c_long_double; else version( Solaris ) alias real c_long_double; else version( Darwin ) diff --git a/src/core/stdc/errno.d b/src/core/stdc/errno.d index e780898ce3..40f503e3ba 100644 --- a/src/core/stdc/errno.d +++ b/src/core/stdc/errno.d @@ -1110,6 +1110,102 @@ else version( FreeBSD ) enum EPROTO = 92; /// Protocol error enum ELAST = 92; /// Must be equal largest errno } +else version( OpenBSD ) +{ + enum EPERM = 1; /// Operation not permitted + enum ENOENT = 2; /// No such file or directory + enum ESRCH = 3; /// No such process + enum EINTR = 4; /// Interrupted system call + enum EIO = 5; /// Input/output error + enum ENXIO = 6; /// Device not configured + enum E2BIG = 7; /// Argument list too long + enum ENOEXEC = 8; /// Exec format error + enum EBADF = 9; /// Bad file descriptor + enum ECHILD = 10; /// No child processes + enum EDEADLK = 11; /// Resource deadlock avoided + enum ENOMEM = 12; /// Cannot allocate memory + enum EACCES = 13; /// Permission denied + enum EFAULT = 14; /// Bad address + enum ENOTBLK = 15; /// Block device required + enum EBUSY = 16; /// Device busy + enum EEXIST = 17; /// File exists + enum EXDEV = 18; /// Cross-device link + enum ENODEV = 19; /// Operation not supported by device + enum ENOTDIR = 20; /// Not a directory + enum EISDIR = 21; /// Is a directory + enum EINVAL = 22; /// Invalid argument + enum ENFILE = 23; /// Too many open files in system + enum EMFILE = 24; /// Too many open files + enum ENOTTY = 25; /// Inappropriate ioctl for device + enum ETXTBSY = 26; /// Text file busy + enum EFBIG = 27; /// File too large + enum ENOSPC = 28; /// No space left on device + enum ESPIPE = 29; /// Illegal seek + enum EROFS = 30; /// Read-only file system + enum EMLINK = 31; /// Too many links + enum EPIPE = 32; /// Broken pipe + enum EDOM = 33; /// Numerical argument out of domain + enum ERANGE = 34; /// Result too large + enum EAGAIN = 35; /// Resource temporarily unavailable + enum EWOULDBLOCK = EAGAIN; /// Operation would block + enum EINPROGRESS = 36; /// Operation now in progress + enum EALREADY = 37; /// Operation already in progress + enum ENOTSOCK = 38; /// Socket operation on non-socket + enum EDESTADDRREQ = 39; /// Destination address required + enum EMSGSIZE = 40; /// Message too long + enum EPROTOTYPE = 41; /// Protocol wrong type for socket + enum ENOPROTOOPT = 42; /// Protocol not available + enum EPROTONOSUPPORT = 43; /// Protocol not supported + enum ESOCKTNOSUPPORT = 44; /// Socket type not supported + enum EOPNOTSUPP = 45; /// Operation not supported + enum EPFNOSUPPORT = 46; /// Protocol family not supported + enum EAFNOSUPPORT = 47; /// Address family not supported by protocol family + enum EADDRINUSE = 48; /// Address already in use + enum EADDRNOTAVAIL = 49; /// Can't assign requested address + enum ENETDOWN = 50; /// Network is down + enum ENETUNREACH = 51; /// Network is unreachable + enum ENETRESET = 52; /// Network dropped connection on reset + enum ECONNABORTED = 53; /// Software caused connection abort + enum ECONNRESET = 54; /// Connection reset by peer + enum ENOBUFS = 55; /// No buffer space available + enum EISCONN = 56; /// Socket is already connected + enum ENOTCONN = 57; /// Socket is not connected + enum ESHUTDOWN = 58; /// Can't send after socket shutdown + enum ETOOMANYREFS = 59; /// Too many references: can't splice + enum ETIMEDOUT = 60; /// Operation timed out + enum ECONNREFUSED = 61; /// Connection refused + enum ELOOP = 62; /// Too many levels of symbolic links + enum ENAMETOOLONG = 63; /// File name too long + enum EHOSTDOWN = 64; /// Host is down + enum EHOSTUNREACH = 65; /// No route to host + enum ENOTEMPTY = 66; /// Directory not empty + enum EPROCLIM = 67; /// Too many processes + enum EUSERS = 68; /// Too many users + enum EDQUOT = 69; /// Disk quota exceeded + enum ESTALE = 70; /// Stale NFS file handle + enum EREMOTE = 71; /// Too many levels of remote in path + enum EBADRPC = 72; /// RPC struct is bad + enum ERPCMISMATCH = 73; /// RPC version wrong + enum EPROGUNAVAIL = 74; /// RPC program not available + enum EPROGMISMATCH = 75; /// Program version wrong + enum EPROCUNAVAIL = 76; /// Bad procedure for program + enum ENOLCK = 77; /// No locks available + enum ENOSYS = 78; /// Function not implemented + enum EFTYPE = 79; /// Inappropriate file type or format + enum EAUTH = 80; /// Authentication error + enum ENEEDAUTH = 81; /// Need authenticator + enum EIPSEC = 82; /// IPsec processing failure + enum ENOATTR = 83; /// Attribute not found + enum EILSEQ = 84; /// Illegal byte sequence + enum ENOMEDIUM = 85; /// No medium found + enum EMEDIUMTYPE = 86; /// Wrong medium type + enum EOVERFLOW = 87; /// Value too large to be stored in data type + enum ECANCELED = 88; /// Operation canceled + enum EIDRM = 89; /// Identifier removed + enum ENOMSG = 90; /// No message of desired type + enum ENOTSUP = 91; /// Not supported + enum ELAST = 91; /// Must be equal largest errno +} else version (Solaris) { enum EPERM = 1 /** Not super-user */; diff --git a/src/core/stdc/fenv.d b/src/core/stdc/fenv.d index 1f7147d9ed..08a98bd6d8 100644 --- a/src/core/stdc/fenv.d +++ b/src/core/stdc/fenv.d @@ -196,6 +196,22 @@ else version ( FreeBSD ) alias ushort fexcept_t; } +else version ( OpenBSD ) +{ + struct fenv_t + { + struct __x87 + { + uint __control; + uint __status; + uint __tag; + uint[4] __others; + } + } + uint __mxcsr; + + alias fexcept_t = uint; +} else version( CRuntime_Bionic ) { version(X86) @@ -310,6 +326,12 @@ else version( FreeBSD ) /// enum FE_DFL_ENV = &__fe_dfl_env; } +else version( OpenBSD ) +{ + private extern const fenv_t __fe_dfl_env; + /// + enum FE_DFL_ENV = &__fe_dfl_env; +} else version( CRuntime_Bionic ) { private extern const fenv_t __fe_dfl_env; diff --git a/src/core/stdc/locale.d b/src/core/stdc/locale.d index d31591da52..8e602943f0 100644 --- a/src/core/stdc/locale.d +++ b/src/core/stdc/locale.d @@ -135,6 +135,23 @@ else version(FreeBSD) /// enum LC_MESSAGES = 6; } +else version(OpenBSD) +{ + /// + enum LC_ALL = 0; + /// + enum LC_COLLATE = 1; + /// + enum LC_CTYPE = 2; + /// + enum LC_MONETARY = 3; + /// + enum LC_NUMERIC = 4; + /// + enum LC_TIME = 5; + /// + enum LC_MESSAGES = 6; +} else version(CRuntime_Bionic) { enum diff --git a/src/core/stdc/math.d b/src/core/stdc/math.d index c3a3b80ad2..d5952efa76 100644 --- a/src/core/stdc/math.d +++ b/src/core/stdc/math.d @@ -53,6 +53,13 @@ version (FreeBSD) /// enum int FP_ILOGBNAN = int.max; } +else version (OpenBSD) +{ + /// + enum int FP_ILOGB0 = -int.max; + /// + enum int FP_ILOGBNAN = int.max; +} else version (CRuntime_Bionic) { /// @@ -816,6 +823,99 @@ else version( FreeBSD ) int signbit(real x) { return __signbit(x); } } } +else version( OpenBSD ) +{ + enum + { + /// + FP_INFINITE = 0x01, + /// + FP_NAN = 0x02, + /// + FP_NORMAL = 0x04, + /// + FP_SUBNORMAL = 0x08, + /// + FP_ZERO = 0x10, + } + + enum + { + /// + FP_FAST_FMA = 1, + /// + FP_FAST_FMAF = 1, + /// + FP_FAST_FMAL = 1, + } + + int __fpclassifyd(double); + int __fpclassifyf(float); + int __fpclassifyl(real); + int __isfinitef(float); + int __isfinite(double); + int __isfinitel(real); + int __isinff(float); + int __isinfl(real); + int __isnanl(real); + int __isnormalf(float); + int __isnormal(double); + int __isnormall(real); + int __signbit(double); + int __signbitf(float); + int __signbitl(real); + + extern (D) + { + //int fpclassify(real-floating x); + /// + int fpclassify(float x) { return __fpclassifyf(x); } + /// + int fpclassify(double x) { return __fpclassifyd(x); } + /// + int fpclassify(real x) { return __fpclassifyl(x); } + + //int isfinite(real-floating x); + /// + int isfinite(float x) { return __isfinitef(x); } + /// + int isfinite(double x) { return __isfinite(x); } + /// + int isfinite(real x) { return __isfinitel(x); } + + //int isinf(real-floating x); + /// + int isinf(float x) { return __isinff(x); } + /// + int isinf(double x) { return __isinfl(x); } + /// + int isinf(real x) { return __isinfl(x); } + + //int isnan(real-floating x); + /// + int isnan(float x) { return __isnanl(x); } + /// + int isnan(double x) { return __isnanl(x); } + /// + int isnan(real x) { return __isnanl(x); } + + //int isnormal(real-floating x); + /// + int isnormal(float x) { return __isnormalf(x); } + /// + int isnormal(double x) { return __isnormal(x); } + /// + int isnormal(real x) { return __isnormall(x); } + + //int signbit(real-floating x); + /// + int signbit(float x) { return __signbitf(x); } + /// + int signbit(double x) { return __signbit(x); } + /// + int signbit(real x) { return __signbit(x); } + } +} else version( Solaris ) { int __isnanf(float x); @@ -1853,6 +1953,411 @@ else version( FreeBSD ) /// float fmaf(float x, float y, float z); } +else version( OpenBSD ) +{ + /// + real acosl(real x); + /// + real asinl(real x); + /// + real atanl(real x); + /// + real atan2l(real y, real x); + /// + real cosl(real x); + /// + real sinl(real x); + /// + real tanl(real x); + /// + real acoshl(real x); + /// + real asinhl(real x); + /// + real atanhl(real x); + /// + real coshl(real x); + /// + real sinhl(real x); + /// + real tanhl(real x); + /// + real expl(real x); + /// + real exp2l(real x); + /// + real expm1l(real x); + /// + real frexpl(real value, int* exp); + /// + int ilogbl(real x); + /// + real ldexpl(real x, int exp); + /// + real logbl(real x); + /// + real logb10l(real x); + /// + real logb1pl(real x); + /// + real logb2l(real x); + /// + real logbl(real x); + /// + real modfl(real value, real *iptr); + /// + real scalbnl(real x, int n); + /// + real scalblnl(real x, c_long n); + /// + real cbrtl(real x); + /// + real fabsl(real x); + /// + real hypotl(real x, real y); + /// + real powl(real x, real y); + /// + real sqrtl(real x); + /// + real ceill(real x); + /// + real floorl(real x); + /// + real nearbyintl(real x); + /// + real rintl(real x); + /// + c_long lrintl(real x); + /// + long llrintl(real x); + /// + real roundl(real x); + /// + c_long lroundl(real x); + /// + long llroundl(real x); + /// + real truncl(real x); + /// + real fmodl(real x, real y); + /// + real remainderl(real x, real y); + /// + real remquol(real x, real y, int* quo); + /// + real copysignl(real x, real y); + /// + double nan(char* tagp); + /// + float nanf(char* tagp); + /// + real nanl(char* tagp); + /// + real nextafterl(real x, real y); + /// + real nexttowardl(real x, real y); + /// + real fdiml(real x, real y); + /// + real fmaxl(real x, real y); + /// + real fminl(real x, real y); + /// + real fmal(real x, real y, real z); + + /// + double acos(double x); + /// + float acosf(float x); + + /// + double asin(double x); + /// + float asinf(float x); + + /// + double atan(double x); + /// + float atanf(float x); + + /// + double atan2(double y, double x); + /// + float atan2f(float y, float x); + + /// + double cos(double x); + /// + float cosf(float x); + + /// + double sin(double x); + /// + float sinf(float x); + + /// + double tan(double x); + /// + float tanf(float x); + + /// + double acosh(double x); + /// + float acoshf(float x); + + /// + double asinh(double x); + /// + float asinhf(float x); + + /// + double atanh(double x); + /// + float atanhf(float x); + + /// + double cosh(double x); + /// + float coshf(float x); + + /// + double sinh(double x); + /// + float sinhf(float x); + + /// + double tanh(double x); + /// + float tanhf(float x); + + /// + double exp(double x); + /// + float expf(float x); + + /// + double exp2(double x); + /// + float exp2f(float x); + /// + real exp2l(real x); + + /// + double expm1(double x); + /// + float expm1f(float x); + + /// + double frexp(double value, int* exp); + /// + float frexpf(float value, int* exp); + + /// + int ilogb(double x); + /// + int ilogbf(float x); + + /// + double ldexp(double x, int exp); + /// + float ldexpf(float x, int exp); + + /// + double log(double x); + /// + float logf(float x); + + /// + double log10(double x); + /// + float log10f(float x); + + /// + double log1p(double x); + /// + float log1pf(float x); + + /// + double log2(double x); + /// + float log2f(float x); + /// + real log2l(real x); + + /// + double logb(double x); + /// + float logbf(float x); + + /// + double modf(double value, double* iptr); + /// + float modff(float value, float* iptr); + + /// + double scalbn(double x, int n); + /// + float scalbnf(float x, int n); + + /// + double scalbln(double x, c_long n); + /// + float scalblnf(float x, c_long n); + + /// + double cbrt(double x); + /// + float cbrtf(float x); + + /// + double fabs(double x); + /// + float fabsf(float x); + + /// + double hypot(double x, double y); + /// + float hypotf(float x, float y); + + /// + double pow(double x, double y); + /// + float powf(float x, float y); + + /// + double sqrt(double x); + /// + float sqrtf(float x); + + /// + double erf(double x); + /// + float erff(float x); + /// + real erfl(real x); + + /// + double erfc(double x); + /// + float erfcf(float x); + /// + real erfcl(real x); + + /// + double lgamma(double x); + /// + float lgammaf(float x); + /// + real lgammal(real x); + + /// + double tgamma(double x); + /// + float tgammaf(float x); + /// + real tgammal(real x); + + /// + double ceil(double x); + /// + float ceilf(float x); + + /// + double floor(double x); + /// + float floorf(float x); + + /// + double nearbyint(double x); + /// + float nearbyintf(float x); + + /// + double rint(double x); + /// + float rintf(float x); + + /// + c_long lrint(double x); + /// + c_long lrintf(float x); + + /// + long llrint(double x); + /// + long llrintf(float x); + + /// + double round(double x); + /// + float roundf(float x); + + /// + c_long lround(double x); + /// + c_long lroundf(float x); + + /// + long llround(double x); + /// + long llroundf(float x); + + /// + double trunc(double x); + /// + float truncf(float x); + + /// + double fmod(double x, double y); + /// + float fmodf(float x, float y); + + /// + double remainder(double x, double y); + /// + float remainderf(float x, float y); + + /// + double remquo(double x, double y, int* quo); + /// + float remquof(float x, float y, int* quo); + + /// + double copysign(double x, double y); + /// + float copysignf(float x, float y); + + /// + double nextafter(double x, double y); + /// + float nextafterf(float x, float y); + + /// + double nexttoward(double x, real y); + /// + float nexttowardf(float x, real y); + + /// + double fdim(double x, double y); + /// + float fdimf(float x, float y); + + /// + double fmax(double x, double y); + /// + float fmaxf(float x, float y); + + /// + double fmin(double x, double y); + /// + float fminf(float x, float y); + + /// + double fma(double x, double y, double z); + /// + float fmaf(float x, float y, float z); +} else version(CRuntime_Bionic) { // Bionic defines long double as 64 bits, same as double, so several long diff --git a/src/core/stdc/stdio.d b/src/core/stdc/stdio.d index 4a38f3ff38..d8e2c7a04d 100644 --- a/src/core/stdc/stdio.d +++ b/src/core/stdc/stdio.d @@ -34,6 +34,10 @@ private { import core.sys.posix.sys.types; } + else version (OpenBSD) + { + import core.sys.posix.sys.types; + } } extern (C): @@ -175,6 +179,36 @@ else version ( FreeBSD ) long _mbstateL; } } +else version ( OpenBSD ) +{ + enum + { + /// + BUFSIZ = 1024, + /// + EOF = -1, + /// + FOPEN_MAX = 20, + /// + FILENAME_MAX = 1024, + /// + TMP_MAX = 0x7fffffff, + /// + L_tmpnam = 1024 + } + + struct __sbuf + { + ubyte *_base; + int _size; + } + + union __mbstate_t // + { + char[128] __mbstate8; + long __mbstateL; + } +} else version (Solaris) { enum @@ -401,6 +435,44 @@ else version( FreeBSD ) /// alias shared(__sFILE) FILE; } +else version( OpenBSD ) +{ + /// + alias fpos_t = off_t; + + /// + struct __sFILE + { + ubyte* _p; + int _r; + int _w; + short _flags; + short _file; + __sbuf _bf; + int _lbfsize; + + void* _cookie; + int function(void*) _close; + int function(void*, char*, int) _read; + fpos_t function(void*, fpos_t, int) _seek; + int function(void*, in char*, int) _write; + + __sbuf _ext; + ubyte* _up; + int _ur; + + ubyte[3] _ubuf; + ubyte[1] _nbuf; + + __sbuf _lb; + + int _blksize; + fpos_t _offset; + } + + /// + alias shared(__sFILE) FILE; +} else version (Solaris) { import core.stdc.wchar_ : __mbstate_t; @@ -669,6 +741,27 @@ else version( FreeBSD ) /// alias __stderrp stderr; } +else version( OpenBSD ) +{ + enum + { + /// + _IOFBF = 0, + /// + _IOLBF = 1, + /// + _IONBF = 2, + } + + private extern shared FILE[] __sF; + + /// + shared stdin = &__sF[0]; + /// + shared stdout = &__sF[1]; + /// + shared stderr = &__sF[2]; +} else version (Solaris) { enum @@ -1065,6 +1158,97 @@ else version( FreeBSD ) /// int vsnprintf(char* s, size_t n, in char* format, va_list arg); } +else version( OpenBSD ) +{ + // No unsafe pointer manipulation. + @trusted + { + /// + void rewind(FILE*); + } + @trusted private + { + /// + pure void clearerr(FILE*); + alias __clearerr = clearerr; + /// + pure int feof(FILE*); + alias __feof = feof; + /// + pure int ferror(FILE*); + alias __ferror = ferror; + /// + int fileno(FILE*); + alias __fileno = fileno; + } + + enum __SLBF = 0x0001; + enum __SNBF = 0x0002; + enum __SRD = 0x0004; + enum __SWR = 0x0008; + enum __SRW = 0x0010; + enum __SEOF = 0x0020; + enum __SERR = 0x0040; + enum __SMBF = 0x0080; + enum __SAPP = 0x0100; + enum __SSTR = 0x0200; + enum __SOPT = 0x0400; + enum __SNPT = 0x0800; + enum __SOFF = 0x1000; + enum __SMOD = 0x2000; + enum __SALC = 0x4000; + enum __SIGN = 0x8000; + + extern int __isthreaded; + + extern (D) + { + void __sclearerr(FILE* p) + { + p._flags &= ~(__SERR|__SEOF); + } + + int __sfeof(FILE* p) + { + return (p._flags & __SEOF) != 0; + } + + int __sferror(FILE* p) + { + return (p._flags & __SERR) != 0; + } + + int __sfileno(FILE* p) + { + return p._file; + } + + int clearerr(FILE* file) + { + return !__isthreaded ? __sclearerr(file) : __clearerr(file); + } + + int feof(FILE* file) + { + return !__isthreaded ? __sfeof(file) : __feof(file); + } + + int ferror(FILE* file) + { + return !__isthreaded ? __sferror(file) : __ferror(file); + } + + int fileno(FILE* file) + { + return !__isthreaded ? __sfileno(file) : __fileno(file); + } + } + + /// + int snprintf(char* s, size_t n, in char* format, ...); + /// + int vsnprintf(char* s, size_t n, in char* format, va_list arg); +} else version (Solaris) { // No unsafe pointer manipulation. diff --git a/src/core/stdc/stdlib.d b/src/core/stdc/stdlib.d index d59881363c..86cbafb5ed 100644 --- a/src/core/stdc/stdlib.d +++ b/src/core/stdc/stdlib.d @@ -75,6 +75,7 @@ version(Windows) enum RAND_MAX = 0x7fff; else version(CRuntime_Glibc) enum RAND_MAX = 0x7fffffff; else version(Darwin) enum RAND_MAX = 0x7fffffff; else version(FreeBSD) enum RAND_MAX = 0x7fffffff; +else version(OpenBSD) enum RAND_MAX = 0x7fffffff; else version(Solaris) enum RAND_MAX = 0x7fff; else version(CRuntime_Bionic) enum RAND_MAX = 0x7fffffff; else static assert( false, "Unsupported platform" ); diff --git a/src/core/stdc/string.d b/src/core/stdc/string.d index 4503fe6eb5..abec39b449 100644 --- a/src/core/stdc/string.d +++ b/src/core/stdc/string.d @@ -89,6 +89,10 @@ else version (FreeBSD) { int strerror_r(int errnum, char* buf, size_t buflen); } +else version (OpenBSD) +{ + int strerror_r(int errnum, char* buf, size_t buflen); +} else version (Solaris) { int strerror_r(int errnum, char* buf, size_t buflen); diff --git a/src/core/stdc/tgmath.d b/src/core/stdc/tgmath.d index 802f27e6b7..d6fe71975f 100644 --- a/src/core/stdc/tgmath.d +++ b/src/core/stdc/tgmath.d @@ -567,6 +567,544 @@ version( FreeBSD ) /// alias core.stdc.complex.cprojl cproj; +// alias core.stdc.complex.creal creal; +// alias core.stdc.complex.crealf creal; +// alias core.stdc.complex.creall creal; +} +else version( OpenBSD ) +{ + /// + alias core.stdc.math.acos acos; + /// + alias core.stdc.math.acosf acos; + /// + alias core.stdc.math.acosl acos; + + /// + alias core.stdc.complex.cacos acos; + /// + alias core.stdc.complex.cacosf acos; + /// + alias core.stdc.complex.cacosl acos; + + /// + alias core.stdc.math.asin asin; + /// + alias core.stdc.math.asinf asin; + /// + alias core.stdc.math.asinl asin; + + /// + alias core.stdc.complex.casin asin; + /// + alias core.stdc.complex.casinf asin; + /// + alias core.stdc.complex.casinl asin; + + /// + alias core.stdc.math.atan atan; + /// + alias core.stdc.math.atanf atan; + /// + alias core.stdc.math.atanl atan; + + /// + alias core.stdc.complex.catan atan; + /// + alias core.stdc.complex.catanf atan; + /// + alias core.stdc.complex.catanl atan; + + /// + alias core.stdc.math.atan2 atan2; + /// + alias core.stdc.math.atan2f atan2; + /// + alias core.stdc.math.atan2l atan2; + + /// + alias core.stdc.math.cos cos; + /// + alias core.stdc.math.cosf cos; + /// + alias core.stdc.math.cosl cos; + + /// + alias core.stdc.complex.ccos cos; + /// + alias core.stdc.complex.ccosf cos; + /// + alias core.stdc.complex.ccosl cos; + + /// + alias core.stdc.math.sin sin; + /// + alias core.stdc.math.sinf sin; + /// + alias core.stdc.math.sinl sin; + + /// + alias core.stdc.complex.csin csin; + /// + alias core.stdc.complex.csinf csin; + /// + alias core.stdc.complex.csinl csin; + + /// + alias core.stdc.math.tan tan; + /// + alias core.stdc.math.tanf tan; + /// + alias core.stdc.math.tanl tan; + + /// + alias core.stdc.complex.ctan tan; + /// + alias core.stdc.complex.ctanf tan; + /// + alias core.stdc.complex.ctanl tan; + + /// + alias core.stdc.math.acosh acosh; + /// + alias core.stdc.math.acoshf acosh; + /// + alias core.stdc.math.acoshl acosh; + + /// + alias core.stdc.complex.cacosh acosh; + /// + alias core.stdc.complex.cacoshf acosh; + /// + alias core.stdc.complex.cacoshl acosh; + + /// + alias core.stdc.math.asinh asinh; + /// + alias core.stdc.math.asinhf asinh; + /// + alias core.stdc.math.asinhl asinh; + + /// + alias core.stdc.complex.casinh asinh; + /// + alias core.stdc.complex.casinhf asinh; + /// + alias core.stdc.complex.casinhl asinh; + + /// + alias core.stdc.math.atanh atanh; + /// + alias core.stdc.math.atanhf atanh; + /// + alias core.stdc.math.atanhl atanh; + + /// + alias core.stdc.complex.catanh atanh; + /// + alias core.stdc.complex.catanhf atanh; + /// + alias core.stdc.complex.catanhl atanh; + + /// + alias core.stdc.math.cosh cosh; + /// + alias core.stdc.math.coshf cosh; + /// + alias core.stdc.math.coshl cosh; + + /// + alias core.stdc.complex.ccosh cosh; + /// + alias core.stdc.complex.ccoshf cosh; + /// + alias core.stdc.complex.ccoshl cosh; + + /// + alias core.stdc.math.sinh sinh; + /// + alias core.stdc.math.sinhf sinh; + /// + alias core.stdc.math.sinhl sinh; + + /// + alias core.stdc.complex.csinh sinh; + /// + alias core.stdc.complex.csinhf sinh; + /// + alias core.stdc.complex.csinhl sinh; + + /// + alias core.stdc.math.tanh tanh; + /// + alias core.stdc.math.tanhf tanh; + /// + alias core.stdc.math.tanhl tanh; + + /// + alias core.stdc.complex.ctanh tanh; + /// + alias core.stdc.complex.ctanhf tanh; + /// + alias core.stdc.complex.ctanhl tanh; + + /// + alias core.stdc.math.exp exp; + /// + alias core.stdc.math.expf exp; + /// + alias core.stdc.math.expl exp; + + /// + alias core.stdc.complex.cexp exp; + /// + alias core.stdc.complex.cexpf exp; + /// + alias core.stdc.complex.cexpl exp; + + /// + alias core.stdc.math.exp2 exp2; + /// + alias core.stdc.math.exp2f exp2; + /// + alias core.stdc.math.exp2l exp2; + + /// + alias core.stdc.math.expm1 expm1; + /// + alias core.stdc.math.expm1f expm1; + /// + alias core.stdc.math.expm1l expm1; + + /// + alias core.stdc.math.frexp frexp; + /// + alias core.stdc.math.frexpf frexp; + /// + alias core.stdc.math.frexpl frexp; + + /// + alias core.stdc.math.ilogb ilogb; + /// + alias core.stdc.math.ilogbf ilogb; + /// + alias core.stdc.math.ilogbl ilogb; + + /// + alias core.stdc.math.ldexp ldexp; + /// + alias core.stdc.math.ldexpf ldexp; + /// + alias core.stdc.math.ldexpl ldexp; + + /// + alias core.stdc.math.log log; + /// + alias core.stdc.math.logf log; + /// + alias core.stdc.math.logl log; + + /// + alias core.stdc.complex.clog log; + /// + alias core.stdc.complex.clogf log; + /// + alias core.stdc.complex.clogl log; + + /// + alias core.stdc.math.log10 log10; + /// + alias core.stdc.math.log10f log10; + /// + alias core.stdc.math.log10l log10; + + /// + alias core.stdc.math.log1p log1p; + /// + alias core.stdc.math.log1pf log1p; + /// + alias core.stdc.math.log1pl log1p; + + /// + alias core.stdc.math.log2 log2; + /// + alias core.stdc.math.log2f log2; + /// + alias core.stdc.math.log2l log2; + + /// + alias core.stdc.math.logb logb; + /// + alias core.stdc.math.logbf logb; + /// + alias core.stdc.math.logbl logb; + + /// + alias core.stdc.math.fmod fmod; + /// + alias core.stdc.math.fmodf fmod; + /// + alias core.stdc.math.fmodl fmod; + + /// + alias core.stdc.math.scalbn scalbn; + /// + alias core.stdc.math.scalbnf scalbn; + /// + alias core.stdc.math.scalbnl scalbn; + + /// + alias core.stdc.math.scalbln scalbln; + /// + alias core.stdc.math.scalblnf scalbln; + /// + alias core.stdc.math.scalblnl scalbln; + + /// + alias core.stdc.math.cbrt cbrt; + /// + alias core.stdc.math.cbrtf cbrt; + /// + alias core.stdc.math.cbrtl cbrt; + + /// + alias core.stdc.math.fabs fabs; + /// + alias core.stdc.math.fabsf fabs; + /// + alias core.stdc.math.fabsl fabs; + + /// + alias core.stdc.complex.cabs fabs; + /// + alias core.stdc.complex.cabsf fabs; + /// + alias core.stdc.complex.cabsl fabs; + + /// + alias core.stdc.math.hypot hypot; + /// + alias core.stdc.math.hypotf hypot; + /// + alias core.stdc.math.hypotl hypot; + + /// + alias core.stdc.math.pow pow; + /// + alias core.stdc.math.powf pow; + /// + alias core.stdc.math.powl pow; + + /// + alias core.stdc.complex.cpow pow; + /// + alias core.stdc.complex.cpowf pow; + /// + alias core.stdc.complex.cpowl pow; + + /// + alias core.stdc.math.sqrt sqrt; + /// + alias core.stdc.math.sqrtf sqrt; + /// + alias core.stdc.math.sqrtl sqrt; + + /// + alias core.stdc.complex.csqrt sqrt; + /// + alias core.stdc.complex.csqrtf sqrt; + /// + alias core.stdc.complex.csqrtl sqrt; + + /// + alias core.stdc.math.erf erf; + /// + alias core.stdc.math.erff erf; + /// + alias core.stdc.math.erfl erf; + + /// + alias core.stdc.math.erfc erfc; + /// + alias core.stdc.math.erfcf erfc; + /// + alias core.stdc.math.erfcl erfc; + + /// + alias core.stdc.math.lgamma lgamma; + /// + alias core.stdc.math.lgammaf lgamma; + /// + alias core.stdc.math.lgammal lgamma; + + /// + alias core.stdc.math.tgamma tgamma; + /// + alias core.stdc.math.tgammaf tgamma; + /// + alias core.stdc.math.tgammal tgamma; + + /// + alias core.stdc.math.ceil ceil; + /// + alias core.stdc.math.ceilf ceil; + /// + alias core.stdc.math.ceill ceil; + + /// + alias core.stdc.math.floor floor; + /// + alias core.stdc.math.floorf floor; + /// + alias core.stdc.math.floorl floor; + + /// + alias core.stdc.math.nearbyint nearbyint; + /// + alias core.stdc.math.nearbyintf nearbyint; + /// + alias core.stdc.math.nearbyintl nearbyint; + + /// + alias core.stdc.math.rint rint; + /// + alias core.stdc.math.rintf rint; + /// + alias core.stdc.math.rintl rint; + + /// + alias core.stdc.math.lrint lrint; + /// + alias core.stdc.math.lrintf lrint; + /// + alias core.stdc.math.lrintl lrint; + + /// + alias core.stdc.math.llrint llrint; + /// + alias core.stdc.math.llrintf llrint; + /// + alias core.stdc.math.llrintl llrint; + + /// + alias core.stdc.math.round round; + /// + alias core.stdc.math.roundf round; + /// + alias core.stdc.math.roundl round; + + /// + alias core.stdc.math.lround lround; + /// + alias core.stdc.math.lroundf lround; + /// + alias core.stdc.math.lroundl lround; + + /// + alias core.stdc.math.llround llround; + /// + alias core.stdc.math.llroundf llround; + /// + alias core.stdc.math.llroundl llround; + + /// + alias core.stdc.math.trunc trunc; + /// + alias core.stdc.math.truncf trunc; + /// + alias core.stdc.math.truncl trunc; + + /// + alias core.stdc.math.remainder remainder; + /// + alias core.stdc.math.remainderf remainder; + /// + alias core.stdc.math.remainderl remainder; + + /// + alias core.stdc.math.remquo remquo; + /// + alias core.stdc.math.remquof remquo; + /// + alias core.stdc.math.remquol remquo; + + /// + alias core.stdc.math.copysign copysign; + /// + alias core.stdc.math.copysignf copysign; + /// + alias core.stdc.math.copysignl copysign; + + /// + alias core.stdc.math.nextafter nextafter; + /// + alias core.stdc.math.nextafterf nextafter; + /// + alias core.stdc.math.nextafterl nextafter; + + /// + alias core.stdc.math.nexttoward nexttoward; + /// + alias core.stdc.math.nexttowardf nexttoward; + /// + alias core.stdc.math.nexttowardl nexttoward; + + /// + alias core.stdc.math.fdim fdim; + /// + alias core.stdc.math.fdimf fdim; + /// + alias core.stdc.math.fdiml fdim; + + /// + alias core.stdc.math.fmax fmax; + /// + alias core.stdc.math.fmaxf fmax; + /// + alias core.stdc.math.fmaxl fmax; + + /// + alias core.stdc.math.fmin fmin; + /// + alias core.stdc.math.fmin fmin; + /// + alias core.stdc.math.fminl fmin; + + /// + alias core.stdc.math.fma fma; + /// + alias core.stdc.math.fmaf fma; + /// + alias core.stdc.math.fmal fma; + + /// + alias core.stdc.complex.carg carg; + /// + alias core.stdc.complex.cargf carg; + /// + alias core.stdc.complex.cargl carg; + + /// + alias core.stdc.complex.cimag cimag; + /// + alias core.stdc.complex.cimagf cimag; + /// + alias core.stdc.complex.cimagl cimag; + + /// + alias core.stdc.complex.conj conj; + /// + alias core.stdc.complex.conjf conj; + /// + alias core.stdc.complex.conjl conj; + + /// + alias core.stdc.complex.cproj cproj; + /// + alias core.stdc.complex.cprojf cproj; + /// + alias core.stdc.complex.cprojl cproj; + // alias core.stdc.complex.creal creal; // alias core.stdc.complex.crealf creal; // alias core.stdc.complex.creall creal; diff --git a/src/core/stdc/time.d b/src/core/stdc/time.d index 2f47caab78..57ae25a064 100644 --- a/src/core/stdc/time.d +++ b/src/core/stdc/time.d @@ -95,6 +95,10 @@ else version( FreeBSD ) { enum clock_t CLOCKS_PER_SEC = 128; } +else version( OpenBSD ) +{ + enum clock_t CLOCKS_PER_SEC = 100; +} else version (CRuntime_Glibc) { enum clock_t CLOCKS_PER_SEC = 1_000_000; @@ -158,6 +162,13 @@ else version( FreeBSD ) /// extern __gshared const(char)*[2] tzname; // non-standard } +else version( OpenBSD ) +{ + /// + void tzset(); // non-standard + /// + extern __gshared const(char)*[2] tzname; // non-standard +} else version (Solaris) { /// diff --git a/src/core/stdc/wchar_.d b/src/core/stdc/wchar_.d index e14b9e3695..1d4c2af1ff 100644 --- a/src/core/stdc/wchar_.d +++ b/src/core/stdc/wchar_.d @@ -40,6 +40,15 @@ version( CRuntime_Glibc ) ___value __value; } } +else version (OpenBSD) +{ + union __mbstate_t + { + char[128] __mbstate8; + int64_t __mbstateL; + } + alias mbstate_t = __mbstate_t; +} else version (Solaris) { /// From ac5a0c588482d48a1cb50af992d33f65bc4f4768 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 5 Jul 2016 17:06:33 -0700 Subject: [PATCH 409/768] rt.util.utf: remove 'return' --- src/rt/util/utf.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rt/util/utf.d b/src/rt/util/utf.d index 76aebe3b67..7d2641380e 100644 --- a/src/rt/util/utf.d +++ b/src/rt/util/utf.d @@ -583,7 +583,7 @@ void validate(S)(in S s) /* =================== Conversion to UTF8 ======================= */ @safe pure nothrow @nogc -char[] toUTF8(return out char[4] buf, dchar c) +char[] toUTF8(char[] buf, dchar c) in { assert(isValidDchar(c)); @@ -692,7 +692,7 @@ string toUTF8(in dchar[] s) /* =================== Conversion to UTF16 ======================= */ @safe pure nothrow @nogc -wchar[] toUTF16(return out wchar[2] buf, dchar c) +wchar[] toUTF16(wchar[] buf, dchar c) in { assert(isValidDchar(c)); From a89d395737c83a9efaafbafc3657e930c86629d9 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Wed, 6 Apr 2016 00:04:33 +0200 Subject: [PATCH 410/768] Add new module for Linux header file sys/auxv. This header file provides access to the auxiliary vector. It was added to glibc version 2.16. See https://lwn.net/Articles/519085/ for some background information. Also adds the missing AT_HWCAP2 index to the elf module. --- mak/COPY | 1 + src/core/sys/linux/elf.d | 2 + src/core/sys/linux/sys/auxv.d | 163 ++++++++++++++++++++++++++++++++++ win32.mak | 3 + win64.mak | 3 + 5 files changed, 172 insertions(+) create mode 100644 src/core/sys/linux/sys/auxv.d diff --git a/mak/COPY b/mak/COPY index 9d8d75ca2a..d0bf541310 100644 --- a/mak/COPY +++ b/mak/COPY @@ -92,6 +92,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\tipc.d \ $(IMPDIR)\core\sys\linux\unistd.d \ \ + $(IMPDIR)\core\sys\linux\sys\auxv.d \ $(IMPDIR)\core\sys\linux\sys\inotify.d \ $(IMPDIR)\core\sys\linux\sys\mman.d \ $(IMPDIR)\core\sys\linux\sys\signalfd.d \ diff --git a/src/core/sys/linux/elf.d b/src/core/sys/linux/elf.d index 235806a38a..f467371ed5 100644 --- a/src/core/sys/linux/elf.d +++ b/src/core/sys/linux/elf.d @@ -823,6 +823,8 @@ enum AT_BASE_PLATFORM = 24; enum AT_RANDOM = 25; +enum AT_HWCAP2 = 26; + enum AT_EXECFN = 31; enum AT_SYSINFO = 32; enum AT_SYSINFO_EHDR = 33; diff --git a/src/core/sys/linux/sys/auxv.d b/src/core/sys/linux/sys/auxv.d new file mode 100644 index 0000000000..8166f4cc46 --- /dev/null +++ b/src/core/sys/linux/sys/auxv.d @@ -0,0 +1,163 @@ +/** + * D header file for GNU/Linux. + * + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Authors: Kai Nacke + */ +module core.sys.linux.sys.auxv; + +import core.stdc.config; + +version (linux): +extern (C): + +c_ulong getauxval(c_ulong type) nothrow pure @nogc @system; + +version(PPC) +{ + // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/powerpc/bits/hwcap.h + + enum PPC_FEATURE_32 = 0x80000000; + enum PPC_FEATURE_64 = 0x40000000; + enum PPC_FEATURE_601_INSTR = 0x20000000; + enum PPC_FEATURE_HAS_ALTIVEC = 0x10000000; + enum PPC_FEATURE_HAS_FPU = 0x08000000; + enum PPC_FEATURE_HAS_MMU = 0x04000000; + enum PPC_FEATURE_HAS_4xxMAC = 0x02000000; + enum PPC_FEATURE_UNIFIED_CACHE = 0x01000000; + enum PPC_FEATURE_HAS_SPE = 0x00800000; + enum PPC_FEATURE_HAS_EFP_SINGLE = 0x00400000; + enum PPC_FEATURE_HAS_EFP_DOUBLE = 0x00200000; + enum PPC_FEATURE_NO_TB = 0x00100000; + enum PPC_FEATURE_POWER4 = 0x00080000; + enum PPC_FEATURE_POWER5 = 0x00040000; + enum PPC_FEATURE_POWER5_PLUS = 0x00020000; + enum PPC_FEATURE_CELL_BE = 0x00010000; + enum PPC_FEATURE_BOOKE = 0x00008000; + enum PPC_FEATURE_SMT = 0x00004000; + + enum PPC_FEATURE_ICACHE_SNOOP = 0x00002000; + enum PPC_FEATURE_ARCH_2_05 = 0x00001000; + enum PPC_FEATURE_PA6T = 0x00000800; + enum PPC_FEATURE_HAS_DFP = 0x00000400; + enum PPC_FEATURE_POWER6_EXT = 0x00000200; + enum PPC_FEATURE_ARCH_2_06 = 0x00000100; + enum PPC_FEATURE_HAS_VSX = 0x00000080; + enum PPC_FEATURE_PSERIES_PERFMON_COMPAT = 0x00000040; + enum PPC_FEATURE_TRUE_LE = 0x00000002; + enum PPC_FEATURE_PPC_LE = 0x00000001; + + enum PPC_FEATURE2_ARCH_2_07 = 0x80000000; + enum PPC_FEATURE2_HAS_HTM = 0x40000000; + enum PPC_FEATURE2_HAS_DSCR = 0x20000000; + enum PPC_FEATURE2_HAS_EBB = 0x10000000; + enum PPC_FEATURE2_HAS_ISEL = 0x08000000; + enum PPC_FEATURE2_HAS_TAR = 0x04000000; + enum PPC_FEATURE2_HAS_VEC_CRYPTO = 0x02000000; +} +else version(PPC64) +{ + // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/powerpc/bits/hwcap.h + + enum PPC_FEATURE_32 = 0x80000000; + enum PPC_FEATURE_64 = 0x40000000; + enum PPC_FEATURE_601_INSTR = 0x20000000; + enum PPC_FEATURE_HAS_ALTIVEC = 0x10000000; + enum PPC_FEATURE_HAS_FPU = 0x08000000; + enum PPC_FEATURE_HAS_MMU = 0x04000000; + enum PPC_FEATURE_HAS_4xxMAC = 0x02000000; + enum PPC_FEATURE_UNIFIED_CACHE = 0x01000000; + enum PPC_FEATURE_HAS_SPE = 0x00800000; + enum PPC_FEATURE_HAS_EFP_SINGLE = 0x00400000; + enum PPC_FEATURE_HAS_EFP_DOUBLE = 0x00200000; + enum PPC_FEATURE_NO_TB = 0x00100000; + enum PPC_FEATURE_POWER4 = 0x00080000; + enum PPC_FEATURE_POWER5 = 0x00040000; + enum PPC_FEATURE_POWER5_PLUS = 0x00020000; + enum PPC_FEATURE_CELL_BE = 0x00010000; + enum PPC_FEATURE_BOOKE = 0x00008000; + enum PPC_FEATURE_SMT = 0x00004000; + + enum PPC_FEATURE_ICACHE_SNOOP = 0x00002000; + enum PPC_FEATURE_ARCH_2_05 = 0x00001000; + enum PPC_FEATURE_PA6T = 0x00000800; + enum PPC_FEATURE_HAS_DFP = 0x00000400; + enum PPC_FEATURE_POWER6_EXT = 0x00000200; + enum PPC_FEATURE_ARCH_2_06 = 0x00000100; + enum PPC_FEATURE_HAS_VSX = 0x00000080; + enum PPC_FEATURE_PSERIES_PERFMON_COMPAT = 0x00000040; + enum PPC_FEATURE_TRUE_LE = 0x00000002; + enum PPC_FEATURE_PPC_LE = 0x00000001; + + enum PPC_FEATURE2_ARCH_2_07 = 0x80000000; + enum PPC_FEATURE2_HAS_HTM = 0x40000000; + enum PPC_FEATURE2_HAS_DSCR = 0x20000000; + enum PPC_FEATURE2_HAS_EBB = 0x10000000; + enum PPC_FEATURE2_HAS_ISEL = 0x08000000; + enum PPC_FEATURE2_HAS_TAR = 0x04000000; + enum PPC_FEATURE2_HAS_VEC_CRYPTO = 0x02000000; +} +else version(SPARC) +{ + // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/sparc/bits/hwcap.h + + enum HWCAP_SPARC_FLUSH = 0x00000001; + enum HWCAP_SPARC_STBAR = 0x00000002; + enum HWCAP_SPARC_SWAP = 0x00000004; + enum HWCAP_SPARC_MULDIV = 0x00000008; + enum HWCAP_SPARC_V9 = 0x00000010; + enum HWCAP_SPARC_ULTRA3 = 0x00000020; + enum HWCAP_SPARC_BLKINIT = 0x00000040; + enum HWCAP_SPARC_N2 = 0x00000080; + enum HWCAP_SPARC_MUL32 = 0x00000100; + enum HWCAP_SPARC_DIV32 = 0x00000200; + enum HWCAP_SPARC_FSMULD = 0x00000400; + enum HWCAP_SPARC_V8PLUS = 0x00000800; + enum HWCAP_SPARC_POPC = 0x00001000; + enum HWCAP_SPARC_VIS = 0x00002000; + enum HWCAP_SPARC_VIS2 = 0x00004000; + enum HWCAP_SPARC_ASI_BLK_INIT = 0x00008000; + enum HWCAP_SPARC_FMAF = 0x00010000; + enum HWCAP_SPARC_VIS3 = 0x00020000; + enum HWCAP_SPARC_HPC = 0x00040000; + enum HWCAP_SPARC_RANDOM = 0x00080000; + enum HWCAP_SPARC_TRANS = 0x00100000; + enum HWCAP_SPARC_FJFMAU = 0x00200000; + enum HWCAP_SPARC_IMA = 0x00400000; + enum HWCAP_SPARC_ASI_CACHE_SPARING = 0x00800000; + enum HWCAP_SPARC_PAUSE = 0x01000000; + enum HWCAP_SPARC_CBCOND = 0x02000000; + enum HWCAP_SPARC_CRYPTO = 0x04000000; +} +else version(SPARC64) +{ + // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/sparc/bits/hwcap.h + + enum HWCAP_SPARC_FLUSH = 0x00000001; + enum HWCAP_SPARC_STBAR = 0x00000002; + enum HWCAP_SPARC_SWAP = 0x00000004; + enum HWCAP_SPARC_MULDIV = 0x00000008; + enum HWCAP_SPARC_V9 = 0x00000010; + enum HWCAP_SPARC_ULTRA3 = 0x00000020; + enum HWCAP_SPARC_BLKINIT = 0x00000040; + enum HWCAP_SPARC_N2 = 0x00000080; + enum HWCAP_SPARC_MUL32 = 0x00000100; + enum HWCAP_SPARC_DIV32 = 0x00000200; + enum HWCAP_SPARC_FSMULD = 0x00000400; + enum HWCAP_SPARC_V8PLUS = 0x00000800; + enum HWCAP_SPARC_POPC = 0x00001000; + enum HWCAP_SPARC_VIS = 0x00002000; + enum HWCAP_SPARC_VIS2 = 0x00004000; + enum HWCAP_SPARC_ASI_BLK_INIT = 0x00008000; + enum HWCAP_SPARC_FMAF = 0x00010000; + enum HWCAP_SPARC_VIS3 = 0x00020000; + enum HWCAP_SPARC_HPC = 0x00040000; + enum HWCAP_SPARC_RANDOM = 0x00080000; + enum HWCAP_SPARC_TRANS = 0x00100000; + enum HWCAP_SPARC_FJFMAU = 0x00200000; + enum HWCAP_SPARC_IMA = 0x00400000; + enum HWCAP_SPARC_ASI_CACHE_SPARING = 0x00800000; + enum HWCAP_SPARC_PAUSE = 0x01000000; + enum HWCAP_SPARC_CBCOND = 0x02000000; + enum HWCAP_SPARC_CRYPTO = 0x04000000; +} diff --git a/win32.mak b/win32.mak index a1996f3f27..44da7aa8da 100644 --- a/win32.mak +++ b/win32.mak @@ -464,6 +464,9 @@ $(IMPDIR)\core\sys\linux\tipc.d : src\core\sys\linux\tipc.d $(IMPDIR)\core\sys\linux\unistd.d : src\core\sys\linux\unistd.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\auxv.d : src\core\sys\linux\sys\auxv.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\inotify.d : src\core\sys\linux\sys\inotify.d copy $** $@ diff --git a/win64.mak b/win64.mak index 84c8838933..85a0ec304a 100644 --- a/win64.mak +++ b/win64.mak @@ -472,6 +472,9 @@ $(IMPDIR)\core\sys\linux\tipc.d : src\core\sys\linux\tipc.d $(IMPDIR)\core\sys\linux\unistd.d : src\core\sys\linux\unistd.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\auxv.d : src\core\sys\linux\sys\auxv.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\inotify.d : src\core\sys\linux\sys\inotify.d copy $** $@ From 8238a9cd7e8ea54007b958ee8bf9f7ca643e144d Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 9 Jul 2016 10:52:34 +0200 Subject: [PATCH 411/768] fix --DRT-gcopt string argument parsing - would match more than just an identifier, e.g. 'gc:conservative profile:1' was parsed as gc='conservative profile:1' - was restricted to known GC names, instead we now check that one GC was initialized - parse const(char)[] arguments as simple identifier [_a-zA-Z][_a-zA-Z0-9]* --- src/gc/config.d | 33 +++++++++++--------------------- src/gc/proxy.d | 8 ++++++++ test/exceptions/Makefile | 3 ++- test/exceptions/src/unknown_gc.d | 5 +++++ 4 files changed, 26 insertions(+), 23 deletions(-) create mode 100644 test/exceptions/src/unknown_gc.d diff --git a/src/gc/config.d b/src/gc/config.d index 36a1e0a77f..978b74b50d 100644 --- a/src/gc/config.d +++ b/src/gc/config.d @@ -26,7 +26,7 @@ struct Config { bool disable; // start disabled ubyte profile; // enable profiling with summary when terminating program - string gc = "conservative"; // select gc implementation conservative|manual + const(char)[] gc = "conservative"; // select gc implementation conservative|manual size_t initReserve; // initial reserve (MB) size_t minPoolSize = 1; // initial and minimum pool size (MB) @@ -190,27 +190,10 @@ bool parse(T:const(char)[])(const(char)[] optname, ref const(char)[] str, ref T in { assert(str.length); } body { - bool findNext(string next) - { - if(next.length>str.length) - return false; - - return (next.length == str.length)? (next == str):(isspace(str[next.length+1])&&(next == str[0..next.length])); - } - - if(findNext("manual")) - { - res = "manual"; - } - else if(findNext("conservative")) - { - res = "conservative"; - } - else - { - return parseError("conservative or manual", optname, str); - } - + // [_a-zA-Z][_a-zA-Z0-9]*] + if (str[0] != '_' && !isalpha(str[0])) + return parseError("an identifier", optname, str); + res = str[0 .. $ - str[1 .. $].find!(c => c != '_' && !isalnum(c)).length]; str = str[res.length .. $]; return true; } @@ -274,4 +257,10 @@ unittest assert(conf.parseOptions("help")); assert(conf.parseOptions("help profile:1")); assert(conf.parseOptions("help profile:1 help")); + + assert(conf.parseOptions("gc:manual") && conf.gc == "manual"); + assert(conf.parseOptions("gc:conservative help profile:1") && conf.gc == "conservative" && conf.profile == 1); + + // the config parse doesn't know all available GC names, so should accept unknown ones + assert(conf.parseOptions("gc:whatever")); } diff --git a/src/gc/proxy.d b/src/gc/proxy.d index 5e2d4b4549..777fe81421 100644 --- a/src/gc/proxy.d +++ b/src/gc/proxy.d @@ -42,6 +42,14 @@ extern (C) config.initialize(); ManualGC.initialize(instance); ConservativeGC.initialize(instance); + if (instance is null) + { + import core.stdc.stdio : fprintf, stderr; + import core.stdc.stdlib : exit; + + fprintf(stderr, "No GC was initialized, please recheck the name of the selected GC ('%.*s').\n", cast(int)config.gc.length, config.gc.ptr); + exit(1); + } // NOTE: The GC must initialize the thread library // before its first collection. diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index 072b8c6de2..b2ba0971d5 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -1,6 +1,6 @@ include ../common.mak -TESTS:=stderr_msg unittest_assert invalid_memory_operation +TESTS:=stderr_msg unittest_assert invalid_memory_operation unknown_gc ifeq ($(OS)-$(BUILD),linux-debug) TESTS:=$(TESTS) line_trace endif @@ -24,6 +24,7 @@ $(ROOT)/line_trace.done: $(ROOT)/line_trace $(ROOT)/stderr_msg.done: STDERR_EXP="stderr_msg msg" $(ROOT)/unittest_assert.done: STDERR_EXP="unittest_assert msg" $(ROOT)/invalid_memory_operation.done: STDERR_EXP="InvalidMemoryOperationError" +$(ROOT)/unknown_gc.done: STDERR_EXP="'unknowngc'" $(ROOT)/%.done: $(ROOT)/% @echo Testing $* $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) diff --git a/test/exceptions/src/unknown_gc.d b/test/exceptions/src/unknown_gc.d new file mode 100644 index 0000000000..43e1e6453f --- /dev/null +++ b/test/exceptions/src/unknown_gc.d @@ -0,0 +1,5 @@ +extern(C) __gshared string[] rt_options = [ "gcopt=gc:unknowngc" ]; + +void main() +{ +} From 59b46b745eb10bfe33825957f2bb438364cda9e4 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sun, 10 Jul 2016 14:06:11 +0200 Subject: [PATCH 412/768] OpenBSD: Additions for core.posix.* modules, part 1 Add OpenBSD definitions to the core.posix.* modules. --- mak/COPY | 2 + src/core/sys/openbsd/dlfcn.d | 30 ++++++++++++ src/core/sys/posix/dirent.d | 39 ++++++++++++++++ src/core/sys/posix/dlfcn.d | 21 +++++++++ src/core/sys/posix/fcntl.d | 69 +++++++++++++++++++++++++++ src/core/sys/posix/grp.d | 21 +++++++++ src/core/sys/posix/netdb.d | 91 ++++++++++++++++++++++++++++++++++++ src/core/sys/posix/poll.d | 31 ++++++++++++ win32.mak | 3 ++ win64.mak | 3 ++ 10 files changed, 310 insertions(+) create mode 100644 src/core/sys/openbsd/dlfcn.d diff --git a/mak/COPY b/mak/COPY index d0bf541310..58ed65e7b1 100644 --- a/mak/COPY +++ b/mak/COPY @@ -100,6 +100,8 @@ COPY=\ $(IMPDIR)\core\sys\linux\sys\sysinfo.d \ $(IMPDIR)\core\sys\linux\sys\xattr.d \ \ + $(IMPDIR)\core\sys\openbsd\dlfcn.d \ + \ $(IMPDIR)\core\sys\osx\execinfo.d \ $(IMPDIR)\core\sys\osx\pthread.d \ \ diff --git a/src/core/sys/openbsd/dlfcn.d b/src/core/sys/openbsd/dlfcn.d new file mode 100644 index 0000000000..a8e8565cb4 --- /dev/null +++ b/src/core/sys/openbsd/dlfcn.d @@ -0,0 +1,30 @@ +/** + * D header file for OpenBSD. + * + * $(LINK2 http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/include/link_elf.h?rev=1.6&content-type=text/x-cvsweb-markup, dlfcn.h) + */ +module core.sys.openbsd.dlfcn; + +public import core.sys.posix.dlfcn; + +version (OpenBSD): +extern (C): +nothrow: + +static assert(RTLD_LAZY == 1); +static assert(RTLD_NOW == 2); +static assert(RTLD_GLOBAL == 0x100); +static assert(RTLD_LOCAL == 0); +enum RTLD_TRACE = 0x200; + +enum RTLD_NEXT = cast(void *)-1; +enum RTLD_DEFAULT = cast(void *)-2; +enum RTLD_SELF = cast(void *)-3; + +enum DL_GETERRNO = 1; +enum DL_SETTHREADLCK = 2; +enum DL_SETBINDLCK = 3; + +enum DL_LAZY = RTLD_LAZY; + +int dlctl(void *, int, void *); diff --git a/src/core/sys/posix/dirent.d b/src/core/sys/posix/dirent.d index 7bf2e14e22..0b332157af 100644 --- a/src/core/sys/posix/dirent.d +++ b/src/core/sys/posix/dirent.d @@ -162,6 +162,36 @@ else version( FreeBSD ) dirent* readdir(DIR*); } +else version( OpenBSD ) +{ + enum + { + DT_UNKNOWN = 0, + DT_FIFO = 1, + DT_CHR = 2, + DT_DIR = 4, + DT_BLK = 6, + DT_REG = 8, + DT_LNK = 10, + DT_SOCK = 12, + } + + align(4) + struct dirent + { + ino_t d_fileno; + off_t d_off; + ushort d_reclen; + ubyte d_type; + ubyte d_namlen; + ubyte[4] __d_padding; + char[256] d_name; + } + + alias void* DIR; + + dirent* readdir(DIR*); +} else version (Solaris) { struct dirent @@ -291,6 +321,10 @@ else version( FreeBSD ) { int readdir_r(DIR*, dirent*, dirent**); } +else version( OpenBSD ) +{ + int readdir_r(DIR*, dirent*, dirent**); +} else version (Solaris) { static if (__USE_LARGEFILE64) @@ -330,6 +364,11 @@ else version( FreeBSD ) void seekdir(DIR*, c_long); c_long telldir(DIR*); } +else version( OpenBSD ) +{ + void seekdir(DIR*, c_long); + c_long telldir(DIR*); +} else version (Darwin) { version( OSX ) diff --git a/src/core/sys/posix/dlfcn.d b/src/core/sys/posix/dlfcn.d index 7b0ca1b0d8..4dc27aec16 100644 --- a/src/core/sys/posix/dlfcn.d +++ b/src/core/sys/posix/dlfcn.d @@ -174,6 +174,27 @@ else version( FreeBSD ) void* dli_saddr; } } +else version( OpenBSD ) +{ + enum RTLD_LAZY = 1; + enum RTLD_NOW = 2; + enum RTLD_GLOBAL = 0x100; + enum RTLD_LOCAL = 0; + + int dlclose(void*); + char* dlerror(); + void* dlopen(in char*, int); + void* dlsym(void*, in char*); + int dladdr(const(void)* addr, Dl_info* info); + + struct Dl_info + { + const(char)* dli_fname; + void* dli_fbase; + const(char)* dli_sname; + void* dli_saddr; + } +} else version( Solaris ) { enum RTLD_LAZY = 1; diff --git a/src/core/sys/posix/fcntl.d b/src/core/sys/posix/fcntl.d index 0102f4d202..3e12f81e6c 100644 --- a/src/core/sys/posix/fcntl.d +++ b/src/core/sys/posix/fcntl.d @@ -382,6 +382,75 @@ else version( FreeBSD ) enum AT_SYMLINK_NOFOLLOW = 0x200; enum AT_FDCWD = -100; } +else version( OpenBSD ) +{ + enum F_DUPFD = 0; + enum F_GETFD = 1; + enum F_SETFD = 2; + enum F_GETFL = 3; + enum F_SETFL = 4; + enum F_GETOWN = 5; + enum F_SETOWN = 6; + enum F_GETLK = 7; + enum F_SETLK = 8; + enum F_SETLKW = 9; + enum F_DUPFD_CLOEXEC= 10; + enum F_ISATTY = 11; + + enum FD_CLOEXEC = 1; + + enum F_RDLCK = 1; + enum F_UNLCK = 2; + enum F_WRLCK = 3; + + enum O_CREAT = 0x0200; + enum O_EXCL = 0x0800; + enum O_NOCTTY = 0x8000; + enum O_TRUNC = 0x0400; + + enum O_RDONLY = 0x0000; + enum O_WRONLY = 0x0001; + enum O_RDWR = 0x0002; + enum O_ACCMODE = 0x0003; + enum O_SHLOCK = 0x0010; + enum O_EXLOCK = 0x0020; + enum O_ASYNC = 0x0040; + enum O_FSYNC = 0x0080; + enum O_NOFOLLOW = 0x0100; + + enum O_NONBLOCK = 0x0004; + enum O_APPEND = 0x0008; + enum O_SYNC = 0x0080; + enum O_DSYNC = O_SYNC; + enum O_RSYNC = O_SYNC; + + enum O_CLOEXEC = 0x10000; + enum O_DIRECTORY = 0x20000; + + enum LOCK_SH = 0x01; + enum LOCK_EX = 0x02; + enum LOCK_NB = 0x04; + enum LOCK_UN = 0x08; + + struct flock + { + off_t l_start; + off_t l_len; + pid_t l_pid; + short l_type; + short l_whence; + } + + int creat(in char*, mode_t); + int open(in char*, int, ...); + + enum AT_FDCWD = -100; + + enum AT_EACCESS = 0x01; + enum AT_SYMLINK_NOFOLLOW = 0x02; + enum AT_SYMLINK_FOLLOW = 0x04; + enum AT_REMOVEDIR = 0x08; +} else version (Solaris) { enum F_DUPFD = 0; diff --git a/src/core/sys/posix/grp.d b/src/core/sys/posix/grp.d index 6f7cf6c472..43c6c030ba 100644 --- a/src/core/sys/posix/grp.d +++ b/src/core/sys/posix/grp.d @@ -77,6 +77,16 @@ else version( FreeBSD ) char** gr_mem; } } +else version( OpenBSD ) +{ + struct group + { + char* gr_name; + char* gr_passwd; + gid_t gr_gid; + char** gr_mem; + } +} else version( Solaris ) { struct group @@ -128,6 +138,11 @@ else version( FreeBSD ) int getgrnam_r(in char*, group*, char*, size_t, group**); int getgrgid_r(gid_t, group*, char*, size_t, group**); } +else version( OpenBSD ) +{ + int getgrnam_r(in char*, group*, char*, size_t, group**); + int getgrgid_r(gid_t, group*, char*, size_t, group**); +} else version( Solaris ) { int getgrnam_r(in char*, group*, char*, int, group**); @@ -168,6 +183,12 @@ else version( FreeBSD ) @trusted void endgrent(); @trusted void setgrent(); } +else version( OpenBSD ) +{ + group* getgrent(); + @trusted void endgrent(); + @trusted void setgrent(); +} else version( Solaris ) { group* getgrent(); diff --git a/src/core/sys/posix/netdb.d b/src/core/sys/posix/netdb.d index cabf5cc2a7..be88fa4535 100644 --- a/src/core/sys/posix/netdb.d +++ b/src/core/sys/posix/netdb.d @@ -396,6 +396,97 @@ else version( FreeBSD ) enum EAI_SYSTEM = 11; enum EAI_OVERFLOW = 14; } +else version( OpenBSD ) +{ + struct hostent + { + char* h_name; + char** h_aliases; + int h_addrtype; + int h_length; + char** h_addr_list; + extern (D) char* h_addr() @property { return h_addr_list[0]; } // non-standard + } + + struct netent + { + char* n_name; + char** n_aliases; + int n_addrtype; + in_addr_t n_net; + } + + struct protoent + { + char* p_name; + char** p_aliases; + int p_proto; + } + + struct servent + { + char* s_name; + char** s_aliases; + int s_port; + char* s_proto; + } + + enum IPPORT_RESERVED = 1024; + + //h_errno + + enum NETDB_INTERNAL = -1; + enum NETDB_SUCCESS = 0; + enum HOST_NOT_FOUND = 1; + enum NO_DATA = 4; + enum NO_RECOVERY = 3; + enum TRY_AGAIN = 2; + + struct addrinfo + { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + socklen_t ai_addrlen; + char* ai_canonname; + sockaddr* ai_addr; + addrinfo* ai_next; + } + + enum AI_PASSIVE = 0x1; + enum AI_CANONNAME = 0x2; + enum AI_NUMERICHOST = 0x4; + enum AI_EXT = 0x8; + enum AI_NUMERICSERV = 0x10; + enum AI_FQDN = 0x20; + enum AI_ADDRCONFIG = 0x40; + enum AI_MASK = AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_NUMERICSERV | AI_FQDN | AI_ADDRCONFIG; + + enum NI_NUMERICHOST = 1; + enum NI_NUMERICSERV = 2; + enum NI_NOFQDN = 4; + enum NI_NAMEREQD = 8; + enum NI_DGRAM = 16; + //enum NI_NUMERICSCOPE = 32; + enum NI_MAXHOST = 256; // non-standard + enum NI_MAXSERV = 32; // non-standard + + enum EAI_NONAME = -1; + enum EAI_BADFLAGS = -2; + enum EAI_AGAIN = -3; + enum EAI_FAIL = -4; + enum EAI_NODATA = -5; + enum EAI_FAMILY = -6; + enum EAI_SOCKTYPE = -7; + enum EAI_SERVICE = -8; + enum EAI_ADDRFAMILY = -9; + enum EAI_MEMORY = -10; + enum EAI_SYSTEM = -11; + enum EAI_BADHINTS = -12; + enum EAI_PROTOCOL = -13; + enum EAI_OVERFLOW = -14; +} else version (Solaris) { struct hostent diff --git a/src/core/sys/posix/poll.d b/src/core/sys/posix/poll.d index d5fcb56221..dc3ead60ce 100644 --- a/src/core/sys/posix/poll.d +++ b/src/core/sys/posix/poll.d @@ -152,6 +152,37 @@ else version( FreeBSD ) int poll(pollfd*, nfds_t, int); } +else version( OpenBSD ) +{ + alias uint nfds_t; + + struct pollfd + { + int fd; + short events; + short revents; + }; + + enum + { + POLLIN = 0x0001, + POLLPRI = 0x0002, + POLLOUT = 0x0004, + POLLRDNORM = 0x0040, + POLLNORM = POLLRDNORM, + POLLWRNORM = POLLOUT, + POLLRDBAND = 0x0080, + POLLWRBAND = 0x0100, + POLLERR = 0x0008, + POLLHUP = 0x0010, + POLLNVAL = 0x0020, + + POLLSTANDARD = (POLLIN|POLLPRI|POLLOUT|POLLRDNORM|POLLRDBAND| + POLLWRBAND|POLLERR|POLLHUP|POLLNVAL) + } + + int poll(pollfd*, nfds_t, int); +} else version( Solaris ) { alias c_ulong nfds_t; diff --git a/win32.mak b/win32.mak index 44da7aa8da..109a44adc8 100644 --- a/win32.mak +++ b/win32.mak @@ -485,6 +485,9 @@ $(IMPDIR)\core\sys\linux\sys\sysinfo.d : src\core\sys\linux\sys\sysinfo.d $(IMPDIR)\core\sys\linux\sys\xattr.d : src\core\sys\linux\sys\xattr.d copy $** $@ +$(IMPDIR)\core\sys\openbsd\dlfcn.d : src\core\sys\openbsd\dlfcn.d + copy $** $@ + $(IMPDIR)\core\sys\osx\execinfo.d : src\core\sys\osx\execinfo.d copy $** $@ diff --git a/win64.mak b/win64.mak index 85a0ec304a..ddded63a08 100644 --- a/win64.mak +++ b/win64.mak @@ -493,6 +493,9 @@ $(IMPDIR)\core\sys\linux\sys\sysinfo.d : src\core\sys\linux\sys\sysinfo.d $(IMPDIR)\core\sys\linux\sys\xattr.d : src\core\sys\linux\sys\xattr.d copy $** $@ +$(IMPDIR)\core\sys\openbsd\dlfcn.d : src\core\sys\openbsd\dlfcn.d + copy $** $@ + $(IMPDIR)\core\sys\osx\execinfo.d : src\core\sys\osx\execinfo.d copy $** $@ From cf72eec5613a40bf85d3c6489fc0c5eb02858e60 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Mon, 11 Jul 2016 23:05:22 +0200 Subject: [PATCH 413/768] Check for overflow before incrementing length in insertBack --- src/rt/util/container/array.d | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/rt/util/container/array.d b/src/rt/util/container/array.d index 9f31f35e84..457e6502ee 100644 --- a/src/rt/util/container/array.d +++ b/src/rt/util/container/array.d @@ -9,6 +9,8 @@ module rt.util.container.array; static import common = rt.util.container.common; +import core.exception : onOutOfMemoryError; + struct Array(T) { nothrow: @@ -81,8 +83,17 @@ nothrow: void insertBack()(auto ref T val) { - length = length + 1; - back = val; + import core.checkedint : addu; + + bool overflow = false; + size_t newlength = addu(length, 1, overflow); + if (!overflow) + { + length = newlength; + back = val; + } + else + onOutOfMemoryError(); } void popBack() @@ -181,3 +192,17 @@ unittest ary.popBack(); assert(cnt == 0); } + +unittest +{ + import core.exception; + try + { + // Overflow ary.length. + auto ary = Array!size_t(null, -1); + ary.insertBack(0); + } + catch(OutOfMemoryError) + { + } +} From fab25e59b2e91279e8359f2e8dbb7ed8e2eb39de Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Tue, 12 Jul 2016 23:35:24 +0200 Subject: [PATCH 414/768] Also add test for overflowing requested size for xrealloc --- src/rt/util/container/array.d | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/rt/util/container/array.d b/src/rt/util/container/array.d index 457e6502ee..9dcee943f8 100644 --- a/src/rt/util/container/array.d +++ b/src/rt/util/container/array.d @@ -33,12 +33,22 @@ nothrow: @property void length(size_t nlength) { - if (nlength < length) - foreach (ref val; _ptr[nlength .. length]) common.destroy(val); - _ptr = cast(T*)common.xrealloc(_ptr, nlength * T.sizeof); - if (nlength > length) - foreach (ref val; _ptr[length .. nlength]) common.initialize(val); - _length = nlength; + import core.checkedint : mulu; + + bool overflow = false; + size_t reqsize = mulu(T.sizeof, nlength, overflow); + if (!overflow) + { + if (nlength < length) + foreach (ref val; _ptr[nlength .. length]) common.destroy(val); + _ptr = cast(T*)common.xrealloc(_ptr, reqsize); + if (nlength > length) + foreach (ref val; _ptr[length .. nlength]) common.initialize(val); + _length = nlength; + } + else + onOutOfMemoryError(); + } @property bool empty() const @@ -205,4 +215,13 @@ unittest catch(OutOfMemoryError) { } + try + { + // Overflow requested memory size for common.xrealloc(). + auto ary = Array!size_t(null, -2); + ary.insertBack(0); + } + catch(OutOfMemoryError) + { + } } From 0816ae37b633a37629f76a013299ec0375fc0b2e Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 14 Jul 2016 03:18:45 +0200 Subject: [PATCH 415/768] parse identifier until next terminator --- src/gc/config.d | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gc/config.d b/src/gc/config.d index 978b74b50d..bec333dd2a 100644 --- a/src/gc/config.d +++ b/src/gc/config.d @@ -190,11 +190,11 @@ bool parse(T:const(char)[])(const(char)[] optname, ref const(char)[] str, ref T in { assert(str.length); } body { - // [_a-zA-Z][_a-zA-Z0-9]*] - if (str[0] != '_' && !isalpha(str[0])) + auto tail = str.find!(c => c == ':' || c == '=' || c == ' '); + res = str[0 .. $ - tail.length]; + if (!res.length) return parseError("an identifier", optname, str); - res = str[0 .. $ - str[1 .. $].find!(c => c != '_' && !isalnum(c)).length]; - str = str[res.length .. $]; + str = tail; return true; } @@ -259,6 +259,7 @@ unittest assert(conf.parseOptions("help profile:1 help")); assert(conf.parseOptions("gc:manual") && conf.gc == "manual"); + assert(conf.parseOptions("gc:my-gc~modified") && conf.gc == "my-gc~modified"); assert(conf.parseOptions("gc:conservative help profile:1") && conf.gc == "conservative" && conf.profile == 1); // the config parse doesn't know all available GC names, so should accept unknown ones From eacf2ca609b9903e7953604b479c9f9c1db39bda Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 14 Jul 2016 03:20:02 +0200 Subject: [PATCH 416/768] parse options as string - use inout(char)[] as parse input and as output for identifier parsing - convert parse template overloads that only work w/ a single type to functions --- src/gc/config.d | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gc/config.d b/src/gc/config.d index bec333dd2a..7cb5b1e6c8 100644 --- a/src/gc/config.d +++ b/src/gc/config.d @@ -26,7 +26,7 @@ struct Config { bool disable; // start disabled ubyte profile; // enable profiling with summary when terminating program - const(char)[] gc = "conservative"; // select gc implementation conservative|manual + string gc = "conservative"; // select gc implementation conservative|manual size_t initReserve; // initial reserve (MB) size_t minPoolSize = 1; // initial and minimum pool size (MB) @@ -74,7 +74,7 @@ struct Config cast(long)maxPoolSize, cast(long)incPoolSize, heapSizeFactor); } - bool parseOptions(const(char)[] opt) + bool parseOptions(string opt) { opt = skip!isspace(opt); while (opt.length) @@ -138,7 +138,7 @@ inout(char)[] find(alias pred)(inout(char)[] str) return null; } -bool parse(T:size_t)(const(char)[] optname, ref const(char)[] str, ref T res) +bool parse(T:size_t)(const(char)[] optname, ref inout(char)[] str, ref T res) in { assert(str.length); } body { @@ -155,7 +155,7 @@ body return true; } -bool parse(T:bool)(const(char)[] optname, ref const(char)[] str, ref T res) +bool parse(const(char)[] optname, ref inout(char)[] str, ref bool res) in { assert(str.length); } body { @@ -169,7 +169,7 @@ body return true; } -bool parse(T:float)(const(char)[] optname, ref const(char)[] str, ref T res) +bool parse(const(char)[] optname, ref inout(char)[] str, ref float res) in { assert(str.length); } body { @@ -186,7 +186,7 @@ body return true; } -bool parse(T:const(char)[])(const(char)[] optname, ref const(char)[] str, ref T res) +bool parse(const(char)[] optname, ref inout(char)[] str, ref inout(char)[] res) in { assert(str.length); } body { From 3d2eb1abeec9613de33c9a9de00abff7f4da6369 Mon Sep 17 00:00:00 2001 From: Atila Neves Date: Sat, 25 Jun 2016 15:53:37 +0200 Subject: [PATCH 417/768] test_runner can run all tests as well as individual modules --- src/test_runner.d | 70 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 50 insertions(+), 20 deletions(-) diff --git a/src/test_runner.d b/src/test_runner.d index 46584d5fe4..0d6120d1cf 100644 --- a/src/test_runner.d +++ b/src/test_runner.d @@ -10,47 +10,77 @@ ModuleInfo* getModuleInfo(string name) bool tester() { - assert(Runtime.args.length == 2); - auto name = Runtime.args[1]; - immutable pkg = ".package"; - immutable pkgLen = pkg.length; + return Runtime.args.length > 1 ? testModules() : testAll(); +} - debug string mode = "debug"; - else string mode = "release"; - static if ((void*).sizeof == 4) mode ~= "32"; - else static if ((void*).sizeof == 8) mode ~= "64"; - else static assert(0, "You must be from the future!"); +string mode; - if (name.length > pkgLen && name[$ - pkgLen .. $] == pkg) - name = name[0 .. $ - pkgLen]; - if (auto fp = getModuleInfo(name).unitTest) +bool testModules() +{ + bool ret = true; + foreach(name; Runtime.args[1..$]) + { + immutable pkg = ".package"; + immutable pkgLen = pkg.length; + + if (name.length > pkgLen && name[$ - pkgLen .. $] == pkg) + name = name[0 .. $ - pkgLen]; + + doTest(getModuleInfo(name), ret); + } + + return ret; +} + +bool testAll() +{ + bool ret = true; + foreach(moduleInfo; ModuleInfo) { + doTest(moduleInfo, ret); + } + + return ret; +} + + +void doTest(ModuleInfo* moduleInfo, ref bool ret) +{ + if (auto fp = moduleInfo.unitTest) + { + auto name = moduleInfo.name; try { immutable t0 = MonoTime.currTime; fp(); printf("%.3fs PASS %.*s %.*s\n", - (MonoTime.currTime - t0).total!"msecs" / 1000.0, - cast(uint)mode.length, mode.ptr, - cast(uint)name.length, name.ptr); + (MonoTime.currTime - t0).total!"msecs" / 1000.0, + cast(uint)mode.length, mode.ptr, + cast(uint)name.length, name.ptr); } catch (Throwable e) { auto msg = e.toString(); printf("****** FAIL %.*s %.*s\n%.*s\n", - cast(uint)mode.length, mode.ptr, - cast(uint)name.length, name.ptr, - cast(uint)msg.length, msg.ptr); - return false; + cast(uint)mode.length, mode.ptr, + cast(uint)name.length, name.ptr, + cast(uint)msg.length, msg.ptr); + ret = false; } } - return true; } + shared static this() { Runtime.moduleUnitTester = &tester; + + debug mode = "debug"; + else mode = "release"; + static if ((void*).sizeof == 4) mode ~= "32"; + else static if ((void*).sizeof == 8) mode ~= "64"; + else static assert(0, "You must be from the future!"); } void main() From 940af5c6b103b671c785477e50e2e02e73dea620 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sun, 17 Jul 2016 19:48:08 +0200 Subject: [PATCH 418/768] OpenBSD: Additions for core.sys.posix.*, part 2 Add OpenBSD definitions to core.sys.posix.* modules. --- src/core/sys/posix/pthread.d | 124 +++++++++++++++++ src/core/sys/posix/pwd.d | 27 ++++ src/core/sys/posix/sched.d | 21 +++ src/core/sys/posix/semaphore.d | 11 ++ src/core/sys/posix/setjmp.d | 51 +++++++ src/core/sys/posix/signal.d | 247 +++++++++++++++++++++++++++++++++ src/core/sys/posix/stdio.d | 14 ++ src/core/sys/posix/stdlib.d | 56 ++++++++ 8 files changed, 551 insertions(+) diff --git a/src/core/sys/posix/pthread.d b/src/core/sys/posix/pthread.d index b4cb78a037..f282991fde 100644 --- a/src/core/sys/posix/pthread.d +++ b/src/core/sys/posix/pthread.d @@ -218,6 +218,46 @@ else version( FreeBSD ) enum PTHREAD_COND_INITIALIZER = null; enum PTHREAD_RWLOCK_INITIALIZER = null; } +else version( OpenBSD ) +{ + enum + { + PTHREAD_DETACHED = 0x1, + PTHREAD_INHERIT_SCHED = 0x4, + PTHREAD_NOFLOAT = 0x8, + + PTHREAD_CREATE_DETACHED = PTHREAD_DETACHED, + PTHREAD_CREATE_JOINABLE = 0, + PTHREAD_EXPLICIT_SCHED = 0, + } + + enum + { + PTHREAD_PROCESS_PRIVATE = 0, + PTHREAD_PROCESS_SHARED = 1, + } + + enum + { + PTHREAD_CANCEL_ENABLE = 0, + PTHREAD_CANCEL_DISABLE = 1, + PTHREAD_CANCEL_DEFERRED = 0, + PTHREAD_CANCEL_ASYNCHRONOUS = 2, + } + + enum PTHREAD_CANCELED = cast(void*) 1; + + enum + { + PTHREAD_NEEDS_INIT = 0, + PTHREAD_DONE_INIT = 1, + } + + enum PTHREAD_MUTEX_INITIALIZER = null; + //enum PTHREAD_ONCE_INIT = { PTHREAD_NEEDS_INIT, PTHREAD_MUTEX_INITIALIZER }; + enum PTHREAD_COND_INITIALIZER = null; + enum PTHREAD_RWLOCK_INITIALIZER = null; +} else version (Solaris) { enum @@ -371,6 +411,11 @@ else version( FreeBSD ) void __pthread_cleanup_push_imp(_pthread_cleanup_routine, void*, _pthread_cleanup_info*); void __pthread_cleanup_pop_imp(int); } +else version ( OpenBSD ) +{ + void pthread_cleanup_push(void function(void*), void*); + void pthread_cleanup_pop(int); +} else version (Solaris) { alias void function(void*) _pthread_cleanup_routine; @@ -516,6 +561,18 @@ else version( FreeBSD ) int pthread_barrierattr_init(pthread_barrierattr_t*); int pthread_barrierattr_setpshared(pthread_barrierattr_t*, int); } +else version( OpenBSD ) +{ + enum PTHREAD_BARRIER_SERIAL_THREAD = -1; + + int pthread_barrier_destroy(pthread_barrier_t*); + int pthread_barrier_init(pthread_barrier_t*, in pthread_barrierattr_t*, uint); + int pthread_barrier_wait(pthread_barrier_t*); + int pthread_barrierattr_destroy(pthread_barrierattr_t*); + int pthread_barrierattr_getpshared(in pthread_barrierattr_t*, int*); + int pthread_barrierattr_init(pthread_barrierattr_t*); + int pthread_barrierattr_setpshared(pthread_barrierattr_t*, int); +} else version (Darwin) { } @@ -574,6 +631,14 @@ else version( FreeBSD ) int pthread_spin_trylock(pthread_spinlock_t*); int pthread_spin_unlock(pthread_spinlock_t*); } +else version( OpenBSD ) +{ + int pthread_spin_init(pthread_spinlock_t*, int); + int pthread_spin_destroy(pthread_spinlock_t*); + int pthread_spin_lock(pthread_spinlock_t*); + int pthread_spin_trylock(pthread_spinlock_t*); + int pthread_spin_unlock(pthread_spinlock_t*); +} else version (Darwin) { } @@ -657,6 +722,25 @@ else version( FreeBSD ) int pthread_mutexattr_settype(pthread_mutexattr_t*, int) @trusted; int pthread_setconcurrency(int); } +else version( OpenBSD ) +{ + enum + { + PTHREAD_MUTEX_ERRORCHECK = 1, + PTHREAD_MUTEX_RECURSIVE = 2, + PTHREAD_MUTEX_NORMAL = 3, + PTHREAD_MUTEX_ADAPTIVE_NP = 4, + PTHREAD_MUTEX_TYPE_MAX + } + enum PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_ERRORCHECK; + + int pthread_attr_getguardsize(in pthread_attr_t*, size_t*); + int pthread_attr_setguardsize(pthread_attr_t*, size_t); + int pthread_getconcurrency(); + int pthread_mutexattr_gettype(pthread_mutexattr_t*, int*); + int pthread_mutexattr_settype(pthread_mutexattr_t*, int) @trusted; + int pthread_setconcurrency(int); +} else version (Solaris) { enum @@ -707,6 +791,10 @@ else version( FreeBSD ) { int pthread_getcpuclockid(pthread_t, clockid_t*); } +else version( OpenBSD ) +{ + int pthread_getcpuclockid(pthread_t, clockid_t*); +} else version (Darwin) { } @@ -749,6 +837,12 @@ else version( FreeBSD ) int pthread_rwlock_timedrdlock(pthread_rwlock_t*, in timespec*); int pthread_rwlock_timedwrlock(pthread_rwlock_t*, in timespec*); } +else version( OpenBSD ) +{ + int pthread_mutex_timedlock(pthread_mutex_t*, in timespec*); + int pthread_rwlock_timedrdlock(pthread_rwlock_t*, in timespec*); + int pthread_rwlock_timedwrlock(pthread_rwlock_t*, in timespec*); +} else version (Solaris) { int pthread_mutex_timedlock(pthread_mutex_t*, in timespec*); @@ -885,6 +979,24 @@ else version( FreeBSD ) int pthread_setschedparam(pthread_t, int, sched_param*); // int pthread_setschedprio(pthread_t, int); // not implemented } +else version( OpenBSD ) +{ + enum + { + PTHREAD_SCOPE_PROCESS = 0, + PTHREAD_SCOPE_SYSTEM = 0x2 + } + + int pthread_attr_getinheritsched(in pthread_attr_t*, int*); + int pthread_attr_getschedpolicy(in pthread_attr_t*, int*); + int pthread_attr_getscope(in pthread_attr_t*, int*); + int pthread_attr_setinheritsched(pthread_attr_t*, int); + int pthread_attr_setschedpolicy(pthread_attr_t*, int); + int pthread_attr_setscope(in pthread_attr_t*, int); + int pthread_getschedparam(pthread_t, int*, sched_param*); + int pthread_setschedparam(pthread_t, int, sched_param*); + // int pthread_setschedprio(pthread_t, int); // not implemented +} else version (Solaris) { enum @@ -962,6 +1074,15 @@ else version( FreeBSD ) int pthread_attr_setstackaddr(pthread_attr_t*, void*); int pthread_attr_setstacksize(pthread_attr_t*, size_t); } +else version( OpenBSD ) +{ + int pthread_attr_getstack(in pthread_attr_t*, void**, size_t*); + int pthread_attr_getstackaddr(in pthread_attr_t*, void**); + int pthread_attr_getstacksize(in pthread_attr_t*, size_t*); + int pthread_attr_setstack(pthread_attr_t*, void*, size_t); + int pthread_attr_setstackaddr(pthread_attr_t*, void*); + int pthread_attr_setstacksize(pthread_attr_t*, size_t); +} else version (Solaris) { int pthread_attr_getstack(in pthread_attr_t*, void**, size_t*); @@ -1015,6 +1136,9 @@ else version( FreeBSD ) int pthread_rwlockattr_getpshared(in pthread_rwlockattr_t*, int*); int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int); } +else version( OpenBSD ) +{ +} else version( Darwin ) { int pthread_condattr_getpshared(in pthread_condattr_t*, int*); diff --git a/src/core/sys/posix/pwd.d b/src/core/sys/posix/pwd.d index d73286237c..ddd35f9952 100644 --- a/src/core/sys/posix/pwd.d +++ b/src/core/sys/posix/pwd.d @@ -94,6 +94,22 @@ else version( FreeBSD ) int pw_fields; /* internal: fields filled in */ } } +else version( OpenBSD ) +{ + struct passwd + { + char* pw_name; /* user name */ + char* pw_passwd; /* encrypted password */ + uid_t pw_uid; /* user uid */ + gid_t pw_gid; /* user gid */ + time_t pw_change; /* password change time */ + char* pw_class; /* user access class */ + char* pw_gecos; /* Honeywell login info */ + char* pw_dir; /* home directory */ + char* pw_shell; /* default shell */ + time_t pw_expire; /* account expiration */ + } +} else version (Solaris) { struct passwd @@ -152,6 +168,11 @@ else version( FreeBSD ) int getpwnam_r(in char*, passwd*, char*, size_t, passwd**); int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); } +else version( OpenBSD ) +{ + int getpwnam_r(in char*, passwd*, char*, size_t, passwd**); + int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); +} else version (Solaris) { int getpwnam_r(in char*, passwd*, char*, size_t, passwd**); @@ -192,6 +213,12 @@ else version ( FreeBSD ) passwd* getpwent(); void setpwent(); } +else version ( OpenBSD ) +{ + void endpwent(); + passwd* getpwent(); + void setpwent(); +} else version (Solaris) { void endpwent(); diff --git a/src/core/sys/posix/sched.d b/src/core/sys/posix/sched.d index c3597ca984..637545cf16 100644 --- a/src/core/sys/posix/sched.d +++ b/src/core/sys/posix/sched.d @@ -95,6 +95,17 @@ else version( FreeBSD ) enum SCHED_OTHER = 2; enum SCHED_RR = 3; } +else version( OpenBSD ) +{ + struct sched_param + { + int sched_priority; + } + + enum SCHED_FIFO = 1; + enum SCHED_OTHER = 2; + enum SCHED_RR = 3; +} else version (Solaris) { struct sched_param @@ -153,6 +164,10 @@ else version( FreeBSD ) { int sched_yield(); } +else version( OpenBSD ) +{ + int sched_yield(); +} else version (Solaris) { int sched_yield(); @@ -193,6 +208,12 @@ else version( FreeBSD ) int sched_get_priority_max(int); int sched_rr_get_interval(pid_t, timespec*); } +else version( OpenBSD ) +{ + int sched_get_priority_min(int); + int sched_get_priority_max(int); + int sched_rr_get_interval(pid_t, timespec*); +} else version (Solaris) { int sched_get_priority_max(int); diff --git a/src/core/sys/posix/semaphore.d b/src/core/sys/posix/semaphore.d index 72741d097c..ba29482285 100644 --- a/src/core/sys/posix/semaphore.d +++ b/src/core/sys/posix/semaphore.d @@ -90,6 +90,13 @@ else version( FreeBSD ) enum SEM_FAILED = cast(sem_t*) null; } +else version( OpenBSD ) +{ + struct __sem { } + alias sem_t = __sem*; + + enum SEM_FAILED = cast(sem_t*) null; +} else version (Solaris) { struct sem_t @@ -146,6 +153,10 @@ else version( FreeBSD ) { int sem_timedwait(sem_t*, in timespec*); } +else version( OpenBSD ) +{ + int sem_timedwait(sem_t*, in timespec*); +} else version (Solaris) { int sem_timedwait(sem_t*, in timespec*); diff --git a/src/core/sys/posix/setjmp.d b/src/core/sys/posix/setjmp.d index e5758c524b..8a1d4cc59f 100644 --- a/src/core/sys/posix/setjmp.d +++ b/src/core/sys/posix/setjmp.d @@ -170,6 +170,45 @@ else version( FreeBSD ) int setjmp(ref jmp_buf); void longjmp(ref jmp_buf, int); } +else version( OpenBSD ) +{ + // + version( X86 ) + { + enum _JBLEN = 10; + } + else version( X86_64) + { + enum _JBLEN = 11; + } + else version( ARM ) + { + enum _JBLEN = 64; + } + else version( PPC ) + { + enum _JBLEN = 100; + } + else version( MIPS64 ) + { + enum _JBLEN = 83; + } + else version( SPARC ) + { + enum _JBLEN = 10; + } + else version( SPARC64 ) + { + enum _JBLEN = 14; + } + else + static assert(0); + + alias jmp_buf = c_long[_JBLEN]; + + int setjmp(ref jmp_buf); + void longjmp(ref jmp_buf, int); +} else version( CRuntime_Bionic ) { // @@ -238,6 +277,13 @@ else version( FreeBSD ) int sigsetjmp(ref sigjmp_buf); void siglongjmp(ref sigjmp_buf, int); } +else version( OpenBSD ) +{ + alias sigjmp_buf = c_long[_JBLEN + 1]; + + int sigsetjmp(ref sigjmp_buf); + void siglongjmp(ref sigjmp_buf, int); +} else version( CRuntime_Bionic ) { alias c_long[_JBLEN + 1] sigjmp_buf; @@ -264,6 +310,11 @@ else version( FreeBSD ) int _setjmp(ref jmp_buf); void _longjmp(ref jmp_buf, int); } +else version( OpenBSD ) +{ + int _setjmp(ref jmp_buf); + void _longjmp(ref jmp_buf, int); +} else version( CRuntime_Bionic ) { int _setjmp(ref jmp_buf); diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index fb57e9c5af..dcdac9ab10 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -434,6 +434,30 @@ else version( FreeBSD ) enum SIGUSR2 = 31; enum SIGURG = 16; } +else version( OpenBSD ) +{ + //SIGABRT (defined in core.stdc.signal) + enum SIGALRM = 14; + enum SIGBUS = 10; + enum SIGCHLD = 20; + enum SIGCONT = 19; + //SIGFPE (defined in core.stdc.signal) + enum SIGHUP = 1; + //SIGILL (defined in core.stdc.signal) + //SIGINT (defined in core.stdc.signal) + enum SIGKILL = 9; + enum SIGPIPE = 13; + enum SIGQUIT = 3; + //SIGSEGV (defined in core.stdc.signal) + enum SIGSTOP = 17; + //SIGTERM (defined in core.stdc.signal) + enum SIGTSTP = 18; + enum SIGTTIN = 21; + enum SIGTTOU = 22; + enum SIGUSR1 = 30; + enum SIGUSR2 = 31; + enum SIGURG = 16; +} else version (Solaris) { enum SIGALRM = 14; @@ -492,6 +516,21 @@ else version( FreeBSD ) sigset_t sa_mask; } } +else version( OpenBSD ) +{ + struct sigaction_t + { + union + { + sigfn_t __sa_handler; + alias sa_handler = __sa_handler; + sigactfn_t __sa_sigaction; + alias sa_sigaction = __sa_sigaction; + } + sigset_t sa_mask; + int sa_flags; + } +} else version (Solaris) { struct sigaction_t @@ -894,6 +933,82 @@ else version( FreeBSD ) int sigsuspend(in sigset_t *); int sigwait(in sigset_t*, int*); } +else version( OpenBSD ) +{ + enum SIG_CATCH = cast(sigfn_t2) 2; + enum SIG_HOLD = cast(sigfn_t2) 3; + + alias sigset_t = uint; + + enum SA_NOCLDSTOP = 0x0008; + + enum SIG_BLOCK = 1; + enum SIG_UNBLOCK = 2; + enum SIG_SETMASK = 3; + + private enum SI_MAXSZ = 128; + private enum SI_PAD = (SI_MAXSZ / int.sizeof) - 3; + + struct siginfo_t + { + int si_signo; + int si_errno; + int si_code; + union _data + { + int[SI_PAD] _pad; + struct _proc + { + pid_t _pid; + union _pdata + { + struct _kill + { + uid_t _uid; + sigval _value; + } + struct _cld + { + clock_t _utime; + clock_t _stime; + int _status; + } + } + } + struct _fault + { + caddr_t _addr; + int _trapno; + } + } + alias si_pid = _data._proc._pid; + alias si_status = _data._proc._pdata._cld._status; + alias si_stime = _data._proc._pdata._cld._stime; + alias si_utime = _data._proc._pdata._cld._utime; + alias si_uid = _data._proc._pdata._kill._uid; + alias si_value = _data._proc._pdata._kill._value; + alias si_addr = _data._fault._addr; + alias si_trapno = _data._fault._trapno; + } + + enum SI_NOINFO = 32767; + enum SI_USER = 0; + enum SI_LWP = -1; + enum SI_QUEUE = -2; + enum SI_TIMER = -3; + + int kill(pid_t, int); + int sigaction(int, in sigaction_t*, sigaction_t*); + int sigaddset(sigset_t*, int); + int sigdelset(sigset_t*, int); + int sigemptyset(sigset_t *); + int sigfillset(sigset_t *); + int sigismember(in sigset_t *, int); + int sigpending(sigset_t *); + int sigprocmask(int, in sigset_t*, sigset_t*); + int sigsuspend(in sigset_t *); + int sigwait(in sigset_t*, int*); +} else version (Solaris) { enum SIG_HOLD = cast(sigfn_t2)2; @@ -1665,6 +1780,122 @@ else version( FreeBSD ) int sigpause(int); int sigrelse(int); } +else version (OpenBSD) +{ + // No SIGPOLL on *BSD + enum SIGPROF = 27; + enum SIGSYS = 12; + enum SIGTRAP = 5; + enum SIGVTALRM = 26; + enum SIGXCPU = 24; + enum SIGXFSZ = 25; + + enum + { + SA_ONSTACK = 0x0001, + SA_RESTART = 0x0002, + SA_RESETHAND = 0x0004, + SA_NODEFER = 0x0010, + SA_NOCLDWAIT = 0x0020, + SA_SIGINFO = 0x0040, + } + + enum + { + SS_ONSTACK = 0x0001, + SS_DISABLE = 0x0004, + } + + enum MINSIGSTKSZ = 8192; + enum SIGSTKSZ = (MINSIGSTKSZ + 32768); + + //ucontext_t (defined in core.sys.posix.ucontext) + //mcontext_t (defined in core.sys.posix.ucontext) + + struct stack_t + { + void* ss_sp; + size_t ss_size; + int ss_flags; + } + + enum + { + ILL_ILLOPC = 1, + ILL_ILLOPN, + ILL_ILLADR, + ILL_ILLTRP, + ILL_PRVOPC, + ILL_PRVREG, + ILL_COPROC, + ILL_BADSTK, + NSIGILL = ILL_BADSTK, + } + + enum + { + BUS_ADRALN = 1, + BUS_ADRERR, + BUS_OBJERR, + NSIGBUS = BUS_OBJERR, + } + + enum + { + SEGV_MAPERR = 1, + SEGV_ACCERR, + NSIGSEGV = SEGV_ACCERR, + } + + enum + { + FPE_INTDIV = 1, + FPE_INTOVF, + FPE_FLTDIV, + FPE_FLTOVF, + FPE_FLTUND, + FPE_FLTRES, + FPE_FLTINV, + FPE_FLTSUB, + NSIGFPE = FPE_FLTSUB, + } + + enum + { + TRAP_BRKPT = 1, + TRAP_TRACE, + NSIGTRAP = TRAP_TRACE, + } + + enum + { + CLD_EXITED = 1, + CLD_KILLED, + CLD_DUMPED, + CLD_TRAPPED, + CLD_STOPPED, + CLD_CONTINUED, + NSIGCLD = CLD_CONTINUED, + } + + enum + { + POLL_IN = 1, + POLL_OUT, + POLL_MSG, + POLL_ERR, + POLL_PRI, + POLL_HUP, + NSIGPOLL = POLL_HUP, + } + + nothrow: + @nogc: + int killpg(pid_t, int); + int sigaltstack(in stack_t*, stack_t*); + int siginterrupt(int, int); + int sigpause(int); +} else version (Solaris) { enum SIGPOLL = 22; @@ -1968,6 +2199,14 @@ else version( FreeBSD ) c_long tv_nsec; } } +else version( OpenBSD ) +{ + struct timespec + { + time_t tv_sec; + c_long tv_nsec; + } +} else version (Solaris) { struct timespec @@ -2063,6 +2302,9 @@ else version( FreeBSD ) int sigtimedwait(in sigset_t*, siginfo_t*, in timespec*); int sigwaitinfo(in sigset_t*, siginfo_t*); } +else version (OpenBSD) +{ +} else version (Darwin) { } @@ -2136,6 +2378,11 @@ else version( FreeBSD ) int pthread_kill(pthread_t, int); int pthread_sigmask(int, in sigset_t*, sigset_t*); } +else version( OpenBSD ) +{ + int pthread_kill(pthread_t, int); + int pthread_sigmask(int, in sigset_t*, sigset_t*); +} else version (Solaris) { int pthread_kill(pthread_t, int); diff --git a/src/core/sys/posix/stdio.d b/src/core/sys/posix/stdio.d index de75ffc0c9..4fb3655888 100644 --- a/src/core/sys/posix/stdio.d +++ b/src/core/sys/posix/stdio.d @@ -246,6 +246,16 @@ version( CRuntime_Glibc ) int putc_unlocked(int, FILE*); int putchar_unlocked(int); } +else version( OpenBSD ) +{ + void flockfile(FILE*); + int ftrylockfile(FILE*); + void funlockfile(FILE*); + int getc_unlocked(FILE*); + int getchar_unlocked(); + int putc_unlocked(int, FILE*); + int putchar_unlocked(int); +} else version( Solaris ) { void flockfile(FILE*); @@ -281,6 +291,10 @@ version( FreeBSD ) { enum P_tmpdir = "/var/tmp/"; } +version( OpenBSD ) +{ + enum P_tmpdir = "/tmp/"; +} version( Solaris ) { enum P_tmpdir = "/var/tmp/"; diff --git a/src/core/sys/posix/stdlib.d b/src/core/sys/posix/stdlib.d index 3727eb44f2..4afd346d46 100644 --- a/src/core/sys/posix/stdlib.d +++ b/src/core/sys/posix/stdlib.d @@ -100,6 +100,10 @@ else version( FreeBSD ) { int posix_memalign(void**, size_t, size_t); } +else version( OpenBSD ) +{ + int posix_memalign(void**, size_t, size_t); +} else version( Solaris ) { int posix_memalign(void**, size_t, size_t); @@ -134,6 +138,13 @@ else version( FreeBSD ) void* valloc(size_t); // LEGACY non-standard } +else version( OpenBSD ) +{ + int setenv(in char*, in char*, int); + int unsetenv(in char*); + + void* valloc(size_t); // LEGACY non-standard +} else version( CRuntime_Bionic ) { int setenv(in char*, in char*, int); @@ -168,6 +179,10 @@ else version( FreeBSD ) { int rand_r(uint*); } +else version( OpenBSD ) +{ + int rand_r(uint*); +} else version( Solaris ) { int rand_r(uint*); @@ -351,6 +366,47 @@ else version( FreeBSD ) void srandom(uint); int unlockpt(int); } +else version( OpenBSD ) +{ + //WNOHANG (defined in core.sys.posix.sys.wait) + //WUNTRACED (defined in core.sys.posix.sys.wait) + //WEXITSTATUS (defined in core.sys.posix.sys.wait) + //WIFEXITED (defined in core.sys.posix.sys.wait) + //WIFSIGNALED (defined in core.sys.posix.sys.wait) + //WIFSTOPPED (defined in core.sys.posix.sys.wait) + //WSTOPSIG (defined in core.sys.posix.sys.wait) + //WTERMSIG (defined in core.sys.posix.sys.wait) + + c_long a64l(in char*); + double drand48(); + //char* ecvt(double, int, int *, int *); // LEGACY + double erand48(ref ushort[3]); + //char* fcvt(double, int, int *, int *); // LEGACY + //char* gcvt(double, int, char*); // LEGACY + int getsubopt(char**, in char**, char**); + int grantpt(int); + char* initstate(uint, char*, size_t); + c_long jrand48(ref ushort[3]); + char* l64a(c_long); + void lcong48(ref ushort[7]); + c_long lrand48(); + char* mktemp(char*); // LEGACY + int mkstemp(char*); + char* mkdtemp(char*); // Defined in IEEE 1003.1, 2008 Edition + c_long mrand48(); + c_long nrand48(ref ushort[3]); + int posix_openpt(int); + char* ptsname(int); + int putenv(char*); + c_long random(); + char* realpath(in char*, char*); + ushort *seed48(ref ushort[3]); + // void setkey(in char*); // not implemented + char* setstate(in char*); + void srand48(c_long); + void srandom(uint); + int unlockpt(int); +} else version( CRuntime_Bionic ) { double drand48(); From bb59a2defc6a239587e871f78a1d6bf5c47745ee Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 18 Jul 2016 00:30:17 -0700 Subject: [PATCH 419/768] add some documentation to aaA.d --- src/rt/aaA.d | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/src/rt/aaA.d b/src/rt/aaA.d index cf8943e1e2..9dbff7c2f8 100644 --- a/src/rt/aaA.d +++ b/src/rt/aaA.d @@ -352,7 +352,19 @@ extern (C) size_t _aaLen(in AA aa) pure nothrow @nogc return aa ? aa.length : 0; } -/// Get LValue for key +/****************************** + * Lookup *pkey in aa. + * Called only from implementation of (aa[key]) expressions when value is mutable. + * Params: + * aa = associative array opaque pointer + * ti = TypeInfo for the associative array + * valsz = ignored + * pkey = pointer to the key value + * Returns: + * if key was in the aa, a mutable pointer to the existing value. + * If key was not in the aa, a mutable pointer to newly inserted value which + * is set to all zeros + */ extern (C) void* _aaGetY(AA* aa, const TypeInfo_AssociativeArray ti, in size_t valsz, in void* pkey) { @@ -393,14 +405,33 @@ extern (C) void* _aaGetY(AA* aa, const TypeInfo_AssociativeArray ti, in size_t v return p.entry + aa.valoff; } -/// Get RValue for key, returns null if not present +/****************************** + * Lookup *pkey in aa. + * Called only from implementation of (aa[key]) expressions when value is not mutable. + * Params: + * aa = associative array opaque pointer + * keyti = TypeInfo for the key + * valsz = ignored + * pkey = pointer to the key value + * Returns: + * pointer to value if present, null otherwise + */ extern (C) inout(void)* _aaGetRvalueX(inout AA aa, in TypeInfo keyti, in size_t valsz, in void* pkey) { return _aaInX(aa, keyti, pkey); } -/// Return pointer to value if present, null otherwise +/****************************** + * Lookup *pkey in aa. + * Called only from implementation of (key in aa) expressions. + * Params: + * aa = associative array opaque pointer + * keyti = TypeInfo for the key + * pkey = pointer to the key value + * Returns: + * pointer to value if present, null otherwise + */ extern (C) inout(void)* _aaInX(inout AA aa, in TypeInfo keyti, in void* pkey) { if (aa.empty) From 4b2901c940756270411039fad4615cb46a2ad9c4 Mon Sep 17 00:00:00 2001 From: Dicebot Date: Sat, 9 Jul 2016 23:59:29 +0300 Subject: [PATCH 420/768] Remove extra GC stat fields and rename remaining Before making stats struct and thus standardizing it, field set it defines has to be reduced to minimal amount meaningful to any GC implementation. --- src/gc/impl/conservative/gc.d | 15 +++++---------- src/gc/stats.d | 12 +++++------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index 91cf7762f9..9041e2126f 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -1157,8 +1157,8 @@ class ConservativeGC : GC GCStats stats; getStats(stats); - debug(PRINTF) printf("poolsize = %zx, usedsize = %zx, freelistsize = %zx\n", - stats.poolsize, stats.usedsize, stats.freelistsize); + debug(PRINTF) printf("heapSize = %zx, freeSize = %zx\n", + stats.heapSize, stats.freeSize); } gcx.log_collect(); @@ -1223,11 +1223,7 @@ class ConservativeGC : GC for (size_t j = 0; j < pool.npages; j++) { Bins bin = cast(Bins)pool.pagetable[j]; - if (bin == B_FREE) - stats.freeblocks++; - else if (bin == B_PAGE) - stats.pageblocks++; - else if (bin < B_PAGE) + if (bin < B_PAGE) bsize += PAGESIZE; } } @@ -1244,9 +1240,8 @@ class ConservativeGC : GC usize = bsize - flsize; - stats.poolsize = psize; - stats.usedsize = bsize - flsize; - stats.freelistsize = flsize; + stats.usedSize = bsize - flsize; + stats.freeSize = flsize; } } diff --git a/src/gc/stats.d b/src/gc/stats.d index 2d6a01a350..ffeed97e5c 100644 --- a/src/gc/stats.d +++ b/src/gc/stats.d @@ -13,15 +13,13 @@ */ module gc.stats; - /** - * + * Aggregation of GC stats to be exposed via public API */ struct GCStats { - size_t poolsize; // total size of pool - size_t usedsize; // bytes allocated - size_t freeblocks; // number of blocks marked FREE - size_t freelistsize; // total of memory on free lists - size_t pageblocks; // number of blocks marked PAGE + /// total size of GC heap + size_t usedSize; + /// free bytes on the GC heap (might only get updated after a collection) + size_t freeSize; } From cacba725da8b35c3b2d061df822f819d10962d71 Mon Sep 17 00:00:00 2001 From: Dicebot Date: Sun, 10 Jul 2016 00:11:06 +0300 Subject: [PATCH 421/768] Move GCStats to core.memory.GC.Stats --- mak/SRCS | 1 - src/core/memory.d | 11 +++++++++++ src/gc/gcinterface.d | 3 +-- src/gc/impl/conservative/gc.d | 10 +++++----- src/gc/impl/manual/gc.d | 6 +++--- src/gc/proxy.d | 4 ++-- src/gc/stats.d | 25 ------------------------- 7 files changed, 22 insertions(+), 38 deletions(-) delete mode 100644 src/gc/stats.d diff --git a/mak/SRCS b/mak/SRCS index ebbd0271fa..33b85fce49 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -241,7 +241,6 @@ SRCS=\ src\gc\os.d \ src\gc\pooltable.d \ src\gc\proxy.d \ - src\gc\stats.d \ src\gc\impl\conservative\gc.d \ src\gc\impl\manual\gc.d \ \ diff --git a/src/core/memory.d b/src/core/memory.d index 10de25778d..80d6d99038 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -158,6 +158,17 @@ struct GC { @disable this(); + /** + * Aggregation of GC stats to be exposed via public API + */ + static struct Stats + { + /// number of used bytes on the GC heap (might only get updated after a collection) + size_t usedSize; + /// number of free bytes on the GC heap (might only get updated after a collection) + size_t freeSize; + } + /** * Enables automatic garbage collection behavior if collections have * previously been suspended by a call to disable. This function is diff --git a/src/gc/gcinterface.d b/src/gc/gcinterface.d index e4d4b14810..abe88f1c82 100644 --- a/src/gc/gcinterface.d +++ b/src/gc/gcinterface.d @@ -12,7 +12,6 @@ * http://www.boost.org/LICENSE_1_0.txt) */ module gc.gcinterface; -import gc.stats; static import core.memory; alias BlkAttr = core.memory.GC.BlkAttr; @@ -147,7 +146,7 @@ interface GC * Retrieve statistics about garbage collection. * Useful for debugging and tuning. */ - GCStats stats() nothrow; + core.memory.GC.Stats stats() nothrow; /** * add p to list of roots diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index 9041e2126f..c544d3b279 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -39,7 +39,6 @@ version = STACKGROWSDOWN; // growing the stack means subtracting from the /***************************************************/ import gc.bits; -import gc.stats; import gc.os; import gc.config; import gc.gcinterface; @@ -50,6 +49,7 @@ import cstdlib = core.stdc.stdlib : calloc, free, malloc, realloc; import core.stdc.string : memcpy, memset, memmove; import core.bitop; import core.thread; +static import core.memory; version (GNU) import gcc.builtins; @@ -1191,9 +1191,9 @@ class ConservativeGC : GC } - GCStats stats() nothrow + core.memory.GC.Stats stats() nothrow { - GCStats ret; + typeof(return) ret; runLocked!(getStatsNoSync, otherTime, numOthers)(ret); @@ -1204,7 +1204,7 @@ class ConservativeGC : GC // // // - private void getStatsNoSync(out GCStats stats) nothrow + private void getStatsNoSync(out core.memory.GC.Stats stats) nothrow { size_t psize = 0; size_t usize = 0; @@ -1214,7 +1214,7 @@ class ConservativeGC : GC size_t bsize = 0; //debug(PRINTF) printf("getStats()\n"); - memset(&stats, 0, GCStats.sizeof); + memset(&stats, 0, core.memory.GC.Stats.sizeof); for (n = 0; n < gcx.npools; n++) { Pool *pool = gcx.pooltable[n]; diff --git a/src/gc/impl/manual/gc.d b/src/gc/impl/manual/gc.d index cd626b6e94..84712d410d 100644 --- a/src/gc/impl/manual/gc.d +++ b/src/gc/impl/manual/gc.d @@ -26,12 +26,12 @@ module gc.impl.manual.gc; import gc.config; -import gc.stats; import gc.gcinterface; import rt.util.container.array; import cstdlib = core.stdc.stdlib : calloc, free, malloc, realloc; +static import core.memory; extern (C) void onOutOfMemoryError(void* pretend_sideffect = null) @trusted pure nothrow @nogc; /* dmd @@@BUG11461@@@ */ @@ -190,9 +190,9 @@ class ManualGC : GC return BlkInfo.init; } - GCStats stats() nothrow + core.memory.GC.Stats stats() nothrow { - return GCStats.init; + return typeof(return).init; } void addRoot(void* p) nothrow @nogc diff --git a/src/gc/proxy.d b/src/gc/proxy.d index 777fe81421..4458445c4b 100644 --- a/src/gc/proxy.d +++ b/src/gc/proxy.d @@ -16,9 +16,9 @@ module gc.proxy; import gc.impl.conservative.gc; import gc.impl.manual.gc; import gc.config; -import gc.stats; import gc.gcinterface; +static import core.memory; private { @@ -164,7 +164,7 @@ extern (C) // NOTE: This routine is experimental. The stats or function name may change // before it is made officially available. - GCStats gc_stats() nothrow + core.memory.GC.Stats gc_stats() nothrow { return instance.stats(); } diff --git a/src/gc/stats.d b/src/gc/stats.d deleted file mode 100644 index ffeed97e5c..0000000000 --- a/src/gc/stats.d +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Contains a struct for storing GC statistics. - * - * Copyright: Copyright Digital Mars 2005 - 2013. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). - * Authors: Walter Bright, Sean Kelly - */ - -/* Copyright Digital Mars 2005 - 2013. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -module gc.stats; - -/** - * Aggregation of GC stats to be exposed via public API - */ -struct GCStats -{ - /// total size of GC heap - size_t usedSize; - /// free bytes on the GC heap (might only get updated after a collection) - size_t freeSize; -} From 031e151b8d2c18f90eec95aef74f566137b5b7e8 Mon Sep 17 00:00:00 2001 From: Dicebot Date: Sun, 10 Jul 2016 00:14:57 +0300 Subject: [PATCH 422/768] Expose gc_stats as core.memory.GC.stats --- src/core/memory.d | 9 +++++++++ src/gc/proxy.d | 2 -- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/core/memory.d b/src/core/memory.d index 80d6d99038..0a4270557d 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -138,6 +138,7 @@ private } extern (C) BlkInfo_ gc_query( void* p ) pure nothrow; + extern (C) GC.Stats gc_stats ( ) nothrow @nogc; extern (C) void gc_addRoot( in void* p ) nothrow @nogc; extern (C) void gc_addRange( in void* p, size_t sz, const TypeInfo ti = null ) nothrow @nogc; @@ -670,6 +671,14 @@ struct GC return gc_query( p ); } + /** + * Returns runtime stats for currently active GC implementation + * See `core.memory.GC.Stats` for list of available metrics. + */ + static Stats stats() nothrow + { + return gc_stats(); + } /** * Adds an internal root pointing to the GC memory block referenced by p. diff --git a/src/gc/proxy.d b/src/gc/proxy.d index 4458445c4b..3240fd5413 100644 --- a/src/gc/proxy.d +++ b/src/gc/proxy.d @@ -162,8 +162,6 @@ extern (C) return instance.query( p ); } - // NOTE: This routine is experimental. The stats or function name may change - // before it is made officially available. core.memory.GC.Stats gc_stats() nothrow { return instance.stats(); From 5c61bd590606e44edbca6a8407fde2b0321af572 Mon Sep 17 00:00:00 2001 From: Dicebot Date: Tue, 19 Jul 2016 05:03:11 +0300 Subject: [PATCH 423/768] Simplify how gc stats are calculated --- src/gc/impl/conservative/gc.d | 41 +++++++++++------------------------ 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index c544d3b279..a1f894dbc1 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -1206,42 +1206,27 @@ class ConservativeGC : GC // private void getStatsNoSync(out core.memory.GC.Stats stats) nothrow { - size_t psize = 0; - size_t usize = 0; - size_t flsize = 0; - - size_t n; - size_t bsize = 0; - - //debug(PRINTF) printf("getStats()\n"); - memset(&stats, 0, core.memory.GC.Stats.sizeof); - - for (n = 0; n < gcx.npools; n++) - { Pool *pool = gcx.pooltable[n]; - - psize += pool.npages * PAGESIZE; - for (size_t j = 0; j < pool.npages; j++) + foreach (pool; gcx.pooltable[0 .. gcx.npools]) + { + foreach (bin; pool.pagetable[0 .. pool.npages]) { - Bins bin = cast(Bins)pool.pagetable[j]; - if (bin < B_PAGE) - bsize += PAGESIZE; + if (bin == B_FREE) + stats.freeSize += PAGESIZE; + else + stats.usedSize += PAGESIZE; } } - for (n = 0; n < B_PAGE; n++) + size_t freeListSize; + foreach (n; 0 .. B_PAGE) { - //debug(PRINTF) printf("bin %d\n", n); + immutable sz = binsize[n]; for (List *list = gcx.bucket[n]; list; list = list.next) - { - //debug(PRINTF) printf("\tlist %p\n", list); - flsize += binsize[n]; - } + freeListSize += sz; } - usize = bsize - flsize; - - stats.usedSize = bsize - flsize; - stats.freeSize = flsize; + stats.usedSize -= freeListSize; + stats.freeSize += freeListSize; } } From d4842215ea1eba91f75c388967425e6e5c330aa1 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 19 Jul 2016 15:22:24 -0700 Subject: [PATCH 424/768] use safe construct for .ptr instead --- src/rt/util/utf.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rt/util/utf.d b/src/rt/util/utf.d index 7d2641380e..07758409ec 100644 --- a/src/rt/util/utf.d +++ b/src/rt/util/utf.d @@ -767,7 +767,7 @@ wptr toUTF16z(in char[] s) } } r ~= '\000'; - return r.ptr; + return &r[0]; } /** ditto */ From e741809bb8ee0b26edcd86515b8c6535e37d32d7 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 25 Jul 2016 17:55:30 -0700 Subject: [PATCH 425/768] core.time.d: fix unsafe use of .ptr --- src/core/time.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/time.d b/src/core/time.d index 5144fa606e..a51aba7fcf 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -4738,7 +4738,7 @@ unittest assert(aStr == "-0.337", aStr); } -version(unittest) const(char)* numToStringz()(long value) @safe pure nothrow +version(unittest) const(char)* numToStringz()(long value) @trusted pure nothrow { return (signedToTempString(value, 10) ~ "\0").ptr; } From 0cf5837eda3baa1d6f9373879a0b383478ecc5ff Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sat, 30 Jul 2016 16:42:12 +0200 Subject: [PATCH 426/768] Enable uint128_t/int128_t if ucent/cent type is implemented. This is a better approach than just commenting out the lines. --- src/core/stdc/stdint.d | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/stdc/stdint.d b/src/core/stdc/stdint.d index f123cba538..4ba109826a 100644 --- a/src/core/stdc/stdint.d +++ b/src/core/stdc/stdint.d @@ -35,7 +35,9 @@ alias int16_t = short; alias int32_t = int ; /// alias int64_t = long ; -//alias int128_t = cent; +/// +static if (is(ucent)) + alias int128_t = cent; /// alias uint8_t = ubyte ; @@ -45,7 +47,9 @@ alias uint16_t = ushort; alias uint32_t = uint ; /// alias uint64_t = ulong ; -//alias uint128_t = ucent; +/// +static if (is(ucent)) + alias uint128_t = ucent; /// alias int_least8_t = byte ; From 74103079e61c56135afc7fdcb6107b40b05a6a5a Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sat, 30 Jul 2016 19:56:04 +0200 Subject: [PATCH 427/768] Centify core.checkedint Adds support for cent/ucent types. This is required for an D frontend which supports cent/ucent. --- src/core/checkedint.d | 225 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) diff --git a/src/core/checkedint.d b/src/core/checkedint.d index 422d59bde9..3691276f55 100644 --- a/src/core/checkedint.d +++ b/src/core/checkedint.d @@ -102,6 +102,38 @@ unittest assert(overflow); // sticky } +static if (is(cent)) +{ +/// ditto +pragma(inline, true) +cent adds(cent x, cent y, ref bool overflow) +{ + cent r = cast(ucent)x + cast(ucent)y; + if (x < 0 && y < 0 && r >= 0 || + x >= 0 && y >= 0 && r < 0) + overflow = true; + return r; +} + +unittest +{ + bool overflow; + assert(adds(cast(cent)2L, 3L, overflow) == 5); + assert(!overflow); + assert(adds(1L, cent.max - 1, overflow) == cent.max); + assert(!overflow); + assert(adds(cent.min + 1, -1, overflow) == cent.min); + assert(!overflow); + assert(adds(cent.max, 1, overflow) == cent.min); + assert(overflow); + overflow = false; + assert(adds(cent.min, -1, overflow) == cent.max); + assert(overflow); + assert(adds(cast(cent)0L, 0L, overflow) == 0); + assert(overflow); // sticky +} +} + /******************************* * Add two unsigned integers, checking for overflow (aka carry). @@ -171,6 +203,37 @@ unittest assert(overflow); // sticky } +static if (is(ucent)) +{ +/// ditto +pragma(inline, true) +ucent addu(ucent x, ucent y, ref bool overflow) +{ + ucent r = x + y; + if (r < x || r < y) + overflow = true; + return r; +} + +unittest +{ + bool overflow; + assert(addu(cast(ucent)2L, 3L, overflow) == 5); + assert(!overflow); + assert(addu(1, ucent.max - 1, overflow) == ucent.max); + assert(!overflow); + assert(addu(ucent.min, -1L, overflow) == ucent.max); + assert(!overflow); + assert(addu(ucent.max, 1, overflow) == ucent.min); + assert(overflow); + overflow = false; + assert(addu(ucent.min + 1, -1L, overflow) == ucent.min); + assert(overflow); + assert(addu(cast(ucent)0L, 0L, overflow) == 0); + assert(overflow); // sticky +} +} + /******************************* * Subtract two signed integers, checking for overflow. @@ -243,6 +306,41 @@ unittest assert(overflow); // sticky } +static if (is(cent)) +{ +/// ditto +pragma(inline, true) +cent subs(cent x, cent y, ref bool overflow) +{ + cent r = cast(ucent)x - cast(ucent)y; + if (x < 0 && y >= 0 && r >= 0 || + x >= 0 && y < 0 && (r < 0 || y == long.min)) + overflow = true; + return r; +} + +unittest +{ + bool overflow; + assert(subs(cast(cent)2L, -3L, overflow) == 5); + assert(!overflow); + assert(subs(1L, -cent.max + 1, overflow) == cent.max); + assert(!overflow); + assert(subs(cent.min + 1, 1, overflow) == cent.min); + assert(!overflow); + assert(subs(-1L, cent.min, overflow) == cent.max); + assert(!overflow); + assert(subs(cent.max, -1, overflow) == cent.min); + assert(overflow); + overflow = false; + assert(subs(cent.min, 1, overflow) == cent.max); + assert(overflow); + assert(subs(cast(cent)0L, 0L, overflow) == 0); + assert(overflow); // sticky +} +} + + /******************************* * Subtract two unsigned integers, checking for overflow (aka borrow). * @@ -310,6 +408,36 @@ unittest assert(overflow); // sticky } +static if (is(ucent)) +{ +/// ditto +pragma(inline, true) +ucent subu(ucent x, ucent y, ref bool overflow) +{ + if (x < y) + overflow = true; + return x - y; +} + +unittest +{ + bool overflow; + assert(subu(cast(ucent)3UL, 2UL, overflow) == 1); + assert(!overflow); + assert(subu(ucent.max, 1, overflow) == ucent.max - 1); + assert(!overflow); + assert(subu(1UL, 1UL, overflow) == ucent.min); + assert(!overflow); + assert(subu(cast(ucent)0UL, 1UL, overflow) == ucent.max); + assert(overflow); + overflow = false; + assert(subu(ucent.max - 1, ucent.max, overflow) == ucent.max); + assert(overflow); + assert(subu(cast(ucent)0UL, 0UL, overflow) == 0); + assert(overflow); // sticky +} +} + /*********************************************** * Negate an integer. @@ -368,6 +496,33 @@ unittest assert(overflow); // sticky } +static if (is(cent)) +{ +/// ditto +pragma(inline, true) +cent negs(cent x, ref bool overflow) +{ + if (x == cent.min) + overflow = true; + return -x; +} + +unittest +{ + bool overflow; + assert(negs(cast(cent)0L, overflow) == -0); + assert(!overflow); + assert(negs(cast(cent)1234L, overflow) == -1234); + assert(!overflow); + assert(negs(cast(cent)-5678L, overflow) == 5678); + assert(!overflow); + assert(negs(cent.min, overflow) == -cent.min); + assert(overflow); + assert(negs(cast(cent)0L, overflow) == -0); + assert(overflow); // sticky +} +} + /******************************* * Multiply two signed integers, checking for overflow. @@ -445,6 +600,43 @@ unittest assert(overflow); // sticky } +static if (is(cent)) +{ +/// ditto +pragma(inline, true) +cent muls(cent x, cent y, ref bool overflow) +{ + cent r = cast(ucent)x * cast(ucent)y; + enum not0or1 = ~1L; + if((x & not0or1) && ((r == y)? r : (r / x) != y)) + overflow = true; + return r; +} + +unittest +{ + bool overflow; + assert(muls(cast(cent)2L, 3L, overflow) == 6); + assert(!overflow); + assert(muls(cast(cent)-200L, 300L, overflow) == -60_000); + assert(!overflow); + assert(muls(1, cent.max, overflow) == cent.max); + assert(!overflow); + assert(muls(cent.min, 1L, overflow) == cent.min); + assert(!overflow); + assert(muls(cent.max, 2L, overflow) == (cent.max * 2)); + assert(overflow); + overflow = false; + assert(muls(-1L, cent.min, overflow) == cent.min); + assert(overflow); + overflow = false; + assert(muls(cent.min, -1L, overflow) == cent.min); + assert(overflow); + assert(muls(cast(cent)0L, 0L, overflow) == 0); + assert(overflow); // sticky +} +} + /******************************* * Multiply two unsigned integers, checking for overflow (aka carry). @@ -517,3 +709,36 @@ unittest assert(mulu(0UL, 0UL, overflow) == 0); assert(overflow); // sticky } + +static if (is(ucent)) +{ +/// ditto +pragma(inline, true) +ucent mulu(ucent x, ucent y, ref bool overflow) +{ + ucent r = x * y; + if (x && (r / x) != y) + overflow = true; + return r; +} + +unittest +{ + void test(ucent x, ucent y, ucent r, bool overflow) @nogc nothrow + { + bool o; + assert(mulu(x, y, o) == r); + assert(o == overflow); + } + test(2, 3, 6, false); + test(1, ucent.max, ucent.max, false); + test(0, 1, 0, false); + test(0, ucent.max, 0, false); + test(ucent.max, 2, 2 * ucent.max, true); + test(cast(ucent)1UL << 64, cast(ucent)1UL << 64, 0, true); + + bool overflow = true; + assert(mulu(0UL, 0UL, overflow) == 0); + assert(overflow); // sticky +} +} \ No newline at end of file From afeeedf3ec2d9303b31a988b17c115d85c23f855 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sun, 31 Jul 2016 02:58:22 +0200 Subject: [PATCH 428/768] Enable coverage statistics --- .travis.yml | 37 +++++++++++++++++++++++++++++++++++++ posix.mak | 3 ++- src/test_runner.d | 5 +++++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..4474a78cc3 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,37 @@ +sudo: false +os: linux +language: d +d: dmd-2.071.0 +git: + depth: 1 +install: + - mkdir druntime + - ls -1 | grep -v ^druntime | xargs -I{} mv {} druntime + - git clone --depth=1 https://github.com/dlang/dmd +# Dscanner should be enabled soon +#- git clone https://github.com/Hackerpilot/Dscanner +#- (cd Dscanner && git checkout tags/v0.4.0-alpha.8) +#- (cd Dscanner && git submodule update --init --recursive) +## debug build is faster, but disable 'missing import' messages (missing core from druntime) +#- (cd Dscanner && sed 's/dparse_verbose/StdLoggerDisableWarning/' -i makefile && make githash debug) +## avoid checking it's dscanner's directory +script: + - echo "Checking for trailing whitespace" + - rdmd ./dmd/src/checkwhitespace.d $(find druntime -name '*.d') +# This should be enabled over time +#- echo "Enforce whitespace between statements" +#- (cd druntime && grep -nE "(for|foreach|foreach_reverse|if|while|switch|catch)\(" $(find src -name '*.d'); test $? -eq 1) +#- echo "Enforce whitespace between colon(:) for import statements (doesn't catch everything)" +#- (cd druntime && grep -n 'import [^/,=]*:.*;' $(find src -name '*.d') | grep -vE "import ([^ ]+) :\s"; test $? -eq 1) +#- echo "Enforce Allman style" +#- (cd druntime && grep -nE '(if|for|foreach|foreach_reverse|while|unittest|switch|else|version) .*{$' $(find src -name '*.d'); test $? -eq 1) +#- echo "Running DScanner" +#- (cd druntime && ../Dscanner/dsc --config ../.dscanner.ini --styleCheck src) + # test code coverage + - (cd dmd && make -f posix.mak) + - (cd druntime && TEST_COVERAGE="1" make -f posix.mak unittest-debug) + # ignore stored coverage reports + - rm -r dmd/test/runnable/extra-files + - rm -r druntime/test/coverage/generated +after_success: + - (cd druntime && bash <(curl -s https://codecov.io/bash)) diff --git a/posix.mak b/posix.mak index d86d7d9b7c..c4c4d95be7 100644 --- a/posix.mak +++ b/posix.mak @@ -28,6 +28,7 @@ DOCDIR=doc IMPDIR=import OPTIONAL_PIC:=$(if $(PIC),-fPIC,) +OPTIONAL_COVERAGE:=$(if $(TEST_COVERAGE),-cov,) ifeq (osx,$(OS)) DOTDLL:=.dylib @@ -52,7 +53,7 @@ ifeq (solaris,$(OS)) endif # Set DFLAGS -UDFLAGS:=-conf= -Isrc -Iimport -w -dip25 $(MODEL_FLAG) $(OPTIONAL_PIC) +UDFLAGS:=-conf= -Isrc -Iimport -w -dip25 $(MODEL_FLAG) $(OPTIONAL_PIC) $(OPTIONAL_COVERAGE) ifeq ($(BUILD),debug) UDFLAGS += -g -debug DFLAGS:=$(UDFLAGS) diff --git a/src/test_runner.d b/src/test_runner.d index 0d6120d1cf..ea4ba44a16 100644 --- a/src/test_runner.d +++ b/src/test_runner.d @@ -85,4 +85,9 @@ shared static this() void main() { + version(D_Coverage) + { + import core.runtime : dmd_coverSetMerge; + dmd_coverSetMerge(true); + } } From 68e48ca96fce598d41407ac7aace41368dd1a5d6 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 23 Mar 2016 07:44:19 +0100 Subject: [PATCH 429/768] benchmark for array ops --- benchmark/arrayops/arrayops.d | 103 ++++++++++++++++++++++++++++++++++ benchmark/arrayops/plot.R | 31 ++++++++++ 2 files changed, 134 insertions(+) create mode 100644 benchmark/arrayops/arrayops.d create mode 100644 benchmark/arrayops/plot.R diff --git a/benchmark/arrayops/arrayops.d b/benchmark/arrayops/arrayops.d new file mode 100644 index 0000000000..560ccb4670 --- /dev/null +++ b/benchmark/arrayops/arrayops.d @@ -0,0 +1,103 @@ +/** + * Benchmark for array ops. + * + * Copyright: Copyright Martin Nowak 2016 -. + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Authors: Martin Nowak + */ +import core.cpuid, std.algorithm, std.datetime, std.meta, std.stdio, std.string, + std.range; + +float[6] getLatencies(T, string op)() +{ + enum N = 256; + auto a = new T[](N), b = new T[](N), c = new T[](N); + a[] = 3; + b[] = 2; + c[] = 1; + float[6] latencies = float.max; + foreach (i, ref latency; latencies) + { + auto len = 1 << i; + foreach (_; 1 .. 32) + { + auto sw = StopWatch(AutoStart.yes); + foreach (off; 0 .. 1_024) + { + off &= 127; + enum op = op.replace("const", "1").replace("a", + "a[off .. off + len]").replace("b", + "b[off .. off + len]").replace("c", "c[off .. off + len]"); + mixin(op ~ ";"); + } + latency = min(latency, sw.peek.nsecs); + } + } + float[6] res = latencies[] / 1024; + return res; +} + +float[4] getThroughput(T, string op)() +{ + enum N = (40 * 1024 * 1024 + 64) / T.sizeof; + auto a = new T[](N), b = new T[](N), c = new T[](N); + a[] = 3; + b[] = 2; + c[] = 1; + float[4] latencies = float.max; + size_t[4] lengths = [ + 8 * 1024 / T.sizeof, 32 * 1024 / T.sizeof, 512 * 1024 / T.sizeof, 32 * 1024 * 1024 / T + .sizeof + ]; + foreach (i, ref latency; latencies) + { + auto len = lengths[i] / 64; + foreach (_; 1 .. 4) + { + auto sw = StopWatch(AutoStart.yes); + foreach (off; size_t(0) .. size_t(64)) + { + off = off * len + (off % (64 / T.sizeof)); + enum op = op.replace("const", "1").replace("a", + "a[off .. off + len]").replace("b", + "b[off .. off + len]").replace("c", "c[off .. off + len]"); + mixin(op ~ ";"); + } + latency = min(latency, sw.peek.nsecs); + } + } + float[4] throughputs = T.sizeof * lengths[] / latencies[]; + return throughputs; +} + +string[] genOps() +{ + string[] ops; + foreach (op1; ["+", "-", "*", "/"]) + { + ops ~= "a " ~ op1 ~ "= b"; + ops ~= "a " ~ op1 ~ "= const"; + foreach (op2; ["+", "-", "*", "/"]) + { + ops ~= "a " ~ op1 ~ "= b " ~ op2 ~ " c"; + ops ~= "a " ~ op1 ~ "= b " ~ op2 ~ " const"; + } + } + return ops; +} + +void runOp(string op)() +{ + foreach (T; AliasSeq!(ubyte, ushort, uint, ulong, byte, short, int, long, float, + double)) + writefln("%s, %s, %(%.2f, %), %(%s, %)", T.stringof, op, + getLatencies!(T, op), getThroughput!(T, op)); +} + +void main() +{ + writefln("type, op, %(latency%s, %), %-(throughput%s, %)", iota(6) + .map!(i => 1 << i), ["8KB", "32KB", "512KB", "32MB"]); + foreach (op; mixin("AliasSeq!(%(%s, %))".format(genOps))) + runOp!op; +} diff --git a/benchmark/arrayops/plot.R b/benchmark/arrayops/plot.R new file mode 100644 index 0000000000..c193ee0831 --- /dev/null +++ b/benchmark/arrayops/plot.R @@ -0,0 +1,31 @@ +library(ggplot2) +library(dplyr) +library(tidyr) + +dat <- NULL +files <- list.files(pattern='*.csv') +for (file in files) +{ + datFile <- read.csv(file) %>% tbl_df() %>% + mutate(file=file) + if (is.null(dat)) + dat = datFile + else + dat = bind_rows(dat, datFile) +} + +latencies <- gather(dat %>% select(-starts_with('throughput')), num_elems, latency, starts_with('latency')) +throughputs <- gather(dat %>% select(-starts_with('latency')), array_size, throughput, starts_with('throughput')) + +levels(latencies$num_elems) <- sub("latency(\\d+)", "\\1", levels(latencies$num_elems)) +levels(throughputs$array_size) <- sub("throughput(.+)", "\\1", levels(throughputs$array_size)) + +img <- qplot(num_elems, latency, group=type, data=latencies, geom="line", color=type) + + facet_grid(op ~ file, scales="free_y") + + labs(x="num elements", y="latency / ns") +ggsave('array_ops_latency.svg', plot = img, width = 2 + 3 * length(files), height = 40) + +img <- qplot(array_size, throughput, group=type, data=throughputs, geom="line", color=type) + + facet_grid(op ~ file, scales="free_y") + + labs(x="array size", y="throughput / (ops / ns)") +ggsave('array_ops_throughput.svg', plot = img, width = 2 + 3 * length(files), height = 40) From 1775af0657b47a1dadeb11feb1e2971da7f918d5 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 1 Apr 2016 12:28:17 +0200 Subject: [PATCH 430/768] ignore arrayops benchmark in runbench --- benchmark/arrayops/arrayops.ignore | 0 benchmark/runbench.d | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 benchmark/arrayops/arrayops.ignore diff --git a/benchmark/arrayops/arrayops.ignore b/benchmark/arrayops/arrayops.ignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/benchmark/runbench.d b/benchmark/runbench.d index da817cdd43..4c4358c189 100644 --- a/benchmark/runbench.d +++ b/benchmark/runbench.d @@ -53,9 +53,9 @@ void runTests(Config cfg) string[string] extra_sources; auto re = regex(cfg.pattern, "g"); auto self = buildPath(".", "runbench.d"); - foreach(DirEntry src; dirEntries(".", SpanMode.depth)) + foreach(DirEntry src; dirEntries(".", "*.d", SpanMode.depth)) { - if (!src.isFile || !endsWith(src.name, ".d") || src.name == self) + if (!src.isFile || src.name == self || src.name.withExtension(".ignore").exists) continue; string mainsrc = extraSourceOf(src.name); From cf03a7074f606201a12bcf1146d7ea912f57fb54 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 1 Apr 2016 12:28:43 +0200 Subject: [PATCH 431/768] add comment how to run plot.R --- benchmark/arrayops/plot.R | 2 ++ 1 file changed, 2 insertions(+) diff --git a/benchmark/arrayops/plot.R b/benchmark/arrayops/plot.R index c193ee0831..6574f03ea8 100644 --- a/benchmark/arrayops/plot.R +++ b/benchmark/arrayops/plot.R @@ -1,3 +1,5 @@ +# Use `R --vanilla < plot.R` to run this script. +# It will read all *.csv files from the current folder and create a comparison plot for them. library(ggplot2) library(dplyr) library(tidyr) From d01bfce7a8e2b7e9ed62eb41e82f75be9239a03d Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 1 Apr 2016 12:34:30 +0200 Subject: [PATCH 432/768] use non-trivial values for arrayops - e.g. to avoid optimizing out `* 1` --- benchmark/arrayops/arrayops.d | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/benchmark/arrayops/arrayops.d b/benchmark/arrayops/arrayops.d index 560ccb4670..4ad07e9f46 100644 --- a/benchmark/arrayops/arrayops.d +++ b/benchmark/arrayops/arrayops.d @@ -12,9 +12,9 @@ float[6] getLatencies(T, string op)() { enum N = 256; auto a = new T[](N), b = new T[](N), c = new T[](N); - a[] = 3; - b[] = 2; - c[] = 1; + a[] = 19; + b[] = 11; + c[] = 7; float[6] latencies = float.max; foreach (i, ref latency; latencies) { @@ -25,7 +25,7 @@ float[6] getLatencies(T, string op)() foreach (off; 0 .. 1_024) { off &= 127; - enum op = op.replace("const", "1").replace("a", + enum op = op.replace("const", "7").replace("a", "a[off .. off + len]").replace("b", "b[off .. off + len]").replace("c", "c[off .. off + len]"); mixin(op ~ ";"); @@ -41,9 +41,9 @@ float[4] getThroughput(T, string op)() { enum N = (40 * 1024 * 1024 + 64) / T.sizeof; auto a = new T[](N), b = new T[](N), c = new T[](N); - a[] = 3; - b[] = 2; - c[] = 1; + a[] = 19; + b[] = 11; + c[] = 7; float[4] latencies = float.max; size_t[4] lengths = [ 8 * 1024 / T.sizeof, 32 * 1024 / T.sizeof, 512 * 1024 / T.sizeof, 32 * 1024 * 1024 / T @@ -58,7 +58,7 @@ float[4] getThroughput(T, string op)() foreach (off; size_t(0) .. size_t(64)) { off = off * len + (off % (64 / T.sizeof)); - enum op = op.replace("const", "1").replace("a", + enum op = op.replace("const", "7").replace("a", "a[off .. off + len]").replace("b", "b[off .. off + len]").replace("c", "c[off .. off + len]"); mixin(op ~ ";"); From a77d89bfa1af4fa9395aeb41439e03510c844f14 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 3 Apr 2016 13:06:49 +0200 Subject: [PATCH 433/768] flush denormals to zero --- benchmark/arrayops/arrayops.d | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/benchmark/arrayops/arrayops.d b/benchmark/arrayops/arrayops.d index 4ad07e9f46..b85b11f204 100644 --- a/benchmark/arrayops/arrayops.d +++ b/benchmark/arrayops/arrayops.d @@ -94,8 +94,34 @@ void runOp(string op)() getLatencies!(T, op), getThroughput!(T, op)); } +version (X86) + version = SSE; +else version (X86_64) + version = SSE; +else + static assert(0, "unimplemented"); + +void ignoreDenormals() +{ + version (SSE) + { + uint mxcsr = void; + asm + { + stmxcsr mxcsr; + } + mxcsr |= 0x8000 | 0x0040; // FTZ and DAZ + asm + { + ldmxcsr mxcsr; + } + } +} + void main() { + ignoreDenormals(); + writefln("type, op, %(latency%s, %), %-(throughput%s, %)", iota(6) .map!(i => 1 << i), ["8KB", "32KB", "512KB", "32MB"]); foreach (op; mixin("AliasSeq!(%(%s, %))".format(genOps))) From 0b778d0b3afd6719f95edc20cebf0502004d32cd Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 3 Apr 2016 13:07:04 +0200 Subject: [PATCH 434/768] malloc/free arrays --- benchmark/arrayops/arrayops.d | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/benchmark/arrayops/arrayops.d b/benchmark/arrayops/arrayops.d index b85b11f204..93935b8c4a 100644 --- a/benchmark/arrayops/arrayops.d +++ b/benchmark/arrayops/arrayops.d @@ -11,7 +11,7 @@ import core.cpuid, std.algorithm, std.datetime, std.meta, std.stdio, std.string, float[6] getLatencies(T, string op)() { enum N = 256; - auto a = new T[](N), b = new T[](N), c = new T[](N); + auto a = Array!T(N), b = Array!T(N), c = Array!T(N); a[] = 19; b[] = 11; c[] = 7; @@ -40,7 +40,7 @@ float[6] getLatencies(T, string op)() float[4] getThroughput(T, string op)() { enum N = (40 * 1024 * 1024 + 64) / T.sizeof; - auto a = new T[](N), b = new T[](N), c = new T[](N); + auto a = Array!T(N), b = Array!T(N), c = Array!T(N); a[] = 19; b[] = 11; c[] = 7; @@ -94,6 +94,24 @@ void runOp(string op)() getLatencies!(T, op), getThroughput!(T, op)); } +struct Array(T) +{ + import core.stdc.stdlib : free, malloc; + + this(size_t n) + { + ary = (cast(T*) malloc(T.sizeof * n))[0 .. n]; + } + + ~this() + { + free(ary.ptr); + } + + T[] ary; + alias ary this; +} + version (X86) version = SSE; else version (X86_64) From dcd31e0af099372b5390bbb3af44de96cb38f0b8 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 5 Aug 2016 16:29:01 +0200 Subject: [PATCH 435/768] avoid FPU exceptions - reinitialize arrays - use numbers that can be precisely divided in all operations - avoid overlapping of operations - enable FPU exceptions during testing --- benchmark/arrayops/arrayops.d | 84 ++++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 22 deletions(-) diff --git a/benchmark/arrayops/arrayops.d b/benchmark/arrayops/arrayops.d index 93935b8c4a..ca35387d4a 100644 --- a/benchmark/arrayops/arrayops.d +++ b/benchmark/arrayops/arrayops.d @@ -10,22 +10,22 @@ import core.cpuid, std.algorithm, std.datetime, std.meta, std.stdio, std.string, float[6] getLatencies(T, string op)() { - enum N = 256; + enum N = (64 * (1 << 6) + 64) * T.sizeof; auto a = Array!T(N), b = Array!T(N), c = Array!T(N); - a[] = 19; - b[] = 11; - c[] = 7; float[6] latencies = float.max; foreach (i, ref latency; latencies) { auto len = 1 << i; foreach (_; 1 .. 32) { + a[] = 24; + b[] = 4; + c[] = 2; auto sw = StopWatch(AutoStart.yes); - foreach (off; 0 .. 1_024) + foreach (off; size_t(0) .. size_t(64)) { - off &= 127; - enum op = op.replace("const", "7").replace("a", + off = off * len + off; + enum op = op.replace("const", "2").replace("a", "a[off .. off + len]").replace("b", "b[off .. off + len]").replace("c", "c[off .. off + len]"); mixin(op ~ ";"); @@ -39,11 +39,8 @@ float[6] getLatencies(T, string op)() float[4] getThroughput(T, string op)() { - enum N = (40 * 1024 * 1024 + 64) / T.sizeof; + enum N = (40 * 1024 * 1024 + 64 * T.sizeof) / T.sizeof; auto a = Array!T(N), b = Array!T(N), c = Array!T(N); - a[] = 19; - b[] = 11; - c[] = 7; float[4] latencies = float.max; size_t[4] lengths = [ 8 * 1024 / T.sizeof, 32 * 1024 / T.sizeof, 512 * 1024 / T.sizeof, 32 * 1024 * 1024 / T @@ -54,19 +51,24 @@ float[4] getThroughput(T, string op)() auto len = lengths[i] / 64; foreach (_; 1 .. 4) { + a[] = 24; + b[] = 4; + c[] = 2; auto sw = StopWatch(AutoStart.yes); foreach (off; size_t(0) .. size_t(64)) { - off = off * len + (off % (64 / T.sizeof)); - enum op = op.replace("const", "7").replace("a", + off = off * len + off; + enum op = op.replace("const", "2").replace("a", "a[off .. off + len]").replace("b", "b[off .. off + len]").replace("c", "c[off .. off + len]"); mixin(op ~ ";"); } - latency = min(latency, sw.peek.nsecs); + immutable nsecs = sw.peek.nsecs; + runMasked({latency = min(latency, nsecs);}); } } - float[4] throughputs = T.sizeof * lengths[] / latencies[]; + float[4] throughputs = void; + runMasked({throughputs = T.sizeof * lengths[] / latencies[];}); return throughputs; } @@ -119,29 +121,67 @@ else version (X86_64) else static assert(0, "unimplemented"); -void ignoreDenormals() +version (SSE) { - version (SSE) + uint mxcsr() { - uint mxcsr = void; + uint ret = void; asm { - stmxcsr mxcsr; + stmxcsr ret; } - mxcsr |= 0x8000 | 0x0040; // FTZ and DAZ + return ret; + } + + void mxcsr(uint val) + { asm { - ldmxcsr mxcsr; + ldmxcsr val; } } + + // http://softpixel.com/~cwright/programming/simd/sse.php + enum FPU_EXCEPTION_MASKS = 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 7; + enum FPU_EXCEPTION_FLAGS = 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0; + + void maskFPUExceptions() + { + mxcsr = mxcsr | FPU_EXCEPTION_MASKS; + } + + void unmaskFPUExceptions() + { + mxcsr = mxcsr & ~FPU_EXCEPTION_MASKS; + } + + uint FPUExceptionFlags() + { + return mxcsr & FPU_EXCEPTION_FLAGS; + } + + void clearFPUExceptionFlags() + { + mxcsr = mxcsr & ~FPU_EXCEPTION_FLAGS; + } +} + +void runMasked(scope void delegate() dg) +{ + assert(FPUExceptionFlags == 0); + maskFPUExceptions; + dg(); + clearFPUExceptionFlags; + unmaskFPUExceptions; } void main() { - ignoreDenormals(); + unmaskFPUExceptions; writefln("type, op, %(latency%s, %), %-(throughput%s, %)", iota(6) .map!(i => 1 << i), ["8KB", "32KB", "512KB", "32MB"]); foreach (op; mixin("AliasSeq!(%(%s, %))".format(genOps))) runOp!op; + maskFPUExceptions; } From 66a5250b9a3f7c04964a249e481b513ba88632c4 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 6 Aug 2016 11:00:31 +0200 Subject: [PATCH 436/768] fix alignment of authors section - seem to annoy people w/ monospace fonts --- benchmark/aabench/bigval.d | 2 +- benchmark/aabench/bulk.d | 2 +- benchmark/aabench/int.d | 2 +- benchmark/aabench/l3cache.d | 2 +- benchmark/aabench/obj.d | 2 +- benchmark/aabench/ptr.d | 2 +- benchmark/aabench/resize.d | 2 +- benchmark/aabench/stomper.d | 2 +- benchmark/aabench/string.d | 2 +- benchmark/arrayops/arrayops.d | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/benchmark/aabench/bigval.d b/benchmark/aabench/bigval.d index b26118b386..bac10987ae 100644 --- a/benchmark/aabench/bigval.d +++ b/benchmark/aabench/bigval.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Martin Nowak 2011 - 2015. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Martin Nowak + * Authors: Martin Nowak */ void main(string[] args) { diff --git a/benchmark/aabench/bulk.d b/benchmark/aabench/bulk.d index f5d6e3a43e..00943fd470 100644 --- a/benchmark/aabench/bulk.d +++ b/benchmark/aabench/bulk.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Martin Nowak 2011 - 2011. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Martin Nowak + * Authors: Martin Nowak */ import std.random, std.typetuple, std.conv; diff --git a/benchmark/aabench/int.d b/benchmark/aabench/int.d index eefe582fd2..38c0bc36c0 100644 --- a/benchmark/aabench/int.d +++ b/benchmark/aabench/int.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Martin Nowak 2011 - 2015. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Martin Nowak + * Authors: Martin Nowak */ import std.random; diff --git a/benchmark/aabench/l3cache.d b/benchmark/aabench/l3cache.d index 8d5e34ac5c..2ec198cd15 100644 --- a/benchmark/aabench/l3cache.d +++ b/benchmark/aabench/l3cache.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Martin Nowak 2011 - 2015. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Martin Nowak + * Authors: Martin Nowak */ void main(string[] args) { diff --git a/benchmark/aabench/obj.d b/benchmark/aabench/obj.d index 12047a5997..ff0be555f9 100644 --- a/benchmark/aabench/obj.d +++ b/benchmark/aabench/obj.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Martin Nowak 2011 - 2015. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Martin Nowak + * Authors: Martin Nowak */ import std.random; diff --git a/benchmark/aabench/ptr.d b/benchmark/aabench/ptr.d index fd4dfa93e6..461e103f47 100644 --- a/benchmark/aabench/ptr.d +++ b/benchmark/aabench/ptr.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Martin Nowak 2011 - 2015. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Martin Nowak + * Authors: Martin Nowak */ import std.random; diff --git a/benchmark/aabench/resize.d b/benchmark/aabench/resize.d index 0b994a67e0..34848bed1b 100644 --- a/benchmark/aabench/resize.d +++ b/benchmark/aabench/resize.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Martin Nowak 2011 - 2011. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Martin Nowak + * Authors: Martin Nowak */ import std.random; diff --git a/benchmark/aabench/stomper.d b/benchmark/aabench/stomper.d index 1541d12d38..f3e9f8a1bb 100644 --- a/benchmark/aabench/stomper.d +++ b/benchmark/aabench/stomper.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Martin Nowak 2015 - . * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Martin Nowak + * Authors: Martin Nowak */ import std.file, std.algorithm, std.random, std.math; diff --git a/benchmark/aabench/string.d b/benchmark/aabench/string.d index 76a1c8e3cf..5fc4ebdb61 100644 --- a/benchmark/aabench/string.d +++ b/benchmark/aabench/string.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Martin Nowak 2011 - 2015. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Martin Nowak + * Authors: Martin Nowak */ module aabench.string; diff --git a/benchmark/arrayops/arrayops.d b/benchmark/arrayops/arrayops.d index ca35387d4a..60490b02d7 100644 --- a/benchmark/arrayops/arrayops.d +++ b/benchmark/arrayops/arrayops.d @@ -3,7 +3,7 @@ * * Copyright: Copyright Martin Nowak 2016 -. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Authors: Martin Nowak + * Authors: Martin Nowak */ import core.cpuid, std.algorithm, std.datetime, std.meta, std.stdio, std.string, std.range; From 2d9a4f83bab73e287cdefe4eebc1891d5b77f467 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 6 Aug 2016 17:29:39 +0200 Subject: [PATCH 437/768] add codecov configuration to disable comments --- .codecov.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .codecov.yml diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 0000000000..f12d35d0ac --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,13 @@ +# https://github.com/codecov/support/blob/master/codecov.yml +coverage: + precision: 2 + round: down + range: 70...100 + + status: + # Learn more at https://codecov.io/docs#yaml_default_commit_status + project: true + patch: true + changes: false + +comment: false From 0c5030f10f0f9dcffc242d07024929f46c8d3c5b Mon Sep 17 00:00:00 2001 From: anonymous Date: Sun, 7 Aug 2016 19:05:57 +0200 Subject: [PATCH 438/768] add @nogc to bytesHash --- src/core/internal/hash.d | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/internal/hash.d b/src/core/internal/hash.d index 3aa1527738..fc2d88bdd4 100644 --- a/src/core/internal/hash.d +++ b/src/core/internal/hash.d @@ -432,10 +432,10 @@ version(AnyX86) } } -@trusted pure nothrow +@trusted pure nothrow @nogc size_t bytesHash(const(void)* buf, size_t len, size_t seed = 0) { - static uint rotl32(uint n)(in uint x) pure nothrow @safe + static uint rotl32(uint n)(in uint x) pure nothrow @safe @nogc { return (x << n) | (x >> (32 - n)); } @@ -443,7 +443,7 @@ size_t bytesHash(const(void)* buf, size_t len, size_t seed = 0) //----------------------------------------------------------------------------- // Block read - if your platform needs to do endian-swapping or can only // handle aligned reads, do the conversion here - static uint get32bits(const (ubyte)* x) pure nothrow + static uint get32bits(const (ubyte)* x) pure nothrow @nogc { //Compiler can optimize this code to simple *cast(uint*)x if it possible. version(HasUnalignedOps) @@ -463,7 +463,7 @@ size_t bytesHash(const(void)* buf, size_t len, size_t seed = 0) //----------------------------------------------------------------------------- // Finalization mix - force all bits of a hash block to avalanche - static uint fmix32(uint h) pure nothrow @safe + static uint fmix32(uint h) pure nothrow @safe @nogc { h ^= h >> 16; h *= 0x85ebca6b; @@ -520,7 +520,7 @@ size_t bytesHash(const(void)* buf, size_t len, size_t seed = 0) } // Check that bytesHash works with CTFE -unittest +pure nothrow @safe @nogc unittest { size_t ctfeHash(string x) { From 4784c7d9dee929f632bf327604134b33aa31f41d Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sun, 7 Aug 2016 19:24:22 +0200 Subject: [PATCH 439/768] Make Coverage checking more stable --- .travis.yml | 37 --------------------------- circle.yml | 16 ++++++++++++ circleci.sh | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++ posix.mak | 5 ++++ 4 files changed, 95 insertions(+), 37 deletions(-) delete mode 100644 .travis.yml create mode 100644 circle.yml create mode 100755 circleci.sh diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 4474a78cc3..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,37 +0,0 @@ -sudo: false -os: linux -language: d -d: dmd-2.071.0 -git: - depth: 1 -install: - - mkdir druntime - - ls -1 | grep -v ^druntime | xargs -I{} mv {} druntime - - git clone --depth=1 https://github.com/dlang/dmd -# Dscanner should be enabled soon -#- git clone https://github.com/Hackerpilot/Dscanner -#- (cd Dscanner && git checkout tags/v0.4.0-alpha.8) -#- (cd Dscanner && git submodule update --init --recursive) -## debug build is faster, but disable 'missing import' messages (missing core from druntime) -#- (cd Dscanner && sed 's/dparse_verbose/StdLoggerDisableWarning/' -i makefile && make githash debug) -## avoid checking it's dscanner's directory -script: - - echo "Checking for trailing whitespace" - - rdmd ./dmd/src/checkwhitespace.d $(find druntime -name '*.d') -# This should be enabled over time -#- echo "Enforce whitespace between statements" -#- (cd druntime && grep -nE "(for|foreach|foreach_reverse|if|while|switch|catch)\(" $(find src -name '*.d'); test $? -eq 1) -#- echo "Enforce whitespace between colon(:) for import statements (doesn't catch everything)" -#- (cd druntime && grep -n 'import [^/,=]*:.*;' $(find src -name '*.d') | grep -vE "import ([^ ]+) :\s"; test $? -eq 1) -#- echo "Enforce Allman style" -#- (cd druntime && grep -nE '(if|for|foreach|foreach_reverse|while|unittest|switch|else|version) .*{$' $(find src -name '*.d'); test $? -eq 1) -#- echo "Running DScanner" -#- (cd druntime && ../Dscanner/dsc --config ../.dscanner.ini --styleCheck src) - # test code coverage - - (cd dmd && make -f posix.mak) - - (cd druntime && TEST_COVERAGE="1" make -f posix.mak unittest-debug) - # ignore stored coverage reports - - rm -r dmd/test/runnable/extra-files - - rm -r druntime/test/coverage/generated -after_success: - - (cd druntime && bash <(curl -s https://codecov.io/bash)) diff --git a/circle.yml b/circle.yml new file mode 100644 index 0000000000..2ef12a63c4 --- /dev/null +++ b/circle.yml @@ -0,0 +1,16 @@ +dependencies: + pre: + - ./circleci.sh install-deps + cache_directories: + - "~/dlang" + +test: + override: + - make -f posix.mak style + - ./circleci.sh coverage: + parallel: true + + post: + # CodeCov gets confused by stored .lst files + - rm -rf test/coverage/generated + - bash <(curl -s https://codecov.io/bash) diff --git a/circleci.sh b/circleci.sh new file mode 100755 index 0000000000..7db45a8e95 --- /dev/null +++ b/circleci.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +set -uexo pipefail + +HOST_DMD_VER=2.068.2 # same as in dmd/src/posix.mak +CURL_USER_AGENT="CirleCI $(curl --version | head -n 1)" +N=2 + +case $CIRCLE_NODE_INDEX in + 0) MODEL=64 ;; + 1) MODEL=32 ;; +esac + +install_deps() { + if [ $MODEL -eq 32 ]; then + sudo apt-get update + sudo apt-get install g++-multilib + fi + + for i in {0..4}; do + if curl -fsS -A "$CURL_USER_AGENT" --max-time 5 https://dlang.org/install.sh -O; then + break + elif [ $i -ge 4 ]; then + sleep $((1 << $i)) + else + echo 'Failed to download install script' 1>&2 + exit 1 + fi + done + + source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash install.sh dmd-$HOST_DMD_VER --activate)" + $DC --version + env +} + +# clone dmd +clone() { + local url="$1" + local path="$2" + local branch="$3" + for i in {0..4}; do + if git clone --depth=1 --branch "$branch" "$url" "$path"; then + break + elif [ $i -lt 4 ]; then + sleep $((1 << $i)) + else + echo "Failed to clone: ${url}" + exit 1 + fi + done +} + +coverage() { + if [ -n ${CIRCLE_PR_NUMBER:-} ]; then + local base_branch=$(curl -fsSL https://api.github.com/repos/dlang/dmd/pulls/$CIRCLE_PR_NUMBER | jq -r '.base.ref') + else + local base_branch=$CIRCLE_BRANCH + fi + + clone https://github.com/dlang/dmd.git ../dmd $base_branch + + # load environment for bootstrap compiler + source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash ~/dlang/install.sh dmd-$HOST_DMD_VER --activate)" + + # build dmd and druntime + make -j$N -C ../dmd/src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD all + make -j$N -C ../dmd/src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD dmd.conf + TEST_COVERAGE="1" make -j$N -C . -f posix.mak MODEL=$MODEL unittest-debug +} + +case $1 in + install-deps) install_deps ;; + coverage) coverage ;; +esac diff --git a/posix.mak b/posix.mak index c4c4d95be7..c3ba4ccd9f 100644 --- a/posix.mak +++ b/posix.mak @@ -304,6 +304,11 @@ clean: $(addsuffix /.clean,$(ADDITIONAL_TESTS)) test/%/.clean: test/%/Makefile $(MAKE) -C test/$* clean +# Submission to Druntime are required to conform to the DStyle +# The tests below automate some, but not all parts of the DStyle guidelines. +# See: http://dlang.org/dstyle.html +style: checkwhitespace + .PHONY : auto-tester-build auto-tester-build: target checkwhitespace From bb76410a3d973b5022b69608cbf4fb495d5af01b Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Wed, 10 Aug 2016 03:21:50 -0700 Subject: [PATCH 440/768] hash.d: make .ptr @safe --- src/core/internal/hash.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/internal/hash.d b/src/core/internal/hash.d index fc2d88bdd4..f6ef9a2019 100644 --- a/src/core/internal/hash.d +++ b/src/core/internal/hash.d @@ -529,5 +529,5 @@ pure nothrow @safe @nogc unittest enum test_str = "Sample string"; enum size_t hashVal = ctfeHash(test_str); - assert(hashVal == bytesHash(test_str.ptr, test_str.length)); + assert(hashVal == bytesHash(&test_str[0], test_str.length)); } From c9dacd5dec4f941d44f22dcb80274d107653c3cd Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Wed, 10 Aug 2016 16:37:39 -0700 Subject: [PATCH 441/768] @trusted function is really @system --- src/core/internal/hash.d | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/core/internal/hash.d b/src/core/internal/hash.d index f6ef9a2019..a27def99b5 100644 --- a/src/core/internal/hash.d +++ b/src/core/internal/hash.d @@ -432,8 +432,9 @@ version(AnyX86) } } -@trusted pure nothrow @nogc -size_t bytesHash(const(void)* buf, size_t len, size_t seed = 0) + +@system pure nothrow @nogc +size_t bytesHash(const(void)* buf, size_t len, size_t seed) { static uint rotl32(uint n)(in uint x) pure nothrow @safe @nogc { @@ -520,14 +521,14 @@ size_t bytesHash(const(void)* buf, size_t len, size_t seed = 0) } // Check that bytesHash works with CTFE -pure nothrow @safe @nogc unittest +pure nothrow @system @nogc unittest { size_t ctfeHash(string x) { - return bytesHash(x.ptr, x.length); + return bytesHash(x.ptr, x.length, 0); } enum test_str = "Sample string"; enum size_t hashVal = ctfeHash(test_str); - assert(hashVal == bytesHash(&test_str[0], test_str.length)); + assert(hashVal == bytesHash(&test_str[0], test_str.length, 0)); } From 4b161d5771b458916cc1503969d592c89cc5768b Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 28 Jun 2016 16:29:20 -0400 Subject: [PATCH 442/768] Fixes issue 16211 - Fix cycle detection algorithm. Left the old algorithm there to make the diff uncomplicated. --- src/rt/minfo.d | 418 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 384 insertions(+), 34 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 94aa32a806..bf58c90185 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -60,6 +60,339 @@ struct ModuleGroup * Throws: * Exception if it fails. */ + version(all) + { + void sortCtors() + { + debug(printModuleDependencies) + { + import core.stdc.stdio : printf; + foreach(_m; _modules) + { + printf("%s%s%s:", _m.name.ptr, (_m.flags & MIstandalone) ? "+".ptr : "".ptr, (_m.flags & (MIctor | MIdtor)) ? "*".ptr : "".ptr); + foreach(_i; _m.importedModules) + printf(" %s", _i.name.ptr); + printf("\n"); + } + } + + immutable len = _modules.length; + + // This is ugly to say the least. Would be nice to use a binary + // search at least instead of linear... + int findModule(in ModuleInfo* mi) + { + foreach (i, m; _modules) + if (m is mi) return cast(int)i; + return -1; + } + + // allocate the two constructor lists. These will be stored for life of + // the program, so use malloc. + _ctors = (cast(immutable(ModuleInfo)**).malloc(len * (void*).sizeof))[0 .. len]; + _tlsctors = (cast(immutable(ModuleInfo)**).malloc(len * (void*).sizeof))[0 .. len]; + + // Start out doing the shared ctors. The destruction is done in reverse. + auto ctors = _ctors; + // current element being inserted into ctors list. + size_t ctoridx = 0; + + // allocate some stack arrays that will be used throughout the process. + ubyte* p = cast(ubyte *)alloca(len * ubyte.sizeof); + auto reachable = p[0 .. len]; + + p = cast(ubyte *)alloca(len * ubyte.sizeof); + auto flags = p[0 .. len]; + + + // use this to hold the error message. + string errmsg = null; + + void print(string[] msgs...) + { + foreach (m; msgs) + { + // save to the error message. Note that if we are throwing an + // exception, we don't care about being careful with using + // stack memory. Just use the GC/runtime. + errmsg ~= m; + } + } + + void println(string[] msgs...) + { + print(msgs); + version(Windows) + print("\r\n"); + else + print("\n"); + } + + // this set of functions helps create a valid path between two + // interdependent modules. This is only used if a cycle is found, to + // print the cycle to the user. Therefore, we don't initialize the data + // until we have to. + int[] cyclePath; + int[] distance; + int[][] edges; + + // determine the shortest path between two modules. Uses dijkstra + // without a priority queue. (we can be a bit slow here, in order to + // get a better printout). + void shortest(int start, int target) + { + // initial setup + distance[] = int.max; + int curdist = 0; + distance[start] = 0; + while(true) + { + bool done = true; + foreach(i, x; distance) + { + if(x == curdist) + { + if(i == target) + { + done = true; + break; + } + foreach(n; edges[i]) + { + if(distance[n] == int.max) + { + distance[n] = curdist + 1; + done = false; + } + } + } + } + if(done) + break; + ++curdist; + } + // it should be impossible to not get to target, this is just a + // sanity check. Not an assert, because druntime is compiled in + // release mode. + if(distance[target] != curdist) + { + throw new Error("internal error printing module cycle"); + } + + // determine the path. This is tricky, because we have to + // follow the edges in reverse to get back to the original. We + // don't have a reverse mapping, so it takes a bit of looping. + cyclePath.length += curdist; + auto subpath = cyclePath[$-curdist .. $]; + while(true) + { + --curdist; + subpath[curdist] = target; + if(curdist == 0) + break; +distloop: + // search for next (previous) module in cycle. + foreach(int m, d; distance) + { + if(d == curdist) + { + // determine if m can reach target + foreach(e; edges[m]) + { + if(e == target) + { + // recurse + target = m; + break distloop; + } + } + } + } + } + } + + // this function initializes the bookeeping necessary to create the + // cycle path, and then creates it. It is a precondition that src and + // target modules are involved in a cycle + void genPath(int srcidx, int targetidx) + { + assert(srcidx != -1); + assert(targetidx != -1); + + // set up all the arrays. Use the GC, we are going to exit anyway. + distance.length = len; + edges.length = len; + foreach(i, m; _modules) + { + // use reachable, because an import can appear more than once. + // https://issues.dlang.org/show_bug.cgi?id=16208 + reachable[] = 0; + foreach(e; m.importedModules) + { + auto impidx = findModule(e); + if(impidx != -1 && impidx != i) + reachable[impidx] = 1; + } + + foreach(int j, r; reachable) + { + if(r) + edges[i] ~= j; + } + } + + // a cycle starts with the source. + cyclePath ~= srcidx; + // first get to the target + shortest(srcidx, targetidx); + // now get back. + shortest(targetidx, srcidx); + } + + // find all the non-trivial dependencies (that is, dependencies that have a + // ctor or dtor) of a given module. Doing this, we can 'skip over' the + // trivial modules to get at the non-trivial ones. + size_t _findDependencies(int idx, bool orig = true) + { + if(reachable[idx]) + return 0; + auto current = _modules[idx]; + size_t result = 0; + reachable[idx] = 1; + if(!orig && (flags[idx] & (MIctor | MIdtor)) && !(flags[idx] & MIstandalone)) + // non-trivial, stop here + return result + 1; + foreach (m; current.importedModules) + { + auto midx = findModule(m); + if(midx != -1) + // not part of this DSO, don't consider it. + result += _findDependencies(midx, false); + } + return result; + } + + // This function will determine the order of construction/destruction and + // check for cycles. If a cycle is found, the cycle path is transformed + // into a string and thrown as an error. + // + // Each call into this function is given a module that has static + // ctor/dtors that must be dealt with. It recurses only when it finds + // dependencies that also have static ctor/dtors. + void _checkModCtors2(int curidx) + { + assert(curidx != -1); + immutable ModuleInfo* current = _modules[curidx]; + + // we only get called if current has a dtor or a ctor, so no need to + // check that. First, determine what non-trivial elements are + // reachable. + reachable[] = 0; + auto nmodules = _findDependencies(curidx); + + // allocate the dependencies on the stack + auto p = cast(int *)alloca(nmodules * int.sizeof); + auto dependencies = p[0 .. nmodules]; + uint depidx = 0; + // fill in the dependencies + foreach (int i, r; reachable) + { + if(r && i != curidx) + { + if((flags[i] & (MIctor | MIdtor)) && !(flags[i] & MIstandalone)) + { + dependencies[depidx++] = i; + } + } + } + assert(depidx == nmodules); + + // ok, now perform cycle detection + flags[curidx] |= MIctorstart; + foreach (m; dependencies) + { + auto mflags = flags[m]; + if(mflags & MIctorstart) + { + // found a cycle + println("Cyclic dependency between module ", _modules[m].name, " and ", current.name); + genPath(m, curidx); + + foreach(midx; cyclePath[0 .. $-1]) + { + println(_modules[midx].name, (flags[midx] & (MIctor | MIdtor)) ? "* ->" : " ->"); + } + println(_modules[m].name, "*"); + throw new Error(errmsg); + } + else if(!(mflags & MIctordone)) + { + _checkModCtors2(m); + } + } + flags[curidx] = (flags[curidx] & ~MIctorstart) | MIctordone; + // add this module to the construction order list + ctors[ctoridx++] = current; + } + + void _checkModCtors3() + { + foreach (int idx, m; _modules) + { + // TODO: Should null ModuleInfo be allowed? + if (m is null) continue; + auto flag = flags[idx]; + if((flag & (MIctor | MIdtor)) && !(flag & MIctordone)) + { + if(flag & MIstandalone) + { + // no need to run a check on this one, but we do need to call its ctor/dtor + ctors[ctoridx++] = m; + } + else + _checkModCtors2(idx); + } + } + } + + // initialize the flags for the first run (shared ctors). + foreach (uint i, m; _modules) + { + // TODO: Should null ModuleInfo be allowed? + if (m is null) continue; + ubyte flag = m.flags & MIstandalone; + if(m.dtor) + flag |= MIdtor; + if(m.ctor) + flag |= MIctor; + flags[i] = flag; + } + + _checkModCtors3(); + + // _ctors is now valid up to ctoridx + _ctors = _ctors[0 .. ctoridx]; + + // tls ctors/dtors + ctors = _tlsctors; + ctoridx = 0; + foreach (i, m; modules) + { + // TODO: Should null ModuleInfo be allowed? + if (m is null) continue; + ubyte flag = m.flags & MIstandalone; + if(m.tlsdtor) + flag |= MIdtor; + if(m.tlsctor) + flag |= MIctor; + flags[i] = flag; + } + _checkModCtors3(); + _tlsctors = _tlsctors[0 .. ctoridx]; + } + } + else + { void sortCtors() { immutable len = _modules.length; @@ -198,7 +531,7 @@ struct ModuleGroup { /* Internal runtime error, recursion exceeds number of modules. */ - (stackidx < _modules.length) || assert(0); + (stackidx < stack.length) || assert(0); // recurse stack[stackidx++] = StackRec(mods, idx); @@ -231,6 +564,7 @@ struct ModuleGroup sort(_ctors, MIctor | MIdtor); sort(_tlsctors, MItlsctor | MItlsdtor); } + } void runCtors() { @@ -382,13 +716,13 @@ void runModuleFuncsRev(alias getfp)(const(immutable(ModuleInfo)*)[] modules) unittest { - static void assertThrown(T : Throwable, E)(lazy E expr) + static void assertThrown(T : Throwable, E)(lazy E expr, string msg) { try expr; catch (T) return; - assert(0); + assert(0, msg); } static void stub() @@ -435,52 +769,54 @@ unittest return mi; } - static void checkExp( + static void checkExp(string testname, bool shouldThrow, immutable(ModuleInfo*)[] modules, immutable(ModuleInfo*)[] dtors=null, immutable(ModuleInfo*)[] tlsdtors=null) { auto mgroup = ModuleGroup(modules); mgroup.sortCtors(); - foreach (m; mgroup._modules) - assert(!(m.flags & (MIctorstart | MIctordone))); - assert(mgroup._ctors == dtors); - assert(mgroup._tlsctors == tlsdtors); + + // if we are expecting sort to throw, don't throw because of unexpected + // success! + if(!shouldThrow) + { + foreach (m; mgroup._modules) + assert(!(m.flags & (MIctorstart | MIctordone)), testname); + assert(mgroup._ctors == dtors, testname); + assert(mgroup._tlsctors == tlsdtors, testname); + } } - // no ctors { auto m0 = mockMI(0); auto m1 = mockMI(0); auto m2 = mockMI(0); - checkExp([&m0.mi, &m1.mi, &m2.mi]); + checkExp("no ctors", false, [&m0.mi, &m1.mi, &m2.mi]); } - // independent ctors { auto m0 = mockMI(MIictor); auto m1 = mockMI(0); auto m2 = mockMI(MIictor); auto mgroup = ModuleGroup([&m0.mi, &m1.mi, &m2.mi]); - checkExp([&m0.mi, &m1.mi, &m2.mi]); + checkExp("independent ctors", false, [&m0.mi, &m1.mi, &m2.mi]); } - // standalone ctor { auto m0 = mockMI(MIstandalone | MIctor); auto m1 = mockMI(0); auto m2 = mockMI(0); auto mgroup = ModuleGroup([&m0.mi, &m1.mi, &m2.mi]); - checkExp([&m0.mi, &m1.mi, &m2.mi], [&m0.mi]); + checkExp("standalone ctor", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi]); } - // imported standalone => no dependency { auto m0 = mockMI(MIstandalone | MIctor); auto m1 = mockMI(MIstandalone | MIctor); auto m2 = mockMI(0); m1.setImports(&m0.mi); - checkExp([&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); + checkExp("imported standalone => no dependency", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); } { @@ -488,26 +824,24 @@ unittest auto m1 = mockMI(MIstandalone | MIctor); auto m2 = mockMI(0); m0.setImports(&m1.mi); - checkExp([&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); + checkExp("imported standalone => no dependency (2)", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); } - // standalone may have cycle { auto m0 = mockMI(MIstandalone | MIctor); auto m1 = mockMI(MIstandalone | MIctor); auto m2 = mockMI(0); m0.setImports(&m1.mi); m1.setImports(&m0.mi); - checkExp([&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); + checkExp("standalone may have cycle", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); } - // imported ctor => ordered ctors { auto m0 = mockMI(MIctor); auto m1 = mockMI(MIctor); auto m2 = mockMI(0); m1.setImports(&m0.mi); - checkExp([&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi], []); + checkExp("imported ctor => ordered ctors", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi], []); } { @@ -515,27 +849,34 @@ unittest auto m1 = mockMI(MIctor); auto m2 = mockMI(0); m0.setImports(&m1.mi); - assert(m0.importedModules == [&m1.mi]); - checkExp([&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], []); + checkExp("imported ctor => ordered ctors (2)", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], []); } - // detects ctors cycles { auto m0 = mockMI(MIctor); auto m1 = mockMI(MIctor); auto m2 = mockMI(0); m0.setImports(&m1.mi); m1.setImports(&m0.mi); - assertThrown!Throwable(checkExp([&m0.mi, &m1.mi, &m2.mi])); + assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), "detects ctors cycles"); + } + + { + auto m0 = mockMI(MIctor); + auto m1 = mockMI(MIctor); + auto m2 = mockMI(0); + m0.setImports(&m2.mi); + m1.setImports(&m2.mi); + m2.setImports(&m0.mi, &m1.mi); + assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), "detects cycle with repeats"); } - // imported ctor/tlsctor => ordered ctors/tlsctors { auto m0 = mockMI(MIctor); auto m1 = mockMI(MIctor); auto m2 = mockMI(MItlsctor); m0.setImports(&m1.mi, &m2.mi); - checkExp([&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi]); + checkExp("imported ctor/tlsctor => ordered ctors/tlsctors", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi]); } { @@ -543,30 +884,37 @@ unittest auto m1 = mockMI(MIctor); auto m2 = mockMI(MItlsctor); m0.setImports(&m1.mi, &m2.mi); - checkExp([&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi, &m0.mi]); + checkExp("imported ctor/tlsctor => ordered ctors/tlsctors (2)", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi, &m0.mi]); } - // no cycle between ctors/tlsctors { auto m0 = mockMI(MIctor); auto m1 = mockMI(MIctor); auto m2 = mockMI(MItlsctor); m0.setImports(&m1.mi, &m2.mi); m2.setImports(&m0.mi); - checkExp([&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi]); + checkExp("no cycle between ctors/tlsctors", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi]); } - // detects tlsctors cycle { auto m0 = mockMI(MItlsctor); auto m1 = mockMI(MIctor); auto m2 = mockMI(MItlsctor); m0.setImports(&m2.mi); m2.setImports(&m0.mi); - assertThrown!Throwable(checkExp([&m0.mi, &m1.mi, &m2.mi])); + assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), "detects tlsctors cycle"); + } + + { + auto m0 = mockMI(MItlsctor); + auto m1 = mockMI(MIctor); + auto m2 = mockMI(MItlsctor); + m0.setImports(&m1.mi); + m1.setImports(&m0.mi, &m2.mi); + m2.setImports(&m1.mi); + assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), "detects tlsctors cycle with repeats"); } - // closed ctors cycle { auto m0 = mockMI(MIctor); auto m1 = mockMI(MIstandalone | MIctor); @@ -574,7 +922,9 @@ unittest m0.setImports(&m1.mi); m1.setImports(&m2.mi); m2.setImports(&m0.mi); - checkExp([&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m2.mi, &m0.mi]); + // NOTE: this is implementation dependent, sorted order shouldn't be tested. + //checkExp("closed ctors cycle", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m2.mi, &m0.mi]); + checkExp("closed ctors cycle", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi, &m2.mi]); } } From 96cfbe03df65e1d1a87bc24d694eaa1be8d66420 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 28 Jun 2016 16:40:36 -0400 Subject: [PATCH 443/768] remove old constructor sorting algorithm. --- src/rt/minfo.d | 177 ------------------------------------------------- 1 file changed, 177 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index bf58c90185..ddd728020c 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -60,8 +60,6 @@ struct ModuleGroup * Throws: * Exception if it fails. */ - version(all) - { void sortCtors() { debug(printModuleDependencies) @@ -390,181 +388,6 @@ distloop: _checkModCtors3(); _tlsctors = _tlsctors[0 .. ctoridx]; } - } - else - { - void sortCtors() - { - immutable len = _modules.length; - if (!len) - return; - - static struct StackRec - { - @property immutable(ModuleInfo)* mod() - { - return _mods[_idx]; - } - - immutable(ModuleInfo*)[] _mods; - size_t _idx; - } - - auto stack = (cast(StackRec*).calloc(len, StackRec.sizeof))[0 .. len]; - // TODO: reuse GCBits by moving it to rt.util.container or core.internal - immutable nwords = (len + 8 * size_t.sizeof - 1) / (8 * size_t.sizeof); - auto ctorstart = cast(size_t*).malloc(nwords * size_t.sizeof); - auto ctordone = cast(size_t*).malloc(nwords * size_t.sizeof); - if (!stack.ptr || ctorstart is null || ctordone is null) - assert(0); - scope (exit) { .free(stack.ptr); .free(ctorstart); .free(ctordone); } - - int findModule(in ModuleInfo* mi) - { - foreach (i, m; _modules) - if (m is mi) return cast(int)i; - return -1; - } - - void sort(ref immutable(ModuleInfo)*[] ctors, uint mask) - { - import core.bitop; - - ctors = (cast(immutable(ModuleInfo)**).malloc(len * size_t.sizeof))[0 .. len]; - if (!ctors.ptr) - assert(0); - - // clean flags - memset(ctorstart, 0, nwords * size_t.sizeof); - memset(ctordone, 0, nwords * size_t.sizeof); - size_t stackidx = 0; - size_t cidx; - - immutable(ModuleInfo*)[] mods = _modules; - size_t idx; - while (true) - { - while (idx < mods.length) - { - auto m = mods[idx]; - - immutable bitnum = findModule(m); - - if (bitnum < 0 || bt(ctordone, bitnum)) - { - /* If the module can't be found among the ones to be - * sorted it's an imported module from another DSO. - * Those don't need to be considered during sorting as - * the OS is responsible for the DSO load order and - * module construction is done during DSO loading. - */ - ++idx; - continue; - } - else if (bt(ctorstart, bitnum)) - { - /* Trace back to the begin of the cycle. - */ - bool ctorInCycle; - size_t start = stackidx; - while (start--) - { - auto sm = stack[start].mod; - if (sm == m) - break; - immutable sbitnum = findModule(sm); - assert(sbitnum >= 0); - if (bt(ctorstart, sbitnum)) - ctorInCycle = true; - } - assert(stack[start].mod == m); - if (ctorInCycle) - { - /* This is an illegal cycle, no partial order can be established - * because the import chain have contradicting ctor/dtor - * constraints. - */ - string msg = "Aborting: Cycle detected between modules with "; - if (mask & (MIctor | MIdtor)) - msg ~= "shared "; - msg ~= "ctors/dtors:\n"; - foreach (e; stack[start .. stackidx]) - { - msg ~= e.mod.name; - if (e.mod.flags & mask) - msg ~= '*'; - msg ~= " ->\n"; - } - msg ~= stack[start].mod.name; - free(); - throw new Exception(msg); - } - else - { - /* This is also a cycle, but the import chain does not constrain - * the order of initialization, either because the imported - * modules have no ctors or the ctors are standalone. - */ - ++idx; - } - } - else - { - if (m.flags & mask) - { - if (m.flags & MIstandalone || !m.importedModules.length) - { // trivial ctor => sort in - ctors[cidx++] = m; - bts(ctordone, bitnum); - } - else - { // non-trivial ctor => defer - bts(ctorstart, bitnum); - } - } - else // no ctor => mark as visited - { - bts(ctordone, bitnum); - } - - if (m.importedModules.length) - { - /* Internal runtime error, recursion exceeds number of modules. - */ - (stackidx < stack.length) || assert(0); - - // recurse - stack[stackidx++] = StackRec(mods, idx); - idx = 0; - mods = m.importedModules; - } - } - } - - if (stackidx) - { // pop old value from stack - --stackidx; - mods = stack[stackidx]._mods; - idx = stack[stackidx]._idx; - auto m = mods[idx++]; - immutable bitnum = findModule(m); - assert(bitnum >= 0); - if (m.flags & mask && !bts(ctordone, bitnum)) - ctors[cidx++] = m; - } - else // done - break; - } - // store final number and shrink array - ctors = (cast(immutable(ModuleInfo)**).realloc(ctors.ptr, cidx * size_t.sizeof))[0 .. cidx]; - } - - /* Do two passes: ctor/dtor, tlsctor/tlsdtor - */ - sort(_ctors, MIctor | MIdtor); - sort(_tlsctors, MItlsctor | MItlsdtor); - } - } void runCtors() { From a3c7270a976620496ef65154084996ef2cf67d62 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 19 Jul 2016 17:32:22 -0400 Subject: [PATCH 444/768] More improvements. --- src/rt/minfo.d | 200 ++++++++++++++++++++++++------------------------- 1 file changed, 99 insertions(+), 101 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index ddd728020c..966d21b3ae 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -62,6 +62,7 @@ struct ModuleGroup */ void sortCtors() { + import core.bitop: bts, btr, bt; debug(printModuleDependencies) { import core.stdc.stdio : printf; @@ -74,34 +75,49 @@ struct ModuleGroup } } - immutable len = _modules.length; + immutable uint len = cast(uint)_modules.length; + if(!len) + return; // nothing to do. + + immutable(ModuleInfo)* minMod = _modules[0]; + immutable(ModuleInfo)* maxMod = _modules[0]; + foreach(m; _modules) + { + if(m < minMod) + minMod = m; + if(m > maxMod) + maxMod = m; + } - // This is ugly to say the least. Would be nice to use a binary - // search at least instead of linear... int findModule(in ModuleInfo* mi) { + // short circuit linear search if possible. + if(mi < minMod || mi > maxMod) + return -1; + // binary search would be nice... foreach (i, m; _modules) if (m is mi) return cast(int)i; return -1; } - // allocate the two constructor lists. These will be stored for life of - // the program, so use malloc. - _ctors = (cast(immutable(ModuleInfo)**).malloc(len * (void*).sizeof))[0 .. len]; - _tlsctors = (cast(immutable(ModuleInfo)**).malloc(len * (void*).sizeof))[0 .. len]; - // Start out doing the shared ctors. The destruction is done in reverse. - auto ctors = _ctors; + // The list of constructors that will be returned by the sorting. + immutable(ModuleInfo)*[] ctors; // current element being inserted into ctors list. size_t ctoridx = 0; // allocate some stack arrays that will be used throughout the process. - ubyte* p = cast(ubyte *)alloca(len * ubyte.sizeof); - auto reachable = p[0 .. len]; - - p = cast(ubyte *)alloca(len * ubyte.sizeof); - auto flags = p[0 .. len]; - + immutable nwords = (len + 8 * size_t.sizeof - 1) / (8 * size_t.sizeof); + immutable flagbytes = nwords * size_t.sizeof; + auto ctorstart = cast(size_t*)alloca(flagbytes);// ctor/dtor seen + auto ctordone = cast(size_t*)alloca(flagbytes);// ctor/dtor processed + auto relevant = cast(size_t*)alloca(flagbytes);// has ctors/dtors + auto reachable = cast(size_t*)alloca(flagbytes);// used for reachability check + + void clearFlags(size_t *flags) + { + memset(flags, 0, flagbytes); + } // use this to hold the error message. string errmsg = null; @@ -224,18 +240,13 @@ distloop: { // use reachable, because an import can appear more than once. // https://issues.dlang.org/show_bug.cgi?id=16208 - reachable[] = 0; + clearFlags(reachable); foreach(e; m.importedModules) { auto impidx = findModule(e); if(impidx != -1 && impidx != i) - reachable[impidx] = 1; - } - - foreach(int j, r; reachable) - { - if(r) - edges[i] ~= j; + if(!bts(reachable, impidx)) + edges[i] ~= impidx; } } @@ -252,20 +263,23 @@ distloop: // trivial modules to get at the non-trivial ones. size_t _findDependencies(int idx, bool orig = true) { - if(reachable[idx]) - return 0; + // if it was already set, then we've already examined it. auto current = _modules[idx]; size_t result = 0; - reachable[idx] = 1; - if(!orig && (flags[idx] & (MIctor | MIdtor)) && !(flags[idx] & MIstandalone)) - // non-trivial, stop here - return result + 1; foreach (m; current.importedModules) { auto midx = findModule(m); + // if midx is -1, then this isn't part of this DSO. if(midx != -1) - // not part of this DSO, don't consider it. - result += _findDependencies(midx, false); + if(!bts(reachable, midx)) + { + if(bt(relevant, midx)) + // non-trivial, stop here + result += 1; + else + // non-relevant, recurse + result += _findDependencies(midx, false); + } } return result; } @@ -282,111 +296,95 @@ distloop: assert(curidx != -1); immutable ModuleInfo* current = _modules[curidx]; - // we only get called if current has a dtor or a ctor, so no need to - // check that. First, determine what non-trivial elements are - // reachable. - reachable[] = 0; + // First, determine what non-trivial elements are reachable. + clearFlags(reachable); + bts(reachable, curidx); auto nmodules = _findDependencies(curidx); - // allocate the dependencies on the stack + // allocate the dependencies on the stack, because reachable will + // be reused as we recurse. auto p = cast(int *)alloca(nmodules * int.sizeof); auto dependencies = p[0 .. nmodules]; uint depidx = 0; // fill in the dependencies - foreach (int i, r; reachable) + foreach (int i; 0 .. len) { - if(r && i != curidx) + if(i != curidx && bt(reachable, i) && bt(relevant, i)) { - if((flags[i] & (MIctor | MIdtor)) && !(flags[i] & MIstandalone)) + if(bt(ctorstart, i)) { - dependencies[depidx++] = i; + // found a cycle + println("Cyclic dependency between module ", _modules[i].name, " and ", current.name); + genPath(i, curidx); + + foreach(midx; cyclePath[0 .. $-1]) + { + println(_modules[midx].name, bt(relevant, midx) ? "* ->" : " ->"); + } + println(_modules[i].name, "*"); + throw new Error(errmsg); } + dependencies[depidx++] = i; } } assert(depidx == nmodules); - // ok, now perform cycle detection - flags[curidx] |= MIctorstart; + // process all the dependencies + bts(ctorstart, curidx); foreach (m; dependencies) - { - auto mflags = flags[m]; - if(mflags & MIctorstart) - { - // found a cycle - println("Cyclic dependency between module ", _modules[m].name, " and ", current.name); - genPath(m, curidx); - - foreach(midx; cyclePath[0 .. $-1]) - { - println(_modules[midx].name, (flags[midx] & (MIctor | MIdtor)) ? "* ->" : " ->"); - } - println(_modules[m].name, "*"); - throw new Error(errmsg); - } - else if(!(mflags & MIctordone)) - { + if(!bt(ctordone, m)) _checkModCtors2(m); - } - } - flags[curidx] = (flags[curidx] & ~MIctorstart) | MIctordone; + bts(ctordone, curidx); + btr(ctorstart, curidx); // add this module to the construction order list ctors[ctoridx++] = current; } - void _checkModCtors3() + immutable(ModuleInfo)*[] + _checkModCtors3(int function(immutable ModuleInfo *) getf) { + clearFlags(relevant); + clearFlags(ctorstart); + clearFlags(ctordone); + + // pre-allocate enough space to hold all modules. + ctors = (cast(immutable(ModuleInfo)**).malloc(len * (void*).sizeof))[0 .. len]; + ctoridx = 0; foreach (int idx, m; _modules) { // TODO: Should null ModuleInfo be allowed? if (m is null) continue; - auto flag = flags[idx]; - if((flag & (MIctor | MIdtor)) && !(flag & MIctordone)) + auto flag = getf(m); + if(flag & MIctor) { if(flag & MIstandalone) { - // no need to run a check on this one, but we do need to call its ctor/dtor + // can run at any time. Just run it first. ctors[ctoridx++] = m; } else + { + bts(relevant, idx); + } + } + } + + // now run the search in the relevant ones + foreach (int idx, m; _modules) + { + if(bt(relevant, idx)) + { + if(!bt(ctordone, idx)) _checkModCtors2(idx); } } - } - // initialize the flags for the first run (shared ctors). - foreach (uint i, m; _modules) - { - // TODO: Should null ModuleInfo be allowed? - if (m is null) continue; - ubyte flag = m.flags & MIstandalone; - if(m.dtor) - flag |= MIdtor; - if(m.ctor) - flag |= MIctor; - flags[i] = flag; + return ctors[0 .. ctoridx]; } - _checkModCtors3(); - - // _ctors is now valid up to ctoridx - _ctors = _ctors[0 .. ctoridx]; - - // tls ctors/dtors - ctors = _tlsctors; - ctoridx = 0; - foreach (i, m; modules) - { - // TODO: Should null ModuleInfo be allowed? - if (m is null) continue; - ubyte flag = m.flags & MIstandalone; - if(m.tlsdtor) - flag |= MIdtor; - if(m.tlsctor) - flag |= MIctor; - flags[i] = flag; - } - _checkModCtors3(); - _tlsctors = _tlsctors[0 .. ctoridx]; + // finally, do the sorting for both shared and tls ctors. + _ctors = _checkModCtors3((immutable ModuleInfo * m) => (m.flags & MIstandalone) | ((m.dtor || m.ctor)? MIctor : 0)); + _tlsctors = _checkModCtors3((immutable ModuleInfo * m) => (m.flags & MIstandalone) | ((m.tlsdtor || m.tlsctor)? MIctor : 0)); } void runCtors() @@ -746,8 +744,8 @@ unittest m1.setImports(&m2.mi); m2.setImports(&m0.mi); // NOTE: this is implementation dependent, sorted order shouldn't be tested. - //checkExp("closed ctors cycle", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m2.mi, &m0.mi]); - checkExp("closed ctors cycle", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi, &m2.mi]); + checkExp("closed ctors cycle", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m2.mi, &m0.mi]); + //checkExp("closed ctors cycle", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi, &m2.mi]); } } From 277f9f22144e0b6a261c8ca180a53f0b88369676 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 19 Jul 2016 19:07:05 -0400 Subject: [PATCH 445/768] Prune branches from the search when the non-relevant nodes have have already been examined. --- src/rt/minfo.d | 83 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 27 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 966d21b3ae..3d1350a7fe 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -101,11 +101,6 @@ struct ModuleGroup } - // The list of constructors that will be returned by the sorting. - immutable(ModuleInfo)*[] ctors; - // current element being inserted into ctors list. - size_t ctoridx = 0; - // allocate some stack arrays that will be used throughout the process. immutable nwords = (len + 8 * size_t.sizeof - 1) / (8 * size_t.sizeof); immutable flagbytes = nwords * size_t.sizeof; @@ -263,10 +258,8 @@ distloop: // trivial modules to get at the non-trivial ones. size_t _findDependencies(int idx, bool orig = true) { - // if it was already set, then we've already examined it. - auto current = _modules[idx]; size_t result = 0; - foreach (m; current.importedModules) + foreach (m; _modules[idx].importedModules) { auto midx = findModule(m); // if midx is -1, then this isn't part of this DSO. @@ -274,16 +267,27 @@ distloop: if(!bts(reachable, midx)) { if(bt(relevant, midx)) + { // non-trivial, stop here result += 1; - else - // non-relevant, recurse - result += _findDependencies(midx, false); + } + else if(!bt(ctordone, midx)) + { + // non-relevant, and hasn't been exhaustively processed, recurse. + result += (!bt(ctorstart, midx) ? 1 : 0) + + _findDependencies(midx, false); + } } } return result; } + // The list of constructors that will be returned by the sorting. + immutable(ModuleInfo)*[] ctors; + // current element being inserted into ctors list. + size_t ctoridx = 0; + + // This function will determine the order of construction/destruction and // check for cycles. If a cycle is found, the cycle path is transformed // into a string and thrown as an error. @@ -309,22 +313,34 @@ distloop: // fill in the dependencies foreach (int i; 0 .. len) { - if(i != curidx && bt(reachable, i) && bt(relevant, i)) + if(i != curidx && bt(reachable, i)) { - if(bt(ctorstart, i)) - { - // found a cycle - println("Cyclic dependency between module ", _modules[i].name, " and ", current.name); - genPath(i, curidx); - - foreach(midx; cyclePath[0 .. $-1]) - { - println(_modules[midx].name, bt(relevant, midx) ? "* ->" : " ->"); - } - println(_modules[i].name, "*"); - throw new Error(errmsg); - } - dependencies[depidx++] = i; + if(bt(relevant, i)) + { + if(bt(ctorstart, i)) + { + // found a cycle + println("Cyclic dependency between module ", _modules[i].name, " and ", current.name); + genPath(i, curidx); + + foreach(midx; cyclePath[0 .. $-1]) + { + println(_modules[midx].name, bt(relevant, midx) ? "* ->" : " ->"); + } + println(_modules[i].name, "*"); + throw new Error(errmsg); + } + dependencies[depidx++] = i; + } + else if(!bts(ctorstart, i)) + { + // this is a non-relevant module, but it has never been + // imported by any other relevant module in our search. + // Once we have processed the current relevant module, + // we can mark this non-relevant module as done, so it's + // not ever looked at again. + dependencies[depidx++] = i; + } } } assert(depidx == nmodules); @@ -332,10 +348,23 @@ distloop: // process all the dependencies bts(ctorstart, curidx); foreach (m; dependencies) - if(!bt(ctordone, m)) + { + if(bt(relevant, m) && !bt(ctordone, m)) _checkModCtors2(m); + } bts(ctordone, curidx); btr(ctorstart, curidx); + + // mark all non-relevant dependencies as done + foreach(m; dependencies) + { + if(!bt(relevant, m)) + { + bts(ctordone, m); + // no need to clear ctorstart, as we don't care about + // irrelevant modules for detecting cycles. + } + } // add this module to the construction order list ctors[ctoridx++] = current; } From 8752d18f0d30f39b70fb64d2ebe63aaae42bdeb1 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 19 Jul 2016 20:32:00 -0400 Subject: [PATCH 446/768] Switch to manual stack allocation for finding relevant dependencies. --- src/rt/minfo.d | 64 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 50 insertions(+), 14 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 3d1350a7fe..4b7b27ac0e 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -256,28 +256,64 @@ distloop: // find all the non-trivial dependencies (that is, dependencies that have a // ctor or dtor) of a given module. Doing this, we can 'skip over' the // trivial modules to get at the non-trivial ones. - size_t _findDependencies(int idx, bool orig = true) + size_t _findDependencies(int idx) { + static struct stackFrame + { + int curMod; + int curDep; + } + + // initialize "stack" + auto stack = cast(stackFrame *)alloca(stackFrame.sizeof * len); + auto stacktop = stack + len; + auto sp = stack; + sp.curMod = idx; + sp.curDep = 0; size_t result = 0; - foreach (m; _modules[idx].importedModules) + + for(;;) { - auto midx = findModule(m); + auto m = _modules[sp.curMod]; + if(sp.curDep >= m.importedModules.length) + { + // return + if(sp == stack) + // finished the algorithm + break; + --sp; + ++sp.curDep; + continue; + } + auto midx = findModule(m.importedModules[sp.curDep]); // if midx is -1, then this isn't part of this DSO. - if(midx != -1) - if(!bts(reachable, midx)) + if(midx != -1 && !bts(reachable, midx)) + { + if(bt(relevant, midx)) { - if(bt(relevant, midx)) - { - // non-trivial, stop here - result += 1; - } - else if(!bt(ctordone, midx)) + // non-trivial, stop here + result += 1; + } + else if(!bt(ctordone, midx)) + { + // non-relevant, and hasn't been exhaustively processed, recurse. + if(!bt(ctorstart, midx)) + ++result; + // recurse + if(++sp >= stacktop) { - // non-relevant, and hasn't been exhaustively processed, recurse. - result += (!bt(ctorstart, midx) ? 1 : 0) + - _findDependencies(midx, false); + // stack overflow, this shouldn't happen. + import core.internal.abort : abort; + abort("stack overflow on dependency search"); } + sp.curMod = midx; + sp.curDep = 0; + continue; } + } + + // next dependency + ++sp.curDep; } return result; } From 3de899d9817fb1eb9e1c91af9f67adf314c81552 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Wed, 20 Jul 2016 10:57:17 -0400 Subject: [PATCH 447/768] Change pruning of non-relevant nodes to be at deepest level, actually simplifies a lot. Instead of reusing reachable and allocating deps, just allocate new reachable array at each recursion. --- src/rt/minfo.d | 156 +++++++++++++++++++++++-------------------------- 1 file changed, 72 insertions(+), 84 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 4b7b27ac0e..03b08b855c 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -107,7 +107,6 @@ struct ModuleGroup auto ctorstart = cast(size_t*)alloca(flagbytes);// ctor/dtor seen auto ctordone = cast(size_t*)alloca(flagbytes);// ctor/dtor processed auto relevant = cast(size_t*)alloca(flagbytes);// has ctors/dtors - auto reachable = cast(size_t*)alloca(flagbytes);// used for reachability check void clearFlags(size_t *flags) { @@ -231,9 +230,10 @@ distloop: // set up all the arrays. Use the GC, we are going to exit anyway. distance.length = len; edges.length = len; + auto reachable = (new size_t[](nwords)).ptr; foreach(i, m; _modules) { - // use reachable, because an import can appear more than once. + // use bit array to prevent duplicates // https://issues.dlang.org/show_bug.cgi?id=16208 clearFlags(reachable); foreach(e; m.importedModules) @@ -256,7 +256,9 @@ distloop: // find all the non-trivial dependencies (that is, dependencies that have a // ctor or dtor) of a given module. Doing this, we can 'skip over' the // trivial modules to get at the non-trivial ones. - size_t _findDependencies(int idx) + // + // If a cycle is detected, returns the index of the module that completes the cycle. + int findDeps(int idx, size_t *reachable) { static struct stackFrame { @@ -270,7 +272,10 @@ distloop: auto sp = stack; sp.curMod = idx; sp.curDep = 0; - size_t result = 0; + + // initialize reachable by flagging source module + clearFlags(reachable); + bts(reachable, idx); for(;;) { @@ -282,40 +287,44 @@ distloop: // finished the algorithm break; --sp; - ++sp.curDep; - continue; } - auto midx = findModule(m.importedModules[sp.curDep]); - // if midx is -1, then this isn't part of this DSO. - if(midx != -1 && !bts(reachable, midx)) + else { - if(bt(relevant, midx)) + auto midx = findModule(m.importedModules[sp.curDep]); + // if midx is -1, then this isn't part of this DSO. + if(midx != -1 && !bts(reachable, midx)) { - // non-trivial, stop here - result += 1; - } - else if(!bt(ctordone, midx)) - { - // non-relevant, and hasn't been exhaustively processed, recurse. - if(!bt(ctorstart, midx)) - ++result; - // recurse - if(++sp >= stacktop) + if(bt(relevant, midx)) + { + // need to process this node, don't recurse. + if(bt(ctorstart, midx)) + { + // was already started, this is a cycle. + return midx; + } + } + else if(!bt(ctordone, midx)) { - // stack overflow, this shouldn't happen. - import core.internal.abort : abort; - abort("stack overflow on dependency search"); + // non-relevant, and hasn't been exhaustively processed, recurse. + if(++sp >= stacktop) + { + // stack overflow, this shouldn't happen. + import core.internal.abort : abort; + abort("stack overflow on dependency search"); + } + sp.curMod = midx; + sp.curDep = 0; + continue; } - sp.curMod = midx; - sp.curDep = 0; - continue; } } // next dependency ++sp.curDep; } - return result; + + // no cycles seen + return -1; } // The list of constructors that will be returned by the sorting. @@ -331,82 +340,61 @@ distloop: // Each call into this function is given a module that has static // ctor/dtors that must be dealt with. It recurses only when it finds // dependencies that also have static ctor/dtors. - void _checkModCtors2(int curidx) + void processMod(int curidx) { assert(curidx != -1); immutable ModuleInfo* current = _modules[curidx]; - // First, determine what non-trivial elements are reachable. - clearFlags(reachable); - bts(reachable, curidx); - auto nmodules = _findDependencies(curidx); - - // allocate the dependencies on the stack, because reachable will - // be reused as we recurse. - auto p = cast(int *)alloca(nmodules * int.sizeof); - auto dependencies = p[0 .. nmodules]; - uint depidx = 0; - // fill in the dependencies - foreach (int i; 0 .. len) + // First, determine what modules are reachable. + auto reachable = cast(size_t *)alloca(flagbytes); + auto cycleIdx = findDeps(curidx, reachable); + if(cycleIdx != -1) { - if(i != curidx && bt(reachable, i)) + auto cycleMod = _modules[cycleIdx]; + // found a cycle + println("Cyclic dependency between module ", cycleMod.name, " and ", current.name); + genPath(cycleIdx, curidx); + + foreach(midx; cyclePath[0 .. $-1]) { - if(bt(relevant, i)) - { - if(bt(ctorstart, i)) - { - // found a cycle - println("Cyclic dependency between module ", _modules[i].name, " and ", current.name); - genPath(i, curidx); - - foreach(midx; cyclePath[0 .. $-1]) - { - println(_modules[midx].name, bt(relevant, midx) ? "* ->" : " ->"); - } - println(_modules[i].name, "*"); - throw new Error(errmsg); - } - dependencies[depidx++] = i; - } - else if(!bts(ctorstart, i)) - { - // this is a non-relevant module, but it has never been - // imported by any other relevant module in our search. - // Once we have processed the current relevant module, - // we can mark this non-relevant module as done, so it's - // not ever looked at again. - dependencies[depidx++] = i; - } + println(_modules[midx].name, bt(relevant, midx) ? "* ->" : " ->"); } + println(cycleMod.name, "*"); + throw new Error(errmsg); } - assert(depidx == nmodules); - // process all the dependencies + // process the dependencies. First, we process all relevant ones bts(ctorstart, curidx); - foreach (m; dependencies) + foreach (int i; 0 .. len) { - if(bt(relevant, m) && !bt(ctordone, m)) - _checkModCtors2(m); + if(i != curidx && bt(reachable, i) && + bt(relevant, i) && !bt(ctordone, i)) + { + assert(!bt(ctorstart, i)); // sanity check, this should have been flagged a cycle earlier + processMod(i); + } } + + // now mark this node, and all nodes reachable from this module as done. bts(ctordone, curidx); btr(ctorstart, curidx); - - // mark all non-relevant dependencies as done - foreach(m; dependencies) + foreach (int i; 0 .. len) { - if(!bt(relevant, m)) + if(bt(reachable, i)) { - bts(ctordone, m); - // no need to clear ctorstart, as we don't care about - // irrelevant modules for detecting cycles. + // Since relevant dependencies are already marked as done + // from recursion above, no reason to check for relevance, + // that is a wasted op. + bts(ctordone, i); } } + // add this module to the construction order list ctors[ctoridx++] = current; } immutable(ModuleInfo)*[] - _checkModCtors3(int function(immutable ModuleInfo *) getf) + doSort(int function(immutable ModuleInfo *) getf) { clearFlags(relevant); clearFlags(ctorstart); @@ -434,13 +422,13 @@ distloop: } } - // now run the search in the relevant ones + // now run the algorithm in the relevant ones foreach (int idx, m; _modules) { if(bt(relevant, idx)) { if(!bt(ctordone, idx)) - _checkModCtors2(idx); + processMod(idx); } } @@ -448,8 +436,8 @@ distloop: } // finally, do the sorting for both shared and tls ctors. - _ctors = _checkModCtors3((immutable ModuleInfo * m) => (m.flags & MIstandalone) | ((m.dtor || m.ctor)? MIctor : 0)); - _tlsctors = _checkModCtors3((immutable ModuleInfo * m) => (m.flags & MIstandalone) | ((m.tlsdtor || m.tlsctor)? MIctor : 0)); + _ctors = doSort((immutable ModuleInfo * m) => (m.flags & MIstandalone) | ((m.dtor || m.ctor)? MIctor : 0)); + _tlsctors = doSort((immutable ModuleInfo * m) => (m.flags & MIstandalone) | ((m.tlsdtor || m.tlsctor)? MIctor : 0)); } void runCtors() From e8e34a14b6d449fbf268d00ee122e7ba5ed7c145 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Sun, 7 Aug 2016 21:35:28 -0400 Subject: [PATCH 448/768] Applied dfmt --- src/rt/minfo.d | 133 +++++++++++++++++++++++++------------------------ 1 file changed, 68 insertions(+), 65 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 03b08b855c..bf654d1d29 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -62,53 +62,56 @@ struct ModuleGroup */ void sortCtors() { - import core.bitop: bts, btr, bt; - debug(printModuleDependencies) + import core.bitop : bts, btr, bt; + + debug (printModuleDependencies) { import core.stdc.stdio : printf; - foreach(_m; _modules) + + foreach (_m; _modules) { - printf("%s%s%s:", _m.name.ptr, (_m.flags & MIstandalone) ? "+".ptr : "".ptr, (_m.flags & (MIctor | MIdtor)) ? "*".ptr : "".ptr); - foreach(_i; _m.importedModules) + printf("%s%s%s:", _m.name.ptr, (_m.flags & MIstandalone) + ? "+".ptr : "".ptr, (_m.flags & (MIctor | MIdtor)) ? "*".ptr : "".ptr); + foreach (_i; _m.importedModules) printf(" %s", _i.name.ptr); printf("\n"); } } - immutable uint len = cast(uint)_modules.length; - if(!len) + immutable uint len = cast(uint) _modules.length; + if (!len) return; // nothing to do. immutable(ModuleInfo)* minMod = _modules[0]; immutable(ModuleInfo)* maxMod = _modules[0]; - foreach(m; _modules) + foreach (m; _modules) { - if(m < minMod) + if (m < minMod) minMod = m; - if(m > maxMod) + if (m > maxMod) maxMod = m; } int findModule(in ModuleInfo* mi) { // short circuit linear search if possible. - if(mi < minMod || mi > maxMod) + if (mi < minMod || mi > maxMod) return -1; // binary search would be nice... foreach (i, m; _modules) - if (m is mi) return cast(int)i; + if (m is mi) + return cast(int) i; return -1; } - // allocate some stack arrays that will be used throughout the process. immutable nwords = (len + 8 * size_t.sizeof - 1) / (8 * size_t.sizeof); immutable flagbytes = nwords * size_t.sizeof; - auto ctorstart = cast(size_t*)alloca(flagbytes);// ctor/dtor seen - auto ctordone = cast(size_t*)alloca(flagbytes);// ctor/dtor processed - auto relevant = cast(size_t*)alloca(flagbytes);// has ctors/dtors + auto ctorstart = cast(size_t*) alloca(flagbytes); // ctor/dtor seen + auto ctordone = cast(size_t*) alloca(flagbytes); // ctor/dtor processed + auto relevant = cast(size_t*) alloca(flagbytes); // has ctors/dtors - void clearFlags(size_t *flags) + void clearFlags(size_t* flags) { memset(flags, 0, flagbytes); } @@ -130,7 +133,7 @@ struct ModuleGroup void println(string[] msgs...) { print(msgs); - version(Windows) + version (Windows) print("\r\n"); else print("\n"); @@ -153,21 +156,21 @@ struct ModuleGroup distance[] = int.max; int curdist = 0; distance[start] = 0; - while(true) + while (true) { bool done = true; - foreach(i, x; distance) + foreach (i, x; distance) { - if(x == curdist) + if (x == curdist) { - if(i == target) + if (i == target) { done = true; break; } - foreach(n; edges[i]) + foreach (n; edges[i]) { - if(distance[n] == int.max) + if (distance[n] == int.max) { distance[n] = curdist + 1; done = false; @@ -175,14 +178,14 @@ struct ModuleGroup } } } - if(done) + if (done) break; ++curdist; } // it should be impossible to not get to target, this is just a // sanity check. Not an assert, because druntime is compiled in // release mode. - if(distance[target] != curdist) + if (distance[target] != curdist) { throw new Error("internal error printing module cycle"); } @@ -191,23 +194,23 @@ struct ModuleGroup // follow the edges in reverse to get back to the original. We // don't have a reverse mapping, so it takes a bit of looping. cyclePath.length += curdist; - auto subpath = cyclePath[$-curdist .. $]; - while(true) + auto subpath = cyclePath[$ - curdist .. $]; + while (true) { --curdist; subpath[curdist] = target; - if(curdist == 0) + if (curdist == 0) break; -distloop: + distloop: // search for next (previous) module in cycle. - foreach(int m, d; distance) + foreach (int m, d; distance) { - if(d == curdist) + if (d == curdist) { // determine if m can reach target - foreach(e; edges[m]) + foreach (e; edges[m]) { - if(e == target) + if (e == target) { // recurse target = m; @@ -231,16 +234,16 @@ distloop: distance.length = len; edges.length = len; auto reachable = (new size_t[](nwords)).ptr; - foreach(i, m; _modules) + foreach (i, m; _modules) { // use bit array to prevent duplicates // https://issues.dlang.org/show_bug.cgi?id=16208 clearFlags(reachable); - foreach(e; m.importedModules) + foreach (e; m.importedModules) { auto impidx = findModule(e); - if(impidx != -1 && impidx != i) - if(!bts(reachable, impidx)) + if (impidx != -1 && impidx != i) + if (!bts(reachable, impidx)) edges[i] ~= impidx; } } @@ -258,7 +261,7 @@ distloop: // trivial modules to get at the non-trivial ones. // // If a cycle is detected, returns the index of the module that completes the cycle. - int findDeps(int idx, size_t *reachable) + int findDeps(int idx, size_t* reachable) { static struct stackFrame { @@ -267,7 +270,7 @@ distloop: } // initialize "stack" - auto stack = cast(stackFrame *)alloca(stackFrame.sizeof * len); + auto stack = cast(stackFrame*) alloca(stackFrame.sizeof * len); auto stacktop = stack + len; auto sp = stack; sp.curMod = idx; @@ -277,14 +280,13 @@ distloop: clearFlags(reachable); bts(reachable, idx); - for(;;) + for (;;) { auto m = _modules[sp.curMod]; - if(sp.curDep >= m.importedModules.length) + if (sp.curDep >= m.importedModules.length) { // return - if(sp == stack) - // finished the algorithm + if (sp == stack) // finished the algorithm break; --sp; } @@ -292,24 +294,25 @@ distloop: { auto midx = findModule(m.importedModules[sp.curDep]); // if midx is -1, then this isn't part of this DSO. - if(midx != -1 && !bts(reachable, midx)) + if (midx != -1 && !bts(reachable, midx)) { - if(bt(relevant, midx)) + if (bt(relevant, midx)) { // need to process this node, don't recurse. - if(bt(ctorstart, midx)) + if (bt(ctorstart, midx)) { // was already started, this is a cycle. return midx; } } - else if(!bt(ctordone, midx)) + else if (!bt(ctordone, midx)) { // non-relevant, and hasn't been exhaustively processed, recurse. - if(++sp >= stacktop) + if (++sp >= stacktop) { // stack overflow, this shouldn't happen. import core.internal.abort : abort; + abort("stack overflow on dependency search"); } sp.curMod = midx; @@ -332,7 +335,6 @@ distloop: // current element being inserted into ctors list. size_t ctoridx = 0; - // This function will determine the order of construction/destruction and // check for cycles. If a cycle is found, the cycle path is transformed // into a string and thrown as an error. @@ -346,16 +348,16 @@ distloop: immutable ModuleInfo* current = _modules[curidx]; // First, determine what modules are reachable. - auto reachable = cast(size_t *)alloca(flagbytes); + auto reachable = cast(size_t*) alloca(flagbytes); auto cycleIdx = findDeps(curidx, reachable); - if(cycleIdx != -1) + if (cycleIdx != -1) { auto cycleMod = _modules[cycleIdx]; // found a cycle println("Cyclic dependency between module ", cycleMod.name, " and ", current.name); genPath(cycleIdx, curidx); - foreach(midx; cyclePath[0 .. $-1]) + foreach (midx; cyclePath[0 .. $ - 1]) { println(_modules[midx].name, bt(relevant, midx) ? "* ->" : " ->"); } @@ -367,8 +369,7 @@ distloop: bts(ctorstart, curidx); foreach (int i; 0 .. len) { - if(i != curidx && bt(reachable, i) && - bt(relevant, i) && !bt(ctordone, i)) + if (i != curidx && bt(reachable, i) && bt(relevant, i) && !bt(ctordone, i)) { assert(!bt(ctorstart, i)); // sanity check, this should have been flagged a cycle earlier processMod(i); @@ -380,7 +381,7 @@ distloop: btr(ctorstart, curidx); foreach (int i; 0 .. len) { - if(bt(reachable, i)) + if (bt(reachable, i)) { // Since relevant dependencies are already marked as done // from recursion above, no reason to check for relevance, @@ -393,8 +394,7 @@ distloop: ctors[ctoridx++] = current; } - immutable(ModuleInfo)*[] - doSort(int function(immutable ModuleInfo *) getf) + immutable(ModuleInfo)*[] doSort(int function(immutable ModuleInfo*) getf) { clearFlags(relevant); clearFlags(ctorstart); @@ -406,11 +406,12 @@ distloop: foreach (int idx, m; _modules) { // TODO: Should null ModuleInfo be allowed? - if (m is null) continue; + if (m is null) + continue; auto flag = getf(m); - if(flag & MIctor) + if (flag & MIctor) { - if(flag & MIstandalone) + if (flag & MIstandalone) { // can run at any time. Just run it first. ctors[ctoridx++] = m; @@ -425,9 +426,9 @@ distloop: // now run the algorithm in the relevant ones foreach (int idx, m; _modules) { - if(bt(relevant, idx)) + if (bt(relevant, idx)) { - if(!bt(ctordone, idx)) + if (!bt(ctordone, idx)) processMod(idx); } } @@ -436,8 +437,10 @@ distloop: } // finally, do the sorting for both shared and tls ctors. - _ctors = doSort((immutable ModuleInfo * m) => (m.flags & MIstandalone) | ((m.dtor || m.ctor)? MIctor : 0)); - _tlsctors = doSort((immutable ModuleInfo * m) => (m.flags & MIstandalone) | ((m.tlsdtor || m.tlsctor)? MIctor : 0)); + _ctors = doSort((immutable ModuleInfo* m) => (m.flags & MIstandalone) | ((m.dtor + || m.ctor) ? MIctor : 0)); + _tlsctors = doSort((immutable ModuleInfo* m) => (m.flags & MIstandalone) | ((m.tlsdtor + || m.tlsctor) ? MIctor : 0)); } void runCtors() From bd1ebb544831023a61b84254612c8b6f975a6104 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Mon, 8 Aug 2016 10:56:46 -0400 Subject: [PATCH 449/768] Address all critique. --- src/core/bitop.d | 137 ++++++++++++++++++++ src/rt/minfo.d | 330 +++++++++++++++++++++++------------------------ 2 files changed, 301 insertions(+), 166 deletions(-) diff --git a/src/core/bitop.d b/src/core/bitop.d index 716cc9d83f..a29aef9156 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -355,6 +355,143 @@ int bts(size_t* p, size_t bitnum) pure @system; assert(array[1] == 0x100); } +/** + * Range over bit set. Each element is the bit number that is set. + * + * This is more efficient than testing each bit in a sparsely populated bit + * set. Note that the first bit in the bit set would be bit 0. + */ +struct BitRange +{ + /// Number of bits in each size_t + enum bitsPerWord = size_t.sizeof * 8; + + private + { + const(size_t)*bits; // points at next word of bits to check + size_t cur; // needed to allow searching bits using bsf + size_t idx; // index of current set bit + size_t len; // number of bits in the bit set. + } + @nogc nothrow pure: + + /** + * Construct a BitRange. + * + * Params: + * bitarr - The array of bits to iterate over + * numBits - The total number of valid bits in the given bit array + */ + this(const(size_t)* bitarr, size_t numBits) @system + { + bits = bitarr; + len = numBits; + if (len) + { + // prime the first bit + cur = *bits++ ^ 1; + popFront(); + } + } + + /// Range functions + size_t front() + { + assert(!empty); + return idx; + } + + /// ditto + bool empty() const + { + return idx >= len; + } + + /// ditto + void popFront() @system + { + // clear the current bit + auto curbit = idx % bitsPerWord; + cur ^= size_t(1) << curbit; + if(!cur) + { + // find next size_t with set bit + idx -= curbit; + while (!cur) + { + if ((idx += bitsPerWord) >= len) + // now empty + return; + cur = *bits++; + } + idx += bsf(cur); + } + else + { + idx += bsf(cur) - curbit; + } + } +} + +/// +@system unittest +{ + import core.stdc.stdlib : malloc, free; + import core.stdc.string : memset; + + // initialize a bit array + enum nBytes = (100 + BitRange.bitsPerWord - 1) / 8; + size_t *bitArr = cast(size_t *)malloc(nBytes); + scope(exit) free(bitArr); + memset(bitArr, 0, nBytes); + + // set some bits + bts(bitArr, 48); + bts(bitArr, 24); + bts(bitArr, 95); + bts(bitArr, 78); + + enum sum = 48 + 24 + 95 + 78; + + // iterate + size_t testSum; + size_t nBits; + foreach(b; BitRange(bitArr, 100)) + { + testSum += b; + ++nBits; + } + + assert(testSum == sum); + assert(nBits == 4); +} + +@system unittest +{ + void testIt(size_t numBits, size_t[] bitsToTest...) + { + import core.stdc.stdlib : malloc, free; + import core.stdc.string : memset; + immutable numBytes = (numBits + size_t.sizeof * 8 - 1) / 8; + size_t* bitArr = cast(size_t *)malloc(numBytes); + scope(exit) free(bitArr); + memset(bitArr, 0, numBytes); + foreach(b; bitsToTest) + bts(bitArr, b); + auto br = BitRange(bitArr, numBits); + foreach(b; bitsToTest) + { + assert(!br.empty); + assert(b == br.front); + br.popFront(); + } + assert(br.empty); + } + + testIt(100, 0, 1, 31, 63, 85); + testIt(100, 6, 45, 89, 92, 99); +} + /** * Swaps bytes in a 4 byte uint end-to-end, i.e. byte 0 becomes * byte 3, byte 1 becomes byte 2, byte 2 becomes byte 1, byte 3 diff --git a/src/rt/minfo.d b/src/rt/minfo.d index bf654d1d29..bda5a11538 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -53,100 +53,41 @@ struct ModuleGroup return _modules; } - /****************************** - * Allocate and fill in _ctors[] and _tlsctors[]. - * Modules are inserted into the arrays in the order in which the constructors - * need to be run. - * Throws: - * Exception if it fails. - */ - void sortCtors() + // this function initializes the bookeeping necessary to create the + // cycle path, and then creates it. It is a precondition that src and + // target modules are involved in a cycle. + // + // The delegate is a helper to map module info pointers to index into the modules array + private void genCyclePath(ref int[] cyclePath, int srcidx, int targetidx, + scope int delegate(immutable(ModuleInfo)*) findModule) { - import core.bitop : bts, btr, bt; - - debug (printModuleDependencies) - { - import core.stdc.stdio : printf; - - foreach (_m; _modules) - { - printf("%s%s%s:", _m.name.ptr, (_m.flags & MIstandalone) - ? "+".ptr : "".ptr, (_m.flags & (MIctor | MIdtor)) ? "*".ptr : "".ptr); - foreach (_i; _m.importedModules) - printf(" %s", _i.name.ptr); - printf("\n"); - } - } - - immutable uint len = cast(uint) _modules.length; - if (!len) - return; // nothing to do. + import core.bitop : bt, btc, bts; - immutable(ModuleInfo)* minMod = _modules[0]; - immutable(ModuleInfo)* maxMod = _modules[0]; - foreach (m; _modules) - { - if (m < minMod) - minMod = m; - if (m > maxMod) - maxMod = m; - } - - int findModule(in ModuleInfo* mi) - { - // short circuit linear search if possible. - if (mi < minMod || mi > maxMod) - return -1; - // binary search would be nice... - foreach (i, m; _modules) - if (m is mi) - return cast(int) i; - return -1; - } - - // allocate some stack arrays that will be used throughout the process. - immutable nwords = (len + 8 * size_t.sizeof - 1) / (8 * size_t.sizeof); + // set up all the arrays. Use the GC, we are going to exit anyway. + int[] distance; + int[][] edges; + distance.length = _modules.length; + edges.length = _modules.length; + immutable nwords = (_modules.length + 8 * size_t.sizeof - 1) / (8 * size_t.sizeof); immutable flagbytes = nwords * size_t.sizeof; - auto ctorstart = cast(size_t*) alloca(flagbytes); // ctor/dtor seen - auto ctordone = cast(size_t*) alloca(flagbytes); // ctor/dtor processed - auto relevant = cast(size_t*) alloca(flagbytes); // has ctors/dtors + auto reachable = cast(size_t*) malloc(flagbytes); + scope (exit) + .free(reachable); - void clearFlags(size_t* flags) + foreach (i, m; _modules) { - memset(flags, 0, flagbytes); - } - - // use this to hold the error message. - string errmsg = null; - - void print(string[] msgs...) - { - foreach (m; msgs) + // use bit array to prevent duplicates + // https://issues.dlang.org/show_bug.cgi?id=16208 + memset(reachable, 0, flagbytes); + foreach (e; m.importedModules) { - // save to the error message. Note that if we are throwing an - // exception, we don't care about being careful with using - // stack memory. Just use the GC/runtime. - errmsg ~= m; + auto impidx = findModule(e); + if (impidx != -1 && impidx != i) + if (!bts(reachable, impidx)) + edges[i] ~= impidx; } } - void println(string[] msgs...) - { - print(msgs); - version (Windows) - print("\r\n"); - else - print("\n"); - } - - // this set of functions helps create a valid path between two - // interdependent modules. This is only used if a cycle is found, to - // print the cycle to the user. Therefore, we don't initialize the data - // until we have to. - int[] cyclePath; - int[] distance; - int[][] edges; - // determine the shortest path between two modules. Uses dijkstra // without a priority queue. (we can be a bit slow here, in order to // get a better printout). @@ -222,38 +163,74 @@ struct ModuleGroup } } - // this function initializes the bookeeping necessary to create the - // cycle path, and then creates it. It is a precondition that src and - // target modules are involved in a cycle - void genPath(int srcidx, int targetidx) + // a cycle starts with the source. + cyclePath ~= srcidx; + + // first get to the target + shortest(srcidx, targetidx); + // now get back. + shortest(targetidx, srcidx); + + } + + /****************************** + * Allocate and fill in _ctors[] and _tlsctors[]. + * Modules are inserted into the arrays in the order in which the constructors + * need to be run. + * Throws: + * Exception if it fails. + */ + void sortCtors() + { + import core.bitop : bts, btr, bt, BitRange; + import rt.util.container.hashtab; + + debug (printModuleDependencies) { - assert(srcidx != -1); - assert(targetidx != -1); - - // set up all the arrays. Use the GC, we are going to exit anyway. - distance.length = len; - edges.length = len; - auto reachable = (new size_t[](nwords)).ptr; - foreach (i, m; _modules) + import core.stdc.stdio : printf; + + foreach (_m; _modules) { - // use bit array to prevent duplicates - // https://issues.dlang.org/show_bug.cgi?id=16208 - clearFlags(reachable); - foreach (e; m.importedModules) - { - auto impidx = findModule(e); - if (impidx != -1 && impidx != i) - if (!bts(reachable, impidx)) - edges[i] ~= impidx; - } + printf("%s%s%s:", _m.name.ptr, (_m.flags & MIstandalone) + ? "+".ptr : "".ptr, (_m.flags & (MIctor | MIdtor)) ? "*".ptr : "".ptr); + foreach (_i; _m.importedModules) + printf(" %s", _i.name.ptr); + printf("\n"); } + } + + immutable uint len = cast(uint) _modules.length; + if (!len) + return; // nothing to do. + + // used for mapping module info to indexes. + HashTab!(immutable(ModuleInfo)*, int) modIndexes; + foreach (i, m; _modules) + modIndexes[m] = cast(int) i; - // a cycle starts with the source. - cyclePath ~= srcidx; - // first get to the target - shortest(srcidx, targetidx); - // now get back. - shortest(targetidx, srcidx); + int findModule(immutable(ModuleInfo)* mi) + { + if (auto idx = mi in modIndexes) + return *idx; + return -1; + } + + // allocate some stack arrays that will be used throughout the process. + immutable nwords = (len + 8 * size_t.sizeof - 1) / (8 * size_t.sizeof); + immutable flagbytes = nwords * size_t.sizeof; + auto ctorstart = cast(size_t*) malloc(flagbytes); // ctor/dtor seen + auto ctordone = cast(size_t*) malloc(flagbytes); // ctor/dtor processed + auto relevant = cast(size_t*) malloc(flagbytes); // has ctors/dtors + scope (exit) + { + .free(ctorstart); + .free(ctordone); + .free(relevant); + } + + void clearFlags(size_t* flags) + { + memset(flags, 0, flagbytes); } // find all the non-trivial dependencies (that is, dependencies that have a @@ -261,19 +238,21 @@ struct ModuleGroup // trivial modules to get at the non-trivial ones. // // If a cycle is detected, returns the index of the module that completes the cycle. - int findDeps(int idx, size_t* reachable) + int findDeps(size_t idx, size_t* reachable) { static struct stackFrame { - int curMod; - int curDep; + size_t curMod; + size_t curDep; } // initialize "stack" - auto stack = cast(stackFrame*) alloca(stackFrame.sizeof * len); + auto stack = cast(stackFrame*) malloc(stackFrame.sizeof * len); + scope (exit) + .free(stack); auto stacktop = stack + len; auto sp = stack; - sp.curMod = idx; + sp.curMod = cast(int) idx; sp.curDep = 0; // initialize reachable by flagging source module @@ -331,7 +310,7 @@ struct ModuleGroup } // The list of constructors that will be returned by the sorting. - immutable(ModuleInfo)*[] ctors; + immutable(ModuleInfo)** ctors; // current element being inserted into ctors list. size_t ctoridx = 0; @@ -342,34 +321,46 @@ struct ModuleGroup // Each call into this function is given a module that has static // ctor/dtors that must be dealt with. It recurses only when it finds // dependencies that also have static ctor/dtors. - void processMod(int curidx) + void processMod(size_t curidx) { - assert(curidx != -1); immutable ModuleInfo* current = _modules[curidx]; // First, determine what modules are reachable. - auto reachable = cast(size_t*) alloca(flagbytes); + auto reachable = cast(size_t*) malloc(flagbytes); + scope (exit) + .free(reachable); auto cycleIdx = findDeps(curidx, reachable); if (cycleIdx != -1) { auto cycleMod = _modules[cycleIdx]; // found a cycle - println("Cyclic dependency between module ", cycleMod.name, " and ", current.name); - genPath(cycleIdx, curidx); + + version (Windows) + enum EOL = "\r\n"; + else + enum EOL = "\n"; + + string errmsg = "Cyclic dependency between module " + ~ cycleMod.name ~ " and " ~ current.name ~ EOL; + int[] cyclePath; + genCyclePath(cyclePath, cycleIdx, cast(int) curidx, &findModule); foreach (midx; cyclePath[0 .. $ - 1]) { - println(_modules[midx].name, bt(relevant, midx) ? "* ->" : " ->"); + errmsg ~= _modules[midx].name; + errmsg ~= bt(relevant, midx) ? "* ->" ~ EOL : " ->" ~ EOL; } - println(cycleMod.name, "*"); - throw new Error(errmsg); + errmsg ~= cycleMod.name; + errmsg ~= "*" ~ EOL; + throw new Error(errmsg, __FILE__, __LINE__); } // process the dependencies. First, we process all relevant ones bts(ctorstart, curidx); - foreach (int i; 0 .. len) + auto brange = BitRange(reachable, len); + foreach (i; brange) { - if (i != curidx && bt(reachable, i) && bt(relevant, i) && !bt(ctordone, i)) + if (i != curidx && bt(relevant, i) && !bt(ctordone, i)) { assert(!bt(ctorstart, i)); // sanity check, this should have been flagged a cycle earlier processMod(i); @@ -379,39 +370,35 @@ struct ModuleGroup // now mark this node, and all nodes reachable from this module as done. bts(ctordone, curidx); btr(ctorstart, curidx); - foreach (int i; 0 .. len) + foreach (i; brange) { - if (bt(reachable, i)) - { - // Since relevant dependencies are already marked as done - // from recursion above, no reason to check for relevance, - // that is a wasted op. - bts(ctordone, i); - } + // Since relevant dependencies are already marked as done + // from recursion above, no reason to check for relevance, + // that is a wasted op. + bts(ctordone, i); } // add this module to the construction order list ctors[ctoridx++] = current; } - immutable(ModuleInfo)*[] doSort(int function(immutable ModuleInfo*) getf) + immutable(ModuleInfo)*[] doSort(size_t relevantFlags) { clearFlags(relevant); clearFlags(ctorstart); clearFlags(ctordone); // pre-allocate enough space to hold all modules. - ctors = (cast(immutable(ModuleInfo)**).malloc(len * (void*).sizeof))[0 .. len]; + ctors = (cast(immutable(ModuleInfo)**).malloc(len * (void*).sizeof)); ctoridx = 0; foreach (int idx, m; _modules) { // TODO: Should null ModuleInfo be allowed? if (m is null) continue; - auto flag = getf(m); - if (flag & MIctor) + if (m.flags & relevantFlags) { - if (flag & MIstandalone) + if (m.flags & MIstandalone) { // can run at any time. Just run it first. ctors[ctoridx++] = m; @@ -424,23 +411,21 @@ struct ModuleGroup } // now run the algorithm in the relevant ones - foreach (int idx, m; _modules) + foreach (idx; BitRange(relevant, len)) { - if (bt(relevant, idx)) - { - if (!bt(ctordone, idx)) - processMod(idx); - } + if (!bt(ctordone, idx)) + processMod(idx); } + ctors = cast(immutable(ModuleInfo)**).realloc(ctors, ctoridx * (void*).sizeof); + if (ctors is null) + assert(0); return ctors[0 .. ctoridx]; } // finally, do the sorting for both shared and tls ctors. - _ctors = doSort((immutable ModuleInfo* m) => (m.flags & MIstandalone) | ((m.dtor - || m.ctor) ? MIctor : 0)); - _tlsctors = doSort((immutable ModuleInfo* m) => (m.flags & MIstandalone) | ((m.tlsdtor - || m.tlsctor) ? MIctor : 0)); + _ctors = doSort(MIctor | MIdtor); + _tlsctors = doSort(MItlsctor | MItlsdtor); } void runCtors() @@ -656,7 +641,7 @@ unittest // if we are expecting sort to throw, don't throw because of unexpected // success! - if(!shouldThrow) + if (!shouldThrow) { foreach (m; mgroup._modules) assert(!(m.flags & (MIctorstart | MIctordone)), testname); @@ -693,7 +678,8 @@ unittest auto m1 = mockMI(MIstandalone | MIctor); auto m2 = mockMI(0); m1.setImports(&m0.mi); - checkExp("imported standalone => no dependency", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); + checkExp("imported standalone => no dependency", false, + [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); } { @@ -701,7 +687,8 @@ unittest auto m1 = mockMI(MIstandalone | MIctor); auto m2 = mockMI(0); m0.setImports(&m1.mi); - checkExp("imported standalone => no dependency (2)", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); + checkExp("imported standalone => no dependency (2)", false, + [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); } { @@ -710,7 +697,8 @@ unittest auto m2 = mockMI(0); m0.setImports(&m1.mi); m1.setImports(&m0.mi); - checkExp("standalone may have cycle", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); + checkExp("standalone may have cycle", false, + [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi]); } { @@ -718,7 +706,8 @@ unittest auto m1 = mockMI(MIctor); auto m2 = mockMI(0); m1.setImports(&m0.mi); - checkExp("imported ctor => ordered ctors", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi], []); + checkExp("imported ctor => ordered ctors", false, + [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi], []); } { @@ -726,7 +715,8 @@ unittest auto m1 = mockMI(MIctor); auto m2 = mockMI(0); m0.setImports(&m1.mi); - checkExp("imported ctor => ordered ctors (2)", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], []); + checkExp("imported ctor => ordered ctors (2)", false, + [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], []); } { @@ -735,7 +725,8 @@ unittest auto m2 = mockMI(0); m0.setImports(&m1.mi); m1.setImports(&m0.mi); - assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), "detects ctors cycles"); + assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), + "detects ctors cycles"); } { @@ -745,7 +736,8 @@ unittest m0.setImports(&m2.mi); m1.setImports(&m2.mi); m2.setImports(&m0.mi, &m1.mi); - assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), "detects cycle with repeats"); + assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), + "detects cycle with repeats"); } { @@ -753,7 +745,8 @@ unittest auto m1 = mockMI(MIctor); auto m2 = mockMI(MItlsctor); m0.setImports(&m1.mi, &m2.mi); - checkExp("imported ctor/tlsctor => ordered ctors/tlsctors", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi]); + checkExp("imported ctor/tlsctor => ordered ctors/tlsctors", false, + [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi]); } { @@ -761,7 +754,8 @@ unittest auto m1 = mockMI(MIctor); auto m2 = mockMI(MItlsctor); m0.setImports(&m1.mi, &m2.mi); - checkExp("imported ctor/tlsctor => ordered ctors/tlsctors (2)", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi, &m0.mi]); + checkExp("imported ctor/tlsctor => ordered ctors/tlsctors (2)", false, + [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi, &m0.mi]); } { @@ -770,7 +764,8 @@ unittest auto m2 = mockMI(MItlsctor); m0.setImports(&m1.mi, &m2.mi); m2.setImports(&m0.mi); - checkExp("no cycle between ctors/tlsctors", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi]); + checkExp("no cycle between ctors/tlsctors", false, + [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m0.mi], [&m2.mi]); } { @@ -779,7 +774,8 @@ unittest auto m2 = mockMI(MItlsctor); m0.setImports(&m2.mi); m2.setImports(&m0.mi); - assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), "detects tlsctors cycle"); + assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), + "detects tlsctors cycle"); } { @@ -789,7 +785,8 @@ unittest m0.setImports(&m1.mi); m1.setImports(&m0.mi, &m2.mi); m2.setImports(&m1.mi); - assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), "detects tlsctors cycle with repeats"); + assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), + "detects tlsctors cycle with repeats"); } { @@ -800,7 +797,8 @@ unittest m1.setImports(&m2.mi); m2.setImports(&m0.mi); // NOTE: this is implementation dependent, sorted order shouldn't be tested. - checkExp("closed ctors cycle", false, [&m0.mi, &m1.mi, &m2.mi], [&m1.mi, &m2.mi, &m0.mi]); + checkExp("closed ctors cycle", false, [&m0.mi, &m1.mi, &m2.mi], + [&m1.mi, &m2.mi, &m0.mi]); //checkExp("closed ctors cycle", false, [&m0.mi, &m1.mi, &m2.mi], [&m0.mi, &m1.mi, &m2.mi]); } } From 35ccbc1d3e90fb30602eb12315da65d36e248d17 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Mon, 8 Aug 2016 11:39:50 -0400 Subject: [PATCH 450/768] Realloc to size 0 data returns null, so avoid that situation. --- src/rt/minfo.d | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index bda5a11538..6d0ff613fa 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -417,6 +417,13 @@ struct ModuleGroup processMod(idx); } + if (ctoridx == 0) + { + // no ctors in the list. + .free(ctors); + return null; + } + ctors = cast(immutable(ModuleInfo)**).realloc(ctors, ctoridx * (void*).sizeof); if (ctors is null) assert(0); From 89b1ef393bfe8c9bc8f2d6dee92fecfb899ed15e Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Mon, 8 Aug 2016 11:42:42 -0400 Subject: [PATCH 451/768] Remove check for null module info -- this can't happen anymore. --- src/rt/minfo.d | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 6d0ff613fa..5a886fc5cf 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -393,9 +393,6 @@ struct ModuleGroup ctoridx = 0; foreach (int idx, m; _modules) { - // TODO: Should null ModuleInfo be allowed? - if (m is null) - continue; if (m.flags & relevantFlags) { if (m.flags & MIstandalone) From 50a40f7f5801abfc76793c320fe1433a1ff42afd Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Thu, 11 Aug 2016 09:16:56 -0400 Subject: [PATCH 452/768] Realized there's no reason to pass cyclePath by reference. --- src/rt/minfo.d | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 5a886fc5cf..b30bc0847a 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -58,12 +58,13 @@ struct ModuleGroup // target modules are involved in a cycle. // // The delegate is a helper to map module info pointers to index into the modules array - private void genCyclePath(ref int[] cyclePath, int srcidx, int targetidx, + private int[] genCyclePath(int srcidx, int targetidx, scope int delegate(immutable(ModuleInfo)*) findModule) { import core.bitop : bt, btc, bts; // set up all the arrays. Use the GC, we are going to exit anyway. + int[] cyclePath; int[] distance; int[][] edges; distance.length = _modules.length; @@ -171,6 +172,7 @@ struct ModuleGroup // now get back. shortest(targetidx, srcidx); + return cyclePath; } /****************************** @@ -342,8 +344,7 @@ struct ModuleGroup string errmsg = "Cyclic dependency between module " ~ cycleMod.name ~ " and " ~ current.name ~ EOL; - int[] cyclePath; - genCyclePath(cyclePath, cycleIdx, cast(int) curidx, &findModule); + auto cyclePath = genCyclePath(cycleIdx, cast(int) curidx, &findModule); foreach (midx; cyclePath[0 .. $ - 1]) { From 8848f39a1ba045ef840ef3a811eb0e0eda9c9ecf Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 11 Aug 2016 15:26:13 +0200 Subject: [PATCH 453/768] add dlang-bot to codecov config --- .codecov.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.codecov.yml b/.codecov.yml index f12d35d0ac..5334519591 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -1,4 +1,7 @@ # https://github.com/codecov/support/blob/master/codecov.yml +codecov: + bot: dlang-bot + coverage: precision: 2 round: down From 8c66cad4eecfde441ddbb12bfb49e277ae2b55ec Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Fri, 12 Aug 2016 05:15:09 +0200 Subject: [PATCH 454/768] Fix test coverage merging with the test_runner --- src/test_runner.d | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test_runner.d b/src/test_runner.d index ea4ba44a16..0fddcc2294 100644 --- a/src/test_runner.d +++ b/src/test_runner.d @@ -74,6 +74,11 @@ void doTest(ModuleInfo* moduleInfo, ref bool ret) shared static this() { + version(D_Coverage) + { + import core.runtime : dmd_coverSetMerge; + dmd_coverSetMerge(true); + } Runtime.moduleUnitTester = &tester; debug mode = "debug"; @@ -85,9 +90,4 @@ shared static this() void main() { - version(D_Coverage) - { - import core.runtime : dmd_coverSetMerge; - dmd_coverSetMerge(true); - } } From 07458463e6e1af646230981180e6271b07f5734f Mon Sep 17 00:00:00 2001 From: Johannes Pfau Date: Fri, 12 Aug 2016 10:43:24 +0200 Subject: [PATCH 455/768] Fix FP_ILOGB constants for GlibC and non-X86 --- src/core/stdc/math.d | 56 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/core/stdc/math.d b/src/core/stdc/math.d index d5952efa76..d8c1441b5d 100644 --- a/src/core/stdc/math.d +++ b/src/core/stdc/math.d @@ -67,6 +67,62 @@ else version (CRuntime_Bionic) /// enum int FP_ILOGBNAN = int.max; } +else version (CRuntime_Glibc) +{ + version (X86) + { + /// + enum int FP_ILOGB0 = int.min; + /// + enum int FP_ILOGBNAN = int.min; + } + else version (X86_64) + { + /// + enum int FP_ILOGB0 = int.min; + /// + enum int FP_ILOGBNAN = int.min; + } + else version (ARM) + { + /// + enum int FP_ILOGB0 = -2147483647; + /// + enum int FP_ILOGBNAN = 2147483647; + } + else version (AArch64) + { + /// + enum int FP_ILOGB0 = -2147483647; + /// + enum int FP_ILOGBNAN = 2147483647; + } + else version (MIPS64) + { + /// + enum int FP_ILOGB0 = -2147483647; + /// + enum int FP_ILOGBNAN = 2147483647; + } + else version (PPC) + { + /// + enum int FP_ILOGB0 = -2147483647; + /// + enum int FP_ILOGBNAN = 2147483647; + } + else version (PPC64) + { + /// + enum int FP_ILOGB0 = -2147483647; + /// + enum int FP_ILOGBNAN = 2147483647; + } + else + { + static assert(false, "Architecture not supported."); + } +} else { /// From 34dade1015e1f00dca54a9f65f4d00a48624bc6e Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sun, 14 Aug 2016 00:54:54 +0200 Subject: [PATCH 456/768] Add badges to README --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 2abc7f46c4..b203bb433c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ DRuntime: Runtime Library for the D Programming Language ======================================================== +[![GitHub tag](https://img.shields.io/github/tag/dlang/druntime.svg?maxAge=86400)](#) +[![Build Status](https://travis-ci.org/dlang/druntime.svg?branch=master)](https://travis-ci.org/dlang/druntime) +[![Codecov](https://img.shields.io/codecov/c/github/dlang/druntime.svg?maxAge=86400)](https://codecov.io/gh/dlang/druntime) +[![Issue Stats](http://www.issuestats.com/github/dlang/druntime/badge/pr)](http://www.issuestats.com/github/dlang/druntime) + This is DRuntime. It is the low-level runtime library backing the D programming language. From 8fc5e79b30b83a5475c845ba89729e9aa29f7354 Mon Sep 17 00:00:00 2001 From: anonymous Date: Mon, 15 Aug 2016 23:54:30 +0200 Subject: [PATCH 457/768] [Ddoc] replace multiline /// comments with /** */ ones Ddoc interprets multiple /// comments as multiple paragraphs. That's not wanted in these cases. --- src/object.d | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/object.d b/src/object.d index 7f5b605f5b..3febff968a 100644 --- a/src/object.d +++ b/src/object.d @@ -282,12 +282,13 @@ class TypeInfo } } - /// Get TypeInfo for 'next' type, as defined by what kind of type this is, - /// null if none. + /** Get TypeInfo for 'next' type, as defined by what kind of type this is, + null if none. */ @property inout(TypeInfo) next() nothrow pure inout @nogc { return null; } - /// Return default initializer. If the type should be initialized to all zeros, - /// an array with a null ptr and a length equal to the type size will be returned. + /** Return default initializer. If the type should be initialized to all + zeros, an array with a null ptr and a length equal to the type size will be + returned. */ abstract const(void)[] initializer() nothrow pure const @safe @nogc; /// $(RED Scheduled for deprecation.) Please use `initializer` instead. @@ -297,8 +298,8 @@ class TypeInfo /* Planned for 2.074: Remove init, making way for the init type property, fixing issue 12233. */ - /// Get flags for type: 1 means GC should scan for pointers, - /// 2 means arg of this type is passed in XMM register + /** Get flags for type: 1 means GC should scan for pointers, + 2 means arg of this type is passed in XMM register */ @property uint flags() nothrow pure const @safe @nogc { return 0; } /// Get type information on the contents of the type; null if not available @@ -1798,8 +1799,8 @@ class Error : Throwable bypassedException = null; } - /// The first $(D Exception) which was bypassed when this Error was thrown, - /// or $(D null) if no $(D Exception)s were pending. + /** The first $(D Exception) which was bypassed when this Error was thrown, + or $(D null) if no $(D Exception)s were pending. */ Throwable bypassedException; } From 4e8eb14eec0ad1f09477f45bfd7fd0480fc78668 Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Thu, 18 Aug 2016 00:27:08 +0200 Subject: [PATCH 458/768] Add non-POSIX dlfcn extensions for Darwin, add const to dladdr --- src/core/sys/darwin/dlfcn.d | 40 +++++++++++++++++++++++++++++++++++++ src/core/sys/linux/dlfcn.d | 2 +- src/core/sys/posix/dlfcn.d | 2 +- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 src/core/sys/darwin/dlfcn.d diff --git a/src/core/sys/darwin/dlfcn.d b/src/core/sys/darwin/dlfcn.d new file mode 100644 index 0000000000..6666769bb3 --- /dev/null +++ b/src/core/sys/darwin/dlfcn.d @@ -0,0 +1,40 @@ +/** + * D header file for Darwin. + * + * $(LINK2 https://opensource.apple.com/source/dyld/dyld-360.22/include/dlfcn.h, Apple dyld/dlfcn.h) + * + * Copyright: Copyright David Nadlinger 2016. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: David Nadlinger + */ +module core.sys.darwin.dlfcn; + +version (OSX) + version = Darwin; +else version (iOS) + version = Darwin; +else version (TVOS) + version = Darwin; +else version (WatchOS) + version = Darwin; + +version (Darwin): +extern(C): +nothrow: +@nogc: + +public import core.sys.posix.dlfcn; + +struct Dl_info +{ + const(char)* dli_fname; + void* dli_fbase; + const(char)* dli_sname; + void* dli_saddr; +} + +int dladdr(in void* addr, Dl_info* info); + +enum RTLD_NOLOAD = 0x10; +enum RTLD_NODELETE = 0x80; +enum RTLD_FIRST = 0x100; diff --git a/src/core/sys/linux/dlfcn.d b/src/core/sys/linux/dlfcn.d index a3293c3956..7abf6ddde5 100644 --- a/src/core/sys/linux/dlfcn.d +++ b/src/core/sys/linux/dlfcn.d @@ -265,7 +265,7 @@ static if (__USE_GNU) void* dli_saddr; } - int dladdr(void* __address, Dl_info* __info); + int dladdr(in void* __address, Dl_info* __info); int dladdr1(void* __address, Dl_info* __info, void** __extra_info, int __flags); enum diff --git a/src/core/sys/posix/dlfcn.d b/src/core/sys/posix/dlfcn.d index 4dc27aec16..0ce8dda1bf 100644 --- a/src/core/sys/posix/dlfcn.d +++ b/src/core/sys/posix/dlfcn.d @@ -120,7 +120,7 @@ version( CRuntime_Glibc ) deprecated("Please use core.sys.linux.dlfcn for non-POSIX extensions") { - int dladdr(void* addr, Dl_info* info); + int dladdr(in void* addr, Dl_info* info); void* dlvsym(void* handle, in char* symbol, in char* version_); struct Dl_info From d79299255878b71ed1115f0cacd93938ee02930e Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Fri, 19 Aug 2016 07:35:45 -0400 Subject: [PATCH 459/768] Fix issue 16394 -- document the intiializer function behavior correctly. --- src/object.d | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/object.d b/src/object.d index 3febff968a..4b268fffde 100644 --- a/src/object.d +++ b/src/object.d @@ -286,9 +286,12 @@ class TypeInfo null if none. */ @property inout(TypeInfo) next() nothrow pure inout @nogc { return null; } - /** Return default initializer. If the type should be initialized to all - zeros, an array with a null ptr and a length equal to the type size will be - returned. */ + /** + * Return default initializer. If the type should be initialized to all + * zeros, an array with a null ptr and a length equal to the type size will + * be returned. For static arrays, this returns the default initializer for + * a single element of the array, use `tsize` to get the correct size. + */ abstract const(void)[] initializer() nothrow pure const @safe @nogc; /// $(RED Scheduled for deprecation.) Please use `initializer` instead. From 6f45e2a9af4f437ff57193036a69a5fc799059f7 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Mon, 29 Aug 2016 04:12:37 +0200 Subject: [PATCH 460/768] Update README shields --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b203bb433c..8080cf2caf 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ DRuntime: Runtime Library for the D Programming Language ======================================================== [![GitHub tag](https://img.shields.io/github/tag/dlang/druntime.svg?maxAge=86400)](#) -[![Build Status](https://travis-ci.org/dlang/druntime.svg?branch=master)](https://travis-ci.org/dlang/druntime) -[![Codecov](https://img.shields.io/codecov/c/github/dlang/druntime.svg?maxAge=86400)](https://codecov.io/gh/dlang/druntime) -[![Issue Stats](http://www.issuestats.com/github/dlang/druntime/badge/pr)](http://www.issuestats.com/github/dlang/druntime) +[![Build status](https://img.shields.io/circleci/project/dlang/druntime.svg?maxAge=86400)](https://circleci.com/gh/dlang/druntime) +[![Code coverage](https://img.shields.io/codecov/c/github/dlang/druntime.svg?maxAge=86400)](https://codecov.io/gh/dlang/druntime) +[![Issue Stats](https://img.shields.io/issuestats/p/github/dlang/druntime.svg?maxAge=2592000)](http://www.issuestats.com/github/dlang/druntime) This is DRuntime. It is the low-level runtime library backing the D programming language. From 59963cc8cb3b34c39070a4c4125e55b23ff49d7f Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 29 Aug 2016 02:19:31 -0700 Subject: [PATCH 461/768] add 'scope' to object.dup() --- src/object.d | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/object.d b/src/object.d index 7f5b605f5b..8a5e3791a9 100644 --- a/src/object.d +++ b/src/object.d @@ -3293,7 +3293,7 @@ unittest } /// Provide the .dup array property. -@property auto dup(T)(T[] a) +@property auto dup(T)(scope T[] a) if (!is(const(T) : T)) { import core.internal.traits : Unconst; @@ -3309,7 +3309,7 @@ unittest /// ditto // const overload to support implicit conversion to immutable (unique result, see DIP29) -@property T[] dup(T)(const(T)[] a) +@property T[] dup(T)(scope const(T)[] a) if (is(const(T) : T)) { // wrap unsafe _dup in @trusted to preserve @safe postblit @@ -3320,14 +3320,14 @@ unittest } /// ditto -@property T[] dup(T:void)(const(T)[] a) @trusted +@property T[] dup(T:void)(scope const(T)[] a) @trusted { if (__ctfe) assert(0, "Cannot dup a void[] array at compile time."); return cast(T[])_rawDup(a); } /// Provide the .idup array property. -@property immutable(T)[] idup(T)(T[] a) +@property immutable(T)[] idup(T)(scope T[] a) { static assert(is(T : immutable(T)), "Cannot implicitly convert type "~T.stringof~ " to immutable in idup."); @@ -3340,17 +3340,17 @@ unittest } /// ditto -@property immutable(T)[] idup(T:void)(const(T)[] a) +@property immutable(T)[] idup(T:void)(scope const(T)[] a) { return a.dup; } -private U[] _trustedDup(T, U)(T[] a) @trusted +private U[] _trustedDup(T, U)(scope T[] a) @trusted { return _dup!(T, U)(a); } -private U[] _dup(T, U)(T[] a) // pure nothrow depends on postblit +private U[] _dup(T, U)(scope T[] a) // pure nothrow depends on postblit { if (__ctfe) { @@ -3368,7 +3368,7 @@ private U[] _dup(T, U)(T[] a) // pure nothrow depends on postblit private extern (C) void[] _d_newarrayU(const TypeInfo ti, size_t length) pure nothrow; -private inout(T)[] _rawDup(T)(inout(T)[] a) +private inout(T)[] _rawDup(T)(scope inout(T)[] a) { import core.stdc.string : memcpy; From 5fbb535f32102cb984449de3e2d06281d7777ece Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 29 Aug 2016 18:01:11 -0700 Subject: [PATCH 462/768] refactor: eliminate unnecessary _PostBlitType template --- src/object.d | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/object.d b/src/object.d index 39077ebe6e..3923fd5f50 100644 --- a/src/object.d +++ b/src/object.d @@ -3378,16 +3378,13 @@ private inout(T)[] _rawDup(T)(scope inout(T)[] a) return *cast(inout(T)[]*)&arr; } -private template _PostBlitType(T) -{ - // assume that ref T and void* are equivalent in abi level. - static if (is(T == struct)) - alias _PostBlitType = typeof(function (ref T t){ T a = t; }); - else - alias _PostBlitType = typeof(delegate (ref T t){ T a = t; }); -} - -// Returns null, or a delegate to call postblit of T +/************** + * Get the postblit for type T. + * Returns: + * null if no postblit is necessary + * function pointer for struct postblits + * delegate for class postblits + */ private auto _getPostblit(T)() @trusted pure nothrow @nogc { // infer static postblit type, run postblit if any @@ -3395,11 +3392,13 @@ private auto _getPostblit(T)() @trusted pure nothrow @nogc { import core.internal.traits : Unqual; // use typeid(Unqual!T) here to skip TypeInfo_Const/Shared/... - return cast(_PostBlitType!T)typeid(Unqual!T).xpostblit; + alias _PostBlitType = typeof(function (ref T t){ T a = t; }); + return cast(_PostBlitType)typeid(Unqual!T).xpostblit; } else if ((&typeid(T).postblit).funcptr !is &TypeInfo.postblit) { - return cast(_PostBlitType!T)&typeid(T).postblit; + alias _PostBlitType = typeof(delegate (ref T t){ T a = t; }); + return cast(_PostBlitType)&typeid(T).postblit; } else return null; From 26b77b5bc13614ed57427b2475cf5ea1c6926980 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 29 Aug 2016 19:48:31 -0700 Subject: [PATCH 463/768] refactor: remove unnecessary object._rawDup() template --- src/object.d | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/object.d b/src/object.d index 39077ebe6e..1e85507050 100644 --- a/src/object.d +++ b/src/object.d @@ -3323,8 +3323,8 @@ unittest /// ditto @property T[] dup(T:void)(scope const(T)[] a) @trusted { - if (__ctfe) assert(0, "Cannot dup a void[] array at compile time."); - return cast(T[])_rawDup(a); + import core.internal.traits : Unconst; + return _dup!(const(T), Unconst!T)(a); } /// Provide the .idup array property. @@ -3355,28 +3355,30 @@ private U[] _dup(T, U)(scope T[] a) // pure nothrow depends on postblit { if (__ctfe) { - U[] res; - foreach (ref e; a) - res ~= e; - return res; + static if (is(T : void)) + assert(0, "Cannot dup a void[] array at compile time."); + else + { + U[] res; + foreach (ref e; a) + res ~= e; + return res; + } } - a = _rawDup(a); - auto res = *cast(typeof(return)*)&a; - _doPostblit(res); + import core.stdc.string : memcpy; + + void[] arr = _d_newarrayU(typeid(T[]), a.length); + memcpy(arr.ptr, cast(const(void)*)a.ptr, T.sizeof * a.length); + auto res = *cast(U[]*)&arr; + + static if (!is(T : void)) + _doPostblit(res); return res; } private extern (C) void[] _d_newarrayU(const TypeInfo ti, size_t length) pure nothrow; -private inout(T)[] _rawDup(T)(scope inout(T)[] a) -{ - import core.stdc.string : memcpy; - - void[] arr = _d_newarrayU(typeid(T[]), a.length); - memcpy(arr.ptr, cast(void*)a.ptr, T.sizeof * a.length); - return *cast(inout(T)[]*)&arr; -} private template _PostBlitType(T) { From fcaf74506250fafc775e919cb45856685ccc1bee Mon Sep 17 00:00:00 2001 From: Cauterite Date: Wed, 31 Aug 2016 23:44:49 +1000 Subject: [PATCH 464/768] [docs] default opEquals does not compare object contents see: https://github.com/dlang/dlang.org/pull/1441 --- src/object.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index fa55f50ef9..f6f389f0a9 100644 --- a/src/object.d +++ b/src/object.d @@ -85,7 +85,9 @@ class Object } /** - * Returns !=0 if this object does have the same contents as obj. + * Test whether $(D this) is equal to $(D o). + * The default implementation only compares by identity (using the $(D is) operator). + * Generally, overrides for $(D opEquals) should attempt to compare objects by their contents. */ bool opEquals(Object o) { From 11e544c68423442b912552b0b8bca7f8f140785f Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 1 Sep 2016 23:00:56 -0700 Subject: [PATCH 465/768] remove redundant object.dup(T:void) --- src/object.d | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/object.d b/src/object.d index fa55f50ef9..1cf4f15c42 100644 --- a/src/object.d +++ b/src/object.d @@ -3323,12 +3323,6 @@ unittest return _dup!(const(T), T)(a); } -/// ditto -@property T[] dup(T:void)(scope const(T)[] a) @trusted -{ - import core.internal.traits : Unconst; - return _dup!(const(T), Unconst!T)(a); -} /// Provide the .idup array property. @property immutable(T)[] idup(T)(scope T[] a) From 56e27e517dde47c63d704b80a05d3c56952ba784 Mon Sep 17 00:00:00 2001 From: Stefan Koch Date: Sat, 3 Sep 2016 05:25:19 +0200 Subject: [PATCH 466/768] change __ctfeWrite/ln to a signature which is easier to support --- src/object.d | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/object.d b/src/object.d index 39077ebe6e..35a5ac635e 100644 --- a/src/object.d +++ b/src/object.d @@ -3183,9 +3183,12 @@ bool _xopCmp(in void*, in void*) { throw new Error("TypeInfo.compare is not implemented"); } - -void __ctfeWrite(T...)(auto ref T) {} -void __ctfeWriteln(T...)(auto ref T values) { __ctfeWrite(values, "\n"); } +void __ctfeWrite(const string s) {} +void __ctfeWriteln(const string s) +{ + __ctfeWrite(s); + __ctfeWrite("\n"); +} /****************************************** * Create RTInfo for type T From 2c910837f8f3f6a247e252780be2bf2d67df7e03 Mon Sep 17 00:00:00 2001 From: Tomer Filiba Date: Mon, 5 Sep 2016 23:13:39 +0300 Subject: [PATCH 467/768] Bug 15088: timer_t should be void* on glibc https://issues.dlang.org/show_bug.cgi?id=15088 --- src/core/sys/posix/time.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/posix/time.d b/src/core/sys/posix/time.d index d8872a3289..ef0e3b0cbd 100644 --- a/src/core/sys/posix/time.d +++ b/src/core/sys/posix/time.d @@ -203,7 +203,7 @@ version( CRuntime_Glibc ) enum TIMER_ABSTIME = 0x01; alias int clockid_t; - alias int timer_t; + alias void* timer_t; int clock_getres(clockid_t, timespec*); int clock_gettime(clockid_t, timespec*); From 3723fc54afc6f10db7f2c6230c99a9be75307a32 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 6 Sep 2016 15:19:27 -0700 Subject: [PATCH 468/768] Move deprecations along. --- src/core/time.d | 224 ------------------------------------------------ 1 file changed, 224 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index a51aba7fcf..7cf93b0975 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -1420,230 +1420,6 @@ public: } - // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ - deprecated("Please use split instead. get was too frequently confused for total.") - long get(string units)() const nothrow @nogc - if(units == "weeks" || - units == "days" || - units == "hours" || - units == "minutes" || - units == "seconds") - { - static if(units == "weeks") - return getUnitsFromHNSecs!"weeks"(_hnsecs); - else - { - immutable hnsecs = removeUnitsFromHNSecs!(nextLargerTimeUnits!units)(_hnsecs); - return getUnitsFromHNSecs!units(hnsecs); - } - } - - /// - deprecated unittest - { - assert(dur!"weeks"(12).get!"weeks" == 12); - assert(dur!"weeks"(12).get!"days" == 0); - - assert(dur!"days"(13).get!"weeks" == 1); - assert(dur!"days"(13).get!"days" == 6); - - assert(dur!"hours"(49).get!"days" == 2); - assert(dur!"hours"(49).get!"hours" == 1); - } - - deprecated unittest - { - foreach(D; _TypeTuple!(const Duration, immutable Duration)) - { - assert((cast(D)dur!"weeks"(12)).get!"weeks" == 12); - assert((cast(D)dur!"weeks"(12)).get!"days" == 0); - - assert((cast(D)dur!"days"(13)).get!"weeks" == 1); - assert((cast(D)dur!"days"(13)).get!"days" == 6); - - assert((cast(D)dur!"hours"(49)).get!"days" == 2); - assert((cast(D)dur!"hours"(49)).get!"hours" == 1); - } - } - - - // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ - deprecated(`Please use split instead. The functions which wrapped get were too frequently confused with total.`) - @property long weeks() const nothrow @nogc - { - return get!"weeks"(); - } - - /// - deprecated unittest - { - assert(dur!"weeks"(12).weeks == 12); - assert(dur!"days"(13).weeks == 1); - } - - deprecated unittest - { - foreach(D; _TypeTuple!(const Duration, immutable Duration)) - { - assert((cast(D)dur!"weeks"(12)).weeks == 12); - assert((cast(D)dur!"days"(13)).weeks == 1); - } - } - - - // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ - deprecated(`Please use split instead. days was too frequently confused for total!"days".`) - @property long days() const nothrow @nogc - { - return get!"days"(); - } - - /// - deprecated unittest - { - assert(dur!"weeks"(12).days == 0); - assert(dur!"days"(13).days == 6); - assert(dur!"hours"(49).days == 2); - } - - deprecated unittest - { - foreach(D; _TypeTuple!(const Duration, immutable Duration)) - { - assert((cast(D)dur!"weeks"(12)).days == 0); - assert((cast(D)dur!"days"(13)).days == 6); - assert((cast(D)dur!"hours"(49)).days == 2); - } - } - - - // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ - deprecated(`Please use split instead. hours was too frequently confused for total!"hours".`) - @property long hours() const nothrow @nogc - { - return get!"hours"(); - } - - /// - deprecated unittest - { - assert(dur!"days"(8).hours == 0); - assert(dur!"hours"(49).hours == 1); - assert(dur!"minutes"(121).hours == 2); - } - - deprecated unittest - { - foreach(D; _TypeTuple!(const Duration, immutable Duration)) - { - assert((cast(D)dur!"days"(8)).hours == 0); - assert((cast(D)dur!"hours"(49)).hours == 1); - assert((cast(D)dur!"minutes"(121)).hours == 2); - } - } - - - // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ - deprecated(`Please use split instead. minutes was too frequently confused for total!"minutes".`) - @property long minutes() const nothrow @nogc - { - return get!"minutes"(); - } - - /// - deprecated unittest - { - assert(dur!"hours"(47).minutes == 0); - assert(dur!"minutes"(127).minutes == 7); - assert(dur!"seconds"(121).minutes == 2); - } - - deprecated unittest - { - foreach(D; _TypeTuple!(const Duration, immutable Duration)) - { - assert((cast(D)dur!"hours"(47)).minutes == 0); - assert((cast(D)dur!"minutes"(127)).minutes == 7); - assert((cast(D)dur!"seconds"(121)).minutes == 2); - } - } - - - // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ - deprecated(`Please use split instead. seconds was too frequently confused for total!"seconds".`) - @property long seconds() const nothrow @nogc - { - return get!"seconds"(); - } - - /// - deprecated unittest - { - assert(dur!"minutes"(47).seconds == 0); - assert(dur!"seconds"(127).seconds == 7); - assert(dur!"msecs"(1217).seconds == 1); - } - - deprecated unittest - { - foreach(D; _TypeTuple!(const Duration, immutable Duration)) - { - assert((cast(D)dur!"minutes"(47)).seconds == 0); - assert((cast(D)dur!"seconds"(127)).seconds == 7); - assert((cast(D)dur!"msecs"(1217)).seconds == 1); - } - } - - - // Explicitly undocumented. It will be removed in August 2016. @@@DEPRECATED_2016-08@@@ - deprecated(`Please use split instead.`) - @property FracSec fracSec() const nothrow - { - try - { - immutable hnsecs = removeUnitsFromHNSecs!("seconds")(_hnsecs); - - return FracSec.from!"hnsecs"(hnsecs); - } - catch(Exception e) - assert(0, "FracSec.from!\"hnsecs\"() threw."); - } - - /// - deprecated unittest - { - assert(dur!"msecs"(1000).fracSec == FracSec.from!"msecs"(0)); - assert(dur!"msecs"(1217).fracSec == FracSec.from!"msecs"(217)); - assert(dur!"usecs"(43).fracSec == FracSec.from!"usecs"(43)); - assert(dur!"hnsecs"(50_007).fracSec == FracSec.from!"hnsecs"(50_007)); - assert(dur!"nsecs"(62_127).fracSec == FracSec.from!"nsecs"(62_100)); - - assert(dur!"msecs"(-1000).fracSec == FracSec.from!"msecs"(-0)); - assert(dur!"msecs"(-1217).fracSec == FracSec.from!"msecs"(-217)); - assert(dur!"usecs"(-43).fracSec == FracSec.from!"usecs"(-43)); - assert(dur!"hnsecs"(-50_007).fracSec == FracSec.from!"hnsecs"(-50_007)); - assert(dur!"nsecs"(-62_127).fracSec == FracSec.from!"nsecs"(-62_100)); - } - - deprecated unittest - { - foreach(D; _TypeTuple!(const Duration, immutable Duration)) - { - assert((cast(D)dur!"msecs"(1000)).fracSec == FracSec.from!"msecs"(0)); - assert((cast(D)dur!"msecs"(1217)).fracSec == FracSec.from!"msecs"(217)); - assert((cast(D)dur!"usecs"(43)).fracSec == FracSec.from!"usecs"(43)); - assert((cast(D)dur!"hnsecs"(50_007)).fracSec == FracSec.from!"hnsecs"(50_007)); - assert((cast(D)dur!"nsecs"(62_127)).fracSec == FracSec.from!"nsecs"(62_100)); - - assert((cast(D)dur!"msecs"(-1000)).fracSec == FracSec.from!"msecs"(-0)); - assert((cast(D)dur!"msecs"(-1217)).fracSec == FracSec.from!"msecs"(-217)); - assert((cast(D)dur!"usecs"(-43)).fracSec == FracSec.from!"usecs"(-43)); - assert((cast(D)dur!"hnsecs"(-50_007)).fracSec == FracSec.from!"hnsecs"(-50_007)); - assert((cast(D)dur!"nsecs"(-62_127)).fracSec == FracSec.from!"nsecs"(-62_100)); - } - } - - /++ Returns the total number of the given units in this $(D Duration). So, unlike $(D split), it does not strip out the larger units. From 69247a9f8da763efa9fc20e233810e090e19ff95 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 9 Sep 2016 15:57:01 -0700 Subject: [PATCH 469/768] refactor: replace C array syntax with D array --- src/core/stdcpp/typeinfo.d | 2 +- src/core/sys/posix/sys/msg.d | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/stdcpp/typeinfo.d b/src/core/stdcpp/typeinfo.d index ae4d660466..a535dbf802 100644 --- a/src/core/stdcpp/typeinfo.d +++ b/src/core/stdcpp/typeinfo.d @@ -82,7 +82,7 @@ else version (CRuntime_Microsoft) private: void* pdata; - char _name[1]; + char[1] _name; //this(const type_info rhs); //type_info operator=(const type_info rhs); } diff --git a/src/core/sys/posix/sys/msg.d b/src/core/sys/posix/sys/msg.d index f0b4f75718..7f4b9a336c 100644 --- a/src/core/sys/posix/sys/msg.d +++ b/src/core/sys/posix/sys/msg.d @@ -23,7 +23,7 @@ public enum MSG_COPY = 4 << 12; // octal!40000 struct msgbuf { c_long mtype; - char mtext[1]; + char[1] mtext; }; struct msginfo { From 5ce2ebfd41f5f3dc7d4973160971480d7fb69ff9 Mon Sep 17 00:00:00 2001 From: Kai Nacke Date: Sat, 10 Sep 2016 21:38:03 +0200 Subject: [PATCH 470/768] Add more HWCAP_* constants to auxv.d The constants are well hidden in glibc. :-( Adds the constants for ARM, AArch64 and SystemZ. --- src/core/sys/linux/sys/auxv.d | 62 ++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/src/core/sys/linux/sys/auxv.d b/src/core/sys/linux/sys/auxv.d index 8166f4cc46..f0b774d917 100644 --- a/src/core/sys/linux/sys/auxv.d +++ b/src/core/sys/linux/sys/auxv.d @@ -13,7 +13,50 @@ extern (C): c_ulong getauxval(c_ulong type) nothrow pure @nogc @system; -version(PPC) +version(ARM) +{ + // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/arm/bits/hwcap.h + + enum HWCAP_ARM_SWP = 1; + enum HWCAP_ARM_HALF = 2; + enum HWCAP_ARM_THUMB = 4; + enum HWCAP_ARM_26BIT = 8; + enum HWCAP_ARM_FAST_MULT = 16; + enum HWCAP_ARM_FPA = 32; + enum HWCAP_ARM_VFP = 64; + enum HWCAP_ARM_EDSP = 128; + enum HWCAP_ARM_JAVA = 256; + enum HWCAP_ARM_IWMMXT = 512; + enum HWCAP_ARM_CRUNCH = 1024; + enum HWCAP_ARM_THUMBEE = 2048; + enum HWCAP_ARM_NEON = 4096; + enum HWCAP_ARM_VFPv3 = 8192; + enum HWCAP_ARM_VFPv3D16 = 16384; + enum HWCAP_ARM_TLS = 32768; + enum HWCAP_ARM_VFPv4 = 65536; + enum HWCAP_ARM_IDIVA = 131072; + enum HWCAP_ARM_IDIVT = 262144; + enum HWCAP_ARM_VFPD32 = 524288; + enum HWCAP_ARM_LPAE = 1048576; + enum HWCAP_ARM_EVTSTRM = 2097152; +} +else version(AArch64) +{ + // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h + + enum HWCAP_FP = 1; + enum HWCAP_ASIMD = 2; + enum HWCAP_EVTSTRM = 4; + enum HWCAP_AES = 8; + enum HWCAP_PMULL = 16; + enum HWCAP_SHA1 = 32; + enum HWCAP_SHA2 = 64; + enum HWCAP_CRC32 = 128; + enum HWCAP_ATOMICS = 256; + enum HWCAP_FPHP = 512; + enum HWCAP_ASIMDHP = 1024; +} +else version(PPC) { // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/powerpc/bits/hwcap.h @@ -161,3 +204,20 @@ else version(SPARC64) enum HWCAP_SPARC_CBCOND = 0x02000000; enum HWCAP_SPARC_CRYPTO = 0x04000000; } +else version(SystemZ) +{ + // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/hwcap.h + + enum HWCAP_S390_ESAN3 = 1; + enum HWCAP_S390_ZARCH = 2; + enum HWCAP_S390_STFLE = 4; + enum HWCAP_S390_MSA = 8; + enum HWCAP_S390_LDISP = 16; + enum HWCAP_S390_EIMM = 32; + enum HWCAP_S390_DFP = 64; + enum HWCAP_S390_HPAGE = 128; + enum HWCAP_S390_ETF3EH = 256; + enum HWCAP_S390_HIGH_GPRS = 512; + enum HWCAP_S390_TE = 1024; + enum HWCAP_S390_VX = 2048; +} From 68b1e774f6f400f34b06200277027861dd4621ca Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Sun, 11 Sep 2016 17:42:39 +0100 Subject: [PATCH 471/768] test/shared: Only use ELF-specific linker flags on Linux/FreeBSD --no-as-needed/--export-dynamic are neither known nor required on OS X. --- test/shared/Makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/shared/Makefile b/test/shared/Makefile index e0e57a0d33..8ce61ea505 100644 --- a/test/shared/Makefile +++ b/test/shared/Makefile @@ -6,6 +6,9 @@ TESTS:=link load linkD linkDR loadDR host finalize TESTS+=link_linkdep load_linkdep link_loaddep load_loaddep load_13414 TESTS+=link_mod_collision load_mod_collision +EXPORT_DYNAMIC=$(if $(findstring $(OS),linux freebsd),-L--export-dynamic,) +NO_AS_NEEDED=$(if $(findstring $(OS),linux freebsd),-L--no-as-needed,) + .PHONY: all clean all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) @@ -56,11 +59,11 @@ $(ROOT)/host: $(SRC)/host.c $(ROOT)/plugin1.so $(ROOT)/plugin2.so $(ROOT)/link_mod_collision: $(ROOT)/%: $(SRC)/%.d $(ROOT)/lib.so $(DRUNTIMESO) # use no-as-needed to enforce linking of unused lib.so - $(QUIET)$(DMD) $(DFLAGS) -of$@ $< -L--no-as-needed -L$(ROOT)/lib.so + $(QUIET)$(DMD) $(DFLAGS) -of$@ $< $(NO_AS_NEEDED) -L$(ROOT)/lib.so $(ROOT)/load_mod_collision: $(ROOT)/%: $(SRC)/%.d $(ROOT)/lib.so $(DRUNTIMESO) # use export dynamic so that Module in exe can interposes Module in lib.so - $(QUIET)$(DMD) $(DFLAGS) -of$@ $< $(LINKDL) -L--export-dynamic + $(QUIET)$(DMD) $(DFLAGS) -of$@ $< $(LINKDL) $(EXPORT_DYNAMIC) $(ROOT)/liblinkdep.so: $(ROOT)/lib.so $(ROOT)/liblinkdep.so: DFLAGS+=-L$(ROOT)/lib.so From 4224b20b4c1cc6b3e6a39b91e0cd3908137f1220 Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Sun, 11 Sep 2016 19:30:44 +0100 Subject: [PATCH 472/768] rt.util.container: Use outOfMemoryErrorNoGC Array and HashTab are used before the GC is even initialised. --- src/rt/util/container/array.d | 6 +++--- src/rt/util/container/common.d | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rt/util/container/array.d b/src/rt/util/container/array.d index 9dcee943f8..ab5ebfe3d6 100644 --- a/src/rt/util/container/array.d +++ b/src/rt/util/container/array.d @@ -9,7 +9,7 @@ module rt.util.container.array; static import common = rt.util.container.common; -import core.exception : onOutOfMemoryError; +import core.exception : onOutOfMemoryErrorNoGC; struct Array(T) { @@ -47,7 +47,7 @@ nothrow: _length = nlength; } else - onOutOfMemoryError(); + onOutOfMemoryErrorNoGC(); } @@ -103,7 +103,7 @@ nothrow: back = val; } else - onOutOfMemoryError(); + onOutOfMemoryErrorNoGC(); } void popBack() diff --git a/src/rt/util/container/common.d b/src/rt/util/container/common.d index 29939a47e3..45d096b65d 100644 --- a/src/rt/util/container/common.d +++ b/src/rt/util/container/common.d @@ -18,7 +18,7 @@ void* xrealloc(void* ptr, size_t sz) nothrow @nogc if (!sz) { .free(ptr); return null; } if (auto nptr = .realloc(ptr, sz)) return nptr; - .free(ptr); onOutOfMemoryError(); + .free(ptr); onOutOfMemoryErrorNoGC(); assert(0); } @@ -27,7 +27,7 @@ void* xmalloc(size_t sz) nothrow @nogc import core.exception; if (auto nptr = .malloc(sz)) return nptr; - onOutOfMemoryError(); + onOutOfMemoryErrorNoGC(); assert(0); } From 3e95dbf26f79d78990b26c0cf5006e47dc23aee3 Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Sun, 11 Sep 2016 19:38:58 +0100 Subject: [PATCH 473/768] util.container.array: Add invariant for _ptr/_length This was quite useful for debugging a memory corruption issue. --- src/rt/util/container/array.d | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/rt/util/container/array.d b/src/rt/util/container/array.d index 9dcee943f8..c3b9c49948 100644 --- a/src/rt/util/container/array.d +++ b/src/rt/util/container/array.d @@ -39,11 +39,11 @@ nothrow: size_t reqsize = mulu(T.sizeof, nlength, overflow); if (!overflow) { - if (nlength < length) - foreach (ref val; _ptr[nlength .. length]) common.destroy(val); + if (nlength < _length) + foreach (ref val; _ptr[nlength .. _length]) common.destroy(val); _ptr = cast(T*)common.xrealloc(_ptr, reqsize); - if (nlength > length) - foreach (ref val; _ptr[length .. nlength]) common.initialize(val); + if (nlength > _length) + foreach (ref val; _ptr[_length .. nlength]) common.initialize(val); _length = nlength; } else @@ -130,6 +130,11 @@ nothrow: other._length = len; } + invariant + { + assert(!_ptr == !_length); + } + private: T* _ptr; size_t _length; @@ -209,7 +214,7 @@ unittest try { // Overflow ary.length. - auto ary = Array!size_t(null, -1); + auto ary = Array!size_t(cast(size_t*)0xdeadbeef, -1); ary.insertBack(0); } catch(OutOfMemoryError) @@ -218,7 +223,7 @@ unittest try { // Overflow requested memory size for common.xrealloc(). - auto ary = Array!size_t(null, -2); + auto ary = Array!size_t(cast(size_t*)0xdeadbeef, -2); ary.insertBack(0); } catch(OutOfMemoryError) From b22d813d0b16d694d9dbd664b247f7949b4354fa Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Sun, 11 Sep 2016 22:03:21 +0100 Subject: [PATCH 474/768] sections_elf_shared: Do not access TLS of dead thread in finiTLSRanges() finiTLSRanges() is called from the destructor of core.Thread. At this point, the OS thread has already ceased to exist, so what was formerly a pointer to _loadedDSOs is no longer valid. In other words, `tdsos.reset()` was a use-after-free bug. It is unclear why the issue didn't surface on Linux/FreeBSD yet; for example, glibc might not actually re-use the TLS address range after a thread exits. On OS X, however, this did quite frequently trigger a crash when running the Phobos unit tests, since `tdsos` would have already been overwritten with unrelated contents. --- src/rt/sections_elf_shared.d | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/rt/sections_elf_shared.d b/src/rt/sections_elf_shared.d index dee3afacef..1dfbb4b21e 100644 --- a/src/rt/sections_elf_shared.d +++ b/src/rt/sections_elf_shared.d @@ -149,7 +149,10 @@ version (Shared) void finiTLSRanges(Array!(ThreadDSO)* tdsos) { - tdsos.reset(); + // Nothing to do here. tdsos used to point to the _loadedDSOs instance + // in the dying thread's TLS segment and as such is not valid anymore. + // The memory for the array contents was already reclaimed in + // cleanupLoadedLibraries(). } void scanTLSRanges(Array!(ThreadDSO)* tdsos, scope ScanDG dg) nothrow @@ -219,6 +222,8 @@ version (Shared) for (; tdso._addCnt > 0; --tdso._addCnt) .dlclose(handle); } + + // Free the memory for the array contents. _loadedDSOs.reset(); } } From 515dc20d735a24ea56f2aee34422b58d3698af3c Mon Sep 17 00:00:00 2001 From: Stefan Koch Date: Sun, 11 Sep 2016 21:27:07 +0200 Subject: [PATCH 475/768] ctfe-code is often annotated with pure @safe we want to print anyway --- src/object.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/object.d b/src/object.d index a956e18c5c..c9d23292d4 100644 --- a/src/object.d +++ b/src/object.d @@ -3186,8 +3186,8 @@ bool _xopCmp(in void*, in void*) { throw new Error("TypeInfo.compare is not implemented"); } -void __ctfeWrite(const string s) {} -void __ctfeWriteln(const string s) +void __ctfeWrite(const string s) @nogc @safe pure nothrow {} +void __ctfeWriteln(const string s) @nogc @safe pure nothrow { __ctfeWrite(s); __ctfeWrite("\n"); From 09b27cfefd5959b9ec043f6cfabd286a6a5e1c41 Mon Sep 17 00:00:00 2001 From: Nick Sabalausky Date: Wed, 21 Sep 2016 10:47:30 -0400 Subject: [PATCH 476/768] Add example for Runtime.moduleUnitTester --- src/core/runtime.d | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/core/runtime.d b/src/core/runtime.d index 915f106ebd..82f9075c26 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -302,6 +302,46 @@ struct Runtime * * Params: * h = The new unit tester. Set to null to use the default unit tester. + * + * Example: + * --------- + * version(unittest) + * static this() + * { + * import core.runtime; + * Runtime.moduleUnitTester = &customModuleUnitTester; + * } + * + * bool customModuleUnitTester() + * { + * import std.stdio; + * writeln("Using customModuleUnitTester"); + * + * // Do the same thing as the default moduleUnitTester: + * size_t failed = 0; + * foreach( m; ModuleInfo ) + * { + * if( m ) + * { + * auto fp = m.unitTest; + * + * if( fp ) + * { + * try + * { + * fp(); + * } + * catch( Throwable e ) + * { + * writeln(e); + * failed++; + * } + * } + * } + * } + * return failed == 0; + * } + * --------- */ static @property void moduleUnitTester( ModuleUnitTester h ) { From e3c7ca1574d301520b96d33c4339458144614fbb Mon Sep 17 00:00:00 2001 From: Nick Sabalausky Date: Wed, 21 Sep 2016 10:54:15 -0400 Subject: [PATCH 477/768] Fix whitespace. --- src/core/runtime.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/runtime.d b/src/core/runtime.d index 82f9075c26..1213fb35d5 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -302,7 +302,7 @@ struct Runtime * * Params: * h = The new unit tester. Set to null to use the default unit tester. - * + * * Example: * --------- * version(unittest) @@ -311,12 +311,12 @@ struct Runtime * import core.runtime; * Runtime.moduleUnitTester = &customModuleUnitTester; * } - * + * * bool customModuleUnitTester() * { * import std.stdio; * writeln("Using customModuleUnitTester"); - * + * * // Do the same thing as the default moduleUnitTester: * size_t failed = 0; * foreach( m; ModuleInfo ) @@ -324,7 +324,7 @@ struct Runtime * if( m ) * { * auto fp = m.unitTest; - * + * * if( fp ) * { * try From a23fae0e238b152c393e1a89e8a14a89cf9c07a9 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 23 Sep 2016 01:12:36 +0200 Subject: [PATCH 478/768] dfmt example code --- src/core/runtime.d | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/core/runtime.d b/src/core/runtime.d index 1213fb35d5..6c9b96499a 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -305,33 +305,34 @@ struct Runtime * * Example: * --------- - * version(unittest) - * static this() + * version (unittest) static this() * { * import core.runtime; + * * Runtime.moduleUnitTester = &customModuleUnitTester; * } * * bool customModuleUnitTester() * { * import std.stdio; + * * writeln("Using customModuleUnitTester"); * * // Do the same thing as the default moduleUnitTester: * size_t failed = 0; - * foreach( m; ModuleInfo ) + * foreach (m; ModuleInfo) * { - * if( m ) + * if (m) * { * auto fp = m.unitTest; * - * if( fp ) + * if (fp) * { * try * { * fp(); * } - * catch( Throwable e ) + * catch (Throwable e) * { * writeln(e); * failed++; From 9d2253557c80179583819b34611f8a7e71bd565c Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 23 Sep 2016 01:18:29 +0200 Subject: [PATCH 479/768] find correct base branch for PRs - was querying for dmd instead of druntime PRs --- circleci.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circleci.sh b/circleci.sh index 7db45a8e95..b48e31305d 100755 --- a/circleci.sh +++ b/circleci.sh @@ -52,7 +52,7 @@ clone() { coverage() { if [ -n ${CIRCLE_PR_NUMBER:-} ]; then - local base_branch=$(curl -fsSL https://api.github.com/repos/dlang/dmd/pulls/$CIRCLE_PR_NUMBER | jq -r '.base.ref') + local base_branch=$(curl -fsSL https://api.github.com/repos/dlang/$CIRCLE_PROJECT_REPONAME/pulls/$CIRCLE_PR_NUMBER | jq -r '.base.ref') else local base_branch=$CIRCLE_BRANCH fi From 2ebc2fba6c03f42a158a70e3df5bb075e570e713 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 23 Sep 2016 10:50:56 +0200 Subject: [PATCH 480/768] fix building non-PR builds - i.e. fix checking for empty/unbound CIRCLECI_PR_NUMBER --- circleci.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circleci.sh b/circleci.sh index b48e31305d..46d014bbcf 100755 --- a/circleci.sh +++ b/circleci.sh @@ -51,7 +51,7 @@ clone() { } coverage() { - if [ -n ${CIRCLE_PR_NUMBER:-} ]; then + if [ -n "${CIRCLE_PR_NUMBER:-}" ]; then local base_branch=$(curl -fsSL https://api.github.com/repos/dlang/$CIRCLE_PROJECT_REPONAME/pulls/$CIRCLE_PR_NUMBER | jq -r '.base.ref') else local base_branch=$CIRCLE_BRANCH From 127d24539d332bc4365771767edea2fee2383dca Mon Sep 17 00:00:00 2001 From: Mathias Lang Date: Mon, 26 Sep 2016 14:33:55 +0200 Subject: [PATCH 481/768] Remove use of implicit string concatenation This feature will hopefully be deprecated soon. --- src/core/sys/windows/errorrep.d | 2 +- src/core/sys/windows/lmmsg.d | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/sys/windows/errorrep.d b/src/core/sys/windows/errorrep.d index 62782961b3..b44d7034b3 100644 --- a/src/core/sys/windows/errorrep.d +++ b/src/core/sys/windows/errorrep.d @@ -16,7 +16,7 @@ private import core.sys.windows.w32api, core.sys.windows.windef; static assert (_WIN32_WINNT >= 0x501, "core.sys.windows.errorrep is available only if version WindowsXP, Windows2003 " - "or WindowsVista is set"); + ~ "or WindowsVista is set"); enum EFaultRepRetVal { frrvOk, diff --git a/src/core/sys/windows/lmmsg.d b/src/core/sys/windows/lmmsg.d index 7dfcde737a..e636df7e85 100644 --- a/src/core/sys/windows/lmmsg.d +++ b/src/core/sys/windows/lmmsg.d @@ -14,7 +14,7 @@ private import core.sys.windows.lmcons, core.sys.windows.windef, core.sys.window static assert (_WIN32_WINNT >= 0x501, "core.sys.windows.lmmsg is available only if version WindowsXP, Windows2003 " - "or WindowsVista is set"); + ~ "or WindowsVista is set"); enum MSGNAME_NOT_FORWARDED = 0; enum MSGNAME_FORWARDED_TO = 4; From 7b8eac6dce829a2e1505db4d07711b800ce21ea0 Mon Sep 17 00:00:00 2001 From: Johannes Pfau Date: Mon, 26 Sep 2016 19:36:40 +0200 Subject: [PATCH 482/768] rt.aaA: Do not use a struct without fields as AA index in unittest --- src/rt/aaA.d | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rt/aaA.d b/src/rt/aaA.d index 9dbff7c2f8..d51843d45c 100644 --- a/src/rt/aaA.d +++ b/src/rt/aaA.d @@ -938,6 +938,7 @@ unittest { static struct T { + ubyte field; static size_t postblit, dtor; this(this) { From 73ce2c2986b2766102c1f14f71c3c203775655dc Mon Sep 17 00:00:00 2001 From: Denis Shelomovskii Date: Tue, 27 Sep 2016 13:49:12 +0300 Subject: [PATCH 483/768] Fixup pull #1656 to assign unittester only once. Fixup pull #1656 to assign `Runtime.moduleUnitTester` only once. --- src/core/runtime.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/runtime.d b/src/core/runtime.d index 6c9b96499a..184fed7b9a 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -305,7 +305,7 @@ struct Runtime * * Example: * --------- - * version (unittest) static this() + * version (unittest) shared static this() * { * import core.runtime; * From 60ec39e7a5458f0ada6c357cbd029a48c03afbb0 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 27 Sep 2016 15:27:12 -0700 Subject: [PATCH 484/768] remove EH table support - no longer used --- src/rt/sections_elf_shared.d | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/rt/sections_elf_shared.d b/src/rt/sections_elf_shared.d index 1dfbb4b21e..4741e1a7e5 100644 --- a/src/rt/sections_elf_shared.d +++ b/src/rt/sections_elf_shared.d @@ -78,7 +78,7 @@ struct DSO @property immutable(FuncTable)[] ehTables() const { - return _ehTables[]; + return null; } @property inout(void[])[] gcRanges() inout @@ -94,7 +94,6 @@ private: assert(_tlsMod || !_tlsSize); } - immutable(FuncTable)[] _ehTables; ModuleGroup _moduleGroup; Array!(void[]) _gcRanges; size_t _tlsMod; @@ -334,7 +333,6 @@ struct CompilerDSOData size_t _version; // currently 1 void** _slot; // can be used to store runtime data immutable(object.ModuleInfo*)* _minfo_beg, _minfo_end; // array of modules in this object file - immutable(rt.deh.FuncTable)* _deh_beg, _deh_end; // array of exception handling data } T[] toRange(T)(T* beg, T* end) { return beg[0 .. end - beg]; } @@ -360,7 +358,6 @@ extern(C) void _d_dso_registry(CompilerDSOData* data) *data._slot = pdso; // store backlink in library record pdso._moduleGroup = ModuleGroup(toRange(data._minfo_beg, data._minfo_end)); - pdso._ehTables = toRange(data._deh_beg, data._deh_end); dl_phdr_info info = void; findDSOInfoForAddr(data._slot, &info) || assert(0); From f54fa2d97dbf7d5bb078d22737bdf78ee679d1c8 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 1 Oct 2016 20:25:22 +0200 Subject: [PATCH 485/768] purge copied changelog --- changelog.dd | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/changelog.dd b/changelog.dd index 3b6bfc6b20..3401fc7000 100644 --- a/changelog.dd +++ b/changelog.dd @@ -1,27 +1,13 @@ Ddoc -$(COMMENT Pending changelog for 2.072.0. +$(COMMENT Pending changelog for 2.073. This will get copied to dlang.org and + cleared when master gets merged into stable. ) $(BUGSTITLE Library Changes, - -$(LI $(RELATIVE_LINK2 TypeInfo.init-deprecated, `TypeInfo.init` has been -deprecated.)) - ) $(BUGSTITLE Library Changes, - -$(LI $(LNAME2 TypeInfo.init-deprecated, `TypeInfo.init` has been - deprecated.) - - $(P This is a step towards removal of `TypeInfo.init`, which is necessary - to resolve a name clash with the type property $(GLINK2 property, init). - ) - - $(P Use $(REF_OBJECT_SHORT TypeInfo.initializer) instead.) -) - ) Macros: From 20f84a3fd96859da98291f34107065b876a4ce6c Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 5 Oct 2016 01:43:46 +0200 Subject: [PATCH 486/768] fix Issue 16594 - static dtors called twice w/ exception - must call finiSections when an exception is thrown in a destructor - marks runtime as shut down, so final unloading of executable doesn't try to run module dtors again --- src/rt/dmain2.d | 2 +- test/exceptions/Makefile | 11 +++++++++-- test/exceptions/src/static_dtor.d | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 test/exceptions/src/static_dtor.d diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 59f4b4ef4e..864175abd0 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -207,7 +207,6 @@ extern (C) int rt_term() thread_joinAll(); rt_moduleDtor(); gc_term(); - finiSections(); return 1; } catch (Throwable t) @@ -216,6 +215,7 @@ extern (C) int rt_term() } finally { + finiSections(); _d_critical_term(); _d_monitor_staticdtor(); } diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index b2ba0971d5..40398ef878 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -1,6 +1,6 @@ include ../common.mak -TESTS:=stderr_msg unittest_assert invalid_memory_operation unknown_gc +TESTS:=stderr_msg unittest_assert invalid_memory_operation unknown_gc static_dtor ifeq ($(OS)-$(BUILD),linux-debug) TESTS:=$(TESTS) line_trace endif @@ -25,11 +25,18 @@ $(ROOT)/stderr_msg.done: STDERR_EXP="stderr_msg msg" $(ROOT)/unittest_assert.done: STDERR_EXP="unittest_assert msg" $(ROOT)/invalid_memory_operation.done: STDERR_EXP="InvalidMemoryOperationError" $(ROOT)/unknown_gc.done: STDERR_EXP="'unknowngc'" +$(ROOT)/static_dtor.done: STDERR_EXP="dtor_called_more_than_once" +$(ROOT)/static_dtor.done: NEGATE=! $(ROOT)/%.done: $(ROOT)/% @echo Testing $* - $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) + $(NEGATE)$(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) @touch $@ +#$(ROOT)/static_dtor.done: $(ROOT)/static_dtor +# @echo Testing static_dtor +# ! $(QUIET)$(TIMELIMIT)$(ROOT)/static_dtor $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) +# @touch $@ + $(ROOT)/unittest_assert: DFLAGS+=-unittest $(ROOT)/line_trace: DFLAGS+=-L--export-dynamic $(ROOT)/%: $(SRC)/%.d diff --git a/test/exceptions/src/static_dtor.d b/test/exceptions/src/static_dtor.d new file mode 100644 index 0000000000..11ba080d8c --- /dev/null +++ b/test/exceptions/src/static_dtor.d @@ -0,0 +1,14 @@ +// Issue 16594 +import core.stdc.stdio; + +shared static ~this() +{ + __gshared int count; + + if (count++) fprintf(stderr, "dtor_called_more_than_once"); + else throw new Exception("static_dtor_exception"); +} + +void main() +{ +} From f54f8e9367c57b5b6b922ff7da6c589a736ec79e Mon Sep 17 00:00:00 2001 From: Manu Evans Date: Wed, 5 Oct 2016 13:07:47 +1000 Subject: [PATCH 487/768] Added some missing UUID's. --- src/core/sys/windows/uuid.d | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/core/sys/windows/uuid.d b/src/core/sys/windows/uuid.d index eb9a3570a2..9a588f2950 100644 --- a/src/core/sys/windows/uuid.d +++ b/src/core/sys/windows/uuid.d @@ -306,7 +306,10 @@ const IID CLSID_DirectMusicTimeSigTrack = {0xD2AC2888, 0xB39B, 0x11D1, [0x87, 0x const IID CLSID_DirectPlay = {0xD1EB6D20, 0x8923, 0x11D0, [0x9D, 0x97, 0x00, 0xA0, 0xC9, 0x0A, 0x43, 0xCB]}; const IID CLSID_DirectPlayLobby = {0x2FE8F810, 0xB2A5, 0x11D0, [0xA7, 0x87, 0x00, 0x00, 0xF8, 0x03, 0xAB, 0xFC]}; const IID CLSID_DirectSound = {0x47D4D946, 0x62E8, 0x11CF, [0x93, 0xBC, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const IID CLSID_DirectSound8 = {956419135, 33973, 20388, [186, 53, 170, 129, 114, 184, 160, 155]}; const IID CLSID_DirectSoundCapture = {0xB0210780, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; +const IID CLSID_DirectSoundCapture8 = {3837570067, 32665, 18696, [154, 142, 116, 227, 191, 36, 182, 225]}; +const IID CLSID_DirectSoundFullDuplex = {4272173068, 31065, 16711, [178, 106, 35, 119, 185, 231, 169, 29]}; const IID CLSID_DispatchMapper = {0xE9225296, 0xC759, 0x11D1, [0xA0, 0x2B, 0x00, 0xC0, 0x4F, 0xB6, 0x80, 0x9F]}; const IID CLSID_DNWithBinary = {0x7E99C0A3, 0xF935, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; const IID CLSID_DNWithString = {0x334857CC, 0xF934, 0x11D2, [0xBA, 0x96, 0x00, 0xC0, 0x4F, 0xB6, 0xD0, 0xD1]}; @@ -2209,11 +2212,15 @@ const IID IID_IDirectInput2A = {0x5944E662, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0 const IID IID_IDirectInput2W = {0x5944E663, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; const IID IID_IDirectInput7A = {0x9A4CB684, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; const IID IID_IDirectInput7W = {0x9A4CB685, 0x236D, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; +const IID IID_IDirectInput8A = {3212410928, 18490, 19874, [170, 153, 93, 100, 237, 54, 151, 0]}; +const IID IID_IDirectInput8W = {3212410929, 18490, 19874, [170, 153, 93, 100, 237, 54, 151, 0]}; const IID IID_IDirectInputA = {0x89521360, 0xAA8A, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; const IID IID_IDirectInputDevice2A = {0x5944E682, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; const IID IID_IDirectInputDevice2W = {0x5944E683, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; const IID IID_IDirectInputDevice7A = {0x57D7C6BC, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; const IID IID_IDirectInputDevice7W = {0x57D7C6BD, 0x2356, 0x11D3, [0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE]}; +const IID IID_IDirectInputDevice8A = {1423184000, 56341, 18483, [164, 27, 116, 143, 115, 163, 129, 121]}; +const IID IID_IDirectInputDevice8W = {1423184001, 56341, 18483, [164, 27, 116, 143, 115, 163, 129, 121]}; const IID IID_IDirectInputDeviceA = {0x5944E680, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; const IID IID_IDirectInputDeviceW = {0x5944E681, 0xC92E, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; const IID IID_IDirectInputEffect = {0xE7E1F7C0, 0x88D2, 0x11D0, [0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35]}; @@ -2266,6 +2273,7 @@ const IID IID_IDirectSound = {0x279AFA83, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x2 const IID IID_IDirectSound3DBuffer = {0x279AFA86, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; const IID IID_IDirectSound3DListener = {0x279AFA84, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; const IID IID_IDirectSoundBuffer = {0x279AFA85, 0x4981, 0x11CE, [0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; +const IID IID_IDirectSoundBuffer8 = {1747297353, 29988, 19842, [146, 15, 80, 227, 106, 179, 171, 30]}; const IID IID_IDirectSoundCapture = {0xB0210781, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; const IID IID_IDirectSoundCaptureBuffer = {0xB0210782, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; const IID IID_IDirectSoundNotify = {0xB0210783, 0x89CD, 0x11D0, [0xAF, 0x08, 0x00, 0xA0, 0xC9, 0x25, 0xCD, 0x16]}; @@ -4067,4 +4075,6 @@ const IID TID_D3DRMTimedFloatKeys = {0xF406B180, 0x7B3B, 0x11CF, [0x8F, 0x52, 0x const IID TID_D3DRMUrl = {0x3A23EEA1, 0x94B1, 0x11D0, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; const IID TID_D3DRMVector = {0x3D82AB5E, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; const IID TID_DXFILEHeader = {0x3D82AB43, 0x62DA, 0x11CF, [0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33]}; +const IID WKPDID_D3DDebugObjectName = {1117490210, 37256, 19212, [135, 66, 172, 176, 191, 133, 194, 0]}; +const IID WKPDID_D3DDebugObjectNameW = {1288331224, 37407, 17096, [133, 102, 112, 202, 242, 169, 183, 65]}; } From cccf03e08713229665ea5f4a00878cd589ce4a97 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 5 Oct 2016 08:10:30 +0200 Subject: [PATCH 488/768] fix trailing ws and remove unused rule --- test/exceptions/Makefile | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index 40398ef878..1517ce7715 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -26,17 +26,12 @@ $(ROOT)/unittest_assert.done: STDERR_EXP="unittest_assert msg" $(ROOT)/invalid_memory_operation.done: STDERR_EXP="InvalidMemoryOperationError" $(ROOT)/unknown_gc.done: STDERR_EXP="'unknowngc'" $(ROOT)/static_dtor.done: STDERR_EXP="dtor_called_more_than_once" -$(ROOT)/static_dtor.done: NEGATE=! +$(ROOT)/static_dtor.done: NEGATE=! $(ROOT)/%.done: $(ROOT)/% @echo Testing $* - $(NEGATE)$(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) + $(NEGATE) $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) @touch $@ -#$(ROOT)/static_dtor.done: $(ROOT)/static_dtor -# @echo Testing static_dtor -# ! $(QUIET)$(TIMELIMIT)$(ROOT)/static_dtor $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) -# @touch $@ - $(ROOT)/unittest_assert: DFLAGS+=-unittest $(ROOT)/line_trace: DFLAGS+=-L--export-dynamic $(ROOT)/%: $(SRC)/%.d From 7fd7b83281b1c059ff51e7403dc4122ddec17692 Mon Sep 17 00:00:00 2001 From: Johannes Pfau Date: Wed, 5 Oct 2016 15:11:28 +0200 Subject: [PATCH 489/768] ARM: Explicitly specify required FPU mode in Fiber ASM The threadASM code requires a vfp or newer unit for the vpush and vpop instructions. There's exaclty one older floating point ARM unit: The fpa unit. This unit is not supported in GCC but it is supported in binutils. This causes the following problem: When GCC is not explicitly configured with --with-fpu it will not pass fpu flags to binutils as. So binutils will use the binutils standard mode which is fpa! This then causes compilation errors. So in the end even though the gcc preprocessor claims vfp support via __ARM_PCS_VFP we still have to request vfp explicitly in the ASM. Note that this is not a restriction: As GCC doesn't support FPA we can't compile phobos in FPA mode anyway. Newer floating point units are fully compatible with vfp, so we can specify .fpu vfp and still compile phobos with support for newer FPUs. --- src/core/threadasm.S | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/threadasm.S b/src/core/threadasm.S index 94b2fc1670..94acbef7ba 100644 --- a/src/core/threadasm.S +++ b/src/core/threadasm.S @@ -408,6 +408,9 @@ fiber_switchContext: .text .align 2 .global fiber_switchContext +#if defined(__ARM_PCS_VFP) || (defined(__ARM_PCS) && !defined(__SOFTFP__)) // ARM_HardFloat || ARM_SoftFP + .fpu vfp +#endif .type fiber_switchContext, %function fiber_switchContext: .fnstart From 9a94b49ebb22788b068d2487a76f719bc76a13f1 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Sun, 2 Oct 2016 08:43:48 -0700 Subject: [PATCH 490/768] Allow configuration of cycle detection via command line parameters --- src/rt/minfo.d | 222 +++++++++++++++++++++++++++++++------------------ 1 file changed, 139 insertions(+), 83 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index b30bc0847a..1d1e0af248 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -57,42 +57,24 @@ struct ModuleGroup // cycle path, and then creates it. It is a precondition that src and // target modules are involved in a cycle. // + // The return value is malloc'd using C, so it must be freed after use. + // // The delegate is a helper to map module info pointers to index into the modules array - private int[] genCyclePath(int srcidx, int targetidx, - scope int delegate(immutable(ModuleInfo)*) findModule) + private size_t[] genCyclePath(size_t srcidx, size_t targetidx, int[][] edges) { import core.bitop : bt, btc, bts; - // set up all the arrays. Use the GC, we are going to exit anyway. - int[] cyclePath; - int[] distance; - int[][] edges; - distance.length = _modules.length; - edges.length = _modules.length; - immutable nwords = (_modules.length + 8 * size_t.sizeof - 1) / (8 * size_t.sizeof); - immutable flagbytes = nwords * size_t.sizeof; - auto reachable = cast(size_t*) malloc(flagbytes); - scope (exit) - .free(reachable); - - foreach (i, m; _modules) - { - // use bit array to prevent duplicates - // https://issues.dlang.org/show_bug.cgi?id=16208 - memset(reachable, 0, flagbytes); - foreach (e; m.importedModules) - { - auto impidx = findModule(e); - if (impidx != -1 && impidx != i) - if (!bts(reachable, impidx)) - edges[i] ~= impidx; - } - } + // set up all the arrays. + size_t[] cyclePath = (cast(size_t*)malloc(size_t.sizeof * _modules.length * 2))[0 .. _modules.length * 2]; + size_t totalMods; + int[] distance = (cast(int*)malloc(int.sizeof * _modules.length))[0 .. _modules.length]; + scope(exit) + .free(distance.ptr); // determine the shortest path between two modules. Uses dijkstra // without a priority queue. (we can be a bit slow here, in order to // get a better printout). - void shortest(int start, int target) + void shortest(size_t start, size_t target) { // initial setup distance[] = int.max; @@ -135,8 +117,8 @@ struct ModuleGroup // determine the path. This is tricky, because we have to // follow the edges in reverse to get back to the original. We // don't have a reverse mapping, so it takes a bit of looping. - cyclePath.length += curdist; - auto subpath = cyclePath[$ - curdist .. $]; + totalMods += curdist; + auto subpath = cyclePath[totalMods - curdist .. totalMods]; while (true) { --curdist; @@ -164,15 +146,12 @@ struct ModuleGroup } } - // a cycle starts with the source. - cyclePath ~= srcidx; - // first get to the target shortest(srcidx, targetidx); // now get back. shortest(targetidx, srcidx); - return cyclePath; + return cyclePath[0 .. totalMods]; } /****************************** @@ -186,6 +165,35 @@ struct ModuleGroup { import core.bitop : bts, btr, bt, BitRange; import rt.util.container.hashtab; + import rt.config : rt_configOption; + + enum OnCycle + { + abort, + print, + ignore + } + + auto onCycle = OnCycle.abort; + + switch(rt_configOption("oncycle")) with(OnCycle) + { + case "abort": + onCycle = abort; + break; + case "print": + onCycle = print; + break; + case "ignore": + onCycle = ignore; + break; + case "": + // no option passed + break; + default: + // invalid cycle handling option. + throw new Error("DRT invalid cycle handling option: " ~ rt_configOption("oncycle")); + } debug (printModuleDependencies) { @@ -205,18 +213,6 @@ struct ModuleGroup if (!len) return; // nothing to do. - // used for mapping module info to indexes. - HashTab!(immutable(ModuleInfo)*, int) modIndexes; - foreach (i, m; _modules) - modIndexes[m] = cast(int) i; - - int findModule(immutable(ModuleInfo)* mi) - { - if (auto idx = mi in modIndexes) - return *idx; - return -1; - } - // allocate some stack arrays that will be used throughout the process. immutable nwords = (len + 8 * size_t.sizeof - 1) / (8 * size_t.sizeof); immutable flagbytes = nwords * size_t.sizeof; @@ -235,12 +231,82 @@ struct ModuleGroup memset(flags, 0, flagbytes); } + + // build the edges between each module. We may need this for printing, + // and also allows avoiding keeping a hash around for module lookups. + int[][] edges = (cast(int[]*)malloc((int[]).sizeof * _modules.length))[0 .. _modules.length]; + { + HashTab!(immutable(ModuleInfo)*, int) modIndexes; + foreach (i, m; _modules) + modIndexes[m] = cast(int) i; + + auto reachable = cast(size_t*) malloc(flagbytes); + scope(exit) + .free(reachable); + + foreach (i, m; _modules) + { + // use bit array to prevent duplicates + // https://issues.dlang.org/show_bug.cgi?id=16208 + clearFlags(reachable); + // preallocate enough space to store all the indexes + int *edge = cast(int*)malloc(int.sizeof * _modules.length); + size_t nEdges = 0; + foreach (e; m.importedModules) + { + if(auto impidx = e in modIndexes) + { + if (*impidx != i) + if (!bts(reachable, *impidx)) + edge[nEdges++] = *impidx; + } + } + // trim space to what is needed. + edges[i] = (cast(int*)realloc(edge, int.sizeof * nEdges))[0 .. nEdges]; + } + } + + // free all the edges after we are done + scope(exit) + { + foreach(e; edges) + if(e.ptr) + .free(e.ptr); + .free(edges.ptr); + } + + void buildCycleMessage(size_t sourceIdx, size_t cycleIdx, scope void delegate(string) sink) + { + version (Windows) + enum EOL = "\r\n"; + else + enum EOL = "\n"; + + sink("Cyclic dependency between module "); + sink(_modules[sourceIdx].name); + sink(" and "); + sink(_modules[cycleIdx].name); + sink(EOL); + auto cyclePath = genCyclePath(sourceIdx, cycleIdx, edges); + scope(exit) .free(cyclePath.ptr); + + sink(_modules[sourceIdx].name); + sink("* ->" ~ EOL); + foreach (x; cyclePath[0 .. $ - 1]) + { + sink(_modules[x].name); + sink(bt(relevant, x) ? "* ->" ~ EOL : " ->" ~ EOL); + } + sink(_modules[sourceIdx].name); + sink("*" ~ EOL); + } + // find all the non-trivial dependencies (that is, dependencies that have a // ctor or dtor) of a given module. Doing this, we can 'skip over' the // trivial modules to get at the non-trivial ones. // // If a cycle is detected, returns the index of the module that completes the cycle. - int findDeps(size_t idx, size_t* reachable) + void findDeps(size_t idx, size_t* reachable) { static struct stackFrame { @@ -264,7 +330,7 @@ struct ModuleGroup for (;;) { auto m = _modules[sp.curMod]; - if (sp.curDep >= m.importedModules.length) + if (sp.curDep >= edges[sp.curMod].length) { // return if (sp == stack) // finished the algorithm @@ -273,7 +339,7 @@ struct ModuleGroup } else { - auto midx = findModule(m.importedModules[sp.curDep]); + auto midx = edges[sp.curMod][sp.curDep]; // if midx is -1, then this isn't part of this DSO. if (midx != -1 && !bts(reachable, midx)) { @@ -283,7 +349,23 @@ struct ModuleGroup if (bt(ctorstart, midx)) { // was already started, this is a cycle. - return midx; + final switch(onCycle) with(OnCycle) + { + case abort: + string errmsg = ""; + buildCycleMessage(idx, midx, (string x) {errmsg ~= x;}); + throw new Error(errmsg, __FILE__, __LINE__); + case ignore: + break; + case print: + // print the message + buildCycleMessage(idx, midx, (string x) { + import core.stdc.stdio : fprintf, stderr; + fprintf(stderr, "%.*s", x.length, x.ptr); + }); + // continue on as if this is correct. + break; + } } } else if (!bt(ctordone, midx)) @@ -306,9 +388,6 @@ struct ModuleGroup // next dependency ++sp.curDep; } - - // no cycles seen - return -1; } // The list of constructors that will be returned by the sorting. @@ -331,41 +410,17 @@ struct ModuleGroup auto reachable = cast(size_t*) malloc(flagbytes); scope (exit) .free(reachable); - auto cycleIdx = findDeps(curidx, reachable); - if (cycleIdx != -1) - { - auto cycleMod = _modules[cycleIdx]; - // found a cycle - - version (Windows) - enum EOL = "\r\n"; - else - enum EOL = "\n"; - - string errmsg = "Cyclic dependency between module " - ~ cycleMod.name ~ " and " ~ current.name ~ EOL; - auto cyclePath = genCyclePath(cycleIdx, cast(int) curidx, &findModule); - - foreach (midx; cyclePath[0 .. $ - 1]) - { - errmsg ~= _modules[midx].name; - errmsg ~= bt(relevant, midx) ? "* ->" ~ EOL : " ->" ~ EOL; - } - errmsg ~= cycleMod.name; - errmsg ~= "*" ~ EOL; - throw new Error(errmsg, __FILE__, __LINE__); - } + findDeps(curidx, reachable); // process the dependencies. First, we process all relevant ones bts(ctorstart, curidx); auto brange = BitRange(reachable, len); foreach (i; brange) { - if (i != curidx && bt(relevant, i) && !bt(ctordone, i)) - { - assert(!bt(ctorstart, i)); // sanity check, this should have been flagged a cycle earlier + // note, don't check for cycles here, because the config could have been set to ignore cycles. + // however, don't recurse if there is one, so still check for started ctor. + if (i != curidx && bt(relevant, i) && !bt(ctordone, i) && !bt(ctorstart, i)) processMod(i); - } } // now mark this node, and all nodes reachable from this module as done. @@ -374,8 +429,9 @@ struct ModuleGroup foreach (i; brange) { // Since relevant dependencies are already marked as done - // from recursion above, no reason to check for relevance, - // that is a wasted op. + // from recursion above (or are going to be handled up the call + // stack), no reason to check for relevance, that is a wasted + // op. bts(ctordone, i); } From b53b07fe337d675690c847d149de4834fb467c14 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Wed, 5 Oct 2016 08:26:55 -0700 Subject: [PATCH 491/768] Add tests for new DRT options for cycle handling --- posix.mak | 2 +- test/cycles/Makefile | 26 ++++++++++++++++++++++++++ test/cycles/src/mod1.d | 8 ++++++++ test/cycles/src/mod2.d | 14 ++++++++++++++ test/cycles/src/mod3.d | 8 ++++++++ 5 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 test/cycles/Makefile create mode 100644 test/cycles/src/mod1.d create mode 100644 test/cycles/src/mod2.d create mode 100644 test/cycles/src/mod3.d diff --git a/posix.mak b/posix.mak index c3ba4ccd9f..befd52c9b4 100644 --- a/posix.mak +++ b/posix.mak @@ -197,7 +197,7 @@ $(DRUNTIME): $(OBJS) $(SRCS) UT_MODULES:=$(patsubst src/%.d,$(ROOT)/unittest/%,$(SRCS)) HAS_ADDITIONAL_TESTS:=$(shell test -d test && echo 1) ifeq ($(HAS_ADDITIONAL_TESTS),1) - ADDITIONAL_TESTS:=test/init_fini test/exceptions test/coverage test/profile + ADDITIONAL_TESTS:=test/init_fini test/exceptions test/coverage test/profile test/cycles ADDITIONAL_TESTS+=$(if $(SHARED),test/shared,) endif diff --git a/test/cycles/Makefile b/test/cycles/Makefile new file mode 100644 index 0000000000..d810c4b525 --- /dev/null +++ b/test/cycles/Makefile @@ -0,0 +1,26 @@ +include ../common.mak + +TESTS:=cycle_ignore cycle_abort cycle_print + +DIFF:=diff +SED:=sed + +.PHONY: all clean +all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) + +$(ROOT)/cycle_ignore.done: RETCODE=0 +$(ROOT)/cycle_ignore.done: LINES=0 +$(ROOT)/cycle_abort.done: RETCODE=1 +$(ROOT)/cycle_abort.done: LINES=5 +$(ROOT)/cycle_print.done: RETCODE=0 +$(ROOT)/cycle_print.done: LINES=8 +$(ROOT)/%.done: $(ROOT)/test_cycles + @echo Testing $* + $(QUIET)$(TIMELIMIT)$(ROOT)/test_cycles --DRT-oncycle=$(patsubst cycle_%.done,%, $(notdir $@)) > $@ 2>&1; test $$? -eq $(RETCODE) + test `cat $@ | wc -l` -eq $(LINES) + +$(ROOT)/test_cycles: $(SRC)/*.d + $(QUIET)$(DMD) $(DFLAGS) -of$@ $^ + +clean: + rm -rf $(GENERATED) diff --git a/test/cycles/src/mod1.d b/test/cycles/src/mod1.d new file mode 100644 index 0000000000..eca3c64991 --- /dev/null +++ b/test/cycles/src/mod1.d @@ -0,0 +1,8 @@ +module mod1; +import mod2; + +shared int x; +shared static this() +{ + x = 1; +} diff --git a/test/cycles/src/mod2.d b/test/cycles/src/mod2.d new file mode 100644 index 0000000000..8a7328bb32 --- /dev/null +++ b/test/cycles/src/mod2.d @@ -0,0 +1,14 @@ +module mod2; +import mod1; +import mod3; + +shared int x; +shared static this() +{ + x = 2; +} + +void main() +{ + // do nothing +} diff --git a/test/cycles/src/mod3.d b/test/cycles/src/mod3.d new file mode 100644 index 0000000000..2092aa2c3f --- /dev/null +++ b/test/cycles/src/mod3.d @@ -0,0 +1,8 @@ +module mod3; +import mod2; + +shared int x; +shared static this() +{ + x = 3; +} From 6e27f17d90bee735895ec7d5bb144605552724f8 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Wed, 5 Oct 2016 08:30:43 -0700 Subject: [PATCH 492/768] Remove outdated comment --- src/rt/minfo.d | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 1d1e0af248..94f8060272 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -58,8 +58,6 @@ struct ModuleGroup // target modules are involved in a cycle. // // The return value is malloc'd using C, so it must be freed after use. - // - // The delegate is a helper to map module info pointers to index into the modules array private size_t[] genCyclePath(size_t srcidx, size_t targetidx, int[][] edges) { import core.bitop : bt, btc, bts; From d364c4b0683b6575b0fd639288252c006cb8d94f Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 7 Oct 2016 14:59:22 +0200 Subject: [PATCH 493/768] simplify self-import filtering - directly compare pointers instead of module indices - rename e (edge) -> imp (import) --- src/rt/minfo.d | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 94f8060272..10921389d1 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -250,13 +250,14 @@ struct ModuleGroup // preallocate enough space to store all the indexes int *edge = cast(int*)malloc(int.sizeof * _modules.length); size_t nEdges = 0; - foreach (e; m.importedModules) + foreach (imp; m.importedModules) { - if(auto impidx = e in modIndexes) + if (imp is m) // self-import + continue; + if (auto impidx = imp in modIndexes) { - if (*impidx != i) - if (!bts(reachable, *impidx)) - edge[nEdges++] = *impidx; + if (!bts(reachable, *impidx)) + edge[nEdges++] = *impidx; } } // trim space to what is needed. From 6e7ff71ffd6e0ca3ebcd2fe8254abc35a82ad40f Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 7 Oct 2016 15:00:42 +0200 Subject: [PATCH 494/768] fix printf parameter - %.*s expects an int length --- src/rt/minfo.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 10921389d1..27ff0f7ca2 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -360,7 +360,7 @@ struct ModuleGroup // print the message buildCycleMessage(idx, midx, (string x) { import core.stdc.stdio : fprintf, stderr; - fprintf(stderr, "%.*s", x.length, x.ptr); + fprintf(stderr, "%.*s", cast(int) x.length, x.ptr); }); // continue on as if this is correct. break; From 021f5460f0b94a77ddc02784a18e9ac64161175d Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 8 Oct 2016 18:06:25 -0700 Subject: [PATCH 495/768] add core.simd.prefetch declaration --- src/core/simd.d | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/core/simd.d b/src/core/simd.d index 84161cd6b0..2868d611bd 100644 --- a/src/core/simd.d +++ b/src/core/simd.d @@ -447,4 +447,36 @@ version ( D_SIMD ) { return __simd(XMM.PCMPEQW, v1, v2); } + + /********************* + * Emit prefetch instruction. + * Params: + * address = address to be prefetched + * writeFetch = true for write fetch, false for read fetch + * locality = 0..3 (0 meaning least local, 3 meaning most local) + * Note: + * The Intel mappings are: + * $(TABLE + * $(THDR writeFetch, Locality, Instruction) + * $(TROW false, 0, 0, prefetchnta) + * $(TROW false, 0, 1, prefetch2) + * $(TROW false, 0, 2, prefetch1) + * $(TROW false, 0, 3, prefetch0) + * $(TROW false, 0, 0, prefetchw) + * $(TROW false, 0, 1, prefetchw) + * $(TROW false, 0, 2, prefetchw) + * $(TROW false, 0, 3, prefetchw) + * ) + */ + void prefetch(bool writeFetch, ubyte locality)(const(void)* address) + { + static if (writeFetch) + __prefetch(address, 4); + else static if (locality < 4) + __prefetch(address, 3 - locality); + else + static assert(0, "0..3 expected for locality"); + } + + private void __prefetch(const(void*) address, ubyte encoding); } From 1627daf6574b92b3b4b3bf4c44cb395529548e24 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 9 Oct 2016 04:29:58 +0200 Subject: [PATCH 496/768] fix documentation - remove extra column of 0s (guess that was writeFetch before) - fix THDR->THEAD --- src/core/simd.d | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/simd.d b/src/core/simd.d index 2868d611bd..d92f682dba 100644 --- a/src/core/simd.d +++ b/src/core/simd.d @@ -457,15 +457,15 @@ version ( D_SIMD ) * Note: * The Intel mappings are: * $(TABLE - * $(THDR writeFetch, Locality, Instruction) - * $(TROW false, 0, 0, prefetchnta) - * $(TROW false, 0, 1, prefetch2) - * $(TROW false, 0, 2, prefetch1) - * $(TROW false, 0, 3, prefetch0) - * $(TROW false, 0, 0, prefetchw) - * $(TROW false, 0, 1, prefetchw) - * $(TROW false, 0, 2, prefetchw) - * $(TROW false, 0, 3, prefetchw) + * $(THEAD writeFetch, locality, Instruction) + * $(TROW false, 0, prefetchnta) + * $(TROW false, 1, prefetch2) + * $(TROW false, 2, prefetch1) + * $(TROW false, 3, prefetch0) + * $(TROW false, 0, prefetchw) + * $(TROW false, 1, prefetchw) + * $(TROW false, 2, prefetchw) + * $(TROW false, 3, prefetchw) * ) */ void prefetch(bool writeFetch, ubyte locality)(const(void)* address) From 9905e6706903134ba0edb89b0081c3f6cd5245aa Mon Sep 17 00:00:00 2001 From: Jeremy DeHaan Date: Fri, 23 Sep 2016 10:50:03 -0700 Subject: [PATCH 497/768] Updated changelog to reflect #1581 --- changelog.dd | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/changelog.dd b/changelog.dd index 3401fc7000..fcacfeff55 100644 --- a/changelog.dd +++ b/changelog.dd @@ -5,9 +5,36 @@ $(COMMENT Pending changelog for 2.073. This will get copied to dlang.org and ) $(BUGSTITLE Library Changes, + +$(LI $(RELATIVE_LINK2 gc-runtimeswitch-added, A switch for selecting +the GC implementation at runtime was added.)) + +$(LI $(RELATIVE_LINK2 manualgc-added, A GC implementation allowing manual +memory management was added.)) + ) $(BUGSTITLE Library Changes, + +$(LI $(LNAME2 gc-runtimeswitch-added, A runtime switch for selecting +the GC implementation was added.) + + $(P This allows the possibility of having more than one GC implementation + and allowing users to select the right one based on their needs. + ) +) + +$(LI $(LNAME2 manualgc-added, A GC implementation allowing manual +memory management was added.) + + $(P As part of allowing multiple GC implementations to exist and to be + selected at runtime, gcstub was refactored to be a selectable + implementation. It is usable in applications which do not rely on a garbage + collector to clean up memory (ie. when dynamic array resizing is not used, + and all memory allocated with 'new' is freed deterministically with + 'delete'). + ) +) ) Macros: From 353a92eb75030c1f5dd33a5d0262103bccaa48c7 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 9 Oct 2016 18:20:38 +0200 Subject: [PATCH 498/768] make it a bit terser and informative - also fix links and formatting --- changelog.dd | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/changelog.dd b/changelog.dd index fcacfeff55..4a29656846 100644 --- a/changelog.dd +++ b/changelog.dd @@ -17,23 +17,33 @@ memory management was added.)) $(BUGSTITLE Library Changes, $(LI $(LNAME2 gc-runtimeswitch-added, A runtime switch for selecting -the GC implementation was added.) - - $(P This allows the possibility of having more than one GC implementation - and allowing users to select the right one based on their needs. + the GC implementation was added.) + + $(P This allows to select a GC at program startup.) + ------- + ./my_d_exe --DRT-gc=gc:conservative # use conservative GC (default) + ./my_d_exe --DRT-gc=help # list available GC options + ------- + $(P See $(LINK2 $(ROOT_DIR)spec/garbage.html#gc_config, gc_config) for more information about gcopt.) + $(P In a future release it should be possible to extend the list + of GCs by linking with an alternative one. ) ) -$(LI $(LNAME2 manualgc-added, A GC implementation allowing manual -memory management was added.) +$(LI $(LNAME2 manualgc-added, A manual GC was added.) + + $(P Use the `--DRT-gc=gc:manual` option to select the manual GC.) + + $(P This GC is a thin wrapper around malloc and free and does not collect + any garbage. It only releases memory explicity freed using $(REF_SHORT GC.free, core,memory). + Builtin language constructs such as arrays or delegates that might + allocate GC memory can leak. It supersedes the gcstub implementation. + ) - $(P As part of allowing multiple GC implementations to exist and to be - selected at runtime, gcstub was refactored to be a selectable - implementation. It is usable in applications which do not rely on a garbage - collector to clean up memory (ie. when dynamic array resizing is not used, - and all memory allocated with 'new' is freed deterministically with - 'delete'). + $(P The manual GC is useful for applications that deterministically control memory. + Use dmd's `-vgc` switch to keep track of hidden allocations that might leak. ) + $(P It can also be helpful to find memory corruptions with tools like valgrind.) ) ) From b7106b5ab8fb647c199669e9bdaaad482af0e178 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Sat, 22 Oct 2016 11:16:00 -0700 Subject: [PATCH 499/768] Make FD_* functions for select pure. This fixes it so that the FD_* functions (which are macros in C/C++) are pure on POSIX systems. The Windows versions (in core.sys.windows.winsock2) are already pure. --- src/core/sys/posix/sys/select.d | 60 +++++++++++++++------------------ 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/src/core/sys/posix/sys/select.d b/src/core/sys/posix/sys/select.d index 2700d7c789..3bdd21078f 100644 --- a/src/core/sys/posix/sys/select.d +++ b/src/core/sys/posix/sys/select.d @@ -1,17 +1,11 @@ /** * D header file for POSIX. * - * Copyright: Copyright Sean Kelly 2005 - 2009. + * Copyright: Copyright Sean Kelly 2005 - 2016. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Sean Kelly, Alex Rønne Petersen * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition */ - -/* Copyright Sean Kelly 2005 - 2009. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ module core.sys.posix.sys.select; private import core.sys.posix.config; @@ -64,12 +58,12 @@ version( CRuntime_Glibc ) alias c_long __fd_mask; enum uint __NFDBITS = 8 * __fd_mask.sizeof; - extern (D) auto __FDELT( int d ) + extern (D) auto __FDELT( int d ) pure { return d / __NFDBITS; } - extern (D) auto __FDMASK( int d ) + extern (D) auto __FDMASK( int d ) pure { return cast(__fd_mask) 1 << ( d % __NFDBITS ); } @@ -82,22 +76,22 @@ version( CRuntime_Glibc ) __fd_mask[FD_SETSIZE / __NFDBITS] fds_bits; } - extern (D) void FD_CLR( int fd, fd_set* fdset ) + extern (D) void FD_CLR( int fd, fd_set* fdset ) pure { fdset.fds_bits[__FDELT( fd )] &= ~__FDMASK( fd ); } - extern (D) bool FD_ISSET( int fd, const(fd_set)* fdset ) + extern (D) bool FD_ISSET( int fd, const(fd_set)* fdset ) pure { return (fdset.fds_bits[__FDELT( fd )] & __FDMASK( fd )) != 0; } - extern (D) void FD_SET( int fd, fd_set* fdset ) + extern (D) void FD_SET( int fd, fd_set* fdset ) pure { fdset.fds_bits[__FDELT( fd )] |= __FDMASK( fd ); } - extern (D) void FD_ZERO( fd_set* fdset ) + extern (D) void FD_ZERO( fd_set* fdset ) pure { fdset.fds_bits[0 .. $] = 0; } @@ -155,22 +149,22 @@ else version( Darwin ) int[(FD_SETSIZE + (__DARWIN_NFDBITS - 1)) / __DARWIN_NFDBITS] fds_bits; } - extern (D) void FD_CLR( int fd, fd_set* fdset ) + extern (D) void FD_CLR( int fd, fd_set* fdset ) pure { fdset.fds_bits[fd / __DARWIN_NFDBITS] &= ~(1 << (fd % __DARWIN_NFDBITS)); } - extern (D) bool FD_ISSET( int fd, const(fd_set)* fdset ) + extern (D) bool FD_ISSET( int fd, const(fd_set)* fdset ) pure { return (fdset.fds_bits[fd / __DARWIN_NFDBITS] & (1 << (fd % __DARWIN_NFDBITS))) != 0; } - extern (D) void FD_SET( int fd, fd_set* fdset ) + extern (D) void FD_SET( int fd, fd_set* fdset ) pure { fdset.fds_bits[fd / __DARWIN_NFDBITS] |= 1 << (fd % __DARWIN_NFDBITS); } - extern (D) void FD_ZERO( fd_set* fdset ) + extern (D) void FD_ZERO( fd_set* fdset ) pure { fdset.fds_bits[0 .. $] = 0; } @@ -193,27 +187,27 @@ else version( FreeBSD ) __fd_mask[(FD_SETSIZE + (_NFDBITS - 1)) / _NFDBITS] __fds_bits; } - extern (D) __fd_mask __fdset_mask(uint n) + extern (D) __fd_mask __fdset_mask(uint n) pure { return cast(__fd_mask) 1 << (n % _NFDBITS); } - extern (D) void FD_CLR( int n, fd_set* p ) + extern (D) void FD_CLR( int n, fd_set* p ) pure { p.__fds_bits[n / _NFDBITS] &= ~__fdset_mask(n); } - extern (D) bool FD_ISSET( int n, const(fd_set)* p ) + extern (D) bool FD_ISSET( int n, const(fd_set)* p ) pure { return (p.__fds_bits[n / _NFDBITS] & __fdset_mask(n)) != 0; } - extern (D) void FD_SET( int n, fd_set* p ) + extern (D) void FD_SET( int n, fd_set* p ) pure { p.__fds_bits[n / _NFDBITS] |= __fdset_mask(n); } - extern (D) void FD_ZERO( fd_set* p ) + extern (D) void FD_ZERO( fd_set* p ) pure { fd_set *_p; size_t _n; @@ -247,22 +241,22 @@ else version (Solaris) c_long[(FD_SETSIZE + (FD_NFDBITS - 1)) / FD_NFDBITS] fds_bits; } - extern (D) void FD_SET(int __n, fd_set* __p) + extern (D) void FD_SET(int __n, fd_set* __p) pure { __p.fds_bits[__n / FD_NFDBITS] |= 1UL << (__n % FD_NFDBITS); } - extern (D) void FD_CLR(int __n, fd_set* __p) + extern (D) void FD_CLR(int __n, fd_set* __p) pure { __p.fds_bits[__n / FD_NFDBITS] &= ~(1UL << (__n % FD_NFDBITS)); } - extern (D) bool FD_ISSET(int __n, const(fd_set)* __p) + extern (D) bool FD_ISSET(int __n, const(fd_set)* __p) pure { return (__p.fds_bits[__n / FD_NFDBITS] & (1UL << (__n % FD_NFDBITS))) != 0; } - extern (D) void FD_ZERO(fd_set* __p) + extern (D) void FD_ZERO(fd_set* __p) pure { __p.fds_bits[0 .. $] = 0; } @@ -277,12 +271,12 @@ else version( CRuntime_Bionic ) alias c_ulong __fd_mask; enum uint __NFDBITS = 8 * __fd_mask.sizeof; - extern (D) auto __FDELT( int d ) + extern (D) auto __FDELT( int d ) pure { return d / __NFDBITS; } - extern (D) auto __FDMASK( int d ) + extern (D) auto __FDMASK( int d ) pure { return cast(__fd_mask) 1 << ( d % __NFDBITS ); } @@ -296,22 +290,22 @@ else version( CRuntime_Bionic ) } // These functions are generated in assembly in bionic. - extern (D) void FD_CLR( int fd, fd_set* fdset ) + extern (D) void FD_CLR( int fd, fd_set* fdset ) pure { fdset.fds_bits[__FDELT( fd )] &= ~__FDMASK( fd ); } - extern (D) bool FD_ISSET( int fd, const(fd_set)* fdset ) + extern (D) bool FD_ISSET( int fd, const(fd_set)* fdset ) pure { return (fdset.fds_bits[__FDELT( fd )] & __FDMASK( fd )) != 0; } - extern (D) void FD_SET( int fd, fd_set* fdset ) + extern (D) void FD_SET( int fd, fd_set* fdset ) pure { fdset.fds_bits[__FDELT( fd )] |= __FDMASK( fd ); } - extern (D) void FD_ZERO( fd_set* fdset ) + extern (D) void FD_ZERO( fd_set* fdset ) pure { fdset.fds_bits[0 .. $] = 0; } @@ -324,7 +318,7 @@ else static assert(false, "Unsupported platform"); } -unittest +pure unittest { debug(select) printf("core.sys.posix.sys.select unittest\n"); From 48a0460c0cd67703d1fc38b8076e7735e29c6fae Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 23 Oct 2016 15:02:22 +0000 Subject: [PATCH 500/768] core.time: Make private helper private --- src/core/time.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/time.d b/src/core/time.d index 7cf93b0975..cc454889d0 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -129,7 +129,7 @@ ulong mach_absolute_time(); } //To verify that an lvalue isn't required. -version(unittest) T copy(T)(T t) +version(unittest) private T copy(T)(T t) { return t; } From ce6aef38adbf7f652db67bc7287a97e45c173b8f Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 25 Oct 2016 01:02:52 +0200 Subject: [PATCH 501/768] Revert "Merge pull request #1637 from WalterBright/scope-dup" This reverts commit 35cd63567095bf865e0c7b4bb8bb92945b6244a5, reversing changes made to aee373fb541dafce2769792b4430be82ef25bd2b. - fixes Issue 16504 - dup can't use storage class scope for its parameter in general --- src/object.d | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/object.d b/src/object.d index f5ea18e3d9..26d729e02c 100644 --- a/src/object.d +++ b/src/object.d @@ -3302,7 +3302,7 @@ unittest } /// Provide the .dup array property. -@property auto dup(T)(scope T[] a) +@property auto dup(T)(T[] a) if (!is(const(T) : T)) { import core.internal.traits : Unconst; @@ -3318,7 +3318,7 @@ unittest /// ditto // const overload to support implicit conversion to immutable (unique result, see DIP29) -@property T[] dup(T)(scope const(T)[] a) +@property T[] dup(T)(const(T)[] a) if (is(const(T) : T)) { // wrap unsafe _dup in @trusted to preserve @safe postblit @@ -3330,7 +3330,7 @@ unittest /// Provide the .idup array property. -@property immutable(T)[] idup(T)(scope T[] a) +@property immutable(T)[] idup(T)(T[] a) { static assert(is(T : immutable(T)), "Cannot implicitly convert type "~T.stringof~ " to immutable in idup."); @@ -3343,17 +3343,17 @@ unittest } /// ditto -@property immutable(T)[] idup(T:void)(scope const(T)[] a) +@property immutable(T)[] idup(T:void)(const(T)[] a) { return a.dup; } -private U[] _trustedDup(T, U)(scope T[] a) @trusted +private U[] _trustedDup(T, U)(T[] a) @trusted { return _dup!(T, U)(a); } -private U[] _dup(T, U)(scope T[] a) // pure nothrow depends on postblit +private U[] _dup(T, U)(T[] a) // pure nothrow depends on postblit { if (__ctfe) { From 2f3f7c80d9843f4c2de05fdd2e15af71f185cf62 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 26 Oct 2016 02:12:39 +0200 Subject: [PATCH 502/768] add unittest example for Issue 16504 - fairly synthetic example, but serves as documentation --- src/object.d | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/object.d b/src/object.d index 26d729e02c..b5f265e9bf 100644 --- a/src/object.d +++ b/src/object.d @@ -3547,3 +3547,19 @@ unittest S[] arr; auto a = arr.dup; } + +unittest +{ + // Bugzilla 16504 + static struct S + { + __gshared int* gp; + int* p; + // postblit and hence .dup could escape + this(this) { gp = p; } + } + + int p; + scope arr = [S(&p)]; + auto a = arr.dup; // dup does escape +} From b706631fb7a627c1d247f8c1609cf5e471a5b6ee Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 28 Oct 2016 23:33:42 +0200 Subject: [PATCH 503/768] remove __ctfeWriteln - just append a newline before the call, or format the string --- src/object.d | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/object.d b/src/object.d index c9d23292d4..a43676693c 100644 --- a/src/object.d +++ b/src/object.d @@ -3186,12 +3186,8 @@ bool _xopCmp(in void*, in void*) { throw new Error("TypeInfo.compare is not implemented"); } + void __ctfeWrite(const string s) @nogc @safe pure nothrow {} -void __ctfeWriteln(const string s) @nogc @safe pure nothrow -{ - __ctfeWrite(s); - __ctfeWrite("\n"); -} /****************************************** * Create RTInfo for type T From 0d28db3b8a8d2ae099da075e41185c123391e81e Mon Sep 17 00:00:00 2001 From: Sophie Kirschner Date: Sun, 30 Oct 2016 15:06:51 -0400 Subject: [PATCH 504/768] Added private qualifier to one-off unittest helper isnan in object.d --- src/object.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index 9a580dd823..a3ce8de4dd 100644 --- a/src/object.d +++ b/src/object.d @@ -2927,7 +2927,7 @@ version(unittest) unittest version (unittest) { - bool isnan(float x) + private bool isnan(float x) { return x != x; } From 65d9a071b244611ca3973d79c8e64388af5c5439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Nordl=C3=B6w?= Date: Mon, 24 Oct 2016 16:46:17 +0200 Subject: [PATCH 505/768] Qualify C-style memory allocations functions as pure --- src/core/stdc/stdlib.d | 11 +++++------ src/core/sys/posix/stdlib.d | 12 ++++++------ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/core/stdc/stdlib.d b/src/core/stdc/stdlib.d index 86cbafb5ed..6fe432aace 100644 --- a/src/core/stdc/stdlib.d +++ b/src/core/stdc/stdlib.d @@ -157,11 +157,11 @@ else // functions using these already have to be @trusted, allowing them to // call @system stuff anyway. /// -void* malloc(size_t size); +void* malloc(size_t size) pure; /// -void* calloc(size_t nmemb, size_t size); +void* calloc(size_t nmemb, size_t size) pure; /// -void* realloc(void* ptr, size_t size); +void* realloc(void* ptr, size_t size) pure; /// void free(void* ptr); @@ -212,11 +212,11 @@ size_t wcstombs(char* s, in wchar_t* pwcs, size_t n); version( DigitalMars ) { // See malloc comment about @trusted. - void* alloca(size_t size); // non-standard + void* alloca(size_t size) pure; // non-standard } else version( GNU ) { - void* alloca(size_t size); // compiler intrinsic + void* alloca(size_t size) pure; // compiler intrinsic } version( CRuntime_Microsoft ) @@ -231,4 +231,3 @@ version( CRuntime_Microsoft ) /// long _wcstoi64(in wchar *,wchar **,int); } - diff --git a/src/core/sys/posix/stdlib.d b/src/core/sys/posix/stdlib.d index 4afd346d46..c9450a8412 100644 --- a/src/core/sys/posix/stdlib.d +++ b/src/core/sys/posix/stdlib.d @@ -122,42 +122,42 @@ version( CRuntime_Glibc ) int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t); // LEGACY non-standard + void* valloc(size_t) pure; // LEGACY non-standard } else version( Darwin ) { int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t); // LEGACY non-standard + void* valloc(size_t) pure; // LEGACY non-standard } else version( FreeBSD ) { int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t); // LEGACY non-standard + void* valloc(size_t) pure; // LEGACY non-standard } else version( OpenBSD ) { int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t); // LEGACY non-standard + void* valloc(size_t) pure; // LEGACY non-standard } else version( CRuntime_Bionic ) { int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t); + void* valloc(size_t) pure; } else version( Solaris ) { int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t); // LEGACY non-standard + void* valloc(size_t) pure; // LEGACY non-standard } // From 5d31c424bfc1a24d86056a2232be90a628dd319d Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Thu, 20 Oct 2016 20:24:45 +0200 Subject: [PATCH 506/768] Add linux-specific `core.sys.linux.sys.file` module This adds core.sys.linux.file module which contains flock function definition and values of the parameters to pass. --- mak/COPY | 1 + src/core/sys/linux/sys/file.d | 34 ++++++++++++++++++++++++++++++++++ win32.mak | 3 +++ win64.mak | 3 +++ 4 files changed, 41 insertions(+) create mode 100644 src/core/sys/linux/sys/file.d diff --git a/mak/COPY b/mak/COPY index 58ed65e7b1..9e4f544109 100644 --- a/mak/COPY +++ b/mak/COPY @@ -93,6 +93,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\unistd.d \ \ $(IMPDIR)\core\sys\linux\sys\auxv.d \ + $(IMPDIR)\core\sys\linux\sys\file.d \ $(IMPDIR)\core\sys\linux\sys\inotify.d \ $(IMPDIR)\core\sys\linux\sys\mman.d \ $(IMPDIR)\core\sys\linux\sys\signalfd.d \ diff --git a/src/core/sys/linux/sys/file.d b/src/core/sys/linux/sys/file.d new file mode 100644 index 0000000000..ccdfd24503 --- /dev/null +++ b/src/core/sys/linux/sys/file.d @@ -0,0 +1,34 @@ +/** + * D header file for Linux file ops. + * + * Copyright: Copyright Nemanja Boric 2016. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Nemanja Boric + */ +module core.sys.linux.sys.file; + +version (linux): +extern (C): +nothrow: +@nogc: + +/* Operations for the `flock' call. */ +/// Shared lock +enum LOCK_SH = 0x01; +/// Exclusive lock +enum LOCK_EX = 0x02; +/// Unlock +enum LOCK_UN = 0x08; + +/// Don't block when locking. +/// Can be OR'd into one of the above. +enum LOCK_NB = 0x04; + +/// Apply or remove an advisory lock on an open file +/// Params: +/// fd = file to apply or remove lock from +/// operation = lock operation to perform +/// Returns: +/// 0 on success, -1 on failure, with .errno +/// set appropriately. +int flock(int fd, int operation) @trusted; diff --git a/win32.mak b/win32.mak index 109a44adc8..e19718c2d5 100644 --- a/win32.mak +++ b/win32.mak @@ -467,6 +467,9 @@ $(IMPDIR)\core\sys\linux\unistd.d : src\core\sys\linux\unistd.d $(IMPDIR)\core\sys\linux\sys\auxv.d : src\core\sys\linux\sys\auxv.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\file.d : src\core\sys\linux\sys\file.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\inotify.d : src\core\sys\linux\sys\inotify.d copy $** $@ diff --git a/win64.mak b/win64.mak index ddded63a08..16b7ffe0c4 100644 --- a/win64.mak +++ b/win64.mak @@ -475,6 +475,9 @@ $(IMPDIR)\core\sys\linux\unistd.d : src\core\sys\linux\unistd.d $(IMPDIR)\core\sys\linux\sys\auxv.d : src\core\sys\linux\sys\auxv.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\file.d : src\core\sys\linux\sys\file.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\inotify.d : src\core\sys\linux\sys\inotify.d copy $** $@ From 44f45280b7fe308731611801385f8c6226214682 Mon Sep 17 00:00:00 2001 From: anonymous Date: Sun, 6 Nov 2016 14:11:11 +0100 Subject: [PATCH 507/768] fix issue 16651 - atomicOp!"-="(ulong, uint) = wrong result/codegen --- src/core/atomic.d | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/core/atomic.d b/src/core/atomic.d index 71e47e5d20..8fe099af56 100644 --- a/src/core/atomic.d +++ b/src/core/atomic.d @@ -166,10 +166,10 @@ version( CoreDdoc ) else version( AsmX86_32 ) { // Uses specialized asm for fast fetch and add operations - private HeadUnshared!(T) atomicFetchAdd(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc @safe - if( T.sizeof <= 4 && V1.sizeof <= 4) + private HeadUnshared!(T) atomicFetchAdd(T)( ref shared T val, size_t mod ) pure nothrow @nogc @safe + if( T.sizeof <= 4 ) { - size_t tmp = mod; // convert all operands to size_t + size_t tmp = mod; asm pure nothrow @nogc @trusted { mov EAX, tmp; @@ -187,8 +187,8 @@ else version( AsmX86_32 ) return cast(T)tmp; } - private HeadUnshared!(T) atomicFetchSub(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc @safe - if( T.sizeof <= 4 && V1.sizeof <= 4) + private HeadUnshared!(T) atomicFetchSub(T)( ref shared T val, size_t mod ) pure nothrow @nogc @safe + if( T.sizeof <= 4) { return atomicFetchAdd(val, -mod); } @@ -654,15 +654,15 @@ else version( AsmX86_32 ) else version( AsmX86_64 ) { // Uses specialized asm for fast fetch and add operations - private HeadUnshared!(T) atomicFetchAdd(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc @trusted - if( __traits(isIntegral, T) && __traits(isIntegral, V1) ) + private HeadUnshared!(T) atomicFetchAdd(T)( ref shared T val, size_t mod ) pure nothrow @nogc @trusted + if( __traits(isIntegral, T) ) in { assert( atomicValueIsProperlyAligned(val)); } body { - size_t tmp = mod; // convert all operands to size_t + size_t tmp = mod; asm pure nothrow @nogc @trusted { mov RAX, tmp; @@ -681,8 +681,8 @@ else version( AsmX86_64 ) return cast(T)tmp; } - private HeadUnshared!(T) atomicFetchSub(T, V1)( ref shared T val, V1 mod ) pure nothrow @nogc @safe - if( __traits(isIntegral, T) && __traits(isIntegral, V1) ) + private HeadUnshared!(T) atomicFetchSub(T)( ref shared T val, size_t mod ) pure nothrow @nogc @safe + if( __traits(isIntegral, T) ) { return atomicFetchAdd(val, -mod); } @@ -1532,4 +1532,17 @@ version( unittest ) assert(atomicOp!"-="(i64, 1) == 7); } } + + pure nothrow @nogc @safe unittest // issue 16651 + { + shared ulong a = 2; + uint b = 1; + atomicOp!"-="( a, b ); + assert(a == 1); + + shared uint c = 2; + ubyte d = 1; + atomicOp!"-="( c, d ); + assert(c == 1); + } } From ff4adf65b16cefc4caa831e9a6983970d831396e Mon Sep 17 00:00:00 2001 From: somzzz Date: Sun, 13 Nov 2016 02:04:30 -0800 Subject: [PATCH 508/768] fix issue 1761 --- src/object.d | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/object.d b/src/object.d index f5ea18e3d9..25d1e0fb36 100644 --- a/src/object.d +++ b/src/object.d @@ -745,8 +745,13 @@ class TypeInfo_Vector : TypeInfo class TypeInfo_Function : TypeInfo { override string toString() const - { - return cast(string)(next.toString() ~ "()"); + { + import core.demangle : demangleType; + + alias SafeDemangleFunctionType = char[] function (const(char)[] buf, char[] dst = null) @safe nothrow pure; + SafeDemangleFunctionType demangle = ( () @trusted => cast(SafeDemangleFunctionType)(&demangleType) ) (); + + return (() @trusted => cast(string)(demangle(deco))) (); } override bool opEquals(Object o) @@ -770,6 +775,10 @@ class TypeInfo_Function : TypeInfo } TypeInfo next; + + /** + * Mangled function type string + */ string deco; } From 5bfc9f553884cee321b718250d6ec6413acc9442 Mon Sep 17 00:00:00 2001 From: somzzz Date: Sun, 13 Nov 2016 03:20:54 -0800 Subject: [PATCH 509/768] removed whitespaces --- src/object.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index 04ccbd8dac..8f2bfb26cd 100644 --- a/src/object.d +++ b/src/object.d @@ -745,7 +745,7 @@ class TypeInfo_Vector : TypeInfo class TypeInfo_Function : TypeInfo { override string toString() const - { + { import core.demangle : demangleType; alias SafeDemangleFunctionType = char[] function (const(char)[] buf, char[] dst = null) @safe nothrow pure; From 1a3f7b3e126432ef33487c57605d8ea61d1f69b2 Mon Sep 17 00:00:00 2001 From: somzzz Date: Sun, 13 Nov 2016 07:39:31 -0800 Subject: [PATCH 510/768] Test cov --- src/object.d | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/object.d b/src/object.d index 8f2bfb26cd..90ef95c4ef 100644 --- a/src/object.d +++ b/src/object.d @@ -782,6 +782,21 @@ class TypeInfo_Function : TypeInfo string deco; } +unittest +{ + class C + { + void func() {} + void func(int a) {} + int func(int a, int b) { return 0; } + } + + alias functionTypes = typeof(__traits(getVirtualFunctions, C, "func")); + assert(typeid(functionTypes[0]).toString() == "void function()"); + assert(typeid(functionTypes[1]).toString() == "void function(int)"); + assert(typeid(functionTypes[2]).toString() == "int function(int, int)"); +} + class TypeInfo_Delegate : TypeInfo { override string toString() const From 7962fb8acaeb0008c531d1ae170cd15ff59558ea Mon Sep 17 00:00:00 2001 From: somzzz Date: Sun, 13 Nov 2016 09:04:59 -0800 Subject: [PATCH 511/768] fixed @ comments --- src/object.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/object.d b/src/object.d index 90ef95c4ef..df79189c4f 100644 --- a/src/object.d +++ b/src/object.d @@ -784,11 +784,11 @@ class TypeInfo_Function : TypeInfo unittest { - class C + abstract class C { - void func() {} - void func(int a) {} - int func(int a, int b) { return 0; } + void func(); + void func(int a); + int func(int a, int b); } alias functionTypes = typeof(__traits(getVirtualFunctions, C, "func")); From 333c68e66a73556263e59f0386c1e0c6429da242 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 15 Nov 2016 20:50:17 -0800 Subject: [PATCH 512/768] fix Issue 16558 - [Mir] Generic unaligned load/store like (like LDC loadUnaligned and storeUnaligned) --- src/core/simd.d | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/core/simd.d b/src/core/simd.d index d92f682dba..116f10d9c5 100644 --- a/src/core/simd.d +++ b/src/core/simd.d @@ -479,4 +479,63 @@ version ( D_SIMD ) } private void __prefetch(const(void*) address, ubyte encoding); + + /************************************* + * Load unaligned vector from address. + * This is a compiler intrinsic. + * Params: + * p = pointer to vector + * Returns: + * vector + */ + + V loadUnaligned(V)(const V* p) + if (is(V == void16) || + is(V == byte16) || + is(V == ubyte16) || + is(V == short8) || + is(V == ushort8) || + is(V == int4) || + is(V == uint4) || + is(V == long2) || + is(V == ulong2)) + { + pragma(inline, true); + static if (is(V == double2)) + return cast(V)__simd(XMM.LODUPD, *cast(const void16*)p); + else static if (is(V == float4)) + return cast(V)__simd(XMM.LODUPS, *cast(const void16*)p); + else + return cast(V)__simd(XMM.LODDQU, *cast(const void16*)p); + } + + /************************************* + * Store vector to unaligned address. + * This is a compiler intrinsic. + * Params: + * p = pointer to vector + * value = value to store + * Returns: + * value + */ + + V storeUnaligned(V)(V* p, V value) + if (is(V == void16) || + is(V == byte16) || + is(V == ubyte16) || + is(V == short8) || + is(V == ushort8) || + is(V == int4) || + is(V == uint4) || + is(V == long2) || + is(V == ulong2)) + { + pragma(inline, true); + static if (is(V == double2)) + return cast(V)__simd_sto(XMM.STOUPD, *cast(void16*)p, value); + else static if (is(V == float4)) + return cast(V)__simd_sto(XMM.STOUPS, *cast(void16*)p, value); + else + return cast(V)__simd_sto(XMM.STODQU, *cast(void16*)p, value); + } } From 316e6d2607b4b22794ef75a331ad27d970717cda Mon Sep 17 00:00:00 2001 From: somzzz Date: Thu, 24 Nov 2016 02:46:29 -0800 Subject: [PATCH 513/768] fix issue 5995 --- src/rt/lifetime.d | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index d28edf8c58..90aac42458 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -2026,7 +2026,10 @@ extern (C) void[] _d_arrayappendcd(ref byte[] x, dchar c) appendthis = (cast(byte *)buf.ptr)[0..4]; } else - assert(0); // invalid utf character - should we throw an exception instead? + { + import core.exception; + onUnicodeError("Invalid UTF-8 sequence", 0); // invalid utf character + } // // TODO: This always assumes the array type is shared, because we do not From e0f36ff41f9fb01fbf5d47f691389d3efc9b3121 Mon Sep 17 00:00:00 2001 From: somzzz Date: Thu, 24 Nov 2016 04:49:03 -0800 Subject: [PATCH 514/768] unittest --- src/rt/lifetime.d | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index 90aac42458..7d1bc4f84c 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -2027,7 +2027,7 @@ extern (C) void[] _d_arrayappendcd(ref byte[] x, dchar c) } else { - import core.exception; + import core.exception : onUnicodeError; onUnicodeError("Invalid UTF-8 sequence", 0); // invalid utf character } @@ -2039,6 +2039,22 @@ extern (C) void[] _d_arrayappendcd(ref byte[] x, dchar c) return _d_arrayappendT(typeid(shared char[]), x, appendthis); } +unittest +{ + import core.exception : UnicodeException; + + try + { + string ret; + int i = -1; + ret ~= i; + } + catch(UnicodeException e) + { + assert(e.msg == "Invalid UTF-8 sequence"); + } +} + /** * Append dchar to wchar[] From 9a38833ada9d1092343e92dc62491658f2f00701 Mon Sep 17 00:00:00 2001 From: somzzz Date: Thu, 24 Nov 2016 07:41:32 -0800 Subject: [PATCH 515/768] unittest --- src/rt/lifetime.d | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index 7d1bc4f84c..543926a09a 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -2043,16 +2043,24 @@ unittest { import core.exception : UnicodeException; - try + static void assertThrown(T : Throwable = Exception, E)(lazy E expr, string msg) + { + try + expr; + catch (T e) { + assert(e.msg == msg); + return; + } + } + + static void f() { string ret; int i = -1; ret ~= i; } - catch(UnicodeException e) - { - assert(e.msg == "Invalid UTF-8 sequence"); - } + + assertThrown!UnicodeException(f(), "Invalid UTF-8 sequence"); } From 7f90cdce59cd422224172327fd7ddb6ce3f9eac6 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Wed, 23 Nov 2016 18:12:14 -0800 Subject: [PATCH 516/768] fix Issue 16743 - Intrinsic recognition sometimes fails if a software implementation is available --- src/core/bitop.d | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/core/bitop.d b/src/core/bitop.d index a29aef9156..4f871756ed 100644 --- a/src/core/bitop.d +++ b/src/core/bitop.d @@ -72,27 +72,28 @@ unittest */ int bsf(uint v) pure { - static if (size_t.sizeof == ulong.sizeof) - { - pragma(inline, true); - return bsf(cast(ulong) v); - } - else - return softBsf!uint(v); + pragma(inline, false); // so intrinsic detection will work + return softBsf!uint(v); } /// ditto int bsf(ulong v) pure { - static if (size_t.sizeof == uint.sizeof) + static if (size_t.sizeof == ulong.sizeof) // 64 bit code gen { + pragma(inline, false); // so intrinsic detection will work + return softBsf!ulong(v); + } + else + { + /* intrinsic not available for 32 bit code, + * make do with 32 bit bsf + */ const sv = Split64(v); return (sv.lo == 0)? bsf(sv.hi) + 32 : bsf(sv.lo); } - else - return softBsf!ulong(v); } /// @@ -119,27 +120,28 @@ unittest */ int bsr(uint v) pure { - static if (size_t.sizeof == ulong.sizeof) - { - pragma(inline, true); - return bsr(cast(ulong) v); - } - else - return softBsr!uint(v); + pragma(inline, false); // so intrinsic detection will work + return softBsr!uint(v); } /// ditto int bsr(ulong v) pure { - static if (size_t.sizeof == uint.sizeof) + static if (size_t.sizeof == ulong.sizeof) // 64 bit code gen { + pragma(inline, false); // so intrinsic detection will work + return softBsr!ulong(v); + } + else + { + /* intrinsic not available for 32 bit code, + * make do with 32 bit bsr + */ const sv = Split64(v); return (sv.hi == 0)? bsr(sv.lo) : bsr(sv.hi) + 32; } - else - return softBsr!ulong(v); } /// From 3a29ac5293dfa5e85790480b838eaa45f59c14a8 Mon Sep 17 00:00:00 2001 From: Joakim Brannstrom Date: Sat, 26 Nov 2016 21:15:15 +0100 Subject: [PATCH 517/768] fix issue 16797 - Zero clock resolution lead to division by zero --- src/core/time.d | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index cc454889d0..69c288d3b0 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -2443,12 +2443,14 @@ extern(C) void _d_initMonoTime() assert(0); // For some reason, on some systems, clock_getres returns - // a resolution which is clearly wrong (it's a millisecond - // or worse, but the time is updated much more frequently - // than that). In such cases, we'll just use nanosecond - // resolution. - tps[i] = ts.tv_nsec >= 1000 ? 1_000_000_000L - : 1_000_000_000L / ts.tv_nsec; + // a resolution which is clearly wrong: + // - it's a millisecond or worse, but the time is updated + // much more frequently than that. + // - it's negative + // - it's zero + // In such cases, we'll just use nanosecond resolution. + tps[i] = ts.tv_sec != 0 || ts.tv_nsec <= 0 || ts.tv_nsec >= 1000 + ? 1_000_000_000L : 1_000_000_000L / ts.tv_nsec; } } } From 45572086a71fe9e285f9b8f1cb7eb64e4376dfdc Mon Sep 17 00:00:00 2001 From: somzzz Date: Sun, 27 Nov 2016 06:11:48 -0800 Subject: [PATCH 518/768] Comment on try-catch issue --- src/rt/lifetime.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index 543926a09a..87f0e8dab8 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -2043,6 +2043,10 @@ unittest { import core.exception : UnicodeException; + /* Using inline try {} catch {} blocks fails to catch the UnicodeException + * thrown. + * https://issues.dlang.org/show_bug.cgi?id=16799 + */ static void assertThrown(T : Throwable = Exception, E)(lazy E expr, string msg) { try From 436e76b0b8b33b085ec8847a130d620ee9ac202c Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Thu, 24 Nov 2016 20:05:48 -0300 Subject: [PATCH 519/768] Add missing POSIX header --- mak/COPY | 1 + src/core/sys/posix/libgen.d | 22 ++++++++++++++++++++++ win32.mak | 3 +++ win64.mak | 3 +++ 4 files changed, 29 insertions(+) create mode 100644 src/core/sys/posix/libgen.d diff --git a/mak/COPY b/mak/COPY index 58ed65e7b1..5316b16978 100644 --- a/mak/COPY +++ b/mak/COPY @@ -123,6 +123,7 @@ COPY=\ $(IMPDIR)\core\sys\posix\fcntl.d \ $(IMPDIR)\core\sys\posix\grp.d \ $(IMPDIR)\core\sys\posix\inttypes.d \ + $(IMPDIR)\core\sys\posix\libgen.d \ $(IMPDIR)\core\sys\posix\netdb.d \ $(IMPDIR)\core\sys\posix\poll.d \ $(IMPDIR)\core\sys\posix\pthread.d \ diff --git a/src/core/sys/posix/libgen.d b/src/core/sys/posix/libgen.d new file mode 100644 index 0000000000..6770cd828b --- /dev/null +++ b/src/core/sys/posix/libgen.d @@ -0,0 +1,22 @@ +/** + * D header file for POSIX. + * + * Copyright: 2016 Sociomantic Labs GmbH + * License: Boost License 1.0. + * Authors: Leandro Lucarella + * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition + */ + +/* Copyright Sociomantic Labs GmbH 2016. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.posix.libgen; + +@nogc nothrow: +extern (C): +version (Posix): + +char* basename(char*); +char* dirname(char*); diff --git a/win32.mak b/win32.mak index 109a44adc8..5948df2e6e 100644 --- a/win32.mak +++ b/win32.mak @@ -542,6 +542,9 @@ $(IMPDIR)\core\sys\posix\grp.d : src\core\sys\posix\grp.d $(IMPDIR)\core\sys\posix\inttypes.d : src\core\sys\posix\inttypes.d copy $** $@ +$(IMPDIR)\core\sys\posix\libgen.d : src\core\sys\posix\libgen.d + copy $** $@ + $(IMPDIR)\core\sys\posix\netdb.d : src\core\sys\posix\netdb.d copy $** $@ diff --git a/win64.mak b/win64.mak index ddded63a08..f99327aed5 100644 --- a/win64.mak +++ b/win64.mak @@ -550,6 +550,9 @@ $(IMPDIR)\core\sys\posix\grp.d : src\core\sys\posix\grp.d $(IMPDIR)\core\sys\posix\inttypes.d : src\core\sys\posix\inttypes.d copy $** $@ +$(IMPDIR)\core\sys\posix\libgen.d : src\core\sys\posix\libgen.d + copy $** $@ + $(IMPDIR)\core\sys\posix\netdb.d : src\core\sys\posix\netdb.d copy $** $@ From db522191e866711c577c7a5d5046cd85410b07cd Mon Sep 17 00:00:00 2001 From: Martin Krejcirik Date: Wed, 30 Nov 2016 03:35:43 +0100 Subject: [PATCH 520/768] Convert exception message to Windows console codepage --- src/rt/dmain2.d | 85 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 60 insertions(+), 25 deletions(-) diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 864175abd0..35b7e3580e 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -513,39 +513,52 @@ private void formatThrowable(Throwable t, void delegate(in char[] s) nothrow sin extern (C) void _d_print_throwable(Throwable t) { // On Windows, a console may not be present to print the output to. - // Show a message box instead. + // Show a message box instead. If the console is present, convert to + // the correct encoding. version (Windows) { - // ensure the exception is shown at the beginning of the line, while also - // checking whether stderr is a valid file - int written = fprintf(stderr, "\n"); - if (written <= 0) + static struct WSink { - static struct WSink - { - wchar_t* ptr; size_t len; + wchar_t* ptr; size_t len; - void sink(in char[] s) nothrow - { - if (!s.length) return; - int swlen = MultiByteToWideChar( + void sink(in char[] s) nothrow + { + if (!s.length) return; + int swlen = MultiByteToWideChar( CP_UTF8, 0, s.ptr, cast(int)s.length, null, 0); - if (!swlen) return; - - auto newPtr = cast(wchar_t*)realloc(ptr, - (this.len + swlen + 1) * wchar_t.sizeof); - if (!newPtr) return; - ptr = newPtr; - auto written = MultiByteToWideChar( - CP_UTF8, 0, s.ptr, cast(int)s.length, ptr+len, swlen); - len += written; - } + if (!swlen) return; + + auto newPtr = cast(wchar_t*)realloc(ptr, + (this.len + swlen + 1) * wchar_t.sizeof); + if (!newPtr) return; + ptr = newPtr; + auto written = MultiByteToWideChar( + CP_UTF8, 0, s.ptr, cast(int)s.length, ptr+len, swlen); + len += written; + } - wchar_t* get() { if (ptr) ptr[len] = 0; return ptr; } + wchar_t* get() { if (ptr) ptr[len] = 0; return ptr; } - void free() { .free(ptr); } - } + void free() { .free(ptr); } + } + + HANDLE windowsHandle(int fd) + { + version (CRuntime_Microsoft) + return cast(HANDLE)_get_osfhandle(fd); + else + return _fdToHandle(fd); + } + auto hStdErr = windowsHandle(fileno(stderr)); + CONSOLE_SCREEN_BUFFER_INFO sbi; + bool isConsole = GetConsoleScreenBufferInfo(hStdErr, &sbi) != 0; + + // ensure the exception is shown at the beginning of the line, while also + // checking whether stderr is a valid file + int written = fprintf(stderr, "\n"); + if (written <= 0) + { WSink buf; formatThrowable(t, &buf.sink); @@ -572,6 +585,28 @@ extern (C) void _d_print_throwable(Throwable t) } return; } + else if (isConsole) + { + WSink buf; + formatThrowable(t, &buf.sink); + + if (buf.ptr) + { + uint codepage = GetConsoleOutputCP(); + int slen = WideCharToMultiByte(codepage, 0, + buf.ptr, cast(int)buf.len, null, 0, null, null); + auto sptr = cast(char*)malloc(slen * char.sizeof); + if (sptr) + { + WideCharToMultiByte(codepage, 0, + buf.ptr, cast(int)buf.len, sptr, slen, null, null); + WriteFile(hStdErr, sptr, cast(DWORD)buf.len, null, null); + free(sptr); + } + buf.free(); + } + return; + } } void sink(in char[] buf) nothrow From 8e6aadc0d309a03999bc817749bac5e5a6fba7a0 Mon Sep 17 00:00:00 2001 From: Martin Krejcirik Date: Thu, 1 Dec 2016 02:00:46 +0100 Subject: [PATCH 521/768] Fixup PR #1687 - wrong buffer length used --- src/rt/dmain2.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 35b7e3580e..6aacc153a9 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -600,7 +600,7 @@ extern (C) void _d_print_throwable(Throwable t) { WideCharToMultiByte(codepage, 0, buf.ptr, cast(int)buf.len, sptr, slen, null, null); - WriteFile(hStdErr, sptr, cast(DWORD)buf.len, null, null); + WriteFile(hStdErr, sptr, slen, null, null); free(sptr); } buf.free(); From ab4cc15bd7452d11705fa57c426d054be4494704 Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Tue, 29 Nov 2016 10:37:13 +0100 Subject: [PATCH 522/768] Add Linux-specific sched_setaffinity and sched_getaffinity --- mak/COPY | 1 + src/core/sys/linux/sched.d | 80 ++++++++++++++++++++++++++++++++++++++ win32.mak | 3 ++ win64.mak | 3 ++ 4 files changed, 87 insertions(+) create mode 100644 src/core/sys/linux/sched.d diff --git a/mak/COPY b/mak/COPY index 58ed65e7b1..346d761048 100644 --- a/mak/COPY +++ b/mak/COPY @@ -86,6 +86,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\execinfo.d \ $(IMPDIR)\core\sys\linux\fcntl.d \ $(IMPDIR)\core\sys\linux\link.d \ + $(IMPDIR)\core\sys\linux\sched.d \ $(IMPDIR)\core\sys\linux\termios.d \ $(IMPDIR)\core\sys\linux\time.d \ $(IMPDIR)\core\sys\linux\timerfd.d \ diff --git a/src/core/sys/linux/sched.d b/src/core/sys/linux/sched.d new file mode 100644 index 0000000000..6dc6e33655 --- /dev/null +++ b/src/core/sys/linux/sched.d @@ -0,0 +1,80 @@ +/******************************************************************************* + + D binding for Linux specific scheduler control methods. + + Defines functions sched_setaffinity and sched_getaffinity and the data + types they operate on. + + Copyright: Copyright (c) 2016 Sociomantic Labs. All rights reserved. + License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + Authors: Nemanja Boric + +*******************************************************************************/ + + +module core.sys.linux.sched; + +import core.sys.posix.sched; +import core.sys.posix.config; +import core.sys.posix.sys.types; + +version (Linux): +extern (C): +@nogc: +nothrow: + + +private // helpers +{ + + /* Size definition for CPU sets. */ + enum + { + __CPU_SETSIZE = 1024, + __NCPUBITS = 8 * cpu_mask.sizeof, + } + + /* Macros */ + + /* Basic access functions. */ + size_t __CPUELT(size_t cpu) pure + { + return cpu / __NCPUBITS; + } + cpu_mask __CPUMASK(size_t cpu) pure + { + return 1UL << (cpu % __NCPUBITS); + } + + cpu_mask __CPU_SET_S(size_t cpu, size_t setsize, cpu_set_t* cpusetp) pure + { + if (cpu < 8 * setsize) + { + cpusetp.__bits[__CPUELT(cpu)] |= __CPUMASK(cpu); + return __CPUMASK(cpu); + } + + return 0; + } +} + +/// Type for array elements in 'cpu_set_t'. +alias c_ulong cpu_mask; + +/// Data structure to describe CPU mask. +struct cpu_set_t +{ + cpu_mask[__CPU_SETSIZE / __NCPUBITS] __bits; +} + +/// Access macros for `cpu_set' (missing a lot of them) + +cpu_mask CPU_SET(size_t cpu, cpu_set_t* cpusetp) pure +{ + return __CPU_SET_S(cpu, cpu_set_t.sizeof, cpusetp); +} + +/* Functions */ +int sched_setaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask); +int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask); + diff --git a/win32.mak b/win32.mak index 109a44adc8..45b4c5af13 100644 --- a/win32.mak +++ b/win32.mak @@ -449,6 +449,9 @@ $(IMPDIR)\core\sys\linux\fcntl.d : src\core\sys\linux\fcntl.d $(IMPDIR)\core\sys\linux\link.d : src\core\sys\linux\link.d copy $** $@ +$(IMPDIR)\core\sys\linux\sched.d : src\core\sys\linux\sched.d + copy $** $@ + $(IMPDIR)\core\sys\linux\termios.d : src\core\sys\linux\termios.d copy $** $@ diff --git a/win64.mak b/win64.mak index ddded63a08..05b86558bf 100644 --- a/win64.mak +++ b/win64.mak @@ -457,6 +457,9 @@ $(IMPDIR)\core\sys\linux\fcntl.d : src\core\sys\linux\fcntl.d $(IMPDIR)\core\sys\linux\link.d : src\core\sys\linux\link.d copy $** $@ +$(IMPDIR)\core\sys\linux\sched.d : src\core\sys\linux\sched.d + copy $** $@ + $(IMPDIR)\core\sys\linux\termios.d : src\core\sys\linux\termios.d copy $** $@ From 418e219d8e2d7f4ab51139cf98de042a99ce55de Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Mon, 28 Nov 2016 18:44:19 +0100 Subject: [PATCH 523/768] Add TCP_* constants from Linux's netinet/tcp.h --- mak/COPY | 1 + src/core/sys/linux/sys/netinet/tcp.d | 79 ++++++++++++++++++++++++++++ win32.mak | 3 ++ win64.mak | 3 ++ 4 files changed, 86 insertions(+) create mode 100644 src/core/sys/linux/sys/netinet/tcp.d diff --git a/mak/COPY b/mak/COPY index 58ed65e7b1..cafbd68489 100644 --- a/mak/COPY +++ b/mak/COPY @@ -95,6 +95,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\sys\auxv.d \ $(IMPDIR)\core\sys\linux\sys\inotify.d \ $(IMPDIR)\core\sys\linux\sys\mman.d \ + $(IMPDIR)\core\sys\linux\sys\netinet\tcp.d \ $(IMPDIR)\core\sys\linux\sys\signalfd.d \ $(IMPDIR)\core\sys\linux\sys\socket.d \ $(IMPDIR)\core\sys\linux\sys\sysinfo.d \ diff --git a/src/core/sys/linux/sys/netinet/tcp.d b/src/core/sys/linux/sys/netinet/tcp.d new file mode 100644 index 0000000000..b4acdd23c4 --- /dev/null +++ b/src/core/sys/linux/sys/netinet/tcp.d @@ -0,0 +1,79 @@ +/******************************************************************************* + + D bindings for the Linux's netinet/tcp.h structures. + + Defines constants found in tcp.h header on Linux system. + + Copyright: Copyright (c) 2016 Sociomantic Labs. All rights reserved. + License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + Authors: Nemanja Boric + +*******************************************************************************/ + +module core.sys.linux.sys.netinet.tcp; + +/* +* Copyright (c) 1982, 1986, 1993 +* The Regents of the University of California. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* 4. Neither the name of the University nor the names of its contributors +* may be used to endorse or promote products derived from this software +* without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +* SUCH DAMAGE. +* +* @(#)tcp.h 8.1 (Berkeley) 6/10/93 +*/ + +version (Linux): + +/// User-settable options (used with setsockopt). +enum +{ + TCP_NODELAY = 1, /// Don't delay send to coalesce packets + TCP_MAXSEG = 2, /// Set maximum segment size + TCP_CORK = 3, /// Control sending of partial frames + TCP_KEEPIDLE = 4, /// Start keeplives after this period + TCP_KEEPINTVL = 5, /// Interval between keepalives + TCP_KEEPCNT = 6, /// Number of keepalives before death + TCP_SYNCNT = 7, /// Number of SYN retransmits + TCP_LINGER2 = 8, /// Life time of orphaned FIN-WAIT-2 state + TCP_DEFER_ACCEPT = 9, /// Wake up listener only when data arrive + TCP_WINDOW_CLAMP = 10, /// Bound advertised window + TCP_INFO = 11, /// Information about this connection. + TCP_QUICKACK = 12, /// Bock/reenable quick ACKs. + TCP_CONGESTION = 13, /// Congestion control algorithm. + TCP_MD5SIG = 14, /// TCP MD5 Signature (RFC2385) + TCP_COOKIE_TRANSACTIONS = 15, /// TCP Cookie Transactions + TCP_THIN_LINEAR_TIMEOUTS = 16, /// Use linear timeouts for thin streams + TCP_THIN_DUPACK = 17, /// Fast retrans. after 1 dupack + TCP_USER_TIMEOUT = 18, /// How long for loss retry before timeout + TCP_REPAIR = 19, /// TCP sock is under repair right now + TCP_REPAIR_QUEUE = 20, /// Set TCP queue to repair + TCP_QUEUE_SEQ = 21, /// Set sequence number of repaired queue. + TCP_REPAIR_OPTIONS = 22, /// Repair TCP connection options + TCP_FASTOPEN = 23, /// Enable FastOpen on listeners + TCP_TIMESTAMP = 24, /// TCP time stamp + TCP_NOTSENT_LOWAT = 25, /// Limit number of unsent bytes in write queue. + TCP_CC_INFO = 26, /// Get Congestion Control (optional) info. + TCP_SAVE_SYN = 27, /// Record SYN headers for new connections. + TCP_SAVED_SYN = 28, /// Get SYN headers recorded for connection. +} diff --git a/win32.mak b/win32.mak index 109a44adc8..772ba8b246 100644 --- a/win32.mak +++ b/win32.mak @@ -473,6 +473,9 @@ $(IMPDIR)\core\sys\linux\sys\inotify.d : src\core\sys\linux\sys\inotify.d $(IMPDIR)\core\sys\linux\sys\mman.d : src\core\sys\linux\sys\mman.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\netinet\tcp.d : src\core\sys\linux\sys\netinet\tcp.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\signalfd.d : src\core\sys\linux\sys\signalfd.d copy $** $@ diff --git a/win64.mak b/win64.mak index ddded63a08..46b301ef4a 100644 --- a/win64.mak +++ b/win64.mak @@ -481,6 +481,9 @@ $(IMPDIR)\core\sys\linux\sys\inotify.d : src\core\sys\linux\sys\inotify.d $(IMPDIR)\core\sys\linux\sys\mman.d : src\core\sys\linux\sys\mman.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\netinet\tcp.d : src\core\sys\linux\sys\netinet\tcp.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\signalfd.d : src\core\sys\linux\sys\signalfd.d copy $** $@ From 79dcd81d10bbcd357fc26ece28ee087c69c0a2ed Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Thu, 24 Nov 2016 13:48:53 +0100 Subject: [PATCH 524/768] Add bindings for POSIX iconv --- mak/COPY | 1 + src/core/sys/posix/iconv.d | 44 ++++++++++++++++++++++++++++++++++++++ win32.mak | 3 +++ win64.mak | 3 +++ 4 files changed, 51 insertions(+) create mode 100644 src/core/sys/posix/iconv.d diff --git a/mak/COPY b/mak/COPY index 58ed65e7b1..e516d042f0 100644 --- a/mak/COPY +++ b/mak/COPY @@ -122,6 +122,7 @@ COPY=\ $(IMPDIR)\core\sys\posix\dlfcn.d \ $(IMPDIR)\core\sys\posix\fcntl.d \ $(IMPDIR)\core\sys\posix\grp.d \ + $(IMPDIR)\core\sys\posix\iconv.d \ $(IMPDIR)\core\sys\posix\inttypes.d \ $(IMPDIR)\core\sys\posix\netdb.d \ $(IMPDIR)\core\sys\posix\poll.d \ diff --git a/src/core/sys/posix/iconv.d b/src/core/sys/posix/iconv.d new file mode 100644 index 0000000000..816f64632b --- /dev/null +++ b/src/core/sys/posix/iconv.d @@ -0,0 +1,44 @@ +/******************************************************************************* + + D binding for the POSIX iconv library. + + Defines external functions required to use iconv codeset conversion + function. + + iconv_open(3) Allocates the descriptor for code conversion + iconv(3) Performs the conversion + iconv_close(3) Deallocates allocated resources + + Copyright: Copyright (c) 2016 Sociomantic Labs. All rights reserved. + License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + Authors: Nemanja Boric + Standards: POSIX.1-2001, POSIX.1-2008 + See_Also: + http://pubs.opengroup.org/onlinepubs/009695399/functions/iconv_open.html + +*******************************************************************************/ + +module core.sys.posix.iconv; + +version (Posix): +extern (C): +nothrow: +@nogc: + + +alias void* iconv_t; + +/// Allocate descriptor for code conversion from codeset FROMCODE to +/// codeset TOCODE. +iconv_t iconv_open (in char* tocode, in char* fromcode); + +/// Convert at most *INBYTESLEFT bytes from *INBUF according to the +/// code conversion algorithm specified by CD and place up to +/// *OUTBYTESLEFT bytes in buffer at *OUTBUF. +size_t iconv (iconv_t cd, char** inbuf, + size_t* inbytesleft, + char** outbuf, + size_t* outbytesleft); + +/// Free resources allocated for descriptor CD for code conversion. +int iconv_close (iconv_t cd); diff --git a/win32.mak b/win32.mak index 109a44adc8..b07dc6a60d 100644 --- a/win32.mak +++ b/win32.mak @@ -539,6 +539,9 @@ $(IMPDIR)\core\sys\posix\fcntl.d : src\core\sys\posix\fcntl.d $(IMPDIR)\core\sys\posix\grp.d : src\core\sys\posix\grp.d copy $** $@ +$(IMPDIR)\core\sys\posix\iconv.d : src\core\sys\posix\iconv.d + copy $** $@ + $(IMPDIR)\core\sys\posix\inttypes.d : src\core\sys\posix\inttypes.d copy $** $@ diff --git a/win64.mak b/win64.mak index ddded63a08..2d0dad4a46 100644 --- a/win64.mak +++ b/win64.mak @@ -547,6 +547,9 @@ $(IMPDIR)\core\sys\posix\fcntl.d : src\core\sys\posix\fcntl.d $(IMPDIR)\core\sys\posix\grp.d : src\core\sys\posix\grp.d copy $** $@ +$(IMPDIR)\core\sys\posix\iconv.d : src\core\sys\posix\iconv.d + copy $** $@ + $(IMPDIR)\core\sys\posix\inttypes.d : src\core\sys\posix\inttypes.d copy $** $@ From 6bff80cbcb1396395bbfb692015f9dfceceff5b9 Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Fri, 25 Nov 2016 17:04:07 +0100 Subject: [PATCH 525/768] Add bindings for getifaddrs/freeifaddrs --- mak/COPY | 1 + src/core/sys/linux/ifaddrs.d | 54 ++++++++++++++++++++++++++++++++++++ win32.mak | 3 ++ win64.mak | 3 ++ 4 files changed, 61 insertions(+) create mode 100644 src/core/sys/linux/ifaddrs.d diff --git a/mak/COPY b/mak/COPY index 58ed65e7b1..e02dff911d 100644 --- a/mak/COPY +++ b/mak/COPY @@ -85,6 +85,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\errno.d \ $(IMPDIR)\core\sys\linux\execinfo.d \ $(IMPDIR)\core\sys\linux\fcntl.d \ + $(IMPDIR)\core\sys\linux\ifaddrs.d \ $(IMPDIR)\core\sys\linux\link.d \ $(IMPDIR)\core\sys\linux\termios.d \ $(IMPDIR)\core\sys\linux\time.d \ diff --git a/src/core/sys/linux/ifaddrs.d b/src/core/sys/linux/ifaddrs.d new file mode 100644 index 0000000000..1fc5e88513 --- /dev/null +++ b/src/core/sys/linux/ifaddrs.d @@ -0,0 +1,54 @@ +/******************************************************************************* + + D binding for the interface addresses querying + + Defines functions getifaddrs/freeifaddrs and the structure + they operate on. + + getifaddrs(3) get interface addresses + freeifaddrs(3) deallocates the structure returned from getifaddrs + + Copyright: Copyright (c) 2016 Sociomantic Labs. All rights reserved. + License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + Authors: Nemanja Boric + +*******************************************************************************/ + +module core.sys.linux.ifaddrs; + +import core.sys.posix.sys.socket; + +version (Linux): +extern (C): +nothrow: +@nogc: + +struct ifaddrs +{ + /// Next item in the list + ifaddrs* ifa_next; + /// Name of the interface + char* ifa_name; + /// Flags from SIOCGIFFLAGS + uint ifa_flags; + /// Address of interface + sockaddr* ifa_addr; + /// Netmask of interface + sockaddr* ifa_netmask; + + union + { + /// Broadcast address of the interface + sockaddr* ifu_broadaddr; + /// Point-to-point destination addresss + sockaddr* if_dstaddr; + } + + /// Address specific data + void* ifa_data; +}; + +/// Returns: linked list of ifaddrs structures describing interfaces +int getifaddrs(ifaddrs** ); +/// Frees the linked list returned by getifaddrs +void freeifaddrs(ifaddrs* ); diff --git a/win32.mak b/win32.mak index 109a44adc8..4877dc6e3c 100644 --- a/win32.mak +++ b/win32.mak @@ -446,6 +446,9 @@ $(IMPDIR)\core\sys\linux\execinfo.d : src\core\sys\linux\execinfo.d $(IMPDIR)\core\sys\linux\fcntl.d : src\core\sys\linux\fcntl.d copy $** $@ +$(IMPDIR)\core\sys\linux\ifaddrs.d : src\core\sys\linux\ifaddrs.d + copy $** $@ + $(IMPDIR)\core\sys\linux\link.d : src\core\sys\linux\link.d copy $** $@ diff --git a/win64.mak b/win64.mak index ddded63a08..4a2bd40b3e 100644 --- a/win64.mak +++ b/win64.mak @@ -451,6 +451,9 @@ $(IMPDIR)\core\sys\linux\errno.d : src\core\sys\linux\errno.d $(IMPDIR)\core\sys\linux\execinfo.d : src\core\sys\linux\execinfo.d copy $** $@ +$(IMPDIR)\core\sys\linux\ifaddrs.d : src\core\sys\linux\ifaddrs.d + copy $** $@ + $(IMPDIR)\core\sys\linux\fcntl.d : src\core\sys\linux\fcntl.d copy $** $@ From 5c187e05ff87404ebf4884cfc548324c2c3ed0fc Mon Sep 17 00:00:00 2001 From: WalterW Date: Sun, 4 Dec 2016 11:11:08 -0500 Subject: [PATCH 526/768] Revert object.hashOf changes from "use array interface to hashOf()" fixes issues 16654 & 16764. --- src/object.d | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index b5f265e9bf..99718cba41 100644 --- a/src/object.d +++ b/src/object.d @@ -3176,7 +3176,15 @@ struct Test size_t hashOf(T)(auto ref T arg, size_t seed = 0) { import core.internal.hash; - return core.internal.hash.hashOf((cast(void*)&arg)[0 .. T.sizeof], seed); + return core.internal.hash.hashOf(arg, seed); +} + +unittest +{ + // Issue # 16654 / 16764 + auto a = [1]; + auto b = a.dup; + assert(hashOf(a) == hashOf(b)); } bool _xopEquals(in void*, in void*) From 7149012fc641d8873d02a52f6c4823d53a340164 Mon Sep 17 00:00:00 2001 From: kinke Date: Fri, 9 Dec 2016 20:07:50 +0100 Subject: [PATCH 527/768] [MSVCRT] core.stdcpp.typeinfo: Don't implement exception ctors Implementing them (wrongly btw, ignoring the msg) leads to an implicit call to the `super` ctor of base class `core.stdcpp.exception.std.exception`, which is only declared in D. Even if the ctor signature was correct (see below), it's mangled differently (see https://github.com/dlang/dmd/pull/5884), so there'd be an unresolved external anyway. So don't implement it, just declare it (also done for Glibc) to defer the linking error. Quality-wise, the 2 `core.stdcpp` modules are at most at an alpha stage for MSVCRT. Other issues I've noted so far using **VS 2015**: * The signature of the `core.stdcpp.exception.std.exception.this()` ctor is wrong. There's no default, i.e., parameter-less one, only `std::exception::exception(const char *_Message = "unknown", int x=1)`. * `std::exception` only contains a pointer, no additional `bool` field. * The signature of `core.stdcpp.typeinfo.std.type_info.name()` is wrong. It doesn't take any arguments. The first 2 aren't crucial, as these C++ exceptions are most likely never constructed on the D side. But the last one will need to be fixed. @rainers: Which VS versions does DMD currently support? --- src/core/stdcpp/typeinfo.d | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/core/stdcpp/typeinfo.d b/src/core/stdcpp/typeinfo.d index a535dbf802..f6c0c20f8b 100644 --- a/src/core/stdcpp/typeinfo.d +++ b/src/core/stdcpp/typeinfo.d @@ -71,8 +71,6 @@ else version (CRuntime_Microsoft) { class type_info { - - public: //virtual ~this(); void dtor() { } // reserve slot in vtbl[] //bool operator==(const type_info rhs) const; @@ -83,21 +81,18 @@ else version (CRuntime_Microsoft) private: void* pdata; char[1] _name; - //this(const type_info rhs); //type_info operator=(const type_info rhs); } class bad_cast : core.stdcpp.exception.std.exception { - this(const(char)* msg = "bad cast") { } - this(const bad_cast) { } + this(const(char)* msg = "bad cast"); //virtual ~this(); } class bad_typeid : core.stdcpp.exception.std.exception { - this(const(char)* msg = "bad typeid") { } - this(const bad_typeid) { } + this(const(char)* msg = "bad typeid"); //virtual ~this(); } } From 43185987756171c539b46bd7a4395283e70d26bb Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Tue, 13 Dec 2016 14:34:50 -0500 Subject: [PATCH 528/768] Fix missing bypassed chain in Error --- src/rt/dwarfeh.d | 35 +++++++++++----- test/exceptions/Makefile | 8 +++- test/exceptions/chain.exp | 7 ++++ test/exceptions/src/chain.d | 79 +++++++++++++++++++++++++++++++++++++ 4 files changed, 119 insertions(+), 10 deletions(-) create mode 100644 test/exceptions/chain.exp create mode 100644 test/exceptions/src/chain.d diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d index 6fdbf4efd0..18d60b2e00 100644 --- a/src/rt/dwarfeh.d +++ b/src/rt/dwarfeh.d @@ -373,25 +373,33 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti if (exceptionClass == dmdExceptionClass) { auto eh = ExceptionHeader.toExceptionHeader(exceptionObject); + auto currentLsd = language_specific_data; + bool bypassed = false; while (eh.next) { ExceptionHeader* ehn = eh.next; - // Don't combine when the exceptions are from different functions - if (language_specific_data != ehn.languageSpecificData) - { - //printf("break: %p %p\n", language_specific_data, ehn.languageSpecificData); - break; - } - Error e = cast(Error)eh.object; if (e !is null && !cast(Error)ehn.object) { /* eh is an Error, ehn is not. Skip ehn. */ //printf("bypass\n"); - e.bypassedException = ehn.object; + currentLsd = ehn.languageSpecificData; + + // Continuing to construct the bypassed chain + eh = ehn; + bypassed = true; + continue; + } + + // Don't combine when the exceptions are from different functions + if (currentLsd != ehn.languageSpecificData) + { + //printf("break: %p %p\n", currentLsd, ehn.languageSpecificData); + break; } + else { //printf("chain\n"); @@ -403,7 +411,7 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti // Replace our exception object with in-flight one eh.object = ehn.object; - if (ehn.handler != handler) + if (ehn.handler != handler && !bypassed) { handler = ehn.handler; @@ -418,6 +426,15 @@ extern (C) _Unwind_Reason_Code __dmd_personality_v0(int ver, _Unwind_Action acti //printf("delete %p\n", ehn); _Unwind_DeleteException(&ehn.exception_object); // discard ehn } + if (bypassed) + { + eh = ExceptionHeader.toExceptionHeader(exceptionObject); + Error e = cast(Error)eh.object; + auto ehn = eh.next; + e.bypassedException = ehn.object; + eh.next = ehn.next; + _Unwind_DeleteException(&ehn.exception_object); + } } // Set up registers and jump to cleanup or handler diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index 1517ce7715..3c651d846a 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -1,6 +1,6 @@ include ../common.mak -TESTS:=stderr_msg unittest_assert invalid_memory_operation unknown_gc static_dtor +TESTS:=stderr_msg unittest_assert invalid_memory_operation unknown_gc static_dtor chain ifeq ($(OS)-$(BUILD),linux-debug) TESTS:=$(TESTS) line_trace endif @@ -21,6 +21,12 @@ $(ROOT)/line_trace.done: $(ROOT)/line_trace @rm -f $(ROOT)/line_trace.output @touch $@ +$(ROOT)/chain.done: $(ROOT)/chain + @echo Testing chain + $(QUIET)$(TIMELIMIT)$(ROOT)/chain $(RUN_ARGS) > $(ROOT)/chain.output + @rm -f $(ROOT)/chain.output + @touch $@ + $(ROOT)/stderr_msg.done: STDERR_EXP="stderr_msg msg" $(ROOT)/unittest_assert.done: STDERR_EXP="unittest_assert msg" $(ROOT)/invalid_memory_operation.done: STDERR_EXP="InvalidMemoryOperationError" diff --git a/test/exceptions/chain.exp b/test/exceptions/chain.exp new file mode 100644 index 0000000000..acb7aa1828 --- /dev/null +++ b/test/exceptions/chain.exp @@ -0,0 +1,7 @@ +Caught +TestError: d + TestException: e +Bypassed chain was: +TestException: a + TestException: b + TestException: c diff --git a/test/exceptions/src/chain.d b/test/exceptions/src/chain.d new file mode 100644 index 0000000000..462ba245e5 --- /dev/null +++ b/test/exceptions/src/chain.d @@ -0,0 +1,79 @@ +// Author: Ali Çehreli +// See https://forum.dlang.org/post/o2n7f8$2p1t$1@digitalmars.com + +import core.stdc.stdio; + +class TestException : Exception +{ + this(string msg) + { + super(typeof(this).stringof~": "~msg); + } +} + +class TestError : Error +{ + this(string msg) + { + super(typeof(this).stringof~": "~msg); + } +} + +// Causes an exception chain where the node at index errorIndex is an +// Error (others are all Exceptions). +void causeExceptionChain(size_t chainLength, size_t errorIndex) +{ + void throws(size_t n) + { + scope (exit) + { + string msg = [ cast(char)('a'+n) ].idup; + if (n == errorIndex) + { + throw new TestError(msg); + } + else + { + throw new TestException(msg); + } + } + + if (n != 0) + { + // Redundant 'return' keyword due to + // https://issues.dlang.org/show_bug.cgi?id=16960 + return throws(n - 1); + } + } + + throws(chainLength - 1); +} + +void main() +{ + try + { + // -1 would mean "no Error in the chain". Change this to a + // number between 0 and 4 (inclusive) then you will realize + // that the Exception below will not be caught. + size_t errorIndex = 3; + causeExceptionChain(5, errorIndex); + } + catch (Error original) + { + printf("Caught\n"); + string prefix = ""; + for ({ size_t i; Throwable ex = original; } ex; ex = ex.next, ++i) + { + printf("%.*s%.*s\n", prefix.length, prefix.ptr, ex.msg.length, ex.msg.ptr); + prefix = prefix~" "; + } + printf("Bypassed chain was:\n"); + prefix = ""; + for ({ size_t i; Throwable ex = original.bypassedException; } ex; ex = ex.next, ++i) + { + printf("%.*s%.*s\n", prefix.length, prefix.ptr, ex.msg.length, ex.msg.ptr); + prefix = prefix~" "; + } + } +} From 801723c31e4072eb075d51c44428d7f76ce6bf0d Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Fri, 16 Dec 2016 03:06:41 +0100 Subject: [PATCH 529/768] Move changelog to a folder and use single file entries --- changelog.dd | 27 --------------------------- changelog/README.md | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 27 deletions(-) delete mode 100644 changelog.dd create mode 100644 changelog/README.md diff --git a/changelog.dd b/changelog.dd deleted file mode 100644 index 3401fc7000..0000000000 --- a/changelog.dd +++ /dev/null @@ -1,27 +0,0 @@ -Ddoc - -$(COMMENT Pending changelog for 2.073. This will get copied to dlang.org and - cleared when master gets merged into stable. -) - -$(BUGSTITLE Library Changes, -) - -$(BUGSTITLE Library Changes, -) - -Macros: - TITLE=Change Log - - BUGSTITLE =
$(H4 $1) $(OL $2 )
- - RELATIVE_LINK2=$+ - LNAME2=$+ - - BUGZILLA = Bugzilla $0 - - PULL_REQUEST = $(LINK2 https://github.com/dlang/$1/pull/$2, $1#$2) - DRUNTIMEPR = $(PULL_REQUEST druntime,$1) - - BOOKTABLE = $+
$1
- PRE =
$0
diff --git a/changelog/README.md b/changelog/README.md new file mode 100644 index 0000000000..48ceb6a06b --- /dev/null +++ b/changelog/README.md @@ -0,0 +1,34 @@ +How to add a new changelog entry to the pending changelog? +========================================================== + +This will get copied to dlang.org and cleared when master gets +merged into stable prior to a new release. + +``` +My fancy new feature X + +A long description of the new feature. +------- +import std.range; +import std.algorithm.comparison; + +assert([1, 2, 3, 4, 5].padLeft(0, 7).equal([0, 0, 1, 2, 3, 4, 5])); + +assert("Hello World!".padRight('!', 15).equal("Hello World!!!!")); +------- +``` + +The title can't contain links (it's already one). +For more infos, see the [Ddoc spec](https://dlang.org/spec/ddoc.html). + +Preview changes +--------------- + +If you have cloned the [tools](https://github.com/dlang/tools) and [dlang.org](https://github.com/dlang/dlang.org) repo), +you can preview the changelog: + +``` +../tools/changed.d -o ../dlang.org/changelog/pending.dd && make -C ../dlang.org -f posix.mak html +``` + +and then open `../dlang.org/web/changelog/pending.html` with your favorite browser. From 5cc28431b92d6849ef7758d200f714f5aee996f3 Mon Sep 17 00:00:00 2001 From: Denis Shelomovskii Date: Thu, 15 Dec 2016 19:21:41 +0300 Subject: [PATCH 530/768] Fix Issue 16974 - Equal associative arrays with associative array keys are considered unequal Use correct overload of `hashOf` in `_aaGetHash`. This incorrect usage is possible because of Issue 16973 - `hashOf` has error-prone signature as `(T, seed)` may be confused with `(ptr, length)` [1]. [1] https://issues.dlang.org/show_bug.cgi?id=16973 --- src/rt/aaA.d | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/rt/aaA.d b/src/rt/aaA.d index d51843d45c..37dcaab6f5 100644 --- a/src/rt/aaA.d +++ b/src/rt/aaA.d @@ -662,7 +662,7 @@ extern (C) hash_t _aaGetHash(in AA* aa, in TypeInfo tiRaw) nothrow continue; size_t[2] h2 = [b.hash, valHash(b.entry + off)]; // use XOR here, so that hash is independent of element order - h ^= hashOf(h2.ptr, h2.length * h2[0].sizeof); + h ^= hashOf(h2); } return h; } @@ -1001,3 +1001,15 @@ pure nothrow unittest assert(aa.length == 1); assert(aa[5] == 6); } + +// test AA as key (Issue 16974) +unittest +{ + int[int] a = [1 : 2], a2 = [1 : 2]; + + assert([a : 3] == [a : 3]); + assert([a : 3] == [a2 : 3]); + + assert(typeid(a).getHash(&a) == typeid(a).getHash(&a)); + assert(typeid(a).getHash(&a) == typeid(a).getHash(&a2)); +} From db5e91cf647fb4edcf9b36c3b8e4b354bccb7fac Mon Sep 17 00:00:00 2001 From: Stefan Koch Date: Tue, 13 Dec 2016 23:52:17 +0100 Subject: [PATCH 531/768] simplify _ArrayEq to make it work with the new ctfe engine --- src/object.d | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/object.d b/src/object.d index 39077ebe6e..207761020d 100644 --- a/src/object.d +++ b/src/object.d @@ -3138,9 +3138,13 @@ bool _ArrayEq(T1, T2)(T1[] a1, T2[] a2) { if (a1.length != a2.length) return false; - foreach(i, a; a1) + + auto idx = 0; + auto length = a1.length; + + for(;idx < length;++idx) { - if (a != a2[i]) + if (a1[idx] != a2[idx]) return false; } return true; From 5ad304a4323a80e581a5e8da61b9bd81205c9438 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Thu, 22 Dec 2016 18:33:43 -0500 Subject: [PATCH 532/768] fixup for issue 16211 - Add deprecate feature for cycle detection as the default mode. --- src/rt/minfo.d | 262 +++++++++++++++++++++++++++++++++++++++-- test/cycles/Makefile | 8 +- test/cycles/src/mod2.d | 6 - 3 files changed, 255 insertions(+), 21 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 27ff0f7ca2..531c6c77e2 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -156,26 +156,40 @@ struct ModuleGroup * Allocate and fill in _ctors[] and _tlsctors[]. * Modules are inserted into the arrays in the order in which the constructors * need to be run. + * + * Params: + * cycleHandling - string indicating option for cycle handling * Throws: * Exception if it fails. */ - void sortCtors() + void sortCtors(string cycleHandling) { import core.bitop : bts, btr, bt, BitRange; import rt.util.container.hashtab; - import rt.config : rt_configOption; + + // used to unwind stack for printing deprecation message. + static class DeprecatedCycleException : Exception + { + this() { super(""); } + } + scope deprecation = new DeprecatedCycleException(); enum OnCycle { + deprecate, abort, print, ignore } - auto onCycle = OnCycle.abort; + // Change default to .abort in 2.073 + auto onCycle = OnCycle.deprecate; - switch(rt_configOption("oncycle")) with(OnCycle) + switch(cycleHandling) with(OnCycle) { + case "deprecate": + onCycle = deprecate; + break; case "abort": onCycle = abort; break; @@ -190,7 +204,7 @@ struct ModuleGroup break; default: // invalid cycle handling option. - throw new Error("DRT invalid cycle handling option: " ~ rt_configOption("oncycle")); + throw new Error("DRT invalid cycle handling option: " ~ cycleHandling); } debug (printModuleDependencies) @@ -339,8 +353,7 @@ struct ModuleGroup else { auto midx = edges[sp.curMod][sp.curDep]; - // if midx is -1, then this isn't part of this DSO. - if (midx != -1 && !bts(reachable, midx)) + if (!bts(reachable, midx)) { if (bt(relevant, midx)) { @@ -350,7 +363,16 @@ struct ModuleGroup // was already started, this is a cycle. final switch(onCycle) with(OnCycle) { + case deprecate: + // check with old algorithm + if(sortCtorsOld(edges)) + { + // unwind to print deprecation message. + throw deprecation; + } + goto case abort; // fall through case abort: + string errmsg = ""; buildCycleMessage(idx, midx, (string x) {errmsg ~= x;}); throw new Error(errmsg, __FILE__, __LINE__); @@ -484,8 +506,208 @@ struct ModuleGroup } // finally, do the sorting for both shared and tls ctors. - _ctors = doSort(MIctor | MIdtor); - _tlsctors = doSort(MItlsctor | MItlsdtor); + try + { + _ctors = doSort(MIctor | MIdtor); + _tlsctors = doSort(MItlsctor | MItlsdtor); + } + catch(DeprecatedCycleException) + { + // print a warning + import core.stdc.stdio : fprintf, stderr; + fprintf(stderr, "Deprecation 16211 warning:\n" + ~ "A cycle has been detected in your program that was undetected prior to DMD\n" + ~ "2.072. This program will continue, but will not operate when using DMD 2.073\n" + ~ "to compile. Use runtime option --DRT-oncycle=print to see the cycle details.\n"); + + } + } + + /****************************** + * This is the old ctor sorting algorithm that does not find all cycles. + * + * It is here to allow the deprecated behavior from the original algorithm + * until people have fixed their code. + * + * If no cycles are found, the _ctors and _tlsctors are replaced with the + * ones generated by this algorithm to preserve the old incorrect ordering + * behavior. + * + * Params: + * edges - The module edges as found in the `importedModules` member of + * each ModuleInfo. Generated in sortCtors. + * Returns: + * true if no cycle is found, false if one was. + */ + bool sortCtorsOld(int[][] edges) + { + immutable len = edges.length; + assert(len == _modules.length); + + static struct StackRec + { + @property int mod() + { + return _mods[_idx]; + } + + int[] _mods; + size_t _idx; + } + + auto stack = (cast(StackRec*).calloc(len, StackRec.sizeof))[0 .. len]; + // TODO: reuse GCBits by moving it to rt.util.container or core.internal + immutable nwords = (len + 8 * size_t.sizeof - 1) / (8 * size_t.sizeof); + auto ctorstart = cast(size_t*).malloc(nwords * size_t.sizeof); + auto ctordone = cast(size_t*).malloc(nwords * size_t.sizeof); + int[] initialEdges = (cast(int *)malloc(int.sizeof * len))[0 .. len]; + if (!stack.ptr || ctorstart is null || ctordone is null || !initialEdges.ptr) + assert(0); + scope (exit) + { + .free(stack.ptr); + .free(ctorstart); + .free(ctordone); + .free(initialEdges.ptr); + } + + // initialize the initial edges + foreach (int i, ref v; initialEdges) + v = i; + + bool sort(ref immutable(ModuleInfo)*[] ctors, uint mask) + { + import core.bitop; + + ctors = (cast(immutable(ModuleInfo)**).malloc(len * size_t.sizeof))[0 .. len]; + if (!ctors.ptr) + assert(0); + + // clean flags + memset(ctorstart, 0, nwords * size_t.sizeof); + memset(ctordone, 0, nwords * size_t.sizeof); + size_t stackidx = 0; + size_t cidx; + + int[] mods = initialEdges; + + size_t idx; + while (true) + { + while (idx < mods.length) + { + auto m = mods[idx]; + + if (bt(ctordone, m)) + { + // this module has already been processed, skip + ++idx; + continue; + } + else if (bt(ctorstart, m)) + { + /* Trace back to the begin of the cycle. + */ + bool ctorInCycle; + size_t start = stackidx; + while (start--) + { + auto sm = stack[start].mod; + if (sm == m) + break; + assert(sm >= 0); + if (bt(ctorstart, sm)) + ctorInCycle = true; + } + assert(stack[start].mod == m); + if (ctorInCycle) + { + return false; + } + else + { + /* This is also a cycle, but the import chain does not constrain + * the order of initialization, either because the imported + * modules have no ctors or the ctors are standalone. + */ + ++idx; + } + } + else + { + auto curmod = _modules[m]; + if (curmod.flags & mask) + { + if (curmod.flags & MIstandalone || !edges[m].length) + { // trivial ctor => sort in + ctors[cidx++] = curmod; + bts(ctordone, m); + } + else + { // non-trivial ctor => defer + bts(ctorstart, m); + } + } + else // no ctor => mark as visited + { + bts(ctordone, m); + } + + if (edges[m].length) + { + /* Internal runtime error, recursion exceeds number of modules. + */ + (stackidx < len) || assert(0); + + // recurse + stack[stackidx++] = StackRec(mods, idx); + idx = 0; + mods = edges[m]; + } + } + } + + if (stackidx) + { // pop old value from stack + --stackidx; + mods = stack[stackidx]._mods; + idx = stack[stackidx]._idx; + auto m = mods[idx++]; + if (bt(ctorstart, m) && !bts(ctordone, m)) + ctors[cidx++] = _modules[m]; + } + else // done + break; + } + // store final number and shrink array + ctors = (cast(immutable(ModuleInfo)**).realloc(ctors.ptr, cidx * size_t.sizeof))[0 .. cidx]; + return true; + } + + /* Do two passes: ctor/dtor, tlsctor/tlsdtor + */ + immutable(ModuleInfo)*[] _ctors2; + immutable(ModuleInfo)*[] _tlsctors2; + auto result = sort(_ctors2, MIctor | MIdtor) && sort(_tlsctors2, MItlsctor | MItlsdtor); + if (result) // no cycle + { + // fall back to original ordering as part of the deprecation. + if(_ctors.ptr) + .free(_ctors.ptr); + _ctors = _ctors2; + if(_tlsctors.ptr) + .free(_tlsctors.ptr); + _tlsctors = _tlsctors2; + } + else + { + // free any allocated memory that will be forgotten + if (_ctors2.ptr) + .free(_ctors2.ptr); + if (_tlsctors2.ptr) + .free(_tlsctors2.ptr); + } + return result; } void runCtors() @@ -558,9 +780,10 @@ extern (C) { void rt_moduleCtor() { + import rt.config : rt_configOption; foreach (ref sg; SectionGroup) { - sg.moduleGroup.sortCtors(); + sg.moduleGroup.sortCtors(rt_configOption("oncycle")); sg.moduleGroup.runCtors(); } } @@ -691,13 +914,13 @@ unittest return mi; } - static void checkExp(string testname, bool shouldThrow, + static void checkExp2(string testname, bool shouldThrow, string oncycle, immutable(ModuleInfo*)[] modules, immutable(ModuleInfo*)[] dtors=null, immutable(ModuleInfo*)[] tlsdtors=null) { auto mgroup = ModuleGroup(modules); - mgroup.sortCtors(); + mgroup.sortCtors(oncycle); // if we are expecting sort to throw, don't throw because of unexpected // success! @@ -710,6 +933,15 @@ unittest } } + static void checkExp(string testname, bool shouldThrow, + immutable(ModuleInfo*)[] modules, + immutable(ModuleInfo*)[] dtors=null, + immutable(ModuleInfo*)[] tlsdtors=null) + { + checkExp2(testname, shouldThrow, "abort", modules, dtors, tlsdtors); + } + + { auto m0 = mockMI(0); auto m1 = mockMI(0); @@ -787,6 +1019,9 @@ unittest m1.setImports(&m0.mi); assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), "detects ctors cycles"); + assertThrown!Throwable(checkExp2("", true, "deprecate", + [&m0.mi, &m1.mi, &m2.mi]), + "detects ctors cycles (dep)"); } { @@ -836,6 +1071,9 @@ unittest m2.setImports(&m0.mi); assertThrown!Throwable(checkExp("", true, [&m0.mi, &m1.mi, &m2.mi]), "detects tlsctors cycle"); + assertThrown!Throwable(checkExp2("", true, "deprecate", + [&m0.mi, &m1.mi, &m2.mi]), + "detects tlsctors cycle (dep)"); } { diff --git a/test/cycles/Makefile b/test/cycles/Makefile index d810c4b525..4052695073 100644 --- a/test/cycles/Makefile +++ b/test/cycles/Makefile @@ -1,6 +1,6 @@ include ../common.mak -TESTS:=cycle_ignore cycle_abort cycle_print +TESTS:=cycle_ignore cycle_abort cycle_print cycle_deprecate DIFF:=diff SED:=sed @@ -11,9 +11,11 @@ all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) $(ROOT)/cycle_ignore.done: RETCODE=0 $(ROOT)/cycle_ignore.done: LINES=0 $(ROOT)/cycle_abort.done: RETCODE=1 -$(ROOT)/cycle_abort.done: LINES=5 +$(ROOT)/cycle_abort.done: LINES=7 $(ROOT)/cycle_print.done: RETCODE=0 -$(ROOT)/cycle_print.done: LINES=8 +$(ROOT)/cycle_print.done: LINES=6 +$(ROOT)/cycle_deprecate.done: RETCODE=0 +$(ROOT)/cycle_deprecate.done: LINES=4 $(ROOT)/%.done: $(ROOT)/test_cycles @echo Testing $* $(QUIET)$(TIMELIMIT)$(ROOT)/test_cycles --DRT-oncycle=$(patsubst cycle_%.done,%, $(notdir $@)) > $@ 2>&1; test $$? -eq $(RETCODE) diff --git a/test/cycles/src/mod2.d b/test/cycles/src/mod2.d index 8a7328bb32..2ab8b4fe01 100644 --- a/test/cycles/src/mod2.d +++ b/test/cycles/src/mod2.d @@ -2,12 +2,6 @@ module mod2; import mod1; import mod3; -shared int x; -shared static this() -{ - x = 2; -} - void main() { // do nothing From 7978252ac68c9af36cb12ca7f697e12d121d1154 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Thu, 22 Dec 2016 18:42:54 -0500 Subject: [PATCH 533/768] change API to not require string oncycle handling (sortCtors is called from elsewhere) --- src/rt/minfo.d | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 531c6c77e2..602bbcfa46 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -523,6 +523,13 @@ struct ModuleGroup } } + /// ditto + void sortCtors() + { + import rt.config : rt_configOption; + sortCtors(rt_configOption("oncycle")); + } + /****************************** * This is the old ctor sorting algorithm that does not find all cycles. * @@ -780,10 +787,9 @@ extern (C) { void rt_moduleCtor() { - import rt.config : rt_configOption; foreach (ref sg; SectionGroup) { - sg.moduleGroup.sortCtors(rt_configOption("oncycle")); + sg.moduleGroup.sortCtors(); sg.moduleGroup.runCtors(); } } From d9d8283f11d9cb542f693c0b7de4cca843110a24 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Fri, 23 Dec 2016 19:02:56 +0100 Subject: [PATCH 534/768] CircleCi: merge PRs with upstream branch --- circle.yml | 1 + circleci.sh | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/circle.yml b/circle.yml index 2ef12a63c4..5977d59a63 100644 --- a/circle.yml +++ b/circle.yml @@ -9,6 +9,7 @@ test: - make -f posix.mak style - ./circleci.sh coverage: parallel: true + timeout: 1200 post: # CodeCov gets confused by stored .lst files diff --git a/circleci.sh b/circleci.sh index 46d014bbcf..ca85a114ce 100755 --- a/circleci.sh +++ b/circleci.sh @@ -5,6 +5,7 @@ set -uexo pipefail HOST_DMD_VER=2.068.2 # same as in dmd/src/posix.mak CURL_USER_AGENT="CirleCI $(curl --version | head -n 1)" N=2 +CIRCLE_NODE_INDEX=${CIRCLE_NODE_INDEX:-0} case $CIRCLE_NODE_INDEX in 0) MODEL=64 ;; @@ -39,7 +40,7 @@ clone() { local path="$2" local branch="$3" for i in {0..4}; do - if git clone --depth=1 --branch "$branch" "$url" "$path"; then + if git clone --branch "$branch" "$url" "$path" "${@:4}"; then break elif [ $i -lt 4 ]; then sleep $((1 << $i)) @@ -57,7 +58,19 @@ coverage() { local base_branch=$CIRCLE_BRANCH fi - clone https://github.com/dlang/dmd.git ../dmd $base_branch + # merge upstream branch with changes, s.t. we check with the latest changes + if [ -n "${CIRCLE_PR_NUMBER:-}" ]; then + local current_branch=$(git rev-parse --abbrev-ref HEAD) + git config user.name dummyuser + git config user.email dummyuser@dummyserver.com + git remote add upstream https://github.com/dlang/druntime.git + git fetch upstream + git checkout -f upstream/$base_branch + git merge -m "Automatic merge" $current_branch + fi + + + clone https://github.com/dlang/dmd.git ../dmd $base_branch --depth 1 # load environment for bootstrap compiler source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash ~/dlang/install.sh dmd-$HOST_DMD_VER --activate)" From 958b9f77176fdbe23c68700dc0d8db03dc8c58a5 Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Tue, 27 Dec 2016 23:16:23 +0200 Subject: [PATCH 535/768] Add attributes core.thread part 1 This commit adds attributes to those functions in `core.thread` that don't require changes outside of the module. Not much of this has profound effect to the users but makes adding a templated `Thread`/`Fiber` classes on the user's callback much easier later on, which should help address the need for `@nogc` and `nothrow` threading primitives. --- src/core/thread.d | 110 ++++++++++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 53 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index a8e071ff71..865980f0f5 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1,4 +1,4 @@ -/** +/** * The thread module provides support for thread creation and management. * * Copyright: Copyright Sean Kelly 2005 - 2012. @@ -260,7 +260,7 @@ version( Windows ) } - HANDLE GetCurrentThreadHandle() + HANDLE GetCurrentThreadHandle() nothrow @nogc { const uint DUPLICATE_SAME_ACCESS = 0x00000002; @@ -560,7 +560,7 @@ class Thread * In: * fn must not be null. */ - this( void function() fn, size_t sz = 0 ) + this( void function() fn, size_t sz = 0 ) @safe pure nothrow @nogc in { assert( fn ); @@ -568,7 +568,7 @@ class Thread body { this(sz); - m_fn = fn; + () @trusted { m_fn = fn; }(); m_call = Call.FN; m_curr = &m_main; } @@ -585,7 +585,7 @@ class Thread * In: * dg must not be null. */ - this( void delegate() dg, size_t sz = 0 ) + this( void delegate() dg, size_t sz = 0 ) @safe pure nothrow @nogc in { assert( dg ); @@ -593,7 +593,7 @@ class Thread body { this(sz); - m_dg = dg; + () @trusted { m_dg = dg; }(); m_call = Call.DG; m_curr = &m_main; } @@ -802,7 +802,7 @@ class Thread * * The value is unique for the current process. */ - final @property ThreadID id() + final @property ThreadID id() @safe @nogc { synchronized( this ) { @@ -817,7 +817,7 @@ class Thread * Returns: * The name of this thread. */ - final @property string name() + final @property string name() @safe @nogc { synchronized( this ) { @@ -832,7 +832,7 @@ class Thread * Params: * val = The new name of this thread. */ - final @property void name( string val ) + final @property void name( string val ) @safe @nogc { synchronized( this ) { @@ -851,7 +851,7 @@ class Thread * Returns: * true if this is a daemon thread. */ - final @property bool isDaemon() + final @property bool isDaemon() @safe @nogc { synchronized( this ) { @@ -870,7 +870,7 @@ class Thread * Params: * val = The new daemon status for this thread. */ - final @property void isDaemon( bool val ) + final @property void isDaemon( bool val ) @safe @nogc { synchronized( this ) { @@ -885,7 +885,7 @@ class Thread * Returns: * true if the thread is running, false if not. */ - final @property bool isRunning() nothrow + final @property bool isRunning() nothrow @nogc { if( m_addr == m_addr.init ) { @@ -1176,7 +1176,7 @@ class Thread * deleting this object is undefined. If the current thread is not * attached to the runtime, a null reference is returned. */ - static Thread getThis() nothrow + static Thread getThis() @safe nothrow @nogc { // NOTE: This function may not be called until thread_init has // completed. See thread_suspendAll for more information @@ -1372,7 +1372,7 @@ private: // Initializes a thread object which has no associated executable function. // This is used for the main thread initialized in thread_init(). // - this(size_t sz = 0) + this(size_t sz = 0) @safe pure nothrow @nogc { if (sz) { @@ -1497,7 +1497,7 @@ private: // // Sets a thread-local reference to the current thread object. // - static void setThis( Thread t ) + static void setThis( Thread t ) nothrow @nogc { sm_this = t; } @@ -1536,7 +1536,7 @@ private: } - final Context* topContext() nothrow + final Context* topContext() nothrow @nogc in { assert( m_curr ); @@ -1644,12 +1644,12 @@ private: // Careful as the GC acquires this lock after the GC lock to suspend all // threads any GC usage with slock held can result in a deadlock through // lock order inversion. - @property static Mutex slock() nothrow + @property static Mutex slock() nothrow @nogc { return cast(Mutex)_locks[0].ptr; } - @property static Mutex criticalRegionLock() nothrow + @property static Mutex criticalRegionLock() nothrow @nogc { return cast(Mutex)_locks[1].ptr; } @@ -1695,7 +1695,7 @@ private: // // Add a context to the global context list. // - static void add( Context* c ) nothrow + static void add( Context* c ) nothrow @nogc in { assert( c ); @@ -1721,7 +1721,7 @@ private: // // This assumes slock being acquired. This isn't done here to // avoid double locking when called from remove(Thread) - static void remove( Context* c ) nothrow + static void remove( Context* c ) nothrow @nogc in { assert( c ); @@ -1752,7 +1752,7 @@ private: // // Add a thread to the global thread list. // - static void add( Thread t, bool rmAboutToStart = true ) nothrow + static void add( Thread t, bool rmAboutToStart = true ) nothrow @nogc in { assert( t ); @@ -1796,7 +1796,7 @@ private: // // Remove a thread from the global thread list. // - static void remove( Thread t ) nothrow + static void remove( Thread t ) nothrow @nogc in { assert( t ); @@ -1912,13 +1912,13 @@ version( CoreDdoc ) * This function should be called at most once, prior to thread_init(). * This function is Posix-only. */ - extern (C) void thread_setGCSignals(int suspendSignalNo, int resumeSignalNo) + extern (C) void thread_setGCSignals(int suspendSignalNo, int resumeSignalNo) nothrow @nogc { } } else version( Posix ) { - extern (C) void thread_setGCSignals(int suspendSignalNo, int resumeSignalNo) + extern (C) void thread_setGCSignals(int suspendSignalNo, int resumeSignalNo) nothrow @nogc in { assert(suspendSignalNumber == 0); @@ -2039,7 +2039,7 @@ extern (C) void thread_term() /** * */ -extern (C) bool thread_isMainThread() +extern (C) bool thread_isMainThread() nothrow @nogc { return Thread.getThis() is Thread.sm_main; } @@ -2172,7 +2172,7 @@ version( Windows ) * * $(D extern(C) void rt_moduleTlsDtor();) */ -extern (C) void thread_detachThis() nothrow +extern (C) void thread_detachThis() nothrow @nogc { if (auto t = Thread.getThis()) Thread.remove(t); @@ -2198,7 +2198,7 @@ extern (C) void thread_detachByAddr( ThreadID addr ) /// ditto -extern (C) void thread_detachInstance( Thread t ) +extern (C) void thread_detachInstance( Thread t ) nothrow @nogc { Thread.remove( t ); } @@ -2260,7 +2260,7 @@ static Thread thread_findByAddr( ThreadID addr ) * Params: * t = A reference to the current thread. May be null. */ -extern (C) void thread_setThis(Thread t) +extern (C) void thread_setThis(Thread t) nothrow @nogc { Thread.setThis(t); } @@ -2927,7 +2927,7 @@ extern (C) void thread_scanAll( scope ScanAllThreadsFn scan ) nothrow * In: * The calling thread must be attached to the runtime. */ -extern (C) void thread_enterCriticalRegion() +extern (C) void thread_enterCriticalRegion() @nogc in { assert(Thread.getThis()); @@ -2946,7 +2946,7 @@ body * In: * The calling thread must be attached to the runtime. */ -extern (C) void thread_exitCriticalRegion() +extern (C) void thread_exitCriticalRegion() @nogc in { assert(Thread.getThis()); @@ -2964,7 +2964,7 @@ body * In: * The calling thread must be attached to the runtime. */ -extern (C) bool thread_inCriticalRegion() +extern (C) bool thread_inCriticalRegion() @nogc in { assert(Thread.getThis()); @@ -3123,9 +3123,8 @@ extern(C) void thread_processGCMarks( scope IsMarkedDg isMarked ) nothrow } -extern (C) +extern (C) @nogc nothrow { -nothrow: version (CRuntime_Glibc) int pthread_getattr_np(pthread_t thread, pthread_attr_t* attr); version (FreeBSD) int pthread_attr_get_np(pthread_t thread, pthread_attr_t* attr); version (Solaris) int thr_stksegment(stack_t* stk); @@ -3133,7 +3132,7 @@ nothrow: } -private void* getStackTop() nothrow +private void* getStackTop() nothrow @nogc { version (D_InlineAsm_X86) asm pure nothrow @nogc { naked; mov EAX, ESP; ret; } @@ -3146,7 +3145,7 @@ private void* getStackTop() nothrow } -private void* getStackBottom() nothrow +private void* getStackBottom() nothrow @nogc { version (Windows) { @@ -3220,7 +3219,7 @@ private void* getStackBottom() nothrow * Returns: * The address of the stack top. */ -extern (C) void* thread_stackTop() nothrow +extern (C) void* thread_stackTop() nothrow @nogc in { // Not strictly required, but it gives us more flexibility. @@ -3242,7 +3241,7 @@ body * Returns: * The address of the stack bottom. */ -extern (C) void* thread_stackBottom() nothrow +extern (C) void* thread_stackBottom() nothrow @nogc in { assert(Thread.getThis()); @@ -3522,7 +3521,7 @@ shared static this() private { - extern (C) void fiber_entryPoint() + extern (C) void fiber_entryPoint() nothrow { Fiber obj = Fiber.getThis(); assert( obj ); @@ -3550,9 +3549,9 @@ private // Look above the definition of 'class Fiber' for some information about the implementation of this routine version( AsmExternal ) - extern (C) void fiber_switchContext( void** oldp, void* newp ) nothrow; + extern (C) void fiber_switchContext( void** oldp, void* newp ) nothrow @nogc; else - extern (C) void fiber_switchContext( void** oldp, void* newp ) nothrow + extern (C) void fiber_switchContext( void** oldp, void* newp ) nothrow @nogc { // NOTE: The data pushed and popped in this routine must match the // default stack created by Fiber.initStack or the initial @@ -3993,7 +3992,7 @@ class Fiber /** * Cleans up any remaining resources used by this object. */ - ~this() nothrow + ~this() nothrow @nogc { // NOTE: A live reference to this object will exist on its associated // stack from the first time its call() method has been called @@ -4035,6 +4034,11 @@ class Fiber * Any exception not handled by this fiber if rethrow = false, null * otherwise. */ + // Not marked with any attributes, even though `nothrow @nogc` works + // because it calls arbitrary user code. Most of the implementation + // is already `@nogc nothrow`, but in order for `Fiber.call` to + // propagate the attributes of the user's function, the Fiber + // class needs to be templated. final Throwable call( Rethrow rethrow = Rethrow.yes ) { return rethrow ? call!(Rethrow.yes)() : call!(Rethrow.no); @@ -4109,7 +4113,7 @@ class Fiber * In: * This fiber must be in state TERM or HOLD. */ - final void reset() nothrow + final void reset() nothrow @nogc in { assert( m_state == State.TERM || m_state == State.HOLD ); @@ -4123,7 +4127,7 @@ class Fiber } /// ditto - final void reset( void function() fn ) nothrow + final void reset( void function() fn ) nothrow @nogc { reset(); m_fn = fn; @@ -4131,7 +4135,7 @@ class Fiber } /// ditto - final void reset( void delegate() dg ) nothrow + final void reset( void delegate() dg ) nothrow @nogc { reset(); m_dg = dg; @@ -4164,7 +4168,7 @@ class Fiber * Returns: * The state of this fiber as an enumerated value. */ - final @property State state() const nothrow + final @property State state() const @safe pure nothrow @nogc { return m_state; } @@ -4178,7 +4182,7 @@ class Fiber /** * Forces a context switch to occur away from the calling fiber. */ - static void yield() nothrow + static void yield() nothrow @nogc { Fiber cur = getThis(); assert( cur, "Fiber.yield() called with no active fiber" ); @@ -4203,7 +4207,7 @@ class Fiber * In: * t must not be null. */ - static void yieldAndThrow( Throwable t ) nothrow + static void yieldAndThrow( Throwable t ) nothrow @nogc in { assert( t ); @@ -4237,7 +4241,7 @@ class Fiber * The fiber object representing the calling fiber or null if no fiber * is currently active within this thread. The result of deleting this object is undefined. */ - static Fiber getThis() nothrow + static Fiber getThis() @safe nothrow @nogc { return sm_this; } @@ -4264,7 +4268,7 @@ private: // // Initializes a fiber object which has no associated executable function. // - this() nothrow + this() @safe pure nothrow @nogc { m_call = Call.NO; } @@ -4443,7 +4447,7 @@ private: // // Free this fiber's stack. // - final void freeStack() nothrow + final void freeStack() nothrow @nogc in { assert( m_pmem && m_ctxt ); @@ -4486,7 +4490,7 @@ private: // Initialize the allocated stack. // Look above the definition of 'class Fiber' for some information about the implementation of this routine // - final void initStack() nothrow + final void initStack() nothrow @nogc in { assert( m_ctxt.tstack && m_ctxt.tstack == m_ctxt.bstack ); @@ -4821,7 +4825,7 @@ private: // // Sets a thread-local reference to the current fiber object. // - static void setThis( Fiber f ) nothrow + static void setThis( Fiber f ) nothrow @nogc { sm_this = f; } @@ -4872,7 +4876,7 @@ private: // // Switches out of the current stack and into the enclosing stack. // - final void switchOut() nothrow + final void switchOut() nothrow @nogc { Thread tobj = Thread.getThis(); void** oldp = &m_ctxt.tstack; From df2308b8d251602f22e615e88b94f4e4f19af9fa Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 4 Dec 2016 17:51:42 +0100 Subject: [PATCH 536/768] Merge pull request #1707 from WalterWaldron/fixHashOf [REG 2.072] Revert object.hashOf changes from "use array interface to hashOf()" --- src/object.d | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index b5f265e9bf..99718cba41 100644 --- a/src/object.d +++ b/src/object.d @@ -3176,7 +3176,15 @@ struct Test size_t hashOf(T)(auto ref T arg, size_t seed = 0) { import core.internal.hash; - return core.internal.hash.hashOf((cast(void*)&arg)[0 .. T.sizeof], seed); + return core.internal.hash.hashOf(arg, seed); +} + +unittest +{ + // Issue # 16654 / 16764 + auto a = [1]; + auto b = a.dup; + assert(hashOf(a) == hashOf(b)); } bool _xopEquals(in void*, in void*) From d7581e817b37ccc0f4a502704ddcdb375a3b095a Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Tue, 27 Dec 2016 23:17:38 +0200 Subject: [PATCH 537/768] Add attributes core.thread part 2 This commit fixes `Thread.~this()`, `thread_attachThis` and partially `thread_entryPoint` and `thread_attachByAddrB`. `thread_entryPoint` can't be made `@nogc` because it calls `Thread.run`, `rt_moduleTlsCtor` and `rt_moduleTlsDtor`, which can execute arbitrary user code. `thread_attachByAddrB` can't be made `@nogc` because it calls `thread_findByAddr`, which calls `Thread.opApply`, which can't be `@nogc` because it calls a non-`@nogc` delegate. This change is a bit large because many call-sites needed to be fixed in one go: * On posix, `thread_entryPoint` calls `inheritLoadedLibraries` and `cleanupLoadedLibraries`, and `Thread.start` calls `rt.sections.pinLoadedLibraries` and `unpinLoadedLibraries`. * `Thread.~this()` calls `rt.tlsgc.destroy`, which in turn calls `rt.sections.finiTLSRanges`, which is implemented in `rt.secions_{platform}`. * Similarly, `thread_attachThis` calls `rt.tlsgc.init`, which in turn calls `rt.sections.initTLSRanges`, which is implemented in `rt.secions_{platform}`. On some platforms `rt.sections.initTLSRanges` calls `rt.minfo.ModuleGroup.this`, so I made it `nothrow` and `@nogc` too. * Additionally, `rt.sections.initSections` and `finiSections` were easy to fix, so I added appropriate attributes to them, even though they are called only from `rt.dmain2.rt_init`. Finally, some function from `rt.sections_elf_shared` was accessing `ModuleInfo.name` which wasn't marked as `@nogc`, so I went through `object.ModuleInfo` and made all of its members `@nogc` (they were already `nothrow`). --- src/core/sys/freebsd/dlfcn.d | 5 ++- src/core/sys/linux/dlfcn.d | 1 + src/core/thread.d | 10 ++--- src/object.d | 26 ++++++------- src/rt/minfo.d | 4 +- src/rt/sections.d | 16 ++++---- src/rt/sections_android.d | 24 ++++++------ src/rt/sections_elf_shared.d | 73 ++++++++++++++++++------------------ src/rt/sections_osx_x86.d | 10 ++--- src/rt/sections_osx_x86_64.d | 10 ++--- src/rt/sections_solaris.d | 8 ++-- src/rt/sections_win32.d | 12 +++--- src/rt/sections_win64.d | 20 +++++----- src/rt/tlsgc.d | 4 +- 14 files changed, 112 insertions(+), 111 deletions(-) diff --git a/src/core/sys/freebsd/dlfcn.d b/src/core/sys/freebsd/dlfcn.d index bcb41a44f7..812cb4c17b 100644 --- a/src/core/sys/freebsd/dlfcn.d +++ b/src/core/sys/freebsd/dlfcn.d @@ -12,6 +12,7 @@ public import core.sys.posix.dlfcn; version (FreeBSD): extern (C): nothrow: +@nogc: enum __BSD_VISIBLE = true; @@ -68,7 +69,7 @@ static if (__BSD_VISIBLE) int __dlfunc_dummy; }; - alias void function(__dlfunc_arg) dlfunc_t; + alias dlfunc_t = void function(__dlfunc_arg); /* * Structures, returned by the RTLD_DI_SERINFO dlinfo() request. @@ -87,7 +88,7 @@ static if (__BSD_VISIBLE) private template __externC(RT, P...) { - alias extern(C) RT function(P) nothrow @nogc __externC; + alias __externC = extern(C) RT function(P) nothrow @nogc; } /* XSI functions first. */ diff --git a/src/core/sys/linux/dlfcn.d b/src/core/sys/linux/dlfcn.d index 7abf6ddde5..3756a04a31 100644 --- a/src/core/sys/linux/dlfcn.d +++ b/src/core/sys/linux/dlfcn.d @@ -8,6 +8,7 @@ module core.sys.linux.dlfcn; version (linux): extern (C): nothrow: +@nogc: public import core.sys.posix.dlfcn; import core.sys.linux.config; diff --git a/src/core/thread.d b/src/core/thread.d index 865980f0f5..82e8feb03e 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -29,8 +29,8 @@ private // interface to rt.tlsgc import core.internal.traits : externDFunc; - alias rt_tlsgc_init = externDFunc!("rt.tlsgc.init", void* function()); - alias rt_tlsgc_destroy = externDFunc!("rt.tlsgc.destroy", void function(void*)); + alias rt_tlsgc_init = externDFunc!("rt.tlsgc.init", void* function() nothrow @nogc); + alias rt_tlsgc_destroy = externDFunc!("rt.tlsgc.destroy", void function(void*) nothrow @nogc); alias ScanDg = void delegate(void* pstart, void* pend) nothrow; alias rt_tlsgc_scan = @@ -193,7 +193,7 @@ version( Windows ) // // Entry point for Windows threads // - extern (Windows) uint thread_entryPoint( void* arg ) + extern (Windows) uint thread_entryPoint( void* arg ) nothrow { Thread obj = cast(Thread) arg; assert( obj ); @@ -298,7 +298,7 @@ else version( Posix ) // // Entry point for POSIX threads // - extern (C) void* thread_entryPoint( void* arg ) + extern (C) void* thread_entryPoint( void* arg ) nothrow { version (Shared) { @@ -602,7 +602,7 @@ class Thread /** * Cleans up any remaining resources used by this object. */ - ~this() + ~this() nothrow @nogc { if( m_addr == m_addr.init ) { diff --git a/src/object.d b/src/object.d index 9086698903..169ce3064f 100644 --- a/src/object.d +++ b/src/object.d @@ -1470,7 +1470,7 @@ struct ModuleInfo } const: - private void* addrOf(int flag) nothrow pure + private void* addrOf(int flag) nothrow pure @nogc in { assert(flag >= MItlsctor && flag <= MIname); @@ -1535,46 +1535,46 @@ const: assert(0); } - @property uint index() nothrow pure { return _index; } + @property uint index() nothrow pure @nogc { return _index; } - @property uint flags() nothrow pure { return _flags; } + @property uint flags() nothrow pure @nogc { return _flags; } - @property void function() tlsctor() nothrow pure + @property void function() tlsctor() nothrow pure @nogc { return flags & MItlsctor ? *cast(typeof(return)*)addrOf(MItlsctor) : null; } - @property void function() tlsdtor() nothrow pure + @property void function() tlsdtor() nothrow pure @nogc { return flags & MItlsdtor ? *cast(typeof(return)*)addrOf(MItlsdtor) : null; } - @property void* xgetMembers() nothrow pure + @property void* xgetMembers() nothrow pure @nogc { return flags & MIxgetMembers ? *cast(typeof(return)*)addrOf(MIxgetMembers) : null; } - @property void function() ctor() nothrow pure + @property void function() ctor() nothrow pure @nogc { return flags & MIctor ? *cast(typeof(return)*)addrOf(MIctor) : null; } - @property void function() dtor() nothrow pure + @property void function() dtor() nothrow pure @nogc { return flags & MIdtor ? *cast(typeof(return)*)addrOf(MIdtor) : null; } - @property void function() ictor() nothrow pure + @property void function() ictor() nothrow pure @nogc { return flags & MIictor ? *cast(typeof(return)*)addrOf(MIictor) : null; } - @property void function() unitTest() nothrow pure + @property void function() unitTest() nothrow pure @nogc { return flags & MIunitTest ? *cast(typeof(return)*)addrOf(MIunitTest) : null; } - @property immutable(ModuleInfo*)[] importedModules() nothrow pure + @property immutable(ModuleInfo*)[] importedModules() nothrow pure @nogc { if (flags & MIimportedModules) { @@ -1584,7 +1584,7 @@ const: return null; } - @property TypeInfo_Class[] localClasses() nothrow pure + @property TypeInfo_Class[] localClasses() nothrow pure @nogc { if (flags & MIlocalClasses) { @@ -1594,7 +1594,7 @@ const: return null; } - @property string name() nothrow pure + @property string name() nothrow pure @nogc { if (true || flags & MIname) // always available for now { diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 602bbcfa46..190cce279c 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -43,12 +43,12 @@ enum struct ModuleGroup { - this(immutable(ModuleInfo*)[] modules) + this(immutable(ModuleInfo*)[] modules) nothrow @nogc { _modules = modules; } - @property immutable(ModuleInfo*)[] modules() const + @property immutable(ModuleInfo*)[] modules() const nothrow @nogc { return _modules; } diff --git a/src/rt/sections.d b/src/rt/sections.d index 4e32a77663..0cbd5e594f 100644 --- a/src/rt/sections.d +++ b/src/rt/sections.d @@ -56,17 +56,17 @@ template isSectionGroup(T) is(typeof({ foreach_reverse (ref T; T) {}})); } static assert(isSectionGroup!(SectionGroup)); -static assert(is(typeof(&initSections) == void function())); -static assert(is(typeof(&finiSections) == void function())); +static assert(is(typeof(&initSections) == void function() nothrow @nogc)); +static assert(is(typeof(&finiSections) == void function() nothrow @nogc)); static assert(is(typeof(&initTLSRanges) RT == return) && - is(typeof(&initTLSRanges) == RT function()) && - is(typeof(&finiTLSRanges) == void function(RT)) && + is(typeof(&initTLSRanges) == RT function() nothrow @nogc) && + is(typeof(&finiTLSRanges) == void function(RT) nothrow @nogc) && is(typeof(&scanTLSRanges) == void function(RT, scope void delegate(void*, void*) nothrow) nothrow)); version (Shared) { - static assert(is(typeof(&pinLoadedLibraries) == void* function() nothrow)); - static assert(is(typeof(&unpinLoadedLibraries) == void function(void*) nothrow)); - static assert(is(typeof(&inheritLoadedLibraries) == void function(void*))); - static assert(is(typeof(&cleanupLoadedLibraries) == void function())); + static assert(is(typeof(&pinLoadedLibraries) == void* function() nothrow @nogc)); + static assert(is(typeof(&unpinLoadedLibraries) == void function(void*) nothrow @nogc)); + static assert(is(typeof(&inheritLoadedLibraries) == void function(void*) nothrow @nogc)); + static assert(is(typeof(&cleanupLoadedLibraries) == void function() nothrow @nogc)); } diff --git a/src/rt/sections_android.d b/src/rt/sections_android.d index 79e2a642e1..de7a4130b6 100644 --- a/src/rt/sections_android.d +++ b/src/rt/sections_android.d @@ -32,24 +32,24 @@ struct SectionGroup return dg(_sections); } - @property immutable(ModuleInfo*)[] modules() const + @property immutable(ModuleInfo*)[] modules() const nothrow @nogc { return _moduleGroup.modules; } - @property ref inout(ModuleGroup) moduleGroup() inout + @property ref inout(ModuleGroup) moduleGroup() inout nothrow @nogc { return _moduleGroup; } - @property immutable(FuncTable)[] ehTables() const + @property immutable(FuncTable)[] ehTables() const nothrow @nogc { auto pbeg = cast(immutable(FuncTable)*)&__start_deh; auto pend = cast(immutable(FuncTable)*)&__stop_deh; return pbeg[0 .. pend - pbeg]; } - @property inout(void[])[] gcRanges() inout + @property inout(void[])[] gcRanges() inout nothrow @nogc { return _gcRanges[]; } @@ -59,7 +59,7 @@ private: void[][1] _gcRanges; } -void initSections() +void initSections() nothrow @nogc { pthread_key_create(&_tlsKey, null); @@ -72,17 +72,17 @@ void initSections() _sections._gcRanges[0] = pbeg[0 .. pend - pbeg]; } -void finiSections() +void finiSections() nothrow @nogc { pthread_key_delete(_tlsKey); } -void[]* initTLSRanges() +void[]* initTLSRanges() nothrow @nogc { return &getTLSBlock(); } -void finiTLSRanges(void[]* rng) +void finiTLSRanges(void[]* rng) nothrow @nogc { .free(rng.ptr); .free(rng); @@ -108,7 +108,7 @@ version(X86) { // NB: the compiler mangles this function as '___tls_get_addr' // even though it is extern(D) - extern(D) void* ___tls_get_addr( void* p ) + extern(D) void* ___tls_get_addr( void* p ) nothrow @nogc { debug(PRINTF) printf(" ___tls_get_addr input - %p\n", p); immutable offset = cast(size_t)(p - cast(void*)&_tlsstart); @@ -119,7 +119,7 @@ version(X86) } else version(ARM) { - extern(C) void* __tls_get_addr( void** p ) + extern(C) void* __tls_get_addr( void** p ) nothrow @nogc { debug(PRINTF) printf(" __tls_get_addr input - %p\n", *p); immutable offset = cast(size_t)(*p - cast(void*)&_tlsstart); @@ -135,7 +135,7 @@ private: __gshared pthread_key_t _tlsKey; -ref void[] getTLSBlock() +ref void[] getTLSBlock() nothrow @nogc { auto pary = cast(void[]*)pthread_getspecific(_tlsKey); if (pary is null) @@ -151,7 +151,7 @@ ref void[] getTLSBlock() return *pary; } -ref void[] getTLSBlockAlloc() +ref void[] getTLSBlockAlloc() nothrow @nogc { auto pary = &getTLSBlock(); if (!pary.length) diff --git a/src/rt/sections_elf_shared.d b/src/rt/sections_elf_shared.d index 4741e1a7e5..ba9ef98a89 100644 --- a/src/rt/sections_elf_shared.d +++ b/src/rt/sections_elf_shared.d @@ -66,22 +66,22 @@ struct DSO return 0; } - @property immutable(ModuleInfo*)[] modules() const + @property immutable(ModuleInfo*)[] modules() const nothrow @nogc { return _moduleGroup.modules; } - @property ref inout(ModuleGroup) moduleGroup() inout + @property ref inout(ModuleGroup) moduleGroup() inout nothrow @nogc { return _moduleGroup; } - @property immutable(FuncTable)[] ehTables() const + @property immutable(FuncTable)[] ehTables() const nothrow @nogc { return null; } - @property inout(void[])[] gcRanges() inout + @property inout(void[])[] gcRanges() inout nothrow @nogc { return _gcRanges[]; } @@ -118,7 +118,7 @@ version (FreeBSD) private __gshared void* dummy_ref; /**** * Gets called on program startup just before GC is initialized. */ -void initSections() +void initSections() nothrow @nogc { _isRuntimeInitialized = true; // reference symbol to support weak linkage @@ -129,7 +129,7 @@ void initSections() /*** * Gets called on program shutdown just after GC is terminated. */ -void finiSections() +void finiSections() nothrow @nogc { _isRuntimeInitialized = false; } @@ -141,12 +141,12 @@ version (Shared) /*** * Called once per thread; returns array of thread local storage ranges */ - Array!(ThreadDSO)* initTLSRanges() + Array!(ThreadDSO)* initTLSRanges() @nogc nothrow { return &_loadedDSOs; } - void finiTLSRanges(Array!(ThreadDSO)* tdsos) + void finiTLSRanges(Array!(ThreadDSO)* tdsos) @nogc nothrow { // Nothing to do here. tdsos used to point to the _loadedDSOs instance // in the dying thread's TLS segment and as such is not valid anymore. @@ -161,7 +161,7 @@ version (Shared) } // interface for core.thread to inherit loaded libraries - void* pinLoadedLibraries() nothrow + void* pinLoadedLibraries() nothrow @nogc { auto res = cast(Array!(ThreadDSO)*)calloc(1, Array!(ThreadDSO).sizeof); res.length = _loadedDSOs.length; @@ -178,7 +178,7 @@ version (Shared) return res; } - void unpinLoadedLibraries(void* p) nothrow + void unpinLoadedLibraries(void* p) nothrow @nogc { auto pary = cast(Array!(ThreadDSO)*)p; // In case something failed we need to undo the pinning. @@ -197,7 +197,7 @@ version (Shared) // Called before TLS ctors are ran, copy over the loaded libraries // of the parent thread. - void inheritLoadedLibraries(void* p) + void inheritLoadedLibraries(void* p) nothrow @nogc { assert(_loadedDSOs.empty); _loadedDSOs.swap(*cast(Array!(ThreadDSO)*)p); @@ -210,7 +210,7 @@ version (Shared) } // Called after all TLS dtors ran, decrements all remaining dlopen refs. - void cleanupLoadedLibraries() + void cleanupLoadedLibraries() nothrow @nogc { foreach (ref tdso; _loadedDSOs) { @@ -231,12 +231,12 @@ else /*** * Called once per thread; returns array of thread local storage ranges */ - Array!(void[])* initTLSRanges() + Array!(void[])* initTLSRanges() nothrow @nogc { return &_tlsRanges; } - void finiTLSRanges(Array!(void[])* rngs) + void finiTLSRanges(Array!(void[])* rngs) nothrow @nogc { rngs.reset(); } @@ -277,7 +277,7 @@ version (Shared) void[] _tlsRange; alias _pdso this; // update the _tlsRange for the executing thread - void updateTLSRange() + void updateTLSRange() nothrow @nogc { _tlsRange = getTLSRange(_pdso._tlsMod, _pdso._tlsSize); } @@ -471,7 +471,7 @@ extern(C) void _d_dso_registry(CompilerDSOData* data) version (Shared) { - ThreadDSO* findThreadDSO(DSO* pdso) + ThreadDSO* findThreadDSO(DSO* pdso) nothrow @nogc { foreach (ref tdata; _loadedDSOs) if (tdata._pdso == pdso) return &tdata; @@ -546,13 +546,13 @@ version (Shared) // helper functions /////////////////////////////////////////////////////////////////////////////// -void initLocks() +void initLocks() nothrow @nogc { version (Shared) !pthread_mutex_init(&_handleToDSOMutex, null) || assert(0); } -void finiLocks() +void finiLocks() nothrow @nogc { version (Shared) !pthread_mutex_destroy(&_handleToDSOMutex) || assert(0); @@ -571,13 +571,13 @@ void runModuleDestructors(DSO* pdso, bool runTlsDtors) pdso._moduleGroup.runDtors(); } -void registerGCRanges(DSO* pdso) +void registerGCRanges(DSO* pdso) nothrow @nogc { foreach (rng; pdso._gcRanges) GC.addRange(rng.ptr, rng.length); } -void unregisterGCRanges(DSO* pdso) +void unregisterGCRanges(DSO* pdso) nothrow @nogc { foreach (rng; pdso._gcRanges) GC.removeRange(rng.ptr); @@ -589,7 +589,7 @@ version (Shared) void runFinalizers(DSO* pdso) GC.runFinalizers(seg); } -void freeDSO(DSO* pdso) +void freeDSO(DSO* pdso) nothrow @nogc { pdso._gcRanges.reset(); version (Shared) pdso._codeSegments.reset(); @@ -598,15 +598,15 @@ void freeDSO(DSO* pdso) version (Shared) { -nothrow: - link_map* linkMapForHandle(void* handle) +@nogc nothrow: + link_map* linkMapForHandle(void* handle) nothrow @nogc { link_map* map; dlinfo(handle, RTLD_DI_LINKMAP, &map) == 0 || assert(0); return map; } - link_map* exeLinkMap(link_map* map) + link_map* exeLinkMap(link_map* map) nothrow @nogc { assert(map); while (map.l_prev !is null) @@ -614,7 +614,7 @@ nothrow: return map; } - DSO* dsoForHandle(void* handle) + DSO* dsoForHandle(void* handle) nothrow @nogc { DSO* pdso; !pthread_mutex_lock(&_handleToDSOMutex) || assert(0); @@ -624,7 +624,7 @@ nothrow: return pdso; } - void setDSOForHandle(DSO* pdso, void* handle) + void setDSOForHandle(DSO* pdso, void* handle) nothrow @nogc { !pthread_mutex_lock(&_handleToDSOMutex) || assert(0); assert(handle !in _handleToDSO); @@ -632,7 +632,7 @@ nothrow: !pthread_mutex_unlock(&_handleToDSOMutex) || assert(0); } - void unsetDSOForHandle(DSO* pdso, void* handle) + void unsetDSOForHandle(DSO* pdso, void* handle) nothrow @nogc { !pthread_mutex_lock(&_handleToDSOMutex) || assert(0); assert(_handleToDSO[handle] == pdso); @@ -640,7 +640,7 @@ nothrow: !pthread_mutex_unlock(&_handleToDSOMutex) || assert(0); } - void getDependencies(in ref dl_phdr_info info, ref Array!(DSO*) deps) + void getDependencies(in ref dl_phdr_info info, ref Array!(DSO*) deps) nothrow @nogc { // get the entries of the .dynamic section ElfW!"Dyn"[] dyns; @@ -686,7 +686,7 @@ nothrow: } } - void* handleForName(const char* name) + void* handleForName(const char* name) nothrow @nogc { auto handle = .dlopen(name, RTLD_NOLOAD | RTLD_LAZY); if (handle !is null) .dlclose(handle); // drop reference count @@ -702,7 +702,7 @@ nothrow: * Scan segments in Linux dl_phdr_info struct and store * the TLS and writeable data segments in *pdso. */ -void scanSegments(in ref dl_phdr_info info, DSO* pdso) +void scanSegments(in ref dl_phdr_info info, DSO* pdso) nothrow @nogc { foreach (ref phdr; info.dlpi_phdr[0 .. info.dlpi_phnum]) { @@ -800,8 +800,7 @@ version (FreeBSD) extern(C) const(char)* getprogname() nothrow @nogc; version (FreeBSD) return getprogname(); } -nothrow -const(char)[] dsoName(const char* dlpi_name) +const(char)[] dsoName(const char* dlpi_name) nothrow @nogc { // the main executable doesn't have a name in its dlpi_name field const char* p = dlpi_name[0] != 0 ? dlpi_name : progname; @@ -815,7 +814,7 @@ extern(C) } /// get the BSS section of the executable to check for copy relocations -const(void)[] getCopyRelocSection() nothrow +const(void)[] getCopyRelocSection() nothrow @nogc { auto bss_start = rt_get_bss_start(); auto bss_end = rt_get_end(); @@ -857,7 +856,7 @@ const(void)[] getCopyRelocSection() nothrow * chains. */ void checkModuleCollisions(in ref dl_phdr_info info, in immutable(ModuleInfo)*[] modules, - in void[] copyRelocSection) nothrow + in void[] copyRelocSection) nothrow @nogc in { assert(modules.length); } body { @@ -901,7 +900,7 @@ body * Returns: * the dlopen handle for that DSO or null if addr is not within a loaded DSO */ -version (Shared) void* handleForAddr(void* addr) +version (Shared) void* handleForAddr(void* addr) nothrow @nogc { Dl_info info = void; if (dladdr(addr, &info) != 0) @@ -926,7 +925,7 @@ struct tls_index size_t ti_offset; } -extern(C) void* __tls_get_addr(tls_index* ti); +extern(C) void* __tls_get_addr(tls_index* ti) nothrow @nogc; /* The dynamic thread vector (DTV) pointers may point 0x8000 past the start of * each TLS block. This is at least true for PowerPC and Mips platforms. @@ -956,7 +955,7 @@ else version(MIPS64) else static assert( false, "Platform not supported." ); -void[] getTLSRange(size_t mod, size_t sz) +void[] getTLSRange(size_t mod, size_t sz) nothrow @nogc { if (mod == 0) return null; diff --git a/src/rt/sections_osx_x86.d b/src/rt/sections_osx_x86.d index dc8a4b7721..94605bc3b7 100644 --- a/src/rt/sections_osx_x86.d +++ b/src/rt/sections_osx_x86.d @@ -79,7 +79,7 @@ __gshared bool _isRuntimeInitialized; /**** * Gets called on program startup just before GC is initialized. */ -void initSections() +void initSections() nothrow @nogc { pthread_key_create(&_tlsKey, null); _dyld_register_func_for_add_image(§ions_osx_onAddImage); @@ -89,19 +89,19 @@ void initSections() /*** * Gets called on program shutdown just after GC is terminated. */ -void finiSections() +void finiSections() nothrow @nogc { _sections._gcRanges.reset(); pthread_key_delete(_tlsKey); _isRuntimeInitialized = false; } -void[]* initTLSRanges() +void[]* initTLSRanges() nothrow @nogc { return &getTLSBlock(); } -void finiTLSRanges(void[]* rng) +void finiTLSRanges(void[]* rng) nothrow @nogc { .free(rng.ptr); .free(rng); @@ -157,7 +157,7 @@ body assert(0); } -ref void[] getTLSBlock() +ref void[] getTLSBlock() nothrow @nogc { auto pary = cast(void[]*)pthread_getspecific(_tlsKey); if (pary is null) diff --git a/src/rt/sections_osx_x86_64.d b/src/rt/sections_osx_x86_64.d index 1bfcef3680..662e537fad 100644 --- a/src/rt/sections_osx_x86_64.d +++ b/src/rt/sections_osx_x86_64.d @@ -78,7 +78,7 @@ __gshared bool _isRuntimeInitialized; /**** * Gets called on program startup just before GC is initialized. */ -void initSections() +void initSections() nothrow @nogc { _dyld_register_func_for_add_image(§ions_osx_onAddImage); _isRuntimeInitialized = true; @@ -87,13 +87,13 @@ void initSections() /*** * Gets called on program shutdown just after GC is terminated. */ -void finiSections() +void finiSections() nothrow @nogc { _sections._gcRanges.reset(); _isRuntimeInitialized = false; } -void[] initTLSRanges() +void[] initTLSRanges() nothrow @nogc { void* start = null; size_t size = 0; @@ -102,7 +102,7 @@ void[] initTLSRanges() return start[0 .. size]; } -void finiTLSRanges(void[] rng) +void finiTLSRanges(void[] rng) nothrow @nogc { } @@ -114,7 +114,7 @@ void scanTLSRanges(void[] rng, scope void delegate(void* pbeg, void* pend) nothr private: -extern(C) void _d_dyld_getTLSRange(void*, void**, size_t*); +extern(C) void _d_dyld_getTLSRange(void*, void**, size_t*) nothrow @nogc; __gshared SectionGroup _sections; ubyte dummyTlsSymbol; diff --git a/src/rt/sections_solaris.d b/src/rt/sections_solaris.d index bf7773de91..ec608db132 100644 --- a/src/rt/sections_solaris.d +++ b/src/rt/sections_solaris.d @@ -56,7 +56,7 @@ private: void[][1] _gcRanges; } -void initSections() +void initSections() nothrow @nogc { auto mbeg = cast(immutable ModuleInfo**)&__start_minfo; auto mend = cast(immutable ModuleInfo**)&__stop_minfo; @@ -67,18 +67,18 @@ void initSections() _sections._gcRanges[0] = pbeg[0 .. pend - pbeg]; } -void finiSections() +void finiSections() nothrow @nogc { } -void[] initTLSRanges() +void[] initTLSRanges() nothrow @nogc { auto pbeg = cast(void*)&_tlsstart; auto pend = cast(void*)&_tlsend; return pbeg[0 .. pend - pbeg]; } -void finiTLSRanges(void[] rng) +void finiTLSRanges(void[] rng) nothrow @nogc { } diff --git a/src/rt/sections_win32.d b/src/rt/sections_win32.d index 526dc4d650..ca6d3d04e3 100644 --- a/src/rt/sections_win32.d +++ b/src/rt/sections_win32.d @@ -50,7 +50,7 @@ private: void[][2] _gcRanges; } -void initSections() +void initSections() nothrow @nogc { _sections._moduleGroup = ModuleGroup(getModuleInfos()); @@ -64,18 +64,18 @@ void initSections() _sections._gcRanges[1] = bssbeg[0 .. bssend - bssbeg]; } -void finiSections() +void finiSections() nothrow @nogc { } -void[] initTLSRanges() +void[] initTLSRanges() nothrow @nogc { auto pbeg = cast(void*)&_tlsstart; auto pend = cast(void*)&_tlsend; return pbeg[0 .. pend - pbeg]; } -void finiTLSRanges(void[] rng) +void finiTLSRanges(void[] rng) nothrow @nogc { } @@ -90,9 +90,9 @@ __gshared SectionGroup _sections; // Windows: this gets initialized by minit.asm extern(C) __gshared immutable(ModuleInfo*)[] _moduleinfo_array; -extern(C) void _minit(); +extern(C) void _minit() nothrow @nogc; -immutable(ModuleInfo*)[] getModuleInfos() +immutable(ModuleInfo*)[] getModuleInfos() nothrow @nogc out (result) { foreach(m; result) diff --git a/src/rt/sections_win64.d b/src/rt/sections_win64.d index 8606581373..834e9048d7 100644 --- a/src/rt/sections_win64.d +++ b/src/rt/sections_win64.d @@ -31,12 +31,12 @@ struct SectionGroup return dg(_sections); } - @property immutable(ModuleInfo*)[] modules() const + @property immutable(ModuleInfo*)[] modules() const nothrow @nogc { return _moduleGroup.modules; } - @property ref inout(ModuleGroup) moduleGroup() inout + @property ref inout(ModuleGroup) moduleGroup() inout nothrow @nogc { return _moduleGroup; } @@ -49,7 +49,7 @@ struct SectionGroup return pbeg[0 .. pend - pbeg]; } - @property inout(void[])[] gcRanges() inout + @property inout(void[])[] gcRanges() inout nothrow @nogc { return _gcRanges[]; } @@ -59,7 +59,7 @@ private: void[][1] _gcRanges; } -void initSections() +void initSections() nothrow @nogc { _sections._moduleGroup = ModuleGroup(getModuleInfos()); @@ -69,19 +69,19 @@ void initSections() cast(ulong)_sections._gcRanges[0].length); } -void finiSections() +void finiSections() nothrow @nogc { .free(cast(void*)_sections.modules.ptr); } -void[] initTLSRanges() +void[] initTLSRanges() nothrow @nogc { auto pbeg = cast(void*)&_tls_start; auto pend = cast(void*)&_tls_end; return pbeg[0 .. pend - pbeg]; } -void finiTLSRanges(void[] rng) +void finiTLSRanges(void[] rng) nothrow @nogc { } @@ -99,7 +99,7 @@ extern(C) extern __gshared void* _minfo_end; } -immutable(ModuleInfo*)[] getModuleInfos() +immutable(ModuleInfo*)[] getModuleInfos() nothrow @nogc out (result) { foreach(m; result) @@ -197,14 +197,14 @@ struct IMAGE_SECTION_HEADER uint Characteristics; } -bool compareSectionName(ref IMAGE_SECTION_HEADER section, string name) nothrow +bool compareSectionName(ref IMAGE_SECTION_HEADER section, string name) nothrow @nogc { if (name[] != section.Name[0 .. name.length]) return false; return name.length == 8 || section.Name[name.length] == 0; } -void[] findImageSection(string name) nothrow +void[] findImageSection(string name) nothrow @nogc { if (name.length > 8) // section name from string table not supported return null; diff --git a/src/rt/tlsgc.d b/src/rt/tlsgc.d index f5eef1e51c..e7e823d6b8 100644 --- a/src/rt/tlsgc.d +++ b/src/rt/tlsgc.d @@ -29,7 +29,7 @@ struct Data * Initialization hook, called FROM each thread. No assumptions about * module initialization state should be made. */ -void* init() +void* init() nothrow @nogc { auto data = cast(Data*).malloc(Data.sizeof); import core.exception; @@ -47,7 +47,7 @@ void* init() * Finalization hook, called FOR each thread. No assumptions about * module initialization state should be made. */ -void destroy(void* data) +void destroy(void* data) nothrow @nogc { // do module specific finalization rt.sections.finiTLSRanges((cast(Data*)data).tlsRanges); From f533e9311bca084119e7b35ca5aa331aecc28228 Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Tue, 27 Dec 2016 23:18:02 +0200 Subject: [PATCH 538/768] Add attributes core.thread part 3 This commit adds attributes to Fiber.callImpl. The call chain looks like this: -> core.thread.Fiber.callImpl -> core.Fiber.switchIn -> core.Thread.pushContext/core.Thread.popContext -> core.thread.swapContext -> depending on the platform: -> rt.deh_win32/deh_win64_posix._d_eh_swapContext (On Windows and sometimes on Posix) -> rt.dwarfeh._d_eh_swapContextDwarf (on Posix) --- src/core/thread.d | 14 +++++++------- src/rt/deh_win32.d | 2 +- src/rt/deh_win64_posix.d | 2 +- src/rt/dwarfeh.d | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index 82e8feb03e..6beb3b034d 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -125,7 +125,7 @@ private * where the stack was last swapped out, or null when a fiber stack * is switched in for the first time. */ - extern(C) void* _d_eh_swapContext(void* newContext) nothrow; + extern(C) void* _d_eh_swapContext(void* newContext) nothrow @nogc; version (DigitalMars) { @@ -133,9 +133,9 @@ private alias _d_eh_swapContext swapContext; else { - extern(C) void* _d_eh_swapContextDwarf(void* newContext) nothrow; + extern(C) void* _d_eh_swapContextDwarf(void* newContext) nothrow @nogc; - void* swapContext(void* newContext) nothrow + void* swapContext(void* newContext) nothrow @nogc { /* Detect at runtime which scheme is being used. * Eventually, determine it statically. @@ -1509,7 +1509,7 @@ private: /////////////////////////////////////////////////////////////////////////// - final void pushContext( Context* c ) nothrow + final void pushContext( Context* c ) nothrow @nogc in { assert( !c.within ); @@ -1522,7 +1522,7 @@ private: } - final void popContext() nothrow + final void popContext() nothrow @nogc in { assert( m_curr && m_curr.within ); @@ -4067,7 +4067,7 @@ class Fiber return rethrow ? call!(Rethrow.yes)() : call!(Rethrow.no); } - private void callImpl() nothrow + private void callImpl() nothrow @nogc in { assert( m_state == State.HOLD ); @@ -4842,7 +4842,7 @@ private: // // Switches into the stack held by this fiber. // - final void switchIn() nothrow + final void switchIn() nothrow @nogc { Thread tobj = Thread.getThis(); void** oldp = &tobj.m_curr.tstack; diff --git a/src/rt/deh_win32.d b/src/rt/deh_win32.d index 31821205d7..6d44847550 100644 --- a/src/rt/deh_win32.d +++ b/src/rt/deh_win32.d @@ -381,7 +381,7 @@ EXCEPTION_RECORD * inflightExceptionList = null; /*********************************** * Switch out inflightExceptionList on fiber context switches. */ -extern(C) void* _d_eh_swapContext(void* newContext) nothrow +extern(C) void* _d_eh_swapContext(void* newContext) nothrow @nogc { auto old = inflightExceptionList; inflightExceptionList = cast(EXCEPTION_RECORD*)newContext; diff --git a/src/rt/deh_win64_posix.d b/src/rt/deh_win64_posix.d index 3109f8d31f..5b17b23137 100644 --- a/src/rt/deh_win64_posix.d +++ b/src/rt/deh_win64_posix.d @@ -98,7 +98,7 @@ private /// __inflight is per-stack, not per-thread, and as such needs to be /// swapped out on fiber context switches. - extern(C) void* _d_eh_swapContext(void* newContext) nothrow + extern(C) void* _d_eh_swapContext(void* newContext) nothrow @nogc { auto old = __inflight; __inflight = cast(InFlight*)newContext; diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d index 18d60b2e00..e650fb35ae 100644 --- a/src/rt/dwarfeh.d +++ b/src/rt/dwarfeh.d @@ -157,7 +157,7 @@ extern(C) Throwable __dmd_begin_catch(_Unwind_Exception* exceptionObject) * Returns: * previous value of stack */ -extern(C) void* _d_eh_swapContextDwarf(void* newContext) nothrow +extern(C) void* _d_eh_swapContextDwarf(void* newContext) nothrow @nogc { auto old = ExceptionHeader.stack; ExceptionHeader.stack = cast(ExceptionHeader*)newContext; From 32e87ef3e5789a94878714ecf6d18b30702a2435 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Fri, 25 Nov 2016 17:07:36 -0300 Subject: [PATCH 539/768] linux/time: Add timer manipulation macros --- mak/COPY | 1 + src/core/sys/linux/sys/time.d | 68 +++++++++++++++++++++++++++++++++++ src/core/sys/posix/sys/time.d | 2 ++ win32.mak | 3 ++ win64.mak | 3 ++ 5 files changed, 77 insertions(+) create mode 100644 src/core/sys/linux/sys/time.d diff --git a/mak/COPY b/mak/COPY index 58ed65e7b1..1f5c947642 100644 --- a/mak/COPY +++ b/mak/COPY @@ -99,6 +99,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\sys\socket.d \ $(IMPDIR)\core\sys\linux\sys\sysinfo.d \ $(IMPDIR)\core\sys\linux\sys\xattr.d \ + $(IMPDIR)\core\sys\linux\sys\time.d \ \ $(IMPDIR)\core\sys\openbsd\dlfcn.d \ \ diff --git a/src/core/sys/linux/sys/time.d b/src/core/sys/linux/sys/time.d new file mode 100644 index 0000000000..cc13442102 --- /dev/null +++ b/src/core/sys/linux/sys/time.d @@ -0,0 +1,68 @@ +/** + * D header file for POSIX. + * + * Copyright: Copyright Sociomantic Labs GmbH. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Leandro Lucarella + */ + +/* Copyright Sociomantic Labs GmbH. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.linux.sys.time; + +private import core.sys.linux.config; +public import core.sys.posix.sys.time; // timeval + +version (linux): + +/* macros provided to operate on timeval structures + * they are extern(D) because they are not really C symbols, just macros + */ +extern (D) pure @safe @nogc nothrow { + + void timeradd(const timeval* a, const timeval* b, + timeval* result) + { + result.tv_sec = a.tv_sec + b.tv_sec; + result.tv_usec = a.tv_usec + b.tv_usec; + if (result.tv_usec >= 1_000_000) + { + ++result.tv_sec; + result.tv_usec -= 1_000_000; + } + } + + void timersub(const timeval* a, const timeval* b, + timeval *result) + { + result.tv_sec = a.tv_sec - b.tv_sec; + result.tv_usec = a.tv_usec - b.tv_usec; + if (result.tv_usec < 0) { + --result.tv_sec; + result.tv_usec += 1_000_000; + } + } + + void timerclear(timeval* tvp) + { + (tvp.tv_sec = tvp.tv_usec = 0); + } + + int timerisset(timeval* tvp) + { + return cast(int) (tvp.tv_sec || tvp.tv_usec); + } + + int timercmp(string CMP)(const timeval* a, const timeval* b) + { + return cast(int) + mixin("((a.tv_sec == b.tv_sec) ?" ~ + "(a.tv_usec" ~ CMP ~ "b.tv_usec) :" ~ + "(a.tv_sec" ~ CMP ~ "b.tv_sec))"); + } + +} + diff --git a/src/core/sys/posix/sys/time.d b/src/core/sys/posix/sys/time.d index 06a66b7254..b3bb1d98f7 100644 --- a/src/core/sys/posix/sys/time.d +++ b/src/core/sys/posix/sys/time.d @@ -27,6 +27,8 @@ else version (TVOS) else version (WatchOS) version = Darwin; +version (linux) public import core.sys.linux.sys.time; + version (Posix): extern (C) nothrow @nogc: diff --git a/win32.mak b/win32.mak index 109a44adc8..0dc7ac5aaa 100644 --- a/win32.mak +++ b/win32.mak @@ -485,6 +485,9 @@ $(IMPDIR)\core\sys\linux\sys\sysinfo.d : src\core\sys\linux\sys\sysinfo.d $(IMPDIR)\core\sys\linux\sys\xattr.d : src\core\sys\linux\sys\xattr.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\time.d : src\core\sys\linux\sys\time.d + copy $** $@ + $(IMPDIR)\core\sys\openbsd\dlfcn.d : src\core\sys\openbsd\dlfcn.d copy $** $@ diff --git a/win64.mak b/win64.mak index ddded63a08..d58a64dafc 100644 --- a/win64.mak +++ b/win64.mak @@ -493,6 +493,9 @@ $(IMPDIR)\core\sys\linux\sys\sysinfo.d : src\core\sys\linux\sys\sysinfo.d $(IMPDIR)\core\sys\linux\sys\xattr.d : src\core\sys\linux\sys\xattr.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\time.d : src\core\sys\linux\sys\time.d + copy $** $@ + $(IMPDIR)\core\sys\openbsd\dlfcn.d : src\core\sys\openbsd\dlfcn.d copy $** $@ From 848338cb6574a6ded28f101b6f7639120603d938 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 30 Dec 2016 16:14:08 +0100 Subject: [PATCH 540/768] add comment why this was written in such a way --- src/object.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/object.d b/src/object.d index 207761020d..7ace18f4b1 100644 --- a/src/object.d +++ b/src/object.d @@ -3139,6 +3139,8 @@ bool _ArrayEq(T1, T2)(T1[] a1, T2[] a2) if (a1.length != a2.length) return false; + // This is function is used as a compiler intrinsic and explicitly written + // in a lowered flavor to use as few CTFE instructions as possible. auto idx = 0; auto length = a1.length; From 7d1a4e35f85d4da957a9a0877689acda94bc56da Mon Sep 17 00:00:00 2001 From: Arun Chandrasekaran Date: Fri, 30 Dec 2016 13:15:07 -0800 Subject: [PATCH 541/768] linux/prctl: Added support for prctl. --- src/core/sys/linux/sys/prctl.d | 145 +++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 src/core/sys/linux/sys/prctl.d diff --git a/src/core/sys/linux/sys/prctl.d b/src/core/sys/linux/sys/prctl.d new file mode 100644 index 0000000000..2c81ec2519 --- /dev/null +++ b/src/core/sys/linux/sys/prctl.d @@ -0,0 +1,145 @@ +/** + * D header file for GNU/Linux. + * + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Authors: Arun Chandrasekaran + */ +module core.sys.linux.sys.prctl; + +version (linux): +extern (C): +@system: +nothrow: + +enum: uint +{ + PR_SET_PDEATHSIG = 1, + PR_GET_PDEATHSIG = 2, + + PR_GET_DUMPABLE = 3, + PR_SET_DUMPABLE = 4, + + PR_GET_UNALIGN = 5, + PR_SET_UNALIGN = 6, + + PR_UNALIGN_NOPRINT = 1, + PR_UNALIGN_SIGBUS = 2, + + PR_GET_KEEPCAPS = 7, + PR_SET_KEEPCAPS = 8, + + PR_GET_FPEMU = 9, + PR_SET_FPEMU = 10, + PR_FPEMU_NOPRINT = 1, + PR_FPEMU_SIGFPE = 2, + + PR_GET_FPEXC = 11, + PR_SET_FPEXC = 12, + PR_FP_EXC_SW_ENABLE = 0x80, + PR_FP_EXC_DIV = 0x010000, + PR_FP_EXC_OVF = 0x020000, + PR_FP_EXC_UND = 0x040000, + PR_FP_EXC_RES = 0x080000, + PR_FP_EXC_INV = 0x100000, + PR_FP_EXC_DISABLED = 0, + PR_FP_EXC_NONRECOV = 1, + PR_FP_EXC_ASYNC = 2, + PR_FP_EXC_PRECISE = 3, + + PR_GET_TIMING = 13, + PR_SET_TIMING = 14, + PR_TIMING_STATISTICAL = 0, + PR_TIMING_TIMESTAMP = 1, + + PR_SET_NAME = 15, + PR_GET_NAME = 16, + + PR_GET_ENDIAN = 19, + PR_SET_ENDIAN = 20, + PR_ENDIAN_BIG = 0, + PR_ENDIAN_LITTLE = 1, + PR_ENDIAN_PPC_LITTLE = 2, + + PR_GET_SECCOMP = 21, + PR_SET_SECCOMP = 22, + + PR_CAPBSET_READ = 23, + PR_CAPBSET_DROP = 24, + + PR_GET_TSC = 25, + PR_SET_TSC = 26, + PR_TSC_ENABLE = 1, + PR_TSC_SIGSEGV = 2, + + PR_GET_SECUREBITS = 27, + PR_SET_SECUREBITS = 28, + + + PR_SET_TIMERSLACK = 29, + PR_GET_TIMERSLACK = 30, + + PR_TASK_PERF_EVENTS_DISABLE = 31, + PR_TASK_PERF_EVENTS_ENABLE = 32, + + + PR_MCE_KILL = 33, + PR_MCE_KILL_CLEAR = 0, + PR_MCE_KILL_SET = 1, + + PR_MCE_KILL_LATE = 0, + PR_MCE_KILL_EARLY = 1, + PR_MCE_KILL_DEFAULT = 2, + + PR_MCE_KILL_GET = 34, + + PR_SET_MM = 35, + PR_SET_MM_START_CODE = 1, + PR_SET_MM_END_CODE = 2, + PR_SET_MM_START_DATA = 3, + PR_SET_MM_END_DATA = 4, + PR_SET_MM_START_STACK = 5, + PR_SET_MM_START_BRK = 6, + PR_SET_MM_BRK = 7, + PR_SET_MM_ARG_START = 8, + PR_SET_MM_ARG_END = 9, + PR_SET_MM_ENV_START = 10, + PR_SET_MM_ENV_END = 11, + PR_SET_MM_AUXV = 12, + PR_SET_MM_EXE_FILE = 13, + PR_SET_MM_MAP = 14, + PR_SET_MM_MAP_SIZE = 15, + + PR_SET_PTRACER = 0x59616d61, + PR_SET_PTRACER_ANY = (cast (uint)-1), + + PR_SET_CHILD_SUBREAPER = 36, + PR_GET_CHILD_SUBREAPER = 37, + + PR_SET_NO_NEW_PRIVS = 38, + PR_GET_NO_NEW_PRIVS = 39, + + PR_GET_TID_ADDRESS = 40, + + PR_SET_THP_DISABLE = 41, + PR_GET_THP_DISABLE = 42, +} + +struct prctl_mm_map +{ + ulong start_code; + ulong end_code; + ulong start_data; + ulong end_data; + ulong start_brk; + ulong brk; + ulong start_stack; + ulong arg_start; + ulong arg_end; + ulong env_start; + ulong env_end; + ulong* auxv; + uint auxv_size; + uint exe_fd; +}; + +int prctl(int option, ...); From ff3c291e90d4f1a8083ccf5818f85be8dd2e439b Mon Sep 17 00:00:00 2001 From: Arun Chandrasekaran Date: Fri, 30 Dec 2016 13:31:07 -0800 Subject: [PATCH 542/768] linux/prctl: Updated makefiles. --- mak/COPY | 1 + win32.mak | 3 +++ win64.mak | 3 +++ 3 files changed, 7 insertions(+) diff --git a/mak/COPY b/mak/COPY index 995763e0d4..ab914e078f 100644 --- a/mak/COPY +++ b/mak/COPY @@ -103,6 +103,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\sys\sysinfo.d \ $(IMPDIR)\core\sys\linux\sys\xattr.d \ $(IMPDIR)\core\sys\linux\sys\time.d \ + $(IMPDIR)\core\sys\linux\sys\prctl.d \ \ $(IMPDIR)\core\sys\openbsd\dlfcn.d \ \ diff --git a/win32.mak b/win32.mak index e4645f7794..f4ee566ed2 100644 --- a/win32.mak +++ b/win32.mak @@ -476,6 +476,9 @@ $(IMPDIR)\core\sys\linux\sys\auxv.d : src\core\sys\linux\sys\auxv.d $(IMPDIR)\core\sys\linux\sys\inotify.d : src\core\sys\linux\sys\inotify.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\prctl.d : src\core\sys\linux\sys\prctl.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\mman.d : src\core\sys\linux\sys\mman.d copy $** $@ diff --git a/win64.mak b/win64.mak index 947db6a5ec..fea4d5d475 100644 --- a/win64.mak +++ b/win64.mak @@ -484,6 +484,9 @@ $(IMPDIR)\core\sys\linux\sys\auxv.d : src\core\sys\linux\sys\auxv.d $(IMPDIR)\core\sys\linux\sys\inotify.d : src\core\sys\linux\sys\inotify.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\prctl.d : src\core\sys\linux\sys\prctl.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\mman.d : src\core\sys\linux\sys\mman.d copy $** $@ From 9ae8d826cb7ac826832a5f3d0185ff51226d7cba Mon Sep 17 00:00:00 2001 From: Arun Chandrasekaran Date: Fri, 30 Dec 2016 14:44:17 -0800 Subject: [PATCH 543/768] linux/prctl: Updated review comments. --- src/core/sys/linux/sys/prctl.d | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/core/sys/linux/sys/prctl.d b/src/core/sys/linux/sys/prctl.d index 2c81ec2519..a5a4807f17 100644 --- a/src/core/sys/linux/sys/prctl.d +++ b/src/core/sys/linux/sys/prctl.d @@ -9,6 +9,7 @@ module core.sys.linux.sys.prctl; version (linux): extern (C): @system: +@nogc: nothrow: enum: uint @@ -142,4 +143,20 @@ struct prctl_mm_map uint exe_fd; }; -int prctl(int option, ...); +int prctl(int option, size_t arg2, size_t arg3, size_t arg4, size_t arg5); + +// +// Example usage to set and get the task name. +// +// byte[16] oldname = cast(byte[]) "1234567890123456"; +// oldname[oldname.length-1] = 0; +// prctl(PR_SET_NAME, cast(size_t) oldname.ptr, cast(size_t) null, cast(size_t) null, cast(size_t) null); +// byte[16] newname; +// prctl(PR_GET_NAME, cast(size_t) newname.ptr, cast(size_t) null, cast(size_t) null, cast(size_t) null); +// int i; +// foreach (b; newname) +// { +// assert(b == oldname[i]); +// i++; +// } +// writeln(cast(string) newname); From c3415f3e6264eadffcb0eeae94c6b08ea41875ec Mon Sep 17 00:00:00 2001 From: sprinkle131313 Date: Sun, 1 Jan 2017 02:22:34 -0500 Subject: [PATCH 544/768] Fix style in object.d file. --- src/object.d | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/object.d b/src/object.d index cac7e4b3cd..da5bde6e2d 100644 --- a/src/object.d +++ b/src/object.d @@ -1005,14 +1005,17 @@ class TypeInfo_Class : TypeInfo { foreach (m; ModuleInfo) { - if (m) - //writefln("module %s, %d", m.name, m.localClasses.length); - foreach (c; m.localClasses) + if (m) { - if (c is null) continue; - //writefln("\tclass %s", c.name); - if (c.name == classname) - return c; + //writefln("module %s, %d", m.name, m.localClasses.length); + foreach (c; m.localClasses) + { + if (c is null) + continue; + //writefln("\tclass %s", c.name); + if (c.name == classname) + return c; + } } } return null; From e043226a6fae804c97c825288fbb20d55dda171a Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Fri, 6 Jan 2017 20:44:46 +0100 Subject: [PATCH 545/768] Turn the SECURITY_ enum into a uint. It's always being used in bitwise operations anyway and the initializers for it were integers. --- src/core/sys/windows/winerror.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/windows/winerror.d b/src/core/sys/windows/winerror.d index 1f9a5e5af3..71a2f98dac 100644 --- a/src/core/sys/windows/winerror.d +++ b/src/core/sys/windows/winerror.d @@ -2226,7 +2226,7 @@ enum : HRESULT { } -enum : bool { +enum : uint { SEVERITY_SUCCESS = 0, SEVERITY_ERROR = 1 } From 9c80299fd88d2549440140aa0dddd90529384fc5 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 8 Jan 2017 19:58:19 -0800 Subject: [PATCH 546/768] compile with -dip1000 --- posix.mak | 2 +- win32.mak | 4 ++-- win64.mak | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/posix.mak b/posix.mak index befd52c9b4..ec31bb0d5e 100644 --- a/posix.mak +++ b/posix.mak @@ -53,7 +53,7 @@ ifeq (solaris,$(OS)) endif # Set DFLAGS -UDFLAGS:=-conf= -Isrc -Iimport -w -dip25 $(MODEL_FLAG) $(OPTIONAL_PIC) $(OPTIONAL_COVERAGE) +UDFLAGS:=-conf= -Isrc -Iimport -w -dip1000 $(MODEL_FLAG) $(OPTIONAL_PIC) $(OPTIONAL_COVERAGE) ifeq ($(BUILD),debug) UDFLAGS += -g -debug DFLAGS:=$(UDFLAGS) diff --git a/win32.mak b/win32.mak index f4ee566ed2..0be6b86a86 100644 --- a/win32.mak +++ b/win32.mak @@ -9,8 +9,8 @@ CC=dmc DOCDIR=doc IMPDIR=import -DFLAGS=-m$(MODEL) -conf= -O -release -dip25 -inline -w -Isrc -Iimport -UDFLAGS=-m$(MODEL) -conf= -O -release -dip25 -w -Isrc -Iimport +DFLAGS=-m$(MODEL) -conf= -O -release -dip1000 -inline -w -Isrc -Iimport +UDFLAGS=-m$(MODEL) -conf= -O -release -dip1000 -w -Isrc -Iimport DDOCFLAGS=-conf= -c -w -o- -Isrc -Iimport -version=CoreDdoc CFLAGS= diff --git a/win64.mak b/win64.mak index fea4d5d475..5252deb178 100644 --- a/win64.mak +++ b/win64.mak @@ -17,8 +17,8 @@ IMPDIR=import MAKE=make -DFLAGS=-m$(MODEL) -conf= -O -release -dip25 -inline -w -Isrc -Iimport -UDFLAGS=-m$(MODEL) -conf= -O -release -dip25 -w -Isrc -Iimport +DFLAGS=-m$(MODEL) -conf= -O -release -dip1000 -inline -w -Isrc -Iimport +UDFLAGS=-m$(MODEL) -conf= -O -release -dip1000 -w -Isrc -Iimport DDOCFLAGS=-conf= -c -w -o- -Isrc -Iimport -version=CoreDdoc #CFLAGS=/O2 /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include From d4f4560902d57aed1fa29644728a675a50ecbba6 Mon Sep 17 00:00:00 2001 From: Alexandru Razvan Caciulescu Date: Fri, 13 Jan 2017 14:38:11 +0200 Subject: [PATCH 547/768] Fix 17081 - Bodies in extern cpp functions in D files are not linked --- src/core/stdcpp/typeinfo.d | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/core/stdcpp/typeinfo.d b/src/core/stdcpp/typeinfo.d index a535dbf802..9d0341b5e6 100644 --- a/src/core/stdcpp/typeinfo.d +++ b/src/core/stdcpp/typeinfo.d @@ -117,8 +117,15 @@ else version (CRuntime_Glibc) { void dtor1(); // consume destructor slot in vtbl[] void dtor2(); // consume destructor slot in vtbl[] - final const(char)* name(); - final bool before(const type_info) const; + final const(char)* name()() const nothrow { + return _name[0] == '*' ? _name + 1 : _name; + } + final bool before()(const type_info _arg) const { + import core.stdc.string : strcmp; + return (_name[0] == '*' && _arg._name[0] == '*') + ? _name < _arg._name + : strcmp(_name, _arg._name) < 0; + } //bool operator==(const type_info) const; bool __is_pointer_p() const; bool __is_function_p() const; From 8dc386e1027f5620e6525bbd920f95ec25514387 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sat, 14 Jan 2017 00:23:44 +0100 Subject: [PATCH 548/768] Always use same-type pointers when subtracting them --- src/gc/impl/conservative/gc.d | 16 ++++++++-------- src/gc/pooltable.d | 6 +++--- src/rt/lifetime.d | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index a1f894dbc1..d0b969106f 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -1974,7 +1974,7 @@ struct Gcx //printf("marking range: [%p..%p] (%#zx)\n", p1, p2, cast(size_t)p2 - cast(size_t)p1); Lnext: for (; p1 < p2; p1++) { - auto p = cast(byte *)(*p1); + auto p = *p1; //if (log) debug(PRINTF) printf("\tmark %p\n", p); if (p >= minAddr && p < maxAddr) @@ -2124,7 +2124,7 @@ struct Gcx { pool = list.pool; assert(pool); - pool.freebits.set(cast(size_t)(cast(byte*)list - pool.baseAddr) / 16); + pool.freebits.set(cast(size_t)(cast(void*)list - pool.baseAddr) / 16); } } @@ -2190,7 +2190,7 @@ struct Gcx if (!pool.mark.test(biti)) { - byte *p = pool.baseAddr + pn * PAGESIZE; + void *p = pool.baseAddr + pn * PAGESIZE; void* q = sentinel_add(p); sentinel_Invariant(q); @@ -2242,8 +2242,8 @@ struct Gcx if (bin < B_PAGE) { immutable size = binsize[bin]; - byte *p = pool.baseAddr + pn * PAGESIZE; - byte *ptop = p + PAGESIZE; + void *p = pool.baseAddr + pn * PAGESIZE; + void *ptop = p + PAGESIZE; immutable base = pn * (PAGESIZE/16); immutable bitstride = size / 16; @@ -2318,7 +2318,7 @@ struct Gcx size_t bitstride = size / 16; size_t bitbase = pn * (PAGESIZE / 16); size_t bittop = bitbase + (PAGESIZE / 16); - byte* p; + void* p; biti = bitbase; for (biti = bitbase; biti < bittop; biti += bitstride) @@ -2599,8 +2599,8 @@ struct Gcx struct Pool { - byte* baseAddr; - byte* topAddr; + void* baseAddr; + void* topAddr; GCBits mark; // entries already scanned, or should not be scanned GCBits freebits; // entries that are on the free list GCBits finals; // entries that need finalizer run on them diff --git a/src/gc/pooltable.d b/src/gc/pooltable.d index da2796dc98..75cf7a8fcd 100644 --- a/src/gc/pooltable.d +++ b/src/gc/pooltable.d @@ -155,13 +155,13 @@ nothrow: assert(_maxAddr == pools[npools - 1].topAddr); } - @property const(byte)* minAddr() pure const { return _minAddr; } - @property const(byte)* maxAddr() pure const { return _maxAddr; } + @property const(void)* minAddr() pure const { return _minAddr; } + @property const(void)* maxAddr() pure const { return _maxAddr; } package: Pool** pools; size_t npools; - byte* _minAddr, _maxAddr; + void* _minAddr, _maxAddr; } unittest diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index 87f0e8dab8..03df8d31a4 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -1908,7 +1908,7 @@ byte[] _d_arrayappendcTX(const TypeInfo ti, ref byte[] px, size_t n) size_t newcap = void; // for scratch space // calculate the extent of the array given the base. - size_t offset = px.ptr - __arrayStart(info); + size_t offset = cast(void*)px.ptr - __arrayStart(info); if(info.base && (info.attr & BlkAttr.APPENDABLE)) { if(info.size >= PAGESIZE) From 55471a9330c1fb7bb808c0f597ae5299dc7de8fb Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Wed, 11 Jan 2017 14:32:00 +0000 Subject: [PATCH 549/768] Revert "Qualify C-style memory allocations functions as pure" This reverts commit 65d9a071b244611ca3973d79c8e64388af5c5439. --- src/core/stdc/stdlib.d | 11 ++++++----- src/core/sys/posix/stdlib.d | 12 ++++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/core/stdc/stdlib.d b/src/core/stdc/stdlib.d index 6fe432aace..86cbafb5ed 100644 --- a/src/core/stdc/stdlib.d +++ b/src/core/stdc/stdlib.d @@ -157,11 +157,11 @@ else // functions using these already have to be @trusted, allowing them to // call @system stuff anyway. /// -void* malloc(size_t size) pure; +void* malloc(size_t size); /// -void* calloc(size_t nmemb, size_t size) pure; +void* calloc(size_t nmemb, size_t size); /// -void* realloc(void* ptr, size_t size) pure; +void* realloc(void* ptr, size_t size); /// void free(void* ptr); @@ -212,11 +212,11 @@ size_t wcstombs(char* s, in wchar_t* pwcs, size_t n); version( DigitalMars ) { // See malloc comment about @trusted. - void* alloca(size_t size) pure; // non-standard + void* alloca(size_t size); // non-standard } else version( GNU ) { - void* alloca(size_t size) pure; // compiler intrinsic + void* alloca(size_t size); // compiler intrinsic } version( CRuntime_Microsoft ) @@ -231,3 +231,4 @@ version( CRuntime_Microsoft ) /// long _wcstoi64(in wchar *,wchar **,int); } + diff --git a/src/core/sys/posix/stdlib.d b/src/core/sys/posix/stdlib.d index c9450a8412..4afd346d46 100644 --- a/src/core/sys/posix/stdlib.d +++ b/src/core/sys/posix/stdlib.d @@ -122,42 +122,42 @@ version( CRuntime_Glibc ) int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t) pure; // LEGACY non-standard + void* valloc(size_t); // LEGACY non-standard } else version( Darwin ) { int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t) pure; // LEGACY non-standard + void* valloc(size_t); // LEGACY non-standard } else version( FreeBSD ) { int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t) pure; // LEGACY non-standard + void* valloc(size_t); // LEGACY non-standard } else version( OpenBSD ) { int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t) pure; // LEGACY non-standard + void* valloc(size_t); // LEGACY non-standard } else version( CRuntime_Bionic ) { int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t) pure; + void* valloc(size_t); } else version( Solaris ) { int setenv(in char*, in char*, int); int unsetenv(in char*); - void* valloc(size_t) pure; // LEGACY non-standard + void* valloc(size_t); // LEGACY non-standard } // From 64170f235abc33846f529c1907165ef8cd21d8e3 Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Sat, 14 Jan 2017 16:24:42 -0500 Subject: [PATCH 550/768] Added pure back to alloca --- src/core/stdc/stdlib.d | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/core/stdc/stdlib.d b/src/core/stdc/stdlib.d index 86cbafb5ed..9348c7d107 100644 --- a/src/core/stdc/stdlib.d +++ b/src/core/stdc/stdlib.d @@ -212,11 +212,11 @@ size_t wcstombs(char* s, in wchar_t* pwcs, size_t n); version( DigitalMars ) { // See malloc comment about @trusted. - void* alloca(size_t size); // non-standard + void* alloca(size_t size) pure; // non-standard } else version( GNU ) { - void* alloca(size_t size); // compiler intrinsic + void* alloca(size_t size) pure; // compiler intrinsic } version( CRuntime_Microsoft ) @@ -231,4 +231,3 @@ version( CRuntime_Microsoft ) /// long _wcstoi64(in wchar *,wchar **,int); } - From 3bdd684d5664573ec95fdea3366f561bdd5f2de5 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 6 Nov 2016 10:52:02 +0100 Subject: [PATCH 551/768] do not enforce specific MS C runtime --- src/rt/monitor_.d | 5 ----- win64.mak | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/rt/monitor_.d b/src/rt/monitor_.d index f73e32137b..be0672e255 100644 --- a/src/rt/monitor_.d +++ b/src/rt/monitor_.d @@ -155,11 +155,6 @@ version (Windows) { pragma(lib, "snn.lib"); } - else version (CRuntime_Microsoft) - { - pragma(lib, "libcmt.lib"); - pragma(lib, "oldnames.lib"); - } import core.sys.windows.windows; alias Mutex = CRITICAL_SECTION; diff --git a/win64.mak b/win64.mak index fea4d5d475..95e141144a 100644 --- a/win64.mak +++ b/win64.mak @@ -22,7 +22,7 @@ UDFLAGS=-m$(MODEL) -conf= -O -release -dip25 -w -Isrc -Iimport DDOCFLAGS=-conf= -c -w -o- -Isrc -Iimport -version=CoreDdoc #CFLAGS=/O2 /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include -CFLAGS=/Z7 /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include +CFLAGS=/Z7 /Zl /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include DRUNTIME_BASE=druntime$(MODEL) DRUNTIME=lib\$(DRUNTIME_BASE).lib From 3251f097606d4b34a6b9716d8525d3fd03a0fd93 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Wed, 9 Nov 2016 22:32:15 +0100 Subject: [PATCH 552/768] move new switch into separate line to not cause merge conflict with the auto tester --- win64.mak | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/win64.mak b/win64.mak index 95e141144a..89f28a4941 100644 --- a/win64.mak +++ b/win64.mak @@ -22,12 +22,15 @@ UDFLAGS=-m$(MODEL) -conf= -O -release -dip25 -w -Isrc -Iimport DDOCFLAGS=-conf= -c -w -o- -Isrc -Iimport -version=CoreDdoc #CFLAGS=/O2 /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include -CFLAGS=/Z7 /Zl /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include +CFLAGS=/Z7 /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include DRUNTIME_BASE=druntime$(MODEL) DRUNTIME=lib\$(DRUNTIME_BASE).lib GCSTUB=lib\gcstub$(MODEL).obj +# do not preselect a C runtime (extracted from the line above to make the auto tester happy) +CFLAGS=$(CFLAGS) /Zl + DOCFMT= target : import copydir copy $(DRUNTIME) $(GCSTUB) From afbadc1982c240d8e7bdb2c03411c6de2ef90ca3 Mon Sep 17 00:00:00 2001 From: Dicebot Date: Mon, 16 Jan 2017 13:03:56 +0000 Subject: [PATCH 553/768] Add missing const to iconv bindings --- src/core/sys/posix/iconv.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/posix/iconv.d b/src/core/sys/posix/iconv.d index 816f64632b..792778cd6e 100644 --- a/src/core/sys/posix/iconv.d +++ b/src/core/sys/posix/iconv.d @@ -35,7 +35,7 @@ iconv_t iconv_open (in char* tocode, in char* fromcode); /// Convert at most *INBYTESLEFT bytes from *INBUF according to the /// code conversion algorithm specified by CD and place up to /// *OUTBYTESLEFT bytes in buffer at *OUTBUF. -size_t iconv (iconv_t cd, char** inbuf, +size_t iconv (iconv_t cd, in char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft); From 3e63b54a495a0e8034ec4d57f88047d399a66604 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 16 Jan 2017 02:39:46 -0800 Subject: [PATCH 554/768] string.d: add return and scope --- src/core/stdc/string.d | 58 +++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/core/stdc/string.d b/src/core/stdc/string.d index abec39b449..103076de54 100644 --- a/src/core/stdc/string.d +++ b/src/core/stdc/string.d @@ -29,80 +29,80 @@ nothrow: @nogc: /// -pure void* memchr(in void* s, int c, size_t n); +pure void* memchr(return const void* s, int c, size_t n); /// -pure int memcmp(in void* s1, in void* s2, size_t n); +pure int memcmp(scope const void* s1, scope const void* s2, size_t n); /// -pure void* memcpy(void* s1, in void* s2, size_t n); +pure void* memcpy(return void* s1, scope const void* s2, size_t n); version (Windows) { /// - int memicmp(in char* s1, in char* s2, size_t n); + int memicmp(scope const char* s1, scope const char* s2, size_t n); } /// -pure void* memmove(void* s1, in void* s2, size_t n); +pure void* memmove(return void* s1, scope const void* s2, size_t n); /// -pure void* memset(void* s, int c, size_t n); +pure void* memset(return void* s, int c, size_t n); /// -pure char* strcpy(char* s1, in char* s2); +pure char* strcpy(return char* s1, scope const char* s2); /// -pure char* strncpy(char* s1, in char* s2, size_t n); +pure char* strncpy(return char* s1, scope const char* s2, size_t n); /// -pure char* strcat(char* s1, in char* s2); +pure char* strcat(return char* s1, scope const char* s2); /// -pure char* strncat(char* s1, in char* s2, size_t n); +pure char* strncat(return char* s1, scope const char* s2, size_t n); /// -pure int strcmp(in char* s1, in char* s2); +pure int strcmp(scope const char* s1, scope const char* s2); /// -int strcoll(in char* s1, in char* s2); +int strcoll(scope const char* s1, scope const char* s2); /// -pure int strncmp(in char* s1, in char* s2, size_t n); +pure int strncmp(scope const char* s1, scope const char* s2, size_t n); /// -size_t strxfrm(char* s1, in char* s2, size_t n); +size_t strxfrm(scope char* s1, scope const char* s2, size_t n); /// -pure char* strchr(in char* s, int c); +pure inout(char)* strchr(return inout(char)* s, int c); /// -pure size_t strcspn(in char* s1, in char* s2); +pure size_t strcspn(scope const char* s1, scope const char* s2); /// -pure char* strpbrk(in char* s1, in char* s2); +pure inout(char)* strpbrk(return inout(char)* s1, scope const char* s2); /// -pure char* strrchr(in char* s, int c); +pure inout(char)* strrchr(return inout(char)* s, int c); /// -pure size_t strspn(in char* s1, in char* s2); +pure size_t strspn(scope const char* s1, scope const char* s2); /// -pure char* strstr(in char* s1, in char* s2); +pure inout(char)* strstr(return inout(char)* s1, scope const char* s2); /// -char* strtok(char* s1, in char* s2); +char* strtok(return char* s1, scope const char* s2); /// char* strerror(int errnum); version (CRuntime_Glibc) { /// - const(char)* strerror_r(int errnum, char* buf, size_t buflen); + const(char)* strerror_r(int errnum, return char* buf, size_t buflen); } else version (Darwin) { - int strerror_r(int errnum, char* buf, size_t buflen); + int strerror_r(int errnum, scope char* buf, size_t buflen); } else version (FreeBSD) { - int strerror_r(int errnum, char* buf, size_t buflen); + int strerror_r(int errnum, scope char* buf, size_t buflen); } else version (OpenBSD) { - int strerror_r(int errnum, char* buf, size_t buflen); + int strerror_r(int errnum, scope char* buf, size_t buflen); } else version (Solaris) { - int strerror_r(int errnum, char* buf, size_t buflen); + int strerror_r(int errnum, scope char* buf, size_t buflen); } else version (CRuntime_Bionic) { /// - int strerror_r(int errnum, char* buf, size_t buflen); + int strerror_r(int errnum, scope char* buf, size_t buflen); } /// -pure size_t strlen(in char* s); +pure size_t strlen(scope const char* s); /// -char* strdup(in char *s); +char* strdup(scope const char *s); From 94eeda692278d16e4a89a7118ce7c4a19e50d578 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 21 Jan 2017 18:29:07 -0800 Subject: [PATCH 555/768] core.stdc.stdio: annotate with 'scope' --- src/core/stdc/stdio.d | 150 +++++++++++++++++++++--------------------- 1 file changed, 75 insertions(+), 75 deletions(-) diff --git a/src/core/stdc/stdio.d b/src/core/stdc/stdio.d index d8e2c7a04d..532fc3a2d5 100644 --- a/src/core/stdc/stdio.d +++ b/src/core/stdc/stdio.d @@ -452,10 +452,10 @@ else version( OpenBSD ) int _lbfsize; void* _cookie; - int function(void*) _close; - int function(void*, char*, int) _read; - fpos_t function(void*, fpos_t, int) _seek; - int function(void*, in char*, int) _write; + int function(void*) _close; + int function(void*, scope char*, int) _read; + fpos_t function(void*, fpos_t, int) _seek; + int function(void*, scope const char*, int) _write; __sbuf _ext; ubyte* _up; @@ -538,10 +538,10 @@ else version( CRuntime_Bionic ) int _lbfsize; void* _cookie; - int function(void*) _close; - int function(void*, char*, int) _read; - fpos_t function(void*, fpos_t, int) _seek; - int function(void*, in char*, int) _write; + int function(void*) _close; + int function(void*, scope char*, int) _read; + fpos_t function(void*, fpos_t, int) _seek; + int function(void*, scope const char*, int) _write; __sbuf _ext; ubyte* _up; @@ -822,9 +822,9 @@ else } /// -int remove(in char* filename); +int remove(scope const char* filename); /// -int rename(in char* from, in char* to); +int rename(scope const char* from, scope const char* to); /// @trusted FILE* tmpfile(); // No unsafe pointer manipulation. @@ -842,9 +842,9 @@ int fclose(FILE* stream); } /// -FILE* fopen(in char* filename, in char* mode); +FILE* fopen(scope const char* filename, scope const char* mode); /// -FILE* freopen(in char* filename, in char* mode, FILE* stream); +FILE* freopen(scope const char* filename, scope const char* mode, FILE* stream); /// void setbuf(FILE* stream, char* buf); @@ -856,91 +856,91 @@ version (MinGW) // Prefer the MinGW versions over the MSVC ones, as the latter don't handle // reals at all. /// - int __mingw_fprintf(FILE* stream, in char* format, ...); + int __mingw_fprintf(FILE* stream, scope const char* format, ...); /// alias __mingw_fprintf fprintf; /// - int __mingw_fscanf(FILE* stream, in char* format, ...); + int __mingw_fscanf(FILE* stream, scope const char* format, ...); /// alias __mingw_fscanf fscanf; /// - int __mingw_sprintf(char* s, in char* format, ...); + int __mingw_sprintf(scope char* s, scope const char* format, ...); /// alias __mingw_sprintf sprintf; /// - int __mingw_sscanf(in char* s, in char* format, ...); + int __mingw_sscanf(scope const char* s, scope const char* format, ...); /// alias __mingw_sscanf sscanf; /// - int __mingw_vfprintf(FILE* stream, in char* format, va_list arg); + int __mingw_vfprintf(FILE* stream, scope const char* format, va_list arg); /// alias __mingw_vfprintf vfprintf; /// - int __mingw_vfscanf(FILE* stream, in char* format, va_list arg); + int __mingw_vfscanf(FILE* stream, scope const char* format, va_list arg); /// alias __mingw_vfscanf vfscanf; /// - int __mingw_vsprintf(char* s, in char* format, va_list arg); + int __mingw_vsprintf(scope char* s, scope const char* format, va_list arg); /// alias __mingw_vsprintf vsprintf; /// - int __mingw_vsscanf(in char* s, in char* format, va_list arg); + int __mingw_vsscanf(scope const char* s, scope const char* format, va_list arg); /// alias __mingw_vsscanf vsscanf; /// - int __mingw_vprintf(in char* format, va_list arg); + int __mingw_vprintf(scope const char* format, va_list arg); /// alias __mingw_vprintf vprintf; /// - int __mingw_vscanf(in char* format, va_list arg); + int __mingw_vscanf(scope const char* format, va_list arg); /// alias __mingw_vscanf vscanf; /// - int __mingw_printf(in char* format, ...); + int __mingw_printf(scope const char* format, ...); /// alias __mingw_printf printf; /// - int __mingw_scanf(in char* format, ...); + int __mingw_scanf(scope const char* format, ...); /// alias __mingw_scanf scanf; } else { /// - int fprintf(FILE* stream, in char* format, ...); + int fprintf(FILE* stream, scope const char* format, ...); /// - int fscanf(FILE* stream, in char* format, ...); + int fscanf(FILE* stream, scope const char* format, ...); /// - int sprintf(char* s, in char* format, ...); + int sprintf(scope char* s, scope const char* format, ...); /// - int sscanf(in char* s, in char* format, ...); + int sscanf(scope const char* s, scope const char* format, ...); /// - int vfprintf(FILE* stream, in char* format, va_list arg); + int vfprintf(FILE* stream, scope const char* format, va_list arg); /// - int vfscanf(FILE* stream, in char* format, va_list arg); + int vfscanf(FILE* stream, scope const char* format, va_list arg); /// - int vsprintf(char* s, in char* format, va_list arg); + int vsprintf(scope char* s, scope const char* format, va_list arg); /// - int vsscanf(in char* s, in char* format, va_list arg); + int vsscanf(scope const char* s, scope const char* format, va_list arg); /// - int vprintf(in char* format, va_list arg); + int vprintf(scope const char* format, va_list arg); /// - int vscanf(in char* format, va_list arg); + int vscanf(scope const char* format, va_list arg); /// - int printf(in char* format, ...); + int printf(scope const char* format, ...); /// - int scanf(in char* format, ...); + int scanf(scope const char* format, ...); } // No unsafe pointer manipulation. @@ -955,11 +955,11 @@ else /// char* fgets(char* s, int n, FILE* stream); /// -int fputs(in char* s, FILE* stream); +int fputs(scope const char* s, FILE* stream); /// char* gets(char* s); /// -int puts(in char* s); +int puts(scope const char* s); // No unsafe pointer manipulation. extern (D) @trusted @@ -978,17 +978,17 @@ extern (D) @trusted @trusted int ungetc(int c, FILE* stream); // No unsafe pointer manipulation. /// -size_t fread(void* ptr, size_t size, size_t nmemb, FILE* stream); +size_t fread(scope void* ptr, size_t size, size_t nmemb, FILE* stream); /// -size_t fwrite(in void* ptr, size_t size, size_t nmemb, FILE* stream); +size_t fwrite(scope const void* ptr, size_t size, size_t nmemb, FILE* stream); // No unsafe pointer manipulation. @trusted { /// - int fgetpos(FILE* stream, fpos_t * pos); + int fgetpos(FILE* stream, scope fpos_t * pos); /// - int fsetpos(FILE* stream, in fpos_t* pos); + int fsetpos(FILE* stream, scope const fpos_t* pos); /// int fseek(FILE* stream, c_long offset, int whence); @@ -1011,14 +1011,14 @@ version( MinGW ) pure int ferror(FILE* stream) { return stream._flag&_IOERR; } } /// - int __mingw_snprintf(char* s, size_t n, in char* fmt, ...); + int __mingw_snprintf(scope char* s, size_t n, scope const char* fmt, ...); /// alias __mingw_snprintf _snprintf; /// alias __mingw_snprintf snprintf; /// - int __mingw_vsnprintf(char* s, size_t n, in char* format, va_list arg); + int __mingw_vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); /// alias __mingw_vsnprintf _vsnprintf; /// @@ -1041,12 +1041,12 @@ else version( CRuntime_DigitalMars ) pure int fileno(FILE* stream) { return stream._file; } } /// - int _snprintf(char* s, size_t n, in char* fmt, ...); + int _snprintf(scope char* s, size_t n, scope const char* fmt, ...); /// alias _snprintf snprintf; /// - int _vsnprintf(char* s, size_t n, in char* format, va_list arg); + int _vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); /// alias _vsnprintf vsnprintf; } @@ -1068,14 +1068,14 @@ else version( CRuntime_Microsoft ) } /// - int _snprintf(char* s, size_t n, in char* format, ...); + int _snprintf(scope char* s, size_t n, scope const char* format, ...); /// - int snprintf(char* s, size_t n, in char* format, ...); + int snprintf(scope char* s, size_t n, scope const char* format, ...); /// - int _vsnprintf(char* s, size_t n, in char* format, va_list arg); + int _vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); /// - int vsnprintf(char* s, size_t n, in char* format, va_list arg); + int vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); /// int _fputc_nolock(int c, FILE *fp); @@ -1110,9 +1110,9 @@ else version( CRuntime_Glibc ) } /// - int snprintf(char* s, size_t n, in char* format, ...); + int snprintf(scope char* s, size_t n, scope const char* format, ...); /// - int vsnprintf(char* s, size_t n, in char* format, va_list arg); + int vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); } else version( Darwin ) { @@ -1132,9 +1132,9 @@ else version( Darwin ) } /// - int snprintf(char* s, size_t n, in char* format, ...); + int snprintf(scope char* s, size_t n, scope const char* format, ...); /// - int vsnprintf(char* s, size_t n, in char* format, va_list arg); + int vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); } else version( FreeBSD ) { @@ -1154,9 +1154,9 @@ else version( FreeBSD ) } /// - int snprintf(char* s, size_t n, in char* format, ...); + int snprintf(scope char* s, size_t n, scope const char* format, ...); /// - int vsnprintf(char* s, size_t n, in char* format, va_list arg); + int vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); } else version( OpenBSD ) { @@ -1245,9 +1245,9 @@ else version( OpenBSD ) } /// - int snprintf(char* s, size_t n, in char* format, ...); + int snprintf(scope char* s, size_t n, scope const char* format, ...); /// - int vsnprintf(char* s, size_t n, in char* format, va_list arg); + int vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); } else version (Solaris) { @@ -1267,9 +1267,9 @@ else version (Solaris) } /// - int snprintf(char* s, size_t n, in char* format, ...); + int snprintf(scope char* s, size_t n, scope const char* format, ...); /// - int vsnprintf(char* s, size_t n, in char* format, va_list arg); + int vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); } else version( CRuntime_Bionic ) { @@ -1289,9 +1289,9 @@ else version( CRuntime_Bionic ) } /// - int snprintf(char* s, size_t n, in char* format, ...); + int snprintf(scope char* s, size_t n, scope const char* format, ...); /// - int vsnprintf(char* s, size_t n, in char* format, va_list arg); + int vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); } else { @@ -1299,7 +1299,7 @@ else } /// -void perror(in char* s); +void perror(scope const char* s); version(CRuntime_DigitalMars) { @@ -1406,28 +1406,28 @@ version(CRuntime_DigitalMars) STDERR_FILENO = 2, } - int open(const(char)* filename, int flags, ...); /// + int open(scope const(char)* filename, int flags, ...); /// alias _open = open; /// - int _wopen(const wchar* filename, int oflag, ...); /// - int sopen(const char* filename, int oflag, int shflag, ...); /// + int _wopen(scope const wchar* filename, int oflag, ...); /// + int sopen(scope const char* filename, int oflag, int shflag, ...); /// alias _sopen = sopen; /// - int _wsopen(const wchar* filename, int oflag, int shflag, ...); /// + int _wsopen(scope const wchar* filename, int oflag, int shflag, ...); /// int close(int fd); /// alias _close = close; /// - FILE *fdopen(int fd, const(char)* flags); /// + FILE *fdopen(int fd, scope const(char)* flags); /// alias _fdopen = fdopen; /// - FILE *_wfdopen(int fd, const(wchar)* flags); /// + FILE *_wfdopen(int fd, scope const(wchar)* flags); /// } else version (CRuntime_Microsoft) { - int _open(const char* filename, int oflag, ...); /// - int _wopen(const wchar* filename, int oflag, ...); /// - int _sopen(const char* filename, int oflag, int shflag, ...); /// - int _wsopen(const wchar* filename, int oflag, int shflag, ...); /// + int _open(scope const char* filename, int oflag, ...); /// + int _wopen(scope const wchar* filename, int oflag, ...); /// + int _sopen(scope const char* filename, int oflag, int shflag, ...); /// + int _wsopen(scope const wchar* filename, int oflag, int shflag, ...); /// int _close(int fd); /// - FILE *_fdopen(int fd, const(char)* flags); /// - FILE *_wfdopen(int fd, const(wchar)* flags); /// + FILE *_fdopen(int fd, scope const(char)* flags); /// + FILE *_wfdopen(int fd, scope const(wchar)* flags); /// } version (Windows) From 9f21c4208a885a96f890190e0baa1869ba9e845b Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Wed, 28 Dec 2016 15:15:55 +0200 Subject: [PATCH 556/768] Fix coding style in core.sync.mutex --- src/core/sync/mutex.d | 87 +++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index bdedb09986..e360f5b990 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -18,11 +18,11 @@ module core.sync.mutex; public import core.sync.exception; -version( Windows ) +version (Windows) { private import core.sys.windows.windows; } -else version( Posix ) +else version (Posix) { private import core.sys.posix.pthread; } @@ -58,13 +58,13 @@ class Mutex : * Throws: * SyncError on error. */ - this() nothrow @trusted + this() @trusted nothrow { - version( Windows ) + version (Windows) { - InitializeCriticalSection( &m_hndl ); + InitializeCriticalSection(&m_hndl); } - else version( Posix ) + else version (Posix) { pthread_mutexattr_t attr = void; @@ -78,6 +78,7 @@ class Mutex : if( pthread_mutex_init( &m_hndl, &attr ) ) throw new SyncError( "Unable to initialize mutex" ); } + m_proxy.link = this; this.__monitor = &m_proxy; } @@ -89,10 +90,10 @@ class Mutex : * In: * o must not already have a monitor. */ - this( Object o ) nothrow @trusted + this(Object o) @trusted nothrow in { - assert( o.__monitor is null ); + assert(o.__monitor is null); } body { @@ -103,11 +104,11 @@ class Mutex : ~this() { - version( Windows ) + version (Windows) { - DeleteCriticalSection( &m_hndl ); + DeleteCriticalSection(&m_hndl); } - else version( Posix ) + else version (Posix) { int rc = pthread_mutex_destroy( &m_hndl ); assert( !rc, "Unable to destroy mutex" ); @@ -136,19 +137,18 @@ class Mutex : // undocumented function for internal use final void lock_nothrow() nothrow @trusted @nogc { - version( Windows ) + version (Windows) { - EnterCriticalSection( &m_hndl ); + EnterCriticalSection(&m_hndl); } - else version( Posix ) + else version (Posix) { - int rc = pthread_mutex_lock( &m_hndl ); - if( rc ) - { - SyncError syncErr = cast(SyncError) cast(void*) typeid(SyncError).initializer; - syncErr.msg = "Unable to lock mutex."; - throw syncErr; - } + if (pthread_mutex_lock(&m_hndl) == 0) + return; + + SyncError syncErr = cast(SyncError) cast(void*) typeid(SyncError).initializer; + syncErr.msg = "Unable to lock mutex."; + throw syncErr; } } @@ -167,19 +167,18 @@ class Mutex : // undocumented function for internal use final void unlock_nothrow() nothrow @trusted @nogc { - version( Windows ) + version (Windows) { - LeaveCriticalSection( &m_hndl ); + LeaveCriticalSection(&m_hndl); } - else version( Posix ) + else version (Posix) { - int rc = pthread_mutex_unlock( &m_hndl ); - if( rc ) - { - SyncError syncErr = cast(SyncError) cast(void*) typeid(SyncError).initializer; - syncErr.msg = "Unable to unlock mutex."; - throw syncErr; - } + if (pthread_mutex_unlock(&m_hndl) == 0) + return; + + SyncError syncErr = cast(SyncError) cast(void*) typeid(SyncError).initializer; + syncErr.msg = "Unable to unlock mutex."; + throw syncErr; } } @@ -196,23 +195,23 @@ class Mutex : */ bool tryLock() { - version( Windows ) + version (Windows) { - return TryEnterCriticalSection( &m_hndl ) != 0; + return TryEnterCriticalSection(&m_hndl) != 0; } - else version( Posix ) + else version (Posix) { - return pthread_mutex_trylock( &m_hndl ) == 0; + return pthread_mutex_trylock(&m_hndl) == 0; } } private: - version( Windows ) + version (Windows) { CRITICAL_SECTION m_hndl; } - else version( Posix ) + else version (Posix) { pthread_mutex_t m_hndl; } @@ -226,7 +225,7 @@ private: package: - version( Posix ) + version (Posix) { pthread_mutex_t* handleAddr() { @@ -241,7 +240,7 @@ package: //////////////////////////////////////////////////////////////////////////////// -version( unittest ) +version (unittest) { private import core.thread; @@ -255,9 +254,9 @@ version( unittest ) void testFn() { - for( int i = 0; i < numTries; ++i ) + for (int i = 0; i < numTries; ++i) { - synchronized( mutex ) + synchronized (mutex) { ++lockCount; } @@ -266,10 +265,10 @@ version( unittest ) auto group = new ThreadGroup; - for( int i = 0; i < numThreads; ++i ) - group.create( &testFn ); + for (int i = 0; i < numThreads; ++i) + group.create(&testFn); group.joinAll(); - assert( lockCount == numThreads * numTries ); + assert(lockCount == numThreads * numTries); } } From 5523188db5071c19407a652d089dceae246f0dd8 Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Wed, 28 Dec 2016 16:24:15 +0200 Subject: [PATCH 557/768] Make core.sync.mutex.Mutex.this()/this(Object)/~this() nothrow and @nogc --- src/core/sync/mutex.d | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index e360f5b990..a86fcc4231 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -55,10 +55,8 @@ class Mutex : /** * Initializes a mutex object. * - * Throws: - * SyncError on error. */ - this() @trusted nothrow + this() @trusted nothrow @nogc { version (Windows) { @@ -68,15 +66,16 @@ class Mutex : { pthread_mutexattr_t attr = void; - if( pthread_mutexattr_init( &attr ) ) - throw new SyncError( "Unable to initialize mutex" ); - scope(exit) pthread_mutexattr_destroy( &attr ); + !pthread_mutexattr_init(&attr) || + assert (0, "Unable to initialize mutex"); + + scope (exit) pthread_mutexattr_destroy(&attr); - if( pthread_mutexattr_settype( &attr, PTHREAD_MUTEX_RECURSIVE ) ) - throw new SyncError( "Unable to initialize mutex" ); + !pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) || + assert (0, "Unable to initialize mutex"); - if( pthread_mutex_init( &m_hndl, &attr ) ) - throw new SyncError( "Unable to initialize mutex" ); + !pthread_mutex_init(&m_hndl, &attr) || + assert (0, "Unable to initialize mutex"); } m_proxy.link = this; @@ -90,7 +89,7 @@ class Mutex : * In: * o must not already have a monitor. */ - this(Object o) @trusted nothrow + this(Object o) @trusted nothrow @nogc in { assert(o.__monitor is null); @@ -102,7 +101,7 @@ class Mutex : } - ~this() + ~this() @trusted nothrow @nogc { version (Windows) { @@ -110,8 +109,8 @@ class Mutex : } else version (Posix) { - int rc = pthread_mutex_destroy( &m_hndl ); - assert( !rc, "Unable to destroy mutex" ); + !pthread_mutex_destroy(&m_hndl) || + assert (0, "Unable to destroy mutex"); } this.__monitor = null; } From 7d39fdce22051dedd138c5c1bdf45a0dd23b9ed5 Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Wed, 28 Dec 2016 16:30:39 +0200 Subject: [PATCH 558/768] Make `shared(core.sync.mutex.Mutex)` usable in `@safe` code Additionally add `shared` overloads to: + core.sys.windows.winbase: * EnterCriticalSection * LeaveCriticalSection * TryEnterCriticalSection + core.sys.posix.pthread: * pthread_mutex_lock * pthread_mutex_unlock * pthread_mutex_trylock Also add `tryLock_nothrow` version of `Mutex.tryLock`. --- src/core/sync/mutex.d | 65 ++++++++++++++++++++++++++++++---- src/core/sys/posix/pthread.d | 3 ++ src/core/sys/windows/winbase.d | 3 ++ 3 files changed, 64 insertions(+), 7 deletions(-) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index a86fcc4231..d77afaa62b 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -57,10 +57,22 @@ class Mutex : * */ this() @trusted nothrow @nogc + { + this(true); + } + + /// ditto + this() shared @trusted nothrow @nogc + { + this(true); + } + + private this(this Q)(bool _unused_) @trusted nothrow @nogc + if (is(Q == Mutex) || is(Q == shared Mutex)) { version (Windows) { - InitializeCriticalSection(&m_hndl); + InitializeCriticalSection(cast(CRITICAL_SECTION*)&m_hndl); } else version (Posix) { @@ -74,12 +86,12 @@ class Mutex : !pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) || assert (0, "Unable to initialize mutex"); - !pthread_mutex_init(&m_hndl, &attr) || + !pthread_mutex_init(cast(pthread_mutex_t*)&m_hndl, &attr) || assert (0, "Unable to initialize mutex"); } m_proxy.link = this; - this.__monitor = &m_proxy; + this.__monitor = cast(void*)&m_proxy; } @@ -90,6 +102,18 @@ class Mutex : * o must not already have a monitor. */ this(Object o) @trusted nothrow @nogc + { + this(o, true); + } + + /// ditto + this(Object o) shared @trusted nothrow @nogc + { + this(o, true); + } + + this(this Q)(Object o, bool _unused_) @trusted nothrow @nogc + if (is(Q == Mutex) || is(Q == shared Mutex)) in { assert(o.__monitor is null); @@ -97,7 +121,7 @@ class Mutex : body { this(); - o.__monitor = &m_proxy; + o.__monitor = cast(void*)&m_proxy; } @@ -133,8 +157,15 @@ class Mutex : lock_nothrow(); } + /// ditto + @trusted void lock() shared + { + lock_nothrow(); + } + // undocumented function for internal use - final void lock_nothrow() nothrow @trusted @nogc + final void lock_nothrow(this Q)() nothrow @trusted @nogc + if (is(Q == Mutex) || is(Q == shared Mutex)) { version (Windows) { @@ -163,8 +194,15 @@ class Mutex : unlock_nothrow(); } + /// ditto + @trusted void unlock() shared + { + unlock_nothrow(); + } + // undocumented function for internal use - final void unlock_nothrow() nothrow @trusted @nogc + final void unlock_nothrow(this Q)() nothrow @trusted @nogc + if (is(Q == Mutex) || is(Q == shared Mutex)) { version (Windows) { @@ -192,7 +230,20 @@ class Mutex : * Returns: * true if the lock was acquired and false if not. */ - bool tryLock() + bool tryLock() @trusted + { + return tryLock_nothrow(); + } + + /// ditto + bool tryLock() shared @trusted + { + return tryLock_nothrow(); + } + + // undocumented function for internal use + final bool tryLock_nothrow(this Q)() nothrow @trusted @nogc + if (is(Q == Mutex) || is(Q == shared Mutex)) { version (Windows) { diff --git a/src/core/sys/posix/pthread.d b/src/core/sys/posix/pthread.d index 9ef960633e..60cd76d589 100644 --- a/src/core/sys/posix/pthread.d +++ b/src/core/sys/posix/pthread.d @@ -499,8 +499,11 @@ int pthread_key_delete(pthread_key_t); int pthread_mutex_destroy(pthread_mutex_t*); int pthread_mutex_init(pthread_mutex_t*, pthread_mutexattr_t*) @trusted; int pthread_mutex_lock(pthread_mutex_t*); +int pthread_mutex_lock(shared(pthread_mutex_t)*); int pthread_mutex_trylock(pthread_mutex_t*); +int pthread_mutex_trylock(shared(pthread_mutex_t)*); int pthread_mutex_unlock(pthread_mutex_t*); +int pthread_mutex_unlock(shared(pthread_mutex_t)*); int pthread_mutexattr_destroy(pthread_mutexattr_t*); int pthread_mutexattr_init(pthread_mutexattr_t*) @trusted; int pthread_once(pthread_once_t*, void function()); diff --git a/src/core/sys/windows/winbase.d b/src/core/sys/windows/winbase.d index 6441beb0c5..e4890a1f3d 100644 --- a/src/core/sys/windows/winbase.d +++ b/src/core/sys/windows/winbase.d @@ -1745,6 +1745,7 @@ extern (Windows) nothrow @nogc { BOOL EndUpdateResourceA(HANDLE, BOOL); BOOL EndUpdateResourceW(HANDLE, BOOL); void EnterCriticalSection(LPCRITICAL_SECTION); + void EnterCriticalSection(shared(CRITICAL_SECTION)*); BOOL EnumResourceLanguagesA(HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROC, LONG_PTR); BOOL EnumResourceLanguagesW(HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROC, LONG_PTR); BOOL EnumResourceNamesA(HMODULE, LPCSTR, ENUMRESNAMEPROC, LONG_PTR); @@ -1927,6 +1928,7 @@ WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); BOOL IsBadStringPtrW(LPCWSTR, UINT_PTR); BOOL IsBadWritePtr(PVOID, UINT_PTR); void LeaveCriticalSection(LPCRITICAL_SECTION); + void LeaveCriticalSection(shared(CRITICAL_SECTION)*); HINSTANCE LoadLibraryA(LPCSTR); HINSTANCE LoadLibraryW(LPCWSTR); HINSTANCE LoadLibraryExA(LPCSTR, HANDLE, DWORD); @@ -2313,6 +2315,7 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE); BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); BOOL TzSpecificLocalTimeToSystemTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); BOOL TryEnterCriticalSection(LPCRITICAL_SECTION); + BOOL TryEnterCriticalSection(shared(CRITICAL_SECTION)*); BOOL UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED); BOOL UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, PVOID, DWORD); BOOL UpdateResourceW(HANDLE, LPCWSTR, LPCWSTR, WORD, PVOID, DWORD); From f4810b4bdd07b32eb8b3b852493c1f1e72bce3f7 Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Wed, 28 Dec 2016 16:44:57 +0200 Subject: [PATCH 559/768] [WIP] Improve core.sync.mutex documentation --- src/core/sync/mutex.d | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index d77afaa62b..98675ef910 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -31,7 +31,6 @@ else static assert(false, "Platform not supported"); } - //////////////////////////////////////////////////////////////////////////////// // Mutex // @@ -43,6 +42,9 @@ else /** * This class represents a general purpose, recursive mutex. + * + * Implemented using pthread_mutex on Posix and CRITICAL_SECTION + * on Windows. */ class Mutex : Object.Monitor @@ -67,6 +69,7 @@ class Mutex : this(true); } + // Undocumented, useful only in Mutex.this(). private this(this Q)(bool _unused_) @trusted nothrow @nogc if (is(Q == Mutex) || is(Q == shared Mutex)) { @@ -112,7 +115,8 @@ class Mutex : this(o, true); } - this(this Q)(Object o, bool _unused_) @trusted nothrow @nogc + // Undocumented, useful only in Mutex.this(Object). + private this(this Q)(Object o, bool _unused_) @trusted nothrow @nogc if (is(Q == Mutex) || is(Q == shared Mutex)) in { @@ -163,7 +167,7 @@ class Mutex : lock_nothrow(); } - // undocumented function for internal use + /// ditto final void lock_nothrow(this Q)() nothrow @trusted @nogc if (is(Q == Mutex) || is(Q == shared Mutex)) { @@ -200,7 +204,7 @@ class Mutex : unlock_nothrow(); } - // undocumented function for internal use + /// ditto final void unlock_nothrow(this Q)() nothrow @trusted @nogc if (is(Q == Mutex) || is(Q == shared Mutex)) { @@ -241,7 +245,7 @@ class Mutex : return tryLock_nothrow(); } - // undocumented function for internal use + /// ditto final bool tryLock_nothrow(this Q)() nothrow @trusted @nogc if (is(Q == Mutex) || is(Q == shared Mutex)) { From 60f37a2552549c4491c7e23b2c5d3054f723a847 Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Sat, 14 Jan 2017 00:46:27 +0200 Subject: [PATCH 560/768] [core.sync.mutex] Add a note to the docs about nothrow --- src/core/sync/mutex.d | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index 98675ef910..8e4998994c 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -153,8 +153,9 @@ class Mutex : * If this lock is not already held by the caller, the lock is acquired, * then the internal counter is incremented by one. * - * Throws: - * SyncError on error. + * Note: + * `Mutex.lock` does not throw, but a class derived from Mutex can throw. + * Use `lock_nothrow` in `nothrow @nogc` code. */ @trusted void lock() { @@ -190,8 +191,9 @@ class Mutex : * Decrements the internal lock count by one. If this brings the count to * zero, the lock is released. * - * Throws: - * SyncError on error. + * Note: + * `Mutex.unlock` does not throw, but a class derived from Mutex can throw. + * Use `unlock_nothrow` in `nothrow @nogc` code. */ @trusted void unlock() { @@ -228,11 +230,12 @@ class Mutex : * the lock is acquired if it is not already held, and then the internal * counter is incremented by one. * - * Throws: - * SyncError on error. - * * Returns: * true if the lock was acquired and false if not. + * + * Note: + * `Mutex.tryLock` does not throw, but a class derived from Mutex can throw. + * Use `tryLock_nothrow` in `nothrow @nogc` code. */ bool tryLock() @trusted { From 0291197f119f2df8a896fe88352d31138c5de7fc Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Sat, 14 Jan 2017 00:54:37 +0200 Subject: [PATCH 561/768] [core.sync.mutex] Change assert(0, msg) to abort(msg); improve error messages --- src/core/sync/mutex.d | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index 8e4998994c..2257a8a664 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -79,18 +79,19 @@ class Mutex : } else version (Posix) { + import core.internal.abort : abort; pthread_mutexattr_t attr = void; !pthread_mutexattr_init(&attr) || - assert (0, "Unable to initialize mutex"); + abort("Unable to initialize mutex"); scope (exit) pthread_mutexattr_destroy(&attr); !pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) || - assert (0, "Unable to initialize mutex"); + abort("Unable to initialize mutex"); !pthread_mutex_init(cast(pthread_mutex_t*)&m_hndl, &attr) || - assert (0, "Unable to initialize mutex"); + abort("Unable to initialize mutex"); } m_proxy.link = this; @@ -120,7 +121,8 @@ class Mutex : if (is(Q == Mutex) || is(Q == shared Mutex)) in { - assert(o.__monitor is null); + assert(o.__monitor is null, + "The provided object has a monitor already set!"); } body { @@ -137,8 +139,9 @@ class Mutex : } else version (Posix) { + import core.internal.abort : abort; !pthread_mutex_destroy(&m_hndl) || - assert (0, "Unable to destroy mutex"); + abort("Unable to destroy mutex"); } this.__monitor = null; } From 5e4b740b1fd9c4b02caa4c8b1edcd3711d2e492b Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Sat, 14 Jan 2017 02:33:08 +0200 Subject: [PATCH 562/768] [core.sync.mutex] Cleanup existing unittest --- src/core/sync/mutex.d | 40 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index 2257a8a664..0d1c2413c4 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -295,40 +295,32 @@ package: } -//////////////////////////////////////////////////////////////////////////////// -// Unit Tests -//////////////////////////////////////////////////////////////////////////////// - -version (unittest) +unittest { - private import core.thread; + import core.thread; + auto mutex = new Mutex; + int numThreads = 10; + int numTries = 1000; + int lockCount = 0; - unittest + void testFn() { - auto mutex = new Mutex; - int numThreads = 10; - int numTries = 1000; - int lockCount = 0; - - void testFn() + for (int i = 0; i < numTries; ++i) { - for (int i = 0; i < numTries; ++i) + synchronized (mutex) { - synchronized (mutex) - { - ++lockCount; - } + ++lockCount; } } + } - auto group = new ThreadGroup; + auto group = new ThreadGroup; - for (int i = 0; i < numThreads; ++i) - group.create(&testFn); + for (int i = 0; i < numThreads; ++i) + group.create(&testFn); - group.joinAll(); - assert(lockCount == numThreads * numTries); - } + group.joinAll(); + assert(lockCount == numThreads * numTries); } From ff38e5ea31a66a290fc8bdaef82fde7026484bbc Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Sat, 14 Jan 2017 02:34:44 +0200 Subject: [PATCH 563/768] [core.sync.mutex] Add a @safe ddoc-ed test and a @nogc nothrow one --- src/core/sync/mutex.d | 80 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index 0d1c2413c4..8ef7bff6fe 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -294,7 +294,87 @@ package: } } +/// +/* @safe nothrow -> see druntime PR 1726 */ +// Test regular usage. +unittest +{ + import core.thread : Thread; + + class Resource + { + Mutex mtx; + int cargo; + + this() shared @safe nothrow + { + mtx = new shared Mutex(); + cargo = 42; + } + + void useResource() shared @safe nothrow @nogc + { + mtx.lock_nothrow(); + cargo++; + mtx.unlock_nothrow(); + } + } + + shared Resource res = new shared Resource(); + + auto otherThread = new Thread( + { + foreach (i; 0 .. 10000) + res.useResource(); + }).start(); + + foreach (i; 0 .. 10000) + res.useResource(); + + otherThread.join(); + assert (res.cargo == 20042); +} + +// Test @nogc usage. +@system @nogc nothrow unittest +{ + import core.stdc.stdlib : malloc, free; + + void* p = malloc(__traits(classInstanceSize, Mutex)); + + auto ti = typeid(Mutex); + p[0 .. ti.initializer.length] = ti.initializer[]; + + shared Mutex mtx = cast(shared(Mutex))p; + mtx.__ctor(); + + mtx.lock_nothrow(); + + { // test recursive locking + mtx.tryLock_nothrow(); + mtx.unlock_nothrow(); + } + + mtx.unlock_nothrow(); + + // In general destorying classes like this is not + // safe, but since we know that the only base class + // of Mutex is Object and it doesn't have a dtor + // we can simply call the non-virtual __dtor() here. + + // Ok to cast away shared because destruction + // should happen only from a single thread. + (cast(Mutex)mtx).__dtor(); + + // Verify that the underlying implementation has been destroyed + // by checking that locking is not possible. This assumes + // that the underlying implementation is well behaved + // and makes the object non-lockable upon destruction. + assert(!mtx.tryLock_nothrow()); + + free(cast(void*)mtx); +} unittest { From ac71591e259a46cf56e5b7a83fee93d7e3f5435e Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Sat, 14 Jan 2017 02:51:12 +0200 Subject: [PATCH 564/768] [core.sync.mutex] Add a test for non-shared use of Mutex --- src/core/sync/mutex.d | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index 8ef7bff6fe..b2033b620c 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -376,6 +376,19 @@ unittest free(cast(void*)mtx); } +// Test single-thread (non-shared) use. +unittest +{ + Mutex m = new Mutex(); + + m.lock(); + + m.tryLock(); + m.unlock(); + + m.unlock(); +} + unittest { import core.thread; From 90b1db62e6947bde77982df3df26f86543ec21ae Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Tue, 24 Jan 2017 22:06:17 +0200 Subject: [PATCH 565/768] [core.sync.mutex] Abort if pthread_mutexattr_destroy fails * Also make the error messages more descriptive --- src/core/sync/mutex.d | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index b2033b620c..65eee4ddb4 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -83,15 +83,16 @@ class Mutex : pthread_mutexattr_t attr = void; !pthread_mutexattr_init(&attr) || - abort("Unable to initialize mutex"); + abort("Error: pthread_mutexattr_init failed!"); - scope (exit) pthread_mutexattr_destroy(&attr); + scope (exit) !pthread_mutexattr_destroy(&attr) || + abort("Error: pthread_mutexattr_destroy failed!"); !pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) || - abort("Unable to initialize mutex"); + abort("Error: pthread_mutexattr_settype failed!"); !pthread_mutex_init(cast(pthread_mutex_t*)&m_hndl, &attr) || - abort("Unable to initialize mutex"); + abort("Error: pthread_mutex_init failed!"); } m_proxy.link = this; From 7e5d669aa2b840f1c8335897d06564ddb062de1c Mon Sep 17 00:00:00 2001 From: ZombineDev Date: Wed, 25 Jan 2017 17:00:26 +0200 Subject: [PATCH 566/768] [core.sync.mutex] Address Andrei's comments --- src/core/sync/mutex.d | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index 65eee4ddb4..605438c38f 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -43,7 +43,7 @@ else /** * This class represents a general purpose, recursive mutex. * - * Implemented using pthread_mutex on Posix and CRITICAL_SECTION + * Implemented using `pthread_mutex` on Posix and `CRITICAL_SECTION` * on Windows. */ class Mutex : @@ -75,7 +75,7 @@ class Mutex : { version (Windows) { - InitializeCriticalSection(cast(CRITICAL_SECTION*)&m_hndl); + InitializeCriticalSection(cast(CRITICAL_SECTION*) &m_hndl); } else version (Posix) { @@ -83,52 +83,52 @@ class Mutex : pthread_mutexattr_t attr = void; !pthread_mutexattr_init(&attr) || - abort("Error: pthread_mutexattr_init failed!"); + abort("Error: pthread_mutexattr_init failed."); scope (exit) !pthread_mutexattr_destroy(&attr) || - abort("Error: pthread_mutexattr_destroy failed!"); + abort("Error: pthread_mutexattr_destroy failed."); !pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) || - abort("Error: pthread_mutexattr_settype failed!"); + abort("Error: pthread_mutexattr_settype failed."); - !pthread_mutex_init(cast(pthread_mutex_t*)&m_hndl, &attr) || - abort("Error: pthread_mutex_init failed!"); + !pthread_mutex_init(cast(pthread_mutex_t*) &m_hndl, &attr) || + abort("Error: pthread_mutex_init failed."); } m_proxy.link = this; - this.__monitor = cast(void*)&m_proxy; + this.__monitor = cast(void*) &m_proxy; } /** - * Initializes a mutex object and sets it as the monitor for o. + * Initializes a mutex object and sets it as the monitor for `obj`. * * In: - * o must not already have a monitor. + * `obj` must not already have a monitor. */ - this(Object o) @trusted nothrow @nogc + this(Object obj) @trusted nothrow @nogc { - this(o, true); + this(obj, true); } /// ditto - this(Object o) shared @trusted nothrow @nogc + this(Object obj) shared @trusted nothrow @nogc { - this(o, true); + this(obj, true); } // Undocumented, useful only in Mutex.this(Object). - private this(this Q)(Object o, bool _unused_) @trusted nothrow @nogc + private this(this Q)(Object obj, bool _unused_) @trusted nothrow @nogc if (is(Q == Mutex) || is(Q == shared Mutex)) in { - assert(o.__monitor is null, + assert(obj.__monitor is null, "The provided object has a monitor already set!"); } body { this(); - o.__monitor = cast(void*)&m_proxy; + obj.__monitor = cast(void*) &m_proxy; } @@ -142,7 +142,7 @@ class Mutex : { import core.internal.abort : abort; !pthread_mutex_destroy(&m_hndl) || - abort("Unable to destroy mutex"); + abort("Error: pthread_mutex_init failed."); } this.__monitor = null; } @@ -347,7 +347,7 @@ unittest auto ti = typeid(Mutex); p[0 .. ti.initializer.length] = ti.initializer[]; - shared Mutex mtx = cast(shared(Mutex))p; + shared Mutex mtx = cast(shared(Mutex)) p; mtx.__ctor(); mtx.lock_nothrow(); @@ -366,7 +366,7 @@ unittest // Ok to cast away shared because destruction // should happen only from a single thread. - (cast(Mutex)mtx).__dtor(); + (cast(Mutex) mtx).__dtor(); // Verify that the underlying implementation has been destroyed // by checking that locking is not possible. This assumes @@ -374,7 +374,7 @@ unittest // and makes the object non-lockable upon destruction. assert(!mtx.tryLock_nothrow()); - free(cast(void*)mtx); + free(cast(void*) mtx); } // Test single-thread (non-shared) use. From d64e81c75cd13dd80bd70dbcb27aefa608f49354 Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Thu, 26 Jan 2017 18:52:49 +0100 Subject: [PATCH 567/768] Add bindings for POSIX getdelim and getline --- src/core/sys/posix/stdio.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/sys/posix/stdio.d b/src/core/sys/posix/stdio.d index 4fb3655888..c085c862ce 100644 --- a/src/core/sys/posix/stdio.d +++ b/src/core/sys/posix/stdio.d @@ -344,3 +344,7 @@ unittest assert(memcmp(ptr, testdata.ptr, testdata.length*wchar_t.sizeof) == 0); assert(fclose(f) == 0); } + + +ssize_t getdelim (char** lineptr, size_t* n, int delimiter, FILE* stream); +ssize_t getline (char** lineptr, size_t* n, FILE* stream); From 0b6d766c1dcf7452aa867ccedf5e77d1de4f0f7b Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 28 Jan 2017 03:28:48 -0800 Subject: [PATCH 568/768] [scope] update core.demangle for 'scope' mangling --- src/core/demangle.d | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 56b2fe3db7..22e7e402ac 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -876,6 +876,8 @@ private struct Demangle FuncAttrNothrow FuncAttrProperty FuncAttrRef + FuncAttrReturn + FuncAttrScope FuncAttrTrusted FuncAttrSafe @@ -903,6 +905,9 @@ private struct Demangle FuncAttrReturn: Nj + FuncAttrScope: + Nl + Arguments: Argument Argument Arguments @@ -955,7 +960,7 @@ private struct Demangle { // FuncAttrs breakFuncAttrs: - while( 'N' == front ) + while ('N' == front) { popFront(); switch( front ) @@ -1003,6 +1008,10 @@ private struct Demangle popFront(); put( "return " ); continue; + case 'l': // FuncAttrScope + popFront(); + put( "scope " ); + continue; default: error(); } @@ -1963,6 +1972,10 @@ version(unittest) ["_D8link657429__T3fooHVE8link65746Methodi0Z3fooFZi", "int link6574.foo!(0).foo()"], ["_D4test22__T4funcVAyaa3_610a62Z4funcFNaNbNiNfZAya", `pure nothrow @nogc @safe immutable(char)[] test.func!("a\x0ab").func()`], ["_D3foo3barFzkZzi", "cent foo.bar(ucent)"], + ["_D5bug145Class3fooMFNlZPv", "scope void* bug14.Class.foo()"], + ["_D5bug145Class3barMFNjZPv", "return void* bug14.Class.bar()"], + ["_D5bug143fooFMPvZPv", "void* bug14.foo(scope void*)"], + ["_D5bug143barFMNkPvZPv", "void* bug14.bar(scope return void*)"], ]; template staticIota(int x) From 79dbaa7a52c032ff24232a82e544453dde10f287 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 28 Jan 2017 21:46:01 -0800 Subject: [PATCH 569/768] [scope] add 'scope' to delegates --- src/rt/dmain2.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 6aacc153a9..f17ca91004 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -492,7 +492,7 @@ extern (C) int _d_run_main(int argc, char **argv, MainFunc mainFunc) return result; } -private void formatThrowable(Throwable t, void delegate(in char[] s) nothrow sink) +private void formatThrowable(Throwable t, scope void delegate(in char[] s) nothrow sink) { for (; t; t = t.next) { @@ -521,7 +521,7 @@ extern (C) void _d_print_throwable(Throwable t) { wchar_t* ptr; size_t len; - void sink(in char[] s) nothrow + void sink(in char[] s) scope nothrow { if (!s.length) return; int swlen = MultiByteToWideChar( @@ -609,7 +609,7 @@ extern (C) void _d_print_throwable(Throwable t) } } - void sink(in char[] buf) nothrow + void sink(in char[] buf) scope nothrow { fprintf(stderr, "%.*s", cast(int)buf.length, buf.ptr); } From a4cf6c3da0fae56188d4d7629cc2f5c618e079e8 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 28 Jan 2017 21:50:57 -0800 Subject: [PATCH 570/768] [scope] add 'scope' to delegates --- src/gc/impl/conservative/gc.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index d0b969106f..fe1ca5f858 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -1952,7 +1952,7 @@ struct Gcx /** * Search a range of memory values and mark any pointers into the GC pool. */ - void mark(void *pbot, void *ptop) nothrow + void mark(void *pbot, void *ptop) scope nothrow { void **p1 = cast(void **)pbot; void **p2 = cast(void **)ptop; @@ -2443,7 +2443,7 @@ struct Gcx * Warning! This should only be called while the world is stopped inside * the fullcollect function. */ - int isMarked(void *addr) nothrow + int isMarked(void *addr) scope nothrow { // first, we find the Pool this block is in, then check to see if the // mark bit is clear. From 78bead03871daf0afb7c0a3490552199e27df6e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Nordl=C3=B6w?= Date: Wed, 18 Jan 2017 23:41:05 +0100 Subject: [PATCH 571/768] Add pureMalloc, pureCalloc and pureRealloc --- src/core/memory.d | 100 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/src/core/memory.d b/src/core/memory.d index 0a4270557d..fcfc090d17 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -809,3 +809,103 @@ struct GC gc_runFinalizers( segment ); } } + +/** + * Pure variants of C's memory allocation functions `malloc`, `calloc` and + * `realloc`. Purity is achieved via resetting the `errno` to it's value prior + * to being called, removing the function's global state mutation. + * + * See_Also: + * $(LINK2 https://dlang.org/spec/function.html#pure-functions, D's rules for purity), + * which allow for memory allocation under specific circumstances. + */ +void* pureMalloc(size_t size) @trusted pure @nogc nothrow +{ + const errno = fakePureGetErrno(); + void* ret = fakePureMalloc(size); + if (!ret || errno != 0) + { + cast(void)fakePureSetErrno(errno); + } + return ret; +} +/// ditto +void* pureCalloc(size_t nmemb, size_t size) @trusted pure @nogc nothrow +{ + const errno = fakePureGetErrno(); + void* ret = fakePureCalloc(nmemb, size); + if (!ret || errno != 0) + { + cast(void)fakePureSetErrno(errno); + } + return ret; +} +/// ditto +void* pureRealloc(void* ptr, size_t size) pure @nogc nothrow +{ + const errno = fakePureGetErrno(); + void* ret = fakePureRealloc(ptr, size); + if (!ret || errno != 0) + { + cast(void)fakePureSetErrno(errno); + } + return ret; +} + +/// +nothrow @nogc unittest +{ + import core.stdc.stdlib : free; + + ubyte[] fun(size_t n) pure + { + void* p = pureMalloc(n); + p !is null || n == 0 || assert(0); + scope(failure) p = pureRealloc(p, 0); + p = pureRealloc(p, n *= 2); + p !is null || n == 0 || assert(0); + return cast(ubyte[]) p[0 .. n]; + } + + auto buf = fun(100); + assert(buf.length == 200); + free(buf.ptr); +} + +pure @nogc nothrow unittest +{ + const int errno = fakePureGetErrno(); + + void* x = pureMalloc(10); // normal allocation + assert(errno == fakePureGetErrno()); // errno shouldn't change + assert(x !is null); // allocation should succeed + + x = pureRealloc(x, 10); // normal reallocation + assert(errno == fakePureGetErrno()); // errno shouldn't change + assert(x !is null); // allocation should succeed + + fakePureFree(x); + + void* y = pureCalloc(10, 1); // normal zeroed allocation + assert(errno == fakePureGetErrno()); // errno shouldn't change + assert(y !is null); // allocation should succeed + + fakePureFree(y); + + void* z = pureMalloc(size_t.max); // won't affect `errno` + assert(errno == fakePureGetErrno()); // errno shouldn't change + assert(z is null); +} + +// locally purified for internal use here only +extern (C) private pure @system @nogc nothrow +{ + pragma(mangle, "getErrno") int fakePureGetErrno(); + pragma(mangle, "setErrno") int fakePureSetErrno(int); + + pragma(mangle, "malloc") void* fakePureMalloc(size_t); + pragma(mangle, "calloc") void* fakePureCalloc(size_t nmemb, size_t size); + pragma(mangle, "realloc") void* fakePureRealloc(void* ptr, size_t size); + + pragma(mangle, "free") void fakePureFree(void* ptr); // needed by unittests +} From 0fcdfdc89626cdebdf6d098b2c16cac04e20251f Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Mon, 30 Jan 2017 23:59:23 +0100 Subject: [PATCH 572/768] fix pureMalloc test for Win32 --- src/core/memory.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/memory.d b/src/core/memory.d index fcfc090d17..573ed2e8b2 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -892,7 +892,9 @@ pure @nogc nothrow unittest fakePureFree(y); - void* z = pureMalloc(size_t.max); // won't affect `errno` + // subtract 2 because snn.lib adds 2 unconditionally before passing + // the size to the Windows API + void* z = pureMalloc(size_t.max - 2); // won't affect `errno` assert(errno == fakePureGetErrno()); // errno shouldn't change assert(z is null); } From fb263ad4bdae2399b94e18d631a5387ef33d29cb Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 6 Feb 2017 16:58:24 -0800 Subject: [PATCH 573/768] make toString() @safe in core.sys.windows.stacktrace --- src/core/sys/windows/stacktrace.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/sys/windows/stacktrace.d b/src/core/sys/windows/stacktrace.d index 7695ddc448..1a6925f199 100644 --- a/src/core/sys/windows/stacktrace.d +++ b/src/core/sys/windows/stacktrace.d @@ -87,7 +87,7 @@ public: } - override string toString() const + @trusted override string toString() const { string result; @@ -121,7 +121,7 @@ public: * Returns: * An array of strings with the results. */ - static char[][] resolve(const(ulong)[] addresses) + @trusted static char[][] resolve(const(ulong)[] addresses) { synchronized( typeid(StackTrace) ) { From cad212304db88c4b5bfdce52846393b117885e4f Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 7 Feb 2017 18:59:17 -0800 Subject: [PATCH 574/768] [scope] add annotations to core.internal.string --- src/core/internal/string.d | 10 +++++----- src/object.d | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/internal/string.d b/src/core/internal/string.d index 96f2e580db..28b1e36246 100644 --- a/src/core/internal/string.d +++ b/src/core/internal/string.d @@ -15,7 +15,7 @@ nothrow: alias UnsignedStringBuf = char[20]; -char[] unsignedToTempString(ulong value, char[] buf, uint radix = 10) @safe +char[] unsignedToTempString(ulong value, return char[] buf, uint radix = 10) @safe { size_t i = buf.length; do @@ -69,7 +69,7 @@ unittest alias SignedStringBuf = char[20]; -auto signedToTempString(long value, char[] buf, uint radix) @safe +char[] signedToTempString(long value, return char[] buf, uint radix) @safe { bool neg = value < 0; if(neg) @@ -78,8 +78,8 @@ auto signedToTempString(long value, char[] buf, uint radix) @safe if(neg) { // about to do a slice without a bounds check - auto trustedSlice() @trusted { assert(r.ptr > buf.ptr); return (r.ptr-1)[0..r.length+1]; } - r = trustedSlice(); + auto trustedSlice(return char[] r) @trusted { assert(r.ptr > buf.ptr); return (r.ptr-1)[0..r.length+1]; } + r = trustedSlice(r); r[0] = '-'; } return r; @@ -190,7 +190,7 @@ unittest assert(3.numDigits!2 == 2); } -int dstrcmp( in char[] s1, in char[] s2 ) @trusted +int dstrcmp( scope const char[] s1, scope const char[] s2 ) @trusted { import core.stdc.string : memcmp; diff --git a/src/object.d b/src/object.d index edf6ac42ed..38b6144b3b 100644 --- a/src/object.d +++ b/src/object.d @@ -230,7 +230,7 @@ class TypeInfo { import core.internal.traits : externDFunc; alias dstrcmp = externDFunc!("core.internal.string.dstrcmp", - int function(in char[] s1, in char[] s2) @trusted pure nothrow @nogc); + int function(scope const char[] s1, scope const char[] s2) @trusted pure nothrow @nogc); if (this is o) return 0; @@ -530,7 +530,7 @@ class TypeInfo_StaticArray : TypeInfo { import core.internal.traits : externDFunc; alias sizeToTempString = externDFunc!("core.internal.string.unsignedToTempString", - char[] function(ulong, char[], uint) @safe pure nothrow @nogc); + char[] function(ulong, return char[], uint) @safe pure nothrow @nogc); char[20] tmpBuff = void; return value.toString() ~ "[" ~ sizeToTempString(len, tmpBuff, 10) ~ "]"; @@ -1715,7 +1715,7 @@ class Throwable : Object { import core.internal.traits : externDFunc; alias sizeToTempString = externDFunc!("core.internal.string.unsignedToTempString", - char[] function(ulong, char[], uint) @safe pure nothrow @nogc); + char[] function(ulong, return char[], uint) @safe pure nothrow @nogc); char[20] tmpBuff = void; From 68a31f355afc3d0c9af6151d477a3e2dc0fb7609 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 10 Feb 2017 02:41:49 -0800 Subject: [PATCH 575/768] add _d_assertp, _d_unittestp, _d_arrayboundsp --- src/core/exception.d | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/core/exception.d b/src/core/exception.d index 701dff2c30..2473e0b747 100644 --- a/src/core/exception.d +++ b/src/core/exception.d @@ -621,9 +621,10 @@ extern (C) /* One of these three is called upon an assert() fail. */ - void _d_assertm(immutable(ModuleInfo)* m, uint line) + void _d_assertp(immutable(char)* file, uint line) { - onAssertError(m.name, line); + import core.stdc.string : strlen; + onAssertError(file[0 .. strlen(file)], line); } void _d_assert_msg(string msg, string file, uint line) @@ -638,9 +639,10 @@ extern (C) /* One of these three is called upon an assert() fail inside of a unittest block */ - void _d_unittestm(immutable(ModuleInfo)* m, uint line) + void _d_unittestp(immutable(char)* file, uint line) { - _d_unittest(m.name, line); + import core.stdc.string : strlen; + _d_unittest(file[0 .. strlen(file)], line); } void _d_unittest_msg(string msg, string file, uint line) @@ -655,9 +657,10 @@ extern (C) /* Called when an array index is out of bounds */ - void _d_array_bounds(immutable(ModuleInfo)* m, uint line) + void _d_arrayboundsp(immutable(char*) file, uint line) { - onRangeError(m.name, line); + import core.stdc.string : strlen; + onRangeError(file[0 .. strlen(file)], line); } void _d_arraybounds(string file, uint line) From ca68ae46c5597e3f2a33ebb5cac52ea1e12ce2be Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 12 Feb 2017 01:29:28 -0800 Subject: [PATCH 576/768] line_trace.exp: make more resistant to 'scope' changes --- test/exceptions/Makefile | 2 +- test/exceptions/line_trace.exp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index 3c651d846a..5aa22b2631 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -17,7 +17,7 @@ all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) $(ROOT)/line_trace.done: $(ROOT)/line_trace @echo Testing line_trace $(QUIET)$(TIMELIMIT)$(ROOT)/line_trace $(RUN_ARGS) > $(ROOT)/line_trace.output - $(QUIET)$(SED) "s/\[0x[0-9a-f]*\]/\[ADDR\]/g" $(ROOT)/line_trace.output | $(DIFF) line_trace.exp - + $(QUIET)$(SED) "s/\[0x[0-9a-f]*\]/\[ADDR\]/g; s/scope //g; s/Nl//g" $(ROOT)/line_trace.output | $(DIFF) line_trace.exp - @rm -f $(ROOT)/line_trace.output @touch $@ diff --git a/test/exceptions/line_trace.exp b/test/exceptions/line_trace.exp index bec4cab697..c0909b653b 100644 --- a/test/exceptions/line_trace.exp +++ b/test/exceptions/line_trace.exp @@ -3,7 +3,7 @@ object.Exception@src/line_trace.d(17): exception src/line_trace.d:17 void line_trace.f1() [ADDR] src/line_trace.d:5 _Dmain [ADDR] src/rt/dmain2.d:472 _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [ADDR] -src/rt/dmain2.d:447 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] +src/rt/dmain2.d:447 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(void delegate()) [ADDR] src/rt/dmain2.d:472 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [ADDR] -src/rt/dmain2.d:447 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) [ADDR] +src/rt/dmain2.d:447 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(void delegate()) [ADDR] src/rt/dmain2.d:480 _d_run_main [ADDR] From 2a6e5b01feb98c4b6f76aa76d69f1e98ebda58bc Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 12 Feb 2017 11:50:06 +0100 Subject: [PATCH 577/768] scan DATA and TLS according to compiler generated pointer infos --- src/rt/minit.asm | 38 ++++++++++++++++++++++---- src/rt/minit.obj | Bin 317 -> 484 bytes src/rt/sections_win32.d | 59 +++++++++++++++++++++++++++++++++------- 3 files changed, 82 insertions(+), 15 deletions(-) diff --git a/src/rt/minit.asm b/src/rt/minit.asm index 72bd5d868c..a932442545 100644 --- a/src/rt/minit.asm +++ b/src/rt/minit.asm @@ -10,7 +10,9 @@ ; (See accompanying file LICENSE or copy at ; http://www.boost.org/LICENSE_1_0.txt) ; -include macros.asm +;include macros.asm + + .model FLAT ifdef _WIN32 DATAGRP EQU FLAT @@ -61,7 +63,34 @@ XOE ends DGROUP group FMB,FM,FME - begcode minit +; These segments bracket DP, which contains the _DATA pointer references + public __DPbegin, __DPend +DPB segment dword use32 public 'DATA' +__DPbegin: +DPB ends +DP segment dword use32 public 'DATA' +DP ends +DPE segment dword use32 public 'DATA' +__DPend: +DPE ends + +DGROUP group DPB,DP,DPE + +; These segments bracket TP, which contains the TLS pointer references + public __TPbegin, __TPend +TPB segment dword use32 public 'DATA' +__TPbegin: +TPB ends +TP segment dword use32 public 'DATA' +TP ends +TPE segment dword use32 public 'DATA' +__TPend: +TPE ends + +DGROUP group TPB,TP,TPE + +_TEXT segment para use32 public 'CODE' + assume CS:_TEXT ; extern (C) void _minit(); ; Converts array of ModuleInfo pointers to a D dynamic array of them, @@ -70,7 +99,7 @@ DGROUP group FMB,FM,FME ; extern (C) ModuleInfo[] _moduleinfo_array; public __minit -__minit proc near +__minit: mov EDX,offset DATAGRP:FMB mov EAX,offset DATAGRP:FME mov dword ptr __moduleinfo_array+4,EDX @@ -78,8 +107,7 @@ __minit proc near shr EAX,2 ; convert to array length mov dword ptr __moduleinfo_array,EAX ret -__minit endp - endcode minit +_TEXT ends end diff --git a/src/rt/minit.obj b/src/rt/minit.obj index 67225d9b945cd67c9e77ca96baf700a5aa3446e6..fde08d4999199a9e151600dde13b63f15454ecee 100644 GIT binary patch literal 484 zcmX|;y>1gh5XWcs?rfjG5^ilbDe?f3EJZwlk2|Nq@_`r062;2MPIQuemVzSzRmyx7 zE}}TH;>4JWmI~+q@c^_4DH3wQ3(#gWn~gHX%9#uQ92Y=2401F}} zA}fe|tKRTwhBQMgN47+>%UYu+X zWoLJ{^A@hh9_VtVO!oTy-kTAH<8cvKE-hsc^^z`$pW{_vF6{)-tKLqWkovDxo|Je{ zfAv|B&cyxMClZJx?tX!e-W}Kg3;Z?DK$;@ev-vt8z*o(mbvrE63T%A;_K$tg`A2nD Yh9#DmwM>fzmlbN8M+{(e3v>>30RR91 literal 317 zcmZn=Vh|`UN{%TiiOJ2(%Pi4LEY5u~&4Ph}&BZ;)KQw^J&6g>{pV`gV35Z>poq~gz zBmA9!*pEv!oUJ$F)(nlgJm>$oA5U~S9bc%vV?L!A&Ff9hL4r|VpWO%|T!o>K5O@xX036BsHBhVm* PCt_kujQU+n3=Aaztd&av diff --git a/src/rt/sections_win32.d b/src/rt/sections_win32.d index ca6d3d04e3..0c09b5cd0b 100644 --- a/src/rt/sections_win32.d +++ b/src/rt/sections_win32.d @@ -18,6 +18,8 @@ version(CRuntime_DigitalMars): debug(PRINTF) import core.stdc.stdio; import rt.minfo; +//version = conservative; + struct SectionGroup { static int opApply(scope int delegate(ref SectionGroup) dg) @@ -47,25 +49,48 @@ struct SectionGroup private: ModuleGroup _moduleGroup; - void[][2] _gcRanges; + version(conservative) + void[][2] _gcRanges; + else + void[][] _gcRanges; } void initSections() nothrow @nogc { _sections._moduleGroup = ModuleGroup(getModuleInfos()); - auto databeg = cast(void*)&_xi_a; - auto dataend = cast(void*)_moduleinfo_array.ptr; - _sections._gcRanges[0] = databeg[0 .. dataend - databeg]; - - // skip module info and CONST segment - auto bssbeg = cast(void*)&_edata; - auto bssend = cast(void*)&_end; - _sections._gcRanges[1] = bssbeg[0 .. bssend - bssbeg]; + version(conservative) + { + auto databeg = cast(void*)&_xi_a; + auto dataend = cast(void*)_moduleinfo_array.ptr; + _sections._gcRanges[0] = databeg[0 .. dataend - databeg]; + + // skip module info and CONST segment + auto bssbeg = cast(void*)&_edata; + auto bssend = cast(void*)&_end; + _sections._gcRanges[1] = bssbeg[0 .. bssend - bssbeg]; + } + else + { + import core.stdc.stdlib : malloc; + + size_t count = &_DPend - &_DPbegin; + auto ranges = cast(void[]*) malloc(count * (void[]).sizeof); + for (size_t i = 0; i < count; i++) + { + void* addr = (&_DPbegin)[i]; + ranges[i] = (cast(void**)addr)[0..1]; // TODO: optimize consecutive pointers into single range + } + _sections._gcRanges = ranges[0..count]; + } } void finiSections() nothrow @nogc { + import core.stdc.stdlib : free; + + version(conservative) {} else + free(_sections._gcRanges.ptr); } void[] initTLSRanges() nothrow @nogc @@ -81,7 +106,16 @@ void finiTLSRanges(void[] rng) nothrow @nogc void scanTLSRanges(void[] rng, scope void delegate(void* pbeg, void* pend) nothrow dg) nothrow { - dg(rng.ptr, rng.ptr + rng.length); + version(conservative) + { + dg(rng.ptr, rng.ptr + rng.length); + } + else + { + size_t count = &_TPend - &_TPbegin; + for (auto p = &_TPbegin; p < &_TPend; p++) + dg(rng.ptr + *p, rng.ptr + *p + (void*).sizeof); + } } private: @@ -112,6 +146,11 @@ extern(C) int _xi_a; // &_xi_a just happens to be start of data segment int _edata; // &_edata is start of BSS segment int _end; // &_end is past end of BSS + + void* _DPbegin; // first entry in the array of pointers addresses + void* _DPend; // &_DPend points after last entry of array + uint _TPbegin; // first entry in the array of TLS offsets of pointers + uint _TPend; // &_DPend points after last entry of array } extern From 2d38937e3ff6597a143e83cf2d2d38c76b117d56 Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Wed, 19 Oct 2016 21:02:08 +0200 Subject: [PATCH 578/768] Fix issue 16470: Segfault with negative array length If the array length is too large, and the element size small enough, the overflow might go undetected in the check while multiplying array size and element size, but it can later manifest when adding padding, etc. https://issues.dlang.org/show_bug.cgi?id=16470 --- src/rt/lifetime.d | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index 03df8d31a4..1b763ab0cf 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -274,9 +274,17 @@ bool __setArrayAllocLength(ref BlkInfo info, size_t newlength, bool isshared, co if(info.size <= 256) { - if(newlength + SMALLPAD + typeInfoSize > info.size) + import core.checkedint; + + bool overflow; + auto newlength_padded = addu(newlength, + addu(SMALLPAD, typeInfoSize, overflow), + overflow); + + if(newlength_padded > info.size || overflow) // new size does not fit inside block return false; + auto length = cast(ubyte *)(info.base + info.size - typeInfoSize - SMALLPAD); if(oldlength != ~0) { @@ -406,24 +414,38 @@ size_t __arrayPad(size_t size, const TypeInfo tinext) nothrow pure @trusted */ BlkInfo __arrayAlloc(size_t arrsize, const TypeInfo ti, const TypeInfo tinext) nothrow pure { + import core.checkedint; + size_t typeInfoSize = structTypeInfoSize(tinext); size_t padsize = arrsize > MAXMEDSIZE ? LARGEPAD : ((arrsize > MAXSMALLSIZE ? MEDPAD : SMALLPAD) + typeInfoSize); - if (arrsize + padsize < arrsize) + bool overflow; + auto padded_size = addu(arrsize, padsize, overflow); + + if (overflow) return BlkInfo(); uint attr = (!(tinext.flags & 1) ? BlkAttr.NO_SCAN : 0) | BlkAttr.APPENDABLE; if (typeInfoSize) attr |= BlkAttr.STRUCTFINAL | BlkAttr.FINALIZE; - return GC.qalloc(arrsize + padsize, attr, ti); + return GC.qalloc(padded_size, attr, ti); } BlkInfo __arrayAlloc(size_t arrsize, ref BlkInfo info, const TypeInfo ti, const TypeInfo tinext) { + import core.checkedint; + if (!info.base) return __arrayAlloc(arrsize, ti, tinext); - return GC.qalloc(arrsize + __arrayPad(arrsize, tinext), info.attr, ti); + bool overflow; + auto padded_size = addu(arrsize, __arrayPad(arrsize, tinext), overflow); + if (overflow) + { + return BlkInfo(); + } + + return GC.qalloc(padded_size, info.attr, ti); } /** From 0de554a84091fb7094d46508c415dab66eb9b86e Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Wed, 19 Oct 2016 21:34:40 +0200 Subject: [PATCH 579/768] Check if the array allocation succeded --- src/rt/lifetime.d | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index 1b763ab0cf..fb6e07474f 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -1570,6 +1570,10 @@ body { info = __arrayAlloc(newsize, ti, tinext); } + + if (info.base is null) + goto Loverflow; + __setArrayAllocLength(info, newsize, isshared, tinext); if(!isshared) __insertBlkInfoCache(info, bic); @@ -1587,6 +1591,8 @@ body { // pointer was null, need to allocate auto info = __arrayAlloc(newsize, ti, tinext); + if (info.base is null) + goto Loverflow; __setArrayAllocLength(info, newsize, isshared, tinext); if(!isshared) __insertBlkInfoCache(info, null); From f1ce9d8bc085f83761150ac83ed6e0373e516f77 Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Wed, 19 Oct 2016 21:51:43 +0200 Subject: [PATCH 580/768] Add tests for "Out of memory exception" --- posix.mak | 2 +- test/allocations/Makefile | 23 +++++++++++++++++++ test/allocations/src/overflow_from_existing.d | 6 +++++ test/allocations/src/overflow_from_zero.d | 6 +++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/allocations/Makefile create mode 100644 test/allocations/src/overflow_from_existing.d create mode 100644 test/allocations/src/overflow_from_zero.d diff --git a/posix.mak b/posix.mak index ec31bb0d5e..024cc4a9e6 100644 --- a/posix.mak +++ b/posix.mak @@ -197,7 +197,7 @@ $(DRUNTIME): $(OBJS) $(SRCS) UT_MODULES:=$(patsubst src/%.d,$(ROOT)/unittest/%,$(SRCS)) HAS_ADDITIONAL_TESTS:=$(shell test -d test && echo 1) ifeq ($(HAS_ADDITIONAL_TESTS),1) - ADDITIONAL_TESTS:=test/init_fini test/exceptions test/coverage test/profile test/cycles + ADDITIONAL_TESTS:=test/init_fini test/exceptions test/coverage test/profile test/cycles test/allocations ADDITIONAL_TESTS+=$(if $(SHARED),test/shared,) endif diff --git a/test/allocations/Makefile b/test/allocations/Makefile new file mode 100644 index 0000000000..aea249be58 --- /dev/null +++ b/test/allocations/Makefile @@ -0,0 +1,23 @@ +include ../common.mak + +TESTS:=overflow_from_zero overflow_from_existing + +DIFF:=diff +SED:=sed + +.PHONY: all clean +all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) + +$(ROOT)/overflow_from_zero.done: STDERR_EXP="Memory allocation failed" +$(ROOT)/overflow_from_existing.done: STDERR_EXP="Memory allocation failed" +$(ROOT)/%.done: $(ROOT)/% + @echo Testing $* + $(NEGATE) $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS) 2>&1 1>/dev/null | head -n 1 | grep -qF $(STDERR_EXP) + @touch $@ + +$(ROOT)/unittest_assert: DFLAGS+=-unittest +$(ROOT)/%: $(SRC)/%.d + $(QUIET)$(DMD) $(DFLAGS) -of$@ $< + +clean: + rm -rf $(GENERATED) diff --git a/test/allocations/src/overflow_from_existing.d b/test/allocations/src/overflow_from_existing.d new file mode 100644 index 0000000000..bbe84434a1 --- /dev/null +++ b/test/allocations/src/overflow_from_existing.d @@ -0,0 +1,6 @@ +void main() +{ + void[] buffer; + buffer.length = 1; + buffer.length = size_t.max; +} diff --git a/test/allocations/src/overflow_from_zero.d b/test/allocations/src/overflow_from_zero.d new file mode 100644 index 0000000000..31f8a1753a --- /dev/null +++ b/test/allocations/src/overflow_from_zero.d @@ -0,0 +1,6 @@ +void main() +{ + void[] buffer; + buffer.length = 0; + buffer.length = size_t.max; +} From fe160cb22d035f21f5bb39ec86553728bec45f91 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 21 Jan 2017 18:57:13 -0800 Subject: [PATCH 581/768] core.stdc.stdlib: annotate with 'scope' --- src/core/stdc/stdlib.d | 58 +++++++++++++++++++++--------------------- src/rt/profilegc.d | 2 +- src/rt/qsort.d | 28 ++++++++++---------- src/rt/trace.d | 4 +-- 4 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/core/stdc/stdlib.d b/src/core/stdc/stdlib.d index 9348c7d107..01b3722c9b 100644 --- a/src/core/stdc/stdlib.d +++ b/src/core/stdc/stdlib.d @@ -32,11 +32,11 @@ extern (C): /* Placed outside @nogc in order to not constrain what the callback does. */ /// -alias int function(in void*, in void*) _compare_fp_t; +alias int function(scope const void*, scope const void*) _compare_fp_t; /// -void* bsearch(in void* key, in void* base, size_t nmemb, size_t size, _compare_fp_t compar); +inout(void)* bsearch(scope const void* key, scope inout(void)* base, size_t nmemb, size_t size, _compare_fp_t compar); /// -void qsort(void* base, size_t nmemb, size_t size, _compare_fp_t compar); +void qsort(scope void* base, size_t nmemb, size_t size, _compare_fp_t compar); nothrow: @@ -81,32 +81,32 @@ else version(CRuntime_Bionic) enum RAND_MAX = 0x7fffffff; else static assert( false, "Unsupported platform" ); /// -double atof(in char* nptr); +double atof(scope const char* nptr); /// -int atoi(in char* nptr); +int atoi(scope const char* nptr); /// -c_long atol(in char* nptr); +c_long atol(scope const char* nptr); /// -long atoll(in char* nptr); +long atoll(scope const char* nptr); /// -double strtod(in char* nptr, char** endptr); +double strtod(scope inout(char)* nptr, scope inout(char)** endptr); /// -float strtof(in char* nptr, char** endptr); +float strtof(scope inout(char)* nptr, scope inout(char)** endptr); /// -c_long strtol(in char* nptr, char** endptr, int base); +c_long strtol(scope inout(char)* nptr, scope inout(char)** endptr, int base); /// -long strtoll(in char* nptr, char** endptr, int base); +long strtoll(scope inout(char)* nptr, scope inout(char)** endptr, int base); /// -c_ulong strtoul(in char* nptr, char** endptr, int base); +c_ulong strtoul(scope inout(char)* nptr, scope inout(char)** endptr, int base); /// -ulong strtoull(in char* nptr, char** endptr, int base); +ulong strtoull(scope inout(char)* nptr, scope inout(char)** endptr, int base); version (CRuntime_Microsoft) { - // strtold exists starting from VS2013, so we make this a template to avoid link errors + // strtold exists starting from VS2013, so we give it D linkage to avoid link errors /// - real strtold()(in char* nptr, char** endptr) + extern (D) real strtold(scope inout(char)* nptr, inout(char)** endptr) { // Fake it 'till we make it return strtod(nptr, endptr); } @@ -114,14 +114,14 @@ version (CRuntime_Microsoft) else version (MinGW) { /// - real __mingw_strtold(in char* nptr, char** endptr); + real __mingw_strtold(scope inout(char)* nptr, scope inout(char)** endptr); /// alias __mingw_strtold strtold; } else version (CRuntime_Bionic) { /// - real strtold(in char* nptr, char** endptr) + real strtold(scope inout(char)* nptr, scope inout(char)** endptr) { // Fake it again till we make it return strtod(nptr, endptr); } @@ -129,7 +129,7 @@ else version (CRuntime_Bionic) else { /// - real strtold(in char* nptr, char** endptr); + real strtold(scope inout(char)* nptr, scope inout(char)** endptr); } // No unsafe pointer manipulation. @@ -175,9 +175,9 @@ int atexit(void function() func); void _Exit(int status); /// -char* getenv(in char* name); +char* getenv(scope const char* name); /// -int system(in char* string); +int system(scope const char* string); // These only operate on integer values. @trusted @@ -198,15 +198,15 @@ int system(in char* string); } /// -int mblen(in char* s, size_t n); +int mblen(scope const char* s, size_t n); /// -int mbtowc(wchar_t* pwc, in char* s, size_t n); +int mbtowc(scope wchar_t* pwc, scope const char* s, size_t n); /// -int wctomb(char*s, wchar_t wc); +int wctomb(scope char* s, wchar_t wc); /// -size_t mbstowcs(wchar_t* pwcs, in char* s, size_t n); +size_t mbstowcs(scope wchar_t* pwcs, scope const char* s, size_t n); /// -size_t wcstombs(char* s, in wchar_t* pwcs, size_t n); +size_t wcstombs(scope char* s, scope const wchar_t* pwcs, size_t n); /// version( DigitalMars ) @@ -222,12 +222,12 @@ else version( GNU ) version( CRuntime_Microsoft ) { /// - ulong _strtoui64(in char *,char **,int); + ulong _strtoui64(scope inout(char)*, scope inout(char)**,int); /// - ulong _wcstoui64(in wchar *,wchar **,int); + ulong _wcstoui64(scope inout(wchar)*, scope inout(wchar)**,int); /// - long _strtoi64(in char *,char **,int); + long _strtoi64(scope inout(char)*, scope inout(char)**,int); /// - long _wcstoi64(in wchar *,wchar **,int); + long _wcstoi64(scope inout(wchar)*, scope inout(wchar)**,int); } diff --git a/src/rt/profilegc.d b/src/rt/profilegc.d index f750808892..a3c5ce6235 100644 --- a/src/rt/profilegc.d +++ b/src/rt/profilegc.d @@ -117,7 +117,7 @@ shared static ~this() Entry entry; // qsort() comparator to sort by count field - extern (C) static int qsort_cmp(const void *r1, const void *r2) + extern (C) static int qsort_cmp(scope const void *r1, scope const void *r2) { auto result1 = cast(Result*)r1; auto result2 = cast(Result*)r2; diff --git a/src/rt/qsort.d b/src/rt/qsort.d index 80b1e2fcce..6c3e71c35c 100644 --- a/src/rt/qsort.d +++ b/src/rt/qsort.d @@ -29,12 +29,12 @@ else version (WatchOS) version (CRuntime_Glibc) { - alias extern (C) int function(const void *, const void *, void *) Cmp; - extern (C) void qsort_r(void *base, size_t nmemb, size_t size, Cmp cmp, void *arg); + alias extern (C) int function(scope const void *, scope const void *, scope void *) Cmp; + extern (C) void qsort_r(scope void *base, size_t nmemb, size_t size, Cmp cmp, scope void *arg); - extern (C) void[] _adSort(void[] a, TypeInfo ti) + extern (C) void[] _adSort(return scope void[] a, TypeInfo ti) { - extern (C) int cmp(in void* p1, in void* p2, void* ti) + extern (C) int cmp(scope const void* p1, scope const void* p2, scope void* ti) { return (cast(TypeInfo)ti).compare(p1, p2); } @@ -44,12 +44,12 @@ version (CRuntime_Glibc) } else version (FreeBSD) { - alias extern (C) int function(void *, const void *, const void *) Cmp; - extern (C) void qsort_r(void *base, size_t nmemb, size_t size, void *thunk, Cmp cmp); + alias extern (C) int function(scope void *, scope const void *, scope const void *) Cmp; + extern (C) void qsort_r(scope void *base, size_t nmemb, size_t size, scope void *thunk, Cmp cmp); - extern (C) void[] _adSort(void[] a, TypeInfo ti) + extern (C) void[] _adSort(return scope void[] a, TypeInfo ti) { - extern (C) int cmp(void* ti, in void* p1, in void* p2) + extern (C) int cmp(scope void* ti, scope const void* p1, scope const void* p2) { return (cast(TypeInfo)ti).compare(p1, p2); } @@ -59,12 +59,12 @@ else version (FreeBSD) } else version (Darwin) { - alias extern (C) int function(void *, const void *, const void *) Cmp; - extern (C) void qsort_r(void *base, size_t nmemb, size_t size, void *thunk, Cmp cmp); + alias extern (C) int function(scope void *, scope const void *, scope const void *) Cmp; + extern (C) void qsort_r(scope void *base, size_t nmemb, size_t size, scope void *thunk, Cmp cmp); - extern (C) void[] _adSort(void[] a, TypeInfo ti) + extern (C) void[] _adSort(return scope void[] a, TypeInfo ti) { - extern (C) int cmp(void* ti, in void* p1, in void* p2) + extern (C) int cmp(scope void* ti, scope const void* p1, scope const void* p2) { return (cast(TypeInfo)ti).compare(p1, p2); } @@ -76,9 +76,9 @@ else { private TypeInfo tiglobal; - extern (C) void[] _adSort(void[] a, TypeInfo ti) + extern (C) void[] _adSort(return scope void[] a, TypeInfo ti) { - extern (C) int cmp(in void* p1, in void* p2) + extern (C) int cmp(scope const void* p1, scope const void* p2) { return tiglobal.compare(p1, p2); } diff --git a/src/rt/trace.d b/src/rt/trace.d index e21997e70d..07fd333cd0 100644 --- a/src/rt/trace.d +++ b/src/rt/trace.d @@ -156,7 +156,7 @@ private void stack_free(Stack *s) ////////////////////////////////////// // Qsort() comparison routine for array of pointers to SymPair's. -private int sympair_cmp(in void* e1, in void* e2) +private int sympair_cmp(scope const void* e1, scope const void* e2) { auto count1 = (*cast(SymPair**)e1).count; auto count2 = (*cast(SymPair**)e2).count; @@ -271,7 +271,7 @@ private void trace_array(Symbol*[] psymbols, Symbol *s, ref uint u) ////////////////////////////////////// // Qsort() comparison routine for array of pointers to Symbol's. -private int symbol_cmp(in void* e1, in void* e2) +private int symbol_cmp(scope const void* e1, scope const void* e2) { auto ps1 = cast(Symbol **)e1; auto ps2 = cast(Symbol **)e2; From b947d44a6f2050a32261b3dfac96d5b5ad7578a5 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Mon, 13 Feb 2017 12:08:47 +0100 Subject: [PATCH 582/768] implement precise scan DATA and TLS for MS-COFF builds --- src/rt/sections_win64.d | 46 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/src/rt/sections_win64.d b/src/rt/sections_win64.d index 834e9048d7..f7f1d0ecc7 100644 --- a/src/rt/sections_win64.d +++ b/src/rt/sections_win64.d @@ -19,6 +19,8 @@ debug(PRINTF) import core.stdc.stdio; import core.stdc.stdlib : malloc, free; import rt.deh, rt.minfo; +//version = conservative; + struct SectionGroup { static int opApply(scope int delegate(ref SectionGroup) dg) @@ -56,7 +58,10 @@ struct SectionGroup private: ModuleGroup _moduleGroup; - void[][1] _gcRanges; + version(conservative) + void[][1] _gcRanges; + else + void[][] _gcRanges; } void initSections() nothrow @nogc @@ -64,14 +69,31 @@ void initSections() nothrow @nogc _sections._moduleGroup = ModuleGroup(getModuleInfos()); // the ".data" image section includes both object file sections ".data" and ".bss" - _sections._gcRanges[0] = findImageSection(".data"); - debug(PRINTF) printf("found .data section: [%p,+%llx]\n", _sections._gcRanges[0].ptr, - cast(ulong)_sections._gcRanges[0].length); + void[] dataSection = findImageSection(".data"); + debug(PRINTF) printf("found .data section: [%p,+%llx]\n", dataSection.ptr, + cast(ulong)dataSection.length); + version(conservative) + { + _sections._gcRanges[0] = dataSection; + } + else + { + size_t count = &_DP_end - &_DP_beg; + auto ranges = cast(void[]*) malloc(count * (void[]).sizeof); + for (size_t i = 0; i < count; i++) + { + void* addr = dataSection.ptr + (&_DP_beg)[i]; + ranges[i] = (cast(void**)addr)[0..1]; // TODO: optimize consecutive pointers into single range + } + _sections._gcRanges = ranges[0..count]; + } } void finiSections() nothrow @nogc { .free(cast(void*)_sections.modules.ptr); + version(conservative) {} else + .free(_sections._gcRanges.ptr); } void[] initTLSRanges() nothrow @nogc @@ -87,7 +109,16 @@ void finiTLSRanges(void[] rng) nothrow @nogc void scanTLSRanges(void[] rng, scope void delegate(void* pbeg, void* pend) nothrow dg) nothrow { - dg(rng.ptr, rng.ptr + rng.length); + version(conservative) + { + dg(rng.ptr, rng.ptr + rng.length); + } + else + { + size_t count = &_TP_end - &_TP_beg; + for (auto p = &_TP_beg; p < &_TP_end; p++) + dg(rng.ptr + *p, rng.ptr + *p + (void*).sizeof); + } } private: @@ -142,6 +173,11 @@ extern(C) void* _deh_beg; void* _deh_end; + + uint _DP_beg; + uint _DP_end; + uint _TP_beg; + uint _TP_end; } extern From f5f3f98a06a17fe0f63e5d389a77e423422dda80 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Thu, 16 Feb 2017 08:08:12 -0500 Subject: [PATCH 583/768] Push back deprecation of cycle detection one more major release --- src/rt/minfo.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 602bbcfa46..5757c7673d 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -182,7 +182,7 @@ struct ModuleGroup ignore } - // Change default to .abort in 2.073 + // Change default to .abort in 2.074 auto onCycle = OnCycle.deprecate; switch(cycleHandling) with(OnCycle) @@ -517,7 +517,7 @@ struct ModuleGroup import core.stdc.stdio : fprintf, stderr; fprintf(stderr, "Deprecation 16211 warning:\n" ~ "A cycle has been detected in your program that was undetected prior to DMD\n" - ~ "2.072. This program will continue, but will not operate when using DMD 2.073\n" + ~ "2.072. This program will continue, but will not operate when using DMD 2.074\n" ~ "to compile. Use runtime option --DRT-oncycle=print to see the cycle details.\n"); } From d198b68d97d8044f4690ae72b15af47624d040a3 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sun, 25 Dec 2016 09:51:50 +0100 Subject: [PATCH 584/768] CircleCi: use master as fallback for DMD --- circle.yml | 1 + circleci.sh | 26 ++++++++++++++++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/circle.yml b/circle.yml index 5977d59a63..75ce6ddb19 100644 --- a/circle.yml +++ b/circle.yml @@ -7,6 +7,7 @@ dependencies: test: override: - make -f posix.mak style + - ./circleci.sh setup-repos - ./circleci.sh coverage: parallel: true timeout: 1200 diff --git a/circleci.sh b/circleci.sh index ca85a114ce..198d47de33 100755 --- a/circleci.sh +++ b/circleci.sh @@ -19,7 +19,8 @@ install_deps() { fi for i in {0..4}; do - if curl -fsS -A "$CURL_USER_AGENT" --max-time 5 https://dlang.org/install.sh -O; then + if curl -fsS -A "$CURL_USER_AGENT" --max-time 5 https://dlang.org/install.sh -O || + curl -fsS -A "$CURL_USER_AGENT" --max-time 5 https://nightlies.dlang.org/install.sh -O ; then break elif [ $i -ge 4 ]; then sleep $((1 << $i)) @@ -51,12 +52,15 @@ clone() { done } -coverage() { +setup_repos() { + # set a default in case we run into rate limit restrictions + local base_branch="" if [ -n "${CIRCLE_PR_NUMBER:-}" ]; then - local base_branch=$(curl -fsSL https://api.github.com/repos/dlang/$CIRCLE_PROJECT_REPONAME/pulls/$CIRCLE_PR_NUMBER | jq -r '.base.ref') + base_branch=$((curl -fsSL https://api.github.com/repos/dlang/$CIRCLE_PROJECT_REPONAME/pulls/$CIRCLE_PR_NUMBER || echo) | jq -r '.base.ref') else - local base_branch=$CIRCLE_BRANCH + base_branch=$CIRCLE_BRANCH fi + base_branch=${base_branch:-"master"} # merge upstream branch with changes, s.t. we check with the latest changes if [ -n "${CIRCLE_PR_NUMBER:-}" ]; then @@ -69,9 +73,18 @@ coverage() { git merge -m "Automatic merge" $current_branch fi + for proj in dmd ; do + if [ $base_branch != master ] && [ $base_branch != stable ] && + ! git ls-remote --exit-code --heads https://github.com/dlang/$proj.git $base_branch > /dev/null; then + # use master as fallback for other repos to test feature branches + clone https://github.com/dlang/$proj.git ../$proj master --depth 1 + else + clone https://github.com/dlang/$proj.git ../$proj $base_branch --depth 1 + fi + done +} - clone https://github.com/dlang/dmd.git ../dmd $base_branch --depth 1 - +coverage() { # load environment for bootstrap compiler source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash ~/dlang/install.sh dmd-$HOST_DMD_VER --activate)" @@ -83,5 +96,6 @@ coverage() { case $1 in install-deps) install_deps ;; + setup-repos) setup_repos ;; coverage) coverage ;; esac From 71b8a6f5b75413801466cdc06d300ad1fd8a85c4 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 16 Feb 2017 14:47:08 +0100 Subject: [PATCH 585/768] Set bootstrap DMD version to 2.072.2 --- circleci.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circleci.sh b/circleci.sh index 198d47de33..4780a521aa 100755 --- a/circleci.sh +++ b/circleci.sh @@ -2,7 +2,7 @@ set -uexo pipefail -HOST_DMD_VER=2.068.2 # same as in dmd/src/posix.mak +HOST_DMD_VER=2.072.2 # same as in dmd/src/posix.mak CURL_USER_AGENT="CirleCI $(curl --version | head -n 1)" N=2 CIRCLE_NODE_INDEX=${CIRCLE_NODE_INDEX:-0} From 190001d27b381b0cde77fe95d6b499a0c39d4b7f Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 16 Feb 2017 15:25:24 +0100 Subject: [PATCH 586/768] Add fallback for CodeCov --- circle.yml | 4 +--- circleci.sh | 49 +++++++++++++++++++++++++++++++++---------------- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/circle.yml b/circle.yml index 75ce6ddb19..1f6682064d 100644 --- a/circle.yml +++ b/circle.yml @@ -13,6 +13,4 @@ test: timeout: 1200 post: - # CodeCov gets confused by stored .lst files - - rm -rf test/coverage/generated - - bash <(curl -s https://codecov.io/bash) + - ./circleci.sh codecov diff --git a/circleci.sh b/circleci.sh index 4780a521aa..d20cad3df8 100755 --- a/circleci.sh +++ b/circleci.sh @@ -6,29 +6,37 @@ HOST_DMD_VER=2.072.2 # same as in dmd/src/posix.mak CURL_USER_AGENT="CirleCI $(curl --version | head -n 1)" N=2 CIRCLE_NODE_INDEX=${CIRCLE_NODE_INDEX:-0} +CIRCLE_PROJECT_REPONAME=${CIRCLE_PROJECT_REPONAME:-druntime} case $CIRCLE_NODE_INDEX in 0) MODEL=64 ;; 1) MODEL=32 ;; esac -install_deps() { - if [ $MODEL -eq 32 ]; then - sudo apt-get update - sudo apt-get install g++-multilib - fi - +download() { + local url="$1" + local fallbackurl="$2" + local outputfile="$3" for i in {0..4}; do - if curl -fsS -A "$CURL_USER_AGENT" --max-time 5 https://dlang.org/install.sh -O || - curl -fsS -A "$CURL_USER_AGENT" --max-time 5 https://nightlies.dlang.org/install.sh -O ; then + if curl -fsS -A "$CURL_USER_AGENT" --max-time 5 "$url" -o "$outputfile" || + curl -fsS -A "$CURL_USER_AGENT" --max-time 5 "$fallbackurl" -o "$outputfile" ; then break elif [ $i -ge 4 ]; then sleep $((1 << $i)) else - echo 'Failed to download install script' 1>&2 + echo "Failed to download script ${outputfile}" 1>&2 exit 1 fi done +} + +install_deps() { + if [ $MODEL -eq 32 ]; then + sudo apt-get update + sudo apt-get install g++-multilib + fi + + download "https://dlang.org/install.sh" "https://nightlies.dlang.org/install.sh" "install.sh" source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash install.sh dmd-$HOST_DMD_VER --activate)" $DC --version @@ -64,13 +72,13 @@ setup_repos() { # merge upstream branch with changes, s.t. we check with the latest changes if [ -n "${CIRCLE_PR_NUMBER:-}" ]; then - local current_branch=$(git rev-parse --abbrev-ref HEAD) - git config user.name dummyuser - git config user.email dummyuser@dummyserver.com - git remote add upstream https://github.com/dlang/druntime.git - git fetch upstream - git checkout -f upstream/$base_branch - git merge -m "Automatic merge" $current_branch + local head=$(git rev-parse HEAD) + git fetch https://github.com/dlang/$CIRCLE_PROJECT_REPONAME.git $base_branch + git checkout -f FETCH_HEAD + local base=$(git rev-parse HEAD) + git config user.name 'CI' + git config user.email '<>' + git merge -m "Merge $head into $base" $head fi for proj in dmd ; do @@ -94,8 +102,17 @@ coverage() { TEST_COVERAGE="1" make -j$N -C . -f posix.mak MODEL=$MODEL unittest-debug } +codecov() +{ + # CodeCov gets confused by lst files which it can't matched + rm -rf test/runnable/extra-files + download "https://codecov.io/bash" "https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov" "codecov.sh" + bash codecov.sh +} + case $1 in install-deps) install_deps ;; setup-repos) setup_repos ;; coverage) coverage ;; + codecov) codecov ;; esac From 1682d130f6c499713f2845b0ab77c2b49701da87 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Fri, 17 Feb 2017 09:47:28 -0500 Subject: [PATCH 587/768] Update handling of previously undetected cycles to abort execution. --- src/rt/minfo.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 190cce279c..838865a547 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -183,7 +183,7 @@ struct ModuleGroup } // Change default to .abort in 2.073 - auto onCycle = OnCycle.deprecate; + auto onCycle = OnCycle.abort; switch(cycleHandling) with(OnCycle) { From e47d8b4890434a5df6b42f9b81a186fb5d6e2160 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sat, 18 Feb 2017 00:02:04 +0100 Subject: [PATCH 588/768] Update changelog README --- changelog/README.md | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/changelog/README.md b/changelog/README.md index 48ceb6a06b..874d70fe0f 100644 --- a/changelog/README.md +++ b/changelog/README.md @@ -1,21 +1,31 @@ +This directory will get copied to dlang.org and cleared when master gets +merged into stable prior to a new release. + How to add a new changelog entry to the pending changelog? ========================================================== -This will get copied to dlang.org and cleared when master gets -merged into stable prior to a new release. +Create a new file in the `changelog` folder. It should end with `.dd` and look +similar to a git commit message. The first line represents the title of the change. +After an empty line follows the long description: ``` -My fancy new feature X +My fancy title of the new feature -A long description of the new feature. +A long description of the new feature in `std.range`. +It can be followed by an example: ------- -import std.range; -import std.algorithm.comparison; +import std.range : padLeft, padRight; +import std.algorithm.comparison : equal; assert([1, 2, 3, 4, 5].padLeft(0, 7).equal([0, 0, 1, 2, 3, 4, 5])); assert("Hello World!".padRight('!', 15).equal("Hello World!!!!")); ------- +and links to the documentation, e.g. $(REF drop, std, range) or +$(REF_ALTTEXT a custom name for the function, drop, std, range). + +Links to the spec can look like this $(LINK2 $(ROOT_DIR)spec/module.html, this) +and of course you can link to other $(LINK2 https://forum.dlang.org/, external resources). ``` The title can't contain links (it's already one). @@ -24,11 +34,9 @@ For more infos, see the [Ddoc spec](https://dlang.org/spec/ddoc.html). Preview changes --------------- -If you have cloned the [tools](https://github.com/dlang/tools) and [dlang.org](https://github.com/dlang/dlang.org) repo), -you can preview the changelog: +If you have cloned the [tools](https://github.com/dlang/tools) and [dlang.org](https://github.com/dlang/dlang.org) repo, +you can preview the changelog with: ``` -../tools/changed.d -o ../dlang.org/changelog/pending.dd && make -C ../dlang.org -f posix.mak html +make -C ../dlang.org -f posix.mak pending_changelog ``` - -and then open `../dlang.org/web/changelog/pending.html` with your favorite browser. From e5f05f33de0c6b7670f8342463296e6486c06d5b Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 18 Feb 2017 09:23:49 +0100 Subject: [PATCH 589/768] OMF: move pointer reference data to CODE segment --- src/rt/minit.asm | 19 ++++++++++--------- src/rt/minit.obj | Bin 484 -> 485 bytes 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/rt/minit.asm b/src/rt/minit.asm index a932442545..64a307fdf2 100644 --- a/src/rt/minit.asm +++ b/src/rt/minit.asm @@ -10,7 +10,8 @@ ; (See accompanying file LICENSE or copy at ; http://www.boost.org/LICENSE_1_0.txt) ; -;include macros.asm +; With VC installed, build with: +; ml /omf minit.asm .model FLAT @@ -65,29 +66,29 @@ DGROUP group FMB,FM,FME ; These segments bracket DP, which contains the _DATA pointer references public __DPbegin, __DPend -DPB segment dword use32 public 'DATA' +DPB segment dword use32 public 'CODE' __DPbegin: DPB ends -DP segment dword use32 public 'DATA' +DP segment dword use32 public 'CODE' DP ends -DPE segment dword use32 public 'DATA' +DPE segment dword use32 public 'CODE' __DPend: DPE ends -DGROUP group DPB,DP,DPE +CGROUP group DPB,DP,DPE ; These segments bracket TP, which contains the TLS pointer references public __TPbegin, __TPend -TPB segment dword use32 public 'DATA' +TPB segment dword use32 public 'CODE' __TPbegin: TPB ends -TP segment dword use32 public 'DATA' +TP segment dword use32 public 'CODE' TP ends -TPE segment dword use32 public 'DATA' +TPE segment dword use32 public 'CODE' __TPend: TPE ends -DGROUP group TPB,TP,TPE +CGROUP group TPB,TP,TPE _TEXT segment para use32 public 'CODE' assume CS:_TEXT diff --git a/src/rt/minit.obj b/src/rt/minit.obj index fde08d4999199a9e151600dde13b63f15454ecee..9aaa62d036f590b699220915cc90d6f6cd036df8 100644 GIT binary patch delta 316 zcmaFD{FGU)ft!IdH#0A@L@%*8_s+Cv1_maV0H%-tHfQ%B|ImrzzV%@<*cmdV83aTb zw}V&=4BR4&H-M~_3=C`{jB_C@K@rAD5Eh3B<7^0vN0@O2h{eJnB+S?c5#twToC;yF zio*0Vi83yLh_Q>p^m2+a&V-2RGmA3LhcNj>8K=x*V&ICJ#lgV)pZPz_e^!rKd<-oA zIsbG0=l;+0pZ7nX=wx0-gIH#6_V{?0fYiJc1_p*B69gETIXOWBNvY|Xc|f5rAR!*0 rPzYS;;RHSgW{5U93|KmkTZpa3{{fSRg0SQr=vpnd4)n&R+1xz=pD5biQkEN7KZAnTqmCrO+8Kwu-0@JOk&2+6=^O)|H z9i~}rV0Y^tV)4Y6mRJcTl2|&D{8W9~*fvox9uJ0-;sC&F*@dyT3Hy`7ym0BeNwG`W cfBGmBn8eMpzu9wjM*Xmj!2P=$Rgbjw3!T46Hvj+t From 37491945208d827deec4d700749710048b7818b6 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 18 Feb 2017 15:44:55 +0100 Subject: [PATCH 590/768] windows: disable precise scanning of DATA/TLS --- src/rt/sections_win32.d | 2 +- src/rt/sections_win64.d | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rt/sections_win32.d b/src/rt/sections_win32.d index 0c09b5cd0b..1343c94985 100644 --- a/src/rt/sections_win32.d +++ b/src/rt/sections_win32.d @@ -18,7 +18,7 @@ version(CRuntime_DigitalMars): debug(PRINTF) import core.stdc.stdio; import rt.minfo; -//version = conservative; +version = conservative; struct SectionGroup { diff --git a/src/rt/sections_win64.d b/src/rt/sections_win64.d index f7f1d0ecc7..0dbeb48599 100644 --- a/src/rt/sections_win64.d +++ b/src/rt/sections_win64.d @@ -19,7 +19,7 @@ debug(PRINTF) import core.stdc.stdio; import core.stdc.stdlib : malloc, free; import rt.deh, rt.minfo; -//version = conservative; +version = conservative; struct SectionGroup { From aa92c867a1e3700ac7fcd13e61afaa8616b2b9eb Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 18 Feb 2017 17:50:30 -0800 Subject: [PATCH 591/768] workaround sscanf bug in old snn.lib --- src/gc/config.d | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/gc/config.d b/src/gc/config.d index 7cb5b1e6c8..3ac7403b9c 100644 --- a/src/gc/config.d +++ b/src/gc/config.d @@ -180,8 +180,32 @@ body assert(n > 4 && n < fmt.length); int nscanned; - if (sscanf(str.ptr, fmt.ptr, &res, &nscanned) < 1) - return parseError("a float", optname, str); + version (Win32) + { + /* Older sscanf's in snn.lib can write to its first argument, causing a crash + * if the string is in readonly memory. Recent updates to DMD + * https://github.com/dlang/dmd/pull/6546 + * put string literals in readonly memory. + * Although sscanf has been fixed, + * http://ftp.digitalmars.com/snn.lib + * this workaround is here so it still works with the older snn.lib. + */ + // Create mutable copy of str + const length = str.length; + char* mptr = cast(char*)malloc(length + 1); + assert(mptr); + memcpy(mptr, str.ptr, length); + mptr[length] = 0; + const result = sscanf(mptr, fmt.ptr, &res, &nscanned); + free(mptr); + if (result < 1) + return parseError("a float", optname, str); + } + else + { + if (sscanf(str.ptr, fmt.ptr, &res, &nscanned) < 1) + return parseError("a float", optname, str); + } str = str[nscanned .. $]; return true; } From bdaeba55cc3716633373be305baac3d386aef48b Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 21 Feb 2017 12:53:18 +0100 Subject: [PATCH 592/768] use correct version CRuntime_DigitalMars --- src/gc/config.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gc/config.d b/src/gc/config.d index 3ac7403b9c..b0789cd2b2 100644 --- a/src/gc/config.d +++ b/src/gc/config.d @@ -180,7 +180,7 @@ body assert(n > 4 && n < fmt.length); int nscanned; - version (Win32) + version (CRuntime_DigitalMars) { /* Older sscanf's in snn.lib can write to its first argument, causing a crash * if the string is in readonly memory. Recent updates to DMD From 2d06b368aff08368266a1b4b78b7bef0d98f3132 Mon Sep 17 00:00:00 2001 From: Tomer Filiba Date: Tue, 21 Feb 2017 18:15:24 +0200 Subject: [PATCH 593/768] Fix wrong version name in core.sys.linux.ifaddrs --- src/core/sys/linux/ifaddrs.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/linux/ifaddrs.d b/src/core/sys/linux/ifaddrs.d index 1fc5e88513..bfdd59bf8f 100644 --- a/src/core/sys/linux/ifaddrs.d +++ b/src/core/sys/linux/ifaddrs.d @@ -18,7 +18,7 @@ module core.sys.linux.ifaddrs; import core.sys.posix.sys.socket; -version (Linux): +version (linux): extern (C): nothrow: @nogc: From 680b2b3e234b0b79704983691c03c22e4b18d6a6 Mon Sep 17 00:00:00 2001 From: "H. S. Teoh" Date: Tue, 21 Feb 2017 13:44:11 -0800 Subject: [PATCH 594/768] Remove support for deprecated built-in array.reverse property. --- src/rt/adi.d | 277 --------------------------------------------------- 1 file changed, 277 deletions(-) diff --git a/src/rt/adi.d b/src/rt/adi.d index 99b579b073..44f0e15927 100644 --- a/src/rt/adi.d +++ b/src/rt/adi.d @@ -24,283 +24,6 @@ private extern (C) void[] _adSort(void[] a, TypeInfo ti); } - -/********************************************** - * Reverse array of chars. - * Handled separately because embedded multibyte encodings should not be - * reversed. - */ - -extern (C) char[] _adReverseChar(char[] a) -{ - if (a.length > 1) - { - char[6] tmp; - char[6] tmplo; - char* lo = a.ptr; - char* hi = &a[$ - 1]; - - while (lo < hi) - { auto clo = *lo; - auto chi = *hi; - - debug(adi) printf("lo = %d, hi = %d\n", lo, hi); - if (clo <= 0x7F && chi <= 0x7F) - { - debug(adi) printf("\tascii\n"); - *lo = chi; - *hi = clo; - lo++; - hi--; - continue; - } - - uint stridelo = UTF8stride[clo]; - - uint stridehi = 1; - while ((chi & 0xC0) == 0x80) - { - chi = *--hi; - stridehi++; - assert(hi >= lo); - } - if (lo == hi) - break; - - debug(adi) printf("\tstridelo = %d, stridehi = %d\n", stridelo, stridehi); - if (stridelo == stridehi) - { - - memcpy(tmp.ptr, lo, stridelo); - memcpy(lo, hi, stridelo); - memcpy(hi, tmp.ptr, stridelo); - lo += stridelo; - hi--; - continue; - } - - /* Shift the whole array. This is woefully inefficient - */ - memcpy(tmp.ptr, hi, stridehi); - memcpy(tmplo.ptr, lo, stridelo); - memmove(lo + stridehi, lo + stridelo , cast(size_t)((hi - lo) - stridelo)); - memcpy(lo, tmp.ptr, stridehi); - memcpy(hi + stridehi - stridelo, tmplo.ptr, stridelo); - - lo += stridehi; - hi = hi - 1 + cast(int)(stridehi - stridelo); - } - } - return a; -} - -unittest -{ - auto a = "abcd"c[]; - - auto r = _adReverseChar(a.dup); - //writefln(r); - assert(r == "dcba"); - - a = "a\u1235\u1234c"; - //writefln(a); - r = _adReverseChar(a.dup); - //writefln(r); - assert(r == "c\u1234\u1235a"); - - a = "ab\u1234c"; - //writefln(a); - r = _adReverseChar(a.dup); - //writefln(r); - assert(r == "c\u1234ba"); - - a = "\u3026\u2021\u3061\n"; - r = _adReverseChar(a.dup); - assert(r == "\n\u3061\u2021\u3026"); -} - - -/********************************************** - * Reverse array of wchars. - * Handled separately because embedded multiword encodings should not be - * reversed. - */ - -extern (C) wchar[] _adReverseWchar(wchar[] a) -{ - if (a.length > 1) - { - wchar[2] tmplo = void; - wchar[2] tmphi = void; - wchar* lo = a.ptr; - wchar* hi = &a[$ - 1]; - - while (lo < hi) - { auto clo = *lo; - auto chi = *hi; - - if ((clo < 0xD800 || clo > 0xDFFF) && - (chi < 0xD800 || chi > 0xDFFF)) - { - *lo = chi; - *hi = clo; - lo++; - hi--; - continue; - } - - int stridelo = 1 + (clo >= 0xD800 && clo <= 0xDBFF); - - int stridehi = 1; - if (chi >= 0xDC00 && chi <= 0xDFFF) - { - chi = *--hi; - stridehi++; - assert(hi >= lo); - } - if (lo == hi) - break; - - if (stridelo == stridehi) - { - wchar[2] stmp; - - assert(stridelo == 2); - stmp = lo[0 .. 2]; - lo[0 .. 2] = hi[0 .. 2]; - hi[0 .. 2] = stmp; - lo += stridelo; - hi--; - continue; - } - - /* Shift the whole array. This is woefully inefficient - */ - memcpy(tmplo.ptr, lo, stridelo * wchar.sizeof); - memcpy(tmphi.ptr, hi, stridehi * wchar.sizeof); - memmove(lo + stridehi, lo + stridelo , (hi - (lo + stridelo)) * wchar.sizeof); - memcpy(lo, tmphi.ptr, stridehi * wchar.sizeof); - memcpy(hi + (stridehi - stridelo), tmplo.ptr, stridelo * wchar.sizeof); - - lo += stridehi; - hi = hi - 1 + (stridehi - stridelo); - } - } - return a; -} - -unittest -{ - { - wstring a = "abcd"; - - auto r = _adReverseWchar(a.dup); - assert(r == "dcba"); - - a = "a\U00012356\U00012346c"; - r = _adReverseWchar(a.dup); - assert(r == "c\U00012346\U00012356a"); - - a = "ab\U00012345c"; - r = _adReverseWchar(a.dup); - assert(r == "c\U00012345ba"); - } - { - wstring a = "a\U00000081b\U00002000c\U00010000"; - wchar[] b = a.dup; - - _adReverseWchar(b); - _adReverseWchar(b); - assert(b == "a\U00000081b\U00002000c\U00010000"); - } -} - - -/********************************************** - * Support for array.reverse property. - */ - -extern (C) void[] _adReverse(void[] a, size_t szelem) -out (result) -{ - assert(result is a); -} -body -{ - if (a.length >= 2) - { - byte* tmp; - byte[16] buffer; - - void* lo = a.ptr; - void* hi = a.ptr + (a.length - 1) * szelem; - - tmp = buffer.ptr; - if (szelem > 16) - { - //version (Windows) - tmp = cast(byte*) alloca(szelem); - //else - //tmp = GC.malloc(szelem); - } - - for (; lo < hi; lo += szelem, hi -= szelem) - { - memcpy(tmp, lo, szelem); - memcpy(lo, hi, szelem); - memcpy(hi, tmp, szelem); - } - - version (Windows) - { - } - else - { - //if (szelem > 16) - // BUG: bad code is generate for delete pointer, tries - // to call delclass. - //GC.free(tmp); - } - } - return a; -} - -unittest -{ - debug(adi) printf("array.reverse.unittest\n"); - - int[] a = new int[5]; - int[] b; - - for (auto i = 0; i < 5; i++) - a[i] = i; - *(cast(void[]*)&b) = _adReverse(*cast(void[]*)&a, a[0].sizeof); - assert(b is a); - for (auto i = 0; i < 5; i++) - assert(a[i] == 4 - i); - - struct X20 - { // More than 16 bytes in size - int a; - int b, c, d, e; - } - - X20[] c = new X20[5]; - X20[] d; - - for (auto i = 0; i < 5; i++) - { c[i].a = i; - c[i].e = 10; - } - *(cast(void[]*)&d) = _adReverse(*(cast(void[]*)&c), c[0].sizeof); - assert(d is c); - for (auto i = 0; i < 5; i++) - { - assert(c[i].a == 4 - i); - assert(c[i].e == 10); - } -} - private dchar[] mallocUTF32(C)(in C[] s) { size_t j = 0; From b925aa2467bfc204d2cc02b3c67e71f60353db17 Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Fri, 24 Feb 2017 16:12:35 +0100 Subject: [PATCH 595/768] Change version(Linux) to version(linux) --- src/core/sys/linux/sched.d | 2 +- src/core/sys/linux/sys/netinet/tcp.d | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/sys/linux/sched.d b/src/core/sys/linux/sched.d index 6dc6e33655..52938b55e5 100644 --- a/src/core/sys/linux/sched.d +++ b/src/core/sys/linux/sched.d @@ -18,7 +18,7 @@ import core.sys.posix.sched; import core.sys.posix.config; import core.sys.posix.sys.types; -version (Linux): +version (linux): extern (C): @nogc: nothrow: diff --git a/src/core/sys/linux/sys/netinet/tcp.d b/src/core/sys/linux/sys/netinet/tcp.d index b4acdd23c4..67458f63c1 100644 --- a/src/core/sys/linux/sys/netinet/tcp.d +++ b/src/core/sys/linux/sys/netinet/tcp.d @@ -43,7 +43,7 @@ module core.sys.linux.sys.netinet.tcp; * @(#)tcp.h 8.1 (Berkeley) 6/10/93 */ -version (Linux): +version (linux): /// User-settable options (used with setsockopt). enum From 2bf7ad5dfdc891ea5b0afa49beff790e926cc184 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sun, 26 Feb 2017 04:32:40 +0000 Subject: [PATCH 596/768] core.sys.linux.sched: Fix DDoc syntax --- src/core/sys/linux/sched.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/linux/sched.d b/src/core/sys/linux/sched.d index 52938b55e5..fe5fd72b8c 100644 --- a/src/core/sys/linux/sched.d +++ b/src/core/sys/linux/sched.d @@ -67,7 +67,7 @@ struct cpu_set_t cpu_mask[__CPU_SETSIZE / __NCPUBITS] __bits; } -/// Access macros for `cpu_set' (missing a lot of them) +/// Access macros for 'cpu_set' (missing a lot of them) cpu_mask CPU_SET(size_t cpu, cpu_set_t* cpusetp) pure { From 6ed294bb9a09ce8d63743951ae03b535eaeff4f1 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 26 Feb 2017 17:38:25 +0100 Subject: [PATCH 597/768] adding Jenkinsfile to hook with new ci2.dawg.eu instance - should transfer the ownership of the ci repo to dlang/ci --- Jenkinsfile | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..eb9fbdedab --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,20 @@ +#!/bin/env groovy + +def clone (repo_url, git_ref = "master") { + checkout( + poll: false, + scm: [ + $class: 'GitSCM', + branches: [[name: git_ref]], + extensions: [[$class: 'CleanBeforeCheckout']], + userRemoteConfigs: [[url: repo_url]] + ] + ) +} + +node { + dir('dlang/ci') { + clone 'https://github.com/Dicebot/dlangci.git' + } + load 'dlang/ci/pipeline.groovy' +} From 611a4a85caf320b4a920ca3e78eae29b26d52681 Mon Sep 17 00:00:00 2001 From: RazvanN7 Date: Wed, 1 Mar 2017 15:13:06 +0200 Subject: [PATCH 598/768] Updated makefile to use generated/os/release/model/dmd --- posix.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posix.mak b/posix.mak index 024cc4a9e6..a2f7bc1f50 100644 --- a/posix.mak +++ b/posix.mak @@ -21,7 +21,7 @@ ifneq ($(BUILD),release) endif endif -DMD=../dmd/src/dmd +DMD=../dmd/generated/$(OS)/release/$(MODEL)/dmd INSTALL_DIR=../install DOCDIR=doc From 0b555a2e6f44113d892d4c177aceb7aec74d3969 Mon Sep 17 00:00:00 2001 From: MoGu Date: Wed, 1 Mar 2017 08:04:23 +0800 Subject: [PATCH 599/768] Update windows console text attributes --- src/core/sys/windows/wincon.d | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/core/sys/windows/wincon.d b/src/core/sys/windows/wincon.d index 5c32b7ba8b..7a1be88561 100644 --- a/src/core/sys/windows/wincon.d +++ b/src/core/sys/windows/wincon.d @@ -17,14 +17,24 @@ private import core.sys.windows.w32api, core.sys.windows.windef; // FIXME: clean up Windows version support enum { - FOREGROUND_BLUE = 1, - FOREGROUND_GREEN = 2, - FOREGROUND_RED = 4, - FOREGROUND_INTENSITY = 8, - BACKGROUND_BLUE = 16, - BACKGROUND_GREEN = 32, - BACKGROUND_RED = 64, - BACKGROUND_INTENSITY = 128 + FOREGROUND_BLUE = 0x0001, + FOREGROUND_GREEN = 0x0002, + FOREGROUND_RED = 0x0004, + FOREGROUND_INTENSITY = 0x0008, + BACKGROUND_BLUE = 0x0010, + BACKGROUND_GREEN = 0x0020, + BACKGROUND_RED = 0x0040, + BACKGROUND_INTENSITY = 0x0080, + + COMMON_LVB_LEADING_BYTE = 0x0100, + COMMON_LVB_TRAILING_BYTE = 0x0200, + COMMON_LVB_GRID_HORIZONTAL = 0x0400, + COMMON_LVB_GRID_LVERTICAL = 0x0800, + COMMON_LVB_GRID_RVERTICAL = 0x1000, + COMMON_LVB_REVERSE_VIDEO = 0x4000, + COMMON_LVB_UNDERSCORE = 0x8000, + + COMMON_LVB_SBCSDBCS = 0x0300, } static if (_WIN32_WINNT >= 0x501) { From 094e5620f529dae56d0af78779ddeedd454a288d Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Thu, 2 Mar 2017 15:47:29 -0500 Subject: [PATCH 600/768] Remove unused rt.typeinfo.ti_AC --- mak/SRCS | 1 - src/rt/typeinfo/ti_AC.d | 104 ---------------------------------------- 2 files changed, 105 deletions(-) delete mode 100644 src/rt/typeinfo/ti_AC.d diff --git a/mak/SRCS b/mak/SRCS index 33b85fce49..90e795f7c5 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -305,7 +305,6 @@ SRCS=\ src\rt\util\container\hashtab.d \ src\rt\util\container\treap.d \ \ - src\rt\typeinfo\ti_AC.d \ src\rt\typeinfo\ti_Acdouble.d \ src\rt\typeinfo\ti_Acfloat.d \ src\rt\typeinfo\ti_Acreal.d \ diff --git a/src/rt/typeinfo/ti_AC.d b/src/rt/typeinfo/ti_AC.d deleted file mode 100644 index cbfd5bd22c..0000000000 --- a/src/rt/typeinfo/ti_AC.d +++ /dev/null @@ -1,104 +0,0 @@ -/** - * TypeInfo support code. - * - * Copyright: Copyright Digital Mars 2004 - 2009. - * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). - * Authors: Walter Bright - */ - -/* Copyright Digital Mars 2004 - 2009. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -module rt.typeinfo.ti_AC; - -// Object[] - -/* -NOTE: It is sometimes used for arrays of -classes or (incorrectly) interfaces. -But naked `TypeInfo_Array` is mostly used. -See @@@BUG12303@@@. -*/ -class TypeInfo_AC : TypeInfo_Array -{ - override string toString() const { return TypeInfo.toString(); } - - override bool opEquals(Object o) { return TypeInfo.opEquals(o); } - - override size_t getHash(in void* p) @trusted const - { - Object[] s = *cast(Object[]*)p; - size_t hash = 0; - - foreach (Object o; s) - { - if (o) - hash += o.toHash(); - } - return hash; - } - - override bool equals(in void* p1, in void* p2) const - { - Object[] s1 = *cast(Object[]*)p1; - Object[] s2 = *cast(Object[]*)p2; - - if (s1.length == s2.length) - { - for (size_t u = 0; u < s1.length; u++) - { - Object o1 = s1[u]; - Object o2 = s2[u]; - - // Do not pass null's to Object.opEquals() - if (o1 is o2 || - (!(o1 is null) && !(o2 is null) && o1.opEquals(o2))) - continue; - return false; - } - return true; - } - return false; - } - - override int compare(in void* p1, in void* p2) const - { - Object[] s1 = *cast(Object[]*)p1; - Object[] s2 = *cast(Object[]*)p2; - auto c = cast(sizediff_t)(s1.length - s2.length); - if (c == 0) - { - for (size_t u = 0; u < s1.length; u++) - { - Object o1 = s1[u]; - Object o2 = s2[u]; - - if (o1 is o2) - continue; - - // Regard null references as always being "less than" - if (o1) - { - if (!o2) - return 1; - c = o1.opCmp(o2); - if (c == 0) - continue; - break; - } - else - { - return -1; - } - } - } - return c < 0 ? -1 : c > 0 ? 1 : 0; - } - - override @property inout(TypeInfo) next() inout - { - return cast(inout)typeid(Object); - } -} From 51bd8111826138f1c40d347d93adceb6f9ba3356 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 4 Mar 2017 14:14:02 +0000 Subject: [PATCH 601/768] .gitignore: Fix Makefile rule The introduction of the .gitignore rule lacked any description or rationale (PR #682), so I'm guessing this is to allow people to create a local Makefile so that `make` works without needing to specify `-f posix.mak`. Fix this rule so that it doesn't apply to the actually versioned Makefile files under the test directory. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e820d19877..865d7846e5 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ druntime.json .DS_Store trace.def trace.log -Makefile +/Makefile /errno_c*.obj /msvc*.obj make From d388315aa7dd43a08caed8957cd1247b70f71278 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 4 Mar 2017 14:16:25 +0000 Subject: [PATCH 602/768] Add tests for class/struct/array comparisons PR #1781 is moving array comparisons to a new template; the initial implementation included changes which may have introduced performance and behavior regressions. Add explicit tests for these cases to detect such regressions. --- posix.mak | 2 +- test/typeinfo/Makefile | 17 ++++++++ test/typeinfo/src/comparison.d | 78 ++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 test/typeinfo/Makefile create mode 100644 test/typeinfo/src/comparison.d diff --git a/posix.mak b/posix.mak index 024cc4a9e6..d23156054c 100644 --- a/posix.mak +++ b/posix.mak @@ -197,7 +197,7 @@ $(DRUNTIME): $(OBJS) $(SRCS) UT_MODULES:=$(patsubst src/%.d,$(ROOT)/unittest/%,$(SRCS)) HAS_ADDITIONAL_TESTS:=$(shell test -d test && echo 1) ifeq ($(HAS_ADDITIONAL_TESTS),1) - ADDITIONAL_TESTS:=test/init_fini test/exceptions test/coverage test/profile test/cycles test/allocations + ADDITIONAL_TESTS:=test/init_fini test/exceptions test/coverage test/profile test/cycles test/allocations test/typeinfo ADDITIONAL_TESTS+=$(if $(SHARED),test/shared,) endif diff --git a/test/typeinfo/Makefile b/test/typeinfo/Makefile new file mode 100644 index 0000000000..6c371684d7 --- /dev/null +++ b/test/typeinfo/Makefile @@ -0,0 +1,17 @@ +include ../common.mak + +TESTS:=comparison + +.PHONY: all clean +all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) + +$(ROOT)/%.done: $(ROOT)/% + @echo Testing $* + $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS) + @touch $@ + +$(ROOT)/%: $(SRC)/%.d + $(QUIET)$(DMD) $(DFLAGS) -of$@ $< + +clean: + rm -rf $(ROOT) diff --git a/test/typeinfo/src/comparison.d b/test/typeinfo/src/comparison.d new file mode 100644 index 0000000000..a6719ba546 --- /dev/null +++ b/test/typeinfo/src/comparison.d @@ -0,0 +1,78 @@ +// https://github.com/dlang/druntime/pull/1781 + +struct S +{ + int i; + static int comparisons; + int opCmp(const S s) const { comparisons++; return i - s.i; } +} + +void testStructs() +{ + auto s1 = S(1); + auto s2 = S(2); + auto s3 = S(3); + auto s4 = S(4); + + // Test lexicographical order + + assert(s1 < s2 && s2 < s3); + assert([s1, s2, s3] < [s1, s3]); + assert([s1, s2] < [s1, s2, s3]); + + // Test number of comparisons for nested types + + S.comparisons = 0; + assert(s1 < s2); + assert(S.comparisons == 1); + + S.comparisons = 0; + assert([s1, s2] < [s3, s4]); + assert(S.comparisons == 1); + + S.comparisons = 0; + assert([[s1, s2]] < [[s3, s4]]); + assert(S.comparisons == 1); +} + +class C +{ + this(int i) { this.i = i; } + int i; + static int comparisons; + override int opCmp(Object c) const { comparisons++; return i - (cast(C)c).i; } +} + +void testClasses() +{ + auto c1 = new C(1); + auto c2 = new C(2); + auto c3 = new C(3); + auto c4 = new C(4); + + // Test lexicographical order + + assert(c1 < c2 && c2 < c3); + assert([c1, c2, c3] < [c1, c3]); + assert([c1, c2] < [c1, c2, c3]); + + // Test number of comparisons for nested types + + C.comparisons = 0; + assert(c1 < c2); + assert(C.comparisons == 1); + + C.comparisons = 0; + assert([c1, c2] < [c3, c4]); + assert(C.comparisons == 1); + + C.comparisons = 0; + assert([[c1, c2]] < [[c3, c4]]); + assert(C.comparisons == 1); +} + +void main() +{ + testStructs(); + testClasses(); +} From d03a8948b4846af20210ad4258e5ab6402abf97c Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sat, 4 Mar 2017 22:45:24 +0100 Subject: [PATCH 603/768] Remove dmd.conf target from CircleCi --- circleci.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/circleci.sh b/circleci.sh index ca85a114ce..a2f7e641d5 100755 --- a/circleci.sh +++ b/circleci.sh @@ -77,7 +77,6 @@ coverage() { # build dmd and druntime make -j$N -C ../dmd/src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD all - make -j$N -C ../dmd/src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD dmd.conf TEST_COVERAGE="1" make -j$N -C . -f posix.mak MODEL=$MODEL unittest-debug } From ed4818b1093d2da67803d24303896a937221239a Mon Sep 17 00:00:00 2001 From: somzzz Date: Thu, 19 Jan 2017 04:51:19 -0800 Subject: [PATCH 604/768] array compare template function --- src/object.d | 220 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) diff --git a/src/object.d b/src/object.d index 38b6144b3b..154827bbc5 100644 --- a/src/object.d +++ b/src/object.d @@ -3241,6 +3241,226 @@ template RTInfo(T) enum RTInfo = null; } +int _adCmpT(T1, T2)(T1[] s1, T2[] s2) +{ + // U1 gets the unqualified version of T1 + static if (is(T1 W == immutable W)) alias U1 = W; + else static if (is(T1 W == const W)) alias U1 = W; + else alias U1 = T1; + + // U2 gets the unqualified version of T2 + static if (is(T2 U == immutable U)) alias U2 = U; + else static if (is(T2 U == const U)) alias U2 = U; + else alias U2 = T2; + + // objects + static if (is(U1 : Object) && is(U2 : Object)) + { + auto c = cast(sizediff_t)(s1.length - s2.length); + if (c == 0) + { + for (size_t u = 0; u < s1.length; u++) + { + Object o1 = s1[u]; + Object o2 = s2[u]; + + if (o1 is o2) + continue; + + // Regard null references as always being "less than" + if (o1) + { + if (!o2) + return 1; + c = o1.opCmp(o2); + if (c == 0) + continue; + break; + } + else + { + return -1; + } + } + } + return c < 0 ? -1 : c > 0 ? 1 : 0; + } + + // floating point types + static if ((is(U1 == float) && is(U2 == float)) + || (is(U1 == double) && is(U2 == double)) + || (is(U1 == real) && is(U2 == real)) + || (is(U1 == ifloat) && is(U2 == ifloat)) + || (is(U1 == idouble) && is(U2 == idouble)) + || (is(U1 == ireal) && is(U2 == ireal)) + || (is(U1 == cfloat) && is(U2 == cfloat)) + || (is(U1 == cdouble) && is(U2 == cdouble)) + || (is(U1 == creal) && is(U2 == creal))) + { + template Floating(T) + if (is(T == cfloat) || is(T == cdouble) || is(T == creal)) + { + pure nothrow @safe: + int compare(T f1, T f2) + { + int result; + + if (f1.re < f2.re) + result = -1; + else if (f1.re > f2.re) + result = 1; + else if (f1.im < f2.im) + result = -1; + else if (f1.im > f2.im) + result = 1; + else + result = 0; + return result; + } + } + + template Floating(T) + if (is(T == float) || is(T == double) || is(T == real)) + { + pure nothrow @safe: + int compare(T d1, T d2) + { + if (d1 != d1 || d2 != d2) // if either are NaN + { + if (d1 != d1) + { + if (d2 != d2) + return 0; + return -1; + } + return 1; + } + return (d1 == d2) ? 0 : ((d1 < d2) ? -1 : 1); + } + } + + template Array(T) + if (is(T == float) || is(T == double) || is(T == real) || + is(T == cfloat) || is(T == cdouble) || is(T == creal)) + { + pure nothrow @safe: + int compare(T[] s1, T[] s2) + { + size_t len = s1.length; + if (s2.length < len) + len = s2.length; + for (size_t u = 0; u < len; u++) + { + if (int c = Floating!T.compare(s1[u], s2[u])) + return c; + } + if (s1.length < s2.length) + return -1; + else if (s1.length > s2.length) + return 1; + return 0; + } + } + + static if (is(U1 == ifloat)) alias F = float; + else static if (is(U1 == idouble)) alias F = double; + else static if (is(U1 == ireal)) alias F = real; + else alias F = U1; + + return () @trusted { return Array!F.compare(cast(F[])s1, cast(F[])s2); }(); + } + + // integral, char types + else + { + size_t len = s1.length; + + if (s2.length < len) + len = s2.length; + + for (size_t u = 0; u < len; u++) + { + if (s1[u] < s2[u]) + return -1; + else if (s1[u] > s2[u]) + return 1; + } + + if (s1.length < s2.length) + return -1; + else if (s1.length > s2.length) + return 1; + + return 0; + } +} + +// integral types +unittest +{ + void compareMinMax(T)() + { + T[] a = [T.max, T.max]; + T[] b = [T.min, T.min]; + + assert(a > b); + assert(b < a); + } + + compareMinMax!int; + compareMinMax!uint; + compareMinMax!long; + compareMinMax!ulong; + compareMinMax!short; + compareMinMax!ushort; + compareMinMax!byte; + compareMinMax!ubyte; + compareMinMax!bool; +} + +// char types +unittest +{ + void compareMinMax(T)() + { + T[] a = [T.max, T.max]; + T[] b = [T.min, T.min]; + + assert(a > b); + assert(b < a); + } + + compareMinMax!char; + compareMinMax!dchar; + compareMinMax!wchar; +} + +// fp types +unittest +{ + void compareMinMax(T)() + { + T[] a = [T.max, T.max]; + T[] b = [T.min_normal, T.min_normal]; + + assert(a > b); + assert(b < a); + } + + compareMinMax!real; + compareMinMax!float; + compareMinMax!double; + compareMinMax!ireal; + compareMinMax!ifloat; + compareMinMax!idouble; + compareMinMax!creal; + //compareMinMax!cfloat; + compareMinMax!cdouble; + + // qualifiers + compareMinMax!(const real); + compareMinMax!(immutable real); +} // Helper functions From 3e667945e51472423f27e262aa449878067ef000 Mon Sep 17 00:00:00 2001 From: somzzz Date: Fri, 3 Mar 2017 03:10:32 -0800 Subject: [PATCH 605/768] fixed nits & added tests & dstrcmp --- src/object.d | 273 +++++++++++++++++++++++++++++---------------------- 1 file changed, 158 insertions(+), 115 deletions(-) diff --git a/src/object.d b/src/object.d index 154827bbc5..2692059b2f 100644 --- a/src/object.d +++ b/src/object.d @@ -3241,19 +3241,76 @@ template RTInfo(T) enum RTInfo = null; } -int _adCmpT(T1, T2)(T1[] s1, T2[] s2) +private template Floating1(T) +if (is(T == cfloat) || is(T == cdouble) || is(T == creal)) +{ + // Use rt.cmath2._Ccmp instead ? + int compare(T f1, T f2) + { + int result; + + if (f1.re < f2.re) + result = -1; + else if (f1.re > f2.re) + result = 1; + else if (f1.im < f2.im) + result = -1; + else if (f1.im > f2.im) + result = 1; + else + result = 0; + return result; + } +} + +private template Floating1(T) +if (is(T == float) || is(T == double) || is(T == real)) { - // U1 gets the unqualified version of T1 - static if (is(T1 W == immutable W)) alias U1 = W; - else static if (is(T1 W == const W)) alias U1 = W; - else alias U1 = T1; + int compare(T d1, T d2) + { + if (d1 != d1 || d2 != d2) // if either is NaN + { + if (d1 != d1) + { + if (d2 != d2) + return 0; + return -1; + } + return 1; + } + return d1 < d2 ? -1 : (d1 > d2); + } +} - // U2 gets the unqualified version of T2 - static if (is(T2 U == immutable U)) alias U2 = U; - else static if (is(T2 U == const U)) alias U2 = U; - else alias U2 = T2; +private template Array1(T) +if (is(T == float) || is(T == double) || is(T == real) || + is(T == cfloat) || is(T == cdouble) || is(T == creal)) +{ + int compare(T[] s1, T[] s2) + { + auto len = s1.length; + if (s2.length < len) + len = s2.length; + + foreach (const u; 0 .. len) + { + if (int c = Floating1!T.compare(s1[u], s2[u])) + return c; + } + return s1.length < s2.length ? -1 : (s1.length > s2.length); + } +} + +int _adCmpT(T1, T2)(T1[] s1, T2[] s2) +{ + import core.internal.traits : Unqual; + alias U1 = Unqual!T1; + alias U2 = Unqual!T2; // objects + // Old code went to object.d/TypeInfo_array.compare and then to + // object.d/TypeInfo_Class.compare + // which combined result in the same code as below. static if (is(U1 : Object) && is(U2 : Object)) { auto c = cast(sizediff_t)(s1.length - s2.length); @@ -3261,8 +3318,8 @@ int _adCmpT(T1, T2)(T1[] s1, T2[] s2) { for (size_t u = 0; u < s1.length; u++) { - Object o1 = s1[u]; - Object o2 = s2[u]; + auto o1 = () @trusted { return s1.ptr[u]; }(); + auto o2 = () @trusted { return s2.ptr[u]; }(); if (o1 is o2) continue; @@ -3273,9 +3330,8 @@ int _adCmpT(T1, T2)(T1[] s1, T2[] s2) if (!o2) return 1; c = o1.opCmp(o2); - if (c == 0) - continue; - break; + if (c != 0) + break; } else { @@ -3283,115 +3339,74 @@ int _adCmpT(T1, T2)(T1[] s1, T2[] s2) } } } - return c < 0 ? -1 : c > 0 ? 1 : 0; + return c < 0 ? -1 : (c > 0); } // floating point types - static if ((is(U1 == float) && is(U2 == float)) - || (is(U1 == double) && is(U2 == double)) - || (is(U1 == real) && is(U2 == real)) - || (is(U1 == ifloat) && is(U2 == ifloat)) - || (is(U1 == idouble) && is(U2 == idouble)) - || (is(U1 == ireal) && is(U2 == ireal)) - || (is(U1 == cfloat) && is(U2 == cfloat)) - || (is(U1 == cdouble) && is(U2 == cdouble)) - || (is(U1 == creal) && is(U2 == creal))) - { - template Floating(T) - if (is(T == cfloat) || is(T == cdouble) || is(T == creal)) - { - pure nothrow @safe: - int compare(T f1, T f2) - { - int result; - - if (f1.re < f2.re) - result = -1; - else if (f1.re > f2.re) - result = 1; - else if (f1.im < f2.im) - result = -1; - else if (f1.im > f2.im) - result = 1; - else - result = 0; - return result; - } - } + else static if (__traits(isFloating, U1)) + { + static if (is(U1 == ifloat)) alias F = float; + else static if (is(U1 == idouble)) alias F = double; + else static if (is(U1 == ireal)) alias F = real; + else alias F = U1; - template Floating(T) - if (is(T == float) || is(T == double) || is(T == real)) + return () @trusted { return Array1!F.compare(cast(F[])s1, cast(F[])s2); }(); + } + + // char types = > dstrcmp + else static if ((is(U1 == ubyte) && is(U2 == ubyte)) + || (is(U1 == void) && is(U2 == void)) + || (is(U1 == bool) && is(U2 == bool)) + || (is(U1 == char) && is(U2 == char))) + { + if (!__ctfe) { - pure nothrow @safe: - int compare(T d1, T d2) - { - if (d1 != d1 || d2 != d2) // if either are NaN - { - if (d1 != d1) - { - if (d2 != d2) - return 0; - return -1; - } - return 1; - } - return (d1 == d2) ? 0 : ((d1 < d2) ? -1 : 1); - } + import core.internal.string : dstrcmp; + return () @trusted { return dstrcmp(cast(char[])s1, cast(char[])s2); }(); } - - template Array(T) - if (is(T == float) || is(T == double) || is(T == real) || - is(T == cfloat) || is(T == cdouble) || is(T == creal)) + else { - pure nothrow @safe: - int compare(T[] s1, T[] s2) + // pretty ugly... + auto len = s1.length; + + if (s2.length < len) + len = s2.length; + + foreach (const u; 0 .. len) { - size_t len = s1.length; - if (s2.length < len) - len = s2.length; - for (size_t u = 0; u < len; u++) - { - if (int c = Floating!T.compare(s1[u], s2[u])) - return c; - } - if (s1.length < s2.length) + auto e1 = () @trusted { return s1.ptr[u]; }(); + auto e2 = () @trusted { return s2.ptr[u]; }(); + + if (e1 < e2) return -1; - else if (s1.length > s2.length) + else if (e1 > e2) return 1; - return 0; } - } - - static if (is(U1 == ifloat)) alias F = float; - else static if (is(U1 == idouble)) alias F = double; - else static if (is(U1 == ireal)) alias F = real; - else alias F = U1; - return () @trusted { return Array!F.compare(cast(F[])s1, cast(F[])s2); }(); + return s1.length < s2.length ? -1 : (s1.length > s2.length); + } } - // integral, char types + // integral else { - size_t len = s1.length; + auto len = s1.length; if (s2.length < len) len = s2.length; - for (size_t u = 0; u < len; u++) + foreach (const u; 0 .. len) { - if (s1[u] < s2[u]) + auto e1 = () @trusted { return s1.ptr[u]; }(); + auto e2 = () @trusted { return s2.ptr[u]; }(); + + if (e1 < e2) return -1; - else if (s1[u] > s2[u]) + else if (e1 > e2) return 1; } - if (s1.length < s2.length) - return -1; - else if (s1.length > s2.length) - return 1; - - return 0; + return s1.length < s2.length ? -1 : (s1.length > s2.length); } } @@ -3400,11 +3415,11 @@ unittest { void compareMinMax(T)() { - T[] a = [T.max, T.max]; - T[] b = [T.min, T.min]; + T[2] a = [T.max, T.max]; + T[2] b = [T.min, T.min]; - assert(a > b); - assert(b < a); + assert(_adCmpT(a, b) > 0); + assert(_adCmpT(b, a) < 0); } compareMinMax!int; @@ -3414,25 +3429,31 @@ unittest compareMinMax!short; compareMinMax!ushort; compareMinMax!byte; - compareMinMax!ubyte; - compareMinMax!bool; + compareMinMax!dchar; + compareMinMax!wchar; } -// char types +// char types (dstrcmp) unittest { void compareMinMax(T)() { - T[] a = [T.max, T.max]; - T[] b = [T.min, T.min]; + T[2] a = [T.max, T.max]; + T[2] b = [T.min, T.min]; - assert(a > b); - assert(b < a); + assert(_adCmpT(a, b) > 0); + assert(_adCmpT(b, a) < 0); } + compareMinMax!ubyte; + compareMinMax!bool; compareMinMax!char; - compareMinMax!dchar; - compareMinMax!wchar; + compareMinMax!(const char); + + string s1 = "aaaa"; + string s2 = "bbbb"; + assert(_adCmpT(s2, s1) > 0); + assert(_adCmpT(s1, s2) < 0); } // fp types @@ -3440,11 +3461,11 @@ unittest { void compareMinMax(T)() { - T[] a = [T.max, T.max]; - T[] b = [T.min_normal, T.min_normal]; + T[2] a = [T.max, T.max]; + T[2] b = [T.min_normal, T.min_normal]; - assert(a > b); - assert(b < a); + assert(_adCmpT(a, b) > 0); + assert(_adCmpT(b, a) < 0); } compareMinMax!real; @@ -3462,6 +3483,28 @@ unittest compareMinMax!(immutable real); } +//objects +unittest +{ + class C + { + int i; + this(int i) { this.i = i; } + + override int opCmp(Object c) const + { + return i - (cast(C)c).i; + } + } + + auto c1 = new C(1); + auto c2 = new C(2); + + assert(_adCmpT([c1, c1], [c2, c2]) < 0); + assert(_adCmpT([c2, c2], [c1, c1]) > 0); +} + + // Helper functions private inout(TypeInfo) getElement(inout TypeInfo value) @trusted pure nothrow From 9afe2122ef28f16c7f9736ff68ecd9afff554550 Mon Sep 17 00:00:00 2001 From: somzzz Date: Sun, 5 Mar 2017 06:38:13 -0800 Subject: [PATCH 606/768] fixed breaking change & code adjustments --- src/object.d | 213 +++++++++++++++++++++++++-------------------------- 1 file changed, 106 insertions(+), 107 deletions(-) diff --git a/src/object.d b/src/object.d index 2692059b2f..8c3b06fb24 100644 --- a/src/object.d +++ b/src/object.d @@ -3241,107 +3241,49 @@ template RTInfo(T) enum RTInfo = null; } -private template Floating1(T) -if (is(T == cfloat) || is(T == cdouble) || is(T == creal)) -{ - // Use rt.cmath2._Ccmp instead ? - int compare(T f1, T f2) - { - int result; - - if (f1.re < f2.re) - result = -1; - else if (f1.re > f2.re) - result = 1; - else if (f1.im < f2.im) - result = -1; - else if (f1.im > f2.im) - result = 1; - else - result = 0; - return result; - } -} - -private template Floating1(T) -if (is(T == float) || is(T == double) || is(T == real)) -{ - int compare(T d1, T d2) - { - if (d1 != d1 || d2 != d2) // if either is NaN - { - if (d1 != d1) - { - if (d2 != d2) - return 0; - return -1; - } - return 1; - } - return d1 < d2 ? -1 : (d1 > d2); - } -} - -private template Array1(T) -if (is(T == float) || is(T == double) || is(T == real) || - is(T == cfloat) || is(T == cdouble) || is(T == creal)) -{ - int compare(T[] s1, T[] s2) - { - auto len = s1.length; - if (s2.length < len) - len = s2.length; - - foreach (const u; 0 .. len) - { - if (int c = Floating1!T.compare(s1[u], s2[u])) - return c; - } - return s1.length < s2.length ? -1 : (s1.length > s2.length); - } -} - -int _adCmpT(T1, T2)(T1[] s1, T2[] s2) +int __cmp(T1, T2)(T1[] s1, T2[] s2) { import core.internal.traits : Unqual; alias U1 = Unqual!T1; alias U2 = Unqual!T2; + static @trusted ref R at(R)(R[] r, size_t i) { return r.ptr[i]; } + // objects // Old code went to object.d/TypeInfo_array.compare and then to // object.d/TypeInfo_Class.compare // which combined result in the same code as below. static if (is(U1 : Object) && is(U2 : Object)) { - auto c = cast(sizediff_t)(s1.length - s2.length); - if (c == 0) + auto len = s1.length; + + if (s2.length < len) + len = s2.length; + + foreach (const u; 0 .. len) { - for (size_t u = 0; u < s1.length; u++) - { - auto o1 = () @trusted { return s1.ptr[u]; }(); - auto o2 = () @trusted { return s2.ptr[u]; }(); + auto o1 = at(s1, u); + auto o2 = at(s2, u); - if (o1 is o2) - continue; + if (o1 is o2) + continue; - // Regard null references as always being "less than" - if (o1) - { - if (!o2) - return 1; - c = o1.opCmp(o2); - if (c != 0) - break; - } - else - { - return -1; - } + // Regard null references as always being "less than" + if (o1) + { + if (!o2) + return 1; + auto c = o1.opCmp(o2); + if (c != 0) + return c < 0 ? -1 : 1; + } + else + { + return -1; } } - return c < 0 ? -1 : (c > 0); + return s1.length < s2.length ? -1 : (s1.length > s2.length); } - // floating point types else static if (__traits(isFloating, U1)) { @@ -3350,9 +3292,52 @@ int _adCmpT(T1, T2)(T1[] s1, T2[] s2) else static if (is(U1 == ireal)) alias F = real; else alias F = U1; - return () @trusted { return Array1!F.compare(cast(F[])s1, cast(F[])s2); }(); - } + static int compare(F f1, F f2) + { + static if (is(F == cfloat) || is(F == cdouble) || is(F == creal)) + { + // Use rt.cmath2._Ccmp instead ? + int result; + + if (f1.re < f2.re) + result = -1; + else if (f1.re > f2.re) + result = 1; + else if (f1.im < f2.im) + result = -1; + else if (f1.im > f2.im) + result = 1; + else + result = 0; + return result; + } + else static if (is(F == float) || is(F == double) || is(F == real)) + { + // d1 is NaN 2^0 + d2 is NaN 2^1 + auto NaNs = (f1 != f1) | ((f2 != f2) << 1); + + return (NaNs == 3) ? 0 : + (NaNs == 2) ? 1 : + (NaNs == 1) ? -1 : + (f1 < f2) ? -1 : (f1 > f2); + } + else static assert(false, "Internal error"); + } + + auto len = s1.length; + if (s2.length < len) + len = s2.length; + + auto fpArray1 = () { return cast(F[])s1; }(); + auto fpArray2 = () { return cast(F[])s2; }(); + foreach (const u; 0 .. len) + { + if (int c = compare(fpArray1[u], fpArray2[u])) + return c; + } + return s1.length < s2.length ? -1 : (s1.length > s2.length); + } // char types = > dstrcmp else static if ((is(U1 == ubyte) && is(U2 == ubyte)) || (is(U1 == void) && is(U2 == void)) @@ -3374,8 +3359,8 @@ int _adCmpT(T1, T2)(T1[] s1, T2[] s2) foreach (const u; 0 .. len) { - auto e1 = () @trusted { return s1.ptr[u]; }(); - auto e2 = () @trusted { return s2.ptr[u]; }(); + auto e1 = at(s1, u); + auto e2 = at(s2, u); if (e1 < e2) return -1; @@ -3386,8 +3371,7 @@ int _adCmpT(T1, T2)(T1[] s1, T2[] s2) return s1.length < s2.length ? -1 : (s1.length > s2.length); } } - - // integral + // integral, struct, nested arrays else { auto len = s1.length; @@ -3397,15 +3381,30 @@ int _adCmpT(T1, T2)(T1[] s1, T2[] s2) foreach (const u; 0 .. len) { - auto e1 = () @trusted { return s1.ptr[u]; }(); - auto e2 = () @trusted { return s2.ptr[u]; }(); + auto e1 = at(s1, u); + auto e2 = at(s2, u); - if (e1 < e2) - return -1; - else if (e1 > e2) - return 1; + // structs + static if (__traits(compiles, e1.opCmp(e2))) + { + auto c = e1.opCmp(e2); + if (c != 0) + return c < 0 ? -1 : 1; + } + else static if (__traits(compiles, _adCmp(e1, e2))) + { + auto c = _adCmp(e1, e2); + if (c != 0) + return c < 0 ? -1 : 1; + } + else + { + if (e1 < e2) + return -1; + else if (e1 > e2) + return 1; + } } - return s1.length < s2.length ? -1 : (s1.length > s2.length); } } @@ -3418,8 +3417,8 @@ unittest T[2] a = [T.max, T.max]; T[2] b = [T.min, T.min]; - assert(_adCmpT(a, b) > 0); - assert(_adCmpT(b, a) < 0); + assert(__cmp(a, b) > 0); + assert(__cmp(b, a) < 0); } compareMinMax!int; @@ -3441,8 +3440,8 @@ unittest T[2] a = [T.max, T.max]; T[2] b = [T.min, T.min]; - assert(_adCmpT(a, b) > 0); - assert(_adCmpT(b, a) < 0); + assert(__cmp(a, b) > 0); + assert(__cmp(b, a) < 0); } compareMinMax!ubyte; @@ -3452,8 +3451,8 @@ unittest string s1 = "aaaa"; string s2 = "bbbb"; - assert(_adCmpT(s2, s1) > 0); - assert(_adCmpT(s1, s2) < 0); + assert(__cmp(s2, s1) > 0); + assert(__cmp(s1, s2) < 0); } // fp types @@ -3464,8 +3463,8 @@ unittest T[2] a = [T.max, T.max]; T[2] b = [T.min_normal, T.min_normal]; - assert(_adCmpT(a, b) > 0); - assert(_adCmpT(b, a) < 0); + assert(__cmp(a, b) > 0); + assert(__cmp(b, a) < 0); } compareMinMax!real; @@ -3500,8 +3499,8 @@ unittest auto c1 = new C(1); auto c2 = new C(2); - assert(_adCmpT([c1, c1], [c2, c2]) < 0); - assert(_adCmpT([c2, c2], [c1, c1]) > 0); + assert(__cmp([c1, c1], [c2, c2]) < 0); + assert(__cmp([c2, c2], [c1, c1]) > 0); } From cbe8288943bc1a1415e3adb1b4a768f54cf4c449 Mon Sep 17 00:00:00 2001 From: somzzz Date: Sun, 5 Mar 2017 13:45:17 -0800 Subject: [PATCH 607/768] Comments and nits --- src/object.d | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/object.d b/src/object.d index 8c3b06fb24..c361c790ab 100644 --- a/src/object.d +++ b/src/object.d @@ -3241,6 +3241,9 @@ template RTInfo(T) enum RTInfo = null; } +// This function is called by the compiler when dealing with array +// comparisons in the semantic analysis phase of CmpExp. The ordering +// comparison is lowered to a call to this template. int __cmp(T1, T2)(T1[] s1, T2[] s2) { import core.internal.traits : Unqual; @@ -3364,7 +3367,8 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) if (e1 < e2) return -1; - else if (e1 > e2) + + if (e1 > e2) return 1; } @@ -3391,9 +3395,9 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) if (c != 0) return c < 0 ? -1 : 1; } - else static if (__traits(compiles, _adCmp(e1, e2))) + else static if (__traits(compiles, __cmp(e1, e2))) { - auto c = _adCmp(e1, e2); + auto c = __cmp(e1, e2); if (c != 0) return c < 0 ? -1 : 1; } @@ -3401,7 +3405,8 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) { if (e1 < e2) return -1; - else if (e1 > e2) + + if (e1 > e2) return 1; } } From 6c1c6cf7c144734f97faeb3a18b9193d6299e279 Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Mon, 6 Mar 2017 15:08:47 -0500 Subject: [PATCH 608/768] One more pass through __cmp --- src/core/internal/string.d | 30 +++++--- src/object.d | 151 +++++++++++-------------------------- 2 files changed, 62 insertions(+), 119 deletions(-) diff --git a/src/core/internal/string.d b/src/core/internal/string.d index 28b1e36246..47741772a3 100644 --- a/src/core/internal/string.d +++ b/src/core/internal/string.d @@ -192,16 +192,22 @@ unittest int dstrcmp( scope const char[] s1, scope const char[] s2 ) @trusted { - import core.stdc.string : memcmp; - - int ret = 0; - auto len = s1.length; - if( s2.length < len ) - len = s2.length; - if( 0 != (ret = memcmp( s1.ptr, s2.ptr, len )) ) - return ret; - return s1.length > s2.length ? 1 : - s1.length == s2.length ? 0 : -1; -} - + immutable len = s1.length <= s2.length ? s1.length : s2.length; + if (__ctfe) + { + foreach (const u; 0 .. len) + { + if (s1[u] != s2[u]) + return s1[u] > s2[u] ? 1 : -1; + } + } + else + { + import core.stdc.string : memcmp; + const ret = memcmp( s1.ptr, s2.ptr, len ); + if( ret ) + return ret; + } + return s1.length < s2.length ? -1 : (s1.length > s2.length); +} diff --git a/src/object.d b/src/object.d index c361c790ab..5661ea0051 100644 --- a/src/object.d +++ b/src/object.d @@ -3241,6 +3241,23 @@ template RTInfo(T) enum RTInfo = null; } +private int __cmp(F)(const F f1, const F f2) +if (__traits(isFloating, F)) +{ + static if (is(F == cfloat) || is(F == cdouble) || is(F == creal)) + { + // Use rt.cmath2._Ccmp instead ? + auto r = __cmp(f1.re, f2.re); + if (!r) r = __cmp(f1.im, f2.im); + return r; + } + else static if (is(F == float) || is(F == double) || is(F == real)) + { + return (f1 > f2) - (f2 > f1); + } + else static assert(false, "Internal error"); +} + // This function is called by the compiler when dealing with array // comparisons in the semantic analysis phase of CmpExp. The ordering // comparison is lowered to a call to this template. @@ -3249,6 +3266,7 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) import core.internal.traits : Unqual; alias U1 = Unqual!T1; alias U2 = Unqual!T2; + static assert(is(U1 == U2), "Internal error."); static @trusted ref R at(R)(R[] r, size_t i) { return r.ptr[i]; } @@ -3258,10 +3276,7 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) // which combined result in the same code as below. static if (is(U1 : Object) && is(U2 : Object)) { - auto len = s1.length; - - if (s2.length < len) - len = s2.length; + immutable len = s1.length <= s2.length ? s1.length : s2.length; foreach (const u; 0 .. len) { @@ -3278,7 +3293,7 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) return 1; auto c = o1.opCmp(o2); if (c != 0) - return c < 0 ? -1 : 1; + return c; } else { @@ -3287,127 +3302,49 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) } return s1.length < s2.length ? -1 : (s1.length > s2.length); } - // floating point types - else static if (__traits(isFloating, U1)) + // Imaginary types + else static if (is(U1 == ifloat) || is(U1 == idouble) || is(U1 == ireal)) { + // Special-case imaginary types to use comparison for "concrete" types static if (is(U1 == ifloat)) alias F = float; else static if (is(U1 == idouble)) alias F = double; else static if (is(U1 == ireal)) alias F = real; - else alias F = U1; - - static int compare(F f1, F f2) - { - static if (is(F == cfloat) || is(F == cdouble) || is(F == creal)) - { - // Use rt.cmath2._Ccmp instead ? - int result; - - if (f1.re < f2.re) - result = -1; - else if (f1.re > f2.re) - result = 1; - else if (f1.im < f2.im) - result = -1; - else if (f1.im > f2.im) - result = 1; - else - result = 0; - return result; - } - else static if (is(F == float) || is(F == double) || is(F == real)) - { - // d1 is NaN 2^0 + d2 is NaN 2^1 - auto NaNs = (f1 != f1) | ((f2 != f2) << 1); - - return (NaNs == 3) ? 0 : - (NaNs == 2) ? 1 : - (NaNs == 1) ? -1 : - (f1 < f2) ? -1 : (f1 > f2); - } - else static assert(false, "Internal error"); - } - auto len = s1.length; - if (s2.length < len) - len = s2.length; - - auto fpArray1 = () { return cast(F[])s1; }(); - auto fpArray2 = () { return cast(F[])s2; }(); - - foreach (const u; 0 .. len) - { - if (int c = compare(fpArray1[u], fpArray2[u])) - return c; - } - return s1.length < s2.length ? -1 : (s1.length > s2.length); + auto fpArray1 = () @trusted { return cast(F[])s1; }(); + auto fpArray2 = () @trusted { return cast(F[])s2; }(); + return __cmp(fpArray1, fpArray2); } - // char types = > dstrcmp - else static if ((is(U1 == ubyte) && is(U2 == ubyte)) - || (is(U1 == void) && is(U2 == void)) - || (is(U1 == bool) && is(U2 == bool)) - || (is(U1 == char) && is(U2 == char))) + // All unsigned byte-wide types = > dstrcmp + else static if (is(U1 == ubyte) || is(U1 == void) || is(U1 == bool) + || is(U1 == char)) { - if (!__ctfe) - { - import core.internal.string : dstrcmp; - return () @trusted { return dstrcmp(cast(char[])s1, cast(char[])s2); }(); - } - else - { - // pretty ugly... - auto len = s1.length; - - if (s2.length < len) - len = s2.length; - - foreach (const u; 0 .. len) - { - auto e1 = at(s1, u); - auto e2 = at(s2, u); - - if (e1 < e2) - return -1; - - if (e1 > e2) - return 1; - } - - return s1.length < s2.length ? -1 : (s1.length > s2.length); - } + import core.internal.string : dstrcmp; + return (() @trusted => dstrcmp(cast(char[])s1, cast(char[])s2))(); } - // integral, struct, nested arrays + // Everything else else { - auto len = s1.length; - - if (s2.length < len) - len = s2.length; + immutable len = s1.length <= s2.length ? s1.length : s2.length; foreach (const u; 0 .. len) { - auto e1 = at(s1, u); - auto e2 = at(s2, u); - // structs - static if (__traits(compiles, e1.opCmp(e2))) + static if (__traits(compiles, at(s1, u).opCmp(at(s2, u)))) { - auto c = e1.opCmp(e2); + auto c = at(s1, u).opCmp(at(s2, u)); if (c != 0) - return c < 0 ? -1 : 1; + return c; } - else static if (__traits(compiles, __cmp(e1, e2))) + else static if (__traits(compiles, __cmp(at(s1, u), at(s2, u)))) { - auto c = __cmp(e1, e2); + auto c = __cmp(at(s1, u), at(s2, u)); if (c != 0) - return c < 0 ? -1 : 1; + return c; } else { - if (e1 < e2) - return -1; - - if (e1 > e2) - return 1; + if (at(s1, u) != at(s2, u)) + return at(s1, u) < at(s2, u) ? -1 : 1; } } return s1.length < s2.length ? -1 : (s1.length > s2.length); @@ -3415,7 +3352,7 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) } // integral types -unittest +@safe unittest { void compareMinMax(T)() { @@ -3438,7 +3375,7 @@ unittest } // char types (dstrcmp) -unittest +@safe unittest { void compareMinMax(T)() { @@ -3461,7 +3398,7 @@ unittest } // fp types -unittest +@safe unittest { void compareMinMax(T)() { From 1fa3903cc7e7fd6325bfb386302e24864decae98 Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Mon, 6 Mar 2017 18:02:34 -0500 Subject: [PATCH 609/768] Factor in implementation for class and interface types --- src/object.d | 72 ++++++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 42 deletions(-) diff --git a/src/object.d b/src/object.d index 5661ea0051..84833b39d2 100644 --- a/src/object.d +++ b/src/object.d @@ -3241,6 +3241,7 @@ template RTInfo(T) enum RTInfo = null; } +// Compare floating point numbers for ordering (one instantiation per width). private int __cmp(F)(const F f1, const F f2) if (__traits(isFloating, F)) { @@ -3251,11 +3252,31 @@ if (__traits(isFloating, F)) if (!r) r = __cmp(f1.im, f2.im); return r; } - else static if (is(F == float) || is(F == double) || is(F == real)) + else { return (f1 > f2) - (f2 > f1); } - else static assert(false, "Internal error"); +} + +// Compare class and interface objects for ordering. +private int __cmp(Obj)(Obj lhs, Obj rhs) +if (is(Obj : Object)) +{ + if (o1 is o2) + return 0; + // Regard null references as always being "less than" + if (o1) + { + if (!o2) + return 1; + auto c = o1.opCmp(o2); + if (c != 0) + return c; + } + else + { + return -1; + } } // This function is called by the compiler when dealing with array @@ -3270,40 +3291,8 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) static @trusted ref R at(R)(R[] r, size_t i) { return r.ptr[i]; } - // objects - // Old code went to object.d/TypeInfo_array.compare and then to - // object.d/TypeInfo_Class.compare - // which combined result in the same code as below. - static if (is(U1 : Object) && is(U2 : Object)) - { - immutable len = s1.length <= s2.length ? s1.length : s2.length; - - foreach (const u; 0 .. len) - { - auto o1 = at(s1, u); - auto o2 = at(s2, u); - - if (o1 is o2) - continue; - - // Regard null references as always being "less than" - if (o1) - { - if (!o2) - return 1; - auto c = o1.opCmp(o2); - if (c != 0) - return c; - } - else - { - return -1; - } - } - return s1.length < s2.length ? -1 : (s1.length > s2.length); - } - // Imaginary types - else static if (is(U1 == ifloat) || is(U1 == idouble) || is(U1 == ireal)) + // Use the same implementation for real and imaginary floats + static if (is(U1 == ifloat) || is(U1 == idouble) || is(U1 == ireal)) { // Special-case imaginary types to use comparison for "concrete" types static if (is(U1 == ifloat)) alias F = float; @@ -3321,23 +3310,22 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) import core.internal.string : dstrcmp; return (() @trusted => dstrcmp(cast(char[])s1, cast(char[])s2))(); } - // Everything else + // Everything else: class, interface, struct, other built-ins else { immutable len = s1.length <= s2.length ? s1.length : s2.length; foreach (const u; 0 .. len) { - // structs - static if (__traits(compiles, at(s1, u).opCmp(at(s2, u)))) + static if (__traits(compiles, __cmp(at(s1, u), at(s2, u)))) { - auto c = at(s1, u).opCmp(at(s2, u)); + auto c = __cmp(at(s1, u), at(s2, u)); if (c != 0) return c; } - else static if (__traits(compiles, __cmp(at(s1, u), at(s2, u)))) + else static if (__traits(compiles, at(s1, u).opCmp(at(s2, u)))) { - auto c = __cmp(at(s1, u), at(s2, u)); + auto c = at(s1, u).opCmp(at(s2, u)); if (c != 0) return c; } From 3d9ce7f80400cb8f77d5e4ca915c968ddb1c91d2 Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Mon, 6 Mar 2017 19:43:27 -0500 Subject: [PATCH 610/768] Fix __cmp for object types, was not even called --- src/object.d | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/src/object.d b/src/object.d index 84833b39d2..4f28490512 100644 --- a/src/object.d +++ b/src/object.d @@ -3242,19 +3242,19 @@ template RTInfo(T) } // Compare floating point numbers for ordering (one instantiation per width). -private int __cmp(F)(const F f1, const F f2) +private int __cmp(F)(const F lhs, const F rhs) if (__traits(isFloating, F)) { static if (is(F == cfloat) || is(F == cdouble) || is(F == creal)) { // Use rt.cmath2._Ccmp instead ? - auto r = __cmp(f1.re, f2.re); - if (!r) r = __cmp(f1.im, f2.im); + auto r = __cmp(lhs.re, lhs.re); + if (!r) r = __cmp(lhs.im, lhs.im); return r; } else { - return (f1 > f2) - (f2 > f1); + return (lhs > rhs) - (lhs > rhs); } } @@ -3262,21 +3262,14 @@ if (__traits(isFloating, F)) private int __cmp(Obj)(Obj lhs, Obj rhs) if (is(Obj : Object)) { - if (o1 is o2) + if (lhs is rhs) return 0; // Regard null references as always being "less than" - if (o1) - { - if (!o2) - return 1; - auto c = o1.opCmp(o2); - if (c != 0) - return c; - } - else - { + if (!lhs) return -1; - } + if (!rhs) + return 1; + return lhs.opCmp(rhs); } // This function is called by the compiler when dealing with array @@ -3413,14 +3406,14 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) } //objects -unittest +@safe unittest { class C { int i; this(int i) { this.i = i; } - override int opCmp(Object c) const + override int opCmp(Object c) const @safe { return i - (cast(C)c).i; } @@ -3428,12 +3421,16 @@ unittest auto c1 = new C(1); auto c2 = new C(2); + assert(__cmp(c1, null) > 0); + assert(__cmp(null, c1) < 0); + assert(__cmp(c1, c1) == 0); + assert(__cmp(c1, c2) < 0); + assert(__cmp(c2, c1) > 0); - assert(__cmp([c1, c1], [c2, c2]) < 0); + assert(__cmp([c1, c1][], [c2, c2][]) < 0); assert(__cmp([c2, c2], [c1, c1]) > 0); } - // Helper functions private inout(TypeInfo) getElement(inout TypeInfo value) @trusted pure nothrow From f3a0e19ab4a4cd377e847df7525ed45c7f23efa6 Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Mon, 6 Mar 2017 20:32:24 -0500 Subject: [PATCH 611/768] Fix copypasta mistake --- src/object.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/object.d b/src/object.d index 4f28490512..d02e149b23 100644 --- a/src/object.d +++ b/src/object.d @@ -3248,13 +3248,13 @@ if (__traits(isFloating, F)) static if (is(F == cfloat) || is(F == cdouble) || is(F == creal)) { // Use rt.cmath2._Ccmp instead ? - auto r = __cmp(lhs.re, lhs.re); - if (!r) r = __cmp(lhs.im, lhs.im); + auto r = __cmp(lhs.re, rhs.re); + if (!r) r = __cmp(lhs.im, rhs.im); return r; } else { - return (lhs > rhs) - (lhs > rhs); + return (lhs > rhs) - (lhs < rhs); } } From 51bdf2e83f2dd5ecc1b2d00d202457d1ba1b0c9f Mon Sep 17 00:00:00 2001 From: Temtaime Date: Tue, 7 Mar 2017 11:00:37 +0300 Subject: [PATCH 612/768] Add missing function to iconv. --- src/core/sys/posix/iconv.d | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/core/sys/posix/iconv.d b/src/core/sys/posix/iconv.d index 792778cd6e..b405092392 100644 --- a/src/core/sys/posix/iconv.d +++ b/src/core/sys/posix/iconv.d @@ -7,6 +7,7 @@ iconv_open(3) Allocates the descriptor for code conversion iconv(3) Performs the conversion + iconvctl(3) Control iconv behavior iconv_close(3) Deallocates allocated resources Copyright: Copyright (c) 2016 Sociomantic Labs. All rights reserved. @@ -20,6 +21,15 @@ module core.sys.posix.iconv; +enum +{ + ICONV_TRIVIALP = 0, /* int *argument */ + ICONV_GET_TRANSLITERATE = 1, /* int *argument */ + ICONV_SET_TRANSLITERATE = 2, /* const int *argument */ + ICONV_GET_DISCARD_ILSEQ = 3, /* int *argument */ + ICONV_SET_DISCARD_ILSEQ = 4, /* const int *argument */ +} + version (Posix): extern (C): nothrow: @@ -40,5 +50,10 @@ size_t iconv (iconv_t cd, in char** inbuf, char** outbuf, size_t* outbytesleft); +/// iconvctl queries or adjusts the behavior of the iconv function, +/// when invoked with the specified conversion descriptor, +/// depending on the request value. +int iconvctl (iconv_t cd, int request, void* argument); + /// Free resources allocated for descriptor CD for code conversion. int iconv_close (iconv_t cd); From ea250cce9b40c039fa0c363d14667e4e2fdd51c6 Mon Sep 17 00:00:00 2001 From: Temtaime Date: Tue, 7 Mar 2017 18:45:38 +0300 Subject: [PATCH 613/768] Update iconv.d --- src/core/sys/posix/iconv.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/sys/posix/iconv.d b/src/core/sys/posix/iconv.d index b405092392..14670f063d 100644 --- a/src/core/sys/posix/iconv.d +++ b/src/core/sys/posix/iconv.d @@ -21,7 +21,7 @@ module core.sys.posix.iconv; -enum +enum { ICONV_TRIVIALP = 0, /* int *argument */ ICONV_GET_TRANSLITERATE = 1, /* int *argument */ @@ -50,7 +50,7 @@ size_t iconv (iconv_t cd, in char** inbuf, char** outbuf, size_t* outbytesleft); -/// iconvctl queries or adjusts the behavior of the iconv function, +/// iconvctl queries or adjusts the behavior of the iconv function, /// when invoked with the specified conversion descriptor, /// depending on the request value. int iconvctl (iconv_t cd, int request, void* argument); From 24e775ad12171eaf4fd16b3feb578dc69354f5b4 Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Tue, 7 Mar 2017 10:56:09 -0500 Subject: [PATCH 614/768] Preserve legacy weird behavior by which structs and unions in arrays were compared with memcmp --- src/object.d | 109 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 67 insertions(+), 42 deletions(-) diff --git a/src/object.d b/src/object.d index d02e149b23..82224c2759 100644 --- a/src/object.d +++ b/src/object.d @@ -3272,10 +3272,34 @@ if (is(Obj : Object)) return lhs.opCmp(rhs); } +int __cmp(T)(const T[] lhs, const T[] rhs) @trusted +if (__traits(isScalar, T)) +{ + immutable len = lhs.length <= rhs.length ? lhs.length : rhs.length; + foreach (const u; 0 .. len) + { + static if (__traits(isFloating, T)) + { + auto r = __cmp(lhs.ptr[u], rhs.ptr[u]); + if (r) return r; + } + else static if (is(T == ubyte) || is(T == void) || is(T == bool) + || is(T == char)) + { + import core.internal.string : dstrcmp; + return dstrcmp(cast(char[]) lhs, cast(char[]) rhs); + } + else if (lhs.ptr[u] != rhs.ptr[u]) + return lhs.ptr[u] < rhs.ptr[u] ? -1 : 1; + } + return lhs.length < rhs.length ? -1 : (lhs.length > rhs.length); +} + // This function is called by the compiler when dealing with array // comparisons in the semantic analysis phase of CmpExp. The ordering // comparison is lowered to a call to this template. int __cmp(T1, T2)(T1[] s1, T2[] s2) +if (!__traits(isScalar, T1)) { import core.internal.traits : Unqual; alias U1 = Unqual!T1; @@ -3284,52 +3308,37 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) static @trusted ref R at(R)(R[] r, size_t i) { return r.ptr[i]; } - // Use the same implementation for real and imaginary floats - static if (is(U1 == ifloat) || is(U1 == idouble) || is(U1 == ireal)) - { - // Special-case imaginary types to use comparison for "concrete" types - static if (is(U1 == ifloat)) alias F = float; - else static if (is(U1 == idouble)) alias F = double; - else static if (is(U1 == ireal)) alias F = real; - - auto fpArray1 = () @trusted { return cast(F[])s1; }(); - auto fpArray2 = () @trusted { return cast(F[])s2; }(); - return __cmp(fpArray1, fpArray2); - } // All unsigned byte-wide types = > dstrcmp - else static if (is(U1 == ubyte) || is(U1 == void) || is(U1 == bool) - || is(U1 == char)) - { - import core.internal.string : dstrcmp; - return (() @trusted => dstrcmp(cast(char[])s1, cast(char[])s2))(); - } - // Everything else: class, interface, struct, other built-ins - else - { - immutable len = s1.length <= s2.length ? s1.length : s2.length; + immutable len = s1.length <= s2.length ? s1.length : s2.length; - foreach (const u; 0 .. len) + foreach (const u; 0 .. len) + { + static if (__traits(compiles, __cmp(at(s1, u), at(s2, u)))) { - static if (__traits(compiles, __cmp(at(s1, u), at(s2, u)))) - { - auto c = __cmp(at(s1, u), at(s2, u)); - if (c != 0) - return c; - } - else static if (__traits(compiles, at(s1, u).opCmp(at(s2, u)))) - { - auto c = at(s1, u).opCmp(at(s2, u)); - if (c != 0) - return c; - } - else - { - if (at(s1, u) != at(s2, u)) - return at(s1, u) < at(s2, u) ? -1 : 1; - } + auto c = __cmp(at(s1, u), at(s2, u)); + if (c != 0) + return c; + } + else static if (__traits(compiles, at(s1, u).opCmp(at(s2, u)))) + { + auto c = at(s1, u).opCmp(at(s2, u)); + if (c != 0) + return c; + } + else static if (__traits(compiles, at(s1, u) < at(s2, u))) + { + if (at(s1, u) != at(s2, u)) + return at(s1, u) < at(s2, u) ? -1 : 1; + } + else + { + // TODO: fix this legacy bad behavior, see + // https://issues.dlang.org/show_bug.cgi?id=17244 + import core.stdc.string : memcmp; + return (() @trusted => memcmp(&at(s1, u), &at(s2, u), U1.sizeof))(); } - return s1.length < s2.length ? -1 : (s1.length > s2.length); } + return s1.length < s2.length ? -1 : (s1.length > s2.length); } // integral types @@ -3405,7 +3414,7 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) compareMinMax!(immutable real); } -//objects +// objects @safe unittest { class C @@ -3431,6 +3440,22 @@ int __cmp(T1, T2)(T1[] s1, T2[] s2) assert(__cmp([c2, c2], [c1, c1]) > 0); } +// structs +@safe unittest +{ + struct C + { + ubyte i; + this(ubyte i) { this.i = i; } + } + + auto c1 = C(1); + auto c2 = C(2); + + assert(__cmp([c1, c1][], [c2, c2][]) < 0); + assert(__cmp([c2, c2], [c1, c1]) > 0); +} + // Helper functions private inout(TypeInfo) getElement(inout TypeInfo value) @trusted pure nothrow From 7d07225bda809f69106819da04a10ff8cd082c28 Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Tue, 7 Mar 2017 13:39:40 -0500 Subject: [PATCH 615/768] Further reduction of code --- src/object.d | 59 +++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/src/object.d b/src/object.d index 82224c2759..a14f2cadaa 100644 --- a/src/object.d +++ b/src/object.d @@ -3241,23 +3241,6 @@ template RTInfo(T) enum RTInfo = null; } -// Compare floating point numbers for ordering (one instantiation per width). -private int __cmp(F)(const F lhs, const F rhs) -if (__traits(isFloating, F)) -{ - static if (is(F == cfloat) || is(F == cdouble) || is(F == creal)) - { - // Use rt.cmath2._Ccmp instead ? - auto r = __cmp(lhs.re, rhs.re); - if (!r) r = __cmp(lhs.im, rhs.im); - return r; - } - else - { - return (lhs > rhs) - (lhs < rhs); - } -} - // Compare class and interface objects for ordering. private int __cmp(Obj)(Obj lhs, Obj rhs) if (is(Obj : Object)) @@ -3275,24 +3258,38 @@ if (is(Obj : Object)) int __cmp(T)(const T[] lhs, const T[] rhs) @trusted if (__traits(isScalar, T)) { - immutable len = lhs.length <= rhs.length ? lhs.length : rhs.length; - foreach (const u; 0 .. len) + static if (is(T == ubyte) || is(T == void) || is(T == bool) + || is(T == char)) { - static if (__traits(isFloating, T)) - { - auto r = __cmp(lhs.ptr[u], rhs.ptr[u]); - if (r) return r; - } - else static if (is(T == ubyte) || is(T == void) || is(T == bool) - || is(T == char)) + import core.internal.string : dstrcmp; + return dstrcmp(cast(char[]) lhs, cast(char[]) rhs); + } + else + { + immutable len = lhs.length <= rhs.length ? lhs.length : rhs.length; + foreach (const u; 0 .. len) { - import core.internal.string : dstrcmp; - return dstrcmp(cast(char[]) lhs, cast(char[]) rhs); + static if (__traits(isFloating, T)) + { + immutable a = lhs.ptr[u], b = rhs.ptr[u]; + static if (is(T == cfloat) || is(T == cdouble) + || is(T == creal)) + { + // Use rt.cmath2._Ccmp instead ? + auto r = (a.re > b.re) - (a.re < b.re); + if (!r) r = (a.im > b.im) - (a.im < a.im); + } + else + { + const r = (a > b) - (a < b); + } + if (r) return r; + } + else if (lhs.ptr[u] != rhs.ptr[u]) + return lhs.ptr[u] < rhs.ptr[u] ? -1 : 1; } - else if (lhs.ptr[u] != rhs.ptr[u]) - return lhs.ptr[u] < rhs.ptr[u] ? -1 : 1; + return lhs.length < rhs.length ? -1 : (lhs.length > rhs.length); } - return lhs.length < rhs.length ? -1 : (lhs.length > rhs.length); } // This function is called by the compiler when dealing with array From 8107d51eba00c2f68f6d1f9332d179d8413cf66f Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Tue, 7 Mar 2017 13:50:19 -0500 Subject: [PATCH 616/768] Aw what the heck implemented reuse of implementation for all builtin types --- src/object.d | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/object.d b/src/object.d index a14f2cadaa..c74deecf00 100644 --- a/src/object.d +++ b/src/object.d @@ -3258,12 +3258,32 @@ if (is(Obj : Object)) int __cmp(T)(const T[] lhs, const T[] rhs) @trusted if (__traits(isScalar, T)) { - static if (is(T == ubyte) || is(T == void) || is(T == bool) - || is(T == char)) + // Compute U as the implementation type for T + static if (is(T == ubyte) || is(T == void) || is(T == bool)) + alias U = char; + else static if (is(T == wchar)) + alias U = ushort; + else static if (is(T == dchar)) + alias U = uint; + else static if (is(T == ifloat)) + alias U = float; + else static if (is(T == idouble)) + alias U = double; + else static if (is(T == ireal)) + alias U = real; + else + alias U = T; + + static if (is(U == char)) { import core.internal.string : dstrcmp; return dstrcmp(cast(char[]) lhs, cast(char[]) rhs); } + else static if (!is(U == T)) + { + // Reuse another implementation + return __cmp(cast(U[]) lhs, cast(U[]) rhs); + } else { immutable len = lhs.length <= rhs.length ? lhs.length : rhs.length; From fc83c27b4acf6acd88e4ace21ae47d91603440c5 Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Tue, 7 Mar 2017 14:00:37 -0500 Subject: [PATCH 617/768] Oooops... --- src/object.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index c74deecf00..fb1709450b 100644 --- a/src/object.d +++ b/src/object.d @@ -3297,7 +3297,7 @@ if (__traits(isScalar, T)) { // Use rt.cmath2._Ccmp instead ? auto r = (a.re > b.re) - (a.re < b.re); - if (!r) r = (a.im > b.im) - (a.im < a.im); + if (!r) r = (a.im > b.im) - (a.im < b.im); } else { From c996f02008d5c56e4c0dc275200c294bf8196943 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 7 Mar 2017 21:42:15 -0800 Subject: [PATCH 618/768] Small code simplification in core.time. We already have the type with Args[i], so there's no need to ask args[i] for its type. --- src/core/time.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index 69c288d3b0..c4e1aeaa33 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -1140,9 +1140,9 @@ public: foreach(i, unit; units) { static if(unit == "nsecs") - args[i] = cast(typeof(args[i]))convert!("hnsecs", "nsecs")(hnsecs); + args[i] = cast(Args[i])convert!("hnsecs", "nsecs")(hnsecs); else - args[i] = cast(typeof(args[i]))splitUnitsFromHNSecs!unit(hnsecs); + args[i] = cast(Args[i])splitUnitsFromHNSecs!unit(hnsecs); } } From f72b3fe1406bf12c924502d24a6737ab3ba02199 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 9 Mar 2017 18:34:50 +0100 Subject: [PATCH 619/768] run pipeline outside of node block - to avoid executor startvation, see Dicebot/dlangci#30 --- Jenkinsfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index eb9fbdedab..aad543ddce 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -12,9 +12,11 @@ def clone (repo_url, git_ref = "master") { ) } +def pipeline node { dir('dlang/ci') { - clone 'https://github.com/Dicebot/dlangci.git' + cleanCheckout 'https://github.com/Dicebot/dlangci.git', 'master' } - load 'dlang/ci/pipeline.groovy' + pipeline = load 'dlang/ci/pipeline.groovy' } +pipeline.runPipeline() From 3d8d4a45c01832fb657c16a656b6e1566d77fb21 Mon Sep 17 00:00:00 2001 From: Nikolay Tolstokulakov Date: Thu, 4 Feb 2016 13:40:21 +0600 Subject: [PATCH 620/768] netbsd patch --- osmodel.mak | 3 + src/core/runtime.d | 16 + src/core/stdc/config.d | 2 + src/core/stdc/errno.d | 132 ++++++++ src/core/stdc/fenv.d | 46 +++ src/core/stdc/locale.d | 17 + src/core/stdc/math.d | 545 +++++++++++++++++++++++++++++++- src/core/stdc/stdio.d | 123 ++++++++ src/core/stdc/stdlib.d | 1 + src/core/stdc/string.d | 4 + src/core/stdc/tgmath.d | 549 +++++++++++++++++++++++++++++++++ src/core/stdc/time.d | 11 + src/core/thread.d | 27 ++ src/core/threadasm.S | 2 +- src/core/time.d | 18 ++ src/gc/os.d | 1 + src/rt/bss_section.c | 2 +- src/rt/dmain2.d | 4 + src/rt/sections.d | 2 + src/rt/sections_elf_shared.d | 33 ++ test/exceptions/line_trace.exp | 10 +- test/shared/src/load.d | 1 + 22 files changed, 1541 insertions(+), 8 deletions(-) diff --git a/osmodel.mak b/osmodel.mak index f56716a363..48e01f17d6 100644 --- a/osmodel.mak +++ b/osmodel.mak @@ -15,6 +15,9 @@ ifeq (,$(OS)) ifeq (OpenBSD,$(uname_S)) OS:=openbsd endif + ifeq (NetBSD,$(uname_S)) + OS:=netbsd + endif ifeq (Solaris,$(uname_S)) OS:=solaris endif diff --git a/src/core/runtime.d b/src/core/runtime.d index 184fed7b9a..4655391c5f 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -456,6 +456,8 @@ extern (C) bool runModuleUnitTests() import core.sys.darwin.execinfo; else version( FreeBSD ) import core.sys.freebsd.execinfo; + else version( NetBSD ) + import core.sys.netbsd.execinfo; else version( Windows ) import core.sys.windows.stacktrace; else version( Solaris ) @@ -538,6 +540,8 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) import core.sys.darwin.execinfo; else version( FreeBSD ) import core.sys.freebsd.execinfo; + else version( NetBSD ) + import core.sys.netbsd.execinfo; else version( Windows ) import core.sys.windows.stacktrace; else version( Solaris ) @@ -735,6 +739,18 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) symEnd = eptr - buf.ptr; } } + else version( NetBSD ) + { + // format is: 0x00000000 <_D6module4funcAFZv+0x78> at module + auto bptr = cast(char*) memchr( buf.ptr, '<', buf.length ); + auto eptr = cast(char*) memchr( buf.ptr, '+', buf.length ); + + if( bptr++ && eptr ) + { + symBeg = bptr - buf.ptr; + symEnd = eptr - buf.ptr; + } + } else version( Solaris ) { // format is object'symbol+offset [pc] diff --git a/src/core/stdc/config.d b/src/core/stdc/config.d index f5f4504d3f..f8931404c6 100644 --- a/src/core/stdc/config.d +++ b/src/core/stdc/config.d @@ -127,6 +127,8 @@ else version( DigitalMars ) alias real c_long_double; else version( OpenBSD ) alias real c_long_double; + else version( NetBSD ) + alias real c_long_double; else version( Solaris ) alias real c_long_double; else version( Darwin ) diff --git a/src/core/stdc/errno.d b/src/core/stdc/errno.d index 40f503e3ba..8d309b3a85 100644 --- a/src/core/stdc/errno.d +++ b/src/core/stdc/errno.d @@ -1110,6 +1110,138 @@ else version( FreeBSD ) enum EPROTO = 92; /// Protocol error enum ELAST = 92; /// Must be equal largest errno } +else version (NetBSD) +{ + // http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/errno.h + enum EPERM = 1; + enum ENOENT = 2; + enum ESRCH = 3; + enum EINTR = 4; + enum EIO = 5; + enum ENXIO = 6; + enum E2BIG = 7; + enum ENOEXEC = 8; + enum EBADF = 9; + enum ECHILD = 10; + enum EDEADLK = 11; + /// + enum ENOMEM = 12; + enum EACCES = 13; + enum EFAULT = 14; + enum ENOTBLK = 15; + enum EBUSY = 16; + enum EEXIST = 17; + enum EXDEV = 18; + enum ENODEV = 19; + enum ENOTDIR = 20; + enum EISDIR = 21; + enum EINVAL = 22; + enum ENFILE = 23; + enum EMFILE = 24; + enum ENOTTY = 25; + enum ETXTBSY = 26; + enum EFBIG = 27; + enum ENOSPC = 28; + enum ESPIPE = 29; + enum EROFS = 30; + enum EMLINK = 31; + enum EPIPE = 32; + /// + enum EDOM = 33; + enum ERANGE = 34; + + /// + enum EAGAIN = 35; + enum EWOULDBLOCK = EAGAIN; + enum EINPROGRESS = 36; + enum EALREADY = 37; + + /// + enum ENOTSOCK = 38; + enum EDESTADDRREQ = 39; + enum EMSGSIZE = 40; + enum EPROTOTYPE = 41; + enum ENOPROTOOPT = 42; + enum EPROTONOSUPPORT = 43; + enum ESOCKTNOSUPPORT = 44; + enum EOPNOTSUPP = 45; + enum EPFNOSUPPORT = 46; + enum EAFNOSUPPORT = 47; + enum EADDRINUSE = 48; + enum EADDRNOTAVAIL = 49; + + /// + enum ENETDOWN = 50; + enum ENETUNREACH = 51; + enum ENETRESET = 52; + enum ECONNABORTED = 53; + enum ECONNRESET = 54; + enum ENOBUFS = 55; + enum EISCONN = 56; + enum ENOTCONN = 57; + enum ESHUTDOWN = 58; + enum ETOOMANYREFS = 59; + enum ETIMEDOUT = 60; + enum ECONNREFUSED = 61; + enum ELOOP = 62; + enum ENAMETOOLONG = 63; + + /// + enum EHOSTDOWN = 64; + enum EHOSTUNREACH = 65; + enum ENOTEMPTY = 66; + + /// + enum EPROCLIM = 67; + enum EUSERS = 68; + enum EDQUOT = 69; + + /// + enum ESTALE = 70; + enum EREMOTE = 71; + enum EBADRPC = 72; + enum ERPCMISMATCH = 73; + enum EPROGUNAVAIL = 74; + enum EPROGMISMATCH = 75; + enum EPROCUNAVAIL = 76; + + enum ENOLCK = 77; + enum ENOSYS = 78; + + enum EFTYPE = 79; + enum EAUTH = 80; + enum ENEEDAUTH = 81; + + /// + enum EIDRM = 82; + enum ENOMSG = 83; + enum EOVERFLOW = 84; + /// + enum EILSEQ = 85; + + /// + enum ENOTSUP = 86; + + /// + enum ECANCELED = 87; + + /// + enum EBADMSG = 88; + + /// + enum ENODATA = 89; + enum ENOSR = 90; + enum ENOSTR = 91; + enum ETIME = 92; + + /// + enum ENOATTR = 93; + + /// + enum EMULTIHOP = 94; + enum ENOLINK = 95; + enum EPROTO = 96; +} else version( OpenBSD ) { enum EPERM = 1; /// Operation not permitted diff --git a/src/core/stdc/fenv.d b/src/core/stdc/fenv.d index 08a98bd6d8..0739075210 100644 --- a/src/core/stdc/fenv.d +++ b/src/core/stdc/fenv.d @@ -196,6 +196,46 @@ else version ( FreeBSD ) alias ushort fexcept_t; } +else version ( NetBSD ) +{ + version(X86_64) + { + struct fenv_t + { + struct _x87 + { + uint control; /* Control word register */ + uint status; /* Status word register */ + uint tag; /* Tag word register */ + uint[4] others; /* EIP, Pointer Selector, etc */ + }; + _x87 x87; + + uint mxcsr; /* Control and status register */ + } + } + version(X86) + { + struct fenv_t + { + struct _x87 + { + ushort control; /* Control word register */ + ushort unused1; + ushort status; /* Status word register */ + ushort unused2; + ushort tag; /* Tag word register */ + ushort unused3; + uint[4] others; /* EIP, Pointer Selector, etc */ + }; + _x87 x87; + uint32_t mxcsr; /* Control and status register */ + }; + + } + + alias uint fexcept_t; +} else version ( OpenBSD ) { struct fenv_t @@ -326,6 +366,12 @@ else version( FreeBSD ) /// enum FE_DFL_ENV = &__fe_dfl_env; } +else version( NetBSD ) +{ + private extern const fenv_t __fe_dfl_env; + /// + enum FE_DFL_ENV = &__fe_dfl_env; +} else version( OpenBSD ) { private extern const fenv_t __fe_dfl_env; diff --git a/src/core/stdc/locale.d b/src/core/stdc/locale.d index 8e602943f0..aa7c61ed98 100644 --- a/src/core/stdc/locale.d +++ b/src/core/stdc/locale.d @@ -135,6 +135,23 @@ else version(FreeBSD) /// enum LC_MESSAGES = 6; } +else version(NetBSD) +{ + /// + enum LC_ALL = 0; + /// + enum LC_COLLATE = 1; + /// + enum LC_CTYPE = 2; + /// + enum LC_MONETARY = 3; + /// + enum LC_NUMERIC = 4; + /// + enum LC_TIME = 5; + /// + enum LC_MESSAGES = 6; +} else version(OpenBSD) { /// diff --git a/src/core/stdc/math.d b/src/core/stdc/math.d index d8c1441b5d..e58afce314 100644 --- a/src/core/stdc/math.d +++ b/src/core/stdc/math.d @@ -53,6 +53,13 @@ version (FreeBSD) /// enum int FP_ILOGBNAN = int.max; } +else version (NetBSD) +{ + /// + enum int FP_ILOGB0 = -int.max; + /// + enum int FP_ILOGBNAN = int.max; +} else version (OpenBSD) { /// @@ -972,6 +979,97 @@ else version( OpenBSD ) int signbit(real x) { return __signbit(x); } } } +else version( NetBSD ) +{ + enum + { + /// + FP_INFINITE = 0, + /// + FP_NAN = 1, + /// + FP_NORMAL = 2, + /// + FP_SUBNORMAL = 3, + /// + FP_ZERO = 4, + } + + enum + { + /// + FP_FAST_FMA = 0, + /// + FP_FAST_FMAF = 0, + /// + FP_FAST_FMAL = 0, + } + + uint __fpclassifyf(float x); + uint __fpclassifyd(double x); + uint __fpclassifyl(real x); + + extern (D) + { + //int fpclassify(real-floating x); + /// + int fpclassify(float x) { return __fpclassifyf(x); } + /// + int fpclassify(double x) { return __fpclassifyd(x); } + /// + int fpclassify(real x) + { + return (real.sizeof == double.sizeof) + ? __fpclassifyd(x) + : __fpclassifyl(x); + } + + //int isfinite(real-floating x); + /// + int isfinite(float x) { return fpclassify(x) >= FP_NORMAL; } + /// + int isfinite(double x) { return fpclassify(x) >= FP_NORMAL; } + /// + int isfinite(real x) { return fpclassify(x) >= FP_NORMAL; } + + //int isinf(real-floating x); + /// + int isinf(float x) { return fpclassify(x) == FP_INFINITE; } + /// + int isinf(double x) { return fpclassify(x) == FP_INFINITE; } + /// + int isinf(real x) { return fpclassify(x) == FP_INFINITE; } + + //int isnan(real-floating x); + /// + int isnan(float x) { return fpclassify(x) == FP_NAN; } + /// + int isnan(double x) { return fpclassify(x) == FP_NAN; } + /// + int isnan(real x) { return fpclassify(x) == FP_NAN; } + + //int isnormal(real-floating x); + /// + int isnormal(float x) { return fpclassify(x) == FP_NORMAL; } + /// + int isnormal(double x) { return fpclassify(x) == FP_NORMAL; } + /// + int isnormal(real x) { return fpclassify(x) == FP_NORMAL; } + + //int signbit(real-floating x); + /// + int signbit(float x) { return (cast(short*)&(x))[1] & 0x8000; } + /// + int signbit(double x) { return (cast(short*)&(x))[3] & 0x8000; } + /// + int signbit(real x) + { + return (real.sizeof == double.sizeof) + ? (cast(short*)&(x))[3] & 0x8000 + : (cast(short*)&(x))[4] & 0x8000; + } + } +} else version( Solaris ) { int __isnanf(float x); @@ -1609,7 +1707,7 @@ else version( FreeBSD ) } else { - /// + /// real acosl(real x); /// real asinl(real x); @@ -2009,6 +2107,451 @@ else version( FreeBSD ) /// float fmaf(float x, float y, float z); } +else version(NetBSD) +{ + + /// + real acosl(real x); + /// + real asinl(real x); + /// + real atanl(real x); + /// + real atan2l(real y, real x); + /// + real cosl(real x); + /// + real sinl(real x); + /// + real tanl(real x); + /// + real exp2l(real x); + /// + real frexpl(real value, int* exp); + /// + int ilogbl(real x); + /// + real ldexpl(real x, int exp); + /// + real logbl(real x); + /// + real modfl(real value, real *iptr); + /// + real scalbnl(real x, int n); + /// + real scalblnl(real x, c_long n); + /// + real fabsl(real x); + /// + real hypotl(real x, real y); + /// + real sqrtl(real x); + /// + real ceill(real x); + /// + real floorl(real x); + /// + real nearbyintl(real x); + /// + real rintl(real x); + /// + c_long lrintl(real x) { return cast(c_long)rintl(x); } + /// + real roundl(real x); + /// + c_long lroundl(real x) { return cast(c_long)roundl(x);} + /// + long llroundl(real x) { return cast(long)roundl(x);} + /// + real truncl(real x); + /// + real fmodl(real x, real y); + /// + real remainderl(real x, real y) { return remainder(x,y); } + /// + real remquol(real x, real y, int* quo){ return remquo(x,y,quo); } + /// + real copysignl(real x, real y); + /// + double nan(char* tagp); + /// + float nanf(char* tagp); + /// + real nanl(char* tagp); + /// + real nextafterl(real x, real y); + /// + real nexttowardl(real x, real y) { return nexttoward(cast(double) x, cast(double) y); } + /// + real fdiml(real x, real y); + /// + real fmaxl(real x, real y); + /// + real fminl(real x, real y); + /// + real fmal(real x, real y, real z); + + /// + double acos(double x); + /// + float acosf(float x); + + /// + double asin(double x); + /// + float asinf(float x); + + /// + double atan(double x); + /// + float atanf(float x); + + /// + double atan2(double y, double x); + /// + float atan2f(float y, float x); + + /// + double cos(double x); + /// + float cosf(float x); + + /// + double sin(double x); + /// + float sinf(float x); + + /// + double tan(double x); + /// + float tanf(float x); + + /// + double acosh(double x); + /// + float acoshf(float x); + /// + real acoshl(real x); + + /// + double asinh(double x); + /// + float asinhf(float x); + /// + real asinhl(real x); + + /// + double atanh(double x); + /// + float atanhf(float x); + /// + real atanhl(real x); + + /// + double cosh(double x); + /// + float coshf(float x); + /// + real coshl(real x); + + /// + double sinh(double x); + /// + float sinhf(float x); + /// + real sinhl(real x); + + /// + double tanh(double x); + /// + float tanhf(float x); + /// + real tanhl(real x); + + /// + double exp(double x); + /// + float expf(float x); + /// + real expl(real x); + + /// + double exp2(double x); + /// + float exp2f(float x); + + /// + double expm1(double x); + /// + float expm1f(float x); + /// + real expm1l(real x) { return expm1(cast(double) x); } + + /// + double frexp(double value, int* exp); + /// + float frexpf(float value, int* exp); + + /// + int ilogb(double x); + /// + int ilogbf(float x); + + /// + double ldexp(double x, int exp); + /// + float ldexpf(float x, int exp); + + /// + double log(double x); + /// + float logf(float x); + /// NetBSD has no logl. It is just alias log(double) + real logl(real x) + { + if(x<0) return real.nan; + if(x==0) return -real.infinity; + if(isnan(x) || isinf(x)) return x; + real rs = 0; + if(x>double.max) + { + immutable MAX = log(double.max); + for(; x>double.max; x /= double.max) + rs += MAX; + } + else if(xdouble.max) + { + immutable MAX = log10(double.max); + for(; x>double.max; x /= double.max) + rs += MAX; + } + else if(x + { + char[128] _mbstate8; + long _mbstateL; + } +} else version ( OpenBSD ) { enum @@ -435,6 +469,50 @@ else version( FreeBSD ) /// alias shared(__sFILE) FILE; } +else version( NetBSD ) +{ + /// + alias off_t fpos_t; + + /// + struct __sFILE + { + ubyte* _p; + int _r; + int _w; + ushort _flags; + short _file; + __sbuf _bf; + int _lbfsize; + + void* _cookie; + int function(void*) _close; + ssize_t function(void*, char*, size_t) _read; + fpos_t function(void*, fpos_t, int) _seek; + ssize_t function(void*, in char*, size_t) _write; + + __sbuf _ub; + ubyte* _up; + int _ur; + + ubyte[3] _ubuf; + ubyte[1] _nbuf; + + int function(void *) _flush; + /* Formerly used by fgetln/fgetwln; kept for binary compatibility */ + char[__sbuf.sizeof - _flush.sizeof] _lb_unused; + + + int _blksize; + off_t _offset; + static assert(off_t.sizeof==8); + } + + /// + alias __sFILE _iobuf; + /// + alias shared(__sFILE) FILE; +} else version( OpenBSD ) { /// @@ -741,6 +819,29 @@ else version( FreeBSD ) /// alias __stderrp stderr; } +else version( NetBSD ) +{ + enum + { + /// + _IOFBF = 0, + /// + _IOLBF = 1, + /// + _IONBF = 2, + } + + private extern __gshared FILE[3] __sF; + @property auto __stdin() { return &__sF[0]; } + @property auto __stdout() { return &__sF[1]; } + @property auto __stderr() { return &__sF[2]; } + /// + alias __stdin stdin; + /// + alias __stdout stdout; + /// + alias __stderr stderr; +} else version( OpenBSD ) { enum @@ -1158,6 +1259,28 @@ else version( FreeBSD ) /// int vsnprintf(scope char* s, size_t n, scope const char* format, va_list arg); } +else version( NetBSD ) +{ + // No unsafe pointer manipulation. + @trusted + { + /// + void rewind(FILE*); + /// + pure void clearerr(FILE*); + /// + pure int feof(FILE*); + /// + pure int ferror(FILE*); + /// + int fileno(FILE*); + } + + /// + int snprintf(char* s, size_t n, in char* format, ...); + /// + int vsnprintf(char* s, size_t n, in char* format, va_list arg); +} else version( OpenBSD ) { // No unsafe pointer manipulation. diff --git a/src/core/stdc/stdlib.d b/src/core/stdc/stdlib.d index 01b3722c9b..f3b8a7b7fb 100644 --- a/src/core/stdc/stdlib.d +++ b/src/core/stdc/stdlib.d @@ -75,6 +75,7 @@ version(Windows) enum RAND_MAX = 0x7fff; else version(CRuntime_Glibc) enum RAND_MAX = 0x7fffffff; else version(Darwin) enum RAND_MAX = 0x7fffffff; else version(FreeBSD) enum RAND_MAX = 0x7fffffff; +else version(NetBSD) enum RAND_MAX = 0x7fffffff; else version(OpenBSD) enum RAND_MAX = 0x7fffffff; else version(Solaris) enum RAND_MAX = 0x7fff; else version(CRuntime_Bionic) enum RAND_MAX = 0x7fffffff; diff --git a/src/core/stdc/string.d b/src/core/stdc/string.d index 103076de54..8135cfe9b5 100644 --- a/src/core/stdc/string.d +++ b/src/core/stdc/string.d @@ -89,6 +89,10 @@ else version (FreeBSD) { int strerror_r(int errnum, scope char* buf, size_t buflen); } +else version (NetBSD) +{ + int strerror_r(int errnum, char* buf, size_t buflen); +} else version (OpenBSD) { int strerror_r(int errnum, scope char* buf, size_t buflen); diff --git a/src/core/stdc/tgmath.d b/src/core/stdc/tgmath.d index d6fe71975f..8747008c2e 100644 --- a/src/core/stdc/tgmath.d +++ b/src/core/stdc/tgmath.d @@ -571,6 +571,555 @@ version( FreeBSD ) // alias core.stdc.complex.crealf creal; // alias core.stdc.complex.creall creal; } +version( NetBSD ) +{ + /// + alias core.stdc.math.acos acos; + /// + alias core.stdc.math.acosf acos; + /// + alias core.stdc.math.acosl acos; + + /// + alias core.stdc.complex.cacos acos; + /// + alias core.stdc.complex.cacosf acos; + /// + alias core.stdc.complex.cacosl acos; + + /// + alias core.stdc.math.asin asin; + /// + alias core.stdc.math.asinf asin; + /// + alias core.stdc.math.asinl asin; + + /// + alias core.stdc.complex.casin asin; + /// + alias core.stdc.complex.casinf asin; + /// + alias core.stdc.complex.casinl asin; + + /// + alias core.stdc.math.atan atan; + /// + alias core.stdc.math.atanf atan; + /// + alias core.stdc.math.atanl atan; + + /// + alias core.stdc.complex.catan atan; + /// + alias core.stdc.complex.catanf atan; + /// + alias core.stdc.complex.catanl atan; + + /// + alias core.stdc.math.atan2 atan2; + /// + alias core.stdc.math.atan2f atan2; + /// + alias core.stdc.math.atan2l atan2; + + /// + alias core.stdc.math.cos cos; + /// + alias core.stdc.math.cosf cos; + /// + alias core.stdc.math.cosl cos; + + /// + alias core.stdc.complex.ccos cos; + /// + alias core.stdc.complex.ccosf cos; + /// + alias core.stdc.complex.ccosl cos; + + /// + alias core.stdc.math.sin sin; + /// + alias core.stdc.math.sinf sin; + /// + alias core.stdc.math.sinl sin; + + /// + alias core.stdc.complex.csin csin; + /// + alias core.stdc.complex.csinf csin; + /// + alias core.stdc.complex.csinl csin; + + /// + alias core.stdc.math.tan tan; + /// + alias core.stdc.math.tanf tan; + /// + alias core.stdc.math.tanl tan; + + /// + alias core.stdc.complex.ctan tan; + /// + alias core.stdc.complex.ctanf tan; + /// + alias core.stdc.complex.ctanl tan; + + /// + alias core.stdc.math.acosh acosh; + /// + alias core.stdc.math.acoshf acosh; + /// + alias core.stdc.math.acoshl acosh; + + /// + alias core.stdc.complex.cacosh acosh; + /// + alias core.stdc.complex.cacoshf acosh; + /// + alias core.stdc.complex.cacoshl acosh; + + /// + alias core.stdc.math.asinh asinh; + /// + alias core.stdc.math.asinhf asinh; + /// + alias core.stdc.math.asinhl asinh; + + /// + alias core.stdc.complex.casinh asinh; + /// + alias core.stdc.complex.casinhf asinh; + /// + alias core.stdc.complex.casinhl asinh; + + /// + alias core.stdc.math.atanh atanh; + /// + alias core.stdc.math.atanhf atanh; + /// + alias core.stdc.math.atanhl atanh; + + /// + alias core.stdc.complex.catanh atanh; + /// + alias core.stdc.complex.catanhf atanh; + /// + alias core.stdc.complex.catanhl atanh; + + /// + alias core.stdc.math.cosh cosh; + /// + alias core.stdc.math.coshf cosh; + /// + alias core.stdc.math.coshl cosh; + + /// + alias core.stdc.complex.ccosh cosh; + /// + alias core.stdc.complex.ccoshf cosh; + /// + alias core.stdc.complex.ccoshl cosh; + + /// + alias core.stdc.math.sinh sinh; + /// + alias core.stdc.math.sinhf sinh; + /// + alias core.stdc.math.sinhl sinh; + + /// + alias core.stdc.complex.csinh sinh; + /// + alias core.stdc.complex.csinhf sinh; + /// + alias core.stdc.complex.csinhl sinh; + + /// + alias core.stdc.math.tanh tanh; + /// + alias core.stdc.math.tanhf tanh; + /// + alias core.stdc.math.tanhl tanh; + + /// + alias core.stdc.complex.ctanh tanh; + /// + alias core.stdc.complex.ctanhf tanh; + /// + alias core.stdc.complex.ctanhl tanh; + + /// + alias core.stdc.math.exp exp; + /// + alias core.stdc.math.expf exp; + /// + alias core.stdc.math.expl exp; + + /// + alias core.stdc.complex.cexp exp; + /// + alias core.stdc.complex.cexpf exp; + /// + alias core.stdc.complex.cexpl exp; + + /// + alias core.stdc.math.exp2 exp2; + /// + alias core.stdc.math.exp2f exp2; + /// + alias core.stdc.math.exp2l exp2; + + /// + alias core.stdc.math.expm1 expm1; + /// + alias core.stdc.math.expm1f expm1; + /// + alias core.stdc.math.expm1l expm1; + + /// + alias core.stdc.math.frexp frexp; + /// + alias core.stdc.math.frexpf frexp; + /// + alias core.stdc.math.frexpl frexp; + + /// + alias core.stdc.math.ilogb ilogb; + /// + alias core.stdc.math.ilogbf ilogb; + /// + alias core.stdc.math.ilogbl ilogb; + + /// + alias core.stdc.math.ldexp ldexp; + /// + alias core.stdc.math.ldexpf ldexp; + /// + alias core.stdc.math.ldexpl ldexp; + + /// + alias core.stdc.math.log log; + /// + alias core.stdc.math.logf log; + /// + alias core.stdc.math.logl log; + + /// + alias core.stdc.complex.clog log; + /// + alias core.stdc.complex.clogf log; + /// + alias core.stdc.complex.clogl log; + + /// + alias core.stdc.math.log10 log10; + /// + alias core.stdc.math.log10f log10; + /// + alias core.stdc.math.log10l log10; + + /// + alias core.stdc.math.log1p log1p; + /// + alias core.stdc.math.log1pf log1p; + /// + alias core.stdc.math.log1pl log1p; + + /// + alias core.stdc.math.log2 log2; + /// + alias core.stdc.math.log2f log2; + /// + alias core.stdc.math.log2l log2; + + /// + alias core.stdc.math.logb logb; + /// + alias core.stdc.math.logbf logb; + /// + alias core.stdc.math.logbl logb; + + /// + alias core.stdc.math.modf modf; + /// + alias core.stdc.math.modff modf; +// alias core.stdc.math.modfl modf; + + /// + alias core.stdc.math.scalbn scalbn; + /// + alias core.stdc.math.scalbnf scalbn; + /// + alias core.stdc.math.scalbnl scalbn; + + /// + alias core.stdc.math.scalbln scalbln; + /// + alias core.stdc.math.scalblnf scalbln; + /// + alias core.stdc.math.scalblnl scalbln; + + /// + alias core.stdc.math.cbrt cbrt; + /// + alias core.stdc.math.cbrtf cbrt; + /// + alias core.stdc.math.cbrtl cbrt; + + /// + alias core.stdc.math.fabs fabs; + /// + alias core.stdc.math.fabsf fabs; + /// + alias core.stdc.math.fabsl fabs; + + /// + alias core.stdc.complex.cabs fabs; + /// + alias core.stdc.complex.cabsf fabs; + /// + alias core.stdc.complex.cabsl fabs; + + /// + alias core.stdc.math.hypot hypot; + /// + alias core.stdc.math.hypotf hypot; + /// + alias core.stdc.math.hypotl hypot; + + /// + alias core.stdc.math.pow pow; + /// + alias core.stdc.math.powf pow; + /// + alias core.stdc.math.powl pow; + + /// + alias core.stdc.complex.cpow pow; + /// + alias core.stdc.complex.cpowf pow; + /// + alias core.stdc.complex.cpowl pow; + + /// + alias core.stdc.math.sqrt sqrt; + /// + alias core.stdc.math.sqrtf sqrt; + /// + alias core.stdc.math.sqrtl sqrt; + + /// + alias core.stdc.complex.csqrt sqrt; + /// + alias core.stdc.complex.csqrtf sqrt; + /// + alias core.stdc.complex.csqrtl sqrt; + + /// + alias core.stdc.math.erf erf; + /// + alias core.stdc.math.erff erf; + /// + alias core.stdc.math.erfl erf; + + /// + alias core.stdc.math.erfc erfc; + /// + alias core.stdc.math.erfcf erfc; + /// + alias core.stdc.math.erfcl erfc; + + /// + alias core.stdc.math.lgamma lgamma; + /// + alias core.stdc.math.lgammaf lgamma; + /// + alias core.stdc.math.lgammal lgamma; + + /// + alias core.stdc.math.tgamma tgamma; + /// + alias core.stdc.math.tgammaf tgamma; + /// + alias core.stdc.math.tgammal tgamma; + + /// + alias core.stdc.math.ceil ceil; + /// + alias core.stdc.math.ceilf ceil; + /// + alias core.stdc.math.ceill ceil; + + /// + alias core.stdc.math.floor floor; + /// + alias core.stdc.math.floorf floor; + /// + alias core.stdc.math.floorl floor; + + /// + alias core.stdc.math.nearbyint nearbyint; + /// + alias core.stdc.math.nearbyintf nearbyint; + /// + alias core.stdc.math.nearbyintl nearbyint; + + /// + alias core.stdc.math.rint rint; + /// + alias core.stdc.math.rintf rint; + /// + alias core.stdc.math.rintl rint; + + /// + alias core.stdc.math.lrint lrint; + /// + alias core.stdc.math.lrintf lrint; + /// + alias core.stdc.math.lrintl lrint; + + /// + alias core.stdc.math.llrint llrint; + /// + alias core.stdc.math.llrintf llrint; + /// + alias core.stdc.math.llrintl llrint; + + /// + alias core.stdc.math.round round; + /// + alias core.stdc.math.roundf round; + /// + alias core.stdc.math.roundl round; + + /// + alias core.stdc.math.lround lround; + /// + alias core.stdc.math.lroundf lround; + /// + alias core.stdc.math.lroundl lround; + + /// + alias core.stdc.math.llround llroundl; + /// + alias core.stdc.math.llroundf llroundl; + /// + alias core.stdc.math.llroundl llroundl; + + /// + alias core.stdc.math.trunc trunc; + /// + alias core.stdc.math.truncf trunc; + /// + alias core.stdc.math.truncl trunc; + + /// + alias core.stdc.math.fmod fmod; + /// + alias core.stdc.math.fmodf fmod; + /// + alias core.stdc.math.fmodl fmod; + + /// + alias core.stdc.math.remainder remainder; + /// + alias core.stdc.math.remainderf remainder; + /// + alias core.stdc.math.remainderl remainder; + + /// + alias core.stdc.math.remquo remquo; + /// + alias core.stdc.math.remquof remquo; + /// + alias core.stdc.math.remquol remquo; + + /// + alias core.stdc.math.copysign copysign; + /// + alias core.stdc.math.copysignf copysign; + /// + alias core.stdc.math.copysignl copysign; + +// alias core.stdc.math.nan nan; +// alias core.stdc.math.nanf nan; +// alias core.stdc.math.nanl nan; + + /// + alias core.stdc.math.nextafter nextafter; + /// + alias core.stdc.math.nextafterf nextafter; + /// + alias core.stdc.math.nextafterl nextafter; + + /// + alias core.stdc.math.nexttoward nexttoward; + /// + alias core.stdc.math.nexttowardf nexttoward; + /// + alias core.stdc.math.nexttowardl nexttoward; + + /// + alias core.stdc.math.fdim fdim; + /// + alias core.stdc.math.fdimf fdim; + /// + alias core.stdc.math.fdiml fdim; + + /// + alias core.stdc.math.fmax fmax; + /// + alias core.stdc.math.fmaxf fmax; + /// + alias core.stdc.math.fmaxl fmax; + + /// + alias core.stdc.math.fmin fmin; + /// + alias core.stdc.math.fmin fmin; + /// + alias core.stdc.math.fminl fmin; + + /// + alias core.stdc.math.fma fma; + /// + alias core.stdc.math.fmaf fma; + /// + alias core.stdc.math.fmal fma; + + /// + alias core.stdc.complex.carg carg; + /// + alias core.stdc.complex.cargf carg; + /// + alias core.stdc.complex.cargl carg; + + /// + alias core.stdc.complex.cimag cimag; + /// + alias core.stdc.complex.cimagf cimag; + /// + alias core.stdc.complex.cimagl cimag; + + /// + alias core.stdc.complex.conj conj; + /// + alias core.stdc.complex.conjf conj; + /// + alias core.stdc.complex.conjl conj; + + /// + alias core.stdc.complex.cproj cproj; + /// + alias core.stdc.complex.cprojf cproj; + /// + alias core.stdc.complex.cprojl cproj; + +// alias core.stdc.complex.creal creal; +// alias core.stdc.complex.crealf creal; +// alias core.stdc.complex.creall creal; +} + else version( OpenBSD ) { /// diff --git a/src/core/stdc/time.d b/src/core/stdc/time.d index 57ae25a064..4325ca3429 100644 --- a/src/core/stdc/time.d +++ b/src/core/stdc/time.d @@ -95,6 +95,10 @@ else version( FreeBSD ) { enum clock_t CLOCKS_PER_SEC = 128; } +else version( NetBSD ) +{ + enum clock_t CLOCKS_PER_SEC = 100; +} else version( OpenBSD ) { enum clock_t CLOCKS_PER_SEC = 100; @@ -162,6 +166,13 @@ else version( FreeBSD ) /// extern __gshared const(char)*[2] tzname; // non-standard } +else version( NetBSD ) +{ + /// + void tzset(); // non-standard + /// + extern __gshared const(char)*[2] tzname; // non-standard +} else version( OpenBSD ) { /// diff --git a/src/core/thread.d b/src/core/thread.d index 6beb3b034d..0c9904ce15 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -936,6 +936,12 @@ class Thread */ __gshared const int PRIORITY_DEFAULT; + version(NetBSD) + { + //NetBSD does not support priority for default policy + // and it is not possible change policy without root access + int fakePriority = int.max; + } /** * Gets the scheduling priority for the associated thread. @@ -952,6 +958,10 @@ class Thread { return GetThreadPriority( m_hndl ); } + else version(NetBSD) + { + return fakePriority==int.max? PRIORITY_DEFAULT : fakePriority; + } else version( Posix ) { int policy; @@ -1016,6 +1026,10 @@ class Thread if (priocntl(idtype_t.P_LWPID, P_MYID, PC_SETPARMS, &pcparm) == -1) throw new ThreadException( "Unable to set scheduling class" ); } + else version(NetBSD) + { + fakePriority = val; + } else version( Posix ) { static if(__traits(compiles, pthread_setschedprio)) @@ -3127,6 +3141,7 @@ extern (C) @nogc nothrow { version (CRuntime_Glibc) int pthread_getattr_np(pthread_t thread, pthread_attr_t* attr); version (FreeBSD) int pthread_attr_get_np(pthread_t thread, pthread_attr_t* attr); + version (NetBSD) int pthread_attr_get_np(pthread_t thread, pthread_attr_t* attr); version (Solaris) int thr_stksegment(stack_t* stk); version (CRuntime_Bionic) int pthread_getattr_np(pthread_t thid, pthread_attr_t* attr); } @@ -3187,6 +3202,17 @@ private void* getStackBottom() nothrow @nogc pthread_attr_destroy(&attr); return addr + size; } + else version (NetBSD) + { + pthread_attr_t attr; + void* addr; size_t size; + + pthread_attr_init(&attr); + pthread_attr_get_np(pthread_self(), &attr); + pthread_attr_getstack(&attr, &addr, &size); + pthread_attr_destroy(&attr); + return addr + size; + } else version (Solaris) { stack_t stk; @@ -4397,6 +4423,7 @@ private: { version (Posix) import core.sys.posix.sys.mman; // mmap version (FreeBSD) import core.sys.freebsd.sys.mman : MAP_ANON; + version (NetBSD) import core.sys.netbsd.sys.mman : MAP_ANON; version (CRuntime_Glibc) import core.sys.linux.sys.mman : MAP_ANON; version (Darwin) import core.sys.darwin.sys.mman : MAP_ANON; diff --git a/src/core/threadasm.S b/src/core/threadasm.S index 94acbef7ba..6c068abd4b 100644 --- a/src/core/threadasm.S +++ b/src/core/threadasm.S @@ -13,7 +13,7 @@ * http://www.boost.org/LICENSE_1_0.txt) */ -#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__ELF__) +#if (defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)) && defined(__ELF__) /* * Mark the resulting object file as not requiring execution permissions on * stack memory. The absence of this section would mark the whole resulting diff --git a/src/core/time.d b/src/core/time.d index 69c288d3b0..d3a734dda1 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -313,6 +313,13 @@ else version(FreeBSD) enum ClockType uptimeCoarse = 9, uptimePrecise = 10, } +else version(NetBSD) enum ClockType +{ + normal = 0, + coarse = 2, + precise = 3, + second = 6, +} else version(Solaris) enum ClockType { normal = 0, @@ -368,6 +375,17 @@ version(Posix) case second: assert(0); } } + else version(NetBSD) + { + import core.sys.netbsd.time; + with(ClockType) final switch(clockType) + { + case coarse: return CLOCK_MONOTONIC; + case normal: return CLOCK_MONOTONIC; + case precise: return CLOCK_MONOTONIC; + case second: assert(0); + } + } else version(Solaris) { import core.sys.solaris.time; diff --git a/src/gc/os.d b/src/gc/os.d index 2593d8f26c..f5eae0eb74 100644 --- a/src/gc/os.d +++ b/src/gc/os.d @@ -40,6 +40,7 @@ else version (Posix) import core.sys.posix.sys.mman; version (FreeBSD) import core.sys.freebsd.sys.mman : MAP_ANON; + version (NetBSD) import core.sys.netbsd.sys.mman : MAP_ANON; version (CRuntime_Glibc) import core.sys.linux.sys.mman : MAP_ANON; version (Darwin) import core.sys.darwin.sys.mman : MAP_ANON; import core.stdc.stdlib; diff --git a/src/rt/bss_section.c b/src/rt/bss_section.c index 939ecb2790..b00f40d51c 100644 --- a/src/rt/bss_section.c +++ b/src/rt/bss_section.c @@ -10,7 +10,7 @@ /* These symbols are defined in the linker script and bracket the * .bss, .lbss, .lrodata and .ldata sections. */ -#if defined(__linux__) || defined(__FreeBSD__) +#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) // Need to use weak linkage to workaround a bug in ld.bfd (Bugzilla 13025). extern int __attribute__((weak)) __bss_start, _end; diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index f17ca91004..2473f2d880 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -35,6 +35,10 @@ version (FreeBSD) { import core.stdc.fenv; } +version (NetBSD) +{ + import core.stdc.fenv; +} extern (C) void _d_monitor_staticctor(); extern (C) void _d_monitor_staticdtor(); diff --git a/src/rt/sections.d b/src/rt/sections.d index 0cbd5e594f..a12b73fb13 100644 --- a/src/rt/sections.d +++ b/src/rt/sections.d @@ -23,6 +23,8 @@ version (CRuntime_Glibc) public import rt.sections_elf_shared; else version (FreeBSD) public import rt.sections_elf_shared; +else version (NetBSD) + public import rt.sections_elf_shared; else version (Solaris) public import rt.sections_solaris; else version (Darwin) diff --git a/src/rt/sections_elf_shared.d b/src/rt/sections_elf_shared.d index ba9ef98a89..a95328b5fb 100644 --- a/src/rt/sections_elf_shared.d +++ b/src/rt/sections_elf_shared.d @@ -12,6 +12,7 @@ module rt.sections_elf_shared; version (CRuntime_Glibc) enum SharedELF = true; else version (FreeBSD) enum SharedELF = true; +else version (NetBSD) enum SharedELF = true; else enum SharedELF = false; static if (SharedELF): @@ -32,6 +33,12 @@ else version (FreeBSD) import core.sys.freebsd.sys.elf; import core.sys.freebsd.sys.link_elf; } +else version (NetBSD) +{ + import core.sys.netbsd.dlfcn; + import core.sys.netbsd.sys.elf; + import core.sys.netbsd.sys.link_elf; +} else { static assert(0, "unimplemented"); @@ -114,6 +121,7 @@ __gshared bool _isRuntimeInitialized; version (FreeBSD) private __gshared void* dummy_ref; +version (NetBSD) private __gshared void* dummy_ref; /**** * Gets called on program startup just before GC is initialized. @@ -123,6 +131,7 @@ void initSections() nothrow @nogc _isRuntimeInitialized = true; // reference symbol to support weak linkage version (FreeBSD) dummy_ref = &_d_dso_registry; + version (NetBSD) dummy_ref = &_d_dso_registry; } @@ -252,6 +261,7 @@ private: // start of linked list for ModuleInfo references version (FreeBSD) deprecated extern (C) __gshared void* _Dmodule_ref; +version (NetBSD) deprecated extern (C) __gshared void* _Dmodule_ref; version (Shared) { @@ -663,6 +673,8 @@ version (Shared) strtab = cast(const(char)*)dyn.d_un.d_ptr; else version (FreeBSD) strtab = cast(const(char)*)(info.dlpi_addr + dyn.d_un.d_ptr); // relocate + else version (NetBSD) + strtab = cast(const(char)*)(info.dlpi_addr + dyn.d_un.d_ptr); // relocate else static assert(0, "unimplemented"); break; @@ -768,6 +780,23 @@ else version (FreeBSD) bool findDSOInfoForAddr(in void* addr, dl_phdr_info* resu { return !!_rtld_addr_phdr(addr, result); } +else version (NetBSD) bool findDSOInfoForAddr(in void* addr, dl_phdr_info* result=null) nothrow @nogc +{ + static struct DG { const(void)* addr; dl_phdr_info* result; } + + extern(C) int callback(dl_phdr_info* info, size_t sz, void* arg) nothrow @nogc + { + auto p = cast(DG*)arg; + if (findSegmentForAddr(*info, p.addr)) + { + if (p.result !is null) *p.result = *info; + return 1; // break; + } + return 0; // continue iteration + } + auto dg = DG(addr, result); + return dl_iterate_phdr(&callback, &dg) != 0; +} /********************************* * Determine if 'addr' lies within shared object 'info'. @@ -793,11 +822,13 @@ bool findSegmentForAddr(in ref dl_phdr_info info, in void* addr, ElfW!"Phdr"* re version (linux) import core.sys.linux.errno : program_invocation_name; // should be in core.sys.freebsd.stdlib version (FreeBSD) extern(C) const(char)* getprogname() nothrow @nogc; +version (NetBSD) extern(C) const(char)* getprogname() nothrow @nogc; @property const(char)* progname() nothrow @nogc { version (linux) return program_invocation_name; version (FreeBSD) return getprogname(); + version (NetBSD) return getprogname(); } const(char)[] dsoName(const char* dlpi_name) nothrow @nogc @@ -836,6 +867,8 @@ const(void)[] getCopyRelocSection() nothrow @nogc enum ElfW!"Addr" exeBaseAddr = 0; else version (FreeBSD) enum ElfW!"Addr" exeBaseAddr = 0; + else version (NetBSD) + enum ElfW!"Addr" exeBaseAddr = 0; dl_phdr_info info = void; findDSOInfoForAddr(bss_start, &info) || assert(0); diff --git a/test/exceptions/line_trace.exp b/test/exceptions/line_trace.exp index c0909b653b..d0111a0360 100644 --- a/test/exceptions/line_trace.exp +++ b/test/exceptions/line_trace.exp @@ -2,8 +2,8 @@ object.Exception@src/line_trace.d(17): exception ---------------- src/line_trace.d:17 void line_trace.f1() [ADDR] src/line_trace.d:5 _Dmain [ADDR] -src/rt/dmain2.d:472 _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [ADDR] -src/rt/dmain2.d:447 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(void delegate()) [ADDR] -src/rt/dmain2.d:472 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [ADDR] -src/rt/dmain2.d:447 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(void delegate()) [ADDR] -src/rt/dmain2.d:480 _d_run_main [ADDR] +src/rt/dmain2.d:476 _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [ADDR] +src/rt/dmain2.d:451 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(void delegate()) [ADDR] +src/rt/dmain2.d:476 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [ADDR] +src/rt/dmain2.d:451 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(void delegate()) [ADDR] +src/rt/dmain2.d:484 _d_run_main [ADDR] diff --git a/test/shared/src/load.d b/test/shared/src/load.d index 4b114a6d07..c23302117f 100644 --- a/test/shared/src/load.d +++ b/test/shared/src/load.d @@ -2,6 +2,7 @@ import core.runtime, core.stdc.stdio, core.thread; version (linux) import core.sys.linux.dlfcn; else version (FreeBSD) import core.sys.freebsd.dlfcn; +else version (NetBSD) import core.sys.netbsd.dlfcn; else static assert(0, "unimplemented"); void loadSym(T)(void* handle, ref T val, const char* mangle) From 0b1172b7a58259213d49680f754de58da7131b65 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 10 Mar 2017 15:58:39 +0100 Subject: [PATCH 621/768] fix Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index aad543ddce..b6ae0190e5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ def clone (repo_url, git_ref = "master") { def pipeline node { dir('dlang/ci') { - cleanCheckout 'https://github.com/Dicebot/dlangci.git', 'master' + clone 'https://github.com/Dicebot/dlangci.git', 'master' } pipeline = load 'dlang/ci/pipeline.groovy' } From 2b736083aabc96a6b21cac3a5b86023732507872 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 10 Mar 2017 18:20:35 +0100 Subject: [PATCH 622/768] trailing ws --- src/core/sys/posix/iconv.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/posix/iconv.d b/src/core/sys/posix/iconv.d index 14670f063d..1bde829f52 100644 --- a/src/core/sys/posix/iconv.d +++ b/src/core/sys/posix/iconv.d @@ -51,7 +51,7 @@ size_t iconv (iconv_t cd, in char** inbuf, size_t* outbytesleft); /// iconvctl queries or adjusts the behavior of the iconv function, -/// when invoked with the specified conversion descriptor, +/// when invoked with the specified conversion descriptor, /// depending on the request value. int iconvctl (iconv_t cd, int request, void* argument); From dd13e98dca241718a53c514a3e0d6a90a96e1422 Mon Sep 17 00:00:00 2001 From: Nikolay Tolstokulakov Date: Thu, 4 Feb 2016 13:38:50 +0600 Subject: [PATCH 623/768] netbsd patch: core/sys/posix --- src/core/stdc/tgmath.d | 1 - src/core/sys/posix/arpa/inet.d | 29 +++ src/core/sys/posix/dirent.d | 46 +++++ src/core/sys/posix/dlfcn.d | 23 +++ src/core/sys/posix/fcntl.d | 53 ++++++ src/core/sys/posix/grp.d | 21 +++ src/core/sys/posix/net/if_.d | 15 ++ src/core/sys/posix/netdb.d | 107 +++++++++++ src/core/sys/posix/netinet/in_.d | 178 ++++++++++++++++++ src/core/sys/posix/netinet/tcp.d | 4 + src/core/sys/posix/poll.d | 34 ++++ src/core/sys/posix/pthread.d | 146 +++++++++++++++ src/core/sys/posix/pwd.d | 29 +++ src/core/sys/posix/sched.d | 21 +++ src/core/sys/posix/semaphore.d | 10 ++ src/core/sys/posix/setjmp.d | 43 +++++ src/core/sys/posix/signal.d | 290 +++++++++++++++++++++++++++++- src/core/sys/posix/stdio.d | 4 + src/core/sys/posix/stdlib.d | 56 ++++++ src/core/sys/posix/sys/ioctl.d | 12 ++ src/core/sys/posix/sys/ipc.d | 25 +++ src/core/sys/posix/sys/mman.d | 59 ++++++ src/core/sys/posix/sys/resource.d | 64 +++++++ src/core/sys/posix/sys/select.d | 49 +++++ src/core/sys/posix/sys/shm.d | 26 +++ src/core/sys/posix/sys/socket.d | 211 ++++++++++++++++++++++ src/core/sys/posix/sys/stat.d | 84 +++++++++ src/core/sys/posix/sys/time.d | 19 ++ src/core/sys/posix/sys/types.d | 103 +++++++++++ src/core/sys/posix/sys/uio.d | 11 ++ src/core/sys/posix/sys/un.d | 9 + src/core/sys/posix/sys/utsname.d | 16 ++ src/core/sys/posix/sys/wait.d | 28 +++ src/core/sys/posix/syslog.d | 65 +++++++ src/core/sys/posix/termios.d | 142 +++++++++++++++ src/core/sys/posix/time.d | 45 +++++ src/core/sys/posix/ucontext.d | 56 ++++++ src/core/sys/posix/unistd.d | 171 ++++++++++++++++++ src/core/sys/posix/utime.d | 10 ++ 39 files changed, 2313 insertions(+), 2 deletions(-) diff --git a/src/core/stdc/tgmath.d b/src/core/stdc/tgmath.d index 8747008c2e..901e656d5f 100644 --- a/src/core/stdc/tgmath.d +++ b/src/core/stdc/tgmath.d @@ -1119,7 +1119,6 @@ version( NetBSD ) // alias core.stdc.complex.crealf creal; // alias core.stdc.complex.creall creal; } - else version( OpenBSD ) { /// diff --git a/src/core/sys/posix/arpa/inet.d b/src/core/sys/posix/arpa/inet.d index 552e68acfb..675a197e6d 100644 --- a/src/core/sys/posix/arpa/inet.d +++ b/src/core/sys/posix/arpa/inet.d @@ -133,6 +133,31 @@ else version( FreeBSD ) const(char)* inet_ntop(int, in void*, char*, socklen_t); int inet_pton(int, in char*, void*); } +else version(NetBSD) +{ + alias uint16_t in_port_t; + alias uint32_t in_addr_t; + + struct in_addr + { + in_addr_t s_addr; + } + + enum INET_ADDRSTRLEN = 16; + + @trusted pure + { + uint32_t htonl(uint32_t); + uint16_t htons(uint16_t); + uint32_t ntohl(uint32_t); + uint16_t ntohs(uint16_t); + } + + in_addr_t inet_addr(in char*); + char* inet_ntoa(in_addr); + const(char)* inet_ntop(int, in void*, char*, socklen_t); + int inet_pton(int, in char*, void*); +} else version( Solaris ) { alias uint16_t in_port_t; @@ -220,6 +245,10 @@ else version( FreeBSD ) { enum INET6_ADDRSTRLEN = 46; } +else version(NetBSD) +{ + enum INET6_ADDRSTRLEN = 46; +} else version( Solaris ) { enum INET6_ADDRSTRLEN = 46; diff --git a/src/core/sys/posix/dirent.d b/src/core/sys/posix/dirent.d index 0b332157af..5a51cc7378 100644 --- a/src/core/sys/posix/dirent.d +++ b/src/core/sys/posix/dirent.d @@ -162,6 +162,35 @@ else version( FreeBSD ) dirent* readdir(DIR*); } +else version(NetBSD) +{ + enum + { + DT_UNKNOWN = 0, + DT_FIFO = 1, + DT_CHR = 2, + DT_DIR = 4, + DT_BLK = 6, + DT_REG = 8, + DT_LNK = 10, + DT_SOCK = 12, + DT_WHT = 14 + } + + struct dirent + { + ulong d_fileno; + ushort d_reclen; + ushort d_namlen; + ubyte d_type; + char[512] d_name; + } + + alias void* DIR; + + dirent* __readdir30(DIR*); + alias __readdir30 readdir; +} else version( OpenBSD ) { enum @@ -283,6 +312,13 @@ version( OSX ) pragma(mangle, "rewinddir$INODE64$UNIX2003") void rewinddir(DIR*); } } +else version(NetBSD) +{ + int closedir(DIR*); + DIR* __opendir30(in char*); + alias __opendir30 opendir; + void rewinddir(DIR*); +} else { int closedir(DIR*); @@ -321,6 +357,11 @@ else version( FreeBSD ) { int readdir_r(DIR*, dirent*, dirent**); } +else version(NetBSD) +{ + int __readdir_r30(DIR*, dirent*, dirent**); + alias __readdir_r30 readdir_r; +} else version( OpenBSD ) { int readdir_r(DIR*, dirent*, dirent**); @@ -364,6 +405,11 @@ else version( FreeBSD ) void seekdir(DIR*, c_long); c_long telldir(DIR*); } +else version(NetBSD) +{ + void seekdir(DIR*, c_long); + c_long telldir(DIR*); +} else version( OpenBSD ) { void seekdir(DIR*, c_long); diff --git a/src/core/sys/posix/dlfcn.d b/src/core/sys/posix/dlfcn.d index 0ce8dda1bf..b227d1025d 100644 --- a/src/core/sys/posix/dlfcn.d +++ b/src/core/sys/posix/dlfcn.d @@ -174,6 +174,29 @@ else version( FreeBSD ) void* dli_saddr; } } +else version(NetBSD) +{ + enum RTLD_LAZY = 1; + enum RTLD_NOW = 2; + enum RTLD_GLOBAL = 0x100; + enum RTLD_LOCAL = 0x200; + enum RTLD_NODELETE = 0x01000; /* Do not remove members. */ + enum RTLD_NOLOAD = 0x02000; + + int dlclose(void*); + char* dlerror(); + void* dlopen(in char*, int); + void* dlsym(void*, in char*); + int dladdr(const(void)* addr, Dl_info* info); + + struct Dl_info + { + const(char)* dli_fname; + void* dli_fbase; + const(char)* dli_sname; + void* dli_saddr; + } +} else version( OpenBSD ) { enum RTLD_LAZY = 1; diff --git a/src/core/sys/posix/fcntl.d b/src/core/sys/posix/fcntl.d index 3e12f81e6c..7502b616d2 100644 --- a/src/core/sys/posix/fcntl.d +++ b/src/core/sys/posix/fcntl.d @@ -451,6 +451,59 @@ else version( OpenBSD ) enum AT_SYMLINK_FOLLOW = 0x04; enum AT_REMOVEDIR = 0x08; } +else version(NetBSD) +{ + enum F_DUPFD = 0; + enum F_GETFD = 1; + enum F_SETFD = 2; + enum F_GETFL = 3; + enum F_SETFL = 4; + enum F_GETOWN = 5; + enum F_SETOWN = 6; + enum F_GETLK = 7; + enum F_SETLK = 8; + enum F_SETLKW = 9; + enum F_CLOSEM = 10; + enum F_MAXFD = 11; + enum F_DUPFD_CLOEXEC= 12; + enum F_GETNOSIGPIPE = 13; + enum F_SETNOSIGPIPE = 14; + + enum FD_CLOEXEC = 1; + + enum F_RDLCK = 1; + enum F_UNLCK = 2; + enum F_WRLCK = 3; + + enum O_CREAT = 0x0200; + enum O_EXCL = 0x0800; + enum O_NOCTTY = 0x8000; + enum O_TRUNC = 0x0400; + + enum O_RDONLY = 0x0000; + enum O_WRONLY = 0x0001; + enum O_RDWR = 0x0002; + enum O_ACCMODE = 0x0003; + + enum O_NONBLOCK = 0x0004; + enum O_APPEND = 0x0008; + enum O_SYNC = 0x0080; + //enum O_DSYNC + //enum O_RSYNC + + struct flock + { + off_t l_start; + off_t l_len; + pid_t l_pid; + short l_type; + short l_whence; + } + + + int creat(in char*, mode_t); + int open(in char*, int, ...); +} else version (Solaris) { enum F_DUPFD = 0; diff --git a/src/core/sys/posix/grp.d b/src/core/sys/posix/grp.d index 43c6c030ba..1f6ec9514f 100644 --- a/src/core/sys/posix/grp.d +++ b/src/core/sys/posix/grp.d @@ -77,6 +77,16 @@ else version( FreeBSD ) char** gr_mem; } } +else version(NetBSD) +{ + struct group + { + char* gr_name; + char* gr_passwd; + gid_t gr_gid; + char** gr_mem; + } +} else version( OpenBSD ) { struct group @@ -138,6 +148,11 @@ else version( FreeBSD ) int getgrnam_r(in char*, group*, char*, size_t, group**); int getgrgid_r(gid_t, group*, char*, size_t, group**); } +else version(NetBSD) +{ + int getgrnam_r(in char*, group*, char*, size_t, group**); + int getgrgid_r(gid_t, group*, char*, size_t, group**); +} else version( OpenBSD ) { int getgrnam_r(in char*, group*, char*, size_t, group**); @@ -183,6 +198,12 @@ else version( FreeBSD ) @trusted void endgrent(); @trusted void setgrent(); } +else version(NetBSD) +{ + group* getgrent(); + @trusted void endgrent(); + @trusted void setgrent(); +} else version( OpenBSD ) { group* getgrent(); diff --git a/src/core/sys/posix/net/if_.d b/src/core/sys/posix/net/if_.d index 7fd75f03d2..60e51a844b 100644 --- a/src/core/sys/posix/net/if_.d +++ b/src/core/sys/posix/net/if_.d @@ -91,6 +91,21 @@ else version( FreeBSD ) if_nameindex_t* if_nameindex(); void if_freenameindex(if_nameindex_t*); } +else version(NetBSD) +{ + struct if_nameindex_t + { + uint if_index; + char* if_name; + } + + enum IF_NAMESIZE = 16; + + uint if_nametoindex(in char*); + char* if_indextoname(uint, char*); + if_nameindex_t* if_nameindex(); + void if_freenameindex(if_nameindex_t*); +} else version( CRuntime_Bionic ) { enum IF_NAMESIZE = 16; diff --git a/src/core/sys/posix/netdb.d b/src/core/sys/posix/netdb.d index be88fa4535..60ae944d89 100644 --- a/src/core/sys/posix/netdb.d +++ b/src/core/sys/posix/netdb.d @@ -396,6 +396,113 @@ else version( FreeBSD ) enum EAI_SYSTEM = 11; enum EAI_OVERFLOW = 14; } +else version(NetBSD) +{ + struct hostent + { + char* h_name; + char** h_aliases; + int h_addrtype; + int h_length; + char** h_addr_list; + extern (D) char* h_addr() @property { return h_addr_list[0]; } // non-standard + } + + struct netent + { + char* n_name; + char** n_aliases; + int n_addrtype; + uint32_t n_net; +/+ todo +#if (defined(__sparc__) && defined(_LP64)) || \ + (defined(__sh__) && defined(_LP64) && (_BYTE_ORDER == _BIG_ENDIAN)) + int __n_pad0; /* ABI compatibility */ +#endif + uint32_t n_net; /*%< network # */ +#if defined(__alpha__) || (defined(__i386__) && defined(_LP64)) || \ + (defined(__sh__) && defined(_LP64) && (_BYTE_ORDER == _LITTLE_ENDIAN)) + int __n_pad0; /* ABI compatibility */ +#endif + ++/ + } + + struct protoent + { + char* p_name; + char** p_aliases; + int p_proto; + } + + struct servent + { + char* s_name; + char** s_aliases; + int s_port; + char* s_proto; + } + + enum IPPORT_RESERVED = 1024; + + //h_errno + + enum HOST_NOT_FOUND = 1; + enum NO_DATA = 4; + enum NO_RECOVERY = 3; + enum TRY_AGAIN = 2; + + struct addrinfo + { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; +/+todo +#if defined(__sparc__) && defined(_LP64) + int __ai_pad0; /* ABI compatibility */ +#endif ++/ + socklen_t ai_addrlen; +/+todo +#if defined(__alpha__) || (defined(__i386__) && defined(_LP64)) + int __ai_pad0; /* ABI compatibility */ +#endif ++/ + char* ai_canonname; + sockaddr* ai_addr; + addrinfo* ai_next; + } + + enum AI_PASSIVE = 0x1; + enum AI_CANONNAME = 0x2; + enum AI_NUMERICHOST = 0x4; + enum AI_NUMERICSERV = 0x8; + enum AI_V4MAPPED = 0x800; + enum AI_ALL = 0x100; + enum AI_ADDRCONFIG = 0x400; + + enum NI_NOFQDN = 0x1; + enum NI_NUMERICHOST = 0x2; + enum NI_NAMEREQD = 0x4; + enum NI_NUMERICSERV = 0x8; + enum NI_DGRAM = 0x10; + enum NI_WITHSCOPEID = 0x00000020; + enum NI_NUMERICSCOPE = 0x00000040; + enum NI_MAXHOST = 1025; // non-standard + enum NI_MAXSERV = 32; // non-standard + + enum EAI_AGAIN = 2; + enum EAI_BADFLAGS = 3; + enum EAI_FAIL = 4; + enum EAI_FAMILY = 5; + enum EAI_MEMORY = 6; + enum EAI_NONAME = 8; + enum EAI_SERVICE = 9; + enum EAI_SOCKTYPE = 10; + enum EAI_SYSTEM = 11; + enum EAI_OVERFLOW = 14; +} else version( OpenBSD ) { struct hostent diff --git a/src/core/sys/posix/netinet/in_.d b/src/core/sys/posix/netinet/in_.d index 5ac0bcd92c..061ed48933 100644 --- a/src/core/sys/posix/netinet/in_.d +++ b/src/core/sys/posix/netinet/in_.d @@ -211,6 +211,41 @@ else version( FreeBSD ) //enum INET_ADDRSTRLEN = 16; } +else version(NetBSD) +{ + struct sockaddr_in + { + ubyte sin_len; + sa_family_t sin_family; + in_port_t sin_port; + in_addr sin_addr; + ubyte[8] sin_zero; + } + + enum + { + IPPROTO_IP = 0, + IPPROTO_ICMP = 1, + IPPROTO_IGMP = 2, + IPPROTO_GGP = 3, + IPPROTO_TCP = 6, + IPPROTO_PUP = 12, + IPPROTO_UDP = 17, + IPPROTO_IDP = 22, + IPPROTO_ND = 77, + IPPROTO_MAX = 256 + } + + enum : uint + { + INADDR_ANY = 0x00000000, + INADDR_BROADCAST = 0xffffffff, + INADDR_LOOPBACK = 0x7f000001, + INADDR_NONE = 0xffffffff + } + + //enum INET_ADDRSTRLEN = 16; +} else version( Solaris ) { struct sockaddr_in @@ -722,6 +757,145 @@ else version( FreeBSD ) __IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_GLOBAL; } } +else version(NetBSD) +{ + struct in6_addr + { + union + { + uint8_t[16] s6_addr; + uint16_t[8] s6_addr16; + uint32_t[4] s6_addr32; + } + } + + struct sockaddr_in6 + { + uint8_t sin6_len; + sa_family_t sin6_family; + in_port_t sin6_port; + uint32_t sin6_flowinfo; + in6_addr sin6_addr; + uint32_t sin6_scope_id; + } + + extern __gshared immutable in6_addr in6addr_any; + extern __gshared immutable in6_addr in6addr_loopback; + + struct ipv6_mreq + { + in6_addr ipv6mr_multiaddr; + uint ipv6mr_interface; + } + + enum : uint + { + IPPROTO_IPV6 = 41, + + //INET6_ADDRSTRLEN = 46, + + IPV6_JOIN_GROUP = 12, + IPV6_LEAVE_GROUP = 13, + IPV6_MULTICAST_HOPS = 10, + IPV6_MULTICAST_IF = 9, + IPV6_MULTICAST_LOOP = 11, + IPV6_UNICAST_HOPS = 4, + IPV6_V6ONLY = 27, + } + + private enum + { + __IPV6_ADDR_SCOPE_NODELOCAL = 0x01, + __IPV6_ADDR_SCOPE_INTFACELOCAL = 0x01, + __IPV6_ADDR_SCOPE_LINKLOCAL = 0x02, + __IPV6_ADDR_SCOPE_SITELOCAL = 0x05, + __IPV6_ADDR_SCOPE_ORGLOCAL = 0x08, + __IPV6_ADDR_SCOPE_GLOBAL = 0x0e, + } + + // macros + extern (D) int IN6_IS_ADDR_UNSPECIFIED( in in6_addr* a ) pure + { + return (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[0]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[4]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[8]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[12]) == 0); + } + + extern (D) int IN6_IS_ADDR_LOOPBACK( in in6_addr* a ) pure + { + return (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[0]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[4]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[8]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[12]) == ntohl(1)); + } + + extern (D) int IN6_IS_ADDR_V4COMPAT( in in6_addr* a ) pure + { + return (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[0]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[4]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[8]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[12]) != 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[12]) != ntohl(1)); + } + + extern (D) int IN6_IS_ADDR_V4MAPPED( in in6_addr* a ) pure + { + return (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[0]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[4]) == 0) && + (*cast(const uint32_t*) cast(const void*) (&a.s6_addr[8]) == ntohl(0x0000ffff)); + } + + extern (D) int IN6_IS_ADDR_LINKLOCAL( in in6_addr* a ) pure + { + return a.s6_addr[0] == 0xfe && (a.s6_addr[1] & 0xc0) == 0x80; + } + + extern (D) int IN6_IS_ADDR_SITELOCAL( in in6_addr* a ) pure + { + return a.s6_addr[0] == 0xfe && (a.s6_addr[1] & 0xc0) == 0xc0; + } + + extern (D) int IN6_IS_ADDR_MULTICAST( in in6_addr* a ) pure + { + return a.s6_addr[0] == 0xff; + } + + extern (D) uint8_t __IPV6_ADDR_MC_SCOPE( in in6_addr* a ) pure + { + return a.s6_addr[1] & 0x0f; + } + + extern (D) int IN6_IS_ADDR_MC_NODELOCAL( in in6_addr* a ) pure + { + return IN6_IS_ADDR_MULTICAST(a) && + __IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_NODELOCAL; + } + + extern (D) int IN6_IS_ADDR_MC_LINKLOCAL( in in6_addr* a ) pure + { + return IN6_IS_ADDR_MULTICAST(a) && + __IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_LINKLOCAL; + } + + extern (D) int IN6_IS_ADDR_MC_SITELOCAL( in in6_addr* a ) pure + { + return IN6_IS_ADDR_MULTICAST(a) && + __IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_SITELOCAL; + } + + extern (D) int IN6_IS_ADDR_MC_ORGLOCAL( in in6_addr* a ) pure + { + return IN6_IS_ADDR_MULTICAST(a) && + __IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_ORGLOCAL; + } + + extern (D) int IN6_IS_ADDR_MC_GLOBAL( in in6_addr* a ) pure + { + return IN6_IS_ADDR_MULTICAST(a) && + __IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_GLOBAL; + } +} else version( Solaris ) { struct in6_addr @@ -998,6 +1172,10 @@ else version( FreeBSD ) { enum uint IPPROTO_RAW = 255; } +else version(NetBSD) +{ + enum uint IPPROTO_RAW = 255; +} else version( Solaris ) { enum uint IPPROTO_RAW = 255; diff --git a/src/core/sys/posix/netinet/tcp.d b/src/core/sys/posix/netinet/tcp.d index ad3e00cfc1..40ac9dd369 100644 --- a/src/core/sys/posix/netinet/tcp.d +++ b/src/core/sys/posix/netinet/tcp.d @@ -47,6 +47,10 @@ else version( FreeBSD ) { enum TCP_NODELAY = 1; } +else version(NetBSD) +{ + enum TCP_NODELAY = 1; +} else version( Solaris ) { enum TCP_NODELAY = 1; diff --git a/src/core/sys/posix/poll.d b/src/core/sys/posix/poll.d index dc3ead60ce..4e67b4a37e 100644 --- a/src/core/sys/posix/poll.d +++ b/src/core/sys/posix/poll.d @@ -152,6 +152,40 @@ else version( FreeBSD ) int poll(pollfd*, nfds_t, int); } +else version(NetBSD) +{ + alias uint nfds_t; + + struct pollfd + { + int fd; + short events; + short revents; + }; + + enum + { + POLLIN = 0x0001, + POLLPRI = 0x0002, + POLLOUT = 0x0004, + POLLRDNORM = 0x0040, + POLLWRNORM = POLLOUT, + POLLRDBAND = 0x0080, + POLLWRBAND = 0x0100, + //POLLEXTEND = 0x0200, + //POLLATTRIB = 0x0400, + //POLLNLINK = 0x0800, + //POLLWRITE = 0x1000, + POLLERR = 0x0008, + POLLHUP = 0x0010, + POLLNVAL = 0x0020, + + POLLSTANDARD = (POLLIN|POLLPRI|POLLOUT|POLLRDNORM|POLLRDBAND| + POLLWRBAND|POLLERR|POLLHUP|POLLNVAL) + } + + int poll(pollfd*, nfds_t, int); +} else version( OpenBSD ) { alias uint nfds_t; diff --git a/src/core/sys/posix/pthread.d b/src/core/sys/posix/pthread.d index 60cd76d589..d7b51b3d01 100644 --- a/src/core/sys/posix/pthread.d +++ b/src/core/sys/posix/pthread.d @@ -218,6 +218,42 @@ else version( FreeBSD ) enum PTHREAD_COND_INITIALIZER = null; enum PTHREAD_RWLOCK_INITIALIZER = null; } +else version(NetBSD) +{ + enum PRI_NONE = -1; + enum + { + PTHREAD_INHERIT_SCHED = 0x0, + + PTHREAD_CREATE_DETACHED = 1, + PTHREAD_CREATE_JOINABLE = 0, + PTHREAD_EXPLICIT_SCHED = 1, + } + + enum + { + PTHREAD_PROCESS_PRIVATE = 0, + PTHREAD_PROCESS_SHARED = 1, + } + + enum + { + PTHREAD_CANCEL_ENABLE = 0, + PTHREAD_CANCEL_DISABLE = 1, + PTHREAD_CANCEL_DEFERRED = 0, + PTHREAD_CANCEL_ASYNCHRONOUS = 1, + } + + enum PTHREAD_CANCELED = cast(void*) 1; + + enum PTHREAD_DONE_INIT = 1; + + enum PTHREAD_MUTEX_INITIALIZER = pthread_mutex_t(0x33330003); + + enum PTHREAD_ONCE_INIT = pthread_once_t(PTHREAD_MUTEX_INITIALIZER); + enum PTHREAD_COND_INITIALIZER = pthread_cond_t(0x55550005); + enum PTHREAD_RWLOCK_INITIALIZER = pthread_rwlock_t(0x99990009); +} else version( OpenBSD ) { enum @@ -412,6 +448,33 @@ else version( FreeBSD ) void __pthread_cleanup_push_imp(_pthread_cleanup_routine_nogc, void*, _pthread_cleanup_info*) @nogc; void __pthread_cleanup_pop_imp(int); } +else version(NetBSD) +{ + alias void function(void*) _pthread_cleanup_routine; + + struct _pthread_cleanup_store + { + void*[4] pthread_cleanup_pad; + } + + struct pthread_cleanup + { + _pthread_cleanup_store __cleanup_info__ = void; + + extern (D) void push()( _pthread_cleanup_routine cleanup_routine, void* cleanup_arg ) + { + pthread__cleanup_push( cleanup_routine, cleanup_arg, &__cleanup_info__ ); + } + + extern (D) void pop()( int execute ) + { + pthread__cleanup_pop( execute, &__cleanup_info__ ); + } + } + + void pthread__cleanup_push(_pthread_cleanup_routine, void*, void*); + void pthread__cleanup_pop(int, void *); +} else version ( OpenBSD ) { void pthread_cleanup_push(void function(void*), void*); @@ -561,6 +624,18 @@ else version( FreeBSD ) int pthread_barrierattr_init(pthread_barrierattr_t*); int pthread_barrierattr_setpshared(pthread_barrierattr_t*, int); } +else version(NetBSD) +{ + enum PTHREAD_BARRIER_SERIAL_THREAD = 1234567; + + int pthread_barrier_destroy(pthread_barrier_t*); + int pthread_barrier_init(pthread_barrier_t*, in pthread_barrierattr_t*, uint); + int pthread_barrier_wait(pthread_barrier_t*); + int pthread_barrierattr_destroy(pthread_barrierattr_t*); + int pthread_barrierattr_getpshared(in pthread_barrierattr_t*, int*); + int pthread_barrierattr_init(pthread_barrierattr_t*); + int pthread_barrierattr_setpshared(pthread_barrierattr_t*, int); +} else version( OpenBSD ) { enum PTHREAD_BARRIER_SERIAL_THREAD = -1; @@ -631,6 +706,14 @@ else version( FreeBSD ) int pthread_spin_trylock(pthread_spinlock_t*); int pthread_spin_unlock(pthread_spinlock_t*); } +else version(NetBSD) +{ + int pthread_spin_init(pthread_spinlock_t*, int); + int pthread_spin_destroy(pthread_spinlock_t*); + int pthread_spin_lock(pthread_spinlock_t*); + int pthread_spin_trylock(pthread_spinlock_t*); + int pthread_spin_unlock(pthread_spinlock_t*); +} else version( OpenBSD ) { int pthread_spin_init(pthread_spinlock_t*, int); @@ -722,6 +805,24 @@ else version( FreeBSD ) int pthread_mutexattr_settype(pthread_mutexattr_t*, int) @trusted; int pthread_setconcurrency(int); } +else version(NetBSD) +{ + enum + { + PTHREAD_MUTEX_NORMAL = 0, + PTHREAD_MUTEX_ERRORCHECK = 1, + PTHREAD_MUTEX_RECURSIVE = 2, + PTHREAD_MUTEX_TYPE_MAX + } + enum PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_ERRORCHECK; + + int pthread_attr_getguardsize(in pthread_attr_t*, size_t*); + int pthread_attr_setguardsize(pthread_attr_t*, size_t); + int pthread_getconcurrency(); + int pthread_mutexattr_gettype(pthread_mutexattr_t*, int*); + int pthread_mutexattr_settype(pthread_mutexattr_t*, int) @trusted; + int pthread_setconcurrency(int); +} else version( OpenBSD ) { enum @@ -791,6 +892,9 @@ else version( FreeBSD ) { int pthread_getcpuclockid(pthread_t, clockid_t*); } +else version(NetBSD) +{ +} else version( OpenBSD ) { int pthread_getcpuclockid(pthread_t, clockid_t*); @@ -837,6 +941,12 @@ else version( FreeBSD ) int pthread_rwlock_timedrdlock(pthread_rwlock_t*, in timespec*); int pthread_rwlock_timedwrlock(pthread_rwlock_t*, in timespec*); } +else version(NetBSD) +{ + int pthread_mutex_timedlock(pthread_mutex_t*, in timespec*); + int pthread_rwlock_timedrdlock(pthread_rwlock_t*, in timespec*); + int pthread_rwlock_timedwrlock(pthread_rwlock_t*, in timespec*); +} else version( OpenBSD ) { int pthread_mutex_timedlock(pthread_mutex_t*, in timespec*); @@ -979,6 +1089,24 @@ else version( FreeBSD ) int pthread_setschedparam(pthread_t, int, sched_param*); // int pthread_setschedprio(pthread_t, int); // not implemented } +else version(NetBSD) +{ + enum + { + PTHREAD_SCOPE_PROCESS = 0, + PTHREAD_SCOPE_SYSTEM = 0x1 + } + + int pthread_attr_getinheritsched(in pthread_attr_t*, int*); + int pthread_attr_getschedpolicy(in pthread_attr_t*, int*); + int pthread_attr_getscope(in pthread_attr_t*, int*); + int pthread_attr_setinheritsched(pthread_attr_t*, int); + int pthread_attr_setschedpolicy(pthread_attr_t*, int); + int pthread_attr_setscope(in pthread_attr_t*, int); + int pthread_getschedparam(pthread_t, int*, sched_param*); + int pthread_setschedparam(pthread_t, int, sched_param*); + //int pthread_setschedprio(pthread_t, int); +} else version( OpenBSD ) { enum @@ -1074,6 +1202,15 @@ else version( FreeBSD ) int pthread_attr_setstackaddr(pthread_attr_t*, void*); int pthread_attr_setstacksize(pthread_attr_t*, size_t); } +else version(NetBSD) +{ + int pthread_attr_getstack(in pthread_attr_t*, void**, size_t*); + int pthread_attr_getstackaddr(in pthread_attr_t*, void**); + int pthread_attr_getstacksize(in pthread_attr_t*, size_t*); + int pthread_attr_setstack(pthread_attr_t*, void*, size_t); + int pthread_attr_setstackaddr(pthread_attr_t*, void*); + int pthread_attr_setstacksize(pthread_attr_t*, size_t); +} else version( OpenBSD ) { int pthread_attr_getstack(in pthread_attr_t*, void**, size_t*); @@ -1136,6 +1273,15 @@ else version( FreeBSD ) int pthread_rwlockattr_getpshared(in pthread_rwlockattr_t*, int*); int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int); } +else version(NetBSD) +{ + int pthread_condattr_getpshared(in pthread_condattr_t*, int*); + int pthread_condattr_setpshared(pthread_condattr_t*, int); + int pthread_mutexattr_getpshared(in pthread_mutexattr_t*, int*); + int pthread_mutexattr_setpshared(pthread_mutexattr_t*, int); + int pthread_rwlockattr_getpshared(in pthread_rwlockattr_t*, int*); + int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int); +} else version( OpenBSD ) { } diff --git a/src/core/sys/posix/pwd.d b/src/core/sys/posix/pwd.d index ddd35f9952..34590c7fe5 100644 --- a/src/core/sys/posix/pwd.d +++ b/src/core/sys/posix/pwd.d @@ -94,6 +94,22 @@ else version( FreeBSD ) int pw_fields; /* internal: fields filled in */ } } +else version(NetBSD) +{ + struct passwd + { + char* pw_name; /* user name */ + char* pw_passwd; /* encrypted password */ + uid_t pw_uid; /* user uid */ + gid_t pw_gid; /* user gid */ + time_t pw_change; /* password change time */ + char* pw_class; /* user access class */ + char* pw_gecos; /* Honeywell login info */ + char* pw_dir; /* home directory */ + char* pw_shell; /* default shell */ + time_t pw_expire; /* account expiration */ + } +} else version( OpenBSD ) { struct passwd @@ -168,6 +184,13 @@ else version( FreeBSD ) int getpwnam_r(in char*, passwd*, char*, size_t, passwd**); int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); } +else version(NetBSD) +{ + int __getpwnam_r50(in char*, passwd*, char*, size_t, passwd**); + alias __getpwnam_r50 getpwnam_r; + int __getpwuid_r50(uid_t, passwd*, char*, size_t, passwd**); + alias __getpwuid_r50 getpwuid_r; +} else version( OpenBSD ) { int getpwnam_r(in char*, passwd*, char*, size_t, passwd**); @@ -213,6 +236,12 @@ else version ( FreeBSD ) passwd* getpwent(); void setpwent(); } +else version (NetBSD) +{ + void endpwent(); + passwd* getpwent(); + void setpwent(); +} else version ( OpenBSD ) { void endpwent(); diff --git a/src/core/sys/posix/sched.d b/src/core/sys/posix/sched.d index 637545cf16..3f93b989bb 100644 --- a/src/core/sys/posix/sched.d +++ b/src/core/sys/posix/sched.d @@ -95,6 +95,17 @@ else version( FreeBSD ) enum SCHED_OTHER = 2; enum SCHED_RR = 3; } +else version(NetBSD) +{ + struct sched_param + { + int sched_priority; + } + + enum SCHED_FIFO = 1; + enum SCHED_OTHER = 0; + enum SCHED_RR = 2; +} else version( OpenBSD ) { struct sched_param @@ -164,6 +175,10 @@ else version( FreeBSD ) { int sched_yield(); } +else version(NetBSD) +{ + int sched_yield(); +} else version( OpenBSD ) { int sched_yield(); @@ -208,6 +223,12 @@ else version( FreeBSD ) int sched_get_priority_max(int); int sched_rr_get_interval(pid_t, timespec*); } +else version(NetBSD) +{ + int sched_get_priority_min(int); + int sched_get_priority_max(int); + int sched_rr_get_interval(pid_t, timespec*); +} else version( OpenBSD ) { int sched_get_priority_min(int); diff --git a/src/core/sys/posix/semaphore.d b/src/core/sys/posix/semaphore.d index ba29482285..32027eefb9 100644 --- a/src/core/sys/posix/semaphore.d +++ b/src/core/sys/posix/semaphore.d @@ -90,6 +90,12 @@ else version( FreeBSD ) enum SEM_FAILED = cast(sem_t*) null; } +else version(NetBSD) +{ + alias size_t sem_t; + + enum SEM_FAILED = cast(sem_t*) null; +} else version( OpenBSD ) { struct __sem { } @@ -153,6 +159,10 @@ else version( FreeBSD ) { int sem_timedwait(sem_t*, in timespec*); } +else version(NetBSD) +{ + int sem_timedwait(sem_t*, in timespec*); +} else version( OpenBSD ) { int sem_timedwait(sem_t*, in timespec*); diff --git a/src/core/sys/posix/setjmp.d b/src/core/sys/posix/setjmp.d index 8a1d4cc59f..3c8a78ee25 100644 --- a/src/core/sys/posix/setjmp.d +++ b/src/core/sys/posix/setjmp.d @@ -170,6 +170,26 @@ else version( FreeBSD ) int setjmp(ref jmp_buf); void longjmp(ref jmp_buf, int); } +else version(NetBSD) +{ + // + version( X86 ) + { + enum _JBLEN = 13; + struct _jmp_buf { int[_JBLEN + 1] _jb; } + } + else version( X86_64) + { + enum _JBLEN = 11; + struct _jmp_buf { c_long[_JBLEN] _jb; } + } + else + static assert(0); + alias _jmp_buf[_JBLEN] jmp_buf; + + int setjmp(ref jmp_buf); + void longjmp(ref jmp_buf, int); +} else version( OpenBSD ) { // @@ -277,6 +297,24 @@ else version( FreeBSD ) int sigsetjmp(ref sigjmp_buf); void siglongjmp(ref sigjmp_buf, int); } +else version(NetBSD) +{ + // + version( X86 ) + { + struct _sigjmp_buf { int[_JBLEN + 1] _ssjb; } + } + else version( X86_64) + { + struct _sigjmp_buf { c_long[_JBLEN] _sjb; } + } + else + static assert(0); + alias _sigjmp_buf[_JBLEN + 1] sigjmp_buf; + + int sigsetjmp(ref sigjmp_buf); + void siglongjmp(ref sigjmp_buf, int); +} else version( OpenBSD ) { alias sigjmp_buf = c_long[_JBLEN + 1]; @@ -310,6 +348,11 @@ else version( FreeBSD ) int _setjmp(ref jmp_buf); void _longjmp(ref jmp_buf, int); } +else version(NetBSD) +{ + int _setjmp(ref jmp_buf); + void _longjmp(ref jmp_buf, int); +} else version( OpenBSD ) { int _setjmp(ref jmp_buf); diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index dcdac9ab10..b14848a8ec 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -164,6 +164,11 @@ else version (FreeBSD) { enum SIGRTMAX = 126; } // Note: it appears that FreeBSD (prior to 7) and OSX do not support realtime signals +else version(NetBSD) +{ + enum SIGRTMIN = 33; + enum SIGRTMAX = 63; +} version( linux ) { @@ -434,6 +439,30 @@ else version( FreeBSD ) enum SIGUSR2 = 31; enum SIGURG = 16; } +else version(NetBSD) +{ + //SIGABRT (defined in core.stdc.signal) + enum SIGALRM = 14; + enum SIGBUS = 10; + enum SIGCHLD = 20; + enum SIGCONT = 19; + //SIGFPE (defined in core.stdc.signal) + enum SIGHUP = 1; + //SIGILL (defined in core.stdc.signal) + //SIGINT (defined in core.stdc.signal) + enum SIGKILL = 9; + enum SIGPIPE = 13; + enum SIGQUIT = 3; + //SIGSEGV (defined in core.stdc.signal) + enum SIGSTOP = 17; + //SIGTERM (defined in core.stdc.signal) + enum SIGTSTP = 18; + enum SIGTTIN = 21; + enum SIGTTOU = 22; + enum SIGUSR1 = 30; + enum SIGUSR2 = 31; + enum SIGURG = 16; +} else version( OpenBSD ) { //SIGABRT (defined in core.stdc.signal) @@ -516,7 +545,20 @@ else version( FreeBSD ) sigset_t sa_mask; } } -else version( OpenBSD ) +else version(NetBSD) +{ + struct sigaction_t + { + union + { + sigfn_t sa_handler; + sigactfn_t sa_sigaction; + } + sigset_t sa_mask; + int sa_flags; + } +} +else version(OpenBSD) { struct sigaction_t { @@ -933,6 +975,100 @@ else version( FreeBSD ) int sigsuspend(in sigset_t *); int sigwait(in sigset_t*, int*); } +else version(NetBSD) +{ + enum SIG_HOLD = cast(sigfn_t2) 3; + + struct sigset_t + { + uint[4] __bits; + } + + enum SA_NOCLDSTOP = 8; + + enum SIG_BLOCK = 1; + enum SIG_UNBLOCK = 2; + enum SIG_SETMASK = 3; + + union sigval_t { + int sival_int; + void *sival_ptr; + }; + struct _rt{ + pid_t _pid; + uid_t _uid; + sigval_t _value; + }; + struct _child{ + pid_t _pid; + uid_t _uid; + int _status; + clock_t _utime; + clock_t _stime; + }; + struct _fault{ + void *_addr; + int _trap; + int _trap2; + int _trap3; + }; + struct _poll{ + long _band; + int _fd; + }; + union _reason{ + _rt rt; + _child child; + _fault fault; + _poll poll; + }; + struct _ksiginfo { + int _signo; + int _code; + int _errno; +/+#ifdef _LP64 + /* In _LP64 the union starts on an 8-byte boundary. */ + int _pad; +#endif+/ + _reason reason; + }; + + + union siginfo_t + { + ubyte[128] si_pad;/* Total size; for future expansion */ + _ksiginfo _info; + @property ref c_long si_band() return { return _info.reason.poll._band; } + } + + enum SI_USER = 0; + enum SI_QUEUE = -1; + enum SI_TIMER = -2; + enum SI_ASYNCIO = -3; + enum SI_MESGQ = -4; + + int kill(pid_t, int); + int __sigaction14(int, in sigaction_t*, sigaction_t*); + int __sigaddset14(sigset_t*, int); + int __sigdelset14(sigset_t*, int); + int __sigemptyset14(sigset_t *); + int __sigfillset14(sigset_t *); + int __sigismember14(in sigset_t *, int); + int __sigpending14(sigset_t *); + int __sigprocmask14(int, in sigset_t*, sigset_t*); + int __sigsuspend14(in sigset_t *); + int sigwait(in sigset_t*, int*); + + alias __sigaction14 sigaction; + alias __sigaddset14 sigaddset; + alias __sigdelset14 sigdelset; + alias __sigemptyset14 sigemptyset; + alias __sigfillset14 sigfillset; + alias __sigismember14 sigismember; + alias __sigpending14 sigpending; + alias __sigprocmask14 sigprocmask; + alias __sigsuspend14 sigsuspend; +} else version( OpenBSD ) { enum SIG_CATCH = cast(sigfn_t2) 2; @@ -1780,6 +1916,130 @@ else version( FreeBSD ) int sigpause(int); int sigrelse(int); } +else version(NetBSD) +{ + // No SIGPOLL on *BSD + enum SIGPROF = 27; + enum SIGSYS = 12; + enum SIGTRAP = 5; + enum SIGVTALRM = 26; + enum SIGXCPU = 24; + enum SIGXFSZ = 25; + + enum + { + SA_ONSTACK = 0x0001, + SA_RESTART = 0x0002, + SA_RESETHAND = 0x0004, + SA_NODEFER = 0x0010, + SA_NOCLDWAIT = 0x0020, + SA_SIGINFO = 0x0040, + } + + enum + { + SS_ONSTACK = 0x0001, + SS_DISABLE = 0x0004, + } + + enum MINSIGSTKSZ = 8192; + enum SIGSTKSZ = (MINSIGSTKSZ + 32768); +; + //ucontext_t (defined in core.sys.posix.ucontext) + //mcontext_t (defined in core.sys.posix.ucontext) + + struct stack_t + { + void* ss_sp; + size_t ss_size; + int ss_flags; + } + + struct sigstack + { + void* ss_sp; + int ss_onstack; + } + + enum + { + ILL_ILLOPC = 1, + ILL_ILLOPN, + ILL_ILLADR, + ILL_ILLTRP, + ILL_PRVOPC, + ILL_PRVREG, + ILL_COPROC, + ILL_BADSTK, + } + + enum + { + BUS_ADRALN = 1, + BUS_ADRERR, + BUS_OBJERR, + } + + enum + { + SEGV_MAPERR = 1, + SEGV_ACCERR, + } + + enum + { + FPE_INTOVF = 1, + FPE_INTDIV, + FPE_FLTDIV, + FPE_FLTOVF, + FPE_FLTUND, + FPE_FLTRES, + FPE_FLTINV, + FPE_FLTSUB, + } + + enum + { + TRAP_BRKPT = 1, + TRAP_TRACE, + } + + enum + { + CLD_EXITED = 1, + CLD_KILLED, + CLD_DUMPED, + CLD_TRAPPED, + CLD_STOPPED, + CLD_CONTINUED, + } + + enum + { + POLL_IN = 1, + POLL_OUT, + POLL_MSG, + POLL_ERR, + POLL_PRI, + POLL_HUP, + } + + //sigfn_t bsd_signal(int sig, sigfn_t func); + sigfn_t sigset(int sig, sigfn_t func); + + nothrow: + @nogc: + //sigfn_t2 bsd_signal(int sig, sigfn_t2 func); + sigfn_t2 sigset(int sig, sigfn_t2 func); + + int killpg(pid_t, int); + int sigaltstack(in stack_t*, stack_t*); + int sighold(int); + int sigignore(int); + int siginterrupt(int, int); + int sigpause(int); + int sigrelse(int); +} else version (OpenBSD) { // No SIGPOLL on *BSD @@ -2199,6 +2459,14 @@ else version( FreeBSD ) c_long tv_nsec; } } +else version(NetBSD) +{ + struct timespec + { + time_t tv_sec; + c_long tv_nsec; + } +} else version( OpenBSD ) { struct timespec @@ -2302,6 +2570,21 @@ else version( FreeBSD ) int sigtimedwait(in sigset_t*, siginfo_t*, in timespec*); int sigwaitinfo(in sigset_t*, siginfo_t*); } +else version(NetBSD) +{ + struct sigevent + { + int sigev_notify; + int sigev_signo; + sigval sigev_value; + void function(sigval) sigev_notify_function; + void /* pthread_attr_t */*sigev_notify_attributes; + } + + int sigqueue(pid_t, int, in sigval); + int sigtimedwait(in sigset_t*, siginfo_t*, in timespec*); + int sigwaitinfo(in sigset_t*, siginfo_t*); +} else version (OpenBSD) { } @@ -2378,6 +2661,11 @@ else version( FreeBSD ) int pthread_kill(pthread_t, int); int pthread_sigmask(int, in sigset_t*, sigset_t*); } +else version(NetBSD) +{ + int pthread_kill(pthread_t, int); + int pthread_sigmask(int, in sigset_t*, sigset_t*); +} else version( OpenBSD ) { int pthread_kill(pthread_t, int); diff --git a/src/core/sys/posix/stdio.d b/src/core/sys/posix/stdio.d index c085c862ce..2650af5f9d 100644 --- a/src/core/sys/posix/stdio.d +++ b/src/core/sys/posix/stdio.d @@ -291,6 +291,10 @@ version( FreeBSD ) { enum P_tmpdir = "/var/tmp/"; } +version(NetBSD) +{ + enum P_tmpdir = "/var/tmp/"; +} version( OpenBSD ) { enum P_tmpdir = "/tmp/"; diff --git a/src/core/sys/posix/stdlib.d b/src/core/sys/posix/stdlib.d index 4afd346d46..e4777def65 100644 --- a/src/core/sys/posix/stdlib.d +++ b/src/core/sys/posix/stdlib.d @@ -100,6 +100,10 @@ else version( FreeBSD ) { int posix_memalign(void**, size_t, size_t); } +else version(NetBSD) +{ + int posix_memalign(void**, size_t, size_t); +} else version( OpenBSD ) { int posix_memalign(void**, size_t, size_t); @@ -138,6 +142,13 @@ else version( FreeBSD ) void* valloc(size_t); // LEGACY non-standard } +else version(NetBSD) +{ + int setenv(in char*, in char*, int); + int __unsetenv13(in char*); + alias __unsetenv13 unsetenv; + void* valloc(size_t); // LEGACY non-standard +} else version( OpenBSD ) { int setenv(in char*, in char*, int); @@ -179,6 +190,10 @@ else version( FreeBSD ) { int rand_r(uint*); } +else version(NetBSD) +{ + int rand_r(uint*); +} else version( OpenBSD ) { int rand_r(uint*); @@ -366,6 +381,47 @@ else version( FreeBSD ) void srandom(uint); int unlockpt(int); } +else version(NetBSD) +{ + //WNOHANG (defined in core.sys.posix.sys.wait) + //WUNTRACED (defined in core.sys.posix.sys.wait) + //WEXITSTATUS (defined in core.sys.posix.sys.wait) + //WIFEXITED (defined in core.sys.posix.sys.wait) + //WIFSIGNALED (defined in core.sys.posix.sys.wait) + //WIFSTOPPED (defined in core.sys.posix.sys.wait) + //WSTOPSIG (defined in core.sys.posix.sys.wait) + //WTERMSIG (defined in core.sys.posix.sys.wait) + + c_long a64l(in char*); + double drand48(); + //char* ecvt(double, int, int *, int *); // LEGACY + double erand48(ref ushort[3]); + //char* fcvt(double, int, int *, int *); // LEGACY + //char* gcvt(double, int, char*); // LEGACY + int getsubopt(char**, in char**, char**); + int grantpt(int); + char* initstate(uint, char*, size_t); + c_long jrand48(ref ushort[3]); + char* l64a(c_long); + void lcong48(ref ushort[7]); + c_long lrand48(); + char* mktemp(char*); // LEGACY + int mkstemp(char*); + char* mkdtemp(char*); // Defined in IEEE 1003.1, 2008 Edition + c_long mrand48(); + c_long nrand48(ref ushort[3]); + int posix_openpt(int); + char* ptsname(int); + int putenv(char*); + c_long random(); + char* realpath(in char*, char*); + ushort *seed48(ref ushort[3]); + void setkey(in char*); + char* setstate(in char*); + void srand48(c_long); + void srandom(uint); + int unlockpt(int); +} else version( OpenBSD ) { //WNOHANG (defined in core.sys.posix.sys.wait) diff --git a/src/core/sys/posix/sys/ioctl.d b/src/core/sys/posix/sys/ioctl.d index abeffe3f22..8c2e778d82 100644 --- a/src/core/sys/posix/sys/ioctl.d +++ b/src/core/sys/posix/sys/ioctl.d @@ -367,6 +367,18 @@ else version (FreeBSD) int ioctl(int, c_ulong, ...); } +else version (NetBSD) +{ + struct winsize + { + ushort ws_row; + ushort ws_col; + ushort ws_xpixel; + ushort ws_ypixel; + } + + int ioctl(int, c_ulong, ...); +} else version (Solaris) { int ioctl(int fildes, int request, ...); diff --git a/src/core/sys/posix/sys/ipc.d b/src/core/sys/posix/sys/ipc.d index 32ccffd46b..5c9c2526b6 100644 --- a/src/core/sys/posix/sys/ipc.d +++ b/src/core/sys/posix/sys/ipc.d @@ -124,6 +124,31 @@ else version( FreeBSD ) key_t ftok(in char*, int); } +else version(NetBSD) +{ + struct ipc_perm + { + uid_t cuid; + gid_t cgid; + uid_t uid; + gid_t gid; + mode_t mode; + ushort seq; + key_t key; + } + + enum IPC_CREAT = 0x0100; // 01000 + enum IPC_EXCL = 0x0200; // 02000 + enum IPC_NOWAIT = 0x0400; // 04000 + + enum key_t IPC_PRIVATE = 0; + + enum IPC_RMID = 0; + enum IPC_SET = 1; + enum IPC_STAT = 2; + + key_t ftok(in char*, int); +} else version( CRuntime_Bionic ) { // All except ftok are from the linux kernel headers. diff --git a/src/core/sys/posix/sys/mman.d b/src/core/sys/posix/sys/mman.d index 134e8c2699..104c29da2e 100644 --- a/src/core/sys/posix/sys/mman.d +++ b/src/core/sys/posix/sys/mman.d @@ -85,6 +85,15 @@ else version( FreeBSD ) enum POSIX_MADV_DONTNEED = 4; int posix_madvise(void *addr, size_t len, int advice); } +else version(NetBSD) +{ + enum POSIX_MADV_NORMAL = 0; + enum POSIX_MADV_RANDOM = 1; + enum POSIX_MADV_SEQUENTIAL = 2; + enum POSIX_MADV_WILLNEED = 3; + enum POSIX_MADV_DONTNEED = 4; + int posix_madvise(void *addr, size_t len, int advice); +} else version (Solaris) { } @@ -127,6 +136,13 @@ else version( FreeBSD ) enum PROT_WRITE = 0x02; enum PROT_EXEC = 0x04; } +else version(NetBSD) +{ + enum PROT_NONE = 0x00; + enum PROT_READ = 0x01; + enum PROT_WRITE = 0x02; + enum PROT_EXEC = 0x04; +} else version (Solaris) { enum PROT_NONE = 0x00; @@ -173,6 +189,11 @@ else version( FreeBSD ) void* mmap(void*, size_t, int, int, int, off_t); int munmap(void*, size_t); } +else version(NetBSD) +{ + void* mmap(void*, size_t, int, int, int, off_t); + int munmap(void*, size_t); +} else version (Solaris) { void* mmap(void*, size_t, int, int, int, off_t); @@ -327,6 +348,22 @@ else version( FreeBSD ) int msync(void*, size_t, int); } +else version(NetBSD) +{ + enum MAP_SHARED = 0x0001; + enum MAP_PRIVATE = 0x0002; + enum MAP_FIXED = 0x0010; + enum MAP_ANON = 0x1000; + + enum MAP_FAILED = cast(void*)-1; + + enum MS_SYNC = 0x0004; + enum MS_ASYNC = 0x0001; + enum MS_INVALIDATE = 0x0002; + + int __msync13(void*, size_t, int); + alias msync = __msync13; +} else version (Solaris) { enum MAP_SHARED = 0x0001; @@ -438,6 +475,14 @@ else version( FreeBSD ) int mlockall(int); int munlockall(); } +else version(NetBSD) +{ + enum MCL_CURRENT = 0x0001; + enum MCL_FUTURE = 0x0002; + + int mlockall(int); + int munlockall(); +} else version (Solaris) { enum MCL_CURRENT = 0x0001; @@ -482,6 +527,11 @@ else version( FreeBSD ) int mlock(in void*, size_t); int munlock(in void*, size_t); } +else version(NetBSD) +{ + int mlock(in void*, size_t); + int munlock(in void*, size_t); +} else version (Solaris) { int mlock(in void*, size_t); @@ -516,6 +566,10 @@ else version( FreeBSD ) { int mprotect(void*, size_t, int); } +else version(NetBSD) +{ + int mprotect(void*, size_t, int); +} else version (Solaris) { int mprotect(void*, size_t, int); @@ -552,6 +606,11 @@ else version( FreeBSD ) int shm_open(in char*, int, mode_t); int shm_unlink(in char*); } +else version(NetBSD) +{ + int shm_open(in char*, int, mode_t); + int shm_unlink(in char*); +} else version (Solaris) { int shm_open(in char*, int, mode_t); diff --git a/src/core/sys/posix/sys/resource.d b/src/core/sys/posix/sys/resource.d index f7d61d9fd0..2823aa5069 100644 --- a/src/core/sys/posix/sys/resource.d +++ b/src/core/sys/posix/sys/resource.d @@ -243,6 +243,64 @@ else version (FreeBSD) RLIMIT_AS = 10, } } +else version (NetBSD) +{ + enum + { + PRIO_PROCESS = 0, + PRIO_PGRP = 1, + PRIO_USER = 2, + } + + alias long rlim_t; + + enum + { + RLIM_INFINITY = (cast(rlim_t)((cast(ulong) 1 << 63) - 1)), + // FreeBSD explicitly does not define the following: + //RLIM_SAVED_MAX, + //RLIM_SAVED_CUR, + } + + enum + { + RUSAGE_SELF = 0, + RUSAGE_CHILDREN = -1, + } + + struct rusage + { + timeval ru_utime; + timeval ru_stime; + c_long ru_maxrss; + alias ru_ixrss ru_first; + c_long ru_ixrss; + c_long ru_idrss; + c_long ru_isrss; + c_long ru_minflt; + c_long ru_majflt; + c_long ru_nswap; + c_long ru_inblock; + c_long ru_oublock; + c_long ru_msgsnd; + c_long ru_msgrcv; + c_long ru_nsignals; + c_long ru_nvcsw; + c_long ru_nivcsw; + alias ru_nivcsw ru_last; + } + + enum + { + RLIMIT_CORE = 4, + RLIMIT_CPU = 0, + RLIMIT_DATA = 2, + RLIMIT_FSIZE = 1, + RLIMIT_NOFILE = 8, + RLIMIT_STACK = 3, + RLIMIT_AS = 10, + } +} else version (Solaris) { enum @@ -415,6 +473,12 @@ else version (FreeBSD) int getrusage(int, rusage*); int setrlimit(int, in rlimit*); } +else version (NetBSD) +{ + int getrlimit(int, rlimit*); + int getrusage(int, rusage*); + int setrlimit(int, in rlimit*); +} else version (Solaris) { int getrlimit(int, rlimit*); diff --git a/src/core/sys/posix/sys/select.d b/src/core/sys/posix/sys/select.d index 3bdd21078f..c63ddf3a6d 100644 --- a/src/core/sys/posix/sys/select.d +++ b/src/core/sys/posix/sys/select.d @@ -221,6 +221,55 @@ else version( FreeBSD ) int pselect(int, fd_set*, fd_set*, fd_set*, in timespec*, in sigset_t*); int select(int, fd_set*, fd_set*, fd_set*, timeval*); } +else version(NetBSD) +{ + private + { + alias c_ulong __fd_mask; + enum _NFDBITS = __fd_mask.sizeof * 8; + } + + enum uint FD_SETSIZE = 256; + + struct fd_set + { + __fd_mask[(FD_SETSIZE + (_NFDBITS - 1)) / _NFDBITS] __fds_bits; + } + + extern (D) __fd_mask __fdset_mask(uint n) + { + return cast(__fd_mask) 1 << (n % _NFDBITS); + } + + extern (D) void FD_CLR( int n, fd_set* p ) + { + p.__fds_bits[n / _NFDBITS] &= ~__fdset_mask(n); + } + + extern (D) bool FD_ISSET( int n, const(fd_set)* p ) + { + return (p.__fds_bits[n / _NFDBITS] & __fdset_mask(n)) != 0; + } + + extern (D) void FD_SET( int n, fd_set* p ) + { + p.__fds_bits[n / _NFDBITS] |= __fdset_mask(n); + } + + extern (D) void FD_ZERO( fd_set* p ) + { + fd_set *_p; + size_t _n; + + _p = p; + _n = (FD_SETSIZE + (_NFDBITS - 1)) / _NFDBITS; + while (_n > 0) + _p.__fds_bits[--_n] = 0; + } + + int pselect(int, fd_set*, fd_set*, fd_set*, in timespec*, in sigset_t*); + int select(int, fd_set*, fd_set*, fd_set*, timeval*); +} else version (Solaris) { private diff --git a/src/core/sys/posix/sys/shm.d b/src/core/sys/posix/sys/shm.d index 7e0f1f4248..3f20acb68c 100644 --- a/src/core/sys/posix/sys/shm.d +++ b/src/core/sys/posix/sys/shm.d @@ -130,6 +130,32 @@ else version( FreeBSD ) int shmdt(in void*); int shmget(key_t, size_t, int); } +else version(NetBSD) +{ + enum SHM_RDONLY = 0x01000; // 010000 + enum SHM_RND = 0x02000; // 020000 + enum SHMLBA = 1 << 12; // PAGE_SIZE = (1< + { + enum _ALIGNBYTES = /+c_int+/ int.sizeof - 1; + extern (D) size_t _ALIGN( size_t p ) { return (p + _ALIGNBYTES) & ~_ALIGNBYTES; } + } + + extern (D) ubyte* CMSG_DATA( cmsghdr* cmsg ) + { + return cast(ubyte*) cmsg + _ALIGN( cmsghdr.sizeof ); + } + + extern (D) cmsghdr* CMSG_NXTHDR( msghdr* mhdr, cmsghdr* cmsg ) + { + if( cmsg == null ) + { + return CMSG_FIRSTHDR( mhdr ); + } + else + { + if( cast(ubyte*) cmsg + _ALIGN( cmsg.cmsg_len ) + _ALIGN( cmsghdr.sizeof ) > + cast(ubyte*) mhdr.msg_control + mhdr.msg_controllen ) + return null; + else + return cast(cmsghdr*) (cast(ubyte*) cmsg + _ALIGN( cmsg.cmsg_len )); + } + } + + extern (D) cmsghdr* CMSG_FIRSTHDR( msghdr* mhdr ) + { + return mhdr.msg_controllen >= cmsghdr.sizeof ? cast(cmsghdr*) mhdr.msg_control : null; + } + + struct linger + { + int l_onoff; + int l_linger; + } + + enum + { + SOCK_DGRAM = 2, + SOCK_RDM = 4, + SOCK_SEQPACKET = 5, + SOCK_STREAM = 1 + } + + enum : uint + { + SOL_SOCKET = 0xffff + } + + enum : uint + { + SO_DEBUG = 0x0001, /* turn on debugging info recording */ + SO_ACCEPTCONN = 0x0002, /* socket has had listen() */ + SO_REUSEADDR = 0x0004, /* allow local address reuse */ + SO_KEEPALIVE = 0x0008, /* keep connections alive */ + SO_DONTROUTE = 0x0010, /* just use interface addresses */ + SO_BROADCAST = 0x0020, /* permit sending of broadcast msgs */ + SO_USELOOPBACK = 0x0040, /* bypass hardware when possible */ + SO_LINGER = 0x0080, /* linger on close if data present */ + SO_OOBINLINE = 0x0100, /* leave received OOB data in line */ + SO_REUSEPORT = 0x0200, /* allow local address & port reuse */ + /* SO_OTIMESTAMP 0x0400 */ + SO_NOSIGPIPE = 0x0800, /* no SIGPIPE from EPIPE */ + SO_ACCEPTFILTER = 0x1000, /* there is an accept filter */ + SO_TIMESTAMP = 0x2000, /* timestamp received dgram traffic */ + + /* + * Additional options, not kept in so_options. + */ + SO_SNDBUF = 0x1001, /* send buffer size */ + SO_RCVBUF = 0x1002, /* receive buffer size */ + SO_SNDLOWAT = 0x1003, /* send low-water mark */ + SO_RCVLOWAT = 0x1004, /* receive low-water mark */ + /* SO_OSNDTIMEO 0x1005 */ + /* SO_ORCVTIMEO 0x1006 */ + SO_ERROR = 0x1007, /* get error status and clear */ + SO_TYPE = 0x1008, /* get socket type */ + SO_OVERFLOWED = 0x1009, /* datagrams: return packets dropped */ + + SO_NOHEADER = 0x100a, /* user supplies no header to kernel; + * kernel removes header and supplies + * payload + */ + SO_SNDTIMEO = 0x100b, /* send timeout */ + SO_RCVTIMEO = 0x100c /* receive timeout */ + + } + + enum + { + SOMAXCONN = 128 + } + + enum : uint + { + MSG_OOB = 0x0001, /* process out-of-band data */ + MSG_PEEK = 0x0002, /* peek at incoming message */ + MSG_DONTROUTE = 0x0004, /* send without using routing tables */ + MSG_EOR = 0x0008, /* data completes record */ + MSG_TRUNC = 0x0010, /* data discarded before delivery */ + MSG_CTRUNC = 0x0020, /* control data lost before delivery */ + MSG_WAITALL = 0x0040, /* wait for full request or error */ + MSG_DONTWAIT = 0x0080, /* this message should be nonblocking */ + MSG_BCAST = 0x0100, /* this message was rcvd using link-level brdcst */ + MSG_MCAST = 0x0200, /* this message was rcvd using link-level mcast */ + MSG_NOSIGNAL = 0x0400 /* do not generate SIGPIPE on EOF */ + } + + enum + { + AF_APPLETALK = 16, + AF_INET = 2, + AF_IPX = 23, + AF_UNIX = 1, + AF_UNSPEC = 0 + } + + enum + { + SHUT_RD = 0, + SHUT_WR = 1, + SHUT_RDWR = 2 + } + + int accept(int, sockaddr*, socklen_t*); + int bind(int, in sockaddr*, socklen_t); + int connect(int, in sockaddr*, socklen_t); + int getpeername(int, sockaddr*, socklen_t*); + int getsockname(int, sockaddr*, socklen_t*); + int getsockopt(int, int, int, void*, socklen_t*); + int listen(int, int); + ssize_t recv(int, void*, size_t, int); + ssize_t recvfrom(int, void*, size_t, int, sockaddr*, socklen_t*); + ssize_t recvmsg(int, msghdr*, int); + ssize_t send(int, in void*, size_t, int); + ssize_t sendmsg(int, in msghdr*, int); + ssize_t sendto(int, in void*, size_t, int, in sockaddr*, socklen_t); + int setsockopt(int, int, int, in void*, socklen_t); + int shutdown(int, int); + int socket(int, int, int); + int sockatmark(int); + int socketpair(int, int, int, ref int[2]); +} else version (Solaris) { alias uint socklen_t; @@ -1320,6 +1517,13 @@ else version( FreeBSD ) AF_INET6 = 28 } } +else version(NetBSD) +{ + enum + { + AF_INET6 = 24 + } +} else version (Solaris) { enum @@ -1367,6 +1571,13 @@ else version( FreeBSD ) SOCK_RAW = 3 } } +else version(NetBSD) +{ + enum + { + SOCK_RAW = 3 + } +} else version (Solaris) { enum diff --git a/src/core/sys/posix/sys/stat.d b/src/core/sys/posix/sys/stat.d index 2fa4f86fb3..669b7c7a5b 100644 --- a/src/core/sys/posix/sys/stat.d +++ b/src/core/sys/posix/sys/stat.d @@ -803,6 +803,68 @@ else version( FreeBSD ) int futimens(int fd, ref const(timespec)[2] times); } } +else version(NetBSD) +{ + struct stat_t + { + dev_t st_dev; /* inode's device */ + mode_t st_mode; /* inode protection mode */ + ino_t st_ino; /* inode's number */ + nlink_t st_nlink; /* number of hard links */ + uid_t st_uid; /* user ID of the file's owner */ + gid_t st_gid; /* group ID of the file's group */ + dev_t st_rdev; /* device type */ + time_t st_atime; /* time of last access */ + long st_atimensec; /* nsec of last access */ + time_t st_mtime; /* time of last data modification */ + long st_mtimensec; /* nsec of last data modification */ + time_t st_ctime; /* time of last file status change */ + long st_ctimensec; /* nsec of last file status change */ + time_t st_birthtime; /* time of creation */ + long st_birthtimensec; /* nsec of time of creation */ + off_t st_size; /* file size, in bytes */ + blkcnt_t st_blocks; /* blocks allocated for file */ + blksize_t st_blksize; /* optimal blocksize for I/O */ + uint32_t st_flags; /* user defined flags for file */ + uint32_t st_gen; /* file generation number */ + uint32_t[2] st_spare; + } + + enum S_IRUSR = 0x100; // octal 0000400 + enum S_IWUSR = 0x080; // octal 0000200 + enum S_IXUSR = 0x040; // octal 0000100 + enum S_IRWXU = 0x1C0; // octal 0000700 + + enum S_IRGRP = 0x020; // octal 0000040 + enum S_IWGRP = 0x010; // octal 0000020 + enum S_IXGRP = 0x008; // octal 0000010 + enum S_IRWXG = 0x038; // octal 0000070 + + enum S_IROTH = 0x4; // 0000004 + enum S_IWOTH = 0x2; // 0000002 + enum S_IXOTH = 0x1; // 0000001 + enum S_IRWXO = 0x7; // 0000007 + + enum S_ISUID = 0x800; // octal 0004000 + enum S_ISGID = 0x400; // octal 0002000 + enum S_ISVTX = 0x200; // octal 0001000 + + private + { + extern (D) bool S_ISTYPE( mode_t mode, uint mask ) + { + return ( mode & S_IFMT ) == mask; + } + } + + extern (D) bool S_ISBLK( mode_t mode ) { return S_ISTYPE( mode, S_IFBLK ); } + extern (D) bool S_ISCHR( mode_t mode ) { return S_ISTYPE( mode, S_IFCHR ); } + extern (D) bool S_ISDIR( mode_t mode ) { return S_ISTYPE( mode, S_IFDIR ); } + extern (D) bool S_ISFIFO( mode_t mode ) { return S_ISTYPE( mode, S_IFIFO ); } + extern (D) bool S_ISREG( mode_t mode ) { return S_ISTYPE( mode, S_IFREG ); } + extern (D) bool S_ISLNK( mode_t mode ) { return S_ISTYPE( mode, S_IFLNK ); } + extern (D) bool S_ISSOCK( mode_t mode ) { return S_ISTYPE( mode, S_IFSOCK ); } +} else version (Solaris) { private enum _ST_FSTYPSZ = 16; @@ -1142,6 +1204,15 @@ else version( FreeBSD ) int lstat(in char*, stat_t*); int stat(in char*, stat_t*); } +else version(NetBSD) +{ + int __fstat50(int, stat_t*); + int __lstat50(in char*, stat_t*); + int __stat50(in char*, stat_t*); + alias __fstat50 fstat; + alias __lstat50 lstat; + alias __stat50 stat; +} else version( CRuntime_Bionic ) { int fstat(int, stat_t*) @trusted; @@ -1211,6 +1282,19 @@ else version( FreeBSD ) int mknod(in char*, mode_t, dev_t); } +else version(NetBSD) +{ + enum S_IFMT = 0xF000; // octal 0170000 + enum S_IFBLK = 0x6000; // octal 0060000 + enum S_IFCHR = 0x2000; // octal 0020000 + enum S_IFIFO = 0x1000; // octal 0010000 + enum S_IFREG = 0x8000; // octal 0100000 + enum S_IFDIR = 0x4000; // octal 0040000 + enum S_IFLNK = 0xA000; // octal 0120000 + enum S_IFSOCK = 0xC000; // octal 0140000 + + int mknod(in char*, mode_t, dev_t); +} else version (Solaris) { enum S_IFMT = 0xF000; diff --git a/src/core/sys/posix/sys/time.d b/src/core/sys/posix/sys/time.d index b3bb1d98f7..a4bfd68f09 100644 --- a/src/core/sys/posix/sys/time.d +++ b/src/core/sys/posix/sys/time.d @@ -134,6 +134,25 @@ else version( FreeBSD ) int setitimer(int, in itimerval*, itimerval*); int utimes(in char*, ref const(timeval)[2]); } +else version(NetBSD) +{ + struct timeval + { + time_t tv_sec; + suseconds_t tv_usec; + } + + struct itimerval + { + timeval it_interval; + timeval it_value; + } + + int getitimer(int, itimerval*); + int gettimeofday(timeval*, void*); // timezone_t* is normally void* + int setitimer(int, in itimerval*, itimerval*); + int utimes(in char*, ref const(timeval)[2]); +} else version (Solaris) { struct timeval diff --git a/src/core/sys/posix/sys/types.d b/src/core/sys/posix/sys/types.d index cd2dc60d21..a609f2be22 100644 --- a/src/core/sys/posix/sys/types.d +++ b/src/core/sys/posix/sys/types.d @@ -143,6 +143,22 @@ else version( FreeBSD ) alias uint uid_t; alias uint fflags_t; } +else version(NetBSD) +{ + alias long blkcnt_t; + alias int blksize_t; + alias ulong dev_t; + alias uint gid_t; + alias ulong ino_t; + alias uint mode_t; + alias uint nlink_t; + alias ulong off_t; + alias int pid_t; + //size_t (defined in core.stdc.stddef) + alias c_long ssize_t; + alias c_long time_t; + alias uint uid_t; +} else version (Solaris) { alias char* caddr_t; @@ -274,6 +290,16 @@ else version( FreeBSD ) alias c_long suseconds_t; alias uint useconds_t; } +else version(NetBSD) +{ + alias ulong fsblkcnt_t; + alias ulong fsfilcnt_t; + alias c_long clock_t; + alias long id_t; + alias c_long key_t; + alias c_long suseconds_t; + alias uint useconds_t; +} else version (Solaris) { static if (__USE_FILE_OFFSET64) @@ -650,6 +676,74 @@ else version( FreeBSD ) alias void* pthread_rwlockattr_t; alias void* pthread_t; } +else version(NetBSD) +{ + struct pthread_queue_t { + void* ptqh_first; + void** ptqh_last; + } + + alias lwpid_t = int; + alias pthread_spin_t = ubyte; + struct pthread_attr_t { + uint pta_magic; + int pta_flags; + void* pta_private; + } + struct pthread_spinlock_t { + uint pts_magic; + pthread_spin_t pts_spin; + int pts_flags; + } + struct pthread_cond_t { + uint ptc_magic; + pthread_spin_t ptc_lock; + pthread_queue_t ptc_waiters; + pthread_mutex_t *ptc_mutex; + void* ptc_private; + } + struct pthread_condattr_t { + uint ptca_magic; + void *ptca_private; + } + struct pthread_mutex_t { + uint ptm_magic; + pthread_spin_t ptm_errorcheck; + ubyte[3] ptm_pad1; + pthread_spin_t ptm_interlock; + ubyte[3] ptm_pad2; + pthread_t ptm_owner; + void* ptm_waiters; + uint ptm_recursed; + void* ptm_spare2; + } + struct pthread_mutexattr_t{ + uint ptma_magic; + void* ptma_private; + } + struct pthread_once_t{ + pthread_mutex_t pto_mutex; + int pto_done; + } + struct pthread_rwlock_t{ + uint ptr_magic; + + pthread_spin_t ptr_interlock; + + pthread_queue_t ptr_rblocked; + pthread_queue_t ptr_wblocked; + uint ptr_nreaders; + pthread_t ptr_owner; + void *ptr_private; + } + struct pthread_rwlockattr_t{ + uint ptra_magic; + void* ptra_private; + } + + alias uint pthread_key_t; + alias void* pthread_t; +} else version (Solaris) { alias uint pthread_t; @@ -814,6 +908,11 @@ else version( FreeBSD ) alias void* pthread_barrier_t; alias void* pthread_barrierattr_t; } +else version(NetBSD) +{ + alias void* pthread_barrier_t; + alias void* pthread_barrierattr_t; +} else version( Darwin ) { } @@ -857,6 +956,10 @@ else version( FreeBSD ) { alias void* pthread_spinlock_t; } +else version(NetBSD) +{ + //already defined +} else version (Solaris) { alias pthread_mutex_t pthread_spinlock_t; diff --git a/src/core/sys/posix/sys/uio.d b/src/core/sys/posix/sys/uio.d index ffa0b3e298..9b5758742c 100644 --- a/src/core/sys/posix/sys/uio.d +++ b/src/core/sys/posix/sys/uio.d @@ -79,6 +79,17 @@ else version( FreeBSD ) ssize_t readv(int, in iovec*, int); ssize_t writev(int, in iovec*, int); } +else version(NetBSD) +{ + struct iovec + { + void* iov_base; + size_t iov_len; + } + + ssize_t readv(int, in iovec*, int); + ssize_t writev(int, in iovec*, int); +} else version (Solaris) { struct iovec diff --git a/src/core/sys/posix/sys/un.d b/src/core/sys/posix/sys/un.d index ad504d4c1c..1b6c7b08e9 100644 --- a/src/core/sys/posix/sys/un.d +++ b/src/core/sys/posix/sys/un.d @@ -69,6 +69,15 @@ else version( FreeBSD ) byte[104] sun_path; } } +else version(NetBSD) +{ + struct sockaddr_un + { + ubyte sun_len; + sa_family_t sun_family; + byte[104] sun_path; + } +} else version( Solaris ) { struct sockaddr_un diff --git a/src/core/sys/posix/sys/utsname.d b/src/core/sys/posix/sys/utsname.d index a87c5fb078..b41030a2e2 100644 --- a/src/core/sys/posix/sys/utsname.d +++ b/src/core/sys/posix/sys/utsname.d @@ -62,6 +62,22 @@ else version(FreeBSD) int uname(utsname* __name); } +else version(NetBSD) +{ + private enum utsNameLength = 256; + + struct utsname + { + char[utsNameLength] sysname; + char[utsNameLength] nodename; + char[utsNameLength] release; + // The field name is version but version is a keyword in D. + char[utsNameLength] update; + char[utsNameLength] machine; + } + + int uname(utsname* __name); +} else version(Solaris) { private enum SYS_NMLN = 257; diff --git a/src/core/sys/posix/sys/wait.d b/src/core/sys/posix/sys/wait.d index a69c885f00..6d39de7f8f 100644 --- a/src/core/sys/posix/sys/wait.d +++ b/src/core/sys/posix/sys/wait.d @@ -122,6 +122,28 @@ else version( FreeBSD ) extern (D) int WSTOPSIG( int status ) { return status >> 8; } extern (D) int WTERMSIG( int status ) { return _WSTATUS( status ); } } +else version(NetBSD) +{ + enum WNOHANG = 1; + enum WUNTRACED = 2; + + private + { + enum _WSTOPPED = 0x7F; // octal 0177 + } + + extern (D) int _WSTATUS(int status) { return (status & 0x7F); } + extern (D) int WEXITSTATUS( int status ) { return (status >> 8); } + extern (D) int WIFCONTINUED( int status ) { return status == 0x13; } + extern (D) bool WIFEXITED( int status ) { return _WSTATUS(status) == 0; } + extern (D) bool WIFSIGNALED( int status ) + { + return _WSTATUS( status ) != _WSTOPPED && _WSTATUS( status ) != 0; + } + extern (D) bool WIFSTOPPED( int status ) { return _WSTATUS( status ) == _WSTOPPED; } + extern (D) int WSTOPSIG( int status ) { return status >> 8; } + extern (D) int WTERMSIG( int status ) { return _WSTATUS( status ); } +} else version (Solaris) { enum WNOHANG = 64; @@ -214,6 +236,12 @@ else version (FreeBSD) // http://www.freebsd.org/projects/c99/ } +else version (NetBSD) +{ + enum WSTOPPED = WUNTRACED; + //enum WCONTINUED = 4; + enum WNOWAIT = 0x00010000; +} else version (Solaris) { enum WEXITED = 1; diff --git a/src/core/sys/posix/syslog.d b/src/core/sys/posix/syslog.d index 23e2fbce82..20939aa503 100644 --- a/src/core/sys/posix/syslog.d +++ b/src/core/sys/posix/syslog.d @@ -211,6 +211,71 @@ else version( FreeBSD ) void syslog (int __pri, const char *__fmt, ...); void closelog(); } +else version(NetBSD) +{ + //http://fxr.watson.org/fxr/source/sys/syslog.h + + //PRIORITY + enum { + LOG_EMERG = 0, /* system is unusable */ + LOG_ALERT = 1, /* action must be taken immediately */ + LOG_CRIT = 2, /* critical conditions */ + LOG_ERR = 3, /* error conditions */ + LOG_WARNING = 4, /* warning conditions */ + LOG_NOTICE = 5, /* normal but significant condition */ + LOG_INFO = 6, /* informational */ + LOG_DEBUG = 7, /* debug-level messages */ + }; + + //OPTIONS + enum { + LOG_PID = 0x01, /* log the pid with each message */ + LOG_CONS = 0x02, /* log on the console if errors in sending */ + LOG_ODELAY = 0x04, /* delay open until first syslog() (default) */ + LOG_NDELAY = 0x08, /* don't delay open */ + LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ + LOG_PERROR = 0x20, /* log to stderr as well */ + }; + + //FACILITY + enum { + LOG_KERN = (0<<3), /* kernel messages */ + LOG_USER = (1<<3), /* random user-level messages */ + LOG_MAIL = (2<<3), /* mail system */ + LOG_DAEMON = (3<<3), /* system daemons */ + LOG_AUTH = (4<<3), /* security/authorization messages */ + LOG_SYSLOG = (5<<3), /* messages generated internally by syslogd */ + LOG_LPR = (6<<3), /* line printer subsystem */ + LOG_NEWS = (7<<3), /* network news subsystem */ + LOG_UUCP = (8<<3), /* UUCP subsystem */ + LOG_CRON = (9<<3), /* clock daemon */ + LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ + LOG_FTP = (11<<3), /* ftp daemon */ + LOG_NTP = (12<<3), /* NTP subsystem */ + LOG_SECURITY = (13<<3), /* security subsystems (firewalling, etc.) */ + LOG_CONSOLE = (14<<3), /* /dev/console output */ + + /* other codes through 15 reserved for system use */ + LOG_LOCAL0 = (16<<3), /* reserved for local use */ + LOG_LOCAL1 = (17<<3), /* reserved for local use */ + LOG_LOCAL2 = (18<<3), /* reserved for local use */ + LOG_LOCAL3 = (19<<3), /* reserved for local use */ + LOG_LOCAL4 = (20<<3), /* reserved for local use */ + LOG_LOCAL5 = (21<<3), /* reserved for local use */ + LOG_LOCAL6 = (22<<3), /* reserved for local use */ + LOG_LOCAL7 = (23<<3), /* reserved for local use */ + + LOG_NFACILITIES = 24, /* current number of facilities */ + }; + + int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ + int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ + + void openlog (const char *, int __option, int __facility); + int setlogmask (int __mask); + void syslog (int __pri, const char *__fmt, ...); + void closelog(); +} else version( Solaris ) { //http://pubs.opengroup.org/onlinepubs/007904875/basedefs/syslog.h.html diff --git a/src/core/sys/posix/termios.d b/src/core/sys/posix/termios.d index 5a56fd071c..8642f540ef 100644 --- a/src/core/sys/posix/termios.d +++ b/src/core/sys/posix/termios.d @@ -468,6 +468,114 @@ else version ( FreeBSD ) int tcsetattr(int, int, in termios*); } +else version (NetBSD) +{ + alias ubyte cc_t; + alias uint speed_t; + alias uint tcflag_t; + + enum NCCS = 20; + + struct termios + { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t[NCCS] c_cc; + speed_t c_ispeed; + speed_t c_ospeed; + } + + enum VEOF = 0; + enum VEOL = 1; + enum VERASE = 3; + enum VINTR = 8; + enum VKILL = 5; + enum VMIN = 16; + enum VQUIT = 9; + enum VSTART = 12; + enum VSTOP = 13; + enum VSUSP = 10; + enum VTIME = 17; + + enum BRKINT = 0x0000002; + enum ICRNL = 0x0000100; + enum IGNBRK = 0x0000001; + enum IGNCR = 0x0000080; + enum IGNPAR = 0x0000004; + enum INLCR = 0x0000040; + enum INPCK = 0x0000010; + enum ISTRIP = 0x0000020; + enum IXOFF = 0x0000400; + enum IXON = 0x0000200; + enum PARMRK = 0x0000008; + + enum OPOST = 0x0000001; + + enum B0 = 0; + enum B50 = 50; + enum B75 = 75; + enum B110 = 110; + enum B134 = 134; + enum B150 = 150; + enum B200 = 200; + enum B300 = 300; + enum B600 = 600; + enum B1200 = 1200; + enum B1800 = 1800; + enum B2400 = 2400; + enum B4800 = 4800; + enum B9600 = 9600; + enum B19200 = 19200; + enum B38400 = 38400; + + enum CSIZE = 0x0000300; + enum CS5 = 0x0000000; + enum CS6 = 0x0000100; + enum CS7 = 0x0000200; + enum CS8 = 0x0000300; + enum CSTOPB = 0x0000400; + enum CREAD = 0x0000800; + enum PARENB = 0x0001000; + enum PARODD = 0x0002000; + enum HUPCL = 0x0004000; + enum CLOCAL = 0x0008000; + + enum ECHO = 0x00000008; + enum ECHOE = 0x00000002; + enum ECHOK = 0x00000004; + enum ECHONL = 0x00000010; + enum ICANON = 0x00000100; + enum IEXTEN = 0x00000400; + enum ISIG = 0x00000080; + enum NOFLSH = 0x80000000; + enum TOSTOP = 0x00400000; + + enum TCSANOW = 0; + enum TCSADRAIN = 1; + enum TCSAFLUSH = 2; + + enum TCIFLUSH = 1; + enum TCOFLUSH = 2; + enum TCIOFLUSH = 3; + + enum TCIOFF = 3; + enum TCION = 4; + enum TCOOFF = 1; + enum TCOON = 2; + + speed_t cfgetispeed(in termios*); + speed_t cfgetospeed(in termios*); + int cfsetispeed(termios*, speed_t); + int cfsetospeed(termios*, speed_t); + int tcdrain(int); + int tcflow(int, int); + int tcflush(int, int); + int tcgetattr(int, termios*); + int tcsendbreak(int, int); + int tcsetattr(int, int, in termios*); +} else version (Solaris) { alias tcflag_t = uint; @@ -743,6 +851,40 @@ else version( FreeBSD ) pid_t tcgetsid(int); } +else version(NetBSD) +{ + enum IXANY = 0x00000800; + + enum ONLCR = 0x00000002; + enum OCRNL = 0x00000010; + enum ONOCR = 0x00000020; + enum ONLRET = 0x00000040; + //enum OFILL + //enum NLDLY + //enum NL0 + //enum NL1 + //enum CRDLY + //enum CR0 + //enum CR1 + //enum CR2 + //enum CR3 + enum TABDLY = 0x00000004; + enum TAB0 = 0x00000000; + //enum TAB1 + //enum TAB2 + enum TAB3 = 0x00000004; + //enum BSDLY + //enum BS0 + //enum BS1 + //enum VTDLY + //enum VT0 + //enum VT1 + //enum FFDLY + //enum FF0 + //enum FF1 + + pid_t tcgetsid(int); +} else version (Solaris) { enum IXANY = 0x0000800; diff --git a/src/core/sys/posix/time.d b/src/core/sys/posix/time.d index ef0e3b0cbd..2bf9e96fdc 100644 --- a/src/core/sys/posix/time.d +++ b/src/core/sys/posix/time.d @@ -61,6 +61,10 @@ else version( FreeBSD ) { time_t timegm(tm*); // non-standard } +else version(NetBSD) +{ + time_t timegm(tm*); // non-standard +} else version (Solaris) { time_t timegm(tm*); // non-standard @@ -124,6 +128,11 @@ else version (FreeBSD) deprecated("Please import it from core.sys.freebsd.time instead.") alias CLOCK_MONOTONIC_FAST = core.sys.freebsd.time.CLOCK_MONOTONIC_FAST; } +else version (NetBSD) +{ + // time.h + enum CLOCK_MONOTONIC = 3; +} else version (Darwin) { // No CLOCK_MONOTONIC defined @@ -254,6 +263,30 @@ else version( FreeBSD ) int timer_getoverrun(timer_t); int timer_settime(timer_t, int, in itimerspec*, itimerspec*); } +else version(NetBSD) +{ + struct itimerspec + { + timespec it_interval; + timespec it_value; + } + + enum CLOCK_REALTIME = 0; + enum TIMER_ABSTIME = 0x01; + + alias int clockid_t; // + alias int timer_t; + + int clock_getres(clockid_t, timespec*); + int clock_gettime(clockid_t, timespec*); + int clock_settime(clockid_t, in timespec*); + int nanosleep(in timespec*, timespec*); + int timer_create(clockid_t, sigevent*, timer_t*); + int timer_delete(timer_t); + int timer_gettime(timer_t, itimerspec*); + int timer_getoverrun(timer_t); + int timer_settime(timer_t, int, in itimerspec*, itimerspec*); +} else version (Solaris) { enum CLOCK_PROCESS_CPUTIME_ID = 5; // @@ -347,6 +380,13 @@ else version( FreeBSD ) tm* gmtime_r(in time_t*, tm*); tm* localtime_r(in time_t*, tm*); } +else version(NetBSD) +{ + char* asctime_r(in tm*, char*); + char* ctime_r(in time_t*, char*); + tm* gmtime_r(in time_t*, tm*); + tm* localtime_r(in time_t*, tm*); +} else version (Solaris) { char* asctime_r(in tm*, char*); @@ -400,6 +440,11 @@ else version( FreeBSD ) //tm* getdate(in char*); char* strptime(in char*, in char*, tm*); } +else version(NetBSD) +{ + tm* getdate(in char*); + char* strptime(in char*, in char*, tm*); +} else version (Solaris) { extern __gshared c_long timezone, altzone; diff --git a/src/core/sys/posix/ucontext.d b/src/core/sys/posix/ucontext.d index 54e6cc095b..e0f393fe39 100644 --- a/src/core/sys/posix/ucontext.d +++ b/src/core/sys/posix/ucontext.d @@ -701,6 +701,62 @@ else version( FreeBSD ) int[4] __spare__; } } +else version(NetBSD) +{ + + version( X86_64 ) + { + enum { NGREG = 26 }; + alias __greg_t = ulong; + alias __gregset_t = __greg_t[NGREG]; + alias __fpregset_t = align(8)ubyte[512]; + + struct mcontext_t { + __gregset_t __gregs; + __greg_t _mc_tlsbase; + __fpregset_t __fpregs; + } + } + else version( X86 ) + { + enum { NGREG = 19 }; + alias __greg_t = ulong; + alias __gregset_t = __greg_t[_NGREG]; + struct __fpregset_t{ + union __fp_reg_set{ + struct __fpchip_state{ + int[27] __fp_state; /* Environment and registers */ + } ; /* x87 regs in fsave format */ + struct __fp_xmm_state{ + ubyte[512] __fp_xmm; + } ; /* x87 and xmm regs in fxsave format */ + int[128] __fp_fpregs; + }; + __fpregset_t __fp_reg_set; + int[33] __fp_pad; /* Historic padding */ + }; + + struct mcontext_t { + __gregset_t __gregs; + __fpregset_t __fpregs; + __greg_t _mc_tlsbase; + } + } + + struct ucontext_t + { + uint uc_flags; /* properties */ + ucontext_t * uc_link; /* context to resume */ + sigset_t uc_sigmask; /* signals blocked in this context */ + stack_t uc_stack; /* the stack used by this context */ + mcontext_t uc_mcontext; /* machine state */ + /+ todo #if defined(_UC_MACHINE_PAD) + long __uc_pad[_UC_MACHINE_PAD]; + #endif + +/ + + } +} else version ( Solaris ) { alias uint[4] upad128_t; diff --git a/src/core/sys/posix/unistd.d b/src/core/sys/posix/unistd.d index b99de41f49..8821e544dd 100644 --- a/src/core/sys/posix/unistd.d +++ b/src/core/sys/posix/unistd.d @@ -125,6 +125,11 @@ else version( FreeBSD ) off_t lseek(int, off_t, int) @trusted; int ftruncate(int, off_t) @trusted; } +else version(NetBSD) +{ + off_t lseek(int, off_t, int) @trusted; + int ftruncate(int, off_t) @trusted; +} else version( Solaris ) { version ( D_LP64 ) @@ -817,6 +822,143 @@ else version( FreeBSD ) _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS = 14, } } +else version(NetBSD) +{ + enum F_OK = 0; + enum R_OK = 0x04; + enum W_OK = 0x02; + enum X_OK = 0x01; + + enum F_ULOCK = 0; + enum F_LOCK = 1; + enum F_TLOCK = 2; + enum F_TEST = 3; + + enum + { + _SC_ARG_MAX = 1, + _SC_CHILD_MAX = 2, + _O_SC_CLK_TCK = 3, + _SC_NGROUPS_MAX = 4, + _SC_OPEN_MAX = 5, + _SC_JOB_CONTROL = 6, + _SC_SAVED_IDS = 7, + _SC_VERSION = 8, + _SC_BC_BASE_MAX = 9, + _SC_BC_DIM_MAX = 10, + _SC_BC_SCALE_MAX = 11, + _SC_BC_STRING_MAX = 12, + _SC_COLL_WEIGHTS_MAX = 13, + _SC_EXPR_NEST_MAX = 14, + _SC_LINE_MAX = 15, + _SC_RE_DUP_MAX = 16, + _SC_2_VERSION = 17, + _SC_2_C_BIND = 18, + _SC_2_C_DEV = 19, + _SC_2_CHAR_TERM = 20, + _SC_2_FORT_DEV = 21, + _SC_2_FORT_RUN = 22, + _SC_2_LOCALEDEF = 23, + _SC_2_SW_DEV = 24, + _SC_2_UPE = 25, + _SC_STREAM_MAX = 26, + _SC_TZNAME_MAX = 27, + _SC_PAGESIZE = 28, + _SC_FSYNC = 29, + _SC_XOPEN_SHM = 30, + _SC_SYNCHRONIZED_IO = 31, + _SC_IOV_MAX = 32, + _SC_MAPPED_FILES = 33, + _SC_MEMLOCK = 34, + _SC_MEMLOCK_RANGE = 35, + _SC_MEMORY_PROTECTION = 36, + _SC_LOGIN_NAME_MAX = 37, + _SC_MONOTONIC_CLOCK = 38, + _SC_CLK_TCK = 39, + _SC_ATEXIT_MAX = 40, + _SC_THREADS = 41, + _SC_SEMAPHORES = 42, + _SC_BARRIERS = 43, + _SC_TIMERS = 44, + _SC_SPIN_LOCKS = 45, + _SC_READER_WRITER_LOCKS = 46, + _SC_GETGR_R_SIZE_MAX = 47, + _SC_GETPW_R_SIZE_MAX = 48, + _SC_CLOCK_SELECTION = 49, + _SC_ASYNCHRONOUS_IO = 50, + _SC_AIO_LISTIO_MAX = 51, + _SC_AIO_MAX = 52, + _SC_MESSAGE_PASSING = 53, + _SC_MQ_OPEN_MAX = 54, + _SC_MQ_PRIO_MAX = 55, + _SC_PRIORITY_SCHEDULING = 56, + _SC_THREAD_DESTRUCTOR_ITERATIONS = 57, + _SC_THREAD_KEYS_MAX = 58, + _SC_THREAD_STACK_MIN = 59, + _SC_THREAD_THREADS_MAX = 60, + _SC_THREAD_ATTR_STACKADDR = 61, + _SC_THREAD_ATTR_STACKSIZE = 62, + _SC_THREAD_PRIORITY_SCHEDULING = 63, + _SC_THREAD_PRIO_INHERIT = 64, + _SC_THREAD_PRIO_PROTECT = 65, + _SC_THREAD_PROCESS_SHARED = 66, + _SC_THREAD_SAFE_FUNCTIONS = 67, + _SC_TTY_NAME_MAX = 68, + _SC_HOST_NAME_MAX = 69, + _SC_PASS_MAX = 70, + _SC_REGEXP = 71, + _SC_SHELL = 72, + _SC_SYMLOOP_MAX = 73, + + /* Actually, they are not supported or implemented yet */ + _SC_V6_ILP32_OFF32 = 74, + _SC_V6_ILP32_OFFBIG = 75, + _SC_V6_LP64_OFF64 = 76, + _SC_V6_LPBIG_OFFBIG = 77, + _SC_2_PBS = 80, + _SC_2_PBS_ACCOUNTING = 81, + _SC_2_PBS_CHECKPOINT = 82, + _SC_2_PBS_LOCATE = 83, + _SC_2_PBS_MESSAGE = 84, + _SC_2_PBS_TRACK = 85, + + /* These are implemented */ + _SC_SPAWN = 86, + _SC_SHARED_MEMORY_OBJECTS = 87, + + /* Extensions found in Solaris and Linux. */ + _SC_PHYS_PAGES = 121, + + /* Commonly provided sysconf() extensions */ + _SC_NPROCESSORS_CONF = 1001, + _SC_NPROCESSORS_ONLN = 1002, + /* Native variables */ + _SC_SCHED_RT_TS = 2001, + _SC_SCHED_PRI_MIN = 2002, + _SC_SCHED_PRI_MAX = 2003 + + } + + enum _SC_PAGE_SIZE = _SC_PAGESIZE; + + enum + { + _CS_PATH = 1, + _CS_POSIX_V6_ILP32_OFF32_CFLAGS = 2, + _CS_POSIX_V6_ILP32_OFF32_LDFLAGS = 3, + _CS_POSIX_V6_ILP32_OFF32_LIBS = 4, + _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS = 5, + _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS = 6, + _CS_POSIX_V6_ILP32_OFFBIG_LIBS = 7, + _CS_POSIX_V6_LP64_OFF64_CFLAGS = 8, + _CS_POSIX_V6_LP64_OFF64_LDFLAGS = 9, + _CS_POSIX_V6_LP64_OFF64_LIBS = 10, + _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS = 11, + _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS = 12, + _CS_POSIX_V6_LPBIG_OFFBIG_LIBS = 13, + _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS = 14, + } +} else version( CRuntime_Bionic ) { enum F_OK = 0; @@ -1115,6 +1257,10 @@ else version( FreeBSD ) { int fsync(int) @trusted; } +else version(NetBSD) +{ + int fsync(int) @trusted; +} else version( CRuntime_Bionic ) { int fsync(int) @trusted; @@ -1269,6 +1415,31 @@ else version( FreeBSD ) int usleep(useconds_t) @trusted; pid_t vfork(); } +else version(NetBSD) +{ + char* crypt(in char*, in char*); + //char* ctermid(char*); + void encrypt(ref char[64], int) @trusted; + int fchdir(int) @trusted; + c_long gethostid() @trusted; + int getpgid(pid_t) @trusted; + int getsid(pid_t) @trusted; + char* getwd(char*); // LEGACY + int lchown(in char*, uid_t, gid_t); + int lockf(int, int, off_t) @trusted; + int nice(int) @trusted; + ssize_t pread(int, void*, size_t, off_t); + ssize_t pwrite(int, in void*, size_t, off_t); + int setpgrp(pid_t, pid_t) @trusted; + int setregid(gid_t, gid_t) @trusted; + int setreuid(uid_t, uid_t) @trusted; + void swab(in void*, void*, ssize_t); + void sync() @trusted; + int truncate(in char*, off_t); + useconds_t ualarm(useconds_t, useconds_t) @trusted; + int usleep(useconds_t) @trusted; + pid_t vfork(); +} else version( CRuntime_Bionic ) { int fchdir(int) @trusted; diff --git a/src/core/sys/posix/utime.d b/src/core/sys/posix/utime.d index 25166f6736..89d15f56e7 100644 --- a/src/core/sys/posix/utime.d +++ b/src/core/sys/posix/utime.d @@ -74,6 +74,16 @@ else version( FreeBSD ) int utime(in char*, in utimbuf*); } +else version(NetBSD) +{ + struct utimbuf + { + time_t actime; + time_t modtime; + } + + int utime(in char*, in utimbuf*); +} else version( Solaris ) { struct utimbuf From c5bdd290029d2bb790a2130d066eab6018264890 Mon Sep 17 00:00:00 2001 From: anonymous Date: Mon, 13 Mar 2017 12:33:30 +0100 Subject: [PATCH 624/768] @disable TypeInfo.init --- changelog/disable-TypeInfo.init.dd | 6 ++++++ src/object.d | 8 +++----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 changelog/disable-TypeInfo.init.dd diff --git a/changelog/disable-TypeInfo.init.dd b/changelog/disable-TypeInfo.init.dd new file mode 100644 index 0000000000..5cd5decc19 --- /dev/null +++ b/changelog/disable-TypeInfo.init.dd @@ -0,0 +1,6 @@ +TypeInfo.init has been `@disable`d. + +This is a step towards removal of `TypeInfo.init`, which is necessary to resolve +a name clash with the type property $(GLINK2 property, init). + +Use $(REF_OBJECT_SHORT TypeInfo.initializer) instead. diff --git a/src/object.d b/src/object.d index fb1709450b..0838124d88 100644 --- a/src/object.d +++ b/src/object.d @@ -296,11 +296,9 @@ class TypeInfo */ abstract const(void)[] initializer() nothrow pure const @safe @nogc; - /// $(RED Scheduled for deprecation.) Please use `initializer` instead. - deprecated("Please use initializer instead.") alias init = initializer; - // since 2.072 - version(none) @disable static const(void)[] init(); // planned for 2.073 - /* Planned for 2.074: Remove init, making way for the init type property, + /// $(RED Removed.) Please use `initializer` instead. + @disable static const(void)[] init(); // since 2.074 + /* Planned for 2.075: Remove init, making way for the init type property, fixing issue 12233. */ /** Get flags for type: 1 means GC should scan for pointers, From 47f9fe25f1967a7b235e0e13b0a9553456e78cf0 Mon Sep 17 00:00:00 2001 From: anonymous Date: Mon, 13 Mar 2017 17:09:25 +0100 Subject: [PATCH 625/768] changelog tweaks --- changelog/disable-TypeInfo.init.dd | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/changelog/disable-TypeInfo.init.dd b/changelog/disable-TypeInfo.init.dd index 5cd5decc19..824635eae3 100644 --- a/changelog/disable-TypeInfo.init.dd +++ b/changelog/disable-TypeInfo.init.dd @@ -1,6 +1,12 @@ -TypeInfo.init has been `@disable`d. +`TypeInfo.init` has been `@disable`d. -This is a step towards removal of `TypeInfo.init`, which is necessary to resolve -a name clash with the type property $(GLINK2 property, init). +$(REF_OBJECT_SHORT TypeInfo.init) has been `@disable`d. Use +$(REF_OBJECT_SHORT TypeInfo.initializer) instead. -Use $(REF_OBJECT_SHORT TypeInfo.initializer) instead. +`TypeInfo.init` is a legacy alias of the method that is now called +$(REF_OBJECT_SHORT TypeInfo.initializer). The name change is necessary because +the name "init" clashes with the type property of the same name +($(GLINK2 property, init)). + +The legacy alias has been deprecated since 2.072.0. It's going to be removed in +2.075.0. From 804c713bf11f23a596093c6a427358bb7b00566e Mon Sep 17 00:00:00 2001 From: somzzz Date: Fri, 10 Mar 2017 05:30:21 -0800 Subject: [PATCH 626/768] _equals for structs --- src/object.d | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/src/object.d b/src/object.d index fb1709450b..aae26b485e 100644 --- a/src/object.d +++ b/src/object.d @@ -3241,6 +3241,71 @@ template RTInfo(T) enum RTInfo = null; } +// lhs == rhs lowers to __equals(lhs, rhs) for arrays of all struct types. +// old path: Typeinfo_array => TypeInfo_struct +bool __equals(T1, T2)(T1[] lhs, T2[] rhs) +{ + if (lhs.length != rhs.length) + return false; + + import core.internal.traits : Unqual; + static assert(is(Unqual!T1 == Unqual!T2), "Internal error."); + + static @trusted ref R at(R)(R[] r, size_t i) { return r.ptr[i]; } + + foreach (const u; 0 .. lhs.length) + { + static if (__traits(compiles, at(lhs, u).opEquals(at(rhs, u)))) + { + if (!at(lhs, u).opEquals(at(rhs, u))) + return false; + } + else + { + if (at(lhs, u).tupleof != at(rhs, u).tupleof) + return false; + } + } + + return true; +} + +unittest +{ + struct A + { + int a; + } + + auto arr1 = [A(0), A(2)]; + auto arr2 = [A(0), A(1)]; + auto arr3 = [A(0), A(1)]; + + assert(arr1 != arr2); + assert(arr2 == arr3); +} + +unittest +{ + struct A + { + int a; + int b; + + bool opEquals(const A other) + { + return this.a == other.b && this.b == other.a; + } + } + + auto arr1 = [A(1, 0), A(0, 1)]; + auto arr2 = [A(1, 0), A(0, 1)]; + auto arr3 = [A(0, 1), A(1, 0)]; + + assert(arr1 != arr2); + assert(arr2 == arr3); +} + // Compare class and interface objects for ordering. private int __cmp(Obj)(Obj lhs, Obj rhs) if (is(Obj : Object)) From 1caa1fc2c98c0fe06b8440f435cbac744fe7729c Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Thu, 16 Mar 2017 18:13:42 -0400 Subject: [PATCH 627/768] Fix issue 8411 - add opCast!bool support for Duration. --- src/core/time.d | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/core/time.d b/src/core/time.d index 12796ed600..db8c5ad3cb 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -1104,6 +1104,21 @@ public: } } + /++ + Returns `true` if this duration is non-zero. + +/ + bool opCast(T : bool)() const nothrow @nogc + { + return _hnsecs != 0; + } + + unittest + { + auto d = 10.minutes; + assert(d); + assert(!(d - d)); + assert(d + d); + } //Temporary hack until bug http://d.puremagic.com/issues/show_bug.cgi?id=5747 is fixed. Duration opCast(T)() const nothrow @nogc From 33b41c14e25f874111691f1f7a4708c8cbce4b7d Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Fri, 17 Mar 2017 09:17:33 -0400 Subject: [PATCH 628/768] Fix docs --- src/core/time.d | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/time.d b/src/core/time.d index db8c5ad3cb..6cd1c65e04 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -1105,7 +1105,8 @@ public: } /++ - Returns `true` if this duration is non-zero. + Allow Duration to be used as a boolean. + Returns: `true` if this duration is non-zero. +/ bool opCast(T : bool)() const nothrow @nogc { From adfae798c4b4a41cb222cbeaeefa96b73d4c1f4f Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Mon, 16 Jan 2017 08:13:56 -0500 Subject: [PATCH 629/768] Remove a catch of Throwable in object.d --- src/object.d | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/object.d b/src/object.d index 38b6144b3b..8f94d58600 100644 --- a/src/object.d +++ b/src/object.d @@ -207,23 +207,12 @@ class TypeInfo return typeid(this).name; } - override size_t toHash() @trusted const + override size_t toHash() @trusted const nothrow { import core.internal.traits : externDFunc; alias hashOf = externDFunc!("rt.util.hash.hashOf", size_t function(const(void)[], size_t) @trusted pure nothrow @nogc); - try - { - auto data = this.toString(); - return hashOf(data, 0); - } - catch (Throwable) - { - // This should never happen; remove when toString() is made nothrow - - // BUG: this prevents a compacting GC from working, needs to be fixed - return cast(size_t)cast(void*)this; - } + return hashOf(this.toString(), 0); } override int opCmp(Object o) From 4bd12046be2073e695819e6ba528e195a3ec034d Mon Sep 17 00:00:00 2001 From: jsatellite Date: Fri, 17 Mar 2017 22:40:12 +0000 Subject: [PATCH 630/768] Added missing values to oaidl.d See bug https://issues.dlang.org/show_bug.cgi?id=16205 --- src/core/sys/windows/oaidl.d | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/sys/windows/oaidl.d b/src/core/sys/windows/oaidl.d index b629d79754..c8938ffa8e 100644 --- a/src/core/sys/windows/oaidl.d +++ b/src/core/sys/windows/oaidl.d @@ -42,6 +42,7 @@ enum PARAMFLAG_FLCID = 4; enum PARAMFLAG_FRETVAL = 8; enum PARAMFLAG_FOPT = 16; enum PARAMFLAG_FHASDEFAULT = 32; +enum PARAMFLAG_FHASCUSTDATA = 64; enum IDLFLAG_NONE = PARAMFLAG_NONE; enum IDLFLAG_FIN = PARAMFLAG_FIN; @@ -201,6 +202,7 @@ struct VARIANT { ubyte* pbVal; short* piVal; int* plVal; + LONGLONG* pllVal; float* pfltVal; double* pdblVal; VARIANT_BOOL* pboolVal; @@ -224,6 +226,7 @@ struct VARIANT { CHAR* pcVal; USHORT* puiVal; ULONG* pulVal; + ULONGLONG* pullVal; INT* pintVal; UINT* puintVal; struct { @@ -266,6 +269,7 @@ struct _wireVARIANT { BYTE* pbVal; SHORT* piVal; LONG* plVal; + LONGLONG* pllVal; FLOAT* pfltVal; DOUBLE* pdblVal; VARIANT_BOOL* pboolVal; @@ -288,6 +292,7 @@ struct _wireVARIANT { CHAR* pcVal; USHORT* puiVal; ULONG* pulVal; + ULONGLONG* pullVal; INT* pintVal; UINT* puintVal; } From 24bc7300a180cb192eb10e7c18af1c7d815f5030 Mon Sep 17 00:00:00 2001 From: Tolstokulakov Nikolay Date: Thu, 4 Feb 2016 13:37:27 +0600 Subject: [PATCH 631/768] netbsd patch: core/sys/netbsd --- src/core/sys/netbsd/dlfcn.d | 115 ++++ src/core/sys/netbsd/execinfo.d | 133 +++++ src/core/sys/netbsd/sys/elf.d | 10 + src/core/sys/netbsd/sys/elf32.d | 187 ++++++ src/core/sys/netbsd/sys/elf64.d | 193 ++++++ src/core/sys/netbsd/sys/elf_common.d | 858 +++++++++++++++++++++++++++ src/core/sys/netbsd/sys/event.d | 110 ++++ src/core/sys/netbsd/sys/link_elf.d | 71 +++ src/core/sys/netbsd/sys/mman.d | 125 ++++ src/core/sys/netbsd/time.d | 21 + 10 files changed, 1823 insertions(+) create mode 100644 src/core/sys/netbsd/dlfcn.d create mode 100644 src/core/sys/netbsd/execinfo.d create mode 100644 src/core/sys/netbsd/sys/elf.d create mode 100644 src/core/sys/netbsd/sys/elf32.d create mode 100644 src/core/sys/netbsd/sys/elf64.d create mode 100644 src/core/sys/netbsd/sys/elf_common.d create mode 100644 src/core/sys/netbsd/sys/event.d create mode 100644 src/core/sys/netbsd/sys/link_elf.d create mode 100644 src/core/sys/netbsd/sys/mman.d create mode 100644 src/core/sys/netbsd/time.d diff --git a/src/core/sys/netbsd/dlfcn.d b/src/core/sys/netbsd/dlfcn.d new file mode 100644 index 0000000000..5815cc201b --- /dev/null +++ b/src/core/sys/netbsd/dlfcn.d @@ -0,0 +1,115 @@ +/** + * D header file for NetBSD. + * + * Copyright: Copyright Martin Nowak 2012. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Martin Nowak + * + * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/include/dlfcn.h + */ +module core.sys.netbsd.dlfcn; + +public import core.sys.posix.dlfcn; + +version (NetBSD): +extern (C): +nothrow: +@nogc: + +enum __BSD_VISIBLE = true; + +/* + * Modes and flags for dlopen(). + */ +static assert(RTLD_LAZY == 1); +static assert(RTLD_NOW == 2); +static assert(RTLD_GLOBAL == 0x100); +static assert(RTLD_LOCAL == 0x200); +//enum RTLD_TRACE = 0x200; +enum RTLD_NODELETE = 0x01000; +enum RTLD_NOLOAD = 0x02000; + +/* + * Request arguments for dlinfo(). + */ +enum RTLD_DI_LINKMAP = 3; /* Obtain link map. */ +enum RTLD_DI_SERINFO = 5; /* Obtain search path info. */ +enum RTLD_DI_SERINFOSIZE = 6; /* ... query for required space. */ +enum RTLD_DI_ORIGIN = 7; /* Obtain object origin */ +enum RTLD_DI_MAX = RTLD_DI_ORIGIN; + +/* + * Special handle arguments for dlsym()/dlinfo(). + */ +enum RTLD_NEXT = cast(void *)-1; /* Search subsequent objects. */ +enum RTLD_DEFAULT = cast(void *)-2; /* Use default search algorithm. */ +enum RTLD_SELF = cast(void *)-3; /* Search the caller itself. */ + +static if (__BSD_VISIBLE) +{ + /* + * Structure filled in by dladdr(). + */ + struct Dl_info { + const(char) *dli_fname; /* Pathname of shared object. */ + void *dli_fbase; /* Base address of shared object. */ + const(char) *dli_sname; /* Name of nearest symbol. */ + void *dli_saddr; /* Address of nearest symbol. */ + }; + + /*- + * The actual type declared by this typedef is immaterial, provided that + * it is a function pointer. Its purpose is to provide a return type for + * dlfunc() which can be cast to a function pointer type without depending + * on behavior undefined by the C standard, which might trigger a compiler + * diagnostic. We intentionally declare a unique type signature to force + * a diagnostic should the application not cast the return value of dlfunc() + * appropriately. + */ + struct __dlfunc_arg { + int __dlfunc_dummy; + }; + + alias dlfunc_t = void function(__dlfunc_arg); + + /* + * Structures, returned by the RTLD_DI_SERINFO dlinfo() request. + */ + struct Dl_serpath { + char * dls_name; /* single search path entry */ + uint dls_flags; /* path information */ + }; + + struct Dl_serinfo { + size_t dls_size; /* total buffer size */ + uint dls_cnt; /* number of path entries */ + Dl_serpath[1] dls_serpath; /* there may be more than one */ + }; +} + +private template __externC(RT, P...) +{ + alias __externC = extern(C) RT function(P) nothrow @nogc; +} + +/* XSI functions first. */ +static assert(is(typeof(&dlclose) == __externC!(int, void*))); +static assert(is(typeof(&dlerror) == __externC!(char*))); +static assert(is(typeof(&dlopen) == __externC!(void*, const char*, int))); +static assert(is(typeof(&dlsym) == __externC!(void*, void*, const char*))); + +static if (__BSD_VISIBLE) +{ + //void* fdlopen(int, int); + int dladdr(const(void)*, Dl_info*); + //dlfunc_t dlfunc(void*, const(char)*); + //int dlinfo(void*, int, void*); + /+void dllockinit(void* _context, + void* function(void* _context) _lock_create, + void function(void* _lock) _rlock_acquire, + void function(void* _lock) _wlock_acquire, + void function(void* _lock) _lock_release, + void function(void* _lock) _lock_destroy, + void function(void* _context) _context_destroy);+/ + void* dlvsym(void*, const(char)*, const(char)*); +} diff --git a/src/core/sys/netbsd/execinfo.d b/src/core/sys/netbsd/execinfo.d new file mode 100644 index 0000000000..6287557a7e --- /dev/null +++ b/src/core/sys/netbsd/execinfo.d @@ -0,0 +1,133 @@ +/** + * NetBSD implementation of glibc's $(LINK2 http://www.gnu.org/software/libc/manual/html_node/Backtraces.html backtrace) facility. + * + * Copyright: Copyright Martin Nowak 2012. + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Authors: Martin Nowak + * Source: $(DRUNTIMESRC core/sys/netbsd/_execinfo.d) + */ +module core.sys.netbsd.execinfo; + +version (NetBSD): +extern (C): +nothrow: + +import core.sys.netbsd.dlfcn; + +// Use extern (D) so that these functions don't collide with libexecinfo. + +extern (D) int backtrace(void** buffer, int size) +{ + import core.thread : thread_stackBottom; + + void** p, pend=cast(void**)thread_stackBottom(); + version (D_InlineAsm_X86) + asm nothrow @trusted { mov p[EBP], EBP; } + else version (D_InlineAsm_X86_64) + asm nothrow @trusted { mov p[RBP], RBP; } + else + static assert(false, "Architecture not supported."); + + int i; + for (; i < size && p < pend; ++i) + { + buffer[i] = *(p + 1); + auto pnext = cast(void**)*p; + if (pnext <= p) break; + p = pnext; + } + return i; +} + + +extern (D) char** backtrace_symbols(const(void*)* buffer, int size) +{ + static void* realloc(void* p, size_t len) nothrow + { + static import cstdlib=core.stdc.stdlib; + auto res = cstdlib.realloc(p, len); + if (res is null) cstdlib.free(p); + return res; + } + + if (size <= 0) return null; + + size_t pos = size * (char*).sizeof; + char** p = cast(char**)realloc(null, pos); + if (p is null) return null; + + Dl_info info; + foreach (i, addr; buffer[0 .. size]) + { + if (dladdr(addr, &info) == 0) + (cast(ubyte*)&info)[0 .. info.sizeof] = 0; + fixupDLInfo(addr, info); + + immutable len = formatStackFrame(null, 0, addr, info); + assert(len > 0); + + p = cast(char**)realloc(p, pos + len); + if (p is null) return null; + + formatStackFrame(cast(char*)p + pos, len, addr, info) == len || assert(0); + + p[i] = cast(char*)pos; + pos += len; + } + foreach (i; 0 .. size) + { + pos = cast(size_t)p[i]; + p[i] = cast(char*)p + pos; + } + return p; +} + + +extern (D) void backtrace_symbols_fd(const(void*)* buffer, int size, int fd) +{ + import core.sys.posix.unistd : write; + import core.stdc.stdlib : alloca; + + if (size <= 0) return; + + Dl_info info; + foreach (i, addr; buffer[0 .. size]) + { + if (dladdr(addr, &info) == 0) + (cast(ubyte*)&info)[0 .. info.sizeof] = 0; + fixupDLInfo(addr, info); + + enum maxAlloca = 1024; + enum min = (size_t a, size_t b) => a <= b ? a : b; + immutable len = min(formatStackFrame(null, 0, addr, info), maxAlloca); + assert(len > 0); + + auto p = cast(char*)alloca(len); + if (p is null) return; + + formatStackFrame(p, len, addr, info) >= len || assert(0); + p[len - 1] = '\n'; + write(fd, p, len); + } +} + + +private void fixupDLInfo(const(void)* addr, ref Dl_info info) +{ + if (info.dli_fname is null) info.dli_fname = "???"; + if (info.dli_fbase is null) info.dli_fbase = null; + if (info.dli_sname is null) info.dli_sname = "???"; + if (info.dli_saddr is null) info.dli_saddr = cast(void*)addr; +} + + +private size_t formatStackFrame(char* p, size_t plen, const(void)* addr, const ref Dl_info info) +{ + import core.stdc.stdio : snprintf; + + immutable off = addr - info.dli_saddr; + immutable len = snprintf(p, plen, "%p <%s+%zd> at %s", + addr, info.dli_sname, off, info.dli_fname); + assert(len > 0); + return cast(size_t)len + 1; // + '\0' +} diff --git a/src/core/sys/netbsd/sys/elf.d b/src/core/sys/netbsd/sys/elf.d new file mode 100644 index 0000000000..f989ce98a4 --- /dev/null +++ b/src/core/sys/netbsd/sys/elf.d @@ -0,0 +1,10 @@ +/** + * D header file for NetBSD. + * + */ +module core.sys.netbsd.sys.elf; + +version (NetBSD): + +public import core.sys.netbsd.sys.elf32; +public import core.sys.netbsd.sys.elf64; diff --git a/src/core/sys/netbsd/sys/elf32.d b/src/core/sys/netbsd/sys/elf32.d new file mode 100644 index 0000000000..e30addbc03 --- /dev/null +++ b/src/core/sys/netbsd/sys/elf32.d @@ -0,0 +1,187 @@ +/** + * D header file for NetBSD. + * + * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/exec_elf.h + */ +module core.sys.netbsd.sys.elf32; + +version (NetBSD): +extern (C): +pure: +nothrow: + +import core.stdc.stdint; +public import core.sys.netbsd.sys.elf_common; + +alias uint16_t Elf32_Half; +alias uint32_t Elf32_Word; +alias int32_t Elf32_Sword; +alias uint64_t Elf32_Lword; +alias uint32_t Elf32_Addr; +alias uint32_t Elf32_Off; +alias Elf32_Word Elf32_Hashelt; +alias Elf32_Word Elf32_Size; +alias Elf32_Sword Elf32_Ssize; + +struct Elf32_Ehdr +{ + char[EI_NIDENT] e_ident; + Elf32_Half e_type; + Elf32_Half e_machine; + Elf32_Word e_version; + Elf32_Addr e_entry; + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf32_Word e_flags; + Elf32_Half e_ehsize; + Elf32_Half e_phentsize; + Elf32_Half e_phnum; + Elf32_Half e_shentsize; + Elf32_Half e_shnum; + Elf32_Half e_shstrndx; +} + +struct Elf32_Shdr +{ + Elf32_Word sh_name; + Elf32_Word sh_type; + Elf32_Word sh_flags; + Elf32_Addr sh_addr; + Elf32_Off sh_offset; + Elf32_Word sh_size; + Elf32_Word sh_link; + Elf32_Word sh_info; + Elf32_Word sh_addralign; + Elf32_Word sh_entsize; +} + +struct Elf32_Phdr +{ + Elf32_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf32_Word p_filesz; + Elf32_Word p_memsz; + Elf32_Word p_flags; + Elf32_Word p_align; +} + +struct Elf32_Dyn +{ + Elf32_Sword d_tag; + union _d_un + { + Elf32_Word d_val; + Elf32_Addr d_ptr; + } _d_un d_un; +} + +struct Elf32_Rel +{ + Elf32_Addr r_offset; + Elf32_Word r_info; +} + +struct Elf32_Rela +{ + Elf32_Addr r_offset; + Elf32_Word r_info; + Elf32_Sword r_addend; +} + +extern (D) +{ + auto ELF32_R_SYM(V)(V val) { return val >> 8; } + auto ELF32_R_TYPE(V)(V val) { return val & 0xff; } + auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); } +} + +alias Elf_Note Elf32_Nhdr; + +struct Elf32_Move +{ + Elf32_Lword m_value; + Elf32_Word m_info; + Elf32_Word m_poffset; + Elf32_Half m_repeat; + Elf32_Half m_stride; +} + +extern (D) +{ + auto ELF32_M_SYM(I)(I info) { return info >> 8; } + auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; } + auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubye)size; } +} + +struct Elf32_Cap +{ + Elf32_Word c_tag; + union _c_un + { + Elf32_Word c_val; + Elf32_Addr c_ptr; + } _c_un c_un; +} + +struct Elf32_Sym +{ + Elf32_Word st_name; + Elf32_Addr st_value; + Elf32_Word st_size; + ubyte st_info; + ubyte st_other; + Elf32_Half st_shndx; +} + +extern (D) +{ + auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; } + auto ELF32_ST_TYPE(T)(T val) { return val & 0xf; } + auto ELF32_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); } + auto ELF32_ST_VISIBILITY(O)(O o) { return o & 0x03; } +} + +struct Elf32_Verdef +{ + Elf32_Half vd_version; + Elf32_Half vd_flags; + Elf32_Half vd_ndx; + Elf32_Half vd_cnt; + Elf32_Word vd_hash; + Elf32_Word vd_aux; + Elf32_Word vd_next; +} + +struct Elf32_Verdaux +{ + Elf32_Word vda_name; + Elf32_Word vda_next; +} + +struct Elf32_Verneed +{ + Elf32_Half vn_version; + Elf32_Half vn_cnt; + Elf32_Word vn_file; + Elf32_Word vn_aux; + Elf32_Word vn_next; +} + +struct Elf32_Vernaux +{ + Elf32_Word vna_hash; + Elf32_Half vna_flags; + Elf32_Half vna_other; + Elf32_Word vna_name; + Elf32_Word vna_next; +} + +alias Elf32_Half Elf32_Versym; + +struct Elf32_Syminfo +{ + Elf32_Half si_boundto; + Elf32_Half si_flags; +} diff --git a/src/core/sys/netbsd/sys/elf64.d b/src/core/sys/netbsd/sys/elf64.d new file mode 100644 index 0000000000..c1583f2f89 --- /dev/null +++ b/src/core/sys/netbsd/sys/elf64.d @@ -0,0 +1,193 @@ +/** + * D header file for NetBSD. + * + * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/exec_elf.h + */ +module core.sys.netbsd.sys.elf64; + +version (NetBSD): +extern (C): +pure: +nothrow: + +import core.stdc.stdint; +public import core.sys.netbsd.sys.elf_common; + +alias uint16_t Elf64_Half; +alias uint32_t Elf64_Word; +alias int32_t Elf64_Sword; +alias uint64_t Elf64_Lword; +alias uint64_t Elf64_Xword; +alias int64_t Elf64_Sxword; +alias uint64_t Elf64_Addr; +alias uint64_t Elf64_Off; +alias Elf64_Word Elf64_Hashelt; +alias Elf64_Xword Elf64_Size; +alias Elf64_Sxword Elf64_Ssize; + +struct Elf64_Ehdr +{ + char[EI_NIDENT] e_ident; + Elf64_Half e_type; + Elf64_Half e_machine; + Elf64_Word e_version; + Elf64_Addr e_entry; + Elf64_Off e_phoff; + Elf64_Off e_shoff; + Elf64_Word e_flags; + Elf64_Half e_ehsize; + Elf64_Half e_phentsize; + Elf64_Half e_phnum; + Elf64_Half e_shentsize; + Elf64_Half e_shnum; + Elf64_Half e_shstrndx; +} + +struct Elf64_Shdr +{ + Elf64_Word sh_name; + Elf64_Word sh_type; + Elf64_Xword sh_flags; + Elf64_Addr sh_addr; + Elf64_Off sh_offset; + Elf64_Xword sh_size; + Elf64_Word sh_link; + Elf64_Word sh_info; + Elf64_Xword sh_addralign; + Elf64_Xword sh_entsize; +} + +struct Elf64_Phdr +{ + Elf64_Word p_type; + Elf64_Word p_flags; + Elf64_Off p_offset; + Elf64_Addr p_vaddr; + Elf64_Addr p_paddr; + Elf64_Xword p_filesz; + Elf64_Xword p_memsz; + Elf64_Xword p_align; +} + +struct Elf64_Dyn +{ + Elf64_Sxword d_tag; + union _d_un + { + Elf64_Xword d_val; + Elf64_Addr d_ptr; + } _d_un d_un; +} + +struct Elf64_Rel +{ + Elf64_Addr r_offset; + Elf64_Xword r_info; +} + +struct Elf64_Rela +{ + Elf64_Addr r_offset; + Elf64_Xword r_info; + Elf64_Sxword r_addend; +} + +extern (D) +{ + auto ELF64_R_SYM(I)(I i) { return i >> 32; } + auto ELF64_R_TYPE(I)(I i) { return i & 0xffffffff; } + auto ELF64_R_INFO(S, T)(S sym, T type) { return (sym << 32) + (type & 0xffffffff); } + + auto ELF64_R_TYPE_DATA(I)(I i) { return (cast(Elf64_Xword) i << 32) >> 40; } + auto ELF64_R_TYPE_ID(I)(I i) { return (cast(Elf64_Xword) i << 56 ) >> 56; } + auto ELF64_R_TYPE_INFO(D, T)(D d, T t) { return cast(Elf64_Xword) d << 8 + cast(Elf64_Xword) t; } +} + +alias Elf_Note Elf64_Nhdr; + +struct Elf64_Move +{ + Elf64_Lword m_value; + Elf64_Xword m_info; + Elf64_Xword m_poffset; + Elf64_Half m_repeat; + Elf64_Half m_stride; +} + +extern (D) +{ + auto ELF64_M_SYM(I)(I info) { return info >> 8; } + auto ELF64_M_SIZE(I)(I info) { return cast(ubyte)info; } + auto ELF64_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubye)size; } +} + +struct Elf64_Cap +{ + Elf64_Xword c_tag; + union _c_un + { + Elf64_Xword c_val; + Elf64_Addr c_ptr; + } _c_un c_un; +} + +struct Elf64_Sym +{ + Elf64_Word st_name; + ubyte st_info; + ubyte st_other; + Elf64_Half st_shndx; + Elf64_Addr st_value; + Elf64_Xword st_size; +} + +extern (D) +{ + auto ELF64_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; } + auto ELF64_ST_TYPE(T)(T val) { return val & 0xf; } + auto ELF64_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); } + auto ELF64_ST_VISIBILITY(O)(O o) { return o & 0x03; } +} + +struct Elf64_Verdef +{ + Elf64_Half vd_version; + Elf64_Half vd_flags; + Elf64_Half vd_ndx; + Elf64_Half vd_cnt; + Elf64_Word vd_hash; + Elf64_Word vd_aux; + Elf64_Word vd_next; +} + +struct Elf64_Verdaux +{ + Elf64_Word vda_name; + Elf64_Word vda_next; +} + +struct Elf64_Verneed +{ + Elf64_Half vn_version; + Elf64_Half vn_cnt; + Elf64_Word vn_file; + Elf64_Word vn_aux; + Elf64_Word vn_next; +} + +struct Elf64_Vernaux +{ + Elf64_Word vna_hash; + Elf64_Half vna_flags; + Elf64_Half vna_other; + Elf64_Word vna_name; + Elf64_Word vna_next; +} + +alias Elf64_Half Elf64_Versym; + +struct Elf64_Syminfo +{ + Elf64_Half si_boundto; + Elf64_Half si_flags; +} diff --git a/src/core/sys/netbsd/sys/elf_common.d b/src/core/sys/netbsd/sys/elf_common.d new file mode 100644 index 0000000000..3bfb48c44b --- /dev/null +++ b/src/core/sys/netbsd/sys/elf_common.d @@ -0,0 +1,858 @@ +/** + * D header file for NetBSD. + * + * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/exec_elf.h + */ +module core.sys.netbsd.sys.elf_common; + +version (NetBSD): +extern (C): +pure: +nothrow: + +import core.stdc.stdint; + +struct Elf_Note +{ + uint32_t n_namesz; + uint32_t n_descsz; + uint32_t n_type; +} + +struct Elf_GNU_Hash_Header +{ + uint32_t gh_nbuckets; + uint32_t gh_symndx; + uint32_t gh_maskwords; + uint32_t gh_shift2; +} + +enum EI_MAG0 = 0; +enum EI_MAG1 = 1; +enum EI_MAG2 = 2; +enum EI_MAG3 = 3; +enum EI_CLASS = 4; +enum EI_DATA = 5; +enum EI_VERSION = 6; +enum EI_OSABI = 7; +enum EI_ABIVERSION = 8; +enum OLD_EI_BRAND = 8; +enum EI_PAD = 9; +enum EI_NIDENT = 16; + +enum ELFMAG0 = 0x7f; +enum ELFMAG1 = 'E'; +enum ELFMAG2 = 'L'; +enum ELFMAG3 = 'F'; +enum ELFMAG = "\177ELF"; +enum SELFMAG = 4; + +enum EV_NONE = 0; +enum EV_CURRENT = 1; + +enum ELFCLASSNONE = 0; +enum ELFCLASS32 = 1; +enum ELFCLASS64 = 2; + +enum ELFDATANONE = 0; +enum ELFDATA2LSB = 1; +enum ELFDATA2MSB = 2; + +enum ELFOSABI_NONE = 0; +enum ELFOSABI_SYSV = 0; +enum ELFOSABI_HPUX = 1; +enum ELFOSABI_NETBSD = 2; +enum ELFOSABI_LINUX = 3; +enum ELFOSABI_HURD = 4; +enum ELFOSABI_86OPEN = 5; +enum ELFOSABI_SOLARIS = 6; +enum ELFOSABI_AIX = 7; +enum ELFOSABI_MONTEREY = 7; +enum ELFOSABI_IRIX = 8; +enum ELFOSABI_FREEBSD = 9; +enum ELFOSABI_TRU64 = 10; +enum ELFOSABI_MODESTO = 11; +enum ELFOSABI_OPENBSD = 12; +enum ELFOSABI_OPENVMS = 13; +enum ELFOSABI_NSK = 14; +enum ELFOSABI_AROS = 15; +enum ELFOSABI_ARM = 97; +enum ELFOSABI_STANDALONE = 255; + +extern (D) +{ + auto IS_ELF(T)(T ehdr) { return ehdr.e_ident[EI_MAG0] == ELFMAG0 && + ehdr.e_ident[EI_MAG1] == ELFMAG1 && + ehdr.e_ident[EI_MAG2] == ELFMAG2 && + ehdr.e_ident[EI_MAG3] == ELFMAG3; } +} + +enum ET_NONE = 0; +enum ET_REL = 1; +enum ET_EXEC = 2; +enum ET_DYN = 3; +enum ET_CORE = 4; +enum ET_LOOS = 0xfe00; +enum ET_HIOS = 0xfeff; +enum ET_LOPROC = 0xff00; +enum ET_HIPROC = 0xffff; + +enum EM_NONE = 0; +enum EM_M32 = 1; +enum EM_SPARC = 2; +enum EM_386 = 3; +enum EM_68K = 4; +enum EM_88K = 5; +enum EM_860 = 7; +enum EM_MIPS = 8; +enum EM_S370 = 9; +enum EM_MIPS_RS3_LE = 10; +enum EM_PARISC = 15; +enum EM_VPP500 = 17; +enum EM_SPARC32PLUS = 18; +enum EM_960 = 19; +enum EM_PPC = 20; +enum EM_PPC64 = 21; +enum EM_S390 = 22; +enum EM_V800 = 36; +enum EM_FR20 = 37; +enum EM_RH32 = 38; +enum EM_RCE = 39; +enum EM_ARM = 40; +enum EM_SH = 42; +enum EM_SPARCV9 = 43; +enum EM_TRICORE = 44; +enum EM_ARC = 45; +enum EM_H8_300 = 46; +enum EM_H8_300H = 47; +enum EM_H8S = 48; +enum EM_H8_500 = 49; +enum EM_IA_64 = 50; +enum EM_MIPS_X = 51; +enum EM_COLDFIRE = 52; +enum EM_68HC12 = 53; +enum EM_MMA = 54; +enum EM_PCP = 55; +enum EM_NCPU = 56; +enum EM_NDR1 = 57; +enum EM_STARCORE = 58; +enum EM_ME16 = 59; +enum EM_ST100 = 60; +enum EM_TINYJ = 61; +enum EM_X86_64 = 62; +enum EM_AMD64 = 62; +enum EM_PDSP = 63; +enum EM_FX66 = 66; +enum EM_ST9PLUS = 67; +enum EM_ST7 = 68; +enum EM_68HC16 = 69; +enum EM_68HC11 = 70; +enum EM_68HC08 = 71; +enum EM_68HC05 = 72; +enum EM_SVX = 73; +enum EM_ST19 = 74; +enum EM_VAX = 75; +enum EM_CRIS = 76; +enum EM_JAVELIN = 77; +enum EM_FIREPATH = 78; +enum EM_ZSP = 79; +enum EM_MMIX = 80; +enum EM_HUANY = 81; +enum EM_PRISM = 82; +enum EM_AVR = 83; +enum EM_FR30 = 84; +enum EM_D10V = 85; +enum EM_D30V = 86; +enum EM_V850 = 87; +enum EM_M32R = 88; +enum EM_MN10300 = 89; +enum EM_MN10200 = 90; +enum EM_PJ = 91; +enum EM_OPENRISC = 92; +enum EM_ARC_A5 = 93; +enum EM_XTENSA = 94; +enum EM_VIDEOCORE = 95; +enum EM_TMM_GPP = 96; +enum EM_NS32K = 97; +enum EM_TPC = 98; +enum EM_SNP1K = 99; +enum EM_ST200 = 100; +enum EM_IP2K = 101; +enum EM_MAX = 102; +enum EM_CR = 103; +enum EM_F2MC16 = 104; +enum EM_MSP430 = 105; +enum EM_BLACKFIN = 106; +enum EM_SE_C33 = 107; +enum EM_SEP = 108; +enum EM_ARCA = 109; +enum EM_UNICORE = 110; +enum EM_AARCH64 = 183; /* AArch64 64-bit ARM microprocessor */ + +/* Unofficial machine types follow */ +enum EM_AVR32 = 6317; /* used by NetBSD/avr32 */ +enum EM_ALPHA_EXP = 36902; /* used by NetBSD/alpha; obsolete */ + +enum EM_486 = 6; +enum EM_MIPS_RS4_BE = 10; +enum EM_ALPHA_STD = 41; +enum EM_ALPHA = 0x9026; + +enum SHN_UNDEF = 0; +enum SHN_LORESERVE = 0xff00; +enum SHN_LOPROC = 0xff00; +enum SHN_HIPROC = 0xff1f; +enum SHN_LOOS = 0xff20; +enum SHN_HIOS = 0xff3f; +enum SHN_ABS = 0xfff1; +enum SHN_COMMON = 0xfff2; +enum SHN_XINDEX = 0xffff; +enum SHN_HIRESERVE = 0xffff; + +enum SHT_NULL = 0; +enum SHT_PROGBITS = 1; +enum SHT_SYMTAB = 2; +enum SHT_STRTAB = 3; +enum SHT_RELA = 4; +enum SHT_HASH = 5; +enum SHT_DYNAMIC = 6; +enum SHT_NOTE = 7; +enum SHT_NOBITS = 8; +enum SHT_REL = 9; +enum SHT_SHLIB = 10; +enum SHT_DYNSYM = 11; +enum SHT_INIT_ARRAY = 14; +enum SHT_FINI_ARRAY = 15; +enum SHT_PREINIT_ARRAY = 16; +enum SHT_GROUP = 17; +enum SHT_SYMTAB_SHNDX = 18; +enum SHT_LOOS = 0x60000000; +enum SHT_LOSUNW = 0x6ffffff4; +enum SHT_SUNW_dof = 0x6ffffff4; +enum SHT_SUNW_cap = 0x6ffffff5; +enum SHT_SUNW_SIGNATURE = 0x6ffffff6; +enum SHT_GNU_HASH = 0x6ffffff6; +enum SHT_SUNW_ANNOTATE = 0x6ffffff7; +enum SHT_SUNW_DEBUGSTR = 0x6ffffff8; +enum SHT_SUNW_DEBUG = 0x6ffffff9; +enum SHT_SUNW_move = 0x6ffffffa; +enum SHT_SUNW_COMDAT = 0x6ffffffb; +enum SHT_SUNW_syminfo = 0x6ffffffc; +enum SHT_SUNW_verdef = 0x6ffffffd; +enum SHT_GNU_verdef = 0x6ffffffd; +enum SHT_SUNW_verneed = 0x6ffffffe; +enum SHT_GNU_verneed = 0x6ffffffe; +enum SHT_SUNW_versym = 0x6fffffff; +enum SHT_GNU_versym = 0x6fffffff; +enum SHT_HISUNW = 0x6fffffff; +enum SHT_HIOS = 0x6fffffff; +enum SHT_LOPROC = 0x70000000; +enum SHT_AMD64_UNWIND = 0x70000001; +enum SHT_ARM_EXIDX = 0x70000001; +enum SHT_ARM_PREEMPTMAP = 0x70000002; +enum SHT_ARM_ATTRIBUTES = 0x70000003; +enum SHT_ARM_DEBUGOVERLAY = 0x70000004; +enum SHT_ARM_OVERLAYSECTION = 0x70000005; +enum SHT_MIPS_REGINFO = 0x70000006; +enum SHT_MIPS_OPTIONS = 0x7000000d; +enum SHT_MIPS_DWARF = 0x7000001e; +enum SHT_HIPROC = 0x7fffffff; +enum SHT_LOUSER = 0x80000000; +enum SHT_HIUSER = 0x8fffffff; + +enum SHF_WRITE = (1 << 0); +enum SHF_ALLOC = (1 << 1); +enum SHF_EXECINSTR = (1 << 2); +enum SHF_MERGE = (1 << 4); +enum SHF_STRINGS = (1 << 5); +enum SHF_INFO_LINK = (1 << 6); +enum SHF_LINK_ORDER = (1 << 7); +enum SHF_OS_NONCONFORMING = (1 << 8); +enum SHF_GROUP = (1 << 9); +enum SHF_TLS = (1 << 10); +enum SHF_MASKOS = 0x0ff00000; +enum SHF_MASKPROC = 0xf0000000; + +enum PT_NULL = 0; +enum PT_LOAD = 1; +enum PT_DYNAMIC = 2; +enum PT_INTERP = 3; +enum PT_NOTE = 4; +enum PT_SHLIB = 5; +enum PT_PHDR = 6; +enum PT_TLS = 7; +enum PT_LOOS = 0x60000000; +enum PT_SUNW_UNWIND = 0x6464e550; +enum PT_GNU_EH_FRAME = 0x6474e550; +enum PT_GNU_STACK = 0x6474e551; +enum PT_GNU_RELRO = 0x6474e552; +enum PT_LOSUNW = 0x6ffffffa; +enum PT_SUNWBSS = 0x6ffffffa; +enum PT_SUNWSTACK = 0x6ffffffb; +enum PT_SUNWDTRACE = 0x6ffffffc; +enum PT_SUNWCAP = 0x6ffffffd; +enum PT_HISUNW = 0x6fffffff; +enum PT_HIOS = 0x6fffffff; +enum PT_LOPROC = 0x70000000; +enum PT_HIPROC = 0x7fffffff; + +enum PF_X = (1 << 0); +enum PF_W = (1 << 1); +enum PF_R = (1 << 2); +enum PF_MASKOS = 0x0ff00000; +enum PF_MASKPROC = 0xf0000000; + +enum PN_XNUM = 0xffff; + +enum DT_NULL = 0; +enum DT_NEEDED = 1; +enum DT_PLTRELSZ = 2; +enum DT_PLTGOT = 3; +enum DT_HASH = 4; +enum DT_STRTAB = 5; +enum DT_SYMTAB = 6; +enum DT_RELA = 7; +enum DT_RELASZ = 8; +enum DT_RELAENT = 9; +enum DT_STRSZ = 10; +enum DT_SYMENT = 11; +enum DT_INIT = 12; +enum DT_FINI = 13; +enum DT_SONAME = 14; +enum DT_RPATH = 15; +enum DT_SYMBOLIC = 16; +enum DT_REL = 17; +enum DT_RELSZ = 18; +enum DT_RELENT = 19; +enum DT_PLTREL = 20; +enum DT_DEBUG = 21; +enum DT_TEXTREL = 22; +enum DT_JMPREL = 23; +enum DT_BIND_NOW = 24; +enum DT_INIT_ARRAY = 25; +enum DT_FINI_ARRAY = 26; +enum DT_INIT_ARRAYSZ = 27; +enum DT_FINI_ARRAYSZ = 28; +enum DT_RUNPATH = 29; +enum DT_FLAGS = 30; +enum DT_ENCODING = 32; +enum DT_PREINIT_ARRAY = 32; +enum DT_PREINIT_ARRAYSZ = 33; +enum DT_MAXPOSTAGS = 34; +enum DT_LOOS = 0x6000000d; +enum DT_SUNW_AUXILIARY = 0x6000000d; +enum DT_SUNW_RTLDINF = 0x6000000e; +enum DT_SUNW_FILTER = 0x6000000f; +enum DT_SUNW_CAP = 0x60000010; +enum DT_HIOS = 0x6ffff000; +enum DT_VALRNGLO = 0x6ffffd00; +enum DT_CHECKSUM = 0x6ffffdf8; +enum DT_PLTPADSZ = 0x6ffffdf9; +enum DT_MOVEENT = 0x6ffffdfa; +enum DT_MOVESZ = 0x6ffffdfb; +enum DT_FEATURE_1 = 0x6ffffdfc; +enum DT_POSFLAG_1 = 0x6ffffdfd; +enum DT_SYMINSZ = 0x6ffffdfe; +enum DT_SYMINENT = 0x6ffffdff; +enum DT_VALRNGHI = 0x6ffffdff; +enum DT_ADDRRNGLO = 0x6ffffe00; +enum DT_GNU_HASH = 0x6ffffef5; +enum DT_CONFIG = 0x6ffffefa; +enum DT_DEPAUDIT = 0x6ffffefb; +enum DT_AUDIT = 0x6ffffefc; +enum DT_PLTPAD = 0x6ffffefd; +enum DT_MOVETAB = 0x6ffffefe; +enum DT_SYMINFO = 0x6ffffeff; +enum DT_ADDRRNGHI = 0x6ffffeff; +enum DT_VERSYM = 0x6ffffff0; +enum DT_RELACOUNT = 0x6ffffff9; +enum DT_RELCOUNT = 0x6ffffffa; +enum DT_FLAGS_1 = 0x6ffffffb; +enum DT_VERDEF = 0x6ffffffc; +enum DT_VERDEFNUM = 0x6ffffffd; +enum DT_VERNEED = 0x6ffffffe; +enum DT_VERNEEDNUM = 0x6fffffff; +enum DT_LOPROC = 0x70000000; +enum DT_DEPRECATED_SPARC_REGISTER = 0x7000001; +enum DT_AUXILIARY = 0x7ffffffd; +enum DT_USED = 0x7ffffffe; +enum DT_FILTER = 0x7fffffff; +enum DT_HIPROC = 0x7fffffff; + +enum DF_ORIGIN = 0x00000001; +enum DF_SYMBOLIC = 0x00000002; +enum DF_TEXTREL = 0x00000004; +enum DF_BIND_NOW = 0x00000008; +enum DF_STATIC_TLS = 0x00000010; + +enum DF_1_BIND_NOW = 0x00000001; +enum DF_1_GLOBAL = 0x00000002; +enum DF_1_NODELETE = 0x00000008; +enum DF_1_LOADFLTR = 0x00000010; +enum DF_1_NOOPEN = 0x00000040; +enum DF_1_NODEFLIB = 0x00000800; + +enum NT_PRSTATUS = 1; +enum NT_FPREGSET = 2; +enum NT_PRPSINFO = 3; +enum NT_THRMISC = 7; +enum NT_PROCSTAT_PROC = 8; +enum NT_PROCSTAT_FILES = 9; +enum NT_PROCSTAT_VMMAP = 10; +enum NT_PROCSTAT_GROUPS = 11; +enum NT_PROCSTAT_UMASK = 12; +enum NT_PROCSTAT_RLIMIT = 13; +enum NT_PROCSTAT_OSREL = 14; +enum NT_PROCSTAT_PSSTRINGS = 15; +enum NT_PROCSTAT_AUXV = 16; + +enum STB_LOCAL = 0; +enum STB_GLOBAL = 1; +enum STB_WEAK = 2; +enum STB_NUM = 3; +enum STB_LOOS = 10; +enum STB_HIOS = 12; +enum STB_LOPROC = 13; +enum STB_HIPROC = 15; + +enum STT_NOTYPE = 0; +enum STT_OBJECT = 1; +enum STT_FUNC = 2; +enum STT_SECTION = 3; +enum STT_FILE = 4; +enum STT_COMMON = 5; +enum STT_TLS = 6; +enum STT_NUM = 7; +enum STT_LOOS = 10; +enum STT_GNU_IFUNC = 10; +enum STT_HIOS = 12; +enum STT_LOPROC = 13; +enum STT_HIPROC = 15; + +enum STV_DEFAULT = 0; +enum STV_INTERNAL = 1; +enum STV_HIDDEN = 2; +enum STV_PROTECTED = 3; +enum STV_EXPORTED = 4; +enum STV_SINGLETON = 5; +enum STV_ELIMINATE = 6; + +enum STN_UNDEF = 0; + +enum VER_DEF_CURRENT = 1; +alias VER_NDX VER_DEF_IDX; + +enum VER_FLG_BASE = 0x1; +enum VER_FLG_WEAK = 0x2; + +enum VER_NEED_CURRENT = 1; +enum VER_NEED_WEAK = 32768; +enum VER_NEED_HIDDEN = VER_NDX_HIDDEN; +alias VER_NDX VER_NEED_IDX; + +enum VER_NDX_LOCAL = 0; +enum VER_NDX_GLOBAL = 1; +enum VER_NDX_GIVEN = 2; + +enum VER_NDX_HIDDEN = 32768; +extern (D) +{ + auto VER_NDX(V)(V v) { return v & ~(1u << 15); } +} + +enum CA_SUNW_NULL = 0; +enum CA_SUNW_HW_1 = 1; +enum CA_SUNW_SF_1 = 2; + +enum SYMINFO_FLG_DIRECT = 0x0001; +enum SYMINFO_FLG_PASSTHRU = 0x0002; +enum SYMINFO_FLG_COPY = 0x0004; +enum SYMINFO_FLG_LAZYLOAD = 0x0008; +enum SYMINFO_FLG_DIRECTBIND = 0x0010; +enum SYMINFO_FLG_NOEXTDIRECT = 0x0020; +enum SYMINFO_FLG_FILTER = 0x0002; +enum SYMINFO_FLG_AUXILIARY = 0x0040; + +enum SYMINFO_BT_SELF = 0xffff; +enum SYMINFO_BT_PARENT = 0xfffe; +enum SYMINFO_BT_NONE = 0xfffd; +enum SYMINFO_BT_EXTERN = 0xfffc; +enum SYMINFO_BT_LOWRESERVE = 0xff00; + +enum SYMINFO_NONE = 0; +enum SYMINFO_CURRENT = 1; +enum SYMINFO_NUM = 2; + +enum R_386_NONE = 0; +enum R_386_32 = 1; +enum R_386_PC32 = 2; +enum R_386_GOT32 = 3; +enum R_386_PLT32 = 4; +enum R_386_COPY = 5; +enum R_386_GLOB_DAT = 6; +enum R_386_JMP_SLOT = 7; +enum R_386_RELATIVE = 8; +enum R_386_GOTOFF = 9; +enum R_386_GOTPC = 10; +enum R_386_TLS_TPOFF = 14; +enum R_386_TLS_IE = 15; +enum R_386_TLS_GOTIE = 16; +enum R_386_TLS_LE = 17; +enum R_386_TLS_GD = 18; +enum R_386_TLS_LDM = 19; +enum R_386_TLS_GD_32 = 24; +enum R_386_TLS_GD_PUSH = 25; +enum R_386_TLS_GD_CALL = 26; +enum R_386_TLS_GD_POP = 27; +enum R_386_TLS_LDM_32 = 28; +enum R_386_TLS_LDM_PUSH = 29; +enum R_386_TLS_LDM_CALL = 30; +enum R_386_TLS_LDM_POP = 31; +enum R_386_TLS_LDO_32 = 32; +enum R_386_TLS_IE_32 = 33; +enum R_386_TLS_LE_32 = 34; +enum R_386_TLS_DTPMOD32 = 35; +enum R_386_TLS_DTPOFF32 = 36; +enum R_386_TLS_TPOFF32 = 37; +enum R_386_IRELATIVE = 42; + +enum R_ARM_NONE = 0; +enum R_ARM_PC24 = 1; +enum R_ARM_ABS32 = 2; +enum R_ARM_REL32 = 3; +enum R_ARM_PC13 = 4; +enum R_ARM_ABS16 = 5; +enum R_ARM_ABS12 = 6; +enum R_ARM_THM_ABS5 = 7; +enum R_ARM_ABS8 = 8; +enum R_ARM_SBREL32 = 9; +enum R_ARM_THM_PC22 = 10; +enum R_ARM_THM_PC8 = 11; +enum R_ARM_AMP_VCALL9 = 12; +enum R_ARM_SWI24 = 13; +enum R_ARM_THM_SWI8 = 14; +enum R_ARM_XPC25 = 15; +enum R_ARM_THM_XPC22 = 16; +enum R_ARM_TLS_DTPMOD32 = 17; +enum R_ARM_TLS_DTPOFF32 = 18; +enum R_ARM_TLS_TPOFF32 = 19; +enum R_ARM_COPY = 20; +enum R_ARM_GLOB_DAT = 21; +enum R_ARM_JUMP_SLOT = 22; +enum R_ARM_RELATIVE = 23; +enum R_ARM_GOTOFF = 24; +enum R_ARM_GOTPC = 25; +enum R_ARM_GOT32 = 26; +enum R_ARM_PLT32 = 27; +enum R_ARM_GNU_VTENTRY = 100; +enum R_ARM_GNU_VTINHERIT = 101; +enum R_ARM_RSBREL32 = 250; +enum R_ARM_THM_RPC22 = 251; +enum R_ARM_RREL32 = 252; +enum R_ARM_RABS32 = 253; +enum R_ARM_RPC24 = 254; +enum R_ARM_RBASE = 255; + +enum R_IA_64_NONE = 0; +enum R_IA_64_IMM14 = 0x21; +enum R_IA_64_IMM22 = 0x22; +enum R_IA_64_IMM64 = 0x23; +enum R_IA_64_DIR32MSB = 0x24; +enum R_IA_64_DIR32LSB = 0x25; +enum R_IA_64_DIR64MSB = 0x26; +enum R_IA_64_DIR64LSB = 0x27; +enum R_IA_64_GPREL22 = 0x2a; +enum R_IA_64_GPREL64I = 0x2b; +enum R_IA_64_GPREL32MSB = 0x2c; +enum R_IA_64_GPREL32LSB = 0x2d; +enum R_IA_64_GPREL64MSB = 0x2e; +enum R_IA_64_GPREL64LSB = 0x2f; +enum R_IA_64_LTOFF22 = 0x32; +enum R_IA_64_LTOFF64I = 0x33; +enum R_IA_64_PLTOFF22 = 0x3a; +enum R_IA_64_PLTOFF64I = 0x3b; +enum R_IA_64_PLTOFF64MSB = 0x3e; +enum R_IA_64_PLTOFF64LSB = 0x3f; +enum R_IA_64_FPTR64I = 0x43; +enum R_IA_64_FPTR32MSB = 0x44; +enum R_IA_64_FPTR32LSB = 0x45; +enum R_IA_64_FPTR64MSB = 0x46; +enum R_IA_64_FPTR64LSB = 0x47; +enum R_IA_64_PCREL60B = 0x48; +enum R_IA_64_PCREL21B = 0x49; +enum R_IA_64_PCREL21M = 0x4a; +enum R_IA_64_PCREL21F = 0x4b; +enum R_IA_64_PCREL32MSB = 0x4c; +enum R_IA_64_PCREL32LSB = 0x4d; +enum R_IA_64_PCREL64MSB = 0x4e; +enum R_IA_64_PCREL64LSB = 0x4f; +enum R_IA_64_LTOFF_FPTR22 = 0x52; +enum R_IA_64_LTOFF_FPTR64I = 0x53; +enum R_IA_64_LTOFF_FPTR32MSB = 0x54; +enum R_IA_64_LTOFF_FPTR32LSB = 0x55; +enum R_IA_64_LTOFF_FPTR64MSB = 0x56; +enum R_IA_64_LTOFF_FPTR64LSB = 0x57; +enum R_IA_64_SEGREL32MSB = 0x5c; +enum R_IA_64_SEGREL32LSB = 0x5d; +enum R_IA_64_SEGREL64MSB = 0x5e; +enum R_IA_64_SEGREL64LSB = 0x5f; +enum R_IA_64_SECREL32MSB = 0x64; +enum R_IA_64_SECREL32LSB = 0x65; +enum R_IA_64_SECREL64MSB = 0x66; +enum R_IA_64_SECREL64LSB = 0x67; +enum R_IA_64_REL32MSB = 0x6c; +enum R_IA_64_REL32LSB = 0x6d; +enum R_IA_64_REL64MSB = 0x6e; +enum R_IA_64_REL64LSB = 0x6f; +enum R_IA_64_LTV32MSB = 0x74; +enum R_IA_64_LTV32LSB = 0x75; +enum R_IA_64_LTV64MSB = 0x76; +enum R_IA_64_LTV64LSB = 0x77; +enum R_IA_64_PCREL21BI = 0x79; +enum R_IA_64_PCREL22 = 0x7a; +enum R_IA_64_PCREL64I = 0x7b; +enum R_IA_64_IPLTMSB = 0x80; +enum R_IA_64_IPLTLSB = 0x81; +enum R_IA_64_SUB = 0x85; +enum R_IA_64_LTOFF22X = 0x86; +enum R_IA_64_LDXMOV = 0x87; +enum R_IA_64_TPREL14 = 0x91; +enum R_IA_64_TPREL22 = 0x92; +enum R_IA_64_TPREL64I = 0x93; +enum R_IA_64_TPREL64MSB = 0x96; +enum R_IA_64_TPREL64LSB = 0x97; +enum R_IA_64_LTOFF_TPREL22 = 0x9a; +enum R_IA_64_DTPMOD64MSB = 0xa6; +enum R_IA_64_DTPMOD64LSB = 0xa7; +enum R_IA_64_LTOFF_DTPMOD22 = 0xaa; +enum R_IA_64_DTPREL14 = 0xb1; +enum R_IA_64_DTPREL22 = 0xb2; +enum R_IA_64_DTPREL64I = 0xb3; +enum R_IA_64_DTPREL32MSB = 0xb4; +enum R_IA_64_DTPREL32LSB = 0xb5; +enum R_IA_64_DTPREL64MSB = 0xb6; +enum R_IA_64_DTPREL64LSB = 0xb7; +enum R_IA_64_LTOFF_DTPREL22 = 0xba; + +enum R_MIPS_NONE = 0; +enum R_MIPS_16 = 1; +enum R_MIPS_32 = 2; +enum R_MIPS_REL32 = 3; +enum R_MIPS_26 = 4; +enum R_MIPS_HI16 = 5; +enum R_MIPS_LO16 = 6; +enum R_MIPS_GPREL16 = 7; +enum R_MIPS_LITERAL = 8; +enum R_MIPS_GOT16 = 9; +enum R_MIPS_PC16 = 10; +enum R_MIPS_CALL16 = 11; +enum R_MIPS_GPREL32 = 12; +enum R_MIPS_GOTHI16 = 21; +enum R_MIPS_GOTLO16 = 22; +enum R_MIPS_CALLHI16 = 30; +enum R_MIPS_CALLLO16 = 31; + +enum R_PPC_NONE = 0; +enum R_PPC_ADDR32 = 1; +enum R_PPC_ADDR24 = 2; +enum R_PPC_ADDR16 = 3; +enum R_PPC_ADDR16_LO = 4; +enum R_PPC_ADDR16_HI = 5; +enum R_PPC_ADDR16_HA = 6; +enum R_PPC_ADDR14 = 7; +enum R_PPC_ADDR14_BRTAKEN = 8; +enum R_PPC_ADDR14_BRNTAKEN = 9; +enum R_PPC_REL24 = 10; +enum R_PPC_REL14 = 11; +enum R_PPC_REL14_BRTAKEN = 12; +enum R_PPC_REL14_BRNTAKEN = 13; +enum R_PPC_GOT16 = 14; +enum R_PPC_GOT16_LO = 15; +enum R_PPC_GOT16_HI = 16; +enum R_PPC_GOT16_HA = 17; +enum R_PPC_PLTREL24 = 18; +enum R_PPC_COPY = 19; +enum R_PPC_GLOB_DAT = 20; +enum R_PPC_JMP_SLOT = 21; +enum R_PPC_RELATIVE = 22; +enum R_PPC_LOCAL24PC = 23; +enum R_PPC_UADDR32 = 24; +enum R_PPC_UADDR16 = 25; +enum R_PPC_REL32 = 26; +enum R_PPC_PLT32 = 27; +enum R_PPC_PLTREL32 = 28; +enum R_PPC_PLT16_LO = 29; +enum R_PPC_PLT16_HI = 30; +enum R_PPC_PLT16_HA = 31; +enum R_PPC_SDAREL16 = 32; +enum R_PPC_SECTOFF = 33; +enum R_PPC_SECTOFF_LO = 34; +enum R_PPC_SECTOFF_HI = 35; +enum R_PPC_SECTOFF_HA = 36; + +enum R_PPC64_ADDR64 = 38; +enum R_PPC64_ADDR16_HIGHER = 39; +enum R_PPC64_ADDR16_HIGHERA = 40; +enum R_PPC64_ADDR16_HIGHEST = 41; +enum R_PPC64_ADDR16_HIGHESTA = 42; +enum R_PPC64_UADDR64 = 43; +enum R_PPC64_REL64 = 44; +enum R_PPC64_PLT64 = 45; +enum R_PPC64_PLTREL64 = 46; +enum R_PPC64_TOC16 = 47; +enum R_PPC64_TOC16_LO = 48; +enum R_PPC64_TOC16_HI = 49; +enum R_PPC64_TOC16_HA = 50; +enum R_PPC64_TOC = 51; +enum R_PPC64_DTPMOD64 = 68; +enum R_PPC64_TPREL64 = 73; +enum R_PPC64_DTPREL64 = 78; + +enum R_PPC_TLS = 67; +enum R_PPC_DTPMOD32 = 68; +enum R_PPC_TPREL16 = 69; +enum R_PPC_TPREL16_LO = 70; +enum R_PPC_TPREL16_HI = 71; +enum R_PPC_TPREL16_HA = 72; +enum R_PPC_TPREL32 = 73; +enum R_PPC_DTPREL16 = 74; +enum R_PPC_DTPREL16_LO = 75; +enum R_PPC_DTPREL16_HI = 76; +enum R_PPC_DTPREL16_HA = 77; +enum R_PPC_DTPREL32 = 78; +enum R_PPC_GOT_TLSGD16 = 79; +enum R_PPC_GOT_TLSGD16_LO = 80; +enum R_PPC_GOT_TLSGD16_HI = 81; +enum R_PPC_GOT_TLSGD16_HA = 82; +enum R_PPC_GOT_TLSLD16 = 83; +enum R_PPC_GOT_TLSLD16_LO = 84; +enum R_PPC_GOT_TLSLD16_HI = 85; +enum R_PPC_GOT_TLSLD16_HA = 86; +enum R_PPC_GOT_TPREL16 = 87; +enum R_PPC_GOT_TPREL16_LO = 88; +enum R_PPC_GOT_TPREL16_HI = 89; +enum R_PPC_GOT_TPREL16_HA = 90; + +enum R_PPC_EMB_NADDR32 = 101; +enum R_PPC_EMB_NADDR16 = 102; +enum R_PPC_EMB_NADDR16_LO = 103; +enum R_PPC_EMB_NADDR16_HI = 104; +enum R_PPC_EMB_NADDR16_HA = 105; +enum R_PPC_EMB_SDAI16 = 106; +enum R_PPC_EMB_SDA2I16 = 107; +enum R_PPC_EMB_SDA2REL = 108; +enum R_PPC_EMB_SDA21 = 109; +enum R_PPC_EMB_MRKREF = 110; +enum R_PPC_EMB_RELSEC16 = 111; +enum R_PPC_EMB_RELST_LO = 112; +enum R_PPC_EMB_RELST_HI = 113; +enum R_PPC_EMB_RELST_HA = 114; +enum R_PPC_EMB_BIT_FLD = 115; +enum R_PPC_EMB_RELSDA = 116; + +enum R_SPARC_NONE = 0; +enum R_SPARC_8 = 1; +enum R_SPARC_16 = 2; +enum R_SPARC_32 = 3; +enum R_SPARC_DISP8 = 4; +enum R_SPARC_DISP16 = 5; +enum R_SPARC_DISP32 = 6; +enum R_SPARC_WDISP30 = 7; +enum R_SPARC_WDISP22 = 8; +enum R_SPARC_HI22 = 9; +enum R_SPARC_22 = 10; +enum R_SPARC_13 = 11; +enum R_SPARC_LO10 = 12; +enum R_SPARC_GOT10 = 13; +enum R_SPARC_GOT13 = 14; +enum R_SPARC_GOT22 = 15; +enum R_SPARC_PC10 = 16; +enum R_SPARC_PC22 = 17; +enum R_SPARC_WPLT30 = 18; +enum R_SPARC_COPY = 19; +enum R_SPARC_GLOB_DAT = 20; +enum R_SPARC_JMP_SLOT = 21; +enum R_SPARC_RELATIVE = 22; +enum R_SPARC_UA32 = 23; +enum R_SPARC_PLT32 = 24; +enum R_SPARC_HIPLT22 = 25; +enum R_SPARC_LOPLT10 = 26; +enum R_SPARC_PCPLT32 = 27; +enum R_SPARC_PCPLT22 = 28; +enum R_SPARC_PCPLT10 = 29; +enum R_SPARC_10 = 30; +enum R_SPARC_11 = 31; +enum R_SPARC_64 = 32; +enum R_SPARC_OLO10 = 33; +enum R_SPARC_HH22 = 34; +enum R_SPARC_HM10 = 35; +enum R_SPARC_LM22 = 36; +enum R_SPARC_PC_HH22 = 37; +enum R_SPARC_PC_HM10 = 38; +enum R_SPARC_PC_LM22 = 39; +enum R_SPARC_WDISP16 = 40; +enum R_SPARC_WDISP19 = 41; +enum R_SPARC_GLOB_JMP = 42; +enum R_SPARC_7 = 43; +enum R_SPARC_5 = 44; +enum R_SPARC_6 = 45; +enum R_SPARC_DISP64 = 46; +enum R_SPARC_PLT64 = 47; +enum R_SPARC_HIX22 = 48; +enum R_SPARC_LOX10 = 49; +enum R_SPARC_H44 = 50; +enum R_SPARC_M44 = 51; +enum R_SPARC_L44 = 52; +enum R_SPARC_REGISTER = 53; +enum R_SPARC_UA64 = 54; +enum R_SPARC_UA16 = 55; +enum R_SPARC_TLS_GD_HI22 = 56; +enum R_SPARC_TLS_GD_LO10 = 57; +enum R_SPARC_TLS_GD_ADD = 58; +enum R_SPARC_TLS_GD_CALL = 59; +enum R_SPARC_TLS_LDM_HI22 = 60; +enum R_SPARC_TLS_LDM_LO10 = 61; +enum R_SPARC_TLS_LDM_ADD = 62; +enum R_SPARC_TLS_LDM_CALL = 63; +enum R_SPARC_TLS_LDO_HIX22 = 64; +enum R_SPARC_TLS_LDO_LOX10 = 65; +enum R_SPARC_TLS_LDO_ADD = 66; +enum R_SPARC_TLS_IE_HI22 = 67; +enum R_SPARC_TLS_IE_LO10 = 68; +enum R_SPARC_TLS_IE_LD = 69; +enum R_SPARC_TLS_IE_LDX = 70; +enum R_SPARC_TLS_IE_ADD = 71; +enum R_SPARC_TLS_LE_HIX22 = 72; +enum R_SPARC_TLS_LE_LOX10 = 73; +enum R_SPARC_TLS_DTPMOD32 = 74; +enum R_SPARC_TLS_DTPMOD64 = 75; +enum R_SPARC_TLS_DTPOFF32 = 76; +enum R_SPARC_TLS_DTPOFF64 = 77; +enum R_SPARC_TLS_TPOFF32 = 78; +enum R_SPARC_TLS_TPOFF64 = 79; + +enum R_X86_64_NONE = 0; +enum R_X86_64_64 = 1; +enum R_X86_64_PC32 = 2; +enum R_X86_64_GOT32 = 3; +enum R_X86_64_PLT32 = 4; +enum R_X86_64_COPY = 5; +enum R_X86_64_GLOB_DAT = 6; +enum R_X86_64_JMP_SLOT = 7; +enum R_X86_64_RELATIVE = 8; +enum R_X86_64_GOTPCREL = 9; +enum R_X86_64_32 = 10; +enum R_X86_64_32S = 11; +enum R_X86_64_16 = 12; +enum R_X86_64_PC16 = 13; +enum R_X86_64_8 = 14; +enum R_X86_64_PC8 = 15; +enum R_X86_64_DTPMOD64 = 16; +enum R_X86_64_DTPOFF64 = 17; +enum R_X86_64_TPOFF64 = 18; +enum R_X86_64_TLSGD = 19; +enum R_X86_64_TLSLD = 20; +enum R_X86_64_DTPOFF32 = 21; +enum R_X86_64_GOTTPOFF = 22; +enum R_X86_64_TPOFF32 = 23; +enum R_X86_64_IRELATIVE = 37; diff --git a/src/core/sys/netbsd/sys/event.d b/src/core/sys/netbsd/sys/event.d new file mode 100644 index 0000000000..f83651c6a7 --- /dev/null +++ b/src/core/sys/netbsd/sys/event.d @@ -0,0 +1,110 @@ +/** + * D header file for NetBSD. + * + * Copyright: Copyright Martin Nowak 2012. + * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: Martin Nowak + * + * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/event.h + */ + +/* Copyright Martin Nowak 2012. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module core.sys.netbsd.sys.event; + +version (NetBSD): +extern (C): + +import core.stdc.stdint; // intptr_t, uintptr_t +import core.sys.posix.time; // timespec + + +enum +{ + EVFILT_READ = 0, + EVFILT_WRITE = 1, + EVFILT_AIO = 2, + EVFILT_VNODE = 3, + EVFILT_PROC = 4, + EVFILT_SIGNAL = 5, + EVFILT_TIMER = 6, + EVFILT_SYSCOUNT = 7 +} + +extern(D) void EV_SET(kevent_t* kevp, typeof(kevent_t.tupleof) args) +{ + *kevp = kevent_t(args); +} + +struct kevent_t +{ + uintptr_t ident; + uint filter; + uint flags; + uint fflags; + ulong data; + void *udata; +} + +enum +{ + /* actions */ + EV_ADD = 0x0001, + EV_DELETE = 0x0002, + EV_ENABLE = 0x0004, + EV_DISABLE = 0x0008, + + /* flags */ + EV_ONESHOT = 0x0010, + EV_CLEAR = 0x0020, + + EV_SYSFLAGS = 0xF000, + EV_FLAG1 = 0x2000, + + /* returned values */ + EV_EOF = 0x8000, + EV_ERROR = 0x4000 +} + +enum +{ + /* + * data/hint flags for EVFILT_{READ|WRITE}, shared with userspace + */ + NOTE_LOWAT = 0x0001, + + /* + * data/hint flags for EVFILT_VNODE, shared with userspace + */ + NOTE_DELETE = 0x0001, + NOTE_WRITE = 0x0002, + NOTE_EXTEND = 0x0004, + NOTE_ATTRIB = 0x0008, + NOTE_LINK = 0x0010, + NOTE_RENAME = 0x0020, + NOTE_REVOKE = 0x0040, + + /* + * data/hint flags for EVFILT_PROC, shared with userspace + */ + NOTE_EXIT = 0x80000000, + NOTE_FORK = 0x40000000, + NOTE_EXEC = 0x20000000, + NOTE_PCTRLMASK = 0xf0000000, + NOTE_PDATAMASK = 0x000fffff, + + /* additional flags for EVFILT_PROC */ + NOTE_TRACK = 0x00000001, + NOTE_TRACKERR = 0x00000002, + NOTE_CHILD = 0x00000004 + +} + +int kqueue(); +int __kevent50(int kq, const kevent_t *changelist, int nchanges, + kevent_t *eventlist, int nevents, + const timespec *timeout); +alias kevent = __kevent50; diff --git a/src/core/sys/netbsd/sys/link_elf.d b/src/core/sys/netbsd/sys/link_elf.d new file mode 100644 index 0000000000..d2529cbdd0 --- /dev/null +++ b/src/core/sys/netbsd/sys/link_elf.d @@ -0,0 +1,71 @@ +/** + * D header file for NetBSD. + * + * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/include/link_elf.h + */ +module core.sys.netbsd.sys.link_elf; + +version (NetBSD): +extern (C): +nothrow: + +import core.stdc.stdint : uint64_t; +import core.sys.netbsd.sys.elf; + +version(D_LP64) + enum __ELF_NATIVE_CLASS = 64; +else + enum __ELF_NATIVE_CLASS = 32; + +template ElfW(string type) +{ + mixin("alias Elf"~__ELF_NATIVE_CLASS.stringof~"_"~type~" ElfW;"); +} + +struct link_map +{ + char* l_addr; + + version (MIPS32) + char* l_offs; + version (MIPS64) + char* l_offs; + + char* l_name; + void* l_ld; + link_map* l_next; + link_map* l_prev; +} +alias link_map Link_map; + +enum +{ + RT_CONSISTENT, + RT_ADD, + RT_DELETE, +} + +struct r_debug +{ + int r_version; + link_map* r_map; + void function(r_debug*, link_map*) r_brk; +}; + +struct dl_phdr_info +{ + ElfW!"Addr" dlpi_addr; + char* dlpi_name; + ElfW!"Phdr"* dlpi_phdr; + ElfW!"Half" dlpi_phnum; + uint64_t dlpi_adds; + uint64_t dlpi_subs; + size_t dlpi_tls_modid; + void* dlpi_tls_data; +}; + + +private alias extern(C) int function(dl_phdr_info*, size_t, void *) dl_iterate_phdr_cb; +private alias extern(C) int function(dl_phdr_info*, size_t, void *) @nogc dl_iterate_phdr_cb_ngc; +extern int dl_iterate_phdr(dl_iterate_phdr_cb __callback, void*__data); +extern int dl_iterate_phdr(dl_iterate_phdr_cb_ngc __callback, void*__data) @nogc; diff --git a/src/core/sys/netbsd/sys/mman.d b/src/core/sys/netbsd/sys/mman.d new file mode 100644 index 0000000000..646ab7556b --- /dev/null +++ b/src/core/sys/netbsd/sys/mman.d @@ -0,0 +1,125 @@ +/** + * D header file for NetBSD + * + * Authors: Martin Nowak + * + * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/mman.h + */ +module core.sys.netbsd.sys.mman; + +version (NetBSD): +extern (C): +nothrow: + +public import core.sys.posix.sys.mman; +import core.sys.posix.sys.types; + +enum __BSD_VISIBLE = true; + +static if (__BSD_VISIBLE) +{ + enum INHERIT_SHARE = 0; + enum INHERIT_COPY = 1; + enum INHERIT_NONE = 2; + enum INHERIT_DONATE_COPY = 3; + enum INHERIT_ZERO = 4; +} + +// already in core.sys.posix.sys.mman +// enum PROT_NONE = 0x00; +// enum PROT_READ = 0x01; +// enum PROT_WRITE = 0x02; +// enum PROT_EXEC = 0x04; +// enum MAP_SHARED = 0x0001; +// enum MAP_PRIVATE = 0x0002; +static if (__BSD_VISIBLE) + enum MAP_COPY = 0x0002; +// enum MAP_FIXED = 0x0010; + +static if (__BSD_VISIBLE) +{ + enum MAP_RENAME = 0x0020; + enum MAP_NORESERVE = 0x0040; + enum MAP_HASSEMAPHORE = 0x0200; + enum MAP_STACK = 0x2000; + enum MAP_WIRED = 0x0800; + + enum MAP_FILE = 0x0000; + + // already in core.sys.posix.sys.mman + // enum MAP_ANON = 0x1000; + //#ifndef _KERNEL + alias MAP_ANONYMOUS = MAP_ANON; + //#endif /* !_KERNEL */ + + + extern(D) int MAP_ALIGNED(int n) { return n << MAP_ALIGNMENT_SHIFT; } + enum MAP_ALIGNMENT_SHIFT = 24; + enum MAP_ALIGNMENT_MASK = MAP_ALIGNED(0xff); +} + +//static if (__POSIX_VISIBLE >= 199309) +//{ + // already in core.sys.posix.sys.mman + // enum MCL_CURRENT = 0x0001; + // enum MCL_FUTURE = 0x0002; +//} + +// already in core.sys.posix.sys.mman +enum MAP_FAILED = cast(void*)-1; + +// already in core.sys.posix.sys.mman +// enum MS_SYNC = 0x0000; +// enum MS_ASYNC = 0x0001; +// enum MS_INVALIDATE = 0x0002; + +enum _MADV_NORMAL = 0; +enum _MADV_RANDOM = 1; +enum _MADV_SEQUENTIAL = 2; +enum _MADV_WILLNEED = 3; +enum _MADV_DONTNEED = 4; + +static if (__BSD_VISIBLE) +{ + alias MADV_NORMAL = _MADV_NORMAL; + alias MADV_RANDOM = _MADV_RANDOM; + alias MADV_SEQUENTIAL = _MADV_SEQUENTIAL; + alias MADV_WILLNEED = _MADV_WILLNEED; + alias MADV_DONTNEED = _MADV_DONTNEED; + enum MADV_SPACEAVAIL = 5; + enum MADV_FREE = 6; +} + +//static if (__POSIX_VISIBLE >= 200112) +//{ + // already in core.sys.posix.sys.mman + // alias POSIX_MADV_NORMAL = _MADV_NORMAL; + // alias POSIX_MADV_RANDOM = _MADV_RANDOM; + // alias POSIX_MADV_SEQUENTIAL = _MADV_SEQUENTIAL; + // alias POSIX_MADV_WILLNEED = _MADV_WILLNEED; + // alias POSIX_MADV_DONTNEED = _MADV_DONTNEED; +//} + +static if (__BSD_VISIBLE) +{ + //int getpagesizes(size_t *, int); + int madvise(void *, size_t, int); + int mincore(const(void) *, size_t, char *); + int minherit(void *, size_t, int); +} +// already in core.sys.posix.sys.mman +// int mlock(const void *, size_t); +// void * mmap(void *, size_t, int, int, int, off_t); +// int mprotect(const void *, size_t, int); +// int msync(void *, size_t, int); +// int munlock(const void *, size_t); +// int munmap(void *, size_t); +//static if (__POSIX_VISIBLE >= 200112) + // int posix_madvise(void *, size_t, int); +//static if (__POSIX_VISIBLE >= 199309) +//{ + // int mlockall(int); + // int munlockall(); + // int shm_open(const(char) *, int, mode_t); + // int shm_unlink(const(char) *); +//} diff --git a/src/core/sys/netbsd/time.d b/src/core/sys/netbsd/time.d new file mode 100644 index 0000000000..4fb1e2f4d9 --- /dev/null +++ b/src/core/sys/netbsd/time.d @@ -0,0 +1,21 @@ +//Written in the D programming language + +/++ + D header file for NetBSD's extensions to POSIX's time.h. + + Copyright: Copyright 2014 + License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + Authors: Jonathan M Davis + + http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/time.h + +/ +module core.sys.netbsd.time; + +public import core.sys.posix.time; + +version(NetBSD): + +enum CLOCK_REALTIME = 0; +enum CLOCK_VIRTUAL = 1; +enum CLOCK_PROF = 2; +enum CLOCK_MONOTONIC = 3; From 604638344f9904594fa55f4aa35e37c9b1a14989 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 4 Apr 2017 01:24:07 -0700 Subject: [PATCH 632/768] cannot throw scoped exception --- src/rt/minfo.d | 55 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 8e49a99c45..0358e22994 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -167,13 +167,6 @@ struct ModuleGroup import core.bitop : bts, btr, bt, BitRange; import rt.util.container.hashtab; - // used to unwind stack for printing deprecation message. - static class DeprecatedCycleException : Exception - { - this() { super(""); } - } - scope deprecation = new DeprecatedCycleException(); - enum OnCycle { deprecate, @@ -318,7 +311,8 @@ struct ModuleGroup // trivial modules to get at the non-trivial ones. // // If a cycle is detected, returns the index of the module that completes the cycle. - void findDeps(size_t idx, size_t* reachable) + // Returns: true for success, false for a deprecated cycle error + bool findDeps(size_t idx, size_t* reachable) { static struct stackFrame { @@ -367,7 +361,7 @@ struct ModuleGroup if(sortCtorsOld(edges)) { // unwind to print deprecation message. - throw deprecation; + return false; // deprecated cycle error } goto case abort; // fall through case abort: @@ -408,6 +402,7 @@ struct ModuleGroup // next dependency ++sp.curDep; } + return true; // success } // The list of constructors that will be returned by the sorting. @@ -422,7 +417,8 @@ struct ModuleGroup // Each call into this function is given a module that has static // ctor/dtors that must be dealt with. It recurses only when it finds // dependencies that also have static ctor/dtors. - void processMod(size_t curidx) + // Returns: true for success, false for a deprecated cycle error + bool processMod(size_t curidx) { immutable ModuleInfo* current = _modules[curidx]; @@ -430,7 +426,8 @@ struct ModuleGroup auto reachable = cast(size_t*) malloc(flagbytes); scope (exit) .free(reachable); - findDeps(curidx, reachable); + if (!findDeps(curidx, reachable)) + return false; // deprecated cycle error // process the dependencies. First, we process all relevant ones bts(ctorstart, curidx); @@ -440,7 +437,10 @@ struct ModuleGroup // note, don't check for cycles here, because the config could have been set to ignore cycles. // however, don't recurse if there is one, so still check for started ctor. if (i != curidx && bt(relevant, i) && !bt(ctordone, i) && !bt(ctorstart, i)) - processMod(i); + { + if (!processMod(i)) + return false; // deprecated cycle error + } } // now mark this node, and all nodes reachable from this module as done. @@ -457,10 +457,15 @@ struct ModuleGroup // add this module to the construction order list ctors[ctoridx++] = current; + return true; } - immutable(ModuleInfo)*[] doSort(size_t relevantFlags) + // `cycle` is set to `true` if deprecated cycle error otherwise set `result`. + void doSort(size_t relevantFlags, ref bool cycle, ref immutable(ModuleInfo)*[] result) { + if (cycle) + return; + clearFlags(relevant); clearFlags(ctorstart); clearFlags(ctordone); @@ -488,29 +493,35 @@ struct ModuleGroup foreach (idx; BitRange(relevant, len)) { if (!bt(ctordone, idx)) - processMod(idx); + { + if (!processMod(idx)) + { + cycle = true; + return; + } + } } if (ctoridx == 0) { // no ctors in the list. .free(ctors); - return null; + result = null; + return; } ctors = cast(immutable(ModuleInfo)**).realloc(ctors, ctoridx * (void*).sizeof); if (ctors is null) assert(0); - return ctors[0 .. ctoridx]; + result = ctors[0 .. ctoridx]; + return; } // finally, do the sorting for both shared and tls ctors. - try - { - _ctors = doSort(MIctor | MIdtor); - _tlsctors = doSort(MItlsctor | MItlsdtor); - } - catch(DeprecatedCycleException) + bool cycle = false; + doSort(MIctor | MIdtor, cycle, _ctors); + doSort(MItlsctor | MItlsdtor, cycle, _tlsctors); + if (cycle) { // print a warning import core.stdc.stdio : fprintf, stderr; From 0748d402f4dcff657eecc4f383acc9b4a9641de5 Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Tue, 4 Apr 2017 15:27:57 +0200 Subject: [PATCH 633/768] Add eventfd bindings This adds bindings for linux-specific eventfd_* calls. --- mak/COPY | 1 + src/core/sys/linux/sys/eventfd.d | 85 ++++++++++++++++++++++++++++++++ win32.mak | 3 ++ win64.mak | 3 ++ 4 files changed, 92 insertions(+) create mode 100644 src/core/sys/linux/sys/eventfd.d diff --git a/mak/COPY b/mak/COPY index 3b5fa33d98..a31cafaff8 100644 --- a/mak/COPY +++ b/mak/COPY @@ -95,6 +95,7 @@ COPY=\ $(IMPDIR)\core\sys\linux\unistd.d \ \ $(IMPDIR)\core\sys\linux\sys\auxv.d \ + $(IMPDIR)\core\sys\linux\sys\eventfd.d \ $(IMPDIR)\core\sys\linux\sys\file.d \ $(IMPDIR)\core\sys\linux\sys\inotify.d \ $(IMPDIR)\core\sys\linux\sys\mman.d \ diff --git a/src/core/sys/linux/sys/eventfd.d b/src/core/sys/linux/sys/eventfd.d new file mode 100644 index 0000000000..f0e56195f3 --- /dev/null +++ b/src/core/sys/linux/sys/eventfd.d @@ -0,0 +1,85 @@ +/** + * D header file for GNU/Linux. + * + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Authors: Nemanja Boric + */ +module core.sys.linux.sys.eventfd; + +version (linux): +extern (C): +@nogc: +@system: +nothrow: + +import core.stdc.stdint: uint64_t; + +/// Type for the event counter +alias uint64_t eventfd_t; + +/* Return file descriptor for generic event channel. Set initial + value to count. */ +int eventfd (uint count, int flags); + +/* Read event counter and possibly wait for events. */ +int eventfd_read (int fd, eventfd_t* value); + +/* Increment event counter. */ +int eventfd_write (int fd, eventfd_t value); + +version (X86) +{ + enum EFD_SEMAPHORE = 1; + enum EFD_CLOEXEC = 0x80000; // octal!2000000 + enum EFD_NONBLOCK = 0x800; // octal!4000 +} +else version (X86_64) +{ + enum EFD_SEMAPHORE = 1; + enum EFD_CLOEXEC = 0x80000; // octal!2000000 + enum EFD_NONBLOCK = 0x800; // octal!4000 +} +else version (MIPS32) +{ + enum EFD_SEMAPHORE = 1; + enum EFD_CLOEXEC = 0x80000; // octal!2000000 + enum EFD_NONBLOCK = 0x80; // octal!200 +} +else version (MIPS64) +{ + enum EFD_SEMAPHORE = 1; + enum EFD_CLOEXEC = 0x80000; // octal!2000000 + enum EFD_NONBLOCK = 0x80; // octal!200 +} +else version (PPC) +{ + enum EFD_SEMAPHORE = 1; + enum EFD_CLOEXEC = 0x80000; // octal!2000000 + enum EFD_NONBLOCK = 0x800; // octal!4000 +} +else version (PPC64) +{ + enum EFD_SEMAPHORE = 1; + enum EFD_CLOEXEC = 0x80000; // octal!2000000 + enum EFD_NONBLOCK = 0x800; // octal!4000 +} +else version (ARM) +{ + enum EFD_SEMAPHORE = 1; + enum EFD_CLOEXEC = 0x80000; // octal!2000000 + enum EFD_NONBLOCK = 0x800; // octal!4000 +} +else version (AArch64) +{ + enum EFD_SEMAPHORE = 1; + enum EFD_CLOEXEC = 0x80000; // octal!2000000 + enum EFD_NONBLOCK = 0x800; // octal!4000 +} +else version (SystemZ) +{ + enum EFD_SEMAPHORE = 1; + enum EFD_CLOEXEC = 0x80000; // octal!2000000 + enum EFD_NONBLOCK = 0x800; // octal!4000 +} +else + static assert(0, "unimplemented"); diff --git a/win32.mak b/win32.mak index bf3bee7168..102e8b44e7 100644 --- a/win32.mak +++ b/win32.mak @@ -473,6 +473,9 @@ $(IMPDIR)\core\sys\linux\unistd.d : src\core\sys\linux\unistd.d $(IMPDIR)\core\sys\linux\sys\auxv.d : src\core\sys\linux\sys\auxv.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\eventfd.d : src\core\sys\linux\sys\eventfd.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\file.d : src\core\sys\linux\sys\file.d copy $** $@ diff --git a/win64.mak b/win64.mak index a025b06f06..396affdfdb 100644 --- a/win64.mak +++ b/win64.mak @@ -484,6 +484,9 @@ $(IMPDIR)\core\sys\linux\unistd.d : src\core\sys\linux\unistd.d $(IMPDIR)\core\sys\linux\sys\auxv.d : src\core\sys\linux\sys\auxv.d copy $** $@ +$(IMPDIR)\core\sys\linux\sys\eventfd.d : src\core\sys\linux\sys\eventfd.d + copy $** $@ + $(IMPDIR)\core\sys\linux\sys\file.d : src\core\sys\linux\sys\file.d copy $** $@ From 08835c01cf2d64a06c53739223edba55cc23db2f Mon Sep 17 00:00:00 2001 From: Mihails Strasuns Date: Thu, 6 Apr 2017 13:56:47 +0200 Subject: [PATCH 634/768] Simple multithreaded program + "-profile=gc" = crash Fixes issue 15947 (https://issues.dlang.org/show_bug.cgi?id=15947) Fixes issue 14511 (https://issues.dlang.org/show_bug.cgi?id=14511) Root problem was trying to increment non-existent AA field upon merging profile stats. The code was also simplified to remove unnecessary condition. --- src/rt/profilegc.d | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/rt/profilegc.d b/src/rt/profilegc.d index a3c5ce6235..a5ec1a8396 100644 --- a/src/rt/profilegc.d +++ b/src/rt/profilegc.d @@ -89,18 +89,14 @@ static ~this() { synchronized { - if (globalNewCounts.length) + foreach (name, entry; newCounts) { - // Merge - foreach (name, entry; newCounts) - { - globalNewCounts[name].count += entry.count; - globalNewCounts[name].size += entry.size; - } + if (!(name in globalNewCounts)) + globalNewCounts[name] = Entry.init; + + globalNewCounts[name].count += entry.count; + globalNewCounts[name].size += entry.size; } - else - // Assign - globalNewCounts = newCounts; } newCounts = null; } From 53b661079888defffa0fccc1fc3f1d8630ac9eb8 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 9 Apr 2017 10:37:34 +0200 Subject: [PATCH 635/768] update pipeline ci repo url - finally moved repo under dlang --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index b6ae0190e5..e0f3e3288f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ def clone (repo_url, git_ref = "master") { def pipeline node { dir('dlang/ci') { - clone 'https://github.com/Dicebot/dlangci.git', 'master' + clone 'https://github.com/dlang/ci.git', 'master' } pipeline = load 'dlang/ci/pipeline.groovy' } From 38c5724d616de3112897c79f2900b6b79a8fcd4d Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Mon, 10 Apr 2017 14:19:40 +0200 Subject: [PATCH 636/768] purge changelog --- changelog/disable-TypeInfo.init.dd | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 changelog/disable-TypeInfo.init.dd diff --git a/changelog/disable-TypeInfo.init.dd b/changelog/disable-TypeInfo.init.dd deleted file mode 100644 index 824635eae3..0000000000 --- a/changelog/disable-TypeInfo.init.dd +++ /dev/null @@ -1,12 +0,0 @@ -`TypeInfo.init` has been `@disable`d. - -$(REF_OBJECT_SHORT TypeInfo.init) has been `@disable`d. Use -$(REF_OBJECT_SHORT TypeInfo.initializer) instead. - -`TypeInfo.init` is a legacy alias of the method that is now called -$(REF_OBJECT_SHORT TypeInfo.initializer). The name change is necessary because -the name "init" clashes with the type property of the same name -($(GLINK2 property, init)). - -The legacy alias has been deprecated since 2.072.0. It's going to be removed in -2.075.0. From 5ac69667c0ae93c57c276cf9487f13ffad2505e6 Mon Sep 17 00:00:00 2001 From: anonymous Date: Mon, 10 Apr 2017 16:41:10 +0200 Subject: [PATCH 637/768] clear changelog --- changelog/disable-TypeInfo.init.dd | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 changelog/disable-TypeInfo.init.dd diff --git a/changelog/disable-TypeInfo.init.dd b/changelog/disable-TypeInfo.init.dd deleted file mode 100644 index 824635eae3..0000000000 --- a/changelog/disable-TypeInfo.init.dd +++ /dev/null @@ -1,12 +0,0 @@ -`TypeInfo.init` has been `@disable`d. - -$(REF_OBJECT_SHORT TypeInfo.init) has been `@disable`d. Use -$(REF_OBJECT_SHORT TypeInfo.initializer) instead. - -`TypeInfo.init` is a legacy alias of the method that is now called -$(REF_OBJECT_SHORT TypeInfo.initializer). The name change is necessary because -the name "init" clashes with the type property of the same name -($(GLINK2 property, init)). - -The legacy alias has been deprecated since 2.072.0. It's going to be removed in -2.075.0. From dc7d312b7f22835d8211c0f680fab1088a839324 Mon Sep 17 00:00:00 2001 From: anonymous Date: Mon, 10 Apr 2017 16:54:04 +0200 Subject: [PATCH 638/768] remove TypeInfo.init Fixes issue 12233 - Attempting to use TypeInfo.init results in a compiler error due to lack of 'this'. --- changelog/remove-TypeInfo.init.dd | 6 ++++++ src/object.d | 11 ++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 changelog/remove-TypeInfo.init.dd diff --git a/changelog/remove-TypeInfo.init.dd b/changelog/remove-TypeInfo.init.dd new file mode 100644 index 0000000000..9118335f01 --- /dev/null +++ b/changelog/remove-TypeInfo.init.dd @@ -0,0 +1,6 @@ +`TypeInfo.init` now refers to type property. + +`TypeInfo.init` used to refer to the method that is now called +$(REF_OBJECT_SHORT TypeInfo.initializer). The name change was necessary because +the name "init" would clash with the type property of the same name +($(GLINK2 property, init)). `TypeInfo.init` now refers to the type property. diff --git a/src/object.d b/src/object.d index ba00985e1e..7a16247246 100644 --- a/src/object.d +++ b/src/object.d @@ -285,11 +285,6 @@ class TypeInfo */ abstract const(void)[] initializer() nothrow pure const @safe @nogc; - /// $(RED Removed.) Please use `initializer` instead. - @disable static const(void)[] init(); // since 2.074 - /* Planned for 2.075: Remove init, making way for the init type property, - fixing issue 12233. */ - /** Get flags for type: 1 means GC should scan for pointers, 2 means arg of this type is passed in XMM register */ @property uint flags() nothrow pure const @safe @nogc { return 0; } @@ -360,6 +355,12 @@ class TypeInfo_Typedef : TypeInfo void[] m_init; } +unittest // issue 12233 +{ + static assert(is(typeof(TypeInfo.init) == TypeInfo)); + assert(TypeInfo.init is null); +} + class TypeInfo_Enum : TypeInfo_Typedef { From dc10926793ef52bed21672167a11542578567547 Mon Sep 17 00:00:00 2001 From: somzzz Date: Tue, 11 Apr 2017 01:52:30 -0700 Subject: [PATCH 639/768] Array Literal Overloads --- src/object.d | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/object.d b/src/object.d index 7a16247246..1045923fd2 100644 --- a/src/object.d +++ b/src/object.d @@ -3229,6 +3229,25 @@ template RTInfo(T) enum RTInfo = null; } +bool __equals(T1, T2, size_t n1)(auto ref T1[n1] lhs, T2[] rhs) +{ + T1[] lhs1 = lhs; + return __equals(lhs1, rhs); +} + +bool __equals(T1, T2, size_t n2)(T1[] lhs, auto ref T2[n2] rhs) +{ + T2[] rhs1 = rhs; + return __equals(lhs, rhs1); +} + +bool __equals(T1, T2, size_t n1, size_t n2)(auto ref T1[n1] lhs, auto ref T2[n2] rhs) +{ + T1[] lhs1 = lhs; + T2[] rhs1 = rhs; + return __equals(lhs1, rhs1); +} + // lhs == rhs lowers to __equals(lhs, rhs) for arrays of all struct types. // old path: Typeinfo_array => TypeInfo_struct bool __equals(T1, T2)(T1[] lhs, T2[] rhs) From af5fe9fc84496a92466d37eb30ecf77d399271fb Mon Sep 17 00:00:00 2001 From: Moritz Maxeiner Date: Thu, 13 Apr 2017 15:23:37 +0200 Subject: [PATCH 640/768] Update core.sys.freebsd.sys.event to FreeBSD 11.0 --- src/core/sys/freebsd/sys/event.d | 45 ++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/src/core/sys/freebsd/sys/event.d b/src/core/sys/freebsd/sys/event.d index 70f9822158..cdf75ae2b2 100644 --- a/src/core/sys/freebsd/sys/event.d +++ b/src/core/sys/freebsd/sys/event.d @@ -28,10 +28,11 @@ enum EVFILT_PROC = -5, /* attached to struct proc */ EVFILT_SIGNAL = -6, /* attached to struct proc */ EVFILT_TIMER = -7, /* timers */ - // EVFILT_NETDEV = -8, /* no longer supported */ + EVFILT_PROCDESC = -8, /* attached to process descriptors */ EVFILT_FS = -9, /* filesystem events */ EVFILT_LIO = -10, /* attached to lio requests */ EVFILT_USER = -11, /* User events */ + EVFILT_SENDFILE = -12, /* attached to sendfile requests */ EVFILT_SYSCOUNT = 11, } @@ -53,23 +54,26 @@ struct kevent_t enum { /* actions */ - EV_ADD = 0x0001, /* add event to kq (implies enable) */ - EV_DELETE = 0x0002, /* delete event from kq */ - EV_ENABLE = 0x0004, /* enable event */ - EV_DISABLE = 0x0008, /* disable event (not reported) */ + EV_ADD = 0x0001, /* add event to kq (implies enable) */ + EV_DELETE = 0x0002, /* delete event from kq */ + EV_ENABLE = 0x0004, /* enable event */ + EV_DISABLE = 0x0008, /* disable event (not reported) */ + EV_FORCEONESHOT = 0x0100, /* enable _ONESHOT and force trigger */ /* flags */ - EV_ONESHOT = 0x0010, /* only report one occurrence */ - EV_CLEAR = 0x0020, /* clear event state after reporting */ - EV_RECEIPT = 0x0040, /* force EV_ERROR on success, data=0 */ - EV_DISPATCH = 0x0080, /* disable event after reporting */ + EV_ONESHOT = 0x0010, /* only report one occurrence */ + EV_CLEAR = 0x0020, /* clear event state after reporting */ + EV_RECEIPT = 0x0040, /* force EV_ERROR on success, data=0 */ + EV_DISPATCH = 0x0080, /* disable event after reporting */ - EV_SYSFLAGS = 0xF000, /* reserved by system */ - EV_FLAG1 = 0x2000, /* filter-specific flag */ + EV_SYSFLAGS = 0xF000, /* reserved by system */ + EV_DROP = 0x1000, /* note should be dropped */ + EV_FLAG1 = 0x2000, /* filter-specific flag */ + EV_FLAG2 = 0x4000, /* filter-specific flag */ /* returned values */ - EV_EOF = 0x8000, /* EOF detected */ - EV_ERROR = 0x4000, /* error, data contains errno */ + EV_EOF = 0x8000, /* EOF detected */ + EV_ERROR = 0x4000, /* error, data contains errno */ } enum @@ -97,6 +101,7 @@ enum * data/hint flags for EVFILT_{READ|WRITE}, shared with userspace */ NOTE_LOWAT = 0x0001, /* low water mark */ + NOTE_FILE_POLL = 0x0002, /* behave like poll() */ /* * data/hint flags for EVFILT_VNODE, shared with userspace @@ -108,9 +113,15 @@ enum NOTE_LINK = 0x0010, /* link count changed */ NOTE_RENAME = 0x0020, /* vnode was renamed */ NOTE_REVOKE = 0x0040, /* vnode access was revoked */ + NOTE_OPEN = 0x0080, /* vnode was opened */ + NOTE_CLOSE = 0x0100, /* file closed, fd did not + allowed write */ + NOTE_CLOSE_WRITE = 0x0200, /* file closed, fd did allowed + write */ + NOTE_READ = 0x0400, /* file was read */ /* - * data/hint flags for EVFILT_PROC, shared with userspace + * data/hint flags for EVFILT_PROC and EVFILT_PROCDESC, shared with userspace */ NOTE_EXIT = 0x80000000, /* process exited */ NOTE_FORK = 0x40000000, /* process forked */ @@ -122,6 +133,12 @@ enum NOTE_TRACK = 0x00000001, /* follow across forks */ NOTE_TRACKERR = 0x00000002, /* could not track child */ NOTE_CHILD = 0x00000004, /* am a child process */ + + /* additional flags for EVFILT_TIMER */ + NOTE_SECONDS = 0x00000001, /* data is seconds */ + NOTE_MSECONDS = 0x00000002, /* data is milliseconds */ + NOTE_USECONDS = 0x00000004, /* data is microseconds */ + NOTE_NSECONDS = 0x00000008, /* data is nanoseconds */ } int kqueue(); From f0365f27419fc72dc00c0ac42a924f1df411dc3c Mon Sep 17 00:00:00 2001 From: Moritz Maxeiner Date: Thu, 13 Apr 2017 15:24:03 +0200 Subject: [PATCH 641/768] Add attributes to core.sys.freebsd.sys.event --- src/core/sys/freebsd/sys/event.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/sys/freebsd/sys/event.d b/src/core/sys/freebsd/sys/event.d index cdf75ae2b2..0e951f18ba 100644 --- a/src/core/sys/freebsd/sys/event.d +++ b/src/core/sys/freebsd/sys/event.d @@ -15,6 +15,8 @@ module core.sys.freebsd.sys.event; version (FreeBSD): extern (C): +nothrow: +@nogc: import core.stdc.stdint; // intptr_t, uintptr_t import core.sys.posix.time; // timespec From 596f1459e75c2105e9db148d34b9679f1e62e64c Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Wed, 1 Mar 2017 07:44:22 +0100 Subject: [PATCH 642/768] windows: make precise scanning of DATA and TLS optional --- src/rt/sections.d | 17 +++++++++++++++++ src/rt/sections_win32.d | 26 ++++++++++++-------------- src/rt/sections_win64.d | 21 +++++++++++---------- 3 files changed, 40 insertions(+), 24 deletions(-) diff --git a/src/rt/sections.d b/src/rt/sections.d index a12b73fb13..4cfdc90140 100644 --- a/src/rt/sections.d +++ b/src/rt/sections.d @@ -72,3 +72,20 @@ version (Shared) static assert(is(typeof(&inheritLoadedLibraries) == void function(void*) nothrow @nogc)); static assert(is(typeof(&cleanupLoadedLibraries) == void function() nothrow @nogc)); } + +bool scanDSegPrecisely() nothrow @nogc +{ + import rt.config; + string opt = rt_configOption("scandseg"); + switch(opt) + { + case "conservative": + return false; + case "": + case "precise": + return true; + default: + __gshared err = new Error("DRT invalid scandseg option, must be 'precise' or 'conservative'"); + throw err; + } +} diff --git a/src/rt/sections_win32.d b/src/rt/sections_win32.d index 1343c94985..47d8253961 100644 --- a/src/rt/sections_win32.d +++ b/src/rt/sections_win32.d @@ -17,8 +17,7 @@ version(CRuntime_DigitalMars): // debug = PRINTF; debug(PRINTF) import core.stdc.stdio; import rt.minfo; - -version = conservative; +import core.stdc.stdlib : malloc, free; struct SectionGroup { @@ -49,18 +48,22 @@ struct SectionGroup private: ModuleGroup _moduleGroup; - version(conservative) - void[][2] _gcRanges; - else - void[][] _gcRanges; + void[][] _gcRanges; } +shared(bool) conservative; + void initSections() nothrow @nogc { _sections._moduleGroup = ModuleGroup(getModuleInfos()); - version(conservative) + import rt.sections; + conservative = !scanDSegPrecisely(); + + if (conservative) { + _sections._gcRanges = (cast(void[]*) malloc(2 * (void[]).sizeof))[0..2]; + auto databeg = cast(void*)&_xi_a; auto dataend = cast(void*)_moduleinfo_array.ptr; _sections._gcRanges[0] = databeg[0 .. dataend - databeg]; @@ -72,8 +75,6 @@ void initSections() nothrow @nogc } else { - import core.stdc.stdlib : malloc; - size_t count = &_DPend - &_DPbegin; auto ranges = cast(void[]*) malloc(count * (void[]).sizeof); for (size_t i = 0; i < count; i++) @@ -87,10 +88,7 @@ void initSections() nothrow @nogc void finiSections() nothrow @nogc { - import core.stdc.stdlib : free; - - version(conservative) {} else - free(_sections._gcRanges.ptr); + free(_sections._gcRanges.ptr); } void[] initTLSRanges() nothrow @nogc @@ -106,7 +104,7 @@ void finiTLSRanges(void[] rng) nothrow @nogc void scanTLSRanges(void[] rng, scope void delegate(void* pbeg, void* pend) nothrow dg) nothrow { - version(conservative) + if (conservative) { dg(rng.ptr, rng.ptr + rng.length); } diff --git a/src/rt/sections_win64.d b/src/rt/sections_win64.d index 0dbeb48599..796b6ffde7 100644 --- a/src/rt/sections_win64.d +++ b/src/rt/sections_win64.d @@ -19,8 +19,6 @@ debug(PRINTF) import core.stdc.stdio; import core.stdc.stdlib : malloc, free; import rt.deh, rt.minfo; -version = conservative; - struct SectionGroup { static int opApply(scope int delegate(ref SectionGroup) dg) @@ -58,12 +56,11 @@ struct SectionGroup private: ModuleGroup _moduleGroup; - version(conservative) - void[][1] _gcRanges; - else - void[][] _gcRanges; + void[][] _gcRanges; } +shared(bool) conservative; + void initSections() nothrow @nogc { _sections._moduleGroup = ModuleGroup(getModuleInfos()); @@ -72,8 +69,13 @@ void initSections() nothrow @nogc void[] dataSection = findImageSection(".data"); debug(PRINTF) printf("found .data section: [%p,+%llx]\n", dataSection.ptr, cast(ulong)dataSection.length); - version(conservative) + + import rt.sections; + conservative = !scanDSegPrecisely(); + + if (conservative) { + _sections._gcRanges = (cast(void[]*) malloc((void[]).sizeof))[0..1]; _sections._gcRanges[0] = dataSection; } else @@ -92,8 +94,7 @@ void initSections() nothrow @nogc void finiSections() nothrow @nogc { .free(cast(void*)_sections.modules.ptr); - version(conservative) {} else - .free(_sections._gcRanges.ptr); + .free(_sections._gcRanges.ptr); } void[] initTLSRanges() nothrow @nogc @@ -109,7 +110,7 @@ void finiTLSRanges(void[] rng) nothrow @nogc void scanTLSRanges(void[] rng, scope void delegate(void* pbeg, void* pend) nothrow dg) nothrow { - version(conservative) + if (conservative) { dg(rng.ptr, rng.ptr + rng.length); } From 6cf6035c30bfc230e9c6c4da541419fbe4faaec3 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 15 Apr 2017 15:57:46 +0200 Subject: [PATCH 643/768] rename scandseg to scanDataSeg, add optimization to combine adjacent ranges, skip zeros add changelog --- changelog/scandataseg-precise.dd | 15 +++++++++++++++ src/rt/sections.d | 6 +++--- src/rt/sections_win32.d | 12 +++++++++--- src/rt/sections_win64.d | 19 +++++++++++++++---- 4 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 changelog/scandataseg-precise.dd diff --git a/changelog/scandataseg-precise.dd b/changelog/scandataseg-precise.dd new file mode 100644 index 0000000000..76bdb3ec1b --- /dev/null +++ b/changelog/scandataseg-precise.dd @@ -0,0 +1,15 @@ +Windows: the DATA and TLS segment can now be configured to be scanned precisely. + +A new runtime option "scanDataSeg" has been added to enable precise scanning of the +DATA and the TLS segments. This uses information generated by the compiler to +identify possible pointers inside these segments. Possible option values are +"conservative" (default) and "precise". + +As usual, this option can be set by the environment, the command line or by +embedding the option into the executable similar to the +$(LINK2 $(ROOT_DIR)spec/garbage.html#gc_config, GC options). + +For example add this code to your main module to enable precise scanning: +--------- +extern(C) __gshared string[] rt_options = [ "scanDataSeg=precise" ]; +--------- diff --git a/src/rt/sections.d b/src/rt/sections.d index 4cfdc90140..b83e36b502 100644 --- a/src/rt/sections.d +++ b/src/rt/sections.d @@ -73,10 +73,10 @@ version (Shared) static assert(is(typeof(&cleanupLoadedLibraries) == void function() nothrow @nogc)); } -bool scanDSegPrecisely() nothrow @nogc +bool scanDataSegPrecisely() nothrow @nogc { import rt.config; - string opt = rt_configOption("scandseg"); + string opt = rt_configOption("scanDataSeg"); switch(opt) { case "conservative": @@ -85,7 +85,7 @@ bool scanDSegPrecisely() nothrow @nogc case "precise": return true; default: - __gshared err = new Error("DRT invalid scandseg option, must be 'precise' or 'conservative'"); + __gshared err = new Error("DRT invalid scanDataSeg option, must be 'precise' or 'conservative'"); throw err; } } diff --git a/src/rt/sections_win32.d b/src/rt/sections_win32.d index 47d8253961..88ee0bbaf5 100644 --- a/src/rt/sections_win32.d +++ b/src/rt/sections_win32.d @@ -58,7 +58,7 @@ void initSections() nothrow @nogc _sections._moduleGroup = ModuleGroup(getModuleInfos()); import rt.sections; - conservative = !scanDSegPrecisely(); + conservative = !scanDataSegPrecisely(); if (conservative) { @@ -77,12 +77,18 @@ void initSections() nothrow @nogc { size_t count = &_DPend - &_DPbegin; auto ranges = cast(void[]*) malloc(count * (void[]).sizeof); + size_t r = 0; + void* prev = null; for (size_t i = 0; i < count; i++) { void* addr = (&_DPbegin)[i]; - ranges[i] = (cast(void**)addr)[0..1]; // TODO: optimize consecutive pointers into single range + if (prev + (void*).sizeof == addr) + ranges[r-1] = ranges[r-1].ptr[0 .. ranges[r-1].length + (void*).sizeof]; + else + ranges[r++] = (cast(void**)addr)[0..1]; + prev = addr; } - _sections._gcRanges = ranges[0..count]; + _sections._gcRanges = ranges[0..r]; } } diff --git a/src/rt/sections_win64.d b/src/rt/sections_win64.d index 796b6ffde7..ca5c35c223 100644 --- a/src/rt/sections_win64.d +++ b/src/rt/sections_win64.d @@ -71,7 +71,7 @@ void initSections() nothrow @nogc cast(ulong)dataSection.length); import rt.sections; - conservative = !scanDSegPrecisely(); + conservative = !scanDataSegPrecisely(); if (conservative) { @@ -82,12 +82,23 @@ void initSections() nothrow @nogc { size_t count = &_DP_end - &_DP_beg; auto ranges = cast(void[]*) malloc(count * (void[]).sizeof); + size_t r = 0; + void* prev = null; for (size_t i = 0; i < count; i++) { - void* addr = dataSection.ptr + (&_DP_beg)[i]; - ranges[i] = (cast(void**)addr)[0..1]; // TODO: optimize consecutive pointers into single range + auto off = (&_DP_beg)[i]; + if (off == 0) // skip zero entries added by incremental linking + continue; // assumes there is no D-pointer at the very beginning of .data + void* addr = dataSection.ptr + off; + debug(PRINTF) printf(" scan %p\n", addr); + // combine consecutive pointers into single range + if (prev + (void*).sizeof == addr) + ranges[r-1] = ranges[r-1].ptr[0 .. ranges[r-1].length + (void*).sizeof]; + else + ranges[r++] = (cast(void**)addr)[0..1]; + prev = addr; } - _sections._gcRanges = ranges[0..count]; + _sections._gcRanges = ranges[0..r]; } } From 81290069f850cd82735ea9ec2d5e8accee05245f Mon Sep 17 00:00:00 2001 From: Nikolay Tolstokulakov Date: Mon, 17 Apr 2017 07:35:30 +0000 Subject: [PATCH 644/768] apply changes for netbsd --- src/core/sys/posix/pthread.d | 2 -- src/core/sys/posix/sys/select.d | 10 +++++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/core/sys/posix/pthread.d b/src/core/sys/posix/pthread.d index d7b51b3d01..0455bc1eb5 100644 --- a/src/core/sys/posix/pthread.d +++ b/src/core/sys/posix/pthread.d @@ -450,8 +450,6 @@ else version( FreeBSD ) } else version(NetBSD) { - alias void function(void*) _pthread_cleanup_routine; - struct _pthread_cleanup_store { void*[4] pthread_cleanup_pad; diff --git a/src/core/sys/posix/sys/select.d b/src/core/sys/posix/sys/select.d index c63ddf3a6d..47fe922de1 100644 --- a/src/core/sys/posix/sys/select.d +++ b/src/core/sys/posix/sys/select.d @@ -236,27 +236,27 @@ else version(NetBSD) __fd_mask[(FD_SETSIZE + (_NFDBITS - 1)) / _NFDBITS] __fds_bits; } - extern (D) __fd_mask __fdset_mask(uint n) + extern (D) __fd_mask __fdset_mask(uint n) pure { return cast(__fd_mask) 1 << (n % _NFDBITS); } - extern (D) void FD_CLR( int n, fd_set* p ) + extern (D) void FD_CLR( int n, fd_set* p ) pure { p.__fds_bits[n / _NFDBITS] &= ~__fdset_mask(n); } - extern (D) bool FD_ISSET( int n, const(fd_set)* p ) + extern (D) bool FD_ISSET( int n, const(fd_set)* p ) pure { return (p.__fds_bits[n / _NFDBITS] & __fdset_mask(n)) != 0; } - extern (D) void FD_SET( int n, fd_set* p ) + extern (D) void FD_SET( int n, fd_set* p ) pure { p.__fds_bits[n / _NFDBITS] |= __fdset_mask(n); } - extern (D) void FD_ZERO( fd_set* p ) + extern (D) void FD_ZERO( fd_set* p ) pure { fd_set *_p; size_t _n; From 6025a38e7596eaacb704004fdae3dc283dc2c5d9 Mon Sep 17 00:00:00 2001 From: somzzz Date: Thu, 16 Mar 2017 05:56:55 -0700 Subject: [PATCH 645/768] __equals for floats & obj & integral types --- src/object.d | 71 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 9 deletions(-) diff --git a/src/object.d b/src/object.d index 1045923fd2..74995cd68f 100644 --- a/src/object.d +++ b/src/object.d @@ -3251,32 +3251,85 @@ bool __equals(T1, T2, size_t n1, size_t n2)(auto ref T1[n1] lhs, auto ref T2[n2] // lhs == rhs lowers to __equals(lhs, rhs) for arrays of all struct types. // old path: Typeinfo_array => TypeInfo_struct bool __equals(T1, T2)(T1[] lhs, T2[] rhs) -{ +{ if (lhs.length != rhs.length) return false; + if (lhs.length == 0 && rhs.length == 0) + return true; + import core.internal.traits : Unqual; - static assert(is(Unqual!T1 == Unqual!T2), "Internal error."); + alias U1 = Unqual!T1; + alias U2 = Unqual!T2; static @trusted ref R at(R)(R[] r, size_t i) { return r.ptr[i]; } + static @trusted R trustedCast(R, S)(S[] r) { return cast(R) r; } - foreach (const u; 0 .. lhs.length) + static if (is(U1 == void) && is(U2 == void)) + { + return __equals(trustedCast!(ubyte[])(lhs), trustedCast!(ubyte[])(rhs)); + } + else static if (is(U1 == void)) + { + return __equals(trustedCast!(ubyte[])(lhs), rhs); + } + else static if (is(U2 == void)) + { + return __equals(lhs, trustedCast!(ubyte[])(rhs)); + } + else static if (__traits(isIntegral, U1)) { - static if (__traits(compiles, at(lhs, u).opEquals(at(rhs, u)))) + if (!__ctfe) { - if (!at(lhs, u).opEquals(at(rhs, u))) - return false; + import core.stdc.string : memcmp; + return () @trusted { return memcmp(lhs.ptr, rhs.ptr, lhs.length * U1.sizeof) == 0; }(); } else { - if (at(lhs, u).tupleof != at(rhs, u).tupleof) - return false; + foreach (const u; 0 .. lhs.length) + { + if (at(lhs, u) != at(rhs, u)) + return false; + } + return true; } } + else + { + foreach (const u; 0 .. lhs.length) + { + static if (__traits(compiles, __equals(at(lhs, u), at(rhs, u)))) + { + return __equals(at(lhs, u), at(rhs, u)); + } + else static if (__traits(isFloating, U1)) + { + if (at(lhs, u) != at(rhs, u)) + return false; + } + else static if (is(U1 == Object) && is(U2 == Object)) + { + if (!(lhs is rhs) || lhs && lhs.opEquals(rhs)) + return false; + } + else static if (__traits(compiles, at(lhs, u).opEquals(at(rhs, u)))) + { + if (!at(lhs, u).opEquals(at(rhs, u))) + return false; + } + else + { + if (at(lhs, u).tupleof != at(rhs, u).tupleof) + return false; + } + } - return true; + return true; + } } + + unittest { struct A From 1af37a85ef2b1d0e9052bfcd7412af1baab148a4 Mon Sep 17 00:00:00 2001 From: somzzz Date: Tue, 18 Apr 2017 08:15:44 -0700 Subject: [PATCH 646/768] ws --- src/object.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index 74995cd68f..fa00af9c58 100644 --- a/src/object.d +++ b/src/object.d @@ -3251,7 +3251,7 @@ bool __equals(T1, T2, size_t n1, size_t n2)(auto ref T1[n1] lhs, auto ref T2[n2] // lhs == rhs lowers to __equals(lhs, rhs) for arrays of all struct types. // old path: Typeinfo_array => TypeInfo_struct bool __equals(T1, T2)(T1[] lhs, T2[] rhs) -{ +{ if (lhs.length != rhs.length) return false; From fe7079e8a47c902eb33e032f922631f29d97cdb3 Mon Sep 17 00:00:00 2001 From: Martin Date: Sat, 22 Apr 2017 16:06:48 +0200 Subject: [PATCH 647/768] Fix __cmp(void[], void[]) --- src/object.d | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index ba00985e1e..3f4e449a4c 100644 --- a/src/object.d +++ b/src/object.d @@ -3375,7 +3375,10 @@ if (!__traits(isScalar, T1)) alias U2 = Unqual!T2; static assert(is(U1 == U2), "Internal error."); - static @trusted ref R at(R)(R[] r, size_t i) { return r.ptr[i]; } + static if (is(U1 == void)) + static @trusted ref inout(ubyte) at(inout(void)[] r, size_t i) { return (cast(inout(ubyte)*) r.ptr)[i]; } + else + static @trusted ref R at(R)(R[] r, size_t i) { return r.ptr[i]; } // All unsigned byte-wide types = > dstrcmp immutable len = s1.length <= s2.length ? s1.length : s2.length; @@ -3483,6 +3486,22 @@ if (!__traits(isScalar, T1)) compareMinMax!(immutable real); } +// void[] +@safe unittest +{ + void[] a; + const(void)[] b; + + (() @trusted + { + a = cast(void[]) "bb"; + b = cast(const(void)[]) "aa"; + })(); + + assert(__cmp(a, b) > 0); + assert(__cmp(b, a) < 0); +} + // objects @safe unittest { From 538253f15b356cb0098ca20360b039fdda57f40a Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 23 Apr 2017 04:25:09 +0200 Subject: [PATCH 648/768] Fix rt.arrayint (RAX instead of EAX for 64-bit inline asm) --- src/rt/arrayint.d | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/rt/arrayint.d b/src/rt/arrayint.d index a92657a674..f716e2dbc4 100644 --- a/src/rt/arrayint.d +++ b/src/rt/arrayint.d @@ -1252,8 +1252,8 @@ T[] _arraySliceExpMinSliceAssign_i(T[] a, T value, T[] b) align 4; startaddsse2u: add RSI, 32; - movdqu XMM0, [EAX]; - movdqu XMM1, [EAX+16]; + movdqu XMM0, [RAX]; + movdqu XMM1, [RAX+16]; add RAX, 32; psubd XMM0, XMM2; psubd XMM1, XMM2; @@ -1279,8 +1279,8 @@ T[] _arraySliceExpMinSliceAssign_i(T[] a, T value, T[] b) align 4; startaddsse2a: add RSI, 32; - movdqa XMM0, [EAX]; - movdqa XMM1, [EAX+16]; + movdqa XMM0, [RAX]; + movdqa XMM1, [RAX+16]; add RAX, 32; psubd XMM0, XMM2; psubd XMM1, XMM2; @@ -1310,8 +1310,8 @@ T[] _arraySliceExpMinSliceAssign_i(T[] a, T value, T[] b) align 4; startmmx: add RSI, 16; - movq MM0, [EAX]; - movq MM1, [EAX+8]; + movq MM0, [RAX]; + movq MM1, [RAX+8]; add RAX, 16; psubd MM0, MM2; psubd MM1, MM2; @@ -1546,8 +1546,8 @@ T[] _arrayExpSliceMinSliceAssign_i(T[] a, T[] b, T value) align 4; startaddsse2a: add RSI, 32; - movdqa XMM2, [EAX]; - movdqa XMM3, [EAX+16]; + movdqa XMM2, [RAX]; + movdqa XMM3, [RAX+16]; movdqa XMM0, XMM4; movdqa XMM1, XMM4; add RAX, 32; @@ -1579,8 +1579,8 @@ T[] _arrayExpSliceMinSliceAssign_i(T[] a, T[] b, T value) align 4; startmmx: add RSI, 16; - movq MM2, [EAX]; - movq MM3, [EAX+8]; + movq MM2, [RAX]; + movq MM3, [RAX+8]; movq MM0, MM4; movq MM1, MM4; add RAX, 16; From b7dd31fc48f4e912336631b5f14ca624ffb66731 Mon Sep 17 00:00:00 2001 From: e-y-e Date: Tue, 25 Apr 2017 10:16:09 +0100 Subject: [PATCH 649/768] Add support for RISC-V architectures in stdc/errno.d --- src/core/stdc/errno.d | 204 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) diff --git a/src/core/stdc/errno.d b/src/core/stdc/errno.d index 8d309b3a85..3276f9bf9a 100644 --- a/src/core/stdc/errno.d +++ b/src/core/stdc/errno.d @@ -826,6 +826,210 @@ else version( linux ) enum ERFKILL = 132; /// enum EHWPOISON = 133; /// } + else version(RISCV32) + { + enum EDEADLK = 35; /// + enum ENAMETOOLONG = 36; /// + enum ENOLCK = 37; /// + enum ENOSYS = 38; /// + enum ENOTEMPTY = 39; /// + enum ELOOP = 40; /// + enum EWOULDBLOCK = EAGAIN; /// + enum ENOMSG = 42; /// + enum EIDRM = 43; /// + enum ECHRNG = 44; /// + enum EL2NSYNC = 45; /// + enum EL3HLT = 46; /// + enum EL3RST = 47; /// + enum ELNRNG = 48; /// + enum EUNATCH = 49; /// + enum ENOCSI = 50; /// + enum EL2HLT = 51; /// + enum EBADE = 52; /// + enum EBADR = 53; /// + enum EXFULL = 54; /// + enum ENOANO = 55; /// + enum EBADRQC = 56; /// + enum EBADSLT = 57; /// + enum EDEADLOCK = EDEADLK; /// + enum EBFONT = 59; /// + enum ENOSTR = 60; /// + enum ENODATA = 61; /// + enum ETIME = 62; /// + enum ENOSR = 63; /// + enum ENONET = 64; /// + enum ENOPKG = 65; /// + enum EREMOTE = 66; /// + enum ENOLINK = 67; /// + enum EADV = 68; /// + enum ESRMNT = 69; /// + enum ECOMM = 70; /// + enum EPROTO = 71; /// + enum EMULTIHOP = 72; /// + enum EDOTDOT = 73; /// + enum EBADMSG = 74; /// + enum EOVERFLOW = 75; /// + enum ENOTUNIQ = 76; /// + enum EBADFD = 77; /// + enum EREMCHG = 78; /// + enum ELIBACC = 79; /// + enum ELIBBAD = 80; /// + enum ELIBSCN = 81; /// + enum ELIBMAX = 82; /// + enum ELIBEXEC = 83; /// + enum EILSEQ = 84; /// + enum ERESTART = 85; /// + enum ESTRPIPE = 86; /// + enum EUSERS = 87; /// + enum ENOTSOCK = 88; /// + enum EDESTADDRREQ = 89; /// + enum EMSGSIZE = 90; /// + enum EPROTOTYPE = 91; /// + enum ENOPROTOOPT = 92; /// + enum EPROTONOSUPPORT = 93; /// + enum ESOCKTNOSUPPORT = 94; /// + enum EOPNOTSUPP = 95; /// + enum EPFNOSUPPORT = 96; /// + enum EAFNOSUPPORT = 97; /// + enum EADDRINUSE = 98; /// + enum EADDRNOTAVAIL = 99; /// + enum ENETDOWN = 100; /// + enum ENETUNREACH = 101; /// + enum ENETRESET = 102; /// + enum ECONNABORTED = 103; /// + enum ECONNRESET = 104; /// + enum ENOBUFS = 105; /// + enum EISCONN = 106; /// + enum ENOTCONN = 107; /// + enum ESHUTDOWN = 108; /// + enum ETOOMANYREFS = 109; /// + enum ETIMEDOUT = 110; /// + enum ECONNREFUSED = 111; /// + enum EHOSTDOWN = 112; /// + enum EHOSTUNREACH = 113; /// + enum EALREADY = 114; /// + enum EINPROGRESS = 115; /// + enum ESTALE = 116; /// + enum EUCLEAN = 117; /// + enum ENOTNAM = 118; /// + enum ENAVAIL = 119; /// + enum EISNAM = 120; /// + enum EREMOTEIO = 121; /// + enum EDQUOT = 122; /// + enum ENOMEDIUM = 123; /// + enum EMEDIUMTYPE = 124; /// + enum ECANCELED = 125; /// + enum ENOKEY = 126; /// + enum EKEYEXPIRED = 127; /// + enum EKEYREVOKED = 128; /// + enum EKEYREJECTED = 129; /// + enum EOWNERDEAD = 130; /// + enum ENOTRECOVERABLE = 131; /// + enum ERFKILL = 132; /// + enum EHWPOISON = 133; /// + } + else version(RISCV64) + { + enum EDEADLK = 35; /// + enum ENAMETOOLONG = 36; /// + enum ENOLCK = 37; /// + enum ENOSYS = 38; /// + enum ENOTEMPTY = 39; /// + enum ELOOP = 40; /// + enum EWOULDBLOCK = EAGAIN; /// + enum ENOMSG = 42; /// + enum EIDRM = 43; /// + enum ECHRNG = 44; /// + enum EL2NSYNC = 45; /// + enum EL3HLT = 46; /// + enum EL3RST = 47; /// + enum ELNRNG = 48; /// + enum EUNATCH = 49; /// + enum ENOCSI = 50; /// + enum EL2HLT = 51; /// + enum EBADE = 52; /// + enum EBADR = 53; /// + enum EXFULL = 54; /// + enum ENOANO = 55; /// + enum EBADRQC = 56; /// + enum EBADSLT = 57; /// + enum EDEADLOCK = EDEADLK; /// + enum EBFONT = 59; /// + enum ENOSTR = 60; /// + enum ENODATA = 61; /// + enum ETIME = 62; /// + enum ENOSR = 63; /// + enum ENONET = 64; /// + enum ENOPKG = 65; /// + enum EREMOTE = 66; /// + enum ENOLINK = 67; /// + enum EADV = 68; /// + enum ESRMNT = 69; /// + enum ECOMM = 70; /// + enum EPROTO = 71; /// + enum EMULTIHOP = 72; /// + enum EDOTDOT = 73; /// + enum EBADMSG = 74; /// + enum EOVERFLOW = 75; /// + enum ENOTUNIQ = 76; /// + enum EBADFD = 77; /// + enum EREMCHG = 78; /// + enum ELIBACC = 79; /// + enum ELIBBAD = 80; /// + enum ELIBSCN = 81; /// + enum ELIBMAX = 82; /// + enum ELIBEXEC = 83; /// + enum EILSEQ = 84; /// + enum ERESTART = 85; /// + enum ESTRPIPE = 86; /// + enum EUSERS = 87; /// + enum ENOTSOCK = 88; /// + enum EDESTADDRREQ = 89; /// + enum EMSGSIZE = 90; /// + enum EPROTOTYPE = 91; /// + enum ENOPROTOOPT = 92; /// + enum EPROTONOSUPPORT = 93; /// + enum ESOCKTNOSUPPORT = 94; /// + enum EOPNOTSUPP = 95; /// + enum EPFNOSUPPORT = 96; /// + enum EAFNOSUPPORT = 97; /// + enum EADDRINUSE = 98; /// + enum EADDRNOTAVAIL = 99; /// + enum ENETDOWN = 100; /// + enum ENETUNREACH = 101; /// + enum ENETRESET = 102; /// + enum ECONNABORTED = 103; /// + enum ECONNRESET = 104; /// + enum ENOBUFS = 105; /// + enum EISCONN = 106; /// + enum ENOTCONN = 107; /// + enum ESHUTDOWN = 108; /// + enum ETOOMANYREFS = 109; /// + enum ETIMEDOUT = 110; /// + enum ECONNREFUSED = 111; /// + enum EHOSTDOWN = 112; /// + enum EHOSTUNREACH = 113; /// + enum EALREADY = 114; /// + enum EINPROGRESS = 115; /// + enum ESTALE = 116; /// + enum EUCLEAN = 117; /// + enum ENOTNAM = 118; /// + enum ENAVAIL = 119; /// + enum EISNAM = 120; /// + enum EREMOTEIO = 121; /// + enum EDQUOT = 122; /// + enum ENOMEDIUM = 123; /// + enum EMEDIUMTYPE = 124; /// + enum ECANCELED = 125; /// + enum ENOKEY = 126; /// + enum EKEYEXPIRED = 127; /// + enum EKEYREVOKED = 128; /// + enum EKEYREJECTED = 129; /// + enum EOWNERDEAD = 130; /// + enum ENOTRECOVERABLE = 131; /// + enum ERFKILL = 132; /// + enum EHWPOISON = 133; /// + } else version(SystemZ) { enum EDEADLK = 35; /// From 795ab035a17012a6f6d3552e7d4d16190d3f2bc4 Mon Sep 17 00:00:00 2001 From: e-y-e Date: Tue, 25 Apr 2017 10:20:02 +0100 Subject: [PATCH 650/768] Add sizes of pthread types for RISC-V --- src/core/sys/posix/sys/types.d | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/core/sys/posix/sys/types.d b/src/core/sys/posix/sys/types.d index a609f2be22..56f9a9ac04 100644 --- a/src/core/sys/posix/sys/types.d +++ b/src/core/sys/posix/sys/types.d @@ -481,6 +481,30 @@ version (CRuntime_Glibc) enum __SIZEOF_PTHREAD_BARRIER_T = 32; enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4; } + else version (RISCV32) + { + enum __SIZEOF_PTHREAD_ATTR_T = 36; + enum __SIZEOF_PTHREAD_MUTEX_T = 24; + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4; + enum __SIZEOF_PTHREAD_COND_T = 48; + enum __SIZEOF_PTHREAD_CONDATTR_T = 4; + enum __SIZEOF_PTHREAD_RWLOCK_T = 32; + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8; + enum __SIZEOF_PTHREAD_BARRIER_T = 20; + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4; + } + else version (RISCV64) + { + enum __SIZEOF_PTHREAD_ATTR_T = 56; + enum __SIZEOF_PTHREAD_MUTEX_T = 40; + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4; + enum __SIZEOF_PTHREAD_COND_T = 48; + enum __SIZEOF_PTHREAD_CONDATTR_T = 4; + enum __SIZEOF_PTHREAD_RWLOCK_T = 56; + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8; + enum __SIZEOF_PTHREAD_BARRIER_T = 32; + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4; + } else version (S390) { enum __SIZEOF_PTHREAD_ATTR_T = 36; From 835fcedf32b689f887f270354c591c5b76740adc Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 30 Apr 2017 09:50:41 +0200 Subject: [PATCH 651/768] combine consecutive pointers in TLS to a single scan range --- src/rt/sections_win32.d | 14 +++++++++++--- src/rt/sections_win64.d | 14 +++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/rt/sections_win32.d b/src/rt/sections_win32.d index 88ee0bbaf5..8c4b410dde 100644 --- a/src/rt/sections_win32.d +++ b/src/rt/sections_win32.d @@ -116,9 +116,17 @@ void scanTLSRanges(void[] rng, scope void delegate(void* pbeg, void* pend) nothr } else { - size_t count = &_TPend - &_TPbegin; - for (auto p = &_TPbegin; p < &_TPend; p++) - dg(rng.ptr + *p, rng.ptr + *p + (void*).sizeof); + for (auto p = &_TPbegin; p < &_TPend; ) + { + uint beg = *p++; + uint end = beg + cast(uint)((void*).sizeof); + while (p < &_TPend && *p == end) + { + end += (void*).sizeof; + p++; + } + dg(rng.ptr + beg, rng.ptr + end); + } } } diff --git a/src/rt/sections_win64.d b/src/rt/sections_win64.d index ca5c35c223..92bafc8b82 100644 --- a/src/rt/sections_win64.d +++ b/src/rt/sections_win64.d @@ -127,9 +127,17 @@ void scanTLSRanges(void[] rng, scope void delegate(void* pbeg, void* pend) nothr } else { - size_t count = &_TP_end - &_TP_beg; - for (auto p = &_TP_beg; p < &_TP_end; p++) - dg(rng.ptr + *p, rng.ptr + *p + (void*).sizeof); + for (auto p = &_TP_beg; p < &_TP_end; ) + { + uint beg = *p++; + uint end = beg + cast(uint)((void*).sizeof); + while (p < &_TP_end && *p == end) + { + end += (void*).sizeof; + p++; + } + dg(rng.ptr + beg, rng.ptr + end); + } } } From 3d01b5a1ee9e7c6c06abb8e9844e39071267f3f7 Mon Sep 17 00:00:00 2001 From: Joakim Date: Wed, 3 May 2017 09:57:56 +0530 Subject: [PATCH 652/768] Add some Bionic declarations needed in latest phobos, plus fix a type and move a comment --- src/core/stdc/math.d | 6 ++++-- src/core/sys/posix/fcntl.d | 2 ++ src/core/sys/posix/pthread.d | 2 +- src/core/sys/posix/signal.d | 14 +++++++++++++- src/core/sys/posix/stdlib.d | 9 +++++++++ src/core/sys/posix/sys/stat.d | 4 ++++ 6 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/core/stdc/math.d b/src/core/stdc/math.d index e58afce314..6bfcee089e 100644 --- a/src/core/stdc/math.d +++ b/src/core/stdc/math.d @@ -3001,7 +3001,8 @@ else version(CRuntime_Bionic) double tan(double x); /// float tanf(float x); - //real tanl(real x); + // Added since Lollipop + real tanl(real x); /// double acosh(double x); @@ -3096,7 +3097,8 @@ else version(CRuntime_Bionic) float log1pf(float x); //real log1pl(real x); - //double log2(double x); + // Added since Lollipop + double log2(double x); //float log2f(float x); //real log2l(real x); diff --git a/src/core/sys/posix/fcntl.d b/src/core/sys/posix/fcntl.d index 7502b616d2..e102b53b36 100644 --- a/src/core/sys/posix/fcntl.d +++ b/src/core/sys/posix/fcntl.d @@ -679,6 +679,8 @@ else version( CRuntime_Bionic ) int creat(in char*, mode_t); int open(in char*, int, ...); + + enum AT_FDCWD = -100; } else { diff --git a/src/core/sys/posix/pthread.d b/src/core/sys/posix/pthread.d index 0455bc1eb5..488eee5d7a 100644 --- a/src/core/sys/posix/pthread.d +++ b/src/core/sys/posix/pthread.d @@ -511,7 +511,7 @@ else version( CRuntime_Bionic ) struct __pthread_cleanup_t { __pthread_cleanup_t* __cleanup_prev; - __pthread_cleanup_func_t __cleanup_routine; + _pthread_cleanup_routine __cleanup_routine; void* __cleanup_arg; } diff --git a/src/core/sys/posix/signal.d b/src/core/sys/posix/signal.d index b14848a8ec..350df9940c 100644 --- a/src/core/sys/posix/signal.d +++ b/src/core/sys/posix/signal.d @@ -159,16 +159,28 @@ else version( CRuntime_Glibc ) } } else version (FreeBSD) { + // Note: it appears that FreeBSD (prior to 7) and OSX do not support realtime signals // https://github.com/freebsd/freebsd/blob/e79c62ff68fc74d88cb6f479859f6fae9baa5101/sys/sys/signal.h#L117 enum SIGRTMIN = 65; enum SIGRTMAX = 126; } -// Note: it appears that FreeBSD (prior to 7) and OSX do not support realtime signals else version(NetBSD) { enum SIGRTMIN = 33; enum SIGRTMAX = 63; } +else version (CRuntime_Bionic) +{ + enum SIGRTMIN = 32; + version(ARM) + enum SIGRTMAX = 64; + else version(X86) + enum SIGRTMAX = 64; + else version(MIPS32) + enum SIGRTMAX = 128; + else + static assert(false, "Architecture not supported."); +} version( linux ) { diff --git a/src/core/sys/posix/stdlib.d b/src/core/sys/posix/stdlib.d index e4777def65..3d239469f2 100644 --- a/src/core/sys/posix/stdlib.d +++ b/src/core/sys/posix/stdlib.d @@ -112,6 +112,15 @@ else version( Solaris ) { int posix_memalign(void**, size_t, size_t); } +else version( Darwin ) +{ + int posix_memalign(void**, size_t, size_t); +} +else version( CRuntime_Bionic ) +{ + // Added since Lollipop + int posix_memalign(void**, size_t, size_t); +} // // C Extension (CX) diff --git a/src/core/sys/posix/sys/stat.d b/src/core/sys/posix/sys/stat.d index 669b7c7a5b..29c1423d95 100644 --- a/src/core/sys/posix/sys/stat.d +++ b/src/core/sys/posix/sys/stat.d @@ -1110,6 +1110,10 @@ else version( CRuntime_Bionic ) extern (D) bool S_ISREG( uint mode ) { return S_ISTYPE( mode, S_IFREG ); } extern (D) bool S_ISLNK( uint mode ) { return S_ISTYPE( mode, S_IFLNK ); } extern (D) bool S_ISSOCK( uint mode ) { return S_ISTYPE( mode, S_IFSOCK ); } + + // Added since Lollipop + int utimensat(int dirfd, const char *pathname, + ref const(timespec)[2] times, int flags); } else { From 6ac9c090c388646f82410f08d8a018809317ee32 Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Thu, 24 Nov 2016 17:25:39 +0100 Subject: [PATCH 653/768] Add Fiber's guard page in Posix as well Windows Fiber implementation already uses the fiber stack guard page. This brings the similar protection for mmaped fiber stacks, using mprotect. --- changelog/fiber.dd | 9 +++++++++ src/core/thread.d | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 changelog/fiber.dd diff --git a/changelog/fiber.dd b/changelog/fiber.dd new file mode 100644 index 0000000000..926dfa1f41 --- /dev/null +++ b/changelog/fiber.dd @@ -0,0 +1,9 @@ +Add Fiber's stack-protection page for Posix. + +The feature already existing for Windows' fiber implementation is now added to +the systems using mmap to allocate fibers' stacks: After (or before) the last +page used for the Fiber's stack, the page is allocate which is protected for +any kind of access. This will cause system to trap immediately on the fiber's +stack overflow. If in debugger session, one can inspect contents of the memory +before or after stack pointer and it can be seen if it contains END OF FIBER +string pattern. diff --git a/src/core/thread.d b/src/core/thread.d index 0c9904ce15..810fcf18e2 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -4429,6 +4429,9 @@ private: static if( __traits( compiles, mmap ) ) { + // Allocate PAGESIZE more for the memory guard + sz += PAGESIZE; + m_pmem = mmap( null, sz, PROT_READ | PROT_WRITE, @@ -4458,13 +4461,31 @@ private: { m_ctxt.bstack = m_pmem + sz; m_ctxt.tstack = m_pmem + sz; + void* guard = m_pmem; } else { m_ctxt.bstack = m_pmem; m_ctxt.tstack = m_pmem; + void* guard = m_pmem + sz - PAGESIZE; } m_size = sz; + + static if( __traits( compiles, mmap ) ) + { + // Mark end of stack + for ( ubyte* g = cast(ubyte*)guard; g < guard + PAGESIZE; g+= 32) + g[0 .. 32] = cast(ubyte[]) "END OF FIBER -- END OF FIBER -- "; + + // protect end of stack + if ( mprotect(guard, PAGESIZE, PROT_NONE) == -1 ) + abort(); + } + else + { + // Supported only for mmap allocated memory - results are + // undefined if applied to memory not obtained by mmap + } } Thread.add( m_ctxt ); From 3e964f0146edd125329b333f556c393f216bafa4 Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Thu, 27 Apr 2017 14:53:15 +0200 Subject: [PATCH 654/768] Make Fiber's stack protection-page's size configurable This allows configuring the size or turning off completely the fiber's stack's guard page. It can be configured using new Fiber's constructor's parameter `guard_page_size`. --- changelog/fiber-configure.dd | 6 ++++ src/core/thread.d | 58 ++++++++++++++++++++++-------------- 2 files changed, 41 insertions(+), 23 deletions(-) create mode 100644 changelog/fiber-configure.dd diff --git a/changelog/fiber-configure.dd b/changelog/fiber-configure.dd new file mode 100644 index 0000000000..232673566b --- /dev/null +++ b/changelog/fiber-configure.dd @@ -0,0 +1,6 @@ +Make fiber stack protection-page size configurable + +It is now possible to change the guard page size by using +the new Fiber's constructor argument - guard_page_size. It defaults to +`PAGE_SIZE` (the same it used to be on Windows), and specifying 0 will +turn this feature off. diff --git a/src/core/thread.d b/src/core/thread.d index 810fcf18e2..307c8ab1c6 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -3976,18 +3976,21 @@ class Fiber * Params: * fn = The fiber function. * sz = The stack size for this fiber. + * guard_page_size = size of the guard page to trap fiber's stack + * overflows * * In: * fn must not be null. */ - this( void function() fn, size_t sz = PAGESIZE*4 ) nothrow + this( void function() fn, size_t sz = PAGESIZE*4, + size_t guard_page_size = PAGESIZE ) nothrow in { assert( fn ); } body { - allocStack( sz ); + allocStack( sz, guard_page_size ); reset( fn ); } @@ -3999,18 +4002,21 @@ class Fiber * Params: * dg = The fiber function. * sz = The stack size for this fiber. + * guard_page_size = size of the guard page to trap fiber's stack + * overflows * * In: * dg must not be null. */ - this( void delegate() dg, size_t sz = PAGESIZE*4 ) nothrow + this( void delegate() dg, size_t sz = PAGESIZE*4, + size_t guard_page_size = PAGESIZE ) nothrow in { assert( dg ); } body { - allocStack( sz ); + allocStack( sz, guard_page_size); reset( dg ); } @@ -4355,7 +4361,7 @@ private: // // Allocate a new stack for this fiber. // - final void allocStack( size_t sz ) nothrow + final void allocStack( size_t sz, size_t guard_page_size ) nothrow in { assert( !m_pmem && !m_ctxt ); @@ -4380,7 +4386,7 @@ private: { // reserve memory for stack m_pmem = VirtualAlloc( null, - sz + PAGESIZE, + sz + guard_page_size, MEM_RESERVE, PAGE_NOACCESS ); if( !m_pmem ) @@ -4388,7 +4394,7 @@ private: version( StackGrowsDown ) { - void* stack = m_pmem + PAGESIZE; + void* stack = m_pmem + guard_page_size; void* guard = m_pmem; void* pbase = stack + sz; } @@ -4407,13 +4413,16 @@ private: if( !stack ) onOutOfMemoryError(); - // allocate reserved guard page - guard = VirtualAlloc( guard, - PAGESIZE, - MEM_COMMIT, - PAGE_READWRITE | PAGE_GUARD ); - if( !guard ) - onOutOfMemoryError(); + if (guard_page_size) + { + // allocate reserved guard page + guard = VirtualAlloc( guard, + guard_page_size, + MEM_COMMIT, + PAGE_READWRITE | PAGE_GUARD ); + if( !guard ) + onOutOfMemoryError(); + } m_ctxt.bstack = pbase; m_ctxt.tstack = pbase; @@ -4429,8 +4438,8 @@ private: static if( __traits( compiles, mmap ) ) { - // Allocate PAGESIZE more for the memory guard - sz += PAGESIZE; + // Allocate more for the memory guard + sz += guard_page_size; m_pmem = mmap( null, sz, @@ -4467,19 +4476,22 @@ private: { m_ctxt.bstack = m_pmem; m_ctxt.tstack = m_pmem; - void* guard = m_pmem + sz - PAGESIZE; + void* guard = m_pmem + sz - guard_page_size; } m_size = sz; static if( __traits( compiles, mmap ) ) { - // Mark end of stack - for ( ubyte* g = cast(ubyte*)guard; g < guard + PAGESIZE; g+= 32) - g[0 .. 32] = cast(ubyte[]) "END OF FIBER -- END OF FIBER -- "; + if (guard_page_size) + { + // Mark end of stack + for ( ubyte* g = cast(ubyte*)guard; g < guard + guard_page_size; g+= 32) + g[0 .. 32] = cast(ubyte[]) "END OF FIBER -- END OF FIBER -- "; - // protect end of stack - if ( mprotect(guard, PAGESIZE, PROT_NONE) == -1 ) - abort(); + // protect end of stack + if ( mprotect(guard, guard_page_size, PROT_NONE) == -1 ) + abort(); + } } else { From bd719ea3bd787f9b06a11a54e53a709a41b20568 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 5 May 2017 13:10:51 +0200 Subject: [PATCH 655/768] change guard_page_size to camelCase --- src/core/thread.d | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index 307c8ab1c6..197727e499 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -3976,21 +3976,21 @@ class Fiber * Params: * fn = The fiber function. * sz = The stack size for this fiber. - * guard_page_size = size of the guard page to trap fiber's stack + * guardPageSize = size of the guard page to trap fiber's stack * overflows * * In: * fn must not be null. */ this( void function() fn, size_t sz = PAGESIZE*4, - size_t guard_page_size = PAGESIZE ) nothrow + size_t guardPageSize = PAGESIZE ) nothrow in { assert( fn ); } body { - allocStack( sz, guard_page_size ); + allocStack( sz, guardPageSize ); reset( fn ); } @@ -4002,21 +4002,21 @@ class Fiber * Params: * dg = The fiber function. * sz = The stack size for this fiber. - * guard_page_size = size of the guard page to trap fiber's stack + * guardPageSize = size of the guard page to trap fiber's stack * overflows * * In: * dg must not be null. */ this( void delegate() dg, size_t sz = PAGESIZE*4, - size_t guard_page_size = PAGESIZE ) nothrow + size_t guardPageSize = PAGESIZE ) nothrow in { assert( dg ); } body { - allocStack( sz, guard_page_size); + allocStack( sz, guardPageSize); reset( dg ); } @@ -4361,7 +4361,7 @@ private: // // Allocate a new stack for this fiber. // - final void allocStack( size_t sz, size_t guard_page_size ) nothrow + final void allocStack( size_t sz, size_t guardPageSize ) nothrow in { assert( !m_pmem && !m_ctxt ); @@ -4386,7 +4386,7 @@ private: { // reserve memory for stack m_pmem = VirtualAlloc( null, - sz + guard_page_size, + sz + guardPageSize, MEM_RESERVE, PAGE_NOACCESS ); if( !m_pmem ) @@ -4394,7 +4394,7 @@ private: version( StackGrowsDown ) { - void* stack = m_pmem + guard_page_size; + void* stack = m_pmem + guardPageSize; void* guard = m_pmem; void* pbase = stack + sz; } @@ -4413,11 +4413,11 @@ private: if( !stack ) onOutOfMemoryError(); - if (guard_page_size) + if (guardPageSize) { // allocate reserved guard page guard = VirtualAlloc( guard, - guard_page_size, + guardPageSize, MEM_COMMIT, PAGE_READWRITE | PAGE_GUARD ); if( !guard ) @@ -4439,7 +4439,7 @@ private: static if( __traits( compiles, mmap ) ) { // Allocate more for the memory guard - sz += guard_page_size; + sz += guardPageSize; m_pmem = mmap( null, sz, @@ -4476,20 +4476,20 @@ private: { m_ctxt.bstack = m_pmem; m_ctxt.tstack = m_pmem; - void* guard = m_pmem + sz - guard_page_size; + void* guard = m_pmem + sz - guardPageSize; } m_size = sz; static if( __traits( compiles, mmap ) ) { - if (guard_page_size) + if (guardPageSize) { // Mark end of stack - for ( ubyte* g = cast(ubyte*)guard; g < guard + guard_page_size; g+= 32) + for ( ubyte* g = cast(ubyte*)guard; g < guard + guardPageSize; g+= 32) g[0 .. 32] = cast(ubyte[]) "END OF FIBER -- END OF FIBER -- "; // protect end of stack - if ( mprotect(guard, guard_page_size, PROT_NONE) == -1 ) + if ( mprotect(guard, guardPageSize, PROT_NONE) == -1 ) abort(); } } From 3b7117bfa791a9530524524d03982f9ba3eeb2e0 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 5 May 2017 15:24:27 +0200 Subject: [PATCH 656/768] add test for Fiber guard page --- posix.mak | 2 +- test/thread/Makefile | 18 ++++++++++++++++ test/thread/src/fiber_guard_page.d | 33 ++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 test/thread/Makefile create mode 100644 test/thread/src/fiber_guard_page.d diff --git a/posix.mak b/posix.mak index 22d76dfc87..d15aa97511 100644 --- a/posix.mak +++ b/posix.mak @@ -197,7 +197,7 @@ $(DRUNTIME): $(OBJS) $(SRCS) UT_MODULES:=$(patsubst src/%.d,$(ROOT)/unittest/%,$(SRCS)) HAS_ADDITIONAL_TESTS:=$(shell test -d test && echo 1) ifeq ($(HAS_ADDITIONAL_TESTS),1) - ADDITIONAL_TESTS:=test/init_fini test/exceptions test/coverage test/profile test/cycles test/allocations test/typeinfo + ADDITIONAL_TESTS:=test/init_fini test/exceptions test/coverage test/profile test/cycles test/allocations test/typeinfo test/thread ADDITIONAL_TESTS+=$(if $(SHARED),test/shared,) endif diff --git a/test/thread/Makefile b/test/thread/Makefile new file mode 100644 index 0000000000..ca27d1fb86 --- /dev/null +++ b/test/thread/Makefile @@ -0,0 +1,18 @@ +include ../common.mak + +TESTS:=fiber_guard_page + +.PHONY: all clean +all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) + +# segfault || bus error (OSX) +$(ROOT)/fiber_guard_page.done: $(ROOT)/%.done : $(ROOT)/% + @echo Testing $* + $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS); rc=$$?; [ $$rc -eq 139 ] || [ $$rc -eq 138 ] + @touch $@ + +$(ROOT)/%: $(SRC)/%.d + $(QUIET)$(DMD) $(DFLAGS) -of$@ $< + +clean: + rm -rf $(GENERATED) diff --git a/test/thread/src/fiber_guard_page.d b/test/thread/src/fiber_guard_page.d new file mode 100644 index 0000000000..de9cc5b1dc --- /dev/null +++ b/test/thread/src/fiber_guard_page.d @@ -0,0 +1,33 @@ +import core.thread; +import core.sys.posix.sys.mman; + +// this should be true for most architectures +version = StackGrowsDown; + +int recurse(int i) +{ + return i == 0 ? 0 : recurse(i - 1) + i; +} + +void main() +{ + import core.stdc.stdio; + enum stackSize = 4096; + enum n = size_t.sizeof == 8 ? 128 : 512; + auto fib1 = new Fiber(function{ recurse(n); }, stackSize); + // allocate a page below (above) the fiber's stack to make stack overflows possible (w/o segfaulting) + version (StackGrowsDown) + { + auto stackBottom1 = fib1.tupleof[8]; // m_pmem + auto p = mmap(stackBottom1 - 8 * stackSize, 8 * stackSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); + assert(p !is null, "failed to allocate page"); + } + else + { + auto stackTop1 = fib1.tupleof[8] + fib1.tupleof[7]; // m_pmem + m_sz + auto p = mmap(stackTop1, 8 * stackSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); + assert(p !is null, "failed to allocate page"); + } + // the guard page should prevent a mem corruption by stack overflow and cause a segfault instead + fib1.call(); +} From a5c0dc2d0c58ac408859b8c1b99da9b1036dacfc Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 5 May 2017 15:33:17 +0200 Subject: [PATCH 657/768] do not write to guard page - no point in creating a dirty write protected page --- src/core/thread.d | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index 197727e499..24003b0c79 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -4484,10 +4484,6 @@ private: { if (guardPageSize) { - // Mark end of stack - for ( ubyte* g = cast(ubyte*)guard; g < guard + guardPageSize; g+= 32) - g[0 .. 32] = cast(ubyte[]) "END OF FIBER -- END OF FIBER -- "; - // protect end of stack if ( mprotect(guard, guardPageSize, PROT_NONE) == -1 ) abort(); From 6be1794e8700041e348efcf0b5a1731623c85fbb Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Sat, 6 May 2017 12:16:47 +0200 Subject: [PATCH 658/768] Simplify fiber guard page test --- test/thread/src/fiber_guard_page.d | 37 ++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/test/thread/src/fiber_guard_page.d b/test/thread/src/fiber_guard_page.d index de9cc5b1dc..212f4c857e 100644 --- a/test/thread/src/fiber_guard_page.d +++ b/test/thread/src/fiber_guard_page.d @@ -2,32 +2,45 @@ import core.thread; import core.sys.posix.sys.mman; // this should be true for most architectures +// (taken from core.thread) version = StackGrowsDown; -int recurse(int i) +enum stackSize = 4096; + +// Simple method that causes a stack overflow +void stackMethod() { - return i == 0 ? 0 : recurse(i - 1) + i; + // Over the stack size, so it overflows the stack + int[stackSize/int.sizeof+100] x; } void main() { - import core.stdc.stdio; - enum stackSize = 4096; - enum n = size_t.sizeof == 8 ? 128 : 512; - auto fib1 = new Fiber(function{ recurse(n); }, stackSize); + auto test_fiber = new Fiber(&stackMethod, stackSize); + // allocate a page below (above) the fiber's stack to make stack overflows possible (w/o segfaulting) version (StackGrowsDown) { - auto stackBottom1 = fib1.tupleof[8]; // m_pmem - auto p = mmap(stackBottom1 - 8 * stackSize, 8 * stackSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); + static assert(__traits(identifier, test_fiber.tupleof[8]) == "m_pmem"); + auto stackBottom = test_fiber.tupleof[8]; + auto p = mmap(stackBottom - 8 * stackSize, 8 * stackSize, + PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); assert(p !is null, "failed to allocate page"); } else { - auto stackTop1 = fib1.tupleof[8] + fib1.tupleof[7]; // m_pmem + m_sz - auto p = mmap(stackTop1, 8 * stackSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); + auto m_sz = test_fiber.tupleof[7]; + auto m_pmem = test_fiber.tupleof[8]; + static assert(__traits(identifier, test_fiber.tupleof[7]) == "m_size"); + static assert(__traits(identifier, test_fiber.tupleof[8]) == "m_pmem"); + + auto stackTop = m_pmem + m_sz; + auto p = mmap(stackTop, 8 * stackSize, + PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); assert(p !is null, "failed to allocate page"); } - // the guard page should prevent a mem corruption by stack overflow and cause a segfault instead - fib1.call(); + + // the guard page should prevent a mem corruption by stack + // overflow and cause a segfault instead (or generate SIGBUS on *BSD flavors) + test_fiber.call(); } From c85b3c075065a8fd91575aadf94521893ccf0dfc Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sat, 6 May 2017 14:39:59 +0200 Subject: [PATCH 659/768] Remove SH64 version code. --- benchmark/gcbench/vdparser.extra/vdc/versions.d | 1 - src/core/sys/linux/sys/mman.d | 16 ---------------- src/core/sys/posix/sys/mman.d | 2 -- 3 files changed, 19 deletions(-) diff --git a/benchmark/gcbench/vdparser.extra/vdc/versions.d b/benchmark/gcbench/vdparser.extra/vdc/versions.d index 38eec4747d..2de8f98008 100644 --- a/benchmark/gcbench/vdparser.extra/vdc/versions.d +++ b/benchmark/gcbench/vdparser.extra/vdc/versions.d @@ -87,7 +87,6 @@ static @property int[string] sPredefinedVersions() "HPPA" : -1, "HPPA64" : -1, "SH" : -1, - "SH64" : -1, "Alpha" : -1, "Alpha_SoftFloat" : -1, "Alpha_HardFloat" : -1, diff --git a/src/core/sys/linux/sys/mman.d b/src/core/sys/linux/sys/mman.d index 109c085efe..35ff58297f 100644 --- a/src/core/sys/linux/sys/mman.d +++ b/src/core/sys/linux/sys/mman.d @@ -111,22 +111,6 @@ else version (SH) MAP_HUGETLB = 0x40000, } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sh/bits/mman.h -else version (SH64) -{ - static if (__USE_MISC) enum - { - MAP_GROWSDOWN = 0x0100, - MAP_DENYWRITE = 0x0800, - MAP_EXECUTABLE = 0x1000, - MAP_LOCKED = 0x2000, - MAP_NORESERVE = 0x4000, - MAP_POPULATE = 0x8000, - MAP_NONBLOCK = 0x10000, - MAP_STACK = 0x20000, - MAP_HUGETLB = 0x40000, - } -} // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/mman.h else version (SPARC) { diff --git a/src/core/sys/posix/sys/mman.d b/src/core/sys/posix/sys/mman.d index 104c29da2e..c3cfec645d 100644 --- a/src/core/sys/posix/sys/mman.d +++ b/src/core/sys/posix/sys/mman.d @@ -245,8 +245,6 @@ version( CRuntime_Glibc ) } else version (SH) private enum DEFAULTS = true; - else version (SH64) - private enum DEFAULTS = true; else version (AArch64) private enum DEFAULTS = true; else version (ARM) From ae935af322b682591fd3441a2bde61e6e084db5d Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Sat, 6 May 2017 17:22:52 +0100 Subject: [PATCH 660/768] Fixup fiber guard page changelog During the review of GitHub #1698, the "END OF FIBRE" marker data was removed to avoid dirtying the guard page. Hence, the corresponding comment in the release notes doesn't apply anymore. --- changelog/fiber.dd | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/changelog/fiber.dd b/changelog/fiber.dd index 926dfa1f41..ef989c6db4 100644 --- a/changelog/fiber.dd +++ b/changelog/fiber.dd @@ -4,6 +4,4 @@ The feature already existing for Windows' fiber implementation is now added to the systems using mmap to allocate fibers' stacks: After (or before) the last page used for the Fiber's stack, the page is allocate which is protected for any kind of access. This will cause system to trap immediately on the fiber's -stack overflow. If in debugger session, one can inspect contents of the memory -before or after stack pointer and it can be seen if it contains END OF FIBER -string pattern. +stack overflow. From 13ffd4e3dc0fc7af9a1fa6a5bb02f85e8bd146c4 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Wed, 5 Apr 2017 11:45:03 -0400 Subject: [PATCH 661/768] Clean up awkward inner function for cycle sorting. --- src/rt/minfo.d | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/src/rt/minfo.d b/src/rt/minfo.d index 0358e22994..e6585d57c8 100644 --- a/src/rt/minfo.d +++ b/src/rt/minfo.d @@ -460,12 +460,9 @@ struct ModuleGroup return true; } - // `cycle` is set to `true` if deprecated cycle error otherwise set `result`. - void doSort(size_t relevantFlags, ref bool cycle, ref immutable(ModuleInfo)*[] result) + // returns `false` if deprecated cycle error otherwise set `result`. + bool doSort(size_t relevantFlags, ref immutable(ModuleInfo)*[] result) { - if (cycle) - return; - clearFlags(relevant); clearFlags(ctorstart); clearFlags(ctordone); @@ -495,10 +492,7 @@ struct ModuleGroup if (!bt(ctordone, idx)) { if (!processMod(idx)) - { - cycle = true; - return; - } + return false; } } @@ -506,22 +500,21 @@ struct ModuleGroup { // no ctors in the list. .free(ctors); - result = null; - return; } - - ctors = cast(immutable(ModuleInfo)**).realloc(ctors, ctoridx * (void*).sizeof); - if (ctors is null) - assert(0); - result = ctors[0 .. ctoridx]; - return; + else + { + ctors = cast(immutable(ModuleInfo)**).realloc(ctors, ctoridx * (void*).sizeof); + if (ctors is null) + assert(0); + result = ctors[0 .. ctoridx]; + } + return true; } - // finally, do the sorting for both shared and tls ctors. - bool cycle = false; - doSort(MIctor | MIdtor, cycle, _ctors); - doSort(MItlsctor | MItlsdtor, cycle, _tlsctors); - if (cycle) + // finally, do the sorting for both shared and tls ctors. If either returns false, + // print the deprecation warning. + if (!doSort(MIctor | MIdtor, _ctors) || + !doSort(MItlsctor | MItlsdtor, _tlsctors)) { // print a warning import core.stdc.stdio : fprintf, stderr; From c56e8e0d8d599b1742fe85210f07adacf07e5e2a Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Sun, 7 May 2017 16:40:47 +0000 Subject: [PATCH 662/768] Fix issue 16856: Apply correct alignment on the Unwind_Exception structure In libundwind, _Unwind_Exception structure is defined as follows: ``` struct _Unwind_Exception { uint64_t exception_class; _Unwind_Exception_Cleanup_Fn exception_cleanup; unsigned long private_1; unsigned long private_2; } __attribute__((__aligned__)); ``` so the alignment is done on the entire structure, and it depends on the architecture. This sets the structure to be 16bit aligned on the X86_64, so the binary layout matches and that the C++ compiler's optimizations are still valid (for example, on FreeBSD-12, exception handling was broken because libunwind assumes correct alignment, so the fast but fragile instructions were used. --- src/rt/unwind.d | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/rt/unwind.d b/src/rt/unwind.d index 6e7175afab..f098de3002 100644 --- a/src/rt/unwind.d +++ b/src/rt/unwind.d @@ -48,12 +48,25 @@ alias _Unwind_Exception_Cleanup_Fn = void function( _Unwind_Reason_Code reason, _Unwind_Exception *exc); -struct _Unwind_Exception +version (X86_64) { - align(8) _Unwind_Exception_Class exception_class; - _Unwind_Exception_Cleanup_Fn exception_cleanup; - _Unwind_Word private_1; - _Unwind_Word private_2; + align(16) struct _Unwind_Exception + { + _Unwind_Exception_Class exception_class; + _Unwind_Exception_Cleanup_Fn exception_cleanup; + _Unwind_Word private_1; + _Unwind_Word private_2; + } +} +else +{ + align(8) struct _Unwind_Exception + { + _Unwind_Exception_Class exception_class; + _Unwind_Exception_Cleanup_Fn exception_cleanup; + _Unwind_Word private_1; + _Unwind_Word private_2; + } } struct _Unwind_Context; From c0c720c0cfc82331c063d193131e4502af91806c Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Tue, 18 Oct 2016 22:40:09 +0200 Subject: [PATCH 663/768] Print exception and abort if no handler is found Previously, dwarf exception handler was relying on a fact that running user code is always enclosed in the catch-all exception handler. That might not be the case if the user (with debugger, for example) change value of `rt_trapExceptions` to false. To cover this scenario, instead of issuing fatal error, we wil just print exception info and abort the program. --- changelog/unhandled.dd | 8 ++++++++ src/rt/dwarfeh.d | 9 ++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 changelog/unhandled.dd diff --git a/changelog/unhandled.dd b/changelog/unhandled.dd new file mode 100644 index 0000000000..c11d1d72eb --- /dev/null +++ b/changelog/unhandled.dd @@ -0,0 +1,8 @@ +Print unhandled exception's trace and abort if rt_trapExceptions is set + +D exception handling was assuming the top level exception handler, +so all exceptions would be handled somewhere. In case rt_trapExceptions +is cleared, this handler would not be enabled, and this assertion +would fail, aborting the program, but without any information +about the exception. This is now changed, so the exception information +will be printed to the stderr, followed by abort. diff --git a/src/rt/dwarfeh.d b/src/rt/dwarfeh.d index e650fb35ae..fb00bb6694 100644 --- a/src/rt/dwarfeh.d +++ b/src/rt/dwarfeh.d @@ -13,6 +13,7 @@ module rt.dwarfeh; version (Posix): +import rt.dmain2: _d_print_throwable; import rt.unwind; import core.stdc.stdio; import core.stdc.stdlib; @@ -217,11 +218,13 @@ extern(C) void _d_throwdwarf(Throwable o) case _URC_END_OF_STACK: /* Unwound the stack without encountering a catch clause. * In C++, this would mean call uncaught_exception(). - * In D, this should never happen since everything is enclosed - * by a top-level try/catch. + * In D, this can happen only if `rt_trapException` is cleared + * since otherwise everything is enclosed by a top-level + * try/catch. */ fprintf(stderr, "uncaught exception\n"); - terminate(__LINE__); // should never happen + _d_print_throwable(o); + abort(); assert(0); case _URC_FATAL_PHASE1_ERROR: From 8eefed3a9877d7029480cc82e4b5d2cf460d8b20 Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Wed, 19 Oct 2016 09:14:32 +0200 Subject: [PATCH 664/768] Add test for rt_trapException handling in dwarf --- test/exceptions/Makefile | 4 +++- test/exceptions/src/rt_trap_exceptions.d | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 test/exceptions/src/rt_trap_exceptions.d diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index 5aa22b2631..f6da65b38d 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -2,7 +2,7 @@ include ../common.mak TESTS:=stderr_msg unittest_assert invalid_memory_operation unknown_gc static_dtor chain ifeq ($(OS)-$(BUILD),linux-debug) - TESTS:=$(TESTS) line_trace + TESTS:=$(TESTS) line_trace rt_trap_exceptions endif ifeq ($(OS)-$(BUILD),freebsd-debug) TESTS:=$(TESTS) line_trace @@ -33,6 +33,8 @@ $(ROOT)/invalid_memory_operation.done: STDERR_EXP="InvalidMemoryOperationError" $(ROOT)/unknown_gc.done: STDERR_EXP="'unknowngc'" $(ROOT)/static_dtor.done: STDERR_EXP="dtor_called_more_than_once" $(ROOT)/static_dtor.done: NEGATE=! +$(ROOT)/rt_trap_exceptions.done: STDERR_EXP="uncaught exception\nobject.Exception@rt_trap_exceptions.d(11): exception" +$(ROOT)/rt_trap_exceptions.done: NEGATE=! $(ROOT)/%.done: $(ROOT)/% @echo Testing $* $(NEGATE) $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(RUN_ARGS) 2>&1 1>/dev/null | grep -qF $(STDERR_EXP) diff --git a/test/exceptions/src/rt_trap_exceptions.d b/test/exceptions/src/rt_trap_exceptions.d new file mode 100644 index 0000000000..ca9ae9cde8 --- /dev/null +++ b/test/exceptions/src/rt_trap_exceptions.d @@ -0,0 +1,13 @@ +// Code adapted from +// http://arsdnet.net/this-week-in-d/2016-aug-07.html +extern extern(C) __gshared bool rt_trapExceptions; +extern extern(C) int _d_run_main(int, char**, void*); + +extern(C) int main(int argc, char** argv) { + rt_trapExceptions = false; + return _d_run_main(argc, argv, &_main); +} + +int _main() { + throw new Exception("this will abort"); +} From a2ead6dd04efdfeb283b72daf167e85fe8db9c49 Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Wed, 19 Oct 2016 22:31:47 +0200 Subject: [PATCH 665/768] Fix issue 11594: Check if the monitor is null in _d_monitorenter In case of ``` synchronized (null) { // ... } ``` runtime will try to access __monitor field on a null, without checking if it's a null and it will segfault, leaving programmer clueless. https://issues.dlang.org/show_bug.cgi?id=11594 --- src/rt/monitor_.d | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/rt/monitor_.d b/src/rt/monitor_.d index be0672e255..435c18d19d 100644 --- a/src/rt/monitor_.d +++ b/src/rt/monitor_.d @@ -57,6 +57,11 @@ extern (C) void _d_monitordelete(Object h, bool det) } extern (C) void _d_monitorenter(Object h) +in +{ + assert(h !is null, "Synchronized object must not be null."); +} +body { auto m = cast(Monitor*) ensureMonitor(h); auto i = m.impl; From 1d731507b2e5435d9f44fc1af082087265ec1f22 Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Sun, 7 May 2017 17:45:34 +0000 Subject: [PATCH 666/768] Ensure that valid object is passed to core.sync.mutex's const. Inside `in` contract, the constructor of `core.sync.mutex.Mutex` will check if the `__monitor` is already initialized, without checking if the passed object is not null. https://issues.dlang.org/show_bug.cgi?id=11594 --- src/core/sync/mutex.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index 605438c38f..1065c3aaee 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -122,6 +122,8 @@ class Mutex : if (is(Q == Mutex) || is(Q == shared Mutex)) in { + assert(obj !is null, + "Error: the argument passed to Mutex.this(Object obj) is null."); assert(obj.__monitor is null, "The provided object has a monitor already set!"); } From ab643622b2d182f60c3b5f3ea150c01d61524943 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 7 May 2017 21:27:09 +0200 Subject: [PATCH 667/768] change default to conservative scanning --- src/rt/sections.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rt/sections.d b/src/rt/sections.d index b83e36b502..21c580af66 100644 --- a/src/rt/sections.d +++ b/src/rt/sections.d @@ -79,9 +79,9 @@ bool scanDataSegPrecisely() nothrow @nogc string opt = rt_configOption("scanDataSeg"); switch(opt) { + case "": case "conservative": return false; - case "": case "precise": return true; default: From 29b5e7367919efb5f6dc093285d735cfa923d30f Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Tue, 21 Mar 2017 09:48:07 +0100 Subject: [PATCH 668/768] Disable copying of inotify_event inotify_event's last member is flexible array member, where the real size of the array is contained in `len` field. However, D's runtime will not copy this field at all, producing garbage in the copied instances. This disables automatic copying of this struct. --- src/core/sys/linux/sys/inotify.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/sys/linux/sys/inotify.d b/src/core/sys/linux/sys/inotify.d index cb1b8d2bdb..9263426d68 100644 --- a/src/core/sys/linux/sys/inotify.d +++ b/src/core/sys/linux/sys/inotify.d @@ -18,6 +18,8 @@ struct inotify_event uint cookie; uint len; char[0] name; + + @disable this(this); } enum: uint From 0940161de92bf1fe2fe32765fe3a6954a9ebffea Mon Sep 17 00:00:00 2001 From: Yazan Dabain Date: Wed, 10 May 2017 23:00:44 +0300 Subject: [PATCH 669/768] Simplify backtrace output to stop at D main() function --- src/rt/backtrace/dwarf.d | 2 +- test/exceptions/line_trace.exp | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/rt/backtrace/dwarf.d b/src/rt/backtrace/dwarf.d index 11074faeb6..139c09b9ff 100644 --- a/src/rt/backtrace/dwarf.d +++ b/src/rt/backtrace/dwarf.d @@ -90,7 +90,7 @@ int traceHandlerOpApplyImpl(const void*[] callstack, scope int delegate(ref size auto output = buffer[0 .. bufferLength]; auto pos = i; ret = dg(pos, output); - if (ret) break; + if (ret || symbol == "_Dmain") break; } return ret; } diff --git a/test/exceptions/line_trace.exp b/test/exceptions/line_trace.exp index d0111a0360..3b11b437be 100644 --- a/test/exceptions/line_trace.exp +++ b/test/exceptions/line_trace.exp @@ -2,8 +2,3 @@ object.Exception@src/line_trace.d(17): exception ---------------- src/line_trace.d:17 void line_trace.f1() [ADDR] src/line_trace.d:5 _Dmain [ADDR] -src/rt/dmain2.d:476 _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [ADDR] -src/rt/dmain2.d:451 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(void delegate()) [ADDR] -src/rt/dmain2.d:476 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [ADDR] -src/rt/dmain2.d:451 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(void delegate()) [ADDR] -src/rt/dmain2.d:484 _d_run_main [ADDR] From 11ac522f4386fb02dbf0d601a1b36e3180c826bb Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 11 May 2017 15:13:56 -0700 Subject: [PATCH 670/768] fix Issue 13186 - core/sys/posix/sys/uio.d is not linked into the standard lib --- mak/SRCS | 1 + 1 file changed, 1 insertion(+) diff --git a/mak/SRCS b/mak/SRCS index 90e795f7c5..a5a2c41eab 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -59,6 +59,7 @@ SRCS=\ src\core\sys\posix\sys\socket.d \ src\core\sys\posix\sys\stat.d \ src\core\sys\posix\sys\wait.d \ + src\core\sys\posix\sys\uio.d \ src\core\sys\posix\netdb.d \ src\core\sys\posix\sys\ioctl.d \ src\core\sys\posix\sys\utsname.d \ From 75aefaecadec283878bfb10397212a531cee1127 Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Sun, 23 Oct 2016 11:22:49 +0200 Subject: [PATCH 671/768] Add new options for Linux's fallocate(2) Linux's fallocate in the kernels newer than 3.15 brings three new options: FALLOC_FL_COLLAPSE_RANGE FALLOC_FL_ZERO_RANGE FALLOC_FL_INSERT_RANGE which are now defined in fcntl.d --- src/core/sys/linux/fcntl.d | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/sys/linux/fcntl.d b/src/core/sys/linux/fcntl.d index 2d15aa118c..44ac397d2e 100644 --- a/src/core/sys/linux/fcntl.d +++ b/src/core/sys/linux/fcntl.d @@ -10,7 +10,11 @@ nothrow: enum { FALLOC_FL_KEEP_SIZE = 0x01, FALLOC_FL_PUNCH_HOLE = 0x02, - FALLOC_FL_NO_HIDE_STALE = 0x04 + FALLOC_FL_NO_HIDE_STALE = 0x04, + FALLOC_FL_COLLAPSE_RANGE = 0x08, + FALLOC_FL_ZERO_RANGE = 0x10, + FALLOC_FL_INSERT_RANGE = 0x20, + FALLOC_FL_UNSHARE_RANGE = 0x40 } // Linux-specific fallocate From a1fb3915f562428741324ac5b319d9316fb57231 Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Sat, 13 May 2017 11:36:31 +0200 Subject: [PATCH 672/768] Fix issue 9275: Add test for removeRoot Issue 9275 describes the runtime crashing on the invalid pointer passed to removeRoot, instead of documented no-op. This has been fixed in the meantime, so unittest is added as a guarantee that it stays so. --- src/gc/impl/conservative/gc.d | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index fe1ca5f858..10726554a0 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -3368,3 +3368,12 @@ unittest assert(thrown); */ } + +unittest +{ + import core.memory; + + // https://issues.dlang.org/show_bug.cgi?id=9275 + GC.removeRoot(null); + GC.removeRoot(cast(void*)13); +} From 3cf23d26a71836725c5da591969585adf04ba9fd Mon Sep 17 00:00:00 2001 From: Nikolay Tolstokulakov Date: Thu, 11 May 2017 11:16:09 +0000 Subject: [PATCH 673/768] NetBSD: port struct statvfs from netbsd source --- src/core/sys/posix/sys/statvfs.d | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/core/sys/posix/sys/statvfs.d b/src/core/sys/posix/sys/statvfs.d index eb7435903c..57a64aef7f 100644 --- a/src/core/sys/posix/sys/statvfs.d +++ b/src/core/sys/posix/sys/statvfs.d @@ -84,6 +84,53 @@ version(CRuntime_Glibc) { } } +else version(NetBSD) +{ + enum _VFS_MNAMELEN = 1024; + enum _VFS_NAMELEN = 32; + + struct fsid_t + { + int[2] __fsid_val; + } + + struct statvfs_t + { + c_ulong f_flag; + c_ulong f_bsize; + c_ulong f_frsize; + c_ulong f_iosize; + fsblkcnt_t f_blocks; + fsblkcnt_t f_bfree; + fsblkcnt_t f_bavail; + fsblkcnt_t f_bresvd; + fsfilcnt_t f_files; + fsfilcnt_t f_ffree; + fsfilcnt_t f_favail; + fsfilcnt_t f_fresvd; + ulong f_syncreads; + ulong f_syncwrites; + ulong f_asyncreads; + ulong f_asyncwrites; + fsid_t f_fsidx; + c_ulong f_fsid; + c_ulong f_namemax; + int f_owner; + int[4] f_spare; + char[_VFS_NAMELEN] f_fstypename; + char[_VFS_MNAMELEN] f_mntonname; + char[_VFS_MNAMELEN] f_mntfromname; + } + + enum FFlag + { + ST_RDONLY = 1, /* Mount read-only. */ + ST_NOSUID = 2 + } + + int statvfs (const char * file, statvfs_t* buf); + int fstatvfs (int fildes, statvfs_t *buf) @trusted; +} else { struct statvfs_t From 96c327ed299839de33977f2873e85b55d179eafe Mon Sep 17 00:00:00 2001 From: Geod24 Date: Thu, 27 Apr 2017 12:36:01 +0200 Subject: [PATCH 674/768] Add missing binding in SRCS Some files were not part of `mak/SRCS`, and thus were not compiled it. Since they are C bindings, it was unnoticed for a long time, as most operations won't require the rare symbols this module defined. However for things such as static array declarations, the `__init` of the struct might be required, which triggers a linker error. One simple way to trigger the issue was to use the function `timersub` defined in `core.sys.linux.sys.time`: --- src/ocean/core/UnitTestRunner.d:671: undefined reference to 'core.sys.linux.sys.time.timersub(const(core.sys.posix.sys.time.timeval*), const(core.sys.posix.sys.time.timeval*), core.sys.posix.sys.time.timeval*)' --- The change to win{32,64}.mak was mandatory as the toolchain on the auto-tester cannot cope with that number of files, and errors with "Command too long". DMD support 'response file' for that purpose. Using `*` is a DigitalMars MAKE extension which will pass commands > 996 chars via the env. --- mak/COPY | 1 + mak/SRCS | 32 +++++++++++++++++++++++++++----- win32.mak | 5 ++--- win64.mak | 5 ++--- 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/mak/COPY b/mak/COPY index 3b5fa33d98..d21ec103c0 100644 --- a/mak/COPY +++ b/mak/COPY @@ -1,5 +1,6 @@ COPY=\ $(IMPDIR)\object.d \ + \ $(IMPDIR)\core\atomic.d \ $(IMPDIR)\core\attribute.d \ $(IMPDIR)\core\bitop.d \ diff --git a/mak/SRCS b/mak/SRCS index 90e795f7c5..10783938a9 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -23,10 +23,15 @@ SRCS=\ src\core\internal\string.d \ src\core\internal\traits.d \ \ + src\core\stdc\complex.d \ src\core\stdc\config.d \ src\core\stdc\ctype.d \ src\core\stdc\errno.d \ src\core\stdc\fenv.d \ + src\core\stdc\float_.d \ + src\core\stdc\inttypes.d \ + src\core\stdc\limits.d \ + src\core\stdc\locale.d \ src\core\stdc\math.d \ src\core\stdc\signal.d \ src\core\stdc\stdarg.d \ @@ -51,19 +56,36 @@ SRCS=\ \ src\core\sys\linux\stdio.d \ src\core\sys\linux\tipc.d \ + src\core\sys\linux\sys\inotify.d \ + src\core\sys\linux\sys\mman.d \ + src\core\sys\linux\sys\signalfd.d \ + src\core\sys\linux\sys\socket.d \ + src\core\sys\linux\sys\sysinfo.d \ + src\core\sys\linux\sys\time.d \ + src\core\sys\linux\sys\xattr.d \ + src\core\sys\linux\sys\netinet\tcp.d \ \ - src\core\sys\posix\signal.d \ src\core\sys\posix\dirent.d \ + src\core\sys\posix\signal.d \ + src\core\sys\posix\netdb.d \ + src\core\sys\posix\netinet\in_.d \ + src\core\sys\posix\arpa\inet.d \ + \ + src\core\sys\posix\sys\ioctl.d \ + src\core\sys\posix\sys\ipc.d \ + src\core\sys\posix\sys\mman.d \ src\core\sys\posix\sys\resource.d \ src\core\sys\posix\sys\select.d \ + src\core\sys\posix\sys\shm.d \ src\core\sys\posix\sys\socket.d \ src\core\sys\posix\sys\stat.d \ + src\core\sys\posix\sys\statvfs.d \ + src\core\sys\posix\sys\time.d \ + src\core\sys\posix\sys\types.d \ + src\core\sys\posix\sys\uio.d \ + src\core\sys\posix\sys\un.d \ src\core\sys\posix\sys\wait.d \ - src\core\sys\posix\netdb.d \ - src\core\sys\posix\sys\ioctl.d \ src\core\sys\posix\sys\utsname.d \ - src\core\sys\posix\netinet\in_.d \ - src\core\sys\posix\arpa\inet.d \ \ src\core\sys\solaris\sys\priocntl.d \ src\core\sys\solaris\sys\types.d \ diff --git a/win32.mak b/win32.mak index bf3bee7168..0f08fb31dc 100644 --- a/win32.mak +++ b/win32.mak @@ -1281,10 +1281,10 @@ $(GCSTUB) : src\gcstub\gc.d win$(MODEL).mak ################### Library generation ######################### $(DRUNTIME): $(OBJS) $(SRCS) win$(MODEL).mak - $(DMD) -lib -of$(DRUNTIME) -Xfdruntime.json $(DFLAGS) $(SRCS) $(OBJS) + *$(DMD) -lib -of$(DRUNTIME) -Xfdruntime.json $(DFLAGS) $(SRCS) $(OBJS) unittest : $(SRCS) $(DRUNTIME) - $(DMD) $(UDFLAGS) -L/co -unittest -ofunittest.exe -main $(SRCS) $(DRUNTIME) -debuglib=$(DRUNTIME) -defaultlib=$(DRUNTIME) + *$(DMD) $(UDFLAGS) -L/co -unittest -ofunittest.exe -main $(SRCS) $(DRUNTIME) -debuglib=$(DRUNTIME) -defaultlib=$(DRUNTIME) unittest zip: druntime.zip @@ -1305,4 +1305,3 @@ clean: auto-tester-build: target auto-tester-test: unittest - diff --git a/win64.mak b/win64.mak index a025b06f06..b7b56f8184 100644 --- a/win64.mak +++ b/win64.mak @@ -1254,11 +1254,11 @@ $(GCSTUB) : src\gcstub\gc.d win64.mak ################### Library generation ######################### $(DRUNTIME): $(OBJS) $(SRCS) win64.mak - $(DMD) -lib -of$(DRUNTIME) -Xfdruntime.json $(DFLAGS) $(SRCS) $(OBJS) + *$(DMD) -lib -of$(DRUNTIME) -Xfdruntime.json $(DFLAGS) $(SRCS) $(OBJS) # due to -conf= on the command line, LINKCMD and LIB need to be set in the environment unittest : $(SRCS) $(DRUNTIME) - $(DMD) $(UDFLAGS) -version=druntime_unittest -unittest -ofunittest.exe -main $(SRCS) $(DRUNTIME) -debuglib=$(DRUNTIME) -defaultlib=$(DRUNTIME) user32.lib + *$(DMD) $(UDFLAGS) -version=druntime_unittest -unittest -ofunittest.exe -main $(SRCS) $(DRUNTIME) -debuglib=$(DRUNTIME) -defaultlib=$(DRUNTIME) user32.lib unittest ################### Win32 COFF support ######################### @@ -1292,4 +1292,3 @@ clean: auto-tester-build: target auto-tester-test: unittest - From 4fc2afb688f1db8c495a8853d8949645b65edf1e Mon Sep 17 00:00:00 2001 From: Stefan Koch Date: Mon, 22 May 2017 17:30:45 +0200 Subject: [PATCH 675/768] correct mistake which causes idx to be inferrred as int --- src/object.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index 1045923fd2..15b129c4fb 100644 --- a/src/object.d +++ b/src/object.d @@ -3161,7 +3161,7 @@ bool _ArrayEq(T1, T2)(T1[] a1, T2[] a2) // This is function is used as a compiler intrinsic and explicitly written // in a lowered flavor to use as few CTFE instructions as possible. - auto idx = 0; + size_t idx = 0; auto length = a1.length; for(;idx < length;++idx) From a3fd043ee2ed3ae99b7b9b2e78359b357903e577 Mon Sep 17 00:00:00 2001 From: somzzz Date: Fri, 21 Apr 2017 00:56:40 -0700 Subject: [PATCH 676/768] Array equals overload for dynamic arrays only (+fixed some cases) --- src/object.d | 75 +++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/src/object.d b/src/object.d index fa00af9c58..bcc368dc79 100644 --- a/src/object.d +++ b/src/object.d @@ -3229,35 +3229,9 @@ template RTInfo(T) enum RTInfo = null; } -bool __equals(T1, T2, size_t n1)(auto ref T1[n1] lhs, T2[] rhs) -{ - T1[] lhs1 = lhs; - return __equals(lhs1, rhs); -} - -bool __equals(T1, T2, size_t n2)(T1[] lhs, auto ref T2[n2] rhs) -{ - T2[] rhs1 = rhs; - return __equals(lhs, rhs1); -} - -bool __equals(T1, T2, size_t n1, size_t n2)(auto ref T1[n1] lhs, auto ref T2[n2] rhs) -{ - T1[] lhs1 = lhs; - T2[] rhs1 = rhs; - return __equals(lhs1, rhs1); -} - -// lhs == rhs lowers to __equals(lhs, rhs) for arrays of all struct types. -// old path: Typeinfo_array => TypeInfo_struct +// lhs == rhs lowers to __equals(lhs, rhs) for dynamic arrays bool __equals(T1, T2)(T1[] lhs, T2[] rhs) { - if (lhs.length != rhs.length) - return false; - - if (lhs.length == 0 && rhs.length == 0) - return true; - import core.internal.traits : Unqual; alias U1 = Unqual!T1; alias U2 = Unqual!T2; @@ -3265,6 +3239,12 @@ bool __equals(T1, T2)(T1[] lhs, T2[] rhs) static @trusted ref R at(R)(R[] r, size_t i) { return r.ptr[i]; } static @trusted R trustedCast(R, S)(S[] r) { return cast(R) r; } + if (lhs.length != rhs.length) + return false; + + if (lhs.length == 0 && rhs.length == 0) + return true; + static if (is(U1 == void) && is(U2 == void)) { return __equals(trustedCast!(ubyte[])(lhs), trustedCast!(ubyte[])(rhs)); @@ -3277,12 +3257,26 @@ bool __equals(T1, T2)(T1[] lhs, T2[] rhs) { return __equals(lhs, trustedCast!(ubyte[])(rhs)); } + else static if (!is(U1 == U2)) + { + // This should replace src/object.d _ArrayEq which + // compares arrays of different types such as long & int, + // char & wchar. + // Compiler lowers to __ArrayEq in dmd/src/opover.d + foreach (const u; 0 .. lhs.length) + { + if (at(lhs, u) != at(rhs, u)) + return false; + } + return true; + } else static if (__traits(isIntegral, U1)) { + if (!__ctfe) { import core.stdc.string : memcmp; - return () @trusted { return memcmp(lhs.ptr, rhs.ptr, lhs.length * U1.sizeof) == 0; }(); + return () @trusted { return memcmp(cast(void*)lhs.ptr, cast(void*)rhs.ptr, lhs.length * U1.sizeof) == 0; }(); } else { @@ -3300,23 +3294,35 @@ bool __equals(T1, T2)(T1[] lhs, T2[] rhs) { static if (__traits(compiles, __equals(at(lhs, u), at(rhs, u)))) { - return __equals(at(lhs, u), at(rhs, u)); + if (!__equals(at(lhs, u), at(rhs, u))) + return false; } else static if (__traits(isFloating, U1)) { if (at(lhs, u) != at(rhs, u)) return false; } - else static if (is(U1 == Object) && is(U2 == Object)) + else static if (is(U1 : Object) && is(U2 : Object)) { - if (!(lhs is rhs) || lhs && lhs.opEquals(rhs)) + if (!(cast(Object)at(lhs, u) is cast(Object)at(rhs, u) + || at(lhs, u) && (cast(Object)at(lhs, u)).opEquals(cast(Object)at(rhs, u)))) return false; } - else static if (__traits(compiles, at(lhs, u).opEquals(at(rhs, u)))) + else static if (__traits(hasMember, U1, "opEquals")) { if (!at(lhs, u).opEquals(at(rhs, u))) return false; } + else static if (is(U1 == delegate)) + { + if (at(lhs, u) != at(rhs, u)) + return false; + } + else static if (is(U1 == U11*, U11)) + { + if (at(lhs, u) != at(rhs, u)) + return false; + } else { if (at(lhs, u).tupleof != at(rhs, u).tupleof) @@ -3328,7 +3334,10 @@ bool __equals(T1, T2)(T1[] lhs, T2[] rhs) } } - +unittest { + assert(__equals([], [])); + assert(!__equals([1, 2], [1, 2, 3])); +} unittest { From 22ceb599fd243d627a439caac6e0dc483ce9c4e7 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 28 May 2017 17:20:22 -0700 Subject: [PATCH 677/768] gc.d: annotate escaping return --- src/gc/impl/manual/gc.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gc/impl/manual/gc.d b/src/gc/impl/manual/gc.d index 84712d410d..f5c6b770f6 100644 --- a/src/gc/impl/manual/gc.d +++ b/src/gc/impl/manual/gc.d @@ -214,7 +214,7 @@ class ManualGC : GC assert(false); } - @property RootIterator rootIter() @nogc + @property RootIterator rootIter() return @nogc { return &rootsApply; } @@ -248,7 +248,7 @@ class ManualGC : GC assert(false); } - @property RangeIterator rangeIter() @nogc + @property RangeIterator rangeIter() return @nogc { return &rangesApply; } From 9a28c98409c94dfa8131de32993ce8f8a18b284a Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Mon, 5 Jun 2017 15:53:12 -0400 Subject: [PATCH 678/768] Make mulu faster when not defined as an intrinsic --- src/core/checkedint.d | 49 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/src/core/checkedint.d b/src/core/checkedint.d index 3691276f55..d4373c3f29 100644 --- a/src/core/checkedint.d +++ b/src/core/checkedint.d @@ -655,9 +655,9 @@ pragma(inline, true) uint mulu(uint x, uint y, ref bool overflow) { ulong r = ulong(x) * ulong(y); - if (r > uint.max) + if (r >> 32) overflow = true; - return cast(uint)r; + return cast(uint) r; } unittest @@ -680,31 +680,68 @@ unittest assert(overflow); // sticky } +/// ditto +pragma(inline, true) +ulong mulu(ulong x, uint y, ref bool overflow) +{ + ulong r = x * y; + if (x >> 32 && + r / x != y) + overflow = true; + return r; +} + /// ditto pragma(inline, true) ulong mulu(ulong x, ulong y, ref bool overflow) { ulong r = x * y; - if (x && (r / x) != y) + if ((x | y) >> 32 && + x && + r / x != y) overflow = true; return r; } unittest { - void test(ulong x, ulong y, ulong r, bool overflow) @nogc nothrow + void test(T, U)(T x, U y, ulong r, bool overflow) @nogc nothrow { bool o; assert(mulu(x, y, o) == r); assert(o == overflow); } + // One operand is zero + test(0, 3, 0, false); + test(0UL, 3, 0, false); + test(0UL, 3UL, 0, false); + test(3, 0, 0, false); + test(3UL, 0, 0, false); + test(3UL, 0UL, 0, false); + // Small numbers test(2, 3, 6, false); + test(2UL, 3, 6, false); + test(2UL, 3UL, 6, false); + // At the 32/64 border + test(1, ulong(uint.max), uint.max, false); + test(1UL, ulong(uint.max), uint.max, false); + test(ulong(uint.max), 1, uint.max, false); + test(ulong(uint.max), 1UL, uint.max, false); + test(1, 1 + ulong(uint.max), 1 + ulong(uint.max), false); + test(1UL, 1 + ulong(uint.max), 1 + ulong(uint.max), false); + test(1 + ulong(uint.max), 1, 1 + ulong(uint.max), false); + test(1 + ulong(uint.max), 1UL, 1 + ulong(uint.max), false); + // At the limit test(1, ulong.max, ulong.max, false); + test(1UL, ulong.max, ulong.max, false); + test(ulong.max, 1, ulong.max, false); + test(ulong.max, 1UL, ulong.max, false); + // Miscellaneous test(0, 1, 0, false); test(0, ulong.max, 0, false); test(ulong.max, 2, 2 * ulong.max, true); test(1UL << 32, 1UL << 32, 0, true); - + // Must be sticky bool overflow = true; assert(mulu(0UL, 0UL, overflow) == 0); assert(overflow); // sticky @@ -741,4 +778,4 @@ unittest assert(mulu(0UL, 0UL, overflow) == 0); assert(overflow); // sticky } -} \ No newline at end of file +} From 5a817fb3591969213d3b0f78c332cff68fcd9157 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 9 Jun 2017 19:25:14 +0200 Subject: [PATCH 679/768] use __traits(getLinkage) instead of mangleof to determine linkage --- src/core/demangle.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 22e7e402ac..1130c7c41e 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -1862,19 +1862,19 @@ unittest private template isExternD(FT) if (is(FT == function)) { - enum isExternD = FT.mangleof[0] == 'F'; + enum isExternD = __traits(getLinkage, FT) == "D"; } private template isExternCPP(FT) if (is(FT == function)) { - enum isExternCPP = FT.mangleof[0] == 'R'; + enum isExternCPP = __traits(getLinkage, FT) == "C++"; } private template hasPlainMangling(FT) if (is(FT == function)) { - enum c = FT.mangleof[0]; + enum lnk = __traits(getLinkage, FT); // C || Pascal || Windows - enum hasPlainMangling = c == 'U' || c == 'V' || c == 'W'; + enum hasPlainMangling = lnk == "C" || lnk == "Pascal" || lnk == "Windows"; } unittest From a4059c5e467cc0cde544bb8fbcf62e26b75f51b6 Mon Sep 17 00:00:00 2001 From: Jan Jurzitza Date: Tue, 13 Jun 2017 13:21:56 +0200 Subject: [PATCH 680/768] GetMarshalSizeMax takes a DWORD as second last arg see https://msdn.microsoft.com/en-us/library/windows/desktop/ms680062(v=vs.85).aspx --- src/core/sys/windows/objidl.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sys/windows/objidl.d b/src/core/sys/windows/objidl.d index b651a2ac4d..d96b6e4996 100644 --- a/src/core/sys/windows/objidl.d +++ b/src/core/sys/windows/objidl.d @@ -590,7 +590,7 @@ interface IStream : ISequentialStream { interface IMarshal : IUnknown { HRESULT GetUnmarshalClass(REFIID, PVOID, DWORD, PVOID, DWORD, CLSID*); - HRESULT GetMarshalSizeMax(REFIID, PVOID, DWORD, PVOID, PDWORD, ULONG*); + HRESULT GetMarshalSizeMax(REFIID, PVOID, DWORD, PVOID, DWORD, ULONG*); HRESULT MarshalInterface(IStream, REFIID, PVOID, DWORD, PVOID, DWORD); HRESULT UnmarshalInterface(IStream, REFIID, void**); HRESULT ReleaseMarshalData(IStream); From 98ae5b7c6a99e9f614858bad41c8f39a4f976311 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 15 Jun 2017 11:04:20 +0200 Subject: [PATCH 681/768] Fix invalid undefined Ddoc macros --- src/object.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/object.d b/src/object.d index 7d895f807d..0458bce47a 100644 --- a/src/object.d +++ b/src/object.d @@ -1684,7 +1684,7 @@ class Throwable : Object /** * Overrides $(D Object.toString) and returns the error message. * Internally this forwards to the $(D toString) overload that - * takes a $(PARAM sink) delegate. + * takes a $(D_PARAM sink) delegate. */ override string toString() { @@ -1695,7 +1695,7 @@ class Throwable : Object /** * The Throwable hierarchy uses a toString overload that takes a - * $(PARAM sink) delegate to avoid GC allocations, which cannot be + * $(D_PARAM _sink) delegate to avoid GC allocations, which cannot be * performed in certain error situations. Override this $(D * toString) method to customize the error message. */ From 4b6e99b2bf6a863bad334086d85a67a8897458e3 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Wed, 14 Jun 2017 20:23:47 -0700 Subject: [PATCH 682/768] add core.stdc.assert_ --- mak/COPY | 1 + mak/DOCS | 1 + mak/SRCS | 1 + src/core/stdc/assert_.d | 70 +++++++++++++++++++++++++++++++++++++++++ win32.mak | 6 ++++ win64.mak | 6 ++++ 6 files changed, 85 insertions(+) create mode 100644 src/core/stdc/assert_.d diff --git a/mak/COPY b/mak/COPY index a2f0892347..0a7f4317bd 100644 --- a/mak/COPY +++ b/mak/COPY @@ -23,6 +23,7 @@ COPY=\ $(IMPDIR)\core\internal\string.d \ $(IMPDIR)\core\internal\traits.d \ \ + $(IMPDIR)\core\stdc\assert_.d \ $(IMPDIR)\core\stdc\complex.d \ $(IMPDIR)\core\stdc\config.d \ $(IMPDIR)\core\stdc\ctype.d \ diff --git a/mak/DOCS b/mak/DOCS index c7f630d1ca..0a218850a6 100644 --- a/mak/DOCS +++ b/mak/DOCS @@ -15,6 +15,7 @@ DOCS=\ $(DOCDIR)\core_time.html \ $(DOCDIR)\core_vararg.html \ \ + $(DOCDIR)\core_stdc_assert_.html \ $(DOCDIR)\core_stdc_complex.html \ $(DOCDIR)\core_stdc_ctype.html \ $(DOCDIR)\core_stdc_errno.html \ diff --git a/mak/SRCS b/mak/SRCS index e27bab9332..2258203aa3 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -23,6 +23,7 @@ SRCS=\ src\core\internal\string.d \ src\core\internal\traits.d \ \ + src\core\stdc\assert_.d \ src\core\stdc\complex.d \ src\core\stdc\config.d \ src\core\stdc\ctype.d \ diff --git a/src/core/stdc/assert_.d b/src/core/stdc/assert_.d new file mode 100644 index 0000000000..a3675b70a6 --- /dev/null +++ b/src/core/stdc/assert_.d @@ -0,0 +1,70 @@ +/** + * D header file for C99. + * + * $(C_HEADER_DESCRIPTION pubs.opengroup.org/onlinepubs/009695399/basedefs/_assert.h.html, _assert.h) + * + * License: Distributed under the + * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). + * (See accompanying file LICENSE) + * Source: $(DRUNTIMESRC core/stdc/_assert_.d) + * Standards: ISO/IEC 9899:1999 (E) + */ + +/**************************** + * These are the various functions called by the assert() macro. + * They are all noreturn functions, although D doesn't have a specific attribute for that. + */ + +module core.stdc.assert_; + +extern (C): +@trusted: +nothrow: +@nogc: + +version (CRuntime_DigitalMars) +{ + /*** + * Assert failure function in the Digital Mars C library. + */ + void _assert(const(void)* exp, const(void)* file, uint line); +} +else version (CRuntime_Microsoft) +{ + /*** + * Assert failure function in the Microsoft C library. + * `_assert` is not in assert.h, but it is in the library. + */ + void _wassert(const(wchar)* exp, const(wchar)* file, uint line); + /// + void _assert(const(char)* exp, const(char)* file, uint line); +} +else version (OSX) +{ + /*** + * Assert failure function in the OSX C library. + */ + void __assert_rtn(const(char)* func, const(char)* file, uint line, const(char)* exp); +} +else version (FreeBSD) +{ + /*** + * Assert failure function in the FreeBSD C library. + */ + void __assert(const(char)* exp, const(char)* file, uint line); +} +else version (CRuntime_Glibc) +{ + /*** + * Assert failure functions in the GLIBC library. + */ + void __assert(const(char)* exp, const(char)* file, uint line); + /// + void __assert_fail(const(char)* exp, const(char)* file, uint line, const(char)* func); + /// + void __assert_perror_fail(int errnum, const(char)* file, uint line, const(char)* func); +} +else +{ + static assert(0); +} diff --git a/win32.mak b/win32.mak index b0113128f2..91262264c0 100644 --- a/win32.mak +++ b/win32.mak @@ -85,6 +85,9 @@ $(DOCDIR)\core_time.html : src\core\time.d $(DOCDIR)\core_vararg.html : src\core\vararg.d $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** +$(DOCDIR)\core_stdc_assert_.html : src\core\stdc\assert_.d + $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** + $(DOCDIR)\core_stdc_complex.html : src\core\stdc\complex.d $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** @@ -278,6 +281,9 @@ $(IMPDIR)\core\internal\string.d : src\core\internal\string.d $(IMPDIR)\core\internal\traits.d : src\core\internal\traits.d copy $** $@ +$(IMPDIR)\core\stdc\assert_.d : src\core\stdc\assert_.d + copy $** $@ + $(IMPDIR)\core\stdc\complex.d : src\core\stdc\complex.d copy $** $@ diff --git a/win64.mak b/win64.mak index 25031dd6d5..d9e10522b5 100644 --- a/win64.mak +++ b/win64.mak @@ -96,6 +96,9 @@ $(DOCDIR)\core_vararg.html : src\core\vararg.d $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** +$(DOCDIR)\core_stdc_assert_.html : src\core\stdc\assert_.d + $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** + $(DOCDIR)\core_stdc_complex.html : src\core\stdc\complex.d $(DMD) $(DDOCFLAGS) -Df$@ $(DOCFMT) $** @@ -289,6 +292,9 @@ $(IMPDIR)\core\internal\string.d : src\core\internal\string.d $(IMPDIR)\core\internal\traits.d : src\core\internal\traits.d copy $** $@ +$(IMPDIR)\core\stdc\assert_.d : src\core\stdc\assert_.d + copy $** $@ + $(IMPDIR)\core\stdc\complex.d : src\core\stdc\complex.d copy $** $@ From 30eceeba3b5a5959dd2f3c069051f6f4cd8d8eb7 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 18 Jun 2017 00:30:29 -0700 Subject: [PATCH 683/768] fix deprecation messages when compiling typeinfo.d --- src/rt/util/typeinfo.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rt/util/typeinfo.d b/src/rt/util/typeinfo.d index 6cb26043f3..81b62c5b91 100644 --- a/src/rt/util/typeinfo.d +++ b/src/rt/util/typeinfo.d @@ -181,7 +181,7 @@ unittest S[3] sa1 = {f1}, sa2 = {f2}; assert(sa1 == sa2); - assert(sa1 !is sa2); + assert(sa1[] !is sa2[]); ti = typeid(S[3]); assert(ti.getHash(&sa1) == ti.getHash(&sa2)); }(); @@ -229,7 +229,7 @@ unittest S[3] sa1 = {f1}, sa2 = {f2}; assert(sa1 == sa2); - assert(sa1 !is sa2); + assert(sa1[] !is sa2[]); ti = typeid(S[3]); assert(ti.getHash(&sa1) == ti.getHash(&sa2)); }(); @@ -283,7 +283,7 @@ unittest S[3] sa1 = {f1}, sa2 = {f2}; assert(sa1 == sa2); - assert(sa1 !is sa2); + assert(sa1[] !is sa2[]); ti = typeid(S[3]); assert(ti.getHash(&sa1) == ti.getHash(&sa2)); } From b45775ed2be2ddac2f53773d9b399693f48569d3 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 18 Jun 2017 01:27:30 -0700 Subject: [PATCH 684/768] osmodel.mak: add comments --- osmodel.mak | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/osmodel.mak b/osmodel.mak index 48e01f17d6..818a3095c7 100644 --- a/osmodel.mak +++ b/osmodel.mak @@ -1,5 +1,15 @@ -# This Makefile snippet detects the OS and the architecture MODEL -# Keep this file in sync between druntime, phobos, and dmd repositories! +# osmodel.mak +# +# Detects and sets the macros: +# +# OS = one of {osx,linux,freebsd,openbsd,netbsd,solaris} +# MODEL = one of { 32, 64 } +# MODEL_FLAG = one of { -m32, -m64 } +# +# Note: +# Keep this file in sync between druntime, phobos, and dmd repositories! +# Source: https://github.com/dlang/druntime/blob/master/osmodel.mak + ifeq (,$(OS)) uname_S:=$(shell uname -s) From 2a0678f009972ebd14f64e6927c021e70cba1856 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 18 Jun 2017 13:53:42 +0200 Subject: [PATCH 685/768] fix duplicate make rule --- test/coverage/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/coverage/Makefile b/test/coverage/Makefile index 709d66a796..ca56349016 100644 --- a/test/coverage/Makefile +++ b/test/coverage/Makefile @@ -2,7 +2,7 @@ include ../common.mak DFLAGS+=-cov -NORMAL_TESTS:=$(addprefix $(ROOT)/,$(addsuffix .done,basic no_code)) +NORMAL_TESTS:=$(addprefix $(ROOT)/,$(addsuffix .done,basic)) MERGE_TESTS:=$(addprefix $(ROOT)/,$(addsuffix .done,merge merge_true)) DIFF:=diff From dc92bd2bdc8bb95ffebb52856eea68f7e89daa79 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 19 Jun 2017 09:17:26 +0100 Subject: [PATCH 686/768] Tweak object.d docs * Show `destroy(T)` and `destroy(ref T)` instead of only showing `destroy` with class constraint. * Minor doc tweaks. --- src/object.d | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/object.d b/src/object.d index 0458bce47a..1622cf7321 100644 --- a/src/object.d +++ b/src/object.d @@ -2726,10 +2726,17 @@ unittest /++ Destroys the given object and puts it in an invalid state. It's used to - destroy an object so that any cleanup which its destructor or finalizer + _destroy an object so that any cleanup which its destructor or finalizer does is done and so that it no longer references any other objects. It does $(I not) initiate a GC cycle or free any GC memory. +/ +version (D_Ddoc) +{ + void destroy(T)(T obj); + /// + void destroy(T)(ref T obj); +} + void destroy(T)(T obj) if (is(T == class)) { rt_finalize(cast(void*)obj); @@ -2955,15 +2962,15 @@ private } /** - * (Property) Get the current capacity of a slice. The capacity is the size + * (Property) Gets the current _capacity of a slice. The _capacity is the size * that the slice can grow to before the underlying array must be * reallocated or extended. * * If an append must reallocate a slice with no possibility of extension, then - * 0 is returned. This happens when the slice references a static array, or + * `0` is returned. This happens when the slice references a static array, or * if another slice references elements past the end of the current slice. * - * Note: The capacity of a slice may be impacted by operations on other slices. + * Note: The _capacity of a slice may be impacted by operations on other slices. */ @property size_t capacity(T)(T[] arr) pure nothrow @trusted { @@ -2997,7 +3004,7 @@ private * that the slice can grow to before the underlying array must be * reallocated or extended. * - * The return value is the new capacity of the array (which may be larger than + * Returns: The new capacity of the array (which may be larger than * the requested capacity). */ size_t reserve(T)(ref T[] arr, size_t newcapacity) pure nothrow @trusted @@ -3041,7 +3048,7 @@ unittest * array in the memory block. If there are, those elements will be * overwritten by appending to this array. * - * Calling this function, and then using references to data located after the + * Warning: Calling this function, and then using references to data located after the * given array results in undefined behavior. * * Returns: @@ -3174,7 +3181,7 @@ bool _ArrayEq(T1, T2)(T1[] a1, T2[] a2) /** Calculates the hash value of $(D arg) with $(D seed) initial value. -Result may be non-equals with `typeid(T).getHash(&arg)` +The result may not be equal to `typeid(T).getHash(&arg)`. The $(D seed) value may be used for hash chaining: ---- struct Test From 26fd74caf080d3d6417ba8e4a633dc7e57d5422b Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 19 Jun 2017 17:32:32 +0100 Subject: [PATCH 687/768] Document all `destroy` overloads --- src/object.d | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/object.d b/src/object.d index 1622cf7321..5f188abb79 100644 --- a/src/object.d +++ b/src/object.d @@ -2730,18 +2730,12 @@ unittest does is done and so that it no longer references any other objects. It does $(I not) initiate a GC cycle or free any GC memory. +/ -version (D_Ddoc) -{ - void destroy(T)(T obj); - /// - void destroy(T)(ref T obj); -} - void destroy(T)(T obj) if (is(T == class)) { rt_finalize(cast(void*)obj); } +/// ditto void destroy(T)(T obj) if (is(T == interface)) { destroy(cast(Object)obj); @@ -2802,6 +2796,7 @@ version(unittest) unittest } } +/// ditto void destroy(T)(ref T obj) if (is(T == struct)) { _destructRecurse(obj); @@ -2854,6 +2849,7 @@ version(unittest) nothrow @safe @nogc unittest } } +/// ditto void destroy(T : U[n], U, size_t n)(ref T obj) if (!is(T == struct)) { foreach_reverse (ref e; obj[]) @@ -2917,6 +2913,7 @@ unittest } } +/// ditto void destroy(T)(ref T obj) if (!is(T == struct) && !is(T == interface) && !is(T == class) && !_isStaticArray!T) { From 9c521570632a180f23a134e903d7eaa47f3954ad Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 19 Jun 2017 16:47:51 -0700 Subject: [PATCH 688/768] document what sed script is doing --- test/exceptions/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/test/exceptions/Makefile b/test/exceptions/Makefile index 5aa22b2631..4a7841a00c 100644 --- a/test/exceptions/Makefile +++ b/test/exceptions/Makefile @@ -17,6 +17,7 @@ all: $(addprefix $(ROOT)/,$(addsuffix .done,$(TESTS))) $(ROOT)/line_trace.done: $(ROOT)/line_trace @echo Testing line_trace $(QUIET)$(TIMELIMIT)$(ROOT)/line_trace $(RUN_ARGS) > $(ROOT)/line_trace.output + # Use sed to canonicalize line_trace.output and compare against expected output in line_trace.exp $(QUIET)$(SED) "s/\[0x[0-9a-f]*\]/\[ADDR\]/g; s/scope //g; s/Nl//g" $(ROOT)/line_trace.output | $(DIFF) line_trace.exp - @rm -f $(ROOT)/line_trace.output @touch $@ From 639c90cce81143000a87761d2fd5eb4d30843fac Mon Sep 17 00:00:00 2001 From: Joakim Date: Sun, 25 Jun 2017 02:17:33 +0530 Subject: [PATCH 689/768] Disable recursive mutex destruction test on Android. --- src/core/sync/mutex.d | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index 605438c38f..a217072ba9 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -372,6 +372,9 @@ unittest // by checking that locking is not possible. This assumes // that the underlying implementation is well behaved // and makes the object non-lockable upon destruction. + // For example, Bionic doesn't appear to do so, so this test is + // not run on Android. + version (CRuntime_Bionic) {} else assert(!mtx.tryLock_nothrow()); free(cast(void*) mtx); From 092e9424d43e3257b7cb9deeae137852b10d02ed Mon Sep 17 00:00:00 2001 From: Joakim Date: Sun, 25 Jun 2017 02:40:16 +0530 Subject: [PATCH 690/768] Swap GC signals on Android, because the Java VM intercepts SIGUSR1 and doesn't run its signal handler, which doesn't matter for resuming. --- src/core/thread.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/thread.d b/src/core/thread.d index 24003b0c79..09c04747e8 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1972,6 +1972,10 @@ extern (C) void thread_init() // functions to detect the condition and return immediately. Thread.initLocks(); + // The Android VM runtime intercepts SIGUSR1 and apparently doesn't allow + // its signal handler to run, so swap the two signals on Android, since + // thread_resumeHandler does nothing. + version( Android ) thread_setGCSignals(SIGUSR2, SIGUSR1); version( Darwin ) { From 36fcc58994be63fc7173f27db23cea898ec62714 Mon Sep 17 00:00:00 2001 From: Joakim Date: Sun, 25 Jun 2017 02:42:43 +0530 Subject: [PATCH 691/768] Correct a typo in the TLS delimiter name and rewrite an incorrect comment on how our emulated TLS scheme for Android works. --- src/rt/sections_android.d | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/rt/sections_android.d b/src/rt/sections_android.d index de7a4130b6..6193b618cc 100644 --- a/src/rt/sections_android.d +++ b/src/rt/sections_android.d @@ -67,7 +67,7 @@ void initSections() nothrow @nogc auto mend = cast(immutable ModuleInfo**)&__stop_minfo; _sections.moduleGroup = ModuleGroup(mbeg[0 .. mend - mbeg]); - auto pbeg = cast(void*)&_tls_end; + auto pbeg = cast(void*)&_tlsend; auto pend = cast(void*)&__bss_end__; _sections._gcRanges[0] = pbeg[0 .. pend - pbeg]; } @@ -93,11 +93,12 @@ void scanTLSRanges(void[]* rng, scope void delegate(void* pbeg, void* pend) noth dg(rng.ptr, rng.ptr + rng.length); } -/* NOTE: The Bionic C library does not allow storing thread-local data - * in the normal .tbss/.tdata ELF sections. So instead we roll our - * own by simply putting tls into the non-tls .data/.bss sections - * and using the _tlsstart/_tlsend symbols as delimiters of the tls - * data. +/* NOTE: The Bionic C library ignores thread-local data stored in the normal + * .tbss/.tdata ELF sections, which are marked with the SHF_TLS/STT_TLS + * flags. So instead we roll our own by keeping TLS data in the + * .tdata/.tbss sections but removing the SHF_TLS/STT_TLS flags, and + * access the TLS data using this function and the _tlsstart/_tlsend + * symbols as delimiters. * * This function is called by the code emitted by the compiler. It * is expected to translate an address in the TLS static data to From d3dea5358c47ae0ac744fe7dd99265e6f8a301d4 Mon Sep 17 00:00:00 2001 From: Dmitry Olshansky Date: Tue, 27 Jun 2017 11:04:55 +0300 Subject: [PATCH 692/768] Enlarge the benchmarks to get meaningful diff --- benchmark/gcbench/conalloc.d | 4 ++-- benchmark/gcbench/conappend.d | 4 ++-- benchmark/gcbench/concpu.d | 4 ++-- benchmark/gcbench/conmsg.d | 2 +- benchmark/gcbench/rand_large.d | 2 +- benchmark/gcbench/rand_small.d | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/benchmark/gcbench/conalloc.d b/benchmark/gcbench/conalloc.d index f3f7d5b0c6..edd9d7b3bd 100644 --- a/benchmark/gcbench/conalloc.d +++ b/benchmark/gcbench/conalloc.d @@ -11,8 +11,8 @@ import std.conv; import std.file; import std.digest.sha; -auto N = 50; -auto NT = 4; +__gshared int N = 2500; +__gshared int NT = 4; __gshared ubyte[] BYTES; shared(int) running; // Atomic diff --git a/benchmark/gcbench/conappend.d b/benchmark/gcbench/conappend.d index 6f743ee169..e7e4542d72 100644 --- a/benchmark/gcbench/conappend.d +++ b/benchmark/gcbench/conappend.d @@ -11,8 +11,8 @@ import std.conv; import std.file; import std.exception; -auto N = 50; -auto NT = 4; +__gshared int N = 25000; +__gshared int NT = 4; __gshared ubyte[] BYTES; shared(int) running; // Atomic diff --git a/benchmark/gcbench/concpu.d b/benchmark/gcbench/concpu.d index d8f4f3e45b..0636420cc5 100644 --- a/benchmark/gcbench/concpu.d +++ b/benchmark/gcbench/concpu.d @@ -11,8 +11,8 @@ import std.conv; import std.file; import std.digest.sha; -auto N = 50; -auto NT = 4; +__gshared int N = 2500; +__gshared int NT = 4; __gshared ubyte[] BYTES; shared(int) running; // Atomic diff --git a/benchmark/gcbench/conmsg.d b/benchmark/gcbench/conmsg.d index e8515e9734..f889716197 100644 --- a/benchmark/gcbench/conmsg.d +++ b/benchmark/gcbench/conmsg.d @@ -24,7 +24,7 @@ void producer(Tid consumer) auto text = cast(string)read("extra-files/dante.txt"); foreach (word; text.splitter.map!(to!(dchar[]))) { - foreach (_; 0 .. 3) + foreach (_; 0 .. 7) { immutable val = buildVal(word); consumer.send(val); diff --git a/benchmark/gcbench/rand_large.d b/benchmark/gcbench/rand_large.d index eb55f39f6c..d1fd6dcc53 100644 --- a/benchmark/gcbench/rand_large.d +++ b/benchmark/gcbench/rand_large.d @@ -13,7 +13,7 @@ */ import std.random, core.memory, std.stdio; -enum nIter = 1000; +enum nIter = 10000; void main() { diff --git a/benchmark/gcbench/rand_small.d b/benchmark/gcbench/rand_small.d index 3935e39a69..19a562eb7d 100644 --- a/benchmark/gcbench/rand_small.d +++ b/benchmark/gcbench/rand_small.d @@ -15,7 +15,7 @@ import std.random, core.memory, std.stdio, std.conv; void main(string[] args) { - size_t nIter = 1000; + size_t nIter = 10000; if(args.length > 1) nIter = to!size_t(args[1]); From cd1cf2107f4c23ed8d163b5b8811fda544ccdc32 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 28 Jun 2017 12:22:15 +0200 Subject: [PATCH 693/768] lower connappend rounds a bit - targettting ~1s - same perf profile and heap usage --- benchmark/gcbench/conappend.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark/gcbench/conappend.d b/benchmark/gcbench/conappend.d index e7e4542d72..a468d074ed 100644 --- a/benchmark/gcbench/conappend.d +++ b/benchmark/gcbench/conappend.d @@ -11,7 +11,7 @@ import std.conv; import std.file; import std.exception; -__gshared int N = 25000; +__gshared int N = 10000; __gshared int NT = 4; __gshared ubyte[] BYTES; From d43ed6c32c44238178c1e2b3141e78b9455a0aa5 Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Mon, 16 Jan 2017 08:26:13 -0500 Subject: [PATCH 694/768] Added immutable to never modified variables in object.d --- src/object.d | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/object.d b/src/object.d index 0458bce47a..68dd2987d2 100644 --- a/src/object.d +++ b/src/object.d @@ -264,7 +264,7 @@ class TypeInfo /// Swaps two instances of the type. void swap(void* p1, void* p2) const { - size_t n = tsize; + immutable size_t n = tsize; for (size_t i = 0; i < n; i++) { byte t = (cast(byte *)p1)[i]; @@ -466,7 +466,7 @@ class TypeInfo_Array : TypeInfo len = a2.length; for (size_t u = 0; u < len; u++) { - int result = value.compare(a1.ptr + u * sz, a2.ptr + u * sz); + immutable int result = value.compare(a1.ptr + u * sz, a2.ptr + u * sz); if (result) return result; } @@ -556,7 +556,7 @@ class TypeInfo_StaticArray : TypeInfo for (size_t u = 0; u < len; u++) { - int result = value.compare(p1 + u * sz, p2 + u * sz); + immutable int result = value.compare(p1 + u * sz, p2 + u * sz); if (result) return result; } @@ -604,7 +604,7 @@ class TypeInfo_StaticArray : TypeInfo override void destroy(void* p) const { - auto sz = value.tsize; + immutable sz = value.tsize; p += sz * len; foreach (i; 0 .. len) { @@ -615,7 +615,7 @@ class TypeInfo_StaticArray : TypeInfo override void postblit(void* p) const { - auto sz = value.tsize; + immutable sz = value.tsize; foreach (i; 0 .. len) { value.postblit(p); @@ -3162,7 +3162,7 @@ bool _ArrayEq(T1, T2)(T1[] a1, T2[] a2) // This is function is used as a compiler intrinsic and explicitly written // in a lowered flavor to use as few CTFE instructions as possible. size_t idx = 0; - auto length = a1.length; + immutable length = a1.length; for(;idx < length;++idx) { From 37dd734cb361e5ceb3d1277717e8670fa03bf5eb Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Mon, 16 Jan 2017 08:30:16 -0500 Subject: [PATCH 695/768] Added immutable to never modified variables in core/checkedint.d --- src/core/checkedint.d | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/core/checkedint.d b/src/core/checkedint.d index d4373c3f29..6060b88ba2 100644 --- a/src/core/checkedint.d +++ b/src/core/checkedint.d @@ -151,7 +151,7 @@ unittest pragma(inline, true) uint addu(uint x, uint y, ref bool overflow) { - uint r = x + y; + immutable uint r = x + y; if (r < x || r < y) overflow = true; return r; @@ -179,7 +179,7 @@ unittest pragma(inline, true) ulong addu(ulong x, ulong y, ref bool overflow) { - ulong r = x + y; + immutable ulong r = x + y; if (r < x || r < y) overflow = true; return r; @@ -209,7 +209,7 @@ static if (is(ucent)) pragma(inline, true) ucent addu(ucent x, ucent y, ref bool overflow) { - ucent r = x + y; + immutable ucent r = x + y; if (r < x || r < y) overflow = true; return r; @@ -251,7 +251,7 @@ unittest pragma(inline, true) int subs(int x, int y, ref bool overflow) { - long r = cast(long)x - cast(long)y; + immutable long r = cast(long)x - cast(long)y; if (r < int.min || r > int.max) overflow = true; return cast(int)r; @@ -279,7 +279,7 @@ unittest pragma(inline, true) long subs(long x, long y, ref bool overflow) { - long r = cast(ulong)x - cast(ulong)y; + immutable long r = cast(ulong)x - cast(ulong)y; if (x < 0 && y >= 0 && r >= 0 || x >= 0 && y < 0 && (r < 0 || y == long.min)) overflow = true; @@ -312,7 +312,7 @@ static if (is(cent)) pragma(inline, true) cent subs(cent x, cent y, ref bool overflow) { - cent r = cast(ucent)x - cast(ucent)y; + immutable cent r = cast(ucent)x - cast(ucent)y; if (x < 0 && y >= 0 && r >= 0 || x >= 0 && y < 0 && (r < 0 || y == long.min)) overflow = true; @@ -570,7 +570,7 @@ unittest pragma(inline, true) long muls(long x, long y, ref bool overflow) { - long r = cast(ulong)x * cast(ulong)y; + immutable long r = cast(ulong)x * cast(ulong)y; enum not0or1 = ~1L; if((x & not0or1) && ((r == y)? r : (r / x) != y)) overflow = true; @@ -606,7 +606,7 @@ static if (is(cent)) pragma(inline, true) cent muls(cent x, cent y, ref bool overflow) { - cent r = cast(ucent)x * cast(ucent)y; + immutable cent r = cast(ucent)x * cast(ucent)y; enum not0or1 = ~1L; if((x & not0or1) && ((r == y)? r : (r / x) != y)) overflow = true; @@ -654,7 +654,7 @@ unittest pragma(inline, true) uint mulu(uint x, uint y, ref bool overflow) { - ulong r = ulong(x) * ulong(y); + immutable ulong r = ulong(x) * ulong(y); if (r >> 32) overflow = true; return cast(uint) r; @@ -695,7 +695,7 @@ ulong mulu(ulong x, uint y, ref bool overflow) pragma(inline, true) ulong mulu(ulong x, ulong y, ref bool overflow) { - ulong r = x * y; + immutable ulong r = x * y; if ((x | y) >> 32 && x && r / x != y) @@ -753,7 +753,7 @@ static if (is(ucent)) pragma(inline, true) ucent mulu(ucent x, ucent y, ref bool overflow) { - ucent r = x * y; + immutable ucent r = x * y; if (x && (r / x) != y) overflow = true; return r; From 5cd5e163287cfbec6920ab08e098f8d6f4086300 Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Mon, 16 Jan 2017 08:34:58 -0500 Subject: [PATCH 696/768] Added immutable to never modified variables in core/cpuid.d --- src/core/cpuid.d | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/core/cpuid.d b/src/core/cpuid.d index 6db4f3e53a..968d132fc2 100644 --- a/src/core/cpuid.d +++ b/src/core/cpuid.d @@ -565,20 +565,20 @@ void getcacheinfoCPUID4() } ++cachenum; if ((a&0x1F)==0) break; // no more caches - uint numthreads = ((a>>14) & 0xFFF) + 1; - uint numcores = ((a>>26) & 0x3F) + 1; + immutable uint numthreads = ((a>>14) & 0xFFF) + 1; + immutable uint numcores = ((a>>26) & 0x3F) + 1; if (numcores > cpuFeatures.maxCores) cpuFeatures.maxCores = numcores; if ((a&0x1F)!=1 && ((a&0x1F)!=3)) continue; // we only want data & unified caches ++number_of_sets; - ubyte level = cast(ubyte)(((a>>5)&7)-1); + immutable ubyte level = cast(ubyte)(((a>>5)&7)-1); if (level > datacache.length) continue; // ignore deep caches datacache[level].associativity = a & 0x200 ? ubyte.max :cast(ubyte)((b>>22)+1); datacache[level].lineSize = (b & 0xFFF)+ 1; // system coherency line size - uint line_partitions = ((b >> 12)& 0x3FF) + 1; + immutable uint line_partitions = ((b >> 12)& 0x3FF) + 1; // Size = number of sets * associativity * cachelinesize * linepartitions // and must convert to Kb, also dividing by the number of hyperthreads using this cache. - ulong sz = (datacache[level].associativity< ubyte.max)? number_of_sets * + immutable ulong sz = (datacache[level].associativity< ubyte.max)? number_of_sets * datacache[level].associativity : number_of_sets; datacache[level].size = cast(size_t)( (sz * datacache[level].lineSize * line_partitions ) / (numthreads *1024)); @@ -744,8 +744,8 @@ void cpuidX86() cf.miscfeatures = c; } stepping = a & 0xF; - uint fbase = (a >> 8) & 0xF; - uint mbase = (a >> 4) & 0xF; + immutable uint fbase = (a >> 8) & 0xF; + immutable uint mbase = (a >> 4) & 0xF; family = ((fbase == 0xF) || (fbase == 0)) ? fbase + (a >> 20) & 0xFF : fbase; model = ((fbase == 0xF) || (fbase == 6 && cf.probablyIntel) ) ? mbase + ((a >> 12) & 0xF0) : mbase; From 90fc0e55fcf31c7807920f3567177ab23d03ffec Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Mon, 16 Jan 2017 07:59:07 -0500 Subject: [PATCH 697/768] Change aliases to new syntax in object.d --- src/object.d | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/object.d b/src/object.d index 0458bce47a..d4725e0764 100644 --- a/src/object.d +++ b/src/object.d @@ -24,23 +24,23 @@ private version(D_LP64) { - alias ulong size_t; - alias long ptrdiff_t; + alias size_t = ulong; + alias ptrdiff_t = long; } else { - alias uint size_t; - alias int ptrdiff_t; + alias size_t = uint; + alias ptrdiff_t = int; } -alias ptrdiff_t sizediff_t; //For backwards compatibility only. +alias sizediff_t = ptrdiff_t; //For backwards compatibility only. -alias size_t hash_t; //For backwards compatibility only. -alias bool equals_t; //For backwards compatibility only. +alias hash_t = size_t; //For backwards compatibility only. +alias equals_t = bool; //For backwards compatibility only. -alias immutable(char)[] string; -alias immutable(wchar)[] wstring; -alias immutable(dchar)[] dstring; +alias string = immutable(char)[]; +alias wstring = immutable(wchar)[]; +alias dstring = immutable(dchar)[]; version (D_ObjectiveC) public import core.attribute : selector; @@ -827,7 +827,7 @@ class TypeInfo_Delegate : TypeInfo override @property size_t tsize() nothrow pure const { - alias int delegate() dg; + alias dg = int delegate(); return dg.sizeof; } @@ -843,7 +843,7 @@ class TypeInfo_Delegate : TypeInfo override @property size_t talign() nothrow pure const { - alias int delegate() dg; + alias dg = int delegate(); return dg.alignof; } @@ -1027,7 +1027,7 @@ class TypeInfo_Class : TypeInfo } } -alias TypeInfo_Class ClassInfo; +alias ClassInfo = TypeInfo_Class; unittest { From 36e02f24d1ce191769a835a1d54a0ddfbef30d79 Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Mon, 16 Jan 2017 07:59:22 -0500 Subject: [PATCH 698/768] Change aliases to new syntax in core/memory.d --- src/core/memory.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/memory.d b/src/core/memory.d index 573ed2e8b2..996b9ba802 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -272,7 +272,7 @@ struct GC * size = The size of the block, calculated from base. * attr = Attribute bits set on the memory block. */ - alias BlkInfo_ BlkInfo; + alias BlkInfo = BlkInfo_; /** From 2f472cd47228af20a2021eb1eface7f75e53f03c Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Mon, 16 Jan 2017 08:04:03 -0500 Subject: [PATCH 699/768] Change aliases to new syntax in core/demangle.d --- src/core/demangle.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 22e7e402ac..ae68d22291 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -1980,12 +1980,12 @@ version(unittest) template staticIota(int x) { - template Seq(T...){ alias T Seq; } + template Seq(T...){ alias Seq = T; } static if (x == 0) - alias Seq!() staticIota; + alias staticIota = Seq!(); else - alias Seq!(staticIota!(x - 1), x - 1) staticIota; + alias staticIota = Seq!(staticIota!(x - 1), x - 1); } } unittest From ca5731391e22cc0979667abfe60c171a6b4112a8 Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Mon, 16 Jan 2017 08:04:13 -0500 Subject: [PATCH 700/768] Change aliases to new syntax in core/thread.d --- src/core/thread.d | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index 09c04747e8..4f99cbbc31 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -60,11 +60,11 @@ version = StackGrowsDown; */ version(Posix) { - alias core.sys.posix.unistd.getpid getpid; + alias getpid = core.sys.posix.unistd.getpid; } else version (Windows) { - alias core.sys.windows.windows.GetCurrentProcessId getpid; + alias getpid = core.sys.windows.windows.GetCurrentProcessId; } @@ -130,7 +130,7 @@ private version (DigitalMars) { version (Windows) - alias _d_eh_swapContext swapContext; + alias swapContext = _d_eh_swapContext; else { extern(C) void* _d_eh_swapContextDwarf(void* newContext) nothrow @nogc; @@ -169,7 +169,7 @@ private } } else - alias _d_eh_swapContext swapContext; + alias swapContext = _d_eh_swapContext; } @@ -187,7 +187,7 @@ version( Windows ) import core.sys.windows.windows; import core.sys.windows.threadaux; // for OpenThreadHandle - extern (Windows) alias uint function(void*) btex_fptr; + extern (Windows) alias btex_fptr = uint function(void*); extern (C) uintptr_t _beginthreadex(void*, uint, btex_fptr, void*, uint, uint*) nothrow; // @@ -1443,11 +1443,11 @@ private: // version( Windows ) { - alias uint TLSKey; + alias TLSKey = uint; } else version( Posix ) { - alias pthread_key_t TLSKey; + alias TLSKey = pthread_key_t; } @@ -2822,8 +2822,8 @@ enum ScanType tls, /// TLS data is being scanned. } -alias void delegate(void*, void*) nothrow ScanAllThreadsFn; /// The scanning function. -alias void delegate(ScanType, void*, void*) nothrow ScanAllThreadsTypeFn; /// ditto +alias ScanAllThreadsFn = void delegate(void*, void*) nothrow; /// The scanning function. +alias ScanAllThreadsTypeFn = void delegate(ScanType, void*, void*) nothrow; /// ditto /** * The main entry point for garbage collection. The supplied delegate @@ -3114,7 +3114,7 @@ enum IsMarked : int unknown, /// Address is not managed by the GC. } -alias int delegate( void* addr ) nothrow IsMarkedDg; /// The isMarked callback function. +alias IsMarkedDg = int delegate( void* addr ) nothrow; /// The isMarked callback function. /** * This routine allows the runtime to process any special per-thread handling @@ -4617,7 +4617,7 @@ private: // Thus, it should not have any effects on OSes not implementing // exception chain verification. - alias void function() fp_t; // Actual signature not relevant. + alias fp_t = void function(); // Actual signature not relevant. static struct EXCEPTION_REGISTRATION { EXCEPTION_REGISTRATION* next; // sehChainEnd if last one. From ead7d13147c5a53b5af8a641c611dab9b6545668 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Mon, 3 Jul 2017 21:09:21 +0200 Subject: [PATCH 701/768] Remove osmodel.mak in favor of ../dmd/osmodel.mak --- circle.yml | 2 +- osmodel.mak | 65 ----------------------------------------------------- posix.mak | 6 +++-- 3 files changed, 5 insertions(+), 68 deletions(-) delete mode 100644 osmodel.mak diff --git a/circle.yml b/circle.yml index 1f6682064d..2d2877d6ff 100644 --- a/circle.yml +++ b/circle.yml @@ -6,8 +6,8 @@ dependencies: test: override: - - make -f posix.mak style - ./circleci.sh setup-repos + - make -f posix.mak style - ./circleci.sh coverage: parallel: true timeout: 1200 diff --git a/osmodel.mak b/osmodel.mak deleted file mode 100644 index 818a3095c7..0000000000 --- a/osmodel.mak +++ /dev/null @@ -1,65 +0,0 @@ -# osmodel.mak -# -# Detects and sets the macros: -# -# OS = one of {osx,linux,freebsd,openbsd,netbsd,solaris} -# MODEL = one of { 32, 64 } -# MODEL_FLAG = one of { -m32, -m64 } -# -# Note: -# Keep this file in sync between druntime, phobos, and dmd repositories! -# Source: https://github.com/dlang/druntime/blob/master/osmodel.mak - - -ifeq (,$(OS)) - uname_S:=$(shell uname -s) - ifeq (Darwin,$(uname_S)) - OS:=osx - endif - ifeq (Linux,$(uname_S)) - OS:=linux - endif - ifeq (FreeBSD,$(uname_S)) - OS:=freebsd - endif - ifeq (OpenBSD,$(uname_S)) - OS:=openbsd - endif - ifeq (NetBSD,$(uname_S)) - OS:=netbsd - endif - ifeq (Solaris,$(uname_S)) - OS:=solaris - endif - ifeq (SunOS,$(uname_S)) - OS:=solaris - endif - ifeq (,$(OS)) - $(error Unrecognized or unsupported OS for uname: $(uname_S)) - endif -endif - -# When running make from XCode it may set environment var OS=MACOS. -# Adjust it here: -ifeq (MACOS,$(OS)) - OS:=osx -endif - -ifeq (,$(MODEL)) - ifeq ($(OS), solaris) - uname_M:=$(shell isainfo -n) - else - uname_M:=$(shell uname -m) - endif - ifneq (,$(findstring $(uname_M),x86_64 amd64)) - MODEL:=64 - endif - ifneq (,$(findstring $(uname_M),i386 i586 i686)) - MODEL:=32 - endif - ifeq (,$(MODEL)) - $(error Cannot figure 32/64 model from uname -m: $(uname_M)) - endif -endif - -MODEL_FLAG:=-m$(MODEL) diff --git a/posix.mak b/posix.mak index d15aa97511..0b1401c679 100644 --- a/posix.mak +++ b/posix.mak @@ -5,7 +5,9 @@ QUIET:= -include osmodel.mak +DMD_DIR=../dmd + +include $(DMD_DIR)/src/osmodel.mak # Default to a release built, override with BUILD=debug ifeq (,$(BUILD)) @@ -21,7 +23,7 @@ ifneq ($(BUILD),release) endif endif -DMD=../dmd/generated/$(OS)/release/$(MODEL)/dmd +DMD=$(DMD_DIR)/generated/$(OS)/release/$(MODEL)/dmd INSTALL_DIR=../install DOCDIR=doc From 1199f9c9f08249705cff5c1145022747b4d09248 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Wed, 5 Jul 2017 18:14:32 +0000 Subject: [PATCH 702/768] core.memory: Fix typo (useable -> usable) --- src/core/memory.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/memory.d b/src/core/memory.d index 573ed2e8b2..631606353f 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -233,8 +233,8 @@ struct GC This can be used to manually allocate arrays. Initial slice size is 0. - Note: The slice's useable size will not match the block size. Use - $(LREF capacity) to retrieve actual useable capacity. + Note: The slice's usable size will not match the block size. Use + $(LREF capacity) to retrieve actual usable capacity. Example: ---- @@ -510,7 +510,7 @@ struct GC * Extend may also be used to extend slices (or memory blocks with * $(LREF APPENDABLE) info). However, use the return value only * as an indicator of success. $(LREF capacity) should be used to - * retrieve actual useable slice capacity. + * retrieve actual usable slice capacity. */ static size_t extend( void* p, size_t mx, size_t sz, const TypeInfo ti = null ) pure nothrow { From d925b0004c9075bd4529a90ec886035ac21f4bd0 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 6 Jul 2017 12:13:35 +0200 Subject: [PATCH 703/768] improve error message --- src/core/sync/mutex.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index 1065c3aaee..0629855a40 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -123,7 +123,7 @@ class Mutex : in { assert(obj !is null, - "Error: the argument passed to Mutex.this(Object obj) is null."); + "The provided object must not be null."); assert(obj.__monitor is null, "The provided object has a monitor already set!"); } From cdf701253415764c63e07e827d0b6d891bc54de8 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 6 Jul 2017 03:30:49 -0700 Subject: [PATCH 704/768] core.atomic: avoid comparing nan bit patterns --- src/core/atomic.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/atomic.d b/src/core/atomic.d index 8fe099af56..7953b8ca8c 100644 --- a/src/core/atomic.d +++ b/src/core/atomic.d @@ -1304,8 +1304,8 @@ version( unittest ) } body { - T base; - shared(T) atom; + T base = cast(T)null; + shared(T) atom = cast(shared(T))null; assert( base !is val, T.stringof ); assert( atom is base, T.stringof ); From 9ddca3b1327ccae185000a9cabaf6c5d61466907 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 27 May 2017 14:18:26 +0200 Subject: [PATCH 705/768] core.demangle: support template encoding without length prefix --- src/core/demangle.d | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index ae68d22291..b4d12dc599 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -1483,21 +1483,21 @@ private struct Demangle TemplateInstanceName: Number __T LName TemplateArgs Z */ - void parseTemplateInstanceName() + void parseTemplateInstanceName(bool hasNumber) { debug(trace) printf( "parseTemplateInstanceName+\n" ); debug(trace) scope(success) printf( "parseTemplateInstanceName-\n" ); auto sav = pos; scope(failure) pos = sav; - auto n = decodeNumber(); + auto n = hasNumber ? decodeNumber() : 0; auto beg = pos; match( "__T" ); parseLName(); put( "!(" ); parseTemplateArgs(); match( 'Z' ); - if( pos - beg != n ) + if( hasNumber && pos - beg != n ) error( "Template name length mismatch" ); put( ')' ); } @@ -1532,6 +1532,11 @@ private struct Demangle // TemplateInstanceName -> Number "__T" switch( front ) { + case '_': + // no length encoding for templates for new mangling + parseTemplateInstanceName(false); + return; + case '0': .. case '9': if( mayBeTemplateInstanceName() ) { @@ -1540,7 +1545,7 @@ private struct Demangle try { debug(trace) printf( "may be template instance name\n" ); - parseTemplateInstanceName(); + parseTemplateInstanceName(true); return; } catch( ParseException e ) @@ -1589,12 +1594,12 @@ private struct Demangle put( '(' ); parseFuncArguments(); put( ')' ); - if( !isDigit( front ) ) // voldemort types don't have a return type on the function + if( !isDigit( front ) && front != '_' ) // voldemort types don't have a return type on the function { auto funclen = len; parseType(); - if( !isDigit( front ) ) + if( !isDigit( front ) && front != '_' ) { // not part of a qualified name, so back up pos = prevpos; @@ -1604,7 +1609,7 @@ private struct Demangle len = funclen; // remove return type from qualified name } } - } while( isDigit( front ) ); + } while( isDigit( front ) || front == '_' ); return dst[beg .. len]; } From ac13f8fd0d695031ae115b96464e3ef0fc758377 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 27 May 2017 17:18:08 +0200 Subject: [PATCH 706/768] core.demangle: add demangling of back references --- src/core/demangle.d | 202 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 163 insertions(+), 39 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index b4d12dc599..1be88bf067 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -68,8 +68,9 @@ private struct Demangle char[] dst = null; size_t pos = 0; size_t len = 0; + size_t brp = 0; // current back reference pos AddType addType = AddType.yes; - + bool mute = false; static class ParseException : Exception { @@ -173,7 +174,7 @@ private struct Demangle dst[b] = t; } - if( val.length ) + if( val.length && !mute ) { assert( contains( dst[0 .. len], val ) ); debug(info) printf( "shifting (%.*s)\n", cast(int) val.length, val.ptr ); @@ -193,7 +194,7 @@ private struct Demangle char[] append( const(char)[] val ) { - if( val.length ) + if( val.length && !mute ) { if( !dst.length ) dst.length = minBufSize; @@ -296,6 +297,13 @@ private struct Demangle return char.init; } + char peek( size_t n ) + { + if( pos + n < buf.length ) + return buf[pos + n]; + return char.init; + } + void test( char val ) { @@ -334,6 +342,56 @@ private struct Demangle popFront(); } + bool isSymbolNameFront() + { + char val = front; + if( isDigit( val ) || val == '_' ) + return true; + if( val != 'Q' ) + return false; + + // check the back reference encoding after 'Q' + val = peekBackref(); + return isDigit( val ); // identifier ref + } + + // return the first character at the back reference + char peekBackref() + { + assert( front == 'Q' ); + auto n = decodeBackref!1(); + if (!n || n > pos) + error("invalid back reference"); + + return buf[pos - n]; + } + + size_t decodeBackref(size_t peekAt = 0)() + { + enum base = 26; + size_t n = 0; + for (size_t p; ; p++) + { + char t; + static if (peekAt > 0) + { + t = peek(peekAt + p); + } + else + { + t = front; + popFront(); + } + if (t < 'A' || t > 'Z') + { + if (t < 'a' || t > 'z') + error("invalid back reference"); + n = base * n + t - 'a'; + return n; + } + n = base * n + t - 'A'; + } + } ////////////////////////////////////////////////////////////////////////// // Parsing Implementation @@ -492,8 +550,24 @@ private struct Demangle debug(trace) printf( "parseLName+\n" ); debug(trace) scope(success) printf( "parseLName-\n" ); + if( front == 'Q' ) + { + // back reference to LName + auto refPos = pos; + popFront(); + size_t n = decodeBackref(); + if( !n || n > refPos ) + error( "Invalid LName back reference" ); + if ( !mute ) + { + auto savePos = pos; + scope(exit) pos = savePos; + pos = refPos - n; + parseLName(); + } + return; + } auto n = decodeNumber(); - if( !n || n > buf.length || n > buf.length - pos ) error( "LName must be at least 1 character" ); if( '_' != front && !isAlpha( front ) ) @@ -713,8 +787,30 @@ private struct Demangle auto beg = len; auto t = front; + char[] parseBackrefType(scope char[] delegate() parseDg) + { + if (pos == brp) + error("recursive back reference"); + auto refPos = pos; + popFront(); + auto n = decodeBackref(); + if (n == 0 || n > pos) + error("invalid back reference"); + if ( mute ) + return null; + auto savePos = pos; + auto saveBrp = brp; + scope(success) { pos = savePos; brp = saveBrp; } + pos = refPos - n; + brp = refPos; + auto ret = parseDg(); + return ret; + } + switch( t ) { + case 'Q': // Type back reference + return parseBackrefType( () => parseType( name ) ); case 'O': // Shared (O Type) popFront(); put( "shared(" ); @@ -801,7 +897,10 @@ private struct Demangle return dst[beg .. len]; case 'D': // TypeDelegate (D TypeFunction) popFront(); - parseTypeFunction( name, IsDelegate.yes ); + if( front == 'Q' ) + parseBackrefType( () => parseTypeFunction( name, IsDelegate.yes ) ); + else + parseTypeFunction( name, IsDelegate.yes ); return dst[beg .. len]; case 'n': // TypeNone (n) popFront(); @@ -1419,6 +1518,8 @@ private struct Demangle // generated by parseValue, so it is safe to simply // decrement len and let put/append do its thing. char t = front; // peek at type for parseValue + if( t == 'Q' ) + t = peekBackref(); char[] name; silent( name = parseType() ); parseValue( name, t ); continue; @@ -1430,7 +1531,7 @@ private struct Demangle { auto l = len; auto p = pos; - + auto b = brp; try { debug(trace) printf( "may be mangled name arg\n" ); @@ -1441,6 +1542,7 @@ private struct Demangle { len = l; pos = p; + brp = b; debug(trace) printf( "not a mangled name arg\n" ); } } @@ -1489,7 +1591,12 @@ private struct Demangle debug(trace) scope(success) printf( "parseTemplateInstanceName-\n" ); auto sav = pos; - scope(failure) pos = sav; + auto saveBrp = brp; + scope(failure) + { + pos = sav; + brp = saveBrp; + } auto n = hasNumber ? decodeNumber() : 0; auto beg = pos; match( "__T" ); @@ -1554,6 +1661,8 @@ private struct Demangle len = t; } } + goto case; + case 'Q': parseLName(); return; default: @@ -1561,6 +1670,47 @@ private struct Demangle } } + void parseFunctionType( bool muteReturnType ) + { + if( 'M' == front ) + { + // do not emit "needs this" + popFront(); + } + if( isCallConvention( front ) ) + { + // try to demangle a function, in case we are pointing to some function local + auto prevpos = pos; + auto prevlen = len; + + // we don't want calling convention and attributes in the qualified name + parseCallConvention(); + parseFuncAttr(); + len = prevlen; + + put( '(' ); + parseFuncArguments(); + put( ')' ); + if( !isSymbolNameFront() ) // voldemort types don't have a return type on the function + { + auto funclen = len; + + bool prevMute = mute; + scope(exit) mute = prevMute; + mute = muteReturnType; + parseType(); + + if( !muteReturnType && !isSymbolNameFront() ) + { + // not part of a qualified name, so back up + pos = prevpos; + len = prevlen; + } + else + len = funclen; // remove return type from qualified name + } + } + } /* QualifiedName: @@ -1579,37 +1729,8 @@ private struct Demangle if( n++ ) put( '.' ); parseSymbolName(); - - if( isCallConvention( front ) ) - { - // try to demangle a function, in case we are pointing to some function local - auto prevpos = pos; - auto prevlen = len; - - // we don't want calling convention and attributes in the qualified name - parseCallConvention(); - parseFuncAttr(); - len = prevlen; - - put( '(' ); - parseFuncArguments(); - put( ')' ); - if( !isDigit( front ) && front != '_' ) // voldemort types don't have a return type on the function - { - auto funclen = len; - parseType(); - - if( !isDigit( front ) && front != '_' ) - { - // not part of a qualified name, so back up - pos = prevpos; - len = prevlen; - } - else - len = funclen; // remove return type from qualified name - } - } - } while( isDigit( front ) || front == '_' ); + parseFunctionType( false ); + } while( isSymbolNameFront() ); return dst[beg .. len]; } @@ -1662,7 +1783,7 @@ private struct Demangle auto newsz = a < b ? b : a; debug(info) printf( "growing dst to %lu bytes\n", newsz ); dst.length = newsz; - pos = len = 0; + pos = len = brp = 0; continue; } catch( ParseException e ) @@ -1981,6 +2102,9 @@ version(unittest) ["_D5bug145Class3barMFNjZPv", "return void* bug14.Class.bar()"], ["_D5bug143fooFMPvZPv", "void* bug14.foo(scope void*)"], ["_D5bug143barFMNkPvZPv", "void* bug14.bar(scope return void*)"], + // back references + ["_D4core4stdc5errnoQgFZi", "int core.stdc.errno.errno()"], // identifier back reference + ["_D4testFS10structnameQnZb", "bool test(structname, structname)"], // type back reference ]; template staticIota(int x) From ea596c53922f4684f1bc47a5f059023ad8a603d9 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 28 May 2017 22:37:02 +0200 Subject: [PATCH 707/768] core.demangle: add test cases for back references --- src/core/demangle.d | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/core/demangle.d b/src/core/demangle.d index 1be88bf067..ac0b62b8de 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -2105,8 +2105,16 @@ version(unittest) // back references ["_D4core4stdc5errnoQgFZi", "int core.stdc.errno.errno()"], // identifier back reference ["_D4testFS10structnameQnZb", "bool test(structname, structname)"], // type back reference + ["_D3std11parallelism__T4TaskS8unittest3cmpTAyaTQeZQBb6__dtorMFNfZv", + "@safe void std.parallelism.Task!(unittest.cmp, immutable(char)[], immutable(char)[]).Task.__dtor()"], + // 1.s.s.foo from https://issues.dlang.org/show_bug.cgi?id=15831 + ["_D13testexpansion44__T1sTS13testexpansion8__T1sTiZ1sFiZ6ResultZ1sFS13testexpansion8__T1sTiZ1sFiZ6ResultZ6Result3fooMFNaNfZv", + "pure @safe void testexpansion.s!(testexpansion.s!(int).s(int).Result).s(testexpansion.s!(int).s(int).Result).Result.foo()"], + ["_D13testexpansion__T1sTSQw__TQjTiZQoFiZ6ResultZQBbFQBcZQq3fooMFNaNfZv", + "pure @safe void testexpansion.s!(testexpansion.s!(int).s(int).Result).s(testexpansion.s!(int).s(int).Result).Result.foo()"], ]; + template staticIota(int x) { template Seq(T...){ alias Seq = T; } From b8dcb052fa5779ef8f997f7890c90fa472f115bf Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 2 Jun 2017 22:41:26 +0200 Subject: [PATCH 708/768] demangle: improve performance for longer symbols --- src/core/demangle.d | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index ac0b62b8de..255f53bf27 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -165,27 +165,21 @@ private struct Demangle } + // move val to the end of the dst buffer char[] shift( const(char)[] val ) { - void exch( size_t a, size_t b ) - { - char t = dst[a]; - dst[a] = dst[b]; - dst[b] = t; - } - if( val.length && !mute ) { assert( contains( dst[0 .. len], val ) ); debug(info) printf( "shifting (%.*s)\n", cast(int) val.length, val.ptr ); - for( size_t n = 0; n < val.length; n++ ) - { - for( size_t v = val.ptr - dst.ptr; v + 1 < len; v++ ) - { - exch( v, v + 1 ); - } - } + if (len + val.length > dst.length) + overflow(); + size_t v = val.ptr - dst.ptr; + dst[len .. len + val.length] = val[]; + for (size_t p = v; p < len; p++) + dst[p] = dst[p + val.length]; + return dst[len - val.length .. len]; } return null; From f7f87ac45b995e5c5f5a7af3c7ee0629c24804a1 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 2 Jun 2017 22:51:56 +0200 Subject: [PATCH 709/768] fix issue 14576: backtrack on ambiguous template alias parameter encoding, support no full length specified --- src/core/demangle.d | 52 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 255f53bf27..aa8725a1d9 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -1485,6 +1485,7 @@ private struct Demangle TemplateArgX: T Type V Type Value + S Number_opt QualifiedName S LName */ void parseTemplateArgs() @@ -1492,6 +1493,7 @@ private struct Demangle debug(trace) printf( "parseTemplateArgs+\n" ); debug(trace) scope(success) printf( "parseTemplateArgs-\n" ); + L_nextArg: for( size_t n = 0; true; n++ ) { if( front == 'H' ) @@ -1540,7 +1542,32 @@ private struct Demangle debug(trace) printf( "not a mangled name arg\n" ); } } - + if( isDigit( front ) && isDigit( peek( 1 ) ) ) + { + // ambiguity: length followed by qualified name (starting with number) + // try all possible pairs of numbers + auto qlen = decodeNumber() / 10; // last digit needed for QualifiedName + pos--; + auto l = len; + auto p = pos; + auto b = brp; + while( qlen > 0 ) + { + try + { + parseQualifiedName(); + if( pos == p + qlen ) + continue L_nextArg; + } + catch( ParseException e ) + { + } + qlen /= 10; // retry with one digit less + pos = --p; + len = l; + brp = b; + } + } parseQualifiedName(); continue; default: @@ -1557,11 +1584,20 @@ private struct Demangle auto p = pos; scope(exit) pos = p; - auto n = decodeNumber(); - return n >= 4 && - pos < buf.length && '_' == buf[pos++] && - pos < buf.length && 'D' == buf[pos++] && - isDigit(buf[pos]); + if ( isDigit( buf[pos] ) ) + { + auto n = decodeNumber(); + return n >= 4 && + pos < buf.length && '_' == buf[pos++] && + pos < buf.length && 'D' == buf[pos++] && + isDigit( buf[pos] ); + } + else + { + return pos < buf.length && '_' == buf[pos++] && + pos < buf.length && 'D' == buf[pos++] && + isSymbolNameFront(); + } } @@ -1570,7 +1606,9 @@ private struct Demangle debug(trace) printf( "parseMangledNameArg+\n" ); debug(trace) scope(success) printf( "parseMangledNameArg-\n" ); - auto n = decodeNumber(); + size_t n = 0; + if ( isDigit( front ) ) + n = decodeNumber(); parseMangledName( n ); } From 0f564d62e8e982f7e73ac662592198a7313348fb Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 2 Jun 2017 22:45:12 +0200 Subject: [PATCH 710/768] fix issues 14319, 14563, 17609, 17610, 17611: demangle: better detect function signatures in QualifiedNames, only print return types for the outmost symbol --- src/core/demangle.d | 247 +++++++++++++++++++++++++++++++++----------- 1 file changed, 186 insertions(+), 61 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index aa8725a1d9..c50abb3f57 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -185,6 +185,20 @@ private struct Demangle return null; } + // remove val from dst buffer + void remove( const(char)[] val ) + { + if( val.length ) + { + assert( contains( dst[0 .. len], val ) ); + debug(info) printf( "removing (%.*s)\n", cast(int) val.length, val.ptr ); + + size_t v = val.ptr - dst.ptr; + for (size_t p = v; p < len; p++) + dst[p] = dst[p + val.length]; + len -= val.length; + } + } char[] append( const(char)[] val ) { @@ -891,10 +905,19 @@ private struct Demangle return dst[beg .. len]; case 'D': // TypeDelegate (D TypeFunction) popFront(); + auto modbeg = len; + parseModifier(); + auto modend = len; if( front == 'Q' ) parseBackrefType( () => parseTypeFunction( name, IsDelegate.yes ) ); else parseTypeFunction( name, IsDelegate.yes ); + if (modend > modbeg) + { + // move modifiers behind the function arguments + shift(dst[modend-1 .. modend]); // trailing space + shift(dst[modbeg .. modend-1]); + } return dst[beg .. len]; case 'n': // TypeNone (n) popFront(); @@ -1049,6 +1072,39 @@ private struct Demangle } } + void parseModifier() + { + switch( front ) + { + case 'y': + popFront(); + put( "immutable " ); + break; + case 'O': + popFront(); + put( "shared " ); + if( front == 'x' ) + goto case 'x'; + if( front == 'N' ) + goto case 'N'; + break; + case 'N': + if( peek( 1 ) != 'g' ) + break; + popFront(); + popFront(); + put( "inout " ); + if( front == 'x' ) + goto case 'x'; + break; + case 'x': + popFront(); + put( "const " ); + break; + default: break; + } + } + void parseFuncAttr() { // FuncAttrs @@ -1174,7 +1230,11 @@ private struct Demangle } enum IsDelegate { no, yes } - // returns the argument list with the left parenthesis, but not the right + + /* + TypeFunction: + CallConvention FuncAttrs Arguments ArgClose Type + */ char[] parseTypeFunction( char[] name = null, IsDelegate isdg = IsDelegate.no ) { debug(trace) printf( "parseTypeFunction+\n" ); @@ -1182,33 +1242,40 @@ private struct Demangle auto beg = len; parseCallConvention(); + auto attrbeg = len; parseFuncAttr(); - beg = len; + auto argbeg = len; put( '(' ); - scope(success) + parseFuncArguments(); + put( ')' ); + if (attrbeg < argbeg) { - put( ')' ); - auto t = len; - parseType(); - put( ' ' ); - if( name.length ) + // move function attributes behind arguments + shift( dst[argbeg - 1 .. argbeg] ); // trailing space + shift( dst[attrbeg .. argbeg - 1] ); // attributes + argbeg = attrbeg; + } + auto retbeg = len; + parseType(); + put( ' ' ); + // append name/delegate/function + if( name.length ) + { + if( !contains( dst[0 .. len], name ) ) + put( name ); + else if( shift( name ).ptr != name.ptr ) { - if( !contains( dst[0 .. len], name ) ) - put( name ); - else if( shift( name ).ptr != name.ptr ) - { - beg -= name.length; - t -= name.length; - } + argbeg -= name.length; + retbeg -= name.length; } - else if( IsDelegate.yes == isdg ) - put( "delegate" ); - else - put( "function" ); - shift( dst[beg .. t] ); } - parseFuncArguments(); + else if( IsDelegate.yes == isdg ) + put( "delegate" ); + else + put( "function" ); + // move arguments and attributes behind name + shift( dst[argbeg .. retbeg] ); return dst[beg..len]; } @@ -1609,7 +1676,7 @@ private struct Demangle size_t n = 0; if ( isDigit( front ) ) n = decodeNumber(); - parseMangledName( n ); + parseMangledName( false, n ); } @@ -1702,46 +1769,52 @@ private struct Demangle } } - void parseFunctionType( bool muteReturnType ) + // parse optional function arguments as part of a symbol name, i.e without return type + // if keepAttr, the calling convention and function attributes are not discarded, but returned + char[] parseFunctionTypeNoReturn( bool keepAttr = false ) { - if( 'M' == front ) - { - // do not emit "needs this" - popFront(); - } - if( isCallConvention( front ) ) - { - // try to demangle a function, in case we are pointing to some function local - auto prevpos = pos; - auto prevlen = len; - - // we don't want calling convention and attributes in the qualified name - parseCallConvention(); - parseFuncAttr(); - len = prevlen; + // try to demangle a function, in case we are pointing to some function local + auto prevpos = pos; + auto prevlen = len; + auto prevbrp = brp; - put( '(' ); - parseFuncArguments(); - put( ')' ); - if( !isSymbolNameFront() ) // voldemort types don't have a return type on the function + char[] attr; + try + { + if( 'M' == front ) { - auto funclen = len; - - bool prevMute = mute; - scope(exit) mute = prevMute; - mute = muteReturnType; - parseType(); - - if( !muteReturnType && !isSymbolNameFront() ) + // do not emit "needs this" + popFront(); + parseModifier(); + } + if( isCallConvention( front ) ) + { + // we don't want calling convention and attributes in the qualified name + parseCallConvention(); + parseFuncAttr(); + if( keepAttr ) { - // not part of a qualified name, so back up - pos = prevpos; - len = prevlen; + attr = dst[prevlen .. len]; } else - len = funclen; // remove return type from qualified name + { + len = prevlen; + } + + put( '(' ); + parseFuncArguments(); + put( ')' ); } } + catch( ParseException ) + { + // not part of a qualified name, so back up + pos = prevpos; + len = prevlen; + brp = prevbrp; + attr = null; + } + return attr; } /* @@ -1761,7 +1834,8 @@ private struct Demangle if( n++ ) put( '.' ); parseSymbolName(); - parseFunctionType( false ); + parseFunctionTypeNoReturn(); + } while( isSymbolNameFront() ); return dst[beg .. len]; } @@ -1772,7 +1846,7 @@ private struct Demangle _D QualifiedName Type _D QualifiedName M Type */ - void parseMangledName(size_t n = 0) + void parseMangledName( bool displayType, size_t n = 0 ) { debug(trace) printf( "parseMangledName+\n" ); debug(trace) scope(success) printf( "parseMangledName-\n" ); @@ -1784,18 +1858,68 @@ private struct Demangle match( 'D' ); do { - name = parseQualifiedName(); + size_t beg = len; + size_t nameEnd = len; + char[] attr; + do + { + if( attr ) + remove( attr ); // dump attributes of parent symbols + if( beg != len ) + put( '.' ); + parseSymbolName(); + nameEnd = len; + attr = parseFunctionTypeNoReturn( displayType ); + + } while( isSymbolNameFront() ); + + if( displayType ) + { + attr = shift( attr ); + nameEnd = len - attr.length; // name includes function arguments + } + name = dst[beg .. nameEnd]; + debug(info) printf( "name (%.*s)\n", cast(int) name.length, name.ptr ); if( 'M' == front ) popFront(); // has 'this' pointer - if( AddType.yes == addType ) - parseType( name ); + + auto lastlen = len; + auto type = parseType(); + if( displayType ) + { + if( type.length ) + put( ' ' ); + // sort (name,attr,type) -> (attr,type,name) + shift( name ); + } + else + { + // remove type + assert( attr.length == 0 ); + len = lastlen; + } if( pos >= buf.length || (n != 0 && pos >= end) ) return; + + switch( front ) + { + case 'T': // terminators when used as template alias parameter + case 'V': + case 'S': + case 'Z': + return; + default: + } put( '.' ); + } while( true ); } + void parseMangledName() + { + parseMangledName( AddType.yes == addType ); + } char[] doDemangle(alias FUNC)() { @@ -2081,7 +2205,8 @@ version(unittest) ["_D4test3fooAa", "char[] test.foo"], ["_D8demangle8demangleFAaZAa", "char[] demangle.demangle(char[])"], ["_D6object6Object8opEqualsFC6ObjectZi", "int object.Object.opEquals(Object)"], - ["_D4test2dgDFiYd", "double test.dg(int, ...)"], + ["_D4test2dgDFiYd", "double delegate(int, ...) test.dg"], + ["_D4test2dgDxFNfiYd", "double delegate(int, ...) @safe const test.dg"], //["_D4test58__T9factorialVde67666666666666860140VG5aa5_68656c6c6fVPvnZ9factorialf", ""], //["_D4test101__T9factorialVde67666666666666860140Vrc9a999999999999d9014000000000000000c00040VG5aa5_68656c6c6fVPvnZ9factorialf", ""], ["_D4test34__T3barVG3uw3_616263VG3wd3_646566Z1xi", "int test.bar!(\"abc\"w, \"def\"d).x"], @@ -2117,7 +2242,7 @@ version(unittest) ["_D8demangle4testFNhG4fZv", "void demangle.test(__vector(float[4]))"], ["_D8demangle4testFNhG2dZv", "void demangle.test(__vector(double[2]))"], ["_D8demangle4testFNhG4fNhG4fZv", "void demangle.test(__vector(float[4]), __vector(float[4]))"], - ["_D8bug1119234__T3fooS23_D8bug111924mainFZ3bariZ3fooMFZv","void bug11192.foo!(int bug11192.main().bar).foo()"], + ["_D8bug1119234__T3fooS23_D8bug111924mainFZ3bariZ3fooMFZv","void bug11192.foo!(bug11192.main().bar).foo()"], ["_D13libd_demangle12__ModuleInfoZ", "libd_demangle.__ModuleInfo"], ["_D15TypeInfo_Struct6__vtblZ", "TypeInfo_Struct.__vtbl"], ["_D3std5stdio12__ModuleInfoZ", "std.stdio.__ModuleInfo"], From 7a92a41d437c6cfe24f0fa46bf7f154401f037f8 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 2 Jun 2017 22:59:23 +0200 Subject: [PATCH 711/768] support template aliases to externally mangled symbols with 'X' instead of 'S' --- src/core/demangle.d | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index c50abb3f57..6772fde6cb 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -1553,7 +1553,7 @@ private struct Demangle T Type V Type Value S Number_opt QualifiedName - S LName + X ExternallyMangledName */ void parseTemplateArgs() { @@ -1637,6 +1637,11 @@ private struct Demangle } parseQualifiedName(); continue; + case 'X': + popFront(); + putComma(n); + parseLName(); + continue; default: return; } @@ -2269,6 +2274,8 @@ version(unittest) "pure @safe void testexpansion.s!(testexpansion.s!(int).s(int).Result).s(testexpansion.s!(int).s(int).Result).Result.foo()"], ["_D13testexpansion__T1sTSQw__TQjTiZQoFiZ6ResultZQBbFQBcZQq3fooMFNaNfZv", "pure @safe void testexpansion.s!(testexpansion.s!(int).s(int).Result).s(testexpansion.s!(int).s(int).Result).Result.foo()"], + ["_D3std5stdio4File__T8lockImplX10LockFileExTykZQBaMFmmykZi", // C function as template alias parameter + "int std.stdio.File.lockImpl!(LockFileEx, immutable(uint)).lockImpl(ulong, ulong, immutable(uint))"], ]; From fb6ebcfffa40ebf59aae51e1fbe2f5e113793847 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Fri, 2 Jun 2017 23:00:05 +0200 Subject: [PATCH 712/768] demangle with back references: add test cases --- src/core/demangle.d | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/core/demangle.d b/src/core/demangle.d index 6772fde6cb..9f1281058b 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -2264,6 +2264,13 @@ version(unittest) ["_D5bug145Class3barMFNjZPv", "return void* bug14.Class.bar()"], ["_D5bug143fooFMPvZPv", "void* bug14.foo(scope void*)"], ["_D5bug143barFMNkPvZPv", "void* bug14.bar(scope return void*)"], + ["_D3std5range15__T4iotaTtTtTtZ4iotaFtttZ6Result7opIndexMNgFNaNbNiNfmZNgt", + "inout pure nothrow @nogc @safe inout(ushort) std.range.iota!(ushort, ushort, ushort).iota(ushort, ushort, ushort).Result.opIndex(ulong)"], + ["_D3std6format77__T6getNthVAyaa13_696e7465676572207769647468S233std6traits10isIntegralTiTkTkZ6getNthFNaNfkkkZi", + "pure @safe int std.format.getNth!(\"integer width\", std.traits.isIntegral, int, uint, uint).getNth(uint, uint, uint)"], + ["_D3std11parallelism42__T16RoundRobinBufferTDFKAaZvTDxFNaNdNeZbZ16RoundRobinBuffer5primeMFZv", + "void std.parallelism.RoundRobinBuffer!(void delegate(ref char[]), bool delegate() pure @property @trusted const).RoundRobinBuffer.prime()"], + // back references ["_D4core4stdc5errnoQgFZi", "int core.stdc.errno.errno()"], // identifier back reference ["_D4testFS10structnameQnZb", "bool test(structname, structname)"], // type back reference @@ -2274,8 +2281,37 @@ version(unittest) "pure @safe void testexpansion.s!(testexpansion.s!(int).s(int).Result).s(testexpansion.s!(int).s(int).Result).Result.foo()"], ["_D13testexpansion__T1sTSQw__TQjTiZQoFiZ6ResultZQBbFQBcZQq3fooMFNaNfZv", "pure @safe void testexpansion.s!(testexpansion.s!(int).s(int).Result).s(testexpansion.s!(int).s(int).Result).Result.foo()"], + // ambiguity on 'V', template value argument or pascal function + ["_D3std4conv__T7enumRepTyAaTEQBa12experimental9allocator15building_blocks15stats_collector7OptionsVQCti64ZQDnyQDh", + "immutable(char[]) std.conv.enumRep!(immutable(char[]), std.experimental.allocator.building_blocks.stats_collector.Options, 64).enumRep"], + // symbol back reference to location with symbol back reference + ["_D3std12experimental9allocator6common__T10reallocateTSQCaQBzQBo15building_blocks17kernighan_ritchie__T8KRRegionTSQEhQEgQDvQCh14null_allocator13NullAllocatorZQCdZQErFNaNbNiKQEpKAvmZb", + "pure nothrow @nogc bool std.experimental.allocator.common.reallocate!(std.experimental.allocator.building_blocks.kernighan_ritchie.KRRegion!(" + ~"std.experimental.allocator.building_blocks.null_allocator.NullAllocator).KRRegion).reallocate(ref " + ~"std.experimental.allocator.building_blocks.kernighan_ritchie.KRRegion!(std.experimental.allocator.building_blocks.null_allocator.NullAllocator).KRRegion, ref void[], ulong)"], + ["_D3std9exception__T11doesPointToTASQBh5regex8internal2ir10NamedGroupTQBkTvZQCeFNaNbNiNeKxASQDlQCeQCbQBvQBvKxQtZb", + "pure nothrow @nogc @trusted bool std.exception.doesPointTo!(std.regex.internal.ir.NamedGroup[], " + ~"std.regex.internal.ir.NamedGroup[], void).doesPointTo(ref const(std.regex.internal.ir.NamedGroup[]), ref const(std.regex.internal.ir.NamedGroup[]))"], + ["_D3std9algorithm9iteration__T14SplitterResultS_DQBu3uni7isWhiteFNaNbNiNfwZbTAyaZQBz9__xtoHashFNbNeKxSQDvQDuQDn__TQDgS_DQEnQCtQCsQCnTQCeZQEdZm", + "nothrow @trusted ulong std.algorithm.iteration.SplitterResult!(std.uni.isWhite(dchar), immutable(char)[]).SplitterResult." + ~"__xtoHash(ref const(std.algorithm.iteration.SplitterResult!(std.uni.isWhite, immutable(char)[]).SplitterResult))"], + ["_D3std8typecons__T7TypedefTCQBaQz19__unittestL6513_208FNfZ7MyClassVQBonVAyanZQCh6__ctorMFNaNbNcNiNfQCuZSQDyQDx__TQDrTQDmVQDqnVQCcnZQEj", + "pure nothrow ref @nogc @safe std.typecons.Typedef!(std.typecons.__unittestL6513_208().MyClass, null, null).Typedef " + ~"std.typecons.Typedef!(std.typecons.__unittestL6513_208().MyClass, null, null).Typedef.__ctor(std.typecons.__unittestL6513_208().MyClass)"], + ["_D3std6getopt__TQkTAyaTDFNaNbNiNfQoZvTQtTDQsZQBnFNfKAQBiQBlQBkQBrQyZSQCpQCo12GetoptResult", + "@safe std.getopt.GetoptResult std.getopt.getopt!(immutable(char)[], void delegate(immutable(char)[]) pure nothrow @nogc @safe, " + ~"immutable(char)[], void delegate(immutable(char)[]) pure nothrow @nogc @safe)." + ~"getopt(ref immutable(char)[][], immutable(char)[], void delegate(immutable(char)[]) pure nothrow @nogc @safe, " + ~"immutable(char)[], void delegate(immutable(char)[]) pure nothrow @nogc @safe)"], + ["_D3std5regex8internal9kickstart__T7ShiftOrTaZQl11ShiftThread__T3setS_DQCqQCpQCmQCg__TQBzTaZQCfQBv10setInvMaskMFNaNbNiNfkkZvZQCjMFNaNfwZv", + "pure @safe void std.regex.internal.kickstart.ShiftOr!(char).ShiftOr.ShiftThread.set!(std.regex.internal.kickstart.ShiftOr!(char).ShiftOr.ShiftThread.setInvMask(uint, uint)).set(dchar)"], ["_D3std5stdio4File__T8lockImplX10LockFileExTykZQBaMFmmykZi", // C function as template alias parameter "int std.stdio.File.lockImpl!(LockFileEx, immutable(uint)).lockImpl(ulong, ulong, immutable(uint))"], + // back reference for type in template AA parameter value + ["_D3std9algorithm9iteration__T12FilterResultSQBq8typecons__T5TupleTiVAyaa1_61TiVQla1_62TiVQva1_63ZQBm__T6renameVHiQBtA2i0a1_63i2a1_61ZQBeMFNcZ9__lambda1TAiZQEw9__xtoHashFNbNeKxSQGsQGrQGk__TQGdSQHiQFs__TQFmTiVQFja1_61TiVQFua1_62TiVQGfa1_63ZQGx__TQFlVQFhA2i0a1_63i2a1_61ZQGjMFNcZQFfTQEyZQJvZm", + `nothrow @trusted ulong std.algorithm.iteration.FilterResult!(std.typecons.Tuple!(int, "a", int, "b", int, "c").` + ~`Tuple.rename!([0:"c", 2:"a"]).rename().__lambda1, int[]).FilterResult.__xtoHash(ref const(std.algorithm.iteration.` + ~`FilterResult!(std.typecons.Tuple!(int, "a", int, "b", int, "c").Tuple.rename!([0:"c", 2:"a"]).rename().__lambda1, int[]).FilterResult))`], ]; From f54956f7bd4dcffe5a09a73f788775f8120545e4 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Thu, 22 Jun 2017 08:46:55 +0200 Subject: [PATCH 713/768] purify Demangle --- src/core/demangle.d | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 9f1281058b..06c9b9f656 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -43,7 +43,7 @@ private struct Demangle // allocation during the course of a parsing run, this is still // faster than assembling the result piecemeal. - +pure: enum AddType { no, yes } @@ -524,10 +524,7 @@ private struct Demangle tbuf[tlen] = 0; debug(info) printf( "got (%s)\n", tbuf.ptr ); - import core.stdc.stdlib : strtold; - val = strtold( tbuf.ptr, null ); - import core.stdc.stdio : snprintf; - tlen = snprintf( tbuf.ptr, tbuf.length, "%#Lg", val ); + pureReprintReal( tbuf.ptr, tbuf.length ); debug(info) printf( "converted (%.*s)\n", cast(int) tlen, tbuf.ptr ); put( tbuf[0 .. tlen] ); } @@ -795,7 +792,7 @@ private struct Demangle auto beg = len; auto t = front; - char[] parseBackrefType(scope char[] delegate() parseDg) + char[] parseBackrefType(scope char[] delegate() pure parseDg) pure { if (pos == brp) error("recursive back reference"); @@ -2386,3 +2383,23 @@ string decodeDmdString( const(char)[] ln, ref size_t p ) } return s; } + +// locally purified for internal use here only +extern (C) private +{ + pure @trusted @nogc nothrow pragma(mangle, "fakePureReprintReal") real pureReprintReal(char* nptr, size_t len); + + char* fakePureReprintReal(char* nptr, size_t len) + { + import core.stdc.stdlib : strtold; + import core.stdc.stdio : snprintf; + import core.stdc.errno : errno; + + const err = errno; + real val = strtold(nptr, null); + len = snprintf(nptr, len, "%#Lg", val); + errno = err; + + return nptr; + } +} From 92cee12b8ac8c5bbc97b0ecdec0500df34e6cd26 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Thu, 22 Jun 2017 08:48:43 +0200 Subject: [PATCH 714/768] use DbI to reencode mangled string with identifier back references --- src/core/demangle.d | 213 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 207 insertions(+), 6 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 06c9b9f656..191dfae571 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -24,7 +24,14 @@ else version (WatchOS) debug(trace) import core.stdc.stdio : printf; debug(info) import core.stdc.stdio : printf; -private struct Demangle +private struct NoHooks +{ + // supported hooks + // static bool parseLName(ref Demangle); + // static char[] parseType(ref Demangle, char[]) +} + +private struct Demangle(Hooks = NoHooks) { // NOTE: This implementation currently only works with mangled function // names as they exist in an object file. Type names mangled via @@ -71,6 +78,7 @@ pure: size_t brp = 0; // current back reference pos AddType addType = AddType.yes; bool mute = false; + Hooks hooks; static class ParseException : Exception { @@ -555,6 +563,10 @@ pure: debug(trace) printf( "parseLName+\n" ); debug(trace) scope(success) printf( "parseLName-\n" ); + static if(__traits(hasMember, Hooks, "parseLName")) + if (hooks.parseLName(this)) + return; + if( front == 'Q' ) { // back reference to LName @@ -787,6 +799,10 @@ pure: "dchar", // w ]; + static if (__traits(hasMember, Hooks, "parseType")) + if (auto n = hooks.parseType(this, name)) + return n; + debug(trace) printf( "parseType+\n" ); debug(trace) scope(success) printf( "parseType-\n" ); auto beg = len; @@ -1986,7 +2002,7 @@ pure: char[] demangle( const(char)[] buf, char[] dst = null ) { //return Demangle(buf, dst)(); - auto d = Demangle(buf, dst); + auto d = Demangle!()(buf, dst); return d.demangleName(); } @@ -2004,10 +2020,178 @@ char[] demangle( const(char)[] buf, char[] dst = null ) */ char[] demangleType( const(char)[] buf, char[] dst = null ) { - auto d = Demangle(buf, dst); + auto d = Demangle!()(buf, dst); return d.demangleType(); } +/** +* reencode a mangled symbol name that might include duplicate occurrences +* of the same identifier by replacing all but the first occurence with +* a back reference. +* +* Params: +* mangled = The mangled string representing the type +* +* Returns: +* The mangled name with deduplicated identifiers +*/ +char[] reencodeMangled(const(char)[] mangled) nothrow pure @safe +{ + static struct PrependHooks + { + size_t lastpos; + char[] result; + size_t[const(char)[]] idpos; // identifier positions + + static struct Replacement + { + size_t pos; // postion in original mangled string + size_t respos; // postion in result string + } + Replacement [] replacements; + + pure: + size_t positionInResult(size_t pos) + { + foreach_reverse (r; replacements) + if (pos >= r.pos) + return r.respos + pos - r.pos; + return pos; + } + + alias Remangle = Demangle!(PrependHooks); + + void flushPosition(ref Remangle d) + { + if (lastpos < d.pos) + { + result ~= d.buf[lastpos .. d.pos]; + } + else if (lastpos > d.pos) + { + // roll back to earlier position + while (replacements.length > 0 && replacements[$-1].pos > d.pos) + replacements = replacements[0 .. $-1]; + + if (replacements.length > 0) + result.length = replacements[$-1].respos + d.pos - replacements[$-1].pos; + else + result.length = d.pos; + } + } + + bool parseLName(ref Remangle d) + { + flushPosition(d); + + auto reslen = result.length; + auto refpos = d.pos; + if (d.front == 'Q') + { + size_t npos; + { + scope(exit) result.length = reslen; // remove all intermediate additions + // only support identifier back references + d.popFront(); + size_t n = d.decodeBackref(); + if (!n || n > refpos) + d.error("invalid back reference"); + + auto savepos = d.pos; + scope(exit) d.pos = savepos; + size_t srcpos = refpos - n; + + auto idlen = d.decodeNumber(); + if (d.pos + idlen > d.buf.length) + d.error("invalid back reference"); + auto id = d.buf[d.pos .. d.pos + idlen]; + auto pid = id in idpos; + if (!pid) + d.error("invalid back reference"); + npos = positionInResult(*pid); + } + encodeBackref(reslen - npos); + replacements ~= Replacement(d.pos, result.length); + } + else + { + auto n = d.decodeNumber(); + if(!n || n > d.buf.length || n > d.buf.length - d.pos) + d.error("LName too shot or too long"); + auto id = d.buf[d.pos .. d.pos + n]; + d.pos += n; + if (auto pid = id in idpos) + { + size_t npos = positionInResult(*pid); + result.length = reslen; + encodeBackref(reslen - npos); + replacements ~= Replacement(d.pos, result.length); + } + else + { + idpos[id] = refpos; + result ~= d.buf[refpos .. d.pos]; + } + } + lastpos = d.pos; + return true; + } + + char[] parseType( ref Remangle d, char[] name = null ) + { + if (d.front != 'Q') + return null; + + flushPosition(d); + + auto refPos = d.pos; + d.popFront(); + auto n = d.decodeBackref(); + if (n == 0 || n > refPos) + d.error("invalid back reference"); + + size_t npos = positionInResult(refPos - n); + size_t reslen = result.length; + encodeBackref(reslen - npos); + + lastpos = d.pos; + return result[reslen .. $]; // anything but null + } + + void encodeBackref(size_t relpos) + { + result ~= 'Q'; + enum base = 26; + size_t div = 1; + while (relpos >= div * base) + div *= base; + while (div >= base) + { + auto dig = (relpos / div); + result ~= cast(char)('A' + dig); + relpos -= dig * div; + div /= base; + } + result ~= cast(char)('a' + relpos); + } + } + + auto d = Demangle!(PrependHooks)(mangled, null); + d.hooks = PrependHooks(); + d.mute = true; // no demangled output + try + { + () @trusted { d.parseMangledName(); }(); + if (d.hooks.lastpos < d.pos) + d.hooks.result ~= d.buf[d.hooks.lastpos .. d.pos]; + return d.hooks.result; + } + catch(Exception) + { + // overflow exception cannot occur + return mangled.dup; + } +} /** * Mangles a D symbol. @@ -2069,7 +2253,11 @@ char[] mangle(T)(const(char)[] fqn, char[] dst = null) @safe pure nothrow } dst[i .. i + T.mangleof.length] = T.mangleof[]; i += T.mangleof.length; - return dst[0 .. i]; + + static if(hasTypeBackRef) + return reencodeMangled(dst[0 .. i]); + else + return dst[0 .. i]; } @@ -2129,12 +2317,25 @@ char[] mangleFunc(T:FT*, FT)(const(char)[] fqn, char[] dst = null) @safe pure no } } +private enum hasTypeBackRef = (int function(void**,void**)).mangleof[$-4 .. $] == "QdZi"; /// unittest { assert(mangleFunc!(int function(int))("a.b") == "_D1a1bFiZi"); - assert(mangleFunc!(int function(Object))("object.Object.opEquals") == "_D6object6Object8opEqualsFC6ObjectZi"); + static if(hasTypeBackRef) + { + assert(mangleFunc!(int function(Object))("object.Object.opEquals") == "_D6object6Object8opEqualsFCQsZi"); + assert(mangleFunc!(int function(Object, Object))("object.Object.opEquals") == "_D6object6Object8opEqualsFCQsQdZi"); + } + else + { + auto mngl = mangleFunc!(int function(Object))("object.Object.opEquals"); + assert(mngl == "_D6object6Object8opEqualsFC6ObjectZi"); + assert(reencodeMangled(mngl) == "_D6object6Object8opEqualsFCQtZi"); + } + // trigger back tracking with ambiguity on '__T', template or identifier + assert(reencodeMangled("_D3std4conv4conv7__T3std4convi") == "_D3std4convQf7__T3stdQpi"); } unittest @@ -2373,7 +2574,7 @@ string decodeDmdString( const(char)[] ln, ref size_t p ) break; s ~= s[$ - zpos .. $ - zpos + zlen]; } - else if( Demangle.isAlpha(cast(char)ch) || Demangle.isDigit(cast(char)ch) || ch == '_' ) + else if( Demangle!().isAlpha(cast(char)ch) || Demangle!().isDigit(cast(char)ch) || ch == '_' ) s ~= cast(char) ch; else { From dc455719c50a433a3720bdeade0912eb386e5845 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Mon, 26 Jun 2017 08:30:52 +0200 Subject: [PATCH 715/768] support LName with length 0 as "__anonymous" --- src/core/demangle.d | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index 191dfae571..ffd14fe69c 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -585,7 +585,12 @@ pure: return; } auto n = decodeNumber(); - if( !n || n > buf.length || n > buf.length - pos ) + if( n == 0 ) + { + put( "__anonymous" ); + return; + } + if( n > buf.length || n > buf.length - pos ) error( "LName must be at least 1 character" ); if( '_' != front && !isAlpha( front ) ) error( "Invalid character in LName" ); @@ -2332,7 +2337,8 @@ unittest { auto mngl = mangleFunc!(int function(Object))("object.Object.opEquals"); assert(mngl == "_D6object6Object8opEqualsFC6ObjectZi"); - assert(reencodeMangled(mngl) == "_D6object6Object8opEqualsFCQtZi"); + auto remngl = reencodeMangled(mngl); + assert(remngl == "_D6object6Object8opEqualsFCQsZi"); } // trigger back tracking with ambiguity on '__T', template or identifier assert(reencodeMangled("_D3std4conv4conv7__T3std4convi") == "_D3std4convQf7__T3stdQpi"); @@ -2468,6 +2474,10 @@ version(unittest) "pure @safe int std.format.getNth!(\"integer width\", std.traits.isIntegral, int, uint, uint).getNth(uint, uint, uint)"], ["_D3std11parallelism42__T16RoundRobinBufferTDFKAaZvTDxFNaNdNeZbZ16RoundRobinBuffer5primeMFZv", "void std.parallelism.RoundRobinBuffer!(void delegate(ref char[]), bool delegate() pure @property @trusted const).RoundRobinBuffer.prime()"], + // Lname '0' + ["_D3std9algorithm9iteration__T9MapResultSQBmQBlQBe005stripTAAyaZQBi7opSliceMFNaNbNiNfmmZSQDiQDhQDa__TQCtSQDyQDxQDq00QCmTQCjZQDq", + "pure nothrow @nogc @safe std.algorithm.iteration.MapResult!(std.algorithm.iteration.__anonymous.strip, " + ~"immutable(char)[][]).MapResult std.algorithm.iteration.MapResult!(std.algorithm.iteration.strip, immutable(char)[][]).MapResult.opSlice(ulong, ulong)"], // back references ["_D4core4stdc5errnoQgFZi", "int core.stdc.errno.errno()"], // identifier back reference From 2e37769507517fb5f6600172e4ed8548c713a3df Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Mon, 3 Jul 2017 09:00:30 +0200 Subject: [PATCH 716/768] fix issue 16664 - restrict trusted code to a few small functions and make demangler @safe, pure and nothrow --- src/core/demangle.d | 58 +++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/src/core/demangle.d b/src/core/demangle.d index ffd14fe69c..d205b7d541 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -50,7 +50,7 @@ private struct Demangle(Hooks = NoHooks) // allocation during the course of a parsing run, this is still // faster than assembling the result piecemeal. -pure: +pure @safe: enum AddType { no, yes } @@ -98,7 +98,7 @@ pure: } - static void error( string msg = "Invalid symbol" ) + static void error( string msg = "Invalid symbol" ) @trusted /* exception only used in module */ { //throw new ParseException( msg ); debug(info) printf( "error: %.*s\n", cast(int) msg.length, msg.ptr ); @@ -108,7 +108,7 @@ pure: } - static void overflow( string msg = "Buffer overflow" ) + static void overflow( string msg = "Buffer overflow" ) @trusted /* exception only used in module */ { //throw new OverflowException( msg ); debug(info) printf( "overflow: %.*s\n", cast(int) msg.length, msg.ptr ); @@ -161,7 +161,7 @@ pure: ////////////////////////////////////////////////////////////////////////// - static bool contains( const(char)[] a, const(char)[] b ) + static bool contains( const(char)[] a, const(char)[] b ) @trusted { if (a.length && b.length) { @@ -183,7 +183,7 @@ pure: if (len + val.length > dst.length) overflow(); - size_t v = val.ptr - dst.ptr; + size_t v = &val[0] - &dst[0]; dst[len .. len + val.length] = val[]; for (size_t p = v; p < len; p++) dst[p] = dst[p + val.length]; @@ -201,7 +201,7 @@ pure: assert( contains( dst[0 .. len], val ) ); debug(info) printf( "removing (%.*s)\n", cast(int) val.length, val.ptr ); - size_t v = val.ptr - dst.ptr; + size_t v = &val[0] - &dst[0]; for (size_t p = v; p < len; p++) dst[p] = dst[p + val.length]; len -= val.length; @@ -217,7 +217,7 @@ pure: assert( !contains( dst[0 .. len], val ) ); debug(info) printf( "appending (%.*s)\n", cast(int) val.length, val.ptr ); - if( dst.ptr + len == val.ptr && + if( &dst[len] == &val[0] && dst.length - len >= val.length ) { // data is already in place @@ -532,7 +532,7 @@ pure: tbuf[tlen] = 0; debug(info) printf( "got (%s)\n", tbuf.ptr ); - pureReprintReal( tbuf.ptr, tbuf.length ); + pureReprintReal( tbuf[] ); debug(info) printf( "converted (%.*s)\n", cast(int) tlen, tbuf.ptr ); put( tbuf[0 .. tlen] ); } @@ -813,7 +813,7 @@ pure: auto beg = len; auto t = front; - char[] parseBackrefType(scope char[] delegate() pure parseDg) pure + char[] parseBackrefType(scope char[] delegate() pure @safe parseDg) pure @safe { if (pos == brp) error("recursive back reference"); @@ -1977,15 +1977,19 @@ pure: dst[0 .. buf.length] = buf[]; return dst[0 .. buf.length]; } + catch( Exception e ) + { + assert( false ); // no other exceptions thrown + } } } - char[] demangleName() + char[] demangleName() nothrow { return doDemangle!parseMangledName(); } - char[] demangleType() + char[] demangleType() nothrow { return doDemangle!parseType(); } @@ -2004,7 +2008,7 @@ pure: * The demangled name or the original string if the name is not a mangled D * name. */ -char[] demangle( const(char)[] buf, char[] dst = null ) +char[] demangle( const(char)[] buf, char[] dst = null ) nothrow pure @safe { //return Demangle(buf, dst)(); auto d = Demangle!()(buf, dst); @@ -2023,7 +2027,7 @@ char[] demangle( const(char)[] buf, char[] dst = null ) * The demangled type name or the original string if the name is not a * mangled D type. */ -char[] demangleType( const(char)[] buf, char[] dst = null ) +char[] demangleType( const(char)[] buf, char[] dst = null ) nothrow pure @safe { auto d = Demangle!()(buf, dst); return d.demangleType(); @@ -2055,7 +2059,7 @@ char[] reencodeMangled(const(char)[] mangled) nothrow pure @safe } Replacement [] replacements; - pure: + pure @safe: size_t positionInResult(size_t pos) { foreach_reverse (r; replacements) @@ -2186,7 +2190,7 @@ char[] reencodeMangled(const(char)[] mangled) nothrow pure @safe d.mute = true; // no demangled output try { - () @trusted { d.parseMangledName(); }(); + d.parseMangledName(); if (d.hooks.lastpos < d.pos) d.hooks.result ~= d.buf[d.hooks.lastpos .. d.pos]; return d.hooks.result; @@ -2267,14 +2271,14 @@ char[] mangle(T)(const(char)[] fqn, char[] dst = null) @safe pure nothrow /// -unittest +@safe pure nothrow unittest { assert(mangle!int("a.b") == "_D1a1bi"); assert(mangle!(char[])("test.foo") == "_D4test3fooAa"); assert(mangle!(int function(int))("a.b") == "_D1a1bPFiZi"); } -unittest +@safe pure nothrow unittest { static assert(mangle!int("a.b") == "_D1a1bi"); @@ -2325,7 +2329,7 @@ char[] mangleFunc(T:FT*, FT)(const(char)[] fqn, char[] dst = null) @safe pure no private enum hasTypeBackRef = (int function(void**,void**)).mangleof[$-4 .. $] == "QdZi"; /// -unittest +@safe pure nothrow unittest { assert(mangleFunc!(int function(int))("a.b") == "_D1a1bFiZi"); static if(hasTypeBackRef) @@ -2344,7 +2348,7 @@ unittest assert(reencodeMangled("_D3std4conv4conv7__T3std4convi") == "_D3std4convQf7__T3stdQpi"); } -unittest +@safe pure nothrow unittest { int function(lazy int[], ...) fp; assert(mangle!(typeof(fp))("demangle.test") == "_D8demangle4testPFLAiYi"); @@ -2368,7 +2372,7 @@ private template hasPlainMangling(FT) if (is(FT == function)) enum hasPlainMangling = c == 'U' || c == 'V' || c == 'W'; } -unittest +@safe pure nothrow unittest { static extern(D) void fooD(); static extern(C) void fooC(); @@ -2533,7 +2537,7 @@ version(unittest) alias staticIota = Seq!(staticIota!(x - 1), x - 1); } } -unittest +@safe pure nothrow unittest { foreach( i, name; table ) { @@ -2553,7 +2557,7 @@ unittest /* * */ -string decodeDmdString( const(char)[] ln, ref size_t p ) +string decodeDmdString( const(char)[] ln, ref size_t p ) nothrow pure @safe { string s; uint zlen, zpos; @@ -2598,19 +2602,17 @@ string decodeDmdString( const(char)[] ln, ref size_t p ) // locally purified for internal use here only extern (C) private { - pure @trusted @nogc nothrow pragma(mangle, "fakePureReprintReal") real pureReprintReal(char* nptr, size_t len); + pure @trusted @nogc nothrow pragma(mangle, "fakePureReprintReal") void pureReprintReal(char[] nptr); - char* fakePureReprintReal(char* nptr, size_t len) + void fakePureReprintReal(char[] nptr) { import core.stdc.stdlib : strtold; import core.stdc.stdio : snprintf; import core.stdc.errno : errno; const err = errno; - real val = strtold(nptr, null); - len = snprintf(nptr, len, "%#Lg", val); + real val = strtold(nptr.ptr, null); + snprintf(nptr.ptr, nptr.length, "%#Lg", val); errno = err; - - return nptr; } } From 3496ab0c321d9e21cc063bc15506289b350af13a Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Fri, 7 Jul 2017 23:25:49 +0200 Subject: [PATCH 717/768] atomicOp!(double) unittests depend on has64BitCAS --- src/core/atomic.d | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/core/atomic.d b/src/core/atomic.d index 8fe099af56..af7db07f6a 100644 --- a/src/core/atomic.d +++ b/src/core/atomic.d @@ -1357,10 +1357,10 @@ version( unittest ) testCAS!(shared Klass)( new shared(Klass) ); testType!(float)(1.0f); - testType!(double)(1.0); static if( has64BitCAS ) { + testType!(double)(1.0); testType!(long)(); testType!(ulong)(); } @@ -1377,9 +1377,12 @@ version( unittest ) atomicOp!"+="( f, 1 ); assert( f == 1 ); - shared double d = 0; - atomicOp!"+="( d, 1 ); - assert( d == 1 ); + static if( has64BitCAS ) + { + shared double d = 0; + atomicOp!"+="( d, 1 ); + assert( d == 1 ); + } } pure nothrow unittest From b48e7bf74f53b6f5cd08866e7495c95ea7f033cf Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 8 Jul 2017 15:25:03 +0200 Subject: [PATCH 718/768] update linux mman.h headers - use permalinks - add missing madvise flags - deprecate gone MADV_*_PAGES (see https://sourceware.org/git/?p=glibc.git;a=commit;h=d4eed61f85791a8fc4f94ce4fb17997d4ee0eed3) --- src/core/sys/linux/sys/mman.d | 53 +++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/src/core/sys/linux/sys/mman.d b/src/core/sys/linux/sys/mman.d index 35ff58297f..d4c6d041fe 100644 --- a/src/core/sys/linux/sys/mman.d +++ b/src/core/sys/linux/sys/mman.d @@ -13,7 +13,7 @@ public import core.sys.posix.sys.mman; import core.sys.linux.config; // -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/powerpc/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/powerpc/bits/mman.h version (PPC) { enum PROT_SAO = 0x10; @@ -38,7 +38,7 @@ version (PPC) // MCL_FUTURE = 0x4000, // } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/powerpc/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/powerpc/bits/mman.h else version (PPC64) { enum PROT_SAO = 0x10; @@ -63,7 +63,7 @@ else version (PPC64) // MCL_FUTURE = 0x4000, // } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/s390/bits/mman.h else version (S390) { static if (__USE_MISC) enum @@ -79,7 +79,7 @@ else version (S390) MAP_HUGETLB = 0x40000, } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/s390/bits/mman.h else version (SystemZ) { static if (__USE_MISC) enum @@ -95,7 +95,7 @@ else version (SystemZ) MAP_HUGETLB = 0x40000, } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sh/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/sh/bits/mman.h else version (SH) { static if (__USE_MISC) enum @@ -111,7 +111,7 @@ else version (SH) MAP_HUGETLB = 0x40000, } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/sparc/bits/mman.h else version (SPARC) { static if (__USE_MISC) enum @@ -137,7 +137,7 @@ else version (SPARC) static if (__USE_MISC) enum MAP_RENAME MAP_ANONYMOUS; } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/sparc/bits/mman.h else version (SPARC64) { static if (__USE_MISC) enum @@ -163,7 +163,7 @@ else version (SPARC64) static if (__USE_MISC) enum MAP_RENAME MAP_ANONYMOUS; } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/x86/bits/mman.h else version (X86) { static if (__USE_MISC) enum MAP_32BIT = 0x40; @@ -181,7 +181,7 @@ else version (X86) MAP_HUGETLB = 0x40000, } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/x86/bits/mman.h else version (X86_64) { static if (__USE_MISC) enum MAP_32BIT = 0x40; @@ -199,7 +199,7 @@ else version (X86_64) MAP_HUGETLB = 0x40000, } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/unix/sysv/linux/aarch64/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/aarch64/bits/mman.h else version (AArch64) { static if (__USE_MISC) enum @@ -215,7 +215,7 @@ else version (AArch64) MAP_HUGETLB = 0x40000, } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/alpha/bits/mman.h else version (Alpha) { enum @@ -307,7 +307,7 @@ else version (Alpha) // POSIX_MADV_DONTNEED = 6, // } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/unix/sysv/linux/arm/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/arm/bits/mman.h else version (ARM) { static if (__USE_MISC) enum @@ -323,7 +323,7 @@ else version (ARM) MAP_HUGETLB = 0x40000, } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/unix/sysv/linux/hppa/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/hppa/bits/mman.h else version (HPPA) { enum @@ -400,9 +400,12 @@ else version (HPPA) MADV_DOFORK = 11, MADV_MERGEABLE = 65, MADV_UNMERGEABLE = 66, + MADV_HUGEPAGE = 67, + MADV_NOHUGEPAGE = 68, + MADV_DONTDUMP = 69, } - enum + deprecated("MADV_*_PAGES are gone and never had any effect") enum { MADV_4K_PAGES = 12, MADV_16K_PAGES = 14, @@ -424,7 +427,7 @@ else version (HPPA) // POSIX_MADV_DONTNEED = 4, // } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/unix/sysv/linux/hppa/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/hppa/bits/mman.h else version (HPPA64) { enum @@ -501,9 +504,13 @@ else version (HPPA64) MADV_DOFORK = 11, MADV_MERGEABLE = 65, MADV_UNMERGEABLE = 66, + MADV_HUGEPAGE = 67, + MADV_NOHUGEPAGE = 68, + MADV_DONTDUMP = 69, + MADV_DODUMP = 70, } - enum + deprecated("MADV_*_PAGES are gone and never had any effect") enum { MADV_4K_PAGES = 12, MADV_16K_PAGES = 14, @@ -525,7 +532,7 @@ else version (HPPA64) // POSIX_MADV_DONTNEED = 4, // } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/unix/sysv/linux/ia64/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/ia64/bits/mman.h else version (IA64) { static if (__USE_MISC) enum @@ -542,7 +549,7 @@ else version (IA64) MAP_HUGETLB = 0x40000, } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/unix/sysv/linux/m68k/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/m68k/bits/mman.h else version (M68K) { static if (__USE_MISC) enum @@ -558,7 +565,7 @@ else version (M68K) MAP_HUGETLB = 0x40000, } } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/unix/sysv/linux/mips/bits/mman.h +// http://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/mips/bits/mman.h else version (MIPS32) { static if (__USE_MISC) enum @@ -576,7 +583,7 @@ else version (MIPS32) static if (__USE_MISC) enum MAP_RENAME = MAP_ANONYMOUS; } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/unix/sysv/linux/mips/bits/mman.h +// https://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=sysdeps/unix/sysv/linux/mips/bits/mman.h else version (MIPS64) { static if (__USE_MISC) enum @@ -600,7 +607,7 @@ else } -// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/bits/mman-linux.h +// https://sourceware.org/git/?p=glibc.git;a=blob;hb=51e945a8f950a6695754b11c1e6fba8bb750e100;f=bits/mman-linux.h version (Alpha) { } @@ -663,6 +670,10 @@ else MADV_DOFORK = 11, MADV_MERGEABLE = 12, MADV_UNMERGEABLE = 13, + MADV_HUGEPAGE = 14, + MADV_NOHUGEPAGE = 15, + MADV_DONTDUMP = 16, + MADV_DODUMP = 17, MADV_HWPOISON = 100, } From d7f0dca33dd32a8c8c4682e91a2437c535f9efc2 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 9 Jul 2017 17:32:31 +0200 Subject: [PATCH 719/768] Add missing errno codes in existing linux platforms. x86: ERFKILL(132), EWPOISON(133). x86_64: ERFKILL(132), EWPOISON(133). ARM: ERFKILL(132), EWPOISON(133). AArch64: ENOTSUP(EOPNOTSUPP), ENOTRECOVERABLE(131). MIPS64: ENOTSUP(EOPNOTSUPP). PPC: EDEADLOCK(58), ENOTSUP(EOPNOTSUPP), ENOTRECOVERABLE(131). PPC64: EDEADLOCK(58), ENOTSUP(EOPNOTSUPP), ENOTRECOVERABLE(131). SystemZ: ENOTSUP(EOPNOTSUPP), ENOTRECOVERABLE(131). --- src/core/stdc/errno.d | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/core/stdc/errno.d b/src/core/stdc/errno.d index 3276f9bf9a..87d16bdcf1 100644 --- a/src/core/stdc/errno.d +++ b/src/core/stdc/errno.d @@ -216,6 +216,8 @@ else version( linux ) enum EKEYREJECTED = 129; /// enum EOWNERDEAD = 130; /// enum ENOTRECOVERABLE = 131; /// + enum ERFKILL = 132; /// + enum EHWPOISON = 133; /// } else version(X86_64) { @@ -317,6 +319,8 @@ else version( linux ) enum EKEYREJECTED = 129; /// enum EOWNERDEAD = 130; /// enum ENOTRECOVERABLE = 131; /// + enum ERFKILL = 132; /// + enum EHWPOISON = 133; /// } else version(ARM) { @@ -418,6 +422,8 @@ else version( linux ) enum EKEYREJECTED = 129; /// enum EOWNERDEAD = 130; /// enum ENOTRECOVERABLE = 131; /// + enum ERFKILL = 132; /// + enum EHWPOISON = 133; /// } else version(AArch64) { @@ -482,6 +488,7 @@ else version( linux ) enum EPROTONOSUPPORT = 93; /// enum ESOCKTNOSUPPORT = 94; /// enum EOPNOTSUPP = 95; /// + enum ENOTSUP = EOPNOTSUPP; /// enum EPFNOSUPPORT = 96; /// enum EAFNOSUPPORT = 97; /// enum EADDRINUSE = 98; /// @@ -517,6 +524,7 @@ else version( linux ) enum EKEYREVOKED = 128; /// enum EKEYREJECTED = 129; /// enum EOWNERDEAD = 130; /// + enum ENOTRECOVERABLE = 131; /// enum ERFKILL = 132; /// enum EHWPOISON = 133; /// } @@ -582,6 +590,7 @@ else version( linux ) enum EPROTONOSUPPORT = 120; /// enum ESOCKTNOSUPPORT = 121; /// enum EOPNOTSUPP = 122; /// + enum ENOTSUP = EOPNOTSUPP; /// enum EPFNOSUPPORT = 123; /// enum EAFNOSUPPORT = 124; /// enum EADDRINUSE = 125; /// @@ -649,7 +658,7 @@ else version( linux ) enum ENOANO = 55; /// enum EBADRQC = 56; /// enum EBADSLT = 57; /// - enum EDEADLOCK = EDEADLK; /// + enum EDEADLOCK = 58; /// enum EBFONT = 59; /// enum ENOSTR = 60; /// enum ENODATA = 61; /// @@ -687,6 +696,7 @@ else version( linux ) enum EPROTONOSUPPORT = 93; /// enum ESOCKTNOSUPPORT = 94; /// enum EOPNOTSUPP = 95; /// + enum ENOTSUP = EOPNOTSUPP; /// enum EPFNOSUPPORT = 96; /// enum EAFNOSUPPORT = 97; /// enum EADDRINUSE = 98; /// @@ -722,6 +732,7 @@ else version( linux ) enum EKEYREVOKED = 128; /// enum EKEYREJECTED = 129; /// enum EOWNERDEAD = 130; /// + enum ENOTRECOVERABLE = 131; /// enum ERFKILL = 132; /// enum EHWPOISON = 133; /// } @@ -750,7 +761,7 @@ else version( linux ) enum ENOANO = 55; /// enum EBADRQC = 56; /// enum EBADSLT = 57; /// - enum EDEADLOCK = EDEADLK; /// + enum EDEADLOCK = 58; /// enum EBFONT = 59; /// enum ENOSTR = 60; /// enum ENODATA = 61; /// @@ -788,6 +799,7 @@ else version( linux ) enum EPROTONOSUPPORT = 93; /// enum ESOCKTNOSUPPORT = 94; /// enum EOPNOTSUPP = 95; /// + enum ENOTSUP = EOPNOTSUPP; /// enum EPFNOSUPPORT = 96; /// enum EAFNOSUPPORT = 97; /// enum EADDRINUSE = 98; /// @@ -823,6 +835,7 @@ else version( linux ) enum EKEYREVOKED = 128; /// enum EKEYREJECTED = 129; /// enum EOWNERDEAD = 130; /// + enum ENOTRECOVERABLE = 131; /// enum ERFKILL = 132; /// enum EHWPOISON = 133; /// } @@ -1093,6 +1106,7 @@ else version( linux ) enum EPROTONOSUPPORT = 93; /// enum ESOCKTNOSUPPORT = 94; /// enum EOPNOTSUPP = 95; /// + enum ENOTSUP = EOPNOTSUPP; /// enum EPFNOSUPPORT = 96; /// enum EAFNOSUPPORT = 97; /// enum EADDRINUSE = 98; /// @@ -1128,6 +1142,7 @@ else version( linux ) enum EKEYREVOKED = 128; /// enum EKEYREJECTED = 129; /// enum EOWNERDEAD = 130; /// + enum ENOTRECOVERABLE = 131; /// enum ERFKILL = 132; /// enum EHWPOISON = 133; /// } From b418dce8a5aa2bec2ef997968b3a4fd420b5826f Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 9 Jul 2017 18:10:32 +0200 Subject: [PATCH 720/768] Add support for MIPS32 and SPARC64 architectures in stdc/errno.d --- src/core/stdc/errno.d | 210 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 210 insertions(+) diff --git a/src/core/stdc/errno.d b/src/core/stdc/errno.d index 3276f9bf9a..1a8799f504 100644 --- a/src/core/stdc/errno.d +++ b/src/core/stdc/errno.d @@ -520,6 +520,111 @@ else version( linux ) enum ERFKILL = 132; /// enum EHWPOISON = 133; /// } + else version(MIPS32) + { + enum ENOMSG = 35; /// + enum EIDRM = 36; /// + enum ECHRNG = 37; /// + enum EL2NSYNC = 38; /// + enum EL3HLT = 39; /// + enum EL3RST = 40; /// + enum ELNRNG = 41; /// + enum EUNATCH = 42; /// + enum ENOCSI = 43; /// + enum EL2HLT = 44; /// + enum EDEADLK = 45; /// + enum ENOLCK = 46; /// + enum EBADE = 50; /// + enum EBADR = 51; /// + enum EXFULL = 52; /// + enum ENOANO = 53; /// + enum EBADRQC = 54; /// + enum EBADSLT = 55; /// + enum EDEADLOCK = 56; /// + enum EBFONT = 59; /// + enum ENOSTR = 60; /// + enum ENODATA = 61; /// + enum ETIME = 62; /// + enum ENOSR = 63; /// + enum ENONET = 64; /// + enum ENOPKG = 65; /// + enum EREMOTE = 66; /// + enum ENOLINK = 67; /// + enum EADV = 68; /// + enum ESRMNT = 69; /// + enum ECOMM = 70; /// + enum EPROTO = 71; /// + enum EDOTDOT = 73; /// + enum EMULTIHOP = 74; /// + enum EBADMSG = 77; /// + enum ENAMETOOLONG = 78; /// + enum EOVERFLOW = 79; /// + enum ENOTUNIQ = 80; /// + enum EBADFD = 81; /// + enum EREMCHG = 82; /// + enum ELIBACC = 83; /// + enum ELIBBAD = 84; /// + enum ELIBSCN = 85; /// + enum ELIBMAX = 86; /// + enum ELIBEXEC = 87; /// + enum EILSEQ = 88; /// + enum ENOSYS = 89; /// + enum ELOOP = 90; /// + enum ERESTART = 91; /// + enum ESTRPIPE = 92; /// + enum ENOTEMPTY = 93; /// + enum EUSERS = 94; /// + enum ENOTSOCK = 95; /// + enum EDESTADDRREQ = 96; /// + enum EMSGSIZE = 97; /// + enum EPROTOTYPE = 98; /// + enum ENOPROTOOPT = 99; /// + enum EPROTONOSUPPORT = 120; /// + enum ESOCKTNOSUPPORT = 121; /// + enum EOPNOTSUPP = 122; /// + enum ENOTSUP = EOPNOTSUPP; /// + enum EPFNOSUPPORT = 123; /// + enum EAFNOSUPPORT = 124; /// + enum EADDRINUSE = 125; /// + enum EADDRNOTAVAIL = 126; /// + enum ENETDOWN = 127; /// + enum ENETUNREACH = 128; /// + enum ENETRESET = 129; /// + enum ECONNABORTED = 130; /// + enum ECONNRESET = 131; /// + enum ENOBUFS = 132; /// + enum EISCONN = 133; /// + enum ENOTCONN = 134; /// + enum EUCLEAN = 135; /// + enum ENOTNAM = 137; /// + enum ENAVAIL = 138; /// + enum EISNAM = 139; /// + enum EREMOTEIO = 140; /// + enum EINIT = 141; /// + enum EREMDEV = 142; /// + enum ESHUTDOWN = 143; /// + enum ETOOMANYREFS = 144; /// + enum ETIMEDOUT = 145; /// + enum ECONNREFUSED = 146; /// + enum EHOSTDOWN = 147; /// + enum EHOSTUNREACH = 148; /// + enum EWOULDBLOCK = EAGAIN; /// + enum EALREADY = 149; /// + enum EINPROGRESS = 150; /// + enum ESTALE = 151; /// + enum ECANCELED = 158; /// + enum ENOMEDIUM = 159; /// + enum EMEDIUMTYPE = 160; /// + enum ENOKEY = 161; /// + enum EKEYEXPIRED = 162; /// + enum EKEYREVOKED = 163; /// + enum EKEYREJECTED = 164; /// + enum EOWNERDEAD = 165; /// + enum ENOTRECOVERABLE = 166; /// + enum ERFKILL = 167; /// + enum EHWPOISON = 168; /// + enum EDQUOT = 1133; /// + } else version(MIPS64) { enum ENOMSG = 35; /// @@ -1030,6 +1135,111 @@ else version( linux ) enum ERFKILL = 132; /// enum EHWPOISON = 133; /// } + else version(SPARC64) + { + enum EWOULDBLOCK = EAGAIN; /// + enum EINPROGRESS = 36; /// + enum EALREADY = 37; /// + enum ENOTSOCK = 38; /// + enum EDESTADDRREQ = 39; /// + enum EMSGSIZE = 40; /// + enum EPROTOTYPE = 41; /// + enum ENOPROTOOPT = 42; /// + enum EPROTONOSUPPORT = 43; /// + enum ESOCKTNOSUPPORT = 44; /// + enum EOPNOTSUPP = 45; /// + enum ENOTSUP = EOPNOTSUPP; /// + enum EPFNOSUPPORT = 46; /// + enum EAFNOSUPPORT = 47; /// + enum EADDRINUSE = 48; /// + enum EADDRNOTAVAIL = 49; /// + enum ENETDOWN = 50; /// + enum ENETUNREACH = 51; /// + enum ENETRESET = 52; /// + enum ECONNABORTED = 53; /// + enum ECONNRESET = 54; /// + enum ENOBUFS = 55; /// + enum EISCONN = 56; /// + enum ENOTCONN = 57; /// + enum ESHUTDOWN = 58; /// + enum ETOOMANYREFS = 59; /// + enum ETIMEDOUT = 60; /// + enum ECONNREFUSED = 61; /// + enum ELOOP = 62; /// + enum ENAMETOOLONG = 63; /// + enum EHOSTDOWN = 64; /// + enum EHOSTUNREACH = 65; /// + enum ENOTEMPTY = 66; /// + enum EPROCLIM = 67; /// + enum EUSERS = 68; /// + enum EDQUOT = 69; /// + enum ESTALE = 70; /// + enum EREMOTE = 71; /// + enum ENOSTR = 72; /// + enum ETIME = 73; /// + enum ENOSR = 74; /// + enum ENOMSG = 75; /// + enum EBADMSG = 76; /// + enum EIDRM = 77; /// + enum EDEADLK = 78; /// + enum ENOLCK = 79; /// + enum ENONET = 80; /// + enum ERREMOTE = 81; /// + enum ENOLINK = 82; /// + enum EADV = 83; /// + enum ESRMNT = 84; /// + enum ECOMM = 85; /// + enum EPROTO = 86; /// + enum EMULTIHOP = 87; /// + enum EDOTDOT = 88; /// + enum EREMCHG = 89; /// + enum ENOSYS = 90; /// + enum ESTRPIPE = 91; /// + enum EOVERFLOW = 92; /// + enum EBADFD = 93; /// + enum ECHRNG = 94; /// + enum EL2NSYNC = 95; /// + enum EL3HLT = 96; /// + enum EL3RST = 97; /// + enum ELNRNG = 98; /// + enum EUNATCH = 99; /// + enum ENOCSI = 100; /// + enum EL2HLT = 101; /// + enum EBADE = 102; /// + enum EBADR = 103; /// + enum EXFULL = 104; /// + enum ENOANO = 105; /// + enum EBADRQC = 106; /// + enum EBADSLT = 107; /// + enum EDEADLOCK = 108; /// + enum EBFONT = 109; /// + enum ELIBEXEC = 110; /// + enum ENODATA = 111; /// + enum ELIBBAD = 112; /// + enum ENOPKG = 113; /// + enum ELIBACC = 114; /// + enum ENOTUNIQ = 115; /// + enum ERESTART = 116; /// + enum EUCLEAN = 117; /// + enum ENOTNAM = 118; /// + enum ENAVAIL = 119; /// + enum EISNAM = 120; /// + enum EREMOTEIO = 121; /// + enum EILSEQ = 122; /// + enum ELIBMAX = 123; /// + enum ELIBSCN = 124; /// + enum ENOMEDIUM = 125; /// + enum EMEDIUMTYPE = 126; /// + enum ECANCELED = 127; /// + enum ENOKEY = 128; /// + enum EKEYEXPIRED = 129; /// + enum EKEYREVOKED = 130; /// + enum EKEYREJECTED = 131; /// + enum EOWNERDEAD = 132; /// + enum ENOTRECOVERABLE = 133; /// + enum ERFKILL = 134; /// + enum EHWPOISON = 135; /// + } else version(SystemZ) { enum EDEADLK = 35; /// From 490b273f755354feb08281b2a9924dcb73f61009 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 9 Jul 2017 18:51:26 +0200 Subject: [PATCH 721/768] Add support for MIPS32, SPARC64 and SystemZ architectures in stdc/math.d --- src/core/stdc/math.d | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/core/stdc/math.d b/src/core/stdc/math.d index 6bfcee089e..a4ce737629 100644 --- a/src/core/stdc/math.d +++ b/src/core/stdc/math.d @@ -104,6 +104,13 @@ else version (CRuntime_Glibc) /// enum int FP_ILOGBNAN = 2147483647; } + else version (MIPS32) + { + /// + enum int FP_ILOGB0 = -int.max; + /// + enum int FP_ILOGBNAN = int.max; + } else version (MIPS64) { /// @@ -125,6 +132,20 @@ else version (CRuntime_Glibc) /// enum int FP_ILOGBNAN = 2147483647; } + else version (SPARC64) + { + /// + enum int FP_ILOGB0 = -int.max; + /// + enum int FP_ILOGBNAN = int.max; + } + else version (SystemZ) + { + /// + enum int FP_ILOGB0 = -int.max; + /// + enum int FP_ILOGBNAN = int.max; + } else { static assert(false, "Architecture not supported."); From ee93edc0ec25192dafbf885c587d659c1832b164 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 9 Jul 2017 18:53:42 +0200 Subject: [PATCH 722/768] Replace 2147483647 for int.max in stdc/math.d --- src/core/stdc/math.d | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/core/stdc/math.d b/src/core/stdc/math.d index a4ce737629..7f8285b031 100644 --- a/src/core/stdc/math.d +++ b/src/core/stdc/math.d @@ -93,16 +93,16 @@ else version (CRuntime_Glibc) else version (ARM) { /// - enum int FP_ILOGB0 = -2147483647; + enum int FP_ILOGB0 = -int.max; /// - enum int FP_ILOGBNAN = 2147483647; + enum int FP_ILOGBNAN = int.max; } else version (AArch64) { /// - enum int FP_ILOGB0 = -2147483647; + enum int FP_ILOGB0 = -int.max; /// - enum int FP_ILOGBNAN = 2147483647; + enum int FP_ILOGBNAN = int.max; } else version (MIPS32) { @@ -114,23 +114,23 @@ else version (CRuntime_Glibc) else version (MIPS64) { /// - enum int FP_ILOGB0 = -2147483647; + enum int FP_ILOGB0 = -int.max; /// - enum int FP_ILOGBNAN = 2147483647; + enum int FP_ILOGBNAN = int.max; } else version (PPC) { /// - enum int FP_ILOGB0 = -2147483647; + enum int FP_ILOGB0 = -int.max; /// - enum int FP_ILOGBNAN = 2147483647; + enum int FP_ILOGBNAN = int.max; } else version (PPC64) { /// - enum int FP_ILOGB0 = -2147483647; + enum int FP_ILOGB0 = -int.max; /// - enum int FP_ILOGBNAN = 2147483647; + enum int FP_ILOGBNAN = int.max; } else version (SPARC64) { From dc7d392d2097577a9b029bd9a3166c0b622d917a Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 9 Jul 2017 19:41:15 +0200 Subject: [PATCH 723/768] Add support for SPARC64 in sys/posix/sys/types.d --- src/core/sys/posix/sys/types.d | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/sys/posix/sys/types.d b/src/core/sys/posix/sys/types.d index 56f9a9ac04..ae87677c9e 100644 --- a/src/core/sys/posix/sys/types.d +++ b/src/core/sys/posix/sys/types.d @@ -505,6 +505,18 @@ version (CRuntime_Glibc) enum __SIZEOF_PTHREAD_BARRIER_T = 32; enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4; } + else version (SPARC64) + { + enum __SIZEOF_PTHREAD_ATTR_T = 56; + enum __SIZEOF_PTHREAD_MUTEX_T = 40; + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4; + enum __SIZEOF_PTHREAD_COND_T = 48; + enum __SIZEOF_PTHREAD_CONDATTR_T = 4; + enum __SIZEOF_PTHREAD_RWLOCK_T = 56; + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8; + enum __SIZEOF_PTHREAD_BARRIER_T = 32; + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4; + } else version (S390) { enum __SIZEOF_PTHREAD_ATTR_T = 36; From f42acefcd26245769e328c4df0c2c232d8e6b1fc Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Sun, 9 Jul 2017 13:45:23 +0000 Subject: [PATCH 724/768] Add missing -dip1000 flag to test-suite DFLAGs --- test/common.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/common.mak b/test/common.mak index 9af6465951..5c6da78f6c 100644 --- a/test/common.mak +++ b/test/common.mak @@ -18,7 +18,7 @@ ifneq (default,$(MODEL)) MODEL_FLAG:=-m$(MODEL) endif CFLAGS:=$(MODEL_FLAG) -Wall -DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -defaultlib= -debuglib= +DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -defaultlib= -debuglib= -dip1000 # LINK_SHARED may be set by importing makefile DFLAGS+=$(if $(LINK_SHARED),-L$(DRUNTIMESO),-L$(DRUNTIME)) ifeq ($(BUILD),debug) From ce863ecdd9ba0e56a40c8afa7b247946702f2995 Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Sat, 8 Jul 2017 21:12:36 +0000 Subject: [PATCH 725/768] Fix issue 16856: Don't use dlopen from the fini sections In case finalizers are called from the runtime linker we shouldn't try to get handle to and reference the dying shared object. This was used just for the asserting, so this simply removes the assert making it working on the platforms where this is strictly forbiden (e.g. FreeBSD 12). --- src/rt/sections_elf_shared.d | 1 - 1 file changed, 1 deletion(-) diff --git a/src/rt/sections_elf_shared.d b/src/rt/sections_elf_shared.d index a95328b5fb..37f84f5368 100644 --- a/src/rt/sections_elf_shared.d +++ b/src/rt/sections_elf_shared.d @@ -454,7 +454,6 @@ extern(C) void _d_dso_registry(CompilerDSOData* data) } } - assert(pdso._handle == handleForAddr(data._slot)); unsetDSOForHandle(pdso, pdso._handle); pdso._handle = null; } From 91baa925e2076c5382115ecdad707606c405b491 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Thu, 22 Dec 2016 23:40:43 -0500 Subject: [PATCH 726/768] Partial fix for running druntime unittest with PIC=1. This fixes it so that the builds in the test folder are built with -fPIC when the unittest build is run with PIC=1. Unfortunately, the line_trace test in test/exceptions is then failing (at least on my system), because it doesn't actually generate a stacktrace. So, this doesn't seem to completely fix it so that the PIC=1 unittest build works, but it's close. --- posix.mak | 2 +- test/common.mak | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/posix.mak b/posix.mak index 0b1401c679..a6ecc34a8f 100644 --- a/posix.mak +++ b/posix.mak @@ -265,7 +265,7 @@ test/shared/.run: $(DRUNTIMESO) test/%/.run: test/%/Makefile $(QUIET)$(MAKE) -C test/$* MODEL=$(MODEL) OS=$(OS) DMD=$(abspath $(DMD)) BUILD=$(BUILD) \ DRUNTIME=$(abspath $(DRUNTIME)) DRUNTIMESO=$(abspath $(DRUNTIMESO)) LINKDL=$(LINKDL) \ - QUIET=$(QUIET) TIMELIMIT='$(TIMELIMIT)' + QUIET=$(QUIET) TIMELIMIT='$(TIMELIMIT)' PIC=$(PIC) #################### test for undesired white spaces ########################## MANIFEST = $(shell git ls-tree --name-only -r HEAD) diff --git a/test/common.mak b/test/common.mak index 5c6da78f6c..920281df4b 100644 --- a/test/common.mak +++ b/test/common.mak @@ -14,11 +14,13 @@ SRC:=src GENERATED:=./generated ROOT:=$(GENERATED)/$(OS)/$(BUILD)/$(MODEL) +OPTIONAL_PIC:=$(if $(PIC),-fPIC,) + ifneq (default,$(MODEL)) MODEL_FLAG:=-m$(MODEL) endif CFLAGS:=$(MODEL_FLAG) -Wall -DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -defaultlib= -debuglib= -dip1000 +DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -defaultlib= -debuglib= -dip1000 $(OPTIONAL_PIC) # LINK_SHARED may be set by importing makefile DFLAGS+=$(if $(LINK_SHARED),-L$(DRUNTIMESO),-L$(DRUNTIME)) ifeq ($(BUILD),debug) From 180644a61436a8f3e64f1f8d8ea8ec1d2500c607 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 13 Jul 2017 11:13:49 +0200 Subject: [PATCH 727/768] Fix Issue 17624 - typo in Fields documentation section of https://dlang.org/library/object/exception.html --- src/object.d | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/object.d b/src/object.d index 412f98eea4..5506ade80e 100644 --- a/src/object.d +++ b/src/object.d @@ -1645,11 +1645,15 @@ class Throwable : Object string msg; /// A message describing the error. /** - * The _file name and line number of the D source code corresponding with + * The _file name of the D source code corresponding with * where the error was thrown from. */ string file; - size_t line; /// ditto + /** + * The _line number of the D source code corresponding with + * where the error was thrown from. + */ + size_t line; /** * The stack trace of where the error happened. This is an opaque object From efafd5050373f32fd34705172f0543155408bf85 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sun, 16 Jul 2017 02:07:24 +0200 Subject: [PATCH 728/768] Disable Codecov status messages Due to many random coverage changes, the current CodeCov is suboptimal at Druntime as it triggers many red crosses for perfectly healthy PRs. As there's no way to configure CodeCov nor GitHub to change the behavior to _not_ showing an overall failed status for coverage failures, the simple solution is to turn the CodeCov status notifications off. However, in the future the Dlang-Bot might display the CodeCov summary as part of his comment. Furthermore, the CodeCov commits will continue to get logged at [1], a summary coverage for each file on e.g. master can always be found at [2] and the CodeCov browser extension [3] will be working as well. [1] https://codecov.io/gh/dlang/druntime [2] https://codecov.io/gh/dlang/druntime/list/master [3] https://github.com/codecov/browser-extension --- .codecov.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.codecov.yml b/.codecov.yml index 5334519591..c257d628e8 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -9,8 +9,8 @@ coverage: status: # Learn more at https://codecov.io/docs#yaml_default_commit_status - project: true - patch: true + project: false + patch: false changes: false comment: false From 2945c1983c720d58ede5450b29435fc17da1ad46 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sun, 16 Jul 2017 02:27:25 +0200 Subject: [PATCH 729/768] CodeCov: add a hook to the Dlang-Bot --- .codecov.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.codecov.yml b/.codecov.yml index c257d628e8..76a81ce619 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -13,4 +13,9 @@ coverage: patch: false changes: false + notify: + webhook: + default: + url: "https://dlang-bot.herokuapp.com/codecov_hook" + comment: false From 81a06e731780a420e76a5b037fb34aa9e625eaf6 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 16 Jul 2017 08:31:40 +0200 Subject: [PATCH 730/768] disable some inlining to tame dmd inliner, it causes huge compilation times when optimizing --- src/core/demangle.d | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/demangle.d b/src/core/demangle.d index d205b7d541..e80f9197bd 100644 --- a/src/core/demangle.d +++ b/src/core/demangle.d @@ -100,6 +100,8 @@ pure @safe: static void error( string msg = "Invalid symbol" ) @trusted /* exception only used in module */ { + pragma(inline, false); // tame dmd inliner + //throw new ParseException( msg ); debug(info) printf( "error: %.*s\n", cast(int) msg.length, msg.ptr ); throw __ctfe ? new ParseException(msg) @@ -110,6 +112,8 @@ pure @safe: static void overflow( string msg = "Buffer overflow" ) @trusted /* exception only used in module */ { + pragma(inline, false); // tame dmd inliner + //throw new OverflowException( msg ); debug(info) printf( "overflow: %.*s\n", cast(int) msg.length, msg.ptr ); throw cast(OverflowException) cast(void*) typeid(OverflowException).initializer; @@ -176,6 +180,8 @@ pure @safe: // move val to the end of the dst buffer char[] shift( const(char)[] val ) { + pragma(inline, false); // tame dmd inliner + if( val.length && !mute ) { assert( contains( dst[0 .. len], val ) ); @@ -196,6 +202,8 @@ pure @safe: // remove val from dst buffer void remove( const(char)[] val ) { + pragma(inline, false); // tame dmd inliner + if( val.length ) { assert( contains( dst[0 .. len], val ) ); @@ -210,6 +218,8 @@ pure @safe: char[] append( const(char)[] val ) { + pragma(inline, false); // tame dmd inliner + if( val.length && !mute ) { if( !dst.length ) @@ -252,6 +262,8 @@ pure @safe: char[] put( const(char)[] val ) { + pragma(inline, false); // tame dmd inliner + if( val.length ) { if( !contains( dst[0 .. len], val ) ) From 692bcade6508c1da10a41058f668048a36b606c5 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 16 Jul 2017 01:18:57 +0200 Subject: [PATCH 731/768] make coverage a bit more deterministic --- src/gc/impl/conservative/gc.d | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/gc/impl/conservative/gc.d b/src/gc/impl/conservative/gc.d index 10726554a0..2da43a38e2 100644 --- a/src/gc/impl/conservative/gc.d +++ b/src/gc/impl/conservative/gc.d @@ -3377,3 +3377,43 @@ unittest GC.removeRoot(null); GC.removeRoot(cast(void*)13); } + +// improve predictability of coverage of code that is eventually not hit by other tests +unittest +{ + import core.memory; + auto p = GC.malloc(260 << 20); // new pool has 390 MB + auto q = GC.malloc(65 << 20); // next chunk (larger than 64MB to ensure the same pool is used) + auto r = GC.malloc(65 << 20); // another chunk in same pool + assert(p + (260 << 20) == q); + assert(q + (65 << 20) == r); + GC.free(q); + // should trigger "assert(bin == B_FREE);" in mark due to dangling pointer q: + GC.collect(); + // should trigger "break;" in extendNoSync: + size_t sz = GC.extend(p, 64 << 20, 66 << 20); // trigger size after p large enough (but limited) + assert(sz == 325 << 20); + GC.free(p); + GC.free(r); + r = q; // ensure q is not trashed before collection above + + p = GC.malloc(70 << 20); // from the same pool + q = GC.malloc(70 << 20); + r = GC.malloc(70 << 20); + auto s = GC.malloc(70 << 20); + auto t = GC.malloc(70 << 20); // 350 MB of 390 MB used + assert(p + (70 << 20) == q); + assert(q + (70 << 20) == r); + assert(r + (70 << 20) == s); + assert(s + (70 << 20) == t); + GC.free(r); // ensure recalculation of largestFree in nxxt allocPages + auto z = GC.malloc(75 << 20); // needs new pool + + GC.free(p); + GC.free(q); + GC.free(s); + GC.free(t); + GC.free(z); + GC.minimize(); // release huge pool +} + From e80a739a12fe786c92d39bd2ed9723a06a3d6bc4 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 16 Jul 2017 18:06:50 +0200 Subject: [PATCH 732/768] profile test: allow both the old and the new mangling --- test/profile/Makefile | 3 ++- test/profile/bothnew.def.exp | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 test/profile/bothnew.def.exp diff --git a/test/profile/Makefile b/test/profile/Makefile index 2969927f74..3f56c0511e 100644 --- a/test/profile/Makefile +++ b/test/profile/Makefile @@ -33,7 +33,8 @@ $(ROOT)/both.done: $(ROOT)/%.done: $(ROOT)/% $(QUIET)$(TIMELIMIT)$(ROOT)/$* $(ROOT)/both.log $(ROOT)/both.def $(ROOT)/bothgc.log $(QUIET)$(GREP) -q '1 .*_Dmain' $(ROOT)/both.log $(QUIET)$(GREP) -q '1000 .*both.Num\* both.foo(uint)' $(ROOT)/both.log - $(QUIET)$(DIFF) both.def.exp $(ROOT)/both.def + # (temporarily) allow both the new and the old mangling in both.def + $(QUIET)$(DIFF) both.def.exp $(ROOT)/both.def || $(DIFF) bothnew.def.exp $(ROOT)/both.def $(QUIET)$(DIFF) bothgc.log.exp $(ROOT)/bothgc.log @touch $@ diff --git a/test/profile/bothnew.def.exp b/test/profile/bothnew.def.exp new file mode 100644 index 0000000000..502c3a41ee --- /dev/null +++ b/test/profile/bothnew.def.exp @@ -0,0 +1,5 @@ + +FUNCTIONS + _Dmain + _D4both3fooFkZPSQo3Num + _D4both3Num6__ctorMFNckZSQxQu From f28671885322ff5639557fa21bce38400068ed94 Mon Sep 17 00:00:00 2001 From: Nemanja Boric <4burgos@gmail.com> Date: Mon, 17 Jul 2017 19:43:33 +0200 Subject: [PATCH 733/768] Add SO_REUSEPORT constant for Linux, Darwin and FreeBSD --- src/core/sys/posix/sys/socket.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/sys/posix/sys/socket.d b/src/core/sys/posix/sys/socket.d index d5635ab200..0a5992bf0f 100644 --- a/src/core/sys/posix/sys/socket.d +++ b/src/core/sys/posix/sys/socket.d @@ -268,6 +268,7 @@ version( CRuntime_Glibc ) SO_RCVLOWAT = 18, SO_RCVTIMEO = 20, SO_REUSEADDR = 2, + SO_REUSEPORT = 15, SO_SNDBUF = 7, SO_SNDLOWAT = 19, SO_SNDTIMEO = 21, @@ -302,6 +303,7 @@ version( CRuntime_Glibc ) SO_RCVLOWAT = 18, SO_RCVTIMEO = 20, SO_REUSEADDR = 2, + SO_REUSEPORT = 15, SO_SNDBUF = 7, SO_SNDLOWAT = 19, SO_SNDTIMEO = 21, @@ -701,6 +703,7 @@ else version( Darwin ) SO_RCVLOWAT = 0x1004, SO_RCVTIMEO = 0x1006, SO_REUSEADDR = 0x0004, + SO_REUSEPORT = 0x0200, SO_SNDBUF = 0x1001, SO_SNDLOWAT = 0x1003, SO_SNDTIMEO = 0x1005, @@ -878,6 +881,7 @@ else version( FreeBSD ) SO_RCVLOWAT = 0x1004, SO_RCVTIMEO = 0x1006, SO_REUSEADDR = 0x0004, + SO_REUSEPORT = 0x0200, SO_SNDBUF = 0x1001, SO_SNDLOWAT = 0x1003, SO_SNDTIMEO = 0x1005, From 24d8d849d99e0589bbdba0e37a2856095bb95af7 Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Tue, 18 Jul 2017 11:02:56 +0200 Subject: [PATCH 734/768] Add ddoc for FALLOC_* consts --- src/core/sys/linux/fcntl.d | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/sys/linux/fcntl.d b/src/core/sys/linux/fcntl.d index 44ac397d2e..3c9972d680 100644 --- a/src/core/sys/linux/fcntl.d +++ b/src/core/sys/linux/fcntl.d @@ -7,13 +7,25 @@ extern(C): nothrow: // From linux/falloc.h +/// fallocate(2) params enum { + /// Allocates and initializes to zero the disk space + /// within the specified range, but the file size + /// will not be modified. FALLOC_FL_KEEP_SIZE = 0x01, + /// Deallocates space (i.e. creates a hole) FALLOC_FL_PUNCH_HOLE = 0x02, + /// Newly allocated blocks will be marked as initialized. FALLOC_FL_NO_HIDE_STALE = 0x04, + /// Removes a byte range from a file, without leaving a hole FALLOC_FL_COLLAPSE_RANGE = 0x08, + /// Zeroes space in the specified byte range FALLOC_FL_ZERO_RANGE = 0x10, + /// Increases the file space by inserting a hole + /// without overwriting any existing data FALLOC_FL_INSERT_RANGE = 0x20, + /// Used to unshare shared blocks within + /// the file size without overwriting any existing data FALLOC_FL_UNSHARE_RANGE = 0x40 } From 75e20bf4221d85b48e463b6ca099a48551eba07e Mon Sep 17 00:00:00 2001 From: Nemanja Boric Date: Fri, 14 Jul 2017 16:55:29 +0200 Subject: [PATCH 735/768] Add constants for F_OFT_* locks This adds constants for Linux's F_OFD_GETLK, F_OFD_SETLK and F_OFD_SETLKW. --- src/core/sys/linux/fcntl.d | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/core/sys/linux/fcntl.d b/src/core/sys/linux/fcntl.d index 3c9972d680..974a5cc2a3 100644 --- a/src/core/sys/linux/fcntl.d +++ b/src/core/sys/linux/fcntl.d @@ -29,6 +29,31 @@ enum { FALLOC_FL_UNSHARE_RANGE = 0x40 } +// From asm-generic/fcntl.h +/** + +Open File Description locks + +Usually record locks held by a process are released on *any* close and are +not inherited across a fork(). + +These cmd values will set locks that conflict with process-associated +record locks, but are "owned" by the open file description, not the +process. This means that they are inherited across fork() like BSD (flock) +locks, and they are only released automatically when the last reference to +the the open file against which they were acquired is put. + +*/ +enum +{ + /// Queries the system if the lock could be placed + F_OFD_GETLK = 36, + /// Acquires or releases an open file description lock + F_OFD_SETLK = 37, + /// Same as F_OFD_SETLK, but waits if a conflicting lock is held on the file + F_OFD_SETLKW = 38 +} + // Linux-specific fallocate // (http://man7.org/linux/man-pages/man2/fallocate.2.html) int fallocate(int fd, int mode, off_t offset, off_t len); From 95a1782844c8fe49a222ec808b2fb336e51924a5 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 18 Jul 2017 10:50:33 -0600 Subject: [PATCH 736/768] Some minor improvements to Duration.toString. It's no longer required to have separate implementations for const and non-const toString, so this fixes it so that we only have one. It also clarifies the documentation. --- src/core/time.d | 153 +++++++++++++++++++++++++----------------------- 1 file changed, 80 insertions(+), 73 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index 6cd1c65e04..c5a1037de2 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -1510,27 +1510,91 @@ public: } - /+ - Converts this $(D Duration) to a $(D string). + /++ + Converts this `Duration` to a `string`. + + The string is meant to be human readable, not machine parseable (e.g. + whether there is an `'s'` on the end of the unit name usually depends on + whether it's plural or not, and empty units are not included unless the + Duration is `zero`). Any code needing a specific string format should + use `total` or `split` to get the units needed to create the desired + string format and create the string itself. + + The format returned by toString may or may not change in the future. +/ - //Due to bug http://d.puremagic.com/issues/show_bug.cgi?id=3715 , we can't - //have versions of toString() with extra modifiers, so we define one version - //with modifiers and one without. - string toString() + string toString() const nothrow pure @safe { - return _toStringImpl(); - } + static void appListSep(ref string res, uint pos, bool last) + { + if (pos == 0) + return; + if (!last) + res ~= ", "; + else + res ~= pos == 1 ? " and " : ", and "; + } + static void appUnitVal(string units)(ref string res, long val) + { + immutable plural = val != 1; + string unit; + static if (units == "seconds") + unit = plural ? "secs" : "sec"; + else static if (units == "msecs") + unit = "ms"; + else static if (units == "usecs") + unit = "μs"; + else + unit = plural ? units : units[0 .. $-1]; + res ~= signedToTempString(val, 10); + res ~= " "; + res ~= unit; + } - /++ - Converts this $(D Duration) to a $(D string). - +/ - //Due to bug http://d.puremagic.com/issues/show_bug.cgi?id=3715 , we can't - //have versions of toString() with extra modifiers, so we define one version - //with modifiers and one without. - string toString() const nothrow + if (_hnsecs == 0) + return "0 hnsecs"; + + template TT(T...) { alias T TT; } + alias units = TT!("weeks", "days", "hours", "minutes", "seconds", "msecs", "usecs"); + + long hnsecs = _hnsecs; string res; uint pos; + foreach (unit; units) + { + if (auto val = splitUnitsFromHNSecs!unit(hnsecs)) + { + appListSep(res, pos++, hnsecs == 0); + appUnitVal!unit(res, val); + } + if (hnsecs == 0) + break; + } + if (hnsecs != 0) + { + appListSep(res, pos++, true); + appUnitVal!"hnsecs"(res, hnsecs); + } + return res; + } + + /// + unittest { - return _toStringImpl(); + assert(Duration.zero.toString() == "0 hnsecs"); + assert(weeks(5).toString() == "5 weeks"); + assert(days(2).toString() == "2 days"); + assert(hours(1).toString() == "1 hour"); + assert(minutes(19).toString() == "19 minutes"); + assert(seconds(42).toString() == "42 secs"); + assert(msecs(42).toString() == "42 ms"); + assert(usecs(27).toString() == "27 μs"); + assert(hnsecs(5).toString() == "5 hnsecs"); + + assert(seconds(121).toString() == "2 minutes and 1 sec"); + assert((minutes(5) + seconds(3) + usecs(4)).toString() == + "5 minutes, 3 secs, and 4 μs"); + + assert(seconds(-42).toString() == "-42 secs"); + assert(usecs(-5239492).toString() == "-5 secs, -239 ms, and -492 μs"); } unittest @@ -1606,63 +1670,6 @@ public: private: - /+ - Since we have two versions of toString, we have _toStringImpl - so that they can share implementations. - +/ - string _toStringImpl() const nothrow - { - static void appListSep(ref string res, uint pos, bool last) nothrow - { - if (pos == 0) - return; - if (!last) - res ~= ", "; - else - res ~= pos == 1 ? " and " : ", and "; - } - - static void appUnitVal(string units)(ref string res, long val) nothrow - { - immutable plural = val != 1; - string unit; - static if (units == "seconds") - unit = plural ? "secs" : "sec"; - else static if (units == "msecs") - unit = "ms"; - else static if (units == "usecs") - unit = "μs"; - else - unit = plural ? units : units[0 .. $-1]; - res ~= signedToTempString(val, 10); - res ~= " "; - res ~= unit; - } - - if (_hnsecs == 0) return "0 hnsecs"; - - template TT(T...) { alias T TT; } - alias units = TT!("weeks", "days", "hours", "minutes", "seconds", "msecs", "usecs"); - - long hnsecs = _hnsecs; string res; uint pos; - foreach (unit; units) - { - if (auto val = splitUnitsFromHNSecs!unit(hnsecs)) - { - appListSep(res, pos++, hnsecs == 0); - appUnitVal!unit(res, val); - } - if (hnsecs == 0) break; - } - if (hnsecs != 0) - { - appListSep(res, pos++, true); - appUnitVal!"hnsecs"(res, hnsecs); - } - return res; - } - - /+ Params: hnsecs = The total number of hecto-nanoseconds in this $(D Duration). From 548f527c383f0d873eabc6e224d4628b3f82ae8c Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 19 Jul 2017 14:41:52 +0200 Subject: [PATCH 737/768] purge changelog --- changelog/fiber-configure.dd | 6 ------ changelog/fiber.dd | 7 ------- changelog/remove-TypeInfo.init.dd | 6 ------ changelog/scandataseg-precise.dd | 15 --------------- 4 files changed, 34 deletions(-) delete mode 100644 changelog/fiber-configure.dd delete mode 100644 changelog/fiber.dd delete mode 100644 changelog/remove-TypeInfo.init.dd delete mode 100644 changelog/scandataseg-precise.dd diff --git a/changelog/fiber-configure.dd b/changelog/fiber-configure.dd deleted file mode 100644 index 232673566b..0000000000 --- a/changelog/fiber-configure.dd +++ /dev/null @@ -1,6 +0,0 @@ -Make fiber stack protection-page size configurable - -It is now possible to change the guard page size by using -the new Fiber's constructor argument - guard_page_size. It defaults to -`PAGE_SIZE` (the same it used to be on Windows), and specifying 0 will -turn this feature off. diff --git a/changelog/fiber.dd b/changelog/fiber.dd deleted file mode 100644 index ef989c6db4..0000000000 --- a/changelog/fiber.dd +++ /dev/null @@ -1,7 +0,0 @@ -Add Fiber's stack-protection page for Posix. - -The feature already existing for Windows' fiber implementation is now added to -the systems using mmap to allocate fibers' stacks: After (or before) the last -page used for the Fiber's stack, the page is allocate which is protected for -any kind of access. This will cause system to trap immediately on the fiber's -stack overflow. diff --git a/changelog/remove-TypeInfo.init.dd b/changelog/remove-TypeInfo.init.dd deleted file mode 100644 index 9118335f01..0000000000 --- a/changelog/remove-TypeInfo.init.dd +++ /dev/null @@ -1,6 +0,0 @@ -`TypeInfo.init` now refers to type property. - -`TypeInfo.init` used to refer to the method that is now called -$(REF_OBJECT_SHORT TypeInfo.initializer). The name change was necessary because -the name "init" would clash with the type property of the same name -($(GLINK2 property, init)). `TypeInfo.init` now refers to the type property. diff --git a/changelog/scandataseg-precise.dd b/changelog/scandataseg-precise.dd deleted file mode 100644 index 76bdb3ec1b..0000000000 --- a/changelog/scandataseg-precise.dd +++ /dev/null @@ -1,15 +0,0 @@ -Windows: the DATA and TLS segment can now be configured to be scanned precisely. - -A new runtime option "scanDataSeg" has been added to enable precise scanning of the -DATA and the TLS segments. This uses information generated by the compiler to -identify possible pointers inside these segments. Possible option values are -"conservative" (default) and "precise". - -As usual, this option can be set by the environment, the command line or by -embedding the option into the executable similar to the -$(LINK2 $(ROOT_DIR)spec/garbage.html#gc_config, GC options). - -For example add this code to your main module to enable precise scanning: ---------- -extern(C) __gshared string[] rt_options = [ "scanDataSeg=precise" ]; ---------- From 271f32ff689c8e7dd9ad85b283be440f98ba16bb Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 20 Jul 2017 06:59:18 +0200 Subject: [PATCH 738/768] Revert "Add SO_REUSEPORT constant" --- src/core/sys/posix/sys/socket.d | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/core/sys/posix/sys/socket.d b/src/core/sys/posix/sys/socket.d index 0a5992bf0f..d5635ab200 100644 --- a/src/core/sys/posix/sys/socket.d +++ b/src/core/sys/posix/sys/socket.d @@ -268,7 +268,6 @@ version( CRuntime_Glibc ) SO_RCVLOWAT = 18, SO_RCVTIMEO = 20, SO_REUSEADDR = 2, - SO_REUSEPORT = 15, SO_SNDBUF = 7, SO_SNDLOWAT = 19, SO_SNDTIMEO = 21, @@ -303,7 +302,6 @@ version( CRuntime_Glibc ) SO_RCVLOWAT = 18, SO_RCVTIMEO = 20, SO_REUSEADDR = 2, - SO_REUSEPORT = 15, SO_SNDBUF = 7, SO_SNDLOWAT = 19, SO_SNDTIMEO = 21, @@ -703,7 +701,6 @@ else version( Darwin ) SO_RCVLOWAT = 0x1004, SO_RCVTIMEO = 0x1006, SO_REUSEADDR = 0x0004, - SO_REUSEPORT = 0x0200, SO_SNDBUF = 0x1001, SO_SNDLOWAT = 0x1003, SO_SNDTIMEO = 0x1005, @@ -881,7 +878,6 @@ else version( FreeBSD ) SO_RCVLOWAT = 0x1004, SO_RCVTIMEO = 0x1006, SO_REUSEADDR = 0x0004, - SO_REUSEPORT = 0x0200, SO_SNDBUF = 0x1001, SO_SNDLOWAT = 0x1003, SO_SNDTIMEO = 0x1005, From fc9448dafc855607a38d4443ec894a3395844403 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 23 Jul 2017 21:26:08 +0200 Subject: [PATCH 739/768] [Trivial] core.thread: Fix missing alignment of global --- src/core/thread.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/thread.d b/src/core/thread.d index 24003b0c79..ab83abe07a 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -1668,7 +1668,7 @@ private: return cast(Mutex)_locks[1].ptr; } - __gshared void[__traits(classInstanceSize, Mutex)][2] _locks; + __gshared align(Mutex.alignof) void[__traits(classInstanceSize, Mutex)][2] _locks; static void initLocks() { From 16fdb99a8ff33feaa6aaae178654c6734419e6b0 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 26 Jul 2017 09:58:38 +0200 Subject: [PATCH 740/768] fix changelog entry - the fix was for `rt_trapExceptions == false` --- changelog/unhandled.dd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/unhandled.dd b/changelog/unhandled.dd index c11d1d72eb..1dc752b312 100644 --- a/changelog/unhandled.dd +++ b/changelog/unhandled.dd @@ -1,4 +1,4 @@ -Print unhandled exception's trace and abort if rt_trapExceptions is set +Print unhandled exception's trace and abort if rt_trapExceptions is false D exception handling was assuming the top level exception handler, so all exceptions would be handled somewhere. In case rt_trapExceptions From 46cc93ed5401774f0a17d56f3de71bc43df3fe42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Nordl=C3=B6w?= Date: Wed, 21 Dec 2016 16:22:13 +0100 Subject: [PATCH 741/768] Add pureFree to core.memory --- src/core/memory.d | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/core/memory.d b/src/core/memory.d index 6516ab109e..af0fee1a47 100644 --- a/src/core/memory.d +++ b/src/core/memory.d @@ -811,9 +811,11 @@ struct GC } /** - * Pure variants of C's memory allocation functions `malloc`, `calloc` and - * `realloc`. Purity is achieved via resetting the `errno` to it's value prior - * to being called, removing the function's global state mutation. + * Pure variants of C's memory allocation functions `malloc`, `calloc`, and + * `realloc` and deallocation function `free`. + * + * Purity is achieved by saving and restoring the value of `errno`, thus + * behaving as if it were never changed. * * See_Also: * $(LINK2 https://dlang.org/spec/function.html#pure-functions, D's rules for purity), @@ -841,7 +843,7 @@ void* pureCalloc(size_t nmemb, size_t size) @trusted pure @nogc nothrow return ret; } /// ditto -void* pureRealloc(void* ptr, size_t size) pure @nogc nothrow +void* pureRealloc(void* ptr, size_t size) @system pure @nogc nothrow { const errno = fakePureGetErrno(); void* ret = fakePureRealloc(ptr, size); @@ -851,12 +853,17 @@ void* pureRealloc(void* ptr, size_t size) pure @nogc nothrow } return ret; } +/// ditto +void pureFree(void* ptr) @system pure @nogc nothrow +{ + const errno = fakePureGetErrno(); + fakePureFree(ptr); + cast(void)fakePureSetErrno(errno); +} /// -nothrow @nogc unittest +@system pure nothrow @nogc unittest { - import core.stdc.stdlib : free; - ubyte[] fun(size_t n) pure { void* p = pureMalloc(n); @@ -869,10 +876,10 @@ nothrow @nogc unittest auto buf = fun(100); assert(buf.length == 200); - free(buf.ptr); + pureFree(buf.ptr); } -pure @nogc nothrow unittest +@system pure nothrow @nogc unittest { const int errno = fakePureGetErrno(); @@ -909,5 +916,5 @@ extern (C) private pure @system @nogc nothrow pragma(mangle, "calloc") void* fakePureCalloc(size_t nmemb, size_t size); pragma(mangle, "realloc") void* fakePureRealloc(void* ptr, size_t size); - pragma(mangle, "free") void fakePureFree(void* ptr); // needed by unittests + pragma(mangle, "free") void fakePureFree(void* ptr); } From bec52ee3b975357c97a94e72d3b5162415bf55b5 Mon Sep 17 00:00:00 2001 From: Mathias Lang Date: Fri, 28 Jul 2017 18:08:10 +0200 Subject: [PATCH 742/768] Remove TypeInfo_Typedef typedef is long gone. However TypeInfo_Enum is inheriting from TypeInfo_Typedef, so we rename the later in the former. --- src/object.d | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/object.d b/src/object.d index 5506ade80e..730f6ffdee 100644 --- a/src/object.d +++ b/src/object.d @@ -314,7 +314,7 @@ class TypeInfo @property immutable(void)* rtInfo() nothrow pure const @safe @nogc { return null; } } -class TypeInfo_Typedef : TypeInfo +class TypeInfo_Enum : TypeInfo { override string toString() const { return name; } @@ -322,7 +322,7 @@ class TypeInfo_Typedef : TypeInfo { if (this is o) return true; - auto c = cast(const TypeInfo_Typedef)o; + auto c = cast(const TypeInfo_Enum)o; return c && this.name == c.name && this.base == c.base; } @@ -361,10 +361,6 @@ unittest // issue 12233 assert(TypeInfo.init is null); } -class TypeInfo_Enum : TypeInfo_Typedef -{ - -} // Please make sure to keep this in sync with TypeInfo_P (src/rt/typeinfo/ti_ptr.d) class TypeInfo_Pointer : TypeInfo @@ -3643,7 +3639,7 @@ private inout(TypeInfo) getElement(inout TypeInfo value) @trusted pure nothrow { if(auto qualified = cast(TypeInfo_Const) element) element = qualified.base; - else if(auto redefined = cast(TypeInfo_Typedef) element) // typedef & enum + else if(auto redefined = cast(TypeInfo_Enum) element) element = redefined.base; else if(auto staticArray = cast(TypeInfo_StaticArray) element) element = staticArray.value; From 6859d5b2de3c4de97382084bf223203594f25acd Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Thu, 27 Jul 2017 23:04:46 +0200 Subject: [PATCH 743/768] Don't assert on what name the binary is in the shared testsuite. For instance, GDC runs these tests under DejaGNU, which adds a ".exe" suffix to the binary name. Use strrchr() like in the C sources. --- test/shared/src/finalize.d | 12 ++++++++---- test/shared/src/load.d | 11 +++++++---- test/shared/src/load_13414.d | 11 +++++++---- test/shared/src/load_linkdep.d | 10 ++++++---- test/shared/src/load_loaddep.d | 8 ++++++-- test/shared/src/load_mod_collision.d | 11 +++++++---- 6 files changed, 41 insertions(+), 22 deletions(-) diff --git a/test/shared/src/finalize.d b/test/shared/src/finalize.d index 8ea58d4790..f31b818e26 100644 --- a/test/shared/src/finalize.d +++ b/test/shared/src/finalize.d @@ -1,4 +1,8 @@ -import core.runtime, core.stdc.stdio, core.thread, core.sys.posix.dlfcn; +import core.runtime; +import core.stdc.stdio; +import core.stdc.string; +import core.thread; +import core.sys.posix.dlfcn; void runTest() { @@ -28,9 +32,9 @@ extern (C) alias SetFinalizeCounter = void function(shared(size_t*)); void main(string[] args) { - auto name = args[0]; - assert(name[$-9 .. $] == "/finalize"); - name = name[0 .. $-8] ~ "lib.so"; + auto name = args[0] ~ '\0'; + const pathlen = strrchr(name.ptr, '/') - name.ptr + 1; + name = name[0 .. pathlen] ~ "lib.so"; auto h = Runtime.loadLibrary(name); assert(h !is null); diff --git a/test/shared/src/load.d b/test/shared/src/load.d index c23302117f..8c13f51eac 100644 --- a/test/shared/src/load.d +++ b/test/shared/src/load.d @@ -1,4 +1,7 @@ -import core.runtime, core.stdc.stdio, core.thread; +import core.runtime; +import core.stdc.stdio; +import core.stdc.string; +import core.thread; version (linux) import core.sys.linux.dlfcn; else version (FreeBSD) import core.sys.freebsd.dlfcn; @@ -127,9 +130,9 @@ void runTests(string libName) void main(string[] args) { - auto name = args[0]; - assert(name[$-5 .. $] == "/load"); - name = name[0 .. $-4] ~ "lib.so"; + auto name = args[0] ~ '\0'; + const pathlen = strrchr(name.ptr, '/') - name.ptr + 1; + name = name[0 .. pathlen] ~ "lib.so"; runTests(name); diff --git a/test/shared/src/load_13414.d b/test/shared/src/load_13414.d index b60f12f0e6..f7cbf45190 100644 --- a/test/shared/src/load_13414.d +++ b/test/shared/src/load_13414.d @@ -1,4 +1,7 @@ -import core.runtime, core.atomic, core.sys.posix.dlfcn; +import core.runtime; +import core.atomic; +import core.stdc.string; +import core.sys.posix.dlfcn; shared uint tlsDtor, dtor; void staticDtorHook() { atomicOp!"+="(tlsDtor, 1); } @@ -19,9 +22,9 @@ void runTest(string name) void main(string[] args) { - auto name = args[0]; - assert(name[$-"load_13414".length-1 .. $] == "/load_13414"); - name = name[0 .. $-"load_13414".length] ~ "lib_13414.so"; + auto name = args[0] ~ '\0'; + const pathlen = strrchr(name.ptr, '/') - name.ptr + 1; + name = name[0 .. pathlen] ~ "lib_13414.so"; runTest(name); } diff --git a/test/shared/src/load_linkdep.d b/test/shared/src/load_linkdep.d index f88dfa71c8..5f5dcf220c 100644 --- a/test/shared/src/load_linkdep.d +++ b/test/shared/src/load_linkdep.d @@ -1,12 +1,14 @@ -import core.runtime, core.sys.posix.dlfcn; +import core.runtime; +import core.stdc.string; +import core.sys.posix.dlfcn; extern(C) alias RunDepTests = int function(); void main(string[] args) { - auto name = args[0]; - assert(name[$-13 .. $] == "/load_linkdep"); - name = name[0 .. $-12] ~ "liblinkdep.so"; + auto name = args[0] ~ '\0'; + const pathlen = strrchr(name.ptr, '/') - name.ptr + 1; + name = name[0 .. pathlen] ~ "liblinkdep.so"; auto h = Runtime.loadLibrary(name); assert(h); diff --git a/test/shared/src/load_loaddep.d b/test/shared/src/load_loaddep.d index 3eb7807d9d..c189683eff 100644 --- a/test/shared/src/load_loaddep.d +++ b/test/shared/src/load_loaddep.d @@ -1,10 +1,14 @@ -import core.runtime, core.sys.posix.dlfcn; +import core.runtime; +import core.stdc.string; +import core.sys.posix.dlfcn; extern(C) alias RunDepTests = int function(const char*); void main(string[] args) { - auto root = args[0][0..$-"load_loaddep".length]; + auto name = args[0] ~ '\0'; + const pathlen = strrchr(name.ptr, '/') - name.ptr + 1; + auto root = name[0 .. pathlen]; auto libloaddep = root ~ "libloaddep.so"; auto h = Runtime.loadLibrary(libloaddep); auto runDepTests = cast(RunDepTests)dlsym(h, "runDepTests"); diff --git a/test/shared/src/load_mod_collision.d b/test/shared/src/load_mod_collision.d index 310d6e5d88..64243d4b7b 100644 --- a/test/shared/src/load_mod_collision.d +++ b/test/shared/src/load_mod_collision.d @@ -1,11 +1,14 @@ module lib; // module collides with lib.so -import core.runtime, core.stdc.stdio, core.sys.posix.dlfcn; +import core.runtime; +import core.stdc.stdio; +import core.stdc.string; +import core.sys.posix.dlfcn; void main(string[] args) { - auto name = args[0]; - assert(name[$-19 .. $] == "/load_mod_collision"); - name = name[0 .. $-18] ~ "lib.so"; + auto name = args[0] ~ '\0'; + const pathlen = strrchr(name.ptr, '/') - name.ptr + 1; + name = name[0 .. pathlen] ~ "lib.so"; auto lib = Runtime.loadLibrary(name); } From cf3a7e944f348167aefca728071767d6185681b4 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Tue, 18 Jul 2017 02:39:42 +0200 Subject: [PATCH 744/768] Enable -fPIC by default --- posix.mak | 11 ++++++++--- test/common.mak | 9 +++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/posix.mak b/posix.mak index a6ecc34a8f..3ec4db77e7 100644 --- a/posix.mak +++ b/posix.mak @@ -29,7 +29,12 @@ INSTALL_DIR=../install DOCDIR=doc IMPDIR=import -OPTIONAL_PIC:=$(if $(PIC),-fPIC,) +# -fPIC is enabled by default and can be disabled with DISABLE_PIC=1 +ifeq (,$(DISABLE_PIC)) + PIC_FLAG:=-fPIC +else + PIC_FLAG:= +endif OPTIONAL_COVERAGE:=$(if $(TEST_COVERAGE),-cov,) ifeq (osx,$(OS)) @@ -55,7 +60,7 @@ ifeq (solaris,$(OS)) endif # Set DFLAGS -UDFLAGS:=-conf= -Isrc -Iimport -w -dip1000 $(MODEL_FLAG) $(OPTIONAL_PIC) $(OPTIONAL_COVERAGE) +UDFLAGS:=-conf= -Isrc -Iimport -w -dip1000 $(MODEL_FLAG) $(PIC_FLAG) $(OPTIONAL_COVERAGE) ifeq ($(BUILD),debug) UDFLAGS += -g -debug DFLAGS:=$(UDFLAGS) @@ -181,7 +186,7 @@ $(ROOT)/threadasm.o : src/core/threadasm.S ######################## Create a shared library ############################## -$(DRUNTIMESO) $(DRUNTIMESOLIB) dll: DFLAGS+=-version=Shared -fPIC +$(DRUNTIMESO) $(DRUNTIMESOLIB) dll: DFLAGS+=-version=Shared dll: $(DRUNTIMESOLIB) $(DRUNTIMESO): $(OBJS) $(SRCS) diff --git a/test/common.mak b/test/common.mak index 920281df4b..84aa328bc0 100644 --- a/test/common.mak +++ b/test/common.mak @@ -14,13 +14,18 @@ SRC:=src GENERATED:=./generated ROOT:=$(GENERATED)/$(OS)/$(BUILD)/$(MODEL) -OPTIONAL_PIC:=$(if $(PIC),-fPIC,) +# -fPIC is enabled by default and can be disabled with DISABLE_PIC=1 +ifeq (,$(DISABLE_PIC)) + PIC_FLAG:=-fPIC +else + PIC_FLAG:= +endif ifneq (default,$(MODEL)) MODEL_FLAG:=-m$(MODEL) endif CFLAGS:=$(MODEL_FLAG) -Wall -DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -defaultlib= -debuglib= -dip1000 $(OPTIONAL_PIC) +DFLAGS:=$(MODEL_FLAG) -w -I../../src -I../../import -I$(SRC) -defaultlib= -debuglib= -dip1000 $(PIC_FLAG) # LINK_SHARED may be set by importing makefile DFLAGS+=$(if $(LINK_SHARED),-L$(DRUNTIMESO),-L$(DRUNTIME)) ifeq ($(BUILD),debug) From 1ab473d1314960dfb6a4732fd55218ac2095a663 Mon Sep 17 00:00:00 2001 From: Richard Andrew Cattermole Date: Thu, 20 Jul 2017 01:00:41 +1200 Subject: [PATCH 745/768] Fix issue 17665 --- src/core/atomic.d | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/core/atomic.d b/src/core/atomic.d index caaad6dba8..c090145618 100644 --- a/src/core/atomic.d +++ b/src/core/atomic.d @@ -1062,7 +1062,21 @@ else version( AsmX86_64 ) pop RBX; pop RDI; } - return cast(typeof(return)) retVal; + + static if (is(T:U[], U)) + { + pragma(inline, true) + static typeof(return) toTrusted(size_t[2] retVal) @trusted + { + return *(cast(typeof(return)*) retVal.ptr); + } + + return toTrusted(retVal); + } + else + { + return cast(typeof(return)) retVal; + } }else{ asm pure nothrow @nogc @trusted { From 3971109e1ef28d52bcdf07e286551bae625a42dc Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sat, 30 Apr 2016 23:03:49 +0200 Subject: [PATCH 746/768] core.stdc.fenv: Add platform-specific FE_XXX flags --- src/core/stdc/fenv.d | 257 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 245 insertions(+), 12 deletions(-) diff --git a/src/core/stdc/fenv.d b/src/core/stdc/fenv.d index 0739075210..769c59a48e 100644 --- a/src/core/stdc/fenv.d +++ b/src/core/stdc/fenv.d @@ -321,20 +321,253 @@ version( CRuntime_Microsoft ) } else { - enum + version (X86) { - FE_INVALID = 1, /// - FE_DENORMAL = 2, /// non-standard - FE_DIVBYZERO = 4, /// - FE_OVERFLOW = 8, /// - FE_UNDERFLOW = 0x10, /// - FE_INEXACT = 0x20, /// - FE_ALL_EXCEPT = 0x3F, /// - FE_TONEAREST = 0, /// - FE_UPWARD = 0x800, /// - FE_DOWNWARD = 0x400, /// - FE_TOWARDZERO = 0xC00, /// + // Define bits representing the exception. + enum + { + FE_INVALID = 0x01, /// + FE_DENORMAL = 0x02, /// non-standard + FE_DIVBYZERO = 0x04, /// + FE_OVERFLOW = 0x08, /// + FE_UNDERFLOW = 0x10, /// + FE_INEXACT = 0x20, /// + FE_ALL_EXCEPT = 0x3F, /// + } + + // The ix87 FPU supports all of the four defined rounding modes. + enum + { + FE_TONEAREST = 0, /// + FE_DOWNWARD = 0x400, /// + FE_UPWARD = 0x800, /// + FE_TOWARDZERO = 0xC00, /// + } + } + else version (X86_64) + { + // Define bits representing the exception. + enum + { + FE_INVALID = 0x01, /// + FE_DENORMAL = 0x02, /// non-standard + FE_DIVBYZERO = 0x04, /// + FE_OVERFLOW = 0x08, /// + FE_UNDERFLOW = 0x10, /// + FE_INEXACT = 0x20, /// + FE_ALL_EXCEPT = 0x3F, /// + } + + // The ix87 FPU supports all of the four defined rounding modes. + enum + { + FE_TONEAREST = 0, /// + FE_DOWNWARD = 0x400, /// + FE_UPWARD = 0x800, /// + FE_TOWARDZERO = 0xC00, /// + } + } + else version (ARM) + { + // Define bits representing exceptions in the FPU status word. + enum + { + FE_INVALID = 1, /// + FE_DIVBYZERO = 2, /// + FE_OVERFLOW = 4, /// + FE_UNDERFLOW = 8, /// + FE_INEXACT = 16, /// + FE_ALL_EXCEPT = 31, /// + } + + // VFP supports all of the four defined rounding modes. + enum + { + FE_TONEAREST = 0, /// + FE_UPWARD = 0x400000, /// + FE_DOWNWARD = 0x800000, /// + FE_TOWARDZERO = 0xC00000, /// + } + } + else version (AArch64) + { + // Define bits representing exceptions in the FPSR status word. + enum + { + FE_INVALID = 1, /// + FE_DIVBYZERO = 2, /// + FE_OVERFLOW = 4, /// + FE_UNDERFLOW = 8, /// + FE_INEXACT = 16, /// + FE_ALL_EXCEPT = 31, /// + } + + // Define bits representing rounding modes in the FPCR Rmode field. + enum + { + FE_TONEAREST = 0x000000, /// + FE_UPWARD = 0x400000, /// + FE_DOWNWARD = 0x800000, /// + FE_TOWARDZERO = 0xC00000, /// + } + } + else version(MIPS32) + { + // Define bits representing the exception. + enum + { + FE_INEXACT = 0x04, /// + FE_UNDERFLOW = 0x08, /// + FE_OVERFLOW = 0x10, /// + FE_DIVBYZERO = 0x20, /// + FE_INVALID = 0x40, /// + FE_ALL_EXCEPT = 0x7C, /// + } + + // The MIPS FPU supports all of the four defined rounding modes. + enum + { + FE_TONEAREST = 0x0, /// + FE_TOWARDZERO = 0x1, /// + FE_UPWARD = 0x2, /// + FE_DOWNWARD = 0x3, /// + } + } + else version(MIPS64) + { + // Define bits representing the exception. + enum + { + FE_INEXACT = 0x04, /// + FE_UNDERFLOW = 0x08, /// + FE_OVERFLOW = 0x10, /// + FE_DIVBYZERO = 0x20, /// + FE_INVALID = 0x40, /// + FE_ALL_EXCEPT = 0x7C, /// + } + + // The MIPS FPU supports all of the four defined rounding modes. + enum + { + FE_TONEAREST = 0x0, /// + FE_TOWARDZERO = 0x1, /// + FE_UPWARD = 0x2, /// + FE_DOWNWARD = 0x3, /// + } + } + else version (PPC) + { + // Define bits representing the exception. + enum + { + FE_INEXACT = 0x2000000, /// + FE_DIVBYZERO = 0x4000000, /// + FE_UNDERFLOW = 0x8000000, /// + FE_OVERFLOW = 0x10000000, /// + FE_INVALID = 0x20000000, /// + FE_INVALID_SNAN = 0x1000000, /// non-standard + FE_INVALID_ISI = 0x800000, /// non-standard + FE_INVALID_IDI = 0x400000, /// non-standard + FE_INVALID_ZDZ = 0x200000, /// non-standard + FE_INVALID_IMZ = 0x100000, /// non-standard + FE_INVALID_COMPARE = 0x80000, /// non-standard + FE_INVALID_SOFTWARE = 0x400, /// non-standard + FE_INVALID_SQRT = 0x200, /// non-standard + FE_INVALID_INTEGER_CONVERSION = 0x100, /// non-standard + FE_ALL_INVALID = 0x1F80700, /// non-standard + FE_ALL_EXCEPT = 0x3E000000, /// + } + + // PowerPC chips support all of the four defined rounding modes. + enum + { + FE_TONEAREST = 0, /// + FE_TOWARDZERO = 1, /// + FE_UPWARD = 2, /// + FE_DOWNWARD = 3, /// + } + } + else version (PPC64) + { + // Define bits representing the exception. + enum + { + FE_INEXACT = 0x2000000, /// + FE_DIVBYZERO = 0x4000000, /// + FE_UNDERFLOW = 0x8000000, /// + FE_OVERFLOW = 0x10000000, /// + FE_INVALID = 0x20000000, /// + FE_INVALID_SNAN = 0x1000000, /// non-standard + FE_INVALID_ISI = 0x800000, /// non-standard + FE_INVALID_IDI = 0x400000, /// non-standard + FE_INVALID_ZDZ = 0x200000, /// non-standard + FE_INVALID_IMZ = 0x100000, /// non-standard + FE_INVALID_COMPARE = 0x80000, /// non-standard + FE_INVALID_SOFTWARE = 0x400, /// non-standard + FE_INVALID_SQRT = 0x200, /// non-standard + FE_INVALID_INTEGER_CONVERSION = 0x100, /// non-standard + FE_ALL_INVALID = 0x1F80700, /// non-standard + FE_ALL_EXCEPT = 0x3E000000, /// + } + + // PowerPC chips support all of the four defined rounding modes. + enum + { + FE_TONEAREST = 0, /// + FE_TOWARDZERO = 1, /// + FE_UPWARD = 2, /// + FE_DOWNWARD = 3, /// + } + } + else version(SPARC64) + { + // Define bits representing the exception. + enum + { + FE_INVALID = 0x200, /// + FE_OVERFLOW = 0x100, /// + FE_UNDERFLOW = 0x80, /// + FE_DIVBYZERO = 0x40, /// + FE_INEXACT = 0x20, /// + FE_ALL_EXCEPT = 0x3E0, /// + } + + // The Sparc FPU supports all of the four defined rounding modes. + enum + { + FE_TONEAREST = 0x0, /// + FE_TOWARDZERO = 0x40000000, /// + FE_UPWARD = 0x80000000, /// + FE_DOWNWARD = 0xc0000000, /// + } + } + else version(SystemZ) + { + // Define bits representing the exception. + enum + { + FE_INVALID = 0x80, /// + FE_DIVBYZERO = 0x40, /// + FE_OVERFLOW = 0x20, /// + FE_UNDERFLOW = 0x10, /// + FE_INEXACT = 0x08, /// + FE_ALL_EXCEPT = 0xF8, /// + } + + // SystemZ supports all of the four defined rounding modes. + enum + { + FE_TONEAREST = 0x0, /// + FE_DOWNWARD = 0x3, /// + FE_UPWARD = 0x2, /// + FE_TOWARDZERO = 0x1, /// + } } + else + { + static assert(0, "Unimplemented architecture"); + } + } version( GNUFP ) From 184435f243b830cf464047deb1b636a8d5b4ed4a Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 27 May 2016 20:12:05 +0200 Subject: [PATCH 747/768] implement templated array ops - use RPN to encode operand precedence - fixes Issue 15619, and 16680 --- mak/COPY | 1 + mak/SRCS | 1 + src/core/internal/arrayop.d | 428 ++++++++++++++++++++++++++++++++++++ src/core/internal/traits.d | 23 ++ src/object.d | 7 + win32.mak | 3 + win64.mak | 3 + 7 files changed, 466 insertions(+) create mode 100644 src/core/internal/arrayop.d diff --git a/mak/COPY b/mak/COPY index 0a7f4317bd..d7b6a4c4e9 100644 --- a/mak/COPY +++ b/mak/COPY @@ -17,6 +17,7 @@ COPY=\ $(IMPDIR)\core\vararg.d \ \ $(IMPDIR)\core\internal\abort.d \ + $(IMPDIR)\core\internal\arrayop.d \ $(IMPDIR)\core\internal\convert.d \ $(IMPDIR)\core\internal\hash.d \ $(IMPDIR)\core\internal\spinlock.d \ diff --git a/mak/SRCS b/mak/SRCS index 2258203aa3..52330cf772 100644 --- a/mak/SRCS +++ b/mak/SRCS @@ -17,6 +17,7 @@ SRCS=\ src\core\vararg.d \ \ src\core\internal\abort.d \ + src\core\internal\arrayop.d \ src\core\internal\convert.d \ src\core\internal\hash.d \ src\core\internal\spinlock.d \ diff --git a/src/core/internal/arrayop.d b/src/core/internal/arrayop.d new file mode 100644 index 0000000000..b11ffe6c4f --- /dev/null +++ b/src/core/internal/arrayop.d @@ -0,0 +1,428 @@ +module core.internal.arrayop; +import core.internal.traits : Filter, Unqual; + +version (GNU) version = GNU_OR_LDC; +version (LDC) version = GNU_OR_LDC; + +/** + * Perform array (vector) operations and store the result in `res`. + * Operand types and operations are passed as template arguments in Reverse + * Polish Notation (RPN). + * All slice operands must have the same length as the result slice. + * + * Params: res = the slice in which to store the results + * args = all other operands + * Args = operand types and operations in RPN + * T[] = type of result slice + * Returns: the slice containing the result + */ +T[] arrayOp(T : T[], Args...)(T[] res, Filter!(isType, Args) args) @trusted @nogc pure nothrow +{ + size_t pos; + static if (vectorizeable!(T[], Args)) + { + alias vec = .vec!T; + alias load = .load!(T, vec.length); + alias store = .store!(T, vec.length); + alias scalarToVec = .scalarToVec!(T, vec.length); + + auto n = res.length / vec.length; + enum nScalarInits = scalarIndices!Args.length; + if (n > 2 * (1 + nScalarInits)) // empirically found cost estimate + { + mixin(initScalarVecs!Args); + + do + { + mixin(vectorExp!Args ~ ";"); + pos += vec.length; + } + while (--n); + } + } + for (; pos < res.length; ++pos) + mixin(scalarExp!Args ~ ";"); + + return res; +} + +private: + +// SIMD helpers + +version (GNU) + import gcc.builtins; +else version (LDC) +{ + import ldc.simd; + import ldc.gccbuiltins_x86; +} +else version (DigitalMars) + import core.simd; +else + static assert(0, "unimplemented"); + +template vec(T) +{ + enum regsz = 16; // SSE2 + enum N = regsz / T.sizeof; + alias vec = __vector(T[N]); +} + +void store(T, size_t N)(T* p, in __vector(T[N]) val) +{ + pragma(inline, true); + alias vec = __vector(T[N]); + + version (LDC) + { + storeUnaligned!vec(val, p); + } + else version (GNU) + { + static if (is(T == float)) + __builtin_ia32_storeups(p, val); + else static if (is(T == double)) + __builtin_ia32_storeupd(p, val); + else + __builtin_ia32_storedqu(cast(char*) p, val); + } + else version (DigitalMars) + { + static if (is(T == float)) + cast(void) __simd_sto(XMM.STOUPS, *cast(vec*) p, val); + else static if (is(T == double)) + cast(void) __simd_sto(XMM.STOUPD, *cast(vec*) p, val); + else + cast(void) __simd_sto(XMM.STODQU, *cast(vec*) p, val); + } +} + +const(__vector(T[N])) load(T, size_t N)(in T* p) +{ + pragma(inline, true); + alias vec = __vector(T[N]); + + version (LDC) + { + return loadUnaligned!vec(cast(T*) p); + } + else version (GNU) + { + static if (is(T == float)) + return __builtin_ia32_loadups(p); + else static if (is(T == double)) + return __builtin_ia32_loadupd(p); + else + return __builtin_ia32_loaddqu(cast(const char*) p); + } + else version (DigitalMars) + { + static if (is(T == float)) + return __simd(XMM.LODUPS, *cast(const vec*) p); + else static if (is(T == double)) + return __simd(XMM.LODUPD, *cast(const vec*) p); + else + return __simd(XMM.LODDQU, *cast(const vec*) p); + } +} + +const(__vector(T[N])) scalarToVec(T, size_t N)(in T a) +{ + pragma(inline, true); + alias vec = __vector(T[N]); + + vec res = void; + version (DigitalMars) // Bugzilla 7509 + res.array = [a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a][0 .. N]; + else + res = a; + return res; +} + +__vector(T[N]) binop(string op, T, size_t N)(in __vector(T[N]) a, in __vector(T[N]) b) +{ + pragma(inline, true); + return mixin("a " ~ op ~ " b"); +} + +__vector(T[N]) unaop(string op, T, size_t N)(in __vector(T[N]) a) if (op[0] == 'u') +{ + pragma(inline, true); + return mixin(op[1 .. $] ~ "a"); +} + +// mixin gen + +// filter out ops without matching SSE/SIMD instructions (could be composed of several instructions though) +bool vectorizeableOps(E)(string[] ops) +{ + // dfmt off + return !( + ops.contains("/", "/=") && __traits(isIntegral, E) || + ops.contains("*", "*=") && __traits(isIntegral, E) && E.sizeof != 2 || + ops.contains("%", "%=") + ); + // dfmt on +} + +// filter out things like float[] = float[] / size_t[] +enum compatibleVecTypes(E, T : T[]) = is(Unqual!T == Unqual!E); // array elem types must be same (maybe add cvtpi2ps) +enum compatibleVecTypes(E, T) = is(T : E); // scalar must be convertible to target elem type +enum compatibleVecTypes(E, Types...) = compatibleVecTypes!(E, Types[0 .. $ / 2]) + && compatibleVecTypes!(E, Types[$ / 2 .. $]); + +template vectorizeable(E : E[], Args...) +{ + static if (is(vec!E)) + enum vectorizeable = vectorizeableOps!E([Filter!(not!isType, Args)]) + && compatibleVecTypes!(E, Filter!(isType, Args)); + else + enum vectorizeable = false; +} + +version (X86_64) unittest +{ + static assert(vectorizeable!(double[], const(double)[], double[], "+", "=")); + static assert(!vectorizeable!(double[], const(ulong)[], double[], "+", "=")); +} + +bool isUnaryOp(string op) +{ + return op[0] == 'u'; +} + +bool isBinaryOp(string op) +{ + if (op.length != 1) + return false; + switch (op[0]) + { + case '+', '-', '*', '/', '%', '|', '&', '^': + return true; + default: + return false; + } +} + +bool isBinaryAssignOp(string op) +{ + return op.length == 2 && op[1] == '=' && isBinaryOp(op[0 .. 1]); +} + +string scalarExp(Args...)() +{ + string[] stack; + size_t argsIdx; + foreach (i, arg; Args) + { + static if (is(arg == T[], T)) + stack ~= "args[" ~ argsIdx++.toString ~ "][pos]"; + else static if (is(arg)) + stack ~= "args[" ~ argsIdx++.toString ~ "]"; + else static if (isUnaryOp(arg)) + { + auto op = arg[0] == 'u' ? arg[1 .. $] : arg; + stack[$ - 1] = op ~ stack[$ - 1]; + } + else static if (arg == "=") + { + stack[$ - 1] = "res[pos] = cast(T)(" ~ stack[$ - 1] ~ ")"; + } + else static if (isBinaryAssignOp(arg)) + { + stack[$ - 1] = "res[pos] " ~ arg ~ " cast(T)(" ~ stack[$ - 1] ~ ")"; + } + else static if (isBinaryOp(arg)) + { + stack[$ - 2] = "(cast(T)(" ~ stack[$ - 2] ~ " " ~ arg ~ " " ~ stack[$ - 1] ~ "))"; + stack.length -= 1; + } + else + assert(0, "Unexpected op " ~ arg); + } + assert(stack.length == 1); + return stack[0]; +} + +size_t[] scalarIndices(Args...)() +{ + size_t[] scalars; + foreach (i, arg; Args) + { + if (is(arg == T[], T)) + { + } + else if (is(arg)) + scalars ~= i; + } + return scalars; +} + +string initScalarVecs(Args...)() +{ + auto scalars = scalarIndices!Args; + string res; + foreach (i, aidx; scalars) + res ~= "immutable vec scalar" ~ i.toString ~ " = scalarToVec(args[" ~ aidx + .toString ~ "]);\n"; + return res; +} + +string vectorExp(Args...)() +{ + size_t scalarsIdx, argsIdx; + string[] stack; + foreach (i, arg; Args) + { + static if (is(arg == T[], T)) + stack ~= "load(&args[" ~ argsIdx++.toString ~ "][pos])"; + else static if (is(arg)) + { + ++argsIdx; + stack ~= "scalar" ~ scalarsIdx++.toString; + } + else static if (isUnaryOp(arg)) + { + auto op = arg[0] == 'u' ? arg[1 .. $] : arg; + stack[$ - 1] = "unaop!\"" ~ arg ~ "\"(" ~ stack[$ - 1] ~ ")"; + } + else static if (arg == "=") + { + stack[$ - 1] = "store(&res[pos], " ~ stack[$ - 1] ~ ")"; + } + else static if (isBinaryAssignOp(arg)) + { + stack[$ - 1] = "store(&res[pos], binop!\"" ~ arg[0 .. $ - 1] + ~ "\"(load(&res[pos]), " ~ stack[$ - 1] ~ "))"; + } + else static if (isBinaryOp(arg)) + { + stack[$ - 2] = "binop!\"" ~ arg ~ "\"(" ~ stack[$ - 2] ~ ", " ~ stack[$ - 1] ~ ")"; + stack.length -= 1; + } + else + assert(0, "Unexpected op " ~ arg); + } + assert(stack.length == 1); + return stack[0]; +} + +// other helpers + +enum isType(T) = true; +enum isType(alias a) = false; +template not(alias tmlp) +{ + enum not(Args...) = !tmlp!Args; +} + +string toString(size_t num) +{ + import core.internal.string : unsignedToTempString; + + char[20] buf = void; + return unsignedToTempString(num, buf).idup; +} + +bool contains(T)(in T[] ary, in T[] vals...) +{ + foreach (v1; ary) + foreach (v2; vals) + if (v1 == v2) + return true; + return false; +} + +// tests + +version (unittest) template TT(T...) +{ + alias TT = T; +} + +version (unittest) template _arrayOp(Args...) +{ + alias _arrayOp = arrayOp!Args; +} + +unittest +{ + static void check(string op, TA, TB, T, size_t N)(TA a, TB b, in ref T[N] exp) + { + T[N] res; + _arrayOp!(T[], TA, TB, op, "=")(res[], a, b); + foreach (i; 0 .. N) + assert(res[i] == exp[i]); + } + + static void check2(string unaOp, string binOp, TA, TB, T, size_t N)(TA a, TB b, in ref T[N] exp) + { + T[N] res; + _arrayOp!(T[], TA, TB, unaOp, binOp, "=")(res[], a, b); + foreach (i; 0 .. N) + assert(res[i] == exp[i]); + } + + static void test(T, string op, size_t N = 16)(T a, T b, T exp) + { + T[N] va = a, vb = b, vexp = exp; + + check!op(va[], vb[], vexp); + check!op(va[], b, vexp); + check!op(a, vb[], vexp); + } + + static void test2(T, string unaOp, string binOp, size_t N = 16)(T a, T b, T exp) + { + T[N] va = a, vb = b, vexp = exp; + + check2!(unaOp, binOp)(va[], vb[], vexp); + check2!(unaOp, binOp)(va[], b, vexp); + check2!(unaOp, binOp)(a, vb[], vexp); + } + + alias UINTS = TT!(ubyte, ushort, uint, ulong); + alias INTS = TT!(byte, short, int, long); + alias FLOATS = TT!(float, double); + + foreach (T; TT!(UINTS, INTS, FLOATS)) + { + test!(T, "+")(1, 2, 3); + test!(T, "-")(3, 2, 1); + + test2!(T, "u-", "+")(3, 2, 1); + } + + foreach (T; TT!(UINTS, INTS)) + { + test!(T, "|")(1, 2, 3); + test!(T, "&")(3, 1, 1); + test!(T, "^")(3, 1, 2); + + test2!(T, "u~", "+")(3, cast(T)~2, 5); + } + + foreach (T; TT!(INTS, FLOATS)) + { + test!(T, "-")(1, 2, -1); + test2!(T, "u-", "+")(-3, -2, -1); + test2!(T, "u-", "*")(-3, -2, -6); + } + + foreach (T; TT!(UINTS, INTS, FLOATS)) + { + test!(T, "*")(2, 3, 6); + test!(T, "/")(8, 4, 2); + test!(T, "%")(8, 6, 2); + } +} + +// test rewrite of v op= exp to v = v op exp +unittest +{ + byte[32] c; + arrayOp!(byte[], byte, "+=")(c[], cast(byte) 6); + foreach (v; c) + assert(v == 6); +} diff --git a/src/core/internal/traits.d b/src/core/internal/traits.d index 8142f90c51..e15dff5204 100644 --- a/src/core/internal/traits.d +++ b/src/core/internal/traits.d @@ -187,3 +187,26 @@ template hasElaborateCopyConstructor(T...) else enum bool hasElaborateCopyConstructor = false; } + +// std.meta.Filter +template Filter(alias pred, TList...) +{ + static if (TList.length == 0) + { + alias Filter = TypeTuple!(); + } + else static if (TList.length == 1) + { + static if (pred!(TList[0])) + alias Filter = TypeTuple!(TList[0]); + else + alias Filter = TypeTuple!(); + } + else + { + alias Filter = + TypeTuple!( + Filter!(pred, TList[ 0 .. $/2]), + Filter!(pred, TList[$/2 .. $ ])); + } +} diff --git a/src/object.d b/src/object.d index 5506ade80e..97dd6779b6 100644 --- a/src/object.d +++ b/src/object.d @@ -3634,6 +3634,13 @@ if (!__traits(isScalar, T1)) assert(__cmp([c2, c2], [c1, c1]) > 0); } +// Compiler hook into the runtime implementation of array (vector) operations. +template _arrayOp(Args...) +{ + import core.internal.arrayop; + alias _arrayOp = arrayOp!Args; +} + // Helper functions private inout(TypeInfo) getElement(inout TypeInfo value) @trusted pure nothrow diff --git a/win32.mak b/win32.mak index 91262264c0..3494159935 100644 --- a/win32.mak +++ b/win32.mak @@ -266,6 +266,9 @@ $(IMPDIR)\core\vararg.d : src\core\vararg.d $(IMPDIR)\core\internal\abort.d : src\core\internal\abort.d copy $** $@ +$(IMPDIR)\core\internal\arrayop.d : src\core\internal\arrayop.d + copy $** $@ + $(IMPDIR)\core\internal\convert.d : src\core\internal\convert.d copy $** $@ diff --git a/win64.mak b/win64.mak index d9e10522b5..97b1aa7181 100644 --- a/win64.mak +++ b/win64.mak @@ -277,6 +277,9 @@ $(IMPDIR)\core\vararg.d : src\core\vararg.d $(IMPDIR)\core\internal\abort.d : src\core\internal\abort.d copy $** $@ +$(IMPDIR)\core\internal\arrayop.d : src\core\internal\arrayop.d + copy $** $@ + $(IMPDIR)\core\internal\convert.d : src\core\internal\convert.d copy $** $@ From 84d49d18b25f0ec52d03a9d5d9ec4beaace3ab08 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Mon, 13 Mar 2017 16:01:29 +0100 Subject: [PATCH 748/768] fix plotting of arrayops benchmark - properly sort/order values on abscissa --- benchmark/arrayops/arrayops.d | 2 +- benchmark/arrayops/plot.R | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/benchmark/arrayops/arrayops.d b/benchmark/arrayops/arrayops.d index 60490b02d7..bce3ea14b1 100644 --- a/benchmark/arrayops/arrayops.d +++ b/benchmark/arrayops/arrayops.d @@ -180,7 +180,7 @@ void main() unmaskFPUExceptions; writefln("type, op, %(latency%s, %), %-(throughput%s, %)", iota(6) - .map!(i => 1 << i), ["8KB", "32KB", "512KB", "32MB"]); + .map!(i => 1 << i), ["8KB", "32KB", "512KB", "32768KB"]); foreach (op; mixin("AliasSeq!(%(%s, %))".format(genOps))) runOp!op; maskFPUExceptions; diff --git a/benchmark/arrayops/plot.R b/benchmark/arrayops/plot.R index 6574f03ea8..a1ba783810 100644 --- a/benchmark/arrayops/plot.R +++ b/benchmark/arrayops/plot.R @@ -16,18 +16,17 @@ for (file in files) dat = bind_rows(dat, datFile) } -latencies <- gather(dat %>% select(-starts_with('throughput')), num_elems, latency, starts_with('latency')) -throughputs <- gather(dat %>% select(-starts_with('latency')), array_size, throughput, starts_with('throughput')) - -levels(latencies$num_elems) <- sub("latency(\\d+)", "\\1", levels(latencies$num_elems)) -levels(throughputs$array_size) <- sub("throughput(.+)", "\\1", levels(throughputs$array_size)) +latencies <- gather(dat %>% select(-starts_with('throughput')), num_elems, latency, starts_with('latency')) %>% + mutate(num_elems = factor(as.integer(sub("latency(\\d+)", "\\1", num_elems)))) +throughputs <- gather(dat %>% select(-starts_with('latency')), array_size, throughput, starts_with('throughput')) %>% + mutate(array_size = factor(as.integer(sub("throughput(\\d+)KB", "\\1", array_size)))) img <- qplot(num_elems, latency, group=type, data=latencies, geom="line", color=type) + facet_grid(op ~ file, scales="free_y") + labs(x="num elements", y="latency / ns") -ggsave('array_ops_latency.svg', plot = img, width = 2 + 3 * length(files), height = 40) +ggsave('array_ops_latency.png', plot = img, width = 2 + 3 * length(files), height = 40) img <- qplot(array_size, throughput, group=type, data=throughputs, geom="line", color=type) + facet_grid(op ~ file, scales="free_y") + - labs(x="array size", y="throughput / (ops / ns)") -ggsave('array_ops_throughput.svg', plot = img, width = 2 + 3 * length(files), height = 40) + labs(x="array size / KB", y="throughput / (ops / ns)") +ggsave('array_ops_throughput.png', plot = img, width = 2 + 3 * length(files), height = 40) From f8dd223c8eafb8dc30015f3ab3c2e476694d830d Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Mon, 13 Mar 2017 14:47:41 +0100 Subject: [PATCH 749/768] change plot to relative numbers --- benchmark/arrayops/plot.R | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/benchmark/arrayops/plot.R b/benchmark/arrayops/plot.R index a1ba783810..5b770dcb06 100644 --- a/benchmark/arrayops/plot.R +++ b/benchmark/arrayops/plot.R @@ -1,32 +1,30 @@ -# Use `R --vanilla < plot.R` to run this script. -# It will read all *.csv files from the current folder and create a comparison plot for them. +# Use `Rscript --vanilla plot.R old.csv new.csv` to run this script. +# It will read old.csv and new.csv files and create a comparison plot for them. library(ggplot2) library(dplyr) library(tidyr) dat <- NULL -files <- list.files(pattern='*.csv') -for (file in files) -{ - datFile <- read.csv(file) %>% tbl_df() %>% - mutate(file=file) - if (is.null(dat)) - dat = datFile - else - dat = bind_rows(dat, datFile) -} +args <- commandArgs(trailingOnly=T) +old <- read.csv(args[1]) %>% tbl_df() +new <- read.csv(args[2]) %>% tbl_df() -latencies <- gather(dat %>% select(-starts_with('throughput')), num_elems, latency, starts_with('latency')) %>% +col.indices <- which(!colnames(new) %in% c("type", "op")) + +# relative values +new[,col.indices] <- 100 * new[,col.indices] / old[,col.indices] + +latencies <- gather(new %>% select(-starts_with('throughput')), num_elems, latency, starts_with('latency')) %>% mutate(num_elems = factor(as.integer(sub("latency(\\d+)", "\\1", num_elems)))) -throughputs <- gather(dat %>% select(-starts_with('latency')), array_size, throughput, starts_with('throughput')) %>% +throughputs <- gather(new %>% select(-starts_with('latency')), array_size, throughput, starts_with('throughput')) %>% mutate(array_size = factor(as.integer(sub("throughput(\\d+)KB", "\\1", array_size)))) img <- qplot(num_elems, latency, group=type, data=latencies, geom="line", color=type) + - facet_grid(op ~ file, scales="free_y") + - labs(x="num elements", y="latency / ns") -ggsave('array_ops_latency.png', plot = img, width = 2 + 3 * length(files), height = 40) + facet_grid(op ~ ., scales="free_y") + + labs(x="num elements", y="relative latency / %") +ggsave('array_ops_latency.png', plot = img, width = 8, height = 40) img <- qplot(array_size, throughput, group=type, data=throughputs, geom="line", color=type) + - facet_grid(op ~ file, scales="free_y") + - labs(x="array size / KB", y="throughput / (ops / ns)") -ggsave('array_ops_throughput.png', plot = img, width = 2 + 3 * length(files), height = 40) + facet_grid(op ~ ., scales="free_y") + + labs(x="array size / KB", y="relative throughput / %") +ggsave('array_ops_throughput.png', plot = img, width = 8, height = 40) From 973f3a29a66e15e27e196604b2594bf3c0d4bf44 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 25 Jul 2017 00:15:49 +0200 Subject: [PATCH 750/768] switch to easier to read bar plot --- benchmark/arrayops/plot.R | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/benchmark/arrayops/plot.R b/benchmark/arrayops/plot.R index 5b770dcb06..5bb4a99e2f 100644 --- a/benchmark/arrayops/plot.R +++ b/benchmark/arrayops/plot.R @@ -14,17 +14,22 @@ col.indices <- which(!colnames(new) %in% c("type", "op")) # relative values new[,col.indices] <- 100 * new[,col.indices] / old[,col.indices] +# arrange type factor levels +new$type <- factor(new$type, levels = c('byte', 'ubyte', 'short', 'ushort', 'int', 'uint', 'long', 'ulong', 'float', 'double')) + latencies <- gather(new %>% select(-starts_with('throughput')), num_elems, latency, starts_with('latency')) %>% mutate(num_elems = factor(as.integer(sub("latency(\\d+)", "\\1", num_elems)))) throughputs <- gather(new %>% select(-starts_with('latency')), array_size, throughput, starts_with('throughput')) %>% mutate(array_size = factor(as.integer(sub("throughput(\\d+)KB", "\\1", array_size)))) -img <- qplot(num_elems, latency, group=type, data=latencies, geom="line", color=type) + +img <- ggplot(latencies, aes(x=num_elems, y=latency, fill=type)) + + geom_bar(position="dodge", stat="identity") + facet_grid(op ~ ., scales="free_y") + labs(x="num elements", y="relative latency / %") ggsave('array_ops_latency.png', plot = img, width = 8, height = 40) -img <- qplot(array_size, throughput, group=type, data=throughputs, geom="line", color=type) + +img <- ggplot(throughputs, aes(x=array_size, y=throughput, fill=type)) + + geom_bar(position="dodge", stat="identity") + facet_grid(op ~ ., scales="free_y") + labs(x="array size / KB", y="relative throughput / %") ggsave('array_ops_throughput.png', plot = img, width = 8, height = 40) From 549bc8be02343646260b761fa8e644ea9f1cc3ca Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 9 Apr 2017 10:40:15 +0200 Subject: [PATCH 751/768] vectorizable ops by introspection - support for targets specific vector ops (e.g. AVX vs. SSE2) --- src/core/internal/arrayop.d | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/core/internal/arrayop.d b/src/core/internal/arrayop.d index b11ffe6c4f..fe8a1d1a25 100644 --- a/src/core/internal/arrayop.d +++ b/src/core/internal/arrayop.d @@ -155,15 +155,18 @@ __vector(T[N]) unaop(string op, T, size_t N)(in __vector(T[N]) a) if (op[0] == ' // mixin gen // filter out ops without matching SSE/SIMD instructions (could be composed of several instructions though) -bool vectorizeableOps(E)(string[] ops) +template vectorizeableOps(E, ops...) if (ops.length > 1) { - // dfmt off - return !( - ops.contains("/", "/=") && __traits(isIntegral, E) || - ops.contains("*", "*=") && __traits(isIntegral, E) && E.sizeof != 2 || - ops.contains("%", "%=") - ); - // dfmt on + enum vectorizeableOps = vectorizeableOps!(E, ops[0 .. $ / 2]) + && vectorizeableOps!(E, ops[$ / 2 .. $]); +} + +template vectorizeableOps(E, string op) +{ + static if (isUnaryOp(op)) + enum vectorizeableOps = is(typeof((vec!E a) => mixin(op[1 .. $] ~ " a"))); + else + enum vectorizeableOps = is(typeof((vec!E a, vec!E b) => mixin("a " ~ op ~ " b"))); } // filter out things like float[] = float[] / size_t[] From 60d0eefbcddb497b9c5513f31062316da0c2dee2 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Mon, 10 Apr 2017 00:48:21 +0200 Subject: [PATCH 752/768] proper error message for unsupported scalar ops - with UDTs --- src/core/internal/arrayop.d | 53 ++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/src/core/internal/arrayop.d b/src/core/internal/arrayop.d index fe8a1d1a25..42cc212c81 100644 --- a/src/core/internal/arrayop.d +++ b/src/core/internal/arrayop.d @@ -18,6 +18,8 @@ version (LDC) version = GNU_OR_LDC; */ T[] arrayOp(T : T[], Args...)(T[] res, Filter!(isType, Args) args) @trusted @nogc pure nothrow { + enum check = opsSupported!(true, T, Filter!(not!isType, Args)); // must support all scalar ops + size_t pos; static if (vectorizeable!(T[], Args)) { @@ -155,18 +157,26 @@ __vector(T[N]) unaop(string op, T, size_t N)(in __vector(T[N]) a) if (op[0] == ' // mixin gen // filter out ops without matching SSE/SIMD instructions (could be composed of several instructions though) -template vectorizeableOps(E, ops...) if (ops.length > 1) +template opsSupported(bool fail, T, ops...) if (ops.length > 1) { - enum vectorizeableOps = vectorizeableOps!(E, ops[0 .. $ / 2]) - && vectorizeableOps!(E, ops[$ / 2 .. $]); + enum opsSupported = opsSupported!(fail, T, ops[0 .. $ / 2]) + && opsSupported!(fail, T, ops[$ / 2 .. $]); } -template vectorizeableOps(E, string op) +template opsSupported(bool fail, T, string op) { static if (isUnaryOp(op)) - enum vectorizeableOps = is(typeof((vec!E a) => mixin(op[1 .. $] ~ " a"))); + { + enum opsSupported = is(typeof((T a) => mixin(op[1 .. $] ~ " a"))); + static assert(!fail || opsSupported, + "Unary op `" ~ op[1 .. $] ~ "` not supported for element type " ~ T.stringof ~ "."); + } else - enum vectorizeableOps = is(typeof((vec!E a, vec!E b) => mixin("a " ~ op ~ " b"))); + { + enum opsSupported = is(typeof((T a, T b) => mixin("a " ~ op ~ " b"))); + static assert(!fail || opsSupported, + "Binary op `" ~ op ~ "` not supported for element type " ~ T.stringof ~ "."); + } } // filter out things like float[] = float[] / size_t[] @@ -178,7 +188,7 @@ enum compatibleVecTypes(E, Types...) = compatibleVecTypes!(E, Types[0 .. $ / 2]) template vectorizeable(E : E[], Args...) { static if (is(vec!E)) - enum vectorizeable = vectorizeableOps!E([Filter!(not!isType, Args)]) + enum vectorizeable = opsSupported!(false, vec!E, Filter!(not!isType, Args)) && compatibleVecTypes!(E, Filter!(isType, Args)); else enum vectorizeable = false; @@ -429,3 +439,32 @@ unittest foreach (v; c) assert(v == 6); } + +// proper error message for UDT lacking certain ops +unittest +{ + static assert(!is(typeof(&arrayOp!(int[4][], int[4], "+=")))); + static assert(!is(typeof(&arrayOp!(int[4][], int[4], "u-", "=")))); + + static struct S + { + } + + static assert(!is(typeof(&arrayOp!(S[], S, "+=")))); + static assert(!is(typeof(&arrayOp!(S[], S[], "*", S, "+=")))); + static struct S2 + { + S2 opBinary(string op)(in S2) @nogc pure nothrow + { + return this; + } + + ref S2 opOpAssign(string op)(in S2) @nogc pure nothrow + { + return this; + } + } + + static assert(is(typeof(&arrayOp!(S2[], S2[], S2[], S2, "*", "+", "=")))); + static assert(is(typeof(&arrayOp!(S2[], S2[], S2, "*", "+=")))); +} From 4eaf5004d2eddbc8df860d43d521fed25c4c0ae0 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 11 Apr 2017 12:36:03 +0200 Subject: [PATCH 753/768] remove Issue 7509/16488 workaround - dmd got broadcast init with #6248 --- src/core/internal/arrayop.d | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/core/internal/arrayop.d b/src/core/internal/arrayop.d index 42cc212c81..5eed3c61fa 100644 --- a/src/core/internal/arrayop.d +++ b/src/core/internal/arrayop.d @@ -26,7 +26,6 @@ T[] arrayOp(T : T[], Args...)(T[] res, Filter!(isType, Args) args) @trusted @nog alias vec = .vec!T; alias load = .load!(T, vec.length); alias store = .store!(T, vec.length); - alias scalarToVec = .scalarToVec!(T, vec.length); auto n = res.length / vec.length; enum nScalarInits = scalarIndices!Args.length; @@ -129,19 +128,6 @@ const(__vector(T[N])) load(T, size_t N)(in T* p) } } -const(__vector(T[N])) scalarToVec(T, size_t N)(in T a) -{ - pragma(inline, true); - alias vec = __vector(T[N]); - - vec res = void; - version (DigitalMars) // Bugzilla 7509 - res.array = [a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a][0 .. N]; - else - res = a; - return res; -} - __vector(T[N]) binop(string op, T, size_t N)(in __vector(T[N]) a, in __vector(T[N]) b) { pragma(inline, true); @@ -277,8 +263,7 @@ string initScalarVecs(Args...)() auto scalars = scalarIndices!Args; string res; foreach (i, aidx; scalars) - res ~= "immutable vec scalar" ~ i.toString ~ " = scalarToVec(args[" ~ aidx - .toString ~ "]);\n"; + res ~= "immutable vec scalar" ~ i.toString ~ " = args[" ~ aidx.toString ~ "];\n"; return res; } From 9c5d83b3a7b5d2f2164d78715350dcb00d4a0b8e Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 9 Jun 2017 18:21:05 +0200 Subject: [PATCH 754/768] always use vec ops --- src/core/internal/arrayop.d | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/core/internal/arrayop.d b/src/core/internal/arrayop.d index 5eed3c61fa..cd4795ac56 100644 --- a/src/core/internal/arrayop.d +++ b/src/core/internal/arrayop.d @@ -27,12 +27,14 @@ T[] arrayOp(T : T[], Args...)(T[] res, Filter!(isType, Args) args) @trusted @nog alias load = .load!(T, vec.length); alias store = .store!(T, vec.length); - auto n = res.length / vec.length; - enum nScalarInits = scalarIndices!Args.length; - if (n > 2 * (1 + nScalarInits)) // empirically found cost estimate + // Given that there are at most as many scalars broadcast as there are + // operations in any `ary[] = ary[] op const op const`, it should always be + // worthwhile to choose vector operations. + if (res.length >= vec.length) { mixin(initScalarVecs!Args); + auto n = res.length / vec.length; do { mixin(vectorExp!Args ~ ";"); @@ -244,26 +246,19 @@ string scalarExp(Args...)() return stack[0]; } -size_t[] scalarIndices(Args...)() +string initScalarVecs(Args...)() { - size_t[] scalars; - foreach (i, arg; Args) + size_t scalarsIdx; + string res; + foreach (aidx, arg; Args) { - if (is(arg == T[], T)) + static if (is(arg == T[], T)) { } - else if (is(arg)) - scalars ~= i; + else static if (is(arg)) + res ~= "immutable vec scalar" ~ scalarsIdx++.toString ~ " = args[" + ~ aidx.toString ~ "];\n"; } - return scalars; -} - -string initScalarVecs(Args...)() -{ - auto scalars = scalarIndices!Args; - string res; - foreach (i, aidx; scalars) - res ~= "immutable vec scalar" ~ i.toString ~ " = args[" ~ aidx.toString ~ "];\n"; return res; } From 9d7faf97cf4830b2d111aaff493814e30b70019b Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 25 Jul 2017 00:50:26 +0200 Subject: [PATCH 755/768] rely on auto-vectorizer for gdc/ldc - seems to have made quite some improvements while that module was written - generated code for scalar loops and for vector loops ends up being almost identical, so it seems more reasonable to leave decisions completely to the auto-vectorizers. --- src/core/internal/arrayop.d | 118 ++++++++++++++---------------------- 1 file changed, 45 insertions(+), 73 deletions(-) diff --git a/src/core/internal/arrayop.d b/src/core/internal/arrayop.d index cd4795ac56..724c5b8e11 100644 --- a/src/core/internal/arrayop.d +++ b/src/core/internal/arrayop.d @@ -53,45 +53,22 @@ private: // SIMD helpers -version (GNU) - import gcc.builtins; -else version (LDC) +version (DigitalMars) { - import ldc.simd; - import ldc.gccbuiltins_x86; -} -else version (DigitalMars) import core.simd; -else - static assert(0, "unimplemented"); - -template vec(T) -{ - enum regsz = 16; // SSE2 - enum N = regsz / T.sizeof; - alias vec = __vector(T[N]); -} -void store(T, size_t N)(T* p, in __vector(T[N]) val) -{ - pragma(inline, true); - alias vec = __vector(T[N]); - - version (LDC) - { - storeUnaligned!vec(val, p); - } - else version (GNU) + template vec(T) { - static if (is(T == float)) - __builtin_ia32_storeups(p, val); - else static if (is(T == double)) - __builtin_ia32_storeupd(p, val); - else - __builtin_ia32_storedqu(cast(char*) p, val); + enum regsz = 16; // SSE2 + enum N = regsz / T.sizeof; + alias vec = __vector(T[N]); } - else version (DigitalMars) + + void store(T, size_t N)(T* p, in __vector(T[N]) val) { + pragma(inline, true); + alias vec = __vector(T[N]); + static if (is(T == float)) cast(void) __simd_sto(XMM.STOUPS, *cast(vec*) p, val); else static if (is(T == double)) @@ -99,28 +76,14 @@ void store(T, size_t N)(T* p, in __vector(T[N]) val) else cast(void) __simd_sto(XMM.STODQU, *cast(vec*) p, val); } -} - -const(__vector(T[N])) load(T, size_t N)(in T* p) -{ - pragma(inline, true); - alias vec = __vector(T[N]); - version (LDC) - { - return loadUnaligned!vec(cast(T*) p); - } - else version (GNU) - { - static if (is(T == float)) - return __builtin_ia32_loadups(p); - else static if (is(T == double)) - return __builtin_ia32_loadupd(p); - else - return __builtin_ia32_loaddqu(cast(const char*) p); - } - else version (DigitalMars) + const(__vector(T[N])) load(T, size_t N)(in T* p) { + import core.simd; + + pragma(inline, true); + alias vec = __vector(T[N]); + static if (is(T == float)) return __simd(XMM.LODUPS, *cast(const vec*) p); else static if (is(T == double)) @@ -128,18 +91,19 @@ const(__vector(T[N])) load(T, size_t N)(in T* p) else return __simd(XMM.LODDQU, *cast(const vec*) p); } -} -__vector(T[N]) binop(string op, T, size_t N)(in __vector(T[N]) a, in __vector(T[N]) b) -{ - pragma(inline, true); - return mixin("a " ~ op ~ " b"); -} + __vector(T[N]) binop(string op, T, size_t N)(in __vector(T[N]) a, in __vector(T[N]) b) + { + pragma(inline, true); + return mixin("a " ~ op ~ " b"); + } -__vector(T[N]) unaop(string op, T, size_t N)(in __vector(T[N]) a) if (op[0] == 'u') -{ - pragma(inline, true); - return mixin(op[1 .. $] ~ "a"); + __vector(T[N]) unaop(string op, T, size_t N)(in __vector(T[N]) a) + if (op[0] == 'u') + { + pragma(inline, true); + return mixin(op[1 .. $] ~ "a"); + } } // mixin gen @@ -173,19 +137,27 @@ enum compatibleVecTypes(E, T) = is(T : E); // scalar must be convertible to targ enum compatibleVecTypes(E, Types...) = compatibleVecTypes!(E, Types[0 .. $ / 2]) && compatibleVecTypes!(E, Types[$ / 2 .. $]); -template vectorizeable(E : E[], Args...) +version (GNU_OR_LDC) { - static if (is(vec!E)) - enum vectorizeable = opsSupported!(false, vec!E, Filter!(not!isType, Args)) - && compatibleVecTypes!(E, Filter!(isType, Args)); - else - enum vectorizeable = false; + // leave it to the auto-vectorizer + enum vectorizeable(E : E[], Args...) = false; } - -version (X86_64) unittest +else { - static assert(vectorizeable!(double[], const(double)[], double[], "+", "=")); - static assert(!vectorizeable!(double[], const(ulong)[], double[], "+", "=")); + template vectorizeable(E : E[], Args...) + { + static if (is(vec!E)) + enum vectorizeable = opsSupported!(false, vec!E, Filter!(not!isType, Args)) + && compatibleVecTypes!(E, Filter!(isType, Args)); + else + enum vectorizeable = false; + } + + version (X86_64) unittest + { + static assert(vectorizeable!(double[], const(double)[], double[], "+", "=")); + static assert(!vectorizeable!(double[], const(ulong)[], double[], "+", "=")); + } } bool isUnaryOp(string op) From 69ff7244c8aa95ce6a9a0514c5438885ec7945fa Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Tue, 25 Jul 2017 00:14:51 +0200 Subject: [PATCH 756/768] use __gshared scalar to avoid const-folding - e.g. replacement of ary[] / scalar with weaker ary[] >> 1 --- benchmark/arrayops/arrayops.d | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/benchmark/arrayops/arrayops.d b/benchmark/arrayops/arrayops.d index bce3ea14b1..dae0a1548a 100644 --- a/benchmark/arrayops/arrayops.d +++ b/benchmark/arrayops/arrayops.d @@ -21,13 +21,16 @@ float[6] getLatencies(T, string op)() a[] = 24; b[] = 4; c[] = 2; + __gshared T s = 2; // scalar, use __gshared to avoid const-folding auto sw = StopWatch(AutoStart.yes); foreach (off; size_t(0) .. size_t(64)) { off = off * len + off; - enum op = op.replace("const", "2").replace("a", - "a[off .. off + len]").replace("b", - "b[off .. off + len]").replace("c", "c[off .. off + len]"); + enum op = op + .replace("scalar", "s") + .replace("a", "a[off .. off + len]") + .replace("b", "b[off .. off + len]") + .replace("c", "c[off .. off + len]"); mixin(op ~ ";"); } latency = min(latency, sw.peek.nsecs); @@ -54,13 +57,16 @@ float[4] getThroughput(T, string op)() a[] = 24; b[] = 4; c[] = 2; + __gshared T s = 2; // scalar, use __gshared to avoid const-folding auto sw = StopWatch(AutoStart.yes); foreach (off; size_t(0) .. size_t(64)) { off = off * len + off; - enum op = op.replace("const", "2").replace("a", - "a[off .. off + len]").replace("b", - "b[off .. off + len]").replace("c", "c[off .. off + len]"); + enum op = op + .replace("scalar", "s") + .replace("a", "a[off .. off + len]") + .replace("b", "b[off .. off + len]") + .replace("c", "c[off .. off + len]"); mixin(op ~ ";"); } immutable nsecs = sw.peek.nsecs; @@ -78,11 +84,11 @@ string[] genOps() foreach (op1; ["+", "-", "*", "/"]) { ops ~= "a " ~ op1 ~ "= b"; - ops ~= "a " ~ op1 ~ "= const"; + ops ~= "a " ~ op1 ~ "= scalar"; foreach (op2; ["+", "-", "*", "/"]) { ops ~= "a " ~ op1 ~ "= b " ~ op2 ~ " c"; - ops ~= "a " ~ op1 ~ "= b " ~ op2 ~ " const"; + ops ~= "a " ~ op1 ~ "= b " ~ op2 ~ " scalar"; } } return ops; From 6bdc5a4c358861408015443cf0e41dca68e340e5 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 26 Jul 2017 12:34:02 +0200 Subject: [PATCH 757/768] add changelog for templated array ops --- changelog/vectorized_array_ops.dd | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 changelog/vectorized_array_ops.dd diff --git a/changelog/vectorized_array_ops.dd b/changelog/vectorized_array_ops.dd new file mode 100644 index 0000000000..0b20c4e4f4 --- /dev/null +++ b/changelog/vectorized_array_ops.dd @@ -0,0 +1,10 @@ +Vectorized array operations are now templated + +Array operations have been converted from dedicated assembly routines for $(B some) array operations to a generic template implementation for $(B all) array operations. This provides huge performance increases (2-4x higher throughput) for array operations that were not previously vectorized. +Furthermore the implementation makes better use of vectorization even for short arrays to heavily reduce latency for some operations (up to 4x). + +For GDC/LDC the implementation relies on auto-vectorization, for DMD the implementation performs the vectorization itself. Support for vector operations with DMD is determined statically (`-march=native`, `-march=avx2`) to avoid binary bloat and the small test overhead. DMD enables SSE2 for 64-bit targets by default. + +Also see $(DRUNTIMEPR 1891) + +$(RED Note:) The implementation no longer weakens floating point divisions (e.g. `ary[] / scalar`) to multiplication (`ary[] * (1.0 / scalar)`) as that may reduce precision. To preserve the higher performance of float multiplication when loss of precision is acceptable, use either `-ffast-math` with GDC/LDC or manually rewrite your code to multiply by `(1.0 / scalar)` for DMD. From 19abc2a9672cbb592f04ece202a4c14014e4099c Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Tue, 8 Aug 2017 14:21:52 -0700 Subject: [PATCH 758/768] winioctl.d: inure against unary + - ~ integral promotion rules --- src/core/sys/windows/winioctl.d | 36 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/core/sys/windows/winioctl.d b/src/core/sys/windows/winioctl.d index b2cf49cb7a..a42956209b 100644 --- a/src/core/sys/windows/winioctl.d +++ b/src/core/sys/windows/winioctl.d @@ -687,26 +687,26 @@ alias NTFS_VOLUME_DATA_BUFFER* PNTFS_VOLUME_DATA_BUFFER; bool IsRecognizedPartition(BYTE t) { return ((t & PARTITION_NTFT) - && ((t & ~VALID_NTFT) == PARTITION_FAT_12 - || (t & ~VALID_NTFT) == PARTITION_FAT_16 - || (t & ~VALID_NTFT) == PARTITION_IFS - || (t & ~VALID_NTFT) == PARTITION_HUGE - || (t & ~VALID_NTFT) == PARTITION_FAT32 - || (t & ~VALID_NTFT) == PARTITION_FAT32_XINT13 - || (t & ~VALID_NTFT) == PARTITION_XINT13)) - || (t & ~PARTITION_NTFT) == PARTITION_FAT_12 - || (t & ~PARTITION_NTFT) == PARTITION_FAT_16 - || (t & ~PARTITION_NTFT) == PARTITION_IFS - || (t & ~PARTITION_NTFT) == PARTITION_HUGE - || (t & ~PARTITION_NTFT) == PARTITION_FAT32 - || (t & ~PARTITION_NTFT) == PARTITION_FAT32_XINT13 - || (t & ~PARTITION_NTFT) == PARTITION_XINT13; + && ((t & (-1 - VALID_NTFT)) == PARTITION_FAT_12 + || (t & (-1 - VALID_NTFT)) == PARTITION_FAT_16 + || (t & (-1 - VALID_NTFT)) == PARTITION_IFS + || (t & (-1 - VALID_NTFT)) == PARTITION_HUGE + || (t & (-1 - VALID_NTFT)) == PARTITION_FAT32 + || (t & (-1 - VALID_NTFT)) == PARTITION_FAT32_XINT13 + || (t & (-1 - VALID_NTFT)) == PARTITION_XINT13)) + || (t & (-1 - PARTITION_NTFT)) == PARTITION_FAT_12 + || (t & (-1 - PARTITION_NTFT)) == PARTITION_FAT_16 + || (t & (-1 - PARTITION_NTFT)) == PARTITION_IFS + || (t & (-1 - PARTITION_NTFT)) == PARTITION_HUGE + || (t & (-1 - PARTITION_NTFT)) == PARTITION_FAT32 + || (t & (-1 - PARTITION_NTFT)) == PARTITION_FAT32_XINT13 + || (t & (-1 - PARTITION_NTFT)) == PARTITION_XINT13; } bool IsContainerPartition(BYTE t) { return ((t & PARTITION_NTFT) - && ((t & ~VALID_NTFT) == PARTITION_EXTENDED - || (t & ~VALID_NTFT) == PARTITION_XINT13_EXTENDED)) - || (t & ~PARTITION_NTFT) == PARTITION_EXTENDED - || (t & ~PARTITION_NTFT) == PARTITION_XINT13_EXTENDED; + && ((t & (-1 - VALID_NTFT)) == PARTITION_EXTENDED + || (t & (-1 - VALID_NTFT)) == PARTITION_XINT13_EXTENDED)) + || (t & (-1 - PARTITION_NTFT)) == PARTITION_EXTENDED + || (t & (-1 - PARTITION_NTFT)) == PARTITION_XINT13_EXTENDED; } From aee45fbb8043def66f81620c4752072ac22db3d1 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 9 Aug 2017 08:28:04 +0200 Subject: [PATCH 759/768] more docs --- src/core/internal/arrayop.d | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/src/core/internal/arrayop.d b/src/core/internal/arrayop.d index 724c5b8e11..d24c849e76 100644 --- a/src/core/internal/arrayop.d +++ b/src/core/internal/arrayop.d @@ -5,15 +5,24 @@ version (GNU) version = GNU_OR_LDC; version (LDC) version = GNU_OR_LDC; /** - * Perform array (vector) operations and store the result in `res`. - * Operand types and operations are passed as template arguments in Reverse - * Polish Notation (RPN). + * Perform array (vector) operations and store the result in `res`. Operand + * types and operations are passed as template arguments in Reverse Polish + * Notation (RPN). + + * Operands can be slices or scalar types. The unqualified element types of all + * slices must be `T`, scalar types must be implicitly convertible to `T`. + * + * Operations are encoded as strings, e.g. `"+"`, `"%"`, `"*="`. Unary + * operations are prefixed with "u", e.g. `"u-"`, `"u~"`. Only the last + * operation can and must be an assignment (`"="`) or op-assignment (`"op="`). + * * All slice operands must have the same length as the result slice. * - * Params: res = the slice in which to store the results - * args = all other operands + * Params: T[] = type of result slice * Args = operand types and operations in RPN - * T[] = type of result slice + * res = the slice in which to store the results + * args = operand values + * * Returns: the slice containing the result */ T[] arrayOp(T : T[], Args...)(T[] res, Filter!(isType, Args) args) @trusted @nogc pure nothrow @@ -108,7 +117,7 @@ version (DigitalMars) // mixin gen -// filter out ops without matching SSE/SIMD instructions (could be composed of several instructions though) +// Check whether operations `ops` are supported for type `T`. Fails with a human-friendly static assert message, if `fail` is true. template opsSupported(bool fail, T, ops...) if (ops.length > 1) { enum opsSupported = opsSupported!(fail, T, ops[0 .. $ / 2]) @@ -131,7 +140,8 @@ template opsSupported(bool fail, T, string op) } } -// filter out things like float[] = float[] / size_t[] +// check whether slices have the unqualified element type `E` and scalars are implicitly convertible to `E` +// i.e. filter out things like float[] = float[] / size_t[] enum compatibleVecTypes(E, T : T[]) = is(Unqual!T == Unqual!E); // array elem types must be same (maybe add cvtpi2ps) enum compatibleVecTypes(E, T) = is(T : E); // scalar must be convertible to target elem type enum compatibleVecTypes(E, Types...) = compatibleVecTypes!(E, Types[0 .. $ / 2]) @@ -144,6 +154,7 @@ version (GNU_OR_LDC) } else { + // check whether arrayOp is vectorizable template vectorizeable(E : E[], Args...) { static if (is(vec!E)) @@ -183,6 +194,9 @@ bool isBinaryAssignOp(string op) return op.length == 2 && op[1] == '=' && isBinaryOp(op[0 .. 1]); } +// Generate mixin expression to perform scalar arrayOp loop expression, assumes +// `pos` to be the current slice index, `args` to contain operand values, and +// `res` the target slice. string scalarExp(Args...)() { string[] stack; @@ -218,6 +232,8 @@ string scalarExp(Args...)() return stack[0]; } +// Generate mixin statement to perform vector loop initialization, assumes +// `args` to contain operand values. string initScalarVecs(Args...)() { size_t scalarsIdx; @@ -234,6 +250,9 @@ string initScalarVecs(Args...)() return res; } +// Generate mixin expression to perform vector arrayOp loop expression, assumes +// `pos` to be the current slice index, `args` to contain operand values, and +// `res` the target slice. string vectorExp(Args...)() { size_t scalarsIdx, argsIdx; From 81320e95da7d6a927ac2184f8fd907d917f5f57e Mon Sep 17 00:00:00 2001 From: Andrei Alexandrescu Date: Mon, 12 Jun 2017 17:50:05 -0400 Subject: [PATCH 760/768] Eliminate one shared static this from thread.d --- src/core/thread.d | 270 +++++++++++++++++++++++++++------------------- 1 file changed, 157 insertions(+), 113 deletions(-) diff --git a/src/core/thread.d b/src/core/thread.d index c0a384309e..cac02033a1 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -909,39 +909,172 @@ class Thread // Thread Priority Actions /////////////////////////////////////////////////////////////////////////// + version( Windows ) + { + @property static int PRIORITY_MIN() @nogc nothrow pure @safe + { + return THREAD_PRIORITY_IDLE; + } - /** - * The minimum scheduling priority that may be set for a thread. On - * systems where multiple scheduling policies are defined, this value - * represents the minimum valid priority for the scheduling policy of - * the process. - */ - __gshared const int PRIORITY_MIN; + @property static const(int) PRIORITY_MAX() @nogc nothrow pure @safe + { + return THREAD_PRIORITY_TIME_CRITICAL; + } + + @property static int PRIORITY_DEFAULT() @nogc nothrow pure @safe + { + return THREAD_PRIORITY_NORMAL; + } + } + else + { + private struct Priority + { + int PRIORITY_MIN = int.min; + int PRIORITY_DEFAULT = int.min; + int PRIORITY_MAX = int.min; + } + /* + Lazily loads one of the members stored in a hidden global variable of + type `Priority`. Upon the first access of either member, the entire + `Priority` structure is initialized. Multiple initializations from + different threads calling this function are tolerated. - /** - * The maximum scheduling priority that may be set for a thread. On - * systems where multiple scheduling policies are defined, this value - * represents the maximum valid priority for the scheduling policy of - * the process. - */ - __gshared const int PRIORITY_MAX; + `which` must be one of `PRIORITY_MIN`, `PRIORITY_DEFAULT`, + `PRIORITY_MAX`. + */ + private static int loadGlobal(string which)() + { + static shared Priority cache; + auto local = atomicLoad(mixin("cache." ~ which)); + if (local != local.min) return local; + // There will be benign races + cache = loadPriorities; + return atomicLoad(mixin("cache." ~ which)); + } + /* + Loads all priorities and returns them as a `Priority` structure. This + function is thread-neutral. + */ + private static Priority loadPriorities() @nogc nothrow @trusted + { + Priority result; + version( Solaris ) + { + pcparms_t pcParms; + pcinfo_t pcInfo; - /** - * The default scheduling priority that is set for a thread. On - * systems where multiple scheduling policies are defined, this value - * represents the default priority for the scheduling policy of - * the process. - */ - __gshared const int PRIORITY_DEFAULT; + pcParms.pc_cid = PC_CLNULL; + if (priocntl(idtype_t.P_PID, P_MYID, PC_GETPARMS, &pcParms) == -1) + assert( 0, "Unable to get scheduling class" ); + + pcInfo.pc_cid = pcParms.pc_cid; + // PC_GETCLINFO ignores the first two args, use dummy values + if (priocntl(idtype_t.P_PID, 0, PC_GETCLINFO, &pcInfo) == -1) + assert( 0, "Unable to get scheduling class info" ); + + pri_t* clparms = cast(pri_t*)&pcParms.pc_clparms; + pri_t* clinfo = cast(pri_t*)&pcInfo.pc_clinfo; + + result.PRIORITY_MAX = clparms[0]; + + if (pcInfo.pc_clname == "RT") + { + m_isRTClass = true; + + // For RT class, just assume it can't be changed + result.PRIORITY_MIN = clparms[0]; + result.PRIORITY_DEFAULT = clparms[0]; + } + else + { + m_isRTClass = false; + + // For all other scheduling classes, there are + // two key values -- uprilim and maxupri. + // maxupri is the maximum possible priority defined + // for the scheduling class, and valid priorities + // range are in [-maxupri, maxupri]. + // + // However, uprilim is an upper limit that the + // current thread can set for the current scheduling + // class, which can be less than maxupri. As such, + // use this value for priorityMax since this is + // the effective maximum. + + // maxupri + result.PRIORITY_MIN = -clinfo[0]; + // by definition + result.PRIORITY_DEFAULT = 0; + } + } + else version( Posix ) + { + int policy; + sched_param param; + pthread_getschedparam( pthread_self(), &policy, ¶m ) == 0 + || assert(0, "Internal error in pthread_getschedparam"); + + result.PRIORITY_MIN = sched_get_priority_min( policy ); + result.PRIORITY_MIN != -1 + || assert(0, "Internal error in sched_get_priority_min"); + result.PRIORITY_DEFAULT = param.sched_priority; + result.PRIORITY_MAX = sched_get_priority_max( policy ); + result.PRIORITY_MAX != -1 || + assert(0, "Internal error in sched_get_priority_max"); + } + else + { + static assert(0, "Your code here."); + } + return result; + } + + /** + * The minimum scheduling priority that may be set for a thread. On + * systems where multiple scheduling policies are defined, this value + * represents the minimum valid priority for the scheduling policy of + * the process. + */ + @property static int PRIORITY_MIN() @nogc nothrow pure @trusted + { + return (cast(int function() @nogc nothrow pure @safe) + &loadGlobal!"PRIORITY_MIN")(); + } - version(NetBSD) - { + /** + * The maximum scheduling priority that may be set for a thread. On + * systems where multiple scheduling policies are defined, this value + * represents the maximum valid priority for the scheduling policy of + * the process. + */ + @property static const(int) PRIORITY_MAX() @nogc nothrow pure @trusted + { + return (cast(int function() @nogc nothrow pure @safe) + &loadGlobal!"PRIORITY_MAX")(); + } + + /** + * The default scheduling priority that is set for a thread. On + * systems where multiple scheduling policies are defined, this value + * represents the default priority for the scheduling policy of + * the process. + */ + @property static int PRIORITY_DEFAULT() @nogc nothrow pure @trusted + { + return (cast(int function() @nogc nothrow pure @safe) + &loadGlobal!"PRIORITY_DEFAULT")(); + } + } + + version(NetBSD) + { //NetBSD does not support priority for default policy // and it is not possible change policy without root access int fakePriority = int.max; - } + } /** * Gets the scheduling priority for the associated thread. @@ -1287,95 +1420,6 @@ class Thread } } - /////////////////////////////////////////////////////////////////////////// - // Static Initalizer - /////////////////////////////////////////////////////////////////////////// - - - /** - * This initializer is used to set thread constants. All functional - * initialization occurs within thread_init(). - */ - shared static this() - { - version( Windows ) - { - PRIORITY_MIN = THREAD_PRIORITY_IDLE; - PRIORITY_DEFAULT = THREAD_PRIORITY_NORMAL; - PRIORITY_MAX = THREAD_PRIORITY_TIME_CRITICAL; - } - else version( Solaris ) - { - pcparms_t pcParms; - pcinfo_t pcInfo; - - pcParms.pc_cid = PC_CLNULL; - if (priocntl(idtype_t.P_PID, P_MYID, PC_GETPARMS, &pcParms) == -1) - throw new ThreadException( "Unable to get scheduling class" ); - - pcInfo.pc_cid = pcParms.pc_cid; - // PC_GETCLINFO ignores the first two args, use dummy values - if (priocntl(idtype_t.P_PID, 0, PC_GETCLINFO, &pcInfo) == -1) - throw new ThreadException( "Unable to get scheduling class info" ); - - pri_t* clparms = cast(pri_t*)&pcParms.pc_clparms; - pri_t* clinfo = cast(pri_t*)&pcInfo.pc_clinfo; - - if (pcInfo.pc_clname == "RT") - { - m_isRTClass = true; - - // For RT class, just assume it can't be changed - PRIORITY_MAX = clparms[0]; - PRIORITY_MIN = clparms[0]; - PRIORITY_DEFAULT = clparms[0]; - } - else - { - m_isRTClass = false; - - // For all other scheduling classes, there are - // two key values -- uprilim and maxupri. - // maxupri is the maximum possible priority defined - // for the scheduling class, and valid priorities - // range are in [-maxupri, maxupri]. - // - // However, uprilim is an upper limit that the - // current thread can set for the current scheduling - // class, which can be less than maxupri. As such, - // use this value for PRIORITY_MAX since this is - // the effective maximum. - - // uprilim - PRIORITY_MAX = clparms[0]; - - // maxupri - PRIORITY_MIN = -clinfo[0]; - - // by definition - PRIORITY_DEFAULT = 0; - } - } - else version( Posix ) - { - int policy; - sched_param param; - pthread_t self = pthread_self(); - - int status = pthread_getschedparam( self, &policy, ¶m ); - assert( status == 0 ); - - PRIORITY_MIN = sched_get_priority_min( policy ); - assert( PRIORITY_MIN != -1 ); - - PRIORITY_DEFAULT = param.sched_priority; - - PRIORITY_MAX = sched_get_priority_max( policy ); - assert( PRIORITY_MAX != -1 ); - } - } - - /////////////////////////////////////////////////////////////////////////// // Stuff That Should Go Away /////////////////////////////////////////////////////////////////////////// From 0a8261ebbf9709c9405377ee80630ce716b5b3a5 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 10 Aug 2017 07:22:58 +0200 Subject: [PATCH 761/768] add missing ^^ and ^^= arrayop support --- src/core/internal/arrayop.d | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/core/internal/arrayop.d b/src/core/internal/arrayop.d index d24c849e76..34531d8a53 100644 --- a/src/core/internal/arrayop.d +++ b/src/core/internal/arrayop.d @@ -178,6 +178,8 @@ bool isUnaryOp(string op) bool isBinaryOp(string op) { + if (op == "^^") + return true; if (op.length != 1) return false; switch (op[0]) @@ -191,7 +193,7 @@ bool isBinaryOp(string op) bool isBinaryAssignOp(string op) { - return op.length == 2 && op[1] == '=' && isBinaryOp(op[0 .. 1]); + return op.length >= 2 && op[$ - 1] == '=' && isBinaryOp(op[0 .. $ - 1]); } // Generate mixin expression to perform scalar arrayOp loop expression, assumes @@ -374,6 +376,8 @@ unittest { test!(T, "+")(1, 2, 3); test!(T, "-")(3, 2, 1); + static if (__traits(compiles, { import std.math; })) + test!(T, "^^")(2, 3, 8); test2!(T, "u-", "+")(3, 2, 1); } @@ -402,13 +406,19 @@ unittest } } -// test rewrite of v op= exp to v = v op exp +// test handling of v op= exp unittest { - byte[32] c; - arrayOp!(byte[], byte, "+=")(c[], cast(byte) 6); + uint[32] c; + arrayOp!(uint[], uint, "+=")(c[], 2); foreach (v; c) - assert(v == 6); + assert(v == 2); + static if (__traits(compiles, { import std.math; })) + { + arrayOp!(uint[], uint, "^^=")(c[], 3); + foreach (v; c) + assert(v == 8); + } } // proper error message for UDT lacking certain ops From e05113134fa21c9e7595ef6dd0df807a764f69a0 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Wed, 16 Aug 2017 15:23:09 +0200 Subject: [PATCH 762/768] Revert "add changelog for templated array ops" This reverts commit 6bdc5a4c358861408015443cf0e41dca68e340e5. --- changelog/vectorized_array_ops.dd | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 changelog/vectorized_array_ops.dd diff --git a/changelog/vectorized_array_ops.dd b/changelog/vectorized_array_ops.dd deleted file mode 100644 index 0b20c4e4f4..0000000000 --- a/changelog/vectorized_array_ops.dd +++ /dev/null @@ -1,10 +0,0 @@ -Vectorized array operations are now templated - -Array operations have been converted from dedicated assembly routines for $(B some) array operations to a generic template implementation for $(B all) array operations. This provides huge performance increases (2-4x higher throughput) for array operations that were not previously vectorized. -Furthermore the implementation makes better use of vectorization even for short arrays to heavily reduce latency for some operations (up to 4x). - -For GDC/LDC the implementation relies on auto-vectorization, for DMD the implementation performs the vectorization itself. Support for vector operations with DMD is determined statically (`-march=native`, `-march=avx2`) to avoid binary bloat and the small test overhead. DMD enables SSE2 for 64-bit targets by default. - -Also see $(DRUNTIMEPR 1891) - -$(RED Note:) The implementation no longer weakens floating point divisions (e.g. `ary[] / scalar`) to multiplication (`ary[] * (1.0 / scalar)`) as that may reduce precision. To preserve the higher performance of float multiplication when loss of precision is acceptable, use either `-ffast-math` with GDC/LDC or manually rewrite your code to multiply by `(1.0 / scalar)` for DMD. From 07a25c9ec1deb7bcdf45d37d51a5b18d91fd1083 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 27 Aug 2017 18:14:58 +0200 Subject: [PATCH 763/768] fix issue 17788: MSCOFF: with VS2017 15.3.1 segment .tls is no longer written to a separate image section, so _tls_start and _tls_end no longer happen to work as both __gshared and TLS section offsets. --- src/rt/sections_win64.d | 47 +++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/src/rt/sections_win64.d b/src/rt/sections_win64.d index 92bafc8b82..8d81e50904 100644 --- a/src/rt/sections_win64.d +++ b/src/rt/sections_win64.d @@ -108,12 +108,40 @@ void finiSections() nothrow @nogc .free(_sections._gcRanges.ptr); } -void[] initTLSRanges() nothrow @nogc -{ - auto pbeg = cast(void*)&_tls_start; - auto pend = cast(void*)&_tls_end; - return pbeg[0 .. pend - pbeg]; -} +void[] initTLSRanges() nothrow @nogc +{ + void* pbeg; + void* pend; + version(Win32) + { + asm @nogc nothrow + { + mov EAX, _tls_index; + mov ECX, FS:[0x2C]; // _tls_array + mov EAX, [ECX+4*EAX]; + mov pbeg, EAX; + add EAX, [_tls_used+4]; // end + sub EAX, [_tls_used+0]; // start + mov pend, EAX; + } + } + else + { + asm @nogc nothrow + { + xor RAX, RAX; + mov EAX, _tls_index; + mov RCX, 0x58; + mov RCX, GS:[RCX]; // _tls_array (immediate value causes fixup) + mov RAX, [RCX+8*RAX]; + mov pbeg, RAX; + add RAX, [_tls_used+8]; // end + sub RAX, [_tls_used+0]; // start + mov pend, RAX; + } + } + return pbeg[0 .. pend - pbeg]; +} void finiTLSRanges(void[] rng) nothrow @nogc { @@ -198,12 +226,9 @@ extern(C) uint _DP_end; uint _TP_beg; uint _TP_end; - } - extern - { - int _tls_start; - int _tls_end; + void*[2] _tls_used; // start, end + int _tls_index; } } From 9676365f661bb3af8eda567151cbe5379acc62e6 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Mon, 28 Aug 2017 09:03:02 +0200 Subject: [PATCH 764/768] fix ws, add comment, use D_InlineAsm versions --- src/rt/sections_win64.d | 80 ++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/src/rt/sections_win64.d b/src/rt/sections_win64.d index 8d81e50904..8b5f53f4f3 100644 --- a/src/rt/sections_win64.d +++ b/src/rt/sections_win64.d @@ -108,40 +108,48 @@ void finiSections() nothrow @nogc .free(_sections._gcRanges.ptr); } -void[] initTLSRanges() nothrow @nogc -{ - void* pbeg; - void* pend; - version(Win32) - { - asm @nogc nothrow - { - mov EAX, _tls_index; - mov ECX, FS:[0x2C]; // _tls_array - mov EAX, [ECX+4*EAX]; - mov pbeg, EAX; - add EAX, [_tls_used+4]; // end - sub EAX, [_tls_used+0]; // start - mov pend, EAX; - } - } - else - { - asm @nogc nothrow - { - xor RAX, RAX; - mov EAX, _tls_index; - mov RCX, 0x58; - mov RCX, GS:[RCX]; // _tls_array (immediate value causes fixup) - mov RAX, [RCX+8*RAX]; - mov pbeg, RAX; - add RAX, [_tls_used+8]; // end - sub RAX, [_tls_used+0]; // start - mov pend, RAX; - } - } - return pbeg[0 .. pend - pbeg]; -} +void[] initTLSRanges() nothrow @nogc +{ + void* pbeg; + void* pend; + // with VS2017 15.3.1, the linker no longer puts TLS segments into a + // separate image section. That way _tls_start and _tls_end no + // longer generate offsets into .tls, but DATA. + // Use the TEB entry to find the start of TLS instead and read the + // length from the TLS directory + version(D_InlineAsm_X86) + { + asm @nogc nothrow + { + mov EAX, _tls_index; + mov ECX, FS:[0x2C]; // _tls_array + mov EAX, [ECX+4*EAX]; + mov pbeg, EAX; + add EAX, [_tls_used+4]; // end + sub EAX, [_tls_used+0]; // start + mov pend, EAX; + } + } + else version(D_InlineAsm_X86_64) + { + asm @nogc nothrow + { + xor RAX, RAX; + mov EAX, _tls_index; + mov RCX, 0x58; + mov RCX, GS:[RCX]; // _tls_array (immediate value causes fixup) + mov RAX, [RCX+8*RAX]; + mov pbeg, RAX; + add RAX, [_tls_used+8]; // end + sub RAX, [_tls_used+0]; // start + mov pend, RAX; + } + } + else + static assert(false, "Architecture not supported."); + + return pbeg[0 .. pend - pbeg]; +} void finiTLSRanges(void[] rng) nothrow @nogc { @@ -227,8 +235,8 @@ extern(C) uint _TP_beg; uint _TP_end; - void*[2] _tls_used; // start, end - int _tls_index; + void*[2] _tls_used; // start, end + int _tls_index; } } From 2049db9726b2d756655c1db1a63fc2e8ee015f54 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 1 Sep 2017 15:35:52 +0200 Subject: [PATCH 765/768] purge changelog --- changelog/unhandled.dd | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 changelog/unhandled.dd diff --git a/changelog/unhandled.dd b/changelog/unhandled.dd deleted file mode 100644 index 1dc752b312..0000000000 --- a/changelog/unhandled.dd +++ /dev/null @@ -1,8 +0,0 @@ -Print unhandled exception's trace and abort if rt_trapExceptions is false - -D exception handling was assuming the top level exception handler, -so all exceptions would be handled somewhere. In case rt_trapExceptions -is cleared, this handler would not be enabled, and this assertion -would fail, aborting the program, but without any information -about the exception. This is now changed, so the exception information -will be printed to the stderr, followed by abort. From 8b655b5e78bf932985e9b1d8fd7a2d2af8bde518 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 6 Oct 2017 16:03:20 +0200 Subject: [PATCH 766/768] use ci repo as shared jenkins library --- Jenkinsfile | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e0f3e3288f..e8aae00d50 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,22 +1,3 @@ #!/bin/env groovy - -def clone (repo_url, git_ref = "master") { - checkout( - poll: false, - scm: [ - $class: 'GitSCM', - branches: [[name: git_ref]], - extensions: [[$class: 'CleanBeforeCheckout']], - userRemoteConfigs: [[url: repo_url]] - ] - ) -} - -def pipeline -node { - dir('dlang/ci') { - clone 'https://github.com/dlang/ci.git', 'master' - } - pipeline = load 'dlang/ci/pipeline.groovy' -} -pipeline.runPipeline() +library 'dlang' +runPipeline() From 70d536eddf2bab82e428ea397dec8b4093c9f3c1 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 8 Oct 2017 15:10:56 +0200 Subject: [PATCH 767/768] fix Issue 17876 - moved bad assertion that failed for arrays of arrays with mixed modifiers to the memcmp version which should work on values anyway. Also fixed bad comparison via memcmp only comparing first element. --- src/object.d | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/object.d b/src/object.d index 3b7e4e89f5..5250a571a6 100644 --- a/src/object.d +++ b/src/object.d @@ -3459,9 +3459,8 @@ if (!__traits(isScalar, T1)) import core.internal.traits : Unqual; alias U1 = Unqual!T1; alias U2 = Unqual!T2; - static assert(is(U1 == U2), "Internal error."); - static if (is(U1 == void)) + static if (is(U1 == void) && is(U2 == void)) static @trusted ref inout(ubyte) at(inout(void)[] r, size_t i) { return (cast(inout(ubyte)*) r.ptr)[i]; } else static @trusted ref R at(R)(R[] r, size_t i) { return r.ptr[i]; } @@ -3492,8 +3491,11 @@ if (!__traits(isScalar, T1)) { // TODO: fix this legacy bad behavior, see // https://issues.dlang.org/show_bug.cgi?id=17244 + static assert(is(U1 == U2), "Internal error."); import core.stdc.string : memcmp; - return (() @trusted => memcmp(&at(s1, u), &at(s2, u), U1.sizeof))(); + auto c = (() @trusted => memcmp(&at(s1, u), &at(s2, u), U1.sizeof))(); + if (c != 0) + return c; } } return s1.length < s2.length ? -1 : (s1.length > s2.length); @@ -3552,9 +3554,15 @@ if (!__traits(isScalar, T1)) { T[2] a = [T.max, T.max]; T[2] b = [T.min_normal, T.min_normal]; + T[2] c = [T.max, T.min_normal]; + T[1] d = [T.max]; assert(__cmp(a, b) > 0); assert(__cmp(b, a) < 0); + assert(__cmp(a, c) > 0); + assert(__cmp(a, d) > 0); + assert(__cmp(d, c) < 0); + assert(__cmp(c, c) == 0); } compareMinMax!real; @@ -3588,6 +3596,24 @@ if (!__traits(isScalar, T1)) assert(__cmp(b, a) < 0); } +// arrays of arrays with mixed modifiers +@safe unittest +{ + // https://issues.dlang.org/show_bug.cgi?id=17876 + bool less1(immutable size_t[][] a, size_t[][] b) { return a < b; } + bool less2(const void[][] a, void[][] b) { return a < b; } + bool less3(inout size_t[][] a, size_t[][] b) { return a < b; } + + immutable size_t[][] a = [[1, 2], [3, 4]]; + size_t[][] b = [[1, 2], [3, 5]]; + assert(less1(a, b)); + assert(less3(a, b)); + + auto va = [cast(immutable void[])a[0], a[1]]; + auto vb = [cast(void[])b[0], b[1]]; + assert(less2(va, vb)); +} + // objects @safe unittest { @@ -3628,6 +3654,7 @@ if (!__traits(isScalar, T1)) assert(__cmp([c1, c1][], [c2, c2][]) < 0); assert(__cmp([c2, c2], [c1, c1]) > 0); + assert(__cmp([c2, c2], [c2, c1]) > 0); } // Compiler hook into the runtime implementation of array (vector) operations. From 28d4ef871ebfaf86537468d55b8aae9fc3160cec Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Mon, 9 Oct 2017 08:33:27 +0200 Subject: [PATCH 768/768] add constraint that both arguments are not arrays of scalars --- src/object.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/object.d b/src/object.d index 5250a571a6..e3b9a08ead 100644 --- a/src/object.d +++ b/src/object.d @@ -3454,7 +3454,7 @@ if (__traits(isScalar, T)) // comparisons in the semantic analysis phase of CmpExp. The ordering // comparison is lowered to a call to this template. int __cmp(T1, T2)(T1[] s1, T2[] s2) -if (!__traits(isScalar, T1)) +if (!__traits(isScalar, T1) && !__traits(isScalar, T2)) { import core.internal.traits : Unqual; alias U1 = Unqual!T1;